aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--X11/extensions/EVI.h72
-rw-r--r--X11/extensions/EVIproto.h192
-rw-r--r--X11/extensions/ag.h104
-rw-r--r--X11/extensions/agproto.h356
-rw-r--r--X11/extensions/cup.h76
-rw-r--r--X11/extensions/cupproto.h210
-rw-r--r--X11/extensions/dbe.h114
-rw-r--r--X11/extensions/dbeproto.h448
-rw-r--r--X11/extensions/dpmsconst.h86
-rw-r--r--X11/extensions/dpmsproto.h350
-rw-r--r--X11/extensions/ge.h120
-rw-r--r--X11/extensions/geproto.h170
-rw-r--r--X11/extensions/lbx.h146
-rw-r--r--X11/extensions/lbxproto.h1950
-rw-r--r--X11/extensions/mitmiscconst.h76
-rw-r--r--X11/extensions/mitmiscproto.h136
-rw-r--r--X11/extensions/multibufconst.h166
-rw-r--r--X11/extensions/multibufproto.h590
-rw-r--r--X11/extensions/secur.h122
-rw-r--r--X11/extensions/securproto.h220
-rw-r--r--X11/extensions/shapeconst.h110
-rw-r--r--X11/extensions/shapeproto.h474
-rw-r--r--X11/extensions/shapestr.h16
-rw-r--r--X11/extensions/shm.h88
-rw-r--r--X11/extensions/shmproto.h374
-rw-r--r--X11/extensions/shmstr.h126
-rw-r--r--X11/extensions/syncconst.h362
-rw-r--r--X11/extensions/syncproto.h948
-rw-r--r--X11/extensions/syncstr.h364
-rw-r--r--X11/extensions/xextproto.pc.in18
-rw-r--r--X11/extensions/xtestconst.h82
-rw-r--r--X11/extensions/xtestext1const.h320
-rw-r--r--X11/extensions/xtestext1proto.h442
-rw-r--r--X11/extensions/xtestproto.h248
-rw-r--r--libX11/.gitignore160
-rw-r--r--libX11/COPYING1884
-rw-r--r--libX11/NEWS370
-rw-r--r--libX11/README78
-rw-r--r--libX11/autogen.sh24
-rw-r--r--libX11/include/Makefile.am38
-rw-r--r--libX11/include/X11/.gitignore4
-rw-r--r--libX11/include/X11/ImUtil.h60
-rw-r--r--libX11/include/X11/XKBlib.h2298
-rw-r--r--libX11/include/X11/Xcms.h1606
-rw-r--r--libX11/include/X11/Xlib-xcb.h40
-rw-r--r--libX11/include/X11/XlibConf.h.in74
-rw-r--r--libX11/include/X11/Xlocale.h118
-rw-r--r--libX11/include/X11/Xregion.h382
-rw-r--r--libX11/include/X11/Xresource.h716
-rw-r--r--libX11/include/X11/cursorfont.h222
-rw-r--r--libX11/m4/ax_define_dir.m498
-rw-r--r--libX11/man/BitmapBitOrder.man2
-rw-r--r--libX11/man/BitmapPad.man2
-rw-r--r--libX11/man/BitmapUnit.man2
-rw-r--r--libX11/man/BlackPixel.man2
-rw-r--r--libX11/man/CellsOfScreen.man2
-rw-r--r--libX11/man/ClientWhitePointOfCCC.man2
-rw-r--r--libX11/man/Compose.man316
-rw-r--r--libX11/man/ConnectionNumber.man2
-rw-r--r--libX11/man/DefaultColormap.man2
-rw-r--r--libX11/man/DefaultColormapOfScreen.man2
-rw-r--r--libX11/man/DefaultDepth.man2
-rw-r--r--libX11/man/DefaultDepthOfScreen.man2
-rw-r--r--libX11/man/DefaultGC.man2
-rw-r--r--libX11/man/DefaultGCOfScreen.man2
-rw-r--r--libX11/man/DefaultRootWindow.man2
-rw-r--r--libX11/man/DefaultScreen.man2
-rw-r--r--libX11/man/DefaultScreenOfDisplay.man2
-rw-r--r--libX11/man/DefaultVisual.man2
-rw-r--r--libX11/man/DefaultVisualOfScreen.man2
-rw-r--r--libX11/man/DisplayCells.man2
-rw-r--r--libX11/man/DisplayHeight.man2
-rw-r--r--libX11/man/DisplayHeightMM.man2
-rw-r--r--libX11/man/DisplayOfScreen.man2
-rw-r--r--libX11/man/DisplayPlanes.man2
-rw-r--r--libX11/man/DisplayString.man2
-rw-r--r--libX11/man/DisplayWidth.man2
-rw-r--r--libX11/man/DisplayWidthMM.man2
-rw-r--r--libX11/man/DoesBackingStore.man2
-rw-r--r--libX11/man/DoesSaveUnders.man2
-rw-r--r--libX11/man/EventMaskOfScreen.man2
-rw-r--r--libX11/man/HeightMMOfScreen.man2
-rw-r--r--libX11/man/HeightOfScreen.man2
-rw-r--r--libX11/man/IsFunctionKey.man2
-rw-r--r--libX11/man/IsKeypadKey.man2
-rw-r--r--libX11/man/IsMiscFunctionKey.man2
-rw-r--r--libX11/man/IsModifierKey.man2
-rw-r--r--libX11/man/IsPFKey.man2
-rw-r--r--libX11/man/IsPrivateKeypadKey.man2
-rw-r--r--libX11/man/LastKnownRequestProcessed.man2
-rw-r--r--libX11/man/MaxCmapsOfScreen.man2
-rw-r--r--libX11/man/MinCmapsOfScreen.man2
-rw-r--r--libX11/man/NextRequest.man2
-rw-r--r--libX11/man/PlanesOfScreen.man2
-rw-r--r--libX11/man/ProtocolRevision.man2
-rw-r--r--libX11/man/ProtocolVersion.man2
-rw-r--r--libX11/man/QLength.man2
-rw-r--r--libX11/man/RootWindow.man2
-rw-r--r--libX11/man/RootWindowOfScreen.man2
-rw-r--r--libX11/man/ScreenCount.man2
-rw-r--r--libX11/man/ScreenNumberOfCCC.man2
-rw-r--r--libX11/man/ScreenOfDisplay.man2
-rw-r--r--libX11/man/ScreenWhitePointOfCCC.man2
-rw-r--r--libX11/man/ServerVendor.man2
-rw-r--r--libX11/man/VendorRelease.man2
-rw-r--r--libX11/man/VisualOfCCC.man2
-rw-r--r--libX11/man/WhitePixel.man2
-rw-r--r--libX11/man/WhitePixelOfScreen.man2
-rw-r--r--libX11/man/WidthMMOfScreen.man2
-rw-r--r--libX11/man/WidthOfScreen.man2
-rw-r--r--libX11/man/XActivateScreenSaver.man2
-rw-r--r--libX11/man/XAddHosts.man2
-rw-r--r--libX11/man/XAddPixel.man2
-rw-r--r--libX11/man/XAddToSaveSet.man2
-rw-r--r--libX11/man/XAllocColorCells.man2
-rw-r--r--libX11/man/XAllocColorPlanes.man2
-rw-r--r--libX11/man/XAllocNamedColor.man2
-rw-r--r--libX11/man/XArc.man2
-rw-r--r--libX11/man/XAutoRepeatOff.man2
-rw-r--r--libX11/man/XAutoRepeatOn.man2
-rw-r--r--libX11/man/XBaseFontNameListOfFontSet.man2
-rw-r--r--libX11/man/XBell.man2
-rw-r--r--libX11/man/XChangeActivePointerGrab.man2
-rw-r--r--libX11/man/XChangeGC.man2
-rw-r--r--libX11/man/XChangeProperty.man2
-rw-r--r--libX11/man/XChar2b.man2
-rw-r--r--libX11/man/XCharStruct.man2
-rw-r--r--libX11/man/XCheckIfEvent.man2
-rw-r--r--libX11/man/XCheckMaskEvent.man2
-rw-r--r--libX11/man/XCheckTypedEvent.man2
-rw-r--r--libX11/man/XCheckTypedWindowEvent.man2
-rw-r--r--libX11/man/XCheckWindowEvent.man2
-rw-r--r--libX11/man/XCirculateSubwindows.man2
-rw-r--r--libX11/man/XCirculateSubwindowsDown.man2
-rw-r--r--libX11/man/XCirculateSubwindowsUp.man2
-rw-r--r--libX11/man/XClassHint.man2
-rw-r--r--libX11/man/XClearWindow.man2
-rw-r--r--libX11/man/XClipBox.man2
-rw-r--r--libX11/man/XCloseDisplay.man2
-rw-r--r--libX11/man/XCloseIM.man2
-rw-r--r--libX11/man/XCloseOM.man2
-rw-r--r--libX11/man/XColor.man2
-rw-r--r--libX11/man/XCompose.man2
-rw-r--r--libX11/man/XContextDependentDrawing.man2
-rw-r--r--libX11/man/XContextualDrawing.man2
-rw-r--r--libX11/man/XConvertCase.man2
-rw-r--r--libX11/man/XConvertSelection.man2
-rw-r--r--libX11/man/XCopyColormapAndFree.man2
-rw-r--r--libX11/man/XCopyGC.man2
-rw-r--r--libX11/man/XCopyPlane.man2
-rw-r--r--libX11/man/XCreateBitmapFromData.man2
-rw-r--r--libX11/man/XCreateGlyphCursor.man2
-rw-r--r--libX11/man/XCreateImage.man2
-rw-r--r--libX11/man/XCreatePixmapCursor.man2
-rw-r--r--libX11/man/XCreatePixmapFromBitmapData.man2
-rw-r--r--libX11/man/XCreateSimpleWindow.man2
-rw-r--r--libX11/man/XDefaultString.man2
-rw-r--r--libX11/man/XDeleteContext.man2
-rw-r--r--libX11/man/XDeleteModifiermapEntry.man2
-rw-r--r--libX11/man/XDeleteProperty.man2
-rw-r--r--libX11/man/XDestroyIC.man2
-rw-r--r--libX11/man/XDestroyImage.man2
-rw-r--r--libX11/man/XDestroyOC.man2
-rw-r--r--libX11/man/XDestroyRegion.man2
-rw-r--r--libX11/man/XDestroySubwindows.man2
-rw-r--r--libX11/man/XDirectionalDependentDrawing.man2
-rw-r--r--libX11/man/XDisableAccessControl.man2
-rw-r--r--libX11/man/XDisplayKeycodes.man2
-rw-r--r--libX11/man/XDisplayMotionBufferSize.man2
-rw-r--r--libX11/man/XDisplayName.man2
-rw-r--r--libX11/man/XDisplayOfIM.man2
-rw-r--r--libX11/man/XDisplayOfOM.man2
-rw-r--r--libX11/man/XDrawArcs.man2
-rw-r--r--libX11/man/XDrawImageString16.man2
-rw-r--r--libX11/man/XDrawLines.man2
-rw-r--r--libX11/man/XDrawPoints.man2
-rw-r--r--libX11/man/XDrawRectangles.man2
-rw-r--r--libX11/man/XDrawSegments.man2
-rw-r--r--libX11/man/XDrawString16.man2
-rw-r--r--libX11/man/XDrawText16.man2
-rw-r--r--libX11/man/XEnableAccessControl.man2
-rw-r--r--libX11/man/XEqualRegion.man2
-rw-r--r--libX11/man/XEvent.man2
-rw-r--r--libX11/man/XEventsQueued.man2
-rw-r--r--libX11/man/XExtendedMaxRequestSize.man2
-rw-r--r--libX11/man/XFetchBuffer.man2
-rw-r--r--libX11/man/XFetchBytes.man2
-rw-r--r--libX11/man/XFetchName.man2
-rw-r--r--libX11/man/XFillArc.man2
-rw-r--r--libX11/man/XFillArcs.man2
-rw-r--r--libX11/man/XFillPolygon.man2
-rw-r--r--libX11/man/XFillRectangles.man2
-rw-r--r--libX11/man/XFindContext.man2
-rw-r--r--libX11/man/XFontProp.man2
-rw-r--r--libX11/man/XFontStruct.man2
-rw-r--r--libX11/man/XForceScreenSaver.man2
-rw-r--r--libX11/man/XFreeColormap.man2
-rw-r--r--libX11/man/XFreeColors.man2
-rw-r--r--libX11/man/XFreeCursor.man2
-rw-r--r--libX11/man/XFreeEventData.man2
-rw-r--r--libX11/man/XFreeExtensionList.man2
-rw-r--r--libX11/man/XFreeFont.man2
-rw-r--r--libX11/man/XFreeFontInfo.man2
-rw-r--r--libX11/man/XFreeFontNames.man2
-rw-r--r--libX11/man/XFreeFontPath.man2
-rw-r--r--libX11/man/XFreeFontSet.man2
-rw-r--r--libX11/man/XFreeGC.man2
-rw-r--r--libX11/man/XFreePixmap.man2
-rw-r--r--libX11/man/XFreeStringList.man2
-rw-r--r--libX11/man/XGCValues.man2
-rw-r--r--libX11/man/XGContextFromGC.man2
-rw-r--r--libX11/man/XGenericEventCookie.man2
-rw-r--r--libX11/man/XGetAtomName.man2
-rw-r--r--libX11/man/XGetAtomNames.man2
-rw-r--r--libX11/man/XGetClassHint.man2
-rw-r--r--libX11/man/XGetCommand.man2
-rw-r--r--libX11/man/XGetErrorDatabaseText.man2
-rw-r--r--libX11/man/XGetErrorText.man2
-rw-r--r--libX11/man/XGetFontPath.man2
-rw-r--r--libX11/man/XGetFontProperty.man2
-rw-r--r--libX11/man/XGetGCValues.man2
-rw-r--r--libX11/man/XGetGeometry.man2
-rw-r--r--libX11/man/XGetICValues.man2
-rw-r--r--libX11/man/XGetIMValues.man2
-rw-r--r--libX11/man/XGetIconName.man2
-rw-r--r--libX11/man/XGetIconSizes.man2
-rw-r--r--libX11/man/XGetImage.man2
-rw-r--r--libX11/man/XGetInputFocus.man2
-rw-r--r--libX11/man/XGetKeyboardControl.man2
-rw-r--r--libX11/man/XGetKeyboardMapping.man2
-rw-r--r--libX11/man/XGetModifierMapping.man2
-rw-r--r--libX11/man/XGetMotionEvents.man2
-rw-r--r--libX11/man/XGetOCValues.man2
-rw-r--r--libX11/man/XGetOMValues.man2
-rw-r--r--libX11/man/XGetPixel.man2
-rw-r--r--libX11/man/XGetPointerControl.man2
-rw-r--r--libX11/man/XGetPointerMapping.man2
-rw-r--r--libX11/man/XGetRGBColormaps.man2
-rw-r--r--libX11/man/XGetScreenSaver.man2
-rw-r--r--libX11/man/XGetSelectionOwner.man2
-rw-r--r--libX11/man/XGetSubImage.man2
-rw-r--r--libX11/man/XGetTextProperty.man2
-rw-r--r--libX11/man/XGetTransientForHint.man2
-rw-r--r--libX11/man/XGetWMClientMachine.man2
-rw-r--r--libX11/man/XGetWMColormapWindows.man2
-rw-r--r--libX11/man/XGetWMHints.man2
-rw-r--r--libX11/man/XGetWMIconName.man2
-rw-r--r--libX11/man/XGetWMName.man2
-rw-r--r--libX11/man/XGetWMNormalHints.man2
-rw-r--r--libX11/man/XGetWMProtocols.man2
-rw-r--r--libX11/man/XGetWMSizeHints.man2
-rw-r--r--libX11/man/XGetXCBConnection.man88
-rw-r--r--libX11/man/XHostAddress.man2
-rw-r--r--libX11/man/XIMOfIC.man2
-rw-r--r--libX11/man/XIconSize.man2
-rw-r--r--libX11/man/XInsertModifiermapEntry.man2
-rw-r--r--libX11/man/XInternAtoms.man2
-rw-r--r--libX11/man/XInternalConnectionNumbers.man2
-rw-r--r--libX11/man/XKeyEvent.man2
-rw-r--r--libX11/man/XKeyboardControl.man2
-rw-r--r--libX11/man/XKeycodeToKeysym.man2
-rw-r--r--libX11/man/XKeysymToKeycode.man2
-rw-r--r--libX11/man/XKeysymToString.man2
-rw-r--r--libX11/man/XKillClient.man2
-rw-r--r--libX11/man/XListDepths.man2
-rw-r--r--libX11/man/XListExtensions.man2
-rw-r--r--libX11/man/XListFontsWithInfo.man2
-rw-r--r--libX11/man/XListHosts.man2
-rw-r--r--libX11/man/XListInstalledColormaps.man2
-rw-r--r--libX11/man/XListPixmapFormats.man2
-rw-r--r--libX11/man/XListProperties.man2
-rw-r--r--libX11/man/XLoadQueryFont.man2
-rw-r--r--libX11/man/XLocaleOfFontSet.man2
-rw-r--r--libX11/man/XLocaleOfIM.man2
-rw-r--r--libX11/man/XLocaleOfOM.man2
-rw-r--r--libX11/man/XLockDisplay.man2
-rw-r--r--libX11/man/XLookupColor.man2
-rw-r--r--libX11/man/XLookupString.man2
-rw-r--r--libX11/man/XLowerWindow.man2
-rw-r--r--libX11/man/XMapRaised.man2
-rw-r--r--libX11/man/XMapSubwindows.man2
-rw-r--r--libX11/man/XMappingEvent.man2
-rw-r--r--libX11/man/XMaskEvent.man2
-rw-r--r--libX11/man/XMatchVisualInfo.man2
-rw-r--r--libX11/man/XMaxRequestSize.man2
-rw-r--r--libX11/man/XModifierKeymap.man2
-rw-r--r--libX11/man/XMotionEvent.man2
-rw-r--r--libX11/man/XMoveResizeWindow.man2
-rw-r--r--libX11/man/XMoveWindow.man2
-rw-r--r--libX11/man/XNewModifiermap.man2
-rw-r--r--libX11/man/XNoExposeEvent.man2
-rw-r--r--libX11/man/XOMOfOC.man2
-rw-r--r--libX11/man/XOffsetRegion.man2
-rw-r--r--libX11/man/XParseColor.man2
-rw-r--r--libX11/man/XPeekEvent.man2
-rw-r--r--libX11/man/XPeekIfEvent.man2
-rw-r--r--libX11/man/XPending.man2
-rw-r--r--libX11/man/XPixmapFormatValues.man2
-rw-r--r--libX11/man/XPoint.man2
-rw-r--r--libX11/man/XPointInRegion.man2
-rw-r--r--libX11/man/XProcessInternalConnection.man2
-rw-r--r--libX11/man/XPutPixel.man2
-rw-r--r--libX11/man/XQueryBestCursor.man2
-rw-r--r--libX11/man/XQueryBestStipple.man2
-rw-r--r--libX11/man/XQueryBestTile.man2
-rw-r--r--libX11/man/XQueryColors.man2
-rw-r--r--libX11/man/XQueryExtension.man134
-rw-r--r--libX11/man/XQueryFont.man2
-rw-r--r--libX11/man/XQueryKeymap.man2
-rw-r--r--libX11/man/XQueryTextExtents.man2
-rw-r--r--libX11/man/XQueryTextExtents16.man2
-rw-r--r--libX11/man/XReadBitmapFileData.man2
-rw-r--r--libX11/man/XRebindKeysym.man2
-rw-r--r--libX11/man/XReconfigureWMWindow.man2
-rw-r--r--libX11/man/XRectInRegion.man2
-rw-r--r--libX11/man/XRectangle.man2
-rw-r--r--libX11/man/XRefreshKeyboardMapping.man2
-rw-r--r--libX11/man/XRegisterIMInstantiateCallback.man2
-rw-r--r--libX11/man/XRemoveConnectionWatch.man2
-rw-r--r--libX11/man/XRemoveFromSaveSet.man2
-rw-r--r--libX11/man/XRemoveHost.man2
-rw-r--r--libX11/man/XRemoveHosts.man2
-rw-r--r--libX11/man/XResetScreenSaver.man2
-rw-r--r--libX11/man/XResizeWindow.man2
-rw-r--r--libX11/man/XRestackWindows.man2
-rw-r--r--libX11/man/XRotateBuffers.man2
-rw-r--r--libX11/man/XRotateWindowProperties.man2
-rw-r--r--libX11/man/XScreenNumberOfScreen.man2
-rw-r--r--libX11/man/XScreenResourceString.man2
-rw-r--r--libX11/man/XSegment.man2
-rw-r--r--libX11/man/XSetAccessControl.man2
-rw-r--r--libX11/man/XSetAfterFunction.man2
-rw-r--r--libX11/man/XSetBackground.man2
-rw-r--r--libX11/man/XSetClassHint.man2
-rw-r--r--libX11/man/XSetClipMask.man2
-rw-r--r--libX11/man/XSetClipRectangles.man2
-rw-r--r--libX11/man/XSetDashes.man2
-rw-r--r--libX11/man/XSetEventQueueOwner.man116
-rw-r--r--libX11/man/XSetFillRule.man2
-rw-r--r--libX11/man/XSetForeground.man2
-rw-r--r--libX11/man/XSetFunction.man2
-rw-r--r--libX11/man/XSetGraphicsExposure.man2
-rw-r--r--libX11/man/XSetIMValues.man2
-rw-r--r--libX11/man/XSetIOErrorHandler.man2
-rw-r--r--libX11/man/XSetIconName.man2
-rw-r--r--libX11/man/XSetIconSizes.man2
-rw-r--r--libX11/man/XSetLocaleModifiers.man2
-rw-r--r--libX11/man/XSetModifierMapping.man2
-rw-r--r--libX11/man/XSetOCValues.man2
-rw-r--r--libX11/man/XSetOMValues.man2
-rw-r--r--libX11/man/XSetPlaneMask.man2
-rw-r--r--libX11/man/XSetRGBColormaps.man2
-rw-r--r--libX11/man/XSetRegion.man2
-rw-r--r--libX11/man/XSetStipple.man2
-rw-r--r--libX11/man/XSetSubwindowMode.man2
-rw-r--r--libX11/man/XSetTSOrigin.man2
-rw-r--r--libX11/man/XSetWMHints.man2
-rw-r--r--libX11/man/XSetWMNormalHints.man2
-rw-r--r--libX11/man/XSetWMSizeHints.man2
-rw-r--r--libX11/man/XSetWindowAttributes.man2
-rw-r--r--libX11/man/XSetWindowBackground.man2
-rw-r--r--libX11/man/XSetWindowBackgroundPixmap.man2
-rw-r--r--libX11/man/XSetWindowBorder.man2
-rw-r--r--libX11/man/XSetWindowBorderPixmap.man2
-rw-r--r--libX11/man/XSetWindowBorderWidth.man2
-rw-r--r--libX11/man/XSetWindowColormap.man2
-rw-r--r--libX11/man/XShrinkRegion.man2
-rw-r--r--libX11/man/XSizeHints.man2
-rw-r--r--libX11/man/XStandardColormap.man2
-rw-r--r--libX11/man/XStoreBuffer.man2
-rw-r--r--libX11/man/XStoreColor.man2
-rw-r--r--libX11/man/XStoreName.man2
-rw-r--r--libX11/man/XStoreNamedColor.man2
-rw-r--r--libX11/man/XSubImage.man2
-rw-r--r--libX11/man/XSubtractRegion.man2
-rw-r--r--libX11/man/XSync.man2
-rw-r--r--libX11/man/XTextExtents16.man2
-rw-r--r--libX11/man/XTextItem.man2
-rw-r--r--libX11/man/XTextItem16.man2
-rw-r--r--libX11/man/XTextProperty.man2
-rw-r--r--libX11/man/XTextPropertyToStringList.man2
-rw-r--r--libX11/man/XTextWidth16.man2
-rw-r--r--libX11/man/XTimeCoord.man2
-rw-r--r--libX11/man/XUndefineCursor.man2
-rw-r--r--libX11/man/XUngrabButton.man2
-rw-r--r--libX11/man/XUngrabKey.man2
-rw-r--r--libX11/man/XUngrabKeyboard.man2
-rw-r--r--libX11/man/XUngrabPointer.man2
-rw-r--r--libX11/man/XUngrabServer.man2
-rw-r--r--libX11/man/XUninstallColormap.man2
-rw-r--r--libX11/man/XUnionRectWithRegion.man2
-rw-r--r--libX11/man/XUnionRegion.man2
-rw-r--r--libX11/man/XUniqueContext.man2
-rw-r--r--libX11/man/XUnloadFont.man2
-rw-r--r--libX11/man/XUnlockDisplay.man2
-rw-r--r--libX11/man/XUnmapSubwindows.man2
-rw-r--r--libX11/man/XUnregisterIMInstantiateCallback.man2
-rw-r--r--libX11/man/XUnsetICFocus.man2
-rw-r--r--libX11/man/XVisualIDFromVisual.man2
-rw-r--r--libX11/man/XVisualInfo.man2
-rw-r--r--libX11/man/XWMGeometry.man2
-rw-r--r--libX11/man/XWMHints.man2
-rw-r--r--libX11/man/XWindowAttributes.man2
-rw-r--r--libX11/man/XWindowChanges.man2
-rw-r--r--libX11/man/XWindowEvent.man2
-rw-r--r--libX11/man/XWithdrawWindow.man2
-rw-r--r--libX11/man/XWriteBitmapFile.man2
-rw-r--r--libX11/man/XXorRegion.man2
-rw-r--r--libX11/man/XcmsAllocNamedColor.man2
-rw-r--r--libX11/man/XcmsCIELab.man2
-rw-r--r--libX11/man/XcmsCIELabQueryMaxL.man2
-rw-r--r--libX11/man/XcmsCIELabQueryMaxLC.man2
-rw-r--r--libX11/man/XcmsCIELabQueryMinL.man2
-rw-r--r--libX11/man/XcmsCIELuv.man2
-rw-r--r--libX11/man/XcmsCIELuvQueryMaxL.man2
-rw-r--r--libX11/man/XcmsCIELuvQueryMaxLC.man2
-rw-r--r--libX11/man/XcmsCIELuvQueryMinL.man2
-rw-r--r--libX11/man/XcmsCIEXYZ.man2
-rw-r--r--libX11/man/XcmsCIEuvY.man2
-rw-r--r--libX11/man/XcmsCIExyY.man2
-rw-r--r--libX11/man/XcmsFreeCCC.man2
-rw-r--r--libX11/man/XcmsLookupColor.man2
-rw-r--r--libX11/man/XcmsPad.man2
-rw-r--r--libX11/man/XcmsQueryBlue.man2
-rw-r--r--libX11/man/XcmsQueryColors.man2
-rw-r--r--libX11/man/XcmsQueryGreen.man2
-rw-r--r--libX11/man/XcmsQueryRed.man2
-rw-r--r--libX11/man/XcmsQueryWhite.man2
-rw-r--r--libX11/man/XcmsRGB.man2
-rw-r--r--libX11/man/XcmsRGBi.man2
-rw-r--r--libX11/man/XcmsSetCCCOfColormap.man2
-rw-r--r--libX11/man/XcmsSetWhiteAdjustProc.man2
-rw-r--r--libX11/man/XcmsStoreColors.man2
-rw-r--r--libX11/man/XcmsTekHVC.man2
-rw-r--r--libX11/man/XcmsTekHVCQueryMaxV.man2
-rw-r--r--libX11/man/XcmsTekHVCQueryMaxVC.man2
-rw-r--r--libX11/man/XcmsTekHVCQueryMaxVSamples.man2
-rw-r--r--libX11/man/XcmsTekHVCQueryMinV.man2
-rw-r--r--libX11/man/XmbSetWMProperties.man2
-rw-r--r--libX11/man/XmbTextPropertyToTextList.man2
-rw-r--r--libX11/man/XrmCombineDatabase.man2
-rw-r--r--libX11/man/XrmCombineFileDatabase.man2
-rw-r--r--libX11/man/XrmDestroyDatabase.man2
-rw-r--r--libX11/man/XrmGetDatabase.man2
-rw-r--r--libX11/man/XrmGetStringDatabase.man2
-rw-r--r--libX11/man/XrmLocaleOfDatabase.man2
-rw-r--r--libX11/man/XrmOptionDescRec.man2
-rw-r--r--libX11/man/XrmOptionKind.man2
-rw-r--r--libX11/man/XrmParseCommand.man2
-rw-r--r--libX11/man/XrmPermStringToQuark.man2
-rw-r--r--libX11/man/XrmPutFileDatabase.man2
-rw-r--r--libX11/man/XrmPutLineResource.man2
-rw-r--r--libX11/man/XrmPutStringResource.man2
-rw-r--r--libX11/man/XrmQGetResource.man2
-rw-r--r--libX11/man/XrmQGetSearchList.man2
-rw-r--r--libX11/man/XrmQGetSearchResource.man2
-rw-r--r--libX11/man/XrmQPutResource.man2
-rw-r--r--libX11/man/XrmQPutStringResource.man2
-rw-r--r--libX11/man/XrmQuarkToString.man2
-rw-r--r--libX11/man/XrmSetDatabase.man2
-rw-r--r--libX11/man/XrmStringToBindingQuarkList.man2
-rw-r--r--libX11/man/XrmStringToQuark.man2
-rw-r--r--libX11/man/XrmStringToQuarkList.man2
-rw-r--r--libX11/man/XrmValue.man2
-rw-r--r--libX11/man/Xutf8DrawImageString.man2
-rw-r--r--libX11/man/Xutf8DrawString.man2
-rw-r--r--libX11/man/Xutf8DrawText.man2
-rw-r--r--libX11/man/Xutf8LookupString.man2
-rw-r--r--libX11/man/Xutf8ResetIC.man2
-rw-r--r--libX11/man/Xutf8SetWMProperties.man2
-rw-r--r--libX11/man/Xutf8TextEscapement.man2
-rw-r--r--libX11/man/Xutf8TextExtents.man2
-rw-r--r--libX11/man/Xutf8TextListToTextProperty.man2
-rw-r--r--libX11/man/Xutf8TextPerCharExtents.man2
-rw-r--r--libX11/man/Xutf8TextPropertyToTextList.man2
-rw-r--r--libX11/man/XwcDrawImageString.man2
-rw-r--r--libX11/man/XwcDrawString.man2
-rw-r--r--libX11/man/XwcDrawText.man2
-rw-r--r--libX11/man/XwcFreeStringList.man2
-rw-r--r--libX11/man/XwcLookupString.man2
-rw-r--r--libX11/man/XwcResetIC.man2
-rw-r--r--libX11/man/XwcTextEscapement.man2
-rw-r--r--libX11/man/XwcTextExtents.man2
-rw-r--r--libX11/man/XwcTextListToTextProperty.man2
-rw-r--r--libX11/man/XwcTextPerCharExtents.man2
-rw-r--r--libX11/man/XwcTextPropertyToTextList.man2
-rw-r--r--libX11/man/xkb/Makefile.am430
-rw-r--r--libX11/man/xkb/XkbActionCtrls.man272
-rw-r--r--libX11/man/xkb/XkbAddDeviceLedInfo.man234
-rw-r--r--libX11/man/xkb/XkbAddGeomColor.man192
-rw-r--r--libX11/man/xkb/XkbAddGeomDoodad.man218
-rw-r--r--libX11/man/xkb/XkbAddGeomKey.man152
-rw-r--r--libX11/man/xkb/XkbAddGeomKeyAlias.man170
-rw-r--r--libX11/man/xkb/XkbAddGeomOutline.man164
-rw-r--r--libX11/man/xkb/XkbAddGeomOverlay.man182
-rw-r--r--libX11/man/xkb/XkbAddGeomOverlayKey.man162
-rw-r--r--libX11/man/xkb/XkbAddGeomOverlayRow.man172
-rw-r--r--libX11/man/xkb/XkbAddGeomProperty.man172
-rw-r--r--libX11/man/xkb/XkbAddGeomRow.man152
-rw-r--r--libX11/man/xkb/XkbAddGeomSection.man238
-rw-r--r--libX11/man/xkb/XkbAddGeomShape.man178
-rw-r--r--libX11/man/xkb/XkbAddSymInterpret.man130
-rw-r--r--libX11/man/xkb/XkbAllocClientMap.man328
-rw-r--r--libX11/man/xkb/XkbAllocCompatMap.man216
-rw-r--r--libX11/man/xkb/XkbAllocControls.man276
-rw-r--r--libX11/man/xkb/XkbAllocDeviceInfo.man200
-rw-r--r--libX11/man/xkb/XkbAllocDeviceLedInfo.man226
-rw-r--r--libX11/man/xkb/XkbAllocGeomColors.man140
-rw-r--r--libX11/man/xkb/XkbAllocGeomDoodads.man138
-rw-r--r--libX11/man/xkb/XkbAllocGeomKeyAliases.man148
-rw-r--r--libX11/man/xkb/XkbAllocGeomKeys.man136
-rw-r--r--libX11/man/xkb/XkbAllocGeomOutlines.man148
-rw-r--r--libX11/man/xkb/XkbAllocGeomOverlayKey.man128
-rw-r--r--libX11/man/xkb/XkbAllocGeomOverlayRows.man146
-rw-r--r--libX11/man/xkb/XkbAllocGeomOverlays.man126
-rw-r--r--libX11/man/xkb/XkbAllocGeomPoints.man136
-rw-r--r--libX11/man/xkb/XkbAllocGeomProps.man142
-rw-r--r--libX11/man/xkb/XkbAllocGeomRows.man136
-rw-r--r--libX11/man/xkb/XkbAllocGeomSectionDoodads.man148
-rw-r--r--libX11/man/xkb/XkbAllocGeomSections.man146
-rw-r--r--libX11/man/xkb/XkbAllocGeomShapes.man148
-rw-r--r--libX11/man/xkb/XkbAllocGeometry.man170
-rw-r--r--libX11/man/xkb/XkbAllocIndicatorMaps.man130
-rw-r--r--libX11/man/xkb/XkbAllocKeyboard.man108
-rw-r--r--libX11/man/xkb/XkbAllocNames.man232
-rw-r--r--libX11/man/xkb/XkbAllocServerMap.man242
-rw-r--r--libX11/man/xkb/XkbApplyCompatMapToKey.man724
-rw-r--r--libX11/man/xkb/XkbBell.man656
-rw-r--r--libX11/man/xkb/XkbBellEvent.man650
-rw-r--r--libX11/man/xkb/XkbChangeControls.man644
-rw-r--r--libX11/man/xkb/XkbChangeDeviceInfo.man148
-rw-r--r--libX11/man/xkb/XkbChangeEnabledControls.man328
-rw-r--r--libX11/man/xkb/XkbChangeIndicators.man312
-rw-r--r--libX11/man/xkb/XkbChangeMap.man270
-rw-r--r--libX11/man/xkb/XkbChangeNames.man372
-rw-r--r--libX11/man/xkb/XkbChangeTypesOfKey.man404
-rw-r--r--libX11/man/xkb/XkbComputeRowBounds.man100
-rw-r--r--libX11/man/xkb/XkbComputeSectionBounds.man100
-rw-r--r--libX11/man/xkb/XkbComputeShapeBounds.man164
-rw-r--r--libX11/man/xkb/XkbCopyKeyType.man188
-rw-r--r--libX11/man/xkb/XkbCopyKeyTypes.man232
-rw-r--r--libX11/man/xkb/XkbDeviceBell.man582
-rw-r--r--libX11/man/xkb/XkbDeviceBellEvent.man644
-rw-r--r--libX11/man/xkb/XkbFindOverlayForKey.man104
-rw-r--r--libX11/man/xkb/XkbForceBell.man628
-rw-r--r--libX11/man/xkb/XkbForceDeviceBell.man598
-rw-r--r--libX11/man/xkb/XkbFreeClientMap.man402
-rw-r--r--libX11/man/xkb/XkbFreeCompatMap.man328
-rw-r--r--libX11/man/xkb/XkbFreeComponentList.man88
-rw-r--r--libX11/man/xkb/XkbFreeControls.man226
-rw-r--r--libX11/man/xkb/XkbFreeDeviceInfo.man352
-rw-r--r--libX11/man/xkb/XkbFreeGeomColors.man160
-rw-r--r--libX11/man/xkb/XkbFreeGeomDoodads.man156
-rw-r--r--libX11/man/xkb/XkbFreeGeomKeyAliases.man178
-rw-r--r--libX11/man/xkb/XkbFreeGeomKeys.man116
-rw-r--r--libX11/man/xkb/XkbFreeGeomOutlines.man116
-rw-r--r--libX11/man/xkb/XkbFreeGeomOverlayKeys.man172
-rw-r--r--libX11/man/xkb/XkbFreeGeomOverlayRows.man172
-rw-r--r--libX11/man/xkb/XkbFreeGeomOverlays.man172
-rw-r--r--libX11/man/xkb/XkbFreeGeomPoints.man172
-rw-r--r--libX11/man/xkb/XkbFreeGeomProperties.man170
-rw-r--r--libX11/man/xkb/XkbFreeGeomRows.man172
-rw-r--r--libX11/man/xkb/XkbFreeGeomSections.man172
-rw-r--r--libX11/man/xkb/XkbFreeGeomShapes.man170
-rw-r--r--libX11/man/xkb/XkbFreeGeometry.man182
-rw-r--r--libX11/man/xkb/XkbFreeIndicatorMaps.man96
-rw-r--r--libX11/man/xkb/XkbFreeKeyboard.man124
-rw-r--r--libX11/man/xkb/XkbFreeNames.man186
-rw-r--r--libX11/man/xkb/XkbFreeServerMap.man374
-rw-r--r--libX11/man/xkb/XkbGetAccessXTimeout.man280
-rw-r--r--libX11/man/xkb/XkbGetAutoRepeatRate.man168
-rw-r--r--libX11/man/xkb/XkbGetAutoResetControls.man182
-rw-r--r--libX11/man/xkb/XkbGetBounceKeysDelay.man424
-rw-r--r--libX11/man/xkb/XkbGetCompatMap.man232
-rw-r--r--libX11/man/xkb/XkbGetControls.man324
-rw-r--r--libX11/man/xkb/XkbGetControlsChanges.man460
-rw-r--r--libX11/man/xkb/XkbGetDetectableAutorepeat.man184
-rw-r--r--libX11/man/xkb/XkbGetDeviceButtonActions.man228
-rw-r--r--libX11/man/xkb/XkbGetDeviceInfo.man494
-rw-r--r--libX11/man/xkb/XkbGetDeviceInfoChanges.man124
-rw-r--r--libX11/man/xkb/XkbGetDeviceLedInfo.man306
-rw-r--r--libX11/man/xkb/XkbGetGeometry.man144
-rw-r--r--libX11/man/xkb/XkbGetIndicatorChanges.man306
-rw-r--r--libX11/man/xkb/XkbGetIndicatorMap.man174
-rw-r--r--libX11/man/xkb/XkbGetIndicatorState.man158
-rw-r--r--libX11/man/xkb/XkbGetKeyActions.man184
-rw-r--r--libX11/man/xkb/XkbGetKeyBehaviors.man180
-rw-r--r--libX11/man/xkb/XkbGetKeyExplicitComponents.man302
-rw-r--r--libX11/man/xkb/XkbGetKeyModifierMap.man186
-rw-r--r--libX11/man/xkb/XkbGetKeySyms.man198
-rw-r--r--libX11/man/xkb/XkbGetKeyTypes.man164
-rw-r--r--libX11/man/xkb/XkbGetKeyVirtualModMap.man206
-rw-r--r--libX11/man/xkb/XkbGetKeyboard.man184
-rw-r--r--libX11/man/xkb/XkbGetKeyboardByName.man770
-rw-r--r--libX11/man/xkb/XkbGetMap.man642
-rw-r--r--libX11/man/xkb/XkbGetNameChanges.man140
-rw-r--r--libX11/man/xkb/XkbGetNamedIndicator.man232
-rw-r--r--libX11/man/xkb/XkbGetNames.man270
-rw-r--r--libX11/man/xkb/XkbGetSlowKeysDelay.man430
-rw-r--r--libX11/man/xkb/XkbGetState.man110
-rw-r--r--libX11/man/xkb/XkbGetStickyKeysOptions.man230
-rw-r--r--libX11/man/xkb/XkbGetUpdatedMap.man524
-rw-r--r--libX11/man/xkb/XkbGetVirtualMods.man416
-rw-r--r--libX11/man/xkb/XkbGetXlibControls.man122
-rw-r--r--libX11/man/xkb/XkbIgnoreExtension.man158
-rw-r--r--libX11/man/xkb/XkbInitCanonicalKeyTypes.man168
-rw-r--r--libX11/man/xkb/XkbKeyAction.man266
-rw-r--r--libX11/man/xkb/XkbKeyActionEntry.man274
-rw-r--r--libX11/man/xkb/XkbKeyActionsPtr.man268
-rw-r--r--libX11/man/xkb/XkbKeyGroupInfo.man396
-rw-r--r--libX11/man/xkb/XkbKeyGroupWidth.man144
-rw-r--r--libX11/man/xkb/XkbKeyGroupsWidth.man128
-rw-r--r--libX11/man/xkb/XkbKeyHasActions.man250
-rw-r--r--libX11/man/xkb/XkbKeyNumActions.man226
-rw-r--r--libX11/man/xkb/XkbKeyNumGroups.man620
-rw-r--r--libX11/man/xkb/XkbKeyNumSyms.man130
-rw-r--r--libX11/man/xkb/XkbKeySymEntry.man158
-rw-r--r--libX11/man/xkb/XkbKeySymsOffset.man132
-rw-r--r--libX11/man/xkb/XkbKeySymsPtr.man132
-rw-r--r--libX11/man/xkb/XkbKeyType.man140
-rw-r--r--libX11/man/xkb/XkbKeyTypeIndex.man112
-rw-r--r--libX11/man/xkb/XkbKeyTypesForCoreSymbols.man456
-rw-r--r--libX11/man/xkb/XkbKeycodeToKeysym.man120
-rw-r--r--libX11/man/xkb/XkbKeysymToModifiers.man104
-rw-r--r--libX11/man/xkb/XkbLatchGroup.man166
-rw-r--r--libX11/man/xkb/XkbLatchModifiers.man208
-rw-r--r--libX11/man/xkb/XkbLibraryVersion.man184
-rw-r--r--libX11/man/xkb/XkbListComponents.man330
-rw-r--r--libX11/man/xkb/XkbLockGroup.man162
-rw-r--r--libX11/man/xkb/XkbLockModifiers.man204
-rw-r--r--libX11/man/xkb/XkbLookupKeyBinding.man168
-rw-r--r--libX11/man/xkb/XkbLookupKeySym.man142
-rw-r--r--libX11/man/xkb/XkbModActionVMods.man96
-rw-r--r--libX11/man/xkb/XkbNoteControlsChanges.man400
-rw-r--r--libX11/man/xkb/XkbNoteDeviceChanges.man270
-rw-r--r--libX11/man/xkb/XkbNoteIndicatorChanges.man246
-rw-r--r--libX11/man/xkb/XkbNoteNameChanges.man184
-rw-r--r--libX11/man/xkb/XkbOpenDisplay.man300
-rw-r--r--libX11/man/xkb/XkbOutOfRangeGroupInfo.man372
-rw-r--r--libX11/man/xkb/XkbOutOfRangeGroupNumber.man374
-rw-r--r--libX11/man/xkb/XkbQueryExtension.man252
-rw-r--r--libX11/man/xkb/XkbRefreshKeyboardMapping.man136
-rw-r--r--libX11/man/xkb/XkbResizeDeviceButtonActions.man186
-rw-r--r--libX11/man/xkb/XkbResizeKeyActions.man200
-rw-r--r--libX11/man/xkb/XkbResizeKeySyms.man196
-rw-r--r--libX11/man/xkb/XkbResizeKeyType.man274
-rw-r--r--libX11/man/xkb/XkbSAActionSetCtrls.man300
-rw-r--r--libX11/man/xkb/XkbSAPtrDfltValue.man214
-rw-r--r--libX11/man/xkb/XkbSARedirectSetVMods.man218
-rw-r--r--libX11/man/xkb/XkbSARedirectSetVModsMask.man244
-rw-r--r--libX11/man/xkb/XkbSARedirectVMods.man232
-rw-r--r--libX11/man/xkb/XkbSARedirectVModsMask.man234
-rw-r--r--libX11/man/xkb/XkbSAScreen.man204
-rw-r--r--libX11/man/xkb/XkbSASetPtrDfltValue.man208
-rw-r--r--libX11/man/xkb/XkbSASetScreen.man194
-rw-r--r--libX11/man/xkb/XkbSelectEventDetails.man290
-rw-r--r--libX11/man/xkb/XkbSelectEvents.man340
-rw-r--r--libX11/man/xkb/XkbSetAccessXTimeout.man386
-rw-r--r--libX11/man/xkb/XkbSetAutoRepeatRate.man196
-rw-r--r--libX11/man/xkb/XkbSetAutoResetControls.man200
-rw-r--r--libX11/man/xkb/XkbSetBounceKeysDelay.man414
-rw-r--r--libX11/man/xkb/XkbSetCompatMap.man406
-rw-r--r--libX11/man/xkb/XkbSetControls.man334
-rw-r--r--libX11/man/xkb/XkbSetDebuggingFlags.man338
-rw-r--r--libX11/man/xkb/XkbSetDeviceInfo.man442
-rw-r--r--libX11/man/xkb/XkbSetIgnoreLockMods.man388
-rw-r--r--libX11/man/xkb/XkbSetIndicatorMap.man360
-rw-r--r--libX11/man/xkb/XkbSetMap.man766
-rw-r--r--libX11/man/xkb/XkbSetModActionVMods.man114
-rw-r--r--libX11/man/xkb/XkbSetNamedIndicator.man238
-rw-r--r--libX11/man/xkb/XkbSetNames.man416
-rw-r--r--libX11/man/xkb/XkbSetServerInternalMods.man396
-rw-r--r--libX11/man/xkb/XkbSetXlibControls.man210
-rw-r--r--libX11/man/xkb/XkbTranslateKeyCode.man142
-rw-r--r--libX11/man/xkb/XkbTranslateKeySym.man162
-rw-r--r--libX11/man/xkb/XkbUpdateMapFromCore.man220
-rw-r--r--libX11/man/xkb/XkbVirtualModsToReal.man260
-rw-r--r--libX11/modules/Makefile.am2
-rw-r--r--libX11/modules/im/Makefile.am2
-rw-r--r--libX11/modules/im/ximcp/Makefile.am118
-rw-r--r--libX11/modules/im/ximcp/imEvToWire.c1576
-rw-r--r--libX11/modules/lc/Makefile.am2
-rw-r--r--libX11/modules/lc/Utf8/Makefile.am68
-rw-r--r--libX11/modules/lc/Utf8/lcUTF8Load.c140
-rw-r--r--libX11/modules/lc/def/Makefile.am64
-rw-r--r--libX11/modules/lc/gen/Makefile.am64
-rw-r--r--libX11/modules/lc/xlocale/Makefile.am70
-rw-r--r--libX11/modules/lc/xlocale/lcEuc.c3074
-rw-r--r--libX11/modules/lc/xlocale/lcSjis.c3224
-rw-r--r--libX11/modules/om/Makefile.am2
-rw-r--r--libX11/modules/om/generic/Makefile.am84
-rw-r--r--libX11/modules/om/generic/omDefault.c898
-rw-r--r--libX11/modules/om/generic/omImText.c180
-rw-r--r--libX11/modules/om/generic/omText.c740
-rw-r--r--libX11/modules/om/generic/omTextEsc.c600
-rw-r--r--libX11/modules/om/generic/omTextExt.c270
-rw-r--r--libX11/modules/om/generic/omTextPer.c404
-rw-r--r--libX11/modules/om/generic/omXChar.c954
-rw-r--r--libX11/nls/.gitignore24
-rw-r--r--libX11/nls/C/XI18N_OBJS16
-rw-r--r--libX11/nls/C/XLC_LOCALE.pre122
-rw-r--r--libX11/nls/am_ET.UTF-8/Compose.pre720
-rw-r--r--libX11/nls/armscii-8/Compose.pre28
-rw-r--r--libX11/nls/armscii-8/XI18N_OBJS14
-rw-r--r--libX11/nls/armscii-8/XLC_LOCALE.pre158
-rw-r--r--libX11/nls/compose-check.pl322
-rw-r--r--libX11/nls/compose.dir.pre840
-rw-r--r--libX11/nls/el_GR.UTF-8/Compose.pre3962
-rw-r--r--libX11/nls/en_US.UTF-8/XI18N_OBJS16
-rw-r--r--libX11/nls/en_US.UTF-8/XLC_LOCALE.pre600
-rw-r--r--libX11/nls/georgian-academy/Compose.pre28
-rw-r--r--libX11/nls/georgian-academy/XI18N_OBJS14
-rw-r--r--libX11/nls/georgian-academy/XLC_LOCALE.pre158
-rw-r--r--libX11/nls/georgian-ps/Compose.pre28
-rw-r--r--libX11/nls/georgian-ps/XI18N_OBJS14
-rw-r--r--libX11/nls/georgian-ps/XLC_LOCALE.pre158
-rw-r--r--libX11/nls/ibm-cp1133/Compose.pre28
-rw-r--r--libX11/nls/ibm-cp1133/XI18N_OBJS14
-rw-r--r--libX11/nls/ibm-cp1133/XLC_LOCALE.pre158
-rw-r--r--libX11/nls/iscii-dev/XI18N_OBJS14
-rw-r--r--libX11/nls/iscii-dev/XLC_LOCALE.pre158
-rw-r--r--libX11/nls/isiri-3342/XI18N_OBJS14
-rw-r--r--libX11/nls/isiri-3342/XLC_LOCALE.pre158
-rw-r--r--libX11/nls/iso8859-1/XI18N_OBJS16
-rw-r--r--libX11/nls/iso8859-1/XLC_LOCALE.pre142
-rw-r--r--libX11/nls/iso8859-10/Compose.pre28
-rw-r--r--libX11/nls/iso8859-10/XI18N_OBJS14
-rw-r--r--libX11/nls/iso8859-10/XLC_LOCALE.pre144
-rw-r--r--libX11/nls/iso8859-11/XI18N_OBJS16
-rw-r--r--libX11/nls/iso8859-11/XLC_LOCALE.pre144
-rw-r--r--libX11/nls/iso8859-13/Compose.pre864
-rw-r--r--libX11/nls/iso8859-13/XI18N_OBJS16
-rw-r--r--libX11/nls/iso8859-13/XLC_LOCALE.pre144
-rw-r--r--libX11/nls/iso8859-14/Compose.pre1018
-rw-r--r--libX11/nls/iso8859-14/XI18N_OBJS14
-rw-r--r--libX11/nls/iso8859-14/XLC_LOCALE.pre144
-rw-r--r--libX11/nls/iso8859-15/Compose.pre952
-rw-r--r--libX11/nls/iso8859-15/XI18N_OBJS14
-rw-r--r--libX11/nls/iso8859-15/XLC_LOCALE.pre156
-rw-r--r--libX11/nls/iso8859-2/Compose.pre1070
-rw-r--r--libX11/nls/iso8859-2/XI18N_OBJS16
-rw-r--r--libX11/nls/iso8859-2/XLC_LOCALE.pre144
-rw-r--r--libX11/nls/iso8859-3/Compose.pre966
-rw-r--r--libX11/nls/iso8859-3/XI18N_OBJS14
-rw-r--r--libX11/nls/iso8859-3/XLC_LOCALE.pre144
-rw-r--r--libX11/nls/iso8859-4/Compose.pre748
-rw-r--r--libX11/nls/iso8859-4/XI18N_OBJS14
-rw-r--r--libX11/nls/iso8859-4/XLC_LOCALE.pre144
-rw-r--r--libX11/nls/iso8859-5/Compose.pre28
-rw-r--r--libX11/nls/iso8859-5/XI18N_OBJS16
-rw-r--r--libX11/nls/iso8859-5/XLC_LOCALE.pre144
-rw-r--r--libX11/nls/iso8859-6/Compose.pre28
-rw-r--r--libX11/nls/iso8859-6/XI18N_OBJS14
-rw-r--r--libX11/nls/iso8859-6/XLC_LOCALE.pre144
-rw-r--r--libX11/nls/iso8859-7/Compose.pre444
-rw-r--r--libX11/nls/iso8859-7/XI18N_OBJS16
-rw-r--r--libX11/nls/iso8859-7/XLC_LOCALE.pre144
-rw-r--r--libX11/nls/iso8859-8/Compose.pre28
-rw-r--r--libX11/nls/iso8859-8/XI18N_OBJS14
-rw-r--r--libX11/nls/iso8859-8/XLC_LOCALE.pre144
-rw-r--r--libX11/nls/iso8859-9/Compose.pre962
-rw-r--r--libX11/nls/iso8859-9/XI18N_OBJS16
-rw-r--r--libX11/nls/iso8859-9/XLC_LOCALE.pre144
-rw-r--r--libX11/nls/iso8859-9e/Compose.pre986
-rw-r--r--libX11/nls/iso8859-9e/XI18N_OBJS14
-rw-r--r--libX11/nls/iso8859-9e/XLC_LOCALE.pre168
-rw-r--r--libX11/nls/ja.JIS/Compose.pre28
-rw-r--r--libX11/nls/ja.JIS/XI18N_OBJS14
-rw-r--r--libX11/nls/ja.JIS/XLC_LOCALE.pre248
-rw-r--r--libX11/nls/ja.S90/XI18N_OBJS14
-rw-r--r--libX11/nls/ja.S90/XLC_LOCALE.pre300
-rw-r--r--libX11/nls/ja.SJIS/Compose.pre28
-rw-r--r--libX11/nls/ja.SJIS/XI18N_OBJS20
-rw-r--r--libX11/nls/ja.SJIS/XLC_LOCALE.pre768
-rw-r--r--libX11/nls/ja.U90/XI18N_OBJS14
-rw-r--r--libX11/nls/ja.U90/XLC_LOCALE.pre302
-rw-r--r--libX11/nls/ja/Compose.pre28
-rw-r--r--libX11/nls/ja/XI18N_OBJS22
-rw-r--r--libX11/nls/ja/XLC_LOCALE.pre248
-rw-r--r--libX11/nls/ja_JP.UTF-8/XI18N_OBJS16
-rw-r--r--libX11/nls/ja_JP.UTF-8/XLC_LOCALE.pre298
-rw-r--r--libX11/nls/ko/Compose.pre28
-rw-r--r--libX11/nls/ko/XI18N_OBJS14
-rw-r--r--libX11/nls/ko/XLC_LOCALE.pre142
-rw-r--r--libX11/nls/ko_KR.UTF-8/XI18N_OBJS16
-rw-r--r--libX11/nls/ko_KR.UTF-8/XLC_LOCALE.pre294
-rw-r--r--libX11/nls/koi8-c/Compose.pre244
-rw-r--r--libX11/nls/koi8-c/XI18N_OBJS14
-rw-r--r--libX11/nls/koi8-c/XLC_LOCALE.pre158
-rw-r--r--libX11/nls/koi8-r/Compose.pre28
-rw-r--r--libX11/nls/koi8-r/XI18N_OBJS14
-rw-r--r--libX11/nls/koi8-r/XLC_LOCALE.pre160
-rw-r--r--libX11/nls/koi8-u/Compose.pre28
-rw-r--r--libX11/nls/koi8-u/XI18N_OBJS14
-rw-r--r--libX11/nls/koi8-u/XLC_LOCALE.pre158
-rw-r--r--libX11/nls/locale.dir.pre902
-rw-r--r--libX11/nls/microsoft-cp1251/XI18N_OBJS14
-rw-r--r--libX11/nls/microsoft-cp1251/XLC_LOCALE.pre170
-rw-r--r--libX11/nls/microsoft-cp1255/XI18N_OBJS14
-rw-r--r--libX11/nls/microsoft-cp1255/XLC_LOCALE.pre170
-rw-r--r--libX11/nls/microsoft-cp1256/XI18N_OBJS14
-rw-r--r--libX11/nls/microsoft-cp1256/XLC_LOCALE.pre170
-rw-r--r--libX11/nls/mulelao-1/Compose.pre28
-rw-r--r--libX11/nls/mulelao-1/XI18N_OBJS14
-rw-r--r--libX11/nls/mulelao-1/XLC_LOCALE.pre158
-rw-r--r--libX11/nls/nokhchi-1/XI18N_OBJS14
-rw-r--r--libX11/nls/nokhchi-1/XLC_LOCALE.pre158
-rw-r--r--libX11/nls/pt_BR.UTF-8/XI18N_OBJS14
-rw-r--r--libX11/nls/pt_BR.UTF-8/XLC_LOCALE.pre284
-rw-r--r--libX11/nls/ru_RU.UTF-8/Compose.pre2
-rw-r--r--libX11/nls/ru_RU.UTF-8/XI18N_OBJS14
-rw-r--r--libX11/nls/ru_RU.UTF-8/XLC_LOCALE.pre338
-rw-r--r--libX11/nls/tatar-cyr/XI18N_OBJS14
-rw-r--r--libX11/nls/tatar-cyr/XLC_LOCALE.pre170
-rw-r--r--libX11/nls/th_TH.UTF-8/XI18N_OBJS16
-rw-r--r--libX11/nls/th_TH.UTF-8/XLC_LOCALE.pre158
-rw-r--r--libX11/nls/th_TH/XI18N_OBJS14
-rw-r--r--libX11/nls/th_TH/XLC_LOCALE.pre130
-rw-r--r--libX11/nls/tscii-0/XI18N_OBJS14
-rw-r--r--libX11/nls/tscii-0/XLC_LOCALE.pre158
-rw-r--r--libX11/nls/vi_VN.tcvn/Compose.pre270
-rw-r--r--libX11/nls/vi_VN.tcvn/XI18N_OBJS14
-rw-r--r--libX11/nls/vi_VN.tcvn/XLC_LOCALE.pre158
-rw-r--r--libX11/nls/vi_VN.viscii/Compose.pre270
-rw-r--r--libX11/nls/vi_VN.viscii/XI18N_OBJS14
-rw-r--r--libX11/nls/vi_VN.viscii/XLC_LOCALE.pre158
-rw-r--r--libX11/nls/zh_CN.UTF-8/XI18N_OBJS16
-rw-r--r--libX11/nls/zh_CN.UTF-8/XLC_LOCALE.pre214
-rw-r--r--libX11/nls/zh_CN.gb18030/Compose.pre28
-rw-r--r--libX11/nls/zh_CN.gb18030/XI18N_OBJS14
-rw-r--r--libX11/nls/zh_CN.gb18030/XLC_LOCALE.pre212
-rw-r--r--libX11/nls/zh_CN.gbk/Compose.pre28
-rw-r--r--libX11/nls/zh_CN.gbk/XI18N_OBJS14
-rw-r--r--libX11/nls/zh_CN.gbk/XLC_LOCALE.pre140
-rw-r--r--libX11/nls/zh_CN/Compose.pre28
-rw-r--r--libX11/nls/zh_CN/XI18N_OBJS18
-rw-r--r--libX11/nls/zh_CN/XLC_LOCALE.pre124
-rw-r--r--libX11/nls/zh_HK.UTF-8/XI18N_OBJS14
-rw-r--r--libX11/nls/zh_HK.UTF-8/XLC_LOCALE.pre192
-rw-r--r--libX11/nls/zh_HK.big5/Compose.pre26
-rw-r--r--libX11/nls/zh_HK.big5/XI18N_OBJS14
-rw-r--r--libX11/nls/zh_HK.big5/XLC_LOCALE.pre138
-rw-r--r--libX11/nls/zh_HK.big5hkscs/Compose.pre26
-rw-r--r--libX11/nls/zh_HK.big5hkscs/XI18N_OBJS14
-rw-r--r--libX11/nls/zh_HK.big5hkscs/XLC_LOCALE.pre142
-rw-r--r--libX11/nls/zh_TW.UTF-8/XI18N_OBJS14
-rw-r--r--libX11/nls/zh_TW.UTF-8/XLC_LOCALE.pre182
-rw-r--r--libX11/nls/zh_TW.big5/Compose.pre28
-rw-r--r--libX11/nls/zh_TW.big5/XI18N_OBJS14
-rw-r--r--libX11/nls/zh_TW.big5/XLC_LOCALE.pre186
-rw-r--r--libX11/nls/zh_TW/Compose.pre28
-rw-r--r--libX11/nls/zh_TW/XI18N_OBJS14
-rw-r--r--libX11/nls/zh_TW/XLC_LOCALE.pre284
-rw-r--r--libX11/specs/XIM/dynamicflow.svg588
-rw-r--r--libX11/specs/XIM/dynamicflowsampleseq.svg872
-rw-r--r--libX11/specs/XIM/eventflow.svg628
-rw-r--r--libX11/specs/XIM/sampleprotocolflow1.svg1878
-rw-r--r--libX11/specs/XIM/sampleprotocolflow2.svg1994
-rw-r--r--libX11/specs/XIM/staticflow.svg556
-rw-r--r--libX11/specs/XIM/staticflowsampleseq.svg800
-rw-r--r--libX11/specs/i18n/framework/framework.svg1406
-rw-r--r--libX11/src/.gitignore4
-rw-r--r--libX11/src/AllCells.c126
-rw-r--r--libX11/src/AllPlanes.c148
-rw-r--r--libX11/src/AllowEv.c102
-rw-r--r--libX11/src/AutoRep.c100
-rw-r--r--libX11/src/Backgnd.c98
-rw-r--r--libX11/src/BdrWidth.c106
-rw-r--r--libX11/src/Bell.c92
-rw-r--r--libX11/src/Border.c98
-rw-r--r--libX11/src/ChAccCon.c118
-rw-r--r--libX11/src/ChActPGb.c98
-rw-r--r--libX11/src/ChClMode.c92
-rw-r--r--libX11/src/ChCmap.c98
-rw-r--r--libX11/src/ChGC.c104
-rw-r--r--libX11/src/ChKeyCon.c166
-rw-r--r--libX11/src/ChPntCon.c110
-rw-r--r--libX11/src/ChProp.c198
-rw-r--r--libX11/src/ChSaveSet.c126
-rw-r--r--libX11/src/ChWAttrs.c114
-rw-r--r--libX11/src/ChWindow.c126
-rw-r--r--libX11/src/ChkIfEv.c166
-rw-r--r--libX11/src/ChkMaskEv.c180
-rw-r--r--libX11/src/ChkWinEv.c182
-rw-r--r--libX11/src/CirWin.c96
-rw-r--r--libX11/src/CirWinDn.c94
-rw-r--r--libX11/src/CirWinUp.c94
-rw-r--r--libX11/src/ClDisplay.c148
-rw-r--r--libX11/src/Clear.c98
-rw-r--r--libX11/src/ClearArea.c112
-rw-r--r--libX11/src/Cmap.h20
-rw-r--r--libX11/src/ConfWind.c142
-rw-r--r--libX11/src/Context.c604
-rw-r--r--libX11/src/ConvSel.c106
-rw-r--r--libX11/src/CopyArea.c128
-rw-r--r--libX11/src/CopyCmap.c128
-rw-r--r--libX11/src/CopyGC.c276
-rw-r--r--libX11/src/CopyPlane.c132
-rw-r--r--libX11/src/Cr.h54
-rw-r--r--libX11/src/CrCmap.c118
-rw-r--r--libX11/src/CrCursor.c158
-rw-r--r--libX11/src/CrGC.c690
-rw-r--r--libX11/src/CrGlCur.c540
-rw-r--r--libX11/src/CrPixmap.c130
-rw-r--r--libX11/src/CrWindow.c164
-rw-r--r--libX11/src/Cursor.c106
-rw-r--r--libX11/src/DefCursor.c98
-rw-r--r--libX11/src/DelProp.c94
-rw-r--r--libX11/src/Depths.c124
-rw-r--r--libX11/src/DestSubs.c90
-rw-r--r--libX11/src/DestWind.c90
-rw-r--r--libX11/src/DisName.c128
-rw-r--r--libX11/src/DrArc.c170
-rw-r--r--libX11/src/DrArcs.c114
-rw-r--r--libX11/src/DrLine.c202
-rw-r--r--libX11/src/DrLines.c114
-rw-r--r--libX11/src/DrPoint.c194
-rw-r--r--libX11/src/DrPoints.c170
-rw-r--r--libX11/src/DrRect.c200
-rw-r--r--libX11/src/DrRects.c130
-rw-r--r--libX11/src/DrSegs.c132
-rw-r--r--libX11/src/ErrDes.c422
-rw-r--r--libX11/src/ErrHndlr.c172
-rw-r--r--libX11/src/EvToWire.c812
-rw-r--r--libX11/src/FSSaver.c120
-rw-r--r--libX11/src/FetchName.c190
-rw-r--r--libX11/src/FillArc.c204
-rw-r--r--libX11/src/FillArcs.c134
-rw-r--r--libX11/src/FillPoly.c128
-rw-r--r--libX11/src/FillRct.c194
-rw-r--r--libX11/src/FillRcts.c132
-rw-r--r--libX11/src/FilterEv.c212
-rw-r--r--libX11/src/Flush.c84
-rw-r--r--libX11/src/FontInfo.c506
-rw-r--r--libX11/src/FontNames.c226
-rw-r--r--libX11/src/FreeCmap.c104
-rw-r--r--libX11/src/FreeCols.c114
-rw-r--r--libX11/src/FreeCurs.c88
-rw-r--r--libX11/src/FreeEData.c90
-rw-r--r--libX11/src/FreeEventData.c84
-rw-r--r--libX11/src/FreeGC.c100
-rw-r--r--libX11/src/FreePix.c88
-rw-r--r--libX11/src/GCMisc.c220
-rw-r--r--libX11/src/Geom.c178
-rw-r--r--libX11/src/GetAtomNm.c378
-rw-r--r--libX11/src/GetColor.c222
-rw-r--r--libX11/src/GetDflt.c530
-rw-r--r--libX11/src/GetEventData.c84
-rw-r--r--libX11/src/GetFPath.c182
-rw-r--r--libX11/src/GetFProp.c110
-rw-r--r--libX11/src/GetGCVals.c256
-rw-r--r--libX11/src/GetGeom.c126
-rw-r--r--libX11/src/GetHColor.c116
-rw-r--r--libX11/src/GetHints.c678
-rw-r--r--libX11/src/GetIFocus.c98
-rw-r--r--libX11/src/GetImage.c256
-rw-r--r--libX11/src/GetKCnt.c110
-rw-r--r--libX11/src/GetMoEv.c170
-rw-r--r--libX11/src/GetNrmHint.c254
-rw-r--r--libX11/src/GetPCnt.c104
-rw-r--r--libX11/src/GetPntMap.c246
-rw-r--r--libX11/src/GetRGBCMap.c270
-rw-r--r--libX11/src/GetSOwner.c90
-rw-r--r--libX11/src/GetSSaver.c112
-rw-r--r--libX11/src/GetStCmap.c234
-rw-r--r--libX11/src/GetTxtProp.c226
-rw-r--r--libX11/src/GetWAttrs.c310
-rw-r--r--libX11/src/GetWMCMapW.c174
-rw-r--r--libX11/src/GetWMProto.c174
-rw-r--r--libX11/src/GrButton.c120
-rw-r--r--libX11/src/GrKey.c116
-rw-r--r--libX11/src/GrKeybd.c116
-rw-r--r--libX11/src/GrPointer.c128
-rw-r--r--libX11/src/GrServer.c84
-rw-r--r--libX11/src/Host.c322
-rw-r--r--libX11/src/Iconify.c170
-rw-r--r--libX11/src/IfEvent.c146
-rw-r--r--libX11/src/ImText.c202
-rw-r--r--libX11/src/ImText16.c206
-rw-r--r--libX11/src/InsCmap.c88
-rw-r--r--libX11/src/Key.h34
-rw-r--r--libX11/src/KillCl.c88
-rw-r--r--libX11/src/LiHosts.c312
-rw-r--r--libX11/src/LiICmaps.c142
-rw-r--r--libX11/src/LiProps.c138
-rw-r--r--libX11/src/ListExt.c194
-rw-r--r--libX11/src/LoadFont.c110
-rw-r--r--libX11/src/LockDis.c168
-rw-r--r--libX11/src/LookupCol.c208
-rw-r--r--libX11/src/LowerWin.c98
-rw-r--r--libX11/src/Macros.c574
-rw-r--r--libX11/src/MapRaised.c102
-rw-r--r--libX11/src/MapSubs.c86
-rw-r--r--libX11/src/MapWindow.c88
-rw-r--r--libX11/src/MaskEvent.c160
-rw-r--r--libX11/src/Misc.c132
-rw-r--r--libX11/src/ModMap.c362
-rw-r--r--libX11/src/MoveWin.c130
-rw-r--r--libX11/src/NextEvent.c116
-rw-r--r--libX11/src/OCWrap.c280
-rw-r--r--libX11/src/OMWrap.c258
-rw-r--r--libX11/src/ParseCmd.c450
-rw-r--r--libX11/src/ParseCol.c276
-rw-r--r--libX11/src/ParseGeom.c324
-rw-r--r--libX11/src/PeekEvent.c110
-rw-r--r--libX11/src/PeekIfEv.c156
-rw-r--r--libX11/src/Pending.c116
-rw-r--r--libX11/src/PixFormats.c124
-rw-r--r--libX11/src/PmapBgnd.c96
-rw-r--r--libX11/src/PmapBord.c96
-rw-r--r--libX11/src/PolyReg.c1276
-rw-r--r--libX11/src/PolyTxt.c468
-rw-r--r--libX11/src/PolyTxt16.c536
-rw-r--r--libX11/src/PropAlloc.c150
-rw-r--r--libX11/src/PutBEvent.c174
-rw-r--r--libX11/src/PutImage.c2088
-rw-r--r--libX11/src/QuBest.c122
-rw-r--r--libX11/src/QuColor.c122
-rw-r--r--libX11/src/QuCurShp.c120
-rw-r--r--libX11/src/QuExt.c112
-rw-r--r--libX11/src/QuKeybd.c106
-rw-r--r--libX11/src/QuPntr.c130
-rw-r--r--libX11/src/QuStipShp.c120
-rw-r--r--libX11/src/QuTextE16.c162
-rw-r--r--libX11/src/QuTextExt.c160
-rw-r--r--libX11/src/QuTileShp.c122
-rw-r--r--libX11/src/QuTree.c144
-rw-r--r--libX11/src/RaiseWin.c98
-rw-r--r--libX11/src/RecolorC.c108
-rw-r--r--libX11/src/ReconfWM.c278
-rw-r--r--libX11/src/ReconfWin.c162
-rw-r--r--libX11/src/RegstFlt.c310
-rw-r--r--libX11/src/RepWindow.c104
-rw-r--r--libX11/src/RestackWs.c140
-rw-r--r--libX11/src/RotProp.c126
-rw-r--r--libX11/src/ScrResStr.c110
-rw-r--r--libX11/src/SelInput.c98
-rw-r--r--libX11/src/SendEvent.c162
-rw-r--r--libX11/src/SetBack.c92
-rw-r--r--libX11/src/SetCRects.c162
-rw-r--r--libX11/src/SetClMask.c94
-rw-r--r--libX11/src/SetClOrig.c106
-rw-r--r--libX11/src/SetDashes.c110
-rw-r--r--libX11/src/SetFPath.c154
-rw-r--r--libX11/src/SetFont.c94
-rw-r--r--libX11/src/SetFore.c92
-rw-r--r--libX11/src/SetFunc.c92
-rw-r--r--libX11/src/SetHints.c634
-rw-r--r--libX11/src/SetIFocus.c100
-rw-r--r--libX11/src/SetLStyle.c126
-rw-r--r--libX11/src/SetNrmHint.c254
-rw-r--r--libX11/src/SetPMask.c92
-rw-r--r--libX11/src/SetPntMap.c154
-rw-r--r--libX11/src/SetRGBCMap.c200
-rw-r--r--libX11/src/SetSOwner.c98
-rw-r--r--libX11/src/SetSSaver.c106
-rw-r--r--libX11/src/SetStCmap.c190
-rw-r--r--libX11/src/SetState.c128
-rw-r--r--libX11/src/SetStip.c92
-rw-r--r--libX11/src/SetTSOrig.c106
-rw-r--r--libX11/src/SetTile.c92
-rw-r--r--libX11/src/SetTxtProp.c186
-rw-r--r--libX11/src/SetWMCMapW.c148
-rw-r--r--libX11/src/SetWMProto.c148
-rw-r--r--libX11/src/StBytes.c214
-rw-r--r--libX11/src/StColor.c140
-rw-r--r--libX11/src/StColors.c130
-rw-r--r--libX11/src/StNColor.c174
-rw-r--r--libX11/src/StName.c106
-rw-r--r--libX11/src/StrKeysym.c366
-rw-r--r--libX11/src/StrToText.c180
-rw-r--r--libX11/src/Sync.c120
-rw-r--r--libX11/src/Synchro.c158
-rw-r--r--libX11/src/Text.c278
-rw-r--r--libX11/src/Text16.c304
-rw-r--r--libX11/src/TextExt.c468
-rw-r--r--libX11/src/TextExt16.c420
-rw-r--r--libX11/src/TextToStr.c236
-rw-r--r--libX11/src/TrCoords.c128
-rw-r--r--libX11/src/UndefCurs.c98
-rw-r--r--libX11/src/UngrabBut.c98
-rw-r--r--libX11/src/UngrabKbd.c90
-rw-r--r--libX11/src/UngrabKey.c104
-rw-r--r--libX11/src/UngrabPtr.c88
-rw-r--r--libX11/src/UngrabSvr.c88
-rw-r--r--libX11/src/UninsCmap.c88
-rw-r--r--libX11/src/UnldFont.c90
-rw-r--r--libX11/src/UnmapSubs.c88
-rw-r--r--libX11/src/UnmapWin.c90
-rw-r--r--libX11/src/VisUtil.c508
-rw-r--r--libX11/src/WMGeom.c366
-rw-r--r--libX11/src/WMProps.c294
-rw-r--r--libX11/src/WarpPtr.c120
-rw-r--r--libX11/src/WinEvent.c168
-rw-r--r--libX11/src/Window.c288
-rw-r--r--libX11/src/Withdraw.c164
-rw-r--r--libX11/src/WrBitF.c312
-rw-r--r--libX11/src/Xatomtype.h266
-rw-r--r--libX11/src/Xintatom.h64
-rw-r--r--libX11/src/Xintconn.h28
-rw-r--r--libX11/src/XlibAsync.c308
-rw-r--r--libX11/src/XomGeneric.h632
-rw-r--r--libX11/src/Xprivate.h56
-rw-r--r--libX11/src/evtomask.c148
-rw-r--r--libX11/src/globals.c470
-rw-r--r--libX11/src/imConv.c712
-rw-r--r--libX11/src/locking.h308
-rw-r--r--libX11/src/os2Stubs.c856
-rw-r--r--libX11/src/poly.h588
-rw-r--r--libX11/src/udcInf.c1432
-rw-r--r--libX11/src/util/.gitignore4
-rw-r--r--libX11/src/util/mkks.sh22
-rw-r--r--libX11/src/utlist.h232
-rw-r--r--libX11/src/x11_xcb.c30
-rw-r--r--libX11/src/xcb_disp.c216
-rw-r--r--libX11/src/xcms/AddDIC.c298
-rw-r--r--libX11/src/xcms/AddSF.c290
-rw-r--r--libX11/src/xcms/CCC.c572
-rw-r--r--libX11/src/xcms/Cv.h378
-rw-r--r--libX11/src/xcms/CvColW.c282
-rw-r--r--libX11/src/xcms/CvCols.c2060
-rw-r--r--libX11/src/xcms/HVC.c1250
-rw-r--r--libX11/src/xcms/HVCGcC.c298
-rw-r--r--libX11/src/xcms/HVCGcV.c402
-rw-r--r--libX11/src/xcms/HVCGcVC.c524
-rw-r--r--libX11/src/xcms/HVCMnV.c326
-rw-r--r--libX11/src/xcms/HVCMxC.c486
-rw-r--r--libX11/src/xcms/HVCMxV.c494
-rw-r--r--libX11/src/xcms/HVCMxVC.c470
-rw-r--r--libX11/src/xcms/HVCMxVs.c322
-rw-r--r--libX11/src/xcms/HVCWpAj.c228
-rw-r--r--libX11/src/xcms/IdOfPr.c212
-rw-r--r--libX11/src/xcms/Lab.c862
-rw-r--r--libX11/src/xcms/LabGcC.c254
-rw-r--r--libX11/src/xcms/LabGcL.c348
-rw-r--r--libX11/src/xcms/LabGcLC.c446
-rw-r--r--libX11/src/xcms/LabMnL.c432
-rw-r--r--libX11/src/xcms/LabMxC.c406
-rw-r--r--libX11/src/xcms/LabMxL.c432
-rw-r--r--libX11/src/xcms/LabMxLC.c436
-rw-r--r--libX11/src/xcms/LabWpAj.c194
-rw-r--r--libX11/src/xcms/Luv.c802
-rw-r--r--libX11/src/xcms/LuvGcC.c254
-rw-r--r--libX11/src/xcms/LuvGcL.c348
-rw-r--r--libX11/src/xcms/LuvGcLC.c446
-rw-r--r--libX11/src/xcms/LuvMnL.c432
-rw-r--r--libX11/src/xcms/LuvMxC.c408
-rw-r--r--libX11/src/xcms/LuvMxL.c432
-rw-r--r--libX11/src/xcms/LuvMxLC.c436
-rw-r--r--libX11/src/xcms/LuvWpAj.c192
-rw-r--r--libX11/src/xcms/Makefile.am200
-rw-r--r--libX11/src/xcms/OfCCC.c324
-rw-r--r--libX11/src/xcms/QBlack.c168
-rw-r--r--libX11/src/xcms/QBlue.c168
-rw-r--r--libX11/src/xcms/QGreen.c168
-rw-r--r--libX11/src/xcms/QRed.c168
-rw-r--r--libX11/src/xcms/QWhite.c168
-rw-r--r--libX11/src/xcms/QuCol.c156
-rw-r--r--libX11/src/xcms/QuCols.c156
-rw-r--r--libX11/src/xcms/SetCCC.c276
-rw-r--r--libX11/src/xcms/SetGetCols.c602
-rw-r--r--libX11/src/xcms/StCol.c164
-rw-r--r--libX11/src/xcms/StCols.c224
-rw-r--r--libX11/src/xcms/UNDEFINED.c262
-rw-r--r--libX11/src/xcms/XRGB.c484
-rw-r--r--libX11/src/xcms/XYZ.c406
-rw-r--r--libX11/src/xcms/Xcms.txt88
-rw-r--r--libX11/src/xcms/Xcmsint.h520
-rw-r--r--libX11/src/xcms/cmsAllCol.c148
-rw-r--r--libX11/src/xcms/cmsAllNCol.c396
-rw-r--r--libX11/src/xcms/cmsCmap.c986
-rw-r--r--libX11/src/xcms/cmsGlobls.c252
-rw-r--r--libX11/src/xcms/cmsInt.c824
-rw-r--r--libX11/src/xcms/cmsLkCol.c386
-rw-r--r--libX11/src/xcms/cmsMath.c272
-rw-r--r--libX11/src/xcms/cmsTrig.c1186
-rw-r--r--libX11/src/xcms/uvY.c846
-rw-r--r--libX11/src/xcms/xyY.c790
-rw-r--r--libX11/src/xkb/Makefile.am104
-rw-r--r--libX11/src/xkb/XKBAlloc.c996
-rw-r--r--libX11/src/xkb/XKBBell.c356
-rw-r--r--libX11/src/xkb/XKBBind.c1752
-rw-r--r--libX11/src/xkb/XKBCompat.c494
-rw-r--r--libX11/src/xkb/XKBCtrls.c704
-rw-r--r--libX11/src/xkb/XKBCvt.c674
-rw-r--r--libX11/src/xkb/XKBExtDev.c1638
-rw-r--r--libX11/src/xkb/XKBGetByName.c428
-rw-r--r--libX11/src/xkb/XKBGetMap.c1712
-rw-r--r--libX11/src/xkb/XKBMAlloc.c1980
-rw-r--r--libX11/src/xkb/XKBNames.c1774
-rw-r--r--libX11/src/xkb/XKBRdBuf.c460
-rw-r--r--libX11/src/xkb/XKBSetGeom.c924
-rw-r--r--libX11/src/xkb/XKBSetMap.c1182
-rw-r--r--libX11/src/xkb/XKBUse.c1650
-rw-r--r--libX11/src/xkb/XKBleds.c666
-rw-r--r--libX11/src/xkb/XKBlibint.h686
-rw-r--r--libX11/src/xlibi18n/ICWrap.c858
-rw-r--r--libX11/src/xlibi18n/IMWrap.c408
-rw-r--r--libX11/src/xlibi18n/Makefile.am302
-rw-r--r--libX11/src/xlibi18n/Xaixlcint.h106
-rw-r--r--libX11/src/xlibi18n/XimImSw.h92
-rw-r--r--libX11/src/xlibi18n/XimProto.h466
-rw-r--r--libX11/src/xlibi18n/XimThai.h220
-rw-r--r--libX11/src/xlibi18n/XimTrInt.h170
-rw-r--r--libX11/src/xlibi18n/XimTrX.h170
-rw-r--r--libX11/src/xlibi18n/XimTrans.h272
-rw-r--r--libX11/src/xlibi18n/XimintL.h212
-rw-r--r--libX11/src/xlibi18n/XlcGeneric.h324
-rw-r--r--libX11/src/xlibi18n/XlcPubI.h610
-rw-r--r--libX11/src/xlibi18n/XlcPublic.h648
-rw-r--r--libX11/src/xlibi18n/Xlcint.h1958
-rw-r--r--libX11/src/xlibi18n/lcCT.c2606
-rw-r--r--libX11/src/xlibi18n/lcConv.c678
-rw-r--r--libX11/src/xlibi18n/lcDynamic.c156
-rw-r--r--libX11/src/xlibi18n/lcInit.c394
-rw-r--r--libX11/src/xlibi18n/lcPrTxt.c580
-rw-r--r--libX11/src/xlibi18n/lcPubWrap.c198
-rw-r--r--libX11/src/xlibi18n/lcRM.c448
-rw-r--r--libX11/src/xlibi18n/lcStd.c736
-rw-r--r--libX11/src/xlibi18n/lcTxtPr.c508
-rw-r--r--libX11/src/xlibi18n/lcUTF8.c4780
-rw-r--r--libX11/src/xlibi18n/lcUniConv/8bit_tab_to_h.c1070
-rw-r--r--libX11/src/xlibi18n/lcUniConv/COPYRIGHT78
-rw-r--r--libX11/src/xlibi18n/lcUniConv/README22
-rw-r--r--libX11/src/xlibi18n/lcUniConv/armscii_8.h194
-rw-r--r--libX11/src/xlibi18n/lcUniConv/ascii.h50
-rw-r--r--libX11/src/xlibi18n/lcUniConv/big5.h8282
-rw-r--r--libX11/src/xlibi18n/lcUniConv/big5_emacs.h326
-rw-r--r--libX11/src/xlibi18n/lcUniConv/big5hkscs.h12504
-rw-r--r--libX11/src/xlibi18n/lcUniConv/cjk_tab_to_h.c2142
-rw-r--r--libX11/src/xlibi18n/lcUniConv/cp1133.h182
-rw-r--r--libX11/src/xlibi18n/lcUniConv/cp1251.h224
-rw-r--r--libX11/src/xlibi18n/lcUniConv/cp1255.h240
-rw-r--r--libX11/src/xlibi18n/lcUniConv/cp1256.h268
-rw-r--r--libX11/src/xlibi18n/lcUniConv/gb2312.h5104
-rw-r--r--libX11/src/xlibi18n/lcUniConv/gbk.h12400
-rw-r--r--libX11/src/xlibi18n/lcUniConv/georgian_academy.h174
-rw-r--r--libX11/src/xlibi18n/lcUniConv/georgian_ps.h208
-rw-r--r--libX11/src/xlibi18n/lcUniConv/iso8859_1.h44
-rw-r--r--libX11/src/xlibi18n/lcUniConv/iso8859_10.h174
-rw-r--r--libX11/src/xlibi18n/lcUniConv/iso8859_11.h154
-rw-r--r--libX11/src/xlibi18n/lcUniConv/iso8859_13.h180
-rw-r--r--libX11/src/xlibi18n/lcUniConv/iso8859_14.h216
-rw-r--r--libX11/src/xlibi18n/lcUniConv/iso8859_15.h124
-rw-r--r--libX11/src/xlibi18n/lcUniConv/iso8859_16.h194
-rw-r--r--libX11/src/xlibi18n/lcUniConv/iso8859_2.h186
-rw-r--r--libX11/src/xlibi18n/lcUniConv/iso8859_3.h198
-rw-r--r--libX11/src/xlibi18n/lcUniConv/iso8859_4.h186
-rw-r--r--libX11/src/xlibi18n/lcUniConv/iso8859_5.h152
-rw-r--r--libX11/src/xlibi18n/lcUniConv/iso8859_6.h158
-rw-r--r--libX11/src/xlibi18n/lcUniConv/iso8859_7.h174
-rw-r--r--libX11/src/xlibi18n/lcUniConv/iso8859_8.h176
-rw-r--r--libX11/src/xlibi18n/lcUniConv/iso8859_9.h132
-rw-r--r--libX11/src/xlibi18n/lcUniConv/iso8859_9e.h204
-rw-r--r--libX11/src/xlibi18n/lcUniConv/jisx0201.h94
-rw-r--r--libX11/src/xlibi18n/lcUniConv/jisx0208.h4792
-rw-r--r--libX11/src/xlibi18n/lcUniConv/jisx0212.h4326
-rw-r--r--libX11/src/xlibi18n/lcUniConv/koi8_c.h204
-rw-r--r--libX11/src/xlibi18n/lcUniConv/koi8_r.h268
-rw-r--r--libX11/src/xlibi18n/lcUniConv/koi8_u.h284
-rw-r--r--libX11/src/xlibi18n/lcUniConv/ksc5601.h6004
-rw-r--r--libX11/src/xlibi18n/lcUniConv/mulelao.h154
-rw-r--r--libX11/src/xlibi18n/lcUniConv/tatar_cyr.h244
-rw-r--r--libX11/src/xlibi18n/lcUniConv/tcvn.h266
-rw-r--r--libX11/src/xlibi18n/lcUniConv/tis620.h154
-rw-r--r--libX11/src/xlibi18n/lcUniConv/ucs2be.h62
-rw-r--r--libX11/src/xlibi18n/lcUniConv/utf8.h218
-rw-r--r--libX11/src/xlibi18n/lcUniConv/viscii.h244
-rw-r--r--libX11/src/xlibi18n/lcUtil.c172
-rw-r--r--libX11/src/xlibi18n/lcWrap.c1298
-rw-r--r--libX11/src/xlibi18n/mbWMProps.c138
-rw-r--r--libX11/src/xlibi18n/mbWrap.c326
-rw-r--r--libX11/src/xlibi18n/utf8WMProps.c182
-rw-r--r--libX11/src/xlibi18n/utf8Wrap.c370
-rw-r--r--libX11/src/xlibi18n/wcWrap.c322
-rw-r--r--libX11/src/xlibi18n/xim_trans.c60
-rw-r--r--libX11/x11-xcb.pc.in22
-rw-r--r--libX11/x11.pc.in30
-rw-r--r--libXau/.gitignore156
-rw-r--r--libXau/AUTHORS6
-rw-r--r--libXau/COPYING42
-rw-r--r--libXau/Makefile.am128
-rw-r--r--libXau/autogen.sh24
-rw-r--r--libXau/man/Makefile.am94
-rw-r--r--libXau/man/XauDisposeAuth.man2
-rw-r--r--libXau/man/XauFileName.man2
-rw-r--r--libXau/man/XauGetAuthByAddr.man2
-rw-r--r--libXau/man/XauGetBestAuthByAddr.man2
-rw-r--r--libXau/man/XauLockAuth.man2
-rw-r--r--libXau/man/XauReadAuth.man2
-rw-r--r--libXau/man/XauUnlockAuth.man2
-rw-r--r--libXau/man/XauWriteAuth.man2
-rw-r--r--libXau/xau.pc.in22
-rw-r--r--libXdmcp/.gitignore156
-rw-r--r--libXdmcp/AUTHORS16
-rw-r--r--libXdmcp/Array.c494
-rw-r--r--libXdmcp/COPYING46
-rw-r--r--libXdmcp/Fill.c180
-rw-r--r--libXdmcp/Flush.c140
-rw-r--r--libXdmcp/Key.c192
-rw-r--r--libXdmcp/README50
-rw-r--r--libXdmcp/Read.c488
-rw-r--r--libXdmcp/Unwrap.c180
-rw-r--r--libXdmcp/Wrap.c256
-rw-r--r--libXdmcp/Wrap.h30
-rw-r--r--libXdmcp/Wraphelp.README.crypto128
-rw-r--r--libXdmcp/Write.c302
-rw-r--r--libXdmcp/autogen.sh24
-rw-r--r--libXdmcp/xdmcp.pc.in22
-rw-r--r--libXext/.gitignore156
-rw-r--r--libXext/Makefile.am44
-rw-r--r--libXext/README58
-rw-r--r--libXext/autogen.sh24
-rw-r--r--libXext/include/X11/extensions/MITMisc.h108
-rw-r--r--libXext/include/X11/extensions/XEVI.h122
-rw-r--r--libXext/include/X11/extensions/Xag.h180
-rw-r--r--libXext/include/X11/extensions/Xcup.h116
-rw-r--r--libXext/include/X11/extensions/Xext.h106
-rw-r--r--libXext/include/X11/extensions/multibuf.h426
-rw-r--r--libXext/include/X11/extensions/security.h154
-rw-r--r--libXext/include/X11/extensions/shape.h304
-rw-r--r--libXext/man/Makefile.am174
-rw-r--r--libXext/man/XShapeCombineMask.man2
-rw-r--r--libXext/man/XShapeCombineRectangles.man2
-rw-r--r--libXext/man/XShapeCombineRegion.man2
-rw-r--r--libXext/man/XShapeCombineShape.man2
-rw-r--r--libXext/man/XShapeGetRectangles.man2
-rw-r--r--libXext/man/XShapeInputSelected.man2
-rw-r--r--libXext/man/XShapeOffsetShape.man2
-rw-r--r--libXext/man/XShapeQueryExtension.man2
-rw-r--r--libXext/man/XShapeQueryExtents.man2
-rw-r--r--libXext/man/XShapeQueryVersion.man2
-rw-r--r--libXext/man/XShapeSelectInput.man2
-rw-r--r--libXext/man/XShmAttach.man2
-rw-r--r--libXext/man/XShmCreateImage.man2
-rw-r--r--libXext/man/XShmCreatePixmap.man2
-rw-r--r--libXext/man/XShmDetach.man2
-rw-r--r--libXext/man/XShmGetEventBase.man2
-rw-r--r--libXext/man/XShmGetImage.man2
-rw-r--r--libXext/man/XShmPixmapFormat.man2
-rw-r--r--libXext/man/XShmPutImage.man2
-rw-r--r--libXext/man/XShmQueryExtension.man2
-rw-r--r--libXext/man/XShmQueryVersion.man2
-rw-r--r--libXext/man/XeviGetVisualInfo.man2
-rw-r--r--libXext/man/XeviQueryExtension.man2
-rw-r--r--libXext/man/XeviQueryVersion.man2
-rw-r--r--libXext/man/XmbufChangeBufferAttributes.man2
-rw-r--r--libXext/man/XmbufChangeWindowAttributes.man2
-rw-r--r--libXext/man/XmbufCreateBuffers.man2
-rw-r--r--libXext/man/XmbufCreateStereoWindow.man2
-rw-r--r--libXext/man/XmbufDestroyBuffers.man2
-rw-r--r--libXext/man/XmbufDisplayBuffers.man2
-rw-r--r--libXext/man/XmbufGetBufferAttributes.man2
-rw-r--r--libXext/man/XmbufGetScreenInfo.man2
-rw-r--r--libXext/man/XmbufGetVersion.man2
-rw-r--r--libXext/man/XmbufGetWindowAttributes.man2
-rw-r--r--libXext/man/XmbufQueryExtension.man2
-rw-r--r--libXext/xext.pc.in24
-rw-r--r--libXinerama/.gitignore156
-rw-r--r--libXinerama/README50
-rw-r--r--libXinerama/autogen.sh24
-rw-r--r--libXinerama/man/XineramaIsActive.man2
-rw-r--r--libXinerama/man/XineramaQueryExtension.man2
-rw-r--r--libXinerama/man/XineramaQueryScreens.man2
-rw-r--r--libXinerama/man/XineramaQueryVersion.man2
-rw-r--r--libXinerama/src/Makefile.am54
-rw-r--r--libXinerama/xinerama.pc.in24
-rw-r--r--libfontenc/.gitignore156
-rw-r--r--libfontenc/COPYING38
-rw-r--r--libfontenc/README50
-rw-r--r--libfontenc/autogen.sh24
-rw-r--r--libfontenc/fontenc.pc.in20
-rw-r--r--libfontenc/include/X11/fonts/fontenc.h244
-rw-r--r--libfontenc/src/Makefile.am64
-rw-r--r--libfontenc/src/fontencI.h88
-rw-r--r--libxcb/.gitignore60
-rw-r--r--libxcb/COPYING60
-rw-r--r--libxcb/INSTALL458
-rw-r--r--libxcb/README72
-rw-r--r--libxcb/acinclude.m4284
-rw-r--r--libxcb/autogen.sh24
-rw-r--r--libxcb/doc/.gitignore2
-rw-r--r--libxcb/doc/tutorial/index.html9042
-rw-r--r--libxcb/doc/tutorial/xcb.css246
-rw-r--r--libxcb/doc/xcb.doxygen.in2506
-rw-r--r--libxcb/src/xcb_windefs.h116
-rw-r--r--libxcb/tests/.gitignore6
-rw-r--r--libxcb/tests/CheckLog.xsl208
-rw-r--r--libxcb/tests/Makefile.am64
-rw-r--r--libxcb/tests/check_all.c40
-rw-r--r--libxcb/tests/check_public.c436
-rw-r--r--libxcb/tests/check_suites.h8
-rw-r--r--libxcb/tools/README34
-rw-r--r--libxcb/tools/api_conv.pl196
-rw-r--r--libxcb/tools/constants1144
-rw-r--r--libxcb/xcb-composite.pc.in22
-rw-r--r--libxcb/xcb-damage.pc.in22
-rw-r--r--libxcb/xcb-dpms.pc.in22
-rw-r--r--libxcb/xcb-dri2.pc.in22
-rw-r--r--libxcb/xcb-glx.pc.in22
-rw-r--r--libxcb/xcb-proto/.gitignore62
-rw-r--r--libxcb/xcb-proto/COPYING60
-rw-r--r--libxcb/xcb-proto/INSTALL458
-rw-r--r--libxcb/xcb-proto/README94
-rw-r--r--libxcb/xcb-proto/TODO90
-rw-r--r--libxcb/xcb-proto/autogen.sh24
-rw-r--r--libxcb/xcb-proto/src/bigreq.xml76
-rw-r--r--libxcb/xcb-proto/src/composite.xml196
-rw-r--r--libxcb/xcb-proto/src/damage.xml174
-rw-r--r--libxcb/xcb-proto/src/dpms.xml174
-rw-r--r--libxcb/xcb-proto/src/ge.xml84
-rw-r--r--libxcb/xcb-proto/src/randr.xml1342
-rw-r--r--libxcb/xcb-proto/src/record.xml356
-rw-r--r--libxcb/xcb-proto/src/res.xml166
-rw-r--r--libxcb/xcb-proto/src/screensaver.xml256
-rw-r--r--libxcb/xcb-proto/src/shape.xml310
-rw-r--r--libxcb/xcb-proto/src/shm.xml232
-rw-r--r--libxcb/xcb-proto/src/xc_misc.xml76
-rw-r--r--libxcb/xcb-proto/src/xevie.xml170
-rw-r--r--libxcb/xcb-proto/src/xf86dri.xml344
-rw-r--r--libxcb/xcb-proto/src/xf86vidmode.xml956
-rw-r--r--libxcb/xcb-proto/src/xfixes.xml668
-rw-r--r--libxcb/xcb-proto/src/xinerama.xml198
-rw-r--r--libxcb/xcb-proto/src/xinput.xml2040
-rw-r--r--libxcb/xcb-proto/src/xprint.xml658
-rw-r--r--libxcb/xcb-proto/src/xselinux.xml552
-rw-r--r--libxcb/xcb-proto/src/xv.xml900
-rw-r--r--libxcb/xcb-proto/src/xvmc.xml292
-rw-r--r--libxcb/xcb-proto/xcbgen/Makefile.am6
-rw-r--r--libxcb/xcb-proto/xcbgen/__init__.py2
-rw-r--r--libxcb/xcb-proto/xcbgen/error.py10
-rw-r--r--libxcb/xcb-randr.pc.in22
-rw-r--r--libxcb/xcb-record.pc.in22
-rw-r--r--libxcb/xcb-render.pc.in22
-rw-r--r--libxcb/xcb-res.pc.in22
-rw-r--r--libxcb/xcb-screensaver.pc.in22
-rw-r--r--libxcb/xcb-shape.pc.in22
-rw-r--r--libxcb/xcb-shm.pc.in22
-rw-r--r--libxcb/xcb-sync.pc.in22
-rw-r--r--libxcb/xcb-xevie.pc.in22
-rw-r--r--libxcb/xcb-xf86dri.pc.in22
-rw-r--r--libxcb/xcb-xfixes.pc.in22
-rw-r--r--libxcb/xcb-xinerama.pc.in22
-rw-r--r--libxcb/xcb-xinput.pc.in22
-rw-r--r--libxcb/xcb-xprint.pc.in22
-rw-r--r--libxcb/xcb-xselinux.pc.in22
-rw-r--r--libxcb/xcb-xtest.pc.in22
-rw-r--r--libxcb/xcb-xv.pc.in22
-rw-r--r--libxcb/xcb-xvmc.pc.in22
-rw-r--r--libxcb/xcb.pc.in26
-rw-r--r--pixman/CODING_STYLE398
-rw-r--r--pixman/INSTALL468
-rw-r--r--pixman/README44
-rw-r--r--pixman/pixman-1-uninstalled.pc.in10
-rw-r--r--pixman/pixman/pixman-access-accessors.c6
-rw-r--r--pixman/pixman/pixman-edge-accessors.c8
-rw-r--r--pixman/pixman/pixman-edge-imp.h364
-rw-r--r--pixman/pixman/pixman-edge.c768
-rw-r--r--pixman/pixman/pixman-region16.c134
-rw-r--r--pixman/pixman/pixman-region32.c94
-rw-r--r--pixman/pixman/pixman-timer.c132
-rw-r--r--pixman/pixman/pixman-version.h.in100
-rw-r--r--pixman/pixman/refactor956
-rw-r--r--pixman/pixman/solaris-hwcap.mapfile60
-rw-r--r--pixman/test/alpha-loop.c58
-rw-r--r--pixman/test/region-test.c246
-rw-r--r--synchronise.py473
-rw-r--r--xkbcomp/.gitignore160
-rw-r--r--xkbcomp/COPYING180
-rw-r--r--xkbcomp/action.c2936
-rw-r--r--xkbcomp/action.h172
-rw-r--r--xkbcomp/alias.h112
-rw-r--r--xkbcomp/autogen.sh26
-rw-r--r--xkbcomp/compat.h14
-rw-r--r--xkbcomp/expr.c2130
-rw-r--r--xkbcomp/expr.h344
-rw-r--r--xkbcomp/indicators.c1150
-rw-r--r--xkbcomp/indicators.h176
-rw-r--r--xkbcomp/keycodes.c1792
-rw-r--r--xkbcomp/keycodes.h80
-rw-r--r--xkbcomp/keymap.c366
-rw-r--r--xkbcomp/keytypes.c2586
-rw-r--r--xkbcomp/misc.c1162
-rw-r--r--xkbcomp/misc.h222
-rw-r--r--xkbcomp/tokens.h208
-rw-r--r--xkbcomp/utils.c868
-rw-r--r--xkbcomp/vmod.c542
-rw-r--r--xkbcomp/vmod.h156
-rw-r--r--xkbcomp/xkbpath.c842
-rw-r--r--xkbcomp/xkbpath.h130
-rw-r--r--xorg-server/README76
-rw-r--r--xorg-server/Xext/xvdisp.h4
-rw-r--r--xorg-server/Xi/Makefile.am216
-rw-r--r--xorg-server/composite/Makefile.am30
-rw-r--r--xorg-server/config/10-evdev.conf80
-rw-r--r--xorg-server/config/dbus-api80
-rw-r--r--xorg-server/config/fdi2iclass.py404
-rw-r--r--xorg-server/config/x11-input.fdi186
-rw-r--r--xorg-server/config/xorg-server.conf26
-rw-r--r--xorg-server/dbe/Makefile.am26
-rw-r--r--xorg-server/dix/BuiltInAtoms658
-rw-r--r--xorg-server/dix/buildatoms86
-rw-r--r--xorg-server/dix/protocol.txt2206
-rw-r--r--xorg-server/doc/smartsched408
-rw-r--r--xorg-server/exa/Makefile.am60
-rw-r--r--xorg-server/fix-miregion58
-rw-r--r--xorg-server/fix-miregion-private28
-rw-r--r--xorg-server/fix-patch-whitespace8
-rw-r--r--xorg-server/fix-region76
-rw-r--r--xorg-server/hw/Makefile.am82
-rw-r--r--xorg-server/hw/dmx/.gitignore4
-rw-r--r--xorg-server/hw/dmx/config/.gitignore14
-rw-r--r--xorg-server/hw/dmx/config/TODO14
-rw-r--r--xorg-server/hw/dmx/config/dmxcompat.h88
-rw-r--r--xorg-server/hw/dmx/config/parser.y452
-rw-r--r--xorg-server/hw/dmx/config/test-a.in2
-rw-r--r--xorg-server/hw/dmx/config/test-a.out4
-rw-r--r--xorg-server/hw/dmx/config/test-b.in2
-rw-r--r--xorg-server/hw/dmx/config/test-b.out2
-rw-r--r--xorg-server/hw/dmx/config/test-c.in2
-rw-r--r--xorg-server/hw/dmx/config/test-c.out4
-rw-r--r--xorg-server/hw/dmx/config/test-d.in2
-rw-r--r--xorg-server/hw/dmx/config/test-d.out4
-rw-r--r--xorg-server/hw/dmx/config/test-e.in2
-rw-r--r--xorg-server/hw/dmx/config/test-e.out4
-rw-r--r--xorg-server/hw/dmx/config/test-f.in4
-rw-r--r--xorg-server/hw/dmx/config/test-g.in8
-rw-r--r--xorg-server/hw/dmx/config/test-g.out8
-rw-r--r--xorg-server/hw/dmx/config/test-h.in14
-rw-r--r--xorg-server/hw/dmx/config/test-h.out14
-rw-r--r--xorg-server/hw/dmx/config/test-i.in6
-rw-r--r--xorg-server/hw/dmx/config/test-i.out6
-rw-r--r--xorg-server/hw/dmx/config/test-j.in26
-rw-r--r--xorg-server/hw/dmx/config/test-j.out22
-rw-r--r--xorg-server/hw/dmx/config/test-k.in6
-rw-r--r--xorg-server/hw/dmx/config/test-k.out6
-rw-r--r--xorg-server/hw/dmx/config/test-l.in24
-rw-r--r--xorg-server/hw/dmx/config/test-l.out24
-rw-r--r--xorg-server/hw/dmx/doc/DMXSpec-v1.txt916
-rw-r--r--xorg-server/hw/dmx/doc/DMXSpec.txt1750
-rw-r--r--xorg-server/hw/dmx/examples/.gitignore34
-rw-r--r--xorg-server/hw/dmx/input/Makefile.am134
-rw-r--r--xorg-server/hw/dmx/input/dmxdummy.h86
-rw-r--r--xorg-server/hw/kdrive/Makefile.am60
-rw-r--r--xorg-server/hw/kdrive/Xkdrive.man114
-rw-r--r--xorg-server/hw/kdrive/ephyr/README146
-rw-r--r--xorg-server/hw/kdrive/fake/.gitignore4
-rw-r--r--xorg-server/hw/kdrive/fake/Makefile.am60
-rw-r--r--xorg-server/hw/kdrive/fbdev/.gitignore4
-rw-r--r--xorg-server/hw/kdrive/fbdev/Makefile.am58
-rw-r--r--xorg-server/hw/kdrive/fbdev/Xfbdev.man56
-rw-r--r--xorg-server/hw/kdrive/linux/Makefile.am54
-rw-r--r--xorg-server/hw/kdrive/src/Makefile.am56
-rw-r--r--xorg-server/hw/xfree86/common/.gitignore6
-rw-r--r--xorg-server/hw/xfree86/common/extramodes54
-rw-r--r--xorg-server/hw/xfree86/common/modeline2c.awk186
-rw-r--r--xorg-server/hw/xfree86/common/vesamodes222
-rw-r--r--xorg-server/hw/xfree86/common/xf86Build.h.in4
-rw-r--r--xorg-server/hw/xfree86/ddc/DDC.HOWTO194
-rw-r--r--xorg-server/hw/xfree86/ddc/Makefile.am22
-rw-r--r--xorg-server/hw/xfree86/fbdevhw/README32
-rw-r--r--xorg-server/hw/xfree86/i2c/i2c_def.h12
-rw-r--r--xorg-server/hw/xfree86/int10/INT10.HOWTO688
-rw-r--r--xorg-server/hw/xfree86/int10/Makefile.am92
-rw-r--r--xorg-server/hw/xfree86/int10/x86emu.c24
-rw-r--r--xorg-server/hw/xfree86/int10/xf86x86emu.h108
-rw-r--r--xorg-server/hw/xfree86/modes/Makefile.am70
-rw-r--r--xorg-server/hw/xfree86/os-support/bsd/Makefile.am152
-rw-r--r--xorg-server/hw/xfree86/os-support/hurd/Makefile.am30
-rw-r--r--xorg-server/hw/xfree86/os-support/hurd/hurd_bell.c74
-rw-r--r--xorg-server/hw/xfree86/os-support/int10Defines.h178
-rw-r--r--xorg-server/hw/xfree86/os-support/misc/Makefile.am24
-rw-r--r--xorg-server/hw/xfree86/os-support/solaris/Makefile.am74
-rw-r--r--xorg-server/hw/xfree86/os-support/solaris/apSolaris.shar1612
-rw-r--r--xorg-server/hw/xfree86/os-support/solaris/sun_inout.s248
-rw-r--r--xorg-server/hw/xfree86/ramdac/CURSOR.NOTES382
-rw-r--r--xorg-server/hw/xfree86/vgahw/Makefile.am18
-rw-r--r--xorg-server/hw/xfree86/x86emu/Makefile.am58
-rw-r--r--xorg-server/hw/xnest/icon28
-rw-r--r--xorg-server/hw/xnest/screensaver1372
-rw-r--r--xorg-server/hw/xquartz/bundle/.gitignore2
-rw-r--r--xorg-server/hw/xquartz/bundle/X11.sh30
-rw-r--r--xorg-server/hw/xquartz/bundle/Xquartz.plist54
-rw-r--r--xorg-server/hw/xquartz/mach-startup/.gitignore16
-rw-r--r--xorg-server/hw/xquartz/mach-startup/mach_startup.defs100
-rw-r--r--xorg-server/hw/xquartz/pbproxy/.gitignore2
-rw-r--r--xorg-server/hw/xquartz/xpr/Makefile.am64
-rw-r--r--xorg-server/hw/xwin/glx/winpriv.h26
-rw-r--r--xorg-server/hw/xwin/system.XWinrc256
-rw-r--r--xorg-server/include/.gitignore10
-rw-r--r--xorg-server/include/dix-config-apple-verbatim.h16
-rw-r--r--xorg-server/include/kdrive-config.h.in80
-rw-r--r--xorg-server/include/version-config.h.in32
-rw-r--r--xorg-server/include/xsha1.h38
-rw-r--r--xorg-server/m4/ac_define_dir.m498
-rw-r--r--xorg-server/miext/rootless/README.txt668
-rw-r--r--xorg-server/miext/shadow/shrot16pack.c60
-rw-r--r--xorg-server/miext/shadow/shrot16pack_180.c62
-rw-r--r--xorg-server/miext/shadow/shrot16pack_270.c62
-rw-r--r--xorg-server/miext/shadow/shrot16pack_270YX.c62
-rw-r--r--xorg-server/miext/shadow/shrot16pack_90.c62
-rw-r--r--xorg-server/miext/shadow/shrot16pack_90YX.c62
-rw-r--r--xorg-server/miext/shadow/shrot32pack.c60
-rw-r--r--xorg-server/miext/shadow/shrot32pack_180.c62
-rw-r--r--xorg-server/miext/shadow/shrot32pack_270.c62
-rw-r--r--xorg-server/miext/shadow/shrot32pack_90.c62
-rw-r--r--xorg-server/miext/shadow/shrot8pack.c60
-rw-r--r--xorg-server/miext/shadow/shrot8pack_180.c62
-rw-r--r--xorg-server/miext/shadow/shrot8pack_270.c62
-rw-r--r--xorg-server/miext/shadow/shrot8pack_90.c62
-rw-r--r--xorg-server/miext/sync/Makefile.am28
-rw-r--r--xorg-server/record/Makefile.am14
-rw-r--r--xorg-server/render/Makefile.am40
-rw-r--r--xorg-server/test/README72
-rw-r--r--xorg-server/xfixes/Makefile.am32
-rw-r--r--xorg-server/xkb/Makefile.am86
-rw-r--r--xorg-server/xkb/README.compiled26
-rw-r--r--xorg-server/xkb/XKM_file_format.txt1368
-rw-r--r--xorg-server/xkeyboard-config/AUTHORS16
-rw-r--r--xorg-server/xkeyboard-config/BUGS140
-rw-r--r--xorg-server/xkeyboard-config/COPYING380
-rw-r--r--xorg-server/xkeyboard-config/CREDITS6
-rw-r--r--xorg-server/xkeyboard-config/ChangeLog2
-rw-r--r--xorg-server/xkeyboard-config/ChangeLog.old7782
-rw-r--r--xorg-server/xkeyboard-config/README56
-rw-r--r--xorg-server/xkeyboard-config/TODO12
-rw-r--r--xorg-server/xkeyboard-config/compat/README66
-rw-r--r--xorg-server/xkeyboard-config/compat/caps24
-rw-r--r--xorg-server/xkeyboard-config/compat/ledcaps46
-rw-r--r--xorg-server/xkeyboard-config/compat/lednum46
-rw-r--r--xorg-server/xkeyboard-config/compat/ledscroll46
-rw-r--r--xorg-server/xkeyboard-config/docs/HOWTO.testing44
-rw-r--r--xorg-server/xkeyboard-config/docs/HOWTO.transition38
-rw-r--r--xorg-server/xkeyboard-config/docs/Makefile.am2
-rw-r--r--xorg-server/xkeyboard-config/docs/README.config390
-rw-r--r--xorg-server/xkeyboard-config/docs/README.symbols102
-rw-r--r--xorg-server/xkeyboard-config/docs/iso15924.csv210
-rw-r--r--xorg-server/xkeyboard-config/docs/iso3166-3.csv492
-rw-r--r--xorg-server/xkeyboard-config/docs/iso3166.csv480
-rw-r--r--xorg-server/xkeyboard-config/docs/iso639.csv1002
-rw-r--r--xorg-server/xkeyboard-config/geometry/README12
-rw-r--r--xorg-server/xkeyboard-config/geometry/digital_vndr/Makefile.am8
-rw-r--r--xorg-server/xkeyboard-config/geometry/nokia106
-rw-r--r--xorg-server/xkeyboard-config/geometry/sgi_vndr/Makefile.am8
-rw-r--r--xorg-server/xkeyboard-config/geometry/typematrix1490
-rw-r--r--xorg-server/xkeyboard-config/keycodes/README12
-rw-r--r--xorg-server/xkeyboard-config/keycodes/aliases198
-rw-r--r--xorg-server/xkeyboard-config/keycodes/digital_vndr/Makefile.am8
-rw-r--r--xorg-server/xkeyboard-config/keycodes/sgi_vndr/Makefile.am8
-rw-r--r--xorg-server/xkeyboard-config/po/ChangeLog528
-rw-r--r--xorg-server/xkeyboard-config/po/Makevars82
-rw-r--r--xorg-server/xkeyboard-config/po/POTFILES.in4
-rw-r--r--xorg-server/xkeyboard-config/po/POTFILES.skip4
-rw-r--r--xorg-server/xkeyboard-config/po/af.po2928
-rw-r--r--xorg-server/xkeyboard-config/po/az.po2930
-rw-r--r--xorg-server/xkeyboard-config/po/crh.po5748
-rw-r--r--xorg-server/xkeyboard-config/po/el.po5746
-rw-r--r--xorg-server/xkeyboard-config/po/en_GB.po3734
-rw-r--r--xorg-server/xkeyboard-config/po/fi.po6918
-rw-r--r--xorg-server/xkeyboard-config/po/ka.po4548
-rw-r--r--xorg-server/xkeyboard-config/po/ky.po6034
-rw-r--r--xorg-server/xkeyboard-config/po/nb.po5378
-rw-r--r--xorg-server/xkeyboard-config/po/ro.po6158
-rw-r--r--xorg-server/xkeyboard-config/po/rw.po3654
-rw-r--r--xorg-server/xkeyboard-config/po/sk.po5562
-rw-r--r--xorg-server/xkeyboard-config/po/sq.po2930
-rw-r--r--xorg-server/xkeyboard-config/po/sr.po4132
-rw-r--r--xorg-server/xkeyboard-config/po/tr.po5190
-rw-r--r--xorg-server/xkeyboard-config/po/vi.po6060
-rw-r--r--xorg-server/xkeyboard-config/po/zh_TW.po3342
-rw-r--r--xorg-server/xkeyboard-config/rules/HDR66
-rw-r--r--xorg-server/xkeyboard-config/rules/README4
-rw-r--r--xorg-server/xkeyboard-config/rules/base.l1_k.part6
-rw-r--r--xorg-server/xkeyboard-config/rules/base.l1o_s.part4
-rw-r--r--xorg-server/xkeyboard-config/rules/base.l2o_s.part4
-rw-r--r--xorg-server/xkeyboard-config/rules/base.l3o_s.part4
-rw-r--r--xorg-server/xkeyboard-config/rules/base.l4o_s.part4
-rw-r--r--xorg-server/xkeyboard-config/rules/base.l_k.part6
-rw-r--r--xorg-server/xkeyboard-config/rules/base.lo_s.part4
-rw-r--r--xorg-server/xkeyboard-config/rules/base.m_g.part54
-rw-r--r--xorg-server/xkeyboard-config/rules/base.m_k.part28
-rw-r--r--xorg-server/xkeyboard-config/rules/base.m_s.part102
-rw-r--r--xorg-server/xkeyboard-config/rules/base.m_t.part8
-rw-r--r--xorg-server/xkeyboard-config/rules/base.ml1_c.part2
-rw-r--r--xorg-server/xkeyboard-config/rules/base.ml1_s.part30
-rw-r--r--xorg-server/xkeyboard-config/rules/base.ml2_s.part6
-rw-r--r--xorg-server/xkeyboard-config/rules/base.ml3_s.part6
-rw-r--r--xorg-server/xkeyboard-config/rules/base.ml4_s.part6
-rw-r--r--xorg-server/xkeyboard-config/rules/base.ml_c.part8
-rw-r--r--xorg-server/xkeyboard-config/rules/base.ml_g.part2
-rw-r--r--xorg-server/xkeyboard-config/rules/base.mlv_s.part8
-rw-r--r--xorg-server/xkeyboard-config/rules/base.o_t.part16
-rw-r--r--xorg-server/xkeyboard-config/rules/bin/Makefile.am20
-rwxr-xr-x[-rw-r--r--]xorg-server/xkeyboard-config/rules/bin/ml1_s.sh18
-rwxr-xr-x[-rw-r--r--]xorg-server/xkeyboard-config/rules/bin/ml1v1_s.sh14
-rwxr-xr-x[-rw-r--r--]xorg-server/xkeyboard-config/rules/bin/ml1v_s.sh14
-rwxr-xr-x[-rw-r--r--]xorg-server/xkeyboard-config/rules/bin/ml_s.sh18
-rwxr-xr-x[-rw-r--r--]xorg-server/xkeyboard-config/rules/bin/mln_s.sh20
-rwxr-xr-x[-rw-r--r--]xorg-server/xkeyboard-config/rules/bin/mlnvn_s.sh16
-rwxr-xr-x[-rw-r--r--]xorg-server/xkeyboard-config/rules/bin/mlv_s.sh14
-rw-r--r--xorg-server/xkeyboard-config/rules/compat/.gitignore30
-rw-r--r--xorg-server/xkeyboard-config/rules/compat/base.l1v1_c.part2
-rw-r--r--xorg-server/xkeyboard-config/rules/compat/base.l2v2_c.part2
-rw-r--r--xorg-server/xkeyboard-config/rules/compat/base.l3v3_c.part2
-rw-r--r--xorg-server/xkeyboard-config/rules/compat/base.l4v4_c.part2
-rw-r--r--xorg-server/xkeyboard-config/rules/compat/base.lists.part4
-rw-r--r--xorg-server/xkeyboard-config/rules/compat/base.lv_c.part2
-rw-r--r--xorg-server/xkeyboard-config/rules/compat/base.o_s.part2
-rw-r--r--xorg-server/xkeyboard-config/rules/compat/layoutsMapping.lst54
-rw-r--r--xorg-server/xkeyboard-config/rules/evdev.m_k.part6
-rw-r--r--xorg-server/xkeyboard-config/rules/evdev.m_s.part6
-rw-r--r--xorg-server/xkeyboard-config/rules/merge.sh50
-rw-r--r--xorg-server/xkeyboard-config/symbols/digital_vndr/Makefile.am10
-rw-r--r--xorg-server/xkeyboard-config/symbols/extractGroupNames.sh6
-rw-r--r--xorg-server/xkeyboard-config/symbols/fujitsu_vndr/Makefile.am8
-rw-r--r--xorg-server/xkeyboard-config/symbols/hp_vndr/Makefile.am8
-rw-r--r--xorg-server/xkeyboard-config/symbols/macintosh_vndr/Makefile.am16
-rw-r--r--xorg-server/xkeyboard-config/symbols/macintosh_vndr/fr220
-rw-r--r--xorg-server/xkeyboard-config/symbols/macintosh_vndr/jp70
-rw-r--r--xorg-server/xkeyboard-config/symbols/nec_vndr/Makefile.am8
-rw-r--r--xorg-server/xkeyboard-config/symbols/nokia_vndr/Makefile.am12
-rw-r--r--xorg-server/xkeyboard-config/symbols/nokia_vndr/rx-44606
-rw-r--r--xorg-server/xkeyboard-config/symbols/sgi_vndr/Makefile.am8
-rw-r--r--xorg-server/xkeyboard-config/symbols/sony_vndr/Makefile.am8
-rw-r--r--xorg-server/xkeyboard-config/symbols/sun_vndr/Makefile.am20
-rw-r--r--xorg-server/xkeyboard-config/symbols/sun_vndr/solaris426
-rw-r--r--xorg-server/xkeyboard-config/symbols/xfree68_vndr/Makefile.am8
-rw-r--r--xorg-server/xkeyboard-config/tests/listCI2.xsl42
-rw-r--r--xorg-server/xkeyboard-config/tests/listCIs.xsl40
-rw-r--r--xorg-server/xkeyboard-config/tests/mxkbledpanel/Imakefile16
-rw-r--r--xorg-server/xkeyboard-config/tests/mxkbledpanel/mxkbledpanel.c1210
-rw-r--r--xorg-server/xkeyboard-config/tests/ruby/README6
-rw-r--r--xorg-server/xkeyboard-config/tests/ruby/find_fragments.rb104
-rw-r--r--xorg-server/xkeyboard-config/tests/ruby/find_match.rb84
-rw-r--r--xorg-server/xkeyboard-config/tests/ruby/utils.rb128
-rw-r--r--xorg-server/xkeyboard-config/tests/ruby/xkbparser.rb370
-rw-r--r--xorg-server/xkeyboard-config/tests/testLayouts.pl34
-rw-r--r--xorg-server/xkeyboard-config/tests/testModels.pl30
-rw-r--r--xorg-server/xkeyboard-config/tests/testOptions.pl30
-rw-r--r--xorg-server/xkeyboard-config/tests/testShortDescriptions12
-rw-r--r--xorg-server/xkeyboard-config/tests/xkbTestFunc.pm330
-rw-r--r--xorg-server/xkeyboard-config/types/README8
-rw-r--r--xorg-server/xkeyboard-config/types/nokia28
-rw-r--r--xorg-server/xkeyboard-config/xkeyboard-config.pc.in16
-rw-r--r--xorg-server/xkeyboard-config/xslt/xfree86.xsl100
1745 files changed, 234616 insertions, 234613 deletions
diff --git a/X11/extensions/EVI.h b/X11/extensions/EVI.h
index dbab85a09..7f3f733e6 100644
--- a/X11/extensions/EVI.h
+++ b/X11/extensions/EVI.h
@@ -1,36 +1,36 @@
-/************************************************************
-Copyright (c) 1997 by Silicon Graphics Computer Systems, Inc.
-Permission to use, copy, modify, and distribute this
-software and its documentation for any purpose and without
-fee is hereby granted, provided that the above copyright
-notice appear in all copies and that both that copyright
-notice and this permission notice appear in supporting
-documentation, and that the name of Silicon Graphics not be
-used in advertising or publicity pertaining to distribution
-of the software without specific prior written permission.
-Silicon Graphics makes no representation about the suitability
-of this software for any purpose. It is provided "as is"
-without any express or implied warranty.
-SILICON GRAPHICS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS
-SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
-AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON
-GRAPHICS BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL
-DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
-DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
-OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH
-THE USE OR PERFORMANCE OF THIS SOFTWARE.
-********************************************************/
-
-#ifndef _EVI_H_
-#define _EVI_H_
-
-#define XEVI_TRANSPARENCY_NONE 0
-#define XEVI_TRANSPARENCY_PIXEL 1
-#define XEVI_TRANSPARENCY_MASK 2
-
-#define EVINAME "Extended-Visual-Information"
-
-#define XEVI_MAJOR_VERSION 1 /* current version numbers */
-#define XEVI_MINOR_VERSION 0
-
-#endif
+/************************************************************
+Copyright (c) 1997 by Silicon Graphics Computer Systems, Inc.
+Permission to use, copy, modify, and distribute this
+software and its documentation for any purpose and without
+fee is hereby granted, provided that the above copyright
+notice appear in all copies and that both that copyright
+notice and this permission notice appear in supporting
+documentation, and that the name of Silicon Graphics not be
+used in advertising or publicity pertaining to distribution
+of the software without specific prior written permission.
+Silicon Graphics makes no representation about the suitability
+of this software for any purpose. It is provided "as is"
+without any express or implied warranty.
+SILICON GRAPHICS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS
+SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
+AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON
+GRAPHICS BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL
+DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
+DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
+OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH
+THE USE OR PERFORMANCE OF THIS SOFTWARE.
+********************************************************/
+
+#ifndef _EVI_H_
+#define _EVI_H_
+
+#define XEVI_TRANSPARENCY_NONE 0
+#define XEVI_TRANSPARENCY_PIXEL 1
+#define XEVI_TRANSPARENCY_MASK 2
+
+#define EVINAME "Extended-Visual-Information"
+
+#define XEVI_MAJOR_VERSION 1 /* current version numbers */
+#define XEVI_MINOR_VERSION 0
+
+#endif
diff --git a/X11/extensions/EVIproto.h b/X11/extensions/EVIproto.h
index a539e6d64..afa282a53 100644
--- a/X11/extensions/EVIproto.h
+++ b/X11/extensions/EVIproto.h
@@ -1,96 +1,96 @@
-/************************************************************
-Copyright (c) 1997 by Silicon Graphics Computer Systems, Inc.
-Permission to use, copy, modify, and distribute this
-software and its documentation for any purpose and without
-fee is hereby granted, provided that the above copyright
-notice appear in all copies and that both that copyright
-notice and this permission notice appear in supporting
-documentation, and that the name of Silicon Graphics not be
-used in advertising or publicity pertaining to distribution
-of the software without specific prior written permission.
-Silicon Graphics makes no representation about the suitability
-of this software for any purpose. It is provided "as is"
-without any express or implied warranty.
-SILICON GRAPHICS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS
-SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
-AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON
-GRAPHICS BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL
-DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
-DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
-OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH
-THE USE OR PERFORMANCE OF THIS SOFTWARE.
-********************************************************/
-
-#ifndef _EVIPROTO_H_
-#define _EVIPROTO_H_
-
-#include <X11/extensions/EVI.h>
-
-#define X_EVIQueryVersion 0
-#define X_EVIGetVisualInfo 1
-
-#define VisualID CARD32
-
-typedef CARD32 VisualID32;
-#define sz_VisualID32 4
-
-typedef struct _xExtendedVisualInfo {
- VisualID core_visual_id B32;
- INT8 screen;
- INT8 level;
- CARD8 transparency_type;
- CARD8 pad0;
- CARD32 transparency_value B32;
- CARD8 min_hw_colormaps;
- CARD8 max_hw_colormaps;
- CARD16 num_colormap_conflicts B16;
-} xExtendedVisualInfo;
-#define sz_xExtendedVisualInfo 16
-
-typedef struct _XEVIQueryVersion {
- CARD8 reqType; /* always XEVIReqCode */
- CARD8 xeviReqType; /* always X_EVIQueryVersion */
- CARD16 length B16;
-} xEVIQueryVersionReq;
-#define sz_xEVIQueryVersionReq 4
-
-typedef struct {
- BYTE type; /* X_Reply */
- CARD8 unused;
- CARD16 sequenceNumber B16;
- CARD32 length B32;
- CARD16 majorVersion B16; /* major version of EVI protocol */
- CARD16 minorVersion B16; /* minor version of EVI protocol */
- CARD32 pad0 B32;
- CARD32 pad1 B32;
- CARD32 pad2 B32;
- CARD32 pad3 B32;
- CARD32 pad4 B32;
-} xEVIQueryVersionReply;
-#define sz_xEVIQueryVersionReply 32
-
-typedef struct _XEVIGetVisualInfoReq {
- CARD8 reqType; /* always XEVIReqCode */
- CARD8 xeviReqType; /* always X_EVIGetVisualInfo */
- CARD16 length B16;
- CARD32 n_visual B32;
-} xEVIGetVisualInfoReq;
-#define sz_xEVIGetVisualInfoReq 8
-
-typedef struct _XEVIGetVisualInfoReply {
- BYTE type; /* X_Reply */
- CARD8 unused;
- CARD16 sequenceNumber B16;
- CARD32 length B32;
- CARD32 n_info B32;
- CARD32 n_conflicts B32;
- CARD32 pad0 B32;
- CARD32 pad1 B32;
- CARD32 pad2 B32;
- CARD32 pad3 B32;
-} xEVIGetVisualInfoReply;
-#define sz_xEVIGetVisualInfoReply 32
-
-#undef VisualID
-
-#endif /* _EVIPROTO_H_ */
+/************************************************************
+Copyright (c) 1997 by Silicon Graphics Computer Systems, Inc.
+Permission to use, copy, modify, and distribute this
+software and its documentation for any purpose and without
+fee is hereby granted, provided that the above copyright
+notice appear in all copies and that both that copyright
+notice and this permission notice appear in supporting
+documentation, and that the name of Silicon Graphics not be
+used in advertising or publicity pertaining to distribution
+of the software without specific prior written permission.
+Silicon Graphics makes no representation about the suitability
+of this software for any purpose. It is provided "as is"
+without any express or implied warranty.
+SILICON GRAPHICS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS
+SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
+AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON
+GRAPHICS BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL
+DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
+DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
+OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH
+THE USE OR PERFORMANCE OF THIS SOFTWARE.
+********************************************************/
+
+#ifndef _EVIPROTO_H_
+#define _EVIPROTO_H_
+
+#include <X11/extensions/EVI.h>
+
+#define X_EVIQueryVersion 0
+#define X_EVIGetVisualInfo 1
+
+#define VisualID CARD32
+
+typedef CARD32 VisualID32;
+#define sz_VisualID32 4
+
+typedef struct _xExtendedVisualInfo {
+ VisualID core_visual_id B32;
+ INT8 screen;
+ INT8 level;
+ CARD8 transparency_type;
+ CARD8 pad0;
+ CARD32 transparency_value B32;
+ CARD8 min_hw_colormaps;
+ CARD8 max_hw_colormaps;
+ CARD16 num_colormap_conflicts B16;
+} xExtendedVisualInfo;
+#define sz_xExtendedVisualInfo 16
+
+typedef struct _XEVIQueryVersion {
+ CARD8 reqType; /* always XEVIReqCode */
+ CARD8 xeviReqType; /* always X_EVIQueryVersion */
+ CARD16 length B16;
+} xEVIQueryVersionReq;
+#define sz_xEVIQueryVersionReq 4
+
+typedef struct {
+ BYTE type; /* X_Reply */
+ CARD8 unused;
+ CARD16 sequenceNumber B16;
+ CARD32 length B32;
+ CARD16 majorVersion B16; /* major version of EVI protocol */
+ CARD16 minorVersion B16; /* minor version of EVI protocol */
+ CARD32 pad0 B32;
+ CARD32 pad1 B32;
+ CARD32 pad2 B32;
+ CARD32 pad3 B32;
+ CARD32 pad4 B32;
+} xEVIQueryVersionReply;
+#define sz_xEVIQueryVersionReply 32
+
+typedef struct _XEVIGetVisualInfoReq {
+ CARD8 reqType; /* always XEVIReqCode */
+ CARD8 xeviReqType; /* always X_EVIGetVisualInfo */
+ CARD16 length B16;
+ CARD32 n_visual B32;
+} xEVIGetVisualInfoReq;
+#define sz_xEVIGetVisualInfoReq 8
+
+typedef struct _XEVIGetVisualInfoReply {
+ BYTE type; /* X_Reply */
+ CARD8 unused;
+ CARD16 sequenceNumber B16;
+ CARD32 length B32;
+ CARD32 n_info B32;
+ CARD32 n_conflicts B32;
+ CARD32 pad0 B32;
+ CARD32 pad1 B32;
+ CARD32 pad2 B32;
+ CARD32 pad3 B32;
+} xEVIGetVisualInfoReply;
+#define sz_xEVIGetVisualInfoReply 32
+
+#undef VisualID
+
+#endif /* _EVIPROTO_H_ */
diff --git a/X11/extensions/ag.h b/X11/extensions/ag.h
index abfa3cb50..be5883a3e 100644
--- a/X11/extensions/ag.h
+++ b/X11/extensions/ag.h
@@ -1,52 +1,52 @@
-/*
-Copyright 1996, 1998 The Open Group
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
-
-The above copyright notice and this permission notice shall be included
-in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
-IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR
-OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
-ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall
-not be used in advertising or otherwise to promote the sale, use or
-other dealings in this Software without prior written authorization
-from The Open Group.
-*/
-
-#ifndef _AG_H_
-#define _AG_H_
-
-#define XAGNAME "XC-APPGROUP"
-
-#define XAG_MAJOR_VERSION 1 /* current version numbers */
-#define XAG_MINOR_VERSION 0
-
-#define XagWindowTypeX11 0
-#define XagWindowTypeMacintosh 1
-#define XagWindowTypeWin32 2
-#define XagWindowTypeWin16 3
-
-#define XagBadAppGroup 0
-#define XagNumberErrors (XagBadAppGroup + 1)
-
-#define XagNsingleScreen 7
-#define XagNdefaultRoot 1
-#define XagNrootVisual 2
-#define XagNdefaultColormap 3
-#define XagNblackPixel 4
-#define XagNwhitePixel 5
-#define XagNappGroupLeader 6
-
-#endif /* _AG_H_ */
-
+/*
+Copyright 1996, 1998 The Open Group
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
+
+The above copyright notice and this permission notice shall be included
+in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR
+OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
+ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group shall
+not be used in advertising or otherwise to promote the sale, use or
+other dealings in this Software without prior written authorization
+from The Open Group.
+*/
+
+#ifndef _AG_H_
+#define _AG_H_
+
+#define XAGNAME "XC-APPGROUP"
+
+#define XAG_MAJOR_VERSION 1 /* current version numbers */
+#define XAG_MINOR_VERSION 0
+
+#define XagWindowTypeX11 0
+#define XagWindowTypeMacintosh 1
+#define XagWindowTypeWin32 2
+#define XagWindowTypeWin16 3
+
+#define XagBadAppGroup 0
+#define XagNumberErrors (XagBadAppGroup + 1)
+
+#define XagNsingleScreen 7
+#define XagNdefaultRoot 1
+#define XagNrootVisual 2
+#define XagNdefaultColormap 3
+#define XagNblackPixel 4
+#define XagNwhitePixel 5
+#define XagNappGroupLeader 6
+
+#endif /* _AG_H_ */
+
diff --git a/X11/extensions/agproto.h b/X11/extensions/agproto.h
index c40aee643..108666126 100644
--- a/X11/extensions/agproto.h
+++ b/X11/extensions/agproto.h
@@ -1,178 +1,178 @@
-/*
-Copyright 1996, 1998, 2001 The Open Group
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
-
-The above copyright notice and this permission notice shall be included
-in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
-IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR
-OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
-ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall
-not be used in advertising or otherwise to promote the sale, use or
-other dealings in this Software without prior written authorization
-from The Open Group.
-*/
-
-#ifndef _AGPROTO_H_ /* { */
-#define _AGPROTO_H_
-
-#include <X11/extensions/ag.h>
-
-#define X_XagQueryVersion 0
-#define X_XagCreate 1
-#define X_XagDestroy 2
-#define X_XagGetAttr 3
-#define X_XagQuery 4
-#define X_XagCreateAssoc 5
-#define X_XagDestroyAssoc 6
-
-#define XAppGroup CARD32
-
-/*
-* Redefine some basic types used by structures defined herein. This allows
-* both the library and server to view communicated data as 32-bit entities,
-* thus preventing problems on 64-bit architectures where libXext sees this
-* data as 64 bits and the server sees it as 32 bits.
-*/
-
-#define Colormap CARD32
-#define VisualID CARD32
-#define Window CARD32
-
-typedef struct _XagQueryVersion {
- CARD8 reqType; /* always XagReqCode */
- CARD8 xagReqType; /* always X_XagQueryVersion */
- CARD16 length B16;
- CARD16 client_major_version B16;
- CARD16 client_minor_version B16;
-} xXagQueryVersionReq;
-#define sz_xXagQueryVersionReq 8
-
-typedef struct {
- BYTE type; /* X_Reply */
- BOOL pad1;
- CARD16 sequence_number B16;
- CARD32 length B32;
- CARD16 server_major_version B16;
- CARD16 server_minor_version B16;
- CARD32 pad2 B32;
- CARD32 pad3 B32;
- CARD32 pad4 B32;
- CARD32 pad5 B32;
- CARD32 pad6 B32;
-} xXagQueryVersionReply;
-#define sz_xXagQueryVersionReply 32
-
-/* Set AppGroup Attributes masks */
-#define XagSingleScreenMask 1 << 0
-#define XagDefaultRootMask 1 << XagNdefaultRoot
-#define XagRootVisualMask 1 << XagNrootVisual
-#define XagDefaultColormapMask 1 << XagNdefaultColormap
-#define XagBlackPixelMask 1 << XagNblackPixel
-#define XagWhitePixelMask 1 << XagNwhitePixel
-#define XagAppGroupLeaderMask 1 << XagNappGroupLeader
-
-typedef struct _XagCreate {
- CARD8 reqType; /* always XagReqCode */
- CARD8 xagReqType; /* always X_XagCreate */
- CARD16 length B16;
- XAppGroup app_group B32;
- CARD32 attrib_mask B32; /* LISTofVALUE follows */
-} xXagCreateReq;
-#define sz_xXagCreateReq 12
-
-typedef struct _XagDestroy {
- CARD8 reqType; /* always XagReqCode */
- CARD8 xagReqType; /* always X_XagDestroy */
- CARD16 length B16;
- XAppGroup app_group B32;
-} xXagDestroyReq;
-#define sz_xXagDestroyReq 8
-
-typedef struct _XagGetAttr {
- CARD8 reqType; /* always XagReqCode */
- CARD8 xagReqType; /* always X_XagGetAttr */
- CARD16 length B16;
- XAppGroup app_group B32;
-} xXagGetAttrReq;
-#define sz_xXagGetAttrReq 8
-
-typedef struct {
- BYTE type; /* X_Reply */
- BOOL pad1;
- CARD16 sequence_number B16;
- CARD32 length B32;
- Window default_root B32;
- VisualID root_visual B32;
- Colormap default_colormap B32;
- CARD32 black_pixel B32;
- CARD32 white_pixel B32;
- BOOL single_screen;
- BOOL app_group_leader;
- CARD16 pad2 B16;
-} xXagGetAttrReply;
-#define sz_xXagGetAttrReply 32
-
-typedef struct _XagQuery {
- CARD8 reqType; /* always XagReqCode */
- CARD8 xagReqType; /* always X_XagQuery */
- CARD16 length B16;
- CARD32 resource B32;
-} xXagQueryReq;
-#define sz_xXagQueryReq 8
-
-typedef struct {
- BYTE type; /* X_Reply */
- BOOL pad1;
- CARD16 sequence_number B16;
- CARD32 length B32;
- XAppGroup app_group B32;
- CARD32 pad2 B32;
- CARD32 pad3 B32;
- CARD32 pad4 B32;
- CARD32 pad5 B32;
- CARD32 pad6 B32;
-} xXagQueryReply;
-#define sz_xXagQueryReply 32
-
-typedef struct _XagCreateAssoc {
- CARD8 reqType; /* always XagReqCode */
- CARD8 xagReqType; /* always X_XagCreateAssoc */
- CARD16 length B16;
- Window window B32;
- CARD16 window_type B16;
- CARD16 system_window_len B16; /* LISTofCARD8 follows */
-} xXagCreateAssocReq;
-#define sz_xXagCreateAssocReq 12
-
-typedef struct _XagDestroyAssoc {
- CARD8 reqType; /* always XagReqCode */
- CARD8 xagReqType; /* always X_XagDestroyAssoc */
- CARD16 length B16;
- Window window B32;
-} xXagDestroyAssocReq;
-#define sz_xXagDestroyAssocReq 8
-
-#undef XAppGroup
-/*
- * Cancel the previous redefinition of the basic types, thus restoring their
- * X.h definitions.
- */
-
-#undef Window
-#undef Colormap
-#undef VisualID
-
-#endif /* } _AGPROTO_H_ */
-
+/*
+Copyright 1996, 1998, 2001 The Open Group
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
+
+The above copyright notice and this permission notice shall be included
+in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR
+OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
+ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group shall
+not be used in advertising or otherwise to promote the sale, use or
+other dealings in this Software without prior written authorization
+from The Open Group.
+*/
+
+#ifndef _AGPROTO_H_ /* { */
+#define _AGPROTO_H_
+
+#include <X11/extensions/ag.h>
+
+#define X_XagQueryVersion 0
+#define X_XagCreate 1
+#define X_XagDestroy 2
+#define X_XagGetAttr 3
+#define X_XagQuery 4
+#define X_XagCreateAssoc 5
+#define X_XagDestroyAssoc 6
+
+#define XAppGroup CARD32
+
+/*
+* Redefine some basic types used by structures defined herein. This allows
+* both the library and server to view communicated data as 32-bit entities,
+* thus preventing problems on 64-bit architectures where libXext sees this
+* data as 64 bits and the server sees it as 32 bits.
+*/
+
+#define Colormap CARD32
+#define VisualID CARD32
+#define Window CARD32
+
+typedef struct _XagQueryVersion {
+ CARD8 reqType; /* always XagReqCode */
+ CARD8 xagReqType; /* always X_XagQueryVersion */
+ CARD16 length B16;
+ CARD16 client_major_version B16;
+ CARD16 client_minor_version B16;
+} xXagQueryVersionReq;
+#define sz_xXagQueryVersionReq 8
+
+typedef struct {
+ BYTE type; /* X_Reply */
+ BOOL pad1;
+ CARD16 sequence_number B16;
+ CARD32 length B32;
+ CARD16 server_major_version B16;
+ CARD16 server_minor_version B16;
+ CARD32 pad2 B32;
+ CARD32 pad3 B32;
+ CARD32 pad4 B32;
+ CARD32 pad5 B32;
+ CARD32 pad6 B32;
+} xXagQueryVersionReply;
+#define sz_xXagQueryVersionReply 32
+
+/* Set AppGroup Attributes masks */
+#define XagSingleScreenMask 1 << 0
+#define XagDefaultRootMask 1 << XagNdefaultRoot
+#define XagRootVisualMask 1 << XagNrootVisual
+#define XagDefaultColormapMask 1 << XagNdefaultColormap
+#define XagBlackPixelMask 1 << XagNblackPixel
+#define XagWhitePixelMask 1 << XagNwhitePixel
+#define XagAppGroupLeaderMask 1 << XagNappGroupLeader
+
+typedef struct _XagCreate {
+ CARD8 reqType; /* always XagReqCode */
+ CARD8 xagReqType; /* always X_XagCreate */
+ CARD16 length B16;
+ XAppGroup app_group B32;
+ CARD32 attrib_mask B32; /* LISTofVALUE follows */
+} xXagCreateReq;
+#define sz_xXagCreateReq 12
+
+typedef struct _XagDestroy {
+ CARD8 reqType; /* always XagReqCode */
+ CARD8 xagReqType; /* always X_XagDestroy */
+ CARD16 length B16;
+ XAppGroup app_group B32;
+} xXagDestroyReq;
+#define sz_xXagDestroyReq 8
+
+typedef struct _XagGetAttr {
+ CARD8 reqType; /* always XagReqCode */
+ CARD8 xagReqType; /* always X_XagGetAttr */
+ CARD16 length B16;
+ XAppGroup app_group B32;
+} xXagGetAttrReq;
+#define sz_xXagGetAttrReq 8
+
+typedef struct {
+ BYTE type; /* X_Reply */
+ BOOL pad1;
+ CARD16 sequence_number B16;
+ CARD32 length B32;
+ Window default_root B32;
+ VisualID root_visual B32;
+ Colormap default_colormap B32;
+ CARD32 black_pixel B32;
+ CARD32 white_pixel B32;
+ BOOL single_screen;
+ BOOL app_group_leader;
+ CARD16 pad2 B16;
+} xXagGetAttrReply;
+#define sz_xXagGetAttrReply 32
+
+typedef struct _XagQuery {
+ CARD8 reqType; /* always XagReqCode */
+ CARD8 xagReqType; /* always X_XagQuery */
+ CARD16 length B16;
+ CARD32 resource B32;
+} xXagQueryReq;
+#define sz_xXagQueryReq 8
+
+typedef struct {
+ BYTE type; /* X_Reply */
+ BOOL pad1;
+ CARD16 sequence_number B16;
+ CARD32 length B32;
+ XAppGroup app_group B32;
+ CARD32 pad2 B32;
+ CARD32 pad3 B32;
+ CARD32 pad4 B32;
+ CARD32 pad5 B32;
+ CARD32 pad6 B32;
+} xXagQueryReply;
+#define sz_xXagQueryReply 32
+
+typedef struct _XagCreateAssoc {
+ CARD8 reqType; /* always XagReqCode */
+ CARD8 xagReqType; /* always X_XagCreateAssoc */
+ CARD16 length B16;
+ Window window B32;
+ CARD16 window_type B16;
+ CARD16 system_window_len B16; /* LISTofCARD8 follows */
+} xXagCreateAssocReq;
+#define sz_xXagCreateAssocReq 12
+
+typedef struct _XagDestroyAssoc {
+ CARD8 reqType; /* always XagReqCode */
+ CARD8 xagReqType; /* always X_XagDestroyAssoc */
+ CARD16 length B16;
+ Window window B32;
+} xXagDestroyAssocReq;
+#define sz_xXagDestroyAssocReq 8
+
+#undef XAppGroup
+/*
+ * Cancel the previous redefinition of the basic types, thus restoring their
+ * X.h definitions.
+ */
+
+#undef Window
+#undef Colormap
+#undef VisualID
+
+#endif /* } _AGPROTO_H_ */
+
diff --git a/X11/extensions/cup.h b/X11/extensions/cup.h
index c5def262d..cbbc34bf8 100644
--- a/X11/extensions/cup.h
+++ b/X11/extensions/cup.h
@@ -1,38 +1,38 @@
-/*
-
-Copyright 1987, 1988, 1998 The Open Group
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall not be
-used in advertising or otherwise to promote the sale, use or other dealings
-in this Software without prior written authorization from The Open Group.
-
-*/
-
-#ifndef _CUP_H_
-#define _CUP_H_
-
-#define XCUPNAME "TOG-CUP"
-
-#define XCUP_MAJOR_VERSION 1 /* current version numbers */
-#define XCUP_MINOR_VERSION 0
-
-#define XcupNumberErrors 0
-
-#endif /* _CUP_H_ */
-
+/*
+
+Copyright 1987, 1988, 1998 The Open Group
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group shall not be
+used in advertising or otherwise to promote the sale, use or other dealings
+in this Software without prior written authorization from The Open Group.
+
+*/
+
+#ifndef _CUP_H_
+#define _CUP_H_
+
+#define XCUPNAME "TOG-CUP"
+
+#define XCUP_MAJOR_VERSION 1 /* current version numbers */
+#define XCUP_MINOR_VERSION 0
+
+#define XcupNumberErrors 0
+
+#endif /* _CUP_H_ */
+
diff --git a/X11/extensions/cupproto.h b/X11/extensions/cupproto.h
index 3fb854dd1..f61c9f0a7 100644
--- a/X11/extensions/cupproto.h
+++ b/X11/extensions/cupproto.h
@@ -1,105 +1,105 @@
-/*
-
-Copyright 1987, 1988, 1998 The Open Group
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall not be
-used in advertising or otherwise to promote the sale, use or other dealings
-in this Software without prior written authorization from The Open Group.
-
-*/
-
-#ifndef _XCUPPROTO_H_ /* { */
-#define _XCUPPROTO_H_
-
-#include <X11/extensions/cup.h>
-
-#define X_XcupQueryVersion 0
-#define X_XcupGetReservedColormapEntries 1
-#define X_XcupStoreColors 2
-
-typedef struct _XcupQueryVersion {
- CARD8 reqType; /* always XcupReqCode */
- CARD8 xcupReqType; /* always X_XcupQueryVersion */
- CARD16 length B16;
- CARD16 client_major_version B16;
- CARD16 client_minor_version B16;
-} xXcupQueryVersionReq;
-#define sz_xXcupQueryVersionReq 8
-
-typedef struct {
- BYTE type; /* X_Reply */
- BOOL pad1;
- CARD16 sequence_number B16;
- CARD32 length B32;
- CARD16 server_major_version B16;
- CARD16 server_minor_version B16;
- CARD32 pad2 B32;
- CARD32 pad3 B32;
- CARD32 pad4 B32;
- CARD32 pad5 B32;
- CARD32 pad6 B32;
-} xXcupQueryVersionReply;
-#define sz_xXcupQueryVersionReply 32
-
-typedef struct _XcupGetReservedColormapEntries {
- CARD8 reqType; /* always XcupReqCode */
- CARD8 xcupReqType; /* always X_XcupGetReservedColormapEntries */
- CARD16 length B16;
- CARD32 screen B32;
-} xXcupGetReservedColormapEntriesReq;
-#define sz_xXcupGetReservedColormapEntriesReq 8
-
-typedef struct {
- BYTE type; /* X_Reply */
- BOOL pad1;
- CARD16 sequence_number B16;
- CARD32 length B32;
- CARD32 pad2 B32;
- CARD32 pad3 B32;
- CARD32 pad4 B32;
- CARD32 pad5 B32;
- CARD32 pad6 B32;
- CARD32 pad7 B32;
-} xXcupGetReservedColormapEntriesReply;
-#define sz_xXcupGetReservedColormapEntriesReply 32
-
-typedef struct _XcupStoreColors {
- CARD8 reqType; /* always XcupReqCode */
- CARD8 xcupReqType; /* always X_XcupStoreColors */
- CARD16 length B16;
- CARD32 cmap B32;
-} xXcupStoreColorsReq;
-#define sz_xXcupStoreColorsReq 8
-
-typedef struct {
- BYTE type; /* X_Reply */
- BOOL pad1;
- CARD16 sequence_number B16;
- CARD32 length B32;
- CARD32 pad2 B32;
- CARD32 pad3 B32;
- CARD32 pad4 B32;
- CARD32 pad5 B32;
- CARD32 pad6 B32;
- CARD32 pad7 B32;
-} xXcupStoreColorsReply;
-#define sz_xXcupStoreColorsReply 32
-
-#endif /* } _XCUPPROTO_H_ */
-
+/*
+
+Copyright 1987, 1988, 1998 The Open Group
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group shall not be
+used in advertising or otherwise to promote the sale, use or other dealings
+in this Software without prior written authorization from The Open Group.
+
+*/
+
+#ifndef _XCUPPROTO_H_ /* { */
+#define _XCUPPROTO_H_
+
+#include <X11/extensions/cup.h>
+
+#define X_XcupQueryVersion 0
+#define X_XcupGetReservedColormapEntries 1
+#define X_XcupStoreColors 2
+
+typedef struct _XcupQueryVersion {
+ CARD8 reqType; /* always XcupReqCode */
+ CARD8 xcupReqType; /* always X_XcupQueryVersion */
+ CARD16 length B16;
+ CARD16 client_major_version B16;
+ CARD16 client_minor_version B16;
+} xXcupQueryVersionReq;
+#define sz_xXcupQueryVersionReq 8
+
+typedef struct {
+ BYTE type; /* X_Reply */
+ BOOL pad1;
+ CARD16 sequence_number B16;
+ CARD32 length B32;
+ CARD16 server_major_version B16;
+ CARD16 server_minor_version B16;
+ CARD32 pad2 B32;
+ CARD32 pad3 B32;
+ CARD32 pad4 B32;
+ CARD32 pad5 B32;
+ CARD32 pad6 B32;
+} xXcupQueryVersionReply;
+#define sz_xXcupQueryVersionReply 32
+
+typedef struct _XcupGetReservedColormapEntries {
+ CARD8 reqType; /* always XcupReqCode */
+ CARD8 xcupReqType; /* always X_XcupGetReservedColormapEntries */
+ CARD16 length B16;
+ CARD32 screen B32;
+} xXcupGetReservedColormapEntriesReq;
+#define sz_xXcupGetReservedColormapEntriesReq 8
+
+typedef struct {
+ BYTE type; /* X_Reply */
+ BOOL pad1;
+ CARD16 sequence_number B16;
+ CARD32 length B32;
+ CARD32 pad2 B32;
+ CARD32 pad3 B32;
+ CARD32 pad4 B32;
+ CARD32 pad5 B32;
+ CARD32 pad6 B32;
+ CARD32 pad7 B32;
+} xXcupGetReservedColormapEntriesReply;
+#define sz_xXcupGetReservedColormapEntriesReply 32
+
+typedef struct _XcupStoreColors {
+ CARD8 reqType; /* always XcupReqCode */
+ CARD8 xcupReqType; /* always X_XcupStoreColors */
+ CARD16 length B16;
+ CARD32 cmap B32;
+} xXcupStoreColorsReq;
+#define sz_xXcupStoreColorsReq 8
+
+typedef struct {
+ BYTE type; /* X_Reply */
+ BOOL pad1;
+ CARD16 sequence_number B16;
+ CARD32 length B32;
+ CARD32 pad2 B32;
+ CARD32 pad3 B32;
+ CARD32 pad4 B32;
+ CARD32 pad5 B32;
+ CARD32 pad6 B32;
+ CARD32 pad7 B32;
+} xXcupStoreColorsReply;
+#define sz_xXcupStoreColorsReply 32
+
+#endif /* } _XCUPPROTO_H_ */
+
diff --git a/X11/extensions/dbe.h b/X11/extensions/dbe.h
index bc175223d..7968552d3 100644
--- a/X11/extensions/dbe.h
+++ b/X11/extensions/dbe.h
@@ -1,57 +1,57 @@
-/******************************************************************************
- *
- * Copyright (c) 1994, 1995 Hewlett-Packard Company
- *
- * Permission is hereby granted, free of charge, to any person obtaining
- * a copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sublicense, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice shall be included
- * in all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
- * IN NO EVENT SHALL HEWLETT-PACKARD COMPANY BE LIABLE FOR ANY CLAIM,
- * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
- * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR
- * THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * Except as contained in this notice, the name of the Hewlett-Packard
- * Company shall not be used in advertising or otherwise to promote the
- * sale, use or other dealings in this Software without prior written
- * authorization from the Hewlett-Packard Company.
- *
- * Header file for Xlib-related DBE
- *
- *****************************************************************************/
-
-#ifndef DBE_H
-#define DBE_H
-
-/* Values for swap_action field of XdbeSwapInfo structure */
-#define XdbeUndefined 0
-#define XdbeBackground 1
-#define XdbeUntouched 2
-#define XdbeCopied 3
-
-/* Errors */
-#define XdbeBadBuffer 0
-
-#define DBE_PROTOCOL_NAME "DOUBLE-BUFFER"
-
-/* Current version numbers */
-#define DBE_MAJOR_VERSION 1
-#define DBE_MINOR_VERSION 0
-
-/* Used when adding extension; also used in Xdbe macros */
-#define DbeNumberEvents 0
-#define DbeBadBuffer 0
-#define DbeNumberErrors (DbeBadBuffer + 1)
-
-#endif /* DBE_H */
-
+/******************************************************************************
+ *
+ * Copyright (c) 1994, 1995 Hewlett-Packard Company
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining
+ * a copy of this software and associated documentation files (the
+ * "Software"), to deal in the Software without restriction, including
+ * without limitation the rights to use, copy, modify, merge, publish,
+ * distribute, sublicense, and/or sell copies of the Software, and to
+ * permit persons to whom the Software is furnished to do so, subject to
+ * the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included
+ * in all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+ * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+ * IN NO EVENT SHALL HEWLETT-PACKARD COMPANY BE LIABLE FOR ANY CLAIM,
+ * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
+ * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR
+ * THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ *
+ * Except as contained in this notice, the name of the Hewlett-Packard
+ * Company shall not be used in advertising or otherwise to promote the
+ * sale, use or other dealings in this Software without prior written
+ * authorization from the Hewlett-Packard Company.
+ *
+ * Header file for Xlib-related DBE
+ *
+ *****************************************************************************/
+
+#ifndef DBE_H
+#define DBE_H
+
+/* Values for swap_action field of XdbeSwapInfo structure */
+#define XdbeUndefined 0
+#define XdbeBackground 1
+#define XdbeUntouched 2
+#define XdbeCopied 3
+
+/* Errors */
+#define XdbeBadBuffer 0
+
+#define DBE_PROTOCOL_NAME "DOUBLE-BUFFER"
+
+/* Current version numbers */
+#define DBE_MAJOR_VERSION 1
+#define DBE_MINOR_VERSION 0
+
+/* Used when adding extension; also used in Xdbe macros */
+#define DbeNumberEvents 0
+#define DbeBadBuffer 0
+#define DbeNumberErrors (DbeBadBuffer + 1)
+
+#endif /* DBE_H */
+
diff --git a/X11/extensions/dbeproto.h b/X11/extensions/dbeproto.h
index 62d30da85..784926e33 100644
--- a/X11/extensions/dbeproto.h
+++ b/X11/extensions/dbeproto.h
@@ -1,224 +1,224 @@
-/******************************************************************************
- *
- * Copyright (c) 1994, 1995 Hewlett-Packard Company
- *
- * Permission is hereby granted, free of charge, to any person obtaining
- * a copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sublicense, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice shall be included
- * in all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
- * IN NO EVENT SHALL HEWLETT-PACKARD COMPANY BE LIABLE FOR ANY CLAIM,
- * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
- * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR
- * THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * Except as contained in this notice, the name of the Hewlett-Packard
- * Company shall not be used in advertising or otherwise to promote the
- * sale, use or other dealings in this Software without prior written
- * authorization from the Hewlett-Packard Company.
- *
- * Header file for Xlib-related DBE
- *
- *****************************************************************************/
-
-#ifndef DBE_PROTO_H
-#define DBE_PROTO_H
-
-#include <X11/extensions/dbe.h>
-
-/* Request values used in (S)ProcDbeDispatch() */
-#define X_DbeGetVersion 0
-#define X_DbeAllocateBackBufferName 1
-#define X_DbeDeallocateBackBufferName 2
-#define X_DbeSwapBuffers 3
-#define X_DbeBeginIdiom 4
-#define X_DbeEndIdiom 5
-#define X_DbeGetVisualInfo 6
-#define X_DbeGetBackBufferAttributes 7
-
-typedef CARD8 xDbeSwapAction;
-typedef CARD32 xDbeBackBuffer;
-
-/* TYPEDEFS */
-
-/* Protocol data types */
-
-typedef struct
-{
- CARD32 window B32; /* window */
- xDbeSwapAction swapAction; /* swap action */
- CARD8 pad1; /* unused */
- CARD16 pad2 B16;
-
-} xDbeSwapInfo;
-
-typedef struct
-{
- CARD32 visualID B32; /* associated visual */
- CARD8 depth; /* depth of visual */
- CARD8 perfLevel; /* performance level hint */
- CARD16 pad1 B16;
-
-} xDbeVisInfo;
-#define sz_xDbeVisInfo 8
-
-typedef struct
-{
- CARD32 n B32; /* number of visual info items in list */
-
-} xDbeScreenVisInfo; /* followed by n xDbeVisInfo items */
-
-typedef struct
-{
- CARD32 window B32; /* window */
-
-} xDbeBufferAttributes;
-
-
-/* Requests and replies */
-
-typedef struct
-{
- CARD8 reqType; /* major-opcode: always codes->major_opcode */
- CARD8 dbeReqType; /* minor-opcode: always X_DbeGetVersion (0) */
- CARD16 length B16; /* request length: (2) */
- CARD8 majorVersion; /* client-major-version */
- CARD8 minorVersion; /* client-minor-version */
- CARD16 unused B16; /* unused */
-
-} xDbeGetVersionReq;
-#define sz_xDbeGetVersionReq 8
-
-typedef struct
-{
- BYTE type; /* Reply: X_Reply (1) */
- CARD8 unused; /* unused */
- CARD16 sequenceNumber B16; /* sequence number */
- CARD32 length B32; /* reply length: (0) */
- CARD8 majorVersion; /* server-major-version */
- CARD8 minorVersion; /* server-minor-version */
- CARD16 pad1 B16; /* unused */
- CARD32 pad2 B32;
- CARD32 pad3 B32;
- CARD32 pad4 B32;
- CARD32 pad5 B32;
- CARD32 pad6 B32;
-
-} xDbeGetVersionReply;
-#define sz_xDbeGetVersionReply 32
-
-typedef struct
-{
- CARD8 reqType; /* major-opcode: codes->major_opcode */
- CARD8 dbeReqType; /* X_DbeAllocateBackBufferName (1) */
- CARD16 length B16; /* request length: (4) */
- CARD32 window B32; /* window */
- xDbeBackBuffer buffer B32; /* back buffer name */
- xDbeSwapAction swapAction; /* swap action hint */
- CARD8 pad1; /* unused */
- CARD16 pad2 B16;
-
-} xDbeAllocateBackBufferNameReq;
-#define sz_xDbeAllocateBackBufferNameReq 16
-
-typedef struct
-{
- CARD8 reqType; /* major-opcode: codes->major_opcode */
- CARD8 dbeReqType; /* X_DbeDeallocateBackBufferName (2) */
- CARD16 length B16; /* request length: (2) */
- xDbeBackBuffer buffer B32; /* back buffer name */
-
-} xDbeDeallocateBackBufferNameReq;
-#define sz_xDbeDeallocateBackBufferNameReq 8
-
-typedef struct
-{
- CARD8 reqType; /* major-opcode: always codes->major_opcode */
- CARD8 dbeReqType; /* minor-opcode: always X_DbeSwapBuffers (3) */
- CARD16 length B16; /* request length: (2+2n) */
- CARD32 n B32; /* n, number of window/swap action pairs */
-
-} xDbeSwapBuffersReq; /* followed by n window/swap action pairs */
-#define sz_xDbeSwapBuffersReq 8
-
-typedef struct
-{
- CARD8 reqType; /* major-opcode: always codes->major_opcode */
- CARD8 dbeReqType; /* minor-opcode: always X_DbeBeginIdom (4) */
- CARD16 length B16; /* request length: (1) */
-
-} xDbeBeginIdiomReq;
-#define sz_xDbeBeginIdiomReq 4
-
-typedef struct
-{
- CARD8 reqType; /* major-opcode: always codes->major_opcode */
- CARD8 dbeReqType; /* minor-opcode: always X_DbeEndIdom (5) */
- CARD16 length B16; /* request length: (1) */
-
-} xDbeEndIdiomReq;
-#define sz_xDbeEndIdiomReq 4
-
-typedef struct
-{
- CARD8 reqType; /* always codes->major_opcode */
- CARD8 dbeReqType; /* always X_DbeGetVisualInfo (6) */
- CARD16 length B16; /* request length: (2+n) */
- CARD32 n B32; /* n, number of drawables in list */
-
-} xDbeGetVisualInfoReq; /* followed by n drawables */
-#define sz_xDbeGetVisualInfoReq 8
-
-typedef struct
-{
- BYTE type; /* Reply: X_Reply (1) */
- CARD8 unused; /* unused */
- CARD16 sequenceNumber B16; /* sequence number */
- CARD32 length B32; /* reply length */
- CARD32 m; /* m, number of visual infos in list */
- CARD32 pad1 B32; /* unused */
- CARD32 pad2 B32;
- CARD32 pad3 B32;
- CARD32 pad4 B32;
- CARD32 pad5 B32;
-
-} xDbeGetVisualInfoReply; /* followed by m visual infos */
-#define sz_xDbeGetVisualInfoReply 32
-
-typedef struct
-{
- CARD8 reqType; /* always codes->major_opcode */
- CARD8 dbeReqType; /* X_DbeGetBackBufferAttributes (7) */
- CARD16 length B16; /* request length: (2) */
- xDbeBackBuffer buffer B32; /* back buffer name */
-
-} xDbeGetBackBufferAttributesReq;
-#define sz_xDbeGetBackBufferAttributesReq 8
-
-typedef struct
-{
- BYTE type; /* Reply: X_Reply (1) */
- CARD8 unused; /* unused */
- CARD16 sequenceNumber B16; /* sequence number */
- CARD32 length B32; /* reply length: (0) */
- CARD32 attributes; /* attributes */
- CARD32 pad1 B32; /* unused */
- CARD32 pad2 B32;
- CARD32 pad3 B32;
- CARD32 pad4 B32;
- CARD32 pad5 B32;
-
-} xDbeGetBackBufferAttributesReply;
-#define sz_xDbeGetBackBufferAttributesReply 32
-
-#endif /* DBE_PROTO_H */
-
+/******************************************************************************
+ *
+ * Copyright (c) 1994, 1995 Hewlett-Packard Company
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining
+ * a copy of this software and associated documentation files (the
+ * "Software"), to deal in the Software without restriction, including
+ * without limitation the rights to use, copy, modify, merge, publish,
+ * distribute, sublicense, and/or sell copies of the Software, and to
+ * permit persons to whom the Software is furnished to do so, subject to
+ * the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included
+ * in all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+ * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+ * IN NO EVENT SHALL HEWLETT-PACKARD COMPANY BE LIABLE FOR ANY CLAIM,
+ * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
+ * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR
+ * THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ *
+ * Except as contained in this notice, the name of the Hewlett-Packard
+ * Company shall not be used in advertising or otherwise to promote the
+ * sale, use or other dealings in this Software without prior written
+ * authorization from the Hewlett-Packard Company.
+ *
+ * Header file for Xlib-related DBE
+ *
+ *****************************************************************************/
+
+#ifndef DBE_PROTO_H
+#define DBE_PROTO_H
+
+#include <X11/extensions/dbe.h>
+
+/* Request values used in (S)ProcDbeDispatch() */
+#define X_DbeGetVersion 0
+#define X_DbeAllocateBackBufferName 1
+#define X_DbeDeallocateBackBufferName 2
+#define X_DbeSwapBuffers 3
+#define X_DbeBeginIdiom 4
+#define X_DbeEndIdiom 5
+#define X_DbeGetVisualInfo 6
+#define X_DbeGetBackBufferAttributes 7
+
+typedef CARD8 xDbeSwapAction;
+typedef CARD32 xDbeBackBuffer;
+
+/* TYPEDEFS */
+
+/* Protocol data types */
+
+typedef struct
+{
+ CARD32 window B32; /* window */
+ xDbeSwapAction swapAction; /* swap action */
+ CARD8 pad1; /* unused */
+ CARD16 pad2 B16;
+
+} xDbeSwapInfo;
+
+typedef struct
+{
+ CARD32 visualID B32; /* associated visual */
+ CARD8 depth; /* depth of visual */
+ CARD8 perfLevel; /* performance level hint */
+ CARD16 pad1 B16;
+
+} xDbeVisInfo;
+#define sz_xDbeVisInfo 8
+
+typedef struct
+{
+ CARD32 n B32; /* number of visual info items in list */
+
+} xDbeScreenVisInfo; /* followed by n xDbeVisInfo items */
+
+typedef struct
+{
+ CARD32 window B32; /* window */
+
+} xDbeBufferAttributes;
+
+
+/* Requests and replies */
+
+typedef struct
+{
+ CARD8 reqType; /* major-opcode: always codes->major_opcode */
+ CARD8 dbeReqType; /* minor-opcode: always X_DbeGetVersion (0) */
+ CARD16 length B16; /* request length: (2) */
+ CARD8 majorVersion; /* client-major-version */
+ CARD8 minorVersion; /* client-minor-version */
+ CARD16 unused B16; /* unused */
+
+} xDbeGetVersionReq;
+#define sz_xDbeGetVersionReq 8
+
+typedef struct
+{
+ BYTE type; /* Reply: X_Reply (1) */
+ CARD8 unused; /* unused */
+ CARD16 sequenceNumber B16; /* sequence number */
+ CARD32 length B32; /* reply length: (0) */
+ CARD8 majorVersion; /* server-major-version */
+ CARD8 minorVersion; /* server-minor-version */
+ CARD16 pad1 B16; /* unused */
+ CARD32 pad2 B32;
+ CARD32 pad3 B32;
+ CARD32 pad4 B32;
+ CARD32 pad5 B32;
+ CARD32 pad6 B32;
+
+} xDbeGetVersionReply;
+#define sz_xDbeGetVersionReply 32
+
+typedef struct
+{
+ CARD8 reqType; /* major-opcode: codes->major_opcode */
+ CARD8 dbeReqType; /* X_DbeAllocateBackBufferName (1) */
+ CARD16 length B16; /* request length: (4) */
+ CARD32 window B32; /* window */
+ xDbeBackBuffer buffer B32; /* back buffer name */
+ xDbeSwapAction swapAction; /* swap action hint */
+ CARD8 pad1; /* unused */
+ CARD16 pad2 B16;
+
+} xDbeAllocateBackBufferNameReq;
+#define sz_xDbeAllocateBackBufferNameReq 16
+
+typedef struct
+{
+ CARD8 reqType; /* major-opcode: codes->major_opcode */
+ CARD8 dbeReqType; /* X_DbeDeallocateBackBufferName (2) */
+ CARD16 length B16; /* request length: (2) */
+ xDbeBackBuffer buffer B32; /* back buffer name */
+
+} xDbeDeallocateBackBufferNameReq;
+#define sz_xDbeDeallocateBackBufferNameReq 8
+
+typedef struct
+{
+ CARD8 reqType; /* major-opcode: always codes->major_opcode */
+ CARD8 dbeReqType; /* minor-opcode: always X_DbeSwapBuffers (3) */
+ CARD16 length B16; /* request length: (2+2n) */
+ CARD32 n B32; /* n, number of window/swap action pairs */
+
+} xDbeSwapBuffersReq; /* followed by n window/swap action pairs */
+#define sz_xDbeSwapBuffersReq 8
+
+typedef struct
+{
+ CARD8 reqType; /* major-opcode: always codes->major_opcode */
+ CARD8 dbeReqType; /* minor-opcode: always X_DbeBeginIdom (4) */
+ CARD16 length B16; /* request length: (1) */
+
+} xDbeBeginIdiomReq;
+#define sz_xDbeBeginIdiomReq 4
+
+typedef struct
+{
+ CARD8 reqType; /* major-opcode: always codes->major_opcode */
+ CARD8 dbeReqType; /* minor-opcode: always X_DbeEndIdom (5) */
+ CARD16 length B16; /* request length: (1) */
+
+} xDbeEndIdiomReq;
+#define sz_xDbeEndIdiomReq 4
+
+typedef struct
+{
+ CARD8 reqType; /* always codes->major_opcode */
+ CARD8 dbeReqType; /* always X_DbeGetVisualInfo (6) */
+ CARD16 length B16; /* request length: (2+n) */
+ CARD32 n B32; /* n, number of drawables in list */
+
+} xDbeGetVisualInfoReq; /* followed by n drawables */
+#define sz_xDbeGetVisualInfoReq 8
+
+typedef struct
+{
+ BYTE type; /* Reply: X_Reply (1) */
+ CARD8 unused; /* unused */
+ CARD16 sequenceNumber B16; /* sequence number */
+ CARD32 length B32; /* reply length */
+ CARD32 m; /* m, number of visual infos in list */
+ CARD32 pad1 B32; /* unused */
+ CARD32 pad2 B32;
+ CARD32 pad3 B32;
+ CARD32 pad4 B32;
+ CARD32 pad5 B32;
+
+} xDbeGetVisualInfoReply; /* followed by m visual infos */
+#define sz_xDbeGetVisualInfoReply 32
+
+typedef struct
+{
+ CARD8 reqType; /* always codes->major_opcode */
+ CARD8 dbeReqType; /* X_DbeGetBackBufferAttributes (7) */
+ CARD16 length B16; /* request length: (2) */
+ xDbeBackBuffer buffer B32; /* back buffer name */
+
+} xDbeGetBackBufferAttributesReq;
+#define sz_xDbeGetBackBufferAttributesReq 8
+
+typedef struct
+{
+ BYTE type; /* Reply: X_Reply (1) */
+ CARD8 unused; /* unused */
+ CARD16 sequenceNumber B16; /* sequence number */
+ CARD32 length B32; /* reply length: (0) */
+ CARD32 attributes; /* attributes */
+ CARD32 pad1 B32; /* unused */
+ CARD32 pad2 B32;
+ CARD32 pad3 B32;
+ CARD32 pad4 B32;
+ CARD32 pad5 B32;
+
+} xDbeGetBackBufferAttributesReply;
+#define sz_xDbeGetBackBufferAttributesReply 32
+
+#endif /* DBE_PROTO_H */
+
diff --git a/X11/extensions/dpmsconst.h b/X11/extensions/dpmsconst.h
index dfa5befcc..75f058677 100644
--- a/X11/extensions/dpmsconst.h
+++ b/X11/extensions/dpmsconst.h
@@ -1,43 +1,43 @@
-/*****************************************************************
-
-Copyright (c) 1996 Digital Equipment Corporation, Maynard, Massachusetts.
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software.
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-DIGITAL EQUIPMENT CORPORATION BE LIABLE FOR ANY CLAIM, DAMAGES, INCLUDING,
-BUT NOT LIMITED TO CONSEQUENTIAL OR INCIDENTAL DAMAGES, OR OTHER LIABILITY,
-WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR
-IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of Digital Equipment Corporation
-shall not be used in advertising or otherwise to promote the sale, use or other
-dealings in this Software without prior written authorization from Digital
-Equipment Corporation.
-
-******************************************************************/
-
-#ifndef _DPMSCONST_H
-#define _DPMSCONST_H 1
-
-#define DPMSMajorVersion 1
-#define DPMSMinorVersion 1
-
-#define DPMSExtensionName "DPMS"
-
-#define DPMSModeOn 0
-#define DPMSModeStandby 1
-#define DPMSModeSuspend 2
-#define DPMSModeOff 3
-
-#endif /* !_DPMSCONST_H */
-
+/*****************************************************************
+
+Copyright (c) 1996 Digital Equipment Corporation, Maynard, Massachusetts.
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software.
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+DIGITAL EQUIPMENT CORPORATION BE LIABLE FOR ANY CLAIM, DAMAGES, INCLUDING,
+BUT NOT LIMITED TO CONSEQUENTIAL OR INCIDENTAL DAMAGES, OR OTHER LIABILITY,
+WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR
+IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of Digital Equipment Corporation
+shall not be used in advertising or otherwise to promote the sale, use or other
+dealings in this Software without prior written authorization from Digital
+Equipment Corporation.
+
+******************************************************************/
+
+#ifndef _DPMSCONST_H
+#define _DPMSCONST_H 1
+
+#define DPMSMajorVersion 1
+#define DPMSMinorVersion 1
+
+#define DPMSExtensionName "DPMS"
+
+#define DPMSModeOn 0
+#define DPMSModeStandby 1
+#define DPMSModeSuspend 2
+#define DPMSModeOff 3
+
+#endif /* !_DPMSCONST_H */
+
diff --git a/X11/extensions/dpmsproto.h b/X11/extensions/dpmsproto.h
index e77ae976c..63fd3fc0e 100644
--- a/X11/extensions/dpmsproto.h
+++ b/X11/extensions/dpmsproto.h
@@ -1,175 +1,175 @@
-/*****************************************************************
-
-Copyright (c) 1996 Digital Equipment Corporation, Maynard, Massachusetts.
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software.
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-DIGITAL EQUIPMENT CORPORATION BE LIABLE FOR ANY CLAIM, DAMAGES, INCLUDING,
-BUT NOT LIMITED TO CONSEQUENTIAL OR INCIDENTAL DAMAGES, OR OTHER LIABILITY,
-WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR
-IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of Digital Equipment Corporation
-shall not be used in advertising or otherwise to promote the sale, use or other
-dealings in this Software without prior written authorization from Digital
-Equipment Corporation.
-
-******************************************************************/
-
-#ifndef _DPMSPROTO_H_
-#define _DPMSPROTO_H_
-
-#include <X11/extensions/dpmsconst.h>
-
-#define X_DPMSGetVersion 0
-#define X_DPMSCapable 1
-#define X_DPMSGetTimeouts 2
-#define X_DPMSSetTimeouts 3
-#define X_DPMSEnable 4
-#define X_DPMSDisable 5
-#define X_DPMSForceLevel 6
-#define X_DPMSInfo 7
-
-#define DPMSNumberEvents 0
-
-#define DPMSNumberErrors 0
-
-
-typedef struct {
- CARD8 reqType; /* always DPMSCode */
- CARD8 dpmsReqType; /* always X_DPMSGetVersion */
- CARD16 length B16;
- CARD16 majorVersion B16;
- CARD16 minorVersion B16;
-} xDPMSGetVersionReq;
-#define sz_xDPMSGetVersionReq 8
-
-typedef struct {
- BYTE type; /* X_Reply */
- CARD8 pad0;
- CARD16 sequenceNumber B16;
- CARD32 length B32;
- CARD16 majorVersion B16;
- CARD16 minorVersion B16;
- CARD32 pad1 B32;
- CARD32 pad2 B32;
- CARD32 pad3 B32;
- CARD32 pad4 B32;
- CARD32 pad5 B32;
-} xDPMSGetVersionReply;
-#define sz_xDPMSGetVersionReply 32
-
-typedef struct {
- CARD8 reqType; /* always DPMSCode */
- CARD8 dpmsReqType; /* always X_DPMSCapable */
- CARD16 length B16;
-} xDPMSCapableReq;
-#define sz_xDPMSCapableReq 4
-
-typedef struct {
- BYTE type; /* X_Reply */
- CARD8 pad0;
- CARD16 sequenceNumber B16;
- CARD32 length B32;
- BOOL capable;
- CARD8 pad1;
- CARD16 pad2 B16;
- CARD32 pad3 B32;
- CARD32 pad4 B32;
- CARD32 pad5 B32;
- CARD32 pad6 B32;
- CARD32 pad7 B32;
-} xDPMSCapableReply;
-#define sz_xDPMSCapableReply 32
-
-typedef struct {
- CARD8 reqType; /* always DPMSCode */
- CARD8 dpmsReqType; /* always X_DPMSGetTimeouts */
- CARD16 length B16;
-} xDPMSGetTimeoutsReq;
-#define sz_xDPMSGetTimeoutsReq 4
-
-typedef struct {
- BYTE type; /* X_Reply */
- CARD8 pad0;
- CARD16 sequenceNumber B16;
- CARD32 length B32;
- CARD16 standby B16;
- CARD16 suspend B16;
- CARD16 off B16;
- CARD16 pad1 B16;
- CARD32 pad2 B32;
- CARD32 pad3 B32;
- CARD32 pad4 B32;
- CARD32 pad5 B32;
-} xDPMSGetTimeoutsReply;
-#define sz_xDPMSGetTimeoutsReply 32
-
-typedef struct {
- CARD8 reqType; /* always DPMSCode */
- CARD8 dpmsReqType; /* always X_DPMSSetTimeouts */
- CARD16 length B16;
- CARD16 standby B16;
- CARD16 suspend B16;
- CARD16 off B16;
- CARD16 pad0 B16;
-} xDPMSSetTimeoutsReq;
-#define sz_xDPMSSetTimeoutsReq 12
-
-typedef struct {
- CARD8 reqType; /* always DPMSCode */
- CARD8 dpmsReqType; /* always X_DPMSEnable */
- CARD16 length B16;
-} xDPMSEnableReq;
-#define sz_xDPMSEnableReq 4
-
-typedef struct {
- CARD8 reqType; /* always DPMSCode */
- CARD8 dpmsReqType; /* always X_DPMSDisable */
- CARD16 length B16;
-} xDPMSDisableReq;
-#define sz_xDPMSDisableReq 4
-
-typedef struct {
- CARD8 reqType; /* always DPMSCode */
- CARD8 dpmsReqType; /* always X_DPMSForceLevel */
- CARD16 length B16;
- CARD16 level B16; /* power level requested */
- CARD16 pad0 B16;
-} xDPMSForceLevelReq;
-#define sz_xDPMSForceLevelReq 8
-
-typedef struct {
- CARD8 reqType; /* always DPMSCode */
- CARD8 dpmsReqType; /* always X_DPMSInfo */
- CARD16 length B16;
-} xDPMSInfoReq;
-#define sz_xDPMSInfoReq 4
-
-typedef struct {
- BYTE type; /* X_Reply */
- CARD8 pad0;
- CARD16 sequenceNumber B16;
- CARD32 length B32;
- CARD16 power_level B16;
- BOOL state;
- CARD8 pad1;
- CARD32 pad2 B32;
- CARD32 pad3 B32;
- CARD32 pad4 B32;
- CARD32 pad5 B32;
- CARD32 pad6 B32;
-} xDPMSInfoReply;
-#define sz_xDPMSInfoReply 32
-
-#endif /* _DPMSPROTO_H_ */
+/*****************************************************************
+
+Copyright (c) 1996 Digital Equipment Corporation, Maynard, Massachusetts.
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software.
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+DIGITAL EQUIPMENT CORPORATION BE LIABLE FOR ANY CLAIM, DAMAGES, INCLUDING,
+BUT NOT LIMITED TO CONSEQUENTIAL OR INCIDENTAL DAMAGES, OR OTHER LIABILITY,
+WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR
+IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of Digital Equipment Corporation
+shall not be used in advertising or otherwise to promote the sale, use or other
+dealings in this Software without prior written authorization from Digital
+Equipment Corporation.
+
+******************************************************************/
+
+#ifndef _DPMSPROTO_H_
+#define _DPMSPROTO_H_
+
+#include <X11/extensions/dpmsconst.h>
+
+#define X_DPMSGetVersion 0
+#define X_DPMSCapable 1
+#define X_DPMSGetTimeouts 2
+#define X_DPMSSetTimeouts 3
+#define X_DPMSEnable 4
+#define X_DPMSDisable 5
+#define X_DPMSForceLevel 6
+#define X_DPMSInfo 7
+
+#define DPMSNumberEvents 0
+
+#define DPMSNumberErrors 0
+
+
+typedef struct {
+ CARD8 reqType; /* always DPMSCode */
+ CARD8 dpmsReqType; /* always X_DPMSGetVersion */
+ CARD16 length B16;
+ CARD16 majorVersion B16;
+ CARD16 minorVersion B16;
+} xDPMSGetVersionReq;
+#define sz_xDPMSGetVersionReq 8
+
+typedef struct {
+ BYTE type; /* X_Reply */
+ CARD8 pad0;
+ CARD16 sequenceNumber B16;
+ CARD32 length B32;
+ CARD16 majorVersion B16;
+ CARD16 minorVersion B16;
+ CARD32 pad1 B32;
+ CARD32 pad2 B32;
+ CARD32 pad3 B32;
+ CARD32 pad4 B32;
+ CARD32 pad5 B32;
+} xDPMSGetVersionReply;
+#define sz_xDPMSGetVersionReply 32
+
+typedef struct {
+ CARD8 reqType; /* always DPMSCode */
+ CARD8 dpmsReqType; /* always X_DPMSCapable */
+ CARD16 length B16;
+} xDPMSCapableReq;
+#define sz_xDPMSCapableReq 4
+
+typedef struct {
+ BYTE type; /* X_Reply */
+ CARD8 pad0;
+ CARD16 sequenceNumber B16;
+ CARD32 length B32;
+ BOOL capable;
+ CARD8 pad1;
+ CARD16 pad2 B16;
+ CARD32 pad3 B32;
+ CARD32 pad4 B32;
+ CARD32 pad5 B32;
+ CARD32 pad6 B32;
+ CARD32 pad7 B32;
+} xDPMSCapableReply;
+#define sz_xDPMSCapableReply 32
+
+typedef struct {
+ CARD8 reqType; /* always DPMSCode */
+ CARD8 dpmsReqType; /* always X_DPMSGetTimeouts */
+ CARD16 length B16;
+} xDPMSGetTimeoutsReq;
+#define sz_xDPMSGetTimeoutsReq 4
+
+typedef struct {
+ BYTE type; /* X_Reply */
+ CARD8 pad0;
+ CARD16 sequenceNumber B16;
+ CARD32 length B32;
+ CARD16 standby B16;
+ CARD16 suspend B16;
+ CARD16 off B16;
+ CARD16 pad1 B16;
+ CARD32 pad2 B32;
+ CARD32 pad3 B32;
+ CARD32 pad4 B32;
+ CARD32 pad5 B32;
+} xDPMSGetTimeoutsReply;
+#define sz_xDPMSGetTimeoutsReply 32
+
+typedef struct {
+ CARD8 reqType; /* always DPMSCode */
+ CARD8 dpmsReqType; /* always X_DPMSSetTimeouts */
+ CARD16 length B16;
+ CARD16 standby B16;
+ CARD16 suspend B16;
+ CARD16 off B16;
+ CARD16 pad0 B16;
+} xDPMSSetTimeoutsReq;
+#define sz_xDPMSSetTimeoutsReq 12
+
+typedef struct {
+ CARD8 reqType; /* always DPMSCode */
+ CARD8 dpmsReqType; /* always X_DPMSEnable */
+ CARD16 length B16;
+} xDPMSEnableReq;
+#define sz_xDPMSEnableReq 4
+
+typedef struct {
+ CARD8 reqType; /* always DPMSCode */
+ CARD8 dpmsReqType; /* always X_DPMSDisable */
+ CARD16 length B16;
+} xDPMSDisableReq;
+#define sz_xDPMSDisableReq 4
+
+typedef struct {
+ CARD8 reqType; /* always DPMSCode */
+ CARD8 dpmsReqType; /* always X_DPMSForceLevel */
+ CARD16 length B16;
+ CARD16 level B16; /* power level requested */
+ CARD16 pad0 B16;
+} xDPMSForceLevelReq;
+#define sz_xDPMSForceLevelReq 8
+
+typedef struct {
+ CARD8 reqType; /* always DPMSCode */
+ CARD8 dpmsReqType; /* always X_DPMSInfo */
+ CARD16 length B16;
+} xDPMSInfoReq;
+#define sz_xDPMSInfoReq 4
+
+typedef struct {
+ BYTE type; /* X_Reply */
+ CARD8 pad0;
+ CARD16 sequenceNumber B16;
+ CARD32 length B32;
+ CARD16 power_level B16;
+ BOOL state;
+ CARD8 pad1;
+ CARD32 pad2 B32;
+ CARD32 pad3 B32;
+ CARD32 pad4 B32;
+ CARD32 pad5 B32;
+ CARD32 pad6 B32;
+} xDPMSInfoReply;
+#define sz_xDPMSInfoReply 32
+
+#endif /* _DPMSPROTO_H_ */
diff --git a/X11/extensions/ge.h b/X11/extensions/ge.h
index fe458fa6c..aca1d8a24 100644
--- a/X11/extensions/ge.h
+++ b/X11/extensions/ge.h
@@ -1,60 +1,60 @@
-/*
- * Copyright © 2007-2008 Peter Hutterer
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice (including the next
- * paragraph) shall be included in all copies or substantial portions of the
- * Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
- * DEALINGS IN THE SOFTWARE.
- *
- * Authors: Peter Hutterer, University of South Australia, NICTA
- *
- */
-
-#ifndef _GE_H_
-#define _GE_H_
-
-#define GE_NAME "Generic Event Extension"
-#define GE_MAJOR 1
-#define GE_MINOR 0
-
-/*********************************************************
- *
- * Requests
- *
- */
-
-#define X_GEQueryVersion 0
-
-#define GENumberRequests (X_GEQueryVersion + 1)
-
-/*********************************************************
- *
- * Events
- *
- */
-
-#define GENumberEvents 0
-
-/*********************************************************
- *
- * Errors
- *
- */
-
-#define GENumberErrors 0
-
-#endif /* _GE_H_ */
+/*
+ * Copyright © 2007-2008 Peter Hutterer
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice (including the next
+ * paragraph) shall be included in all copies or substantial portions of the
+ * Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+ * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+ * DEALINGS IN THE SOFTWARE.
+ *
+ * Authors: Peter Hutterer, University of South Australia, NICTA
+ *
+ */
+
+#ifndef _GE_H_
+#define _GE_H_
+
+#define GE_NAME "Generic Event Extension"
+#define GE_MAJOR 1
+#define GE_MINOR 0
+
+/*********************************************************
+ *
+ * Requests
+ *
+ */
+
+#define X_GEQueryVersion 0
+
+#define GENumberRequests (X_GEQueryVersion + 1)
+
+/*********************************************************
+ *
+ * Events
+ *
+ */
+
+#define GENumberEvents 0
+
+/*********************************************************
+ *
+ * Errors
+ *
+ */
+
+#define GENumberErrors 0
+
+#endif /* _GE_H_ */
diff --git a/X11/extensions/geproto.h b/X11/extensions/geproto.h
index 7302275e4..c8860dd87 100644
--- a/X11/extensions/geproto.h
+++ b/X11/extensions/geproto.h
@@ -1,85 +1,85 @@
-/*
- * Copyright © 2007-2008 Peter Hutterer
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice (including the next
- * paragraph) shall be included in all copies or substantial portions of the
- * Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
- * DEALINGS IN THE SOFTWARE.
- *
- * Authors: Peter Hutterer, University of South Australia, NICTA
- *
- */
-
-#ifndef _GEPROTO_H_
-#define _GEPROTO_H_
-
-#include<X11/Xproto.h>
-#include<X11/X.h>
-#include<X11/extensions/ge.h>
-
-
-/*********************************************************
- *
- * Protocol request constants
- *
- */
-
-#define X_GEGetExtensionVersion 1
-
-/*********************************************************
- *
- * XGE protocol requests/replies
- *
- */
-
-/* generic request */
-typedef struct {
- CARD8 reqType;
- CARD8 ReqType;
- CARD16 length B16;
-} xGEReq;
-
-
-/* QueryVersion */
-typedef struct {
- CARD8 reqType; /* input extension major code */
- CARD8 ReqType; /* always X_GEQueryVersion */
- CARD16 length B16;
- CARD16 majorVersion B16;
- CARD16 minorVersion B16;
-} xGEQueryVersionReq;
-
-#define sz_xGEQueryVersionReq 8
-
-typedef struct {
- CARD8 repType; /* X_Reply */
- CARD8 RepType; /* always X_GEQueryVersion */
- CARD16 sequenceNumber B16;
- CARD32 length B32;
- CARD16 majorVersion B16;
- CARD16 minorVersion B16;
- CARD32 pad00 B32;
- CARD32 pad01 B32;
- CARD32 pad02 B32;
- CARD32 pad03 B32;
- CARD32 pad04 B32;
-} xGEQueryVersionReply;
-
-#define sz_xGEQueryVersionReply 32
-
-#endif /* _GEPROTO_H_ */
-
+/*
+ * Copyright © 2007-2008 Peter Hutterer
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice (including the next
+ * paragraph) shall be included in all copies or substantial portions of the
+ * Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+ * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+ * DEALINGS IN THE SOFTWARE.
+ *
+ * Authors: Peter Hutterer, University of South Australia, NICTA
+ *
+ */
+
+#ifndef _GEPROTO_H_
+#define _GEPROTO_H_
+
+#include<X11/Xproto.h>
+#include<X11/X.h>
+#include<X11/extensions/ge.h>
+
+
+/*********************************************************
+ *
+ * Protocol request constants
+ *
+ */
+
+#define X_GEGetExtensionVersion 1
+
+/*********************************************************
+ *
+ * XGE protocol requests/replies
+ *
+ */
+
+/* generic request */
+typedef struct {
+ CARD8 reqType;
+ CARD8 ReqType;
+ CARD16 length B16;
+} xGEReq;
+
+
+/* QueryVersion */
+typedef struct {
+ CARD8 reqType; /* input extension major code */
+ CARD8 ReqType; /* always X_GEQueryVersion */
+ CARD16 length B16;
+ CARD16 majorVersion B16;
+ CARD16 minorVersion B16;
+} xGEQueryVersionReq;
+
+#define sz_xGEQueryVersionReq 8
+
+typedef struct {
+ CARD8 repType; /* X_Reply */
+ CARD8 RepType; /* always X_GEQueryVersion */
+ CARD16 sequenceNumber B16;
+ CARD32 length B32;
+ CARD16 majorVersion B16;
+ CARD16 minorVersion B16;
+ CARD32 pad00 B32;
+ CARD32 pad01 B32;
+ CARD32 pad02 B32;
+ CARD32 pad03 B32;
+ CARD32 pad04 B32;
+} xGEQueryVersionReply;
+
+#define sz_xGEQueryVersionReply 32
+
+#endif /* _GEPROTO_H_ */
+
diff --git a/X11/extensions/lbx.h b/X11/extensions/lbx.h
index db19c91a8..ecd24ff1f 100644
--- a/X11/extensions/lbx.h
+++ b/X11/extensions/lbx.h
@@ -1,73 +1,73 @@
-/*
- * Copyright 1992 Network Computing Devices
- *
- * Permission to use, copy, modify, distribute, and sell this software and its
- * documentation for any purpose is hereby granted without fee, provided that
- * the above copyright notice appear in all copies and that both that
- * copyright notice and this permission notice appear in supporting
- * documentation, and that the name of NCD. not be used in advertising or
- * publicity pertaining to distribution of the software without specific,
- * written prior permission. NCD. makes no representations about the
- * suitability of this software for any purpose. It is provided "as is"
- * without express or implied warranty.
- *
- * NCD. DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL NCD.
- * BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
- * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION
- * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
- * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
- *
- */
-
-#ifndef _LBX_H_
-#define _LBX_H_
-
-#define LBXNAME "LBX"
-
-#define LBX_MAJOR_VERSION 1
-#define LBX_MINOR_VERSION 0
-
-#define LbxNumberReqs 44
-#define LbxEvent 0
-#define LbxQuickMotionDeltaEvent 1
-#define LbxNumberEvents 2
-
-/* This is always the master client */
-#define LbxMasterClientIndex 0
-
-/* LbxEvent lbxType sub-fields */
-#define LbxSwitchEvent 0
-#define LbxCloseEvent 1
-#define LbxDeltaEvent 2
-#define LbxInvalidateTagEvent 3
-#define LbxSendTagDataEvent 4
-#define LbxListenToOne 5
-#define LbxListenToAll 6
-#define LbxMotionDeltaEvent 7
-#define LbxReleaseCmapEvent 8
-#define LbxFreeCellsEvent 9
-
-/*
- * Lbx image compression methods
- *
- * No compression is always assigned the value of 0.
- *
- * The rest of the compression method opcodes are assigned dynamically
- * at option negotiation time.
- */
-
-#define LbxImageCompressNone 0
-
-
-#define BadLbxClient 0
-#define LbxNumberErrors (BadLbxClient + 1)
-
-/* tagged data types */
-#define LbxTagTypeModmap 1
-#define LbxTagTypeKeymap 2
-#define LbxTagTypeProperty 3
-#define LbxTagTypeFont 4
-#define LbxTagTypeConnInfo 5
-
-#endif
+/*
+ * Copyright 1992 Network Computing Devices
+ *
+ * Permission to use, copy, modify, distribute, and sell this software and its
+ * documentation for any purpose is hereby granted without fee, provided that
+ * the above copyright notice appear in all copies and that both that
+ * copyright notice and this permission notice appear in supporting
+ * documentation, and that the name of NCD. not be used in advertising or
+ * publicity pertaining to distribution of the software without specific,
+ * written prior permission. NCD. makes no representations about the
+ * suitability of this software for any purpose. It is provided "as is"
+ * without express or implied warranty.
+ *
+ * NCD. DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL NCD.
+ * BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION
+ * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
+ * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+ *
+ */
+
+#ifndef _LBX_H_
+#define _LBX_H_
+
+#define LBXNAME "LBX"
+
+#define LBX_MAJOR_VERSION 1
+#define LBX_MINOR_VERSION 0
+
+#define LbxNumberReqs 44
+#define LbxEvent 0
+#define LbxQuickMotionDeltaEvent 1
+#define LbxNumberEvents 2
+
+/* This is always the master client */
+#define LbxMasterClientIndex 0
+
+/* LbxEvent lbxType sub-fields */
+#define LbxSwitchEvent 0
+#define LbxCloseEvent 1
+#define LbxDeltaEvent 2
+#define LbxInvalidateTagEvent 3
+#define LbxSendTagDataEvent 4
+#define LbxListenToOne 5
+#define LbxListenToAll 6
+#define LbxMotionDeltaEvent 7
+#define LbxReleaseCmapEvent 8
+#define LbxFreeCellsEvent 9
+
+/*
+ * Lbx image compression methods
+ *
+ * No compression is always assigned the value of 0.
+ *
+ * The rest of the compression method opcodes are assigned dynamically
+ * at option negotiation time.
+ */
+
+#define LbxImageCompressNone 0
+
+
+#define BadLbxClient 0
+#define LbxNumberErrors (BadLbxClient + 1)
+
+/* tagged data types */
+#define LbxTagTypeModmap 1
+#define LbxTagTypeKeymap 2
+#define LbxTagTypeProperty 3
+#define LbxTagTypeFont 4
+#define LbxTagTypeConnInfo 5
+
+#endif
diff --git a/X11/extensions/lbxproto.h b/X11/extensions/lbxproto.h
index fdd8b4b64..a1ae62ba4 100644
--- a/X11/extensions/lbxproto.h
+++ b/X11/extensions/lbxproto.h
@@ -1,975 +1,975 @@
-/*
- * Copyright 1992 Network Computing Devices
- *
- * Permission to use, copy, modify, distribute, and sell this software and its
- * documentation for any purpose is hereby granted without fee, provided that
- * the above copyright notice appear in all copies and that both that
- * copyright notice and this permission notice appear in supporting
- * documentation, and that the name of NCD. not be used in advertising or
- * publicity pertaining to distribution of the software without specific,
- * written prior permission. NCD. makes no representations about the
- * suitability of this software for any purpose. It is provided "as is"
- * without express or implied warranty.
- *
- * NCD. DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL NCD.
- * BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
- * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION
- * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
- * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
- *
- */
-
-#ifndef _LBXPROTO_H_
-#define _LBXPROTO_H_
-
-#include <X11/extensions/lbx.h>
-/*
- * NOTE: any changes or additions to the opcodes needs to be reflected
- * in the lbxCacheable array in Xserver/lbx/lbxmain.c
- */
-
-#define X_LbxQueryVersion 0
-#define X_LbxStartProxy 1
-#define X_LbxStopProxy 2
-#define X_LbxSwitch 3
-#define X_LbxNewClient 4
-#define X_LbxCloseClient 5
-#define X_LbxModifySequence 6
-#define X_LbxAllowMotion 7
-#define X_LbxIncrementPixel 8
-#define X_LbxDelta 9
-#define X_LbxGetModifierMapping 10
-#define X_LbxInvalidateTag 12
-#define X_LbxPolyPoint 13
-#define X_LbxPolyLine 14
-#define X_LbxPolySegment 15
-#define X_LbxPolyRectangle 16
-#define X_LbxPolyArc 17
-#define X_LbxFillPoly 18
-#define X_LbxPolyFillRectangle 19
-#define X_LbxPolyFillArc 20
-#define X_LbxGetKeyboardMapping 21
-#define X_LbxQueryFont 22
-#define X_LbxChangeProperty 23
-#define X_LbxGetProperty 24
-#define X_LbxTagData 25
-
-#define X_LbxCopyArea 26
-#define X_LbxCopyPlane 27
-#define X_LbxPolyText8 28
-#define X_LbxPolyText16 29
-#define X_LbxImageText8 30
-#define X_LbxImageText16 31
-
-#define X_LbxQueryExtension 32
-#define X_LbxPutImage 33
-#define X_LbxGetImage 34
-
-#define X_LbxBeginLargeRequest 35
-#define X_LbxLargeRequestData 36
-#define X_LbxEndLargeRequest 37
-
-#define X_LbxInternAtoms 38
-#define X_LbxGetWinAttrAndGeom 39
-
-#define X_LbxGrabCmap 40
-#define X_LbxReleaseCmap 41
-#define X_LbxAllocColor 42
-
-#define X_LbxSync 43
-
-/*
- * Redefine some basic types used by structures defined herein. This removes
- * any possibility on 64-bit architectures of one entity viewing communicated
- * data as 32-bit quantities and another entity viewing the same data as 64-bit
- * quantities.
- */
-#define XID CARD32
-#define Atom CARD32
-#define Colormap CARD32
-#define Drawable CARD32
-#define VisualID CARD32
-#define Window CARD32
-
-typedef struct {
- BOOL success; /* TRUE */
- BOOL changeType;
- CARD16 majorVersion B16,
- minorVersion B16;
- CARD16 length B16; /* 1/4 additional bytes in setup info */
- CARD32 tag B32;
-} xLbxConnSetupPrefix;
-
-typedef struct _LbxQueryVersion {
- CARD8 reqType; /* always LbxReqCode */
- CARD8 lbxReqType; /* always X_LbxQueryVersion */
- CARD16 length B16;
-} xLbxQueryVersionReq;
-#define sz_xLbxQueryVersionReq 4
-
-typedef struct {
- BYTE type; /* X_Reply */
- CARD8 unused;
- CARD16 sequenceNumber B16;
- CARD32 length B32;
- CARD16 majorVersion B16; /* major version of LBX protocol */
- CARD16 minorVersion B16; /* minor version of LBX protocol */
- CARD32 pad0 B32;
- CARD32 pad1 B32;
- CARD32 pad2 B32;
- CARD32 pad3 B32;
- CARD32 pad4 B32;
-} xLbxQueryVersionReply;
-#define sz_xLbxQueryVersionReply 32
-
-typedef struct _LbxStartProxy {
- CARD8 reqType; /* always LbxReqCode */
- CARD8 lbxReqType; /* always X_LbxStartProxy */
- CARD16 length B16;
-} xLbxStartProxyReq;
-#define sz_xLbxStartProxyReq 4
-
-typedef struct _LbxStopProxy {
- CARD8 reqType; /* always LbxReqCode */
- CARD8 lbxReqType; /* always X_LbxStopProxy */
- CARD16 length B16;
-} xLbxStopProxyReq;
-#define sz_xLbxStopProxyReq 4
-
-typedef struct _LbxSwitch {
- CARD8 reqType; /* always LbxReqCode */
- CARD8 lbxReqType; /* always X_LbxSwitch */
- CARD16 length B16;
- CARD32 client B32; /* new client */
-} xLbxSwitchReq;
-#define sz_xLbxSwitchReq 8
-
-typedef struct _LbxNewClient {
- CARD8 reqType; /* always LbxReqCode */
- CARD8 lbxReqType; /* always X_LbxNewClient */
- CARD16 length B16;
- CARD32 client B32; /* new client */
-} xLbxNewClientReq;
-#define sz_xLbxNewClientReq 8
-
-typedef struct _LbxCloseClient {
- CARD8 reqType; /* always LbxReqCode */
- CARD8 lbxReqType; /* always X_LbxCloseClient */
- CARD16 length B16;
- CARD32 client B32; /* new client */
-} xLbxCloseClientReq;
-#define sz_xLbxCloseClientReq 8
-
-typedef struct _LbxModifySequence {
- CARD8 reqType; /* always LbxReqCode */
- CARD8 lbxReqType; /* always X_LbxModifySequence */
- CARD16 length B16;
- CARD32 adjust B32;
-} xLbxModifySequenceReq;
-#define sz_xLbxModifySequenceReq 8
-
-typedef struct _LbxAllowMotion {
- CARD8 reqType; /* always LbxReqCode */
- CARD8 lbxReqType; /* always X_LbxAllowMotion */
- CARD16 length B16;
- CARD32 num B32;
-} xLbxAllowMotionReq;
-#define sz_xLbxAllowMotionReq 8
-
-typedef struct {
- CARD8 reqType; /* always LbxReqCode */
- CARD8 lbxReqType; /* always X_LbxGrabCmap */
- CARD16 length B16;
- Colormap cmap B32;
-} xLbxGrabCmapReq;
-#define sz_xLbxGrabCmapReq 8
-
-#define LBX_SMART_GRAB 0x80
-#define LBX_AUTO_RELEASE 0x40
-#define LBX_3CHANNELS 0x20
-#define LBX_2BYTE_PIXELS 0x10
-#define LBX_RGB_BITS_MASK 0x0f
-
-#define LBX_LIST_END 0
-#define LBX_PIXEL_PRIVATE 1
-#define LBX_PIXEL_SHARED 2
-#define LBX_PIXEL_RANGE_PRIVATE 3
-#define LBX_PIXEL_RANGE_SHARED 4
-#define LBX_NEXT_CHANNEL 5
-
-typedef struct {
- BYTE type; /* X_Reply */
- CARD8 flags;
- CARD16 sequenceNumber B16;
- CARD32 length B32;
- CARD32 pad0 B16;
- CARD32 pad1 B32;
- CARD32 pad2 B32;
- CARD32 pad3 B32;
- CARD32 pad4 B32;
- CARD32 pad5 B16;
-} xLbxGrabCmapReply;
-#define sz_xLbxGrabCmapReply 32
-#define sz_xLbxGrabCmapReplyHdr 8
-
-
-typedef struct {
- CARD8 reqType; /* always LbxReqCode */
- CARD8 lbxReqType; /* always X_LbxReleaseCmap */
- CARD16 length B16;
- Colormap cmap B32;
-} xLbxReleaseCmapReq;
-#define sz_xLbxReleaseCmapReq 8
-
-typedef struct {
- CARD8 reqType; /* always LbxReqCode */
- CARD8 lbxReqType; /* always X_LbxAllocColor */
- CARD16 length B16;
- Colormap cmap B32;
- CARD32 pixel B32;
- CARD16 red B16, green B16, blue B16;
- CARD16 pad B16;
-} xLbxAllocColorReq;
-#define sz_xLbxAllocColorReq 20
-
-typedef struct _LbxIncrementPixel {
- CARD8 reqType; /* always LbxReqCode */
- CARD8 lbxReqType; /* always X_LbxIncrementPixel */
- CARD16 length B16;
- CARD32 cmap B32;
- CARD32 pixel B32;
-} xLbxIncrementPixelReq;
-#define sz_xLbxIncrementPixelReq 12
-
-typedef struct _LbxDelta {
- CARD8 reqType; /* always LbxReqCode */
- CARD8 lbxReqType; /* always X_LbxDelta */
- CARD16 length B16;
- CARD8 diffs; /* number of diffs */
- CARD8 cindex; /* cache index */
- /* list of diffs follows */
-} xLbxDeltaReq;
-#define sz_xLbxDeltaReq 6
-
-typedef struct _LbxGetModifierMapping {
- CARD8 reqType; /* always LbxReqCode */
- CARD8 lbxReqType; /* always X_LbxGetModifierMapping */
- CARD16 length B16;
-} xLbxGetModifierMappingReq;
-#define sz_xLbxGetModifierMappingReq 4
-
-typedef struct {
- BYTE type; /* X_Reply */
- CARD8 keyspermod;
- CARD16 sequenceNumber B16;
- CARD32 length B32;
- CARD32 tag B32;
- CARD32 pad0 B32;
- CARD32 pad1 B32;
- CARD32 pad2 B32;
- CARD32 pad3 B32;
- CARD32 pad4 B32;
-} xLbxGetModifierMappingReply;
-#define sz_xLbxGetModifierMappingReply 32
-
-typedef struct _LbxGetKeyboardMapping {
- CARD8 reqType; /* always LbxReqCode */
- CARD8 lbxReqType; /* always X_LbxGetKeyboardMapping */
- CARD16 length B16;
- KeyCode firstKeyCode;
- CARD8 count;
- CARD16 pad1 B16;
-} xLbxGetKeyboardMappingReq;
-#define sz_xLbxGetKeyboardMappingReq 8
-
-typedef struct {
- BYTE type; /* X_Reply */
- CARD8 keysperkeycode;
- CARD16 sequenceNumber B16;
- CARD32 length B32;
- CARD32 tag B32;
- CARD32 pad0 B32;
- CARD32 pad1 B32;
- CARD32 pad2 B32;
- CARD32 pad3 B32;
- CARD32 pad4 B32;
-} xLbxGetKeyboardMappingReply;
-#define sz_xLbxGetKeyboardMappingReply 32
-
-typedef struct _LbxQueryFont {
- CARD8 reqType; /* always LbxReqCode */
- CARD8 lbxReqType; /* always X_LbxQueryFont */
- CARD16 length B16;
- CARD32 fid B32;
-} xLbxQueryFontReq;
-#define sz_xLbxQueryFontReq 8
-
-typedef struct _LbxInternAtoms {
- CARD8 reqType; /* always LbxReqCode */
- CARD8 lbxReqType; /* always X_LbxInternAtoms */
- CARD16 length B16;
- CARD16 num B16;
-} xLbxInternAtomsReq;
-#define sz_xLbxInternAtomsReq 6
-
-typedef struct {
- BYTE type; /* X_Reply */
- CARD8 unused;
- CARD16 sequenceNumber B16;
- CARD32 length B32;
- CARD32 atomsStart B32;
- CARD32 pad0 B32;
- CARD32 pad1 B32;
- CARD32 pad2 B32;
- CARD32 pad3 B32;
- CARD32 pad4 B32;
-} xLbxInternAtomsReply;
-#define sz_xLbxInternAtomsReply 32
-#define sz_xLbxInternAtomsReplyHdr 8
-
-
-typedef struct _LbxGetWinAttrAndGeom {
- CARD8 reqType; /* always LbxReqCode */
- CARD8 lbxReqType; /* always X_LbxGetWinAttrAndGeom */
- CARD16 length B16;
- CARD32 id B32; /* window id */
-} xLbxGetWinAttrAndGeomReq;
-#define sz_xLbxGetWinAttrAndGeomReq 8
-
-typedef struct {
- BYTE type; /* X_Reply */
- CARD8 backingStore;
- CARD16 sequenceNumber B16;
- CARD32 length B32; /* NOT 0; this is an extra-large reply */
- VisualID visualID B32;
-#if defined(__cplusplus) || defined(c_plusplus)
- CARD16 c_class B16;
-#else
- CARD16 class B16;
-#endif
- CARD8 bitGravity;
- CARD8 winGravity;
- CARD32 backingBitPlanes B32;
- CARD32 backingPixel B32;
- BOOL saveUnder;
- BOOL mapInstalled;
- CARD8 mapState;
- BOOL override;
- Colormap colormap B32;
- CARD32 allEventMasks B32;
- CARD32 yourEventMask B32;
- CARD16 doNotPropagateMask B16;
- CARD16 pad1 B16;
- Window root B32;
- INT16 x B16, y B16;
- CARD16 width B16, height B16;
- CARD16 borderWidth B16;
- CARD8 depth;
- CARD8 pad2;
-} xLbxGetWinAttrAndGeomReply;
-#define sz_xLbxGetWinAttrAndGeomReply 60
-
-
-typedef struct {
- CARD8 reqType; /* always LbxReqCode */
- CARD8 lbxReqType; /* always X_LbxSync */
- CARD16 length B16;
-} xLbxSyncReq;
-#define sz_xLbxSyncReq 4
-
-typedef struct {
- BYTE type; /* X_Reply */
- CARD8 pad0;
- CARD16 sequenceNumber B16;
- CARD32 length B32;
- CARD32 pad1 B32;
- CARD32 pad2 B32;
- CARD32 pad3 B32;
- CARD32 pad4 B32;
- CARD32 pad5 B32;
- CARD32 pad6 B32;
-} xLbxSyncReply;
-#define sz_xLbxSyncReply 32
-
-
-/* an LBX squished charinfo packs the data in a CARD32 as follows */
-#define LBX_WIDTH_SHIFT 26
-#define LBX_LEFT_SHIFT 20
-#define LBX_RIGHT_SHIFT 13
-#define LBX_ASCENT_SHIFT 7
-#define LBX_DESCENT_SHIFT 0
-
-#define LBX_WIDTH_BITS 6
-#define LBX_LEFT_BITS 6
-#define LBX_RIGHT_BITS 7
-#define LBX_ASCENT_BITS 6
-#define LBX_DESCENT_BITS 7
-
-#define LBX_WIDTH_MASK 0xfc000000
-#define LBX_LEFT_MASK 0x03f00000
-#define LBX_RIGHT_MASK 0x000fe000
-#define LBX_ASCENT_MASK 0x00001f80
-#define LBX_DESCENT_MASK 0x0000007f
-
-#define LBX_MASK_BITS(val, n) ((unsigned int) ((val) & ((1 << (n)) - 1)))
-
-typedef struct {
- CARD32 metrics B32;
-} xLbxCharInfo;
-
-/* note that this is identical to xQueryFontReply except for missing
- * first 2 words
- */
-typedef struct {
- xCharInfo minBounds;
-/* XXX do we need to leave this gunk? */
-#ifndef WORD64
- CARD32 walign1 B32;
-#endif
- xCharInfo maxBounds;
-#ifndef WORD64
- CARD32 walign2 B32;
-#endif
- CARD16 minCharOrByte2 B16, maxCharOrByte2 B16;
- CARD16 defaultChar B16;
- CARD16 nFontProps B16; /* followed by this many xFontProp structures */
- CARD8 drawDirection;
- CARD8 minByte1, maxByte1;
- BOOL allCharsExist;
- INT16 fontAscent B16, fontDescent B16;
- CARD32 nCharInfos B32; /* followed by this many xLbxCharInfo structures */
-} xLbxFontInfo;
-
-typedef struct {
- BYTE type; /* X_Reply */
- CARD8 compression;
- CARD16 sequenceNumber B16;
- CARD32 length B32;
- CARD32 tag B32;
- CARD32 pad0 B32;
- CARD32 pad1 B32;
- CARD32 pad2 B32;
- CARD32 pad3 B32;
- CARD32 pad4 B32;
- /* X_QueryFont sticks much of the data in the base reply packet,
- * but we hope that it won't be needed, (and it won't fit in 32 bytes
- * with the tag anyways)
- *
- * if any additional data is needed, its sent in a xLbxFontInfo
- */
-} xLbxQueryFontReply;
-#define sz_xLbxQueryFontReply 32
-
-typedef struct _LbxChangeProperty {
- CARD8 reqType; /* always LbxReqCode */
- CARD8 lbxReqType; /* always X_LbxChangeProperty */
- CARD16 length B16;
- Window window B32;
- Atom property B32;
- Atom type B32;
- CARD8 format;
- CARD8 mode;
- BYTE pad[2];
- CARD32 nUnits B32;
-} xLbxChangePropertyReq;
-#define sz_xLbxChangePropertyReq 24
-
-typedef struct {
- BYTE type; /* X_Reply */
- CARD8 pad;
- CARD16 sequenceNumber B16;
- CARD32 length B32;
- CARD32 tag B32;
- CARD32 pad0 B32;
- CARD32 pad1 B32;
- CARD32 pad2 B32;
- CARD32 pad3 B32;
- CARD32 pad4 B32;
-} xLbxChangePropertyReply;
-#define sz_xLbxChangePropertyReply 32
-
-typedef struct _LbxGetProperty {
- CARD8 reqType; /* always LbxReqCode */
- CARD8 lbxReqType; /* always X_LbxGetProperty */
- CARD16 length B16;
- Window window B32;
- Atom property B32;
- Atom type B32;
- CARD8 delete;
- BYTE pad[3];
- CARD32 longOffset B32;
- CARD32 longLength B32;
-} xLbxGetPropertyReq;
-#define sz_xLbxGetPropertyReq 28
-
-typedef struct {
- BYTE type; /* X_Reply */
- CARD8 format;
- CARD16 sequenceNumber B16;
- CARD32 length B32;
- Atom propertyType B32;
- CARD32 bytesAfter B32;
- CARD32 nItems B32;
- CARD32 tag B32;
- CARD32 pad1 B32;
- CARD32 pad2 B32;
-} xLbxGetPropertyReply;
-#define sz_xLbxGetPropertyReply 32
-
-typedef struct _LbxTagData {
- CARD8 reqType; /* always LbxReqCode */
- CARD8 lbxReqType; /* always X_LbxTagData */
- CARD16 length B16;
- XID tag B32;
- CARD32 real_length B32;
- /* data */
-} xLbxTagDataReq;
-#define sz_xLbxTagDataReq 12
-
-typedef struct _LbxInvalidateTag {
- CARD8 reqType; /* always LbxReqCode */
- CARD8 lbxReqType; /* always X_LbxInvalidateTag */
- CARD16 length B16;
- CARD32 tag B32;
-} xLbxInvalidateTagReq;
-#define sz_xLbxInvalidateTagReq 8
-
-typedef struct _LbxPutImage {
- CARD8 reqType; /* always LbxReqCode */
- CARD8 lbxReqType; /* always X_LbxPutImage */
- CARD16 length B16;
- CARD8 compressionMethod;
- CARD8 cacheEnts;
- CARD8 bitPacked;
- /* rest is variable */
-} xLbxPutImageReq;
-#define sz_xLbxPutImageReq 7
-
-typedef struct {
- CARD8 reqType; /* always LbxReqCode */
- CARD8 lbxReqType; /* always X_LbxGetImage */
- CARD16 length B16;
- Drawable drawable B32;
- INT16 x B16, y B16;
- CARD16 width B16, height B16;
- CARD32 planeMask B32;
- CARD8 format;
- CARD8 pad1;
- CARD16 pad2 B16;
-} xLbxGetImageReq;
-
-#define sz_xLbxGetImageReq 24
-
-typedef struct {
- BYTE type; /* X_Reply */
- CARD8 depth;
- CARD16 sequenceNumber B16;
- CARD32 lbxLength B32;
- CARD32 xLength B32;
- VisualID visual B32;
- CARD8 compressionMethod;
- CARD8 pad1;
- CARD16 pad2 B16;
- CARD32 pad3 B32;
- CARD32 pad4 B32;
- CARD32 pad5 B32;
-} xLbxGetImageReply;
-
-#define sz_xLbxGetImageReply 32
-
-/* Following used for LbxPolyPoint, LbxPolyLine, LbxPolySegment,
- LbxPolyRectangle, LbxPolyArc, LbxPolyFillRectangle and LbxPolyFillArc */
-
-#define GFX_CACHE_SIZE 15
-
-#define GFXdCacheEnt(e) ((e) & 0xf)
-#define GFXgCacheEnt(e) (((e) >> 4) & 0xf)
-#define GFXCacheEnts(d,g) (((d) & 0xf) | (((g) & 0xf) << 4))
-
-#define GFXCacheNone 0xf
-
-typedef struct _LbxPolyPoint {
- CARD8 reqType; /* always LbxReqCode */
- CARD8 lbxReqType;
- CARD16 length B16;
- CARD8 cacheEnts;
- CARD8 padBytes;
-} xLbxPolyPointReq;
-
-#define sz_xLbxPolyPointReq 6
-
-typedef xLbxPolyPointReq xLbxPolyLineReq;
-typedef xLbxPolyPointReq xLbxPolySegmentReq;
-typedef xLbxPolyPointReq xLbxPolyRectangleReq;
-typedef xLbxPolyPointReq xLbxPolyArcReq;
-typedef xLbxPolyPointReq xLbxPolyFillRectangleReq;
-typedef xLbxPolyPointReq xLbxPolyFillArcReq;
-
-#define sz_xLbxPolyLineReq sz_xLbxPolyPointReq
-#define sz_xLbxPolySegmentReq sz_xLbxPolyPointReq
-#define sz_xLbxPolyRectangleReq sz_xLbxPolyPointReq
-#define sz_xLbxPolyArcReq sz_xLbxPolyPointReq
-#define sz_xLbxPolyFillRectangleReq sz_xLbxPolyPointReq
-#define sz_xLbxPolyFillArc sz_xLbxPolyPointReq
-
-typedef struct _LbxFillPoly {
- CARD8 reqType; /* always LbxReqCode */
- CARD8 lbxReqType;
- CARD16 length B16;
- CARD8 cacheEnts;
- BYTE shape;
- CARD8 padBytes;
-} xLbxFillPolyReq;
-#define sz_xLbxFillPolyReq 7
-
-typedef struct _LbxCopyArea {
- CARD8 reqType; /* always LbxReqCode */
- CARD8 lbxReqType;
- CARD16 length B16;
- CARD8 srcCache; /* source drawable */
- CARD8 cacheEnts; /* dest drawable and gc */
- /* followed by encoded src x, src y, dst x, dst y, width, height */
-} xLbxCopyAreaReq;
-
-#define sz_xLbxCopyAreaReq 6
-
-typedef struct _LbxCopyPlane {
- CARD8 reqType; /* always LbxReqCode */
- CARD8 lbxReqType;
- CARD16 length B16;
- CARD32 bitPlane B32;
- CARD8 srcCache; /* source drawable */
- CARD8 cacheEnts; /* dest drawable and gc */
- /* followed by encoded src x, src y, dst x, dst y, width, height */
-} xLbxCopyPlaneReq;
-
-#define sz_xLbxCopyPlaneReq 10
-
-typedef struct _LbxPolyText {
- CARD8 reqType; /* always LbxReqCode */
- CARD8 lbxReqType;
- CARD16 length B16;
- CARD8 cacheEnts;
- /* followed by encoded src x, src y coordinates and text elts */
-} xLbxPolyTextReq;
-
-#define sz_xLbxPolyTextReq 5
-
-typedef xLbxPolyTextReq xLbxPolyText8Req;
-typedef xLbxPolyTextReq xLbxPolyText16Req;
-
-#define sz_xLbxPolyTextReq 5
-#define sz_xLbxPolyText8Req 5
-#define sz_xLbxPolyText16Req 5
-
-typedef struct _LbxImageText {
- CARD8 reqType; /* always LbxReqCode */
- CARD8 lbxReqType;
- CARD16 length B16;
- CARD8 cacheEnts;
- CARD8 nChars;
- /* followed by encoded src x, src y coordinates and string */
-} xLbxImageTextReq;
-
-typedef xLbxImageTextReq xLbxImageText8Req;
-typedef xLbxImageTextReq xLbxImageText16Req;
-
-#define sz_xLbxImageTextReq 6
-#define sz_xLbxImageText8Req 6
-#define sz_xLbxImageText16Req 6
-
-typedef struct {
- CARD8 offset;
- CARD8 diff;
-} xLbxDiffItem;
-#define sz_xLbxDiffItem 2
-
-typedef struct {
- BYTE type; /* X_Reply */
- CARD8 nOpts;
- CARD16 sequenceNumber B16;
- CARD32 length B32;
- CARD32 optDataStart B32;
- CARD32 pad0 B32;
- CARD32 pad1 B32;
- CARD32 pad2 B32;
- CARD32 pad3 B32;
- CARD32 pad4 B32;
-} xLbxStartReply;
-#define sz_xLbxStartReply 32
-#define sz_xLbxStartReplyHdr 8
-
-typedef struct _LbxQueryExtension {
- CARD8 reqType; /* always LbxReqCode */
- CARD8 lbxReqType; /* always X_LbxQueryExtension */
- CARD16 length B16;
- CARD32 nbytes B32;
-} xLbxQueryExtensionReq;
-#define sz_xLbxQueryExtensionReq 8
-
-typedef struct _LbxQueryExtensionReply {
- BYTE type; /* X_Reply */
- CARD8 numReqs;
- CARD16 sequenceNumber B16;
- CARD32 length B32;
- BOOL present;
- CARD8 major_opcode;
- CARD8 first_event;
- CARD8 first_error;
- CARD32 pad0 B32;
- CARD32 pad1 B32;
- CARD32 pad2 B32;
- CARD32 pad3 B32;
- CARD32 pad4 B32;
-
- /* reply & event generating requests */
-} xLbxQueryExtensionReply;
-#define sz_xLbxQueryExtensionReply 32
-
-
-typedef struct _LbxBeginLargeRequest {
- CARD8 reqType; /* always LbxReqCode */
- CARD8 lbxReqType; /* always X_LbxBeginLargeRequest */
- CARD16 length B16;
- CARD32 largeReqLength B32;
-} xLbxBeginLargeRequestReq;
-#define sz_BeginLargeRequestReq 8
-
-typedef struct _LbxLargeRequestData {
- CARD8 reqType; /* always LbxReqCode */
- CARD8 lbxReqType; /* always X_LbxLargeRequestData */
- CARD16 length B16;
- /* followed by LISTofCARD8 data */
-} xLbxLargeRequestDataReq;
-#define sz_LargeRequestDataReq 4
-
-typedef struct _LbxEndLargeRequest {
- CARD8 reqType; /* always LbxReqCode */
- CARD8 lbxReqType; /* always X_LbxEndLargeRequest */
- CARD16 length B16;
-} xLbxEndLargeRequestReq;
-#define sz_EndLargeRequestReq 4
-
-
-
-typedef struct _LbxSwitchEvent {
- BYTE type; /* always eventBase + LbxEvent */
- BYTE lbxType; /* LbxSwitchEvent */
- CARD16 pad B16;
- CARD32 client B32;
-} xLbxSwitchEvent;
-#define sz_xLbxSwitchEvent 8
-
-typedef struct _LbxCloseEvent {
- BYTE type; /* always eventBase + LbxEvent */
- BYTE lbxType; /* LbxCloseEvent */
- CARD16 sequenceNumber B16;
- CARD32 client B32;
- CARD32 pad1 B32;
- CARD32 pad2 B32;
- CARD32 pad3 B32;
- CARD32 pad4 B32;
- CARD32 pad5 B32;
- CARD32 pad6 B32;
-} xLbxCloseEvent;
-#define sz_xLbxCloseEvent 32
-
-typedef struct _LbxInvalidateTagEvent {
- BYTE type; /* always eventBase + LbxEvent */
- BYTE lbxType; /* LbxInvalidateTagEvent */
- CARD16 sequenceNumber B16;
- CARD32 tag B32;
- CARD32 tagType B32;
- CARD32 pad1 B32;
- CARD32 pad2 B32;
- CARD32 pad3 B32;
- CARD32 pad4 B32;
- CARD32 pad5 B32;
-} xLbxInvalidateTagEvent;
-#define sz_xLbxInvalidateTagEvent 32
-
-typedef struct _LbxSendTagDataEvent {
- BYTE type; /* always eventBase + LbxEvent */
- BYTE lbxType; /* LbxSendTagDataEvent */
- CARD16 sequenceNumber B16;
- CARD32 tag B32;
- CARD32 tagType B32;
- CARD32 pad1 B32;
- CARD32 pad2 B32;
- CARD32 pad3 B32;
- CARD32 pad4 B32;
- CARD32 pad5 B32;
-} xLbxSendTagDataEvent;
-#define sz_xLbxSendTagDataEvent 32
-
-typedef struct _LbxListenToOneEvent {
- BYTE type; /* always eventBase + LbxEvent */
- BYTE lbxType; /* LbxListenToOneEvent */
- CARD16 sequenceNumber B16;
- CARD32 client B32;
- CARD32 pad1 B32;
- CARD32 pad2 B32;
- CARD32 pad3 B32;
- CARD32 pad4 B32;
- CARD32 pad5 B32;
- CARD32 pad6 B32;
-} xLbxListenToOneEvent;
-#define sz_xLbxListenToOneEvent 32
-
-typedef struct _LbxListenToAllEvent {
- BYTE type; /* always eventBase + LbxEvent */
- BYTE lbxType; /* LbxListenToAllEvent */
- CARD16 sequenceNumber B16;
- CARD32 pad1 B32;
- CARD32 pad2 B32;
- CARD32 pad3 B32;
- CARD32 pad4 B32;
- CARD32 pad5 B32;
- CARD32 pad6 B32;
- CARD32 pad7 B32;
-} xLbxListenToAllEvent;
-#define sz_xLbxListenToOneEvent 32
-
-typedef struct _LbxReleaseCmapEvent {
- BYTE type; /* always eventBase + LbxEvent */
- BYTE lbxType; /* LbxReleaseCmapEvent */
- CARD16 sequenceNumber B16;
- Colormap colormap B32;
- CARD32 pad1 B32;
- CARD32 pad2 B32;
- CARD32 pad3 B32;
- CARD32 pad4 B32;
- CARD32 pad5 B32;
- CARD32 pad6 B32;
-} xLbxReleaseCmapEvent;
-#define sz_xLbxReleaseCmapEvent 32
-
-
-typedef struct _LbxFreeCellsEvent {
- BYTE type; /* always eventBase + LbxEvent */
- BYTE lbxType; /* LbxFreeCellsEvent */
- CARD16 sequenceNumber B16;
- Colormap colormap B32;
- CARD32 pixelStart B32;
- CARD32 pixelEnd B32;
- CARD32 pad1 B32;
- CARD32 pad2 B32;
- CARD32 pad3 B32;
- CARD32 pad4 B32;
-} xLbxFreeCellsEvent;
-#define sz_xLbxFreeCellsEvent 32
-
-
-/*
- * squished X event sizes. If these change, be sure to update lbxquish.c
- * and unsquish.c appropriately
- *
- * lbxsz_* is the padded squished length
- * lbxupsz_* is the unpadded squished length
- */
-
-#define lbxsz_KeyButtonEvent 32
-#define lbxupsz_KeyButtonEvent 31
-
-#define lbxsz_EnterLeaveEvent 32
-#define lbxupsz_EnterLeaveEvent 32
-
-#define lbxsz_FocusEvent 12
-#define lbxupsz_FocusEvent 9
-
-#define lbxsz_KeymapEvent 32
-#define lbxupsz_KeymapEvent 32
-
-#define lbxsz_ExposeEvent 20
-#define lbxupsz_ExposeEvent 18
-
-#define lbxsz_GfxExposeEvent 24
-#define lbxupsz_GfxExposeEvent 21
-
-#define lbxsz_NoExposeEvent 12
-#define lbxupsz_NoExposeEvent 11
-
-#define lbxsz_VisibilityEvent 12
-#define lbxupsz_VisibilityEvent 9
-
-#define lbxsz_CreateNotifyEvent 24
-#define lbxupsz_CreateNotifyEvent 23
-
-#define lbxsz_DestroyNotifyEvent 12
-#define lbxupsz_DestroyNotifyEvent 12
-
-#define lbxsz_UnmapNotifyEvent 16
-#define lbxupsz_UnmapNotifyEvent 13
-
-#define lbxsz_MapNotifyEvent 16
-#define lbxupsz_MapNotifyEvent 13
-
-#define lbxsz_MapRequestEvent 12
-#define lbxupsz_MapRequestEvent 12
-
-#define lbxsz_ReparentEvent 24
-#define lbxupsz_ReparentEvent 21
-
-#define lbxsz_ConfigureNotifyEvent 28
-#define lbxupsz_ConfigureNotifyEvent 27
-
-#define lbxsz_ConfigureRequestEvent 28
-#define lbxupsz_ConfigureRequestEvent 28
-
-#define lbxsz_GravityEvent 16
-#define lbxupsz_GravityEvent 16
-
-#define lbxsz_ResizeRequestEvent 12
-#define lbxupsz_ResizeRequestEvent 12
-
-#define lbxsz_CirculateEvent 20
-#define lbxupsz_CirculateEvent 17
-
-#define lbxsz_PropertyEvent 20
-#define lbxupsz_PropertyEvent 17
-
-#define lbxsz_SelectionClearEvent 16
-#define lbxupsz_SelectionClearEvent 16
-
-#define lbxsz_SelectionRequestEvent 28
-#define lbxupsz_SelectionRequestEvent 28
-
-#define lbxsz_SelectionNotifyEvent 24
-#define lbxupsz_SelectionNotifyEvent 24
-
-#define lbxsz_ColormapEvent 16
-#define lbxupsz_ColormapEvent 14
-
-#define lbxsz_MappingNotifyEvent 8
-#define lbxupsz_MappingNotifyEvent 7
-
-#define lbxsz_ClientMessageEvent 32
-#define lbxupsz_ClientMessageEvent 32
-
-#define lbxsz_UnknownEvent 32
-
-#ifdef DEBUG
-
-#define DBG_SWITCH 0x00000001
-#define DBG_CLOSE 0x00000002
-#define DBG_IO 0x00000004
-#define DBG_READ_REQ 0x00000008
-#define DBG_LEN 0x00000010
-#define DBG_BLOCK 0x00000020
-#define DBG_CLIENT 0x00000040
-#define DBG_DELTA 0x00000080
-#endif
-/*
- * Cancel the previous redefinition of the basic types, thus restoring their
- * X.h definitions.
- */
-
-#undef XID
-#undef Atom
-#undef Colormap
-#undef Drawable
-#undef VisualID
-#undef Window
-
-#endif /* _LBXPROTO_H_ */
+/*
+ * Copyright 1992 Network Computing Devices
+ *
+ * Permission to use, copy, modify, distribute, and sell this software and its
+ * documentation for any purpose is hereby granted without fee, provided that
+ * the above copyright notice appear in all copies and that both that
+ * copyright notice and this permission notice appear in supporting
+ * documentation, and that the name of NCD. not be used in advertising or
+ * publicity pertaining to distribution of the software without specific,
+ * written prior permission. NCD. makes no representations about the
+ * suitability of this software for any purpose. It is provided "as is"
+ * without express or implied warranty.
+ *
+ * NCD. DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL NCD.
+ * BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION
+ * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
+ * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+ *
+ */
+
+#ifndef _LBXPROTO_H_
+#define _LBXPROTO_H_
+
+#include <X11/extensions/lbx.h>
+/*
+ * NOTE: any changes or additions to the opcodes needs to be reflected
+ * in the lbxCacheable array in Xserver/lbx/lbxmain.c
+ */
+
+#define X_LbxQueryVersion 0
+#define X_LbxStartProxy 1
+#define X_LbxStopProxy 2
+#define X_LbxSwitch 3
+#define X_LbxNewClient 4
+#define X_LbxCloseClient 5
+#define X_LbxModifySequence 6
+#define X_LbxAllowMotion 7
+#define X_LbxIncrementPixel 8
+#define X_LbxDelta 9
+#define X_LbxGetModifierMapping 10
+#define X_LbxInvalidateTag 12
+#define X_LbxPolyPoint 13
+#define X_LbxPolyLine 14
+#define X_LbxPolySegment 15
+#define X_LbxPolyRectangle 16
+#define X_LbxPolyArc 17
+#define X_LbxFillPoly 18
+#define X_LbxPolyFillRectangle 19
+#define X_LbxPolyFillArc 20
+#define X_LbxGetKeyboardMapping 21
+#define X_LbxQueryFont 22
+#define X_LbxChangeProperty 23
+#define X_LbxGetProperty 24
+#define X_LbxTagData 25
+
+#define X_LbxCopyArea 26
+#define X_LbxCopyPlane 27
+#define X_LbxPolyText8 28
+#define X_LbxPolyText16 29
+#define X_LbxImageText8 30
+#define X_LbxImageText16 31
+
+#define X_LbxQueryExtension 32
+#define X_LbxPutImage 33
+#define X_LbxGetImage 34
+
+#define X_LbxBeginLargeRequest 35
+#define X_LbxLargeRequestData 36
+#define X_LbxEndLargeRequest 37
+
+#define X_LbxInternAtoms 38
+#define X_LbxGetWinAttrAndGeom 39
+
+#define X_LbxGrabCmap 40
+#define X_LbxReleaseCmap 41
+#define X_LbxAllocColor 42
+
+#define X_LbxSync 43
+
+/*
+ * Redefine some basic types used by structures defined herein. This removes
+ * any possibility on 64-bit architectures of one entity viewing communicated
+ * data as 32-bit quantities and another entity viewing the same data as 64-bit
+ * quantities.
+ */
+#define XID CARD32
+#define Atom CARD32
+#define Colormap CARD32
+#define Drawable CARD32
+#define VisualID CARD32
+#define Window CARD32
+
+typedef struct {
+ BOOL success; /* TRUE */
+ BOOL changeType;
+ CARD16 majorVersion B16,
+ minorVersion B16;
+ CARD16 length B16; /* 1/4 additional bytes in setup info */
+ CARD32 tag B32;
+} xLbxConnSetupPrefix;
+
+typedef struct _LbxQueryVersion {
+ CARD8 reqType; /* always LbxReqCode */
+ CARD8 lbxReqType; /* always X_LbxQueryVersion */
+ CARD16 length B16;
+} xLbxQueryVersionReq;
+#define sz_xLbxQueryVersionReq 4
+
+typedef struct {
+ BYTE type; /* X_Reply */
+ CARD8 unused;
+ CARD16 sequenceNumber B16;
+ CARD32 length B32;
+ CARD16 majorVersion B16; /* major version of LBX protocol */
+ CARD16 minorVersion B16; /* minor version of LBX protocol */
+ CARD32 pad0 B32;
+ CARD32 pad1 B32;
+ CARD32 pad2 B32;
+ CARD32 pad3 B32;
+ CARD32 pad4 B32;
+} xLbxQueryVersionReply;
+#define sz_xLbxQueryVersionReply 32
+
+typedef struct _LbxStartProxy {
+ CARD8 reqType; /* always LbxReqCode */
+ CARD8 lbxReqType; /* always X_LbxStartProxy */
+ CARD16 length B16;
+} xLbxStartProxyReq;
+#define sz_xLbxStartProxyReq 4
+
+typedef struct _LbxStopProxy {
+ CARD8 reqType; /* always LbxReqCode */
+ CARD8 lbxReqType; /* always X_LbxStopProxy */
+ CARD16 length B16;
+} xLbxStopProxyReq;
+#define sz_xLbxStopProxyReq 4
+
+typedef struct _LbxSwitch {
+ CARD8 reqType; /* always LbxReqCode */
+ CARD8 lbxReqType; /* always X_LbxSwitch */
+ CARD16 length B16;
+ CARD32 client B32; /* new client */
+} xLbxSwitchReq;
+#define sz_xLbxSwitchReq 8
+
+typedef struct _LbxNewClient {
+ CARD8 reqType; /* always LbxReqCode */
+ CARD8 lbxReqType; /* always X_LbxNewClient */
+ CARD16 length B16;
+ CARD32 client B32; /* new client */
+} xLbxNewClientReq;
+#define sz_xLbxNewClientReq 8
+
+typedef struct _LbxCloseClient {
+ CARD8 reqType; /* always LbxReqCode */
+ CARD8 lbxReqType; /* always X_LbxCloseClient */
+ CARD16 length B16;
+ CARD32 client B32; /* new client */
+} xLbxCloseClientReq;
+#define sz_xLbxCloseClientReq 8
+
+typedef struct _LbxModifySequence {
+ CARD8 reqType; /* always LbxReqCode */
+ CARD8 lbxReqType; /* always X_LbxModifySequence */
+ CARD16 length B16;
+ CARD32 adjust B32;
+} xLbxModifySequenceReq;
+#define sz_xLbxModifySequenceReq 8
+
+typedef struct _LbxAllowMotion {
+ CARD8 reqType; /* always LbxReqCode */
+ CARD8 lbxReqType; /* always X_LbxAllowMotion */
+ CARD16 length B16;
+ CARD32 num B32;
+} xLbxAllowMotionReq;
+#define sz_xLbxAllowMotionReq 8
+
+typedef struct {
+ CARD8 reqType; /* always LbxReqCode */
+ CARD8 lbxReqType; /* always X_LbxGrabCmap */
+ CARD16 length B16;
+ Colormap cmap B32;
+} xLbxGrabCmapReq;
+#define sz_xLbxGrabCmapReq 8
+
+#define LBX_SMART_GRAB 0x80
+#define LBX_AUTO_RELEASE 0x40
+#define LBX_3CHANNELS 0x20
+#define LBX_2BYTE_PIXELS 0x10
+#define LBX_RGB_BITS_MASK 0x0f
+
+#define LBX_LIST_END 0
+#define LBX_PIXEL_PRIVATE 1
+#define LBX_PIXEL_SHARED 2
+#define LBX_PIXEL_RANGE_PRIVATE 3
+#define LBX_PIXEL_RANGE_SHARED 4
+#define LBX_NEXT_CHANNEL 5
+
+typedef struct {
+ BYTE type; /* X_Reply */
+ CARD8 flags;
+ CARD16 sequenceNumber B16;
+ CARD32 length B32;
+ CARD32 pad0 B16;
+ CARD32 pad1 B32;
+ CARD32 pad2 B32;
+ CARD32 pad3 B32;
+ CARD32 pad4 B32;
+ CARD32 pad5 B16;
+} xLbxGrabCmapReply;
+#define sz_xLbxGrabCmapReply 32
+#define sz_xLbxGrabCmapReplyHdr 8
+
+
+typedef struct {
+ CARD8 reqType; /* always LbxReqCode */
+ CARD8 lbxReqType; /* always X_LbxReleaseCmap */
+ CARD16 length B16;
+ Colormap cmap B32;
+} xLbxReleaseCmapReq;
+#define sz_xLbxReleaseCmapReq 8
+
+typedef struct {
+ CARD8 reqType; /* always LbxReqCode */
+ CARD8 lbxReqType; /* always X_LbxAllocColor */
+ CARD16 length B16;
+ Colormap cmap B32;
+ CARD32 pixel B32;
+ CARD16 red B16, green B16, blue B16;
+ CARD16 pad B16;
+} xLbxAllocColorReq;
+#define sz_xLbxAllocColorReq 20
+
+typedef struct _LbxIncrementPixel {
+ CARD8 reqType; /* always LbxReqCode */
+ CARD8 lbxReqType; /* always X_LbxIncrementPixel */
+ CARD16 length B16;
+ CARD32 cmap B32;
+ CARD32 pixel B32;
+} xLbxIncrementPixelReq;
+#define sz_xLbxIncrementPixelReq 12
+
+typedef struct _LbxDelta {
+ CARD8 reqType; /* always LbxReqCode */
+ CARD8 lbxReqType; /* always X_LbxDelta */
+ CARD16 length B16;
+ CARD8 diffs; /* number of diffs */
+ CARD8 cindex; /* cache index */
+ /* list of diffs follows */
+} xLbxDeltaReq;
+#define sz_xLbxDeltaReq 6
+
+typedef struct _LbxGetModifierMapping {
+ CARD8 reqType; /* always LbxReqCode */
+ CARD8 lbxReqType; /* always X_LbxGetModifierMapping */
+ CARD16 length B16;
+} xLbxGetModifierMappingReq;
+#define sz_xLbxGetModifierMappingReq 4
+
+typedef struct {
+ BYTE type; /* X_Reply */
+ CARD8 keyspermod;
+ CARD16 sequenceNumber B16;
+ CARD32 length B32;
+ CARD32 tag B32;
+ CARD32 pad0 B32;
+ CARD32 pad1 B32;
+ CARD32 pad2 B32;
+ CARD32 pad3 B32;
+ CARD32 pad4 B32;
+} xLbxGetModifierMappingReply;
+#define sz_xLbxGetModifierMappingReply 32
+
+typedef struct _LbxGetKeyboardMapping {
+ CARD8 reqType; /* always LbxReqCode */
+ CARD8 lbxReqType; /* always X_LbxGetKeyboardMapping */
+ CARD16 length B16;
+ KeyCode firstKeyCode;
+ CARD8 count;
+ CARD16 pad1 B16;
+} xLbxGetKeyboardMappingReq;
+#define sz_xLbxGetKeyboardMappingReq 8
+
+typedef struct {
+ BYTE type; /* X_Reply */
+ CARD8 keysperkeycode;
+ CARD16 sequenceNumber B16;
+ CARD32 length B32;
+ CARD32 tag B32;
+ CARD32 pad0 B32;
+ CARD32 pad1 B32;
+ CARD32 pad2 B32;
+ CARD32 pad3 B32;
+ CARD32 pad4 B32;
+} xLbxGetKeyboardMappingReply;
+#define sz_xLbxGetKeyboardMappingReply 32
+
+typedef struct _LbxQueryFont {
+ CARD8 reqType; /* always LbxReqCode */
+ CARD8 lbxReqType; /* always X_LbxQueryFont */
+ CARD16 length B16;
+ CARD32 fid B32;
+} xLbxQueryFontReq;
+#define sz_xLbxQueryFontReq 8
+
+typedef struct _LbxInternAtoms {
+ CARD8 reqType; /* always LbxReqCode */
+ CARD8 lbxReqType; /* always X_LbxInternAtoms */
+ CARD16 length B16;
+ CARD16 num B16;
+} xLbxInternAtomsReq;
+#define sz_xLbxInternAtomsReq 6
+
+typedef struct {
+ BYTE type; /* X_Reply */
+ CARD8 unused;
+ CARD16 sequenceNumber B16;
+ CARD32 length B32;
+ CARD32 atomsStart B32;
+ CARD32 pad0 B32;
+ CARD32 pad1 B32;
+ CARD32 pad2 B32;
+ CARD32 pad3 B32;
+ CARD32 pad4 B32;
+} xLbxInternAtomsReply;
+#define sz_xLbxInternAtomsReply 32
+#define sz_xLbxInternAtomsReplyHdr 8
+
+
+typedef struct _LbxGetWinAttrAndGeom {
+ CARD8 reqType; /* always LbxReqCode */
+ CARD8 lbxReqType; /* always X_LbxGetWinAttrAndGeom */
+ CARD16 length B16;
+ CARD32 id B32; /* window id */
+} xLbxGetWinAttrAndGeomReq;
+#define sz_xLbxGetWinAttrAndGeomReq 8
+
+typedef struct {
+ BYTE type; /* X_Reply */
+ CARD8 backingStore;
+ CARD16 sequenceNumber B16;
+ CARD32 length B32; /* NOT 0; this is an extra-large reply */
+ VisualID visualID B32;
+#if defined(__cplusplus) || defined(c_plusplus)
+ CARD16 c_class B16;
+#else
+ CARD16 class B16;
+#endif
+ CARD8 bitGravity;
+ CARD8 winGravity;
+ CARD32 backingBitPlanes B32;
+ CARD32 backingPixel B32;
+ BOOL saveUnder;
+ BOOL mapInstalled;
+ CARD8 mapState;
+ BOOL override;
+ Colormap colormap B32;
+ CARD32 allEventMasks B32;
+ CARD32 yourEventMask B32;
+ CARD16 doNotPropagateMask B16;
+ CARD16 pad1 B16;
+ Window root B32;
+ INT16 x B16, y B16;
+ CARD16 width B16, height B16;
+ CARD16 borderWidth B16;
+ CARD8 depth;
+ CARD8 pad2;
+} xLbxGetWinAttrAndGeomReply;
+#define sz_xLbxGetWinAttrAndGeomReply 60
+
+
+typedef struct {
+ CARD8 reqType; /* always LbxReqCode */
+ CARD8 lbxReqType; /* always X_LbxSync */
+ CARD16 length B16;
+} xLbxSyncReq;
+#define sz_xLbxSyncReq 4
+
+typedef struct {
+ BYTE type; /* X_Reply */
+ CARD8 pad0;
+ CARD16 sequenceNumber B16;
+ CARD32 length B32;
+ CARD32 pad1 B32;
+ CARD32 pad2 B32;
+ CARD32 pad3 B32;
+ CARD32 pad4 B32;
+ CARD32 pad5 B32;
+ CARD32 pad6 B32;
+} xLbxSyncReply;
+#define sz_xLbxSyncReply 32
+
+
+/* an LBX squished charinfo packs the data in a CARD32 as follows */
+#define LBX_WIDTH_SHIFT 26
+#define LBX_LEFT_SHIFT 20
+#define LBX_RIGHT_SHIFT 13
+#define LBX_ASCENT_SHIFT 7
+#define LBX_DESCENT_SHIFT 0
+
+#define LBX_WIDTH_BITS 6
+#define LBX_LEFT_BITS 6
+#define LBX_RIGHT_BITS 7
+#define LBX_ASCENT_BITS 6
+#define LBX_DESCENT_BITS 7
+
+#define LBX_WIDTH_MASK 0xfc000000
+#define LBX_LEFT_MASK 0x03f00000
+#define LBX_RIGHT_MASK 0x000fe000
+#define LBX_ASCENT_MASK 0x00001f80
+#define LBX_DESCENT_MASK 0x0000007f
+
+#define LBX_MASK_BITS(val, n) ((unsigned int) ((val) & ((1 << (n)) - 1)))
+
+typedef struct {
+ CARD32 metrics B32;
+} xLbxCharInfo;
+
+/* note that this is identical to xQueryFontReply except for missing
+ * first 2 words
+ */
+typedef struct {
+ xCharInfo minBounds;
+/* XXX do we need to leave this gunk? */
+#ifndef WORD64
+ CARD32 walign1 B32;
+#endif
+ xCharInfo maxBounds;
+#ifndef WORD64
+ CARD32 walign2 B32;
+#endif
+ CARD16 minCharOrByte2 B16, maxCharOrByte2 B16;
+ CARD16 defaultChar B16;
+ CARD16 nFontProps B16; /* followed by this many xFontProp structures */
+ CARD8 drawDirection;
+ CARD8 minByte1, maxByte1;
+ BOOL allCharsExist;
+ INT16 fontAscent B16, fontDescent B16;
+ CARD32 nCharInfos B32; /* followed by this many xLbxCharInfo structures */
+} xLbxFontInfo;
+
+typedef struct {
+ BYTE type; /* X_Reply */
+ CARD8 compression;
+ CARD16 sequenceNumber B16;
+ CARD32 length B32;
+ CARD32 tag B32;
+ CARD32 pad0 B32;
+ CARD32 pad1 B32;
+ CARD32 pad2 B32;
+ CARD32 pad3 B32;
+ CARD32 pad4 B32;
+ /* X_QueryFont sticks much of the data in the base reply packet,
+ * but we hope that it won't be needed, (and it won't fit in 32 bytes
+ * with the tag anyways)
+ *
+ * if any additional data is needed, its sent in a xLbxFontInfo
+ */
+} xLbxQueryFontReply;
+#define sz_xLbxQueryFontReply 32
+
+typedef struct _LbxChangeProperty {
+ CARD8 reqType; /* always LbxReqCode */
+ CARD8 lbxReqType; /* always X_LbxChangeProperty */
+ CARD16 length B16;
+ Window window B32;
+ Atom property B32;
+ Atom type B32;
+ CARD8 format;
+ CARD8 mode;
+ BYTE pad[2];
+ CARD32 nUnits B32;
+} xLbxChangePropertyReq;
+#define sz_xLbxChangePropertyReq 24
+
+typedef struct {
+ BYTE type; /* X_Reply */
+ CARD8 pad;
+ CARD16 sequenceNumber B16;
+ CARD32 length B32;
+ CARD32 tag B32;
+ CARD32 pad0 B32;
+ CARD32 pad1 B32;
+ CARD32 pad2 B32;
+ CARD32 pad3 B32;
+ CARD32 pad4 B32;
+} xLbxChangePropertyReply;
+#define sz_xLbxChangePropertyReply 32
+
+typedef struct _LbxGetProperty {
+ CARD8 reqType; /* always LbxReqCode */
+ CARD8 lbxReqType; /* always X_LbxGetProperty */
+ CARD16 length B16;
+ Window window B32;
+ Atom property B32;
+ Atom type B32;
+ CARD8 delete;
+ BYTE pad[3];
+ CARD32 longOffset B32;
+ CARD32 longLength B32;
+} xLbxGetPropertyReq;
+#define sz_xLbxGetPropertyReq 28
+
+typedef struct {
+ BYTE type; /* X_Reply */
+ CARD8 format;
+ CARD16 sequenceNumber B16;
+ CARD32 length B32;
+ Atom propertyType B32;
+ CARD32 bytesAfter B32;
+ CARD32 nItems B32;
+ CARD32 tag B32;
+ CARD32 pad1 B32;
+ CARD32 pad2 B32;
+} xLbxGetPropertyReply;
+#define sz_xLbxGetPropertyReply 32
+
+typedef struct _LbxTagData {
+ CARD8 reqType; /* always LbxReqCode */
+ CARD8 lbxReqType; /* always X_LbxTagData */
+ CARD16 length B16;
+ XID tag B32;
+ CARD32 real_length B32;
+ /* data */
+} xLbxTagDataReq;
+#define sz_xLbxTagDataReq 12
+
+typedef struct _LbxInvalidateTag {
+ CARD8 reqType; /* always LbxReqCode */
+ CARD8 lbxReqType; /* always X_LbxInvalidateTag */
+ CARD16 length B16;
+ CARD32 tag B32;
+} xLbxInvalidateTagReq;
+#define sz_xLbxInvalidateTagReq 8
+
+typedef struct _LbxPutImage {
+ CARD8 reqType; /* always LbxReqCode */
+ CARD8 lbxReqType; /* always X_LbxPutImage */
+ CARD16 length B16;
+ CARD8 compressionMethod;
+ CARD8 cacheEnts;
+ CARD8 bitPacked;
+ /* rest is variable */
+} xLbxPutImageReq;
+#define sz_xLbxPutImageReq 7
+
+typedef struct {
+ CARD8 reqType; /* always LbxReqCode */
+ CARD8 lbxReqType; /* always X_LbxGetImage */
+ CARD16 length B16;
+ Drawable drawable B32;
+ INT16 x B16, y B16;
+ CARD16 width B16, height B16;
+ CARD32 planeMask B32;
+ CARD8 format;
+ CARD8 pad1;
+ CARD16 pad2 B16;
+} xLbxGetImageReq;
+
+#define sz_xLbxGetImageReq 24
+
+typedef struct {
+ BYTE type; /* X_Reply */
+ CARD8 depth;
+ CARD16 sequenceNumber B16;
+ CARD32 lbxLength B32;
+ CARD32 xLength B32;
+ VisualID visual B32;
+ CARD8 compressionMethod;
+ CARD8 pad1;
+ CARD16 pad2 B16;
+ CARD32 pad3 B32;
+ CARD32 pad4 B32;
+ CARD32 pad5 B32;
+} xLbxGetImageReply;
+
+#define sz_xLbxGetImageReply 32
+
+/* Following used for LbxPolyPoint, LbxPolyLine, LbxPolySegment,
+ LbxPolyRectangle, LbxPolyArc, LbxPolyFillRectangle and LbxPolyFillArc */
+
+#define GFX_CACHE_SIZE 15
+
+#define GFXdCacheEnt(e) ((e) & 0xf)
+#define GFXgCacheEnt(e) (((e) >> 4) & 0xf)
+#define GFXCacheEnts(d,g) (((d) & 0xf) | (((g) & 0xf) << 4))
+
+#define GFXCacheNone 0xf
+
+typedef struct _LbxPolyPoint {
+ CARD8 reqType; /* always LbxReqCode */
+ CARD8 lbxReqType;
+ CARD16 length B16;
+ CARD8 cacheEnts;
+ CARD8 padBytes;
+} xLbxPolyPointReq;
+
+#define sz_xLbxPolyPointReq 6
+
+typedef xLbxPolyPointReq xLbxPolyLineReq;
+typedef xLbxPolyPointReq xLbxPolySegmentReq;
+typedef xLbxPolyPointReq xLbxPolyRectangleReq;
+typedef xLbxPolyPointReq xLbxPolyArcReq;
+typedef xLbxPolyPointReq xLbxPolyFillRectangleReq;
+typedef xLbxPolyPointReq xLbxPolyFillArcReq;
+
+#define sz_xLbxPolyLineReq sz_xLbxPolyPointReq
+#define sz_xLbxPolySegmentReq sz_xLbxPolyPointReq
+#define sz_xLbxPolyRectangleReq sz_xLbxPolyPointReq
+#define sz_xLbxPolyArcReq sz_xLbxPolyPointReq
+#define sz_xLbxPolyFillRectangleReq sz_xLbxPolyPointReq
+#define sz_xLbxPolyFillArc sz_xLbxPolyPointReq
+
+typedef struct _LbxFillPoly {
+ CARD8 reqType; /* always LbxReqCode */
+ CARD8 lbxReqType;
+ CARD16 length B16;
+ CARD8 cacheEnts;
+ BYTE shape;
+ CARD8 padBytes;
+} xLbxFillPolyReq;
+#define sz_xLbxFillPolyReq 7
+
+typedef struct _LbxCopyArea {
+ CARD8 reqType; /* always LbxReqCode */
+ CARD8 lbxReqType;
+ CARD16 length B16;
+ CARD8 srcCache; /* source drawable */
+ CARD8 cacheEnts; /* dest drawable and gc */
+ /* followed by encoded src x, src y, dst x, dst y, width, height */
+} xLbxCopyAreaReq;
+
+#define sz_xLbxCopyAreaReq 6
+
+typedef struct _LbxCopyPlane {
+ CARD8 reqType; /* always LbxReqCode */
+ CARD8 lbxReqType;
+ CARD16 length B16;
+ CARD32 bitPlane B32;
+ CARD8 srcCache; /* source drawable */
+ CARD8 cacheEnts; /* dest drawable and gc */
+ /* followed by encoded src x, src y, dst x, dst y, width, height */
+} xLbxCopyPlaneReq;
+
+#define sz_xLbxCopyPlaneReq 10
+
+typedef struct _LbxPolyText {
+ CARD8 reqType; /* always LbxReqCode */
+ CARD8 lbxReqType;
+ CARD16 length B16;
+ CARD8 cacheEnts;
+ /* followed by encoded src x, src y coordinates and text elts */
+} xLbxPolyTextReq;
+
+#define sz_xLbxPolyTextReq 5
+
+typedef xLbxPolyTextReq xLbxPolyText8Req;
+typedef xLbxPolyTextReq xLbxPolyText16Req;
+
+#define sz_xLbxPolyTextReq 5
+#define sz_xLbxPolyText8Req 5
+#define sz_xLbxPolyText16Req 5
+
+typedef struct _LbxImageText {
+ CARD8 reqType; /* always LbxReqCode */
+ CARD8 lbxReqType;
+ CARD16 length B16;
+ CARD8 cacheEnts;
+ CARD8 nChars;
+ /* followed by encoded src x, src y coordinates and string */
+} xLbxImageTextReq;
+
+typedef xLbxImageTextReq xLbxImageText8Req;
+typedef xLbxImageTextReq xLbxImageText16Req;
+
+#define sz_xLbxImageTextReq 6
+#define sz_xLbxImageText8Req 6
+#define sz_xLbxImageText16Req 6
+
+typedef struct {
+ CARD8 offset;
+ CARD8 diff;
+} xLbxDiffItem;
+#define sz_xLbxDiffItem 2
+
+typedef struct {
+ BYTE type; /* X_Reply */
+ CARD8 nOpts;
+ CARD16 sequenceNumber B16;
+ CARD32 length B32;
+ CARD32 optDataStart B32;
+ CARD32 pad0 B32;
+ CARD32 pad1 B32;
+ CARD32 pad2 B32;
+ CARD32 pad3 B32;
+ CARD32 pad4 B32;
+} xLbxStartReply;
+#define sz_xLbxStartReply 32
+#define sz_xLbxStartReplyHdr 8
+
+typedef struct _LbxQueryExtension {
+ CARD8 reqType; /* always LbxReqCode */
+ CARD8 lbxReqType; /* always X_LbxQueryExtension */
+ CARD16 length B16;
+ CARD32 nbytes B32;
+} xLbxQueryExtensionReq;
+#define sz_xLbxQueryExtensionReq 8
+
+typedef struct _LbxQueryExtensionReply {
+ BYTE type; /* X_Reply */
+ CARD8 numReqs;
+ CARD16 sequenceNumber B16;
+ CARD32 length B32;
+ BOOL present;
+ CARD8 major_opcode;
+ CARD8 first_event;
+ CARD8 first_error;
+ CARD32 pad0 B32;
+ CARD32 pad1 B32;
+ CARD32 pad2 B32;
+ CARD32 pad3 B32;
+ CARD32 pad4 B32;
+
+ /* reply & event generating requests */
+} xLbxQueryExtensionReply;
+#define sz_xLbxQueryExtensionReply 32
+
+
+typedef struct _LbxBeginLargeRequest {
+ CARD8 reqType; /* always LbxReqCode */
+ CARD8 lbxReqType; /* always X_LbxBeginLargeRequest */
+ CARD16 length B16;
+ CARD32 largeReqLength B32;
+} xLbxBeginLargeRequestReq;
+#define sz_BeginLargeRequestReq 8
+
+typedef struct _LbxLargeRequestData {
+ CARD8 reqType; /* always LbxReqCode */
+ CARD8 lbxReqType; /* always X_LbxLargeRequestData */
+ CARD16 length B16;
+ /* followed by LISTofCARD8 data */
+} xLbxLargeRequestDataReq;
+#define sz_LargeRequestDataReq 4
+
+typedef struct _LbxEndLargeRequest {
+ CARD8 reqType; /* always LbxReqCode */
+ CARD8 lbxReqType; /* always X_LbxEndLargeRequest */
+ CARD16 length B16;
+} xLbxEndLargeRequestReq;
+#define sz_EndLargeRequestReq 4
+
+
+
+typedef struct _LbxSwitchEvent {
+ BYTE type; /* always eventBase + LbxEvent */
+ BYTE lbxType; /* LbxSwitchEvent */
+ CARD16 pad B16;
+ CARD32 client B32;
+} xLbxSwitchEvent;
+#define sz_xLbxSwitchEvent 8
+
+typedef struct _LbxCloseEvent {
+ BYTE type; /* always eventBase + LbxEvent */
+ BYTE lbxType; /* LbxCloseEvent */
+ CARD16 sequenceNumber B16;
+ CARD32 client B32;
+ CARD32 pad1 B32;
+ CARD32 pad2 B32;
+ CARD32 pad3 B32;
+ CARD32 pad4 B32;
+ CARD32 pad5 B32;
+ CARD32 pad6 B32;
+} xLbxCloseEvent;
+#define sz_xLbxCloseEvent 32
+
+typedef struct _LbxInvalidateTagEvent {
+ BYTE type; /* always eventBase + LbxEvent */
+ BYTE lbxType; /* LbxInvalidateTagEvent */
+ CARD16 sequenceNumber B16;
+ CARD32 tag B32;
+ CARD32 tagType B32;
+ CARD32 pad1 B32;
+ CARD32 pad2 B32;
+ CARD32 pad3 B32;
+ CARD32 pad4 B32;
+ CARD32 pad5 B32;
+} xLbxInvalidateTagEvent;
+#define sz_xLbxInvalidateTagEvent 32
+
+typedef struct _LbxSendTagDataEvent {
+ BYTE type; /* always eventBase + LbxEvent */
+ BYTE lbxType; /* LbxSendTagDataEvent */
+ CARD16 sequenceNumber B16;
+ CARD32 tag B32;
+ CARD32 tagType B32;
+ CARD32 pad1 B32;
+ CARD32 pad2 B32;
+ CARD32 pad3 B32;
+ CARD32 pad4 B32;
+ CARD32 pad5 B32;
+} xLbxSendTagDataEvent;
+#define sz_xLbxSendTagDataEvent 32
+
+typedef struct _LbxListenToOneEvent {
+ BYTE type; /* always eventBase + LbxEvent */
+ BYTE lbxType; /* LbxListenToOneEvent */
+ CARD16 sequenceNumber B16;
+ CARD32 client B32;
+ CARD32 pad1 B32;
+ CARD32 pad2 B32;
+ CARD32 pad3 B32;
+ CARD32 pad4 B32;
+ CARD32 pad5 B32;
+ CARD32 pad6 B32;
+} xLbxListenToOneEvent;
+#define sz_xLbxListenToOneEvent 32
+
+typedef struct _LbxListenToAllEvent {
+ BYTE type; /* always eventBase + LbxEvent */
+ BYTE lbxType; /* LbxListenToAllEvent */
+ CARD16 sequenceNumber B16;
+ CARD32 pad1 B32;
+ CARD32 pad2 B32;
+ CARD32 pad3 B32;
+ CARD32 pad4 B32;
+ CARD32 pad5 B32;
+ CARD32 pad6 B32;
+ CARD32 pad7 B32;
+} xLbxListenToAllEvent;
+#define sz_xLbxListenToOneEvent 32
+
+typedef struct _LbxReleaseCmapEvent {
+ BYTE type; /* always eventBase + LbxEvent */
+ BYTE lbxType; /* LbxReleaseCmapEvent */
+ CARD16 sequenceNumber B16;
+ Colormap colormap B32;
+ CARD32 pad1 B32;
+ CARD32 pad2 B32;
+ CARD32 pad3 B32;
+ CARD32 pad4 B32;
+ CARD32 pad5 B32;
+ CARD32 pad6 B32;
+} xLbxReleaseCmapEvent;
+#define sz_xLbxReleaseCmapEvent 32
+
+
+typedef struct _LbxFreeCellsEvent {
+ BYTE type; /* always eventBase + LbxEvent */
+ BYTE lbxType; /* LbxFreeCellsEvent */
+ CARD16 sequenceNumber B16;
+ Colormap colormap B32;
+ CARD32 pixelStart B32;
+ CARD32 pixelEnd B32;
+ CARD32 pad1 B32;
+ CARD32 pad2 B32;
+ CARD32 pad3 B32;
+ CARD32 pad4 B32;
+} xLbxFreeCellsEvent;
+#define sz_xLbxFreeCellsEvent 32
+
+
+/*
+ * squished X event sizes. If these change, be sure to update lbxquish.c
+ * and unsquish.c appropriately
+ *
+ * lbxsz_* is the padded squished length
+ * lbxupsz_* is the unpadded squished length
+ */
+
+#define lbxsz_KeyButtonEvent 32
+#define lbxupsz_KeyButtonEvent 31
+
+#define lbxsz_EnterLeaveEvent 32
+#define lbxupsz_EnterLeaveEvent 32
+
+#define lbxsz_FocusEvent 12
+#define lbxupsz_FocusEvent 9
+
+#define lbxsz_KeymapEvent 32
+#define lbxupsz_KeymapEvent 32
+
+#define lbxsz_ExposeEvent 20
+#define lbxupsz_ExposeEvent 18
+
+#define lbxsz_GfxExposeEvent 24
+#define lbxupsz_GfxExposeEvent 21
+
+#define lbxsz_NoExposeEvent 12
+#define lbxupsz_NoExposeEvent 11
+
+#define lbxsz_VisibilityEvent 12
+#define lbxupsz_VisibilityEvent 9
+
+#define lbxsz_CreateNotifyEvent 24
+#define lbxupsz_CreateNotifyEvent 23
+
+#define lbxsz_DestroyNotifyEvent 12
+#define lbxupsz_DestroyNotifyEvent 12
+
+#define lbxsz_UnmapNotifyEvent 16
+#define lbxupsz_UnmapNotifyEvent 13
+
+#define lbxsz_MapNotifyEvent 16
+#define lbxupsz_MapNotifyEvent 13
+
+#define lbxsz_MapRequestEvent 12
+#define lbxupsz_MapRequestEvent 12
+
+#define lbxsz_ReparentEvent 24
+#define lbxupsz_ReparentEvent 21
+
+#define lbxsz_ConfigureNotifyEvent 28
+#define lbxupsz_ConfigureNotifyEvent 27
+
+#define lbxsz_ConfigureRequestEvent 28
+#define lbxupsz_ConfigureRequestEvent 28
+
+#define lbxsz_GravityEvent 16
+#define lbxupsz_GravityEvent 16
+
+#define lbxsz_ResizeRequestEvent 12
+#define lbxupsz_ResizeRequestEvent 12
+
+#define lbxsz_CirculateEvent 20
+#define lbxupsz_CirculateEvent 17
+
+#define lbxsz_PropertyEvent 20
+#define lbxupsz_PropertyEvent 17
+
+#define lbxsz_SelectionClearEvent 16
+#define lbxupsz_SelectionClearEvent 16
+
+#define lbxsz_SelectionRequestEvent 28
+#define lbxupsz_SelectionRequestEvent 28
+
+#define lbxsz_SelectionNotifyEvent 24
+#define lbxupsz_SelectionNotifyEvent 24
+
+#define lbxsz_ColormapEvent 16
+#define lbxupsz_ColormapEvent 14
+
+#define lbxsz_MappingNotifyEvent 8
+#define lbxupsz_MappingNotifyEvent 7
+
+#define lbxsz_ClientMessageEvent 32
+#define lbxupsz_ClientMessageEvent 32
+
+#define lbxsz_UnknownEvent 32
+
+#ifdef DEBUG
+
+#define DBG_SWITCH 0x00000001
+#define DBG_CLOSE 0x00000002
+#define DBG_IO 0x00000004
+#define DBG_READ_REQ 0x00000008
+#define DBG_LEN 0x00000010
+#define DBG_BLOCK 0x00000020
+#define DBG_CLIENT 0x00000040
+#define DBG_DELTA 0x00000080
+#endif
+/*
+ * Cancel the previous redefinition of the basic types, thus restoring their
+ * X.h definitions.
+ */
+
+#undef XID
+#undef Atom
+#undef Colormap
+#undef Drawable
+#undef VisualID
+#undef Window
+
+#endif /* _LBXPROTO_H_ */
diff --git a/X11/extensions/mitmiscconst.h b/X11/extensions/mitmiscconst.h
index 2e382747a..adc5f9420 100644
--- a/X11/extensions/mitmiscconst.h
+++ b/X11/extensions/mitmiscconst.h
@@ -1,38 +1,38 @@
-/************************************************************
-
-Copyright 1989, 1998 The Open Group
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall not be
-used in advertising or otherwise to promote the sale, use or other dealings
-in this Software without prior written authorization from The Open Group.
-
-********************************************************/
-
-/* RANDOM CRUFT! THIS HAS NO OFFICIAL X CONSORTIUM OR X PROJECT TEAM BLESSING */
-
-
-#ifndef _MITMISCCONST_H_
-#define _MITMISCCONST_H_
-
-#define MITMiscNumberEvents 0
-#define MITMiscNumberErrors 0
-
-#define MITMISCNAME "MIT-SUNDRY-NONSTANDARD"
-
-#endif
+/************************************************************
+
+Copyright 1989, 1998 The Open Group
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group shall not be
+used in advertising or otherwise to promote the sale, use or other dealings
+in this Software without prior written authorization from The Open Group.
+
+********************************************************/
+
+/* RANDOM CRUFT! THIS HAS NO OFFICIAL X CONSORTIUM OR X PROJECT TEAM BLESSING */
+
+
+#ifndef _MITMISCCONST_H_
+#define _MITMISCCONST_H_
+
+#define MITMiscNumberEvents 0
+#define MITMiscNumberErrors 0
+
+#define MITMISCNAME "MIT-SUNDRY-NONSTANDARD"
+
+#endif
diff --git a/X11/extensions/mitmiscproto.h b/X11/extensions/mitmiscproto.h
index 1f2ab6a40..18c202a84 100644
--- a/X11/extensions/mitmiscproto.h
+++ b/X11/extensions/mitmiscproto.h
@@ -1,68 +1,68 @@
-/************************************************************
-
-Copyright 1989, 1998 The Open Group
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall not be
-used in advertising or otherwise to promote the sale, use or other dealings
-in this Software without prior written authorization from The Open Group.
-
-********************************************************/
-
-/* RANDOM CRUFT! THIS HAS NO OFFICIAL X CONSORTIUM OR X PROJECT TEAM BLESSING */
-
-#ifndef _MITMISCPROTO_H_
-#define _MITMISCPROTO_H_
-
-#include <X11/extensions/mitmiscconst.h>
-
-#define X_MITSetBugMode 0
-#define X_MITGetBugMode 1
-
-typedef struct _SetBugMode {
- CARD8 reqType; /* always MITReqCode */
- CARD8 mitReqType; /* always X_MITSetBugMode */
- CARD16 length B16;
- BOOL onOff;
- BYTE pad0;
- CARD16 pad1;
-} xMITSetBugModeReq;
-#define sz_xMITSetBugModeReq 8
-
-typedef struct _GetBugMode {
- CARD8 reqType; /* always MITReqCode */
- CARD8 mitReqType; /* always X_MITGetBugMode */
- CARD16 length B16;
-} xMITGetBugModeReq;
-#define sz_xMITGetBugModeReq 4
-
-typedef struct {
- BYTE type; /* X_Reply */
- BOOL onOff;
- CARD16 sequenceNumber B16;
- CARD32 length B32;
- CARD32 pad0 B32;
- CARD32 pad1 B32;
- CARD32 pad2 B32;
- CARD32 pad3 B32;
- CARD32 pad4 B32;
- CARD32 pad5 B32;
-} xMITGetBugModeReply;
-#define sz_xMITGetBugModeReply 32
-
-#endif /* _MITMISCPROTO_H_ */
+/************************************************************
+
+Copyright 1989, 1998 The Open Group
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group shall not be
+used in advertising or otherwise to promote the sale, use or other dealings
+in this Software without prior written authorization from The Open Group.
+
+********************************************************/
+
+/* RANDOM CRUFT! THIS HAS NO OFFICIAL X CONSORTIUM OR X PROJECT TEAM BLESSING */
+
+#ifndef _MITMISCPROTO_H_
+#define _MITMISCPROTO_H_
+
+#include <X11/extensions/mitmiscconst.h>
+
+#define X_MITSetBugMode 0
+#define X_MITGetBugMode 1
+
+typedef struct _SetBugMode {
+ CARD8 reqType; /* always MITReqCode */
+ CARD8 mitReqType; /* always X_MITSetBugMode */
+ CARD16 length B16;
+ BOOL onOff;
+ BYTE pad0;
+ CARD16 pad1;
+} xMITSetBugModeReq;
+#define sz_xMITSetBugModeReq 8
+
+typedef struct _GetBugMode {
+ CARD8 reqType; /* always MITReqCode */
+ CARD8 mitReqType; /* always X_MITGetBugMode */
+ CARD16 length B16;
+} xMITGetBugModeReq;
+#define sz_xMITGetBugModeReq 4
+
+typedef struct {
+ BYTE type; /* X_Reply */
+ BOOL onOff;
+ CARD16 sequenceNumber B16;
+ CARD32 length B32;
+ CARD32 pad0 B32;
+ CARD32 pad1 B32;
+ CARD32 pad2 B32;
+ CARD32 pad3 B32;
+ CARD32 pad4 B32;
+ CARD32 pad5 B32;
+} xMITGetBugModeReply;
+#define sz_xMITGetBugModeReply 32
+
+#endif /* _MITMISCPROTO_H_ */
diff --git a/X11/extensions/multibufconst.h b/X11/extensions/multibufconst.h
index 328504640..2d1238c31 100644
--- a/X11/extensions/multibufconst.h
+++ b/X11/extensions/multibufconst.h
@@ -1,83 +1,83 @@
-/*
-Copyright 1989, 1998 The Open Group
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall not be
-used in advertising or otherwise to promote the sale, use or other dealings
-in this Software without prior written authorization from The Open Group.
- */
-
-#ifndef _MULTIBUFCONST_H_
-#define _MULTIBUFCONST_H_
-
-#define MULTIBUFFER_PROTOCOL_NAME "Multi-Buffering"
-
-#define MULTIBUFFER_MAJOR_VERSION 1 /* current version numbers */
-#define MULTIBUFFER_MINOR_VERSION 1 /* has ClearImageBufferArea */
-
-/*
- * update_action field
- */
-#define MultibufferUpdateActionUndefined 0
-#define MultibufferUpdateActionBackground 1
-#define MultibufferUpdateActionUntouched 2
-#define MultibufferUpdateActionCopied 3
-
-/*
- * update_hint field
- */
-#define MultibufferUpdateHintFrequent 0
-#define MultibufferUpdateHintIntermittent 1
-#define MultibufferUpdateHintStatic 2
-
-/*
- * valuemask fields
- */
-#define MultibufferWindowUpdateHint (1L << 0)
-#define MultibufferBufferEventMask (1L << 0)
-
-/*
- * mono vs. stereo and left vs. right
- */
-#define MultibufferModeMono 0
-#define MultibufferModeStereo 1
-#define MultibufferSideMono 0
-#define MultibufferSideLeft 1
-#define MultibufferSideRight 2
-
-/*
- * clobber state
- */
-#define MultibufferUnclobbered 0
-#define MultibufferPartiallyClobbered 1
-#define MultibufferFullyClobbered 2
-
-/*
- * event stuff
- */
-#define MultibufferClobberNotifyMask 0x02000000
-#define MultibufferUpdateNotifyMask 0x04000000
-
-#define MultibufferClobberNotify 0
-#define MultibufferUpdateNotify 1
-#define MultibufferNumberEvents (MultibufferUpdateNotify + 1)
-
-#define MultibufferBadBuffer 0
-#define MultibufferNumberErrors (MultibufferBadBuffer + 1)
-
-#endif /* _MULTIBUFCONST_H_ */
+/*
+Copyright 1989, 1998 The Open Group
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group shall not be
+used in advertising or otherwise to promote the sale, use or other dealings
+in this Software without prior written authorization from The Open Group.
+ */
+
+#ifndef _MULTIBUFCONST_H_
+#define _MULTIBUFCONST_H_
+
+#define MULTIBUFFER_PROTOCOL_NAME "Multi-Buffering"
+
+#define MULTIBUFFER_MAJOR_VERSION 1 /* current version numbers */
+#define MULTIBUFFER_MINOR_VERSION 1 /* has ClearImageBufferArea */
+
+/*
+ * update_action field
+ */
+#define MultibufferUpdateActionUndefined 0
+#define MultibufferUpdateActionBackground 1
+#define MultibufferUpdateActionUntouched 2
+#define MultibufferUpdateActionCopied 3
+
+/*
+ * update_hint field
+ */
+#define MultibufferUpdateHintFrequent 0
+#define MultibufferUpdateHintIntermittent 1
+#define MultibufferUpdateHintStatic 2
+
+/*
+ * valuemask fields
+ */
+#define MultibufferWindowUpdateHint (1L << 0)
+#define MultibufferBufferEventMask (1L << 0)
+
+/*
+ * mono vs. stereo and left vs. right
+ */
+#define MultibufferModeMono 0
+#define MultibufferModeStereo 1
+#define MultibufferSideMono 0
+#define MultibufferSideLeft 1
+#define MultibufferSideRight 2
+
+/*
+ * clobber state
+ */
+#define MultibufferUnclobbered 0
+#define MultibufferPartiallyClobbered 1
+#define MultibufferFullyClobbered 2
+
+/*
+ * event stuff
+ */
+#define MultibufferClobberNotifyMask 0x02000000
+#define MultibufferUpdateNotifyMask 0x04000000
+
+#define MultibufferClobberNotify 0
+#define MultibufferUpdateNotify 1
+#define MultibufferNumberEvents (MultibufferUpdateNotify + 1)
+
+#define MultibufferBadBuffer 0
+#define MultibufferNumberErrors (MultibufferBadBuffer + 1)
+
+#endif /* _MULTIBUFCONST_H_ */
diff --git a/X11/extensions/multibufproto.h b/X11/extensions/multibufproto.h
index a42ef72a3..e2184d3a8 100644
--- a/X11/extensions/multibufproto.h
+++ b/X11/extensions/multibufproto.h
@@ -1,295 +1,295 @@
-/*
-Copyright 1989, 1998 The Open Group
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall not be
-used in advertising or otherwise to promote the sale, use or other dealings
-in this Software without prior written authorization from The Open Group.
- */
-
-#ifndef _MULTIBUFPROTO_H_
-#define _MULTIBUFPROTO_H_
-
-#include <X11/extensions/multibufconst.h>
-
-/*
- * Protocol requests constants and alignment values
- */
-
-#define Window CARD32
-#define Drawable CARD32
-#define VisualID CARD32
-#define Multibuffer CARD32
-
-#define X_MbufGetBufferVersion 0
-#define X_MbufCreateImageBuffers 1
-#define X_MbufDestroyImageBuffers 2
-#define X_MbufDisplayImageBuffers 3
-#define X_MbufSetMBufferAttributes 4
-#define X_MbufGetMBufferAttributes 5
-#define X_MbufSetBufferAttributes 6
-#define X_MbufGetBufferAttributes 7
-#define X_MbufGetBufferInfo 8
-#define X_MbufCreateStereoWindow 9
-#define X_MbufClearImageBufferArea 10
-
-
-typedef struct xMbufBufferInfo {
- CARD32 visualID B32; /* associated visual */
- CARD16 maxBuffers B16; /* maximum supported buffers */
- CARD8 depth; /* depth of visual (redundant) */
- CARD8 unused;
-} xMbufBufferInfo;
-#define sz_xMbufBufferInfo 8
-
-typedef struct {
- BYTE type;
- BYTE unused;
- CARD16 sequenceNumber B16;
- CARD32 buffer B32; /* affected buffer */
- BYTE state; /* current status */
- CARD8 unused1;
- CARD16 unused2 B16;
- CARD32 unused3 B32;
- CARD32 unused4 B32;
- CARD32 unused5 B32;
- CARD32 unused6 B32;
- CARD32 unused7 B32;
-} xMbufClobberNotifyEvent;
-
-typedef struct {
- BYTE type;
- BYTE unused;
- CARD16 sequenceNumber B16;
- CARD32 buffer B32; /* affected buffer */
- CARD32 timeStamp B32; /* update time */
- CARD32 unused1 B32;
- CARD32 unused2 B32;
- CARD32 unused3 B32;
- CARD32 unused4 B32;
- CARD32 unused5 B32;
- CARD32 unused6 B32;
-} xMbufUpdateNotifyEvent;
-
-typedef struct {
- CARD8 reqType; /* always codes->major_opcode */
- CARD8 mbufReqType; /* always X_MbufGetBufferVersion */
- CARD16 length B16;
-} xMbufGetBufferVersionReq;
-#define sz_xMbufGetBufferVersionReq 4
-
-typedef struct {
- BYTE type; /* X_Reply */
- CARD8 unused; /* not used */
- CARD16 sequenceNumber B16;
- CARD32 length B32;
- CARD8 majorVersion; /* major version of Multi-Buffering protocol */
- CARD8 minorVersion; /* minor version of Multi-Buffering protocol */
- CARD16 pad1 B16;
- CARD32 pad2 B32;
- CARD32 pad3 B32;
- CARD32 pad4 B32;
- CARD32 pad5 B32;
- CARD32 pad6 B32;
-} xMbufGetBufferVersionReply;
-#define sz_xMbufGetBufferVersionReply 32
-
-typedef struct {
- CARD8 reqType; /* always codes->major_opcode */
- CARD8 mbufReqType; /* always X_MbufCreateImageBuffers */
- CARD16 length B16;
- CARD32 window B32; /* associated window */
- CARD8 updateAction; /* action at update */
- CARD8 updateHint; /* hint as to frequency of updates */
- CARD16 unused;
-} xMbufCreateImageBuffersReq; /* followed by buffer ids */
-#define sz_xMbufCreateImageBuffersReq 12
-
-typedef struct {
- BYTE type; /* X_Reply */
- CARD8 unused; /* not used */
- CARD16 sequenceNumber B16;
- CARD32 length B32;
- CARD16 numberBuffer B16; /* number successfully allocated */
- CARD16 unused1 B16;
- CARD32 unused2 B32;
- CARD32 unused3 B32;
- CARD32 unused4 B32;
- CARD32 unused5 B32;
- CARD32 unused6 B32;
-} xMbufCreateImageBuffersReply;
-#define sz_xMbufCreateImageBuffersReply 32
-
-typedef struct {
- CARD8 reqType; /* always codes->major_opcode */
- CARD8 mbufReqType; /* always X_MbufDestroyImageBuffers */
- CARD16 length B16;
- CARD32 window B32; /* associated window */
-} xMbufDestroyImageBuffersReq;
-#define sz_xMbufDestroyImageBuffersReq 8
-
-typedef struct {
- CARD8 reqType; /* always codes->major_opcode */
- CARD8 mbufReqType; /* always X_MbufDisplayImageBuffers */
- CARD16 length B16;
- CARD16 minDelay B16; /* minimum time between last update and now */
- CARD16 maxDelay B16; /* maximum time between last update and now */
-} xMbufDisplayImageBuffersReq; /* followed by list of buffers */
-#define sz_xMbufDisplayImageBuffersReq 8
-
-typedef struct {
- CARD8 reqType; /* always codes->major_opcode */
- CARD8 mbufReqType; /* always X_MbufSetMBufferAttributes */
- CARD16 length B16;
- CARD32 window B32; /* associated window */
- CARD32 valueMask B32; /* modified entries */
-} xMbufSetMBufferAttributesReq; /* followed by values */
-#define sz_xMbufSetMBufferAttributesReq 12
-
-typedef struct {
- CARD8 reqType; /* always codes->major_opcode */
- CARD8 mbufReqType; /* always X_MbufGetMBufferAttributes */
- CARD16 length B16;
- CARD32 window B32; /* associated window */
-} xMbufGetMBufferAttributesReq;
-#define sz_xMbufGetMBufferAttributesReq 8
-
-typedef struct {
- BYTE type; /* X_Reply */
- CARD8 unused; /* not used */
- CARD16 sequenceNumber B16;
- CARD32 length B32;
- CARD16 displayedBuffer B16; /* currently visible buffer */
- CARD8 updateAction;
- CARD8 updateHint;
- CARD8 windowMode;
- CARD8 unused0;
- CARD16 unused1 B16;
- CARD32 unused2 B32;
- CARD32 unused3 B32;
- CARD32 unused4 B32;
- CARD32 unused5 B32;
-} xMbufGetMBufferAttributesReply;
-#define sz_xMbufGetMBufferAttributesReply 32
-
-typedef struct {
- CARD8 reqType; /* always codes->major_opcode */
- CARD8 mbufReqType; /* always X_MbufSetBufferAttributes */
- CARD16 length B16;
- CARD32 buffer B32;
- CARD32 valueMask B32;
-} xMbufSetBufferAttributesReq; /* followed by values */
-#define sz_xMbufSetBufferAttributesReq 12
-
-typedef struct {
- CARD8 reqType; /* always codes->major_opcode */
- CARD8 mbufReqType; /* always X_MbufGetBufferAttributes */
- CARD16 length B16;
- CARD32 buffer B32;
-} xMbufGetBufferAttributesReq;
-#define sz_xMbufGetBufferAttributesReq 8
-
-typedef struct {
- BYTE type; /* X_Reply */
- CARD8 unused; /* not used */
- CARD16 sequenceNumber B16;
- CARD32 length B32;
- CARD32 window B32;
- CARD32 eventMask B32;
- CARD16 bufferIndex B16;
- CARD8 side;
- CARD8 unused0;
- CARD32 unused1 B32;
- CARD32 unused2 B32;
- CARD32 unused3 B32;
-} xMbufGetBufferAttributesReply;
-#define sz_xMbufGetBufferAttributesReply 32
-
-typedef struct {
- CARD8 reqType; /* always codes->major_opcode */
- CARD8 mbufReqType; /* always X_MbufGetBufferInfo */
- CARD16 length B16;
- Drawable drawable B32;
-} xMbufGetBufferInfoReq;
-#define sz_xMbufGetBufferInfoReq 8
-
-typedef struct {
- BYTE type; /* X_Reply */
- CARD8 unused; /* not used */
- CARD16 sequenceNumber B16;
- CARD32 length B32;
- CARD16 normalInfo B16;
- CARD16 stereoInfo B16;
- CARD32 unused1 B32;
- CARD32 unused2 B32;
- CARD32 unused3 B32;
- CARD32 unused4 B32;
- CARD32 unused5 B32;
-} xMbufGetBufferInfoReply; /* followed by buffer infos */
-#define sz_xMbufGetBufferInfoReply 32
-
-
-typedef struct {
- CARD8 reqType; /* always codes->major_opcode */
- CARD8 mbufReqType; /* always X_MbufCreateStereoWindow */
- CARD16 length B16;
- CARD8 unused0;
- CARD8 unused1;
- CARD8 unused2;
- CARD8 depth;
- Window wid B32;
- Window parent B32;
- Multibuffer left B32; /* associated buffers */
- Multibuffer right B32;
- INT16 x B16;
- INT16 y B16;
- CARD16 width B16;
- CARD16 height B16;
- CARD16 borderWidth B16;
-#if defined(__cplusplus) || defined(c_plusplus)
- CARD16 c_class B16;
-#else
- CARD16 class B16;
-#endif
- VisualID visual B32;
- CARD32 mask B32;
-} xMbufCreateStereoWindowReq; /* followed by value list */
-#define sz_xMbufCreateStereoWindowReq 44
-
-typedef struct {
- CARD8 reqType; /* always codes->major_opcode */
- CARD8 mbufReqType; /* always X_MbufClearImageBufferArea */
- CARD16 length B16;
- Multibuffer buffer B32;
- INT16 x B16;
- INT16 y B16;
- CARD16 width B16;
- CARD16 height B16;
- CARD8 unused0;
- CARD8 unused1;
- CARD8 unused2;
- BOOL exposures;
-} xMbufClearImageBufferAreaReq;
-#define sz_xMbufClearImageBufferAreaReq 20
-
-#undef Window
-#undef Drawable
-#undef VisualID
-#undef Multibuffer
-
-#endif /* _MULTIBUFPROTO_H_ */
+/*
+Copyright 1989, 1998 The Open Group
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group shall not be
+used in advertising or otherwise to promote the sale, use or other dealings
+in this Software without prior written authorization from The Open Group.
+ */
+
+#ifndef _MULTIBUFPROTO_H_
+#define _MULTIBUFPROTO_H_
+
+#include <X11/extensions/multibufconst.h>
+
+/*
+ * Protocol requests constants and alignment values
+ */
+
+#define Window CARD32
+#define Drawable CARD32
+#define VisualID CARD32
+#define Multibuffer CARD32
+
+#define X_MbufGetBufferVersion 0
+#define X_MbufCreateImageBuffers 1
+#define X_MbufDestroyImageBuffers 2
+#define X_MbufDisplayImageBuffers 3
+#define X_MbufSetMBufferAttributes 4
+#define X_MbufGetMBufferAttributes 5
+#define X_MbufSetBufferAttributes 6
+#define X_MbufGetBufferAttributes 7
+#define X_MbufGetBufferInfo 8
+#define X_MbufCreateStereoWindow 9
+#define X_MbufClearImageBufferArea 10
+
+
+typedef struct xMbufBufferInfo {
+ CARD32 visualID B32; /* associated visual */
+ CARD16 maxBuffers B16; /* maximum supported buffers */
+ CARD8 depth; /* depth of visual (redundant) */
+ CARD8 unused;
+} xMbufBufferInfo;
+#define sz_xMbufBufferInfo 8
+
+typedef struct {
+ BYTE type;
+ BYTE unused;
+ CARD16 sequenceNumber B16;
+ CARD32 buffer B32; /* affected buffer */
+ BYTE state; /* current status */
+ CARD8 unused1;
+ CARD16 unused2 B16;
+ CARD32 unused3 B32;
+ CARD32 unused4 B32;
+ CARD32 unused5 B32;
+ CARD32 unused6 B32;
+ CARD32 unused7 B32;
+} xMbufClobberNotifyEvent;
+
+typedef struct {
+ BYTE type;
+ BYTE unused;
+ CARD16 sequenceNumber B16;
+ CARD32 buffer B32; /* affected buffer */
+ CARD32 timeStamp B32; /* update time */
+ CARD32 unused1 B32;
+ CARD32 unused2 B32;
+ CARD32 unused3 B32;
+ CARD32 unused4 B32;
+ CARD32 unused5 B32;
+ CARD32 unused6 B32;
+} xMbufUpdateNotifyEvent;
+
+typedef struct {
+ CARD8 reqType; /* always codes->major_opcode */
+ CARD8 mbufReqType; /* always X_MbufGetBufferVersion */
+ CARD16 length B16;
+} xMbufGetBufferVersionReq;
+#define sz_xMbufGetBufferVersionReq 4
+
+typedef struct {
+ BYTE type; /* X_Reply */
+ CARD8 unused; /* not used */
+ CARD16 sequenceNumber B16;
+ CARD32 length B32;
+ CARD8 majorVersion; /* major version of Multi-Buffering protocol */
+ CARD8 minorVersion; /* minor version of Multi-Buffering protocol */
+ CARD16 pad1 B16;
+ CARD32 pad2 B32;
+ CARD32 pad3 B32;
+ CARD32 pad4 B32;
+ CARD32 pad5 B32;
+ CARD32 pad6 B32;
+} xMbufGetBufferVersionReply;
+#define sz_xMbufGetBufferVersionReply 32
+
+typedef struct {
+ CARD8 reqType; /* always codes->major_opcode */
+ CARD8 mbufReqType; /* always X_MbufCreateImageBuffers */
+ CARD16 length B16;
+ CARD32 window B32; /* associated window */
+ CARD8 updateAction; /* action at update */
+ CARD8 updateHint; /* hint as to frequency of updates */
+ CARD16 unused;
+} xMbufCreateImageBuffersReq; /* followed by buffer ids */
+#define sz_xMbufCreateImageBuffersReq 12
+
+typedef struct {
+ BYTE type; /* X_Reply */
+ CARD8 unused; /* not used */
+ CARD16 sequenceNumber B16;
+ CARD32 length B32;
+ CARD16 numberBuffer B16; /* number successfully allocated */
+ CARD16 unused1 B16;
+ CARD32 unused2 B32;
+ CARD32 unused3 B32;
+ CARD32 unused4 B32;
+ CARD32 unused5 B32;
+ CARD32 unused6 B32;
+} xMbufCreateImageBuffersReply;
+#define sz_xMbufCreateImageBuffersReply 32
+
+typedef struct {
+ CARD8 reqType; /* always codes->major_opcode */
+ CARD8 mbufReqType; /* always X_MbufDestroyImageBuffers */
+ CARD16 length B16;
+ CARD32 window B32; /* associated window */
+} xMbufDestroyImageBuffersReq;
+#define sz_xMbufDestroyImageBuffersReq 8
+
+typedef struct {
+ CARD8 reqType; /* always codes->major_opcode */
+ CARD8 mbufReqType; /* always X_MbufDisplayImageBuffers */
+ CARD16 length B16;
+ CARD16 minDelay B16; /* minimum time between last update and now */
+ CARD16 maxDelay B16; /* maximum time between last update and now */
+} xMbufDisplayImageBuffersReq; /* followed by list of buffers */
+#define sz_xMbufDisplayImageBuffersReq 8
+
+typedef struct {
+ CARD8 reqType; /* always codes->major_opcode */
+ CARD8 mbufReqType; /* always X_MbufSetMBufferAttributes */
+ CARD16 length B16;
+ CARD32 window B32; /* associated window */
+ CARD32 valueMask B32; /* modified entries */
+} xMbufSetMBufferAttributesReq; /* followed by values */
+#define sz_xMbufSetMBufferAttributesReq 12
+
+typedef struct {
+ CARD8 reqType; /* always codes->major_opcode */
+ CARD8 mbufReqType; /* always X_MbufGetMBufferAttributes */
+ CARD16 length B16;
+ CARD32 window B32; /* associated window */
+} xMbufGetMBufferAttributesReq;
+#define sz_xMbufGetMBufferAttributesReq 8
+
+typedef struct {
+ BYTE type; /* X_Reply */
+ CARD8 unused; /* not used */
+ CARD16 sequenceNumber B16;
+ CARD32 length B32;
+ CARD16 displayedBuffer B16; /* currently visible buffer */
+ CARD8 updateAction;
+ CARD8 updateHint;
+ CARD8 windowMode;
+ CARD8 unused0;
+ CARD16 unused1 B16;
+ CARD32 unused2 B32;
+ CARD32 unused3 B32;
+ CARD32 unused4 B32;
+ CARD32 unused5 B32;
+} xMbufGetMBufferAttributesReply;
+#define sz_xMbufGetMBufferAttributesReply 32
+
+typedef struct {
+ CARD8 reqType; /* always codes->major_opcode */
+ CARD8 mbufReqType; /* always X_MbufSetBufferAttributes */
+ CARD16 length B16;
+ CARD32 buffer B32;
+ CARD32 valueMask B32;
+} xMbufSetBufferAttributesReq; /* followed by values */
+#define sz_xMbufSetBufferAttributesReq 12
+
+typedef struct {
+ CARD8 reqType; /* always codes->major_opcode */
+ CARD8 mbufReqType; /* always X_MbufGetBufferAttributes */
+ CARD16 length B16;
+ CARD32 buffer B32;
+} xMbufGetBufferAttributesReq;
+#define sz_xMbufGetBufferAttributesReq 8
+
+typedef struct {
+ BYTE type; /* X_Reply */
+ CARD8 unused; /* not used */
+ CARD16 sequenceNumber B16;
+ CARD32 length B32;
+ CARD32 window B32;
+ CARD32 eventMask B32;
+ CARD16 bufferIndex B16;
+ CARD8 side;
+ CARD8 unused0;
+ CARD32 unused1 B32;
+ CARD32 unused2 B32;
+ CARD32 unused3 B32;
+} xMbufGetBufferAttributesReply;
+#define sz_xMbufGetBufferAttributesReply 32
+
+typedef struct {
+ CARD8 reqType; /* always codes->major_opcode */
+ CARD8 mbufReqType; /* always X_MbufGetBufferInfo */
+ CARD16 length B16;
+ Drawable drawable B32;
+} xMbufGetBufferInfoReq;
+#define sz_xMbufGetBufferInfoReq 8
+
+typedef struct {
+ BYTE type; /* X_Reply */
+ CARD8 unused; /* not used */
+ CARD16 sequenceNumber B16;
+ CARD32 length B32;
+ CARD16 normalInfo B16;
+ CARD16 stereoInfo B16;
+ CARD32 unused1 B32;
+ CARD32 unused2 B32;
+ CARD32 unused3 B32;
+ CARD32 unused4 B32;
+ CARD32 unused5 B32;
+} xMbufGetBufferInfoReply; /* followed by buffer infos */
+#define sz_xMbufGetBufferInfoReply 32
+
+
+typedef struct {
+ CARD8 reqType; /* always codes->major_opcode */
+ CARD8 mbufReqType; /* always X_MbufCreateStereoWindow */
+ CARD16 length B16;
+ CARD8 unused0;
+ CARD8 unused1;
+ CARD8 unused2;
+ CARD8 depth;
+ Window wid B32;
+ Window parent B32;
+ Multibuffer left B32; /* associated buffers */
+ Multibuffer right B32;
+ INT16 x B16;
+ INT16 y B16;
+ CARD16 width B16;
+ CARD16 height B16;
+ CARD16 borderWidth B16;
+#if defined(__cplusplus) || defined(c_plusplus)
+ CARD16 c_class B16;
+#else
+ CARD16 class B16;
+#endif
+ VisualID visual B32;
+ CARD32 mask B32;
+} xMbufCreateStereoWindowReq; /* followed by value list */
+#define sz_xMbufCreateStereoWindowReq 44
+
+typedef struct {
+ CARD8 reqType; /* always codes->major_opcode */
+ CARD8 mbufReqType; /* always X_MbufClearImageBufferArea */
+ CARD16 length B16;
+ Multibuffer buffer B32;
+ INT16 x B16;
+ INT16 y B16;
+ CARD16 width B16;
+ CARD16 height B16;
+ CARD8 unused0;
+ CARD8 unused1;
+ CARD8 unused2;
+ BOOL exposures;
+} xMbufClearImageBufferAreaReq;
+#define sz_xMbufClearImageBufferAreaReq 20
+
+#undef Window
+#undef Drawable
+#undef VisualID
+#undef Multibuffer
+
+#endif /* _MULTIBUFPROTO_H_ */
diff --git a/X11/extensions/secur.h b/X11/extensions/secur.h
index 3721672da..ca27b29e6 100644
--- a/X11/extensions/secur.h
+++ b/X11/extensions/secur.h
@@ -1,61 +1,61 @@
-/*
-Copyright 1996, 1998 The Open Group
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
-
-The above copyright notice and this permission notice shall be included
-in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
-IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR
-OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
-ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall
-not be used in advertising or otherwise to promote the sale, use or
-other dealings in this Software without prior written authorization
-from The Open Group.
-*/
-
-#ifndef _SECUR_H
-#define _SECUR_H
-
-#define SECURITY_EXTENSION_NAME "SECURITY"
-#define SECURITY_MAJOR_VERSION 1
-#define SECURITY_MINOR_VERSION 0
-
-#define XSecurityNumberEvents 1
-#define XSecurityNumberErrors 2
-#define XSecurityBadAuthorization 0
-#define XSecurityBadAuthorizationProtocol 1
-
-/* trust levels */
-#define XSecurityClientTrusted 0
-#define XSecurityClientUntrusted 1
-
-/* authorization attribute masks */
-#define XSecurityTimeout (1<<0)
-#define XSecurityTrustLevel (1<<1)
-#define XSecurityGroup (1<<2)
-#define XSecurityEventMask (1<<3)
-#define XSecurityAllAuthorizationAttributes \
- (XSecurityTimeout | XSecurityTrustLevel | XSecurityGroup | XSecurityEventMask)
-
-/* event masks */
-#define XSecurityAuthorizationRevokedMask (1<<0)
-#define XSecurityAllEventMasks XSecurityAuthorizationRevokedMask
-
-/* event offsets */
-#define XSecurityAuthorizationRevoked 0
-
-#define XSecurityAuthorizationName "XC-QUERY-SECURITY-1"
-#define XSecurityAuthorizationNameLen 19
-
-#endif /* _SECUR_H */
+/*
+Copyright 1996, 1998 The Open Group
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
+
+The above copyright notice and this permission notice shall be included
+in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR
+OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
+ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group shall
+not be used in advertising or otherwise to promote the sale, use or
+other dealings in this Software without prior written authorization
+from The Open Group.
+*/
+
+#ifndef _SECUR_H
+#define _SECUR_H
+
+#define SECURITY_EXTENSION_NAME "SECURITY"
+#define SECURITY_MAJOR_VERSION 1
+#define SECURITY_MINOR_VERSION 0
+
+#define XSecurityNumberEvents 1
+#define XSecurityNumberErrors 2
+#define XSecurityBadAuthorization 0
+#define XSecurityBadAuthorizationProtocol 1
+
+/* trust levels */
+#define XSecurityClientTrusted 0
+#define XSecurityClientUntrusted 1
+
+/* authorization attribute masks */
+#define XSecurityTimeout (1<<0)
+#define XSecurityTrustLevel (1<<1)
+#define XSecurityGroup (1<<2)
+#define XSecurityEventMask (1<<3)
+#define XSecurityAllAuthorizationAttributes \
+ (XSecurityTimeout | XSecurityTrustLevel | XSecurityGroup | XSecurityEventMask)
+
+/* event masks */
+#define XSecurityAuthorizationRevokedMask (1<<0)
+#define XSecurityAllEventMasks XSecurityAuthorizationRevokedMask
+
+/* event offsets */
+#define XSecurityAuthorizationRevoked 0
+
+#define XSecurityAuthorizationName "XC-QUERY-SECURITY-1"
+#define XSecurityAuthorizationNameLen 19
+
+#endif /* _SECUR_H */
diff --git a/X11/extensions/securproto.h b/X11/extensions/securproto.h
index 56cd475cc..409a4c5d0 100644
--- a/X11/extensions/securproto.h
+++ b/X11/extensions/securproto.h
@@ -1,110 +1,110 @@
-/*
-Copyright 1996, 1998 The Open Group
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
-
-The above copyright notice and this permission notice shall be included
-in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
-IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR
-OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
-ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall
-not be used in advertising or otherwise to promote the sale, use or
-other dealings in this Software without prior written authorization
-from The Open Group.
-*/
-
-#ifndef _SECURPROTO_H
-#define _SECURPROTO_H
-
-#include <X11/extensions/secur.h>
-
-#define X_SecurityQueryVersion 0
-#define X_SecurityGenerateAuthorization 1
-#define X_SecurityRevokeAuthorization 2
-
-typedef struct {
- CARD8 reqType;
- CARD8 securityReqType;
- CARD16 length B16;
- CARD16 majorVersion B16;
- CARD16 minorVersion B16;
-} xSecurityQueryVersionReq;
-#define sz_xSecurityQueryVersionReq 8
-
-typedef struct {
- CARD8 type;
- CARD8 pad0;
- CARD16 sequenceNumber B16;
- CARD32 length B32;
- CARD16 majorVersion B16;
- CARD16 minorVersion B16;
- CARD32 pad1 B32;
- CARD32 pad2 B32;
- CARD32 pad3 B32;
- CARD32 pad4 B32;
- CARD32 pad5 B32;
- } xSecurityQueryVersionReply;
-#define sz_xSecurityQueryVersionReply 32
-
-typedef struct {
- CARD8 reqType;
- CARD8 securityReqType;
- CARD16 length B16;
- CARD16 nbytesAuthProto B16;
- CARD16 nbytesAuthData B16;
- CARD32 valueMask B32;
- /* auth protocol name padded to 4 bytes */
- /* auth protocol data padded to 4 bytes */
- /* list of CARD32 values, if any */
-} xSecurityGenerateAuthorizationReq;
-#define sz_xSecurityGenerateAuthorizationReq 12
-
-typedef struct {
- CARD8 type;
- CARD8 pad0;
- CARD16 sequenceNumber B16;
- CARD32 length B32;
- CARD32 authId B32;
- CARD16 dataLength B16;
- CARD16 pad1 B16;
- CARD32 pad2 B32;
- CARD32 pad3 B32;
- CARD32 pad4 B32;
- CARD32 pad5 B32;
- } xSecurityGenerateAuthorizationReply;
-#define sz_xSecurityGenerateAuthorizationReply 32
-
-typedef struct {
- CARD8 reqType;
- CARD8 securityReqType;
- CARD16 length B16;
- CARD32 authId B32;
-} xSecurityRevokeAuthorizationReq;
-#define sz_xSecurityRevokeAuthorizationReq 8
-
-typedef struct _xSecurityAuthorizationRevokedEvent {
- BYTE type;
- BYTE detail;
- CARD16 sequenceNumber B16;
- CARD32 authId B32;
- CARD32 pad0 B32;
- CARD32 pad1 B32;
- CARD32 pad2 B32;
- CARD32 pad3 B32;
- CARD32 pad4 B32;
- CARD32 pad5 B32;
-} xSecurityAuthorizationRevokedEvent;
-#define sz_xSecurityAuthorizationRevokedEvent 32
-
-#endif /* _SECURPROTO_H */
+/*
+Copyright 1996, 1998 The Open Group
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
+
+The above copyright notice and this permission notice shall be included
+in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR
+OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
+ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group shall
+not be used in advertising or otherwise to promote the sale, use or
+other dealings in this Software without prior written authorization
+from The Open Group.
+*/
+
+#ifndef _SECURPROTO_H
+#define _SECURPROTO_H
+
+#include <X11/extensions/secur.h>
+
+#define X_SecurityQueryVersion 0
+#define X_SecurityGenerateAuthorization 1
+#define X_SecurityRevokeAuthorization 2
+
+typedef struct {
+ CARD8 reqType;
+ CARD8 securityReqType;
+ CARD16 length B16;
+ CARD16 majorVersion B16;
+ CARD16 minorVersion B16;
+} xSecurityQueryVersionReq;
+#define sz_xSecurityQueryVersionReq 8
+
+typedef struct {
+ CARD8 type;
+ CARD8 pad0;
+ CARD16 sequenceNumber B16;
+ CARD32 length B32;
+ CARD16 majorVersion B16;
+ CARD16 minorVersion B16;
+ CARD32 pad1 B32;
+ CARD32 pad2 B32;
+ CARD32 pad3 B32;
+ CARD32 pad4 B32;
+ CARD32 pad5 B32;
+ } xSecurityQueryVersionReply;
+#define sz_xSecurityQueryVersionReply 32
+
+typedef struct {
+ CARD8 reqType;
+ CARD8 securityReqType;
+ CARD16 length B16;
+ CARD16 nbytesAuthProto B16;
+ CARD16 nbytesAuthData B16;
+ CARD32 valueMask B32;
+ /* auth protocol name padded to 4 bytes */
+ /* auth protocol data padded to 4 bytes */
+ /* list of CARD32 values, if any */
+} xSecurityGenerateAuthorizationReq;
+#define sz_xSecurityGenerateAuthorizationReq 12
+
+typedef struct {
+ CARD8 type;
+ CARD8 pad0;
+ CARD16 sequenceNumber B16;
+ CARD32 length B32;
+ CARD32 authId B32;
+ CARD16 dataLength B16;
+ CARD16 pad1 B16;
+ CARD32 pad2 B32;
+ CARD32 pad3 B32;
+ CARD32 pad4 B32;
+ CARD32 pad5 B32;
+ } xSecurityGenerateAuthorizationReply;
+#define sz_xSecurityGenerateAuthorizationReply 32
+
+typedef struct {
+ CARD8 reqType;
+ CARD8 securityReqType;
+ CARD16 length B16;
+ CARD32 authId B32;
+} xSecurityRevokeAuthorizationReq;
+#define sz_xSecurityRevokeAuthorizationReq 8
+
+typedef struct _xSecurityAuthorizationRevokedEvent {
+ BYTE type;
+ BYTE detail;
+ CARD16 sequenceNumber B16;
+ CARD32 authId B32;
+ CARD32 pad0 B32;
+ CARD32 pad1 B32;
+ CARD32 pad2 B32;
+ CARD32 pad3 B32;
+ CARD32 pad4 B32;
+ CARD32 pad5 B32;
+} xSecurityAuthorizationRevokedEvent;
+#define sz_xSecurityAuthorizationRevokedEvent 32
+
+#endif /* _SECURPROTO_H */
diff --git a/X11/extensions/shapeconst.h b/X11/extensions/shapeconst.h
index 75b541951..9088956f1 100644
--- a/X11/extensions/shapeconst.h
+++ b/X11/extensions/shapeconst.h
@@ -1,55 +1,55 @@
-/************************************************************
-
-Copyright 1989, 1998 The Open Group
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall not be
-used in advertising or otherwise to promote the sale, use or other dealings
-in this Software without prior written authorization from The Open Group.
-
-********************************************************/
-
-#ifndef _SHAPECONST_H_
-#define _SHAPECONST_H_
-
-/*
- * Protocol requests constants and alignment values
- * These would really be in SHAPE's X.h and Xproto.h equivalents
- */
-
-#define SHAPENAME "SHAPE"
-
-#define SHAPE_MAJOR_VERSION 1 /* current version numbers */
-#define SHAPE_MINOR_VERSION 1
-
-#define ShapeSet 0
-#define ShapeUnion 1
-#define ShapeIntersect 2
-#define ShapeSubtract 3
-#define ShapeInvert 4
-
-#define ShapeBounding 0
-#define ShapeClip 1
-#define ShapeInput 2
-
-#define ShapeNotifyMask (1L << 0)
-#define ShapeNotify 0
-
-#define ShapeNumberEvents (ShapeNotify + 1)
-
-#endif /* _SHAPECONST_H_ */
+/************************************************************
+
+Copyright 1989, 1998 The Open Group
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group shall not be
+used in advertising or otherwise to promote the sale, use or other dealings
+in this Software without prior written authorization from The Open Group.
+
+********************************************************/
+
+#ifndef _SHAPECONST_H_
+#define _SHAPECONST_H_
+
+/*
+ * Protocol requests constants and alignment values
+ * These would really be in SHAPE's X.h and Xproto.h equivalents
+ */
+
+#define SHAPENAME "SHAPE"
+
+#define SHAPE_MAJOR_VERSION 1 /* current version numbers */
+#define SHAPE_MINOR_VERSION 1
+
+#define ShapeSet 0
+#define ShapeUnion 1
+#define ShapeIntersect 2
+#define ShapeSubtract 3
+#define ShapeInvert 4
+
+#define ShapeBounding 0
+#define ShapeClip 1
+#define ShapeInput 2
+
+#define ShapeNotifyMask (1L << 0)
+#define ShapeNotify 0
+
+#define ShapeNumberEvents (ShapeNotify + 1)
+
+#endif /* _SHAPECONST_H_ */
diff --git a/X11/extensions/shapeproto.h b/X11/extensions/shapeproto.h
index aba393b0f..49bd1a1a4 100644
--- a/X11/extensions/shapeproto.h
+++ b/X11/extensions/shapeproto.h
@@ -1,237 +1,237 @@
-/************************************************************
-
-Copyright 1989, 1998 The Open Group
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall not be
-used in advertising or otherwise to promote the sale, use or other dealings
-in this Software without prior written authorization from The Open Group.
-
-********************************************************/
-
-#ifndef _SHAPEPROTO_H_
-#define _SHAPEPROTO_H_
-
-#include <X11/extensions/shapeconst.h>
-
-/*
- * Protocol requests constants and alignment values
- * These would really be in SHAPE's X.h and Xproto.h equivalents
- */
-
-#define Window CARD32
-#define Time CARD32
-
-#define X_ShapeQueryVersion 0
-#define X_ShapeRectangles 1
-#define X_ShapeMask 2
-#define X_ShapeCombine 3
-#define X_ShapeOffset 4
-#define X_ShapeQueryExtents 5
-#define X_ShapeSelectInput 6
-#define X_ShapeInputSelected 7
-#define X_ShapeGetRectangles 8
-
-typedef struct _ShapeQueryVersion {
- CARD8 reqType; /* always ShapeReqCode */
- CARD8 shapeReqType; /* always X_ShapeQueryVersion */
- CARD16 length B16;
-} xShapeQueryVersionReq;
-#define sz_xShapeQueryVersionReq 4
-
-typedef struct {
- BYTE type; /* X_Reply */
- CARD8 unused; /* not used */
- CARD16 sequenceNumber B16;
- CARD32 length B32;
- CARD16 majorVersion B16; /* major version of SHAPE protocol */
- CARD16 minorVersion B16; /* minor version of SHAPE protocol */
- CARD32 pad0 B32;
- CARD32 pad1 B32;
- CARD32 pad2 B32;
- CARD32 pad3 B32;
- CARD32 pad4 B32;
-} xShapeQueryVersionReply;
-#define sz_xShapeQueryVersionReply 32
-
-typedef struct _ShapeRectangles {
- CARD8 reqType; /* always ShapeReqCode */
- CARD8 shapeReqType; /* always X_ShapeRectangles */
- CARD16 length B16;
- CARD8 op; /* Set, ... */
- CARD8 destKind; /* ShapeBounding or ShapeClip */
- CARD8 ordering; /* UnSorted, YSorted, YXSorted, YXBanded */
- CARD8 pad0; /* not used */
- Window dest B32;
- INT16 xOff B16;
- INT16 yOff B16;
-} xShapeRectanglesReq; /* followed by xRects */
-#define sz_xShapeRectanglesReq 16
-
-typedef struct _ShapeMask {
- CARD8 reqType; /* always ShapeReqCode */
- CARD8 shapeReqType; /* always X_ShapeMask */
- CARD16 length B16;
-
- CARD8 op; /* Set, ... */
- CARD8 destKind; /* ShapeBounding or ShapeClip */
- CARD16 junk B16; /* not used */
-
- Window dest B32;
- INT16 xOff B16;
- INT16 yOff B16;
- CARD32 src B32; /* 1 bit pixmap */
-} xShapeMaskReq;
-#define sz_xShapeMaskReq 20
-
-typedef struct _ShapeCombine {
- CARD8 reqType; /* always ShapeReqCode */
- CARD8 shapeReqType; /* always X_ShapeCombine */
- CARD16 length B16;
- CARD8 op; /* Set, ... */
- CARD8 destKind; /* ShapeBounding or ShapeClip */
- CARD8 srcKind; /* ShapeBounding or ShapeClip */
- CARD8 junk; /* not used */
- Window dest B32;
- INT16 xOff B16;
- INT16 yOff B16;
- Window src B32;
-} xShapeCombineReq;
-#define sz_xShapeCombineReq 20
-
-typedef struct _ShapeOffset {
- CARD8 reqType; /* always ShapeReqCode */
- CARD8 shapeReqType; /* always X_ShapeOffset */
- CARD16 length B16;
- CARD8 destKind; /* ShapeBounding or ShapeClip */
- CARD8 junk1; /* not used */
- CARD16 junk2 B16; /* not used */
- Window dest B32;
- INT16 xOff B16;
- INT16 yOff B16;
-} xShapeOffsetReq;
-#define sz_xShapeOffsetReq 16
-
-typedef struct _ShapeQueryExtents {
- CARD8 reqType; /* always ShapeReqCode */
- CARD8 shapeReqType; /* always X_ShapeQueryExtents */
- CARD16 length B16;
- Window window B32;
-} xShapeQueryExtentsReq;
-#define sz_xShapeQueryExtentsReq 8
-
-typedef struct {
- BYTE type; /* X_Reply */
- CARD8 unused; /* not used */
- CARD16 sequenceNumber B16;
- CARD32 length B32; /* 0 */
- CARD8 boundingShaped; /* window has bounding shape */
- CARD8 clipShaped; /* window has clip shape */
- CARD16 unused1 B16;
- INT16 xBoundingShape B16; /* extents of bounding shape */
- INT16 yBoundingShape B16;
- CARD16 widthBoundingShape B16;
- CARD16 heightBoundingShape B16;
- INT16 xClipShape B16; /* extents of clip shape */
- INT16 yClipShape B16;
- CARD16 widthClipShape B16;
- CARD16 heightClipShape B16;
- CARD32 pad1 B32;
-} xShapeQueryExtentsReply;
-#define sz_xShapeQueryExtentsReply 32
-
-typedef struct _ShapeSelectInput {
- CARD8 reqType; /* always ShapeReqCode */
- CARD8 shapeReqType; /* always X_ShapeSelectInput */
- CARD16 length B16;
- Window window B32;
- BYTE enable; /* xTrue -> send events */
- BYTE pad1;
- CARD16 pad2 B16;
-} xShapeSelectInputReq;
-#define sz_xShapeSelectInputReq 12
-
-typedef struct _ShapeNotify {
- BYTE type; /* always eventBase + ShapeNotify */
- BYTE kind; /* either ShapeBounding or ShapeClip */
- CARD16 sequenceNumber B16;
- Window window B32;
- INT16 x B16;
- INT16 y B16; /* extents of new shape */
- CARD16 width B16;
- CARD16 height B16;
- Time time B32; /* time of change */
- BYTE shaped; /* set when a shape actual exists */
- BYTE pad0;
- CARD16 pad1 B16;
- CARD32 pad2 B32;
- CARD32 pad3 B32;
-} xShapeNotifyEvent;
-#define sz_xShapeNotifyEvent 32
-
-typedef struct _ShapeInputSelected {
- CARD8 reqType; /* always ShapeReqCode */
- CARD8 shapeReqType; /* always X_ShapeInputSelected */
- CARD16 length B16;
- Window window B32;
-} xShapeInputSelectedReq;
-#define sz_xShapeInputSelectedReq 8
-
-typedef struct {
- BYTE type; /* X_Reply */
- CARD8 enabled; /* current status */
- CARD16 sequenceNumber B16;
- CARD32 length B32; /* 0 */
- CARD32 pad1 B32; /* unused */
- CARD32 pad2 B32;
- CARD32 pad3 B32;
- CARD32 pad4 B32;
- CARD32 pad5 B32;
- CARD32 pad6 B32;
-} xShapeInputSelectedReply;
-#define sz_xShapeInputSelectedReply 32
-
-typedef struct _ShapeGetRectangles {
- CARD8 reqType; /* always ShapeReqCode */
- CARD8 shapeReqType; /* always X_ShapeGetRectangles */
- CARD16 length B16;
- Window window B32;
- CARD8 kind; /* ShapeBounding or ShapeClip */
- CARD8 junk1;
- CARD16 junk2 B16;
-} xShapeGetRectanglesReq;
-#define sz_xShapeGetRectanglesReq 12
-
-typedef struct {
- BYTE type; /* X_Reply */
- CARD8 ordering; /* UnSorted, YSorted, YXSorted, YXBanded */
- CARD16 sequenceNumber B16;
- CARD32 length B32; /* not zero */
- CARD32 nrects B32; /* number of rectangles */
- CARD32 pad1 B32;
- CARD32 pad2 B32;
- CARD32 pad3 B32;
- CARD32 pad4 B32;
- CARD32 pad5 B32;
-} xShapeGetRectanglesReply; /* followed by xRectangles */
-#define sz_xShapeGetRectanglesReply 32
-
-#undef Window
-#undef Time
-
-#endif /* _SHAPEPROTO_H_ */
+/************************************************************
+
+Copyright 1989, 1998 The Open Group
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group shall not be
+used in advertising or otherwise to promote the sale, use or other dealings
+in this Software without prior written authorization from The Open Group.
+
+********************************************************/
+
+#ifndef _SHAPEPROTO_H_
+#define _SHAPEPROTO_H_
+
+#include <X11/extensions/shapeconst.h>
+
+/*
+ * Protocol requests constants and alignment values
+ * These would really be in SHAPE's X.h and Xproto.h equivalents
+ */
+
+#define Window CARD32
+#define Time CARD32
+
+#define X_ShapeQueryVersion 0
+#define X_ShapeRectangles 1
+#define X_ShapeMask 2
+#define X_ShapeCombine 3
+#define X_ShapeOffset 4
+#define X_ShapeQueryExtents 5
+#define X_ShapeSelectInput 6
+#define X_ShapeInputSelected 7
+#define X_ShapeGetRectangles 8
+
+typedef struct _ShapeQueryVersion {
+ CARD8 reqType; /* always ShapeReqCode */
+ CARD8 shapeReqType; /* always X_ShapeQueryVersion */
+ CARD16 length B16;
+} xShapeQueryVersionReq;
+#define sz_xShapeQueryVersionReq 4
+
+typedef struct {
+ BYTE type; /* X_Reply */
+ CARD8 unused; /* not used */
+ CARD16 sequenceNumber B16;
+ CARD32 length B32;
+ CARD16 majorVersion B16; /* major version of SHAPE protocol */
+ CARD16 minorVersion B16; /* minor version of SHAPE protocol */
+ CARD32 pad0 B32;
+ CARD32 pad1 B32;
+ CARD32 pad2 B32;
+ CARD32 pad3 B32;
+ CARD32 pad4 B32;
+} xShapeQueryVersionReply;
+#define sz_xShapeQueryVersionReply 32
+
+typedef struct _ShapeRectangles {
+ CARD8 reqType; /* always ShapeReqCode */
+ CARD8 shapeReqType; /* always X_ShapeRectangles */
+ CARD16 length B16;
+ CARD8 op; /* Set, ... */
+ CARD8 destKind; /* ShapeBounding or ShapeClip */
+ CARD8 ordering; /* UnSorted, YSorted, YXSorted, YXBanded */
+ CARD8 pad0; /* not used */
+ Window dest B32;
+ INT16 xOff B16;
+ INT16 yOff B16;
+} xShapeRectanglesReq; /* followed by xRects */
+#define sz_xShapeRectanglesReq 16
+
+typedef struct _ShapeMask {
+ CARD8 reqType; /* always ShapeReqCode */
+ CARD8 shapeReqType; /* always X_ShapeMask */
+ CARD16 length B16;
+
+ CARD8 op; /* Set, ... */
+ CARD8 destKind; /* ShapeBounding or ShapeClip */
+ CARD16 junk B16; /* not used */
+
+ Window dest B32;
+ INT16 xOff B16;
+ INT16 yOff B16;
+ CARD32 src B32; /* 1 bit pixmap */
+} xShapeMaskReq;
+#define sz_xShapeMaskReq 20
+
+typedef struct _ShapeCombine {
+ CARD8 reqType; /* always ShapeReqCode */
+ CARD8 shapeReqType; /* always X_ShapeCombine */
+ CARD16 length B16;
+ CARD8 op; /* Set, ... */
+ CARD8 destKind; /* ShapeBounding or ShapeClip */
+ CARD8 srcKind; /* ShapeBounding or ShapeClip */
+ CARD8 junk; /* not used */
+ Window dest B32;
+ INT16 xOff B16;
+ INT16 yOff B16;
+ Window src B32;
+} xShapeCombineReq;
+#define sz_xShapeCombineReq 20
+
+typedef struct _ShapeOffset {
+ CARD8 reqType; /* always ShapeReqCode */
+ CARD8 shapeReqType; /* always X_ShapeOffset */
+ CARD16 length B16;
+ CARD8 destKind; /* ShapeBounding or ShapeClip */
+ CARD8 junk1; /* not used */
+ CARD16 junk2 B16; /* not used */
+ Window dest B32;
+ INT16 xOff B16;
+ INT16 yOff B16;
+} xShapeOffsetReq;
+#define sz_xShapeOffsetReq 16
+
+typedef struct _ShapeQueryExtents {
+ CARD8 reqType; /* always ShapeReqCode */
+ CARD8 shapeReqType; /* always X_ShapeQueryExtents */
+ CARD16 length B16;
+ Window window B32;
+} xShapeQueryExtentsReq;
+#define sz_xShapeQueryExtentsReq 8
+
+typedef struct {
+ BYTE type; /* X_Reply */
+ CARD8 unused; /* not used */
+ CARD16 sequenceNumber B16;
+ CARD32 length B32; /* 0 */
+ CARD8 boundingShaped; /* window has bounding shape */
+ CARD8 clipShaped; /* window has clip shape */
+ CARD16 unused1 B16;
+ INT16 xBoundingShape B16; /* extents of bounding shape */
+ INT16 yBoundingShape B16;
+ CARD16 widthBoundingShape B16;
+ CARD16 heightBoundingShape B16;
+ INT16 xClipShape B16; /* extents of clip shape */
+ INT16 yClipShape B16;
+ CARD16 widthClipShape B16;
+ CARD16 heightClipShape B16;
+ CARD32 pad1 B32;
+} xShapeQueryExtentsReply;
+#define sz_xShapeQueryExtentsReply 32
+
+typedef struct _ShapeSelectInput {
+ CARD8 reqType; /* always ShapeReqCode */
+ CARD8 shapeReqType; /* always X_ShapeSelectInput */
+ CARD16 length B16;
+ Window window B32;
+ BYTE enable; /* xTrue -> send events */
+ BYTE pad1;
+ CARD16 pad2 B16;
+} xShapeSelectInputReq;
+#define sz_xShapeSelectInputReq 12
+
+typedef struct _ShapeNotify {
+ BYTE type; /* always eventBase + ShapeNotify */
+ BYTE kind; /* either ShapeBounding or ShapeClip */
+ CARD16 sequenceNumber B16;
+ Window window B32;
+ INT16 x B16;
+ INT16 y B16; /* extents of new shape */
+ CARD16 width B16;
+ CARD16 height B16;
+ Time time B32; /* time of change */
+ BYTE shaped; /* set when a shape actual exists */
+ BYTE pad0;
+ CARD16 pad1 B16;
+ CARD32 pad2 B32;
+ CARD32 pad3 B32;
+} xShapeNotifyEvent;
+#define sz_xShapeNotifyEvent 32
+
+typedef struct _ShapeInputSelected {
+ CARD8 reqType; /* always ShapeReqCode */
+ CARD8 shapeReqType; /* always X_ShapeInputSelected */
+ CARD16 length B16;
+ Window window B32;
+} xShapeInputSelectedReq;
+#define sz_xShapeInputSelectedReq 8
+
+typedef struct {
+ BYTE type; /* X_Reply */
+ CARD8 enabled; /* current status */
+ CARD16 sequenceNumber B16;
+ CARD32 length B32; /* 0 */
+ CARD32 pad1 B32; /* unused */
+ CARD32 pad2 B32;
+ CARD32 pad3 B32;
+ CARD32 pad4 B32;
+ CARD32 pad5 B32;
+ CARD32 pad6 B32;
+} xShapeInputSelectedReply;
+#define sz_xShapeInputSelectedReply 32
+
+typedef struct _ShapeGetRectangles {
+ CARD8 reqType; /* always ShapeReqCode */
+ CARD8 shapeReqType; /* always X_ShapeGetRectangles */
+ CARD16 length B16;
+ Window window B32;
+ CARD8 kind; /* ShapeBounding or ShapeClip */
+ CARD8 junk1;
+ CARD16 junk2 B16;
+} xShapeGetRectanglesReq;
+#define sz_xShapeGetRectanglesReq 12
+
+typedef struct {
+ BYTE type; /* X_Reply */
+ CARD8 ordering; /* UnSorted, YSorted, YXSorted, YXBanded */
+ CARD16 sequenceNumber B16;
+ CARD32 length B32; /* not zero */
+ CARD32 nrects B32; /* number of rectangles */
+ CARD32 pad1 B32;
+ CARD32 pad2 B32;
+ CARD32 pad3 B32;
+ CARD32 pad4 B32;
+ CARD32 pad5 B32;
+} xShapeGetRectanglesReply; /* followed by xRectangles */
+#define sz_xShapeGetRectanglesReply 32
+
+#undef Window
+#undef Time
+
+#endif /* _SHAPEPROTO_H_ */
diff --git a/X11/extensions/shapestr.h b/X11/extensions/shapestr.h
index a5d8f6a2c..20fde1dbe 100644
--- a/X11/extensions/shapestr.h
+++ b/X11/extensions/shapestr.h
@@ -1,8 +1,8 @@
-#ifndef _SHAPESTR_H_
-#define _SHAPESTR_H_
-
-#warning "shapestr.h is obsolete and may be removed in the future."
-#warning "include <X11/extensions/shapeproto.h> for the protocol defines."
-#include <X11/extensions/shapeproto.h>
-
-#endif /* _SHAPESTR_H_ */
+#ifndef _SHAPESTR_H_
+#define _SHAPESTR_H_
+
+#warning "shapestr.h is obsolete and may be removed in the future."
+#warning "include <X11/extensions/shapeproto.h> for the protocol defines."
+#include <X11/extensions/shapeproto.h>
+
+#endif /* _SHAPESTR_H_ */
diff --git a/X11/extensions/shm.h b/X11/extensions/shm.h
index cb6fac71f..e076402a8 100644
--- a/X11/extensions/shm.h
+++ b/X11/extensions/shm.h
@@ -1,44 +1,44 @@
-/************************************************************
-
-Copyright 1989, 1998 The Open Group
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall not be
-used in advertising or otherwise to promote the sale, use or other dealings
-in this Software without prior written authorization from The Open Group.
-
-********************************************************/
-
-/* THIS IS NOT AN X CONSORTIUM STANDARD OR AN X PROJECT TEAM SPECIFICATION */
-
-#ifndef _SHM_H_
-#define _SHM_H_
-
-#define SHMNAME "MIT-SHM"
-
-#define SHM_MAJOR_VERSION 1 /* current version numbers */
-#define SHM_MINOR_VERSION 1
-
-#define ShmCompletion 0
-#define ShmNumberEvents (ShmCompletion + 1)
-
-#define BadShmSeg 0
-#define ShmNumberErrors (BadShmSeg + 1)
-
-
-#endif /* _SHM_H_ */
+/************************************************************
+
+Copyright 1989, 1998 The Open Group
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group shall not be
+used in advertising or otherwise to promote the sale, use or other dealings
+in this Software without prior written authorization from The Open Group.
+
+********************************************************/
+
+/* THIS IS NOT AN X CONSORTIUM STANDARD OR AN X PROJECT TEAM SPECIFICATION */
+
+#ifndef _SHM_H_
+#define _SHM_H_
+
+#define SHMNAME "MIT-SHM"
+
+#define SHM_MAJOR_VERSION 1 /* current version numbers */
+#define SHM_MINOR_VERSION 1
+
+#define ShmCompletion 0
+#define ShmNumberEvents (ShmCompletion + 1)
+
+#define BadShmSeg 0
+#define ShmNumberErrors (BadShmSeg + 1)
+
+
+#endif /* _SHM_H_ */
diff --git a/X11/extensions/shmproto.h b/X11/extensions/shmproto.h
index 808bcc45a..e5de377b9 100644
--- a/X11/extensions/shmproto.h
+++ b/X11/extensions/shmproto.h
@@ -1,187 +1,187 @@
-/************************************************************
-
-Copyright 1989, 1998 The Open Group
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall not be
-used in advertising or otherwise to promote the sale, use or other dealings
-in this Software without prior written authorization from The Open Group.
-
-********************************************************/
-
-/* THIS IS NOT AN X CONSORTIUM STANDARD OR AN X PROJECT TEAM SPECIFICATION */
-
-#ifndef _SHMPROTO_H_
-#define _SHMPROTO_H_
-
-#include <X11/extensions/shm.h>
-
-#define ShmSeg CARD32
-#define Drawable CARD32
-#define VisualID CARD32
-#define GContext CARD32
-#define Pixmap CARD32
-
-#define X_ShmQueryVersion 0
-#define X_ShmAttach 1
-#define X_ShmDetach 2
-#define X_ShmPutImage 3
-#define X_ShmGetImage 4
-#define X_ShmCreatePixmap 5
-
-typedef struct _ShmQueryVersion {
- CARD8 reqType; /* always ShmReqCode */
- CARD8 shmReqType; /* always X_ShmQueryVersion */
- CARD16 length B16;
-} xShmQueryVersionReq;
-#define sz_xShmQueryVersionReq 4
-
-typedef struct {
- BYTE type; /* X_Reply */
- BOOL sharedPixmaps;
- CARD16 sequenceNumber B16;
- CARD32 length B32;
- CARD16 majorVersion B16; /* major version of SHM protocol */
- CARD16 minorVersion B16; /* minor version of SHM protocol */
- CARD16 uid B16;
- CARD16 gid B16;
- CARD8 pixmapFormat;
- CARD8 pad0;
- CARD16 pad1 B16;
- CARD32 pad2 B32;
- CARD32 pad3 B32;
- CARD32 pad4 B32;
-} xShmQueryVersionReply;
-#define sz_xShmQueryVersionReply 32
-
-typedef struct _ShmAttach {
- CARD8 reqType; /* always ShmReqCode */
- CARD8 shmReqType; /* always X_ShmAttach */
- CARD16 length B16;
- ShmSeg shmseg B32;
- CARD32 shmid B32;
- BOOL readOnly;
- BYTE pad0;
- CARD16 pad1 B16;
-} xShmAttachReq;
-#define sz_xShmAttachReq 16
-
-typedef struct _ShmDetach {
- CARD8 reqType; /* always ShmReqCode */
- CARD8 shmReqType; /* always X_ShmDetach */
- CARD16 length B16;
- ShmSeg shmseg B32;
-} xShmDetachReq;
-#define sz_xShmDetachReq 8
-
-typedef struct _ShmPutImage {
- CARD8 reqType; /* always ShmReqCode */
- CARD8 shmReqType; /* always X_ShmPutImage */
- CARD16 length B16;
- Drawable drawable B32;
- GContext gc B32;
- CARD16 totalWidth B16;
- CARD16 totalHeight B16;
- CARD16 srcX B16;
- CARD16 srcY B16;
- CARD16 srcWidth B16;
- CARD16 srcHeight B16;
- INT16 dstX B16;
- INT16 dstY B16;
- CARD8 depth;
- CARD8 format;
- CARD8 sendEvent;
- CARD8 bpad;
- ShmSeg shmseg B32;
- CARD32 offset B32;
-} xShmPutImageReq;
-#define sz_xShmPutImageReq 40
-
-typedef struct _ShmGetImage {
- CARD8 reqType; /* always ShmReqCode */
- CARD8 shmReqType; /* always X_ShmGetImage */
- CARD16 length B16;
- Drawable drawable B32;
- INT16 x B16;
- INT16 y B16;
- CARD16 width B16;
- CARD16 height B16;
- CARD32 planeMask B32;
- CARD8 format;
- CARD8 pad0;
- CARD8 pad1;
- CARD8 pad2;
- ShmSeg shmseg B32;
- CARD32 offset B32;
-} xShmGetImageReq;
-#define sz_xShmGetImageReq 32
-
-typedef struct _ShmGetImageReply {
- BYTE type; /* X_Reply */
- CARD8 depth;
- CARD16 sequenceNumber B16;
- CARD32 length B32;
- VisualID visual B32;
- CARD32 size B32;
- CARD32 pad0 B32;
- CARD32 pad1 B32;
- CARD32 pad2 B32;
- CARD32 pad3 B32;
-} xShmGetImageReply;
-#define sz_xShmGetImageReply 32
-
-typedef struct _ShmCreatePixmap {
- CARD8 reqType; /* always ShmReqCode */
- CARD8 shmReqType; /* always X_ShmCreatePixmap */
- CARD16 length B16;
- Pixmap pid B32;
- Drawable drawable B32;
- CARD16 width B16;
- CARD16 height B16;
- CARD8 depth;
- CARD8 pad0;
- CARD8 pad1;
- CARD8 pad2;
- ShmSeg shmseg B32;
- CARD32 offset B32;
-} xShmCreatePixmapReq;
-#define sz_xShmCreatePixmapReq 28
-
-typedef struct _ShmCompletion {
- BYTE type; /* always eventBase + ShmCompletion */
- BYTE bpad0;
- CARD16 sequenceNumber B16;
- Drawable drawable B32;
- CARD16 minorEvent B16;
- BYTE majorEvent;
- BYTE bpad1;
- ShmSeg shmseg B32;
- CARD32 offset B32;
- CARD32 pad0 B32;
- CARD32 pad1 B32;
- CARD32 pad2 B32;
-} xShmCompletionEvent;
-#define sz_xShmCompletionEvent 32
-
-#undef ShmSeg
-#undef Drawable
-#undef VisualID
-#undef GContext
-#undef Pixmap
-
-#endif /* _SHMPROTO_H_ */
+/************************************************************
+
+Copyright 1989, 1998 The Open Group
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group shall not be
+used in advertising or otherwise to promote the sale, use or other dealings
+in this Software without prior written authorization from The Open Group.
+
+********************************************************/
+
+/* THIS IS NOT AN X CONSORTIUM STANDARD OR AN X PROJECT TEAM SPECIFICATION */
+
+#ifndef _SHMPROTO_H_
+#define _SHMPROTO_H_
+
+#include <X11/extensions/shm.h>
+
+#define ShmSeg CARD32
+#define Drawable CARD32
+#define VisualID CARD32
+#define GContext CARD32
+#define Pixmap CARD32
+
+#define X_ShmQueryVersion 0
+#define X_ShmAttach 1
+#define X_ShmDetach 2
+#define X_ShmPutImage 3
+#define X_ShmGetImage 4
+#define X_ShmCreatePixmap 5
+
+typedef struct _ShmQueryVersion {
+ CARD8 reqType; /* always ShmReqCode */
+ CARD8 shmReqType; /* always X_ShmQueryVersion */
+ CARD16 length B16;
+} xShmQueryVersionReq;
+#define sz_xShmQueryVersionReq 4
+
+typedef struct {
+ BYTE type; /* X_Reply */
+ BOOL sharedPixmaps;
+ CARD16 sequenceNumber B16;
+ CARD32 length B32;
+ CARD16 majorVersion B16; /* major version of SHM protocol */
+ CARD16 minorVersion B16; /* minor version of SHM protocol */
+ CARD16 uid B16;
+ CARD16 gid B16;
+ CARD8 pixmapFormat;
+ CARD8 pad0;
+ CARD16 pad1 B16;
+ CARD32 pad2 B32;
+ CARD32 pad3 B32;
+ CARD32 pad4 B32;
+} xShmQueryVersionReply;
+#define sz_xShmQueryVersionReply 32
+
+typedef struct _ShmAttach {
+ CARD8 reqType; /* always ShmReqCode */
+ CARD8 shmReqType; /* always X_ShmAttach */
+ CARD16 length B16;
+ ShmSeg shmseg B32;
+ CARD32 shmid B32;
+ BOOL readOnly;
+ BYTE pad0;
+ CARD16 pad1 B16;
+} xShmAttachReq;
+#define sz_xShmAttachReq 16
+
+typedef struct _ShmDetach {
+ CARD8 reqType; /* always ShmReqCode */
+ CARD8 shmReqType; /* always X_ShmDetach */
+ CARD16 length B16;
+ ShmSeg shmseg B32;
+} xShmDetachReq;
+#define sz_xShmDetachReq 8
+
+typedef struct _ShmPutImage {
+ CARD8 reqType; /* always ShmReqCode */
+ CARD8 shmReqType; /* always X_ShmPutImage */
+ CARD16 length B16;
+ Drawable drawable B32;
+ GContext gc B32;
+ CARD16 totalWidth B16;
+ CARD16 totalHeight B16;
+ CARD16 srcX B16;
+ CARD16 srcY B16;
+ CARD16 srcWidth B16;
+ CARD16 srcHeight B16;
+ INT16 dstX B16;
+ INT16 dstY B16;
+ CARD8 depth;
+ CARD8 format;
+ CARD8 sendEvent;
+ CARD8 bpad;
+ ShmSeg shmseg B32;
+ CARD32 offset B32;
+} xShmPutImageReq;
+#define sz_xShmPutImageReq 40
+
+typedef struct _ShmGetImage {
+ CARD8 reqType; /* always ShmReqCode */
+ CARD8 shmReqType; /* always X_ShmGetImage */
+ CARD16 length B16;
+ Drawable drawable B32;
+ INT16 x B16;
+ INT16 y B16;
+ CARD16 width B16;
+ CARD16 height B16;
+ CARD32 planeMask B32;
+ CARD8 format;
+ CARD8 pad0;
+ CARD8 pad1;
+ CARD8 pad2;
+ ShmSeg shmseg B32;
+ CARD32 offset B32;
+} xShmGetImageReq;
+#define sz_xShmGetImageReq 32
+
+typedef struct _ShmGetImageReply {
+ BYTE type; /* X_Reply */
+ CARD8 depth;
+ CARD16 sequenceNumber B16;
+ CARD32 length B32;
+ VisualID visual B32;
+ CARD32 size B32;
+ CARD32 pad0 B32;
+ CARD32 pad1 B32;
+ CARD32 pad2 B32;
+ CARD32 pad3 B32;
+} xShmGetImageReply;
+#define sz_xShmGetImageReply 32
+
+typedef struct _ShmCreatePixmap {
+ CARD8 reqType; /* always ShmReqCode */
+ CARD8 shmReqType; /* always X_ShmCreatePixmap */
+ CARD16 length B16;
+ Pixmap pid B32;
+ Drawable drawable B32;
+ CARD16 width B16;
+ CARD16 height B16;
+ CARD8 depth;
+ CARD8 pad0;
+ CARD8 pad1;
+ CARD8 pad2;
+ ShmSeg shmseg B32;
+ CARD32 offset B32;
+} xShmCreatePixmapReq;
+#define sz_xShmCreatePixmapReq 28
+
+typedef struct _ShmCompletion {
+ BYTE type; /* always eventBase + ShmCompletion */
+ BYTE bpad0;
+ CARD16 sequenceNumber B16;
+ Drawable drawable B32;
+ CARD16 minorEvent B16;
+ BYTE majorEvent;
+ BYTE bpad1;
+ ShmSeg shmseg B32;
+ CARD32 offset B32;
+ CARD32 pad0 B32;
+ CARD32 pad1 B32;
+ CARD32 pad2 B32;
+} xShmCompletionEvent;
+#define sz_xShmCompletionEvent 32
+
+#undef ShmSeg
+#undef Drawable
+#undef VisualID
+#undef GContext
+#undef Pixmap
+
+#endif /* _SHMPROTO_H_ */
diff --git a/X11/extensions/shmstr.h b/X11/extensions/shmstr.h
index 7cd2933e0..78f375962 100644
--- a/X11/extensions/shmstr.h
+++ b/X11/extensions/shmstr.h
@@ -1,63 +1,63 @@
-/************************************************************
-
-Copyright 1989, 1998 The Open Group
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall not be
-used in advertising or otherwise to promote the sale, use or other dealings
-in this Software without prior written authorization from The Open Group.
-
-********************************************************/
-
-/* THIS IS NOT AN X CONSORTIUM STANDARD OR AN X PROJECT TEAM SPECIFICATION */
-
-#ifndef _SHMSTR_H_
-#define _SHMSTR_H_
-
-#include <X11/extensions/shmproto.h>
-
-#ifdef _XSHM_SERVER_
-#define XSHM_PUT_IMAGE_ARGS \
- DrawablePtr /* dst */, \
- GCPtr /* pGC */, \
- int /* depth */, \
- unsigned int /* format */, \
- int /* w */, \
- int /* h */, \
- int /* sx */, \
- int /* sy */, \
- int /* sw */, \
- int /* sh */, \
- int /* dx */, \
- int /* dy */, \
- char * /* data */
-
-#define XSHM_CREATE_PIXMAP_ARGS \
- ScreenPtr /* pScreen */, \
- int /* width */, \
- int /* height */, \
- int /* depth */, \
- char * /* addr */
-
-typedef struct _ShmFuncs {
- PixmapPtr (* CreatePixmap)(XSHM_CREATE_PIXMAP_ARGS);
- void (* PutImage)(XSHM_PUT_IMAGE_ARGS);
-} ShmFuncs, *ShmFuncsPtr;
-#endif
-
-#endif /* _SHMSTR_H_ */
+/************************************************************
+
+Copyright 1989, 1998 The Open Group
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group shall not be
+used in advertising or otherwise to promote the sale, use or other dealings
+in this Software without prior written authorization from The Open Group.
+
+********************************************************/
+
+/* THIS IS NOT AN X CONSORTIUM STANDARD OR AN X PROJECT TEAM SPECIFICATION */
+
+#ifndef _SHMSTR_H_
+#define _SHMSTR_H_
+
+#include <X11/extensions/shmproto.h>
+
+#ifdef _XSHM_SERVER_
+#define XSHM_PUT_IMAGE_ARGS \
+ DrawablePtr /* dst */, \
+ GCPtr /* pGC */, \
+ int /* depth */, \
+ unsigned int /* format */, \
+ int /* w */, \
+ int /* h */, \
+ int /* sx */, \
+ int /* sy */, \
+ int /* sw */, \
+ int /* sh */, \
+ int /* dx */, \
+ int /* dy */, \
+ char * /* data */
+
+#define XSHM_CREATE_PIXMAP_ARGS \
+ ScreenPtr /* pScreen */, \
+ int /* width */, \
+ int /* height */, \
+ int /* depth */, \
+ char * /* addr */
+
+typedef struct _ShmFuncs {
+ PixmapPtr (* CreatePixmap)(XSHM_CREATE_PIXMAP_ARGS);
+ void (* PutImage)(XSHM_PUT_IMAGE_ARGS);
+} ShmFuncs, *ShmFuncsPtr;
+#endif
+
+#endif /* _SHMSTR_H_ */
diff --git a/X11/extensions/syncconst.h b/X11/extensions/syncconst.h
index 33e77e99c..3acc387e3 100644
--- a/X11/extensions/syncconst.h
+++ b/X11/extensions/syncconst.h
@@ -1,181 +1,181 @@
-/*
-
-Copyright 1991, 1993, 1994, 1998 The Open Group
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall not be
-used in advertising or otherwise to promote the sale, use or other dealings
-in this Software without prior written authorization from The Open Group.
-
-*/
-
-/***********************************************************
-Copyright 1991,1993 by Digital Equipment Corporation, Maynard, Massachusetts,
-and Olivetti Research Limited, Cambridge, England.
-
- All Rights Reserved
-
-Permission to use, copy, modify, and distribute this software and its
-documentation for any purpose and without fee is hereby granted,
-provided that the above copyright notice appear in all copies and that
-both that copyright notice and this permission notice appear in
-supporting documentation, and that the names of Digital or Olivetti
-not be used in advertising or publicity pertaining to distribution of the
-software without specific, written prior permission.
-
-DIGITAL AND OLIVETTI DISCLAIM ALL WARRANTIES WITH REGARD TO THIS
-SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
-FITNESS, IN NO EVENT SHALL THEY BE LIABLE FOR ANY SPECIAL, INDIRECT OR
-CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF
-USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
-OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
-PERFORMANCE OF THIS SOFTWARE.
-
-******************************************************************/
-
-#ifndef _SYNCCONST_H_
-#define _SYNCCONST_H_
-
-#define SYNC_NAME "SYNC"
-
-#define SYNC_MAJOR_VERSION 3
-#define SYNC_MINOR_VERSION 1
-
-
-#define XSyncCounterNotify 0
-#define XSyncAlarmNotify 1
-#define XSyncAlarmNotifyMask (1L << XSyncAlarmNotify)
-
-#define XSyncNumberEvents 2L
-
-#define XSyncBadCounter 0L
-#define XSyncBadAlarm 1L
-#define XSyncBadFence 2L
-#define XSyncNumberErrors (XSyncBadFence + 1)
-
-/*
- * Flags for Alarm Attributes
- */
-#define XSyncCACounter (1L<<0)
-#define XSyncCAValueType (1L<<1)
-#define XSyncCAValue (1L<<2)
-#define XSyncCATestType (1L<<3)
-#define XSyncCADelta (1L<<4)
-#define XSyncCAEvents (1L<<5)
-
-/* The _XSync macros below are for library internal use only. They exist
- * so that if we have to make a fix, we can change it in this one place
- * and have both the macro and function variants inherit the fix.
- */
-
-#define _XSyncIntToValue(pv, i) ((pv)->hi=((i<0)?~0:0),(pv)->lo=(i))
-#define _XSyncIntsToValue(pv, l, h) ((pv)->lo = (l), (pv)->hi = (h))
-#define _XSyncValueGreaterThan(a, b)\
- ((a).hi>(b).hi || ((a).hi==(b).hi && (a).lo>(b).lo))
-#define _XSyncValueLessThan(a, b)\
- ((a).hi<(b).hi || ((a).hi==(b).hi && (a).lo<(b).lo))
-#define _XSyncValueGreaterOrEqual(a, b)\
- ((a).hi>(b).hi || ((a).hi==(b).hi && (a).lo>=(b).lo))
-#define _XSyncValueLessOrEqual(a, b)\
- ((a).hi<(b).hi || ((a).hi==(b).hi && (a).lo<=(b).lo))
-#define _XSyncValueEqual(a, b) ((a).lo==(b).lo && (a).hi==(b).hi)
-#define _XSyncValueIsNegative(v) (((v).hi & 0x80000000) ? 1 : 0)
-#define _XSyncValueIsZero(a) ((a).lo==0 && (a).hi==0)
-#define _XSyncValueIsPositive(v) (((v).hi & 0x80000000) ? 0 : 1)
-#define _XSyncValueLow32(v) ((v).lo)
-#define _XSyncValueHigh32(v) ((v).hi)
-#define _XSyncValueAdd(presult,a,b,poverflow) {\
- int t = (a).lo;\
- Bool signa = XSyncValueIsNegative(a);\
- Bool signb = XSyncValueIsNegative(b);\
- ((presult)->lo = (a).lo + (b).lo);\
- ((presult)->hi = (a).hi + (b).hi);\
- if (t>(presult)->lo) (presult)->hi++;\
- *poverflow = ((signa == signb) && !(signa == XSyncValueIsNegative(*presult)));\
- }
-#define _XSyncValueSubtract(presult,a,b,poverflow) {\
- int t = (a).lo;\
- Bool signa = XSyncValueIsNegative(a);\
- Bool signb = XSyncValueIsNegative(b);\
- ((presult)->lo = (a).lo - (b).lo);\
- ((presult)->hi = (a).hi - (b).hi);\
- if (t<(presult)->lo) (presult)->hi--;\
- *poverflow = ((signa == signb) && !(signa == XSyncValueIsNegative(*presult)));\
- }
-#define _XSyncMaxValue(pv) ((pv)->hi = 0x7fffffff, (pv)->lo = 0xffffffff)
-#define _XSyncMinValue(pv) ((pv)->hi = 0x80000000, (pv)->lo = 0)
-
-/*
- * These are the publically usable macros. If you want the function version
- * of one of these, just #undef the macro to uncover the function.
- * (This is the same convention that the ANSI C library uses.)
- */
-
-#define XSyncIntToValue(pv, i) _XSyncIntToValue(pv, i)
-#define XSyncIntsToValue(pv, l, h) _XSyncIntsToValue(pv, l, h)
-#define XSyncValueGreaterThan(a, b) _XSyncValueGreaterThan(a, b)
-#define XSyncValueLessThan(a, b) _XSyncValueLessThan(a, b)
-#define XSyncValueGreaterOrEqual(a, b) _XSyncValueGreaterOrEqual(a, b)
-#define XSyncValueLessOrEqual(a, b) _XSyncValueLessOrEqual(a, b)
-#define XSyncValueEqual(a, b) _XSyncValueEqual(a, b)
-#define XSyncValueIsNegative(v) _XSyncValueIsNegative(v)
-#define XSyncValueIsZero(a) _XSyncValueIsZero(a)
-#define XSyncValueIsPositive(v) _XSyncValueIsPositive(v)
-#define XSyncValueLow32(v) _XSyncValueLow32(v)
-#define XSyncValueHigh32(v) _XSyncValueHigh32(v)
-#define XSyncValueAdd(presult,a,b,poverflow) _XSyncValueAdd(presult,a,b,poverflow)
-#define XSyncValueSubtract(presult,a,b,poverflow) _XSyncValueSubtract(presult,a,b,poverflow)
-#define XSyncMaxValue(pv) _XSyncMaxValue(pv)
-#define XSyncMinValue(pv) _XSyncMinValue(pv)
-
-/*
- * Constants for the value_type argument of various requests
- */
-typedef enum {
- XSyncAbsolute,
- XSyncRelative
-} XSyncValueType;
-
-/*
- * Alarm Test types
- */
-typedef enum {
- XSyncPositiveTransition,
- XSyncNegativeTransition,
- XSyncPositiveComparison,
- XSyncNegativeComparison
-} XSyncTestType;
-
-/*
- * Alarm state constants
- */
-typedef enum {
- XSyncAlarmActive,
- XSyncAlarmInactive,
- XSyncAlarmDestroyed
-} XSyncAlarmState;
-
-
-typedef XID XSyncCounter;
-typedef XID XSyncAlarm;
-typedef XID XSyncFence;
-typedef struct _XSyncValue {
- int hi;
- unsigned int lo;
-} XSyncValue;
-#endif /* _SYNCCONST_H_ */
+/*
+
+Copyright 1991, 1993, 1994, 1998 The Open Group
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group shall not be
+used in advertising or otherwise to promote the sale, use or other dealings
+in this Software without prior written authorization from The Open Group.
+
+*/
+
+/***********************************************************
+Copyright 1991,1993 by Digital Equipment Corporation, Maynard, Massachusetts,
+and Olivetti Research Limited, Cambridge, England.
+
+ All Rights Reserved
+
+Permission to use, copy, modify, and distribute this software and its
+documentation for any purpose and without fee is hereby granted,
+provided that the above copyright notice appear in all copies and that
+both that copyright notice and this permission notice appear in
+supporting documentation, and that the names of Digital or Olivetti
+not be used in advertising or publicity pertaining to distribution of the
+software without specific, written prior permission.
+
+DIGITAL AND OLIVETTI DISCLAIM ALL WARRANTIES WITH REGARD TO THIS
+SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
+FITNESS, IN NO EVENT SHALL THEY BE LIABLE FOR ANY SPECIAL, INDIRECT OR
+CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF
+USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
+OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+PERFORMANCE OF THIS SOFTWARE.
+
+******************************************************************/
+
+#ifndef _SYNCCONST_H_
+#define _SYNCCONST_H_
+
+#define SYNC_NAME "SYNC"
+
+#define SYNC_MAJOR_VERSION 3
+#define SYNC_MINOR_VERSION 1
+
+
+#define XSyncCounterNotify 0
+#define XSyncAlarmNotify 1
+#define XSyncAlarmNotifyMask (1L << XSyncAlarmNotify)
+
+#define XSyncNumberEvents 2L
+
+#define XSyncBadCounter 0L
+#define XSyncBadAlarm 1L
+#define XSyncBadFence 2L
+#define XSyncNumberErrors (XSyncBadFence + 1)
+
+/*
+ * Flags for Alarm Attributes
+ */
+#define XSyncCACounter (1L<<0)
+#define XSyncCAValueType (1L<<1)
+#define XSyncCAValue (1L<<2)
+#define XSyncCATestType (1L<<3)
+#define XSyncCADelta (1L<<4)
+#define XSyncCAEvents (1L<<5)
+
+/* The _XSync macros below are for library internal use only. They exist
+ * so that if we have to make a fix, we can change it in this one place
+ * and have both the macro and function variants inherit the fix.
+ */
+
+#define _XSyncIntToValue(pv, i) ((pv)->hi=((i<0)?~0:0),(pv)->lo=(i))
+#define _XSyncIntsToValue(pv, l, h) ((pv)->lo = (l), (pv)->hi = (h))
+#define _XSyncValueGreaterThan(a, b)\
+ ((a).hi>(b).hi || ((a).hi==(b).hi && (a).lo>(b).lo))
+#define _XSyncValueLessThan(a, b)\
+ ((a).hi<(b).hi || ((a).hi==(b).hi && (a).lo<(b).lo))
+#define _XSyncValueGreaterOrEqual(a, b)\
+ ((a).hi>(b).hi || ((a).hi==(b).hi && (a).lo>=(b).lo))
+#define _XSyncValueLessOrEqual(a, b)\
+ ((a).hi<(b).hi || ((a).hi==(b).hi && (a).lo<=(b).lo))
+#define _XSyncValueEqual(a, b) ((a).lo==(b).lo && (a).hi==(b).hi)
+#define _XSyncValueIsNegative(v) (((v).hi & 0x80000000) ? 1 : 0)
+#define _XSyncValueIsZero(a) ((a).lo==0 && (a).hi==0)
+#define _XSyncValueIsPositive(v) (((v).hi & 0x80000000) ? 0 : 1)
+#define _XSyncValueLow32(v) ((v).lo)
+#define _XSyncValueHigh32(v) ((v).hi)
+#define _XSyncValueAdd(presult,a,b,poverflow) {\
+ int t = (a).lo;\
+ Bool signa = XSyncValueIsNegative(a);\
+ Bool signb = XSyncValueIsNegative(b);\
+ ((presult)->lo = (a).lo + (b).lo);\
+ ((presult)->hi = (a).hi + (b).hi);\
+ if (t>(presult)->lo) (presult)->hi++;\
+ *poverflow = ((signa == signb) && !(signa == XSyncValueIsNegative(*presult)));\
+ }
+#define _XSyncValueSubtract(presult,a,b,poverflow) {\
+ int t = (a).lo;\
+ Bool signa = XSyncValueIsNegative(a);\
+ Bool signb = XSyncValueIsNegative(b);\
+ ((presult)->lo = (a).lo - (b).lo);\
+ ((presult)->hi = (a).hi - (b).hi);\
+ if (t<(presult)->lo) (presult)->hi--;\
+ *poverflow = ((signa == signb) && !(signa == XSyncValueIsNegative(*presult)));\
+ }
+#define _XSyncMaxValue(pv) ((pv)->hi = 0x7fffffff, (pv)->lo = 0xffffffff)
+#define _XSyncMinValue(pv) ((pv)->hi = 0x80000000, (pv)->lo = 0)
+
+/*
+ * These are the publically usable macros. If you want the function version
+ * of one of these, just #undef the macro to uncover the function.
+ * (This is the same convention that the ANSI C library uses.)
+ */
+
+#define XSyncIntToValue(pv, i) _XSyncIntToValue(pv, i)
+#define XSyncIntsToValue(pv, l, h) _XSyncIntsToValue(pv, l, h)
+#define XSyncValueGreaterThan(a, b) _XSyncValueGreaterThan(a, b)
+#define XSyncValueLessThan(a, b) _XSyncValueLessThan(a, b)
+#define XSyncValueGreaterOrEqual(a, b) _XSyncValueGreaterOrEqual(a, b)
+#define XSyncValueLessOrEqual(a, b) _XSyncValueLessOrEqual(a, b)
+#define XSyncValueEqual(a, b) _XSyncValueEqual(a, b)
+#define XSyncValueIsNegative(v) _XSyncValueIsNegative(v)
+#define XSyncValueIsZero(a) _XSyncValueIsZero(a)
+#define XSyncValueIsPositive(v) _XSyncValueIsPositive(v)
+#define XSyncValueLow32(v) _XSyncValueLow32(v)
+#define XSyncValueHigh32(v) _XSyncValueHigh32(v)
+#define XSyncValueAdd(presult,a,b,poverflow) _XSyncValueAdd(presult,a,b,poverflow)
+#define XSyncValueSubtract(presult,a,b,poverflow) _XSyncValueSubtract(presult,a,b,poverflow)
+#define XSyncMaxValue(pv) _XSyncMaxValue(pv)
+#define XSyncMinValue(pv) _XSyncMinValue(pv)
+
+/*
+ * Constants for the value_type argument of various requests
+ */
+typedef enum {
+ XSyncAbsolute,
+ XSyncRelative
+} XSyncValueType;
+
+/*
+ * Alarm Test types
+ */
+typedef enum {
+ XSyncPositiveTransition,
+ XSyncNegativeTransition,
+ XSyncPositiveComparison,
+ XSyncNegativeComparison
+} XSyncTestType;
+
+/*
+ * Alarm state constants
+ */
+typedef enum {
+ XSyncAlarmActive,
+ XSyncAlarmInactive,
+ XSyncAlarmDestroyed
+} XSyncAlarmState;
+
+
+typedef XID XSyncCounter;
+typedef XID XSyncAlarm;
+typedef XID XSyncFence;
+typedef struct _XSyncValue {
+ int hi;
+ unsigned int lo;
+} XSyncValue;
+#endif /* _SYNCCONST_H_ */
diff --git a/X11/extensions/syncproto.h b/X11/extensions/syncproto.h
index ab7c1f528..1453e4401 100644
--- a/X11/extensions/syncproto.h
+++ b/X11/extensions/syncproto.h
@@ -1,474 +1,474 @@
-/*
-
-Copyright 1991, 1993, 1994, 1998 The Open Group
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall not be
-used in advertising or otherwise to promote the sale, use or other dealings
-in this Software without prior written authorization from The Open Group.
-
-*/
-
-/***********************************************************
-Copyright 1991,1993 by Digital Equipment Corporation, Maynard, Massachusetts,
-and Olivetti Research Limited, Cambridge, England.
-
- All Rights Reserved
-
-Permission to use, copy, modify, and distribute this software and its
-documentation for any purpose and without fee is hereby granted,
-provided that the above copyright notice appear in all copies and that
-both that copyright notice and this permission notice appear in
-supporting documentation, and that the names of Digital or Olivetti
-not be used in advertising or publicity pertaining to distribution of the
-software without specific, written prior permission.
-
-DIGITAL AND OLIVETTI DISCLAIM ALL WARRANTIES WITH REGARD TO THIS
-SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
-FITNESS, IN NO EVENT SHALL THEY BE LIABLE FOR ANY SPECIAL, INDIRECT OR
-CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF
-USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
-OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
-PERFORMANCE OF THIS SOFTWARE.
-
-******************************************************************/
-
-#ifndef _SYNCPROTO_H_
-#define _SYNCPROTO_H_
-
-#include <X11/extensions/syncconst.h>
-
-#define X_SyncInitialize 0
-#define X_SyncListSystemCounters 1
-#define X_SyncCreateCounter 2
-#define X_SyncSetCounter 3
-#define X_SyncChangeCounter 4
-#define X_SyncQueryCounter 5
-#define X_SyncDestroyCounter 6
-#define X_SyncAwait 7
-#define X_SyncCreateAlarm 8
-#define X_SyncChangeAlarm 9
-#define X_SyncQueryAlarm 10
-#define X_SyncDestroyAlarm 11
-#define X_SyncSetPriority 12
-#define X_SyncGetPriority 13
-#define X_SyncCreateFence 14
-#define X_SyncTriggerFence 15
-#define X_SyncResetFence 16
-#define X_SyncDestroyFence 17
-#define X_SyncQueryFence 18
-#define X_SyncAwaitFence 19
-
-/* cover up types from sync.h to make sure they're the right size for
- * protocol packaging. These will be undef'ed after all the protocol
- * structures are defined.
- */
-#define XSyncCounter CARD32
-#define XSyncAlarm CARD32
-#define XSyncFence CARD32
-#define Drawable CARD32
-
-/*
- * Initialize
- */
-typedef struct _xSyncInitialize {
- CARD8 reqType;
- CARD8 syncReqType;
- CARD16 length B16;
- CARD8 majorVersion;
- CARD8 minorVersion;
- CARD16 pad B16;
-} xSyncInitializeReq;
-#define sz_xSyncInitializeReq 8
-
-typedef struct {
- BYTE type;
- CARD8 unused;
- CARD16 sequenceNumber B16;
- CARD32 length B32;
- CARD8 majorVersion;
- CARD8 minorVersion;
- CARD16 pad B16;
- CARD32 pad0 B32;
- CARD32 pad1 B32;
- CARD32 pad2 B32;
- CARD32 pad3 B32;
- CARD32 pad4 B32;
-} xSyncInitializeReply;
-#define sz_xSyncInitializeReply 32
-
-/*
- * ListSystemCounters
- */
-typedef struct _xSyncListSystemCounters
-{
- CARD8 reqType;
- CARD8 syncReqType;
- CARD16 length B16;
-} xSyncListSystemCountersReq;
-#define sz_xSyncListSystemCountersReq 4
-
-typedef struct {
- BYTE type;
- CARD8 unused;
- CARD16 sequenceNumber B16;
- CARD32 length B32;
- INT32 nCounters B32;
- CARD32 pad0 B32;
- CARD32 pad1 B32;
- CARD32 pad2 B32;
- CARD32 pad3 B32;
- CARD32 pad4 B32;
-} xSyncListSystemCountersReply;
-#define sz_xSyncListSystemCountersReply 32
-
-typedef struct {
- XSyncCounter counter B32;
- INT32 resolution_hi B32;
- CARD32 resolution_lo B32;
- CARD16 name_length B16;
-} xSyncSystemCounter;
-#define sz_xSyncSystemCounter 14
-
-/*
- * Create Counter
- */
-typedef struct _xSyncCreateCounterReq {
- CARD8 reqType;
- CARD8 syncReqType;
- CARD16 length B16;
- XSyncCounter cid B32;
- INT32 initial_value_hi B32;
- CARD32 initial_value_lo B32;
-} xSyncCreateCounterReq;
-#define sz_xSyncCreateCounterReq 16
-
-/*
- * Change Counter
- */
-typedef struct _xSyncChangeCounterReq {
- CARD8 reqType;
- CARD8 syncReqType;
- CARD16 length B16;
- XSyncCounter cid B32;
- INT32 value_hi B32;
- CARD32 value_lo B32;
-} xSyncChangeCounterReq;
-#define sz_xSyncChangeCounterReq 16
-
-/*
- * Set Counter
- */
-typedef struct _xSyncSetCounterReq {
- CARD8 reqType;
- CARD8 syncReqType;
- CARD16 length B16;
- XSyncCounter cid B32;
- INT32 value_hi B32;
- CARD32 value_lo B32;
-} xSyncSetCounterReq;
-#define sz_xSyncSetCounterReq 16
-
-/*
- * Destroy Counter
- */
-typedef struct _xSyncDestroyCounterReq {
- CARD8 reqType;
- CARD8 syncReqType;
- CARD16 length B16;
- XSyncCounter counter B32;
-} xSyncDestroyCounterReq;
-#define sz_xSyncDestroyCounterReq 8
-
-/*
- * Query Counter
- */
-typedef struct _xSyncQueryCounterReq {
- CARD8 reqType;
- CARD8 syncReqType;
- CARD16 length B16;
- XSyncCounter counter B32;
-} xSyncQueryCounterReq;
-#define sz_xSyncQueryCounterReq 8
-
-
-typedef struct {
- BYTE type;
- CARD8 unused;
- CARD16 sequenceNumber B16;
- CARD32 length B32;
- INT32 value_hi B32;
- CARD32 value_lo B32;
- CARD32 pad0 B32;
- CARD32 pad1 B32;
- CARD32 pad2 B32;
- CARD32 pad3 B32;
-} xSyncQueryCounterReply;
-#define sz_xSyncQueryCounterReply 32
-
-/*
- * Await
- */
-typedef struct _xSyncAwaitReq {
- CARD8 reqType;
- CARD8 syncReqType;
- CARD16 length B16;
-} xSyncAwaitReq;
-#define sz_xSyncAwaitReq 4
-
-typedef struct _xSyncWaitCondition {
- XSyncCounter counter B32;
- CARD32 value_type B32;
- INT32 wait_value_hi B32;
- CARD32 wait_value_lo B32;
- CARD32 test_type B32;
- INT32 event_threshold_hi B32;
- CARD32 event_threshold_lo B32;
-} xSyncWaitCondition;
-#define sz_xSyncWaitCondition 28
-
-/*
- * Create Alarm
- */
-typedef struct _xSyncCreateAlarmReq {
- CARD8 reqType;
- CARD8 syncReqType;
- CARD16 length B16;
- XSyncAlarm id B32;
- CARD32 valueMask B32;
-} xSyncCreateAlarmReq;
-#define sz_xSyncCreateAlarmReq 12
-
-/*
- * Destroy Alarm
- */
-typedef struct _xSyncDestroyAlarmReq {
- CARD8 reqType;
- CARD8 syncReqType;
- CARD16 length B16;
- XSyncAlarm alarm B32;
-} xSyncDestroyAlarmReq;
-#define sz_xSyncDestroyAlarmReq 8
-
-/*
- * Query Alarm
- */
-typedef struct _xSyncQueryAlarmReq {
- CARD8 reqType;
- CARD8 syncReqType;
- CARD16 length B16;
- XSyncAlarm alarm B32;
-} xSyncQueryAlarmReq;
-#define sz_xSyncQueryAlarmReq 8
-
-typedef struct {
- BYTE type;
- CARD8 unused;
- CARD16 sequenceNumber B16;
- CARD32 length B32;
- XSyncCounter counter B32;
- CARD32 value_type B32;
- INT32 wait_value_hi B32;
- CARD32 wait_value_lo B32;
- CARD32 test_type B32;
- INT32 delta_hi B32;
- CARD32 delta_lo B32;
- BOOL events;
- BYTE state;
- BYTE pad0;
- BYTE pad1;
-} xSyncQueryAlarmReply;
-#define sz_xSyncQueryAlarmReply 40
-
-/*
- * Change Alarm
- */
-typedef struct _xSyncChangeAlarmReq {
- CARD8 reqType;
- CARD8 syncReqType;
- CARD16 length B16;
- XSyncAlarm alarm B32;
- CARD32 valueMask B32;
-} xSyncChangeAlarmReq;
-#define sz_xSyncChangeAlarmReq 12
-
-/*
- * SetPriority
- */
-typedef struct _xSyncSetPriority{
- CARD8 reqType;
- CARD8 syncReqType;
- CARD16 length B16;
- CARD32 id B32;
- INT32 priority B32;
-} xSyncSetPriorityReq;
-#define sz_xSyncSetPriorityReq 12
-
-/*
- * Get Priority
- */
-typedef struct _xSyncGetPriority{
- CARD8 reqType;
- CARD8 syncReqType;
- CARD16 length B16;
- CARD32 id B32; /*XXX XID? */
-} xSyncGetPriorityReq;
-#define sz_xSyncGetPriorityReq 8
-
-typedef struct {
- BYTE type;
- CARD8 unused;
- CARD16 sequenceNumber B16;
- CARD32 length B32;
- INT32 priority B32;
- CARD32 pad0 B32;
- CARD32 pad1 B32;
- CARD32 pad2 B32;
- CARD32 pad3 B32;
- CARD32 pad4 B32;
-} xSyncGetPriorityReply;
-#define sz_xSyncGetPriorityReply 32
-
-/*
- * Create Fence
- */
-typedef struct _xSyncCreateFenceReq {
- CARD8 reqType;
- CARD8 syncReqType;
- CARD16 length B16;
- Drawable d B32;
- XSyncFence fid B32;
- BOOL initially_triggered;
- CARD8 pad0;
- CARD16 pad1;
-} xSyncCreateFenceReq;
-#define sz_xSyncCreateFenceReq 16
-
-/*
- * Put a fence object in the "triggered" state.
- */
-typedef struct _xSyncTriggerFenceReq {
- CARD8 reqType;
- CARD8 syncReqType;
- CARD16 length B16;
- XSyncFence fid B32;
-} xSyncTriggerFenceReq;
-#define sz_xSyncTriggerFenceReq 8
-
-/*
- * Put a fence in the "untriggered" state.
- */
-typedef struct _xSyncResetFenceReq {
- CARD8 reqType;
- CARD8 syncReqType;
- CARD16 length B16;
- XSyncFence fid B32;
-} xSyncResetFenceReq;
-#define sz_xSyncResetFenceReq 8
-
-/*
- * Destroy a fence object
- */
-typedef struct _xSyncDestroyFenceReq {
- CARD8 reqType;
- CARD8 syncReqType;
- CARD16 length B16;
- XSyncFence fid B32;
-} xSyncDestroyFenceReq;
-#define sz_xSyncDestroyFenceReq 8
-
-/*
- * Query a fence object
- */
-typedef struct _xSyncQueryFenceReq {
- CARD8 reqType;
- CARD8 syncReqType;
- CARD16 length B16;
- XSyncFence fid B32;
-} xSyncQueryFenceReq;
-#define sz_xSyncQueryFenceReq 8
-
-/*
- * Wait for any of a list of fence sync objects
- * to reach the "triggered" state.
- */
-typedef struct _xSyncAwaitFenceReq {
- CARD8 reqType;
- CARD8 syncReqType;
- CARD16 length B16;
-} xSyncAwaitFenceReq;
-#define sz_xSyncAwaitFenceReq 4
-
-typedef struct {
- BYTE type;
- CARD8 unused;
- CARD16 sequenceNumber B16;
- CARD32 length B32;
- BOOL triggered;
- BYTE pad0;
- CARD16 pad1 B16;
- CARD32 pad2 B32;
- CARD32 pad3 B32;
- CARD32 pad4 B32;
- CARD32 pad5 B32;
- CARD32 pad6 B32;
-} xSyncQueryFenceReply;
-#define sz_xSyncQueryFenceReply 32
-
-/*
- * Events
- */
-
-typedef struct _xSyncCounterNotifyEvent {
- BYTE type;
- BYTE kind;
- CARD16 sequenceNumber B16;
- XSyncCounter counter B32;
- INT32 wait_value_hi B32;
- CARD32 wait_value_lo B32;
- INT32 counter_value_hi B32;
- CARD32 counter_value_lo B32;
- CARD32 time B32;
- CARD16 count B16;
- BOOL destroyed;
- BYTE pad0;
-} xSyncCounterNotifyEvent;
-
-typedef struct _xSyncAlarmNotifyEvent {
- BYTE type;
- BYTE kind;
- CARD16 sequenceNumber B16;
- XSyncAlarm alarm B32;
- INT32 counter_value_hi B32;
- CARD32 counter_value_lo B32;
- INT32 alarm_value_hi B32;
- CARD32 alarm_value_lo B32;
- CARD32 time B32;
- CARD8 state;
- BYTE pad0;
- BYTE pad1;
- BYTE pad2;
-} xSyncAlarmNotifyEvent;
-
-#undef XSyncCounter
-#undef XSyncAlarm
-#undef XSyncFence
-#undef Drawable
-
-
-#endif /* _SYNCPROTO_H_ */
+/*
+
+Copyright 1991, 1993, 1994, 1998 The Open Group
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group shall not be
+used in advertising or otherwise to promote the sale, use or other dealings
+in this Software without prior written authorization from The Open Group.
+
+*/
+
+/***********************************************************
+Copyright 1991,1993 by Digital Equipment Corporation, Maynard, Massachusetts,
+and Olivetti Research Limited, Cambridge, England.
+
+ All Rights Reserved
+
+Permission to use, copy, modify, and distribute this software and its
+documentation for any purpose and without fee is hereby granted,
+provided that the above copyright notice appear in all copies and that
+both that copyright notice and this permission notice appear in
+supporting documentation, and that the names of Digital or Olivetti
+not be used in advertising or publicity pertaining to distribution of the
+software without specific, written prior permission.
+
+DIGITAL AND OLIVETTI DISCLAIM ALL WARRANTIES WITH REGARD TO THIS
+SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
+FITNESS, IN NO EVENT SHALL THEY BE LIABLE FOR ANY SPECIAL, INDIRECT OR
+CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF
+USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
+OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+PERFORMANCE OF THIS SOFTWARE.
+
+******************************************************************/
+
+#ifndef _SYNCPROTO_H_
+#define _SYNCPROTO_H_
+
+#include <X11/extensions/syncconst.h>
+
+#define X_SyncInitialize 0
+#define X_SyncListSystemCounters 1
+#define X_SyncCreateCounter 2
+#define X_SyncSetCounter 3
+#define X_SyncChangeCounter 4
+#define X_SyncQueryCounter 5
+#define X_SyncDestroyCounter 6
+#define X_SyncAwait 7
+#define X_SyncCreateAlarm 8
+#define X_SyncChangeAlarm 9
+#define X_SyncQueryAlarm 10
+#define X_SyncDestroyAlarm 11
+#define X_SyncSetPriority 12
+#define X_SyncGetPriority 13
+#define X_SyncCreateFence 14
+#define X_SyncTriggerFence 15
+#define X_SyncResetFence 16
+#define X_SyncDestroyFence 17
+#define X_SyncQueryFence 18
+#define X_SyncAwaitFence 19
+
+/* cover up types from sync.h to make sure they're the right size for
+ * protocol packaging. These will be undef'ed after all the protocol
+ * structures are defined.
+ */
+#define XSyncCounter CARD32
+#define XSyncAlarm CARD32
+#define XSyncFence CARD32
+#define Drawable CARD32
+
+/*
+ * Initialize
+ */
+typedef struct _xSyncInitialize {
+ CARD8 reqType;
+ CARD8 syncReqType;
+ CARD16 length B16;
+ CARD8 majorVersion;
+ CARD8 minorVersion;
+ CARD16 pad B16;
+} xSyncInitializeReq;
+#define sz_xSyncInitializeReq 8
+
+typedef struct {
+ BYTE type;
+ CARD8 unused;
+ CARD16 sequenceNumber B16;
+ CARD32 length B32;
+ CARD8 majorVersion;
+ CARD8 minorVersion;
+ CARD16 pad B16;
+ CARD32 pad0 B32;
+ CARD32 pad1 B32;
+ CARD32 pad2 B32;
+ CARD32 pad3 B32;
+ CARD32 pad4 B32;
+} xSyncInitializeReply;
+#define sz_xSyncInitializeReply 32
+
+/*
+ * ListSystemCounters
+ */
+typedef struct _xSyncListSystemCounters
+{
+ CARD8 reqType;
+ CARD8 syncReqType;
+ CARD16 length B16;
+} xSyncListSystemCountersReq;
+#define sz_xSyncListSystemCountersReq 4
+
+typedef struct {
+ BYTE type;
+ CARD8 unused;
+ CARD16 sequenceNumber B16;
+ CARD32 length B32;
+ INT32 nCounters B32;
+ CARD32 pad0 B32;
+ CARD32 pad1 B32;
+ CARD32 pad2 B32;
+ CARD32 pad3 B32;
+ CARD32 pad4 B32;
+} xSyncListSystemCountersReply;
+#define sz_xSyncListSystemCountersReply 32
+
+typedef struct {
+ XSyncCounter counter B32;
+ INT32 resolution_hi B32;
+ CARD32 resolution_lo B32;
+ CARD16 name_length B16;
+} xSyncSystemCounter;
+#define sz_xSyncSystemCounter 14
+
+/*
+ * Create Counter
+ */
+typedef struct _xSyncCreateCounterReq {
+ CARD8 reqType;
+ CARD8 syncReqType;
+ CARD16 length B16;
+ XSyncCounter cid B32;
+ INT32 initial_value_hi B32;
+ CARD32 initial_value_lo B32;
+} xSyncCreateCounterReq;
+#define sz_xSyncCreateCounterReq 16
+
+/*
+ * Change Counter
+ */
+typedef struct _xSyncChangeCounterReq {
+ CARD8 reqType;
+ CARD8 syncReqType;
+ CARD16 length B16;
+ XSyncCounter cid B32;
+ INT32 value_hi B32;
+ CARD32 value_lo B32;
+} xSyncChangeCounterReq;
+#define sz_xSyncChangeCounterReq 16
+
+/*
+ * Set Counter
+ */
+typedef struct _xSyncSetCounterReq {
+ CARD8 reqType;
+ CARD8 syncReqType;
+ CARD16 length B16;
+ XSyncCounter cid B32;
+ INT32 value_hi B32;
+ CARD32 value_lo B32;
+} xSyncSetCounterReq;
+#define sz_xSyncSetCounterReq 16
+
+/*
+ * Destroy Counter
+ */
+typedef struct _xSyncDestroyCounterReq {
+ CARD8 reqType;
+ CARD8 syncReqType;
+ CARD16 length B16;
+ XSyncCounter counter B32;
+} xSyncDestroyCounterReq;
+#define sz_xSyncDestroyCounterReq 8
+
+/*
+ * Query Counter
+ */
+typedef struct _xSyncQueryCounterReq {
+ CARD8 reqType;
+ CARD8 syncReqType;
+ CARD16 length B16;
+ XSyncCounter counter B32;
+} xSyncQueryCounterReq;
+#define sz_xSyncQueryCounterReq 8
+
+
+typedef struct {
+ BYTE type;
+ CARD8 unused;
+ CARD16 sequenceNumber B16;
+ CARD32 length B32;
+ INT32 value_hi B32;
+ CARD32 value_lo B32;
+ CARD32 pad0 B32;
+ CARD32 pad1 B32;
+ CARD32 pad2 B32;
+ CARD32 pad3 B32;
+} xSyncQueryCounterReply;
+#define sz_xSyncQueryCounterReply 32
+
+/*
+ * Await
+ */
+typedef struct _xSyncAwaitReq {
+ CARD8 reqType;
+ CARD8 syncReqType;
+ CARD16 length B16;
+} xSyncAwaitReq;
+#define sz_xSyncAwaitReq 4
+
+typedef struct _xSyncWaitCondition {
+ XSyncCounter counter B32;
+ CARD32 value_type B32;
+ INT32 wait_value_hi B32;
+ CARD32 wait_value_lo B32;
+ CARD32 test_type B32;
+ INT32 event_threshold_hi B32;
+ CARD32 event_threshold_lo B32;
+} xSyncWaitCondition;
+#define sz_xSyncWaitCondition 28
+
+/*
+ * Create Alarm
+ */
+typedef struct _xSyncCreateAlarmReq {
+ CARD8 reqType;
+ CARD8 syncReqType;
+ CARD16 length B16;
+ XSyncAlarm id B32;
+ CARD32 valueMask B32;
+} xSyncCreateAlarmReq;
+#define sz_xSyncCreateAlarmReq 12
+
+/*
+ * Destroy Alarm
+ */
+typedef struct _xSyncDestroyAlarmReq {
+ CARD8 reqType;
+ CARD8 syncReqType;
+ CARD16 length B16;
+ XSyncAlarm alarm B32;
+} xSyncDestroyAlarmReq;
+#define sz_xSyncDestroyAlarmReq 8
+
+/*
+ * Query Alarm
+ */
+typedef struct _xSyncQueryAlarmReq {
+ CARD8 reqType;
+ CARD8 syncReqType;
+ CARD16 length B16;
+ XSyncAlarm alarm B32;
+} xSyncQueryAlarmReq;
+#define sz_xSyncQueryAlarmReq 8
+
+typedef struct {
+ BYTE type;
+ CARD8 unused;
+ CARD16 sequenceNumber B16;
+ CARD32 length B32;
+ XSyncCounter counter B32;
+ CARD32 value_type B32;
+ INT32 wait_value_hi B32;
+ CARD32 wait_value_lo B32;
+ CARD32 test_type B32;
+ INT32 delta_hi B32;
+ CARD32 delta_lo B32;
+ BOOL events;
+ BYTE state;
+ BYTE pad0;
+ BYTE pad1;
+} xSyncQueryAlarmReply;
+#define sz_xSyncQueryAlarmReply 40
+
+/*
+ * Change Alarm
+ */
+typedef struct _xSyncChangeAlarmReq {
+ CARD8 reqType;
+ CARD8 syncReqType;
+ CARD16 length B16;
+ XSyncAlarm alarm B32;
+ CARD32 valueMask B32;
+} xSyncChangeAlarmReq;
+#define sz_xSyncChangeAlarmReq 12
+
+/*
+ * SetPriority
+ */
+typedef struct _xSyncSetPriority{
+ CARD8 reqType;
+ CARD8 syncReqType;
+ CARD16 length B16;
+ CARD32 id B32;
+ INT32 priority B32;
+} xSyncSetPriorityReq;
+#define sz_xSyncSetPriorityReq 12
+
+/*
+ * Get Priority
+ */
+typedef struct _xSyncGetPriority{
+ CARD8 reqType;
+ CARD8 syncReqType;
+ CARD16 length B16;
+ CARD32 id B32; /*XXX XID? */
+} xSyncGetPriorityReq;
+#define sz_xSyncGetPriorityReq 8
+
+typedef struct {
+ BYTE type;
+ CARD8 unused;
+ CARD16 sequenceNumber B16;
+ CARD32 length B32;
+ INT32 priority B32;
+ CARD32 pad0 B32;
+ CARD32 pad1 B32;
+ CARD32 pad2 B32;
+ CARD32 pad3 B32;
+ CARD32 pad4 B32;
+} xSyncGetPriorityReply;
+#define sz_xSyncGetPriorityReply 32
+
+/*
+ * Create Fence
+ */
+typedef struct _xSyncCreateFenceReq {
+ CARD8 reqType;
+ CARD8 syncReqType;
+ CARD16 length B16;
+ Drawable d B32;
+ XSyncFence fid B32;
+ BOOL initially_triggered;
+ CARD8 pad0;
+ CARD16 pad1;
+} xSyncCreateFenceReq;
+#define sz_xSyncCreateFenceReq 16
+
+/*
+ * Put a fence object in the "triggered" state.
+ */
+typedef struct _xSyncTriggerFenceReq {
+ CARD8 reqType;
+ CARD8 syncReqType;
+ CARD16 length B16;
+ XSyncFence fid B32;
+} xSyncTriggerFenceReq;
+#define sz_xSyncTriggerFenceReq 8
+
+/*
+ * Put a fence in the "untriggered" state.
+ */
+typedef struct _xSyncResetFenceReq {
+ CARD8 reqType;
+ CARD8 syncReqType;
+ CARD16 length B16;
+ XSyncFence fid B32;
+} xSyncResetFenceReq;
+#define sz_xSyncResetFenceReq 8
+
+/*
+ * Destroy a fence object
+ */
+typedef struct _xSyncDestroyFenceReq {
+ CARD8 reqType;
+ CARD8 syncReqType;
+ CARD16 length B16;
+ XSyncFence fid B32;
+} xSyncDestroyFenceReq;
+#define sz_xSyncDestroyFenceReq 8
+
+/*
+ * Query a fence object
+ */
+typedef struct _xSyncQueryFenceReq {
+ CARD8 reqType;
+ CARD8 syncReqType;
+ CARD16 length B16;
+ XSyncFence fid B32;
+} xSyncQueryFenceReq;
+#define sz_xSyncQueryFenceReq 8
+
+/*
+ * Wait for any of a list of fence sync objects
+ * to reach the "triggered" state.
+ */
+typedef struct _xSyncAwaitFenceReq {
+ CARD8 reqType;
+ CARD8 syncReqType;
+ CARD16 length B16;
+} xSyncAwaitFenceReq;
+#define sz_xSyncAwaitFenceReq 4
+
+typedef struct {
+ BYTE type;
+ CARD8 unused;
+ CARD16 sequenceNumber B16;
+ CARD32 length B32;
+ BOOL triggered;
+ BYTE pad0;
+ CARD16 pad1 B16;
+ CARD32 pad2 B32;
+ CARD32 pad3 B32;
+ CARD32 pad4 B32;
+ CARD32 pad5 B32;
+ CARD32 pad6 B32;
+} xSyncQueryFenceReply;
+#define sz_xSyncQueryFenceReply 32
+
+/*
+ * Events
+ */
+
+typedef struct _xSyncCounterNotifyEvent {
+ BYTE type;
+ BYTE kind;
+ CARD16 sequenceNumber B16;
+ XSyncCounter counter B32;
+ INT32 wait_value_hi B32;
+ CARD32 wait_value_lo B32;
+ INT32 counter_value_hi B32;
+ CARD32 counter_value_lo B32;
+ CARD32 time B32;
+ CARD16 count B16;
+ BOOL destroyed;
+ BYTE pad0;
+} xSyncCounterNotifyEvent;
+
+typedef struct _xSyncAlarmNotifyEvent {
+ BYTE type;
+ BYTE kind;
+ CARD16 sequenceNumber B16;
+ XSyncAlarm alarm B32;
+ INT32 counter_value_hi B32;
+ CARD32 counter_value_lo B32;
+ INT32 alarm_value_hi B32;
+ CARD32 alarm_value_lo B32;
+ CARD32 time B32;
+ CARD8 state;
+ BYTE pad0;
+ BYTE pad1;
+ BYTE pad2;
+} xSyncAlarmNotifyEvent;
+
+#undef XSyncCounter
+#undef XSyncAlarm
+#undef XSyncFence
+#undef Drawable
+
+
+#endif /* _SYNCPROTO_H_ */
diff --git a/X11/extensions/syncstr.h b/X11/extensions/syncstr.h
index 43697e498..25a48277e 100644
--- a/X11/extensions/syncstr.h
+++ b/X11/extensions/syncstr.h
@@ -1,182 +1,182 @@
-/*
-
-Copyright 1991, 1993, 1994, 1998 The Open Group
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall not be
-used in advertising or otherwise to promote the sale, use or other dealings
-in this Software without prior written authorization from The Open Group.
-
-*/
-
-/***********************************************************
-Copyright 1991,1993 by Digital Equipment Corporation, Maynard, Massachusetts,
-and Olivetti Research Limited, Cambridge, England.
-
- All Rights Reserved
-
-Permission to use, copy, modify, and distribute this software and its
-documentation for any purpose and without fee is hereby granted,
-provided that the above copyright notice appear in all copies and that
-both that copyright notice and this permission notice appear in
-supporting documentation, and that the names of Digital or Olivetti
-not be used in advertising or publicity pertaining to distribution of the
-software without specific, written prior permission.
-
-DIGITAL AND OLIVETTI DISCLAIM ALL WARRANTIES WITH REGARD TO THIS
-SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
-FITNESS, IN NO EVENT SHALL THEY BE LIABLE FOR ANY SPECIAL, INDIRECT OR
-CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF
-USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
-OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
-PERFORMANCE OF THIS SOFTWARE.
-
-******************************************************************/
-
-#ifndef _SYNCSTR_H_
-#define _SYNCSTR_H_
-
-#include <X11/extensions/syncproto.h>
-
-#ifdef _SYNC_SERVER
-
-#define CARD64 XSyncValue /* XXX temporary! need real 64 bit values for Alpha */
-
-typedef struct _SyncCounter {
- ClientPtr client; /* Owning client. 0 for system counters */
- XSyncCounter id; /* resource ID */
- CARD64 value; /* counter value */
- struct _SyncTriggerList *pTriglist; /* list of triggers */
- Bool beingDestroyed; /* in process of going away */
- struct _SysCounterInfo *pSysCounterInfo; /* NULL if not a system counter */
-} SyncCounter;
-
-/*
- * The System Counter interface
- */
-
-typedef enum {
- XSyncCounterNeverChanges,
- XSyncCounterNeverIncreases,
- XSyncCounterNeverDecreases,
- XSyncCounterUnrestricted
-} SyncCounterType;
-
-typedef struct _SysCounterInfo {
- char *name;
- CARD64 resolution;
- CARD64 bracket_greater;
- CARD64 bracket_less;
- SyncCounterType counterType; /* how can this counter change */
- void (*QueryValue)(
- pointer /*pCounter*/,
- CARD64 * /*freshvalue*/
-);
- void (*BracketValues)(
- pointer /*pCounter*/,
- CARD64 * /*lessthan*/,
- CARD64 * /*greaterthan*/
-);
-} SysCounterInfo;
-
-
-
-typedef struct _SyncTrigger {
- SyncCounter *pCounter;
- CARD64 wait_value; /* wait value */
- unsigned int value_type; /* Absolute or Relative */
- unsigned int test_type; /* transition or Comparision type */
- CARD64 test_value; /* trigger event threshold value */
- Bool (*CheckTrigger)(
- struct _SyncTrigger * /*pTrigger*/,
- CARD64 /*newval*/
- );
- void (*TriggerFired)(
- struct _SyncTrigger * /*pTrigger*/
- );
- void (*CounterDestroyed)(
- struct _SyncTrigger * /*pTrigger*/
- );
-} SyncTrigger;
-
-typedef struct _SyncTriggerList {
- SyncTrigger *pTrigger;
- struct _SyncTriggerList *next;
-} SyncTriggerList;
-
-typedef struct _SyncAlarmClientList {
- ClientPtr client;
- XID delete_id;
- struct _SyncAlarmClientList *next;
-} SyncAlarmClientList;
-
-typedef struct _SyncAlarm {
- SyncTrigger trigger;
- ClientPtr client;
- XSyncAlarm alarm_id;
- CARD64 delta;
- int events;
- int state;
- SyncAlarmClientList *pEventClients;
-} SyncAlarm;
-
-typedef struct {
- ClientPtr client;
- CARD32 delete_id;
- int num_waitconditions;
-} SyncAwaitHeader;
-
-typedef struct {
- SyncTrigger trigger;
- CARD64 event_threshold;
- SyncAwaitHeader *pHeader;
-} SyncAwait;
-
-typedef union {
- SyncAwaitHeader header;
- SyncAwait await;
-} SyncAwaitUnion;
-
-
-extern pointer SyncCreateSystemCounter(
- char * /* name */,
- CARD64 /* inital_value */,
- CARD64 /* resolution */,
- SyncCounterType /* change characterization */,
- void (* /*QueryValue*/ ) (
- pointer /* pCounter */,
- CARD64 * /* pValue_return */), /* XXX prototype */
- void (* /*BracketValues*/) (
- pointer /* pCounter */,
- CARD64 * /* pbracket_less */,
- CARD64 * /* pbracket_greater */)
-);
-
-extern void SyncChangeCounter(
- SyncCounter * /* pCounter*/,
- CARD64 /* new_value */
-);
-
-extern void SyncDestroySystemCounter(
- pointer pCounter
-);
-extern void InitServertime(void);
-
-#endif /* _SYNC_SERVER */
-
-#endif /* _SYNCSTR_H_ */
+/*
+
+Copyright 1991, 1993, 1994, 1998 The Open Group
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group shall not be
+used in advertising or otherwise to promote the sale, use or other dealings
+in this Software without prior written authorization from The Open Group.
+
+*/
+
+/***********************************************************
+Copyright 1991,1993 by Digital Equipment Corporation, Maynard, Massachusetts,
+and Olivetti Research Limited, Cambridge, England.
+
+ All Rights Reserved
+
+Permission to use, copy, modify, and distribute this software and its
+documentation for any purpose and without fee is hereby granted,
+provided that the above copyright notice appear in all copies and that
+both that copyright notice and this permission notice appear in
+supporting documentation, and that the names of Digital or Olivetti
+not be used in advertising or publicity pertaining to distribution of the
+software without specific, written prior permission.
+
+DIGITAL AND OLIVETTI DISCLAIM ALL WARRANTIES WITH REGARD TO THIS
+SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
+FITNESS, IN NO EVENT SHALL THEY BE LIABLE FOR ANY SPECIAL, INDIRECT OR
+CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF
+USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
+OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+PERFORMANCE OF THIS SOFTWARE.
+
+******************************************************************/
+
+#ifndef _SYNCSTR_H_
+#define _SYNCSTR_H_
+
+#include <X11/extensions/syncproto.h>
+
+#ifdef _SYNC_SERVER
+
+#define CARD64 XSyncValue /* XXX temporary! need real 64 bit values for Alpha */
+
+typedef struct _SyncCounter {
+ ClientPtr client; /* Owning client. 0 for system counters */
+ XSyncCounter id; /* resource ID */
+ CARD64 value; /* counter value */
+ struct _SyncTriggerList *pTriglist; /* list of triggers */
+ Bool beingDestroyed; /* in process of going away */
+ struct _SysCounterInfo *pSysCounterInfo; /* NULL if not a system counter */
+} SyncCounter;
+
+/*
+ * The System Counter interface
+ */
+
+typedef enum {
+ XSyncCounterNeverChanges,
+ XSyncCounterNeverIncreases,
+ XSyncCounterNeverDecreases,
+ XSyncCounterUnrestricted
+} SyncCounterType;
+
+typedef struct _SysCounterInfo {
+ char *name;
+ CARD64 resolution;
+ CARD64 bracket_greater;
+ CARD64 bracket_less;
+ SyncCounterType counterType; /* how can this counter change */
+ void (*QueryValue)(
+ pointer /*pCounter*/,
+ CARD64 * /*freshvalue*/
+);
+ void (*BracketValues)(
+ pointer /*pCounter*/,
+ CARD64 * /*lessthan*/,
+ CARD64 * /*greaterthan*/
+);
+} SysCounterInfo;
+
+
+
+typedef struct _SyncTrigger {
+ SyncCounter *pCounter;
+ CARD64 wait_value; /* wait value */
+ unsigned int value_type; /* Absolute or Relative */
+ unsigned int test_type; /* transition or Comparision type */
+ CARD64 test_value; /* trigger event threshold value */
+ Bool (*CheckTrigger)(
+ struct _SyncTrigger * /*pTrigger*/,
+ CARD64 /*newval*/
+ );
+ void (*TriggerFired)(
+ struct _SyncTrigger * /*pTrigger*/
+ );
+ void (*CounterDestroyed)(
+ struct _SyncTrigger * /*pTrigger*/
+ );
+} SyncTrigger;
+
+typedef struct _SyncTriggerList {
+ SyncTrigger *pTrigger;
+ struct _SyncTriggerList *next;
+} SyncTriggerList;
+
+typedef struct _SyncAlarmClientList {
+ ClientPtr client;
+ XID delete_id;
+ struct _SyncAlarmClientList *next;
+} SyncAlarmClientList;
+
+typedef struct _SyncAlarm {
+ SyncTrigger trigger;
+ ClientPtr client;
+ XSyncAlarm alarm_id;
+ CARD64 delta;
+ int events;
+ int state;
+ SyncAlarmClientList *pEventClients;
+} SyncAlarm;
+
+typedef struct {
+ ClientPtr client;
+ CARD32 delete_id;
+ int num_waitconditions;
+} SyncAwaitHeader;
+
+typedef struct {
+ SyncTrigger trigger;
+ CARD64 event_threshold;
+ SyncAwaitHeader *pHeader;
+} SyncAwait;
+
+typedef union {
+ SyncAwaitHeader header;
+ SyncAwait await;
+} SyncAwaitUnion;
+
+
+extern pointer SyncCreateSystemCounter(
+ char * /* name */,
+ CARD64 /* inital_value */,
+ CARD64 /* resolution */,
+ SyncCounterType /* change characterization */,
+ void (* /*QueryValue*/ ) (
+ pointer /* pCounter */,
+ CARD64 * /* pValue_return */), /* XXX prototype */
+ void (* /*BracketValues*/) (
+ pointer /* pCounter */,
+ CARD64 * /* pbracket_less */,
+ CARD64 * /* pbracket_greater */)
+);
+
+extern void SyncChangeCounter(
+ SyncCounter * /* pCounter*/,
+ CARD64 /* new_value */
+);
+
+extern void SyncDestroySystemCounter(
+ pointer pCounter
+);
+extern void InitServertime(void);
+
+#endif /* _SYNC_SERVER */
+
+#endif /* _SYNCSTR_H_ */
diff --git a/X11/extensions/xextproto.pc.in b/X11/extensions/xextproto.pc.in
index 5e1af0862..e85200fde 100644
--- a/X11/extensions/xextproto.pc.in
+++ b/X11/extensions/xextproto.pc.in
@@ -1,9 +1,9 @@
-prefix=@prefix@
-exec_prefix=@exec_prefix@
-libdir=@libdir@
-includedir=@includedir@
-
-Name: XExtProto
-Description: XExt extension headers
-Version: @PACKAGE_VERSION@
-Cflags: -I${includedir}
+prefix=@prefix@
+exec_prefix=@exec_prefix@
+libdir=@libdir@
+includedir=@includedir@
+
+Name: XExtProto
+Description: XExt extension headers
+Version: @PACKAGE_VERSION@
+Cflags: -I${includedir}
diff --git a/X11/extensions/xtestconst.h b/X11/extensions/xtestconst.h
index f10240445..e74b9042e 100644
--- a/X11/extensions/xtestconst.h
+++ b/X11/extensions/xtestconst.h
@@ -1,41 +1,41 @@
-/*
-
-Copyright 1992, 1998 The Open Group
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall not be
-used in advertising or otherwise to promote the sale, use or other dealings
-in this Software without prior written authorization from The Open Group.
-
-*/
-
-#ifndef _XTEST_CONST_H_
-#define _XTEST_CONST_H_
-
-#define XTestNumberEvents 0
-
-#define XTestNumberErrors 0
-
-#define XTestCurrentCursor ((Cursor)1)
-
-#define XTestMajorVersion 2
-#define XTestMinorVersion 2
-
-#define XTestExtensionName "XTEST"
-
-#endif
+/*
+
+Copyright 1992, 1998 The Open Group
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group shall not be
+used in advertising or otherwise to promote the sale, use or other dealings
+in this Software without prior written authorization from The Open Group.
+
+*/
+
+#ifndef _XTEST_CONST_H_
+#define _XTEST_CONST_H_
+
+#define XTestNumberEvents 0
+
+#define XTestNumberErrors 0
+
+#define XTestCurrentCursor ((Cursor)1)
+
+#define XTestMajorVersion 2
+#define XTestMinorVersion 2
+
+#define XTestExtensionName "XTEST"
+
+#endif
diff --git a/X11/extensions/xtestext1const.h b/X11/extensions/xtestext1const.h
index 18951cfae..656edc6ba 100644
--- a/X11/extensions/xtestext1const.h
+++ b/X11/extensions/xtestext1const.h
@@ -1,160 +1,160 @@
-/*
- * xtestext1.h
- *
- * X11 Input Synthesis Extension include file
- */
-
-/*
-
-
-Copyright 1986, 1987, 1988, 1998 The Open Group
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall not be
-used in advertising or otherwise to promote the sale, use or other dealings
-in this Software without prior written authorization from The Open Group.
-
-
-Copyright 1986, 1987, 1988 by Hewlett-Packard Corporation
-
-Permission to use, copy, modify, and distribute this
-software and its documentation for any purpose and without
-fee is hereby granted, provided that the above copyright
-notice appear in all copies and that both that copyright
-notice and this permission notice appear in supporting
-documentation, and that the name of Hewlett-Packard not be used in
-advertising or publicity pertaining to distribution of the
-software without specific, written prior permission.
-
-Hewlett-Packard makes no representations about the
-suitability of this software for any purpose. It is provided
-"as is" without express or implied warranty.
-
-This software is not subject to any license of the American
-Telephone and Telegraph Company or of the Regents of the
-University of California.
-
-*/
-
-#ifndef _XTESTEXT1CONST_H
-#define _XTESTEXT1CONST_H 1
-
-#define XTestMAX_ACTION_LIST_SIZE 64
-#define XTestACTIONS_SIZE 28
-
-
-/*
- * used in the XTestPressButton and XTestPressKey functions
- */
-#define XTestPRESS 1 << 0
-#define XTestRELEASE 1 << 1
-#define XTestSTROKE 1 << 2
-
-/*
- * When doing a key or button stroke, the number of milliseconds
- * to delay between the press and the release of a key or button
- * in the XTestPressButton and XTestPressKey functions.
- */
-
-#define XTestSTROKE_DELAY_TIME 10
-
-/*
- * used in the XTestGetInput function
- */
-#define XTestEXCLUSIVE 1 << 0
-#define XTestPACKED_ACTIONS 1 << 1
-#define XTestPACKED_MOTION 1 << 2
-
-/*
- * used in the XTestFakeInput function
- */
-#define XTestFAKE_ACK_NOT_NEEDED 0
-#define XTestFAKE_ACK_REQUEST 1
-
-/*
- * used in the XTest extension initialization routine
- */
-#define XTestEXTENSION_NAME "XTestExtension1"
-#define XTestEVENT_COUNT 2
-
-/*
- * This is the definition for the format of the header byte
- * in the input action structures.
- */
-#define XTestACTION_TYPE_MASK 0x03 /* bits 0 and 1 */
-#define XTestKEY_STATE_MASK 0x04 /* bit 2 (key action) */
-#define XTestX_SIGN_BIT_MASK 0x04 /* bit 2 (motion action) */
-#define XTestY_SIGN_BIT_MASK 0x08 /* bit 3 (motion action) */
-#define XTestDEVICE_ID_MASK 0xf0 /* bits 4 through 7 */
-
-#define XTestMAX_DEVICE_ID 0x0f
-#define XTestPackDeviceID(x) (((x) & XTestMAX_DEVICE_ID) << 4)
-#define XTestUnpackDeviceID(x) (((x) & XTestDEVICE_ID_MASK) >> 4)
-
-/*
- * These are the possible action types.
- */
-#define XTestDELAY_ACTION 0
-#define XTestKEY_ACTION 1
-#define XTestMOTION_ACTION 2
-#define XTestJUMP_ACTION 3
-
-/*
- * These are the definitions for key/button motion input actions.
- */
-#define XTestKEY_UP 0x04
-#define XTestKEY_DOWN 0x00
-
-/*
- * These are the definitions for pointer relative motion input
- * actions.
- *
- * The sign bits for the x and y relative motions are contained
- * in the header byte. The x and y relative motions are packed
- * into one byte to make things fit in 32 bits. If the relative
- * motion range is larger than +/-15, use the pointer jump action.
- */
-#define XTestMOTION_MAX 15
-#define XTestMOTION_MIN -15
-
-#define XTestX_NEGATIVE 0x04
-#define XTestY_NEGATIVE 0x08
-
-#define XTestX_MOTION_MASK 0x0f
-#define XTestY_MOTION_MASK 0xf0
-
-#define XTestPackXMotionValue(x) ((x) & XTestX_MOTION_MASK)
-#define XTestPackYMotionValue(x) (((x) << 4) & XTestY_MOTION_MASK)
-
-#define XTestUnpackXMotionValue(x) ((x) & XTestX_MOTION_MASK)
-#define XTestUnpackYMotionValue(x) (((x) & XTestY_MOTION_MASK) >> 4)
-/*
- * These are the definitions for a long delay input action. It is
- * used when more than XTestSHORT_DELAY_TIME milliseconds of delay
- * (approximately one minute) is needed.
- *
- * The device ID for a delay is always set to XTestDELAY_DEVICE_ID.
- * This guarantees that a header byte with a value of 0 is not
- * a valid header, so it can be used as a flag to indicate that
- * there are no more input actions in an XTestInputAction event.
- */
-
-#define XTestSHORT_DELAY_TIME 0xffff
-#define XTestDELAY_DEVICE_ID 0x0f
-
-#endif /* _XTESTEXT1CONST_H */
+/*
+ * xtestext1.h
+ *
+ * X11 Input Synthesis Extension include file
+ */
+
+/*
+
+
+Copyright 1986, 1987, 1988, 1998 The Open Group
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group shall not be
+used in advertising or otherwise to promote the sale, use or other dealings
+in this Software without prior written authorization from The Open Group.
+
+
+Copyright 1986, 1987, 1988 by Hewlett-Packard Corporation
+
+Permission to use, copy, modify, and distribute this
+software and its documentation for any purpose and without
+fee is hereby granted, provided that the above copyright
+notice appear in all copies and that both that copyright
+notice and this permission notice appear in supporting
+documentation, and that the name of Hewlett-Packard not be used in
+advertising or publicity pertaining to distribution of the
+software without specific, written prior permission.
+
+Hewlett-Packard makes no representations about the
+suitability of this software for any purpose. It is provided
+"as is" without express or implied warranty.
+
+This software is not subject to any license of the American
+Telephone and Telegraph Company or of the Regents of the
+University of California.
+
+*/
+
+#ifndef _XTESTEXT1CONST_H
+#define _XTESTEXT1CONST_H 1
+
+#define XTestMAX_ACTION_LIST_SIZE 64
+#define XTestACTIONS_SIZE 28
+
+
+/*
+ * used in the XTestPressButton and XTestPressKey functions
+ */
+#define XTestPRESS 1 << 0
+#define XTestRELEASE 1 << 1
+#define XTestSTROKE 1 << 2
+
+/*
+ * When doing a key or button stroke, the number of milliseconds
+ * to delay between the press and the release of a key or button
+ * in the XTestPressButton and XTestPressKey functions.
+ */
+
+#define XTestSTROKE_DELAY_TIME 10
+
+/*
+ * used in the XTestGetInput function
+ */
+#define XTestEXCLUSIVE 1 << 0
+#define XTestPACKED_ACTIONS 1 << 1
+#define XTestPACKED_MOTION 1 << 2
+
+/*
+ * used in the XTestFakeInput function
+ */
+#define XTestFAKE_ACK_NOT_NEEDED 0
+#define XTestFAKE_ACK_REQUEST 1
+
+/*
+ * used in the XTest extension initialization routine
+ */
+#define XTestEXTENSION_NAME "XTestExtension1"
+#define XTestEVENT_COUNT 2
+
+/*
+ * This is the definition for the format of the header byte
+ * in the input action structures.
+ */
+#define XTestACTION_TYPE_MASK 0x03 /* bits 0 and 1 */
+#define XTestKEY_STATE_MASK 0x04 /* bit 2 (key action) */
+#define XTestX_SIGN_BIT_MASK 0x04 /* bit 2 (motion action) */
+#define XTestY_SIGN_BIT_MASK 0x08 /* bit 3 (motion action) */
+#define XTestDEVICE_ID_MASK 0xf0 /* bits 4 through 7 */
+
+#define XTestMAX_DEVICE_ID 0x0f
+#define XTestPackDeviceID(x) (((x) & XTestMAX_DEVICE_ID) << 4)
+#define XTestUnpackDeviceID(x) (((x) & XTestDEVICE_ID_MASK) >> 4)
+
+/*
+ * These are the possible action types.
+ */
+#define XTestDELAY_ACTION 0
+#define XTestKEY_ACTION 1
+#define XTestMOTION_ACTION 2
+#define XTestJUMP_ACTION 3
+
+/*
+ * These are the definitions for key/button motion input actions.
+ */
+#define XTestKEY_UP 0x04
+#define XTestKEY_DOWN 0x00
+
+/*
+ * These are the definitions for pointer relative motion input
+ * actions.
+ *
+ * The sign bits for the x and y relative motions are contained
+ * in the header byte. The x and y relative motions are packed
+ * into one byte to make things fit in 32 bits. If the relative
+ * motion range is larger than +/-15, use the pointer jump action.
+ */
+#define XTestMOTION_MAX 15
+#define XTestMOTION_MIN -15
+
+#define XTestX_NEGATIVE 0x04
+#define XTestY_NEGATIVE 0x08
+
+#define XTestX_MOTION_MASK 0x0f
+#define XTestY_MOTION_MASK 0xf0
+
+#define XTestPackXMotionValue(x) ((x) & XTestX_MOTION_MASK)
+#define XTestPackYMotionValue(x) (((x) << 4) & XTestY_MOTION_MASK)
+
+#define XTestUnpackXMotionValue(x) ((x) & XTestX_MOTION_MASK)
+#define XTestUnpackYMotionValue(x) (((x) & XTestY_MOTION_MASK) >> 4)
+/*
+ * These are the definitions for a long delay input action. It is
+ * used when more than XTestSHORT_DELAY_TIME milliseconds of delay
+ * (approximately one minute) is needed.
+ *
+ * The device ID for a delay is always set to XTestDELAY_DEVICE_ID.
+ * This guarantees that a header byte with a value of 0 is not
+ * a valid header, so it can be used as a flag to indicate that
+ * there are no more input actions in an XTestInputAction event.
+ */
+
+#define XTestSHORT_DELAY_TIME 0xffff
+#define XTestDELAY_DEVICE_ID 0x0f
+
+#endif /* _XTESTEXT1CONST_H */
diff --git a/X11/extensions/xtestext1proto.h b/X11/extensions/xtestext1proto.h
index 0bfa4ca2b..e9bdee09f 100644
--- a/X11/extensions/xtestext1proto.h
+++ b/X11/extensions/xtestext1proto.h
@@ -1,221 +1,221 @@
-/*
- * xtestext1.h
- *
- * X11 Input Synthesis Extension include file
- */
-
-/*
-Copyright 1986, 1987, 1988, 1998 The Open Group
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall not be
-used in advertising or otherwise to promote the sale, use or other dealings
-in this Software without prior written authorization from The Open Group.
-
-
-Copyright 1986, 1987, 1988 by Hewlett-Packard Corporation
-
-Permission to use, copy, modify, and distribute this
-software and its documentation for any purpose and without
-fee is hereby granted, provided that the above copyright
-notice appear in all copies and that both that copyright
-notice and this permission notice appear in supporting
-documentation, and that the name of Hewlett-Packard not be used in
-advertising or publicity pertaining to distribution of the
-software without specific, written prior permission.
-
-Hewlett-Packard makes no representations about the
-suitability of this software for any purpose. It is provided
-"as is" without express or implied warranty.
-
-This software is not subject to any license of the American
-Telephone and Telegraph Company or of the Regents of the
-University of California.
-
-*/
-
-#ifndef _XTESTEXT1PROTO_H
-#define _XTESTEXT1PROTO_H 1
-
-#include <X11/extensions/xtestext1const.h>
-
-/*
- * the typedefs for CARD8, CARD16, and CARD32 are defined in Xmd.h
- */
-
-/*
- * XTest request type values
- *
- * used in the XTest extension protocol requests
- */
-#define X_TestFakeInput 1
-#define X_TestGetInput 2
-#define X_TestStopInput 3
-#define X_TestReset 4
-#define X_TestQueryInputSize 5
-
-/*
- * This defines the maximum size of a list of input actions
- * to be sent to the server. It should always be a multiple of
- * 4 so that the entire xTestFakeInputReq structure size is a
- * multiple of 4.
- */
-
-typedef struct {
- CARD8 reqType; /* always XTestReqCode */
- CARD8 XTestReqType; /* always X_TestFakeInput */
- CARD16 length B16; /* 2 + XTestMAX_ACTION_LIST_SIZE/4 */
- CARD32 ack B32;
- CARD8 action_list[XTestMAX_ACTION_LIST_SIZE];
-} xTestFakeInputReq;
-#define sz_xTestFakeInputReq (XTestMAX_ACTION_LIST_SIZE + 8)
-
-typedef struct {
- CARD8 reqType; /* always XTestReqCode */
- CARD8 XTestReqType; /* always X_TestGetInput */
- CARD16 length B16; /* 2 */
- CARD32 mode B32;
-} xTestGetInputReq;
-#define sz_xTestGetInputReq 8
-
-typedef struct {
- CARD8 reqType; /* always XTestReqCode */
- CARD8 XTestReqType; /* always X_TestStopInput */
- CARD16 length B32; /* 1 */
-} xTestStopInputReq;
-#define sz_xTestStopInputReq 4
-
-typedef struct {
- CARD8 reqType; /* always XTestReqCode */
- CARD8 XTestReqType; /* always X_TestReset */
- CARD16 length B16; /* 1 */
-} xTestResetReq;
-#define sz_xTestResetReq 4
-
-typedef struct {
- CARD8 reqType; /* always XTestReqCode */
- CARD8 XTestReqType; /* always X_TestQueryInputSize */
- CARD16 length B16; /* 1 */
-} xTestQueryInputSizeReq;
-#define sz_xTestQueryInputSizeReq 4
-
-/*
- * This is the definition of the reply for the xTestQueryInputSize
- * request. It should remain the same minimum size as other replies
- * (32 bytes).
- */
-typedef struct {
- CARD8 type; /* always X_Reply */
- CARD8 pad1;
- CARD16 sequenceNumber B16;
- CARD32 length B32; /* always 0 */
- CARD32 size_return B32;
- CARD32 pad2 B32;
- CARD32 pad3 B32;
- CARD32 pad4 B32;
- CARD32 pad5 B32;
- CARD32 pad6 B32;
-} xTestQueryInputSizeReply;
-
-/*
- * This is the definition for the input action wire event structure.
- * This event is sent to the client when the server has one or
- * more user input actions to report to the client. It must
- * remain the same size as all other wire events (32 bytes).
- */
-typedef struct {
- CARD8 type; /* always XTestInputActionType */
- CARD8 pad00;
- CARD16 sequenceNumber B16;
- CARD8 actions[XTestACTIONS_SIZE];
-} xTestInputActionEvent;
-
-/*
- * This is the definition for the xTestFakeAck wire event structure.
- * This event is sent to the client when the server has completely
- * processed its input action buffer, and is ready for more.
- * It must remain the same size as all other wire events (32 bytes).
- */
-typedef struct {
- CARD8 type; /* always XTestFakeAckType */
- CARD8 pad00;
- CARD16 sequenceNumber B16;
- CARD32 pad02 B32;
- CARD32 pad03 B32;
- CARD32 pad04 B32;
- CARD32 pad05 B32;
- CARD32 pad06 B32;
- CARD32 pad07 B32;
- CARD32 pad08 B32;
-} xTestFakeAckEvent;
-
-/*
- * These are the definitions for key/button motion input actions.
- */
-typedef struct {
- CARD8 header; /* which device, key up/down */
- CARD8 keycode; /* which key/button to move */
- CARD16 delay_time B16; /* how long to delay (in ms) */
-} XTestKeyInfo;
-
-/*
- * This is the definition for pointer jump input actions.
- */
-typedef struct {
- CARD8 header; /* which pointer */
- CARD8 pad1; /* unused padding byte */
- CARD16 jumpx B16; /* x coord to jump to */
- CARD16 jumpy B16; /* y coord to jump to */
- CARD16 delay_time B16; /* how long to delay (in ms) */
-} XTestJumpInfo;
-
-/*
- * These are the definitions for pointer relative motion input
- * actions.
- *
- * The sign bits for the x and y relative motions are contained
- * in the header byte. The x and y relative motions are packed
- * into one byte to make things fit in 32 bits. If the relative
- * motion range is larger than +/-15, use the pointer jump action.
- */
-
-typedef struct {
- CARD8 header; /* which pointer */
- CARD8 motion_data; /* x,y relative motion */
- CARD16 delay_time B16; /* how long to delay (in ms) */
-} XTestMotionInfo;
-
-/*
- * These are the definitions for a long delay input action. It is
- * used when more than XTestSHORT_DELAY_TIME milliseconds of delay
- * (approximately one minute) is needed.
- *
- * The device ID for a delay is always set to XTestDELAY_DEVICE_ID.
- * This guarantees that a header byte with a value of 0 is not
- * a valid header, so it can be used as a flag to indicate that
- * there are no more input actions in an XTestInputAction event.
- */
-
-typedef struct {
- CARD8 header; /* always XTestDELAY_DEVICE_ID */
- CARD8 pad1; /* unused padding byte */
- CARD16 pad2 B16; /* unused padding word */
- CARD32 delay_time B32; /* how long to delay (in ms) */
-} XTestDelayInfo;
-
-#endif /* _XTESTEXT1PROTO_H */
+/*
+ * xtestext1.h
+ *
+ * X11 Input Synthesis Extension include file
+ */
+
+/*
+Copyright 1986, 1987, 1988, 1998 The Open Group
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group shall not be
+used in advertising or otherwise to promote the sale, use or other dealings
+in this Software without prior written authorization from The Open Group.
+
+
+Copyright 1986, 1987, 1988 by Hewlett-Packard Corporation
+
+Permission to use, copy, modify, and distribute this
+software and its documentation for any purpose and without
+fee is hereby granted, provided that the above copyright
+notice appear in all copies and that both that copyright
+notice and this permission notice appear in supporting
+documentation, and that the name of Hewlett-Packard not be used in
+advertising or publicity pertaining to distribution of the
+software without specific, written prior permission.
+
+Hewlett-Packard makes no representations about the
+suitability of this software for any purpose. It is provided
+"as is" without express or implied warranty.
+
+This software is not subject to any license of the American
+Telephone and Telegraph Company or of the Regents of the
+University of California.
+
+*/
+
+#ifndef _XTESTEXT1PROTO_H
+#define _XTESTEXT1PROTO_H 1
+
+#include <X11/extensions/xtestext1const.h>
+
+/*
+ * the typedefs for CARD8, CARD16, and CARD32 are defined in Xmd.h
+ */
+
+/*
+ * XTest request type values
+ *
+ * used in the XTest extension protocol requests
+ */
+#define X_TestFakeInput 1
+#define X_TestGetInput 2
+#define X_TestStopInput 3
+#define X_TestReset 4
+#define X_TestQueryInputSize 5
+
+/*
+ * This defines the maximum size of a list of input actions
+ * to be sent to the server. It should always be a multiple of
+ * 4 so that the entire xTestFakeInputReq structure size is a
+ * multiple of 4.
+ */
+
+typedef struct {
+ CARD8 reqType; /* always XTestReqCode */
+ CARD8 XTestReqType; /* always X_TestFakeInput */
+ CARD16 length B16; /* 2 + XTestMAX_ACTION_LIST_SIZE/4 */
+ CARD32 ack B32;
+ CARD8 action_list[XTestMAX_ACTION_LIST_SIZE];
+} xTestFakeInputReq;
+#define sz_xTestFakeInputReq (XTestMAX_ACTION_LIST_SIZE + 8)
+
+typedef struct {
+ CARD8 reqType; /* always XTestReqCode */
+ CARD8 XTestReqType; /* always X_TestGetInput */
+ CARD16 length B16; /* 2 */
+ CARD32 mode B32;
+} xTestGetInputReq;
+#define sz_xTestGetInputReq 8
+
+typedef struct {
+ CARD8 reqType; /* always XTestReqCode */
+ CARD8 XTestReqType; /* always X_TestStopInput */
+ CARD16 length B32; /* 1 */
+} xTestStopInputReq;
+#define sz_xTestStopInputReq 4
+
+typedef struct {
+ CARD8 reqType; /* always XTestReqCode */
+ CARD8 XTestReqType; /* always X_TestReset */
+ CARD16 length B16; /* 1 */
+} xTestResetReq;
+#define sz_xTestResetReq 4
+
+typedef struct {
+ CARD8 reqType; /* always XTestReqCode */
+ CARD8 XTestReqType; /* always X_TestQueryInputSize */
+ CARD16 length B16; /* 1 */
+} xTestQueryInputSizeReq;
+#define sz_xTestQueryInputSizeReq 4
+
+/*
+ * This is the definition of the reply for the xTestQueryInputSize
+ * request. It should remain the same minimum size as other replies
+ * (32 bytes).
+ */
+typedef struct {
+ CARD8 type; /* always X_Reply */
+ CARD8 pad1;
+ CARD16 sequenceNumber B16;
+ CARD32 length B32; /* always 0 */
+ CARD32 size_return B32;
+ CARD32 pad2 B32;
+ CARD32 pad3 B32;
+ CARD32 pad4 B32;
+ CARD32 pad5 B32;
+ CARD32 pad6 B32;
+} xTestQueryInputSizeReply;
+
+/*
+ * This is the definition for the input action wire event structure.
+ * This event is sent to the client when the server has one or
+ * more user input actions to report to the client. It must
+ * remain the same size as all other wire events (32 bytes).
+ */
+typedef struct {
+ CARD8 type; /* always XTestInputActionType */
+ CARD8 pad00;
+ CARD16 sequenceNumber B16;
+ CARD8 actions[XTestACTIONS_SIZE];
+} xTestInputActionEvent;
+
+/*
+ * This is the definition for the xTestFakeAck wire event structure.
+ * This event is sent to the client when the server has completely
+ * processed its input action buffer, and is ready for more.
+ * It must remain the same size as all other wire events (32 bytes).
+ */
+typedef struct {
+ CARD8 type; /* always XTestFakeAckType */
+ CARD8 pad00;
+ CARD16 sequenceNumber B16;
+ CARD32 pad02 B32;
+ CARD32 pad03 B32;
+ CARD32 pad04 B32;
+ CARD32 pad05 B32;
+ CARD32 pad06 B32;
+ CARD32 pad07 B32;
+ CARD32 pad08 B32;
+} xTestFakeAckEvent;
+
+/*
+ * These are the definitions for key/button motion input actions.
+ */
+typedef struct {
+ CARD8 header; /* which device, key up/down */
+ CARD8 keycode; /* which key/button to move */
+ CARD16 delay_time B16; /* how long to delay (in ms) */
+} XTestKeyInfo;
+
+/*
+ * This is the definition for pointer jump input actions.
+ */
+typedef struct {
+ CARD8 header; /* which pointer */
+ CARD8 pad1; /* unused padding byte */
+ CARD16 jumpx B16; /* x coord to jump to */
+ CARD16 jumpy B16; /* y coord to jump to */
+ CARD16 delay_time B16; /* how long to delay (in ms) */
+} XTestJumpInfo;
+
+/*
+ * These are the definitions for pointer relative motion input
+ * actions.
+ *
+ * The sign bits for the x and y relative motions are contained
+ * in the header byte. The x and y relative motions are packed
+ * into one byte to make things fit in 32 bits. If the relative
+ * motion range is larger than +/-15, use the pointer jump action.
+ */
+
+typedef struct {
+ CARD8 header; /* which pointer */
+ CARD8 motion_data; /* x,y relative motion */
+ CARD16 delay_time B16; /* how long to delay (in ms) */
+} XTestMotionInfo;
+
+/*
+ * These are the definitions for a long delay input action. It is
+ * used when more than XTestSHORT_DELAY_TIME milliseconds of delay
+ * (approximately one minute) is needed.
+ *
+ * The device ID for a delay is always set to XTestDELAY_DEVICE_ID.
+ * This guarantees that a header byte with a value of 0 is not
+ * a valid header, so it can be used as a flag to indicate that
+ * there are no more input actions in an XTestInputAction event.
+ */
+
+typedef struct {
+ CARD8 header; /* always XTestDELAY_DEVICE_ID */
+ CARD8 pad1; /* unused padding byte */
+ CARD16 pad2 B16; /* unused padding word */
+ CARD32 delay_time B32; /* how long to delay (in ms) */
+} XTestDelayInfo;
+
+#endif /* _XTESTEXT1PROTO_H */
diff --git a/X11/extensions/xtestproto.h b/X11/extensions/xtestproto.h
index b96b43b38..4f8db2652 100644
--- a/X11/extensions/xtestproto.h
+++ b/X11/extensions/xtestproto.h
@@ -1,124 +1,124 @@
-/*
-
-Copyright 1992, 1998 The Open Group
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall not be
-used in advertising or otherwise to promote the sale, use or other dealings
-in this Software without prior written authorization from The Open Group.
-
-*/
-
-#ifndef _XTESTPROTO_H_
-#define _XTESTPROTO_H_
-
-#include <X11/extensions/xtestconst.h>
-
-#define Window CARD32
-#define Time CARD32
-#define Cursor CARD32
-
-#define X_XTestGetVersion 0
-#define X_XTestCompareCursor 1
-#define X_XTestFakeInput 2
-#define X_XTestGrabControl 3
-
-typedef struct {
- CARD8 reqType; /* always XTestReqCode */
- CARD8 xtReqType; /* always X_XTestGetVersion */
- CARD16 length B16;
- CARD8 majorVersion;
- CARD8 pad;
- CARD16 minorVersion B16;
-} xXTestGetVersionReq;
-#define sz_xXTestGetVersionReq 8
-
-typedef struct {
- BYTE type; /* X_Reply */
- CARD8 majorVersion;
- CARD16 sequenceNumber B16;
- CARD32 length B32;
- CARD16 minorVersion B16;
- CARD16 pad0 B16;
- CARD32 pad1 B32;
- CARD32 pad2 B32;
- CARD32 pad3 B32;
- CARD32 pad4 B32;
- CARD32 pad5 B32;
-} xXTestGetVersionReply;
-#define sz_xXTestGetVersionReply 32
-
-typedef struct {
- CARD8 reqType; /* always XTestReqCode */
- CARD8 xtReqType; /* always X_XTestCompareCursor */
- CARD16 length B16;
- Window window B32;
- Cursor cursor B32;
-} xXTestCompareCursorReq;
-#define sz_xXTestCompareCursorReq 12
-
-typedef struct {
- BYTE type; /* X_Reply */
- BOOL same;
- CARD16 sequenceNumber B16;
- CARD32 length B32;
- CARD32 pad0 B32;
- CARD32 pad1 B32;
- CARD32 pad2 B32;
- CARD32 pad3 B32;
- CARD32 pad4 B32;
- CARD32 pad5 B32;
-} xXTestCompareCursorReply;
-#define sz_xXTestCompareCursorReply 32
-
-/* used only on the client side */
-typedef struct {
- CARD8 reqType; /* always XTestReqCode */
- CARD8 xtReqType; /* always X_XTestFakeInput */
- CARD16 length B16;
- BYTE type;
- BYTE detail;
- CARD16 pad0 B16;
- Time time B32;
- Window root B32;
- CARD32 pad1 B32;
- CARD32 pad2 B32;
- INT16 rootX B16, rootY B16;
- CARD32 pad3 B32;
- CARD16 pad4 B16;
- CARD8 pad5;
- CARD8 deviceid;
-} xXTestFakeInputReq;
-#define sz_xXTestFakeInputReq 36
-
-typedef struct {
- CARD8 reqType; /* always XTestReqCode */
- CARD8 xtReqType; /* always X_XTestGrabControl */
- CARD16 length B16;
- BOOL impervious;
- CARD8 pad0;
- CARD8 pad1;
- CARD8 pad2;
-} xXTestGrabControlReq;
-#define sz_xXTestGrabControlReq 8
-
-#undef Window
-#undef Time
-#undef Cursor
-
-#endif /* _XTESTPROTO_H_ */
+/*
+
+Copyright 1992, 1998 The Open Group
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group shall not be
+used in advertising or otherwise to promote the sale, use or other dealings
+in this Software without prior written authorization from The Open Group.
+
+*/
+
+#ifndef _XTESTPROTO_H_
+#define _XTESTPROTO_H_
+
+#include <X11/extensions/xtestconst.h>
+
+#define Window CARD32
+#define Time CARD32
+#define Cursor CARD32
+
+#define X_XTestGetVersion 0
+#define X_XTestCompareCursor 1
+#define X_XTestFakeInput 2
+#define X_XTestGrabControl 3
+
+typedef struct {
+ CARD8 reqType; /* always XTestReqCode */
+ CARD8 xtReqType; /* always X_XTestGetVersion */
+ CARD16 length B16;
+ CARD8 majorVersion;
+ CARD8 pad;
+ CARD16 minorVersion B16;
+} xXTestGetVersionReq;
+#define sz_xXTestGetVersionReq 8
+
+typedef struct {
+ BYTE type; /* X_Reply */
+ CARD8 majorVersion;
+ CARD16 sequenceNumber B16;
+ CARD32 length B32;
+ CARD16 minorVersion B16;
+ CARD16 pad0 B16;
+ CARD32 pad1 B32;
+ CARD32 pad2 B32;
+ CARD32 pad3 B32;
+ CARD32 pad4 B32;
+ CARD32 pad5 B32;
+} xXTestGetVersionReply;
+#define sz_xXTestGetVersionReply 32
+
+typedef struct {
+ CARD8 reqType; /* always XTestReqCode */
+ CARD8 xtReqType; /* always X_XTestCompareCursor */
+ CARD16 length B16;
+ Window window B32;
+ Cursor cursor B32;
+} xXTestCompareCursorReq;
+#define sz_xXTestCompareCursorReq 12
+
+typedef struct {
+ BYTE type; /* X_Reply */
+ BOOL same;
+ CARD16 sequenceNumber B16;
+ CARD32 length B32;
+ CARD32 pad0 B32;
+ CARD32 pad1 B32;
+ CARD32 pad2 B32;
+ CARD32 pad3 B32;
+ CARD32 pad4 B32;
+ CARD32 pad5 B32;
+} xXTestCompareCursorReply;
+#define sz_xXTestCompareCursorReply 32
+
+/* used only on the client side */
+typedef struct {
+ CARD8 reqType; /* always XTestReqCode */
+ CARD8 xtReqType; /* always X_XTestFakeInput */
+ CARD16 length B16;
+ BYTE type;
+ BYTE detail;
+ CARD16 pad0 B16;
+ Time time B32;
+ Window root B32;
+ CARD32 pad1 B32;
+ CARD32 pad2 B32;
+ INT16 rootX B16, rootY B16;
+ CARD32 pad3 B32;
+ CARD16 pad4 B16;
+ CARD8 pad5;
+ CARD8 deviceid;
+} xXTestFakeInputReq;
+#define sz_xXTestFakeInputReq 36
+
+typedef struct {
+ CARD8 reqType; /* always XTestReqCode */
+ CARD8 xtReqType; /* always X_XTestGrabControl */
+ CARD16 length B16;
+ BOOL impervious;
+ CARD8 pad0;
+ CARD8 pad1;
+ CARD8 pad2;
+} xXTestGrabControlReq;
+#define sz_xXTestGrabControlReq 8
+
+#undef Window
+#undef Time
+#undef Cursor
+
+#endif /* _XTESTPROTO_H_ */
diff --git a/libX11/.gitignore b/libX11/.gitignore
index e0eee0bda..9e3e3d408 100644
--- a/libX11/.gitignore
+++ b/libX11/.gitignore
@@ -1,80 +1,80 @@
-#
-# X.Org module default exclusion patterns
-# The next section if for module specific patterns
-#
-# Do not edit the following section
-# GNU Build System (Autotools)
-aclocal.m4
-autom4te.cache/
-autoscan.log
-ChangeLog
-compile
-config.guess
-config.h
-config.h.in
-config.log
-config-ml.in
-config.py
-config.status
-config.status.lineno
-config.sub
-configure
-configure.scan
-depcomp
-.deps/
-INSTALL
-install-sh
-.libs/
-libtool
-libtool.m4
-ltmain.sh
-lt~obsolete.m4
-ltoptions.m4
-ltsugar.m4
-ltversion.m4
-Makefile
-Makefile.in
-mdate-sh
-missing
-mkinstalldirs
-*.pc
-py-compile
-stamp-h?
-symlink-tree
-texinfo.tex
-ylwrap
-
-# Do not edit the following section
-# Edit Compile Debug Document Distribute
-*~
-*.[0-9]
-*.[0-9]x
-*.bak
-*.bin
-core
-*.dll
-*.exe
-*-ISO*.bdf
-*-JIS*.bdf
-*-KOI8*.bdf
-*.kld
-*.ko
-*.ko.cmd
-*.lai
-*.l[oa]
-*.[oa]
-*.obj
-*.patch
-*.so
-*.pcf.gz
-*.pdb
-*.tar.bz2
-*.tar.gz
-#
-# Add & Override patterns for libX11
-#
-# Edit the following section as needed
-# For example, !report.pc overrides *.pc. See 'man gitignore'
-#
-doltcompile
-doltlibtool
+#
+# X.Org module default exclusion patterns
+# The next section if for module specific patterns
+#
+# Do not edit the following section
+# GNU Build System (Autotools)
+aclocal.m4
+autom4te.cache/
+autoscan.log
+ChangeLog
+compile
+config.guess
+config.h
+config.h.in
+config.log
+config-ml.in
+config.py
+config.status
+config.status.lineno
+config.sub
+configure
+configure.scan
+depcomp
+.deps/
+INSTALL
+install-sh
+.libs/
+libtool
+libtool.m4
+ltmain.sh
+lt~obsolete.m4
+ltoptions.m4
+ltsugar.m4
+ltversion.m4
+Makefile
+Makefile.in
+mdate-sh
+missing
+mkinstalldirs
+*.pc
+py-compile
+stamp-h?
+symlink-tree
+texinfo.tex
+ylwrap
+
+# Do not edit the following section
+# Edit Compile Debug Document Distribute
+*~
+*.[0-9]
+*.[0-9]x
+*.bak
+*.bin
+core
+*.dll
+*.exe
+*-ISO*.bdf
+*-JIS*.bdf
+*-KOI8*.bdf
+*.kld
+*.ko
+*.ko.cmd
+*.lai
+*.l[oa]
+*.[oa]
+*.obj
+*.patch
+*.so
+*.pcf.gz
+*.pdb
+*.tar.bz2
+*.tar.gz
+#
+# Add & Override patterns for libX11
+#
+# Edit the following section as needed
+# For example, !report.pc overrides *.pc. See 'man gitignore'
+#
+doltcompile
+doltlibtool
diff --git a/libX11/COPYING b/libX11/COPYING
index df1e85a69..b065516e4 100644
--- a/libX11/COPYING
+++ b/libX11/COPYING
@@ -1,942 +1,942 @@
-The following is the 'standard copyright' agreed upon by most contributors,
-and is currently the canonical license preferred by the X.Org Foundation.
-This is a slight variant of the common MIT license form published by the
-Open Source Initiative at http://www.opensource.org/licenses/mit-license.php
-
-Copyright holders of new code should use this license statement where
-possible, and insert their name to this list. Please sort by surname
-for people, and by the full name for other entities (e.g. Juliusz
-Chroboczek sorts before Intel Corporation sorts before Daniel Stone).
-
-See each individual source file or directory for the license that applies
-to that file.
-
-Copyright (C) 2003-2006,2008 Jamey Sharp, Josh Triplett
-Copyright © 2009 Red Hat, Inc.
-Copyright 1990-1992,1999,2000,2004,2009,2010 Oracle and/or its affiliates.
-All rights reserved.
-
-Permission is hereby granted, free of charge, to any person obtaining a
-copy of this software and associated documentation files (the "Software"),
-to deal in the Software without restriction, including without limitation
-the rights to use, copy, modify, merge, publish, distribute, sublicense,
-and/or sell copies of the Software, and to permit persons to whom the
-Software is furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice (including the next
-paragraph) shall be included in all copies or substantial portions of the
-Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-DEALINGS IN THE SOFTWARE.
-
- ----------------------------------------------------------------------
-
-The following licenses are 'legacy' - usually MIT/X11 licenses with the name
-of the copyright holder(s) in the license statement:
-
-Copyright 1984-1994, 1998 The Open Group
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall not be
-used in advertising or otherwise to promote the sale, use or other dealings
-in this Software without prior written authorization from The Open Group.
-
-X Window System is a trademark of The Open Group.
-
- ----------------------------------------
-
-Copyright 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1994, 1996 X Consortium
-Copyright 2000 The XFree86 Project, Inc.
-
-Permission is hereby granted, free of charge, to any person obtaining
-a copy of this software and associated documentation files (the
-"Software"), to deal in the Software without restriction, including
-without limitation the rights to use, copy, modify, merge, publish,
-distribute, sublicense, and/or sell copies of the Software, and to
-permit persons to whom the Software is furnished to do so, subject to
-the following conditions:
-
-The above copyright notice and this permission notice shall be included
-in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
-IN NO EVENT SHALL THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR
-OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
-ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of the X Consortium shall
-not be used in advertising or otherwise to promote the sale, use or
-other dealings in this Software without prior written authorization
-from the X Consortium.
-
-Copyright 1985, 1986, 1987, 1988, 1989, 1990, 1991 by
-Digital Equipment Corporation
-
-Portions Copyright 1990, 1991 by Tektronix, Inc.
-
-Permission to use, copy, modify and distribute this documentation for
-any purpose and without fee is hereby granted, provided that the above
-copyright notice appears in all copies and that both that copyright notice
-and this permission notice appear in all copies, and that the names of
-Digital and Tektronix not be used in in advertising or publicity pertaining
-to this documentation without specific, written prior permission.
-Digital and Tektronix makes no representations about the suitability
-of this documentation for any purpose.
-It is provided ``as is'' without express or implied warranty.
-
- ----------------------------------------
-
-Copyright (c) 1999-2000 Free Software Foundation, Inc.
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-FREE SOFTWARE FOUNDATION BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR
-IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of the Free Software Foundation
-shall not be used in advertising or otherwise to promote the sale, use or
-other dealings in this Software without prior written authorization from the
-Free Software Foundation.
-
- ----------------------------------------
-
-Code and supporting documentation (c) Copyright 1990 1991 Tektronix, Inc.
- All Rights Reserved
-
-This file is a component of an X Window System-specific implementation
-of Xcms based on the TekColor Color Management System. TekColor is a
-trademark of Tektronix, Inc. The term "TekHVC" designates a particular
-color space that is the subject of U.S. Patent No. 4,985,853 (equivalent
-foreign patents pending). Permission is hereby granted to use, copy,
-modify, sell, and otherwise distribute this software and its
-documentation for any purpose and without fee, provided that:
-
-1. This copyright, permission, and disclaimer notice is reproduced in
- all copies of this software and any modification thereof and in
- supporting documentation;
-2. Any color-handling application which displays TekHVC color
- cooordinates identifies these as TekHVC color coordinates in any
- interface that displays these coordinates and in any associated
- documentation;
-3. The term "TekHVC" is always used, and is only used, in association
- with the mathematical derivations of the TekHVC Color Space,
- including those provided in this file and any equivalent pathways and
- mathematical derivations, regardless of digital (e.g., floating point
- or integer) representation.
-
-Tektronix makes no representation about the suitability of this software
-for any purpose. It is provided "as is" and with all faults.
-
-TEKTRONIX DISCLAIMS ALL WARRANTIES APPLICABLE TO THIS SOFTWARE,
-INCLUDING THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
-PARTICULAR PURPOSE. IN NO EVENT SHALL TEKTRONIX BE LIABLE FOR ANY
-SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER
-RESULTING FROM LOSS OF USE, DATA, OR PROFITS, WHETHER IN AN ACTION OF
-CONTRACT, NEGLIGENCE, OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
-CONNECTION WITH THE USE OR THE PERFORMANCE OF THIS SOFTWARE.
-
- ----------------------------------------
-
-(c) Copyright 1995 FUJITSU LIMITED
-This is source code modified by FUJITSU LIMITED under the Joint
-Development Agreement for the CDE/Motif PST.
-
- ----------------------------------------
-
-Copyright 1992 by Oki Technosystems Laboratory, Inc.
-Copyright 1992 by Fuji Xerox Co., Ltd.
-
-Permission to use, copy, modify, distribute, and sell this software
-and its documentation for any purpose is hereby granted without fee,
-provided that the above copyright notice appear in all copies and
-that both that copyright notice and this permission notice appear
-in supporting documentation, and that the name of Oki Technosystems
-Laboratory and Fuji Xerox not be used in advertising or publicity
-pertaining to distribution of the software without specific, written
-prior permission.
-Oki Technosystems Laboratory and Fuji Xerox make no representations
-about the suitability of this software for any purpose. It is provided
-"as is" without express or implied warranty.
-
-OKI TECHNOSYSTEMS LABORATORY AND FUJI XEROX DISCLAIM ALL WARRANTIES
-WITH REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF
-MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL OKI TECHNOSYSTEMS
-LABORATORY AND FUJI XEROX BE LIABLE FOR ANY SPECIAL, INDIRECT OR
-CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS
-OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
-OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE
-OR PERFORMANCE OF THIS SOFTWARE.
-
- ----------------------------------------
-
-Copyright 1990, 1991, 1992, 1993, 1994 by FUJITSU LIMITED
-
-Permission to use, copy, modify, distribute, and sell this software
-and its documentation for any purpose is hereby granted without fee,
-provided that the above copyright notice appear in all copies and
-that both that copyright notice and this permission notice appear
-in supporting documentation, and that the name of FUJITSU LIMITED
-not be used in advertising or publicity pertaining to distribution
-of the software without specific, written prior permission.
-FUJITSU LIMITED makes no representations about the suitability of
-this software for any purpose.
-It is provided "as is" without express or implied warranty.
-
-FUJITSU LIMITED DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
-INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
-EVENT SHALL FUJITSU LIMITED BE LIABLE FOR ANY SPECIAL, INDIRECT OR
-CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF
-USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
-OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
-PERFORMANCE OF THIS SOFTWARE.
-
- ----------------------------------------
-
-
-Copyright (c) 1995 David E. Wexelblat. All rights reserved
-
-Permission is hereby granted, free of charge, to any person obtaining
-a copy of this software and associated documentation files (the
-"Software"), to deal in the Software without restriction, including
-without limitation the rights to use, copy, modify, merge, publish,
-distribute, sublicense, and/or sell copies of the Software, and to
-permit persons to whom the Software is furnished to do so, subject to
-the following conditions:
-
-The above copyright notice and this permission notice shall be included
-in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
-IN NO EVENT SHALL DAVID E. WEXELBLAT BE LIABLE FOR ANY CLAIM, DAMAGES OR
-OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
-ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of David E. Wexelblat shall
-not be used in advertising or otherwise to promote the sale, use or
-other dealings in this Software without prior written authorization
-from David E. Wexelblat.
-
- ----------------------------------------
-
-Copyright 1990, 1991 by OMRON Corporation
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation, and that the name OMRON not be used in
-advertising or publicity pertaining to distribution of the software without
-specific, written prior permission. OMRON makes no representations
-about the suitability of this software for any purpose. It is provided
-"as is" without express or implied warranty.
-
-OMRON DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
-INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
-EVENT SHALL OMRON BE LIABLE FOR ANY SPECIAL, INDIRECT OR
-CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
-DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
-TORTUOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
-PERFORMANCE OF THIS SOFTWARE.
-
- ----------------------------------------
-
-Copyright 1985, 1986, 1987, 1988, 1989, 1990, 1991 by
-Digital Equipment Corporation
-
-Portions Copyright 1990, 1991 by Tektronix, Inc
-
-Rewritten for X.org by Chris Lee <clee@freedesktop.org>
-
-Permission to use, copy, modify, distribute, and sell this documentation
-for any purpose and without fee is hereby granted, provided that the above
-copyright notice and this permission notice appear in all copies.
-Chris Lee makes no representations about the suitability for any purpose
-of the information in this document. It is provided \`\`as-is'' without
-express or implied warranty.
-
- ----------------------------------------
-
-Copyright 1993 by Digital Equipment Corporation, Maynard, Massachusetts,
-Copyright 1994 by FUJITSU LIMITED
-Copyright 1994 by Sony Corporation
-
- All Rights Reserved
-
-Permission to use, copy, modify, and distribute this software and its
-documentation for any purpose and without fee is hereby granted,
-provided that the above copyright notice appear in all copies and that
-both that copyright notice and this permission notice appear in
-supporting documentation, and that the names of Digital, FUJITSU
-LIMITED and Sony Corporation not be used in advertising or publicity
-pertaining to distribution of the software without specific, written
-prior permission.
-
-DIGITAL, FUJITSU LIMITED AND SONY CORPORATION DISCLAIMS ALL WARRANTIES
-WITH REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF
-MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL DIGITAL, FUJITSU LIMITED
-AND SONY CORPORATION BE LIABLE FOR ANY SPECIAL, INDIRECT OR
-CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF
-USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
-OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
-PERFORMANCE OF THIS SOFTWARE.
-
- ----------------------------------------
-
-
-Copyright 1991 by the Open Software Foundation
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation, and that the name of Open Software Foundation
-not be used in advertising or publicity pertaining to distribution of the
-software without specific, written prior permission. Open Software
-Foundation makes no representations about the suitability of this
-software for any purpose. It is provided "as is" without express or
-implied warranty.
-
-OPEN SOFTWARE FOUNDATION DISCLAIMS ALL WARRANTIES WITH REGARD TO
-THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
-FITNESS, IN NO EVENT SHALL OPEN SOFTWARE FOUNDATIONN BE
-LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
-WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
-ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
-OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
-
- ----------------------------------------
-
-Copyright 1990, 1991, 1992,1993, 1994 by FUJITSU LIMITED
-Copyright 1993, 1994 by Sony Corporation
-
-Permission to use, copy, modify, distribute, and sell this software and
-its documentation for any purpose is hereby granted without fee, provided
-that the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation, and that the name of FUJITSU LIMITED and Sony Corporation
-not be used in advertising or publicity pertaining to distribution of the
-software without specific, written prior permission. FUJITSU LIMITED and
-Sony Corporation makes no representations about the suitability of this
-software for any purpose. It is provided "as is" without express or
-implied warranty.
-
-FUJITSU LIMITED AND SONY CORPORATION DISCLAIMS ALL WARRANTIES WITH REGARD
-TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
-FITNESS, IN NO EVENT SHALL FUJITSU LIMITED OR SONY CORPORATION BE LIABLE
-FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER
-RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
-NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE
-USE OR PERFORMANCE OF THIS SOFTWARE.
-
- ----------------------------------------
-
-Copyright (c) 1993, 1995 by Silicon Graphics Computer Systems, Inc.
-
-Permission to use, copy, modify, and distribute this
-software and its documentation for any purpose and without
-fee is hereby granted, provided that the above copyright
-notice appear in all copies and that both that copyright
-notice and this permission notice appear in supporting
-documentation, and that the name of Silicon Graphics not be
-used in advertising or publicity pertaining to distribution
-of the software without specific prior written permission.
-Silicon Graphics makes no representation about the suitability
-of this software for any purpose. It is provided "as is"
-without any express or implied warranty.
-
-SILICON GRAPHICS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS
-SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
-AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON
-GRAPHICS BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL
-DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
-DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
-OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH
-THE USE OR PERFORMANCE OF THIS SOFTWARE.
-
- ----------------------------------------
-
-Copyright 1991, 1992, 1993, 1994 by FUJITSU LIMITED
-Copyright 1993 by Digital Equipment Corporation
-
-Permission to use, copy, modify, distribute, and sell this software
-and its documentation for any purpose is hereby granted without fee,
-provided that the above copyright notice appear in all copies and that
-both that copyright notice and this permission notice appear in
-supporting documentation, and that the name of FUJITSU LIMITED and
-Digital Equipment Corporation not be used in advertising or publicity
-pertaining to distribution of the software without specific, written
-prior permission. FUJITSU LIMITED and Digital Equipment Corporation
-makes no representations about the suitability of this software for
-any purpose. It is provided "as is" without express or implied
-warranty.
-
-FUJITSU LIMITED AND DIGITAL EQUIPMENT CORPORATION DISCLAIM ALL
-WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED
-WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
-FUJITSU LIMITED AND DIGITAL EQUIPMENT CORPORATION BE LIABLE FOR
-ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
-WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER
-IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
-ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF
-THIS SOFTWARE.
-
- ----------------------------------------
-
-Copyright 1992, 1993 by FUJITSU LIMITED
-Copyright 1993 by Fujitsu Open Systems Solutions, Inc.
-Copyright 1994 by Sony Corporation
-
-Permission to use, copy, modify, distribute and sell this software
-and its documentation for any purpose is hereby granted without fee,
-provided that the above copyright notice appear in all copies and
-that both that copyright notice and this permission notice appear
-in supporting documentation, and that the name of FUJITSU LIMITED,
-Fujitsu Open Systems Solutions, Inc. and Sony Corporation not be
-used in advertising or publicity pertaining to distribution of the
-software without specific, written prior permission.
-FUJITSU LIMITED, Fujitsu Open Systems Solutions, Inc. and
-Sony Corporation make no representations about the suitability of
-this software for any purpose. It is provided "as is" without
-express or implied warranty.
-
-FUJITSU LIMITED, FUJITSU OPEN SYSTEMS SOLUTIONS, INC. AND SONY
-CORPORATION DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
-INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS,
-IN NO EVENT SHALL FUJITSU OPEN SYSTEMS SOLUTIONS, INC., FUJITSU LIMITED
-AND SONY CORPORATION BE LIABLE FOR ANY SPECIAL, INDIRECT OR
-CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS
-OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
-OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE
-OR PERFORMANCE OF THIS SOFTWARE.
-
- ----------------------------------------
-
-Copyright 1987, 1988, 1990, 1993 by Digital Equipment Corporation,
-Maynard, Massachusetts,
-
- All Rights Reserved
-
-Permission to use, copy, modify, and distribute this software and its
-documentation for any purpose and without fee is hereby granted,
-provided that the above copyright notice appear in all copies and that
-both that copyright notice and this permission notice appear in
-supporting documentation, and that the name of Digital not be
-used in advertising or publicity pertaining to distribution of the
-software without specific, written prior permission.
-
-DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
-ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
-DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
-ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
-WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
-ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
-SOFTWARE.
-
- ----------------------------------------
-
-Copyright 1993 by SunSoft, Inc.
-Copyright 1999-2000 by Bruno Haible
-
-Permission to use, copy, modify, distribute, and sell this software
-and its documentation for any purpose is hereby granted without fee,
-provided that the above copyright notice appear in all copies and
-that both that copyright notice and this permission notice appear
-in supporting documentation, and that the names of SunSoft, Inc. and
-Bruno Haible not be used in advertising or publicity pertaining to
-distribution of the software without specific, written prior
-permission. SunSoft, Inc. and Bruno Haible make no representations
-about the suitability of this software for any purpose. It is
-provided "as is" without express or implied warranty.
-
-SunSoft Inc. AND Bruno Haible DISCLAIM ALL WARRANTIES WITH REGARD
-TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
-AND FITNESS, IN NO EVENT SHALL SunSoft, Inc. OR Bruno Haible BE LIABLE
-FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
-WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
-ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT
-OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
-
- ----------------------------------------
-
-Copyright 1991 by the Open Software Foundation
-Copyright 1993 by the TOSHIBA Corp.
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation, and that the names of Open Software Foundation and TOSHIBA
-not be used in advertising or publicity pertaining to distribution of the
-software without specific, written prior permission. Open Software
-Foundation and TOSHIBA make no representations about the suitability of this
-software for any purpose. It is provided "as is" without express or
-implied warranty.
-
-OPEN SOFTWARE FOUNDATION AND TOSHIBA DISCLAIM ALL WARRANTIES WITH REGARD TO
-THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
-FITNESS, IN NO EVENT SHALL OPEN SOFTWARE FOUNDATIONN OR TOSHIBA BE
-LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
-WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
-ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
-OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
-
- ----------------------------------------
-
-Copyright 1988 by Wyse Technology, Inc., San Jose, Ca.,
-
- All Rights Reserved
-
-Permission to use, copy, modify, and distribute this software and its
-documentation for any purpose and without fee is hereby granted,
-provided that the above copyright notice appear in all copies and that
-both that copyright notice and this permission notice appear in
-supporting documentation, and that the name Wyse not be
-used in advertising or publicity pertaining to distribution of the
-software without specific, written prior permission.
-
-WYSE DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
-ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
-DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
-ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
-WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
-ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
-SOFTWARE.
-
- ----------------------------------------
-
-
-Copyright 1991 by the Open Software Foundation
-Copyright 1993, 1994 by the Sony Corporation
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation, and that the names of Open Software Foundation and
-Sony Corporation not be used in advertising or publicity pertaining to
-distribution of the software without specific, written prior permission.
-Open Software Foundation and Sony Corporation make no
-representations about the suitability of this software for any purpose.
-It is provided "as is" without express or implied warranty.
-
-OPEN SOFTWARE FOUNDATION AND SONY CORPORATION DISCLAIM ALL
-WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED
-WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL OPEN
-SOFTWARE FOUNDATIONN OR SONY CORPORATION BE LIABLE FOR ANY SPECIAL,
-INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
-LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
-OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
-PERFORMANCE OF THIS SOFTWARE.
-
- ----------------------------------------
-
-Copyright 1992, 1993 by FUJITSU LIMITED
-Copyright 1993 by Fujitsu Open Systems Solutions, Inc.
-
-Permission to use, copy, modify, distribute and sell this software
-and its documentation for any purpose is hereby granted without fee,
-provided that the above copyright notice appear in all copies and
-that both that copyright notice and this permission notice appear
-in supporting documentation, and that the name of FUJITSU LIMITED and
-Fujitsu Open Systems Solutions, Inc. not be used in advertising or
-publicity pertaining to distribution of the software without specific,
-written prior permission.
-FUJITSU LIMITED and Fujitsu Open Systems Solutions, Inc. makes no
-representations about the suitability of this software for any purpose.
-It is provided "as is" without express or implied warranty.
-
-FUJITSU LIMITED AND FUJITSU OPEN SYSTEMS SOLUTIONS, INC. DISCLAIMS ALL
-WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES
-OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL FUJITSU OPEN SYSTEMS
-SOLUTIONS, INC. AND FUJITSU LIMITED BE LIABLE FOR ANY SPECIAL, INDIRECT
-OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF
-USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
-TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
-OF THIS SOFTWARE.
-
- ----------------------------------------
-
-Copyright 1993, 1994 by Sony Corporation
-
-Permission to use, copy, modify, distribute, and sell this software
-and its documentation for any purpose is hereby granted without fee,
-provided that the above copyright notice appear in all copies and
-that both that copyright notice and this permission notice appear
-in supporting documentation, and that the name of Sony Corporation
-not be used in advertising or publicity pertaining to distribution
-of the software without specific, written prior permission.
-Sony Corporation makes no representations about the suitability of
-this software for any purpose. It is provided "as is" without
-express or implied warranty.
-
-SONY CORPORATION DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
-INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
-EVENT SHALL SONY CORPORATION BE LIABLE FOR ANY SPECIAL, INDIRECT OR
-CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF
-USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
-OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
-PERFORMANCE OF THIS SOFTWARE.
-
- ----------------------------------------
-
-Copyright 1986, 1998 The Open Group
-Copyright (c) 2000 The XFree86 Project, Inc.
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-X CONSORTIUM OR THE XFREE86 PROJECT BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-SOFTWARE.
-
-Except as contained in this notice, the name of the X Consortium or of the
-XFree86 Project shall not be used in advertising or otherwise to promote the
-sale, use or other dealings in this Software without prior written
-authorization from the X Consortium and the XFree86 Project.
-
- ----------------------------------------
-
-Copyright 1990, 1991 by OMRON Corporation, NTT Software Corporation,
- and Nippon Telegraph and Telephone Corporation
-Copyright 1991 by the Open Software Foundation
-Copyright 1993 by the FUJITSU LIMITED
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation, and that the names of OMRON, NTT Software, NTT, and
-Open Software Foundation not be used in advertising or publicity
-pertaining to distribution of the software without specific,
-written prior permission. OMRON, NTT Software, NTT, and Open Software
-Foundation make no representations about the suitability of this
-software for any purpose. It is provided "as is" without express or
-implied warranty.
-
-OMRON, NTT SOFTWARE, NTT, AND OPEN SOFTWARE FOUNDATION
-DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
-ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT
-SHALL OMRON, NTT SOFTWARE, NTT, OR OPEN SOFTWARE FOUNDATION BE
-LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
-WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
-ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
-OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
-
- ----------------------------------------
-
-Copyright 1988 by Wyse Technology, Inc., San Jose, Ca,
-Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts,
-
- All Rights Reserved
-
-Permission to use, copy, modify, and distribute this software and its
-documentation for any purpose and without fee is hereby granted,
-provided that the above copyright notice appear in all copies and that
-both that copyright notice and this permission notice appear in
-supporting documentation, and that the name Digital not be
-used in advertising or publicity pertaining to distribution of the
-software without specific, written prior permission.
-
-DIGITAL AND WYSE DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
-INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
-EVENT SHALL DIGITAL OR WYSE BE LIABLE FOR ANY SPECIAL, INDIRECT OR
-CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF
-USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
-OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
-PERFORMANCE OF THIS SOFTWARE.
-
- ----------------------------------------
-
-
-Copyright 1991, 1992 by Fuji Xerox Co., Ltd.
-Copyright 1992, 1993, 1994 by FUJITSU LIMITED
-
-Permission to use, copy, modify, distribute, and sell this software
-and its documentation for any purpose is hereby granted without fee,
-provided that the above copyright notice appear in all copies and
-that both that copyright notice and this permission notice appear
-in supporting documentation, and that the name of Fuji Xerox,
-FUJITSU LIMITED not be used in advertising or publicity pertaining
-to distribution of the software without specific, written prior
-permission. Fuji Xerox, FUJITSU LIMITED make no representations
-about the suitability of this software for any purpose.
-It is provided "as is" without express or implied warranty.
-
-FUJI XEROX, FUJITSU LIMITED DISCLAIM ALL WARRANTIES WITH
-REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF
-MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL FUJI XEROX,
-FUJITSU LIMITED BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL
-DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA
-OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
-TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
-PERFORMANCE OF THIS SOFTWARE.
-
- ----------------------------------------
-
-Copyright 2006 Josh Triplett
-
-Permission is hereby granted, free of charge, to any person obtaining
-a copy of this software and associated documentation files (the
-"Software"), to deal in the Software without restriction, including
-without limitation the rights to use, copy, modify, merge, publish,
-distribute, sublicense, and/or sell copies of the Software, and to
-permit persons to whom the Software is furnished to do so, subject to
-the following conditions:
-
-The above copyright notice and this permission notice shall be included
-in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
-IN NO EVENT SHALL THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR
-OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
-ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-OTHER DEALINGS IN THE SOFTWARE.
-
- ----------------------------------------
-
-(c) Copyright 1996 by Sebastien Marineau and Holger Veit
- <marineau@genie.uottawa.ca>
- <Holger.Veit@gmd.de>
-
-Permission is hereby granted, free of charge, to any person obtaining a
-copy of this software and associated documentation files (the "Software"),
-to deal in the Software without restriction, including without limitation
-the rights to use, copy, modify, merge, publish, distribute, sublicense,
-and/or sell copies of the Software, and to permit persons to whom the
-Software is furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-HOLGER VEIT BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF
-OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-SOFTWARE.
-
-Except as contained in this notice, the name of Sebastien Marineau or Holger Veit
-shall not be used in advertising or otherwise to promote the sale, use or other
-dealings in this Software without prior written authorization from Holger Veit or
-Sebastien Marineau.
-
- ----------------------------------------
-
-Copyright 1990, 1991 by OMRON Corporation, NTT Software Corporation,
- and Nippon Telegraph and Telephone Corporation
-Copyright 1991 by the Open Software Foundation
-Copyright 1993 by the TOSHIBA Corp.
-Copyright 1993, 1994 by Sony Corporation
-Copyright 1993, 1994 by the FUJITSU LIMITED
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation, and that the names of OMRON, NTT Software, NTT, Open
-Software Foundation, and Sony Corporation not be used in advertising
-or publicity pertaining to distribution of the software without specific,
-written prior permission. OMRON, NTT Software, NTT, Open Software
-Foundation, and Sony Corporation make no representations about the
-suitability of this software for any purpose. It is provided "as is"
-without express or implied warranty.
-
-OMRON, NTT SOFTWARE, NTT, OPEN SOFTWARE FOUNDATION, AND SONY
-CORPORATION DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
-ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT
-SHALL OMRON, NTT SOFTWARE, NTT, OPEN SOFTWARE FOUNDATION, OR SONY
-CORPORATION BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
-ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER
-IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT
-OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
-
- ----------------------------------------
-
-Copyright 2000 by Bruno Haible
-
-Permission to use, copy, modify, distribute, and sell this software
-and its documentation for any purpose is hereby granted without fee,
-provided that the above copyright notice appear in all copies and
-that both that copyright notice and this permission notice appear
-in supporting documentation, and that the name of Bruno Haible not
-be used in advertising or publicity pertaining to distribution of the
-software without specific, written prior permission. Bruno Haible
-makes no representations about the suitability of this software for
-any purpose. It is provided "as is" without express or implied
-warranty.
-
-Bruno Haible DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
-INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN
-NO EVENT SHALL Bruno Haible BE LIABLE FOR ANY SPECIAL, INDIRECT OR
-CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS
-OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
-OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE
-OR PERFORMANCE OF THIS SOFTWARE.
-
- ----------------------------------------
-
-Copyright © 2003 Keith Packard
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation, and that the name of Keith Packard not be used in
-advertising or publicity pertaining to distribution of the software without
-specific, written prior permission. Keith Packard makes no
-representations about the suitability of this software for any purpose. It
-is provided "as is" without express or implied warranty.
-
-KEITH PACKARD DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
-INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
-EVENT SHALL KEITH PACKARD BE LIABLE FOR ANY SPECIAL, INDIRECT OR
-CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
-DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
-TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
-PERFORMANCE OF THIS SOFTWARE.
-
- ----------------------------------------
-
-Copyright (c) 2007-2009, Troy D. Hanson
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are met:
-
-Redistributions of source code must retain the above copyright
-notice, this list of conditions and the following disclaimer.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
-IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
-TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
-PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
-OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
-EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
-PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
-PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
-LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
- ----------------------------------------
-
-Copyright 1992, 1993 by TOSHIBA Corp.
-
-Permission to use, copy, modify, and distribute this software and its
-documentation for any purpose and without fee is hereby granted, provided
-that the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation, and that the name of TOSHIBA not be used in advertising
-or publicity pertaining to distribution of the software without specific,
-written prior permission. TOSHIBA make no representations about the
-suitability of this software for any purpose. It is provided "as is"
-without express or implied warranty.
-
-TOSHIBA DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
-ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
-TOSHIBA BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
-ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
-WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
-ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
-SOFTWARE.
-
-
- ----------------------------------------
-
-Copyright IBM Corporation 1993
-
-All Rights Reserved
-
-License to use, copy, modify, and distribute this software and its
-documentation for any purpose and without fee is hereby granted,
-provided that the above copyright notice appear in all copies and that
-both that copyright notice and this permission notice appear in
-supporting documentation, and that the name of IBM not be
-used in advertising or publicity pertaining to distribution of the
-software without specific, written prior permission.
-
-IBM DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
-ALL IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS, AND
-NONINFRINGEMENT OF THIRD PARTY RIGHTS, IN NO EVENT SHALL
-IBM BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
-ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
-WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
-ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
-SOFTWARE.
-
- ----------------------------------------
-
-Copyright 1990, 1991 by OMRON Corporation, NTT Software Corporation,
- and Nippon Telegraph and Telephone Corporation
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation, and that the names of OMRON, NTT Software, and NTT
-not be used in advertising or publicity pertaining to distribution of the
-software without specific, written prior permission. OMRON, NTT Software,
-and NTT make no representations about the suitability of this
-software for any purpose. It is provided "as is" without express or
-implied warranty.
-
-OMRON, NTT SOFTWARE, AND NTT, DISCLAIM ALL WARRANTIES WITH REGARD
-TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
-AND FITNESS, IN NO EVENT SHALL OMRON, NTT SOFTWARE, OR NTT, BE
-LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
-WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
-ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
-OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
-
+The following is the 'standard copyright' agreed upon by most contributors,
+and is currently the canonical license preferred by the X.Org Foundation.
+This is a slight variant of the common MIT license form published by the
+Open Source Initiative at http://www.opensource.org/licenses/mit-license.php
+
+Copyright holders of new code should use this license statement where
+possible, and insert their name to this list. Please sort by surname
+for people, and by the full name for other entities (e.g. Juliusz
+Chroboczek sorts before Intel Corporation sorts before Daniel Stone).
+
+See each individual source file or directory for the license that applies
+to that file.
+
+Copyright (C) 2003-2006,2008 Jamey Sharp, Josh Triplett
+Copyright © 2009 Red Hat, Inc.
+Copyright 1990-1992,1999,2000,2004,2009,2010 Oracle and/or its affiliates.
+All rights reserved.
+
+Permission is hereby granted, free of charge, to any person obtaining a
+copy of this software and associated documentation files (the "Software"),
+to deal in the Software without restriction, including without limitation
+the rights to use, copy, modify, merge, publish, distribute, sublicense,
+and/or sell copies of the Software, and to permit persons to whom the
+Software is furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice (including the next
+paragraph) shall be included in all copies or substantial portions of the
+Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+DEALINGS IN THE SOFTWARE.
+
+ ----------------------------------------------------------------------
+
+The following licenses are 'legacy' - usually MIT/X11 licenses with the name
+of the copyright holder(s) in the license statement:
+
+Copyright 1984-1994, 1998 The Open Group
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group shall not be
+used in advertising or otherwise to promote the sale, use or other dealings
+in this Software without prior written authorization from The Open Group.
+
+X Window System is a trademark of The Open Group.
+
+ ----------------------------------------
+
+Copyright 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1994, 1996 X Consortium
+Copyright 2000 The XFree86 Project, Inc.
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be included
+in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+IN NO EVENT SHALL THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR
+OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
+ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of the X Consortium shall
+not be used in advertising or otherwise to promote the sale, use or
+other dealings in this Software without prior written authorization
+from the X Consortium.
+
+Copyright 1985, 1986, 1987, 1988, 1989, 1990, 1991 by
+Digital Equipment Corporation
+
+Portions Copyright 1990, 1991 by Tektronix, Inc.
+
+Permission to use, copy, modify and distribute this documentation for
+any purpose and without fee is hereby granted, provided that the above
+copyright notice appears in all copies and that both that copyright notice
+and this permission notice appear in all copies, and that the names of
+Digital and Tektronix not be used in in advertising or publicity pertaining
+to this documentation without specific, written prior permission.
+Digital and Tektronix makes no representations about the suitability
+of this documentation for any purpose.
+It is provided ``as is'' without express or implied warranty.
+
+ ----------------------------------------
+
+Copyright (c) 1999-2000 Free Software Foundation, Inc.
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+FREE SOFTWARE FOUNDATION BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR
+IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of the Free Software Foundation
+shall not be used in advertising or otherwise to promote the sale, use or
+other dealings in this Software without prior written authorization from the
+Free Software Foundation.
+
+ ----------------------------------------
+
+Code and supporting documentation (c) Copyright 1990 1991 Tektronix, Inc.
+ All Rights Reserved
+
+This file is a component of an X Window System-specific implementation
+of Xcms based on the TekColor Color Management System. TekColor is a
+trademark of Tektronix, Inc. The term "TekHVC" designates a particular
+color space that is the subject of U.S. Patent No. 4,985,853 (equivalent
+foreign patents pending). Permission is hereby granted to use, copy,
+modify, sell, and otherwise distribute this software and its
+documentation for any purpose and without fee, provided that:
+
+1. This copyright, permission, and disclaimer notice is reproduced in
+ all copies of this software and any modification thereof and in
+ supporting documentation;
+2. Any color-handling application which displays TekHVC color
+ cooordinates identifies these as TekHVC color coordinates in any
+ interface that displays these coordinates and in any associated
+ documentation;
+3. The term "TekHVC" is always used, and is only used, in association
+ with the mathematical derivations of the TekHVC Color Space,
+ including those provided in this file and any equivalent pathways and
+ mathematical derivations, regardless of digital (e.g., floating point
+ or integer) representation.
+
+Tektronix makes no representation about the suitability of this software
+for any purpose. It is provided "as is" and with all faults.
+
+TEKTRONIX DISCLAIMS ALL WARRANTIES APPLICABLE TO THIS SOFTWARE,
+INCLUDING THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+PARTICULAR PURPOSE. IN NO EVENT SHALL TEKTRONIX BE LIABLE FOR ANY
+SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER
+RESULTING FROM LOSS OF USE, DATA, OR PROFITS, WHETHER IN AN ACTION OF
+CONTRACT, NEGLIGENCE, OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
+CONNECTION WITH THE USE OR THE PERFORMANCE OF THIS SOFTWARE.
+
+ ----------------------------------------
+
+(c) Copyright 1995 FUJITSU LIMITED
+This is source code modified by FUJITSU LIMITED under the Joint
+Development Agreement for the CDE/Motif PST.
+
+ ----------------------------------------
+
+Copyright 1992 by Oki Technosystems Laboratory, Inc.
+Copyright 1992 by Fuji Xerox Co., Ltd.
+
+Permission to use, copy, modify, distribute, and sell this software
+and its documentation for any purpose is hereby granted without fee,
+provided that the above copyright notice appear in all copies and
+that both that copyright notice and this permission notice appear
+in supporting documentation, and that the name of Oki Technosystems
+Laboratory and Fuji Xerox not be used in advertising or publicity
+pertaining to distribution of the software without specific, written
+prior permission.
+Oki Technosystems Laboratory and Fuji Xerox make no representations
+about the suitability of this software for any purpose. It is provided
+"as is" without express or implied warranty.
+
+OKI TECHNOSYSTEMS LABORATORY AND FUJI XEROX DISCLAIM ALL WARRANTIES
+WITH REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL OKI TECHNOSYSTEMS
+LABORATORY AND FUJI XEROX BE LIABLE FOR ANY SPECIAL, INDIRECT OR
+CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS
+OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
+OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE
+OR PERFORMANCE OF THIS SOFTWARE.
+
+ ----------------------------------------
+
+Copyright 1990, 1991, 1992, 1993, 1994 by FUJITSU LIMITED
+
+Permission to use, copy, modify, distribute, and sell this software
+and its documentation for any purpose is hereby granted without fee,
+provided that the above copyright notice appear in all copies and
+that both that copyright notice and this permission notice appear
+in supporting documentation, and that the name of FUJITSU LIMITED
+not be used in advertising or publicity pertaining to distribution
+of the software without specific, written prior permission.
+FUJITSU LIMITED makes no representations about the suitability of
+this software for any purpose.
+It is provided "as is" without express or implied warranty.
+
+FUJITSU LIMITED DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
+INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
+EVENT SHALL FUJITSU LIMITED BE LIABLE FOR ANY SPECIAL, INDIRECT OR
+CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF
+USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
+OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+PERFORMANCE OF THIS SOFTWARE.
+
+ ----------------------------------------
+
+
+Copyright (c) 1995 David E. Wexelblat. All rights reserved
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be included
+in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+IN NO EVENT SHALL DAVID E. WEXELBLAT BE LIABLE FOR ANY CLAIM, DAMAGES OR
+OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
+ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of David E. Wexelblat shall
+not be used in advertising or otherwise to promote the sale, use or
+other dealings in this Software without prior written authorization
+from David E. Wexelblat.
+
+ ----------------------------------------
+
+Copyright 1990, 1991 by OMRON Corporation
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation, and that the name OMRON not be used in
+advertising or publicity pertaining to distribution of the software without
+specific, written prior permission. OMRON makes no representations
+about the suitability of this software for any purpose. It is provided
+"as is" without express or implied warranty.
+
+OMRON DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
+INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
+EVENT SHALL OMRON BE LIABLE FOR ANY SPECIAL, INDIRECT OR
+CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
+DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
+TORTUOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+PERFORMANCE OF THIS SOFTWARE.
+
+ ----------------------------------------
+
+Copyright 1985, 1986, 1987, 1988, 1989, 1990, 1991 by
+Digital Equipment Corporation
+
+Portions Copyright 1990, 1991 by Tektronix, Inc
+
+Rewritten for X.org by Chris Lee <clee@freedesktop.org>
+
+Permission to use, copy, modify, distribute, and sell this documentation
+for any purpose and without fee is hereby granted, provided that the above
+copyright notice and this permission notice appear in all copies.
+Chris Lee makes no representations about the suitability for any purpose
+of the information in this document. It is provided \`\`as-is'' without
+express or implied warranty.
+
+ ----------------------------------------
+
+Copyright 1993 by Digital Equipment Corporation, Maynard, Massachusetts,
+Copyright 1994 by FUJITSU LIMITED
+Copyright 1994 by Sony Corporation
+
+ All Rights Reserved
+
+Permission to use, copy, modify, and distribute this software and its
+documentation for any purpose and without fee is hereby granted,
+provided that the above copyright notice appear in all copies and that
+both that copyright notice and this permission notice appear in
+supporting documentation, and that the names of Digital, FUJITSU
+LIMITED and Sony Corporation not be used in advertising or publicity
+pertaining to distribution of the software without specific, written
+prior permission.
+
+DIGITAL, FUJITSU LIMITED AND SONY CORPORATION DISCLAIMS ALL WARRANTIES
+WITH REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL DIGITAL, FUJITSU LIMITED
+AND SONY CORPORATION BE LIABLE FOR ANY SPECIAL, INDIRECT OR
+CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF
+USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
+OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+PERFORMANCE OF THIS SOFTWARE.
+
+ ----------------------------------------
+
+
+Copyright 1991 by the Open Software Foundation
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation, and that the name of Open Software Foundation
+not be used in advertising or publicity pertaining to distribution of the
+software without specific, written prior permission. Open Software
+Foundation makes no representations about the suitability of this
+software for any purpose. It is provided "as is" without express or
+implied warranty.
+
+OPEN SOFTWARE FOUNDATION DISCLAIMS ALL WARRANTIES WITH REGARD TO
+THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
+FITNESS, IN NO EVENT SHALL OPEN SOFTWARE FOUNDATIONN BE
+LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+
+ ----------------------------------------
+
+Copyright 1990, 1991, 1992,1993, 1994 by FUJITSU LIMITED
+Copyright 1993, 1994 by Sony Corporation
+
+Permission to use, copy, modify, distribute, and sell this software and
+its documentation for any purpose is hereby granted without fee, provided
+that the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation, and that the name of FUJITSU LIMITED and Sony Corporation
+not be used in advertising or publicity pertaining to distribution of the
+software without specific, written prior permission. FUJITSU LIMITED and
+Sony Corporation makes no representations about the suitability of this
+software for any purpose. It is provided "as is" without express or
+implied warranty.
+
+FUJITSU LIMITED AND SONY CORPORATION DISCLAIMS ALL WARRANTIES WITH REGARD
+TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
+FITNESS, IN NO EVENT SHALL FUJITSU LIMITED OR SONY CORPORATION BE LIABLE
+FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER
+RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
+NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE
+USE OR PERFORMANCE OF THIS SOFTWARE.
+
+ ----------------------------------------
+
+Copyright (c) 1993, 1995 by Silicon Graphics Computer Systems, Inc.
+
+Permission to use, copy, modify, and distribute this
+software and its documentation for any purpose and without
+fee is hereby granted, provided that the above copyright
+notice appear in all copies and that both that copyright
+notice and this permission notice appear in supporting
+documentation, and that the name of Silicon Graphics not be
+used in advertising or publicity pertaining to distribution
+of the software without specific prior written permission.
+Silicon Graphics makes no representation about the suitability
+of this software for any purpose. It is provided "as is"
+without any express or implied warranty.
+
+SILICON GRAPHICS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS
+SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
+AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON
+GRAPHICS BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL
+DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
+DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
+OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH
+THE USE OR PERFORMANCE OF THIS SOFTWARE.
+
+ ----------------------------------------
+
+Copyright 1991, 1992, 1993, 1994 by FUJITSU LIMITED
+Copyright 1993 by Digital Equipment Corporation
+
+Permission to use, copy, modify, distribute, and sell this software
+and its documentation for any purpose is hereby granted without fee,
+provided that the above copyright notice appear in all copies and that
+both that copyright notice and this permission notice appear in
+supporting documentation, and that the name of FUJITSU LIMITED and
+Digital Equipment Corporation not be used in advertising or publicity
+pertaining to distribution of the software without specific, written
+prior permission. FUJITSU LIMITED and Digital Equipment Corporation
+makes no representations about the suitability of this software for
+any purpose. It is provided "as is" without express or implied
+warranty.
+
+FUJITSU LIMITED AND DIGITAL EQUIPMENT CORPORATION DISCLAIM ALL
+WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
+FUJITSU LIMITED AND DIGITAL EQUIPMENT CORPORATION BE LIABLE FOR
+ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER
+IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
+ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF
+THIS SOFTWARE.
+
+ ----------------------------------------
+
+Copyright 1992, 1993 by FUJITSU LIMITED
+Copyright 1993 by Fujitsu Open Systems Solutions, Inc.
+Copyright 1994 by Sony Corporation
+
+Permission to use, copy, modify, distribute and sell this software
+and its documentation for any purpose is hereby granted without fee,
+provided that the above copyright notice appear in all copies and
+that both that copyright notice and this permission notice appear
+in supporting documentation, and that the name of FUJITSU LIMITED,
+Fujitsu Open Systems Solutions, Inc. and Sony Corporation not be
+used in advertising or publicity pertaining to distribution of the
+software without specific, written prior permission.
+FUJITSU LIMITED, Fujitsu Open Systems Solutions, Inc. and
+Sony Corporation make no representations about the suitability of
+this software for any purpose. It is provided "as is" without
+express or implied warranty.
+
+FUJITSU LIMITED, FUJITSU OPEN SYSTEMS SOLUTIONS, INC. AND SONY
+CORPORATION DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
+INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS,
+IN NO EVENT SHALL FUJITSU OPEN SYSTEMS SOLUTIONS, INC., FUJITSU LIMITED
+AND SONY CORPORATION BE LIABLE FOR ANY SPECIAL, INDIRECT OR
+CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS
+OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
+OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE
+OR PERFORMANCE OF THIS SOFTWARE.
+
+ ----------------------------------------
+
+Copyright 1987, 1988, 1990, 1993 by Digital Equipment Corporation,
+Maynard, Massachusetts,
+
+ All Rights Reserved
+
+Permission to use, copy, modify, and distribute this software and its
+documentation for any purpose and without fee is hereby granted,
+provided that the above copyright notice appear in all copies and that
+both that copyright notice and this permission notice appear in
+supporting documentation, and that the name of Digital not be
+used in advertising or publicity pertaining to distribution of the
+software without specific, written prior permission.
+
+DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
+ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
+DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
+ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
+WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
+ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
+SOFTWARE.
+
+ ----------------------------------------
+
+Copyright 1993 by SunSoft, Inc.
+Copyright 1999-2000 by Bruno Haible
+
+Permission to use, copy, modify, distribute, and sell this software
+and its documentation for any purpose is hereby granted without fee,
+provided that the above copyright notice appear in all copies and
+that both that copyright notice and this permission notice appear
+in supporting documentation, and that the names of SunSoft, Inc. and
+Bruno Haible not be used in advertising or publicity pertaining to
+distribution of the software without specific, written prior
+permission. SunSoft, Inc. and Bruno Haible make no representations
+about the suitability of this software for any purpose. It is
+provided "as is" without express or implied warranty.
+
+SunSoft Inc. AND Bruno Haible DISCLAIM ALL WARRANTIES WITH REGARD
+TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
+AND FITNESS, IN NO EVENT SHALL SunSoft, Inc. OR Bruno Haible BE LIABLE
+FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT
+OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+
+ ----------------------------------------
+
+Copyright 1991 by the Open Software Foundation
+Copyright 1993 by the TOSHIBA Corp.
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation, and that the names of Open Software Foundation and TOSHIBA
+not be used in advertising or publicity pertaining to distribution of the
+software without specific, written prior permission. Open Software
+Foundation and TOSHIBA make no representations about the suitability of this
+software for any purpose. It is provided "as is" without express or
+implied warranty.
+
+OPEN SOFTWARE FOUNDATION AND TOSHIBA DISCLAIM ALL WARRANTIES WITH REGARD TO
+THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
+FITNESS, IN NO EVENT SHALL OPEN SOFTWARE FOUNDATIONN OR TOSHIBA BE
+LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+
+ ----------------------------------------
+
+Copyright 1988 by Wyse Technology, Inc., San Jose, Ca.,
+
+ All Rights Reserved
+
+Permission to use, copy, modify, and distribute this software and its
+documentation for any purpose and without fee is hereby granted,
+provided that the above copyright notice appear in all copies and that
+both that copyright notice and this permission notice appear in
+supporting documentation, and that the name Wyse not be
+used in advertising or publicity pertaining to distribution of the
+software without specific, written prior permission.
+
+WYSE DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
+ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
+DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
+ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
+WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
+ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
+SOFTWARE.
+
+ ----------------------------------------
+
+
+Copyright 1991 by the Open Software Foundation
+Copyright 1993, 1994 by the Sony Corporation
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation, and that the names of Open Software Foundation and
+Sony Corporation not be used in advertising or publicity pertaining to
+distribution of the software without specific, written prior permission.
+Open Software Foundation and Sony Corporation make no
+representations about the suitability of this software for any purpose.
+It is provided "as is" without express or implied warranty.
+
+OPEN SOFTWARE FOUNDATION AND SONY CORPORATION DISCLAIM ALL
+WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL OPEN
+SOFTWARE FOUNDATIONN OR SONY CORPORATION BE LIABLE FOR ANY SPECIAL,
+INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
+LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
+OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+PERFORMANCE OF THIS SOFTWARE.
+
+ ----------------------------------------
+
+Copyright 1992, 1993 by FUJITSU LIMITED
+Copyright 1993 by Fujitsu Open Systems Solutions, Inc.
+
+Permission to use, copy, modify, distribute and sell this software
+and its documentation for any purpose is hereby granted without fee,
+provided that the above copyright notice appear in all copies and
+that both that copyright notice and this permission notice appear
+in supporting documentation, and that the name of FUJITSU LIMITED and
+Fujitsu Open Systems Solutions, Inc. not be used in advertising or
+publicity pertaining to distribution of the software without specific,
+written prior permission.
+FUJITSU LIMITED and Fujitsu Open Systems Solutions, Inc. makes no
+representations about the suitability of this software for any purpose.
+It is provided "as is" without express or implied warranty.
+
+FUJITSU LIMITED AND FUJITSU OPEN SYSTEMS SOLUTIONS, INC. DISCLAIMS ALL
+WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES
+OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL FUJITSU OPEN SYSTEMS
+SOLUTIONS, INC. AND FUJITSU LIMITED BE LIABLE FOR ANY SPECIAL, INDIRECT
+OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF
+USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
+TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
+OF THIS SOFTWARE.
+
+ ----------------------------------------
+
+Copyright 1993, 1994 by Sony Corporation
+
+Permission to use, copy, modify, distribute, and sell this software
+and its documentation for any purpose is hereby granted without fee,
+provided that the above copyright notice appear in all copies and
+that both that copyright notice and this permission notice appear
+in supporting documentation, and that the name of Sony Corporation
+not be used in advertising or publicity pertaining to distribution
+of the software without specific, written prior permission.
+Sony Corporation makes no representations about the suitability of
+this software for any purpose. It is provided "as is" without
+express or implied warranty.
+
+SONY CORPORATION DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
+INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
+EVENT SHALL SONY CORPORATION BE LIABLE FOR ANY SPECIAL, INDIRECT OR
+CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF
+USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
+OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+PERFORMANCE OF THIS SOFTWARE.
+
+ ----------------------------------------
+
+Copyright 1986, 1998 The Open Group
+Copyright (c) 2000 The XFree86 Project, Inc.
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+X CONSORTIUM OR THE XFREE86 PROJECT BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
+
+Except as contained in this notice, the name of the X Consortium or of the
+XFree86 Project shall not be used in advertising or otherwise to promote the
+sale, use or other dealings in this Software without prior written
+authorization from the X Consortium and the XFree86 Project.
+
+ ----------------------------------------
+
+Copyright 1990, 1991 by OMRON Corporation, NTT Software Corporation,
+ and Nippon Telegraph and Telephone Corporation
+Copyright 1991 by the Open Software Foundation
+Copyright 1993 by the FUJITSU LIMITED
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation, and that the names of OMRON, NTT Software, NTT, and
+Open Software Foundation not be used in advertising or publicity
+pertaining to distribution of the software without specific,
+written prior permission. OMRON, NTT Software, NTT, and Open Software
+Foundation make no representations about the suitability of this
+software for any purpose. It is provided "as is" without express or
+implied warranty.
+
+OMRON, NTT SOFTWARE, NTT, AND OPEN SOFTWARE FOUNDATION
+DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
+ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT
+SHALL OMRON, NTT SOFTWARE, NTT, OR OPEN SOFTWARE FOUNDATION BE
+LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+
+ ----------------------------------------
+
+Copyright 1988 by Wyse Technology, Inc., San Jose, Ca,
+Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts,
+
+ All Rights Reserved
+
+Permission to use, copy, modify, and distribute this software and its
+documentation for any purpose and without fee is hereby granted,
+provided that the above copyright notice appear in all copies and that
+both that copyright notice and this permission notice appear in
+supporting documentation, and that the name Digital not be
+used in advertising or publicity pertaining to distribution of the
+software without specific, written prior permission.
+
+DIGITAL AND WYSE DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
+INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
+EVENT SHALL DIGITAL OR WYSE BE LIABLE FOR ANY SPECIAL, INDIRECT OR
+CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF
+USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
+OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+PERFORMANCE OF THIS SOFTWARE.
+
+ ----------------------------------------
+
+
+Copyright 1991, 1992 by Fuji Xerox Co., Ltd.
+Copyright 1992, 1993, 1994 by FUJITSU LIMITED
+
+Permission to use, copy, modify, distribute, and sell this software
+and its documentation for any purpose is hereby granted without fee,
+provided that the above copyright notice appear in all copies and
+that both that copyright notice and this permission notice appear
+in supporting documentation, and that the name of Fuji Xerox,
+FUJITSU LIMITED not be used in advertising or publicity pertaining
+to distribution of the software without specific, written prior
+permission. Fuji Xerox, FUJITSU LIMITED make no representations
+about the suitability of this software for any purpose.
+It is provided "as is" without express or implied warranty.
+
+FUJI XEROX, FUJITSU LIMITED DISCLAIM ALL WARRANTIES WITH
+REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL FUJI XEROX,
+FUJITSU LIMITED BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL
+DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA
+OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
+TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+PERFORMANCE OF THIS SOFTWARE.
+
+ ----------------------------------------
+
+Copyright 2006 Josh Triplett
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be included
+in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+IN NO EVENT SHALL THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR
+OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
+ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+OTHER DEALINGS IN THE SOFTWARE.
+
+ ----------------------------------------
+
+(c) Copyright 1996 by Sebastien Marineau and Holger Veit
+ <marineau@genie.uottawa.ca>
+ <Holger.Veit@gmd.de>
+
+Permission is hereby granted, free of charge, to any person obtaining a
+copy of this software and associated documentation files (the "Software"),
+to deal in the Software without restriction, including without limitation
+the rights to use, copy, modify, merge, publish, distribute, sublicense,
+and/or sell copies of the Software, and to permit persons to whom the
+Software is furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+HOLGER VEIT BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF
+OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
+
+Except as contained in this notice, the name of Sebastien Marineau or Holger Veit
+shall not be used in advertising or otherwise to promote the sale, use or other
+dealings in this Software without prior written authorization from Holger Veit or
+Sebastien Marineau.
+
+ ----------------------------------------
+
+Copyright 1990, 1991 by OMRON Corporation, NTT Software Corporation,
+ and Nippon Telegraph and Telephone Corporation
+Copyright 1991 by the Open Software Foundation
+Copyright 1993 by the TOSHIBA Corp.
+Copyright 1993, 1994 by Sony Corporation
+Copyright 1993, 1994 by the FUJITSU LIMITED
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation, and that the names of OMRON, NTT Software, NTT, Open
+Software Foundation, and Sony Corporation not be used in advertising
+or publicity pertaining to distribution of the software without specific,
+written prior permission. OMRON, NTT Software, NTT, Open Software
+Foundation, and Sony Corporation make no representations about the
+suitability of this software for any purpose. It is provided "as is"
+without express or implied warranty.
+
+OMRON, NTT SOFTWARE, NTT, OPEN SOFTWARE FOUNDATION, AND SONY
+CORPORATION DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
+ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT
+SHALL OMRON, NTT SOFTWARE, NTT, OPEN SOFTWARE FOUNDATION, OR SONY
+CORPORATION BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
+ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER
+IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT
+OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+
+ ----------------------------------------
+
+Copyright 2000 by Bruno Haible
+
+Permission to use, copy, modify, distribute, and sell this software
+and its documentation for any purpose is hereby granted without fee,
+provided that the above copyright notice appear in all copies and
+that both that copyright notice and this permission notice appear
+in supporting documentation, and that the name of Bruno Haible not
+be used in advertising or publicity pertaining to distribution of the
+software without specific, written prior permission. Bruno Haible
+makes no representations about the suitability of this software for
+any purpose. It is provided "as is" without express or implied
+warranty.
+
+Bruno Haible DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
+INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN
+NO EVENT SHALL Bruno Haible BE LIABLE FOR ANY SPECIAL, INDIRECT OR
+CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS
+OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
+OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE
+OR PERFORMANCE OF THIS SOFTWARE.
+
+ ----------------------------------------
+
+Copyright © 2003 Keith Packard
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation, and that the name of Keith Packard not be used in
+advertising or publicity pertaining to distribution of the software without
+specific, written prior permission. Keith Packard makes no
+representations about the suitability of this software for any purpose. It
+is provided "as is" without express or implied warranty.
+
+KEITH PACKARD DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
+INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
+EVENT SHALL KEITH PACKARD BE LIABLE FOR ANY SPECIAL, INDIRECT OR
+CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
+DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
+TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+PERFORMANCE OF THIS SOFTWARE.
+
+ ----------------------------------------
+
+Copyright (c) 2007-2009, Troy D. Hanson
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+Redistributions of source code must retain the above copyright
+notice, this list of conditions and the following disclaimer.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
+IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
+TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
+OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+ ----------------------------------------
+
+Copyright 1992, 1993 by TOSHIBA Corp.
+
+Permission to use, copy, modify, and distribute this software and its
+documentation for any purpose and without fee is hereby granted, provided
+that the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation, and that the name of TOSHIBA not be used in advertising
+or publicity pertaining to distribution of the software without specific,
+written prior permission. TOSHIBA make no representations about the
+suitability of this software for any purpose. It is provided "as is"
+without express or implied warranty.
+
+TOSHIBA DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
+ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
+TOSHIBA BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
+ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
+WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
+ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
+SOFTWARE.
+
+
+ ----------------------------------------
+
+Copyright IBM Corporation 1993
+
+All Rights Reserved
+
+License to use, copy, modify, and distribute this software and its
+documentation for any purpose and without fee is hereby granted,
+provided that the above copyright notice appear in all copies and that
+both that copyright notice and this permission notice appear in
+supporting documentation, and that the name of IBM not be
+used in advertising or publicity pertaining to distribution of the
+software without specific, written prior permission.
+
+IBM DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
+ALL IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS, AND
+NONINFRINGEMENT OF THIRD PARTY RIGHTS, IN NO EVENT SHALL
+IBM BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
+ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
+WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
+ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
+SOFTWARE.
+
+ ----------------------------------------
+
+Copyright 1990, 1991 by OMRON Corporation, NTT Software Corporation,
+ and Nippon Telegraph and Telephone Corporation
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation, and that the names of OMRON, NTT Software, and NTT
+not be used in advertising or publicity pertaining to distribution of the
+software without specific, written prior permission. OMRON, NTT Software,
+and NTT make no representations about the suitability of this
+software for any purpose. It is provided "as is" without express or
+implied warranty.
+
+OMRON, NTT SOFTWARE, AND NTT, DISCLAIM ALL WARRANTIES WITH REGARD
+TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
+AND FITNESS, IN NO EVENT SHALL OMRON, NTT SOFTWARE, OR NTT, BE
+LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+
diff --git a/libX11/NEWS b/libX11/NEWS
index 3cceeff75..e03d55624 100644
--- a/libX11/NEWS
+++ b/libX11/NEWS
@@ -1,185 +1,185 @@
-Version 1.1.2 - 2007-06-03
-
-* Security fixes:
- * Fix CVE-2007-1667: Multiple integer overflows in the XGetPixel() and
- XInitImage() functions.
- * Bug #9279: Fixed a file descriptor leak.
-
-* Xlib/XCB: Ensure _XReadEvents reads at least one new event and blocks for
- exactly one event. Large performance improvement for XIfEvent and similar.
-
-* Hold XCB's Xlib lock even when only the user lock (XLockDisplay) is held.
- An Xlib client can query Display state, such as with NextRequest, while it
- holds only the Xlib user lock (between XLockDisplay and XUnlockDisplay), so
- XCB requests in other threads should be blocked when the Xlib user lock is
- held. We acquire the lock even when XInitThreads was not called, so that
- pure XCB code can use multiple threads even in an otherwise single-threaded
- Xlib application.
-
-* Allow re-entrant Xlib calls from _XIOError.
- Some libraries try to clean up X resources from atexit handlers, _fini, or
- C++ destructors. To make these work, downgrade the Display lock to a user
- lock (as in XLockDisplay) before calling exit(3). This blocks Xlib calls
- from threads other than the one calling exit(3) while still allowing the
- exit handlers to call Xlib.
-
-* Xlib/XCB: Avoid re-crashing after _XIOError.
-
-* Xlib/XCB: Only remove pending_requests when there are provably no more responses.
-
-* For NetBSD, define XTHREADLIB and XTHREAD_CFLAGS.
-
-* Bug #7703: Fixed XSetSizeHints() et al wrt use of uninitialized data.
- Now only those fields of the respective hint struct are set that
- are actually valid in the input data.
-
-* Bug #10292: Fixed a memory leak related to XOpenDisplay() in the XCB code.
-
-* Bug #7713: Initialize all of the event's fields before sending it.
-
-* Bug #10562: Define _GNU_SOURCE on glibc systems.
-
-* Use unistd.h to get getresuid() and friends, now that we have _GNU_SOURCE
- defined.
-
-* Switched function definitions from K&R to ANSI style.
-
-* Many constness fixes.
-
-* Fixed a few warnings.
-
-* Fix 64bit issues with reallocation.
-
-* Manpage fixes:
- * Add man pages for XKB APIs.
- (Volunteer needed to convert prototypes in man pages to ANSI C style...)
- * Protect C comments and #defines in XKB man pages from being mangled by cpp
- * Fix typo in nroff macro in XkbAddGeomOverlayKey.man
- * Bug #9695: Fixed a few argument types in the XOpenIM manpage.
- * Markup tweak for XOpenIM.
- * Bug #9696: refer to XDefineCursor() instead of XDefineCusor().
- * Bug #9697: Fixed documentation of XVisualInfo struct. The "depth" member
- was said to be unsigned int, but it's signed.
-
-* nls fixes:
- * Update el_GR.UTF-8/Compose.pre to match changes in xkeyboard-config cvs.
- * For nls/*.pre, allow people to comment lines by starting them with '##'.
-
-* Build system fixes:
- * Add autogen.sh to EXTRA_DIST.
- * Makefile.am: make ChangeLog hook safer
- * Don't distribute the configure-generated XlibConf.h in tarballs.
-
-Version 1.1.1 - 2006-11-30
-
-The "xcompmgr is hard, let's go releasing" release
-
-* Fix Bug #9154 and friends, to unbreak xcompmgr:
- Always process an event for _XReadEvents, even if an error occurs.
- Previously, process_responses (in the wait_for_first_event case called
- from _XReadEvents) considered any return from xcb_wait_for_event
- sufficient to think it had processed an event. If xcb_wait_for_event
- returned an error, and no more events occurred before process_responses
- called xcb_poll_for_event, process_responses would try to return with
- dpy->head NULL, and would fail an assertion for the _XReadEvents
- postcondition. Now, process_responses continues using xcb_wait_for_event
- until it gets an event.
-
-* Bug #9153: Fix access to freed memory.
- The fix for bug #8622 introduced a smaller bug where _XReply would
- read memory shortly after freeing it. This patch caches the needed
- value in a stack-allocated variable before the heap-allocated memory
- is freed.
-
-* libx11 doesn't use inputproto in public headers; don't require it in x11.pc.
- Based on a Debian patch.
-
-* Debian bug #354315: Clarify return value in XGetWindowAttributes man page.
- Patch by Debian user Ross Combs.
-
-
-Version 1.1 - 2006-11-23
-
-* Add note in man-page that XListFontsWithInfo is not thread-safe. _XReply
- drops the Display lock, so the value of dpy->request may change before
- _XReply is called again. Jamey Sharp discovered this by inspection a few
- years ago.
-
-* Fix Bug #8622, by fixing the response processing order for threaded apps.
- process_responses (the common code for _XReply, _XReadEvents, and
- _XEventsQueued) now handles responses in order, by adding condition variables
- to the list of outstanding requests in dpy->xcb->pending_requests, and
- blocking on them when those requests should get processed, to allow _XReply
- to process them; if actually called from _XReply, it returns when _XReply's
- request should get processed. _XReply broadcasts on its condition variable
- after it has read its reply and re-acquired the display lock.
-
-* Don't hold the display lock around callbacks to the application. This avoids
- recursive locking of the display lock (which triggers an XCB locking
- assertion), particularly with emacs.
-
-* Add xcb-xlib dependency to x11.pc when built against XCB.
-
-* Allocate the right amount of memory for dpy->lock_fns. Fixes a crash on
- startup with gdk.
-
-
-Version 1.1 RC2 - 2006-11-02
-
-Benno Schulenberg:
- nls: remove duplicate compose entries (bug #2286)
- nls: remove shadowed compose entries (bug #2286)
- nls (en_US): remove long compositions that override shorter (bug #2286)
-
-Caolan McNamara:
- XKB geometry: fix leaks in GetKeyboardByName (bug #8099)
-
-David Nusinow:
- Dynamically generate internal manpage section using __libmanpagesuffix__ so that it actually matches the section if you don't use 3X11
-
-Jamey Sharp:
- Add correct Display locking to XKB functions.
- XKB bugfix: SyncHandle must be called after UnlockDisplay, not before.
- XCB: check for and handle I/O errors in _XGetXCBBuffer.
-
-Matthias Hopf:
- Fix double open of compose file.
-
-
-Version 1.1 RC1 - 2006-10-06
-
-This release includes the Xlib/XCB work, which uses XCB as the Xlib transport
-layer, and allows a client to use both Xlib and XCB on the same connection.
-This allows clients to transition from Xlib to XCB incrementally.
-
-Clients which link only to libX11, and do not use XCB, should not notice any
-differences in this release. Clients desiring XCB interoperability should
-additionally #include <X11/Xlib-xcb.h>, link to libX11-xcb, use
-XGetXCBConnection(dpy) to obtain the underlying XCB connection, and then use
-XCB functions directly on that connection.
-
-Note that while a client can issue requests and handle their replies or errors
-with either Xlib or XCB, only one can own and handle the event queue. By
-default, Xlib must own the event queue, for compatibility with legacy Xlib
-clients. Clients can use the function XSetEventQueueOwner immediately after
-XOpenDisplay to let XCB own the event queue instead. Clients may not call
-this function after processing any responses, as this will potentially lose
-responses.
-
-We expect to have an RC2 release corresponding to the Xorg RC2 schedule, which
-should include additional internal architecture enhancements, but no
-user-visible changes. 1.0 final should match RC2.
-
-Other smaller changes in this release:
-* correct ChangeLog generation
-* support running lint and sparse
-* Autoconf 2.60
-* fix man page for XUrgencyHint
-* improve man pages for XGrabButton, XGrabKey, XGetWindowProperty
-* new locales: as_IN.UTF-8, kn_IN.UTF-8, ml_IN.UTF-8, or_IN.UTF-8,
- te_IN.UTF-8, ur_IN.UTF-8
-* on systems with both UNIXCONN and LOCALCONN, try unix if local fails
-* fix sparse warnings
-* ansify static functions
-
--- Josh Triplett <josh@freedesktop.org>, Jamey Sharp <jamey@minilop.net>
+Version 1.1.2 - 2007-06-03
+
+* Security fixes:
+ * Fix CVE-2007-1667: Multiple integer overflows in the XGetPixel() and
+ XInitImage() functions.
+ * Bug #9279: Fixed a file descriptor leak.
+
+* Xlib/XCB: Ensure _XReadEvents reads at least one new event and blocks for
+ exactly one event. Large performance improvement for XIfEvent and similar.
+
+* Hold XCB's Xlib lock even when only the user lock (XLockDisplay) is held.
+ An Xlib client can query Display state, such as with NextRequest, while it
+ holds only the Xlib user lock (between XLockDisplay and XUnlockDisplay), so
+ XCB requests in other threads should be blocked when the Xlib user lock is
+ held. We acquire the lock even when XInitThreads was not called, so that
+ pure XCB code can use multiple threads even in an otherwise single-threaded
+ Xlib application.
+
+* Allow re-entrant Xlib calls from _XIOError.
+ Some libraries try to clean up X resources from atexit handlers, _fini, or
+ C++ destructors. To make these work, downgrade the Display lock to a user
+ lock (as in XLockDisplay) before calling exit(3). This blocks Xlib calls
+ from threads other than the one calling exit(3) while still allowing the
+ exit handlers to call Xlib.
+
+* Xlib/XCB: Avoid re-crashing after _XIOError.
+
+* Xlib/XCB: Only remove pending_requests when there are provably no more responses.
+
+* For NetBSD, define XTHREADLIB and XTHREAD_CFLAGS.
+
+* Bug #7703: Fixed XSetSizeHints() et al wrt use of uninitialized data.
+ Now only those fields of the respective hint struct are set that
+ are actually valid in the input data.
+
+* Bug #10292: Fixed a memory leak related to XOpenDisplay() in the XCB code.
+
+* Bug #7713: Initialize all of the event's fields before sending it.
+
+* Bug #10562: Define _GNU_SOURCE on glibc systems.
+
+* Use unistd.h to get getresuid() and friends, now that we have _GNU_SOURCE
+ defined.
+
+* Switched function definitions from K&R to ANSI style.
+
+* Many constness fixes.
+
+* Fixed a few warnings.
+
+* Fix 64bit issues with reallocation.
+
+* Manpage fixes:
+ * Add man pages for XKB APIs.
+ (Volunteer needed to convert prototypes in man pages to ANSI C style...)
+ * Protect C comments and #defines in XKB man pages from being mangled by cpp
+ * Fix typo in nroff macro in XkbAddGeomOverlayKey.man
+ * Bug #9695: Fixed a few argument types in the XOpenIM manpage.
+ * Markup tweak for XOpenIM.
+ * Bug #9696: refer to XDefineCursor() instead of XDefineCusor().
+ * Bug #9697: Fixed documentation of XVisualInfo struct. The "depth" member
+ was said to be unsigned int, but it's signed.
+
+* nls fixes:
+ * Update el_GR.UTF-8/Compose.pre to match changes in xkeyboard-config cvs.
+ * For nls/*.pre, allow people to comment lines by starting them with '##'.
+
+* Build system fixes:
+ * Add autogen.sh to EXTRA_DIST.
+ * Makefile.am: make ChangeLog hook safer
+ * Don't distribute the configure-generated XlibConf.h in tarballs.
+
+Version 1.1.1 - 2006-11-30
+
+The "xcompmgr is hard, let's go releasing" release
+
+* Fix Bug #9154 and friends, to unbreak xcompmgr:
+ Always process an event for _XReadEvents, even if an error occurs.
+ Previously, process_responses (in the wait_for_first_event case called
+ from _XReadEvents) considered any return from xcb_wait_for_event
+ sufficient to think it had processed an event. If xcb_wait_for_event
+ returned an error, and no more events occurred before process_responses
+ called xcb_poll_for_event, process_responses would try to return with
+ dpy->head NULL, and would fail an assertion for the _XReadEvents
+ postcondition. Now, process_responses continues using xcb_wait_for_event
+ until it gets an event.
+
+* Bug #9153: Fix access to freed memory.
+ The fix for bug #8622 introduced a smaller bug where _XReply would
+ read memory shortly after freeing it. This patch caches the needed
+ value in a stack-allocated variable before the heap-allocated memory
+ is freed.
+
+* libx11 doesn't use inputproto in public headers; don't require it in x11.pc.
+ Based on a Debian patch.
+
+* Debian bug #354315: Clarify return value in XGetWindowAttributes man page.
+ Patch by Debian user Ross Combs.
+
+
+Version 1.1 - 2006-11-23
+
+* Add note in man-page that XListFontsWithInfo is not thread-safe. _XReply
+ drops the Display lock, so the value of dpy->request may change before
+ _XReply is called again. Jamey Sharp discovered this by inspection a few
+ years ago.
+
+* Fix Bug #8622, by fixing the response processing order for threaded apps.
+ process_responses (the common code for _XReply, _XReadEvents, and
+ _XEventsQueued) now handles responses in order, by adding condition variables
+ to the list of outstanding requests in dpy->xcb->pending_requests, and
+ blocking on them when those requests should get processed, to allow _XReply
+ to process them; if actually called from _XReply, it returns when _XReply's
+ request should get processed. _XReply broadcasts on its condition variable
+ after it has read its reply and re-acquired the display lock.
+
+* Don't hold the display lock around callbacks to the application. This avoids
+ recursive locking of the display lock (which triggers an XCB locking
+ assertion), particularly with emacs.
+
+* Add xcb-xlib dependency to x11.pc when built against XCB.
+
+* Allocate the right amount of memory for dpy->lock_fns. Fixes a crash on
+ startup with gdk.
+
+
+Version 1.1 RC2 - 2006-11-02
+
+Benno Schulenberg:
+ nls: remove duplicate compose entries (bug #2286)
+ nls: remove shadowed compose entries (bug #2286)
+ nls (en_US): remove long compositions that override shorter (bug #2286)
+
+Caolan McNamara:
+ XKB geometry: fix leaks in GetKeyboardByName (bug #8099)
+
+David Nusinow:
+ Dynamically generate internal manpage section using __libmanpagesuffix__ so that it actually matches the section if you don't use 3X11
+
+Jamey Sharp:
+ Add correct Display locking to XKB functions.
+ XKB bugfix: SyncHandle must be called after UnlockDisplay, not before.
+ XCB: check for and handle I/O errors in _XGetXCBBuffer.
+
+Matthias Hopf:
+ Fix double open of compose file.
+
+
+Version 1.1 RC1 - 2006-10-06
+
+This release includes the Xlib/XCB work, which uses XCB as the Xlib transport
+layer, and allows a client to use both Xlib and XCB on the same connection.
+This allows clients to transition from Xlib to XCB incrementally.
+
+Clients which link only to libX11, and do not use XCB, should not notice any
+differences in this release. Clients desiring XCB interoperability should
+additionally #include <X11/Xlib-xcb.h>, link to libX11-xcb, use
+XGetXCBConnection(dpy) to obtain the underlying XCB connection, and then use
+XCB functions directly on that connection.
+
+Note that while a client can issue requests and handle their replies or errors
+with either Xlib or XCB, only one can own and handle the event queue. By
+default, Xlib must own the event queue, for compatibility with legacy Xlib
+clients. Clients can use the function XSetEventQueueOwner immediately after
+XOpenDisplay to let XCB own the event queue instead. Clients may not call
+this function after processing any responses, as this will potentially lose
+responses.
+
+We expect to have an RC2 release corresponding to the Xorg RC2 schedule, which
+should include additional internal architecture enhancements, but no
+user-visible changes. 1.0 final should match RC2.
+
+Other smaller changes in this release:
+* correct ChangeLog generation
+* support running lint and sparse
+* Autoconf 2.60
+* fix man page for XUrgencyHint
+* improve man pages for XGrabButton, XGrabKey, XGetWindowProperty
+* new locales: as_IN.UTF-8, kn_IN.UTF-8, ml_IN.UTF-8, or_IN.UTF-8,
+ te_IN.UTF-8, ur_IN.UTF-8
+* on systems with both UNIXCONN and LOCALCONN, try unix if local fails
+* fix sparse warnings
+* ansify static functions
+
+-- Josh Triplett <josh@freedesktop.org>, Jamey Sharp <jamey@minilop.net>
diff --git a/libX11/README b/libX11/README
index 54f79b934..befb5a6d9 100644
--- a/libX11/README
+++ b/libX11/README
@@ -1,39 +1,39 @@
-libX11 - Core X11 protocol client library
-
-Documentation for this library can be found in the included man pages,
-the xlib spec from the doc/xorg-docs module, also available at:
-
- http://xorg.freedesktop.org/releases/X11R7.0/doc/PDF/xlib.pdf
-
-and the O'Reilly Xlib books, which they have made freely available online,
-though only for older versions of X11:
-
- - X Series Volume 2: Xlib Reference Manual (1989, covers X11R3)
- http://www.archive.org/details/xlibretmanver1102nyemiss
-
- - X Series Volume 2: Xlib Reference Manual, 2nd Edition (1990, covers X11R4)
- http://www.archive.org/details/xlibrefmanv115ed02nyemiss
-
-All questions regarding this software should be directed at the
-Xorg mailing list:
-
- http://lists.freedesktop.org/mailman/listinfo/xorg
-
-Please submit bug reports to the Xorg bugzilla:
-
- https://bugs.freedesktop.org/enter_bug.cgi?product=xorg
-
-The master development code repository can be found at:
-
- git://anongit.freedesktop.org/git/xorg/lib/libX11
-
- http://cgit.freedesktop.org/xorg/lib/libX11
-
-For patch submission instructions, see:
-
- http://www.x.org/wiki/Development/Documentation/SubmittingPatches
-
-For more information on the git code manager, see:
-
- http://wiki.x.org/wiki/GitPage
-
+libX11 - Core X11 protocol client library
+
+Documentation for this library can be found in the included man pages,
+the xlib spec from the doc/xorg-docs module, also available at:
+
+ http://xorg.freedesktop.org/releases/X11R7.0/doc/PDF/xlib.pdf
+
+and the O'Reilly Xlib books, which they have made freely available online,
+though only for older versions of X11:
+
+ - X Series Volume 2: Xlib Reference Manual (1989, covers X11R3)
+ http://www.archive.org/details/xlibretmanver1102nyemiss
+
+ - X Series Volume 2: Xlib Reference Manual, 2nd Edition (1990, covers X11R4)
+ http://www.archive.org/details/xlibrefmanv115ed02nyemiss
+
+All questions regarding this software should be directed at the
+Xorg mailing list:
+
+ http://lists.freedesktop.org/mailman/listinfo/xorg
+
+Please submit bug reports to the Xorg bugzilla:
+
+ https://bugs.freedesktop.org/enter_bug.cgi?product=xorg
+
+The master development code repository can be found at:
+
+ git://anongit.freedesktop.org/git/xorg/lib/libX11
+
+ http://cgit.freedesktop.org/xorg/lib/libX11
+
+For patch submission instructions, see:
+
+ http://www.x.org/wiki/Development/Documentation/SubmittingPatches
+
+For more information on the git code manager, see:
+
+ http://wiki.x.org/wiki/GitPage
+
diff --git a/libX11/autogen.sh b/libX11/autogen.sh
index 6fcae015c..904cd6746 100644
--- a/libX11/autogen.sh
+++ b/libX11/autogen.sh
@@ -1,12 +1,12 @@
-#! /bin/sh
-
-srcdir=`dirname $0`
-test -z "$srcdir" && srcdir=.
-
-ORIGDIR=`pwd`
-cd $srcdir
-
-autoreconf -v --install || exit 1
-cd $ORIGDIR || exit $?
-
-$srcdir/configure --enable-maintainer-mode "$@"
+#! /bin/sh
+
+srcdir=`dirname $0`
+test -z "$srcdir" && srcdir=.
+
+ORIGDIR=`pwd`
+cd $srcdir
+
+autoreconf -v --install || exit 1
+cd $ORIGDIR || exit $?
+
+$srcdir/configure --enable-maintainer-mode "$@"
diff --git a/libX11/include/Makefile.am b/libX11/include/Makefile.am
index bf8fcb954..067546cf0 100644
--- a/libX11/include/Makefile.am
+++ b/libX11/include/Makefile.am
@@ -1,19 +1,19 @@
-x11includedir=${includedir}/X11
-x11include_HEADERS=\
- X11/XKBlib.h \
- X11/Xcms.h \
- X11/Xlib.h \
- X11/Xlibint.h \
- X11/Xlocale.h \
- X11/Xresource.h \
- X11/Xutil.h \
- X11/cursorfont.h \
- X11/Xregion.h \
- X11/ImUtil.h \
- X11/Xlib-xcb.h
-
-nodist_x11include_HEADERS=\
- X11/XlibConf.h
-
-EXTRA_DIST = \
- X11/XlibConf.h.in
+x11includedir=${includedir}/X11
+x11include_HEADERS=\
+ X11/XKBlib.h \
+ X11/Xcms.h \
+ X11/Xlib.h \
+ X11/Xlibint.h \
+ X11/Xlocale.h \
+ X11/Xresource.h \
+ X11/Xutil.h \
+ X11/cursorfont.h \
+ X11/Xregion.h \
+ X11/ImUtil.h \
+ X11/Xlib-xcb.h
+
+nodist_x11include_HEADERS=\
+ X11/XlibConf.h
+
+EXTRA_DIST = \
+ X11/XlibConf.h.in
diff --git a/libX11/include/X11/.gitignore b/libX11/include/X11/.gitignore
index 6a2c1215e..b43616ad7 100644
--- a/libX11/include/X11/.gitignore
+++ b/libX11/include/X11/.gitignore
@@ -1,2 +1,2 @@
-# Add & Override for this directory and it's subdirectories
-XlibConf.h
+# Add & Override for this directory and it's subdirectories
+XlibConf.h
diff --git a/libX11/include/X11/ImUtil.h b/libX11/include/X11/ImUtil.h
index b7f425c93..ffdba1a93 100644
--- a/libX11/include/X11/ImUtil.h
+++ b/libX11/include/X11/ImUtil.h
@@ -1,30 +1,30 @@
-
-#ifndef _X11_IMUTIL_H_
-#define _X11_IMUTIL_H_
-
-extern int
-_XGetScanlinePad(
- Display *dpy,
- int depth);
-
-extern int
-_XGetBitsPerPixel(
- Display *dpy,
- int depth);
-
-extern int
-_XSetImage(
- XImage *srcimg,
- register XImage *dstimg,
- register int x,
- register int y);
-
-extern int
-_XReverse_Bytes(
- register unsigned char *bpt,
- register int nb);
-extern void
-_XInitImageFuncPtrs(
- register XImage *image);
-
-#endif /* _X11_IMUTIL_H_ */
+
+#ifndef _X11_IMUTIL_H_
+#define _X11_IMUTIL_H_
+
+extern int
+_XGetScanlinePad(
+ Display *dpy,
+ int depth);
+
+extern int
+_XGetBitsPerPixel(
+ Display *dpy,
+ int depth);
+
+extern int
+_XSetImage(
+ XImage *srcimg,
+ register XImage *dstimg,
+ register int x,
+ register int y);
+
+extern int
+_XReverse_Bytes(
+ register unsigned char *bpt,
+ register int nb);
+extern void
+_XInitImageFuncPtrs(
+ register XImage *image);
+
+#endif /* _X11_IMUTIL_H_ */
diff --git a/libX11/include/X11/XKBlib.h b/libX11/include/X11/XKBlib.h
index 33a24c1b4..8f6c72c12 100644
--- a/libX11/include/X11/XKBlib.h
+++ b/libX11/include/X11/XKBlib.h
@@ -1,1149 +1,1149 @@
-/************************************************************
-Copyright (c) 1993 by Silicon Graphics Computer Systems, Inc.
-
-Permission to use, copy, modify, and distribute this
-software and its documentation for any purpose and without
-fee is hereby granted, provided that the above copyright
-notice appear in all copies and that both that copyright
-notice and this permission notice appear in supporting
-documentation, and that the name of Silicon Graphics not be
-used in advertising or publicity pertaining to distribution
-of the software without specific prior written permission.
-Silicon Graphics makes no representation about the suitability
-of this software for any purpose. It is provided "as is"
-without any express or implied warranty.
-
-SILICON GRAPHICS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS
-SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
-AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON
-GRAPHICS BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL
-DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
-DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
-OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH
-THE USE OR PERFORMANCE OF THIS SOFTWARE.
-
-********************************************************/
-
-#ifndef _X11_XKBLIB_H_
-#define _X11_XKBLIB_H_
-
-#include <X11/Xlib.h>
-#include <X11/extensions/XKBstr.h>
-
-typedef struct _XkbAnyEvent {
- int type; /* XkbAnyEvent */
- unsigned long serial; /* # of last req processed by server */
- Bool send_event; /* is this from a SendEvent request? */
- Display * display; /* Display the event was read from */
- Time time; /* milliseconds */
- int xkb_type; /* XKB event minor code */
- unsigned int device; /* device ID */
-} XkbAnyEvent;
-
-typedef struct _XkbNewKeyboardNotify {
- int type; /* XkbAnyEvent */
- unsigned long serial; /* of last req processed by server */
- Bool send_event; /* is this from a SendEvent request? */
- Display * display; /* Display the event was read from */
- Time time; /* milliseconds */
- int xkb_type; /* XkbNewKeyboardNotify */
- int device; /* device ID */
- int old_device; /* device ID of previous keyboard */
- int min_key_code; /* minimum key code */
- int max_key_code; /* maximum key code */
- int old_min_key_code;/* min key code of previous kbd */
- int old_max_key_code;/* max key code of previous kbd */
- unsigned int changed; /* changed aspects of the keyboard */
- char req_major; /* major and minor opcode of req */
- char req_minor; /* that caused change, if applicable */
-} XkbNewKeyboardNotifyEvent;
-
-typedef struct _XkbMapNotifyEvent {
- int type; /* XkbAnyEvent */
- unsigned long serial; /* of last req processed by server */
- Bool send_event; /* is this from a SendEvent request */
- Display * display; /* Display the event was read from */
- Time time; /* milliseconds */
- int xkb_type; /* XkbMapNotify */
- int device; /* device ID */
- unsigned int changed; /* fields which have been changed */
- unsigned int flags; /* reserved */
- int first_type; /* first changed key type */
- int num_types; /* number of changed key types */
- KeyCode min_key_code;
- KeyCode max_key_code;
- KeyCode first_key_sym;
- KeyCode first_key_act;
- KeyCode first_key_behavior;
- KeyCode first_key_explicit;
- KeyCode first_modmap_key;
- KeyCode first_vmodmap_key;
- int num_key_syms;
- int num_key_acts;
- int num_key_behaviors;
- int num_key_explicit;
- int num_modmap_keys;
- int num_vmodmap_keys;
- unsigned int vmods; /* mask of changed virtual mods */
-} XkbMapNotifyEvent;
-
-typedef struct _XkbStateNotifyEvent {
- int type; /* XkbAnyEvent */
- unsigned long serial; /* # of last req processed by server */
- Bool send_event; /* is this from a SendEvent request? */
- Display * display; /* Display the event was read from */
- Time time; /* milliseconds */
- int xkb_type; /* XkbStateNotify */
- int device; /* device ID */
- unsigned int changed; /* mask of changed state components */
- int group; /* keyboard group */
- int base_group; /* base keyboard group */
- int latched_group; /* latched keyboard group */
- int locked_group; /* locked keyboard group */
- unsigned int mods; /* modifier state */
- unsigned int base_mods; /* base modifier state */
- unsigned int latched_mods; /* latched modifiers */
- unsigned int locked_mods; /* locked modifiers */
- int compat_state; /* compatibility state */
- unsigned char grab_mods; /* mods used for grabs */
- unsigned char compat_grab_mods;/* grab mods for non-XKB clients */
- unsigned char lookup_mods; /* mods sent to clients */
- unsigned char compat_lookup_mods; /* mods sent to non-XKB clients */
- int ptr_buttons; /* pointer button state */
- KeyCode keycode; /* keycode that caused the change */
- char event_type; /* KeyPress or KeyRelease */
- char req_major; /* Major opcode of request */
- char req_minor; /* Minor opcode of request */
-} XkbStateNotifyEvent;
-
-typedef struct _XkbControlsNotify {
- int type; /* XkbAnyEvent */
- unsigned long serial; /* of last req processed by server */
- Bool send_event; /* is this from a SendEvent request? */
- Display * display; /* Display the event was read from */
- Time time; /* milliseconds */
- int xkb_type; /* XkbControlsNotify */
- int device; /* device ID */
- unsigned int changed_ctrls; /* controls with changed sub-values */
- unsigned int enabled_ctrls; /* controls currently enabled */
- unsigned int enabled_ctrl_changes;/* controls just {en,dis}abled */
- int num_groups; /* total groups on keyboard */
- KeyCode keycode; /* key that caused change or 0 */
- char event_type; /* type of event that caused change */
- char req_major; /* if keycode==0, major and minor */
- char req_minor; /* opcode of req that caused change */
-} XkbControlsNotifyEvent;
-
-typedef struct _XkbIndicatorNotify {
- int type; /* XkbAnyEvent */
- unsigned long serial; /* of last req processed by server */
- Bool send_event; /* is this from a SendEvent request? */
- Display * display; /* Display the event was read from */
- Time time; /* milliseconds */
- int xkb_type; /* XkbIndicatorNotify */
- int device; /* device ID */
- unsigned int changed; /* indicators with new state or map */
- unsigned int state; /* current state of all indicators */
-} XkbIndicatorNotifyEvent;
-
-typedef struct _XkbNamesNotify {
- int type; /* XkbAnyEvent */
- unsigned long serial; /* of last req processed by server */
- Bool send_event; /* is this from a SendEvent request? */
- Display * display; /* Display the event was read from */
- Time time; /* milliseconds */
- int xkb_type; /* XkbNamesNotify */
- int device; /* device ID */
- unsigned int changed; /* names that have changed */
- int first_type; /* first key type with new name */
- int num_types; /* number of key types with new names */
- int first_lvl; /* first key type new new level names */
- int num_lvls; /* # of key types w/new level names */
- int num_aliases; /* total number of key aliases*/
- int num_radio_groups;/* total number of radio groups */
- unsigned int changed_vmods; /* virtual modifiers with new names */
- unsigned int changed_groups; /* groups with new names */
- unsigned int changed_indicators;/* indicators with new names */
- int first_key; /* first key with new name */
- int num_keys; /* number of keys with new names */
-} XkbNamesNotifyEvent;
-
-typedef struct _XkbCompatMapNotify {
- int type; /* XkbAnyEvent */
- unsigned long serial; /* of last req processed by server */
- Bool send_event; /* is this from a SendEvent request? */
- Display * display; /* Display the event was read from */
- Time time; /* milliseconds */
- int xkb_type; /* XkbCompatMapNotify */
- int device; /* device ID */
- unsigned int changed_groups; /* groups with new compat maps */
- int first_si; /* first new symbol interp */
- int num_si; /* number of new symbol interps */
- int num_total_si; /* total # of symbol interps */
-} XkbCompatMapNotifyEvent;
-
-typedef struct _XkbBellNotify {
- int type; /* XkbAnyEvent */
- unsigned long serial; /* of last req processed by server */
- Bool send_event; /* is this from a SendEvent request? */
- Display * display; /* Display the event was read from */
- Time time; /* milliseconds */
- int xkb_type; /* XkbBellNotify */
- int device; /* device ID */
- int percent; /* requested volume as a % of maximum */
- int pitch; /* requested pitch in Hz */
- int duration; /* requested duration in useconds */
- int bell_class; /* (input extension) feedback class */
- int bell_id; /* (input extension) ID of feedback */
- Atom name; /* "name" of requested bell */
- Window window; /* window associated with event */
- Bool event_only; /* "event only" requested */
-} XkbBellNotifyEvent;
-
-typedef struct _XkbActionMessage {
- int type; /* XkbAnyEvent */
- unsigned long serial; /* of last req processed by server */
- Bool send_event; /* is this from a SendEvent request? */
- Display * display; /* Display the event was read from */
- Time time; /* milliseconds */
- int xkb_type; /* XkbActionMessage */
- int device; /* device ID */
- KeyCode keycode; /* key that generated the event */
- Bool press; /* true if act caused by key press */
- Bool key_event_follows;/* true if key event also generated */
- int group; /* effective group */
- unsigned int mods; /* effective mods */
- char message[XkbActionMessageLength+1];
- /* message -- leave space for NUL */
-} XkbActionMessageEvent;
-
-typedef struct _XkbAccessXNotify {
- int type; /* XkbAnyEvent */
- unsigned long serial; /* of last req processed by server */
- Bool send_event; /* is this from a SendEvent request? */
- Display * display; /* Display the event was read from */
- Time time; /* milliseconds */
- int xkb_type; /* XkbAccessXNotify */
- int device; /* device ID */
- int detail; /* XkbAXN_* */
- int keycode; /* key of event */
- int sk_delay; /* current slow keys delay */
- int debounce_delay; /* current debounce delay */
-} XkbAccessXNotifyEvent;
-
-typedef struct _XkbExtensionDeviceNotify {
- int type; /* XkbAnyEvent */
- unsigned long serial; /* of last req processed by server */
- Bool send_event; /* is this from a SendEvent request? */
- Display * display; /* Display the event was read from */
- Time time; /* milliseconds */
- int xkb_type; /* XkbExtensionDeviceNotify */
- int device; /* device ID */
- unsigned int reason; /* reason for the event */
- unsigned int supported; /* mask of supported features */
- unsigned int unsupported; /* mask of unsupported features */
- /* that some app tried to use */
- int first_btn; /* first button that changed */
- int num_btns; /* range of buttons changed */
- unsigned int leds_defined; /* indicators with names or maps */
- unsigned int led_state; /* current state of the indicators */
- int led_class; /* feedback class for led changes */
- int led_id; /* feedback id for led changes */
-} XkbExtensionDeviceNotifyEvent;
-
-typedef union _XkbEvent {
- int type;
- XkbAnyEvent any;
- XkbNewKeyboardNotifyEvent new_kbd;
- XkbMapNotifyEvent map;
- XkbStateNotifyEvent state;
- XkbControlsNotifyEvent ctrls;
- XkbIndicatorNotifyEvent indicators;
- XkbNamesNotifyEvent names;
- XkbCompatMapNotifyEvent compat;
- XkbBellNotifyEvent bell;
- XkbActionMessageEvent message;
- XkbAccessXNotifyEvent accessx;
- XkbExtensionDeviceNotifyEvent device;
- XEvent core;
-} XkbEvent;
-
-typedef struct _XkbKbdDpyState XkbKbdDpyStateRec,*XkbKbdDpyStatePtr;
-
- /* XkbOpenDisplay error codes */
-#define XkbOD_Success 0
-#define XkbOD_BadLibraryVersion 1
-#define XkbOD_ConnectionRefused 2
-#define XkbOD_NonXkbServer 3
-#define XkbOD_BadServerVersion 4
-
- /* Values for XlibFlags */
-#define XkbLC_ForceLatin1Lookup (1<<0)
-#define XkbLC_ConsumeLookupMods (1<<1)
-#define XkbLC_AlwaysConsumeShiftAndLock (1<<2)
-#define XkbLC_IgnoreNewKeyboards (1<<3)
-#define XkbLC_ControlFallback (1<<4)
-#define XkbLC_ConsumeKeysOnComposeFail (1<<29)
-#define XkbLC_ComposeLED (1<<30)
-#define XkbLC_BeepOnComposeFail (1<<31)
-
-#define XkbLC_AllComposeControls (0xc0000000)
-#define XkbLC_AllControls (0xc000001f)
-
-_XFUNCPROTOBEGIN
-
-extern Bool XkbIgnoreExtension(
- Bool /* ignore */
-);
-
-extern Display *XkbOpenDisplay(
- char * /* name */,
- int * /* ev_rtrn */,
- int * /* err_rtrn */,
- int * /* major_rtrn */,
- int * /* minor_rtrn */,
- int * /* reason */
-);
-
-extern Bool XkbQueryExtension(
- Display * /* dpy */,
- int * /* opcodeReturn */,
- int * /* eventBaseReturn */,
- int * /* errorBaseReturn */,
- int * /* majorRtrn */,
- int * /* minorRtrn */
-);
-
-extern Bool XkbUseExtension(
- Display * /* dpy */,
- int * /* major_rtrn */,
- int * /* minor_rtrn */
-);
-
-extern Bool XkbLibraryVersion(
- int * /* libMajorRtrn */,
- int * /* libMinorRtrn */
-);
-
-extern unsigned int XkbSetXlibControls(
- Display* /* dpy */,
- unsigned int /* affect */,
- unsigned int /* values */
-);
-
-extern unsigned int XkbGetXlibControls(
- Display* /* dpy */
-);
-
-extern unsigned int XkbXlibControlsImplemented(void);
-
-typedef Atom (*XkbInternAtomFunc)(
- Display * /* dpy */,
- _Xconst char * /* name */,
- Bool /* only_if_exists */
-);
-
-typedef char * (*XkbGetAtomNameFunc)(
- Display * /* dpy */,
- Atom /* atom */
-);
-
-extern void XkbSetAtomFuncs(
- XkbInternAtomFunc /* getAtom */,
- XkbGetAtomNameFunc /* getName */
-);
-
-extern KeySym XkbKeycodeToKeysym(
- Display * /* dpy */,
-#if NeedWidePrototypes
- unsigned int /* kc */,
-#else
- KeyCode /* kc */,
-#endif
- int /* group */,
- int /* level */
-);
-
-extern unsigned int XkbKeysymToModifiers(
- Display * /* dpy */,
- KeySym /* ks */
-);
-
-extern Bool XkbLookupKeySym(
- Display * /* dpy */,
- KeyCode /* keycode */,
- unsigned int /* modifiers */,
- unsigned int * /* modifiers_return */,
- KeySym * /* keysym_return */
-);
-
-extern int XkbLookupKeyBinding(
- Display * /* dpy */,
- KeySym /* sym_rtrn */,
- unsigned int /* mods */,
- char * /* buffer */,
- int /* nbytes */,
- int * /* extra_rtrn */
-);
-
-extern Bool XkbTranslateKeyCode(
- XkbDescPtr /* xkb */,
- KeyCode /* keycode */,
- unsigned int /* modifiers */,
- unsigned int * /* modifiers_return */,
- KeySym * /* keysym_return */
-);
-
-extern int XkbTranslateKeySym(
- Display * /* dpy */,
- register KeySym * /* sym_return */,
- unsigned int /* modifiers */,
- char * /* buffer */,
- int /* nbytes */,
- int * /* extra_rtrn */
-);
-
-extern Bool XkbSetAutoRepeatRate(
- Display * /* dpy */,
- unsigned int /* deviceSpec */,
- unsigned int /* delay */,
- unsigned int /* interval */
-);
-
-extern Bool XkbGetAutoRepeatRate(
- Display * /* dpy */,
- unsigned int /* deviceSpec */,
- unsigned int * /* delayRtrn */,
- unsigned int * /* intervalRtrn */
-);
-
-extern Bool XkbChangeEnabledControls(
- Display * /* dpy */,
- unsigned int /* deviceSpec */,
- unsigned int /* affect */,
- unsigned int /* values */
-);
-
-extern Bool XkbDeviceBell(
- Display * /* dpy */,
- Window /* win */,
- int /* deviceSpec */,
- int /* bellClass */,
- int /* bellID */,
- int /* percent */,
- Atom /* name */
-);
-
-extern Bool XkbForceDeviceBell(
- Display * /* dpy */,
- int /* deviceSpec */,
- int /* bellClass */,
- int /* bellID */,
- int /* percent */
-);
-
-extern Bool XkbDeviceBellEvent(
- Display * /* dpy */,
- Window /* win */,
- int /* deviceSpec */,
- int /* bellClass */,
- int /* bellID */,
- int /* percent */,
- Atom /* name */
-);
-
-extern Bool XkbBell(
- Display * /* dpy */,
- Window /* win */,
- int /* percent */,
- Atom /* name */
-);
-
-extern Bool XkbForceBell(
- Display * /* dpy */,
- int /* percent */
-);
-
-extern Bool XkbBellEvent(
- Display * /* dpy */,
- Window /* win */,
- int /* percent */,
- Atom /* name */
-);
-
-extern Bool XkbSelectEvents(
- Display * /* dpy */,
- unsigned int /* deviceID */,
- unsigned int /* affect */,
- unsigned int /* values */
-);
-
-extern Bool XkbSelectEventDetails(
- Display * /* dpy */,
- unsigned int /* deviceID */,
- unsigned int /* eventType */,
- unsigned long /* affect */,
- unsigned long /* details */
-);
-
-extern void XkbNoteMapChanges(
- XkbMapChangesPtr /* old */,
- XkbMapNotifyEvent * /* new */,
- unsigned int /* wanted */
-);
-
-extern void XkbNoteNameChanges(
- XkbNameChangesPtr /* old */,
- XkbNamesNotifyEvent * /* new */,
- unsigned int /* wanted */
-);
-
-extern Status XkbGetIndicatorState(
- Display * /* dpy */,
- unsigned int /* deviceSpec */,
- unsigned int * /* pStateRtrn */
-);
-
-extern Status XkbGetDeviceIndicatorState(
- Display * /* dpy */,
- unsigned int /* deviceSpec */,
- unsigned int /* ledClass */,
- unsigned int /* ledID */,
- unsigned int * /* pStateRtrn */
-);
-
-extern Status XkbGetIndicatorMap(
- Display * /* dpy */,
- unsigned long /* which */,
- XkbDescPtr /* desc */
-);
-
-extern Bool XkbSetIndicatorMap(
- Display * /* dpy */,
- unsigned long /* which */,
- XkbDescPtr /* desc */
-);
-
-#define XkbNoteIndicatorMapChanges(o,n,w) \
- ((o)->map_changes|=((n)->map_changes&(w)))
-#define XkbNoteIndicatorStateChanges(o,n,w)\
- ((o)->state_changes|=((n)->state_changes&(w)))
-#define XkbGetIndicatorMapChanges(d,x,c) \
- (XkbGetIndicatorMap((d),(c)->map_changes,x))
-#define XkbChangeIndicatorMaps(d,x,c) \
- (XkbSetIndicatorMap((d),(c)->map_changes,x))
-
-extern Bool XkbGetNamedIndicator(
- Display * /* dpy */,
- Atom /* name */,
- int * /* pNdxRtrn */,
- Bool * /* pStateRtrn */,
- XkbIndicatorMapPtr /* pMapRtrn */,
- Bool * /* pRealRtrn */
-);
-
-extern Bool XkbGetNamedDeviceIndicator(
- Display * /* dpy */,
- unsigned int /* deviceSpec */,
- unsigned int /* ledClass */,
- unsigned int /* ledID */,
- Atom /* name */,
- int * /* pNdxRtrn */,
- Bool * /* pStateRtrn */,
- XkbIndicatorMapPtr /* pMapRtrn */,
- Bool * /* pRealRtrn */
-);
-
-extern Bool XkbSetNamedIndicator(
- Display * /* dpy */,
- Atom /* name */,
- Bool /* changeState */,
- Bool /* state */,
- Bool /* createNewMap */,
- XkbIndicatorMapPtr /* pMap */
-);
-
-extern Bool XkbSetNamedDeviceIndicator(
- Display * /* dpy */,
- unsigned int /* deviceSpec */,
- unsigned int /* ledClass */,
- unsigned int /* ledID */,
- Atom /* name */,
- Bool /* changeState */,
- Bool /* state */,
- Bool /* createNewMap */,
- XkbIndicatorMapPtr /* pMap */
-);
-
-extern Bool XkbLockModifiers(
- Display * /* dpy */,
- unsigned int /* deviceSpec */,
- unsigned int /* affect */,
- unsigned int /* values */
-);
-
-extern Bool XkbLatchModifiers(
- Display * /* dpy */,
- unsigned int /* deviceSpec */,
- unsigned int /* affect */,
- unsigned int /* values */
-);
-
-extern Bool XkbLockGroup(
- Display * /* dpy */,
- unsigned int /* deviceSpec */,
- unsigned int /* group */
-);
-
-extern Bool XkbLatchGroup(
- Display * /* dpy */,
- unsigned int /* deviceSpec */,
- unsigned int /* group */
-);
-
-extern Bool XkbSetServerInternalMods(
- Display * /* dpy */,
- unsigned int /* deviceSpec */,
- unsigned int /* affectReal */,
- unsigned int /* realValues */,
- unsigned int /* affectVirtual */,
- unsigned int /* virtualValues */
-);
-
-extern Bool XkbSetIgnoreLockMods(
- Display * /* dpy */,
- unsigned int /* deviceSpec */,
- unsigned int /* affectReal */,
- unsigned int /* realValues */,
- unsigned int /* affectVirtual */,
- unsigned int /* virtualValues */
-);
-
-
-extern Bool XkbVirtualModsToReal(
- XkbDescPtr /* xkb */,
- unsigned int /* virtual_mask */,
- unsigned int * /* mask_rtrn */
-);
-
-extern Bool XkbComputeEffectiveMap(
- XkbDescPtr /* xkb */,
- XkbKeyTypePtr /* type */,
- unsigned char * /* map_rtrn */
-);
-
-extern Status XkbInitCanonicalKeyTypes(
- XkbDescPtr /* xkb */,
- unsigned int /* which */,
- int /* keypadVMod */
-);
-
-extern XkbDescPtr XkbAllocKeyboard(
- void
-);
-
-extern void XkbFreeKeyboard(
- XkbDescPtr /* xkb */,
- unsigned int /* which */,
- Bool /* freeDesc */
-);
-
-extern Status XkbAllocClientMap(
- XkbDescPtr /* xkb */,
- unsigned int /* which */,
- unsigned int /* nTypes */
-);
-
-extern Status XkbAllocServerMap(
- XkbDescPtr /* xkb */,
- unsigned int /* which */,
- unsigned int /* nActions */
-);
-
-extern void XkbFreeClientMap(
- XkbDescPtr /* xkb */,
- unsigned int /* what */,
- Bool /* freeMap */
-);
-
-extern void XkbFreeServerMap(
- XkbDescPtr /* xkb */,
- unsigned int /* what */,
- Bool /* freeMap */
-);
-
-extern XkbKeyTypePtr XkbAddKeyType(
- XkbDescPtr /* xkb */,
- Atom /* name */,
- int /* map_count */,
- Bool /* want_preserve */,
- int /* num_lvls */
-);
-
-extern Status XkbAllocIndicatorMaps(
- XkbDescPtr /* xkb */
-);
-
-extern void XkbFreeIndicatorMaps(
- XkbDescPtr /* xkb */
-);
-
-extern XkbDescPtr XkbGetMap(
- Display * /* dpy */,
- unsigned int /* which */,
- unsigned int /* deviceSpec */
-);
-
-extern Status XkbGetUpdatedMap(
- Display * /* dpy */,
- unsigned int /* which */,
- XkbDescPtr /* desc */
-);
-
-extern Status XkbGetMapChanges(
- Display * /* dpy */,
- XkbDescPtr /* xkb */,
- XkbMapChangesPtr /* changes */
-);
-
-
-extern Status XkbRefreshKeyboardMapping(
- XkbMapNotifyEvent * /* event */
-);
-
-extern Status XkbGetKeyTypes(
- Display * /* dpy */,
- unsigned int /* first */,
- unsigned int /* num */,
- XkbDescPtr /* xkb */
-);
-
-extern Status XkbGetKeySyms(
- Display * /* dpy */,
- unsigned int /* first */,
- unsigned int /* num */,
- XkbDescPtr /* xkb */
-);
-
-extern Status XkbGetKeyActions(
- Display * /* dpy */,
- unsigned int /* first */,
- unsigned int /* num */,
- XkbDescPtr /* xkb */
-);
-
-extern Status XkbGetKeyBehaviors(
- Display * /* dpy */,
- unsigned int /* firstKey */,
- unsigned int /* nKeys */,
- XkbDescPtr /* desc */
-);
-
-extern Status XkbGetVirtualMods(
- Display * /* dpy */,
- unsigned int /* which */,
- XkbDescPtr /* desc */
-);
-
-extern Status XkbGetKeyExplicitComponents(
- Display * /* dpy */,
- unsigned int /* firstKey */,
- unsigned int /* nKeys */,
- XkbDescPtr /* desc */
-);
-
-extern Status XkbGetKeyModifierMap(
- Display * /* dpy */,
- unsigned int /* firstKey */,
- unsigned int /* nKeys */,
- XkbDescPtr /* desc */
-);
-
-extern Status XkbGetKeyVirtualModMap(
- Display * /* dpy */,
- unsigned int /* first */,
- unsigned int /* num */,
- XkbDescPtr /* xkb */
-);
-
-extern Status XkbAllocControls(
- XkbDescPtr /* xkb */,
- unsigned int /* which*/
-);
-
-extern void XkbFreeControls(
- XkbDescPtr /* xkb */,
- unsigned int /* which */,
- Bool /* freeMap */
-);
-
-extern Status XkbGetControls(
- Display * /* dpy */,
- unsigned long /* which */,
- XkbDescPtr /* desc */
-);
-
-extern Bool XkbSetControls(
- Display * /* dpy */,
- unsigned long /* which */,
- XkbDescPtr /* desc */
-);
-
-extern void XkbNoteControlsChanges(
- XkbControlsChangesPtr /* old */,
- XkbControlsNotifyEvent * /* new */,
- unsigned int /* wanted */
-);
-
-#define XkbGetControlsChanges(d,x,c) XkbGetControls(d,(c)->changed_ctrls,x)
-#define XkbChangeControls(d,x,c) XkbSetControls(d,(c)->changed_ctrls,x)
-
-extern Status XkbAllocCompatMap(
- XkbDescPtr /* xkb */,
- unsigned int /* which */,
- unsigned int /* nInterpret */
-);
-
-extern void XkbFreeCompatMap(
- XkbDescPtr /* xkb */,
- unsigned int /* which */,
- Bool /* freeMap */
-);
-
-extern Status XkbGetCompatMap(
- Display * /* dpy */,
- unsigned int /* which */,
- XkbDescPtr /* xkb */
-);
-
-extern Bool XkbSetCompatMap(
- Display * /* dpy */,
- unsigned int /* which */,
- XkbDescPtr /* xkb */,
- Bool /* updateActions */
-);
-
-extern XkbSymInterpretPtr XkbAddSymInterpret(
- XkbDescPtr /* xkb */,
- XkbSymInterpretPtr /* si */,
- Bool /* updateMap */,
- XkbChangesPtr /* changes */
-);
-
-extern Status XkbAllocNames(
- XkbDescPtr /* xkb */,
- unsigned int /* which */,
- int /* nTotalRG */,
- int /* nTotalAliases */
-);
-
-extern Status XkbGetNames(
- Display * /* dpy */,
- unsigned int /* which */,
- XkbDescPtr /* desc */
-);
-
-extern Bool XkbSetNames(
- Display * /* dpy */,
- unsigned int /* which */,
- unsigned int /* firstType */,
- unsigned int /* nTypes */,
- XkbDescPtr /* desc */
-);
-
-extern Bool XkbChangeNames(
- Display * /* dpy */,
- XkbDescPtr /* xkb */,
- XkbNameChangesPtr /* changes */
-);
-
-extern void XkbFreeNames(
- XkbDescPtr /* xkb */,
- unsigned int /* which */,
- Bool /* freeMap */
-);
-
-
-extern Status XkbGetState(
- Display * /* dpy */,
- unsigned int /* deviceSpec */,
- XkbStatePtr /* rtrnState */
-);
-
-extern Bool XkbSetMap(
- Display * /* dpy */,
- unsigned int /* which */,
- XkbDescPtr /* desc */
-);
-
-extern Bool XkbChangeMap(
- Display* /* dpy */,
- XkbDescPtr /* desc */,
- XkbMapChangesPtr /* changes */
-);
-
-extern Bool XkbSetDetectableAutoRepeat(
- Display * /* dpy */,
- Bool /* detectable */,
- Bool * /* supported */
-);
-
-extern Bool XkbGetDetectableAutoRepeat(
- Display * /* dpy */,
- Bool * /* supported */
-);
-
-extern Bool XkbSetAutoResetControls(
- Display * /* dpy */,
- unsigned int /* changes */,
- unsigned int * /* auto_ctrls */,
- unsigned int * /* auto_values */
-);
-
-extern Bool XkbGetAutoResetControls(
- Display * /* dpy */,
- unsigned int * /* auto_ctrls */,
- unsigned int * /* auto_ctrl_values */
-);
-
-extern Bool XkbSetPerClientControls(
- Display * /* dpy */,
- unsigned int /* change */,
- unsigned int * /* values */
-);
-
-extern Bool XkbGetPerClientControls(
- Display * /* dpy */,
- unsigned int * /* ctrls */
-);
-
-extern Status XkbCopyKeyType(
- XkbKeyTypePtr /* from */,
- XkbKeyTypePtr /* into */
-);
-
-extern Status XkbCopyKeyTypes(
- XkbKeyTypePtr /* from */,
- XkbKeyTypePtr /* into */,
- int /* num_types */
-);
-
-extern Status XkbResizeKeyType(
- XkbDescPtr /* xkb */,
- int /* type_ndx */,
- int /* map_count */,
- Bool /* want_preserve */,
- int /* new_num_lvls */
-);
-
-extern KeySym *XkbResizeKeySyms(
- XkbDescPtr /* desc */,
- int /* forKey */,
- int /* symsNeeded */
-);
-
-extern XkbAction *XkbResizeKeyActions(
- XkbDescPtr /* desc */,
- int /* forKey */,
- int /* actsNeeded */
-);
-
-extern Status XkbChangeTypesOfKey(
- XkbDescPtr /* xkb */,
- int /* key */,
- int /* num_groups */,
- unsigned int /* groups */,
- int * /* newTypes */,
- XkbMapChangesPtr /* pChanges */
-);
-
-extern Status XkbChangeKeycodeRange(
- XkbDescPtr /* xkb */,
- int /* minKC */,
- int /* maxKC */,
- XkbChangesPtr /* changes */
-);
-
-/***====================================================================***/
-
-extern XkbComponentListPtr XkbListComponents(
- Display * /* dpy */,
- unsigned int /* deviceSpec */,
- XkbComponentNamesPtr /* ptrns */,
- int * /* max_inout */
-);
-
-extern void XkbFreeComponentList(
- XkbComponentListPtr /* list */
-);
-
-extern XkbDescPtr XkbGetKeyboard(
- Display * /* dpy */,
- unsigned int /* which */,
- unsigned int /* deviceSpec */
-);
-
-extern XkbDescPtr XkbGetKeyboardByName(
- Display * /* dpy */,
- unsigned int /* deviceSpec */,
- XkbComponentNamesPtr /* names */,
- unsigned int /* want */,
- unsigned int /* need */,
- Bool /* load */
-);
-
-/***====================================================================***/
-
-extern int XkbKeyTypesForCoreSymbols( /* returns # of groups */
- XkbDescPtr /* xkb */, /* keyboard device */
- int /* map_width */, /* width of core KeySym array */
- KeySym * /* core_syms */, /* always mapWidth symbols */
- unsigned int /* protected */, /* explicit key types */
- int * /* types_inout */, /* always four type indices */
- KeySym * /* xkb_syms_rtrn */ /* must have enough space */
-);
-
-extern Bool XkbApplyCompatMapToKey( /* False only on error */
- XkbDescPtr /* xkb */, /* keymap to be edited */
- KeyCode /* key */, /* key to be updated */
- XkbChangesPtr /* changes */ /* resulting changes to map */
-);
-
-extern Bool XkbUpdateMapFromCore( /* False only on error */
- XkbDescPtr /* xkb */, /* XKB keyboard to be edited */
- KeyCode /* first_key */, /* first changed key */
- int /* num_keys */, /* number of changed keys */
- int /* map_width */, /* width of core keymap */
- KeySym * /* core_keysyms */, /* symbols from core keymap */
- XkbChangesPtr /* changes */ /* resulting changes */
-);
-
-/***====================================================================***/
-
-extern XkbDeviceLedInfoPtr XkbAddDeviceLedInfo(
- XkbDeviceInfoPtr /* devi */,
- unsigned int /* ledClass */,
- unsigned int /* ledId */
-);
-
-extern Status XkbResizeDeviceButtonActions(
- XkbDeviceInfoPtr /* devi */,
- unsigned int /* newTotal */
-);
-
-extern XkbDeviceInfoPtr XkbAllocDeviceInfo(
- unsigned int /* deviceSpec */,
- unsigned int /* nButtons */,
- unsigned int /* szLeds */
-);
-
-extern void XkbFreeDeviceInfo(
- XkbDeviceInfoPtr /* devi */,
- unsigned int /* which */,
- Bool /* freeDevI */
-);
-
-extern void XkbNoteDeviceChanges(
- XkbDeviceChangesPtr /* old */,
- XkbExtensionDeviceNotifyEvent * /* new */,
- unsigned int /* wanted */
-);
-
-extern XkbDeviceInfoPtr XkbGetDeviceInfo(
- Display * /* dpy */,
- unsigned int /* which */,
- unsigned int /* deviceSpec */,
- unsigned int /* ledClass */,
- unsigned int /* ledID */
-);
-
-extern Status XkbGetDeviceInfoChanges(
- Display * /* dpy */,
- XkbDeviceInfoPtr /* devi */,
- XkbDeviceChangesPtr /* changes */
-);
-
-extern Status XkbGetDeviceButtonActions(
- Display * /* dpy */,
- XkbDeviceInfoPtr /* devi */,
- Bool /* all */,
- unsigned int /* first */,
- unsigned int /* nBtns */
-);
-
-extern Status XkbGetDeviceLedInfo(
- Display * /* dpy */,
- XkbDeviceInfoPtr /* devi */,
- unsigned int /* ledClass (class, XIDflt, XIAll) */,
- unsigned int /* ledId (id, XIDflt, XIAll) */,
- unsigned int /* which (XkbXI_Indicator{Names,Map}Mask */
-);
-
-extern Bool XkbSetDeviceInfo(
- Display * /* dpy */,
- unsigned int /* which */,
- XkbDeviceInfoPtr /* devi */
-);
-
-extern Bool XkbChangeDeviceInfo(
- Display* /* dpy */,
- XkbDeviceInfoPtr /* desc */,
- XkbDeviceChangesPtr /* changes */
-);
-
-extern Bool XkbSetDeviceLedInfo(
- Display * /* dpy */,
- XkbDeviceInfoPtr /* devi */,
- unsigned int /* ledClass */,
- unsigned int /* ledID */,
- unsigned int /* which */
-);
-
-extern Bool XkbSetDeviceButtonActions(
- Display * /* dpy */,
- XkbDeviceInfoPtr /* devi */,
- unsigned int /* first */,
- unsigned int /* nBtns */
-);
-
-/***====================================================================***/
-
-extern char XkbToControl(
- char /* c */
-);
-
-/***====================================================================***/
-
-extern Bool XkbSetDebuggingFlags(
- Display * /* dpy */,
- unsigned int /* mask */,
- unsigned int /* flags */,
- char * /* msg */,
- unsigned int /* ctrls_mask */,
- unsigned int /* ctrls */,
- unsigned int * /* rtrn_flags */,
- unsigned int * /* rtrn_ctrls */
-);
-
-extern Bool XkbApplyVirtualModChanges(
- XkbDescPtr /* xkb */,
- unsigned int /* changed */,
- XkbChangesPtr /* changes */
-);
-
-extern Bool XkbUpdateActionVirtualMods(
- XkbDescPtr /* xkb */,
- XkbAction * /* act */,
- unsigned int /* changed */
-);
-
-extern void XkbUpdateKeyTypeVirtualMods(
- XkbDescPtr /* xkb */,
- XkbKeyTypePtr /* type */,
- unsigned int /* changed */,
- XkbChangesPtr /* changes */
-);
-
-_XFUNCPROTOEND
-
-#endif /* _X11_XKBLIB_H_ */
+/************************************************************
+Copyright (c) 1993 by Silicon Graphics Computer Systems, Inc.
+
+Permission to use, copy, modify, and distribute this
+software and its documentation for any purpose and without
+fee is hereby granted, provided that the above copyright
+notice appear in all copies and that both that copyright
+notice and this permission notice appear in supporting
+documentation, and that the name of Silicon Graphics not be
+used in advertising or publicity pertaining to distribution
+of the software without specific prior written permission.
+Silicon Graphics makes no representation about the suitability
+of this software for any purpose. It is provided "as is"
+without any express or implied warranty.
+
+SILICON GRAPHICS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS
+SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
+AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON
+GRAPHICS BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL
+DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
+DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
+OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH
+THE USE OR PERFORMANCE OF THIS SOFTWARE.
+
+********************************************************/
+
+#ifndef _X11_XKBLIB_H_
+#define _X11_XKBLIB_H_
+
+#include <X11/Xlib.h>
+#include <X11/extensions/XKBstr.h>
+
+typedef struct _XkbAnyEvent {
+ int type; /* XkbAnyEvent */
+ unsigned long serial; /* # of last req processed by server */
+ Bool send_event; /* is this from a SendEvent request? */
+ Display * display; /* Display the event was read from */
+ Time time; /* milliseconds */
+ int xkb_type; /* XKB event minor code */
+ unsigned int device; /* device ID */
+} XkbAnyEvent;
+
+typedef struct _XkbNewKeyboardNotify {
+ int type; /* XkbAnyEvent */
+ unsigned long serial; /* of last req processed by server */
+ Bool send_event; /* is this from a SendEvent request? */
+ Display * display; /* Display the event was read from */
+ Time time; /* milliseconds */
+ int xkb_type; /* XkbNewKeyboardNotify */
+ int device; /* device ID */
+ int old_device; /* device ID of previous keyboard */
+ int min_key_code; /* minimum key code */
+ int max_key_code; /* maximum key code */
+ int old_min_key_code;/* min key code of previous kbd */
+ int old_max_key_code;/* max key code of previous kbd */
+ unsigned int changed; /* changed aspects of the keyboard */
+ char req_major; /* major and minor opcode of req */
+ char req_minor; /* that caused change, if applicable */
+} XkbNewKeyboardNotifyEvent;
+
+typedef struct _XkbMapNotifyEvent {
+ int type; /* XkbAnyEvent */
+ unsigned long serial; /* of last req processed by server */
+ Bool send_event; /* is this from a SendEvent request */
+ Display * display; /* Display the event was read from */
+ Time time; /* milliseconds */
+ int xkb_type; /* XkbMapNotify */
+ int device; /* device ID */
+ unsigned int changed; /* fields which have been changed */
+ unsigned int flags; /* reserved */
+ int first_type; /* first changed key type */
+ int num_types; /* number of changed key types */
+ KeyCode min_key_code;
+ KeyCode max_key_code;
+ KeyCode first_key_sym;
+ KeyCode first_key_act;
+ KeyCode first_key_behavior;
+ KeyCode first_key_explicit;
+ KeyCode first_modmap_key;
+ KeyCode first_vmodmap_key;
+ int num_key_syms;
+ int num_key_acts;
+ int num_key_behaviors;
+ int num_key_explicit;
+ int num_modmap_keys;
+ int num_vmodmap_keys;
+ unsigned int vmods; /* mask of changed virtual mods */
+} XkbMapNotifyEvent;
+
+typedef struct _XkbStateNotifyEvent {
+ int type; /* XkbAnyEvent */
+ unsigned long serial; /* # of last req processed by server */
+ Bool send_event; /* is this from a SendEvent request? */
+ Display * display; /* Display the event was read from */
+ Time time; /* milliseconds */
+ int xkb_type; /* XkbStateNotify */
+ int device; /* device ID */
+ unsigned int changed; /* mask of changed state components */
+ int group; /* keyboard group */
+ int base_group; /* base keyboard group */
+ int latched_group; /* latched keyboard group */
+ int locked_group; /* locked keyboard group */
+ unsigned int mods; /* modifier state */
+ unsigned int base_mods; /* base modifier state */
+ unsigned int latched_mods; /* latched modifiers */
+ unsigned int locked_mods; /* locked modifiers */
+ int compat_state; /* compatibility state */
+ unsigned char grab_mods; /* mods used for grabs */
+ unsigned char compat_grab_mods;/* grab mods for non-XKB clients */
+ unsigned char lookup_mods; /* mods sent to clients */
+ unsigned char compat_lookup_mods; /* mods sent to non-XKB clients */
+ int ptr_buttons; /* pointer button state */
+ KeyCode keycode; /* keycode that caused the change */
+ char event_type; /* KeyPress or KeyRelease */
+ char req_major; /* Major opcode of request */
+ char req_minor; /* Minor opcode of request */
+} XkbStateNotifyEvent;
+
+typedef struct _XkbControlsNotify {
+ int type; /* XkbAnyEvent */
+ unsigned long serial; /* of last req processed by server */
+ Bool send_event; /* is this from a SendEvent request? */
+ Display * display; /* Display the event was read from */
+ Time time; /* milliseconds */
+ int xkb_type; /* XkbControlsNotify */
+ int device; /* device ID */
+ unsigned int changed_ctrls; /* controls with changed sub-values */
+ unsigned int enabled_ctrls; /* controls currently enabled */
+ unsigned int enabled_ctrl_changes;/* controls just {en,dis}abled */
+ int num_groups; /* total groups on keyboard */
+ KeyCode keycode; /* key that caused change or 0 */
+ char event_type; /* type of event that caused change */
+ char req_major; /* if keycode==0, major and minor */
+ char req_minor; /* opcode of req that caused change */
+} XkbControlsNotifyEvent;
+
+typedef struct _XkbIndicatorNotify {
+ int type; /* XkbAnyEvent */
+ unsigned long serial; /* of last req processed by server */
+ Bool send_event; /* is this from a SendEvent request? */
+ Display * display; /* Display the event was read from */
+ Time time; /* milliseconds */
+ int xkb_type; /* XkbIndicatorNotify */
+ int device; /* device ID */
+ unsigned int changed; /* indicators with new state or map */
+ unsigned int state; /* current state of all indicators */
+} XkbIndicatorNotifyEvent;
+
+typedef struct _XkbNamesNotify {
+ int type; /* XkbAnyEvent */
+ unsigned long serial; /* of last req processed by server */
+ Bool send_event; /* is this from a SendEvent request? */
+ Display * display; /* Display the event was read from */
+ Time time; /* milliseconds */
+ int xkb_type; /* XkbNamesNotify */
+ int device; /* device ID */
+ unsigned int changed; /* names that have changed */
+ int first_type; /* first key type with new name */
+ int num_types; /* number of key types with new names */
+ int first_lvl; /* first key type new new level names */
+ int num_lvls; /* # of key types w/new level names */
+ int num_aliases; /* total number of key aliases*/
+ int num_radio_groups;/* total number of radio groups */
+ unsigned int changed_vmods; /* virtual modifiers with new names */
+ unsigned int changed_groups; /* groups with new names */
+ unsigned int changed_indicators;/* indicators with new names */
+ int first_key; /* first key with new name */
+ int num_keys; /* number of keys with new names */
+} XkbNamesNotifyEvent;
+
+typedef struct _XkbCompatMapNotify {
+ int type; /* XkbAnyEvent */
+ unsigned long serial; /* of last req processed by server */
+ Bool send_event; /* is this from a SendEvent request? */
+ Display * display; /* Display the event was read from */
+ Time time; /* milliseconds */
+ int xkb_type; /* XkbCompatMapNotify */
+ int device; /* device ID */
+ unsigned int changed_groups; /* groups with new compat maps */
+ int first_si; /* first new symbol interp */
+ int num_si; /* number of new symbol interps */
+ int num_total_si; /* total # of symbol interps */
+} XkbCompatMapNotifyEvent;
+
+typedef struct _XkbBellNotify {
+ int type; /* XkbAnyEvent */
+ unsigned long serial; /* of last req processed by server */
+ Bool send_event; /* is this from a SendEvent request? */
+ Display * display; /* Display the event was read from */
+ Time time; /* milliseconds */
+ int xkb_type; /* XkbBellNotify */
+ int device; /* device ID */
+ int percent; /* requested volume as a % of maximum */
+ int pitch; /* requested pitch in Hz */
+ int duration; /* requested duration in useconds */
+ int bell_class; /* (input extension) feedback class */
+ int bell_id; /* (input extension) ID of feedback */
+ Atom name; /* "name" of requested bell */
+ Window window; /* window associated with event */
+ Bool event_only; /* "event only" requested */
+} XkbBellNotifyEvent;
+
+typedef struct _XkbActionMessage {
+ int type; /* XkbAnyEvent */
+ unsigned long serial; /* of last req processed by server */
+ Bool send_event; /* is this from a SendEvent request? */
+ Display * display; /* Display the event was read from */
+ Time time; /* milliseconds */
+ int xkb_type; /* XkbActionMessage */
+ int device; /* device ID */
+ KeyCode keycode; /* key that generated the event */
+ Bool press; /* true if act caused by key press */
+ Bool key_event_follows;/* true if key event also generated */
+ int group; /* effective group */
+ unsigned int mods; /* effective mods */
+ char message[XkbActionMessageLength+1];
+ /* message -- leave space for NUL */
+} XkbActionMessageEvent;
+
+typedef struct _XkbAccessXNotify {
+ int type; /* XkbAnyEvent */
+ unsigned long serial; /* of last req processed by server */
+ Bool send_event; /* is this from a SendEvent request? */
+ Display * display; /* Display the event was read from */
+ Time time; /* milliseconds */
+ int xkb_type; /* XkbAccessXNotify */
+ int device; /* device ID */
+ int detail; /* XkbAXN_* */
+ int keycode; /* key of event */
+ int sk_delay; /* current slow keys delay */
+ int debounce_delay; /* current debounce delay */
+} XkbAccessXNotifyEvent;
+
+typedef struct _XkbExtensionDeviceNotify {
+ int type; /* XkbAnyEvent */
+ unsigned long serial; /* of last req processed by server */
+ Bool send_event; /* is this from a SendEvent request? */
+ Display * display; /* Display the event was read from */
+ Time time; /* milliseconds */
+ int xkb_type; /* XkbExtensionDeviceNotify */
+ int device; /* device ID */
+ unsigned int reason; /* reason for the event */
+ unsigned int supported; /* mask of supported features */
+ unsigned int unsupported; /* mask of unsupported features */
+ /* that some app tried to use */
+ int first_btn; /* first button that changed */
+ int num_btns; /* range of buttons changed */
+ unsigned int leds_defined; /* indicators with names or maps */
+ unsigned int led_state; /* current state of the indicators */
+ int led_class; /* feedback class for led changes */
+ int led_id; /* feedback id for led changes */
+} XkbExtensionDeviceNotifyEvent;
+
+typedef union _XkbEvent {
+ int type;
+ XkbAnyEvent any;
+ XkbNewKeyboardNotifyEvent new_kbd;
+ XkbMapNotifyEvent map;
+ XkbStateNotifyEvent state;
+ XkbControlsNotifyEvent ctrls;
+ XkbIndicatorNotifyEvent indicators;
+ XkbNamesNotifyEvent names;
+ XkbCompatMapNotifyEvent compat;
+ XkbBellNotifyEvent bell;
+ XkbActionMessageEvent message;
+ XkbAccessXNotifyEvent accessx;
+ XkbExtensionDeviceNotifyEvent device;
+ XEvent core;
+} XkbEvent;
+
+typedef struct _XkbKbdDpyState XkbKbdDpyStateRec,*XkbKbdDpyStatePtr;
+
+ /* XkbOpenDisplay error codes */
+#define XkbOD_Success 0
+#define XkbOD_BadLibraryVersion 1
+#define XkbOD_ConnectionRefused 2
+#define XkbOD_NonXkbServer 3
+#define XkbOD_BadServerVersion 4
+
+ /* Values for XlibFlags */
+#define XkbLC_ForceLatin1Lookup (1<<0)
+#define XkbLC_ConsumeLookupMods (1<<1)
+#define XkbLC_AlwaysConsumeShiftAndLock (1<<2)
+#define XkbLC_IgnoreNewKeyboards (1<<3)
+#define XkbLC_ControlFallback (1<<4)
+#define XkbLC_ConsumeKeysOnComposeFail (1<<29)
+#define XkbLC_ComposeLED (1<<30)
+#define XkbLC_BeepOnComposeFail (1<<31)
+
+#define XkbLC_AllComposeControls (0xc0000000)
+#define XkbLC_AllControls (0xc000001f)
+
+_XFUNCPROTOBEGIN
+
+extern Bool XkbIgnoreExtension(
+ Bool /* ignore */
+);
+
+extern Display *XkbOpenDisplay(
+ char * /* name */,
+ int * /* ev_rtrn */,
+ int * /* err_rtrn */,
+ int * /* major_rtrn */,
+ int * /* minor_rtrn */,
+ int * /* reason */
+);
+
+extern Bool XkbQueryExtension(
+ Display * /* dpy */,
+ int * /* opcodeReturn */,
+ int * /* eventBaseReturn */,
+ int * /* errorBaseReturn */,
+ int * /* majorRtrn */,
+ int * /* minorRtrn */
+);
+
+extern Bool XkbUseExtension(
+ Display * /* dpy */,
+ int * /* major_rtrn */,
+ int * /* minor_rtrn */
+);
+
+extern Bool XkbLibraryVersion(
+ int * /* libMajorRtrn */,
+ int * /* libMinorRtrn */
+);
+
+extern unsigned int XkbSetXlibControls(
+ Display* /* dpy */,
+ unsigned int /* affect */,
+ unsigned int /* values */
+);
+
+extern unsigned int XkbGetXlibControls(
+ Display* /* dpy */
+);
+
+extern unsigned int XkbXlibControlsImplemented(void);
+
+typedef Atom (*XkbInternAtomFunc)(
+ Display * /* dpy */,
+ _Xconst char * /* name */,
+ Bool /* only_if_exists */
+);
+
+typedef char * (*XkbGetAtomNameFunc)(
+ Display * /* dpy */,
+ Atom /* atom */
+);
+
+extern void XkbSetAtomFuncs(
+ XkbInternAtomFunc /* getAtom */,
+ XkbGetAtomNameFunc /* getName */
+);
+
+extern KeySym XkbKeycodeToKeysym(
+ Display * /* dpy */,
+#if NeedWidePrototypes
+ unsigned int /* kc */,
+#else
+ KeyCode /* kc */,
+#endif
+ int /* group */,
+ int /* level */
+);
+
+extern unsigned int XkbKeysymToModifiers(
+ Display * /* dpy */,
+ KeySym /* ks */
+);
+
+extern Bool XkbLookupKeySym(
+ Display * /* dpy */,
+ KeyCode /* keycode */,
+ unsigned int /* modifiers */,
+ unsigned int * /* modifiers_return */,
+ KeySym * /* keysym_return */
+);
+
+extern int XkbLookupKeyBinding(
+ Display * /* dpy */,
+ KeySym /* sym_rtrn */,
+ unsigned int /* mods */,
+ char * /* buffer */,
+ int /* nbytes */,
+ int * /* extra_rtrn */
+);
+
+extern Bool XkbTranslateKeyCode(
+ XkbDescPtr /* xkb */,
+ KeyCode /* keycode */,
+ unsigned int /* modifiers */,
+ unsigned int * /* modifiers_return */,
+ KeySym * /* keysym_return */
+);
+
+extern int XkbTranslateKeySym(
+ Display * /* dpy */,
+ register KeySym * /* sym_return */,
+ unsigned int /* modifiers */,
+ char * /* buffer */,
+ int /* nbytes */,
+ int * /* extra_rtrn */
+);
+
+extern Bool XkbSetAutoRepeatRate(
+ Display * /* dpy */,
+ unsigned int /* deviceSpec */,
+ unsigned int /* delay */,
+ unsigned int /* interval */
+);
+
+extern Bool XkbGetAutoRepeatRate(
+ Display * /* dpy */,
+ unsigned int /* deviceSpec */,
+ unsigned int * /* delayRtrn */,
+ unsigned int * /* intervalRtrn */
+);
+
+extern Bool XkbChangeEnabledControls(
+ Display * /* dpy */,
+ unsigned int /* deviceSpec */,
+ unsigned int /* affect */,
+ unsigned int /* values */
+);
+
+extern Bool XkbDeviceBell(
+ Display * /* dpy */,
+ Window /* win */,
+ int /* deviceSpec */,
+ int /* bellClass */,
+ int /* bellID */,
+ int /* percent */,
+ Atom /* name */
+);
+
+extern Bool XkbForceDeviceBell(
+ Display * /* dpy */,
+ int /* deviceSpec */,
+ int /* bellClass */,
+ int /* bellID */,
+ int /* percent */
+);
+
+extern Bool XkbDeviceBellEvent(
+ Display * /* dpy */,
+ Window /* win */,
+ int /* deviceSpec */,
+ int /* bellClass */,
+ int /* bellID */,
+ int /* percent */,
+ Atom /* name */
+);
+
+extern Bool XkbBell(
+ Display * /* dpy */,
+ Window /* win */,
+ int /* percent */,
+ Atom /* name */
+);
+
+extern Bool XkbForceBell(
+ Display * /* dpy */,
+ int /* percent */
+);
+
+extern Bool XkbBellEvent(
+ Display * /* dpy */,
+ Window /* win */,
+ int /* percent */,
+ Atom /* name */
+);
+
+extern Bool XkbSelectEvents(
+ Display * /* dpy */,
+ unsigned int /* deviceID */,
+ unsigned int /* affect */,
+ unsigned int /* values */
+);
+
+extern Bool XkbSelectEventDetails(
+ Display * /* dpy */,
+ unsigned int /* deviceID */,
+ unsigned int /* eventType */,
+ unsigned long /* affect */,
+ unsigned long /* details */
+);
+
+extern void XkbNoteMapChanges(
+ XkbMapChangesPtr /* old */,
+ XkbMapNotifyEvent * /* new */,
+ unsigned int /* wanted */
+);
+
+extern void XkbNoteNameChanges(
+ XkbNameChangesPtr /* old */,
+ XkbNamesNotifyEvent * /* new */,
+ unsigned int /* wanted */
+);
+
+extern Status XkbGetIndicatorState(
+ Display * /* dpy */,
+ unsigned int /* deviceSpec */,
+ unsigned int * /* pStateRtrn */
+);
+
+extern Status XkbGetDeviceIndicatorState(
+ Display * /* dpy */,
+ unsigned int /* deviceSpec */,
+ unsigned int /* ledClass */,
+ unsigned int /* ledID */,
+ unsigned int * /* pStateRtrn */
+);
+
+extern Status XkbGetIndicatorMap(
+ Display * /* dpy */,
+ unsigned long /* which */,
+ XkbDescPtr /* desc */
+);
+
+extern Bool XkbSetIndicatorMap(
+ Display * /* dpy */,
+ unsigned long /* which */,
+ XkbDescPtr /* desc */
+);
+
+#define XkbNoteIndicatorMapChanges(o,n,w) \
+ ((o)->map_changes|=((n)->map_changes&(w)))
+#define XkbNoteIndicatorStateChanges(o,n,w)\
+ ((o)->state_changes|=((n)->state_changes&(w)))
+#define XkbGetIndicatorMapChanges(d,x,c) \
+ (XkbGetIndicatorMap((d),(c)->map_changes,x))
+#define XkbChangeIndicatorMaps(d,x,c) \
+ (XkbSetIndicatorMap((d),(c)->map_changes,x))
+
+extern Bool XkbGetNamedIndicator(
+ Display * /* dpy */,
+ Atom /* name */,
+ int * /* pNdxRtrn */,
+ Bool * /* pStateRtrn */,
+ XkbIndicatorMapPtr /* pMapRtrn */,
+ Bool * /* pRealRtrn */
+);
+
+extern Bool XkbGetNamedDeviceIndicator(
+ Display * /* dpy */,
+ unsigned int /* deviceSpec */,
+ unsigned int /* ledClass */,
+ unsigned int /* ledID */,
+ Atom /* name */,
+ int * /* pNdxRtrn */,
+ Bool * /* pStateRtrn */,
+ XkbIndicatorMapPtr /* pMapRtrn */,
+ Bool * /* pRealRtrn */
+);
+
+extern Bool XkbSetNamedIndicator(
+ Display * /* dpy */,
+ Atom /* name */,
+ Bool /* changeState */,
+ Bool /* state */,
+ Bool /* createNewMap */,
+ XkbIndicatorMapPtr /* pMap */
+);
+
+extern Bool XkbSetNamedDeviceIndicator(
+ Display * /* dpy */,
+ unsigned int /* deviceSpec */,
+ unsigned int /* ledClass */,
+ unsigned int /* ledID */,
+ Atom /* name */,
+ Bool /* changeState */,
+ Bool /* state */,
+ Bool /* createNewMap */,
+ XkbIndicatorMapPtr /* pMap */
+);
+
+extern Bool XkbLockModifiers(
+ Display * /* dpy */,
+ unsigned int /* deviceSpec */,
+ unsigned int /* affect */,
+ unsigned int /* values */
+);
+
+extern Bool XkbLatchModifiers(
+ Display * /* dpy */,
+ unsigned int /* deviceSpec */,
+ unsigned int /* affect */,
+ unsigned int /* values */
+);
+
+extern Bool XkbLockGroup(
+ Display * /* dpy */,
+ unsigned int /* deviceSpec */,
+ unsigned int /* group */
+);
+
+extern Bool XkbLatchGroup(
+ Display * /* dpy */,
+ unsigned int /* deviceSpec */,
+ unsigned int /* group */
+);
+
+extern Bool XkbSetServerInternalMods(
+ Display * /* dpy */,
+ unsigned int /* deviceSpec */,
+ unsigned int /* affectReal */,
+ unsigned int /* realValues */,
+ unsigned int /* affectVirtual */,
+ unsigned int /* virtualValues */
+);
+
+extern Bool XkbSetIgnoreLockMods(
+ Display * /* dpy */,
+ unsigned int /* deviceSpec */,
+ unsigned int /* affectReal */,
+ unsigned int /* realValues */,
+ unsigned int /* affectVirtual */,
+ unsigned int /* virtualValues */
+);
+
+
+extern Bool XkbVirtualModsToReal(
+ XkbDescPtr /* xkb */,
+ unsigned int /* virtual_mask */,
+ unsigned int * /* mask_rtrn */
+);
+
+extern Bool XkbComputeEffectiveMap(
+ XkbDescPtr /* xkb */,
+ XkbKeyTypePtr /* type */,
+ unsigned char * /* map_rtrn */
+);
+
+extern Status XkbInitCanonicalKeyTypes(
+ XkbDescPtr /* xkb */,
+ unsigned int /* which */,
+ int /* keypadVMod */
+);
+
+extern XkbDescPtr XkbAllocKeyboard(
+ void
+);
+
+extern void XkbFreeKeyboard(
+ XkbDescPtr /* xkb */,
+ unsigned int /* which */,
+ Bool /* freeDesc */
+);
+
+extern Status XkbAllocClientMap(
+ XkbDescPtr /* xkb */,
+ unsigned int /* which */,
+ unsigned int /* nTypes */
+);
+
+extern Status XkbAllocServerMap(
+ XkbDescPtr /* xkb */,
+ unsigned int /* which */,
+ unsigned int /* nActions */
+);
+
+extern void XkbFreeClientMap(
+ XkbDescPtr /* xkb */,
+ unsigned int /* what */,
+ Bool /* freeMap */
+);
+
+extern void XkbFreeServerMap(
+ XkbDescPtr /* xkb */,
+ unsigned int /* what */,
+ Bool /* freeMap */
+);
+
+extern XkbKeyTypePtr XkbAddKeyType(
+ XkbDescPtr /* xkb */,
+ Atom /* name */,
+ int /* map_count */,
+ Bool /* want_preserve */,
+ int /* num_lvls */
+);
+
+extern Status XkbAllocIndicatorMaps(
+ XkbDescPtr /* xkb */
+);
+
+extern void XkbFreeIndicatorMaps(
+ XkbDescPtr /* xkb */
+);
+
+extern XkbDescPtr XkbGetMap(
+ Display * /* dpy */,
+ unsigned int /* which */,
+ unsigned int /* deviceSpec */
+);
+
+extern Status XkbGetUpdatedMap(
+ Display * /* dpy */,
+ unsigned int /* which */,
+ XkbDescPtr /* desc */
+);
+
+extern Status XkbGetMapChanges(
+ Display * /* dpy */,
+ XkbDescPtr /* xkb */,
+ XkbMapChangesPtr /* changes */
+);
+
+
+extern Status XkbRefreshKeyboardMapping(
+ XkbMapNotifyEvent * /* event */
+);
+
+extern Status XkbGetKeyTypes(
+ Display * /* dpy */,
+ unsigned int /* first */,
+ unsigned int /* num */,
+ XkbDescPtr /* xkb */
+);
+
+extern Status XkbGetKeySyms(
+ Display * /* dpy */,
+ unsigned int /* first */,
+ unsigned int /* num */,
+ XkbDescPtr /* xkb */
+);
+
+extern Status XkbGetKeyActions(
+ Display * /* dpy */,
+ unsigned int /* first */,
+ unsigned int /* num */,
+ XkbDescPtr /* xkb */
+);
+
+extern Status XkbGetKeyBehaviors(
+ Display * /* dpy */,
+ unsigned int /* firstKey */,
+ unsigned int /* nKeys */,
+ XkbDescPtr /* desc */
+);
+
+extern Status XkbGetVirtualMods(
+ Display * /* dpy */,
+ unsigned int /* which */,
+ XkbDescPtr /* desc */
+);
+
+extern Status XkbGetKeyExplicitComponents(
+ Display * /* dpy */,
+ unsigned int /* firstKey */,
+ unsigned int /* nKeys */,
+ XkbDescPtr /* desc */
+);
+
+extern Status XkbGetKeyModifierMap(
+ Display * /* dpy */,
+ unsigned int /* firstKey */,
+ unsigned int /* nKeys */,
+ XkbDescPtr /* desc */
+);
+
+extern Status XkbGetKeyVirtualModMap(
+ Display * /* dpy */,
+ unsigned int /* first */,
+ unsigned int /* num */,
+ XkbDescPtr /* xkb */
+);
+
+extern Status XkbAllocControls(
+ XkbDescPtr /* xkb */,
+ unsigned int /* which*/
+);
+
+extern void XkbFreeControls(
+ XkbDescPtr /* xkb */,
+ unsigned int /* which */,
+ Bool /* freeMap */
+);
+
+extern Status XkbGetControls(
+ Display * /* dpy */,
+ unsigned long /* which */,
+ XkbDescPtr /* desc */
+);
+
+extern Bool XkbSetControls(
+ Display * /* dpy */,
+ unsigned long /* which */,
+ XkbDescPtr /* desc */
+);
+
+extern void XkbNoteControlsChanges(
+ XkbControlsChangesPtr /* old */,
+ XkbControlsNotifyEvent * /* new */,
+ unsigned int /* wanted */
+);
+
+#define XkbGetControlsChanges(d,x,c) XkbGetControls(d,(c)->changed_ctrls,x)
+#define XkbChangeControls(d,x,c) XkbSetControls(d,(c)->changed_ctrls,x)
+
+extern Status XkbAllocCompatMap(
+ XkbDescPtr /* xkb */,
+ unsigned int /* which */,
+ unsigned int /* nInterpret */
+);
+
+extern void XkbFreeCompatMap(
+ XkbDescPtr /* xkb */,
+ unsigned int /* which */,
+ Bool /* freeMap */
+);
+
+extern Status XkbGetCompatMap(
+ Display * /* dpy */,
+ unsigned int /* which */,
+ XkbDescPtr /* xkb */
+);
+
+extern Bool XkbSetCompatMap(
+ Display * /* dpy */,
+ unsigned int /* which */,
+ XkbDescPtr /* xkb */,
+ Bool /* updateActions */
+);
+
+extern XkbSymInterpretPtr XkbAddSymInterpret(
+ XkbDescPtr /* xkb */,
+ XkbSymInterpretPtr /* si */,
+ Bool /* updateMap */,
+ XkbChangesPtr /* changes */
+);
+
+extern Status XkbAllocNames(
+ XkbDescPtr /* xkb */,
+ unsigned int /* which */,
+ int /* nTotalRG */,
+ int /* nTotalAliases */
+);
+
+extern Status XkbGetNames(
+ Display * /* dpy */,
+ unsigned int /* which */,
+ XkbDescPtr /* desc */
+);
+
+extern Bool XkbSetNames(
+ Display * /* dpy */,
+ unsigned int /* which */,
+ unsigned int /* firstType */,
+ unsigned int /* nTypes */,
+ XkbDescPtr /* desc */
+);
+
+extern Bool XkbChangeNames(
+ Display * /* dpy */,
+ XkbDescPtr /* xkb */,
+ XkbNameChangesPtr /* changes */
+);
+
+extern void XkbFreeNames(
+ XkbDescPtr /* xkb */,
+ unsigned int /* which */,
+ Bool /* freeMap */
+);
+
+
+extern Status XkbGetState(
+ Display * /* dpy */,
+ unsigned int /* deviceSpec */,
+ XkbStatePtr /* rtrnState */
+);
+
+extern Bool XkbSetMap(
+ Display * /* dpy */,
+ unsigned int /* which */,
+ XkbDescPtr /* desc */
+);
+
+extern Bool XkbChangeMap(
+ Display* /* dpy */,
+ XkbDescPtr /* desc */,
+ XkbMapChangesPtr /* changes */
+);
+
+extern Bool XkbSetDetectableAutoRepeat(
+ Display * /* dpy */,
+ Bool /* detectable */,
+ Bool * /* supported */
+);
+
+extern Bool XkbGetDetectableAutoRepeat(
+ Display * /* dpy */,
+ Bool * /* supported */
+);
+
+extern Bool XkbSetAutoResetControls(
+ Display * /* dpy */,
+ unsigned int /* changes */,
+ unsigned int * /* auto_ctrls */,
+ unsigned int * /* auto_values */
+);
+
+extern Bool XkbGetAutoResetControls(
+ Display * /* dpy */,
+ unsigned int * /* auto_ctrls */,
+ unsigned int * /* auto_ctrl_values */
+);
+
+extern Bool XkbSetPerClientControls(
+ Display * /* dpy */,
+ unsigned int /* change */,
+ unsigned int * /* values */
+);
+
+extern Bool XkbGetPerClientControls(
+ Display * /* dpy */,
+ unsigned int * /* ctrls */
+);
+
+extern Status XkbCopyKeyType(
+ XkbKeyTypePtr /* from */,
+ XkbKeyTypePtr /* into */
+);
+
+extern Status XkbCopyKeyTypes(
+ XkbKeyTypePtr /* from */,
+ XkbKeyTypePtr /* into */,
+ int /* num_types */
+);
+
+extern Status XkbResizeKeyType(
+ XkbDescPtr /* xkb */,
+ int /* type_ndx */,
+ int /* map_count */,
+ Bool /* want_preserve */,
+ int /* new_num_lvls */
+);
+
+extern KeySym *XkbResizeKeySyms(
+ XkbDescPtr /* desc */,
+ int /* forKey */,
+ int /* symsNeeded */
+);
+
+extern XkbAction *XkbResizeKeyActions(
+ XkbDescPtr /* desc */,
+ int /* forKey */,
+ int /* actsNeeded */
+);
+
+extern Status XkbChangeTypesOfKey(
+ XkbDescPtr /* xkb */,
+ int /* key */,
+ int /* num_groups */,
+ unsigned int /* groups */,
+ int * /* newTypes */,
+ XkbMapChangesPtr /* pChanges */
+);
+
+extern Status XkbChangeKeycodeRange(
+ XkbDescPtr /* xkb */,
+ int /* minKC */,
+ int /* maxKC */,
+ XkbChangesPtr /* changes */
+);
+
+/***====================================================================***/
+
+extern XkbComponentListPtr XkbListComponents(
+ Display * /* dpy */,
+ unsigned int /* deviceSpec */,
+ XkbComponentNamesPtr /* ptrns */,
+ int * /* max_inout */
+);
+
+extern void XkbFreeComponentList(
+ XkbComponentListPtr /* list */
+);
+
+extern XkbDescPtr XkbGetKeyboard(
+ Display * /* dpy */,
+ unsigned int /* which */,
+ unsigned int /* deviceSpec */
+);
+
+extern XkbDescPtr XkbGetKeyboardByName(
+ Display * /* dpy */,
+ unsigned int /* deviceSpec */,
+ XkbComponentNamesPtr /* names */,
+ unsigned int /* want */,
+ unsigned int /* need */,
+ Bool /* load */
+);
+
+/***====================================================================***/
+
+extern int XkbKeyTypesForCoreSymbols( /* returns # of groups */
+ XkbDescPtr /* xkb */, /* keyboard device */
+ int /* map_width */, /* width of core KeySym array */
+ KeySym * /* core_syms */, /* always mapWidth symbols */
+ unsigned int /* protected */, /* explicit key types */
+ int * /* types_inout */, /* always four type indices */
+ KeySym * /* xkb_syms_rtrn */ /* must have enough space */
+);
+
+extern Bool XkbApplyCompatMapToKey( /* False only on error */
+ XkbDescPtr /* xkb */, /* keymap to be edited */
+ KeyCode /* key */, /* key to be updated */
+ XkbChangesPtr /* changes */ /* resulting changes to map */
+);
+
+extern Bool XkbUpdateMapFromCore( /* False only on error */
+ XkbDescPtr /* xkb */, /* XKB keyboard to be edited */
+ KeyCode /* first_key */, /* first changed key */
+ int /* num_keys */, /* number of changed keys */
+ int /* map_width */, /* width of core keymap */
+ KeySym * /* core_keysyms */, /* symbols from core keymap */
+ XkbChangesPtr /* changes */ /* resulting changes */
+);
+
+/***====================================================================***/
+
+extern XkbDeviceLedInfoPtr XkbAddDeviceLedInfo(
+ XkbDeviceInfoPtr /* devi */,
+ unsigned int /* ledClass */,
+ unsigned int /* ledId */
+);
+
+extern Status XkbResizeDeviceButtonActions(
+ XkbDeviceInfoPtr /* devi */,
+ unsigned int /* newTotal */
+);
+
+extern XkbDeviceInfoPtr XkbAllocDeviceInfo(
+ unsigned int /* deviceSpec */,
+ unsigned int /* nButtons */,
+ unsigned int /* szLeds */
+);
+
+extern void XkbFreeDeviceInfo(
+ XkbDeviceInfoPtr /* devi */,
+ unsigned int /* which */,
+ Bool /* freeDevI */
+);
+
+extern void XkbNoteDeviceChanges(
+ XkbDeviceChangesPtr /* old */,
+ XkbExtensionDeviceNotifyEvent * /* new */,
+ unsigned int /* wanted */
+);
+
+extern XkbDeviceInfoPtr XkbGetDeviceInfo(
+ Display * /* dpy */,
+ unsigned int /* which */,
+ unsigned int /* deviceSpec */,
+ unsigned int /* ledClass */,
+ unsigned int /* ledID */
+);
+
+extern Status XkbGetDeviceInfoChanges(
+ Display * /* dpy */,
+ XkbDeviceInfoPtr /* devi */,
+ XkbDeviceChangesPtr /* changes */
+);
+
+extern Status XkbGetDeviceButtonActions(
+ Display * /* dpy */,
+ XkbDeviceInfoPtr /* devi */,
+ Bool /* all */,
+ unsigned int /* first */,
+ unsigned int /* nBtns */
+);
+
+extern Status XkbGetDeviceLedInfo(
+ Display * /* dpy */,
+ XkbDeviceInfoPtr /* devi */,
+ unsigned int /* ledClass (class, XIDflt, XIAll) */,
+ unsigned int /* ledId (id, XIDflt, XIAll) */,
+ unsigned int /* which (XkbXI_Indicator{Names,Map}Mask */
+);
+
+extern Bool XkbSetDeviceInfo(
+ Display * /* dpy */,
+ unsigned int /* which */,
+ XkbDeviceInfoPtr /* devi */
+);
+
+extern Bool XkbChangeDeviceInfo(
+ Display* /* dpy */,
+ XkbDeviceInfoPtr /* desc */,
+ XkbDeviceChangesPtr /* changes */
+);
+
+extern Bool XkbSetDeviceLedInfo(
+ Display * /* dpy */,
+ XkbDeviceInfoPtr /* devi */,
+ unsigned int /* ledClass */,
+ unsigned int /* ledID */,
+ unsigned int /* which */
+);
+
+extern Bool XkbSetDeviceButtonActions(
+ Display * /* dpy */,
+ XkbDeviceInfoPtr /* devi */,
+ unsigned int /* first */,
+ unsigned int /* nBtns */
+);
+
+/***====================================================================***/
+
+extern char XkbToControl(
+ char /* c */
+);
+
+/***====================================================================***/
+
+extern Bool XkbSetDebuggingFlags(
+ Display * /* dpy */,
+ unsigned int /* mask */,
+ unsigned int /* flags */,
+ char * /* msg */,
+ unsigned int /* ctrls_mask */,
+ unsigned int /* ctrls */,
+ unsigned int * /* rtrn_flags */,
+ unsigned int * /* rtrn_ctrls */
+);
+
+extern Bool XkbApplyVirtualModChanges(
+ XkbDescPtr /* xkb */,
+ unsigned int /* changed */,
+ XkbChangesPtr /* changes */
+);
+
+extern Bool XkbUpdateActionVirtualMods(
+ XkbDescPtr /* xkb */,
+ XkbAction * /* act */,
+ unsigned int /* changed */
+);
+
+extern void XkbUpdateKeyTypeVirtualMods(
+ XkbDescPtr /* xkb */,
+ XkbKeyTypePtr /* type */,
+ unsigned int /* changed */,
+ XkbChangesPtr /* changes */
+);
+
+_XFUNCPROTOEND
+
+#endif /* _X11_XKBLIB_H_ */
diff --git a/libX11/include/X11/Xcms.h b/libX11/include/X11/Xcms.h
index 327fdc1f7..8151fd1f3 100644
--- a/libX11/include/X11/Xcms.h
+++ b/libX11/include/X11/Xcms.h
@@ -1,803 +1,803 @@
-
-/*
- * Code and supporting documentation (c) Copyright 1990 1991 Tektronix, Inc.
- * All Rights Reserved
- *
- * This file is a component of an X Window System-specific implementation
- * of Xcms based on the TekColor Color Management System. Permission is
- * hereby granted to use, copy, modify, sell, and otherwise distribute this
- * software and its documentation for any purpose and without fee, provided
- * that this copyright, permission, and disclaimer notice is reproduced in
- * all copies of this software and in supporting documentation. TekColor
- * is a trademark of Tektronix, Inc.
- *
- * Tektronix makes no representation about the suitability of this software
- * for any purpose. It is provided "as is" and with all faults.
- *
- * TEKTRONIX DISCLAIMS ALL WARRANTIES APPLICABLE TO THIS SOFTWARE,
- * INCLUDING THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE. IN NO EVENT SHALL TEKTRONIX BE LIABLE FOR ANY
- * SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER
- * RESULTING FROM LOSS OF USE, DATA, OR PROFITS, WHETHER IN AN ACTION OF
- * CONTRACT, NEGLIGENCE, OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
- * CONNECTION WITH THE USE OR THE PERFORMANCE OF THIS SOFTWARE.
- *
- *
- * DESCRIPTION
- * Public include file for X Color Management System
- */
-#ifndef _X11_XCMS_H_
-#define _X11_XCMS_H_
-
-#include <X11/Xlib.h>
-
- /*
- * XCMS Status Values
- */
-#define XcmsFailure 0
-#define XcmsSuccess 1
-#define XcmsSuccessWithCompression 2
-
- /*
- * Color Space Format ID's
- * Color Space ID's are of XcmsColorFormat type.
- *
- * bit 31
- * 0 == Device-Independent
- * 1 == Device-Dependent
- *
- * bit 30:
- * 0 == Registered with X Consortium
- * 1 == Unregistered
- */
-#define XcmsUndefinedFormat (XcmsColorFormat)0x00000000
-#define XcmsCIEXYZFormat (XcmsColorFormat)0x00000001
-#define XcmsCIEuvYFormat (XcmsColorFormat)0x00000002
-#define XcmsCIExyYFormat (XcmsColorFormat)0x00000003
-#define XcmsCIELabFormat (XcmsColorFormat)0x00000004
-#define XcmsCIELuvFormat (XcmsColorFormat)0x00000005
-#define XcmsTekHVCFormat (XcmsColorFormat)0x00000006
-#define XcmsRGBFormat (XcmsColorFormat)0x80000000
-#define XcmsRGBiFormat (XcmsColorFormat)0x80000001
-
- /*
- * State of XcmsPerScrnInfo
- */
-#define XcmsInitNone 0x00 /* no initialization attempted */
-#define XcmsInitSuccess 0x01 /* initialization successful */
-#define XcmsInitFailure 0xff /* failure, use defaults */
-
-#define DisplayOfCCC(ccc) ((ccc)->dpy)
-#define ScreenNumberOfCCC(ccc) ((ccc)->screenNumber)
-#define VisualOfCCC(ccc) ((ccc)->visual)
-#define ClientWhitePointOfCCC(ccc) (&(ccc)->clientWhitePt)
-#define ScreenWhitePointOfCCC(ccc) (&(ccc)->pPerScrnInfo->screenWhitePt)
-#define FunctionSetOfCCC(ccc) ((ccc)->pPerScrnInfo->functionSet)
-
-typedef unsigned long XcmsColorFormat; /* Color Space Format ID */
-
-typedef double XcmsFloat;
-
- /*
- * Device RGB
- */
-typedef struct {
- unsigned short red; /* scaled from 0x0000 to 0xffff */
- unsigned short green; /* scaled from 0x0000 to 0xffff */
- unsigned short blue; /* scaled from 0x0000 to 0xffff */
-} XcmsRGB;
-
- /*
- * RGB Intensity
- */
-typedef struct {
- XcmsFloat red; /* 0.0 - 1.0 */
- XcmsFloat green; /* 0.0 - 1.0 */
- XcmsFloat blue; /* 0.0 - 1.0 */
-} XcmsRGBi;
-
- /*
- * CIE XYZ
- */
-typedef struct {
- XcmsFloat X;
- XcmsFloat Y;
- XcmsFloat Z;
-} XcmsCIEXYZ;
-
- /*
- * CIE u'v'Y
- */
-typedef struct {
- XcmsFloat u_prime; /* 0.0 - 1.0 */
- XcmsFloat v_prime; /* 0.0 - 1.0 */
- XcmsFloat Y; /* 0.0 - 1.0 */
-} XcmsCIEuvY;
-
- /*
- * CIE xyY
- */
-typedef struct {
- XcmsFloat x; /* 0.0 - 1.0 */
- XcmsFloat y; /* 0.0 - 1.0 */
- XcmsFloat Y; /* 0.0 - 1.0 */
-} XcmsCIExyY;
-
- /*
- * CIE L*a*b*
- */
-typedef struct {
- XcmsFloat L_star; /* 0.0 - 100.0 */
- XcmsFloat a_star;
- XcmsFloat b_star;
-} XcmsCIELab;
-
- /*
- * CIE L*u*v*
- */
-typedef struct {
- XcmsFloat L_star; /* 0.0 - 100.0 */
- XcmsFloat u_star;
- XcmsFloat v_star;
-} XcmsCIELuv;
-
- /*
- * TekHVC
- */
-typedef struct {
- XcmsFloat H; /* 0.0 - 360.0 */
- XcmsFloat V; /* 0.0 - 100.0 */
- XcmsFloat C; /* 0.0 - 100.0 */
-} XcmsTekHVC;
-
- /*
- * PAD
- */
-typedef struct {
- XcmsFloat pad0;
- XcmsFloat pad1;
- XcmsFloat pad2;
- XcmsFloat pad3;
-} XcmsPad;
-
-
- /*
- * XCMS Color Structure
- */
-typedef struct {
- union {
- XcmsRGB RGB;
- XcmsRGBi RGBi;
- XcmsCIEXYZ CIEXYZ;
- XcmsCIEuvY CIEuvY;
- XcmsCIExyY CIExyY;
- XcmsCIELab CIELab;
- XcmsCIELuv CIELuv;
- XcmsTekHVC TekHVC;
- XcmsPad Pad;
- } spec; /* the color specification */
- unsigned long pixel; /* pixel value (as needed) */
- XcmsColorFormat format; /* the specification format */
-} XcmsColor;
-
-
- /*
- * XCMS Per Screen related data
- */
-
-typedef struct _XcmsPerScrnInfo {
- XcmsColor screenWhitePt; /* Screen White point */
- XPointer functionSet; /* pointer to Screen Color Characterization */
- /* Function Set structure */
- XPointer screenData; /* pointer to corresponding Screen Color*/
- /* Characterization Data */
- unsigned char state; /* XcmsInitNone, XcmsInitSuccess, XcmsInitFailure */
- char pad[3];
-} XcmsPerScrnInfo;
-
-typedef struct _XcmsCCC *XcmsCCC;
-
-typedef Status (*XcmsCompressionProc)( /* Gamut Compression Proc */
- XcmsCCC /* ccc */,
- XcmsColor* /* colors_in_out */,
- unsigned int /* ncolors */,
- unsigned int /* index */,
- Bool* /* compression_flags_return */
-);
-
-typedef Status (*XcmsWhiteAdjustProc)( /* White Point Adjust Proc */
- XcmsCCC /* ccc */,
- XcmsColor* /* initial_white_point*/,
- XcmsColor* /* target_white_point*/,
- XcmsColorFormat /* target_format */,
- XcmsColor* /* colors_in_out */,
- unsigned int /* ncolors */,
- Bool* /* compression_flags_return */
-);
-
- /*
- * XCMS Color Conversion Context
- */
-typedef struct _XcmsCCC {
- Display *dpy; /* X Display */
- int screenNumber; /* X screen number */
- Visual *visual; /* X Visual */
- XcmsColor clientWhitePt; /* Client White Point */
- XcmsCompressionProc gamutCompProc; /* Gamut Compression Function */
- XPointer gamutCompClientData; /* Gamut Comp Func Client Data */
- XcmsWhiteAdjustProc whitePtAdjProc; /* White Point Adjustment Function */
- XPointer whitePtAdjClientData; /* White Pt Adj Func Client Data */
- XcmsPerScrnInfo *pPerScrnInfo; /* pointer to per screen information */
- /* associated with the above display */
- /* screenNumber */
-} XcmsCCCRec;
-
-typedef Status (*XcmsScreenInitProc)( /* Screen Initialization Proc */
- Display* /* dpy */,
- int /* screen_number */,
- XcmsPerScrnInfo* /* screen_info */
-);
-
-typedef void (*XcmsScreenFreeProc)(
- XPointer /* screenData */
-);
-
- /*
- * Function List Pointer -- pointer to an array of function pointers.
- * The end of list is indicated by a NULL pointer.
- */
-/*
- * XXX: The use of the XcmsConversionProc type is broken. The
- * device-independent colour conversion code uses it as:
-
-typedef Status (*XcmsConversionProc)(XcmsCCC, XcmsColor *, XcmsColor *,
- unsigned int);
-
- * while the device-dependent code uses it as:
-
-typedef Status (*XcmsConversionProc)(XcmsCCC, XcmsColor *, unsigned int,
- Bool *);
-
- * Until this is reworked, it's probably best to leave it unprotoized.
- * The code works regardless.
- */
-typedef Status (*XcmsDDConversionProc)( /* using device-dependent version */
- XcmsCCC /* ccc */,
- XcmsColor* /* pcolors_in_out */,
- unsigned int /* ncolors */,
- Bool* /* pCompressed */
- );
-
-typedef Status (*XcmsDIConversionProc)( /* using device-independent version */
- XcmsCCC /* ccc */,
- XcmsColor* /* white_point */,
- XcmsColor* /* pcolors_in_out */,
- unsigned int /* ncolors */
- );
-
-typedef XcmsDIConversionProc XcmsConversionProc;
-typedef XcmsConversionProc *XcmsFuncListPtr;
-
-typedef int (*XcmsParseStringProc)( /* Color String Parsing Proc */
- char* /* color_string */,
- XcmsColor* /* color_return */
-);
-
- /*
- * Color Space -- per Color Space related data (Device-Independent
- * or Device-Dependent)
- */
-typedef struct _XcmsColorSpace {
- const char *prefix; /* Prefix of string format. */
- XcmsColorFormat id; /* Format ID number. */
- XcmsParseStringProc parseString;
- /* String format parsing function */
- XcmsFuncListPtr to_CIEXYZ; /* Pointer to an array of function */
- /* pointers such that when the */
- /* functions are executed in sequence */
- /* will convert a XcmsColor structure */
- /* from this color space to CIEXYZ */
- /* space. */
- XcmsFuncListPtr from_CIEXYZ;/* Pointer to an array of function */
- /* pointers such that when the */
- /* functions are executed in sequence */
- /* will convert a XcmsColor structure */
- /* from CIEXYZ space to this color */
- /* space. */
- int inverse_flag; /* If 1, indicates that for 0 <= i < n */
- /* where n is the number of function */
- /* pointers in the lists to_CIEXYZ */
- /* and from_CIEXYZ; for each function */
- /* to_CIEXYZ[i] its inverse function */
- /* is from_CIEXYZ[n - i]. */
-
-} XcmsColorSpace;
-
- /*
- * Screen Color Characterization Function Set -- per device class
- * color space conversion functions.
- */
-typedef struct _XcmsFunctionSet {
- XcmsColorSpace **DDColorSpaces;
- /* Pointer to an array of pointers to */
- /* Device-DEPENDENT color spaces */
- /* understood by this SCCFuncSet. */
- XcmsScreenInitProc screenInitProc;
- /* Screen initialization function that */
- /* reads Screen Color Characterization*/
- /* Data off properties on the screen's*/
- /* root window. */
- XcmsScreenFreeProc screenFreeProc;
- /* Function that frees the SCCData */
- /* structures. */
-} XcmsFunctionSet;
-
-_XFUNCPROTOBEGIN
-
-extern Status XcmsAddColorSpace (
- XcmsColorSpace* /* pColorSpace */
-);
-
-extern Status XcmsAddFunctionSet (
- XcmsFunctionSet* /* functionSet */
-);
-
-extern Status XcmsAllocColor (
- Display* /* dpy */,
- Colormap /* colormap */,
- XcmsColor* /* color_in_out */,
- XcmsColorFormat /* result_format */
-);
-
-extern Status XcmsAllocNamedColor (
- Display* /* dpy */,
- Colormap /* colormap */,
- _Xconst char* /* color_string */,
- XcmsColor* /* color_scrn_return */,
- XcmsColor* /* color_exact_return */,
- XcmsColorFormat /* result_format */
-);
-
-extern XcmsCCC XcmsCCCOfColormap (
- Display* /* dpy */,
- Colormap /* colormap */
-);
-
-extern Status XcmsCIELabClipab(
- XcmsCCC /* ccc */,
- XcmsColor* /* colors_in_out */,
- unsigned int /* ncolors */,
- unsigned int /* index */,
- Bool* /* compression_flags_return */
-);
-
-extern Status XcmsCIELabClipL(
- XcmsCCC /* ccc */,
- XcmsColor* /* colors_in_out */,
- unsigned int /* ncolors */,
- unsigned int /* index */,
- Bool* /* compression_flags_return */
-);
-
-extern Status XcmsCIELabClipLab(
- XcmsCCC /* ccc */,
- XcmsColor* /* colors_in_out */,
- unsigned int /* ncolors */,
- unsigned int /* index */,
- Bool* /* compression_flags_return */
-);
-
-extern Status XcmsCIELabQueryMaxC (
- XcmsCCC /* ccc */,
- XcmsFloat /* hue_angle */,
- XcmsFloat /* L_star */,
- XcmsColor* /* color_return */
-);
-
-extern Status XcmsCIELabQueryMaxL (
- XcmsCCC /* ccc */,
- XcmsFloat /* hue_angle */,
- XcmsFloat /* chroma */,
- XcmsColor* /* color_return */
-);
-
-extern Status XcmsCIELabQueryMaxLC (
- XcmsCCC /* ccc */,
- XcmsFloat /* hue_angle */,
- XcmsColor* /* color_return */
-);
-
-extern Status XcmsCIELabQueryMinL (
- XcmsCCC /* ccc */,
- XcmsFloat /* hue_angle */,
- XcmsFloat /* chroma */,
- XcmsColor* /* color_return */
-);
-
-extern Status XcmsCIELabToCIEXYZ (
- XcmsCCC /* ccc */,
- XcmsColor* /* white_point */,
- XcmsColor* /* colors */,
- unsigned int /* ncolors */
-);
-
-extern Status XcmsCIELabWhiteShiftColors(
- XcmsCCC /* ccc */,
- XcmsColor* /* initial_white_point*/,
- XcmsColor* /* target_white_point*/,
- XcmsColorFormat /* target_format */,
- XcmsColor* /* colors_in_out */,
- unsigned int /* ncolors */,
- Bool* /* compression_flags_return */
-);
-
-extern Status XcmsCIELuvClipL(
- XcmsCCC /* ccc */,
- XcmsColor* /* colors_in_out */,
- unsigned int /* ncolors */,
- unsigned int /* index */,
- Bool* /* compression_flags_return */
-);
-
-extern Status XcmsCIELuvClipLuv(
- XcmsCCC /* ccc */,
- XcmsColor* /* colors_in_out */,
- unsigned int /* ncolors */,
- unsigned int /* index */,
- Bool* /* compression_flags_return */
-);
-
-extern Status XcmsCIELuvClipuv(
- XcmsCCC /* ccc */,
- XcmsColor* /* colors_in_out */,
- unsigned int /* ncolors */,
- unsigned int /* index */,
- Bool* /* compression_flags_return */
-);
-
-extern Status XcmsCIELuvQueryMaxC (
- XcmsCCC /* ccc */,
- XcmsFloat /* hue_angle */,
- XcmsFloat /* L_star */,
- XcmsColor* /* color_return */
-);
-
-extern Status XcmsCIELuvQueryMaxL (
- XcmsCCC /* ccc */,
- XcmsFloat /* hue_angle */,
- XcmsFloat /* chroma */,
- XcmsColor* /* color_return */
-);
-
-extern Status XcmsCIELuvQueryMaxLC (
- XcmsCCC /* ccc */,
- XcmsFloat /* hue_angle */,
- XcmsColor* /* color_return */
-);
-
-extern Status XcmsCIELuvQueryMinL (
- XcmsCCC /* ccc */,
- XcmsFloat /* hue_angle */,
- XcmsFloat /* chroma */,
- XcmsColor* /* color_return */
-);
-
-extern Status XcmsCIELuvToCIEuvY (
- XcmsCCC /* ccc */,
- XcmsColor* /* white_point */,
- XcmsColor* /* colors */,
- unsigned int /* ncolors */
-);
-
-extern Status XcmsCIELuvWhiteShiftColors(
- XcmsCCC /* ccc */,
- XcmsColor* /* initial_white_point*/,
- XcmsColor* /* target_white_point*/,
- XcmsColorFormat /* target_format */,
- XcmsColor* /* colors_in_out */,
- unsigned int /* ncolors */,
- Bool* /* compression_flags_return */
-);
-
-extern Status XcmsCIEXYZToCIELab (
- XcmsCCC /* ccc */,
- XcmsColor* /* white_point */,
- XcmsColor* /* colors */,
- unsigned int /* ncolors */
-);
-
-extern Status XcmsCIEXYZToCIEuvY (
- XcmsCCC /* ccc */,
- XcmsColor* /* white_point */,
- XcmsColor* /* colors */,
- unsigned int /* ncolors */
-);
-
-extern Status XcmsCIEXYZToCIExyY (
- XcmsCCC /* ccc */,
- XcmsColor* /* white_point */,
- XcmsColor* /* colors */,
- unsigned int /* ncolors */
-);
-
-extern Status XcmsCIEXYZToRGBi (
- XcmsCCC /* ccc */,
- XcmsColor* /* colors */,
- unsigned int /* ncolors */,
- Bool* /* compression_flags_return */
-);
-
-extern Status XcmsCIEuvYToCIELuv (
- XcmsCCC /* ccc */,
- XcmsColor* /* white_point */,
- XcmsColor* /* colors */,
- unsigned int /* ncolors */
-);
-
-extern Status XcmsCIEuvYToCIEXYZ (
- XcmsCCC /* ccc */,
- XcmsColor* /* white_point */,
- XcmsColor* /* colors */,
- unsigned int /* ncolors */
-);
-
-extern Status XcmsCIEuvYToTekHVC (
- XcmsCCC /* ccc */,
- XcmsColor* /* white_point */,
- XcmsColor* /* colors */,
- unsigned int /* ncolors */
-);
-
-extern Status XcmsCIExyYToCIEXYZ (
- XcmsCCC /* ccc */,
- XcmsColor* /* white_point */,
- XcmsColor* /* colors */,
- unsigned int /* ncolors */
-);
-
-extern XcmsColor *XcmsClientWhitePointOfCCC (
- XcmsCCC /* ccc */
-);
-
-extern Status XcmsConvertColors (
- XcmsCCC /* ccc */,
- XcmsColor* /* colorArry_in_out */,
- unsigned int /* nColors */,
- XcmsColorFormat /* targetFormat */,
- Bool* /* compArry_return */
-);
-
-extern XcmsCCC XcmsCreateCCC (
- Display* /* dpy */,
- int /* screenNumber */,
- Visual* /* visual */,
- XcmsColor* /* clientWhitePt */,
- XcmsCompressionProc /* gamutCompProc */,
- XPointer /* gamutCompClientData */,
- XcmsWhiteAdjustProc /* whitePtAdjProc */,
- XPointer /* whitePtAdjClientData */
-);
-
-extern XcmsCCC XcmsDefaultCCC (
- Display* /* dpy */,
- int /* screenNumber */
-);
-
-extern Display *XcmsDisplayOfCCC (
- XcmsCCC /* ccc */
-);
-
-extern XcmsColorFormat XcmsFormatOfPrefix (
- char* /* prefix */
-);
-
-extern void XcmsFreeCCC (
- XcmsCCC /* ccc */
-);
-
-extern Status XcmsLookupColor (
- Display* /* dpy */,
- Colormap /* colormap */,
- _Xconst char* /* color_string */,
- XcmsColor* /* pColor_exact_in_out */,
- XcmsColor* /* pColor_scrn_in_out */,
- XcmsColorFormat /* result_format */
-);
-
-extern char *XcmsPrefixOfFormat (
- XcmsColorFormat /* id */
-);
-
-extern Status XcmsQueryBlack (
- XcmsCCC /* ccc */,
- XcmsColorFormat /* target_format */,
- XcmsColor* /* color_return */
-);
-
-extern Status XcmsQueryBlue (
- XcmsCCC /* ccc */,
- XcmsColorFormat /* target_format */,
- XcmsColor* /* color_return */
-);
-
-extern Status XcmsQueryColor (
- Display* /* dpy */,
- Colormap /* colormap */,
- XcmsColor* /* pColor_in_out */,
- XcmsColorFormat /* result_format */
-);
-
-extern Status XcmsQueryColors (
- Display* /* dpy */,
- Colormap /* colormap */,
- XcmsColor* /* colorArry_in_out */,
- unsigned int /* nColors */,
- XcmsColorFormat /* result_format */
-);
-
-extern Status XcmsQueryGreen (
- XcmsCCC /* ccc */,
- XcmsColorFormat /* target_format */,
- XcmsColor* /* color_return */
-);
-
-extern Status XcmsQueryRed (
- XcmsCCC /* ccc */,
- XcmsColorFormat /* target_format */,
- XcmsColor* /* color_return */
-);
-
-extern Status XcmsQueryWhite (
- XcmsCCC /* ccc */,
- XcmsColorFormat /* target_format */,
- XcmsColor* /* color_return */
-);
-
-extern Status XcmsRGBiToCIEXYZ (
- XcmsCCC /* ccc */,
- XcmsColor* /* colors */,
- unsigned int /* ncolors */,
- Bool* /* compression_flags_return */
-);
-
-extern Status XcmsRGBiToRGB (
- XcmsCCC /* ccc */,
- XcmsColor* /* colors */,
- unsigned int /* ncolors */,
- Bool* /* compression_flags_return */
-);
-
-extern Status XcmsRGBToRGBi (
- XcmsCCC /* ccc */,
- XcmsColor* /* colors */,
- unsigned int /* ncolors */,
- Bool* /* compression_flags_return */
-);
-
-extern int XcmsScreenNumberOfCCC (
- XcmsCCC /* ccc */
-);
-
-extern XcmsColor *XcmsScreenWhitePointOfCCC (
- XcmsCCC /* ccc */
-);
-
-extern XcmsCCC XcmsSetCCCOfColormap(
- Display* /* dpy */,
- Colormap /* colormap */,
- XcmsCCC /* ccc */
-);
-
-extern XcmsCompressionProc XcmsSetCompressionProc (
- XcmsCCC /* ccc */,
- XcmsCompressionProc /* compression_proc */,
- XPointer /* client_data */
-);
-
-extern XcmsWhiteAdjustProc XcmsSetWhiteAdjustProc (
- XcmsCCC /* ccc */,
- XcmsWhiteAdjustProc /* white_adjust_proc */,
- XPointer /* client_data */
-);
-
-extern Status XcmsSetWhitePoint (
- XcmsCCC /* ccc */,
- XcmsColor* /* color */
-);
-
-extern Status XcmsStoreColor (
- Display* /* dpy */,
- Colormap /* colormap */,
- XcmsColor* /* pColor_in */
-);
-
-extern Status XcmsStoreColors (
- Display* /* dpy */,
- Colormap /* colormap */,
- XcmsColor* /* colorArry_in */,
- unsigned int /* nColors */,
- Bool* /* compArry_return */
-);
-
-extern Status XcmsTekHVCClipC(
- XcmsCCC /* ccc */,
- XcmsColor* /* colors_in_out */,
- unsigned int /* ncolors */,
- unsigned int /* index */,
- Bool* /* compression_flags_return */
-);
-
-extern Status XcmsTekHVCClipV(
- XcmsCCC /* ccc */,
- XcmsColor* /* colors_in_out */,
- unsigned int /* ncolors */,
- unsigned int /* index */,
- Bool* /* compression_flags_return */
-);
-
-extern Status XcmsTekHVCClipVC(
- XcmsCCC /* ccc */,
- XcmsColor* /* colors_in_out */,
- unsigned int /* ncolors */,
- unsigned int /* index */,
- Bool* /* compression_flags_return */
-);
-
-extern Status XcmsTekHVCQueryMaxC (
- XcmsCCC /* ccc */,
- XcmsFloat /* hue */,
- XcmsFloat /* value */,
- XcmsColor* /* color_return */
-);
-
-extern Status XcmsTekHVCQueryMaxV (
- XcmsCCC /* ccc */,
- XcmsFloat /* hue */,
- XcmsFloat /* chroma */,
- XcmsColor* /* color_return */
-);
-
-extern Status XcmsTekHVCQueryMaxVC (
- XcmsCCC /* ccc */,
- XcmsFloat /* hue */,
- XcmsColor* /* color_return */
-);
-
-extern Status XcmsTekHVCQueryMaxVSamples (
- XcmsCCC /* ccc */,
- XcmsFloat /* hue */,
- XcmsColor* /* colors_return */,
- unsigned int /* nsamples */
-);
-
-extern Status XcmsTekHVCQueryMinV (
- XcmsCCC /* ccc */,
- XcmsFloat /* hue */,
- XcmsFloat /* chroma */,
- XcmsColor* /* color_return */
-);
-
-extern Status XcmsTekHVCToCIEuvY (
- XcmsCCC /* ccc */,
- XcmsColor* /* white_point */,
- XcmsColor* /* colors */,
- unsigned int /* ncolors */
-);
-
-extern Status XcmsTekHVCWhiteShiftColors(
- XcmsCCC /* ccc */,
- XcmsColor* /* initial_white_point*/,
- XcmsColor* /* target_white_point*/,
- XcmsColorFormat /* target_format */,
- XcmsColor* /* colors_in_out */,
- unsigned int /* ncolors */,
- Bool* /* compression_flags_return */
-);
-
-extern Visual *XcmsVisualOfCCC (
- XcmsCCC /* ccc */
-);
-
-_XFUNCPROTOEND
-
-#endif /* _X11_XCMS_H_ */
+
+/*
+ * Code and supporting documentation (c) Copyright 1990 1991 Tektronix, Inc.
+ * All Rights Reserved
+ *
+ * This file is a component of an X Window System-specific implementation
+ * of Xcms based on the TekColor Color Management System. Permission is
+ * hereby granted to use, copy, modify, sell, and otherwise distribute this
+ * software and its documentation for any purpose and without fee, provided
+ * that this copyright, permission, and disclaimer notice is reproduced in
+ * all copies of this software and in supporting documentation. TekColor
+ * is a trademark of Tektronix, Inc.
+ *
+ * Tektronix makes no representation about the suitability of this software
+ * for any purpose. It is provided "as is" and with all faults.
+ *
+ * TEKTRONIX DISCLAIMS ALL WARRANTIES APPLICABLE TO THIS SOFTWARE,
+ * INCLUDING THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+ * PARTICULAR PURPOSE. IN NO EVENT SHALL TEKTRONIX BE LIABLE FOR ANY
+ * SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER
+ * RESULTING FROM LOSS OF USE, DATA, OR PROFITS, WHETHER IN AN ACTION OF
+ * CONTRACT, NEGLIGENCE, OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
+ * CONNECTION WITH THE USE OR THE PERFORMANCE OF THIS SOFTWARE.
+ *
+ *
+ * DESCRIPTION
+ * Public include file for X Color Management System
+ */
+#ifndef _X11_XCMS_H_
+#define _X11_XCMS_H_
+
+#include <X11/Xlib.h>
+
+ /*
+ * XCMS Status Values
+ */
+#define XcmsFailure 0
+#define XcmsSuccess 1
+#define XcmsSuccessWithCompression 2
+
+ /*
+ * Color Space Format ID's
+ * Color Space ID's are of XcmsColorFormat type.
+ *
+ * bit 31
+ * 0 == Device-Independent
+ * 1 == Device-Dependent
+ *
+ * bit 30:
+ * 0 == Registered with X Consortium
+ * 1 == Unregistered
+ */
+#define XcmsUndefinedFormat (XcmsColorFormat)0x00000000
+#define XcmsCIEXYZFormat (XcmsColorFormat)0x00000001
+#define XcmsCIEuvYFormat (XcmsColorFormat)0x00000002
+#define XcmsCIExyYFormat (XcmsColorFormat)0x00000003
+#define XcmsCIELabFormat (XcmsColorFormat)0x00000004
+#define XcmsCIELuvFormat (XcmsColorFormat)0x00000005
+#define XcmsTekHVCFormat (XcmsColorFormat)0x00000006
+#define XcmsRGBFormat (XcmsColorFormat)0x80000000
+#define XcmsRGBiFormat (XcmsColorFormat)0x80000001
+
+ /*
+ * State of XcmsPerScrnInfo
+ */
+#define XcmsInitNone 0x00 /* no initialization attempted */
+#define XcmsInitSuccess 0x01 /* initialization successful */
+#define XcmsInitFailure 0xff /* failure, use defaults */
+
+#define DisplayOfCCC(ccc) ((ccc)->dpy)
+#define ScreenNumberOfCCC(ccc) ((ccc)->screenNumber)
+#define VisualOfCCC(ccc) ((ccc)->visual)
+#define ClientWhitePointOfCCC(ccc) (&(ccc)->clientWhitePt)
+#define ScreenWhitePointOfCCC(ccc) (&(ccc)->pPerScrnInfo->screenWhitePt)
+#define FunctionSetOfCCC(ccc) ((ccc)->pPerScrnInfo->functionSet)
+
+typedef unsigned long XcmsColorFormat; /* Color Space Format ID */
+
+typedef double XcmsFloat;
+
+ /*
+ * Device RGB
+ */
+typedef struct {
+ unsigned short red; /* scaled from 0x0000 to 0xffff */
+ unsigned short green; /* scaled from 0x0000 to 0xffff */
+ unsigned short blue; /* scaled from 0x0000 to 0xffff */
+} XcmsRGB;
+
+ /*
+ * RGB Intensity
+ */
+typedef struct {
+ XcmsFloat red; /* 0.0 - 1.0 */
+ XcmsFloat green; /* 0.0 - 1.0 */
+ XcmsFloat blue; /* 0.0 - 1.0 */
+} XcmsRGBi;
+
+ /*
+ * CIE XYZ
+ */
+typedef struct {
+ XcmsFloat X;
+ XcmsFloat Y;
+ XcmsFloat Z;
+} XcmsCIEXYZ;
+
+ /*
+ * CIE u'v'Y
+ */
+typedef struct {
+ XcmsFloat u_prime; /* 0.0 - 1.0 */
+ XcmsFloat v_prime; /* 0.0 - 1.0 */
+ XcmsFloat Y; /* 0.0 - 1.0 */
+} XcmsCIEuvY;
+
+ /*
+ * CIE xyY
+ */
+typedef struct {
+ XcmsFloat x; /* 0.0 - 1.0 */
+ XcmsFloat y; /* 0.0 - 1.0 */
+ XcmsFloat Y; /* 0.0 - 1.0 */
+} XcmsCIExyY;
+
+ /*
+ * CIE L*a*b*
+ */
+typedef struct {
+ XcmsFloat L_star; /* 0.0 - 100.0 */
+ XcmsFloat a_star;
+ XcmsFloat b_star;
+} XcmsCIELab;
+
+ /*
+ * CIE L*u*v*
+ */
+typedef struct {
+ XcmsFloat L_star; /* 0.0 - 100.0 */
+ XcmsFloat u_star;
+ XcmsFloat v_star;
+} XcmsCIELuv;
+
+ /*
+ * TekHVC
+ */
+typedef struct {
+ XcmsFloat H; /* 0.0 - 360.0 */
+ XcmsFloat V; /* 0.0 - 100.0 */
+ XcmsFloat C; /* 0.0 - 100.0 */
+} XcmsTekHVC;
+
+ /*
+ * PAD
+ */
+typedef struct {
+ XcmsFloat pad0;
+ XcmsFloat pad1;
+ XcmsFloat pad2;
+ XcmsFloat pad3;
+} XcmsPad;
+
+
+ /*
+ * XCMS Color Structure
+ */
+typedef struct {
+ union {
+ XcmsRGB RGB;
+ XcmsRGBi RGBi;
+ XcmsCIEXYZ CIEXYZ;
+ XcmsCIEuvY CIEuvY;
+ XcmsCIExyY CIExyY;
+ XcmsCIELab CIELab;
+ XcmsCIELuv CIELuv;
+ XcmsTekHVC TekHVC;
+ XcmsPad Pad;
+ } spec; /* the color specification */
+ unsigned long pixel; /* pixel value (as needed) */
+ XcmsColorFormat format; /* the specification format */
+} XcmsColor;
+
+
+ /*
+ * XCMS Per Screen related data
+ */
+
+typedef struct _XcmsPerScrnInfo {
+ XcmsColor screenWhitePt; /* Screen White point */
+ XPointer functionSet; /* pointer to Screen Color Characterization */
+ /* Function Set structure */
+ XPointer screenData; /* pointer to corresponding Screen Color*/
+ /* Characterization Data */
+ unsigned char state; /* XcmsInitNone, XcmsInitSuccess, XcmsInitFailure */
+ char pad[3];
+} XcmsPerScrnInfo;
+
+typedef struct _XcmsCCC *XcmsCCC;
+
+typedef Status (*XcmsCompressionProc)( /* Gamut Compression Proc */
+ XcmsCCC /* ccc */,
+ XcmsColor* /* colors_in_out */,
+ unsigned int /* ncolors */,
+ unsigned int /* index */,
+ Bool* /* compression_flags_return */
+);
+
+typedef Status (*XcmsWhiteAdjustProc)( /* White Point Adjust Proc */
+ XcmsCCC /* ccc */,
+ XcmsColor* /* initial_white_point*/,
+ XcmsColor* /* target_white_point*/,
+ XcmsColorFormat /* target_format */,
+ XcmsColor* /* colors_in_out */,
+ unsigned int /* ncolors */,
+ Bool* /* compression_flags_return */
+);
+
+ /*
+ * XCMS Color Conversion Context
+ */
+typedef struct _XcmsCCC {
+ Display *dpy; /* X Display */
+ int screenNumber; /* X screen number */
+ Visual *visual; /* X Visual */
+ XcmsColor clientWhitePt; /* Client White Point */
+ XcmsCompressionProc gamutCompProc; /* Gamut Compression Function */
+ XPointer gamutCompClientData; /* Gamut Comp Func Client Data */
+ XcmsWhiteAdjustProc whitePtAdjProc; /* White Point Adjustment Function */
+ XPointer whitePtAdjClientData; /* White Pt Adj Func Client Data */
+ XcmsPerScrnInfo *pPerScrnInfo; /* pointer to per screen information */
+ /* associated with the above display */
+ /* screenNumber */
+} XcmsCCCRec;
+
+typedef Status (*XcmsScreenInitProc)( /* Screen Initialization Proc */
+ Display* /* dpy */,
+ int /* screen_number */,
+ XcmsPerScrnInfo* /* screen_info */
+);
+
+typedef void (*XcmsScreenFreeProc)(
+ XPointer /* screenData */
+);
+
+ /*
+ * Function List Pointer -- pointer to an array of function pointers.
+ * The end of list is indicated by a NULL pointer.
+ */
+/*
+ * XXX: The use of the XcmsConversionProc type is broken. The
+ * device-independent colour conversion code uses it as:
+
+typedef Status (*XcmsConversionProc)(XcmsCCC, XcmsColor *, XcmsColor *,
+ unsigned int);
+
+ * while the device-dependent code uses it as:
+
+typedef Status (*XcmsConversionProc)(XcmsCCC, XcmsColor *, unsigned int,
+ Bool *);
+
+ * Until this is reworked, it's probably best to leave it unprotoized.
+ * The code works regardless.
+ */
+typedef Status (*XcmsDDConversionProc)( /* using device-dependent version */
+ XcmsCCC /* ccc */,
+ XcmsColor* /* pcolors_in_out */,
+ unsigned int /* ncolors */,
+ Bool* /* pCompressed */
+ );
+
+typedef Status (*XcmsDIConversionProc)( /* using device-independent version */
+ XcmsCCC /* ccc */,
+ XcmsColor* /* white_point */,
+ XcmsColor* /* pcolors_in_out */,
+ unsigned int /* ncolors */
+ );
+
+typedef XcmsDIConversionProc XcmsConversionProc;
+typedef XcmsConversionProc *XcmsFuncListPtr;
+
+typedef int (*XcmsParseStringProc)( /* Color String Parsing Proc */
+ char* /* color_string */,
+ XcmsColor* /* color_return */
+);
+
+ /*
+ * Color Space -- per Color Space related data (Device-Independent
+ * or Device-Dependent)
+ */
+typedef struct _XcmsColorSpace {
+ const char *prefix; /* Prefix of string format. */
+ XcmsColorFormat id; /* Format ID number. */
+ XcmsParseStringProc parseString;
+ /* String format parsing function */
+ XcmsFuncListPtr to_CIEXYZ; /* Pointer to an array of function */
+ /* pointers such that when the */
+ /* functions are executed in sequence */
+ /* will convert a XcmsColor structure */
+ /* from this color space to CIEXYZ */
+ /* space. */
+ XcmsFuncListPtr from_CIEXYZ;/* Pointer to an array of function */
+ /* pointers such that when the */
+ /* functions are executed in sequence */
+ /* will convert a XcmsColor structure */
+ /* from CIEXYZ space to this color */
+ /* space. */
+ int inverse_flag; /* If 1, indicates that for 0 <= i < n */
+ /* where n is the number of function */
+ /* pointers in the lists to_CIEXYZ */
+ /* and from_CIEXYZ; for each function */
+ /* to_CIEXYZ[i] its inverse function */
+ /* is from_CIEXYZ[n - i]. */
+
+} XcmsColorSpace;
+
+ /*
+ * Screen Color Characterization Function Set -- per device class
+ * color space conversion functions.
+ */
+typedef struct _XcmsFunctionSet {
+ XcmsColorSpace **DDColorSpaces;
+ /* Pointer to an array of pointers to */
+ /* Device-DEPENDENT color spaces */
+ /* understood by this SCCFuncSet. */
+ XcmsScreenInitProc screenInitProc;
+ /* Screen initialization function that */
+ /* reads Screen Color Characterization*/
+ /* Data off properties on the screen's*/
+ /* root window. */
+ XcmsScreenFreeProc screenFreeProc;
+ /* Function that frees the SCCData */
+ /* structures. */
+} XcmsFunctionSet;
+
+_XFUNCPROTOBEGIN
+
+extern Status XcmsAddColorSpace (
+ XcmsColorSpace* /* pColorSpace */
+);
+
+extern Status XcmsAddFunctionSet (
+ XcmsFunctionSet* /* functionSet */
+);
+
+extern Status XcmsAllocColor (
+ Display* /* dpy */,
+ Colormap /* colormap */,
+ XcmsColor* /* color_in_out */,
+ XcmsColorFormat /* result_format */
+);
+
+extern Status XcmsAllocNamedColor (
+ Display* /* dpy */,
+ Colormap /* colormap */,
+ _Xconst char* /* color_string */,
+ XcmsColor* /* color_scrn_return */,
+ XcmsColor* /* color_exact_return */,
+ XcmsColorFormat /* result_format */
+);
+
+extern XcmsCCC XcmsCCCOfColormap (
+ Display* /* dpy */,
+ Colormap /* colormap */
+);
+
+extern Status XcmsCIELabClipab(
+ XcmsCCC /* ccc */,
+ XcmsColor* /* colors_in_out */,
+ unsigned int /* ncolors */,
+ unsigned int /* index */,
+ Bool* /* compression_flags_return */
+);
+
+extern Status XcmsCIELabClipL(
+ XcmsCCC /* ccc */,
+ XcmsColor* /* colors_in_out */,
+ unsigned int /* ncolors */,
+ unsigned int /* index */,
+ Bool* /* compression_flags_return */
+);
+
+extern Status XcmsCIELabClipLab(
+ XcmsCCC /* ccc */,
+ XcmsColor* /* colors_in_out */,
+ unsigned int /* ncolors */,
+ unsigned int /* index */,
+ Bool* /* compression_flags_return */
+);
+
+extern Status XcmsCIELabQueryMaxC (
+ XcmsCCC /* ccc */,
+ XcmsFloat /* hue_angle */,
+ XcmsFloat /* L_star */,
+ XcmsColor* /* color_return */
+);
+
+extern Status XcmsCIELabQueryMaxL (
+ XcmsCCC /* ccc */,
+ XcmsFloat /* hue_angle */,
+ XcmsFloat /* chroma */,
+ XcmsColor* /* color_return */
+);
+
+extern Status XcmsCIELabQueryMaxLC (
+ XcmsCCC /* ccc */,
+ XcmsFloat /* hue_angle */,
+ XcmsColor* /* color_return */
+);
+
+extern Status XcmsCIELabQueryMinL (
+ XcmsCCC /* ccc */,
+ XcmsFloat /* hue_angle */,
+ XcmsFloat /* chroma */,
+ XcmsColor* /* color_return */
+);
+
+extern Status XcmsCIELabToCIEXYZ (
+ XcmsCCC /* ccc */,
+ XcmsColor* /* white_point */,
+ XcmsColor* /* colors */,
+ unsigned int /* ncolors */
+);
+
+extern Status XcmsCIELabWhiteShiftColors(
+ XcmsCCC /* ccc */,
+ XcmsColor* /* initial_white_point*/,
+ XcmsColor* /* target_white_point*/,
+ XcmsColorFormat /* target_format */,
+ XcmsColor* /* colors_in_out */,
+ unsigned int /* ncolors */,
+ Bool* /* compression_flags_return */
+);
+
+extern Status XcmsCIELuvClipL(
+ XcmsCCC /* ccc */,
+ XcmsColor* /* colors_in_out */,
+ unsigned int /* ncolors */,
+ unsigned int /* index */,
+ Bool* /* compression_flags_return */
+);
+
+extern Status XcmsCIELuvClipLuv(
+ XcmsCCC /* ccc */,
+ XcmsColor* /* colors_in_out */,
+ unsigned int /* ncolors */,
+ unsigned int /* index */,
+ Bool* /* compression_flags_return */
+);
+
+extern Status XcmsCIELuvClipuv(
+ XcmsCCC /* ccc */,
+ XcmsColor* /* colors_in_out */,
+ unsigned int /* ncolors */,
+ unsigned int /* index */,
+ Bool* /* compression_flags_return */
+);
+
+extern Status XcmsCIELuvQueryMaxC (
+ XcmsCCC /* ccc */,
+ XcmsFloat /* hue_angle */,
+ XcmsFloat /* L_star */,
+ XcmsColor* /* color_return */
+);
+
+extern Status XcmsCIELuvQueryMaxL (
+ XcmsCCC /* ccc */,
+ XcmsFloat /* hue_angle */,
+ XcmsFloat /* chroma */,
+ XcmsColor* /* color_return */
+);
+
+extern Status XcmsCIELuvQueryMaxLC (
+ XcmsCCC /* ccc */,
+ XcmsFloat /* hue_angle */,
+ XcmsColor* /* color_return */
+);
+
+extern Status XcmsCIELuvQueryMinL (
+ XcmsCCC /* ccc */,
+ XcmsFloat /* hue_angle */,
+ XcmsFloat /* chroma */,
+ XcmsColor* /* color_return */
+);
+
+extern Status XcmsCIELuvToCIEuvY (
+ XcmsCCC /* ccc */,
+ XcmsColor* /* white_point */,
+ XcmsColor* /* colors */,
+ unsigned int /* ncolors */
+);
+
+extern Status XcmsCIELuvWhiteShiftColors(
+ XcmsCCC /* ccc */,
+ XcmsColor* /* initial_white_point*/,
+ XcmsColor* /* target_white_point*/,
+ XcmsColorFormat /* target_format */,
+ XcmsColor* /* colors_in_out */,
+ unsigned int /* ncolors */,
+ Bool* /* compression_flags_return */
+);
+
+extern Status XcmsCIEXYZToCIELab (
+ XcmsCCC /* ccc */,
+ XcmsColor* /* white_point */,
+ XcmsColor* /* colors */,
+ unsigned int /* ncolors */
+);
+
+extern Status XcmsCIEXYZToCIEuvY (
+ XcmsCCC /* ccc */,
+ XcmsColor* /* white_point */,
+ XcmsColor* /* colors */,
+ unsigned int /* ncolors */
+);
+
+extern Status XcmsCIEXYZToCIExyY (
+ XcmsCCC /* ccc */,
+ XcmsColor* /* white_point */,
+ XcmsColor* /* colors */,
+ unsigned int /* ncolors */
+);
+
+extern Status XcmsCIEXYZToRGBi (
+ XcmsCCC /* ccc */,
+ XcmsColor* /* colors */,
+ unsigned int /* ncolors */,
+ Bool* /* compression_flags_return */
+);
+
+extern Status XcmsCIEuvYToCIELuv (
+ XcmsCCC /* ccc */,
+ XcmsColor* /* white_point */,
+ XcmsColor* /* colors */,
+ unsigned int /* ncolors */
+);
+
+extern Status XcmsCIEuvYToCIEXYZ (
+ XcmsCCC /* ccc */,
+ XcmsColor* /* white_point */,
+ XcmsColor* /* colors */,
+ unsigned int /* ncolors */
+);
+
+extern Status XcmsCIEuvYToTekHVC (
+ XcmsCCC /* ccc */,
+ XcmsColor* /* white_point */,
+ XcmsColor* /* colors */,
+ unsigned int /* ncolors */
+);
+
+extern Status XcmsCIExyYToCIEXYZ (
+ XcmsCCC /* ccc */,
+ XcmsColor* /* white_point */,
+ XcmsColor* /* colors */,
+ unsigned int /* ncolors */
+);
+
+extern XcmsColor *XcmsClientWhitePointOfCCC (
+ XcmsCCC /* ccc */
+);
+
+extern Status XcmsConvertColors (
+ XcmsCCC /* ccc */,
+ XcmsColor* /* colorArry_in_out */,
+ unsigned int /* nColors */,
+ XcmsColorFormat /* targetFormat */,
+ Bool* /* compArry_return */
+);
+
+extern XcmsCCC XcmsCreateCCC (
+ Display* /* dpy */,
+ int /* screenNumber */,
+ Visual* /* visual */,
+ XcmsColor* /* clientWhitePt */,
+ XcmsCompressionProc /* gamutCompProc */,
+ XPointer /* gamutCompClientData */,
+ XcmsWhiteAdjustProc /* whitePtAdjProc */,
+ XPointer /* whitePtAdjClientData */
+);
+
+extern XcmsCCC XcmsDefaultCCC (
+ Display* /* dpy */,
+ int /* screenNumber */
+);
+
+extern Display *XcmsDisplayOfCCC (
+ XcmsCCC /* ccc */
+);
+
+extern XcmsColorFormat XcmsFormatOfPrefix (
+ char* /* prefix */
+);
+
+extern void XcmsFreeCCC (
+ XcmsCCC /* ccc */
+);
+
+extern Status XcmsLookupColor (
+ Display* /* dpy */,
+ Colormap /* colormap */,
+ _Xconst char* /* color_string */,
+ XcmsColor* /* pColor_exact_in_out */,
+ XcmsColor* /* pColor_scrn_in_out */,
+ XcmsColorFormat /* result_format */
+);
+
+extern char *XcmsPrefixOfFormat (
+ XcmsColorFormat /* id */
+);
+
+extern Status XcmsQueryBlack (
+ XcmsCCC /* ccc */,
+ XcmsColorFormat /* target_format */,
+ XcmsColor* /* color_return */
+);
+
+extern Status XcmsQueryBlue (
+ XcmsCCC /* ccc */,
+ XcmsColorFormat /* target_format */,
+ XcmsColor* /* color_return */
+);
+
+extern Status XcmsQueryColor (
+ Display* /* dpy */,
+ Colormap /* colormap */,
+ XcmsColor* /* pColor_in_out */,
+ XcmsColorFormat /* result_format */
+);
+
+extern Status XcmsQueryColors (
+ Display* /* dpy */,
+ Colormap /* colormap */,
+ XcmsColor* /* colorArry_in_out */,
+ unsigned int /* nColors */,
+ XcmsColorFormat /* result_format */
+);
+
+extern Status XcmsQueryGreen (
+ XcmsCCC /* ccc */,
+ XcmsColorFormat /* target_format */,
+ XcmsColor* /* color_return */
+);
+
+extern Status XcmsQueryRed (
+ XcmsCCC /* ccc */,
+ XcmsColorFormat /* target_format */,
+ XcmsColor* /* color_return */
+);
+
+extern Status XcmsQueryWhite (
+ XcmsCCC /* ccc */,
+ XcmsColorFormat /* target_format */,
+ XcmsColor* /* color_return */
+);
+
+extern Status XcmsRGBiToCIEXYZ (
+ XcmsCCC /* ccc */,
+ XcmsColor* /* colors */,
+ unsigned int /* ncolors */,
+ Bool* /* compression_flags_return */
+);
+
+extern Status XcmsRGBiToRGB (
+ XcmsCCC /* ccc */,
+ XcmsColor* /* colors */,
+ unsigned int /* ncolors */,
+ Bool* /* compression_flags_return */
+);
+
+extern Status XcmsRGBToRGBi (
+ XcmsCCC /* ccc */,
+ XcmsColor* /* colors */,
+ unsigned int /* ncolors */,
+ Bool* /* compression_flags_return */
+);
+
+extern int XcmsScreenNumberOfCCC (
+ XcmsCCC /* ccc */
+);
+
+extern XcmsColor *XcmsScreenWhitePointOfCCC (
+ XcmsCCC /* ccc */
+);
+
+extern XcmsCCC XcmsSetCCCOfColormap(
+ Display* /* dpy */,
+ Colormap /* colormap */,
+ XcmsCCC /* ccc */
+);
+
+extern XcmsCompressionProc XcmsSetCompressionProc (
+ XcmsCCC /* ccc */,
+ XcmsCompressionProc /* compression_proc */,
+ XPointer /* client_data */
+);
+
+extern XcmsWhiteAdjustProc XcmsSetWhiteAdjustProc (
+ XcmsCCC /* ccc */,
+ XcmsWhiteAdjustProc /* white_adjust_proc */,
+ XPointer /* client_data */
+);
+
+extern Status XcmsSetWhitePoint (
+ XcmsCCC /* ccc */,
+ XcmsColor* /* color */
+);
+
+extern Status XcmsStoreColor (
+ Display* /* dpy */,
+ Colormap /* colormap */,
+ XcmsColor* /* pColor_in */
+);
+
+extern Status XcmsStoreColors (
+ Display* /* dpy */,
+ Colormap /* colormap */,
+ XcmsColor* /* colorArry_in */,
+ unsigned int /* nColors */,
+ Bool* /* compArry_return */
+);
+
+extern Status XcmsTekHVCClipC(
+ XcmsCCC /* ccc */,
+ XcmsColor* /* colors_in_out */,
+ unsigned int /* ncolors */,
+ unsigned int /* index */,
+ Bool* /* compression_flags_return */
+);
+
+extern Status XcmsTekHVCClipV(
+ XcmsCCC /* ccc */,
+ XcmsColor* /* colors_in_out */,
+ unsigned int /* ncolors */,
+ unsigned int /* index */,
+ Bool* /* compression_flags_return */
+);
+
+extern Status XcmsTekHVCClipVC(
+ XcmsCCC /* ccc */,
+ XcmsColor* /* colors_in_out */,
+ unsigned int /* ncolors */,
+ unsigned int /* index */,
+ Bool* /* compression_flags_return */
+);
+
+extern Status XcmsTekHVCQueryMaxC (
+ XcmsCCC /* ccc */,
+ XcmsFloat /* hue */,
+ XcmsFloat /* value */,
+ XcmsColor* /* color_return */
+);
+
+extern Status XcmsTekHVCQueryMaxV (
+ XcmsCCC /* ccc */,
+ XcmsFloat /* hue */,
+ XcmsFloat /* chroma */,
+ XcmsColor* /* color_return */
+);
+
+extern Status XcmsTekHVCQueryMaxVC (
+ XcmsCCC /* ccc */,
+ XcmsFloat /* hue */,
+ XcmsColor* /* color_return */
+);
+
+extern Status XcmsTekHVCQueryMaxVSamples (
+ XcmsCCC /* ccc */,
+ XcmsFloat /* hue */,
+ XcmsColor* /* colors_return */,
+ unsigned int /* nsamples */
+);
+
+extern Status XcmsTekHVCQueryMinV (
+ XcmsCCC /* ccc */,
+ XcmsFloat /* hue */,
+ XcmsFloat /* chroma */,
+ XcmsColor* /* color_return */
+);
+
+extern Status XcmsTekHVCToCIEuvY (
+ XcmsCCC /* ccc */,
+ XcmsColor* /* white_point */,
+ XcmsColor* /* colors */,
+ unsigned int /* ncolors */
+);
+
+extern Status XcmsTekHVCWhiteShiftColors(
+ XcmsCCC /* ccc */,
+ XcmsColor* /* initial_white_point*/,
+ XcmsColor* /* target_white_point*/,
+ XcmsColorFormat /* target_format */,
+ XcmsColor* /* colors_in_out */,
+ unsigned int /* ncolors */,
+ Bool* /* compression_flags_return */
+);
+
+extern Visual *XcmsVisualOfCCC (
+ XcmsCCC /* ccc */
+);
+
+_XFUNCPROTOEND
+
+#endif /* _X11_XCMS_H_ */
diff --git a/libX11/include/X11/Xlib-xcb.h b/libX11/include/X11/Xlib-xcb.h
index a0339de12..a21e2bef0 100644
--- a/libX11/include/X11/Xlib-xcb.h
+++ b/libX11/include/X11/Xlib-xcb.h
@@ -1,20 +1,20 @@
-/* Copyright (C) 2003-2006 Jamey Sharp, Josh Triplett
- * This file is licensed under the MIT license. See the file COPYING. */
-
-#ifndef _X11_XLIB_XCB_H_
-#define _X11_XLIB_XCB_H_
-
-#include <xcb/xcb.h>
-#include <X11/Xlib.h>
-#include <X11/Xfuncproto.h>
-
-_XFUNCPROTOBEGIN
-
-xcb_connection_t *XGetXCBConnection(Display *dpy);
-
-enum XEventQueueOwner { XlibOwnsEventQueue = 0, XCBOwnsEventQueue };
-void XSetEventQueueOwner(Display *dpy, enum XEventQueueOwner owner);
-
-_XFUNCPROTOEND
-
-#endif /* _X11_XLIB_XCB_H_ */
+/* Copyright (C) 2003-2006 Jamey Sharp, Josh Triplett
+ * This file is licensed under the MIT license. See the file COPYING. */
+
+#ifndef _X11_XLIB_XCB_H_
+#define _X11_XLIB_XCB_H_
+
+#include <xcb/xcb.h>
+#include <X11/Xlib.h>
+#include <X11/Xfuncproto.h>
+
+_XFUNCPROTOBEGIN
+
+xcb_connection_t *XGetXCBConnection(Display *dpy);
+
+enum XEventQueueOwner { XlibOwnsEventQueue = 0, XCBOwnsEventQueue };
+void XSetEventQueueOwner(Display *dpy, enum XEventQueueOwner owner);
+
+_XFUNCPROTOEND
+
+#endif /* _X11_XLIB_XCB_H_ */
diff --git a/libX11/include/X11/XlibConf.h.in b/libX11/include/X11/XlibConf.h.in
index 320350018..8f36ac1d9 100644
--- a/libX11/include/X11/XlibConf.h.in
+++ b/libX11/include/X11/XlibConf.h.in
@@ -1,37 +1,37 @@
-/*
- * Copyright © 2005 Keith Packard
- *
- * Permission to use, copy, modify, distribute, and sell this software and its
- * documentation for any purpose is hereby granted without fee, provided that
- * the above copyright notice appear in all copies and that both that
- * copyright notice and this permission notice appear in supporting
- * documentation, and that the name of Keith Packard not be used in
- * advertising or publicity pertaining to distribution of the software without
- * specific, written prior permission. Keith Packard makes no
- * representations about the suitability of this software for any purpose. It
- * is provided "as is" without express or implied warranty.
- *
- * KEITH PACKARD DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
- * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
- * EVENT SHALL KEITH PACKARD BE LIABLE FOR ANY SPECIAL, INDIRECT OR
- * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
- * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
- * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
- * PERFORMANCE OF THIS SOFTWARE.
- */
-
-#ifndef _XLIBCONF_H_
-#define _XLIBCONF_H_
-/*
- * This header file exports defines necessary to correctly
- * use Xlibint.h both inside Xlib and by external libraries
- * such as extensions.
- */
-
-/* Threading support? */
-#undef XTHREADS
-
-/* Use multi-threaded libc functions? */
-#undef XUSE_MTSAFE_API
-
-#endif /* _XLIBCONF_H_ */
+/*
+ * Copyright © 2005 Keith Packard
+ *
+ * Permission to use, copy, modify, distribute, and sell this software and its
+ * documentation for any purpose is hereby granted without fee, provided that
+ * the above copyright notice appear in all copies and that both that
+ * copyright notice and this permission notice appear in supporting
+ * documentation, and that the name of Keith Packard not be used in
+ * advertising or publicity pertaining to distribution of the software without
+ * specific, written prior permission. Keith Packard makes no
+ * representations about the suitability of this software for any purpose. It
+ * is provided "as is" without express or implied warranty.
+ *
+ * KEITH PACKARD DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
+ * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
+ * EVENT SHALL KEITH PACKARD BE LIABLE FOR ANY SPECIAL, INDIRECT OR
+ * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
+ * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
+ * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+ * PERFORMANCE OF THIS SOFTWARE.
+ */
+
+#ifndef _XLIBCONF_H_
+#define _XLIBCONF_H_
+/*
+ * This header file exports defines necessary to correctly
+ * use Xlibint.h both inside Xlib and by external libraries
+ * such as extensions.
+ */
+
+/* Threading support? */
+#undef XTHREADS
+
+/* Use multi-threaded libc functions? */
+#undef XUSE_MTSAFE_API
+
+#endif /* _XLIBCONF_H_ */
diff --git a/libX11/include/X11/Xlocale.h b/libX11/include/X11/Xlocale.h
index dfb004c32..98946e53a 100644
--- a/libX11/include/X11/Xlocale.h
+++ b/libX11/include/X11/Xlocale.h
@@ -1,59 +1,59 @@
-/*
-
-Copyright 1991, 1998 The Open Group
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
-
-The above copyright notice and this permission notice shall be included
-in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
-IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR
-OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
-ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall
-not be used in advertising or otherwise to promote the sale, use or
-other dealings in this Software without prior written authorization
-from The Open Group.
-
-*/
-
-#ifndef _X11_XLOCALE_H_
-#define _X11_XLOCALE_H_
-
-#include <X11/Xfuncproto.h>
-#include <X11/Xosdefs.h>
-
-#ifndef X_LOCALE
-#include <locale.h>
-#else
-
-#define LC_ALL 0
-#define LC_COLLATE 1
-#define LC_CTYPE 2
-#define LC_MONETARY 3
-#define LC_NUMERIC 4
-#define LC_TIME 5
-
-_XFUNCPROTOBEGIN
-extern char *_Xsetlocale(
- int /* category */,
- _Xconst char* /* name */
-);
-_XFUNCPROTOEND
-
-#define setlocale _Xsetlocale
-
-#include <stddef.h>
-
-#endif /* X_LOCALE */
-
-#endif /* _X11_XLOCALE_H_ */
+/*
+
+Copyright 1991, 1998 The Open Group
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
+
+The above copyright notice and this permission notice shall be included
+in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR
+OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
+ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group shall
+not be used in advertising or otherwise to promote the sale, use or
+other dealings in this Software without prior written authorization
+from The Open Group.
+
+*/
+
+#ifndef _X11_XLOCALE_H_
+#define _X11_XLOCALE_H_
+
+#include <X11/Xfuncproto.h>
+#include <X11/Xosdefs.h>
+
+#ifndef X_LOCALE
+#include <locale.h>
+#else
+
+#define LC_ALL 0
+#define LC_COLLATE 1
+#define LC_CTYPE 2
+#define LC_MONETARY 3
+#define LC_NUMERIC 4
+#define LC_TIME 5
+
+_XFUNCPROTOBEGIN
+extern char *_Xsetlocale(
+ int /* category */,
+ _Xconst char* /* name */
+);
+_XFUNCPROTOEND
+
+#define setlocale _Xsetlocale
+
+#include <stddef.h>
+
+#endif /* X_LOCALE */
+
+#endif /* _X11_XLOCALE_H_ */
diff --git a/libX11/include/X11/Xregion.h b/libX11/include/X11/Xregion.h
index 1ae16c487..54afcd0bb 100644
--- a/libX11/include/X11/Xregion.h
+++ b/libX11/include/X11/Xregion.h
@@ -1,191 +1,191 @@
-/************************************************************************
-
-Copyright 1987, 1998 The Open Group
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall not be
-used in advertising or otherwise to promote the sale, use or other dealings
-in this Software without prior written authorization from The Open Group.
-
-
-Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts.
-
- All Rights Reserved
-
-Permission to use, copy, modify, and distribute this software and its
-documentation for any purpose and without fee is hereby granted,
-provided that the above copyright notice appear in all copies and that
-both that copyright notice and this permission notice appear in
-supporting documentation, and that the name of Digital not be
-used in advertising or publicity pertaining to distribution of the
-software without specific, written prior permission.
-
-DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
-ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
-DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
-ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
-WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
-ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
-SOFTWARE.
-
-************************************************************************/
-
-#ifndef _X11_XREGION_H_
-#define _X11_XREGION_H_
-
-typedef struct {
- short x1, x2, y1, y2;
-} Box, BOX, BoxRec, *BoxPtr;
-
-typedef struct {
- short x, y, width, height;
-}RECTANGLE, RectangleRec, *RectanglePtr;
-
-#define TRUE 1
-#define FALSE 0
-#ifndef MAXSHORT
-#define MAXSHORT 32767
-#define MINSHORT -MAXSHORT
-#endif
-#ifndef MAX
-#define MAX(a,b) (((a) > (b)) ? (a) : (b))
-#endif
-#ifndef MIN
-#define MIN(a,b) (((a) < (b)) ? (a) : (b))
-#endif
-
-
-/*
- * clip region
- */
-
-typedef struct _XRegion {
- long size;
- long numRects;
- BOX *rects;
- BOX extents;
-} REGION;
-
-/* Xutil.h contains the declaration:
- * typedef struct _XRegion *Region;
- */
-
-/* 1 if two BOXs overlap.
- * 0 if two BOXs do not overlap.
- * Remember, x2 and y2 are not in the region
- */
-#define EXTENTCHECK(r1, r2) \
- ((r1)->x2 > (r2)->x1 && \
- (r1)->x1 < (r2)->x2 && \
- (r1)->y2 > (r2)->y1 && \
- (r1)->y1 < (r2)->y2)
-
-/*
- * update region extents
- */
-#define EXTENTS(r,idRect){\
- if((r)->x1 < (idRect)->extents.x1)\
- (idRect)->extents.x1 = (r)->x1;\
- if((r)->y1 < (idRect)->extents.y1)\
- (idRect)->extents.y1 = (r)->y1;\
- if((r)->x2 > (idRect)->extents.x2)\
- (idRect)->extents.x2 = (r)->x2;\
- if((r)->y2 > (idRect)->extents.y2)\
- (idRect)->extents.y2 = (r)->y2;\
- }
-
-/*
- * Check to see if there is enough memory in the present region.
- */
-#define MEMCHECK(reg, rect, firstrect){\
- if ((reg)->numRects >= ((reg)->size - 1)){\
- (firstrect) = (BOX *) Xrealloc \
- ((char *)(firstrect), (unsigned) (2 * (sizeof(BOX)) * ((reg)->size)));\
- if ((firstrect) == 0)\
- return(0);\
- (reg)->size *= 2;\
- (rect) = &(firstrect)[(reg)->numRects];\
- }\
- }
-
-/* this routine checks to see if the previous rectangle is the same
- * or subsumes the new rectangle to add.
- */
-
-#define CHECK_PREVIOUS(Reg, R, Rx1, Ry1, Rx2, Ry2)\
- (!(((Reg)->numRects > 0)&&\
- ((R-1)->y1 == (Ry1)) &&\
- ((R-1)->y2 == (Ry2)) &&\
- ((R-1)->x1 <= (Rx1)) &&\
- ((R-1)->x2 >= (Rx2))))
-
-/* add a rectangle to the given Region */
-#define ADDRECT(reg, r, rx1, ry1, rx2, ry2){\
- if (((rx1) < (rx2)) && ((ry1) < (ry2)) &&\
- CHECK_PREVIOUS((reg), (r), (rx1), (ry1), (rx2), (ry2))){\
- (r)->x1 = (rx1);\
- (r)->y1 = (ry1);\
- (r)->x2 = (rx2);\
- (r)->y2 = (ry2);\
- EXTENTS((r), (reg));\
- (reg)->numRects++;\
- (r)++;\
- }\
- }
-
-
-
-/* add a rectangle to the given Region */
-#define ADDRECTNOX(reg, r, rx1, ry1, rx2, ry2){\
- if ((rx1 < rx2) && (ry1 < ry2) &&\
- CHECK_PREVIOUS((reg), (r), (rx1), (ry1), (rx2), (ry2))){\
- (r)->x1 = (rx1);\
- (r)->y1 = (ry1);\
- (r)->x2 = (rx2);\
- (r)->y2 = (ry2);\
- (reg)->numRects++;\
- (r)++;\
- }\
- }
-
-#define EMPTY_REGION(pReg) pReg->numRects = 0
-
-#define REGION_NOT_EMPTY(pReg) pReg->numRects
-
-#define INBOX(r, x, y) \
- ( ( ((r).x2 > x)) && \
- ( ((r).x1 <= x)) && \
- ( ((r).y2 > y)) && \
- ( ((r).y1 <= y)) )
-
-/*
- * number of points to buffer before sending them off
- * to scanlines() : Must be an even number
- */
-#define NUMPTSTOBUFFER 200
-
-/*
- * used to allocate buffers for points and link
- * the buffers together
- */
-typedef struct _POINTBLOCK {
- XPoint pts[NUMPTSTOBUFFER];
- struct _POINTBLOCK *next;
-} POINTBLOCK;
-
-#endif /* _X11_XREGION_H_ */
+/************************************************************************
+
+Copyright 1987, 1998 The Open Group
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group shall not be
+used in advertising or otherwise to promote the sale, use or other dealings
+in this Software without prior written authorization from The Open Group.
+
+
+Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts.
+
+ All Rights Reserved
+
+Permission to use, copy, modify, and distribute this software and its
+documentation for any purpose and without fee is hereby granted,
+provided that the above copyright notice appear in all copies and that
+both that copyright notice and this permission notice appear in
+supporting documentation, and that the name of Digital not be
+used in advertising or publicity pertaining to distribution of the
+software without specific, written prior permission.
+
+DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
+ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
+DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
+ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
+WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
+ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
+SOFTWARE.
+
+************************************************************************/
+
+#ifndef _X11_XREGION_H_
+#define _X11_XREGION_H_
+
+typedef struct {
+ short x1, x2, y1, y2;
+} Box, BOX, BoxRec, *BoxPtr;
+
+typedef struct {
+ short x, y, width, height;
+}RECTANGLE, RectangleRec, *RectanglePtr;
+
+#define TRUE 1
+#define FALSE 0
+#ifndef MAXSHORT
+#define MAXSHORT 32767
+#define MINSHORT -MAXSHORT
+#endif
+#ifndef MAX
+#define MAX(a,b) (((a) > (b)) ? (a) : (b))
+#endif
+#ifndef MIN
+#define MIN(a,b) (((a) < (b)) ? (a) : (b))
+#endif
+
+
+/*
+ * clip region
+ */
+
+typedef struct _XRegion {
+ long size;
+ long numRects;
+ BOX *rects;
+ BOX extents;
+} REGION;
+
+/* Xutil.h contains the declaration:
+ * typedef struct _XRegion *Region;
+ */
+
+/* 1 if two BOXs overlap.
+ * 0 if two BOXs do not overlap.
+ * Remember, x2 and y2 are not in the region
+ */
+#define EXTENTCHECK(r1, r2) \
+ ((r1)->x2 > (r2)->x1 && \
+ (r1)->x1 < (r2)->x2 && \
+ (r1)->y2 > (r2)->y1 && \
+ (r1)->y1 < (r2)->y2)
+
+/*
+ * update region extents
+ */
+#define EXTENTS(r,idRect){\
+ if((r)->x1 < (idRect)->extents.x1)\
+ (idRect)->extents.x1 = (r)->x1;\
+ if((r)->y1 < (idRect)->extents.y1)\
+ (idRect)->extents.y1 = (r)->y1;\
+ if((r)->x2 > (idRect)->extents.x2)\
+ (idRect)->extents.x2 = (r)->x2;\
+ if((r)->y2 > (idRect)->extents.y2)\
+ (idRect)->extents.y2 = (r)->y2;\
+ }
+
+/*
+ * Check to see if there is enough memory in the present region.
+ */
+#define MEMCHECK(reg, rect, firstrect){\
+ if ((reg)->numRects >= ((reg)->size - 1)){\
+ (firstrect) = (BOX *) Xrealloc \
+ ((char *)(firstrect), (unsigned) (2 * (sizeof(BOX)) * ((reg)->size)));\
+ if ((firstrect) == 0)\
+ return(0);\
+ (reg)->size *= 2;\
+ (rect) = &(firstrect)[(reg)->numRects];\
+ }\
+ }
+
+/* this routine checks to see if the previous rectangle is the same
+ * or subsumes the new rectangle to add.
+ */
+
+#define CHECK_PREVIOUS(Reg, R, Rx1, Ry1, Rx2, Ry2)\
+ (!(((Reg)->numRects > 0)&&\
+ ((R-1)->y1 == (Ry1)) &&\
+ ((R-1)->y2 == (Ry2)) &&\
+ ((R-1)->x1 <= (Rx1)) &&\
+ ((R-1)->x2 >= (Rx2))))
+
+/* add a rectangle to the given Region */
+#define ADDRECT(reg, r, rx1, ry1, rx2, ry2){\
+ if (((rx1) < (rx2)) && ((ry1) < (ry2)) &&\
+ CHECK_PREVIOUS((reg), (r), (rx1), (ry1), (rx2), (ry2))){\
+ (r)->x1 = (rx1);\
+ (r)->y1 = (ry1);\
+ (r)->x2 = (rx2);\
+ (r)->y2 = (ry2);\
+ EXTENTS((r), (reg));\
+ (reg)->numRects++;\
+ (r)++;\
+ }\
+ }
+
+
+
+/* add a rectangle to the given Region */
+#define ADDRECTNOX(reg, r, rx1, ry1, rx2, ry2){\
+ if ((rx1 < rx2) && (ry1 < ry2) &&\
+ CHECK_PREVIOUS((reg), (r), (rx1), (ry1), (rx2), (ry2))){\
+ (r)->x1 = (rx1);\
+ (r)->y1 = (ry1);\
+ (r)->x2 = (rx2);\
+ (r)->y2 = (ry2);\
+ (reg)->numRects++;\
+ (r)++;\
+ }\
+ }
+
+#define EMPTY_REGION(pReg) pReg->numRects = 0
+
+#define REGION_NOT_EMPTY(pReg) pReg->numRects
+
+#define INBOX(r, x, y) \
+ ( ( ((r).x2 > x)) && \
+ ( ((r).x1 <= x)) && \
+ ( ((r).y2 > y)) && \
+ ( ((r).y1 <= y)) )
+
+/*
+ * number of points to buffer before sending them off
+ * to scanlines() : Must be an even number
+ */
+#define NUMPTSTOBUFFER 200
+
+/*
+ * used to allocate buffers for points and link
+ * the buffers together
+ */
+typedef struct _POINTBLOCK {
+ XPoint pts[NUMPTSTOBUFFER];
+ struct _POINTBLOCK *next;
+} POINTBLOCK;
+
+#endif /* _X11_XREGION_H_ */
diff --git a/libX11/include/X11/Xresource.h b/libX11/include/X11/Xresource.h
index 113f732a5..6dbb3ce46 100644
--- a/libX11/include/X11/Xresource.h
+++ b/libX11/include/X11/Xresource.h
@@ -1,358 +1,358 @@
-
-/***********************************************************
-
-Copyright 1987, 1988, 1998 The Open Group
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall not be
-used in advertising or otherwise to promote the sale, use or other dealings
-in this Software without prior written authorization from The Open Group.
-
-
-Copyright 1987, 1988 by Digital Equipment Corporation, Maynard, Massachusetts.
-
- All Rights Reserved
-
-Permission to use, copy, modify, and distribute this software and its
-documentation for any purpose and without fee is hereby granted,
-provided that the above copyright notice appear in all copies and that
-both that copyright notice and this permission notice appear in
-supporting documentation, and that the name of Digital not be
-used in advertising or publicity pertaining to distribution of the
-software without specific, written prior permission.
-
-DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
-ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
-DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
-ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
-WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
-ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
-SOFTWARE.
-
-******************************************************************/
-
-#ifndef _X11_XRESOURCE_H_
-#define _X11_XRESOURCE_H_
-
-#ifndef _XP_PRINT_SERVER_
-#include <X11/Xlib.h>
-#endif
-
-/****************************************************************
- ****************************************************************
- *** ***
- *** ***
- *** X Resource Manager Intrinsics ***
- *** ***
- *** ***
- ****************************************************************
- ****************************************************************/
-
-_XFUNCPROTOBEGIN
-
-/****************************************************************
- *
- * Memory Management
- *
- ****************************************************************/
-
-extern char *Xpermalloc(
- unsigned int /* size */
-);
-
-/****************************************************************
- *
- * Quark Management
- *
- ****************************************************************/
-
-typedef int XrmQuark, *XrmQuarkList;
-#define NULLQUARK ((XrmQuark) 0)
-
-typedef char *XrmString;
-#define NULLSTRING ((XrmString) 0)
-
-/* find quark for string, create new quark if none already exists */
-extern XrmQuark XrmStringToQuark(
- _Xconst char* /* string */
-);
-
-extern XrmQuark XrmPermStringToQuark(
- _Xconst char* /* string */
-);
-
-/* find string for quark */
-extern XrmString XrmQuarkToString(
- XrmQuark /* quark */
-);
-
-extern XrmQuark XrmUniqueQuark(
- void
-);
-
-#define XrmStringsEqual(a1, a2) (strcmp(a1, a2) == 0)
-
-
-/****************************************************************
- *
- * Conversion of Strings to Lists
- *
- ****************************************************************/
-
-typedef enum {XrmBindTightly, XrmBindLoosely} XrmBinding, *XrmBindingList;
-
-extern void XrmStringToQuarkList(
- _Xconst char* /* string */,
- XrmQuarkList /* quarks_return */
-);
-
-extern void XrmStringToBindingQuarkList(
- _Xconst char* /* string */,
- XrmBindingList /* bindings_return */,
- XrmQuarkList /* quarks_return */
-);
-
-/****************************************************************
- *
- * Name and Class lists.
- *
- ****************************************************************/
-
-typedef XrmQuark XrmName;
-typedef XrmQuarkList XrmNameList;
-#define XrmNameToString(name) XrmQuarkToString(name)
-#define XrmStringToName(string) XrmStringToQuark(string)
-#define XrmStringToNameList(str, name) XrmStringToQuarkList(str, name)
-
-typedef XrmQuark XrmClass;
-typedef XrmQuarkList XrmClassList;
-#define XrmClassToString(c_class) XrmQuarkToString(c_class)
-#define XrmStringToClass(c_class) XrmStringToQuark(c_class)
-#define XrmStringToClassList(str,c_class) XrmStringToQuarkList(str, c_class)
-
-
-
-/****************************************************************
- *
- * Resource Representation Types and Values
- *
- ****************************************************************/
-
-typedef XrmQuark XrmRepresentation;
-#define XrmStringToRepresentation(string) XrmStringToQuark(string)
-#define XrmRepresentationToString(type) XrmQuarkToString(type)
-
-typedef struct {
- unsigned int size;
- XPointer addr;
-} XrmValue, *XrmValuePtr;
-
-
-/****************************************************************
- *
- * Resource Manager Functions
- *
- ****************************************************************/
-
-typedef struct _XrmHashBucketRec *XrmHashBucket;
-typedef XrmHashBucket *XrmHashTable;
-typedef XrmHashTable XrmSearchList[];
-typedef struct _XrmHashBucketRec *XrmDatabase;
-
-
-extern void XrmDestroyDatabase(
- XrmDatabase /* database */
-);
-
-extern void XrmQPutResource(
- XrmDatabase* /* database */,
- XrmBindingList /* bindings */,
- XrmQuarkList /* quarks */,
- XrmRepresentation /* type */,
- XrmValue* /* value */
-);
-
-extern void XrmPutResource(
- XrmDatabase* /* database */,
- _Xconst char* /* specifier */,
- _Xconst char* /* type */,
- XrmValue* /* value */
-);
-
-extern void XrmQPutStringResource(
- XrmDatabase* /* database */,
- XrmBindingList /* bindings */,
- XrmQuarkList /* quarks */,
- _Xconst char* /* value */
-);
-
-extern void XrmPutStringResource(
- XrmDatabase* /* database */,
- _Xconst char* /* specifier */,
- _Xconst char* /* value */
-);
-
-extern void XrmPutLineResource(
- XrmDatabase* /* database */,
- _Xconst char* /* line */
-);
-
-extern Bool XrmQGetResource(
- XrmDatabase /* database */,
- XrmNameList /* quark_name */,
- XrmClassList /* quark_class */,
- XrmRepresentation* /* quark_type_return */,
- XrmValue* /* value_return */
-);
-
-extern Bool XrmGetResource(
- XrmDatabase /* database */,
- _Xconst char* /* str_name */,
- _Xconst char* /* str_class */,
- char** /* str_type_return */,
- XrmValue* /* value_return */
-);
-
-extern Bool XrmQGetSearchList(
- XrmDatabase /* database */,
- XrmNameList /* names */,
- XrmClassList /* classes */,
- XrmSearchList /* list_return */,
- int /* list_length */
-);
-
-extern Bool XrmQGetSearchResource(
- XrmSearchList /* list */,
- XrmName /* name */,
- XrmClass /* class */,
- XrmRepresentation* /* type_return */,
- XrmValue* /* value_return */
-);
-
-/****************************************************************
- *
- * Resource Database Management
- *
- ****************************************************************/
-
-#ifndef _XP_PRINT_SERVER_
-
-extern void XrmSetDatabase(
- Display* /* display */,
- XrmDatabase /* database */
-);
-
-extern XrmDatabase XrmGetDatabase(
- Display* /* display */
-);
-
-#endif /* !_XP_PRINT_SERVER_ */
-
-extern XrmDatabase XrmGetFileDatabase(
- _Xconst char* /* filename */
-);
-
-extern Status XrmCombineFileDatabase(
- _Xconst char* /* filename */,
- XrmDatabase* /* target */,
- Bool /* override */
-);
-
-extern XrmDatabase XrmGetStringDatabase(
- _Xconst char* /* data */ /* null terminated string */
-);
-
-extern void XrmPutFileDatabase(
- XrmDatabase /* database */,
- _Xconst char* /* filename */
-);
-
-extern void XrmMergeDatabases(
- XrmDatabase /* source_db */,
- XrmDatabase* /* target_db */
-);
-
-extern void XrmCombineDatabase(
- XrmDatabase /* source_db */,
- XrmDatabase* /* target_db */,
- Bool /* override */
-);
-
-#define XrmEnumAllLevels 0
-#define XrmEnumOneLevel 1
-
-extern Bool XrmEnumerateDatabase(
- XrmDatabase /* db */,
- XrmNameList /* name_prefix */,
- XrmClassList /* class_prefix */,
- int /* mode */,
- Bool (*)(
- XrmDatabase* /* db */,
- XrmBindingList /* bindings */,
- XrmQuarkList /* quarks */,
- XrmRepresentation* /* type */,
- XrmValue* /* value */,
- XPointer /* closure */
- ) /* proc */,
- XPointer /* closure */
-);
-
-extern const char *XrmLocaleOfDatabase(
- XrmDatabase /* database */
-);
-
-
-/****************************************************************
- *
- * Command line option mapping to resource entries
- *
- ****************************************************************/
-
-typedef enum {
- XrmoptionNoArg, /* Value is specified in OptionDescRec.value */
- XrmoptionIsArg, /* Value is the option string itself */
- XrmoptionStickyArg, /* Value is characters immediately following option */
- XrmoptionSepArg, /* Value is next argument in argv */
- XrmoptionResArg, /* Resource and value in next argument in argv */
- XrmoptionSkipArg, /* Ignore this option and the next argument in argv */
- XrmoptionSkipLine, /* Ignore this option and the rest of argv */
- XrmoptionSkipNArgs /* Ignore this option and the next
- OptionDescRes.value arguments in argv */
-} XrmOptionKind;
-
-typedef struct {
- char *option; /* Option abbreviation in argv */
- char *specifier; /* Resource specifier */
- XrmOptionKind argKind; /* Which style of option it is */
- XPointer value; /* Value to provide if XrmoptionNoArg */
-} XrmOptionDescRec, *XrmOptionDescList;
-
-
-extern void XrmParseCommand(
- XrmDatabase* /* database */,
- XrmOptionDescList /* table */,
- int /* table_count */,
- _Xconst char* /* name */,
- int* /* argc_in_out */,
- char** /* argv_in_out */
-);
-
-_XFUNCPROTOEND
-
-#endif /* _X11_XRESOURCE_H_ */
-/* DON'T ADD STUFF AFTER THIS #endif */
+
+/***********************************************************
+
+Copyright 1987, 1988, 1998 The Open Group
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group shall not be
+used in advertising or otherwise to promote the sale, use or other dealings
+in this Software without prior written authorization from The Open Group.
+
+
+Copyright 1987, 1988 by Digital Equipment Corporation, Maynard, Massachusetts.
+
+ All Rights Reserved
+
+Permission to use, copy, modify, and distribute this software and its
+documentation for any purpose and without fee is hereby granted,
+provided that the above copyright notice appear in all copies and that
+both that copyright notice and this permission notice appear in
+supporting documentation, and that the name of Digital not be
+used in advertising or publicity pertaining to distribution of the
+software without specific, written prior permission.
+
+DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
+ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
+DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
+ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
+WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
+ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
+SOFTWARE.
+
+******************************************************************/
+
+#ifndef _X11_XRESOURCE_H_
+#define _X11_XRESOURCE_H_
+
+#ifndef _XP_PRINT_SERVER_
+#include <X11/Xlib.h>
+#endif
+
+/****************************************************************
+ ****************************************************************
+ *** ***
+ *** ***
+ *** X Resource Manager Intrinsics ***
+ *** ***
+ *** ***
+ ****************************************************************
+ ****************************************************************/
+
+_XFUNCPROTOBEGIN
+
+/****************************************************************
+ *
+ * Memory Management
+ *
+ ****************************************************************/
+
+extern char *Xpermalloc(
+ unsigned int /* size */
+);
+
+/****************************************************************
+ *
+ * Quark Management
+ *
+ ****************************************************************/
+
+typedef int XrmQuark, *XrmQuarkList;
+#define NULLQUARK ((XrmQuark) 0)
+
+typedef char *XrmString;
+#define NULLSTRING ((XrmString) 0)
+
+/* find quark for string, create new quark if none already exists */
+extern XrmQuark XrmStringToQuark(
+ _Xconst char* /* string */
+);
+
+extern XrmQuark XrmPermStringToQuark(
+ _Xconst char* /* string */
+);
+
+/* find string for quark */
+extern XrmString XrmQuarkToString(
+ XrmQuark /* quark */
+);
+
+extern XrmQuark XrmUniqueQuark(
+ void
+);
+
+#define XrmStringsEqual(a1, a2) (strcmp(a1, a2) == 0)
+
+
+/****************************************************************
+ *
+ * Conversion of Strings to Lists
+ *
+ ****************************************************************/
+
+typedef enum {XrmBindTightly, XrmBindLoosely} XrmBinding, *XrmBindingList;
+
+extern void XrmStringToQuarkList(
+ _Xconst char* /* string */,
+ XrmQuarkList /* quarks_return */
+);
+
+extern void XrmStringToBindingQuarkList(
+ _Xconst char* /* string */,
+ XrmBindingList /* bindings_return */,
+ XrmQuarkList /* quarks_return */
+);
+
+/****************************************************************
+ *
+ * Name and Class lists.
+ *
+ ****************************************************************/
+
+typedef XrmQuark XrmName;
+typedef XrmQuarkList XrmNameList;
+#define XrmNameToString(name) XrmQuarkToString(name)
+#define XrmStringToName(string) XrmStringToQuark(string)
+#define XrmStringToNameList(str, name) XrmStringToQuarkList(str, name)
+
+typedef XrmQuark XrmClass;
+typedef XrmQuarkList XrmClassList;
+#define XrmClassToString(c_class) XrmQuarkToString(c_class)
+#define XrmStringToClass(c_class) XrmStringToQuark(c_class)
+#define XrmStringToClassList(str,c_class) XrmStringToQuarkList(str, c_class)
+
+
+
+/****************************************************************
+ *
+ * Resource Representation Types and Values
+ *
+ ****************************************************************/
+
+typedef XrmQuark XrmRepresentation;
+#define XrmStringToRepresentation(string) XrmStringToQuark(string)
+#define XrmRepresentationToString(type) XrmQuarkToString(type)
+
+typedef struct {
+ unsigned int size;
+ XPointer addr;
+} XrmValue, *XrmValuePtr;
+
+
+/****************************************************************
+ *
+ * Resource Manager Functions
+ *
+ ****************************************************************/
+
+typedef struct _XrmHashBucketRec *XrmHashBucket;
+typedef XrmHashBucket *XrmHashTable;
+typedef XrmHashTable XrmSearchList[];
+typedef struct _XrmHashBucketRec *XrmDatabase;
+
+
+extern void XrmDestroyDatabase(
+ XrmDatabase /* database */
+);
+
+extern void XrmQPutResource(
+ XrmDatabase* /* database */,
+ XrmBindingList /* bindings */,
+ XrmQuarkList /* quarks */,
+ XrmRepresentation /* type */,
+ XrmValue* /* value */
+);
+
+extern void XrmPutResource(
+ XrmDatabase* /* database */,
+ _Xconst char* /* specifier */,
+ _Xconst char* /* type */,
+ XrmValue* /* value */
+);
+
+extern void XrmQPutStringResource(
+ XrmDatabase* /* database */,
+ XrmBindingList /* bindings */,
+ XrmQuarkList /* quarks */,
+ _Xconst char* /* value */
+);
+
+extern void XrmPutStringResource(
+ XrmDatabase* /* database */,
+ _Xconst char* /* specifier */,
+ _Xconst char* /* value */
+);
+
+extern void XrmPutLineResource(
+ XrmDatabase* /* database */,
+ _Xconst char* /* line */
+);
+
+extern Bool XrmQGetResource(
+ XrmDatabase /* database */,
+ XrmNameList /* quark_name */,
+ XrmClassList /* quark_class */,
+ XrmRepresentation* /* quark_type_return */,
+ XrmValue* /* value_return */
+);
+
+extern Bool XrmGetResource(
+ XrmDatabase /* database */,
+ _Xconst char* /* str_name */,
+ _Xconst char* /* str_class */,
+ char** /* str_type_return */,
+ XrmValue* /* value_return */
+);
+
+extern Bool XrmQGetSearchList(
+ XrmDatabase /* database */,
+ XrmNameList /* names */,
+ XrmClassList /* classes */,
+ XrmSearchList /* list_return */,
+ int /* list_length */
+);
+
+extern Bool XrmQGetSearchResource(
+ XrmSearchList /* list */,
+ XrmName /* name */,
+ XrmClass /* class */,
+ XrmRepresentation* /* type_return */,
+ XrmValue* /* value_return */
+);
+
+/****************************************************************
+ *
+ * Resource Database Management
+ *
+ ****************************************************************/
+
+#ifndef _XP_PRINT_SERVER_
+
+extern void XrmSetDatabase(
+ Display* /* display */,
+ XrmDatabase /* database */
+);
+
+extern XrmDatabase XrmGetDatabase(
+ Display* /* display */
+);
+
+#endif /* !_XP_PRINT_SERVER_ */
+
+extern XrmDatabase XrmGetFileDatabase(
+ _Xconst char* /* filename */
+);
+
+extern Status XrmCombineFileDatabase(
+ _Xconst char* /* filename */,
+ XrmDatabase* /* target */,
+ Bool /* override */
+);
+
+extern XrmDatabase XrmGetStringDatabase(
+ _Xconst char* /* data */ /* null terminated string */
+);
+
+extern void XrmPutFileDatabase(
+ XrmDatabase /* database */,
+ _Xconst char* /* filename */
+);
+
+extern void XrmMergeDatabases(
+ XrmDatabase /* source_db */,
+ XrmDatabase* /* target_db */
+);
+
+extern void XrmCombineDatabase(
+ XrmDatabase /* source_db */,
+ XrmDatabase* /* target_db */,
+ Bool /* override */
+);
+
+#define XrmEnumAllLevels 0
+#define XrmEnumOneLevel 1
+
+extern Bool XrmEnumerateDatabase(
+ XrmDatabase /* db */,
+ XrmNameList /* name_prefix */,
+ XrmClassList /* class_prefix */,
+ int /* mode */,
+ Bool (*)(
+ XrmDatabase* /* db */,
+ XrmBindingList /* bindings */,
+ XrmQuarkList /* quarks */,
+ XrmRepresentation* /* type */,
+ XrmValue* /* value */,
+ XPointer /* closure */
+ ) /* proc */,
+ XPointer /* closure */
+);
+
+extern const char *XrmLocaleOfDatabase(
+ XrmDatabase /* database */
+);
+
+
+/****************************************************************
+ *
+ * Command line option mapping to resource entries
+ *
+ ****************************************************************/
+
+typedef enum {
+ XrmoptionNoArg, /* Value is specified in OptionDescRec.value */
+ XrmoptionIsArg, /* Value is the option string itself */
+ XrmoptionStickyArg, /* Value is characters immediately following option */
+ XrmoptionSepArg, /* Value is next argument in argv */
+ XrmoptionResArg, /* Resource and value in next argument in argv */
+ XrmoptionSkipArg, /* Ignore this option and the next argument in argv */
+ XrmoptionSkipLine, /* Ignore this option and the rest of argv */
+ XrmoptionSkipNArgs /* Ignore this option and the next
+ OptionDescRes.value arguments in argv */
+} XrmOptionKind;
+
+typedef struct {
+ char *option; /* Option abbreviation in argv */
+ char *specifier; /* Resource specifier */
+ XrmOptionKind argKind; /* Which style of option it is */
+ XPointer value; /* Value to provide if XrmoptionNoArg */
+} XrmOptionDescRec, *XrmOptionDescList;
+
+
+extern void XrmParseCommand(
+ XrmDatabase* /* database */,
+ XrmOptionDescList /* table */,
+ int /* table_count */,
+ _Xconst char* /* name */,
+ int* /* argc_in_out */,
+ char** /* argv_in_out */
+);
+
+_XFUNCPROTOEND
+
+#endif /* _X11_XRESOURCE_H_ */
+/* DON'T ADD STUFF AFTER THIS #endif */
diff --git a/libX11/include/X11/cursorfont.h b/libX11/include/X11/cursorfont.h
index d6319b6fa..c69d508f4 100644
--- a/libX11/include/X11/cursorfont.h
+++ b/libX11/include/X11/cursorfont.h
@@ -1,111 +1,111 @@
-/*
-
-Copyright 1987, 1998 The Open Group
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
-
-The above copyright notice and this permission notice shall be included
-in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
-IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR
-OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
-ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall
-not be used in advertising or otherwise to promote the sale, use or
-other dealings in this Software without prior written authorization
-from The Open Group.
-
-*/
-
-#ifndef _X11_CURSORFONT_H_
-#define _X11_CURSORFONT_H_
-
-#define XC_num_glyphs 154
-#define XC_X_cursor 0
-#define XC_arrow 2
-#define XC_based_arrow_down 4
-#define XC_based_arrow_up 6
-#define XC_boat 8
-#define XC_bogosity 10
-#define XC_bottom_left_corner 12
-#define XC_bottom_right_corner 14
-#define XC_bottom_side 16
-#define XC_bottom_tee 18
-#define XC_box_spiral 20
-#define XC_center_ptr 22
-#define XC_circle 24
-#define XC_clock 26
-#define XC_coffee_mug 28
-#define XC_cross 30
-#define XC_cross_reverse 32
-#define XC_crosshair 34
-#define XC_diamond_cross 36
-#define XC_dot 38
-#define XC_dotbox 40
-#define XC_double_arrow 42
-#define XC_draft_large 44
-#define XC_draft_small 46
-#define XC_draped_box 48
-#define XC_exchange 50
-#define XC_fleur 52
-#define XC_gobbler 54
-#define XC_gumby 56
-#define XC_hand1 58
-#define XC_hand2 60
-#define XC_heart 62
-#define XC_icon 64
-#define XC_iron_cross 66
-#define XC_left_ptr 68
-#define XC_left_side 70
-#define XC_left_tee 72
-#define XC_leftbutton 74
-#define XC_ll_angle 76
-#define XC_lr_angle 78
-#define XC_man 80
-#define XC_middlebutton 82
-#define XC_mouse 84
-#define XC_pencil 86
-#define XC_pirate 88
-#define XC_plus 90
-#define XC_question_arrow 92
-#define XC_right_ptr 94
-#define XC_right_side 96
-#define XC_right_tee 98
-#define XC_rightbutton 100
-#define XC_rtl_logo 102
-#define XC_sailboat 104
-#define XC_sb_down_arrow 106
-#define XC_sb_h_double_arrow 108
-#define XC_sb_left_arrow 110
-#define XC_sb_right_arrow 112
-#define XC_sb_up_arrow 114
-#define XC_sb_v_double_arrow 116
-#define XC_shuttle 118
-#define XC_sizing 120
-#define XC_spider 122
-#define XC_spraycan 124
-#define XC_star 126
-#define XC_target 128
-#define XC_tcross 130
-#define XC_top_left_arrow 132
-#define XC_top_left_corner 134
-#define XC_top_right_corner 136
-#define XC_top_side 138
-#define XC_top_tee 140
-#define XC_trek 142
-#define XC_ul_angle 144
-#define XC_umbrella 146
-#define XC_ur_angle 148
-#define XC_watch 150
-#define XC_xterm 152
-
-#endif /* _X11_CURSORFONT_H_ */
+/*
+
+Copyright 1987, 1998 The Open Group
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
+
+The above copyright notice and this permission notice shall be included
+in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR
+OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
+ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group shall
+not be used in advertising or otherwise to promote the sale, use or
+other dealings in this Software without prior written authorization
+from The Open Group.
+
+*/
+
+#ifndef _X11_CURSORFONT_H_
+#define _X11_CURSORFONT_H_
+
+#define XC_num_glyphs 154
+#define XC_X_cursor 0
+#define XC_arrow 2
+#define XC_based_arrow_down 4
+#define XC_based_arrow_up 6
+#define XC_boat 8
+#define XC_bogosity 10
+#define XC_bottom_left_corner 12
+#define XC_bottom_right_corner 14
+#define XC_bottom_side 16
+#define XC_bottom_tee 18
+#define XC_box_spiral 20
+#define XC_center_ptr 22
+#define XC_circle 24
+#define XC_clock 26
+#define XC_coffee_mug 28
+#define XC_cross 30
+#define XC_cross_reverse 32
+#define XC_crosshair 34
+#define XC_diamond_cross 36
+#define XC_dot 38
+#define XC_dotbox 40
+#define XC_double_arrow 42
+#define XC_draft_large 44
+#define XC_draft_small 46
+#define XC_draped_box 48
+#define XC_exchange 50
+#define XC_fleur 52
+#define XC_gobbler 54
+#define XC_gumby 56
+#define XC_hand1 58
+#define XC_hand2 60
+#define XC_heart 62
+#define XC_icon 64
+#define XC_iron_cross 66
+#define XC_left_ptr 68
+#define XC_left_side 70
+#define XC_left_tee 72
+#define XC_leftbutton 74
+#define XC_ll_angle 76
+#define XC_lr_angle 78
+#define XC_man 80
+#define XC_middlebutton 82
+#define XC_mouse 84
+#define XC_pencil 86
+#define XC_pirate 88
+#define XC_plus 90
+#define XC_question_arrow 92
+#define XC_right_ptr 94
+#define XC_right_side 96
+#define XC_right_tee 98
+#define XC_rightbutton 100
+#define XC_rtl_logo 102
+#define XC_sailboat 104
+#define XC_sb_down_arrow 106
+#define XC_sb_h_double_arrow 108
+#define XC_sb_left_arrow 110
+#define XC_sb_right_arrow 112
+#define XC_sb_up_arrow 114
+#define XC_sb_v_double_arrow 116
+#define XC_shuttle 118
+#define XC_sizing 120
+#define XC_spider 122
+#define XC_spraycan 124
+#define XC_star 126
+#define XC_target 128
+#define XC_tcross 130
+#define XC_top_left_arrow 132
+#define XC_top_left_corner 134
+#define XC_top_right_corner 136
+#define XC_top_side 138
+#define XC_top_tee 140
+#define XC_trek 142
+#define XC_ul_angle 144
+#define XC_umbrella 146
+#define XC_ur_angle 148
+#define XC_watch 150
+#define XC_xterm 152
+
+#endif /* _X11_CURSORFONT_H_ */
diff --git a/libX11/m4/ax_define_dir.m4 b/libX11/m4/ax_define_dir.m4
index 6e854daa0..b74d155fd 100644
--- a/libX11/m4/ax_define_dir.m4
+++ b/libX11/m4/ax_define_dir.m4
@@ -1,49 +1,49 @@
-# ===========================================================================
-# http://www.gnu.org/software/autoconf-archive/ax_define_dir.html
-# ===========================================================================
-#
-# SYNOPSIS
-#
-# AX_DEFINE_DIR(VARNAME, DIR [, DESCRIPTION])
-#
-# DESCRIPTION
-#
-# This macro sets VARNAME to the expansion of the DIR variable, taking
-# care of fixing up ${prefix} and such.
-#
-# VARNAME is then offered as both an output variable and a C preprocessor
-# symbol.
-#
-# Example:
-#
-# AX_DEFINE_DIR([DATADIR], [datadir], [Where data are placed to.])
-#
-# LICENSE
-#
-# Copyright (c) 2008 Stepan Kasal <kasal@ucw.cz>
-# Copyright (c) 2008 Andreas Schwab <schwab@suse.de>
-# Copyright (c) 2008 Guido U. Draheim <guidod@gmx.de>
-# Copyright (c) 2008 Alexandre Oliva
-#
-# Copying and distribution of this file, with or without modification, are
-# permitted in any medium without royalty provided the copyright notice
-# and this notice are preserved. This file is offered as-is, without any
-# warranty.
-
-#serial 6
-
-AU_ALIAS([AC_DEFINE_DIR], [AX_DEFINE_DIR])
-AC_DEFUN([AX_DEFINE_DIR], [
- prefix_NONE=
- exec_prefix_NONE=
- test "x$prefix" = xNONE && prefix_NONE=yes && prefix=$ac_default_prefix
- test "x$exec_prefix" = xNONE && exec_prefix_NONE=yes && exec_prefix=$prefix
-dnl In Autoconf 2.60, ${datadir} refers to ${datarootdir}, which in turn
-dnl refers to ${prefix}. Thus we have to use `eval' twice.
- eval ax_define_dir="\"[$]$2\""
- eval ax_define_dir="\"$ax_define_dir\""
- AC_SUBST($1, "$ax_define_dir")
- AC_DEFINE_UNQUOTED($1, "$ax_define_dir", [$3])
- test "$prefix_NONE" && prefix=NONE
- test "$exec_prefix_NONE" && exec_prefix=NONE
-])
+# ===========================================================================
+# http://www.gnu.org/software/autoconf-archive/ax_define_dir.html
+# ===========================================================================
+#
+# SYNOPSIS
+#
+# AX_DEFINE_DIR(VARNAME, DIR [, DESCRIPTION])
+#
+# DESCRIPTION
+#
+# This macro sets VARNAME to the expansion of the DIR variable, taking
+# care of fixing up ${prefix} and such.
+#
+# VARNAME is then offered as both an output variable and a C preprocessor
+# symbol.
+#
+# Example:
+#
+# AX_DEFINE_DIR([DATADIR], [datadir], [Where data are placed to.])
+#
+# LICENSE
+#
+# Copyright (c) 2008 Stepan Kasal <kasal@ucw.cz>
+# Copyright (c) 2008 Andreas Schwab <schwab@suse.de>
+# Copyright (c) 2008 Guido U. Draheim <guidod@gmx.de>
+# Copyright (c) 2008 Alexandre Oliva
+#
+# Copying and distribution of this file, with or without modification, are
+# permitted in any medium without royalty provided the copyright notice
+# and this notice are preserved. This file is offered as-is, without any
+# warranty.
+
+#serial 6
+
+AU_ALIAS([AC_DEFINE_DIR], [AX_DEFINE_DIR])
+AC_DEFUN([AX_DEFINE_DIR], [
+ prefix_NONE=
+ exec_prefix_NONE=
+ test "x$prefix" = xNONE && prefix_NONE=yes && prefix=$ac_default_prefix
+ test "x$exec_prefix" = xNONE && exec_prefix_NONE=yes && exec_prefix=$prefix
+dnl In Autoconf 2.60, ${datadir} refers to ${datarootdir}, which in turn
+dnl refers to ${prefix}. Thus we have to use `eval' twice.
+ eval ax_define_dir="\"[$]$2\""
+ eval ax_define_dir="\"$ax_define_dir\""
+ AC_SUBST($1, "$ax_define_dir")
+ AC_DEFINE_UNQUOTED($1, "$ax_define_dir", [$3])
+ test "$prefix_NONE" && prefix=NONE
+ test "$exec_prefix_NONE" && exec_prefix=NONE
+])
diff --git a/libX11/man/BitmapBitOrder.man b/libX11/man/BitmapBitOrder.man
index 0a59afe46..4e270949c 100644
--- a/libX11/man/BitmapBitOrder.man
+++ b/libX11/man/BitmapBitOrder.man
@@ -1 +1 @@
-.so man__libmansuffix__/ImageByteOrder.__libmansuffix__
+.so man__libmansuffix__/ImageByteOrder.__libmansuffix__
diff --git a/libX11/man/BitmapPad.man b/libX11/man/BitmapPad.man
index 0a59afe46..4e270949c 100644
--- a/libX11/man/BitmapPad.man
+++ b/libX11/man/BitmapPad.man
@@ -1 +1 @@
-.so man__libmansuffix__/ImageByteOrder.__libmansuffix__
+.so man__libmansuffix__/ImageByteOrder.__libmansuffix__
diff --git a/libX11/man/BitmapUnit.man b/libX11/man/BitmapUnit.man
index 0a59afe46..4e270949c 100644
--- a/libX11/man/BitmapUnit.man
+++ b/libX11/man/BitmapUnit.man
@@ -1 +1 @@
-.so man__libmansuffix__/ImageByteOrder.__libmansuffix__
+.so man__libmansuffix__/ImageByteOrder.__libmansuffix__
diff --git a/libX11/man/BlackPixel.man b/libX11/man/BlackPixel.man
index 963c4fe94..7949dfafa 100644
--- a/libX11/man/BlackPixel.man
+++ b/libX11/man/BlackPixel.man
@@ -1 +1 @@
-.so man__libmansuffix__/AllPlanes.__libmansuffix__
+.so man__libmansuffix__/AllPlanes.__libmansuffix__
diff --git a/libX11/man/CellsOfScreen.man b/libX11/man/CellsOfScreen.man
index c69be9763..1bb28e72e 100644
--- a/libX11/man/CellsOfScreen.man
+++ b/libX11/man/CellsOfScreen.man
@@ -1 +1 @@
-.so man__libmansuffix__/BlackPixelOfScreen.__libmansuffix__
+.so man__libmansuffix__/BlackPixelOfScreen.__libmansuffix__
diff --git a/libX11/man/ClientWhitePointOfCCC.man b/libX11/man/ClientWhitePointOfCCC.man
index 5feb8b936..fd4e759bb 100644
--- a/libX11/man/ClientWhitePointOfCCC.man
+++ b/libX11/man/ClientWhitePointOfCCC.man
@@ -1 +1 @@
-.so man__libmansuffix__/DisplayOfCCC.__libmansuffix__
+.so man__libmansuffix__/DisplayOfCCC.__libmansuffix__
diff --git a/libX11/man/Compose.man b/libX11/man/Compose.man
index 22fe51e9c..13ba705ff 100644
--- a/libX11/man/Compose.man
+++ b/libX11/man/Compose.man
@@ -1,158 +1,158 @@
-.\" Copyright 2009 Oracle and/or its affiliates. All rights reserved.
-.\"
-.\" Permission is hereby granted, free of charge, to any person obtaining a
-.\" copy of this software and associated documentation files (the "Software"),
-.\" to deal in the Software without restriction, including without limitation
-.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
-.\" and/or sell copies of the Software, and to permit persons to whom the
-.\" Software is furnished to do so, subject to the following conditions:
-.\"
-.\" The above copyright notice and this permission notice (including the next
-.\" paragraph) shall be included in all copies or substantial portions of the
-.\" Software.
-.\"
-.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-.\" DEALINGS IN THE SOFTWARE.
-.\"
-.\" shorthand for double quote that works everywhere.
-.ds q \N'34'
-.ds xL Xlib \- C Language X Interface
-.TH Compose __filemansuffix__ __vendorversion__
-.SH NAME
-Compose \- X client mappings for multi-key input sequences
-.SH DESCRIPTION
-The X library, libX11, provides a simple input method for characters
-beyond those represented on typical keyboards using sequences of key
-strokes that are combined to enter a single character.
-.PP
-The compose file is searched for in the following order:
-.IP -
-If the environment variable
-.B $XCOMPOSEFILE
-is set, its value is used as the name of the Compose file.
-.IP -
-If the user's home directory has a file named
-.IR .XCompose ,
-it is used as the Compose file.
-.IP -
-The system provided compose file is used by mapping the locale to a compose
-file from the list in
-.IR __xlocaledir__/compose.dir .
-.PP
-Compose files can use an
-.RB \*q include \*q
-instruction. This allows local modifications to be made to existing compose
-files without including all of the content directly. For example, the
-system's iso8859-1 compose file can be included with a line like this:
-.RS 4
-.BI "include \*q" %S/iso8859-1/Compose \*q
-.RE
-.PP
-There are several substitutions that can be made in the file name of the
-include instruction:
-.TP 4
-.I %H
-expands to the user's home directory (the
-.B $HOME
-environment variable)
-.TP 4
-.I %L
-expands to the name of the locale specific Compose file (i.e.,
-.RI \*q __xlocaledir__/<localename>/Compose \*q)
-.TP 4
-.I %S
-expands to the name of the system directory for Compose files (i.e.,
-.RI \*q __xlocaledir__ \*q)
-.PP
-For example, you can include in your compose file the default Compose file
-by using:
-.RS
-.B "include \*q%L\*q"
-.RE
-and then rewrite only the few rules that you need to change. New
-compose rules can be added, and previous ones replaced.
-.SH FILE FORMAT
-.\" Based on grammar description in modules/im/ximcp/imLcPrs.c
-Compose files are plain text files, with a separate line for each compose
-sequence. Comments begin with \fB#\fP characters. Each compose sequence
-specifies one or more events and a resulting input sequence, with an optional
-comment at the end of the line:
-.RS
-\fIEVENT\fP [\fIEVENT\fP...] \fB:\fP \fIRESULT\fP [\fB#\fP \fICOMMENT\fP]
-.RE
-.PP
-Each event consists of a specified input keysym, and optional modifier states:
-.RS
-[\fIMODIFIER_LIST\fP] \fB<\fP\fIkeysym\fP\fB>\fP
-.RE
-.PP
-Each modifier consists of a specified modifier and a state:
-.RS
-(\fB!\fP \fIMODIFIER\fP ) | \fBNone\fP
-.RE
-Modifiers may be preceded by a
-.RB \*q "~" \*q
-character to indicate that the modifier must not be present.
-.PP
-The result specifies a string, keysym, or both, that the X client receives
-as input when the sequence of events is input:
-.RS
-\fB\*q\fP\fISTRING\fP\fB\*q\fP | \fIkeysym\fP | \fB\*q\fP\fISTRING\fP\fB\*q\fP \fIkeysym\fP
-.RE
-.PP
-Keysyms are specified without the \fBXK_\fP prefix.
-.PP
-Strings may be direct text encoded in the locale for which the compose file is
-to be used, or an escaped octal or hexadecimal character code. Octal codes
-are specified as \fB\*q\\123\*q\fP and hexadecimal codes as
-\fB\*q\\0x123a\*q\fP.
-It is not necessary to specify in the right part of a rule a locale encoded
-string in addition to the keysym name. If the string is omitted, Xlib
-figures it out from the keysym according to the current locale.
-I.e., if a rule looks like:
-.RS
-\fB<dead_grave> <A> : \*q\\300\*q Agrave\fP
-.RE
-the result of the composition is always the letter with the "\\300"
-code. But if the rule is:
-.RS
-\fB<dead_grave> <A> : Agrave\fP
-.RE
-the result depends on how Agrave is mapped in the current locale.
-.SH ENVIRONMENT
-.TP
-.B XCOMPOSEFILE
-File to use for compose sequences.
-.TP
-.B XCOMPOSECACHE
-Directory to use for caching compiled compose files.
-.SH FILES
-.TP
-.I $HOME/.XCompose
-User default compose file if XCOMPOSEFILE is not set.
-.TP
-.I __xlocaledir__/compose.dir
-File listing the compose file path to use for each locale.
-.TP
-.I __xlocaledir__/<localemapping>/Compose
-System default compose file for the locale, mapped via compose.dir.
-.TP
-.I /var/cache/libx11/compose/
-System-wide cache directory for compiled compose files.
-.TP
-.I $HOME/.compose-cache/
-Per-user cache directory for compiled compose files.
-.SH SEE ALSO
-.BR XLookupString (__libmansuffix__),
-.BR XmbLookupString (__libmansuffix__),
-.BR XwcLookupString (__libmansuffix__),
-.BR Xutf8LookupString (__libmansuffix__),
-.BR mkcomposecache (__appmansuffix__),
-.BR locale (__miscmansuffix__).
-.br
-\fI\*(xL\fP
+.\" Copyright 2009 Oracle and/or its affiliates. All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the "Software"),
+.\" to deal in the Software without restriction, including without limitation
+.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
+.\" and/or sell copies of the Software, and to permit persons to whom the
+.\" Software is furnished to do so, subject to the following conditions:
+.\"
+.\" The above copyright notice and this permission notice (including the next
+.\" paragraph) shall be included in all copies or substantial portions of the
+.\" Software.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+.\" DEALINGS IN THE SOFTWARE.
+.\"
+.\" shorthand for double quote that works everywhere.
+.ds q \N'34'
+.ds xL Xlib \- C Language X Interface
+.TH Compose __filemansuffix__ __vendorversion__
+.SH NAME
+Compose \- X client mappings for multi-key input sequences
+.SH DESCRIPTION
+The X library, libX11, provides a simple input method for characters
+beyond those represented on typical keyboards using sequences of key
+strokes that are combined to enter a single character.
+.PP
+The compose file is searched for in the following order:
+.IP -
+If the environment variable
+.B $XCOMPOSEFILE
+is set, its value is used as the name of the Compose file.
+.IP -
+If the user's home directory has a file named
+.IR .XCompose ,
+it is used as the Compose file.
+.IP -
+The system provided compose file is used by mapping the locale to a compose
+file from the list in
+.IR __xlocaledir__/compose.dir .
+.PP
+Compose files can use an
+.RB \*q include \*q
+instruction. This allows local modifications to be made to existing compose
+files without including all of the content directly. For example, the
+system's iso8859-1 compose file can be included with a line like this:
+.RS 4
+.BI "include \*q" %S/iso8859-1/Compose \*q
+.RE
+.PP
+There are several substitutions that can be made in the file name of the
+include instruction:
+.TP 4
+.I %H
+expands to the user's home directory (the
+.B $HOME
+environment variable)
+.TP 4
+.I %L
+expands to the name of the locale specific Compose file (i.e.,
+.RI \*q __xlocaledir__/<localename>/Compose \*q)
+.TP 4
+.I %S
+expands to the name of the system directory for Compose files (i.e.,
+.RI \*q __xlocaledir__ \*q)
+.PP
+For example, you can include in your compose file the default Compose file
+by using:
+.RS
+.B "include \*q%L\*q"
+.RE
+and then rewrite only the few rules that you need to change. New
+compose rules can be added, and previous ones replaced.
+.SH FILE FORMAT
+.\" Based on grammar description in modules/im/ximcp/imLcPrs.c
+Compose files are plain text files, with a separate line for each compose
+sequence. Comments begin with \fB#\fP characters. Each compose sequence
+specifies one or more events and a resulting input sequence, with an optional
+comment at the end of the line:
+.RS
+\fIEVENT\fP [\fIEVENT\fP...] \fB:\fP \fIRESULT\fP [\fB#\fP \fICOMMENT\fP]
+.RE
+.PP
+Each event consists of a specified input keysym, and optional modifier states:
+.RS
+[\fIMODIFIER_LIST\fP] \fB<\fP\fIkeysym\fP\fB>\fP
+.RE
+.PP
+Each modifier consists of a specified modifier and a state:
+.RS
+(\fB!\fP \fIMODIFIER\fP ) | \fBNone\fP
+.RE
+Modifiers may be preceded by a
+.RB \*q "~" \*q
+character to indicate that the modifier must not be present.
+.PP
+The result specifies a string, keysym, or both, that the X client receives
+as input when the sequence of events is input:
+.RS
+\fB\*q\fP\fISTRING\fP\fB\*q\fP | \fIkeysym\fP | \fB\*q\fP\fISTRING\fP\fB\*q\fP \fIkeysym\fP
+.RE
+.PP
+Keysyms are specified without the \fBXK_\fP prefix.
+.PP
+Strings may be direct text encoded in the locale for which the compose file is
+to be used, or an escaped octal or hexadecimal character code. Octal codes
+are specified as \fB\*q\\123\*q\fP and hexadecimal codes as
+\fB\*q\\0x123a\*q\fP.
+It is not necessary to specify in the right part of a rule a locale encoded
+string in addition to the keysym name. If the string is omitted, Xlib
+figures it out from the keysym according to the current locale.
+I.e., if a rule looks like:
+.RS
+\fB<dead_grave> <A> : \*q\\300\*q Agrave\fP
+.RE
+the result of the composition is always the letter with the "\\300"
+code. But if the rule is:
+.RS
+\fB<dead_grave> <A> : Agrave\fP
+.RE
+the result depends on how Agrave is mapped in the current locale.
+.SH ENVIRONMENT
+.TP
+.B XCOMPOSEFILE
+File to use for compose sequences.
+.TP
+.B XCOMPOSECACHE
+Directory to use for caching compiled compose files.
+.SH FILES
+.TP
+.I $HOME/.XCompose
+User default compose file if XCOMPOSEFILE is not set.
+.TP
+.I __xlocaledir__/compose.dir
+File listing the compose file path to use for each locale.
+.TP
+.I __xlocaledir__/<localemapping>/Compose
+System default compose file for the locale, mapped via compose.dir.
+.TP
+.I /var/cache/libx11/compose/
+System-wide cache directory for compiled compose files.
+.TP
+.I $HOME/.compose-cache/
+Per-user cache directory for compiled compose files.
+.SH SEE ALSO
+.BR XLookupString (__libmansuffix__),
+.BR XmbLookupString (__libmansuffix__),
+.BR XwcLookupString (__libmansuffix__),
+.BR Xutf8LookupString (__libmansuffix__),
+.BR mkcomposecache (__appmansuffix__),
+.BR locale (__miscmansuffix__).
+.br
+\fI\*(xL\fP
diff --git a/libX11/man/ConnectionNumber.man b/libX11/man/ConnectionNumber.man
index 963c4fe94..7949dfafa 100644
--- a/libX11/man/ConnectionNumber.man
+++ b/libX11/man/ConnectionNumber.man
@@ -1 +1 @@
-.so man__libmansuffix__/AllPlanes.__libmansuffix__
+.so man__libmansuffix__/AllPlanes.__libmansuffix__
diff --git a/libX11/man/DefaultColormap.man b/libX11/man/DefaultColormap.man
index 963c4fe94..7949dfafa 100644
--- a/libX11/man/DefaultColormap.man
+++ b/libX11/man/DefaultColormap.man
@@ -1 +1 @@
-.so man__libmansuffix__/AllPlanes.__libmansuffix__
+.so man__libmansuffix__/AllPlanes.__libmansuffix__
diff --git a/libX11/man/DefaultColormapOfScreen.man b/libX11/man/DefaultColormapOfScreen.man
index c69be9763..1bb28e72e 100644
--- a/libX11/man/DefaultColormapOfScreen.man
+++ b/libX11/man/DefaultColormapOfScreen.man
@@ -1 +1 @@
-.so man__libmansuffix__/BlackPixelOfScreen.__libmansuffix__
+.so man__libmansuffix__/BlackPixelOfScreen.__libmansuffix__
diff --git a/libX11/man/DefaultDepth.man b/libX11/man/DefaultDepth.man
index 963c4fe94..7949dfafa 100644
--- a/libX11/man/DefaultDepth.man
+++ b/libX11/man/DefaultDepth.man
@@ -1 +1 @@
-.so man__libmansuffix__/AllPlanes.__libmansuffix__
+.so man__libmansuffix__/AllPlanes.__libmansuffix__
diff --git a/libX11/man/DefaultDepthOfScreen.man b/libX11/man/DefaultDepthOfScreen.man
index c69be9763..1bb28e72e 100644
--- a/libX11/man/DefaultDepthOfScreen.man
+++ b/libX11/man/DefaultDepthOfScreen.man
@@ -1 +1 @@
-.so man__libmansuffix__/BlackPixelOfScreen.__libmansuffix__
+.so man__libmansuffix__/BlackPixelOfScreen.__libmansuffix__
diff --git a/libX11/man/DefaultGC.man b/libX11/man/DefaultGC.man
index 963c4fe94..7949dfafa 100644
--- a/libX11/man/DefaultGC.man
+++ b/libX11/man/DefaultGC.man
@@ -1 +1 @@
-.so man__libmansuffix__/AllPlanes.__libmansuffix__
+.so man__libmansuffix__/AllPlanes.__libmansuffix__
diff --git a/libX11/man/DefaultGCOfScreen.man b/libX11/man/DefaultGCOfScreen.man
index c69be9763..1bb28e72e 100644
--- a/libX11/man/DefaultGCOfScreen.man
+++ b/libX11/man/DefaultGCOfScreen.man
@@ -1 +1 @@
-.so man__libmansuffix__/BlackPixelOfScreen.__libmansuffix__
+.so man__libmansuffix__/BlackPixelOfScreen.__libmansuffix__
diff --git a/libX11/man/DefaultRootWindow.man b/libX11/man/DefaultRootWindow.man
index 963c4fe94..7949dfafa 100644
--- a/libX11/man/DefaultRootWindow.man
+++ b/libX11/man/DefaultRootWindow.man
@@ -1 +1 @@
-.so man__libmansuffix__/AllPlanes.__libmansuffix__
+.so man__libmansuffix__/AllPlanes.__libmansuffix__
diff --git a/libX11/man/DefaultScreen.man b/libX11/man/DefaultScreen.man
index 963c4fe94..7949dfafa 100644
--- a/libX11/man/DefaultScreen.man
+++ b/libX11/man/DefaultScreen.man
@@ -1 +1 @@
-.so man__libmansuffix__/AllPlanes.__libmansuffix__
+.so man__libmansuffix__/AllPlanes.__libmansuffix__
diff --git a/libX11/man/DefaultScreenOfDisplay.man b/libX11/man/DefaultScreenOfDisplay.man
index 963c4fe94..7949dfafa 100644
--- a/libX11/man/DefaultScreenOfDisplay.man
+++ b/libX11/man/DefaultScreenOfDisplay.man
@@ -1 +1 @@
-.so man__libmansuffix__/AllPlanes.__libmansuffix__
+.so man__libmansuffix__/AllPlanes.__libmansuffix__
diff --git a/libX11/man/DefaultVisual.man b/libX11/man/DefaultVisual.man
index 963c4fe94..7949dfafa 100644
--- a/libX11/man/DefaultVisual.man
+++ b/libX11/man/DefaultVisual.man
@@ -1 +1 @@
-.so man__libmansuffix__/AllPlanes.__libmansuffix__
+.so man__libmansuffix__/AllPlanes.__libmansuffix__
diff --git a/libX11/man/DefaultVisualOfScreen.man b/libX11/man/DefaultVisualOfScreen.man
index c69be9763..1bb28e72e 100644
--- a/libX11/man/DefaultVisualOfScreen.man
+++ b/libX11/man/DefaultVisualOfScreen.man
@@ -1 +1 @@
-.so man__libmansuffix__/BlackPixelOfScreen.__libmansuffix__
+.so man__libmansuffix__/BlackPixelOfScreen.__libmansuffix__
diff --git a/libX11/man/DisplayCells.man b/libX11/man/DisplayCells.man
index 963c4fe94..7949dfafa 100644
--- a/libX11/man/DisplayCells.man
+++ b/libX11/man/DisplayCells.man
@@ -1 +1 @@
-.so man__libmansuffix__/AllPlanes.__libmansuffix__
+.so man__libmansuffix__/AllPlanes.__libmansuffix__
diff --git a/libX11/man/DisplayHeight.man b/libX11/man/DisplayHeight.man
index 0a59afe46..4e270949c 100644
--- a/libX11/man/DisplayHeight.man
+++ b/libX11/man/DisplayHeight.man
@@ -1 +1 @@
-.so man__libmansuffix__/ImageByteOrder.__libmansuffix__
+.so man__libmansuffix__/ImageByteOrder.__libmansuffix__
diff --git a/libX11/man/DisplayHeightMM.man b/libX11/man/DisplayHeightMM.man
index 0a59afe46..4e270949c 100644
--- a/libX11/man/DisplayHeightMM.man
+++ b/libX11/man/DisplayHeightMM.man
@@ -1 +1 @@
-.so man__libmansuffix__/ImageByteOrder.__libmansuffix__
+.so man__libmansuffix__/ImageByteOrder.__libmansuffix__
diff --git a/libX11/man/DisplayOfScreen.man b/libX11/man/DisplayOfScreen.man
index c69be9763..1bb28e72e 100644
--- a/libX11/man/DisplayOfScreen.man
+++ b/libX11/man/DisplayOfScreen.man
@@ -1 +1 @@
-.so man__libmansuffix__/BlackPixelOfScreen.__libmansuffix__
+.so man__libmansuffix__/BlackPixelOfScreen.__libmansuffix__
diff --git a/libX11/man/DisplayPlanes.man b/libX11/man/DisplayPlanes.man
index 963c4fe94..7949dfafa 100644
--- a/libX11/man/DisplayPlanes.man
+++ b/libX11/man/DisplayPlanes.man
@@ -1 +1 @@
-.so man__libmansuffix__/AllPlanes.__libmansuffix__
+.so man__libmansuffix__/AllPlanes.__libmansuffix__
diff --git a/libX11/man/DisplayString.man b/libX11/man/DisplayString.man
index 963c4fe94..7949dfafa 100644
--- a/libX11/man/DisplayString.man
+++ b/libX11/man/DisplayString.man
@@ -1 +1 @@
-.so man__libmansuffix__/AllPlanes.__libmansuffix__
+.so man__libmansuffix__/AllPlanes.__libmansuffix__
diff --git a/libX11/man/DisplayWidth.man b/libX11/man/DisplayWidth.man
index 0a59afe46..4e270949c 100644
--- a/libX11/man/DisplayWidth.man
+++ b/libX11/man/DisplayWidth.man
@@ -1 +1 @@
-.so man__libmansuffix__/ImageByteOrder.__libmansuffix__
+.so man__libmansuffix__/ImageByteOrder.__libmansuffix__
diff --git a/libX11/man/DisplayWidthMM.man b/libX11/man/DisplayWidthMM.man
index 0a59afe46..4e270949c 100644
--- a/libX11/man/DisplayWidthMM.man
+++ b/libX11/man/DisplayWidthMM.man
@@ -1 +1 @@
-.so man__libmansuffix__/ImageByteOrder.__libmansuffix__
+.so man__libmansuffix__/ImageByteOrder.__libmansuffix__
diff --git a/libX11/man/DoesBackingStore.man b/libX11/man/DoesBackingStore.man
index c69be9763..1bb28e72e 100644
--- a/libX11/man/DoesBackingStore.man
+++ b/libX11/man/DoesBackingStore.man
@@ -1 +1 @@
-.so man__libmansuffix__/BlackPixelOfScreen.__libmansuffix__
+.so man__libmansuffix__/BlackPixelOfScreen.__libmansuffix__
diff --git a/libX11/man/DoesSaveUnders.man b/libX11/man/DoesSaveUnders.man
index c69be9763..1bb28e72e 100644
--- a/libX11/man/DoesSaveUnders.man
+++ b/libX11/man/DoesSaveUnders.man
@@ -1 +1 @@
-.so man__libmansuffix__/BlackPixelOfScreen.__libmansuffix__
+.so man__libmansuffix__/BlackPixelOfScreen.__libmansuffix__
diff --git a/libX11/man/EventMaskOfScreen.man b/libX11/man/EventMaskOfScreen.man
index c69be9763..1bb28e72e 100644
--- a/libX11/man/EventMaskOfScreen.man
+++ b/libX11/man/EventMaskOfScreen.man
@@ -1 +1 @@
-.so man__libmansuffix__/BlackPixelOfScreen.__libmansuffix__
+.so man__libmansuffix__/BlackPixelOfScreen.__libmansuffix__
diff --git a/libX11/man/HeightMMOfScreen.man b/libX11/man/HeightMMOfScreen.man
index c69be9763..1bb28e72e 100644
--- a/libX11/man/HeightMMOfScreen.man
+++ b/libX11/man/HeightMMOfScreen.man
@@ -1 +1 @@
-.so man__libmansuffix__/BlackPixelOfScreen.__libmansuffix__
+.so man__libmansuffix__/BlackPixelOfScreen.__libmansuffix__
diff --git a/libX11/man/HeightOfScreen.man b/libX11/man/HeightOfScreen.man
index c69be9763..1bb28e72e 100644
--- a/libX11/man/HeightOfScreen.man
+++ b/libX11/man/HeightOfScreen.man
@@ -1 +1 @@
-.so man__libmansuffix__/BlackPixelOfScreen.__libmansuffix__
+.so man__libmansuffix__/BlackPixelOfScreen.__libmansuffix__
diff --git a/libX11/man/IsFunctionKey.man b/libX11/man/IsFunctionKey.man
index 2867ce2ad..3153032bc 100644
--- a/libX11/man/IsFunctionKey.man
+++ b/libX11/man/IsFunctionKey.man
@@ -1 +1 @@
-.so man__libmansuffix__/IsCursorKey.__libmansuffix__
+.so man__libmansuffix__/IsCursorKey.__libmansuffix__
diff --git a/libX11/man/IsKeypadKey.man b/libX11/man/IsKeypadKey.man
index 2867ce2ad..3153032bc 100644
--- a/libX11/man/IsKeypadKey.man
+++ b/libX11/man/IsKeypadKey.man
@@ -1 +1 @@
-.so man__libmansuffix__/IsCursorKey.__libmansuffix__
+.so man__libmansuffix__/IsCursorKey.__libmansuffix__
diff --git a/libX11/man/IsMiscFunctionKey.man b/libX11/man/IsMiscFunctionKey.man
index 2867ce2ad..3153032bc 100644
--- a/libX11/man/IsMiscFunctionKey.man
+++ b/libX11/man/IsMiscFunctionKey.man
@@ -1 +1 @@
-.so man__libmansuffix__/IsCursorKey.__libmansuffix__
+.so man__libmansuffix__/IsCursorKey.__libmansuffix__
diff --git a/libX11/man/IsModifierKey.man b/libX11/man/IsModifierKey.man
index 2867ce2ad..3153032bc 100644
--- a/libX11/man/IsModifierKey.man
+++ b/libX11/man/IsModifierKey.man
@@ -1 +1 @@
-.so man__libmansuffix__/IsCursorKey.__libmansuffix__
+.so man__libmansuffix__/IsCursorKey.__libmansuffix__
diff --git a/libX11/man/IsPFKey.man b/libX11/man/IsPFKey.man
index 2867ce2ad..3153032bc 100644
--- a/libX11/man/IsPFKey.man
+++ b/libX11/man/IsPFKey.man
@@ -1 +1 @@
-.so man__libmansuffix__/IsCursorKey.__libmansuffix__
+.so man__libmansuffix__/IsCursorKey.__libmansuffix__
diff --git a/libX11/man/IsPrivateKeypadKey.man b/libX11/man/IsPrivateKeypadKey.man
index 2867ce2ad..3153032bc 100644
--- a/libX11/man/IsPrivateKeypadKey.man
+++ b/libX11/man/IsPrivateKeypadKey.man
@@ -1 +1 @@
-.so man__libmansuffix__/IsCursorKey.__libmansuffix__
+.so man__libmansuffix__/IsCursorKey.__libmansuffix__
diff --git a/libX11/man/LastKnownRequestProcessed.man b/libX11/man/LastKnownRequestProcessed.man
index 963c4fe94..7949dfafa 100644
--- a/libX11/man/LastKnownRequestProcessed.man
+++ b/libX11/man/LastKnownRequestProcessed.man
@@ -1 +1 @@
-.so man__libmansuffix__/AllPlanes.__libmansuffix__
+.so man__libmansuffix__/AllPlanes.__libmansuffix__
diff --git a/libX11/man/MaxCmapsOfScreen.man b/libX11/man/MaxCmapsOfScreen.man
index c69be9763..1bb28e72e 100644
--- a/libX11/man/MaxCmapsOfScreen.man
+++ b/libX11/man/MaxCmapsOfScreen.man
@@ -1 +1 @@
-.so man__libmansuffix__/BlackPixelOfScreen.__libmansuffix__
+.so man__libmansuffix__/BlackPixelOfScreen.__libmansuffix__
diff --git a/libX11/man/MinCmapsOfScreen.man b/libX11/man/MinCmapsOfScreen.man
index c69be9763..1bb28e72e 100644
--- a/libX11/man/MinCmapsOfScreen.man
+++ b/libX11/man/MinCmapsOfScreen.man
@@ -1 +1 @@
-.so man__libmansuffix__/BlackPixelOfScreen.__libmansuffix__
+.so man__libmansuffix__/BlackPixelOfScreen.__libmansuffix__
diff --git a/libX11/man/NextRequest.man b/libX11/man/NextRequest.man
index 963c4fe94..7949dfafa 100644
--- a/libX11/man/NextRequest.man
+++ b/libX11/man/NextRequest.man
@@ -1 +1 @@
-.so man__libmansuffix__/AllPlanes.__libmansuffix__
+.so man__libmansuffix__/AllPlanes.__libmansuffix__
diff --git a/libX11/man/PlanesOfScreen.man b/libX11/man/PlanesOfScreen.man
index c69be9763..1bb28e72e 100644
--- a/libX11/man/PlanesOfScreen.man
+++ b/libX11/man/PlanesOfScreen.man
@@ -1 +1 @@
-.so man__libmansuffix__/BlackPixelOfScreen.__libmansuffix__
+.so man__libmansuffix__/BlackPixelOfScreen.__libmansuffix__
diff --git a/libX11/man/ProtocolRevision.man b/libX11/man/ProtocolRevision.man
index 963c4fe94..7949dfafa 100644
--- a/libX11/man/ProtocolRevision.man
+++ b/libX11/man/ProtocolRevision.man
@@ -1 +1 @@
-.so man__libmansuffix__/AllPlanes.__libmansuffix__
+.so man__libmansuffix__/AllPlanes.__libmansuffix__
diff --git a/libX11/man/ProtocolVersion.man b/libX11/man/ProtocolVersion.man
index 963c4fe94..7949dfafa 100644
--- a/libX11/man/ProtocolVersion.man
+++ b/libX11/man/ProtocolVersion.man
@@ -1 +1 @@
-.so man__libmansuffix__/AllPlanes.__libmansuffix__
+.so man__libmansuffix__/AllPlanes.__libmansuffix__
diff --git a/libX11/man/QLength.man b/libX11/man/QLength.man
index 963c4fe94..7949dfafa 100644
--- a/libX11/man/QLength.man
+++ b/libX11/man/QLength.man
@@ -1 +1 @@
-.so man__libmansuffix__/AllPlanes.__libmansuffix__
+.so man__libmansuffix__/AllPlanes.__libmansuffix__
diff --git a/libX11/man/RootWindow.man b/libX11/man/RootWindow.man
index 963c4fe94..7949dfafa 100644
--- a/libX11/man/RootWindow.man
+++ b/libX11/man/RootWindow.man
@@ -1 +1 @@
-.so man__libmansuffix__/AllPlanes.__libmansuffix__
+.so man__libmansuffix__/AllPlanes.__libmansuffix__
diff --git a/libX11/man/RootWindowOfScreen.man b/libX11/man/RootWindowOfScreen.man
index c69be9763..1bb28e72e 100644
--- a/libX11/man/RootWindowOfScreen.man
+++ b/libX11/man/RootWindowOfScreen.man
@@ -1 +1 @@
-.so man__libmansuffix__/BlackPixelOfScreen.__libmansuffix__
+.so man__libmansuffix__/BlackPixelOfScreen.__libmansuffix__
diff --git a/libX11/man/ScreenCount.man b/libX11/man/ScreenCount.man
index 963c4fe94..7949dfafa 100644
--- a/libX11/man/ScreenCount.man
+++ b/libX11/man/ScreenCount.man
@@ -1 +1 @@
-.so man__libmansuffix__/AllPlanes.__libmansuffix__
+.so man__libmansuffix__/AllPlanes.__libmansuffix__
diff --git a/libX11/man/ScreenNumberOfCCC.man b/libX11/man/ScreenNumberOfCCC.man
index 5feb8b936..fd4e759bb 100644
--- a/libX11/man/ScreenNumberOfCCC.man
+++ b/libX11/man/ScreenNumberOfCCC.man
@@ -1 +1 @@
-.so man__libmansuffix__/DisplayOfCCC.__libmansuffix__
+.so man__libmansuffix__/DisplayOfCCC.__libmansuffix__
diff --git a/libX11/man/ScreenOfDisplay.man b/libX11/man/ScreenOfDisplay.man
index 963c4fe94..7949dfafa 100644
--- a/libX11/man/ScreenOfDisplay.man
+++ b/libX11/man/ScreenOfDisplay.man
@@ -1 +1 @@
-.so man__libmansuffix__/AllPlanes.__libmansuffix__
+.so man__libmansuffix__/AllPlanes.__libmansuffix__
diff --git a/libX11/man/ScreenWhitePointOfCCC.man b/libX11/man/ScreenWhitePointOfCCC.man
index 5feb8b936..fd4e759bb 100644
--- a/libX11/man/ScreenWhitePointOfCCC.man
+++ b/libX11/man/ScreenWhitePointOfCCC.man
@@ -1 +1 @@
-.so man__libmansuffix__/DisplayOfCCC.__libmansuffix__
+.so man__libmansuffix__/DisplayOfCCC.__libmansuffix__
diff --git a/libX11/man/ServerVendor.man b/libX11/man/ServerVendor.man
index 963c4fe94..7949dfafa 100644
--- a/libX11/man/ServerVendor.man
+++ b/libX11/man/ServerVendor.man
@@ -1 +1 @@
-.so man__libmansuffix__/AllPlanes.__libmansuffix__
+.so man__libmansuffix__/AllPlanes.__libmansuffix__
diff --git a/libX11/man/VendorRelease.man b/libX11/man/VendorRelease.man
index 963c4fe94..7949dfafa 100644
--- a/libX11/man/VendorRelease.man
+++ b/libX11/man/VendorRelease.man
@@ -1 +1 @@
-.so man__libmansuffix__/AllPlanes.__libmansuffix__
+.so man__libmansuffix__/AllPlanes.__libmansuffix__
diff --git a/libX11/man/VisualOfCCC.man b/libX11/man/VisualOfCCC.man
index 5feb8b936..fd4e759bb 100644
--- a/libX11/man/VisualOfCCC.man
+++ b/libX11/man/VisualOfCCC.man
@@ -1 +1 @@
-.so man__libmansuffix__/DisplayOfCCC.__libmansuffix__
+.so man__libmansuffix__/DisplayOfCCC.__libmansuffix__
diff --git a/libX11/man/WhitePixel.man b/libX11/man/WhitePixel.man
index 963c4fe94..7949dfafa 100644
--- a/libX11/man/WhitePixel.man
+++ b/libX11/man/WhitePixel.man
@@ -1 +1 @@
-.so man__libmansuffix__/AllPlanes.__libmansuffix__
+.so man__libmansuffix__/AllPlanes.__libmansuffix__
diff --git a/libX11/man/WhitePixelOfScreen.man b/libX11/man/WhitePixelOfScreen.man
index c69be9763..1bb28e72e 100644
--- a/libX11/man/WhitePixelOfScreen.man
+++ b/libX11/man/WhitePixelOfScreen.man
@@ -1 +1 @@
-.so man__libmansuffix__/BlackPixelOfScreen.__libmansuffix__
+.so man__libmansuffix__/BlackPixelOfScreen.__libmansuffix__
diff --git a/libX11/man/WidthMMOfScreen.man b/libX11/man/WidthMMOfScreen.man
index c69be9763..1bb28e72e 100644
--- a/libX11/man/WidthMMOfScreen.man
+++ b/libX11/man/WidthMMOfScreen.man
@@ -1 +1 @@
-.so man__libmansuffix__/BlackPixelOfScreen.__libmansuffix__
+.so man__libmansuffix__/BlackPixelOfScreen.__libmansuffix__
diff --git a/libX11/man/WidthOfScreen.man b/libX11/man/WidthOfScreen.man
index c69be9763..1bb28e72e 100644
--- a/libX11/man/WidthOfScreen.man
+++ b/libX11/man/WidthOfScreen.man
@@ -1 +1 @@
-.so man__libmansuffix__/BlackPixelOfScreen.__libmansuffix__
+.so man__libmansuffix__/BlackPixelOfScreen.__libmansuffix__
diff --git a/libX11/man/XActivateScreenSaver.man b/libX11/man/XActivateScreenSaver.man
index 35198d594..13eba4e21 100644
--- a/libX11/man/XActivateScreenSaver.man
+++ b/libX11/man/XActivateScreenSaver.man
@@ -1 +1 @@
-.so man__libmansuffix__/XSetScreenSaver.__libmansuffix__
+.so man__libmansuffix__/XSetScreenSaver.__libmansuffix__
diff --git a/libX11/man/XAddHosts.man b/libX11/man/XAddHosts.man
index 8efac194e..13e833b46 100644
--- a/libX11/man/XAddHosts.man
+++ b/libX11/man/XAddHosts.man
@@ -1 +1 @@
-.so man__libmansuffix__/XAddHost.__libmansuffix__
+.so man__libmansuffix__/XAddHost.__libmansuffix__
diff --git a/libX11/man/XAddPixel.man b/libX11/man/XAddPixel.man
index 8fe560159..19e5be335 100644
--- a/libX11/man/XAddPixel.man
+++ b/libX11/man/XAddPixel.man
@@ -1 +1 @@
-.so man__libmansuffix__/XInitImage.__libmansuffix__
+.so man__libmansuffix__/XInitImage.__libmansuffix__
diff --git a/libX11/man/XAddToSaveSet.man b/libX11/man/XAddToSaveSet.man
index 0ea6bfcfc..b690595ce 100644
--- a/libX11/man/XAddToSaveSet.man
+++ b/libX11/man/XAddToSaveSet.man
@@ -1 +1 @@
-.so man__libmansuffix__/XChangeSaveSet.__libmansuffix__
+.so man__libmansuffix__/XChangeSaveSet.__libmansuffix__
diff --git a/libX11/man/XAllocColorCells.man b/libX11/man/XAllocColorCells.man
index 843a17fc9..5d64d87d1 100644
--- a/libX11/man/XAllocColorCells.man
+++ b/libX11/man/XAllocColorCells.man
@@ -1 +1 @@
-.so man__libmansuffix__/XAllocColor.__libmansuffix__
+.so man__libmansuffix__/XAllocColor.__libmansuffix__
diff --git a/libX11/man/XAllocColorPlanes.man b/libX11/man/XAllocColorPlanes.man
index 843a17fc9..5d64d87d1 100644
--- a/libX11/man/XAllocColorPlanes.man
+++ b/libX11/man/XAllocColorPlanes.man
@@ -1 +1 @@
-.so man__libmansuffix__/XAllocColor.__libmansuffix__
+.so man__libmansuffix__/XAllocColor.__libmansuffix__
diff --git a/libX11/man/XAllocNamedColor.man b/libX11/man/XAllocNamedColor.man
index 843a17fc9..5d64d87d1 100644
--- a/libX11/man/XAllocNamedColor.man
+++ b/libX11/man/XAllocNamedColor.man
@@ -1 +1 @@
-.so man__libmansuffix__/XAllocColor.__libmansuffix__
+.so man__libmansuffix__/XAllocColor.__libmansuffix__
diff --git a/libX11/man/XArc.man b/libX11/man/XArc.man
index 71f63e1e2..30b9b85bb 100644
--- a/libX11/man/XArc.man
+++ b/libX11/man/XArc.man
@@ -1 +1 @@
-.so man__libmansuffix__/XDrawArc.__libmansuffix__
+.so man__libmansuffix__/XDrawArc.__libmansuffix__
diff --git a/libX11/man/XAutoRepeatOff.man b/libX11/man/XAutoRepeatOff.man
index 528cea2d7..4434d0119 100644
--- a/libX11/man/XAutoRepeatOff.man
+++ b/libX11/man/XAutoRepeatOff.man
@@ -1 +1 @@
-.so man__libmansuffix__/XChangeKeyboardControl.__libmansuffix__
+.so man__libmansuffix__/XChangeKeyboardControl.__libmansuffix__
diff --git a/libX11/man/XAutoRepeatOn.man b/libX11/man/XAutoRepeatOn.man
index 528cea2d7..4434d0119 100644
--- a/libX11/man/XAutoRepeatOn.man
+++ b/libX11/man/XAutoRepeatOn.man
@@ -1 +1 @@
-.so man__libmansuffix__/XChangeKeyboardControl.__libmansuffix__
+.so man__libmansuffix__/XChangeKeyboardControl.__libmansuffix__
diff --git a/libX11/man/XBaseFontNameListOfFontSet.man b/libX11/man/XBaseFontNameListOfFontSet.man
index 48ea35b67..ba0cd7673 100644
--- a/libX11/man/XBaseFontNameListOfFontSet.man
+++ b/libX11/man/XBaseFontNameListOfFontSet.man
@@ -1 +1 @@
-.so man__libmansuffix__/XFontsOfFontSet.__libmansuffix__
+.so man__libmansuffix__/XFontsOfFontSet.__libmansuffix__
diff --git a/libX11/man/XBell.man b/libX11/man/XBell.man
index 528cea2d7..4434d0119 100644
--- a/libX11/man/XBell.man
+++ b/libX11/man/XBell.man
@@ -1 +1 @@
-.so man__libmansuffix__/XChangeKeyboardControl.__libmansuffix__
+.so man__libmansuffix__/XChangeKeyboardControl.__libmansuffix__
diff --git a/libX11/man/XChangeActivePointerGrab.man b/libX11/man/XChangeActivePointerGrab.man
index 93259b8c3..fce304128 100644
--- a/libX11/man/XChangeActivePointerGrab.man
+++ b/libX11/man/XChangeActivePointerGrab.man
@@ -1 +1 @@
-.so man__libmansuffix__/XGrabPointer.__libmansuffix__
+.so man__libmansuffix__/XGrabPointer.__libmansuffix__
diff --git a/libX11/man/XChangeGC.man b/libX11/man/XChangeGC.man
index dec9f1eb7..927a6a942 100644
--- a/libX11/man/XChangeGC.man
+++ b/libX11/man/XChangeGC.man
@@ -1 +1 @@
-.so man__libmansuffix__/XCreateGC.__libmansuffix__
+.so man__libmansuffix__/XCreateGC.__libmansuffix__
diff --git a/libX11/man/XChangeProperty.man b/libX11/man/XChangeProperty.man
index e265d7d69..ce26c3d38 100644
--- a/libX11/man/XChangeProperty.man
+++ b/libX11/man/XChangeProperty.man
@@ -1 +1 @@
-.so man__libmansuffix__/XGetWindowProperty.__libmansuffix__
+.so man__libmansuffix__/XGetWindowProperty.__libmansuffix__
diff --git a/libX11/man/XChar2b.man b/libX11/man/XChar2b.man
index 8b44e8513..ca6fa1f21 100644
--- a/libX11/man/XChar2b.man
+++ b/libX11/man/XChar2b.man
@@ -1 +1 @@
-.so man__libmansuffix__/XLoadFont.__libmansuffix__
+.so man__libmansuffix__/XLoadFont.__libmansuffix__
diff --git a/libX11/man/XCharStruct.man b/libX11/man/XCharStruct.man
index 8b44e8513..ca6fa1f21 100644
--- a/libX11/man/XCharStruct.man
+++ b/libX11/man/XCharStruct.man
@@ -1 +1 @@
-.so man__libmansuffix__/XLoadFont.__libmansuffix__
+.so man__libmansuffix__/XLoadFont.__libmansuffix__
diff --git a/libX11/man/XCheckIfEvent.man b/libX11/man/XCheckIfEvent.man
index 5970130fb..089e0a46d 100644
--- a/libX11/man/XCheckIfEvent.man
+++ b/libX11/man/XCheckIfEvent.man
@@ -1 +1 @@
-.so man__libmansuffix__/XIfEvent.__libmansuffix__
+.so man__libmansuffix__/XIfEvent.__libmansuffix__
diff --git a/libX11/man/XCheckMaskEvent.man b/libX11/man/XCheckMaskEvent.man
index f421b8caa..6f5346e36 100644
--- a/libX11/man/XCheckMaskEvent.man
+++ b/libX11/man/XCheckMaskEvent.man
@@ -1 +1 @@
-.so man__libmansuffix__/XNextEvent.__libmansuffix__
+.so man__libmansuffix__/XNextEvent.__libmansuffix__
diff --git a/libX11/man/XCheckTypedEvent.man b/libX11/man/XCheckTypedEvent.man
index f421b8caa..6f5346e36 100644
--- a/libX11/man/XCheckTypedEvent.man
+++ b/libX11/man/XCheckTypedEvent.man
@@ -1 +1 @@
-.so man__libmansuffix__/XNextEvent.__libmansuffix__
+.so man__libmansuffix__/XNextEvent.__libmansuffix__
diff --git a/libX11/man/XCheckTypedWindowEvent.man b/libX11/man/XCheckTypedWindowEvent.man
index f421b8caa..6f5346e36 100644
--- a/libX11/man/XCheckTypedWindowEvent.man
+++ b/libX11/man/XCheckTypedWindowEvent.man
@@ -1 +1 @@
-.so man__libmansuffix__/XNextEvent.__libmansuffix__
+.so man__libmansuffix__/XNextEvent.__libmansuffix__
diff --git a/libX11/man/XCheckWindowEvent.man b/libX11/man/XCheckWindowEvent.man
index f421b8caa..6f5346e36 100644
--- a/libX11/man/XCheckWindowEvent.man
+++ b/libX11/man/XCheckWindowEvent.man
@@ -1 +1 @@
-.so man__libmansuffix__/XNextEvent.__libmansuffix__
+.so man__libmansuffix__/XNextEvent.__libmansuffix__
diff --git a/libX11/man/XCirculateSubwindows.man b/libX11/man/XCirculateSubwindows.man
index 61d7a2348..37f4b5f8b 100644
--- a/libX11/man/XCirculateSubwindows.man
+++ b/libX11/man/XCirculateSubwindows.man
@@ -1 +1 @@
-.so man__libmansuffix__/XRaiseWindow.__libmansuffix__
+.so man__libmansuffix__/XRaiseWindow.__libmansuffix__
diff --git a/libX11/man/XCirculateSubwindowsDown.man b/libX11/man/XCirculateSubwindowsDown.man
index 61d7a2348..37f4b5f8b 100644
--- a/libX11/man/XCirculateSubwindowsDown.man
+++ b/libX11/man/XCirculateSubwindowsDown.man
@@ -1 +1 @@
-.so man__libmansuffix__/XRaiseWindow.__libmansuffix__
+.so man__libmansuffix__/XRaiseWindow.__libmansuffix__
diff --git a/libX11/man/XCirculateSubwindowsUp.man b/libX11/man/XCirculateSubwindowsUp.man
index 61d7a2348..37f4b5f8b 100644
--- a/libX11/man/XCirculateSubwindowsUp.man
+++ b/libX11/man/XCirculateSubwindowsUp.man
@@ -1 +1 @@
-.so man__libmansuffix__/XRaiseWindow.__libmansuffix__
+.so man__libmansuffix__/XRaiseWindow.__libmansuffix__
diff --git a/libX11/man/XClassHint.man b/libX11/man/XClassHint.man
index fc953a21b..02d6722d8 100644
--- a/libX11/man/XClassHint.man
+++ b/libX11/man/XClassHint.man
@@ -1 +1 @@
-.so man__libmansuffix__/XAllocClassHint.__libmansuffix__
+.so man__libmansuffix__/XAllocClassHint.__libmansuffix__
diff --git a/libX11/man/XClearWindow.man b/libX11/man/XClearWindow.man
index ca4582acc..a05a25d27 100644
--- a/libX11/man/XClearWindow.man
+++ b/libX11/man/XClearWindow.man
@@ -1 +1 @@
-.so man__libmansuffix__/XClearArea.__libmansuffix__
+.so man__libmansuffix__/XClearArea.__libmansuffix__
diff --git a/libX11/man/XClipBox.man b/libX11/man/XClipBox.man
index 06c8f86f2..24be75541 100644
--- a/libX11/man/XClipBox.man
+++ b/libX11/man/XClipBox.man
@@ -1 +1 @@
-.so man__libmansuffix__/XPolygonRegion.__libmansuffix__
+.so man__libmansuffix__/XPolygonRegion.__libmansuffix__
diff --git a/libX11/man/XCloseDisplay.man b/libX11/man/XCloseDisplay.man
index 6e5e6c03a..ba03d6fd4 100644
--- a/libX11/man/XCloseDisplay.man
+++ b/libX11/man/XCloseDisplay.man
@@ -1 +1 @@
-.so man__libmansuffix__/XOpenDisplay.__libmansuffix__
+.so man__libmansuffix__/XOpenDisplay.__libmansuffix__
diff --git a/libX11/man/XCloseIM.man b/libX11/man/XCloseIM.man
index 6d302b9cd..63654099c 100644
--- a/libX11/man/XCloseIM.man
+++ b/libX11/man/XCloseIM.man
@@ -1 +1 @@
-.so man__libmansuffix__/XOpenIM.__libmansuffix__
+.so man__libmansuffix__/XOpenIM.__libmansuffix__
diff --git a/libX11/man/XCloseOM.man b/libX11/man/XCloseOM.man
index d7e1adb03..3b4acf51a 100644
--- a/libX11/man/XCloseOM.man
+++ b/libX11/man/XCloseOM.man
@@ -1 +1 @@
-.so man__libmansuffix__/XOpenOM.__libmansuffix__
+.so man__libmansuffix__/XOpenOM.__libmansuffix__
diff --git a/libX11/man/XColor.man b/libX11/man/XColor.man
index 7a214a7a8..f9fb22821 100644
--- a/libX11/man/XColor.man
+++ b/libX11/man/XColor.man
@@ -1 +1 @@
-.so man__libmansuffix__/XCreateColormap.__libmansuffix__
+.so man__libmansuffix__/XCreateColormap.__libmansuffix__
diff --git a/libX11/man/XCompose.man b/libX11/man/XCompose.man
index 09e458290..e149c544e 100644
--- a/libX11/man/XCompose.man
+++ b/libX11/man/XCompose.man
@@ -1 +1 @@
-.so man__filemansuffix__/Compose.__filemansuffix__
+.so man__filemansuffix__/Compose.__filemansuffix__
diff --git a/libX11/man/XContextDependentDrawing.man b/libX11/man/XContextDependentDrawing.man
index 48ea35b67..ba0cd7673 100644
--- a/libX11/man/XContextDependentDrawing.man
+++ b/libX11/man/XContextDependentDrawing.man
@@ -1 +1 @@
-.so man__libmansuffix__/XFontsOfFontSet.__libmansuffix__
+.so man__libmansuffix__/XFontsOfFontSet.__libmansuffix__
diff --git a/libX11/man/XContextualDrawing.man b/libX11/man/XContextualDrawing.man
index 48ea35b67..ba0cd7673 100644
--- a/libX11/man/XContextualDrawing.man
+++ b/libX11/man/XContextualDrawing.man
@@ -1 +1 @@
-.so man__libmansuffix__/XFontsOfFontSet.__libmansuffix__
+.so man__libmansuffix__/XFontsOfFontSet.__libmansuffix__
diff --git a/libX11/man/XConvertCase.man b/libX11/man/XConvertCase.man
index 9126b791f..32bc40460 100644
--- a/libX11/man/XConvertCase.man
+++ b/libX11/man/XConvertCase.man
@@ -1 +1 @@
-.so man__libmansuffix__/XStringToKeysym.__libmansuffix__
+.so man__libmansuffix__/XStringToKeysym.__libmansuffix__
diff --git a/libX11/man/XConvertSelection.man b/libX11/man/XConvertSelection.man
index c8e52aa34..c33cbe839 100644
--- a/libX11/man/XConvertSelection.man
+++ b/libX11/man/XConvertSelection.man
@@ -1 +1 @@
-.so man__libmansuffix__/XSetSelectionOwner.__libmansuffix__
+.so man__libmansuffix__/XSetSelectionOwner.__libmansuffix__
diff --git a/libX11/man/XCopyColormapAndFree.man b/libX11/man/XCopyColormapAndFree.man
index 7a214a7a8..f9fb22821 100644
--- a/libX11/man/XCopyColormapAndFree.man
+++ b/libX11/man/XCopyColormapAndFree.man
@@ -1 +1 @@
-.so man__libmansuffix__/XCreateColormap.__libmansuffix__
+.so man__libmansuffix__/XCreateColormap.__libmansuffix__
diff --git a/libX11/man/XCopyGC.man b/libX11/man/XCopyGC.man
index dec9f1eb7..927a6a942 100644
--- a/libX11/man/XCopyGC.man
+++ b/libX11/man/XCopyGC.man
@@ -1 +1 @@
-.so man__libmansuffix__/XCreateGC.__libmansuffix__
+.so man__libmansuffix__/XCreateGC.__libmansuffix__
diff --git a/libX11/man/XCopyPlane.man b/libX11/man/XCopyPlane.man
index 9e6488817..db86e7e48 100644
--- a/libX11/man/XCopyPlane.man
+++ b/libX11/man/XCopyPlane.man
@@ -1 +1 @@
-.so man__libmansuffix__/XCopyArea.__libmansuffix__
+.so man__libmansuffix__/XCopyArea.__libmansuffix__
diff --git a/libX11/man/XCreateBitmapFromData.man b/libX11/man/XCreateBitmapFromData.man
index 9631570d0..ff0c27655 100644
--- a/libX11/man/XCreateBitmapFromData.man
+++ b/libX11/man/XCreateBitmapFromData.man
@@ -1 +1 @@
-.so man__libmansuffix__/XReadBitmapFile.__libmansuffix__
+.so man__libmansuffix__/XReadBitmapFile.__libmansuffix__
diff --git a/libX11/man/XCreateGlyphCursor.man b/libX11/man/XCreateGlyphCursor.man
index 1023b0611..73f953a33 100644
--- a/libX11/man/XCreateGlyphCursor.man
+++ b/libX11/man/XCreateGlyphCursor.man
@@ -1 +1 @@
-.so man__libmansuffix__/XCreateFontCursor.__libmansuffix__
+.so man__libmansuffix__/XCreateFontCursor.__libmansuffix__
diff --git a/libX11/man/XCreateImage.man b/libX11/man/XCreateImage.man
index 8fe560159..19e5be335 100644
--- a/libX11/man/XCreateImage.man
+++ b/libX11/man/XCreateImage.man
@@ -1 +1 @@
-.so man__libmansuffix__/XInitImage.__libmansuffix__
+.so man__libmansuffix__/XInitImage.__libmansuffix__
diff --git a/libX11/man/XCreatePixmapCursor.man b/libX11/man/XCreatePixmapCursor.man
index 1023b0611..73f953a33 100644
--- a/libX11/man/XCreatePixmapCursor.man
+++ b/libX11/man/XCreatePixmapCursor.man
@@ -1 +1 @@
-.so man__libmansuffix__/XCreateFontCursor.__libmansuffix__
+.so man__libmansuffix__/XCreateFontCursor.__libmansuffix__
diff --git a/libX11/man/XCreatePixmapFromBitmapData.man b/libX11/man/XCreatePixmapFromBitmapData.man
index 9631570d0..ff0c27655 100644
--- a/libX11/man/XCreatePixmapFromBitmapData.man
+++ b/libX11/man/XCreatePixmapFromBitmapData.man
@@ -1 +1 @@
-.so man__libmansuffix__/XReadBitmapFile.__libmansuffix__
+.so man__libmansuffix__/XReadBitmapFile.__libmansuffix__
diff --git a/libX11/man/XCreateSimpleWindow.man b/libX11/man/XCreateSimpleWindow.man
index 11440c64e..e24be5627 100644
--- a/libX11/man/XCreateSimpleWindow.man
+++ b/libX11/man/XCreateSimpleWindow.man
@@ -1 +1 @@
-.so man__libmansuffix__/XCreateWindow.__libmansuffix__
+.so man__libmansuffix__/XCreateWindow.__libmansuffix__
diff --git a/libX11/man/XDefaultString.man b/libX11/man/XDefaultString.man
index d73114782..5e871ab33 100644
--- a/libX11/man/XDefaultString.man
+++ b/libX11/man/XDefaultString.man
@@ -1 +1 @@
-.so man__libmansuffix__/XmbTextListToTextProperty.__libmansuffix__
+.so man__libmansuffix__/XmbTextListToTextProperty.__libmansuffix__
diff --git a/libX11/man/XDeleteContext.man b/libX11/man/XDeleteContext.man
index 60c71a492..f0b97473d 100644
--- a/libX11/man/XDeleteContext.man
+++ b/libX11/man/XDeleteContext.man
@@ -1 +1 @@
-.so man__libmansuffix__/XSaveContext.__libmansuffix__
+.so man__libmansuffix__/XSaveContext.__libmansuffix__
diff --git a/libX11/man/XDeleteModifiermapEntry.man b/libX11/man/XDeleteModifiermapEntry.man
index 013c70a95..cc772afae 100644
--- a/libX11/man/XDeleteModifiermapEntry.man
+++ b/libX11/man/XDeleteModifiermapEntry.man
@@ -1 +1 @@
-.so man__libmansuffix__/XChangeKeyboardMapping.__libmansuffix__
+.so man__libmansuffix__/XChangeKeyboardMapping.__libmansuffix__
diff --git a/libX11/man/XDeleteProperty.man b/libX11/man/XDeleteProperty.man
index e265d7d69..ce26c3d38 100644
--- a/libX11/man/XDeleteProperty.man
+++ b/libX11/man/XDeleteProperty.man
@@ -1 +1 @@
-.so man__libmansuffix__/XGetWindowProperty.__libmansuffix__
+.so man__libmansuffix__/XGetWindowProperty.__libmansuffix__
diff --git a/libX11/man/XDestroyIC.man b/libX11/man/XDestroyIC.man
index 652aa0330..2c9fd6629 100644
--- a/libX11/man/XDestroyIC.man
+++ b/libX11/man/XDestroyIC.man
@@ -1 +1 @@
-.so man__libmansuffix__/XCreateIC.__libmansuffix__
+.so man__libmansuffix__/XCreateIC.__libmansuffix__
diff --git a/libX11/man/XDestroyImage.man b/libX11/man/XDestroyImage.man
index 8fe560159..19e5be335 100644
--- a/libX11/man/XDestroyImage.man
+++ b/libX11/man/XDestroyImage.man
@@ -1 +1 @@
-.so man__libmansuffix__/XInitImage.__libmansuffix__
+.so man__libmansuffix__/XInitImage.__libmansuffix__
diff --git a/libX11/man/XDestroyOC.man b/libX11/man/XDestroyOC.man
index ece6d5ce7..12d5a3d53 100644
--- a/libX11/man/XDestroyOC.man
+++ b/libX11/man/XDestroyOC.man
@@ -1 +1 @@
-.so man__libmansuffix__/XCreateOC.__libmansuffix__
+.so man__libmansuffix__/XCreateOC.__libmansuffix__
diff --git a/libX11/man/XDestroyRegion.man b/libX11/man/XDestroyRegion.man
index 9e7e7d197..a643153b2 100644
--- a/libX11/man/XDestroyRegion.man
+++ b/libX11/man/XDestroyRegion.man
@@ -1 +1 @@
-.so man__libmansuffix__/XCreateRegion.__libmansuffix__
+.so man__libmansuffix__/XCreateRegion.__libmansuffix__
diff --git a/libX11/man/XDestroySubwindows.man b/libX11/man/XDestroySubwindows.man
index e81bc7ace..87e6e78cc 100644
--- a/libX11/man/XDestroySubwindows.man
+++ b/libX11/man/XDestroySubwindows.man
@@ -1 +1 @@
-.so man__libmansuffix__/XDestroyWindow.__libmansuffix__
+.so man__libmansuffix__/XDestroyWindow.__libmansuffix__
diff --git a/libX11/man/XDirectionalDependentDrawing.man b/libX11/man/XDirectionalDependentDrawing.man
index 48ea35b67..ba0cd7673 100644
--- a/libX11/man/XDirectionalDependentDrawing.man
+++ b/libX11/man/XDirectionalDependentDrawing.man
@@ -1 +1 @@
-.so man__libmansuffix__/XFontsOfFontSet.__libmansuffix__
+.so man__libmansuffix__/XFontsOfFontSet.__libmansuffix__
diff --git a/libX11/man/XDisableAccessControl.man b/libX11/man/XDisableAccessControl.man
index 8efac194e..13e833b46 100644
--- a/libX11/man/XDisableAccessControl.man
+++ b/libX11/man/XDisableAccessControl.man
@@ -1 +1 @@
-.so man__libmansuffix__/XAddHost.__libmansuffix__
+.so man__libmansuffix__/XAddHost.__libmansuffix__
diff --git a/libX11/man/XDisplayKeycodes.man b/libX11/man/XDisplayKeycodes.man
index 013c70a95..cc772afae 100644
--- a/libX11/man/XDisplayKeycodes.man
+++ b/libX11/man/XDisplayKeycodes.man
@@ -1 +1 @@
-.so man__libmansuffix__/XChangeKeyboardMapping.__libmansuffix__
+.so man__libmansuffix__/XChangeKeyboardMapping.__libmansuffix__
diff --git a/libX11/man/XDisplayMotionBufferSize.man b/libX11/man/XDisplayMotionBufferSize.man
index 708dee7c8..bfd75c0fd 100644
--- a/libX11/man/XDisplayMotionBufferSize.man
+++ b/libX11/man/XDisplayMotionBufferSize.man
@@ -1 +1 @@
-.so man__libmansuffix__/XSendEvent.__libmansuffix__
+.so man__libmansuffix__/XSendEvent.__libmansuffix__
diff --git a/libX11/man/XDisplayName.man b/libX11/man/XDisplayName.man
index 608900365..de67624e7 100644
--- a/libX11/man/XDisplayName.man
+++ b/libX11/man/XDisplayName.man
@@ -1 +1 @@
-.so man__libmansuffix__/XSetErrorHandler.__libmansuffix__
+.so man__libmansuffix__/XSetErrorHandler.__libmansuffix__
diff --git a/libX11/man/XDisplayOfIM.man b/libX11/man/XDisplayOfIM.man
index 6d302b9cd..63654099c 100644
--- a/libX11/man/XDisplayOfIM.man
+++ b/libX11/man/XDisplayOfIM.man
@@ -1 +1 @@
-.so man__libmansuffix__/XOpenIM.__libmansuffix__
+.so man__libmansuffix__/XOpenIM.__libmansuffix__
diff --git a/libX11/man/XDisplayOfOM.man b/libX11/man/XDisplayOfOM.man
index d7e1adb03..3b4acf51a 100644
--- a/libX11/man/XDisplayOfOM.man
+++ b/libX11/man/XDisplayOfOM.man
@@ -1 +1 @@
-.so man__libmansuffix__/XOpenOM.__libmansuffix__
+.so man__libmansuffix__/XOpenOM.__libmansuffix__
diff --git a/libX11/man/XDrawArcs.man b/libX11/man/XDrawArcs.man
index 71f63e1e2..30b9b85bb 100644
--- a/libX11/man/XDrawArcs.man
+++ b/libX11/man/XDrawArcs.man
@@ -1 +1 @@
-.so man__libmansuffix__/XDrawArc.__libmansuffix__
+.so man__libmansuffix__/XDrawArc.__libmansuffix__
diff --git a/libX11/man/XDrawImageString16.man b/libX11/man/XDrawImageString16.man
index e2de3d0ae..ff07b256e 100644
--- a/libX11/man/XDrawImageString16.man
+++ b/libX11/man/XDrawImageString16.man
@@ -1 +1 @@
-.so man__libmansuffix__/XDrawImageString.__libmansuffix__
+.so man__libmansuffix__/XDrawImageString.__libmansuffix__
diff --git a/libX11/man/XDrawLines.man b/libX11/man/XDrawLines.man
index a361976a0..ae1ad04e0 100644
--- a/libX11/man/XDrawLines.man
+++ b/libX11/man/XDrawLines.man
@@ -1 +1 @@
-.so man__libmansuffix__/XDrawLine.__libmansuffix__
+.so man__libmansuffix__/XDrawLine.__libmansuffix__
diff --git a/libX11/man/XDrawPoints.man b/libX11/man/XDrawPoints.man
index 268cdcd97..972f3c12b 100644
--- a/libX11/man/XDrawPoints.man
+++ b/libX11/man/XDrawPoints.man
@@ -1 +1 @@
-.so man__libmansuffix__/XDrawPoint.__libmansuffix__
+.so man__libmansuffix__/XDrawPoint.__libmansuffix__
diff --git a/libX11/man/XDrawRectangles.man b/libX11/man/XDrawRectangles.man
index 0def1f675..9bb2a5091 100644
--- a/libX11/man/XDrawRectangles.man
+++ b/libX11/man/XDrawRectangles.man
@@ -1 +1 @@
-.so man__libmansuffix__/XDrawRectangle.__libmansuffix__
+.so man__libmansuffix__/XDrawRectangle.__libmansuffix__
diff --git a/libX11/man/XDrawSegments.man b/libX11/man/XDrawSegments.man
index a361976a0..ae1ad04e0 100644
--- a/libX11/man/XDrawSegments.man
+++ b/libX11/man/XDrawSegments.man
@@ -1 +1 @@
-.so man__libmansuffix__/XDrawLine.__libmansuffix__
+.so man__libmansuffix__/XDrawLine.__libmansuffix__
diff --git a/libX11/man/XDrawString16.man b/libX11/man/XDrawString16.man
index 15a747f8b..b044b7bae 100644
--- a/libX11/man/XDrawString16.man
+++ b/libX11/man/XDrawString16.man
@@ -1 +1 @@
-.so man__libmansuffix__/XDrawString.__libmansuffix__
+.so man__libmansuffix__/XDrawString.__libmansuffix__
diff --git a/libX11/man/XDrawText16.man b/libX11/man/XDrawText16.man
index cee50e8da..dfd6bfaf8 100644
--- a/libX11/man/XDrawText16.man
+++ b/libX11/man/XDrawText16.man
@@ -1 +1 @@
-.so man__libmansuffix__/XDrawText.__libmansuffix__
+.so man__libmansuffix__/XDrawText.__libmansuffix__
diff --git a/libX11/man/XEnableAccessControl.man b/libX11/man/XEnableAccessControl.man
index 8efac194e..13e833b46 100644
--- a/libX11/man/XEnableAccessControl.man
+++ b/libX11/man/XEnableAccessControl.man
@@ -1 +1 @@
-.so man__libmansuffix__/XAddHost.__libmansuffix__
+.so man__libmansuffix__/XAddHost.__libmansuffix__
diff --git a/libX11/man/XEqualRegion.man b/libX11/man/XEqualRegion.man
index 19b5dac0b..d2d2d038a 100644
--- a/libX11/man/XEqualRegion.man
+++ b/libX11/man/XEqualRegion.man
@@ -1 +1 @@
-.so man__libmansuffix__/XEmptyRegion.__libmansuffix__
+.so man__libmansuffix__/XEmptyRegion.__libmansuffix__
diff --git a/libX11/man/XEvent.man b/libX11/man/XEvent.man
index cda915d19..680f680ec 100644
--- a/libX11/man/XEvent.man
+++ b/libX11/man/XEvent.man
@@ -1 +1 @@
-.so man__libmansuffix__/XAnyEvent.__libmansuffix__
+.so man__libmansuffix__/XAnyEvent.__libmansuffix__
diff --git a/libX11/man/XEventsQueued.man b/libX11/man/XEventsQueued.man
index 170707ae0..1fc2e3e53 100644
--- a/libX11/man/XEventsQueued.man
+++ b/libX11/man/XEventsQueued.man
@@ -1 +1 @@
-.so man__libmansuffix__/XFlush.__libmansuffix__
+.so man__libmansuffix__/XFlush.__libmansuffix__
diff --git a/libX11/man/XExtendedMaxRequestSize.man b/libX11/man/XExtendedMaxRequestSize.man
index 963c4fe94..7949dfafa 100644
--- a/libX11/man/XExtendedMaxRequestSize.man
+++ b/libX11/man/XExtendedMaxRequestSize.man
@@ -1 +1 @@
-.so man__libmansuffix__/AllPlanes.__libmansuffix__
+.so man__libmansuffix__/AllPlanes.__libmansuffix__
diff --git a/libX11/man/XFetchBuffer.man b/libX11/man/XFetchBuffer.man
index c399f1c19..03d3c46f9 100644
--- a/libX11/man/XFetchBuffer.man
+++ b/libX11/man/XFetchBuffer.man
@@ -1 +1 @@
-.so man__libmansuffix__/XStoreBytes.__libmansuffix__
+.so man__libmansuffix__/XStoreBytes.__libmansuffix__
diff --git a/libX11/man/XFetchBytes.man b/libX11/man/XFetchBytes.man
index c399f1c19..03d3c46f9 100644
--- a/libX11/man/XFetchBytes.man
+++ b/libX11/man/XFetchBytes.man
@@ -1 +1 @@
-.so man__libmansuffix__/XStoreBytes.__libmansuffix__
+.so man__libmansuffix__/XStoreBytes.__libmansuffix__
diff --git a/libX11/man/XFetchName.man b/libX11/man/XFetchName.man
index 6b4fc7e7d..45257dc10 100644
--- a/libX11/man/XFetchName.man
+++ b/libX11/man/XFetchName.man
@@ -1 +1 @@
-.so man__libmansuffix__/XSetWMName.__libmansuffix__
+.so man__libmansuffix__/XSetWMName.__libmansuffix__
diff --git a/libX11/man/XFillArc.man b/libX11/man/XFillArc.man
index 10ca9226e..eecf0ed14 100644
--- a/libX11/man/XFillArc.man
+++ b/libX11/man/XFillArc.man
@@ -1 +1 @@
-.so man__libmansuffix__/XFillRectangle.__libmansuffix__
+.so man__libmansuffix__/XFillRectangle.__libmansuffix__
diff --git a/libX11/man/XFillArcs.man b/libX11/man/XFillArcs.man
index 10ca9226e..eecf0ed14 100644
--- a/libX11/man/XFillArcs.man
+++ b/libX11/man/XFillArcs.man
@@ -1 +1 @@
-.so man__libmansuffix__/XFillRectangle.__libmansuffix__
+.so man__libmansuffix__/XFillRectangle.__libmansuffix__
diff --git a/libX11/man/XFillPolygon.man b/libX11/man/XFillPolygon.man
index 10ca9226e..eecf0ed14 100644
--- a/libX11/man/XFillPolygon.man
+++ b/libX11/man/XFillPolygon.man
@@ -1 +1 @@
-.so man__libmansuffix__/XFillRectangle.__libmansuffix__
+.so man__libmansuffix__/XFillRectangle.__libmansuffix__
diff --git a/libX11/man/XFillRectangles.man b/libX11/man/XFillRectangles.man
index 10ca9226e..eecf0ed14 100644
--- a/libX11/man/XFillRectangles.man
+++ b/libX11/man/XFillRectangles.man
@@ -1 +1 @@
-.so man__libmansuffix__/XFillRectangle.__libmansuffix__
+.so man__libmansuffix__/XFillRectangle.__libmansuffix__
diff --git a/libX11/man/XFindContext.man b/libX11/man/XFindContext.man
index 60c71a492..f0b97473d 100644
--- a/libX11/man/XFindContext.man
+++ b/libX11/man/XFindContext.man
@@ -1 +1 @@
-.so man__libmansuffix__/XSaveContext.__libmansuffix__
+.so man__libmansuffix__/XSaveContext.__libmansuffix__
diff --git a/libX11/man/XFontProp.man b/libX11/man/XFontProp.man
index 8b44e8513..ca6fa1f21 100644
--- a/libX11/man/XFontProp.man
+++ b/libX11/man/XFontProp.man
@@ -1 +1 @@
-.so man__libmansuffix__/XLoadFont.__libmansuffix__
+.so man__libmansuffix__/XLoadFont.__libmansuffix__
diff --git a/libX11/man/XFontStruct.man b/libX11/man/XFontStruct.man
index 8b44e8513..ca6fa1f21 100644
--- a/libX11/man/XFontStruct.man
+++ b/libX11/man/XFontStruct.man
@@ -1 +1 @@
-.so man__libmansuffix__/XLoadFont.__libmansuffix__
+.so man__libmansuffix__/XLoadFont.__libmansuffix__
diff --git a/libX11/man/XForceScreenSaver.man b/libX11/man/XForceScreenSaver.man
index 35198d594..13eba4e21 100644
--- a/libX11/man/XForceScreenSaver.man
+++ b/libX11/man/XForceScreenSaver.man
@@ -1 +1 @@
-.so man__libmansuffix__/XSetScreenSaver.__libmansuffix__
+.so man__libmansuffix__/XSetScreenSaver.__libmansuffix__
diff --git a/libX11/man/XFreeColormap.man b/libX11/man/XFreeColormap.man
index 7a214a7a8..f9fb22821 100644
--- a/libX11/man/XFreeColormap.man
+++ b/libX11/man/XFreeColormap.man
@@ -1 +1 @@
-.so man__libmansuffix__/XCreateColormap.__libmansuffix__
+.so man__libmansuffix__/XCreateColormap.__libmansuffix__
diff --git a/libX11/man/XFreeColors.man b/libX11/man/XFreeColors.man
index 843a17fc9..5d64d87d1 100644
--- a/libX11/man/XFreeColors.man
+++ b/libX11/man/XFreeColors.man
@@ -1 +1 @@
-.so man__libmansuffix__/XAllocColor.__libmansuffix__
+.so man__libmansuffix__/XAllocColor.__libmansuffix__
diff --git a/libX11/man/XFreeCursor.man b/libX11/man/XFreeCursor.man
index 2600d2f3b..7f948889b 100644
--- a/libX11/man/XFreeCursor.man
+++ b/libX11/man/XFreeCursor.man
@@ -1 +1 @@
-.so man__libmansuffix__/XRecolorCursor.__libmansuffix__
+.so man__libmansuffix__/XRecolorCursor.__libmansuffix__
diff --git a/libX11/man/XFreeEventData.man b/libX11/man/XFreeEventData.man
index cf44d9698..3736bad29 100644
--- a/libX11/man/XFreeEventData.man
+++ b/libX11/man/XFreeEventData.man
@@ -1 +1 @@
-.so man__libmansuffix__/XGetEventData.__libmansuffix__
+.so man__libmansuffix__/XGetEventData.__libmansuffix__
diff --git a/libX11/man/XFreeExtensionList.man b/libX11/man/XFreeExtensionList.man
index d5ffc5c35..95e51b6ad 100644
--- a/libX11/man/XFreeExtensionList.man
+++ b/libX11/man/XFreeExtensionList.man
@@ -1 +1 @@
-.so man__libmansuffix__/XQueryExtension.__libmansuffix__
+.so man__libmansuffix__/XQueryExtension.__libmansuffix__
diff --git a/libX11/man/XFreeFont.man b/libX11/man/XFreeFont.man
index 8b44e8513..ca6fa1f21 100644
--- a/libX11/man/XFreeFont.man
+++ b/libX11/man/XFreeFont.man
@@ -1 +1 @@
-.so man__libmansuffix__/XLoadFont.__libmansuffix__
+.so man__libmansuffix__/XLoadFont.__libmansuffix__
diff --git a/libX11/man/XFreeFontInfo.man b/libX11/man/XFreeFontInfo.man
index 5c6200765..2df58d041 100644
--- a/libX11/man/XFreeFontInfo.man
+++ b/libX11/man/XFreeFontInfo.man
@@ -1 +1 @@
-.so man__libmansuffix__/XListFonts.__libmansuffix__
+.so man__libmansuffix__/XListFonts.__libmansuffix__
diff --git a/libX11/man/XFreeFontNames.man b/libX11/man/XFreeFontNames.man
index 5c6200765..2df58d041 100644
--- a/libX11/man/XFreeFontNames.man
+++ b/libX11/man/XFreeFontNames.man
@@ -1 +1 @@
-.so man__libmansuffix__/XListFonts.__libmansuffix__
+.so man__libmansuffix__/XListFonts.__libmansuffix__
diff --git a/libX11/man/XFreeFontPath.man b/libX11/man/XFreeFontPath.man
index 49b4723ce..bf81b9fc4 100644
--- a/libX11/man/XFreeFontPath.man
+++ b/libX11/man/XFreeFontPath.man
@@ -1 +1 @@
-.so man__libmansuffix__/XSetFontPath.__libmansuffix__
+.so man__libmansuffix__/XSetFontPath.__libmansuffix__
diff --git a/libX11/man/XFreeFontSet.man b/libX11/man/XFreeFontSet.man
index cda2771c0..55e4c6f97 100644
--- a/libX11/man/XFreeFontSet.man
+++ b/libX11/man/XFreeFontSet.man
@@ -1 +1 @@
-.so man__libmansuffix__/XCreateFontSet.__libmansuffix__
+.so man__libmansuffix__/XCreateFontSet.__libmansuffix__
diff --git a/libX11/man/XFreeGC.man b/libX11/man/XFreeGC.man
index dec9f1eb7..927a6a942 100644
--- a/libX11/man/XFreeGC.man
+++ b/libX11/man/XFreeGC.man
@@ -1 +1 @@
-.so man__libmansuffix__/XCreateGC.__libmansuffix__
+.so man__libmansuffix__/XCreateGC.__libmansuffix__
diff --git a/libX11/man/XFreePixmap.man b/libX11/man/XFreePixmap.man
index 36a302413..07599d04f 100644
--- a/libX11/man/XFreePixmap.man
+++ b/libX11/man/XFreePixmap.man
@@ -1 +1 @@
-.so man__libmansuffix__/XCreatePixmap.__libmansuffix__
+.so man__libmansuffix__/XCreatePixmap.__libmansuffix__
diff --git a/libX11/man/XFreeStringList.man b/libX11/man/XFreeStringList.man
index 70c3debc2..faf0beb80 100644
--- a/libX11/man/XFreeStringList.man
+++ b/libX11/man/XFreeStringList.man
@@ -1 +1 @@
-.so man__libmansuffix__/XStringListToTextProperty.__libmansuffix__
+.so man__libmansuffix__/XStringListToTextProperty.__libmansuffix__
diff --git a/libX11/man/XGCValues.man b/libX11/man/XGCValues.man
index dec9f1eb7..927a6a942 100644
--- a/libX11/man/XGCValues.man
+++ b/libX11/man/XGCValues.man
@@ -1 +1 @@
-.so man__libmansuffix__/XCreateGC.__libmansuffix__
+.so man__libmansuffix__/XCreateGC.__libmansuffix__
diff --git a/libX11/man/XGContextFromGC.man b/libX11/man/XGContextFromGC.man
index dec9f1eb7..927a6a942 100644
--- a/libX11/man/XGContextFromGC.man
+++ b/libX11/man/XGContextFromGC.man
@@ -1 +1 @@
-.so man__libmansuffix__/XCreateGC.__libmansuffix__
+.so man__libmansuffix__/XCreateGC.__libmansuffix__
diff --git a/libX11/man/XGenericEventCookie.man b/libX11/man/XGenericEventCookie.man
index cf44d9698..3736bad29 100644
--- a/libX11/man/XGenericEventCookie.man
+++ b/libX11/man/XGenericEventCookie.man
@@ -1 +1 @@
-.so man__libmansuffix__/XGetEventData.__libmansuffix__
+.so man__libmansuffix__/XGetEventData.__libmansuffix__
diff --git a/libX11/man/XGetAtomName.man b/libX11/man/XGetAtomName.man
index 6c0495121..7d6a69b81 100644
--- a/libX11/man/XGetAtomName.man
+++ b/libX11/man/XGetAtomName.man
@@ -1 +1 @@
-.so man__libmansuffix__/XInternAtom.__libmansuffix__
+.so man__libmansuffix__/XInternAtom.__libmansuffix__
diff --git a/libX11/man/XGetAtomNames.man b/libX11/man/XGetAtomNames.man
index 6c0495121..7d6a69b81 100644
--- a/libX11/man/XGetAtomNames.man
+++ b/libX11/man/XGetAtomNames.man
@@ -1 +1 @@
-.so man__libmansuffix__/XInternAtom.__libmansuffix__
+.so man__libmansuffix__/XInternAtom.__libmansuffix__
diff --git a/libX11/man/XGetClassHint.man b/libX11/man/XGetClassHint.man
index fc953a21b..02d6722d8 100644
--- a/libX11/man/XGetClassHint.man
+++ b/libX11/man/XGetClassHint.man
@@ -1 +1 @@
-.so man__libmansuffix__/XAllocClassHint.__libmansuffix__
+.so man__libmansuffix__/XAllocClassHint.__libmansuffix__
diff --git a/libX11/man/XGetCommand.man b/libX11/man/XGetCommand.man
index 706fb1e1f..a56ee48b9 100644
--- a/libX11/man/XGetCommand.man
+++ b/libX11/man/XGetCommand.man
@@ -1 +1 @@
-.so man__libmansuffix__/XSetCommand.__libmansuffix__
+.so man__libmansuffix__/XSetCommand.__libmansuffix__
diff --git a/libX11/man/XGetErrorDatabaseText.man b/libX11/man/XGetErrorDatabaseText.man
index 608900365..de67624e7 100644
--- a/libX11/man/XGetErrorDatabaseText.man
+++ b/libX11/man/XGetErrorDatabaseText.man
@@ -1 +1 @@
-.so man__libmansuffix__/XSetErrorHandler.__libmansuffix__
+.so man__libmansuffix__/XSetErrorHandler.__libmansuffix__
diff --git a/libX11/man/XGetErrorText.man b/libX11/man/XGetErrorText.man
index 608900365..de67624e7 100644
--- a/libX11/man/XGetErrorText.man
+++ b/libX11/man/XGetErrorText.man
@@ -1 +1 @@
-.so man__libmansuffix__/XSetErrorHandler.__libmansuffix__
+.so man__libmansuffix__/XSetErrorHandler.__libmansuffix__
diff --git a/libX11/man/XGetFontPath.man b/libX11/man/XGetFontPath.man
index 49b4723ce..bf81b9fc4 100644
--- a/libX11/man/XGetFontPath.man
+++ b/libX11/man/XGetFontPath.man
@@ -1 +1 @@
-.so man__libmansuffix__/XSetFontPath.__libmansuffix__
+.so man__libmansuffix__/XSetFontPath.__libmansuffix__
diff --git a/libX11/man/XGetFontProperty.man b/libX11/man/XGetFontProperty.man
index 8b44e8513..ca6fa1f21 100644
--- a/libX11/man/XGetFontProperty.man
+++ b/libX11/man/XGetFontProperty.man
@@ -1 +1 @@
-.so man__libmansuffix__/XLoadFont.__libmansuffix__
+.so man__libmansuffix__/XLoadFont.__libmansuffix__
diff --git a/libX11/man/XGetGCValues.man b/libX11/man/XGetGCValues.man
index dec9f1eb7..927a6a942 100644
--- a/libX11/man/XGetGCValues.man
+++ b/libX11/man/XGetGCValues.man
@@ -1 +1 @@
-.so man__libmansuffix__/XCreateGC.__libmansuffix__
+.so man__libmansuffix__/XCreateGC.__libmansuffix__
diff --git a/libX11/man/XGetGeometry.man b/libX11/man/XGetGeometry.man
index df77346fb..d58c103d5 100644
--- a/libX11/man/XGetGeometry.man
+++ b/libX11/man/XGetGeometry.man
@@ -1 +1 @@
-.so man__libmansuffix__/XGetWindowAttributes.__libmansuffix__
+.so man__libmansuffix__/XGetWindowAttributes.__libmansuffix__
diff --git a/libX11/man/XGetICValues.man b/libX11/man/XGetICValues.man
index a80dcff32..8afda35be 100644
--- a/libX11/man/XGetICValues.man
+++ b/libX11/man/XGetICValues.man
@@ -1 +1 @@
-.so man__libmansuffix__/XSetICValues.__libmansuffix__
+.so man__libmansuffix__/XSetICValues.__libmansuffix__
diff --git a/libX11/man/XGetIMValues.man b/libX11/man/XGetIMValues.man
index 6d302b9cd..63654099c 100644
--- a/libX11/man/XGetIMValues.man
+++ b/libX11/man/XGetIMValues.man
@@ -1 +1 @@
-.so man__libmansuffix__/XOpenIM.__libmansuffix__
+.so man__libmansuffix__/XOpenIM.__libmansuffix__
diff --git a/libX11/man/XGetIconName.man b/libX11/man/XGetIconName.man
index e315e4495..bf1ba60bb 100644
--- a/libX11/man/XGetIconName.man
+++ b/libX11/man/XGetIconName.man
@@ -1 +1 @@
-.so man__libmansuffix__/XSetWMIconName.__libmansuffix__
+.so man__libmansuffix__/XSetWMIconName.__libmansuffix__
diff --git a/libX11/man/XGetIconSizes.man b/libX11/man/XGetIconSizes.man
index edc8882fb..afe574eb3 100644
--- a/libX11/man/XGetIconSizes.man
+++ b/libX11/man/XGetIconSizes.man
@@ -1 +1 @@
-.so man__libmansuffix__/XAllocIconSize.__libmansuffix__
+.so man__libmansuffix__/XAllocIconSize.__libmansuffix__
diff --git a/libX11/man/XGetImage.man b/libX11/man/XGetImage.man
index d17774846..12a2ab201 100644
--- a/libX11/man/XGetImage.man
+++ b/libX11/man/XGetImage.man
@@ -1 +1 @@
-.so man__libmansuffix__/XPutImage.__libmansuffix__
+.so man__libmansuffix__/XPutImage.__libmansuffix__
diff --git a/libX11/man/XGetInputFocus.man b/libX11/man/XGetInputFocus.man
index c6c1bbb04..39d128b9c 100644
--- a/libX11/man/XGetInputFocus.man
+++ b/libX11/man/XGetInputFocus.man
@@ -1 +1 @@
-.so man__libmansuffix__/XSetInputFocus.__libmansuffix__
+.so man__libmansuffix__/XSetInputFocus.__libmansuffix__
diff --git a/libX11/man/XGetKeyboardControl.man b/libX11/man/XGetKeyboardControl.man
index 528cea2d7..4434d0119 100644
--- a/libX11/man/XGetKeyboardControl.man
+++ b/libX11/man/XGetKeyboardControl.man
@@ -1 +1 @@
-.so man__libmansuffix__/XChangeKeyboardControl.__libmansuffix__
+.so man__libmansuffix__/XChangeKeyboardControl.__libmansuffix__
diff --git a/libX11/man/XGetKeyboardMapping.man b/libX11/man/XGetKeyboardMapping.man
index 013c70a95..cc772afae 100644
--- a/libX11/man/XGetKeyboardMapping.man
+++ b/libX11/man/XGetKeyboardMapping.man
@@ -1 +1 @@
-.so man__libmansuffix__/XChangeKeyboardMapping.__libmansuffix__
+.so man__libmansuffix__/XChangeKeyboardMapping.__libmansuffix__
diff --git a/libX11/man/XGetModifierMapping.man b/libX11/man/XGetModifierMapping.man
index 013c70a95..cc772afae 100644
--- a/libX11/man/XGetModifierMapping.man
+++ b/libX11/man/XGetModifierMapping.man
@@ -1 +1 @@
-.so man__libmansuffix__/XChangeKeyboardMapping.__libmansuffix__
+.so man__libmansuffix__/XChangeKeyboardMapping.__libmansuffix__
diff --git a/libX11/man/XGetMotionEvents.man b/libX11/man/XGetMotionEvents.man
index 708dee7c8..bfd75c0fd 100644
--- a/libX11/man/XGetMotionEvents.man
+++ b/libX11/man/XGetMotionEvents.man
@@ -1 +1 @@
-.so man__libmansuffix__/XSendEvent.__libmansuffix__
+.so man__libmansuffix__/XSendEvent.__libmansuffix__
diff --git a/libX11/man/XGetOCValues.man b/libX11/man/XGetOCValues.man
index ece6d5ce7..12d5a3d53 100644
--- a/libX11/man/XGetOCValues.man
+++ b/libX11/man/XGetOCValues.man
@@ -1 +1 @@
-.so man__libmansuffix__/XCreateOC.__libmansuffix__
+.so man__libmansuffix__/XCreateOC.__libmansuffix__
diff --git a/libX11/man/XGetOMValues.man b/libX11/man/XGetOMValues.man
index d7e1adb03..3b4acf51a 100644
--- a/libX11/man/XGetOMValues.man
+++ b/libX11/man/XGetOMValues.man
@@ -1 +1 @@
-.so man__libmansuffix__/XOpenOM.__libmansuffix__
+.so man__libmansuffix__/XOpenOM.__libmansuffix__
diff --git a/libX11/man/XGetPixel.man b/libX11/man/XGetPixel.man
index 8fe560159..19e5be335 100644
--- a/libX11/man/XGetPixel.man
+++ b/libX11/man/XGetPixel.man
@@ -1 +1 @@
-.so man__libmansuffix__/XInitImage.__libmansuffix__
+.so man__libmansuffix__/XInitImage.__libmansuffix__
diff --git a/libX11/man/XGetPointerControl.man b/libX11/man/XGetPointerControl.man
index f4e744322..5f1df8adc 100644
--- a/libX11/man/XGetPointerControl.man
+++ b/libX11/man/XGetPointerControl.man
@@ -1 +1 @@
-.so man__libmansuffix__/XChangePointerControl.__libmansuffix__
+.so man__libmansuffix__/XChangePointerControl.__libmansuffix__
diff --git a/libX11/man/XGetPointerMapping.man b/libX11/man/XGetPointerMapping.man
index 9fc1407c5..b592401d8 100644
--- a/libX11/man/XGetPointerMapping.man
+++ b/libX11/man/XGetPointerMapping.man
@@ -1 +1 @@
-.so man__libmansuffix__/XSetPointerMapping.__libmansuffix__
+.so man__libmansuffix__/XSetPointerMapping.__libmansuffix__
diff --git a/libX11/man/XGetRGBColormaps.man b/libX11/man/XGetRGBColormaps.man
index a36aee4fe..da749f608 100644
--- a/libX11/man/XGetRGBColormaps.man
+++ b/libX11/man/XGetRGBColormaps.man
@@ -1 +1 @@
-.so man__libmansuffix__/XAllocStandardColormap.__libmansuffix__
+.so man__libmansuffix__/XAllocStandardColormap.__libmansuffix__
diff --git a/libX11/man/XGetScreenSaver.man b/libX11/man/XGetScreenSaver.man
index 35198d594..13eba4e21 100644
--- a/libX11/man/XGetScreenSaver.man
+++ b/libX11/man/XGetScreenSaver.man
@@ -1 +1 @@
-.so man__libmansuffix__/XSetScreenSaver.__libmansuffix__
+.so man__libmansuffix__/XSetScreenSaver.__libmansuffix__
diff --git a/libX11/man/XGetSelectionOwner.man b/libX11/man/XGetSelectionOwner.man
index c8e52aa34..c33cbe839 100644
--- a/libX11/man/XGetSelectionOwner.man
+++ b/libX11/man/XGetSelectionOwner.man
@@ -1 +1 @@
-.so man__libmansuffix__/XSetSelectionOwner.__libmansuffix__
+.so man__libmansuffix__/XSetSelectionOwner.__libmansuffix__
diff --git a/libX11/man/XGetSubImage.man b/libX11/man/XGetSubImage.man
index d17774846..12a2ab201 100644
--- a/libX11/man/XGetSubImage.man
+++ b/libX11/man/XGetSubImage.man
@@ -1 +1 @@
-.so man__libmansuffix__/XPutImage.__libmansuffix__
+.so man__libmansuffix__/XPutImage.__libmansuffix__
diff --git a/libX11/man/XGetTextProperty.man b/libX11/man/XGetTextProperty.man
index 1d04e4fc3..d104567c0 100644
--- a/libX11/man/XGetTextProperty.man
+++ b/libX11/man/XGetTextProperty.man
@@ -1 +1 @@
-.so man__libmansuffix__/XSetTextProperty.__libmansuffix__
+.so man__libmansuffix__/XSetTextProperty.__libmansuffix__
diff --git a/libX11/man/XGetTransientForHint.man b/libX11/man/XGetTransientForHint.man
index df25fc239..63d87a3e7 100644
--- a/libX11/man/XGetTransientForHint.man
+++ b/libX11/man/XGetTransientForHint.man
@@ -1 +1 @@
-.so man__libmansuffix__/XSetTransientForHint.__libmansuffix__
+.so man__libmansuffix__/XSetTransientForHint.__libmansuffix__
diff --git a/libX11/man/XGetWMClientMachine.man b/libX11/man/XGetWMClientMachine.man
index cd7c2f074..0f7027c84 100644
--- a/libX11/man/XGetWMClientMachine.man
+++ b/libX11/man/XGetWMClientMachine.man
@@ -1 +1 @@
-.so man__libmansuffix__/XSetWMClientMachine.__libmansuffix__
+.so man__libmansuffix__/XSetWMClientMachine.__libmansuffix__
diff --git a/libX11/man/XGetWMColormapWindows.man b/libX11/man/XGetWMColormapWindows.man
index 5b0f489ce..41aa066c2 100644
--- a/libX11/man/XGetWMColormapWindows.man
+++ b/libX11/man/XGetWMColormapWindows.man
@@ -1 +1 @@
-.so man__libmansuffix__/XSetWMColormapWindows.__libmansuffix__
+.so man__libmansuffix__/XSetWMColormapWindows.__libmansuffix__
diff --git a/libX11/man/XGetWMHints.man b/libX11/man/XGetWMHints.man
index e066f6d95..1e15d7e07 100644
--- a/libX11/man/XGetWMHints.man
+++ b/libX11/man/XGetWMHints.man
@@ -1 +1 @@
-.so man__libmansuffix__/XAllocWMHints.__libmansuffix__
+.so man__libmansuffix__/XAllocWMHints.__libmansuffix__
diff --git a/libX11/man/XGetWMIconName.man b/libX11/man/XGetWMIconName.man
index e315e4495..bf1ba60bb 100644
--- a/libX11/man/XGetWMIconName.man
+++ b/libX11/man/XGetWMIconName.man
@@ -1 +1 @@
-.so man__libmansuffix__/XSetWMIconName.__libmansuffix__
+.so man__libmansuffix__/XSetWMIconName.__libmansuffix__
diff --git a/libX11/man/XGetWMName.man b/libX11/man/XGetWMName.man
index 6b4fc7e7d..45257dc10 100644
--- a/libX11/man/XGetWMName.man
+++ b/libX11/man/XGetWMName.man
@@ -1 +1 @@
-.so man__libmansuffix__/XSetWMName.__libmansuffix__
+.so man__libmansuffix__/XSetWMName.__libmansuffix__
diff --git a/libX11/man/XGetWMNormalHints.man b/libX11/man/XGetWMNormalHints.man
index 94ebb6295..9fbee3883 100644
--- a/libX11/man/XGetWMNormalHints.man
+++ b/libX11/man/XGetWMNormalHints.man
@@ -1 +1 @@
-.so man__libmansuffix__/XAllocSizeHints.__libmansuffix__
+.so man__libmansuffix__/XAllocSizeHints.__libmansuffix__
diff --git a/libX11/man/XGetWMProtocols.man b/libX11/man/XGetWMProtocols.man
index 565aad646..c2af57f1b 100644
--- a/libX11/man/XGetWMProtocols.man
+++ b/libX11/man/XGetWMProtocols.man
@@ -1 +1 @@
-.so man__libmansuffix__/XSetWMProtocols.__libmansuffix__
+.so man__libmansuffix__/XSetWMProtocols.__libmansuffix__
diff --git a/libX11/man/XGetWMSizeHints.man b/libX11/man/XGetWMSizeHints.man
index 94ebb6295..9fbee3883 100644
--- a/libX11/man/XGetWMSizeHints.man
+++ b/libX11/man/XGetWMSizeHints.man
@@ -1 +1 @@
-.so man__libmansuffix__/XAllocSizeHints.__libmansuffix__
+.so man__libmansuffix__/XAllocSizeHints.__libmansuffix__
diff --git a/libX11/man/XGetXCBConnection.man b/libX11/man/XGetXCBConnection.man
index 7f579bfce..3b4ad11f7 100644
--- a/libX11/man/XGetXCBConnection.man
+++ b/libX11/man/XGetXCBConnection.man
@@ -1,44 +1,44 @@
-.\" Copyright \(co 2006 Josh Triplett
-.\"
-.\" Permission is hereby granted, free of charge, to any person obtaining
-.\" a copy of this software and associated documentation files (the
-.\" "Software"), to deal in the Software without restriction, including
-.\" without limitation the rights to use, copy, modify, merge, publish,
-.\" distribute, sublicense, and/or sell copies of the Software, and to
-.\" permit persons to whom the Software is furnished to do so, subject to
-.\" the following conditions:
-.\"
-.\" The above copyright notice and this permission notice shall be included
-.\" in all copies or substantial portions of the Software.
-.\"
-.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-.\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-.\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
-.\" IN NO EVENT SHALL THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR
-.\" OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
-.\" ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-.\" OTHER DEALINGS IN THE SOFTWARE.
-.\"
-.TH XGetXCBConnection __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
-.SH NAME
-XGetXCBConnection \- get the XCB connection for an Xlib Display
-.SH SYNTAX
-.HP
- #include <X11/Xlib-xcb.h>
-.HP
-xcb_connection_t *XGetXCBConnection(Display *\fIdpy\fP);
-.SH ARGUMENTS
-.IP \fIdpy\fP 1i
-Specifies the connection to the X server.
-.IN "Environment" "DISPLAY"
-.SH DESCRIPTION
-The \fIXGetXCBConnection\fP function returns the XCB connection associated with
-an Xlib Display. Clients can use this XCB connection with functions from the
-XCB library, just as they would with an XCB connection created with XCB.
-Callers of this function must link to libX11-xcb and a version of Xlib built
-with XCB support.
-.SH "SEE ALSO"
-XOpenDisplay(__libmansuffix__),
-XSetEventQueueOwner(__libmansuffix__),
-.br
-\fIXlib \- C Language X Interface\fP
+.\" Copyright \(co 2006 Josh Triplett
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining
+.\" a copy of this software and associated documentation files (the
+.\" "Software"), to deal in the Software without restriction, including
+.\" without limitation the rights to use, copy, modify, merge, publish,
+.\" distribute, sublicense, and/or sell copies of the Software, and to
+.\" permit persons to whom the Software is furnished to do so, subject to
+.\" the following conditions:
+.\"
+.\" The above copyright notice and this permission notice shall be included
+.\" in all copies or substantial portions of the Software.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+.\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+.\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+.\" IN NO EVENT SHALL THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR
+.\" OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
+.\" ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+.\" OTHER DEALINGS IN THE SOFTWARE.
+.\"
+.TH XGetXCBConnection __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
+.SH NAME
+XGetXCBConnection \- get the XCB connection for an Xlib Display
+.SH SYNTAX
+.HP
+ #include <X11/Xlib-xcb.h>
+.HP
+xcb_connection_t *XGetXCBConnection(Display *\fIdpy\fP);
+.SH ARGUMENTS
+.IP \fIdpy\fP 1i
+Specifies the connection to the X server.
+.IN "Environment" "DISPLAY"
+.SH DESCRIPTION
+The \fIXGetXCBConnection\fP function returns the XCB connection associated with
+an Xlib Display. Clients can use this XCB connection with functions from the
+XCB library, just as they would with an XCB connection created with XCB.
+Callers of this function must link to libX11-xcb and a version of Xlib built
+with XCB support.
+.SH "SEE ALSO"
+XOpenDisplay(__libmansuffix__),
+XSetEventQueueOwner(__libmansuffix__),
+.br
+\fIXlib \- C Language X Interface\fP
diff --git a/libX11/man/XHostAddress.man b/libX11/man/XHostAddress.man
index 8efac194e..13e833b46 100644
--- a/libX11/man/XHostAddress.man
+++ b/libX11/man/XHostAddress.man
@@ -1 +1 @@
-.so man__libmansuffix__/XAddHost.__libmansuffix__
+.so man__libmansuffix__/XAddHost.__libmansuffix__
diff --git a/libX11/man/XIMOfIC.man b/libX11/man/XIMOfIC.man
index 652aa0330..2c9fd6629 100644
--- a/libX11/man/XIMOfIC.man
+++ b/libX11/man/XIMOfIC.man
@@ -1 +1 @@
-.so man__libmansuffix__/XCreateIC.__libmansuffix__
+.so man__libmansuffix__/XCreateIC.__libmansuffix__
diff --git a/libX11/man/XIconSize.man b/libX11/man/XIconSize.man
index edc8882fb..afe574eb3 100644
--- a/libX11/man/XIconSize.man
+++ b/libX11/man/XIconSize.man
@@ -1 +1 @@
-.so man__libmansuffix__/XAllocIconSize.__libmansuffix__
+.so man__libmansuffix__/XAllocIconSize.__libmansuffix__
diff --git a/libX11/man/XInsertModifiermapEntry.man b/libX11/man/XInsertModifiermapEntry.man
index 013c70a95..cc772afae 100644
--- a/libX11/man/XInsertModifiermapEntry.man
+++ b/libX11/man/XInsertModifiermapEntry.man
@@ -1 +1 @@
-.so man__libmansuffix__/XChangeKeyboardMapping.__libmansuffix__
+.so man__libmansuffix__/XChangeKeyboardMapping.__libmansuffix__
diff --git a/libX11/man/XInternAtoms.man b/libX11/man/XInternAtoms.man
index 6c0495121..7d6a69b81 100644
--- a/libX11/man/XInternAtoms.man
+++ b/libX11/man/XInternAtoms.man
@@ -1 +1 @@
-.so man__libmansuffix__/XInternAtom.__libmansuffix__
+.so man__libmansuffix__/XInternAtom.__libmansuffix__
diff --git a/libX11/man/XInternalConnectionNumbers.man b/libX11/man/XInternalConnectionNumbers.man
index 4a3cc1380..c3e5bf082 100644
--- a/libX11/man/XInternalConnectionNumbers.man
+++ b/libX11/man/XInternalConnectionNumbers.man
@@ -1 +1 @@
-.so man__libmansuffix__/XAddConnectionWatch.__libmansuffix__
+.so man__libmansuffix__/XAddConnectionWatch.__libmansuffix__
diff --git a/libX11/man/XKeyEvent.man b/libX11/man/XKeyEvent.man
index 41e30bbe3..07c1ecbde 100644
--- a/libX11/man/XKeyEvent.man
+++ b/libX11/man/XKeyEvent.man
@@ -1 +1 @@
-.so man__libmansuffix__/XButtonEvent.__libmansuffix__
+.so man__libmansuffix__/XButtonEvent.__libmansuffix__
diff --git a/libX11/man/XKeyboardControl.man b/libX11/man/XKeyboardControl.man
index 528cea2d7..4434d0119 100644
--- a/libX11/man/XKeyboardControl.man
+++ b/libX11/man/XKeyboardControl.man
@@ -1 +1 @@
-.so man__libmansuffix__/XChangeKeyboardControl.__libmansuffix__
+.so man__libmansuffix__/XChangeKeyboardControl.__libmansuffix__
diff --git a/libX11/man/XKeycodeToKeysym.man b/libX11/man/XKeycodeToKeysym.man
index 9126b791f..32bc40460 100644
--- a/libX11/man/XKeycodeToKeysym.man
+++ b/libX11/man/XKeycodeToKeysym.man
@@ -1 +1 @@
-.so man__libmansuffix__/XStringToKeysym.__libmansuffix__
+.so man__libmansuffix__/XStringToKeysym.__libmansuffix__
diff --git a/libX11/man/XKeysymToKeycode.man b/libX11/man/XKeysymToKeycode.man
index 9126b791f..32bc40460 100644
--- a/libX11/man/XKeysymToKeycode.man
+++ b/libX11/man/XKeysymToKeycode.man
@@ -1 +1 @@
-.so man__libmansuffix__/XStringToKeysym.__libmansuffix__
+.so man__libmansuffix__/XStringToKeysym.__libmansuffix__
diff --git a/libX11/man/XKeysymToString.man b/libX11/man/XKeysymToString.man
index 9126b791f..32bc40460 100644
--- a/libX11/man/XKeysymToString.man
+++ b/libX11/man/XKeysymToString.man
@@ -1 +1 @@
-.so man__libmansuffix__/XStringToKeysym.__libmansuffix__
+.so man__libmansuffix__/XStringToKeysym.__libmansuffix__
diff --git a/libX11/man/XKillClient.man b/libX11/man/XKillClient.man
index a94379149..1c6c79302 100644
--- a/libX11/man/XKillClient.man
+++ b/libX11/man/XKillClient.man
@@ -1 +1 @@
-.so man__libmansuffix__/XSetCloseDownMode.__libmansuffix__
+.so man__libmansuffix__/XSetCloseDownMode.__libmansuffix__
diff --git a/libX11/man/XListDepths.man b/libX11/man/XListDepths.man
index 963c4fe94..7949dfafa 100644
--- a/libX11/man/XListDepths.man
+++ b/libX11/man/XListDepths.man
@@ -1 +1 @@
-.so man__libmansuffix__/AllPlanes.__libmansuffix__
+.so man__libmansuffix__/AllPlanes.__libmansuffix__
diff --git a/libX11/man/XListExtensions.man b/libX11/man/XListExtensions.man
index d5ffc5c35..95e51b6ad 100644
--- a/libX11/man/XListExtensions.man
+++ b/libX11/man/XListExtensions.man
@@ -1 +1 @@
-.so man__libmansuffix__/XQueryExtension.__libmansuffix__
+.so man__libmansuffix__/XQueryExtension.__libmansuffix__
diff --git a/libX11/man/XListFontsWithInfo.man b/libX11/man/XListFontsWithInfo.man
index 5c6200765..2df58d041 100644
--- a/libX11/man/XListFontsWithInfo.man
+++ b/libX11/man/XListFontsWithInfo.man
@@ -1 +1 @@
-.so man__libmansuffix__/XListFonts.__libmansuffix__
+.so man__libmansuffix__/XListFonts.__libmansuffix__
diff --git a/libX11/man/XListHosts.man b/libX11/man/XListHosts.man
index 8efac194e..13e833b46 100644
--- a/libX11/man/XListHosts.man
+++ b/libX11/man/XListHosts.man
@@ -1 +1 @@
-.so man__libmansuffix__/XAddHost.__libmansuffix__
+.so man__libmansuffix__/XAddHost.__libmansuffix__
diff --git a/libX11/man/XListInstalledColormaps.man b/libX11/man/XListInstalledColormaps.man
index 7b18ab38b..7f0ced3ce 100644
--- a/libX11/man/XListInstalledColormaps.man
+++ b/libX11/man/XListInstalledColormaps.man
@@ -1 +1 @@
-.so man__libmansuffix__/XInstallColormap.__libmansuffix__
+.so man__libmansuffix__/XInstallColormap.__libmansuffix__
diff --git a/libX11/man/XListPixmapFormats.man b/libX11/man/XListPixmapFormats.man
index 0a59afe46..4e270949c 100644
--- a/libX11/man/XListPixmapFormats.man
+++ b/libX11/man/XListPixmapFormats.man
@@ -1 +1 @@
-.so man__libmansuffix__/ImageByteOrder.__libmansuffix__
+.so man__libmansuffix__/ImageByteOrder.__libmansuffix__
diff --git a/libX11/man/XListProperties.man b/libX11/man/XListProperties.man
index e265d7d69..ce26c3d38 100644
--- a/libX11/man/XListProperties.man
+++ b/libX11/man/XListProperties.man
@@ -1 +1 @@
-.so man__libmansuffix__/XGetWindowProperty.__libmansuffix__
+.so man__libmansuffix__/XGetWindowProperty.__libmansuffix__
diff --git a/libX11/man/XLoadQueryFont.man b/libX11/man/XLoadQueryFont.man
index 8b44e8513..ca6fa1f21 100644
--- a/libX11/man/XLoadQueryFont.man
+++ b/libX11/man/XLoadQueryFont.man
@@ -1 +1 @@
-.so man__libmansuffix__/XLoadFont.__libmansuffix__
+.so man__libmansuffix__/XLoadFont.__libmansuffix__
diff --git a/libX11/man/XLocaleOfFontSet.man b/libX11/man/XLocaleOfFontSet.man
index 48ea35b67..ba0cd7673 100644
--- a/libX11/man/XLocaleOfFontSet.man
+++ b/libX11/man/XLocaleOfFontSet.man
@@ -1 +1 @@
-.so man__libmansuffix__/XFontsOfFontSet.__libmansuffix__
+.so man__libmansuffix__/XFontsOfFontSet.__libmansuffix__
diff --git a/libX11/man/XLocaleOfIM.man b/libX11/man/XLocaleOfIM.man
index 6d302b9cd..63654099c 100644
--- a/libX11/man/XLocaleOfIM.man
+++ b/libX11/man/XLocaleOfIM.man
@@ -1 +1 @@
-.so man__libmansuffix__/XOpenIM.__libmansuffix__
+.so man__libmansuffix__/XOpenIM.__libmansuffix__
diff --git a/libX11/man/XLocaleOfOM.man b/libX11/man/XLocaleOfOM.man
index d7e1adb03..3b4acf51a 100644
--- a/libX11/man/XLocaleOfOM.man
+++ b/libX11/man/XLocaleOfOM.man
@@ -1 +1 @@
-.so man__libmansuffix__/XOpenOM.__libmansuffix__
+.so man__libmansuffix__/XOpenOM.__libmansuffix__
diff --git a/libX11/man/XLockDisplay.man b/libX11/man/XLockDisplay.man
index bc8bb0205..24cf8b4bb 100644
--- a/libX11/man/XLockDisplay.man
+++ b/libX11/man/XLockDisplay.man
@@ -1 +1 @@
-.so man__libmansuffix__/XInitThreads.__libmansuffix__
+.so man__libmansuffix__/XInitThreads.__libmansuffix__
diff --git a/libX11/man/XLookupColor.man b/libX11/man/XLookupColor.man
index d1aad2b4a..f0c2a9094 100644
--- a/libX11/man/XLookupColor.man
+++ b/libX11/man/XLookupColor.man
@@ -1 +1 @@
-.so man__libmansuffix__/XQueryColor.__libmansuffix__
+.so man__libmansuffix__/XQueryColor.__libmansuffix__
diff --git a/libX11/man/XLookupString.man b/libX11/man/XLookupString.man
index 23156fe74..37d15977a 100644
--- a/libX11/man/XLookupString.man
+++ b/libX11/man/XLookupString.man
@@ -1 +1 @@
-.so man__libmansuffix__/XLookupKeysym.__libmansuffix__
+.so man__libmansuffix__/XLookupKeysym.__libmansuffix__
diff --git a/libX11/man/XLowerWindow.man b/libX11/man/XLowerWindow.man
index 61d7a2348..37f4b5f8b 100644
--- a/libX11/man/XLowerWindow.man
+++ b/libX11/man/XLowerWindow.man
@@ -1 +1 @@
-.so man__libmansuffix__/XRaiseWindow.__libmansuffix__
+.so man__libmansuffix__/XRaiseWindow.__libmansuffix__
diff --git a/libX11/man/XMapRaised.man b/libX11/man/XMapRaised.man
index ab771f83f..aa62f4d1f 100644
--- a/libX11/man/XMapRaised.man
+++ b/libX11/man/XMapRaised.man
@@ -1 +1 @@
-.so man__libmansuffix__/XMapWindow.__libmansuffix__
+.so man__libmansuffix__/XMapWindow.__libmansuffix__
diff --git a/libX11/man/XMapSubwindows.man b/libX11/man/XMapSubwindows.man
index ab771f83f..aa62f4d1f 100644
--- a/libX11/man/XMapSubwindows.man
+++ b/libX11/man/XMapSubwindows.man
@@ -1 +1 @@
-.so man__libmansuffix__/XMapWindow.__libmansuffix__
+.so man__libmansuffix__/XMapWindow.__libmansuffix__
diff --git a/libX11/man/XMappingEvent.man b/libX11/man/XMappingEvent.man
index c0a031b46..4cd9d8442 100644
--- a/libX11/man/XMappingEvent.man
+++ b/libX11/man/XMappingEvent.man
@@ -1 +1 @@
-.so man__libmansuffix__/XMapEvent.__libmansuffix__
+.so man__libmansuffix__/XMapEvent.__libmansuffix__
diff --git a/libX11/man/XMaskEvent.man b/libX11/man/XMaskEvent.man
index f421b8caa..6f5346e36 100644
--- a/libX11/man/XMaskEvent.man
+++ b/libX11/man/XMaskEvent.man
@@ -1 +1 @@
-.so man__libmansuffix__/XNextEvent.__libmansuffix__
+.so man__libmansuffix__/XNextEvent.__libmansuffix__
diff --git a/libX11/man/XMatchVisualInfo.man b/libX11/man/XMatchVisualInfo.man
index 0b12bf69d..8a408c50d 100644
--- a/libX11/man/XMatchVisualInfo.man
+++ b/libX11/man/XMatchVisualInfo.man
@@ -1 +1 @@
-.so man__libmansuffix__/XGetVisualInfo.__libmansuffix__
+.so man__libmansuffix__/XGetVisualInfo.__libmansuffix__
diff --git a/libX11/man/XMaxRequestSize.man b/libX11/man/XMaxRequestSize.man
index 963c4fe94..7949dfafa 100644
--- a/libX11/man/XMaxRequestSize.man
+++ b/libX11/man/XMaxRequestSize.man
@@ -1 +1 @@
-.so man__libmansuffix__/AllPlanes.__libmansuffix__
+.so man__libmansuffix__/AllPlanes.__libmansuffix__
diff --git a/libX11/man/XModifierKeymap.man b/libX11/man/XModifierKeymap.man
index 013c70a95..cc772afae 100644
--- a/libX11/man/XModifierKeymap.man
+++ b/libX11/man/XModifierKeymap.man
@@ -1 +1 @@
-.so man__libmansuffix__/XChangeKeyboardMapping.__libmansuffix__
+.so man__libmansuffix__/XChangeKeyboardMapping.__libmansuffix__
diff --git a/libX11/man/XMotionEvent.man b/libX11/man/XMotionEvent.man
index 41e30bbe3..07c1ecbde 100644
--- a/libX11/man/XMotionEvent.man
+++ b/libX11/man/XMotionEvent.man
@@ -1 +1 @@
-.so man__libmansuffix__/XButtonEvent.__libmansuffix__
+.so man__libmansuffix__/XButtonEvent.__libmansuffix__
diff --git a/libX11/man/XMoveResizeWindow.man b/libX11/man/XMoveResizeWindow.man
index 5fbc49488..4c16c270b 100644
--- a/libX11/man/XMoveResizeWindow.man
+++ b/libX11/man/XMoveResizeWindow.man
@@ -1 +1 @@
-.so man__libmansuffix__/XConfigureWindow.__libmansuffix__
+.so man__libmansuffix__/XConfigureWindow.__libmansuffix__
diff --git a/libX11/man/XMoveWindow.man b/libX11/man/XMoveWindow.man
index 5fbc49488..4c16c270b 100644
--- a/libX11/man/XMoveWindow.man
+++ b/libX11/man/XMoveWindow.man
@@ -1 +1 @@
-.so man__libmansuffix__/XConfigureWindow.__libmansuffix__
+.so man__libmansuffix__/XConfigureWindow.__libmansuffix__
diff --git a/libX11/man/XNewModifiermap.man b/libX11/man/XNewModifiermap.man
index 013c70a95..cc772afae 100644
--- a/libX11/man/XNewModifiermap.man
+++ b/libX11/man/XNewModifiermap.man
@@ -1 +1 @@
-.so man__libmansuffix__/XChangeKeyboardMapping.__libmansuffix__
+.so man__libmansuffix__/XChangeKeyboardMapping.__libmansuffix__
diff --git a/libX11/man/XNoExposeEvent.man b/libX11/man/XNoExposeEvent.man
index c986c219c..fa8deb7d9 100644
--- a/libX11/man/XNoExposeEvent.man
+++ b/libX11/man/XNoExposeEvent.man
@@ -1 +1 @@
-.so man__libmansuffix__/XGraphicsExposeEvent.__libmansuffix__
+.so man__libmansuffix__/XGraphicsExposeEvent.__libmansuffix__
diff --git a/libX11/man/XOMOfOC.man b/libX11/man/XOMOfOC.man
index ece6d5ce7..12d5a3d53 100644
--- a/libX11/man/XOMOfOC.man
+++ b/libX11/man/XOMOfOC.man
@@ -1 +1 @@
-.so man__libmansuffix__/XCreateOC.__libmansuffix__
+.so man__libmansuffix__/XCreateOC.__libmansuffix__
diff --git a/libX11/man/XOffsetRegion.man b/libX11/man/XOffsetRegion.man
index 630c1f2c8..585c17729 100644
--- a/libX11/man/XOffsetRegion.man
+++ b/libX11/man/XOffsetRegion.man
@@ -1 +1 @@
-.so man__libmansuffix__/XIntersectRegion.__libmansuffix__
+.so man__libmansuffix__/XIntersectRegion.__libmansuffix__
diff --git a/libX11/man/XParseColor.man b/libX11/man/XParseColor.man
index d1aad2b4a..f0c2a9094 100644
--- a/libX11/man/XParseColor.man
+++ b/libX11/man/XParseColor.man
@@ -1 +1 @@
-.so man__libmansuffix__/XQueryColor.__libmansuffix__
+.so man__libmansuffix__/XQueryColor.__libmansuffix__
diff --git a/libX11/man/XPeekEvent.man b/libX11/man/XPeekEvent.man
index f421b8caa..6f5346e36 100644
--- a/libX11/man/XPeekEvent.man
+++ b/libX11/man/XPeekEvent.man
@@ -1 +1 @@
-.so man__libmansuffix__/XNextEvent.__libmansuffix__
+.so man__libmansuffix__/XNextEvent.__libmansuffix__
diff --git a/libX11/man/XPeekIfEvent.man b/libX11/man/XPeekIfEvent.man
index 5970130fb..089e0a46d 100644
--- a/libX11/man/XPeekIfEvent.man
+++ b/libX11/man/XPeekIfEvent.man
@@ -1 +1 @@
-.so man__libmansuffix__/XIfEvent.__libmansuffix__
+.so man__libmansuffix__/XIfEvent.__libmansuffix__
diff --git a/libX11/man/XPending.man b/libX11/man/XPending.man
index 170707ae0..1fc2e3e53 100644
--- a/libX11/man/XPending.man
+++ b/libX11/man/XPending.man
@@ -1 +1 @@
-.so man__libmansuffix__/XFlush.__libmansuffix__
+.so man__libmansuffix__/XFlush.__libmansuffix__
diff --git a/libX11/man/XPixmapFormatValues.man b/libX11/man/XPixmapFormatValues.man
index 0a59afe46..4e270949c 100644
--- a/libX11/man/XPixmapFormatValues.man
+++ b/libX11/man/XPixmapFormatValues.man
@@ -1 +1 @@
-.so man__libmansuffix__/ImageByteOrder.__libmansuffix__
+.so man__libmansuffix__/ImageByteOrder.__libmansuffix__
diff --git a/libX11/man/XPoint.man b/libX11/man/XPoint.man
index 268cdcd97..972f3c12b 100644
--- a/libX11/man/XPoint.man
+++ b/libX11/man/XPoint.man
@@ -1 +1 @@
-.so man__libmansuffix__/XDrawPoint.__libmansuffix__
+.so man__libmansuffix__/XDrawPoint.__libmansuffix__
diff --git a/libX11/man/XPointInRegion.man b/libX11/man/XPointInRegion.man
index 19b5dac0b..d2d2d038a 100644
--- a/libX11/man/XPointInRegion.man
+++ b/libX11/man/XPointInRegion.man
@@ -1 +1 @@
-.so man__libmansuffix__/XEmptyRegion.__libmansuffix__
+.so man__libmansuffix__/XEmptyRegion.__libmansuffix__
diff --git a/libX11/man/XProcessInternalConnection.man b/libX11/man/XProcessInternalConnection.man
index 4a3cc1380..c3e5bf082 100644
--- a/libX11/man/XProcessInternalConnection.man
+++ b/libX11/man/XProcessInternalConnection.man
@@ -1 +1 @@
-.so man__libmansuffix__/XAddConnectionWatch.__libmansuffix__
+.so man__libmansuffix__/XAddConnectionWatch.__libmansuffix__
diff --git a/libX11/man/XPutPixel.man b/libX11/man/XPutPixel.man
index 8fe560159..19e5be335 100644
--- a/libX11/man/XPutPixel.man
+++ b/libX11/man/XPutPixel.man
@@ -1 +1 @@
-.so man__libmansuffix__/XInitImage.__libmansuffix__
+.so man__libmansuffix__/XInitImage.__libmansuffix__
diff --git a/libX11/man/XQueryBestCursor.man b/libX11/man/XQueryBestCursor.man
index 2600d2f3b..7f948889b 100644
--- a/libX11/man/XQueryBestCursor.man
+++ b/libX11/man/XQueryBestCursor.man
@@ -1 +1 @@
-.so man__libmansuffix__/XRecolorCursor.__libmansuffix__
+.so man__libmansuffix__/XRecolorCursor.__libmansuffix__
diff --git a/libX11/man/XQueryBestStipple.man b/libX11/man/XQueryBestStipple.man
index 171150340..ff5be0f89 100644
--- a/libX11/man/XQueryBestStipple.man
+++ b/libX11/man/XQueryBestStipple.man
@@ -1 +1 @@
-.so man__libmansuffix__/XQueryBestSize.__libmansuffix__
+.so man__libmansuffix__/XQueryBestSize.__libmansuffix__
diff --git a/libX11/man/XQueryBestTile.man b/libX11/man/XQueryBestTile.man
index 171150340..ff5be0f89 100644
--- a/libX11/man/XQueryBestTile.man
+++ b/libX11/man/XQueryBestTile.man
@@ -1 +1 @@
-.so man__libmansuffix__/XQueryBestSize.__libmansuffix__
+.so man__libmansuffix__/XQueryBestSize.__libmansuffix__
diff --git a/libX11/man/XQueryColors.man b/libX11/man/XQueryColors.man
index d1aad2b4a..f0c2a9094 100644
--- a/libX11/man/XQueryColors.man
+++ b/libX11/man/XQueryColors.man
@@ -1 +1 @@
-.so man__libmansuffix__/XQueryColor.__libmansuffix__
+.so man__libmansuffix__/XQueryColor.__libmansuffix__
diff --git a/libX11/man/XQueryExtension.man b/libX11/man/XQueryExtension.man
index 2009fcc15..bfc096498 100644
--- a/libX11/man/XQueryExtension.man
+++ b/libX11/man/XQueryExtension.man
@@ -1,67 +1,67 @@
-.\"
-.\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991 by
-.\" Digital Equipment Corporation
-.\"
-.\" Portions Copyright \(co 1990, 1991 by
-.\" Tektronix, Inc
-.\"
-.\" Rewritten for X.org by Chris Lee <clee@freedesktop.org>
-.\"
-.\" Permission to use, copy, modify, distribute, and sell this documentation
-.\" for any purpose and without fee is hereby granted, provided that the above
-.\" copyright notice and this permission notice appear in all copies.
-.\" Chris Lee makes no representations about the suitability for any purpose
-.\" of the information in this document. It is provided \`\`as-is'' without
-.\" express or implied warranty.
-.\"
-.ds xL Programming with Xlib
-.TH XQueryExtension __libmansuffix__ __xorgversion__ "X FUNCTIONS"
-.SH NAME
-XQueryExtension, XListExtensions, XFreeExtensionList \- list available extensions
-.SH SYNTAX
-.HP
-Bool XQueryExtension(\^\fIdisplay, \fIname\fP, \fImajor_opcode_return\fP, \fIfirst_event_return\fP, \fIfirst_error_return\fP\^)
-.HP
-char **XListExtensions(\^\fIdisplay\fP, \fInextensions_return\fP\^)
-.HP
-XFreeExtensionList(\^\fIlist\fP\^)
-.SH ARGUMENTS
-.IP \fIdisplay\fP 1i
-Specifies the connection to the X server.
-.IP \fIname\fP 1i
-Specifies the extension name.
-.IP \fImajor_opcode_return\fP 1i
-Returns the major opcode.
-.IP \fIfirst_event_return\fP 1i
-Returns the first event code, if any.
-.IP \fIfirst_error_return\fP 1i
-Returns the first error code, if any.
-.IP \fInextensions_return\fP 1i
-Returns the number of extensions listed.
-.IP \fIlist\fP 1i
-Specifies the list of extension names.
-.SH DESCRIPTION
-.LP
-The \fIXQueryExtension\fP function determines if the named extension is
-present. If the extension is not present, \fIXQueryExtension\fP returns
-\fIFalse\fP; otherwise, it returns \fITrue\fP. If the extension is present,
-\fIXQueryExtension\fP returns the major opcode for the extension to
-major_opcode_return; otherwise, it returns zero. Any minor opcode and the
-request formats are specific to the extension. If the extension involves
-additional event types, \fIXQueryExtension\fP returns the base event type code
-to first_event_return; otherwise, it returns zero. The format of the events is
-specific to the extension. If the extension involves additional error codes,
-\fIXQueryExtension\fP returns the base error code to first_error_return;
-otherwise, it returns zero. The format of additional data in the errors is
-specific to the extension. If the extension name is not in the Host Portable
-Character Encoding the result is implementation-dependent. Uppercase and
-lowercase matter; the strings ``thing'', ``Thing'', and ``thinG'' are all
-considered different names.
-.LP
-The \fIXListExtensions\fP function returns a list of all extensions supported
-by the server. If the data returned by the server is in the Latin Portable
-Character Encoding, then the returned strings are in the Host Portable
-Character Encoding. Otherwise, the result is implementation-dependent.
-.LP
-The \fIXFreeExtensionList\fP function frees the memory allocated by
-\fIXListExtensions\fP.
+.\"
+.\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991 by
+.\" Digital Equipment Corporation
+.\"
+.\" Portions Copyright \(co 1990, 1991 by
+.\" Tektronix, Inc
+.\"
+.\" Rewritten for X.org by Chris Lee <clee@freedesktop.org>
+.\"
+.\" Permission to use, copy, modify, distribute, and sell this documentation
+.\" for any purpose and without fee is hereby granted, provided that the above
+.\" copyright notice and this permission notice appear in all copies.
+.\" Chris Lee makes no representations about the suitability for any purpose
+.\" of the information in this document. It is provided \`\`as-is'' without
+.\" express or implied warranty.
+.\"
+.ds xL Programming with Xlib
+.TH XQueryExtension __libmansuffix__ __xorgversion__ "X FUNCTIONS"
+.SH NAME
+XQueryExtension, XListExtensions, XFreeExtensionList \- list available extensions
+.SH SYNTAX
+.HP
+Bool XQueryExtension(\^\fIdisplay, \fIname\fP, \fImajor_opcode_return\fP, \fIfirst_event_return\fP, \fIfirst_error_return\fP\^)
+.HP
+char **XListExtensions(\^\fIdisplay\fP, \fInextensions_return\fP\^)
+.HP
+XFreeExtensionList(\^\fIlist\fP\^)
+.SH ARGUMENTS
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIname\fP 1i
+Specifies the extension name.
+.IP \fImajor_opcode_return\fP 1i
+Returns the major opcode.
+.IP \fIfirst_event_return\fP 1i
+Returns the first event code, if any.
+.IP \fIfirst_error_return\fP 1i
+Returns the first error code, if any.
+.IP \fInextensions_return\fP 1i
+Returns the number of extensions listed.
+.IP \fIlist\fP 1i
+Specifies the list of extension names.
+.SH DESCRIPTION
+.LP
+The \fIXQueryExtension\fP function determines if the named extension is
+present. If the extension is not present, \fIXQueryExtension\fP returns
+\fIFalse\fP; otherwise, it returns \fITrue\fP. If the extension is present,
+\fIXQueryExtension\fP returns the major opcode for the extension to
+major_opcode_return; otherwise, it returns zero. Any minor opcode and the
+request formats are specific to the extension. If the extension involves
+additional event types, \fIXQueryExtension\fP returns the base event type code
+to first_event_return; otherwise, it returns zero. The format of the events is
+specific to the extension. If the extension involves additional error codes,
+\fIXQueryExtension\fP returns the base error code to first_error_return;
+otherwise, it returns zero. The format of additional data in the errors is
+specific to the extension. If the extension name is not in the Host Portable
+Character Encoding the result is implementation-dependent. Uppercase and
+lowercase matter; the strings ``thing'', ``Thing'', and ``thinG'' are all
+considered different names.
+.LP
+The \fIXListExtensions\fP function returns a list of all extensions supported
+by the server. If the data returned by the server is in the Latin Portable
+Character Encoding, then the returned strings are in the Host Portable
+Character Encoding. Otherwise, the result is implementation-dependent.
+.LP
+The \fIXFreeExtensionList\fP function frees the memory allocated by
+\fIXListExtensions\fP.
diff --git a/libX11/man/XQueryFont.man b/libX11/man/XQueryFont.man
index 8b44e8513..ca6fa1f21 100644
--- a/libX11/man/XQueryFont.man
+++ b/libX11/man/XQueryFont.man
@@ -1 +1 @@
-.so man__libmansuffix__/XLoadFont.__libmansuffix__
+.so man__libmansuffix__/XLoadFont.__libmansuffix__
diff --git a/libX11/man/XQueryKeymap.man b/libX11/man/XQueryKeymap.man
index 528cea2d7..4434d0119 100644
--- a/libX11/man/XQueryKeymap.man
+++ b/libX11/man/XQueryKeymap.man
@@ -1 +1 @@
-.so man__libmansuffix__/XChangeKeyboardControl.__libmansuffix__
+.so man__libmansuffix__/XChangeKeyboardControl.__libmansuffix__
diff --git a/libX11/man/XQueryTextExtents.man b/libX11/man/XQueryTextExtents.man
index 36be9d3c7..cbe02098c 100644
--- a/libX11/man/XQueryTextExtents.man
+++ b/libX11/man/XQueryTextExtents.man
@@ -1 +1 @@
-.so man__libmansuffix__/XTextExtents.__libmansuffix__
+.so man__libmansuffix__/XTextExtents.__libmansuffix__
diff --git a/libX11/man/XQueryTextExtents16.man b/libX11/man/XQueryTextExtents16.man
index 36be9d3c7..cbe02098c 100644
--- a/libX11/man/XQueryTextExtents16.man
+++ b/libX11/man/XQueryTextExtents16.man
@@ -1 +1 @@
-.so man__libmansuffix__/XTextExtents.__libmansuffix__
+.so man__libmansuffix__/XTextExtents.__libmansuffix__
diff --git a/libX11/man/XReadBitmapFileData.man b/libX11/man/XReadBitmapFileData.man
index 9631570d0..ff0c27655 100644
--- a/libX11/man/XReadBitmapFileData.man
+++ b/libX11/man/XReadBitmapFileData.man
@@ -1 +1 @@
-.so man__libmansuffix__/XReadBitmapFile.__libmansuffix__
+.so man__libmansuffix__/XReadBitmapFile.__libmansuffix__
diff --git a/libX11/man/XRebindKeysym.man b/libX11/man/XRebindKeysym.man
index 23156fe74..37d15977a 100644
--- a/libX11/man/XRebindKeysym.man
+++ b/libX11/man/XRebindKeysym.man
@@ -1 +1 @@
-.so man__libmansuffix__/XLookupKeysym.__libmansuffix__
+.so man__libmansuffix__/XLookupKeysym.__libmansuffix__
diff --git a/libX11/man/XReconfigureWMWindow.man b/libX11/man/XReconfigureWMWindow.man
index 799989ad0..ad57b1900 100644
--- a/libX11/man/XReconfigureWMWindow.man
+++ b/libX11/man/XReconfigureWMWindow.man
@@ -1 +1 @@
-.so man__libmansuffix__/XIconifyWindow.__libmansuffix__
+.so man__libmansuffix__/XIconifyWindow.__libmansuffix__
diff --git a/libX11/man/XRectInRegion.man b/libX11/man/XRectInRegion.man
index 19b5dac0b..d2d2d038a 100644
--- a/libX11/man/XRectInRegion.man
+++ b/libX11/man/XRectInRegion.man
@@ -1 +1 @@
-.so man__libmansuffix__/XEmptyRegion.__libmansuffix__
+.so man__libmansuffix__/XEmptyRegion.__libmansuffix__
diff --git a/libX11/man/XRectangle.man b/libX11/man/XRectangle.man
index 0def1f675..9bb2a5091 100644
--- a/libX11/man/XRectangle.man
+++ b/libX11/man/XRectangle.man
@@ -1 +1 @@
-.so man__libmansuffix__/XDrawRectangle.__libmansuffix__
+.so man__libmansuffix__/XDrawRectangle.__libmansuffix__
diff --git a/libX11/man/XRefreshKeyboardMapping.man b/libX11/man/XRefreshKeyboardMapping.man
index 23156fe74..37d15977a 100644
--- a/libX11/man/XRefreshKeyboardMapping.man
+++ b/libX11/man/XRefreshKeyboardMapping.man
@@ -1 +1 @@
-.so man__libmansuffix__/XLookupKeysym.__libmansuffix__
+.so man__libmansuffix__/XLookupKeysym.__libmansuffix__
diff --git a/libX11/man/XRegisterIMInstantiateCallback.man b/libX11/man/XRegisterIMInstantiateCallback.man
index 6d302b9cd..63654099c 100644
--- a/libX11/man/XRegisterIMInstantiateCallback.man
+++ b/libX11/man/XRegisterIMInstantiateCallback.man
@@ -1 +1 @@
-.so man__libmansuffix__/XOpenIM.__libmansuffix__
+.so man__libmansuffix__/XOpenIM.__libmansuffix__
diff --git a/libX11/man/XRemoveConnectionWatch.man b/libX11/man/XRemoveConnectionWatch.man
index 4a3cc1380..c3e5bf082 100644
--- a/libX11/man/XRemoveConnectionWatch.man
+++ b/libX11/man/XRemoveConnectionWatch.man
@@ -1 +1 @@
-.so man__libmansuffix__/XAddConnectionWatch.__libmansuffix__
+.so man__libmansuffix__/XAddConnectionWatch.__libmansuffix__
diff --git a/libX11/man/XRemoveFromSaveSet.man b/libX11/man/XRemoveFromSaveSet.man
index 0ea6bfcfc..b690595ce 100644
--- a/libX11/man/XRemoveFromSaveSet.man
+++ b/libX11/man/XRemoveFromSaveSet.man
@@ -1 +1 @@
-.so man__libmansuffix__/XChangeSaveSet.__libmansuffix__
+.so man__libmansuffix__/XChangeSaveSet.__libmansuffix__
diff --git a/libX11/man/XRemoveHost.man b/libX11/man/XRemoveHost.man
index 8efac194e..13e833b46 100644
--- a/libX11/man/XRemoveHost.man
+++ b/libX11/man/XRemoveHost.man
@@ -1 +1 @@
-.so man__libmansuffix__/XAddHost.__libmansuffix__
+.so man__libmansuffix__/XAddHost.__libmansuffix__
diff --git a/libX11/man/XRemoveHosts.man b/libX11/man/XRemoveHosts.man
index 8efac194e..13e833b46 100644
--- a/libX11/man/XRemoveHosts.man
+++ b/libX11/man/XRemoveHosts.man
@@ -1 +1 @@
-.so man__libmansuffix__/XAddHost.__libmansuffix__
+.so man__libmansuffix__/XAddHost.__libmansuffix__
diff --git a/libX11/man/XResetScreenSaver.man b/libX11/man/XResetScreenSaver.man
index 35198d594..13eba4e21 100644
--- a/libX11/man/XResetScreenSaver.man
+++ b/libX11/man/XResetScreenSaver.man
@@ -1 +1 @@
-.so man__libmansuffix__/XSetScreenSaver.__libmansuffix__
+.so man__libmansuffix__/XSetScreenSaver.__libmansuffix__
diff --git a/libX11/man/XResizeWindow.man b/libX11/man/XResizeWindow.man
index 5fbc49488..4c16c270b 100644
--- a/libX11/man/XResizeWindow.man
+++ b/libX11/man/XResizeWindow.man
@@ -1 +1 @@
-.so man__libmansuffix__/XConfigureWindow.__libmansuffix__
+.so man__libmansuffix__/XConfigureWindow.__libmansuffix__
diff --git a/libX11/man/XRestackWindows.man b/libX11/man/XRestackWindows.man
index 61d7a2348..37f4b5f8b 100644
--- a/libX11/man/XRestackWindows.man
+++ b/libX11/man/XRestackWindows.man
@@ -1 +1 @@
-.so man__libmansuffix__/XRaiseWindow.__libmansuffix__
+.so man__libmansuffix__/XRaiseWindow.__libmansuffix__
diff --git a/libX11/man/XRotateBuffers.man b/libX11/man/XRotateBuffers.man
index c399f1c19..03d3c46f9 100644
--- a/libX11/man/XRotateBuffers.man
+++ b/libX11/man/XRotateBuffers.man
@@ -1 +1 @@
-.so man__libmansuffix__/XStoreBytes.__libmansuffix__
+.so man__libmansuffix__/XStoreBytes.__libmansuffix__
diff --git a/libX11/man/XRotateWindowProperties.man b/libX11/man/XRotateWindowProperties.man
index e265d7d69..ce26c3d38 100644
--- a/libX11/man/XRotateWindowProperties.man
+++ b/libX11/man/XRotateWindowProperties.man
@@ -1 +1 @@
-.so man__libmansuffix__/XGetWindowProperty.__libmansuffix__
+.so man__libmansuffix__/XGetWindowProperty.__libmansuffix__
diff --git a/libX11/man/XScreenNumberOfScreen.man b/libX11/man/XScreenNumberOfScreen.man
index c69be9763..1bb28e72e 100644
--- a/libX11/man/XScreenNumberOfScreen.man
+++ b/libX11/man/XScreenNumberOfScreen.man
@@ -1 +1 @@
-.so man__libmansuffix__/BlackPixelOfScreen.__libmansuffix__
+.so man__libmansuffix__/BlackPixelOfScreen.__libmansuffix__
diff --git a/libX11/man/XScreenResourceString.man b/libX11/man/XScreenResourceString.man
index 5bb47cead..17d28f3e2 100644
--- a/libX11/man/XScreenResourceString.man
+++ b/libX11/man/XScreenResourceString.man
@@ -1 +1 @@
-.so man__libmansuffix__/XResourceManagerString.__libmansuffix__
+.so man__libmansuffix__/XResourceManagerString.__libmansuffix__
diff --git a/libX11/man/XSegment.man b/libX11/man/XSegment.man
index a361976a0..ae1ad04e0 100644
--- a/libX11/man/XSegment.man
+++ b/libX11/man/XSegment.man
@@ -1 +1 @@
-.so man__libmansuffix__/XDrawLine.__libmansuffix__
+.so man__libmansuffix__/XDrawLine.__libmansuffix__
diff --git a/libX11/man/XSetAccessControl.man b/libX11/man/XSetAccessControl.man
index 8efac194e..13e833b46 100644
--- a/libX11/man/XSetAccessControl.man
+++ b/libX11/man/XSetAccessControl.man
@@ -1 +1 @@
-.so man__libmansuffix__/XAddHost.__libmansuffix__
+.so man__libmansuffix__/XAddHost.__libmansuffix__
diff --git a/libX11/man/XSetAfterFunction.man b/libX11/man/XSetAfterFunction.man
index f37afee4a..43b5ea13c 100644
--- a/libX11/man/XSetAfterFunction.man
+++ b/libX11/man/XSetAfterFunction.man
@@ -1 +1 @@
-.so man__libmansuffix__/XSynchronize.__libmansuffix__
+.so man__libmansuffix__/XSynchronize.__libmansuffix__
diff --git a/libX11/man/XSetBackground.man b/libX11/man/XSetBackground.man
index 137df8ee5..08ff447c5 100644
--- a/libX11/man/XSetBackground.man
+++ b/libX11/man/XSetBackground.man
@@ -1 +1 @@
-.so man__libmansuffix__/XSetState.__libmansuffix__
+.so man__libmansuffix__/XSetState.__libmansuffix__
diff --git a/libX11/man/XSetClassHint.man b/libX11/man/XSetClassHint.man
index fc953a21b..02d6722d8 100644
--- a/libX11/man/XSetClassHint.man
+++ b/libX11/man/XSetClassHint.man
@@ -1 +1 @@
-.so man__libmansuffix__/XAllocClassHint.__libmansuffix__
+.so man__libmansuffix__/XAllocClassHint.__libmansuffix__
diff --git a/libX11/man/XSetClipMask.man b/libX11/man/XSetClipMask.man
index 5393e9b2a..c028d4763 100644
--- a/libX11/man/XSetClipMask.man
+++ b/libX11/man/XSetClipMask.man
@@ -1 +1 @@
-.so man__libmansuffix__/XSetClipOrigin.__libmansuffix__
+.so man__libmansuffix__/XSetClipOrigin.__libmansuffix__
diff --git a/libX11/man/XSetClipRectangles.man b/libX11/man/XSetClipRectangles.man
index 5393e9b2a..c028d4763 100644
--- a/libX11/man/XSetClipRectangles.man
+++ b/libX11/man/XSetClipRectangles.man
@@ -1 +1 @@
-.so man__libmansuffix__/XSetClipOrigin.__libmansuffix__
+.so man__libmansuffix__/XSetClipOrigin.__libmansuffix__
diff --git a/libX11/man/XSetDashes.man b/libX11/man/XSetDashes.man
index 6193102c0..179e674c3 100644
--- a/libX11/man/XSetDashes.man
+++ b/libX11/man/XSetDashes.man
@@ -1 +1 @@
-.so man__libmansuffix__/XSetLineAttributes.__libmansuffix__
+.so man__libmansuffix__/XSetLineAttributes.__libmansuffix__
diff --git a/libX11/man/XSetEventQueueOwner.man b/libX11/man/XSetEventQueueOwner.man
index e53e5c553..d9740d4c6 100644
--- a/libX11/man/XSetEventQueueOwner.man
+++ b/libX11/man/XSetEventQueueOwner.man
@@ -1,58 +1,58 @@
-.\" Copyright \(co 2006 Josh Triplett
-.\"
-.\" Permission is hereby granted, free of charge, to any person obtaining
-.\" a copy of this software and associated documentation files (the
-.\" "Software"), to deal in the Software without restriction, including
-.\" without limitation the rights to use, copy, modify, merge, publish,
-.\" distribute, sublicense, and/or sell copies of the Software, and to
-.\" permit persons to whom the Software is furnished to do so, subject to
-.\" the following conditions:
-.\"
-.\" The above copyright notice and this permission notice shall be included
-.\" in all copies or substantial portions of the Software.
-.\"
-.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-.\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-.\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
-.\" IN NO EVENT SHALL THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR
-.\" OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
-.\" ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-.\" OTHER DEALINGS IN THE SOFTWARE.
-.\"
-.TH XSetEventQueueOwner __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
-.SH NAME
-XSetEventQueueOwner \- set event queue owner on a shared Xlib/XCB connection
-.SH SYNTAX
-.HP
- #include <X11/Xlib-xcb.h>
-.HP
-void XSetEventQueueOwner(Display *\fIdpy\fP, enum XEventQueueOwner \fIowner\fP);
-.SH ARGUMENTS
-.IP \fIdpy\fP 1i
-Specifies the connection to the X server.
-.IP \fIowner\fP 1i
-Specifies the event queue ownership:
-.RS
-.TP
-\fIXlibOwnsEventQueue\fP (default)
-Xlib owns the event queue. Use the Xlib event-handling functions. Do not
-call the XCB event-handling functions.
-.TP
-\fIXCBOwnsEventQueue\fP
-XCB owns the event queue. Use the XCB event-handling functions. Do not call
-the Xlib event-handling functions.
-.RE
-.IN "Environment" "DISPLAY"
-.SH DESCRIPTION
-While a client using Xlib/XCB can issue requests and handle their replies or
-errors with either Xlib or XCB, only one can own and handle the event queue.
-By default, Xlib must own the event queue, for compatibility with legacy Xlib
-clients. Clients can call \fIXSetEventQueueOwner\fP immediately after
-\fIXOpenDisplay\fP to let XCB own the event queue instead. Clients may not
-call \fIXSetEventQueueOwner\fP at any other time, as this will potentially
-lose responses.
-.SH "SEE ALSO"
-XOpenDisplay(__libmansuffix__),
-XGetXCBConnection(__libmansuffix__),
-.br
-\fIXlib \- C Language X Interface\fP
+.\" Copyright \(co 2006 Josh Triplett
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining
+.\" a copy of this software and associated documentation files (the
+.\" "Software"), to deal in the Software without restriction, including
+.\" without limitation the rights to use, copy, modify, merge, publish,
+.\" distribute, sublicense, and/or sell copies of the Software, and to
+.\" permit persons to whom the Software is furnished to do so, subject to
+.\" the following conditions:
+.\"
+.\" The above copyright notice and this permission notice shall be included
+.\" in all copies or substantial portions of the Software.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+.\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+.\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+.\" IN NO EVENT SHALL THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR
+.\" OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
+.\" ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+.\" OTHER DEALINGS IN THE SOFTWARE.
+.\"
+.TH XSetEventQueueOwner __libmansuffix__ __xorgversion__ "XLIB FUNCTIONS"
+.SH NAME
+XSetEventQueueOwner \- set event queue owner on a shared Xlib/XCB connection
+.SH SYNTAX
+.HP
+ #include <X11/Xlib-xcb.h>
+.HP
+void XSetEventQueueOwner(Display *\fIdpy\fP, enum XEventQueueOwner \fIowner\fP);
+.SH ARGUMENTS
+.IP \fIdpy\fP 1i
+Specifies the connection to the X server.
+.IP \fIowner\fP 1i
+Specifies the event queue ownership:
+.RS
+.TP
+\fIXlibOwnsEventQueue\fP (default)
+Xlib owns the event queue. Use the Xlib event-handling functions. Do not
+call the XCB event-handling functions.
+.TP
+\fIXCBOwnsEventQueue\fP
+XCB owns the event queue. Use the XCB event-handling functions. Do not call
+the Xlib event-handling functions.
+.RE
+.IN "Environment" "DISPLAY"
+.SH DESCRIPTION
+While a client using Xlib/XCB can issue requests and handle their replies or
+errors with either Xlib or XCB, only one can own and handle the event queue.
+By default, Xlib must own the event queue, for compatibility with legacy Xlib
+clients. Clients can call \fIXSetEventQueueOwner\fP immediately after
+\fIXOpenDisplay\fP to let XCB own the event queue instead. Clients may not
+call \fIXSetEventQueueOwner\fP at any other time, as this will potentially
+lose responses.
+.SH "SEE ALSO"
+XOpenDisplay(__libmansuffix__),
+XGetXCBConnection(__libmansuffix__),
+.br
+\fIXlib \- C Language X Interface\fP
diff --git a/libX11/man/XSetFillRule.man b/libX11/man/XSetFillRule.man
index aa575baab..52941d0a6 100644
--- a/libX11/man/XSetFillRule.man
+++ b/libX11/man/XSetFillRule.man
@@ -1 +1 @@
-.so man__libmansuffix__/XSetFillStyle.__libmansuffix__
+.so man__libmansuffix__/XSetFillStyle.__libmansuffix__
diff --git a/libX11/man/XSetForeground.man b/libX11/man/XSetForeground.man
index 137df8ee5..08ff447c5 100644
--- a/libX11/man/XSetForeground.man
+++ b/libX11/man/XSetForeground.man
@@ -1 +1 @@
-.so man__libmansuffix__/XSetState.__libmansuffix__
+.so man__libmansuffix__/XSetState.__libmansuffix__
diff --git a/libX11/man/XSetFunction.man b/libX11/man/XSetFunction.man
index 137df8ee5..08ff447c5 100644
--- a/libX11/man/XSetFunction.man
+++ b/libX11/man/XSetFunction.man
@@ -1 +1 @@
-.so man__libmansuffix__/XSetState.__libmansuffix__
+.so man__libmansuffix__/XSetState.__libmansuffix__
diff --git a/libX11/man/XSetGraphicsExposure.man b/libX11/man/XSetGraphicsExposure.man
index 9d4203f44..55805810d 100644
--- a/libX11/man/XSetGraphicsExposure.man
+++ b/libX11/man/XSetGraphicsExposure.man
@@ -1 +1 @@
-.so man__libmansuffix__/XSetArcMode.__libmansuffix__
+.so man__libmansuffix__/XSetArcMode.__libmansuffix__
diff --git a/libX11/man/XSetIMValues.man b/libX11/man/XSetIMValues.man
index 6d302b9cd..63654099c 100644
--- a/libX11/man/XSetIMValues.man
+++ b/libX11/man/XSetIMValues.man
@@ -1 +1 @@
-.so man__libmansuffix__/XOpenIM.__libmansuffix__
+.so man__libmansuffix__/XOpenIM.__libmansuffix__
diff --git a/libX11/man/XSetIOErrorHandler.man b/libX11/man/XSetIOErrorHandler.man
index 608900365..de67624e7 100644
--- a/libX11/man/XSetIOErrorHandler.man
+++ b/libX11/man/XSetIOErrorHandler.man
@@ -1 +1 @@
-.so man__libmansuffix__/XSetErrorHandler.__libmansuffix__
+.so man__libmansuffix__/XSetErrorHandler.__libmansuffix__
diff --git a/libX11/man/XSetIconName.man b/libX11/man/XSetIconName.man
index e315e4495..bf1ba60bb 100644
--- a/libX11/man/XSetIconName.man
+++ b/libX11/man/XSetIconName.man
@@ -1 +1 @@
-.so man__libmansuffix__/XSetWMIconName.__libmansuffix__
+.so man__libmansuffix__/XSetWMIconName.__libmansuffix__
diff --git a/libX11/man/XSetIconSizes.man b/libX11/man/XSetIconSizes.man
index edc8882fb..afe574eb3 100644
--- a/libX11/man/XSetIconSizes.man
+++ b/libX11/man/XSetIconSizes.man
@@ -1 +1 @@
-.so man__libmansuffix__/XAllocIconSize.__libmansuffix__
+.so man__libmansuffix__/XAllocIconSize.__libmansuffix__
diff --git a/libX11/man/XSetLocaleModifiers.man b/libX11/man/XSetLocaleModifiers.man
index 046f97fe3..3f7971ed4 100644
--- a/libX11/man/XSetLocaleModifiers.man
+++ b/libX11/man/XSetLocaleModifiers.man
@@ -1 +1 @@
-.so man__libmansuffix__/XSupportsLocale.__libmansuffix__
+.so man__libmansuffix__/XSupportsLocale.__libmansuffix__
diff --git a/libX11/man/XSetModifierMapping.man b/libX11/man/XSetModifierMapping.man
index 013c70a95..cc772afae 100644
--- a/libX11/man/XSetModifierMapping.man
+++ b/libX11/man/XSetModifierMapping.man
@@ -1 +1 @@
-.so man__libmansuffix__/XChangeKeyboardMapping.__libmansuffix__
+.so man__libmansuffix__/XChangeKeyboardMapping.__libmansuffix__
diff --git a/libX11/man/XSetOCValues.man b/libX11/man/XSetOCValues.man
index ece6d5ce7..12d5a3d53 100644
--- a/libX11/man/XSetOCValues.man
+++ b/libX11/man/XSetOCValues.man
@@ -1 +1 @@
-.so man__libmansuffix__/XCreateOC.__libmansuffix__
+.so man__libmansuffix__/XCreateOC.__libmansuffix__
diff --git a/libX11/man/XSetOMValues.man b/libX11/man/XSetOMValues.man
index d7e1adb03..3b4acf51a 100644
--- a/libX11/man/XSetOMValues.man
+++ b/libX11/man/XSetOMValues.man
@@ -1 +1 @@
-.so man__libmansuffix__/XOpenOM.__libmansuffix__
+.so man__libmansuffix__/XOpenOM.__libmansuffix__
diff --git a/libX11/man/XSetPlaneMask.man b/libX11/man/XSetPlaneMask.man
index 137df8ee5..08ff447c5 100644
--- a/libX11/man/XSetPlaneMask.man
+++ b/libX11/man/XSetPlaneMask.man
@@ -1 +1 @@
-.so man__libmansuffix__/XSetState.__libmansuffix__
+.so man__libmansuffix__/XSetState.__libmansuffix__
diff --git a/libX11/man/XSetRGBColormaps.man b/libX11/man/XSetRGBColormaps.man
index a36aee4fe..da749f608 100644
--- a/libX11/man/XSetRGBColormaps.man
+++ b/libX11/man/XSetRGBColormaps.man
@@ -1 +1 @@
-.so man__libmansuffix__/XAllocStandardColormap.__libmansuffix__
+.so man__libmansuffix__/XAllocStandardColormap.__libmansuffix__
diff --git a/libX11/man/XSetRegion.man b/libX11/man/XSetRegion.man
index 9e7e7d197..a643153b2 100644
--- a/libX11/man/XSetRegion.man
+++ b/libX11/man/XSetRegion.man
@@ -1 +1 @@
-.so man__libmansuffix__/XCreateRegion.__libmansuffix__
+.so man__libmansuffix__/XCreateRegion.__libmansuffix__
diff --git a/libX11/man/XSetStipple.man b/libX11/man/XSetStipple.man
index 7c434f5cc..ddc27f773 100644
--- a/libX11/man/XSetStipple.man
+++ b/libX11/man/XSetStipple.man
@@ -1 +1 @@
-.so man__libmansuffix__/XSetTile.__libmansuffix__
+.so man__libmansuffix__/XSetTile.__libmansuffix__
diff --git a/libX11/man/XSetSubwindowMode.man b/libX11/man/XSetSubwindowMode.man
index 9d4203f44..55805810d 100644
--- a/libX11/man/XSetSubwindowMode.man
+++ b/libX11/man/XSetSubwindowMode.man
@@ -1 +1 @@
-.so man__libmansuffix__/XSetArcMode.__libmansuffix__
+.so man__libmansuffix__/XSetArcMode.__libmansuffix__
diff --git a/libX11/man/XSetTSOrigin.man b/libX11/man/XSetTSOrigin.man
index 7c434f5cc..ddc27f773 100644
--- a/libX11/man/XSetTSOrigin.man
+++ b/libX11/man/XSetTSOrigin.man
@@ -1 +1 @@
-.so man__libmansuffix__/XSetTile.__libmansuffix__
+.so man__libmansuffix__/XSetTile.__libmansuffix__
diff --git a/libX11/man/XSetWMHints.man b/libX11/man/XSetWMHints.man
index e066f6d95..1e15d7e07 100644
--- a/libX11/man/XSetWMHints.man
+++ b/libX11/man/XSetWMHints.man
@@ -1 +1 @@
-.so man__libmansuffix__/XAllocWMHints.__libmansuffix__
+.so man__libmansuffix__/XAllocWMHints.__libmansuffix__
diff --git a/libX11/man/XSetWMNormalHints.man b/libX11/man/XSetWMNormalHints.man
index 94ebb6295..9fbee3883 100644
--- a/libX11/man/XSetWMNormalHints.man
+++ b/libX11/man/XSetWMNormalHints.man
@@ -1 +1 @@
-.so man__libmansuffix__/XAllocSizeHints.__libmansuffix__
+.so man__libmansuffix__/XAllocSizeHints.__libmansuffix__
diff --git a/libX11/man/XSetWMSizeHints.man b/libX11/man/XSetWMSizeHints.man
index 94ebb6295..9fbee3883 100644
--- a/libX11/man/XSetWMSizeHints.man
+++ b/libX11/man/XSetWMSizeHints.man
@@ -1 +1 @@
-.so man__libmansuffix__/XAllocSizeHints.__libmansuffix__
+.so man__libmansuffix__/XAllocSizeHints.__libmansuffix__
diff --git a/libX11/man/XSetWindowAttributes.man b/libX11/man/XSetWindowAttributes.man
index 11440c64e..e24be5627 100644
--- a/libX11/man/XSetWindowAttributes.man
+++ b/libX11/man/XSetWindowAttributes.man
@@ -1 +1 @@
-.so man__libmansuffix__/XCreateWindow.__libmansuffix__
+.so man__libmansuffix__/XCreateWindow.__libmansuffix__
diff --git a/libX11/man/XSetWindowBackground.man b/libX11/man/XSetWindowBackground.man
index 1c1160ec3..490a61909 100644
--- a/libX11/man/XSetWindowBackground.man
+++ b/libX11/man/XSetWindowBackground.man
@@ -1 +1 @@
-.so man__libmansuffix__/XChangeWindowAttributes.__libmansuffix__
+.so man__libmansuffix__/XChangeWindowAttributes.__libmansuffix__
diff --git a/libX11/man/XSetWindowBackgroundPixmap.man b/libX11/man/XSetWindowBackgroundPixmap.man
index 1c1160ec3..490a61909 100644
--- a/libX11/man/XSetWindowBackgroundPixmap.man
+++ b/libX11/man/XSetWindowBackgroundPixmap.man
@@ -1 +1 @@
-.so man__libmansuffix__/XChangeWindowAttributes.__libmansuffix__
+.so man__libmansuffix__/XChangeWindowAttributes.__libmansuffix__
diff --git a/libX11/man/XSetWindowBorder.man b/libX11/man/XSetWindowBorder.man
index 1c1160ec3..490a61909 100644
--- a/libX11/man/XSetWindowBorder.man
+++ b/libX11/man/XSetWindowBorder.man
@@ -1 +1 @@
-.so man__libmansuffix__/XChangeWindowAttributes.__libmansuffix__
+.so man__libmansuffix__/XChangeWindowAttributes.__libmansuffix__
diff --git a/libX11/man/XSetWindowBorderPixmap.man b/libX11/man/XSetWindowBorderPixmap.man
index 1c1160ec3..490a61909 100644
--- a/libX11/man/XSetWindowBorderPixmap.man
+++ b/libX11/man/XSetWindowBorderPixmap.man
@@ -1 +1 @@
-.so man__libmansuffix__/XChangeWindowAttributes.__libmansuffix__
+.so man__libmansuffix__/XChangeWindowAttributes.__libmansuffix__
diff --git a/libX11/man/XSetWindowBorderWidth.man b/libX11/man/XSetWindowBorderWidth.man
index 5fbc49488..4c16c270b 100644
--- a/libX11/man/XSetWindowBorderWidth.man
+++ b/libX11/man/XSetWindowBorderWidth.man
@@ -1 +1 @@
-.so man__libmansuffix__/XConfigureWindow.__libmansuffix__
+.so man__libmansuffix__/XConfigureWindow.__libmansuffix__
diff --git a/libX11/man/XSetWindowColormap.man b/libX11/man/XSetWindowColormap.man
index 1c1160ec3..490a61909 100644
--- a/libX11/man/XSetWindowColormap.man
+++ b/libX11/man/XSetWindowColormap.man
@@ -1 +1 @@
-.so man__libmansuffix__/XChangeWindowAttributes.__libmansuffix__
+.so man__libmansuffix__/XChangeWindowAttributes.__libmansuffix__
diff --git a/libX11/man/XShrinkRegion.man b/libX11/man/XShrinkRegion.man
index 630c1f2c8..585c17729 100644
--- a/libX11/man/XShrinkRegion.man
+++ b/libX11/man/XShrinkRegion.man
@@ -1 +1 @@
-.so man__libmansuffix__/XIntersectRegion.__libmansuffix__
+.so man__libmansuffix__/XIntersectRegion.__libmansuffix__
diff --git a/libX11/man/XSizeHints.man b/libX11/man/XSizeHints.man
index 94ebb6295..9fbee3883 100644
--- a/libX11/man/XSizeHints.man
+++ b/libX11/man/XSizeHints.man
@@ -1 +1 @@
-.so man__libmansuffix__/XAllocSizeHints.__libmansuffix__
+.so man__libmansuffix__/XAllocSizeHints.__libmansuffix__
diff --git a/libX11/man/XStandardColormap.man b/libX11/man/XStandardColormap.man
index a36aee4fe..da749f608 100644
--- a/libX11/man/XStandardColormap.man
+++ b/libX11/man/XStandardColormap.man
@@ -1 +1 @@
-.so man__libmansuffix__/XAllocStandardColormap.__libmansuffix__
+.so man__libmansuffix__/XAllocStandardColormap.__libmansuffix__
diff --git a/libX11/man/XStoreBuffer.man b/libX11/man/XStoreBuffer.man
index c399f1c19..03d3c46f9 100644
--- a/libX11/man/XStoreBuffer.man
+++ b/libX11/man/XStoreBuffer.man
@@ -1 +1 @@
-.so man__libmansuffix__/XStoreBytes.__libmansuffix__
+.so man__libmansuffix__/XStoreBytes.__libmansuffix__
diff --git a/libX11/man/XStoreColor.man b/libX11/man/XStoreColor.man
index f185b7e60..f6cbf0e82 100644
--- a/libX11/man/XStoreColor.man
+++ b/libX11/man/XStoreColor.man
@@ -1 +1 @@
-.so man__libmansuffix__/XStoreColors.__libmansuffix__
+.so man__libmansuffix__/XStoreColors.__libmansuffix__
diff --git a/libX11/man/XStoreName.man b/libX11/man/XStoreName.man
index 6b4fc7e7d..45257dc10 100644
--- a/libX11/man/XStoreName.man
+++ b/libX11/man/XStoreName.man
@@ -1 +1 @@
-.so man__libmansuffix__/XSetWMName.__libmansuffix__
+.so man__libmansuffix__/XSetWMName.__libmansuffix__
diff --git a/libX11/man/XStoreNamedColor.man b/libX11/man/XStoreNamedColor.man
index f185b7e60..f6cbf0e82 100644
--- a/libX11/man/XStoreNamedColor.man
+++ b/libX11/man/XStoreNamedColor.man
@@ -1 +1 @@
-.so man__libmansuffix__/XStoreColors.__libmansuffix__
+.so man__libmansuffix__/XStoreColors.__libmansuffix__
diff --git a/libX11/man/XSubImage.man b/libX11/man/XSubImage.man
index 8fe560159..19e5be335 100644
--- a/libX11/man/XSubImage.man
+++ b/libX11/man/XSubImage.man
@@ -1 +1 @@
-.so man__libmansuffix__/XInitImage.__libmansuffix__
+.so man__libmansuffix__/XInitImage.__libmansuffix__
diff --git a/libX11/man/XSubtractRegion.man b/libX11/man/XSubtractRegion.man
index 630c1f2c8..585c17729 100644
--- a/libX11/man/XSubtractRegion.man
+++ b/libX11/man/XSubtractRegion.man
@@ -1 +1 @@
-.so man__libmansuffix__/XIntersectRegion.__libmansuffix__
+.so man__libmansuffix__/XIntersectRegion.__libmansuffix__
diff --git a/libX11/man/XSync.man b/libX11/man/XSync.man
index 170707ae0..1fc2e3e53 100644
--- a/libX11/man/XSync.man
+++ b/libX11/man/XSync.man
@@ -1 +1 @@
-.so man__libmansuffix__/XFlush.__libmansuffix__
+.so man__libmansuffix__/XFlush.__libmansuffix__
diff --git a/libX11/man/XTextExtents16.man b/libX11/man/XTextExtents16.man
index 36be9d3c7..cbe02098c 100644
--- a/libX11/man/XTextExtents16.man
+++ b/libX11/man/XTextExtents16.man
@@ -1 +1 @@
-.so man__libmansuffix__/XTextExtents.__libmansuffix__
+.so man__libmansuffix__/XTextExtents.__libmansuffix__
diff --git a/libX11/man/XTextItem.man b/libX11/man/XTextItem.man
index cee50e8da..dfd6bfaf8 100644
--- a/libX11/man/XTextItem.man
+++ b/libX11/man/XTextItem.man
@@ -1 +1 @@
-.so man__libmansuffix__/XDrawText.__libmansuffix__
+.so man__libmansuffix__/XDrawText.__libmansuffix__
diff --git a/libX11/man/XTextItem16.man b/libX11/man/XTextItem16.man
index cee50e8da..dfd6bfaf8 100644
--- a/libX11/man/XTextItem16.man
+++ b/libX11/man/XTextItem16.man
@@ -1 +1 @@
-.so man__libmansuffix__/XDrawText.__libmansuffix__
+.so man__libmansuffix__/XDrawText.__libmansuffix__
diff --git a/libX11/man/XTextProperty.man b/libX11/man/XTextProperty.man
index 70c3debc2..faf0beb80 100644
--- a/libX11/man/XTextProperty.man
+++ b/libX11/man/XTextProperty.man
@@ -1 +1 @@
-.so man__libmansuffix__/XStringListToTextProperty.__libmansuffix__
+.so man__libmansuffix__/XStringListToTextProperty.__libmansuffix__
diff --git a/libX11/man/XTextPropertyToStringList.man b/libX11/man/XTextPropertyToStringList.man
index 70c3debc2..faf0beb80 100644
--- a/libX11/man/XTextPropertyToStringList.man
+++ b/libX11/man/XTextPropertyToStringList.man
@@ -1 +1 @@
-.so man__libmansuffix__/XStringListToTextProperty.__libmansuffix__
+.so man__libmansuffix__/XStringListToTextProperty.__libmansuffix__
diff --git a/libX11/man/XTextWidth16.man b/libX11/man/XTextWidth16.man
index e0e845a85..9a013fde6 100644
--- a/libX11/man/XTextWidth16.man
+++ b/libX11/man/XTextWidth16.man
@@ -1 +1 @@
-.so man__libmansuffix__/XTextWidth.__libmansuffix__
+.so man__libmansuffix__/XTextWidth.__libmansuffix__
diff --git a/libX11/man/XTimeCoord.man b/libX11/man/XTimeCoord.man
index 708dee7c8..bfd75c0fd 100644
--- a/libX11/man/XTimeCoord.man
+++ b/libX11/man/XTimeCoord.man
@@ -1 +1 @@
-.so man__libmansuffix__/XSendEvent.__libmansuffix__
+.so man__libmansuffix__/XSendEvent.__libmansuffix__
diff --git a/libX11/man/XUndefineCursor.man b/libX11/man/XUndefineCursor.man
index 55aeaca40..ce28160be 100644
--- a/libX11/man/XUndefineCursor.man
+++ b/libX11/man/XUndefineCursor.man
@@ -1 +1 @@
-.so man__libmansuffix__/XDefineCursor.__libmansuffix__
+.so man__libmansuffix__/XDefineCursor.__libmansuffix__
diff --git a/libX11/man/XUngrabButton.man b/libX11/man/XUngrabButton.man
index d82a48eb5..c284212b2 100644
--- a/libX11/man/XUngrabButton.man
+++ b/libX11/man/XUngrabButton.man
@@ -1 +1 @@
-.so man__libmansuffix__/XGrabButton.__libmansuffix__
+.so man__libmansuffix__/XGrabButton.__libmansuffix__
diff --git a/libX11/man/XUngrabKey.man b/libX11/man/XUngrabKey.man
index 55923cdec..141a9410b 100644
--- a/libX11/man/XUngrabKey.man
+++ b/libX11/man/XUngrabKey.man
@@ -1 +1 @@
-.so man__libmansuffix__/XGrabKey.__libmansuffix__
+.so man__libmansuffix__/XGrabKey.__libmansuffix__
diff --git a/libX11/man/XUngrabKeyboard.man b/libX11/man/XUngrabKeyboard.man
index 0e7379418..51d9e909d 100644
--- a/libX11/man/XUngrabKeyboard.man
+++ b/libX11/man/XUngrabKeyboard.man
@@ -1 +1 @@
-.so man__libmansuffix__/XGrabKeyboard.__libmansuffix__
+.so man__libmansuffix__/XGrabKeyboard.__libmansuffix__
diff --git a/libX11/man/XUngrabPointer.man b/libX11/man/XUngrabPointer.man
index 93259b8c3..fce304128 100644
--- a/libX11/man/XUngrabPointer.man
+++ b/libX11/man/XUngrabPointer.man
@@ -1 +1 @@
-.so man__libmansuffix__/XGrabPointer.__libmansuffix__
+.so man__libmansuffix__/XGrabPointer.__libmansuffix__
diff --git a/libX11/man/XUngrabServer.man b/libX11/man/XUngrabServer.man
index 2427493cf..59e851e9a 100644
--- a/libX11/man/XUngrabServer.man
+++ b/libX11/man/XUngrabServer.man
@@ -1 +1 @@
-.so man__libmansuffix__/XGrabServer.__libmansuffix__
+.so man__libmansuffix__/XGrabServer.__libmansuffix__
diff --git a/libX11/man/XUninstallColormap.man b/libX11/man/XUninstallColormap.man
index 7b18ab38b..7f0ced3ce 100644
--- a/libX11/man/XUninstallColormap.man
+++ b/libX11/man/XUninstallColormap.man
@@ -1 +1 @@
-.so man__libmansuffix__/XInstallColormap.__libmansuffix__
+.so man__libmansuffix__/XInstallColormap.__libmansuffix__
diff --git a/libX11/man/XUnionRectWithRegion.man b/libX11/man/XUnionRectWithRegion.man
index 630c1f2c8..585c17729 100644
--- a/libX11/man/XUnionRectWithRegion.man
+++ b/libX11/man/XUnionRectWithRegion.man
@@ -1 +1 @@
-.so man__libmansuffix__/XIntersectRegion.__libmansuffix__
+.so man__libmansuffix__/XIntersectRegion.__libmansuffix__
diff --git a/libX11/man/XUnionRegion.man b/libX11/man/XUnionRegion.man
index 630c1f2c8..585c17729 100644
--- a/libX11/man/XUnionRegion.man
+++ b/libX11/man/XUnionRegion.man
@@ -1 +1 @@
-.so man__libmansuffix__/XIntersectRegion.__libmansuffix__
+.so man__libmansuffix__/XIntersectRegion.__libmansuffix__
diff --git a/libX11/man/XUniqueContext.man b/libX11/man/XUniqueContext.man
index 60c71a492..f0b97473d 100644
--- a/libX11/man/XUniqueContext.man
+++ b/libX11/man/XUniqueContext.man
@@ -1 +1 @@
-.so man__libmansuffix__/XSaveContext.__libmansuffix__
+.so man__libmansuffix__/XSaveContext.__libmansuffix__
diff --git a/libX11/man/XUnloadFont.man b/libX11/man/XUnloadFont.man
index 8b44e8513..ca6fa1f21 100644
--- a/libX11/man/XUnloadFont.man
+++ b/libX11/man/XUnloadFont.man
@@ -1 +1 @@
-.so man__libmansuffix__/XLoadFont.__libmansuffix__
+.so man__libmansuffix__/XLoadFont.__libmansuffix__
diff --git a/libX11/man/XUnlockDisplay.man b/libX11/man/XUnlockDisplay.man
index bc8bb0205..24cf8b4bb 100644
--- a/libX11/man/XUnlockDisplay.man
+++ b/libX11/man/XUnlockDisplay.man
@@ -1 +1 @@
-.so man__libmansuffix__/XInitThreads.__libmansuffix__
+.so man__libmansuffix__/XInitThreads.__libmansuffix__
diff --git a/libX11/man/XUnmapSubwindows.man b/libX11/man/XUnmapSubwindows.man
index 86b768e8e..bce33d5e5 100644
--- a/libX11/man/XUnmapSubwindows.man
+++ b/libX11/man/XUnmapSubwindows.man
@@ -1 +1 @@
-.so man__libmansuffix__/XUnmapWindow.__libmansuffix__
+.so man__libmansuffix__/XUnmapWindow.__libmansuffix__
diff --git a/libX11/man/XUnregisterIMInstantiateCallback.man b/libX11/man/XUnregisterIMInstantiateCallback.man
index 6d302b9cd..63654099c 100644
--- a/libX11/man/XUnregisterIMInstantiateCallback.man
+++ b/libX11/man/XUnregisterIMInstantiateCallback.man
@@ -1 +1 @@
-.so man__libmansuffix__/XOpenIM.__libmansuffix__
+.so man__libmansuffix__/XOpenIM.__libmansuffix__
diff --git a/libX11/man/XUnsetICFocus.man b/libX11/man/XUnsetICFocus.man
index 034ffb47d..7f2d2dd09 100644
--- a/libX11/man/XUnsetICFocus.man
+++ b/libX11/man/XUnsetICFocus.man
@@ -1 +1 @@
-.so man__libmansuffix__/XSetICFocus.__libmansuffix__
+.so man__libmansuffix__/XSetICFocus.__libmansuffix__
diff --git a/libX11/man/XVisualIDFromVisual.man b/libX11/man/XVisualIDFromVisual.man
index 0b12bf69d..8a408c50d 100644
--- a/libX11/man/XVisualIDFromVisual.man
+++ b/libX11/man/XVisualIDFromVisual.man
@@ -1 +1 @@
-.so man__libmansuffix__/XGetVisualInfo.__libmansuffix__
+.so man__libmansuffix__/XGetVisualInfo.__libmansuffix__
diff --git a/libX11/man/XVisualInfo.man b/libX11/man/XVisualInfo.man
index 0b12bf69d..8a408c50d 100644
--- a/libX11/man/XVisualInfo.man
+++ b/libX11/man/XVisualInfo.man
@@ -1 +1 @@
-.so man__libmansuffix__/XGetVisualInfo.__libmansuffix__
+.so man__libmansuffix__/XGetVisualInfo.__libmansuffix__
diff --git a/libX11/man/XWMGeometry.man b/libX11/man/XWMGeometry.man
index 9ad74b7ba..6fd22792c 100644
--- a/libX11/man/XWMGeometry.man
+++ b/libX11/man/XWMGeometry.man
@@ -1 +1 @@
-.so man__libmansuffix__/XParseGeometry.__libmansuffix__
+.so man__libmansuffix__/XParseGeometry.__libmansuffix__
diff --git a/libX11/man/XWMHints.man b/libX11/man/XWMHints.man
index e066f6d95..1e15d7e07 100644
--- a/libX11/man/XWMHints.man
+++ b/libX11/man/XWMHints.man
@@ -1 +1 @@
-.so man__libmansuffix__/XAllocWMHints.__libmansuffix__
+.so man__libmansuffix__/XAllocWMHints.__libmansuffix__
diff --git a/libX11/man/XWindowAttributes.man b/libX11/man/XWindowAttributes.man
index df77346fb..d58c103d5 100644
--- a/libX11/man/XWindowAttributes.man
+++ b/libX11/man/XWindowAttributes.man
@@ -1 +1 @@
-.so man__libmansuffix__/XGetWindowAttributes.__libmansuffix__
+.so man__libmansuffix__/XGetWindowAttributes.__libmansuffix__
diff --git a/libX11/man/XWindowChanges.man b/libX11/man/XWindowChanges.man
index 5fbc49488..4c16c270b 100644
--- a/libX11/man/XWindowChanges.man
+++ b/libX11/man/XWindowChanges.man
@@ -1 +1 @@
-.so man__libmansuffix__/XConfigureWindow.__libmansuffix__
+.so man__libmansuffix__/XConfigureWindow.__libmansuffix__
diff --git a/libX11/man/XWindowEvent.man b/libX11/man/XWindowEvent.man
index f421b8caa..6f5346e36 100644
--- a/libX11/man/XWindowEvent.man
+++ b/libX11/man/XWindowEvent.man
@@ -1 +1 @@
-.so man__libmansuffix__/XNextEvent.__libmansuffix__
+.so man__libmansuffix__/XNextEvent.__libmansuffix__
diff --git a/libX11/man/XWithdrawWindow.man b/libX11/man/XWithdrawWindow.man
index 799989ad0..ad57b1900 100644
--- a/libX11/man/XWithdrawWindow.man
+++ b/libX11/man/XWithdrawWindow.man
@@ -1 +1 @@
-.so man__libmansuffix__/XIconifyWindow.__libmansuffix__
+.so man__libmansuffix__/XIconifyWindow.__libmansuffix__
diff --git a/libX11/man/XWriteBitmapFile.man b/libX11/man/XWriteBitmapFile.man
index 9631570d0..ff0c27655 100644
--- a/libX11/man/XWriteBitmapFile.man
+++ b/libX11/man/XWriteBitmapFile.man
@@ -1 +1 @@
-.so man__libmansuffix__/XReadBitmapFile.__libmansuffix__
+.so man__libmansuffix__/XReadBitmapFile.__libmansuffix__
diff --git a/libX11/man/XXorRegion.man b/libX11/man/XXorRegion.man
index 630c1f2c8..585c17729 100644
--- a/libX11/man/XXorRegion.man
+++ b/libX11/man/XXorRegion.man
@@ -1 +1 @@
-.so man__libmansuffix__/XIntersectRegion.__libmansuffix__
+.so man__libmansuffix__/XIntersectRegion.__libmansuffix__
diff --git a/libX11/man/XcmsAllocNamedColor.man b/libX11/man/XcmsAllocNamedColor.man
index e8e02c0af..6801d86d7 100644
--- a/libX11/man/XcmsAllocNamedColor.man
+++ b/libX11/man/XcmsAllocNamedColor.man
@@ -1 +1 @@
-.so man__libmansuffix__/XcmsAllocColor.__libmansuffix__
+.so man__libmansuffix__/XcmsAllocColor.__libmansuffix__
diff --git a/libX11/man/XcmsCIELab.man b/libX11/man/XcmsCIELab.man
index ddce73e37..a002aa60c 100644
--- a/libX11/man/XcmsCIELab.man
+++ b/libX11/man/XcmsCIELab.man
@@ -1 +1 @@
-.so man__libmansuffix__/XcmsColor.__libmansuffix__
+.so man__libmansuffix__/XcmsColor.__libmansuffix__
diff --git a/libX11/man/XcmsCIELabQueryMaxL.man b/libX11/man/XcmsCIELabQueryMaxL.man
index ae4d10014..6cb1ff1a4 100644
--- a/libX11/man/XcmsCIELabQueryMaxL.man
+++ b/libX11/man/XcmsCIELabQueryMaxL.man
@@ -1 +1 @@
-.so man__libmansuffix__/XcmsCIELabQueryMaxC.__libmansuffix__
+.so man__libmansuffix__/XcmsCIELabQueryMaxC.__libmansuffix__
diff --git a/libX11/man/XcmsCIELabQueryMaxLC.man b/libX11/man/XcmsCIELabQueryMaxLC.man
index ae4d10014..6cb1ff1a4 100644
--- a/libX11/man/XcmsCIELabQueryMaxLC.man
+++ b/libX11/man/XcmsCIELabQueryMaxLC.man
@@ -1 +1 @@
-.so man__libmansuffix__/XcmsCIELabQueryMaxC.__libmansuffix__
+.so man__libmansuffix__/XcmsCIELabQueryMaxC.__libmansuffix__
diff --git a/libX11/man/XcmsCIELabQueryMinL.man b/libX11/man/XcmsCIELabQueryMinL.man
index ae4d10014..6cb1ff1a4 100644
--- a/libX11/man/XcmsCIELabQueryMinL.man
+++ b/libX11/man/XcmsCIELabQueryMinL.man
@@ -1 +1 @@
-.so man__libmansuffix__/XcmsCIELabQueryMaxC.__libmansuffix__
+.so man__libmansuffix__/XcmsCIELabQueryMaxC.__libmansuffix__
diff --git a/libX11/man/XcmsCIELuv.man b/libX11/man/XcmsCIELuv.man
index ddce73e37..a002aa60c 100644
--- a/libX11/man/XcmsCIELuv.man
+++ b/libX11/man/XcmsCIELuv.man
@@ -1 +1 @@
-.so man__libmansuffix__/XcmsColor.__libmansuffix__
+.so man__libmansuffix__/XcmsColor.__libmansuffix__
diff --git a/libX11/man/XcmsCIELuvQueryMaxL.man b/libX11/man/XcmsCIELuvQueryMaxL.man
index 96b9c7f1d..fb5987290 100644
--- a/libX11/man/XcmsCIELuvQueryMaxL.man
+++ b/libX11/man/XcmsCIELuvQueryMaxL.man
@@ -1 +1 @@
-.so man__libmansuffix__/XcmsCIELuvQueryMaxC.__libmansuffix__
+.so man__libmansuffix__/XcmsCIELuvQueryMaxC.__libmansuffix__
diff --git a/libX11/man/XcmsCIELuvQueryMaxLC.man b/libX11/man/XcmsCIELuvQueryMaxLC.man
index 96b9c7f1d..fb5987290 100644
--- a/libX11/man/XcmsCIELuvQueryMaxLC.man
+++ b/libX11/man/XcmsCIELuvQueryMaxLC.man
@@ -1 +1 @@
-.so man__libmansuffix__/XcmsCIELuvQueryMaxC.__libmansuffix__
+.so man__libmansuffix__/XcmsCIELuvQueryMaxC.__libmansuffix__
diff --git a/libX11/man/XcmsCIELuvQueryMinL.man b/libX11/man/XcmsCIELuvQueryMinL.man
index 96b9c7f1d..fb5987290 100644
--- a/libX11/man/XcmsCIELuvQueryMinL.man
+++ b/libX11/man/XcmsCIELuvQueryMinL.man
@@ -1 +1 @@
-.so man__libmansuffix__/XcmsCIELuvQueryMaxC.__libmansuffix__
+.so man__libmansuffix__/XcmsCIELuvQueryMaxC.__libmansuffix__
diff --git a/libX11/man/XcmsCIEXYZ.man b/libX11/man/XcmsCIEXYZ.man
index ddce73e37..a002aa60c 100644
--- a/libX11/man/XcmsCIEXYZ.man
+++ b/libX11/man/XcmsCIEXYZ.man
@@ -1 +1 @@
-.so man__libmansuffix__/XcmsColor.__libmansuffix__
+.so man__libmansuffix__/XcmsColor.__libmansuffix__
diff --git a/libX11/man/XcmsCIEuvY.man b/libX11/man/XcmsCIEuvY.man
index ddce73e37..a002aa60c 100644
--- a/libX11/man/XcmsCIEuvY.man
+++ b/libX11/man/XcmsCIEuvY.man
@@ -1 +1 @@
-.so man__libmansuffix__/XcmsColor.__libmansuffix__
+.so man__libmansuffix__/XcmsColor.__libmansuffix__
diff --git a/libX11/man/XcmsCIExyY.man b/libX11/man/XcmsCIExyY.man
index ddce73e37..a002aa60c 100644
--- a/libX11/man/XcmsCIExyY.man
+++ b/libX11/man/XcmsCIExyY.man
@@ -1 +1 @@
-.so man__libmansuffix__/XcmsColor.__libmansuffix__
+.so man__libmansuffix__/XcmsColor.__libmansuffix__
diff --git a/libX11/man/XcmsFreeCCC.man b/libX11/man/XcmsFreeCCC.man
index 8d43dee20..2c2455f4c 100644
--- a/libX11/man/XcmsFreeCCC.man
+++ b/libX11/man/XcmsFreeCCC.man
@@ -1 +1 @@
-.so man__libmansuffix__/XcmsCreateCCC.__libmansuffix__
+.so man__libmansuffix__/XcmsCreateCCC.__libmansuffix__
diff --git a/libX11/man/XcmsLookupColor.man b/libX11/man/XcmsLookupColor.man
index 60500d85e..d6a76c3dc 100644
--- a/libX11/man/XcmsLookupColor.man
+++ b/libX11/man/XcmsLookupColor.man
@@ -1 +1 @@
-.so man__libmansuffix__/XcmsQueryColor.__libmansuffix__
+.so man__libmansuffix__/XcmsQueryColor.__libmansuffix__
diff --git a/libX11/man/XcmsPad.man b/libX11/man/XcmsPad.man
index ddce73e37..a002aa60c 100644
--- a/libX11/man/XcmsPad.man
+++ b/libX11/man/XcmsPad.man
@@ -1 +1 @@
-.so man__libmansuffix__/XcmsColor.__libmansuffix__
+.so man__libmansuffix__/XcmsColor.__libmansuffix__
diff --git a/libX11/man/XcmsQueryBlue.man b/libX11/man/XcmsQueryBlue.man
index 16213132b..484bd7144 100644
--- a/libX11/man/XcmsQueryBlue.man
+++ b/libX11/man/XcmsQueryBlue.man
@@ -1 +1 @@
-.so man__libmansuffix__/XcmsQueryBlack.__libmansuffix__
+.so man__libmansuffix__/XcmsQueryBlack.__libmansuffix__
diff --git a/libX11/man/XcmsQueryColors.man b/libX11/man/XcmsQueryColors.man
index 60500d85e..d6a76c3dc 100644
--- a/libX11/man/XcmsQueryColors.man
+++ b/libX11/man/XcmsQueryColors.man
@@ -1 +1 @@
-.so man__libmansuffix__/XcmsQueryColor.__libmansuffix__
+.so man__libmansuffix__/XcmsQueryColor.__libmansuffix__
diff --git a/libX11/man/XcmsQueryGreen.man b/libX11/man/XcmsQueryGreen.man
index 16213132b..484bd7144 100644
--- a/libX11/man/XcmsQueryGreen.man
+++ b/libX11/man/XcmsQueryGreen.man
@@ -1 +1 @@
-.so man__libmansuffix__/XcmsQueryBlack.__libmansuffix__
+.so man__libmansuffix__/XcmsQueryBlack.__libmansuffix__
diff --git a/libX11/man/XcmsQueryRed.man b/libX11/man/XcmsQueryRed.man
index 16213132b..484bd7144 100644
--- a/libX11/man/XcmsQueryRed.man
+++ b/libX11/man/XcmsQueryRed.man
@@ -1 +1 @@
-.so man__libmansuffix__/XcmsQueryBlack.__libmansuffix__
+.so man__libmansuffix__/XcmsQueryBlack.__libmansuffix__
diff --git a/libX11/man/XcmsQueryWhite.man b/libX11/man/XcmsQueryWhite.man
index 16213132b..484bd7144 100644
--- a/libX11/man/XcmsQueryWhite.man
+++ b/libX11/man/XcmsQueryWhite.man
@@ -1 +1 @@
-.so man__libmansuffix__/XcmsQueryBlack.__libmansuffix__
+.so man__libmansuffix__/XcmsQueryBlack.__libmansuffix__
diff --git a/libX11/man/XcmsRGB.man b/libX11/man/XcmsRGB.man
index ddce73e37..a002aa60c 100644
--- a/libX11/man/XcmsRGB.man
+++ b/libX11/man/XcmsRGB.man
@@ -1 +1 @@
-.so man__libmansuffix__/XcmsColor.__libmansuffix__
+.so man__libmansuffix__/XcmsColor.__libmansuffix__
diff --git a/libX11/man/XcmsRGBi.man b/libX11/man/XcmsRGBi.man
index ddce73e37..a002aa60c 100644
--- a/libX11/man/XcmsRGBi.man
+++ b/libX11/man/XcmsRGBi.man
@@ -1 +1 @@
-.so man__libmansuffix__/XcmsColor.__libmansuffix__
+.so man__libmansuffix__/XcmsColor.__libmansuffix__
diff --git a/libX11/man/XcmsSetCCCOfColormap.man b/libX11/man/XcmsSetCCCOfColormap.man
index 862869ffe..9ad132d47 100644
--- a/libX11/man/XcmsSetCCCOfColormap.man
+++ b/libX11/man/XcmsSetCCCOfColormap.man
@@ -1 +1 @@
-.so man__libmansuffix__/XcmsCCCOfColormap.__libmansuffix__
+.so man__libmansuffix__/XcmsCCCOfColormap.__libmansuffix__
diff --git a/libX11/man/XcmsSetWhiteAdjustProc.man b/libX11/man/XcmsSetWhiteAdjustProc.man
index 1b224cccb..536e65957 100644
--- a/libX11/man/XcmsSetWhiteAdjustProc.man
+++ b/libX11/man/XcmsSetWhiteAdjustProc.man
@@ -1 +1 @@
-.so man__libmansuffix__/XcmsSetWhitePoint.__libmansuffix__
+.so man__libmansuffix__/XcmsSetWhitePoint.__libmansuffix__
diff --git a/libX11/man/XcmsStoreColors.man b/libX11/man/XcmsStoreColors.man
index 356624062..59d7ad3d4 100644
--- a/libX11/man/XcmsStoreColors.man
+++ b/libX11/man/XcmsStoreColors.man
@@ -1 +1 @@
-.so man__libmansuffix__/XcmsStoreColor.__libmansuffix__
+.so man__libmansuffix__/XcmsStoreColor.__libmansuffix__
diff --git a/libX11/man/XcmsTekHVC.man b/libX11/man/XcmsTekHVC.man
index ddce73e37..a002aa60c 100644
--- a/libX11/man/XcmsTekHVC.man
+++ b/libX11/man/XcmsTekHVC.man
@@ -1 +1 @@
-.so man__libmansuffix__/XcmsColor.__libmansuffix__
+.so man__libmansuffix__/XcmsColor.__libmansuffix__
diff --git a/libX11/man/XcmsTekHVCQueryMaxV.man b/libX11/man/XcmsTekHVCQueryMaxV.man
index 0893603c7..7a55e356d 100644
--- a/libX11/man/XcmsTekHVCQueryMaxV.man
+++ b/libX11/man/XcmsTekHVCQueryMaxV.man
@@ -1 +1 @@
-.so man__libmansuffix__/XcmsTekHVCQueryMaxC.__libmansuffix__
+.so man__libmansuffix__/XcmsTekHVCQueryMaxC.__libmansuffix__
diff --git a/libX11/man/XcmsTekHVCQueryMaxVC.man b/libX11/man/XcmsTekHVCQueryMaxVC.man
index 0893603c7..7a55e356d 100644
--- a/libX11/man/XcmsTekHVCQueryMaxVC.man
+++ b/libX11/man/XcmsTekHVCQueryMaxVC.man
@@ -1 +1 @@
-.so man__libmansuffix__/XcmsTekHVCQueryMaxC.__libmansuffix__
+.so man__libmansuffix__/XcmsTekHVCQueryMaxC.__libmansuffix__
diff --git a/libX11/man/XcmsTekHVCQueryMaxVSamples.man b/libX11/man/XcmsTekHVCQueryMaxVSamples.man
index 0893603c7..7a55e356d 100644
--- a/libX11/man/XcmsTekHVCQueryMaxVSamples.man
+++ b/libX11/man/XcmsTekHVCQueryMaxVSamples.man
@@ -1 +1 @@
-.so man__libmansuffix__/XcmsTekHVCQueryMaxC.__libmansuffix__
+.so man__libmansuffix__/XcmsTekHVCQueryMaxC.__libmansuffix__
diff --git a/libX11/man/XcmsTekHVCQueryMinV.man b/libX11/man/XcmsTekHVCQueryMinV.man
index 0893603c7..7a55e356d 100644
--- a/libX11/man/XcmsTekHVCQueryMinV.man
+++ b/libX11/man/XcmsTekHVCQueryMinV.man
@@ -1 +1 @@
-.so man__libmansuffix__/XcmsTekHVCQueryMaxC.__libmansuffix__
+.so man__libmansuffix__/XcmsTekHVCQueryMaxC.__libmansuffix__
diff --git a/libX11/man/XmbSetWMProperties.man b/libX11/man/XmbSetWMProperties.man
index 24e3c41af..1d3bd2443 100644
--- a/libX11/man/XmbSetWMProperties.man
+++ b/libX11/man/XmbSetWMProperties.man
@@ -1 +1 @@
-.so man__libmansuffix__/XSetWMProperties.__libmansuffix__
+.so man__libmansuffix__/XSetWMProperties.__libmansuffix__
diff --git a/libX11/man/XmbTextPropertyToTextList.man b/libX11/man/XmbTextPropertyToTextList.man
index d73114782..5e871ab33 100644
--- a/libX11/man/XmbTextPropertyToTextList.man
+++ b/libX11/man/XmbTextPropertyToTextList.man
@@ -1 +1 @@
-.so man__libmansuffix__/XmbTextListToTextProperty.__libmansuffix__
+.so man__libmansuffix__/XmbTextListToTextProperty.__libmansuffix__
diff --git a/libX11/man/XrmCombineDatabase.man b/libX11/man/XrmCombineDatabase.man
index 7630c51e8..29cd76fc3 100644
--- a/libX11/man/XrmCombineDatabase.man
+++ b/libX11/man/XrmCombineDatabase.man
@@ -1 +1 @@
-.so man__libmansuffix__/XrmMergeDatabases.__libmansuffix__
+.so man__libmansuffix__/XrmMergeDatabases.__libmansuffix__
diff --git a/libX11/man/XrmCombineFileDatabase.man b/libX11/man/XrmCombineFileDatabase.man
index 7630c51e8..29cd76fc3 100644
--- a/libX11/man/XrmCombineFileDatabase.man
+++ b/libX11/man/XrmCombineFileDatabase.man
@@ -1 +1 @@
-.so man__libmansuffix__/XrmMergeDatabases.__libmansuffix__
+.so man__libmansuffix__/XrmMergeDatabases.__libmansuffix__
diff --git a/libX11/man/XrmDestroyDatabase.man b/libX11/man/XrmDestroyDatabase.man
index 2dc1243ec..baefa90a2 100644
--- a/libX11/man/XrmDestroyDatabase.man
+++ b/libX11/man/XrmDestroyDatabase.man
@@ -1 +1 @@
-.so man__libmansuffix__/XrmGetFileDatabase.__libmansuffix__
+.so man__libmansuffix__/XrmGetFileDatabase.__libmansuffix__
diff --git a/libX11/man/XrmGetDatabase.man b/libX11/man/XrmGetDatabase.man
index 2dc1243ec..baefa90a2 100644
--- a/libX11/man/XrmGetDatabase.man
+++ b/libX11/man/XrmGetDatabase.man
@@ -1 +1 @@
-.so man__libmansuffix__/XrmGetFileDatabase.__libmansuffix__
+.so man__libmansuffix__/XrmGetFileDatabase.__libmansuffix__
diff --git a/libX11/man/XrmGetStringDatabase.man b/libX11/man/XrmGetStringDatabase.man
index 2dc1243ec..baefa90a2 100644
--- a/libX11/man/XrmGetStringDatabase.man
+++ b/libX11/man/XrmGetStringDatabase.man
@@ -1 +1 @@
-.so man__libmansuffix__/XrmGetFileDatabase.__libmansuffix__
+.so man__libmansuffix__/XrmGetFileDatabase.__libmansuffix__
diff --git a/libX11/man/XrmLocaleOfDatabase.man b/libX11/man/XrmLocaleOfDatabase.man
index 2dc1243ec..baefa90a2 100644
--- a/libX11/man/XrmLocaleOfDatabase.man
+++ b/libX11/man/XrmLocaleOfDatabase.man
@@ -1 +1 @@
-.so man__libmansuffix__/XrmGetFileDatabase.__libmansuffix__
+.so man__libmansuffix__/XrmGetFileDatabase.__libmansuffix__
diff --git a/libX11/man/XrmOptionDescRec.man b/libX11/man/XrmOptionDescRec.man
index cbff21629..f6f0953ef 100644
--- a/libX11/man/XrmOptionDescRec.man
+++ b/libX11/man/XrmOptionDescRec.man
@@ -1 +1 @@
-.so man__libmansuffix__/XrmInitialize.__libmansuffix__
+.so man__libmansuffix__/XrmInitialize.__libmansuffix__
diff --git a/libX11/man/XrmOptionKind.man b/libX11/man/XrmOptionKind.man
index cbff21629..f6f0953ef 100644
--- a/libX11/man/XrmOptionKind.man
+++ b/libX11/man/XrmOptionKind.man
@@ -1 +1 @@
-.so man__libmansuffix__/XrmInitialize.__libmansuffix__
+.so man__libmansuffix__/XrmInitialize.__libmansuffix__
diff --git a/libX11/man/XrmParseCommand.man b/libX11/man/XrmParseCommand.man
index cbff21629..f6f0953ef 100644
--- a/libX11/man/XrmParseCommand.man
+++ b/libX11/man/XrmParseCommand.man
@@ -1 +1 @@
-.so man__libmansuffix__/XrmInitialize.__libmansuffix__
+.so man__libmansuffix__/XrmInitialize.__libmansuffix__
diff --git a/libX11/man/XrmPermStringToQuark.man b/libX11/man/XrmPermStringToQuark.man
index 8f5733ea4..29467e66e 100644
--- a/libX11/man/XrmPermStringToQuark.man
+++ b/libX11/man/XrmPermStringToQuark.man
@@ -1 +1 @@
-.so man__libmansuffix__/XrmUniqueQuark.__libmansuffix__
+.so man__libmansuffix__/XrmUniqueQuark.__libmansuffix__
diff --git a/libX11/man/XrmPutFileDatabase.man b/libX11/man/XrmPutFileDatabase.man
index 2dc1243ec..baefa90a2 100644
--- a/libX11/man/XrmPutFileDatabase.man
+++ b/libX11/man/XrmPutFileDatabase.man
@@ -1 +1 @@
-.so man__libmansuffix__/XrmGetFileDatabase.__libmansuffix__
+.so man__libmansuffix__/XrmGetFileDatabase.__libmansuffix__
diff --git a/libX11/man/XrmPutLineResource.man b/libX11/man/XrmPutLineResource.man
index 6011ae5fd..8af1fc317 100644
--- a/libX11/man/XrmPutLineResource.man
+++ b/libX11/man/XrmPutLineResource.man
@@ -1 +1 @@
-.so man__libmansuffix__/XrmPutResource.__libmansuffix__
+.so man__libmansuffix__/XrmPutResource.__libmansuffix__
diff --git a/libX11/man/XrmPutStringResource.man b/libX11/man/XrmPutStringResource.man
index 6011ae5fd..8af1fc317 100644
--- a/libX11/man/XrmPutStringResource.man
+++ b/libX11/man/XrmPutStringResource.man
@@ -1 +1 @@
-.so man__libmansuffix__/XrmPutResource.__libmansuffix__
+.so man__libmansuffix__/XrmPutResource.__libmansuffix__
diff --git a/libX11/man/XrmQGetResource.man b/libX11/man/XrmQGetResource.man
index 19ab8bff8..806a063df 100644
--- a/libX11/man/XrmQGetResource.man
+++ b/libX11/man/XrmQGetResource.man
@@ -1 +1 @@
-.so man__libmansuffix__/XrmGetResource.__libmansuffix__
+.so man__libmansuffix__/XrmGetResource.__libmansuffix__
diff --git a/libX11/man/XrmQGetSearchList.man b/libX11/man/XrmQGetSearchList.man
index 19ab8bff8..806a063df 100644
--- a/libX11/man/XrmQGetSearchList.man
+++ b/libX11/man/XrmQGetSearchList.man
@@ -1 +1 @@
-.so man__libmansuffix__/XrmGetResource.__libmansuffix__
+.so man__libmansuffix__/XrmGetResource.__libmansuffix__
diff --git a/libX11/man/XrmQGetSearchResource.man b/libX11/man/XrmQGetSearchResource.man
index 19ab8bff8..806a063df 100644
--- a/libX11/man/XrmQGetSearchResource.man
+++ b/libX11/man/XrmQGetSearchResource.man
@@ -1 +1 @@
-.so man__libmansuffix__/XrmGetResource.__libmansuffix__
+.so man__libmansuffix__/XrmGetResource.__libmansuffix__
diff --git a/libX11/man/XrmQPutResource.man b/libX11/man/XrmQPutResource.man
index 6011ae5fd..8af1fc317 100644
--- a/libX11/man/XrmQPutResource.man
+++ b/libX11/man/XrmQPutResource.man
@@ -1 +1 @@
-.so man__libmansuffix__/XrmPutResource.__libmansuffix__
+.so man__libmansuffix__/XrmPutResource.__libmansuffix__
diff --git a/libX11/man/XrmQPutStringResource.man b/libX11/man/XrmQPutStringResource.man
index 6011ae5fd..8af1fc317 100644
--- a/libX11/man/XrmQPutStringResource.man
+++ b/libX11/man/XrmQPutStringResource.man
@@ -1 +1 @@
-.so man__libmansuffix__/XrmPutResource.__libmansuffix__
+.so man__libmansuffix__/XrmPutResource.__libmansuffix__
diff --git a/libX11/man/XrmQuarkToString.man b/libX11/man/XrmQuarkToString.man
index 8f5733ea4..29467e66e 100644
--- a/libX11/man/XrmQuarkToString.man
+++ b/libX11/man/XrmQuarkToString.man
@@ -1 +1 @@
-.so man__libmansuffix__/XrmUniqueQuark.__libmansuffix__
+.so man__libmansuffix__/XrmUniqueQuark.__libmansuffix__
diff --git a/libX11/man/XrmSetDatabase.man b/libX11/man/XrmSetDatabase.man
index 2dc1243ec..baefa90a2 100644
--- a/libX11/man/XrmSetDatabase.man
+++ b/libX11/man/XrmSetDatabase.man
@@ -1 +1 @@
-.so man__libmansuffix__/XrmGetFileDatabase.__libmansuffix__
+.so man__libmansuffix__/XrmGetFileDatabase.__libmansuffix__
diff --git a/libX11/man/XrmStringToBindingQuarkList.man b/libX11/man/XrmStringToBindingQuarkList.man
index 8f5733ea4..29467e66e 100644
--- a/libX11/man/XrmStringToBindingQuarkList.man
+++ b/libX11/man/XrmStringToBindingQuarkList.man
@@ -1 +1 @@
-.so man__libmansuffix__/XrmUniqueQuark.__libmansuffix__
+.so man__libmansuffix__/XrmUniqueQuark.__libmansuffix__
diff --git a/libX11/man/XrmStringToQuark.man b/libX11/man/XrmStringToQuark.man
index 8f5733ea4..29467e66e 100644
--- a/libX11/man/XrmStringToQuark.man
+++ b/libX11/man/XrmStringToQuark.man
@@ -1 +1 @@
-.so man__libmansuffix__/XrmUniqueQuark.__libmansuffix__
+.so man__libmansuffix__/XrmUniqueQuark.__libmansuffix__
diff --git a/libX11/man/XrmStringToQuarkList.man b/libX11/man/XrmStringToQuarkList.man
index 8f5733ea4..29467e66e 100644
--- a/libX11/man/XrmStringToQuarkList.man
+++ b/libX11/man/XrmStringToQuarkList.man
@@ -1 +1 @@
-.so man__libmansuffix__/XrmUniqueQuark.__libmansuffix__
+.so man__libmansuffix__/XrmUniqueQuark.__libmansuffix__
diff --git a/libX11/man/XrmValue.man b/libX11/man/XrmValue.man
index cbff21629..f6f0953ef 100644
--- a/libX11/man/XrmValue.man
+++ b/libX11/man/XrmValue.man
@@ -1 +1 @@
-.so man__libmansuffix__/XrmInitialize.__libmansuffix__
+.so man__libmansuffix__/XrmInitialize.__libmansuffix__
diff --git a/libX11/man/Xutf8DrawImageString.man b/libX11/man/Xutf8DrawImageString.man
index ce965eb55..503e289ce 100644
--- a/libX11/man/Xutf8DrawImageString.man
+++ b/libX11/man/Xutf8DrawImageString.man
@@ -1 +1 @@
-.so man__libmansuffix__/XmbDrawImageString.__libmansuffix__
+.so man__libmansuffix__/XmbDrawImageString.__libmansuffix__
diff --git a/libX11/man/Xutf8DrawString.man b/libX11/man/Xutf8DrawString.man
index dad556159..d95517d4c 100644
--- a/libX11/man/Xutf8DrawString.man
+++ b/libX11/man/Xutf8DrawString.man
@@ -1 +1 @@
-.so man__libmansuffix__/XmbDrawString.__libmansuffix__
+.so man__libmansuffix__/XmbDrawString.__libmansuffix__
diff --git a/libX11/man/Xutf8DrawText.man b/libX11/man/Xutf8DrawText.man
index 6588ec558..5e8eba9fa 100644
--- a/libX11/man/Xutf8DrawText.man
+++ b/libX11/man/Xutf8DrawText.man
@@ -1 +1 @@
-.so man__libmansuffix__/XmbDrawText.__libmansuffix__
+.so man__libmansuffix__/XmbDrawText.__libmansuffix__
diff --git a/libX11/man/Xutf8LookupString.man b/libX11/man/Xutf8LookupString.man
index 3d2805b88..5267832e7 100644
--- a/libX11/man/Xutf8LookupString.man
+++ b/libX11/man/Xutf8LookupString.man
@@ -1 +1 @@
-.so man__libmansuffix__/XmbLookupString.__libmansuffix__
+.so man__libmansuffix__/XmbLookupString.__libmansuffix__
diff --git a/libX11/man/Xutf8ResetIC.man b/libX11/man/Xutf8ResetIC.man
index a2336ccfa..c6c16fd93 100644
--- a/libX11/man/Xutf8ResetIC.man
+++ b/libX11/man/Xutf8ResetIC.man
@@ -1 +1 @@
-.so man__libmansuffix__/XmbResetIC.__libmansuffix__
+.so man__libmansuffix__/XmbResetIC.__libmansuffix__
diff --git a/libX11/man/Xutf8SetWMProperties.man b/libX11/man/Xutf8SetWMProperties.man
index 24e3c41af..1d3bd2443 100644
--- a/libX11/man/Xutf8SetWMProperties.man
+++ b/libX11/man/Xutf8SetWMProperties.man
@@ -1 +1 @@
-.so man__libmansuffix__/XSetWMProperties.__libmansuffix__
+.so man__libmansuffix__/XSetWMProperties.__libmansuffix__
diff --git a/libX11/man/Xutf8TextEscapement.man b/libX11/man/Xutf8TextEscapement.man
index e63373fb0..17e8ea77a 100644
--- a/libX11/man/Xutf8TextEscapement.man
+++ b/libX11/man/Xutf8TextEscapement.man
@@ -1 +1 @@
-.so man__libmansuffix__/XmbTextEscapement.__libmansuffix__
+.so man__libmansuffix__/XmbTextEscapement.__libmansuffix__
diff --git a/libX11/man/Xutf8TextExtents.man b/libX11/man/Xutf8TextExtents.man
index f5a3c260f..24f0a0dfa 100644
--- a/libX11/man/Xutf8TextExtents.man
+++ b/libX11/man/Xutf8TextExtents.man
@@ -1 +1 @@
-.so man__libmansuffix__/XmbTextExtents.__libmansuffix__
+.so man__libmansuffix__/XmbTextExtents.__libmansuffix__
diff --git a/libX11/man/Xutf8TextListToTextProperty.man b/libX11/man/Xutf8TextListToTextProperty.man
index d73114782..5e871ab33 100644
--- a/libX11/man/Xutf8TextListToTextProperty.man
+++ b/libX11/man/Xutf8TextListToTextProperty.man
@@ -1 +1 @@
-.so man__libmansuffix__/XmbTextListToTextProperty.__libmansuffix__
+.so man__libmansuffix__/XmbTextListToTextProperty.__libmansuffix__
diff --git a/libX11/man/Xutf8TextPerCharExtents.man b/libX11/man/Xutf8TextPerCharExtents.man
index 41db614d9..389ca96d0 100644
--- a/libX11/man/Xutf8TextPerCharExtents.man
+++ b/libX11/man/Xutf8TextPerCharExtents.man
@@ -1 +1 @@
-.so man__libmansuffix__/XmbTextPerCharExtents.__libmansuffix__
+.so man__libmansuffix__/XmbTextPerCharExtents.__libmansuffix__
diff --git a/libX11/man/Xutf8TextPropertyToTextList.man b/libX11/man/Xutf8TextPropertyToTextList.man
index d73114782..5e871ab33 100644
--- a/libX11/man/Xutf8TextPropertyToTextList.man
+++ b/libX11/man/Xutf8TextPropertyToTextList.man
@@ -1 +1 @@
-.so man__libmansuffix__/XmbTextListToTextProperty.__libmansuffix__
+.so man__libmansuffix__/XmbTextListToTextProperty.__libmansuffix__
diff --git a/libX11/man/XwcDrawImageString.man b/libX11/man/XwcDrawImageString.man
index ce965eb55..503e289ce 100644
--- a/libX11/man/XwcDrawImageString.man
+++ b/libX11/man/XwcDrawImageString.man
@@ -1 +1 @@
-.so man__libmansuffix__/XmbDrawImageString.__libmansuffix__
+.so man__libmansuffix__/XmbDrawImageString.__libmansuffix__
diff --git a/libX11/man/XwcDrawString.man b/libX11/man/XwcDrawString.man
index dad556159..d95517d4c 100644
--- a/libX11/man/XwcDrawString.man
+++ b/libX11/man/XwcDrawString.man
@@ -1 +1 @@
-.so man__libmansuffix__/XmbDrawString.__libmansuffix__
+.so man__libmansuffix__/XmbDrawString.__libmansuffix__
diff --git a/libX11/man/XwcDrawText.man b/libX11/man/XwcDrawText.man
index 6588ec558..5e8eba9fa 100644
--- a/libX11/man/XwcDrawText.man
+++ b/libX11/man/XwcDrawText.man
@@ -1 +1 @@
-.so man__libmansuffix__/XmbDrawText.__libmansuffix__
+.so man__libmansuffix__/XmbDrawText.__libmansuffix__
diff --git a/libX11/man/XwcFreeStringList.man b/libX11/man/XwcFreeStringList.man
index d73114782..5e871ab33 100644
--- a/libX11/man/XwcFreeStringList.man
+++ b/libX11/man/XwcFreeStringList.man
@@ -1 +1 @@
-.so man__libmansuffix__/XmbTextListToTextProperty.__libmansuffix__
+.so man__libmansuffix__/XmbTextListToTextProperty.__libmansuffix__
diff --git a/libX11/man/XwcLookupString.man b/libX11/man/XwcLookupString.man
index 3d2805b88..5267832e7 100644
--- a/libX11/man/XwcLookupString.man
+++ b/libX11/man/XwcLookupString.man
@@ -1 +1 @@
-.so man__libmansuffix__/XmbLookupString.__libmansuffix__
+.so man__libmansuffix__/XmbLookupString.__libmansuffix__
diff --git a/libX11/man/XwcResetIC.man b/libX11/man/XwcResetIC.man
index a2336ccfa..c6c16fd93 100644
--- a/libX11/man/XwcResetIC.man
+++ b/libX11/man/XwcResetIC.man
@@ -1 +1 @@
-.so man__libmansuffix__/XmbResetIC.__libmansuffix__
+.so man__libmansuffix__/XmbResetIC.__libmansuffix__
diff --git a/libX11/man/XwcTextEscapement.man b/libX11/man/XwcTextEscapement.man
index e63373fb0..17e8ea77a 100644
--- a/libX11/man/XwcTextEscapement.man
+++ b/libX11/man/XwcTextEscapement.man
@@ -1 +1 @@
-.so man__libmansuffix__/XmbTextEscapement.__libmansuffix__
+.so man__libmansuffix__/XmbTextEscapement.__libmansuffix__
diff --git a/libX11/man/XwcTextExtents.man b/libX11/man/XwcTextExtents.man
index f5a3c260f..24f0a0dfa 100644
--- a/libX11/man/XwcTextExtents.man
+++ b/libX11/man/XwcTextExtents.man
@@ -1 +1 @@
-.so man__libmansuffix__/XmbTextExtents.__libmansuffix__
+.so man__libmansuffix__/XmbTextExtents.__libmansuffix__
diff --git a/libX11/man/XwcTextListToTextProperty.man b/libX11/man/XwcTextListToTextProperty.man
index d73114782..5e871ab33 100644
--- a/libX11/man/XwcTextListToTextProperty.man
+++ b/libX11/man/XwcTextListToTextProperty.man
@@ -1 +1 @@
-.so man__libmansuffix__/XmbTextListToTextProperty.__libmansuffix__
+.so man__libmansuffix__/XmbTextListToTextProperty.__libmansuffix__
diff --git a/libX11/man/XwcTextPerCharExtents.man b/libX11/man/XwcTextPerCharExtents.man
index 41db614d9..389ca96d0 100644
--- a/libX11/man/XwcTextPerCharExtents.man
+++ b/libX11/man/XwcTextPerCharExtents.man
@@ -1 +1 @@
-.so man__libmansuffix__/XmbTextPerCharExtents.__libmansuffix__
+.so man__libmansuffix__/XmbTextPerCharExtents.__libmansuffix__
diff --git a/libX11/man/XwcTextPropertyToTextList.man b/libX11/man/XwcTextPropertyToTextList.man
index d73114782..5e871ab33 100644
--- a/libX11/man/XwcTextPropertyToTextList.man
+++ b/libX11/man/XwcTextPropertyToTextList.man
@@ -1 +1 @@
-.so man__libmansuffix__/XmbTextListToTextProperty.__libmansuffix__
+.so man__libmansuffix__/XmbTextListToTextProperty.__libmansuffix__
diff --git a/libX11/man/xkb/Makefile.am b/libX11/man/xkb/Makefile.am
index 54f0fb4d8..484a85a99 100644
--- a/libX11/man/xkb/Makefile.am
+++ b/libX11/man/xkb/Makefile.am
@@ -1,215 +1,215 @@
-libmandir = $(LIB_MAN_DIR)
-
-libman_PRE = \
- XkbActionCtrls.man \
- XkbAddDeviceLedInfo.man \
- XkbAddGeomColor.man \
- XkbAddGeomDoodad.man \
- XkbAddGeomKey.man \
- XkbAddGeomKeyAlias.man \
- XkbAddGeomOutline.man \
- XkbAddGeomOverlay.man \
- XkbAddGeomOverlayKey.man \
- XkbAddGeomOverlayRow.man \
- XkbAddGeomProperty.man \
- XkbAddGeomRow.man \
- XkbAddGeomSection.man \
- XkbAddGeomShape.man \
- XkbAddSymInterpret.man \
- XkbAllocClientMap.man \
- XkbAllocCompatMap.man \
- XkbAllocControls.man \
- XkbAllocDeviceInfo.man \
- XkbAllocDeviceLedInfo.man \
- XkbAllocGeomColors.man \
- XkbAllocGeomDoodads.man \
- XkbAllocGeomKeyAliases.man \
- XkbAllocGeomKeys.man \
- XkbAllocGeomOutlines.man \
- XkbAllocGeomOverlayKey.man \
- XkbAllocGeomOverlayRows.man \
- XkbAllocGeomOverlays.man \
- XkbAllocGeomPoints.man \
- XkbAllocGeomProps.man \
- XkbAllocGeomRows.man \
- XkbAllocGeomSectionDoodads.man \
- XkbAllocGeomSections.man \
- XkbAllocGeomShapes.man \
- XkbAllocGeometry.man \
- XkbAllocIndicatorMaps.man \
- XkbAllocKeyboard.man \
- XkbAllocNames.man \
- XkbAllocServerMap.man \
- XkbApplyCompatMapToKey.man \
- XkbBell.man \
- XkbBellEvent.man \
- XkbChangeControls.man \
- XkbChangeDeviceInfo.man \
- XkbChangeEnabledControls.man \
- XkbChangeIndicators.man \
- XkbChangeMap.man \
- XkbChangeNames.man \
- XkbChangeTypesOfKey.man \
- XkbComputeRowBounds.man \
- XkbComputeSectionBounds.man \
- XkbComputeShapeBounds.man \
- XkbComputeShapeTop.man \
- XkbCopyKeyType.man \
- XkbCopyKeyTypes.man \
- XkbDeviceBell.man \
- XkbDeviceBellEvent.man \
- XkbFindOverlayForKey.man \
- XkbForceBell.man \
- XkbForceDeviceBell.man \
- XkbFreeClientMap.man \
- XkbFreeCompatMap.man \
- XkbFreeComponentList.man \
- XkbFreeControls.man \
- XkbFreeDeviceInfo.man \
- XkbFreeGeomColors.man \
- XkbFreeGeomDoodads.man \
- XkbFreeGeomKeyAliases.man \
- XkbFreeGeomKeys.man \
- XkbFreeGeomOutlines.man \
- XkbFreeGeomOverlayKeys.man \
- XkbFreeGeomOverlayRows.man \
- XkbFreeGeomOverlays.man \
- XkbFreeGeomPoints.man \
- XkbFreeGeomProperties.man \
- XkbFreeGeomRows.man \
- XkbFreeGeomSections.man \
- XkbFreeGeomShapes.man \
- XkbFreeGeometry.man \
- XkbFreeIndicatorMaps.man \
- XkbFreeKeyboard.man \
- XkbFreeNames.man \
- XkbFreeServerMap.man \
- XkbGetAccessXTimeout.man \
- XkbGetAutoRepeatRate.man \
- XkbGetAutoResetControls.man \
- XkbGetBounceKeysDelay.man \
- XkbGetCompatMap.man \
- XkbGetControls.man \
- XkbGetControlsChanges.man \
- XkbGetDetectableAutoRepeat.man \
- XkbGetDeviceButtonActions.man \
- XkbGetDeviceInfo.man \
- XkbGetDeviceInfoChanges.man \
- XkbGetDeviceLedInfo.man \
- XkbGetGeometry.man \
- XkbGetIndicatorChanges.man \
- XkbGetIndicatorMap.man \
- XkbGetIndicatorState.man \
- XkbGetKeyActions.man \
- XkbGetKeyBehaviors.man \
- XkbGetKeyExplicitComponents.man \
- XkbGetKeyModifierMap.man \
- XkbGetKeySyms.man \
- XkbGetKeyTypes.man \
- XkbGetKeyVirtualModMap.man \
- XkbGetKeyboard.man \
- XkbGetKeyboardByName.man \
- XkbGetMap.man \
- XkbGetNameChanges.man \
- XkbGetNamedGeometry.man \
- XkbGetNamedIndicator.man \
- XkbGetNames.man \
- XkbGetSlowKeysDelay.man \
- XkbGetState.man \
- XkbGetStickyKeysOptions.man \
- XkbGetUpdatedMap.man \
- XkbGetVirtualMods.man \
- XkbGetXlibControls.man \
- XkbIgnoreExtension.man \
- XkbInitCanonicalKeyTypes.man \
- XkbKeyAction.man \
- XkbKeyActionEntry.man \
- XkbKeyActionsPtr.man \
- XkbKeyGroupInfo.man \
- XkbKeyGroupWidth.man \
- XkbKeyGroupsWidth.man \
- XkbKeyHasActions.man \
- XkbKeyNumActions.man \
- XkbKeyNumGroups.man \
- XkbKeyNumSyms.man \
- XkbKeySymEntry.man \
- XkbKeySymsOffset.man \
- XkbKeySymsPtr.man \
- XkbKeyType.man \
- XkbKeyTypeIndex.man \
- XkbKeyTypesForCoreSymbols.man \
- XkbKeycodeToKeysym.man \
- XkbKeysymToModifiers.man \
- XkbLatchGroup.man \
- XkbLatchModifiers.man \
- XkbLibraryVersion.man \
- XkbListComponents.man \
- XkbLockGroup.man \
- XkbLockModifiers.man \
- XkbLookupKeyBinding.man \
- XkbLookupKeySym.man \
- XkbModActionVMods.man \
- XkbNoteControlsChanges.man \
- XkbNoteDeviceChanges.man \
- XkbNoteIndicatorChanges.man \
- XkbNoteNameChanges.man \
- XkbOpenDisplay.man \
- XkbOutOfRangeGroupInfo.man \
- XkbOutOfRangeGroupNumber.man \
- XkbPtrActionX.man \
- XkbPtrActionY.man \
- XkbQueryExtension.man \
- XkbRefreshKeyboardMapping.man \
- XkbResizeDeviceButtonActions.man \
- XkbResizeKeyActions.man \
- XkbResizeKeySyms.man \
- XkbResizeKeyType.man \
- XkbSAActionSetCtrls.man \
- XkbSAGroup.man \
- XkbSAPtrDfltValue.man \
- XkbSARedirectSetVMods.man \
- XkbSARedirectSetVModsMask.man \
- XkbSARedirectVMods.man \
- XkbSARedirectVModsMask.man \
- XkbSAScreen.man \
- XkbSASetGroup.man \
- XkbSASetPtrDfltValue.man \
- XkbSASetScreen.man \
- XkbSelectEventDetails.man \
- XkbSelectEvents.man \
- XkbSetAccessXTimeout.man \
- XkbSetAutoRepeatRate.man \
- XkbSetAutoResetControls.man \
- XkbSetBounceKeysDelay.man \
- XkbSetCompatMap.man \
- XkbSetControls.man \
- XkbSetDebuggingFlags.man \
- XkbSetDetectableAutoRepeat.man \
- XkbSetDeviceButtonActions.man \
- XkbSetDeviceInfo.man \
- XkbSetIgnoreLockMods.man \
- XkbSetIndicatorMap.man \
- XkbSetMap.man \
- XkbSetModActionVMods.man \
- XkbSetNamedIndicator.man \
- XkbSetNames.man \
- XkbSetPtrActionX.man \
- XkbSetPtrActionY.man \
- XkbSetServerInternalMods.man \
- XkbSetXlibControls.man \
- XkbTranslateKeyCode.man \
- XkbTranslateKeySym.man \
- XkbUpdateMapFromCore.man \
- XkbVirtualModsToReal.man
-
-libman_DATA = $(libman_PRE:man=@LIB_MAN_SUFFIX@)
-
-EXTRA_DIST = $(libman_PRE)
-
-CLEANFILES = $(libman_DATA)
-
-SUFFIXES = .$(LIB_MAN_SUFFIX) .man
-
-# String replacements in MAN_SUBSTS now come from xorg-macros.m4 via configure
-.man.$(LIB_MAN_SUFFIX):
- $(AM_V_GEN)$(SED) $(MAN_SUBSTS) < $< > $@
+libmandir = $(LIB_MAN_DIR)
+
+libman_PRE = \
+ XkbActionCtrls.man \
+ XkbAddDeviceLedInfo.man \
+ XkbAddGeomColor.man \
+ XkbAddGeomDoodad.man \
+ XkbAddGeomKey.man \
+ XkbAddGeomKeyAlias.man \
+ XkbAddGeomOutline.man \
+ XkbAddGeomOverlay.man \
+ XkbAddGeomOverlayKey.man \
+ XkbAddGeomOverlayRow.man \
+ XkbAddGeomProperty.man \
+ XkbAddGeomRow.man \
+ XkbAddGeomSection.man \
+ XkbAddGeomShape.man \
+ XkbAddSymInterpret.man \
+ XkbAllocClientMap.man \
+ XkbAllocCompatMap.man \
+ XkbAllocControls.man \
+ XkbAllocDeviceInfo.man \
+ XkbAllocDeviceLedInfo.man \
+ XkbAllocGeomColors.man \
+ XkbAllocGeomDoodads.man \
+ XkbAllocGeomKeyAliases.man \
+ XkbAllocGeomKeys.man \
+ XkbAllocGeomOutlines.man \
+ XkbAllocGeomOverlayKey.man \
+ XkbAllocGeomOverlayRows.man \
+ XkbAllocGeomOverlays.man \
+ XkbAllocGeomPoints.man \
+ XkbAllocGeomProps.man \
+ XkbAllocGeomRows.man \
+ XkbAllocGeomSectionDoodads.man \
+ XkbAllocGeomSections.man \
+ XkbAllocGeomShapes.man \
+ XkbAllocGeometry.man \
+ XkbAllocIndicatorMaps.man \
+ XkbAllocKeyboard.man \
+ XkbAllocNames.man \
+ XkbAllocServerMap.man \
+ XkbApplyCompatMapToKey.man \
+ XkbBell.man \
+ XkbBellEvent.man \
+ XkbChangeControls.man \
+ XkbChangeDeviceInfo.man \
+ XkbChangeEnabledControls.man \
+ XkbChangeIndicators.man \
+ XkbChangeMap.man \
+ XkbChangeNames.man \
+ XkbChangeTypesOfKey.man \
+ XkbComputeRowBounds.man \
+ XkbComputeSectionBounds.man \
+ XkbComputeShapeBounds.man \
+ XkbComputeShapeTop.man \
+ XkbCopyKeyType.man \
+ XkbCopyKeyTypes.man \
+ XkbDeviceBell.man \
+ XkbDeviceBellEvent.man \
+ XkbFindOverlayForKey.man \
+ XkbForceBell.man \
+ XkbForceDeviceBell.man \
+ XkbFreeClientMap.man \
+ XkbFreeCompatMap.man \
+ XkbFreeComponentList.man \
+ XkbFreeControls.man \
+ XkbFreeDeviceInfo.man \
+ XkbFreeGeomColors.man \
+ XkbFreeGeomDoodads.man \
+ XkbFreeGeomKeyAliases.man \
+ XkbFreeGeomKeys.man \
+ XkbFreeGeomOutlines.man \
+ XkbFreeGeomOverlayKeys.man \
+ XkbFreeGeomOverlayRows.man \
+ XkbFreeGeomOverlays.man \
+ XkbFreeGeomPoints.man \
+ XkbFreeGeomProperties.man \
+ XkbFreeGeomRows.man \
+ XkbFreeGeomSections.man \
+ XkbFreeGeomShapes.man \
+ XkbFreeGeometry.man \
+ XkbFreeIndicatorMaps.man \
+ XkbFreeKeyboard.man \
+ XkbFreeNames.man \
+ XkbFreeServerMap.man \
+ XkbGetAccessXTimeout.man \
+ XkbGetAutoRepeatRate.man \
+ XkbGetAutoResetControls.man \
+ XkbGetBounceKeysDelay.man \
+ XkbGetCompatMap.man \
+ XkbGetControls.man \
+ XkbGetControlsChanges.man \
+ XkbGetDetectableAutoRepeat.man \
+ XkbGetDeviceButtonActions.man \
+ XkbGetDeviceInfo.man \
+ XkbGetDeviceInfoChanges.man \
+ XkbGetDeviceLedInfo.man \
+ XkbGetGeometry.man \
+ XkbGetIndicatorChanges.man \
+ XkbGetIndicatorMap.man \
+ XkbGetIndicatorState.man \
+ XkbGetKeyActions.man \
+ XkbGetKeyBehaviors.man \
+ XkbGetKeyExplicitComponents.man \
+ XkbGetKeyModifierMap.man \
+ XkbGetKeySyms.man \
+ XkbGetKeyTypes.man \
+ XkbGetKeyVirtualModMap.man \
+ XkbGetKeyboard.man \
+ XkbGetKeyboardByName.man \
+ XkbGetMap.man \
+ XkbGetNameChanges.man \
+ XkbGetNamedGeometry.man \
+ XkbGetNamedIndicator.man \
+ XkbGetNames.man \
+ XkbGetSlowKeysDelay.man \
+ XkbGetState.man \
+ XkbGetStickyKeysOptions.man \
+ XkbGetUpdatedMap.man \
+ XkbGetVirtualMods.man \
+ XkbGetXlibControls.man \
+ XkbIgnoreExtension.man \
+ XkbInitCanonicalKeyTypes.man \
+ XkbKeyAction.man \
+ XkbKeyActionEntry.man \
+ XkbKeyActionsPtr.man \
+ XkbKeyGroupInfo.man \
+ XkbKeyGroupWidth.man \
+ XkbKeyGroupsWidth.man \
+ XkbKeyHasActions.man \
+ XkbKeyNumActions.man \
+ XkbKeyNumGroups.man \
+ XkbKeyNumSyms.man \
+ XkbKeySymEntry.man \
+ XkbKeySymsOffset.man \
+ XkbKeySymsPtr.man \
+ XkbKeyType.man \
+ XkbKeyTypeIndex.man \
+ XkbKeyTypesForCoreSymbols.man \
+ XkbKeycodeToKeysym.man \
+ XkbKeysymToModifiers.man \
+ XkbLatchGroup.man \
+ XkbLatchModifiers.man \
+ XkbLibraryVersion.man \
+ XkbListComponents.man \
+ XkbLockGroup.man \
+ XkbLockModifiers.man \
+ XkbLookupKeyBinding.man \
+ XkbLookupKeySym.man \
+ XkbModActionVMods.man \
+ XkbNoteControlsChanges.man \
+ XkbNoteDeviceChanges.man \
+ XkbNoteIndicatorChanges.man \
+ XkbNoteNameChanges.man \
+ XkbOpenDisplay.man \
+ XkbOutOfRangeGroupInfo.man \
+ XkbOutOfRangeGroupNumber.man \
+ XkbPtrActionX.man \
+ XkbPtrActionY.man \
+ XkbQueryExtension.man \
+ XkbRefreshKeyboardMapping.man \
+ XkbResizeDeviceButtonActions.man \
+ XkbResizeKeyActions.man \
+ XkbResizeKeySyms.man \
+ XkbResizeKeyType.man \
+ XkbSAActionSetCtrls.man \
+ XkbSAGroup.man \
+ XkbSAPtrDfltValue.man \
+ XkbSARedirectSetVMods.man \
+ XkbSARedirectSetVModsMask.man \
+ XkbSARedirectVMods.man \
+ XkbSARedirectVModsMask.man \
+ XkbSAScreen.man \
+ XkbSASetGroup.man \
+ XkbSASetPtrDfltValue.man \
+ XkbSASetScreen.man \
+ XkbSelectEventDetails.man \
+ XkbSelectEvents.man \
+ XkbSetAccessXTimeout.man \
+ XkbSetAutoRepeatRate.man \
+ XkbSetAutoResetControls.man \
+ XkbSetBounceKeysDelay.man \
+ XkbSetCompatMap.man \
+ XkbSetControls.man \
+ XkbSetDebuggingFlags.man \
+ XkbSetDetectableAutoRepeat.man \
+ XkbSetDeviceButtonActions.man \
+ XkbSetDeviceInfo.man \
+ XkbSetIgnoreLockMods.man \
+ XkbSetIndicatorMap.man \
+ XkbSetMap.man \
+ XkbSetModActionVMods.man \
+ XkbSetNamedIndicator.man \
+ XkbSetNames.man \
+ XkbSetPtrActionX.man \
+ XkbSetPtrActionY.man \
+ XkbSetServerInternalMods.man \
+ XkbSetXlibControls.man \
+ XkbTranslateKeyCode.man \
+ XkbTranslateKeySym.man \
+ XkbUpdateMapFromCore.man \
+ XkbVirtualModsToReal.man
+
+libman_DATA = $(libman_PRE:man=@LIB_MAN_SUFFIX@)
+
+EXTRA_DIST = $(libman_PRE)
+
+CLEANFILES = $(libman_DATA)
+
+SUFFIXES = .$(LIB_MAN_SUFFIX) .man
+
+# String replacements in MAN_SUBSTS now come from xorg-macros.m4 via configure
+.man.$(LIB_MAN_SUFFIX):
+ $(AM_V_GEN)$(SED) $(MAN_SUBSTS) < $< > $@
diff --git a/libX11/man/xkb/XkbActionCtrls.man b/libX11/man/xkb/XkbActionCtrls.man
index d80d481f1..a35d15602 100644
--- a/libX11/man/xkb/XkbActionCtrls.man
+++ b/libX11/man/xkb/XkbActionCtrls.man
@@ -1,136 +1,136 @@
-'\" t
-.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
-.\"
-.\" Permission is hereby granted, free of charge, to any person obtaining a
-.\" copy of this software and associated documentation files (the "Software"),
-.\" to deal in the Software without restriction, including without limitation
-.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
-.\" and/or sell copies of the Software, and to permit persons to whom the
-.\" Software is furnished to do so, subject to the following conditions:
-.\"
-.\" The above copyright notice and this permission notice (including the next
-.\" paragraph) shall be included in all copies or substantial portions of the
-.\" Software.
-.\"
-.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-.\" DEALINGS IN THE SOFTWARE.
-.\"
-.TH XkbActionCtrls __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
-.SH NAME
-XkbActionCtrls \- Returns the ctrls fields of act converted to an unsigned int
-.SH SYNOPSIS
-.HP
-.B unsigned int XkbActionCtrls
-.BI "(\^XkbCtrlsAction " "act" "\^);"
-.if n .ti +5n
-.if t .ti +.5i
-.SH ARGUMENTS
-.TP
-.I \- act
-action from which to extract controls
-.SH DESCRIPTION
-.LP
-Actions associated with the XkbCtrlsAction structure change the state of the
-boolean controls.
-
-The
-.I type
-field can have any one of the values shown in Table 1.
-
-.TS
-c s
-l l
-l lw(4i).
-Table 1 Controls Action Types
-_
-Type Effect
-_
-XkbSA_SetControls T{
-A key press enables any boolean controls specified in the ctrls fields that were
-not already enabled at
-the time of the key press.
-A key release disables any controls enabled by the key press.
-This action can cause XkbControlsNotify events.
-T}
-XkbSA_LockControls T{
-If the XkbSA_LockNoLock bit is not set in the flags field, a key press enables
-any controls specified in
-the ctrls fields that were not already enabled at the time of the key press.
-.br
-If the XkbSA_LockNoUnlock bit is not set in the flags field, a key release
-disables any controls
-specified in the ctrls fields that were not already disabled at the time of the
-key press.
-.br
-This action can cause XkbControlsNotify events.
-T}
-.TE
-
-The
-.I flags
-field is composed of the bitwise inclusive OR of the masks shown in Table 2.
-
-.TS
-c s
-l l
-l lw(4i).
-Table 2 Control Action Flags
-_
-Flag Meaning
-_
-XkbSA_LockNoLock T{
-If set, and the action type is XkbSA_LockControls, the server only disables
-controls.
-T}
-XkbSA_LockNoUnlock T{
-If set, and the action type is XkbSA_LockControls, the server only enables
-controls.
-T}
-.TE
-
-The XkbSA_SetControls action implements a key that enables a boolean control
-when pressed and disables it
-when released. The XkbSA_LockControls action is used to implement a key that
-toggles the state of a
-boolean control each time it is pressed and released. The XkbSA_LockNoLock and
-XkbSA_LockNoUnlock flags
-allow modifying the toggling behavior to only unlock or only lock the boolean
-control.
-
-The
-.I ctrls0, ctrls1, ctrls2,
-and
-.I ctrls3
-fields represent the boolean controls in the
-.I enabled_ctrls
-field of the controls structure. Xkb macros, to convert between the two formats.
-
-.I XkbActionCtrls
-returns the
-.I ctrls
-fields of
-.I act
-converted to an unsigned int.
-.SH STRUCTURES
-.LP
-.nf
-
- typedef struct _XkbCtrlsAction {
- unsigned char type; /\(** XkbSA_SetControls, XkbSA_LockControls */
- unsigned char flags; /\(** with type, controls enabling and disabling
-of controls */
- unsigned char ctrls3; /\(** ctrls0 through ctrls3 represent the boolean
-controls */
- unsigned char ctrls2; /\(** ctrls0 through ctrls3 represent the boolean
-controls */
- unsigned char ctrls1; /\(** ctrls0 through ctrls3 represent the boolean
-controls */
- unsigned char ctrls0; /\(** ctrls0 through ctrls3 represent the boolean
-controls */
- } XkbCtrlsAction;
-.fi
+'\" t
+.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the "Software"),
+.\" to deal in the Software without restriction, including without limitation
+.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
+.\" and/or sell copies of the Software, and to permit persons to whom the
+.\" Software is furnished to do so, subject to the following conditions:
+.\"
+.\" The above copyright notice and this permission notice (including the next
+.\" paragraph) shall be included in all copies or substantial portions of the
+.\" Software.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+.\" DEALINGS IN THE SOFTWARE.
+.\"
+.TH XkbActionCtrls __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbActionCtrls \- Returns the ctrls fields of act converted to an unsigned int
+.SH SYNOPSIS
+.HP
+.B unsigned int XkbActionCtrls
+.BI "(\^XkbCtrlsAction " "act" "\^);"
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- act
+action from which to extract controls
+.SH DESCRIPTION
+.LP
+Actions associated with the XkbCtrlsAction structure change the state of the
+boolean controls.
+
+The
+.I type
+field can have any one of the values shown in Table 1.
+
+.TS
+c s
+l l
+l lw(4i).
+Table 1 Controls Action Types
+_
+Type Effect
+_
+XkbSA_SetControls T{
+A key press enables any boolean controls specified in the ctrls fields that were
+not already enabled at
+the time of the key press.
+A key release disables any controls enabled by the key press.
+This action can cause XkbControlsNotify events.
+T}
+XkbSA_LockControls T{
+If the XkbSA_LockNoLock bit is not set in the flags field, a key press enables
+any controls specified in
+the ctrls fields that were not already enabled at the time of the key press.
+.br
+If the XkbSA_LockNoUnlock bit is not set in the flags field, a key release
+disables any controls
+specified in the ctrls fields that were not already disabled at the time of the
+key press.
+.br
+This action can cause XkbControlsNotify events.
+T}
+.TE
+
+The
+.I flags
+field is composed of the bitwise inclusive OR of the masks shown in Table 2.
+
+.TS
+c s
+l l
+l lw(4i).
+Table 2 Control Action Flags
+_
+Flag Meaning
+_
+XkbSA_LockNoLock T{
+If set, and the action type is XkbSA_LockControls, the server only disables
+controls.
+T}
+XkbSA_LockNoUnlock T{
+If set, and the action type is XkbSA_LockControls, the server only enables
+controls.
+T}
+.TE
+
+The XkbSA_SetControls action implements a key that enables a boolean control
+when pressed and disables it
+when released. The XkbSA_LockControls action is used to implement a key that
+toggles the state of a
+boolean control each time it is pressed and released. The XkbSA_LockNoLock and
+XkbSA_LockNoUnlock flags
+allow modifying the toggling behavior to only unlock or only lock the boolean
+control.
+
+The
+.I ctrls0, ctrls1, ctrls2,
+and
+.I ctrls3
+fields represent the boolean controls in the
+.I enabled_ctrls
+field of the controls structure. Xkb macros, to convert between the two formats.
+
+.I XkbActionCtrls
+returns the
+.I ctrls
+fields of
+.I act
+converted to an unsigned int.
+.SH STRUCTURES
+.LP
+.nf
+
+ typedef struct _XkbCtrlsAction {
+ unsigned char type; /\(** XkbSA_SetControls, XkbSA_LockControls */
+ unsigned char flags; /\(** with type, controls enabling and disabling
+of controls */
+ unsigned char ctrls3; /\(** ctrls0 through ctrls3 represent the boolean
+controls */
+ unsigned char ctrls2; /\(** ctrls0 through ctrls3 represent the boolean
+controls */
+ unsigned char ctrls1; /\(** ctrls0 through ctrls3 represent the boolean
+controls */
+ unsigned char ctrls0; /\(** ctrls0 through ctrls3 represent the boolean
+controls */
+ } XkbCtrlsAction;
+.fi
diff --git a/libX11/man/xkb/XkbAddDeviceLedInfo.man b/libX11/man/xkb/XkbAddDeviceLedInfo.man
index 2123be098..e6ee42b01 100644
--- a/libX11/man/xkb/XkbAddDeviceLedInfo.man
+++ b/libX11/man/xkb/XkbAddDeviceLedInfo.man
@@ -1,117 +1,117 @@
-'\" t
-.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
-.\"
-.\" Permission is hereby granted, free of charge, to any person obtaining a
-.\" copy of this software and associated documentation files (the "Software"),
-.\" to deal in the Software without restriction, including without limitation
-.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
-.\" and/or sell copies of the Software, and to permit persons to whom the
-.\" Software is furnished to do so, subject to the following conditions:
-.\"
-.\" The above copyright notice and this permission notice (including the next
-.\" paragraph) shall be included in all copies or substantial portions of the
-.\" Software.
-.\"
-.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-.\" DEALINGS IN THE SOFTWARE.
-.\"
-.TH XkbAddDeviceLedInfo __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
-.SH NAME
-XkbAddDeviceLedInfo \- Initialize an XkbDeviceLedInfoRec structure
-.SH SYNOPSIS
-.HP
-.B XkbDeviceLedInfoPtr XkbAddDeviceLedInfo
-.BI "(\^XkbDeviceInfoPtr " "device_info" "\^,"
-.BI "unsigned int " "led_class" "\^,"
-.BI "unsigned int " "led_id" "\^);"
-.if n .ti +5n
-.if t .ti +.5i
-.SH ARGUMENTS
-.TP
-.I \- device_info
-structure in which to add LED info
-.TP
-.I \- led_class
-input extension class for LED device of interest
-.TP
-.I \- led_id
-input extension ID for LED device of interest
-.SH DESCRIPTION
-.LP
-.I XkbAddDeviceLedInfo
-first checks to see whether an entry matching
-.I led_class
-and
-.I led_id
-already exists in the
-.I device_info->leds
-array. If it finds a matching entry, it returns a pointer to that entry. Otherwise, it checks to be sure
-there is at least one empty entry in
-.I device_info->leds
-and extends it if there is not enough room. It then increments
-.I device_info->num_leds
-and fills in the next available entry in
-.I device_info->leds
-with
-.I led_class
-and
-.I led_id.
-
-If successful,
-.I XkbAddDeviceLedInfo
-returns a pointer to the XkbDeviceLedInfoRec structure that was initialized. If unable to allocate
-sufficient storage, or if
-.I device_info
-points to an invalid XkbDeviceInfoRec structure, or if
-.I led_class
-or
-.I led_id
-are inappropriate,
-.I XkbAddDeviceLedInfo
-returns NULL.
-
-To allocate additional space for button actions in an XkbDeviceInfoRec structure, use
-.I XkbResizeDeviceButtonActions.
-
-.SH STRUCTURES
-.LP
-Information about X Input Extension devices is transferred between a client program and the Xkb
-extension in an XkbDeviceInfoRec structure:
-.nf
-
- typedef struct {
- char * name; /\(** name for device */
- Atom type; /\(** name for class of devices */
- unsigned short device_spec; /\(** device of interest */
- Bool has_own_state; /\(** True=>this device has its own state */
- unsigned short supported; /\(** bits indicating supported capabilities */
- unsigned short unsupported; /\(** bits indicating unsupported capabilities */
- unsigned short num_btns; /\(** number of entries in btn_acts */
- XkbAction * btn_acts; /\(** button actions */
- unsigned short sz_leds; /\(** total number of entries in LEDs vector */
- unsigned short num_leds; /\(** number of valid entries in LEDs vector */
- unsigned short dflt_kbd_fb; /\(** input extension ID of default (core kbd) indicator */
- unsigned short dflt_led_fb; /\(** input extension ID of default indicator feedback */
- XkbDeviceLedInfoPtr leds; /\(** LED descriptions */
- } XkbDeviceInfoRec, *XkbDeviceInfoPtr;
-
-
- typedef struct {
- unsigned short led_class; /\(** class for this LED device*/
- unsigned short led_id; /\(** ID for this LED device */
- unsigned int phys_indicators; /\(** bits for which LEDs physically present */
- unsigned int maps_present; /\(** bits for which LEDs have maps in maps */
- unsigned int names_present; /\(** bits for which LEDs are in names */
- unsigned int state; /\(** 1 bit => corresponding LED is on */
- Atom names[XkbNumIndicators]; /\(** names for LEDs */
- XkbIndicatorMapRec maps; /\(** indicator maps for each LED */
- } XkbDeviceLedInfoRec, *XkbDeviceLedInfoPtr;
-
-.fi
-.SH "SEE ALSO"
-.BR XkbResizeDeviceButtonActions (__libmansuffix__)
+'\" t
+.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the "Software"),
+.\" to deal in the Software without restriction, including without limitation
+.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
+.\" and/or sell copies of the Software, and to permit persons to whom the
+.\" Software is furnished to do so, subject to the following conditions:
+.\"
+.\" The above copyright notice and this permission notice (including the next
+.\" paragraph) shall be included in all copies or substantial portions of the
+.\" Software.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+.\" DEALINGS IN THE SOFTWARE.
+.\"
+.TH XkbAddDeviceLedInfo __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbAddDeviceLedInfo \- Initialize an XkbDeviceLedInfoRec structure
+.SH SYNOPSIS
+.HP
+.B XkbDeviceLedInfoPtr XkbAddDeviceLedInfo
+.BI "(\^XkbDeviceInfoPtr " "device_info" "\^,"
+.BI "unsigned int " "led_class" "\^,"
+.BI "unsigned int " "led_id" "\^);"
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- device_info
+structure in which to add LED info
+.TP
+.I \- led_class
+input extension class for LED device of interest
+.TP
+.I \- led_id
+input extension ID for LED device of interest
+.SH DESCRIPTION
+.LP
+.I XkbAddDeviceLedInfo
+first checks to see whether an entry matching
+.I led_class
+and
+.I led_id
+already exists in the
+.I device_info->leds
+array. If it finds a matching entry, it returns a pointer to that entry. Otherwise, it checks to be sure
+there is at least one empty entry in
+.I device_info->leds
+and extends it if there is not enough room. It then increments
+.I device_info->num_leds
+and fills in the next available entry in
+.I device_info->leds
+with
+.I led_class
+and
+.I led_id.
+
+If successful,
+.I XkbAddDeviceLedInfo
+returns a pointer to the XkbDeviceLedInfoRec structure that was initialized. If unable to allocate
+sufficient storage, or if
+.I device_info
+points to an invalid XkbDeviceInfoRec structure, or if
+.I led_class
+or
+.I led_id
+are inappropriate,
+.I XkbAddDeviceLedInfo
+returns NULL.
+
+To allocate additional space for button actions in an XkbDeviceInfoRec structure, use
+.I XkbResizeDeviceButtonActions.
+
+.SH STRUCTURES
+.LP
+Information about X Input Extension devices is transferred between a client program and the Xkb
+extension in an XkbDeviceInfoRec structure:
+.nf
+
+ typedef struct {
+ char * name; /\(** name for device */
+ Atom type; /\(** name for class of devices */
+ unsigned short device_spec; /\(** device of interest */
+ Bool has_own_state; /\(** True=>this device has its own state */
+ unsigned short supported; /\(** bits indicating supported capabilities */
+ unsigned short unsupported; /\(** bits indicating unsupported capabilities */
+ unsigned short num_btns; /\(** number of entries in btn_acts */
+ XkbAction * btn_acts; /\(** button actions */
+ unsigned short sz_leds; /\(** total number of entries in LEDs vector */
+ unsigned short num_leds; /\(** number of valid entries in LEDs vector */
+ unsigned short dflt_kbd_fb; /\(** input extension ID of default (core kbd) indicator */
+ unsigned short dflt_led_fb; /\(** input extension ID of default indicator feedback */
+ XkbDeviceLedInfoPtr leds; /\(** LED descriptions */
+ } XkbDeviceInfoRec, *XkbDeviceInfoPtr;
+
+
+ typedef struct {
+ unsigned short led_class; /\(** class for this LED device*/
+ unsigned short led_id; /\(** ID for this LED device */
+ unsigned int phys_indicators; /\(** bits for which LEDs physically present */
+ unsigned int maps_present; /\(** bits for which LEDs have maps in maps */
+ unsigned int names_present; /\(** bits for which LEDs are in names */
+ unsigned int state; /\(** 1 bit => corresponding LED is on */
+ Atom names[XkbNumIndicators]; /\(** names for LEDs */
+ XkbIndicatorMapRec maps; /\(** indicator maps for each LED */
+ } XkbDeviceLedInfoRec, *XkbDeviceLedInfoPtr;
+
+.fi
+.SH "SEE ALSO"
+.BR XkbResizeDeviceButtonActions (__libmansuffix__)
diff --git a/libX11/man/xkb/XkbAddGeomColor.man b/libX11/man/xkb/XkbAddGeomColor.man
index ab9effd92..68f4cd3b6 100644
--- a/libX11/man/xkb/XkbAddGeomColor.man
+++ b/libX11/man/xkb/XkbAddGeomColor.man
@@ -1,96 +1,96 @@
-.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
-.\"
-.\" Permission is hereby granted, free of charge, to any person obtaining a
-.\" copy of this software and associated documentation files (the "Software"),
-.\" to deal in the Software without restriction, including without limitation
-.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
-.\" and/or sell copies of the Software, and to permit persons to whom the
-.\" Software is furnished to do so, subject to the following conditions:
-.\"
-.\" The above copyright notice and this permission notice (including the next
-.\" paragraph) shall be included in all copies or substantial portions of the
-.\" Software.
-.\"
-.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-.\" DEALINGS IN THE SOFTWARE.
-.\"
-.TH XkbAddGeomColor __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
-.SH NAME
-XkbAddGeomColor \- Add one color name to an existing keyboard geometry
-description
-.SH SYNOPSIS
-.HP
-.B XkbColorPtr XkbAddGeomColor
-.BI "(\^XkbGeometryPtr " "geom" "\^,"
-.BI "char *" "spec" "\^,"
-.BI "unsigned int " "pixel" "\^);"
-.if n .ti +5n
-.if t .ti +.5i
-.SH ARGUMENTS
-.TP
-.I \- geom
-geometry to be updated
-.TP
-.I \- spec
-color to be added
-.TP
-.I \- pixel
-color to be added
-.SH DESCRIPTION
-.LP
-Xkb provides functions to add a single new element to the top-level keyboard
-geometry. In each case the
-.I num_ *
-fields of the corresponding structure is incremented by 1. These functions do
-not change
-.I sz_*
-unless there is no more room in the array. Some of these functions fill in the
-values of the element's structure from the arguments. For other functions, you
-must explicitly write code to fill the structure's elements.
-
-The top-level geometry description includes a list of
-.I geometry properties.
-A geometry property associates an arbitrary string with an equally arbitrary
-name. Programs that display images of keyboards can use geometry properties as
-hints, but they are not interpreted by Xkb. No other geometry structures refer
-to geometry properties.
-
-.I XkbAddGeomColor
-adds the specified color
-.I name
-and
-.I pixel
-to the specified geometry
-.I geom.
-The top-level geometry description includes a list of up to MaxColors (32)
-.I color names.
-A color
-.I name
-is a string whose interpretation is not specified by Xkb and neither is the
-.I pixel
-value's interpretation. All other geometry data structures refer to colors using
-their indices in this global list or pointers to colors in this list.
-.I XkbAddGeomColor
-returns NULL if any of the parameters is empty or if it was not able to allocate
-space for the color. To allocate space for an arbitrary number of colors to a
-geometry, use the
-.I XkbAllocGeomColors
-function.
-.SH STRUCTURES
-.LP
-.nf
-
- typedef struct _XkbColor {
- unsigned int pixel; /\(** color */
- char * spec; /\(** color name */
- } XkbColorRec,*XkbColorPtr;
-
-.fi
-.SH "SEE ALSO"
-.BR XkbAllocGeomColors (__libmansuffix__)
-
+.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the "Software"),
+.\" to deal in the Software without restriction, including without limitation
+.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
+.\" and/or sell copies of the Software, and to permit persons to whom the
+.\" Software is furnished to do so, subject to the following conditions:
+.\"
+.\" The above copyright notice and this permission notice (including the next
+.\" paragraph) shall be included in all copies or substantial portions of the
+.\" Software.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+.\" DEALINGS IN THE SOFTWARE.
+.\"
+.TH XkbAddGeomColor __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbAddGeomColor \- Add one color name to an existing keyboard geometry
+description
+.SH SYNOPSIS
+.HP
+.B XkbColorPtr XkbAddGeomColor
+.BI "(\^XkbGeometryPtr " "geom" "\^,"
+.BI "char *" "spec" "\^,"
+.BI "unsigned int " "pixel" "\^);"
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- geom
+geometry to be updated
+.TP
+.I \- spec
+color to be added
+.TP
+.I \- pixel
+color to be added
+.SH DESCRIPTION
+.LP
+Xkb provides functions to add a single new element to the top-level keyboard
+geometry. In each case the
+.I num_ *
+fields of the corresponding structure is incremented by 1. These functions do
+not change
+.I sz_*
+unless there is no more room in the array. Some of these functions fill in the
+values of the element's structure from the arguments. For other functions, you
+must explicitly write code to fill the structure's elements.
+
+The top-level geometry description includes a list of
+.I geometry properties.
+A geometry property associates an arbitrary string with an equally arbitrary
+name. Programs that display images of keyboards can use geometry properties as
+hints, but they are not interpreted by Xkb. No other geometry structures refer
+to geometry properties.
+
+.I XkbAddGeomColor
+adds the specified color
+.I name
+and
+.I pixel
+to the specified geometry
+.I geom.
+The top-level geometry description includes a list of up to MaxColors (32)
+.I color names.
+A color
+.I name
+is a string whose interpretation is not specified by Xkb and neither is the
+.I pixel
+value's interpretation. All other geometry data structures refer to colors using
+their indices in this global list or pointers to colors in this list.
+.I XkbAddGeomColor
+returns NULL if any of the parameters is empty or if it was not able to allocate
+space for the color. To allocate space for an arbitrary number of colors to a
+geometry, use the
+.I XkbAllocGeomColors
+function.
+.SH STRUCTURES
+.LP
+.nf
+
+ typedef struct _XkbColor {
+ unsigned int pixel; /\(** color */
+ char * spec; /\(** color name */
+ } XkbColorRec,*XkbColorPtr;
+
+.fi
+.SH "SEE ALSO"
+.BR XkbAllocGeomColors (__libmansuffix__)
+
diff --git a/libX11/man/xkb/XkbAddGeomDoodad.man b/libX11/man/xkb/XkbAddGeomDoodad.man
index ba2566a58..b6519fddc 100644
--- a/libX11/man/xkb/XkbAddGeomDoodad.man
+++ b/libX11/man/xkb/XkbAddGeomDoodad.man
@@ -1,109 +1,109 @@
-.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
-.\"
-.\" Permission is hereby granted, free of charge, to any person obtaining a
-.\" copy of this software and associated documentation files (the "Software"),
-.\" to deal in the Software without restriction, including without limitation
-.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
-.\" and/or sell copies of the Software, and to permit persons to whom the
-.\" Software is furnished to do so, subject to the following conditions:
-.\"
-.\" The above copyright notice and this permission notice (including the next
-.\" paragraph) shall be included in all copies or substantial portions of the
-.\" Software.
-.\"
-.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-.\" DEALINGS IN THE SOFTWARE.
-.\"
-.TH XkbAddGeomDoodad __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
-.SH NAME
-XkbAddGeomDoodad \- Add one doodad to a section of a keyboard geometry or to the
-top-level geometry
-.SH SYNOPSIS
-.HP
-.B XkbDoodadPtr XkbAddGeomDoodad
-.BI "(\^XkbGeometryPtr " "geom" "\^,"
-.BI "XkbSectionPtr " "section" "\^,"
-.BI "Atom " "name" "\^);"
-.if n .ti +5n
-.if t .ti +.5i
-.SH ARGUMENTS
-.TP
-.I \- geom
-geometry to which the doodad is added
-.TP
-.I \- section
-section, if any, to which the doodad is added
-.TP
-.I \- name
-name of the new doodad
-.SH DESCRIPTION
-.LP
-Xkb provides functions to add a single new element to the top-level keyboard
-geometry. In each case the
-.I num_ *
-fields of the corresponding structure is incremented by 1. These functions do
-not change
-.I sz_*
-unless there is no more room in the array. Some of these functions fill in the
-values of the element's structure from the arguments. For other functions, you
-must explicitly write code to fill the structure's elements.
-
-The top-level geometry description includes a list of
-.I geometry properties.
-A geometry property associates an arbitrary string with an equally arbitrary
-name. Programs that display images of keyboards can use geometry properties as
-hints, but they are not interpreted by Xkb. No other geometry structures refer
-to geometry properties.
-
-A
-.I doodad
-describes some visible aspect of the keyboard that is not a key and is not a
-section.
-.I XkbAddGeomDoodad
-adds a doodad with name specified by
-.I name
-to the geometry
-.I geom
-if
-.I section
-is NULL or to the section of the geometry specified by
-.I section
-if
-.I section
-is not NULL.
-.I XkbAddGeomDoodad
-returns NULL if any of the parameters is empty or if it was not able to allocate
-space for the doodad. If there is already a doodad with the name
-.I name
-in the doodad array for the geometry (if
-.I section
-is NULL) or the section (if
-.I section
-is non-NULL), a pointer to that doodad is returned. To allocate space for an
-arbitrary number of doodads to a section, use the
-.I XkbAllocGeomSectionDoodads
-function. To allocate space for an arbitrary number of doodads to a keyboard
-geometry, use the
-.I XkbAllocGeomDoodads
-function.
-.SH STRUCTURES
-.LP
-.nf
-
- typedef union _XkbDoodad {
- XkbAnyDoodadRec any;
- XkbShapeDoodadRec shape;
- XkbTextDoodadRec text;
- XkbIndicatorDoodadRec indicator;
- XkbLogoDoodadRec logo;
- } XkbDoodadRec, *XkbDoodadPtr;
-
-.fi
-.SH "SEE ALSO"
-.BR XkbAllocGeomDoodads (__libmansuffix__),
-.BR XkbAllocGeomSectionDoodads (__libmansuffix__)
+.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the "Software"),
+.\" to deal in the Software without restriction, including without limitation
+.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
+.\" and/or sell copies of the Software, and to permit persons to whom the
+.\" Software is furnished to do so, subject to the following conditions:
+.\"
+.\" The above copyright notice and this permission notice (including the next
+.\" paragraph) shall be included in all copies or substantial portions of the
+.\" Software.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+.\" DEALINGS IN THE SOFTWARE.
+.\"
+.TH XkbAddGeomDoodad __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbAddGeomDoodad \- Add one doodad to a section of a keyboard geometry or to the
+top-level geometry
+.SH SYNOPSIS
+.HP
+.B XkbDoodadPtr XkbAddGeomDoodad
+.BI "(\^XkbGeometryPtr " "geom" "\^,"
+.BI "XkbSectionPtr " "section" "\^,"
+.BI "Atom " "name" "\^);"
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- geom
+geometry to which the doodad is added
+.TP
+.I \- section
+section, if any, to which the doodad is added
+.TP
+.I \- name
+name of the new doodad
+.SH DESCRIPTION
+.LP
+Xkb provides functions to add a single new element to the top-level keyboard
+geometry. In each case the
+.I num_ *
+fields of the corresponding structure is incremented by 1. These functions do
+not change
+.I sz_*
+unless there is no more room in the array. Some of these functions fill in the
+values of the element's structure from the arguments. For other functions, you
+must explicitly write code to fill the structure's elements.
+
+The top-level geometry description includes a list of
+.I geometry properties.
+A geometry property associates an arbitrary string with an equally arbitrary
+name. Programs that display images of keyboards can use geometry properties as
+hints, but they are not interpreted by Xkb. No other geometry structures refer
+to geometry properties.
+
+A
+.I doodad
+describes some visible aspect of the keyboard that is not a key and is not a
+section.
+.I XkbAddGeomDoodad
+adds a doodad with name specified by
+.I name
+to the geometry
+.I geom
+if
+.I section
+is NULL or to the section of the geometry specified by
+.I section
+if
+.I section
+is not NULL.
+.I XkbAddGeomDoodad
+returns NULL if any of the parameters is empty or if it was not able to allocate
+space for the doodad. If there is already a doodad with the name
+.I name
+in the doodad array for the geometry (if
+.I section
+is NULL) or the section (if
+.I section
+is non-NULL), a pointer to that doodad is returned. To allocate space for an
+arbitrary number of doodads to a section, use the
+.I XkbAllocGeomSectionDoodads
+function. To allocate space for an arbitrary number of doodads to a keyboard
+geometry, use the
+.I XkbAllocGeomDoodads
+function.
+.SH STRUCTURES
+.LP
+.nf
+
+ typedef union _XkbDoodad {
+ XkbAnyDoodadRec any;
+ XkbShapeDoodadRec shape;
+ XkbTextDoodadRec text;
+ XkbIndicatorDoodadRec indicator;
+ XkbLogoDoodadRec logo;
+ } XkbDoodadRec, *XkbDoodadPtr;
+
+.fi
+.SH "SEE ALSO"
+.BR XkbAllocGeomDoodads (__libmansuffix__),
+.BR XkbAllocGeomSectionDoodads (__libmansuffix__)
diff --git a/libX11/man/xkb/XkbAddGeomKey.man b/libX11/man/xkb/XkbAddGeomKey.man
index 911171818..31fd1c320 100644
--- a/libX11/man/xkb/XkbAddGeomKey.man
+++ b/libX11/man/xkb/XkbAddGeomKey.man
@@ -1,76 +1,76 @@
-.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
-.\"
-.\" Permission is hereby granted, free of charge, to any person obtaining a
-.\" copy of this software and associated documentation files (the "Software"),
-.\" to deal in the Software without restriction, including without limitation
-.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
-.\" and/or sell copies of the Software, and to permit persons to whom the
-.\" Software is furnished to do so, subject to the following conditions:
-.\"
-.\" The above copyright notice and this permission notice (including the next
-.\" paragraph) shall be included in all copies or substantial portions of the
-.\" Software.
-.\"
-.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-.\" DEALINGS IN THE SOFTWARE.
-.\"
-.TH XkbAddGeomKey __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
-.SH NAME
-XkbAddGeomKey \- Add one key at the end of an existing row of keys
-.SH SYNOPSIS
-.HP
-.B XkbKeyPtr XkbAddGeomKey
-.BI "(\^XkbRowPtr " "row" "\^);"
-.if n .ti +5n
-.if t .ti +.5i
-.SH ARGUMENTS
-.TP
-.I \- row
-row to be updated
-.SH DESCRIPTION
-.LP
-Xkb provides functions to add a single new element to the top-level keyboard geometry. In each case
-the
-.I num_ *
-fields of the corresponding structure is incremented by 1. These functions do not change
-.I sz_*
-unless there is no more room in the array. Some of these functions fill in the values of the
-element's structure from the arguments. For other functions, you must explicitly write code to fill
-the structure's elements.
-
-The top-level geometry description includes a list of
-.I geometry properties.
-A geometry property associates an arbitrary string with an equally arbitrary name. Programs that
-display images of keyboards can use geometry properties as hints, but they are not interpreted by
-Xkb. No other geometry structures refer to geometry properties.
-
-Keys are grouped into rows.
-.I XkbAddGeomKey
-adds one key to the end of the specified
-.I row.
-The key is allocated and zeroed.
-.I XkbAddGeomKey
-returns NULL if
-.I row
-is empty or if it was not able to allocate space for the key. To allocate space for an arbitrary
-number of keys to a row, use
-.I XkbAllocGeomKeys.
-.SH STRUCTURES
-.LP
-.nf
-
- typedef struct _XkbKey { /\(** key in a row */
- XkbKeyNameRec name; /\(** key name */
- short gap; /\(** gap in mm/10 from previous key in row */
- unsigned char shape_ndx; /\(** index of shape for key */
- unsigned char color_ndx; /\(** index of color for key body */
- } XkbKeyRec, *XkbKeyPtr;
-
-.fi
-.SH "SEE ALSO"
-.BR XkbAllocGeomKeys (__libmansuffix__)
+.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the "Software"),
+.\" to deal in the Software without restriction, including without limitation
+.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
+.\" and/or sell copies of the Software, and to permit persons to whom the
+.\" Software is furnished to do so, subject to the following conditions:
+.\"
+.\" The above copyright notice and this permission notice (including the next
+.\" paragraph) shall be included in all copies or substantial portions of the
+.\" Software.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+.\" DEALINGS IN THE SOFTWARE.
+.\"
+.TH XkbAddGeomKey __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbAddGeomKey \- Add one key at the end of an existing row of keys
+.SH SYNOPSIS
+.HP
+.B XkbKeyPtr XkbAddGeomKey
+.BI "(\^XkbRowPtr " "row" "\^);"
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- row
+row to be updated
+.SH DESCRIPTION
+.LP
+Xkb provides functions to add a single new element to the top-level keyboard geometry. In each case
+the
+.I num_ *
+fields of the corresponding structure is incremented by 1. These functions do not change
+.I sz_*
+unless there is no more room in the array. Some of these functions fill in the values of the
+element's structure from the arguments. For other functions, you must explicitly write code to fill
+the structure's elements.
+
+The top-level geometry description includes a list of
+.I geometry properties.
+A geometry property associates an arbitrary string with an equally arbitrary name. Programs that
+display images of keyboards can use geometry properties as hints, but they are not interpreted by
+Xkb. No other geometry structures refer to geometry properties.
+
+Keys are grouped into rows.
+.I XkbAddGeomKey
+adds one key to the end of the specified
+.I row.
+The key is allocated and zeroed.
+.I XkbAddGeomKey
+returns NULL if
+.I row
+is empty or if it was not able to allocate space for the key. To allocate space for an arbitrary
+number of keys to a row, use
+.I XkbAllocGeomKeys.
+.SH STRUCTURES
+.LP
+.nf
+
+ typedef struct _XkbKey { /\(** key in a row */
+ XkbKeyNameRec name; /\(** key name */
+ short gap; /\(** gap in mm/10 from previous key in row */
+ unsigned char shape_ndx; /\(** index of shape for key */
+ unsigned char color_ndx; /\(** index of color for key body */
+ } XkbKeyRec, *XkbKeyPtr;
+
+.fi
+.SH "SEE ALSO"
+.BR XkbAllocGeomKeys (__libmansuffix__)
diff --git a/libX11/man/xkb/XkbAddGeomKeyAlias.man b/libX11/man/xkb/XkbAddGeomKeyAlias.man
index e5b4c17b9..5a612c658 100644
--- a/libX11/man/xkb/XkbAddGeomKeyAlias.man
+++ b/libX11/man/xkb/XkbAddGeomKeyAlias.man
@@ -1,85 +1,85 @@
-.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
-.\"
-.\" Permission is hereby granted, free of charge, to any person obtaining a
-.\" copy of this software and associated documentation files (the "Software"),
-.\" to deal in the Software without restriction, including without limitation
-.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
-.\" and/or sell copies of the Software, and to permit persons to whom the
-.\" Software is furnished to do so, subject to the following conditions:
-.\"
-.\" The above copyright notice and this permission notice (including the next
-.\" paragraph) shall be included in all copies or substantial portions of the
-.\" Software.
-.\"
-.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-.\" DEALINGS IN THE SOFTWARE.
-.\"
-.TH XkbAddGeomKeyAlias __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
-.SH NAME
-XkbAddGeomKeyAlias \- Add one key alias to an existing keyboard geometry
-description
-.SH SYNOPSIS
-.HP
-.B XkbKeyAliasPtr XkbAddGeomKeyAlias
-.BI "(\^XkbGeometryPtr " "geom" "\^,"
-.BI "char *" "alias" "\^,"
-.BI "char *" "real" "\^);"
-.if n .ti +5n
-.if t .ti +.5i
-.SH ARGUMENTS
-.TP
-.I \- geom
-geometry to be updated
-.TP
-.I \- alias
-alias to be added
-.TP
-.I \- real
-real name to be bound to the new alias
-.SH DESCRIPTION
-.LP
-Xkb provides functions to add a single new element to the top-level keyboard
-geometry. In each case the
-.I num_ *
-fields of the corresponding structure is incremented by 1. These functions do
-not change
-.I sz_*
-unless there is no more room in the array. Some of these functions fill in the
-values of the element's structure from the arguments. For other functions, you
-must explicitly write code to fill the structure's elements.
-
-The top-level geometry description includes a list of
-.I geometry properties.
-A geometry property associates an arbitrary string with an equally arbitrary
-name. Programs that display images of keyboards can use geometry properties as
-hints, but they are not interpreted by Xkb. No other geometry structures refer
-to geometry properties.
-
-.I XkbAddGeomKeyAlias
-adds one key alias with the value
-.I alias
-to the geometry
-.I geom,
-and associates it with the key whose real name is
-.I real. XkbAddGeomKeyAlias
-returns NULL if any of the parameters is empty or if it was not able to allocate
-space for the alias. To allocate space for an arbitrary number of aliases, use
-the
-.I XkbAllocGeomKeyAliases
-function.
-.SH STRUCTURES
-.LP
-.nf
-
- typedef struct {
- char real[XkbKeyNameLength]; /\(** this key name must be in the keys array */
- char alias[XkbKeyNameLength]; /\(** symbolic key name as alias for the key */
- } XkbKeyAliasRec,*XkbKeyAliasPtr;
-.fi
-.SH "SEE ALSO"
-.BR XkbAllocGeomKeyAliases (__libmansuffix__)
+.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the "Software"),
+.\" to deal in the Software without restriction, including without limitation
+.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
+.\" and/or sell copies of the Software, and to permit persons to whom the
+.\" Software is furnished to do so, subject to the following conditions:
+.\"
+.\" The above copyright notice and this permission notice (including the next
+.\" paragraph) shall be included in all copies or substantial portions of the
+.\" Software.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+.\" DEALINGS IN THE SOFTWARE.
+.\"
+.TH XkbAddGeomKeyAlias __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbAddGeomKeyAlias \- Add one key alias to an existing keyboard geometry
+description
+.SH SYNOPSIS
+.HP
+.B XkbKeyAliasPtr XkbAddGeomKeyAlias
+.BI "(\^XkbGeometryPtr " "geom" "\^,"
+.BI "char *" "alias" "\^,"
+.BI "char *" "real" "\^);"
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- geom
+geometry to be updated
+.TP
+.I \- alias
+alias to be added
+.TP
+.I \- real
+real name to be bound to the new alias
+.SH DESCRIPTION
+.LP
+Xkb provides functions to add a single new element to the top-level keyboard
+geometry. In each case the
+.I num_ *
+fields of the corresponding structure is incremented by 1. These functions do
+not change
+.I sz_*
+unless there is no more room in the array. Some of these functions fill in the
+values of the element's structure from the arguments. For other functions, you
+must explicitly write code to fill the structure's elements.
+
+The top-level geometry description includes a list of
+.I geometry properties.
+A geometry property associates an arbitrary string with an equally arbitrary
+name. Programs that display images of keyboards can use geometry properties as
+hints, but they are not interpreted by Xkb. No other geometry structures refer
+to geometry properties.
+
+.I XkbAddGeomKeyAlias
+adds one key alias with the value
+.I alias
+to the geometry
+.I geom,
+and associates it with the key whose real name is
+.I real. XkbAddGeomKeyAlias
+returns NULL if any of the parameters is empty or if it was not able to allocate
+space for the alias. To allocate space for an arbitrary number of aliases, use
+the
+.I XkbAllocGeomKeyAliases
+function.
+.SH STRUCTURES
+.LP
+.nf
+
+ typedef struct {
+ char real[XkbKeyNameLength]; /\(** this key name must be in the keys array */
+ char alias[XkbKeyNameLength]; /\(** symbolic key name as alias for the key */
+ } XkbKeyAliasRec,*XkbKeyAliasPtr;
+.fi
+.SH "SEE ALSO"
+.BR XkbAllocGeomKeyAliases (__libmansuffix__)
diff --git a/libX11/man/xkb/XkbAddGeomOutline.man b/libX11/man/xkb/XkbAddGeomOutline.man
index 39beb47ed..fcb3b50bb 100644
--- a/libX11/man/xkb/XkbAddGeomOutline.man
+++ b/libX11/man/xkb/XkbAddGeomOutline.man
@@ -1,82 +1,82 @@
-.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
-.\"
-.\" Permission is hereby granted, free of charge, to any person obtaining a
-.\" copy of this software and associated documentation files (the "Software"),
-.\" to deal in the Software without restriction, including without limitation
-.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
-.\" and/or sell copies of the Software, and to permit persons to whom the
-.\" Software is furnished to do so, subject to the following conditions:
-.\"
-.\" The above copyright notice and this permission notice (including the next
-.\" paragraph) shall be included in all copies or substantial portions of the
-.\" Software.
-.\"
-.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-.\" DEALINGS IN THE SOFTWARE.
-.\"
-.TH XkbAddGeomOutline __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
-.SH NAME
-XkbAddGeomOutline \- Add one outline to an existing shape
-.SH SYNOPSIS
-.HP
-.B XkbOutlinePtr XkbAddGeomOutline
-.BI "(\^XkbShapePtr " "shape" "\^,"
-.BI "int " "sz_points" "\^);"
-.if n .ti +5n
-.if t .ti +.5i
-.SH ARGUMENTS
-.TP
-.I \- shape
-shape to be updated
-.TP
-.I \- sz_points
-number of points to be reserved
-.SH DESCRIPTION
-.LP
-Xkb provides functions to add a single new element to the top-level keyboard
-geometry. In each case the
-.I num_ *
-fields of the corresponding structure is incremented by 1. These functions do
-not change
-.I sz_*
-unless there is no more room in the array. Some of these functions fill in the
-values of the element's structure from the arguments. For other functions, you
-must explicitly write code to fill the structure's elements.
-
-The top-level geometry description includes a list of
-.I geometry properties.
-A geometry property associates an arbitrary string with an equally arbitrary
-name. Programs that display images of keyboards can use geometry properties as
-hints, but they are not interpreted by Xkb. No other geometry structures refer
-to geometry properties.
-
-An outline consists of an arbitrary number of points.
-.I XkbAddGeomOutline
-adds an outline to the specified
-.I shape
-by reserving
-.I sz_points
-points for it. The new outline is allocated and zeroed.
-.I XkbAddGeomOutline
-returns NULL if any of the parameters is empty or if it was not able to allocate
-space. To allocate space for an arbitrary number of outlines to a shape, use
-.I XkbAllocGeomOutlines.
-.SH STRUCTURES
-.LP
-.nf
-
- typedef struct _XkbOutline {
- unsigned short num_points; /\(** number of points in the outline */
- unsigned short sz_points; /\(** size of the points array */
- unsigned short corner_radius; /\(** draw corners as circles with this radius */
- XkbPointPtr points; /\(** array of points defining the outline */
- } XkbOutlineRec, *XkbOutlinePtr;
-
-.fi
-.SH "SEE ALSO"
-.BR XkbAllocGeomOutlines (__libmansuffix__)
+.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the "Software"),
+.\" to deal in the Software without restriction, including without limitation
+.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
+.\" and/or sell copies of the Software, and to permit persons to whom the
+.\" Software is furnished to do so, subject to the following conditions:
+.\"
+.\" The above copyright notice and this permission notice (including the next
+.\" paragraph) shall be included in all copies or substantial portions of the
+.\" Software.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+.\" DEALINGS IN THE SOFTWARE.
+.\"
+.TH XkbAddGeomOutline __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbAddGeomOutline \- Add one outline to an existing shape
+.SH SYNOPSIS
+.HP
+.B XkbOutlinePtr XkbAddGeomOutline
+.BI "(\^XkbShapePtr " "shape" "\^,"
+.BI "int " "sz_points" "\^);"
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- shape
+shape to be updated
+.TP
+.I \- sz_points
+number of points to be reserved
+.SH DESCRIPTION
+.LP
+Xkb provides functions to add a single new element to the top-level keyboard
+geometry. In each case the
+.I num_ *
+fields of the corresponding structure is incremented by 1. These functions do
+not change
+.I sz_*
+unless there is no more room in the array. Some of these functions fill in the
+values of the element's structure from the arguments. For other functions, you
+must explicitly write code to fill the structure's elements.
+
+The top-level geometry description includes a list of
+.I geometry properties.
+A geometry property associates an arbitrary string with an equally arbitrary
+name. Programs that display images of keyboards can use geometry properties as
+hints, but they are not interpreted by Xkb. No other geometry structures refer
+to geometry properties.
+
+An outline consists of an arbitrary number of points.
+.I XkbAddGeomOutline
+adds an outline to the specified
+.I shape
+by reserving
+.I sz_points
+points for it. The new outline is allocated and zeroed.
+.I XkbAddGeomOutline
+returns NULL if any of the parameters is empty or if it was not able to allocate
+space. To allocate space for an arbitrary number of outlines to a shape, use
+.I XkbAllocGeomOutlines.
+.SH STRUCTURES
+.LP
+.nf
+
+ typedef struct _XkbOutline {
+ unsigned short num_points; /\(** number of points in the outline */
+ unsigned short sz_points; /\(** size of the points array */
+ unsigned short corner_radius; /\(** draw corners as circles with this radius */
+ XkbPointPtr points; /\(** array of points defining the outline */
+ } XkbOutlineRec, *XkbOutlinePtr;
+
+.fi
+.SH "SEE ALSO"
+.BR XkbAllocGeomOutlines (__libmansuffix__)
diff --git a/libX11/man/xkb/XkbAddGeomOverlay.man b/libX11/man/xkb/XkbAddGeomOverlay.man
index 7cfe53587..1092bb06d 100644
--- a/libX11/man/xkb/XkbAddGeomOverlay.man
+++ b/libX11/man/xkb/XkbAddGeomOverlay.man
@@ -1,91 +1,91 @@
-.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
-.\"
-.\" Permission is hereby granted, free of charge, to any person obtaining a
-.\" copy of this software and associated documentation files (the "Software"),
-.\" to deal in the Software without restriction, including without limitation
-.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
-.\" and/or sell copies of the Software, and to permit persons to whom the
-.\" Software is furnished to do so, subject to the following conditions:
-.\"
-.\" The above copyright notice and this permission notice (including the next
-.\" paragraph) shall be included in all copies or substantial portions of the
-.\" Software.
-.\"
-.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-.\" DEALINGS IN THE SOFTWARE.
-.\"
-.TH XkbAddGeomOverlay __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
-.SH NAME
-XkbAddGeomOverlay \- Add one overlay to a section
-.SH SYNOPSIS
-.HP
-.B XkbOverlayPtr XkbAddGeomOverlay
-.BI "(\^XkbSectionPtr " "section" "\^,"
-.BI "Atom " "name" "\^,"
-.BI "int " "sz_rows" "\^);"
-.if n .ti +5n
-.if t .ti +.5i
-.SH ARGUMENTS
-.TP
-.I \- section
-section to which an overlay will be added
-.TP
-.I \- name
-name of the overlay
-.TP
-.I \- sz_rows
-number of rows to reserve in the overlay
-.SH DESCRIPTION
-.LP
-Xkb provides functions to add a single new element to the top-level keyboard
-geometry. In each case the
-.I num_ *
-fields of the corresponding structure is incremented by 1. These functions do
-not change
-.I sz_*
-unless there is no more room in the array. Some of these functions fill in the
-values of the element's structure from the arguments. For other functions, you
-must explicitly write code to fill the structure's elements.
-
-The top-level geometry description includes a list of
-.I geometry properties.
-A geometry property associates an arbitrary string with an equally arbitrary
-name. Programs that display images of keyboards can use geometry properties as
-hints, but they are not interpreted by Xkb. No other geometry structures refer
-to geometry properties.
-
-.I XkbAddGeomOverlay
-adds an overlay with the specified name to the specified
-.I section.
-The new overlay is created with space allocated for
-.I sz_rows
-rows. If an overlay with name
-.I name
-already exists in the section, a pointer to the existing overlay is returned.
-.I XkbAddGeomOverlay
-returns NULL if any of the parameters is empty or if it was not able to allocate
-space for the overlay. To allocate space for an arbitrary number of overlays to
-a section, use the
-.I XkbAllocGeomOverlay
-function.
-.SH STRUCTURES
-.LP
-.nf
-
- typedef struct _XkbOverlayRec {
- Atom name; /\(** overlay name */
- XkbSectionPtr section_under; /\(** the section under this overlay */
- unsigned short num_rows; /\(** number of rows in the rows array */
- unsigned short sz_rows; /\(** size of the rows array */
- XkbOverlayRowPtr rows; /\(** array of rows in the overlay */
- XkbBoundsPtr bounds; /\(** bounding box for the overlay */
- } XkbOverlayRec,*XkbOverlayPtr;
-
-.fi
-.SH "SEE ALSO"
-.BR XkbAllocGeomOverlay (__libmansuffix__)
+.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the "Software"),
+.\" to deal in the Software without restriction, including without limitation
+.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
+.\" and/or sell copies of the Software, and to permit persons to whom the
+.\" Software is furnished to do so, subject to the following conditions:
+.\"
+.\" The above copyright notice and this permission notice (including the next
+.\" paragraph) shall be included in all copies or substantial portions of the
+.\" Software.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+.\" DEALINGS IN THE SOFTWARE.
+.\"
+.TH XkbAddGeomOverlay __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbAddGeomOverlay \- Add one overlay to a section
+.SH SYNOPSIS
+.HP
+.B XkbOverlayPtr XkbAddGeomOverlay
+.BI "(\^XkbSectionPtr " "section" "\^,"
+.BI "Atom " "name" "\^,"
+.BI "int " "sz_rows" "\^);"
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- section
+section to which an overlay will be added
+.TP
+.I \- name
+name of the overlay
+.TP
+.I \- sz_rows
+number of rows to reserve in the overlay
+.SH DESCRIPTION
+.LP
+Xkb provides functions to add a single new element to the top-level keyboard
+geometry. In each case the
+.I num_ *
+fields of the corresponding structure is incremented by 1. These functions do
+not change
+.I sz_*
+unless there is no more room in the array. Some of these functions fill in the
+values of the element's structure from the arguments. For other functions, you
+must explicitly write code to fill the structure's elements.
+
+The top-level geometry description includes a list of
+.I geometry properties.
+A geometry property associates an arbitrary string with an equally arbitrary
+name. Programs that display images of keyboards can use geometry properties as
+hints, but they are not interpreted by Xkb. No other geometry structures refer
+to geometry properties.
+
+.I XkbAddGeomOverlay
+adds an overlay with the specified name to the specified
+.I section.
+The new overlay is created with space allocated for
+.I sz_rows
+rows. If an overlay with name
+.I name
+already exists in the section, a pointer to the existing overlay is returned.
+.I XkbAddGeomOverlay
+returns NULL if any of the parameters is empty or if it was not able to allocate
+space for the overlay. To allocate space for an arbitrary number of overlays to
+a section, use the
+.I XkbAllocGeomOverlay
+function.
+.SH STRUCTURES
+.LP
+.nf
+
+ typedef struct _XkbOverlayRec {
+ Atom name; /\(** overlay name */
+ XkbSectionPtr section_under; /\(** the section under this overlay */
+ unsigned short num_rows; /\(** number of rows in the rows array */
+ unsigned short sz_rows; /\(** size of the rows array */
+ XkbOverlayRowPtr rows; /\(** array of rows in the overlay */
+ XkbBoundsPtr bounds; /\(** bounding box for the overlay */
+ } XkbOverlayRec,*XkbOverlayPtr;
+
+.fi
+.SH "SEE ALSO"
+.BR XkbAllocGeomOverlay (__libmansuffix__)
diff --git a/libX11/man/xkb/XkbAddGeomOverlayKey.man b/libX11/man/xkb/XkbAddGeomOverlayKey.man
index f1544a143..bf9813f1b 100644
--- a/libX11/man/xkb/XkbAddGeomOverlayKey.man
+++ b/libX11/man/xkb/XkbAddGeomOverlayKey.man
@@ -1,81 +1,81 @@
-.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
-.\"
-.\" Permission is hereby granted, free of charge, to any person obtaining a
-.\" copy of this software and associated documentation files (the "Software"),
-.\" to deal in the Software without restriction, including without limitation
-.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
-.\" and/or sell copies of the Software, and to permit persons to whom the
-.\" Software is furnished to do so, subject to the following conditions:
-.\"
-.\" The above copyright notice and this permission notice (including the next
-.\" paragraph) shall be included in all copies or substantial portions of the
-.\" Software.
-.\"
-.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-.\" DEALINGS IN THE SOFTWARE.
-.\"
-.TH XkbAddGeomOverlayKey __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
-.SH NAME
-XkbAddGeomOverlayKey \- Add a key to an existing overlay row
-.SH SYNOPSIS
-.HP
-.B XkbOverlayKeyPtr XkbAddGeomOverlayKey
-.BI "(\^XkbOverlayPtr " "overlay" "\^,"
-.BI "XkbRowPtr " "row" "\^,"
-.BI "char *" "under" "\^);"
-.if n .ti +5n
-.if t .ti +.5i
-.SH ARGUMENTS
-.TP
-.I \- overlay
-overlay to be updated
-.TP
-.I \- row
-row in overlay to be updated
-.TP
-.I \- under
-primary name of the key to be considered
-.SH DESCRIPTION
-.LP
-Xkb provides functions to add a single new element to the top-level keyboard
-geometry. In each case the
-.I num_ *
-fields of the corresponding structure is incremented by 1. These functions do
-not change
-.I sz_*
-unless there is no more room in the array. Some of these functions fill in the
-values of the element's structure from the arguments. For other functions, you
-must explicitly write code to fill the structure's elements.
-
-The top-level geometry description includes a list of
-.I geometry properties.
-A geometry property associates an arbitrary string with an equally arbitrary
-name. Programs that display images of keyboards can use geometry properties as
-hints, but they are not interpreted by Xkb. No other geometry structures refer
-to geometry properties.
-
-.I XkbAddGeomOverlayKey
-adds one key to the
-.I row
-in the
-.I overlay.
-If there is no key named
-.I under
-in the row of the underlying section,
-.I XkbAddGeomOverlayKey
-returns NULL.
-.SH STRUCTURES
-.LP
-.nf
-
- typedef struct _XkbOverlayKey {
- XkbKeyNameRec over; /\(** name of this overlay key */
- XkbKeyNameRec under; /\(** name of the key under this overlay key */
- } XkbOverlayKeyRec,*XkbOverlayKeyPtr;
-.fi
-
+.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the "Software"),
+.\" to deal in the Software without restriction, including without limitation
+.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
+.\" and/or sell copies of the Software, and to permit persons to whom the
+.\" Software is furnished to do so, subject to the following conditions:
+.\"
+.\" The above copyright notice and this permission notice (including the next
+.\" paragraph) shall be included in all copies or substantial portions of the
+.\" Software.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+.\" DEALINGS IN THE SOFTWARE.
+.\"
+.TH XkbAddGeomOverlayKey __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbAddGeomOverlayKey \- Add a key to an existing overlay row
+.SH SYNOPSIS
+.HP
+.B XkbOverlayKeyPtr XkbAddGeomOverlayKey
+.BI "(\^XkbOverlayPtr " "overlay" "\^,"
+.BI "XkbRowPtr " "row" "\^,"
+.BI "char *" "under" "\^);"
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- overlay
+overlay to be updated
+.TP
+.I \- row
+row in overlay to be updated
+.TP
+.I \- under
+primary name of the key to be considered
+.SH DESCRIPTION
+.LP
+Xkb provides functions to add a single new element to the top-level keyboard
+geometry. In each case the
+.I num_ *
+fields of the corresponding structure is incremented by 1. These functions do
+not change
+.I sz_*
+unless there is no more room in the array. Some of these functions fill in the
+values of the element's structure from the arguments. For other functions, you
+must explicitly write code to fill the structure's elements.
+
+The top-level geometry description includes a list of
+.I geometry properties.
+A geometry property associates an arbitrary string with an equally arbitrary
+name. Programs that display images of keyboards can use geometry properties as
+hints, but they are not interpreted by Xkb. No other geometry structures refer
+to geometry properties.
+
+.I XkbAddGeomOverlayKey
+adds one key to the
+.I row
+in the
+.I overlay.
+If there is no key named
+.I under
+in the row of the underlying section,
+.I XkbAddGeomOverlayKey
+returns NULL.
+.SH STRUCTURES
+.LP
+.nf
+
+ typedef struct _XkbOverlayKey {
+ XkbKeyNameRec over; /\(** name of this overlay key */
+ XkbKeyNameRec under; /\(** name of the key under this overlay key */
+ } XkbOverlayKeyRec,*XkbOverlayKeyPtr;
+.fi
+
diff --git a/libX11/man/xkb/XkbAddGeomOverlayRow.man b/libX11/man/xkb/XkbAddGeomOverlayRow.man
index 3fd3e40b0..499224e75 100644
--- a/libX11/man/xkb/XkbAddGeomOverlayRow.man
+++ b/libX11/man/xkb/XkbAddGeomOverlayRow.man
@@ -1,86 +1,86 @@
-.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
-.\"
-.\" Permission is hereby granted, free of charge, to any person obtaining a
-.\" copy of this software and associated documentation files (the "Software"),
-.\" to deal in the Software without restriction, including without limitation
-.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
-.\" and/or sell copies of the Software, and to permit persons to whom the
-.\" Software is furnished to do so, subject to the following conditions:
-.\"
-.\" The above copyright notice and this permission notice (including the next
-.\" paragraph) shall be included in all copies or substantial portions of the
-.\" Software.
-.\"
-.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-.\" DEALINGS IN THE SOFTWARE.
-.\"
-.TH XkbAddGeomOverlayRow __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
-.SH NAME
-XkbAddGeomOverlayRow \- Add a row to an existing overlay
-.SH SYNOPSIS
-.HP
-.B XkbOverlayRowPtr XkbAddGeomOverlayRow
-.BI "(\^XkbOverlayPtr " "overlay" "\^,"
-.BI "XkbRowPtr " "row_under" "\^,"
-.BI "int " "sz_keys" "\^);"
-.if n .ti +5n
-.if t .ti +.5i
-.SH ARGUMENTS
-.TP
-.I \- overlay
-overlay to be updated
-.TP
-.I \- row_under
-row to be overlayed in the section overlay overlays
-.TP
-.I \- sz_keys
-number of keys to reserve in the row
-.SH DESCRIPTION
-.LP
-Xkb provides functions to add a single new element to the top-level keyboard
-geometry. In each case the
-.I num_ *
-fields of the corresponding structure is incremented by 1. These functions do
-not change
-.I sz_*
-unless there is no more room in the array. Some of these functions fill in the
-values of the element's structure from the arguments. For other functions, you
-must explicitly write code to fill the structure's elements.
-
-The top-level geometry description includes a list of
-.I geometry properties.
-A geometry property associates an arbitrary string with an equally arbitrary
-name. Programs that display images of keyboards can use geometry properties as
-hints, but they are not interpreted by Xkb. No other geometry structures refer
-to geometry properties.
-
-.I XkbAddGeomOverlayRow
-adds one row to the
-.I overlay.
-The new row contains space for
-.I sz_keys
-keys. If
-. I row_under
-specifies a row that doesn't exist on the underlying section,
-.I XkbAddGeomOverlayRow
-returns NULL and doesn't change the overlay.
-.I XkbAddGeomOverlayRow
-returns NULL if any of the parameters is empty or if it was not able to allocate
-space for the overlay.
-.SH STRUCTURES
-.LP
-.nf
-
- typedef struct _XkbOverlayRow {
- unsigned short row_under; /\(** index into the row under this overlay row */
- unsigned short num_keys; /\(** number of keys in the keys array */
- unsigned short sz_keys; /\(** size of the keys array */
- XkbOverlayKeyPtr keys; /\(** array of keys in the overlay row */
- } XkbOverlayRowRec,*XkbOverlayRowPtr;
-
-.fi
+.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the "Software"),
+.\" to deal in the Software without restriction, including without limitation
+.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
+.\" and/or sell copies of the Software, and to permit persons to whom the
+.\" Software is furnished to do so, subject to the following conditions:
+.\"
+.\" The above copyright notice and this permission notice (including the next
+.\" paragraph) shall be included in all copies or substantial portions of the
+.\" Software.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+.\" DEALINGS IN THE SOFTWARE.
+.\"
+.TH XkbAddGeomOverlayRow __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbAddGeomOverlayRow \- Add a row to an existing overlay
+.SH SYNOPSIS
+.HP
+.B XkbOverlayRowPtr XkbAddGeomOverlayRow
+.BI "(\^XkbOverlayPtr " "overlay" "\^,"
+.BI "XkbRowPtr " "row_under" "\^,"
+.BI "int " "sz_keys" "\^);"
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- overlay
+overlay to be updated
+.TP
+.I \- row_under
+row to be overlayed in the section overlay overlays
+.TP
+.I \- sz_keys
+number of keys to reserve in the row
+.SH DESCRIPTION
+.LP
+Xkb provides functions to add a single new element to the top-level keyboard
+geometry. In each case the
+.I num_ *
+fields of the corresponding structure is incremented by 1. These functions do
+not change
+.I sz_*
+unless there is no more room in the array. Some of these functions fill in the
+values of the element's structure from the arguments. For other functions, you
+must explicitly write code to fill the structure's elements.
+
+The top-level geometry description includes a list of
+.I geometry properties.
+A geometry property associates an arbitrary string with an equally arbitrary
+name. Programs that display images of keyboards can use geometry properties as
+hints, but they are not interpreted by Xkb. No other geometry structures refer
+to geometry properties.
+
+.I XkbAddGeomOverlayRow
+adds one row to the
+.I overlay.
+The new row contains space for
+.I sz_keys
+keys. If
+. I row_under
+specifies a row that doesn't exist on the underlying section,
+.I XkbAddGeomOverlayRow
+returns NULL and doesn't change the overlay.
+.I XkbAddGeomOverlayRow
+returns NULL if any of the parameters is empty or if it was not able to allocate
+space for the overlay.
+.SH STRUCTURES
+.LP
+.nf
+
+ typedef struct _XkbOverlayRow {
+ unsigned short row_under; /\(** index into the row under this overlay row */
+ unsigned short num_keys; /\(** number of keys in the keys array */
+ unsigned short sz_keys; /\(** size of the keys array */
+ XkbOverlayKeyPtr keys; /\(** array of keys in the overlay row */
+ } XkbOverlayRowRec,*XkbOverlayRowPtr;
+
+.fi
diff --git a/libX11/man/xkb/XkbAddGeomProperty.man b/libX11/man/xkb/XkbAddGeomProperty.man
index 98aa93f47..bcc737520 100644
--- a/libX11/man/xkb/XkbAddGeomProperty.man
+++ b/libX11/man/xkb/XkbAddGeomProperty.man
@@ -1,86 +1,86 @@
-.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
-.\"
-.\" Permission is hereby granted, free of charge, to any person obtaining a
-.\" copy of this software and associated documentation files (the "Software"),
-.\" to deal in the Software without restriction, including without limitation
-.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
-.\" and/or sell copies of the Software, and to permit persons to whom the
-.\" Software is furnished to do so, subject to the following conditions:
-.\"
-.\" The above copyright notice and this permission notice (including the next
-.\" paragraph) shall be included in all copies or substantial portions of the
-.\" Software.
-.\"
-.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-.\" DEALINGS IN THE SOFTWARE.
-.\"
-.TH XkbAddGeomProperty __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
-.SH NAME
-XkbAddGeomProperty \- Add one property to an existing keyboard geometry
-description
-.SH SYNOPSIS
-.HP
-.B XkbPropertyPtr XkbAddGeomProperty
-.BI "(\^XkbGeometryPtr " "geom" "\^,"
-.BI "char *" "name" "\^,"
-.BI "char *" "value" "\^);"
-.if n .ti +5n
-.if t .ti +.5i
-.SH ARGUMENTS
-.TP
-.I \- geom
-geometry to be updated
-.TP
-.I \- name
-name of the new property
-.TP
-.I \- value
-value for the new property
-.SH DESCRIPTION
-.LP
-Xkb provides functions to add a single new element to the top-level keyboard
-geometry. In each case the
-.I num_ *
-fields of the corresponding structure is incremented by 1. These functions do
-not change
-.I sz_*
-unless there is no more room in the array. Some of these functions fill in the
-values of the element's structure from the arguments. For other functions, you
-must explicitly write code to fill the structure's elements.
-
-The top-level geometry description includes a list of
-.I geometry properties.
-A geometry property associates an arbitrary string with an equally arbitrary
-name. Programs that display images of keyboards can use geometry properties as
-hints, but they are not interpreted by Xkb. No other geometry structures refer
-to geometry properties.
-
-.I XkbAddGeomProperty
-adds one property with the specified
-.I name
-and
-.I value
-to the keyboard geometry specified by
-.I geom. XkbAddGeomProperty
-returns NULL if any of the parameters is empty or if it was not able to allocate
-space for the property. To allocate space for an arbitrary number of properties,
-use the
-.I XkbAllocGeomProps
-function.
-.SH STRUCTURES
-.LP
-.nf
-
- typedef struct _XkbProperty {
- char * name; /\(** property name */
- char * value; /\(** property value */
- } XkbPropertyRec,*XkbPropertyPtr;
-
-.fi
-.SH "SEE ALSO"
-.BR XkbAllocGeomProps (__libmansuffix__)
+.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the "Software"),
+.\" to deal in the Software without restriction, including without limitation
+.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
+.\" and/or sell copies of the Software, and to permit persons to whom the
+.\" Software is furnished to do so, subject to the following conditions:
+.\"
+.\" The above copyright notice and this permission notice (including the next
+.\" paragraph) shall be included in all copies or substantial portions of the
+.\" Software.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+.\" DEALINGS IN THE SOFTWARE.
+.\"
+.TH XkbAddGeomProperty __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbAddGeomProperty \- Add one property to an existing keyboard geometry
+description
+.SH SYNOPSIS
+.HP
+.B XkbPropertyPtr XkbAddGeomProperty
+.BI "(\^XkbGeometryPtr " "geom" "\^,"
+.BI "char *" "name" "\^,"
+.BI "char *" "value" "\^);"
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- geom
+geometry to be updated
+.TP
+.I \- name
+name of the new property
+.TP
+.I \- value
+value for the new property
+.SH DESCRIPTION
+.LP
+Xkb provides functions to add a single new element to the top-level keyboard
+geometry. In each case the
+.I num_ *
+fields of the corresponding structure is incremented by 1. These functions do
+not change
+.I sz_*
+unless there is no more room in the array. Some of these functions fill in the
+values of the element's structure from the arguments. For other functions, you
+must explicitly write code to fill the structure's elements.
+
+The top-level geometry description includes a list of
+.I geometry properties.
+A geometry property associates an arbitrary string with an equally arbitrary
+name. Programs that display images of keyboards can use geometry properties as
+hints, but they are not interpreted by Xkb. No other geometry structures refer
+to geometry properties.
+
+.I XkbAddGeomProperty
+adds one property with the specified
+.I name
+and
+.I value
+to the keyboard geometry specified by
+.I geom. XkbAddGeomProperty
+returns NULL if any of the parameters is empty or if it was not able to allocate
+space for the property. To allocate space for an arbitrary number of properties,
+use the
+.I XkbAllocGeomProps
+function.
+.SH STRUCTURES
+.LP
+.nf
+
+ typedef struct _XkbProperty {
+ char * name; /\(** property name */
+ char * value; /\(** property value */
+ } XkbPropertyRec,*XkbPropertyPtr;
+
+.fi
+.SH "SEE ALSO"
+.BR XkbAllocGeomProps (__libmansuffix__)
diff --git a/libX11/man/xkb/XkbAddGeomRow.man b/libX11/man/xkb/XkbAddGeomRow.man
index 41c6f7117..e400cb8f3 100644
--- a/libX11/man/xkb/XkbAddGeomRow.man
+++ b/libX11/man/xkb/XkbAddGeomRow.man
@@ -1,76 +1,76 @@
-.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
-.\"
-.\" Permission is hereby granted, free of charge, to any person obtaining a
-.\" copy of this software and associated documentation files (the "Software"),
-.\" to deal in the Software without restriction, including without limitation
-.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
-.\" and/or sell copies of the Software, and to permit persons to whom the
-.\" Software is furnished to do so, subject to the following conditions:
-.\"
-.\" The above copyright notice and this permission notice (including the next
-.\" paragraph) shall be included in all copies or substantial portions of the
-.\" Software.
-.\"
-.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-.\" DEALINGS IN THE SOFTWARE.
-.\"
-.TH XkbAddGeomRow __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
-.SH NAME
-XkbAddGeomRow \- Add a row to a section
-.SH SYNOPSIS
-.HP
-.B XkbRowPtr XkbAddGeomRow
-.BI "(\^XkbSectionPtr " "section" "\^,"
-.BI "int " "sz_keys" "\^);"
-.if n .ti +5n
-.if t .ti +.5i
-.SH ARGUMENTS
-.TP
-.I \- section
-section to be updated
-.TP
-.I \- sz_keys
-number of keys to be reserved
-.SH DESCRIPTION
-.LP
-Xkb provides functions to add a single new element to the top-level keyboard geometry. In each case the
-.I num_ *
-fields of the corresponding structure is incremented by 1. These functions do not change
-.I sz_*
-unless there is no more room in the array. Some of these functions fill in the values of the element's structure from the arguments. For other functions, you must explicitly write code to fill the structure's elements.
-
-The top-level geometry description includes a list of
-.I geometry properties.
-A geometry property associates an arbitrary string with an equally arbitrary name. Programs that display images of keyboards can use geometry properties as hints, but they are not interpreted by Xkb. No other geometry structures refer to geometry properties.
-
-One of the components of a keyboard geometry section is one or more rows of keys.
-.I XkbAddGeomRow
-adds one row to the specified
-.I section.
-The newly created row contains space for the number of keys specified in
-.I sz_keys.
-They are allocated and zeroed, but otherwise uninitialized.
-.I XkbAddGeomRow
-returns NULL if any of the parameters is empty or if it was not able to allocate space for the row. To allocate space for an arbitrary number of rows to a section, use the
-.I XkbAllocGeomRows
-function.
-.SH STRUCTURES
-.LP
-.nf
-typedef struct _XkbRow {
- short top;
- short left;
- unsigned short num_keys;
- unsigned short sz_keys;
- int vertical;
- XkbKeyPtr keys;
- XkbBoundsRec bounds;
-} XkbRowRec, *XkbRowPtr;
-.fi
-.SH "SEE ALSO"
-.BR XkbAllocGeomRows (__libmansuffix__)
+.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the "Software"),
+.\" to deal in the Software without restriction, including without limitation
+.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
+.\" and/or sell copies of the Software, and to permit persons to whom the
+.\" Software is furnished to do so, subject to the following conditions:
+.\"
+.\" The above copyright notice and this permission notice (including the next
+.\" paragraph) shall be included in all copies or substantial portions of the
+.\" Software.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+.\" DEALINGS IN THE SOFTWARE.
+.\"
+.TH XkbAddGeomRow __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbAddGeomRow \- Add a row to a section
+.SH SYNOPSIS
+.HP
+.B XkbRowPtr XkbAddGeomRow
+.BI "(\^XkbSectionPtr " "section" "\^,"
+.BI "int " "sz_keys" "\^);"
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- section
+section to be updated
+.TP
+.I \- sz_keys
+number of keys to be reserved
+.SH DESCRIPTION
+.LP
+Xkb provides functions to add a single new element to the top-level keyboard geometry. In each case the
+.I num_ *
+fields of the corresponding structure is incremented by 1. These functions do not change
+.I sz_*
+unless there is no more room in the array. Some of these functions fill in the values of the element's structure from the arguments. For other functions, you must explicitly write code to fill the structure's elements.
+
+The top-level geometry description includes a list of
+.I geometry properties.
+A geometry property associates an arbitrary string with an equally arbitrary name. Programs that display images of keyboards can use geometry properties as hints, but they are not interpreted by Xkb. No other geometry structures refer to geometry properties.
+
+One of the components of a keyboard geometry section is one or more rows of keys.
+.I XkbAddGeomRow
+adds one row to the specified
+.I section.
+The newly created row contains space for the number of keys specified in
+.I sz_keys.
+They are allocated and zeroed, but otherwise uninitialized.
+.I XkbAddGeomRow
+returns NULL if any of the parameters is empty or if it was not able to allocate space for the row. To allocate space for an arbitrary number of rows to a section, use the
+.I XkbAllocGeomRows
+function.
+.SH STRUCTURES
+.LP
+.nf
+typedef struct _XkbRow {
+ short top;
+ short left;
+ unsigned short num_keys;
+ unsigned short sz_keys;
+ int vertical;
+ XkbKeyPtr keys;
+ XkbBoundsRec bounds;
+} XkbRowRec, *XkbRowPtr;
+.fi
+.SH "SEE ALSO"
+.BR XkbAllocGeomRows (__libmansuffix__)
diff --git a/libX11/man/xkb/XkbAddGeomSection.man b/libX11/man/xkb/XkbAddGeomSection.man
index 1d658a583..5f0fac4cc 100644
--- a/libX11/man/xkb/XkbAddGeomSection.man
+++ b/libX11/man/xkb/XkbAddGeomSection.man
@@ -1,119 +1,119 @@
-.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
-.\"
-.\" Permission is hereby granted, free of charge, to any person obtaining a
-.\" copy of this software and associated documentation files (the "Software"),
-.\" to deal in the Software without restriction, including without limitation
-.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
-.\" and/or sell copies of the Software, and to permit persons to whom the
-.\" Software is furnished to do so, subject to the following conditions:
-.\"
-.\" The above copyright notice and this permission notice (including the next
-.\" paragraph) shall be included in all copies or substantial portions of the
-.\" Software.
-.\"
-.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-.\" DEALINGS IN THE SOFTWARE.
-.\"
-.TH XkbAddGeomSection __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
-.SH NAME
-XkbAddGeomSection \- Add one section to an existing keyboard geometry
-.SH SYNOPSIS
-.HP
-.B XkbSectionPtr XkbAddGeomSection
-.BI "(\^XkbGeometryPtr " "geom" "\^,"
-.BI "Atom " "name" "\^,"
-.BI "int " "sz_rows" "\^,"
-.BI "int " "sz_doodads" "\^,"
-.BI "int " "sz_overlays" "\^);"
-.if n .ti +5n
-.if t .ti +.5i
-.SH ARGUMENTS
-.TP
-.I \- geom
-geometry to be updated
-.TP
-.I \- name
-name of the new section
-.TP
-.I \- sz_rows
-number of rows to reserve in the section
-.TP
-.I \- sz_doodads
-number of doodads to reserve in the section
-.TP
-.I \- sz_overlays
-number of overlays to reserve in the section
-.SH DESCRIPTION
-.LP
-Xkb provides functions to add a single new element to the top-level keyboard
-geometry. In each case the
-.I num_ *
-fields of the corresponding structure is incremented by 1. These functions do
-not change
-.I sz_*
-unless there is no more room in the array. Some of these functions fill in the
-values of the element's structure from the arguments. For other functions, you
-must explicitly write code to fill the structure's elements.
-
-The top-level geometry description includes a list of
-.I geometry properties.
-A geometry property associates an arbitrary string with an equally arbitrary
-name. Programs that display images of keyboards can use geometry properties as
-hints, but they are not interpreted by Xkb. No other geometry structures refer
-to geometry properties.
-
-A keyboard geometry contains an arbitrary number of sections.
-.I XkbAddGeomSection
-adds one section to an existing keyboard geometry
-.I geom.
-The new section contains space for the number of rows, doodads, and overlays
-specified by
-.I sz_rows, sz_doodads,
-and
-.I sz_overlays.
-The new section is allocated and zeroed and given the name specified by
-.I name.
-If a section with name
-.I name
-already exists in the geometry, a pointer to the existing section is returned.
-.I XkbAddGeomSection
-returns NULL if any of the parameters is empty or if it was not able to allocate
-space for the section. To allocate space for an arbitrary number of sections to
-a geometry, use
-.I XkbAllocGeomSections.
-.SH STRUCTURES
-.LP
-.nf
-
-typedef struct _XkbSection {
- Atom name; /\(** section name */
- unsigned char priority; /\(** drawing priority, 0=>highest, 255=>lowest */
- short top; /\(** top coordinate of section origin */
- short left; /\(** left coordinate of row origin */
- unsigned short width; /\(** section width, in mm/10 */
- unsigned short height; /\(** section height, in mm/10 */
- short angle; /\(** angle of section rotation, counterclockwise */
- unsigned short num_rows; /\(** number of rows in the rows array */
- unsigned short num_doodads; /\(** number of doodads in the doodads array */
- unsigned short num_overlays; /\(** number of overlays in the overlays array */
- unsigned short sz_rows; /\(** size of the rows array */
- unsigned short sz_doodads; /\(** size of the doodads array */
- unsigned short sz_overlays; /\(** size of the overlays array */
- XkbRowPtr rows; /\(** section rows array */
- XkbDoodadPtr doodads; /\(** section doodads array */
- XkbBoundsRec bounds; /\(** bounding box for the section, before rotation*/
- XkbOverlayPtr overlays; /\(** section overlays array */
-} XkbSectionRec, *XkbSectionPtr;
-
-.fi
-.I top
-and
-.I left
-are the origin of the section, relative to the origin of the keyboard, in mm/10. angle is in 1/10 degrees.
-.SH "SEE ALSO"
-.BR XkbAllocGeomSections (__libmansuffix__)
+.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the "Software"),
+.\" to deal in the Software without restriction, including without limitation
+.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
+.\" and/or sell copies of the Software, and to permit persons to whom the
+.\" Software is furnished to do so, subject to the following conditions:
+.\"
+.\" The above copyright notice and this permission notice (including the next
+.\" paragraph) shall be included in all copies or substantial portions of the
+.\" Software.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+.\" DEALINGS IN THE SOFTWARE.
+.\"
+.TH XkbAddGeomSection __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbAddGeomSection \- Add one section to an existing keyboard geometry
+.SH SYNOPSIS
+.HP
+.B XkbSectionPtr XkbAddGeomSection
+.BI "(\^XkbGeometryPtr " "geom" "\^,"
+.BI "Atom " "name" "\^,"
+.BI "int " "sz_rows" "\^,"
+.BI "int " "sz_doodads" "\^,"
+.BI "int " "sz_overlays" "\^);"
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- geom
+geometry to be updated
+.TP
+.I \- name
+name of the new section
+.TP
+.I \- sz_rows
+number of rows to reserve in the section
+.TP
+.I \- sz_doodads
+number of doodads to reserve in the section
+.TP
+.I \- sz_overlays
+number of overlays to reserve in the section
+.SH DESCRIPTION
+.LP
+Xkb provides functions to add a single new element to the top-level keyboard
+geometry. In each case the
+.I num_ *
+fields of the corresponding structure is incremented by 1. These functions do
+not change
+.I sz_*
+unless there is no more room in the array. Some of these functions fill in the
+values of the element's structure from the arguments. For other functions, you
+must explicitly write code to fill the structure's elements.
+
+The top-level geometry description includes a list of
+.I geometry properties.
+A geometry property associates an arbitrary string with an equally arbitrary
+name. Programs that display images of keyboards can use geometry properties as
+hints, but they are not interpreted by Xkb. No other geometry structures refer
+to geometry properties.
+
+A keyboard geometry contains an arbitrary number of sections.
+.I XkbAddGeomSection
+adds one section to an existing keyboard geometry
+.I geom.
+The new section contains space for the number of rows, doodads, and overlays
+specified by
+.I sz_rows, sz_doodads,
+and
+.I sz_overlays.
+The new section is allocated and zeroed and given the name specified by
+.I name.
+If a section with name
+.I name
+already exists in the geometry, a pointer to the existing section is returned.
+.I XkbAddGeomSection
+returns NULL if any of the parameters is empty or if it was not able to allocate
+space for the section. To allocate space for an arbitrary number of sections to
+a geometry, use
+.I XkbAllocGeomSections.
+.SH STRUCTURES
+.LP
+.nf
+
+typedef struct _XkbSection {
+ Atom name; /\(** section name */
+ unsigned char priority; /\(** drawing priority, 0=>highest, 255=>lowest */
+ short top; /\(** top coordinate of section origin */
+ short left; /\(** left coordinate of row origin */
+ unsigned short width; /\(** section width, in mm/10 */
+ unsigned short height; /\(** section height, in mm/10 */
+ short angle; /\(** angle of section rotation, counterclockwise */
+ unsigned short num_rows; /\(** number of rows in the rows array */
+ unsigned short num_doodads; /\(** number of doodads in the doodads array */
+ unsigned short num_overlays; /\(** number of overlays in the overlays array */
+ unsigned short sz_rows; /\(** size of the rows array */
+ unsigned short sz_doodads; /\(** size of the doodads array */
+ unsigned short sz_overlays; /\(** size of the overlays array */
+ XkbRowPtr rows; /\(** section rows array */
+ XkbDoodadPtr doodads; /\(** section doodads array */
+ XkbBoundsRec bounds; /\(** bounding box for the section, before rotation*/
+ XkbOverlayPtr overlays; /\(** section overlays array */
+} XkbSectionRec, *XkbSectionPtr;
+
+.fi
+.I top
+and
+.I left
+are the origin of the section, relative to the origin of the keyboard, in mm/10. angle is in 1/10 degrees.
+.SH "SEE ALSO"
+.BR XkbAllocGeomSections (__libmansuffix__)
diff --git a/libX11/man/xkb/XkbAddGeomShape.man b/libX11/man/xkb/XkbAddGeomShape.man
index 3044eb9a3..115908156 100644
--- a/libX11/man/xkb/XkbAddGeomShape.man
+++ b/libX11/man/xkb/XkbAddGeomShape.man
@@ -1,89 +1,89 @@
-.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
-.\"
-.\" Permission is hereby granted, free of charge, to any person obtaining a
-.\" copy of this software and associated documentation files (the "Software"),
-.\" to deal in the Software without restriction, including without limitation
-.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
-.\" and/or sell copies of the Software, and to permit persons to whom the
-.\" Software is furnished to do so, subject to the following conditions:
-.\"
-.\" The above copyright notice and this permission notice (including the next
-.\" paragraph) shall be included in all copies or substantial portions of the
-.\" Software.
-.\"
-.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-.\" DEALINGS IN THE SOFTWARE.
-.\"
-.TH XkbAddGeomShape __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
-.SH NAME
-XkbAddGeomShape \- Add a shape to a keyboard geometry
-.SH SYNOPSIS
-.HP
-.B XkbShapePtr XkbAddGeomShape
-.BI "(\^XkbGeometryPtr " "geom" "\^,"
-.BI "Atom " "name" "\^,"
-.BI "int " "sz_outlines" "\^);"
-.if n .ti +5n
-.if t .ti +.5i
-.SH ARGUMENTS
-.TP
-.I \- geom
-geometry to be updated
-.TP
-.I \- name
-name of the new shape
-.TP
-.I \- sz_outlines
-number of outlines to be reserved
-.SH DESCRIPTION
-.LP
-Xkb provides functions to add a single new element to the top-level keyboard geometry. In each case the
-.I num_ *
-fields of the corresponding structure is incremented by 1. These functions do not change
-.I sz_*
-unless there is no more room in the array. Some of these functions fill in the values of the element's structure from the
-arguments. For other functions, you must explicitly write code to fill the structure's elements.
-
-The top-level geometry description includes a list of
-.I geometry properties.
-A geometry property associates an arbitrary string with an equally arbitrary name. Programs that display images of
-keyboards can use geometry properties as hints, but they are not interpreted by Xkb. No other geometry structures refer to
-geometry properties.
-
-A geometry contains an arbitrary number of shapes, each of which is made up of an arbitrary number of outlines.
-.I XkbAddGeomShape
-adds a shape to a geometry
-.I geom
-by allocating space for
-.I sz_outlines
-outlines for it and giving it the name specified by
-.I name.
-If a shape with name
-.I name
-already exists in the geometry, a pointer to the existing shape is returned.
-.I XkbAddGeomShape
-returns NULL if any of the parameters is empty or if it was not able to allocate space. To allocate space for an arbitrary
-number of geometry shapes, use
-.I XkbAllocGeomShapes.
-.SH STRUCTURES
-.LP
-.nf
-
- typedef struct _XkbShape {
- Atom name; /\(** shape's name */
- unsigned short num_outlines; /\(** number of outlines for the shape */
- unsigned short sz_outlines; /\(** size of the outlines array */
- XkbOutlinePtr outlines; /\(** array of outlines for the shape */
- XkbOutlinePtr approx; /\(** pointer into the array to the approximating outline */
- XkbOutlinePtr primary; /\(** pointer into the array to the primary outline */
- XkbBoundsRec bounds; /\(** bounding box for the shape; encompasses all outlines */
- } XkbShapeRec, *XkbShapePtr;
-
-.fi
-.SH "SEE ALSO"
-.BR XkbAllocGeomShapes (__libmansuffix__)
+.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the "Software"),
+.\" to deal in the Software without restriction, including without limitation
+.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
+.\" and/or sell copies of the Software, and to permit persons to whom the
+.\" Software is furnished to do so, subject to the following conditions:
+.\"
+.\" The above copyright notice and this permission notice (including the next
+.\" paragraph) shall be included in all copies or substantial portions of the
+.\" Software.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+.\" DEALINGS IN THE SOFTWARE.
+.\"
+.TH XkbAddGeomShape __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbAddGeomShape \- Add a shape to a keyboard geometry
+.SH SYNOPSIS
+.HP
+.B XkbShapePtr XkbAddGeomShape
+.BI "(\^XkbGeometryPtr " "geom" "\^,"
+.BI "Atom " "name" "\^,"
+.BI "int " "sz_outlines" "\^);"
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- geom
+geometry to be updated
+.TP
+.I \- name
+name of the new shape
+.TP
+.I \- sz_outlines
+number of outlines to be reserved
+.SH DESCRIPTION
+.LP
+Xkb provides functions to add a single new element to the top-level keyboard geometry. In each case the
+.I num_ *
+fields of the corresponding structure is incremented by 1. These functions do not change
+.I sz_*
+unless there is no more room in the array. Some of these functions fill in the values of the element's structure from the
+arguments. For other functions, you must explicitly write code to fill the structure's elements.
+
+The top-level geometry description includes a list of
+.I geometry properties.
+A geometry property associates an arbitrary string with an equally arbitrary name. Programs that display images of
+keyboards can use geometry properties as hints, but they are not interpreted by Xkb. No other geometry structures refer to
+geometry properties.
+
+A geometry contains an arbitrary number of shapes, each of which is made up of an arbitrary number of outlines.
+.I XkbAddGeomShape
+adds a shape to a geometry
+.I geom
+by allocating space for
+.I sz_outlines
+outlines for it and giving it the name specified by
+.I name.
+If a shape with name
+.I name
+already exists in the geometry, a pointer to the existing shape is returned.
+.I XkbAddGeomShape
+returns NULL if any of the parameters is empty or if it was not able to allocate space. To allocate space for an arbitrary
+number of geometry shapes, use
+.I XkbAllocGeomShapes.
+.SH STRUCTURES
+.LP
+.nf
+
+ typedef struct _XkbShape {
+ Atom name; /\(** shape's name */
+ unsigned short num_outlines; /\(** number of outlines for the shape */
+ unsigned short sz_outlines; /\(** size of the outlines array */
+ XkbOutlinePtr outlines; /\(** array of outlines for the shape */
+ XkbOutlinePtr approx; /\(** pointer into the array to the approximating outline */
+ XkbOutlinePtr primary; /\(** pointer into the array to the primary outline */
+ XkbBoundsRec bounds; /\(** bounding box for the shape; encompasses all outlines */
+ } XkbShapeRec, *XkbShapePtr;
+
+.fi
+.SH "SEE ALSO"
+.BR XkbAllocGeomShapes (__libmansuffix__)
diff --git a/libX11/man/xkb/XkbAddSymInterpret.man b/libX11/man/xkb/XkbAddSymInterpret.man
index c430f98d6..0171602f3 100644
--- a/libX11/man/xkb/XkbAddSymInterpret.man
+++ b/libX11/man/xkb/XkbAddSymInterpret.man
@@ -1,65 +1,65 @@
-.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
-.\"
-.\" Permission is hereby granted, free of charge, to any person obtaining a
-.\" copy of this software and associated documentation files (the "Software"),
-.\" to deal in the Software without restriction, including without limitation
-.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
-.\" and/or sell copies of the Software, and to permit persons to whom the
-.\" Software is furnished to do so, subject to the following conditions:
-.\"
-.\" The above copyright notice and this permission notice (including the next
-.\" paragraph) shall be included in all copies or substantial portions of the
-.\" Software.
-.\"
-.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-.\" DEALINGS IN THE SOFTWARE.
-.\"
-.TH XkbAddSymInterpret __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
-.SH NAME
-XkbAddSymInterpret \- Add a symbol interpretation to the list of symbol
-interpretations in an XkbCompatRec
-.SH SYNOPSIS
-.HP
-.B XkbSymInterpretPtr XkbAddSymInterpret
-.BI "(\^XkbDescPtr " "xkb" "\^,"
-.BI "XkbSymInterpretPtr " "si" "\^,"
-.BI "Bool " "updateMap" "\^,"
-.BI "XkbChangesPtr " "changes" "\^);"
-.if n .ti +5n
-.if t .ti +.5i
-.SH ARGUMENTS
-.TP
-.I \- xkb
-keyboard description to be updated
-.TP
-.I \- si
-symbol interpretation to be added
-.TP
-.I \- updateMap
-True=>apply compatibility map to keys
-.TP
-.I \- changes
-changes are put here
-.SH DESCRIPTION
-.LP
-.I XkbAddSymInterpret
-adds
-.I si
-to the list of symbol interpretations in
-.I xkb.
-If
-.I updateMap
-is True, it (re)applies the compatibility map to all of the keys on the
-keyboard. If
-.I changes
-is non-NULL, it reports the parts of the keyboard that were affected (unless
-.I updateMap
-is True, not much changes).
-.I XkbAddSymInterpret
-returns a pointer to the actual new symbol interpretation in the list or NULL if
-it failed.
+.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the "Software"),
+.\" to deal in the Software without restriction, including without limitation
+.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
+.\" and/or sell copies of the Software, and to permit persons to whom the
+.\" Software is furnished to do so, subject to the following conditions:
+.\"
+.\" The above copyright notice and this permission notice (including the next
+.\" paragraph) shall be included in all copies or substantial portions of the
+.\" Software.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+.\" DEALINGS IN THE SOFTWARE.
+.\"
+.TH XkbAddSymInterpret __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbAddSymInterpret \- Add a symbol interpretation to the list of symbol
+interpretations in an XkbCompatRec
+.SH SYNOPSIS
+.HP
+.B XkbSymInterpretPtr XkbAddSymInterpret
+.BI "(\^XkbDescPtr " "xkb" "\^,"
+.BI "XkbSymInterpretPtr " "si" "\^,"
+.BI "Bool " "updateMap" "\^,"
+.BI "XkbChangesPtr " "changes" "\^);"
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- xkb
+keyboard description to be updated
+.TP
+.I \- si
+symbol interpretation to be added
+.TP
+.I \- updateMap
+True=>apply compatibility map to keys
+.TP
+.I \- changes
+changes are put here
+.SH DESCRIPTION
+.LP
+.I XkbAddSymInterpret
+adds
+.I si
+to the list of symbol interpretations in
+.I xkb.
+If
+.I updateMap
+is True, it (re)applies the compatibility map to all of the keys on the
+keyboard. If
+.I changes
+is non-NULL, it reports the parts of the keyboard that were affected (unless
+.I updateMap
+is True, not much changes).
+.I XkbAddSymInterpret
+returns a pointer to the actual new symbol interpretation in the list or NULL if
+it failed.
diff --git a/libX11/man/xkb/XkbAllocClientMap.man b/libX11/man/xkb/XkbAllocClientMap.man
index 83a977164..1e2a19430 100644
--- a/libX11/man/xkb/XkbAllocClientMap.man
+++ b/libX11/man/xkb/XkbAllocClientMap.man
@@ -1,164 +1,164 @@
-'\" t
-.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
-.\"
-.\" Permission is hereby granted, free of charge, to any person obtaining a
-.\" copy of this software and associated documentation files (the "Software"),
-.\" to deal in the Software without restriction, including without limitation
-.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
-.\" and/or sell copies of the Software, and to permit persons to whom the
-.\" Software is furnished to do so, subject to the following conditions:
-.\"
-.\" The above copyright notice and this permission notice (including the next
-.\" paragraph) shall be included in all copies or substantial portions of the
-.\" Software.
-.\"
-.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-.\" DEALINGS IN THE SOFTWARE.
-.\"
-.TH XkbAllocClientMap __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
-.SH NAME
-XkbAllocClientMap \- Allocate and initialize an empty client map description
-record
-.SH SYNOPSIS
-.HP
-.B Status XkbAllocClientMap
-.BI "(\^XkbDescPtr " "xkb" "\^,"
-.BI "unsigned int " "which" "\^,"
-.BI "unsigned int " "type_count" "\^);"
-.if n .ti +5n
-.if t .ti +.5i
-.SH ARGUMENTS
-.TP
-.I \- xkb
-keyboard description in which to allocate client map
-.TP
-.I \- which
-mask selecting map components to allocate
-.TP
-.I \- type_count
-value of num_types field in map to be allocated
-.SH DESCRIPTION
-.LP
-Calling
-.I XkbGetMap
-should be sufficient for most applications to get client and server maps. As a
-result, most applications do not need to directly allocate client and server
-maps.
-
-If you change the number of key types or construct map components without
-loading the necessary components from the X server, do not allocate any map
-components directly using
-.I malloc
-or
-.I Xmalloc.
-Instead, use the Xkb allocators,
-.I XkbAllocClientMap,
-and
-.I XkbAllocServerMap.
-
-Similarly, use the Xkb destructors,
-.I XkbFreeClientMap,
-and
-.I XkbFreeServerMap
-instead of
-.I free
-or
-.I Xfree.
-
-.I XkbAllocClientMap
-allocates and initializes an empty client map in the
-.I map
-field of the keyboard description specified by
-.I xkb.
-The
-.I which
-parameter specifies the particular components of the client map structure to
-allocate and is a mask composed by a bitwise inclusive OR of one or more of the
-masks shown in Table 1.
-.bp
-.TS
-c s
-l l
-l lw(4i).
-Table 1 XkbAllocClientMap Masks
-_
-Mask Effect
-_
-XkbKeyTypesMask T{
-The type_count field specifies the number of entries to preallocate for the
-types field of the client map. If the type_count field is less than
-XkbNumRequiredTypes returns BadValue.
-T}
-.sp
-XkbKeySymsMask T{
-The min_key_code and max_key_code fields of the xkb parameter are used to
-allocate the syms and key_sym_map fields of the client map. The fields are
-allocated to contain the maximum number of entries necessary for max_key_code -
-min_key_code + 1 keys.
-T}
-.sp
-XkbModifierMapMask T{
-The min_key_code and max_key_code fields of the xkb parameter are used to
-allocate the modmap field of the client map. The field is allocated to contain
-the maximum number of entries necessary for max_key_code - min_key_code + 1
-keys.
-T}
-.TE
-
-NOTE: The
-.I min_key_code
-and
-.I max_key_code
-fields of the
-.I xkb
-parameter must be legal values if the XkbKeySymsMask or XkbModifierMapMask masks
-are set in the
-.I which
-parameter. If they are not valid,
-.I XkbAllocClientMap
-returns BadValue.
-
-If the client map of the keyboard description is not NULL, and any fields are
-already allocated in the client map,
-.I XkbAllocClientMap
-does not overwrite the existing values; it simply ignores that part of the
-request. The only exception is the
-.I types
-array. If
-.I type_count
-is greater than the current
-.I num_types
-field of the client map,
-.I XkbAllocClientMap
-resizes the
-.I types
-array and resets the
-.I num_types
-field accordingly.
-
-If
-.I XkbAllocClientMap
-is successful, it returns Success. Otherwise, it can return either BadMatch,
-BadAlloc, or BadValue errors.
-.SH DIAGNOSTICS
-.TP 15
-.B BadAlloc
-Unable to allocate storage
-.TP 15
-.B BadMatch
-A compatible version of Xkb was not available in the server or an argument has
-correct type and range, but is otherwise invalid
-.TP 15
-.B BadValue
-An argument is out of range
-.SH "SEE ALSO"
-.BR XkbAllocClientMap (__libmansuffix__),
-.BR XkbAllocServerMap (__libmansuffix__),
-.BR XkbFreeClientMap, (__libmansuffix__),
-.BR XkbFreeServerMap (__libmansuffix__),
-.BR XkbGetMap (__libmansuffix__)
+'\" t
+.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the "Software"),
+.\" to deal in the Software without restriction, including without limitation
+.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
+.\" and/or sell copies of the Software, and to permit persons to whom the
+.\" Software is furnished to do so, subject to the following conditions:
+.\"
+.\" The above copyright notice and this permission notice (including the next
+.\" paragraph) shall be included in all copies or substantial portions of the
+.\" Software.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+.\" DEALINGS IN THE SOFTWARE.
+.\"
+.TH XkbAllocClientMap __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbAllocClientMap \- Allocate and initialize an empty client map description
+record
+.SH SYNOPSIS
+.HP
+.B Status XkbAllocClientMap
+.BI "(\^XkbDescPtr " "xkb" "\^,"
+.BI "unsigned int " "which" "\^,"
+.BI "unsigned int " "type_count" "\^);"
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- xkb
+keyboard description in which to allocate client map
+.TP
+.I \- which
+mask selecting map components to allocate
+.TP
+.I \- type_count
+value of num_types field in map to be allocated
+.SH DESCRIPTION
+.LP
+Calling
+.I XkbGetMap
+should be sufficient for most applications to get client and server maps. As a
+result, most applications do not need to directly allocate client and server
+maps.
+
+If you change the number of key types or construct map components without
+loading the necessary components from the X server, do not allocate any map
+components directly using
+.I malloc
+or
+.I Xmalloc.
+Instead, use the Xkb allocators,
+.I XkbAllocClientMap,
+and
+.I XkbAllocServerMap.
+
+Similarly, use the Xkb destructors,
+.I XkbFreeClientMap,
+and
+.I XkbFreeServerMap
+instead of
+.I free
+or
+.I Xfree.
+
+.I XkbAllocClientMap
+allocates and initializes an empty client map in the
+.I map
+field of the keyboard description specified by
+.I xkb.
+The
+.I which
+parameter specifies the particular components of the client map structure to
+allocate and is a mask composed by a bitwise inclusive OR of one or more of the
+masks shown in Table 1.
+.bp
+.TS
+c s
+l l
+l lw(4i).
+Table 1 XkbAllocClientMap Masks
+_
+Mask Effect
+_
+XkbKeyTypesMask T{
+The type_count field specifies the number of entries to preallocate for the
+types field of the client map. If the type_count field is less than
+XkbNumRequiredTypes returns BadValue.
+T}
+.sp
+XkbKeySymsMask T{
+The min_key_code and max_key_code fields of the xkb parameter are used to
+allocate the syms and key_sym_map fields of the client map. The fields are
+allocated to contain the maximum number of entries necessary for max_key_code -
+min_key_code + 1 keys.
+T}
+.sp
+XkbModifierMapMask T{
+The min_key_code and max_key_code fields of the xkb parameter are used to
+allocate the modmap field of the client map. The field is allocated to contain
+the maximum number of entries necessary for max_key_code - min_key_code + 1
+keys.
+T}
+.TE
+
+NOTE: The
+.I min_key_code
+and
+.I max_key_code
+fields of the
+.I xkb
+parameter must be legal values if the XkbKeySymsMask or XkbModifierMapMask masks
+are set in the
+.I which
+parameter. If they are not valid,
+.I XkbAllocClientMap
+returns BadValue.
+
+If the client map of the keyboard description is not NULL, and any fields are
+already allocated in the client map,
+.I XkbAllocClientMap
+does not overwrite the existing values; it simply ignores that part of the
+request. The only exception is the
+.I types
+array. If
+.I type_count
+is greater than the current
+.I num_types
+field of the client map,
+.I XkbAllocClientMap
+resizes the
+.I types
+array and resets the
+.I num_types
+field accordingly.
+
+If
+.I XkbAllocClientMap
+is successful, it returns Success. Otherwise, it can return either BadMatch,
+BadAlloc, or BadValue errors.
+.SH DIAGNOSTICS
+.TP 15
+.B BadAlloc
+Unable to allocate storage
+.TP 15
+.B BadMatch
+A compatible version of Xkb was not available in the server or an argument has
+correct type and range, but is otherwise invalid
+.TP 15
+.B BadValue
+An argument is out of range
+.SH "SEE ALSO"
+.BR XkbAllocClientMap (__libmansuffix__),
+.BR XkbAllocServerMap (__libmansuffix__),
+.BR XkbFreeClientMap, (__libmansuffix__),
+.BR XkbFreeServerMap (__libmansuffix__),
+.BR XkbGetMap (__libmansuffix__)
diff --git a/libX11/man/xkb/XkbAllocCompatMap.man b/libX11/man/xkb/XkbAllocCompatMap.man
index 44d338b38..e20d20886 100644
--- a/libX11/man/xkb/XkbAllocCompatMap.man
+++ b/libX11/man/xkb/XkbAllocCompatMap.man
@@ -1,108 +1,108 @@
-'\" t
-.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
-.\"
-.\" Permission is hereby granted, free of charge, to any person obtaining a
-.\" copy of this software and associated documentation files (the "Software"),
-.\" to deal in the Software without restriction, including without limitation
-.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
-.\" and/or sell copies of the Software, and to permit persons to whom the
-.\" Software is furnished to do so, subject to the following conditions:
-.\"
-.\" The above copyright notice and this permission notice (including the next
-.\" paragraph) shall be included in all copies or substantial portions of the
-.\" Software.
-.\"
-.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-.\" DEALINGS IN THE SOFTWARE.
-.\"
-.TH XkbAllocCompatMap __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
-.SH NAME
-XkbAllocCompatMap \- Allocate a new compatibility map if you do not already have one available
-.SH SYNOPSIS
-.HP
-.B Status XkbAllocCompatMap
-.BI "(\^XkbDescPtr " "xkb" "\^,"
-.BI "unsigned int " "which" "\^,"
-.BI "unsigned int " "num_si" "\^);"
-.if n .ti +5n
-.if t .ti +.5i
-.SH ARGUMENTS
-.TP
-.I \- xkb
-keyboard description in which to allocate compat map
-.TP
-.I \- which
-mask of compatibility map components to allocate
-.TP
-.I \- num_si
-number of symbol interpretations to allocate
-.SH DESCRIPTION
-.LP
-.I xkb
-specifies the keyboard description for which compatibility maps are to be allocated. The compatibility map is the
-.I compat
-field in this structure.
-
-.I which
-specifies the compatibility map components to be allocated (see XkbGetCompatMap).
-.I which
-is an inclusive OR of the bits shown in Table 1.
-
-.TS
-c s s
-l l l.
-Table 1 Compatibility Map Component Masks
-_
-Mask Value Affecting
-_
-XkbSymInterpMask (1<<0) Symbol interpretations
-XkbGroupCompatMask (1<<1) Group maps
-XkbAllCompatMask (0x3) All compatibility map components
-.TE
-
-.I num_si
-specifies the total number of entries to allocate in the symbol interpretation vector
-.I (xkb.compat.sym_interpret).
-
-.I XkbAllocCompatMap
-returns Success if successful, BadMatch if
-.I xkb
-is NULL, or BadAlloc if errors are encountered when attempting to allocate storage.
-.SH STRUCTURES
-.LP
-.nf
-
- typedef struct {
- KeySym sym; /\(** keysym of interest or NULL */
- unsigned char flags; /\(** XkbSI_AutoRepeat, XkbSI_LockingKey */
- unsigned char match; /\(** specifies how mods is interpreted */
- unsigned char mods; /\(** modifier bits, correspond to eight real modifiers */
- unsigned char virtual_mod; /\(** 1 modifier to add to key virtual mod map */
- XkbAnyAction act; /\(** action to bind to symbol position on key */
- } XkbSymInterpretRec,*XkbSymInterpretPtr;
-
-.fi
-.SH DIAGNOSTICS
-.TP 15
-.B BadAlloc
-Unable to allocate storage
-.TP 15
-.B BadMatch
-A compatible version of Xkb was not available in the server or an argument has correct type and range, but is otherwise invalid
-.SH "SEE ALSO"
-.BR XkbGetCompatMap (__libmansuffix__)
-.SH NOTES
-.LP
-Note that symbol interpretations in a compatibility map (the
-.I sym_interpret
-vector of XkbSymInterpretRec structures) are also allocated using this same function. To ensure that there is sufficient space in the symbol interpretation vector for entries to be added, use
-.I XkbAllocCompatMap
-specifying
-.I which
-as XkbSymInterpretMask and the number of free symbol interpretations needed in
-.I num_si.
+'\" t
+.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the "Software"),
+.\" to deal in the Software without restriction, including without limitation
+.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
+.\" and/or sell copies of the Software, and to permit persons to whom the
+.\" Software is furnished to do so, subject to the following conditions:
+.\"
+.\" The above copyright notice and this permission notice (including the next
+.\" paragraph) shall be included in all copies or substantial portions of the
+.\" Software.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+.\" DEALINGS IN THE SOFTWARE.
+.\"
+.TH XkbAllocCompatMap __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbAllocCompatMap \- Allocate a new compatibility map if you do not already have one available
+.SH SYNOPSIS
+.HP
+.B Status XkbAllocCompatMap
+.BI "(\^XkbDescPtr " "xkb" "\^,"
+.BI "unsigned int " "which" "\^,"
+.BI "unsigned int " "num_si" "\^);"
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- xkb
+keyboard description in which to allocate compat map
+.TP
+.I \- which
+mask of compatibility map components to allocate
+.TP
+.I \- num_si
+number of symbol interpretations to allocate
+.SH DESCRIPTION
+.LP
+.I xkb
+specifies the keyboard description for which compatibility maps are to be allocated. The compatibility map is the
+.I compat
+field in this structure.
+
+.I which
+specifies the compatibility map components to be allocated (see XkbGetCompatMap).
+.I which
+is an inclusive OR of the bits shown in Table 1.
+
+.TS
+c s s
+l l l.
+Table 1 Compatibility Map Component Masks
+_
+Mask Value Affecting
+_
+XkbSymInterpMask (1<<0) Symbol interpretations
+XkbGroupCompatMask (1<<1) Group maps
+XkbAllCompatMask (0x3) All compatibility map components
+.TE
+
+.I num_si
+specifies the total number of entries to allocate in the symbol interpretation vector
+.I (xkb.compat.sym_interpret).
+
+.I XkbAllocCompatMap
+returns Success if successful, BadMatch if
+.I xkb
+is NULL, or BadAlloc if errors are encountered when attempting to allocate storage.
+.SH STRUCTURES
+.LP
+.nf
+
+ typedef struct {
+ KeySym sym; /\(** keysym of interest or NULL */
+ unsigned char flags; /\(** XkbSI_AutoRepeat, XkbSI_LockingKey */
+ unsigned char match; /\(** specifies how mods is interpreted */
+ unsigned char mods; /\(** modifier bits, correspond to eight real modifiers */
+ unsigned char virtual_mod; /\(** 1 modifier to add to key virtual mod map */
+ XkbAnyAction act; /\(** action to bind to symbol position on key */
+ } XkbSymInterpretRec,*XkbSymInterpretPtr;
+
+.fi
+.SH DIAGNOSTICS
+.TP 15
+.B BadAlloc
+Unable to allocate storage
+.TP 15
+.B BadMatch
+A compatible version of Xkb was not available in the server or an argument has correct type and range, but is otherwise invalid
+.SH "SEE ALSO"
+.BR XkbGetCompatMap (__libmansuffix__)
+.SH NOTES
+.LP
+Note that symbol interpretations in a compatibility map (the
+.I sym_interpret
+vector of XkbSymInterpretRec structures) are also allocated using this same function. To ensure that there is sufficient space in the symbol interpretation vector for entries to be added, use
+.I XkbAllocCompatMap
+specifying
+.I which
+as XkbSymInterpretMask and the number of free symbol interpretations needed in
+.I num_si.
diff --git a/libX11/man/xkb/XkbAllocControls.man b/libX11/man/xkb/XkbAllocControls.man
index d7eb362be..9e9b35566 100644
--- a/libX11/man/xkb/XkbAllocControls.man
+++ b/libX11/man/xkb/XkbAllocControls.man
@@ -1,138 +1,138 @@
-'\" t
-.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
-.\"
-.\" Permission is hereby granted, free of charge, to any person obtaining a
-.\" copy of this software and associated documentation files (the "Software"),
-.\" to deal in the Software without restriction, including without limitation
-.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
-.\" and/or sell copies of the Software, and to permit persons to whom the
-.\" Software is furnished to do so, subject to the following conditions:
-.\"
-.\" The above copyright notice and this permission notice (including the next
-.\" paragraph) shall be included in all copies or substantial portions of the
-.\" Software.
-.\"
-.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-.\" DEALINGS IN THE SOFTWARE.
-.\"
-.TH XkbAllocControls __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
-.SH NAME
-XkbAllocControls \- Allocates an XkbControlsRec structure in the XkbDescRec
-.SH SYNOPSIS
-.HP
-.B Status XkbAllocControls
-.BI "(\^XkbDescPtr " "xkb" "\^,"
-.BI "unsigned int " "which" "\^);"
-.if n .ti +5n
-.if t .ti +.5i
-.SH ARGUMENTS
-.TP
-.I \- xkb
-Xkb description in which to allocate ctrls rec
-.TP
-.I \- which
-mask of components of ctrls to allocate
-.SH DESCRIPTION
-.LP
-The need to allocate an XkbControlsRec structure seldom arises; Xkb creates one
-when an application calls
-.I XkbGetControls
-or a related function. For those situations where there is not an XkbControlsRec
-structure allocated in the XkbDescRec, allocate one by calling
-.I XkbAllocControls.
-
-.I XkbAllocControls
-allocates the
-.I ctrls
-field of the
-.I xkb
-parameter, initializes all fields to zero, and returns Success. If the
-.I ctrls
-field is not NULL,
-.I XkbAllocControls
-simply returns Success. If
-.I xkb
-is NULL,
-.I XkbAllocControls
-reports a BadMatch error. If the
-.I ctrls
-field could not be allocated, it reports a BadAlloc error.
-
-The
-.I which
-mask specifies the individual fields of the
-.I ctrls
-structure to be allocated and can contain any of the valid masks defined in
-Table 1.
-(SHOULD THIS COMMENT BE LEFT IN????)
-Because none of the currently existing controls have any structures associated
-with them, which is currently of little practical value in this call.
-
-Table 1 shows the actual values for the individual mask bits used to select
-controls for
-modification and to enable and disable the control. Note that the same mask bit
-is used to
-specify general modifications to the parameters used to configure the control
-(which), and to
-enable and disable the control (enabled_ctrls). The anomalies in the table (no
-"ok" in column)
-are for controls that have no configurable attributes; and for controls that are
-not boolean
-controls and therefore cannot be enabled or disabled.
-
-.TS
-c s s s
-l l l l
-l l l l
-l l l l.
-Table 1 Controls Mask Bits
-_
-Mask Bit which or enabled Value
- changed_ctrls _ctrls
-_
-XkbRepeatKeysMask ok ok (1L<<0)
-XkbSlowKeysMask ok ok (1L<<1)
-XkbBounceKeysMask ok ok (1L<<2)
-XkbStickyKeysMask ok ok (1L<<3)
-XkbMouseKeysMask ok ok (1L<<4)
-XkbMouseKeysAccelMask ok ok (1L<<5)
-XkbAccessXKeysMask ok ok (1L<<6)
-XkbAccessXTimeoutMask ok ok (1L<<7)
-XkbAccessXFeedbackMask ok ok (1L<<8)
-XkbAudibleBellMask ok (1L<<9)
-XkbOverlay1Mask ok (1L<<10)
-XkbOverlay2Mask ok (1L<<11)
-XkbIgnoreGroupLockMask ok (1L<<12)
-XkbGroupsWrapMask ok (1L<<27)
-XkbInternalModsMask ok (1L<<28)
-XkbIgnoreLockModsMask ok (1L<<29)
-XkbPerKeyRepeatMask ok (1L<<30)
-XkbControlsEnabledMask ok (1L<<31)
-XkbAccessXOptionsMask ok ok (XkbStickyKeysMask |
- XkbAccessXFeedbackMask)
-XkbAllBooleanCtrlsMask ok (0x00001FFF)
-XkbAllControlsMask ok (0xF8001FFF)
-.TE
-.nh
-.SH "RETURN VALUES"
-.TP 15
-SUCCESS
-allocates the ctrls field of the xkb parameter, initializes all fields to zero
-.sp
-.in 20
-the ctrls field is not NULL
-.SH DIAGNOSTICS
-.TP 15
-.B BadAlloc
-Unable to allocate storage
-.TP 15
-.B BadMatch
-A compatible version of Xkb was not available in the server or an argument has
-correct type and range, but is otherwise invalid
-.SH "SEE ALSO"
-.BR XkbGetControls (__libmansuffix__)
+'\" t
+.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the "Software"),
+.\" to deal in the Software without restriction, including without limitation
+.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
+.\" and/or sell copies of the Software, and to permit persons to whom the
+.\" Software is furnished to do so, subject to the following conditions:
+.\"
+.\" The above copyright notice and this permission notice (including the next
+.\" paragraph) shall be included in all copies or substantial portions of the
+.\" Software.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+.\" DEALINGS IN THE SOFTWARE.
+.\"
+.TH XkbAllocControls __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbAllocControls \- Allocates an XkbControlsRec structure in the XkbDescRec
+.SH SYNOPSIS
+.HP
+.B Status XkbAllocControls
+.BI "(\^XkbDescPtr " "xkb" "\^,"
+.BI "unsigned int " "which" "\^);"
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- xkb
+Xkb description in which to allocate ctrls rec
+.TP
+.I \- which
+mask of components of ctrls to allocate
+.SH DESCRIPTION
+.LP
+The need to allocate an XkbControlsRec structure seldom arises; Xkb creates one
+when an application calls
+.I XkbGetControls
+or a related function. For those situations where there is not an XkbControlsRec
+structure allocated in the XkbDescRec, allocate one by calling
+.I XkbAllocControls.
+
+.I XkbAllocControls
+allocates the
+.I ctrls
+field of the
+.I xkb
+parameter, initializes all fields to zero, and returns Success. If the
+.I ctrls
+field is not NULL,
+.I XkbAllocControls
+simply returns Success. If
+.I xkb
+is NULL,
+.I XkbAllocControls
+reports a BadMatch error. If the
+.I ctrls
+field could not be allocated, it reports a BadAlloc error.
+
+The
+.I which
+mask specifies the individual fields of the
+.I ctrls
+structure to be allocated and can contain any of the valid masks defined in
+Table 1.
+(SHOULD THIS COMMENT BE LEFT IN????)
+Because none of the currently existing controls have any structures associated
+with them, which is currently of little practical value in this call.
+
+Table 1 shows the actual values for the individual mask bits used to select
+controls for
+modification and to enable and disable the control. Note that the same mask bit
+is used to
+specify general modifications to the parameters used to configure the control
+(which), and to
+enable and disable the control (enabled_ctrls). The anomalies in the table (no
+"ok" in column)
+are for controls that have no configurable attributes; and for controls that are
+not boolean
+controls and therefore cannot be enabled or disabled.
+
+.TS
+c s s s
+l l l l
+l l l l
+l l l l.
+Table 1 Controls Mask Bits
+_
+Mask Bit which or enabled Value
+ changed_ctrls _ctrls
+_
+XkbRepeatKeysMask ok ok (1L<<0)
+XkbSlowKeysMask ok ok (1L<<1)
+XkbBounceKeysMask ok ok (1L<<2)
+XkbStickyKeysMask ok ok (1L<<3)
+XkbMouseKeysMask ok ok (1L<<4)
+XkbMouseKeysAccelMask ok ok (1L<<5)
+XkbAccessXKeysMask ok ok (1L<<6)
+XkbAccessXTimeoutMask ok ok (1L<<7)
+XkbAccessXFeedbackMask ok ok (1L<<8)
+XkbAudibleBellMask ok (1L<<9)
+XkbOverlay1Mask ok (1L<<10)
+XkbOverlay2Mask ok (1L<<11)
+XkbIgnoreGroupLockMask ok (1L<<12)
+XkbGroupsWrapMask ok (1L<<27)
+XkbInternalModsMask ok (1L<<28)
+XkbIgnoreLockModsMask ok (1L<<29)
+XkbPerKeyRepeatMask ok (1L<<30)
+XkbControlsEnabledMask ok (1L<<31)
+XkbAccessXOptionsMask ok ok (XkbStickyKeysMask |
+ XkbAccessXFeedbackMask)
+XkbAllBooleanCtrlsMask ok (0x00001FFF)
+XkbAllControlsMask ok (0xF8001FFF)
+.TE
+.nh
+.SH "RETURN VALUES"
+.TP 15
+SUCCESS
+allocates the ctrls field of the xkb parameter, initializes all fields to zero
+.sp
+.in 20
+the ctrls field is not NULL
+.SH DIAGNOSTICS
+.TP 15
+.B BadAlloc
+Unable to allocate storage
+.TP 15
+.B BadMatch
+A compatible version of Xkb was not available in the server or an argument has
+correct type and range, but is otherwise invalid
+.SH "SEE ALSO"
+.BR XkbGetControls (__libmansuffix__)
diff --git a/libX11/man/xkb/XkbAllocDeviceInfo.man b/libX11/man/xkb/XkbAllocDeviceInfo.man
index 6bc2fb0a6..a4cb2a6ec 100644
--- a/libX11/man/xkb/XkbAllocDeviceInfo.man
+++ b/libX11/man/xkb/XkbAllocDeviceInfo.man
@@ -1,100 +1,100 @@
-'\" t
-.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
-.\"
-.\" Permission is hereby granted, free of charge, to any person obtaining a
-.\" copy of this software and associated documentation files (the "Software"),
-.\" to deal in the Software without restriction, including without limitation
-.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
-.\" and/or sell copies of the Software, and to permit persons to whom the
-.\" Software is furnished to do so, subject to the following conditions:
-.\"
-.\" The above copyright notice and this permission notice (including the next
-.\" paragraph) shall be included in all copies or substantial portions of the
-.\" Software.
-.\"
-.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-.\" DEALINGS IN THE SOFTWARE.
-.\"
-.TH XkbAllocDeviceInfo __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
-.SH NAME
-XkbAllocDeviceInfo \- Obtain an XkbDeviceInfoRec structure
-.SH SYNOPSIS
-.HP
-.B XkbDeviceInfoPtr XkbAllocDeviceInfo
-.BI "(\^unsigned int " "device_spec" "\^,"
-.BI "unsigned int " "n_buttons" "\^,"
-.BI "unsigned int " "sz_leds" "\^);"
-.if n .ti +5n
-.if t .ti +.5i
-.SH ARGUMENTS
-.TP
-.I \- device_spec
-device ID with which structure will be used
-.TP
-.I \- n_buttons
-number of button actions to allocate space for
-.TP
-.I \- sz_leds
-number of LED feedbacks to allocate space for
-.SH DESCRIPTION
-.LP
-.I XkbAllocDeviceInfo
-allocates space for an XkbDeviceInfoRec structure and initializes that structure's
-.I device_spec
-field with the device ID specified by
-.I device_spec.
-If
-.I n_buttons
-is nonzero,
-.I n_buttons
-XkbActions are linked into the XkbDeviceInfoRec structure and initialized to zero. If
-.I sz_leds
-is nonzero,
-.I sz_leds
-XkbDeviceLedInfoRec structures are also allocated and linked into the XkbDeviceInfoRec structure. If
-you request XkbDeviceLedInfoRec structures be allocated using this request, you must initialize them
-explicitly.
-
-To obtain an XkbDeviceLedInfoRec structure, use
-.I XkbAllocDeviceLedInfo.
-.SH STRUCTURES
-.LP
-Information about X Input Extension devices is transferred between a client program and the Xkb
-extension in an XkbDeviceInfoRec structure:
-.nf
-
- typedef struct {
- char * name; /\(** name for device */
- Atom type; /\(** name for class of devices */
- unsigned short device_spec; /\(** device of interest */
- Bool has_own_state; /\(** True=>this device has its own state */
- unsigned short supported; /\(** bits indicating supported capabilities */
- unsigned short unsupported; /\(** bits indicating unsupported capabilities */
- unsigned short num_btns; /\(** number of entries in btn_acts */
- XkbAction * btn_acts; /\(** button actions */
- unsigned short sz_leds; /\(** total number of entries in LEDs vector */
- unsigned short num_leds; /\(** number of valid entries in LEDs vector */
- unsigned short dflt_kbd_fb; /\(** input extension ID of default (core kbd) indicator */
- unsigned short dflt_led_fb; /\(** input extension ID of default indicator feedback */
- XkbDeviceLedInfoPtr leds; /\(** LED descriptions */
- } XkbDeviceInfoRec, *XkbDeviceInfoPtr;
-
-
- typedef struct {
- unsigned short led_class; /\(** class for this LED device*/
- unsigned short led_id; /\(** ID for this LED device */
- unsigned int phys_indicators; /\(** bits for which LEDs physically present */
- unsigned int maps_present; /\(** bits for which LEDs have maps in maps */
- unsigned int names_present; /\(** bits for which LEDs are in names */
- unsigned int state; /\(** 1 bit => corresponding LED is on */
- Atom names[XkbNumIndicators]; /\(** names for LEDs */
- XkbIndicatorMapRec maps; /\(** indicator maps for each LED */
- } XkbDeviceLedInfoRec, *XkbDeviceLedInfoPtr;
-.fi
-.SH "SEE ALSO"
-.BR XkbAllocDeviceLedInfo (__libmansuffix__)
+'\" t
+.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the "Software"),
+.\" to deal in the Software without restriction, including without limitation
+.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
+.\" and/or sell copies of the Software, and to permit persons to whom the
+.\" Software is furnished to do so, subject to the following conditions:
+.\"
+.\" The above copyright notice and this permission notice (including the next
+.\" paragraph) shall be included in all copies or substantial portions of the
+.\" Software.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+.\" DEALINGS IN THE SOFTWARE.
+.\"
+.TH XkbAllocDeviceInfo __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbAllocDeviceInfo \- Obtain an XkbDeviceInfoRec structure
+.SH SYNOPSIS
+.HP
+.B XkbDeviceInfoPtr XkbAllocDeviceInfo
+.BI "(\^unsigned int " "device_spec" "\^,"
+.BI "unsigned int " "n_buttons" "\^,"
+.BI "unsigned int " "sz_leds" "\^);"
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- device_spec
+device ID with which structure will be used
+.TP
+.I \- n_buttons
+number of button actions to allocate space for
+.TP
+.I \- sz_leds
+number of LED feedbacks to allocate space for
+.SH DESCRIPTION
+.LP
+.I XkbAllocDeviceInfo
+allocates space for an XkbDeviceInfoRec structure and initializes that structure's
+.I device_spec
+field with the device ID specified by
+.I device_spec.
+If
+.I n_buttons
+is nonzero,
+.I n_buttons
+XkbActions are linked into the XkbDeviceInfoRec structure and initialized to zero. If
+.I sz_leds
+is nonzero,
+.I sz_leds
+XkbDeviceLedInfoRec structures are also allocated and linked into the XkbDeviceInfoRec structure. If
+you request XkbDeviceLedInfoRec structures be allocated using this request, you must initialize them
+explicitly.
+
+To obtain an XkbDeviceLedInfoRec structure, use
+.I XkbAllocDeviceLedInfo.
+.SH STRUCTURES
+.LP
+Information about X Input Extension devices is transferred between a client program and the Xkb
+extension in an XkbDeviceInfoRec structure:
+.nf
+
+ typedef struct {
+ char * name; /\(** name for device */
+ Atom type; /\(** name for class of devices */
+ unsigned short device_spec; /\(** device of interest */
+ Bool has_own_state; /\(** True=>this device has its own state */
+ unsigned short supported; /\(** bits indicating supported capabilities */
+ unsigned short unsupported; /\(** bits indicating unsupported capabilities */
+ unsigned short num_btns; /\(** number of entries in btn_acts */
+ XkbAction * btn_acts; /\(** button actions */
+ unsigned short sz_leds; /\(** total number of entries in LEDs vector */
+ unsigned short num_leds; /\(** number of valid entries in LEDs vector */
+ unsigned short dflt_kbd_fb; /\(** input extension ID of default (core kbd) indicator */
+ unsigned short dflt_led_fb; /\(** input extension ID of default indicator feedback */
+ XkbDeviceLedInfoPtr leds; /\(** LED descriptions */
+ } XkbDeviceInfoRec, *XkbDeviceInfoPtr;
+
+
+ typedef struct {
+ unsigned short led_class; /\(** class for this LED device*/
+ unsigned short led_id; /\(** ID for this LED device */
+ unsigned int phys_indicators; /\(** bits for which LEDs physically present */
+ unsigned int maps_present; /\(** bits for which LEDs have maps in maps */
+ unsigned int names_present; /\(** bits for which LEDs are in names */
+ unsigned int state; /\(** 1 bit => corresponding LED is on */
+ Atom names[XkbNumIndicators]; /\(** names for LEDs */
+ XkbIndicatorMapRec maps; /\(** indicator maps for each LED */
+ } XkbDeviceLedInfoRec, *XkbDeviceLedInfoPtr;
+.fi
+.SH "SEE ALSO"
+.BR XkbAllocDeviceLedInfo (__libmansuffix__)
diff --git a/libX11/man/xkb/XkbAllocDeviceLedInfo.man b/libX11/man/xkb/XkbAllocDeviceLedInfo.man
index 5db22d616..76428e5cb 100644
--- a/libX11/man/xkb/XkbAllocDeviceLedInfo.man
+++ b/libX11/man/xkb/XkbAllocDeviceLedInfo.man
@@ -1,113 +1,113 @@
-'\" t
-.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
-.\"
-.\" Permission is hereby granted, free of charge, to any person obtaining a
-.\" copy of this software and associated documentation files (the "Software"),
-.\" to deal in the Software without restriction, including without limitation
-.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
-.\" and/or sell copies of the Software, and to permit persons to whom the
-.\" Software is furnished to do so, subject to the following conditions:
-.\"
-.\" The above copyright notice and this permission notice (including the next
-.\" paragraph) shall be included in all copies or substantial portions of the
-.\" Software.
-.\"
-.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-.\" DEALINGS IN THE SOFTWARE.
-.\"
-.TH XkbAllocDeviceLedInfo __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
-.SH NAME
-XkbAllocDeviceLedInfo \- Obtain an XkbDeviceLedInfoRec structure
-.SH SYNOPSIS
-.HP
-.B Status XkbAllocDeviceLedInfo
-.BI "(\^XkbDeviceInfoPtr " "device_info" "\^,"
-.BI "int " "num_needed" "\^);"
-.if n .ti +5n
-.if t .ti +.5i
-.SH ARGUMENTS
-.TP
-.I \- device_info
-structure in which to allocate LED space
-.TP
-.I \- num_needed
-number of indicators to allocate space for
-.SH DESCRIPTION
-.LP
-.I XkbAllocDeviceLedInfo
-allocates space for an XkbDeviceLedInfoRec and places it in
-.I device_info.
-If
-.I num_needed
-is nonzero,
-.I num_needed
-XkbIndicatorMapRec structures are also allocated and linked into the XkbDeviceLedInfoRec structure. If you request XkbIndicatorMapRec structures be allocated using this request, you must initialize them explicitly. All other fields are initialized to zero.
-
-To initialize an XkbDeviceLedInfoRec structure, use
-.I XkbAddDeviceLedInfo.
-.SH STRUCTURES
-.LP
-Information about X Input Extension devices is transferred between a client program and the Xkb
-extension in an XkbDeviceInfoRec structure:
-.nf
-
- typedef struct {
- char * name; /\(** name for device */
- Atom type; /\(** name for class of devices */
- unsigned short device_spec; /\(** device of interest */
- Bool has_own_state; /\(** True=>this device has its own state */
- unsigned short supported; /\(** bits indicating supported capabilities */
- unsigned short unsupported; /\(** bits indicating unsupported capabilities */
- unsigned short num_btns; /\(** number of entries in btn_acts */
- XkbAction * btn_acts; /\(** button actions */
- unsigned short sz_leds; /\(** total number of entries in LEDs vector */
- unsigned short num_leds; /\(** number of valid entries in LEDs vector */
- unsigned short dflt_kbd_fb; /\(** input extension ID of default (core kbd) indicator */
- unsigned short dflt_led_fb; /\(** input extension ID of default indicator feedback */
- XkbDeviceLedInfoPtr leds; /\(** LED descriptions */
- } XkbDeviceInfoRec, *XkbDeviceInfoPtr;
-
-
- typedef struct {
- unsigned short led_class; /\(** class for this LED device*/
- unsigned short led_id; /\(** ID for this LED device */
- unsigned int phys_indicators; /\(** bits for which LEDs physically present */
- unsigned int maps_present; /\(** bits for which LEDs have maps in maps */
- unsigned int names_present; /\(** bits for which LEDs are in names */
- unsigned int state; /\(** 1 bit => corresponding LED is on */
- Atom names[XkbNumIndicators]; /\(** names for LEDs */
- XkbIndicatorMapRec maps; /\(** indicator maps for each LED */
- } XkbDeviceLedInfoRec, *XkbDeviceLedInfoPtr;
-
-.fi
-Each indicator has its own set of attributes that specify whether clients can explicitly set its state and whether it tracks the keyboard state. The attributes of each indicator are held in the maps array, which is an array of XkbIndicatorRec structures:
-.nf
-
- typedef struct {
- unsigned char flags; /\(** how the indicator can be changed */
- unsigned char which_groups; /\(** match criteria for groups */
- unsigned char groups; /\(** which keyboard groups the indicator watches */
- unsigned char which_mods; /\(** match criteria for modifiers */
- XkbModsRec mods; /\(** which modifiers the indicator watches */
- unsigned int ctrls; /\(** which controls the indicator watches */
- } XkbIndicatorMapRec, *XkbIndicatorMapPtr;
-
-.fi
-This indicator map specifies for each indicator:
-
-.IP \(bu 5
-The conditions under which the keyboard modifier state affects the indicator
-.IP \(bu 5
-The conditions under which the keyboard group state affects the indicator
-.IP \(bu 5
-The conditions under which the state of the boolean controls affects the indicator
-.IP \(bu 5
-The effect (if any) of attempts to explicitly change the state of the indicator using the functions XkbSetControls or XChangeKeyboardControl
-.SH "SEE ALSO"
-.BR XkbAddDeviceLedInfo (__libmansuffix__),
-.BR XkbSetControls (__libmansuffix__)
+'\" t
+.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the "Software"),
+.\" to deal in the Software without restriction, including without limitation
+.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
+.\" and/or sell copies of the Software, and to permit persons to whom the
+.\" Software is furnished to do so, subject to the following conditions:
+.\"
+.\" The above copyright notice and this permission notice (including the next
+.\" paragraph) shall be included in all copies or substantial portions of the
+.\" Software.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+.\" DEALINGS IN THE SOFTWARE.
+.\"
+.TH XkbAllocDeviceLedInfo __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbAllocDeviceLedInfo \- Obtain an XkbDeviceLedInfoRec structure
+.SH SYNOPSIS
+.HP
+.B Status XkbAllocDeviceLedInfo
+.BI "(\^XkbDeviceInfoPtr " "device_info" "\^,"
+.BI "int " "num_needed" "\^);"
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- device_info
+structure in which to allocate LED space
+.TP
+.I \- num_needed
+number of indicators to allocate space for
+.SH DESCRIPTION
+.LP
+.I XkbAllocDeviceLedInfo
+allocates space for an XkbDeviceLedInfoRec and places it in
+.I device_info.
+If
+.I num_needed
+is nonzero,
+.I num_needed
+XkbIndicatorMapRec structures are also allocated and linked into the XkbDeviceLedInfoRec structure. If you request XkbIndicatorMapRec structures be allocated using this request, you must initialize them explicitly. All other fields are initialized to zero.
+
+To initialize an XkbDeviceLedInfoRec structure, use
+.I XkbAddDeviceLedInfo.
+.SH STRUCTURES
+.LP
+Information about X Input Extension devices is transferred between a client program and the Xkb
+extension in an XkbDeviceInfoRec structure:
+.nf
+
+ typedef struct {
+ char * name; /\(** name for device */
+ Atom type; /\(** name for class of devices */
+ unsigned short device_spec; /\(** device of interest */
+ Bool has_own_state; /\(** True=>this device has its own state */
+ unsigned short supported; /\(** bits indicating supported capabilities */
+ unsigned short unsupported; /\(** bits indicating unsupported capabilities */
+ unsigned short num_btns; /\(** number of entries in btn_acts */
+ XkbAction * btn_acts; /\(** button actions */
+ unsigned short sz_leds; /\(** total number of entries in LEDs vector */
+ unsigned short num_leds; /\(** number of valid entries in LEDs vector */
+ unsigned short dflt_kbd_fb; /\(** input extension ID of default (core kbd) indicator */
+ unsigned short dflt_led_fb; /\(** input extension ID of default indicator feedback */
+ XkbDeviceLedInfoPtr leds; /\(** LED descriptions */
+ } XkbDeviceInfoRec, *XkbDeviceInfoPtr;
+
+
+ typedef struct {
+ unsigned short led_class; /\(** class for this LED device*/
+ unsigned short led_id; /\(** ID for this LED device */
+ unsigned int phys_indicators; /\(** bits for which LEDs physically present */
+ unsigned int maps_present; /\(** bits for which LEDs have maps in maps */
+ unsigned int names_present; /\(** bits for which LEDs are in names */
+ unsigned int state; /\(** 1 bit => corresponding LED is on */
+ Atom names[XkbNumIndicators]; /\(** names for LEDs */
+ XkbIndicatorMapRec maps; /\(** indicator maps for each LED */
+ } XkbDeviceLedInfoRec, *XkbDeviceLedInfoPtr;
+
+.fi
+Each indicator has its own set of attributes that specify whether clients can explicitly set its state and whether it tracks the keyboard state. The attributes of each indicator are held in the maps array, which is an array of XkbIndicatorRec structures:
+.nf
+
+ typedef struct {
+ unsigned char flags; /\(** how the indicator can be changed */
+ unsigned char which_groups; /\(** match criteria for groups */
+ unsigned char groups; /\(** which keyboard groups the indicator watches */
+ unsigned char which_mods; /\(** match criteria for modifiers */
+ XkbModsRec mods; /\(** which modifiers the indicator watches */
+ unsigned int ctrls; /\(** which controls the indicator watches */
+ } XkbIndicatorMapRec, *XkbIndicatorMapPtr;
+
+.fi
+This indicator map specifies for each indicator:
+
+.IP \(bu 5
+The conditions under which the keyboard modifier state affects the indicator
+.IP \(bu 5
+The conditions under which the keyboard group state affects the indicator
+.IP \(bu 5
+The conditions under which the state of the boolean controls affects the indicator
+.IP \(bu 5
+The effect (if any) of attempts to explicitly change the state of the indicator using the functions XkbSetControls or XChangeKeyboardControl
+.SH "SEE ALSO"
+.BR XkbAddDeviceLedInfo (__libmansuffix__),
+.BR XkbSetControls (__libmansuffix__)
diff --git a/libX11/man/xkb/XkbAllocGeomColors.man b/libX11/man/xkb/XkbAllocGeomColors.man
index 7bba51de3..f3224e173 100644
--- a/libX11/man/xkb/XkbAllocGeomColors.man
+++ b/libX11/man/xkb/XkbAllocGeomColors.man
@@ -1,70 +1,70 @@
-.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
-.\"
-.\" Permission is hereby granted, free of charge, to any person obtaining a
-.\" copy of this software and associated documentation files (the "Software"),
-.\" to deal in the Software without restriction, including without limitation
-.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
-.\" and/or sell copies of the Software, and to permit persons to whom the
-.\" Software is furnished to do so, subject to the following conditions:
-.\"
-.\" The above copyright notice and this permission notice (including the next
-.\" paragraph) shall be included in all copies or substantial portions of the
-.\" Software.
-.\"
-.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-.\" DEALINGS IN THE SOFTWARE.
-.\"
-.TH XkbAllocGeomColors __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
-.SH NAME
-XkbAllocGeomColors \- Allocate geometry colors
-.SH SYNOPSIS
-.HP
-.B Status XkbAllocGeomColors
-.BI "(\^XkbGeometryPtr " "geom" "\^,"
-.BI "int " "num_needed" "\^);"
-.if n .ti +5n
-.if t .ti +.5i
-.SH ARGUMENTS
-.TP
-.I \- geom
-geometry for which colors should be allocated
-.TP
-.I \- num_needed
-number of new colors required
-.SH DESCRIPTION
-.LP
-Xkb provides a number of functions to allocate and free subcomponents of a
-keyboard geometry. Use these functions to create or modify keyboard geometries.
-Note that these functions merely allocate space for the new element(s), and it
-is up to you to fill in the values explicitly in your code. These allocation
-functions increase
-.I sz_*
-but never touch
-.I num_*
-(unless there is an allocation failure, in which case they reset both
-.I sz_*
-and
-.I num_*
-to zero). These functions return Success if they succeed, BadAlloc if they are
-not able to allocate space, or BadValue if a parameter is not as expected.
-
-.I XkbAllocGeomColors
-allocates space for
-.I num_needed
-colors and adds them to the specified geometry
-.I geom.
-A color name is a string whose interpretation is not specified by Xkb. All other
-geometry data structures refer to colors using their indices in this global list
-or pointers to colors in this list.
-.SH DIAGNOSTICS
-.TP 15
-.B BadAlloc
-Unable to allocate storage
-.TP 15
-.B BadValue
-An argument is out of range
+.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the "Software"),
+.\" to deal in the Software without restriction, including without limitation
+.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
+.\" and/or sell copies of the Software, and to permit persons to whom the
+.\" Software is furnished to do so, subject to the following conditions:
+.\"
+.\" The above copyright notice and this permission notice (including the next
+.\" paragraph) shall be included in all copies or substantial portions of the
+.\" Software.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+.\" DEALINGS IN THE SOFTWARE.
+.\"
+.TH XkbAllocGeomColors __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbAllocGeomColors \- Allocate geometry colors
+.SH SYNOPSIS
+.HP
+.B Status XkbAllocGeomColors
+.BI "(\^XkbGeometryPtr " "geom" "\^,"
+.BI "int " "num_needed" "\^);"
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- geom
+geometry for which colors should be allocated
+.TP
+.I \- num_needed
+number of new colors required
+.SH DESCRIPTION
+.LP
+Xkb provides a number of functions to allocate and free subcomponents of a
+keyboard geometry. Use these functions to create or modify keyboard geometries.
+Note that these functions merely allocate space for the new element(s), and it
+is up to you to fill in the values explicitly in your code. These allocation
+functions increase
+.I sz_*
+but never touch
+.I num_*
+(unless there is an allocation failure, in which case they reset both
+.I sz_*
+and
+.I num_*
+to zero). These functions return Success if they succeed, BadAlloc if they are
+not able to allocate space, or BadValue if a parameter is not as expected.
+
+.I XkbAllocGeomColors
+allocates space for
+.I num_needed
+colors and adds them to the specified geometry
+.I geom.
+A color name is a string whose interpretation is not specified by Xkb. All other
+geometry data structures refer to colors using their indices in this global list
+or pointers to colors in this list.
+.SH DIAGNOSTICS
+.TP 15
+.B BadAlloc
+Unable to allocate storage
+.TP 15
+.B BadValue
+An argument is out of range
diff --git a/libX11/man/xkb/XkbAllocGeomDoodads.man b/libX11/man/xkb/XkbAllocGeomDoodads.man
index 612d0f7ed..882aaf2aa 100644
--- a/libX11/man/xkb/XkbAllocGeomDoodads.man
+++ b/libX11/man/xkb/XkbAllocGeomDoodads.man
@@ -1,69 +1,69 @@
-'\" t
-.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
-.\"
-.\" Permission is hereby granted, free of charge, to any person obtaining a
-.\" copy of this software and associated documentation files (the "Software"),
-.\" to deal in the Software without restriction, including without limitation
-.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
-.\" and/or sell copies of the Software, and to permit persons to whom the
-.\" Software is furnished to do so, subject to the following conditions:
-.\"
-.\" The above copyright notice and this permission notice (including the next
-.\" paragraph) shall be included in all copies or substantial portions of the
-.\" Software.
-.\"
-.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-.\" DEALINGS IN THE SOFTWARE.
-.\"
-.TH XkbAllocGeomDoodads __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
-.SH NAME
-XkbAllocGeomDoodads \- Allocate doodads that are global to a keyboard geometry
-.SH SYNOPSIS
-.HP
-.B Status XkbAllocGeomDoodads
-.BI "(\^XkbGeometryPtr " "geom" "\^,"
-.BI "int " "num_needed" "\^);"
-.if n .ti +5n
-.if t .ti +.5i
-.SH ARGUMENTS
-.TP
-.I \- geom
-geometry for which doodads should be allocated
-.TP
-.I \- num_needed
-number of new doodads required
-.SH DESCRIPTION
-.LP
-Xkb provides a number of functions to allocate and free subcomponents of a
-keyboard geometry. Use these functions to create or modify keyboard geometries.
-Note that these functions merely allocate space for the new element(s), and it
-is up to you to fill in the values explicitly in your code. These allocation
-functions increase
-.I sz_*
-but never touch
-.I num_*
-(unless there is an allocation failure, in which case they reset both
-.I sz_*
-and
-.I num_*
-to zero). These functions return Success if they succeed, BadAlloc if they are
-not able to allocate space, or BadValue if a parameter is not as expected.
-
-.I XkbAllocGeomDoodads
-allocates
-.I num_needed
-doodads and adds them to the specified geometry
-.I geom.
-No initialization of the doodads is done.
-.SH DIAGNOSTICS
-.TP 15
-.B BadAlloc
-Unable to allocate storage
-.TP 15
-.B BadValue
-An argument is out of range
+'\" t
+.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the "Software"),
+.\" to deal in the Software without restriction, including without limitation
+.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
+.\" and/or sell copies of the Software, and to permit persons to whom the
+.\" Software is furnished to do so, subject to the following conditions:
+.\"
+.\" The above copyright notice and this permission notice (including the next
+.\" paragraph) shall be included in all copies or substantial portions of the
+.\" Software.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+.\" DEALINGS IN THE SOFTWARE.
+.\"
+.TH XkbAllocGeomDoodads __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbAllocGeomDoodads \- Allocate doodads that are global to a keyboard geometry
+.SH SYNOPSIS
+.HP
+.B Status XkbAllocGeomDoodads
+.BI "(\^XkbGeometryPtr " "geom" "\^,"
+.BI "int " "num_needed" "\^);"
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- geom
+geometry for which doodads should be allocated
+.TP
+.I \- num_needed
+number of new doodads required
+.SH DESCRIPTION
+.LP
+Xkb provides a number of functions to allocate and free subcomponents of a
+keyboard geometry. Use these functions to create or modify keyboard geometries.
+Note that these functions merely allocate space for the new element(s), and it
+is up to you to fill in the values explicitly in your code. These allocation
+functions increase
+.I sz_*
+but never touch
+.I num_*
+(unless there is an allocation failure, in which case they reset both
+.I sz_*
+and
+.I num_*
+to zero). These functions return Success if they succeed, BadAlloc if they are
+not able to allocate space, or BadValue if a parameter is not as expected.
+
+.I XkbAllocGeomDoodads
+allocates
+.I num_needed
+doodads and adds them to the specified geometry
+.I geom.
+No initialization of the doodads is done.
+.SH DIAGNOSTICS
+.TP 15
+.B BadAlloc
+Unable to allocate storage
+.TP 15
+.B BadValue
+An argument is out of range
diff --git a/libX11/man/xkb/XkbAllocGeomKeyAliases.man b/libX11/man/xkb/XkbAllocGeomKeyAliases.man
index cf3d640ad..9daa76790 100644
--- a/libX11/man/xkb/XkbAllocGeomKeyAliases.man
+++ b/libX11/man/xkb/XkbAllocGeomKeyAliases.man
@@ -1,74 +1,74 @@
-.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
-.\"
-.\" Permission is hereby granted, free of charge, to any person obtaining a
-.\" copy of this software and associated documentation files (the "Software"),
-.\" to deal in the Software without restriction, including without limitation
-.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
-.\" and/or sell copies of the Software, and to permit persons to whom the
-.\" Software is furnished to do so, subject to the following conditions:
-.\"
-.\" The above copyright notice and this permission notice (including the next
-.\" paragraph) shall be included in all copies or substantial portions of the
-.\" Software.
-.\"
-.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-.\" DEALINGS IN THE SOFTWARE.
-.\"
-.TH XkbAllocGeomKeyAliases __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
-.SH NAME
-XkbAllocGeomKeyAliases \- Allocate geometry key aliases
-.SH SYNOPSIS
-.HP
-.B Status XkbAllocGeomKeyAliases
-.BI "(\^XkbGeometryPtr " "geom" "\^,"
-.BI "int " "num_needed" "\^);"
-.if n .ti +5n
-.if t .ti +.5i
-.SH ARGUMENTS
-.TP
-.I \- geom
-geometry for which key aliases should be allocated
-.TP
-.I \- num_needed
-number of new key aliases required
-.SH DESCRIPTION
-.LP
-Xkb provides a number of functions to allocate and free subcomponents of a
-keyboard geometry. Use these functions to create or modify keyboard geometries.
-Note that these functions merely allocate space for the new element(s), and it
-is up to you to fill in the values explicitly in your code. These allocation
-functions increase
-.I sz_*
-but never touch
-.I num_*
-(unless there is an allocation failure, in which case they reset both
-.I sz_*
-and
-.I num_*
-to zero). These functions return Success if they succeed, BadAlloc if they are
-not able to allocate space, or BadValue if a parameter is not as expected.
-
-.I XkbAllocGeomKeyAliases
-allocates space for
-.I num_needed
-key aliases and adds them to the specified geometry
-.I geom.
-A key alias is a pair of strings that associates an alternate name for a key
-with the real name for that key.
-
-To free geometry key aliases, use
-.I XkbFreeGeomKeyAliases.
-.SH DIAGNOSTICS
-.TP 15
-.B BadAlloc
-Unable to allocate storage
-.TP 15
-.B BadValue
-An argument is out of range
-.SH "SEE ALSO"
-.BR XkbFreeGeomKeyAliases (__libmansuffix__)
+.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the "Software"),
+.\" to deal in the Software without restriction, including without limitation
+.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
+.\" and/or sell copies of the Software, and to permit persons to whom the
+.\" Software is furnished to do so, subject to the following conditions:
+.\"
+.\" The above copyright notice and this permission notice (including the next
+.\" paragraph) shall be included in all copies or substantial portions of the
+.\" Software.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+.\" DEALINGS IN THE SOFTWARE.
+.\"
+.TH XkbAllocGeomKeyAliases __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbAllocGeomKeyAliases \- Allocate geometry key aliases
+.SH SYNOPSIS
+.HP
+.B Status XkbAllocGeomKeyAliases
+.BI "(\^XkbGeometryPtr " "geom" "\^,"
+.BI "int " "num_needed" "\^);"
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- geom
+geometry for which key aliases should be allocated
+.TP
+.I \- num_needed
+number of new key aliases required
+.SH DESCRIPTION
+.LP
+Xkb provides a number of functions to allocate and free subcomponents of a
+keyboard geometry. Use these functions to create or modify keyboard geometries.
+Note that these functions merely allocate space for the new element(s), and it
+is up to you to fill in the values explicitly in your code. These allocation
+functions increase
+.I sz_*
+but never touch
+.I num_*
+(unless there is an allocation failure, in which case they reset both
+.I sz_*
+and
+.I num_*
+to zero). These functions return Success if they succeed, BadAlloc if they are
+not able to allocate space, or BadValue if a parameter is not as expected.
+
+.I XkbAllocGeomKeyAliases
+allocates space for
+.I num_needed
+key aliases and adds them to the specified geometry
+.I geom.
+A key alias is a pair of strings that associates an alternate name for a key
+with the real name for that key.
+
+To free geometry key aliases, use
+.I XkbFreeGeomKeyAliases.
+.SH DIAGNOSTICS
+.TP 15
+.B BadAlloc
+Unable to allocate storage
+.TP 15
+.B BadValue
+An argument is out of range
+.SH "SEE ALSO"
+.BR XkbFreeGeomKeyAliases (__libmansuffix__)
diff --git a/libX11/man/xkb/XkbAllocGeomKeys.man b/libX11/man/xkb/XkbAllocGeomKeys.man
index cff2a8922..cfa979d3b 100644
--- a/libX11/man/xkb/XkbAllocGeomKeys.man
+++ b/libX11/man/xkb/XkbAllocGeomKeys.man
@@ -1,68 +1,68 @@
-.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
-.\"
-.\" Permission is hereby granted, free of charge, to any person obtaining a
-.\" copy of this software and associated documentation files (the "Software"),
-.\" to deal in the Software without restriction, including without limitation
-.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
-.\" and/or sell copies of the Software, and to permit persons to whom the
-.\" Software is furnished to do so, subject to the following conditions:
-.\"
-.\" The above copyright notice and this permission notice (including the next
-.\" paragraph) shall be included in all copies or substantial portions of the
-.\" Software.
-.\"
-.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-.\" DEALINGS IN THE SOFTWARE.
-.\"
-.TH XkbAllocGeomKeys __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
-.SH NAME
-XkbAllocGeomKeys \- Allocate space for an arbitrary number of keys to a row
-.SH SYNOPSIS
-.HP
-.B Status XkbAllocGeomKeys
-.BI "(\^XkbRowPtr " "row" "\^,"
-.BI "int " "num_needed" "\^);"
-.if n .ti +5n
-.if t .ti +.5i
-.SH ARGUMENTS
-.TP
-.I \- row
-row to which keys should be allocated
-.TP
-.I \- num_needed
-number of new keys required
-.SH DESCRIPTION
-.LP
-Xkb provides a number of functions to allocate and free subcomponents of a
-keyboard geometry. Use these functions to create or modify keyboard geometries.
-Note that these functions merely allocate space for the new element(s), and it
-is up to you to fill in the values explicitly in your code. These allocation
-functions increase
-.I sz_*
-but never touch
-.I num_*
-(unless there is an allocation failure, in which case they reset both
-.I sz_*
-and
-.I num_*
-to zero). These functions return Success if they succeed, BadAlloc if they are
-not able to allocate space, or BadValue if a parameter is not as expected.
-
-.I XkbAllocGeomKeys
-allocates
-.I num_needed
-keys and adds them to the
-.I row.
-No initialization of the keys is done.
-.SH DIAGNOSTICS
-.TP 15
-.B BadAlloc
-Unable to allocate storage
-.TP 15
-.B BadValue
-An argument is out of range
+.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the "Software"),
+.\" to deal in the Software without restriction, including without limitation
+.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
+.\" and/or sell copies of the Software, and to permit persons to whom the
+.\" Software is furnished to do so, subject to the following conditions:
+.\"
+.\" The above copyright notice and this permission notice (including the next
+.\" paragraph) shall be included in all copies or substantial portions of the
+.\" Software.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+.\" DEALINGS IN THE SOFTWARE.
+.\"
+.TH XkbAllocGeomKeys __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbAllocGeomKeys \- Allocate space for an arbitrary number of keys to a row
+.SH SYNOPSIS
+.HP
+.B Status XkbAllocGeomKeys
+.BI "(\^XkbRowPtr " "row" "\^,"
+.BI "int " "num_needed" "\^);"
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- row
+row to which keys should be allocated
+.TP
+.I \- num_needed
+number of new keys required
+.SH DESCRIPTION
+.LP
+Xkb provides a number of functions to allocate and free subcomponents of a
+keyboard geometry. Use these functions to create or modify keyboard geometries.
+Note that these functions merely allocate space for the new element(s), and it
+is up to you to fill in the values explicitly in your code. These allocation
+functions increase
+.I sz_*
+but never touch
+.I num_*
+(unless there is an allocation failure, in which case they reset both
+.I sz_*
+and
+.I num_*
+to zero). These functions return Success if they succeed, BadAlloc if they are
+not able to allocate space, or BadValue if a parameter is not as expected.
+
+.I XkbAllocGeomKeys
+allocates
+.I num_needed
+keys and adds them to the
+.I row.
+No initialization of the keys is done.
+.SH DIAGNOSTICS
+.TP 15
+.B BadAlloc
+Unable to allocate storage
+.TP 15
+.B BadValue
+An argument is out of range
diff --git a/libX11/man/xkb/XkbAllocGeomOutlines.man b/libX11/man/xkb/XkbAllocGeomOutlines.man
index 8cb9d7242..5a191bb38 100644
--- a/libX11/man/xkb/XkbAllocGeomOutlines.man
+++ b/libX11/man/xkb/XkbAllocGeomOutlines.man
@@ -1,74 +1,74 @@
-.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
-.\"
-.\" Permission is hereby granted, free of charge, to any person obtaining a
-.\" copy of this software and associated documentation files (the "Software"),
-.\" to deal in the Software without restriction, including without limitation
-.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
-.\" and/or sell copies of the Software, and to permit persons to whom the
-.\" Software is furnished to do so, subject to the following conditions:
-.\"
-.\" The above copyright notice and this permission notice (including the next
-.\" paragraph) shall be included in all copies or substantial portions of the
-.\" Software.
-.\"
-.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-.\" DEALINGS IN THE SOFTWARE.
-.\"
-.TH XkbAllocGeomOutlines __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
-.SH NAME
-XkbAllocGeomOutlines \- Allocate space for an arbitrary number of outlines to a
-shape
-.SH SYNOPSIS
-.HP
-.B Status XkbAllocGeomOutlines
-.BI "(\^XkbShapePtr " "shape" "\^,"
-.BI "int " "num_needed" "\^);"
-.if n .ti +5n
-.if t .ti +.5i
-.SH ARGUMENTS
-.TP
-.I \- shape
-shape for which outlines should be allocated
-.TP
-.I \- num_needed
-number of new outlines required
-.SH DESCRIPTION
-.LP
-Xkb provides a number of functions to allocate and free subcomponents of a
-keyboard geometry. Use these functions to create or modify keyboard geometries.
-Note that these functions merely allocate space for the new element(s), and it
-is up to you to fill in the values explicitly in your code. These allocation
-functions increase
-.I sz_*
-but never touch
-.I num_*
-(unless there is an allocation failure, in which case they reset both
-.I sz_*
-and
-.I num_*
-to zero). These functions return Success if they succeed, BadAlloc if they are
-not able to allocate space, or BadValue if a parameter is not as expected.
-
-.I XkbAllocGeomOutlines
-allocates space for
-.I num_needed
-outlines in the specified
-.I shape.
-The outlines are not initialized.
-
-To free geometry outlines, use
-.I XkbFreeGeomOutlines.
-.SH DIAGNOSTICS
-.TP 15
-.B BadAlloc
-Unable to allocate storage
-.TP 15
-.B BadValue
-An argument is out of range
-.SH "SEE ALSO"
-.BR XkbFreeGeomOutlines (__libmansuffix__)
+.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the "Software"),
+.\" to deal in the Software without restriction, including without limitation
+.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
+.\" and/or sell copies of the Software, and to permit persons to whom the
+.\" Software is furnished to do so, subject to the following conditions:
+.\"
+.\" The above copyright notice and this permission notice (including the next
+.\" paragraph) shall be included in all copies or substantial portions of the
+.\" Software.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+.\" DEALINGS IN THE SOFTWARE.
+.\"
+.TH XkbAllocGeomOutlines __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbAllocGeomOutlines \- Allocate space for an arbitrary number of outlines to a
+shape
+.SH SYNOPSIS
+.HP
+.B Status XkbAllocGeomOutlines
+.BI "(\^XkbShapePtr " "shape" "\^,"
+.BI "int " "num_needed" "\^);"
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- shape
+shape for which outlines should be allocated
+.TP
+.I \- num_needed
+number of new outlines required
+.SH DESCRIPTION
+.LP
+Xkb provides a number of functions to allocate and free subcomponents of a
+keyboard geometry. Use these functions to create or modify keyboard geometries.
+Note that these functions merely allocate space for the new element(s), and it
+is up to you to fill in the values explicitly in your code. These allocation
+functions increase
+.I sz_*
+but never touch
+.I num_*
+(unless there is an allocation failure, in which case they reset both
+.I sz_*
+and
+.I num_*
+to zero). These functions return Success if they succeed, BadAlloc if they are
+not able to allocate space, or BadValue if a parameter is not as expected.
+
+.I XkbAllocGeomOutlines
+allocates space for
+.I num_needed
+outlines in the specified
+.I shape.
+The outlines are not initialized.
+
+To free geometry outlines, use
+.I XkbFreeGeomOutlines.
+.SH DIAGNOSTICS
+.TP 15
+.B BadAlloc
+Unable to allocate storage
+.TP 15
+.B BadValue
+An argument is out of range
+.SH "SEE ALSO"
+.BR XkbFreeGeomOutlines (__libmansuffix__)
diff --git a/libX11/man/xkb/XkbAllocGeomOverlayKey.man b/libX11/man/xkb/XkbAllocGeomOverlayKey.man
index fa82b3a66..157b7ef20 100644
--- a/libX11/man/xkb/XkbAllocGeomOverlayKey.man
+++ b/libX11/man/xkb/XkbAllocGeomOverlayKey.man
@@ -1,64 +1,64 @@
-'\" t
-.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
-.\"
-.\" Permission is hereby granted, free of charge, to any person obtaining a
-.\" copy of this software and associated documentation files (the "Software"),
-.\" to deal in the Software without restriction, including without limitation
-.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
-.\" and/or sell copies of the Software, and to permit persons to whom the
-.\" Software is furnished to do so, subject to the following conditions:
-.\"
-.\" The above copyright notice and this permission notice (including the next
-.\" paragraph) shall be included in all copies or substantial portions of the
-.\" Software.
-.\"
-.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-.\" DEALINGS IN THE SOFTWARE.
-.\"
-.TH XkbAllocGeomOverlayKeys __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
-.SH NAME
-XkbAllocGeomOverlayKeys \- Allocate keys in an overlay row
-.SH SYNOPSIS
-.HP
-.B Status XkbAllocGeomOverlayKeys
-.BI "(\^XkbOverlayRowPtr " "row" "\^,"
-.BI "int " "num_needed" "\^);"
-.if n .ti +5n
-.if t .ti +.5i
-.SH ARGUMENTS
-.TP
-.I \- row
-section for which rows should be allocated
-.TP
-.I \- num_needed
-number of new rows required
-.SH DESCRIPTION
-.LP
-Xkb provides a number of functions to allocate and free subcomponents of a keyboard geometry. Use these functions to create or modify keyboard geometries. Note that these functions merely allocate space for the new element(s), and it is up to you to fill in the values explicitly in your code. These allocation functions increase
-.I sz_*
-but never touch
-.I num_*
-(unless there is an allocation failure, in which case they reset both
-.I sz_*
-and
-.I num_*
-to zero). These functions return Success if they succeed, BadAlloc if they are not able to allocate space, or BadValue if a parameter is not as expected.
-
-.I XkbAllocGeomOverlayKeys
-allocates
-.I num_needed
-keys and adds them to the
-.I row.
-No initialization of the keys is done.
-.SH DIAGNOSTICS
-.TP 15
-.B BadAlloc
-Unable to allocate storage
-.TP 15
-.B BadValue
-An argument is out of range
+'\" t
+.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the "Software"),
+.\" to deal in the Software without restriction, including without limitation
+.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
+.\" and/or sell copies of the Software, and to permit persons to whom the
+.\" Software is furnished to do so, subject to the following conditions:
+.\"
+.\" The above copyright notice and this permission notice (including the next
+.\" paragraph) shall be included in all copies or substantial portions of the
+.\" Software.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+.\" DEALINGS IN THE SOFTWARE.
+.\"
+.TH XkbAllocGeomOverlayKeys __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbAllocGeomOverlayKeys \- Allocate keys in an overlay row
+.SH SYNOPSIS
+.HP
+.B Status XkbAllocGeomOverlayKeys
+.BI "(\^XkbOverlayRowPtr " "row" "\^,"
+.BI "int " "num_needed" "\^);"
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- row
+section for which rows should be allocated
+.TP
+.I \- num_needed
+number of new rows required
+.SH DESCRIPTION
+.LP
+Xkb provides a number of functions to allocate and free subcomponents of a keyboard geometry. Use these functions to create or modify keyboard geometries. Note that these functions merely allocate space for the new element(s), and it is up to you to fill in the values explicitly in your code. These allocation functions increase
+.I sz_*
+but never touch
+.I num_*
+(unless there is an allocation failure, in which case they reset both
+.I sz_*
+and
+.I num_*
+to zero). These functions return Success if they succeed, BadAlloc if they are not able to allocate space, or BadValue if a parameter is not as expected.
+
+.I XkbAllocGeomOverlayKeys
+allocates
+.I num_needed
+keys and adds them to the
+.I row.
+No initialization of the keys is done.
+.SH DIAGNOSTICS
+.TP 15
+.B BadAlloc
+Unable to allocate storage
+.TP 15
+.B BadValue
+An argument is out of range
diff --git a/libX11/man/xkb/XkbAllocGeomOverlayRows.man b/libX11/man/xkb/XkbAllocGeomOverlayRows.man
index b09282f47..c1c952bb9 100644
--- a/libX11/man/xkb/XkbAllocGeomOverlayRows.man
+++ b/libX11/man/xkb/XkbAllocGeomOverlayRows.man
@@ -1,73 +1,73 @@
-.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
-.\"
-.\" Permission is hereby granted, free of charge, to any person obtaining a
-.\" copy of this software and associated documentation files (the "Software"),
-.\" to deal in the Software without restriction, including without limitation
-.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
-.\" and/or sell copies of the Software, and to permit persons to whom the
-.\" Software is furnished to do so, subject to the following conditions:
-.\"
-.\" The above copyright notice and this permission notice (including the next
-.\" paragraph) shall be included in all copies or substantial portions of the
-.\" Software.
-.\"
-.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-.\" DEALINGS IN THE SOFTWARE.
-.\"
-.TH XkbAllocGeomOverlayRows __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
-.SH NAME
-XkbAllocGeomOverlayRows \- Allocate rows in a overlay
-.SH SYNOPSIS
-.HP
-.B Status XkbAllocGeomOverlayRows
-.BI "(\^XkbOverlayPtr " "overlay" "\^,"
-.BI "int " "num_needed" "\^);"
-.if n .ti +5n
-.if t .ti +.5i
-.SH ARGUMENTS
-.TP
-.I \- overlay
-section for which rows should be allocated
-.TP
-.I \- num_needed
-number of new rows required
-.SH DESCRIPTION
-.LP
-Xkb provides a number of functions to allocate and free subcomponents of a
-keyboard geometry. Use these functions to create or modify keyboard geometries.
-Note that these functions merely allocate space for the new element(s), and it
-is up to you to fill in the values explicitly in your code. These allocation
-functions increase
-.I sz_*
-but never touch
-.I num_*
-(unless there is an allocation failure, in which case they reset both
-.I sz_*
-and
-.I num_*
-to zero). These functions return Success if they succeed, BadAlloc if they are
-not able to allocate space, or BadValue if a parameter is not as expected.
-
-.I XkbAllocGeomOverlayRows
-allocates
-.I num_needed
-rows and adds them to the
-.I overlay.
-No initialization of the rows is done.
-
-To free rows in an overlay, use
-.I XkbFreeGeomOverlayRows.
-.SH DIAGNOSTICS
-.TP 15
-.B BadAlloc
-Unable to allocate storage
-.TP 15
-.B BadValue
-An argument is out of range
-.SH "SEE ALSO"
-.BR XkbFreeGeomOverlayRows (__libmansuffix__)
+.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the "Software"),
+.\" to deal in the Software without restriction, including without limitation
+.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
+.\" and/or sell copies of the Software, and to permit persons to whom the
+.\" Software is furnished to do so, subject to the following conditions:
+.\"
+.\" The above copyright notice and this permission notice (including the next
+.\" paragraph) shall be included in all copies or substantial portions of the
+.\" Software.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+.\" DEALINGS IN THE SOFTWARE.
+.\"
+.TH XkbAllocGeomOverlayRows __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbAllocGeomOverlayRows \- Allocate rows in a overlay
+.SH SYNOPSIS
+.HP
+.B Status XkbAllocGeomOverlayRows
+.BI "(\^XkbOverlayPtr " "overlay" "\^,"
+.BI "int " "num_needed" "\^);"
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- overlay
+section for which rows should be allocated
+.TP
+.I \- num_needed
+number of new rows required
+.SH DESCRIPTION
+.LP
+Xkb provides a number of functions to allocate and free subcomponents of a
+keyboard geometry. Use these functions to create or modify keyboard geometries.
+Note that these functions merely allocate space for the new element(s), and it
+is up to you to fill in the values explicitly in your code. These allocation
+functions increase
+.I sz_*
+but never touch
+.I num_*
+(unless there is an allocation failure, in which case they reset both
+.I sz_*
+and
+.I num_*
+to zero). These functions return Success if they succeed, BadAlloc if they are
+not able to allocate space, or BadValue if a parameter is not as expected.
+
+.I XkbAllocGeomOverlayRows
+allocates
+.I num_needed
+rows and adds them to the
+.I overlay.
+No initialization of the rows is done.
+
+To free rows in an overlay, use
+.I XkbFreeGeomOverlayRows.
+.SH DIAGNOSTICS
+.TP 15
+.B BadAlloc
+Unable to allocate storage
+.TP 15
+.B BadValue
+An argument is out of range
+.SH "SEE ALSO"
+.BR XkbFreeGeomOverlayRows (__libmansuffix__)
diff --git a/libX11/man/xkb/XkbAllocGeomOverlays.man b/libX11/man/xkb/XkbAllocGeomOverlays.man
index a6e3152de..4cf95a750 100644
--- a/libX11/man/xkb/XkbAllocGeomOverlays.man
+++ b/libX11/man/xkb/XkbAllocGeomOverlays.man
@@ -1,63 +1,63 @@
-.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
-.\"
-.\" Permission is hereby granted, free of charge, to any person obtaining a
-.\" copy of this software and associated documentation files (the "Software"),
-.\" to deal in the Software without restriction, including without limitation
-.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
-.\" and/or sell copies of the Software, and to permit persons to whom the
-.\" Software is furnished to do so, subject to the following conditions:
-.\"
-.\" The above copyright notice and this permission notice (including the next
-.\" paragraph) shall be included in all copies or substantial portions of the
-.\" Software.
-.\"
-.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-.\" DEALINGS IN THE SOFTWARE.
-.\"
-.TH XkbAllocGeomOverlays __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
-.SH NAME
-XkbAllocGeomOverlays \- Allocate overlays in a section
-.SH SYNOPSIS
-.HP
-.B Status XkbAllocGeomOverlays
-.BI "(\^XkbSectionPtr " "section" "\^,"
-.BI "int " "num_needed" "\^);"
-.if n .ti +5n
-.if t .ti +.5i
-.SH ARGUMENTS
-.TP
-.I \- section
-section for which overlays should be allocated
-.TP
-.I \- num_needed
-number of new overlays required
-.SH DESCRIPTION
-.LP
-Xkb provides a number of functions to allocate and free subcomponents of a keyboard geometry. Use these functions to create or modify keyboard geometries. Note that these functions merely allocate space for the new element(s), and it is up to you to fill in the values explicitly in your code. These allocation functions increase
-.I sz_*
-but never touch
-.I num_*
-(unless there is an allocation failure, in which case they reset both
-.I sz_*
-and
-.I num_*
-to zero). These functions return Success if they succeed, BadAlloc if they are not able to allocate space, or BadValue if a parameter is not as expected.
-
-.I XkbAllocGeomOverlays
-allocates
-.I num_needed
-overlays and adds them to the
-.I section.
-No initialization of the overlays is done.
-.SH DIAGNOSTICS
-.TP 15
-.B BadAlloc
-Unable to allocate storage
-.TP 15
-.B BadValue
-An argument is out of range
+.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the "Software"),
+.\" to deal in the Software without restriction, including without limitation
+.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
+.\" and/or sell copies of the Software, and to permit persons to whom the
+.\" Software is furnished to do so, subject to the following conditions:
+.\"
+.\" The above copyright notice and this permission notice (including the next
+.\" paragraph) shall be included in all copies or substantial portions of the
+.\" Software.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+.\" DEALINGS IN THE SOFTWARE.
+.\"
+.TH XkbAllocGeomOverlays __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbAllocGeomOverlays \- Allocate overlays in a section
+.SH SYNOPSIS
+.HP
+.B Status XkbAllocGeomOverlays
+.BI "(\^XkbSectionPtr " "section" "\^,"
+.BI "int " "num_needed" "\^);"
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- section
+section for which overlays should be allocated
+.TP
+.I \- num_needed
+number of new overlays required
+.SH DESCRIPTION
+.LP
+Xkb provides a number of functions to allocate and free subcomponents of a keyboard geometry. Use these functions to create or modify keyboard geometries. Note that these functions merely allocate space for the new element(s), and it is up to you to fill in the values explicitly in your code. These allocation functions increase
+.I sz_*
+but never touch
+.I num_*
+(unless there is an allocation failure, in which case they reset both
+.I sz_*
+and
+.I num_*
+to zero). These functions return Success if they succeed, BadAlloc if they are not able to allocate space, or BadValue if a parameter is not as expected.
+
+.I XkbAllocGeomOverlays
+allocates
+.I num_needed
+overlays and adds them to the
+.I section.
+No initialization of the overlays is done.
+.SH DIAGNOSTICS
+.TP 15
+.B BadAlloc
+Unable to allocate storage
+.TP 15
+.B BadValue
+An argument is out of range
diff --git a/libX11/man/xkb/XkbAllocGeomPoints.man b/libX11/man/xkb/XkbAllocGeomPoints.man
index f0bc767bc..91c1637ab 100644
--- a/libX11/man/xkb/XkbAllocGeomPoints.man
+++ b/libX11/man/xkb/XkbAllocGeomPoints.man
@@ -1,68 +1,68 @@
-.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
-.\"
-.\" Permission is hereby granted, free of charge, to any person obtaining a
-.\" copy of this software and associated documentation files (the "Software"),
-.\" to deal in the Software without restriction, including without limitation
-.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
-.\" and/or sell copies of the Software, and to permit persons to whom the
-.\" Software is furnished to do so, subject to the following conditions:
-.\"
-.\" The above copyright notice and this permission notice (including the next
-.\" paragraph) shall be included in all copies or substantial portions of the
-.\" Software.
-.\"
-.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-.\" DEALINGS IN THE SOFTWARE.
-.\"
-.TH XkbAllocGeomPoints __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
-.SH NAME
-XkbAllocGeomPoints \- Allocate points in an outline
-.SH SYNOPSIS
-.HP
-.B Status XkbAllocGeomPoints
-.BI "(\^XkbOutlinePtr " "outline" "\^,"
-.BI "int " "num_needed" "\^);"
-.if n .ti +5n
-.if t .ti +.5i
-.SH ARGUMENTS
-.TP
-.I \- outline
-outline for which points should be allocated
-.TP
-.I \- num_needed
-number of new points required
-.SH DESCRIPTION
-.LP
-Xkb provides a number of functions to allocate and free subcomponents of a
-keyboard geometry. Use these functions to create or modify keyboard geometries.
-Note that these functions merely allocate space for the new element(s), and it
-is up to you to fill in the values explicitly in your code. These allocation
-functions increase
-.I sz_*
-but never touch
-.I num_*
-(unless there is an allocation failure, in which case they reset both
-.I sz_*
-and
-.I num_*
-to zero). These functions return Success if they succeed, BadAlloc if they are
-not able to allocate space, or BadValue if a parameter is not as expected.
-
-.I XkbAllocGeomPoints
-allocates space for
-.I num_needed
-points in the specified
-.I outline.
-The points are not initialized.
-.SH DIAGNOSTICS
-.TP 15
-.B BadAlloc
-Unable to allocate storage
-.TP 15
-.B BadValue
-An argument is out of range
+.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the "Software"),
+.\" to deal in the Software without restriction, including without limitation
+.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
+.\" and/or sell copies of the Software, and to permit persons to whom the
+.\" Software is furnished to do so, subject to the following conditions:
+.\"
+.\" The above copyright notice and this permission notice (including the next
+.\" paragraph) shall be included in all copies or substantial portions of the
+.\" Software.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+.\" DEALINGS IN THE SOFTWARE.
+.\"
+.TH XkbAllocGeomPoints __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbAllocGeomPoints \- Allocate points in an outline
+.SH SYNOPSIS
+.HP
+.B Status XkbAllocGeomPoints
+.BI "(\^XkbOutlinePtr " "outline" "\^,"
+.BI "int " "num_needed" "\^);"
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- outline
+outline for which points should be allocated
+.TP
+.I \- num_needed
+number of new points required
+.SH DESCRIPTION
+.LP
+Xkb provides a number of functions to allocate and free subcomponents of a
+keyboard geometry. Use these functions to create or modify keyboard geometries.
+Note that these functions merely allocate space for the new element(s), and it
+is up to you to fill in the values explicitly in your code. These allocation
+functions increase
+.I sz_*
+but never touch
+.I num_*
+(unless there is an allocation failure, in which case they reset both
+.I sz_*
+and
+.I num_*
+to zero). These functions return Success if they succeed, BadAlloc if they are
+not able to allocate space, or BadValue if a parameter is not as expected.
+
+.I XkbAllocGeomPoints
+allocates space for
+.I num_needed
+points in the specified
+.I outline.
+The points are not initialized.
+.SH DIAGNOSTICS
+.TP 15
+.B BadAlloc
+Unable to allocate storage
+.TP 15
+.B BadValue
+An argument is out of range
diff --git a/libX11/man/xkb/XkbAllocGeomProps.man b/libX11/man/xkb/XkbAllocGeomProps.man
index fbbd8e46f..1a8599058 100644
--- a/libX11/man/xkb/XkbAllocGeomProps.man
+++ b/libX11/man/xkb/XkbAllocGeomProps.man
@@ -1,71 +1,71 @@
-.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
-.\"
-.\" Permission is hereby granted, free of charge, to any person obtaining a
-.\" copy of this software and associated documentation files (the "Software"),
-.\" to deal in the Software without restriction, including without limitation
-.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
-.\" and/or sell copies of the Software, and to permit persons to whom the
-.\" Software is furnished to do so, subject to the following conditions:
-.\"
-.\" The above copyright notice and this permission notice (including the next
-.\" paragraph) shall be included in all copies or substantial portions of the
-.\" Software.
-.\"
-.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-.\" DEALINGS IN THE SOFTWARE.
-.\"
-.TH XkbAllocGeomProps __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
-.SH NAME
-XkbAllocGeomProps \- Allocate geometry properties
-.SH SYNOPSIS
-.HP
-.B Status XkbAllocGeomProps
-.BI "(\^XkbGeometryPtr " "geom" "\^,"
-.BI "int " "num_needed" "\^);"
-.if n .ti +5n
-.if t .ti +.5i
-.SH ARGUMENTS
-.TP
-.I \- geom
-_summary_
-.TP
-.I \- num_needed
-_summary_
-.SH DESCRIPTION
-.LP
-Xkb provides a number of functions to allocate and free subcomponents of a
-keyboard geometry. Use these functions to create or modify keyboard geometries.
-Note that these functions merely allocate space for the new element(s), and it
-is up to you to fill in the values explicitly in your code. These allocation
-functions increase
-.I sz_*
-but never touch
-.I num_*
-(unless there is an allocation failure, in which case they reset both
-.I sz_*
-and
-.I num_*
-to zero). These functions return Success if they succeed, BadAlloc if they are
-not able to allocate space, or BadValue if a parameter is not as expected.
-
-.I XkbAllocGeomProps
-allocates space for
-.I num_needed
-properties and adds them to the specified geometry
-.I geom.
-No initialization of the properties is done. A geometry property associates an
-arbitrary string with an equally arbitrary name. Geometry properties can be used
-to provide hints to programs that display images of keyboards, but they are not
-interpreted by Xkb. No other geometry structures refer to geometry properties.
-.SH DIAGNOSTICS
-.TP 15
-.B BadAlloc
-Unable to allocate storage
-.TP 15
-.B BadValue
-An argument is out of range
+.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the "Software"),
+.\" to deal in the Software without restriction, including without limitation
+.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
+.\" and/or sell copies of the Software, and to permit persons to whom the
+.\" Software is furnished to do so, subject to the following conditions:
+.\"
+.\" The above copyright notice and this permission notice (including the next
+.\" paragraph) shall be included in all copies or substantial portions of the
+.\" Software.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+.\" DEALINGS IN THE SOFTWARE.
+.\"
+.TH XkbAllocGeomProps __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbAllocGeomProps \- Allocate geometry properties
+.SH SYNOPSIS
+.HP
+.B Status XkbAllocGeomProps
+.BI "(\^XkbGeometryPtr " "geom" "\^,"
+.BI "int " "num_needed" "\^);"
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- geom
+_summary_
+.TP
+.I \- num_needed
+_summary_
+.SH DESCRIPTION
+.LP
+Xkb provides a number of functions to allocate and free subcomponents of a
+keyboard geometry. Use these functions to create or modify keyboard geometries.
+Note that these functions merely allocate space for the new element(s), and it
+is up to you to fill in the values explicitly in your code. These allocation
+functions increase
+.I sz_*
+but never touch
+.I num_*
+(unless there is an allocation failure, in which case they reset both
+.I sz_*
+and
+.I num_*
+to zero). These functions return Success if they succeed, BadAlloc if they are
+not able to allocate space, or BadValue if a parameter is not as expected.
+
+.I XkbAllocGeomProps
+allocates space for
+.I num_needed
+properties and adds them to the specified geometry
+.I geom.
+No initialization of the properties is done. A geometry property associates an
+arbitrary string with an equally arbitrary name. Geometry properties can be used
+to provide hints to programs that display images of keyboards, but they are not
+interpreted by Xkb. No other geometry structures refer to geometry properties.
+.SH DIAGNOSTICS
+.TP 15
+.B BadAlloc
+Unable to allocate storage
+.TP 15
+.B BadValue
+An argument is out of range
diff --git a/libX11/man/xkb/XkbAllocGeomRows.man b/libX11/man/xkb/XkbAllocGeomRows.man
index e0d5ebaa3..46772903e 100644
--- a/libX11/man/xkb/XkbAllocGeomRows.man
+++ b/libX11/man/xkb/XkbAllocGeomRows.man
@@ -1,68 +1,68 @@
-.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
-.\"
-.\" Permission is hereby granted, free of charge, to any person obtaining a
-.\" copy of this software and associated documentation files (the "Software"),
-.\" to deal in the Software without restriction, including without limitation
-.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
-.\" and/or sell copies of the Software, and to permit persons to whom the
-.\" Software is furnished to do so, subject to the following conditions:
-.\"
-.\" The above copyright notice and this permission notice (including the next
-.\" paragraph) shall be included in all copies or substantial portions of the
-.\" Software.
-.\"
-.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-.\" DEALINGS IN THE SOFTWARE.
-.\"
-.TH XkbAllocGeomRows __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
-.SH NAME
-XkbAllocGeomRows \- Allocate rows in a section
-.SH SYNOPSIS
-.HP
-.B Status XkbAllocGeomRows
-.BI "(\^XkbSectionPtr " "section" "\^,"
-.BI "int " "num_needed" "\^);"
-.if n .ti +5n
-.if t .ti +.5i
-.SH ARGUMENTS
-.TP
-.I \- section
-section for which rows should be allocated
-.TP
-.I \- num_needed
-number of new rows required
-.SH DESCRIPTION
-.LP
-Xkb provides a number of functions to allocate and free subcomponents of a
-keyboard geometry. Use these functions to create or modify keyboard geometries.
-Note that these functions merely allocate space for the new element(s), and it
-is up to you to fill in the values explicitly in your code. These allocation
-functions increase
-.I sz_*
-but never touch
-.I num_*
-(unless there is an allocation failure, in which case they reset both
-.I sz_*
-and
-.I num_*
-to zero). These functions return Success if they succeed, BadAlloc if they are
-not able to allocate space, or BadValue if a parameter is not as expected.
-
-.I XkbAllocGeomRows
-allocates
-.I num_needed
-rows and adds them to the
-.I section.
-No initialization of the rows is done.
-.SH DIAGNOSTICS
-.TP 15
-.B BadAlloc
-Unable to allocate storage
-.TP 15
-.B BadValue
-An argument is out of range
+.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the "Software"),
+.\" to deal in the Software without restriction, including without limitation
+.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
+.\" and/or sell copies of the Software, and to permit persons to whom the
+.\" Software is furnished to do so, subject to the following conditions:
+.\"
+.\" The above copyright notice and this permission notice (including the next
+.\" paragraph) shall be included in all copies or substantial portions of the
+.\" Software.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+.\" DEALINGS IN THE SOFTWARE.
+.\"
+.TH XkbAllocGeomRows __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbAllocGeomRows \- Allocate rows in a section
+.SH SYNOPSIS
+.HP
+.B Status XkbAllocGeomRows
+.BI "(\^XkbSectionPtr " "section" "\^,"
+.BI "int " "num_needed" "\^);"
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- section
+section for which rows should be allocated
+.TP
+.I \- num_needed
+number of new rows required
+.SH DESCRIPTION
+.LP
+Xkb provides a number of functions to allocate and free subcomponents of a
+keyboard geometry. Use these functions to create or modify keyboard geometries.
+Note that these functions merely allocate space for the new element(s), and it
+is up to you to fill in the values explicitly in your code. These allocation
+functions increase
+.I sz_*
+but never touch
+.I num_*
+(unless there is an allocation failure, in which case they reset both
+.I sz_*
+and
+.I num_*
+to zero). These functions return Success if they succeed, BadAlloc if they are
+not able to allocate space, or BadValue if a parameter is not as expected.
+
+.I XkbAllocGeomRows
+allocates
+.I num_needed
+rows and adds them to the
+.I section.
+No initialization of the rows is done.
+.SH DIAGNOSTICS
+.TP 15
+.B BadAlloc
+Unable to allocate storage
+.TP 15
+.B BadValue
+An argument is out of range
diff --git a/libX11/man/xkb/XkbAllocGeomSectionDoodads.man b/libX11/man/xkb/XkbAllocGeomSectionDoodads.man
index 5b10649f8..36664aa0b 100644
--- a/libX11/man/xkb/XkbAllocGeomSectionDoodads.man
+++ b/libX11/man/xkb/XkbAllocGeomSectionDoodads.man
@@ -1,74 +1,74 @@
-'\" t
-.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
-.\"
-.\" Permission is hereby granted, free of charge, to any person obtaining a
-.\" copy of this software and associated documentation files (the "Software"),
-.\" to deal in the Software without restriction, including without limitation
-.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
-.\" and/or sell copies of the Software, and to permit persons to whom the
-.\" Software is furnished to do so, subject to the following conditions:
-.\"
-.\" The above copyright notice and this permission notice (including the next
-.\" paragraph) shall be included in all copies or substantial portions of the
-.\" Software.
-.\"
-.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-.\" DEALINGS IN THE SOFTWARE.
-.\"
-.TH XkbAllocGeomSectionDoodads __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
-.SH NAME
-XkbAllocGeomSectionDoodads \- Allocate doodads that are specific to a section
-.SH SYNOPSIS
-.HP
-.B Status XkbAllocGeomSectionDoodads
-.BI "(\^XkbSectionPtr " "section" "\^,"
-.BI "int " "num_needed" "\^);"
-.if n .ti +5n
-.if t .ti +.5i
-.SH ARGUMENTS
-.TP
-.I \- section
-section for which doodads should be allocated
-.TP
-.I \- num_needed
-number of new doodads required
-.SH DESCRIPTION
-.LP
-Xkb provides a number of functions to allocate and free subcomponents of a
-keyboard geometry. Use these functions to create or modify keyboard geometries.
-Note that these functions merely allocate space for the new element(s), and it
-is up to you to fill in the values explicitly in your code. These allocation
-functions increase
-.I sz_*
-but never touch
-.I num_*
-(unless there is an allocation failure, in which case they reset both
-.I sz_*
-and
-.I num_*
-to zero). These functions return Success if they succeed, BadAlloc if they are
-not able to allocate space, or BadValue if a parameter is not as expected.
-
-.I XkbAllocGeomSectionDoodads
-allocates
-.I num_needed
-doodads and adds them to the specified
-.I section.
-No initialization of the doodads is done.
-
-To free geometry doodads, use
-.I XkbFreeGeomDoodads.
-.SH DIAGNOSTICS
-.TP 15
-.B BadAlloc
-Unable to allocate storage
-.TP 15
-.B BadValue
-An argument is out of range
-.SH "SEE ALSO"
-.BR XkbFreeGeomDoodads (__libmansuffix__)
+'\" t
+.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the "Software"),
+.\" to deal in the Software without restriction, including without limitation
+.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
+.\" and/or sell copies of the Software, and to permit persons to whom the
+.\" Software is furnished to do so, subject to the following conditions:
+.\"
+.\" The above copyright notice and this permission notice (including the next
+.\" paragraph) shall be included in all copies or substantial portions of the
+.\" Software.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+.\" DEALINGS IN THE SOFTWARE.
+.\"
+.TH XkbAllocGeomSectionDoodads __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbAllocGeomSectionDoodads \- Allocate doodads that are specific to a section
+.SH SYNOPSIS
+.HP
+.B Status XkbAllocGeomSectionDoodads
+.BI "(\^XkbSectionPtr " "section" "\^,"
+.BI "int " "num_needed" "\^);"
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- section
+section for which doodads should be allocated
+.TP
+.I \- num_needed
+number of new doodads required
+.SH DESCRIPTION
+.LP
+Xkb provides a number of functions to allocate and free subcomponents of a
+keyboard geometry. Use these functions to create or modify keyboard geometries.
+Note that these functions merely allocate space for the new element(s), and it
+is up to you to fill in the values explicitly in your code. These allocation
+functions increase
+.I sz_*
+but never touch
+.I num_*
+(unless there is an allocation failure, in which case they reset both
+.I sz_*
+and
+.I num_*
+to zero). These functions return Success if they succeed, BadAlloc if they are
+not able to allocate space, or BadValue if a parameter is not as expected.
+
+.I XkbAllocGeomSectionDoodads
+allocates
+.I num_needed
+doodads and adds them to the specified
+.I section.
+No initialization of the doodads is done.
+
+To free geometry doodads, use
+.I XkbFreeGeomDoodads.
+.SH DIAGNOSTICS
+.TP 15
+.B BadAlloc
+Unable to allocate storage
+.TP 15
+.B BadValue
+An argument is out of range
+.SH "SEE ALSO"
+.BR XkbFreeGeomDoodads (__libmansuffix__)
diff --git a/libX11/man/xkb/XkbAllocGeomSections.man b/libX11/man/xkb/XkbAllocGeomSections.man
index eb093cc50..4bbe54318 100644
--- a/libX11/man/xkb/XkbAllocGeomSections.man
+++ b/libX11/man/xkb/XkbAllocGeomSections.man
@@ -1,73 +1,73 @@
-.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
-.\"
-.\" Permission is hereby granted, free of charge, to any person obtaining a
-.\" copy of this software and associated documentation files (the "Software"),
-.\" to deal in the Software without restriction, including without limitation
-.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
-.\" and/or sell copies of the Software, and to permit persons to whom the
-.\" Software is furnished to do so, subject to the following conditions:
-.\"
-.\" The above copyright notice and this permission notice (including the next
-.\" paragraph) shall be included in all copies or substantial portions of the
-.\" Software.
-.\"
-.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-.\" DEALINGS IN THE SOFTWARE.
-.\"
-.TH XkbAllocGeomSections __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
-.SH NAME
-XkbAllocGeomSections \- Allocate geometry sections
-.SH SYNOPSIS
-.HP
-.B Status XkbAllocGeomSections
-.BI "(\^XkbGeometryPtr " "geom" "\^,"
-.BI "int " "num_needed" "\^);"
-.if n .ti +5n
-.if t .ti +.5i
-.SH ARGUMENTS
-.TP
-.I \- geom
-geometry for which sections should be allocated
-.TP
-.I \- num_needed
-number of new sections required
-.SH DESCRIPTION
-.LP
-Xkb provides a number of functions to allocate and free subcomponents of a
-keyboard geometry. Use these functions to create or modify keyboard geometries.
-Note that these functions merely allocate space for the new element(s), and it
-is up to you to fill in the values explicitly in your code. These allocation
-functions increase
-.I sz_*
-but never touch
-.I num_*
-(unless there is an allocation failure, in which case they reset both
-.I sz_*
-and
-.I num_*
-to zero). These functions return Success if they succeed, BadAlloc if they are
-not able to allocate space, or BadValue if a parameter is not as expected.
-
-.I XkbAllocGeomSections
-allocates
-.I num_needed
-sections and adds them to the geometry
-.I geom.
-No initialization of the sections is done.
-
-To free geometry sections, use
-.I XkbFreeGeomSections.
-.SH DIAGNOSTICS
-.TP 15
-.B BadAlloc
-Unable to allocate storage
-.TP 15
-.B BadValue
-An argument is out of range
-.SH "SEE ALSO"
-.BR XkbFreeGeomSections (__libmansuffix__)
+.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the "Software"),
+.\" to deal in the Software without restriction, including without limitation
+.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
+.\" and/or sell copies of the Software, and to permit persons to whom the
+.\" Software is furnished to do so, subject to the following conditions:
+.\"
+.\" The above copyright notice and this permission notice (including the next
+.\" paragraph) shall be included in all copies or substantial portions of the
+.\" Software.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+.\" DEALINGS IN THE SOFTWARE.
+.\"
+.TH XkbAllocGeomSections __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbAllocGeomSections \- Allocate geometry sections
+.SH SYNOPSIS
+.HP
+.B Status XkbAllocGeomSections
+.BI "(\^XkbGeometryPtr " "geom" "\^,"
+.BI "int " "num_needed" "\^);"
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- geom
+geometry for which sections should be allocated
+.TP
+.I \- num_needed
+number of new sections required
+.SH DESCRIPTION
+.LP
+Xkb provides a number of functions to allocate and free subcomponents of a
+keyboard geometry. Use these functions to create or modify keyboard geometries.
+Note that these functions merely allocate space for the new element(s), and it
+is up to you to fill in the values explicitly in your code. These allocation
+functions increase
+.I sz_*
+but never touch
+.I num_*
+(unless there is an allocation failure, in which case they reset both
+.I sz_*
+and
+.I num_*
+to zero). These functions return Success if they succeed, BadAlloc if they are
+not able to allocate space, or BadValue if a parameter is not as expected.
+
+.I XkbAllocGeomSections
+allocates
+.I num_needed
+sections and adds them to the geometry
+.I geom.
+No initialization of the sections is done.
+
+To free geometry sections, use
+.I XkbFreeGeomSections.
+.SH DIAGNOSTICS
+.TP 15
+.B BadAlloc
+Unable to allocate storage
+.TP 15
+.B BadValue
+An argument is out of range
+.SH "SEE ALSO"
+.BR XkbFreeGeomSections (__libmansuffix__)
diff --git a/libX11/man/xkb/XkbAllocGeomShapes.man b/libX11/man/xkb/XkbAllocGeomShapes.man
index 54a24dce5..2b7d50f3d 100644
--- a/libX11/man/xkb/XkbAllocGeomShapes.man
+++ b/libX11/man/xkb/XkbAllocGeomShapes.man
@@ -1,74 +1,74 @@
-.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
-.\"
-.\" Permission is hereby granted, free of charge, to any person obtaining a
-.\" copy of this software and associated documentation files (the "Software"),
-.\" to deal in the Software without restriction, including without limitation
-.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
-.\" and/or sell copies of the Software, and to permit persons to whom the
-.\" Software is furnished to do so, subject to the following conditions:
-.\"
-.\" The above copyright notice and this permission notice (including the next
-.\" paragraph) shall be included in all copies or substantial portions of the
-.\" Software.
-.\"
-.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-.\" DEALINGS IN THE SOFTWARE.
-.\"
-.TH XkbAllocGeomShapes __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
-.SH NAME
-XkbAllocGeomShapes \- Allocate space for an arbitrary number of geometry shapes
-.SH SYNOPSIS
-.HP
-.B Status XkbAllocGeomShapes
-.BI "(\^XkbGeometryPtr " "geom" "\^,"
-.BI "int " "num_needed" "\^);"
-.if n .ti +5n
-.if t .ti +.5i
-.SH ARGUMENTS
-.TP
-.I \- geom
-geometry for which shapes should be allocated
-.TP
-.I \- num_needed
-number of new shapes required
-.SH DESCRIPTION
-.LP
-Xkb provides a number of functions to allocate and free subcomponents of a
-keyboard geometry. Use these functions to create or modify keyboard geometries.
-Note that these functions merely allocate space for the new element(s), and it
-is up to you to fill in the values explicitly in your code. These allocation
-functions increase
-.I sz_*
-but never touch
-.I num_*
-(unless there is an allocation failure, in which case they reset both
-.I sz_*
-and
-.I num_*
-to zero). These functions return Success if they succeed, BadAlloc if they are
-not able to allocate space, or BadValue if a parameter is not as expected.
-
-.I XkbAllocGeomShapes
-allocates space for
-.I num_needed
-shapes in the specified geometry
-.I geom.
-The shapes are not initialized.
-
-To free geometry shapes, use
-.I XkbFreeGeomShapes.
-.SH DIAGNOSTICS
-.TP 15
-.B BadAlloc
-Unable to allocate storage
-.TP 15
-.B BadValue
-An argument is out of range
-.SH "SEE ALSO"
-.BR XkbFreeGeomShapes (__libmansuffix__)
-
+.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the "Software"),
+.\" to deal in the Software without restriction, including without limitation
+.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
+.\" and/or sell copies of the Software, and to permit persons to whom the
+.\" Software is furnished to do so, subject to the following conditions:
+.\"
+.\" The above copyright notice and this permission notice (including the next
+.\" paragraph) shall be included in all copies or substantial portions of the
+.\" Software.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+.\" DEALINGS IN THE SOFTWARE.
+.\"
+.TH XkbAllocGeomShapes __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbAllocGeomShapes \- Allocate space for an arbitrary number of geometry shapes
+.SH SYNOPSIS
+.HP
+.B Status XkbAllocGeomShapes
+.BI "(\^XkbGeometryPtr " "geom" "\^,"
+.BI "int " "num_needed" "\^);"
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- geom
+geometry for which shapes should be allocated
+.TP
+.I \- num_needed
+number of new shapes required
+.SH DESCRIPTION
+.LP
+Xkb provides a number of functions to allocate and free subcomponents of a
+keyboard geometry. Use these functions to create or modify keyboard geometries.
+Note that these functions merely allocate space for the new element(s), and it
+is up to you to fill in the values explicitly in your code. These allocation
+functions increase
+.I sz_*
+but never touch
+.I num_*
+(unless there is an allocation failure, in which case they reset both
+.I sz_*
+and
+.I num_*
+to zero). These functions return Success if they succeed, BadAlloc if they are
+not able to allocate space, or BadValue if a parameter is not as expected.
+
+.I XkbAllocGeomShapes
+allocates space for
+.I num_needed
+shapes in the specified geometry
+.I geom.
+The shapes are not initialized.
+
+To free geometry shapes, use
+.I XkbFreeGeomShapes.
+.SH DIAGNOSTICS
+.TP 15
+.B BadAlloc
+Unable to allocate storage
+.TP 15
+.B BadValue
+An argument is out of range
+.SH "SEE ALSO"
+.BR XkbFreeGeomShapes (__libmansuffix__)
+
diff --git a/libX11/man/xkb/XkbAllocGeometry.man b/libX11/man/xkb/XkbAllocGeometry.man
index 3d36a6cb9..7ff05bccc 100644
--- a/libX11/man/xkb/XkbAllocGeometry.man
+++ b/libX11/man/xkb/XkbAllocGeometry.man
@@ -1,85 +1,85 @@
-'\" t
-.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
-.\"
-.\" Permission is hereby granted, free of charge, to any person obtaining a
-.\" copy of this software and associated documentation files (the "Software"),
-.\" to deal in the Software without restriction, including without limitation
-.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
-.\" and/or sell copies of the Software, and to permit persons to whom the
-.\" Software is furnished to do so, subject to the following conditions:
-.\"
-.\" The above copyright notice and this permission notice (including the next
-.\" paragraph) shall be included in all copies or substantial portions of the
-.\" Software.
-.\"
-.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-.\" DEALINGS IN THE SOFTWARE.
-.\"
-.TH XkbAllocGeometry __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
-.SH NAME
-XkbAllocGeometry \- Allocate an entire geometry
-.SH SYNOPSIS
-.HP
-.B Status XkbAllocGeometry
-.BI "(\^XkbDescPtr " "xkb" "\^,"
-.BI "XkbGeometrySizesPtr " "sizes" "\^);"
-.if n .ti +5n
-.if t .ti +.5i
-.SH ARGUMENTS
-.TP
-.I \- xkb
-keyboard description for which geometry is to be allocated
-.TP
-.I \- sizes
-initial sizes for all geometry components
-.SH DESCRIPTION
-.LP
-Xkb provides a number of functions to allocate and free subcomponents of a
-keyboard geometry. Use these functions to create or modify keyboard geometries.
-Note that these functions merely allocate space for the new element(s), and it
-is up to you to fill in the values explicitly in your code. These allocation
-functions increase
-.I sz_*
-but never touch
-.I num_*
-(unless there is an allocation failure, in which case they reset both
-.I sz_*
-and
-.I num_*
-to zero). These functions return Success if they succeed, BadAlloc if they are
-not able to allocate space, or BadValue if a parameter is not as expected.
-
-.I XkbAllocGeometry
-allocates a keyboard geometry and adds it to the keyboard description specified
-by
-.I xkb.
-The keyboard description should be obtained via the
-.I XkbGetKeyboard
-or
-.I XkbAllocKeyboard
-functions. The
-.I sizes
-parameter specifies the number of elements to be reserved for the subcomponents
-of the keyboard geometry and can be zero or more. These subcomponents include
-the
-.I properties, colors, shapes, sections, and doodads.
-
-To free an entire geometry, use
-.I XkbFreeGeometry.
-.SH DIAGNOSTICS
-.TP 15
-.B BadAlloc
-Unable to allocate storage
-.TP 15
-.B BadValue
-An argument is out of range
-.SH "SEE ALSO"
-.BR XkbAllocKeyboard (__libmansuffix__),
-.BR XkbFreeGeometry (__libmansuffix__),
-.BR XkbGetKeyboard (__libmansuffix__)
-
+'\" t
+.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the "Software"),
+.\" to deal in the Software without restriction, including without limitation
+.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
+.\" and/or sell copies of the Software, and to permit persons to whom the
+.\" Software is furnished to do so, subject to the following conditions:
+.\"
+.\" The above copyright notice and this permission notice (including the next
+.\" paragraph) shall be included in all copies or substantial portions of the
+.\" Software.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+.\" DEALINGS IN THE SOFTWARE.
+.\"
+.TH XkbAllocGeometry __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbAllocGeometry \- Allocate an entire geometry
+.SH SYNOPSIS
+.HP
+.B Status XkbAllocGeometry
+.BI "(\^XkbDescPtr " "xkb" "\^,"
+.BI "XkbGeometrySizesPtr " "sizes" "\^);"
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- xkb
+keyboard description for which geometry is to be allocated
+.TP
+.I \- sizes
+initial sizes for all geometry components
+.SH DESCRIPTION
+.LP
+Xkb provides a number of functions to allocate and free subcomponents of a
+keyboard geometry. Use these functions to create or modify keyboard geometries.
+Note that these functions merely allocate space for the new element(s), and it
+is up to you to fill in the values explicitly in your code. These allocation
+functions increase
+.I sz_*
+but never touch
+.I num_*
+(unless there is an allocation failure, in which case they reset both
+.I sz_*
+and
+.I num_*
+to zero). These functions return Success if they succeed, BadAlloc if they are
+not able to allocate space, or BadValue if a parameter is not as expected.
+
+.I XkbAllocGeometry
+allocates a keyboard geometry and adds it to the keyboard description specified
+by
+.I xkb.
+The keyboard description should be obtained via the
+.I XkbGetKeyboard
+or
+.I XkbAllocKeyboard
+functions. The
+.I sizes
+parameter specifies the number of elements to be reserved for the subcomponents
+of the keyboard geometry and can be zero or more. These subcomponents include
+the
+.I properties, colors, shapes, sections, and doodads.
+
+To free an entire geometry, use
+.I XkbFreeGeometry.
+.SH DIAGNOSTICS
+.TP 15
+.B BadAlloc
+Unable to allocate storage
+.TP 15
+.B BadValue
+An argument is out of range
+.SH "SEE ALSO"
+.BR XkbAllocKeyboard (__libmansuffix__),
+.BR XkbFreeGeometry (__libmansuffix__),
+.BR XkbGetKeyboard (__libmansuffix__)
+
diff --git a/libX11/man/xkb/XkbAllocIndicatorMaps.man b/libX11/man/xkb/XkbAllocIndicatorMaps.man
index d2bbf9fae..ee37c150e 100644
--- a/libX11/man/xkb/XkbAllocIndicatorMaps.man
+++ b/libX11/man/xkb/XkbAllocIndicatorMaps.man
@@ -1,65 +1,65 @@
-.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
-.\"
-.\" Permission is hereby granted, free of charge, to any person obtaining a
-.\" copy of this software and associated documentation files (the "Software"),
-.\" to deal in the Software without restriction, including without limitation
-.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
-.\" and/or sell copies of the Software, and to permit persons to whom the
-.\" Software is furnished to do so, subject to the following conditions:
-.\"
-.\" The above copyright notice and this permission notice (including the next
-.\" paragraph) shall be included in all copies or substantial portions of the
-.\" Software.
-.\"
-.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-.\" DEALINGS IN THE SOFTWARE.
-.\"
-.TH XkbAllocIndicatorMaps __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
-.SH NAME
-XkbAllocIndicatorMaps \- Allocates, directly, the
-.I indicators
-member of the keyboard description record
-.SH SYNOPSIS
-.HP
-.B Status XkbAllocIndicatorMaps
-.BI "(\^variable_type *" "xkb" "\^);"
-.if n .ti +5n
-.if t .ti +.5i
-.SH ARGUMENTS
-.TP
-.I \- xkb
-keyboard description structure
-.SH DESCRIPTION
-.LP
-The
-.I xkb
-parameter must point to a valid keyboard description. If it doesn't,
-.I XkbAllocIndicatorMaps
-returns a BadMatch error. Otherwise,
-.I XkbAllocIndicatorMaps
-allocates and initializes the
-.I indicators
-member of the keyboard description record and returns Success. If
-.I XkbAllocIndicatorMaps
-was unable to allocate the indicators record, it reports a BadAlloc error.
-.SH RETURN VALUES"
-.TP 15
-Success
-The
-.I XkbAllocIndicatorMaps
-function returns Success if it is successful in allocating and initializing the
-.I indicators
-member of the keyboard description record.
-.SH DIAGNOSTICS
-.TP 15
-.B BadMatch
-A compatible version of Xkb was not available in the server or an argument has
-correct type and range, but is otherwise invalid
-.TP 15
-.B BadAlloc
-Unable to allocate storage
+.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the "Software"),
+.\" to deal in the Software without restriction, including without limitation
+.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
+.\" and/or sell copies of the Software, and to permit persons to whom the
+.\" Software is furnished to do so, subject to the following conditions:
+.\"
+.\" The above copyright notice and this permission notice (including the next
+.\" paragraph) shall be included in all copies or substantial portions of the
+.\" Software.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+.\" DEALINGS IN THE SOFTWARE.
+.\"
+.TH XkbAllocIndicatorMaps __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbAllocIndicatorMaps \- Allocates, directly, the
+.I indicators
+member of the keyboard description record
+.SH SYNOPSIS
+.HP
+.B Status XkbAllocIndicatorMaps
+.BI "(\^variable_type *" "xkb" "\^);"
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- xkb
+keyboard description structure
+.SH DESCRIPTION
+.LP
+The
+.I xkb
+parameter must point to a valid keyboard description. If it doesn't,
+.I XkbAllocIndicatorMaps
+returns a BadMatch error. Otherwise,
+.I XkbAllocIndicatorMaps
+allocates and initializes the
+.I indicators
+member of the keyboard description record and returns Success. If
+.I XkbAllocIndicatorMaps
+was unable to allocate the indicators record, it reports a BadAlloc error.
+.SH RETURN VALUES"
+.TP 15
+Success
+The
+.I XkbAllocIndicatorMaps
+function returns Success if it is successful in allocating and initializing the
+.I indicators
+member of the keyboard description record.
+.SH DIAGNOSTICS
+.TP 15
+.B BadMatch
+A compatible version of Xkb was not available in the server or an argument has
+correct type and range, but is otherwise invalid
+.TP 15
+.B BadAlloc
+Unable to allocate storage
diff --git a/libX11/man/xkb/XkbAllocKeyboard.man b/libX11/man/xkb/XkbAllocKeyboard.man
index 273e10ad3..96522fe3b 100644
--- a/libX11/man/xkb/XkbAllocKeyboard.man
+++ b/libX11/man/xkb/XkbAllocKeyboard.man
@@ -1,54 +1,54 @@
-.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
-.\"
-.\" Permission is hereby granted, free of charge, to any person obtaining a
-.\" copy of this software and associated documentation files (the "Software"),
-.\" to deal in the Software without restriction, including without limitation
-.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
-.\" and/or sell copies of the Software, and to permit persons to whom the
-.\" Software is furnished to do so, subject to the following conditions:
-.\"
-.\" The above copyright notice and this permission notice (including the next
-.\" paragraph) shall be included in all copies or substantial portions of the
-.\" Software.
-.\"
-.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-.\" DEALINGS IN THE SOFTWARE.
-.\"
-.TH XkbAllocKeyboard __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
-.SH NAME
-XkbAllocKeyboard \- Creates a keyboard description from scratch
-.SH SYNOPSIS
-.HP
-.B XkbDescRec XkbAllocKeyboard
-.BI "(\^void\^);"
-.if n .ti +5n
-.if t .ti +.5i
-.SH DESCRIPTION
-.LP
-Applications seldom need to directly allocate a keyboard description; calling
-.I XkbGetKeyboard
-usually suffices. In the event you need to create a keyboard description from
-scratch, however, use
-.I XkbAllocKeyboard
-rather than directly calling
-.I malloc.
-
-If
-.I XkbAllocKeyboard
-fails to allocate the keyboard description, it returns NULL.
-Otherwise, it returns a pointer to an empty keyboard description structure. The
-.I device_spec
-field will have been initialized to XkbUseCoreKbd. You may then
-either fill in the structure components or use Xkb functions to obtain values
-for the structure components from a keyboard device.
-.SH "SEE ALSO"
-.BR malloc (3F),
-.BR XkbUseCoreKbd (__libmansuffix__),
-.BR XkbGetKeyboard (__libmansuffix__)
-
-
+.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the "Software"),
+.\" to deal in the Software without restriction, including without limitation
+.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
+.\" and/or sell copies of the Software, and to permit persons to whom the
+.\" Software is furnished to do so, subject to the following conditions:
+.\"
+.\" The above copyright notice and this permission notice (including the next
+.\" paragraph) shall be included in all copies or substantial portions of the
+.\" Software.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+.\" DEALINGS IN THE SOFTWARE.
+.\"
+.TH XkbAllocKeyboard __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbAllocKeyboard \- Creates a keyboard description from scratch
+.SH SYNOPSIS
+.HP
+.B XkbDescRec XkbAllocKeyboard
+.BI "(\^void\^);"
+.if n .ti +5n
+.if t .ti +.5i
+.SH DESCRIPTION
+.LP
+Applications seldom need to directly allocate a keyboard description; calling
+.I XkbGetKeyboard
+usually suffices. In the event you need to create a keyboard description from
+scratch, however, use
+.I XkbAllocKeyboard
+rather than directly calling
+.I malloc.
+
+If
+.I XkbAllocKeyboard
+fails to allocate the keyboard description, it returns NULL.
+Otherwise, it returns a pointer to an empty keyboard description structure. The
+.I device_spec
+field will have been initialized to XkbUseCoreKbd. You may then
+either fill in the structure components or use Xkb functions to obtain values
+for the structure components from a keyboard device.
+.SH "SEE ALSO"
+.BR malloc (3F),
+.BR XkbUseCoreKbd (__libmansuffix__),
+.BR XkbGetKeyboard (__libmansuffix__)
+
+
diff --git a/libX11/man/xkb/XkbAllocNames.man b/libX11/man/xkb/XkbAllocNames.man
index f6286e7d4..18aa4c193 100644
--- a/libX11/man/xkb/XkbAllocNames.man
+++ b/libX11/man/xkb/XkbAllocNames.man
@@ -1,116 +1,116 @@
-'\" t
-.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
-.\"
-.\" Permission is hereby granted, free of charge, to any person obtaining a
-.\" copy of this software and associated documentation files (the "Software"),
-.\" to deal in the Software without restriction, including without limitation
-.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
-.\" and/or sell copies of the Software, and to permit persons to whom the
-.\" Software is furnished to do so, subject to the following conditions:
-.\"
-.\" The above copyright notice and this permission notice (including the next
-.\" paragraph) shall be included in all copies or substantial portions of the
-.\" Software.
-.\"
-.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-.\" DEALINGS IN THE SOFTWARE.
-.\"
-.TH XkbAllocNames __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
-.SH NAME
-XkbAllocNames \- Allocate symbolic names structures
-.SH SYNOPSIS
-.HP
-.B Status XkbAllocNames
-.BI "(\^XkbDescPtr " "xkb" "\^,"
-.BI "unsigned int " "which" "\^,"
-.BI "int " "num_rg" "\^,"
-.BI "int " "num_key_aliases" "\^);"
-.if n .ti +5n
-.if t .ti +.5i
-.SH ARGUMENTS
-.TP
-.I \- xkb
-keyboard description for which names are to be allocated
-.TP
-.I \- which
-mask of names to be allocated
-.TP
-.I \- num_rg
-total number of radio group names needed
-.TP
-.I \- num_key_aliases
-total number of key aliases needed
-.SH DESCRIPTION
-.LP
-Most applications do not need to directly allocate symbolic names structures. Do
-not allocate a names structure directly using
-.I malloc
-or
-.I Xmalloc
-if your application changes the number of key aliases or radio groups or
-constructs a symbolic names structure without loading the necessary components
-from the X server. Instead use
-.I XkbAllocNames.
-
-.I XkbAllocNames
-can return BadAlloc, BadMatch, and BadValue errors. The
-.I which
-parameter is the bitwise inclusive OR of the valid names mask bits defined in
-Table 1.
-
-.TS
-c s s s
-l l l l.
-Table 1 Symbolic Names Masks
-_
-Mask Bit Value Keyboard Field
- Component
-_
-XkbKeycodesNameMask (1<<0) Xkb->names keycodes
-XkbGeometryNameMask (1<<1) Xkb->names geometry
-XkbSymbolsNameMask (1<<2) Xkb->names symbols
-XkbPhysSymbolsNameMask (1<<3) Xkb->names phys_symbols
-XkbTypesNameMask (1<<4) Xkb->names type
-XkbCompatNameMask (1<<5) Xkb->names compat
-XkbKeyTypeNamesMask (1<<6) Xkb->map type[*].name
-XkbKTLevelNamesMask (1<<7) Xkb->map type[*].lvl_names[*]
-XkbIndicatorNamesMask (1<<8) Xkb->names indicators[*]
-XkbKeyNamesMask (1<<9) Xkb->names keys[*], num_keys
-XkbKeyAliasesMask (1<<10) Xkb->names key_aliases[*], num_key_aliases
-XkbVirtualModNamesMask (1<<11) Xkb->names vmods[*]
-XkbGroupNamesMask (1<<12) Xkb->names groups[*]
-XkbRGNamesMask (1<<13) Xkb->names radio_groups[*], num_rg
-XkbComponentNamesMask (0x3f) Xkb->names keycodes,
- geometry,
- symbols,
- physical symbols,
- types, and
- compatibility map
-XkbAllNamesMask (0x3fff) Xkb->names all name components
-.TE
-
-Do not free symbolic names structures directly using
-.I free
-or
-.I XFree.
-Use
-.I XkbFreeNames
-instead.
-.SH DIAGNOSTICS
-.TP 15
-.B BadAlloc
-Unable to allocate storage
-.TP 15
-.B BadMatch
-A compatible version of Xkb was not available in the server or an argument has
-correct type and range, but is otherwise invalid
-.TP 15
-.B BadValue
-An argument is out of range
-.SH "SEE ALSO"
-.BR XkbFreeNames (__libmansuffix__)
+'\" t
+.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the "Software"),
+.\" to deal in the Software without restriction, including without limitation
+.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
+.\" and/or sell copies of the Software, and to permit persons to whom the
+.\" Software is furnished to do so, subject to the following conditions:
+.\"
+.\" The above copyright notice and this permission notice (including the next
+.\" paragraph) shall be included in all copies or substantial portions of the
+.\" Software.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+.\" DEALINGS IN THE SOFTWARE.
+.\"
+.TH XkbAllocNames __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbAllocNames \- Allocate symbolic names structures
+.SH SYNOPSIS
+.HP
+.B Status XkbAllocNames
+.BI "(\^XkbDescPtr " "xkb" "\^,"
+.BI "unsigned int " "which" "\^,"
+.BI "int " "num_rg" "\^,"
+.BI "int " "num_key_aliases" "\^);"
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- xkb
+keyboard description for which names are to be allocated
+.TP
+.I \- which
+mask of names to be allocated
+.TP
+.I \- num_rg
+total number of radio group names needed
+.TP
+.I \- num_key_aliases
+total number of key aliases needed
+.SH DESCRIPTION
+.LP
+Most applications do not need to directly allocate symbolic names structures. Do
+not allocate a names structure directly using
+.I malloc
+or
+.I Xmalloc
+if your application changes the number of key aliases or radio groups or
+constructs a symbolic names structure without loading the necessary components
+from the X server. Instead use
+.I XkbAllocNames.
+
+.I XkbAllocNames
+can return BadAlloc, BadMatch, and BadValue errors. The
+.I which
+parameter is the bitwise inclusive OR of the valid names mask bits defined in
+Table 1.
+
+.TS
+c s s s
+l l l l.
+Table 1 Symbolic Names Masks
+_
+Mask Bit Value Keyboard Field
+ Component
+_
+XkbKeycodesNameMask (1<<0) Xkb->names keycodes
+XkbGeometryNameMask (1<<1) Xkb->names geometry
+XkbSymbolsNameMask (1<<2) Xkb->names symbols
+XkbPhysSymbolsNameMask (1<<3) Xkb->names phys_symbols
+XkbTypesNameMask (1<<4) Xkb->names type
+XkbCompatNameMask (1<<5) Xkb->names compat
+XkbKeyTypeNamesMask (1<<6) Xkb->map type[*].name
+XkbKTLevelNamesMask (1<<7) Xkb->map type[*].lvl_names[*]
+XkbIndicatorNamesMask (1<<8) Xkb->names indicators[*]
+XkbKeyNamesMask (1<<9) Xkb->names keys[*], num_keys
+XkbKeyAliasesMask (1<<10) Xkb->names key_aliases[*], num_key_aliases
+XkbVirtualModNamesMask (1<<11) Xkb->names vmods[*]
+XkbGroupNamesMask (1<<12) Xkb->names groups[*]
+XkbRGNamesMask (1<<13) Xkb->names radio_groups[*], num_rg
+XkbComponentNamesMask (0x3f) Xkb->names keycodes,
+ geometry,
+ symbols,
+ physical symbols,
+ types, and
+ compatibility map
+XkbAllNamesMask (0x3fff) Xkb->names all name components
+.TE
+
+Do not free symbolic names structures directly using
+.I free
+or
+.I XFree.
+Use
+.I XkbFreeNames
+instead.
+.SH DIAGNOSTICS
+.TP 15
+.B BadAlloc
+Unable to allocate storage
+.TP 15
+.B BadMatch
+A compatible version of Xkb was not available in the server or an argument has
+correct type and range, but is otherwise invalid
+.TP 15
+.B BadValue
+An argument is out of range
+.SH "SEE ALSO"
+.BR XkbFreeNames (__libmansuffix__)
diff --git a/libX11/man/xkb/XkbAllocServerMap.man b/libX11/man/xkb/XkbAllocServerMap.man
index ca8104cd3..ed242594c 100644
--- a/libX11/man/xkb/XkbAllocServerMap.man
+++ b/libX11/man/xkb/XkbAllocServerMap.man
@@ -1,121 +1,121 @@
-'\" t
-.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
-.\"
-.\" Permission is hereby granted, free of charge, to any person obtaining a
-.\" copy of this software and associated documentation files (the "Software"),
-.\" to deal in the Software without restriction, including without limitation
-.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
-.\" and/or sell copies of the Software, and to permit persons to whom the
-.\" Software is furnished to do so, subject to the following conditions:
-.\"
-.\" The above copyright notice and this permission notice (including the next
-.\" paragraph) shall be included in all copies or substantial portions of the
-.\" Software.
-.\"
-.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-.\" DEALINGS IN THE SOFTWARE.
-.\"
-.TH XkbAllocServerMap __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
-.SH NAME
-XkbAllocServerMap \- Allocate and initialize an empty server map description record
-.SH SYNOPSIS
-.HP
-.B Status XkbAllocServerMap
-.BI "(\^XkbDescPtr " "xkb" "\^,"
-.BI "unsigned int " "which" "\^,"
-.BI "unsigned int " "count_acts" "\^);"
-.if n .ti +5n
-.if t .ti +.5i
-.SH ARGUMENTS
-.TP
-.I \- xkb
-keyboard description in which to allocate server map
-.TP
-.I \- which
-mask selecting map components to allocate
-.TP
-.I \- count_acts
-value of num_acts field in map to be allocated
-.SH DESCRIPTION
-.LP
-.I XkbAllocServerMap
-allocates and initializes an empty server map in the
-.I server
-field of the keyboard description specified by
-.I xkb.
-The
-.I which
-parameter specifies the particular components of the server map structure to allocate, as specified in Table 1.
-
-.TS
-c s
-l l
-l lw(4i).
-Table 1 XkbAllocServerMap Masks
-_
-Mask Effect
-_
-XkbExplicitComponentsMask T{
-The min_key_code and max_key_code fields of the xkb parameter are used to
-allocate the explicit field of the server map.
-T}
-.sp
-XkbKeyActionsMask T{
-The min_key_code and max_key_code fields of the xkb parameter are used to allocate the key_acts field of the server map. The count_acts parameter is used to allocate the acts field of the server map.
-T}
-.sp
-XkbKeyBehaviorsMask T{
-The min_key_code and max_key_code fields of the xkb parameter are used to allocate the behaviors field of the server map.
-T}
-.sp
-XkbVirtualModMapMask T{
-The min_key_code and max_key_code fields of the xkb parameter are used to allocate the vmodmap field of the server map.
-T}
-
-.TE
-
-If the server map of the keyboard description is not NULL and any fields are already allocated in the server map,
-.I XkbAllocServerMap
-does not overwrite the existing values. The only exception is with the
-.I acts
-array. If the
-.I count_acts
-parameter is greater than the current
-.I num_acts
-field of the server map,
-.I XkbAllocServerMap
-resizes the
-.I acts
-array and resets the
-.I num_acts
-field accordingly.
-
-If
-.I XkbAllocServerMap
-is successful, it returns Success. Otherwise, it can return either BadMatch or BadAlloc errors.
-.SH DIAGNOSTICS
-.TP 15
-.B BadAlloc
-Unable to allocate storage
-.TP 15
-.B BadMatch
-A compatible version of Xkb was not available in the server or an argument has correct type and range, but is otherwise invalid
-.TP 15
-.B BadValue
-An argument is out of range
-.SH NOTES
-.LP
-The
-.I min_key_code
-and
-.I max_key_code
-fields of the
-.I xkb
-parameter must be legal values. If they are not valid,
-.I XkbAllocServerMap
-returns BadValue.
+'\" t
+.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the "Software"),
+.\" to deal in the Software without restriction, including without limitation
+.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
+.\" and/or sell copies of the Software, and to permit persons to whom the
+.\" Software is furnished to do so, subject to the following conditions:
+.\"
+.\" The above copyright notice and this permission notice (including the next
+.\" paragraph) shall be included in all copies or substantial portions of the
+.\" Software.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+.\" DEALINGS IN THE SOFTWARE.
+.\"
+.TH XkbAllocServerMap __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbAllocServerMap \- Allocate and initialize an empty server map description record
+.SH SYNOPSIS
+.HP
+.B Status XkbAllocServerMap
+.BI "(\^XkbDescPtr " "xkb" "\^,"
+.BI "unsigned int " "which" "\^,"
+.BI "unsigned int " "count_acts" "\^);"
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- xkb
+keyboard description in which to allocate server map
+.TP
+.I \- which
+mask selecting map components to allocate
+.TP
+.I \- count_acts
+value of num_acts field in map to be allocated
+.SH DESCRIPTION
+.LP
+.I XkbAllocServerMap
+allocates and initializes an empty server map in the
+.I server
+field of the keyboard description specified by
+.I xkb.
+The
+.I which
+parameter specifies the particular components of the server map structure to allocate, as specified in Table 1.
+
+.TS
+c s
+l l
+l lw(4i).
+Table 1 XkbAllocServerMap Masks
+_
+Mask Effect
+_
+XkbExplicitComponentsMask T{
+The min_key_code and max_key_code fields of the xkb parameter are used to
+allocate the explicit field of the server map.
+T}
+.sp
+XkbKeyActionsMask T{
+The min_key_code and max_key_code fields of the xkb parameter are used to allocate the key_acts field of the server map. The count_acts parameter is used to allocate the acts field of the server map.
+T}
+.sp
+XkbKeyBehaviorsMask T{
+The min_key_code and max_key_code fields of the xkb parameter are used to allocate the behaviors field of the server map.
+T}
+.sp
+XkbVirtualModMapMask T{
+The min_key_code and max_key_code fields of the xkb parameter are used to allocate the vmodmap field of the server map.
+T}
+
+.TE
+
+If the server map of the keyboard description is not NULL and any fields are already allocated in the server map,
+.I XkbAllocServerMap
+does not overwrite the existing values. The only exception is with the
+.I acts
+array. If the
+.I count_acts
+parameter is greater than the current
+.I num_acts
+field of the server map,
+.I XkbAllocServerMap
+resizes the
+.I acts
+array and resets the
+.I num_acts
+field accordingly.
+
+If
+.I XkbAllocServerMap
+is successful, it returns Success. Otherwise, it can return either BadMatch or BadAlloc errors.
+.SH DIAGNOSTICS
+.TP 15
+.B BadAlloc
+Unable to allocate storage
+.TP 15
+.B BadMatch
+A compatible version of Xkb was not available in the server or an argument has correct type and range, but is otherwise invalid
+.TP 15
+.B BadValue
+An argument is out of range
+.SH NOTES
+.LP
+The
+.I min_key_code
+and
+.I max_key_code
+fields of the
+.I xkb
+parameter must be legal values. If they are not valid,
+.I XkbAllocServerMap
+returns BadValue.
diff --git a/libX11/man/xkb/XkbApplyCompatMapToKey.man b/libX11/man/xkb/XkbApplyCompatMapToKey.man
index c1a414661..ef342be96 100644
--- a/libX11/man/xkb/XkbApplyCompatMapToKey.man
+++ b/libX11/man/xkb/XkbApplyCompatMapToKey.man
@@ -1,362 +1,362 @@
-'\" t
-.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
-.\"
-.\" Permission is hereby granted, free of charge, to any person obtaining a
-.\" copy of this software and associated documentation files (the "Software"),
-.\" to deal in the Software without restriction, including without limitation
-.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
-.\" and/or sell copies of the Software, and to permit persons to whom the
-.\" Software is furnished to do so, subject to the following conditions:
-.\"
-.\" The above copyright notice and this permission notice (including the next
-.\" paragraph) shall be included in all copies or substantial portions of the
-.\" Software.
-.\"
-.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-.\" DEALINGS IN THE SOFTWARE.
-.\"
-.TH XkbApplyCompatMapToKey __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
-.SH NAME
-XkbApplyCompatMapToKey \- Apply the new compatibility mapping to an individual
-key to get its semantics updated
-.SH SYNOPSIS
-.HP
-.B Bool XkbApplyCompatMapToKey
-.BI "(\^XkbDescPtr " "xkb" "\^,"
-.BI "KeyCode " "key" "\^,"
-.BI "XkbChangesPtr " "changes" "\^);"
-.if n .ti +5n
-.if t .ti +.5i
-.SH ARGUMENTS
-.TP
-.I \- xkb
-keyboard description to be updated
-.TP
-.I \- key
-key to be updated
-.TP
-.I \- changes
-notes changes to the Xkb keyboard description
-.SH DESCRIPTION
-.LP
-.I XkbApplyCompatMapToKey
-essentially performs the operation described in Core Keyboard Mapping to Xkb
-Keyboard Mapping Transformation to a specific key. This updates the behavior,
-actions, repeat status, and virtual modifier bindings of the key.
-
-.B Core Keyboard Mapping to Xkb Keyboard Mapping Transformation
-
-When a core protocol keyboard mapping request is received by the server, the
-server's core keyboard map is updated, and then the Xkb map maintained by the
-server is updated. Because a client may have explicitly configured some of the
-Xkb keyboard mapping in the server, this automatic regeneration of the Xkb
-keyboard mapping from the core protocol keyboard mapping should not modify any
-components of the Xkb keyboard mapping that were explicitly set by a client. The
-client must set explicit override controls to prevent this from happening (see
-Explicit Components-Avoiding Automatic Remapping by the Server). The core-to-Xkb
-mapping is done as follows:
-
-.B Explicit Components-Avoiding Automatic Remapping by the Server
-
-Whenever a client remaps the keyboard using core protocol requests, Xkb examines
-the map to determine likely default values for the components that cannot be
-specified using the core protocol.
-
-This automatic remapping might replace definitions explicitly requested by an
-application, so the Xkb keyboard description defines an explicit components mask
-for each key. Any aspects of the automatic remapping listed in the explicit
-components mask for a key are not changed by the automatic keyboard mapping.
-
-The explicit components masks are held in the
-.I explicit
-field of the server map, which is an array indexed by keycode. Each entry in
-this array is a mask that is a bitwise inclusive OR of the values shown in Table
-1.
-
-.TS
-c s s
-l l l
-l l lw(3i).
-Table 1 Explicit Component Masks
-_
-Bit in Explicit Mask Value Protects Against
-_
-ExplicitKeyType1 (1<<0) T{
-Automatic determination of the key type associated with Group1.
-T}
-ExplicitKeyType2 (1<<1) T{
-Automatic determination of the key type associated with Group2.
-T}
-ExplicitKeyType3 (1<<2) T{
-Automatic determination of the key type associated with Group3.
-T}
-ExplicitKeyType4 (1<<3) T{
-Automatic determination of the key type associated with Group4.
-T}
-ExplicitInterpret (1<<4) T{
-Application of any of the fields of a symbol interpretation to the key in
-question.
-T}
-ExplicitAutoRepeat (1<<5) T{
-Automatic determination of auto-repeat status for the key, as specified in a
-symbol interpretation.
-T}
-ExplicitBehavior (1<<6) T{
-Automatic assignment of the XkbKB_Lock behavior to the key, if the
-XkbSI_LockingKey flag is set in a symbol interpretation.
-T}
-ExplicitVModMap (1<<7) T{
-Automatic determination of the virtual modifier map for the key based on the
-actions assigned to the key and the symbol interpretations that match the key.
-T}
-.TE
-.TP 4
-1.
-Map the symbols from the keys in the core keyboard map to groups and symbols on
-keys in the Xkb keyboard map. The core keyboard mapping is of fixed width, so
-each key in the core mapping has the same number of symbols associated with it.
-The Xkb mapping allows a different number of symbols to be associated with each
-key; those symbols may be divided into a different number of groups (1-4) for
-each key. For each key, this process therefore involves partitioning the fixed
-number of symbols from the core mapping into a set of variable-length groups
-with a variable number of symbols in each group. For example, if the core
-protocol map is of width five, the partition for one key might result in one
-group with two symbols and another with three symbols. A different key might
-result in two groups with two symbols plus a third group with one symbol. The
-core protocol map requires at least two symbols in each of the first two groups.
-.TP 4
-1a.
-For each changed key, determine the number of groups represented in the new core
-keyboard map. This results in a tentative group count for each key in the Xkb
-map.
-.TP 4
-1b.
-For each changed key, determine the number of symbols in each of the groups
-found in step 1a. There is one explicit override control associated with each of
-the four possible groups for each Xkb key, ExplicitKeyType1 through
-ExplicitKeyType4. If no explicit override control is set for a group, the number
-of symbols used for that group from the core map is two. If the explicit
-override control is set for a group on the key, the number of symbols used for
-that Xkb group from the core map is the width of the Xkb group with one
-exception: because of the core protocol requirement for at least two symbols in
-each of groups one and two, the number of symbols used for groups one and two is
-the maximum of 2 or the width of the Xkb group.
-.TP 4
-1c.
-For each changed key, assign the symbols in the core map to the appropriate
-group on the key. If the total number of symbols required by the Xkb map for a
-particular key needs more symbols than the core protocol map contains, the
-additional symbols are taken to be NoSymbol keysyms appended to the end of the
-core set. If the core map contains more symbols than are needed by the Xkb map,
-trailing symbols in the core map are discarded. In the absence of an explicit
-override for group one or two, symbols are assigned in order by group; the first
-symbols in the core map are assigned to group one, in order, followed by group
-two, and so on. For example, if the core map contained eight symbols per key,
-and a particular Xkb map contained 2 symbols for G1 and G2 and three for G3, the
-symbols would be assigned as (G is group, L is shift level):
-.nf
-
- G1L1 G1L2 G2L1 G2L2 G3L1 G3L2 G3L3
-
-.fi
-If an explicit override control is set for group one or two, the symbols are
-taken from the core set in a somewhat different order. The first four symbols
-from the core set are assigned to G1L1, G1L2, G2L1, G2L2, respectively. If group
-one requires more symbols, they are taken next, and then any additional symbols
-needed by group two. Group three and four symbols are taken in complete sequence
-after group two. For example, a key with four groups and three symbols in each
-group would take symbols from the core set in the following order:
-.nf
-
- G1L1 G1L2 G2L1 G2L2 G1L3 G2L3 G3L1 G3L2 G3L3 G4L1 G4L2 G4L3
-
-.fi
-As previously noted, the core protocol map requires at lease two symbols in
-groups one and two. Because of this, if an explicit override control for an Xkb
-key is set and group one and / or group two is of width one, it is not possible
-to generate the symbols taken from the core protocol set and assigned to
-position G1L2 and / or G2L2.
-.TP 4
-1d.
-For each group on each changed key, assign a key type appropriate for the
-symbols in the group.
-.TP 4
-1e.
-For each changed key, remove any empty or redundant groups.
-
-At this point, the groups and their associated symbols have been assigned to the
-corresponding key definitions in the Xkb map.
-.TP 4
-2.
-Apply symbol interpretations to modify key operation. This phase is completely
-skipped if the ExplicitInterpret override control bit is set in the explicit
-controls mask for the Xkb key (see Explicit Components-Avoiding Automatic
-Remapping by the Server).
-.TP 4
-2a.
-For each symbol on each changed key, attempt to match the symbol and modifiers
-from the Xkb map to a symbol interpretation describing how to generate the
-symbol.
-.TP 4
-2b.
-When a match is found in step 2a, apply the symbol interpretation to change the
-semantics associated with the symbol in the Xkb key map. If no match is found,
-apply a default interpretation.
-.LP
-The symbol interpretations used in step 2 are configurable and may be specified
-using XkbSymInterpretRec structures referenced by the sym_interpret field of an
-XkbCompatMapRec.
-
-.B Symbol Interpretations - the XkbSymInterpretRec Structure
-
-Symbol interpretations are used to guide the X server when it modifies the Xkb
-keymap in step 2. An initial set of symbol interpretations is loaded by the
-server when it starts. A client may add new ones using XkbSetCompatMap.
-
-Symbol interpretations result in key semantics being set. When a symbol
-interpretation is applied, the following components of server key event
-processing may be modified for the particular key involved:
-.nf
-
- Virtual modifier map
- Auto repeat
- Key behavior (may be set to XkbKB_Lock)
- Key action
-
-.fi
-The XkbSymInterpretRec structure specifies a symbol interpretation:
-.nf
-
-typedef struct {
- KeySym sym; /\(** keysym of interest or NULL */
- unsigned char flags; /\(** XkbSI_AutoRepeat, XkbSI_LockingKey */
- unsigned char match; /\(** specifies how mods is interpreted */
- unsigned char mods; /\(** modifier bits, correspond to eight real modifiers */
- unsigned char virtual_mod; /\(** 1 modifier to add to key virtual mod map */
- XkbAnyAction act; /\(** action to bind to symbol position on key */
-} XkbSymInterpretRec,*XkbSymInterpretPtr;
-
-.fi
-If sym is not NULL, it limits the symbol interpretation to keys on which that
-particular keysym is selected by the modifiers matching the criteria specified
-by
-.I mods
-and
-.I match.
-If
-.I sym
-is NULL, the interpretation may be applied to any symbol selected on a key when
-the modifiers match the criteria specified by
-.I mods
-and
-.I match.
-
-.I match
-must be one of the values shown in Table 2 and specifies how the real modifiers
-specified in
-.I mods
-are to be interpreted.
-
-.TS
-c s s
-l l l
-l l lw(3i).
-Table 2 Symbol Interpretation Match Criteria
-_
-Match Criteria Value Effect
-_
-XkbSI_NoneOf (0) T{
-None of the bits that are on in mods can be set, but other bits can be.
-T}
-XkbSI_AnyOfOrNone (1) T{
-Zero or more of the bits that are on in mods can be set, as well as others.
-T}
-XkbSI_AnyOf (2) T{
-One or more of the bits that are on in mods can be set, as well as any others.
-T}
-XkbSI_AllOf (3) T{
-All of the bits that are on in mods must be set, but others may be set as well.
-T}
-XkbSI_Exactly (4) T{
-All of the bits that are on in mods must be set, and no other bits may be set.
-T}
-.TE
-
-In addition to the above bits,
-.I match
-may contain the XkbSI_LevelOneOnly bit, in which case the modifier match
-criteria specified by
-.I mods
-and
-.I match
-applies only if
-.I sym
-is in level one of its group; otherwise,
-.I mods
-and
-.I match
-are ignored and the symbol matches a condition where no modifiers are set.
-.nf
-
-\&#define XkbSI_LevelOneOnly (0x80) /\(** use mods + match only if sym is level 1 */
-
-.fi
-If no matching symbol interpretation is found, the server uses a default
-interpretation where:
-.nf
-
- sym = 0
- flags = XkbSI_AutoRepeat
- match = XkbSI_AnyOfOrNone
- mods = 0
- virtual_mod = XkbNoModifier
- act = SA_NoAction
-
-.fi
-When a matching symbol interpretation is found in step 2a, the interpretation is
-applied to modify the Xkb map as follows.
-
-The
-.I act
-field specifies a single action to be bound to the symbol position; any key event that selects the symbol
-causes the action to be taken. Valid actions are defined in Key Actions.
-
-If the Xkb keyboard map for the key does not have its ExplicitVModMap control set, the XkbSI_LevelOneOnly bit
-and symbol position are examined. If the XkbSI_LevelOneOnly bit is not set in
-.I match
-or the symbol is in position G1L1, the
-.I virtual_mod
-field is examined. If
-.I virtual_mod
-is not XkbNoModifier,
-.I virtual_mod
-specifies a single virtual modifier to be added to the virtual modifier map for the key.
-.I virtual_mod
-is specified as an index in the range [0..15].
-
-If the matching symbol is in position G1L1 of the key, two bits in the flags field potentially specify
-additional behavior modifications:
-.nf
-
-\&#define XkbSI_AutoRepeat (1<<0) /\(** key repeats if sym is in position G1L1 */
-\&#define XkbSI_LockingKey (1<<1) /\(** set KB_Lock behavior if sym is in psn G1L1 */
-
-.fi
-If the Xkb keyboard map for the key does not have its ExplicitAutoRepeat control set, its auto repeat behavior
-is set based on the value of the XkbSI_AutoRepeat bit. If the XkbSI_AutoRepeat bit is set, the auto-repeat
-behavior of the key is turned on; otherwise, it is turned off.
-
-If the Xkb keyboard map for the key does not have its ExplicitBehavior control set, its locking behavior is
-set based on the value of the XkbSI_LockingKey bit. If XkbSI_LockingKey is set, the key behavior is set to
-KB_Lock; otherwise, it is turned off.
-.SH "SEE ALSO"
-.BR XkbKeyAction (__libmansuffix__),
-.BR XkbKeyActionEntry (__libmansuffix__),
-.BR XkbKeyActionsPtr (__libmansuffix__),
-.BR XkbKeyHasActions (__libmansuffix__),
-.BR XkbKeyNumActions (__libmansuffix__)
+'\" t
+.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the "Software"),
+.\" to deal in the Software without restriction, including without limitation
+.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
+.\" and/or sell copies of the Software, and to permit persons to whom the
+.\" Software is furnished to do so, subject to the following conditions:
+.\"
+.\" The above copyright notice and this permission notice (including the next
+.\" paragraph) shall be included in all copies or substantial portions of the
+.\" Software.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+.\" DEALINGS IN THE SOFTWARE.
+.\"
+.TH XkbApplyCompatMapToKey __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbApplyCompatMapToKey \- Apply the new compatibility mapping to an individual
+key to get its semantics updated
+.SH SYNOPSIS
+.HP
+.B Bool XkbApplyCompatMapToKey
+.BI "(\^XkbDescPtr " "xkb" "\^,"
+.BI "KeyCode " "key" "\^,"
+.BI "XkbChangesPtr " "changes" "\^);"
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- xkb
+keyboard description to be updated
+.TP
+.I \- key
+key to be updated
+.TP
+.I \- changes
+notes changes to the Xkb keyboard description
+.SH DESCRIPTION
+.LP
+.I XkbApplyCompatMapToKey
+essentially performs the operation described in Core Keyboard Mapping to Xkb
+Keyboard Mapping Transformation to a specific key. This updates the behavior,
+actions, repeat status, and virtual modifier bindings of the key.
+
+.B Core Keyboard Mapping to Xkb Keyboard Mapping Transformation
+
+When a core protocol keyboard mapping request is received by the server, the
+server's core keyboard map is updated, and then the Xkb map maintained by the
+server is updated. Because a client may have explicitly configured some of the
+Xkb keyboard mapping in the server, this automatic regeneration of the Xkb
+keyboard mapping from the core protocol keyboard mapping should not modify any
+components of the Xkb keyboard mapping that were explicitly set by a client. The
+client must set explicit override controls to prevent this from happening (see
+Explicit Components-Avoiding Automatic Remapping by the Server). The core-to-Xkb
+mapping is done as follows:
+
+.B Explicit Components-Avoiding Automatic Remapping by the Server
+
+Whenever a client remaps the keyboard using core protocol requests, Xkb examines
+the map to determine likely default values for the components that cannot be
+specified using the core protocol.
+
+This automatic remapping might replace definitions explicitly requested by an
+application, so the Xkb keyboard description defines an explicit components mask
+for each key. Any aspects of the automatic remapping listed in the explicit
+components mask for a key are not changed by the automatic keyboard mapping.
+
+The explicit components masks are held in the
+.I explicit
+field of the server map, which is an array indexed by keycode. Each entry in
+this array is a mask that is a bitwise inclusive OR of the values shown in Table
+1.
+
+.TS
+c s s
+l l l
+l l lw(3i).
+Table 1 Explicit Component Masks
+_
+Bit in Explicit Mask Value Protects Against
+_
+ExplicitKeyType1 (1<<0) T{
+Automatic determination of the key type associated with Group1.
+T}
+ExplicitKeyType2 (1<<1) T{
+Automatic determination of the key type associated with Group2.
+T}
+ExplicitKeyType3 (1<<2) T{
+Automatic determination of the key type associated with Group3.
+T}
+ExplicitKeyType4 (1<<3) T{
+Automatic determination of the key type associated with Group4.
+T}
+ExplicitInterpret (1<<4) T{
+Application of any of the fields of a symbol interpretation to the key in
+question.
+T}
+ExplicitAutoRepeat (1<<5) T{
+Automatic determination of auto-repeat status for the key, as specified in a
+symbol interpretation.
+T}
+ExplicitBehavior (1<<6) T{
+Automatic assignment of the XkbKB_Lock behavior to the key, if the
+XkbSI_LockingKey flag is set in a symbol interpretation.
+T}
+ExplicitVModMap (1<<7) T{
+Automatic determination of the virtual modifier map for the key based on the
+actions assigned to the key and the symbol interpretations that match the key.
+T}
+.TE
+.TP 4
+1.
+Map the symbols from the keys in the core keyboard map to groups and symbols on
+keys in the Xkb keyboard map. The core keyboard mapping is of fixed width, so
+each key in the core mapping has the same number of symbols associated with it.
+The Xkb mapping allows a different number of symbols to be associated with each
+key; those symbols may be divided into a different number of groups (1-4) for
+each key. For each key, this process therefore involves partitioning the fixed
+number of symbols from the core mapping into a set of variable-length groups
+with a variable number of symbols in each group. For example, if the core
+protocol map is of width five, the partition for one key might result in one
+group with two symbols and another with three symbols. A different key might
+result in two groups with two symbols plus a third group with one symbol. The
+core protocol map requires at least two symbols in each of the first two groups.
+.TP 4
+1a.
+For each changed key, determine the number of groups represented in the new core
+keyboard map. This results in a tentative group count for each key in the Xkb
+map.
+.TP 4
+1b.
+For each changed key, determine the number of symbols in each of the groups
+found in step 1a. There is one explicit override control associated with each of
+the four possible groups for each Xkb key, ExplicitKeyType1 through
+ExplicitKeyType4. If no explicit override control is set for a group, the number
+of symbols used for that group from the core map is two. If the explicit
+override control is set for a group on the key, the number of symbols used for
+that Xkb group from the core map is the width of the Xkb group with one
+exception: because of the core protocol requirement for at least two symbols in
+each of groups one and two, the number of symbols used for groups one and two is
+the maximum of 2 or the width of the Xkb group.
+.TP 4
+1c.
+For each changed key, assign the symbols in the core map to the appropriate
+group on the key. If the total number of symbols required by the Xkb map for a
+particular key needs more symbols than the core protocol map contains, the
+additional symbols are taken to be NoSymbol keysyms appended to the end of the
+core set. If the core map contains more symbols than are needed by the Xkb map,
+trailing symbols in the core map are discarded. In the absence of an explicit
+override for group one or two, symbols are assigned in order by group; the first
+symbols in the core map are assigned to group one, in order, followed by group
+two, and so on. For example, if the core map contained eight symbols per key,
+and a particular Xkb map contained 2 symbols for G1 and G2 and three for G3, the
+symbols would be assigned as (G is group, L is shift level):
+.nf
+
+ G1L1 G1L2 G2L1 G2L2 G3L1 G3L2 G3L3
+
+.fi
+If an explicit override control is set for group one or two, the symbols are
+taken from the core set in a somewhat different order. The first four symbols
+from the core set are assigned to G1L1, G1L2, G2L1, G2L2, respectively. If group
+one requires more symbols, they are taken next, and then any additional symbols
+needed by group two. Group three and four symbols are taken in complete sequence
+after group two. For example, a key with four groups and three symbols in each
+group would take symbols from the core set in the following order:
+.nf
+
+ G1L1 G1L2 G2L1 G2L2 G1L3 G2L3 G3L1 G3L2 G3L3 G4L1 G4L2 G4L3
+
+.fi
+As previously noted, the core protocol map requires at lease two symbols in
+groups one and two. Because of this, if an explicit override control for an Xkb
+key is set and group one and / or group two is of width one, it is not possible
+to generate the symbols taken from the core protocol set and assigned to
+position G1L2 and / or G2L2.
+.TP 4
+1d.
+For each group on each changed key, assign a key type appropriate for the
+symbols in the group.
+.TP 4
+1e.
+For each changed key, remove any empty or redundant groups.
+
+At this point, the groups and their associated symbols have been assigned to the
+corresponding key definitions in the Xkb map.
+.TP 4
+2.
+Apply symbol interpretations to modify key operation. This phase is completely
+skipped if the ExplicitInterpret override control bit is set in the explicit
+controls mask for the Xkb key (see Explicit Components-Avoiding Automatic
+Remapping by the Server).
+.TP 4
+2a.
+For each symbol on each changed key, attempt to match the symbol and modifiers
+from the Xkb map to a symbol interpretation describing how to generate the
+symbol.
+.TP 4
+2b.
+When a match is found in step 2a, apply the symbol interpretation to change the
+semantics associated with the symbol in the Xkb key map. If no match is found,
+apply a default interpretation.
+.LP
+The symbol interpretations used in step 2 are configurable and may be specified
+using XkbSymInterpretRec structures referenced by the sym_interpret field of an
+XkbCompatMapRec.
+
+.B Symbol Interpretations - the XkbSymInterpretRec Structure
+
+Symbol interpretations are used to guide the X server when it modifies the Xkb
+keymap in step 2. An initial set of symbol interpretations is loaded by the
+server when it starts. A client may add new ones using XkbSetCompatMap.
+
+Symbol interpretations result in key semantics being set. When a symbol
+interpretation is applied, the following components of server key event
+processing may be modified for the particular key involved:
+.nf
+
+ Virtual modifier map
+ Auto repeat
+ Key behavior (may be set to XkbKB_Lock)
+ Key action
+
+.fi
+The XkbSymInterpretRec structure specifies a symbol interpretation:
+.nf
+
+typedef struct {
+ KeySym sym; /\(** keysym of interest or NULL */
+ unsigned char flags; /\(** XkbSI_AutoRepeat, XkbSI_LockingKey */
+ unsigned char match; /\(** specifies how mods is interpreted */
+ unsigned char mods; /\(** modifier bits, correspond to eight real modifiers */
+ unsigned char virtual_mod; /\(** 1 modifier to add to key virtual mod map */
+ XkbAnyAction act; /\(** action to bind to symbol position on key */
+} XkbSymInterpretRec,*XkbSymInterpretPtr;
+
+.fi
+If sym is not NULL, it limits the symbol interpretation to keys on which that
+particular keysym is selected by the modifiers matching the criteria specified
+by
+.I mods
+and
+.I match.
+If
+.I sym
+is NULL, the interpretation may be applied to any symbol selected on a key when
+the modifiers match the criteria specified by
+.I mods
+and
+.I match.
+
+.I match
+must be one of the values shown in Table 2 and specifies how the real modifiers
+specified in
+.I mods
+are to be interpreted.
+
+.TS
+c s s
+l l l
+l l lw(3i).
+Table 2 Symbol Interpretation Match Criteria
+_
+Match Criteria Value Effect
+_
+XkbSI_NoneOf (0) T{
+None of the bits that are on in mods can be set, but other bits can be.
+T}
+XkbSI_AnyOfOrNone (1) T{
+Zero or more of the bits that are on in mods can be set, as well as others.
+T}
+XkbSI_AnyOf (2) T{
+One or more of the bits that are on in mods can be set, as well as any others.
+T}
+XkbSI_AllOf (3) T{
+All of the bits that are on in mods must be set, but others may be set as well.
+T}
+XkbSI_Exactly (4) T{
+All of the bits that are on in mods must be set, and no other bits may be set.
+T}
+.TE
+
+In addition to the above bits,
+.I match
+may contain the XkbSI_LevelOneOnly bit, in which case the modifier match
+criteria specified by
+.I mods
+and
+.I match
+applies only if
+.I sym
+is in level one of its group; otherwise,
+.I mods
+and
+.I match
+are ignored and the symbol matches a condition where no modifiers are set.
+.nf
+
+\&#define XkbSI_LevelOneOnly (0x80) /\(** use mods + match only if sym is level 1 */
+
+.fi
+If no matching symbol interpretation is found, the server uses a default
+interpretation where:
+.nf
+
+ sym = 0
+ flags = XkbSI_AutoRepeat
+ match = XkbSI_AnyOfOrNone
+ mods = 0
+ virtual_mod = XkbNoModifier
+ act = SA_NoAction
+
+.fi
+When a matching symbol interpretation is found in step 2a, the interpretation is
+applied to modify the Xkb map as follows.
+
+The
+.I act
+field specifies a single action to be bound to the symbol position; any key event that selects the symbol
+causes the action to be taken. Valid actions are defined in Key Actions.
+
+If the Xkb keyboard map for the key does not have its ExplicitVModMap control set, the XkbSI_LevelOneOnly bit
+and symbol position are examined. If the XkbSI_LevelOneOnly bit is not set in
+.I match
+or the symbol is in position G1L1, the
+.I virtual_mod
+field is examined. If
+.I virtual_mod
+is not XkbNoModifier,
+.I virtual_mod
+specifies a single virtual modifier to be added to the virtual modifier map for the key.
+.I virtual_mod
+is specified as an index in the range [0..15].
+
+If the matching symbol is in position G1L1 of the key, two bits in the flags field potentially specify
+additional behavior modifications:
+.nf
+
+\&#define XkbSI_AutoRepeat (1<<0) /\(** key repeats if sym is in position G1L1 */
+\&#define XkbSI_LockingKey (1<<1) /\(** set KB_Lock behavior if sym is in psn G1L1 */
+
+.fi
+If the Xkb keyboard map for the key does not have its ExplicitAutoRepeat control set, its auto repeat behavior
+is set based on the value of the XkbSI_AutoRepeat bit. If the XkbSI_AutoRepeat bit is set, the auto-repeat
+behavior of the key is turned on; otherwise, it is turned off.
+
+If the Xkb keyboard map for the key does not have its ExplicitBehavior control set, its locking behavior is
+set based on the value of the XkbSI_LockingKey bit. If XkbSI_LockingKey is set, the key behavior is set to
+KB_Lock; otherwise, it is turned off.
+.SH "SEE ALSO"
+.BR XkbKeyAction (__libmansuffix__),
+.BR XkbKeyActionEntry (__libmansuffix__),
+.BR XkbKeyActionsPtr (__libmansuffix__),
+.BR XkbKeyHasActions (__libmansuffix__),
+.BR XkbKeyNumActions (__libmansuffix__)
diff --git a/libX11/man/xkb/XkbBell.man b/libX11/man/xkb/XkbBell.man
index 6e0c6e8a9..c6fc0e001 100644
--- a/libX11/man/xkb/XkbBell.man
+++ b/libX11/man/xkb/XkbBell.man
@@ -1,328 +1,328 @@
-'\" t
-.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
-.\"
-.\" Permission is hereby granted, free of charge, to any person obtaining a
-.\" copy of this software and associated documentation files (the "Software"),
-.\" to deal in the Software without restriction, including without limitation
-.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
-.\" and/or sell copies of the Software, and to permit persons to whom the
-.\" Software is furnished to do so, subject to the following conditions:
-.\"
-.\" The above copyright notice and this permission notice (including the next
-.\" paragraph) shall be included in all copies or substantial portions of the
-.\" Software.
-.\"
-.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-.\" DEALINGS IN THE SOFTWARE.
-.\"
-.TH XkbBell __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
-.SH NAME
-XkbBell \- Rings the bell on the default keyboard
-.SH SYNOPSIS
-.HP
-.B Bool XkbBell
-.BI "(\^Display *" "display" "\^,"
-.BI "Window " "window" "\^,"
-.BI "int " "percent" "\^,"
-.BI "Atom " "name" "\^);"
-.if n .ti +5n
-.if t .ti +.5i
-.SH ARGUMENTS
-.TP
-.I \- display
-connection to the X server
-.TP
-.I \- window
-event window, or None
-.TP
-.I \- percent
-relative volume, which can range from -100 to 100 inclusive
-.TP
-.I \- name
-a bell name, or NULL
-.SH DESCRIPTION
-.LP
-The core X protocol allows only applications to explicitly sound the system bell
-with a
-given duration, pitch, and volume. Xkb extends this capability by allowing
-clients to
-attach symbolic names to bells, disable audible bells, and receive an event
-whenever the
-keyboard bell is rung. For the purposes of this document, the
-.I audible
-bell is defined to be the system bell, or the default keyboard bell, as opposed
-to any
-other audible sound generated elsewhere in the system.
-You can ask to receive XkbBellNotify events when any client rings any one of the
-following:
-
-.IP \(bu 5
-The default bell
-.IP \(bu 5
-Any bell on an input device that can be specified by a bell_class and bell_id
-pair
-.IP \(bu 5
-Any bell specified only by an arbitrary name. (This is, from the server's point
-of view,
-merely a name, and not connected with any physical sound-generating device. Some
-client
-application must generate the sound, or visual feedback, if any, that is
-associated with
-the name.)
-
-.LP
-You can also ask to receive XkbBellNotify events when the server rings the
-default bell
-or if any client has requested events only (without the bell sounding) for any
-of the
-bell types previously listed.
-
-You can disable audible bells on a global basis. For example, a client that
-replaces the
-keyboard bell with some other audible cue might want to turn off the AudibleBell
-control
-to prevent the server from also generating a sound and avoid cacophony. If you
-disable
-audible bells and request to receive XkbBellNotify events, you can generate
-feedback
-different from the default bell.
-
-You can, however, override the AudibleBell control by calling one of the
-functions that
-force the ringing of a bell in spite of the setting of the AudibleBell control -
-.I XkbForceDeviceBell
-or
-.I XkbForceBell.
-In this case the server does not generate a bell event.
-
-Just as some keyboards can produce keyclicks to indicate when a key is pressed
-or
-repeating, Xkb can provide feedback for the controls by using special beep
-codes. The
-AccessXFeedback control is used to configure the specific types of operations
-that
-generate feedback.
-
-Bell Names
-
-You can associate a name to an act of ringing a bell by converting the name to
-an Atom
-and then using this name when you call the functions listed in this chapter. If
-an event
-is generated as a result, the name is then passed to all other clients
-interested in
-receiving XkbBellNotify events. Note that these are arbitrary names and that
-there is no
-binding to any sounds. Any sounds or other effects (such as visual bells on the
-screen)
-must be generated by a client application upon receipt of the bell event
-containing the
-name. There is no default name for the default keyboard bell. The server does
-generate
-some predefined bells for the AccessX controls. These named bells are shown in
-Table 1 below; the name is included in any bell event sent to clients that have
-requested to receive XkbBellNotify events.
-
-.TS
-c s
-l l
-lW(4I) l.
-Table 1 Predefined Bells
-_
-Action Named Bell
-_
-Indicator turned on AX_IndicatorOn
-Indicator turned off AX_IndicatorOff
-More than one indicator changed state AX_IndicatorChange
-Control turned on AX_FeatureOn
-Control turned off AX_FeatureOff
-More than one control changed state AX_FeatureChange
-T{ SlowKeys and BounceKeys about to be turned on or off
-T} AX_SlowKeysWarning
-SlowKeys key pressed AX_SlowKeyPress
-SlowKeys key accepted AX_SlowKeyAccept
-SlowKeys key rejected AX_SlowKeyReject
-Accepted SlowKeys key released AX_SlowKeyRelease
-BounceKeys key rejected AX_BounceKeyReject
-StickyKeys key latched AX_StickyLatch
-StickyKeys key locked AX_StickyLock
-StickyKeys key unlocked AX_StickyUnlock
-.TE
-
-Audible Bells
-
-Using Xkb you can generate bell events that do not necessarily ring the system
-bell. This
-is useful if you need to use an audio server instead of the system beep. For
-example,
-when an audio client starts, it could disable the audible bell (the system bell)
-and then
-listen for XkbBellNotify events. When it receives a XkbBellNotify event, the
-audio client
-could then send a request to an audio server to play a sound.
-
-You can control the audible bells feature by passing the XkbAudibleBellMask to
-.I XkbChangeEnabledControls.
-If you set XkbAudibleBellMask on, the server rings the system bell when a bell
-event
-occurs. This is the default. If you set XkbAudibleBellMask off and a bell event
-occurs,
-the server does not ring the system bell unless you call
-.I XkbForceDeviceBell
-or
-.I XkbForceBell.
-
-Audible bells are also part of the per-client auto-reset controls.
-
-Bell Functions
-
-Use the functions described in this section to ring bells and to generate bell
-events.
-
-The input extension has two types of feedbacks that can generate bells - bell
-feedback
-and keyboard feedback. Some of the functions in this section have
-.I bell_class
-and
-.I bell_id
-parameters; set them as follows: Set
-.I bell_class
-to BellFeedbackClass or KbdFeedbackClass. A device can have more than one
-feedback of
-each type; set
-.I bell_id
-to the particular bell feedback of
-.I bell_class
-type.
-
-Table 2 shows the conditions that cause a bell to sound or an XkbBellNotifyEvent
-to be generated when a bell function is called.
-
-.TS
-c s s s
-l l l l
-l l l l.
-Table 2 Bell Sounding and Bell Event Generating
-_
-Function called AudibleBell Server sounds a bell Server sends an
-XkbBellNotifyEvent
-_
-XkbDeviceBell On Yes Yes
-XkbDeviceBell Off No Yes
-XkbBell On Yes Yes
-XkbBell Off No Yes
-XkbDeviceBellEvent On or Off No Yes
-XkbBellEvent On or Off No Yes
-XkbDeviceForceBell On or Off Yes No
-XkbForceBell On or Off Yes No
-.TE
-
-If a compatible keyboard extension isn't present in the X server,
-.I XkbBell
-calls
-.I XBell
-with the specified
-.I display
-and
-.I percent,
-and returns False. Otherwise,
-.I XkbBell
-calls
-.I XkbDeviceBell
-with the specified
-.I display, window, percent,
-and
-.I name,
-a
-.I device_spec
-of XkbUseCoreKbd, a
-.I bell_class
-of XkbDfltXIClass, and a
-.I bell_id
-of XkbDfltXIId, and returns True.
-
-If you have disabled the audible bell, the server does not ring the system bell,
-although it does generate a XkbBellNotify event.
-
-You can call
-.I XkbBell
-without first initializing the keyboard extension.
-.SH "RETURN VALUES"
-.TP 15
-FALSE
-The XkbBell function returns FALSE if XlibDisplayNoXkb is set.
-.SH STRUCTURES
-.LP
-Xkb generates XkbBellNotify events for all bells except for those resulting from
-calls to
-.I XkbForceDeviceBell
-and
-.I XkbForceBell.
-To receive XkbBellNotify events under all possible conditions, pass
-XkbBellNotifyMask in
-both the
-.I bits_to_change
-and
-.I values_for_bits
-parameters to
-.I XkbSelectEvents.
-
-The XkbBellNotify event has no event details. It is either selected or it is
-not.
-However, you can call
-.I XkbSelectEventDetails
-using XkbBellNotify as the
-.I event_type
-and specifying XkbAllBellNotifyMask in
-.I bits_to_change
-and
-.I values_for_bits.
-This has the same effect as a call to
-.I XkbSelectEvents.
-
-The structure for the XkbBellNotify event type contains:
-.nf
-
- typedef struct _XkbBellNotify {
- int type; /\(** Xkb extension base event code */
- unsigned long serial; /\(** X server serial number for event */
- Bool send_event; /\(** True => synthetically generated */
- Display * display; /\(** server connection where event generated */
- Time time; /\(** server time when event generated */
- int xkb_type; /\(** XkbBellNotify */
- unsigned int device; /\(** Xkb device ID, will not be XkbUseCoreKbd
-*/
- int percent; /\(** requested volume as % of max */
- int pitch; /\(** requested pitch in Hz */
- int duration; /\(** requested duration in microseconds */
- unsigned int bell_class; /\(** X input extension feedback class */
- unsigned int bell_id; /\(** X input extension feedback ID */
- Atom name; /\(** "name" of requested bell */
- Window window; /\(** window associated with event */
- Bool event_only; /\(** False -> the server did not produce a beep
-*/
- } XkbBellNotifyEvent;
-
-.fi
-If your application needs to generate visual bell feedback on the screen when it
-receives
-a bell event, use the window ID in the XkbBellNotifyEvent, if present.
-
-.SH "SEE ALSO"
-.BR XBell (__libmansuffix__),
-.BR XkbBellNotify (__libmansuffix__),
-.BR XkbChangeEnabledControls (__libmansuffix__),
-.BR XkbDeviceBell (__libmansuffix__),
-.BR XkbForceBell (__libmansuffix__),
-.BR XkbForceDeviceBell (__libmansuffix__),
-.BR XkbUseCoreKbd (__libmansuffix__)
-
-
-
-
-
+'\" t
+.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the "Software"),
+.\" to deal in the Software without restriction, including without limitation
+.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
+.\" and/or sell copies of the Software, and to permit persons to whom the
+.\" Software is furnished to do so, subject to the following conditions:
+.\"
+.\" The above copyright notice and this permission notice (including the next
+.\" paragraph) shall be included in all copies or substantial portions of the
+.\" Software.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+.\" DEALINGS IN THE SOFTWARE.
+.\"
+.TH XkbBell __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbBell \- Rings the bell on the default keyboard
+.SH SYNOPSIS
+.HP
+.B Bool XkbBell
+.BI "(\^Display *" "display" "\^,"
+.BI "Window " "window" "\^,"
+.BI "int " "percent" "\^,"
+.BI "Atom " "name" "\^);"
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- display
+connection to the X server
+.TP
+.I \- window
+event window, or None
+.TP
+.I \- percent
+relative volume, which can range from -100 to 100 inclusive
+.TP
+.I \- name
+a bell name, or NULL
+.SH DESCRIPTION
+.LP
+The core X protocol allows only applications to explicitly sound the system bell
+with a
+given duration, pitch, and volume. Xkb extends this capability by allowing
+clients to
+attach symbolic names to bells, disable audible bells, and receive an event
+whenever the
+keyboard bell is rung. For the purposes of this document, the
+.I audible
+bell is defined to be the system bell, or the default keyboard bell, as opposed
+to any
+other audible sound generated elsewhere in the system.
+You can ask to receive XkbBellNotify events when any client rings any one of the
+following:
+
+.IP \(bu 5
+The default bell
+.IP \(bu 5
+Any bell on an input device that can be specified by a bell_class and bell_id
+pair
+.IP \(bu 5
+Any bell specified only by an arbitrary name. (This is, from the server's point
+of view,
+merely a name, and not connected with any physical sound-generating device. Some
+client
+application must generate the sound, or visual feedback, if any, that is
+associated with
+the name.)
+
+.LP
+You can also ask to receive XkbBellNotify events when the server rings the
+default bell
+or if any client has requested events only (without the bell sounding) for any
+of the
+bell types previously listed.
+
+You can disable audible bells on a global basis. For example, a client that
+replaces the
+keyboard bell with some other audible cue might want to turn off the AudibleBell
+control
+to prevent the server from also generating a sound and avoid cacophony. If you
+disable
+audible bells and request to receive XkbBellNotify events, you can generate
+feedback
+different from the default bell.
+
+You can, however, override the AudibleBell control by calling one of the
+functions that
+force the ringing of a bell in spite of the setting of the AudibleBell control -
+.I XkbForceDeviceBell
+or
+.I XkbForceBell.
+In this case the server does not generate a bell event.
+
+Just as some keyboards can produce keyclicks to indicate when a key is pressed
+or
+repeating, Xkb can provide feedback for the controls by using special beep
+codes. The
+AccessXFeedback control is used to configure the specific types of operations
+that
+generate feedback.
+
+Bell Names
+
+You can associate a name to an act of ringing a bell by converting the name to
+an Atom
+and then using this name when you call the functions listed in this chapter. If
+an event
+is generated as a result, the name is then passed to all other clients
+interested in
+receiving XkbBellNotify events. Note that these are arbitrary names and that
+there is no
+binding to any sounds. Any sounds or other effects (such as visual bells on the
+screen)
+must be generated by a client application upon receipt of the bell event
+containing the
+name. There is no default name for the default keyboard bell. The server does
+generate
+some predefined bells for the AccessX controls. These named bells are shown in
+Table 1 below; the name is included in any bell event sent to clients that have
+requested to receive XkbBellNotify events.
+
+.TS
+c s
+l l
+lW(4I) l.
+Table 1 Predefined Bells
+_
+Action Named Bell
+_
+Indicator turned on AX_IndicatorOn
+Indicator turned off AX_IndicatorOff
+More than one indicator changed state AX_IndicatorChange
+Control turned on AX_FeatureOn
+Control turned off AX_FeatureOff
+More than one control changed state AX_FeatureChange
+T{ SlowKeys and BounceKeys about to be turned on or off
+T} AX_SlowKeysWarning
+SlowKeys key pressed AX_SlowKeyPress
+SlowKeys key accepted AX_SlowKeyAccept
+SlowKeys key rejected AX_SlowKeyReject
+Accepted SlowKeys key released AX_SlowKeyRelease
+BounceKeys key rejected AX_BounceKeyReject
+StickyKeys key latched AX_StickyLatch
+StickyKeys key locked AX_StickyLock
+StickyKeys key unlocked AX_StickyUnlock
+.TE
+
+Audible Bells
+
+Using Xkb you can generate bell events that do not necessarily ring the system
+bell. This
+is useful if you need to use an audio server instead of the system beep. For
+example,
+when an audio client starts, it could disable the audible bell (the system bell)
+and then
+listen for XkbBellNotify events. When it receives a XkbBellNotify event, the
+audio client
+could then send a request to an audio server to play a sound.
+
+You can control the audible bells feature by passing the XkbAudibleBellMask to
+.I XkbChangeEnabledControls.
+If you set XkbAudibleBellMask on, the server rings the system bell when a bell
+event
+occurs. This is the default. If you set XkbAudibleBellMask off and a bell event
+occurs,
+the server does not ring the system bell unless you call
+.I XkbForceDeviceBell
+or
+.I XkbForceBell.
+
+Audible bells are also part of the per-client auto-reset controls.
+
+Bell Functions
+
+Use the functions described in this section to ring bells and to generate bell
+events.
+
+The input extension has two types of feedbacks that can generate bells - bell
+feedback
+and keyboard feedback. Some of the functions in this section have
+.I bell_class
+and
+.I bell_id
+parameters; set them as follows: Set
+.I bell_class
+to BellFeedbackClass or KbdFeedbackClass. A device can have more than one
+feedback of
+each type; set
+.I bell_id
+to the particular bell feedback of
+.I bell_class
+type.
+
+Table 2 shows the conditions that cause a bell to sound or an XkbBellNotifyEvent
+to be generated when a bell function is called.
+
+.TS
+c s s s
+l l l l
+l l l l.
+Table 2 Bell Sounding and Bell Event Generating
+_
+Function called AudibleBell Server sounds a bell Server sends an
+XkbBellNotifyEvent
+_
+XkbDeviceBell On Yes Yes
+XkbDeviceBell Off No Yes
+XkbBell On Yes Yes
+XkbBell Off No Yes
+XkbDeviceBellEvent On or Off No Yes
+XkbBellEvent On or Off No Yes
+XkbDeviceForceBell On or Off Yes No
+XkbForceBell On or Off Yes No
+.TE
+
+If a compatible keyboard extension isn't present in the X server,
+.I XkbBell
+calls
+.I XBell
+with the specified
+.I display
+and
+.I percent,
+and returns False. Otherwise,
+.I XkbBell
+calls
+.I XkbDeviceBell
+with the specified
+.I display, window, percent,
+and
+.I name,
+a
+.I device_spec
+of XkbUseCoreKbd, a
+.I bell_class
+of XkbDfltXIClass, and a
+.I bell_id
+of XkbDfltXIId, and returns True.
+
+If you have disabled the audible bell, the server does not ring the system bell,
+although it does generate a XkbBellNotify event.
+
+You can call
+.I XkbBell
+without first initializing the keyboard extension.
+.SH "RETURN VALUES"
+.TP 15
+FALSE
+The XkbBell function returns FALSE if XlibDisplayNoXkb is set.
+.SH STRUCTURES
+.LP
+Xkb generates XkbBellNotify events for all bells except for those resulting from
+calls to
+.I XkbForceDeviceBell
+and
+.I XkbForceBell.
+To receive XkbBellNotify events under all possible conditions, pass
+XkbBellNotifyMask in
+both the
+.I bits_to_change
+and
+.I values_for_bits
+parameters to
+.I XkbSelectEvents.
+
+The XkbBellNotify event has no event details. It is either selected or it is
+not.
+However, you can call
+.I XkbSelectEventDetails
+using XkbBellNotify as the
+.I event_type
+and specifying XkbAllBellNotifyMask in
+.I bits_to_change
+and
+.I values_for_bits.
+This has the same effect as a call to
+.I XkbSelectEvents.
+
+The structure for the XkbBellNotify event type contains:
+.nf
+
+ typedef struct _XkbBellNotify {
+ int type; /\(** Xkb extension base event code */
+ unsigned long serial; /\(** X server serial number for event */
+ Bool send_event; /\(** True => synthetically generated */
+ Display * display; /\(** server connection where event generated */
+ Time time; /\(** server time when event generated */
+ int xkb_type; /\(** XkbBellNotify */
+ unsigned int device; /\(** Xkb device ID, will not be XkbUseCoreKbd
+*/
+ int percent; /\(** requested volume as % of max */
+ int pitch; /\(** requested pitch in Hz */
+ int duration; /\(** requested duration in microseconds */
+ unsigned int bell_class; /\(** X input extension feedback class */
+ unsigned int bell_id; /\(** X input extension feedback ID */
+ Atom name; /\(** "name" of requested bell */
+ Window window; /\(** window associated with event */
+ Bool event_only; /\(** False -> the server did not produce a beep
+*/
+ } XkbBellNotifyEvent;
+
+.fi
+If your application needs to generate visual bell feedback on the screen when it
+receives
+a bell event, use the window ID in the XkbBellNotifyEvent, if present.
+
+.SH "SEE ALSO"
+.BR XBell (__libmansuffix__),
+.BR XkbBellNotify (__libmansuffix__),
+.BR XkbChangeEnabledControls (__libmansuffix__),
+.BR XkbDeviceBell (__libmansuffix__),
+.BR XkbForceBell (__libmansuffix__),
+.BR XkbForceDeviceBell (__libmansuffix__),
+.BR XkbUseCoreKbd (__libmansuffix__)
+
+
+
+
+
diff --git a/libX11/man/xkb/XkbBellEvent.man b/libX11/man/xkb/XkbBellEvent.man
index 172a86403..bf6f46905 100644
--- a/libX11/man/xkb/XkbBellEvent.man
+++ b/libX11/man/xkb/XkbBellEvent.man
@@ -1,325 +1,325 @@
-'\" t
-.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
-.\"
-.\" Permission is hereby granted, free of charge, to any person obtaining a
-.\" copy of this software and associated documentation files (the "Software"),
-.\" to deal in the Software without restriction, including without limitation
-.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
-.\" and/or sell copies of the Software, and to permit persons to whom the
-.\" Software is furnished to do so, subject to the following conditions:
-.\"
-.\" The above copyright notice and this permission notice (including the next
-.\" paragraph) shall be included in all copies or substantial portions of the
-.\" Software.
-.\"
-.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-.\" DEALINGS IN THE SOFTWARE.
-.\"
-.TH XkbBellEvent __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
-.SH NAME
-XkbBellEvent \- Provides a function that initiates a bell event for the keyboard
-without ringing the bell
-.SH SYNOPSIS
-.HP
-.B Bool XkbBellEvent
-.BI "(\^Display *" "display" "\^,"
-.BI "Window " "window" "\^,"
-.BI "int " "percent" "\^,"
-.BI "Atom " "name" "\^);"
-.if n .ti +5n
-.if t .ti +.5i
-.SH ARGUMENTS
-.TP
-.I \- display
-connection to the X server
-.TP
-.I \- window
-the event window, or None
-.TP
-.I \- percent,
-relative volume, which can range from -100 to 100 inclusive
-.TP
-.I \- name
-a bell name, or NULL
-.SH DESCRIPTION
-.LP
-The core X protocol allows only applications to explicitly sound the system bell
-with a
-given duration, pitch, and volume. Xkb extends this capability by allowing
-clients to
-attach symbolic names to bells, disable audible bells, and receive an event
-whenever the
-keyboard bell is rung. For the purposes of this document, the
-.I audible
-bell is defined to be the system bell, or the default keyboard bell, as opposed
-to any
-other audible sound generated elsewhere in the system.
-You can ask to receive XkbBellNotify events when any client rings any one of the
-following:
-
-.IP \(bu 5
-The default bell
-.IP \(bu 5
-Any bell on an input device that can be specified by a bell_class and bell_id
-pair
-.IP \(bu 5
-Any bell specified only by an arbitrary name. (This is, from the server's point
-of view,
-merely a name, and not connected with any physical sound-generating device. Some
-client
-application must generate the sound, or visual feedback, if any, that is
-associated with
-the name.)
-
-You can also ask to receive XkbBellNotify events when the server rings the
-default bell
-or if any client has requested events only (without the bell sounding) for any
-of the
-bell types previously listed.
-
-You can disable audible bells on a global basis. For example, a client that
-replaces the
-keyboard bell with some other audible cue might want to turn off the AudibleBell
-control
-to prevent the server from also generating a sound and avoid cacophony. If you
-disable
-audible bells and request to receive XkbBellNotify events, you can generate
-feedback
-different from the default bell.
-
-You can, however, override the AudibleBell control by calling one of the
-functions that
-force the ringing of a bell in spite of the setting of the AudibleBell control -
-.I XkbForceDeviceBell or
-.I XkbForceBell.
-In this case the server does not generate a bell event.
-
-Just as some keyboards can produce keyclicks to indicate when a key is pressed
-or
-repeating, Xkb can provide feedback for the controls by using special beep
-codes. The
-AccessXFeedback control is used to configure the specific types of operations
-that
-generate feedback.
-
-Bell Names
-
-You can associate a name to an act of ringing a bell by converting the name to
-an Atom
-and then using this name when you call the functions listed in this chapter. If
-an event
-is generated as a result, the name is then passed to all other clients
-interested in
-receiving XkbBellNotify events. Note that these are arbitrary names and that
-there is no
-binding to any sounds. Any sounds or other effects (such as visual bells on the
-screen)
-must be generated by a client application upon receipt of the bell event
-containing the
-name. There is no default name for the default keyboard bell. The server does
-generate
-some predefined bells for the AccessX controls. These named bells are shown in
-Table 1; the name is included in any bell event sent to clients that have
-requested to
-receive XkbBellNotify events.
-
-.TS
-c s
-l l
-lW(4i) l.
-Table 1 Predefined Bells
-_
-Action Named Bell
-_
-Indicator turned on AX_IndicatorOn
-Indicator turned off AX_IndicatorOff
-More than one indicator changed state AX_IndicatorChange
-Control turned on AX_FeatureOn
-Control turned off AX_FeatureOff
-More than one control changed state AX_FeatureChange
-T{
-SlowKeys and BounceKeys about to be turned on or off
-T} AX_SlowKeysWarning
-SlowKeys key pressed AX_SlowKeyPress
-SlowKeys key accepted AX_SlowKeyAccept
-SlowKeys key rejected AX_SlowKeyReject
-Accepted SlowKeys key released AX_SlowKeyRelease
-BounceKeys key rejected AX_BounceKeyReject
-StickyKeys key latched AX_StickyLatch
-StickyKeys key locked AX_StickyLock
-StickyKeys key unlocked AX_StickyUnlock
-.TE
-
-Audible Bells
-
-Using Xkb you can generate bell events that do not necessarily ring the system
-bell. This
-is useful if you need to use an audio server instead of the system beep. For
-example,
-when an audio client starts, it could disable the audible bell (the system bell)
-and then
-listen for XkbBellNotify events. When it receives a XkbBellNotify event, the
-audio client
-could then send a request to an audio server to play a sound.
-
-You can control the audible bells feature by passing the XkbAudibleBellMask to
-.I XkbChangeEnabledControls.
-If you set XkbAudibleBellMask on, the server rings the system bell when a bell
-event
-occurs. This is the default. If you set XkbAudibleBellMask off and a bell event
-occurs,
-the server does not ring the system bell unless you call
-.I XkbForceDeviceBell
-or
-.I XkbForceBell.
-
-Audible bells are also part of the per-client auto-reset controls.
-
-Bell Functions
-
-Use the functions described in this section to ring bells and to generate bell
-events.
-
-The input extension has two types of feedbacks that can generate bells - bell
-feedback
-and keyboard feedback. Some of the functions in this section have
-.I bell_class
-and
-.I bell_id
-parameters; set them as follows: Set
-.I bell_class
-to BellFeedbackClass or KbdFeedbackClass. A device can have more than one
-feedback of
-each type; set
-.I bell_id
-to the particular bell feedback of
-.I bell_class
-type.
-
-Table 2 shows the conditions that cause a bell to sound or an
-XkbBellNotifyEvent
-to be generated when a bell function is called.
-
-.TS
-c s s s
-l l l l
-l l l l.
-Table 2 Bell Sounding and Bell Event Generating
-_
-Function called AudibleBell Server sounds a bell Server sends an
-XkbBellNotifyEvent
-_
-XkbDeviceBell On Yes Yes
-XkbDeviceBell Off No Yes
-XkbBell On Yes Yes
-XkbBell Off No Yes
-XkbDeviceBellEvent On or Off No Yes
-XkbBellEvent On or Off No Yes
-XkbDeviceForceBell On or Off Yes No
-XkbForceBell On or Off Yes No
-.TE
-
-If a compatible keyboard extension isn't present in the X server,
-.I XkbBellEvent
-immediately returns False. Otherwise,
-.I XkbBellEvent
-calls
-.I XkbDeviceBellEvent
-with the specified
-.I display, window, percent,
-and
-.I name,
-a
-.I device_spec
-of XkbUseCoreKbd, a
-.I bell_class
-of XkbDfltXIClass, and a
-.I bell_id
-of XkbDfltXIId, and returns what
-.I XkbDeviceBellEvent
-returns.
-
-.I XkbBellEvent
-generates a XkbBellNotify event.
-
-You can call
-.I XkbBellEvent
-without first initializing the keyboard extension.
-.SH "RETURN VALUES"
-.TP 15
-False
-The
-.I XkbBellEvent
-immediately returns False, if a compatible keyboard extension isn't present in
-the X server.
-.SH STRUCTURES
-Xkb generates XkbBellNotify events for all bells except for those resulting from
-calls to
-.I XkbForceDeviceBell
-and
-.I XkbForceBell.
-To receive XkbBellNotify events under all possible conditions, pass
-XkbBellNotifyMask in
-both the
-.I bits_to_change
-and
-.I values_for_bits
-parameters to
-.I XkbSelectEvents.
-
-The XkbBellNotify event has no event details. It is either selected or it is
-not.
-However, you can call
-.I XkbSelectEventDetails
-using XkbBellNotify as the
-.I event_type
-and specifying XkbAllBellNotifyMask in
-.I bits_to_change
-and
-.I values_for_bits.
-This has the same effect as a call to
-.I XkbSelectEvents.
-
-The structure for the XkbBellNotify event type contains:
-.nf
-
- typedef struct _XkbBellNotify {
- int type; /\(** Xkb extension base event code */
- unsigned long serial; /\(** X server serial number for event */
- Bool send_event; /\(** True => synthetically generated */
- Display * display; /\(** server connection where event generated */
- Time time; /\(** server time when event generated */
- int xkb_type; /\(** XkbBellNotify */
- unsigned int device; /\(** Xkb device ID, will not be XkbUseCoreKbd
-*/
- int percent; /\(** requested volume as % of max */
- int pitch; /\(** requested pitch in Hz */
- int duration; /\(** requested duration in microseconds */
- unsigned int bell_class; /\(** X input extension feedback class */
- unsigned int bell_id; /\(** X input extension feedback ID */
- Atom name; /\(** "name" of requested bell */
- Window window; /\(** window associated with event */
- Bool event_only; /\(** False -> the server did not produce a beep
-*/
- } XkbBellNotifyEvent;
-
-.fi
-If your application needs to generate visual bell feedback on the screen when it
-receives
-a bell event, use the window ID in the XkbBellNotifyEvent, if present.
-
-.SH "SEE ALSO"
-.BR XkbChangeEnabledControls (__libmansuffix__),
-.BR XkbDeviceBellEvent (__libmansuffix__),
-.BR XkbForceBell (__libmansuffix__),
-.BR XkbForceDeviceBell (__libmansuffix__),
-.BR XkbSelectEventDetails (__libmansuffix__),
-.BR XkbSelectEvents (__libmansuffix__)
-
-
-
+'\" t
+.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the "Software"),
+.\" to deal in the Software without restriction, including without limitation
+.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
+.\" and/or sell copies of the Software, and to permit persons to whom the
+.\" Software is furnished to do so, subject to the following conditions:
+.\"
+.\" The above copyright notice and this permission notice (including the next
+.\" paragraph) shall be included in all copies or substantial portions of the
+.\" Software.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+.\" DEALINGS IN THE SOFTWARE.
+.\"
+.TH XkbBellEvent __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbBellEvent \- Provides a function that initiates a bell event for the keyboard
+without ringing the bell
+.SH SYNOPSIS
+.HP
+.B Bool XkbBellEvent
+.BI "(\^Display *" "display" "\^,"
+.BI "Window " "window" "\^,"
+.BI "int " "percent" "\^,"
+.BI "Atom " "name" "\^);"
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- display
+connection to the X server
+.TP
+.I \- window
+the event window, or None
+.TP
+.I \- percent,
+relative volume, which can range from -100 to 100 inclusive
+.TP
+.I \- name
+a bell name, or NULL
+.SH DESCRIPTION
+.LP
+The core X protocol allows only applications to explicitly sound the system bell
+with a
+given duration, pitch, and volume. Xkb extends this capability by allowing
+clients to
+attach symbolic names to bells, disable audible bells, and receive an event
+whenever the
+keyboard bell is rung. For the purposes of this document, the
+.I audible
+bell is defined to be the system bell, or the default keyboard bell, as opposed
+to any
+other audible sound generated elsewhere in the system.
+You can ask to receive XkbBellNotify events when any client rings any one of the
+following:
+
+.IP \(bu 5
+The default bell
+.IP \(bu 5
+Any bell on an input device that can be specified by a bell_class and bell_id
+pair
+.IP \(bu 5
+Any bell specified only by an arbitrary name. (This is, from the server's point
+of view,
+merely a name, and not connected with any physical sound-generating device. Some
+client
+application must generate the sound, or visual feedback, if any, that is
+associated with
+the name.)
+
+You can also ask to receive XkbBellNotify events when the server rings the
+default bell
+or if any client has requested events only (without the bell sounding) for any
+of the
+bell types previously listed.
+
+You can disable audible bells on a global basis. For example, a client that
+replaces the
+keyboard bell with some other audible cue might want to turn off the AudibleBell
+control
+to prevent the server from also generating a sound and avoid cacophony. If you
+disable
+audible bells and request to receive XkbBellNotify events, you can generate
+feedback
+different from the default bell.
+
+You can, however, override the AudibleBell control by calling one of the
+functions that
+force the ringing of a bell in spite of the setting of the AudibleBell control -
+.I XkbForceDeviceBell or
+.I XkbForceBell.
+In this case the server does not generate a bell event.
+
+Just as some keyboards can produce keyclicks to indicate when a key is pressed
+or
+repeating, Xkb can provide feedback for the controls by using special beep
+codes. The
+AccessXFeedback control is used to configure the specific types of operations
+that
+generate feedback.
+
+Bell Names
+
+You can associate a name to an act of ringing a bell by converting the name to
+an Atom
+and then using this name when you call the functions listed in this chapter. If
+an event
+is generated as a result, the name is then passed to all other clients
+interested in
+receiving XkbBellNotify events. Note that these are arbitrary names and that
+there is no
+binding to any sounds. Any sounds or other effects (such as visual bells on the
+screen)
+must be generated by a client application upon receipt of the bell event
+containing the
+name. There is no default name for the default keyboard bell. The server does
+generate
+some predefined bells for the AccessX controls. These named bells are shown in
+Table 1; the name is included in any bell event sent to clients that have
+requested to
+receive XkbBellNotify events.
+
+.TS
+c s
+l l
+lW(4i) l.
+Table 1 Predefined Bells
+_
+Action Named Bell
+_
+Indicator turned on AX_IndicatorOn
+Indicator turned off AX_IndicatorOff
+More than one indicator changed state AX_IndicatorChange
+Control turned on AX_FeatureOn
+Control turned off AX_FeatureOff
+More than one control changed state AX_FeatureChange
+T{
+SlowKeys and BounceKeys about to be turned on or off
+T} AX_SlowKeysWarning
+SlowKeys key pressed AX_SlowKeyPress
+SlowKeys key accepted AX_SlowKeyAccept
+SlowKeys key rejected AX_SlowKeyReject
+Accepted SlowKeys key released AX_SlowKeyRelease
+BounceKeys key rejected AX_BounceKeyReject
+StickyKeys key latched AX_StickyLatch
+StickyKeys key locked AX_StickyLock
+StickyKeys key unlocked AX_StickyUnlock
+.TE
+
+Audible Bells
+
+Using Xkb you can generate bell events that do not necessarily ring the system
+bell. This
+is useful if you need to use an audio server instead of the system beep. For
+example,
+when an audio client starts, it could disable the audible bell (the system bell)
+and then
+listen for XkbBellNotify events. When it receives a XkbBellNotify event, the
+audio client
+could then send a request to an audio server to play a sound.
+
+You can control the audible bells feature by passing the XkbAudibleBellMask to
+.I XkbChangeEnabledControls.
+If you set XkbAudibleBellMask on, the server rings the system bell when a bell
+event
+occurs. This is the default. If you set XkbAudibleBellMask off and a bell event
+occurs,
+the server does not ring the system bell unless you call
+.I XkbForceDeviceBell
+or
+.I XkbForceBell.
+
+Audible bells are also part of the per-client auto-reset controls.
+
+Bell Functions
+
+Use the functions described in this section to ring bells and to generate bell
+events.
+
+The input extension has two types of feedbacks that can generate bells - bell
+feedback
+and keyboard feedback. Some of the functions in this section have
+.I bell_class
+and
+.I bell_id
+parameters; set them as follows: Set
+.I bell_class
+to BellFeedbackClass or KbdFeedbackClass. A device can have more than one
+feedback of
+each type; set
+.I bell_id
+to the particular bell feedback of
+.I bell_class
+type.
+
+Table 2 shows the conditions that cause a bell to sound or an
+XkbBellNotifyEvent
+to be generated when a bell function is called.
+
+.TS
+c s s s
+l l l l
+l l l l.
+Table 2 Bell Sounding and Bell Event Generating
+_
+Function called AudibleBell Server sounds a bell Server sends an
+XkbBellNotifyEvent
+_
+XkbDeviceBell On Yes Yes
+XkbDeviceBell Off No Yes
+XkbBell On Yes Yes
+XkbBell Off No Yes
+XkbDeviceBellEvent On or Off No Yes
+XkbBellEvent On or Off No Yes
+XkbDeviceForceBell On or Off Yes No
+XkbForceBell On or Off Yes No
+.TE
+
+If a compatible keyboard extension isn't present in the X server,
+.I XkbBellEvent
+immediately returns False. Otherwise,
+.I XkbBellEvent
+calls
+.I XkbDeviceBellEvent
+with the specified
+.I display, window, percent,
+and
+.I name,
+a
+.I device_spec
+of XkbUseCoreKbd, a
+.I bell_class
+of XkbDfltXIClass, and a
+.I bell_id
+of XkbDfltXIId, and returns what
+.I XkbDeviceBellEvent
+returns.
+
+.I XkbBellEvent
+generates a XkbBellNotify event.
+
+You can call
+.I XkbBellEvent
+without first initializing the keyboard extension.
+.SH "RETURN VALUES"
+.TP 15
+False
+The
+.I XkbBellEvent
+immediately returns False, if a compatible keyboard extension isn't present in
+the X server.
+.SH STRUCTURES
+Xkb generates XkbBellNotify events for all bells except for those resulting from
+calls to
+.I XkbForceDeviceBell
+and
+.I XkbForceBell.
+To receive XkbBellNotify events under all possible conditions, pass
+XkbBellNotifyMask in
+both the
+.I bits_to_change
+and
+.I values_for_bits
+parameters to
+.I XkbSelectEvents.
+
+The XkbBellNotify event has no event details. It is either selected or it is
+not.
+However, you can call
+.I XkbSelectEventDetails
+using XkbBellNotify as the
+.I event_type
+and specifying XkbAllBellNotifyMask in
+.I bits_to_change
+and
+.I values_for_bits.
+This has the same effect as a call to
+.I XkbSelectEvents.
+
+The structure for the XkbBellNotify event type contains:
+.nf
+
+ typedef struct _XkbBellNotify {
+ int type; /\(** Xkb extension base event code */
+ unsigned long serial; /\(** X server serial number for event */
+ Bool send_event; /\(** True => synthetically generated */
+ Display * display; /\(** server connection where event generated */
+ Time time; /\(** server time when event generated */
+ int xkb_type; /\(** XkbBellNotify */
+ unsigned int device; /\(** Xkb device ID, will not be XkbUseCoreKbd
+*/
+ int percent; /\(** requested volume as % of max */
+ int pitch; /\(** requested pitch in Hz */
+ int duration; /\(** requested duration in microseconds */
+ unsigned int bell_class; /\(** X input extension feedback class */
+ unsigned int bell_id; /\(** X input extension feedback ID */
+ Atom name; /\(** "name" of requested bell */
+ Window window; /\(** window associated with event */
+ Bool event_only; /\(** False -> the server did not produce a beep
+*/
+ } XkbBellNotifyEvent;
+
+.fi
+If your application needs to generate visual bell feedback on the screen when it
+receives
+a bell event, use the window ID in the XkbBellNotifyEvent, if present.
+
+.SH "SEE ALSO"
+.BR XkbChangeEnabledControls (__libmansuffix__),
+.BR XkbDeviceBellEvent (__libmansuffix__),
+.BR XkbForceBell (__libmansuffix__),
+.BR XkbForceDeviceBell (__libmansuffix__),
+.BR XkbSelectEventDetails (__libmansuffix__),
+.BR XkbSelectEvents (__libmansuffix__)
+
+
+
diff --git a/libX11/man/xkb/XkbChangeControls.man b/libX11/man/xkb/XkbChangeControls.man
index 5aea59489..751e0c9e7 100644
--- a/libX11/man/xkb/XkbChangeControls.man
+++ b/libX11/man/xkb/XkbChangeControls.man
@@ -1,322 +1,322 @@
-'\" t
-.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
-.\"
-.\" Permission is hereby granted, free of charge, to any person obtaining a
-.\" copy of this software and associated documentation files (the "Software"),
-.\" to deal in the Software without restriction, including without limitation
-.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
-.\" and/or sell copies of the Software, and to permit persons to whom the
-.\" Software is furnished to do so, subject to the following conditions:
-.\"
-.\" The above copyright notice and this permission notice (including the next
-.\" paragraph) shall be included in all copies or substantial portions of the
-.\" Software.
-.\"
-.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-.\" DEALINGS IN THE SOFTWARE.
-.\"
-.TH XkbChangeControls __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
-.SH NAME
-XkbChangeControls \- Provides a flexible method for updating the controls in a
-server to match those in
-the changed keyboard description
-.SH SYNOPSIS
-.HP
-.B Bool XkbChangeControls
-.BI "(\^Display *" "dpy" "\^,"
-.BI "XkbDescPtr " "xkb" "\^,"
-.BI "XkbControlsChangesPtr " "changes" "\^);"
-.if n .ti +5n
-.if t .ti +.5i
-.SH ARGUMENTS
-.TP
-.I \- dpy
-connection to X server
-.TP
-.I \- xkb
-keyboard description with changed xkb->ctrls
-.TP
-.I \- changes
-which parts of xkb->ctrls have changed
-.SH DESCRIPTION
-.LP
-The XkbControlsChangesRec structure allows applications to track modifications
-to an XkbControlsRec
-structure and thereby reduce the amount of traffic sent to the server. The same
-XkbControlsChangesRec
-structure may be used in several successive modifications to the same
-XkbControlsRec structure, then
-subsequently used to cause all of the changes, and only the changes, to be
-propagated to the server.
-
-The
-.I changed_ctrls
-field is a mask specifying which logical sets of data in the controls structure
-have been modified. In
-this context, modified means
-.I set,
-that is, if a value is set to the same value it previously contained, it has
-still been modified, and is
-noted as changed. Valid values for
-.I changed_ctrls
-are any combination of the masks listed in Table 1 that have "ok" in the
-.I changed_ctrls
-column. Setting a bit implies the corresponding data fields from the "Relevant
-XkbControlsRec Data
-Fields" column in Table 1 have been modified. The
-.I enabled_ctrls_changes
-field specifies which bits in the
-.I enabled_ctrls
-field have changed. If the number of keyboard groups has changed, the
-.I num_groups_changed
-field is set to True.
-
-Table 1 shows the actual values for the individual mask bits used to select
-controls for
-modification and to enable and disable the control. Note that the same mask bit
-is used to
-specify general modifications to the parameters used to configure the control
-(which), and to
-enable and disable the control (enabled_ctrls). The anomalies in the table (no
-"ok" in column)
-are for controls that have no configurable attributes; and for controls that are
-not boolean
-controls and therefore cannot be enabled or disabled.
-
-.TS
-c s s s s
-l l l l l
-l l l l l
-l l l l l
-l l l l l
-lw(1.5i) lw(1.5i) l lw(1.5i) l.
-Table 1 Xkb Controls
-_
-Control Control
- Selection Relevant
- Mask XkbControlsRec Boolean Control
- (which parameter) DataFields enabled_ctrls bit Section
-_
-T{
-AccessXFeedback
-T} T{
-XkbAccessXFeedbackMask
-T} ax_options: T{
-XkbAccessXFeedbackMask
-T} 10.6.3
- XkbAX_*FBMask
-T{
-AccessXKeys
-T} T{
-XkbAccessXKeysMask
-T} 10.6.1
-T{
-AccessXTimeout
-T} T{
-XkbAccessXTimeoutMask
-T} ax_timeout T{
-XkbAccessXTimeoutMask
-T} 10.6.2
- axt_opts_mask
- axt_opts_values
- axt_ctrls_mask
- axt_ctrls_values
-T{
-AudibleBell
-T} T{
-XkbAudibleBellMask
-T} 9.2
-T{
-AutoReset
-T} 10.1.2
-T{
-BounceKeys
-T} T{
-XkbBounceKeysMask
-T} debounce_delay T{
-XkbBounceKeysMask
-T} 10.6.7
-T{
-Detectable-
-T} 10.3.3
-T{
-Autorepeat
-T}
-T{
-EnabledControls
-T} T{
-XkbControlsEnabledMask
-T} enabled_ctrls T{
-Non-Boolean Control
-T} 10.1.1
-T{
-GroupsWrap
-T} T{
-XkbGroupsWrapMask
-T} groups_wrap T{
-Non-Boolean Control
-T} 10.7.1
-T{
-IgnoreGroupLock
-T} T{
-XkbIgnoreGroupLockMask
-T} 10.7.3
-T{
-IgnoreLockMods
-T} T{
-XkbIgnoreLockModsMask
-T} ignore_lock T{
-Non-Boolean Control
-T} 5.1
-T{
-InternalMods
-T} T{
-XkbInternalModsMask
-T} internal T{
-Non-Boolean Control
-T} 5.1
-T{
-MouseKeys
-T} T{
-XkbMouseKeysMask
-T} mk_dflt_btn T{
-XkbMouseKeysMask
-T} 10.5.1
-T{
-MouseKeysAccel
-T} T{
-XkbMouseKeysAccelMask
-T} mk_delay T{
-XkbMouseKeysAccelMask
-T} 10.5.2
- mk_interval
- mk_time_to_max
- mk_max_speed
- mk_curve
-T{
-Overlay1
-T} T{
-XkbOverlay1Mask
-T} 10.4
-T{
-Overlay2
-T} T{
-XkbOverlay2Mask
-T} 10.4
-T{
-PerKeyRepeat
-T} T{
-XkbPerKeyRepeatMask
-T} per_key_repeat T{
-Non-Boolean Control
-T} 10.3.1
-T{
-RepeatKeys
-T} T{
-XkbRepeatKeysMask
-T} repeat_delay T{
-XkbRepeatKeysMask
-T} 10.3
- repeat_interval
-T{
-SlowKeys
-T} T{
-XkbSlowKeysMask
-T} slow_keys_delay T{
-XkbSlowKeysMask
-T} 10.6.6
-T{
-StickyKeys
-T} T{
-XkbStickyKeysMask
-T} ax_options: T{
-XkbStickyKeysMask
-T} 10.6.8
- XkbAX_TwoKeysMask
- XkbAX_LatchToLockMask
-.TE
-
-Table 2 shows the actual values for the individual mask bits used to select
-controls for
-modification and to enable and disable the control. Note that the same mask bit
-is used to
-specify general modifications to the parameters used to configure the control
-(which), and to
-enable and disable the control (enabled_ctrls). The anomalies in the table (no
-"ok" in column)
-are for controls that have no configurable attributes; and for controls that are
-not boolean
-controls and therefore cannot be enabled or disabled.
-
-.TS
-c s s s
-l l l l
-l l l l
-l l l l.
-Table 2 Controls Mask Bits
-_
-Mask Bit which or enabled Value
- changed_ctrls _ctrls
-_
-XkbRepeatKeysMask ok ok (1L<<0)
-XkbSlowKeysMask ok ok (1L<<1)
-XkbBounceKeysMask ok ok (1L<<2)
-XkbStickyKeysMask ok ok (1L<<3)
-XkbMouseKeysMask ok ok (1L<<4)
-XkbMouseKeysAccelMask ok ok (1L<<5)
-XkbAccessXKeysMask ok ok (1L<<6)
-XkbAccessXTimeoutMask ok ok (1L<<7)
-XkbAccessXFeedbackMask ok ok (1L<<8)
-XkbAudibleBellMask ok (1L<<9)
-XkbOverlay1Mask ok (1L<<10)
-XkbOverlay2Mask ok (1L<<11)
-XkbIgnoreGroupLockMask ok (1L<<12)
-XkbGroupsWrapMask ok (1L<<27)
-XkbInternalModsMask ok (1L<<28)
-XkbIgnoreLockModsMask ok (1L<<29)
-XkbPerKeyRepeatMask ok (1L<<30)
-XkbControlsEnabledMask ok (1L<<31)
-XkbAccessXOptionsMask ok ok (XkbStickyKeysMask |
- XkbAccessXFeedbackMask)
-XkbAllBooleanCtrlsMask ok (0x00001FFF)
-XkbAllControlsMask ok (0xF8001FFF)
-.TE
-
-
-
-
-If you have an Xkb description with controls that have been modified and an
-XkbControlsChangesRec that
-describes the changes that have been made, the
-.I XkbChangeControls
-function provides a flexible method for updating the controls in a server to
-match those in the changed
-keyboard description.
-
-.I XkbChangeControls
-copies any controls fields specified by
-.I changes
-from the keyboard description controls structure,
-.I xkb->ctrls,
-to the server specified by
-.I dpy.
-.SH STRUCTURES
-.LP
-The XkbControlsChangesRec structure is defined as follows:
-.nf
-
-typedef struct _XkbControlsChanges {
- unsigned int changed_ctrls; /\(** bits indicating changed control data
-*/
- unsigned int enabled_ctrls_changes; /\(** bits indicating enabled/disabled
-controls */
- Bool num_groups_changed; /\(** True if number of keyboard groups
-changed */
-} XkbControlsChangesRec,*XkbControlsChangesPtr;
-
-.fi
+'\" t
+.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the "Software"),
+.\" to deal in the Software without restriction, including without limitation
+.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
+.\" and/or sell copies of the Software, and to permit persons to whom the
+.\" Software is furnished to do so, subject to the following conditions:
+.\"
+.\" The above copyright notice and this permission notice (including the next
+.\" paragraph) shall be included in all copies or substantial portions of the
+.\" Software.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+.\" DEALINGS IN THE SOFTWARE.
+.\"
+.TH XkbChangeControls __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbChangeControls \- Provides a flexible method for updating the controls in a
+server to match those in
+the changed keyboard description
+.SH SYNOPSIS
+.HP
+.B Bool XkbChangeControls
+.BI "(\^Display *" "dpy" "\^,"
+.BI "XkbDescPtr " "xkb" "\^,"
+.BI "XkbControlsChangesPtr " "changes" "\^);"
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- dpy
+connection to X server
+.TP
+.I \- xkb
+keyboard description with changed xkb->ctrls
+.TP
+.I \- changes
+which parts of xkb->ctrls have changed
+.SH DESCRIPTION
+.LP
+The XkbControlsChangesRec structure allows applications to track modifications
+to an XkbControlsRec
+structure and thereby reduce the amount of traffic sent to the server. The same
+XkbControlsChangesRec
+structure may be used in several successive modifications to the same
+XkbControlsRec structure, then
+subsequently used to cause all of the changes, and only the changes, to be
+propagated to the server.
+
+The
+.I changed_ctrls
+field is a mask specifying which logical sets of data in the controls structure
+have been modified. In
+this context, modified means
+.I set,
+that is, if a value is set to the same value it previously contained, it has
+still been modified, and is
+noted as changed. Valid values for
+.I changed_ctrls
+are any combination of the masks listed in Table 1 that have "ok" in the
+.I changed_ctrls
+column. Setting a bit implies the corresponding data fields from the "Relevant
+XkbControlsRec Data
+Fields" column in Table 1 have been modified. The
+.I enabled_ctrls_changes
+field specifies which bits in the
+.I enabled_ctrls
+field have changed. If the number of keyboard groups has changed, the
+.I num_groups_changed
+field is set to True.
+
+Table 1 shows the actual values for the individual mask bits used to select
+controls for
+modification and to enable and disable the control. Note that the same mask bit
+is used to
+specify general modifications to the parameters used to configure the control
+(which), and to
+enable and disable the control (enabled_ctrls). The anomalies in the table (no
+"ok" in column)
+are for controls that have no configurable attributes; and for controls that are
+not boolean
+controls and therefore cannot be enabled or disabled.
+
+.TS
+c s s s s
+l l l l l
+l l l l l
+l l l l l
+l l l l l
+lw(1.5i) lw(1.5i) l lw(1.5i) l.
+Table 1 Xkb Controls
+_
+Control Control
+ Selection Relevant
+ Mask XkbControlsRec Boolean Control
+ (which parameter) DataFields enabled_ctrls bit Section
+_
+T{
+AccessXFeedback
+T} T{
+XkbAccessXFeedbackMask
+T} ax_options: T{
+XkbAccessXFeedbackMask
+T} 10.6.3
+ XkbAX_*FBMask
+T{
+AccessXKeys
+T} T{
+XkbAccessXKeysMask
+T} 10.6.1
+T{
+AccessXTimeout
+T} T{
+XkbAccessXTimeoutMask
+T} ax_timeout T{
+XkbAccessXTimeoutMask
+T} 10.6.2
+ axt_opts_mask
+ axt_opts_values
+ axt_ctrls_mask
+ axt_ctrls_values
+T{
+AudibleBell
+T} T{
+XkbAudibleBellMask
+T} 9.2
+T{
+AutoReset
+T} 10.1.2
+T{
+BounceKeys
+T} T{
+XkbBounceKeysMask
+T} debounce_delay T{
+XkbBounceKeysMask
+T} 10.6.7
+T{
+Detectable-
+T} 10.3.3
+T{
+Autorepeat
+T}
+T{
+EnabledControls
+T} T{
+XkbControlsEnabledMask
+T} enabled_ctrls T{
+Non-Boolean Control
+T} 10.1.1
+T{
+GroupsWrap
+T} T{
+XkbGroupsWrapMask
+T} groups_wrap T{
+Non-Boolean Control
+T} 10.7.1
+T{
+IgnoreGroupLock
+T} T{
+XkbIgnoreGroupLockMask
+T} 10.7.3
+T{
+IgnoreLockMods
+T} T{
+XkbIgnoreLockModsMask
+T} ignore_lock T{
+Non-Boolean Control
+T} 5.1
+T{
+InternalMods
+T} T{
+XkbInternalModsMask
+T} internal T{
+Non-Boolean Control
+T} 5.1
+T{
+MouseKeys
+T} T{
+XkbMouseKeysMask
+T} mk_dflt_btn T{
+XkbMouseKeysMask
+T} 10.5.1
+T{
+MouseKeysAccel
+T} T{
+XkbMouseKeysAccelMask
+T} mk_delay T{
+XkbMouseKeysAccelMask
+T} 10.5.2
+ mk_interval
+ mk_time_to_max
+ mk_max_speed
+ mk_curve
+T{
+Overlay1
+T} T{
+XkbOverlay1Mask
+T} 10.4
+T{
+Overlay2
+T} T{
+XkbOverlay2Mask
+T} 10.4
+T{
+PerKeyRepeat
+T} T{
+XkbPerKeyRepeatMask
+T} per_key_repeat T{
+Non-Boolean Control
+T} 10.3.1
+T{
+RepeatKeys
+T} T{
+XkbRepeatKeysMask
+T} repeat_delay T{
+XkbRepeatKeysMask
+T} 10.3
+ repeat_interval
+T{
+SlowKeys
+T} T{
+XkbSlowKeysMask
+T} slow_keys_delay T{
+XkbSlowKeysMask
+T} 10.6.6
+T{
+StickyKeys
+T} T{
+XkbStickyKeysMask
+T} ax_options: T{
+XkbStickyKeysMask
+T} 10.6.8
+ XkbAX_TwoKeysMask
+ XkbAX_LatchToLockMask
+.TE
+
+Table 2 shows the actual values for the individual mask bits used to select
+controls for
+modification and to enable and disable the control. Note that the same mask bit
+is used to
+specify general modifications to the parameters used to configure the control
+(which), and to
+enable and disable the control (enabled_ctrls). The anomalies in the table (no
+"ok" in column)
+are for controls that have no configurable attributes; and for controls that are
+not boolean
+controls and therefore cannot be enabled or disabled.
+
+.TS
+c s s s
+l l l l
+l l l l
+l l l l.
+Table 2 Controls Mask Bits
+_
+Mask Bit which or enabled Value
+ changed_ctrls _ctrls
+_
+XkbRepeatKeysMask ok ok (1L<<0)
+XkbSlowKeysMask ok ok (1L<<1)
+XkbBounceKeysMask ok ok (1L<<2)
+XkbStickyKeysMask ok ok (1L<<3)
+XkbMouseKeysMask ok ok (1L<<4)
+XkbMouseKeysAccelMask ok ok (1L<<5)
+XkbAccessXKeysMask ok ok (1L<<6)
+XkbAccessXTimeoutMask ok ok (1L<<7)
+XkbAccessXFeedbackMask ok ok (1L<<8)
+XkbAudibleBellMask ok (1L<<9)
+XkbOverlay1Mask ok (1L<<10)
+XkbOverlay2Mask ok (1L<<11)
+XkbIgnoreGroupLockMask ok (1L<<12)
+XkbGroupsWrapMask ok (1L<<27)
+XkbInternalModsMask ok (1L<<28)
+XkbIgnoreLockModsMask ok (1L<<29)
+XkbPerKeyRepeatMask ok (1L<<30)
+XkbControlsEnabledMask ok (1L<<31)
+XkbAccessXOptionsMask ok ok (XkbStickyKeysMask |
+ XkbAccessXFeedbackMask)
+XkbAllBooleanCtrlsMask ok (0x00001FFF)
+XkbAllControlsMask ok (0xF8001FFF)
+.TE
+
+
+
+
+If you have an Xkb description with controls that have been modified and an
+XkbControlsChangesRec that
+describes the changes that have been made, the
+.I XkbChangeControls
+function provides a flexible method for updating the controls in a server to
+match those in the changed
+keyboard description.
+
+.I XkbChangeControls
+copies any controls fields specified by
+.I changes
+from the keyboard description controls structure,
+.I xkb->ctrls,
+to the server specified by
+.I dpy.
+.SH STRUCTURES
+.LP
+The XkbControlsChangesRec structure is defined as follows:
+.nf
+
+typedef struct _XkbControlsChanges {
+ unsigned int changed_ctrls; /\(** bits indicating changed control data
+*/
+ unsigned int enabled_ctrls_changes; /\(** bits indicating enabled/disabled
+controls */
+ Bool num_groups_changed; /\(** True if number of keyboard groups
+changed */
+} XkbControlsChangesRec,*XkbControlsChangesPtr;
+
+.fi
diff --git a/libX11/man/xkb/XkbChangeDeviceInfo.man b/libX11/man/xkb/XkbChangeDeviceInfo.man
index 56dd8c8f1..01e0266e4 100644
--- a/libX11/man/xkb/XkbChangeDeviceInfo.man
+++ b/libX11/man/xkb/XkbChangeDeviceInfo.man
@@ -1,74 +1,74 @@
-'\" t
-.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
-.\"
-.\" Permission is hereby granted, free of charge, to any person obtaining a
-.\" copy of this software and associated documentation files (the "Software"),
-.\" to deal in the Software without restriction, including without limitation
-.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
-.\" and/or sell copies of the Software, and to permit persons to whom the
-.\" Software is furnished to do so, subject to the following conditions:
-.\"
-.\" The above copyright notice and this permission notice (including the next
-.\" paragraph) shall be included in all copies or substantial portions of the
-.\" Software.
-.\"
-.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-.\" DEALINGS IN THE SOFTWARE.
-.\"
-.TH XkbChangeDeviceInfo __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
-.SH NAME
-XkbChangeDeviceInfo \- Update the server's description of a device with the changes noted in an
-XkbDeviceChangesRec
-.SH SYNOPSIS
-.HP
-.B Bool XkbChangeDeviceInfo
-.BI "(\^Display *" "dpy" "\^,"
-.BI "XkbDeviceInfoPtr " "device_info" "\^,"
-.BI "XkbDeviceChangesPtr " "changes" "\^);"
-.if n .ti +5n
-.if t .ti +.5i
-.SH ARGUMENTS
-.TP
-.I \- dpy
-connection to X server
-.TP
-.I \- device_info
-local copy of device state and configuration
-.TP
-.I \- changes
-note specifying changes in device_info
-.SH DESCRIPTION
-.LP
-.I XkbChangeDeviceInfo
-updates the server's description of the device specified in
-.I device_info->device_spec
-with the changes specified in
-.I changes
-and contained in
-.I device_info.
-The update is made by an
-.I XkbSetDeviceInfo
-request.
-.SH STRUCTURES
-.LP
-Changes to an Xkb extension device may be tracked by listening to XkbDeviceExtensionNotify events
-and accumulating the changes in an XkbDeviceChangesRec structure. The changes noted in the
-structure may then be used in subsequent operations to update either a server configuration or a
-local copy of an Xkb extension device configuration. The changes structure is defined as follows:
-.nf
-
-typedef struct _XkbDeviceChanges {
- unsigned int changed; /\(** bits indicating what has changed */
- unsigned short first_btn; /\(** number of first button which changed, if any */
- unsigned short num_btns; /\(** number of buttons that have changed */
- XkbDeviceLedChangesRec leds;
-} XkbDeviceChangesRec,*XkbDeviceChangesPtr;
-
-.fi
-.SH "SEE ALSO"
-.BR XkbSetDeviceInfo (__libmansuffix__)
+'\" t
+.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the "Software"),
+.\" to deal in the Software without restriction, including without limitation
+.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
+.\" and/or sell copies of the Software, and to permit persons to whom the
+.\" Software is furnished to do so, subject to the following conditions:
+.\"
+.\" The above copyright notice and this permission notice (including the next
+.\" paragraph) shall be included in all copies or substantial portions of the
+.\" Software.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+.\" DEALINGS IN THE SOFTWARE.
+.\"
+.TH XkbChangeDeviceInfo __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbChangeDeviceInfo \- Update the server's description of a device with the changes noted in an
+XkbDeviceChangesRec
+.SH SYNOPSIS
+.HP
+.B Bool XkbChangeDeviceInfo
+.BI "(\^Display *" "dpy" "\^,"
+.BI "XkbDeviceInfoPtr " "device_info" "\^,"
+.BI "XkbDeviceChangesPtr " "changes" "\^);"
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- dpy
+connection to X server
+.TP
+.I \- device_info
+local copy of device state and configuration
+.TP
+.I \- changes
+note specifying changes in device_info
+.SH DESCRIPTION
+.LP
+.I XkbChangeDeviceInfo
+updates the server's description of the device specified in
+.I device_info->device_spec
+with the changes specified in
+.I changes
+and contained in
+.I device_info.
+The update is made by an
+.I XkbSetDeviceInfo
+request.
+.SH STRUCTURES
+.LP
+Changes to an Xkb extension device may be tracked by listening to XkbDeviceExtensionNotify events
+and accumulating the changes in an XkbDeviceChangesRec structure. The changes noted in the
+structure may then be used in subsequent operations to update either a server configuration or a
+local copy of an Xkb extension device configuration. The changes structure is defined as follows:
+.nf
+
+typedef struct _XkbDeviceChanges {
+ unsigned int changed; /\(** bits indicating what has changed */
+ unsigned short first_btn; /\(** number of first button which changed, if any */
+ unsigned short num_btns; /\(** number of buttons that have changed */
+ XkbDeviceLedChangesRec leds;
+} XkbDeviceChangesRec,*XkbDeviceChangesPtr;
+
+.fi
+.SH "SEE ALSO"
+.BR XkbSetDeviceInfo (__libmansuffix__)
diff --git a/libX11/man/xkb/XkbChangeEnabledControls.man b/libX11/man/xkb/XkbChangeEnabledControls.man
index c190ac669..2a563fb99 100644
--- a/libX11/man/xkb/XkbChangeEnabledControls.man
+++ b/libX11/man/xkb/XkbChangeEnabledControls.man
@@ -1,164 +1,164 @@
-'\" t
-.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
-.\"
-.\" Permission is hereby granted, free of charge, to any person obtaining a
-.\" copy of this software and associated documentation files (the "Software"),
-.\" to deal in the Software without restriction, including without limitation
-.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
-.\" and/or sell copies of the Software, and to permit persons to whom the
-.\" Software is furnished to do so, subject to the following conditions:
-.\"
-.\" The above copyright notice and this permission notice (including the next
-.\" paragraph) shall be included in all copies or substantial portions of the
-.\" Software.
-.\"
-.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-.\" DEALINGS IN THE SOFTWARE.
-.\"
-.TH XkbChangeEnabledControls __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
-.SH NAME
-XkbChangeEnabledControls \- Manipulates the EnabledControls control
-.SH SYNOPSIS
-.HP
-.B Bool XkbChangeEnabledControls
-.BI "(\^Display *" "dpy" "\^,"
-.BI "unsigned int " "device_spec" "\^,"
-.BI "unsigned int " "mask" "\^,"
-.BI "unsigned int " "values" "\^);"
-.if n .ti +5n
-.if t .ti +.5i
-.SH ARGUMENTS
-.TP
-.I \- dpy
-connection to X server
-.TP
-.I \- device_spec
- keyboard device to modify
-.TP
-.I \- mask
-1 bit -> controls to enable / disable
-.TP
-.I \- values
-1 bit => enable, 0 bit => disable
-.SH DESCRIPTION
-.LP
-The EnabledControls control is a bit mask where each bit that is turned on means the
-corresponding control is enabled, and when turned off, disabled. It corresponds to the
-.I enabled_ctrls
-field of an XkbControlsRec structure (see STRUCTURES). The bits describing which controls are
-turned on or off are defined in Table 1.
-
-Table 1 shows the actual values for the individual mask bits used to select controls for
-modification and to enable and disable the control. Note that the same mask bit is used to
-specify general modifications to the parameters used to configure the control (which), and to
-enable and disable the control (enabled_ctrls). The anomalies in the table (no "ok" in column)
-are for controls that have no configurable attributes; and for controls that are not boolean
-controls and therefore cannot be enabled or disabled.
-.bp
-.TS
-c s s s
-l l l l
-l l l l
-l l l l.
-Table 1 Controls Mask Bits
-_
-Mask Bit which or enabled Value
- changed_ctrls _ctrls
-_
-XkbRepeatKeysMask ok ok (1L<<0)
-XkbSlowKeysMask ok ok (1L<<1)
-XkbBounceKeysMask ok ok (1L<<2)
-XkbStickyKeysMask ok ok (1L<<3)
-XkbMouseKeysMask ok ok (1L<<4)
-XkbMouseKeysAccelMask ok ok (1L<<5)
-XkbAccessXKeysMask ok ok (1L<<6)
-XkbAccessXTimeoutMask ok ok (1L<<7)
-XkbAccessXFeedbackMask ok ok (1L<<8)
-XkbAudibleBellMask ok (1L<<9)
-XkbOverlay1Mask ok (1L<<10)
-XkbOverlay2Mask ok (1L<<11)
-XkbIgnoreGroupLockMask ok (1L<<12)
-XkbGroupsWrapMask ok (1L<<27)
-XkbInternalModsMask ok (1L<<28)
-XkbIgnoreLockModsMask ok (1L<<29)
-XkbPerKeyRepeatMask ok (1L<<30)
-XkbControlsEnabledMask ok (1L<<31)
-XkbAccessXOptionsMask ok ok (XkbStickyKeysMask |
- XkbAccessXFeedbackMask)
-XkbAllBooleanCtrlsMask ok (0x00001FFF)
-XkbAllControlsMask ok (0xF8001FFF)
-.TE
-
-The
-.I mask
-parameter specifies the boolean controls to be enabled or disabled, and the
-.I values
-mask specifies the new state for those controls. Valid values for both of these
-masks are composed of a bitwise inclusive OR of bits taken from the set of mask
-bits in Table 1, using only those masks with "ok" in the
-.I enabled_ctrls
-column.
-
-If the X server does not support a compatible version of Xkb or the Xkb
-extension has not been properly initialized,
-.I XkbChangeEnabledControls
-returns False; otherwise, it sends the request to the X server and returns True.
-
-Note that the EnabledControls control only enables and disables controls; it
-does not configure them. Some controls, such as the AudibleBell control, have no
-configuration attributes and are therefore manipulated solely by enabling and
-disabling them. Others, however, have additional attributes to configure their
-behavior. For example, the RepeatControl control uses
-.I repeat_delay
-and
-.I repeat_interval
-fields to describe the timing behavior of keys that repeat. The RepeatControl
-behavior is turned on or off depending on the value of the XkbRepeatKeysMask
-bit, but you must use other means, as described in this chapter, to configure
-its behavior in detail.
-.SH "RETURN VALUES"
-.TP 15
-True
-The X server supports a compatible version of Xkb.
-.TP 15
-False
-The X server does not support a compatible version of Xkb or the Xkb extension has not been properly initialized.
-.SH STRUCTURES
-.LP
-.nf
-The XkbControlsRec structure is defined as follows:
-
- #define XkbMaxLegalKeyCode 255
- #define XkbPerKeyBitArraySize ((XkbMaxLegalKeyCode+1)/8)
-
-
- typedef struct {
- unsigned char mk_dflt_btn; /\(** default button for keyboard driven mouse */
- unsigned char num_groups; /\(** number of keyboard groups */
- unsigned char groups_wrap; /\(** how to wrap out-of-bounds groups */
- XkbModsRec internal; /\(** defines server internal modifiers */
- XkbModsRec ignore_lock; /\(** modifiers to ignore when checking for grab */
- unsigned int enabled_ctrls; /\(** 1 bit => corresponding boolean control enabled */
- unsigned short repeat_delay; /\(** ms delay until first repeat */
- unsigned short repeat_interval; /\(** ms delay between repeats */
- unsigned short slow_keys_delay; /\(** ms minimum time key must be down to be ok */
- unsigned short debounce_delay; /\(** ms delay before key reactivated */
- unsigned short mk_delay; /\(** ms delay to second mouse motion event */
- unsigned short mk_interval; /\(** ms delay between repeat mouse events */
- unsigned short mk_time_to_max; /\(** # intervals until constant mouse move */
- unsigned short mk_max_speed; /\(** multiplier for maximum mouse speed */
- short mk_curve; /\(** determines mouse move curve type */
- unsigned short ax_options; /\(** 1 bit => Access X option enabled */
- unsigned short ax_timeout; /\(** seconds until Access X disabled */
- unsigned short axt_opts_mask; /\(** 1 bit => options to reset on Access X timeout */
- unsigned short axt_opts_values; /\(** 1 bit => turn option on, 0=> off */
- unsigned int axt_ctrls_mask; /\(** which bits in enabled_ctrls to modify */
- unsigned int axt_ctrls_values; /\(** values for new bits in enabled_ctrls */
- unsigned char per_key_repeat[XkbPerKeyBitArraySize]; /\(** per key auto repeat */
- } XkbControlsRec, *XkbControlsPtr;
-.fi
+'\" t
+.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the "Software"),
+.\" to deal in the Software without restriction, including without limitation
+.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
+.\" and/or sell copies of the Software, and to permit persons to whom the
+.\" Software is furnished to do so, subject to the following conditions:
+.\"
+.\" The above copyright notice and this permission notice (including the next
+.\" paragraph) shall be included in all copies or substantial portions of the
+.\" Software.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+.\" DEALINGS IN THE SOFTWARE.
+.\"
+.TH XkbChangeEnabledControls __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbChangeEnabledControls \- Manipulates the EnabledControls control
+.SH SYNOPSIS
+.HP
+.B Bool XkbChangeEnabledControls
+.BI "(\^Display *" "dpy" "\^,"
+.BI "unsigned int " "device_spec" "\^,"
+.BI "unsigned int " "mask" "\^,"
+.BI "unsigned int " "values" "\^);"
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- dpy
+connection to X server
+.TP
+.I \- device_spec
+ keyboard device to modify
+.TP
+.I \- mask
+1 bit -> controls to enable / disable
+.TP
+.I \- values
+1 bit => enable, 0 bit => disable
+.SH DESCRIPTION
+.LP
+The EnabledControls control is a bit mask where each bit that is turned on means the
+corresponding control is enabled, and when turned off, disabled. It corresponds to the
+.I enabled_ctrls
+field of an XkbControlsRec structure (see STRUCTURES). The bits describing which controls are
+turned on or off are defined in Table 1.
+
+Table 1 shows the actual values for the individual mask bits used to select controls for
+modification and to enable and disable the control. Note that the same mask bit is used to
+specify general modifications to the parameters used to configure the control (which), and to
+enable and disable the control (enabled_ctrls). The anomalies in the table (no "ok" in column)
+are for controls that have no configurable attributes; and for controls that are not boolean
+controls and therefore cannot be enabled or disabled.
+.bp
+.TS
+c s s s
+l l l l
+l l l l
+l l l l.
+Table 1 Controls Mask Bits
+_
+Mask Bit which or enabled Value
+ changed_ctrls _ctrls
+_
+XkbRepeatKeysMask ok ok (1L<<0)
+XkbSlowKeysMask ok ok (1L<<1)
+XkbBounceKeysMask ok ok (1L<<2)
+XkbStickyKeysMask ok ok (1L<<3)
+XkbMouseKeysMask ok ok (1L<<4)
+XkbMouseKeysAccelMask ok ok (1L<<5)
+XkbAccessXKeysMask ok ok (1L<<6)
+XkbAccessXTimeoutMask ok ok (1L<<7)
+XkbAccessXFeedbackMask ok ok (1L<<8)
+XkbAudibleBellMask ok (1L<<9)
+XkbOverlay1Mask ok (1L<<10)
+XkbOverlay2Mask ok (1L<<11)
+XkbIgnoreGroupLockMask ok (1L<<12)
+XkbGroupsWrapMask ok (1L<<27)
+XkbInternalModsMask ok (1L<<28)
+XkbIgnoreLockModsMask ok (1L<<29)
+XkbPerKeyRepeatMask ok (1L<<30)
+XkbControlsEnabledMask ok (1L<<31)
+XkbAccessXOptionsMask ok ok (XkbStickyKeysMask |
+ XkbAccessXFeedbackMask)
+XkbAllBooleanCtrlsMask ok (0x00001FFF)
+XkbAllControlsMask ok (0xF8001FFF)
+.TE
+
+The
+.I mask
+parameter specifies the boolean controls to be enabled or disabled, and the
+.I values
+mask specifies the new state for those controls. Valid values for both of these
+masks are composed of a bitwise inclusive OR of bits taken from the set of mask
+bits in Table 1, using only those masks with "ok" in the
+.I enabled_ctrls
+column.
+
+If the X server does not support a compatible version of Xkb or the Xkb
+extension has not been properly initialized,
+.I XkbChangeEnabledControls
+returns False; otherwise, it sends the request to the X server and returns True.
+
+Note that the EnabledControls control only enables and disables controls; it
+does not configure them. Some controls, such as the AudibleBell control, have no
+configuration attributes and are therefore manipulated solely by enabling and
+disabling them. Others, however, have additional attributes to configure their
+behavior. For example, the RepeatControl control uses
+.I repeat_delay
+and
+.I repeat_interval
+fields to describe the timing behavior of keys that repeat. The RepeatControl
+behavior is turned on or off depending on the value of the XkbRepeatKeysMask
+bit, but you must use other means, as described in this chapter, to configure
+its behavior in detail.
+.SH "RETURN VALUES"
+.TP 15
+True
+The X server supports a compatible version of Xkb.
+.TP 15
+False
+The X server does not support a compatible version of Xkb or the Xkb extension has not been properly initialized.
+.SH STRUCTURES
+.LP
+.nf
+The XkbControlsRec structure is defined as follows:
+
+ #define XkbMaxLegalKeyCode 255
+ #define XkbPerKeyBitArraySize ((XkbMaxLegalKeyCode+1)/8)
+
+
+ typedef struct {
+ unsigned char mk_dflt_btn; /\(** default button for keyboard driven mouse */
+ unsigned char num_groups; /\(** number of keyboard groups */
+ unsigned char groups_wrap; /\(** how to wrap out-of-bounds groups */
+ XkbModsRec internal; /\(** defines server internal modifiers */
+ XkbModsRec ignore_lock; /\(** modifiers to ignore when checking for grab */
+ unsigned int enabled_ctrls; /\(** 1 bit => corresponding boolean control enabled */
+ unsigned short repeat_delay; /\(** ms delay until first repeat */
+ unsigned short repeat_interval; /\(** ms delay between repeats */
+ unsigned short slow_keys_delay; /\(** ms minimum time key must be down to be ok */
+ unsigned short debounce_delay; /\(** ms delay before key reactivated */
+ unsigned short mk_delay; /\(** ms delay to second mouse motion event */
+ unsigned short mk_interval; /\(** ms delay between repeat mouse events */
+ unsigned short mk_time_to_max; /\(** # intervals until constant mouse move */
+ unsigned short mk_max_speed; /\(** multiplier for maximum mouse speed */
+ short mk_curve; /\(** determines mouse move curve type */
+ unsigned short ax_options; /\(** 1 bit => Access X option enabled */
+ unsigned short ax_timeout; /\(** seconds until Access X disabled */
+ unsigned short axt_opts_mask; /\(** 1 bit => options to reset on Access X timeout */
+ unsigned short axt_opts_values; /\(** 1 bit => turn option on, 0=> off */
+ unsigned int axt_ctrls_mask; /\(** which bits in enabled_ctrls to modify */
+ unsigned int axt_ctrls_values; /\(** values for new bits in enabled_ctrls */
+ unsigned char per_key_repeat[XkbPerKeyBitArraySize]; /\(** per key auto repeat */
+ } XkbControlsRec, *XkbControlsPtr;
+.fi
diff --git a/libX11/man/xkb/XkbChangeIndicators.man b/libX11/man/xkb/XkbChangeIndicators.man
index 791ad3b96..d7580e792 100644
--- a/libX11/man/xkb/XkbChangeIndicators.man
+++ b/libX11/man/xkb/XkbChangeIndicators.man
@@ -1,156 +1,156 @@
-.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
-.\"
-.\" Permission is hereby granted, free of charge, to any person obtaining a
-.\" copy of this software and associated documentation files (the "Software"),
-.\" to deal in the Software without restriction, including without limitation
-.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
-.\" and/or sell copies of the Software, and to permit persons to whom the
-.\" Software is furnished to do so, subject to the following conditions:
-.\"
-.\" The above copyright notice and this permission notice (including the next
-.\" paragraph) shall be included in all copies or substantial portions of the
-.\" Software.
-.\"
-.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-.\" DEALINGS IN THE SOFTWARE.
-.\"
-.TH XkbChangeIndicators __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
-.SH NAME
-XkbChangeIndicators \- Changes indicator maps or state without passing the
-entire keyboard description
-.SH SYNOPSIS
-.HP
-.B Bool XkbChangeIndicators
-.BI "(\^Display *" "dpy" "\^,"
-.BI "XkbDescPtr " "xkb" "\^,"
-.BI "XkbIndicatorChangesPtr " "changes" "\^,"
-.BI "unsigned int " "state" "\^);"
-.if n .ti +5n
-.if t .ti +.5i
-.SH ARGUMENTS
-.TP
-.I \- dpy
-connection to the X server
-.TP
-.I \- xkb
-keyboard description from which names are to be taken.
-.TP
-.I \- changes
-indicators to be updated on the server
-.TP
-.I \- state
-new state of indicators listed in changes->state_changes
-.SH DESCRIPTION
-.LP
-The XkbIndicatorChangesRec identifies small modifications to the indicator map.
-Use it with the function
-.I XkbChangeIndicators
-to reduce the amount of traffic sent to the server (see STRUCTURES).
-
-The
-.I state_changes
-field is a mask that specifies the indicators that have changed state, and
-.I map_changes
-is a mask that specifies the indicators whose maps have changed.
-
-.I XkbChangeIndicators
-copies any maps specified by
-.I changes
-from the keyboard description,
-.I xkb,
-to the server specified by
-.I dpy.
-If any bits are set in the
-.I state_changes
-field of
-.I changes, XkbChangeIndicators
-also sets the state of those indicators to the values specified in the
-.I state
-mask. A 1 bit in
-.I state
-turns the corresponding indicator on, a 0 bit turns it off.
-
-In addition, it can also generate XkbIndicatorStateNotify and
-XkbIndicatorMapNotify events.
-
-Whenever an indicator changes state, the server sends XkbIndicatorStateNotify events
-to all interested clients. Similarly, whenever an indicator's map changes, the
-server sends XkbIndicatorMapNotify events to all interested clients.
-
-To receive XkbIndicatorStateNotify events, use
-.I XkbSelectEvents
-with both the
-.I bits_to_change
-and
-.I values_for_bits
-parameters containing XkbIndicatorStateNotifyMask. To receive XkbIndicatorMapNotify
-events, use
-.I XkbSelectEvents
-with XkbIndicatorMapNotifyMask.
-
-To receive events for only specific indicators, use
-.I XkbSelectEventDetails.
-Set the
-.I event_type
-parameter to XkbIndicatorStateNotify or XkbIndicatorMapNotify, and set both the
-.I bits_to_change
-and
-.I values_for_bits
-detail parameters to a mask where each bit specifies one indicator, turning on those
-bits that specify the indicators for which you want to receive events.
-
-.I xkb_type
-is either XkbIndicatorStateNotify or XkbIndicatorMapNotify, depending on whether the
-event is a kbIndicatorStateNotify event or kbIndicatorMapNotify event.
-
-The
-.I changed
-parameter is a mask that is the bitwise inclusive OR of the indicators that have
-changed. If the event is of type XkbIndicatorMapNotify,
-.I changed
-reports the maps that changed. If the event is of type XkbIndicatorStateNotify,
-.I changed
-reports the indicators that have changed state.
-.I state
-is a mask that specifies the current state of all indicators, whether they have
-changed or not, for both XkbIndicatorStateNotify and IndicatorMapNotify events.
-.SH STRUCTURES
-.LP
-.nf
- typedef struct _XkbIndicatorChanges {
- unsigned int state_changes;
- unsigned int map_changes;
- }XkbIndicatorChangesRec,*XkbIndicatorChangesPtr;
-
-.fi
-Both types of indicator events use the same structure:
-
-.nf
- typedef struct _XkbIndicatorNotify {
- int type; /\(** Xkb extension base event code */
- unsigned long serial; /\(** X server serial number for event */
- Bool send_event; /\(** True => synthetically generated */
- Display * display; /\(** server connection where event generated */
- Time time; /\(** server time when event generated */
- int xkb_type; /\(** specifies state or map notify */
- int device; /\(** Xkb device ID, will not be XkbUseCoreKbd*/
- unsigned int changed; /\(** mask of indicators with new state or map */
- unsigned int state; /\(** current state of all indicators */
- } XkbIndicatorNotifyEvent;
-
-.fi
-.SH DIAGNOSTICS
-.TP 15
-.B BadAtom
-A name is neither a valid Atom or None
-.TP 15
-.B BadImplementation
-Invalid reply from server
-.SH "SEE ALSO"
-.BR XkbIndicatorMapNotify (__libmansuffix__),
-.BR XkbIndicatorStateNotify (__libmansuffix__)
+.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the "Software"),
+.\" to deal in the Software without restriction, including without limitation
+.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
+.\" and/or sell copies of the Software, and to permit persons to whom the
+.\" Software is furnished to do so, subject to the following conditions:
+.\"
+.\" The above copyright notice and this permission notice (including the next
+.\" paragraph) shall be included in all copies or substantial portions of the
+.\" Software.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+.\" DEALINGS IN THE SOFTWARE.
+.\"
+.TH XkbChangeIndicators __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbChangeIndicators \- Changes indicator maps or state without passing the
+entire keyboard description
+.SH SYNOPSIS
+.HP
+.B Bool XkbChangeIndicators
+.BI "(\^Display *" "dpy" "\^,"
+.BI "XkbDescPtr " "xkb" "\^,"
+.BI "XkbIndicatorChangesPtr " "changes" "\^,"
+.BI "unsigned int " "state" "\^);"
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- dpy
+connection to the X server
+.TP
+.I \- xkb
+keyboard description from which names are to be taken.
+.TP
+.I \- changes
+indicators to be updated on the server
+.TP
+.I \- state
+new state of indicators listed in changes->state_changes
+.SH DESCRIPTION
+.LP
+The XkbIndicatorChangesRec identifies small modifications to the indicator map.
+Use it with the function
+.I XkbChangeIndicators
+to reduce the amount of traffic sent to the server (see STRUCTURES).
+
+The
+.I state_changes
+field is a mask that specifies the indicators that have changed state, and
+.I map_changes
+is a mask that specifies the indicators whose maps have changed.
+
+.I XkbChangeIndicators
+copies any maps specified by
+.I changes
+from the keyboard description,
+.I xkb,
+to the server specified by
+.I dpy.
+If any bits are set in the
+.I state_changes
+field of
+.I changes, XkbChangeIndicators
+also sets the state of those indicators to the values specified in the
+.I state
+mask. A 1 bit in
+.I state
+turns the corresponding indicator on, a 0 bit turns it off.
+
+In addition, it can also generate XkbIndicatorStateNotify and
+XkbIndicatorMapNotify events.
+
+Whenever an indicator changes state, the server sends XkbIndicatorStateNotify events
+to all interested clients. Similarly, whenever an indicator's map changes, the
+server sends XkbIndicatorMapNotify events to all interested clients.
+
+To receive XkbIndicatorStateNotify events, use
+.I XkbSelectEvents
+with both the
+.I bits_to_change
+and
+.I values_for_bits
+parameters containing XkbIndicatorStateNotifyMask. To receive XkbIndicatorMapNotify
+events, use
+.I XkbSelectEvents
+with XkbIndicatorMapNotifyMask.
+
+To receive events for only specific indicators, use
+.I XkbSelectEventDetails.
+Set the
+.I event_type
+parameter to XkbIndicatorStateNotify or XkbIndicatorMapNotify, and set both the
+.I bits_to_change
+and
+.I values_for_bits
+detail parameters to a mask where each bit specifies one indicator, turning on those
+bits that specify the indicators for which you want to receive events.
+
+.I xkb_type
+is either XkbIndicatorStateNotify or XkbIndicatorMapNotify, depending on whether the
+event is a kbIndicatorStateNotify event or kbIndicatorMapNotify event.
+
+The
+.I changed
+parameter is a mask that is the bitwise inclusive OR of the indicators that have
+changed. If the event is of type XkbIndicatorMapNotify,
+.I changed
+reports the maps that changed. If the event is of type XkbIndicatorStateNotify,
+.I changed
+reports the indicators that have changed state.
+.I state
+is a mask that specifies the current state of all indicators, whether they have
+changed or not, for both XkbIndicatorStateNotify and IndicatorMapNotify events.
+.SH STRUCTURES
+.LP
+.nf
+ typedef struct _XkbIndicatorChanges {
+ unsigned int state_changes;
+ unsigned int map_changes;
+ }XkbIndicatorChangesRec,*XkbIndicatorChangesPtr;
+
+.fi
+Both types of indicator events use the same structure:
+
+.nf
+ typedef struct _XkbIndicatorNotify {
+ int type; /\(** Xkb extension base event code */
+ unsigned long serial; /\(** X server serial number for event */
+ Bool send_event; /\(** True => synthetically generated */
+ Display * display; /\(** server connection where event generated */
+ Time time; /\(** server time when event generated */
+ int xkb_type; /\(** specifies state or map notify */
+ int device; /\(** Xkb device ID, will not be XkbUseCoreKbd*/
+ unsigned int changed; /\(** mask of indicators with new state or map */
+ unsigned int state; /\(** current state of all indicators */
+ } XkbIndicatorNotifyEvent;
+
+.fi
+.SH DIAGNOSTICS
+.TP 15
+.B BadAtom
+A name is neither a valid Atom or None
+.TP 15
+.B BadImplementation
+Invalid reply from server
+.SH "SEE ALSO"
+.BR XkbIndicatorMapNotify (__libmansuffix__),
+.BR XkbIndicatorStateNotify (__libmansuffix__)
diff --git a/libX11/man/xkb/XkbChangeMap.man b/libX11/man/xkb/XkbChangeMap.man
index 3b71d7d8f..a6725ce1f 100644
--- a/libX11/man/xkb/XkbChangeMap.man
+++ b/libX11/man/xkb/XkbChangeMap.man
@@ -1,135 +1,135 @@
-'\" t
-.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
-.\"
-.\" Permission is hereby granted, free of charge, to any person obtaining a
-.\" copy of this software and associated documentation files (the "Software"),
-.\" to deal in the Software without restriction, including without limitation
-.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
-.\" and/or sell copies of the Software, and to permit persons to whom the
-.\" Software is furnished to do so, subject to the following conditions:
-.\"
-.\" The above copyright notice and this permission notice (including the next
-.\" paragraph) shall be included in all copies or substantial portions of the
-.\" Software.
-.\"
-.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-.\" DEALINGS IN THE SOFTWARE.
-.\"
-.TH XkbChangeMap __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
-.SH NAME
-XkbChangeMap \- Update only partial components of a keyboard description, modify
-the appropriate fields in the server and map components of a local copy of the
-keyboard description
-.SH SYNOPSIS
-.HP
-.B Bool XkbChangeMap
-.BI "(\^Display *" "dpy" "\^,"
-.BI "XkbDescPtr " "xkb" "\^,"
-.BI "XkbMapChangesPtr " "changes" "\^);"
-.if n .ti +5n
-.if t .ti +.5i
-.SH ARGUMENTS
-.TP
-.I \- dpy
-connection to X server
-.TP
-.I \- xkb
-description from which new values are taken
-.TP
-.I \- changes
-identifies component parts to update
-.SH DESCRIPTION
-.LP
-To update only partial components of a keyboard description, modify the
-appropriate fields in the server and map components of a local copy of the
-keyboard description, then call
-.I XkbChangeMap
-with an XkbMapChangesRec structure indicating which components have changed.
-
-.I XkbChangeMap
-copies any components specified by the
-.I changes
-structure from the keyboard description,
-.I xkb,
-to the X server specified by
-.I dpy.
-
-If any components specified by
-.I changes
-are not present in the
-.I xkb
-parameter,
-.I XkbChangeMap
-returns False. Otherwise, it sends a request to the server and returns True.
-
-.I XkbChangeMap
-can generate BadAlloc, BadLength, and BadValue protocol errors.
-.SH "RETURN VALUES"
-.TP 15
-True
-The XkbChangeMap function returns True if the components specified by
-.I changes
-are present in the
-.I xkb
-parameter.
-.TP 15
-False
-The XkbChangeMap function returns False if the components specified by
-.I changes
-are not present in the
-.I xkb
-parameter.
-.SH STRUCTURES
-.LP
-Use the XkbMapChangesRec structure to identify and track partial modifications
-to the mapping components and to reduce the amount of traffic between the server
-and clients.
-.nf
-
-typedef struct _XkbMapChanges {
- unsigned short changed; /\(** identifies valid components in
-structure */
- KeyCode min_key_code; /\(** lowest numbered keycode for device
-*/
- KeyCode max_key_code; /\(** highest numbered keycode for device
-*/
- unsigned char first_type; /\(** index of first key type modified */
- unsigned char num_types; /\(** # types modified */
- KeyCode first_key_sym; /\(** first key whose key_sym_map changed
-*/
- unsigned char num_key_syms; /\(** # key_sym_map entries changed */
- KeyCode first_key_act; /\(** first key whose key_acts entry
-changed */
- unsigned char num_key_acts; /\(** # key_acts entries changed */
- KeyCode first_key_behavior; /\(** first key whose behaviors changed */
- unsigned char num_key_behaviors; /\(** # behaviors entries changed */
- KeyCode first_key_explicit; /\(** first key whose explicit entry
-changed */
- unsigned char num_key_explicit; /\(** # explicit entries changed */
- KeyCode first_modmap_key; /\(** first key whose modmap entry changed
-*/
- unsigned char num_modmap_keys; /\(** # modmap entries changed */
- KeyCode first_vmodmap_key; /\(** first key whose vmodmap changed */
- unsigned char num_vmodmap_keys; /\(** # vmodmap entries changed */
- unsigned char pad1; /\(** reserved */
- unsigned short vmods; /\(** mask indicating which vmods changed
-*/
-} XkbMapChangesRec,*XkbMapChangesPtr;
-
-.fi
-.SH DIAGNOSTICS
-.TP 15
-.B BadAlloc
-Unable to allocate storage
-.TP 15
-.B BadLength
-The length of a request is shorter or longer than that required to minimally
-contain the arguments
-.TP 15
-.B BadValue
-An argument is out of range
+'\" t
+.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the "Software"),
+.\" to deal in the Software without restriction, including without limitation
+.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
+.\" and/or sell copies of the Software, and to permit persons to whom the
+.\" Software is furnished to do so, subject to the following conditions:
+.\"
+.\" The above copyright notice and this permission notice (including the next
+.\" paragraph) shall be included in all copies or substantial portions of the
+.\" Software.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+.\" DEALINGS IN THE SOFTWARE.
+.\"
+.TH XkbChangeMap __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbChangeMap \- Update only partial components of a keyboard description, modify
+the appropriate fields in the server and map components of a local copy of the
+keyboard description
+.SH SYNOPSIS
+.HP
+.B Bool XkbChangeMap
+.BI "(\^Display *" "dpy" "\^,"
+.BI "XkbDescPtr " "xkb" "\^,"
+.BI "XkbMapChangesPtr " "changes" "\^);"
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- dpy
+connection to X server
+.TP
+.I \- xkb
+description from which new values are taken
+.TP
+.I \- changes
+identifies component parts to update
+.SH DESCRIPTION
+.LP
+To update only partial components of a keyboard description, modify the
+appropriate fields in the server and map components of a local copy of the
+keyboard description, then call
+.I XkbChangeMap
+with an XkbMapChangesRec structure indicating which components have changed.
+
+.I XkbChangeMap
+copies any components specified by the
+.I changes
+structure from the keyboard description,
+.I xkb,
+to the X server specified by
+.I dpy.
+
+If any components specified by
+.I changes
+are not present in the
+.I xkb
+parameter,
+.I XkbChangeMap
+returns False. Otherwise, it sends a request to the server and returns True.
+
+.I XkbChangeMap
+can generate BadAlloc, BadLength, and BadValue protocol errors.
+.SH "RETURN VALUES"
+.TP 15
+True
+The XkbChangeMap function returns True if the components specified by
+.I changes
+are present in the
+.I xkb
+parameter.
+.TP 15
+False
+The XkbChangeMap function returns False if the components specified by
+.I changes
+are not present in the
+.I xkb
+parameter.
+.SH STRUCTURES
+.LP
+Use the XkbMapChangesRec structure to identify and track partial modifications
+to the mapping components and to reduce the amount of traffic between the server
+and clients.
+.nf
+
+typedef struct _XkbMapChanges {
+ unsigned short changed; /\(** identifies valid components in
+structure */
+ KeyCode min_key_code; /\(** lowest numbered keycode for device
+*/
+ KeyCode max_key_code; /\(** highest numbered keycode for device
+*/
+ unsigned char first_type; /\(** index of first key type modified */
+ unsigned char num_types; /\(** # types modified */
+ KeyCode first_key_sym; /\(** first key whose key_sym_map changed
+*/
+ unsigned char num_key_syms; /\(** # key_sym_map entries changed */
+ KeyCode first_key_act; /\(** first key whose key_acts entry
+changed */
+ unsigned char num_key_acts; /\(** # key_acts entries changed */
+ KeyCode first_key_behavior; /\(** first key whose behaviors changed */
+ unsigned char num_key_behaviors; /\(** # behaviors entries changed */
+ KeyCode first_key_explicit; /\(** first key whose explicit entry
+changed */
+ unsigned char num_key_explicit; /\(** # explicit entries changed */
+ KeyCode first_modmap_key; /\(** first key whose modmap entry changed
+*/
+ unsigned char num_modmap_keys; /\(** # modmap entries changed */
+ KeyCode first_vmodmap_key; /\(** first key whose vmodmap changed */
+ unsigned char num_vmodmap_keys; /\(** # vmodmap entries changed */
+ unsigned char pad1; /\(** reserved */
+ unsigned short vmods; /\(** mask indicating which vmods changed
+*/
+} XkbMapChangesRec,*XkbMapChangesPtr;
+
+.fi
+.SH DIAGNOSTICS
+.TP 15
+.B BadAlloc
+Unable to allocate storage
+.TP 15
+.B BadLength
+The length of a request is shorter or longer than that required to minimally
+contain the arguments
+.TP 15
+.B BadValue
+An argument is out of range
diff --git a/libX11/man/xkb/XkbChangeNames.man b/libX11/man/xkb/XkbChangeNames.man
index 8163d4267..5b369a65d 100644
--- a/libX11/man/xkb/XkbChangeNames.man
+++ b/libX11/man/xkb/XkbChangeNames.man
@@ -1,186 +1,186 @@
-'\" t
-.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
-.\"
-.\" Permission is hereby granted, free of charge, to any person obtaining a
-.\" copy of this software and associated documentation files (the "Software"),
-.\" to deal in the Software without restriction, including without limitation
-.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
-.\" and/or sell copies of the Software, and to permit persons to whom the
-.\" Software is furnished to do so, subject to the following conditions:
-.\"
-.\" The above copyright notice and this permission notice (including the next
-.\" paragraph) shall be included in all copies or substantial portions of the
-.\" Software.
-.\"
-.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-.\" DEALINGS IN THE SOFTWARE.
-.\"
-.TH XkbChangeNames __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
-.SH NAME
-XkbChangeNames \- _summary-line_
-.SH SYNOPSIS
-.HP
-.B Bool XkbChangeNames
-.BI "(\^Display *" "dpy" "\^,"
-.BI "unsigned int " "which" "\^,"
-.BI "XkbDescPtr " "Xkb" "\^);"
-.if n .ti +5n
-.if t .ti +.5i
-.SH ARGUMENTS
-.TP
-.I \- dpy
-connection to the X server
-.TP
-.I \- which
-mask of names or map components to be updated
-.TP
-.I \- Xkb
-keyboard description to be updated
-.SH DESCRIPTION
-.LP
-.I XkbChangeNames
-provides a more flexible method for changing symbolic names than
-.I XkbSetNames
-and requires the use of an XkbNameChangesRec structure.
-
-.I XkbChangeNames
-copies any names specified by
-.I changes
-from the keyboard description,
-.I xkb,
-to the X server specified by
-.I dpy. XkbChangeNames
-aborts and returns False if any illegal type names or type shift level names are
-specified by changes.
-
-To change the symbolic names in the server, first modify a local copy of the
-keyboard description and then use either
-.I XkbSetNames,
-or, to save network traffic, use a XkbNameChangesRec structure and call
-.I XkbChangeNames
-to download the changes to the server.
-.I XkbSetNames
-and
-.I XkbChangeNames
-can generate BadAlloc, BadAtom, BadLength, BadMatch, and BadImplementation
-errors.
-.SH STRUCTURES
-.LP
-The XkbNameChangesRec allows applications to identify small modifications to the
-symbolic names and
-effectively reduces the amount of traffic sent to the server:
-.nf
-
- typedef struct _XkbNameChanges {
- unsigned int changed; /\(** name components that have changed
-*/
- unsigned char first_type; /\(** first key type with a new name */
- unsigned char num_types; /\(** number of types with new names */
- unsigned char first_lvl; /\(** first key type with new level
-names */
- unsigned char num_lvls; /\(** number of key types with new level
-names */
- unsigned char num_aliases; /\(** if key aliases changed, total
-number of key aliases */
- unsigned char num_rg; /\(** if radio groups changed, total
-number of radio groups */
- unsigned char first_key; /\(** first key with a new name */
- unsigned char num_keys; /\(** number of keys with new names */
- unsigned short changed_vmods; /\(** mask of virtual modifiers for
-which names have changed */
- unsigned long changed_indicators; /\(** mask of indicators for which names
-were changed */
- unsigned char changed_groups; /\(** mask of groups for which names
-were changed */
- } XkbNameChangesRec, *XkbNameChangesPtr
-
-.fi
-The
-.I changed
-field specifies the name components that have changed and is the bitwise
-inclusive OR of the valid names
-mask bits defined in Table 1. The rest of the fields in the structure specify
-the ranges that have changed
-for the various kinds of symbolic names, as shown in Table 2.
-
-Xkb provides several functions that work with symbolic names. Each of these
-functions uses a mask to
-specify individual fields of the structures described above. These masks and
-their relationships to the
-fields in a keyboard description are shown in Table 1.
-
-.TS
-c s s s
-l l l l.
-Table 1 Symbolic Names Masks
-_
-Mask Bit Value Keyboard Field
- Component
-_
-XkbKeycodesNameMask (1<<0) Xkb->names keycodes
-XkbGeometryNameMask (1<<1) Xkb->names geometry
-XkbSymbolsNameMask (1<<2) Xkb->names symbols
-XkbPhysSymbolsNameMask (1<<3) Xkb->names phys_symbols
-XkbTypesNameMask (1<<4) Xkb->names type
-XkbCompatNameMask (1<<5) Xkb->names compat
-XkbKeyTypeNamesMask (1<<6) Xkb->map type[*].name
-XkbKTLevelNamesMask (1<<7) Xkb->map type[*].lvl_names[*]
-XkbIndicatorNamesMask (1<<8) Xkb->names indicators[*]
-XkbKeyNamesMask (1<<9) Xkb->names keys[*], num_keys
-XkbKeyAliasesMask (1<<10) Xkb->names key_aliases[*], num_key_aliases
-XkbVirtualModNamesMask (1<<11) Xkb->names vmods[*]
-XkbGroupNamesMask (1<<12) Xkb->names groups[*]
-XkbRGNamesMask (1<<13) Xkb->names radio_groups[*], num_rg
-XkbComponentNamesMask (0x3f) Xkb->names keycodes,
- geometry,
- symbols,
- physical symbols,
- types, and
- compatibility map
-XkbAllNamesMask (0x3fff) Xkb->names all name components
-.TE
-
-.TS
-c s s s
-l l l l.
-Table 2 XkbNameChanges Fields
-_
-Mask Fields Component Field
-_
-XkbKeyTypeNamesMask first_type, Xkb->map type[*].name
- num_types
-XkbKTLevelNamesMask first_lvl, Xkb->map type[*].lvl_names[*]
- num_lvls
-XkbKeyAliasesMask num_aliases Xkb->names key_aliases[*]
-XkbRGNamesMask num_rg Xkb->names radio_groups[*]
-XkbKeyNamesMask first_key, Xkb->names keys[*]
- num_keys
-XkbVirtualModNamesMask changed_vmods Xkb->names vmods[*]
-XkbIndicatorNamesMask changed_indicators Xkb->names indicators[*]
-XkbGroupNamesMask changed_groups Xkb->names groups[*]
-.TE
-.SH DIAGNOSTICS
-.TP 15
-.B BadAlloc
-Unable to allocate storage
-.TP 15
-.B BadAtom
-A name is neither a valid Atom or None
-.TP 15
-.B BadImplementation
-Invalid reply from server
-.TP 15
-.B BadLength
-The length of a request is shorter or longer than that required to minimally
-contain the arguments
-.TP 15
-.B BadMatch
-A compatible version of Xkb was not available in the server or an argument has
-correct type and range, but is otherwise invalid
-.SH "SEE ALSO"
-.BR XkbSetNames (__libmansuffix__)
+'\" t
+.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the "Software"),
+.\" to deal in the Software without restriction, including without limitation
+.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
+.\" and/or sell copies of the Software, and to permit persons to whom the
+.\" Software is furnished to do so, subject to the following conditions:
+.\"
+.\" The above copyright notice and this permission notice (including the next
+.\" paragraph) shall be included in all copies or substantial portions of the
+.\" Software.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+.\" DEALINGS IN THE SOFTWARE.
+.\"
+.TH XkbChangeNames __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbChangeNames \- _summary-line_
+.SH SYNOPSIS
+.HP
+.B Bool XkbChangeNames
+.BI "(\^Display *" "dpy" "\^,"
+.BI "unsigned int " "which" "\^,"
+.BI "XkbDescPtr " "Xkb" "\^);"
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- dpy
+connection to the X server
+.TP
+.I \- which
+mask of names or map components to be updated
+.TP
+.I \- Xkb
+keyboard description to be updated
+.SH DESCRIPTION
+.LP
+.I XkbChangeNames
+provides a more flexible method for changing symbolic names than
+.I XkbSetNames
+and requires the use of an XkbNameChangesRec structure.
+
+.I XkbChangeNames
+copies any names specified by
+.I changes
+from the keyboard description,
+.I xkb,
+to the X server specified by
+.I dpy. XkbChangeNames
+aborts and returns False if any illegal type names or type shift level names are
+specified by changes.
+
+To change the symbolic names in the server, first modify a local copy of the
+keyboard description and then use either
+.I XkbSetNames,
+or, to save network traffic, use a XkbNameChangesRec structure and call
+.I XkbChangeNames
+to download the changes to the server.
+.I XkbSetNames
+and
+.I XkbChangeNames
+can generate BadAlloc, BadAtom, BadLength, BadMatch, and BadImplementation
+errors.
+.SH STRUCTURES
+.LP
+The XkbNameChangesRec allows applications to identify small modifications to the
+symbolic names and
+effectively reduces the amount of traffic sent to the server:
+.nf
+
+ typedef struct _XkbNameChanges {
+ unsigned int changed; /\(** name components that have changed
+*/
+ unsigned char first_type; /\(** first key type with a new name */
+ unsigned char num_types; /\(** number of types with new names */
+ unsigned char first_lvl; /\(** first key type with new level
+names */
+ unsigned char num_lvls; /\(** number of key types with new level
+names */
+ unsigned char num_aliases; /\(** if key aliases changed, total
+number of key aliases */
+ unsigned char num_rg; /\(** if radio groups changed, total
+number of radio groups */
+ unsigned char first_key; /\(** first key with a new name */
+ unsigned char num_keys; /\(** number of keys with new names */
+ unsigned short changed_vmods; /\(** mask of virtual modifiers for
+which names have changed */
+ unsigned long changed_indicators; /\(** mask of indicators for which names
+were changed */
+ unsigned char changed_groups; /\(** mask of groups for which names
+were changed */
+ } XkbNameChangesRec, *XkbNameChangesPtr
+
+.fi
+The
+.I changed
+field specifies the name components that have changed and is the bitwise
+inclusive OR of the valid names
+mask bits defined in Table 1. The rest of the fields in the structure specify
+the ranges that have changed
+for the various kinds of symbolic names, as shown in Table 2.
+
+Xkb provides several functions that work with symbolic names. Each of these
+functions uses a mask to
+specify individual fields of the structures described above. These masks and
+their relationships to the
+fields in a keyboard description are shown in Table 1.
+
+.TS
+c s s s
+l l l l.
+Table 1 Symbolic Names Masks
+_
+Mask Bit Value Keyboard Field
+ Component
+_
+XkbKeycodesNameMask (1<<0) Xkb->names keycodes
+XkbGeometryNameMask (1<<1) Xkb->names geometry
+XkbSymbolsNameMask (1<<2) Xkb->names symbols
+XkbPhysSymbolsNameMask (1<<3) Xkb->names phys_symbols
+XkbTypesNameMask (1<<4) Xkb->names type
+XkbCompatNameMask (1<<5) Xkb->names compat
+XkbKeyTypeNamesMask (1<<6) Xkb->map type[*].name
+XkbKTLevelNamesMask (1<<7) Xkb->map type[*].lvl_names[*]
+XkbIndicatorNamesMask (1<<8) Xkb->names indicators[*]
+XkbKeyNamesMask (1<<9) Xkb->names keys[*], num_keys
+XkbKeyAliasesMask (1<<10) Xkb->names key_aliases[*], num_key_aliases
+XkbVirtualModNamesMask (1<<11) Xkb->names vmods[*]
+XkbGroupNamesMask (1<<12) Xkb->names groups[*]
+XkbRGNamesMask (1<<13) Xkb->names radio_groups[*], num_rg
+XkbComponentNamesMask (0x3f) Xkb->names keycodes,
+ geometry,
+ symbols,
+ physical symbols,
+ types, and
+ compatibility map
+XkbAllNamesMask (0x3fff) Xkb->names all name components
+.TE
+
+.TS
+c s s s
+l l l l.
+Table 2 XkbNameChanges Fields
+_
+Mask Fields Component Field
+_
+XkbKeyTypeNamesMask first_type, Xkb->map type[*].name
+ num_types
+XkbKTLevelNamesMask first_lvl, Xkb->map type[*].lvl_names[*]
+ num_lvls
+XkbKeyAliasesMask num_aliases Xkb->names key_aliases[*]
+XkbRGNamesMask num_rg Xkb->names radio_groups[*]
+XkbKeyNamesMask first_key, Xkb->names keys[*]
+ num_keys
+XkbVirtualModNamesMask changed_vmods Xkb->names vmods[*]
+XkbIndicatorNamesMask changed_indicators Xkb->names indicators[*]
+XkbGroupNamesMask changed_groups Xkb->names groups[*]
+.TE
+.SH DIAGNOSTICS
+.TP 15
+.B BadAlloc
+Unable to allocate storage
+.TP 15
+.B BadAtom
+A name is neither a valid Atom or None
+.TP 15
+.B BadImplementation
+Invalid reply from server
+.TP 15
+.B BadLength
+The length of a request is shorter or longer than that required to minimally
+contain the arguments
+.TP 15
+.B BadMatch
+A compatible version of Xkb was not available in the server or an argument has
+correct type and range, but is otherwise invalid
+.SH "SEE ALSO"
+.BR XkbSetNames (__libmansuffix__)
diff --git a/libX11/man/xkb/XkbChangeTypesOfKey.man b/libX11/man/xkb/XkbChangeTypesOfKey.man
index 93eb6227c..e253cf3af 100644
--- a/libX11/man/xkb/XkbChangeTypesOfKey.man
+++ b/libX11/man/xkb/XkbChangeTypesOfKey.man
@@ -1,202 +1,202 @@
-'\" t
-.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
-.\"
-.\" Permission is hereby granted, free of charge, to any person obtaining a
-.\" copy of this software and associated documentation files (the "Software"),
-.\" to deal in the Software without restriction, including without limitation
-.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
-.\" and/or sell copies of the Software, and to permit persons to whom the
-.\" Software is furnished to do so, subject to the following conditions:
-.\"
-.\" The above copyright notice and this permission notice (including the next
-.\" paragraph) shall be included in all copies or substantial portions of the
-.\" Software.
-.\"
-.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-.\" DEALINGS IN THE SOFTWARE.
-.\"
-.TH XkbChangeTypesOfKey __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
-.SH NAME
-XkbChangeTypesOfKey \- Change the number of groups and the types bound to a key
-.SH SYNOPSIS
-.HP
-.B Status XkbChangeTypesOfKey
-.BI "(\^XkbDescPtr " "xkb" "\^,"
-.BI "int " "key" "\^,"
-.BI "int " "n_groups" "\^,"
-.BI "unsigned int " "groups" "\^,"
-.BI "int *" "new_types_in" "\^,"
-.BI "XkbMapChangesPtr " "p_changes" "\^);"
-.if n .ti +5n
-.if t .ti +.5i
-.SH ARGUMENTS
-.TP
-.I \- xkb
-keyboard description to be changed
-.TP
-.I \- key
-keycode for key of interest
-.TP
-.I \- n_groups
-new number of groups for key
-.TP
-.I \- groups
-mask indicating groups to change
-.TP
-.I \- new_types_in
-indices for new groups specified in groups
-.TP
-.I \- p_changes
-notes changes made to xkb
-.SH DESCRIPTION
-.LP
-.I XkbChangeTypesOfKey
-reallocates the symbols and actions bound to the key, if necessary, and
-initializes any new symbols
-or actions to NoSymbol or NoAction, as appropriate. If the p_changes parameter
-is not NULL,
-.I XkbChangeTypesOfKey
-adds the XkbKeySymsMask to the changes field of
-.I p_changes
-and modifies the
-.I first_key_sym
-and
-.I num_key_syms
-fields of
-.I p_changes
-to include the
-.I key
-that was changed. See STRUCTURE for more information on the XkbMapChangesPtr
-structure. If
-successful,
-.I XkbChangeTypesOfKey
-returns Success.
-
-The
-.I n_groups
-parameter specifies the new number of groups for the key. The
-.I groups
-parameter is a mask specifying the groups for which new types are supplied and
-is a bitwise
-inclusive OR of the following masks: XkbGroup1Mask, XkbGroup2Mask,
-XkbGroup3Mask, and XkbGroup4Mask.
-
-The
-.I new_types_in
-parameter is an integer array of length
-.I n_groups.
-Each entry represents the type to use for the associated group and is an index
-into
-.I xkb->map->types.
-The
-.I new_types_in
-array is indexed by group index; if
-.I n_groups
-is four and
-.I groups
-only has Group1Mask and Group3Mask set,
-.I new_types_in
-looks like this:
-.nf
-
- new_types_in[0] = type for Group1
- new_types_in[1] = ignored
- new_types_in[2] = type for Group3
- new_types_in[3] = ignored
-
-.fi
-For convenience, Xkb provides the following constants to use as indices to the
-groups:
-
-.TS
-c s
-l l
-l l.
-Table 1 Group Index Constants
-_
-Constant Name Value
-_
-XkbGroup1Index 0
-XkbGroup2Index 1
-XkbGroup3Index 2
-XkbGroup4Index 3
-.TE
-
-If the Xkb extension has not been properly initialized,
-.I XkbChangeTypesOfKey
-returns BadAccess. If the
-.I xkb
-parameter it not valid (that is, it is NULL or it does not contain a valid
-client map),
-.I XkbChangeTypesOfKey
-returns BadMatch. If the
-.I key
-is not a valid keycode,
-.I n_groups
-is greater than XkbNumKbdGroups, or the
-.I groups
-mask does not contain any of the valid group mask bits,
-.I XkbChangeTypesOfKey
-returns BadValue. If it is necessary to resize the key symbols or key actions
-arrays and any
-allocation errors occur,
-.I XkbChangeTypesOfKey
-returns BadAlloc.
-.SH STRUCTURES
-.LP
-Use the XkbMapChangesRec structure to identify and track partial modifications
-to the mapping
-components and to reduce the amount of traffic between the server and clients.
-.nf
-
-typedef struct _XkbMapChanges {
- unsigned short changed; /\(** identifies valid components in
-structure */
- KeyCode min_key_code; /\(** lowest numbered keycode for device
-*/
- KeyCode max_key_code; /\(** highest numbered keycode for device
-*/
- unsigned char first_type; /\(** index of first key type modified */
- unsigned char num_types; /\(** # types modified */
- KeyCode first_key_sym; /\(** first key whose key_sym_map changed
-*/
- unsigned char num_key_syms; /\(** # key_sym_map entries changed */
- KeyCode first_key_act; /\(** first key whose key_acts entry
-changed */
- unsigned char num_key_acts; /\(** # key_acts entries changed */
- KeyCode first_key_behavior; /\(** first key whose behaviors changed */
- unsigned char num_key_behaviors; /\(** # behaviors entries changed */
- KeyCode first_key_explicit; /\(** first key whose explicit entry
-changed */
- unsigned char num_key_explicit; /\(** # explicit entries changed */
- KeyCode first_modmap_key; /\(** first key whose modmap entry changed
-*/
- unsigned char num_modmap_keys; /\(** # modmap entries changed */
- KeyCode first_vmodmap_key; /\(** first key whose vmodmap changed */
- unsigned char num_vmodmap_keys; /\(** # vmodmap entries changed */
- unsigned char pad1; /\(** reserved */
- unsigned short vmods; /\(** mask indicating which vmods changed
-*/
-} XkbMapChangesRec,*XkbMapChangesPtr;
-
-.fi
-.SH DIAGNOSTICS
-.TP 15
-.B BadAccess
-The Xkb extension has not been properly initialized
-.TP 15
-.B BadAlloc
-Unable to allocate storage
-.TP 15
-.B BadMatch
-A compatible version of Xkb was not available in the server or an argument has
-correct type and
-range, but is otherwise invalid
-.TP 15
-.B BadValue
-An argument is out of range
+'\" t
+.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the "Software"),
+.\" to deal in the Software without restriction, including without limitation
+.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
+.\" and/or sell copies of the Software, and to permit persons to whom the
+.\" Software is furnished to do so, subject to the following conditions:
+.\"
+.\" The above copyright notice and this permission notice (including the next
+.\" paragraph) shall be included in all copies or substantial portions of the
+.\" Software.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+.\" DEALINGS IN THE SOFTWARE.
+.\"
+.TH XkbChangeTypesOfKey __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbChangeTypesOfKey \- Change the number of groups and the types bound to a key
+.SH SYNOPSIS
+.HP
+.B Status XkbChangeTypesOfKey
+.BI "(\^XkbDescPtr " "xkb" "\^,"
+.BI "int " "key" "\^,"
+.BI "int " "n_groups" "\^,"
+.BI "unsigned int " "groups" "\^,"
+.BI "int *" "new_types_in" "\^,"
+.BI "XkbMapChangesPtr " "p_changes" "\^);"
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- xkb
+keyboard description to be changed
+.TP
+.I \- key
+keycode for key of interest
+.TP
+.I \- n_groups
+new number of groups for key
+.TP
+.I \- groups
+mask indicating groups to change
+.TP
+.I \- new_types_in
+indices for new groups specified in groups
+.TP
+.I \- p_changes
+notes changes made to xkb
+.SH DESCRIPTION
+.LP
+.I XkbChangeTypesOfKey
+reallocates the symbols and actions bound to the key, if necessary, and
+initializes any new symbols
+or actions to NoSymbol or NoAction, as appropriate. If the p_changes parameter
+is not NULL,
+.I XkbChangeTypesOfKey
+adds the XkbKeySymsMask to the changes field of
+.I p_changes
+and modifies the
+.I first_key_sym
+and
+.I num_key_syms
+fields of
+.I p_changes
+to include the
+.I key
+that was changed. See STRUCTURE for more information on the XkbMapChangesPtr
+structure. If
+successful,
+.I XkbChangeTypesOfKey
+returns Success.
+
+The
+.I n_groups
+parameter specifies the new number of groups for the key. The
+.I groups
+parameter is a mask specifying the groups for which new types are supplied and
+is a bitwise
+inclusive OR of the following masks: XkbGroup1Mask, XkbGroup2Mask,
+XkbGroup3Mask, and XkbGroup4Mask.
+
+The
+.I new_types_in
+parameter is an integer array of length
+.I n_groups.
+Each entry represents the type to use for the associated group and is an index
+into
+.I xkb->map->types.
+The
+.I new_types_in
+array is indexed by group index; if
+.I n_groups
+is four and
+.I groups
+only has Group1Mask and Group3Mask set,
+.I new_types_in
+looks like this:
+.nf
+
+ new_types_in[0] = type for Group1
+ new_types_in[1] = ignored
+ new_types_in[2] = type for Group3
+ new_types_in[3] = ignored
+
+.fi
+For convenience, Xkb provides the following constants to use as indices to the
+groups:
+
+.TS
+c s
+l l
+l l.
+Table 1 Group Index Constants
+_
+Constant Name Value
+_
+XkbGroup1Index 0
+XkbGroup2Index 1
+XkbGroup3Index 2
+XkbGroup4Index 3
+.TE
+
+If the Xkb extension has not been properly initialized,
+.I XkbChangeTypesOfKey
+returns BadAccess. If the
+.I xkb
+parameter it not valid (that is, it is NULL or it does not contain a valid
+client map),
+.I XkbChangeTypesOfKey
+returns BadMatch. If the
+.I key
+is not a valid keycode,
+.I n_groups
+is greater than XkbNumKbdGroups, or the
+.I groups
+mask does not contain any of the valid group mask bits,
+.I XkbChangeTypesOfKey
+returns BadValue. If it is necessary to resize the key symbols or key actions
+arrays and any
+allocation errors occur,
+.I XkbChangeTypesOfKey
+returns BadAlloc.
+.SH STRUCTURES
+.LP
+Use the XkbMapChangesRec structure to identify and track partial modifications
+to the mapping
+components and to reduce the amount of traffic between the server and clients.
+.nf
+
+typedef struct _XkbMapChanges {
+ unsigned short changed; /\(** identifies valid components in
+structure */
+ KeyCode min_key_code; /\(** lowest numbered keycode for device
+*/
+ KeyCode max_key_code; /\(** highest numbered keycode for device
+*/
+ unsigned char first_type; /\(** index of first key type modified */
+ unsigned char num_types; /\(** # types modified */
+ KeyCode first_key_sym; /\(** first key whose key_sym_map changed
+*/
+ unsigned char num_key_syms; /\(** # key_sym_map entries changed */
+ KeyCode first_key_act; /\(** first key whose key_acts entry
+changed */
+ unsigned char num_key_acts; /\(** # key_acts entries changed */
+ KeyCode first_key_behavior; /\(** first key whose behaviors changed */
+ unsigned char num_key_behaviors; /\(** # behaviors entries changed */
+ KeyCode first_key_explicit; /\(** first key whose explicit entry
+changed */
+ unsigned char num_key_explicit; /\(** # explicit entries changed */
+ KeyCode first_modmap_key; /\(** first key whose modmap entry changed
+*/
+ unsigned char num_modmap_keys; /\(** # modmap entries changed */
+ KeyCode first_vmodmap_key; /\(** first key whose vmodmap changed */
+ unsigned char num_vmodmap_keys; /\(** # vmodmap entries changed */
+ unsigned char pad1; /\(** reserved */
+ unsigned short vmods; /\(** mask indicating which vmods changed
+*/
+} XkbMapChangesRec,*XkbMapChangesPtr;
+
+.fi
+.SH DIAGNOSTICS
+.TP 15
+.B BadAccess
+The Xkb extension has not been properly initialized
+.TP 15
+.B BadAlloc
+Unable to allocate storage
+.TP 15
+.B BadMatch
+A compatible version of Xkb was not available in the server or an argument has
+correct type and
+range, but is otherwise invalid
+.TP 15
+.B BadValue
+An argument is out of range
diff --git a/libX11/man/xkb/XkbComputeRowBounds.man b/libX11/man/xkb/XkbComputeRowBounds.man
index ca6e2d21a..b72ca5bdb 100644
--- a/libX11/man/xkb/XkbComputeRowBounds.man
+++ b/libX11/man/xkb/XkbComputeRowBounds.man
@@ -1,50 +1,50 @@
-.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
-.\"
-.\" Permission is hereby granted, free of charge, to any person obtaining a
-.\" copy of this software and associated documentation files (the "Software"),
-.\" to deal in the Software without restriction, including without limitation
-.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
-.\" and/or sell copies of the Software, and to permit persons to whom the
-.\" Software is furnished to do so, subject to the following conditions:
-.\"
-.\" The above copyright notice and this permission notice (including the next
-.\" paragraph) shall be included in all copies or substantial portions of the
-.\" Software.
-.\"
-.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-.\" DEALINGS IN THE SOFTWARE.
-.\"
-.TH XkbComputeRowBounds __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
-.SH NAME
-XkbComputeRowBounds \- Update the bounding box of a row
-.SH SYNOPSIS
-.HP
-.B Bool XkbComputeRowBounds
-.BI "(\^XkbGeometryPtr " "geom" "\^,"
-.BI "XkbSectionPtr " "section" "\^,"
-.BI "XkbRowPtr " "row" "\^);"
-.if n .ti +5n
-.if t .ti +.5i
-.SH ARGUMENTS
-.TP
-.I \- geom
-geometry that contains the section
-.TP
-.I \- section
-section that contains the row
-.TP
-.I \- row
-row to be examined and updated
-.SH DESCRIPTION
-.LP
-.I XkbComputeRowBounds
-checks the bounds of all keys in the
-.I row
-and updates the bounding box of the row if necessary.
-.I XkbComputeRowBounds
-returns False if any of the arguments is NULL; otherwise, it returns True.
+.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the "Software"),
+.\" to deal in the Software without restriction, including without limitation
+.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
+.\" and/or sell copies of the Software, and to permit persons to whom the
+.\" Software is furnished to do so, subject to the following conditions:
+.\"
+.\" The above copyright notice and this permission notice (including the next
+.\" paragraph) shall be included in all copies or substantial portions of the
+.\" Software.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+.\" DEALINGS IN THE SOFTWARE.
+.\"
+.TH XkbComputeRowBounds __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbComputeRowBounds \- Update the bounding box of a row
+.SH SYNOPSIS
+.HP
+.B Bool XkbComputeRowBounds
+.BI "(\^XkbGeometryPtr " "geom" "\^,"
+.BI "XkbSectionPtr " "section" "\^,"
+.BI "XkbRowPtr " "row" "\^);"
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- geom
+geometry that contains the section
+.TP
+.I \- section
+section that contains the row
+.TP
+.I \- row
+row to be examined and updated
+.SH DESCRIPTION
+.LP
+.I XkbComputeRowBounds
+checks the bounds of all keys in the
+.I row
+and updates the bounding box of the row if necessary.
+.I XkbComputeRowBounds
+returns False if any of the arguments is NULL; otherwise, it returns True.
diff --git a/libX11/man/xkb/XkbComputeSectionBounds.man b/libX11/man/xkb/XkbComputeSectionBounds.man
index 56e3bc4b4..ce56c0cfe 100644
--- a/libX11/man/xkb/XkbComputeSectionBounds.man
+++ b/libX11/man/xkb/XkbComputeSectionBounds.man
@@ -1,50 +1,50 @@
-.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
-.\"
-.\" Permission is hereby granted, free of charge, to any person obtaining a
-.\" copy of this software and associated documentation files (the "Software"),
-.\" to deal in the Software without restriction, including without limitation
-.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
-.\" and/or sell copies of the Software, and to permit persons to whom the
-.\" Software is furnished to do so, subject to the following conditions:
-.\"
-.\" The above copyright notice and this permission notice (including the next
-.\" paragraph) shall be included in all copies or substantial portions of the
-.\" Software.
-.\"
-.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-.\" DEALINGS IN THE SOFTWARE.
-.\"
-.TH XkbComputeSectionBounds __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
-.SH NAME
-XkbComputeSectionBounds \- Update the bounding box of a section
-.SH SYNOPSIS
-.HP
-.B Bool XkbComputeSectionBounds
-.BI "(\^XkbGeometryPtr " "geom" "\^,"
-.BI "XkbSectionPtr " "section" "\^);"
-.if n .ti +5n
-.if t .ti +.5i
-.SH ARGUMENTS
-.TP
-.I \- geom
-geometry that contains the section
-.TP
-.I \- section
-section to be examined and updated
-.SH DESCRIPTION
-.LP
- If you add or delete a row to or from a section, or if you change the geometry
-of any of the rows in that section, you may need to update the bounding box for
-that section.
-
-.I XkbComputeSectionBounds
-examines all the rows of the
-.I section
-and updates the bounding box of that section so that it contains all rows.
-.I XkbComputeSectionBounds
-returns False if any of the arguments is NULL; otherwise, it returns True.
+.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the "Software"),
+.\" to deal in the Software without restriction, including without limitation
+.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
+.\" and/or sell copies of the Software, and to permit persons to whom the
+.\" Software is furnished to do so, subject to the following conditions:
+.\"
+.\" The above copyright notice and this permission notice (including the next
+.\" paragraph) shall be included in all copies or substantial portions of the
+.\" Software.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+.\" DEALINGS IN THE SOFTWARE.
+.\"
+.TH XkbComputeSectionBounds __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbComputeSectionBounds \- Update the bounding box of a section
+.SH SYNOPSIS
+.HP
+.B Bool XkbComputeSectionBounds
+.BI "(\^XkbGeometryPtr " "geom" "\^,"
+.BI "XkbSectionPtr " "section" "\^);"
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- geom
+geometry that contains the section
+.TP
+.I \- section
+section to be examined and updated
+.SH DESCRIPTION
+.LP
+ If you add or delete a row to or from a section, or if you change the geometry
+of any of the rows in that section, you may need to update the bounding box for
+that section.
+
+.I XkbComputeSectionBounds
+examines all the rows of the
+.I section
+and updates the bounding box of that section so that it contains all rows.
+.I XkbComputeSectionBounds
+returns False if any of the arguments is NULL; otherwise, it returns True.
diff --git a/libX11/man/xkb/XkbComputeShapeBounds.man b/libX11/man/xkb/XkbComputeShapeBounds.man
index 71bfe6240..d3701832c 100644
--- a/libX11/man/xkb/XkbComputeShapeBounds.man
+++ b/libX11/man/xkb/XkbComputeShapeBounds.man
@@ -1,82 +1,82 @@
-.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
-.\"
-.\" Permission is hereby granted, free of charge, to any person obtaining a
-.\" copy of this software and associated documentation files (the "Software"),
-.\" to deal in the Software without restriction, including without limitation
-.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
-.\" and/or sell copies of the Software, and to permit persons to whom the
-.\" Software is furnished to do so, subject to the following conditions:
-.\"
-.\" The above copyright notice and this permission notice (including the next
-.\" paragraph) shall be included in all copies or substantial portions of the
-.\" Software.
-.\"
-.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-.\" DEALINGS IN THE SOFTWARE.
-.\"
-.TH XkbComputeShapeBounds __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
-.SH NAME
-XkbComputeShapeBounds \- Updates the bounding box of a shape
-.SH SYNOPSIS
-.HP
-.B Bool XkbComputeShapeBounds
-.BI "(\^XkbShapePtr " "shape" "\^);"
-.if n .ti +5n
-.if t .ti +.5i
-.SH ARGUMENTS
-.TP
-.I \- shape
-shape to be examined
-.SH DESCRIPTION
-.LP
-Xkb provides a number of convenience functions to help use a keyboard geometry. These include
-functions to return the bounding box of a shape's top surface and to update the bounding box
-of a shape row or section.
-
-A shape is made up of a number of outlines. Each outline is a polygon made up of a number of
-points. The bounding box of a shape is a rectangle that contains all the outlines of that
-shape.
-
-A ShapeRec contains a BoundsRec that describes the bounds of the shape. If you add or delete
-an outline to or from a shape, the bounding box must be updated.
-
-.I XkbComputeShapeBounds
-updates the BoundsRec contained in the
-.I shape
-by examining all the outlines of the shape and setting the BoundsRec to the minimum x and
-minimum y, and maximum x and maximum y values found in those outlines.
-.I XkbComputeShapeBounds
-returns False if
-.I shape
-is NULL or if there are no outlines for the shape; otherwise, it returns True.
-
-If you add or delete a key to or from a row, or if you update the shape of one of the keys in that row, you may need to update the bounding box of that row. To update the bounding box of a row, use
-.I XkbComputeRowBounds.
-.SH STRUCTURES
-.LP
-.nf
-
-typedef struct _XkbShape {
- Atom name; /\(** shape's name */
- unsigned short num_outlines; /\(** number of outlines for the shape */
- unsigned short sz_outlines; /\(** size of the outlines array */
- XkbOutlinePtr outlines; /\(** array of outlines for the shape */
- XkbOutlinePtr approx; /\(** pointer into the array to the approximating outline */
- XkbOutlinePtr primary; /\(** pointer into the array to the primary outline */
- XkbBoundsRec bounds; /\(** bounding box for the shape; encompasses all outlines */
-} XkbShapeRec, *XkbShapePtr;
-
-typedef struct _XkbBounds {
- short x1,y1; /\(** upper left corner of the bounds, in mm/10 */
- short x2,y2; /\(** lower right corner of the bounds, in mm/10 */
-} XkbBoundsRec, *XkbBoundsPtr;
-
-.fi
-.SH "SEE ALSO"
-.BR XkbComputeRowBounds (__libmansuffix__)
-
+.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the "Software"),
+.\" to deal in the Software without restriction, including without limitation
+.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
+.\" and/or sell copies of the Software, and to permit persons to whom the
+.\" Software is furnished to do so, subject to the following conditions:
+.\"
+.\" The above copyright notice and this permission notice (including the next
+.\" paragraph) shall be included in all copies or substantial portions of the
+.\" Software.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+.\" DEALINGS IN THE SOFTWARE.
+.\"
+.TH XkbComputeShapeBounds __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbComputeShapeBounds \- Updates the bounding box of a shape
+.SH SYNOPSIS
+.HP
+.B Bool XkbComputeShapeBounds
+.BI "(\^XkbShapePtr " "shape" "\^);"
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- shape
+shape to be examined
+.SH DESCRIPTION
+.LP
+Xkb provides a number of convenience functions to help use a keyboard geometry. These include
+functions to return the bounding box of a shape's top surface and to update the bounding box
+of a shape row or section.
+
+A shape is made up of a number of outlines. Each outline is a polygon made up of a number of
+points. The bounding box of a shape is a rectangle that contains all the outlines of that
+shape.
+
+A ShapeRec contains a BoundsRec that describes the bounds of the shape. If you add or delete
+an outline to or from a shape, the bounding box must be updated.
+
+.I XkbComputeShapeBounds
+updates the BoundsRec contained in the
+.I shape
+by examining all the outlines of the shape and setting the BoundsRec to the minimum x and
+minimum y, and maximum x and maximum y values found in those outlines.
+.I XkbComputeShapeBounds
+returns False if
+.I shape
+is NULL or if there are no outlines for the shape; otherwise, it returns True.
+
+If you add or delete a key to or from a row, or if you update the shape of one of the keys in that row, you may need to update the bounding box of that row. To update the bounding box of a row, use
+.I XkbComputeRowBounds.
+.SH STRUCTURES
+.LP
+.nf
+
+typedef struct _XkbShape {
+ Atom name; /\(** shape's name */
+ unsigned short num_outlines; /\(** number of outlines for the shape */
+ unsigned short sz_outlines; /\(** size of the outlines array */
+ XkbOutlinePtr outlines; /\(** array of outlines for the shape */
+ XkbOutlinePtr approx; /\(** pointer into the array to the approximating outline */
+ XkbOutlinePtr primary; /\(** pointer into the array to the primary outline */
+ XkbBoundsRec bounds; /\(** bounding box for the shape; encompasses all outlines */
+} XkbShapeRec, *XkbShapePtr;
+
+typedef struct _XkbBounds {
+ short x1,y1; /\(** upper left corner of the bounds, in mm/10 */
+ short x2,y2; /\(** lower right corner of the bounds, in mm/10 */
+} XkbBoundsRec, *XkbBoundsPtr;
+
+.fi
+.SH "SEE ALSO"
+.BR XkbComputeRowBounds (__libmansuffix__)
+
diff --git a/libX11/man/xkb/XkbCopyKeyType.man b/libX11/man/xkb/XkbCopyKeyType.man
index ddc90369c..cfcbd4356 100644
--- a/libX11/man/xkb/XkbCopyKeyType.man
+++ b/libX11/man/xkb/XkbCopyKeyType.man
@@ -1,94 +1,94 @@
-.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
-.\"
-.\" Permission is hereby granted, free of charge, to any person obtaining a
-.\" copy of this software and associated documentation files (the "Software"),
-.\" to deal in the Software without restriction, including without limitation
-.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
-.\" and/or sell copies of the Software, and to permit persons to whom the
-.\" Software is furnished to do so, subject to the following conditions:
-.\"
-.\" The above copyright notice and this permission notice (including the next
-.\" paragraph) shall be included in all copies or substantial portions of the
-.\" Software.
-.\"
-.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-.\" DEALINGS IN THE SOFTWARE.
-.\"
-.TH XkbCopyKeyType __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
-.SH NAME
-XkbCopyKeyType \- Copy one XkbKeyTypeRec structures
-.SH SYNOPSIS
-.HP
-.B Status XkbCopyKeyType
-.BI "(\^XkbKeyTypePtr " "from" "\^,"
-.BI "XkbKeyTypePtr " "into" "\^);"
-.if n .ti +5n
-.if t .ti +.5i
-.SH ARGUMENTS
-.TP
-.I \- from
-pointer to XkbKeyTypeRec to be copied
-.TP
-.I \- into
-pointer to XkbKeyTypeRec to be changed
-.SH DESCRIPTION
-.LP
-.I XkbCopyKeyType
-copies the key type specified by
-.I from
-to the key type specified by
-.I into.
-Both must point to legal XkbKeyTypeRec structures. Xkb assumes
-.I from
-and
-.I into
-point to different places. As a result, overlaps can be fatal.
-.I XkbCopyKeyType
-frees any existing
-.I map, preserve,
-and
-.I level_names
-in
-.I into
-prior to copying. If any allocation errors occur while copying
-.I from
-to
-.I into, XkbCopyKeyType
-returns BadAlloc. Otherwise,
-.I XkbCopyKeyType
-copies
-.I from
-to
-.I into
-and returns Success.
-.SH STRUCTURES
-.LP
-Key types are used to determine the shift level of a key given the current state of the
-keyboard. The set of all possible key types for the Xkb keyboard description are held in the
-.I types
-field of the client map, whose total size is stored in
-.I size_types,
-and whose total number of valid entries is stored in
-.I num_types.
-Key types are defined using the following structure:
-.nf
-
-typedef struct { /\(** Key Type */
- XkbModsRec mods; /\(** modifiers used to compute shift level */
- unsigned char num_levels; /\(** total # shift levels, do not modify directly */
- unsigned char map_count; /\(** # entries in map, preserve (if non-NULL) */
- XkbKTMapEntryPtr map; /\(** vector of modifiers for each shift level */
- XkbModsPtr preserve; /\(** mods to preserve for corresponding map entry */
- Atom name; /\(** name of key type */
- Atom * level_names; /\(** array of names of each shift level */
-} XkbKeyTypeRec, *XkbKeyTypePtr;
-.fi
-.SH DIAGNOSTICS
-.TP 15
-.B BadAlloc
-Unable to allocate storage
+.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the "Software"),
+.\" to deal in the Software without restriction, including without limitation
+.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
+.\" and/or sell copies of the Software, and to permit persons to whom the
+.\" Software is furnished to do so, subject to the following conditions:
+.\"
+.\" The above copyright notice and this permission notice (including the next
+.\" paragraph) shall be included in all copies or substantial portions of the
+.\" Software.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+.\" DEALINGS IN THE SOFTWARE.
+.\"
+.TH XkbCopyKeyType __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbCopyKeyType \- Copy one XkbKeyTypeRec structures
+.SH SYNOPSIS
+.HP
+.B Status XkbCopyKeyType
+.BI "(\^XkbKeyTypePtr " "from" "\^,"
+.BI "XkbKeyTypePtr " "into" "\^);"
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- from
+pointer to XkbKeyTypeRec to be copied
+.TP
+.I \- into
+pointer to XkbKeyTypeRec to be changed
+.SH DESCRIPTION
+.LP
+.I XkbCopyKeyType
+copies the key type specified by
+.I from
+to the key type specified by
+.I into.
+Both must point to legal XkbKeyTypeRec structures. Xkb assumes
+.I from
+and
+.I into
+point to different places. As a result, overlaps can be fatal.
+.I XkbCopyKeyType
+frees any existing
+.I map, preserve,
+and
+.I level_names
+in
+.I into
+prior to copying. If any allocation errors occur while copying
+.I from
+to
+.I into, XkbCopyKeyType
+returns BadAlloc. Otherwise,
+.I XkbCopyKeyType
+copies
+.I from
+to
+.I into
+and returns Success.
+.SH STRUCTURES
+.LP
+Key types are used to determine the shift level of a key given the current state of the
+keyboard. The set of all possible key types for the Xkb keyboard description are held in the
+.I types
+field of the client map, whose total size is stored in
+.I size_types,
+and whose total number of valid entries is stored in
+.I num_types.
+Key types are defined using the following structure:
+.nf
+
+typedef struct { /\(** Key Type */
+ XkbModsRec mods; /\(** modifiers used to compute shift level */
+ unsigned char num_levels; /\(** total # shift levels, do not modify directly */
+ unsigned char map_count; /\(** # entries in map, preserve (if non-NULL) */
+ XkbKTMapEntryPtr map; /\(** vector of modifiers for each shift level */
+ XkbModsPtr preserve; /\(** mods to preserve for corresponding map entry */
+ Atom name; /\(** name of key type */
+ Atom * level_names; /\(** array of names of each shift level */
+} XkbKeyTypeRec, *XkbKeyTypePtr;
+.fi
+.SH DIAGNOSTICS
+.TP 15
+.B BadAlloc
+Unable to allocate storage
diff --git a/libX11/man/xkb/XkbCopyKeyTypes.man b/libX11/man/xkb/XkbCopyKeyTypes.man
index eba786287..1c70adbbf 100644
--- a/libX11/man/xkb/XkbCopyKeyTypes.man
+++ b/libX11/man/xkb/XkbCopyKeyTypes.man
@@ -1,116 +1,116 @@
-.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
-.\"
-.\" Permission is hereby granted, free of charge, to any person obtaining a
-.\" copy of this software and associated documentation files (the "Software"),
-.\" to deal in the Software without restriction, including without limitation
-.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
-.\" and/or sell copies of the Software, and to permit persons to whom the
-.\" Software is furnished to do so, subject to the following conditions:
-.\"
-.\" The above copyright notice and this permission notice (including the next
-.\" paragraph) shall be included in all copies or substantial portions of the
-.\" Software.
-.\"
-.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-.\" DEALINGS IN THE SOFTWARE.
-.\"
-.TH XkbCopyKeyTypes __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
-.SH NAME
-XkbCopyKeyTypes \- Copy more than one XkbKeyTypeRec structure
-.SH SYNOPSIS
-.HP
-.B Status XkbCopyKeyTypes
-.BI "(\^XkbKeyTypePtr " "from" "\^,"
-.BI "XkbKeyTypePtr " "into" "\^,"
-.BI "int " "num_types" "\^);"
-.if n .ti +5n
-.if t .ti +.5i
-.SH ARGUMENTS
-.TP
-.I \- from
-pointer to array of XkbKeyTypeRecs to copy
-.TP
-.I \- into
-pointer to array of XkbKeyTypeRecs to change
-.TP
-.I \- num_types
-number of types to copy
-.SH DESCRIPTION
-.LP
-.I XkbCopyKeyTypes
-copies
-.I num_types
-XkbKeyTypeRec structures from the array specified by
-.I from
-into the array specified by
-.I into.
-It is intended for copying between, rather than within, keyboard descriptions,
-so it
-doesn't check for overlaps. The same rules that apply to the
-.I from
-and
-.I into
-parameters in
-.I XkbCopyKeyType
-apply to each entry of the
-.I from
-and
-.I into
-arrays of
-.I XkbCopyKeyTypes.
-If any allocation errors occur while copying
-.I from
-to
-.I into, XkbCopyKeyTypes
-returns BadAlloc. Otherwise,
-.I XkbCopyKeyTypes
-copies
-.I from
-to
-.I into
-and returns Success.
-.SH "RETURN VALUES"
-.TP 15
-Success
-The XkbCopyKeyTypes function returns Success when there are no allocation
-errors.
-.SH STRUCTURES
-.LP
-Key types are used to determine the shift level of a key given the current state
-of the
-keyboard. The set of all possible key types for the Xkb keyboard description are
-held in
-the
-.I types
-field of the client map, whose total size is stored in
-.I size_types,
-and whose total number of valid entries is stored in
-.I num_types.
-Key types are defined using the following structure:
-.nf
-
-typedef struct { /\(** Key Type */
- XkbModsRec mods; /\(** modifiers used to compute shift level */
- unsigned char num_levels; /\(** total # shift levels, do not modify
-directly */
- unsigned char map_count; /\(** # entries in map, preserve (if non-NULL)
-*/
- XkbKTMapEntryPtr map; /\(** vector of modifiers for each shift level
-*/
- XkbModsPtr preserve; /\(** mods to preserve for corresponding map
-entry */
- Atom name; /\(** name of key type */
- Atom * level_names; /\(** array of names of each shift level */
-} XkbKeyTypeRec, *XkbKeyTypePtr;
-.fi
-.SH DIAGNOSTICS
-.TP 15
-.B BadAlloc
-Unable to allocate storage
-.SH "SEE ALSO"
-.BR XkbCopyKeyType (__libmansuffix__)
+.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the "Software"),
+.\" to deal in the Software without restriction, including without limitation
+.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
+.\" and/or sell copies of the Software, and to permit persons to whom the
+.\" Software is furnished to do so, subject to the following conditions:
+.\"
+.\" The above copyright notice and this permission notice (including the next
+.\" paragraph) shall be included in all copies or substantial portions of the
+.\" Software.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+.\" DEALINGS IN THE SOFTWARE.
+.\"
+.TH XkbCopyKeyTypes __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbCopyKeyTypes \- Copy more than one XkbKeyTypeRec structure
+.SH SYNOPSIS
+.HP
+.B Status XkbCopyKeyTypes
+.BI "(\^XkbKeyTypePtr " "from" "\^,"
+.BI "XkbKeyTypePtr " "into" "\^,"
+.BI "int " "num_types" "\^);"
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- from
+pointer to array of XkbKeyTypeRecs to copy
+.TP
+.I \- into
+pointer to array of XkbKeyTypeRecs to change
+.TP
+.I \- num_types
+number of types to copy
+.SH DESCRIPTION
+.LP
+.I XkbCopyKeyTypes
+copies
+.I num_types
+XkbKeyTypeRec structures from the array specified by
+.I from
+into the array specified by
+.I into.
+It is intended for copying between, rather than within, keyboard descriptions,
+so it
+doesn't check for overlaps. The same rules that apply to the
+.I from
+and
+.I into
+parameters in
+.I XkbCopyKeyType
+apply to each entry of the
+.I from
+and
+.I into
+arrays of
+.I XkbCopyKeyTypes.
+If any allocation errors occur while copying
+.I from
+to
+.I into, XkbCopyKeyTypes
+returns BadAlloc. Otherwise,
+.I XkbCopyKeyTypes
+copies
+.I from
+to
+.I into
+and returns Success.
+.SH "RETURN VALUES"
+.TP 15
+Success
+The XkbCopyKeyTypes function returns Success when there are no allocation
+errors.
+.SH STRUCTURES
+.LP
+Key types are used to determine the shift level of a key given the current state
+of the
+keyboard. The set of all possible key types for the Xkb keyboard description are
+held in
+the
+.I types
+field of the client map, whose total size is stored in
+.I size_types,
+and whose total number of valid entries is stored in
+.I num_types.
+Key types are defined using the following structure:
+.nf
+
+typedef struct { /\(** Key Type */
+ XkbModsRec mods; /\(** modifiers used to compute shift level */
+ unsigned char num_levels; /\(** total # shift levels, do not modify
+directly */
+ unsigned char map_count; /\(** # entries in map, preserve (if non-NULL)
+*/
+ XkbKTMapEntryPtr map; /\(** vector of modifiers for each shift level
+*/
+ XkbModsPtr preserve; /\(** mods to preserve for corresponding map
+entry */
+ Atom name; /\(** name of key type */
+ Atom * level_names; /\(** array of names of each shift level */
+} XkbKeyTypeRec, *XkbKeyTypePtr;
+.fi
+.SH DIAGNOSTICS
+.TP 15
+.B BadAlloc
+Unable to allocate storage
+.SH "SEE ALSO"
+.BR XkbCopyKeyType (__libmansuffix__)
diff --git a/libX11/man/xkb/XkbDeviceBell.man b/libX11/man/xkb/XkbDeviceBell.man
index 0dc9bc217..bf78681e2 100644
--- a/libX11/man/xkb/XkbDeviceBell.man
+++ b/libX11/man/xkb/XkbDeviceBell.man
@@ -1,291 +1,291 @@
-'\" t
-.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
-.\"
-.\" Permission is hereby granted, free of charge, to any person obtaining a
-.\" copy of this software and associated documentation files (the "Software"),
-.\" to deal in the Software without restriction, including without limitation
-.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
-.\" and/or sell copies of the Software, and to permit persons to whom the
-.\" Software is furnished to do so, subject to the following conditions:
-.\"
-.\" The above copyright notice and this permission notice (including the next
-.\" paragraph) shall be included in all copies or substantial portions of the
-.\" Software.
-.\"
-.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-.\" DEALINGS IN THE SOFTWARE.
-.\"
-.TH XkbDeviceBell __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
-.SH NAME
-XkbDeviceBell \- Rings the bell on an X input extension device or the default keyboard
-.SH SYNOPSIS
-.HP
-.B Bool XkbDeviceBell
-.BI "(\^Display *" "display" "\^,"
-.BI "Window " "window" "\^,"
-.BI "unsigned int " "device_spec" "\^,"
-.BI "unsigned int " "bell_class" "\^,"
-.BI "unsigned int " "bell_id" "\^,"
-.BI "int " "percent" "\^,"
-.BI "Atom " "name" "\^);"
-.if n .ti +5n
-.if t .ti +.5i
-.SH ARGUMENTS
-.TP
-.I \- display
-connection to the X server
-.TP
-.I \- window
-window for which the bell is generated, or None
-.TP
-.I \- device_spec
-device ID, or XkbUseCoreKbd
-.TP
-.I \- bell_class
-X input extension bell class of the bell to be rung
-.TP
-.I \- bell_id
-X input extension bell ID of the bell to be rung
-.TP
-.I \- percent
-bell volume, from -100 to 100 inclusive
-.TP
-.I \- name
-a name for the bell, or NULL
-.SH DESCRIPTION
-.LP
-The core X protocol allows only applications to explicitly sound the system bell with a
-given duration, pitch, and volume. Xkb extends this capability by allowing clients to
-attach symbolic names to bells, disable audible bells, and receive an event whenever the
-keyboard bell is rung. For the purposes of this document, the
-.I audible
-bell is defined to be the system bell, or the default keyboard bell, as opposed to any
-other audible sound generated elsewhere in the system.
-You can ask to receive XkbBellNotify events when any client rings any one of the
-following:
-
-.IP \(bu 5
-The default bell
-.IP \(bu 5
-Any bell on an input device that can be specified by a bell_class and bell_id pair
-.IP \(bu 5
-Any bell specified only by an arbitrary name. (This is, from the server's point of view,
-merely a name, and not connected with any physical sound-generating device. Some client
-application must generate the sound, or visual feedback, if any, that is associated with
-the name.)
-
-You can also ask to receive XkbBellNotify events when the server rings the default bell
-or if any client has requested events only (without the bell sounding) for any of the
-bell types previously listed.
-
-You can disable audible bells on a global basis. For example, a client that replaces the
-keyboard bell with some other audible cue might want to turn off the AudibleBell control
-to prevent the server from also generating a sound and avoid cacophony. If you disable
-audible bells and request to receive XkbBellNotify events, you can generate feedback
-different from the default bell.
-
-You can, however, override the AudibleBell control by calling one of the functions that
-force the ringing of a bell in spite of the setting of the AudibleBell control -
-.I XkbForceDeviceBell
-or
-.I XkbForceBell.
-In this case the server does not generate a bell event.
-
-Just as some keyboards can produce keyclicks to indicate when a key is pressed or
-repeating, Xkb can provide feedback for the controls by using special beep codes. The
-AccessXFeedback control is used to configure the specific types of operations that
-generate feedback.
-
-Bell Names
-
-You can associate a name to an act of ringing a bell by converting the name to an Atom
-and then using this name when you call the functions listed in this chapter. If an event
-is generated as a result, the name is then passed to all other clients interested in
-receiving XkbBellNotify events. Note that these are arbitrary names and that there is no
-binding to any sounds. Any sounds or other effects (such as visual bells on the screen)
-must be generated by a client application upon receipt of the bell event containing the
-name. There is no default name for the default keyboard bell. The server does generate
-some predefined bells for the AccessX controls. These named bells are shown in the Table 1
-; the name is included in any bell event sent to clients that have requested to
-receive XkbBellNotify events.
-
-.TS
-c s
-l l
-lW(4i) l.
-Table 1 Predefined Bells
-_
-Action Named Bell
-_
-Indicator turned on AX_IndicatorOn
-Indicator turned off AX_IndicatorOff
-More than one indicator changed state AX_IndicatorChange
-Control turned on AX_FeatureOn
-Control turned off AX_FeatureOff
-More than one control changed state AX_FeatureChange
-T{
-SlowKeys and BounceKeys about to be turned on or off
-T} AX_SlowKeysWarning
-SlowKeys key pressed AX_SlowKeyPress
-SlowKeys key accepted AX_SlowKeyAccept
-SlowKeys key rejected AX_SlowKeyReject
-Accepted SlowKeys key released AX_SlowKeyRelease
-BounceKeys key rejected AX_BounceKeyReject
-StickyKeys key latched AX_StickyLatch
-StickyKeys key locked AX_StickyLock
-StickyKeys key unlocked AX_StickyUnlock
-.TE
-
-Audible Bells
-
-Using Xkb you can generate bell events that do not necessarily ring the system bell. This
-is useful if you need to use an audio server instead of the system beep. For example,
-when an audio client starts, it could disable the audible bell (the system bell) and then
-listen for XkbBellNotify events. When it receives a XkbBellNotify event, the audio client
-could then send a request to an audio server to play a sound.
-
-You can control the audible bells feature by passing the XkbAudibleBellMask to
-.I XkbChangeEnabledControls.
-If you set XkbAudibleBellMask on, the server rings the system bell when a bell event
-occurs. This is the default. If you set XkbAudibleBellMask off and a bell event occurs,
-the server does not ring the system bell unless you call
-.I XkbForceDeviceBell
-or
-.I XkbForceBell.
-
-Audible bells are also part of the per-client auto-reset controls.
-
-Bell Functions
-
-Use the functions described in this section to ring bells and to generate bell events.
-
-The input extension has two types of feedbacks that can generate bells - bell feedback
-and keyboard feedback. Some of the functions in this section have
-.I bell_class
-and
-.I bell_id
-parameters; set them as follows: Set
-.I bell_class
-to BellFeedbackClass or KbdFeedbackClass. A device can have more than one feedback of
-each type; set
-.I bell_id
-to the particular bell feedback of
-.I bell_class
-type.
-
-The Table 2 shows the conditions that cause a bell to sound or an XkbBellNotifyEvent
-to be generated when a bell function is called.
-
-.TS
-c s s s
-l l l l
-l l l l.
-Table 2 Bell Sounding and Bell Event Generating
-_
-Function called AudibleBell Server sounds a bell Server sends an
-XkbBellNotifyEvent
-_
-XkbDeviceBell On Yes Yes
-XkbDeviceBell Off No Yes
-XkbBell On Yes Yes
-XkbBell Off No Yes
-XkbDeviceBellEvent On or Off No Yes
-XkbBellEvent On or Off No Yes
-XkbDeviceForceBell On or Off Yes No
-XkbForceBell On or Off Yes No
-.TE
-
-Set
-.I percent
-to be the volume relative to the base volume for the keyboard as described for .I XBell.
-
-Note that
-.I bell_class
-and
-.I bell_id
-indicate the bell to physically ring.
-.I name
-is simply an arbitrary moniker for the client application's use.
-
-To determine the current feedback settings of an extension input device, use
-.I XGetFeedbackControl.
-See the X input extension documentation for more information on
-.I XGetFeedbackControl
-and related data structures.
-
-If a compatible keyboard extension is not present in the X server,
-.I XkbDeviceBell
-immediately returns False. Otherwise,
-.I XkbDeviceBell
-rings the bell as specified for the display and keyboard device and returns True. If you have disabled the audible bell, the server does not ring the system bell, although it does generate a
-.I XkbBellNotify
-event.
-
-You can call
-.I XkbDeviceBell
-without first initializing the keyboard extension.
-.SH STRUCTURES
-Xkb generates XkbBellNotify events for all bells except for those resulting from calls to
-.I XkbForceDeviceBell
-and
-.I XkbForceBell.
-To receive XkbBellNotify events under all possible conditions, pass XkbBellNotifyMask in
-both the
-.I bits_to_change
-and
-.I values_for_bits
-parameters to
-.I XkbSelectEvents.
-
-The XkbBellNotify event has no event details. It is either selected or it is not.
-However, you can call
-.I XkbSelectEventDetails
-using XkbBellNotify as the
-.I event_type
-and specifying XkbAllBellNotifyMask in
-.I bits_to_change
-and
-.I values_for_bits.
-This has the same effect as a call to
-.I XkbSelectEvents.
-
-The structure for the XkbBellNotify event type contains:
-.nf
-
- typedef struct _XkbBellNotify {
- int type; /\(** Xkb extension base event code */
- unsigned long serial; /\(** X server serial number for event */
- Bool send_event; /\(** True => synthetically generated */
- Display * display; /\(** server connection where event generated */
- Time time; /\(** server time when event generated */
- int xkb_type; /\(** XkbBellNotify */
- unsigned int device; /\(** Xkb device ID, will not be XkbUseCoreKbd */
- int percent; /\(** requested volume as % of max */
- int pitch; /\(** requested pitch in Hz */
- int duration; /\(** requested duration in microseconds */
- unsigned int bell_class; /\(** X input extension feedback class */
- unsigned int bell_id; /\(** X input extension feedback ID */
- Atom name; /\(** "name" of requested bell */
- Window window; /\(** window associated with event */
- Bool event_only; /\(** False -> the server did not produce a beep */
- } XkbBellNotifyEvent;
-
-.fi
-If your application needs to generate visual bell feedback on the screen when it receives
-a bell event, use the window ID in the XkbBellNotifyEvent, if present.
-
-.SH "SEE ALSO"
-.BR XBell (__libmansuffix__),
-.BR XkbBellNotify (__libmansuffix__),
-.BR XkbChangeEnabledControls (__libmansuffix__),
-.BR XkbDeviceBell (__libmansuffix__),
-.BR XkbForceBell (__libmansuffix__),
-.BR XkbForceDeviceBell (__libmansuffix__),
-.BR XGetFeedbackControl (__libmansuffix__),
-.BR XkbSelectEvents (__libmansuffix__)
-
+'\" t
+.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the "Software"),
+.\" to deal in the Software without restriction, including without limitation
+.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
+.\" and/or sell copies of the Software, and to permit persons to whom the
+.\" Software is furnished to do so, subject to the following conditions:
+.\"
+.\" The above copyright notice and this permission notice (including the next
+.\" paragraph) shall be included in all copies or substantial portions of the
+.\" Software.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+.\" DEALINGS IN THE SOFTWARE.
+.\"
+.TH XkbDeviceBell __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbDeviceBell \- Rings the bell on an X input extension device or the default keyboard
+.SH SYNOPSIS
+.HP
+.B Bool XkbDeviceBell
+.BI "(\^Display *" "display" "\^,"
+.BI "Window " "window" "\^,"
+.BI "unsigned int " "device_spec" "\^,"
+.BI "unsigned int " "bell_class" "\^,"
+.BI "unsigned int " "bell_id" "\^,"
+.BI "int " "percent" "\^,"
+.BI "Atom " "name" "\^);"
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- display
+connection to the X server
+.TP
+.I \- window
+window for which the bell is generated, or None
+.TP
+.I \- device_spec
+device ID, or XkbUseCoreKbd
+.TP
+.I \- bell_class
+X input extension bell class of the bell to be rung
+.TP
+.I \- bell_id
+X input extension bell ID of the bell to be rung
+.TP
+.I \- percent
+bell volume, from -100 to 100 inclusive
+.TP
+.I \- name
+a name for the bell, or NULL
+.SH DESCRIPTION
+.LP
+The core X protocol allows only applications to explicitly sound the system bell with a
+given duration, pitch, and volume. Xkb extends this capability by allowing clients to
+attach symbolic names to bells, disable audible bells, and receive an event whenever the
+keyboard bell is rung. For the purposes of this document, the
+.I audible
+bell is defined to be the system bell, or the default keyboard bell, as opposed to any
+other audible sound generated elsewhere in the system.
+You can ask to receive XkbBellNotify events when any client rings any one of the
+following:
+
+.IP \(bu 5
+The default bell
+.IP \(bu 5
+Any bell on an input device that can be specified by a bell_class and bell_id pair
+.IP \(bu 5
+Any bell specified only by an arbitrary name. (This is, from the server's point of view,
+merely a name, and not connected with any physical sound-generating device. Some client
+application must generate the sound, or visual feedback, if any, that is associated with
+the name.)
+
+You can also ask to receive XkbBellNotify events when the server rings the default bell
+or if any client has requested events only (without the bell sounding) for any of the
+bell types previously listed.
+
+You can disable audible bells on a global basis. For example, a client that replaces the
+keyboard bell with some other audible cue might want to turn off the AudibleBell control
+to prevent the server from also generating a sound and avoid cacophony. If you disable
+audible bells and request to receive XkbBellNotify events, you can generate feedback
+different from the default bell.
+
+You can, however, override the AudibleBell control by calling one of the functions that
+force the ringing of a bell in spite of the setting of the AudibleBell control -
+.I XkbForceDeviceBell
+or
+.I XkbForceBell.
+In this case the server does not generate a bell event.
+
+Just as some keyboards can produce keyclicks to indicate when a key is pressed or
+repeating, Xkb can provide feedback for the controls by using special beep codes. The
+AccessXFeedback control is used to configure the specific types of operations that
+generate feedback.
+
+Bell Names
+
+You can associate a name to an act of ringing a bell by converting the name to an Atom
+and then using this name when you call the functions listed in this chapter. If an event
+is generated as a result, the name is then passed to all other clients interested in
+receiving XkbBellNotify events. Note that these are arbitrary names and that there is no
+binding to any sounds. Any sounds or other effects (such as visual bells on the screen)
+must be generated by a client application upon receipt of the bell event containing the
+name. There is no default name for the default keyboard bell. The server does generate
+some predefined bells for the AccessX controls. These named bells are shown in the Table 1
+; the name is included in any bell event sent to clients that have requested to
+receive XkbBellNotify events.
+
+.TS
+c s
+l l
+lW(4i) l.
+Table 1 Predefined Bells
+_
+Action Named Bell
+_
+Indicator turned on AX_IndicatorOn
+Indicator turned off AX_IndicatorOff
+More than one indicator changed state AX_IndicatorChange
+Control turned on AX_FeatureOn
+Control turned off AX_FeatureOff
+More than one control changed state AX_FeatureChange
+T{
+SlowKeys and BounceKeys about to be turned on or off
+T} AX_SlowKeysWarning
+SlowKeys key pressed AX_SlowKeyPress
+SlowKeys key accepted AX_SlowKeyAccept
+SlowKeys key rejected AX_SlowKeyReject
+Accepted SlowKeys key released AX_SlowKeyRelease
+BounceKeys key rejected AX_BounceKeyReject
+StickyKeys key latched AX_StickyLatch
+StickyKeys key locked AX_StickyLock
+StickyKeys key unlocked AX_StickyUnlock
+.TE
+
+Audible Bells
+
+Using Xkb you can generate bell events that do not necessarily ring the system bell. This
+is useful if you need to use an audio server instead of the system beep. For example,
+when an audio client starts, it could disable the audible bell (the system bell) and then
+listen for XkbBellNotify events. When it receives a XkbBellNotify event, the audio client
+could then send a request to an audio server to play a sound.
+
+You can control the audible bells feature by passing the XkbAudibleBellMask to
+.I XkbChangeEnabledControls.
+If you set XkbAudibleBellMask on, the server rings the system bell when a bell event
+occurs. This is the default. If you set XkbAudibleBellMask off and a bell event occurs,
+the server does not ring the system bell unless you call
+.I XkbForceDeviceBell
+or
+.I XkbForceBell.
+
+Audible bells are also part of the per-client auto-reset controls.
+
+Bell Functions
+
+Use the functions described in this section to ring bells and to generate bell events.
+
+The input extension has two types of feedbacks that can generate bells - bell feedback
+and keyboard feedback. Some of the functions in this section have
+.I bell_class
+and
+.I bell_id
+parameters; set them as follows: Set
+.I bell_class
+to BellFeedbackClass or KbdFeedbackClass. A device can have more than one feedback of
+each type; set
+.I bell_id
+to the particular bell feedback of
+.I bell_class
+type.
+
+The Table 2 shows the conditions that cause a bell to sound or an XkbBellNotifyEvent
+to be generated when a bell function is called.
+
+.TS
+c s s s
+l l l l
+l l l l.
+Table 2 Bell Sounding and Bell Event Generating
+_
+Function called AudibleBell Server sounds a bell Server sends an
+XkbBellNotifyEvent
+_
+XkbDeviceBell On Yes Yes
+XkbDeviceBell Off No Yes
+XkbBell On Yes Yes
+XkbBell Off No Yes
+XkbDeviceBellEvent On or Off No Yes
+XkbBellEvent On or Off No Yes
+XkbDeviceForceBell On or Off Yes No
+XkbForceBell On or Off Yes No
+.TE
+
+Set
+.I percent
+to be the volume relative to the base volume for the keyboard as described for .I XBell.
+
+Note that
+.I bell_class
+and
+.I bell_id
+indicate the bell to physically ring.
+.I name
+is simply an arbitrary moniker for the client application's use.
+
+To determine the current feedback settings of an extension input device, use
+.I XGetFeedbackControl.
+See the X input extension documentation for more information on
+.I XGetFeedbackControl
+and related data structures.
+
+If a compatible keyboard extension is not present in the X server,
+.I XkbDeviceBell
+immediately returns False. Otherwise,
+.I XkbDeviceBell
+rings the bell as specified for the display and keyboard device and returns True. If you have disabled the audible bell, the server does not ring the system bell, although it does generate a
+.I XkbBellNotify
+event.
+
+You can call
+.I XkbDeviceBell
+without first initializing the keyboard extension.
+.SH STRUCTURES
+Xkb generates XkbBellNotify events for all bells except for those resulting from calls to
+.I XkbForceDeviceBell
+and
+.I XkbForceBell.
+To receive XkbBellNotify events under all possible conditions, pass XkbBellNotifyMask in
+both the
+.I bits_to_change
+and
+.I values_for_bits
+parameters to
+.I XkbSelectEvents.
+
+The XkbBellNotify event has no event details. It is either selected or it is not.
+However, you can call
+.I XkbSelectEventDetails
+using XkbBellNotify as the
+.I event_type
+and specifying XkbAllBellNotifyMask in
+.I bits_to_change
+and
+.I values_for_bits.
+This has the same effect as a call to
+.I XkbSelectEvents.
+
+The structure for the XkbBellNotify event type contains:
+.nf
+
+ typedef struct _XkbBellNotify {
+ int type; /\(** Xkb extension base event code */
+ unsigned long serial; /\(** X server serial number for event */
+ Bool send_event; /\(** True => synthetically generated */
+ Display * display; /\(** server connection where event generated */
+ Time time; /\(** server time when event generated */
+ int xkb_type; /\(** XkbBellNotify */
+ unsigned int device; /\(** Xkb device ID, will not be XkbUseCoreKbd */
+ int percent; /\(** requested volume as % of max */
+ int pitch; /\(** requested pitch in Hz */
+ int duration; /\(** requested duration in microseconds */
+ unsigned int bell_class; /\(** X input extension feedback class */
+ unsigned int bell_id; /\(** X input extension feedback ID */
+ Atom name; /\(** "name" of requested bell */
+ Window window; /\(** window associated with event */
+ Bool event_only; /\(** False -> the server did not produce a beep */
+ } XkbBellNotifyEvent;
+
+.fi
+If your application needs to generate visual bell feedback on the screen when it receives
+a bell event, use the window ID in the XkbBellNotifyEvent, if present.
+
+.SH "SEE ALSO"
+.BR XBell (__libmansuffix__),
+.BR XkbBellNotify (__libmansuffix__),
+.BR XkbChangeEnabledControls (__libmansuffix__),
+.BR XkbDeviceBell (__libmansuffix__),
+.BR XkbForceBell (__libmansuffix__),
+.BR XkbForceDeviceBell (__libmansuffix__),
+.BR XGetFeedbackControl (__libmansuffix__),
+.BR XkbSelectEvents (__libmansuffix__)
+
diff --git a/libX11/man/xkb/XkbDeviceBellEvent.man b/libX11/man/xkb/XkbDeviceBellEvent.man
index 5d7aec3d4..92a31d5c1 100644
--- a/libX11/man/xkb/XkbDeviceBellEvent.man
+++ b/libX11/man/xkb/XkbDeviceBellEvent.man
@@ -1,322 +1,322 @@
-'\" t
-.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
-.\"
-.\" Permission is hereby granted, free of charge, to any person obtaining a
-.\" copy of this software and associated documentation files (the "Software"),
-.\" to deal in the Software without restriction, including without limitation
-.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
-.\" and/or sell copies of the Software, and to permit persons to whom the
-.\" Software is furnished to do so, subject to the following conditions:
-.\"
-.\" The above copyright notice and this permission notice (including the next
-.\" paragraph) shall be included in all copies or substantial portions of the
-.\" Software.
-.\"
-.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-.\" DEALINGS IN THE SOFTWARE.
-.\"
-.TH XkbDeviceBellEvent __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
-.SH NAME
-XkbDeviceBellEvent \- Creates a bell event for an X input extension device or
-for the keyboard, without ringing the corresponding bell
-.SH SYNOPSIS
-.HP
-.B Bool XkbDeviceBellEvent
-.BI "(\^Display *" "display" "\^,"
-.BI "Window " "window" "\^,"
-.BI "unsigned int " "device_spec" "\^,"
-.BI "unsigned int " "bell_class" "\^,"
-.BI "unsigned int " "bell_id" "\^,"
-.BI "int " "percent" "\^,"
-.BI "Atom " "name" "\^);"
-.if n .ti +5n
-.if t .ti +.5i
-.SH ARGUMENTS
-.TP
-.I \- display
-connection to the X server
-.TP
-.I \- window
-event window, or None
-.TP
-.I \- device_spec
-device ID, or XkbUseCoreKbd
-.TP
-.I \- bell_class
-input extension bell class for the event
-.TP
-.I \- bell_id
-input extension bell ID for the event
-.TP
-.I \- percent
-volume for the bell, which can range from -100 to 100 inclusive
-.TP
-.I \- name
-a bell name, or NULL
-.SH DESCRIPTION
-.LP
-The core X protocol allows only applications to explicitly sound the system bell with
-a
-given duration, pitch, and volume. Xkb extends this capability by allowing clients to
-attach symbolic names to bells, disable audible bells, and receive an event whenever
-the
-keyboard bell is rung. For the purposes of this document, the
-.I audible
-bell is defined to be the system bell, or the default keyboard bell, as opposed to
-any
-other audible sound generated elsewhere in the system.
-You can ask to receive XkbBellNotify events when any client rings any one of the
-following:
-
-.IP \(bu 5
-The default bell
-.IP \(bu 5
-Any bell on an input device that can be specified by a bell_class and bell_id pair
-.IP \(bu 5
-Any bell specified only by an arbitrary name. (This is, from the server's point of
-view,
-merely a name, and not connected with any physical sound-generating device. Some
-client
-application must generate the sound, or visual feedback, if any, that is associated
-with
-the name.)
-
-You can also ask to receive XkbBellNotify events when the server rings the default
-bell
-or if any client has requested events only (without the bell sounding) for any of the
-bell types previously listed.
-
-You can disable audible bells on a global basis. For example, a client that replaces
-the
-keyboard bell with some other audible cue might want to turn off the AudibleBell
-control
-to prevent the server from also generating a sound and avoid cacophony. If you
-disable
-audible bells and request to receive XkbBellNotify events, you can generate feedback
-different from the default bell.
-
-You can, however, override the AudibleBell control by calling one of the functions
-that
-force the ringing of a bell in spite of the setting of the AudibleBell control -
-.I XkbForceDeviceBell
-or
-.I XkbForceBell.
-In this case the server does not generate a bell event.
-
-Just as some keyboards can produce keyclicks to indicate when a key is pressed or
-repeating, Xkb can provide feedback for the controls by using special beep codes. The
-AccessXFeedback control is used to configure the specific types of operations that
-generate feedback.
-
-Bell Names
-
-You can associate a name to an act of ringing a bell by converting the name to an
-Atom
-and then using this name when you call the functions listed in this chapter. If an
-event
-is generated as a result, the name is then passed to all other clients interested in
-receiving XkbBellNotify events. Note that these are arbitrary names and that there is
-no
-binding to any sounds. Any sounds or other effects (such as visual bells on the
-screen)
-must be generated by a client application upon receipt of the bell event containing
-the
-name. There is no default name for the default keyboard bell. The server does
-generate
-some predefined bells for the AccessX controls. These named bells are shown in the
-Table 1
-below; the name is included in any bell event sent to clients that have requested to
-receive XkbBellNotify events.
-
-.TS
-c s
-l l
-lW(4i) l.
-Table 1 Predefined Bells
-_
-Action Named Bell
-_
-Indicator turned on AX_IndicatorOn
-Indicator turned off AX_IndicatorOff
-More than one indicator changed state AX_IndicatorChange
-Control turned on AX_FeatureOn
-Control turned off AX_FeatureOff
-More than one control changed state AX_FeatureChange
-T{
-SlowKeys and BounceKeys about to be turned on or off
-T} AX_SlowKeysWarning
-SlowKeys key pressed AX_SlowKeyPress
-SlowKeys key accepted AX_SlowKeyAccept
-SlowKeys key rejected AX_SlowKeyReject
-Accepted SlowKeys key released AX_SlowKeyRelease
-BounceKeys key rejected AX_BounceKeyReject
-StickyKeys key latched AX_StickyLatch
-StickyKeys key locked AX_StickyLock
-StickyKeys key unlocked AX_StickyUnlock
-.TE
-
-Audible Bells
-
-Using Xkb you can generate bell events that do not necessarily ring the system bell.
-This
-is useful if you need to use an audio server instead of the system beep. For example,
-when an audio client starts, it could disable the audible bell (the system bell) and
-then
-listen for XkbBellNotify events. When it receives a XkbBellNotify event, the audio
-client
-could then send a request to an audio server to play a sound.
-
-You can control the audible bells feature by passing the XkbAudibleBellMask to
-.I XkbChangeEnabledControls.
-If you set XkbAudibleBellMask on, the server rings the system bell when a bell event
-occurs. This is the default. If you set XkbAudibleBellMask off and a bell event
-occurs,
-the server does not ring the system bell unless you call
-.I XkbForceDeviceBell
-or
-.I XkbForceBell.
-
-Audible bells are also part of the per-client auto-reset controls.
-
-Bell Functions
-
-Use the functions described in this section to ring bells and to generate bell
-events.
-
-The input extension has two types of feedbacks that can generate bells - bell
-feedback
-and keyboard feedback. Some of the functions in this section have
-.I bell_class
-and
-.I bell_id
-parameters; set them as follows: Set
-.I bell_class
-to BellFeedbackClass or KbdFeedbackClass. A device can have more than one feedback of
-each type; set
-.I bell_id
-to the particular bell feedback of
-.I bell_class
-type.
-
-Table 2 shows the conditions that cause a bell to sound or an
-XkbBellNotifyEvent
-to be generated when a bell function is called.
-
-.TS
-c s s s
-l l l l
-l l l l.
-Table 2 Bell Sounding and Bell Event Generating
-_
-Function called AudibleBell Server sounds a bell Server sends an
-XkbBellNotifyEvent
-_
-XkbDeviceBell On Yes Yes
-XkbDeviceBell Off No Yes
-XkbBell On Yes Yes
-XkbBell Off No Yes
-XkbDeviceBellEvent On or Off No Yes
-XkbBellEvent On or Off No Yes
-XkbDeviceForceBell On or Off Yes No
-XkbForceBell On or Off Yes No
-.TE
-
-If a compatible keyboard extension isn't present in the X server,
-.I XkbDeviceBellEvent
-immediately returns False. Otherwise,
-.I XkbDeviceBellEvent
-causes an XkbBellNotify event to be sent to all interested clients and returns
-True. Set
-.I percent
-to be the volume relative to the base volume for the keyboard as described for
-.I XBell.
-
-In addition,
-.I XkbDeviceBellEvent
-may generate Atom protocol errors as well as XkbBellNotify events. You can call
-.I XkbBell
-without first initializing the keyboard extension.
-.SH "RETURN VALUES"
-.TP 15
-True
-The
-.I XkbDeviceBellEvent
-sends an XkbBellNotify event to to all interested clients and returns
-True.
-.TP 15
-False
-If a compatible keyboard extension isn't present in the X server,
-.I XkbDeviceBellEvent
-immediately returns False
-.SH STRUCTURES
-.TP
-Xkb generates XkbBellNotify events for all bells except for those resulting from
-calls to
-.I XkbForceDeviceBell
-and
-.I XkbForceBell.
-To receive XkbBellNotify events under all possible conditions, pass XkbBellNotifyMask
-in
-both the
-.I bits_to_change
-and
-.I values_for_bits
-parameters to
-.I XkbSelectEvents.
-
-The XkbBellNotify event has no event details. It is either selected or it is not.
-However, you can call
-.I XkbSelectEventDetails
-using XkbBellNotify as the
-.I event_type
-and specifying XkbAllBellNotifyMask in
-.I bits_to_change
-and
-.I values_for_bits.
-This has the same effect as a call to
-.I XkbSelectEvents.
-
-The structure for the XkbBellNotify event type contains:
-.nf
-
- typedef struct _XkbBellNotify {
- int type; /\(** Xkb extension base event code */
- unsigned long serial; /\(** X server serial number for event */
- Bool send_event; /\(** True => synthetically generated */
- Display * display; /\(** server connection where event generated */
- Time time; /\(** server time when event generated */
- int xkb_type; /\(** XkbBellNotify */
- unsigned int device; /\(** Xkb device ID, will not be XkbUseCoreKbd */
- int percent; /\(** requested volume as % of max */
- int pitch; /\(** requested pitch in Hz */
- int duration; /\(** requested duration in microseconds */
- unsigned int bell_class; /\(** X input extension feedback class */
- unsigned int bell_id; /\(** X input extension feedback ID */
- Atom name; /\(** "name" of requested bell */
- Window window; /\(** window associated with event */
- Bool event_only; /\(** False -> the server did not produce a beep */
- } XkbBellNotifyEvent;
-
-.fi
-If your application needs to generate visual bell feedback on the screen when it
-receives
-a bell event, use the window ID in the XkbBellNotifyEvent, if present.
-
-.SH "SEE ALSO"
-.BR XBell (__libmansuffix__),
-.BR XkbBellNotify (__libmansuffix__),
-.BR XkbChangeEnabledControls (__libmansuffix__),
-.BR XkbDeviceBell (__libmansuffix__),
-.BR XkbForceBell (__libmansuffix__),
-.BR XkbForceDeviceBell (__libmansuffix__),
-.BR XkbSelectEvents (__libmansuffix__),
-.BR XkbSelectEventDetails (__libmansuffix__),
-.BR XkbUseCoreKbd (__libmansuffix__)
-
-
-
+'\" t
+.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the "Software"),
+.\" to deal in the Software without restriction, including without limitation
+.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
+.\" and/or sell copies of the Software, and to permit persons to whom the
+.\" Software is furnished to do so, subject to the following conditions:
+.\"
+.\" The above copyright notice and this permission notice (including the next
+.\" paragraph) shall be included in all copies or substantial portions of the
+.\" Software.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+.\" DEALINGS IN THE SOFTWARE.
+.\"
+.TH XkbDeviceBellEvent __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbDeviceBellEvent \- Creates a bell event for an X input extension device or
+for the keyboard, without ringing the corresponding bell
+.SH SYNOPSIS
+.HP
+.B Bool XkbDeviceBellEvent
+.BI "(\^Display *" "display" "\^,"
+.BI "Window " "window" "\^,"
+.BI "unsigned int " "device_spec" "\^,"
+.BI "unsigned int " "bell_class" "\^,"
+.BI "unsigned int " "bell_id" "\^,"
+.BI "int " "percent" "\^,"
+.BI "Atom " "name" "\^);"
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- display
+connection to the X server
+.TP
+.I \- window
+event window, or None
+.TP
+.I \- device_spec
+device ID, or XkbUseCoreKbd
+.TP
+.I \- bell_class
+input extension bell class for the event
+.TP
+.I \- bell_id
+input extension bell ID for the event
+.TP
+.I \- percent
+volume for the bell, which can range from -100 to 100 inclusive
+.TP
+.I \- name
+a bell name, or NULL
+.SH DESCRIPTION
+.LP
+The core X protocol allows only applications to explicitly sound the system bell with
+a
+given duration, pitch, and volume. Xkb extends this capability by allowing clients to
+attach symbolic names to bells, disable audible bells, and receive an event whenever
+the
+keyboard bell is rung. For the purposes of this document, the
+.I audible
+bell is defined to be the system bell, or the default keyboard bell, as opposed to
+any
+other audible sound generated elsewhere in the system.
+You can ask to receive XkbBellNotify events when any client rings any one of the
+following:
+
+.IP \(bu 5
+The default bell
+.IP \(bu 5
+Any bell on an input device that can be specified by a bell_class and bell_id pair
+.IP \(bu 5
+Any bell specified only by an arbitrary name. (This is, from the server's point of
+view,
+merely a name, and not connected with any physical sound-generating device. Some
+client
+application must generate the sound, or visual feedback, if any, that is associated
+with
+the name.)
+
+You can also ask to receive XkbBellNotify events when the server rings the default
+bell
+or if any client has requested events only (without the bell sounding) for any of the
+bell types previously listed.
+
+You can disable audible bells on a global basis. For example, a client that replaces
+the
+keyboard bell with some other audible cue might want to turn off the AudibleBell
+control
+to prevent the server from also generating a sound and avoid cacophony. If you
+disable
+audible bells and request to receive XkbBellNotify events, you can generate feedback
+different from the default bell.
+
+You can, however, override the AudibleBell control by calling one of the functions
+that
+force the ringing of a bell in spite of the setting of the AudibleBell control -
+.I XkbForceDeviceBell
+or
+.I XkbForceBell.
+In this case the server does not generate a bell event.
+
+Just as some keyboards can produce keyclicks to indicate when a key is pressed or
+repeating, Xkb can provide feedback for the controls by using special beep codes. The
+AccessXFeedback control is used to configure the specific types of operations that
+generate feedback.
+
+Bell Names
+
+You can associate a name to an act of ringing a bell by converting the name to an
+Atom
+and then using this name when you call the functions listed in this chapter. If an
+event
+is generated as a result, the name is then passed to all other clients interested in
+receiving XkbBellNotify events. Note that these are arbitrary names and that there is
+no
+binding to any sounds. Any sounds or other effects (such as visual bells on the
+screen)
+must be generated by a client application upon receipt of the bell event containing
+the
+name. There is no default name for the default keyboard bell. The server does
+generate
+some predefined bells for the AccessX controls. These named bells are shown in the
+Table 1
+below; the name is included in any bell event sent to clients that have requested to
+receive XkbBellNotify events.
+
+.TS
+c s
+l l
+lW(4i) l.
+Table 1 Predefined Bells
+_
+Action Named Bell
+_
+Indicator turned on AX_IndicatorOn
+Indicator turned off AX_IndicatorOff
+More than one indicator changed state AX_IndicatorChange
+Control turned on AX_FeatureOn
+Control turned off AX_FeatureOff
+More than one control changed state AX_FeatureChange
+T{
+SlowKeys and BounceKeys about to be turned on or off
+T} AX_SlowKeysWarning
+SlowKeys key pressed AX_SlowKeyPress
+SlowKeys key accepted AX_SlowKeyAccept
+SlowKeys key rejected AX_SlowKeyReject
+Accepted SlowKeys key released AX_SlowKeyRelease
+BounceKeys key rejected AX_BounceKeyReject
+StickyKeys key latched AX_StickyLatch
+StickyKeys key locked AX_StickyLock
+StickyKeys key unlocked AX_StickyUnlock
+.TE
+
+Audible Bells
+
+Using Xkb you can generate bell events that do not necessarily ring the system bell.
+This
+is useful if you need to use an audio server instead of the system beep. For example,
+when an audio client starts, it could disable the audible bell (the system bell) and
+then
+listen for XkbBellNotify events. When it receives a XkbBellNotify event, the audio
+client
+could then send a request to an audio server to play a sound.
+
+You can control the audible bells feature by passing the XkbAudibleBellMask to
+.I XkbChangeEnabledControls.
+If you set XkbAudibleBellMask on, the server rings the system bell when a bell event
+occurs. This is the default. If you set XkbAudibleBellMask off and a bell event
+occurs,
+the server does not ring the system bell unless you call
+.I XkbForceDeviceBell
+or
+.I XkbForceBell.
+
+Audible bells are also part of the per-client auto-reset controls.
+
+Bell Functions
+
+Use the functions described in this section to ring bells and to generate bell
+events.
+
+The input extension has two types of feedbacks that can generate bells - bell
+feedback
+and keyboard feedback. Some of the functions in this section have
+.I bell_class
+and
+.I bell_id
+parameters; set them as follows: Set
+.I bell_class
+to BellFeedbackClass or KbdFeedbackClass. A device can have more than one feedback of
+each type; set
+.I bell_id
+to the particular bell feedback of
+.I bell_class
+type.
+
+Table 2 shows the conditions that cause a bell to sound or an
+XkbBellNotifyEvent
+to be generated when a bell function is called.
+
+.TS
+c s s s
+l l l l
+l l l l.
+Table 2 Bell Sounding and Bell Event Generating
+_
+Function called AudibleBell Server sounds a bell Server sends an
+XkbBellNotifyEvent
+_
+XkbDeviceBell On Yes Yes
+XkbDeviceBell Off No Yes
+XkbBell On Yes Yes
+XkbBell Off No Yes
+XkbDeviceBellEvent On or Off No Yes
+XkbBellEvent On or Off No Yes
+XkbDeviceForceBell On or Off Yes No
+XkbForceBell On or Off Yes No
+.TE
+
+If a compatible keyboard extension isn't present in the X server,
+.I XkbDeviceBellEvent
+immediately returns False. Otherwise,
+.I XkbDeviceBellEvent
+causes an XkbBellNotify event to be sent to all interested clients and returns
+True. Set
+.I percent
+to be the volume relative to the base volume for the keyboard as described for
+.I XBell.
+
+In addition,
+.I XkbDeviceBellEvent
+may generate Atom protocol errors as well as XkbBellNotify events. You can call
+.I XkbBell
+without first initializing the keyboard extension.
+.SH "RETURN VALUES"
+.TP 15
+True
+The
+.I XkbDeviceBellEvent
+sends an XkbBellNotify event to to all interested clients and returns
+True.
+.TP 15
+False
+If a compatible keyboard extension isn't present in the X server,
+.I XkbDeviceBellEvent
+immediately returns False
+.SH STRUCTURES
+.TP
+Xkb generates XkbBellNotify events for all bells except for those resulting from
+calls to
+.I XkbForceDeviceBell
+and
+.I XkbForceBell.
+To receive XkbBellNotify events under all possible conditions, pass XkbBellNotifyMask
+in
+both the
+.I bits_to_change
+and
+.I values_for_bits
+parameters to
+.I XkbSelectEvents.
+
+The XkbBellNotify event has no event details. It is either selected or it is not.
+However, you can call
+.I XkbSelectEventDetails
+using XkbBellNotify as the
+.I event_type
+and specifying XkbAllBellNotifyMask in
+.I bits_to_change
+and
+.I values_for_bits.
+This has the same effect as a call to
+.I XkbSelectEvents.
+
+The structure for the XkbBellNotify event type contains:
+.nf
+
+ typedef struct _XkbBellNotify {
+ int type; /\(** Xkb extension base event code */
+ unsigned long serial; /\(** X server serial number for event */
+ Bool send_event; /\(** True => synthetically generated */
+ Display * display; /\(** server connection where event generated */
+ Time time; /\(** server time when event generated */
+ int xkb_type; /\(** XkbBellNotify */
+ unsigned int device; /\(** Xkb device ID, will not be XkbUseCoreKbd */
+ int percent; /\(** requested volume as % of max */
+ int pitch; /\(** requested pitch in Hz */
+ int duration; /\(** requested duration in microseconds */
+ unsigned int bell_class; /\(** X input extension feedback class */
+ unsigned int bell_id; /\(** X input extension feedback ID */
+ Atom name; /\(** "name" of requested bell */
+ Window window; /\(** window associated with event */
+ Bool event_only; /\(** False -> the server did not produce a beep */
+ } XkbBellNotifyEvent;
+
+.fi
+If your application needs to generate visual bell feedback on the screen when it
+receives
+a bell event, use the window ID in the XkbBellNotifyEvent, if present.
+
+.SH "SEE ALSO"
+.BR XBell (__libmansuffix__),
+.BR XkbBellNotify (__libmansuffix__),
+.BR XkbChangeEnabledControls (__libmansuffix__),
+.BR XkbDeviceBell (__libmansuffix__),
+.BR XkbForceBell (__libmansuffix__),
+.BR XkbForceDeviceBell (__libmansuffix__),
+.BR XkbSelectEvents (__libmansuffix__),
+.BR XkbSelectEventDetails (__libmansuffix__),
+.BR XkbUseCoreKbd (__libmansuffix__)
+
+
+
diff --git a/libX11/man/xkb/XkbFindOverlayForKey.man b/libX11/man/xkb/XkbFindOverlayForKey.man
index 57ea2599c..4036e105f 100644
--- a/libX11/man/xkb/XkbFindOverlayForKey.man
+++ b/libX11/man/xkb/XkbFindOverlayForKey.man
@@ -1,52 +1,52 @@
-.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
-.\"
-.\" Permission is hereby granted, free of charge, to any person obtaining a
-.\" copy of this software and associated documentation files (the "Software"),
-.\" to deal in the Software without restriction, including without limitation
-.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
-.\" and/or sell copies of the Software, and to permit persons to whom the
-.\" Software is furnished to do so, subject to the following conditions:
-.\"
-.\" The above copyright notice and this permission notice (including the next
-.\" paragraph) shall be included in all copies or substantial portions of the
-.\" Software.
-.\"
-.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-.\" DEALINGS IN THE SOFTWARE.
-.\"
-.TH XkbFindOverlayForKey __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
-.SH NAME
-XkbFindOverlayForKey \- Find the alternate name by using the primary name for a
-key that is part of an overlay
-.SH SYNOPSIS
-.HP
-.B char * XkbFindOverlayForKey
-.BI "(\^XkbGeometryPtr " "geom" "\^,"
-.BI "XkbSectionPtr " "section" "\^,"
-.BI "char *" "under" "\^);"
-.if n .ti +5n
-.if t .ti +.5i
-.SH ARGUMENTS
-.TP
-.I \- geom
-geometry that contains the section
-.TP
-.I \- section
-section to be searched for matching keys
-.TP
-.I \- under
-primary name of the key to be considered
-.SH DESCRIPTION
-.LP
-Keys that can generate multiple keycodes may be associated with multiple names.
-Such keys have a primary name and an alternate name.
-
-.I XkbFindOverlayForKey
-uses the primary name of the key,
-.I under,
-to look up the alternate name, which it returns.
+.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the "Software"),
+.\" to deal in the Software without restriction, including without limitation
+.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
+.\" and/or sell copies of the Software, and to permit persons to whom the
+.\" Software is furnished to do so, subject to the following conditions:
+.\"
+.\" The above copyright notice and this permission notice (including the next
+.\" paragraph) shall be included in all copies or substantial portions of the
+.\" Software.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+.\" DEALINGS IN THE SOFTWARE.
+.\"
+.TH XkbFindOverlayForKey __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbFindOverlayForKey \- Find the alternate name by using the primary name for a
+key that is part of an overlay
+.SH SYNOPSIS
+.HP
+.B char * XkbFindOverlayForKey
+.BI "(\^XkbGeometryPtr " "geom" "\^,"
+.BI "XkbSectionPtr " "section" "\^,"
+.BI "char *" "under" "\^);"
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- geom
+geometry that contains the section
+.TP
+.I \- section
+section to be searched for matching keys
+.TP
+.I \- under
+primary name of the key to be considered
+.SH DESCRIPTION
+.LP
+Keys that can generate multiple keycodes may be associated with multiple names.
+Such keys have a primary name and an alternate name.
+
+.I XkbFindOverlayForKey
+uses the primary name of the key,
+.I under,
+to look up the alternate name, which it returns.
diff --git a/libX11/man/xkb/XkbForceBell.man b/libX11/man/xkb/XkbForceBell.man
index b7588d821..bb3f7fc9d 100644
--- a/libX11/man/xkb/XkbForceBell.man
+++ b/libX11/man/xkb/XkbForceBell.man
@@ -1,314 +1,314 @@
-'\" t
-.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
-.\"
-.\" Permission is hereby granted, free of charge, to any person obtaining a
-.\" copy of this software and associated documentation files (the "Software"),
-.\" to deal in the Software without restriction, including without limitation
-.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
-.\" and/or sell copies of the Software, and to permit persons to whom the
-.\" Software is furnished to do so, subject to the following conditions:
-.\"
-.\" The above copyright notice and this permission notice (including the next
-.\" paragraph) shall be included in all copies or substantial portions of the
-.\" Software.
-.\"
-.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-.\" DEALINGS IN THE SOFTWARE.
-.\"
-.TH XkbForceBell __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
-.SH NAME
-XkbForceBell \- Overrides user preference settings for audible bells to ring the
-bell on the default keyboard
-.SH SYNOPSIS
-.HP
-.B Bool XkbForceBell
-.BI "(\^Display *" "display" "\^,"
-.BI "int " "percent" "\^);"
-.if n .ti +5n
-.if t .ti +.5i
-.SH ARGUMENTS
-.TP
-.I \- display
-connection to the X server
-.TP
-.I \- percent
-volume for the bell, which can range from -100 to 100 inclusive
-.SH DESCRIPTION
-.LP
-The core X protocol allows only applications to explicitly sound the system bell
-with a
-given duration, pitch, and volume. Xkb extends this capability by allowing clients
-to
-attach symbolic names to bells, disable audible bells, and receive an event whenever
-the
-keyboard bell is rung. For the purposes of this document, the
-.I audible
-bell is defined to be the system bell, or the default keyboard bell, as opposed to
-any
-other audible sound generated elsewhere in the system.
-You can ask to receive XkbBellNotify events when any client rings any one of the
-following:
-
-.IP \(bu 5
-The default bell
-.IP \(bu 5
-Any bell on an input device that can be specified by a bell_class and bell_id pair
-.IP \(bu 5
-Any bell specified only by an arbitrary name. (This is, from the server's point of
-view,
-merely a name, and not connected with any physical sound-generating device. Some
-client
-application must generate the sound, or visual feedback, if any, that is associated
-with
-the name.)
-
-.LP
-You can also ask to receive XkbBellNotify events when the server rings the default
-bell
-or if any client has requested events only (without the bell sounding) for any of
-the
-bell types previously listed.
-
-You can disable audible bells on a global basis. For example, a client that replaces
-the
-keyboard bell with some other audible cue might want to turn off the AudibleBell
-control
-to prevent the server from also generating a sound and avoid cacophony. If you
-disable
-audible bells and request to receive XkbBellNotify events, you can generate feedback
-different from the default bell.
-
-You can, however, override the AudibleBell control by calling one of the functions
-that
-force the ringing of a bell in spite of the setting of the AudibleBell control -
-.I XkbForceDeviceBell
-or
-.I XkbForceBell.
-In this case the server does not generate a bell event.
-
-Just as some keyboards can produce keyclicks to indicate when a key is pressed or
-repeating, Xkb can provide feedback for the controls by using special beep codes.
-The
-AccessXFeedback control is used to configure the specific types of operations that
-generate feedback.
-
-.B Bell Names
-
-You can associate a name to an act of ringing a bell by converting the name to an
-Atom
-and then using this name when you call the functions listed in this chapter. If an
-event
-is generated as a result, the name is then passed to all other clients interested in
-receiving XkbBellNotify events. Note that these are arbitrary names and that there
-is no
-binding to any sounds. Any sounds or other effects (such as visual bells on the
-screen)
-must be generated by a client application upon receipt of the bell event containing
-the
-name. There is no default name for the default keyboard bell. The server does
-generate
-some predefined bells for the AccessX controls. These named bells are shown in the
-Table 1; the name is included in any bell event sent to clients that have requested to
-receive XkbBellNotify events.
-
-.TS
-c s
-l l
-lW(4i) l.
-Table 1 Predefined Bells
-_
-Action Named Bell
-_
-Indicator turned on AX_IndicatorOn
-Indicator turned off AX_IndicatorOff
-More than one indicator changed state AX_IndicatorChange
-Control turned on AX_FeatureOn
-Control turned off AX_FeatureOff
-More than one control changed state AX_FeatureChange
-T{
-SlowKeys and BounceKeys about to be turned on or off
-T} AX_SlowKeysWarning
-SlowKeys key pressed AX_SlowKeyPress
-SlowKeys key accepted AX_SlowKeyAccept
-SlowKeys key rejected AX_SlowKeyReject
-Accepted SlowKeys key released AX_SlowKeyRelease
-BounceKeys key rejected AX_BounceKeyReject
-StickyKeys key latched AX_StickyLatch
-StickyKeys key locked AX_StickyLock
-StickyKeys key unlocked AX_StickyUnlock
-.TE
-
-.B Audible Bells
-
-Using Xkb you can generate bell events that do not necessarily ring the system bell.
-This
-is useful if you need to use an audio server instead of the system beep. For
-example,
-when an audio client starts, it could disable the audible bell (the system bell) and
-then
-listen for XkbBellNotify events. When it receives a XkbBellNotify event, the audio
-client
-could then send a request to an audio server to play a sound.
-
-You can control the audible bells feature by passing the XkbAudibleBellMask to
-.I XkbChangeEnabledControls.
-If you set XkbAudibleBellMask on, the server rings the system bell when a bell event
-occurs. This is the default. If you set XkbAudibleBellMask off and a bell event
-occurs,
-the server does not ring the system bell unless you call
-.I XkbForceDeviceBell
-or
-.I XkbForceBell.
-
-Audible bells are also part of the per-client auto-reset controls.
-
-Bell Functions
-
-Use the functions described in this section to ring bells and to generate bell
-events.
-
-The input extension has two types of feedbacks that can generate bells - bell
-feedback
-and keyboard feedback. Some of the functions in this section have
-.I bell_class
-and
-.I bell_id
-parameters; set them as follows: Set
-.I bell_class
-to BellFeedbackClass or KbdFeedbackClass. A device can have more than one feedback
-of
-each type; set
-.I bell_id
-to the particular bell feedback of
-.I bell_class
-type.
-
-Table 2 shows the conditions that cause a bell to sound or an XkbBellNotifyEvent to be generated when a bell function is
-called.
-
-.TS
-c s s s
-l l l l
-l l l l.
-Table 2 Bell Sounding and Bell Event Generating
-_
-Function called AudibleBell Server sounds a bell Server sends an
-XkbBellNotifyEvent
-_
-XkbDeviceBell On Yes Yes
-XkbDeviceBell Off No Yes
-XkbBell On Yes Yes
-XkbBell Off No Yes
-XkbDeviceBellEvent On or Off No Yes
-XkbBellEvent On or Off No Yes
-XkbDeviceForceBell On or Off Yes No
-XkbForceBell On or Off Yes No
-.TE
-
-
-If a compatible keyboard extension isn't present in the X server,
-.I XkbForceBell
-calls
-.I XBell
-with the specified
-.I display
-and
-.I percent
-and returns False. Otherwise,
-.I XkbForceBell
-calls
-.I XkbForceDeviceBell
-with the specified
-.I display
-and
-.I percent, device_spec
-=XkbUseCoreKbd,
-.I bell_class
-= XkbDfltXIClass,
-.I bell_id
-= XkbDfltXIId,
-.I window
-= None, and
-.I name
-= NULL, and returns what
-.I XkbForceDeviceBell
-returns.
-
-.I XkbForceBell
-does not cause an XkbBellNotify event.
-
-You can call
-.I XkbBell
-without first initializing the keyboard extension.
-.SH "RETURNS VALUES"
-.TP 15
-False
-The
-.I XkbForceBell
-function returns False when a compatible keyboard extension isn't present in the X server.
-.SH STRUCTURES
-.LP
-Xkb generates XkbBellNotify events for all bells except for those resulting from
-calls to
-.I XkbForceDeviceBell
-and
-.I XkbForceBell.
-To receive XkbBellNotify events under all possible conditions, pass
-XkbBellNotifyMask in
-both the
-.I bits_to_change
-and
-.I values_for_bits
-parameters to
-.I XkbSelectEvents.
-
-The XkbBellNotify event has no event details. It is either selected or it is not.
-However, you can call
-.I XkbSelectEventDetails
-using XkbBellNotify as the
-.I event_type
-and specifying XkbAllBellNotifyMask in
-.I bits_to_change
-and
-.I values_for_bits.
-This has the same effect as a call to
-.I XkbSelectEvents.
-
-The structure for the XkbBellNotify event type contains:
-.nf
-
- typedef struct _XkbBellNotify {
- int type; /\(** Xkb extension base event code */
- unsigned long serial; /\(** X server serial number for event */
- Bool send_event; /\(** True => synthetically generated */
- Display * display; /\(** server connection where event generated */
- Time time; /\(** server time when event generated */
- int xkb_type; /\(** XkbBellNotify */
- unsigned int device; /\(** Xkb device ID, will not be XkbUseCoreKbd */
- int percent; /\(** requested volume as % of max */
- int pitch; /\(** requested pitch in Hz */
- int duration; /\(** requested duration in microseconds */
- unsigned int bell_class; /\(** X input extension feedback class */
- unsigned int bell_id; /\(** X input extension feedback ID */
- Atom name; /\(** "name" of requested bell */
- Window window; /\(** window associated with event */
- Bool event_only; /\(** False -> the server did not produce a beep */
- } XkbBellNotifyEvent;
-
-.fi
-If your application needs to generate visual bell feedback on the screen when it
-receives
-a bell event, use the window ID in the XkbBellNotifyEvent, if present.
-
-.SH "SEE ALSO"
-.BR XBell (__libmansuffix__),
-.BR XkbBell (__libmansuffix__),
-.BR XkbChangeEnabledControls (__libmansuffix__),
-.BR XkbForceDeviceBell (__libmansuffix__),
-.BR XkbSelectEventDetails (__libmansuffix__),
-.BR XkbSelectEvents (__libmansuffix__)
+'\" t
+.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the "Software"),
+.\" to deal in the Software without restriction, including without limitation
+.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
+.\" and/or sell copies of the Software, and to permit persons to whom the
+.\" Software is furnished to do so, subject to the following conditions:
+.\"
+.\" The above copyright notice and this permission notice (including the next
+.\" paragraph) shall be included in all copies or substantial portions of the
+.\" Software.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+.\" DEALINGS IN THE SOFTWARE.
+.\"
+.TH XkbForceBell __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbForceBell \- Overrides user preference settings for audible bells to ring the
+bell on the default keyboard
+.SH SYNOPSIS
+.HP
+.B Bool XkbForceBell
+.BI "(\^Display *" "display" "\^,"
+.BI "int " "percent" "\^);"
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- display
+connection to the X server
+.TP
+.I \- percent
+volume for the bell, which can range from -100 to 100 inclusive
+.SH DESCRIPTION
+.LP
+The core X protocol allows only applications to explicitly sound the system bell
+with a
+given duration, pitch, and volume. Xkb extends this capability by allowing clients
+to
+attach symbolic names to bells, disable audible bells, and receive an event whenever
+the
+keyboard bell is rung. For the purposes of this document, the
+.I audible
+bell is defined to be the system bell, or the default keyboard bell, as opposed to
+any
+other audible sound generated elsewhere in the system.
+You can ask to receive XkbBellNotify events when any client rings any one of the
+following:
+
+.IP \(bu 5
+The default bell
+.IP \(bu 5
+Any bell on an input device that can be specified by a bell_class and bell_id pair
+.IP \(bu 5
+Any bell specified only by an arbitrary name. (This is, from the server's point of
+view,
+merely a name, and not connected with any physical sound-generating device. Some
+client
+application must generate the sound, or visual feedback, if any, that is associated
+with
+the name.)
+
+.LP
+You can also ask to receive XkbBellNotify events when the server rings the default
+bell
+or if any client has requested events only (without the bell sounding) for any of
+the
+bell types previously listed.
+
+You can disable audible bells on a global basis. For example, a client that replaces
+the
+keyboard bell with some other audible cue might want to turn off the AudibleBell
+control
+to prevent the server from also generating a sound and avoid cacophony. If you
+disable
+audible bells and request to receive XkbBellNotify events, you can generate feedback
+different from the default bell.
+
+You can, however, override the AudibleBell control by calling one of the functions
+that
+force the ringing of a bell in spite of the setting of the AudibleBell control -
+.I XkbForceDeviceBell
+or
+.I XkbForceBell.
+In this case the server does not generate a bell event.
+
+Just as some keyboards can produce keyclicks to indicate when a key is pressed or
+repeating, Xkb can provide feedback for the controls by using special beep codes.
+The
+AccessXFeedback control is used to configure the specific types of operations that
+generate feedback.
+
+.B Bell Names
+
+You can associate a name to an act of ringing a bell by converting the name to an
+Atom
+and then using this name when you call the functions listed in this chapter. If an
+event
+is generated as a result, the name is then passed to all other clients interested in
+receiving XkbBellNotify events. Note that these are arbitrary names and that there
+is no
+binding to any sounds. Any sounds or other effects (such as visual bells on the
+screen)
+must be generated by a client application upon receipt of the bell event containing
+the
+name. There is no default name for the default keyboard bell. The server does
+generate
+some predefined bells for the AccessX controls. These named bells are shown in the
+Table 1; the name is included in any bell event sent to clients that have requested to
+receive XkbBellNotify events.
+
+.TS
+c s
+l l
+lW(4i) l.
+Table 1 Predefined Bells
+_
+Action Named Bell
+_
+Indicator turned on AX_IndicatorOn
+Indicator turned off AX_IndicatorOff
+More than one indicator changed state AX_IndicatorChange
+Control turned on AX_FeatureOn
+Control turned off AX_FeatureOff
+More than one control changed state AX_FeatureChange
+T{
+SlowKeys and BounceKeys about to be turned on or off
+T} AX_SlowKeysWarning
+SlowKeys key pressed AX_SlowKeyPress
+SlowKeys key accepted AX_SlowKeyAccept
+SlowKeys key rejected AX_SlowKeyReject
+Accepted SlowKeys key released AX_SlowKeyRelease
+BounceKeys key rejected AX_BounceKeyReject
+StickyKeys key latched AX_StickyLatch
+StickyKeys key locked AX_StickyLock
+StickyKeys key unlocked AX_StickyUnlock
+.TE
+
+.B Audible Bells
+
+Using Xkb you can generate bell events that do not necessarily ring the system bell.
+This
+is useful if you need to use an audio server instead of the system beep. For
+example,
+when an audio client starts, it could disable the audible bell (the system bell) and
+then
+listen for XkbBellNotify events. When it receives a XkbBellNotify event, the audio
+client
+could then send a request to an audio server to play a sound.
+
+You can control the audible bells feature by passing the XkbAudibleBellMask to
+.I XkbChangeEnabledControls.
+If you set XkbAudibleBellMask on, the server rings the system bell when a bell event
+occurs. This is the default. If you set XkbAudibleBellMask off and a bell event
+occurs,
+the server does not ring the system bell unless you call
+.I XkbForceDeviceBell
+or
+.I XkbForceBell.
+
+Audible bells are also part of the per-client auto-reset controls.
+
+Bell Functions
+
+Use the functions described in this section to ring bells and to generate bell
+events.
+
+The input extension has two types of feedbacks that can generate bells - bell
+feedback
+and keyboard feedback. Some of the functions in this section have
+.I bell_class
+and
+.I bell_id
+parameters; set them as follows: Set
+.I bell_class
+to BellFeedbackClass or KbdFeedbackClass. A device can have more than one feedback
+of
+each type; set
+.I bell_id
+to the particular bell feedback of
+.I bell_class
+type.
+
+Table 2 shows the conditions that cause a bell to sound or an XkbBellNotifyEvent to be generated when a bell function is
+called.
+
+.TS
+c s s s
+l l l l
+l l l l.
+Table 2 Bell Sounding and Bell Event Generating
+_
+Function called AudibleBell Server sounds a bell Server sends an
+XkbBellNotifyEvent
+_
+XkbDeviceBell On Yes Yes
+XkbDeviceBell Off No Yes
+XkbBell On Yes Yes
+XkbBell Off No Yes
+XkbDeviceBellEvent On or Off No Yes
+XkbBellEvent On or Off No Yes
+XkbDeviceForceBell On or Off Yes No
+XkbForceBell On or Off Yes No
+.TE
+
+
+If a compatible keyboard extension isn't present in the X server,
+.I XkbForceBell
+calls
+.I XBell
+with the specified
+.I display
+and
+.I percent
+and returns False. Otherwise,
+.I XkbForceBell
+calls
+.I XkbForceDeviceBell
+with the specified
+.I display
+and
+.I percent, device_spec
+=XkbUseCoreKbd,
+.I bell_class
+= XkbDfltXIClass,
+.I bell_id
+= XkbDfltXIId,
+.I window
+= None, and
+.I name
+= NULL, and returns what
+.I XkbForceDeviceBell
+returns.
+
+.I XkbForceBell
+does not cause an XkbBellNotify event.
+
+You can call
+.I XkbBell
+without first initializing the keyboard extension.
+.SH "RETURNS VALUES"
+.TP 15
+False
+The
+.I XkbForceBell
+function returns False when a compatible keyboard extension isn't present in the X server.
+.SH STRUCTURES
+.LP
+Xkb generates XkbBellNotify events for all bells except for those resulting from
+calls to
+.I XkbForceDeviceBell
+and
+.I XkbForceBell.
+To receive XkbBellNotify events under all possible conditions, pass
+XkbBellNotifyMask in
+both the
+.I bits_to_change
+and
+.I values_for_bits
+parameters to
+.I XkbSelectEvents.
+
+The XkbBellNotify event has no event details. It is either selected or it is not.
+However, you can call
+.I XkbSelectEventDetails
+using XkbBellNotify as the
+.I event_type
+and specifying XkbAllBellNotifyMask in
+.I bits_to_change
+and
+.I values_for_bits.
+This has the same effect as a call to
+.I XkbSelectEvents.
+
+The structure for the XkbBellNotify event type contains:
+.nf
+
+ typedef struct _XkbBellNotify {
+ int type; /\(** Xkb extension base event code */
+ unsigned long serial; /\(** X server serial number for event */
+ Bool send_event; /\(** True => synthetically generated */
+ Display * display; /\(** server connection where event generated */
+ Time time; /\(** server time when event generated */
+ int xkb_type; /\(** XkbBellNotify */
+ unsigned int device; /\(** Xkb device ID, will not be XkbUseCoreKbd */
+ int percent; /\(** requested volume as % of max */
+ int pitch; /\(** requested pitch in Hz */
+ int duration; /\(** requested duration in microseconds */
+ unsigned int bell_class; /\(** X input extension feedback class */
+ unsigned int bell_id; /\(** X input extension feedback ID */
+ Atom name; /\(** "name" of requested bell */
+ Window window; /\(** window associated with event */
+ Bool event_only; /\(** False -> the server did not produce a beep */
+ } XkbBellNotifyEvent;
+
+.fi
+If your application needs to generate visual bell feedback on the screen when it
+receives
+a bell event, use the window ID in the XkbBellNotifyEvent, if present.
+
+.SH "SEE ALSO"
+.BR XBell (__libmansuffix__),
+.BR XkbBell (__libmansuffix__),
+.BR XkbChangeEnabledControls (__libmansuffix__),
+.BR XkbForceDeviceBell (__libmansuffix__),
+.BR XkbSelectEventDetails (__libmansuffix__),
+.BR XkbSelectEvents (__libmansuffix__)
diff --git a/libX11/man/xkb/XkbForceDeviceBell.man b/libX11/man/xkb/XkbForceDeviceBell.man
index fd05ec862..6419decde 100644
--- a/libX11/man/xkb/XkbForceDeviceBell.man
+++ b/libX11/man/xkb/XkbForceDeviceBell.man
@@ -1,299 +1,299 @@
-'\" t
-.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
-.\"
-.\" Permission is hereby granted, free of charge, to any person obtaining a
-.\" copy of this software and associated documentation files (the "Software"),
-.\" to deal in the Software without restriction, including without limitation
-.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
-.\" and/or sell copies of the Software, and to permit persons to whom the
-.\" Software is furnished to do so, subject to the following conditions:
-.\"
-.\" The above copyright notice and this permission notice (including the next
-.\" paragraph) shall be included in all copies or substantial portions of the
-.\" Software.
-.\"
-.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-.\" DEALINGS IN THE SOFTWARE.
-.\"
-.TH XkbForceDeviceBell __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
-.SH NAME
-XkbForceDeviceBell \- Rings the bell on any keyboard, overriding user preference
-settings for audible bells
-.SH SYNOPSIS
-.HP
-.B Bool XkbForceDeviceBell
-.BI "(\^Display *" "display" "\^,"
-.BI "Window " "window" "\^,"
-.BI "unsigned int " "device_spec" "\^,"
-.BI "unsigned int " "bell_class" "\^,"
-.BI "unsigned int " "bell_id" "\^,"
-.BI "int " "percent" "\^);"
-.if n .ti +5n
-.if t .ti +.5i
-.SH ARGUMENTS
-.TP
-.I \- display
-connection to the X server
-.TP
-.I \- window
-event window, or None
-.TP
-.I \- device_spec
-device ID, or XkbUseCoreKbd
-.TP
-.I \- bell_class
-input extension class of the bell to be rung
-.TP
-.I \- bell_id
-input extension ID of the bell to be rung
-.TP
-.I \- percent
-relative volume, which can range from -100 to 100 inclusive
-.SH DESCRIPTION
-.LP
-The core X protocol allows only applications to explicitly sound the system bell
-with a
-given duration, pitch, and volume. Xkb extends this capability by allowing clients
-to
-attach symbolic names to bells, disable audible bells, and receive an event
-whenever the
-keyboard bell is rung. For the purposes of this document, the
-.I audible
-bell is defined to be the system bell, or the default keyboard bell, as opposed to
-any
-other audible sound generated elsewhere in the system.
-You can ask to receive XkbBellNotify events when any client rings any one of the
-following:
-
-.IP \(bu 5
-The default bell
-.IP \(bu 5
-Any bell on an input device that can be specified by a bell_class and bell_id pair
-.IP \(bu 5
-Any bell specified only by an arbitrary name. (This is, from the server's point of
-view,
-merely a name, and not connected with any physical sound-generating device. Some
-client
-application must generate the sound, or visual feedback, if any, that is associated
-with
-the name.)
-
-.LP
-You can also ask to receive XkbBellNotify events when the server rings the default
-bell
-or if any client has requested events only (without the bell sounding) for any of
-the
-bell types previously listed.
-
-You can disable audible bells on a global basis. For example, a client that
-replaces the
-keyboard bell with some other audible cue might want to turn off the AudibleBell
-control
-to prevent the server from also generating a sound and avoid cacophony. If you
-disable
-audible bells and request to receive XkbBellNotify events, you can generate
-feedback
-different from the default bell.
-
-You can, however, override the AudibleBell control by calling one of the functions
-that
-force the ringing of a bell in spite of the setting of the AudibleBell control -
-.I XkbForceDeviceBell
-or
-.I XkbForceBell.
-In this case the server does not generate a bell event.
-
-Just as some keyboards can produce keyclicks to indicate when a key is pressed or repeating, Xkb
-can provide feedback for the controls by using special beep codes. The AccessXFeedback control
-is used to configure the specific types of operations that generate feedback.
-
-Bell Names
-
-You can associate a name to an act of ringing a bell by converting the name to an Atom
-and then using this name when you call the functions listed in this chapter. If an event
-is generated as a result, the name is then passed to all other clients interested in receiving
-XkbBellNotify events. Note that these are arbitrary names and that there is no binding to any
-sounds. Any sounds or other effects (such as visual bells on the screen) must be generated by a
-client application upon receipt of the bell event containing the name. There is no default name
-for the default keyboard bell. The server does generate some predefined bells for the AccessX
-controls. These named bells are shown in Table 1; the name is included in any bell event sent to
-clients that have requested to receive XkbBellNotify events.
-
-.TS
-c s
-l l
-lW(4i) l.
-Table 1 Predefined Bells
-_
-Action Named Bell
-_
-Indicator turned on AX_IndicatorOn
-Indicator turned off AX_IndicatorOff
-More than one indicator changed state AX_IndicatorChange
-Control turned on AX_FeatureOn
-Control turned off AX_FeatureOff
-More than one control changed state AX_FeatureChange
-T{
-SlowKeys and BounceKeys about to be turned on or off
-T} AX_SlowKeysWarning
-SlowKeys key pressed AX_SlowKeyPress
-SlowKeys key accepted AX_SlowKeyAccept
-SlowKeys key rejected AX_SlowKeyReject
-Accepted SlowKeys key released AX_SlowKeyRelease
-BounceKeys key rejected AX_BounceKeyReject
-StickyKeys key latched AX_StickyLatch
-StickyKeys key locked AX_StickyLock
-StickyKeys key unlocked AX_StickyUnlock
-.TE
-
-Audible Bells
-
-Using Xkb you can generate bell events that do not necessarily ring the system bell. This
-is useful if you need to use an audio server instead of the system beep. For example,
-when an audio client starts, it could disable the audible bell (the system bell) and then
-listen for XkbBellNotify events. When it receives a XkbBellNotify event, the audio client could
-then send a request to an audio server to play a sound.
-
-You can control the audible bells feature by passing the XkbAudibleBellMask to
-.I XkbChangeEnabledControls.
-If you set XkbAudibleBellMask on, the server rings the system bell when a bell event occurs.
-This is the default. If you set XkbAudibleBellMask off and a bell event occurs, the server does
-not ring the system bell unless you call
-.I XkbForceDeviceBell
-or
-.I XkbForceBell.
-
-Audible bells are also part of the per-client auto-reset controls.
-
-Bell Functions
-
-Use the functions described in this section to ring bells and to generate bell events.
-
-The input extension has two types of feedbacks that can generate bells - bell feedback and
-keyboard feedback. Some of the functions in this section have
-.I bell_class
-and
-.I bell_id
-parameters; set them as follows: Set
-.I bell_class
-to BellFeedbackClass or KbdFeedbackClass. A device can have more than one feedback of each type;
-set
-.I bell_id
-to the particular bell feedback of
-.I bell_class
-type.
-
-Table 2 shows the conditions that cause a bell to sound or an XkbBellNotifyEvent to be generated
-when a bell function is called.
-
-.TS
-c s s s
-l l l l
-l l l l.
-Table 2 Bell Sounding and Bell Event Generating
-_
-Function called AudibleBell Server sounds a bell Server sends an
-XkbBellNotifyEvent
-_
-XkbDeviceBell On Yes Yes
-XkbDeviceBell Off No Yes
-XkbBell On Yes Yes
-XkbBell Off No Yes
-XkbDeviceBellEvent On or Off No Yes
-XkbBellEvent On or Off No Yes
-XkbDeviceForceBell On or Off Yes No
-XkbForceBell On or Off Yes No
-.TE
-
-
-If a compatible keyboard extension isn't present in the X server,
-.I XkbForceDeviceBell
-immediately returns False. Otherwise,
-.I XkbForceDeviceBell
-rings the bell as specified for the display and keyboard device and returns
-True. Set
-.I percent
-to be the volume relative to the base volume for the keyboard as described for
-.I XBell.
-
-There is no
-.I name
-parameter because
-.I XkbForceDeviceBell
-does not cause an XkbBellNotify event.
-
-You can call
-.I XkbBell
-without first initializing the keyboard extension.
-.SH STRUCTURES
-.LP
-Xkb generates XkbBellNotify events for all bells except for those resulting from
-calls to
-.I XkbForceDeviceBell
-and
-.I XkbForceBell.
-To receive XkbBellNotify events under all possible conditions, pass
-XkbBellNotifyMask in
-both the
-.I bits_to_change
-and
-.I values_for_bits
-parameters to
-.I XkbSelectEvents.
-
-The XkbBellNotify event has no event details. It is either selected or it is not.
-However, you can call
-.I XkbSelectEventDetails
-using XkbBellNotify as the
-.I event_type
-and specifying XkbAllBellNotifyMask in
-.I bits_to_change
-and
-.I values_for_bits.
-This has the same effect as a call to
-.I XkbSelectEvents.
-
-The structure for the XkbBellNotify event type contains:
-.nf
-
- typedef struct _XkbBellNotify {
- int type; /\(** Xkb extension base event code */
- unsigned long serial; /\(** X server serial number for event */
- Bool send_event; /\(** True => synthetically generated */
- Display * display; /\(** server connection where event generated */
- Time time; /\(** server time when event generated */
- int xkb_type; /\(** XkbBellNotify */
- unsigned int device; /\(** Xkb device ID, will not be XkbUseCoreKbd */
- int percent; /\(** requested volume as % of max */
- int pitch; /\(** requested pitch in Hz */
- int duration; /\(** requested duration in microseconds */
- unsigned int bell_class; /\(** X input extension feedback class */
- unsigned int bell_id; /\(** X input extension feedback ID */
- Atom name; /\(** "name" of requested bell */
- Window window; /\(** window associated with event */
- Bool event_only; /\(** False -> the server did not produce a beep */
- } XkbBellNotifyEvent;
-
-.fi
-If your application needs to generate visual bell feedback on the screen when it
-receives
-a bell event, use the window ID in the XkbBellNotifyEvent, if present.
-.SH "SEE ALSO"
-.BR XBell (__libmansuffix__),
-.BR XkbBell (__libmansuffix__),
-.BR XkbBellNotify (__libmansuffix__),
-.BR XkbChangeEnabledControls (__libmansuffix__),
-.BR XkbDeviceBell (__libmansuffix__),
-.BR XkbForceBell (__libmansuffix__),
-.BR XkbForceDeviceBell (__libmansuffix__),
-.BR XkbSelectEventDetails (__libmansuffix__),
-.BR XkbSelectEvents (__libmansuffix__)
-
-
-
-
+'\" t
+.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the "Software"),
+.\" to deal in the Software without restriction, including without limitation
+.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
+.\" and/or sell copies of the Software, and to permit persons to whom the
+.\" Software is furnished to do so, subject to the following conditions:
+.\"
+.\" The above copyright notice and this permission notice (including the next
+.\" paragraph) shall be included in all copies or substantial portions of the
+.\" Software.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+.\" DEALINGS IN THE SOFTWARE.
+.\"
+.TH XkbForceDeviceBell __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbForceDeviceBell \- Rings the bell on any keyboard, overriding user preference
+settings for audible bells
+.SH SYNOPSIS
+.HP
+.B Bool XkbForceDeviceBell
+.BI "(\^Display *" "display" "\^,"
+.BI "Window " "window" "\^,"
+.BI "unsigned int " "device_spec" "\^,"
+.BI "unsigned int " "bell_class" "\^,"
+.BI "unsigned int " "bell_id" "\^,"
+.BI "int " "percent" "\^);"
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- display
+connection to the X server
+.TP
+.I \- window
+event window, or None
+.TP
+.I \- device_spec
+device ID, or XkbUseCoreKbd
+.TP
+.I \- bell_class
+input extension class of the bell to be rung
+.TP
+.I \- bell_id
+input extension ID of the bell to be rung
+.TP
+.I \- percent
+relative volume, which can range from -100 to 100 inclusive
+.SH DESCRIPTION
+.LP
+The core X protocol allows only applications to explicitly sound the system bell
+with a
+given duration, pitch, and volume. Xkb extends this capability by allowing clients
+to
+attach symbolic names to bells, disable audible bells, and receive an event
+whenever the
+keyboard bell is rung. For the purposes of this document, the
+.I audible
+bell is defined to be the system bell, or the default keyboard bell, as opposed to
+any
+other audible sound generated elsewhere in the system.
+You can ask to receive XkbBellNotify events when any client rings any one of the
+following:
+
+.IP \(bu 5
+The default bell
+.IP \(bu 5
+Any bell on an input device that can be specified by a bell_class and bell_id pair
+.IP \(bu 5
+Any bell specified only by an arbitrary name. (This is, from the server's point of
+view,
+merely a name, and not connected with any physical sound-generating device. Some
+client
+application must generate the sound, or visual feedback, if any, that is associated
+with
+the name.)
+
+.LP
+You can also ask to receive XkbBellNotify events when the server rings the default
+bell
+or if any client has requested events only (without the bell sounding) for any of
+the
+bell types previously listed.
+
+You can disable audible bells on a global basis. For example, a client that
+replaces the
+keyboard bell with some other audible cue might want to turn off the AudibleBell
+control
+to prevent the server from also generating a sound and avoid cacophony. If you
+disable
+audible bells and request to receive XkbBellNotify events, you can generate
+feedback
+different from the default bell.
+
+You can, however, override the AudibleBell control by calling one of the functions
+that
+force the ringing of a bell in spite of the setting of the AudibleBell control -
+.I XkbForceDeviceBell
+or
+.I XkbForceBell.
+In this case the server does not generate a bell event.
+
+Just as some keyboards can produce keyclicks to indicate when a key is pressed or repeating, Xkb
+can provide feedback for the controls by using special beep codes. The AccessXFeedback control
+is used to configure the specific types of operations that generate feedback.
+
+Bell Names
+
+You can associate a name to an act of ringing a bell by converting the name to an Atom
+and then using this name when you call the functions listed in this chapter. If an event
+is generated as a result, the name is then passed to all other clients interested in receiving
+XkbBellNotify events. Note that these are arbitrary names and that there is no binding to any
+sounds. Any sounds or other effects (such as visual bells on the screen) must be generated by a
+client application upon receipt of the bell event containing the name. There is no default name
+for the default keyboard bell. The server does generate some predefined bells for the AccessX
+controls. These named bells are shown in Table 1; the name is included in any bell event sent to
+clients that have requested to receive XkbBellNotify events.
+
+.TS
+c s
+l l
+lW(4i) l.
+Table 1 Predefined Bells
+_
+Action Named Bell
+_
+Indicator turned on AX_IndicatorOn
+Indicator turned off AX_IndicatorOff
+More than one indicator changed state AX_IndicatorChange
+Control turned on AX_FeatureOn
+Control turned off AX_FeatureOff
+More than one control changed state AX_FeatureChange
+T{
+SlowKeys and BounceKeys about to be turned on or off
+T} AX_SlowKeysWarning
+SlowKeys key pressed AX_SlowKeyPress
+SlowKeys key accepted AX_SlowKeyAccept
+SlowKeys key rejected AX_SlowKeyReject
+Accepted SlowKeys key released AX_SlowKeyRelease
+BounceKeys key rejected AX_BounceKeyReject
+StickyKeys key latched AX_StickyLatch
+StickyKeys key locked AX_StickyLock
+StickyKeys key unlocked AX_StickyUnlock
+.TE
+
+Audible Bells
+
+Using Xkb you can generate bell events that do not necessarily ring the system bell. This
+is useful if you need to use an audio server instead of the system beep. For example,
+when an audio client starts, it could disable the audible bell (the system bell) and then
+listen for XkbBellNotify events. When it receives a XkbBellNotify event, the audio client could
+then send a request to an audio server to play a sound.
+
+You can control the audible bells feature by passing the XkbAudibleBellMask to
+.I XkbChangeEnabledControls.
+If you set XkbAudibleBellMask on, the server rings the system bell when a bell event occurs.
+This is the default. If you set XkbAudibleBellMask off and a bell event occurs, the server does
+not ring the system bell unless you call
+.I XkbForceDeviceBell
+or
+.I XkbForceBell.
+
+Audible bells are also part of the per-client auto-reset controls.
+
+Bell Functions
+
+Use the functions described in this section to ring bells and to generate bell events.
+
+The input extension has two types of feedbacks that can generate bells - bell feedback and
+keyboard feedback. Some of the functions in this section have
+.I bell_class
+and
+.I bell_id
+parameters; set them as follows: Set
+.I bell_class
+to BellFeedbackClass or KbdFeedbackClass. A device can have more than one feedback of each type;
+set
+.I bell_id
+to the particular bell feedback of
+.I bell_class
+type.
+
+Table 2 shows the conditions that cause a bell to sound or an XkbBellNotifyEvent to be generated
+when a bell function is called.
+
+.TS
+c s s s
+l l l l
+l l l l.
+Table 2 Bell Sounding and Bell Event Generating
+_
+Function called AudibleBell Server sounds a bell Server sends an
+XkbBellNotifyEvent
+_
+XkbDeviceBell On Yes Yes
+XkbDeviceBell Off No Yes
+XkbBell On Yes Yes
+XkbBell Off No Yes
+XkbDeviceBellEvent On or Off No Yes
+XkbBellEvent On or Off No Yes
+XkbDeviceForceBell On or Off Yes No
+XkbForceBell On or Off Yes No
+.TE
+
+
+If a compatible keyboard extension isn't present in the X server,
+.I XkbForceDeviceBell
+immediately returns False. Otherwise,
+.I XkbForceDeviceBell
+rings the bell as specified for the display and keyboard device and returns
+True. Set
+.I percent
+to be the volume relative to the base volume for the keyboard as described for
+.I XBell.
+
+There is no
+.I name
+parameter because
+.I XkbForceDeviceBell
+does not cause an XkbBellNotify event.
+
+You can call
+.I XkbBell
+without first initializing the keyboard extension.
+.SH STRUCTURES
+.LP
+Xkb generates XkbBellNotify events for all bells except for those resulting from
+calls to
+.I XkbForceDeviceBell
+and
+.I XkbForceBell.
+To receive XkbBellNotify events under all possible conditions, pass
+XkbBellNotifyMask in
+both the
+.I bits_to_change
+and
+.I values_for_bits
+parameters to
+.I XkbSelectEvents.
+
+The XkbBellNotify event has no event details. It is either selected or it is not.
+However, you can call
+.I XkbSelectEventDetails
+using XkbBellNotify as the
+.I event_type
+and specifying XkbAllBellNotifyMask in
+.I bits_to_change
+and
+.I values_for_bits.
+This has the same effect as a call to
+.I XkbSelectEvents.
+
+The structure for the XkbBellNotify event type contains:
+.nf
+
+ typedef struct _XkbBellNotify {
+ int type; /\(** Xkb extension base event code */
+ unsigned long serial; /\(** X server serial number for event */
+ Bool send_event; /\(** True => synthetically generated */
+ Display * display; /\(** server connection where event generated */
+ Time time; /\(** server time when event generated */
+ int xkb_type; /\(** XkbBellNotify */
+ unsigned int device; /\(** Xkb device ID, will not be XkbUseCoreKbd */
+ int percent; /\(** requested volume as % of max */
+ int pitch; /\(** requested pitch in Hz */
+ int duration; /\(** requested duration in microseconds */
+ unsigned int bell_class; /\(** X input extension feedback class */
+ unsigned int bell_id; /\(** X input extension feedback ID */
+ Atom name; /\(** "name" of requested bell */
+ Window window; /\(** window associated with event */
+ Bool event_only; /\(** False -> the server did not produce a beep */
+ } XkbBellNotifyEvent;
+
+.fi
+If your application needs to generate visual bell feedback on the screen when it
+receives
+a bell event, use the window ID in the XkbBellNotifyEvent, if present.
+.SH "SEE ALSO"
+.BR XBell (__libmansuffix__),
+.BR XkbBell (__libmansuffix__),
+.BR XkbBellNotify (__libmansuffix__),
+.BR XkbChangeEnabledControls (__libmansuffix__),
+.BR XkbDeviceBell (__libmansuffix__),
+.BR XkbForceBell (__libmansuffix__),
+.BR XkbForceDeviceBell (__libmansuffix__),
+.BR XkbSelectEventDetails (__libmansuffix__),
+.BR XkbSelectEvents (__libmansuffix__)
+
+
+
+
diff --git a/libX11/man/xkb/XkbFreeClientMap.man b/libX11/man/xkb/XkbFreeClientMap.man
index cf04ed8b1..2eb2d68c6 100644
--- a/libX11/man/xkb/XkbFreeClientMap.man
+++ b/libX11/man/xkb/XkbFreeClientMap.man
@@ -1,201 +1,201 @@
-'\" t
-.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
-.\"
-.\" Permission is hereby granted, free of charge, to any person obtaining a
-.\" copy of this software and associated documentation files (the "Software"),
-.\" to deal in the Software without restriction, including without limitation
-.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
-.\" and/or sell copies of the Software, and to permit persons to whom the
-.\" Software is furnished to do so, subject to the following conditions:
-.\"
-.\" The above copyright notice and this permission notice (including the next
-.\" paragraph) shall be included in all copies or substantial portions of the
-.\" Software.
-.\"
-.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-.\" DEALINGS IN THE SOFTWARE.
-.\"
-.TH XkbFreeClientMap __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
-.SH NAME
-XkbFreeClientMap \- Free memory used by the client map member of an XkbDescRec
-structure
-.SH SYNOPSIS
-.HP
-.B void XkbFreeClientMap
-.BI "(\^XkbDescPtr " "xkb" "\^,"
-.BI "unsigned int " "which" "\^,"
-.BI "Bool " "free_all" "\^);"
-.if n .ti +5n
-.if t .ti +.5i
-.SH ARGUMENTS
-.TP
-.I \- xkb
-keyboard description containing client map to free
-.TP
-.I \- which
-mask identifying components of map to free
-.TP
-.I \- free_all
-True => free all client components and map itself
-.SH DESCRIPTION
-.LP
-.I XkbFreeClientMap
-frees the components of client map specified by
-.I which
-in the XkbDescRec structure specified by the
-.I xkb
-parameter and sets the corresponding structure component values to NULL. The
-.I which
-parameter specifies a combination of the client map masks shown in Table 1.
-
-If
-.I free_all
-is True,
-.I which
-is ignored;
-.I XkbFreeClientMap
-frees every non-NULL structure component in the client map, frees the
-XkbClientMapRec
-structure referenced by the
-.I map
-member of the
-.I xkb
-parameter, and sets the
-.I map
-member to NULL.
-
-.TS
-c s
-l l
-l lw(4i).
-Table 1 XkbAllocClientMap Masks
-_
-Mask Effect
-_
-XkbKeyTypesMask T{
-The type_count field specifies the number of entries to preallocate for the
-types field of the client map. If the type_count field is less than
-XkbNumRequiredTypes returns BadValue.
-T}
-.sp
-XkbKeySymsMask T{
-The min_key_code and max_key_code fields of the xkb parameter are used to
-allocate the syms and key_sym_map fields of the client map. The fields are
-allocated to contain the maximum number of entries necessary for max_key_code -
-min_key_code + 1 keys.
-T}
-.sp
-XkbModifierMapMask T{
-The min_key_code and max_key_code fields of the xkb parameter are used to
-allocate the modmap field of the client map. The field is allocated to contain
-the maximum number of entries necessary for max_key_code - min_key_code + 1
-keys.
-T}
-.TE
-
-NOTE: The
-.I min_key_code
-and
-.I max_key_code
-fields of the
-.I xkb
-parameter must be legal values if the XkbKeySymsMask or XkbModifierMapMask masks
-are set in the
-.I which
-parameter. If they are not valid,
-.I XkbAllocClientMap
-returns BadValue.
-.SH STRUCTURES
-.LP
-The complete description of an Xkb keyboard is given by an XkbDescRec. The
-component
-structures in the XkbDescRec represent the major Xkb components.
-
-.nf
-typedef struct {
- struct _XDisplay * display; /\(** connection to X server */
- unsigned short flags; /\(** private to Xkb, do not modify */
- unsigned short device_spec; /\(** device of interest */
- KeyCode min_key_code; /\(** minimum keycode for device */
- KeyCode max_key_code; /\(** maximum keycode for device */
- XkbControlsPtr ctrls; /\(** controls */
- XkbServerMapPtr server; /\(** server keymap */
- XkbClientMapPtr map; /\(** client keymap */
- XkbIndicatorPtr indicators; /\(** indicator map */
- XkbNamesPtr names; /\(** names for all components */
- XkbCompatMapPtr compat; /\(** compatibility map */
- XkbGeometryPtr geom; /\(** physical geometry of keyboard */
-} XkbDescRec, *XkbDescPtr;
-
-.fi
-The
-.I display
-field points to an X display structure. The
-.I flags field is private to the library: modifying
-.I flags
-may yield unpredictable results. The
-.I device_spec
-field specifies the device identifier of the keyboard input device, or
-XkbUseCoreKeyboard, which specifies the core keyboard device. The
-.I min_key_code
-and
-.I max_key_code
-fields specify the least and greatest keycode that can be returned by the
-keyboard.
-
-Each structure component has a corresponding mask bit that is used in function
-calls to
-indicate that the structure should be manipulated in some manner, such as
-allocating it
-or freeing it. These masks and their relationships to the fields in the
-XkbDescRec are
-shown in Table 2.
-
-.TS
-c s s
-l l l
-l l l.
-Table 2 Mask Bits for XkbDescRec
-_
-Mask Bit XkbDescRec Field Value
-_
-XkbControlsMask ctrls (1L<<0)
-XkbServerMapMask server (1L<<1)
-XkbIClientMapMask map (1L<<2)
-XkbIndicatorMapMask indicators (1L<<3)
-XkbNamesMask names (1L<<4)
-XkbCompatMapMask compat (1L<<5)
-XkbGeometryMask geom (1L<<6)
-XkbAllComponentsMask All Fields (0x7f)
-.TE
-
-The
-.I map
-field of the complete Xkb keyboard description is a pointer to the Xkb client
-map, which is
-of type XkbClientMapRec:
-.nf
-
- typedef struct { /\(** Client Map */
- unsigned char size_types; /\(** # occupied entries in types */
- unsigned char num_types; /\(** # entries in types */
- XkbKeyTypePtr types; /\(** vector of key types used by this keymap */
- unsigned short size_syms; /\(** length of the syms array */
- unsigned short num_syms; /\(** # entries in syms */
- KeySym * syms; /\(** linear 2d tables of keysyms, 1 per key */
- XkbSymMapPtr key_sym_map; /\(** 1 per keycode, maps keycode to syms */
- unsigned char * modmap; /\(** 1 per keycode, real mods bound to key */
-} XkbClientMapRec, *XkbClientMapPtr;
-
-.fi
-.SH DIAGNOSTICS
-.TP 15
-.B BadValue
-An argument is out of range
-.SH "SEE ALSO"
-.BR XkbAllocClientMap (__libmansuffix__)
+'\" t
+.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the "Software"),
+.\" to deal in the Software without restriction, including without limitation
+.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
+.\" and/or sell copies of the Software, and to permit persons to whom the
+.\" Software is furnished to do so, subject to the following conditions:
+.\"
+.\" The above copyright notice and this permission notice (including the next
+.\" paragraph) shall be included in all copies or substantial portions of the
+.\" Software.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+.\" DEALINGS IN THE SOFTWARE.
+.\"
+.TH XkbFreeClientMap __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbFreeClientMap \- Free memory used by the client map member of an XkbDescRec
+structure
+.SH SYNOPSIS
+.HP
+.B void XkbFreeClientMap
+.BI "(\^XkbDescPtr " "xkb" "\^,"
+.BI "unsigned int " "which" "\^,"
+.BI "Bool " "free_all" "\^);"
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- xkb
+keyboard description containing client map to free
+.TP
+.I \- which
+mask identifying components of map to free
+.TP
+.I \- free_all
+True => free all client components and map itself
+.SH DESCRIPTION
+.LP
+.I XkbFreeClientMap
+frees the components of client map specified by
+.I which
+in the XkbDescRec structure specified by the
+.I xkb
+parameter and sets the corresponding structure component values to NULL. The
+.I which
+parameter specifies a combination of the client map masks shown in Table 1.
+
+If
+.I free_all
+is True,
+.I which
+is ignored;
+.I XkbFreeClientMap
+frees every non-NULL structure component in the client map, frees the
+XkbClientMapRec
+structure referenced by the
+.I map
+member of the
+.I xkb
+parameter, and sets the
+.I map
+member to NULL.
+
+.TS
+c s
+l l
+l lw(4i).
+Table 1 XkbAllocClientMap Masks
+_
+Mask Effect
+_
+XkbKeyTypesMask T{
+The type_count field specifies the number of entries to preallocate for the
+types field of the client map. If the type_count field is less than
+XkbNumRequiredTypes returns BadValue.
+T}
+.sp
+XkbKeySymsMask T{
+The min_key_code and max_key_code fields of the xkb parameter are used to
+allocate the syms and key_sym_map fields of the client map. The fields are
+allocated to contain the maximum number of entries necessary for max_key_code -
+min_key_code + 1 keys.
+T}
+.sp
+XkbModifierMapMask T{
+The min_key_code and max_key_code fields of the xkb parameter are used to
+allocate the modmap field of the client map. The field is allocated to contain
+the maximum number of entries necessary for max_key_code - min_key_code + 1
+keys.
+T}
+.TE
+
+NOTE: The
+.I min_key_code
+and
+.I max_key_code
+fields of the
+.I xkb
+parameter must be legal values if the XkbKeySymsMask or XkbModifierMapMask masks
+are set in the
+.I which
+parameter. If they are not valid,
+.I XkbAllocClientMap
+returns BadValue.
+.SH STRUCTURES
+.LP
+The complete description of an Xkb keyboard is given by an XkbDescRec. The
+component
+structures in the XkbDescRec represent the major Xkb components.
+
+.nf
+typedef struct {
+ struct _XDisplay * display; /\(** connection to X server */
+ unsigned short flags; /\(** private to Xkb, do not modify */
+ unsigned short device_spec; /\(** device of interest */
+ KeyCode min_key_code; /\(** minimum keycode for device */
+ KeyCode max_key_code; /\(** maximum keycode for device */
+ XkbControlsPtr ctrls; /\(** controls */
+ XkbServerMapPtr server; /\(** server keymap */
+ XkbClientMapPtr map; /\(** client keymap */
+ XkbIndicatorPtr indicators; /\(** indicator map */
+ XkbNamesPtr names; /\(** names for all components */
+ XkbCompatMapPtr compat; /\(** compatibility map */
+ XkbGeometryPtr geom; /\(** physical geometry of keyboard */
+} XkbDescRec, *XkbDescPtr;
+
+.fi
+The
+.I display
+field points to an X display structure. The
+.I flags field is private to the library: modifying
+.I flags
+may yield unpredictable results. The
+.I device_spec
+field specifies the device identifier of the keyboard input device, or
+XkbUseCoreKeyboard, which specifies the core keyboard device. The
+.I min_key_code
+and
+.I max_key_code
+fields specify the least and greatest keycode that can be returned by the
+keyboard.
+
+Each structure component has a corresponding mask bit that is used in function
+calls to
+indicate that the structure should be manipulated in some manner, such as
+allocating it
+or freeing it. These masks and their relationships to the fields in the
+XkbDescRec are
+shown in Table 2.
+
+.TS
+c s s
+l l l
+l l l.
+Table 2 Mask Bits for XkbDescRec
+_
+Mask Bit XkbDescRec Field Value
+_
+XkbControlsMask ctrls (1L<<0)
+XkbServerMapMask server (1L<<1)
+XkbIClientMapMask map (1L<<2)
+XkbIndicatorMapMask indicators (1L<<3)
+XkbNamesMask names (1L<<4)
+XkbCompatMapMask compat (1L<<5)
+XkbGeometryMask geom (1L<<6)
+XkbAllComponentsMask All Fields (0x7f)
+.TE
+
+The
+.I map
+field of the complete Xkb keyboard description is a pointer to the Xkb client
+map, which is
+of type XkbClientMapRec:
+.nf
+
+ typedef struct { /\(** Client Map */
+ unsigned char size_types; /\(** # occupied entries in types */
+ unsigned char num_types; /\(** # entries in types */
+ XkbKeyTypePtr types; /\(** vector of key types used by this keymap */
+ unsigned short size_syms; /\(** length of the syms array */
+ unsigned short num_syms; /\(** # entries in syms */
+ KeySym * syms; /\(** linear 2d tables of keysyms, 1 per key */
+ XkbSymMapPtr key_sym_map; /\(** 1 per keycode, maps keycode to syms */
+ unsigned char * modmap; /\(** 1 per keycode, real mods bound to key */
+} XkbClientMapRec, *XkbClientMapPtr;
+
+.fi
+.SH DIAGNOSTICS
+.TP 15
+.B BadValue
+An argument is out of range
+.SH "SEE ALSO"
+.BR XkbAllocClientMap (__libmansuffix__)
diff --git a/libX11/man/xkb/XkbFreeCompatMap.man b/libX11/man/xkb/XkbFreeCompatMap.man
index 77a1b2c20..2675394fe 100644
--- a/libX11/man/xkb/XkbFreeCompatMap.man
+++ b/libX11/man/xkb/XkbFreeCompatMap.man
@@ -1,164 +1,164 @@
-'\" t
-.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
-.\"
-.\" Permission is hereby granted, free of charge, to any person obtaining a
-.\" copy of this software and associated documentation files (the "Software"),
-.\" to deal in the Software without restriction, including without limitation
-.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
-.\" and/or sell copies of the Software, and to permit persons to whom the
-.\" Software is furnished to do so, subject to the following conditions:
-.\"
-.\" The above copyright notice and this permission notice (including the next
-.\" paragraph) shall be included in all copies or substantial portions of the
-.\" Software.
-.\"
-.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-.\" DEALINGS IN THE SOFTWARE.
-.\"
-.TH XkbFreeCompatMap __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
-.SH NAME
-XkbFreeCompatMap \- Free an entire compatibility map or selected portions of one
-.SH SYNOPSIS
-.HP
-.B void XkbFreeCompatMap
-.BI "(\^XkbDescPtr " "xkb" "\^,"
-.BI "unsigned int " "which" "\^,"
-.BI "Bool " "free_map" "\^);"
-.if n .ti +5n
-.if t .ti +.5i
-.SH ARGUMENTS
-.TP
-.I \- xkb
-Xkb description in which to free compatibility map
-.TP
-.I \- which
-mask of compatibility map components to free
-.TP
-.I \- free_map
-True => free XkbCompatMap structure itself
-.SH DESCRIPTION
-.LP
-.I which
-specifies the compatibility map components to be freed (see XkbGetCompatMap).
-.I which
-is an inclusive OR of the bits shown in Table 1.
-
-.TS
-c s s
-l l l.
-Table 1 Compatibility Map Component Masks
-_
-Mask Value Affecting
-_
-XkbSymInterpMask (1<<0) Symbol interpretations
-XkbGroupCompatMask (1<<1) Group maps
-XkbAllCompatMask (0x3) All compatibility map components
-.TE
-
-.I free_map
-indicates whether the XkbCompatMap structure itself should be freed. If
-.I free_map
-is True,
-.I which
-is ignored, all non-NULL compatibility map components are freed, and the
-.I compat
-field in the XkbDescRec referenced by
-.I xkb
-is set to NULL.
-.SH STRUCTURES
-.LP
-.nf
-
- typedef struct _XkbCompatMapRec {
- XkbSymInterpretPtr sym_interpret; /\(** symbol based key semantics*/
- XkbModsRec groups[XkbNumKbdGroups]; /\(** group => modifier map */
- unsigned short num_si; /\(** # structures used in sym_interpret */
- unsigned short size_si; /\(** # structures allocated in sym_interpret */
- } XkbCompatMapRec, *XkbCompatMapPtr;
-
-.fi
-
-The complete description of an Xkb keyboard is given by an XkbDescRec. The component
-structures in the XkbDescRec represent the major Xkb components outlined in Figure 1.1.
-
-.nf
-typedef struct {
- struct _XDisplay * display; /\(** connection to X server */
- unsigned short flags; /\(** private to Xkb, do not modify */
- unsigned short device_spec; /\(** device of interest */
- KeyCode min_key_code; /\(** minimum keycode for device */
- KeyCode max_key_code; /\(** maximum keycode for device */
- XkbControlsPtr ctrls; /\(** controls */
- XkbServerMapPtr server; /\(** server keymap */
- XkbClientMapPtr map; /\(** client keymap */
- XkbIndicatorPtr indicators; /\(** indicator map */
- XkbNamesPtr names; /\(** names for all components */
- XkbCompatMapPtr compat; /\(** compatibility map */
- XkbGeometryPtr geom; /\(** physical geometry of keyboard */
-} XkbDescRec, *XkbDescPtr;
-
-.fi
-The
-.I display
-field points to an X display structure. The
-.I flags field is private to the library: modifying
-.I flags
-may yield unpredictable results. The
-.I device_spec
-field specifies the device identifier of the keyboard input device, or
-XkbUseCoreKeyboard, which specifies the core keyboard device. The
-.I min_key_code
-and
-.I max_key_code
-fields specify the least and greatest keycode that can be returned by the keyboard.
-The other fields specify structure components of the keyboard description and are
-described in detail in other sections of this document. Table 2 identifies the
-subsequent sections of this document that discuss the individual components of the
-XkbDescRec.
-
-.TS
-c s
-l l
-l l.
-Table 2 XkbDescRec Component References
-_
-XkbDescRec Field For more info
-_
-ctrls Chapter 10
-server Chapter 16
-map Chapter 15
-indicators Chapter 8
-names Chapter 18
-compat Chapter 17
-geom Chapter 13
-.TE
-
-Each structure component has a corresponding mask bit that is used in function calls to
-indicate that the structure should be manipulated in some manner, such as allocating it
-or freeing it. These masks and their relationships to the fields in the XkbDescRec are
-shown in Table 3.
-
-.TS
-c s s
-l l l
-l l l.
-Table 3 Mask Bits for XkbDescRec
-_
-Mask Bit XkbDescRec Field Value
-_
-XkbControlsMask ctrls (1L<<0)
-XkbServerMapMask server (1L<<1)
-XkbIClientMapMask map (1L<<2)
-XkbIndicatorMapMask indicators (1L<<3)
-XkbNamesMask names (1L<<4)
-XkbCompatMapMask compat (1L<<5)
-XkbGeometryMask geom (1L<<6)
-XkbAllComponentsMask All Fields (0x7f)
-.TE
-.SH "SEE ALSO"
-.BR XkbGetCompatMap (__libmansuffix__)
+'\" t
+.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the "Software"),
+.\" to deal in the Software without restriction, including without limitation
+.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
+.\" and/or sell copies of the Software, and to permit persons to whom the
+.\" Software is furnished to do so, subject to the following conditions:
+.\"
+.\" The above copyright notice and this permission notice (including the next
+.\" paragraph) shall be included in all copies or substantial portions of the
+.\" Software.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+.\" DEALINGS IN THE SOFTWARE.
+.\"
+.TH XkbFreeCompatMap __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbFreeCompatMap \- Free an entire compatibility map or selected portions of one
+.SH SYNOPSIS
+.HP
+.B void XkbFreeCompatMap
+.BI "(\^XkbDescPtr " "xkb" "\^,"
+.BI "unsigned int " "which" "\^,"
+.BI "Bool " "free_map" "\^);"
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- xkb
+Xkb description in which to free compatibility map
+.TP
+.I \- which
+mask of compatibility map components to free
+.TP
+.I \- free_map
+True => free XkbCompatMap structure itself
+.SH DESCRIPTION
+.LP
+.I which
+specifies the compatibility map components to be freed (see XkbGetCompatMap).
+.I which
+is an inclusive OR of the bits shown in Table 1.
+
+.TS
+c s s
+l l l.
+Table 1 Compatibility Map Component Masks
+_
+Mask Value Affecting
+_
+XkbSymInterpMask (1<<0) Symbol interpretations
+XkbGroupCompatMask (1<<1) Group maps
+XkbAllCompatMask (0x3) All compatibility map components
+.TE
+
+.I free_map
+indicates whether the XkbCompatMap structure itself should be freed. If
+.I free_map
+is True,
+.I which
+is ignored, all non-NULL compatibility map components are freed, and the
+.I compat
+field in the XkbDescRec referenced by
+.I xkb
+is set to NULL.
+.SH STRUCTURES
+.LP
+.nf
+
+ typedef struct _XkbCompatMapRec {
+ XkbSymInterpretPtr sym_interpret; /\(** symbol based key semantics*/
+ XkbModsRec groups[XkbNumKbdGroups]; /\(** group => modifier map */
+ unsigned short num_si; /\(** # structures used in sym_interpret */
+ unsigned short size_si; /\(** # structures allocated in sym_interpret */
+ } XkbCompatMapRec, *XkbCompatMapPtr;
+
+.fi
+
+The complete description of an Xkb keyboard is given by an XkbDescRec. The component
+structures in the XkbDescRec represent the major Xkb components outlined in Figure 1.1.
+
+.nf
+typedef struct {
+ struct _XDisplay * display; /\(** connection to X server */
+ unsigned short flags; /\(** private to Xkb, do not modify */
+ unsigned short device_spec; /\(** device of interest */
+ KeyCode min_key_code; /\(** minimum keycode for device */
+ KeyCode max_key_code; /\(** maximum keycode for device */
+ XkbControlsPtr ctrls; /\(** controls */
+ XkbServerMapPtr server; /\(** server keymap */
+ XkbClientMapPtr map; /\(** client keymap */
+ XkbIndicatorPtr indicators; /\(** indicator map */
+ XkbNamesPtr names; /\(** names for all components */
+ XkbCompatMapPtr compat; /\(** compatibility map */
+ XkbGeometryPtr geom; /\(** physical geometry of keyboard */
+} XkbDescRec, *XkbDescPtr;
+
+.fi
+The
+.I display
+field points to an X display structure. The
+.I flags field is private to the library: modifying
+.I flags
+may yield unpredictable results. The
+.I device_spec
+field specifies the device identifier of the keyboard input device, or
+XkbUseCoreKeyboard, which specifies the core keyboard device. The
+.I min_key_code
+and
+.I max_key_code
+fields specify the least and greatest keycode that can be returned by the keyboard.
+The other fields specify structure components of the keyboard description and are
+described in detail in other sections of this document. Table 2 identifies the
+subsequent sections of this document that discuss the individual components of the
+XkbDescRec.
+
+.TS
+c s
+l l
+l l.
+Table 2 XkbDescRec Component References
+_
+XkbDescRec Field For more info
+_
+ctrls Chapter 10
+server Chapter 16
+map Chapter 15
+indicators Chapter 8
+names Chapter 18
+compat Chapter 17
+geom Chapter 13
+.TE
+
+Each structure component has a corresponding mask bit that is used in function calls to
+indicate that the structure should be manipulated in some manner, such as allocating it
+or freeing it. These masks and their relationships to the fields in the XkbDescRec are
+shown in Table 3.
+
+.TS
+c s s
+l l l
+l l l.
+Table 3 Mask Bits for XkbDescRec
+_
+Mask Bit XkbDescRec Field Value
+_
+XkbControlsMask ctrls (1L<<0)
+XkbServerMapMask server (1L<<1)
+XkbIClientMapMask map (1L<<2)
+XkbIndicatorMapMask indicators (1L<<3)
+XkbNamesMask names (1L<<4)
+XkbCompatMapMask compat (1L<<5)
+XkbGeometryMask geom (1L<<6)
+XkbAllComponentsMask All Fields (0x7f)
+.TE
+.SH "SEE ALSO"
+.BR XkbGetCompatMap (__libmansuffix__)
diff --git a/libX11/man/xkb/XkbFreeComponentList.man b/libX11/man/xkb/XkbFreeComponentList.man
index 1ef1bc2d8..85aa4ef15 100644
--- a/libX11/man/xkb/XkbFreeComponentList.man
+++ b/libX11/man/xkb/XkbFreeComponentList.man
@@ -1,44 +1,44 @@
-'\" t
-.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
-.\"
-.\" Permission is hereby granted, free of charge, to any person obtaining a
-.\" copy of this software and associated documentation files (the "Software"),
-.\" to deal in the Software without restriction, including without limitation
-.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
-.\" and/or sell copies of the Software, and to permit persons to whom the
-.\" Software is furnished to do so, subject to the following conditions:
-.\"
-.\" The above copyright notice and this permission notice (including the next
-.\" paragraph) shall be included in all copies or substantial portions of the
-.\" Software.
-.\"
-.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-.\" DEALINGS IN THE SOFTWARE.
-.\"
-.TH XkbFreeComponentList __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
-.SH NAME
-XkbFreeComponentList \- Free the structure returned by
-.I XkbListComponents
-.SH SYNOPSIS
-.HP
-.B void XkbFreeComponentList
-.BI "(\^XkbComponentListPtr " "list" "\^);"
-.if n .ti +5n
-.if t .ti +.5i
-.SH ARGUMENTS
-.TP
-.I \- list
-pointer to XkbComponentListRec to free
-.SH DESCRIPTION
-.LP
-When you are done using the structure returned by
-.I XkbListComponents,
-free it using
-.I XkbFreeComponentList.
-.SH "SEE ALSO"
-.BR XkbListComponents (__libmansuffix__)
+'\" t
+.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the "Software"),
+.\" to deal in the Software without restriction, including without limitation
+.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
+.\" and/or sell copies of the Software, and to permit persons to whom the
+.\" Software is furnished to do so, subject to the following conditions:
+.\"
+.\" The above copyright notice and this permission notice (including the next
+.\" paragraph) shall be included in all copies or substantial portions of the
+.\" Software.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+.\" DEALINGS IN THE SOFTWARE.
+.\"
+.TH XkbFreeComponentList __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbFreeComponentList \- Free the structure returned by
+.I XkbListComponents
+.SH SYNOPSIS
+.HP
+.B void XkbFreeComponentList
+.BI "(\^XkbComponentListPtr " "list" "\^);"
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- list
+pointer to XkbComponentListRec to free
+.SH DESCRIPTION
+.LP
+When you are done using the structure returned by
+.I XkbListComponents,
+free it using
+.I XkbFreeComponentList.
+.SH "SEE ALSO"
+.BR XkbListComponents (__libmansuffix__)
diff --git a/libX11/man/xkb/XkbFreeControls.man b/libX11/man/xkb/XkbFreeControls.man
index 29c3829a8..1b0737bd1 100644
--- a/libX11/man/xkb/XkbFreeControls.man
+++ b/libX11/man/xkb/XkbFreeControls.man
@@ -1,113 +1,113 @@
-'\" t
-.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
-.\"
-.\" Permission is hereby granted, free of charge, to any person obtaining a
-.\" copy of this software and associated documentation files (the "Software"),
-.\" to deal in the Software without restriction, including without limitation
-.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
-.\" and/or sell copies of the Software, and to permit persons to whom the
-.\" Software is furnished to do so, subject to the following conditions:
-.\"
-.\" The above copyright notice and this permission notice (including the next
-.\" paragraph) shall be included in all copies or substantial portions of the
-.\" Software.
-.\"
-.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-.\" DEALINGS IN THE SOFTWARE.
-.\"
-.TH XkbFreeControls __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
-.SH NAME
-XkbFreeControls \- Frees memory used by the ctrls member of an XkbDescRec structure
-.SH SYNOPSIS
-.HP
-.B void XkbFreeControls
-.BI "(\^XkbDescPtr " "xkb" "\^,"
-.BI "unsigned int " "which" "\^,"
-.BI "Bool " "free_all" "\^);"
-.if n .ti +5n
-.if t .ti +.5i
-.SH ARGUMENTS
-.TP
-.I \- xkb
-Xkb description in which to free controls components
-.TP
-.I \- which
-mask of components of ctrls to free
-.TP
-.I \- free_all
-True => free everything + ctrls itself
-.SH DESCRIPTION
-.LP
-.I XkbFreeControls
-frees the specified components of the
-.I ctrls
-field in the
-.I xkb
-keyboard description and sets the corresponding structure component values to NULL or zero. The
-.I which
-mask specifies the fields of
-.I ctrls
-to be freed and can contain any of the controls components specified in Table 1.
-
-Table 1 shows the actual values for the individual mask bits used to select
-controls for
-modification and to enable and disable the control. Note that the same mask bit
-is used to
-specify general modifications to the parameters used to configure the control
-(which), and to
-enable and disable the control (enabled_ctrls). The anomalies in the table (no
-"ok" in column)
-are for controls that have no configurable attributes; and for controls that are
-not boolean
-controls and therefore cannot be enabled or disabled.
-
-.TS
-c s s s
-l l l l
-l l l l
-l l l l.
-Table 1 Controls Mask Bits
-_
-Mask Bit which or enabled Value
- changed_ctrls _ctrls
-_
-XkbRepeatKeysMask ok ok (1L<<0)
-XkbSlowKeysMask ok ok (1L<<1)
-XkbBounceKeysMask ok ok (1L<<2)
-XkbStickyKeysMask ok ok (1L<<3)
-XkbMouseKeysMask ok ok (1L<<4)
-XkbMouseKeysAccelMask ok ok (1L<<5)
-XkbAccessXKeysMask ok ok (1L<<6)
-XkbAccessXTimeoutMask ok ok (1L<<7)
-XkbAccessXFeedbackMask ok ok (1L<<8)
-XkbAudibleBellMask ok (1L<<9)
-XkbOverlay1Mask ok (1L<<10)
-XkbOverlay2Mask ok (1L<<11)
-XkbIgnoreGroupLockMask ok (1L<<12)
-XkbGroupsWrapMask ok (1L<<27)
-XkbInternalModsMask ok (1L<<28)
-XkbIgnoreLockModsMask ok (1L<<29)
-XkbPerKeyRepeatMask ok (1L<<30)
-XkbControlsEnabledMask ok (1L<<31)
-XkbAccessXOptionsMask ok ok (XkbStickyKeysMask |
- XkbAccessXFeedbackMask)
-XkbAllBooleanCtrlsMask ok (0x00001FFF)
-XkbAllControlsMask ok (0xF8001FFF)
-.TE
-
-If
-.I free_all
-is True,
-.I XkbFreeControls
-frees every non-NULL structure component in the controls, frees the XkbControlsRec structure referenced by the
-.I ctrls
-member of
-.I xkb,
-and sets
-.I ctrls
-to NULL.
+'\" t
+.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the "Software"),
+.\" to deal in the Software without restriction, including without limitation
+.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
+.\" and/or sell copies of the Software, and to permit persons to whom the
+.\" Software is furnished to do so, subject to the following conditions:
+.\"
+.\" The above copyright notice and this permission notice (including the next
+.\" paragraph) shall be included in all copies or substantial portions of the
+.\" Software.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+.\" DEALINGS IN THE SOFTWARE.
+.\"
+.TH XkbFreeControls __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbFreeControls \- Frees memory used by the ctrls member of an XkbDescRec structure
+.SH SYNOPSIS
+.HP
+.B void XkbFreeControls
+.BI "(\^XkbDescPtr " "xkb" "\^,"
+.BI "unsigned int " "which" "\^,"
+.BI "Bool " "free_all" "\^);"
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- xkb
+Xkb description in which to free controls components
+.TP
+.I \- which
+mask of components of ctrls to free
+.TP
+.I \- free_all
+True => free everything + ctrls itself
+.SH DESCRIPTION
+.LP
+.I XkbFreeControls
+frees the specified components of the
+.I ctrls
+field in the
+.I xkb
+keyboard description and sets the corresponding structure component values to NULL or zero. The
+.I which
+mask specifies the fields of
+.I ctrls
+to be freed and can contain any of the controls components specified in Table 1.
+
+Table 1 shows the actual values for the individual mask bits used to select
+controls for
+modification and to enable and disable the control. Note that the same mask bit
+is used to
+specify general modifications to the parameters used to configure the control
+(which), and to
+enable and disable the control (enabled_ctrls). The anomalies in the table (no
+"ok" in column)
+are for controls that have no configurable attributes; and for controls that are
+not boolean
+controls and therefore cannot be enabled or disabled.
+
+.TS
+c s s s
+l l l l
+l l l l
+l l l l.
+Table 1 Controls Mask Bits
+_
+Mask Bit which or enabled Value
+ changed_ctrls _ctrls
+_
+XkbRepeatKeysMask ok ok (1L<<0)
+XkbSlowKeysMask ok ok (1L<<1)
+XkbBounceKeysMask ok ok (1L<<2)
+XkbStickyKeysMask ok ok (1L<<3)
+XkbMouseKeysMask ok ok (1L<<4)
+XkbMouseKeysAccelMask ok ok (1L<<5)
+XkbAccessXKeysMask ok ok (1L<<6)
+XkbAccessXTimeoutMask ok ok (1L<<7)
+XkbAccessXFeedbackMask ok ok (1L<<8)
+XkbAudibleBellMask ok (1L<<9)
+XkbOverlay1Mask ok (1L<<10)
+XkbOverlay2Mask ok (1L<<11)
+XkbIgnoreGroupLockMask ok (1L<<12)
+XkbGroupsWrapMask ok (1L<<27)
+XkbInternalModsMask ok (1L<<28)
+XkbIgnoreLockModsMask ok (1L<<29)
+XkbPerKeyRepeatMask ok (1L<<30)
+XkbControlsEnabledMask ok (1L<<31)
+XkbAccessXOptionsMask ok ok (XkbStickyKeysMask |
+ XkbAccessXFeedbackMask)
+XkbAllBooleanCtrlsMask ok (0x00001FFF)
+XkbAllControlsMask ok (0xF8001FFF)
+.TE
+
+If
+.I free_all
+is True,
+.I XkbFreeControls
+frees every non-NULL structure component in the controls, frees the XkbControlsRec structure referenced by the
+.I ctrls
+member of
+.I xkb,
+and sets
+.I ctrls
+to NULL.
diff --git a/libX11/man/xkb/XkbFreeDeviceInfo.man b/libX11/man/xkb/XkbFreeDeviceInfo.man
index 4a35bab5e..10fb37ed2 100644
--- a/libX11/man/xkb/XkbFreeDeviceInfo.man
+++ b/libX11/man/xkb/XkbFreeDeviceInfo.man
@@ -1,176 +1,176 @@
-'\" t
-.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
-.\"
-.\" Permission is hereby granted, free of charge, to any person obtaining a
-.\" copy of this software and associated documentation files (the "Software"),
-.\" to deal in the Software without restriction, including without limitation
-.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
-.\" and/or sell copies of the Software, and to permit persons to whom the
-.\" Software is furnished to do so, subject to the following conditions:
-.\"
-.\" The above copyright notice and this permission notice (including the next
-.\" paragraph) shall be included in all copies or substantial portions of the
-.\" Software.
-.\"
-.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-.\" DEALINGS IN THE SOFTWARE.
-.\"
-.TH XkbFreeDeviceInfo __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
-.SH NAME
-XkbFreeDeviceInfo \- Free an XkbDeviceInfoRec structure
-.SH SYNOPSIS
-.HP
-.B void XkbFreeDeviceInfo
-.BI "(\^XkbDeviceInfoPtr " "device_info" "\^,"
-.BI "unsigned int " "which" "\^,"
-.BI "Bool " "free_all" "\^);"
-.if n .ti +5n
-.if t .ti +.5i
-.SH ARGUMENTS
-.TP
-.I \- device_info
-pointer to XkbDeviceInfoRec in which to free items
-.TP
-.I \- which
-mask of components of device_info to free
-.TP
-.I \- free_all
-True => free everything, including device_info
-.SH DESCRIPTION
-.LP
-If
-.I free_all
-is True, the
-.I XkbFreeDeviceInfo
-frees all components of
-.I device_info
-and the XkbDeviceInfoRec structure pointed to by
-.I device_info
-itself. If
-.I free_all
-is False, the value of
-.I which
-determines which subcomponents are freed.
-.I which
-is an inclusive OR of one or more of the values from Table 1. If
-.I which
-contains XkbXI_ButtonActionsMask, all button actions associated with
-.I device_info
-are freed,
-.I device_info->btn_acts
-is set to NULL, and
-.I device_info->num_btns
-is set to zero. If
-.I which
-contains all bits in XkbXI_IndicatorsMask, all XkbDeviceLedInfoRec structures associated with
-.I device_info
-are freed,
-.I device_info->leds
-is set to NULL, and
-.I device_info->sz_leds
-and
-.I device_info->num_leds
-are set to zero. If
-.I which
-contains XkbXI_IndicatorMapsMask, all indicator maps associated with
-.I device_info
-are cleared, but the number of LEDs and the leds structures themselves is preserved. If
-.I which
-contains XkbXI_IndicatorNamesMask, all indicator names associated with
-.I device_info
-are cleared, but the number of LEDs and the leds structures themselves is preserved. If
-.I which
-contains XkbXI_IndicatorStateMask, the indicator state associated with the
-.I device_info
-leds are set to zeros but the number of LEDs and the leds structures themselves is preserved.
-.bp
-.nf
- Table 1 XkbDeviceInfoRec Mask Bits
-____________________________________________________________________________________
-Name XkbDeviceInfoRec Value Capability If Set
- Fields Effected
-____________________________________________________________________________________
-XkbXI_KeyboardsMask (1L <<0) Clients can use all
- Xkb requests and events
- with KeyClass devices
- supported by the input
- device extension.
-
-XkbXI_ButtonActionsMask num_btns (1L <<1) Clients can assign key
- btn_acts actions to buttons
- non-KeyClass input
- extension devices.
-
-XkbXI_IndicatorNamesMask leds->names (1L <<2) Clients can assign
- names to indicators on
- non-KeyClass input
- extension devices.
-
-XkbXI_IndicatorMapsMask leds->maps (1L <<3) Clients can assign
- indicator maps to
- indicators on
- non-KeyClass input
- extension devices.
-
-XkbXI_IndicatorStateMask leds->state (1L <<4) Clients can request
- the status of indicators
- on non-KeyClass input
- extension devices.
-
-XkbXI_IndicatorsMask sz_leds (0x1c) XkbXI_IndicatorNamesMask |
- num_leds XkbXI_IndicatorMapsMask |
- leds->* XkbXI_IndicatorStateMask
-
-XkbXI_UnsupportedFeaturesMask unsupported (1L <<15)
-
-XkbXI_AllDeviceFeaturesMask Those selected (0x1e) XkbXI_IndicatorsMask |
- by Value Column XkbSI_ButtonActionsMask
- masks
-
-XkbXI_AllFeaturesMask Those selected (0x1f) XkbSI_AllDeviceFeaturesMask |
- by Value Column XkbSI_KeyboardsMask
- masks
-
-XkbXI_AllDetailsMask Those selected (0x801f) XkbXI_AllFeaturesMask |
- by Value column XkbXI_UnsupportedFeaturesMask
- masks
-.fi
-.SH STRUCTURES
-.LP
-Information about X Input Extension devices is transferred between a client program and the Xkb
-extension in an XkbDeviceInfoRec structure:
-.nf
-
-typedef struct {
- char * name; /\(** name for device */
- Atom type; /\(** name for class of devices */
- unsigned short device_spec; /\(** device of interest */
- Bool has_own_state; /\(** True=>this device has its own state */
- unsigned short supported; /\(** bits indicating supported capabilities */
- unsigned short unsupported; /\(** bits indicating unsupported capabilities */
- unsigned short num_btns; /\(** number of entries in btn_acts */
- XkbAction * btn_acts; /\(** button actions */
- unsigned short sz_leds; /\(** total number of entries in LEDs vector */
- unsigned short num_leds; /\(** number of valid entries in LEDs vector */
- unsigned short dflt_kbd_fb; /\(** input extension ID of default (core kbd) indicator */
- unsigned short dflt_led_fb; /\(** input extension ID of default indicator feedback */
- XkbDeviceLedInfoPtr leds; /\(** LED descriptions */
-} XkbDeviceInfoRec, *XkbDeviceInfoPtr;
-
-typedef struct {
- unsigned short led_class; /\(** class for this LED device*/
- unsigned short led_id; /\(** ID for this LED device */
- unsigned int phys_indicators; /\(** bits for which LEDs physically present */
- unsigned int maps_present; /\(** bits for which LEDs have maps in maps */
- unsigned int names_present; /\(** bits for which LEDs are in names */
- unsigned int state; /\(** 1 bit => corresponding LED is on */
- Atom names[XkbNumIndicators]; /\(** names for LEDs */
- XkbIndicatorMapRec maps; /\(** indicator maps for each LED */
-} XkbDeviceLedInfoRec, *XkbDeviceLedInfoPtr;
-
-.fi
+'\" t
+.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the "Software"),
+.\" to deal in the Software without restriction, including without limitation
+.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
+.\" and/or sell copies of the Software, and to permit persons to whom the
+.\" Software is furnished to do so, subject to the following conditions:
+.\"
+.\" The above copyright notice and this permission notice (including the next
+.\" paragraph) shall be included in all copies or substantial portions of the
+.\" Software.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+.\" DEALINGS IN THE SOFTWARE.
+.\"
+.TH XkbFreeDeviceInfo __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbFreeDeviceInfo \- Free an XkbDeviceInfoRec structure
+.SH SYNOPSIS
+.HP
+.B void XkbFreeDeviceInfo
+.BI "(\^XkbDeviceInfoPtr " "device_info" "\^,"
+.BI "unsigned int " "which" "\^,"
+.BI "Bool " "free_all" "\^);"
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- device_info
+pointer to XkbDeviceInfoRec in which to free items
+.TP
+.I \- which
+mask of components of device_info to free
+.TP
+.I \- free_all
+True => free everything, including device_info
+.SH DESCRIPTION
+.LP
+If
+.I free_all
+is True, the
+.I XkbFreeDeviceInfo
+frees all components of
+.I device_info
+and the XkbDeviceInfoRec structure pointed to by
+.I device_info
+itself. If
+.I free_all
+is False, the value of
+.I which
+determines which subcomponents are freed.
+.I which
+is an inclusive OR of one or more of the values from Table 1. If
+.I which
+contains XkbXI_ButtonActionsMask, all button actions associated with
+.I device_info
+are freed,
+.I device_info->btn_acts
+is set to NULL, and
+.I device_info->num_btns
+is set to zero. If
+.I which
+contains all bits in XkbXI_IndicatorsMask, all XkbDeviceLedInfoRec structures associated with
+.I device_info
+are freed,
+.I device_info->leds
+is set to NULL, and
+.I device_info->sz_leds
+and
+.I device_info->num_leds
+are set to zero. If
+.I which
+contains XkbXI_IndicatorMapsMask, all indicator maps associated with
+.I device_info
+are cleared, but the number of LEDs and the leds structures themselves is preserved. If
+.I which
+contains XkbXI_IndicatorNamesMask, all indicator names associated with
+.I device_info
+are cleared, but the number of LEDs and the leds structures themselves is preserved. If
+.I which
+contains XkbXI_IndicatorStateMask, the indicator state associated with the
+.I device_info
+leds are set to zeros but the number of LEDs and the leds structures themselves is preserved.
+.bp
+.nf
+ Table 1 XkbDeviceInfoRec Mask Bits
+____________________________________________________________________________________
+Name XkbDeviceInfoRec Value Capability If Set
+ Fields Effected
+____________________________________________________________________________________
+XkbXI_KeyboardsMask (1L <<0) Clients can use all
+ Xkb requests and events
+ with KeyClass devices
+ supported by the input
+ device extension.
+
+XkbXI_ButtonActionsMask num_btns (1L <<1) Clients can assign key
+ btn_acts actions to buttons
+ non-KeyClass input
+ extension devices.
+
+XkbXI_IndicatorNamesMask leds->names (1L <<2) Clients can assign
+ names to indicators on
+ non-KeyClass input
+ extension devices.
+
+XkbXI_IndicatorMapsMask leds->maps (1L <<3) Clients can assign
+ indicator maps to
+ indicators on
+ non-KeyClass input
+ extension devices.
+
+XkbXI_IndicatorStateMask leds->state (1L <<4) Clients can request
+ the status of indicators
+ on non-KeyClass input
+ extension devices.
+
+XkbXI_IndicatorsMask sz_leds (0x1c) XkbXI_IndicatorNamesMask |
+ num_leds XkbXI_IndicatorMapsMask |
+ leds->* XkbXI_IndicatorStateMask
+
+XkbXI_UnsupportedFeaturesMask unsupported (1L <<15)
+
+XkbXI_AllDeviceFeaturesMask Those selected (0x1e) XkbXI_IndicatorsMask |
+ by Value Column XkbSI_ButtonActionsMask
+ masks
+
+XkbXI_AllFeaturesMask Those selected (0x1f) XkbSI_AllDeviceFeaturesMask |
+ by Value Column XkbSI_KeyboardsMask
+ masks
+
+XkbXI_AllDetailsMask Those selected (0x801f) XkbXI_AllFeaturesMask |
+ by Value column XkbXI_UnsupportedFeaturesMask
+ masks
+.fi
+.SH STRUCTURES
+.LP
+Information about X Input Extension devices is transferred between a client program and the Xkb
+extension in an XkbDeviceInfoRec structure:
+.nf
+
+typedef struct {
+ char * name; /\(** name for device */
+ Atom type; /\(** name for class of devices */
+ unsigned short device_spec; /\(** device of interest */
+ Bool has_own_state; /\(** True=>this device has its own state */
+ unsigned short supported; /\(** bits indicating supported capabilities */
+ unsigned short unsupported; /\(** bits indicating unsupported capabilities */
+ unsigned short num_btns; /\(** number of entries in btn_acts */
+ XkbAction * btn_acts; /\(** button actions */
+ unsigned short sz_leds; /\(** total number of entries in LEDs vector */
+ unsigned short num_leds; /\(** number of valid entries in LEDs vector */
+ unsigned short dflt_kbd_fb; /\(** input extension ID of default (core kbd) indicator */
+ unsigned short dflt_led_fb; /\(** input extension ID of default indicator feedback */
+ XkbDeviceLedInfoPtr leds; /\(** LED descriptions */
+} XkbDeviceInfoRec, *XkbDeviceInfoPtr;
+
+typedef struct {
+ unsigned short led_class; /\(** class for this LED device*/
+ unsigned short led_id; /\(** ID for this LED device */
+ unsigned int phys_indicators; /\(** bits for which LEDs physically present */
+ unsigned int maps_present; /\(** bits for which LEDs have maps in maps */
+ unsigned int names_present; /\(** bits for which LEDs are in names */
+ unsigned int state; /\(** 1 bit => corresponding LED is on */
+ Atom names[XkbNumIndicators]; /\(** names for LEDs */
+ XkbIndicatorMapRec maps; /\(** indicator maps for each LED */
+} XkbDeviceLedInfoRec, *XkbDeviceLedInfoPtr;
+
+.fi
diff --git a/libX11/man/xkb/XkbFreeGeomColors.man b/libX11/man/xkb/XkbFreeGeomColors.man
index 7b7903eeb..76ebf389a 100644
--- a/libX11/man/xkb/XkbFreeGeomColors.man
+++ b/libX11/man/xkb/XkbFreeGeomColors.man
@@ -1,80 +1,80 @@
-.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
-.\"
-.\" Permission is hereby granted, free of charge, to any person obtaining a
-.\" copy of this software and associated documentation files (the "Software"),
-.\" to deal in the Software without restriction, including without limitation
-.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
-.\" and/or sell copies of the Software, and to permit persons to whom the
-.\" Software is furnished to do so, subject to the following conditions:
-.\"
-.\" The above copyright notice and this permission notice (including the next
-.\" paragraph) shall be included in all copies or substantial portions of the
-.\" Software.
-.\"
-.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-.\" DEALINGS IN THE SOFTWARE.
-.\"
-.TH XkbFreeGeomColors __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
-.SH NAME
-XkbFreeGeomColors \- Free geometry colors
-.SH SYNOPSIS
-.HP
-.B void XkbFreeGeomColors
-.BI "(\^XkbGeometryPtr " "geom" "\^,"
-.BI "int " "first" "\^,"
-.BI "int " "count" "\^,"
-.BI "Bool " "free_all" "\^);"
-.if n .ti +5n
-.if t .ti +.5i
-.SH ARGUMENTS
-.TP
-.I \- geom
-geometry in which colors should be freed
-.TP
-.I \- first
-first color to be freed
-.TP
-.I \- count
-number of colors to be freed
-.TP
-.I \- free_all
-True => all colors are freed
-.SH DESCRIPTION
-.LP
-Xkb provides a number of functions to allocate and free subcomponents of a
-keyboard geometry. Use these functions to create or modify keyboard geometries.
-Note that these functions merely allocate space for the new element(s), and it
-is up to you to fill in the values explicitly in your code. These allocation
-functions increase
-.I sz_*
-but never touch
-.I num_*
-(unless there is an allocation failure, in which case they reset both
-.I sz_*
-and
-.I num_*
-to zero). These functions return Success if they succeed, BadAlloc if they are
-not able to allocate space, or BadValue if a parameter is not as expected.
-
-If
-.I free_all
-is True, all colors are freed regardless of the value of
-.I first
-or
-.I count.
-Otherwise,
-.I count
-colors are freed beginning with the one specified by
-.I first.
-.SH DIAGNOSTICS
-.TP 15
-.B BadAlloc
-Unable to allocate storage
-.TP 15
-.B BadValue
-An argument is out of range
+.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the "Software"),
+.\" to deal in the Software without restriction, including without limitation
+.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
+.\" and/or sell copies of the Software, and to permit persons to whom the
+.\" Software is furnished to do so, subject to the following conditions:
+.\"
+.\" The above copyright notice and this permission notice (including the next
+.\" paragraph) shall be included in all copies or substantial portions of the
+.\" Software.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+.\" DEALINGS IN THE SOFTWARE.
+.\"
+.TH XkbFreeGeomColors __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbFreeGeomColors \- Free geometry colors
+.SH SYNOPSIS
+.HP
+.B void XkbFreeGeomColors
+.BI "(\^XkbGeometryPtr " "geom" "\^,"
+.BI "int " "first" "\^,"
+.BI "int " "count" "\^,"
+.BI "Bool " "free_all" "\^);"
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- geom
+geometry in which colors should be freed
+.TP
+.I \- first
+first color to be freed
+.TP
+.I \- count
+number of colors to be freed
+.TP
+.I \- free_all
+True => all colors are freed
+.SH DESCRIPTION
+.LP
+Xkb provides a number of functions to allocate and free subcomponents of a
+keyboard geometry. Use these functions to create or modify keyboard geometries.
+Note that these functions merely allocate space for the new element(s), and it
+is up to you to fill in the values explicitly in your code. These allocation
+functions increase
+.I sz_*
+but never touch
+.I num_*
+(unless there is an allocation failure, in which case they reset both
+.I sz_*
+and
+.I num_*
+to zero). These functions return Success if they succeed, BadAlloc if they are
+not able to allocate space, or BadValue if a parameter is not as expected.
+
+If
+.I free_all
+is True, all colors are freed regardless of the value of
+.I first
+or
+.I count.
+Otherwise,
+.I count
+colors are freed beginning with the one specified by
+.I first.
+.SH DIAGNOSTICS
+.TP 15
+.B BadAlloc
+Unable to allocate storage
+.TP 15
+.B BadValue
+An argument is out of range
diff --git a/libX11/man/xkb/XkbFreeGeomDoodads.man b/libX11/man/xkb/XkbFreeGeomDoodads.man
index adb99b3ec..9371a8c4a 100644
--- a/libX11/man/xkb/XkbFreeGeomDoodads.man
+++ b/libX11/man/xkb/XkbFreeGeomDoodads.man
@@ -1,78 +1,78 @@
-.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
-.\"
-.\" Permission is hereby granted, free of charge, to any person obtaining a
-.\" copy of this software and associated documentation files (the "Software"),
-.\" to deal in the Software without restriction, including without limitation
-.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
-.\" and/or sell copies of the Software, and to permit persons to whom the
-.\" Software is furnished to do so, subject to the following conditions:
-.\"
-.\" The above copyright notice and this permission notice (including the next
-.\" paragraph) shall be included in all copies or substantial portions of the
-.\" Software.
-.\"
-.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-.\" DEALINGS IN THE SOFTWARE.
-.\"
-.TH XkbFreeGeomDoodads __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
-.SH NAME
-XkbFreeGeomDoodads \- Free geometry doodads
-.SH SYNOPSIS
-.HP
-.B void XkbFreeGeomDoodads
-.BI "(\^XkbDoodadPtr " "doodads" "\^,"
-.BI "int " "count" "\^,"
-.BI "Bool " "free_all" "\^);"
-.if n .ti +5n
-.if t .ti +.5i
-.SH ARGUMENTS
-.TP
-.I \- doodads
-doodads to be freed
-.TP
-.I \- count
-number of doodads to be freed
-.TP
-.I \- free_all
-True => all doodads are freed
-.SH DESCRIPTION
-.LP
-Xkb provides a number of functions to allocate and free subcomponents of a
-keyboard geometry. Use these functions to create or modify keyboard geometries.
-Note that these functions merely allocate space for the new element(s), and it
-is up to you to fill in the values explicitly in your code. These allocation
-functions increase
-.I sz_*
-but never touch
-.I num_*
-(unless there is an allocation failure, in which case they reset both
-.I sz_*
-and
-.I num_*
-to zero). These functions return Success if they succeed, BadAlloc if they are
-not able to allocate space, or BadValue if a parameter is not as expected.
-
-If
-.I free_all
-is True, all doodads in the array are freed, regardless of the value of
-.I count.
-Otherwise,
-.I count
-doodads are freed.
-.SH "RETURN VALUES"
-.TP 15
-Success
-The XkbFreeGeomDoodads function returns Success if there are no allocation
-errors.
-.SH DIAGNOSTICS
-.TP 15
-.B BadAlloc
-Unable to allocate storage
-.TP 15
-.B BadValue
-An argument is out of range
+.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the "Software"),
+.\" to deal in the Software without restriction, including without limitation
+.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
+.\" and/or sell copies of the Software, and to permit persons to whom the
+.\" Software is furnished to do so, subject to the following conditions:
+.\"
+.\" The above copyright notice and this permission notice (including the next
+.\" paragraph) shall be included in all copies or substantial portions of the
+.\" Software.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+.\" DEALINGS IN THE SOFTWARE.
+.\"
+.TH XkbFreeGeomDoodads __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbFreeGeomDoodads \- Free geometry doodads
+.SH SYNOPSIS
+.HP
+.B void XkbFreeGeomDoodads
+.BI "(\^XkbDoodadPtr " "doodads" "\^,"
+.BI "int " "count" "\^,"
+.BI "Bool " "free_all" "\^);"
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- doodads
+doodads to be freed
+.TP
+.I \- count
+number of doodads to be freed
+.TP
+.I \- free_all
+True => all doodads are freed
+.SH DESCRIPTION
+.LP
+Xkb provides a number of functions to allocate and free subcomponents of a
+keyboard geometry. Use these functions to create or modify keyboard geometries.
+Note that these functions merely allocate space for the new element(s), and it
+is up to you to fill in the values explicitly in your code. These allocation
+functions increase
+.I sz_*
+but never touch
+.I num_*
+(unless there is an allocation failure, in which case they reset both
+.I sz_*
+and
+.I num_*
+to zero). These functions return Success if they succeed, BadAlloc if they are
+not able to allocate space, or BadValue if a parameter is not as expected.
+
+If
+.I free_all
+is True, all doodads in the array are freed, regardless of the value of
+.I count.
+Otherwise,
+.I count
+doodads are freed.
+.SH "RETURN VALUES"
+.TP 15
+Success
+The XkbFreeGeomDoodads function returns Success if there are no allocation
+errors.
+.SH DIAGNOSTICS
+.TP 15
+.B BadAlloc
+Unable to allocate storage
+.TP 15
+.B BadValue
+An argument is out of range
diff --git a/libX11/man/xkb/XkbFreeGeomKeyAliases.man b/libX11/man/xkb/XkbFreeGeomKeyAliases.man
index 3a468feec..15ad0b24b 100644
--- a/libX11/man/xkb/XkbFreeGeomKeyAliases.man
+++ b/libX11/man/xkb/XkbFreeGeomKeyAliases.man
@@ -1,89 +1,89 @@
-.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
-.\"
-.\" Permission is hereby granted, free of charge, to any person obtaining a
-.\" copy of this software and associated documentation files (the "Software"),
-.\" to deal in the Software without restriction, including without limitation
-.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
-.\" and/or sell copies of the Software, and to permit persons to whom the
-.\" Software is furnished to do so, subject to the following conditions:
-.\"
-.\" The above copyright notice and this permission notice (including the next
-.\" paragraph) shall be included in all copies or substantial portions of the
-.\" Software.
-.\"
-.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-.\" DEALINGS IN THE SOFTWARE.
-.\"
-.TH XkbFreeGeomKeyAliases __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
-.SH NAME
-XkbFreeGeomKeyAliases \- Free geometry key aliases
-.SH SYNOPSIS
-.HP
-.B void XkbFreeGeomKeyAliases
-.BI "(\^XkbGeometryPtr " "geom" "\^,"
-.BI "int " "first" "\^,"
-.BI "int " "count" "\^,"
-.BI "Bool " "free_all" "\^);"
-.if n .ti +5n
-.if t .ti +.5i
-.SH ARGUMENTS
-.TP
-.I \- geom
-geometry in which key aliases should be freed
-.TP
-.I \- first
-first key alias to be freed
-.TP
-.I \- count
-number of key aliases to be freed
-.TP
-.I \- free_all
-True => all key aliases are freed
-.SH DESCRIPTION
-.LP
-Xkb provides a number of functions to allocate and free subcomponents of a
-keyboard geometry. Use these functions to create or modify keyboard geometries.
-Note that these functions merely allocate space for the new element(s), and it
-is up to you to fill in the values explicitly in your code. These allocation
-functions increase
-.I sz_*
-but never touch
-.I num_*
-(unless there is an allocation failure, in which case they reset both
-.I sz_*
-and
-.I num_*
-to zero). These functions return Success if they succeed, BadAlloc if they are
-not able to allocate space, or BadValue if a parameter is not as expected.
-
-If
-.I free_all
-is True, all aliases in the top level of the specified geometry
-.I geom
-are freed regardless of the value of
-.I first
-or
-.I count.
-Otherwise,
-.I count
-aliases in
-.I geom
-are freed beginning with the one specified by
-.I first.
-.SH "RETURN VALUES"
-.TP 15
-Success
-The XkbFreeGeomKeyAliases function returns Success if there are no allocation
-errors.
-.SH DIAGNOSTICS
-.TP 15
-.B BadAlloc
-Unable to allocate storage
-.TP 15
-.B BadValue
-An argument is out of range
+.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the "Software"),
+.\" to deal in the Software without restriction, including without limitation
+.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
+.\" and/or sell copies of the Software, and to permit persons to whom the
+.\" Software is furnished to do so, subject to the following conditions:
+.\"
+.\" The above copyright notice and this permission notice (including the next
+.\" paragraph) shall be included in all copies or substantial portions of the
+.\" Software.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+.\" DEALINGS IN THE SOFTWARE.
+.\"
+.TH XkbFreeGeomKeyAliases __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbFreeGeomKeyAliases \- Free geometry key aliases
+.SH SYNOPSIS
+.HP
+.B void XkbFreeGeomKeyAliases
+.BI "(\^XkbGeometryPtr " "geom" "\^,"
+.BI "int " "first" "\^,"
+.BI "int " "count" "\^,"
+.BI "Bool " "free_all" "\^);"
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- geom
+geometry in which key aliases should be freed
+.TP
+.I \- first
+first key alias to be freed
+.TP
+.I \- count
+number of key aliases to be freed
+.TP
+.I \- free_all
+True => all key aliases are freed
+.SH DESCRIPTION
+.LP
+Xkb provides a number of functions to allocate and free subcomponents of a
+keyboard geometry. Use these functions to create or modify keyboard geometries.
+Note that these functions merely allocate space for the new element(s), and it
+is up to you to fill in the values explicitly in your code. These allocation
+functions increase
+.I sz_*
+but never touch
+.I num_*
+(unless there is an allocation failure, in which case they reset both
+.I sz_*
+and
+.I num_*
+to zero). These functions return Success if they succeed, BadAlloc if they are
+not able to allocate space, or BadValue if a parameter is not as expected.
+
+If
+.I free_all
+is True, all aliases in the top level of the specified geometry
+.I geom
+are freed regardless of the value of
+.I first
+or
+.I count.
+Otherwise,
+.I count
+aliases in
+.I geom
+are freed beginning with the one specified by
+.I first.
+.SH "RETURN VALUES"
+.TP 15
+Success
+The XkbFreeGeomKeyAliases function returns Success if there are no allocation
+errors.
+.SH DIAGNOSTICS
+.TP 15
+.B BadAlloc
+Unable to allocate storage
+.TP 15
+.B BadValue
+An argument is out of range
diff --git a/libX11/man/xkb/XkbFreeGeomKeys.man b/libX11/man/xkb/XkbFreeGeomKeys.man
index 6cca62fc6..a99e2d496 100644
--- a/libX11/man/xkb/XkbFreeGeomKeys.man
+++ b/libX11/man/xkb/XkbFreeGeomKeys.man
@@ -1,58 +1,58 @@
-.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
-.\"
-.\" Permission is hereby granted, free of charge, to any person obtaining a
-.\" copy of this software and associated documentation files (the "Software"),
-.\" to deal in the Software without restriction, including without limitation
-.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
-.\" and/or sell copies of the Software, and to permit persons to whom the
-.\" Software is furnished to do so, subject to the following conditions:
-.\"
-.\" The above copyright notice and this permission notice (including the next
-.\" paragraph) shall be included in all copies or substantial portions of the
-.\" Software.
-.\"
-.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-.\" DEALINGS IN THE SOFTWARE.
-.\"
-.TH XkbFreeGeomKeys __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
-.SH NAME
-XkbFreeGeomKeys \- Free geometry keys
-.SH SYNOPSIS
-.HP
-.B void XkbFreeGeomKeys
-.BI "(\^XkbRowPtr " "row" "\^,"
-.BI "int " "first" "\^,"
-.BI "int " "count" "\^,"
-.BI "Bool " "free_all" "\^);"
-.if n .ti +5n
-.if t .ti +.5i
-.SH ARGUMENTS
-.TP
-.I \- row
-row in which keys should be freed
-.TP
-.I \- first
-first key to be freed
-.TP
-.I \- count
-number of keys to be freed
-.TP
-.I \- free_all
-True => all keys are freed
-.SH DESCRIPTION
-.LP
-If
-.I free_all
-is True, all keys are freed regardless of the value of
-.I first
-or
-.I count.
-Otherwise,
-.I count
-keys are freed beginning with the one specified by
-.I first.
+.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the "Software"),
+.\" to deal in the Software without restriction, including without limitation
+.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
+.\" and/or sell copies of the Software, and to permit persons to whom the
+.\" Software is furnished to do so, subject to the following conditions:
+.\"
+.\" The above copyright notice and this permission notice (including the next
+.\" paragraph) shall be included in all copies or substantial portions of the
+.\" Software.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+.\" DEALINGS IN THE SOFTWARE.
+.\"
+.TH XkbFreeGeomKeys __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbFreeGeomKeys \- Free geometry keys
+.SH SYNOPSIS
+.HP
+.B void XkbFreeGeomKeys
+.BI "(\^XkbRowPtr " "row" "\^,"
+.BI "int " "first" "\^,"
+.BI "int " "count" "\^,"
+.BI "Bool " "free_all" "\^);"
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- row
+row in which keys should be freed
+.TP
+.I \- first
+first key to be freed
+.TP
+.I \- count
+number of keys to be freed
+.TP
+.I \- free_all
+True => all keys are freed
+.SH DESCRIPTION
+.LP
+If
+.I free_all
+is True, all keys are freed regardless of the value of
+.I first
+or
+.I count.
+Otherwise,
+.I count
+keys are freed beginning with the one specified by
+.I first.
diff --git a/libX11/man/xkb/XkbFreeGeomOutlines.man b/libX11/man/xkb/XkbFreeGeomOutlines.man
index 4ef694a94..0aa5a3431 100644
--- a/libX11/man/xkb/XkbFreeGeomOutlines.man
+++ b/libX11/man/xkb/XkbFreeGeomOutlines.man
@@ -1,58 +1,58 @@
-.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
-.\"
-.\" Permission is hereby granted, free of charge, to any person obtaining a
-.\" copy of this software and associated documentation files (the "Software"),
-.\" to deal in the Software without restriction, including without limitation
-.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
-.\" and/or sell copies of the Software, and to permit persons to whom the
-.\" Software is furnished to do so, subject to the following conditions:
-.\"
-.\" The above copyright notice and this permission notice (including the next
-.\" paragraph) shall be included in all copies or substantial portions of the
-.\" Software.
-.\"
-.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-.\" DEALINGS IN THE SOFTWARE.
-.\"
-.TH XkbFreeGeomOutlines __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
-.SH NAME
-XkbFreeGeomOutlines \- Free geometry outlines
-.SH SYNOPSIS
-.HP
-.B void XkbFreeGeomOutlines
-.BI "(\^XkbShapePtr " "shape" "\^,"
-.BI "int " "first" "\^,"
-.BI "int " "count" "\^,"
-.BI "Bool " "free_all" "\^);"
-.if n .ti +5n
-.if t .ti +.5i
-.SH ARGUMENTS
-.TP
-.I \- shape
-shape in which outlines should be freed
-.TP
-.I \- first
-first outline to be freed
-.TP
-.I \- count
-number of outlines to be freed
-.TP
-.I \- free_all
-True => all outlines are freed
-.SH DESCRIPTION
-.LP
-If
-.I free_all
-is True, all outlines are freed regardless of the value of
-.I first
-or
-.I count.
-Otherwise,
-.I count
-outlines are freed beginning with the one specified by
-.I first.
+.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the "Software"),
+.\" to deal in the Software without restriction, including without limitation
+.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
+.\" and/or sell copies of the Software, and to permit persons to whom the
+.\" Software is furnished to do so, subject to the following conditions:
+.\"
+.\" The above copyright notice and this permission notice (including the next
+.\" paragraph) shall be included in all copies or substantial portions of the
+.\" Software.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+.\" DEALINGS IN THE SOFTWARE.
+.\"
+.TH XkbFreeGeomOutlines __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbFreeGeomOutlines \- Free geometry outlines
+.SH SYNOPSIS
+.HP
+.B void XkbFreeGeomOutlines
+.BI "(\^XkbShapePtr " "shape" "\^,"
+.BI "int " "first" "\^,"
+.BI "int " "count" "\^,"
+.BI "Bool " "free_all" "\^);"
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- shape
+shape in which outlines should be freed
+.TP
+.I \- first
+first outline to be freed
+.TP
+.I \- count
+number of outlines to be freed
+.TP
+.I \- free_all
+True => all outlines are freed
+.SH DESCRIPTION
+.LP
+If
+.I free_all
+is True, all outlines are freed regardless of the value of
+.I first
+or
+.I count.
+Otherwise,
+.I count
+outlines are freed beginning with the one specified by
+.I first.
diff --git a/libX11/man/xkb/XkbFreeGeomOverlayKeys.man b/libX11/man/xkb/XkbFreeGeomOverlayKeys.man
index e417bd99c..f4fb4dcbd 100644
--- a/libX11/man/xkb/XkbFreeGeomOverlayKeys.man
+++ b/libX11/man/xkb/XkbFreeGeomOverlayKeys.man
@@ -1,86 +1,86 @@
-.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
-.\"
-.\" Permission is hereby granted, free of charge, to any person obtaining a
-.\" copy of this software and associated documentation files (the "Software"),
-.\" to deal in the Software without restriction, including without limitation
-.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
-.\" and/or sell copies of the Software, and to permit persons to whom the
-.\" Software is furnished to do so, subject to the following conditions:
-.\"
-.\" The above copyright notice and this permission notice (including the next
-.\" paragraph) shall be included in all copies or substantial portions of the
-.\" Software.
-.\"
-.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-.\" DEALINGS IN THE SOFTWARE.
-.\"
-.TH XkbFreeGeomOverlayKeys __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
-.SH NAME
-XkbFreeGeomOverlayKeys \- Free keys in an overlay row
-.SH SYNOPSIS
-.HP
-.B void XkbFreeGeomOverlayKeys
-.BI "(\^XkbRowPtr " "row" "\^,"
-.BI "int " "first" "\^,"
-.BI "int " "count" "\^,"
-.BI "Bool " "free_all" "\^);"
-.if n .ti +5n
-.if t .ti +.5i
-.SH ARGUMENTS
-.TP
-.I \- row
-row in which keys should be freed
-.TP
-.I \- first
-first key to be freed
-.TP
-.I \- count
-number of keys to be freed
-.TP
-.I \- free_all
-True => all keys are freed
-.SH DESCRIPTION
-.LP
-Xkb provides a number of functions to allocate and free subcomponents of a
-keyboard geometry. Use these functions to create or modify keyboard geometries.
-Note that these functions merely allocate space for the new element(s), and it
-is up to you to fill in the values explicitly in your code. These allocation
-functions increase
-.I sz_*
-but never touch
-.I num_*
-(unless there is an allocation failure, in which case they reset both
-.I sz_*
-and
-.I num_*
-to zero). These functions return Success if they succeed, BadAlloc if they are
-not able to allocate space, or BadValue if a parameter is not as expected.
-
-If
-.I free_all
-is True, all keys are freed regardless of the value of
-.I first
-and
-.I count.
-Otherwise, the number of keys specified by
-.I count
-are freed, beginning with the key specified by
-.I first
-in the specified row.
-.SH "RETURN VALUES"
-.TP 15
-Success
-The XkbFreeGeomOverlayKeys function returns Success if there are no allocation
-or argument errors.
-.SH DIAGNOSTICS
-.TP 15
-.B BadAlloc
-Unable to allocate storage
-.TP 15
-.B BadValue
-An argument is out of range
+.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the "Software"),
+.\" to deal in the Software without restriction, including without limitation
+.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
+.\" and/or sell copies of the Software, and to permit persons to whom the
+.\" Software is furnished to do so, subject to the following conditions:
+.\"
+.\" The above copyright notice and this permission notice (including the next
+.\" paragraph) shall be included in all copies or substantial portions of the
+.\" Software.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+.\" DEALINGS IN THE SOFTWARE.
+.\"
+.TH XkbFreeGeomOverlayKeys __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbFreeGeomOverlayKeys \- Free keys in an overlay row
+.SH SYNOPSIS
+.HP
+.B void XkbFreeGeomOverlayKeys
+.BI "(\^XkbRowPtr " "row" "\^,"
+.BI "int " "first" "\^,"
+.BI "int " "count" "\^,"
+.BI "Bool " "free_all" "\^);"
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- row
+row in which keys should be freed
+.TP
+.I \- first
+first key to be freed
+.TP
+.I \- count
+number of keys to be freed
+.TP
+.I \- free_all
+True => all keys are freed
+.SH DESCRIPTION
+.LP
+Xkb provides a number of functions to allocate and free subcomponents of a
+keyboard geometry. Use these functions to create or modify keyboard geometries.
+Note that these functions merely allocate space for the new element(s), and it
+is up to you to fill in the values explicitly in your code. These allocation
+functions increase
+.I sz_*
+but never touch
+.I num_*
+(unless there is an allocation failure, in which case they reset both
+.I sz_*
+and
+.I num_*
+to zero). These functions return Success if they succeed, BadAlloc if they are
+not able to allocate space, or BadValue if a parameter is not as expected.
+
+If
+.I free_all
+is True, all keys are freed regardless of the value of
+.I first
+and
+.I count.
+Otherwise, the number of keys specified by
+.I count
+are freed, beginning with the key specified by
+.I first
+in the specified row.
+.SH "RETURN VALUES"
+.TP 15
+Success
+The XkbFreeGeomOverlayKeys function returns Success if there are no allocation
+or argument errors.
+.SH DIAGNOSTICS
+.TP 15
+.B BadAlloc
+Unable to allocate storage
+.TP 15
+.B BadValue
+An argument is out of range
diff --git a/libX11/man/xkb/XkbFreeGeomOverlayRows.man b/libX11/man/xkb/XkbFreeGeomOverlayRows.man
index b2549286e..0371c017e 100644
--- a/libX11/man/xkb/XkbFreeGeomOverlayRows.man
+++ b/libX11/man/xkb/XkbFreeGeomOverlayRows.man
@@ -1,86 +1,86 @@
-.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
-.\"
-.\" Permission is hereby granted, free of charge, to any person obtaining a
-.\" copy of this software and associated documentation files (the "Software"),
-.\" to deal in the Software without restriction, including without limitation
-.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
-.\" and/or sell copies of the Software, and to permit persons to whom the
-.\" Software is furnished to do so, subject to the following conditions:
-.\"
-.\" The above copyright notice and this permission notice (including the next
-.\" paragraph) shall be included in all copies or substantial portions of the
-.\" Software.
-.\"
-.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-.\" DEALINGS IN THE SOFTWARE.
-.\"
-.TH XkbFreeGeomOverlayRows __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
-.SH NAME
-XkbFreeGeomOverlayRows \- Free rows in an overlay
-.SH SYNOPSIS
-.HP
-.B void XkbFreeGeomOverlayRows
-.BI "(\^XkbSectionPtr " "overlay" "\^,"
-.BI "int " "first" "\^,"
-.BI "int " "count" "\^,"
-.BI "Bool " "free_all" "\^);"
-.if n .ti +5n
-.if t .ti +.5i
-.SH ARGUMENTS
-.TP
-.I \- overlay
-section in which rows should be freed
-.TP
-.I \- first
-first row to be freed
-.TP
-.I \- count
-number of rows to be freed
-.TP
-.I \- free_all
-True => all rows are freed
-.SH DESCRIPTION
-.LP
-Xkb provides a number of functions to allocate and free subcomponents of a
-keyboard geometry. Use these functions to create or modify keyboard geometries.
-Note that these functions merely allocate space for the new element(s), and it
-is up to you to fill in the values explicitly in your code. These allocation
-functions increase
-.I sz_*
-but never touch
-.I num_*
-(unless there is an allocation failure, in which case they reset both
-.I sz_*
-and
-.I num_*
-to zero). These functions return Success if they succeed, BadAlloc if they are
-not able to allocate space, or BadValue if a parameter is not as expected.
-
-If
-.I free_all
-is True, all rows are freed regardless of the value of
-.I first
-and
-.I count.
-Otherwise, the number of rows specified by
-.I count
-are freed, beginning with the row specified by
-.I first
-in the specified overlay.
-.SH "RETURN VALUES"
-.TP 15
-Success
-The XkbFreeGeomOverlayRows function returns Success if there are no allocation
-or argument errors.
-.SH DIAGNOSTICS
-.TP 15
-.B BadAlloc
-Unable to allocate storage
-.TP 15
-.B BadValue
-An argument is out of range
+.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the "Software"),
+.\" to deal in the Software without restriction, including without limitation
+.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
+.\" and/or sell copies of the Software, and to permit persons to whom the
+.\" Software is furnished to do so, subject to the following conditions:
+.\"
+.\" The above copyright notice and this permission notice (including the next
+.\" paragraph) shall be included in all copies or substantial portions of the
+.\" Software.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+.\" DEALINGS IN THE SOFTWARE.
+.\"
+.TH XkbFreeGeomOverlayRows __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbFreeGeomOverlayRows \- Free rows in an overlay
+.SH SYNOPSIS
+.HP
+.B void XkbFreeGeomOverlayRows
+.BI "(\^XkbSectionPtr " "overlay" "\^,"
+.BI "int " "first" "\^,"
+.BI "int " "count" "\^,"
+.BI "Bool " "free_all" "\^);"
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- overlay
+section in which rows should be freed
+.TP
+.I \- first
+first row to be freed
+.TP
+.I \- count
+number of rows to be freed
+.TP
+.I \- free_all
+True => all rows are freed
+.SH DESCRIPTION
+.LP
+Xkb provides a number of functions to allocate and free subcomponents of a
+keyboard geometry. Use these functions to create or modify keyboard geometries.
+Note that these functions merely allocate space for the new element(s), and it
+is up to you to fill in the values explicitly in your code. These allocation
+functions increase
+.I sz_*
+but never touch
+.I num_*
+(unless there is an allocation failure, in which case they reset both
+.I sz_*
+and
+.I num_*
+to zero). These functions return Success if they succeed, BadAlloc if they are
+not able to allocate space, or BadValue if a parameter is not as expected.
+
+If
+.I free_all
+is True, all rows are freed regardless of the value of
+.I first
+and
+.I count.
+Otherwise, the number of rows specified by
+.I count
+are freed, beginning with the row specified by
+.I first
+in the specified overlay.
+.SH "RETURN VALUES"
+.TP 15
+Success
+The XkbFreeGeomOverlayRows function returns Success if there are no allocation
+or argument errors.
+.SH DIAGNOSTICS
+.TP 15
+.B BadAlloc
+Unable to allocate storage
+.TP 15
+.B BadValue
+An argument is out of range
diff --git a/libX11/man/xkb/XkbFreeGeomOverlays.man b/libX11/man/xkb/XkbFreeGeomOverlays.man
index a8b54605d..399df3c07 100644
--- a/libX11/man/xkb/XkbFreeGeomOverlays.man
+++ b/libX11/man/xkb/XkbFreeGeomOverlays.man
@@ -1,86 +1,86 @@
-.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
-.\"
-.\" Permission is hereby granted, free of charge, to any person obtaining a
-.\" copy of this software and associated documentation files (the "Software"),
-.\" to deal in the Software without restriction, including without limitation
-.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
-.\" and/or sell copies of the Software, and to permit persons to whom the
-.\" Software is furnished to do so, subject to the following conditions:
-.\"
-.\" The above copyright notice and this permission notice (including the next
-.\" paragraph) shall be included in all copies or substantial portions of the
-.\" Software.
-.\"
-.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-.\" DEALINGS IN THE SOFTWARE.
-.\"
-.TH XkbFreeGeomOverlays __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
-.SH NAME
-XkbFreeGeomOverlays \- Free rows in a section
-.SH SYNOPSIS
-.HP
-.B void XkbFreeGeomOverlays
-.BI "(\^XkbSectionPtr " "section" "\^,"
-.BI "int " "first" "\^,"
-.BI "int " "count" "\^,"
-.BI "Bool " "free_all" "\^);"
-.if n .ti +5n
-.if t .ti +.5i
-.SH ARGUMENTS
-.TP
-.I \- section
-section in which overlays should be freed
-.TP
-.I \- first
-first overlay to be freed
-.TP
-.I \- count
-number of overlays to be freed
-.TP
-.I \- free_all
-True => all overlays are freed
-.SH DESCRIPTION
-.LP
-Xkb provides a number of functions to allocate and free subcomponents of a
-keyboard geometry. Use these functions to create or modify keyboard geometries.
-Note that these functions merely allocate space for the new element(s), and it
-is up to you to fill in the values explicitly in your code. These allocation
-functions increase
-.I sz_*
-but never touch
-.I num_*
-(unless there is an allocation failure, in which case they reset both
-.I sz_*
-and
-.I num_*
-to zero). These functions return Success if they succeed, BadAlloc if they are
-not able to allocate space, or BadValue if a parameter is not as expected.
-
-If
-.I free_all
-is True, all overlays are freed regardless of the value of
-.I first
-and
-.I count.
-Otherwise, the number of overlays specified by
-.I count
-are freed, beginning with the overlay specified by
-.I first
-in the specified section.
-.SH "RETURN VALUES"
-.TP 15
-Success
-The XkbFreeGeomOverlays functions returns Success if there are no allocation or
-argument errors.
-.SH DIAGNOSTICS
-.TP 15
-.B BadAlloc
-Unable to allocate storage
-.TP 15
-.B BadValue
-An argument is out of range
+.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the "Software"),
+.\" to deal in the Software without restriction, including without limitation
+.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
+.\" and/or sell copies of the Software, and to permit persons to whom the
+.\" Software is furnished to do so, subject to the following conditions:
+.\"
+.\" The above copyright notice and this permission notice (including the next
+.\" paragraph) shall be included in all copies or substantial portions of the
+.\" Software.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+.\" DEALINGS IN THE SOFTWARE.
+.\"
+.TH XkbFreeGeomOverlays __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbFreeGeomOverlays \- Free rows in a section
+.SH SYNOPSIS
+.HP
+.B void XkbFreeGeomOverlays
+.BI "(\^XkbSectionPtr " "section" "\^,"
+.BI "int " "first" "\^,"
+.BI "int " "count" "\^,"
+.BI "Bool " "free_all" "\^);"
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- section
+section in which overlays should be freed
+.TP
+.I \- first
+first overlay to be freed
+.TP
+.I \- count
+number of overlays to be freed
+.TP
+.I \- free_all
+True => all overlays are freed
+.SH DESCRIPTION
+.LP
+Xkb provides a number of functions to allocate and free subcomponents of a
+keyboard geometry. Use these functions to create or modify keyboard geometries.
+Note that these functions merely allocate space for the new element(s), and it
+is up to you to fill in the values explicitly in your code. These allocation
+functions increase
+.I sz_*
+but never touch
+.I num_*
+(unless there is an allocation failure, in which case they reset both
+.I sz_*
+and
+.I num_*
+to zero). These functions return Success if they succeed, BadAlloc if they are
+not able to allocate space, or BadValue if a parameter is not as expected.
+
+If
+.I free_all
+is True, all overlays are freed regardless of the value of
+.I first
+and
+.I count.
+Otherwise, the number of overlays specified by
+.I count
+are freed, beginning with the overlay specified by
+.I first
+in the specified section.
+.SH "RETURN VALUES"
+.TP 15
+Success
+The XkbFreeGeomOverlays functions returns Success if there are no allocation or
+argument errors.
+.SH DIAGNOSTICS
+.TP 15
+.B BadAlloc
+Unable to allocate storage
+.TP 15
+.B BadValue
+An argument is out of range
diff --git a/libX11/man/xkb/XkbFreeGeomPoints.man b/libX11/man/xkb/XkbFreeGeomPoints.man
index 5cba3e91f..7f6219153 100644
--- a/libX11/man/xkb/XkbFreeGeomPoints.man
+++ b/libX11/man/xkb/XkbFreeGeomPoints.man
@@ -1,86 +1,86 @@
-.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
-.\"
-.\" Permission is hereby granted, free of charge, to any person obtaining a
-.\" copy of this software and associated documentation files (the "Software"),
-.\" to deal in the Software without restriction, including without limitation
-.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
-.\" and/or sell copies of the Software, and to permit persons to whom the
-.\" Software is furnished to do so, subject to the following conditions:
-.\"
-.\" The above copyright notice and this permission notice (including the next
-.\" paragraph) shall be included in all copies or substantial portions of the
-.\" Software.
-.\"
-.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-.\" DEALINGS IN THE SOFTWARE.
-.\"
-.TH XkbFreeGeomPoints __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
-.SH NAME
-XkbFreeGeomPoints \- Free points in a outline
-.SH SYNOPSIS
-.HP
-.B void XkbFreeGeomPoints
-.BI "(\^XkbOutlinePtr " "outline" "\^,"
-.BI "int " "first" "\^,"
-.BI "int " "count" "\^,"
-.BI "Bool " "free_all" "\^);"
-.if n .ti +5n
-.if t .ti +.5i
-.SH ARGUMENTS
-.TP
-.I \- outline
-outline in which points should be freed
-.TP
-.I \- first
-first point to be freed
-.TP
-.I \- count
-number of points to be freed
-.TP
-.I \- free_all
-True => all points are freed
-.SH DESCRIPTION
-.LP
-Xkb provides a number of functions to allocate and free subcomponents of a
-keyboard geometry. Use these functions to create or modify keyboard geometries.
-Note that these functions merely allocate space for the new element(s), and it
-is up to you to fill in the values explicitly in your code. These allocation
-functions increase
-.I sz_*
-but never touch
-.I num_*
-(unless there is an allocation failure, in which case they reset both
-.I sz_*
-and
-.I num_*
-to zero). These functions return Success if they succeed, BadAlloc if they are
-not able to allocate space, or BadValue if a parameter is not as expected.
-
-If
-.I free_all
-is True, all points are freed regardless of the value of
->i first
-and
-.I count.
-Otherwise, the number of points specified by
-.I count
-are freed, beginning with the point specified by
-.I first
-in the specified outline.
-.SH "RETURN VALUES"
-.TP 15
-Success
-The XkbFreeGeomPoints function returns Success when there are no allocation or
-argument errors.
-.SH DIAGNOSTICS
-.TP 15
-.B BadAlloc
-Unable to allocate storage
-.TP 15
-.B BadValue
-An argument is out of range
+.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the "Software"),
+.\" to deal in the Software without restriction, including without limitation
+.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
+.\" and/or sell copies of the Software, and to permit persons to whom the
+.\" Software is furnished to do so, subject to the following conditions:
+.\"
+.\" The above copyright notice and this permission notice (including the next
+.\" paragraph) shall be included in all copies or substantial portions of the
+.\" Software.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+.\" DEALINGS IN THE SOFTWARE.
+.\"
+.TH XkbFreeGeomPoints __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbFreeGeomPoints \- Free points in a outline
+.SH SYNOPSIS
+.HP
+.B void XkbFreeGeomPoints
+.BI "(\^XkbOutlinePtr " "outline" "\^,"
+.BI "int " "first" "\^,"
+.BI "int " "count" "\^,"
+.BI "Bool " "free_all" "\^);"
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- outline
+outline in which points should be freed
+.TP
+.I \- first
+first point to be freed
+.TP
+.I \- count
+number of points to be freed
+.TP
+.I \- free_all
+True => all points are freed
+.SH DESCRIPTION
+.LP
+Xkb provides a number of functions to allocate and free subcomponents of a
+keyboard geometry. Use these functions to create or modify keyboard geometries.
+Note that these functions merely allocate space for the new element(s), and it
+is up to you to fill in the values explicitly in your code. These allocation
+functions increase
+.I sz_*
+but never touch
+.I num_*
+(unless there is an allocation failure, in which case they reset both
+.I sz_*
+and
+.I num_*
+to zero). These functions return Success if they succeed, BadAlloc if they are
+not able to allocate space, or BadValue if a parameter is not as expected.
+
+If
+.I free_all
+is True, all points are freed regardless of the value of
+>i first
+and
+.I count.
+Otherwise, the number of points specified by
+.I count
+are freed, beginning with the point specified by
+.I first
+in the specified outline.
+.SH "RETURN VALUES"
+.TP 15
+Success
+The XkbFreeGeomPoints function returns Success when there are no allocation or
+argument errors.
+.SH DIAGNOSTICS
+.TP 15
+.B BadAlloc
+Unable to allocate storage
+.TP 15
+.B BadValue
+An argument is out of range
diff --git a/libX11/man/xkb/XkbFreeGeomProperties.man b/libX11/man/xkb/XkbFreeGeomProperties.man
index 0fdfca8ab..b1d9b92a3 100644
--- a/libX11/man/xkb/XkbFreeGeomProperties.man
+++ b/libX11/man/xkb/XkbFreeGeomProperties.man
@@ -1,85 +1,85 @@
-.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
-.\"
-.\" Permission is hereby granted, free of charge, to any person obtaining a
-.\" copy of this software and associated documentation files (the "Software"),
-.\" to deal in the Software without restriction, including without limitation
-.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
-.\" and/or sell copies of the Software, and to permit persons to whom the
-.\" Software is furnished to do so, subject to the following conditions:
-.\"
-.\" The above copyright notice and this permission notice (including the next
-.\" paragraph) shall be included in all copies or substantial portions of the
-.\" Software.
-.\"
-.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-.\" DEALINGS IN THE SOFTWARE.
-.\"
-.TH XkbFreeGeomProperties __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
-.SH NAME
-XkbFreeGeomProperties \- Free geometry properties
-.SH SYNOPSIS
-.HP
-.B void XkbFreeGeomProperties
-.BI "(\^XkbGeometryPtr " "geom" "\^,"
-.BI "int " "first" "\^,"
-.BI "int " "count" "\^,"
-.BI "Bool *" "free_all" "\^);"
-.if n .ti +5n
-.if t .ti +.5i
-.SH ARGUMENTS
-.TP
-.I \- geom
-geometry in which properties should be freed
-.TP
-.I \- first
-first property to be freed
-.TP
-.I \- count
-number of properties to be freed
-.TP
-.I \- free_all
-True => all properties are freed
-.SH DESCRIPTION
-.LP
-Xkb provides a number of functions to allocate and free subcomponents of a
-keyboard geometry. Use these functions to create or modify keyboard geometries.
-Note that these functions merely allocate space for the new element(s), and it
-is up to you to fill in the values explicitly in your code. These allocation
-functions increase
-.I sz_*
-but never touch
-.I num_*
-(unless there is an allocation failure, in which case they reset both
-.I sz_*
-and
-.I num_*
-to zero). These functions return Success if they succeed, BadAlloc if they are
-not able to allocate space, or BadValue if a parameter is not as expected.
-
-If
-.I free_all
-is True, all properties are freed regardless of the value of
-.I first
-or
-.I count.
-Otherwise,
-.I count
-properties are freed beginning with the one specified by
-.I first.
-.SH "RETURN VALUES"
-.TP 15
-Success
-The XkbFreeGeomProperties function returns Success when there are no allocation
-or argument errors.
-.SH DIAGNOSTICS
-.TP 15
-.B BadAlloc
-Unable to allocate storage
-.TP 15
-.B BadValue
-An argument is out of range
+.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the "Software"),
+.\" to deal in the Software without restriction, including without limitation
+.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
+.\" and/or sell copies of the Software, and to permit persons to whom the
+.\" Software is furnished to do so, subject to the following conditions:
+.\"
+.\" The above copyright notice and this permission notice (including the next
+.\" paragraph) shall be included in all copies or substantial portions of the
+.\" Software.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+.\" DEALINGS IN THE SOFTWARE.
+.\"
+.TH XkbFreeGeomProperties __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbFreeGeomProperties \- Free geometry properties
+.SH SYNOPSIS
+.HP
+.B void XkbFreeGeomProperties
+.BI "(\^XkbGeometryPtr " "geom" "\^,"
+.BI "int " "first" "\^,"
+.BI "int " "count" "\^,"
+.BI "Bool *" "free_all" "\^);"
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- geom
+geometry in which properties should be freed
+.TP
+.I \- first
+first property to be freed
+.TP
+.I \- count
+number of properties to be freed
+.TP
+.I \- free_all
+True => all properties are freed
+.SH DESCRIPTION
+.LP
+Xkb provides a number of functions to allocate and free subcomponents of a
+keyboard geometry. Use these functions to create or modify keyboard geometries.
+Note that these functions merely allocate space for the new element(s), and it
+is up to you to fill in the values explicitly in your code. These allocation
+functions increase
+.I sz_*
+but never touch
+.I num_*
+(unless there is an allocation failure, in which case they reset both
+.I sz_*
+and
+.I num_*
+to zero). These functions return Success if they succeed, BadAlloc if they are
+not able to allocate space, or BadValue if a parameter is not as expected.
+
+If
+.I free_all
+is True, all properties are freed regardless of the value of
+.I first
+or
+.I count.
+Otherwise,
+.I count
+properties are freed beginning with the one specified by
+.I first.
+.SH "RETURN VALUES"
+.TP 15
+Success
+The XkbFreeGeomProperties function returns Success when there are no allocation
+or argument errors.
+.SH DIAGNOSTICS
+.TP 15
+.B BadAlloc
+Unable to allocate storage
+.TP 15
+.B BadValue
+An argument is out of range
diff --git a/libX11/man/xkb/XkbFreeGeomRows.man b/libX11/man/xkb/XkbFreeGeomRows.man
index be4e1f501..ceb489a28 100644
--- a/libX11/man/xkb/XkbFreeGeomRows.man
+++ b/libX11/man/xkb/XkbFreeGeomRows.man
@@ -1,86 +1,86 @@
-.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
-.\"
-.\" Permission is hereby granted, free of charge, to any person obtaining a
-.\" copy of this software and associated documentation files (the "Software"),
-.\" to deal in the Software without restriction, including without limitation
-.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
-.\" and/or sell copies of the Software, and to permit persons to whom the
-.\" Software is furnished to do so, subject to the following conditions:
-.\"
-.\" The above copyright notice and this permission notice (including the next
-.\" paragraph) shall be included in all copies or substantial portions of the
-.\" Software.
-.\"
-.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-.\" DEALINGS IN THE SOFTWARE.
-.\"
-.TH XkbFreeGeomRows __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
-.SH NAME
-XkbFreeGeomRows \- Free rows in a section
-.SH SYNOPSIS
-.HP
-.B void XkbFreeGeomRows
-.BI "(\^XkbSectionPtr " "section" "\^,"
-.BI "int " "first" "\^,"
-.BI "int " "count" "\^,"
-.BI "Bool " "free_all" "\^);"
-.if n .ti +5n
-.if t .ti +.5i
-.SH ARGUMENTS
-.TP
-.I \- section
-section in which rows should be freed
-.TP
-.I \- first
-first row to be freed
-.TP
-.I \- count
-number of rows to be freed
-.TP
-.I \- free_all
-True => all rows are freed
-.SH DESCRIPTION
-.LP
-Xkb provides a number of functions to allocate and free subcomponents of a
-keyboard geometry. Use these functions to create or modify keyboard geometries.
-Note that these functions merely allocate space for the new element(s), and it
-is up to you to fill in the values explicitly in your code. These allocation
-functions increase
-.I sz_*
-but never touch
-.I num_*
-(unless there is an allocation failure, in which case they reset both
-.I sz_*
-and
-.I num_*
-to zero). These functions return Success if they succeed, BadAlloc if they are
-not able to allocate space, or BadValue if a parameter is not as expected.
-
-If
-.I free_all
-is True, all rows are freed regardless of the value of
-.I first
-and
-.I count.
-Otherwise, the number of rows specified by
-.I count
-are freed, beginning with the row specified by
-.I first
-in the specified section.
-.SH "RETURN VALUES"
-.TP 15
-Success
-The XkbFreeGeomRows function returns Success when there are no allocation
-or argument errors.
-.SH DIAGNOSTICS
-.TP 15
-.B BadAlloc
-Unable to allocate storage
-.TP 15
-.B BadValue
-An argument is out of range
+.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the "Software"),
+.\" to deal in the Software without restriction, including without limitation
+.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
+.\" and/or sell copies of the Software, and to permit persons to whom the
+.\" Software is furnished to do so, subject to the following conditions:
+.\"
+.\" The above copyright notice and this permission notice (including the next
+.\" paragraph) shall be included in all copies or substantial portions of the
+.\" Software.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+.\" DEALINGS IN THE SOFTWARE.
+.\"
+.TH XkbFreeGeomRows __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbFreeGeomRows \- Free rows in a section
+.SH SYNOPSIS
+.HP
+.B void XkbFreeGeomRows
+.BI "(\^XkbSectionPtr " "section" "\^,"
+.BI "int " "first" "\^,"
+.BI "int " "count" "\^,"
+.BI "Bool " "free_all" "\^);"
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- section
+section in which rows should be freed
+.TP
+.I \- first
+first row to be freed
+.TP
+.I \- count
+number of rows to be freed
+.TP
+.I \- free_all
+True => all rows are freed
+.SH DESCRIPTION
+.LP
+Xkb provides a number of functions to allocate and free subcomponents of a
+keyboard geometry. Use these functions to create or modify keyboard geometries.
+Note that these functions merely allocate space for the new element(s), and it
+is up to you to fill in the values explicitly in your code. These allocation
+functions increase
+.I sz_*
+but never touch
+.I num_*
+(unless there is an allocation failure, in which case they reset both
+.I sz_*
+and
+.I num_*
+to zero). These functions return Success if they succeed, BadAlloc if they are
+not able to allocate space, or BadValue if a parameter is not as expected.
+
+If
+.I free_all
+is True, all rows are freed regardless of the value of
+.I first
+and
+.I count.
+Otherwise, the number of rows specified by
+.I count
+are freed, beginning with the row specified by
+.I first
+in the specified section.
+.SH "RETURN VALUES"
+.TP 15
+Success
+The XkbFreeGeomRows function returns Success when there are no allocation
+or argument errors.
+.SH DIAGNOSTICS
+.TP 15
+.B BadAlloc
+Unable to allocate storage
+.TP 15
+.B BadValue
+An argument is out of range
diff --git a/libX11/man/xkb/XkbFreeGeomSections.man b/libX11/man/xkb/XkbFreeGeomSections.man
index 405857b9d..f67a16a14 100644
--- a/libX11/man/xkb/XkbFreeGeomSections.man
+++ b/libX11/man/xkb/XkbFreeGeomSections.man
@@ -1,86 +1,86 @@
-.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
-.\"
-.\" Permission is hereby granted, free of charge, to any person obtaining a
-.\" copy of this software and associated documentation files (the "Software"),
-.\" to deal in the Software without restriction, including without limitation
-.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
-.\" and/or sell copies of the Software, and to permit persons to whom the
-.\" Software is furnished to do so, subject to the following conditions:
-.\"
-.\" The above copyright notice and this permission notice (including the next
-.\" paragraph) shall be included in all copies or substantial portions of the
-.\" Software.
-.\"
-.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-.\" DEALINGS IN THE SOFTWARE.
-.\"
-.TH XkbFreeGeomSections __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
-.SH NAME
-XkbFreeGeomSections \- Free geometry sections
-.SH SYNOPSIS
-.HP
-.B void XkbFreeGeomSections
-.BI "(\^XkbGeometryPtr " "geom" "\^,"
-.BI "int " "first" "\^,"
-.BI "int " "count" "\^,"
-.BI "Bool " "free_all" "\^);"
-.if n .ti +5n
-.if t .ti +.5i
-.SH ARGUMENTS
-.TP
-.I \- geom
-geometry in which sections should be freed
-.TP
-.I \- first
-first section to be freed
-.TP
-.I \- count
-number of sections to be freed
-.TP
-.I \- free_all
-True => all sections are freed
-.SH DESCRIPTION
-.LP
-Xkb provides a number of functions to allocate and free subcomponents of a
-keyboard geometry. Use these functions to create or modify keyboard geometries.
-Note that these functions merely allocate space for the new element(s), and it
-is up to you to fill in the values explicitly in your code. These allocation
-functions increase
-.I sz_*
-but never touch
-.I num_*
-(unless there is an allocation failure, in which case they reset both
-.I sz_*
-and
-.I num_*
-to zero). These functions return Success if they succeed, BadAlloc if they are
-not able to allocate space, or BadValue if a parameter is not as expected.
-
-If
-.I free_all
-is True, all sections are freed regardless of the value of
-.I first
-and
-.I count.
-Otherwise, the number of sections specified by
-.I count
-are freed, beginning with the section specified by
-.I first
-in the specified geometry.
-.SH "RETURN VALUES"
-.TP 15
-Success
-The XkbFreeGeomSections function returns Success when there are no allocation
-or argument errors.
-.SH DIAGNOSTICS
-.TP 15
-.B BadAlloc
-Unable to allocate storage
-.TP 15
-.B BadValue
-An argument is out of range
+.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the "Software"),
+.\" to deal in the Software without restriction, including without limitation
+.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
+.\" and/or sell copies of the Software, and to permit persons to whom the
+.\" Software is furnished to do so, subject to the following conditions:
+.\"
+.\" The above copyright notice and this permission notice (including the next
+.\" paragraph) shall be included in all copies or substantial portions of the
+.\" Software.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+.\" DEALINGS IN THE SOFTWARE.
+.\"
+.TH XkbFreeGeomSections __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbFreeGeomSections \- Free geometry sections
+.SH SYNOPSIS
+.HP
+.B void XkbFreeGeomSections
+.BI "(\^XkbGeometryPtr " "geom" "\^,"
+.BI "int " "first" "\^,"
+.BI "int " "count" "\^,"
+.BI "Bool " "free_all" "\^);"
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- geom
+geometry in which sections should be freed
+.TP
+.I \- first
+first section to be freed
+.TP
+.I \- count
+number of sections to be freed
+.TP
+.I \- free_all
+True => all sections are freed
+.SH DESCRIPTION
+.LP
+Xkb provides a number of functions to allocate and free subcomponents of a
+keyboard geometry. Use these functions to create or modify keyboard geometries.
+Note that these functions merely allocate space for the new element(s), and it
+is up to you to fill in the values explicitly in your code. These allocation
+functions increase
+.I sz_*
+but never touch
+.I num_*
+(unless there is an allocation failure, in which case they reset both
+.I sz_*
+and
+.I num_*
+to zero). These functions return Success if they succeed, BadAlloc if they are
+not able to allocate space, or BadValue if a parameter is not as expected.
+
+If
+.I free_all
+is True, all sections are freed regardless of the value of
+.I first
+and
+.I count.
+Otherwise, the number of sections specified by
+.I count
+are freed, beginning with the section specified by
+.I first
+in the specified geometry.
+.SH "RETURN VALUES"
+.TP 15
+Success
+The XkbFreeGeomSections function returns Success when there are no allocation
+or argument errors.
+.SH DIAGNOSTICS
+.TP 15
+.B BadAlloc
+Unable to allocate storage
+.TP 15
+.B BadValue
+An argument is out of range
diff --git a/libX11/man/xkb/XkbFreeGeomShapes.man b/libX11/man/xkb/XkbFreeGeomShapes.man
index 8bfebd99a..168860feb 100644
--- a/libX11/man/xkb/XkbFreeGeomShapes.man
+++ b/libX11/man/xkb/XkbFreeGeomShapes.man
@@ -1,85 +1,85 @@
-.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
-.\"
-.\" Permission is hereby granted, free of charge, to any person obtaining a
-.\" copy of this software and associated documentation files (the "Software"),
-.\" to deal in the Software without restriction, including without limitation
-.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
-.\" and/or sell copies of the Software, and to permit persons to whom the
-.\" Software is furnished to do so, subject to the following conditions:
-.\"
-.\" The above copyright notice and this permission notice (including the next
-.\" paragraph) shall be included in all copies or substantial portions of the
-.\" Software.
-.\"
-.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-.\" DEALINGS IN THE SOFTWARE.
-.\"
-.TH XkbFreeGeomShapes __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
-.SH NAME
-XkbFreeGeomShapes \- Free geometry shapes
-.SH SYNOPSIS
-.HP
-.B void XkbFreeGeomShapes
-.BI "(\^XkbGeometryPtr " "geom" "\^,"
-.BI "int " "first" "\^,"
-.BI "int " "count" "\^,"
-.BI "Bool " "free_all" "\^);"
-.if n .ti +5n
-.if t .ti +.5i
-.SH ARGUMENTS
-.TP
-.I \- geom
-geometry in which shapes should be freed
-.TP
-.I \- first
-first shape to be freed
-.TP
-.I \- count
-number of shapes to be freed
-.TP
-.I \- free_all
-True => all shapes are freed
-.SH DESCRIPTION
-.LP
-Xkb provides a number of functions to allocate and free subcomponents of a
-keyboard geometry. Use these functions to create or modify keyboard geometries.
-Note that these functions merely allocate space for the new element(s), and it
-is up to you to fill in the values explicitly in your code. These allocation
-functions increase
-.I sz_*
-but never touch
-.I num_*
-(unless there is an allocation failure, in which case they reset both
-.I sz_*
-and
-.I num_*
-to zero). These functions return Success if they succeed, BadAlloc if they are
-not able to allocate space, or BadValue if a parameter is not as expected.
-
-If
-.I free_all
-is True, all shapes in the geometry are freed regardless of the values of
-.I first
-and
-.I count.
-Otherwise,
-.I count
-shapes are freed, beginning with the shape specified by
-.I first.
-.SH "RETURN VALUES"
-.TP 15
-Success
-The XkbFreeGeomShapes function returns Success when there are no allocation
-or argument errors.
-.SH DIAGNOSTICS
-.TP 15
-.B BadAlloc
-Unable to allocate storage
-.TP 15
-.B BadValue
-An argument is out of range
+.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the "Software"),
+.\" to deal in the Software without restriction, including without limitation
+.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
+.\" and/or sell copies of the Software, and to permit persons to whom the
+.\" Software is furnished to do so, subject to the following conditions:
+.\"
+.\" The above copyright notice and this permission notice (including the next
+.\" paragraph) shall be included in all copies or substantial portions of the
+.\" Software.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+.\" DEALINGS IN THE SOFTWARE.
+.\"
+.TH XkbFreeGeomShapes __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbFreeGeomShapes \- Free geometry shapes
+.SH SYNOPSIS
+.HP
+.B void XkbFreeGeomShapes
+.BI "(\^XkbGeometryPtr " "geom" "\^,"
+.BI "int " "first" "\^,"
+.BI "int " "count" "\^,"
+.BI "Bool " "free_all" "\^);"
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- geom
+geometry in which shapes should be freed
+.TP
+.I \- first
+first shape to be freed
+.TP
+.I \- count
+number of shapes to be freed
+.TP
+.I \- free_all
+True => all shapes are freed
+.SH DESCRIPTION
+.LP
+Xkb provides a number of functions to allocate and free subcomponents of a
+keyboard geometry. Use these functions to create or modify keyboard geometries.
+Note that these functions merely allocate space for the new element(s), and it
+is up to you to fill in the values explicitly in your code. These allocation
+functions increase
+.I sz_*
+but never touch
+.I num_*
+(unless there is an allocation failure, in which case they reset both
+.I sz_*
+and
+.I num_*
+to zero). These functions return Success if they succeed, BadAlloc if they are
+not able to allocate space, or BadValue if a parameter is not as expected.
+
+If
+.I free_all
+is True, all shapes in the geometry are freed regardless of the values of
+.I first
+and
+.I count.
+Otherwise,
+.I count
+shapes are freed, beginning with the shape specified by
+.I first.
+.SH "RETURN VALUES"
+.TP 15
+Success
+The XkbFreeGeomShapes function returns Success when there are no allocation
+or argument errors.
+.SH DIAGNOSTICS
+.TP 15
+.B BadAlloc
+Unable to allocate storage
+.TP 15
+.B BadValue
+An argument is out of range
diff --git a/libX11/man/xkb/XkbFreeGeometry.man b/libX11/man/xkb/XkbFreeGeometry.man
index 0ae3c19c5..36af778eb 100644
--- a/libX11/man/xkb/XkbFreeGeometry.man
+++ b/libX11/man/xkb/XkbFreeGeometry.man
@@ -1,91 +1,91 @@
-.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
-.\"
-.\" Permission is hereby granted, free of charge, to any person obtaining a
-.\" copy of this software and associated documentation files (the "Software"),
-.\" to deal in the Software without restriction, including without limitation
-.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
-.\" and/or sell copies of the Software, and to permit persons to whom the
-.\" Software is furnished to do so, subject to the following conditions:
-.\"
-.\" The above copyright notice and this permission notice (including the next
-.\" paragraph) shall be included in all copies or substantial portions of the
-.\" Software.
-.\"
-.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-.\" DEALINGS IN THE SOFTWARE.
-.\"
-.TH XkbFreeGeometry __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
-.SH NAME
-XkbFreeGeometry \- Free an entire geometry
-.SH SYNOPSIS
-.HP
-.B void XkbFreeGeometry
-.BI "(\^XkbGeometryPtr " "geom" "\^,"
-.BI "unsigned int " "which" "\^,"
-.BI "Bool " "free_all" "\^);"
-.if n .ti +5n
-.if t .ti +.5i
-.SH ARGUMENTS
-.TP
-.I \- geom
-geometry to be freed
-.TP
-.I \- which
-mask of geometry components to be freed
-.TP
-.I \- free_all
-True => the entire geometry is freed
-.SH DESCRIPTION
-.LP
-Xkb provides a number of functions to allocate and free subcomponents of a
-keyboard geometry. Use these functions to create or modify keyboard geometries.
-Note that these functions merely allocate space for the new element(s), and it
-is up to you to fill in the values explicitly in your code. These allocation
-functions increase
-.I sz_*
-but never touch
-.I num_*
-(unless there is an allocation failure, in which case they reset both
-.I sz_*
-and
-.I num_*
-to zero). These functions return Success if they succeed, BadAlloc if they are
-not able to allocate space, or BadValue if a parameter is not as expected.
-
-The values of
-.I which
-and
-.I free_all
-determine how much of the specified geometry is freed. The valid values for
-.I which
-are:
-
-.nf
- #define XkbGeomPropertiesMask (1<<0)
- #define XkbGeomColorsMask (1<<1)
- #define XkbGeomShapesMask (1<<2)
- #define XkbGeomSectionsMask (1<<3)
- #define XkbGeomDoodadsMask (1<<4)
- #define XkbGeomKeyAliasesMask (1<<5)
- #define XkbGeomAllMask (0x3f)
-
-.fi
-If
-.I free_all
-is True, the entire geometry is freed regardless of the value of
-.I which.
-Otherwise, the portions of the geometry specified by
-.I which
-are freed.
-.SH DIAGNOSTICS
-.TP 15
-.B BadAlloc
-Unable to allocate storage
-.TP 15
-.B BadValue
-An argument is out of range
+.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the "Software"),
+.\" to deal in the Software without restriction, including without limitation
+.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
+.\" and/or sell copies of the Software, and to permit persons to whom the
+.\" Software is furnished to do so, subject to the following conditions:
+.\"
+.\" The above copyright notice and this permission notice (including the next
+.\" paragraph) shall be included in all copies or substantial portions of the
+.\" Software.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+.\" DEALINGS IN THE SOFTWARE.
+.\"
+.TH XkbFreeGeometry __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbFreeGeometry \- Free an entire geometry
+.SH SYNOPSIS
+.HP
+.B void XkbFreeGeometry
+.BI "(\^XkbGeometryPtr " "geom" "\^,"
+.BI "unsigned int " "which" "\^,"
+.BI "Bool " "free_all" "\^);"
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- geom
+geometry to be freed
+.TP
+.I \- which
+mask of geometry components to be freed
+.TP
+.I \- free_all
+True => the entire geometry is freed
+.SH DESCRIPTION
+.LP
+Xkb provides a number of functions to allocate and free subcomponents of a
+keyboard geometry. Use these functions to create or modify keyboard geometries.
+Note that these functions merely allocate space for the new element(s), and it
+is up to you to fill in the values explicitly in your code. These allocation
+functions increase
+.I sz_*
+but never touch
+.I num_*
+(unless there is an allocation failure, in which case they reset both
+.I sz_*
+and
+.I num_*
+to zero). These functions return Success if they succeed, BadAlloc if they are
+not able to allocate space, or BadValue if a parameter is not as expected.
+
+The values of
+.I which
+and
+.I free_all
+determine how much of the specified geometry is freed. The valid values for
+.I which
+are:
+
+.nf
+ #define XkbGeomPropertiesMask (1<<0)
+ #define XkbGeomColorsMask (1<<1)
+ #define XkbGeomShapesMask (1<<2)
+ #define XkbGeomSectionsMask (1<<3)
+ #define XkbGeomDoodadsMask (1<<4)
+ #define XkbGeomKeyAliasesMask (1<<5)
+ #define XkbGeomAllMask (0x3f)
+
+.fi
+If
+.I free_all
+is True, the entire geometry is freed regardless of the value of
+.I which.
+Otherwise, the portions of the geometry specified by
+.I which
+are freed.
+.SH DIAGNOSTICS
+.TP 15
+.B BadAlloc
+Unable to allocate storage
+.TP 15
+.B BadValue
+An argument is out of range
diff --git a/libX11/man/xkb/XkbFreeIndicatorMaps.man b/libX11/man/xkb/XkbFreeIndicatorMaps.man
index abd423fe2..f7137578e 100644
--- a/libX11/man/xkb/XkbFreeIndicatorMaps.man
+++ b/libX11/man/xkb/XkbFreeIndicatorMaps.man
@@ -1,48 +1,48 @@
-.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
-.\"
-.\" Permission is hereby granted, free of charge, to any person obtaining a
-.\" copy of this software and associated documentation files (the "Software"),
-.\" to deal in the Software without restriction, including without limitation
-.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
-.\" and/or sell copies of the Software, and to permit persons to whom the
-.\" Software is furnished to do so, subject to the following conditions:
-.\"
-.\" The above copyright notice and this permission notice (including the next
-.\" paragraph) shall be included in all copies or substantial portions of the
-.\" Software.
-.\"
-.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-.\" DEALINGS IN THE SOFTWARE.
-.\"
-.TH XkbFreeIndicatorMaps __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
-.SH NAME
-XkbFreeIndicatorMaps \- Frees memory used by the
-.I indicators
-member of an XkbDescRec structure
-.SH SYNOPSIS
-.HP
-.B void XkbFreeIndicatorMaps
-.BI "(\^XkbDescPtr " "xkb" "\^);"
-.if n .ti +5n
-.if t .ti +.5i
-.SH ARGUMENTS
-.TP
-.I \- xkb
-keyboard description structure
-.SH DESCRIPTION
-.LP
-If the
-.I indicators
-member of the keyboard description record pointed to by
-.I xkb
-is not NULL,
-.I XkbFreeIndicatorMaps
-frees the memory associated with the
-.I indicators
-member of
-.I xkb.
+.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the "Software"),
+.\" to deal in the Software without restriction, including without limitation
+.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
+.\" and/or sell copies of the Software, and to permit persons to whom the
+.\" Software is furnished to do so, subject to the following conditions:
+.\"
+.\" The above copyright notice and this permission notice (including the next
+.\" paragraph) shall be included in all copies or substantial portions of the
+.\" Software.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+.\" DEALINGS IN THE SOFTWARE.
+.\"
+.TH XkbFreeIndicatorMaps __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbFreeIndicatorMaps \- Frees memory used by the
+.I indicators
+member of an XkbDescRec structure
+.SH SYNOPSIS
+.HP
+.B void XkbFreeIndicatorMaps
+.BI "(\^XkbDescPtr " "xkb" "\^);"
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- xkb
+keyboard description structure
+.SH DESCRIPTION
+.LP
+If the
+.I indicators
+member of the keyboard description record pointed to by
+.I xkb
+is not NULL,
+.I XkbFreeIndicatorMaps
+frees the memory associated with the
+.I indicators
+member of
+.I xkb.
diff --git a/libX11/man/xkb/XkbFreeKeyboard.man b/libX11/man/xkb/XkbFreeKeyboard.man
index f69171f27..afa928e4d 100644
--- a/libX11/man/xkb/XkbFreeKeyboard.man
+++ b/libX11/man/xkb/XkbFreeKeyboard.man
@@ -1,62 +1,62 @@
-.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
-.\"
-.\" Permission is hereby granted, free of charge, to any person obtaining a
-.\" copy of this software and associated documentation files (the "Software"),
-.\" to deal in the Software without restriction, including without limitation
-.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
-.\" and/or sell copies of the Software, and to permit persons to whom the
-.\" Software is furnished to do so, subject to the following conditions:
-.\"
-.\" The above copyright notice and this permission notice (including the next
-.\" paragraph) shall be included in all copies or substantial portions of the
-.\" Software.
-.\"
-.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-.\" DEALINGS IN THE SOFTWARE.
-.\"
-.TH XkbFreeKeyboard __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
-.SH NAME
-XkbFreeKeyboard \- Destroys either an entire XkbDescRec or just some of its
-members
-.SH SYNOPSIS
-.HP
-.B void XkbFreeKeyboard
-.BI "(\^XkbDescPtr " "xkb" "\^,"
-.BI "unsigned int " "which" "\^,"
-.BI "Bool " "free_all" "\^);"
-.if n .ti +5n
-.if t .ti +.5i
-.SH ARGUMENTS
-.TP
-.I xkb
-keyboard description with components to free
-.TP
-.I which
-mask selecting components to free
-.TP
-.I free_all
-True => free all components and
-.I xkb
-.SH DESCRIPTION
-.LP
-.I XkbFreeKeyboard
-frees the components of
-.I xkb
-specified by
-.I which
-and sets the corresponding values to NULL. If
-.I
-free_all
-is True,
-.I XkbFreeKeyboard
-frees every non-NULL component of
-.I xkb
-and then frees the
-.I xkb
-structure itself.
-
+.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the "Software"),
+.\" to deal in the Software without restriction, including without limitation
+.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
+.\" and/or sell copies of the Software, and to permit persons to whom the
+.\" Software is furnished to do so, subject to the following conditions:
+.\"
+.\" The above copyright notice and this permission notice (including the next
+.\" paragraph) shall be included in all copies or substantial portions of the
+.\" Software.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+.\" DEALINGS IN THE SOFTWARE.
+.\"
+.TH XkbFreeKeyboard __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbFreeKeyboard \- Destroys either an entire XkbDescRec or just some of its
+members
+.SH SYNOPSIS
+.HP
+.B void XkbFreeKeyboard
+.BI "(\^XkbDescPtr " "xkb" "\^,"
+.BI "unsigned int " "which" "\^,"
+.BI "Bool " "free_all" "\^);"
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I xkb
+keyboard description with components to free
+.TP
+.I which
+mask selecting components to free
+.TP
+.I free_all
+True => free all components and
+.I xkb
+.SH DESCRIPTION
+.LP
+.I XkbFreeKeyboard
+frees the components of
+.I xkb
+specified by
+.I which
+and sets the corresponding values to NULL. If
+.I
+free_all
+is True,
+.I XkbFreeKeyboard
+frees every non-NULL component of
+.I xkb
+and then frees the
+.I xkb
+structure itself.
+
diff --git a/libX11/man/xkb/XkbFreeNames.man b/libX11/man/xkb/XkbFreeNames.man
index a991057b6..cdb021ec7 100644
--- a/libX11/man/xkb/XkbFreeNames.man
+++ b/libX11/man/xkb/XkbFreeNames.man
@@ -1,93 +1,93 @@
-'\" t
-.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
-.\"
-.\" Permission is hereby granted, free of charge, to any person obtaining a
-.\" copy of this software and associated documentation files (the "Software"),
-.\" to deal in the Software without restriction, including without limitation
-.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
-.\" and/or sell copies of the Software, and to permit persons to whom the
-.\" Software is furnished to do so, subject to the following conditions:
-.\"
-.\" The above copyright notice and this permission notice (including the next
-.\" paragraph) shall be included in all copies or substantial portions of the
-.\" Software.
-.\"
-.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-.\" DEALINGS IN THE SOFTWARE.
-.\"
-.TH XkbFreeNames __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
-.SH NAME
-XkbFreeNames \- Free symbolic names structures
-.SH SYNOPSIS
-.HP
-.B void XkbFreeNames
-.BI "(\^XkbDescPtr " "xkb" "\^,"
-.BI "unsigned int " "which" "\^,"
-.BI "Bool " "free_map" "\^);"
-.if n .ti +5n
-.if t .ti +.5i
-.SH ARGUMENTS
-.TP
-.I \- xkb
-keyboard description for which names are to be freed
-.TP
-.I \- which
-mask of names components to be freed
-.TP
-.I \- free_map
-True => XkbNamesRec structure itself should be freed
-.SH DESCRIPTION
-.LP
-Do not free symbolic names structures directly using
-.I free
-or
-.I XFree.
-Use
-.I XkbFreeNames
-instead.
-
-The
-.I which
-parameter is the bitwise inclusive OR of the valid names mask bits defined in
-Table 1.
-
-Xkb provides several functions that work with symbolic names. Each of these
-functions uses a mask to specify individual fields of the structures described
-above. These masks and their relationships to the fields in a keyboard
-description are shown in Table 1.
-
-.TS
-c s s s
-l l l l.
-Table 1 Symbolic Names Masks
-_
-Mask Bit Value Keyboard Field
- Component
-_
-XkbKeycodesNameMask (1<<0) Xkb->names keycodes
-XkbGeometryNameMask (1<<1) Xkb->names geometry
-XkbSymbolsNameMask (1<<2) Xkb->names symbols
-XkbPhysSymbolsNameMask (1<<3) Xkb->names phys_symbols
-XkbTypesNameMask (1<<4) Xkb->names type
-XkbCompatNameMask (1<<5) Xkb->names compat
-XkbKeyTypeNamesMask (1<<6) Xkb->map type[*].name
-XkbKTLevelNamesMask (1<<7) Xkb->map type[*].lvl_names[*]
-XkbIndicatorNamesMask (1<<8) Xkb->names indicators[*]
-XkbKeyNamesMask (1<<9) Xkb->names keys[*], num_keys
-XkbKeyAliasesMask (1<<10) Xkb->names key_aliases[*], num_key_aliases
-XkbVirtualModNamesMask (1<<11) Xkb->names vmods[*]
-XkbGroupNamesMask (1<<12) Xkb->names groups[*]
-XkbRGNamesMask (1<<13) Xkb->names radio_groups[*], num_rg
-XkbComponentNamesMask (0x3f) Xkb->names keycodes,
- geometry,
- symbols,
- physical symbols,
- types, and
- compatibility map
-XkbAllNamesMask (0x3fff) Xkb->names all name components
-.TE
+'\" t
+.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the "Software"),
+.\" to deal in the Software without restriction, including without limitation
+.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
+.\" and/or sell copies of the Software, and to permit persons to whom the
+.\" Software is furnished to do so, subject to the following conditions:
+.\"
+.\" The above copyright notice and this permission notice (including the next
+.\" paragraph) shall be included in all copies or substantial portions of the
+.\" Software.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+.\" DEALINGS IN THE SOFTWARE.
+.\"
+.TH XkbFreeNames __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbFreeNames \- Free symbolic names structures
+.SH SYNOPSIS
+.HP
+.B void XkbFreeNames
+.BI "(\^XkbDescPtr " "xkb" "\^,"
+.BI "unsigned int " "which" "\^,"
+.BI "Bool " "free_map" "\^);"
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- xkb
+keyboard description for which names are to be freed
+.TP
+.I \- which
+mask of names components to be freed
+.TP
+.I \- free_map
+True => XkbNamesRec structure itself should be freed
+.SH DESCRIPTION
+.LP
+Do not free symbolic names structures directly using
+.I free
+or
+.I XFree.
+Use
+.I XkbFreeNames
+instead.
+
+The
+.I which
+parameter is the bitwise inclusive OR of the valid names mask bits defined in
+Table 1.
+
+Xkb provides several functions that work with symbolic names. Each of these
+functions uses a mask to specify individual fields of the structures described
+above. These masks and their relationships to the fields in a keyboard
+description are shown in Table 1.
+
+.TS
+c s s s
+l l l l.
+Table 1 Symbolic Names Masks
+_
+Mask Bit Value Keyboard Field
+ Component
+_
+XkbKeycodesNameMask (1<<0) Xkb->names keycodes
+XkbGeometryNameMask (1<<1) Xkb->names geometry
+XkbSymbolsNameMask (1<<2) Xkb->names symbols
+XkbPhysSymbolsNameMask (1<<3) Xkb->names phys_symbols
+XkbTypesNameMask (1<<4) Xkb->names type
+XkbCompatNameMask (1<<5) Xkb->names compat
+XkbKeyTypeNamesMask (1<<6) Xkb->map type[*].name
+XkbKTLevelNamesMask (1<<7) Xkb->map type[*].lvl_names[*]
+XkbIndicatorNamesMask (1<<8) Xkb->names indicators[*]
+XkbKeyNamesMask (1<<9) Xkb->names keys[*], num_keys
+XkbKeyAliasesMask (1<<10) Xkb->names key_aliases[*], num_key_aliases
+XkbVirtualModNamesMask (1<<11) Xkb->names vmods[*]
+XkbGroupNamesMask (1<<12) Xkb->names groups[*]
+XkbRGNamesMask (1<<13) Xkb->names radio_groups[*], num_rg
+XkbComponentNamesMask (0x3f) Xkb->names keycodes,
+ geometry,
+ symbols,
+ physical symbols,
+ types, and
+ compatibility map
+XkbAllNamesMask (0x3fff) Xkb->names all name components
+.TE
diff --git a/libX11/man/xkb/XkbFreeServerMap.man b/libX11/man/xkb/XkbFreeServerMap.man
index db82d9c7b..e0d591e66 100644
--- a/libX11/man/xkb/XkbFreeServerMap.man
+++ b/libX11/man/xkb/XkbFreeServerMap.man
@@ -1,187 +1,187 @@
-'\" t
-.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
-.\"
-.\" Permission is hereby granted, free of charge, to any person obtaining a
-.\" copy of this software and associated documentation files (the "Software"),
-.\" to deal in the Software without restriction, including without limitation
-.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
-.\" and/or sell copies of the Software, and to permit persons to whom the
-.\" Software is furnished to do so, subject to the following conditions:
-.\"
-.\" The above copyright notice and this permission notice (including the next
-.\" paragraph) shall be included in all copies or substantial portions of the
-.\" Software.
-.\"
-.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-.\" DEALINGS IN THE SOFTWARE.
-.\"
-.TH XkbFreeServerMap __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
-.SH NAME
-XkbFreeServerMap \- Free memory used by the server member of an XkbDescRec
-structure
-.SH SYNOPSIS
-.HP
-.B void XkbFreeServerMap
-.BI "(\^XkbDescPtr " "xkb" "\^,"
-.BI "unsigned int " "which" "\^,"
-.BI "Bool " "free_all" "\^);"
-.if n .ti +5n
-.if t .ti +.5i
-.SH ARGUMENTS
-.TP
-.I \- xkb
-keyboard description containing server map to free
-.TP
-.I \- which
-mask identifying components of map to free
-.TP
-.I \- free_all
-True => free all server map components and server itself
-.SH DESCRIPTION
-.LP
-The
-.I XkbFreeServerMap
-function frees the specified components of server map in the XkbDescRec
-structure specified by the
-.I xkb
-parameter and sets the corresponding structure component values to NULL. The
-.I which parameter specifies a combination of the server map masks and is a
-bitwise inclusive OR
-of the masks listed in Table 1. If
-.I free_all
-is True,
-.I which
-is ignored and
-.I XkbFreeServerMap
-frees every non-NULL structure component in the server map, frees the
-XkbServerMapRec structure
-referenced by the
-.I server
-member of the
-.I xkb
-parameter, and sets the
-.I server
-member to NULL.
-
-.TS
-c s
-l l
-l lw(4i).
-Table 1 XkbAllocServerMap Masks
-_
-Mask Effect
-_
-XkbExplicitComponentsMask T{
-The min_key_code and max_key_code fields of the xkb parameter are used to
-allocate the explicit field of the server map.
-T}
-.sp
-XkbKeyActionsMask T{
-The min_key_code and max_key_code fields of the xkb parameter are used to
-allocate the key_acts
-field of the server map. The count_acts parameter is used to allocate the acts
-field of the
-server map.
-T}
-.sp
-XkbKeyBehaviorsMask T{
-The min_key_code and max_key_code fields of the xkb parameter are used to
-allocate the behaviors
-field of the server map.
-T}
-.sp
-XkbVirtualModMapMask T{
-The min_key_code and max_key_code fields of the xkb parameter are used to
-allocate the vmodmap
-field of the server map.
-T}
-
-.TE
-.SH STRUCTURES
-.LP
-The complete description of an Xkb keyboard is given by an XkbDescRec. The
-component
-structures in the XkbDescRec represent the major Xkb components.
-
-.nf
-typedef struct {
- struct _XDisplay * display; /\(** connection to X server */
- unsigned short flags; /\(** private to Xkb, do not modify */
- unsigned short device_spec; /\(** device of interest */
- KeyCode min_key_code; /\(** minimum keycode for device */
- KeyCode max_key_code; /\(** maximum keycode for device */
- XkbControlsPtr ctrls; /\(** controls */
- XkbServerMapPtr server; /\(** server keymap */
- XkbClientMapPtr map; /\(** client keymap */
- XkbIndicatorPtr indicators; /\(** indicator map */
- XkbNamesPtr names; /\(** names for all components */
- XkbCompatMapPtr compat; /\(** compatibility map */
- XkbGeometryPtr geom; /\(** physical geometry of keyboard */
-} XkbDescRec, *XkbDescPtr;
-
-.fi
-The
-.I display
-field points to an X display structure. The
-.I flags field is private to the library: modifying
-.I flags
-may yield unpredictable results. The
-.I device_spec
-field specifies the device identifier of the keyboard input device, or
-XkbUseCoreKeyboard, which specifies the core keyboard device. The
-.I min_key_code
-and
-.I max_key_code
-fields specify the least and greatest keycode that can be returned by the
-keyboard.
-
-Each structure component has a corresponding mask bit that is used in function
-calls to
-indicate that the structure should be manipulated in some manner, such as
-allocating it
-or freeing it. These masks and their relationships to the fields in the
-XkbDescRec are
-shown in Table 2.
-
-.TS
-c s s
-l l l
-l l l.
-Table 2 Mask Bits for XkbDescRec
-_
-Mask Bit XkbDescRec Field Value
-_
-XkbControlsMask ctrls (1L<<0)
-XkbServerMapMask server (1L<<1)
-XkbIClientMapMask map (1L<<2)
-XkbIndicatorMapMask indicators (1L<<3)
-XkbNamesMask names (1L<<4)
-XkbCompatMapMask compat (1L<<5)
-XkbGeometryMask geom (1L<<6)
-XkbAllComponentsMask All Fields (0x7f)
-.TE
-
-The Xkb server map contains the information the server needs to interpret key
-events and is of
-type XkbServerMapRec:
-
-.nf
-\&#define XkbNumVirtualMods 16
-
-typedef struct { /\(** Server Map */
- unsigned short num_acts; /\(** # of occupied entries in acts */
- unsigned short size_acts; /\(** # of entries in acts */
- XkbAction * acts; /\(** linear 2d tables of key actions, 1 per keycode */
- XkbBehavior * behaviors; /\(** key behaviors,1 per keycode */
- unsigned short * key_acts; /\(** index into acts, 1 per keycode */
- unsigned char * explicit; /\(** explicit overrides of core remapping, 1 per key */
- unsigned char vmods[XkbNumVirtualMods]; /\(** real mods bound to virtual mods */
- unsigned short * vmodmap; /\(** virtual mods bound to key, 1 per keycode*/
-} XkbServerMapRec, *XkbServerMapPtr;
-
-.fi
+'\" t
+.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the "Software"),
+.\" to deal in the Software without restriction, including without limitation
+.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
+.\" and/or sell copies of the Software, and to permit persons to whom the
+.\" Software is furnished to do so, subject to the following conditions:
+.\"
+.\" The above copyright notice and this permission notice (including the next
+.\" paragraph) shall be included in all copies or substantial portions of the
+.\" Software.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+.\" DEALINGS IN THE SOFTWARE.
+.\"
+.TH XkbFreeServerMap __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbFreeServerMap \- Free memory used by the server member of an XkbDescRec
+structure
+.SH SYNOPSIS
+.HP
+.B void XkbFreeServerMap
+.BI "(\^XkbDescPtr " "xkb" "\^,"
+.BI "unsigned int " "which" "\^,"
+.BI "Bool " "free_all" "\^);"
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- xkb
+keyboard description containing server map to free
+.TP
+.I \- which
+mask identifying components of map to free
+.TP
+.I \- free_all
+True => free all server map components and server itself
+.SH DESCRIPTION
+.LP
+The
+.I XkbFreeServerMap
+function frees the specified components of server map in the XkbDescRec
+structure specified by the
+.I xkb
+parameter and sets the corresponding structure component values to NULL. The
+.I which parameter specifies a combination of the server map masks and is a
+bitwise inclusive OR
+of the masks listed in Table 1. If
+.I free_all
+is True,
+.I which
+is ignored and
+.I XkbFreeServerMap
+frees every non-NULL structure component in the server map, frees the
+XkbServerMapRec structure
+referenced by the
+.I server
+member of the
+.I xkb
+parameter, and sets the
+.I server
+member to NULL.
+
+.TS
+c s
+l l
+l lw(4i).
+Table 1 XkbAllocServerMap Masks
+_
+Mask Effect
+_
+XkbExplicitComponentsMask T{
+The min_key_code and max_key_code fields of the xkb parameter are used to
+allocate the explicit field of the server map.
+T}
+.sp
+XkbKeyActionsMask T{
+The min_key_code and max_key_code fields of the xkb parameter are used to
+allocate the key_acts
+field of the server map. The count_acts parameter is used to allocate the acts
+field of the
+server map.
+T}
+.sp
+XkbKeyBehaviorsMask T{
+The min_key_code and max_key_code fields of the xkb parameter are used to
+allocate the behaviors
+field of the server map.
+T}
+.sp
+XkbVirtualModMapMask T{
+The min_key_code and max_key_code fields of the xkb parameter are used to
+allocate the vmodmap
+field of the server map.
+T}
+
+.TE
+.SH STRUCTURES
+.LP
+The complete description of an Xkb keyboard is given by an XkbDescRec. The
+component
+structures in the XkbDescRec represent the major Xkb components.
+
+.nf
+typedef struct {
+ struct _XDisplay * display; /\(** connection to X server */
+ unsigned short flags; /\(** private to Xkb, do not modify */
+ unsigned short device_spec; /\(** device of interest */
+ KeyCode min_key_code; /\(** minimum keycode for device */
+ KeyCode max_key_code; /\(** maximum keycode for device */
+ XkbControlsPtr ctrls; /\(** controls */
+ XkbServerMapPtr server; /\(** server keymap */
+ XkbClientMapPtr map; /\(** client keymap */
+ XkbIndicatorPtr indicators; /\(** indicator map */
+ XkbNamesPtr names; /\(** names for all components */
+ XkbCompatMapPtr compat; /\(** compatibility map */
+ XkbGeometryPtr geom; /\(** physical geometry of keyboard */
+} XkbDescRec, *XkbDescPtr;
+
+.fi
+The
+.I display
+field points to an X display structure. The
+.I flags field is private to the library: modifying
+.I flags
+may yield unpredictable results. The
+.I device_spec
+field specifies the device identifier of the keyboard input device, or
+XkbUseCoreKeyboard, which specifies the core keyboard device. The
+.I min_key_code
+and
+.I max_key_code
+fields specify the least and greatest keycode that can be returned by the
+keyboard.
+
+Each structure component has a corresponding mask bit that is used in function
+calls to
+indicate that the structure should be manipulated in some manner, such as
+allocating it
+or freeing it. These masks and their relationships to the fields in the
+XkbDescRec are
+shown in Table 2.
+
+.TS
+c s s
+l l l
+l l l.
+Table 2 Mask Bits for XkbDescRec
+_
+Mask Bit XkbDescRec Field Value
+_
+XkbControlsMask ctrls (1L<<0)
+XkbServerMapMask server (1L<<1)
+XkbIClientMapMask map (1L<<2)
+XkbIndicatorMapMask indicators (1L<<3)
+XkbNamesMask names (1L<<4)
+XkbCompatMapMask compat (1L<<5)
+XkbGeometryMask geom (1L<<6)
+XkbAllComponentsMask All Fields (0x7f)
+.TE
+
+The Xkb server map contains the information the server needs to interpret key
+events and is of
+type XkbServerMapRec:
+
+.nf
+\&#define XkbNumVirtualMods 16
+
+typedef struct { /\(** Server Map */
+ unsigned short num_acts; /\(** # of occupied entries in acts */
+ unsigned short size_acts; /\(** # of entries in acts */
+ XkbAction * acts; /\(** linear 2d tables of key actions, 1 per keycode */
+ XkbBehavior * behaviors; /\(** key behaviors,1 per keycode */
+ unsigned short * key_acts; /\(** index into acts, 1 per keycode */
+ unsigned char * explicit; /\(** explicit overrides of core remapping, 1 per key */
+ unsigned char vmods[XkbNumVirtualMods]; /\(** real mods bound to virtual mods */
+ unsigned short * vmodmap; /\(** virtual mods bound to key, 1 per keycode*/
+} XkbServerMapRec, *XkbServerMapPtr;
+
+.fi
diff --git a/libX11/man/xkb/XkbGetAccessXTimeout.man b/libX11/man/xkb/XkbGetAccessXTimeout.man
index adb4c877a..9eb9fd4fa 100644
--- a/libX11/man/xkb/XkbGetAccessXTimeout.man
+++ b/libX11/man/xkb/XkbGetAccessXTimeout.man
@@ -1,140 +1,140 @@
-.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
-.\"
-.\" Permission is hereby granted, free of charge, to any person obtaining a
-.\" copy of this software and associated documentation files (the "Software"),
-.\" to deal in the Software without restriction, including without limitation
-.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
-.\" and/or sell copies of the Software, and to permit persons to whom the
-.\" Software is furnished to do so, subject to the following conditions:
-.\"
-.\" The above copyright notice and this permission notice (including the next
-.\" paragraph) shall be included in all copies or substantial portions of the
-.\" Software.
-.\"
-.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-.\" DEALINGS IN THE SOFTWARE.
-.\"
-.TH XkbGetAccessXTimeout __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
-.SH NAME
-XkbGetAccessXTimeout \- Queries the current AccessXTimeout options for a
-keyboard device
-.SH SYNOPSIS
-.HP
-.B Bool XkbGetAccessXTimeout
-.BI "(\^Display *" "display" "\^,"
-.BI "unsigned int " "device_spec" "\^,"
-.BI "unsigned short *" "timeout_rtrn" "\^,"
-.BI "unsigned int *" "ctrls_mask_rtrn" "\^,"
-.BI "unsigned int *" "ctrls_values_rtrn" "\^,"
-.BI "unsigned short *" "options_mask_rtrn" "\^,"
-.BI "unsigned short *" "options_values_rtrn" "\^);"
-.if n .ti +5n
-.if t .ti +.5i
-.SH ARGUMENTS
-.TP
-.I \- display
-unsigned short
-.TP
-.I \- device_spec
-device to query, or XkbUseCoreKbd
-.TP
-.I \- timeout_rtrn
-delay until AccessXTimeout, seconds
-.TP
-.I \- ctrls_mask_rtrn
-backfilled with controls to modify
-.TP
-.I \- ctrls_values_rtrn
-backfilled with on/off status for controls
-.TP
-.I \- options_mask_rtrn
-backfilled with ax_options to modify
-.TP
-.I \- options_values_rtrn
-backfilled with values for ax_options
-.SH DESCRIPTION
-.LP
-In environments where computers are shared, features such as SlowKeys present a
-problem: if
-SlowKeys is on, the keyboard can appear to be unresponsive because keys are not
-accepted
-until they are held for a certain period of time. To help solve this problem,
-Xkb provides
-an AccessXTimeout control to automatically change the enabled/disabled state of
-any boolean
-controls and to change the value of the AccessXKeys and AccessXFeedback control
-attributes
-if the keyboard is idle for a specified period of time.
-
-When a timeout as specified by AccessXTimeout occurs and a control is
-consequently modified,
-Xkb generates an XkbControlsNotify event.
-
-.I XkbGetAccessXTimeout
-sends a request to the X server to obtain the current values for the
-AccessXTimeout attributes, waits for a reply, and backfills the values into the
-appropriate arguments. The parameters
-.I options_mask_rtrn
-and
-.I options_values_rtrn
-are backfilled with the options to modify and the values for
-.I ax_options,
-which is a field in the XkbControlsRec structure.
-.I XkbGetAccessXTimeout
-returns True if successful; if a compatible version of the Xkb extension is not
-available in the server,
-.I XkbGetAccessXTimeout
-returns False.
-.SH "RETURN VALUES"
-.TP 15
-True
-The
-.I XkbGetAccessXTimeout
-returns True when it successfully sends a request to the X server to obtain the
-current values for the AccessXTimeout attributes, waits for a reply, and
-backfills the values into the appropriate arguments.
-.TP 15
-False
-The
-.I XkbGetAccessXTimeout
-funtion returns False if a compatible version of the Xkb extension is not
-available in the
-server.
-.SH STRUCTURES
-.LP
-.nf
-The XkbControlsRec structure is defined as follows:
-
-\&#define XkbMaxLegalKeyCode 255
-\&#define XkbPerKeyBitArraySize ((XkbMaxLegalKeyCode+1)/8)
-
-typedef struct {
- unsigned char mk_dflt_btn; /\(** default button for keyboard driven mouse */
- unsigned char num_groups; /\(** number of keyboard groups */
- unsigned char groups_wrap; /\(** how to wrap out-of-bounds groups */
- XkbModsRec internal; /\(** defines server internal modifiers */
- XkbModsRec ignore_lock; /\(** modifiers to ignore when checking for grab */
- unsigned int enabled_ctrls; /\(** 1 bit => corresponding boolean control enabled */
- unsigned short repeat_delay; /\(** ms delay until first repeat */
- unsigned short repeat_interval; /\(** ms delay between repeats */
- unsigned short slow_keys_delay; /\(** ms minimum time key must be down to be ok */
- unsigned short debounce_delay; /\(** ms delay before key reactivated */
- unsigned short mk_delay; /\(** ms delay to second mouse motion event */
- unsigned short mk_interval; /\(** ms delay between repeat mouse events */
- unsigned short mk_time_to_max; /\(** # intervals until constant mouse move */
- unsigned short mk_max_speed; /\(** multiplier for maximum mouse speed */
- short mk_curve; /\(** determines mouse move curve type */
- unsigned short ax_options; /\(** 1 bit => Access X option enabled */
- unsigned short ax_timeout; /\(** seconds until Access X disabled */
- unsigned short axt_opts_mask; /\(** 1 bit => options to reset on Access X timeout */
- unsigned short axt_opts_values; /\(** 1 bit => turn option on, 0=> off */
- unsigned int axt_ctrls_mask; /\(** which bits in enabled_ctrls to modify */
- unsigned int axt_ctrls_values; /\(** values for new bits in enabled_ctrls */
- unsigned char per_key_repeat[XkbPerKeyBitArraySize]; /\(** per key auto repeat */
-} XkbControlsRec, *XkbControlsPtr;
-.fi
+.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the "Software"),
+.\" to deal in the Software without restriction, including without limitation
+.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
+.\" and/or sell copies of the Software, and to permit persons to whom the
+.\" Software is furnished to do so, subject to the following conditions:
+.\"
+.\" The above copyright notice and this permission notice (including the next
+.\" paragraph) shall be included in all copies or substantial portions of the
+.\" Software.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+.\" DEALINGS IN THE SOFTWARE.
+.\"
+.TH XkbGetAccessXTimeout __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbGetAccessXTimeout \- Queries the current AccessXTimeout options for a
+keyboard device
+.SH SYNOPSIS
+.HP
+.B Bool XkbGetAccessXTimeout
+.BI "(\^Display *" "display" "\^,"
+.BI "unsigned int " "device_spec" "\^,"
+.BI "unsigned short *" "timeout_rtrn" "\^,"
+.BI "unsigned int *" "ctrls_mask_rtrn" "\^,"
+.BI "unsigned int *" "ctrls_values_rtrn" "\^,"
+.BI "unsigned short *" "options_mask_rtrn" "\^,"
+.BI "unsigned short *" "options_values_rtrn" "\^);"
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- display
+unsigned short
+.TP
+.I \- device_spec
+device to query, or XkbUseCoreKbd
+.TP
+.I \- timeout_rtrn
+delay until AccessXTimeout, seconds
+.TP
+.I \- ctrls_mask_rtrn
+backfilled with controls to modify
+.TP
+.I \- ctrls_values_rtrn
+backfilled with on/off status for controls
+.TP
+.I \- options_mask_rtrn
+backfilled with ax_options to modify
+.TP
+.I \- options_values_rtrn
+backfilled with values for ax_options
+.SH DESCRIPTION
+.LP
+In environments where computers are shared, features such as SlowKeys present a
+problem: if
+SlowKeys is on, the keyboard can appear to be unresponsive because keys are not
+accepted
+until they are held for a certain period of time. To help solve this problem,
+Xkb provides
+an AccessXTimeout control to automatically change the enabled/disabled state of
+any boolean
+controls and to change the value of the AccessXKeys and AccessXFeedback control
+attributes
+if the keyboard is idle for a specified period of time.
+
+When a timeout as specified by AccessXTimeout occurs and a control is
+consequently modified,
+Xkb generates an XkbControlsNotify event.
+
+.I XkbGetAccessXTimeout
+sends a request to the X server to obtain the current values for the
+AccessXTimeout attributes, waits for a reply, and backfills the values into the
+appropriate arguments. The parameters
+.I options_mask_rtrn
+and
+.I options_values_rtrn
+are backfilled with the options to modify and the values for
+.I ax_options,
+which is a field in the XkbControlsRec structure.
+.I XkbGetAccessXTimeout
+returns True if successful; if a compatible version of the Xkb extension is not
+available in the server,
+.I XkbGetAccessXTimeout
+returns False.
+.SH "RETURN VALUES"
+.TP 15
+True
+The
+.I XkbGetAccessXTimeout
+returns True when it successfully sends a request to the X server to obtain the
+current values for the AccessXTimeout attributes, waits for a reply, and
+backfills the values into the appropriate arguments.
+.TP 15
+False
+The
+.I XkbGetAccessXTimeout
+funtion returns False if a compatible version of the Xkb extension is not
+available in the
+server.
+.SH STRUCTURES
+.LP
+.nf
+The XkbControlsRec structure is defined as follows:
+
+\&#define XkbMaxLegalKeyCode 255
+\&#define XkbPerKeyBitArraySize ((XkbMaxLegalKeyCode+1)/8)
+
+typedef struct {
+ unsigned char mk_dflt_btn; /\(** default button for keyboard driven mouse */
+ unsigned char num_groups; /\(** number of keyboard groups */
+ unsigned char groups_wrap; /\(** how to wrap out-of-bounds groups */
+ XkbModsRec internal; /\(** defines server internal modifiers */
+ XkbModsRec ignore_lock; /\(** modifiers to ignore when checking for grab */
+ unsigned int enabled_ctrls; /\(** 1 bit => corresponding boolean control enabled */
+ unsigned short repeat_delay; /\(** ms delay until first repeat */
+ unsigned short repeat_interval; /\(** ms delay between repeats */
+ unsigned short slow_keys_delay; /\(** ms minimum time key must be down to be ok */
+ unsigned short debounce_delay; /\(** ms delay before key reactivated */
+ unsigned short mk_delay; /\(** ms delay to second mouse motion event */
+ unsigned short mk_interval; /\(** ms delay between repeat mouse events */
+ unsigned short mk_time_to_max; /\(** # intervals until constant mouse move */
+ unsigned short mk_max_speed; /\(** multiplier for maximum mouse speed */
+ short mk_curve; /\(** determines mouse move curve type */
+ unsigned short ax_options; /\(** 1 bit => Access X option enabled */
+ unsigned short ax_timeout; /\(** seconds until Access X disabled */
+ unsigned short axt_opts_mask; /\(** 1 bit => options to reset on Access X timeout */
+ unsigned short axt_opts_values; /\(** 1 bit => turn option on, 0=> off */
+ unsigned int axt_ctrls_mask; /\(** which bits in enabled_ctrls to modify */
+ unsigned int axt_ctrls_values; /\(** values for new bits in enabled_ctrls */
+ unsigned char per_key_repeat[XkbPerKeyBitArraySize]; /\(** per key auto repeat */
+} XkbControlsRec, *XkbControlsPtr;
+.fi
diff --git a/libX11/man/xkb/XkbGetAutoRepeatRate.man b/libX11/man/xkb/XkbGetAutoRepeatRate.man
index d9e6af7ac..ffbc8b8c7 100644
--- a/libX11/man/xkb/XkbGetAutoRepeatRate.man
+++ b/libX11/man/xkb/XkbGetAutoRepeatRate.man
@@ -1,84 +1,84 @@
-.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
-.\"
-.\" Permission is hereby granted, free of charge, to any person obtaining a
-.\" copy of this software and associated documentation files (the "Software"),
-.\" to deal in the Software without restriction, including without limitation
-.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
-.\" and/or sell copies of the Software, and to permit persons to whom the
-.\" Software is furnished to do so, subject to the following conditions:
-.\"
-.\" The above copyright notice and this permission notice (including the next
-.\" paragraph) shall be included in all copies or substantial portions of the
-.\" Software.
-.\"
-.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-.\" DEALINGS IN THE SOFTWARE.
-.\"
-.TH XkbGetAutoRepeatRate __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
-.SH NAME
-XkbGetAutoRepeatRate \- Gets the current attributes of the RepeatKeys control
-for a keyboard device
-.SH SYNOPSIS
-.HP
-.B Bool XkbGetAutoRepeatRate
-.BI "(\^Display *" "display" "\^,"
-.BI "unsigned int " "device_spec" "\^,"
-.BI "unsigned int *" "timeout_rtrn" "\^,"
-.BI "unsigned int *" "interval_rtrn" "\^);"
-.if n .ti +5n
-.if t .ti +.5i
-.SH ARGUMENTS
-.TP
-.I \- display
-connection to X server
-.TP
-.I \- device_spec
-desired device ID, or XkbUseCoreKbd
-.TP
-.I \- timeout_rtrn
-backfilled with initial repeat delay, ms
-.TP
-.I \- interval_rtrn
-backfilled with subsequent repeat delay, ms
-.SH DESCRIPTION
-.LP
-The core protocol allows only control over whether or not the entire keyboard or
-individual keys should auto-repeat when held down. RepeatKeys is a boolean
-control that extends this capability by adding control over the delay until a
-key begins to repeat and the rate at which it repeats. RepeatKeys is coupled
-with the core auto-repeat control: when RepeatKeys is enabled or disabled, the
-core auto-repeat is enabled or disabled and vice versa.
-
-Auto-repeating keys are controlled by two attributes. The first,
-.I timeout,
-is the delay after the initial press of an auto-repeating key and the first
-generated repeat event. The second,
-.I interval,
-is the delay between all subsequent generated repeat events. As with all boolean
-controls, configuring the attributes that determine how the control operates
-does not automatically enable the control as a whole.
-
-.I XkbGetAutoRepeatRate
-queries the server for the current values of the RepeatControls control
-attributes, backfills
-.I timeout_rtrn
-and
-.I interval_rtrn
-with them, and returns True. If a compatible version of the Xkb extension is not
-available in the server
-.I XkbGetAutoRepeatRate
-returns False.
-.SH "RETURN VALUES"
-.TP 15
-True
-The XkbGetAutoRepeatRate function returns True if a compatible version of the
-Xkb extension is available in the server.
-.TP 15
-False
-The XkbGetAutoRepeatRate function returns False if a compatible version of the
-Xkb extension is not available in the server.
+.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the "Software"),
+.\" to deal in the Software without restriction, including without limitation
+.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
+.\" and/or sell copies of the Software, and to permit persons to whom the
+.\" Software is furnished to do so, subject to the following conditions:
+.\"
+.\" The above copyright notice and this permission notice (including the next
+.\" paragraph) shall be included in all copies or substantial portions of the
+.\" Software.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+.\" DEALINGS IN THE SOFTWARE.
+.\"
+.TH XkbGetAutoRepeatRate __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbGetAutoRepeatRate \- Gets the current attributes of the RepeatKeys control
+for a keyboard device
+.SH SYNOPSIS
+.HP
+.B Bool XkbGetAutoRepeatRate
+.BI "(\^Display *" "display" "\^,"
+.BI "unsigned int " "device_spec" "\^,"
+.BI "unsigned int *" "timeout_rtrn" "\^,"
+.BI "unsigned int *" "interval_rtrn" "\^);"
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- display
+connection to X server
+.TP
+.I \- device_spec
+desired device ID, or XkbUseCoreKbd
+.TP
+.I \- timeout_rtrn
+backfilled with initial repeat delay, ms
+.TP
+.I \- interval_rtrn
+backfilled with subsequent repeat delay, ms
+.SH DESCRIPTION
+.LP
+The core protocol allows only control over whether or not the entire keyboard or
+individual keys should auto-repeat when held down. RepeatKeys is a boolean
+control that extends this capability by adding control over the delay until a
+key begins to repeat and the rate at which it repeats. RepeatKeys is coupled
+with the core auto-repeat control: when RepeatKeys is enabled or disabled, the
+core auto-repeat is enabled or disabled and vice versa.
+
+Auto-repeating keys are controlled by two attributes. The first,
+.I timeout,
+is the delay after the initial press of an auto-repeating key and the first
+generated repeat event. The second,
+.I interval,
+is the delay between all subsequent generated repeat events. As with all boolean
+controls, configuring the attributes that determine how the control operates
+does not automatically enable the control as a whole.
+
+.I XkbGetAutoRepeatRate
+queries the server for the current values of the RepeatControls control
+attributes, backfills
+.I timeout_rtrn
+and
+.I interval_rtrn
+with them, and returns True. If a compatible version of the Xkb extension is not
+available in the server
+.I XkbGetAutoRepeatRate
+returns False.
+.SH "RETURN VALUES"
+.TP 15
+True
+The XkbGetAutoRepeatRate function returns True if a compatible version of the
+Xkb extension is available in the server.
+.TP 15
+False
+The XkbGetAutoRepeatRate function returns False if a compatible version of the
+Xkb extension is not available in the server.
diff --git a/libX11/man/xkb/XkbGetAutoResetControls.man b/libX11/man/xkb/XkbGetAutoResetControls.man
index 60cf6ee81..667db5316 100644
--- a/libX11/man/xkb/XkbGetAutoResetControls.man
+++ b/libX11/man/xkb/XkbGetAutoResetControls.man
@@ -1,91 +1,91 @@
-.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
-.\"
-.\" Permission is hereby granted, free of charge, to any person obtaining a
-.\" copy of this software and associated documentation files (the "Software"),
-.\" to deal in the Software without restriction, including without limitation
-.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
-.\" and/or sell copies of the Software, and to permit persons to whom the
-.\" Software is furnished to do so, subject to the following conditions:
-.\"
-.\" The above copyright notice and this permission notice (including the next
-.\" paragraph) shall be included in all copies or substantial portions of the
-.\" Software.
-.\"
-.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-.\" DEALINGS IN THE SOFTWARE.
-.\"
-.TH XkbGetAutoResetControls __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
-.SH NAME
-XkbGetAutoResetControls \- Gets the current values of the auto-reset controls
-.SH SYNOPSIS
-.HP
-.B Bool XkbGetAutoResetControls
-.BI "(\^Display *" "dpy" "\^,"
-.BI "unsigned int *" "auto_ctrls" "\^,"
-.BI "unsigned int *" "auto_values" "\^);"
-.if n .ti +5n
-.if t .ti +.5i
-.SH ARGUMENTS
-.TP
-.I \- dpy
- connection to X server
-.TP
-.I \- auto_ctrls
- specifies which bits in auto_values are relevant
-.TP
-.I \- auto_values
-1 bit => corresponding control has auto-reset on
-.SH DESCRIPTION
-.LP
-You can configure the boolean controls to automatically be enabled or
-disabled when a program exits. This capability is controlled via two masks
-maintained in the X server on a per-client basis. There is no client-side Xkb
-data structure corresponding to these masks. Whenever the client exits for
-any reason, any boolean controls specified in the
-.I auto-reset mask
-are set to the corresponding value from the
-.I auto-reset values
-mask. This makes it
-possible for clients to "clean up after themselves" automatically, even if
-abnormally terminated. The bits used in the masks correspond to the
-EnabledControls control bits.
-
-For example, a client that replaces the keyboard bell with some other audible
-cue might want to turn off the AudibleBell control to prevent the server from
-also generating a sound and avoid cacophony. If the client were to exit
-without resetting the AudibleBell control, the user would be left without any
-feedback at all. Setting AudibleBell in both the auto-reset mask and
-auto-reset values guarantees that the audible bell will be turned back on
-when the client exits.
-
-.I XkbGetAutoResetControls
-backfills
-.I auto_ctrls
-and
-.I auto_values
-with the AutoReset control attributes for this particular client. It returns
-True if successful, and False otherwise.
-.SH "RETURN VALUES"
-.TP 15
-True
-The
-.I XkbGetAutoResetControls
-function returns True when it successfully backfills
-.I auto_ctrls
-and
-.I auto_values
-with the AutoReset control attributes for this particular client.
-.TP 15
-False
-The
-.I XkbGetAutoResetControls
-function returns False when it does not successfully backfill
-.I auto_ctrls
-and
-.I auto_values
-with the AutoReset control attributes for this particular client.
+.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the "Software"),
+.\" to deal in the Software without restriction, including without limitation
+.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
+.\" and/or sell copies of the Software, and to permit persons to whom the
+.\" Software is furnished to do so, subject to the following conditions:
+.\"
+.\" The above copyright notice and this permission notice (including the next
+.\" paragraph) shall be included in all copies or substantial portions of the
+.\" Software.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+.\" DEALINGS IN THE SOFTWARE.
+.\"
+.TH XkbGetAutoResetControls __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbGetAutoResetControls \- Gets the current values of the auto-reset controls
+.SH SYNOPSIS
+.HP
+.B Bool XkbGetAutoResetControls
+.BI "(\^Display *" "dpy" "\^,"
+.BI "unsigned int *" "auto_ctrls" "\^,"
+.BI "unsigned int *" "auto_values" "\^);"
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- dpy
+ connection to X server
+.TP
+.I \- auto_ctrls
+ specifies which bits in auto_values are relevant
+.TP
+.I \- auto_values
+1 bit => corresponding control has auto-reset on
+.SH DESCRIPTION
+.LP
+You can configure the boolean controls to automatically be enabled or
+disabled when a program exits. This capability is controlled via two masks
+maintained in the X server on a per-client basis. There is no client-side Xkb
+data structure corresponding to these masks. Whenever the client exits for
+any reason, any boolean controls specified in the
+.I auto-reset mask
+are set to the corresponding value from the
+.I auto-reset values
+mask. This makes it
+possible for clients to "clean up after themselves" automatically, even if
+abnormally terminated. The bits used in the masks correspond to the
+EnabledControls control bits.
+
+For example, a client that replaces the keyboard bell with some other audible
+cue might want to turn off the AudibleBell control to prevent the server from
+also generating a sound and avoid cacophony. If the client were to exit
+without resetting the AudibleBell control, the user would be left without any
+feedback at all. Setting AudibleBell in both the auto-reset mask and
+auto-reset values guarantees that the audible bell will be turned back on
+when the client exits.
+
+.I XkbGetAutoResetControls
+backfills
+.I auto_ctrls
+and
+.I auto_values
+with the AutoReset control attributes for this particular client. It returns
+True if successful, and False otherwise.
+.SH "RETURN VALUES"
+.TP 15
+True
+The
+.I XkbGetAutoResetControls
+function returns True when it successfully backfills
+.I auto_ctrls
+and
+.I auto_values
+with the AutoReset control attributes for this particular client.
+.TP 15
+False
+The
+.I XkbGetAutoResetControls
+function returns False when it does not successfully backfill
+.I auto_ctrls
+and
+.I auto_values
+with the AutoReset control attributes for this particular client.
diff --git a/libX11/man/xkb/XkbGetBounceKeysDelay.man b/libX11/man/xkb/XkbGetBounceKeysDelay.man
index a60f9141c..1df882d99 100644
--- a/libX11/man/xkb/XkbGetBounceKeysDelay.man
+++ b/libX11/man/xkb/XkbGetBounceKeysDelay.man
@@ -1,212 +1,212 @@
-'\" t
-.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
-.\"
-.\" Permission is hereby granted, free of charge, to any person obtaining a
-.\" copy of this software and associated documentation files (the "Software"),
-.\" to deal in the Software without restriction, including without limitation
-.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
-.\" and/or sell copies of the Software, and to permit persons to whom the
-.\" Software is furnished to do so, subject to the following conditions:
-.\"
-.\" The above copyright notice and this permission notice (including the next
-.\" paragraph) shall be included in all copies or substantial portions of the
-.\" Software.
-.\"
-.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-.\" DEALINGS IN THE SOFTWARE.
-.\"
-.TH XkbGetBounceKeysDelay __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
-.SH NAME
-XkbGetBounceKeysDelay \- Queries the current BounceKeys delay for a keyboard
-device.
-.SH SYNOPSIS
-.HP
-.B Bool XkbGetBounceKeysDelay
-.BI "(\^Display *" "display" "\^,"
-.BI "unsigned int " "device_spec" "\^,"
-.BI "unsigned int *" "delay_rtrn" "\^);"
-.if n .ti +5n
-.if t .ti +.5i
-.SH ARGUMENTS
-.TP
-.I \- display
-connection to X server
-.TP
-.I \- device_spec
-device ID, or XkbUseCoreKbd
-.TP
-.I \- delay_rtrn
-backfilled with bounce keys delay, ms
-.SH DESCRIPTION
-.LP
-The server can generate XkbAccessXNotify events for some of the global keyboard
-controls.
-The detail field describes what AccessX event just occurred and can be any of
-the values in
-Table 1.
-
-.TS
-c s
-l l
-l lw(4i).
-Table 1 AccessXNotify Events
-_
-detail Reason
-_
-XkbAXN_SKPress T{
-A key was pressed when SlowKeys was enabled.
-T}
-XkbAXN_SKAccept T{
-A key was accepted (held longer than the SlowKeys delay).
-T}
-XkbAXN_SKRelease T{
-An accepted SlowKeys key was released.
-T}
-XkbAXN_SKReject T{
-A key was rejected (released before the SlowKeys delay expired).
-T}
-XkbAXN_BKAccept T{
-A key was accepted by BounceKeys.
-T}
-XkbAXN_BKReject T{
-A key was rejected (pressed before the BounceKeys delay expired).
-T}
-XkbAXN_AXKWarning T{
-AccessXKeys is about to turn on/off StickyKeys or BounceKeys.
-T}
-.TE
-
-
-The
-.I keycode
-field reports the keycode of the key for which the event occurred. If the action
-is related to
-.I SlowKeys,
-the
-.I slowKeysDelay
-field contains the current SlowKeys acceptance delay. If the action is related
-to BounceKeys,
-the
-.I debounceDelay
-field contains the current BounceKeys debounce delay.
-
-Selecting for AccessX Events
-
-To receive XkbAccessXNotify events under all possible conditions, use
-.I XkbSelectEvents
-and pass XkbAccesXNotifyMask in both
-.I bits_to_change
-and
-.I values_for_bits.
-
-To receive XkbStateNotify events only under certain conditions, use
-.I XkbSelectEventDetails
-using XkbAccessXNotify as the
-.I event_type
-and specifying the desired state changes in
-.I bits_to_change
-and
-.I values_for_bits
-using mask bits from Table 2.
-
-.TS
-c s s
-l l l
-l l lw(3i).
-Table 2 AccessXNotify Event Details
-_
-XkbAccessXNotify Event Details Value Circumstances
-_
-XkbAXN_SKPressMask (1<<0) T{
-Slow key press notification wanted
-T}
-XkbAXN_SKAcceptMask (1<<1) T{
-Slow key accept notification wanted
-T}
-XkbAXN_SKRejectMask (1<<2) T{
-Slow key reject notification wanted
-T}
-XkbAXN_SKReleaseMask (1<<3) T{
-Slow key release notification wanted
-T}
-XkbAXN_BKAcceptMask (1<<4) T{
-Bounce key accept notification wanted
-T}
-XkbAXN_BKRejectMask (1<<5) T{
-Bounce key reject notification wanted
-T}
-XkbAXN_AXKWarningMask (1<<6) T{
-AccessX warning notification wanted
-T}
-XkbAllAccessXEventsMask (0x7f) T{
-All AccessX features notifications wanted
-T}
-.TE
-
-Some users may accidentally "bounce" on a key when they release it. They press
-it once, then accidentally press it again after they release it. The BounceKeys
-control temporarily disables a key after it has been pressed, effectively
-"debouncing" the keyboard. The period of time the key is disabled after it is
-released is known as the
-.I BounceKeys delay.
-BounceKeys is a boolean control.
-
-When the BounceKeys control is active, the server reports acceptance or
-rejection of any key to interested clients by sending an appropriate
-AccessXNotify event (see STRUCTURES).
-
-.I XkbGetBounceKeysDelay
-requests the attributes of the BounceKeys control from the server, waits for a
-reply, and backfills
-.I delay_rtrn
-with the BounceKeys delay attribute.
-.I XkbGetBounceKeysDelay
-returns True if successful; if a compatible version of the Xkb extension is not
-available in the server
-.I XkbGetSlowKeysDelay
-returns False.
-.SH "RETURN VALUES"
-.TP 15
-True
-The
-.I XkbGetBounceKeysDelay
-function returns True when it successfully requests the attributes of the
-BounceKeys control from the server, waits for a
-reply, and backfills
-.I delay_rtrn
-with the BounceKeys delay attribute.
-.TP 15
-False
-The
-.I XkbGetBounceKeysDelay
-function returns False if a compatible version of the Xkb extension is not
-available in the server.
-.SH STRUCTURES
-.LP
-The structure for the XkbAccessXNotify event type is as follows:
-
-.nf
-typedef struct {
- int type; /\(** Xkb extension base event code */
- unsigned long serial; /\(** X server serial number for event */
- Bool send_event; /\(** True => synthetically generated */
- Display * display; /\(** server connection where event generated */
- Time time; /\(** server time when event generated */
- int xkb_type; /\(** XkbAccessXNotify */
- int device; /\(** Xkb device ID, will not be XkbUseCoreKbd
-*/
- int detail; /\(** XkbAXN_* */
- KeyCode keycode; /\(** key of event */
- int slowKeysDelay; /\(** current SlowKeys delay */
- int debounceDelay; /\(** current debounce delay */
-} XkbAccessXNotifyEvent;
-
-.fi
-.SH "SEE ALSO"
-.BR XkbGetSlowKeysDelay (__libmansuffix__)
-
+'\" t
+.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the "Software"),
+.\" to deal in the Software without restriction, including without limitation
+.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
+.\" and/or sell copies of the Software, and to permit persons to whom the
+.\" Software is furnished to do so, subject to the following conditions:
+.\"
+.\" The above copyright notice and this permission notice (including the next
+.\" paragraph) shall be included in all copies or substantial portions of the
+.\" Software.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+.\" DEALINGS IN THE SOFTWARE.
+.\"
+.TH XkbGetBounceKeysDelay __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbGetBounceKeysDelay \- Queries the current BounceKeys delay for a keyboard
+device.
+.SH SYNOPSIS
+.HP
+.B Bool XkbGetBounceKeysDelay
+.BI "(\^Display *" "display" "\^,"
+.BI "unsigned int " "device_spec" "\^,"
+.BI "unsigned int *" "delay_rtrn" "\^);"
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- display
+connection to X server
+.TP
+.I \- device_spec
+device ID, or XkbUseCoreKbd
+.TP
+.I \- delay_rtrn
+backfilled with bounce keys delay, ms
+.SH DESCRIPTION
+.LP
+The server can generate XkbAccessXNotify events for some of the global keyboard
+controls.
+The detail field describes what AccessX event just occurred and can be any of
+the values in
+Table 1.
+
+.TS
+c s
+l l
+l lw(4i).
+Table 1 AccessXNotify Events
+_
+detail Reason
+_
+XkbAXN_SKPress T{
+A key was pressed when SlowKeys was enabled.
+T}
+XkbAXN_SKAccept T{
+A key was accepted (held longer than the SlowKeys delay).
+T}
+XkbAXN_SKRelease T{
+An accepted SlowKeys key was released.
+T}
+XkbAXN_SKReject T{
+A key was rejected (released before the SlowKeys delay expired).
+T}
+XkbAXN_BKAccept T{
+A key was accepted by BounceKeys.
+T}
+XkbAXN_BKReject T{
+A key was rejected (pressed before the BounceKeys delay expired).
+T}
+XkbAXN_AXKWarning T{
+AccessXKeys is about to turn on/off StickyKeys or BounceKeys.
+T}
+.TE
+
+
+The
+.I keycode
+field reports the keycode of the key for which the event occurred. If the action
+is related to
+.I SlowKeys,
+the
+.I slowKeysDelay
+field contains the current SlowKeys acceptance delay. If the action is related
+to BounceKeys,
+the
+.I debounceDelay
+field contains the current BounceKeys debounce delay.
+
+Selecting for AccessX Events
+
+To receive XkbAccessXNotify events under all possible conditions, use
+.I XkbSelectEvents
+and pass XkbAccesXNotifyMask in both
+.I bits_to_change
+and
+.I values_for_bits.
+
+To receive XkbStateNotify events only under certain conditions, use
+.I XkbSelectEventDetails
+using XkbAccessXNotify as the
+.I event_type
+and specifying the desired state changes in
+.I bits_to_change
+and
+.I values_for_bits
+using mask bits from Table 2.
+
+.TS
+c s s
+l l l
+l l lw(3i).
+Table 2 AccessXNotify Event Details
+_
+XkbAccessXNotify Event Details Value Circumstances
+_
+XkbAXN_SKPressMask (1<<0) T{
+Slow key press notification wanted
+T}
+XkbAXN_SKAcceptMask (1<<1) T{
+Slow key accept notification wanted
+T}
+XkbAXN_SKRejectMask (1<<2) T{
+Slow key reject notification wanted
+T}
+XkbAXN_SKReleaseMask (1<<3) T{
+Slow key release notification wanted
+T}
+XkbAXN_BKAcceptMask (1<<4) T{
+Bounce key accept notification wanted
+T}
+XkbAXN_BKRejectMask (1<<5) T{
+Bounce key reject notification wanted
+T}
+XkbAXN_AXKWarningMask (1<<6) T{
+AccessX warning notification wanted
+T}
+XkbAllAccessXEventsMask (0x7f) T{
+All AccessX features notifications wanted
+T}
+.TE
+
+Some users may accidentally "bounce" on a key when they release it. They press
+it once, then accidentally press it again after they release it. The BounceKeys
+control temporarily disables a key after it has been pressed, effectively
+"debouncing" the keyboard. The period of time the key is disabled after it is
+released is known as the
+.I BounceKeys delay.
+BounceKeys is a boolean control.
+
+When the BounceKeys control is active, the server reports acceptance or
+rejection of any key to interested clients by sending an appropriate
+AccessXNotify event (see STRUCTURES).
+
+.I XkbGetBounceKeysDelay
+requests the attributes of the BounceKeys control from the server, waits for a
+reply, and backfills
+.I delay_rtrn
+with the BounceKeys delay attribute.
+.I XkbGetBounceKeysDelay
+returns True if successful; if a compatible version of the Xkb extension is not
+available in the server
+.I XkbGetSlowKeysDelay
+returns False.
+.SH "RETURN VALUES"
+.TP 15
+True
+The
+.I XkbGetBounceKeysDelay
+function returns True when it successfully requests the attributes of the
+BounceKeys control from the server, waits for a
+reply, and backfills
+.I delay_rtrn
+with the BounceKeys delay attribute.
+.TP 15
+False
+The
+.I XkbGetBounceKeysDelay
+function returns False if a compatible version of the Xkb extension is not
+available in the server.
+.SH STRUCTURES
+.LP
+The structure for the XkbAccessXNotify event type is as follows:
+
+.nf
+typedef struct {
+ int type; /\(** Xkb extension base event code */
+ unsigned long serial; /\(** X server serial number for event */
+ Bool send_event; /\(** True => synthetically generated */
+ Display * display; /\(** server connection where event generated */
+ Time time; /\(** server time when event generated */
+ int xkb_type; /\(** XkbAccessXNotify */
+ int device; /\(** Xkb device ID, will not be XkbUseCoreKbd
+*/
+ int detail; /\(** XkbAXN_* */
+ KeyCode keycode; /\(** key of event */
+ int slowKeysDelay; /\(** current SlowKeys delay */
+ int debounceDelay; /\(** current debounce delay */
+} XkbAccessXNotifyEvent;
+
+.fi
+.SH "SEE ALSO"
+.BR XkbGetSlowKeysDelay (__libmansuffix__)
+
diff --git a/libX11/man/xkb/XkbGetCompatMap.man b/libX11/man/xkb/XkbGetCompatMap.man
index e9894d6c4..d7d0a88b5 100644
--- a/libX11/man/xkb/XkbGetCompatMap.man
+++ b/libX11/man/xkb/XkbGetCompatMap.man
@@ -1,116 +1,116 @@
-'\" t
-.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
-.\"
-.\" Permission is hereby granted, free of charge, to any person obtaining a
-.\" copy of this software and associated documentation files (the "Software"),
-.\" to deal in the Software without restriction, including without limitation
-.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
-.\" and/or sell copies of the Software, and to permit persons to whom the
-.\" Software is furnished to do so, subject to the following conditions:
-.\"
-.\" The above copyright notice and this permission notice (including the next
-.\" paragraph) shall be included in all copies or substantial portions of the
-.\" Software.
-.\"
-.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-.\" DEALINGS IN THE SOFTWARE.
-.\"
-.TH XkbGetCompatMap __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
-.SH NAME
-XkbGetCompatMap \- Fetch any combination of the current compatibility map
-components from the server
-.SH SYNOPSIS
-.HP
-.B Status XkbGetCompatMap
-.BI "(\^Display *" "display" "\^,"
-.BI "unsigned int " "which" "\^,"
-.BI "XkbDescRec *" "xkb" "\^);"
-.if n .ti +5n
-.if t .ti +.5i
-.SH ARGUMENTS
-.TP
-.I \- display
-connection to server
-.TP
-.I \- which
-mask of compatibility map components to fetch
-.TP
-.I \- xkb
-keyboard description where results placed
-.SH DESCRIPTION
-.LP
-When another client modifies the compatibility map, you are notified if you have
-selected for XkbCompatMapNotify events.
-.I XkbGetCompatMap
-is particularly useful when you receive an event of this type, as it allows you
-to update your program's version of the compatibility map to match the modified
-version now in the server. If your program is dealing with multiple servers and
-needs to configure them all in a similar manner, the updated compatibility map
-may be used to reconfigure other servers.
-
-.I XkbGetCompatMap
-fetches the components of the compatibility map specified in
-.I which
-from the server specified by
-.I display
-and places them in the
-.I compat
-structure of the keyboard description
-.I xkb.
-Valid values for
-.I which
-are an inclusive OR of the values shown in Table 1.
-
-.TS
-c s s
-l l l
-l l l.
-Table 1 Compatibility Map Component Masks
-_
-Mask Value Affecting
-_
-XkbSymInterpMask (1<<0) Symbol interpretations
-XkbGroupCompatMask (1<<1) Group maps
-XkbAllCompatMask (0x3) All compatibility map components
-.TE
-
-If no compatibility map structure is allocated in
-.I xkb
-upon entry,
-.I XkbGetCompatMap
-allocates one. If one already exists, its contents are overwritten with the
-returned results.
-
-.I XkbGetCompatMap
-fetches compatibility map information for the device specified by the
-.I device_spec
-field of
-.I xkb.
-Unless you have specifically modified this field, it is the default keyboard
-device.
-.I XkbGetCompatMap
-returns Success if successful, BadAlloc if it is unable to obtain necessary
-storage for either the return values or work space, BadMatch if the
-.I dpy
-field of the
-.I xkb
-argument is non-NULL and does not match the
-.I display
-argument, and BadLength under certain conditions caused by server or Xkb
-implementation errors.
-.SH DIAGNOSTICS
-.TP 15
-.B BadAlloc
-Unable to allocate storage
-.TP 15
-.B BadLength
-The length of a request is shorter or longer than that required to minimally contain the arguments
-.TP 15
-.B BadMatch
-A compatible version of Xkb was not available in the server or an argument has
-correct type and range, but is otherwise invalid
+'\" t
+.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the "Software"),
+.\" to deal in the Software without restriction, including without limitation
+.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
+.\" and/or sell copies of the Software, and to permit persons to whom the
+.\" Software is furnished to do so, subject to the following conditions:
+.\"
+.\" The above copyright notice and this permission notice (including the next
+.\" paragraph) shall be included in all copies or substantial portions of the
+.\" Software.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+.\" DEALINGS IN THE SOFTWARE.
+.\"
+.TH XkbGetCompatMap __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbGetCompatMap \- Fetch any combination of the current compatibility map
+components from the server
+.SH SYNOPSIS
+.HP
+.B Status XkbGetCompatMap
+.BI "(\^Display *" "display" "\^,"
+.BI "unsigned int " "which" "\^,"
+.BI "XkbDescRec *" "xkb" "\^);"
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- display
+connection to server
+.TP
+.I \- which
+mask of compatibility map components to fetch
+.TP
+.I \- xkb
+keyboard description where results placed
+.SH DESCRIPTION
+.LP
+When another client modifies the compatibility map, you are notified if you have
+selected for XkbCompatMapNotify events.
+.I XkbGetCompatMap
+is particularly useful when you receive an event of this type, as it allows you
+to update your program's version of the compatibility map to match the modified
+version now in the server. If your program is dealing with multiple servers and
+needs to configure them all in a similar manner, the updated compatibility map
+may be used to reconfigure other servers.
+
+.I XkbGetCompatMap
+fetches the components of the compatibility map specified in
+.I which
+from the server specified by
+.I display
+and places them in the
+.I compat
+structure of the keyboard description
+.I xkb.
+Valid values for
+.I which
+are an inclusive OR of the values shown in Table 1.
+
+.TS
+c s s
+l l l
+l l l.
+Table 1 Compatibility Map Component Masks
+_
+Mask Value Affecting
+_
+XkbSymInterpMask (1<<0) Symbol interpretations
+XkbGroupCompatMask (1<<1) Group maps
+XkbAllCompatMask (0x3) All compatibility map components
+.TE
+
+If no compatibility map structure is allocated in
+.I xkb
+upon entry,
+.I XkbGetCompatMap
+allocates one. If one already exists, its contents are overwritten with the
+returned results.
+
+.I XkbGetCompatMap
+fetches compatibility map information for the device specified by the
+.I device_spec
+field of
+.I xkb.
+Unless you have specifically modified this field, it is the default keyboard
+device.
+.I XkbGetCompatMap
+returns Success if successful, BadAlloc if it is unable to obtain necessary
+storage for either the return values or work space, BadMatch if the
+.I dpy
+field of the
+.I xkb
+argument is non-NULL and does not match the
+.I display
+argument, and BadLength under certain conditions caused by server or Xkb
+implementation errors.
+.SH DIAGNOSTICS
+.TP 15
+.B BadAlloc
+Unable to allocate storage
+.TP 15
+.B BadLength
+The length of a request is shorter or longer than that required to minimally contain the arguments
+.TP 15
+.B BadMatch
+A compatible version of Xkb was not available in the server or an argument has
+correct type and range, but is otherwise invalid
diff --git a/libX11/man/xkb/XkbGetControls.man b/libX11/man/xkb/XkbGetControls.man
index 47829f853..fc9b8c036 100644
--- a/libX11/man/xkb/XkbGetControls.man
+++ b/libX11/man/xkb/XkbGetControls.man
@@ -1,162 +1,162 @@
-'\" t
-.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
-.\"
-.\" Permission is hereby granted, free of charge, to any person obtaining a
-.\" copy of this software and associated documentation files (the "Software"),
-.\" to deal in the Software without restriction, including without limitation
-.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
-.\" and/or sell copies of the Software, and to permit persons to whom the
-.\" Software is furnished to do so, subject to the following conditions:
-.\"
-.\" The above copyright notice and this permission notice (including the next
-.\" paragraph) shall be included in all copies or substantial portions of the
-.\" Software.
-.\"
-.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-.\" DEALINGS IN THE SOFTWARE.
-.\"
-.TH XkbGetControls __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
-.SH NAME
-XkbGetControls \- Finds the current state of Xkb server controls
-.SH SYNOPSIS
-.HP
-.B Status XkbGetControls
-.BI "(\^Display *" "display" "\^,"
-.BI "unsigned long " "which" "\^,"
-.BI "XkbDescPtr " "xkb" "\^);"
-.if n .ti +5n
-.if t .ti +.5i
-.SH ARGUMENTS
-.TP
-.I \- display
-connection to X server
-.TP
-.I \- which
-mask of controls requested
-.TP
-.I \- xkb
-keyboard description for controls information
-.SH DESCRIPTION
-.LP
-.I XkbGetControls
-queries the server for the requested control information, waits for a reply, and
-then copies the server's values for the requested information into the
-.I ctrls
-structure of the
-.I xkb
-argument. Only those components specified by the
-.I which
-parameter are copied. Valid values for
-.I which
-are any combination of the masks listed in Table 1 that have "ok" in the
-.I which
-column.
-
-Table 1 shows the actual values for the individual mask bits used to select
-controls for
-modification and to enable and disable the control. Note that the same mask bit
-is used to
-specify general modifications to the parameters used to configure the control
-(which), and to
-enable and disable the control (enabled_ctrls). The anomalies in Table 1 (no
-"ok" in column)
-are for controls that have no configurable attributes; and for controls that are
-not boolean
-controls and therefore cannot be enabled or disabled.
-
-.TS
-c s s s
-l l l l
-l l l l
-l l l l.
-Table 1 Controls Mask Bits
-_
-Mask Bit which or enabled Value
- changed_ctrls _ctrls
-_
-XkbRepeatKeysMask ok ok (1L<<0)
-XkbSlowKeysMask ok ok (1L<<1)
-XkbBounceKeysMask ok ok (1L<<2)
-XkbStickyKeysMask ok ok (1L<<3)
-XkbMouseKeysMask ok ok (1L<<4)
-XkbMouseKeysAccelMask ok ok (1L<<5)
-XkbAccessXKeysMask ok ok (1L<<6)
-XkbAccessXTimeoutMask ok ok (1L<<7)
-XkbAccessXFeedbackMask ok ok (1L<<8)
-XkbAudibleBellMask ok (1L<<9)
-XkbOverlay1Mask ok (1L<<10)
-XkbOverlay2Mask ok (1L<<11)
-XkbIgnoreGroupLockMask ok (1L<<12)
-XkbGroupsWrapMask ok (1L<<27)
-XkbInternalModsMask ok (1L<<28)
-XkbIgnoreLockModsMask ok (1L<<29)
-XkbPerKeyRepeatMask ok (1L<<30)
-XkbControlsEnabledMask ok (1L<<31)
-XkbAccessXOptionsMask ok ok (XkbStickyKeysMask |
- XkbAccessXFeedbackMask)
-XkbAllBooleanCtrlsMask ok (0x00001FFF)
-XkbAllControlsMask ok (0xF8001FFF)
-.TE
-
-
-If
-.I xkb->ctrls
-is NULL,
-.I XkbGetControls
-allocates and initializes it before obtaining the values specified by
-.I which.
-If
-.I xkb->ctrls
-is not NULL,
-.I XkbGetControls
-modifies only those portions of
-.I xkb->ctrls
-corresponding to the values specified by
-.I which.
-
-.I XkbGetControls
-returns Success if successful; otherwise, it returns BadAlloc if it cannot
-obtain sufficient storage, BadMatch if
-.I xkb
-is NULL or
-.I which
-is empty, or BadImplementation.
-
-To free the
-.I ctrls
-member of a keyboard description, use
-.I XkbFreeControls.
-
-The
-.I num_groups
-field in the
-.I ctrls
-structure is always filled in by
-.I XkbGetControls,
-regardless of which bits are selected by
-.I which.
-.SH "RETURN VALUES"
-.TP 15
-Success
-The
-.I XkbGetControls
-function returns Success if successful.
-.SH DIAGNOSTICS
-.TP 15
-.B BadAlloc
-Unable to allocate storage
-.TP 15
-.B BadImplementation
-Invalid reply from server
-.TP 15
-.B BadMatch
-A compatible version of Xkb was not available in the server or an argument has
-correct type and range, but is otherwise invalid
-
-.SH "SEE ALSO"
-.BR XkbFreeControls (__libmansuffix__)
+'\" t
+.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the "Software"),
+.\" to deal in the Software without restriction, including without limitation
+.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
+.\" and/or sell copies of the Software, and to permit persons to whom the
+.\" Software is furnished to do so, subject to the following conditions:
+.\"
+.\" The above copyright notice and this permission notice (including the next
+.\" paragraph) shall be included in all copies or substantial portions of the
+.\" Software.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+.\" DEALINGS IN THE SOFTWARE.
+.\"
+.TH XkbGetControls __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbGetControls \- Finds the current state of Xkb server controls
+.SH SYNOPSIS
+.HP
+.B Status XkbGetControls
+.BI "(\^Display *" "display" "\^,"
+.BI "unsigned long " "which" "\^,"
+.BI "XkbDescPtr " "xkb" "\^);"
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- display
+connection to X server
+.TP
+.I \- which
+mask of controls requested
+.TP
+.I \- xkb
+keyboard description for controls information
+.SH DESCRIPTION
+.LP
+.I XkbGetControls
+queries the server for the requested control information, waits for a reply, and
+then copies the server's values for the requested information into the
+.I ctrls
+structure of the
+.I xkb
+argument. Only those components specified by the
+.I which
+parameter are copied. Valid values for
+.I which
+are any combination of the masks listed in Table 1 that have "ok" in the
+.I which
+column.
+
+Table 1 shows the actual values for the individual mask bits used to select
+controls for
+modification and to enable and disable the control. Note that the same mask bit
+is used to
+specify general modifications to the parameters used to configure the control
+(which), and to
+enable and disable the control (enabled_ctrls). The anomalies in Table 1 (no
+"ok" in column)
+are for controls that have no configurable attributes; and for controls that are
+not boolean
+controls and therefore cannot be enabled or disabled.
+
+.TS
+c s s s
+l l l l
+l l l l
+l l l l.
+Table 1 Controls Mask Bits
+_
+Mask Bit which or enabled Value
+ changed_ctrls _ctrls
+_
+XkbRepeatKeysMask ok ok (1L<<0)
+XkbSlowKeysMask ok ok (1L<<1)
+XkbBounceKeysMask ok ok (1L<<2)
+XkbStickyKeysMask ok ok (1L<<3)
+XkbMouseKeysMask ok ok (1L<<4)
+XkbMouseKeysAccelMask ok ok (1L<<5)
+XkbAccessXKeysMask ok ok (1L<<6)
+XkbAccessXTimeoutMask ok ok (1L<<7)
+XkbAccessXFeedbackMask ok ok (1L<<8)
+XkbAudibleBellMask ok (1L<<9)
+XkbOverlay1Mask ok (1L<<10)
+XkbOverlay2Mask ok (1L<<11)
+XkbIgnoreGroupLockMask ok (1L<<12)
+XkbGroupsWrapMask ok (1L<<27)
+XkbInternalModsMask ok (1L<<28)
+XkbIgnoreLockModsMask ok (1L<<29)
+XkbPerKeyRepeatMask ok (1L<<30)
+XkbControlsEnabledMask ok (1L<<31)
+XkbAccessXOptionsMask ok ok (XkbStickyKeysMask |
+ XkbAccessXFeedbackMask)
+XkbAllBooleanCtrlsMask ok (0x00001FFF)
+XkbAllControlsMask ok (0xF8001FFF)
+.TE
+
+
+If
+.I xkb->ctrls
+is NULL,
+.I XkbGetControls
+allocates and initializes it before obtaining the values specified by
+.I which.
+If
+.I xkb->ctrls
+is not NULL,
+.I XkbGetControls
+modifies only those portions of
+.I xkb->ctrls
+corresponding to the values specified by
+.I which.
+
+.I XkbGetControls
+returns Success if successful; otherwise, it returns BadAlloc if it cannot
+obtain sufficient storage, BadMatch if
+.I xkb
+is NULL or
+.I which
+is empty, or BadImplementation.
+
+To free the
+.I ctrls
+member of a keyboard description, use
+.I XkbFreeControls.
+
+The
+.I num_groups
+field in the
+.I ctrls
+structure is always filled in by
+.I XkbGetControls,
+regardless of which bits are selected by
+.I which.
+.SH "RETURN VALUES"
+.TP 15
+Success
+The
+.I XkbGetControls
+function returns Success if successful.
+.SH DIAGNOSTICS
+.TP 15
+.B BadAlloc
+Unable to allocate storage
+.TP 15
+.B BadImplementation
+Invalid reply from server
+.TP 15
+.B BadMatch
+A compatible version of Xkb was not available in the server or an argument has
+correct type and range, but is otherwise invalid
+
+.SH "SEE ALSO"
+.BR XkbFreeControls (__libmansuffix__)
diff --git a/libX11/man/xkb/XkbGetControlsChanges.man b/libX11/man/xkb/XkbGetControlsChanges.man
index e93de049b..25e6381a6 100644
--- a/libX11/man/xkb/XkbGetControlsChanges.man
+++ b/libX11/man/xkb/XkbGetControlsChanges.man
@@ -1,230 +1,230 @@
-'\" t
-.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
-.\"
-.\" Permission is hereby granted, free of charge, to any person obtaining a
-.\" copy of this software and associated documentation files (the "Software"),
-.\" to deal in the Software without restriction, including without limitation
-.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
-.\" and/or sell copies of the Software, and to permit persons to whom the
-.\" Software is furnished to do so, subject to the following conditions:
-.\"
-.\" The above copyright notice and this permission notice (including the next
-.\" paragraph) shall be included in all copies or substantial portions of the
-.\" Software.
-.\"
-.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-.\" DEALINGS IN THE SOFTWARE.
-.\"
-.TH XkbGetControlsChanges __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
-.SH NAME
-XkbGetControlsChanges \- Updates a local copy of a keyboard description with the
-changes previously noted by one or more calls to XkbNoteControlsChanges
-.SH SYNOPSIS
-.HP
-XkbGetControlsChanges
-.BI "(\^Display *" "dpy" "\^,"
-.BI "XkbDescPtr " "xkb" "\^,"
-.BI "XkbNameChangesPtr " "changes" "\^);"
-.if n .ti +5n
-.if t .ti +.5i
-.SH ARGUMENTS
-.TP
-.I \- dpy
-connection to X server
-.TP
-.I \- xkb
-xkb->ctrls will be updated
-.TP
-.I \- changes
-indicates which parts of xkb->ctrls to update
-.SH DESCRIPTION
-.LP
-Whenever a field in the controls structure changes in the server's keyboard
-description, the server sends an XkbControlsNotify event to all interested
-clients.To receive XkbControlsNotify events under all possible conditions, use
-.I XkbSelectEvents
-and pass XkbControlsNotifyMask in both
-.I bits_to_change
-and
-.I values_for_bits.
-
-To receive XkbControlsNotify events only under certain conditions, use
-.I XkbSelectEventDetails
-using XkbControlsNotify as the
-.I event_type
-and specifying the desired state changes in
-.I bits_to_change
-and
-.I values_for_bits
-using mask bits from Table 1.
-
-Table 1 shows the actual values for the individual mask bits used to select
-controls for
-modification and to enable and disable the control. Note that the same mask bit
-is used to
-specify general modifications to the parameters used to configure the control
-(which), and to
-enable and disable the control (enabled_ctrls). The anomalies in the table (no
-"ok" in column)
-are for controls that have no configurable attributes; and for controls that are
-not boolean
-controls and therefore cannot be enabled or disabled.
-
-.TS
-c s s s
-l l l l
-l l l l
-l l l l.
-Table 1 Controls Mask Bits
-_
-Mask Bit which or enabled Value
- changed_ctrls _ctrls
-_
-XkbRepeatKeysMask ok ok (1L<<0)
-XkbSlowKeysMask ok ok (1L<<1)
-XkbBounceKeysMask ok ok (1L<<2)
-XkbStickyKeysMask ok ok (1L<<3)
-XkbMouseKeysMask ok ok (1L<<4)
-XkbMouseKeysAccelMask ok ok (1L<<5)
-XkbAccessXKeysMask ok ok (1L<<6)
-XkbAccessXTimeoutMask ok ok (1L<<7)
-XkbAccessXFeedbackMask ok ok (1L<<8)
-XkbAudibleBellMask ok (1L<<9)
-XkbOverlay1Mask ok (1L<<10)
-XkbOverlay2Mask ok (1L<<11)
-XkbIgnoreGroupLockMask ok (1L<<12)
-XkbGroupsWrapMask ok (1L<<27)
-XkbInternalModsMask ok (1L<<28)
-XkbIgnoreLockModsMask ok (1L<<29)
-XkbPerKeyRepeatMask ok (1L<<30)
-XkbControlsEnabledMask ok (1L<<31)
-XkbAccessXOptionsMask ok ok (XkbStickyKeysMask |
-XkbAccessXFeedbackMask)
-XkbAllBooleanCtrlsMask ok (0x00001FFF)
-XkbAllControlsMask ok (0xF8001FFF)
-.TE
-
-The
-.I changed_ctrls
-field specifies the controls components that have changed and consists of bits
-taken from the masks defined in Table 10.7 with "ok" in the
-.I changed_ctrls
-column.
-
-The controls currently enabled in the server are reported in the
-.I enabled_ctrls
-field. If any controls were just enabled or disabled (that is, the contents of
-the
-.I enabled_ctrls
-field changed), they are flagged in the
-.I enabled_ctrl_changes
-field. The valid bits for these fields are the masks listed in Table 10.7 with
-"ok" in the
-.I enabled_ctrls
-column. The
-.I num_groups
-field reports the number of groups bound to the key belonging to the most number
-of groups and is automatically updated when the keyboard mapping changes.
-
-If the change was caused by a request from a client, the
-.I keycode
-and
-.I event_type
-fields are set to zero and the
-.I req_major
-and
-.I req_minor
-fields identify the request. The
-.I req_major value is the same as the major extension opcode. Otherwise,
-.I event_type
-is set to the type of event that caused the change (one of KeyPress, KeyRelease,
-DeviceKeyPress, DeviceKeyRelease, ButtonPress or ButtonRelease), and
-.I req_major
-and
-.I req_minor
-are undefined. If
-.I event_type
-is KeyPress, KeyRelease, DeviceKeyPress, or DeviceKeyRelease, the
-.I keycode
-field is set to the key that caused the change. If
-.I event_type
-is ButtonPress or ButtonRelease,
-.I keycode
-contains the button number.
-
-When a client receives an XkbControlsNotify event, it can note the changes in a
-changes structure using
-.I XkbNoteControlsChanges.
-
-.I XkbGetControlsChanges
-examines the
-.I changes
-parameter, queries the server for the necessary information, and copies the
-results into the
-.I xkb->ctrls
-keyboard description. If the
-.I ctrls
-field of
-.I xkb
-is NULL,
-.I XkbGetControlsChanges
-allocates and initializes it. To free the
-.I ctrls
-field, use
-XkbFreeControls.
-
-.I XkbGetControlsChanges
-returns Success if successful and can generate BadAlloc, BadImplementation, and
-BadMatch errors.
-.SH "RETURN VALUES"
-.TP 15
-Success
-The
-.I XkbGetControlsChanges
-function returns Success if the query of the server was successful.
-.SH STRUCTURES
-.LP
-.nf
-The structure for the XkbControlsNotify event is defined as follows:
-
-typedef struct {
- int type; /\(** Xkb extension base event code */
- unsigned long serial; /\(** X server serial number for event */
- Bool send_event; /\(** True => synthetically generated */
- Display * display; /\(** server connection where event generated */
- Time time; /\(** server time when event generated */
- int xkb_type; /\(** XkbCompatMapNotify */
- int device; /\(** Xkb device ID, will not be XkbUseCoreKbd */
- unsigned int changed_ctrls; /\(** bits indicating which controls data have
-changed*/
- unsigned int enabled_ctrls; /\(** controls currently enabled in server */
- unsigned int enabled_ctrl_changes; /\(** bits indicating enabled/disabled
-controls */
- int num_groups; /\(** current number of keyboard groups */
- KeyCode keycode; /\(** != 0 => keycode of key causing change */
- char event_type; /\(** Type of event causing change */
- char req_major; /\(** major event code of event causing change */
- char req_minor; /\(** minor event code of event causing change */
-} XkbControlsNotifyEvent;
-.fi
-.SH DIAGNOSTICS
-.TP 15
-.B BadAlloc
-Unable to allocate storage
-.TP 15
-.B BadImplementation
-Invalid reply from server
-.TP 15
-.B BadMatch
-A compatible version of Xkb was not available in the server or an argument has
-correct type and range, but is otherwise invalid
-.SH "SEE ALSO"
-.BR XkbFreeControls (__libmansuffix__),
-.BR XkbNoteControlsChanges (__libmansuffix__),
-.BR XkbSelectEventDetails (__libmansuffix__),
-.BR XkbSelectEvents (__libmansuffix__)
+'\" t
+.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the "Software"),
+.\" to deal in the Software without restriction, including without limitation
+.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
+.\" and/or sell copies of the Software, and to permit persons to whom the
+.\" Software is furnished to do so, subject to the following conditions:
+.\"
+.\" The above copyright notice and this permission notice (including the next
+.\" paragraph) shall be included in all copies or substantial portions of the
+.\" Software.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+.\" DEALINGS IN THE SOFTWARE.
+.\"
+.TH XkbGetControlsChanges __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbGetControlsChanges \- Updates a local copy of a keyboard description with the
+changes previously noted by one or more calls to XkbNoteControlsChanges
+.SH SYNOPSIS
+.HP
+XkbGetControlsChanges
+.BI "(\^Display *" "dpy" "\^,"
+.BI "XkbDescPtr " "xkb" "\^,"
+.BI "XkbNameChangesPtr " "changes" "\^);"
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- dpy
+connection to X server
+.TP
+.I \- xkb
+xkb->ctrls will be updated
+.TP
+.I \- changes
+indicates which parts of xkb->ctrls to update
+.SH DESCRIPTION
+.LP
+Whenever a field in the controls structure changes in the server's keyboard
+description, the server sends an XkbControlsNotify event to all interested
+clients.To receive XkbControlsNotify events under all possible conditions, use
+.I XkbSelectEvents
+and pass XkbControlsNotifyMask in both
+.I bits_to_change
+and
+.I values_for_bits.
+
+To receive XkbControlsNotify events only under certain conditions, use
+.I XkbSelectEventDetails
+using XkbControlsNotify as the
+.I event_type
+and specifying the desired state changes in
+.I bits_to_change
+and
+.I values_for_bits
+using mask bits from Table 1.
+
+Table 1 shows the actual values for the individual mask bits used to select
+controls for
+modification and to enable and disable the control. Note that the same mask bit
+is used to
+specify general modifications to the parameters used to configure the control
+(which), and to
+enable and disable the control (enabled_ctrls). The anomalies in the table (no
+"ok" in column)
+are for controls that have no configurable attributes; and for controls that are
+not boolean
+controls and therefore cannot be enabled or disabled.
+
+.TS
+c s s s
+l l l l
+l l l l
+l l l l.
+Table 1 Controls Mask Bits
+_
+Mask Bit which or enabled Value
+ changed_ctrls _ctrls
+_
+XkbRepeatKeysMask ok ok (1L<<0)
+XkbSlowKeysMask ok ok (1L<<1)
+XkbBounceKeysMask ok ok (1L<<2)
+XkbStickyKeysMask ok ok (1L<<3)
+XkbMouseKeysMask ok ok (1L<<4)
+XkbMouseKeysAccelMask ok ok (1L<<5)
+XkbAccessXKeysMask ok ok (1L<<6)
+XkbAccessXTimeoutMask ok ok (1L<<7)
+XkbAccessXFeedbackMask ok ok (1L<<8)
+XkbAudibleBellMask ok (1L<<9)
+XkbOverlay1Mask ok (1L<<10)
+XkbOverlay2Mask ok (1L<<11)
+XkbIgnoreGroupLockMask ok (1L<<12)
+XkbGroupsWrapMask ok (1L<<27)
+XkbInternalModsMask ok (1L<<28)
+XkbIgnoreLockModsMask ok (1L<<29)
+XkbPerKeyRepeatMask ok (1L<<30)
+XkbControlsEnabledMask ok (1L<<31)
+XkbAccessXOptionsMask ok ok (XkbStickyKeysMask |
+XkbAccessXFeedbackMask)
+XkbAllBooleanCtrlsMask ok (0x00001FFF)
+XkbAllControlsMask ok (0xF8001FFF)
+.TE
+
+The
+.I changed_ctrls
+field specifies the controls components that have changed and consists of bits
+taken from the masks defined in Table 10.7 with "ok" in the
+.I changed_ctrls
+column.
+
+The controls currently enabled in the server are reported in the
+.I enabled_ctrls
+field. If any controls were just enabled or disabled (that is, the contents of
+the
+.I enabled_ctrls
+field changed), they are flagged in the
+.I enabled_ctrl_changes
+field. The valid bits for these fields are the masks listed in Table 10.7 with
+"ok" in the
+.I enabled_ctrls
+column. The
+.I num_groups
+field reports the number of groups bound to the key belonging to the most number
+of groups and is automatically updated when the keyboard mapping changes.
+
+If the change was caused by a request from a client, the
+.I keycode
+and
+.I event_type
+fields are set to zero and the
+.I req_major
+and
+.I req_minor
+fields identify the request. The
+.I req_major value is the same as the major extension opcode. Otherwise,
+.I event_type
+is set to the type of event that caused the change (one of KeyPress, KeyRelease,
+DeviceKeyPress, DeviceKeyRelease, ButtonPress or ButtonRelease), and
+.I req_major
+and
+.I req_minor
+are undefined. If
+.I event_type
+is KeyPress, KeyRelease, DeviceKeyPress, or DeviceKeyRelease, the
+.I keycode
+field is set to the key that caused the change. If
+.I event_type
+is ButtonPress or ButtonRelease,
+.I keycode
+contains the button number.
+
+When a client receives an XkbControlsNotify event, it can note the changes in a
+changes structure using
+.I XkbNoteControlsChanges.
+
+.I XkbGetControlsChanges
+examines the
+.I changes
+parameter, queries the server for the necessary information, and copies the
+results into the
+.I xkb->ctrls
+keyboard description. If the
+.I ctrls
+field of
+.I xkb
+is NULL,
+.I XkbGetControlsChanges
+allocates and initializes it. To free the
+.I ctrls
+field, use
+XkbFreeControls.
+
+.I XkbGetControlsChanges
+returns Success if successful and can generate BadAlloc, BadImplementation, and
+BadMatch errors.
+.SH "RETURN VALUES"
+.TP 15
+Success
+The
+.I XkbGetControlsChanges
+function returns Success if the query of the server was successful.
+.SH STRUCTURES
+.LP
+.nf
+The structure for the XkbControlsNotify event is defined as follows:
+
+typedef struct {
+ int type; /\(** Xkb extension base event code */
+ unsigned long serial; /\(** X server serial number for event */
+ Bool send_event; /\(** True => synthetically generated */
+ Display * display; /\(** server connection where event generated */
+ Time time; /\(** server time when event generated */
+ int xkb_type; /\(** XkbCompatMapNotify */
+ int device; /\(** Xkb device ID, will not be XkbUseCoreKbd */
+ unsigned int changed_ctrls; /\(** bits indicating which controls data have
+changed*/
+ unsigned int enabled_ctrls; /\(** controls currently enabled in server */
+ unsigned int enabled_ctrl_changes; /\(** bits indicating enabled/disabled
+controls */
+ int num_groups; /\(** current number of keyboard groups */
+ KeyCode keycode; /\(** != 0 => keycode of key causing change */
+ char event_type; /\(** Type of event causing change */
+ char req_major; /\(** major event code of event causing change */
+ char req_minor; /\(** minor event code of event causing change */
+} XkbControlsNotifyEvent;
+.fi
+.SH DIAGNOSTICS
+.TP 15
+.B BadAlloc
+Unable to allocate storage
+.TP 15
+.B BadImplementation
+Invalid reply from server
+.TP 15
+.B BadMatch
+A compatible version of Xkb was not available in the server or an argument has
+correct type and range, but is otherwise invalid
+.SH "SEE ALSO"
+.BR XkbFreeControls (__libmansuffix__),
+.BR XkbNoteControlsChanges (__libmansuffix__),
+.BR XkbSelectEventDetails (__libmansuffix__),
+.BR XkbSelectEvents (__libmansuffix__)
diff --git a/libX11/man/xkb/XkbGetDetectableAutorepeat.man b/libX11/man/xkb/XkbGetDetectableAutorepeat.man
index 2544abf75..5bffb759c 100644
--- a/libX11/man/xkb/XkbGetDetectableAutorepeat.man
+++ b/libX11/man/xkb/XkbGetDetectableAutorepeat.man
@@ -1,92 +1,92 @@
-.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
-.\"
-.\" Permission is hereby granted, free of charge, to any person obtaining a
-.\" copy of this software and associated documentation files (the "Software"),
-.\" to deal in the Software without restriction, including without limitation
-.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
-.\" and/or sell copies of the Software, and to permit persons to whom the
-.\" Software is furnished to do so, subject to the following conditions:
-.\"
-.\" The above copyright notice and this permission notice (including the next
-.\" paragraph) shall be included in all copies or substantial portions of the
-.\" Software.
-.\"
-.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-.\" DEALINGS IN THE SOFTWARE.
-.\"
-.TH XkbGetDetectableAutoRepeat __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
-.SH NAME
-XkbGetDetectableAutoRepeat \- Determines whether or not the server supports
-DetectableAutoRepeat
-.SH SYNOPSIS
-.HP
-.B Bool XkbGetDetectableAutoRepeat
-.BI "(\^Display *" "display" "\^,"
-.BI "Bool *" "supported_rtrn" "\^);"
-.if n .ti +5n
-.if t .ti +.5i
-.SH ARGUMENTS
-.TP
-.I \- display
-connection to X server
-.TP
-.I \- supported_rtrn
-backfilled True if DetectableAutoRepeat supported
-.SH DESCRIPTION
-.LP
-Auto-repeat is the generation of multiple key events by a keyboard when the user
-presses a key and holds it down. Keyboard hardware and device-dependent X server
-software often implement auto-repeat by generating multiple KeyPress events with no
-intervening KeyRelease event. The standard behavior of the X server is to generate
-a KeyRelease event for every KeyPress event. If the keyboard hardware and
-device-dependent software of the X server implement auto-repeat by generating
-multiple KeyPress events, the device-independent part of the X server by default
-synthetically generates a KeyRelease event after each KeyPress event. This provides
-predictable behavior for X clients, but does not allow those clients to detect the
-fact that a key is auto-repeating.
-
-Xkb allows clients to request
-.I detectable auto-repeat.
-If a client requests and the server supports DetectableAutoRepeat, Xkb generates
-KeyRelease events only when the key is physically released. If DetectableAutoRepeat
-is not supported or has not been requested, the server synthesizes a KeyRelease
-event for each repeating KeyPress event it generates.
-
-DetectableAutoRepeat, unlike other controls, is not contained in the XkbControlsRec
-structure, nor can it be enabled or disabled via the EnabledControls control.
-Instead, query and set DetectableAutoRepeat using
-.I XkbGetDetectableAutoRepeat
-and
-.I XkbSetDetectableAutoRepeat.
-
-DetectableAutoRepeat is a condition that applies to all keyboard devices for a
-client's connection to a given X server; it cannot be selectively set for some
-devices and not for others. For this reason, none of the Xkb library functions
-involving DetectableAutoRepeat involve a device specifier.
-
-.I XkbGetDetectableAutoRepeat
-queries the server for the current state of DetectableAutoRepeat and waits for a
-reply. If
-.I supported_rtrn
-is not NULL, it backfills
-.I supported_rtrn
-with True if the server supports DetectableAutoRepeat, and False otherwise.
-.I XkbGetDetectableAutoRepeat
-returns the current state of DetectableAutoRepeat for the requesting client:
-True if DetectableAutoRepeat is set, and False otherwise.
-.SH "RETURN VALUES"
-.TP 15
-True
-The
-.I XkbGetDetectableAutoRepeat
-function returns True if the server supports DetectableAutoRepeat.
-.TP 15
-False
-The
-.I XkbGetDetectableAutoRepeat
-function returns False if the server does not support DetectableAutoRepeat.
+.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the "Software"),
+.\" to deal in the Software without restriction, including without limitation
+.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
+.\" and/or sell copies of the Software, and to permit persons to whom the
+.\" Software is furnished to do so, subject to the following conditions:
+.\"
+.\" The above copyright notice and this permission notice (including the next
+.\" paragraph) shall be included in all copies or substantial portions of the
+.\" Software.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+.\" DEALINGS IN THE SOFTWARE.
+.\"
+.TH XkbGetDetectableAutoRepeat __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbGetDetectableAutoRepeat \- Determines whether or not the server supports
+DetectableAutoRepeat
+.SH SYNOPSIS
+.HP
+.B Bool XkbGetDetectableAutoRepeat
+.BI "(\^Display *" "display" "\^,"
+.BI "Bool *" "supported_rtrn" "\^);"
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- display
+connection to X server
+.TP
+.I \- supported_rtrn
+backfilled True if DetectableAutoRepeat supported
+.SH DESCRIPTION
+.LP
+Auto-repeat is the generation of multiple key events by a keyboard when the user
+presses a key and holds it down. Keyboard hardware and device-dependent X server
+software often implement auto-repeat by generating multiple KeyPress events with no
+intervening KeyRelease event. The standard behavior of the X server is to generate
+a KeyRelease event for every KeyPress event. If the keyboard hardware and
+device-dependent software of the X server implement auto-repeat by generating
+multiple KeyPress events, the device-independent part of the X server by default
+synthetically generates a KeyRelease event after each KeyPress event. This provides
+predictable behavior for X clients, but does not allow those clients to detect the
+fact that a key is auto-repeating.
+
+Xkb allows clients to request
+.I detectable auto-repeat.
+If a client requests and the server supports DetectableAutoRepeat, Xkb generates
+KeyRelease events only when the key is physically released. If DetectableAutoRepeat
+is not supported or has not been requested, the server synthesizes a KeyRelease
+event for each repeating KeyPress event it generates.
+
+DetectableAutoRepeat, unlike other controls, is not contained in the XkbControlsRec
+structure, nor can it be enabled or disabled via the EnabledControls control.
+Instead, query and set DetectableAutoRepeat using
+.I XkbGetDetectableAutoRepeat
+and
+.I XkbSetDetectableAutoRepeat.
+
+DetectableAutoRepeat is a condition that applies to all keyboard devices for a
+client's connection to a given X server; it cannot be selectively set for some
+devices and not for others. For this reason, none of the Xkb library functions
+involving DetectableAutoRepeat involve a device specifier.
+
+.I XkbGetDetectableAutoRepeat
+queries the server for the current state of DetectableAutoRepeat and waits for a
+reply. If
+.I supported_rtrn
+is not NULL, it backfills
+.I supported_rtrn
+with True if the server supports DetectableAutoRepeat, and False otherwise.
+.I XkbGetDetectableAutoRepeat
+returns the current state of DetectableAutoRepeat for the requesting client:
+True if DetectableAutoRepeat is set, and False otherwise.
+.SH "RETURN VALUES"
+.TP 15
+True
+The
+.I XkbGetDetectableAutoRepeat
+function returns True if the server supports DetectableAutoRepeat.
+.TP 15
+False
+The
+.I XkbGetDetectableAutoRepeat
+function returns False if the server does not support DetectableAutoRepeat.
diff --git a/libX11/man/xkb/XkbGetDeviceButtonActions.man b/libX11/man/xkb/XkbGetDeviceButtonActions.man
index f88dc39db..b3f8f7472 100644
--- a/libX11/man/xkb/XkbGetDeviceButtonActions.man
+++ b/libX11/man/xkb/XkbGetDeviceButtonActions.man
@@ -1,114 +1,114 @@
-'\" t
-.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
-.\"
-.\" Permission is hereby granted, free of charge, to any person obtaining a
-.\" copy of this software and associated documentation files (the "Software"),
-.\" to deal in the Software without restriction, including without limitation
-.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
-.\" and/or sell copies of the Software, and to permit persons to whom the
-.\" Software is furnished to do so, subject to the following conditions:
-.\"
-.\" The above copyright notice and this permission notice (including the next
-.\" paragraph) shall be included in all copies or substantial portions of the
-.\" Software.
-.\"
-.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-.\" DEALINGS IN THE SOFTWARE.
-.\"
-.TH XkbGetDeviceButtonActions __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
-.SH NAME
-XkbGetDeviceButtonActions \- Query the button actions associated with an X Input
-Extension device
-.SH SYNOPSIS
-.HP
-.B Status XkbGetDeviceButtonActions
-.BI "(\^Display *" "dpy" "\^,"
-.BI "XkbDeviceInfoPtr " "device_info" "\^,"
-.BI "Bool " "all_buttons" "\^,"
-.BI "unsigned int " "first_button" "\^,"
-.BI "unsigned int " "num_buttons" "\^);"
-.if n .ti +5n
-.if t .ti +.5i
-.SH ARGUMENTS
-.TP
-.I \- dpy
-connection to X server
-.TP
-.I \- device_info
-structure to update with results
-.TP
-.I \- all_buttons
-True => get information for all buttons
-.TP
-.I \- first_button
-number of first button for which info is desired
-.TP
-.I \- num_buttons
-number of buttons for which info is desired
-.SH DESCRIPTION
-.LP
-.I XkbGetDeviceButtonActions
-queries the server for the desired button information for the device indicated
-by the
-.I device_spec
-field of
-.I device_info
-and waits for a reply. If successful,
-.I XkbGetDeviceButtonActions
-backfills the button actions
-.I (btn_acts
-field of
-.I device_info)
-for only the requested buttons, updates the
-.I name, type, supported,
-and
-.I unsupported
-fields, and returns Success.
-
-.I all_buttons, first_button
-and
-.I num_buttons
-specify the device buttons for which actions should be returned. Setting
-.I all_buttons
-to True requests actions for all device buttons; if
-.I all_buttons
-is False,
-.I first_button
-and
-.I num_buttons
-specify a range of buttons for which actions are requested.
-
-If a compatible version of Xkb is not available in the server or the Xkb
-extension has not been properly initialized,
-.I XkbGetDeviceButtonActions
-returns BadAccess. If allocation errors occur, a BadAlloc status is returned. If
-the specified device
-.I (device_info->device_spec)
-is invalid, a BadKeyboard status is returned. If the device has no buttons, a
-BadMatch status is returned. If
-.I first_button
-and
-.I num_buttons
-specify illegal buttons, a BadValue status is returned.
-.SH DIAGNOSTICS
-.TP 15
-.B BadAccess
-The Xkb extension has not been properly initialized
-.TP 15
-.B BadAlloc
-Unable to allocate storage
-.TP 15
-.B BadKeyboard
-The device specified was not a valid core or input extension device
-.TP 15
-.B BadMatch
-A compatible version of Xkb was not available in the server or an argument has
-correct type and range, but is otherwise invalid
-.TP 15
-.B BadValue
-An argument is out of range
+'\" t
+.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the "Software"),
+.\" to deal in the Software without restriction, including without limitation
+.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
+.\" and/or sell copies of the Software, and to permit persons to whom the
+.\" Software is furnished to do so, subject to the following conditions:
+.\"
+.\" The above copyright notice and this permission notice (including the next
+.\" paragraph) shall be included in all copies or substantial portions of the
+.\" Software.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+.\" DEALINGS IN THE SOFTWARE.
+.\"
+.TH XkbGetDeviceButtonActions __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbGetDeviceButtonActions \- Query the button actions associated with an X Input
+Extension device
+.SH SYNOPSIS
+.HP
+.B Status XkbGetDeviceButtonActions
+.BI "(\^Display *" "dpy" "\^,"
+.BI "XkbDeviceInfoPtr " "device_info" "\^,"
+.BI "Bool " "all_buttons" "\^,"
+.BI "unsigned int " "first_button" "\^,"
+.BI "unsigned int " "num_buttons" "\^);"
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- dpy
+connection to X server
+.TP
+.I \- device_info
+structure to update with results
+.TP
+.I \- all_buttons
+True => get information for all buttons
+.TP
+.I \- first_button
+number of first button for which info is desired
+.TP
+.I \- num_buttons
+number of buttons for which info is desired
+.SH DESCRIPTION
+.LP
+.I XkbGetDeviceButtonActions
+queries the server for the desired button information for the device indicated
+by the
+.I device_spec
+field of
+.I device_info
+and waits for a reply. If successful,
+.I XkbGetDeviceButtonActions
+backfills the button actions
+.I (btn_acts
+field of
+.I device_info)
+for only the requested buttons, updates the
+.I name, type, supported,
+and
+.I unsupported
+fields, and returns Success.
+
+.I all_buttons, first_button
+and
+.I num_buttons
+specify the device buttons for which actions should be returned. Setting
+.I all_buttons
+to True requests actions for all device buttons; if
+.I all_buttons
+is False,
+.I first_button
+and
+.I num_buttons
+specify a range of buttons for which actions are requested.
+
+If a compatible version of Xkb is not available in the server or the Xkb
+extension has not been properly initialized,
+.I XkbGetDeviceButtonActions
+returns BadAccess. If allocation errors occur, a BadAlloc status is returned. If
+the specified device
+.I (device_info->device_spec)
+is invalid, a BadKeyboard status is returned. If the device has no buttons, a
+BadMatch status is returned. If
+.I first_button
+and
+.I num_buttons
+specify illegal buttons, a BadValue status is returned.
+.SH DIAGNOSTICS
+.TP 15
+.B BadAccess
+The Xkb extension has not been properly initialized
+.TP 15
+.B BadAlloc
+Unable to allocate storage
+.TP 15
+.B BadKeyboard
+The device specified was not a valid core or input extension device
+.TP 15
+.B BadMatch
+A compatible version of Xkb was not available in the server or an argument has
+correct type and range, but is otherwise invalid
+.TP 15
+.B BadValue
+An argument is out of range
diff --git a/libX11/man/xkb/XkbGetDeviceInfo.man b/libX11/man/xkb/XkbGetDeviceInfo.man
index e420c8cdd..f34c4d9fe 100644
--- a/libX11/man/xkb/XkbGetDeviceInfo.man
+++ b/libX11/man/xkb/XkbGetDeviceInfo.man
@@ -1,247 +1,247 @@
-'\" t
-.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
-.\"
-.\" Permission is hereby granted, free of charge, to any person obtaining a
-.\" copy of this software and associated documentation files (the "Software"),
-.\" to deal in the Software without restriction, including without limitation
-.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
-.\" and/or sell copies of the Software, and to permit persons to whom the
-.\" Software is furnished to do so, subject to the following conditions:
-.\"
-.\" The above copyright notice and this permission notice (including the next
-.\" paragraph) shall be included in all copies or substantial portions of the
-.\" Software.
-.\"
-.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-.\" DEALINGS IN THE SOFTWARE.
-.\"
-.TH XkbGetDeviceInfo __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
-.SH NAME
-XkbGetDeviceInfo \- Determine whether the X server allows Xkb access to particular capabilities of input devices other than
-the core X keyboard, or to determine the status of indicator maps, indicator names or button actions on a non-KeyClass
-extension device
-.SH SYNOPSIS
-.HP
-.B XkbDeviceInfoPtr XkbGetDeviceInfo
-.BI "(\^Display *" "dpy" "\^,"
-.BI "unsigned int " "which" "\^,"
-.BI "unsigned int " "device_spec" "\^,"
-.BI "unsigned int " "ind_class" "\^,"
-.BI "unsigned int " "ind_id" "\^);"
-.if n .ti +5n
-.if t .ti +.5i
-.SH ARGUMENTS
-.TP
-.I \- dpy
-connection to X server
-.TP
-.I \- which
-mask indicating information to return
-.TP
-.I \- device_spec
-device ID, or XkbUseCoreKbd
-.TP
-.I \- ind_class
-feedback class for indicator requests
-.TP
-.I \- ind_id
-feedback ID for indicator requests
-.SH DESCRIPTION
-.LP
-To determine whether the X server allows Xkb access to particular capabilities of input devices other than the core X
-keyboard, or to determine the status of indicator maps, indicator names or button actions on a non-KeyClass extension
-device, use
-.I XkbGetDeviceInfo.
-
-.I XkbGetDeviceInfo
-returns information about the input device specified by
-.I device_spec.
-Unlike the
-.I device_spec
-parameter of most Xkb functions,
-.I device_spec
-does not need to be a keyboard device. It must, however, indicate either the core keyboard or a valid X Input Extension
-device.
-
-The
-.I which
-parameter is a mask specifying optional information to be returned. It is an inclusive OR of one or more of the values from
-Table 1 and causes the returned XkbDeviceInfoRec to contain values for the corresponding fields specified in the table.
-
-.nf
- Table 1 XkbDeviceInfoRec Mask Bits
-____________________________________________________________________________________
-Name XkbDeviceInfoRec Value Capability If Set
- Fields Effected
-____________________________________________________________________________________
-XkbXI_KeyboardsMask (1L <<0) Clients can use all
- Xkb requests and events
- with KeyClass devices
- supported by the input
- device extension.
-
-XkbXI_ButtonActionsMask num_btns (1L <<1) Clients can assign key
- btn_acts actions to buttons
- non-KeyClass input
- extension devices.
-
-XkbXI_IndicatorNamesMask leds->names (1L <<2) Clients can assign
- names to indicators on
- non-KeyClass input
- extension devices.
-
-XkbXI_IndicatorMapsMask leds->maps (1L <<3) Clients can assign
- indicator maps to
- indicators on
- non-KeyClass input
- extension devices.
-
-XkbXI_IndicatorStateMask leds->state (1L <<4) Clients can request
- the status of indicators
- on non-KeyClass input
- extension devices.
-
-XkbXI_IndicatorsMask sz_leds (0x1c) XkbXI_IndicatorNamesMask |
- num_leds XkbXI_IndicatorMapsMask |
- leds->* XkbXI_IndicatorStateMask
-
-XkbXI_UnsupportedFeaturesMask unsupported (1L <<15)
-
-XkbXI_AllDeviceFeaturesMask Those selected (0x1e) XkbXI_IndicatorsMask |
- by Value Column XkbSI_ButtonActionsMask
- masks
-
-XkbXI_AllFeaturesMask Those selected (0x1f) XkbSI_AllDeviceFeaturesMask |
- by Value Column XkbSI_KeyboardsMask
- masks
-
-XkbXI_AllDetailsMask Those selected (0x801f) XkbXI_AllFeaturesMask |
- by Value column XkbXI_UnsupportedFeaturesMask
- masks
-.fi
-
-The XkbDeviceInfoRec returned by
-.I XkbGetDeviceInfo
-always has values for
-.I name
-(may be a null string, ""),
-.I type, supported, unsupported, has_own_state, dflt_kbd_fd,
-and
-.I dflt_kbd_fb.
-Other fields are filled in as specified by
-.I which.
-
-Upon return, the
-.I supported
-field will be set to the inclusive OR of zero or more bits from Table 1; each bit set indicates an optional Xkb extension
-device feature supported by the server implementation, and a client may modify the associated behavior.
-
-If the XkbButtonActionsMask bit is set in
-.I which,
-the XkbDeviceInfoRec returned will have the button actions
-.I (btn_acts
-field) filled in for all buttons.
-
-If
-.I which
-includes one of the bits in XkbXI_IndicatorsMask, the feedback class of the indicators must be specified in
-.I ind_class,
-and the feedback ID of the indicators must be specified in
-.I ind_id.
-If the request does not include any of the bits in XkbXI_IndicatorsMask, the
-.I ind_class
-and
-.I ind_id
-parameters are ignored. The class and ID can be obtained via the input device extension
-.I XListInputDevices
-request.
-
-If any of the XkbXI_IndicatorsMask bits are set in
-.I which,
-the XkbDeviceInfoRec returned will have filled in the portions of the
-.I leds
-structure corresponding to the indicator feedback identified by
-.I ind_class
-and
-.I ind_id.
-The
-.I leds
-vector of the XkbDeviceInfoRec is allocated if necessary and
-.I sz_leds
-and
-.I num_leds
-filled in. The
-.I led_class, led_id
-and
-.I phys_indicators
-fields of the
-.I leds
-entry corresponding to
-.I ind_class
-and
-.I ind_id
-are always filled in. If
-.I which
-contains XkbXI_IndicatorNamesMask, the
-.I names_present
-and
-.I names
-fields of the
-.I leds
-structure corresponding to
-.I ind_class
-and
-.I ind_id
-are returned. If
-.I which
-contains XkbXI_IndicatorStateMask, the corresponding
-.I state
-field is updated. If
-.I which
-contains XkbXI_IndicatorMapsMask, the
-.I maps_present
-and
-.I maps
-fields are updated.
-
-Xkb provides convenience functions to request subsets of the information available via
-.I XkbGetDeviceInfo.
-These convenience functions mirror some of the mask bits. The functions all take an XkbDeviceInfoPtr as an input argument
-and operate on the X Input Extension device specified by the
-.I device_spec
-field of the structure. Only the parts of the structure indicated in the function description are updated. The
-XkbDeviceInfoRec structure used in the function call can be obtained by calling
-.I XkbGetDeviceInfo
-or can be allocated by calling
-.I XkbAllocDeviceInfo.
-.SH STRUCTURES
-.LP
-Information about X Input Extension devices is transferred between a client program and the Xkb extension in an
-XkbDeviceInfoRec structure:
-.nf
-
-typedef struct {
- char * name; /\(** name for device */
- Atom type; /\(** name for class of devices */
- unsigned short device_spec; /\(** device of interest */
- Bool has_own_state; /\(** True=>this device has its own state */
- unsigned short supported; /\(** bits indicating supported capabilities */
- unsigned short unsupported; /\(** bits indicating unsupported capabilities */
- unsigned short num_btns; /\(** number of entries in btn_acts */
- XkbAction * btn_acts; /\(** button actions */
- unsigned short sz_leds; /\(** total number of entries in LEDs vector */
- unsigned short num_leds; /\(** number of valid entries in LEDs vector */
- unsigned short dflt_kbd_fb; /\(** input extension ID of default (core kbd) indicator */
- unsigned short dflt_led_fb; /\(** input extension ID of default indicator feedback */
- XkbDeviceLedInfoPtr leds; /\(** LED descriptions */
-} XkbDeviceInfoRec, *XkbDeviceInfoPtr;
-
-.fi
-.SH "SEE ALSO"
-.BR XkbAllocDeviceInfo (__libmansuffix__),
-.BR XListInputDevices (__libmansuffix__)
+'\" t
+.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the "Software"),
+.\" to deal in the Software without restriction, including without limitation
+.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
+.\" and/or sell copies of the Software, and to permit persons to whom the
+.\" Software is furnished to do so, subject to the following conditions:
+.\"
+.\" The above copyright notice and this permission notice (including the next
+.\" paragraph) shall be included in all copies or substantial portions of the
+.\" Software.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+.\" DEALINGS IN THE SOFTWARE.
+.\"
+.TH XkbGetDeviceInfo __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbGetDeviceInfo \- Determine whether the X server allows Xkb access to particular capabilities of input devices other than
+the core X keyboard, or to determine the status of indicator maps, indicator names or button actions on a non-KeyClass
+extension device
+.SH SYNOPSIS
+.HP
+.B XkbDeviceInfoPtr XkbGetDeviceInfo
+.BI "(\^Display *" "dpy" "\^,"
+.BI "unsigned int " "which" "\^,"
+.BI "unsigned int " "device_spec" "\^,"
+.BI "unsigned int " "ind_class" "\^,"
+.BI "unsigned int " "ind_id" "\^);"
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- dpy
+connection to X server
+.TP
+.I \- which
+mask indicating information to return
+.TP
+.I \- device_spec
+device ID, or XkbUseCoreKbd
+.TP
+.I \- ind_class
+feedback class for indicator requests
+.TP
+.I \- ind_id
+feedback ID for indicator requests
+.SH DESCRIPTION
+.LP
+To determine whether the X server allows Xkb access to particular capabilities of input devices other than the core X
+keyboard, or to determine the status of indicator maps, indicator names or button actions on a non-KeyClass extension
+device, use
+.I XkbGetDeviceInfo.
+
+.I XkbGetDeviceInfo
+returns information about the input device specified by
+.I device_spec.
+Unlike the
+.I device_spec
+parameter of most Xkb functions,
+.I device_spec
+does not need to be a keyboard device. It must, however, indicate either the core keyboard or a valid X Input Extension
+device.
+
+The
+.I which
+parameter is a mask specifying optional information to be returned. It is an inclusive OR of one or more of the values from
+Table 1 and causes the returned XkbDeviceInfoRec to contain values for the corresponding fields specified in the table.
+
+.nf
+ Table 1 XkbDeviceInfoRec Mask Bits
+____________________________________________________________________________________
+Name XkbDeviceInfoRec Value Capability If Set
+ Fields Effected
+____________________________________________________________________________________
+XkbXI_KeyboardsMask (1L <<0) Clients can use all
+ Xkb requests and events
+ with KeyClass devices
+ supported by the input
+ device extension.
+
+XkbXI_ButtonActionsMask num_btns (1L <<1) Clients can assign key
+ btn_acts actions to buttons
+ non-KeyClass input
+ extension devices.
+
+XkbXI_IndicatorNamesMask leds->names (1L <<2) Clients can assign
+ names to indicators on
+ non-KeyClass input
+ extension devices.
+
+XkbXI_IndicatorMapsMask leds->maps (1L <<3) Clients can assign
+ indicator maps to
+ indicators on
+ non-KeyClass input
+ extension devices.
+
+XkbXI_IndicatorStateMask leds->state (1L <<4) Clients can request
+ the status of indicators
+ on non-KeyClass input
+ extension devices.
+
+XkbXI_IndicatorsMask sz_leds (0x1c) XkbXI_IndicatorNamesMask |
+ num_leds XkbXI_IndicatorMapsMask |
+ leds->* XkbXI_IndicatorStateMask
+
+XkbXI_UnsupportedFeaturesMask unsupported (1L <<15)
+
+XkbXI_AllDeviceFeaturesMask Those selected (0x1e) XkbXI_IndicatorsMask |
+ by Value Column XkbSI_ButtonActionsMask
+ masks
+
+XkbXI_AllFeaturesMask Those selected (0x1f) XkbSI_AllDeviceFeaturesMask |
+ by Value Column XkbSI_KeyboardsMask
+ masks
+
+XkbXI_AllDetailsMask Those selected (0x801f) XkbXI_AllFeaturesMask |
+ by Value column XkbXI_UnsupportedFeaturesMask
+ masks
+.fi
+
+The XkbDeviceInfoRec returned by
+.I XkbGetDeviceInfo
+always has values for
+.I name
+(may be a null string, ""),
+.I type, supported, unsupported, has_own_state, dflt_kbd_fd,
+and
+.I dflt_kbd_fb.
+Other fields are filled in as specified by
+.I which.
+
+Upon return, the
+.I supported
+field will be set to the inclusive OR of zero or more bits from Table 1; each bit set indicates an optional Xkb extension
+device feature supported by the server implementation, and a client may modify the associated behavior.
+
+If the XkbButtonActionsMask bit is set in
+.I which,
+the XkbDeviceInfoRec returned will have the button actions
+.I (btn_acts
+field) filled in for all buttons.
+
+If
+.I which
+includes one of the bits in XkbXI_IndicatorsMask, the feedback class of the indicators must be specified in
+.I ind_class,
+and the feedback ID of the indicators must be specified in
+.I ind_id.
+If the request does not include any of the bits in XkbXI_IndicatorsMask, the
+.I ind_class
+and
+.I ind_id
+parameters are ignored. The class and ID can be obtained via the input device extension
+.I XListInputDevices
+request.
+
+If any of the XkbXI_IndicatorsMask bits are set in
+.I which,
+the XkbDeviceInfoRec returned will have filled in the portions of the
+.I leds
+structure corresponding to the indicator feedback identified by
+.I ind_class
+and
+.I ind_id.
+The
+.I leds
+vector of the XkbDeviceInfoRec is allocated if necessary and
+.I sz_leds
+and
+.I num_leds
+filled in. The
+.I led_class, led_id
+and
+.I phys_indicators
+fields of the
+.I leds
+entry corresponding to
+.I ind_class
+and
+.I ind_id
+are always filled in. If
+.I which
+contains XkbXI_IndicatorNamesMask, the
+.I names_present
+and
+.I names
+fields of the
+.I leds
+structure corresponding to
+.I ind_class
+and
+.I ind_id
+are returned. If
+.I which
+contains XkbXI_IndicatorStateMask, the corresponding
+.I state
+field is updated. If
+.I which
+contains XkbXI_IndicatorMapsMask, the
+.I maps_present
+and
+.I maps
+fields are updated.
+
+Xkb provides convenience functions to request subsets of the information available via
+.I XkbGetDeviceInfo.
+These convenience functions mirror some of the mask bits. The functions all take an XkbDeviceInfoPtr as an input argument
+and operate on the X Input Extension device specified by the
+.I device_spec
+field of the structure. Only the parts of the structure indicated in the function description are updated. The
+XkbDeviceInfoRec structure used in the function call can be obtained by calling
+.I XkbGetDeviceInfo
+or can be allocated by calling
+.I XkbAllocDeviceInfo.
+.SH STRUCTURES
+.LP
+Information about X Input Extension devices is transferred between a client program and the Xkb extension in an
+XkbDeviceInfoRec structure:
+.nf
+
+typedef struct {
+ char * name; /\(** name for device */
+ Atom type; /\(** name for class of devices */
+ unsigned short device_spec; /\(** device of interest */
+ Bool has_own_state; /\(** True=>this device has its own state */
+ unsigned short supported; /\(** bits indicating supported capabilities */
+ unsigned short unsupported; /\(** bits indicating unsupported capabilities */
+ unsigned short num_btns; /\(** number of entries in btn_acts */
+ XkbAction * btn_acts; /\(** button actions */
+ unsigned short sz_leds; /\(** total number of entries in LEDs vector */
+ unsigned short num_leds; /\(** number of valid entries in LEDs vector */
+ unsigned short dflt_kbd_fb; /\(** input extension ID of default (core kbd) indicator */
+ unsigned short dflt_led_fb; /\(** input extension ID of default indicator feedback */
+ XkbDeviceLedInfoPtr leds; /\(** LED descriptions */
+} XkbDeviceInfoRec, *XkbDeviceInfoPtr;
+
+.fi
+.SH "SEE ALSO"
+.BR XkbAllocDeviceInfo (__libmansuffix__),
+.BR XListInputDevices (__libmansuffix__)
diff --git a/libX11/man/xkb/XkbGetDeviceInfoChanges.man b/libX11/man/xkb/XkbGetDeviceInfoChanges.man
index e44c0bd0d..69b5fb56e 100644
--- a/libX11/man/xkb/XkbGetDeviceInfoChanges.man
+++ b/libX11/man/xkb/XkbGetDeviceInfoChanges.man
@@ -1,62 +1,62 @@
-'\" t
-.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
-.\"
-.\" Permission is hereby granted, free of charge, to any person obtaining a
-.\" copy of this software and associated documentation files (the "Software"),
-.\" to deal in the Software without restriction, including without limitation
-.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
-.\" and/or sell copies of the Software, and to permit persons to whom the
-.\" Software is furnished to do so, subject to the following conditions:
-.\"
-.\" The above copyright notice and this permission notice (including the next
-.\" paragraph) shall be included in all copies or substantial portions of the
-.\" Software.
-.\"
-.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-.\" DEALINGS IN THE SOFTWARE.
-.\"
-.TH XkbGetDeviceInfoChanges __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
-.SH NAME
-XkbGetDeviceInfoChanges \- Query the changes that have occurred in the button
-actions or indicator names and indicator maps associated with an input extension
-device
-.SH SYNOPSIS
-.HP
-.B Status XkbGetDeviceInfoChanges
-.BI "(\^Display *" "dpy" "\^,"
-.BI "XkbDeviceInfoPtr " "device_info" "\^,"
-.BI "XkbDeviceChangesPtr " "changes" "\^);"
-.if n .ti +5n
-.if t .ti +.5i
-.SH ARGUMENTS
-.TP
-.I \- dpy
-connection to X server
-.TP
-.I \- device_info
-structure to update with results
-.TP
-.I \- changes
-contains notes of changes that have occurred
-.SH DESCRIPTION
-.LP
-The
-.I changes->changed
-field indicates which attributes of the device specified in
-.I changes->device
-have changed. The parameters describing the changes are contained in the other
-fields of
-.I changes. XkbGetDeviceInfoChanges
-uses that information to call
-.I XkbGetDeviceInfo
-to obtain the current status of those attributes that have changed. It then
-updates the local description of the device in
-.I device_info
-with the new information.
-.SH "SEE ALSO"
-.BR XkbGetDeviceInfo (__libmansuffix__)
+'\" t
+.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the "Software"),
+.\" to deal in the Software without restriction, including without limitation
+.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
+.\" and/or sell copies of the Software, and to permit persons to whom the
+.\" Software is furnished to do so, subject to the following conditions:
+.\"
+.\" The above copyright notice and this permission notice (including the next
+.\" paragraph) shall be included in all copies or substantial portions of the
+.\" Software.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+.\" DEALINGS IN THE SOFTWARE.
+.\"
+.TH XkbGetDeviceInfoChanges __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbGetDeviceInfoChanges \- Query the changes that have occurred in the button
+actions or indicator names and indicator maps associated with an input extension
+device
+.SH SYNOPSIS
+.HP
+.B Status XkbGetDeviceInfoChanges
+.BI "(\^Display *" "dpy" "\^,"
+.BI "XkbDeviceInfoPtr " "device_info" "\^,"
+.BI "XkbDeviceChangesPtr " "changes" "\^);"
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- dpy
+connection to X server
+.TP
+.I \- device_info
+structure to update with results
+.TP
+.I \- changes
+contains notes of changes that have occurred
+.SH DESCRIPTION
+.LP
+The
+.I changes->changed
+field indicates which attributes of the device specified in
+.I changes->device
+have changed. The parameters describing the changes are contained in the other
+fields of
+.I changes. XkbGetDeviceInfoChanges
+uses that information to call
+.I XkbGetDeviceInfo
+to obtain the current status of those attributes that have changed. It then
+updates the local description of the device in
+.I device_info
+with the new information.
+.SH "SEE ALSO"
+.BR XkbGetDeviceInfo (__libmansuffix__)
diff --git a/libX11/man/xkb/XkbGetDeviceLedInfo.man b/libX11/man/xkb/XkbGetDeviceLedInfo.man
index 74bb9b466..81e066210 100644
--- a/libX11/man/xkb/XkbGetDeviceLedInfo.man
+++ b/libX11/man/xkb/XkbGetDeviceLedInfo.man
@@ -1,153 +1,153 @@
-'\" t
-.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
-.\"
-.\" Permission is hereby granted, free of charge, to any person obtaining a
-.\" copy of this software and associated documentation files (the "Software"),
-.\" to deal in the Software without restriction, including without limitation
-.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
-.\" and/or sell copies of the Software, and to permit persons to whom the
-.\" Software is furnished to do so, subject to the following conditions:
-.\"
-.\" The above copyright notice and this permission notice (including the next
-.\" paragraph) shall be included in all copies or substantial portions of the
-.\" Software.
-.\"
-.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-.\" DEALINGS IN THE SOFTWARE.
-.\"
-.TH XkbGetDeviceLedInfo __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
-.SH NAME
-XkbGetDeviceLedInfo \- Query the indicator names, maps, and state associated
-with an LED feedback of an input extension device
-.SH SYNOPSIS
-.HP
-.B Status XkbGetDeviceLedInfo
-.BI "(\^Display *" "dpy" "\^,"
-.BI "XkbDeviceInfoPtr " "device_info" "\^,"
-.BI "unsigned int " "led_class" "\^,"
-.BI "unsigned int " "led_id" "\^,"
-.BI "unsigned int " "which" "\^);"
-.if n .ti +5n
-.if t .ti +.5i
-.SH ARGUMENTS
-.TP
-.I \- dpy
-connection to X server
-.TP
-.I \- device_info
-structure to update with results
-.TP
-.I \- led_class
-LED feedback class assigned by input extension
-.TP
-.I \- led_id
-LED feedback ID assigned by input extension
-.TP
-.I \- which
-mask indicating desired information
-.SH DESCRIPTION
-.LP
-.I XkbGetDeviceLedInfo
-queries the server for the desired LED information for the feedback specified by
-.I led_class
-and
-.I led_id
-for the X input extension device indicated by
-.I device_spec->device_info
-and waits for a reply. If successful,
-.I XkbGetDeviceLedInfo
-backfills the relevant fields of
-.I device_info
-as determined by
-.I which
-with the results and returns Success. Valid values for
-.I which
-are the inclusive OR of any of XkbXI_IndicatorNamesMask,
-XkbXI_IndicatorMapsMask, and XkbXI_IndicatorStateMask.
-
-The fields of
-.I device_info
-that are filled in when this request succeeds are
-.I name, type, supported,
-and
-.I unsupported,
-and portions of the
-.I leds
-structure corresponding to
-.I led_class
-and
-.I led_id
-as indicated by the bits set in
-.I which.
-The
-.I device_info->leds
-vector is allocated if necessary and
-.I sz_leds
-and
-.I num_leds
-filled in. The
-.I led_class, led_id
-and
-.I phys_indicators
-fields of the
-.I device_info->leds
-entry corresponding to
-.I led_class
-and
-.I led_id
-are always filled in.
-
-If
-.I which
-contains XkbXI_IndicatorNamesMask, the
-.I names_present
-and
-.I names
-fields of the
-.I device_info->leds
-structure corresponding to
-.I led_class
-and
-.I led_id
-are updated, if
-.I which
-contains XkbXI_IndicatorStateMask, the corresponding
-.I state
-field is updated, and if
-.I which
-contains XkbXI_IndicatorMapsMask, the
-.I maps_present
-and
-.I maps
-fields are updated.
-
-If a compatible version of Xkb is not available in the server or the Xkb
-extension has not been properly initialized,
-.I XkbGetDeviceLedInfo
-returns BadAccess. If allocation errors occur, a BadAlloc status is returned. If
-the device has no indicators, a BadMatch error is returned. If
-.I ledClass
-or
-.I ledID
-have illegal values, a BadValue error is returned. If they have legal values but
-do not specify a feedback that contains LEDs and is associated with the
-specified device, a BadMatch error is returned.
-.SH DIAGNOSTICS
-.TP 15
-.B BadAccess
-The Xkb extension has not been properly initialized
-.TP 15
-.B BadAlloc
-Unable to allocate storage
-.TP 15
-.B BadMatch
-A compatible version of Xkb was not available in the server or an argument has
-correct type and range, but is otherwise invalid
-.TP 15
-.B BadValue
-An argument is out of range
+'\" t
+.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the "Software"),
+.\" to deal in the Software without restriction, including without limitation
+.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
+.\" and/or sell copies of the Software, and to permit persons to whom the
+.\" Software is furnished to do so, subject to the following conditions:
+.\"
+.\" The above copyright notice and this permission notice (including the next
+.\" paragraph) shall be included in all copies or substantial portions of the
+.\" Software.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+.\" DEALINGS IN THE SOFTWARE.
+.\"
+.TH XkbGetDeviceLedInfo __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbGetDeviceLedInfo \- Query the indicator names, maps, and state associated
+with an LED feedback of an input extension device
+.SH SYNOPSIS
+.HP
+.B Status XkbGetDeviceLedInfo
+.BI "(\^Display *" "dpy" "\^,"
+.BI "XkbDeviceInfoPtr " "device_info" "\^,"
+.BI "unsigned int " "led_class" "\^,"
+.BI "unsigned int " "led_id" "\^,"
+.BI "unsigned int " "which" "\^);"
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- dpy
+connection to X server
+.TP
+.I \- device_info
+structure to update with results
+.TP
+.I \- led_class
+LED feedback class assigned by input extension
+.TP
+.I \- led_id
+LED feedback ID assigned by input extension
+.TP
+.I \- which
+mask indicating desired information
+.SH DESCRIPTION
+.LP
+.I XkbGetDeviceLedInfo
+queries the server for the desired LED information for the feedback specified by
+.I led_class
+and
+.I led_id
+for the X input extension device indicated by
+.I device_spec->device_info
+and waits for a reply. If successful,
+.I XkbGetDeviceLedInfo
+backfills the relevant fields of
+.I device_info
+as determined by
+.I which
+with the results and returns Success. Valid values for
+.I which
+are the inclusive OR of any of XkbXI_IndicatorNamesMask,
+XkbXI_IndicatorMapsMask, and XkbXI_IndicatorStateMask.
+
+The fields of
+.I device_info
+that are filled in when this request succeeds are
+.I name, type, supported,
+and
+.I unsupported,
+and portions of the
+.I leds
+structure corresponding to
+.I led_class
+and
+.I led_id
+as indicated by the bits set in
+.I which.
+The
+.I device_info->leds
+vector is allocated if necessary and
+.I sz_leds
+and
+.I num_leds
+filled in. The
+.I led_class, led_id
+and
+.I phys_indicators
+fields of the
+.I device_info->leds
+entry corresponding to
+.I led_class
+and
+.I led_id
+are always filled in.
+
+If
+.I which
+contains XkbXI_IndicatorNamesMask, the
+.I names_present
+and
+.I names
+fields of the
+.I device_info->leds
+structure corresponding to
+.I led_class
+and
+.I led_id
+are updated, if
+.I which
+contains XkbXI_IndicatorStateMask, the corresponding
+.I state
+field is updated, and if
+.I which
+contains XkbXI_IndicatorMapsMask, the
+.I maps_present
+and
+.I maps
+fields are updated.
+
+If a compatible version of Xkb is not available in the server or the Xkb
+extension has not been properly initialized,
+.I XkbGetDeviceLedInfo
+returns BadAccess. If allocation errors occur, a BadAlloc status is returned. If
+the device has no indicators, a BadMatch error is returned. If
+.I ledClass
+or
+.I ledID
+have illegal values, a BadValue error is returned. If they have legal values but
+do not specify a feedback that contains LEDs and is associated with the
+specified device, a BadMatch error is returned.
+.SH DIAGNOSTICS
+.TP 15
+.B BadAccess
+The Xkb extension has not been properly initialized
+.TP 15
+.B BadAlloc
+Unable to allocate storage
+.TP 15
+.B BadMatch
+A compatible version of Xkb was not available in the server or an argument has
+correct type and range, but is otherwise invalid
+.TP 15
+.B BadValue
+An argument is out of range
diff --git a/libX11/man/xkb/XkbGetGeometry.man b/libX11/man/xkb/XkbGetGeometry.man
index 6104dfb68..afe334607 100644
--- a/libX11/man/xkb/XkbGetGeometry.man
+++ b/libX11/man/xkb/XkbGetGeometry.man
@@ -1,72 +1,72 @@
-.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
-.\"
-.\" Permission is hereby granted, free of charge, to any person obtaining a
-.\" copy of this software and associated documentation files (the "Software"),
-.\" to deal in the Software without restriction, including without limitation
-.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
-.\" and/or sell copies of the Software, and to permit persons to whom the
-.\" Software is furnished to do so, subject to the following conditions:
-.\"
-.\" The above copyright notice and this permission notice (including the next
-.\" paragraph) shall be included in all copies or substantial portions of the
-.\" Software.
-.\"
-.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-.\" DEALINGS IN THE SOFTWARE.
-.\"
-.TH XkbGetGeometry __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
-.SH NAME
-XkbGetGeometry \- Loads a keyboard geometry if you already have the keyboard
-description
-.SH SYNOPSIS
-.HP
-.B Status XkbGetGeometry
-.BI "(\^Display *" "dpy" "\^,"
-.BI "XkbDescPtr " "xkb" "\^);"
-.if n .ti +5n
-.if t .ti +.5i
-.SH ARGUMENTS
-.TP
-.I \- dpy
-connection to the X server
-.TP
-.I \- xkb
-keyboard description that contains the ID for the keyboard and into which the
-geometry should be loaded
-.SH DESCRIPTION
-.LP
-You can load a keyboard geometry as part of the keyboard description returned by
-.I XkbGetKeyboard.
-However, if a keyboard description has been previously loaded, you can instead
-obtain the geometry by calling the
-.I XkbGetGeometry.
-In this case, the geometry returned is the one associated with the keyboard
-whose device ID is contained in the keyboard description.
-
-.I XkbGetGeometry
-can return BadValue, BadImplementation, BadName, BadAlloc, or BadLength errors
-or Success if it succeeds.
-.SH DIAGNOSTICS
-.TP 15
-.B BadAlloc
-Unable to allocate storage
-.TP 15
-.B BadImplementation
-Invalid reply from server
-.TP 15
-.B BadLength
-The length of a request is shorter or longer than that required to minimally
-contain the arguments
-.TP 15
-.B BadName
-A font or color of the specified name does not exist
-.TP 15
-.B BadValue
-An argument is out of range
-.SH "SEE ALSO"
-.BR XkbGetKeyboard (__libmansuffix__)
+.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the "Software"),
+.\" to deal in the Software without restriction, including without limitation
+.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
+.\" and/or sell copies of the Software, and to permit persons to whom the
+.\" Software is furnished to do so, subject to the following conditions:
+.\"
+.\" The above copyright notice and this permission notice (including the next
+.\" paragraph) shall be included in all copies or substantial portions of the
+.\" Software.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+.\" DEALINGS IN THE SOFTWARE.
+.\"
+.TH XkbGetGeometry __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbGetGeometry \- Loads a keyboard geometry if you already have the keyboard
+description
+.SH SYNOPSIS
+.HP
+.B Status XkbGetGeometry
+.BI "(\^Display *" "dpy" "\^,"
+.BI "XkbDescPtr " "xkb" "\^);"
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- dpy
+connection to the X server
+.TP
+.I \- xkb
+keyboard description that contains the ID for the keyboard and into which the
+geometry should be loaded
+.SH DESCRIPTION
+.LP
+You can load a keyboard geometry as part of the keyboard description returned by
+.I XkbGetKeyboard.
+However, if a keyboard description has been previously loaded, you can instead
+obtain the geometry by calling the
+.I XkbGetGeometry.
+In this case, the geometry returned is the one associated with the keyboard
+whose device ID is contained in the keyboard description.
+
+.I XkbGetGeometry
+can return BadValue, BadImplementation, BadName, BadAlloc, or BadLength errors
+or Success if it succeeds.
+.SH DIAGNOSTICS
+.TP 15
+.B BadAlloc
+Unable to allocate storage
+.TP 15
+.B BadImplementation
+Invalid reply from server
+.TP 15
+.B BadLength
+The length of a request is shorter or longer than that required to minimally
+contain the arguments
+.TP 15
+.B BadName
+A font or color of the specified name does not exist
+.TP 15
+.B BadValue
+An argument is out of range
+.SH "SEE ALSO"
+.BR XkbGetKeyboard (__libmansuffix__)
diff --git a/libX11/man/xkb/XkbGetIndicatorChanges.man b/libX11/man/xkb/XkbGetIndicatorChanges.man
index ee0e28215..849700695 100644
--- a/libX11/man/xkb/XkbGetIndicatorChanges.man
+++ b/libX11/man/xkb/XkbGetIndicatorChanges.man
@@ -1,153 +1,153 @@
-.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
-.\"
-.\" Permission is hereby granted, free of charge, to any person obtaining a
-.\" copy of this software and associated documentation files (the "Software"),
-.\" to deal in the Software without restriction, including without limitation
-.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
-.\" and/or sell copies of the Software, and to permit persons to whom the
-.\" Software is furnished to do so, subject to the following conditions:
-.\"
-.\" The above copyright notice and this permission notice (including the next
-.\" paragraph) shall be included in all copies or substantial portions of the
-.\" Software.
-.\"
-.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-.\" DEALINGS IN THE SOFTWARE.
-.\"
-.TH XkbGetIndicatorChanges __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
-.SH NAME
-XkbGetIndicatorChanges \- Updates a local copy of the keyboard description with
-the actual values of one or more calls to XkbNoteIndicatorChanges
-.SH SYNOPSIS
-.HP
-.B Status XkbGetIndicatorChanges
-.BI "(\^Display *" "dpy" "\^,"
-.BI "XkbDescPtr " "xkb" "\^,"
-.BI "XkbIndicatorChangesPtr " "changes" "\^,"
-.BI "unsigned int " "state" "\^);"
-.if n .ti +5n
-.if t .ti +.5i
-.SH ARGUMENTS
-.TP
-.I \- dpy
-connection to the X server
-.TP
-.I \- xkb
-keyboard description to hold the new values
-.TP
-.I \- changes
-indicator maps/state to be obtained from the server
-.TP
-.I \- state
-backfilled with the state of the indicators
-.SH DESCRIPTION
-.LP
-Whenever an indicator changes state, the server sends XkbIndicatorStateNotify events to all
-interested clients. Similarly, whenever an indicator's map changes, the server sends
-XkbIndicatorMapNotify events to all interested clients.
-
-To receive XkbIndicatorStateNotify events, use
-.I XkbSelectEvents
-with both the
-.I bits_to_change
-and
-.I values_for_bits
-parameters containing XkbIndicatorStateNotifyMask. To receive XkbIndicatorMapNotify events,
-use
-.I XkbSelectEvents
-with XkbIndicatorMapNotifyMask.
-
-To receive events for only specific indicators, use
-.I XkbSelectEventDetails.
-Set the
-.I event_type
-parameter to XkbIndicatorStateNotify or XkbIndicatorMapNotify, and set both the
-.I bits_to_change
-and
-.I values_for_bits
-detail parameters to a mask where each bit specifies one indicator, turning on those bits that
-specify the indicators for which you want to receive events.
-
-Both types of indicator events use the same structure:
-.nf
-
-typedef struct _XkbIndicatorNotify {
- int type; /\(** Xkb extension base event code */
- unsigned long serial; /\(** X server serial number for event */
- Bool send_event; /\(** True => synthetically generated */
- Display * display; /\(** server connection where event generated */
- Time time; /\(** server time when event generated */
- int xkb_type; /\(** specifies state or map notify */
- int device; /\(** Xkb device ID, will not be XkbUseCoreKbd */
- unsigned int changed; /\(** mask of indicators with new state or map */
- unsigned int state; /\(** current state of all indicators */
-} XkbIndicatorNotifyEvent;
-
-.fi
-.I xkb_type
-is either XkbIndicatorStateNotify or XkbIndicatorMapNotify, depending on whether the event is
-a kbIndicatorStateNotify event or kbIndicatorMapNotify event.
-
-The
-.I changed
-parameter is a mask that is the bitwise inclusive OR of the indicators that have changed. If
-the event is of type XkbIndicatorMapNotify,
-.I changed
-reports the maps that changed. If the event is of type XkbIndicatorStateNotify,
-.I changed
-reports the indicators that have changed state.
-.I state
-is a mask that specifies the current state of all indicators, whether they have changed or
-not, for both XkbIndicatorStateNotify and IndicatorMapNotify events.
-
-When your client application receives either a XkbIndicatorStateNotify event or
-XkbIndicatorMapNotify event, you can note the changes in a changes structure by calling
-.I XkbNoteIndicatorChanges.
-
-.I XkbGetIndicatorChanges
-examines the
-.I changes
-parameter, pulls over the necessary information from the server, and copies the
-results into the
-.I xkb
-keyboard description. If any bits are set in the
-.I state_changes
-field of
-.I changes, XkbGetIndicatorChanges
-also places the state of those indicators in
-.I state.
-If the
-.I indicators
-field of
-.I xkb
-is NULL,
-.I XkbGetIndicatorChanges
-allocates and initializes it. To free the
-.I indicators
-field, use
-.I XkbFreeIndicators.
-.SH DIAGNOSTICS
-.TP 15
-.B BadAlloc
-Unable to allocate storage
-.TP 15
-.B BadImplementation
-Invalid reply from server
-.TP 15
-.B BadMatch
-A compatible version of Xkb was not available in the server or an argument has
-correct type and range, but is otherwise invalid
-.SH "SEE ALSO"
-.BR XkbFreeIndicators (__libmansuffix__),
-.BR XkbGetIndicatorChanges (__libmansuffix__),
-.BR XkbNoteIndicatorChanges (__libmansuffix__),
-.BR XkbSelectEvents (__libmansuffix__),
-.BR XkbSelectEventDetail (__libmansuffix__)
-
-
-
+.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the "Software"),
+.\" to deal in the Software without restriction, including without limitation
+.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
+.\" and/or sell copies of the Software, and to permit persons to whom the
+.\" Software is furnished to do so, subject to the following conditions:
+.\"
+.\" The above copyright notice and this permission notice (including the next
+.\" paragraph) shall be included in all copies or substantial portions of the
+.\" Software.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+.\" DEALINGS IN THE SOFTWARE.
+.\"
+.TH XkbGetIndicatorChanges __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbGetIndicatorChanges \- Updates a local copy of the keyboard description with
+the actual values of one or more calls to XkbNoteIndicatorChanges
+.SH SYNOPSIS
+.HP
+.B Status XkbGetIndicatorChanges
+.BI "(\^Display *" "dpy" "\^,"
+.BI "XkbDescPtr " "xkb" "\^,"
+.BI "XkbIndicatorChangesPtr " "changes" "\^,"
+.BI "unsigned int " "state" "\^);"
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- dpy
+connection to the X server
+.TP
+.I \- xkb
+keyboard description to hold the new values
+.TP
+.I \- changes
+indicator maps/state to be obtained from the server
+.TP
+.I \- state
+backfilled with the state of the indicators
+.SH DESCRIPTION
+.LP
+Whenever an indicator changes state, the server sends XkbIndicatorStateNotify events to all
+interested clients. Similarly, whenever an indicator's map changes, the server sends
+XkbIndicatorMapNotify events to all interested clients.
+
+To receive XkbIndicatorStateNotify events, use
+.I XkbSelectEvents
+with both the
+.I bits_to_change
+and
+.I values_for_bits
+parameters containing XkbIndicatorStateNotifyMask. To receive XkbIndicatorMapNotify events,
+use
+.I XkbSelectEvents
+with XkbIndicatorMapNotifyMask.
+
+To receive events for only specific indicators, use
+.I XkbSelectEventDetails.
+Set the
+.I event_type
+parameter to XkbIndicatorStateNotify or XkbIndicatorMapNotify, and set both the
+.I bits_to_change
+and
+.I values_for_bits
+detail parameters to a mask where each bit specifies one indicator, turning on those bits that
+specify the indicators for which you want to receive events.
+
+Both types of indicator events use the same structure:
+.nf
+
+typedef struct _XkbIndicatorNotify {
+ int type; /\(** Xkb extension base event code */
+ unsigned long serial; /\(** X server serial number for event */
+ Bool send_event; /\(** True => synthetically generated */
+ Display * display; /\(** server connection where event generated */
+ Time time; /\(** server time when event generated */
+ int xkb_type; /\(** specifies state or map notify */
+ int device; /\(** Xkb device ID, will not be XkbUseCoreKbd */
+ unsigned int changed; /\(** mask of indicators with new state or map */
+ unsigned int state; /\(** current state of all indicators */
+} XkbIndicatorNotifyEvent;
+
+.fi
+.I xkb_type
+is either XkbIndicatorStateNotify or XkbIndicatorMapNotify, depending on whether the event is
+a kbIndicatorStateNotify event or kbIndicatorMapNotify event.
+
+The
+.I changed
+parameter is a mask that is the bitwise inclusive OR of the indicators that have changed. If
+the event is of type XkbIndicatorMapNotify,
+.I changed
+reports the maps that changed. If the event is of type XkbIndicatorStateNotify,
+.I changed
+reports the indicators that have changed state.
+.I state
+is a mask that specifies the current state of all indicators, whether they have changed or
+not, for both XkbIndicatorStateNotify and IndicatorMapNotify events.
+
+When your client application receives either a XkbIndicatorStateNotify event or
+XkbIndicatorMapNotify event, you can note the changes in a changes structure by calling
+.I XkbNoteIndicatorChanges.
+
+.I XkbGetIndicatorChanges
+examines the
+.I changes
+parameter, pulls over the necessary information from the server, and copies the
+results into the
+.I xkb
+keyboard description. If any bits are set in the
+.I state_changes
+field of
+.I changes, XkbGetIndicatorChanges
+also places the state of those indicators in
+.I state.
+If the
+.I indicators
+field of
+.I xkb
+is NULL,
+.I XkbGetIndicatorChanges
+allocates and initializes it. To free the
+.I indicators
+field, use
+.I XkbFreeIndicators.
+.SH DIAGNOSTICS
+.TP 15
+.B BadAlloc
+Unable to allocate storage
+.TP 15
+.B BadImplementation
+Invalid reply from server
+.TP 15
+.B BadMatch
+A compatible version of Xkb was not available in the server or an argument has
+correct type and range, but is otherwise invalid
+.SH "SEE ALSO"
+.BR XkbFreeIndicators (__libmansuffix__),
+.BR XkbGetIndicatorChanges (__libmansuffix__),
+.BR XkbNoteIndicatorChanges (__libmansuffix__),
+.BR XkbSelectEvents (__libmansuffix__),
+.BR XkbSelectEventDetail (__libmansuffix__)
+
+
+
diff --git a/libX11/man/xkb/XkbGetIndicatorMap.man b/libX11/man/xkb/XkbGetIndicatorMap.man
index f5d0b131b..7da827973 100644
--- a/libX11/man/xkb/XkbGetIndicatorMap.man
+++ b/libX11/man/xkb/XkbGetIndicatorMap.man
@@ -1,87 +1,87 @@
-.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
-.\"
-.\" Permission is hereby granted, free of charge, to any person obtaining a
-.\" copy of this software and associated documentation files (the "Software"),
-.\" to deal in the Software without restriction, including without limitation
-.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
-.\" and/or sell copies of the Software, and to permit persons to whom the
-.\" Software is furnished to do so, subject to the following conditions:
-.\"
-.\" The above copyright notice and this permission notice (including the next
-.\" paragraph) shall be included in all copies or substantial portions of the
-.\" Software.
-.\"
-.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-.\" DEALINGS IN THE SOFTWARE.
-.\"
-.TH XkbGetIndicatorMap __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
-.SH NAME
-XkbGetIndicatorMap \- Gets the map for one or more indicators, using a mask to
-specify the indicators
-.SH SYNOPSIS
-.HP
-.B Status XkbGetIndicatorMap
-.BI "(\^Display *" "dpy" "\^,"
-.BI "unsigned int " "which" "\^,"
-.BI "XkbDescPtr " "desc" "\^);"
-.if n .ti +5n
-.if t .ti +.5i
-.SH ARGUMENTS
-.TP
-.I \- dpy
-connection to the X server
-.TP
-.I \- which
-mask of indicators for which maps should be returned
-.TP
-.I \- desc
-keyboard description to be updated
-.SH DESCRIPTION
-.LP
-Xkb allows applications to obtain information about indicators using two
-different methods. The first method, which is similar to the core X
-implementation, uses a mask to specify the indicators. The second method, which
-is more suitable for applications concerned with interoperability, uses
-indicator names. The correspondence between the indicator name and the bit
-position in masks is as follows: one of the parameters returned from
-.I XkbGetNamedIndicators
-is an index that is the bit position to use in any function call that requires a
-mask of indicator bits, as well as the indicator's index into the
-XkbIndicatorRec array of indicator maps.
-
-
-.I XkbGetIndicatorMap
-obtains the maps from the server for only those indicators specified by the
-.I which
-mask and copies the values into the keyboard description specified by
-.I desc.
-If the
-.I indicators
-field of the
-.I desc
-parameter is NULL,
-.I XkbGetIndicatorMap
-allocates and initializes it.
-
-To free the indicator maps, use
-.I XkbFreeIndicatorMaps.
-.SH DIAGNOSTICS
-.TP 15
-.B BadAlloc
-Unable to allocate storage
-.TP 15
-.B BadMatch
-A compatible version of Xkb was not available in the server or an argument has
-correct type and range, but is otherwise invalid
-.TP 15
-.B BadImplementation
-Invalid reply from server
-.SH "SEE ALSO"
-.BR XkbFreeIndicatorMaps (__libmansuffix__),
-.BR XkbGetNamedIndicators (__libmansuffix__)
-
+.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the "Software"),
+.\" to deal in the Software without restriction, including without limitation
+.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
+.\" and/or sell copies of the Software, and to permit persons to whom the
+.\" Software is furnished to do so, subject to the following conditions:
+.\"
+.\" The above copyright notice and this permission notice (including the next
+.\" paragraph) shall be included in all copies or substantial portions of the
+.\" Software.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+.\" DEALINGS IN THE SOFTWARE.
+.\"
+.TH XkbGetIndicatorMap __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbGetIndicatorMap \- Gets the map for one or more indicators, using a mask to
+specify the indicators
+.SH SYNOPSIS
+.HP
+.B Status XkbGetIndicatorMap
+.BI "(\^Display *" "dpy" "\^,"
+.BI "unsigned int " "which" "\^,"
+.BI "XkbDescPtr " "desc" "\^);"
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- dpy
+connection to the X server
+.TP
+.I \- which
+mask of indicators for which maps should be returned
+.TP
+.I \- desc
+keyboard description to be updated
+.SH DESCRIPTION
+.LP
+Xkb allows applications to obtain information about indicators using two
+different methods. The first method, which is similar to the core X
+implementation, uses a mask to specify the indicators. The second method, which
+is more suitable for applications concerned with interoperability, uses
+indicator names. The correspondence between the indicator name and the bit
+position in masks is as follows: one of the parameters returned from
+.I XkbGetNamedIndicators
+is an index that is the bit position to use in any function call that requires a
+mask of indicator bits, as well as the indicator's index into the
+XkbIndicatorRec array of indicator maps.
+
+
+.I XkbGetIndicatorMap
+obtains the maps from the server for only those indicators specified by the
+.I which
+mask and copies the values into the keyboard description specified by
+.I desc.
+If the
+.I indicators
+field of the
+.I desc
+parameter is NULL,
+.I XkbGetIndicatorMap
+allocates and initializes it.
+
+To free the indicator maps, use
+.I XkbFreeIndicatorMaps.
+.SH DIAGNOSTICS
+.TP 15
+.B BadAlloc
+Unable to allocate storage
+.TP 15
+.B BadMatch
+A compatible version of Xkb was not available in the server or an argument has
+correct type and range, but is otherwise invalid
+.TP 15
+.B BadImplementation
+Invalid reply from server
+.SH "SEE ALSO"
+.BR XkbFreeIndicatorMaps (__libmansuffix__),
+.BR XkbGetNamedIndicators (__libmansuffix__)
+
diff --git a/libX11/man/xkb/XkbGetIndicatorState.man b/libX11/man/xkb/XkbGetIndicatorState.man
index 89ad50fd0..850475283 100644
--- a/libX11/man/xkb/XkbGetIndicatorState.man
+++ b/libX11/man/xkb/XkbGetIndicatorState.man
@@ -1,79 +1,79 @@
-.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
-.\"
-.\" Permission is hereby granted, free of charge, to any person obtaining a
-.\" copy of this software and associated documentation files (the "Software"),
-.\" to deal in the Software without restriction, including without limitation
-.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
-.\" and/or sell copies of the Software, and to permit persons to whom the
-.\" Software is furnished to do so, subject to the following conditions:
-.\"
-.\" The above copyright notice and this permission notice (including the next
-.\" paragraph) shall be included in all copies or substantial portions of the
-.\" Software.
-.\"
-.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-.\" DEALINGS IN THE SOFTWARE.
-.\"
-.TH XkbGetIndicatorState __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
-.SH NAME
-XkbGetIndicatorState \- Obtains the current state of the keyboard indicators
-.SH SYNOPSIS
-.HP
-.B Status XkbGetIndicatorState
-.BI "(\^Display *" "display" "\^,"
-.BI "unsigned int " "device_spec" "\^,"
-.BI "unsigned int " "state_return" "\^);"
-.if n .ti +5n
-.if t .ti +.5i
-.SH ARGUMENTS
-.TP
-.I \- display
-connection to the X server
-.TP
-.I \- device_spec
-device ID, or XkbUseCoreKbd
-.TP
-.I \- state_return
-backfilled with a mask of the indicator state
-.SH DESCRIPTION
-.LP
-Xkb allows applications to obtain information about indicators using two
-different methods. The first method, which is similar to the core X
-implementation, uses a mask to specify the indicators. The second method, which
-is more suitable for applications concerned with interoperability, uses
-indicator names. The correspondence between the indicator name and the bit
-position in masks is as follows: one of the parameters returned from
-.I XkbGetNamedIndicators
-is an index that is the bit position to use in any function call that requires a
-mask of indicator bits, as well as the indicator's index into the
-XkbIndicatorRec array of indicator maps.
-
-.I XkbGetIndicatorState
-queries the
-.I display
-for the state of the indicators on the device specified by the
-.I device_spec.
-For each indicator that is "turned on" on the device, the associated bit is set
-in
-.I state_return.
-If a compatible version of the Xkb extension is not available in the server,
-.I XkbGetIndicatorState
-returns a BadMatch error. Otherwise, it sends the request to the X server,
-places the state of the indicators into
-.I state_return,
-and returns Success. Thus the value reported by
-.I XkbGetIndicatorState
-is identical to the value reported by the core protocol.
-.SH DIAGNOSTICS
-.TP 15
-.B BadMatch
-A compatible version of Xkb was not available in the server or an argument has
-correct type and range, but is otherwise invalid
-.SH "SEE ALSO"
-.BR XkbGetNamedIndicators (__libmansuffix__)
-
+.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the "Software"),
+.\" to deal in the Software without restriction, including without limitation
+.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
+.\" and/or sell copies of the Software, and to permit persons to whom the
+.\" Software is furnished to do so, subject to the following conditions:
+.\"
+.\" The above copyright notice and this permission notice (including the next
+.\" paragraph) shall be included in all copies or substantial portions of the
+.\" Software.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+.\" DEALINGS IN THE SOFTWARE.
+.\"
+.TH XkbGetIndicatorState __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbGetIndicatorState \- Obtains the current state of the keyboard indicators
+.SH SYNOPSIS
+.HP
+.B Status XkbGetIndicatorState
+.BI "(\^Display *" "display" "\^,"
+.BI "unsigned int " "device_spec" "\^,"
+.BI "unsigned int " "state_return" "\^);"
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- display
+connection to the X server
+.TP
+.I \- device_spec
+device ID, or XkbUseCoreKbd
+.TP
+.I \- state_return
+backfilled with a mask of the indicator state
+.SH DESCRIPTION
+.LP
+Xkb allows applications to obtain information about indicators using two
+different methods. The first method, which is similar to the core X
+implementation, uses a mask to specify the indicators. The second method, which
+is more suitable for applications concerned with interoperability, uses
+indicator names. The correspondence between the indicator name and the bit
+position in masks is as follows: one of the parameters returned from
+.I XkbGetNamedIndicators
+is an index that is the bit position to use in any function call that requires a
+mask of indicator bits, as well as the indicator's index into the
+XkbIndicatorRec array of indicator maps.
+
+.I XkbGetIndicatorState
+queries the
+.I display
+for the state of the indicators on the device specified by the
+.I device_spec.
+For each indicator that is "turned on" on the device, the associated bit is set
+in
+.I state_return.
+If a compatible version of the Xkb extension is not available in the server,
+.I XkbGetIndicatorState
+returns a BadMatch error. Otherwise, it sends the request to the X server,
+places the state of the indicators into
+.I state_return,
+and returns Success. Thus the value reported by
+.I XkbGetIndicatorState
+is identical to the value reported by the core protocol.
+.SH DIAGNOSTICS
+.TP 15
+.B BadMatch
+A compatible version of Xkb was not available in the server or an argument has
+correct type and range, but is otherwise invalid
+.SH "SEE ALSO"
+.BR XkbGetNamedIndicators (__libmansuffix__)
+
diff --git a/libX11/man/xkb/XkbGetKeyActions.man b/libX11/man/xkb/XkbGetKeyActions.man
index 4d38f16ef..726add48f 100644
--- a/libX11/man/xkb/XkbGetKeyActions.man
+++ b/libX11/man/xkb/XkbGetKeyActions.man
@@ -1,92 +1,92 @@
-.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
-.\"
-.\" Permission is hereby granted, free of charge, to any person obtaining a
-.\" copy of this software and associated documentation files (the "Software"),
-.\" to deal in the Software without restriction, including without limitation
-.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
-.\" and/or sell copies of the Software, and to permit persons to whom the
-.\" Software is furnished to do so, subject to the following conditions:
-.\"
-.\" The above copyright notice and this permission notice (including the next
-.\" paragraph) shall be included in all copies or substantial portions of the
-.\" Software.
-.\"
-.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-.\" DEALINGS IN THE SOFTWARE.
-.\"
-.TH XkbGetKeyActions __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
-.SH NAME
-XkbGetKeyActions \- Update the actions (the key_acts array) for a subset of the
-keys in a keyboard description
-.SH SYNOPSIS
-.HP
-.B Status XkbGetKeyActions
-.BI "(\^Display *" "dpy" "\^,"
-.BI "unsigned int " "first" "\^,"
-.BI "unsigned int " "num" "\^,"
-.BI "XkbDescPtr " "xkb" "\^);"
-.if n .ti +5n
-.if t .ti +.5i
-.SH ARGUMENTS
-.TP
-.I \- dpy
-connection to X server
-.TP
-.I \- first
-keycode of first key of interest
-.TP
-.I \- num
-number of keys desired
-.TP
-.I \- xkb
-pointer to keyboard description where result is stored
-.SH DESCRIPTION
-.LP
-.I XkbGetKeyActions
-sends a request to the server to obtain the actions for
-.I num
-keys on the keyboard starting with key
-.I first.
-It waits for a reply and returns the actions in the
-.I server->key_acts
-field of
-.I xkb.
-If successful,
-.I XkbGetKeyActions
-returns Success. The
-.I xkb
-parameter must be a pointer to a valid Xkb keyboard description.
-
-If the
-.I server
-map, in the
-.I xkb
-parameter, has not been allocated,
-.I XkbGetKeyActions
-allocates and initializes it before obtaining the actions.
-
-If the server does not have a compatible version of Xkb, or the Xkb extension
-has not been properly initialized,
-.I XkbGetKeyActions
-returns BadAccess. If
-.I num
-is less than 1 or greater than XkbMaxKeyCount,
-.I XkbGetKeyActions
-returns BadValue. If any allocation errors occur,
-.I XkbGetKeyActions
-returns BadAlloc.
-.SH DIAGNOSTICS
-.TP 15
-.B BadAccess
-The Xkb extension has not been properly initialized
-.TP 15
-.B BadAlloc
-Unable to allocate storage
-.TP 15
-.B BadValue
-An argument is out of range
+.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the "Software"),
+.\" to deal in the Software without restriction, including without limitation
+.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
+.\" and/or sell copies of the Software, and to permit persons to whom the
+.\" Software is furnished to do so, subject to the following conditions:
+.\"
+.\" The above copyright notice and this permission notice (including the next
+.\" paragraph) shall be included in all copies or substantial portions of the
+.\" Software.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+.\" DEALINGS IN THE SOFTWARE.
+.\"
+.TH XkbGetKeyActions __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbGetKeyActions \- Update the actions (the key_acts array) for a subset of the
+keys in a keyboard description
+.SH SYNOPSIS
+.HP
+.B Status XkbGetKeyActions
+.BI "(\^Display *" "dpy" "\^,"
+.BI "unsigned int " "first" "\^,"
+.BI "unsigned int " "num" "\^,"
+.BI "XkbDescPtr " "xkb" "\^);"
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- dpy
+connection to X server
+.TP
+.I \- first
+keycode of first key of interest
+.TP
+.I \- num
+number of keys desired
+.TP
+.I \- xkb
+pointer to keyboard description where result is stored
+.SH DESCRIPTION
+.LP
+.I XkbGetKeyActions
+sends a request to the server to obtain the actions for
+.I num
+keys on the keyboard starting with key
+.I first.
+It waits for a reply and returns the actions in the
+.I server->key_acts
+field of
+.I xkb.
+If successful,
+.I XkbGetKeyActions
+returns Success. The
+.I xkb
+parameter must be a pointer to a valid Xkb keyboard description.
+
+If the
+.I server
+map, in the
+.I xkb
+parameter, has not been allocated,
+.I XkbGetKeyActions
+allocates and initializes it before obtaining the actions.
+
+If the server does not have a compatible version of Xkb, or the Xkb extension
+has not been properly initialized,
+.I XkbGetKeyActions
+returns BadAccess. If
+.I num
+is less than 1 or greater than XkbMaxKeyCount,
+.I XkbGetKeyActions
+returns BadValue. If any allocation errors occur,
+.I XkbGetKeyActions
+returns BadAlloc.
+.SH DIAGNOSTICS
+.TP 15
+.B BadAccess
+The Xkb extension has not been properly initialized
+.TP 15
+.B BadAlloc
+Unable to allocate storage
+.TP 15
+.B BadValue
+An argument is out of range
diff --git a/libX11/man/xkb/XkbGetKeyBehaviors.man b/libX11/man/xkb/XkbGetKeyBehaviors.man
index 8f62d6033..3d2ae10d7 100644
--- a/libX11/man/xkb/XkbGetKeyBehaviors.man
+++ b/libX11/man/xkb/XkbGetKeyBehaviors.man
@@ -1,90 +1,90 @@
-.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
-.\"
-.\" Permission is hereby granted, free of charge, to any person obtaining a
-.\" copy of this software and associated documentation files (the "Software"),
-.\" to deal in the Software without restriction, including without limitation
-.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
-.\" and/or sell copies of the Software, and to permit persons to whom the
-.\" Software is furnished to do so, subject to the following conditions:
-.\"
-.\" The above copyright notice and this permission notice (including the next
-.\" paragraph) shall be included in all copies or substantial portions of the
-.\" Software.
-.\"
-.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-.\" DEALINGS IN THE SOFTWARE.
-.\"
-.TH XkbChangeTypesOfKey __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
-.SH NAME
-XkbChangeTypesOfKey \- Obtain the behaviors (the behaviors array) for a subset of the keys in
-a keyboard description from the server
-.SH SYNOPSIS
-.HP
-.B Status XkbChangeTypesOfKey
-.BI "(\^Display *" "dpy" "\^,"
-.BI "unsigned int " "first" "\^,"
-.BI "unsigned int " "num" "\^,"
-.BI "XkbDescPtr " "xkb" "\^);"
-.if n .ti +5n
-.if t .ti +.5i
-.SH ARGUMENTS
-.TP
-.I \- dpy
-connection to server
-.TP
-.I \- first
-keycode of first key to get
-.TP
-.I \- num
-number of keys for which behaviors are desired
-.TP
-.I \- xkb
-Xkb description to contain the result
-.SH DESCRIPTION
-.LP
-.I XkbGetKeyBehaviors
-sends a request to the server to obtain the behaviors for
-.I num
-keys on the keyboard starting with the key whose keycode is
-.I first.
-It waits for a reply and returns the behaviors in the
-.I server->behaviors
-field of
-.I xkb.
-If successful,
-.I XkbGetKeyBehaviors
-returns Success.
-
-If the
-.I server
-map in the
-.I xkb
-parameter has not been allocated,
-.I XkbGetKeyBehaviors
-allocates and initializes it before obtaining the actions.
-
-If the server does not have a compatible version of Xkb, or the Xkb extension has not been
-properly initialized,
-.I XkbGetKeyBehaviors
-returns BadAccess. If
-.I num
-is less than 1 or greater than XkbMaxKeyCount,
-.I XkbGetKeyBehaviors
-returns BadValue. If any allocation errors occur,
-.I XkbGetKeyBehaviors
-returns BadAlloc.
-.SH DIAGNOSTICS
-.TP 15
-.B BadAccess
-The Xkb extension has not been properly initialized
-.TP 15
-.B BadAlloc
-Unable to allocate storage
-.TP 15
-.B BadValue
-An argument is out of range
+.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the "Software"),
+.\" to deal in the Software without restriction, including without limitation
+.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
+.\" and/or sell copies of the Software, and to permit persons to whom the
+.\" Software is furnished to do so, subject to the following conditions:
+.\"
+.\" The above copyright notice and this permission notice (including the next
+.\" paragraph) shall be included in all copies or substantial portions of the
+.\" Software.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+.\" DEALINGS IN THE SOFTWARE.
+.\"
+.TH XkbChangeTypesOfKey __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbChangeTypesOfKey \- Obtain the behaviors (the behaviors array) for a subset of the keys in
+a keyboard description from the server
+.SH SYNOPSIS
+.HP
+.B Status XkbChangeTypesOfKey
+.BI "(\^Display *" "dpy" "\^,"
+.BI "unsigned int " "first" "\^,"
+.BI "unsigned int " "num" "\^,"
+.BI "XkbDescPtr " "xkb" "\^);"
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- dpy
+connection to server
+.TP
+.I \- first
+keycode of first key to get
+.TP
+.I \- num
+number of keys for which behaviors are desired
+.TP
+.I \- xkb
+Xkb description to contain the result
+.SH DESCRIPTION
+.LP
+.I XkbGetKeyBehaviors
+sends a request to the server to obtain the behaviors for
+.I num
+keys on the keyboard starting with the key whose keycode is
+.I first.
+It waits for a reply and returns the behaviors in the
+.I server->behaviors
+field of
+.I xkb.
+If successful,
+.I XkbGetKeyBehaviors
+returns Success.
+
+If the
+.I server
+map in the
+.I xkb
+parameter has not been allocated,
+.I XkbGetKeyBehaviors
+allocates and initializes it before obtaining the actions.
+
+If the server does not have a compatible version of Xkb, or the Xkb extension has not been
+properly initialized,
+.I XkbGetKeyBehaviors
+returns BadAccess. If
+.I num
+is less than 1 or greater than XkbMaxKeyCount,
+.I XkbGetKeyBehaviors
+returns BadValue. If any allocation errors occur,
+.I XkbGetKeyBehaviors
+returns BadAlloc.
+.SH DIAGNOSTICS
+.TP 15
+.B BadAccess
+The Xkb extension has not been properly initialized
+.TP 15
+.B BadAlloc
+Unable to allocate storage
+.TP 15
+.B BadValue
+An argument is out of range
diff --git a/libX11/man/xkb/XkbGetKeyExplicitComponents.man b/libX11/man/xkb/XkbGetKeyExplicitComponents.man
index 0437a5971..8026d30bc 100644
--- a/libX11/man/xkb/XkbGetKeyExplicitComponents.man
+++ b/libX11/man/xkb/XkbGetKeyExplicitComponents.man
@@ -1,151 +1,151 @@
-'\" t
-.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
-.\"
-.\" Permission is hereby granted, free of charge, to any person obtaining a
-.\" copy of this software and associated documentation files (the "Software"),
-.\" to deal in the Software without restriction, including without limitation
-.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
-.\" and/or sell copies of the Software, and to permit persons to whom the
-.\" Software is furnished to do so, subject to the following conditions:
-.\"
-.\" The above copyright notice and this permission notice (including the next
-.\" paragraph) shall be included in all copies or substantial portions of the
-.\" Software.
-.\"
-.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-.\" DEALINGS IN THE SOFTWARE.
-.\"
-.TH XkbGetKeyExplicitComponents __libmansuffix__ "20 Jul 1999" "X v11 Rel. 6.4" "XKB FUNCTION"
-.SH NAME
-XkbGetKeyExplicitComponents \- Obtain the explicit components (the explicit
-array) for a subset of the keys in a keyboard description
-.SH SYNOPSIS
-.HP
-.B Status XkbGetKeyExplicitComponents
-.BI "(\^Display *" "dpy" "\^,"
-.BI "unsigned int " "first" "\^,"
-.BI "unsigned int " "num" "\^,"
-.BI "XkbDescPtr " "xkb" "\^);"
-.if n .ti +5n
-.if t .ti +.5i
-.SH ARGUMENTS
-.TP
-.I \- dpy
-connection to server
-.TP
-.I \- first
-keycode of first key to fetch
-.TP
-.I \- num
-number of keys for which to get explicit info
-.TP
-.I \- xkb
-Xkb description in which to put results
-.SH DESCRIPTION
-.LP
-Whenever a client remaps the keyboard using core protocol requests, Xkb examines
-the map to determine likely default values for the components that cannot be
-specified using the core protocol (see Core Keyboard Mapping to Xkb Keyboard
-Mapping Transformation for more information on how Xkb chooses the default
-values).
-
-DO THE FOUR PAGES OF "CORE KEYBOARD MAPPING TO XKB KEYBOARD MAPPING
-TRANSFORMATION" NEED TO BE ADDED HERE?
-
-This automatic remapping might replace definitions explicitly requested by an
-application, so the Xkb keyboard description defines an explicit components mask
-for each key. Any aspects of the automatic remapping listed in the explicit
-components mask for a key are not changed by the automatic keyboard mapping.
-
-The explicit components masks are held in the
-.I explicit
-field of the server map, which is an array indexed by keycode. Each entry in
-this array is a mask that is a bitwise inclusive OR of the values shown in Table
-1.
-.TS
-c s s
-l l l
-l l lw(3i).
-Table 1 Explicit Component Masks
-_
-Bit in Explicit Mask Value Protects Against
-_
-ExplicitKeyType1 (1<<0) T{
-Automatic determination of the key type associated with Group1.
-T}
-ExplicitKeyType2 (1<<1) T{
-Automatic determination of the key type associated with Group2.
-T}
-ExplicitKeyType3 (1<<2) T{
-Automatic determination of the key type associated with Group3.
-T}
-ExplicitKeyType4 (1<<3) T{
-Automatic determination of the key type associated with Group4.
-T}
-ExplicitInterpret (1<<4) T{
-Application of any of the fields of a symbol interpretation to the key in
-question.
-T}
-ExplicitAutoRepeat (1<<5) T{
-Automatic determination of auto-repeat status for the key, as specified in a
-symbol interpretation.
-T}
-ExplicitBehavior (1<<6) T{
-Automatic assignment of the XkbKB_Lock behavior to the key, if the
-XkbSI_LockingKey flag is set in a symbol interpretation.
-T}
-ExplicitVModMap (1<<7) T{
-Automatic determination of the virtual modifier map for the key based on the
-actions assigned to the key and the symbol interpretations that match the key.
-T}
-.TE
-
-.I XkbGetKeyExplicitComponents
-sends a request to the server to obtain the explicit components for
-.I num
-keys on the keyboard starting with key
-.I first.
-It waits for a reply and returns the explicit components in the
-.I server->explicit
-array of
-.I xkb.
-If successful,
-.I XkbGetKeyExplicitComponents
-returns Success. The
-.I xkb
-parameter must be a pointer to a valid Xkb keyboard description.
-
-If the
-.I server
-map in the
-.I xkb
-parameter has not been allocated,
-.I XkbGetKeyExplicitComponents
-allocates and initializes it before obtaining the actions.
-
-If the server does not have a compatible version of Xkb, or the Xkb extension
-has not been properly initialized,
-.I XkbGetKeyExplicitComponents
-returns BadMatch. If
-.I num
-is less than 1 or greater than XkbMaxKeyCount,
-.I XkbGetKeyExplicitComponents
-returns BadValue. If any allocation errors occur,
-.I XkbGetKeyExplicitComponents
-returns BadAlloc.
-.SH DIAGNOSTICS
-.TP 15
-.B BadAlloc
-Unable to allocate storage
-.TP 15
-.B BadMatch
-A compatible version of Xkb was not available in the server or an argument has
-correct type and range, but is otherwise invalid
-.TP 15
-.B BadValue
-An argument is out of range
+'\" t
+.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the "Software"),
+.\" to deal in the Software without restriction, including without limitation
+.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
+.\" and/or sell copies of the Software, and to permit persons to whom the
+.\" Software is furnished to do so, subject to the following conditions:
+.\"
+.\" The above copyright notice and this permission notice (including the next
+.\" paragraph) shall be included in all copies or substantial portions of the
+.\" Software.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+.\" DEALINGS IN THE SOFTWARE.
+.\"
+.TH XkbGetKeyExplicitComponents __libmansuffix__ "20 Jul 1999" "X v11 Rel. 6.4" "XKB FUNCTION"
+.SH NAME
+XkbGetKeyExplicitComponents \- Obtain the explicit components (the explicit
+array) for a subset of the keys in a keyboard description
+.SH SYNOPSIS
+.HP
+.B Status XkbGetKeyExplicitComponents
+.BI "(\^Display *" "dpy" "\^,"
+.BI "unsigned int " "first" "\^,"
+.BI "unsigned int " "num" "\^,"
+.BI "XkbDescPtr " "xkb" "\^);"
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- dpy
+connection to server
+.TP
+.I \- first
+keycode of first key to fetch
+.TP
+.I \- num
+number of keys for which to get explicit info
+.TP
+.I \- xkb
+Xkb description in which to put results
+.SH DESCRIPTION
+.LP
+Whenever a client remaps the keyboard using core protocol requests, Xkb examines
+the map to determine likely default values for the components that cannot be
+specified using the core protocol (see Core Keyboard Mapping to Xkb Keyboard
+Mapping Transformation for more information on how Xkb chooses the default
+values).
+
+DO THE FOUR PAGES OF "CORE KEYBOARD MAPPING TO XKB KEYBOARD MAPPING
+TRANSFORMATION" NEED TO BE ADDED HERE?
+
+This automatic remapping might replace definitions explicitly requested by an
+application, so the Xkb keyboard description defines an explicit components mask
+for each key. Any aspects of the automatic remapping listed in the explicit
+components mask for a key are not changed by the automatic keyboard mapping.
+
+The explicit components masks are held in the
+.I explicit
+field of the server map, which is an array indexed by keycode. Each entry in
+this array is a mask that is a bitwise inclusive OR of the values shown in Table
+1.
+.TS
+c s s
+l l l
+l l lw(3i).
+Table 1 Explicit Component Masks
+_
+Bit in Explicit Mask Value Protects Against
+_
+ExplicitKeyType1 (1<<0) T{
+Automatic determination of the key type associated with Group1.
+T}
+ExplicitKeyType2 (1<<1) T{
+Automatic determination of the key type associated with Group2.
+T}
+ExplicitKeyType3 (1<<2) T{
+Automatic determination of the key type associated with Group3.
+T}
+ExplicitKeyType4 (1<<3) T{
+Automatic determination of the key type associated with Group4.
+T}
+ExplicitInterpret (1<<4) T{
+Application of any of the fields of a symbol interpretation to the key in
+question.
+T}
+ExplicitAutoRepeat (1<<5) T{
+Automatic determination of auto-repeat status for the key, as specified in a
+symbol interpretation.
+T}
+ExplicitBehavior (1<<6) T{
+Automatic assignment of the XkbKB_Lock behavior to the key, if the
+XkbSI_LockingKey flag is set in a symbol interpretation.
+T}
+ExplicitVModMap (1<<7) T{
+Automatic determination of the virtual modifier map for the key based on the
+actions assigned to the key and the symbol interpretations that match the key.
+T}
+.TE
+
+.I XkbGetKeyExplicitComponents
+sends a request to the server to obtain the explicit components for
+.I num
+keys on the keyboard starting with key
+.I first.
+It waits for a reply and returns the explicit components in the
+.I server->explicit
+array of
+.I xkb.
+If successful,
+.I XkbGetKeyExplicitComponents
+returns Success. The
+.I xkb
+parameter must be a pointer to a valid Xkb keyboard description.
+
+If the
+.I server
+map in the
+.I xkb
+parameter has not been allocated,
+.I XkbGetKeyExplicitComponents
+allocates and initializes it before obtaining the actions.
+
+If the server does not have a compatible version of Xkb, or the Xkb extension
+has not been properly initialized,
+.I XkbGetKeyExplicitComponents
+returns BadMatch. If
+.I num
+is less than 1 or greater than XkbMaxKeyCount,
+.I XkbGetKeyExplicitComponents
+returns BadValue. If any allocation errors occur,
+.I XkbGetKeyExplicitComponents
+returns BadAlloc.
+.SH DIAGNOSTICS
+.TP 15
+.B BadAlloc
+Unable to allocate storage
+.TP 15
+.B BadMatch
+A compatible version of Xkb was not available in the server or an argument has
+correct type and range, but is otherwise invalid
+.TP 15
+.B BadValue
+An argument is out of range
diff --git a/libX11/man/xkb/XkbGetKeyModifierMap.man b/libX11/man/xkb/XkbGetKeyModifierMap.man
index 16053babb..03a0ff974 100644
--- a/libX11/man/xkb/XkbGetKeyModifierMap.man
+++ b/libX11/man/xkb/XkbGetKeyModifierMap.man
@@ -1,93 +1,93 @@
-.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
-.\"
-.\" Permission is hereby granted, free of charge, to any person obtaining a
-.\" copy of this software and associated documentation files (the "Software"),
-.\" to deal in the Software without restriction, including without limitation
-.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
-.\" and/or sell copies of the Software, and to permit persons to whom the
-.\" Software is furnished to do so, subject to the following conditions:
-.\"
-.\" The above copyright notice and this permission notice (including the next
-.\" paragraph) shall be included in all copies or substantial portions of the
-.\" Software.
-.\"
-.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-.\" DEALINGS IN THE SOFTWARE.
-.\"
-.TH XkbGetKeyModifierMap __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
-.SH NAME
-XkbGetKeyModifierMap \- Update the modifier map for one or more of the keys in a
-keyboard description
-.SH SYNOPSIS
-.HP
-.B Status XkbGetKeyModifierMap
-.BI "(\^Display *" "dpy" "\^,"
-.BI "unsigned int " "first" "\^,"
-.BI "unsigned int " "num" "\^,"
-.BI "XkbDescPtr " "xkb" "\^);"
-.if n .ti +5n
-.if t .ti +.5i
-.SH ARGUMENTS
-.TP
-.I \- dpy
-connection to X server
-.TP
-.I \- first
-keycode of first key to get
-.TP
-.I \- num
-number of keys for which information is desired
-.TP
-.I \- xkb
-keyboard description to update
-.SH DESCRIPTION
-.LP
-The
-.I modmap
-entry of the client map is an array, indexed by keycode, specifying the real
-modifiers bound to a key. Each entry is a mask composed of a bitwise inclusive
-OR of the legal real modifiers: ShiftMask, LockMask, ControlMask, Mod1Mask,
-Mod2Mask, Mod3Mask, Mod4Mask, and Mod5Mask. If a bit is set in a
-.I modmap
-entry, the corresponding key is bound to that modifier.
-
-Pressing or releasing the key bound to a modifier changes the modifier set and
-unset state. The particular manner in which the modifier set and unset state
-changes is determined by the behavior and actions assigned to the key.
-
-.I XkbGetKeyModifierMap
-sends a request to the server for the modifier mappings for
-.I num
-keys starting with the key whose keycode is
-.I first.
-It waits for a reply and places the results in the
-.I xkb->map->modmap
-array. If successful,
-.I XkbGetKeyModifier
-returns Success.
-
-If the map component of the
-.I xkb
-parameter has not been allocated,
-.I XkbGetKeyModifierMap
-allocates and initializes it.
-
-If a compatible version of Xkb is not available in the server or the Xkb
-extension has not been properly initialized,
-.I XkbGetKeySyms
-returns BadAccess. If any allocation errors occur while obtaining the modifier
-map,
-.I XkbGetKeyModifierMap
-returns BadAlloc.
-.SH DIAGNOSTICS
-.TP 15
-.B BadAccess
-The Xkb extension has not been properly initialized
-.TP 15
-.B BadAlloc
-Unable to allocate storage
+.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the "Software"),
+.\" to deal in the Software without restriction, including without limitation
+.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
+.\" and/or sell copies of the Software, and to permit persons to whom the
+.\" Software is furnished to do so, subject to the following conditions:
+.\"
+.\" The above copyright notice and this permission notice (including the next
+.\" paragraph) shall be included in all copies or substantial portions of the
+.\" Software.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+.\" DEALINGS IN THE SOFTWARE.
+.\"
+.TH XkbGetKeyModifierMap __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbGetKeyModifierMap \- Update the modifier map for one or more of the keys in a
+keyboard description
+.SH SYNOPSIS
+.HP
+.B Status XkbGetKeyModifierMap
+.BI "(\^Display *" "dpy" "\^,"
+.BI "unsigned int " "first" "\^,"
+.BI "unsigned int " "num" "\^,"
+.BI "XkbDescPtr " "xkb" "\^);"
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- dpy
+connection to X server
+.TP
+.I \- first
+keycode of first key to get
+.TP
+.I \- num
+number of keys for which information is desired
+.TP
+.I \- xkb
+keyboard description to update
+.SH DESCRIPTION
+.LP
+The
+.I modmap
+entry of the client map is an array, indexed by keycode, specifying the real
+modifiers bound to a key. Each entry is a mask composed of a bitwise inclusive
+OR of the legal real modifiers: ShiftMask, LockMask, ControlMask, Mod1Mask,
+Mod2Mask, Mod3Mask, Mod4Mask, and Mod5Mask. If a bit is set in a
+.I modmap
+entry, the corresponding key is bound to that modifier.
+
+Pressing or releasing the key bound to a modifier changes the modifier set and
+unset state. The particular manner in which the modifier set and unset state
+changes is determined by the behavior and actions assigned to the key.
+
+.I XkbGetKeyModifierMap
+sends a request to the server for the modifier mappings for
+.I num
+keys starting with the key whose keycode is
+.I first.
+It waits for a reply and places the results in the
+.I xkb->map->modmap
+array. If successful,
+.I XkbGetKeyModifier
+returns Success.
+
+If the map component of the
+.I xkb
+parameter has not been allocated,
+.I XkbGetKeyModifierMap
+allocates and initializes it.
+
+If a compatible version of Xkb is not available in the server or the Xkb
+extension has not been properly initialized,
+.I XkbGetKeySyms
+returns BadAccess. If any allocation errors occur while obtaining the modifier
+map,
+.I XkbGetKeyModifierMap
+returns BadAlloc.
+.SH DIAGNOSTICS
+.TP 15
+.B BadAccess
+The Xkb extension has not been properly initialized
+.TP 15
+.B BadAlloc
+Unable to allocate storage
diff --git a/libX11/man/xkb/XkbGetKeySyms.man b/libX11/man/xkb/XkbGetKeySyms.man
index c5d1af1df..a68da7f63 100644
--- a/libX11/man/xkb/XkbGetKeySyms.man
+++ b/libX11/man/xkb/XkbGetKeySyms.man
@@ -1,99 +1,99 @@
-.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
-.\"
-.\" Permission is hereby granted, free of charge, to any person obtaining a
-.\" copy of this software and associated documentation files (the "Software"),
-.\" to deal in the Software without restriction, including without limitation
-.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
-.\" and/or sell copies of the Software, and to permit persons to whom the
-.\" Software is furnished to do so, subject to the following conditions:
-.\"
-.\" The above copyright notice and this permission notice (including the next
-.\" paragraph) shall be included in all copies or substantial portions of the
-.\" Software.
-.\"
-.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-.\" DEALINGS IN THE SOFTWARE.
-.\"
-.TH XkbGetKeySyms __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
-.SH NAME
-XkbGetKeySyms \- Obtain the symbols for a subset of the keys in a keyboard
-description
-.SH SYNOPSIS
-.HP
-.B Status XkbGetKeySyms
-.BI "(\^Display *" "dpy" "\^,"
-.BI "unsigned int " "first" "\^,"
-.BI "unsigned int " "num" "\^,"
-.BI "XkbDescPtr " "xkb" "\^);"
-.if n .ti +5n
-.if t .ti +.5i
-.SH ARGUMENTS
-.TP
-.I \- dpy
-connection to X server
-.TP
-.I \- first
-keycode of first key to get
-.TP
-.I \- num
-number of keycodes for which syms desired
-.TP
-.I \- xkb
-Xkb description to be updated
-.SH DESCRIPTION
-.LP
-.I XkbGetKeySyms
-sends a request to the server to obtain the set of keysyms bound to
-.I num
-keys starting with the key whose keycode is
-.I first.
-It waits for a reply and returns the keysyms in the
-.I map.syms
-field of
-.I xkb.
-If successful,
-.I XkbGetKeySyms
-returns Success. The
-.I xkb
-parameter must be a pointer to a valid Xkb keyboard description.
-
-If the client
-.I map
-in the xkb parameter has not been allocated,
-.I XkbGetKeySyms
-allocates and initializes it before obtaining the symbols.
-
-If a compatible version of Xkb is not available in the server or the Xkb
-extension has not been properly initialized,
-.I XkbGetKeySyms
-returns BadAccess. If
-.I num
-is less than 1 or greater than XkbMaxKeyCount,
-.I XkbGetKeySyms
-returns BadValue. If any allocation errors occur,
-.I XkbGetKeySyms
-returns BadAlloc.
-.SH "RETURN VALUES"
-.TP 15
-Success
-The
-.I XkbGetKeySyms
-function returns Success if it gets a reply to a request to the server to obtain the set of keysyms bound to
-.I num
-keys starting with the key whose keycode is
-.I first.
-.SH DIAGNOSTICS
-.TP 15
-.B BadAccess
-The Xkb extension has not been properly initialized
-.TP 15
-.B BadAlloc
-Unable to allocate storage
-.TP 15
-.B BadValue
-An argument is out of range
+.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the "Software"),
+.\" to deal in the Software without restriction, including without limitation
+.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
+.\" and/or sell copies of the Software, and to permit persons to whom the
+.\" Software is furnished to do so, subject to the following conditions:
+.\"
+.\" The above copyright notice and this permission notice (including the next
+.\" paragraph) shall be included in all copies or substantial portions of the
+.\" Software.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+.\" DEALINGS IN THE SOFTWARE.
+.\"
+.TH XkbGetKeySyms __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbGetKeySyms \- Obtain the symbols for a subset of the keys in a keyboard
+description
+.SH SYNOPSIS
+.HP
+.B Status XkbGetKeySyms
+.BI "(\^Display *" "dpy" "\^,"
+.BI "unsigned int " "first" "\^,"
+.BI "unsigned int " "num" "\^,"
+.BI "XkbDescPtr " "xkb" "\^);"
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- dpy
+connection to X server
+.TP
+.I \- first
+keycode of first key to get
+.TP
+.I \- num
+number of keycodes for which syms desired
+.TP
+.I \- xkb
+Xkb description to be updated
+.SH DESCRIPTION
+.LP
+.I XkbGetKeySyms
+sends a request to the server to obtain the set of keysyms bound to
+.I num
+keys starting with the key whose keycode is
+.I first.
+It waits for a reply and returns the keysyms in the
+.I map.syms
+field of
+.I xkb.
+If successful,
+.I XkbGetKeySyms
+returns Success. The
+.I xkb
+parameter must be a pointer to a valid Xkb keyboard description.
+
+If the client
+.I map
+in the xkb parameter has not been allocated,
+.I XkbGetKeySyms
+allocates and initializes it before obtaining the symbols.
+
+If a compatible version of Xkb is not available in the server or the Xkb
+extension has not been properly initialized,
+.I XkbGetKeySyms
+returns BadAccess. If
+.I num
+is less than 1 or greater than XkbMaxKeyCount,
+.I XkbGetKeySyms
+returns BadValue. If any allocation errors occur,
+.I XkbGetKeySyms
+returns BadAlloc.
+.SH "RETURN VALUES"
+.TP 15
+Success
+The
+.I XkbGetKeySyms
+function returns Success if it gets a reply to a request to the server to obtain the set of keysyms bound to
+.I num
+keys starting with the key whose keycode is
+.I first.
+.SH DIAGNOSTICS
+.TP 15
+.B BadAccess
+The Xkb extension has not been properly initialized
+.TP 15
+.B BadAlloc
+Unable to allocate storage
+.TP 15
+.B BadValue
+An argument is out of range
diff --git a/libX11/man/xkb/XkbGetKeyTypes.man b/libX11/man/xkb/XkbGetKeyTypes.man
index 22bd9b78d..d685209c0 100644
--- a/libX11/man/xkb/XkbGetKeyTypes.man
+++ b/libX11/man/xkb/XkbGetKeyTypes.man
@@ -1,82 +1,82 @@
-'\" t
-.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
-.\"
-.\" Permission is hereby granted, free of charge, to any person obtaining a
-.\" copy of this software and associated documentation files (the "Software"),
-.\" to deal in the Software without restriction, including without limitation
-.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
-.\" and/or sell copies of the Software, and to permit persons to whom the
-.\" Software is furnished to do so, subject to the following conditions:
-.\"
-.\" The above copyright notice and this permission notice (including the next
-.\" paragraph) shall be included in all copies or substantial portions of the
-.\" Software.
-.\"
-.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-.\" DEALINGS IN THE SOFTWARE.
-.\"
-.TH XkbGetKeyTypes __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
-.SH NAME
-XkbGetKeyTypes \- Obtain the list of available key types in the server's
-keyboard mapping
-.SH SYNOPSIS
-.HP
-.B Status XkbGetKeyTypes
-.BI "(\^Display *" "dpy" "\^,"
-.BI "unsigned int " "first" "\^,"
-.BI "unsigned int " "num" "\^,"
-.BI "XkbDescPtr " "xkb" "\^);"
-.if n .ti +5n
-.if t .ti +.5i
-.SH ARGUMENTS
-.TP
-.I \- dpy
-connection to X server
-.TP
-.I \- first
-index to first type to get, 0 => 1st type
-.TP
-.I \- num
-number of key types to be returned
-.TP
-.I \- xkb
-keyboard description containing client map to update
-.SH DESCRIPTION
-.LP
-.I XkbGetKeyTypes
-queries the server for the desired types, waits for a reply, and returns the
-desired types in the
-.I xkb->map->types.
-If successful, it returns Success.
-
-.I XkbGetKeyTypes
-returns BadAccess if the Xkb extension has not been properly initialized and
-BadValue if the combination of
-.I first
-and
-.I num
-results in numbers out of valid range.
-
-.B NOTE:
-.I XkbGetKeyTypes
-is used to obtain descriptions of the key types themselves, not the key types
-bound to individual keys. To obtain the key types bound to an individual key,
-refer to the
-.I key_sym_map
-field of the client map.
-.SH DIAGNOSTICS
-.TP 15
-.B BadAccess
-The Xkb extension has not been properly initialized
-.TP 15
-.B BadValue
-An argument is out of range
-.SH "SEE ALSO"
-.BR XkbKeyType (__libmansuffix__),
-.BR XkbKeyTypeIndex (__libmansuffix__)
-
+'\" t
+.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the "Software"),
+.\" to deal in the Software without restriction, including without limitation
+.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
+.\" and/or sell copies of the Software, and to permit persons to whom the
+.\" Software is furnished to do so, subject to the following conditions:
+.\"
+.\" The above copyright notice and this permission notice (including the next
+.\" paragraph) shall be included in all copies or substantial portions of the
+.\" Software.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+.\" DEALINGS IN THE SOFTWARE.
+.\"
+.TH XkbGetKeyTypes __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbGetKeyTypes \- Obtain the list of available key types in the server's
+keyboard mapping
+.SH SYNOPSIS
+.HP
+.B Status XkbGetKeyTypes
+.BI "(\^Display *" "dpy" "\^,"
+.BI "unsigned int " "first" "\^,"
+.BI "unsigned int " "num" "\^,"
+.BI "XkbDescPtr " "xkb" "\^);"
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- dpy
+connection to X server
+.TP
+.I \- first
+index to first type to get, 0 => 1st type
+.TP
+.I \- num
+number of key types to be returned
+.TP
+.I \- xkb
+keyboard description containing client map to update
+.SH DESCRIPTION
+.LP
+.I XkbGetKeyTypes
+queries the server for the desired types, waits for a reply, and returns the
+desired types in the
+.I xkb->map->types.
+If successful, it returns Success.
+
+.I XkbGetKeyTypes
+returns BadAccess if the Xkb extension has not been properly initialized and
+BadValue if the combination of
+.I first
+and
+.I num
+results in numbers out of valid range.
+
+.B NOTE:
+.I XkbGetKeyTypes
+is used to obtain descriptions of the key types themselves, not the key types
+bound to individual keys. To obtain the key types bound to an individual key,
+refer to the
+.I key_sym_map
+field of the client map.
+.SH DIAGNOSTICS
+.TP 15
+.B BadAccess
+The Xkb extension has not been properly initialized
+.TP 15
+.B BadValue
+An argument is out of range
+.SH "SEE ALSO"
+.BR XkbKeyType (__libmansuffix__),
+.BR XkbKeyTypeIndex (__libmansuffix__)
+
diff --git a/libX11/man/xkb/XkbGetKeyVirtualModMap.man b/libX11/man/xkb/XkbGetKeyVirtualModMap.man
index 713a99eb4..2416b6f3d 100644
--- a/libX11/man/xkb/XkbGetKeyVirtualModMap.man
+++ b/libX11/man/xkb/XkbGetKeyVirtualModMap.man
@@ -1,103 +1,103 @@
-.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
-.\"
-.\" Permission is hereby granted, free of charge, to any person obtaining a
-.\" copy of this software and associated documentation files (the "Software"),
-.\" to deal in the Software without restriction, including without limitation
-.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
-.\" and/or sell copies of the Software, and to permit persons to whom the
-.\" Software is furnished to do so, subject to the following conditions:
-.\"
-.\" The above copyright notice and this permission notice (including the next
-.\" paragraph) shall be included in all copies or substantial portions of the
-.\" Software.
-.\"
-.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-.\" DEALINGS IN THE SOFTWARE.
-.\"
-.TH XkbGetKeyVirtualModMap __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
-.SH NAME
-XkbGetKeyVirtualModMap \- Obtain the virtual modifier map (the vmodmap array)
-for a subset of the keys in a keyboard description
-.SH SYNOPSIS
-.HP
-.B Status XkbGetKeyVirtualModMap
-.BI "(\^Display *" "dpy" "\^,"
-.BI "unsigned int " "first" "\^,"
-.BI "unsigned int " "num" "\^,"
-.BI "XkbDescPtr " "xkb" "\^);"
-.if n .ti +5n
-.if t .ti +.5i
-.SH ARGUMENTS
-.TP
-.I \- dpy
-connection to server
-.TP
-.I \- first
-keycode of first key to fetch
-.TP
-.I \- num
-number of keys for which virtual mod maps are desired
-.TP
-.I \- xkb
-Xkb description where results will be placed
-.SH DESCRIPTION
-.LP
-.I XkbGetKeyVirutalModmap
-sends a request to the server to obtain the virtual modifier mappings for
-.I num
-keys on the keyboard starting with key
-.I first.
-It waits for a reply and returns the virtual modifier mappings in the
-.I server->vmodmap
-array of
-.I xkb.
-If successful,
-.I XkbGetKeyVirtualModMap
-returns Success. The
-.I xkb
-parameter must be a pointer to a valid Xkb keyboard description.
-
-If the
-.I server
-map in the
-.I xkb
-parameter has not been allocated,
-.I XkbGetKeyVirtualModMap
-allocates and initializes it before obtaining the virtual modifier mappings.
-
-If the server does not have a compatible version of Xkb, or the Xkb extension
-has not been properly initialized,
-.I XkbGetKeyVirtualModMap
-returns BadMatch. If
-.I num
-is less than 1 or greater than XkbMaxKeyCount,
-.I XkbGetKeyVirtualModMap
-returns BadValue. If any allocation errors occur,
-.I XkbGetKeyVirtualModMap
-returns BadAlloc.
-.SH "RETURN VALUES"
-.TP 15
-Success
-The
-.I XkbGetKeyVirutalModmap
-function returns Success following a successful reply from the server to obtain
-the virtual modifier mappings for
-.I num
-keys on the keyboard starting with key
-.I first.
-.SH DIAGNOSTICS
-.TP 15
-.B BadAlloc
-Unable to allocate storage
-.TP 15
-.B BadMatch
-A compatible version of Xkb was not available in the server or an argument has
-correct type and range, but is otherwise invalid
-.TP 15
-.B BadValue
-An argument is out of range
+.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the "Software"),
+.\" to deal in the Software without restriction, including without limitation
+.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
+.\" and/or sell copies of the Software, and to permit persons to whom the
+.\" Software is furnished to do so, subject to the following conditions:
+.\"
+.\" The above copyright notice and this permission notice (including the next
+.\" paragraph) shall be included in all copies or substantial portions of the
+.\" Software.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+.\" DEALINGS IN THE SOFTWARE.
+.\"
+.TH XkbGetKeyVirtualModMap __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbGetKeyVirtualModMap \- Obtain the virtual modifier map (the vmodmap array)
+for a subset of the keys in a keyboard description
+.SH SYNOPSIS
+.HP
+.B Status XkbGetKeyVirtualModMap
+.BI "(\^Display *" "dpy" "\^,"
+.BI "unsigned int " "first" "\^,"
+.BI "unsigned int " "num" "\^,"
+.BI "XkbDescPtr " "xkb" "\^);"
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- dpy
+connection to server
+.TP
+.I \- first
+keycode of first key to fetch
+.TP
+.I \- num
+number of keys for which virtual mod maps are desired
+.TP
+.I \- xkb
+Xkb description where results will be placed
+.SH DESCRIPTION
+.LP
+.I XkbGetKeyVirutalModmap
+sends a request to the server to obtain the virtual modifier mappings for
+.I num
+keys on the keyboard starting with key
+.I first.
+It waits for a reply and returns the virtual modifier mappings in the
+.I server->vmodmap
+array of
+.I xkb.
+If successful,
+.I XkbGetKeyVirtualModMap
+returns Success. The
+.I xkb
+parameter must be a pointer to a valid Xkb keyboard description.
+
+If the
+.I server
+map in the
+.I xkb
+parameter has not been allocated,
+.I XkbGetKeyVirtualModMap
+allocates and initializes it before obtaining the virtual modifier mappings.
+
+If the server does not have a compatible version of Xkb, or the Xkb extension
+has not been properly initialized,
+.I XkbGetKeyVirtualModMap
+returns BadMatch. If
+.I num
+is less than 1 or greater than XkbMaxKeyCount,
+.I XkbGetKeyVirtualModMap
+returns BadValue. If any allocation errors occur,
+.I XkbGetKeyVirtualModMap
+returns BadAlloc.
+.SH "RETURN VALUES"
+.TP 15
+Success
+The
+.I XkbGetKeyVirutalModmap
+function returns Success following a successful reply from the server to obtain
+the virtual modifier mappings for
+.I num
+keys on the keyboard starting with key
+.I first.
+.SH DIAGNOSTICS
+.TP 15
+.B BadAlloc
+Unable to allocate storage
+.TP 15
+.B BadMatch
+A compatible version of Xkb was not available in the server or an argument has
+correct type and range, but is otherwise invalid
+.TP 15
+.B BadValue
+An argument is out of range
diff --git a/libX11/man/xkb/XkbGetKeyboard.man b/libX11/man/xkb/XkbGetKeyboard.man
index 30cea9ebe..ef44afb74 100644
--- a/libX11/man/xkb/XkbGetKeyboard.man
+++ b/libX11/man/xkb/XkbGetKeyboard.man
@@ -1,92 +1,92 @@
-'\" t
-.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
-.\"
-.\" Permission is hereby granted, free of charge, to any person obtaining a
-.\" copy of this software and associated documentation files (the "Software"),
-.\" to deal in the Software without restriction, including without limitation
-.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
-.\" and/or sell copies of the Software, and to permit persons to whom the
-.\" Software is furnished to do so, subject to the following conditions:
-.\"
-.\" The above copyright notice and this permission notice (including the next
-.\" paragraph) shall be included in all copies or substantial portions of the
-.\" Software.
-.\"
-.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-.\" DEALINGS IN THE SOFTWARE.
-.\"
-.TH XkbGetKeyboard __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
-.SH NAME
-XkbGetKeyboard \- Retrieves one or more components of a keyboard device
-description
-.SH SYNOPSIS
-.HP
-.B XkbDescPtr XkbGetKeyboard
-.BI "(\^Display *" "display" "\^,"
-.BI "unsigned int " "which" "\^,"
-.BI "unsigned int " "device_spec" "\^);"
-.if n .ti +5n
-.if t .ti +.5i
-.SH ARGUMENTS
-.TP
-.I display
-connection to the X server
-.TP
-.I device_spec
-device ID, or XkbUseCoreKbd
-.TP
-.I bits_to_change
-determines events to be selected / deselected
-.TP
-.I values_for_bits
-1=>select, 0->deselect; for events in bits_to_change
-.SH DESCRIPTION
-.LP
-.I XkbGetKeyboard
-allocates and returns a pointer to a keyboard description. It queries the server for those
-components specified in the
-.I which
-parameter for device
-.I device_spec
-and copies the results to the XkbDescRec it allocated. The remaining fields in the keyboard
-description are set to NULL. The valid masks for
-.I which
-are those listed in Table 1.
-
-.TS
-c s s
-l l l
-l l l.
-Table 1 Mask Bits for XkbDescRec
-_
-Mask Bit XkbDescRec Field Value
-_
-XkbControlsMask ctrls (1L<<0)
-XkbServerMapMask server (1L<<1)
-XkbIClientMapMask map (1L<<2)
-XkbIndicatorMapMask indicators (1L<<3)
-XkbNamesMask names (1L<<4)
-XkbCompatMapMask compat (1L<<5)
-XkbGeometryMask geom (1L<<6)
-XkbAllComponentsMask All Fields (1L<<7)
-.TE
-
-.I XkbGetKeyboard
-is used to read the current description for one or more components of a keyboard device. It calls
-.I XkbGetKeyboardByName
-as follows:
-
-.I XkbGetKeyboardByName(dpy, device_spec,
-NULL,
-.I which, which,
-False).
-.SH DIAGNOSTICS
-.TP 15
-.SM BadAlloc
-Unable to allocate storage
-
+'\" t
+.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the "Software"),
+.\" to deal in the Software without restriction, including without limitation
+.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
+.\" and/or sell copies of the Software, and to permit persons to whom the
+.\" Software is furnished to do so, subject to the following conditions:
+.\"
+.\" The above copyright notice and this permission notice (including the next
+.\" paragraph) shall be included in all copies or substantial portions of the
+.\" Software.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+.\" DEALINGS IN THE SOFTWARE.
+.\"
+.TH XkbGetKeyboard __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbGetKeyboard \- Retrieves one or more components of a keyboard device
+description
+.SH SYNOPSIS
+.HP
+.B XkbDescPtr XkbGetKeyboard
+.BI "(\^Display *" "display" "\^,"
+.BI "unsigned int " "which" "\^,"
+.BI "unsigned int " "device_spec" "\^);"
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I display
+connection to the X server
+.TP
+.I device_spec
+device ID, or XkbUseCoreKbd
+.TP
+.I bits_to_change
+determines events to be selected / deselected
+.TP
+.I values_for_bits
+1=>select, 0->deselect; for events in bits_to_change
+.SH DESCRIPTION
+.LP
+.I XkbGetKeyboard
+allocates and returns a pointer to a keyboard description. It queries the server for those
+components specified in the
+.I which
+parameter for device
+.I device_spec
+and copies the results to the XkbDescRec it allocated. The remaining fields in the keyboard
+description are set to NULL. The valid masks for
+.I which
+are those listed in Table 1.
+
+.TS
+c s s
+l l l
+l l l.
+Table 1 Mask Bits for XkbDescRec
+_
+Mask Bit XkbDescRec Field Value
+_
+XkbControlsMask ctrls (1L<<0)
+XkbServerMapMask server (1L<<1)
+XkbIClientMapMask map (1L<<2)
+XkbIndicatorMapMask indicators (1L<<3)
+XkbNamesMask names (1L<<4)
+XkbCompatMapMask compat (1L<<5)
+XkbGeometryMask geom (1L<<6)
+XkbAllComponentsMask All Fields (1L<<7)
+.TE
+
+.I XkbGetKeyboard
+is used to read the current description for one or more components of a keyboard device. It calls
+.I XkbGetKeyboardByName
+as follows:
+
+.I XkbGetKeyboardByName(dpy, device_spec,
+NULL,
+.I which, which,
+False).
+.SH DIAGNOSTICS
+.TP 15
+.SM BadAlloc
+Unable to allocate storage
+
diff --git a/libX11/man/xkb/XkbGetKeyboardByName.man b/libX11/man/xkb/XkbGetKeyboardByName.man
index 463a0b369..974552c03 100644
--- a/libX11/man/xkb/XkbGetKeyboardByName.man
+++ b/libX11/man/xkb/XkbGetKeyboardByName.man
@@ -1,385 +1,385 @@
-'\" t
-.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
-.\"
-.\" Permission is hereby granted, free of charge, to any person obtaining a
-.\" copy of this software and associated documentation files (the "Software"),
-.\" to deal in the Software without restriction, including without limitation
-.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
-.\" and/or sell copies of the Software, and to permit persons to whom the
-.\" Software is furnished to do so, subject to the following conditions:
-.\"
-.\" The above copyright notice and this permission notice (including the next
-.\" paragraph) shall be included in all copies or substantial portions of the
-.\" Software.
-.\"
-.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-.\" DEALINGS IN THE SOFTWARE.
-.\"
-.TH XkbGetKeyboardByName __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
-.SH NAME
-XkbGetKeyboardByName \- Build a new keyboard description from a set of named
-components, and to optionally have the server use the resulting description to
-replace an active one
-.SH SYNOPSIS
-.HP
-.B XkbDescPtr XkbGetKeyboardByName
-.BI "(\^Display *" "dpy" "\^,"
-.BI "unsigned int " "device_spec" "\^,"
-.BI "XkbComponentNamesPtr " "names" "\^,"
-.BI "unsigned int " "want" "\^,"
-.BI "unsigned int " "need" "\^,"
-.BI "Bool " "load" "\^);"
-.if n .ti +5n
-.if t .ti +.5i
-.SH ARGUMENTS
-.TP
-.I \- dpy
-connection to X server
-.TP
-.I \- device_spec
-device ID, or XkbUseCoreKbd
-.TP
-.I \- names
-names of components to fetch
-.TP
-.I \- want
-desired structures in returned record
-.TP
-.I \- need
-mandatory structures in returned record
-.TP
-.I \- load
-True => load into
-.I device_spec
-.SH DESCRIPTION
-.LP
-A client may request that the server fetch one or more components from its
-database and use those components to build a new server keyboard description.
-The new keyboard description may be built from scratch, or it may be built
-starting with the current keyboard description for a particular device. Once the
-keyboard description is built, all or part of it may be returned to the client.
-The parts returned to the client need not include all of the parts used to build
-the description. At the time it requests the server to build a new keyboard
-description, a client may also request that the server use the new description
-internally to replace the current keyboard description for a specific device, in
-which case the behavior of the device changes accordingly.
-
-To build a new keyboard description from a set of named components, and to
-optionally have the server use the resulting description to replace an active
-one, use
-.I XkbGetKeyboardByName.
-
-.I names
-contains a set of expressions describing the keyboard components the
-server should use to build the new keyboard description.
-.I want
-and
-.I need
-are bit fields describing the parts of the resulting keyboard description that
-should be present in the returned XkbDescRec.
-
-The individual fields in
-.I names
-are
-.I component expressions
-composed of keyboard component names (no wildcarding as may be used in
-.I XkbListComponents),
-the special component name symbol `%', and the special operator characters `+'
-and `|'. A component expression is parsed left to right, as follows:
-
-.IP \(bu 5
-The special component name "computed" may be used in keycodes component
-expressions and refers to a component consisting of a set of keycodes computed
-automatically by the server as needed.
-.IP \(bu 5
-The special component name "canonical" may be used in types component
-expressions and refers to a partial component defining the four standard key
-types: ALPHABETIC, ONE_LEVEL, TWO_LEVEL, and KEYPAD.
-.IP \(bu 5
-The special component name `%' refers to the keyboard description for the device
-specified in device_spec or the keymap names component. If a keymap names
-component is specified that does not begin with `+' or `|' and does not contain
-`%', then `%' refers to the description generated by the keymap names component.
-Otherwise, it refers to the keyboard description for device_spec.
-.IP \(bu 5
-The `+' operator specifies that the following component should override the
-currently assembled description; any definitions that are present in both
-components are taken from the second.
-.IP \(bu 5
-The `|' operator specifies that the next specified component should augment the
-currently assembled description; any definitions that are present in both
-components are taken from the first.
-.IP \(bu 5
-If the component expression begins with an operator, a leading `%' is implied.
-.IP \(bu 5
-If any unknown or illegal characters appear anywhere in the expression, the
-entire expression is invalid and is ignored.
-
-For example, if
-.I names->symbols
-contained the expression "+de", it specifies that
-the default member of the "de" class of symbols should be applied to the current
-keyboard mapping, overriding any existing definitions (it could also be written
-"+de(default)").
-
-Here is a slightly more involved example: the expression
-"acme(ascii)+de(basic)|iso9995-3" constructs a German (de) mapping for the ASCII
-keyboard supplied by the "acme" vendor. The new definition begins with the
-symbols for the ASCII keyboard for Acme
-.I (acme(ascii)),
-overrides them with definitions for the basic German keyboard
-.I (de(basic)),
-and then applies the definitions from the default iso9995-3 keyboard
-.I (iso9995-3)
-to any undefined keys or groups of keys (part three of the iso9995 standard
-defines a common set of bindings for the secondary group, but allows national
-layouts to override those definitions where necessary).
-
-.B NOTE
-The interpretation of the above expression components (acme, ascii, de, basic,
-iso9995-3) is not defined by Xkb; only the operations and their ordering are.
-
-Note that the presence of a keymap
-.I names
-component that does not contain `%' (either explicit or implied by virtue of an
-expression starting with an operator) indicates a description that is
-independent of the keyboard description for the device specified in
-.I device_spec.
-The same is true of requests in which the keymap names component is empty and
-all five other names components contain expressions void of references to `%'.
-Requests of this form allow you to deal with keyboard definitions independent of
-any actual device.
-
-The server parses all non-NULL fields in
-.I names
-and uses them to build a keyboard description. However, before parsing the
-expressions in
-.I names,
-the server ORs the bits in
-.I want
-and
-.I need
-together and examines the result in relationship to the expressions in
-.I names.
-Table 1 identifies the components that are required for each of the possible
-bits in
-.I want
-or
-.I need.
-If a required component has not been specified in the
-.I names structure (the corresponding field is NULL), the server substitutes the
-expression "%", resulting in the component values being taken from
-.I device_spec.
-In addition, if
-.I load
-is True, the server modifies
-.I names
-if necessary (again using a "%" entry) to ensure all of the following fields are
-non-NULL:
-.I types, keycodes, symbols,
-and
-.I compat.
-.bp
-.TS
-c s s
-l l l.
-Table 1 Want and Need Mask Bits and Required Names Components
-_
-want or need mask bit Required names Components value
-_
-XkbGBN_TypesMask Types (1L<<0)
-XkbGBN_CompatMapMask Compat (1L<<1)
-XkbGBN_ClientSymbolsMask Types + Symbols + Keycodes (1L<<2)
-XkbGBN_ServerSymbolsMask Types + Symbols + Keycodes (1L<<3)
-XkbGBN_SymbolsMask Symbols (1L<<1)
-XkbGBN_IndicatorMapMask Compat (1L<<4)
-XkbGBN_KeyNamesMask Keycodes (1L<<5)
-XkbGBN_GeometryMask Geometry (1L<<6)
-XkbGBN_OtherNamesMask Types + Symbols + Keycodes + Compat + Geometry (1L<<7)
-XkbGBN_AllComponentsMask (0xff)
-.TE
-
-.I need
-specifies a set of keyboard components that the server must be able to
-resolve in order for
-.I XkbGetKeyboardByName
-to succeed; if any of the components specified in
-.I need
-cannot be successfully resolved,
-.I XkbGetKeyboardByName
-fails.
-
-.I want
-specifies a set of keyboard components that the server should attempt to
-resolve, but that are not mandatory. If the server is unable to resolve any of
-these components,
-.I XkbGetKeyboardByName
-still succeeds. Bits specified in
-.I want
-that are also specified in
-.I need
-have no effect in the context of
-.I want.
-
-If
-.I load
-is True, the server updates its keyboard description for
-.I device_spec
-to match the result of the keyboard description just built. If load is False,
-the
-server's description for device
-.I device_spec
-is not updated. In all cases, the parts specified by
-.I want
-and
-.I need
-from the just-built keyboard description are returned.
-
-The
-.I names
-structure in an XkbDescRec keyboard description record contains one field for
-each of the five component types used to build a keyboard description. When a
-keyboard description is built from a set of database components, the
-corresponding fields in this
-.I names
-structure are set to match the expressions used to build the component.
-
-Building a New Keyboard Description from the Server Database
-
-The information returned to the client in the XkbDescRec is essentially the
-result of a series of calls to extract information from a fictitious device
-whose description matches the one just built. The calls corresponding to each of
-the mask bits are summarized in Table 2, together with the XkbDescRec
-components that are filled in.
-
-.TS
-c s s
-l l l.
-Table 2 XkbDescRec Components Returned for Values of Want & Needs
-_
-Request (want+need) Fills in Xkb components Equivalent Function Call
-_
-XkbGBN_TypesMask map.types XkbGetUpdatedMap(dpy, XkbTypesMask, Xkb)
-XkbGBN_ServerSymbolsMask server XkbGetUpdatedMap(dpy,
-XkbAllClientInfoMask, Xkb)
-XkbGBN_ClientSymbolsMask map, including map.types
-XkbGetUpdatedMap(dpy, XkbAllServerInfoMask, Xkb)
-XkbGBN_IndicatorMaps indicators XkbGetIndicatorMap(dpy,
-XkbAllIndicators, Xkb)
-XkbGBN_CompatMapMask compat XkbGetCompatMap(dpy, XkbAllCompatMask, Xkb)
-XkbGBN_GeometryMask geom XkbGetGeometry(dpy, Xkb)
-XkbGBN_KeyNamesMask names.keys XkbGetNames(dpy, XkbKeyNamesMask |
- names.key_aliases XkbKeyAliasesMask, Xkb)
-XkbGBN_OtherNamesMask names.keycodes XkbGetNames(dpy, XkbAllNamesMask &
- names.geometry ~(XkbKeyNamesMask | XkbKeyAliasesMask),
- names.symbols Xkb)
- names.types
- map.types[*].lvl_names[*]
- names.compat
- names.vmods
- names.indicators
- names.groups
- names.radio_groups
- names.phys_symbols
-.TE
-
-There is no way to determine which components specified in
-.I want
-(but not in
-.I need)
-were actually fetched, other than breaking the call into successive calls to
-.I XkbGetKeyboardByName
-and specifying individual components.
-
-.I XkbGetKeyboardByName
-always sets
-.I min_key_code
-and
-.I max_key_code
-in the returned XkbDescRec structure.
-
-.I XkbGetKeyboardByName
-is synchronous; it sends the request to the server to build a new keyboard
-description and waits for the reply. If successful, the return value is
-non-NULL.
-.I XkbGetKeyboardByName
-generates a BadMatch protocol error if errors are encountered when building the
-keyboard description.
-.SH STRUCTURES
-.LP
-The complete description of an Xkb keyboard is given by an XkbDescRec. The
-component
-structures in the XkbDescRec represent the major Xkb components outlined in
-Figure 1.1.
-
-.nf
-typedef struct {
- struct _XDisplay * display; /\(** connection to X server */
- unsigned short flags; /\(** private to Xkb, do not modify */
- unsigned short device_spec; /\(** device of interest */
- KeyCode min_key_code; /\(** minimum keycode for device */
- KeyCode max_key_code; /\(** maximum keycode for device */
- XkbControlsPtr ctrls; /\(** controls */
- XkbServerMapPtr server; /\(** server keymap */
- XkbClientMapPtr map; /\(** client keymap */
- XkbIndicatorPtr indicators; /\(** indicator map */
- XkbNamesPtr names; /\(** names for all components */
- XkbCompatMapPtr compat; /\(** compatibility map */
- XkbGeometryPtr geom; /\(** physical geometry of keyboard */
-} XkbDescRec, *XkbDescPtr;
-
-.fi
-The
-.I display
-field points to an X display structure. The
-.I flags field is private to the library: modifying
-.I flags
-may yield unpredictable results. The
-.I device_spec
-field specifies the device identifier of the keyboard input device, or
-XkbUseCoreKeyboard, which specifies the core keyboard device. The
-.I min_key_code
-and
-.I max_key_code
-fields specify the least and greatest keycode that can be returned by the
-keyboard.
-
-Each structure component has a corresponding mask bit that is used in function
-calls to
-indicate that the structure should be manipulated in some manner, such as
-allocating it
-or freeing it. These masks and their relationships to the fields in the
-XkbDescRec are
-shown in Table 3.
-
-.TS
-c s s
-l l l
-l l l.
-Table 3 Mask Bits for XkbDescRec
-_
-Mask Bit XkbDescRec Field Value
-_
-XkbControlsMask ctrls (1L<<0)
-XkbServerMapMask server (1L<<1)
-XkbIClientMapMask map (1L<<2)
-XkbIndicatorMapMask indicators (1L<<3)
-XkbNamesMask names (1L<<4)
-XkbCompatMapMask compat (1L<<5)
-XkbGeometryMask geom (1L<<6)
-XkbAllComponentsMask All Fields (0x7f)
-.TE
-.SH DIAGNOSTICS
-.TP 15
-.B BadMatch
-A compatible version of Xkb was not available in the server or an argument has
-correct type and range, but is otherwise invalid
-.SH "SEE ALSO"
-.BR XkbListComponents (__libmansuffix__)
-
-
+'\" t
+.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the "Software"),
+.\" to deal in the Software without restriction, including without limitation
+.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
+.\" and/or sell copies of the Software, and to permit persons to whom the
+.\" Software is furnished to do so, subject to the following conditions:
+.\"
+.\" The above copyright notice and this permission notice (including the next
+.\" paragraph) shall be included in all copies or substantial portions of the
+.\" Software.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+.\" DEALINGS IN THE SOFTWARE.
+.\"
+.TH XkbGetKeyboardByName __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbGetKeyboardByName \- Build a new keyboard description from a set of named
+components, and to optionally have the server use the resulting description to
+replace an active one
+.SH SYNOPSIS
+.HP
+.B XkbDescPtr XkbGetKeyboardByName
+.BI "(\^Display *" "dpy" "\^,"
+.BI "unsigned int " "device_spec" "\^,"
+.BI "XkbComponentNamesPtr " "names" "\^,"
+.BI "unsigned int " "want" "\^,"
+.BI "unsigned int " "need" "\^,"
+.BI "Bool " "load" "\^);"
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- dpy
+connection to X server
+.TP
+.I \- device_spec
+device ID, or XkbUseCoreKbd
+.TP
+.I \- names
+names of components to fetch
+.TP
+.I \- want
+desired structures in returned record
+.TP
+.I \- need
+mandatory structures in returned record
+.TP
+.I \- load
+True => load into
+.I device_spec
+.SH DESCRIPTION
+.LP
+A client may request that the server fetch one or more components from its
+database and use those components to build a new server keyboard description.
+The new keyboard description may be built from scratch, or it may be built
+starting with the current keyboard description for a particular device. Once the
+keyboard description is built, all or part of it may be returned to the client.
+The parts returned to the client need not include all of the parts used to build
+the description. At the time it requests the server to build a new keyboard
+description, a client may also request that the server use the new description
+internally to replace the current keyboard description for a specific device, in
+which case the behavior of the device changes accordingly.
+
+To build a new keyboard description from a set of named components, and to
+optionally have the server use the resulting description to replace an active
+one, use
+.I XkbGetKeyboardByName.
+
+.I names
+contains a set of expressions describing the keyboard components the
+server should use to build the new keyboard description.
+.I want
+and
+.I need
+are bit fields describing the parts of the resulting keyboard description that
+should be present in the returned XkbDescRec.
+
+The individual fields in
+.I names
+are
+.I component expressions
+composed of keyboard component names (no wildcarding as may be used in
+.I XkbListComponents),
+the special component name symbol `%', and the special operator characters `+'
+and `|'. A component expression is parsed left to right, as follows:
+
+.IP \(bu 5
+The special component name "computed" may be used in keycodes component
+expressions and refers to a component consisting of a set of keycodes computed
+automatically by the server as needed.
+.IP \(bu 5
+The special component name "canonical" may be used in types component
+expressions and refers to a partial component defining the four standard key
+types: ALPHABETIC, ONE_LEVEL, TWO_LEVEL, and KEYPAD.
+.IP \(bu 5
+The special component name `%' refers to the keyboard description for the device
+specified in device_spec or the keymap names component. If a keymap names
+component is specified that does not begin with `+' or `|' and does not contain
+`%', then `%' refers to the description generated by the keymap names component.
+Otherwise, it refers to the keyboard description for device_spec.
+.IP \(bu 5
+The `+' operator specifies that the following component should override the
+currently assembled description; any definitions that are present in both
+components are taken from the second.
+.IP \(bu 5
+The `|' operator specifies that the next specified component should augment the
+currently assembled description; any definitions that are present in both
+components are taken from the first.
+.IP \(bu 5
+If the component expression begins with an operator, a leading `%' is implied.
+.IP \(bu 5
+If any unknown or illegal characters appear anywhere in the expression, the
+entire expression is invalid and is ignored.
+
+For example, if
+.I names->symbols
+contained the expression "+de", it specifies that
+the default member of the "de" class of symbols should be applied to the current
+keyboard mapping, overriding any existing definitions (it could also be written
+"+de(default)").
+
+Here is a slightly more involved example: the expression
+"acme(ascii)+de(basic)|iso9995-3" constructs a German (de) mapping for the ASCII
+keyboard supplied by the "acme" vendor. The new definition begins with the
+symbols for the ASCII keyboard for Acme
+.I (acme(ascii)),
+overrides them with definitions for the basic German keyboard
+.I (de(basic)),
+and then applies the definitions from the default iso9995-3 keyboard
+.I (iso9995-3)
+to any undefined keys or groups of keys (part three of the iso9995 standard
+defines a common set of bindings for the secondary group, but allows national
+layouts to override those definitions where necessary).
+
+.B NOTE
+The interpretation of the above expression components (acme, ascii, de, basic,
+iso9995-3) is not defined by Xkb; only the operations and their ordering are.
+
+Note that the presence of a keymap
+.I names
+component that does not contain `%' (either explicit or implied by virtue of an
+expression starting with an operator) indicates a description that is
+independent of the keyboard description for the device specified in
+.I device_spec.
+The same is true of requests in which the keymap names component is empty and
+all five other names components contain expressions void of references to `%'.
+Requests of this form allow you to deal with keyboard definitions independent of
+any actual device.
+
+The server parses all non-NULL fields in
+.I names
+and uses them to build a keyboard description. However, before parsing the
+expressions in
+.I names,
+the server ORs the bits in
+.I want
+and
+.I need
+together and examines the result in relationship to the expressions in
+.I names.
+Table 1 identifies the components that are required for each of the possible
+bits in
+.I want
+or
+.I need.
+If a required component has not been specified in the
+.I names structure (the corresponding field is NULL), the server substitutes the
+expression "%", resulting in the component values being taken from
+.I device_spec.
+In addition, if
+.I load
+is True, the server modifies
+.I names
+if necessary (again using a "%" entry) to ensure all of the following fields are
+non-NULL:
+.I types, keycodes, symbols,
+and
+.I compat.
+.bp
+.TS
+c s s
+l l l.
+Table 1 Want and Need Mask Bits and Required Names Components
+_
+want or need mask bit Required names Components value
+_
+XkbGBN_TypesMask Types (1L<<0)
+XkbGBN_CompatMapMask Compat (1L<<1)
+XkbGBN_ClientSymbolsMask Types + Symbols + Keycodes (1L<<2)
+XkbGBN_ServerSymbolsMask Types + Symbols + Keycodes (1L<<3)
+XkbGBN_SymbolsMask Symbols (1L<<1)
+XkbGBN_IndicatorMapMask Compat (1L<<4)
+XkbGBN_KeyNamesMask Keycodes (1L<<5)
+XkbGBN_GeometryMask Geometry (1L<<6)
+XkbGBN_OtherNamesMask Types + Symbols + Keycodes + Compat + Geometry (1L<<7)
+XkbGBN_AllComponentsMask (0xff)
+.TE
+
+.I need
+specifies a set of keyboard components that the server must be able to
+resolve in order for
+.I XkbGetKeyboardByName
+to succeed; if any of the components specified in
+.I need
+cannot be successfully resolved,
+.I XkbGetKeyboardByName
+fails.
+
+.I want
+specifies a set of keyboard components that the server should attempt to
+resolve, but that are not mandatory. If the server is unable to resolve any of
+these components,
+.I XkbGetKeyboardByName
+still succeeds. Bits specified in
+.I want
+that are also specified in
+.I need
+have no effect in the context of
+.I want.
+
+If
+.I load
+is True, the server updates its keyboard description for
+.I device_spec
+to match the result of the keyboard description just built. If load is False,
+the
+server's description for device
+.I device_spec
+is not updated. In all cases, the parts specified by
+.I want
+and
+.I need
+from the just-built keyboard description are returned.
+
+The
+.I names
+structure in an XkbDescRec keyboard description record contains one field for
+each of the five component types used to build a keyboard description. When a
+keyboard description is built from a set of database components, the
+corresponding fields in this
+.I names
+structure are set to match the expressions used to build the component.
+
+Building a New Keyboard Description from the Server Database
+
+The information returned to the client in the XkbDescRec is essentially the
+result of a series of calls to extract information from a fictitious device
+whose description matches the one just built. The calls corresponding to each of
+the mask bits are summarized in Table 2, together with the XkbDescRec
+components that are filled in.
+
+.TS
+c s s
+l l l.
+Table 2 XkbDescRec Components Returned for Values of Want & Needs
+_
+Request (want+need) Fills in Xkb components Equivalent Function Call
+_
+XkbGBN_TypesMask map.types XkbGetUpdatedMap(dpy, XkbTypesMask, Xkb)
+XkbGBN_ServerSymbolsMask server XkbGetUpdatedMap(dpy,
+XkbAllClientInfoMask, Xkb)
+XkbGBN_ClientSymbolsMask map, including map.types
+XkbGetUpdatedMap(dpy, XkbAllServerInfoMask, Xkb)
+XkbGBN_IndicatorMaps indicators XkbGetIndicatorMap(dpy,
+XkbAllIndicators, Xkb)
+XkbGBN_CompatMapMask compat XkbGetCompatMap(dpy, XkbAllCompatMask, Xkb)
+XkbGBN_GeometryMask geom XkbGetGeometry(dpy, Xkb)
+XkbGBN_KeyNamesMask names.keys XkbGetNames(dpy, XkbKeyNamesMask |
+ names.key_aliases XkbKeyAliasesMask, Xkb)
+XkbGBN_OtherNamesMask names.keycodes XkbGetNames(dpy, XkbAllNamesMask &
+ names.geometry ~(XkbKeyNamesMask | XkbKeyAliasesMask),
+ names.symbols Xkb)
+ names.types
+ map.types[*].lvl_names[*]
+ names.compat
+ names.vmods
+ names.indicators
+ names.groups
+ names.radio_groups
+ names.phys_symbols
+.TE
+
+There is no way to determine which components specified in
+.I want
+(but not in
+.I need)
+were actually fetched, other than breaking the call into successive calls to
+.I XkbGetKeyboardByName
+and specifying individual components.
+
+.I XkbGetKeyboardByName
+always sets
+.I min_key_code
+and
+.I max_key_code
+in the returned XkbDescRec structure.
+
+.I XkbGetKeyboardByName
+is synchronous; it sends the request to the server to build a new keyboard
+description and waits for the reply. If successful, the return value is
+non-NULL.
+.I XkbGetKeyboardByName
+generates a BadMatch protocol error if errors are encountered when building the
+keyboard description.
+.SH STRUCTURES
+.LP
+The complete description of an Xkb keyboard is given by an XkbDescRec. The
+component
+structures in the XkbDescRec represent the major Xkb components outlined in
+Figure 1.1.
+
+.nf
+typedef struct {
+ struct _XDisplay * display; /\(** connection to X server */
+ unsigned short flags; /\(** private to Xkb, do not modify */
+ unsigned short device_spec; /\(** device of interest */
+ KeyCode min_key_code; /\(** minimum keycode for device */
+ KeyCode max_key_code; /\(** maximum keycode for device */
+ XkbControlsPtr ctrls; /\(** controls */
+ XkbServerMapPtr server; /\(** server keymap */
+ XkbClientMapPtr map; /\(** client keymap */
+ XkbIndicatorPtr indicators; /\(** indicator map */
+ XkbNamesPtr names; /\(** names for all components */
+ XkbCompatMapPtr compat; /\(** compatibility map */
+ XkbGeometryPtr geom; /\(** physical geometry of keyboard */
+} XkbDescRec, *XkbDescPtr;
+
+.fi
+The
+.I display
+field points to an X display structure. The
+.I flags field is private to the library: modifying
+.I flags
+may yield unpredictable results. The
+.I device_spec
+field specifies the device identifier of the keyboard input device, or
+XkbUseCoreKeyboard, which specifies the core keyboard device. The
+.I min_key_code
+and
+.I max_key_code
+fields specify the least and greatest keycode that can be returned by the
+keyboard.
+
+Each structure component has a corresponding mask bit that is used in function
+calls to
+indicate that the structure should be manipulated in some manner, such as
+allocating it
+or freeing it. These masks and their relationships to the fields in the
+XkbDescRec are
+shown in Table 3.
+
+.TS
+c s s
+l l l
+l l l.
+Table 3 Mask Bits for XkbDescRec
+_
+Mask Bit XkbDescRec Field Value
+_
+XkbControlsMask ctrls (1L<<0)
+XkbServerMapMask server (1L<<1)
+XkbIClientMapMask map (1L<<2)
+XkbIndicatorMapMask indicators (1L<<3)
+XkbNamesMask names (1L<<4)
+XkbCompatMapMask compat (1L<<5)
+XkbGeometryMask geom (1L<<6)
+XkbAllComponentsMask All Fields (0x7f)
+.TE
+.SH DIAGNOSTICS
+.TP 15
+.B BadMatch
+A compatible version of Xkb was not available in the server or an argument has
+correct type and range, but is otherwise invalid
+.SH "SEE ALSO"
+.BR XkbListComponents (__libmansuffix__)
+
+
diff --git a/libX11/man/xkb/XkbGetMap.man b/libX11/man/xkb/XkbGetMap.man
index a5b82cba0..b51704c74 100644
--- a/libX11/man/xkb/XkbGetMap.man
+++ b/libX11/man/xkb/XkbGetMap.man
@@ -1,321 +1,321 @@
-'\" t
-.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
-.\"
-.\" Permission is hereby granted, free of charge, to any person obtaining a
-.\" copy of this software and associated documentation files (the "Software"),
-.\" to deal in the Software without restriction, including without limitation
-.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
-.\" and/or sell copies of the Software, and to permit persons to whom the
-.\" Software is furnished to do so, subject to the following conditions:
-.\"
-.\" The above copyright notice and this permission notice (including the next
-.\" paragraph) shall be included in all copies or substantial portions of the
-.\" Software.
-.\"
-.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-.\" DEALINGS IN THE SOFTWARE.
-.\"
-.TH XkbGetMap __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
-.SH NAME
-XkbGetMap \- Allocate an XkbDescRec structure and populate it with the server's
-keyboard
-client map and server map
-.SH SYNOPSIS
-.HP
-.B XkbDescPtr XkbGetMap
-.BI "(\^Display *" "display" "\^,"
-.BI "unsigned int " "which" "\^,"
-.BI "unsigned int " "device_spec" "\^);"
-.if n .ti +5n
-.if t .ti +.5i
-.SH ARGUMENTS
-.TP
-.I \- display
-connection to X server
-.TP
-.I \- which
-mask selecting subcomponents to populate
-.TP
-.I \- device_spec
-device_id, or XkbUseCoreKbd
-.SH DESCRIPTION
-.LP
-Xkb provides two functions to obtain the keyboard mapping components from the
-server. The
-first function,
-.I XkbGetMap,
-allocates an XkbDescRec structure, retrieves mapping components from the server,
-and
-stores them in the XkbDescRec structure it just allocated. The second function,
-.I XkbGetUpdatedMap,
-retrieves mapping components from the server and stores them in an XkbDescRec
-structure
-that has previously been allocated.
-
-To allocate an XkbDescRec structure and populate it with the server's keyboard
-client map
-and server map, use
-.I XkbGetMap. XkbGetMap
-is similar to
-.I XkbGetKeyboard,
-but is used only for obtaining the address of an XkbDescRec structure that is
-populated
-with keyboard mapping components. It allows finer control over which
-substructures of the
-keyboard mapping components are to be populated.
-.I XkbGetKeyboard
-always returns fully populated components, while
-.I XkbGetMap
-can be instructed to return a partially populated component.
-
-The
-.I which mask is a bitwise inclusive OR of the masks defined in Table 14.1. Only
-those
-portions of the keyboard server map and the keyboard client maps that are
-specified in
-.I which
-are allocated and populated.
-
-In addition to allocating and obtaining the server map and the client map,
-.I XkbGetMap
-also sets the
-.I device_spec,
-the
-.I min_key_code,
-and
-.I max_key_code
-fields of the keyboard description.
-
-.I XkbGetMap
-is synchronous; it queries the server for the desired information, waits for a
-reply, and
-then returns. If successful,
-.I XkbGetMap
-returns a pointer to the XkbDescRec structure it allocated. If unsuccessful,
-.I XkbGetMap
-returns NULL. When unsuccessful, one of the following protocol errors is also
-generated:
-BadAlloc (unable to allocate the XkbDescRec structure), BadValue (some mask bits
-in
-.I which
-are undefined), or BadImplementation (a compatible version of the Xkb extension
-is not
-available in the server). To free the returned data, use
-.I XkbFreeClientMap.
-
-Xkb also provides convenience functions to get partial component definitions
-from the
-server. These functions are specified in the "convenience functions" column in
-Table
-1. Refer to the sections listed in the table for more information on these
-functions.
-
-.TS
-c s s s s
-c s s s s
-l l l l l
-l l l l l
-lw(3i) l l lw(1i) lw(3i).
-Table 1 Xkb Mapping Component Masks
-and Convenience Functions
-_
-Mask Value Map Fields Convenience
- Functions
-_
-T{
-XkbKeyTypesMask
-T} (1<<0) client T{
-types
-.br
-size_types
-.br
-num_types
-T} T{
-XkbGetKeyTypes
-.br
-XkbResizeKeyType
-.br
-XkbCopyKeyType
-.br
-XkbCopyKeyTypes
-T}
-T{
-XkbKeySymsMask
-T} (1<<1) client T{
-syms
-.br
-size_syms
-.br
-num_syms
-.br
-key_sym_map
-T} T{
-XkbGetKeySyms
-.br
-XkbResizeKeySyms
-.br
-XkbChangeTypesOfKey
-T}
-T{
-XkbModifierMapMask
-T} (1<<2) client modmap T{
-XkbGetKeyModifierMap
-T}
-T{
-XkbExplicitComponentsMask
-T} (1<<3) server T{
-explicit
-T} T{
-XkbGetKeyExplicitComponents
-T}
-T{
-XkbKeyActionsMask
-T} (1<<4) server T{
-key_acts
-.br
-acts
-.br
-num_acts
-.br
-size_acts
-T} T{
-XkbGetKeyActions
-.br
-XkbResizeKeyActions
-T}
-T{
-XkbKeyBehaviorsMask
-T} (1<<5) server T{
-behaviors
-T} T{
-XkbGetKeyBehaviors
-T}
-T{
-XkbVirtualModsMask
-T} (1<<6) server T{
-vmods
-T} T{
-XkbGetVirtualMods
-T}
-T{
-XkbVirtualModMapMask
-T} (1<<7) server T{
-vmodmap
-T} T{
-XkbGetVirtualModMap
-T}
-.TE
-
-.nf
-.bp
-Xkb defines combinations of these masks for convenience:
-
- #define XkbResizableInfoMask (XkbKeyTypesMask)
- #define XkbAllClientInfoMask (XkbKeyTypesMask | XkbKeySymsMask |
- XkbModifierMapMask)
- #define XkbAllServerInfoMask (XkbExplicitComponentsMask |
- XkbKeyActionsMask |
- XkbKeyBehaviorsMask |
- XkbVirtualModsMask |
- XkbVirtualModMapMask)
- #define XkbAllMapComponentsMask XkbAllClientInfoMask |
- XkbAllServerInfoMask)
-
-.fi
-Key types, symbol maps, and actions are all interrelated: changes in one require
-changes
-in the others. The convenience functions make it easier to edit these components
-and
-handle the interdependencies.
-
-.SH STRUCTURES
-.LP
-The complete description of an Xkb keyboard is given by an XkbDescRec. The
-component
-structures in the XkbDescRec represent the major Xkb components.
-
-.nf
-typedef struct {
- struct _XDisplay * display; /\(** connection to X server */
- unsigned short flags; /\(** private to Xkb, do not modify */
- unsigned short device_spec; /\(** device of interest */
- KeyCode min_key_code; /\(** minimum keycode for device */
- KeyCode max_key_code; /\(** maximum keycode for device */
- XkbControlsPtr ctrls; /\(** controls */
- XkbServerMapPtr server; /\(** server keymap */
- XkbClientMapPtr map; /\(** client keymap */
- XkbIndicatorPtr indicators; /\(** indicator map */
- XkbNamesPtr names; /\(** names for all components */
- XkbCompatMapPtr compat; /\(** compatibility map */
- XkbGeometryPtr geom; /\(** physical geometry of keyboard */
-} XkbDescRec, *XkbDescPtr;
-
-.fi
-The
-.I display
-field points to an X display structure. The
-.I flags field is private to the library: modifying
-.I flags
-may yield unpredictable results. The
-.I device_spec
-field specifies the device identifier of the keyboard input device, or
-XkbUseCoreKeyboard, which specifies the core keyboard device. The
-.I min_key_code
-and
-.I max_key_code
-fields specify the least and greatest keycode that can be returned by the
-keyboard.
-
-Each structure component has a corresponding mask bit that is used in function
-calls to
-indicate that the structure should be manipulated in some manner, such as
-allocating it
-or freeing it. These masks and their relationships to the fields in the
-XkbDescRec are
-shown in Table 2.
-
-.TS
-c s s
-l l l
-l l l.
-Table 2 Mask Bits for XkbDescRec
-_
-Mask Bit XkbDescRec Field Value
-_
-XkbControlsMask ctrls (1L<<0)
-XkbServerMapMask server (1L<<1)
-XkbIClientMapMask map (1L<<2)
-XkbIndicatorMapMask indicators (1L<<3)
-XkbNamesMask names (1L<<4)
-XkbCompatMapMask compat (1L<<5)
-XkbGeometryMask geom (1L<<6)
-XkbAllComponentsMask All Fields (0x7f)
-.TE
-.SH "SEE ALSO"
-.BR XkbChangeTypesOfKey (__libmansuffix__),
-.BR XkbCopyKeyType (__libmansuffix__),
-.BR XkbCopyKeyTypes (__libmansuffix__),
-.BR XkbFreeClientMap (__libmansuffix__),
-.BR XkbGetKeyActions (__libmansuffix__),
-.BR XkbGetKeyBehaviors (__libmansuffix__),
-.BR XkbGetKeyboard (__libmansuffix__),
-.BR XkbGetKeyExplicitComponents (__libmansuffix__),
-.BR XkbGetKeyModifierMap (__libmansuffix__),
-.BR XkbGetKeySyms (__libmansuffix__),
-.BR XkbGetKeyTypes (__libmansuffix__),
-.BR XkbGetUpdatedMap (__libmansuffix__),
-.BR XkbGetVirtualModMap (__libmansuffix__),
-.BR XkbGetVirtualMods (__libmansuffix__),
-.BR XkbResizeKeyActions (__libmansuffix__),
-.BR XkbResizeKeySyms (__libmansuffix__),
-.BR XkbResizeKeyType (__libmansuffix__)
-
-
-
-
-
+'\" t
+.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the "Software"),
+.\" to deal in the Software without restriction, including without limitation
+.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
+.\" and/or sell copies of the Software, and to permit persons to whom the
+.\" Software is furnished to do so, subject to the following conditions:
+.\"
+.\" The above copyright notice and this permission notice (including the next
+.\" paragraph) shall be included in all copies or substantial portions of the
+.\" Software.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+.\" DEALINGS IN THE SOFTWARE.
+.\"
+.TH XkbGetMap __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbGetMap \- Allocate an XkbDescRec structure and populate it with the server's
+keyboard
+client map and server map
+.SH SYNOPSIS
+.HP
+.B XkbDescPtr XkbGetMap
+.BI "(\^Display *" "display" "\^,"
+.BI "unsigned int " "which" "\^,"
+.BI "unsigned int " "device_spec" "\^);"
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- display
+connection to X server
+.TP
+.I \- which
+mask selecting subcomponents to populate
+.TP
+.I \- device_spec
+device_id, or XkbUseCoreKbd
+.SH DESCRIPTION
+.LP
+Xkb provides two functions to obtain the keyboard mapping components from the
+server. The
+first function,
+.I XkbGetMap,
+allocates an XkbDescRec structure, retrieves mapping components from the server,
+and
+stores them in the XkbDescRec structure it just allocated. The second function,
+.I XkbGetUpdatedMap,
+retrieves mapping components from the server and stores them in an XkbDescRec
+structure
+that has previously been allocated.
+
+To allocate an XkbDescRec structure and populate it with the server's keyboard
+client map
+and server map, use
+.I XkbGetMap. XkbGetMap
+is similar to
+.I XkbGetKeyboard,
+but is used only for obtaining the address of an XkbDescRec structure that is
+populated
+with keyboard mapping components. It allows finer control over which
+substructures of the
+keyboard mapping components are to be populated.
+.I XkbGetKeyboard
+always returns fully populated components, while
+.I XkbGetMap
+can be instructed to return a partially populated component.
+
+The
+.I which mask is a bitwise inclusive OR of the masks defined in Table 14.1. Only
+those
+portions of the keyboard server map and the keyboard client maps that are
+specified in
+.I which
+are allocated and populated.
+
+In addition to allocating and obtaining the server map and the client map,
+.I XkbGetMap
+also sets the
+.I device_spec,
+the
+.I min_key_code,
+and
+.I max_key_code
+fields of the keyboard description.
+
+.I XkbGetMap
+is synchronous; it queries the server for the desired information, waits for a
+reply, and
+then returns. If successful,
+.I XkbGetMap
+returns a pointer to the XkbDescRec structure it allocated. If unsuccessful,
+.I XkbGetMap
+returns NULL. When unsuccessful, one of the following protocol errors is also
+generated:
+BadAlloc (unable to allocate the XkbDescRec structure), BadValue (some mask bits
+in
+.I which
+are undefined), or BadImplementation (a compatible version of the Xkb extension
+is not
+available in the server). To free the returned data, use
+.I XkbFreeClientMap.
+
+Xkb also provides convenience functions to get partial component definitions
+from the
+server. These functions are specified in the "convenience functions" column in
+Table
+1. Refer to the sections listed in the table for more information on these
+functions.
+
+.TS
+c s s s s
+c s s s s
+l l l l l
+l l l l l
+lw(3i) l l lw(1i) lw(3i).
+Table 1 Xkb Mapping Component Masks
+and Convenience Functions
+_
+Mask Value Map Fields Convenience
+ Functions
+_
+T{
+XkbKeyTypesMask
+T} (1<<0) client T{
+types
+.br
+size_types
+.br
+num_types
+T} T{
+XkbGetKeyTypes
+.br
+XkbResizeKeyType
+.br
+XkbCopyKeyType
+.br
+XkbCopyKeyTypes
+T}
+T{
+XkbKeySymsMask
+T} (1<<1) client T{
+syms
+.br
+size_syms
+.br
+num_syms
+.br
+key_sym_map
+T} T{
+XkbGetKeySyms
+.br
+XkbResizeKeySyms
+.br
+XkbChangeTypesOfKey
+T}
+T{
+XkbModifierMapMask
+T} (1<<2) client modmap T{
+XkbGetKeyModifierMap
+T}
+T{
+XkbExplicitComponentsMask
+T} (1<<3) server T{
+explicit
+T} T{
+XkbGetKeyExplicitComponents
+T}
+T{
+XkbKeyActionsMask
+T} (1<<4) server T{
+key_acts
+.br
+acts
+.br
+num_acts
+.br
+size_acts
+T} T{
+XkbGetKeyActions
+.br
+XkbResizeKeyActions
+T}
+T{
+XkbKeyBehaviorsMask
+T} (1<<5) server T{
+behaviors
+T} T{
+XkbGetKeyBehaviors
+T}
+T{
+XkbVirtualModsMask
+T} (1<<6) server T{
+vmods
+T} T{
+XkbGetVirtualMods
+T}
+T{
+XkbVirtualModMapMask
+T} (1<<7) server T{
+vmodmap
+T} T{
+XkbGetVirtualModMap
+T}
+.TE
+
+.nf
+.bp
+Xkb defines combinations of these masks for convenience:
+
+ #define XkbResizableInfoMask (XkbKeyTypesMask)
+ #define XkbAllClientInfoMask (XkbKeyTypesMask | XkbKeySymsMask |
+ XkbModifierMapMask)
+ #define XkbAllServerInfoMask (XkbExplicitComponentsMask |
+ XkbKeyActionsMask |
+ XkbKeyBehaviorsMask |
+ XkbVirtualModsMask |
+ XkbVirtualModMapMask)
+ #define XkbAllMapComponentsMask XkbAllClientInfoMask |
+ XkbAllServerInfoMask)
+
+.fi
+Key types, symbol maps, and actions are all interrelated: changes in one require
+changes
+in the others. The convenience functions make it easier to edit these components
+and
+handle the interdependencies.
+
+.SH STRUCTURES
+.LP
+The complete description of an Xkb keyboard is given by an XkbDescRec. The
+component
+structures in the XkbDescRec represent the major Xkb components.
+
+.nf
+typedef struct {
+ struct _XDisplay * display; /\(** connection to X server */
+ unsigned short flags; /\(** private to Xkb, do not modify */
+ unsigned short device_spec; /\(** device of interest */
+ KeyCode min_key_code; /\(** minimum keycode for device */
+ KeyCode max_key_code; /\(** maximum keycode for device */
+ XkbControlsPtr ctrls; /\(** controls */
+ XkbServerMapPtr server; /\(** server keymap */
+ XkbClientMapPtr map; /\(** client keymap */
+ XkbIndicatorPtr indicators; /\(** indicator map */
+ XkbNamesPtr names; /\(** names for all components */
+ XkbCompatMapPtr compat; /\(** compatibility map */
+ XkbGeometryPtr geom; /\(** physical geometry of keyboard */
+} XkbDescRec, *XkbDescPtr;
+
+.fi
+The
+.I display
+field points to an X display structure. The
+.I flags field is private to the library: modifying
+.I flags
+may yield unpredictable results. The
+.I device_spec
+field specifies the device identifier of the keyboard input device, or
+XkbUseCoreKeyboard, which specifies the core keyboard device. The
+.I min_key_code
+and
+.I max_key_code
+fields specify the least and greatest keycode that can be returned by the
+keyboard.
+
+Each structure component has a corresponding mask bit that is used in function
+calls to
+indicate that the structure should be manipulated in some manner, such as
+allocating it
+or freeing it. These masks and their relationships to the fields in the
+XkbDescRec are
+shown in Table 2.
+
+.TS
+c s s
+l l l
+l l l.
+Table 2 Mask Bits for XkbDescRec
+_
+Mask Bit XkbDescRec Field Value
+_
+XkbControlsMask ctrls (1L<<0)
+XkbServerMapMask server (1L<<1)
+XkbIClientMapMask map (1L<<2)
+XkbIndicatorMapMask indicators (1L<<3)
+XkbNamesMask names (1L<<4)
+XkbCompatMapMask compat (1L<<5)
+XkbGeometryMask geom (1L<<6)
+XkbAllComponentsMask All Fields (0x7f)
+.TE
+.SH "SEE ALSO"
+.BR XkbChangeTypesOfKey (__libmansuffix__),
+.BR XkbCopyKeyType (__libmansuffix__),
+.BR XkbCopyKeyTypes (__libmansuffix__),
+.BR XkbFreeClientMap (__libmansuffix__),
+.BR XkbGetKeyActions (__libmansuffix__),
+.BR XkbGetKeyBehaviors (__libmansuffix__),
+.BR XkbGetKeyboard (__libmansuffix__),
+.BR XkbGetKeyExplicitComponents (__libmansuffix__),
+.BR XkbGetKeyModifierMap (__libmansuffix__),
+.BR XkbGetKeySyms (__libmansuffix__),
+.BR XkbGetKeyTypes (__libmansuffix__),
+.BR XkbGetUpdatedMap (__libmansuffix__),
+.BR XkbGetVirtualModMap (__libmansuffix__),
+.BR XkbGetVirtualMods (__libmansuffix__),
+.BR XkbResizeKeyActions (__libmansuffix__),
+.BR XkbResizeKeySyms (__libmansuffix__),
+.BR XkbResizeKeyType (__libmansuffix__)
+
+
+
+
+
diff --git a/libX11/man/xkb/XkbGetNameChanges.man b/libX11/man/xkb/XkbGetNameChanges.man
index 2c40a745a..359c7c963 100644
--- a/libX11/man/xkb/XkbGetNameChanges.man
+++ b/libX11/man/xkb/XkbGetNameChanges.man
@@ -1,70 +1,70 @@
-'\" t
-.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
-.\"
-.\" Permission is hereby granted, free of charge, to any person obtaining a
-.\" copy of this software and associated documentation files (the "Software"),
-.\" to deal in the Software without restriction, including without limitation
-.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
-.\" and/or sell copies of the Software, and to permit persons to whom the
-.\" Software is furnished to do so, subject to the following conditions:
-.\"
-.\" The above copyright notice and this permission notice (including the next
-.\" paragraph) shall be included in all copies or substantial portions of the
-.\" Software.
-.\"
-.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-.\" DEALINGS IN THE SOFTWARE.
-.\"
-.TH XkbGetNameChanges __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
-.SH NAME
-XkbGetNameChanges \- Update the local copy of the keyboard description with the
-actual values of the results of one or more calls to
-.I XkbNoteNameChanges
-.SH SYNOPSIS
-.HP
-.B Status XkbGetNameChanges
-.BI "(\^Display *" "dpy" "\^,"
-.BI "XkbDescPtr " "xkb" "\^,"
-.BI "XkbNameChangesPtr " "changes" "\^);"
-.if n .ti +5n
-.if t .ti +.5i
-.SH ARGUMENTS
-.TP
-.I \- dpy
-connection to the X server
-.TP
-.I \- xkb
-keyboard description to which names are copied
-.TP
-.I \- changes
-names components to be obtained from the server
-.SH DESCRIPTION
-.LP
-.I XkbGetNameChanges
-examines the
-.I changes
-parameter, retrieves the necessary information from the server, and places the
-results into the
-.I xkb
-keyboard description.
-
-.I XkbGetNamesChanges
-can generate BadAlloc, BadImplementation, and BadMatch errors.
-.SH DIAGNOSTICS
-.TP 15
-.B BadAlloc
-Unable to allocate storage
-.TP 15
-.B BadImplementation
-Invalid reply from server
-.TP 15
-.B BadMatch
-A compatible version of Xkb was not available in the server or an argument has
-correct type and range, but is otherwise invalid
-.SH "SEE ALSO"
-.BR XkbNoteNameChanges (__libmansuffix__)
+'\" t
+.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the "Software"),
+.\" to deal in the Software without restriction, including without limitation
+.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
+.\" and/or sell copies of the Software, and to permit persons to whom the
+.\" Software is furnished to do so, subject to the following conditions:
+.\"
+.\" The above copyright notice and this permission notice (including the next
+.\" paragraph) shall be included in all copies or substantial portions of the
+.\" Software.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+.\" DEALINGS IN THE SOFTWARE.
+.\"
+.TH XkbGetNameChanges __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbGetNameChanges \- Update the local copy of the keyboard description with the
+actual values of the results of one or more calls to
+.I XkbNoteNameChanges
+.SH SYNOPSIS
+.HP
+.B Status XkbGetNameChanges
+.BI "(\^Display *" "dpy" "\^,"
+.BI "XkbDescPtr " "xkb" "\^,"
+.BI "XkbNameChangesPtr " "changes" "\^);"
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- dpy
+connection to the X server
+.TP
+.I \- xkb
+keyboard description to which names are copied
+.TP
+.I \- changes
+names components to be obtained from the server
+.SH DESCRIPTION
+.LP
+.I XkbGetNameChanges
+examines the
+.I changes
+parameter, retrieves the necessary information from the server, and places the
+results into the
+.I xkb
+keyboard description.
+
+.I XkbGetNamesChanges
+can generate BadAlloc, BadImplementation, and BadMatch errors.
+.SH DIAGNOSTICS
+.TP 15
+.B BadAlloc
+Unable to allocate storage
+.TP 15
+.B BadImplementation
+Invalid reply from server
+.TP 15
+.B BadMatch
+A compatible version of Xkb was not available in the server or an argument has
+correct type and range, but is otherwise invalid
+.SH "SEE ALSO"
+.BR XkbNoteNameChanges (__libmansuffix__)
diff --git a/libX11/man/xkb/XkbGetNamedIndicator.man b/libX11/man/xkb/XkbGetNamedIndicator.man
index 7a7802d35..803d656a2 100644
--- a/libX11/man/xkb/XkbGetNamedIndicator.man
+++ b/libX11/man/xkb/XkbGetNamedIndicator.man
@@ -1,116 +1,116 @@
-.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
-.\"
-.\" Permission is hereby granted, free of charge, to any person obtaining a
-.\" copy of this software and associated documentation files (the "Software"),
-.\" to deal in the Software without restriction, including without limitation
-.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
-.\" and/or sell copies of the Software, and to permit persons to whom the
-.\" Software is furnished to do so, subject to the following conditions:
-.\"
-.\" The above copyright notice and this permission notice (including the next
-.\" paragraph) shall be included in all copies or substantial portions of the
-.\" Software.
-.\"
-.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-.\" DEALINGS IN THE SOFTWARE.
-.\"
-.TH XkbGetNamedIndicator __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
-.SH NAME
-XkbGetNamedIndicator \- Look up the indicator map and other information for an
-indicator by name
-.SH SYNOPSIS
-.HP
-.B Bool XkbGetNamedIndicator
-.BI "(\^Display *" "dpy" "\^,"
-.BI "unsigned int " "dev_spec" "\^,"
-.BI "Atom " "name" "\^,"
-.BI "int *" "ndx_rtrn" "\^,"
-.BI "Bool *" "state_rtrn" "\^,"
-.BI "XkbIndicatorMapPtr " "map_rtrn" "\^,"
-.BI "Bool *" "real_rtrn" "\^);"
-.if n .ti +5n
-.if t .ti +.5i
-.SH ARGUMENTS
-.TP
-.I \- dpy
-connection to the X server
-.TP
-.I \- dev_spec
-keyboard device ID, or XkbUseCoreKbd
-.TP
-.I \- name
-name of the indicator to be retrieved
-.TP
-.I \- ndx_rtrn
-backfilled with the index of the retrieved indicator
-.TP
-.I \- state_rtrn
-backfilled with the current state of the retrieved indicator
-.TP
-.I \- map_rtrn
- backfilled with the mapping for the retrieved indicator
-.TP
-.I \- real_rtrn
-backfilled with True if the named indicator is real (physical)
-.SH DESCRIPTION
-.LP
-Xkb also allows applications to refer to indicators by name. Use
-.I XkbGetNames
-to get the indicator names. Using names eliminates the need for hard-coding
-bitmask values for particular keyboards. For example, instead of using
-vendor-specific constants such as WSKBLed_ScrollLock mask on Digital
-workstations or XLED_SCROLL_LOCK on Sun workstations, you can instead use
-.I XkbGetNamedIndicator
-to look up information on the indicator named "Scroll Lock."
-
-If the device specified by
-.I device_spec
-has an indicator named
-.I name, XkbGetNamedIndicator
-returns True and populates the rest of the parameters with information about the
-indicator. Otherwise,
-.I XkbGetNamedIndicator
-returns False.
-
-The
-.I ndx_rtrn
-field returns the zero-based index of the named indicator. This index is the bit
-position to use in any function call that requires a mask of indicator bits, as
-well as the indicator's index into the XkbIndicatorRec array of indicator maps.
-.I state_rtrn
-returns the current state of the named indicator (True = on, False = off).
-.I map_rtrn
-returns the indicator map for the named indicator. In addition, if the indicator
-is mapped to a physical LED, the
-.I real_rtrn
-parameter is set to True.
-
-Each of the "
-.I _rtrn
-" arguments is optional; you can pass NULL for any unneeded "
-.I _rtrn
-" arguments.
-.SH "RETURN VALUES"
-.TP 15
-True
-The
-.I XkbGetNamedIndicator
-function returns True if the device specified by
-.I device_spec
-has an indicator named
-.I name.
-.TP 15
-False
-The
-.I XkbGetNamedIndicator
-function returns False if the device specified by
-.I device_spec
-does not have an indicator named
-.I name.
-.SH "SEE ALSO"
-.BR XkbGetNames (__libmansuffix__)
+.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the "Software"),
+.\" to deal in the Software without restriction, including without limitation
+.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
+.\" and/or sell copies of the Software, and to permit persons to whom the
+.\" Software is furnished to do so, subject to the following conditions:
+.\"
+.\" The above copyright notice and this permission notice (including the next
+.\" paragraph) shall be included in all copies or substantial portions of the
+.\" Software.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+.\" DEALINGS IN THE SOFTWARE.
+.\"
+.TH XkbGetNamedIndicator __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbGetNamedIndicator \- Look up the indicator map and other information for an
+indicator by name
+.SH SYNOPSIS
+.HP
+.B Bool XkbGetNamedIndicator
+.BI "(\^Display *" "dpy" "\^,"
+.BI "unsigned int " "dev_spec" "\^,"
+.BI "Atom " "name" "\^,"
+.BI "int *" "ndx_rtrn" "\^,"
+.BI "Bool *" "state_rtrn" "\^,"
+.BI "XkbIndicatorMapPtr " "map_rtrn" "\^,"
+.BI "Bool *" "real_rtrn" "\^);"
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- dpy
+connection to the X server
+.TP
+.I \- dev_spec
+keyboard device ID, or XkbUseCoreKbd
+.TP
+.I \- name
+name of the indicator to be retrieved
+.TP
+.I \- ndx_rtrn
+backfilled with the index of the retrieved indicator
+.TP
+.I \- state_rtrn
+backfilled with the current state of the retrieved indicator
+.TP
+.I \- map_rtrn
+ backfilled with the mapping for the retrieved indicator
+.TP
+.I \- real_rtrn
+backfilled with True if the named indicator is real (physical)
+.SH DESCRIPTION
+.LP
+Xkb also allows applications to refer to indicators by name. Use
+.I XkbGetNames
+to get the indicator names. Using names eliminates the need for hard-coding
+bitmask values for particular keyboards. For example, instead of using
+vendor-specific constants such as WSKBLed_ScrollLock mask on Digital
+workstations or XLED_SCROLL_LOCK on Sun workstations, you can instead use
+.I XkbGetNamedIndicator
+to look up information on the indicator named "Scroll Lock."
+
+If the device specified by
+.I device_spec
+has an indicator named
+.I name, XkbGetNamedIndicator
+returns True and populates the rest of the parameters with information about the
+indicator. Otherwise,
+.I XkbGetNamedIndicator
+returns False.
+
+The
+.I ndx_rtrn
+field returns the zero-based index of the named indicator. This index is the bit
+position to use in any function call that requires a mask of indicator bits, as
+well as the indicator's index into the XkbIndicatorRec array of indicator maps.
+.I state_rtrn
+returns the current state of the named indicator (True = on, False = off).
+.I map_rtrn
+returns the indicator map for the named indicator. In addition, if the indicator
+is mapped to a physical LED, the
+.I real_rtrn
+parameter is set to True.
+
+Each of the "
+.I _rtrn
+" arguments is optional; you can pass NULL for any unneeded "
+.I _rtrn
+" arguments.
+.SH "RETURN VALUES"
+.TP 15
+True
+The
+.I XkbGetNamedIndicator
+function returns True if the device specified by
+.I device_spec
+has an indicator named
+.I name.
+.TP 15
+False
+The
+.I XkbGetNamedIndicator
+function returns False if the device specified by
+.I device_spec
+does not have an indicator named
+.I name.
+.SH "SEE ALSO"
+.BR XkbGetNames (__libmansuffix__)
diff --git a/libX11/man/xkb/XkbGetNames.man b/libX11/man/xkb/XkbGetNames.man
index f761bb502..9d5ca5e75 100644
--- a/libX11/man/xkb/XkbGetNames.man
+++ b/libX11/man/xkb/XkbGetNames.man
@@ -1,135 +1,135 @@
-'\" t
-.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
-.\"
-.\" Permission is hereby granted, free of charge, to any person obtaining a
-.\" copy of this software and associated documentation files (the "Software"),
-.\" to deal in the Software without restriction, including without limitation
-.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
-.\" and/or sell copies of the Software, and to permit persons to whom the
-.\" Software is furnished to do so, subject to the following conditions:
-.\"
-.\" The above copyright notice and this permission notice (including the next
-.\" paragraph) shall be included in all copies or substantial portions of the
-.\" Software.
-.\"
-.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-.\" DEALINGS IN THE SOFTWARE.
-.\"
-.TH XkbGetNames __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
-.SH NAME
-XkbGetNames \- Obtain symbolic names from the server
-.SH SYNOPSIS
-.HP
-.B Status XkbGetNames
-.BI "(\^Display *" "dpy" "\^,"
-.BI "unsigned int " "which" "\^,"
-.BI "XkbDescPtr " "Xkb" "\^);"
-.if n .ti +5n
-.if t .ti +.5i
-.SH ARGUMENTS
-.TP
-.I \- dpy
-connection to the X server
-.TP
-.I \- which
-mask of names or map components to be updated
-.TP
-.I \- Xkb
-keyboard description to be updated
-.SH DESCRIPTION
-.LP
-.I XkbGetNames
-retrieves symbolic names for the components of the keyboard extension from the X server. The
-.I which
-parameter specifies the name components to be updated in the
-.I xkb
-parameter, and is the bitwise inclusive OR of the valid names mask bits defined in Table 1.
-
-
-.TS
-c s s s
-l l l l.
-Table 1 Symbolic Names Masks
-_
-Mask Bit Value Keyboard Field
- Component
-_
-XkbKeycodesNameMask (1<<0) Xkb->names keycodes
-XkbGeometryNameMask (1<<1) Xkb->names geometry
-XkbSymbolsNameMask (1<<2) Xkb->names symbols
-XkbPhysSymbolsNameMask (1<<3) Xkb->names phys_symbols
-XkbTypesNameMask (1<<4) Xkb->names type
-XkbCompatNameMask (1<<5) Xkb->names compat
-XkbKeyTypeNamesMask (1<<6) Xkb->map type[*].name
-XkbKTLevelNamesMask (1<<7) Xkb->map type[*].lvl_names[*]
-XkbIndicatorNamesMask (1<<8) Xkb->names indicators[*]
-XkbKeyNamesMask (1<<9) Xkb->names keys[*], num_keys
-XkbKeyAliasesMask (1<<10) Xkb->names key_aliases[*], num_key_aliases
-XkbVirtualModNamesMask (1<<11) Xkb->names vmods[*]
-XkbGroupNamesMask (1<<12) Xkb->names groups[*]
-XkbRGNamesMask (1<<13) Xkb->names radio_groups[*], num_rg
-XkbComponentNamesMask (0x3f) Xkb->names keycodes,
- geometry,
- symbols,
- physical symbols,
- types, and
- compatibility map
-XkbAllNamesMask (0x3fff) Xkb->names all name components
-.TE
-
-If the
-.I names
-field of the keyboard description
-.I xkb
-is NULL,
-.I XkbGetNames
-allocates and initializes the
-.I names
-component of the keyboard description before obtaining the values specified by
-.I which.
-If the
-.I names field of
-.I xkb
-is not NULL,
-.I XkbGetNames
-obtains the values specified by
-.I which
-and copies them into the keyboard description
-.I Xkb.
-
-If the
-.I map
-component of the
-.I xkb
-parameter is NULL,
-.I XkbGetNames
-does not retrieve type or shift level names, even if XkbKeyTypeNamesMask or XkbKTLevelNamesMask are set in
-.I which.
-
-.I XkbGetNames
-can return Success, or BadAlloc, BadLength, BadMatch, and BadImplementation errors.
-
-To free symbolic names, use
-.I XkbFreeNames.
-.SH DIAGNOSTICS
-.TP 15
-.B BadAlloc
-Unable to allocate storage
-.TP 15
-.B BadImplementation
-Invalid reply from server
-.TP 15
-.B BadLength
-The length of a request is shorter or longer than that required to minimally contain the arguments
-.TP 15
-.B BadMatch
-A compatible version of Xkb was not available in the server or an argument has correct type and range, but
-is otherwise invalid
-.SH "SEE ALSO"
-.BR XkbFreeNames (__libmansuffix__)
-
+'\" t
+.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the "Software"),
+.\" to deal in the Software without restriction, including without limitation
+.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
+.\" and/or sell copies of the Software, and to permit persons to whom the
+.\" Software is furnished to do so, subject to the following conditions:
+.\"
+.\" The above copyright notice and this permission notice (including the next
+.\" paragraph) shall be included in all copies or substantial portions of the
+.\" Software.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+.\" DEALINGS IN THE SOFTWARE.
+.\"
+.TH XkbGetNames __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbGetNames \- Obtain symbolic names from the server
+.SH SYNOPSIS
+.HP
+.B Status XkbGetNames
+.BI "(\^Display *" "dpy" "\^,"
+.BI "unsigned int " "which" "\^,"
+.BI "XkbDescPtr " "Xkb" "\^);"
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- dpy
+connection to the X server
+.TP
+.I \- which
+mask of names or map components to be updated
+.TP
+.I \- Xkb
+keyboard description to be updated
+.SH DESCRIPTION
+.LP
+.I XkbGetNames
+retrieves symbolic names for the components of the keyboard extension from the X server. The
+.I which
+parameter specifies the name components to be updated in the
+.I xkb
+parameter, and is the bitwise inclusive OR of the valid names mask bits defined in Table 1.
+
+
+.TS
+c s s s
+l l l l.
+Table 1 Symbolic Names Masks
+_
+Mask Bit Value Keyboard Field
+ Component
+_
+XkbKeycodesNameMask (1<<0) Xkb->names keycodes
+XkbGeometryNameMask (1<<1) Xkb->names geometry
+XkbSymbolsNameMask (1<<2) Xkb->names symbols
+XkbPhysSymbolsNameMask (1<<3) Xkb->names phys_symbols
+XkbTypesNameMask (1<<4) Xkb->names type
+XkbCompatNameMask (1<<5) Xkb->names compat
+XkbKeyTypeNamesMask (1<<6) Xkb->map type[*].name
+XkbKTLevelNamesMask (1<<7) Xkb->map type[*].lvl_names[*]
+XkbIndicatorNamesMask (1<<8) Xkb->names indicators[*]
+XkbKeyNamesMask (1<<9) Xkb->names keys[*], num_keys
+XkbKeyAliasesMask (1<<10) Xkb->names key_aliases[*], num_key_aliases
+XkbVirtualModNamesMask (1<<11) Xkb->names vmods[*]
+XkbGroupNamesMask (1<<12) Xkb->names groups[*]
+XkbRGNamesMask (1<<13) Xkb->names radio_groups[*], num_rg
+XkbComponentNamesMask (0x3f) Xkb->names keycodes,
+ geometry,
+ symbols,
+ physical symbols,
+ types, and
+ compatibility map
+XkbAllNamesMask (0x3fff) Xkb->names all name components
+.TE
+
+If the
+.I names
+field of the keyboard description
+.I xkb
+is NULL,
+.I XkbGetNames
+allocates and initializes the
+.I names
+component of the keyboard description before obtaining the values specified by
+.I which.
+If the
+.I names field of
+.I xkb
+is not NULL,
+.I XkbGetNames
+obtains the values specified by
+.I which
+and copies them into the keyboard description
+.I Xkb.
+
+If the
+.I map
+component of the
+.I xkb
+parameter is NULL,
+.I XkbGetNames
+does not retrieve type or shift level names, even if XkbKeyTypeNamesMask or XkbKTLevelNamesMask are set in
+.I which.
+
+.I XkbGetNames
+can return Success, or BadAlloc, BadLength, BadMatch, and BadImplementation errors.
+
+To free symbolic names, use
+.I XkbFreeNames.
+.SH DIAGNOSTICS
+.TP 15
+.B BadAlloc
+Unable to allocate storage
+.TP 15
+.B BadImplementation
+Invalid reply from server
+.TP 15
+.B BadLength
+The length of a request is shorter or longer than that required to minimally contain the arguments
+.TP 15
+.B BadMatch
+A compatible version of Xkb was not available in the server or an argument has correct type and range, but
+is otherwise invalid
+.SH "SEE ALSO"
+.BR XkbFreeNames (__libmansuffix__)
+
diff --git a/libX11/man/xkb/XkbGetSlowKeysDelay.man b/libX11/man/xkb/XkbGetSlowKeysDelay.man
index 78a5b7b7d..5472ad7ca 100644
--- a/libX11/man/xkb/XkbGetSlowKeysDelay.man
+++ b/libX11/man/xkb/XkbGetSlowKeysDelay.man
@@ -1,215 +1,215 @@
-'\" t
-.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
-.\"
-.\" Permission is hereby granted, free of charge, to any person obtaining a
-.\" copy of this software and associated documentation files (the "Software"),
-.\" to deal in the Software without restriction, including without limitation
-.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
-.\" and/or sell copies of the Software, and to permit persons to whom the
-.\" Software is furnished to do so, subject to the following conditions:
-.\"
-.\" The above copyright notice and this permission notice (including the next
-.\" paragraph) shall be included in all copies or substantial portions of the
-.\" Software.
-.\"
-.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-.\" DEALINGS IN THE SOFTWARE.
-.\"
-.TH XkbGetSlowKeysDelay __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
-.SH NAME
-XkbGetSlowKeysDelay \- Gets the SlowKeys acceptance delay for a keyboard device
-.SH SYNOPSIS
-.HP
-.B Bool XkbGetSlowKeysDelay
-.BI "(\^Display *" "display" "\^,"
-.BI "unsigned int " "device_spec" "\^,"
-.BI "unsigned int *" "delay_rtrn" "\^);"
-.if n .ti +5n
-.if t .ti +.5i
-.SH ARGUMENTS
-.TP
-.I \- display
-connection to X server
-.TP
-.I \- device_spec
-device ID, or XkbUseCoreKbd
-.TP
-.I \- delay_rtrn
-backfilled with SlowKeys delay, ms
-.SH DESCRIPTION
-.LP
-Some users may accidentally bump keys while moving a hand or typing stick toward
-the key they want. Usually, the keys that are accidentally bumped are just hit
-for a very short period of time. The SlowKeys control helps filter these
-accidental bumps by telling the server to wait a specified period, called the
-.I SlowKeys acceptance delay,
-before delivering key events. If the key is released before this period elapses,
-no key events are generated. Users can then bump any number of keys on their way
-to the one they want without accidentally getting those characters. Once they
-have reached the key they want, they can then hold the desired key long enough
-for the computer to accept it. SlowKeys is a boolean control with one
-configurable attribute.
-
-When the SlowKeys control is active, the server reports the initial key press,
-subsequent acceptance or rejection, and release of any key to interested clients
-by sending an appropriate AccessXNotify event (see section 10.6.4).
-
-The server can generate XkbAccessXNotify events for some of the global keyboard
-controls.
-The detail field describes what AccessX event just occurred and can be any of
-the values in
-Table 1.
-The server can generate XkbAccessXNotify events for some of the global keyboard
-controls.
-The detail field describes what AccessX event just occurred and can be any of
-the values in
-Table 1.
-
-.TS
-c s
-l l
-l lw(4i).
-Table 1 AccessXNotify Events
-_
-detail Reason
-_
-XkbAXN_SKPress T{
-A key was pressed when SlowKeys was enabled.
-T}
-XkbAXN_SKAccept T{
-A key was accepted (held longer than the SlowKeys delay).
-T}
-XkbAXN_SKRelease T{
-An accepted SlowKeys key was released.
-T}
-XkbAXN_SKReject T{
-A key was rejected (released before the SlowKeys delay expired).
-T}
-XkbAXN_BKAccept T{
-A key was accepted by BounceKeys.
-T}
-XkbAXN_BKReject T{
-A key was rejected (pressed before the BounceKeys delay expired).
-T}
-XkbAXN_AXKWarning T{
-AccessXKeys is about to turn on/off StickyKeys or BounceKeys.
-T}
-.TE
-
-
-The
-.I keycode
-field reports the keycode of the key for which the event occurred. If the action
-is related to
-.I SlowKeys,
-the
-.I slowKeysDelay
-field contains the current SlowKeys acceptance delay. If the action is related
-to BounceKeys,
-the
-.I debounceDelay
-field contains the current BounceKeys debounce delay.
-
-Selecting for AccessX Events
-
-To receive XkbAccessXNotify events under all possible conditions, use
-.I XkbSelectEvents
-and pass XkbAccesXNotifyMask in both
-.I bits_to_change
-and
-.I values_for_bits.
-
-To receive XkbStateNotify events only under certain conditions, use
-.I XkbSelectEventDetails
-using XkbAccessXNotify as the
-.I event_type
-and specifying the desired state changes in
-.I bits_to_change
-and
-.I values_for_bits
-using mask bits from Table 2.
-
-.TS
-c s s
-l l l
-l l lw(3i).
-Table 2 AccessXNotify Event Details
-_
-XkbAccessXNotify Event Details Value Circumstances
-_
-XkbAXN_SKPressMask (1<<0) T{
-Slow key press notification wanted
-T}
-XkbAXN_SKAcceptMask (1<<1) T{
-Slow key accept notification wanted
-T}
-XkbAXN_SKRejectMask (1<<2) T{
-Slow key reject notification wanted
-T}
-XkbAXN_SKReleaseMask (1<<3) T{
-Slow key release notification wanted
-T}
-XkbAXN_BKAcceptMask (1<<4) T{
-Bounce key accept notification wanted
-T}
-XkbAXN_BKRejectMask (1<<5) T{
-Bounce key reject notification wanted
-T}
-XkbAXN_AXKWarningMask (1<<6) T{
-AccessX warning notification wanted
-T}
-XkbAllAccessXEventsMask (0x7f) T{
-All AccessX features notifications wanted
-T}
-.TE
-
-.I XkbGetSlowKeysDelay
-requests the attributes of the SlowKeys control from the server, waits for a
-reply and backfills
-.I delay_rtrn
-with the SlowKeys delay attribute.
-.I XkbGetSlowKeysDelay
-returns True if successful; ,
-.I XkbGetSlowKeysDelay
-returns False.
-.SH "RETURN VALUES"
-.TP 15
-True
-The
-.I XkbGetSlowKeysDelay
-function returns True if the request of the Slowkeys control from the server was
-successful.
-.I
-.TP 15
-False
-The
-.I XkbGetSlowKeysDelay
-function returns False if a compatible version of the Xkb extension is not
-available in the server.
-.SH STRUCTURES
-.LP
-The structure for the XkbAccessXNotify event type is as follows:
-
-.nf
-typedef struct {
- int type; /\(** Xkb extension base event code */
- unsigned long serial; /\(** X server serial number for event */
- Bool send_event; /\(** True => synthetically generated */
- Display * display; /\(** server connection where event generated */
- Time time; /\(** server time when event generated */
- int xkb_type; /\(** XkbAccessXNotify */
- int device; /\(** Xkb device ID, will not be XkbUseCoreKbd
-*/
- int detail; /\(** XkbAXN_* */
- KeyCode keycode; /\(** key of event */
- int slowKeysDelay; /\(** current SlowKeys delay */
- int debounceDelay; /\(** current debounce delay */
-} XkbAccessXNotifyEvent;
-
-.fi
-
+'\" t
+.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the "Software"),
+.\" to deal in the Software without restriction, including without limitation
+.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
+.\" and/or sell copies of the Software, and to permit persons to whom the
+.\" Software is furnished to do so, subject to the following conditions:
+.\"
+.\" The above copyright notice and this permission notice (including the next
+.\" paragraph) shall be included in all copies or substantial portions of the
+.\" Software.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+.\" DEALINGS IN THE SOFTWARE.
+.\"
+.TH XkbGetSlowKeysDelay __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbGetSlowKeysDelay \- Gets the SlowKeys acceptance delay for a keyboard device
+.SH SYNOPSIS
+.HP
+.B Bool XkbGetSlowKeysDelay
+.BI "(\^Display *" "display" "\^,"
+.BI "unsigned int " "device_spec" "\^,"
+.BI "unsigned int *" "delay_rtrn" "\^);"
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- display
+connection to X server
+.TP
+.I \- device_spec
+device ID, or XkbUseCoreKbd
+.TP
+.I \- delay_rtrn
+backfilled with SlowKeys delay, ms
+.SH DESCRIPTION
+.LP
+Some users may accidentally bump keys while moving a hand or typing stick toward
+the key they want. Usually, the keys that are accidentally bumped are just hit
+for a very short period of time. The SlowKeys control helps filter these
+accidental bumps by telling the server to wait a specified period, called the
+.I SlowKeys acceptance delay,
+before delivering key events. If the key is released before this period elapses,
+no key events are generated. Users can then bump any number of keys on their way
+to the one they want without accidentally getting those characters. Once they
+have reached the key they want, they can then hold the desired key long enough
+for the computer to accept it. SlowKeys is a boolean control with one
+configurable attribute.
+
+When the SlowKeys control is active, the server reports the initial key press,
+subsequent acceptance or rejection, and release of any key to interested clients
+by sending an appropriate AccessXNotify event (see section 10.6.4).
+
+The server can generate XkbAccessXNotify events for some of the global keyboard
+controls.
+The detail field describes what AccessX event just occurred and can be any of
+the values in
+Table 1.
+The server can generate XkbAccessXNotify events for some of the global keyboard
+controls.
+The detail field describes what AccessX event just occurred and can be any of
+the values in
+Table 1.
+
+.TS
+c s
+l l
+l lw(4i).
+Table 1 AccessXNotify Events
+_
+detail Reason
+_
+XkbAXN_SKPress T{
+A key was pressed when SlowKeys was enabled.
+T}
+XkbAXN_SKAccept T{
+A key was accepted (held longer than the SlowKeys delay).
+T}
+XkbAXN_SKRelease T{
+An accepted SlowKeys key was released.
+T}
+XkbAXN_SKReject T{
+A key was rejected (released before the SlowKeys delay expired).
+T}
+XkbAXN_BKAccept T{
+A key was accepted by BounceKeys.
+T}
+XkbAXN_BKReject T{
+A key was rejected (pressed before the BounceKeys delay expired).
+T}
+XkbAXN_AXKWarning T{
+AccessXKeys is about to turn on/off StickyKeys or BounceKeys.
+T}
+.TE
+
+
+The
+.I keycode
+field reports the keycode of the key for which the event occurred. If the action
+is related to
+.I SlowKeys,
+the
+.I slowKeysDelay
+field contains the current SlowKeys acceptance delay. If the action is related
+to BounceKeys,
+the
+.I debounceDelay
+field contains the current BounceKeys debounce delay.
+
+Selecting for AccessX Events
+
+To receive XkbAccessXNotify events under all possible conditions, use
+.I XkbSelectEvents
+and pass XkbAccesXNotifyMask in both
+.I bits_to_change
+and
+.I values_for_bits.
+
+To receive XkbStateNotify events only under certain conditions, use
+.I XkbSelectEventDetails
+using XkbAccessXNotify as the
+.I event_type
+and specifying the desired state changes in
+.I bits_to_change
+and
+.I values_for_bits
+using mask bits from Table 2.
+
+.TS
+c s s
+l l l
+l l lw(3i).
+Table 2 AccessXNotify Event Details
+_
+XkbAccessXNotify Event Details Value Circumstances
+_
+XkbAXN_SKPressMask (1<<0) T{
+Slow key press notification wanted
+T}
+XkbAXN_SKAcceptMask (1<<1) T{
+Slow key accept notification wanted
+T}
+XkbAXN_SKRejectMask (1<<2) T{
+Slow key reject notification wanted
+T}
+XkbAXN_SKReleaseMask (1<<3) T{
+Slow key release notification wanted
+T}
+XkbAXN_BKAcceptMask (1<<4) T{
+Bounce key accept notification wanted
+T}
+XkbAXN_BKRejectMask (1<<5) T{
+Bounce key reject notification wanted
+T}
+XkbAXN_AXKWarningMask (1<<6) T{
+AccessX warning notification wanted
+T}
+XkbAllAccessXEventsMask (0x7f) T{
+All AccessX features notifications wanted
+T}
+.TE
+
+.I XkbGetSlowKeysDelay
+requests the attributes of the SlowKeys control from the server, waits for a
+reply and backfills
+.I delay_rtrn
+with the SlowKeys delay attribute.
+.I XkbGetSlowKeysDelay
+returns True if successful; ,
+.I XkbGetSlowKeysDelay
+returns False.
+.SH "RETURN VALUES"
+.TP 15
+True
+The
+.I XkbGetSlowKeysDelay
+function returns True if the request of the Slowkeys control from the server was
+successful.
+.I
+.TP 15
+False
+The
+.I XkbGetSlowKeysDelay
+function returns False if a compatible version of the Xkb extension is not
+available in the server.
+.SH STRUCTURES
+.LP
+The structure for the XkbAccessXNotify event type is as follows:
+
+.nf
+typedef struct {
+ int type; /\(** Xkb extension base event code */
+ unsigned long serial; /\(** X server serial number for event */
+ Bool send_event; /\(** True => synthetically generated */
+ Display * display; /\(** server connection where event generated */
+ Time time; /\(** server time when event generated */
+ int xkb_type; /\(** XkbAccessXNotify */
+ int device; /\(** Xkb device ID, will not be XkbUseCoreKbd
+*/
+ int detail; /\(** XkbAXN_* */
+ KeyCode keycode; /\(** key of event */
+ int slowKeysDelay; /\(** current SlowKeys delay */
+ int debounceDelay; /\(** current debounce delay */
+} XkbAccessXNotifyEvent;
+
+.fi
+
diff --git a/libX11/man/xkb/XkbGetState.man b/libX11/man/xkb/XkbGetState.man
index 1d71a1623..4547e592d 100644
--- a/libX11/man/xkb/XkbGetState.man
+++ b/libX11/man/xkb/XkbGetState.man
@@ -1,55 +1,55 @@
-.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
-.\"
-.\" Permission is hereby granted, free of charge, to any person obtaining a
-.\" copy of this software and associated documentation files (the "Software"),
-.\" to deal in the Software without restriction, including without limitation
-.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
-.\" and/or sell copies of the Software, and to permit persons to whom the
-.\" Software is furnished to do so, subject to the following conditions:
-.\"
-.\" The above copyright notice and this permission notice (including the next
-.\" paragraph) shall be included in all copies or substantial portions of the
-.\" Software.
-.\"
-.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-.\" DEALINGS IN THE SOFTWARE.
-.\"
-.TH XkbGetState __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
-.SH NAME
-XkbGetState \- Obtains the keyboard state
-.SH SYNOPSIS
-.HP
-.B Status XkbGetState
-.BI "(\^Display *" "display" "\^,"
-.BI "unsigned int " "device_spec" "\^,"
-.BI "XkbStatePtr " "state_return" "\^);"
-.if n .ti +5n
-.if t .ti +.5i
-.SH ARGUMENTS
-.TP
-.I display
-connection to the X server
-.TP
-.I device_spec
-device ID, or XkbUseCoreKbd
-.TP
-.I state_return
-backfilled with Xkb state
-.SH DESCRIPTION
-.LP
-The
-.I XkbGetState
-function queries the server for the current keyboard state, waits
-for a reply, and then backfills
-.I state_return
-with the results.
-
-All group values are expressed as group indices in the range [0..3]. Modifiers
-and the compatibility modifier state values are expressed as the bitwise union
-of the core X11 modifier masks. The pointer button state is reported as in the
-core X11 protocol.
+.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the "Software"),
+.\" to deal in the Software without restriction, including without limitation
+.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
+.\" and/or sell copies of the Software, and to permit persons to whom the
+.\" Software is furnished to do so, subject to the following conditions:
+.\"
+.\" The above copyright notice and this permission notice (including the next
+.\" paragraph) shall be included in all copies or substantial portions of the
+.\" Software.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+.\" DEALINGS IN THE SOFTWARE.
+.\"
+.TH XkbGetState __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbGetState \- Obtains the keyboard state
+.SH SYNOPSIS
+.HP
+.B Status XkbGetState
+.BI "(\^Display *" "display" "\^,"
+.BI "unsigned int " "device_spec" "\^,"
+.BI "XkbStatePtr " "state_return" "\^);"
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I display
+connection to the X server
+.TP
+.I device_spec
+device ID, or XkbUseCoreKbd
+.TP
+.I state_return
+backfilled with Xkb state
+.SH DESCRIPTION
+.LP
+The
+.I XkbGetState
+function queries the server for the current keyboard state, waits
+for a reply, and then backfills
+.I state_return
+with the results.
+
+All group values are expressed as group indices in the range [0..3]. Modifiers
+and the compatibility modifier state values are expressed as the bitwise union
+of the core X11 modifier masks. The pointer button state is reported as in the
+core X11 protocol.
diff --git a/libX11/man/xkb/XkbGetStickyKeysOptions.man b/libX11/man/xkb/XkbGetStickyKeysOptions.man
index 5354fe1b9..ed7a2dcc6 100644
--- a/libX11/man/xkb/XkbGetStickyKeysOptions.man
+++ b/libX11/man/xkb/XkbGetStickyKeysOptions.man
@@ -1,115 +1,115 @@
-.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
-.\"
-.\" Permission is hereby granted, free of charge, to any person obtaining a
-.\" copy of this software and associated documentation files (the "Software"),
-.\" to deal in the Software without restriction, including without limitation
-.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
-.\" and/or sell copies of the Software, and to permit persons to whom the
-.\" Software is furnished to do so, subject to the following conditions:
-.\"
-.\" The above copyright notice and this permission notice (including the next
-.\" paragraph) shall be included in all copies or substantial portions of the
-.\" Software.
-.\"
-.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-.\" DEALINGS IN THE SOFTWARE.
-.\"
-.TH XkbGetStickyKeysOptions __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
-.SH NAME
-XkbGetStickyKeysOptions \- Queries the current StickyKeys attributes for a keyboard device
-.SH SYNOPSIS
-.HP
-.B Bool XkbGetStickyKeysOptions
-.BI "(\^Display *" "display" "\^,"
-.BI "unsigned int " "device_spec" "\^,"
-.BI "unsigned int *" "options_rtrn" "\^);"
-.if n .ti +5n
-.if t .ti +.5i
-.SH ARGUMENTS
-.TP
-.I \- display
-connection to X server
-.TP
-.I \- device_spec
-device ID, or XkbUseCoreKbd
-.TP
-.I \- options_rtrn
-backfilled with StickyKeys option mask
-.SH DESCRIPTION
-.LP
-The StickyKeys control has two options that can be accessed via the
-.I ax_options
-of an XkbControlsRec structure. The first option, TwoKeys, specifies whether StickyKeys should
-automatically turn off when two keys are pressed at the same time. This feature is useful for
-shared computers so people who do not want them do not need to turn StickyKeys off if a previous
-user left StickyKeys on. The second option, LatchToLock, specifies whether or not StickyKeys
-locks a modifier when pressed twice in a row.
-
-.I XkbGetStickyKeysOptions
-requests the attributes of the StickyKeys control from the server, waits for a reply, and
-backfills
-.I options_rtrn
-with a mask indicating whether the individual StickyKeys options are on or off. Valid bits in
-.I options_rtrn
-are:
-.nf
-
- XkbAX_TwoKeysMask
- XkbAX_LatchToLockMask
-
-.fi
-.I XkbGetStickyKeysOptions
-returns True if successful; if a compatible version of the Xkb extension is not available in the
-server
-.I XkbGetStickyKeysOptions
-returns False.
-.SH "RETURN VALUES"
-.TP 15
-True
-The
-.I XkbGetStickyKeysOptions
-function returns True if the request for the attributes of the StickyKeys control from the
-server was successful.
-.TP 15
-False
-The
-.I XkbGetStickyKeysOptions
-function returns False if a compatible version of the Xkb extension is not available in the
-server.
-.SH STRUCTURES
-.nf
-The XkbControlsRec structure is defined as follows:
-
- #define XkbMaxLegalKeyCode 255
- #define XkbPerKeyBitArraySize ((XkbMaxLegalKeyCode+1)/8)
-
- typedef struct {
- unsigned char mk_dflt_btn; /\(** default button for keyboard driven mouse */
- unsigned char num_groups; /\(** number of keyboard groups */
- unsigned char groups_wrap; /\(** how to wrap out-of-bounds groups */
- XkbModsRec internal; /\(** defines server internal modifiers */
- XkbModsRec ignore_lock; /\(** modifiers to ignore when checking for grab */
- unsigned int enabled_ctrls; /\(** 1 bit => corresponding boolean control enabled */
- unsigned short repeat_delay; /\(** ms delay until first repeat */
- unsigned short repeat_interval; /\(** ms delay between repeats */
- unsigned short slow_keys_delay; /\(** ms minimum time key must be down to be ok */
- unsigned short debounce_delay; /\(** ms delay before key reactivated */
- unsigned short mk_delay; /\(** ms delay to second mouse motion event */
- unsigned short mk_interval; /\(** ms delay between repeat mouse events */
- unsigned short mk_time_to_max; /\(** # intervals until constant mouse move */
- unsigned short mk_max_speed; /\(** multiplier for maximum mouse speed */
- short mk_curve; /\(** determines mouse move curve type */
- unsigned short ax_options; /\(** 1 bit => Access X option enabled */
- unsigned short ax_timeout; /\(** seconds until Access X disabled */
- unsigned short axt_opts_mask; /\(** 1 bit => options to reset on Access X timeout */
- unsigned short axt_opts_values; /\(** 1 bit => turn option on, 0=> off */
- unsigned int axt_ctrls_mask; /\(** which bits in enabled_ctrls to modify */
- unsigned int axt_ctrls_values; /\(** values for new bits in enabled_ctrls */
- unsigned char per_key_repeat[XkbPerKeyBitArraySize]; /\(** per key auto repeat */
- } XkbControlsRec, *XkbControlsPtr;
-.fi
+.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the "Software"),
+.\" to deal in the Software without restriction, including without limitation
+.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
+.\" and/or sell copies of the Software, and to permit persons to whom the
+.\" Software is furnished to do so, subject to the following conditions:
+.\"
+.\" The above copyright notice and this permission notice (including the next
+.\" paragraph) shall be included in all copies or substantial portions of the
+.\" Software.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+.\" DEALINGS IN THE SOFTWARE.
+.\"
+.TH XkbGetStickyKeysOptions __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbGetStickyKeysOptions \- Queries the current StickyKeys attributes for a keyboard device
+.SH SYNOPSIS
+.HP
+.B Bool XkbGetStickyKeysOptions
+.BI "(\^Display *" "display" "\^,"
+.BI "unsigned int " "device_spec" "\^,"
+.BI "unsigned int *" "options_rtrn" "\^);"
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- display
+connection to X server
+.TP
+.I \- device_spec
+device ID, or XkbUseCoreKbd
+.TP
+.I \- options_rtrn
+backfilled with StickyKeys option mask
+.SH DESCRIPTION
+.LP
+The StickyKeys control has two options that can be accessed via the
+.I ax_options
+of an XkbControlsRec structure. The first option, TwoKeys, specifies whether StickyKeys should
+automatically turn off when two keys are pressed at the same time. This feature is useful for
+shared computers so people who do not want them do not need to turn StickyKeys off if a previous
+user left StickyKeys on. The second option, LatchToLock, specifies whether or not StickyKeys
+locks a modifier when pressed twice in a row.
+
+.I XkbGetStickyKeysOptions
+requests the attributes of the StickyKeys control from the server, waits for a reply, and
+backfills
+.I options_rtrn
+with a mask indicating whether the individual StickyKeys options are on or off. Valid bits in
+.I options_rtrn
+are:
+.nf
+
+ XkbAX_TwoKeysMask
+ XkbAX_LatchToLockMask
+
+.fi
+.I XkbGetStickyKeysOptions
+returns True if successful; if a compatible version of the Xkb extension is not available in the
+server
+.I XkbGetStickyKeysOptions
+returns False.
+.SH "RETURN VALUES"
+.TP 15
+True
+The
+.I XkbGetStickyKeysOptions
+function returns True if the request for the attributes of the StickyKeys control from the
+server was successful.
+.TP 15
+False
+The
+.I XkbGetStickyKeysOptions
+function returns False if a compatible version of the Xkb extension is not available in the
+server.
+.SH STRUCTURES
+.nf
+The XkbControlsRec structure is defined as follows:
+
+ #define XkbMaxLegalKeyCode 255
+ #define XkbPerKeyBitArraySize ((XkbMaxLegalKeyCode+1)/8)
+
+ typedef struct {
+ unsigned char mk_dflt_btn; /\(** default button for keyboard driven mouse */
+ unsigned char num_groups; /\(** number of keyboard groups */
+ unsigned char groups_wrap; /\(** how to wrap out-of-bounds groups */
+ XkbModsRec internal; /\(** defines server internal modifiers */
+ XkbModsRec ignore_lock; /\(** modifiers to ignore when checking for grab */
+ unsigned int enabled_ctrls; /\(** 1 bit => corresponding boolean control enabled */
+ unsigned short repeat_delay; /\(** ms delay until first repeat */
+ unsigned short repeat_interval; /\(** ms delay between repeats */
+ unsigned short slow_keys_delay; /\(** ms minimum time key must be down to be ok */
+ unsigned short debounce_delay; /\(** ms delay before key reactivated */
+ unsigned short mk_delay; /\(** ms delay to second mouse motion event */
+ unsigned short mk_interval; /\(** ms delay between repeat mouse events */
+ unsigned short mk_time_to_max; /\(** # intervals until constant mouse move */
+ unsigned short mk_max_speed; /\(** multiplier for maximum mouse speed */
+ short mk_curve; /\(** determines mouse move curve type */
+ unsigned short ax_options; /\(** 1 bit => Access X option enabled */
+ unsigned short ax_timeout; /\(** seconds until Access X disabled */
+ unsigned short axt_opts_mask; /\(** 1 bit => options to reset on Access X timeout */
+ unsigned short axt_opts_values; /\(** 1 bit => turn option on, 0=> off */
+ unsigned int axt_ctrls_mask; /\(** which bits in enabled_ctrls to modify */
+ unsigned int axt_ctrls_values; /\(** values for new bits in enabled_ctrls */
+ unsigned char per_key_repeat[XkbPerKeyBitArraySize]; /\(** per key auto repeat */
+ } XkbControlsRec, *XkbControlsPtr;
+.fi
diff --git a/libX11/man/xkb/XkbGetUpdatedMap.man b/libX11/man/xkb/XkbGetUpdatedMap.man
index e0365e368..917ea6693 100644
--- a/libX11/man/xkb/XkbGetUpdatedMap.man
+++ b/libX11/man/xkb/XkbGetUpdatedMap.man
@@ -1,262 +1,262 @@
-'\" t
-.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
-.\"
-.\" Permission is hereby granted, free of charge, to any person obtaining a
-.\" copy of this software and associated documentation files (the "Software"),
-.\" to deal in the Software without restriction, including without limitation
-.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
-.\" and/or sell copies of the Software, and to permit persons to whom the
-.\" Software is furnished to do so, subject to the following conditions:
-.\"
-.\" The above copyright notice and this permission notice (including the next
-.\" paragraph) shall be included in all copies or substantial portions of the
-.\" Software.
-.\"
-.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-.\" DEALINGS IN THE SOFTWARE.
-.\"
-.TH XkbGetUpdatedMap __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
-.SH NAME
-XkbGetUpdatedMap \- Update the client or server map information in an existing
-keyboard description
-.SH SYNOPSIS
-.HP
-.B Status XkbGetUpdatedMap
-.BI "(\^Display *" "display" "\^,"
-.BI "unsigned int " "which" "\^,"
-.BI "XkbDescPtr " "xkb" "\^);"
-.if n .ti +5n
-.if t .ti +.5i
-.SH ARGUMENTS
-.TP
-.I \- display
-connection to X server
-.TP
-.I \- which
-mask selecting subcomponents to populate
-.TP
-.I \- xkb
-keyboard description to be updated
-.SH DESCRIPTION
-.LP
-The
-.I which
-parameter is a bitwise inclusive OR of the masks in Table 1. If the needed
-components of the
-.I xkb
-structure are not already allocated,
-.I XkbGetUpdatedMap
-allocates them.
-.I XkbGetUpdatedMap
-fetches the requested information for the device specified in the XkbDescRec
-passed in the
-.I xkb
-parameter.
-
-.TS
-c s s s s
-c s s s s
-l l l l l
-l l l l l
-lw(3i) l l lw(1i) lw(3i).
-Table 1 Xkb Mapping Component Masks
-and Convenience Functions
-_
-Mask Value Map Fields Convenience
- Functions
-_
-T{
-XkbKeyTypesMask
-T} (1<<0) client T{
-types
-.br
-size_types
-.br
-num_types
-T} T{
-XkbGetKeyTypes
-.br
-XkbResizeKeyType
-.br
-XkbCopyKeyType
-.br
-XkbCopyKeyTypes
-T}
-T{
-XkbKeySymsMask
-T} (1<<1) client T{
-syms
-.br
-size_syms
-.br
-num_syms
-.br
-key_sym_map
-T} T{
-XkbGetKeySyms
-.br
-XkbResizeKeySyms
-.br
-XkbChangeTypesOfKey
-T}
-T{
-XkbModifierMapMask
-T} (1<<2) client modmap T{
-XkbGetKeyModifierMap
-T}
-T{
-XkbExplicitComponentsMask
-T} (1<<3) server T{
-explicit
-T} T{
-XkbGetKeyExplicitComponents
-T}
-T{
-XkbKeyActionsMask
-T} (1<<4) server T{
-key_acts
-.br
-acts
-.br
-num_acts
-.br
-size_acts
-T} T{
-XkbGetKeyActions
-.br
-XkbResizeKeyActions
-T}
-T{
-XkbKeyBehaviorsMask
-T} (1<<5) server T{
-behaviors
-T} T{
-XkbGetKeyBehaviors
-T}
-T{
-XkbVirtualModsMask
-T} (1<<6) server T{
-vmods
-T} T{
-XkbGetVirtualMods
-T}
-T{
-XkbVirtualModMapMask
-T} (1<<7) server T{
-vmodmap
-T} T{
-XkbGetVirtualModMap
-T}
-.TE
-
-.I XkbGetUpdatedMap
-is synchronous; it queries the server for the desired information, waits for a
-reply, and then returns. If successful,
-.I XkbGetUpdatedMap
-returns Success. If unsuccessful,
-.I XkbGetUpdatedMap
-returns one of the following: BadAlloc (unable to allocate a component in the
-XkbDescRec structure), BadValue (some mask bits in
-.I which
-are undefined), BadImplementation (a compatible version of the Xkb extension is
-not available in the server or the reply from the server was invalid).
-.SH "RETURN VALUES"
-.TP 15
-Success
-The
-.I XkbGetUpdatedMap
-function returns Success if a reply is received to the server query for the desired information.
-.SH STRUCTURES
-.LP
-The complete description of an Xkb keyboard is given by an XkbDescRec. The
-component
-structures in the XkbDescRec represent the major Xkb components.
-
-.nf
-typedef struct {
- struct _XDisplay * display; /\(** connection to X server */
- unsigned short flags; /\(** private to Xkb, do not modify */
- unsigned short device_spec; /\(** device of interest */
- KeyCode min_key_code; /\(** minimum keycode for device */
- KeyCode max_key_code; /\(** maximum keycode for device */
- XkbControlsPtr ctrls; /\(** controls */
- XkbServerMapPtr server; /\(** server keymap */
- XkbClientMapPtr map; /\(** client keymap */
- XkbIndicatorPtr indicators; /\(** indicator map */
- XkbNamesPtr names; /\(** names for all components */
- XkbCompatMapPtr compat; /\(** compatibility map */
- XkbGeometryPtr geom; /\(** physical geometry of keyboard */
-} XkbDescRec, *XkbDescPtr;
-
-.fi
-The
-.I display
-field points to an X display structure. The
-.I flags
-field is private to the library: modifying
-.I flags
-may yield unpredictable results. The
-.I device_spec
-field specifies the device identifier of the keyboard input device, or
-XkbUseCoreKeyboard, which specifies the core keyboard device. The
-.I min_key_code
-and
-.I max_key_code
-fields specify the least and greatest keycode that can be returned by the
-keyboard.
-
-Each structure component has a corresponding mask bit that is used in function
-calls to
-indicate that the structure should be manipulated in some manner, such as
-allocating it
-or freeing it. These masks and their relationships to the fields in the
-XkbDescRec are
-shown in Table 2.
-.bp
-.TS
-c s s
-l l l
-l l l.
-Table 2 Mask Bits for XkbDescRec
-_
-Mask Bit XkbDescRec Field Value
-_
-XkbControlsMask ctrls (1L<<0)
-XkbServerMapMask server (1L<<1)
-XkbIClientMapMask map (1L<<2)
-XkbIndicatorMapMask indicators (1L<<3)
-XkbNamesMask names (1L<<4)
-XkbCompatMapMask compat (1L<<5)
-XkbGeometryMask geom (1L<<6)
-XkbAllComponentsMask All Fields (0x7f)
-.TE
-.SH DIAGNOSTICS
-.TP 15
-.B BadAlloc
-Unable to allocate storage
-.TP 15
-.B BadImplementation
-Invalid reply from server
-.TP 15
-.B BadValue
-An argument is out of range
-.SH "SEE ALSO"
-.BR XkbChangeTypesOfKey (__libmansuffix__),
-.BR XkbCopyKeyType (__libmansuffix__),
-.BR XkbCopyKeyTypes (__libmansuffix__),
-.BR XkbGetKeyActions (__libmansuffix__),
-.BR XkbGetKeyBehaviors (__libmansuffix__),
-.BR XkbGetKeyExplicitComponents (__libmansuffix__),
-.BR XkbGetKeyModifierMap (__libmansuffix__),
-.BR XkbGetKeySyms (__libmansuffix__),
-.BR XkbGetKeyTypes (__libmansuffix__),
-.BR XkbResizeKeyActions (__libmansuffix__),
-.BR XkbResizeKeySyms (__libmansuffix__),
-.BR XkbResizeKeyType (__libmansuffix__),
-.BR XkbGetVirtualModMap (__libmansuffix__),
-.BR XkbGetVirtualMods (__libmansuffix__)
+'\" t
+.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the "Software"),
+.\" to deal in the Software without restriction, including without limitation
+.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
+.\" and/or sell copies of the Software, and to permit persons to whom the
+.\" Software is furnished to do so, subject to the following conditions:
+.\"
+.\" The above copyright notice and this permission notice (including the next
+.\" paragraph) shall be included in all copies or substantial portions of the
+.\" Software.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+.\" DEALINGS IN THE SOFTWARE.
+.\"
+.TH XkbGetUpdatedMap __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbGetUpdatedMap \- Update the client or server map information in an existing
+keyboard description
+.SH SYNOPSIS
+.HP
+.B Status XkbGetUpdatedMap
+.BI "(\^Display *" "display" "\^,"
+.BI "unsigned int " "which" "\^,"
+.BI "XkbDescPtr " "xkb" "\^);"
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- display
+connection to X server
+.TP
+.I \- which
+mask selecting subcomponents to populate
+.TP
+.I \- xkb
+keyboard description to be updated
+.SH DESCRIPTION
+.LP
+The
+.I which
+parameter is a bitwise inclusive OR of the masks in Table 1. If the needed
+components of the
+.I xkb
+structure are not already allocated,
+.I XkbGetUpdatedMap
+allocates them.
+.I XkbGetUpdatedMap
+fetches the requested information for the device specified in the XkbDescRec
+passed in the
+.I xkb
+parameter.
+
+.TS
+c s s s s
+c s s s s
+l l l l l
+l l l l l
+lw(3i) l l lw(1i) lw(3i).
+Table 1 Xkb Mapping Component Masks
+and Convenience Functions
+_
+Mask Value Map Fields Convenience
+ Functions
+_
+T{
+XkbKeyTypesMask
+T} (1<<0) client T{
+types
+.br
+size_types
+.br
+num_types
+T} T{
+XkbGetKeyTypes
+.br
+XkbResizeKeyType
+.br
+XkbCopyKeyType
+.br
+XkbCopyKeyTypes
+T}
+T{
+XkbKeySymsMask
+T} (1<<1) client T{
+syms
+.br
+size_syms
+.br
+num_syms
+.br
+key_sym_map
+T} T{
+XkbGetKeySyms
+.br
+XkbResizeKeySyms
+.br
+XkbChangeTypesOfKey
+T}
+T{
+XkbModifierMapMask
+T} (1<<2) client modmap T{
+XkbGetKeyModifierMap
+T}
+T{
+XkbExplicitComponentsMask
+T} (1<<3) server T{
+explicit
+T} T{
+XkbGetKeyExplicitComponents
+T}
+T{
+XkbKeyActionsMask
+T} (1<<4) server T{
+key_acts
+.br
+acts
+.br
+num_acts
+.br
+size_acts
+T} T{
+XkbGetKeyActions
+.br
+XkbResizeKeyActions
+T}
+T{
+XkbKeyBehaviorsMask
+T} (1<<5) server T{
+behaviors
+T} T{
+XkbGetKeyBehaviors
+T}
+T{
+XkbVirtualModsMask
+T} (1<<6) server T{
+vmods
+T} T{
+XkbGetVirtualMods
+T}
+T{
+XkbVirtualModMapMask
+T} (1<<7) server T{
+vmodmap
+T} T{
+XkbGetVirtualModMap
+T}
+.TE
+
+.I XkbGetUpdatedMap
+is synchronous; it queries the server for the desired information, waits for a
+reply, and then returns. If successful,
+.I XkbGetUpdatedMap
+returns Success. If unsuccessful,
+.I XkbGetUpdatedMap
+returns one of the following: BadAlloc (unable to allocate a component in the
+XkbDescRec structure), BadValue (some mask bits in
+.I which
+are undefined), BadImplementation (a compatible version of the Xkb extension is
+not available in the server or the reply from the server was invalid).
+.SH "RETURN VALUES"
+.TP 15
+Success
+The
+.I XkbGetUpdatedMap
+function returns Success if a reply is received to the server query for the desired information.
+.SH STRUCTURES
+.LP
+The complete description of an Xkb keyboard is given by an XkbDescRec. The
+component
+structures in the XkbDescRec represent the major Xkb components.
+
+.nf
+typedef struct {
+ struct _XDisplay * display; /\(** connection to X server */
+ unsigned short flags; /\(** private to Xkb, do not modify */
+ unsigned short device_spec; /\(** device of interest */
+ KeyCode min_key_code; /\(** minimum keycode for device */
+ KeyCode max_key_code; /\(** maximum keycode for device */
+ XkbControlsPtr ctrls; /\(** controls */
+ XkbServerMapPtr server; /\(** server keymap */
+ XkbClientMapPtr map; /\(** client keymap */
+ XkbIndicatorPtr indicators; /\(** indicator map */
+ XkbNamesPtr names; /\(** names for all components */
+ XkbCompatMapPtr compat; /\(** compatibility map */
+ XkbGeometryPtr geom; /\(** physical geometry of keyboard */
+} XkbDescRec, *XkbDescPtr;
+
+.fi
+The
+.I display
+field points to an X display structure. The
+.I flags
+field is private to the library: modifying
+.I flags
+may yield unpredictable results. The
+.I device_spec
+field specifies the device identifier of the keyboard input device, or
+XkbUseCoreKeyboard, which specifies the core keyboard device. The
+.I min_key_code
+and
+.I max_key_code
+fields specify the least and greatest keycode that can be returned by the
+keyboard.
+
+Each structure component has a corresponding mask bit that is used in function
+calls to
+indicate that the structure should be manipulated in some manner, such as
+allocating it
+or freeing it. These masks and their relationships to the fields in the
+XkbDescRec are
+shown in Table 2.
+.bp
+.TS
+c s s
+l l l
+l l l.
+Table 2 Mask Bits for XkbDescRec
+_
+Mask Bit XkbDescRec Field Value
+_
+XkbControlsMask ctrls (1L<<0)
+XkbServerMapMask server (1L<<1)
+XkbIClientMapMask map (1L<<2)
+XkbIndicatorMapMask indicators (1L<<3)
+XkbNamesMask names (1L<<4)
+XkbCompatMapMask compat (1L<<5)
+XkbGeometryMask geom (1L<<6)
+XkbAllComponentsMask All Fields (0x7f)
+.TE
+.SH DIAGNOSTICS
+.TP 15
+.B BadAlloc
+Unable to allocate storage
+.TP 15
+.B BadImplementation
+Invalid reply from server
+.TP 15
+.B BadValue
+An argument is out of range
+.SH "SEE ALSO"
+.BR XkbChangeTypesOfKey (__libmansuffix__),
+.BR XkbCopyKeyType (__libmansuffix__),
+.BR XkbCopyKeyTypes (__libmansuffix__),
+.BR XkbGetKeyActions (__libmansuffix__),
+.BR XkbGetKeyBehaviors (__libmansuffix__),
+.BR XkbGetKeyExplicitComponents (__libmansuffix__),
+.BR XkbGetKeyModifierMap (__libmansuffix__),
+.BR XkbGetKeySyms (__libmansuffix__),
+.BR XkbGetKeyTypes (__libmansuffix__),
+.BR XkbResizeKeyActions (__libmansuffix__),
+.BR XkbResizeKeySyms (__libmansuffix__),
+.BR XkbResizeKeyType (__libmansuffix__),
+.BR XkbGetVirtualModMap (__libmansuffix__),
+.BR XkbGetVirtualMods (__libmansuffix__)
diff --git a/libX11/man/xkb/XkbGetVirtualMods.man b/libX11/man/xkb/XkbGetVirtualMods.man
index 2bfb551fe..28844f463 100644
--- a/libX11/man/xkb/XkbGetVirtualMods.man
+++ b/libX11/man/xkb/XkbGetVirtualMods.man
@@ -1,208 +1,208 @@
-'\" t
-.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
-.\"
-.\" Permission is hereby granted, free of charge, to any person obtaining a
-.\" copy of this software and associated documentation files (the "Software"),
-.\" to deal in the Software without restriction, including without limitation
-.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
-.\" and/or sell copies of the Software, and to permit persons to whom the
-.\" Software is furnished to do so, subject to the following conditions:
-.\"
-.\" The above copyright notice and this permission notice (including the next
-.\" paragraph) shall be included in all copies or substantial portions of the
-.\" Software.
-.\"
-.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-.\" DEALINGS IN THE SOFTWARE.
-.\"
-.TH XkbGetVirtualMods __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
-.SH NAME
-XkbGetVirtualMods \- Obtain a subset of the virtual modifier bindings (the vmods
-array) in a keyboard description
-.SH SYNOPSIS
-.HP
-.B Status XkbGetVirtualMods
-.BI "(\^Display *" "dpy" "\^,"
-.BI "unsigned int " "which" "\^,"
-.BI "XkbDescPtr " "xkb" "\^);"
-.if n .ti +5n
-.if t .ti +.5i
-.SH ARGUMENTS
-.TP
-.I \- dpy
-connection to server
-.TP
-.I \- which
-mask indicating virtual modifier bindings to get
-.TP
-.I \- xkb
-Xkb description where results will be placed
-.SH DESCRIPTION
-.LP
-.I XkbGetVirtualMods
-sends a request to the server to obtain the
-.I vmods
-entries for the virtual modifiers specified in the mask,
-.I which,
-and waits for a reply.
-
-Virtual modifiers are named by converting their string name to an X Atom and storing the Atom in the
-.I names.vmods
-array in an XkbDescRec structure. The position of a name Atom in the
-.I names.vmods
-array defines the bit position used to represent the virtual modifier and also the index used when
-accessing virtual modifier information in arrays: the name in the i-th (0 relative) entry of
-.I names.vmods
-is the i-th virtual modifier, represented by the mask (1<<i). Throughout Xkb, various functions have
-a parameter that is a mask representing virtual modifier choices. In each case, the i-th bit (0
-relative) of the mask represents the i-th virtual modifier.
-
-To set the name of a virtual modifier, use
-.I XkbSetNames,
-using XkbVirtualModNamesMask in
-.I which
-and the name in the
-.I xkb
-argument; to retrieve indicator names, use
-.I XkbGetNames.
-
-For each bit set in
-.I which, XkbGetVirtualMods
-updates the corresponding virtual modifier definition in the
-.I server->vmods
-array of
-.I xkb.
-The
-.I xkb
-parameter must be a pointer to a valid Xkb keyboard description. If successful,
-.I XkbGetVirtualMods
-returns Success.
-
-.B Virtual Modifier Names and Masks
-
-Virtual modifiers are named by converting their string name to an X Atom and
-storing the Atom in the
-.I names.vmods
-array in an XkbDescRec structure. The position of a name Atom in the
-.I names.vmods
-array defines the bit position used to represent the virtual modifier and also
-the index used when accessing virtual modifier information in arrays: the name
-in the i-th (0 relative) entry of
-.I names.vmods
-is the i-th virtual modifier, represented by the mask (1<<i). Throughout Xkb,
-various functions have a parameter that is a mask representing virtual modifier
-choices. In each case, the i-th bit (0 relative) of the mask represents the i-th
-virtual modifier.
-
-To set the name of a virtual modifier, use
-.I XkbSetNames,
-using XkbVirtualModNamesMask in
-.I which
-and the name in the
-.I xkb
-argument; to retrieve indicator names, use
-.I XkbGetNames.
-
-If the
-.I server
-map has not been allocated in the
-.I xkb
-parameter,
-.I XkbGetVirtualMods
-allocates and initializes it before obtaining the virtual modifier bindings.
-
-If the server does not have a compatible version of Xkb, or the Xkb extension
-has not been properly initialized,
-.I XkbGetVirtualMods
-returns BadMatch. Any errors in allocation cause
-.I XkbGetVirtualMods
-to return BadAlloc.
-.SH "RETURN VALUES"
-.TP 15
-Success
-The
-.I XkbGetVirtualMods
-function returns Success when it successfully updates the corresponding virtual modifier definition
-in the
-.I server->vmods
-array of
-.I xkb.
-.SH STRUCTURES
-.LP
-The complete description of an Xkb keyboard is given by an XkbDescRec. The
-component
-structures in the XkbDescRec represent the major Xkb components.
-
-.nf
-typedef struct {
- struct _XDisplay * display; /\(** connection to X server */
- unsigned short flags; /\(** private to Xkb, do not modify */
- unsigned short device_spec; /\(** device of interest */
- KeyCode min_key_code; /\(** minimum keycode for device */
- KeyCode max_key_code; /\(** maximum keycode for device */
- XkbControlsPtr ctrls; /\(** controls */
- XkbServerMapPtr server; /\(** server keymap */
- XkbClientMapPtr map; /\(** client keymap */
- XkbIndicatorPtr indicators; /\(** indicator map */
- XkbNamesPtr names; /\(** names for all components */
- XkbCompatMapPtr compat; /\(** compatibility map */
- XkbGeometryPtr geom; /\(** physical geometry of keyboard */
-} XkbDescRec, *XkbDescPtr;
-
-.fi
-The
-.I display
-field points to an X display structure. The
-.I flags
-field is private to the library: modifying
-.I flags
-may yield unpredictable results. The
-.I device_spec
-field specifies the device identifier of the keyboard input device, or XkbUseCoreKeyboard, which
-specifies the core keyboard device. The
-.I min_key_code
-and
-.I max_key_code
-fields specify the least and greatest keycode that can be returned by the keyboard.
-
-Each structure component has a corresponding mask bit that is used in function
-calls to
-indicate that the structure should be manipulated in some manner, such as
-allocating it
-or freeing it. These masks and their relationships to the fields in the
-XkbDescRec are
-shown in Table 1.
-
-.TS
-c s s
-l l l
-l l l.
-Table 1 Mask Bits for XkbDescRec
-_
-Mask Bit XkbDescRec Field Value
-_
-XkbControlsMask ctrls (1L<<0)
-XkbServerMapMask server (1L<<1)
-XkbIClientMapMask map (1L<<2)
-XkbIndicatorMapMask indicators (1L<<3)
-XkbNamesMask names (1L<<4)
-XkbCompatMapMask compat (1L<<5)
-XkbGeometryMask geom (1L<<6)
-XkbAllComponentsMask All Fields (0x7f)
-.TE
-.SH DIAGNOSTICS
-.TP 15
-.B BadAlloc
-Unable to allocate storage
-.TP 15
-.B BadMatch
-A compatible version of Xkb was not available in the server or an argument has
-correct type and range, but is otherwise invalid
-.SH "SEE ALSO"
-.BR XkbGetNames (__libmansuffix__),
-.BR XkbSetNames (__libmansuffix__)
+'\" t
+.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the "Software"),
+.\" to deal in the Software without restriction, including without limitation
+.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
+.\" and/or sell copies of the Software, and to permit persons to whom the
+.\" Software is furnished to do so, subject to the following conditions:
+.\"
+.\" The above copyright notice and this permission notice (including the next
+.\" paragraph) shall be included in all copies or substantial portions of the
+.\" Software.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+.\" DEALINGS IN THE SOFTWARE.
+.\"
+.TH XkbGetVirtualMods __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbGetVirtualMods \- Obtain a subset of the virtual modifier bindings (the vmods
+array) in a keyboard description
+.SH SYNOPSIS
+.HP
+.B Status XkbGetVirtualMods
+.BI "(\^Display *" "dpy" "\^,"
+.BI "unsigned int " "which" "\^,"
+.BI "XkbDescPtr " "xkb" "\^);"
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- dpy
+connection to server
+.TP
+.I \- which
+mask indicating virtual modifier bindings to get
+.TP
+.I \- xkb
+Xkb description where results will be placed
+.SH DESCRIPTION
+.LP
+.I XkbGetVirtualMods
+sends a request to the server to obtain the
+.I vmods
+entries for the virtual modifiers specified in the mask,
+.I which,
+and waits for a reply.
+
+Virtual modifiers are named by converting their string name to an X Atom and storing the Atom in the
+.I names.vmods
+array in an XkbDescRec structure. The position of a name Atom in the
+.I names.vmods
+array defines the bit position used to represent the virtual modifier and also the index used when
+accessing virtual modifier information in arrays: the name in the i-th (0 relative) entry of
+.I names.vmods
+is the i-th virtual modifier, represented by the mask (1<<i). Throughout Xkb, various functions have
+a parameter that is a mask representing virtual modifier choices. In each case, the i-th bit (0
+relative) of the mask represents the i-th virtual modifier.
+
+To set the name of a virtual modifier, use
+.I XkbSetNames,
+using XkbVirtualModNamesMask in
+.I which
+and the name in the
+.I xkb
+argument; to retrieve indicator names, use
+.I XkbGetNames.
+
+For each bit set in
+.I which, XkbGetVirtualMods
+updates the corresponding virtual modifier definition in the
+.I server->vmods
+array of
+.I xkb.
+The
+.I xkb
+parameter must be a pointer to a valid Xkb keyboard description. If successful,
+.I XkbGetVirtualMods
+returns Success.
+
+.B Virtual Modifier Names and Masks
+
+Virtual modifiers are named by converting their string name to an X Atom and
+storing the Atom in the
+.I names.vmods
+array in an XkbDescRec structure. The position of a name Atom in the
+.I names.vmods
+array defines the bit position used to represent the virtual modifier and also
+the index used when accessing virtual modifier information in arrays: the name
+in the i-th (0 relative) entry of
+.I names.vmods
+is the i-th virtual modifier, represented by the mask (1<<i). Throughout Xkb,
+various functions have a parameter that is a mask representing virtual modifier
+choices. In each case, the i-th bit (0 relative) of the mask represents the i-th
+virtual modifier.
+
+To set the name of a virtual modifier, use
+.I XkbSetNames,
+using XkbVirtualModNamesMask in
+.I which
+and the name in the
+.I xkb
+argument; to retrieve indicator names, use
+.I XkbGetNames.
+
+If the
+.I server
+map has not been allocated in the
+.I xkb
+parameter,
+.I XkbGetVirtualMods
+allocates and initializes it before obtaining the virtual modifier bindings.
+
+If the server does not have a compatible version of Xkb, or the Xkb extension
+has not been properly initialized,
+.I XkbGetVirtualMods
+returns BadMatch. Any errors in allocation cause
+.I XkbGetVirtualMods
+to return BadAlloc.
+.SH "RETURN VALUES"
+.TP 15
+Success
+The
+.I XkbGetVirtualMods
+function returns Success when it successfully updates the corresponding virtual modifier definition
+in the
+.I server->vmods
+array of
+.I xkb.
+.SH STRUCTURES
+.LP
+The complete description of an Xkb keyboard is given by an XkbDescRec. The
+component
+structures in the XkbDescRec represent the major Xkb components.
+
+.nf
+typedef struct {
+ struct _XDisplay * display; /\(** connection to X server */
+ unsigned short flags; /\(** private to Xkb, do not modify */
+ unsigned short device_spec; /\(** device of interest */
+ KeyCode min_key_code; /\(** minimum keycode for device */
+ KeyCode max_key_code; /\(** maximum keycode for device */
+ XkbControlsPtr ctrls; /\(** controls */
+ XkbServerMapPtr server; /\(** server keymap */
+ XkbClientMapPtr map; /\(** client keymap */
+ XkbIndicatorPtr indicators; /\(** indicator map */
+ XkbNamesPtr names; /\(** names for all components */
+ XkbCompatMapPtr compat; /\(** compatibility map */
+ XkbGeometryPtr geom; /\(** physical geometry of keyboard */
+} XkbDescRec, *XkbDescPtr;
+
+.fi
+The
+.I display
+field points to an X display structure. The
+.I flags
+field is private to the library: modifying
+.I flags
+may yield unpredictable results. The
+.I device_spec
+field specifies the device identifier of the keyboard input device, or XkbUseCoreKeyboard, which
+specifies the core keyboard device. The
+.I min_key_code
+and
+.I max_key_code
+fields specify the least and greatest keycode that can be returned by the keyboard.
+
+Each structure component has a corresponding mask bit that is used in function
+calls to
+indicate that the structure should be manipulated in some manner, such as
+allocating it
+or freeing it. These masks and their relationships to the fields in the
+XkbDescRec are
+shown in Table 1.
+
+.TS
+c s s
+l l l
+l l l.
+Table 1 Mask Bits for XkbDescRec
+_
+Mask Bit XkbDescRec Field Value
+_
+XkbControlsMask ctrls (1L<<0)
+XkbServerMapMask server (1L<<1)
+XkbIClientMapMask map (1L<<2)
+XkbIndicatorMapMask indicators (1L<<3)
+XkbNamesMask names (1L<<4)
+XkbCompatMapMask compat (1L<<5)
+XkbGeometryMask geom (1L<<6)
+XkbAllComponentsMask All Fields (0x7f)
+.TE
+.SH DIAGNOSTICS
+.TP 15
+.B BadAlloc
+Unable to allocate storage
+.TP 15
+.B BadMatch
+A compatible version of Xkb was not available in the server or an argument has
+correct type and range, but is otherwise invalid
+.SH "SEE ALSO"
+.BR XkbGetNames (__libmansuffix__),
+.BR XkbSetNames (__libmansuffix__)
diff --git a/libX11/man/xkb/XkbGetXlibControls.man b/libX11/man/xkb/XkbGetXlibControls.man
index 71872ddd0..95ccb1edb 100644
--- a/libX11/man/xkb/XkbGetXlibControls.man
+++ b/libX11/man/xkb/XkbGetXlibControls.man
@@ -1,61 +1,61 @@
-'\" t
-.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
-.\"
-.\" Permission is hereby granted, free of charge, to any person obtaining a
-.\" copy of this software and associated documentation files (the "Software"),
-.\" to deal in the Software without restriction, including without limitation
-.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
-.\" and/or sell copies of the Software, and to permit persons to whom the
-.\" Software is furnished to do so, subject to the following conditions:
-.\"
-.\" The above copyright notice and this permission notice (including the next
-.\" paragraph) shall be included in all copies or substantial portions of the
-.\" Software.
-.\"
-.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-.\" DEALINGS IN THE SOFTWARE.
-.\"
-.TH XkbGetXlibControls __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
-.SH NAME
-XkbGetXlibControls \- Determines the current state of the Library Controls
-.SH SYNOPSIS
-.HP
-.B unsigned int XkbGetXlibControls
-.BI "(\^Display *" "display" "\^);"
-.if n .ti +5n
-.if t .ti +.5i
-.SH ARGUMENTS
-.TP
-.I \- display
-connection to X server
-.SH DESCRIPTION
-.LP
-.I XkbGetXlibControls
-returns the current state of the Library Controls as a bit mask that is an
-inclusive OR of the control masks from Table 1 for the controls that are
-enabled. For the optional compose processing controls, the fact that a control
-is enabled does not imply that it is actually implemented.
-
-.TS
-c s
-l l
-l l.
-Table 1 Library Control Masks
-_
-Library Control Mask Value
-_
-XkbLC_ForceLatin1Lookup (1 << 0)
-XkbLC_ConsumeLookupMods (1 << 1)
-XkbLC_AlwaysConsumeShiftAndLock (1 << 2)
-XkbLC_IgnoreNewKeyboards (1 << 3)
-XkbLC_ConsumeKeysOnComposeFail (1 << 29)
-XkbLC_ComposeLED (1 << 30)
-XkbLC_BeepOnComposeFail (1 << 31)
-XkbLC_AllControls (0xc0000007)
-.TE
-
+'\" t
+.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the "Software"),
+.\" to deal in the Software without restriction, including without limitation
+.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
+.\" and/or sell copies of the Software, and to permit persons to whom the
+.\" Software is furnished to do so, subject to the following conditions:
+.\"
+.\" The above copyright notice and this permission notice (including the next
+.\" paragraph) shall be included in all copies or substantial portions of the
+.\" Software.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+.\" DEALINGS IN THE SOFTWARE.
+.\"
+.TH XkbGetXlibControls __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbGetXlibControls \- Determines the current state of the Library Controls
+.SH SYNOPSIS
+.HP
+.B unsigned int XkbGetXlibControls
+.BI "(\^Display *" "display" "\^);"
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- display
+connection to X server
+.SH DESCRIPTION
+.LP
+.I XkbGetXlibControls
+returns the current state of the Library Controls as a bit mask that is an
+inclusive OR of the control masks from Table 1 for the controls that are
+enabled. For the optional compose processing controls, the fact that a control
+is enabled does not imply that it is actually implemented.
+
+.TS
+c s
+l l
+l l.
+Table 1 Library Control Masks
+_
+Library Control Mask Value
+_
+XkbLC_ForceLatin1Lookup (1 << 0)
+XkbLC_ConsumeLookupMods (1 << 1)
+XkbLC_AlwaysConsumeShiftAndLock (1 << 2)
+XkbLC_IgnoreNewKeyboards (1 << 3)
+XkbLC_ConsumeKeysOnComposeFail (1 << 29)
+XkbLC_ComposeLED (1 << 30)
+XkbLC_BeepOnComposeFail (1 << 31)
+XkbLC_AllControls (0xc0000007)
+.TE
+
diff --git a/libX11/man/xkb/XkbIgnoreExtension.man b/libX11/man/xkb/XkbIgnoreExtension.man
index fe38e2623..c65e4a93d 100644
--- a/libX11/man/xkb/XkbIgnoreExtension.man
+++ b/libX11/man/xkb/XkbIgnoreExtension.man
@@ -1,79 +1,79 @@
-.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
-.\"
-.\" Permission is hereby granted, free of charge, to any person obtaining a
-.\" copy of this software and associated documentation files (the "Software"),
-.\" to deal in the Software without restriction, including without limitation
-.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
-.\" and/or sell copies of the Software, and to permit persons to whom the
-.\" Software is furnished to do so, subject to the following conditions:
-.\"
-.\" The above copyright notice and this permission notice (including the next
-.\" paragraph) shall be included in all copies or substantial portions of the
-.\" Software.
-.\"
-.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-.\" DEALINGS IN THE SOFTWARE.
-.\"
-.TH XkbIgnoreExtension __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
-.SH NAME
-XkbIgnoreExtension \- Prevents core X library keyboard functions from using the
-X Keyboard Extension
-.SH SYNOPSIS
-.HP
-.B Bool XkbIgnoreExtension
-.BI "(\^Bool *" "ignore" "\^);"
-.if n .ti +5n
-.if t .ti +.5i
-.SH ARGUMENTS
-.TP
-.I ignore
-True means ignore the extension
-.SH DESCRIPTION
-.LP
-If a server supports the Xkb extension, the X library normally implements preXkb
-keyboard functions using the Xkb keyboard description and state. The server Xkb
-keyboard state may differ from the preXkb keyboard state. This difference does
-not affect most clients, but there are exceptions. To allow these clients to
-work properly, you may instruct the extension not to use Xkb functionality.
-
-Call
-.I XkbIgnoreExtension
-to prevent core X library keyboard functions from using
-the X Keyboard Extension. You must call
-.I XkbIgnoreExtension
-before you open a
-server connection; Xkb does not provide a way to enable or disable use of the
-extension once a connection is established.
-
-.I XkbIgnoreExtension
-tells the X library whether to use the X Keyboard Extension
-on any subsequently opened X display connections. If ignore is True, the library
-does not initialize the Xkb extension when it opens a new display. This forces
-the X server to use compatibility mode and communicate with the client using
-only core protocol requests and events. If ignore is False, the library treats
-subsequent calls to
-.I XOpenDisplay
-normally and uses Xkb extension requests,
-events, and state. Do not explicitly use Xkb on a connection for which it is
-disabled.
-.I XkbIgnoreExtension
-returns False if it was unable to apply the ignore
-request.
-.SH "RETURN VALUES"
-.TP 15
-True
-The
-.I XkbIgnoreExtension
-returns True if
-.TP 15
-False
-The
-.I XkbIgnoreExtension
-function returns False if it was unable to apply the ignore request.
-.SH "SEE ALSO"
-.BR XOpenDisplay (__libmansuffix__)
+.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the "Software"),
+.\" to deal in the Software without restriction, including without limitation
+.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
+.\" and/or sell copies of the Software, and to permit persons to whom the
+.\" Software is furnished to do so, subject to the following conditions:
+.\"
+.\" The above copyright notice and this permission notice (including the next
+.\" paragraph) shall be included in all copies or substantial portions of the
+.\" Software.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+.\" DEALINGS IN THE SOFTWARE.
+.\"
+.TH XkbIgnoreExtension __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbIgnoreExtension \- Prevents core X library keyboard functions from using the
+X Keyboard Extension
+.SH SYNOPSIS
+.HP
+.B Bool XkbIgnoreExtension
+.BI "(\^Bool *" "ignore" "\^);"
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I ignore
+True means ignore the extension
+.SH DESCRIPTION
+.LP
+If a server supports the Xkb extension, the X library normally implements preXkb
+keyboard functions using the Xkb keyboard description and state. The server Xkb
+keyboard state may differ from the preXkb keyboard state. This difference does
+not affect most clients, but there are exceptions. To allow these clients to
+work properly, you may instruct the extension not to use Xkb functionality.
+
+Call
+.I XkbIgnoreExtension
+to prevent core X library keyboard functions from using
+the X Keyboard Extension. You must call
+.I XkbIgnoreExtension
+before you open a
+server connection; Xkb does not provide a way to enable or disable use of the
+extension once a connection is established.
+
+.I XkbIgnoreExtension
+tells the X library whether to use the X Keyboard Extension
+on any subsequently opened X display connections. If ignore is True, the library
+does not initialize the Xkb extension when it opens a new display. This forces
+the X server to use compatibility mode and communicate with the client using
+only core protocol requests and events. If ignore is False, the library treats
+subsequent calls to
+.I XOpenDisplay
+normally and uses Xkb extension requests,
+events, and state. Do not explicitly use Xkb on a connection for which it is
+disabled.
+.I XkbIgnoreExtension
+returns False if it was unable to apply the ignore
+request.
+.SH "RETURN VALUES"
+.TP 15
+True
+The
+.I XkbIgnoreExtension
+returns True if
+.TP 15
+False
+The
+.I XkbIgnoreExtension
+function returns False if it was unable to apply the ignore request.
+.SH "SEE ALSO"
+.BR XOpenDisplay (__libmansuffix__)
diff --git a/libX11/man/xkb/XkbInitCanonicalKeyTypes.man b/libX11/man/xkb/XkbInitCanonicalKeyTypes.man
index 696215b14..6925becd8 100644
--- a/libX11/man/xkb/XkbInitCanonicalKeyTypes.man
+++ b/libX11/man/xkb/XkbInitCanonicalKeyTypes.man
@@ -1,84 +1,84 @@
-'\" t
-.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
-.\"
-.\" Permission is hereby granted, free of charge, to any person obtaining a
-.\" copy of this software and associated documentation files (the "Software"),
-.\" to deal in the Software without restriction, including without limitation
-.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
-.\" and/or sell copies of the Software, and to permit persons to whom the
-.\" Software is furnished to do so, subject to the following conditions:
-.\"
-.\" The above copyright notice and this permission notice (including the next
-.\" paragraph) shall be included in all copies or substantial portions of the
-.\" Software.
-.\"
-.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-.\" DEALINGS IN THE SOFTWARE.
-.\"
-.TH XkbInitCanonicalKeyTypes __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
-.SH NAME
-XkbInitCanonicalKeyTypes \- Set the definitions of the canonical key types in a
-client map to their default values
-.SH SYNOPSIS
-.HP
-.B Status XkbInitCanonicalKeyTypes
-.BI "(\^XkbDescPtr " "xkb" "\^,"
-.BI "unsigned int " "which" "\^,"
-.BI "int " "keypadVMod" "\^);"
-.if n .ti +5n
-.if t .ti +.5i
-.SH ARGUMENTS
-.TP
-.I \- xkb
-keyboard description containing client map to initialize
-.TP
-.I \- which
-mask of types to initialize
-.TP
-.I \- keypadVMod
-index of NumLock virtual modifier
-.SH DESCRIPTION
-.LP
-.I XkbInitCanonicalKeyTypes
-initializes the first XkbNumRequiredTypes key types of the keyboard specified by
-the
-.I xkb
-parameter to their default values. The
-.I which
-parameter specifies what canonical key types to initialize and is a bitwise
-inclusive OR of the following masks: XkbOneLevelMask, XkbTwoLevelMask,
-XkbAlphabeticMask, and XkbKeypadMask. Only those canonical types specified by
-the
-.I which
-mask are initialized.
-
-If XkbKeypadMask is set in the
-.I which
-parameter,
-.I XkbInitCanonicalKeyTypes
-looks up the NumLock named virtual modifier to determine which virtual modifier
-to use when initializing the KEYPAD key type. If the NumLock virtual modifier
-does not exist,
-.I XkbInitCanonicalKeyTypes
-creates it.
-
-.I XkbInitCanonicalKeyTypes
-normally returns Success. It returns BadAccess if the Xkb extension has not been
-properly initialized, and BadAccess if the
-xkb parameter is not valid.
-.SH "RETURN VALUES"
-.TP 15
-Success
-The
-.I XkbInitCanonicalKeyTypes
-funtion return Success if the Xkb extension has been properly initialized and
-the xkb parameter is valid.
-.SH DIAGNOSTICS
-.TP 15
-.B BadAccess
-The Xkb extension has not been properly initialized
+'\" t
+.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the "Software"),
+.\" to deal in the Software without restriction, including without limitation
+.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
+.\" and/or sell copies of the Software, and to permit persons to whom the
+.\" Software is furnished to do so, subject to the following conditions:
+.\"
+.\" The above copyright notice and this permission notice (including the next
+.\" paragraph) shall be included in all copies or substantial portions of the
+.\" Software.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+.\" DEALINGS IN THE SOFTWARE.
+.\"
+.TH XkbInitCanonicalKeyTypes __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbInitCanonicalKeyTypes \- Set the definitions of the canonical key types in a
+client map to their default values
+.SH SYNOPSIS
+.HP
+.B Status XkbInitCanonicalKeyTypes
+.BI "(\^XkbDescPtr " "xkb" "\^,"
+.BI "unsigned int " "which" "\^,"
+.BI "int " "keypadVMod" "\^);"
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- xkb
+keyboard description containing client map to initialize
+.TP
+.I \- which
+mask of types to initialize
+.TP
+.I \- keypadVMod
+index of NumLock virtual modifier
+.SH DESCRIPTION
+.LP
+.I XkbInitCanonicalKeyTypes
+initializes the first XkbNumRequiredTypes key types of the keyboard specified by
+the
+.I xkb
+parameter to their default values. The
+.I which
+parameter specifies what canonical key types to initialize and is a bitwise
+inclusive OR of the following masks: XkbOneLevelMask, XkbTwoLevelMask,
+XkbAlphabeticMask, and XkbKeypadMask. Only those canonical types specified by
+the
+.I which
+mask are initialized.
+
+If XkbKeypadMask is set in the
+.I which
+parameter,
+.I XkbInitCanonicalKeyTypes
+looks up the NumLock named virtual modifier to determine which virtual modifier
+to use when initializing the KEYPAD key type. If the NumLock virtual modifier
+does not exist,
+.I XkbInitCanonicalKeyTypes
+creates it.
+
+.I XkbInitCanonicalKeyTypes
+normally returns Success. It returns BadAccess if the Xkb extension has not been
+properly initialized, and BadAccess if the
+xkb parameter is not valid.
+.SH "RETURN VALUES"
+.TP 15
+Success
+The
+.I XkbInitCanonicalKeyTypes
+funtion return Success if the Xkb extension has been properly initialized and
+the xkb parameter is valid.
+.SH DIAGNOSTICS
+.TP 15
+.B BadAccess
+The Xkb extension has not been properly initialized
diff --git a/libX11/man/xkb/XkbKeyAction.man b/libX11/man/xkb/XkbKeyAction.man
index 521a1fc66..3dc76b282 100644
--- a/libX11/man/xkb/XkbKeyAction.man
+++ b/libX11/man/xkb/XkbKeyAction.man
@@ -1,133 +1,133 @@
-.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
-.\"
-.\" Permission is hereby granted, free of charge, to any person obtaining a
-.\" copy of this software and associated documentation files (the "Software"),
-.\" to deal in the Software without restriction, including without limitation
-.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
-.\" and/or sell copies of the Software, and to permit persons to whom the
-.\" Software is furnished to do so, subject to the following conditions:
-.\"
-.\" The above copyright notice and this permission notice (including the next
-.\" paragraph) shall be included in all copies or substantial portions of the
-.\" Software.
-.\"
-.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-.\" DEALINGS IN THE SOFTWARE.
-.\"
-.TH XkbKeyAction __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
-.SH NAME
-XkbKeyAction \- Returns the key action
-.SH SYNOPSIS
-.HP
-.B XkbAction XkbKeyAction
-.BI "(\^XkbDescPtr " "xkb" "\^,"
-.BI "KeyCode " "keycode" "\^,"
-.BI "int " "idx" "\^);"
-.if n .ti +5n
-.if t .ti +.5i
-.SH ARGUMENTS
-.TP
-.I \- xkb
-Xkb description of interest
-.TP
-.I \- keycode
-keycode of interest
-.TP
-.I \- idx
-index for group and shift level
-.SH DESCRIPTION
-.LP
-A key action defines the effect key presses and releases have on the internal
-state of the server. For
-example, the expected key action associated with pressing the Shift key is to
-set the Shift modifier.
-There is zero or one key action associated with each keysym bound to each key.
-
-Just as the entire list of key symbols for the keyboard mapping is held in the
-.I syms
-field of the client map, the entire list of key actions for the keyboard mapping
-is held in the
-.I acts
-array of the server map. The total size of
-.I acts
-is specified by
-.I size_acts,
-and the number of entries is specified by
-.I num_acts.
-
-The
-.I key_acts
-array, indexed by keycode, describes the actions associated with a key. The
-.I key_acts
-array has
-.I min_key_code
-unused entries at the start to allow direct indexing using a keycode. If a
-.I key_acts
-entry is zero, it means the key does not have any actions associated with it. If
-an entry is not zero,
-the entry represents an index into the
-.I acts
-field of the server map, much as the
-.I offset
-field of a KeySymMapRec structure is an index into the
-.I syms
-field of the client map.
-
-The reason the
-.I acts
-field is a linear list of XkbActions is to reduce the memory consumption
-associated with a keymap.
-Because Xkb allows individual keys to have multiple shift levels and a different
-number of groups per
-key, a single two-dimensional array of KeySyms would potentially be very large
-and sparse. Instead, Xkb
-provides a small two-dimensional array of XkbActions for each key. To store all
-of these individual
-arrays, Xkb concatenates each array together in the
-.I acts
-field of the server map.
-
-The key action structures consist only of fields of type char or unsigned char.
-This is done to
-optimize data transfer when the server sends bytes over the wire. If the fields
-are anything but bytes,
-the server has to sift through all of the actions and swap any nonbyte fields.
-Because they consist of
-nothing but bytes, it can just copy them out.
-
-.I XkbKeyAction
-returns the key action indexed by
-.I idx
-in the two-dimensional array of key actions associated with the key
-corresponding to
-.I keycode.idx
-may be computed from the group and shift level of interest as follows:
-.nf
-
- idx = group_index * key_width + shift_level
-.fi
-.SH STRUCTURES
-.LP
-The KeySymMapRec structure is defined as follows:
-.nf
-
- #define XkbNumKbdGroups 4
- #define XkbMaxKbdGroup (XkbNumKbdGroups-1)
-
- typedef struct { /\(** map to keysyms for a single keycode
-*/
- unsigned char kt_index[XkbNumKbdGroups]; /\(** key type index for
-each group */
- unsigned char group_info; /\(** # of groups and out of range group
-handling */
- unsigned char width; /\(** max # of shift levels for key */
- unsigned short offset; /\(** index to keysym table in syms array
-*/
-} XkbSymMapRec, *XkbSymMapPtr;
-
-.fi
+.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the "Software"),
+.\" to deal in the Software without restriction, including without limitation
+.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
+.\" and/or sell copies of the Software, and to permit persons to whom the
+.\" Software is furnished to do so, subject to the following conditions:
+.\"
+.\" The above copyright notice and this permission notice (including the next
+.\" paragraph) shall be included in all copies or substantial portions of the
+.\" Software.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+.\" DEALINGS IN THE SOFTWARE.
+.\"
+.TH XkbKeyAction __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbKeyAction \- Returns the key action
+.SH SYNOPSIS
+.HP
+.B XkbAction XkbKeyAction
+.BI "(\^XkbDescPtr " "xkb" "\^,"
+.BI "KeyCode " "keycode" "\^,"
+.BI "int " "idx" "\^);"
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- xkb
+Xkb description of interest
+.TP
+.I \- keycode
+keycode of interest
+.TP
+.I \- idx
+index for group and shift level
+.SH DESCRIPTION
+.LP
+A key action defines the effect key presses and releases have on the internal
+state of the server. For
+example, the expected key action associated with pressing the Shift key is to
+set the Shift modifier.
+There is zero or one key action associated with each keysym bound to each key.
+
+Just as the entire list of key symbols for the keyboard mapping is held in the
+.I syms
+field of the client map, the entire list of key actions for the keyboard mapping
+is held in the
+.I acts
+array of the server map. The total size of
+.I acts
+is specified by
+.I size_acts,
+and the number of entries is specified by
+.I num_acts.
+
+The
+.I key_acts
+array, indexed by keycode, describes the actions associated with a key. The
+.I key_acts
+array has
+.I min_key_code
+unused entries at the start to allow direct indexing using a keycode. If a
+.I key_acts
+entry is zero, it means the key does not have any actions associated with it. If
+an entry is not zero,
+the entry represents an index into the
+.I acts
+field of the server map, much as the
+.I offset
+field of a KeySymMapRec structure is an index into the
+.I syms
+field of the client map.
+
+The reason the
+.I acts
+field is a linear list of XkbActions is to reduce the memory consumption
+associated with a keymap.
+Because Xkb allows individual keys to have multiple shift levels and a different
+number of groups per
+key, a single two-dimensional array of KeySyms would potentially be very large
+and sparse. Instead, Xkb
+provides a small two-dimensional array of XkbActions for each key. To store all
+of these individual
+arrays, Xkb concatenates each array together in the
+.I acts
+field of the server map.
+
+The key action structures consist only of fields of type char or unsigned char.
+This is done to
+optimize data transfer when the server sends bytes over the wire. If the fields
+are anything but bytes,
+the server has to sift through all of the actions and swap any nonbyte fields.
+Because they consist of
+nothing but bytes, it can just copy them out.
+
+.I XkbKeyAction
+returns the key action indexed by
+.I idx
+in the two-dimensional array of key actions associated with the key
+corresponding to
+.I keycode.idx
+may be computed from the group and shift level of interest as follows:
+.nf
+
+ idx = group_index * key_width + shift_level
+.fi
+.SH STRUCTURES
+.LP
+The KeySymMapRec structure is defined as follows:
+.nf
+
+ #define XkbNumKbdGroups 4
+ #define XkbMaxKbdGroup (XkbNumKbdGroups-1)
+
+ typedef struct { /\(** map to keysyms for a single keycode
+*/
+ unsigned char kt_index[XkbNumKbdGroups]; /\(** key type index for
+each group */
+ unsigned char group_info; /\(** # of groups and out of range group
+handling */
+ unsigned char width; /\(** max # of shift levels for key */
+ unsigned short offset; /\(** index to keysym table in syms array
+*/
+} XkbSymMapRec, *XkbSymMapPtr;
+
+.fi
diff --git a/libX11/man/xkb/XkbKeyActionEntry.man b/libX11/man/xkb/XkbKeyActionEntry.man
index 2ac4cf458..d8da89be9 100644
--- a/libX11/man/xkb/XkbKeyActionEntry.man
+++ b/libX11/man/xkb/XkbKeyActionEntry.man
@@ -1,137 +1,137 @@
-.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
-.\"
-.\" Permission is hereby granted, free of charge, to any person obtaining a
-.\" copy of this software and associated documentation files (the "Software"),
-.\" to deal in the Software without restriction, including without limitation
-.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
-.\" and/or sell copies of the Software, and to permit persons to whom the
-.\" Software is furnished to do so, subject to the following conditions:
-.\"
-.\" The above copyright notice and this permission notice (including the next
-.\" paragraph) shall be included in all copies or substantial portions of the
-.\" Software.
-.\"
-.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-.\" DEALINGS IN THE SOFTWARE.
-.\"
-.TH XkbKeyActionEntry __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
-.SH NAME
-XkbKeyActionEntry \- Returns a pointer to the key action corresponding to
-group grp and shift level lvl from the two-dimensional table of key actions
-associated with the key corresponding to
-keycode
-.SH SYNOPSIS
-.HP
-.B XkbAction * XkbKeyActionEntry
-.BI "(\^XkbDescPtr " "xkb" "\^,"
-.BI "KeyCode " "keycode" "\^,"
-.BI "int " "shift" "\^,"
-.BI "int " "grp" "\^);"
-.if n .ti +5n
-.if t .ti +.5i
-.SH ARGUMENTS
-.TP
-.I \- xkb
-Xkb description of interest
-.TP
-.I \- keycode
-keycode of interest
-.TP
-.I \- shift
-shift level within group
-.TP
-.I \- grp
-group index for group of interest
-.SH DESCRIPTION
-.LP
-A key action defines the effect key presses and releases have on the internal
-state of the server. For example,
-the expected key action associated with pressing the Shift key is to set the
-Shift modifier. There is zero or one
-key action associated with each keysym bound to each key.
-
-Just as the entire list of key symbols for the keyboard mapping is held in the
-.I syms
-field of the client map, the entire list of key actions for the keyboard mapping
-is held in the
-.I acts
-array of the server map. The total size of
-.I acts
-is specified by
-.I size_acts,
-and the number of entries is specified by
-.I num_acts.
-
-The
-.I key_acts
-array, indexed by keycode, describes the actions associated with a key. The
-.I key_acts
-array has
-.I min_key_code
-unused entries at the start to allow direct indexing using a keycode. If a
-.I key_acts
-entry is zero, it means the key does not have any actions associated with it. If
-an entry is not zero, the entry
-represents an index into the
-.I acts
-field of the server map, much as the
-.I offset
-field of a KeySymMapRec structure is an index into the
-.I syms
-field of the client map.
-
-The reason the
-.I acts
-field is a linear list of XkbActions is to reduce the memory consumption
-associated with a keymap. Because Xkb
-allows individual keys to have multiple shift levels and a different number of
-groups per key, a single
-two-dimensional array of KeySyms would potentially be very large and sparse.
-Instead, Xkb provides a small
-two-dimensional array of XkbActions for each key. To store all of these
-individual arrays, Xkb concatenates each
-array together in the
-.I acts
-field of the server map.
-
-The key action structures consist only of fields of type char or unsigned char.
-This is done to optimize data
-transfer when the server sends bytes over the wire. If the fields are anything
-but bytes, the server has to sift
-through all of the actions and swap any nonbyte fields. Because they consist of
-nothing but bytes, it can just
-copy them out.
-
-.I XkbKeyActionEntry
-returns the key action corresponding to group
-.I grp
-and shift level
-.I lvl
-from the two-dimensional table of key actions associated with the key
-corresponding to
-.I keycode.
-.SH STRUCTURES
-.LP
-The KeySymMapRec structure is defined as follows:
-.nf
-
- #define XkbNumKbdGroups 4
- #define XkbMaxKbdGroup (XkbNumKbdGroups-1)
-
- typedef struct { /\(** map to keysyms for a single keycode
-*/
- unsigned char kt_index[XkbNumKbdGroups]; /\(** key type index for
-each group */
- unsigned char group_info; /\(** # of groups and out of range group
-handling */
- unsigned char width; /\(** max # of shift levels for key */
- unsigned short offset; /\(** index to keysym table in syms array
-*/
-} XkbSymMapRec, *XkbSymMapPtr;
-
-.fi
+.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the "Software"),
+.\" to deal in the Software without restriction, including without limitation
+.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
+.\" and/or sell copies of the Software, and to permit persons to whom the
+.\" Software is furnished to do so, subject to the following conditions:
+.\"
+.\" The above copyright notice and this permission notice (including the next
+.\" paragraph) shall be included in all copies or substantial portions of the
+.\" Software.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+.\" DEALINGS IN THE SOFTWARE.
+.\"
+.TH XkbKeyActionEntry __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbKeyActionEntry \- Returns a pointer to the key action corresponding to
+group grp and shift level lvl from the two-dimensional table of key actions
+associated with the key corresponding to
+keycode
+.SH SYNOPSIS
+.HP
+.B XkbAction * XkbKeyActionEntry
+.BI "(\^XkbDescPtr " "xkb" "\^,"
+.BI "KeyCode " "keycode" "\^,"
+.BI "int " "shift" "\^,"
+.BI "int " "grp" "\^);"
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- xkb
+Xkb description of interest
+.TP
+.I \- keycode
+keycode of interest
+.TP
+.I \- shift
+shift level within group
+.TP
+.I \- grp
+group index for group of interest
+.SH DESCRIPTION
+.LP
+A key action defines the effect key presses and releases have on the internal
+state of the server. For example,
+the expected key action associated with pressing the Shift key is to set the
+Shift modifier. There is zero or one
+key action associated with each keysym bound to each key.
+
+Just as the entire list of key symbols for the keyboard mapping is held in the
+.I syms
+field of the client map, the entire list of key actions for the keyboard mapping
+is held in the
+.I acts
+array of the server map. The total size of
+.I acts
+is specified by
+.I size_acts,
+and the number of entries is specified by
+.I num_acts.
+
+The
+.I key_acts
+array, indexed by keycode, describes the actions associated with a key. The
+.I key_acts
+array has
+.I min_key_code
+unused entries at the start to allow direct indexing using a keycode. If a
+.I key_acts
+entry is zero, it means the key does not have any actions associated with it. If
+an entry is not zero, the entry
+represents an index into the
+.I acts
+field of the server map, much as the
+.I offset
+field of a KeySymMapRec structure is an index into the
+.I syms
+field of the client map.
+
+The reason the
+.I acts
+field is a linear list of XkbActions is to reduce the memory consumption
+associated with a keymap. Because Xkb
+allows individual keys to have multiple shift levels and a different number of
+groups per key, a single
+two-dimensional array of KeySyms would potentially be very large and sparse.
+Instead, Xkb provides a small
+two-dimensional array of XkbActions for each key. To store all of these
+individual arrays, Xkb concatenates each
+array together in the
+.I acts
+field of the server map.
+
+The key action structures consist only of fields of type char or unsigned char.
+This is done to optimize data
+transfer when the server sends bytes over the wire. If the fields are anything
+but bytes, the server has to sift
+through all of the actions and swap any nonbyte fields. Because they consist of
+nothing but bytes, it can just
+copy them out.
+
+.I XkbKeyActionEntry
+returns the key action corresponding to group
+.I grp
+and shift level
+.I lvl
+from the two-dimensional table of key actions associated with the key
+corresponding to
+.I keycode.
+.SH STRUCTURES
+.LP
+The KeySymMapRec structure is defined as follows:
+.nf
+
+ #define XkbNumKbdGroups 4
+ #define XkbMaxKbdGroup (XkbNumKbdGroups-1)
+
+ typedef struct { /\(** map to keysyms for a single keycode
+*/
+ unsigned char kt_index[XkbNumKbdGroups]; /\(** key type index for
+each group */
+ unsigned char group_info; /\(** # of groups and out of range group
+handling */
+ unsigned char width; /\(** max # of shift levels for key */
+ unsigned short offset; /\(** index to keysym table in syms array
+*/
+} XkbSymMapRec, *XkbSymMapPtr;
+
+.fi
diff --git a/libX11/man/xkb/XkbKeyActionsPtr.man b/libX11/man/xkb/XkbKeyActionsPtr.man
index 55fc88656..56b1403a0 100644
--- a/libX11/man/xkb/XkbKeyActionsPtr.man
+++ b/libX11/man/xkb/XkbKeyActionsPtr.man
@@ -1,134 +1,134 @@
-'\" t
-.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
-.\"
-.\" Permission is hereby granted, free of charge, to any person obtaining a
-.\" copy of this software and associated documentation files (the "Software"),
-.\" to deal in the Software without restriction, including without limitation
-.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
-.\" and/or sell copies of the Software, and to permit persons to whom the
-.\" Software is furnished to do so, subject to the following conditions:
-.\"
-.\" The above copyright notice and this permission notice (including the next
-.\" paragraph) shall be included in all copies or substantial portions of the
-.\" Software.
-.\"
-.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-.\" DEALINGS IN THE SOFTWARE.
-.\"
-.TH XkbKeyActionsPtr __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
-.SH NAME
-XkbKeyActionsPtr \- Returns a pointer to the two-dimensional array of key
-actions associated with
-the key corresponding to keycode
-.SH SYNOPSIS
-.HP
-.B XkbKeyActionPtr XkbKeyActionsPtr
-.BI "(\^XkbDescPtr " "xkb" "\^,"
-.BI "KeyCode " "keycode" "\^);"
-.if n .ti +5n
-.if t .ti +.5i
-.SH ARGUMENTS
-.TP
-.I \- xkb
-Xkb description of interest
-.TP
-.I \- keycode
-keycode of interest
-.SH DESCRIPTION
-.LP
-A key action defines the effect key presses and releases have on the internal
-state of the server.
-For example, the expected key action associated with pressing the Shift key is
-to set the Shift
-modifier. There is zero or one key action associated with each keysym bound to
-each key.
-
-Just as the entire list of key symbols for the keyboard mapping is held in the
-.I syms
-field of the client map, the entire list of key actions for the keyboard mapping
-is held in the
-.I acts
-array of the server map. The total size of
-.I acts
-is specified by
-.I size_acts,
-and the number of entries is specified by
-.I num_acts.
-
-The
-.I key_acts
-array, indexed by keycode, describes the actions associated with a key. The
-.I key_acts
-array has
-.I min_key_code
-unused entries at the start to allow direct indexing using a keycode. If a
-.I key_acts
-entry is zero, it means the key does not have any actions associated with it. If
-an entry is not
-zero, the entry represents an index into the
-.I acts
-field of the server map, much as the
-.I offset
-field of a KeySymMapRec structure is an index into the
-.I syms
-field of the client map.
-
-The reason the
-.I acts
-field is a linear list of XkbActions is to reduce the memory consumption
-associated with a keymap.
-Because Xkb allows individual keys to have multiple shift levels and a different
-number of groups per
-key, a single two-dimensional array of KeySyms would potentially be very large
-and sparse. Instead,
-Xkb provides a small two-dimensional array of XkbActions for each key. To store
-all of these
-individual arrays, Xkb concatenates each array together in the
-.I acts
-field of the server map.
-
-The key action structures consist only of fields of type char or unsigned char.
-This is done to
-optimize data transfer when the server sends bytes over the wire. If the fields
-are anything but
-bytes, the server has to sift through all of the actions and swap any nonbyte
-fields. Because they
-consist of nothing but bytes, it can just copy them out.
-
-.I XkbKeyActionsPtr
-returns a pointer to the two-dimensional array of key actions associated with
-the key corresponding
-to
-.I keycode.
-Use
-.I XkbKeyActionsPtr
-only if the key actually has some actions associated with it, that is,
-.I XkbKeyNumActions
-(xkb, keycode) returns something greater than zero.
-.SH STRUCTURES
-.LP
-The KeySymMapRec structure is defined as follows:
-.nf
-
- #define XkbNumKbdGroups 4
- #define XkbMaxKbdGroup (XkbNumKbdGroups-1)
-
- typedef struct { /\(** map to keysyms for a single keycode
-*/
- unsigned char kt_index[XkbNumKbdGroups]; /\(** key type index for
-each group */
- unsigned char group_info; /\(** # of groups and out of range group
-handling */
- unsigned char width; /\(** max # of shift levels for key */
- unsigned short offset; /\(** index to keysym table in syms array
-*/
-} XkbSymMapRec, *XkbSymMapPtr;
-
-.fi
-.SH "SEE ALSO"
-.BR XkbKeyNumActions (__libmansuffix__)
+'\" t
+.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the "Software"),
+.\" to deal in the Software without restriction, including without limitation
+.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
+.\" and/or sell copies of the Software, and to permit persons to whom the
+.\" Software is furnished to do so, subject to the following conditions:
+.\"
+.\" The above copyright notice and this permission notice (including the next
+.\" paragraph) shall be included in all copies or substantial portions of the
+.\" Software.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+.\" DEALINGS IN THE SOFTWARE.
+.\"
+.TH XkbKeyActionsPtr __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbKeyActionsPtr \- Returns a pointer to the two-dimensional array of key
+actions associated with
+the key corresponding to keycode
+.SH SYNOPSIS
+.HP
+.B XkbKeyActionPtr XkbKeyActionsPtr
+.BI "(\^XkbDescPtr " "xkb" "\^,"
+.BI "KeyCode " "keycode" "\^);"
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- xkb
+Xkb description of interest
+.TP
+.I \- keycode
+keycode of interest
+.SH DESCRIPTION
+.LP
+A key action defines the effect key presses and releases have on the internal
+state of the server.
+For example, the expected key action associated with pressing the Shift key is
+to set the Shift
+modifier. There is zero or one key action associated with each keysym bound to
+each key.
+
+Just as the entire list of key symbols for the keyboard mapping is held in the
+.I syms
+field of the client map, the entire list of key actions for the keyboard mapping
+is held in the
+.I acts
+array of the server map. The total size of
+.I acts
+is specified by
+.I size_acts,
+and the number of entries is specified by
+.I num_acts.
+
+The
+.I key_acts
+array, indexed by keycode, describes the actions associated with a key. The
+.I key_acts
+array has
+.I min_key_code
+unused entries at the start to allow direct indexing using a keycode. If a
+.I key_acts
+entry is zero, it means the key does not have any actions associated with it. If
+an entry is not
+zero, the entry represents an index into the
+.I acts
+field of the server map, much as the
+.I offset
+field of a KeySymMapRec structure is an index into the
+.I syms
+field of the client map.
+
+The reason the
+.I acts
+field is a linear list of XkbActions is to reduce the memory consumption
+associated with a keymap.
+Because Xkb allows individual keys to have multiple shift levels and a different
+number of groups per
+key, a single two-dimensional array of KeySyms would potentially be very large
+and sparse. Instead,
+Xkb provides a small two-dimensional array of XkbActions for each key. To store
+all of these
+individual arrays, Xkb concatenates each array together in the
+.I acts
+field of the server map.
+
+The key action structures consist only of fields of type char or unsigned char.
+This is done to
+optimize data transfer when the server sends bytes over the wire. If the fields
+are anything but
+bytes, the server has to sift through all of the actions and swap any nonbyte
+fields. Because they
+consist of nothing but bytes, it can just copy them out.
+
+.I XkbKeyActionsPtr
+returns a pointer to the two-dimensional array of key actions associated with
+the key corresponding
+to
+.I keycode.
+Use
+.I XkbKeyActionsPtr
+only if the key actually has some actions associated with it, that is,
+.I XkbKeyNumActions
+(xkb, keycode) returns something greater than zero.
+.SH STRUCTURES
+.LP
+The KeySymMapRec structure is defined as follows:
+.nf
+
+ #define XkbNumKbdGroups 4
+ #define XkbMaxKbdGroup (XkbNumKbdGroups-1)
+
+ typedef struct { /\(** map to keysyms for a single keycode
+*/
+ unsigned char kt_index[XkbNumKbdGroups]; /\(** key type index for
+each group */
+ unsigned char group_info; /\(** # of groups and out of range group
+handling */
+ unsigned char width; /\(** max # of shift levels for key */
+ unsigned short offset; /\(** index to keysym table in syms array
+*/
+} XkbSymMapRec, *XkbSymMapPtr;
+
+.fi
+.SH "SEE ALSO"
+.BR XkbKeyNumActions (__libmansuffix__)
diff --git a/libX11/man/xkb/XkbKeyGroupInfo.man b/libX11/man/xkb/XkbKeyGroupInfo.man
index b17053a9f..31aebf448 100644
--- a/libX11/man/xkb/XkbKeyGroupInfo.man
+++ b/libX11/man/xkb/XkbKeyGroupInfo.man
@@ -1,198 +1,198 @@
-'\" t
-.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
-.\"
-.\" Permission is hereby granted, free of charge, to any person obtaining a
-.\" copy of this software and associated documentation files (the "Software"),
-.\" to deal in the Software without restriction, including without limitation
-.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
-.\" and/or sell copies of the Software, and to permit persons to whom the
-.\" Software is furnished to do so, subject to the following conditions:
-.\"
-.\" The above copyright notice and this permission notice (including the next
-.\" paragraph) shall be included in all copies or substantial portions of the
-.\" Software.
-.\"
-.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-.\" DEALINGS IN THE SOFTWARE.
-.\"
-.TH XkbKeyGroupInfo __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
-.SH NAME
-XkbKeyGroupInfo \- Returns the number of groups of symbols bound to the key
-corresponding to
-keycode
-.SH SYNOPSIS
-.HP
-.B unsigned char XkbKeyGroupInfo
-.BI "(\^XkbDescPtr " "xkb" "\^,"
-.BI "KeyCode " "keycode" "\^);"
-.if n .ti +5n
-.if t .ti +.5i
-.SH ARGUMENTS
-.TP
-.I \- xkb
-Xkb description of interest
-.TP
-.I \- keycode
-keycode of interest
-.SH DESCRIPTION
-.LP
-The
-.I group_info
-field of an XkbSymMapRec is an encoded value containing the number of groups of
-symbols bound
-to the
-key as well as the specification of the treatment of out-of-range groups. It is
-legal for a
-key to
-have zero groups, in which case it also has zero symbols and all events from
-that key yield
-NoSymbol.
-To obtain the number of groups of symbols bound to the key, use
-.I XkbKeyNumGroups.
-To change the number of groups bound to a key, use
-.I XkbChangeTypesOfKey.
-To obtain a mask that determines the treatment of out-of-range groups, use
-.I XkbKeyGroupInfo
-and
-.I XkbOutOfRangeGroupInfo.
-
-The keyboard controls contain a
-.I groups_wrap
-field specifying the handling of illegal groups on a global basis. That is, when
-the user
-performs an
-action causing the effective group to go out of the legal range, the
-.I groups_wrap
-field specifies how to normalize the effective keyboard group to a group that is
-legal for the
-keyboard as a whole, but there is no guarantee that the normalized group will be
-within the
-range of
-legal groups for any individual key. The per-key
-.I group_info
-field specifies how a key treats a legal effective group if the key does not
-have a type
-specified for
-the group of concern. For example, the Enter key usually has just one group
-defined. If the
-user
-performs an action causing the global keyboard group to change to Group2, the
-.I group_info
-field for the Enter key describes how to handle this situation.
-
-Out-of-range groups for individual keys are mapped to a legal group using the
-same options as
-are used
-for the overall keyboard group. The particular type of mapping used is
-controlled by the bits
-set in
-the
-.I group_info
-flag, as shown in Table 1.
-.bp
-.TS
-c s
-l l
-l l.
-Table 1 group_info Range Normalization
-_
-Bits set in group_info Normalization method
-_
-XkbRedirectIntoRange XkbRedirectIntoRange
-XkbClampIntoRange XkbClampIntoRange
-none of the above XkbWrapIntoRange
-.TE
-
-.I XkbKeyGroupInfo
-returns the group_info field from the XkbSymMapRec structure associated with the
-key corresponding to
-.I keycode.
-.SH STRUCTURES
-.LP
-The KeySymMapRec structure is defined as follows:
-.nf
-
-\&#define XkbNumKbdGroups 4
-\&#define XkbMaxKbdGroup (XkbNumKbdGroups-1)
-
-typedef struct { /\(** map to keysyms for a single keycode */
- unsigned char kt_index[XkbNumKbdGroups]; /\(** key type index for each group */
- unsigned char group_info; /\(** # of groups and out of range group handling */
- unsigned char width; /\(** max # of shift levels for key */
- unsigned short offset; /\(** index to keysym table in syms array */
-} XkbSymMapRec, *XkbSymMapPtr;
-
-.fi
-
-.nf
-The XkbControlsRec structure is defined as follows:
-
-\&#define XkbMaxLegalKeyCode 255
-\&#define XkbPerKeyBitArraySize ((XkbMaxLegalKeyCode+1)/8)
-
-typedef struct {
- unsigned char mk_dflt_btn; /\(** default button for keyboard driven mouse */
- unsigned char num_groups; /\(** number of keyboard groups */
- unsigned char groups_wrap; /\(** how to wrap out-of-bounds groups */
- XkbModsRec internal; /\(** defines server internal modifiers */
- XkbModsRec ignore_lock; /\(** modifiers to ignore when checking for grab */
- unsigned int enabled_ctrls; /\(** 1 bit => corresponding boolean control enabled */
- unsigned short repeat_delay; /\(** ms delay until first repeat */
- unsigned short repeat_interval; /\(** ms delay between repeats */
- unsigned short slow_keys_delay; /\(** ms minimum time key must be down to be ok */
- unsigned short debounce_delay; /\(** ms delay before key reactivated */
- unsigned short mk_delay; /\(** ms delay to second mouse motion event */
- unsigned short mk_interval; /\(** ms delay between repeat mouse events */
- unsigned short mk_time_to_max; /\(** # intervals until constant mouse move */
- unsigned short mk_max_speed; /\(** multiplier for maximum mouse speed */
- short mk_curve; /\(** determines mouse move curve type */
- unsigned short ax_options; /\(** 1 bit => Access X option enabled */
- unsigned short ax_timeout; /\(** seconds until Access X disabled */
- unsigned short axt_opts_mask; /\(** 1 bit => options to reset on Access X timeout */
- unsigned short axt_opts_values; /\(** 1 bit => turn option on, 0=> off */
- unsigned int axt_ctrls_mask; /\(** which bits in enabled_ctrls to modify */
- unsigned int axt_ctrls_values; /\(** values for new bits in enabled_ctrls */
- unsigned char per_key_repeat[XkbPerKeyBitArraySize]; /\(** per key auto repeat */
-} XkbControlsRec, *XkbControlsPtr;
-.fi
-
-.nf
-The XkbControlsRec structure is defined as follows:
-
-\&#define XkbMaxLegalKeyCode 255
-\&#define XkbPerKeyBitArraySize ((XkbMaxLegalKeyCode+1)/8)
-
-typedef struct {
- unsigned char mk_dflt_btn; /\(** default button for keyboard driven mouse */
- unsigned char num_groups; /\(** number of keyboard groups */
- unsigned char groups_wrap; /\(** how to wrap out-of-bounds groups */
- XkbModsRec internal; /\(** defines server internal modifiers */
- XkbModsRec ignore_lock; /\(** modifiers to ignore when checking for grab */
- unsigned int enabled_ctrls; /\(** 1 bit => corresponding boolean control enabled */
- unsigned short repeat_delay; /\(** ms delay until first repeat */
- unsigned short repeat_interval; /\(** ms delay between repeats */
- unsigned short slow_keys_delay; /\(** ms minimum time key must be down to be ok */
- unsigned short debounce_delay; /\(** ms delay before key reactivated */
- unsigned short mk_delay; /\(** ms delay to second mouse motion event */
- unsigned short mk_interval; /\(** ms delay between repeat mouse events */
- unsigned short mk_time_to_max; /\(** # intervals until constant mouse move */
- unsigned short mk_max_speed; /\(** multiplier for maximum mouse speed */
- short mk_curve; /\(** determines mouse move curve type */
- unsigned short ax_options; /\(** 1 bit => Access X option enabled */
- unsigned short ax_timeout; /\(** seconds until Access X disabled */
- unsigned short axt_opts_mask; /\(** 1 bit => options to reset on Access X timeout */
- unsigned short axt_opts_values; /\(** 1 bit => turn option on, 0=> off */
- unsigned int axt_ctrls_mask; /\(** which bits in enabled_ctrls to modify */
- unsigned int axt_ctrls_values; /\(** values for new bits in enabled_ctrls */
- unsigned char per_key_repeat[XkbPerKeyBitArraySize]; /\(** per key auto repeat */
-} XkbControlsRec, *XkbControlsPtr;
-.fi
-.SH "SEE ALSO"
-.BR XkbChangeTypesOfKey (__libmansuffix__),
-.BR XkbKeyGroupInfo (__libmansuffix__),
-.BR XkbOutOfRangeGroupInfo (__libmansuffix__)
+'\" t
+.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the "Software"),
+.\" to deal in the Software without restriction, including without limitation
+.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
+.\" and/or sell copies of the Software, and to permit persons to whom the
+.\" Software is furnished to do so, subject to the following conditions:
+.\"
+.\" The above copyright notice and this permission notice (including the next
+.\" paragraph) shall be included in all copies or substantial portions of the
+.\" Software.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+.\" DEALINGS IN THE SOFTWARE.
+.\"
+.TH XkbKeyGroupInfo __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbKeyGroupInfo \- Returns the number of groups of symbols bound to the key
+corresponding to
+keycode
+.SH SYNOPSIS
+.HP
+.B unsigned char XkbKeyGroupInfo
+.BI "(\^XkbDescPtr " "xkb" "\^,"
+.BI "KeyCode " "keycode" "\^);"
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- xkb
+Xkb description of interest
+.TP
+.I \- keycode
+keycode of interest
+.SH DESCRIPTION
+.LP
+The
+.I group_info
+field of an XkbSymMapRec is an encoded value containing the number of groups of
+symbols bound
+to the
+key as well as the specification of the treatment of out-of-range groups. It is
+legal for a
+key to
+have zero groups, in which case it also has zero symbols and all events from
+that key yield
+NoSymbol.
+To obtain the number of groups of symbols bound to the key, use
+.I XkbKeyNumGroups.
+To change the number of groups bound to a key, use
+.I XkbChangeTypesOfKey.
+To obtain a mask that determines the treatment of out-of-range groups, use
+.I XkbKeyGroupInfo
+and
+.I XkbOutOfRangeGroupInfo.
+
+The keyboard controls contain a
+.I groups_wrap
+field specifying the handling of illegal groups on a global basis. That is, when
+the user
+performs an
+action causing the effective group to go out of the legal range, the
+.I groups_wrap
+field specifies how to normalize the effective keyboard group to a group that is
+legal for the
+keyboard as a whole, but there is no guarantee that the normalized group will be
+within the
+range of
+legal groups for any individual key. The per-key
+.I group_info
+field specifies how a key treats a legal effective group if the key does not
+have a type
+specified for
+the group of concern. For example, the Enter key usually has just one group
+defined. If the
+user
+performs an action causing the global keyboard group to change to Group2, the
+.I group_info
+field for the Enter key describes how to handle this situation.
+
+Out-of-range groups for individual keys are mapped to a legal group using the
+same options as
+are used
+for the overall keyboard group. The particular type of mapping used is
+controlled by the bits
+set in
+the
+.I group_info
+flag, as shown in Table 1.
+.bp
+.TS
+c s
+l l
+l l.
+Table 1 group_info Range Normalization
+_
+Bits set in group_info Normalization method
+_
+XkbRedirectIntoRange XkbRedirectIntoRange
+XkbClampIntoRange XkbClampIntoRange
+none of the above XkbWrapIntoRange
+.TE
+
+.I XkbKeyGroupInfo
+returns the group_info field from the XkbSymMapRec structure associated with the
+key corresponding to
+.I keycode.
+.SH STRUCTURES
+.LP
+The KeySymMapRec structure is defined as follows:
+.nf
+
+\&#define XkbNumKbdGroups 4
+\&#define XkbMaxKbdGroup (XkbNumKbdGroups-1)
+
+typedef struct { /\(** map to keysyms for a single keycode */
+ unsigned char kt_index[XkbNumKbdGroups]; /\(** key type index for each group */
+ unsigned char group_info; /\(** # of groups and out of range group handling */
+ unsigned char width; /\(** max # of shift levels for key */
+ unsigned short offset; /\(** index to keysym table in syms array */
+} XkbSymMapRec, *XkbSymMapPtr;
+
+.fi
+
+.nf
+The XkbControlsRec structure is defined as follows:
+
+\&#define XkbMaxLegalKeyCode 255
+\&#define XkbPerKeyBitArraySize ((XkbMaxLegalKeyCode+1)/8)
+
+typedef struct {
+ unsigned char mk_dflt_btn; /\(** default button for keyboard driven mouse */
+ unsigned char num_groups; /\(** number of keyboard groups */
+ unsigned char groups_wrap; /\(** how to wrap out-of-bounds groups */
+ XkbModsRec internal; /\(** defines server internal modifiers */
+ XkbModsRec ignore_lock; /\(** modifiers to ignore when checking for grab */
+ unsigned int enabled_ctrls; /\(** 1 bit => corresponding boolean control enabled */
+ unsigned short repeat_delay; /\(** ms delay until first repeat */
+ unsigned short repeat_interval; /\(** ms delay between repeats */
+ unsigned short slow_keys_delay; /\(** ms minimum time key must be down to be ok */
+ unsigned short debounce_delay; /\(** ms delay before key reactivated */
+ unsigned short mk_delay; /\(** ms delay to second mouse motion event */
+ unsigned short mk_interval; /\(** ms delay between repeat mouse events */
+ unsigned short mk_time_to_max; /\(** # intervals until constant mouse move */
+ unsigned short mk_max_speed; /\(** multiplier for maximum mouse speed */
+ short mk_curve; /\(** determines mouse move curve type */
+ unsigned short ax_options; /\(** 1 bit => Access X option enabled */
+ unsigned short ax_timeout; /\(** seconds until Access X disabled */
+ unsigned short axt_opts_mask; /\(** 1 bit => options to reset on Access X timeout */
+ unsigned short axt_opts_values; /\(** 1 bit => turn option on, 0=> off */
+ unsigned int axt_ctrls_mask; /\(** which bits in enabled_ctrls to modify */
+ unsigned int axt_ctrls_values; /\(** values for new bits in enabled_ctrls */
+ unsigned char per_key_repeat[XkbPerKeyBitArraySize]; /\(** per key auto repeat */
+} XkbControlsRec, *XkbControlsPtr;
+.fi
+
+.nf
+The XkbControlsRec structure is defined as follows:
+
+\&#define XkbMaxLegalKeyCode 255
+\&#define XkbPerKeyBitArraySize ((XkbMaxLegalKeyCode+1)/8)
+
+typedef struct {
+ unsigned char mk_dflt_btn; /\(** default button for keyboard driven mouse */
+ unsigned char num_groups; /\(** number of keyboard groups */
+ unsigned char groups_wrap; /\(** how to wrap out-of-bounds groups */
+ XkbModsRec internal; /\(** defines server internal modifiers */
+ XkbModsRec ignore_lock; /\(** modifiers to ignore when checking for grab */
+ unsigned int enabled_ctrls; /\(** 1 bit => corresponding boolean control enabled */
+ unsigned short repeat_delay; /\(** ms delay until first repeat */
+ unsigned short repeat_interval; /\(** ms delay between repeats */
+ unsigned short slow_keys_delay; /\(** ms minimum time key must be down to be ok */
+ unsigned short debounce_delay; /\(** ms delay before key reactivated */
+ unsigned short mk_delay; /\(** ms delay to second mouse motion event */
+ unsigned short mk_interval; /\(** ms delay between repeat mouse events */
+ unsigned short mk_time_to_max; /\(** # intervals until constant mouse move */
+ unsigned short mk_max_speed; /\(** multiplier for maximum mouse speed */
+ short mk_curve; /\(** determines mouse move curve type */
+ unsigned short ax_options; /\(** 1 bit => Access X option enabled */
+ unsigned short ax_timeout; /\(** seconds until Access X disabled */
+ unsigned short axt_opts_mask; /\(** 1 bit => options to reset on Access X timeout */
+ unsigned short axt_opts_values; /\(** 1 bit => turn option on, 0=> off */
+ unsigned int axt_ctrls_mask; /\(** which bits in enabled_ctrls to modify */
+ unsigned int axt_ctrls_values; /\(** values for new bits in enabled_ctrls */
+ unsigned char per_key_repeat[XkbPerKeyBitArraySize]; /\(** per key auto repeat */
+} XkbControlsRec, *XkbControlsPtr;
+.fi
+.SH "SEE ALSO"
+.BR XkbChangeTypesOfKey (__libmansuffix__),
+.BR XkbKeyGroupInfo (__libmansuffix__),
+.BR XkbOutOfRangeGroupInfo (__libmansuffix__)
diff --git a/libX11/man/xkb/XkbKeyGroupWidth.man b/libX11/man/xkb/XkbKeyGroupWidth.man
index 31c2af1ec..8d2f9da48 100644
--- a/libX11/man/xkb/XkbKeyGroupWidth.man
+++ b/libX11/man/xkb/XkbKeyGroupWidth.man
@@ -1,72 +1,72 @@
-'\" t
-.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
-.\"
-.\" Permission is hereby granted, free of charge, to any person obtaining a
-.\" copy of this software and associated documentation files (the "Software"),
-.\" to deal in the Software without restriction, including without limitation
-.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
-.\" and/or sell copies of the Software, and to permit persons to whom the
-.\" Software is furnished to do so, subject to the following conditions:
-.\"
-.\" The above copyright notice and this permission notice (including the next
-.\" paragraph) shall be included in all copies or substantial portions of the
-.\" Software.
-.\"
-.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-.\" DEALINGS IN THE SOFTWARE.
-.\"
-.TH XkbKeyGroupWidth __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
-.SH NAME
-XkbKeyGroupWidth \- Computes the width of the type associated with the group
-.I grp
-for the key corresponding to
-.I keycode
-.SH SYNOPSIS
-.HP
-.B int XkbKeyGroupWidth
-.BI "(\^XkbDescPtr " "xkb" "\^,"
-.BI "KeyCode " "keycode" "\^,"
-.BI "int " "grp" "\^);"
-.if n .ti +5n
-.if t .ti +.5i
-.SH ARGUMENTS
-.TP
-.I \- xkb
-Xkb description of interest
-.TP
-.I \- keycode
-keycode of interest
-.TP
-.I \- grp
-group of interest
-.SH DESCRIPTION
-.LP
-The key width and number of groups associated with a key are used to form a
-small two-dimensional array of KeySyms for a key. This array may be different
-sizes for different keys. The array for a single key is stored as a linear list,
-in row-major order. The arrays for all of the keys are stored in the
-.I syms
-field of the client map. There is one row for each group associated with a key
-and one column for each level. The index corresponding to a given group and
-shift level is computed as:
-.nf
-
- idx = group_index * key_width + shift_level
-
-.fi
-The
-.I offset
-field of the
-.I key_sym_map
-entry for a key is used to access the beginning of the array.
-
-.I XkbKeyGroupWidth
-computes the width of the type associated with the group
-.I grp
-for the key corresponding to
-.I keycode.
+'\" t
+.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the "Software"),
+.\" to deal in the Software without restriction, including without limitation
+.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
+.\" and/or sell copies of the Software, and to permit persons to whom the
+.\" Software is furnished to do so, subject to the following conditions:
+.\"
+.\" The above copyright notice and this permission notice (including the next
+.\" paragraph) shall be included in all copies or substantial portions of the
+.\" Software.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+.\" DEALINGS IN THE SOFTWARE.
+.\"
+.TH XkbKeyGroupWidth __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbKeyGroupWidth \- Computes the width of the type associated with the group
+.I grp
+for the key corresponding to
+.I keycode
+.SH SYNOPSIS
+.HP
+.B int XkbKeyGroupWidth
+.BI "(\^XkbDescPtr " "xkb" "\^,"
+.BI "KeyCode " "keycode" "\^,"
+.BI "int " "grp" "\^);"
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- xkb
+Xkb description of interest
+.TP
+.I \- keycode
+keycode of interest
+.TP
+.I \- grp
+group of interest
+.SH DESCRIPTION
+.LP
+The key width and number of groups associated with a key are used to form a
+small two-dimensional array of KeySyms for a key. This array may be different
+sizes for different keys. The array for a single key is stored as a linear list,
+in row-major order. The arrays for all of the keys are stored in the
+.I syms
+field of the client map. There is one row for each group associated with a key
+and one column for each level. The index corresponding to a given group and
+shift level is computed as:
+.nf
+
+ idx = group_index * key_width + shift_level
+
+.fi
+The
+.I offset
+field of the
+.I key_sym_map
+entry for a key is used to access the beginning of the array.
+
+.I XkbKeyGroupWidth
+computes the width of the type associated with the group
+.I grp
+for the key corresponding to
+.I keycode.
diff --git a/libX11/man/xkb/XkbKeyGroupsWidth.man b/libX11/man/xkb/XkbKeyGroupsWidth.man
index 877da858a..84609d0d3 100644
--- a/libX11/man/xkb/XkbKeyGroupsWidth.man
+++ b/libX11/man/xkb/XkbKeyGroupsWidth.man
@@ -1,64 +1,64 @@
-.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
-.\"
-.\" Permission is hereby granted, free of charge, to any person obtaining a
-.\" copy of this software and associated documentation files (the "Software"),
-.\" to deal in the Software without restriction, including without limitation
-.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
-.\" and/or sell copies of the Software, and to permit persons to whom the
-.\" Software is furnished to do so, subject to the following conditions:
-.\"
-.\" The above copyright notice and this permission notice (including the next
-.\" paragraph) shall be included in all copies or substantial portions of the
-.\" Software.
-.\"
-.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-.\" DEALINGS IN THE SOFTWARE.
-.\"
-.TH XkbKeyGroupsWidth __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
-.SH NAME
-XkbKeyGroupsWidth \- Computes the maximum width associated with the key
-corresponding to
-.I keycode
-.SH SYNOPSIS
-.HP
-.B int XkbKeyGroupsWidth
-.BI "(\^XkbDescPtr " "xkb" "\^,"
-.BI "KeyCode " "keycode" "\^);"
-.if n .ti +5n
-.if t .ti +.5i
-.SH ARGUMENTS
-.TP
-.I \- xkb
-Xkb description of interest
-.TP
-.I \- keycode
-keycode of interest
-.SH DESCRIPTION
-.LP
-The key width and number of groups associated with a key are used to form a
-small two-dimensional array of KeySyms for a key. This array may be different
-sizes for different keys. The array for a single key is stored as a linear list,
-in row-major order. The arrays for all of the keys are stored in the
-.I syms
-field of the client map. There is one row for each group associated with a key
-and one column for each level. The index corresponding to a given group and
-shift level is computed as:
-.nf
-
- idx = group_index * key_width + shift_level
-
-.fi
-The
-.I offset
-field of the
-.I key_sym_map
-entry for a key is used to access the beginning of the array.
-
-.I XkbKeyGroupsWidth
-computes the maximum width associated with the key corresponding to
-.I keycode.
+.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the "Software"),
+.\" to deal in the Software without restriction, including without limitation
+.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
+.\" and/or sell copies of the Software, and to permit persons to whom the
+.\" Software is furnished to do so, subject to the following conditions:
+.\"
+.\" The above copyright notice and this permission notice (including the next
+.\" paragraph) shall be included in all copies or substantial portions of the
+.\" Software.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+.\" DEALINGS IN THE SOFTWARE.
+.\"
+.TH XkbKeyGroupsWidth __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbKeyGroupsWidth \- Computes the maximum width associated with the key
+corresponding to
+.I keycode
+.SH SYNOPSIS
+.HP
+.B int XkbKeyGroupsWidth
+.BI "(\^XkbDescPtr " "xkb" "\^,"
+.BI "KeyCode " "keycode" "\^);"
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- xkb
+Xkb description of interest
+.TP
+.I \- keycode
+keycode of interest
+.SH DESCRIPTION
+.LP
+The key width and number of groups associated with a key are used to form a
+small two-dimensional array of KeySyms for a key. This array may be different
+sizes for different keys. The array for a single key is stored as a linear list,
+in row-major order. The arrays for all of the keys are stored in the
+.I syms
+field of the client map. There is one row for each group associated with a key
+and one column for each level. The index corresponding to a given group and
+shift level is computed as:
+.nf
+
+ idx = group_index * key_width + shift_level
+
+.fi
+The
+.I offset
+field of the
+.I key_sym_map
+entry for a key is used to access the beginning of the array.
+
+.I XkbKeyGroupsWidth
+computes the maximum width associated with the key corresponding to
+.I keycode.
diff --git a/libX11/man/xkb/XkbKeyHasActions.man b/libX11/man/xkb/XkbKeyHasActions.man
index a7fbc1780..6e94184e3 100644
--- a/libX11/man/xkb/XkbKeyHasActions.man
+++ b/libX11/man/xkb/XkbKeyHasActions.man
@@ -1,125 +1,125 @@
-.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
-.\"
-.\" Permission is hereby granted, free of charge, to any person obtaining a
-.\" copy of this software and associated documentation files (the "Software"),
-.\" to deal in the Software without restriction, including without limitation
-.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
-.\" and/or sell copies of the Software, and to permit persons to whom the
-.\" Software is furnished to do so, subject to the following conditions:
-.\"
-.\" The above copyright notice and this permission notice (including the next
-.\" paragraph) shall be included in all copies or substantial portions of the
-.\" Software.
-.\"
-.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-.\" DEALINGS IN THE SOFTWARE.
-.\"
-.TH XkbKeyHasActions __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
-.SH NAME
-XkbKeyHasActions \- Determines if the key corresponding to
-.I keycode
-has any actions associated with it
-.SH SYNOPSIS
-.HP
-.B int XkbKeyHasActions
-.BI "(\^XkbDescPtr " "xkb" "\^,"
-.BI "KeyCode " "keycode" "\^);"
-.if n .ti +5n
-.if t .ti +.5i
-.SH ARGUMENTS
-.TP
-.I \- xkb
-Xkb description of interest
-.TP
-.I \- keycode
-keycode of interest
-.SH DESCRIPTION
-.LP
-A key action defines the effect key presses and releases have on the internal state of the
-server. For example, the expected key action associated with pressing the Shift key is to set
-the Shift modifier. There is zero or one key action associated with each keysym bound to each
-key.
-
-Just as the entire list of key symbols for the keyboard mapping is held in the
-.I syms
-field of the client map, the entire list of key actions for the keyboard mapping is held in the
-.I acts
-array of the server map. The total size of
-.I acts
-is specified by
-.I size_acts,
-and the number of entries is specified by
-.I num_acts.
-
-The
-.I key_acts
-array, indexed by keycode, describes the actions associated with a key. The
-.I key_acts
-array has
-.I min_key_code
-unused entries at the start to allow direct indexing using a keycode. If a
-.I key_acts
-entry is zero, it means the key does not have any actions associated with it. If an entry is not
-zero, the entry represents an index into the
-.I acts
-field of the server map, much as the
-.I offset
-field of a KeySymMapRec structure is an index into the
-.I syms
-field of the client map.
-
-The reason the
-.I acts
-field is a linear list of XkbActions is to reduce the memory consumption associated with a
-keymap. Because Xkb allows individual keys to have multiple shift levels and a different number
-of groups per key, a single two-dimensional array of KeySyms would potentially be very large and
-sparse. Instead, Xkb provides a small two-dimensional array of XkbActions for each key. To store
-all of these individual arrays, Xkb concatenates each array together in the
-.I acts
-field of the server map.
-
-The key action structures consist only of fields of type char or unsigned char. This is done to
-optimize data transfer when the server sends bytes over the wire. If the fields are anything but
-bytes, the server has to sift through all of the actions and swap any nonbyte fields. Because
-they consist of nothing but bytes, it can just copy them out.
-
-.I XkbKeyHasActions
-returns True if the key corresponding to
-.I keycode
-has any actions associated with it; otherwise, it returns False.
-.SH "RETURN VALUES"
-.TP 15
-True
-The
-.I XkbKeyHasActions
-function will return True if the key corresponding to
-.I keycode
-has any actions associated with it.
-.TP 15
-False
-The
-.I XkbKeyHasActions
-function will return False if the key corresponding to
-.I keycode
-does not have any actions associated with it.
-.SH STRUCTURES
-.LP
-The KeySymMapRec structure is defined as follows:
-.nf
-
- #define XkbNumKbdGroups 4
- #define XkbMaxKbdGroup (XkbNumKbdGroups-1)
-
- typedef struct { /\(** map to keysyms for a single keycode */
- unsigned char kt_index[XkbNumKbdGroups]; /\(** key type index for each group */
- unsigned char group_info; /\(** # of groups and out of range group handling */
- unsigned char width; /\(** max # of shift levels for key */
- unsigned short offset; /\(** index to keysym table in syms array */
-} XkbSymMapRec, *XkbSymMapPtr;
-
-.fi
+.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the "Software"),
+.\" to deal in the Software without restriction, including without limitation
+.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
+.\" and/or sell copies of the Software, and to permit persons to whom the
+.\" Software is furnished to do so, subject to the following conditions:
+.\"
+.\" The above copyright notice and this permission notice (including the next
+.\" paragraph) shall be included in all copies or substantial portions of the
+.\" Software.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+.\" DEALINGS IN THE SOFTWARE.
+.\"
+.TH XkbKeyHasActions __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbKeyHasActions \- Determines if the key corresponding to
+.I keycode
+has any actions associated with it
+.SH SYNOPSIS
+.HP
+.B int XkbKeyHasActions
+.BI "(\^XkbDescPtr " "xkb" "\^,"
+.BI "KeyCode " "keycode" "\^);"
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- xkb
+Xkb description of interest
+.TP
+.I \- keycode
+keycode of interest
+.SH DESCRIPTION
+.LP
+A key action defines the effect key presses and releases have on the internal state of the
+server. For example, the expected key action associated with pressing the Shift key is to set
+the Shift modifier. There is zero or one key action associated with each keysym bound to each
+key.
+
+Just as the entire list of key symbols for the keyboard mapping is held in the
+.I syms
+field of the client map, the entire list of key actions for the keyboard mapping is held in the
+.I acts
+array of the server map. The total size of
+.I acts
+is specified by
+.I size_acts,
+and the number of entries is specified by
+.I num_acts.
+
+The
+.I key_acts
+array, indexed by keycode, describes the actions associated with a key. The
+.I key_acts
+array has
+.I min_key_code
+unused entries at the start to allow direct indexing using a keycode. If a
+.I key_acts
+entry is zero, it means the key does not have any actions associated with it. If an entry is not
+zero, the entry represents an index into the
+.I acts
+field of the server map, much as the
+.I offset
+field of a KeySymMapRec structure is an index into the
+.I syms
+field of the client map.
+
+The reason the
+.I acts
+field is a linear list of XkbActions is to reduce the memory consumption associated with a
+keymap. Because Xkb allows individual keys to have multiple shift levels and a different number
+of groups per key, a single two-dimensional array of KeySyms would potentially be very large and
+sparse. Instead, Xkb provides a small two-dimensional array of XkbActions for each key. To store
+all of these individual arrays, Xkb concatenates each array together in the
+.I acts
+field of the server map.
+
+The key action structures consist only of fields of type char or unsigned char. This is done to
+optimize data transfer when the server sends bytes over the wire. If the fields are anything but
+bytes, the server has to sift through all of the actions and swap any nonbyte fields. Because
+they consist of nothing but bytes, it can just copy them out.
+
+.I XkbKeyHasActions
+returns True if the key corresponding to
+.I keycode
+has any actions associated with it; otherwise, it returns False.
+.SH "RETURN VALUES"
+.TP 15
+True
+The
+.I XkbKeyHasActions
+function will return True if the key corresponding to
+.I keycode
+has any actions associated with it.
+.TP 15
+False
+The
+.I XkbKeyHasActions
+function will return False if the key corresponding to
+.I keycode
+does not have any actions associated with it.
+.SH STRUCTURES
+.LP
+The KeySymMapRec structure is defined as follows:
+.nf
+
+ #define XkbNumKbdGroups 4
+ #define XkbMaxKbdGroup (XkbNumKbdGroups-1)
+
+ typedef struct { /\(** map to keysyms for a single keycode */
+ unsigned char kt_index[XkbNumKbdGroups]; /\(** key type index for each group */
+ unsigned char group_info; /\(** # of groups and out of range group handling */
+ unsigned char width; /\(** max # of shift levels for key */
+ unsigned short offset; /\(** index to keysym table in syms array */
+} XkbSymMapRec, *XkbSymMapPtr;
+
+.fi
diff --git a/libX11/man/xkb/XkbKeyNumActions.man b/libX11/man/xkb/XkbKeyNumActions.man
index 6b94a2a51..37dea9ca2 100644
--- a/libX11/man/xkb/XkbKeyNumActions.man
+++ b/libX11/man/xkb/XkbKeyNumActions.man
@@ -1,113 +1,113 @@
-'\" t
-.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
-.\"
-.\" Permission is hereby granted, free of charge, to any person obtaining a
-.\" copy of this software and associated documentation files (the "Software"),
-.\" to deal in the Software without restriction, including without limitation
-.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
-.\" and/or sell copies of the Software, and to permit persons to whom the
-.\" Software is furnished to do so, subject to the following conditions:
-.\"
-.\" The above copyright notice and this permission notice (including the next
-.\" paragraph) shall be included in all copies or substantial portions of the
-.\" Software.
-.\"
-.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-.\" DEALINGS IN THE SOFTWARE.
-.\"
-.TH XkbKeyNumActions __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
-.SH NAME
-XkbKeyNumActions \- Computes the number of actions associated with the key corresponding to
-keycode
-.SH SYNOPSIS
-.HP
-.B int XkbKeyNumActions
-.BI "(\^XkbDescPtr " "xkb" "\^,"
-.BI "KeyCode " "keycode" "\^);"
-.if n .ti +5n
-.if t .ti +.5i
-.SH ARGUMENTS
-.TP
-.I \- xkb
-Xkb description of interest
-.TP
-.I \- keycode
-keycode of interest
-.SH DESCRIPTION
-.LP
-A key action defines the effect key presses and releases have on the internal state of the
-server. For example, the expected key action associated with pressing the Shift key is to set
-the Shift modifier. There is zero or one key action associated with each keysym bound to each
-key.
-
-Just as the entire list of key symbols for the keyboard mapping is held in the
-.I syms
-field of the client map, the entire list of key actions for the keyboard mapping is held in the
-.I acts
-array of the server map. The total size of
-.I acts
-is specified by
-.I size_acts,
-and the number of entries is specified by
-.I num_acts.
-
-The
-.I key_acts
-array, indexed by keycode, describes the actions associated with a key. The
-.I key_acts
-array has
-.I min_key_code
-unused entries at the start to allow direct indexing using a keycode. If a
-.I key_acts
-entry is zero, it means the key does not have any actions associated with it. If an entry is not
-zero, the entry represents an index into the
-.I acts
-field of the server map, much as the
-.I offset
-field of a KeySymMapRec structure is an index into the
-.I syms
-field of the client map.
-
-The reason the
-.I acts
-field is a linear list of XkbActions is to reduce the memory consumption associated with a
-keymap. Because Xkb allows individual keys to have multiple shift levels and a different number
-of groups per key, a single two-dimensional array of KeySyms would potentially be very large and
-sparse. Instead, Xkb provides a small two-dimensional array of XkbActions for each key. To store
-all of these individual arrays, Xkb concatenates each array together in the
-.I acts
-field of the server map.
-
-The key action structures consist only of fields of type char or unsigned char. This is done to
-optimize data transfer when the server sends bytes over the wire. If the fields are anything but
-bytes, the server has to sift through all of the actions and swap any nonbyte fields. Because
-they consist of nothing but bytes, it can just copy them out.
-
-.I XkbKeyNumActions
-computes the number of actions associated with the key corresponding to
-.I keycode.
-This should be the same value as the result of
-.I XkbKeyNumSyms.
-.SH STRUCTURES
-.LP
-The KeySymMapRec structure is defined as follows:
-.nf
-
- #define XkbNumKbdGroups 4
- #define XkbMaxKbdGroup (XkbNumKbdGroups-1)
-
- typedef struct { /\(** map to keysyms for a single keycode */
- unsigned char kt_index[XkbNumKbdGroups]; /\(** key type index for each group */
- unsigned char group_info; /\(** # of groups and out of range group handling */
- unsigned char width; /\(** max # of shift levels for key */
- unsigned short offset; /\(** index to keysym table in syms array */
-} XkbSymMapRec, *XkbSymMapPtr;
-
-.fi
-.SH "SEE ALSO"
-.BR XkbKeyNumSyms (__libmansuffix__)
+'\" t
+.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the "Software"),
+.\" to deal in the Software without restriction, including without limitation
+.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
+.\" and/or sell copies of the Software, and to permit persons to whom the
+.\" Software is furnished to do so, subject to the following conditions:
+.\"
+.\" The above copyright notice and this permission notice (including the next
+.\" paragraph) shall be included in all copies or substantial portions of the
+.\" Software.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+.\" DEALINGS IN THE SOFTWARE.
+.\"
+.TH XkbKeyNumActions __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbKeyNumActions \- Computes the number of actions associated with the key corresponding to
+keycode
+.SH SYNOPSIS
+.HP
+.B int XkbKeyNumActions
+.BI "(\^XkbDescPtr " "xkb" "\^,"
+.BI "KeyCode " "keycode" "\^);"
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- xkb
+Xkb description of interest
+.TP
+.I \- keycode
+keycode of interest
+.SH DESCRIPTION
+.LP
+A key action defines the effect key presses and releases have on the internal state of the
+server. For example, the expected key action associated with pressing the Shift key is to set
+the Shift modifier. There is zero or one key action associated with each keysym bound to each
+key.
+
+Just as the entire list of key symbols for the keyboard mapping is held in the
+.I syms
+field of the client map, the entire list of key actions for the keyboard mapping is held in the
+.I acts
+array of the server map. The total size of
+.I acts
+is specified by
+.I size_acts,
+and the number of entries is specified by
+.I num_acts.
+
+The
+.I key_acts
+array, indexed by keycode, describes the actions associated with a key. The
+.I key_acts
+array has
+.I min_key_code
+unused entries at the start to allow direct indexing using a keycode. If a
+.I key_acts
+entry is zero, it means the key does not have any actions associated with it. If an entry is not
+zero, the entry represents an index into the
+.I acts
+field of the server map, much as the
+.I offset
+field of a KeySymMapRec structure is an index into the
+.I syms
+field of the client map.
+
+The reason the
+.I acts
+field is a linear list of XkbActions is to reduce the memory consumption associated with a
+keymap. Because Xkb allows individual keys to have multiple shift levels and a different number
+of groups per key, a single two-dimensional array of KeySyms would potentially be very large and
+sparse. Instead, Xkb provides a small two-dimensional array of XkbActions for each key. To store
+all of these individual arrays, Xkb concatenates each array together in the
+.I acts
+field of the server map.
+
+The key action structures consist only of fields of type char or unsigned char. This is done to
+optimize data transfer when the server sends bytes over the wire. If the fields are anything but
+bytes, the server has to sift through all of the actions and swap any nonbyte fields. Because
+they consist of nothing but bytes, it can just copy them out.
+
+.I XkbKeyNumActions
+computes the number of actions associated with the key corresponding to
+.I keycode.
+This should be the same value as the result of
+.I XkbKeyNumSyms.
+.SH STRUCTURES
+.LP
+The KeySymMapRec structure is defined as follows:
+.nf
+
+ #define XkbNumKbdGroups 4
+ #define XkbMaxKbdGroup (XkbNumKbdGroups-1)
+
+ typedef struct { /\(** map to keysyms for a single keycode */
+ unsigned char kt_index[XkbNumKbdGroups]; /\(** key type index for each group */
+ unsigned char group_info; /\(** # of groups and out of range group handling */
+ unsigned char width; /\(** max # of shift levels for key */
+ unsigned short offset; /\(** index to keysym table in syms array */
+} XkbSymMapRec, *XkbSymMapPtr;
+
+.fi
+.SH "SEE ALSO"
+.BR XkbKeyNumSyms (__libmansuffix__)
diff --git a/libX11/man/xkb/XkbKeyNumGroups.man b/libX11/man/xkb/XkbKeyNumGroups.man
index 684af07ba..537747335 100644
--- a/libX11/man/xkb/XkbKeyNumGroups.man
+++ b/libX11/man/xkb/XkbKeyNumGroups.man
@@ -1,310 +1,310 @@
-'\" t
-.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
-.\"
-.\" Permission is hereby granted, free of charge, to any person obtaining a
-.\" copy of this software and associated documentation files (the "Software"),
-.\" to deal in the Software without restriction, including without limitation
-.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
-.\" and/or sell copies of the Software, and to permit persons to whom the
-.\" Software is furnished to do so, subject to the following conditions:
-.\"
-.\" The above copyright notice and this permission notice (including the next
-.\" paragraph) shall be included in all copies or substantial portions of the
-.\" Software.
-.\"
-.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-.\" DEALINGS IN THE SOFTWARE.
-.\"
-.TH XkbKeyNumGroups __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
-.SH NAME
-XkbKeyNumGroups \- Returns the number of groups of symbols bound to the key
-corresponding to keycode
-.SH SYNOPSIS
-.HP
-.B int XkbKeyNumGroups
-.BI "(\^XkbDescPtr " "xkb" "\^,"
-.BI "KeyCode " "keycode" "\^);"
-.if n .ti +5n
-.if t .ti +.5i
-.SH ARGUMENTS
-.TP
-.I \- xkb
-Xkb description of interest
-.TP
-.I \- keycode
-keycode of interest
-.SH DESCRIPTION
-.LP
-The
-.I group_info
-field of an XkbSymMapRec is an encoded value containing the number of groups of
-symbols bound to the
-key as well as the specification of the treatment of out-of-range groups. It is
-legal for a key to
-have zero groups, in which case it also has zero symbols and all events from
-that key yield NoSymbol.
-To obtain the number of groups of symbols bound to the key, use
-.I XkbKeyNumGroups.
-To change the number of groups bound to a key, use
-.I XkbChangeTypesOfKey.
-To obtain a mask that determines the treatment of out-of-range groups, use
-.I XkbKeyGroupInfo
-and
-.I XkbOutOfRangeGroupInfo.
-
-The keyboard controls contain a
-.I groups_wrap
-field specifying the handling of illegal groups on a global basis. That is, when
-the user performs an
-action causing the effective group to go out of the legal range, the
-.I groups_wrap
-field specifies how to normalize the effective keyboard group to a group that is
-legal for the
-keyboard as a whole, but there is no guarantee that the normalized group will be
-within the range of
-legal groups for any individual key. The per-key
-.I group_info
-field specifies how a key treats a legal effective group if the key does not
-have a type specified for
-the group of concern. For example, the Enter key usually has just one group
-defined. If the user
-performs an action causing the global keyboard group to change to Group2, the
-.I group_info
-field for the Enter key describes how to handle this situation.
-
-Out-of-range groups for individual keys are mapped to a legal group using the
-same options as are used
-for the overall keyboard group. The particular type of mapping used is
-controlled by the bits set in
-the
-.I group_info
-flag, as shown in Table 1.
-.bp
-.TS
-c s
-l l
-l l.
-Table 1 group_info Range Normalization
-_
-Bits set in group_info Normalization method
-_
-XkbRedirectIntoRange XkbRedirectIntoRange
-XkbClampIntoRange XkbClampIntoRange
-none of the above XkbWrapIntoRange
-.TE
-
-.\"--- Chapter 10
-The Xkb extension is composed of two parts: a server extension, and a
-client-side X library extension.
-This chapter discusses functions used to modify controls effecting the behavior
-of the server portion
-of the Xkb extension. X Library Controls discusses functions used to modify
-controls that affect only
-the behavior of the client portion of the extension; those controls are known as
-Library Controls.
-
-Xkb contains control features that affect the entire keyboard, known as global
-keyboard controls. Some
-of the controls may be selectively enabled and disabled; these controls are
-known as the
-.I Boolean Controls.
-Boolean Controls can be turned on or off under program control and can also be
-automatically set to an
-on or off condition when a client program exits. The remaining controls, known
-as the
-.I Non-Boolean Controls,
-are always active. The XkbControlsRec structure describes the current state of
-most of the global
-controls and the attributes effecting the behavior of each of these Xkb
-features. This chapter
-describes the Xkb controls and how to manipulate them.
-
-There are two possible components for each of the Boolean Controls: attributes
-describing how the
-control should work, and a state describing whether the behavior as a whole is
-enabled or disabled.
-The attributes and state for most of these controls are held in the
-XkbControlsRec structure.
-
-You can manipulate the Xkb controls individually, via convenience functions, or
-as a whole. To treat
-them as a group, modify an XkbControlsRec structure to describe all of the
-changes to be made, and
-then pass that structure and appropriate flags to an Xkb library function, or
-use a
-XkbControlsChangesRec to reduce network traffic. When using a convenience
-function to manipulate one
-control individually, you do not use an XkbControlsRec structure directly.
-
-The Xkb controls are grouped as shown in Table 2.
-
-.TS
-c s s
-l l l
-lw(2i) l l.
-Table 2 Xkb Keyboard Controls
-_
-Type of Control Control Name Boolean Control?
-_
-T{
-Controls for enabling and disabling other controls
-T} EnabledControls No
- AutoReset No
-T{
-Control for bell behavior
-T} AudibleBell Boolean
-T{
-Controls for repeat key behavior
-T} PerKeyRepeat No
- RepeatKeys Boolean
- DetectableAutorepeat Boolean
-T{
-Controls for keyboard overlays
-T} Overlay1 Boolean
- Overlay2 Boolean
-T{
-Controls for using the mouse from the keyboard
-T} MouseKeys Boolean
- MouseKeysAccel Boolean
-T{
-Controls for better keyboard access by
-T} AccessXFeedback Boolean
-T{
-physically impaired persons
-T} AccessXKeys Boolean
- AccessXTimeout Boolean
- BounceKeys Boolean
- SlowKeys Boolean
- StickyKeys Boolean
-T{
-Controls for general keyboard mapping
-T} GroupsWrap No
- IgnoreGroupLock Boolean
- IgnoreLockMods No
- InternalMods No
-.TE
-
-The individual categories and controls are described first, together with
-functions for manipulating
-them.
-.SH STRUCTURES
-.LP
-The KeySymMapRec structure is defined as follows:
-.nf
-
- #define XkbNumKbdGroups 4
- #define XkbMaxKbdGroup (XkbNumKbdGroups-1)
-
- typedef struct { /\(** map to keysyms for a single keycode
-*/
- unsigned char kt_index[XkbNumKbdGroups]; /\(** key type index for
-each group */
- unsigned char group_info; /\(** # of groups and out of range group
-handling */
- unsigned char width; /\(** max # of shift levels for key */
- unsigned short offset; /\(** index to keysym table in syms array
-*/
-} XkbSymMapRec, *XkbSymMapPtr;
-
-.fi
-
-.nf
-The XkbControlsRec structure is defined as follows:
-
- #define XkbMaxLegalKeyCode 255
- #define XkbPerKeyBitArraySize ((XkbMaxLegalKeyCode+1)/8)
-
-
- typedef struct {
- unsigned char mk_dflt_btn; /\(** default button for keyboard driven
-mouse */
- unsigned char num_groups; /\(** number of keyboard groups */
- unsigned char groups_wrap; /\(** how to wrap out-of-bounds groups */
- XkbModsRec internal; /\(** defines server internal modifiers
-*/
- XkbModsRec ignore_lock; /\(** modifiers to ignore when checking
-for grab */
- unsigned int enabled_ctrls; /\(** 1 bit => corresponding boolean
-control enabled */
- unsigned short repeat_delay; /\(** ms delay until first repeat */
- unsigned short repeat_interval; /\(** ms delay between repeats */
- unsigned short slow_keys_delay; /\(** ms minimum time key must be down to
-be ok */
- unsigned short debounce_delay; /\(** ms delay before key reactivated */
- unsigned short mk_delay; /\(** ms delay to second mouse motion
-event */
- unsigned short mk_interval; /\(** ms delay between repeat mouse
-events */
- unsigned short mk_time_to_max; /\(** # intervals until constant mouse
-move */
- unsigned short mk_max_speed; /\(** multiplier for maximum mouse speed
-*/
- short mk_curve; /\(** determines mouse move curve type */
- unsigned short ax_options; /\(** 1 bit => Access X option enabled */
- unsigned short ax_timeout; /\(** seconds until Access X disabled */
- unsigned short axt_opts_mask; /\(** 1 bit => options to reset on Access
-X timeout */
- unsigned short axt_opts_values; /\(** 1 bit => turn option on, 0=> off */
- unsigned int axt_ctrls_mask; /\(** which bits in enabled_ctrls to
-modify */
- unsigned int axt_ctrls_values; /\(** values for new bits in
-enabled_ctrls */
- unsigned char per_key_repeat[XkbPerKeyBitArraySize]; /\(** per key auto
-repeat */
- } XkbControlsRec, *XkbControlsPtr;
-.fi
-
-.nf
-The XkbControlsRec structure is defined as follows:
-
- #define XkbMaxLegalKeyCode 255
- #define XkbPerKeyBitArraySize ((XkbMaxLegalKeyCode+1)/8)
-
-
- typedef struct {
- unsigned char mk_dflt_btn; /\(** default button for keyboard driven
-mouse */
- unsigned char num_groups; /\(** number of keyboard groups */
- unsigned char groups_wrap; /\(** how to wrap out-of-bounds groups */
- XkbModsRec internal; /\(** defines server internal modifiers
-*/
- XkbModsRec ignore_lock; /\(** modifiers to ignore when checking
-for grab */
- unsigned int enabled_ctrls; /\(** 1 bit => corresponding boolean
-control enabled */
- unsigned short repeat_delay; /\(** ms delay until first repeat */
- unsigned short repeat_interval; /\(** ms delay between repeats */
- unsigned short slow_keys_delay; /\(** ms minimum time key must be down to
-be ok */
- unsigned short debounce_delay; /\(** ms delay before key reactivated */
- unsigned short mk_delay; /\(** ms delay to second mouse motion
-event */
- unsigned short mk_interval; /\(** ms delay between repeat mouse
-events */
- unsigned short mk_time_to_max; /\(** # intervals until constant mouse
-move */
- unsigned short mk_max_speed; /\(** multiplier for maximum mouse speed
-*/
- short mk_curve; /\(** determines mouse move curve type */
- unsigned short ax_options; /\(** 1 bit => Access X option enabled */
- unsigned short ax_timeout; /\(** seconds until Access X disabled */
- unsigned short axt_opts_mask; /\(** 1 bit => options to reset on Access
-X timeout */
- unsigned short axt_opts_values; /\(** 1 bit => turn option on, 0=> off */
- unsigned int axt_ctrls_mask; /\(** which bits in enabled_ctrls to
-modify */
- unsigned int axt_ctrls_values; /\(** values for new bits in
-enabled_ctrls */
- unsigned char per_key_repeat[XkbPerKeyBitArraySize]; /\(** per key auto
-repeat */
- } XkbControlsRec, *XkbControlsPtr;
-.fi
-.SH "SEE ALSO"
-.BR XkbChangeTypesOfKey (__libmansuffix__),
-.BR XkbKeyGroupInfo (__libmansuffix__),
-.BR XkbOutOfRangeGroupInfo. (__libmansuffix__)
+'\" t
+.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the "Software"),
+.\" to deal in the Software without restriction, including without limitation
+.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
+.\" and/or sell copies of the Software, and to permit persons to whom the
+.\" Software is furnished to do so, subject to the following conditions:
+.\"
+.\" The above copyright notice and this permission notice (including the next
+.\" paragraph) shall be included in all copies or substantial portions of the
+.\" Software.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+.\" DEALINGS IN THE SOFTWARE.
+.\"
+.TH XkbKeyNumGroups __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbKeyNumGroups \- Returns the number of groups of symbols bound to the key
+corresponding to keycode
+.SH SYNOPSIS
+.HP
+.B int XkbKeyNumGroups
+.BI "(\^XkbDescPtr " "xkb" "\^,"
+.BI "KeyCode " "keycode" "\^);"
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- xkb
+Xkb description of interest
+.TP
+.I \- keycode
+keycode of interest
+.SH DESCRIPTION
+.LP
+The
+.I group_info
+field of an XkbSymMapRec is an encoded value containing the number of groups of
+symbols bound to the
+key as well as the specification of the treatment of out-of-range groups. It is
+legal for a key to
+have zero groups, in which case it also has zero symbols and all events from
+that key yield NoSymbol.
+To obtain the number of groups of symbols bound to the key, use
+.I XkbKeyNumGroups.
+To change the number of groups bound to a key, use
+.I XkbChangeTypesOfKey.
+To obtain a mask that determines the treatment of out-of-range groups, use
+.I XkbKeyGroupInfo
+and
+.I XkbOutOfRangeGroupInfo.
+
+The keyboard controls contain a
+.I groups_wrap
+field specifying the handling of illegal groups on a global basis. That is, when
+the user performs an
+action causing the effective group to go out of the legal range, the
+.I groups_wrap
+field specifies how to normalize the effective keyboard group to a group that is
+legal for the
+keyboard as a whole, but there is no guarantee that the normalized group will be
+within the range of
+legal groups for any individual key. The per-key
+.I group_info
+field specifies how a key treats a legal effective group if the key does not
+have a type specified for
+the group of concern. For example, the Enter key usually has just one group
+defined. If the user
+performs an action causing the global keyboard group to change to Group2, the
+.I group_info
+field for the Enter key describes how to handle this situation.
+
+Out-of-range groups for individual keys are mapped to a legal group using the
+same options as are used
+for the overall keyboard group. The particular type of mapping used is
+controlled by the bits set in
+the
+.I group_info
+flag, as shown in Table 1.
+.bp
+.TS
+c s
+l l
+l l.
+Table 1 group_info Range Normalization
+_
+Bits set in group_info Normalization method
+_
+XkbRedirectIntoRange XkbRedirectIntoRange
+XkbClampIntoRange XkbClampIntoRange
+none of the above XkbWrapIntoRange
+.TE
+
+.\"--- Chapter 10
+The Xkb extension is composed of two parts: a server extension, and a
+client-side X library extension.
+This chapter discusses functions used to modify controls effecting the behavior
+of the server portion
+of the Xkb extension. X Library Controls discusses functions used to modify
+controls that affect only
+the behavior of the client portion of the extension; those controls are known as
+Library Controls.
+
+Xkb contains control features that affect the entire keyboard, known as global
+keyboard controls. Some
+of the controls may be selectively enabled and disabled; these controls are
+known as the
+.I Boolean Controls.
+Boolean Controls can be turned on or off under program control and can also be
+automatically set to an
+on or off condition when a client program exits. The remaining controls, known
+as the
+.I Non-Boolean Controls,
+are always active. The XkbControlsRec structure describes the current state of
+most of the global
+controls and the attributes effecting the behavior of each of these Xkb
+features. This chapter
+describes the Xkb controls and how to manipulate them.
+
+There are two possible components for each of the Boolean Controls: attributes
+describing how the
+control should work, and a state describing whether the behavior as a whole is
+enabled or disabled.
+The attributes and state for most of these controls are held in the
+XkbControlsRec structure.
+
+You can manipulate the Xkb controls individually, via convenience functions, or
+as a whole. To treat
+them as a group, modify an XkbControlsRec structure to describe all of the
+changes to be made, and
+then pass that structure and appropriate flags to an Xkb library function, or
+use a
+XkbControlsChangesRec to reduce network traffic. When using a convenience
+function to manipulate one
+control individually, you do not use an XkbControlsRec structure directly.
+
+The Xkb controls are grouped as shown in Table 2.
+
+.TS
+c s s
+l l l
+lw(2i) l l.
+Table 2 Xkb Keyboard Controls
+_
+Type of Control Control Name Boolean Control?
+_
+T{
+Controls for enabling and disabling other controls
+T} EnabledControls No
+ AutoReset No
+T{
+Control for bell behavior
+T} AudibleBell Boolean
+T{
+Controls for repeat key behavior
+T} PerKeyRepeat No
+ RepeatKeys Boolean
+ DetectableAutorepeat Boolean
+T{
+Controls for keyboard overlays
+T} Overlay1 Boolean
+ Overlay2 Boolean
+T{
+Controls for using the mouse from the keyboard
+T} MouseKeys Boolean
+ MouseKeysAccel Boolean
+T{
+Controls for better keyboard access by
+T} AccessXFeedback Boolean
+T{
+physically impaired persons
+T} AccessXKeys Boolean
+ AccessXTimeout Boolean
+ BounceKeys Boolean
+ SlowKeys Boolean
+ StickyKeys Boolean
+T{
+Controls for general keyboard mapping
+T} GroupsWrap No
+ IgnoreGroupLock Boolean
+ IgnoreLockMods No
+ InternalMods No
+.TE
+
+The individual categories and controls are described first, together with
+functions for manipulating
+them.
+.SH STRUCTURES
+.LP
+The KeySymMapRec structure is defined as follows:
+.nf
+
+ #define XkbNumKbdGroups 4
+ #define XkbMaxKbdGroup (XkbNumKbdGroups-1)
+
+ typedef struct { /\(** map to keysyms for a single keycode
+*/
+ unsigned char kt_index[XkbNumKbdGroups]; /\(** key type index for
+each group */
+ unsigned char group_info; /\(** # of groups and out of range group
+handling */
+ unsigned char width; /\(** max # of shift levels for key */
+ unsigned short offset; /\(** index to keysym table in syms array
+*/
+} XkbSymMapRec, *XkbSymMapPtr;
+
+.fi
+
+.nf
+The XkbControlsRec structure is defined as follows:
+
+ #define XkbMaxLegalKeyCode 255
+ #define XkbPerKeyBitArraySize ((XkbMaxLegalKeyCode+1)/8)
+
+
+ typedef struct {
+ unsigned char mk_dflt_btn; /\(** default button for keyboard driven
+mouse */
+ unsigned char num_groups; /\(** number of keyboard groups */
+ unsigned char groups_wrap; /\(** how to wrap out-of-bounds groups */
+ XkbModsRec internal; /\(** defines server internal modifiers
+*/
+ XkbModsRec ignore_lock; /\(** modifiers to ignore when checking
+for grab */
+ unsigned int enabled_ctrls; /\(** 1 bit => corresponding boolean
+control enabled */
+ unsigned short repeat_delay; /\(** ms delay until first repeat */
+ unsigned short repeat_interval; /\(** ms delay between repeats */
+ unsigned short slow_keys_delay; /\(** ms minimum time key must be down to
+be ok */
+ unsigned short debounce_delay; /\(** ms delay before key reactivated */
+ unsigned short mk_delay; /\(** ms delay to second mouse motion
+event */
+ unsigned short mk_interval; /\(** ms delay between repeat mouse
+events */
+ unsigned short mk_time_to_max; /\(** # intervals until constant mouse
+move */
+ unsigned short mk_max_speed; /\(** multiplier for maximum mouse speed
+*/
+ short mk_curve; /\(** determines mouse move curve type */
+ unsigned short ax_options; /\(** 1 bit => Access X option enabled */
+ unsigned short ax_timeout; /\(** seconds until Access X disabled */
+ unsigned short axt_opts_mask; /\(** 1 bit => options to reset on Access
+X timeout */
+ unsigned short axt_opts_values; /\(** 1 bit => turn option on, 0=> off */
+ unsigned int axt_ctrls_mask; /\(** which bits in enabled_ctrls to
+modify */
+ unsigned int axt_ctrls_values; /\(** values for new bits in
+enabled_ctrls */
+ unsigned char per_key_repeat[XkbPerKeyBitArraySize]; /\(** per key auto
+repeat */
+ } XkbControlsRec, *XkbControlsPtr;
+.fi
+
+.nf
+The XkbControlsRec structure is defined as follows:
+
+ #define XkbMaxLegalKeyCode 255
+ #define XkbPerKeyBitArraySize ((XkbMaxLegalKeyCode+1)/8)
+
+
+ typedef struct {
+ unsigned char mk_dflt_btn; /\(** default button for keyboard driven
+mouse */
+ unsigned char num_groups; /\(** number of keyboard groups */
+ unsigned char groups_wrap; /\(** how to wrap out-of-bounds groups */
+ XkbModsRec internal; /\(** defines server internal modifiers
+*/
+ XkbModsRec ignore_lock; /\(** modifiers to ignore when checking
+for grab */
+ unsigned int enabled_ctrls; /\(** 1 bit => corresponding boolean
+control enabled */
+ unsigned short repeat_delay; /\(** ms delay until first repeat */
+ unsigned short repeat_interval; /\(** ms delay between repeats */
+ unsigned short slow_keys_delay; /\(** ms minimum time key must be down to
+be ok */
+ unsigned short debounce_delay; /\(** ms delay before key reactivated */
+ unsigned short mk_delay; /\(** ms delay to second mouse motion
+event */
+ unsigned short mk_interval; /\(** ms delay between repeat mouse
+events */
+ unsigned short mk_time_to_max; /\(** # intervals until constant mouse
+move */
+ unsigned short mk_max_speed; /\(** multiplier for maximum mouse speed
+*/
+ short mk_curve; /\(** determines mouse move curve type */
+ unsigned short ax_options; /\(** 1 bit => Access X option enabled */
+ unsigned short ax_timeout; /\(** seconds until Access X disabled */
+ unsigned short axt_opts_mask; /\(** 1 bit => options to reset on Access
+X timeout */
+ unsigned short axt_opts_values; /\(** 1 bit => turn option on, 0=> off */
+ unsigned int axt_ctrls_mask; /\(** which bits in enabled_ctrls to
+modify */
+ unsigned int axt_ctrls_values; /\(** values for new bits in
+enabled_ctrls */
+ unsigned char per_key_repeat[XkbPerKeyBitArraySize]; /\(** per key auto
+repeat */
+ } XkbControlsRec, *XkbControlsPtr;
+.fi
+.SH "SEE ALSO"
+.BR XkbChangeTypesOfKey (__libmansuffix__),
+.BR XkbKeyGroupInfo (__libmansuffix__),
+.BR XkbOutOfRangeGroupInfo. (__libmansuffix__)
diff --git a/libX11/man/xkb/XkbKeyNumSyms.man b/libX11/man/xkb/XkbKeyNumSyms.man
index e754f51a9..74b481270 100644
--- a/libX11/man/xkb/XkbKeyNumSyms.man
+++ b/libX11/man/xkb/XkbKeyNumSyms.man
@@ -1,65 +1,65 @@
-'\" t
-.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
-.\"
-.\" Permission is hereby granted, free of charge, to any person obtaining a
-.\" copy of this software and associated documentation files (the "Software"),
-.\" to deal in the Software without restriction, including without limitation
-.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
-.\" and/or sell copies of the Software, and to permit persons to whom the
-.\" Software is furnished to do so, subject to the following conditions:
-.\"
-.\" The above copyright notice and this permission notice (including the next
-.\" paragraph) shall be included in all copies or substantial portions of the
-.\" Software.
-.\"
-.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-.\" DEALINGS IN THE SOFTWARE.
-.\"
-.TH XkbKeyNumSyms __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
-.SH NAME
-XkbKeyNumSyms \- Returns the total number of keysyms for the key corresponding
-to
-.I keycode
-.SH SYNOPSIS
-.HP
-.B int XkbKeyNumSyms
-.BI "(\^XkbDescPtr " "xkb" "\^,"
-.BI "KeyCode " "keycode" "\^);"
-.if n .ti +5n
-.if t .ti +.5i
-.SH ARGUMENTS
-.TP
-.I \- xkb
-Xkb description of interest
-.TP
-.I \- keycode
-keycode of interest
-.SH DESCRIPTION
-.LP
-The key width and number of groups associated with a key are used to form a
-small two-dimensional array of KeySyms for a key. This array may be different
-sizes for different keys. The array for a single key is stored as a linear list,
-in row-major order. The arrays for all of the keys are stored in the
-.I syms
-field of the client map. There is one row for each group associated with a key
-and one column for each level. The index corresponding to a given group and
-shift level is computed as:
-.nf
-
- idx = group_index * key_width + shift_level
-
-.fi
-The
-.I offset
-field of the
-.I key_sym_map
-entry for a key is used to access the beginning of the array.
-
-.I XkbKeyNumSyms
-returns the total number of keysyms for the key corresponding to
-.I keycode.
+'\" t
+.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the "Software"),
+.\" to deal in the Software without restriction, including without limitation
+.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
+.\" and/or sell copies of the Software, and to permit persons to whom the
+.\" Software is furnished to do so, subject to the following conditions:
+.\"
+.\" The above copyright notice and this permission notice (including the next
+.\" paragraph) shall be included in all copies or substantial portions of the
+.\" Software.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+.\" DEALINGS IN THE SOFTWARE.
+.\"
+.TH XkbKeyNumSyms __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbKeyNumSyms \- Returns the total number of keysyms for the key corresponding
+to
+.I keycode
+.SH SYNOPSIS
+.HP
+.B int XkbKeyNumSyms
+.BI "(\^XkbDescPtr " "xkb" "\^,"
+.BI "KeyCode " "keycode" "\^);"
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- xkb
+Xkb description of interest
+.TP
+.I \- keycode
+keycode of interest
+.SH DESCRIPTION
+.LP
+The key width and number of groups associated with a key are used to form a
+small two-dimensional array of KeySyms for a key. This array may be different
+sizes for different keys. The array for a single key is stored as a linear list,
+in row-major order. The arrays for all of the keys are stored in the
+.I syms
+field of the client map. There is one row for each group associated with a key
+and one column for each level. The index corresponding to a given group and
+shift level is computed as:
+.nf
+
+ idx = group_index * key_width + shift_level
+
+.fi
+The
+.I offset
+field of the
+.I key_sym_map
+entry for a key is used to access the beginning of the array.
+
+.I XkbKeyNumSyms
+returns the total number of keysyms for the key corresponding to
+.I keycode.
diff --git a/libX11/man/xkb/XkbKeySymEntry.man b/libX11/man/xkb/XkbKeySymEntry.man
index 26fa37c34..8c8a7900d 100644
--- a/libX11/man/xkb/XkbKeySymEntry.man
+++ b/libX11/man/xkb/XkbKeySymEntry.man
@@ -1,79 +1,79 @@
-.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
-.\"
-.\" Permission is hereby granted, free of charge, to any person obtaining a
-.\" copy of this software and associated documentation files (the "Software"),
-.\" to deal in the Software without restriction, including without limitation
-.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
-.\" and/or sell copies of the Software, and to permit persons to whom the
-.\" Software is furnished to do so, subject to the following conditions:
-.\"
-.\" The above copyright notice and this permission notice (including the next
-.\" paragraph) shall be included in all copies or substantial portions of the
-.\" Software.
-.\"
-.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-.\" DEALINGS IN THE SOFTWARE.
-.\"
-.TH XkbKeySymEntry __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
-.SH NAME
-XkbKeySymEntry \- Returns the keysym corresponding to shift level
-.I shift
-and group
-.I grp
-from the two-dimensional array of keysyms for the key corresponding to
-.I keycode
-.SH SYNOPSIS
-.HP
-.B KeySym XkbKeySymEntry
-.BI "(\^XkbDescPtr " "xkb" "\^,"
-.BI "KeyCode " "keycode" "\^,"
-.BI "int " "shift" "\^,"
-.BI "int " "grp" "\^);"
-.if n .ti +5n
-.if t .ti +.5i
-.SH ARGUMENTS
-.TP
-.I \- xkb
-Xkb description of interest
-.TP
-.I \- keycode
-keycode of interest
-.TP
-.I \- shift
-shift level of interest
-.TP
-.I \- grp
-group of interest
-.SH DESCRIPTION
-.LP
-The key width and number of groups associated with a key are used to form a
-small two-dimensional array of KeySyms for a key. This array may be different
-sizes for different keys. The array for a single key is stored as a linear list,
-in row-major order. The arrays for all of the keys are stored in the
-.I syms
-field of the client map. There is one row for each group associated with a key
-and one column for each level. The index corresponding to a given group and
-shift level is computed as:
-.nf
-
- idx = group_index * key_width + shift_level
-
-.fi
-The
-.I offset
-field of the
-.I key_sym_map
-entry for a key is used to access the beginning of the array.
-
-.I XkbKeySymEntry
-returns the keysym corresponding to shift level
-.I shift
-and group
-.I grp
-from the two-dimensional array of keysyms for the key corresponding to
-.I keycode.
+.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the "Software"),
+.\" to deal in the Software without restriction, including without limitation
+.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
+.\" and/or sell copies of the Software, and to permit persons to whom the
+.\" Software is furnished to do so, subject to the following conditions:
+.\"
+.\" The above copyright notice and this permission notice (including the next
+.\" paragraph) shall be included in all copies or substantial portions of the
+.\" Software.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+.\" DEALINGS IN THE SOFTWARE.
+.\"
+.TH XkbKeySymEntry __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbKeySymEntry \- Returns the keysym corresponding to shift level
+.I shift
+and group
+.I grp
+from the two-dimensional array of keysyms for the key corresponding to
+.I keycode
+.SH SYNOPSIS
+.HP
+.B KeySym XkbKeySymEntry
+.BI "(\^XkbDescPtr " "xkb" "\^,"
+.BI "KeyCode " "keycode" "\^,"
+.BI "int " "shift" "\^,"
+.BI "int " "grp" "\^);"
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- xkb
+Xkb description of interest
+.TP
+.I \- keycode
+keycode of interest
+.TP
+.I \- shift
+shift level of interest
+.TP
+.I \- grp
+group of interest
+.SH DESCRIPTION
+.LP
+The key width and number of groups associated with a key are used to form a
+small two-dimensional array of KeySyms for a key. This array may be different
+sizes for different keys. The array for a single key is stored as a linear list,
+in row-major order. The arrays for all of the keys are stored in the
+.I syms
+field of the client map. There is one row for each group associated with a key
+and one column for each level. The index corresponding to a given group and
+shift level is computed as:
+.nf
+
+ idx = group_index * key_width + shift_level
+
+.fi
+The
+.I offset
+field of the
+.I key_sym_map
+entry for a key is used to access the beginning of the array.
+
+.I XkbKeySymEntry
+returns the keysym corresponding to shift level
+.I shift
+and group
+.I grp
+from the two-dimensional array of keysyms for the key corresponding to
+.I keycode.
diff --git a/libX11/man/xkb/XkbKeySymsOffset.man b/libX11/man/xkb/XkbKeySymsOffset.man
index fecc1aeaa..123c54609 100644
--- a/libX11/man/xkb/XkbKeySymsOffset.man
+++ b/libX11/man/xkb/XkbKeySymsOffset.man
@@ -1,66 +1,66 @@
-'\" t
-.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
-.\"
-.\" Permission is hereby granted, free of charge, to any person obtaining a
-.\" copy of this software and associated documentation files (the "Software"),
-.\" to deal in the Software without restriction, including without limitation
-.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
-.\" and/or sell copies of the Software, and to permit persons to whom the
-.\" Software is furnished to do so, subject to the following conditions:
-.\"
-.\" The above copyright notice and this permission notice (including the next
-.\" paragraph) shall be included in all copies or substantial portions of the
-.\" Software.
-.\"
-.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-.\" DEALINGS IN THE SOFTWARE.
-.\"
-.TH XkbKeySymsOffset __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
-.SH NAME
-XkbKeySymsOffset \- Returns the offset of the two-dimensional array of keysyms
-for the key corresponding to
-.I keycode
-.SH SYNOPSIS
-.HP
-.B int XkbKeySymsOffset
-.BI "(\^XkbDescPtr " "xkb" "\^,"
-.BI "KeyCode " "keycode" "\^);"
-.if n .ti +5n
-.if t .ti +.5i
-.SH ARGUMENTS
-.TP
-.I \- xkb
-Xkb description of interest
-.TP
-.I \- keycode
-keycode of interest
-.SH DESCRIPTION
-.LP
-The key width and number of groups associated with a key are used to form a
-small two-dimensional array of KeySyms for a key. This array may be different
-sizes for different keys. The array for a single key is stored as a linear list,
-in row-major order. The arrays for all of the keys are stored in the
-.I syms
-field of the client map. There is one row for each group associated with a key
-and one column for each level. The index corresponding to a given group and
-shift level is computed as:
-.nf
-
- idx = group_index * key_width + shift_level
-
-.fi
-The
-.I offset
-field of the
-.I key_sym_map
-entry for a key is used to access the beginning of the array.
-
-.I XkbKeySymsOffset
-returns the offset of the two-dimensional array of keysyms for the key
-corresponding to
-.I keycode.
+'\" t
+.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the "Software"),
+.\" to deal in the Software without restriction, including without limitation
+.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
+.\" and/or sell copies of the Software, and to permit persons to whom the
+.\" Software is furnished to do so, subject to the following conditions:
+.\"
+.\" The above copyright notice and this permission notice (including the next
+.\" paragraph) shall be included in all copies or substantial portions of the
+.\" Software.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+.\" DEALINGS IN THE SOFTWARE.
+.\"
+.TH XkbKeySymsOffset __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbKeySymsOffset \- Returns the offset of the two-dimensional array of keysyms
+for the key corresponding to
+.I keycode
+.SH SYNOPSIS
+.HP
+.B int XkbKeySymsOffset
+.BI "(\^XkbDescPtr " "xkb" "\^,"
+.BI "KeyCode " "keycode" "\^);"
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- xkb
+Xkb description of interest
+.TP
+.I \- keycode
+keycode of interest
+.SH DESCRIPTION
+.LP
+The key width and number of groups associated with a key are used to form a
+small two-dimensional array of KeySyms for a key. This array may be different
+sizes for different keys. The array for a single key is stored as a linear list,
+in row-major order. The arrays for all of the keys are stored in the
+.I syms
+field of the client map. There is one row for each group associated with a key
+and one column for each level. The index corresponding to a given group and
+shift level is computed as:
+.nf
+
+ idx = group_index * key_width + shift_level
+
+.fi
+The
+.I offset
+field of the
+.I key_sym_map
+entry for a key is used to access the beginning of the array.
+
+.I XkbKeySymsOffset
+returns the offset of the two-dimensional array of keysyms for the key
+corresponding to
+.I keycode.
diff --git a/libX11/man/xkb/XkbKeySymsPtr.man b/libX11/man/xkb/XkbKeySymsPtr.man
index 92ab6fa68..f423165ac 100644
--- a/libX11/man/xkb/XkbKeySymsPtr.man
+++ b/libX11/man/xkb/XkbKeySymsPtr.man
@@ -1,66 +1,66 @@
-'\" t
-.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
-.\"
-.\" Permission is hereby granted, free of charge, to any person obtaining a
-.\" copy of this software and associated documentation files (the "Software"),
-.\" to deal in the Software without restriction, including without limitation
-.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
-.\" and/or sell copies of the Software, and to permit persons to whom the
-.\" Software is furnished to do so, subject to the following conditions:
-.\"
-.\" The above copyright notice and this permission notice (including the next
-.\" paragraph) shall be included in all copies or substantial portions of the
-.\" Software.
-.\"
-.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-.\" DEALINGS IN THE SOFTWARE.
-.\"
-.TH XkbKeySymsPtr __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
-.SH NAME
-XkbKeySymsPtr \- Returns the pointer to the two-dimensional array of keysyms for
-the key corresponding to
-.I keycode
-.SH SYNOPSIS
-.HP
-.B KeySym * XkbKeySymsPtr
-.BI "(\^XkbDescPtr " "xkb" "\^,"
-.BI "KeyCode " "keycode" "\^);"
-.if n .ti +5n
-.if t .ti +.5i
-.SH ARGUMENTS
-.TP
-.I \- xkb
-Xkb description of interest
-.TP
-.I \- keycode
-keycode of interest
-.SH DESCRIPTION
-.LP
-The key width and number of groups associated with a key are used to form a
-small two-dimensional array of KeySyms for a key. This array may be different
-sizes for different keys. The array for a single key is stored as a linear list,
-in row-major order. The arrays for all of the keys are stored in the
-.I syms
-field of the client map. There is one row for each group associated with a key
-and one column for each level. The index corresponding to a given group and
-shift level is computed as:
-.nf
-
- idx = group_index * key_width + shift_level
-
-.fi
-The
-.I offset
-field of the
-.I key_sym_map
-entry for a key is used to access the beginning of the array.
-
-.I XkbKeySymsPtr
-returns the pointer to the two-dimensional array of keysyms for the key
-corresponding to
-.I keycode.
+'\" t
+.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the "Software"),
+.\" to deal in the Software without restriction, including without limitation
+.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
+.\" and/or sell copies of the Software, and to permit persons to whom the
+.\" Software is furnished to do so, subject to the following conditions:
+.\"
+.\" The above copyright notice and this permission notice (including the next
+.\" paragraph) shall be included in all copies or substantial portions of the
+.\" Software.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+.\" DEALINGS IN THE SOFTWARE.
+.\"
+.TH XkbKeySymsPtr __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbKeySymsPtr \- Returns the pointer to the two-dimensional array of keysyms for
+the key corresponding to
+.I keycode
+.SH SYNOPSIS
+.HP
+.B KeySym * XkbKeySymsPtr
+.BI "(\^XkbDescPtr " "xkb" "\^,"
+.BI "KeyCode " "keycode" "\^);"
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- xkb
+Xkb description of interest
+.TP
+.I \- keycode
+keycode of interest
+.SH DESCRIPTION
+.LP
+The key width and number of groups associated with a key are used to form a
+small two-dimensional array of KeySyms for a key. This array may be different
+sizes for different keys. The array for a single key is stored as a linear list,
+in row-major order. The arrays for all of the keys are stored in the
+.I syms
+field of the client map. There is one row for each group associated with a key
+and one column for each level. The index corresponding to a given group and
+shift level is computed as:
+.nf
+
+ idx = group_index * key_width + shift_level
+
+.fi
+The
+.I offset
+field of the
+.I key_sym_map
+entry for a key is used to access the beginning of the array.
+
+.I XkbKeySymsPtr
+returns the pointer to the two-dimensional array of keysyms for the key
+corresponding to
+.I keycode.
diff --git a/libX11/man/xkb/XkbKeyType.man b/libX11/man/xkb/XkbKeyType.man
index 0b7544dd1..81ff92ffa 100644
--- a/libX11/man/xkb/XkbKeyType.man
+++ b/libX11/man/xkb/XkbKeyType.man
@@ -1,70 +1,70 @@
-'\" t
-.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
-.\"
-.\" Permission is hereby granted, free of charge, to any person obtaining a
-.\" copy of this software and associated documentation files (the "Software"),
-.\" to deal in the Software without restriction, including without limitation
-.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
-.\" and/or sell copies of the Software, and to permit persons to whom the
-.\" Software is furnished to do so, subject to the following conditions:
-.\"
-.\" The above copyright notice and this permission notice (including the next
-.\" paragraph) shall be included in all copies or substantial portions of the
-.\" Software.
-.\"
-.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-.\" DEALINGS IN THE SOFTWARE.
-.\"
-.TH XkbKeyType __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
-.SH NAME
-XkbKeyType \- Obtain the index of a key type or the pointer to a key type
-.SH SYNOPSIS
-.HP
-.B XkbKeyTypePtr XkbKeyType
-.BI "(\^XkbDescPtr " "xkb" "\^,"
-.BI "KeyCode " "keycode" "\^,"
-.BI "int " "group" "\^);"
-.if n .ti +5n
-.if t .ti +.5i
-.SH ARGUMENTS
-.TP
-.I \- xkb
-Xkb description of interest
-.TP
-.I \- keycode
-keycode of interest
-.TP
-.I \- group
-group index
-.SH DESCRIPTION
-.LP
-.I XkbKeyType
-returns a pointer to the key type in the
-.I types
-vector of the client map in
-.I xkb
-corresponding to the given
-.I keycode
-and
-.I group
-index.
-.SH STRUCTURES
-.LP
-.nf
-
-typedef struct { /\(** Key Type */
- XkbModsRec mods; /\(** modifiers used to compute shift level */
- unsigned char num_levels; /\(** total # shift levels, do not modify directly */
- unsigned char map_count; /\(** # entries in map, preserve (if non-NULL) */
- XkbKTMapEntryPtr map; /\(** vector of modifiers for each shift level */
- XkbModsPtr preserve; /\(** mods to preserve for corresponding map entry */
- Atom name; /\(** name of key type */
- Atom * level_names; /\(** array of names of each shift level */
-} XkbKeyTypeRec, *XkbKeyTypePtr;
-
-.fi
+'\" t
+.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the "Software"),
+.\" to deal in the Software without restriction, including without limitation
+.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
+.\" and/or sell copies of the Software, and to permit persons to whom the
+.\" Software is furnished to do so, subject to the following conditions:
+.\"
+.\" The above copyright notice and this permission notice (including the next
+.\" paragraph) shall be included in all copies or substantial portions of the
+.\" Software.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+.\" DEALINGS IN THE SOFTWARE.
+.\"
+.TH XkbKeyType __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbKeyType \- Obtain the index of a key type or the pointer to a key type
+.SH SYNOPSIS
+.HP
+.B XkbKeyTypePtr XkbKeyType
+.BI "(\^XkbDescPtr " "xkb" "\^,"
+.BI "KeyCode " "keycode" "\^,"
+.BI "int " "group" "\^);"
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- xkb
+Xkb description of interest
+.TP
+.I \- keycode
+keycode of interest
+.TP
+.I \- group
+group index
+.SH DESCRIPTION
+.LP
+.I XkbKeyType
+returns a pointer to the key type in the
+.I types
+vector of the client map in
+.I xkb
+corresponding to the given
+.I keycode
+and
+.I group
+index.
+.SH STRUCTURES
+.LP
+.nf
+
+typedef struct { /\(** Key Type */
+ XkbModsRec mods; /\(** modifiers used to compute shift level */
+ unsigned char num_levels; /\(** total # shift levels, do not modify directly */
+ unsigned char map_count; /\(** # entries in map, preserve (if non-NULL) */
+ XkbKTMapEntryPtr map; /\(** vector of modifiers for each shift level */
+ XkbModsPtr preserve; /\(** mods to preserve for corresponding map entry */
+ Atom name; /\(** name of key type */
+ Atom * level_names; /\(** array of names of each shift level */
+} XkbKeyTypeRec, *XkbKeyTypePtr;
+
+.fi
diff --git a/libX11/man/xkb/XkbKeyTypeIndex.man b/libX11/man/xkb/XkbKeyTypeIndex.man
index 317acabb9..e198e7289 100644
--- a/libX11/man/xkb/XkbKeyTypeIndex.man
+++ b/libX11/man/xkb/XkbKeyTypeIndex.man
@@ -1,56 +1,56 @@
-'\" t
-.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
-.\"
-.\" Permission is hereby granted, free of charge, to any person obtaining a
-.\" copy of this software and associated documentation files (the "Software"),
-.\" to deal in the Software without restriction, including without limitation
-.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
-.\" and/or sell copies of the Software, and to permit persons to whom the
-.\" Software is furnished to do so, subject to the following conditions:
-.\"
-.\" The above copyright notice and this permission notice (including the next
-.\" paragraph) shall be included in all copies or substantial portions of the
-.\" Software.
-.\"
-.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-.\" DEALINGS IN THE SOFTWARE.
-.\"
-.TH XkbKeyTypeIndex __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
-.SH NAME
-XkbKeyTypeIndex \- Obtain the index of a key type or the pointer to a key type
-.SH SYNOPSIS
-.HP
-.B int XkbKeyTypeIndex
-.BI "(\^XkbDescPtr " "xkb" "\^,"
-.BI "KeyCode " "keycode" "\^,"
-.BI "int " "group" "\^);"
-.if n .ti +5n
-.if t .ti +.5i
-.SH ARGUMENTS
-.TP
-.I \- xkb
-Xkb description of interest
-.TP
-.I \- keycode
-keycode of interest
-.TP
-.I \- group
-group index
-.SH DESCRIPTION
-.LP
-.I XkbKeyTypeIndex
-computes an index into the
-.I types
-vector of the client map in
-.I xkb
-from the given
-.I keycode
-and
-.I group
-index.
-
+'\" t
+.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the "Software"),
+.\" to deal in the Software without restriction, including without limitation
+.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
+.\" and/or sell copies of the Software, and to permit persons to whom the
+.\" Software is furnished to do so, subject to the following conditions:
+.\"
+.\" The above copyright notice and this permission notice (including the next
+.\" paragraph) shall be included in all copies or substantial portions of the
+.\" Software.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+.\" DEALINGS IN THE SOFTWARE.
+.\"
+.TH XkbKeyTypeIndex __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbKeyTypeIndex \- Obtain the index of a key type or the pointer to a key type
+.SH SYNOPSIS
+.HP
+.B int XkbKeyTypeIndex
+.BI "(\^XkbDescPtr " "xkb" "\^,"
+.BI "KeyCode " "keycode" "\^,"
+.BI "int " "group" "\^);"
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- xkb
+Xkb description of interest
+.TP
+.I \- keycode
+keycode of interest
+.TP
+.I \- group
+group index
+.SH DESCRIPTION
+.LP
+.I XkbKeyTypeIndex
+computes an index into the
+.I types
+vector of the client map in
+.I xkb
+from the given
+.I keycode
+and
+.I group
+index.
+
diff --git a/libX11/man/xkb/XkbKeyTypesForCoreSymbols.man b/libX11/man/xkb/XkbKeyTypesForCoreSymbols.man
index 502d8bed3..e7678d5c2 100644
--- a/libX11/man/xkb/XkbKeyTypesForCoreSymbols.man
+++ b/libX11/man/xkb/XkbKeyTypesForCoreSymbols.man
@@ -1,228 +1,228 @@
-'\" t
-.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
-.\"
-.\" Permission is hereby granted, free of charge, to any person obtaining a
-.\" copy of this software and associated documentation files (the "Software"),
-.\" to deal in the Software without restriction, including without limitation
-.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
-.\" and/or sell copies of the Software, and to permit persons to whom the
-.\" Software is furnished to do so, subject to the following conditions:
-.\"
-.\" The above copyright notice and this permission notice (including the next
-.\" paragraph) shall be included in all copies or substantial portions of the
-.\" Software.
-.\"
-.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-.\" DEALINGS IN THE SOFTWARE.
-.\"
-.TH XkbKeyTypesForCoreSymbols __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
-.SH NAME
-XkbKeyTypesForCoreSymbols \- Determine the Xkb key types appropriate for the
-symbols bound to a key in a core keyboard mapping
-.SH SYNOPSIS
-.HP
-.B int XkbKeyTypesForCoreSymbols
-.BI "(\^XkbDescPtr " "xkb" "\^,"
-.BI "int " "map_width" "\^,"
-.BI "KeySym *" "core_syms" "\^,"
-.BI "unsigned int " "protected" "\^,"
-.BI "int *" "types_inout" "\^,"
-.BI "KeySym *" "xkb_syms_rtrn" "\^);"
-.if n .ti +5n
-.if t .ti +.5i
-.SH ARGUMENTS
-.TP
-.I \- xkb
-keyboard description in which to place symbols
-.TP
-.I \- map_width
-width of core protocol keymap in xkb_syms_rtrn
-.TP
-.I \- core_syms
-core protocol format array of KeySyms
-.TP
-.I \- protected
-explicit key types
-.TP
-.I \- types_inout
-backfilled with the canonical types bound to groups one and two for the key
-.TP
-.I \- xkb_syms_rtrn
-backfilled with symbols bound to the key in the Xkb mapping
-.SH DESCRIPTION
-.LP
-.I XkbKeyTypesForCoreSymbols
-expands the symbols in
-.I core_syms
-and types in
-.I types_inout,
-then chooses canonical key types (canonical key types are
-defined The Canonical Key Types) for groups 1 and 2 using the rules specified by
-the Xkb protocol and places them in xkb_syms_rtrn, which will be non-NULL.
-
-.B The Canonical Key Types
-
-Xkb allows up to XkbMaxKeyTypes (255) key types to be defined, but requires at
-least XkbNumRequiredTypes (4) predefined types to be in a key map. These
-predefined key types are referred to as the canonical key types and describe the
-types of keys available on most keyboards. The definitions for the canonical key
-types are held in the first XkbNumRequiredTypes entries of the
-.I types
-field of the client map and are indexed using the following constants:
-.nf
-
- XkbOneLevelIndex
- XkbTwoLevelIndex
- XkbAlphabeticIndex
- XkbKeypadIndex
-
-.fi
-
-ONE_LEVEL
-
-The ONE_LEVEL key type describes groups that have only one symbol. The default
-ONE_LEVEL key type has no map entries and does not pay attention to any
-modifiers. A symbolic representation of this key type could look like the
-following:
-.nf
-
- type "ONE_LEVEL" {
- modifiers = None;
- map[None]= Level1;
- level_name[Level1]= "Any";
- };
-
-.fi
-The description of the ONE_LEVEL key type is stored in the
-types[XkbOneLevelIndex] entry of the client key map.
-
-TWO_LEVEL
-
-The TWO_LEVEL key type describes groups that consist of two symbols but are
-neither alphabetic nor numeric keypad keys. The default TWO_LEVEL type uses only
-the Shift modifier. It returns shift level two if Shift is set, and level one if
-it is not. A symbolic representation of this key type could look like the
-following:
-.nf
-
- type "TWO_LEVEL" {
- modifiers = Shift;
- map[Shift]= Level2;
- level_name[Level1]= "Base";
- level_name[Level2]= "Shift";
- };
-
-.fi
-
-The description of the TWO_LEVEL key type is stored in the
-types[XkbTwoLevelIndex] entry of the client key map.
-
-ALPHABETIC
-
-The ALPHABETIC key type describes groups consisting of two symbols: the
-lowercase form of a symbol followed by the uppercase form of the same symbol.
-The default ALPHABETIC type implements locale-sensitive "Shift cancels CapsLock"
-behavior using both the Shift and Lock modifiers as follows:
-
-.IP \(bu 5
-If Shift and Lock are both set, the default ALPHABETIC type yields level one.
-.IP \(bu 5
-If Shift alone is set, it yields level two.
-.IP \(bu 5
-If Lock alone is set, it yields level one, but preserves the Lock modifier so
-Xlib notices and applies the appropriate capitalization rules. The Xlib
-functions are locale-sensitive and apply different capitalization rules for
-different locales.
-.IP \(bu 5
-If neither Shift nor Lock is set, it yields level one.
-
-A symbolic representation of this key type could look like the following:
-.nf
-
- type "ALPHABETIC" {
- modifiers = Shift+Lock;
- map[Shift]= Level2;
- preserve[Lock]= Lock;
- level_name[Level1]= "Base";
- level_name[Level2]= "Caps";
- };
-
-.fi
-The description of the ALPHABETIC key type is stored in the
-types[XkbAlphabeticIndex] entry of the client key map.
-
-KEYPAD
-
-The KEYPAD key type describes groups that consist of two symbols, at least one
-of which is a numeric keypad symbol. The numeric keypad symbol is assumed to
-reside at level two. The default KEYPAD key type implements "Shift cancels
-NumLock" behavior using the Shift modifier and the real modifier bound to the
-virtual modifier named "NumLock," known as the NumLock modifier, as follows:
-
-.IP \(bu 5
-If Shift and NumLock are both set, the default KEYPAD type yields level one.
-.IP \(bu 5
-If Shift alone is set, it yields level two.
-.IP \(bu 5
-If NumLock alone is set, it yields level two.
-.IP \(bu 5
-If neither Shift nor NumLock is set, it yields level one.
-
-A symbolic representation of this key type could look like the following:
-.nf
-
- type "KEYPAD" {
- modifiers = Shift+NumLock;
- map[None]= Level1;
- map[Shift]= Level2;
- map[NumLock]= Level2;
- map[Shift+NumLock]= Level1;
- level_name[Level1]= "Base";
- level_name[Level2]= "Caps";
- };
-
-.fi
-The description of the KEYPAD key type is stored in the types[XkbKeypadIndex]
-entry of the client key map.
-
-A core keymap is a two-dimensional array of keysyms. It has
-.I map_width
-columns and
-.I max_key_code
-rows.
-.I XkbKeyTypesForCoreSymbols
-takes a single row from a core keymap, determines the number of groups
-associated with it, the type of each group, and the symbols bound to each group.
-The return value is the number of groups,
-.I types_inout
-has the types for each group, and
-.I xkb_syms_rtrn
-has the symbols in Xkb order (that is, groups are contiguous, regardless of
-size).
-
-.I protected
-contains the explicitly protected key types. There is one explicit override
-control associated with each of the four possible groups for each Xkb key,
-ExplicitKeyType1 through ExplicitKeyType4;
-.I protected
-is an inclusive OR of these controls.
-.I map_width
-is the width of the core keymap and is not dependent on any Xkb definitions.
-.I types_inout
-is an array of four type indices. On input,
-.I types_inout
-contains the indices of any types already assigned to the key, in case they are
-explicitly protected from change.
-
-Upon return,
-.I types_inout
-contains any automatically selected (that is, canonical) types plus any
-protected types. Canonical types are assigned to all four groups if there are
-enough symbols to do so. The four entries in
-.I types_inout
-correspond to the four groups for the key in question.
+'\" t
+.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the "Software"),
+.\" to deal in the Software without restriction, including without limitation
+.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
+.\" and/or sell copies of the Software, and to permit persons to whom the
+.\" Software is furnished to do so, subject to the following conditions:
+.\"
+.\" The above copyright notice and this permission notice (including the next
+.\" paragraph) shall be included in all copies or substantial portions of the
+.\" Software.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+.\" DEALINGS IN THE SOFTWARE.
+.\"
+.TH XkbKeyTypesForCoreSymbols __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbKeyTypesForCoreSymbols \- Determine the Xkb key types appropriate for the
+symbols bound to a key in a core keyboard mapping
+.SH SYNOPSIS
+.HP
+.B int XkbKeyTypesForCoreSymbols
+.BI "(\^XkbDescPtr " "xkb" "\^,"
+.BI "int " "map_width" "\^,"
+.BI "KeySym *" "core_syms" "\^,"
+.BI "unsigned int " "protected" "\^,"
+.BI "int *" "types_inout" "\^,"
+.BI "KeySym *" "xkb_syms_rtrn" "\^);"
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- xkb
+keyboard description in which to place symbols
+.TP
+.I \- map_width
+width of core protocol keymap in xkb_syms_rtrn
+.TP
+.I \- core_syms
+core protocol format array of KeySyms
+.TP
+.I \- protected
+explicit key types
+.TP
+.I \- types_inout
+backfilled with the canonical types bound to groups one and two for the key
+.TP
+.I \- xkb_syms_rtrn
+backfilled with symbols bound to the key in the Xkb mapping
+.SH DESCRIPTION
+.LP
+.I XkbKeyTypesForCoreSymbols
+expands the symbols in
+.I core_syms
+and types in
+.I types_inout,
+then chooses canonical key types (canonical key types are
+defined The Canonical Key Types) for groups 1 and 2 using the rules specified by
+the Xkb protocol and places them in xkb_syms_rtrn, which will be non-NULL.
+
+.B The Canonical Key Types
+
+Xkb allows up to XkbMaxKeyTypes (255) key types to be defined, but requires at
+least XkbNumRequiredTypes (4) predefined types to be in a key map. These
+predefined key types are referred to as the canonical key types and describe the
+types of keys available on most keyboards. The definitions for the canonical key
+types are held in the first XkbNumRequiredTypes entries of the
+.I types
+field of the client map and are indexed using the following constants:
+.nf
+
+ XkbOneLevelIndex
+ XkbTwoLevelIndex
+ XkbAlphabeticIndex
+ XkbKeypadIndex
+
+.fi
+
+ONE_LEVEL
+
+The ONE_LEVEL key type describes groups that have only one symbol. The default
+ONE_LEVEL key type has no map entries and does not pay attention to any
+modifiers. A symbolic representation of this key type could look like the
+following:
+.nf
+
+ type "ONE_LEVEL" {
+ modifiers = None;
+ map[None]= Level1;
+ level_name[Level1]= "Any";
+ };
+
+.fi
+The description of the ONE_LEVEL key type is stored in the
+types[XkbOneLevelIndex] entry of the client key map.
+
+TWO_LEVEL
+
+The TWO_LEVEL key type describes groups that consist of two symbols but are
+neither alphabetic nor numeric keypad keys. The default TWO_LEVEL type uses only
+the Shift modifier. It returns shift level two if Shift is set, and level one if
+it is not. A symbolic representation of this key type could look like the
+following:
+.nf
+
+ type "TWO_LEVEL" {
+ modifiers = Shift;
+ map[Shift]= Level2;
+ level_name[Level1]= "Base";
+ level_name[Level2]= "Shift";
+ };
+
+.fi
+
+The description of the TWO_LEVEL key type is stored in the
+types[XkbTwoLevelIndex] entry of the client key map.
+
+ALPHABETIC
+
+The ALPHABETIC key type describes groups consisting of two symbols: the
+lowercase form of a symbol followed by the uppercase form of the same symbol.
+The default ALPHABETIC type implements locale-sensitive "Shift cancels CapsLock"
+behavior using both the Shift and Lock modifiers as follows:
+
+.IP \(bu 5
+If Shift and Lock are both set, the default ALPHABETIC type yields level one.
+.IP \(bu 5
+If Shift alone is set, it yields level two.
+.IP \(bu 5
+If Lock alone is set, it yields level one, but preserves the Lock modifier so
+Xlib notices and applies the appropriate capitalization rules. The Xlib
+functions are locale-sensitive and apply different capitalization rules for
+different locales.
+.IP \(bu 5
+If neither Shift nor Lock is set, it yields level one.
+
+A symbolic representation of this key type could look like the following:
+.nf
+
+ type "ALPHABETIC" {
+ modifiers = Shift+Lock;
+ map[Shift]= Level2;
+ preserve[Lock]= Lock;
+ level_name[Level1]= "Base";
+ level_name[Level2]= "Caps";
+ };
+
+.fi
+The description of the ALPHABETIC key type is stored in the
+types[XkbAlphabeticIndex] entry of the client key map.
+
+KEYPAD
+
+The KEYPAD key type describes groups that consist of two symbols, at least one
+of which is a numeric keypad symbol. The numeric keypad symbol is assumed to
+reside at level two. The default KEYPAD key type implements "Shift cancels
+NumLock" behavior using the Shift modifier and the real modifier bound to the
+virtual modifier named "NumLock," known as the NumLock modifier, as follows:
+
+.IP \(bu 5
+If Shift and NumLock are both set, the default KEYPAD type yields level one.
+.IP \(bu 5
+If Shift alone is set, it yields level two.
+.IP \(bu 5
+If NumLock alone is set, it yields level two.
+.IP \(bu 5
+If neither Shift nor NumLock is set, it yields level one.
+
+A symbolic representation of this key type could look like the following:
+.nf
+
+ type "KEYPAD" {
+ modifiers = Shift+NumLock;
+ map[None]= Level1;
+ map[Shift]= Level2;
+ map[NumLock]= Level2;
+ map[Shift+NumLock]= Level1;
+ level_name[Level1]= "Base";
+ level_name[Level2]= "Caps";
+ };
+
+.fi
+The description of the KEYPAD key type is stored in the types[XkbKeypadIndex]
+entry of the client key map.
+
+A core keymap is a two-dimensional array of keysyms. It has
+.I map_width
+columns and
+.I max_key_code
+rows.
+.I XkbKeyTypesForCoreSymbols
+takes a single row from a core keymap, determines the number of groups
+associated with it, the type of each group, and the symbols bound to each group.
+The return value is the number of groups,
+.I types_inout
+has the types for each group, and
+.I xkb_syms_rtrn
+has the symbols in Xkb order (that is, groups are contiguous, regardless of
+size).
+
+.I protected
+contains the explicitly protected key types. There is one explicit override
+control associated with each of the four possible groups for each Xkb key,
+ExplicitKeyType1 through ExplicitKeyType4;
+.I protected
+is an inclusive OR of these controls.
+.I map_width
+is the width of the core keymap and is not dependent on any Xkb definitions.
+.I types_inout
+is an array of four type indices. On input,
+.I types_inout
+contains the indices of any types already assigned to the key, in case they are
+explicitly protected from change.
+
+Upon return,
+.I types_inout
+contains any automatically selected (that is, canonical) types plus any
+protected types. Canonical types are assigned to all four groups if there are
+enough symbols to do so. The four entries in
+.I types_inout
+correspond to the four groups for the key in question.
diff --git a/libX11/man/xkb/XkbKeycodeToKeysym.man b/libX11/man/xkb/XkbKeycodeToKeysym.man
index e0f2b6995..32efa01d0 100644
--- a/libX11/man/xkb/XkbKeycodeToKeysym.man
+++ b/libX11/man/xkb/XkbKeycodeToKeysym.man
@@ -1,60 +1,60 @@
-.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
-.\"
-.\" Permission is hereby granted, free of charge, to any person obtaining a
-.\" copy of this software and associated documentation files (the "Software"),
-.\" to deal in the Software without restriction, including without limitation
-.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
-.\" and/or sell copies of the Software, and to permit persons to whom the
-.\" Software is furnished to do so, subject to the following conditions:
-.\"
-.\" The above copyright notice and this permission notice (including the next
-.\" paragraph) shall be included in all copies or substantial portions of the
-.\" Software.
-.\"
-.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-.\" DEALINGS IN THE SOFTWARE.
-.\"
-.TH XkbKeycodeToKeysym __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
-.SH NAME
-XkbKeycodeToKeysym \- Finds the keysym bound to a particular key at a specified
-group and shift level
-.SH SYNOPSIS
-.HP
-.B KeySym XkbKeycodeToKeysym
-.BI "(\^Display *" "dpy" "\^,"
-.BI "KeyCode " "kc" "\^,"
-.BI "unsigned int " "group" "\^,"
-.BI "unsigned int " "level" "\^);"
-.if n .ti +5n
-.if t .ti +.5i
-.SH ARGUMENTS
-.TP
-.I \- dpy
-connection to X server
-.TP
-.I \- kc
-key of interest
-.TP
-.I \- group
-group of interest
-.TP
-.I \- level
-shift level of interest
-.SH DESCRIPTION
-.LP
-.I XkbKeycodeToKeysym
-returns the keysym bound to a particular group and shift level for a particular
-key on the core keyboard. If
-.I kc
-is not a legal keycode for the core keyboard, or if
-.I group
-or
-.I level
-are out of range for the specified key,
-.I XkbKeycodeToKeysym
-returns NoSymbol.
+.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the "Software"),
+.\" to deal in the Software without restriction, including without limitation
+.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
+.\" and/or sell copies of the Software, and to permit persons to whom the
+.\" Software is furnished to do so, subject to the following conditions:
+.\"
+.\" The above copyright notice and this permission notice (including the next
+.\" paragraph) shall be included in all copies or substantial portions of the
+.\" Software.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+.\" DEALINGS IN THE SOFTWARE.
+.\"
+.TH XkbKeycodeToKeysym __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbKeycodeToKeysym \- Finds the keysym bound to a particular key at a specified
+group and shift level
+.SH SYNOPSIS
+.HP
+.B KeySym XkbKeycodeToKeysym
+.BI "(\^Display *" "dpy" "\^,"
+.BI "KeyCode " "kc" "\^,"
+.BI "unsigned int " "group" "\^,"
+.BI "unsigned int " "level" "\^);"
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- dpy
+connection to X server
+.TP
+.I \- kc
+key of interest
+.TP
+.I \- group
+group of interest
+.TP
+.I \- level
+shift level of interest
+.SH DESCRIPTION
+.LP
+.I XkbKeycodeToKeysym
+returns the keysym bound to a particular group and shift level for a particular
+key on the core keyboard. If
+.I kc
+is not a legal keycode for the core keyboard, or if
+.I group
+or
+.I level
+are out of range for the specified key,
+.I XkbKeycodeToKeysym
+returns NoSymbol.
diff --git a/libX11/man/xkb/XkbKeysymToModifiers.man b/libX11/man/xkb/XkbKeysymToModifiers.man
index 1e9d67c72..acc432a77 100644
--- a/libX11/man/xkb/XkbKeysymToModifiers.man
+++ b/libX11/man/xkb/XkbKeysymToModifiers.man
@@ -1,52 +1,52 @@
-.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
-.\"
-.\" Permission is hereby granted, free of charge, to any person obtaining a
-.\" copy of this software and associated documentation files (the "Software"),
-.\" to deal in the Software without restriction, including without limitation
-.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
-.\" and/or sell copies of the Software, and to permit persons to whom the
-.\" Software is furnished to do so, subject to the following conditions:
-.\"
-.\" The above copyright notice and this permission notice (including the next
-.\" paragraph) shall be included in all copies or substantial portions of the
-.\" Software.
-.\"
-.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-.\" DEALINGS IN THE SOFTWARE.
-.\"
-.TH XkbKeysymToModifiers __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
-.SH NAME
-XkbKeysymToModifiers \- Finds the set of modifiers bound to a particular keysym
-on the core keyboard
-.SH SYNOPSIS
-.HP
-.B unsigned int XkbKeysymToModifiers
-.BI "(\^Display *" "dpy" "\^,"
-.BI "KeySym " "ks" "\^);"
-.if n .ti +5n
-.if t .ti +.5i
-.SH ARGUMENTS
-.TP
-.I \- dpy
-connection to X server
-.TP
-.I \- ks
-keysym of interest
-.SH DESCRIPTION
-.LP
-.I XkbKeysymToModifiers
-finds the set of modifiers currently bound to the keysym
-.I ks
-on the core keyboard. The value returned is the mask of modifiers bound to the
-keysym
-.I ks.
-If no modifiers are bound to the keysym,
-.I XkbKeysymToModifiers
-returns zero; otherwise, it returns the inclusive OR of zero or more of the
-following: ShiftMask, ControlMask, LockMask, Mod1Mask, Mod2Mask, Mod3Mask,
-Mod4Mask, and Mod5Mask.
+.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the "Software"),
+.\" to deal in the Software without restriction, including without limitation
+.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
+.\" and/or sell copies of the Software, and to permit persons to whom the
+.\" Software is furnished to do so, subject to the following conditions:
+.\"
+.\" The above copyright notice and this permission notice (including the next
+.\" paragraph) shall be included in all copies or substantial portions of the
+.\" Software.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+.\" DEALINGS IN THE SOFTWARE.
+.\"
+.TH XkbKeysymToModifiers __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbKeysymToModifiers \- Finds the set of modifiers bound to a particular keysym
+on the core keyboard
+.SH SYNOPSIS
+.HP
+.B unsigned int XkbKeysymToModifiers
+.BI "(\^Display *" "dpy" "\^,"
+.BI "KeySym " "ks" "\^);"
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- dpy
+connection to X server
+.TP
+.I \- ks
+keysym of interest
+.SH DESCRIPTION
+.LP
+.I XkbKeysymToModifiers
+finds the set of modifiers currently bound to the keysym
+.I ks
+on the core keyboard. The value returned is the mask of modifiers bound to the
+keysym
+.I ks.
+If no modifiers are bound to the keysym,
+.I XkbKeysymToModifiers
+returns zero; otherwise, it returns the inclusive OR of zero or more of the
+following: ShiftMask, ControlMask, LockMask, Mod1Mask, Mod2Mask, Mod3Mask,
+Mod4Mask, and Mod5Mask.
diff --git a/libX11/man/xkb/XkbLatchGroup.man b/libX11/man/xkb/XkbLatchGroup.man
index c4ce2afaf..8e7c431ab 100644
--- a/libX11/man/xkb/XkbLatchGroup.man
+++ b/libX11/man/xkb/XkbLatchGroup.man
@@ -1,83 +1,83 @@
-'\" t
-.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
-.\"
-.\" Permission is hereby granted, free of charge, to any person obtaining a
-.\" copy of this software and associated documentation files (the "Software"),
-.\" to deal in the Software without restriction, including without limitation
-.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
-.\" and/or sell copies of the Software, and to permit persons to whom the
-.\" Software is furnished to do so, subject to the following conditions:
-.\"
-.\" The above copyright notice and this permission notice (including the next
-.\" paragraph) shall be included in all copies or substantial portions of the
-.\" Software.
-.\"
-.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-.\" DEALINGS IN THE SOFTWARE.
-.\"
-.TH XkbLatchGroup __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
-.SH NAME
-XkbLatchGroup \- Latches the keysym group
-.SH SYNOPSIS
-.HP
-.B Bool XkbLatchGroup
-.BI "(\^Display *" "display" "\^,"
-.BI "unsigned int " "device_spec" "\^,"
-.BI "unsigned int " "group" "\^);"
-.if n .ti +5n
-.if t .ti +.5i
-.SH ARGUMENTS
-.TP
-.I display
-connection to the X server
-.TP
-.I device_spec
-device ID, or XkbUseCoreKbd
-.TP
-.I group
-index of the keysym group to latch
-.SH DESCRIPTION
-.LP
-
-.I XkbLatchGroup
-sends a request to the server to latch the specified
-.I group
-and
-does not wait for a reply. It returns True if the request was sent and False
-otherwise.
-
-Reference the keysym group indices with these symbolic constants:
-
-.TS
-c s
-l l
-l l.
-Table 1 Symbolic Group Names
-_
-Symbolic Name Value
-_
-XkbGroup1Index 0
-XkbGroup2Index 1
-XkbGroup3Index 2
-XkbGroup4Index 3
-.TE
-.SH "RETURN VALUES"
-.TP 15
-True
-The
-.I XkbLatchGroup
-function returns True if a request was sent to the server to latch the specified
-.I group.
-.TP 15
-False
-The
-.I XkbLatchGroup
-function returns False if the request was not sent.
-
-
-
+'\" t
+.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the "Software"),
+.\" to deal in the Software without restriction, including without limitation
+.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
+.\" and/or sell copies of the Software, and to permit persons to whom the
+.\" Software is furnished to do so, subject to the following conditions:
+.\"
+.\" The above copyright notice and this permission notice (including the next
+.\" paragraph) shall be included in all copies or substantial portions of the
+.\" Software.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+.\" DEALINGS IN THE SOFTWARE.
+.\"
+.TH XkbLatchGroup __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbLatchGroup \- Latches the keysym group
+.SH SYNOPSIS
+.HP
+.B Bool XkbLatchGroup
+.BI "(\^Display *" "display" "\^,"
+.BI "unsigned int " "device_spec" "\^,"
+.BI "unsigned int " "group" "\^);"
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I display
+connection to the X server
+.TP
+.I device_spec
+device ID, or XkbUseCoreKbd
+.TP
+.I group
+index of the keysym group to latch
+.SH DESCRIPTION
+.LP
+
+.I XkbLatchGroup
+sends a request to the server to latch the specified
+.I group
+and
+does not wait for a reply. It returns True if the request was sent and False
+otherwise.
+
+Reference the keysym group indices with these symbolic constants:
+
+.TS
+c s
+l l
+l l.
+Table 1 Symbolic Group Names
+_
+Symbolic Name Value
+_
+XkbGroup1Index 0
+XkbGroup2Index 1
+XkbGroup3Index 2
+XkbGroup4Index 3
+.TE
+.SH "RETURN VALUES"
+.TP 15
+True
+The
+.I XkbLatchGroup
+function returns True if a request was sent to the server to latch the specified
+.I group.
+.TP 15
+False
+The
+.I XkbLatchGroup
+function returns False if the request was not sent.
+
+
+
diff --git a/libX11/man/xkb/XkbLatchModifiers.man b/libX11/man/xkb/XkbLatchModifiers.man
index 070f7a89f..940dc6d0f 100644
--- a/libX11/man/xkb/XkbLatchModifiers.man
+++ b/libX11/man/xkb/XkbLatchModifiers.man
@@ -1,104 +1,104 @@
-'\" t
-.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
-.\"
-.\" Permission is hereby granted, free of charge, to any person obtaining a
-.\" copy of this software and associated documentation files (the "Software"),
-.\" to deal in the Software without restriction, including without limitation
-.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
-.\" and/or sell copies of the Software, and to permit persons to whom the
-.\" Software is furnished to do so, subject to the following conditions:
-.\"
-.\" The above copyright notice and this permission notice (including the next
-.\" paragraph) shall be included in all copies or substantial portions of the
-.\" Software.
-.\"
-.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-.\" DEALINGS IN THE SOFTWARE.
-.\"
-.TH XkbLatchModifiers __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
-.SH NAME
-XkbLatchModifiers \- Latches and unlatches any of the eight real keyboard
-modifiers
-.SH SYNOPSIS
-.HP
-.B Bool XkbLatchModifiers
-.BI "(\^Display *" "display" "\^,"
-.BI "unsigned int " "device_spec" "\^,"
-.BI "unsigned int " "affect" "\^,"
-.BI "unsigned int " "values" "\^);"
-.if n .ti +5n
-.if t .ti +.5i
-.SH ARGUMENTS
-.TP
-.I display
-connection to the X server
-.TP
-.I device_spec
-device ID, or XkbUseCoreKbd
-.TP
-.I affect
-mask of real modifiers whose lock state is to change
-.TP
-.I values
-1 => lock, 0 => unlock; only for modifiers selected by affect
-.SH DESCRIPTION
-.LP
-.I XkbLatchModifiers
-sends a request to the server to latch the real modifiers
-selected by both
-.I affect
-and
-.I values
-and to unlatch the real modifiers selected by
-.I affect
-, but not selected by
-.I values.
-
-.I XkbLatchModifiers
-does not wait for a reply from the server. It returns True if
-the request was sent, and False otherwise.
-
-The functions in this section that change the use of modifiers use a mask in the
-parameter affect. It is a bitwise inclusive OR of the legal modifier masks:
-
-.TS
-c
-l
-l.
-Table 1 Real Modifier Masks
-_
-Mask
-_
-ShiftMask
-LockMask
-ControlMask
-Mod1Mask
-Mod2Mask
-Mod3Mask
-Mod4Mask
-Mod5Mask
-.TE
-.SH "RETURN VALUES"
-.TP 15
-True
-The
-.I XkbLatchModifiers
-function returns True if a request was sent to the server to latch the real modifiers selected by both
-.I affect
-and
-.I values
-and to unlatch the real modifiers selected by
-.I affect
-, but not selected by
-.I values.
-.TP 15
-False
-The
-.I XkbLatchModifiers
-function returns False if the request was not sent.
-
+'\" t
+.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the "Software"),
+.\" to deal in the Software without restriction, including without limitation
+.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
+.\" and/or sell copies of the Software, and to permit persons to whom the
+.\" Software is furnished to do so, subject to the following conditions:
+.\"
+.\" The above copyright notice and this permission notice (including the next
+.\" paragraph) shall be included in all copies or substantial portions of the
+.\" Software.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+.\" DEALINGS IN THE SOFTWARE.
+.\"
+.TH XkbLatchModifiers __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbLatchModifiers \- Latches and unlatches any of the eight real keyboard
+modifiers
+.SH SYNOPSIS
+.HP
+.B Bool XkbLatchModifiers
+.BI "(\^Display *" "display" "\^,"
+.BI "unsigned int " "device_spec" "\^,"
+.BI "unsigned int " "affect" "\^,"
+.BI "unsigned int " "values" "\^);"
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I display
+connection to the X server
+.TP
+.I device_spec
+device ID, or XkbUseCoreKbd
+.TP
+.I affect
+mask of real modifiers whose lock state is to change
+.TP
+.I values
+1 => lock, 0 => unlock; only for modifiers selected by affect
+.SH DESCRIPTION
+.LP
+.I XkbLatchModifiers
+sends a request to the server to latch the real modifiers
+selected by both
+.I affect
+and
+.I values
+and to unlatch the real modifiers selected by
+.I affect
+, but not selected by
+.I values.
+
+.I XkbLatchModifiers
+does not wait for a reply from the server. It returns True if
+the request was sent, and False otherwise.
+
+The functions in this section that change the use of modifiers use a mask in the
+parameter affect. It is a bitwise inclusive OR of the legal modifier masks:
+
+.TS
+c
+l
+l.
+Table 1 Real Modifier Masks
+_
+Mask
+_
+ShiftMask
+LockMask
+ControlMask
+Mod1Mask
+Mod2Mask
+Mod3Mask
+Mod4Mask
+Mod5Mask
+.TE
+.SH "RETURN VALUES"
+.TP 15
+True
+The
+.I XkbLatchModifiers
+function returns True if a request was sent to the server to latch the real modifiers selected by both
+.I affect
+and
+.I values
+and to unlatch the real modifiers selected by
+.I affect
+, but not selected by
+.I values.
+.TP 15
+False
+The
+.I XkbLatchModifiers
+function returns False if the request was not sent.
+
diff --git a/libX11/man/xkb/XkbLibraryVersion.man b/libX11/man/xkb/XkbLibraryVersion.man
index 28604b422..fc00e78cd 100644
--- a/libX11/man/xkb/XkbLibraryVersion.man
+++ b/libX11/man/xkb/XkbLibraryVersion.man
@@ -1,92 +1,92 @@
-.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
-.\"
-.\" Permission is hereby granted, free of charge, to any person obtaining a
-.\" copy of this software and associated documentation files (the "Software"),
-.\" to deal in the Software without restriction, including without limitation
-.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
-.\" and/or sell copies of the Software, and to permit persons to whom the
-.\" Software is furnished to do so, subject to the following conditions:
-.\"
-.\" The above copyright notice and this permission notice (including the next
-.\" paragraph) shall be included in all copies or substantial portions of the
-.\" Software.
-.\"
-.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-.\" DEALINGS IN THE SOFTWARE.
-.\"
-.TH XkbLibraryVersion __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
-.SH NAME
-XkbLibraryVersion \- Determines the compatibility of a library at runtime.
-.SH SYNOPSIS
-.HP
-.B Bool XkbLibraryVersion
-.BI "(\^int *" "lib_major_in_out" "\^,"
-.BI "int *" "lib_minor_in_out" "\^);"
-.if n .ti +5n
-.if t .ti +.5i
-.SH ARGUMENTS
-.TP
-.I lib_major_in_out
-Specifies and returns the major Xkb library version.
-.TP
-.I lib_minor_in_out
-Specifies and returns the minor Xkb library version.
-.SH DESCRIPTION
-.LP
-If an application is dynamically linked, both the X server and the client-side X
-library must contain the Xkb extension in order for the client to use the Xkb
-extension capabilities. Therefore a dynamically linked application must check
-both the library and the server for compatibility before using Xkb function
-calls. A properly written program must check for compatibility between the
-version of the Xkb library that is dynamically loaded and the one used when the
-application was built. It must then check the server version for compatibility
-with the version of Xkb in the library.
-
-If your application is statically linked, you must still check for server
-compatibility and may check library compatibility. (It is possible to compile
-against one set of header files and link against a different, incompatible,
-version of the library, although this should not normally occur.)
-
-Pass the symbolic value XkbMajorVersion in
-.I lib_major_in_out
-and XkbMinorVersion in
-.I lib_minor_in_out.
-These arguments represent the version of the library used
-at compile time. The
-.I XkbLibraryVersion
-function backfills the major and minor version numbers of the library used at
-run time in
-.I lib_major_in_out and
-.I lib_minor_in_out.
-If the versions of the compile time and run time libraries are
-compatible,
-.I XkbLibraryVersion
-returns True, otherwise, it returns False.
-
-In addition, in order to use the Xkb extension, you must ensure that the
-extension is present in the server and that the server supports the version of
-the extension expected by the client. Use
-.I XkbQueryExtension
-to do this, as described in the next section.
-.SH "RETURN VALUES"
-.TP 15
-True
-The
-.I XkbLibraryVersion
-returns True if the versions of the compile time and run time libraries are
-compatible.
-.TP 15
-False
-The
-.I XkbLibraryVersion
-returns False if the versions of the compile time and run time libraries are not
-compatible.
-.SH "SEE ALSO"
-.BR XkbMajorVersion (__libmansuffix__),
-.BR XkbMinorVersion (__libmansuffix__),
-.BR XkbQueryExtension (__libmansuffix__)
+.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the "Software"),
+.\" to deal in the Software without restriction, including without limitation
+.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
+.\" and/or sell copies of the Software, and to permit persons to whom the
+.\" Software is furnished to do so, subject to the following conditions:
+.\"
+.\" The above copyright notice and this permission notice (including the next
+.\" paragraph) shall be included in all copies or substantial portions of the
+.\" Software.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+.\" DEALINGS IN THE SOFTWARE.
+.\"
+.TH XkbLibraryVersion __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbLibraryVersion \- Determines the compatibility of a library at runtime.
+.SH SYNOPSIS
+.HP
+.B Bool XkbLibraryVersion
+.BI "(\^int *" "lib_major_in_out" "\^,"
+.BI "int *" "lib_minor_in_out" "\^);"
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I lib_major_in_out
+Specifies and returns the major Xkb library version.
+.TP
+.I lib_minor_in_out
+Specifies and returns the minor Xkb library version.
+.SH DESCRIPTION
+.LP
+If an application is dynamically linked, both the X server and the client-side X
+library must contain the Xkb extension in order for the client to use the Xkb
+extension capabilities. Therefore a dynamically linked application must check
+both the library and the server for compatibility before using Xkb function
+calls. A properly written program must check for compatibility between the
+version of the Xkb library that is dynamically loaded and the one used when the
+application was built. It must then check the server version for compatibility
+with the version of Xkb in the library.
+
+If your application is statically linked, you must still check for server
+compatibility and may check library compatibility. (It is possible to compile
+against one set of header files and link against a different, incompatible,
+version of the library, although this should not normally occur.)
+
+Pass the symbolic value XkbMajorVersion in
+.I lib_major_in_out
+and XkbMinorVersion in
+.I lib_minor_in_out.
+These arguments represent the version of the library used
+at compile time. The
+.I XkbLibraryVersion
+function backfills the major and minor version numbers of the library used at
+run time in
+.I lib_major_in_out and
+.I lib_minor_in_out.
+If the versions of the compile time and run time libraries are
+compatible,
+.I XkbLibraryVersion
+returns True, otherwise, it returns False.
+
+In addition, in order to use the Xkb extension, you must ensure that the
+extension is present in the server and that the server supports the version of
+the extension expected by the client. Use
+.I XkbQueryExtension
+to do this, as described in the next section.
+.SH "RETURN VALUES"
+.TP 15
+True
+The
+.I XkbLibraryVersion
+returns True if the versions of the compile time and run time libraries are
+compatible.
+.TP 15
+False
+The
+.I XkbLibraryVersion
+returns False if the versions of the compile time and run time libraries are not
+compatible.
+.SH "SEE ALSO"
+.BR XkbMajorVersion (__libmansuffix__),
+.BR XkbMinorVersion (__libmansuffix__),
+.BR XkbQueryExtension (__libmansuffix__)
diff --git a/libX11/man/xkb/XkbListComponents.man b/libX11/man/xkb/XkbListComponents.man
index de2df94eb..29602b65a 100644
--- a/libX11/man/xkb/XkbListComponents.man
+++ b/libX11/man/xkb/XkbListComponents.man
@@ -1,165 +1,165 @@
-'\" t
-.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
-.\"
-.\" Permission is hereby granted, free of charge, to any person obtaining a
-.\" copy of this software and associated documentation files (the "Software"),
-.\" to deal in the Software without restriction, including without limitation
-.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
-.\" and/or sell copies of the Software, and to permit persons to whom the
-.\" Software is furnished to do so, subject to the following conditions:
-.\"
-.\" The above copyright notice and this permission notice (including the next
-.\" paragraph) shall be included in all copies or substantial portions of the
-.\" Software.
-.\"
-.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-.\" DEALINGS IN THE SOFTWARE.
-.\"
-.TH XkbListComponents __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
-.SH NAME
-XkbListComponents \- List of components for one or more component types
-.SH SYNOPSIS
-.HP
-.B XkbComponentListPtr XkbListComponents
-.BI "(\^Display *" "dpy" "\^,"
-.BI "unsigned int " "device_spec" "\^,"
-.BI "XkbComponentNamesPtr " "ptrns" "\^,"
-.BI "int *" "max_inout" "\^);"
-.if n .ti +5n
-.if t .ti +.5i
-.SH ARGUMENTS
-.TP
-.I \- dpy
-connection to X server
-.TP
-.I \- device_spec
-device ID, or XkbUseCoreKbd
-.TP
-.I \- ptrns
-namelist for components of interest
-.TP
-.I \- max_inout
-max # returned names, # left over
-.SH DESCRIPTION
-.LP
-You may ask the server for a list of components for one or more component types. The request takes the
-form of a set of patterns, one pattern for each of the component types, including a pattern for the
-complete keyboard description. To obtain this list, use
-.I XkbListComponents.
-
-.I XkbListComponents
-queries the server for a list of component names matching the patterns specified in
-.I ptrns.
-It waits for a reply and returns the matching component names in an XkbComponentListRec structure.
-When you are done using the structure, you should free it using
-.I XkbFreeComponentList. device_spec
-indicates a particular device in which the caller is interested. A server is allowed (but not
-required) to restrict its reply to portions of the database that are relevant for that particular
-device.
-
-.I ptrns
-is a pointer to an XkbComponentNamesRec. Each of the fields in
-.I ptrns
-contains a pattern naming the components of interest. Each of the patterns is composed of characters
-from the ISO Latin1 encoding, but can contain only parentheses, the wildcard characters `?' and `*',
-and characters permitted in a component class or member name. A pattern may be NULL, in which case no
-components for that type is returned. Pattern matches with component names are case sensitive. The `?'
-wildcard matches any single character, except a left or right parenthesis; the `*' wildcard matches
-any number of characters, except a left or right parenthesis. If an implementation allows additional
-characters in a component class or member name other than those required by the Xkb extension, the
-result of comparing one of the additional characters to either of the wildcard characters is
-implementation-dependent.
-
-If a pattern contains illegal characters, the illegal characters are ignored. The matching process is
-carried out as if the illegal characters were omitted from the pattern.
-
-.I max_inout
-is used to throttle the amount of data passed to and from the server. On input, it specifies the
-maximum number of names to be returned (the total number of names in all component categories). Upon
-return from
-.I XkbListComponents,
-max_inout contains the number of names that matched the request but were not returned because of the
-limit.
-
-.B Component Names
-
-Component names have the form
-.I "class(member)"
-where
-.I class
-describes a subset of the available components for a particular type and the optional
-.I member
-identifies a specific component from that subset. For example, the name "atlantis(acme)" for a symbols
-component might specify the symbols used for the atlantis national keyboard layout by the vendor
-"acme." Each class has an optional
-.I default
-member - references that specify a class but not a member refer to the default member of the class, if
-one exists. Xkb places no constraints on the interpretation of the class and member names used in
-component names.
-
-The
-.I class
-and
-.I member
-names are both specified using characters from the Latin-1 character set. Xkb implementations must
-accept all alphanumeric characters, minus (`-') and underscore (`_') in class or member names, and
-must not accept parentheses, plus, vertical bar, percent sign, asterisk, question mark, or white
-space. The use of other characters is implementation-dependent.
-.SH STRUCTURES
-.LP
-The component name patterns used to describe the request are passed to
-.I XkbListComponents
-using an XkbComponentNamesRec structure. This structure has no special allocation constraints or
-interrelationships with other structures; allocate and free this structure using standard
-.I malloc
-and
-.I free
-calls or their equivalent:
-.nf
-
- typedef struct _XkbComponentNames {
- char * keymap; /\(** keymap names */
- char * keycodes; /\(** keycode names */
- char * types; /\(** type names */
- char * compat; /\(** compatibility map names */
- char * symbols; /\(** symbol names */
- char * geometry; /\(** geometry names */
- } XkbComponentNamesRec, *XkbComponentNamesPtr;
-
-.fi
-.I XkbListComponents
-returns a pointer to an XkbComponentListRec:
-.nf
-
- typedef struct _XkbComponentList {
- int num_keymaps; /\(** number of entries in keymap */
- int num_keycodes; /\(** number of entries in keycodes */
- int num_types; /\(** number of entries in types */
- int num_compat; /\(** number of entries in compat */
- int num_symbols; /\(** number of entries in symbols */
- int num_geometry; /\(** number of entries in geometry;
- XkbComponentNamePtr keymap; /\(** keymap names */
- XkbComponentNamePtr keycodes; /\(** keycode names */
- XkbComponentNamePtr types; /\(** type names */
- XkbComponentNamePtr compat; /\(** compatibility map names */
- XkbComponentNamePtr symbols; /\(** symbol names */
- XkbComponentNamePtr geometry; /\(** geometry names */
- } XkbComponentListRec, *XkbComponentListPtr;
-
- typedef struct _XkbComponentName {
- unsigned short flags; /\(** hints regarding component name */
- char * name; /\(** name of component */
- } XkbComponentNameRec, *XkbComponentNamePtr;
-
-.fi
-.SH "SEE ALSO"
-.BR XkbFreeComponentList (__libmansuffix__)
-.SH NOTES
-.LP
-Note that the structure used to specify patterns on input is an XkbComponentNamesRec, and that used to
-hold the individual component names upon return is an XkbComponentNameRec (no trailing `s' in Name).
+'\" t
+.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the "Software"),
+.\" to deal in the Software without restriction, including without limitation
+.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
+.\" and/or sell copies of the Software, and to permit persons to whom the
+.\" Software is furnished to do so, subject to the following conditions:
+.\"
+.\" The above copyright notice and this permission notice (including the next
+.\" paragraph) shall be included in all copies or substantial portions of the
+.\" Software.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+.\" DEALINGS IN THE SOFTWARE.
+.\"
+.TH XkbListComponents __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbListComponents \- List of components for one or more component types
+.SH SYNOPSIS
+.HP
+.B XkbComponentListPtr XkbListComponents
+.BI "(\^Display *" "dpy" "\^,"
+.BI "unsigned int " "device_spec" "\^,"
+.BI "XkbComponentNamesPtr " "ptrns" "\^,"
+.BI "int *" "max_inout" "\^);"
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- dpy
+connection to X server
+.TP
+.I \- device_spec
+device ID, or XkbUseCoreKbd
+.TP
+.I \- ptrns
+namelist for components of interest
+.TP
+.I \- max_inout
+max # returned names, # left over
+.SH DESCRIPTION
+.LP
+You may ask the server for a list of components for one or more component types. The request takes the
+form of a set of patterns, one pattern for each of the component types, including a pattern for the
+complete keyboard description. To obtain this list, use
+.I XkbListComponents.
+
+.I XkbListComponents
+queries the server for a list of component names matching the patterns specified in
+.I ptrns.
+It waits for a reply and returns the matching component names in an XkbComponentListRec structure.
+When you are done using the structure, you should free it using
+.I XkbFreeComponentList. device_spec
+indicates a particular device in which the caller is interested. A server is allowed (but not
+required) to restrict its reply to portions of the database that are relevant for that particular
+device.
+
+.I ptrns
+is a pointer to an XkbComponentNamesRec. Each of the fields in
+.I ptrns
+contains a pattern naming the components of interest. Each of the patterns is composed of characters
+from the ISO Latin1 encoding, but can contain only parentheses, the wildcard characters `?' and `*',
+and characters permitted in a component class or member name. A pattern may be NULL, in which case no
+components for that type is returned. Pattern matches with component names are case sensitive. The `?'
+wildcard matches any single character, except a left or right parenthesis; the `*' wildcard matches
+any number of characters, except a left or right parenthesis. If an implementation allows additional
+characters in a component class or member name other than those required by the Xkb extension, the
+result of comparing one of the additional characters to either of the wildcard characters is
+implementation-dependent.
+
+If a pattern contains illegal characters, the illegal characters are ignored. The matching process is
+carried out as if the illegal characters were omitted from the pattern.
+
+.I max_inout
+is used to throttle the amount of data passed to and from the server. On input, it specifies the
+maximum number of names to be returned (the total number of names in all component categories). Upon
+return from
+.I XkbListComponents,
+max_inout contains the number of names that matched the request but were not returned because of the
+limit.
+
+.B Component Names
+
+Component names have the form
+.I "class(member)"
+where
+.I class
+describes a subset of the available components for a particular type and the optional
+.I member
+identifies a specific component from that subset. For example, the name "atlantis(acme)" for a symbols
+component might specify the symbols used for the atlantis national keyboard layout by the vendor
+"acme." Each class has an optional
+.I default
+member - references that specify a class but not a member refer to the default member of the class, if
+one exists. Xkb places no constraints on the interpretation of the class and member names used in
+component names.
+
+The
+.I class
+and
+.I member
+names are both specified using characters from the Latin-1 character set. Xkb implementations must
+accept all alphanumeric characters, minus (`-') and underscore (`_') in class or member names, and
+must not accept parentheses, plus, vertical bar, percent sign, asterisk, question mark, or white
+space. The use of other characters is implementation-dependent.
+.SH STRUCTURES
+.LP
+The component name patterns used to describe the request are passed to
+.I XkbListComponents
+using an XkbComponentNamesRec structure. This structure has no special allocation constraints or
+interrelationships with other structures; allocate and free this structure using standard
+.I malloc
+and
+.I free
+calls or their equivalent:
+.nf
+
+ typedef struct _XkbComponentNames {
+ char * keymap; /\(** keymap names */
+ char * keycodes; /\(** keycode names */
+ char * types; /\(** type names */
+ char * compat; /\(** compatibility map names */
+ char * symbols; /\(** symbol names */
+ char * geometry; /\(** geometry names */
+ } XkbComponentNamesRec, *XkbComponentNamesPtr;
+
+.fi
+.I XkbListComponents
+returns a pointer to an XkbComponentListRec:
+.nf
+
+ typedef struct _XkbComponentList {
+ int num_keymaps; /\(** number of entries in keymap */
+ int num_keycodes; /\(** number of entries in keycodes */
+ int num_types; /\(** number of entries in types */
+ int num_compat; /\(** number of entries in compat */
+ int num_symbols; /\(** number of entries in symbols */
+ int num_geometry; /\(** number of entries in geometry;
+ XkbComponentNamePtr keymap; /\(** keymap names */
+ XkbComponentNamePtr keycodes; /\(** keycode names */
+ XkbComponentNamePtr types; /\(** type names */
+ XkbComponentNamePtr compat; /\(** compatibility map names */
+ XkbComponentNamePtr symbols; /\(** symbol names */
+ XkbComponentNamePtr geometry; /\(** geometry names */
+ } XkbComponentListRec, *XkbComponentListPtr;
+
+ typedef struct _XkbComponentName {
+ unsigned short flags; /\(** hints regarding component name */
+ char * name; /\(** name of component */
+ } XkbComponentNameRec, *XkbComponentNamePtr;
+
+.fi
+.SH "SEE ALSO"
+.BR XkbFreeComponentList (__libmansuffix__)
+.SH NOTES
+.LP
+Note that the structure used to specify patterns on input is an XkbComponentNamesRec, and that used to
+hold the individual component names upon return is an XkbComponentNameRec (no trailing `s' in Name).
diff --git a/libX11/man/xkb/XkbLockGroup.man b/libX11/man/xkb/XkbLockGroup.man
index 706a2d9dd..413d5300f 100644
--- a/libX11/man/xkb/XkbLockGroup.man
+++ b/libX11/man/xkb/XkbLockGroup.man
@@ -1,81 +1,81 @@
-'\" t
-.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
-.\"
-.\" Permission is hereby granted, free of charge, to any person obtaining a
-.\" copy of this software and associated documentation files (the "Software"),
-.\" to deal in the Software without restriction, including without limitation
-.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
-.\" and/or sell copies of the Software, and to permit persons to whom the
-.\" Software is furnished to do so, subject to the following conditions:
-.\"
-.\" The above copyright notice and this permission notice (including the next
-.\" paragraph) shall be included in all copies or substantial portions of the
-.\" Software.
-.\"
-.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-.\" DEALINGS IN THE SOFTWARE.
-.\"
-.TH XkbLockGroup __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
-.SH NAME
-XkbLockGroup \- Locks the keysym group
-.SH SYNOPSIS
-.HP
-.B Bool XkbLockGroup
-.BI "(\^Display *" "display" "\^,"
-.BI "unsigned int " "device_spec" "\^,"
-.BI "unsigned int " "group" "\^);"
-.if n .ti +5n
-.if t .ti +.5i
-.SH ARGUMENTS
-.TP
-.I display
-connection to the X server
-.TP
-.I device_spec
-device ID, or XkbUseCoreKbd
-.TP
-.I group
-index of the keysym group to lock
-.SH DESCRIPTION
-.LP
-.I XkbLockGroup
-sends a request to the server to lock the specified
-.I group
-and does not wait for a reply. It returns True if the request was sent and
-False otherwise.
-
-Reference the keysym group indices with these symbolic constants:
-
-.TS
-c s
-l l
-l l.
-Table 1 Symbolic Group Names
-_
-Symbolic Name Value
-_
-XkbGroup1Index 0
-XkbGroup2Index 1
-XkbGroup3Index 2
-XkbGroup4Index 3
-.TE
-.SH "RETURN VALUES"
-.TP 15
-True
-The
-.I XkbLockGroup
-function returns True when a request was sent to the server to lock the
-specified
-.I group
-and does not wait for a reply.
-.TP 15
-False
-The
-.I XkbLockGroup
-function returns False if the request was not sent.
-
+'\" t
+.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the "Software"),
+.\" to deal in the Software without restriction, including without limitation
+.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
+.\" and/or sell copies of the Software, and to permit persons to whom the
+.\" Software is furnished to do so, subject to the following conditions:
+.\"
+.\" The above copyright notice and this permission notice (including the next
+.\" paragraph) shall be included in all copies or substantial portions of the
+.\" Software.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+.\" DEALINGS IN THE SOFTWARE.
+.\"
+.TH XkbLockGroup __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbLockGroup \- Locks the keysym group
+.SH SYNOPSIS
+.HP
+.B Bool XkbLockGroup
+.BI "(\^Display *" "display" "\^,"
+.BI "unsigned int " "device_spec" "\^,"
+.BI "unsigned int " "group" "\^);"
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I display
+connection to the X server
+.TP
+.I device_spec
+device ID, or XkbUseCoreKbd
+.TP
+.I group
+index of the keysym group to lock
+.SH DESCRIPTION
+.LP
+.I XkbLockGroup
+sends a request to the server to lock the specified
+.I group
+and does not wait for a reply. It returns True if the request was sent and
+False otherwise.
+
+Reference the keysym group indices with these symbolic constants:
+
+.TS
+c s
+l l
+l l.
+Table 1 Symbolic Group Names
+_
+Symbolic Name Value
+_
+XkbGroup1Index 0
+XkbGroup2Index 1
+XkbGroup3Index 2
+XkbGroup4Index 3
+.TE
+.SH "RETURN VALUES"
+.TP 15
+True
+The
+.I XkbLockGroup
+function returns True when a request was sent to the server to lock the
+specified
+.I group
+and does not wait for a reply.
+.TP 15
+False
+The
+.I XkbLockGroup
+function returns False if the request was not sent.
+
diff --git a/libX11/man/xkb/XkbLockModifiers.man b/libX11/man/xkb/XkbLockModifiers.man
index d0ee8a0ec..3d038235b 100644
--- a/libX11/man/xkb/XkbLockModifiers.man
+++ b/libX11/man/xkb/XkbLockModifiers.man
@@ -1,102 +1,102 @@
-'\" t
-.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
-.\"
-.\" Permission is hereby granted, free of charge, to any person obtaining a
-.\" copy of this software and associated documentation files (the "Software"),
-.\" to deal in the Software without restriction, including without limitation
-.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
-.\" and/or sell copies of the Software, and to permit persons to whom the
-.\" Software is furnished to do so, subject to the following conditions:
-.\"
-.\" The above copyright notice and this permission notice (including the next
-.\" paragraph) shall be included in all copies or substantial portions of the
-.\" Software.
-.\"
-.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-.\" DEALINGS IN THE SOFTWARE.
-.\"
-.TH XkbLockModifiers __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
-.SH NAME
-XkbLockModifiers \- Locks and unlocks any of the eight real keyboard modifiers
-.SH SYNOPSIS
-.HP
-.B Bool XkbLockModifiers
-.BI "(\^Display *" "display" "\^,"
-.BI "unsigned int " "device_spec" "\^,"
-.BI "unsigned int " "affect" "\^,"
-.BI "unsigned int " "values" "\^);"
-.if n .ti +5n
-.if t .ti +.5i
-.SH ARGUMENTS
-.TP
-.I display
-connection to the X server
-.TP
-.I device_spec
-device ID, or XkbUseCoreKbd
-.TP
-.I affect
-mask of real modifiers whose lock state is to change
-.TP
-.I values
-1 => lock, 0 => unlock; only for modifiers selected by affect
-.SH DESCRIPTION
-.LP
-.I XkbLockModifiers
-sends a request to the server to lock the real modifiers
-selected by both
-.I affect
-and
-.I values
-and to unlock the real modifiers selected by
-.I affect,
-but not selected by
-.I values. XkbLockModifiers
-does not wait for a reply from the server. It returns True if the request was
-sent, and False otherwise.
-
-The functions in this section that change the use of modifiers use a mask in the
-parameter affect. It is a bitwise inclusive OR of the legal modifier masks:
-
-.TS
-c
-l
-l.
-Table 1 Real Modifier Masks
-_
-Mask
-_
-ShiftMask
-LockMask
-ControlMask
-Mod1Mask
-Mod2Mask
-Mod3Mask
-Mod4Mask
-Mod5Mask
-.TE
-.SH "RETURN VALUES"
-.TP 15
-True
-The
-.I XkbLockModifiers
-function returns True if a request is sent to the server to lock the real
-modifiers
-selected by both
-.I affect
-and
-.I values
-and to unlock the real modifiers selected by
-.I affect,
-but not selected by
-.I values.
-.TP 15
-False
-The
-.I XkbLockModifiers
-function returns False if the request was not sent.
+'\" t
+.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the "Software"),
+.\" to deal in the Software without restriction, including without limitation
+.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
+.\" and/or sell copies of the Software, and to permit persons to whom the
+.\" Software is furnished to do so, subject to the following conditions:
+.\"
+.\" The above copyright notice and this permission notice (including the next
+.\" paragraph) shall be included in all copies or substantial portions of the
+.\" Software.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+.\" DEALINGS IN THE SOFTWARE.
+.\"
+.TH XkbLockModifiers __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbLockModifiers \- Locks and unlocks any of the eight real keyboard modifiers
+.SH SYNOPSIS
+.HP
+.B Bool XkbLockModifiers
+.BI "(\^Display *" "display" "\^,"
+.BI "unsigned int " "device_spec" "\^,"
+.BI "unsigned int " "affect" "\^,"
+.BI "unsigned int " "values" "\^);"
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I display
+connection to the X server
+.TP
+.I device_spec
+device ID, or XkbUseCoreKbd
+.TP
+.I affect
+mask of real modifiers whose lock state is to change
+.TP
+.I values
+1 => lock, 0 => unlock; only for modifiers selected by affect
+.SH DESCRIPTION
+.LP
+.I XkbLockModifiers
+sends a request to the server to lock the real modifiers
+selected by both
+.I affect
+and
+.I values
+and to unlock the real modifiers selected by
+.I affect,
+but not selected by
+.I values. XkbLockModifiers
+does not wait for a reply from the server. It returns True if the request was
+sent, and False otherwise.
+
+The functions in this section that change the use of modifiers use a mask in the
+parameter affect. It is a bitwise inclusive OR of the legal modifier masks:
+
+.TS
+c
+l
+l.
+Table 1 Real Modifier Masks
+_
+Mask
+_
+ShiftMask
+LockMask
+ControlMask
+Mod1Mask
+Mod2Mask
+Mod3Mask
+Mod4Mask
+Mod5Mask
+.TE
+.SH "RETURN VALUES"
+.TP 15
+True
+The
+.I XkbLockModifiers
+function returns True if a request is sent to the server to lock the real
+modifiers
+selected by both
+.I affect
+and
+.I values
+and to unlock the real modifiers selected by
+.I affect,
+but not selected by
+.I values.
+.TP 15
+False
+The
+.I XkbLockModifiers
+function returns False if the request was not sent.
diff --git a/libX11/man/xkb/XkbLookupKeyBinding.man b/libX11/man/xkb/XkbLookupKeyBinding.man
index 742b34d8b..7671ad585 100644
--- a/libX11/man/xkb/XkbLookupKeyBinding.man
+++ b/libX11/man/xkb/XkbLookupKeyBinding.man
@@ -1,84 +1,84 @@
-.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
-.\"
-.\" Permission is hereby granted, free of charge, to any person obtaining a
-.\" copy of this software and associated documentation files (the "Software"),
-.\" to deal in the Software without restriction, including without limitation
-.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
-.\" and/or sell copies of the Software, and to permit persons to whom the
-.\" Software is furnished to do so, subject to the following conditions:
-.\"
-.\" The above copyright notice and this permission notice (including the next
-.\" paragraph) shall be included in all copies or substantial portions of the
-.\" Software.
-.\"
-.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-.\" DEALINGS IN THE SOFTWARE.
-.\"
-.TH XkbLookupKeyBinding __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
-.SH NAME
-XkbLookupKeyBinding \- Find the string bound to a key by XRebindKeySym
-.SH SYNOPSIS
-.HP
-.B int XkbLookupKeyBinding
-.BI "(\^Display *" "dpy" "\^,"
-.BI "KeySym " "sym" "\^,"
-.BI "unsigned int " "state" "\^,"
-.BI "char *" "buf" "\^,"
-.BI "int " "nbytes" "\^,"
-.BI "int *" "extra_rtrn" "\^);"
-.if n .ti +5n
-.if t .ti +.5i
-.SH ARGUMENTS
-.TP
-.I \- dpy
-connection to server
-.TP
-.I \- sym
-connection to server
-.TP
-.I \- state
-state for which string is to be looked up
-.TP
-.I \- buf
-buffer into which returned string is written
-.TP
-.I \- nbytes
-size of buffer in bytes
-.TP
-.I \- extra_rtrn
-backfilled with number bytes overflow
-.SH DESCRIPTION
-.LP
-.I XkbLookupKeyBinding
-is the equivalent of the core
-.I XLookupString
-function.
-
-.I XRebindKeysym
-binds an ASCII string to a specified keysym, so that the string and keysym are
-returned when the key is pressed and a specified list of modifiers are also
-being held down.
-.I XkbLookupKeyBinding
-returns in
-.I buf
-the string associated with the keysym
-.I sym
-and modifier state
-.I state. buf
-is NULL terminated unless there's an overflow. If the string returned is larger
-than
-.I nbytes,
-a count of bytes that does not fit into the buffer is returned in
-.I extra_rtrn.
-.I XkbTranslateKeySym
-returns the number of bytes that it placed into
-.I buf.
-.SH "SEE ALSO"
-.BR XkbTranslateKeySym (__libmansuffix__),
-.BR XLookupString (__libmansuffix__),
-.BR XRebindKeysym (__libmansuffix__)
+.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the "Software"),
+.\" to deal in the Software without restriction, including without limitation
+.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
+.\" and/or sell copies of the Software, and to permit persons to whom the
+.\" Software is furnished to do so, subject to the following conditions:
+.\"
+.\" The above copyright notice and this permission notice (including the next
+.\" paragraph) shall be included in all copies or substantial portions of the
+.\" Software.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+.\" DEALINGS IN THE SOFTWARE.
+.\"
+.TH XkbLookupKeyBinding __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbLookupKeyBinding \- Find the string bound to a key by XRebindKeySym
+.SH SYNOPSIS
+.HP
+.B int XkbLookupKeyBinding
+.BI "(\^Display *" "dpy" "\^,"
+.BI "KeySym " "sym" "\^,"
+.BI "unsigned int " "state" "\^,"
+.BI "char *" "buf" "\^,"
+.BI "int " "nbytes" "\^,"
+.BI "int *" "extra_rtrn" "\^);"
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- dpy
+connection to server
+.TP
+.I \- sym
+connection to server
+.TP
+.I \- state
+state for which string is to be looked up
+.TP
+.I \- buf
+buffer into which returned string is written
+.TP
+.I \- nbytes
+size of buffer in bytes
+.TP
+.I \- extra_rtrn
+backfilled with number bytes overflow
+.SH DESCRIPTION
+.LP
+.I XkbLookupKeyBinding
+is the equivalent of the core
+.I XLookupString
+function.
+
+.I XRebindKeysym
+binds an ASCII string to a specified keysym, so that the string and keysym are
+returned when the key is pressed and a specified list of modifiers are also
+being held down.
+.I XkbLookupKeyBinding
+returns in
+.I buf
+the string associated with the keysym
+.I sym
+and modifier state
+.I state. buf
+is NULL terminated unless there's an overflow. If the string returned is larger
+than
+.I nbytes,
+a count of bytes that does not fit into the buffer is returned in
+.I extra_rtrn.
+.I XkbTranslateKeySym
+returns the number of bytes that it placed into
+.I buf.
+.SH "SEE ALSO"
+.BR XkbTranslateKeySym (__libmansuffix__),
+.BR XLookupString (__libmansuffix__),
+.BR XRebindKeysym (__libmansuffix__)
diff --git a/libX11/man/xkb/XkbLookupKeySym.man b/libX11/man/xkb/XkbLookupKeySym.man
index b44bea7f3..fe9cb133d 100644
--- a/libX11/man/xkb/XkbLookupKeySym.man
+++ b/libX11/man/xkb/XkbLookupKeySym.man
@@ -1,71 +1,71 @@
-.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
-.\"
-.\" Permission is hereby granted, free of charge, to any person obtaining a
-.\" copy of this software and associated documentation files (the "Software"),
-.\" to deal in the Software without restriction, including without limitation
-.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
-.\" and/or sell copies of the Software, and to permit persons to whom the
-.\" Software is furnished to do so, subject to the following conditions:
-.\"
-.\" The above copyright notice and this permission notice (including the next
-.\" paragraph) shall be included in all copies or substantial portions of the
-.\" Software.
-.\"
-.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-.\" DEALINGS IN THE SOFTWARE.
-.\"
-.TH XkbLookupKeySym __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
-.SH NAME
-XkbLookupKeySym \- Find the symbol associated with a key for a particular state
-.SH SYNOPSIS
-.HP
-.B Bool XkbLookupKeySym
-.BI "(\^Display *" "dpy" "\^,"
-.BI "KeyCode " "key" "\^,"
-.BI "unsigned int " "state" "\^,"
-.BI "unsigned int *" "mods_rtrn" "\^,"
-.BI "KeySym *" "sym_rtrn" "\^);"
-.if n .ti +5n
-.if t .ti +.5i
-.SH ARGUMENTS
-.TP
-.I \- dpy
-connection to X server
-.TP
-.I \- key
-key for which symbols are to be found
-.TP
-.I \- state
-state for which symbol should be found
-.TP
-.I \- mods_rtrn
-backfilled with unconsumed modifiers
-.TP
-.I \- sym_rtrn
-backfilled with symbol associated with key + state
-.SH DESCRIPTION
-.LP
-.I XkbLookupKeySym
-is the equivalent of the core
-.I XLookupKeySym
-function. For the core keyboard, given a keycode
-.I key
-and an Xkb state
-.I state, XkbLookupKeySym
-returns the symbol associated with the key in
-.I sym_rtrn
-and the list of modifiers that should still be applied in
-.I mods_rtrn.
-The
-.I state
-parameter is the state from a KeyPress or KeyRelease event.
-.I XkbLookupKeySym
-returns True if it succeeds.
-.SH "SEE ALSO"
-.BR XLookupKeySym (__libmansuffix__)
-
+.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the "Software"),
+.\" to deal in the Software without restriction, including without limitation
+.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
+.\" and/or sell copies of the Software, and to permit persons to whom the
+.\" Software is furnished to do so, subject to the following conditions:
+.\"
+.\" The above copyright notice and this permission notice (including the next
+.\" paragraph) shall be included in all copies or substantial portions of the
+.\" Software.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+.\" DEALINGS IN THE SOFTWARE.
+.\"
+.TH XkbLookupKeySym __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbLookupKeySym \- Find the symbol associated with a key for a particular state
+.SH SYNOPSIS
+.HP
+.B Bool XkbLookupKeySym
+.BI "(\^Display *" "dpy" "\^,"
+.BI "KeyCode " "key" "\^,"
+.BI "unsigned int " "state" "\^,"
+.BI "unsigned int *" "mods_rtrn" "\^,"
+.BI "KeySym *" "sym_rtrn" "\^);"
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- dpy
+connection to X server
+.TP
+.I \- key
+key for which symbols are to be found
+.TP
+.I \- state
+state for which symbol should be found
+.TP
+.I \- mods_rtrn
+backfilled with unconsumed modifiers
+.TP
+.I \- sym_rtrn
+backfilled with symbol associated with key + state
+.SH DESCRIPTION
+.LP
+.I XkbLookupKeySym
+is the equivalent of the core
+.I XLookupKeySym
+function. For the core keyboard, given a keycode
+.I key
+and an Xkb state
+.I state, XkbLookupKeySym
+returns the symbol associated with the key in
+.I sym_rtrn
+and the list of modifiers that should still be applied in
+.I mods_rtrn.
+The
+.I state
+parameter is the state from a KeyPress or KeyRelease event.
+.I XkbLookupKeySym
+returns True if it succeeds.
+.SH "SEE ALSO"
+.BR XLookupKeySym (__libmansuffix__)
+
diff --git a/libX11/man/xkb/XkbModActionVMods.man b/libX11/man/xkb/XkbModActionVMods.man
index c3aa6afae..bdf47db4b 100644
--- a/libX11/man/xkb/XkbModActionVMods.man
+++ b/libX11/man/xkb/XkbModActionVMods.man
@@ -1,48 +1,48 @@
-'\" t
-.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
-.\"
-.\" Permission is hereby granted, free of charge, to any person obtaining a
-.\" copy of this software and associated documentation files (the "Software"),
-.\" to deal in the Software without restriction, including without limitation
-.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
-.\" and/or sell copies of the Software, and to permit persons to whom the
-.\" Software is furnished to do so, subject to the following conditions:
-.\"
-.\" The above copyright notice and this permission notice (including the next
-.\" paragraph) shall be included in all copies or substantial portions of the
-.\" Software.
-.\"
-.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-.\" DEALINGS IN THE SOFTWARE.
-.\"
-.TH XkbModActionVMods __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
-.SH NAME
-XkbModActionVMods \- Returns the vmods1 and vmods2 fields of act converted to the vmods format of an
-Xkb modifier description
-.SH SYNOPSIS
-.HP
-.B unsigned short XkbModActionVMods
-.BI "(\^XkbAction " "act" "\^);"
-.if n .ti +5n
-.if t .ti +.5i
-.SH ARGUMENTS
-.TP
-.I \- act
-action from which to extract virtual mods
-.SH DESCRIPTION
-.LP
-.I XkbModActionVMods
-returns the
-.I vmods1
-and
-.I vmods2
-fields of
-.I act
-converted to the
-.I vmods
-format of an Xkb modifier description.
+'\" t
+.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the "Software"),
+.\" to deal in the Software without restriction, including without limitation
+.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
+.\" and/or sell copies of the Software, and to permit persons to whom the
+.\" Software is furnished to do so, subject to the following conditions:
+.\"
+.\" The above copyright notice and this permission notice (including the next
+.\" paragraph) shall be included in all copies or substantial portions of the
+.\" Software.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+.\" DEALINGS IN THE SOFTWARE.
+.\"
+.TH XkbModActionVMods __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbModActionVMods \- Returns the vmods1 and vmods2 fields of act converted to the vmods format of an
+Xkb modifier description
+.SH SYNOPSIS
+.HP
+.B unsigned short XkbModActionVMods
+.BI "(\^XkbAction " "act" "\^);"
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- act
+action from which to extract virtual mods
+.SH DESCRIPTION
+.LP
+.I XkbModActionVMods
+returns the
+.I vmods1
+and
+.I vmods2
+fields of
+.I act
+converted to the
+.I vmods
+format of an Xkb modifier description.
diff --git a/libX11/man/xkb/XkbNoteControlsChanges.man b/libX11/man/xkb/XkbNoteControlsChanges.man
index ad891eafa..cf40ed089 100644
--- a/libX11/man/xkb/XkbNoteControlsChanges.man
+++ b/libX11/man/xkb/XkbNoteControlsChanges.man
@@ -1,200 +1,200 @@
-'\" t
-.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
-.\"
-.\" Permission is hereby granted, free of charge, to any person obtaining a
-.\" copy of this software and associated documentation files (the "Software"),
-.\" to deal in the Software without restriction, including without limitation
-.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
-.\" and/or sell copies of the Software, and to permit persons to whom the
-.\" Software is furnished to do so, subject to the following conditions:
-.\"
-.\" The above copyright notice and this permission notice (including the next
-.\" paragraph) shall be included in all copies or substantial portions of the
-.\" Software.
-.\"
-.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-.\" DEALINGS IN THE SOFTWARE.
-.\"
-.TH XkbNoteControlsChanges __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
-.SH NAME
-XkbNoteControlsChanges \- Notes the changes in a changes structure when a client receives an XkbControlsNotify
-event
-.SH SYNOPSIS
-.HP
-.B void XkbNoteControlsChanges
-.BI "(\^XkbControlsChangesPtr " "changes" "\^,"
-.BI "XkbControlsNotifyEvent *" "new" "\^,"
-.BI "unsigned int " "wanted" "\^);"
-.if n .ti +5n
-.if t .ti +.5i
-.SH ARGUMENTS
-.TP
-.I \- changes
-records changes indicated by new
-.TP
-.I \- new
-tells which things have changed
-.TP
-.I \- wanted
-tells which parts of new to record in changes
-.SH DESCRIPTION
-.LP
-Whenever a field in the controls structure changes in the server's keyboard description, the server sends an
-XkbControlsNotify event to all interested clients.To receive XkbControlsNotify events under all possible
-conditions, use
-.I XkbSelectEvents
-and pass XkbControlsNotifyMask in both
-.I bits_to_change
-and
-.I values_for_bits.
-
-To receive XkbControlsNotify events only under certain conditions, use
-.I XkbSelectEventDetails
-using XkbControlsNotify as the
-.I event_type
-and specifying the desired state changes in
-.I bits_to_change
-and
-.I values_for_bits
-using mask bits from Table 1.
-
-Table 1 shows the actual values for the individual mask bits used to select
-controls for
-modification and to enable and disable the control. Note that the same mask bit
-is used to
-specify general modifications to the parameters used to configure the control
-(which), and to
-enable and disable the control (enabled_ctrls). The anomalies in the table (no
-"ok" in column)
-are for controls that have no configurable attributes; and for controls that are
-not boolean
-controls and therefore cannot be enabled or disabled.
-
-.TS
-c s s s
-l l l l
-l l l l
-l l l l.
-Table 1 Controls Mask Bits
-_
-Mask Bit which or enabled Value
- changed_ctrls _ctrls
-_
-XkbRepeatKeysMask ok ok (1L<<0)
-XkbSlowKeysMask ok ok (1L<<1)
-XkbBounceKeysMask ok ok (1L<<2)
-XkbStickyKeysMask ok ok (1L<<3)
-XkbMouseKeysMask ok ok (1L<<4)
-XkbMouseKeysAccelMask ok ok (1L<<5)
-XkbAccessXKeysMask ok ok (1L<<6)
-XkbAccessXTimeoutMask ok ok (1L<<7)
-XkbAccessXFeedbackMask ok ok (1L<<8)
-XkbAudibleBellMask ok (1L<<9)
-XkbOverlay1Mask ok (1L<<10)
-XkbOverlay2Mask ok (1L<<11)
-XkbIgnoreGroupLockMask ok (1L<<12)
-XkbGroupsWrapMask ok (1L<<27)
-XkbInternalModsMask ok (1L<<28)
-XkbIgnoreLockModsMask ok (1L<<29)
-XkbPerKeyRepeatMask ok (1L<<30)
-XkbControlsEnabledMask ok (1L<<31)
-XkbAccessXOptionsMask ok ok (XkbStickyKeysMask |
-XkbAccessXFeedbackMask)
-XkbAllBooleanCtrlsMask ok (0x00001FFF)
-XkbAllControlsMask ok (0xF8001FFF)
-.TE
-
-The
-.I changed_ctrls
-field specifies the controls components that have changed and consists of bits taken from the masks defined in
-Table 1 with "ok" in the
-.I changed_ctrls
-column.
-
-The controls currently enabled in the server are reported in the
-.I enabled_ctrls
-field. If any controls were just enabled or disabled (that is, the contents of the
-.I enabled_ctrls
-field changed), they are flagged in the
-.I enabled_ctrl_changes
-field. The valid bits for these fields are the masks listed in Table 1 with "ok" in the
-.I enabled_ctrls
-column. The
-.I num_groups
-field reports the number of groups bound to the key belonging to the most number of groups and is automatically
-updated
-when the keyboard mapping changes.
-
-If the change was caused by a request from a client, the
-.I keycode
-and
-.I event_type
-fields are set to zero and the
-.I req_major
-and
-.I req_minor
-fields identify the request. The
-.I req_major value is the same as the major extension opcode. Otherwise,
-.I event_type
-is set to the type of event that caused the change (one of KeyPress, KeyRelease, DeviceKeyPress,
-DeviceKeyRelease,
-ButtonPress or ButtonRelease), and
-.I req_major
-and
-.I req_minor
-are undefined. If
-.I event_type
-is KeyPress, KeyRelease, DeviceKeyPress, or DeviceKeyRelease, the
-.I keycode
-field is set to the key that caused the change. If
-.I event_type
-is ButtonPress or ButtonRelease,
-.I keycode
-contains the button number.
-
-When a client receives an XkbControlsNotify event, it can note the changes in a changes structure using
-.I XkbNoteControlsChanges.
-
-The
-.I wanted
-parameter is a bitwise inclusive OR of bits taken from the set of masks specified in Table 1 with "ok" in the
-.I changed_ctrls
-column.
-.I XkbNoteControlsChanges
-copies any changes reported in
-.I new
-and specified in
-.I wanted
-into the changes record specified by
-.I old.
-.SH STRUCTURES
-.LP
-.nf
-The structure for the XkbControlsNotify event is defined as follows:
-
-typedef struct {
- int type; /\(** Xkb extension base event code */
- unsigned long serial; /\(** X server serial number for event */
- Bool send_event; /\(** True => synthetically generated */
- Display * display; /\(** server connection where event generated */
- Time time; /\(** server time when event generated */
- int xkb_type; /\(** XkbCompatMapNotify */
- int device; /\(** Xkb device ID, will not be XkbUseCoreKbd */
- unsigned int changed_ctrls; /\(** bits indicating which controls data have changed*/
- unsigned int enabled_ctrls; /\(** controls currently enabled in server */
- unsigned int enabled_ctrl_changes; /\(** bits indicating enabled/disabled controls */
- int num_groups; /\(** current number of keyboard groups */
- KeyCode keycode; /\(** != 0 => keycode of key causing change */
- char event_type; /\(** Type of event causing change */
- char req_major; /\(** major event code of event causing change */
- char req_minor; /\(** minor event code of event causing change */
-} XkbControlsNotifyEvent;
-.fi
-.SH "SEE ALSO"
-.BR XkbSelectEventDetails (__libmansuffix__),
-.BR XkbSelectEvents (__libmansuffix__)
+'\" t
+.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the "Software"),
+.\" to deal in the Software without restriction, including without limitation
+.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
+.\" and/or sell copies of the Software, and to permit persons to whom the
+.\" Software is furnished to do so, subject to the following conditions:
+.\"
+.\" The above copyright notice and this permission notice (including the next
+.\" paragraph) shall be included in all copies or substantial portions of the
+.\" Software.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+.\" DEALINGS IN THE SOFTWARE.
+.\"
+.TH XkbNoteControlsChanges __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbNoteControlsChanges \- Notes the changes in a changes structure when a client receives an XkbControlsNotify
+event
+.SH SYNOPSIS
+.HP
+.B void XkbNoteControlsChanges
+.BI "(\^XkbControlsChangesPtr " "changes" "\^,"
+.BI "XkbControlsNotifyEvent *" "new" "\^,"
+.BI "unsigned int " "wanted" "\^);"
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- changes
+records changes indicated by new
+.TP
+.I \- new
+tells which things have changed
+.TP
+.I \- wanted
+tells which parts of new to record in changes
+.SH DESCRIPTION
+.LP
+Whenever a field in the controls structure changes in the server's keyboard description, the server sends an
+XkbControlsNotify event to all interested clients.To receive XkbControlsNotify events under all possible
+conditions, use
+.I XkbSelectEvents
+and pass XkbControlsNotifyMask in both
+.I bits_to_change
+and
+.I values_for_bits.
+
+To receive XkbControlsNotify events only under certain conditions, use
+.I XkbSelectEventDetails
+using XkbControlsNotify as the
+.I event_type
+and specifying the desired state changes in
+.I bits_to_change
+and
+.I values_for_bits
+using mask bits from Table 1.
+
+Table 1 shows the actual values for the individual mask bits used to select
+controls for
+modification and to enable and disable the control. Note that the same mask bit
+is used to
+specify general modifications to the parameters used to configure the control
+(which), and to
+enable and disable the control (enabled_ctrls). The anomalies in the table (no
+"ok" in column)
+are for controls that have no configurable attributes; and for controls that are
+not boolean
+controls and therefore cannot be enabled or disabled.
+
+.TS
+c s s s
+l l l l
+l l l l
+l l l l.
+Table 1 Controls Mask Bits
+_
+Mask Bit which or enabled Value
+ changed_ctrls _ctrls
+_
+XkbRepeatKeysMask ok ok (1L<<0)
+XkbSlowKeysMask ok ok (1L<<1)
+XkbBounceKeysMask ok ok (1L<<2)
+XkbStickyKeysMask ok ok (1L<<3)
+XkbMouseKeysMask ok ok (1L<<4)
+XkbMouseKeysAccelMask ok ok (1L<<5)
+XkbAccessXKeysMask ok ok (1L<<6)
+XkbAccessXTimeoutMask ok ok (1L<<7)
+XkbAccessXFeedbackMask ok ok (1L<<8)
+XkbAudibleBellMask ok (1L<<9)
+XkbOverlay1Mask ok (1L<<10)
+XkbOverlay2Mask ok (1L<<11)
+XkbIgnoreGroupLockMask ok (1L<<12)
+XkbGroupsWrapMask ok (1L<<27)
+XkbInternalModsMask ok (1L<<28)
+XkbIgnoreLockModsMask ok (1L<<29)
+XkbPerKeyRepeatMask ok (1L<<30)
+XkbControlsEnabledMask ok (1L<<31)
+XkbAccessXOptionsMask ok ok (XkbStickyKeysMask |
+XkbAccessXFeedbackMask)
+XkbAllBooleanCtrlsMask ok (0x00001FFF)
+XkbAllControlsMask ok (0xF8001FFF)
+.TE
+
+The
+.I changed_ctrls
+field specifies the controls components that have changed and consists of bits taken from the masks defined in
+Table 1 with "ok" in the
+.I changed_ctrls
+column.
+
+The controls currently enabled in the server are reported in the
+.I enabled_ctrls
+field. If any controls were just enabled or disabled (that is, the contents of the
+.I enabled_ctrls
+field changed), they are flagged in the
+.I enabled_ctrl_changes
+field. The valid bits for these fields are the masks listed in Table 1 with "ok" in the
+.I enabled_ctrls
+column. The
+.I num_groups
+field reports the number of groups bound to the key belonging to the most number of groups and is automatically
+updated
+when the keyboard mapping changes.
+
+If the change was caused by a request from a client, the
+.I keycode
+and
+.I event_type
+fields are set to zero and the
+.I req_major
+and
+.I req_minor
+fields identify the request. The
+.I req_major value is the same as the major extension opcode. Otherwise,
+.I event_type
+is set to the type of event that caused the change (one of KeyPress, KeyRelease, DeviceKeyPress,
+DeviceKeyRelease,
+ButtonPress or ButtonRelease), and
+.I req_major
+and
+.I req_minor
+are undefined. If
+.I event_type
+is KeyPress, KeyRelease, DeviceKeyPress, or DeviceKeyRelease, the
+.I keycode
+field is set to the key that caused the change. If
+.I event_type
+is ButtonPress or ButtonRelease,
+.I keycode
+contains the button number.
+
+When a client receives an XkbControlsNotify event, it can note the changes in a changes structure using
+.I XkbNoteControlsChanges.
+
+The
+.I wanted
+parameter is a bitwise inclusive OR of bits taken from the set of masks specified in Table 1 with "ok" in the
+.I changed_ctrls
+column.
+.I XkbNoteControlsChanges
+copies any changes reported in
+.I new
+and specified in
+.I wanted
+into the changes record specified by
+.I old.
+.SH STRUCTURES
+.LP
+.nf
+The structure for the XkbControlsNotify event is defined as follows:
+
+typedef struct {
+ int type; /\(** Xkb extension base event code */
+ unsigned long serial; /\(** X server serial number for event */
+ Bool send_event; /\(** True => synthetically generated */
+ Display * display; /\(** server connection where event generated */
+ Time time; /\(** server time when event generated */
+ int xkb_type; /\(** XkbCompatMapNotify */
+ int device; /\(** Xkb device ID, will not be XkbUseCoreKbd */
+ unsigned int changed_ctrls; /\(** bits indicating which controls data have changed*/
+ unsigned int enabled_ctrls; /\(** controls currently enabled in server */
+ unsigned int enabled_ctrl_changes; /\(** bits indicating enabled/disabled controls */
+ int num_groups; /\(** current number of keyboard groups */
+ KeyCode keycode; /\(** != 0 => keycode of key causing change */
+ char event_type; /\(** Type of event causing change */
+ char req_major; /\(** major event code of event causing change */
+ char req_minor; /\(** minor event code of event causing change */
+} XkbControlsNotifyEvent;
+.fi
+.SH "SEE ALSO"
+.BR XkbSelectEventDetails (__libmansuffix__),
+.BR XkbSelectEvents (__libmansuffix__)
diff --git a/libX11/man/xkb/XkbNoteDeviceChanges.man b/libX11/man/xkb/XkbNoteDeviceChanges.man
index 1976fa686..c97f611d6 100644
--- a/libX11/man/xkb/XkbNoteDeviceChanges.man
+++ b/libX11/man/xkb/XkbNoteDeviceChanges.man
@@ -1,135 +1,135 @@
-'\" t
-.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
-.\"
-.\" Permission is hereby granted, free of charge, to any person obtaining a
-.\" copy of this software and associated documentation files (the "Software"),
-.\" to deal in the Software without restriction, including without limitation
-.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
-.\" and/or sell copies of the Software, and to permit persons to whom the
-.\" Software is furnished to do so, subject to the following conditions:
-.\"
-.\" The above copyright notice and this permission notice (including the next
-.\" paragraph) shall be included in all copies or substantial portions of the
-.\" Software.
-.\"
-.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-.\" DEALINGS IN THE SOFTWARE.
-.\"
-.TH XkbNoteDeviceChanges __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
-.SH NAME
-XkbNoteDeviceChanges \- Note device changes reported in an XkbExtensionDeviceNotify event
-.SH SYNOPSIS
-.HP
-.B void XkbNoteDeviceChanges
-.BI "(\^XkbDeviceChangesPtr " "old" "\^,"
-.BI "XkbExtensionDeviceNotifyEvent *" "new" "\^,"
-.BI "unsigned int " "wanted" "\^);"
-.if n .ti +5n
-.if t .ti +.5i
-.SH ARGUMENTS
-.TP
-.I \- old
-structure tracking state changes
-.TP
-.I \- new
-event indicating state changes
-.TP
-.I \- wanted
-mask indicating changes to note
-.SH DESCRIPTION
-.LP
-The
-.I wanted
-field specifies the changes that should be noted in
-.I old,
-and is composed of the bitwise inclusive OR of one or more of the masks from Table 1. The
-.I reason
-field of the event in
-.I new
-indicates the types of changes the event is reporting.
-.I XkbNoteDeviceChanges
-updates the XkbDeviceChangesRec specified by
-.I old
-with the changes that are both specified in
-.I wanted
-and contained in
-.I new->reason.
-
-.nf
- Table 1 XkbDeviceInfoRec Mask Bits
-____________________________________________________________________________________
-Name XkbDeviceInfoRec Value Capability If Set
- Fields Effected
-____________________________________________________________________________________
-XkbXI_KeyboardsMask (1L <<0) Clients can use all
- Xkb requests and events
- with KeyClass devices
- supported by the input
- device extension.
-
-XkbXI_ButtonActionsMask num_btns (1L <<1) Clients can assign key
- btn_acts actions to buttons
- non-KeyClass input
- extension devices.
-
-XkbXI_IndicatorNamesMask leds->names (1L <<2) Clients can assign
- names to indicators on
- non-KeyClass input
- extension devices.
-
-XkbXI_IndicatorMapsMask leds->maps (1L <<3) Clients can assign
- indicator maps to
- indicators on
- non-KeyClass input
- extension devices.
-
-XkbXI_IndicatorStateMask leds->state (1L <<4) Clients can request
- the status of indicators
- on non-KeyClass input
- extension devices.
-
-XkbXI_IndicatorsMask sz_leds (0x1c) XkbXI_IndicatorNamesMask |
- num_leds XkbXI_IndicatorMapsMask |
- leds->* XkbXI_IndicatorStateMask
-
-XkbXI_UnsupportedFeaturesMask unsupported (1L <<15)
-
-XkbXI_AllDeviceFeaturesMask Those selected (0x1e) XkbXI_IndicatorsMask |
- by Value Column XkbSI_ButtonActionsMask
- masks
-
-XkbXI_AllFeaturesMask Those selected (0x1f) XkbSI_AllDeviceFeaturesMask |
- by Value Column XkbSI_KeyboardsMask
- masks
-
-XkbXI_AllDetailsMask Those selected (0x801f) XkbXI_AllFeaturesMask |
- by Value column XkbXI_UnsupportedFeaturesMask
- masks
-.fi
-
-To update a local copy of the state and configuration of an X input extension device with the changes
-previously noted in an XkbDeviceChangesRec structure, use
-.I XkbGetDeviceInfoChanges.
-.SH STRUCTURES
-.LP
-Changes to an Xkb extension device may be tracked by listening to XkbDeviceExtensionNotify events and
-accumulating the changes in an XkbDeviceChangesRec structure. The changes noted in the structure may
-then be used in subsequent operations to update either a server configuration or a local copy of an
-Xkb extension device configuration. The changes structure is defined as follows:
-.nf
-
-typedef struct _XkbDeviceChanges {
- unsigned int changed; /\(** bits indicating what has changed */
- unsigned short first_btn; /\(** number of first button which changed, if any */
- unsigned short num_btns; /\(** number of buttons that have changed */
- XkbDeviceLedChangesRec leds;
-} XkbDeviceChangesRec,*XkbDeviceChangesPtr;
-
-.fi
-.SH "SEE ALSO"
-.BR XkbGetDeviceInfoChanges (__libmansuffix__)
+'\" t
+.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the "Software"),
+.\" to deal in the Software without restriction, including without limitation
+.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
+.\" and/or sell copies of the Software, and to permit persons to whom the
+.\" Software is furnished to do so, subject to the following conditions:
+.\"
+.\" The above copyright notice and this permission notice (including the next
+.\" paragraph) shall be included in all copies or substantial portions of the
+.\" Software.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+.\" DEALINGS IN THE SOFTWARE.
+.\"
+.TH XkbNoteDeviceChanges __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbNoteDeviceChanges \- Note device changes reported in an XkbExtensionDeviceNotify event
+.SH SYNOPSIS
+.HP
+.B void XkbNoteDeviceChanges
+.BI "(\^XkbDeviceChangesPtr " "old" "\^,"
+.BI "XkbExtensionDeviceNotifyEvent *" "new" "\^,"
+.BI "unsigned int " "wanted" "\^);"
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- old
+structure tracking state changes
+.TP
+.I \- new
+event indicating state changes
+.TP
+.I \- wanted
+mask indicating changes to note
+.SH DESCRIPTION
+.LP
+The
+.I wanted
+field specifies the changes that should be noted in
+.I old,
+and is composed of the bitwise inclusive OR of one or more of the masks from Table 1. The
+.I reason
+field of the event in
+.I new
+indicates the types of changes the event is reporting.
+.I XkbNoteDeviceChanges
+updates the XkbDeviceChangesRec specified by
+.I old
+with the changes that are both specified in
+.I wanted
+and contained in
+.I new->reason.
+
+.nf
+ Table 1 XkbDeviceInfoRec Mask Bits
+____________________________________________________________________________________
+Name XkbDeviceInfoRec Value Capability If Set
+ Fields Effected
+____________________________________________________________________________________
+XkbXI_KeyboardsMask (1L <<0) Clients can use all
+ Xkb requests and events
+ with KeyClass devices
+ supported by the input
+ device extension.
+
+XkbXI_ButtonActionsMask num_btns (1L <<1) Clients can assign key
+ btn_acts actions to buttons
+ non-KeyClass input
+ extension devices.
+
+XkbXI_IndicatorNamesMask leds->names (1L <<2) Clients can assign
+ names to indicators on
+ non-KeyClass input
+ extension devices.
+
+XkbXI_IndicatorMapsMask leds->maps (1L <<3) Clients can assign
+ indicator maps to
+ indicators on
+ non-KeyClass input
+ extension devices.
+
+XkbXI_IndicatorStateMask leds->state (1L <<4) Clients can request
+ the status of indicators
+ on non-KeyClass input
+ extension devices.
+
+XkbXI_IndicatorsMask sz_leds (0x1c) XkbXI_IndicatorNamesMask |
+ num_leds XkbXI_IndicatorMapsMask |
+ leds->* XkbXI_IndicatorStateMask
+
+XkbXI_UnsupportedFeaturesMask unsupported (1L <<15)
+
+XkbXI_AllDeviceFeaturesMask Those selected (0x1e) XkbXI_IndicatorsMask |
+ by Value Column XkbSI_ButtonActionsMask
+ masks
+
+XkbXI_AllFeaturesMask Those selected (0x1f) XkbSI_AllDeviceFeaturesMask |
+ by Value Column XkbSI_KeyboardsMask
+ masks
+
+XkbXI_AllDetailsMask Those selected (0x801f) XkbXI_AllFeaturesMask |
+ by Value column XkbXI_UnsupportedFeaturesMask
+ masks
+.fi
+
+To update a local copy of the state and configuration of an X input extension device with the changes
+previously noted in an XkbDeviceChangesRec structure, use
+.I XkbGetDeviceInfoChanges.
+.SH STRUCTURES
+.LP
+Changes to an Xkb extension device may be tracked by listening to XkbDeviceExtensionNotify events and
+accumulating the changes in an XkbDeviceChangesRec structure. The changes noted in the structure may
+then be used in subsequent operations to update either a server configuration or a local copy of an
+Xkb extension device configuration. The changes structure is defined as follows:
+.nf
+
+typedef struct _XkbDeviceChanges {
+ unsigned int changed; /\(** bits indicating what has changed */
+ unsigned short first_btn; /\(** number of first button which changed, if any */
+ unsigned short num_btns; /\(** number of buttons that have changed */
+ XkbDeviceLedChangesRec leds;
+} XkbDeviceChangesRec,*XkbDeviceChangesPtr;
+
+.fi
+.SH "SEE ALSO"
+.BR XkbGetDeviceInfoChanges (__libmansuffix__)
diff --git a/libX11/man/xkb/XkbNoteIndicatorChanges.man b/libX11/man/xkb/XkbNoteIndicatorChanges.man
index 0614b1660..eba152d75 100644
--- a/libX11/man/xkb/XkbNoteIndicatorChanges.man
+++ b/libX11/man/xkb/XkbNoteIndicatorChanges.man
@@ -1,123 +1,123 @@
-.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
-.\"
-.\" Permission is hereby granted, free of charge, to any person obtaining a
-.\" copy of this software and associated documentation files (the "Software"),
-.\" to deal in the Software without restriction, including without limitation
-.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
-.\" and/or sell copies of the Software, and to permit persons to whom the
-.\" Software is furnished to do so, subject to the following conditions:
-.\"
-.\" The above copyright notice and this permission notice (including the next
-.\" paragraph) shall be included in all copies or substantial portions of the
-.\" Software.
-.\"
-.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-.\" DEALINGS IN THE SOFTWARE.
-.\"
-.TH XkbNoteIndicatorChanges __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
-.SH NAME
-XkbNoteIndicatorChanges \- Notes the changes in a changes structure
-.SH SYNOPSIS
-.HP
-.B void XkbNoteIndicatorChanges
-.BI "(\^XkbIndicatorChangesPtr " "old" "\^,"
-.BI "XkbIndicatorNotifyEvent *" "new" "\^,"
-.BI "unsigned int " "wanted" "\^);"
-.if n .ti +5n
-.if t .ti +.5i
-.SH ARGUMENTS
-.TP
-.I \- old
-XkbIndicatorChanges structure to be updated
-.TP
-.I \- new
-event from which changes are to be copied
-.TP
-.I \- wanted
-which changes are to be noted
-.SH DESCRIPTION
-.LP
-Whenever an indicator changes state, the server sends XkbIndicatorStateNotify events to all
-interested clients. Similarly, whenever an indicator's map changes, the server sends
-XkbIndicatorMapNotify events to all interested clients.
-
-To receive XkbIndicatorStateNotify events, use
-.I XkbSelectEvents
-with both the
-.I bits_to_change
-and
-.I values_for_bits
-parameters containing XkbIndicatorStateNotifyMask. To receive XkbIndicatorMapNotify events,
-use
-.I XkbSelectEvents
-with XkbIndicatorMapNotifyMask.
-
-To receive events for only specific indicators, use
-.I XkbSelectEventDetails.
-Set the
-.I event_type
-parameter to XkbIndicatorStateNotify or XkbIndicatorMapNotify, and set both the
-.I bits_to_change
-and
-.I values_for_bits
-detail parameters to a mask where each bit specifies one indicator, turning on those bits that
-specify the indicators for which you want to receive events.
-
-The
-.I changed
-parameter is a mask that is the bitwise inclusive OR of the indicators that have changed. If
-the event is of type XkbIndicatorMapNotify,
-.I changed
-reports the maps that changed. If the event is of type XkbIndicatorStateNotify,
-.I changed
-reports the indicators that have changed state.
-.I state
-is a mask that specifies the current state of all indicators, whether they have changed or
-not, for both XkbIndicatorStateNotify and IndicatorMapNotify events.
-
-When your client application receives either a XkbIndicatorStateNotify event or
-XkbIndicatorMapNotify event, you can note the changes in a changes structure by calling
-.I XkbNoteIndicatorChanges.
-
-
-The
-.I wanted
-parameter is the bitwise inclusive OR of XkbIndicatorMapMask and
-XkbIndicatorStateMask.
-.I XkbNoteIndicatorChanges
-copies any changes reported in
-.I new
-and specified in
-.I wanted
-into the changes record specified by
-.I old.
-.SH STRUCTURES
-Both types of indicator events use the same structure:
-.nf
-
-typedef struct _XkbIndicatorNotify {
- int type; /\(** Xkb extension base event code */
- unsigned long serial; /\(** X server serial number for event */
- Bool send_event; /\(** True => synthetically generated */
- Display * display; /\(** server connection where event generated */
- Time time; /\(** server time when event generated */
- int xkb_type; /\(** specifies state or map notify */
- int device; /\(** Xkb device ID, will not be XkbUseCoreKbd */
- unsigned int changed; /\(** mask of indicators with new state or map */
- unsigned int state; /\(** current state of all indicators */
-} XkbIndicatorNotifyEvent;
-
-.fi
-.I xkb_type
-is either XkbIndicatorStateNotify or XkbIndicatorMapNotify, depending on whether the event is
-a kbIndicatorStateNotify event or kbIndicatorMapNotify event.
-.SH "SEE ALSO"
-.BR XkbIndicatorMapMask (__libmansuffix__),
-.BR XkbIndicatorStateMask (__libmansuffix__),
-.BR XkbSelectEventDetails (__libmansuffix__),
-.BR XkbSelectEvents (__libmansuffix__)
+.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the "Software"),
+.\" to deal in the Software without restriction, including without limitation
+.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
+.\" and/or sell copies of the Software, and to permit persons to whom the
+.\" Software is furnished to do so, subject to the following conditions:
+.\"
+.\" The above copyright notice and this permission notice (including the next
+.\" paragraph) shall be included in all copies or substantial portions of the
+.\" Software.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+.\" DEALINGS IN THE SOFTWARE.
+.\"
+.TH XkbNoteIndicatorChanges __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbNoteIndicatorChanges \- Notes the changes in a changes structure
+.SH SYNOPSIS
+.HP
+.B void XkbNoteIndicatorChanges
+.BI "(\^XkbIndicatorChangesPtr " "old" "\^,"
+.BI "XkbIndicatorNotifyEvent *" "new" "\^,"
+.BI "unsigned int " "wanted" "\^);"
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- old
+XkbIndicatorChanges structure to be updated
+.TP
+.I \- new
+event from which changes are to be copied
+.TP
+.I \- wanted
+which changes are to be noted
+.SH DESCRIPTION
+.LP
+Whenever an indicator changes state, the server sends XkbIndicatorStateNotify events to all
+interested clients. Similarly, whenever an indicator's map changes, the server sends
+XkbIndicatorMapNotify events to all interested clients.
+
+To receive XkbIndicatorStateNotify events, use
+.I XkbSelectEvents
+with both the
+.I bits_to_change
+and
+.I values_for_bits
+parameters containing XkbIndicatorStateNotifyMask. To receive XkbIndicatorMapNotify events,
+use
+.I XkbSelectEvents
+with XkbIndicatorMapNotifyMask.
+
+To receive events for only specific indicators, use
+.I XkbSelectEventDetails.
+Set the
+.I event_type
+parameter to XkbIndicatorStateNotify or XkbIndicatorMapNotify, and set both the
+.I bits_to_change
+and
+.I values_for_bits
+detail parameters to a mask where each bit specifies one indicator, turning on those bits that
+specify the indicators for which you want to receive events.
+
+The
+.I changed
+parameter is a mask that is the bitwise inclusive OR of the indicators that have changed. If
+the event is of type XkbIndicatorMapNotify,
+.I changed
+reports the maps that changed. If the event is of type XkbIndicatorStateNotify,
+.I changed
+reports the indicators that have changed state.
+.I state
+is a mask that specifies the current state of all indicators, whether they have changed or
+not, for both XkbIndicatorStateNotify and IndicatorMapNotify events.
+
+When your client application receives either a XkbIndicatorStateNotify event or
+XkbIndicatorMapNotify event, you can note the changes in a changes structure by calling
+.I XkbNoteIndicatorChanges.
+
+
+The
+.I wanted
+parameter is the bitwise inclusive OR of XkbIndicatorMapMask and
+XkbIndicatorStateMask.
+.I XkbNoteIndicatorChanges
+copies any changes reported in
+.I new
+and specified in
+.I wanted
+into the changes record specified by
+.I old.
+.SH STRUCTURES
+Both types of indicator events use the same structure:
+.nf
+
+typedef struct _XkbIndicatorNotify {
+ int type; /\(** Xkb extension base event code */
+ unsigned long serial; /\(** X server serial number for event */
+ Bool send_event; /\(** True => synthetically generated */
+ Display * display; /\(** server connection where event generated */
+ Time time; /\(** server time when event generated */
+ int xkb_type; /\(** specifies state or map notify */
+ int device; /\(** Xkb device ID, will not be XkbUseCoreKbd */
+ unsigned int changed; /\(** mask of indicators with new state or map */
+ unsigned int state; /\(** current state of all indicators */
+} XkbIndicatorNotifyEvent;
+
+.fi
+.I xkb_type
+is either XkbIndicatorStateNotify or XkbIndicatorMapNotify, depending on whether the event is
+a kbIndicatorStateNotify event or kbIndicatorMapNotify event.
+.SH "SEE ALSO"
+.BR XkbIndicatorMapMask (__libmansuffix__),
+.BR XkbIndicatorStateMask (__libmansuffix__),
+.BR XkbSelectEventDetails (__libmansuffix__),
+.BR XkbSelectEvents (__libmansuffix__)
diff --git a/libX11/man/xkb/XkbNoteNameChanges.man b/libX11/man/xkb/XkbNoteNameChanges.man
index 354b29e82..fe028f037 100644
--- a/libX11/man/xkb/XkbNoteNameChanges.man
+++ b/libX11/man/xkb/XkbNoteNameChanges.man
@@ -1,92 +1,92 @@
-'\" t
-.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
-.\"
-.\" Permission is hereby granted, free of charge, to any person obtaining a
-.\" copy of this software and associated documentation files (the "Software"),
-.\" to deal in the Software without restriction, including without limitation
-.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
-.\" and/or sell copies of the Software, and to permit persons to whom the
-.\" Software is furnished to do so, subject to the following conditions:
-.\"
-.\" The above copyright notice and this permission notice (including the next
-.\" paragraph) shall be included in all copies or substantial portions of the
-.\" Software.
-.\"
-.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-.\" DEALINGS IN THE SOFTWARE.
-.\"
-.TH XkbNoteNameChanges __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
-.SH NAME
-XkbNoteNameChanges \- Note the changed names in a changes structure
-.SH SYNOPSIS
-.HP
-.B void XkbNoteNameChanges
-.BI "(\^XkbNameChangesPtr " "old" "\^,"
-.BI "XkbNamesNotifyEvent *" "new" "\^,"
-.BI "unsigned int " "wanted" "\^);"
-.if n .ti +5n
-.if t .ti +.5i
-.SH ARGUMENTS
-.TP
-.I \- old
-XkbNameChanges structure to be updated
-.TP
-.I \- new
-event from which changes are to be copied
-.TP
-.I \- wanted
-types of names for which changes are to be noted
-.SH DESCRIPTION
-.LP
-When your application receives a XkbNamesNotify event, you can note the changed
-names in a changes structure using
-.I XkbNoteNameChanges.
-
-The
-.I wanted
-parameter is the bitwise inclusive OR of the valid names mask bits shown in
-Table 1.
-.I XkbNoteNameChanges
-copies any changes that are reported in
-.I new
-and specified in
-.I wanted
-into the changes record specified by
-.I old.
-
-.TS
-c s s s
-l l l l.
-Table 1 Symbolic Names Masks
-_
-Mask Bit Value Keyboard Field
- Component
-_
-XkbKeycodesNameMask (1<<0) Xkb->names keycodes
-XkbGeometryNameMask (1<<1) Xkb->names geometry
-XkbSymbolsNameMask (1<<2) Xkb->names symbols
-XkbPhysSymbolsNameMask (1<<3) Xkb->names phys_symbols
-XkbTypesNameMask (1<<4) Xkb->names type
-XkbCompatNameMask (1<<5) Xkb->names compat
-XkbKeyTypeNamesMask (1<<6) Xkb->map type[*].name
-XkbKTLevelNamesMask (1<<7) Xkb->map type[*].lvl_names[*]
-XkbIndicatorNamesMask (1<<8) Xkb->names indicators[*]
-XkbKeyNamesMask (1<<9) Xkb->names keys[*], num_keys
-XkbKeyAliasesMask (1<<10) Xkb->names key_aliases[*], num_key_aliases
-XkbVirtualModNamesMask (1<<11) Xkb->names vmods[*]
-XkbGroupNamesMask (1<<12) Xkb->names groups[*]
-XkbRGNamesMask (1<<13) Xkb->names radio_groups[*], num_rg
-XkbComponentNamesMask (0x3f) Xkb->names keycodes,
- geometry,
- symbols,
- physical symbols,
- types, and
- compatibility map
-XkbAllNamesMask (0x3fff) Xkb->names all name components
-.TE
-
+'\" t
+.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the "Software"),
+.\" to deal in the Software without restriction, including without limitation
+.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
+.\" and/or sell copies of the Software, and to permit persons to whom the
+.\" Software is furnished to do so, subject to the following conditions:
+.\"
+.\" The above copyright notice and this permission notice (including the next
+.\" paragraph) shall be included in all copies or substantial portions of the
+.\" Software.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+.\" DEALINGS IN THE SOFTWARE.
+.\"
+.TH XkbNoteNameChanges __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbNoteNameChanges \- Note the changed names in a changes structure
+.SH SYNOPSIS
+.HP
+.B void XkbNoteNameChanges
+.BI "(\^XkbNameChangesPtr " "old" "\^,"
+.BI "XkbNamesNotifyEvent *" "new" "\^,"
+.BI "unsigned int " "wanted" "\^);"
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- old
+XkbNameChanges structure to be updated
+.TP
+.I \- new
+event from which changes are to be copied
+.TP
+.I \- wanted
+types of names for which changes are to be noted
+.SH DESCRIPTION
+.LP
+When your application receives a XkbNamesNotify event, you can note the changed
+names in a changes structure using
+.I XkbNoteNameChanges.
+
+The
+.I wanted
+parameter is the bitwise inclusive OR of the valid names mask bits shown in
+Table 1.
+.I XkbNoteNameChanges
+copies any changes that are reported in
+.I new
+and specified in
+.I wanted
+into the changes record specified by
+.I old.
+
+.TS
+c s s s
+l l l l.
+Table 1 Symbolic Names Masks
+_
+Mask Bit Value Keyboard Field
+ Component
+_
+XkbKeycodesNameMask (1<<0) Xkb->names keycodes
+XkbGeometryNameMask (1<<1) Xkb->names geometry
+XkbSymbolsNameMask (1<<2) Xkb->names symbols
+XkbPhysSymbolsNameMask (1<<3) Xkb->names phys_symbols
+XkbTypesNameMask (1<<4) Xkb->names type
+XkbCompatNameMask (1<<5) Xkb->names compat
+XkbKeyTypeNamesMask (1<<6) Xkb->map type[*].name
+XkbKTLevelNamesMask (1<<7) Xkb->map type[*].lvl_names[*]
+XkbIndicatorNamesMask (1<<8) Xkb->names indicators[*]
+XkbKeyNamesMask (1<<9) Xkb->names keys[*], num_keys
+XkbKeyAliasesMask (1<<10) Xkb->names key_aliases[*], num_key_aliases
+XkbVirtualModNamesMask (1<<11) Xkb->names vmods[*]
+XkbGroupNamesMask (1<<12) Xkb->names groups[*]
+XkbRGNamesMask (1<<13) Xkb->names radio_groups[*], num_rg
+XkbComponentNamesMask (0x3f) Xkb->names keycodes,
+ geometry,
+ symbols,
+ physical symbols,
+ types, and
+ compatibility map
+XkbAllNamesMask (0x3fff) Xkb->names all name components
+.TE
+
diff --git a/libX11/man/xkb/XkbOpenDisplay.man b/libX11/man/xkb/XkbOpenDisplay.man
index 2e8d74f31..78b6520d3 100644
--- a/libX11/man/xkb/XkbOpenDisplay.man
+++ b/libX11/man/xkb/XkbOpenDisplay.man
@@ -1,150 +1,150 @@
-.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
-.\"
-.\" Permission is hereby granted, free of charge, to any person obtaining a
-.\" copy of this software and associated documentation files (the "Software"),
-.\" to deal in the Software without restriction, including without limitation
-.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
-.\" and/or sell copies of the Software, and to permit persons to whom the
-.\" Software is furnished to do so, subject to the following conditions:
-.\"
-.\" The above copyright notice and this permission notice (including the next
-.\" paragraph) shall be included in all copies or substantial portions of the
-.\" Software.
-.\"
-.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-.\" DEALINGS IN THE SOFTWARE.
-.\"
-.TH XkbOpenDisplay __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
-.SH NAME
-XkbOpenDisplay \- Checks for a compatible version of the Xkb extension in both
-the library and the server, and initializes the extension for use.
-.SH SYNOPSIS
-.HP
-.B Display XkbOpenDisplay
-.BI "(\^char *" "display_name" "\^,"
-.BI "int *" "event_rtrn" "\^,"
-.BI "int *" "error_rtrn" "\^,"
-.BI "int *" "major_in_out" "\^,"
-.BI "int *" "minor_in_out" "\^,"
-.BI "int *" "reason_rtrn" "\^);"
-.if n .ti +5n
-.if t .ti +.5i
-.SH ARGUMENTS
-.TP
-.I display_name
-hardware display name, which determines the display and communications domain to
-be used
-.TP
-.I event_rtrn
-backfilled with the extension base event code
-.TP
-.I error_rtrn
-backfilled with the extension base error code
-.TP
-.I major_in_out
-compile time lib major version in, server major version out
-.TP
-.I minor_in_out
-compile time lib min version in, server minor version out
-.TP
-.I reason_rtrn
-backfilled with a status code
-.SH DESCRIPTION
-.LP
-As a convenience, you can use the function
-.I XkbOpenDisplay
-to perform these three
-tasks at once: open a connection to an X server, check for a compatible version
-of the Xkb extension in both the library and the server, and initialize the
-extension for use.
-
-.I XkbOpenDisplay
-is a convenience function that opens an X display connection and
-initializes the X keyboard extension. In all cases, upon return
-.I reason_rtrn
-contains a status value indicating success or the type of failure. If
-.I major_in_out
-and
-.I minor_in_out
-are not NULL,
-.I XkbOpenDisplay
-first calls
-.I XkbLibraryVersion
-to determine whether the client library is compatible, passing
-it the values pointed to by
-.I major_in_out and
-.I minor_in_out. If the library is
-incompatible,
-.I XkbOpenDisplay backfills
-.I major_in_out
-and
-.I minor_in_out
-with the
-major and minor extension versions of the library being used and returns NULL.
-If the library is compatible,
-.I XkbOpenDisplay
-next calls
-.I XOpenDisplay
-with the
-.I display_name.
-If this fails, the function returns NULL. If successful,
-.I XkbOpenDisplay
-calls
-.I XkbQueryExtension
-and backfills the major and minor Xkb
-server extension version numbers in
-.I major_in_out and
-.I minor_in_out. If the server
-extension version is not compatible with the library extension version or if the
-server extension is not present,
-.I XkbOpenDisplay
-closes the display and returns
-NULL. When successful, the function returns the display connection.
-
-The possible values for reason_rtrn are:
-
-.IP \(bu 5
-XkbOD_BadLibraryVersion indicates XkbLibraryVersion returned False.
-.IP \(bu 5
-XkbOD_ConnectionRefused indicates the display could not be opened.
-.IP \(bu 5
-XkbOD_BadServerVersion indicates the library and the server have incompatible
-extension versions.
-.IP \(bu 5
-XkbOD_NonXkbServer indicates the extension is not present in the X server.
-.IP \(bu 5
-XkbOD_Success indicates that the function succeeded.
-.SH "RETURN VALUES"
-.TP 15
-NULL
-The
-.I XkbOpenDisplay
-function returns NULL if the library is incompatible.
-.sp
-.in 20
-The
-.I XkbOpenDisplay
-function returns NULL if the call to
-.I XOpenDisplay
-with the
-.I display_name
-fails.
-.sp
-.in 20
-The
-.I XkbOpenDisplay
-function returns NULL and closes the display if the server extension version is not
-compatible with the library extension version or if the server extension is not present.
-.SH DIAGNOSTICS
-.TP 15
-.SM BadAccess
-The Xkb extension has not been properly initialized
-.SH "SEE ALSO"
-.BR XkbLibraryVersion (__libmansuffix__),
-.BR XkbQueryExtension (__libmansuffix__),
-.BR XOpenDisplay (__libmansuffix__)
+.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the "Software"),
+.\" to deal in the Software without restriction, including without limitation
+.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
+.\" and/or sell copies of the Software, and to permit persons to whom the
+.\" Software is furnished to do so, subject to the following conditions:
+.\"
+.\" The above copyright notice and this permission notice (including the next
+.\" paragraph) shall be included in all copies or substantial portions of the
+.\" Software.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+.\" DEALINGS IN THE SOFTWARE.
+.\"
+.TH XkbOpenDisplay __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbOpenDisplay \- Checks for a compatible version of the Xkb extension in both
+the library and the server, and initializes the extension for use.
+.SH SYNOPSIS
+.HP
+.B Display XkbOpenDisplay
+.BI "(\^char *" "display_name" "\^,"
+.BI "int *" "event_rtrn" "\^,"
+.BI "int *" "error_rtrn" "\^,"
+.BI "int *" "major_in_out" "\^,"
+.BI "int *" "minor_in_out" "\^,"
+.BI "int *" "reason_rtrn" "\^);"
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I display_name
+hardware display name, which determines the display and communications domain to
+be used
+.TP
+.I event_rtrn
+backfilled with the extension base event code
+.TP
+.I error_rtrn
+backfilled with the extension base error code
+.TP
+.I major_in_out
+compile time lib major version in, server major version out
+.TP
+.I minor_in_out
+compile time lib min version in, server minor version out
+.TP
+.I reason_rtrn
+backfilled with a status code
+.SH DESCRIPTION
+.LP
+As a convenience, you can use the function
+.I XkbOpenDisplay
+to perform these three
+tasks at once: open a connection to an X server, check for a compatible version
+of the Xkb extension in both the library and the server, and initialize the
+extension for use.
+
+.I XkbOpenDisplay
+is a convenience function that opens an X display connection and
+initializes the X keyboard extension. In all cases, upon return
+.I reason_rtrn
+contains a status value indicating success or the type of failure. If
+.I major_in_out
+and
+.I minor_in_out
+are not NULL,
+.I XkbOpenDisplay
+first calls
+.I XkbLibraryVersion
+to determine whether the client library is compatible, passing
+it the values pointed to by
+.I major_in_out and
+.I minor_in_out. If the library is
+incompatible,
+.I XkbOpenDisplay backfills
+.I major_in_out
+and
+.I minor_in_out
+with the
+major and minor extension versions of the library being used and returns NULL.
+If the library is compatible,
+.I XkbOpenDisplay
+next calls
+.I XOpenDisplay
+with the
+.I display_name.
+If this fails, the function returns NULL. If successful,
+.I XkbOpenDisplay
+calls
+.I XkbQueryExtension
+and backfills the major and minor Xkb
+server extension version numbers in
+.I major_in_out and
+.I minor_in_out. If the server
+extension version is not compatible with the library extension version or if the
+server extension is not present,
+.I XkbOpenDisplay
+closes the display and returns
+NULL. When successful, the function returns the display connection.
+
+The possible values for reason_rtrn are:
+
+.IP \(bu 5
+XkbOD_BadLibraryVersion indicates XkbLibraryVersion returned False.
+.IP \(bu 5
+XkbOD_ConnectionRefused indicates the display could not be opened.
+.IP \(bu 5
+XkbOD_BadServerVersion indicates the library and the server have incompatible
+extension versions.
+.IP \(bu 5
+XkbOD_NonXkbServer indicates the extension is not present in the X server.
+.IP \(bu 5
+XkbOD_Success indicates that the function succeeded.
+.SH "RETURN VALUES"
+.TP 15
+NULL
+The
+.I XkbOpenDisplay
+function returns NULL if the library is incompatible.
+.sp
+.in 20
+The
+.I XkbOpenDisplay
+function returns NULL if the call to
+.I XOpenDisplay
+with the
+.I display_name
+fails.
+.sp
+.in 20
+The
+.I XkbOpenDisplay
+function returns NULL and closes the display if the server extension version is not
+compatible with the library extension version or if the server extension is not present.
+.SH DIAGNOSTICS
+.TP 15
+.SM BadAccess
+The Xkb extension has not been properly initialized
+.SH "SEE ALSO"
+.BR XkbLibraryVersion (__libmansuffix__),
+.BR XkbQueryExtension (__libmansuffix__),
+.BR XOpenDisplay (__libmansuffix__)
diff --git a/libX11/man/xkb/XkbOutOfRangeGroupInfo.man b/libX11/man/xkb/XkbOutOfRangeGroupInfo.man
index b6ee75c7d..f49f767f2 100644
--- a/libX11/man/xkb/XkbOutOfRangeGroupInfo.man
+++ b/libX11/man/xkb/XkbOutOfRangeGroupInfo.man
@@ -1,186 +1,186 @@
-'\" t
-.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
-.\"
-.\" Permission is hereby granted, free of charge, to any person obtaining a
-.\" copy of this software and associated documentation files (the "Software"),
-.\" to deal in the Software without restriction, including without limitation
-.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
-.\" and/or sell copies of the Software, and to permit persons to whom the
-.\" Software is furnished to do so, subject to the following conditions:
-.\"
-.\" The above copyright notice and this permission notice (including the next
-.\" paragraph) shall be included in all copies or substantial portions of the
-.\" Software.
-.\"
-.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-.\" DEALINGS IN THE SOFTWARE.
-.\"
-.TH XkbOutOfRangeGroupInfo __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
-.SH NAME
-XkbOutOfRangeGroupInfo \- Returns only the out-of-range processing information
-from the group_info field of an XkbSymMapRec structure
-.SH SYNOPSIS
-.HP
-.B unsigned char XkbOutOfRangeGroupInfo
-.BI "(\^unsigned char " "grp_inf" "\^);"
-.if n .ti +5n
-.if t .ti +.5i
-.SH ARGUMENTS
-.TP
-.I \- grp_inf
-Xkb description of interest
-.SH DESCRIPTION
-.LP
-.I XkbOutOfRangeGroupInfo
-returns only the out-of-range processing information from the
-.I group_info
-field of an XkbSymMapRec structure.
-
-The
-.I group_info
-field of an XkbSymMapRec is an encoded value containing the number of groups of
-symbols bound to the
-key as well as the specification of the treatment of out-of-range groups. It is
-legal for a key to
-have zero groups, in which case it also has zero symbols and all events from
-that key yield NoSymbol.
-To obtain the number of groups of symbols bound to the key, use
-.I XkbKeyNumGroups.
-To change the number of groups bound to a key, use
-.I XkbChangeTypesOfKey.
-To obtain a mask that determines the treatment of out-of-range groups, use
-.I XkbKeyGroupInfo
-and
-.I XkbOutOfRangeGroupInfo.
-
-The keyboard controls contain a
-.I groups_wrap
-field specifying the handling of illegal groups on a global basis. That is, when
-the user performs an
-action causing the effective group to go out of the legal range, the
-.I groups_wrap
-field specifies how to normalize the effective keyboard group to a group that is
-legal for the
-keyboard as a whole, but there is no guarantee that the normalized group will be
-within the range of
-legal groups for any individual key. The per-key
-.I group_info
-field specifies how a key treats a legal effective group if the key does not
-have a type specified for
-the group of concern. For example, the Enter key usually has just one group
-defined. If the user
-performs an action causing the global keyboard group to change to Group2, the
-.I group_info
-field for the Enter key describes how to handle this situation.
-
-Out-of-range groups for individual keys are mapped to a legal group using the
-same options as are used
-for the overall keyboard group. The particular type of mapping used is
-controlled by the bits set in
-the
-.I group_info
-flag, as shown in Table 1.
-.bp
-.TS
-c s
-l l
-l l.
-Table 1 group_info Range Normalization
-_
-Bits set in group_info Normalization method
-_
-XkbRedirectIntoRange XkbRedirectIntoRange
-XkbClampIntoRange XkbClampIntoRange
-none of the above XkbWrapIntoRange
-.TE
-.SH STRUCTURES
-.LP
-The KeySymMapRec structure is defined as follows:
-.nf
-
- #define XkbNumKbdGroups 4
- #define XkbMaxKbdGroup (XkbNumKbdGroups-1)
-
- typedef struct { /\(** map to keysyms for a single keycode */
- unsigned char kt_index[XkbNumKbdGroups]; /\(** key type index for each group */
- unsigned char group_info; /\(** # of groups and out of range group handling */
- unsigned char width; /\(** max # of shift levels for key */
- unsigned short offset; /\(** index to keysym table in syms array */
-} XkbSymMapRec, *XkbSymMapPtr;
-
-.fi
-
-.nf
-The XkbControlsRec structure is defined as follows:
-
- #define XkbMaxLegalKeyCode 255
- #define XkbPerKeyBitArraySize ((XkbMaxLegalKeyCode+1)/8)
-
-
- typedef struct {
- unsigned char mk_dflt_btn; /\(** default button for keyboard driven mouse */
- unsigned char num_groups; /\(** number of keyboard groups */
- unsigned char groups_wrap; /\(** how to wrap out-of-bounds groups */
- XkbModsRec internal; /\(** defines server internal modifiers */
- XkbModsRec ignore_lock; /\(** modifiers to ignore when checking for grab */
- unsigned int enabled_ctrls; /\(** 1 bit => corresponding boolean control enabled */
- unsigned short repeat_delay; /\(** ms delay until first repeat */
- unsigned short repeat_interval; /\(** ms delay between repeats */
- unsigned short slow_keys_delay; /\(** ms minimum time key must be down to be ok */
- unsigned short debounce_delay; /\(** ms delay before key reactivated */
- unsigned short mk_delay; /\(** ms delay to second mouse motion event */
- unsigned short mk_interval; /\(** ms delay between repeat mouse events */
- unsigned short mk_time_to_max; /\(** # intervals until constant mouse move */
- unsigned short mk_max_speed; /\(** multiplier for maximum mouse speed */
- short mk_curve; /\(** determines mouse move curve type */
- unsigned short ax_options; /\(** 1 bit => Access X option enabled */
- unsigned short ax_timeout; /\(** seconds until Access X disabled */
- unsigned short axt_opts_mask; /\(** 1 bit => options to reset on Access X timeout */
- unsigned short axt_opts_values; /\(** 1 bit => turn option on, 0=> off */
- unsigned int axt_ctrls_mask; /\(** which bits in enabled_ctrls to modify */
- unsigned int axt_ctrls_values; /\(** values for new bits in enabled_ctrls */
- unsigned char per_key_repeat[XkbPerKeyBitArraySize]; /\(** per key auto repeat */
- } XkbControlsRec, *XkbControlsPtr;
-.fi
-
-.nf
-The XkbControlsRec structure is defined as follows:
-
- #define XkbMaxLegalKeyCode 255
- #define XkbPerKeyBitArraySize ((XkbMaxLegalKeyCode+1)/8)
-
-
- typedef struct {
- unsigned char mk_dflt_btn; /\(** default button for keyboard driven mouse */
- unsigned char num_groups; /\(** number of keyboard groups */
- unsigned char groups_wrap; /\(** how to wrap out-of-bounds groups */
- XkbModsRec internal; /\(** defines server internal modifiers */
- XkbModsRec ignore_lock; /\(** modifiers to ignore when checking for grab */
- unsigned int enabled_ctrls; /\(** 1 bit => corresponding boolean control enabled */
- unsigned short repeat_delay; /\(** ms delay until first repeat */
- unsigned short repeat_interval; /\(** ms delay between repeats */
- unsigned short slow_keys_delay; /\(** ms minimum time key must be down to be ok */
- unsigned short debounce_delay; /\(** ms delay before key reactivated */
- unsigned short mk_delay; /\(** ms delay to second mouse motion event */
- unsigned short mk_interval; /\(** ms delay between repeat mouse events */
- unsigned short mk_time_to_max; /\(** # intervals until constant mouse move */
- unsigned short mk_max_speed; /\(** multiplier for maximum mouse speed */
- short mk_curve; /\(** determines mouse move curve type */
- unsigned short ax_options; /\(** 1 bit => Access X option enabled */
- unsigned short ax_timeout; /\(** seconds until Access X disabled */
- unsigned short axt_opts_mask; /\(** 1 bit => options to reset on Access X timeout */
- unsigned short axt_opts_values; /\(** 1 bit => turn option on, 0=> off */
- unsigned int axt_ctrls_mask; /\(** which bits in enabled_ctrls to modify */
- unsigned int axt_ctrls_values; /\(** values for new bits in enabled_ctrls */
- unsigned char per_key_repeat[XkbPerKeyBitArraySize]; /\(** per key auto repeat */
- } XkbControlsRec, *XkbControlsPtr;
-.fi
-.SH "SEE ALSO"
-.BR XkbChangeTypesOfKey (__libmansuffix__),
-.BR XkbKeyGroupInfo (__libmansuffix__),
-.BR XkbOutOfRangeGroupInfo. (__libmansuffix__)
+'\" t
+.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the "Software"),
+.\" to deal in the Software without restriction, including without limitation
+.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
+.\" and/or sell copies of the Software, and to permit persons to whom the
+.\" Software is furnished to do so, subject to the following conditions:
+.\"
+.\" The above copyright notice and this permission notice (including the next
+.\" paragraph) shall be included in all copies or substantial portions of the
+.\" Software.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+.\" DEALINGS IN THE SOFTWARE.
+.\"
+.TH XkbOutOfRangeGroupInfo __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbOutOfRangeGroupInfo \- Returns only the out-of-range processing information
+from the group_info field of an XkbSymMapRec structure
+.SH SYNOPSIS
+.HP
+.B unsigned char XkbOutOfRangeGroupInfo
+.BI "(\^unsigned char " "grp_inf" "\^);"
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- grp_inf
+Xkb description of interest
+.SH DESCRIPTION
+.LP
+.I XkbOutOfRangeGroupInfo
+returns only the out-of-range processing information from the
+.I group_info
+field of an XkbSymMapRec structure.
+
+The
+.I group_info
+field of an XkbSymMapRec is an encoded value containing the number of groups of
+symbols bound to the
+key as well as the specification of the treatment of out-of-range groups. It is
+legal for a key to
+have zero groups, in which case it also has zero symbols and all events from
+that key yield NoSymbol.
+To obtain the number of groups of symbols bound to the key, use
+.I XkbKeyNumGroups.
+To change the number of groups bound to a key, use
+.I XkbChangeTypesOfKey.
+To obtain a mask that determines the treatment of out-of-range groups, use
+.I XkbKeyGroupInfo
+and
+.I XkbOutOfRangeGroupInfo.
+
+The keyboard controls contain a
+.I groups_wrap
+field specifying the handling of illegal groups on a global basis. That is, when
+the user performs an
+action causing the effective group to go out of the legal range, the
+.I groups_wrap
+field specifies how to normalize the effective keyboard group to a group that is
+legal for the
+keyboard as a whole, but there is no guarantee that the normalized group will be
+within the range of
+legal groups for any individual key. The per-key
+.I group_info
+field specifies how a key treats a legal effective group if the key does not
+have a type specified for
+the group of concern. For example, the Enter key usually has just one group
+defined. If the user
+performs an action causing the global keyboard group to change to Group2, the
+.I group_info
+field for the Enter key describes how to handle this situation.
+
+Out-of-range groups for individual keys are mapped to a legal group using the
+same options as are used
+for the overall keyboard group. The particular type of mapping used is
+controlled by the bits set in
+the
+.I group_info
+flag, as shown in Table 1.
+.bp
+.TS
+c s
+l l
+l l.
+Table 1 group_info Range Normalization
+_
+Bits set in group_info Normalization method
+_
+XkbRedirectIntoRange XkbRedirectIntoRange
+XkbClampIntoRange XkbClampIntoRange
+none of the above XkbWrapIntoRange
+.TE
+.SH STRUCTURES
+.LP
+The KeySymMapRec structure is defined as follows:
+.nf
+
+ #define XkbNumKbdGroups 4
+ #define XkbMaxKbdGroup (XkbNumKbdGroups-1)
+
+ typedef struct { /\(** map to keysyms for a single keycode */
+ unsigned char kt_index[XkbNumKbdGroups]; /\(** key type index for each group */
+ unsigned char group_info; /\(** # of groups and out of range group handling */
+ unsigned char width; /\(** max # of shift levels for key */
+ unsigned short offset; /\(** index to keysym table in syms array */
+} XkbSymMapRec, *XkbSymMapPtr;
+
+.fi
+
+.nf
+The XkbControlsRec structure is defined as follows:
+
+ #define XkbMaxLegalKeyCode 255
+ #define XkbPerKeyBitArraySize ((XkbMaxLegalKeyCode+1)/8)
+
+
+ typedef struct {
+ unsigned char mk_dflt_btn; /\(** default button for keyboard driven mouse */
+ unsigned char num_groups; /\(** number of keyboard groups */
+ unsigned char groups_wrap; /\(** how to wrap out-of-bounds groups */
+ XkbModsRec internal; /\(** defines server internal modifiers */
+ XkbModsRec ignore_lock; /\(** modifiers to ignore when checking for grab */
+ unsigned int enabled_ctrls; /\(** 1 bit => corresponding boolean control enabled */
+ unsigned short repeat_delay; /\(** ms delay until first repeat */
+ unsigned short repeat_interval; /\(** ms delay between repeats */
+ unsigned short slow_keys_delay; /\(** ms minimum time key must be down to be ok */
+ unsigned short debounce_delay; /\(** ms delay before key reactivated */
+ unsigned short mk_delay; /\(** ms delay to second mouse motion event */
+ unsigned short mk_interval; /\(** ms delay between repeat mouse events */
+ unsigned short mk_time_to_max; /\(** # intervals until constant mouse move */
+ unsigned short mk_max_speed; /\(** multiplier for maximum mouse speed */
+ short mk_curve; /\(** determines mouse move curve type */
+ unsigned short ax_options; /\(** 1 bit => Access X option enabled */
+ unsigned short ax_timeout; /\(** seconds until Access X disabled */
+ unsigned short axt_opts_mask; /\(** 1 bit => options to reset on Access X timeout */
+ unsigned short axt_opts_values; /\(** 1 bit => turn option on, 0=> off */
+ unsigned int axt_ctrls_mask; /\(** which bits in enabled_ctrls to modify */
+ unsigned int axt_ctrls_values; /\(** values for new bits in enabled_ctrls */
+ unsigned char per_key_repeat[XkbPerKeyBitArraySize]; /\(** per key auto repeat */
+ } XkbControlsRec, *XkbControlsPtr;
+.fi
+
+.nf
+The XkbControlsRec structure is defined as follows:
+
+ #define XkbMaxLegalKeyCode 255
+ #define XkbPerKeyBitArraySize ((XkbMaxLegalKeyCode+1)/8)
+
+
+ typedef struct {
+ unsigned char mk_dflt_btn; /\(** default button for keyboard driven mouse */
+ unsigned char num_groups; /\(** number of keyboard groups */
+ unsigned char groups_wrap; /\(** how to wrap out-of-bounds groups */
+ XkbModsRec internal; /\(** defines server internal modifiers */
+ XkbModsRec ignore_lock; /\(** modifiers to ignore when checking for grab */
+ unsigned int enabled_ctrls; /\(** 1 bit => corresponding boolean control enabled */
+ unsigned short repeat_delay; /\(** ms delay until first repeat */
+ unsigned short repeat_interval; /\(** ms delay between repeats */
+ unsigned short slow_keys_delay; /\(** ms minimum time key must be down to be ok */
+ unsigned short debounce_delay; /\(** ms delay before key reactivated */
+ unsigned short mk_delay; /\(** ms delay to second mouse motion event */
+ unsigned short mk_interval; /\(** ms delay between repeat mouse events */
+ unsigned short mk_time_to_max; /\(** # intervals until constant mouse move */
+ unsigned short mk_max_speed; /\(** multiplier for maximum mouse speed */
+ short mk_curve; /\(** determines mouse move curve type */
+ unsigned short ax_options; /\(** 1 bit => Access X option enabled */
+ unsigned short ax_timeout; /\(** seconds until Access X disabled */
+ unsigned short axt_opts_mask; /\(** 1 bit => options to reset on Access X timeout */
+ unsigned short axt_opts_values; /\(** 1 bit => turn option on, 0=> off */
+ unsigned int axt_ctrls_mask; /\(** which bits in enabled_ctrls to modify */
+ unsigned int axt_ctrls_values; /\(** values for new bits in enabled_ctrls */
+ unsigned char per_key_repeat[XkbPerKeyBitArraySize]; /\(** per key auto repeat */
+ } XkbControlsRec, *XkbControlsPtr;
+.fi
+.SH "SEE ALSO"
+.BR XkbChangeTypesOfKey (__libmansuffix__),
+.BR XkbKeyGroupInfo (__libmansuffix__),
+.BR XkbOutOfRangeGroupInfo. (__libmansuffix__)
diff --git a/libX11/man/xkb/XkbOutOfRangeGroupNumber.man b/libX11/man/xkb/XkbOutOfRangeGroupNumber.man
index 2767826df..915d3f627 100644
--- a/libX11/man/xkb/XkbOutOfRangeGroupNumber.man
+++ b/libX11/man/xkb/XkbOutOfRangeGroupNumber.man
@@ -1,187 +1,187 @@
-'\" t
-.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
-.\"
-.\" Permission is hereby granted, free of charge, to any person obtaining a
-.\" copy of this software and associated documentation files (the "Software"),
-.\" to deal in the Software without restriction, including without limitation
-.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
-.\" and/or sell copies of the Software, and to permit persons to whom the
-.\" Software is furnished to do so, subject to the following conditions:
-.\"
-.\" The above copyright notice and this permission notice (including the next
-.\" paragraph) shall be included in all copies or substantial portions of the
-.\" Software.
-.\"
-.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-.\" DEALINGS IN THE SOFTWARE.
-.\"
-.TH XkbOutOfRangeGroupNumber __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
-.SH NAME
-XkbOutOfRangeGroupNumber \- Returns the out-of-range group number, represented
-as a group index, from the group_info field of an XkbSymMapRec structure
-.SH SYNOPSIS
-.HP
-.B unsigned char XkbOutOfRangeGroupNumber
-.BI "(\^unsigned char " "grp_inf" "\^);"
-.if n .ti +5n
-.if t .ti +.5i
-.SH ARGUMENTS
-.TP
-.I \- grp_inf
-Xkb description of interest
-.SH DESCRIPTION
-.LP
-.I XkbOutOfRangeGroupNumber
-returns the out-of-range group number, represented as a group index, from the
-.I group_info
-field of an XkbSymMapRec structure.
-
-The
-.I group_info
-field of an XkbSymMapRec is an encoded value containing the number of groups of
-symbols bound to the
-key as well as the specification of the treatment of out-of-range groups. It is
-legal for a key to
-have zero groups, in which case it also has zero symbols and all events from
-that key yield NoSymbol.
-To obtain the number of groups of symbols bound to the key, use
-.I XkbKeyNumGroups.
-To change the number of groups bound to a key, use
-.I XkbChangeTypesOfKey.
-To obtain a mask that determines the treatment of out-of-range groups, use
-.I XkbKeyGroupInfo
-and
-.I XkbOutOfRangeGroupInfo.
-
-The keyboard controls contain a
-.I groups_wrap
-field specifying the handling of illegal groups on a global basis. That is, when
-the user performs an
-action causing the effective group to go out of the legal range, the
-.I groups_wrap
-field specifies how to normalize the effective keyboard group to a group that is
-legal for the
-keyboard as a whole, but there is no guarantee that the normalized group will be
-within the range of
-legal groups for any individual key. The per-key
-.I group_info
-field specifies how a key treats a legal effective group if the key does not
-have a type specified for
-the group of concern. For example, the Enter key usually has just one group
-defined. If the user
-performs an action causing the global keyboard group to change to Group2, the
-.I group_info
-field for the Enter key describes how to handle this situation.
-
-Out-of-range groups for individual keys are mapped to a legal group using the
-same options as are used
-for the overall keyboard group. The particular type of mapping used is
-controlled by the bits set in
-the
-.I group_info
-flag, as shown in Table 1.
-
-
-.TS
-c s
-l l
-l l.
-Table 1 group_info Range Normalization
-_
-Bits set in group_info Normalization method
-_
-XkbRedirectIntoRange XkbRedirectIntoRange
-XkbClampIntoRange XkbClampIntoRange
-none of the above XkbWrapIntoRange
-.TE
-.SH STRUCTURES
-.LP
-The KeySymMapRec structure is defined as follows:
-.nf
-
- #define XkbNumKbdGroups 4
- #define XkbMaxKbdGroup (XkbNumKbdGroups-1)
-
- typedef struct { /\(** map to keysyms for a single keycode */
- unsigned char kt_index[XkbNumKbdGroups]; /\(** key type index for each group */
- unsigned char group_info; /\(** # of groups and out of range group handling */
- unsigned char width; /\(** max # of shift levels for key */
- unsigned short offset; /\(** index to keysym table in syms array */
-} XkbSymMapRec, *XkbSymMapPtr;
-
-.fi
-
-.nf
-The XkbControlsRec structure is defined as follows:
-
- #define XkbMaxLegalKeyCode 255
- #define XkbPerKeyBitArraySize ((XkbMaxLegalKeyCode+1)/8)
-
-
- typedef struct {
- unsigned char mk_dflt_btn; /\(** default button for keyboard driven mouse */
- unsigned char num_groups; /\(** number of keyboard groups */
- unsigned char groups_wrap; /\(** how to wrap out-of-bounds groups */
- XkbModsRec internal; /\(** defines server internal modifiers */
- XkbModsRec ignore_lock; /\(** modifiers to ignore when checking for grab */
- unsigned int enabled_ctrls; /\(** 1 bit => corresponding boolean control enabled */
- unsigned short repeat_delay; /\(** ms delay until first repeat */
- unsigned short repeat_interval; /\(** ms delay between repeats */
- unsigned short slow_keys_delay; /\(** ms minimum time key must be down to be ok */
- unsigned short debounce_delay; /\(** ms delay before key reactivated */
- unsigned short mk_delay; /\(** ms delay to second mouse motion event */
- unsigned short mk_interval; /\(** ms delay between repeat mouse events */
- unsigned short mk_time_to_max; /\(** # intervals until constant mouse move */
- unsigned short mk_max_speed; /\(** multiplier for maximum mouse speed */
- short mk_curve; /\(** determines mouse move curve type */
- unsigned short ax_options; /\(** 1 bit => Access X option enabled */
- unsigned short ax_timeout; /\(** seconds until Access X disabled */
- unsigned short axt_opts_mask; /\(** 1 bit => options to reset on Access X timeout */
- unsigned short axt_opts_values; /\(** 1 bit => turn option on, 0=> off */
- unsigned int axt_ctrls_mask; /\(** which bits in enabled_ctrls to modify */
- unsigned int axt_ctrls_values; /\(** values for new bits in enabled_ctrls */
- unsigned char per_key_repeat[XkbPerKeyBitArraySize]; /\(** per key auto repeat */
- } XkbControlsRec, *XkbControlsPtr;
-.fi
-
-.nf
-The XkbControlsRec structure is defined as follows:
-
- #define XkbMaxLegalKeyCode 255
- #define XkbPerKeyBitArraySize ((XkbMaxLegalKeyCode+1)/8)
-
-
- typedef struct {
- unsigned char mk_dflt_btn; /\(** default button for keyboard driven mouse */
- unsigned char num_groups; /\(** number of keyboard groups */
- unsigned char groups_wrap; /\(** how to wrap out-of-bounds groups */
- XkbModsRec internal; /\(** defines server internal modifiers */
- XkbModsRec ignore_lock; /\(** modifiers to ignore when checking for grab */
- unsigned int enabled_ctrls; /\(** 1 bit => corresponding boolean control enabled */
- unsigned short repeat_delay; /\(** ms delay until first repeat */
- unsigned short repeat_interval; /\(** ms delay between repeats */
- unsigned short slow_keys_delay; /\(** ms minimum time key must be down to be ok */
- unsigned short debounce_delay; /\(** ms delay before key reactivated */
- unsigned short mk_delay; /\(** ms delay to second mouse motion event */
- unsigned short mk_interval; /\(** ms delay between repeat mouse events */
- unsigned short mk_time_to_max; /\(** # intervals until constant mouse move */
- unsigned short mk_max_speed; /\(** multiplier for maximum mouse speed */
- short mk_curve; /\(** determines mouse move curve type */
- unsigned short ax_options; /\(** 1 bit => Access X option enabled */
- unsigned short ax_timeout; /\(** seconds until Access X disabled */
- unsigned short axt_opts_mask; /\(** 1 bit => options to reset on Access X timeout */
- unsigned short axt_opts_values; /\(** 1 bit => turn option on, 0=> off */
- unsigned int axt_ctrls_mask; /\(** which bits in enabled_ctrls to modify */
- unsigned int axt_ctrls_values; /\(** values for new bits in enabled_ctrls */
- unsigned char per_key_repeat[XkbPerKeyBitArraySize]; /\(** per key auto repeat */
- } XkbControlsRec, *XkbControlsPtr;
-.fi
-.SH "SEE ALSO"
-.BR XkbChangeTypesOfKey (__libmansuffix__),
-.BR XkbKeyGroupInfo (__libmansuffix__),
-.BR XkbOutOfRangeGroupInfo (__libmansuffix__)
+'\" t
+.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the "Software"),
+.\" to deal in the Software without restriction, including without limitation
+.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
+.\" and/or sell copies of the Software, and to permit persons to whom the
+.\" Software is furnished to do so, subject to the following conditions:
+.\"
+.\" The above copyright notice and this permission notice (including the next
+.\" paragraph) shall be included in all copies or substantial portions of the
+.\" Software.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+.\" DEALINGS IN THE SOFTWARE.
+.\"
+.TH XkbOutOfRangeGroupNumber __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbOutOfRangeGroupNumber \- Returns the out-of-range group number, represented
+as a group index, from the group_info field of an XkbSymMapRec structure
+.SH SYNOPSIS
+.HP
+.B unsigned char XkbOutOfRangeGroupNumber
+.BI "(\^unsigned char " "grp_inf" "\^);"
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- grp_inf
+Xkb description of interest
+.SH DESCRIPTION
+.LP
+.I XkbOutOfRangeGroupNumber
+returns the out-of-range group number, represented as a group index, from the
+.I group_info
+field of an XkbSymMapRec structure.
+
+The
+.I group_info
+field of an XkbSymMapRec is an encoded value containing the number of groups of
+symbols bound to the
+key as well as the specification of the treatment of out-of-range groups. It is
+legal for a key to
+have zero groups, in which case it also has zero symbols and all events from
+that key yield NoSymbol.
+To obtain the number of groups of symbols bound to the key, use
+.I XkbKeyNumGroups.
+To change the number of groups bound to a key, use
+.I XkbChangeTypesOfKey.
+To obtain a mask that determines the treatment of out-of-range groups, use
+.I XkbKeyGroupInfo
+and
+.I XkbOutOfRangeGroupInfo.
+
+The keyboard controls contain a
+.I groups_wrap
+field specifying the handling of illegal groups on a global basis. That is, when
+the user performs an
+action causing the effective group to go out of the legal range, the
+.I groups_wrap
+field specifies how to normalize the effective keyboard group to a group that is
+legal for the
+keyboard as a whole, but there is no guarantee that the normalized group will be
+within the range of
+legal groups for any individual key. The per-key
+.I group_info
+field specifies how a key treats a legal effective group if the key does not
+have a type specified for
+the group of concern. For example, the Enter key usually has just one group
+defined. If the user
+performs an action causing the global keyboard group to change to Group2, the
+.I group_info
+field for the Enter key describes how to handle this situation.
+
+Out-of-range groups for individual keys are mapped to a legal group using the
+same options as are used
+for the overall keyboard group. The particular type of mapping used is
+controlled by the bits set in
+the
+.I group_info
+flag, as shown in Table 1.
+
+
+.TS
+c s
+l l
+l l.
+Table 1 group_info Range Normalization
+_
+Bits set in group_info Normalization method
+_
+XkbRedirectIntoRange XkbRedirectIntoRange
+XkbClampIntoRange XkbClampIntoRange
+none of the above XkbWrapIntoRange
+.TE
+.SH STRUCTURES
+.LP
+The KeySymMapRec structure is defined as follows:
+.nf
+
+ #define XkbNumKbdGroups 4
+ #define XkbMaxKbdGroup (XkbNumKbdGroups-1)
+
+ typedef struct { /\(** map to keysyms for a single keycode */
+ unsigned char kt_index[XkbNumKbdGroups]; /\(** key type index for each group */
+ unsigned char group_info; /\(** # of groups and out of range group handling */
+ unsigned char width; /\(** max # of shift levels for key */
+ unsigned short offset; /\(** index to keysym table in syms array */
+} XkbSymMapRec, *XkbSymMapPtr;
+
+.fi
+
+.nf
+The XkbControlsRec structure is defined as follows:
+
+ #define XkbMaxLegalKeyCode 255
+ #define XkbPerKeyBitArraySize ((XkbMaxLegalKeyCode+1)/8)
+
+
+ typedef struct {
+ unsigned char mk_dflt_btn; /\(** default button for keyboard driven mouse */
+ unsigned char num_groups; /\(** number of keyboard groups */
+ unsigned char groups_wrap; /\(** how to wrap out-of-bounds groups */
+ XkbModsRec internal; /\(** defines server internal modifiers */
+ XkbModsRec ignore_lock; /\(** modifiers to ignore when checking for grab */
+ unsigned int enabled_ctrls; /\(** 1 bit => corresponding boolean control enabled */
+ unsigned short repeat_delay; /\(** ms delay until first repeat */
+ unsigned short repeat_interval; /\(** ms delay between repeats */
+ unsigned short slow_keys_delay; /\(** ms minimum time key must be down to be ok */
+ unsigned short debounce_delay; /\(** ms delay before key reactivated */
+ unsigned short mk_delay; /\(** ms delay to second mouse motion event */
+ unsigned short mk_interval; /\(** ms delay between repeat mouse events */
+ unsigned short mk_time_to_max; /\(** # intervals until constant mouse move */
+ unsigned short mk_max_speed; /\(** multiplier for maximum mouse speed */
+ short mk_curve; /\(** determines mouse move curve type */
+ unsigned short ax_options; /\(** 1 bit => Access X option enabled */
+ unsigned short ax_timeout; /\(** seconds until Access X disabled */
+ unsigned short axt_opts_mask; /\(** 1 bit => options to reset on Access X timeout */
+ unsigned short axt_opts_values; /\(** 1 bit => turn option on, 0=> off */
+ unsigned int axt_ctrls_mask; /\(** which bits in enabled_ctrls to modify */
+ unsigned int axt_ctrls_values; /\(** values for new bits in enabled_ctrls */
+ unsigned char per_key_repeat[XkbPerKeyBitArraySize]; /\(** per key auto repeat */
+ } XkbControlsRec, *XkbControlsPtr;
+.fi
+
+.nf
+The XkbControlsRec structure is defined as follows:
+
+ #define XkbMaxLegalKeyCode 255
+ #define XkbPerKeyBitArraySize ((XkbMaxLegalKeyCode+1)/8)
+
+
+ typedef struct {
+ unsigned char mk_dflt_btn; /\(** default button for keyboard driven mouse */
+ unsigned char num_groups; /\(** number of keyboard groups */
+ unsigned char groups_wrap; /\(** how to wrap out-of-bounds groups */
+ XkbModsRec internal; /\(** defines server internal modifiers */
+ XkbModsRec ignore_lock; /\(** modifiers to ignore when checking for grab */
+ unsigned int enabled_ctrls; /\(** 1 bit => corresponding boolean control enabled */
+ unsigned short repeat_delay; /\(** ms delay until first repeat */
+ unsigned short repeat_interval; /\(** ms delay between repeats */
+ unsigned short slow_keys_delay; /\(** ms minimum time key must be down to be ok */
+ unsigned short debounce_delay; /\(** ms delay before key reactivated */
+ unsigned short mk_delay; /\(** ms delay to second mouse motion event */
+ unsigned short mk_interval; /\(** ms delay between repeat mouse events */
+ unsigned short mk_time_to_max; /\(** # intervals until constant mouse move */
+ unsigned short mk_max_speed; /\(** multiplier for maximum mouse speed */
+ short mk_curve; /\(** determines mouse move curve type */
+ unsigned short ax_options; /\(** 1 bit => Access X option enabled */
+ unsigned short ax_timeout; /\(** seconds until Access X disabled */
+ unsigned short axt_opts_mask; /\(** 1 bit => options to reset on Access X timeout */
+ unsigned short axt_opts_values; /\(** 1 bit => turn option on, 0=> off */
+ unsigned int axt_ctrls_mask; /\(** which bits in enabled_ctrls to modify */
+ unsigned int axt_ctrls_values; /\(** values for new bits in enabled_ctrls */
+ unsigned char per_key_repeat[XkbPerKeyBitArraySize]; /\(** per key auto repeat */
+ } XkbControlsRec, *XkbControlsPtr;
+.fi
+.SH "SEE ALSO"
+.BR XkbChangeTypesOfKey (__libmansuffix__),
+.BR XkbKeyGroupInfo (__libmansuffix__),
+.BR XkbOutOfRangeGroupInfo (__libmansuffix__)
diff --git a/libX11/man/xkb/XkbQueryExtension.man b/libX11/man/xkb/XkbQueryExtension.man
index b821b7cea..9f73dd0aa 100644
--- a/libX11/man/xkb/XkbQueryExtension.man
+++ b/libX11/man/xkb/XkbQueryExtension.man
@@ -1,126 +1,126 @@
-.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
-.\"
-.\" Permission is hereby granted, free of charge, to any person obtaining a
-.\" copy of this software and associated documentation files (the "Software"),
-.\" to deal in the Software without restriction, including without limitation
-.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
-.\" and/or sell copies of the Software, and to permit persons to whom the
-.\" Software is furnished to do so, subject to the following conditions:
-.\"
-.\" The above copyright notice and this permission notice (including the next
-.\" paragraph) shall be included in all copies or substantial portions of the
-.\" Software.
-.\"
-.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-.\" DEALINGS IN THE SOFTWARE.
-.\"
-.TH XkbQueryExtension __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
-.SH NAME
-XkbQueryExtension \- Determines the compatibility of a library at runtime.
-.SH SYNOPSIS
-.HP
-.B Bool XkbQueryExtension
-.BI "(\^Display *" "dpy" "\^,"
-.BI "int *" "opcode_rtrn" "\^,"
-.BI "int *" "event_rtrn" "\^,"
-.BI "int *" "error_rtrn" "\^,"
-.BI "int *" "major_in_out" "\^,"
-.BI "int *" "minor_in_out" "\^);"
-.if n .ti +5n
-.if t .ti +.5i
-.SH ARGUMENTS
-.TP
-.I dpy
-connection to the X server
-.TP
-.I opcode_rtrn
-backfilled with the major extension opcode
-.TP
-.I event_rtrn
-backfilled with the extension base event code
-.TP
-.I error_rtrn
-backfilled with the extension base error code
-.TP
-.I major_in_out
-compile time lib major version in, server major version out
-.TP
-.I minor_in_out
-compile time lib min version in, server minor version out
-.SH DESCRIPTION
-.LP
-Call
-.I XkbQueryExtension
-to check for the presence and compatibility of the
-extension in the server and to initialize the extension. Because of potential
-version mismatches, you cannot use the generic extension mechanism functions
-(
-.I XQueryExtension
-and
-.I XInitExtension
-) for checking for the presence of, and
-initializing the Xkb extension.
-
-You must call
-.I XkbQueryExtension
-or
-.I XkbOpenDisplay
-before using any other Xkb
-library interfaces, unless such usage is explicitly allowed in the interface
-description in this document. The exceptions are:
-.I XkbIgnoreExtension, XkbLibraryVersion,
-and a handful of audible-bell functions. You should not use
-any other Xkb functions if the extension is not present or is uninitialized. In
-general, calls to Xkb library functions made prior to initializing the Xkb
-extension cause BadAccess protocol errors.
-
-.I XkbQueryExtension
-both determines whether a compatible Xkb extension is present
-in the X server and initializes the extension when it is present.
-
-The
-.I XkbQueryExtension
-function determines whether a compatible version of the X
-Keyboard Extension is present in the server. If a compatible extension is
-present,
-.I XkbQueryExtension
-returns True; otherwise, it returns False.
-
-If a compatible version of Xkb is present,
-.I XkbQueryExtension
-initializes the
-extension. It backfills the major opcode for the keyboard extension in
-.I opcode_rtrn,
-the base event code in
-.I event_rtrn,
-the base error code in
-.I error_rtrn,
-and the major and minor version numbers of the extension in
-.I major_in_out
-and
-.I minor_in_out.
-The major opcode is reported in the
-.I req_major
-fields of some Xkb events. For a discussion of the base event code.
-.SH "RETURN VALUES"
-.TP 15
-True
-The
-.I XkbQueryExtension
-function returns True if it determines a compatible version of the X
-Keyboard Extension is present in the server.
-.TP 15
-False
-The
-.I XkbQueryExtension
-function returns False if it determines a compatible version of the X
-Keyboard Extension is not present in the server.
-.SH "SEE ALSO"
-.BR XkbIgnoreExtension (__libmansuffix__),
-.BR XkbLibraryVersion (__libmansuffix__),
-.BR XkbOpenDisplay (__libmansuffix__)
+.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the "Software"),
+.\" to deal in the Software without restriction, including without limitation
+.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
+.\" and/or sell copies of the Software, and to permit persons to whom the
+.\" Software is furnished to do so, subject to the following conditions:
+.\"
+.\" The above copyright notice and this permission notice (including the next
+.\" paragraph) shall be included in all copies or substantial portions of the
+.\" Software.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+.\" DEALINGS IN THE SOFTWARE.
+.\"
+.TH XkbQueryExtension __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbQueryExtension \- Determines the compatibility of a library at runtime.
+.SH SYNOPSIS
+.HP
+.B Bool XkbQueryExtension
+.BI "(\^Display *" "dpy" "\^,"
+.BI "int *" "opcode_rtrn" "\^,"
+.BI "int *" "event_rtrn" "\^,"
+.BI "int *" "error_rtrn" "\^,"
+.BI "int *" "major_in_out" "\^,"
+.BI "int *" "minor_in_out" "\^);"
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I dpy
+connection to the X server
+.TP
+.I opcode_rtrn
+backfilled with the major extension opcode
+.TP
+.I event_rtrn
+backfilled with the extension base event code
+.TP
+.I error_rtrn
+backfilled with the extension base error code
+.TP
+.I major_in_out
+compile time lib major version in, server major version out
+.TP
+.I minor_in_out
+compile time lib min version in, server minor version out
+.SH DESCRIPTION
+.LP
+Call
+.I XkbQueryExtension
+to check for the presence and compatibility of the
+extension in the server and to initialize the extension. Because of potential
+version mismatches, you cannot use the generic extension mechanism functions
+(
+.I XQueryExtension
+and
+.I XInitExtension
+) for checking for the presence of, and
+initializing the Xkb extension.
+
+You must call
+.I XkbQueryExtension
+or
+.I XkbOpenDisplay
+before using any other Xkb
+library interfaces, unless such usage is explicitly allowed in the interface
+description in this document. The exceptions are:
+.I XkbIgnoreExtension, XkbLibraryVersion,
+and a handful of audible-bell functions. You should not use
+any other Xkb functions if the extension is not present or is uninitialized. In
+general, calls to Xkb library functions made prior to initializing the Xkb
+extension cause BadAccess protocol errors.
+
+.I XkbQueryExtension
+both determines whether a compatible Xkb extension is present
+in the X server and initializes the extension when it is present.
+
+The
+.I XkbQueryExtension
+function determines whether a compatible version of the X
+Keyboard Extension is present in the server. If a compatible extension is
+present,
+.I XkbQueryExtension
+returns True; otherwise, it returns False.
+
+If a compatible version of Xkb is present,
+.I XkbQueryExtension
+initializes the
+extension. It backfills the major opcode for the keyboard extension in
+.I opcode_rtrn,
+the base event code in
+.I event_rtrn,
+the base error code in
+.I error_rtrn,
+and the major and minor version numbers of the extension in
+.I major_in_out
+and
+.I minor_in_out.
+The major opcode is reported in the
+.I req_major
+fields of some Xkb events. For a discussion of the base event code.
+.SH "RETURN VALUES"
+.TP 15
+True
+The
+.I XkbQueryExtension
+function returns True if it determines a compatible version of the X
+Keyboard Extension is present in the server.
+.TP 15
+False
+The
+.I XkbQueryExtension
+function returns False if it determines a compatible version of the X
+Keyboard Extension is not present in the server.
+.SH "SEE ALSO"
+.BR XkbIgnoreExtension (__libmansuffix__),
+.BR XkbLibraryVersion (__libmansuffix__),
+.BR XkbOpenDisplay (__libmansuffix__)
diff --git a/libX11/man/xkb/XkbRefreshKeyboardMapping.man b/libX11/man/xkb/XkbRefreshKeyboardMapping.man
index cc9ad4c3d..29173b656 100644
--- a/libX11/man/xkb/XkbRefreshKeyboardMapping.man
+++ b/libX11/man/xkb/XkbRefreshKeyboardMapping.man
@@ -1,68 +1,68 @@
-.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
-.\"
-.\" Permission is hereby granted, free of charge, to any person obtaining a
-.\" copy of this software and associated documentation files (the "Software"),
-.\" to deal in the Software without restriction, including without limitation
-.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
-.\" and/or sell copies of the Software, and to permit persons to whom the
-.\" Software is furnished to do so, subject to the following conditions:
-.\"
-.\" The above copyright notice and this permission notice (including the next
-.\" paragraph) shall be included in all copies or substantial portions of the
-.\" Software.
-.\"
-.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-.\" DEALINGS IN THE SOFTWARE.
-.\"
-.TH XkbRefreshKeyboardMapping __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
-.SH NAME
-XkbRefreshKeyboardMapping \- Update the keyboard description that is internal to the X
-library
-.SH SYNOPSIS
-.HP
-.B Status XkbRefreshKeyboardMapping
-.BI "(\^XkbMapNotifyEvent *" "event" "\^);"
-.if n .ti +5n
-.if t .ti +.5i
-.SH ARGUMENTS
-.TP
-.I \- event
-event initiating remapping
-.SH DESCRIPTION
-.LP
-.I XkbRefreshKeyboardMapping
-is the Xkb equivalent of the core
-.I XRefreshKeyboardMapping
-function. It requests that the X server send the current key mapping information to
-this client. A client usually invokes
-.I XkbRefreshKeyboardMapping
-after receiving an XkbMapNotify event.
-.I XkbRefreshKeyboardMapping
-returns Success if it succeeds and BadMatch if the event is not an Xkb event.
-
-The XkbMapNotify event can be generated when some client calls
-.I XkbSetMap, XkbChangeMap, XkbGetKeyboardByName,
-or any of the standard X library functions that change the keyboard mapping or modifier
-mapping.
-.SH "RETURN VALUES"
-.TP 15
-Success
-The
-.I XkbRefreshKeyboardMapping
-function returns Success when the request that the X server send the current key mapping information to
-this client is successful.
-.SH DIAGNOSTICS
-.TP 15
-.B BadMatch
-A compatible version of Xkb was not available in the server or an argument has correct
-type and range, but is otherwise invalid
-.SH "SEE ALSO"
-.BR XkbChangeMap (__libmansuffix__),
-.BR XkbGetKeyboardByName (__libmansuffix__),
-.BR XkbSetMap (__libmansuffix__),
-.BR XRefreshKeyboardMapping (__libmansuffix__)
+.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the "Software"),
+.\" to deal in the Software without restriction, including without limitation
+.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
+.\" and/or sell copies of the Software, and to permit persons to whom the
+.\" Software is furnished to do so, subject to the following conditions:
+.\"
+.\" The above copyright notice and this permission notice (including the next
+.\" paragraph) shall be included in all copies or substantial portions of the
+.\" Software.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+.\" DEALINGS IN THE SOFTWARE.
+.\"
+.TH XkbRefreshKeyboardMapping __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbRefreshKeyboardMapping \- Update the keyboard description that is internal to the X
+library
+.SH SYNOPSIS
+.HP
+.B Status XkbRefreshKeyboardMapping
+.BI "(\^XkbMapNotifyEvent *" "event" "\^);"
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- event
+event initiating remapping
+.SH DESCRIPTION
+.LP
+.I XkbRefreshKeyboardMapping
+is the Xkb equivalent of the core
+.I XRefreshKeyboardMapping
+function. It requests that the X server send the current key mapping information to
+this client. A client usually invokes
+.I XkbRefreshKeyboardMapping
+after receiving an XkbMapNotify event.
+.I XkbRefreshKeyboardMapping
+returns Success if it succeeds and BadMatch if the event is not an Xkb event.
+
+The XkbMapNotify event can be generated when some client calls
+.I XkbSetMap, XkbChangeMap, XkbGetKeyboardByName,
+or any of the standard X library functions that change the keyboard mapping or modifier
+mapping.
+.SH "RETURN VALUES"
+.TP 15
+Success
+The
+.I XkbRefreshKeyboardMapping
+function returns Success when the request that the X server send the current key mapping information to
+this client is successful.
+.SH DIAGNOSTICS
+.TP 15
+.B BadMatch
+A compatible version of Xkb was not available in the server or an argument has correct
+type and range, but is otherwise invalid
+.SH "SEE ALSO"
+.BR XkbChangeMap (__libmansuffix__),
+.BR XkbGetKeyboardByName (__libmansuffix__),
+.BR XkbSetMap (__libmansuffix__),
+.BR XRefreshKeyboardMapping (__libmansuffix__)
diff --git a/libX11/man/xkb/XkbResizeDeviceButtonActions.man b/libX11/man/xkb/XkbResizeDeviceButtonActions.man
index bda6a1dbf..da63f6f99 100644
--- a/libX11/man/xkb/XkbResizeDeviceButtonActions.man
+++ b/libX11/man/xkb/XkbResizeDeviceButtonActions.man
@@ -1,93 +1,93 @@
-'\" t
-.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
-.\"
-.\" Permission is hereby granted, free of charge, to any person obtaining a
-.\" copy of this software and associated documentation files (the "Software"),
-.\" to deal in the Software without restriction, including without limitation
-.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
-.\" and/or sell copies of the Software, and to permit persons to whom the
-.\" Software is furnished to do so, subject to the following conditions:
-.\"
-.\" The above copyright notice and this permission notice (including the next
-.\" paragraph) shall be included in all copies or substantial portions of the
-.\" Software.
-.\"
-.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-.\" DEALINGS IN THE SOFTWARE.
-.\"
-.TH XkbResizeDeviceButtonActions __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
-.SH NAME
-XkbResizeDeviceButtonActions \- Allocate additional space for button actions in an XkbDeviceInfoRec structure
-.SH SYNOPSIS
-.HP
-.B Status XkbResizeDeviceButtonActions
-.BI "(\^XkbDeviceInfoPtr " "device_info" "\^,"
-.BI "unsigned int " "new_total" "\^);"
-.if n .ti +5n
-.if t .ti +.5i
-.SH ARGUMENTS
-.TP
-.I \- device_info
-structure in which to allocate button actions
-.TP
-.I \- new_total
-new total number of button actions needed
-.SH DESCRIPTION
-.LP
-.I XkbResizeDeviceButtonActions
-reallocates space, if necessary, to make sure there is room for a total of
-.I new_total
-button actions in the
-.I device_info
-structure. Any new entries allocated are zeroed. If successful,
-.I XkbResizeDeviceButtonActions
-returns Success. If
-.I new_total
-is zero, all button actions are deleted,
-.I device_info->num_btns
-is set to zero, and
-.I device_info->btn_acts
-is set to NULL. If
-.I device_info
-is invalid or
-.I new_total
-is greater than 255, BadValue is returned. If a memory allocation failure occurs, a BadAlloc is returned.
-
-To free an XkbDeviceInfoRec structure, use
-.I XkbFreeDeviceInfo.
-.SH STRUCTURES
-.LP
-Information about X Input Extension devices is transferred between a client program and the Xkb
-extension in an XkbDeviceInfoRec structure:
-.nf
-
- typedef struct {
- char * name; /\(** name for device */
- Atom type; /\(** name for class of devices */
- unsigned short device_spec; /\(** device of interest */
- Bool has_own_state; /\(** True=>this device has its own state */
- unsigned short supported; /\(** bits indicating supported capabilities */
- unsigned short unsupported; /\(** bits indicating unsupported capabilities */
- unsigned short num_btns; /\(** number of entries in btn_acts */
- XkbAction * btn_acts; /\(** button actions */
- unsigned short sz_leds; /\(** total number of entries in LEDs vector */
- unsigned short num_leds; /\(** number of valid entries in LEDs vector */
- unsigned short dflt_kbd_fb; /\(** input extension ID of default (core kbd) indicator */
- unsigned short dflt_led_fb; /\(** input extension ID of default indicator feedback */
- XkbDeviceLedInfoPtr leds; /\(** LED descriptions */
- } XkbDeviceInfoRec, *XkbDeviceInfoPtr;
-.fi
-.SH DIAGNOSTICS
-.TP 15
-.B BadAlloc
-Unable to allocate storage
-.TP 15
-.B BadValue
-An argument is out of range
-.SH "SEE ALSO"
-.BR XkbFreeDeviceInfo (__libmansuffix__)
+'\" t
+.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the "Software"),
+.\" to deal in the Software without restriction, including without limitation
+.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
+.\" and/or sell copies of the Software, and to permit persons to whom the
+.\" Software is furnished to do so, subject to the following conditions:
+.\"
+.\" The above copyright notice and this permission notice (including the next
+.\" paragraph) shall be included in all copies or substantial portions of the
+.\" Software.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+.\" DEALINGS IN THE SOFTWARE.
+.\"
+.TH XkbResizeDeviceButtonActions __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbResizeDeviceButtonActions \- Allocate additional space for button actions in an XkbDeviceInfoRec structure
+.SH SYNOPSIS
+.HP
+.B Status XkbResizeDeviceButtonActions
+.BI "(\^XkbDeviceInfoPtr " "device_info" "\^,"
+.BI "unsigned int " "new_total" "\^);"
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- device_info
+structure in which to allocate button actions
+.TP
+.I \- new_total
+new total number of button actions needed
+.SH DESCRIPTION
+.LP
+.I XkbResizeDeviceButtonActions
+reallocates space, if necessary, to make sure there is room for a total of
+.I new_total
+button actions in the
+.I device_info
+structure. Any new entries allocated are zeroed. If successful,
+.I XkbResizeDeviceButtonActions
+returns Success. If
+.I new_total
+is zero, all button actions are deleted,
+.I device_info->num_btns
+is set to zero, and
+.I device_info->btn_acts
+is set to NULL. If
+.I device_info
+is invalid or
+.I new_total
+is greater than 255, BadValue is returned. If a memory allocation failure occurs, a BadAlloc is returned.
+
+To free an XkbDeviceInfoRec structure, use
+.I XkbFreeDeviceInfo.
+.SH STRUCTURES
+.LP
+Information about X Input Extension devices is transferred between a client program and the Xkb
+extension in an XkbDeviceInfoRec structure:
+.nf
+
+ typedef struct {
+ char * name; /\(** name for device */
+ Atom type; /\(** name for class of devices */
+ unsigned short device_spec; /\(** device of interest */
+ Bool has_own_state; /\(** True=>this device has its own state */
+ unsigned short supported; /\(** bits indicating supported capabilities */
+ unsigned short unsupported; /\(** bits indicating unsupported capabilities */
+ unsigned short num_btns; /\(** number of entries in btn_acts */
+ XkbAction * btn_acts; /\(** button actions */
+ unsigned short sz_leds; /\(** total number of entries in LEDs vector */
+ unsigned short num_leds; /\(** number of valid entries in LEDs vector */
+ unsigned short dflt_kbd_fb; /\(** input extension ID of default (core kbd) indicator */
+ unsigned short dflt_led_fb; /\(** input extension ID of default indicator feedback */
+ XkbDeviceLedInfoPtr leds; /\(** LED descriptions */
+ } XkbDeviceInfoRec, *XkbDeviceInfoPtr;
+.fi
+.SH DIAGNOSTICS
+.TP 15
+.B BadAlloc
+Unable to allocate storage
+.TP 15
+.B BadValue
+An argument is out of range
+.SH "SEE ALSO"
+.BR XkbFreeDeviceInfo (__libmansuffix__)
diff --git a/libX11/man/xkb/XkbResizeKeyActions.man b/libX11/man/xkb/XkbResizeKeyActions.man
index 7ac9b86b4..b316aaafe 100644
--- a/libX11/man/xkb/XkbResizeKeyActions.man
+++ b/libX11/man/xkb/XkbResizeKeyActions.man
@@ -1,100 +1,100 @@
-'\" t
-.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
-.\"
-.\" Permission is hereby granted, free of charge, to any person obtaining a
-.\" copy of this software and associated documentation files (the "Software"),
-.\" to deal in the Software without restriction, including without limitation
-.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
-.\" and/or sell copies of the Software, and to permit persons to whom the
-.\" Software is furnished to do so, subject to the following conditions:
-.\"
-.\" The above copyright notice and this permission notice (including the next
-.\" paragraph) shall be included in all copies or substantial portions of the
-.\" Software.
-.\"
-.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-.\" DEALINGS IN THE SOFTWARE.
-.\"
-.TH XkbResizeKeyActions __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
-.SH NAME
-XkbResizeKeyActions \- Change the number of actions bound to a key
-.SH SYNOPSIS
-.HP
-.B XkbAction * XkbResizeKeyActions
-.BI "(\^XkbDescRec *" "xkb" "\^,"
-.BI "int " "key" "\^,"
-.BI "int " "needed" "\^);"
-.if n .ti +5n
-.if t .ti +.5i
-.SH ARGUMENTS
-.TP
-.I \- xkb
-keyboard description to change
-.TP
-.I \- key
-keycode of key to change
-.TP
-.I \- needed
-new number of actions required
-.SH DESCRIPTION
-.LP
-The
-.I xkb
-parameter points to the keyboard description containing the
-.I key
-whose number of actions is to be changed. The
-.I key
-parameter is the keycode of the key to change, and needed specifies the new
-number of actions required for the key.
-
-.I XkbResizeKeyActions
-reserves the space needed for the actions and returns a pointer to the beginning
-of the new array that holds the actions. It can change the
-.I acts, num_acts,
-and
-.I size_acts
-fields of
-.I xkb->server
-if it is necessary to reallocate the
-.I acts
-array.
-
-If
-.I needed
-is greater than the current number of keysyms for the key,
-.I XkbResizeKeyActions
-initializes all new actions in the array to NoAction.
-
-Because the number of actions needed by a key is normally computed as width *
-number of groups, and
-.I XkbResizeKeyActions
-does not modify either the width or number of groups for the key, a discrepancy
-exists on return from
-.I XkbResizeKeyActions
-between the space allocated for the actions and the number required. The unused
-entries in the list of actions returned by
-.I XkbResizeKeyActions
-are not preserved across future calls to any of the map editing functions, so
-you must update the key actions (which updates the width and number of groups
-for the key) before calling another allocator function. A call to
-.I XkbChangeTypesOfKey
-updates these.
-
-If any allocation errors occur while resizing the number of actions bound to the
-key,
-.I XkbResizeKeyActions
-returns NULL.
-.SH "SEE ALSO"
-.BR XkbChangeTypesOfKey (__libmansuffix__),
-.BR XkbResizeKeySyms (__libmansuffix__)
-.SH NOTES
-.LP
-A change to the number of actions bound to a key should be accompanied by a
-change in the number of symbols bound to a key. Refer to
-.I XkbResizeKeySyms
-for more information on changing the number of symbols bound to a key.
+'\" t
+.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the "Software"),
+.\" to deal in the Software without restriction, including without limitation
+.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
+.\" and/or sell copies of the Software, and to permit persons to whom the
+.\" Software is furnished to do so, subject to the following conditions:
+.\"
+.\" The above copyright notice and this permission notice (including the next
+.\" paragraph) shall be included in all copies or substantial portions of the
+.\" Software.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+.\" DEALINGS IN THE SOFTWARE.
+.\"
+.TH XkbResizeKeyActions __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbResizeKeyActions \- Change the number of actions bound to a key
+.SH SYNOPSIS
+.HP
+.B XkbAction * XkbResizeKeyActions
+.BI "(\^XkbDescRec *" "xkb" "\^,"
+.BI "int " "key" "\^,"
+.BI "int " "needed" "\^);"
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- xkb
+keyboard description to change
+.TP
+.I \- key
+keycode of key to change
+.TP
+.I \- needed
+new number of actions required
+.SH DESCRIPTION
+.LP
+The
+.I xkb
+parameter points to the keyboard description containing the
+.I key
+whose number of actions is to be changed. The
+.I key
+parameter is the keycode of the key to change, and needed specifies the new
+number of actions required for the key.
+
+.I XkbResizeKeyActions
+reserves the space needed for the actions and returns a pointer to the beginning
+of the new array that holds the actions. It can change the
+.I acts, num_acts,
+and
+.I size_acts
+fields of
+.I xkb->server
+if it is necessary to reallocate the
+.I acts
+array.
+
+If
+.I needed
+is greater than the current number of keysyms for the key,
+.I XkbResizeKeyActions
+initializes all new actions in the array to NoAction.
+
+Because the number of actions needed by a key is normally computed as width *
+number of groups, and
+.I XkbResizeKeyActions
+does not modify either the width or number of groups for the key, a discrepancy
+exists on return from
+.I XkbResizeKeyActions
+between the space allocated for the actions and the number required. The unused
+entries in the list of actions returned by
+.I XkbResizeKeyActions
+are not preserved across future calls to any of the map editing functions, so
+you must update the key actions (which updates the width and number of groups
+for the key) before calling another allocator function. A call to
+.I XkbChangeTypesOfKey
+updates these.
+
+If any allocation errors occur while resizing the number of actions bound to the
+key,
+.I XkbResizeKeyActions
+returns NULL.
+.SH "SEE ALSO"
+.BR XkbChangeTypesOfKey (__libmansuffix__),
+.BR XkbResizeKeySyms (__libmansuffix__)
+.SH NOTES
+.LP
+A change to the number of actions bound to a key should be accompanied by a
+change in the number of symbols bound to a key. Refer to
+.I XkbResizeKeySyms
+for more information on changing the number of symbols bound to a key.
diff --git a/libX11/man/xkb/XkbResizeKeySyms.man b/libX11/man/xkb/XkbResizeKeySyms.man
index 243baff81..9219ee51d 100644
--- a/libX11/man/xkb/XkbResizeKeySyms.man
+++ b/libX11/man/xkb/XkbResizeKeySyms.man
@@ -1,98 +1,98 @@
-'\" t
-.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
-.\"
-.\" Permission is hereby granted, free of charge, to any person obtaining a
-.\" copy of this software and associated documentation files (the "Software"),
-.\" to deal in the Software without restriction, including without limitation
-.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
-.\" and/or sell copies of the Software, and to permit persons to whom the
-.\" Software is furnished to do so, subject to the following conditions:
-.\"
-.\" The above copyright notice and this permission notice (including the next
-.\" paragraph) shall be included in all copies or substantial portions of the
-.\" Software.
-.\"
-.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-.\" DEALINGS IN THE SOFTWARE.
-.\"
-.TH XkbResizeKeySyms __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
-.SH NAME
-XkbResizeKeySyms \- Change the number of symbols bound to a key
-.SH SYNOPSIS
-.HP
-.B KeySym * XkbResizeKeySyms
-.BI "(\^XkbDescRec *" "xkb" "\^,"
-.BI "int " "key" "\^,"
-.BI "int " "needed" "\^);"
-.if n .ti +5n
-.if t .ti +.5i
-.SH ARGUMENTS
-.TP
-.I \- xkb
-keyboard description to be changed
-.TP
-.I \- key
-keycode for key to modify
-.TP
-.I \- needed
-new number of keysyms required for key
-.SH DESCRIPTION
-.LP
-.I XkbResizeKeySyms
-reserves the space needed for
-.I needed
-keysyms and returns a pointer to the beginning of the new array that holds the
-keysyms. It adjusts the
-.I offset
-field of the
-.I key_sym_map
-entry for the key if necessary and can also change the
-.I syms, num_syms,
-and
-.I size_syms
-fields of
-.I xkb->map
-if it is necessary to reallocate the
-.I syms
-array.
-.I XkbResizeKeySyms
-does not modify either the width or number of groups associated with the key.
-
-If
-.I needed
-is greater than the current number of keysyms for the key,
-.I XkbResizeKeySyms
-initializes all new keysyms in the array to NoSymbol.
-
-Because the number of symbols needed by a key is normally computed as width *
-number of groups, and
-.I XkbResizeKeySyms
-does not modify either the width or number of groups for the key, a discrepancy
-exists upon return from
-.I XkbResizeKeySyms
-between the space allocated for the keysyms and the number required. The unused
-entries in the list of symbols returned by
-.I XkbResizeKeySyms
-are not preserved across future calls to any of the map editing functions, so
-you must update the key symbol mapping (which updates the width and number of
-groups for the key) before calling another allocator function. A call to
-.I XkbChangeTypesOfKey
-will update the mapping.
-
-If any allocation errors occur while resizing the number of symbols bound to the
-key,
-.I XkbResizeKeySyms
-returns NULL.
-.SH "SEE ALSO"
-.BR XkbChangeTypesOfKey (__libmansuffix__),
-.BR XkbResizeKeyActions (__libmansuffix__)
-.SH NOTES
-.LP
-A change to the number of symbols bound to a key should be accompanied by a
-change in the number of actions bound to a key. Refer to XkbResizeKeyActions for
-more information on changing the number of actions bound to a key.
+'\" t
+.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the "Software"),
+.\" to deal in the Software without restriction, including without limitation
+.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
+.\" and/or sell copies of the Software, and to permit persons to whom the
+.\" Software is furnished to do so, subject to the following conditions:
+.\"
+.\" The above copyright notice and this permission notice (including the next
+.\" paragraph) shall be included in all copies or substantial portions of the
+.\" Software.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+.\" DEALINGS IN THE SOFTWARE.
+.\"
+.TH XkbResizeKeySyms __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbResizeKeySyms \- Change the number of symbols bound to a key
+.SH SYNOPSIS
+.HP
+.B KeySym * XkbResizeKeySyms
+.BI "(\^XkbDescRec *" "xkb" "\^,"
+.BI "int " "key" "\^,"
+.BI "int " "needed" "\^);"
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- xkb
+keyboard description to be changed
+.TP
+.I \- key
+keycode for key to modify
+.TP
+.I \- needed
+new number of keysyms required for key
+.SH DESCRIPTION
+.LP
+.I XkbResizeKeySyms
+reserves the space needed for
+.I needed
+keysyms and returns a pointer to the beginning of the new array that holds the
+keysyms. It adjusts the
+.I offset
+field of the
+.I key_sym_map
+entry for the key if necessary and can also change the
+.I syms, num_syms,
+and
+.I size_syms
+fields of
+.I xkb->map
+if it is necessary to reallocate the
+.I syms
+array.
+.I XkbResizeKeySyms
+does not modify either the width or number of groups associated with the key.
+
+If
+.I needed
+is greater than the current number of keysyms for the key,
+.I XkbResizeKeySyms
+initializes all new keysyms in the array to NoSymbol.
+
+Because the number of symbols needed by a key is normally computed as width *
+number of groups, and
+.I XkbResizeKeySyms
+does not modify either the width or number of groups for the key, a discrepancy
+exists upon return from
+.I XkbResizeKeySyms
+between the space allocated for the keysyms and the number required. The unused
+entries in the list of symbols returned by
+.I XkbResizeKeySyms
+are not preserved across future calls to any of the map editing functions, so
+you must update the key symbol mapping (which updates the width and number of
+groups for the key) before calling another allocator function. A call to
+.I XkbChangeTypesOfKey
+will update the mapping.
+
+If any allocation errors occur while resizing the number of symbols bound to the
+key,
+.I XkbResizeKeySyms
+returns NULL.
+.SH "SEE ALSO"
+.BR XkbChangeTypesOfKey (__libmansuffix__),
+.BR XkbResizeKeyActions (__libmansuffix__)
+.SH NOTES
+.LP
+A change to the number of symbols bound to a key should be accompanied by a
+change in the number of actions bound to a key. Refer to XkbResizeKeyActions for
+more information on changing the number of actions bound to a key.
diff --git a/libX11/man/xkb/XkbResizeKeyType.man b/libX11/man/xkb/XkbResizeKeyType.man
index 1bd9f41dd..a19158a6f 100644
--- a/libX11/man/xkb/XkbResizeKeyType.man
+++ b/libX11/man/xkb/XkbResizeKeyType.man
@@ -1,137 +1,137 @@
-'\" t
-.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
-.\"
-.\" Permission is hereby granted, free of charge, to any person obtaining a
-.\" copy of this software and associated documentation files (the "Software"),
-.\" to deal in the Software without restriction, including without limitation
-.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
-.\" and/or sell copies of the Software, and to permit persons to whom the
-.\" Software is furnished to do so, subject to the following conditions:
-.\"
-.\" The above copyright notice and this permission notice (including the next
-.\" paragraph) shall be included in all copies or substantial portions of the
-.\" Software.
-.\"
-.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-.\" DEALINGS IN THE SOFTWARE.
-.\"
-.TH XkbResizeKeyType __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
-.SH NAME
-XkbResizeKeyType \- Change the number of levels in a key type
-.SH SYNOPSIS
-.HP
-.B Status XkbResizeKeyType
-.BI "(\^XkbDescPtr " "xkb" "\^,"
-.BI "int " "type_ndx" "\^,"
-.BI "int " "map_count" "\^,"
-.BI "Bool " "want_preserve" "\^,"
-.BI "int " "new_num_lvls" "\^);"
-.if n .ti +5n
-.if t .ti +.5i
-.SH ARGUMENTS
-.TP
-.I \- xkb
-keyboard description containing client map to update
-.TP
-.I \- type_ndx
-index in xkb->map->types of type to change
-.TP
-.I \- map_count
-total # of map entries needed for the type
-.TP
-.I \- want_preserve
-True => list of preserved modifiers is necessary
-.TP
-.I \- new_num_lvls
-new max # of levels for type
-.SH DESCRIPTION
-.LP
-.I XkbResizeKeyType
-changes the type specified by
-.I xkb->map->types[type_ndx],
-and reallocates the symbols and actions bound to all keys that use the type, if
-necessary.
-.I XkbResizeKeyType
-updates only the local copy of the types in
-.I xkb;
-to update the server's copy for the physical device, use
-.I XkbSetMap
-or
-.I XkbChangeMap
-after calling
-.I XkbResizeKeyType.
-
-The
-.I map_count
-parameter specifies the total number of map entries needed for the type, and can
-be zero or greater. If
-.I map_count
-is zero,
-.I XkbResizeKeyType
-frees the existing
-.I map
-and
-.I preserve
-entries for the type if they exist and sets them to NULL.
-
-The
-.I want_preserve
-parameter specifies whether a
-.I preserve
-list for the key should be created. If
-.I want_preserve
-is True, the
-.I preserve
-list with
-.I map_count
-entries is allocated or reallocated if it already exists. Otherwise, if
-.I want_preserve
-is False, the
-.I preserve
-field is freed if necessary and set to NULL.
-
-The
-.I new_num_lvls
-parameter specifies the new maximum number of shift levels for the type and is
-used to calculate and resize the symbols and actions bound to all keys that use
-the type.
-
-If
-.I type_ndx
-does not specify a legal type,
-.I new_num_lvls
-is less than 1, or the
-.I map_count
-is less than zero,
-.I XkbResizeKeyType
-returns BadValue. If
-.I XkbResizeKeyType
-encounters any problems with allocation, it returns BadAlloc. Otherwise, it
-returns Success.
-.SH "RETURN VALUES"
-.TP 15
-Success
-The
-.I XkbResizeKeyType
-function returns Success if
-.I type_ndx
-specifies a legal type,
-.I new_num_lvls
-is greater than zero and
-.I map_count
-is positive.
-.SH DIAGNOSTICS
-.TP 15
-.B BadAlloc
-Unable to allocate storage
-.TP 15
-.B BadValue
-An argument is out of range
-.SH "SEE ALSO"
-.BR XkbChangeMap (__libmansuffix__),
-.BR XkbSetMap (__libmansuffix__)
+'\" t
+.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the "Software"),
+.\" to deal in the Software without restriction, including without limitation
+.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
+.\" and/or sell copies of the Software, and to permit persons to whom the
+.\" Software is furnished to do so, subject to the following conditions:
+.\"
+.\" The above copyright notice and this permission notice (including the next
+.\" paragraph) shall be included in all copies or substantial portions of the
+.\" Software.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+.\" DEALINGS IN THE SOFTWARE.
+.\"
+.TH XkbResizeKeyType __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbResizeKeyType \- Change the number of levels in a key type
+.SH SYNOPSIS
+.HP
+.B Status XkbResizeKeyType
+.BI "(\^XkbDescPtr " "xkb" "\^,"
+.BI "int " "type_ndx" "\^,"
+.BI "int " "map_count" "\^,"
+.BI "Bool " "want_preserve" "\^,"
+.BI "int " "new_num_lvls" "\^);"
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- xkb
+keyboard description containing client map to update
+.TP
+.I \- type_ndx
+index in xkb->map->types of type to change
+.TP
+.I \- map_count
+total # of map entries needed for the type
+.TP
+.I \- want_preserve
+True => list of preserved modifiers is necessary
+.TP
+.I \- new_num_lvls
+new max # of levels for type
+.SH DESCRIPTION
+.LP
+.I XkbResizeKeyType
+changes the type specified by
+.I xkb->map->types[type_ndx],
+and reallocates the symbols and actions bound to all keys that use the type, if
+necessary.
+.I XkbResizeKeyType
+updates only the local copy of the types in
+.I xkb;
+to update the server's copy for the physical device, use
+.I XkbSetMap
+or
+.I XkbChangeMap
+after calling
+.I XkbResizeKeyType.
+
+The
+.I map_count
+parameter specifies the total number of map entries needed for the type, and can
+be zero or greater. If
+.I map_count
+is zero,
+.I XkbResizeKeyType
+frees the existing
+.I map
+and
+.I preserve
+entries for the type if they exist and sets them to NULL.
+
+The
+.I want_preserve
+parameter specifies whether a
+.I preserve
+list for the key should be created. If
+.I want_preserve
+is True, the
+.I preserve
+list with
+.I map_count
+entries is allocated or reallocated if it already exists. Otherwise, if
+.I want_preserve
+is False, the
+.I preserve
+field is freed if necessary and set to NULL.
+
+The
+.I new_num_lvls
+parameter specifies the new maximum number of shift levels for the type and is
+used to calculate and resize the symbols and actions bound to all keys that use
+the type.
+
+If
+.I type_ndx
+does not specify a legal type,
+.I new_num_lvls
+is less than 1, or the
+.I map_count
+is less than zero,
+.I XkbResizeKeyType
+returns BadValue. If
+.I XkbResizeKeyType
+encounters any problems with allocation, it returns BadAlloc. Otherwise, it
+returns Success.
+.SH "RETURN VALUES"
+.TP 15
+Success
+The
+.I XkbResizeKeyType
+function returns Success if
+.I type_ndx
+specifies a legal type,
+.I new_num_lvls
+is greater than zero and
+.I map_count
+is positive.
+.SH DIAGNOSTICS
+.TP 15
+.B BadAlloc
+Unable to allocate storage
+.TP 15
+.B BadValue
+An argument is out of range
+.SH "SEE ALSO"
+.BR XkbChangeMap (__libmansuffix__),
+.BR XkbSetMap (__libmansuffix__)
diff --git a/libX11/man/xkb/XkbSAActionSetCtrls.man b/libX11/man/xkb/XkbSAActionSetCtrls.man
index f2f6770d2..b6da9fb7c 100644
--- a/libX11/man/xkb/XkbSAActionSetCtrls.man
+++ b/libX11/man/xkb/XkbSAActionSetCtrls.man
@@ -1,150 +1,150 @@
-'\" t
-.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
-.\"
-.\" Permission is hereby granted, free of charge, to any person obtaining a
-.\" copy of this software and associated documentation files (the "Software"),
-.\" to deal in the Software without restriction, including without limitation
-.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
-.\" and/or sell copies of the Software, and to permit persons to whom the
-.\" Software is furnished to do so, subject to the following conditions:
-.\"
-.\" The above copyright notice and this permission notice (including the next
-.\" paragraph) shall be included in all copies or substantial portions of the
-.\" Software.
-.\"
-.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-.\" DEALINGS IN THE SOFTWARE.
-.\"
-.TH XkbSAActionSetCtrls __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
-.SH NAME
-XkbSAActionSetCtrls \- Sets the
-.I ctrls0
-through
-.I ctrls3
-fields of
-.I act
-from
-.I ctrls
-.SH SYNOPSIS
-.HP
-.B void XkbSAActionSetCtrls
-.BI "(\^XkbCtrlsAction " "act" "\^,"
-.BI "unsigned int " "ctrls" "\^);"
-.if n .ti +5n
-.if t .ti +.5i
-.SH ARGUMENTS
-.TP
-.I \- act
-action in which to set ctrls0-ctrls3
-.TP
-.I \- ctrls
-value to set in ctrls0-ctrls3
-.SH DESCRIPTION
-.LP
-Actions associated with the XkbCtrlsAction structure change the state of the
-boolean controls.
-
-The
-.I type
-field can have any one of the values shown in Table 1.
-
-.TS
-c s
-l l
-l lw(4i).
-Table 1 Controls Action Types
-_
-Type Effect
-_
-XkbSA_SetControls T{
-A key press enables any boolean controls specified in the ctrls fields that were
-not already enabled at
-the time of the key press.
-A key release disables any controls enabled by the key press.
-This action can cause XkbControlsNotify events.
-T}
-XkbSA_LockControls T{
-If the XkbSA_LockNoLock bit is not set in the flags field, a key press enables
-any controls specified in
-the ctrls fields that were not already enabled at the time of the key press.
-.br
-If the XkbSA_LockNoUnlock bit is not set in the flags field, a key release
-disables any controls
-specified in the ctrls fields that were not already disabled at the time of the
-key press.
-.br
-This action can cause XkbControlsNotify events.
-T}
-.TE
-
-The
-.I flags
-field is composed of the bitwise inclusive OR of the masks shown in Table 2.
-
-.TS
-c s
-l l
-l lw(4i).
-Table 2 Control Action Flags
-_
-Flag Meaning
-_
-XkbSA_LockNoLock T{
-If set, and the action type is XkbSA_LockControls, the server only disables
-controls.
-T}
-XkbSA_LockNoUnlock T{
-If set, and the action type is XkbSA_LockControls, the server only enables
-controls.
-T}
-.TE
-
-The XkbSA_SetControls action implements a key that enables a boolean control
-when pressed and disables it
-when released. The XkbSA_LockControls action is used to implement a key that
-toggles the state of a
-boolean control each time it is pressed and released. The XkbSA_LockNoLock and
-XkbSA_LockNoUnlock flags
-allow modifying the toggling behavior to only unlock or only lock the boolean
-control.
-
-The
-.I ctrls0, ctrls1, ctrls2,
-and
-.I ctrls3
-fields represent the boolean controls in the
-.I enabled_ctrls
-field of the controls structure. Xkb macros, to convert between the two formats.
-
-.I XkbSAActionSetCtrls
-sets the
-.I ctrls0
-through
-.I ctrls3
-fields of
-.I act
-from
-.I ctrls.
-.SH STRUCTURES
-.LP
-.nf
-
- typedef struct _XkbCtrlsAction {
- unsigned char type; /\(** XkbSA_SetControls, XkbSA_LockControls */
- unsigned char flags; /\(** with type, controls enabling and disabling
-of controls */
- unsigned char ctrls3; /\(** ctrls0 through ctrls3 represent the boolean
-controls */
- unsigned char ctrls2; /\(** ctrls0 through ctrls3 represent the boolean
-controls */
- unsigned char ctrls1; /\(** ctrls0 through ctrls3 represent the boolean
-controls */
- unsigned char ctrls0; /\(** ctrls0 through ctrls3 represent the boolean
-controls */
- } XkbCtrlsAction;
-.fi
+'\" t
+.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the "Software"),
+.\" to deal in the Software without restriction, including without limitation
+.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
+.\" and/or sell copies of the Software, and to permit persons to whom the
+.\" Software is furnished to do so, subject to the following conditions:
+.\"
+.\" The above copyright notice and this permission notice (including the next
+.\" paragraph) shall be included in all copies or substantial portions of the
+.\" Software.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+.\" DEALINGS IN THE SOFTWARE.
+.\"
+.TH XkbSAActionSetCtrls __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbSAActionSetCtrls \- Sets the
+.I ctrls0
+through
+.I ctrls3
+fields of
+.I act
+from
+.I ctrls
+.SH SYNOPSIS
+.HP
+.B void XkbSAActionSetCtrls
+.BI "(\^XkbCtrlsAction " "act" "\^,"
+.BI "unsigned int " "ctrls" "\^);"
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- act
+action in which to set ctrls0-ctrls3
+.TP
+.I \- ctrls
+value to set in ctrls0-ctrls3
+.SH DESCRIPTION
+.LP
+Actions associated with the XkbCtrlsAction structure change the state of the
+boolean controls.
+
+The
+.I type
+field can have any one of the values shown in Table 1.
+
+.TS
+c s
+l l
+l lw(4i).
+Table 1 Controls Action Types
+_
+Type Effect
+_
+XkbSA_SetControls T{
+A key press enables any boolean controls specified in the ctrls fields that were
+not already enabled at
+the time of the key press.
+A key release disables any controls enabled by the key press.
+This action can cause XkbControlsNotify events.
+T}
+XkbSA_LockControls T{
+If the XkbSA_LockNoLock bit is not set in the flags field, a key press enables
+any controls specified in
+the ctrls fields that were not already enabled at the time of the key press.
+.br
+If the XkbSA_LockNoUnlock bit is not set in the flags field, a key release
+disables any controls
+specified in the ctrls fields that were not already disabled at the time of the
+key press.
+.br
+This action can cause XkbControlsNotify events.
+T}
+.TE
+
+The
+.I flags
+field is composed of the bitwise inclusive OR of the masks shown in Table 2.
+
+.TS
+c s
+l l
+l lw(4i).
+Table 2 Control Action Flags
+_
+Flag Meaning
+_
+XkbSA_LockNoLock T{
+If set, and the action type is XkbSA_LockControls, the server only disables
+controls.
+T}
+XkbSA_LockNoUnlock T{
+If set, and the action type is XkbSA_LockControls, the server only enables
+controls.
+T}
+.TE
+
+The XkbSA_SetControls action implements a key that enables a boolean control
+when pressed and disables it
+when released. The XkbSA_LockControls action is used to implement a key that
+toggles the state of a
+boolean control each time it is pressed and released. The XkbSA_LockNoLock and
+XkbSA_LockNoUnlock flags
+allow modifying the toggling behavior to only unlock or only lock the boolean
+control.
+
+The
+.I ctrls0, ctrls1, ctrls2,
+and
+.I ctrls3
+fields represent the boolean controls in the
+.I enabled_ctrls
+field of the controls structure. Xkb macros, to convert between the two formats.
+
+.I XkbSAActionSetCtrls
+sets the
+.I ctrls0
+through
+.I ctrls3
+fields of
+.I act
+from
+.I ctrls.
+.SH STRUCTURES
+.LP
+.nf
+
+ typedef struct _XkbCtrlsAction {
+ unsigned char type; /\(** XkbSA_SetControls, XkbSA_LockControls */
+ unsigned char flags; /\(** with type, controls enabling and disabling
+of controls */
+ unsigned char ctrls3; /\(** ctrls0 through ctrls3 represent the boolean
+controls */
+ unsigned char ctrls2; /\(** ctrls0 through ctrls3 represent the boolean
+controls */
+ unsigned char ctrls1; /\(** ctrls0 through ctrls3 represent the boolean
+controls */
+ unsigned char ctrls0; /\(** ctrls0 through ctrls3 represent the boolean
+controls */
+ } XkbCtrlsAction;
+.fi
diff --git a/libX11/man/xkb/XkbSAPtrDfltValue.man b/libX11/man/xkb/XkbSAPtrDfltValue.man
index 79bab6044..8efd3e405 100644
--- a/libX11/man/xkb/XkbSAPtrDfltValue.man
+++ b/libX11/man/xkb/XkbSAPtrDfltValue.man
@@ -1,107 +1,107 @@
-'\" t
-.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
-.\"
-.\" Permission is hereby granted, free of charge, to any person obtaining a
-.\" copy of this software and associated documentation files (the "Software"),
-.\" to deal in the Software without restriction, including without limitation
-.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
-.\" and/or sell copies of the Software, and to permit persons to whom the
-.\" Software is furnished to do so, subject to the following conditions:
-.\"
-.\" The above copyright notice and this permission notice (including the next
-.\" paragraph) shall be included in all copies or substantial portions of the
-.\" Software.
-.\"
-.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-.\" DEALINGS IN THE SOFTWARE.
-.\"
-.TH XkbSAPtrDfltValue __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
-.SH NAME
-XkbSAPtrDfltValue \- Returns the valueXXX field of act converted to a signed int
-.SH SYNOPSIS
-.HP
-.B int XkbSAPtrDfltValue
-.BI "(\^XkbAction " "act" "\^);"
-.if n .ti +5n
-.if t .ti +.5i
-.SH ARGUMENTS
-.TP
-.I \- act
-action from which to extract group
-.SH DESCRIPTION
-.LP
-Actions associated with the XkbPtrDfltAction structure change the mk_dflt_btn
-attribute of the MouseKeys control.
-
-If the MouseKeys control is not enabled, KeyPress and KeyRelease events are
-treated as though the action is XkbSA_NoAction. Otherwise, this action changes
-the
-.I mk_dflt_btn
-attribute of the MouseKeys control.
-
-The
-.I type
-field of the XkbPtrDfltAction structure should always be XkbSA_SetPtrDflt.
-
-The
-.I flags
-field is composed of the bitwise inclusive OR of the values shown in Table 1
-(currently there is only one value defined).
-
-.TS
-c s
-l l
-l lw(4i).
-Table 1 Pointer Default Flags
-_
-Flag Meaning
-_
-XkbSA_DfltBtnAbsolute T{
-If set, the value field represents an absolute pointer button. Otherwise, the
-value field represents the amount to be added to the current default button.
-T}
-.TE
-
-The
-.I affect
-field specifies what changes as a result of this action. The only valid value
-for the
-.I affect
-field is XkbSA_AffectDfltBtn.
-
-The
-.I valueXXX
-field is a signed character that represents the new button value for the
-.I mk_dflt_btn
-attribute of the MouseKeys control. If XkbSA_DfltBtnAbsolute is set in
-.I flags, valueXXX
-specifies the button to be used; otherwise,
-.I valueXXX
-specifies the amount to be added to the current default button. In either case,
-illegal button choices are wrapped back around into range. Xkb provides macros,
-to convert between the integer and signed character values in XkbPtrDfltAction
-structures.
-
-.I XkbSAPtrDfltValue
-returns the
-.I valueXXX
-field of
-.I act
-converted to a signed int.
-.SH STRUCTURES
-.LP
-.nf
-
- typedef struct _XkbPtrDfltAction {
- unsigned char type; /\(** XkbSA_SetPtrDflt */
- unsigned char flags; /\(** controls the pointer button number */
- unsigned char affect; /\(** XkbSA_AffectDfltBtn */
- char valueXXX; /\(** new default button member */
- } XkbPtrDfltAction;
-
-.fi
+'\" t
+.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the "Software"),
+.\" to deal in the Software without restriction, including without limitation
+.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
+.\" and/or sell copies of the Software, and to permit persons to whom the
+.\" Software is furnished to do so, subject to the following conditions:
+.\"
+.\" The above copyright notice and this permission notice (including the next
+.\" paragraph) shall be included in all copies or substantial portions of the
+.\" Software.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+.\" DEALINGS IN THE SOFTWARE.
+.\"
+.TH XkbSAPtrDfltValue __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbSAPtrDfltValue \- Returns the valueXXX field of act converted to a signed int
+.SH SYNOPSIS
+.HP
+.B int XkbSAPtrDfltValue
+.BI "(\^XkbAction " "act" "\^);"
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- act
+action from which to extract group
+.SH DESCRIPTION
+.LP
+Actions associated with the XkbPtrDfltAction structure change the mk_dflt_btn
+attribute of the MouseKeys control.
+
+If the MouseKeys control is not enabled, KeyPress and KeyRelease events are
+treated as though the action is XkbSA_NoAction. Otherwise, this action changes
+the
+.I mk_dflt_btn
+attribute of the MouseKeys control.
+
+The
+.I type
+field of the XkbPtrDfltAction structure should always be XkbSA_SetPtrDflt.
+
+The
+.I flags
+field is composed of the bitwise inclusive OR of the values shown in Table 1
+(currently there is only one value defined).
+
+.TS
+c s
+l l
+l lw(4i).
+Table 1 Pointer Default Flags
+_
+Flag Meaning
+_
+XkbSA_DfltBtnAbsolute T{
+If set, the value field represents an absolute pointer button. Otherwise, the
+value field represents the amount to be added to the current default button.
+T}
+.TE
+
+The
+.I affect
+field specifies what changes as a result of this action. The only valid value
+for the
+.I affect
+field is XkbSA_AffectDfltBtn.
+
+The
+.I valueXXX
+field is a signed character that represents the new button value for the
+.I mk_dflt_btn
+attribute of the MouseKeys control. If XkbSA_DfltBtnAbsolute is set in
+.I flags, valueXXX
+specifies the button to be used; otherwise,
+.I valueXXX
+specifies the amount to be added to the current default button. In either case,
+illegal button choices are wrapped back around into range. Xkb provides macros,
+to convert between the integer and signed character values in XkbPtrDfltAction
+structures.
+
+.I XkbSAPtrDfltValue
+returns the
+.I valueXXX
+field of
+.I act
+converted to a signed int.
+.SH STRUCTURES
+.LP
+.nf
+
+ typedef struct _XkbPtrDfltAction {
+ unsigned char type; /\(** XkbSA_SetPtrDflt */
+ unsigned char flags; /\(** controls the pointer button number */
+ unsigned char affect; /\(** XkbSA_AffectDfltBtn */
+ char valueXXX; /\(** new default button member */
+ } XkbPtrDfltAction;
+
+.fi
diff --git a/libX11/man/xkb/XkbSARedirectSetVMods.man b/libX11/man/xkb/XkbSARedirectSetVMods.man
index d93552dc4..70565d739 100644
--- a/libX11/man/xkb/XkbSARedirectSetVMods.man
+++ b/libX11/man/xkb/XkbSARedirectSetVMods.man
@@ -1,109 +1,109 @@
-.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
-.\"
-.\" Permission is hereby granted, free of charge, to any person obtaining a
-.\" copy of this software and associated documentation files (the "Software"),
-.\" to deal in the Software without restriction, including without limitation
-.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
-.\" and/or sell copies of the Software, and to permit persons to whom the
-.\" Software is furnished to do so, subject to the following conditions:
-.\"
-.\" The above copyright notice and this permission notice (including the next
-.\" paragraph) shall be included in all copies or substantial portions of the
-.\" Software.
-.\"
-.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-.\" DEALINGS IN THE SOFTWARE.
-.\"
-.TH XkbSARedirectSetVMods __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
-.SH NAME
-XkbSARedirectSetVMods \- Sets the vmods0 and vmods1 of act from v
-.SH SYNOPSIS
-.HP
-.B void XkbSARedirectSetVMods
-.BI "(\^XkbRedirectKeyAction " "act" "\^,"
-.BI "unsigned int " "v" "\^);"
-.if n .ti +5n
-.if t .ti +.5i
-.SH ARGUMENTS
-.TP
-.I \- act
-action in which to set vmods
-.TP
-.I \- v
-new value for virtual modifiers
-.SH DESCRIPTION
-.LP
-Actions associated with the XkbRedirectKeyAction structure generate KeyPress and KeyRelease events
-containing a keycode different from the key that was pressed or released.
-
-The
-.I type
-field for the XkbRedirectKeyAction structure should always be XkbSA_RedirectKey.
-Key presses cause a KeyPress event for the key specified by the
-.I new_key
-field instead of the actual key. The state reported in this event reports the current effective
-modifiers changed as follows: any real modifiers selected by the
-.I mods_mask
-field are set to corresponding values from the
-.I mods
-field. Any real modifiers bound to the virtual modifiers specified by the
-.I vmods_mask0
-and
-.I vmods_mask1
-fields are either set or cleared, depending on the corresponding values in the
-.I vmods0
-and
-.I vmods1
-fields. If the real and virtual modifier definitions specify conflicting values for a single modifier,
-the real modifier definition has priority.
-
-Key releases cause a KeyRelease event for the key specified by the
-.I new_key
-field instead of the actual key. The state for this event consists of the effective keyboard modifiers
-at the time of the release, changed as described previously.
-
-The XkbSA_RedirectKey action normally redirects to another key on the same device as the key that
-caused the event, unless that device does not belong to the input extension KeyClass, in which case
-this action causes an event on the core keyboard device. (The input extension categorizes devices by
-breaking them into classes. Keyboards, and other input devices with keys, are classified as KeyClass
-devices by the input extension.)
-
-The
-.I vmods_mask0
-and
-.I vmods_mask1
-fields actually represent one
-.I vmods_mask
-value. Xkb provides macros to convert between the two formats.
-
-
-.I XkbSARedirectSetVModsMask
-sets the
-.I vmods0
-and
-.I vmods1
-of
-.I act
-from
-.I v.
-.SH STRUCTURES
-.LP
-.nf
-
- typedef struct_XkbRedirectKeyAction {
- unsigned char type; /\(** XkbSA_RedirectKey */
- unsigned char new_key; /\(** keycode to be put in event */
- unsigned char mods_mask; /\(** mask of real mods to be reset */
- unsigned char mods; /\(** mask of real mods to take values from */
- unsigned char vmods_mask0; /\(** first half of mask of virtual mods to be reset */
- unsigned char vmods_mask1; /\(** other half of mask of virtual mods to be reset */
- unsigned char vmods0; /\(** first half of mask of virtual mods to take values from */
- unsigned char vmods1; /\(** other half of mask of virtual mods to take values from */
- } XkbRedirectKeyAction;
-
-.fi
+.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the "Software"),
+.\" to deal in the Software without restriction, including without limitation
+.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
+.\" and/or sell copies of the Software, and to permit persons to whom the
+.\" Software is furnished to do so, subject to the following conditions:
+.\"
+.\" The above copyright notice and this permission notice (including the next
+.\" paragraph) shall be included in all copies or substantial portions of the
+.\" Software.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+.\" DEALINGS IN THE SOFTWARE.
+.\"
+.TH XkbSARedirectSetVMods __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbSARedirectSetVMods \- Sets the vmods0 and vmods1 of act from v
+.SH SYNOPSIS
+.HP
+.B void XkbSARedirectSetVMods
+.BI "(\^XkbRedirectKeyAction " "act" "\^,"
+.BI "unsigned int " "v" "\^);"
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- act
+action in which to set vmods
+.TP
+.I \- v
+new value for virtual modifiers
+.SH DESCRIPTION
+.LP
+Actions associated with the XkbRedirectKeyAction structure generate KeyPress and KeyRelease events
+containing a keycode different from the key that was pressed or released.
+
+The
+.I type
+field for the XkbRedirectKeyAction structure should always be XkbSA_RedirectKey.
+Key presses cause a KeyPress event for the key specified by the
+.I new_key
+field instead of the actual key. The state reported in this event reports the current effective
+modifiers changed as follows: any real modifiers selected by the
+.I mods_mask
+field are set to corresponding values from the
+.I mods
+field. Any real modifiers bound to the virtual modifiers specified by the
+.I vmods_mask0
+and
+.I vmods_mask1
+fields are either set or cleared, depending on the corresponding values in the
+.I vmods0
+and
+.I vmods1
+fields. If the real and virtual modifier definitions specify conflicting values for a single modifier,
+the real modifier definition has priority.
+
+Key releases cause a KeyRelease event for the key specified by the
+.I new_key
+field instead of the actual key. The state for this event consists of the effective keyboard modifiers
+at the time of the release, changed as described previously.
+
+The XkbSA_RedirectKey action normally redirects to another key on the same device as the key that
+caused the event, unless that device does not belong to the input extension KeyClass, in which case
+this action causes an event on the core keyboard device. (The input extension categorizes devices by
+breaking them into classes. Keyboards, and other input devices with keys, are classified as KeyClass
+devices by the input extension.)
+
+The
+.I vmods_mask0
+and
+.I vmods_mask1
+fields actually represent one
+.I vmods_mask
+value. Xkb provides macros to convert between the two formats.
+
+
+.I XkbSARedirectSetVModsMask
+sets the
+.I vmods0
+and
+.I vmods1
+of
+.I act
+from
+.I v.
+.SH STRUCTURES
+.LP
+.nf
+
+ typedef struct_XkbRedirectKeyAction {
+ unsigned char type; /\(** XkbSA_RedirectKey */
+ unsigned char new_key; /\(** keycode to be put in event */
+ unsigned char mods_mask; /\(** mask of real mods to be reset */
+ unsigned char mods; /\(** mask of real mods to take values from */
+ unsigned char vmods_mask0; /\(** first half of mask of virtual mods to be reset */
+ unsigned char vmods_mask1; /\(** other half of mask of virtual mods to be reset */
+ unsigned char vmods0; /\(** first half of mask of virtual mods to take values from */
+ unsigned char vmods1; /\(** other half of mask of virtual mods to take values from */
+ } XkbRedirectKeyAction;
+
+.fi
diff --git a/libX11/man/xkb/XkbSARedirectSetVModsMask.man b/libX11/man/xkb/XkbSARedirectSetVModsMask.man
index f12fc65db..3e627a8c0 100644
--- a/libX11/man/xkb/XkbSARedirectSetVModsMask.man
+++ b/libX11/man/xkb/XkbSARedirectSetVModsMask.man
@@ -1,122 +1,122 @@
-'\" t
-.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
-.\"
-.\" Permission is hereby granted, free of charge, to any person obtaining a
-.\" copy of this software and associated documentation files (the "Software"),
-.\" to deal in the Software without restriction, including without limitation
-.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
-.\" and/or sell copies of the Software, and to permit persons to whom the
-.\" Software is furnished to do so, subject to the following conditions:
-.\"
-.\" The above copyright notice and this permission notice (including the next
-.\" paragraph) shall be included in all copies or substantial portions of the
-.\" Software.
-.\"
-.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-.\" DEALINGS IN THE SOFTWARE.
-.\"
-.TH XkbSARedirectSetVModsMask __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
-.SH NAME
-XkbSARedirectSetVModsMask \- Sets the vmods_mask0 and vmods_mask1 fields of act
-from vm
-.SH SYNOPSIS
-.HP
-.B void XkbSARedirectSetVModsMask
-.BI "(\^XkbRedirectKeyAction " "act" "\^,"
-.BI "unsigned int " "vm" "\^);"
-.if n .ti +5n
-.if t .ti +.5i
-.SH ARGUMENTS
-.TP
-.I \- act
-action in which to set vmods
-.TP
-.I \- vm
-new value for virtual modifier mask
-.SH DESCRIPTION
-.LP
-Actions associated with the XkbRedirectKeyAction structure generate KeyPress and
-KeyRelease events
-containing a keycode different from the key that was pressed or released.
-
-The
-.I type
-field for the XkbRedirectKeyAction structure should always be XkbSA_RedirectKey.
-Key presses cause a KeyPress event for the key specified by the
-.I new_key
-field instead of the actual key. The state reported in this event reports the
-current effective
-modifiers changed as follows: any real modifiers selected by the
-.I mods_mask
-field are set to corresponding values from the
-.I mods
-field. Any real modifiers bound to the virtual modifiers specified by the
-.I vmods_mask0
-and
-.I vmods_mask1
-fields are either set or cleared, depending on the corresponding values in the
-.I vmods0
-and
-.I vmods1
-fields. If the real and virtual modifier definitions specify conflicting values
-for a single modifier,
-the real modifier definition has priority.
-
-Key releases cause a KeyRelease event for the key specified by the
-.I new_key
-field instead of the actual key. The state for this event consists of the
-effective keyboard modifiers
-at the time of the release, changed as described previously.
-
-The XkbSA_RedirectKey action normally redirects to another key on the same
-device as the key that
-caused the event, unless that device does not belong to the input extension
-KeyClass, in which case
-this action causes an event on the core keyboard device. (The input extension
-categorizes devices by
-breaking them into classes. Keyboards, and other input devices with keys, are
-classified as KeyClass
-devices by the input extension.)
-
-The
-.I vmods_mask0
-and
-.I vmods_mask1
-fields actually represent one
-.I vmods_mask
-value. Xkb provides macros to convert between the two formats.
-
-.I XkbSARedirectSetVModsMask
-sets the
-.I vmods_mask0
-and
-.I vmods_mask1
-fields of
-.I act
-from
-.I vm.
-.SH STRUCTURES
-.LP
-.nf
-
- typedef struct_XkbRedirectKeyAction {
- unsigned char type; /\(** XkbSA_RedirectKey */
- unsigned char new_key; /\(** keycode to be put in event */
- unsigned char mods_mask; /\(** mask of real mods to be reset */
- unsigned char mods; /\(** mask of real mods to take values from */
- unsigned char vmods_mask0; /\(** first half of mask of virtual mods to be
-reset */
- unsigned char vmods_mask1; /\(** other half of mask of virtual mods to be
-reset */
- unsigned char vmods0; /\(** first half of mask of virtual mods to
-take values from */
- unsigned char vmods1; /\(** other half of mask of virtual mods to
-take values from */
- } XkbRedirectKeyAction;
-
-.fi
+'\" t
+.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the "Software"),
+.\" to deal in the Software without restriction, including without limitation
+.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
+.\" and/or sell copies of the Software, and to permit persons to whom the
+.\" Software is furnished to do so, subject to the following conditions:
+.\"
+.\" The above copyright notice and this permission notice (including the next
+.\" paragraph) shall be included in all copies or substantial portions of the
+.\" Software.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+.\" DEALINGS IN THE SOFTWARE.
+.\"
+.TH XkbSARedirectSetVModsMask __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbSARedirectSetVModsMask \- Sets the vmods_mask0 and vmods_mask1 fields of act
+from vm
+.SH SYNOPSIS
+.HP
+.B void XkbSARedirectSetVModsMask
+.BI "(\^XkbRedirectKeyAction " "act" "\^,"
+.BI "unsigned int " "vm" "\^);"
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- act
+action in which to set vmods
+.TP
+.I \- vm
+new value for virtual modifier mask
+.SH DESCRIPTION
+.LP
+Actions associated with the XkbRedirectKeyAction structure generate KeyPress and
+KeyRelease events
+containing a keycode different from the key that was pressed or released.
+
+The
+.I type
+field for the XkbRedirectKeyAction structure should always be XkbSA_RedirectKey.
+Key presses cause a KeyPress event for the key specified by the
+.I new_key
+field instead of the actual key. The state reported in this event reports the
+current effective
+modifiers changed as follows: any real modifiers selected by the
+.I mods_mask
+field are set to corresponding values from the
+.I mods
+field. Any real modifiers bound to the virtual modifiers specified by the
+.I vmods_mask0
+and
+.I vmods_mask1
+fields are either set or cleared, depending on the corresponding values in the
+.I vmods0
+and
+.I vmods1
+fields. If the real and virtual modifier definitions specify conflicting values
+for a single modifier,
+the real modifier definition has priority.
+
+Key releases cause a KeyRelease event for the key specified by the
+.I new_key
+field instead of the actual key. The state for this event consists of the
+effective keyboard modifiers
+at the time of the release, changed as described previously.
+
+The XkbSA_RedirectKey action normally redirects to another key on the same
+device as the key that
+caused the event, unless that device does not belong to the input extension
+KeyClass, in which case
+this action causes an event on the core keyboard device. (The input extension
+categorizes devices by
+breaking them into classes. Keyboards, and other input devices with keys, are
+classified as KeyClass
+devices by the input extension.)
+
+The
+.I vmods_mask0
+and
+.I vmods_mask1
+fields actually represent one
+.I vmods_mask
+value. Xkb provides macros to convert between the two formats.
+
+.I XkbSARedirectSetVModsMask
+sets the
+.I vmods_mask0
+and
+.I vmods_mask1
+fields of
+.I act
+from
+.I vm.
+.SH STRUCTURES
+.LP
+.nf
+
+ typedef struct_XkbRedirectKeyAction {
+ unsigned char type; /\(** XkbSA_RedirectKey */
+ unsigned char new_key; /\(** keycode to be put in event */
+ unsigned char mods_mask; /\(** mask of real mods to be reset */
+ unsigned char mods; /\(** mask of real mods to take values from */
+ unsigned char vmods_mask0; /\(** first half of mask of virtual mods to be
+reset */
+ unsigned char vmods_mask1; /\(** other half of mask of virtual mods to be
+reset */
+ unsigned char vmods0; /\(** first half of mask of virtual mods to
+take values from */
+ unsigned char vmods1; /\(** other half of mask of virtual mods to
+take values from */
+ } XkbRedirectKeyAction;
+
+.fi
diff --git a/libX11/man/xkb/XkbSARedirectVMods.man b/libX11/man/xkb/XkbSARedirectVMods.man
index f02d10f63..cd6b3cb3a 100644
--- a/libX11/man/xkb/XkbSARedirectVMods.man
+++ b/libX11/man/xkb/XkbSARedirectVMods.man
@@ -1,116 +1,116 @@
-.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
-.\"
-.\" Permission is hereby granted, free of charge, to any person obtaining a
-.\" copy of this software and associated documentation files (the "Software"),
-.\" to deal in the Software without restriction, including without limitation
-.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
-.\" and/or sell copies of the Software, and to permit persons to whom the
-.\" Software is furnished to do so, subject to the following conditions:
-.\"
-.\" The above copyright notice and this permission notice (including the next
-.\" paragraph) shall be included in all copies or substantial portions of the
-.\" Software.
-.\"
-.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-.\" DEALINGS IN THE SOFTWARE.
-.\"
-.TH XkbSARedirectVMods __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
-.SH NAME
-XkbSARedirectVMods \- Returns the vmods0 and vmods1 fields of act converted to
-an unsigned int
-.SH SYNOPSIS
-.HP
-.B unsigned int XkbSARedirectVMods
-.BI "(\^XkbRedirectKeyAction " "act" "\^);"
-.if n .ti +5n
-.if t .ti +.5i
-.SH ARGUMENTS
-.TP
-.I \- act
-action from which to extract vmods
-.SH DESCRIPTION
-.LP
-Actions associated with the XkbRedirectKeyAction structure generate KeyPress and
-KeyRelease events
-containing a keycode different from the key that was pressed or released.
-
-The
-.I type
-field for the XkbRedirectKeyAction structure should always be XkbSA_RedirectKey.
-Key presses cause a KeyPress event for the key specified by the
-.I new_key
-field instead of the actual key. The state reported in this event reports the
-current effective
-modifiers changed as follows: any real modifiers selected by the
-.I mods_mask
-field are set to corresponding values from the
-.I mods
-field. Any real modifiers bound to the virtual modifiers specified by the
-.I vmods_mask0
-and
-.I vmods_mask1
-fields are either set or cleared, depending on the corresponding values in the
-.I vmods0
-and
-.I vmods1
-fields. If the real and virtual modifier definitions specify conflicting values
-for a single modifier,
-the real modifier definition has priority.
-
-Key releases cause a KeyRelease event for the key specified by the
-.I new_key
-field instead of the actual key. The state for this event consists of the
-effective keyboard modifiers
-at the time of the release, changed as described previously.
-
-The XkbSA_RedirectKey action normally redirects to another key on the same
-device as the key that
-caused the event, unless that device does not belong to the input extension
-KeyClass, in which case
-this action causes an event on the core keyboard device. (The input extension
-categorizes devices by
-breaking them into classes. Keyboards, and other input devices with keys, are
-classified as KeyClass
-devices by the input extension.)
-
-The
-.I vmods_mask0
-and
-.I vmods_mask1
-fields actually represent one
-.I vmods_mask
-value. Xkb provides macros to convert between the two formats.
-
-.I XkbSARedirectVModsMask
-returns the
-.I vmods0
-and
-.I vmods1
-fields of
-.I act
-converted to an unsigned int.
-.SH STRUCTURES
-.LP
-.nf
-
- typedef struct_XkbRedirectKeyAction {
- unsigned char type; /\(** XkbSA_RedirectKey */
- unsigned char new_key; /\(** keycode to be put in event */
- unsigned char mods_mask; /\(** mask of real mods to be reset */
- unsigned char mods; /\(** mask of real mods to take values from */
- unsigned char vmods_mask0; /\(** first half of mask of virtual mods to be
-reset */
- unsigned char vmods_mask1; /\(** other half of mask of virtual mods to be
-reset */
- unsigned char vmods0; /\(** first half of mask of virtual mods to
-take values from */
- unsigned char vmods1; /\(** other half of mask of virtual mods to
-take values from */
- } XkbRedirectKeyAction;
-
-.fi
+.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the "Software"),
+.\" to deal in the Software without restriction, including without limitation
+.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
+.\" and/or sell copies of the Software, and to permit persons to whom the
+.\" Software is furnished to do so, subject to the following conditions:
+.\"
+.\" The above copyright notice and this permission notice (including the next
+.\" paragraph) shall be included in all copies or substantial portions of the
+.\" Software.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+.\" DEALINGS IN THE SOFTWARE.
+.\"
+.TH XkbSARedirectVMods __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbSARedirectVMods \- Returns the vmods0 and vmods1 fields of act converted to
+an unsigned int
+.SH SYNOPSIS
+.HP
+.B unsigned int XkbSARedirectVMods
+.BI "(\^XkbRedirectKeyAction " "act" "\^);"
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- act
+action from which to extract vmods
+.SH DESCRIPTION
+.LP
+Actions associated with the XkbRedirectKeyAction structure generate KeyPress and
+KeyRelease events
+containing a keycode different from the key that was pressed or released.
+
+The
+.I type
+field for the XkbRedirectKeyAction structure should always be XkbSA_RedirectKey.
+Key presses cause a KeyPress event for the key specified by the
+.I new_key
+field instead of the actual key. The state reported in this event reports the
+current effective
+modifiers changed as follows: any real modifiers selected by the
+.I mods_mask
+field are set to corresponding values from the
+.I mods
+field. Any real modifiers bound to the virtual modifiers specified by the
+.I vmods_mask0
+and
+.I vmods_mask1
+fields are either set or cleared, depending on the corresponding values in the
+.I vmods0
+and
+.I vmods1
+fields. If the real and virtual modifier definitions specify conflicting values
+for a single modifier,
+the real modifier definition has priority.
+
+Key releases cause a KeyRelease event for the key specified by the
+.I new_key
+field instead of the actual key. The state for this event consists of the
+effective keyboard modifiers
+at the time of the release, changed as described previously.
+
+The XkbSA_RedirectKey action normally redirects to another key on the same
+device as the key that
+caused the event, unless that device does not belong to the input extension
+KeyClass, in which case
+this action causes an event on the core keyboard device. (The input extension
+categorizes devices by
+breaking them into classes. Keyboards, and other input devices with keys, are
+classified as KeyClass
+devices by the input extension.)
+
+The
+.I vmods_mask0
+and
+.I vmods_mask1
+fields actually represent one
+.I vmods_mask
+value. Xkb provides macros to convert between the two formats.
+
+.I XkbSARedirectVModsMask
+returns the
+.I vmods0
+and
+.I vmods1
+fields of
+.I act
+converted to an unsigned int.
+.SH STRUCTURES
+.LP
+.nf
+
+ typedef struct_XkbRedirectKeyAction {
+ unsigned char type; /\(** XkbSA_RedirectKey */
+ unsigned char new_key; /\(** keycode to be put in event */
+ unsigned char mods_mask; /\(** mask of real mods to be reset */
+ unsigned char mods; /\(** mask of real mods to take values from */
+ unsigned char vmods_mask0; /\(** first half of mask of virtual mods to be
+reset */
+ unsigned char vmods_mask1; /\(** other half of mask of virtual mods to be
+reset */
+ unsigned char vmods0; /\(** first half of mask of virtual mods to
+take values from */
+ unsigned char vmods1; /\(** other half of mask of virtual mods to
+take values from */
+ } XkbRedirectKeyAction;
+
+.fi
diff --git a/libX11/man/xkb/XkbSARedirectVModsMask.man b/libX11/man/xkb/XkbSARedirectVModsMask.man
index c3840bb30..b87efc2d4 100644
--- a/libX11/man/xkb/XkbSARedirectVModsMask.man
+++ b/libX11/man/xkb/XkbSARedirectVModsMask.man
@@ -1,117 +1,117 @@
-.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
-.\"
-.\" Permission is hereby granted, free of charge, to any person obtaining a
-.\" copy of this software and associated documentation files (the "Software"),
-.\" to deal in the Software without restriction, including without limitation
-.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
-.\" and/or sell copies of the Software, and to permit persons to whom the
-.\" Software is furnished to do so, subject to the following conditions:
-.\"
-.\" The above copyright notice and this permission notice (including the next
-.\" paragraph) shall be included in all copies or substantial portions of the
-.\" Software.
-.\"
-.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-.\" DEALINGS IN THE SOFTWARE.
-.\"
-.TH XkbSARedirectVModsMask __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
-.SH NAME
-XkbSARedirectVModsMask \- Returns the vmods_mask0 and vmods_mask1 fields of act
-converted to an unsigned int
-.SH SYNOPSIS
-.HP
-.B unsigned int XkbSARedirectVModsMask
-.BI "(\^XkbRedirectKeyAction " "act" "\^);"
-.if n .ti +5n
-.if t .ti +.5i
-.SH ARGUMENTS
-.TP
-.I \- act
-action from which to extract vmods
-.SH DESCRIPTION
-.LP
-Actions associated with the XkbRedirectKeyAction structure generate KeyPress and
-KeyRelease events
-containing a keycode different from the key that was pressed or released.
-
-The
-.I type
-field for the XkbRedirectKeyAction structure should always be XkbSA_RedirectKey.
-Key presses cause a KeyPress event for the key specified by the
-.I new_key
-field instead of the actual key. The state reported in this event reports the
-current effective
-modifiers changed as follows: any real modifiers selected by the
-.I mods_mask
-field are set to corresponding values from the
-.I mods
-field. Any real modifiers bound to the virtual modifiers specified by the
-.I vmods_mask0
-and
-.I vmods_mask1
-fields are either set or cleared, depending on the corresponding values in the
-.I vmods0
-and
-.I vmods1
-fields. If the real and virtual modifier definitions specify conflicting values
-for a single modifier,
-the real modifier definition has priority.
-
-Key releases cause a KeyRelease event for the key specified by the
-.I new_key
-field instead of the actual key. The state for this event consists of the
-effective keyboard modifiers
-at the time of the release, changed as described previously.
-
-The XkbSA_RedirectKey action normally redirects to another key on the same
-device as the key that
-caused the event, unless that device does not belong to the input extension
-KeyClass, in which case
-this action causes an event on the core keyboard device. (The input extension
-categorizes devices by
-breaking them into classes. Keyboards, and other input devices with keys, are
-classified as KeyClass
-devices by the input extension.)
-
-The
-.I vmods_mask0
-and
-.I vmods_mask1
-fields actually represent one
-.I vmods_mask
-value. Xkb provides macros to convert between the two formats.
-
-.I XkbSARedirectVModsMask
-returns the
-.I vmods_mask0
-and
-.I vmods_mask1
-fields of
-.I act
-converted to an unsigned int.
-.bp
-.SH STRUCTURES
-.LP
-.nf
-
- typedef struct_XkbRedirectKeyAction {
- unsigned char type; /\(** XkbSA_RedirectKey */
- unsigned char new_key; /\(** keycode to be put in event */
- unsigned char mods_mask; /\(** mask of real mods to be reset */
- unsigned char mods; /\(** mask of real mods to take values from */
- unsigned char vmods_mask0; /\(** first half of mask of virtual mods to be
-reset */
- unsigned char vmods_mask1; /\(** other half of mask of virtual mods to be
-reset */
- unsigned char vmods0; /\(** first half of mask of virtual mods to
-take values from */
- unsigned char vmods1; /\(** other half of mask of virtual mods to
-take values from */
- } XkbRedirectKeyAction;
-
-.fi
+.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the "Software"),
+.\" to deal in the Software without restriction, including without limitation
+.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
+.\" and/or sell copies of the Software, and to permit persons to whom the
+.\" Software is furnished to do so, subject to the following conditions:
+.\"
+.\" The above copyright notice and this permission notice (including the next
+.\" paragraph) shall be included in all copies or substantial portions of the
+.\" Software.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+.\" DEALINGS IN THE SOFTWARE.
+.\"
+.TH XkbSARedirectVModsMask __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbSARedirectVModsMask \- Returns the vmods_mask0 and vmods_mask1 fields of act
+converted to an unsigned int
+.SH SYNOPSIS
+.HP
+.B unsigned int XkbSARedirectVModsMask
+.BI "(\^XkbRedirectKeyAction " "act" "\^);"
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- act
+action from which to extract vmods
+.SH DESCRIPTION
+.LP
+Actions associated with the XkbRedirectKeyAction structure generate KeyPress and
+KeyRelease events
+containing a keycode different from the key that was pressed or released.
+
+The
+.I type
+field for the XkbRedirectKeyAction structure should always be XkbSA_RedirectKey.
+Key presses cause a KeyPress event for the key specified by the
+.I new_key
+field instead of the actual key. The state reported in this event reports the
+current effective
+modifiers changed as follows: any real modifiers selected by the
+.I mods_mask
+field are set to corresponding values from the
+.I mods
+field. Any real modifiers bound to the virtual modifiers specified by the
+.I vmods_mask0
+and
+.I vmods_mask1
+fields are either set or cleared, depending on the corresponding values in the
+.I vmods0
+and
+.I vmods1
+fields. If the real and virtual modifier definitions specify conflicting values
+for a single modifier,
+the real modifier definition has priority.
+
+Key releases cause a KeyRelease event for the key specified by the
+.I new_key
+field instead of the actual key. The state for this event consists of the
+effective keyboard modifiers
+at the time of the release, changed as described previously.
+
+The XkbSA_RedirectKey action normally redirects to another key on the same
+device as the key that
+caused the event, unless that device does not belong to the input extension
+KeyClass, in which case
+this action causes an event on the core keyboard device. (The input extension
+categorizes devices by
+breaking them into classes. Keyboards, and other input devices with keys, are
+classified as KeyClass
+devices by the input extension.)
+
+The
+.I vmods_mask0
+and
+.I vmods_mask1
+fields actually represent one
+.I vmods_mask
+value. Xkb provides macros to convert between the two formats.
+
+.I XkbSARedirectVModsMask
+returns the
+.I vmods_mask0
+and
+.I vmods_mask1
+fields of
+.I act
+converted to an unsigned int.
+.bp
+.SH STRUCTURES
+.LP
+.nf
+
+ typedef struct_XkbRedirectKeyAction {
+ unsigned char type; /\(** XkbSA_RedirectKey */
+ unsigned char new_key; /\(** keycode to be put in event */
+ unsigned char mods_mask; /\(** mask of real mods to be reset */
+ unsigned char mods; /\(** mask of real mods to take values from */
+ unsigned char vmods_mask0; /\(** first half of mask of virtual mods to be
+reset */
+ unsigned char vmods_mask1; /\(** other half of mask of virtual mods to be
+reset */
+ unsigned char vmods0; /\(** first half of mask of virtual mods to
+take values from */
+ unsigned char vmods1; /\(** other half of mask of virtual mods to
+take values from */
+ } XkbRedirectKeyAction;
+
+.fi
diff --git a/libX11/man/xkb/XkbSAScreen.man b/libX11/man/xkb/XkbSAScreen.man
index 7f800aac6..8ffb33aed 100644
--- a/libX11/man/xkb/XkbSAScreen.man
+++ b/libX11/man/xkb/XkbSAScreen.man
@@ -1,102 +1,102 @@
-'\" t
-.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
-.\"
-.\" Permission is hereby granted, free of charge, to any person obtaining a
-.\" copy of this software and associated documentation files (the "Software"),
-.\" to deal in the Software without restriction, including without limitation
-.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
-.\" and/or sell copies of the Software, and to permit persons to whom the
-.\" Software is furnished to do so, subject to the following conditions:
-.\"
-.\" The above copyright notice and this permission notice (including the next
-.\" paragraph) shall be included in all copies or substantial portions of the
-.\" Software.
-.\"
-.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-.\" DEALINGS IN THE SOFTWARE.
-.\"
-.TH XkbSAScreen __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
-.SH NAME
-XkbSAScreen \- Returns the screenXXX field of act converted to a signed int
-.SH SYNOPSIS
-.HP
-.B int XkbSAScreen
-.BI "(\^XkbSwitchScreenAction " "act" "\^);"
-.if n .ti +5n
-.if t .ti +.5i
-.SH ARGUMENTS
-.TP
-.I \- act
-action from which to extract screen
-.SH DESCRIPTION
-.LP
-Actions associated with the XkbSwitchScreen action structure change the active
-screen on a multiscreen display.
-
-The
-.I type
-field of the XkbSwitchScreenAction structure should always be
-XkbSA_SwitchScreen.
-
-The
-.I flags
-field is composed of the bitwise inclusive OR of the masks shown in Table 1.
-
-.TS
-c s
-l l
-l lw(4i).
-Table 1 Switch Screen Action Flags
-_
-Flag Meaning
-_
-XkbSA_SwitchAbsolute T{
-If set, the screenXXX field represents the index of the new screen. Otherwise,
-it represents an offset from the current screen to the new screen.
-T}
-XkbSA_SwitchApplication T{
-If not set, the action should switch to another screen on the same server.
-Otherwise, it should switch to another X server or application that shares the
-same physical display.
-T}
-.TE
-
-The
-.I screenXXX
-field is a signed character value that represents either the relative or
-absolute screen index, depending on the state of the XkbSA_SwitchAbsolute bit in
-the
-.I flags
-field. Xkb provides the following macros to convert between the integer and
-signed character value for screen numbers in XkbSwitchScreenAction structures.
-
-.I XkbSAScreen
-macro returns the
-.I screenXXX
-field of
-.I act
-converted to a signed int.
-.SH STRUCTURES
-.LP
-.nf
-
- typedef struct _XkbSwitchScreenAction {
- unsigned char type; /\(** XkbSA_SwitchScreen */
- unsigned char flags; /\(** controls screen switching */
- char screenXXX; /\(** screen number or delta */
- } XkbSwitchScreenAction;
-
-.fi
-
-.SH NOTES
-.LP
-The XkbSwitchScreen action is optional. Servers are free to ignore the action or
-any of its
-flags if they do not support the requested behavior. If the action is ignored,
-it behaves like XkbSA_NoAction. Otherwise, key press and key release events do
-not generate an event.
+'\" t
+.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the "Software"),
+.\" to deal in the Software without restriction, including without limitation
+.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
+.\" and/or sell copies of the Software, and to permit persons to whom the
+.\" Software is furnished to do so, subject to the following conditions:
+.\"
+.\" The above copyright notice and this permission notice (including the next
+.\" paragraph) shall be included in all copies or substantial portions of the
+.\" Software.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+.\" DEALINGS IN THE SOFTWARE.
+.\"
+.TH XkbSAScreen __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbSAScreen \- Returns the screenXXX field of act converted to a signed int
+.SH SYNOPSIS
+.HP
+.B int XkbSAScreen
+.BI "(\^XkbSwitchScreenAction " "act" "\^);"
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- act
+action from which to extract screen
+.SH DESCRIPTION
+.LP
+Actions associated with the XkbSwitchScreen action structure change the active
+screen on a multiscreen display.
+
+The
+.I type
+field of the XkbSwitchScreenAction structure should always be
+XkbSA_SwitchScreen.
+
+The
+.I flags
+field is composed of the bitwise inclusive OR of the masks shown in Table 1.
+
+.TS
+c s
+l l
+l lw(4i).
+Table 1 Switch Screen Action Flags
+_
+Flag Meaning
+_
+XkbSA_SwitchAbsolute T{
+If set, the screenXXX field represents the index of the new screen. Otherwise,
+it represents an offset from the current screen to the new screen.
+T}
+XkbSA_SwitchApplication T{
+If not set, the action should switch to another screen on the same server.
+Otherwise, it should switch to another X server or application that shares the
+same physical display.
+T}
+.TE
+
+The
+.I screenXXX
+field is a signed character value that represents either the relative or
+absolute screen index, depending on the state of the XkbSA_SwitchAbsolute bit in
+the
+.I flags
+field. Xkb provides the following macros to convert between the integer and
+signed character value for screen numbers in XkbSwitchScreenAction structures.
+
+.I XkbSAScreen
+macro returns the
+.I screenXXX
+field of
+.I act
+converted to a signed int.
+.SH STRUCTURES
+.LP
+.nf
+
+ typedef struct _XkbSwitchScreenAction {
+ unsigned char type; /\(** XkbSA_SwitchScreen */
+ unsigned char flags; /\(** controls screen switching */
+ char screenXXX; /\(** screen number or delta */
+ } XkbSwitchScreenAction;
+
+.fi
+
+.SH NOTES
+.LP
+The XkbSwitchScreen action is optional. Servers are free to ignore the action or
+any of its
+flags if they do not support the requested behavior. If the action is ignored,
+it behaves like XkbSA_NoAction. Otherwise, key press and key release events do
+not generate an event.
diff --git a/libX11/man/xkb/XkbSASetPtrDfltValue.man b/libX11/man/xkb/XkbSASetPtrDfltValue.man
index bf5bd717b..595cbb5d2 100644
--- a/libX11/man/xkb/XkbSASetPtrDfltValue.man
+++ b/libX11/man/xkb/XkbSASetPtrDfltValue.man
@@ -1,104 +1,104 @@
-'\" t
-.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
-.\"
-.\" Permission is hereby granted, free of charge, to any person obtaining a
-.\" copy of this software and associated documentation files (the "Software"),
-.\" to deal in the Software without restriction, including without limitation
-.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
-.\" and/or sell copies of the Software, and to permit persons to whom the
-.\" Software is furnished to do so, subject to the following conditions:
-.\"
-.\" The above copyright notice and this permission notice (including the next
-.\" paragraph) shall be included in all copies or substantial portions of the
-.\" Software.
-.\"
-.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-.\" DEALINGS IN THE SOFTWARE.
-.\"
-.TH XkbSASetPtrDfltValue __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
-.SH NAME
-XkbSASetPtrDfltValue \- Sets the valueXXX field of act from val
-.SH SYNOPSIS
-.HP
-.B void XkbSASetPtrDfltValue
-.BI "(\^XkbAction " "act" "\^,"
-.BI "int " "val" "\^);"
-.if n .ti +5n
-.if t .ti +.5i
-.SH ARGUMENTS
-.TP
-.I \- act
-action in which to set valueXXX
-.TP
-.I \- val
-value to set in valueXXX
-.SH DESCRIPTION
-.LP
-Actions associated with the XkbPtrDfltAction structure change the mk_dflt_btn
-attribute of the MouseKeys control.
-
-If the MouseKeys control is not enabled, KeyPress and KeyRelease events are
-treated as though the action is XkbSA_NoAction. Otherwise, this action changes
-the
-.I mk_dflt_btn
-attribute of the MouseKeys control.
-
-The
-.I type
-field of the XkbPtrDfltAction structure should always be XkbSA_SetPtrDflt.
-
-The
-.I flags
-field is composed of the bitwise inclusive OR of the values shown in Table 1
-(currently there is only one value defined).
-
-.TS
-c s
-l l
-l lw(4i).
-Table 1 Pointer Default Flags
-_
-Flag Meaning
-_
-XkbSA_DfltBtnAbsolute T{
-If set, the value field represents an absolute pointer button. Otherwise, the
-value field represents the amount to be added to the current default button.
-T}
-.TE
-
-The
-.I affect
-field specifies what changes as a result of this action. The only valid value
-for the
-.I affect
-field is XkbSA_AffectDfltBtn.
-
-The
-.I valueXXX
-field is a signed character that represents the new button value for the
-.I mk_dflt_btn
-attribute of the MouseKeys control. If XkbSA_DfltBtnAbsolute is set in
-.I flags, valueXXX
-specifies the button to be used; otherwise,
-.I valueXXX
-specifies the amount to be added to the current default button. In either case,
-illegal button choices are wrapped back around into range. Xkb provides macros,
-to convert between the integer and signed character values in XkbPtrDfltAction
-structures.
-.SH STRUCTURES
-.LP
-.nf
-
- typedef struct _XkbPtrDfltAction {
- unsigned char type; /\(** XkbSA_SetPtrDflt */
- unsigned char flags; /\(** controls the pointer button number */
- unsigned char affect; /\(** XkbSA_AffectDfltBtn */
- char valueXXX; /\(** new default button member */
- } XkbPtrDfltAction;
-
-.fi
+'\" t
+.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the "Software"),
+.\" to deal in the Software without restriction, including without limitation
+.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
+.\" and/or sell copies of the Software, and to permit persons to whom the
+.\" Software is furnished to do so, subject to the following conditions:
+.\"
+.\" The above copyright notice and this permission notice (including the next
+.\" paragraph) shall be included in all copies or substantial portions of the
+.\" Software.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+.\" DEALINGS IN THE SOFTWARE.
+.\"
+.TH XkbSASetPtrDfltValue __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbSASetPtrDfltValue \- Sets the valueXXX field of act from val
+.SH SYNOPSIS
+.HP
+.B void XkbSASetPtrDfltValue
+.BI "(\^XkbAction " "act" "\^,"
+.BI "int " "val" "\^);"
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- act
+action in which to set valueXXX
+.TP
+.I \- val
+value to set in valueXXX
+.SH DESCRIPTION
+.LP
+Actions associated with the XkbPtrDfltAction structure change the mk_dflt_btn
+attribute of the MouseKeys control.
+
+If the MouseKeys control is not enabled, KeyPress and KeyRelease events are
+treated as though the action is XkbSA_NoAction. Otherwise, this action changes
+the
+.I mk_dflt_btn
+attribute of the MouseKeys control.
+
+The
+.I type
+field of the XkbPtrDfltAction structure should always be XkbSA_SetPtrDflt.
+
+The
+.I flags
+field is composed of the bitwise inclusive OR of the values shown in Table 1
+(currently there is only one value defined).
+
+.TS
+c s
+l l
+l lw(4i).
+Table 1 Pointer Default Flags
+_
+Flag Meaning
+_
+XkbSA_DfltBtnAbsolute T{
+If set, the value field represents an absolute pointer button. Otherwise, the
+value field represents the amount to be added to the current default button.
+T}
+.TE
+
+The
+.I affect
+field specifies what changes as a result of this action. The only valid value
+for the
+.I affect
+field is XkbSA_AffectDfltBtn.
+
+The
+.I valueXXX
+field is a signed character that represents the new button value for the
+.I mk_dflt_btn
+attribute of the MouseKeys control. If XkbSA_DfltBtnAbsolute is set in
+.I flags, valueXXX
+specifies the button to be used; otherwise,
+.I valueXXX
+specifies the amount to be added to the current default button. In either case,
+illegal button choices are wrapped back around into range. Xkb provides macros,
+to convert between the integer and signed character values in XkbPtrDfltAction
+structures.
+.SH STRUCTURES
+.LP
+.nf
+
+ typedef struct _XkbPtrDfltAction {
+ unsigned char type; /\(** XkbSA_SetPtrDflt */
+ unsigned char flags; /\(** controls the pointer button number */
+ unsigned char affect; /\(** XkbSA_AffectDfltBtn */
+ char valueXXX; /\(** new default button member */
+ } XkbPtrDfltAction;
+
+.fi
diff --git a/libX11/man/xkb/XkbSASetScreen.man b/libX11/man/xkb/XkbSASetScreen.man
index b3bebb165..601246dd3 100644
--- a/libX11/man/xkb/XkbSASetScreen.man
+++ b/libX11/man/xkb/XkbSASetScreen.man
@@ -1,97 +1,97 @@
-'\" t
-.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
-.\"
-.\" Permission is hereby granted, free of charge, to any person obtaining a
-.\" copy of this software and associated documentation files (the "Software"),
-.\" to deal in the Software without restriction, including without limitation
-.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
-.\" and/or sell copies of the Software, and to permit persons to whom the
-.\" Software is furnished to do so, subject to the following conditions:
-.\"
-.\" The above copyright notice and this permission notice (including the next
-.\" paragraph) shall be included in all copies or substantial portions of the
-.\" Software.
-.\"
-.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-.\" DEALINGS IN THE SOFTWARE.
-.\"
-.TH XkbSASetScreen __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
-.SH NAME
-XkbSASetScreen \- Sets the screenXXX field of act from s
-.SH SYNOPSIS
-.HP
-.B void XkbSASetScreen
-.BI "(\^XkbSwitchScreenAction " "act" "\^,"
-.BI "int " "s" "\^);"
-.if n .ti +5n
-.if t .ti +.5i
-.SH ARGUMENTS
-.TP
-.I \- act
-action in which to set screenXXX
-.TP
-.I \- s
-value to set in screenXXX
-.SH DESCRIPTION
-.LP
-Actions associated with the XkbSwitchScreen action structure change the active
-screen on a multiscreen display.
-
-The
-.I type
-field of the XkbSwitchScreenAction structure should always be
-XkbSA_SwitchScreen.
-
-The
-.I flags
-field is composed of the bitwise inclusive OR of the masks shown in Table 1.
-
-.TS
-c s
-l l
-l lw(4i).
-Table 1 Switch Screen Action Flags
-_
-Flag Meaning
-_
-XkbSA_SwitchAbsolute T{
-If set, the screenXXX field represents the index of the new screen. Otherwise,
-it represents an offset from the current screen to the new screen.
-T}
-XkbSA_SwitchApplication T{
-If not set, the action should switch to another screen on the same server.
-Otherwise, it should switch to another X server or application that shares the
-same physical display.
-T}
-.TE
-
-The
-.I screenXXX
-field is a signed character value that represents either the relative or
-absolute screen index, depending on the state of the XkbSA_SwitchAbsolute bit in
-the
-.I flags
-field. Xkb provides the following macros to convert between the integer and
-signed character value for screen numbers in XkbSwitchScreenAction structures.
-.SH STRUCTURES
-.LP
-.nf
-
- typedef struct _XkbSwitchScreenAction {
- unsigned char type; /\(** XkbSA_SwitchScreen */
- unsigned char flags; /\(** controls screen switching */
- char screenXXX; /\(** screen number or delta */
- } XkbSwitchScreenAction;
-
-.fi
-.SH NOTES
-.LP
-This action is optional. Servers are free to ignore the action or any of its
-flags if they do not support the requested behavior. If the action is ignored,
-it behaves like XkbSA_NoAction. Otherwise, key press and key release events do
-not generate an event.
+'\" t
+.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the "Software"),
+.\" to deal in the Software without restriction, including without limitation
+.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
+.\" and/or sell copies of the Software, and to permit persons to whom the
+.\" Software is furnished to do so, subject to the following conditions:
+.\"
+.\" The above copyright notice and this permission notice (including the next
+.\" paragraph) shall be included in all copies or substantial portions of the
+.\" Software.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+.\" DEALINGS IN THE SOFTWARE.
+.\"
+.TH XkbSASetScreen __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbSASetScreen \- Sets the screenXXX field of act from s
+.SH SYNOPSIS
+.HP
+.B void XkbSASetScreen
+.BI "(\^XkbSwitchScreenAction " "act" "\^,"
+.BI "int " "s" "\^);"
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- act
+action in which to set screenXXX
+.TP
+.I \- s
+value to set in screenXXX
+.SH DESCRIPTION
+.LP
+Actions associated with the XkbSwitchScreen action structure change the active
+screen on a multiscreen display.
+
+The
+.I type
+field of the XkbSwitchScreenAction structure should always be
+XkbSA_SwitchScreen.
+
+The
+.I flags
+field is composed of the bitwise inclusive OR of the masks shown in Table 1.
+
+.TS
+c s
+l l
+l lw(4i).
+Table 1 Switch Screen Action Flags
+_
+Flag Meaning
+_
+XkbSA_SwitchAbsolute T{
+If set, the screenXXX field represents the index of the new screen. Otherwise,
+it represents an offset from the current screen to the new screen.
+T}
+XkbSA_SwitchApplication T{
+If not set, the action should switch to another screen on the same server.
+Otherwise, it should switch to another X server or application that shares the
+same physical display.
+T}
+.TE
+
+The
+.I screenXXX
+field is a signed character value that represents either the relative or
+absolute screen index, depending on the state of the XkbSA_SwitchAbsolute bit in
+the
+.I flags
+field. Xkb provides the following macros to convert between the integer and
+signed character value for screen numbers in XkbSwitchScreenAction structures.
+.SH STRUCTURES
+.LP
+.nf
+
+ typedef struct _XkbSwitchScreenAction {
+ unsigned char type; /\(** XkbSA_SwitchScreen */
+ unsigned char flags; /\(** controls screen switching */
+ char screenXXX; /\(** screen number or delta */
+ } XkbSwitchScreenAction;
+
+.fi
+.SH NOTES
+.LP
+This action is optional. Servers are free to ignore the action or any of its
+flags if they do not support the requested behavior. If the action is ignored,
+it behaves like XkbSA_NoAction. Otherwise, key press and key release events do
+not generate an event.
diff --git a/libX11/man/xkb/XkbSelectEventDetails.man b/libX11/man/xkb/XkbSelectEventDetails.man
index 41ae1aad8..cd341f96e 100644
--- a/libX11/man/xkb/XkbSelectEventDetails.man
+++ b/libX11/man/xkb/XkbSelectEventDetails.man
@@ -1,145 +1,145 @@
-.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
-.\"
-.\" Permission is hereby granted, free of charge, to any person obtaining a
-.\" copy of this software and associated documentation files (the "Software"),
-.\" to deal in the Software without restriction, including without limitation
-.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
-.\" and/or sell copies of the Software, and to permit persons to whom the
-.\" Software is furnished to do so, subject to the following conditions:
-.\"
-.\" The above copyright notice and this permission notice (including the next
-.\" paragraph) shall be included in all copies or substantial portions of the
-.\" Software.
-.\"
-.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-.\" DEALINGS IN THE SOFTWARE.
-.\"
-.TH XkbSelectEventDetails __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
-.SH NAME
-XkbSelectEventDetails \- Selects or deselects for a specific Xkb event and
-optionally places conditions on when events of that type are reported to your
-client
-.SH SYNOPSIS
-.HP
-.B Bool XkbSelectEventDetails
-.BI "(\^Display *" "display" "\^,"
-.BI "unsigned int " "device_spec" "\^,"
-.BI "unsigned int " "event_type" "\^,"
-.BI "unsigned long int " "bits_to_change" "\^,"
-.BI "unsigned long int " "values_for_bits" "\^);"
-.if n .ti +5n
-.if t .ti +.5i
-.SH ARGUMENTS
-.TP
-.I display
-connection to the X server
-.TP
-.I device_spec
-device ID, or XkbUseCoreKbd
-.TP
-.I event_type
-Xkb event type of interest
-.TP
-.I bits_to_change
-determines events to be selected / deselected
-.TP
-.I values_for_bits
-1=>select, 0->deselect; for events in bits_to_change
-.SH DESCRIPTION
-.LP
-Xkb events are selected using an event mask, much the same as normal core X
-events are selected. However, unlike selecting core X events, where you must
-specify the selection status (on or off) for all possible event types whenever
-you wish to change the selection criteria for any one event, Xkb allows you to
-restrict the specification to only the event types you wish to change. This
-means that you do not need to remember the event selection values for all
-possible types each time you want to change one of them.
-
-Many Xkb event types are generated under several different circumstances. When
-selecting to receive an Xkb event, you may specify either that you want it
-delivered under all circumstances, or that you want it delivered only for a
-subset of the possible circumstances.
-
-You can also deselect an event type that was previously selected for, using the
-same granularity.
-
-Xkb provides two functions to select and deselect delivery of Xkb events.
-.I XkbSelectEvents
-allows you to select or deselect delivery of more than one Xkb event type at
-once. Events selected using
-.I XkbSelectEvents
-are delivered to your program under all circumstances that generate the events.
-To restrict delivery of an event to a subset of the conditions under which it
-occurs, use
-.I XkbSelectEventDetails. XkbSelectEventDetails
-only allows you to change the selection conditions for a single event at a time,
-but it provides a means of fine-tuning the conditions under which the event is
-delivered.
-
-To select or deselect for a specific Xkb event and optionally place conditions
-on when events of that type are reported to your client, use
-.I XkbSelectEventDetails.
-This allows you to exercise a finer granularity of
-control over delivery of Xkb events with
-.I XkbSelectEvents.
-
-While
-.I XkbSelectEvents
-allows multiple events to be selected,
-.I XkbSelectEventDetails
-changes the selection criteria for a single type of Xkb
-event. The interpretation of the
-.I bits_to_change
-and
-.I values_for_bits
-masks depends on the event type in question.
-
-.I XkbSelectEventDetails
-changes the Xkb event selection mask for the keyboard
-specified by
-.I device_spec
-and the Xkb event specified by
-.I event_type.
-To turn on event selection for an event detail, set the bit for the
-detail in the
-.I bits_to_change
-parameter and set the corresponding bit in the
-.I values_for_bits
-parameter. To turn off event detail selection for a detail, set
-the bit for the detail in the
-.I bits_to_change
-parameter and do not set the corresponding bit in the
-.I values_for_bits
-parameter.
-
-If an invalid event type is specified, a BadValue protocol error results. If a
-bit is not set in the
-.I bits_to_change
-parameter, but the corresponding bit is set in the
-.I values_for_bits
-parameter, a BadMatch protocol error results. If an undefined
-bit is set in either the
-.I bits_to_change
-or the
-.I values_for_bits
-parameter, a BadValue protocol error results.
-
-For each type of Xkb event, the legal event details that you can specify in the
-.I XkbSelectEventDetails
-request are listed in the chapters that describe each event in detail.
-.SH DIAGNOSTICS
-.TP 15
-.SM BadMatch
-A compatible version of Xkb was not available in the server or an argument has
-correct type and range, but is otherwise invalid
-.TP 15
-.SM BadValue
-An argument is out of range
-.SH "SEE ALSO"
-.BR XkbSelectEvents (__libmansuffix__),
-.BR XkbUseCoreKbd (__libmansuffix__)
+.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the "Software"),
+.\" to deal in the Software without restriction, including without limitation
+.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
+.\" and/or sell copies of the Software, and to permit persons to whom the
+.\" Software is furnished to do so, subject to the following conditions:
+.\"
+.\" The above copyright notice and this permission notice (including the next
+.\" paragraph) shall be included in all copies or substantial portions of the
+.\" Software.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+.\" DEALINGS IN THE SOFTWARE.
+.\"
+.TH XkbSelectEventDetails __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbSelectEventDetails \- Selects or deselects for a specific Xkb event and
+optionally places conditions on when events of that type are reported to your
+client
+.SH SYNOPSIS
+.HP
+.B Bool XkbSelectEventDetails
+.BI "(\^Display *" "display" "\^,"
+.BI "unsigned int " "device_spec" "\^,"
+.BI "unsigned int " "event_type" "\^,"
+.BI "unsigned long int " "bits_to_change" "\^,"
+.BI "unsigned long int " "values_for_bits" "\^);"
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I display
+connection to the X server
+.TP
+.I device_spec
+device ID, or XkbUseCoreKbd
+.TP
+.I event_type
+Xkb event type of interest
+.TP
+.I bits_to_change
+determines events to be selected / deselected
+.TP
+.I values_for_bits
+1=>select, 0->deselect; for events in bits_to_change
+.SH DESCRIPTION
+.LP
+Xkb events are selected using an event mask, much the same as normal core X
+events are selected. However, unlike selecting core X events, where you must
+specify the selection status (on or off) for all possible event types whenever
+you wish to change the selection criteria for any one event, Xkb allows you to
+restrict the specification to only the event types you wish to change. This
+means that you do not need to remember the event selection values for all
+possible types each time you want to change one of them.
+
+Many Xkb event types are generated under several different circumstances. When
+selecting to receive an Xkb event, you may specify either that you want it
+delivered under all circumstances, or that you want it delivered only for a
+subset of the possible circumstances.
+
+You can also deselect an event type that was previously selected for, using the
+same granularity.
+
+Xkb provides two functions to select and deselect delivery of Xkb events.
+.I XkbSelectEvents
+allows you to select or deselect delivery of more than one Xkb event type at
+once. Events selected using
+.I XkbSelectEvents
+are delivered to your program under all circumstances that generate the events.
+To restrict delivery of an event to a subset of the conditions under which it
+occurs, use
+.I XkbSelectEventDetails. XkbSelectEventDetails
+only allows you to change the selection conditions for a single event at a time,
+but it provides a means of fine-tuning the conditions under which the event is
+delivered.
+
+To select or deselect for a specific Xkb event and optionally place conditions
+on when events of that type are reported to your client, use
+.I XkbSelectEventDetails.
+This allows you to exercise a finer granularity of
+control over delivery of Xkb events with
+.I XkbSelectEvents.
+
+While
+.I XkbSelectEvents
+allows multiple events to be selected,
+.I XkbSelectEventDetails
+changes the selection criteria for a single type of Xkb
+event. The interpretation of the
+.I bits_to_change
+and
+.I values_for_bits
+masks depends on the event type in question.
+
+.I XkbSelectEventDetails
+changes the Xkb event selection mask for the keyboard
+specified by
+.I device_spec
+and the Xkb event specified by
+.I event_type.
+To turn on event selection for an event detail, set the bit for the
+detail in the
+.I bits_to_change
+parameter and set the corresponding bit in the
+.I values_for_bits
+parameter. To turn off event detail selection for a detail, set
+the bit for the detail in the
+.I bits_to_change
+parameter and do not set the corresponding bit in the
+.I values_for_bits
+parameter.
+
+If an invalid event type is specified, a BadValue protocol error results. If a
+bit is not set in the
+.I bits_to_change
+parameter, but the corresponding bit is set in the
+.I values_for_bits
+parameter, a BadMatch protocol error results. If an undefined
+bit is set in either the
+.I bits_to_change
+or the
+.I values_for_bits
+parameter, a BadValue protocol error results.
+
+For each type of Xkb event, the legal event details that you can specify in the
+.I XkbSelectEventDetails
+request are listed in the chapters that describe each event in detail.
+.SH DIAGNOSTICS
+.TP 15
+.SM BadMatch
+A compatible version of Xkb was not available in the server or an argument has
+correct type and range, but is otherwise invalid
+.TP 15
+.SM BadValue
+An argument is out of range
+.SH "SEE ALSO"
+.BR XkbSelectEvents (__libmansuffix__),
+.BR XkbUseCoreKbd (__libmansuffix__)
diff --git a/libX11/man/xkb/XkbSelectEvents.man b/libX11/man/xkb/XkbSelectEvents.man
index 5d01177d3..27ff98b83 100644
--- a/libX11/man/xkb/XkbSelectEvents.man
+++ b/libX11/man/xkb/XkbSelectEvents.man
@@ -1,170 +1,170 @@
-'\" t
-.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
-.\"
-.\" Permission is hereby granted, free of charge, to any person obtaining a
-.\" copy of this software and associated documentation files (the "Software"),
-.\" to deal in the Software without restriction, including without limitation
-.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
-.\" and/or sell copies of the Software, and to permit persons to whom the
-.\" Software is furnished to do so, subject to the following conditions:
-.\"
-.\" The above copyright notice and this permission notice (including the next
-.\" paragraph) shall be included in all copies or substantial portions of the
-.\" Software.
-.\"
-.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-.\" DEALINGS IN THE SOFTWARE.
-.\"
-.TH XkbSelectEvents __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
-.SH NAME
-XkbSelectEvents \- Selects and / or deselects for delivery of one or more Xkb
-events and has them delivered under all conditions
-.SH SYNOPSIS
-.HP
-.B Bool XkbSelectEvents
-.BI "(\^Display *" "display" "\^,"
-.BI "unsigned int " "device_spec" "\^,"
-.BI "unsigned long int " "bits_to_change" "\^,"
-.BI "unsigned long int " "values_for_bits" "\^);"
-.if n .ti +5n
-.if t .ti +.5i
-.SH ARGUMENTS
-.TP
-.I display
-connection to the X server
-.TP
-.I device_spec
-device ID, or XkbUseCoreKbd
-.TP
-.I bits_to_change
-determines events to be selected / deselected
-.TP
-.I values_for_bits
-1=>select, 0->deselect; for events in bits_to_change
-.SH DESCRIPTION
-.LP
-Xkb events are selected using an event mask, much the same as normal core X
-events are selected. However, unlike selecting core X events, where you must
-specify the selection status (on or off) for all possible event types whenever
-you wish to change the selection criteria for any one event, Xkb allows you to
-restrict the specification to only the event types you wish to change. This
-means that you do not need to remember the event selection values for all
-possible types each time you want to change one of them.
-
-Many Xkb event types are generated under several different circumstances. When
-selecting to receive an Xkb event, you may specify either that you want it
-delivered under all circumstances, or that you want it delivered only for a
-subset of the possible circumstances.
-
-You can also deselect an event type that was previously selected for, using the
-same granularity.
-
-Xkb provides two functions to select and deselect delivery of Xkb events.
-.I XkbSelectEvents
-allows you to select or deselect delivery of more than one Xkb
-event type at once. Events selected using
-.I XkbSelectEvents
-are delivered to your program under all circumstances that generate the events.
-To restrict delivery of an event to a subset of the conditions under which it
-occurs, use
-.I XkbSelectEventDetails. XkbSelectEventDetails
-only allows you to change the selection conditions for a single event at a time,
-but it provides a means of fine-tuning the conditions under which the event is
-delivered.
-
-This request changes the Xkb event selection mask for the keyboard specified by
-.I device_spec.
-
-Each Xkb event that can be selected is represented by a bit in the
-.I bits_to_change
-and
-.I values_for_bits
-masks. Only the event selection bits specified by the
-.I bits_to_change
-parameter are affected; any unspecified bits are left unchanged. To turn on
-event selection for an event, set the bit for the event in the
-.I bits_to_change
-parameter and set the corresponding bit in the
-.I values_for_bits
-parameter. To turn off event selection for an event, set the bit for the event
-in the
-.I bits_to_change
-parameter and do not set the corresponding bit in the
-.I values_for_bits
-parameter. The valid values for both of these parameters are an inclusive
-bitwise OR of the masks shown in Table 1. There is no interface to return your
-client's current event selection mask. Clients cannot set other clients' event
-selection masks.
-
-The X server reports the events defined by Xkb to your client application only
-if you have requested them via a call to
-.I XkbSelectEvents
-or
-.I XkbSelectEventDetails.
-Specify the event types in which you are interested in a mask.
-
-Table 1 lists the event mask constants that can be specified with the
-.I XkbSelectEvents
-request and the circumstances in which the mask should be specified.
-
-.TS
-c s s
-l l l
-l l l.
-Table 1 XkbSelectEvents Mask Constants
-_
-Event Mask Value Notification Wanted
-_
-XkbNewKeyboardNotifyMask (1L<<0) Keyboard geometry change
-XkbMapNotifyMask (1L<<1) Keyboard mapping change
-XkbStateNotifyMask (1L<<2) Keyboard state change
-XkbControlsNotifyMask (1L<<3) Keyboard control change
-XkbIndicatorStateNotifyMask (1L<<4) Keyboard indicator state change
-XkbIndicatorMapNotifyMask (1L<<5) Keyboard indicator map change
-XkbNamesNotifyMask (1L<<6) Keyboard name change
-XkbCompatMapNotifyMask (1L<<7) Keyboard compat map change
-XkbBellNotifyMask (1L<<8) Bell
-XkbActionMessageMask (1L<<9) Action message
-XkbAccessXNotifyMask (1L<<10) AccessX features
-XkbExtensionDeviceNotifyMask (1L<<11) Extension device
-XkbAllEventsMask (0xFFF) All Xkb events
-.TE
-
-If a bit is not set in the
-.I bits_to_change
-parameter, but the corresponding bit is set in the
-.I values_for_bits
-parameter, a BadMatch protocol error results. If an undefined bit is set in
-either the
-.I bits_to_change
-or the
-.I values_for_bits
-parameter, a BadValue protocol error results.
-
-All event selection bits are initially zero for clients using the Xkb extension.
-Once you set some bits, they remain set for your client until you clear them via
-another call to
-.I XkbSelectEvents.
-
-.I XkbSelectEvents
-returns False if the Xkb extension has not been initilialized and True
-otherwise.
-.SH "RETURN VALUES"
-.TP 15
-True
-The
-.I XkbSelectEvents
-function returns True if the Xkb extension has been initilialized.
-.TP 15
-False
-The
-.I XkbSelectEvents
-function returns False if the Xkb extension has not been initilialized.
-.SH "SEE ALSO"
-.BR XkbSelectEventDetails (__libmansuffix__),
-.BR XkbUseCoreKbd (__libmansuffix__)
+'\" t
+.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the "Software"),
+.\" to deal in the Software without restriction, including without limitation
+.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
+.\" and/or sell copies of the Software, and to permit persons to whom the
+.\" Software is furnished to do so, subject to the following conditions:
+.\"
+.\" The above copyright notice and this permission notice (including the next
+.\" paragraph) shall be included in all copies or substantial portions of the
+.\" Software.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+.\" DEALINGS IN THE SOFTWARE.
+.\"
+.TH XkbSelectEvents __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbSelectEvents \- Selects and / or deselects for delivery of one or more Xkb
+events and has them delivered under all conditions
+.SH SYNOPSIS
+.HP
+.B Bool XkbSelectEvents
+.BI "(\^Display *" "display" "\^,"
+.BI "unsigned int " "device_spec" "\^,"
+.BI "unsigned long int " "bits_to_change" "\^,"
+.BI "unsigned long int " "values_for_bits" "\^);"
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I display
+connection to the X server
+.TP
+.I device_spec
+device ID, or XkbUseCoreKbd
+.TP
+.I bits_to_change
+determines events to be selected / deselected
+.TP
+.I values_for_bits
+1=>select, 0->deselect; for events in bits_to_change
+.SH DESCRIPTION
+.LP
+Xkb events are selected using an event mask, much the same as normal core X
+events are selected. However, unlike selecting core X events, where you must
+specify the selection status (on or off) for all possible event types whenever
+you wish to change the selection criteria for any one event, Xkb allows you to
+restrict the specification to only the event types you wish to change. This
+means that you do not need to remember the event selection values for all
+possible types each time you want to change one of them.
+
+Many Xkb event types are generated under several different circumstances. When
+selecting to receive an Xkb event, you may specify either that you want it
+delivered under all circumstances, or that you want it delivered only for a
+subset of the possible circumstances.
+
+You can also deselect an event type that was previously selected for, using the
+same granularity.
+
+Xkb provides two functions to select and deselect delivery of Xkb events.
+.I XkbSelectEvents
+allows you to select or deselect delivery of more than one Xkb
+event type at once. Events selected using
+.I XkbSelectEvents
+are delivered to your program under all circumstances that generate the events.
+To restrict delivery of an event to a subset of the conditions under which it
+occurs, use
+.I XkbSelectEventDetails. XkbSelectEventDetails
+only allows you to change the selection conditions for a single event at a time,
+but it provides a means of fine-tuning the conditions under which the event is
+delivered.
+
+This request changes the Xkb event selection mask for the keyboard specified by
+.I device_spec.
+
+Each Xkb event that can be selected is represented by a bit in the
+.I bits_to_change
+and
+.I values_for_bits
+masks. Only the event selection bits specified by the
+.I bits_to_change
+parameter are affected; any unspecified bits are left unchanged. To turn on
+event selection for an event, set the bit for the event in the
+.I bits_to_change
+parameter and set the corresponding bit in the
+.I values_for_bits
+parameter. To turn off event selection for an event, set the bit for the event
+in the
+.I bits_to_change
+parameter and do not set the corresponding bit in the
+.I values_for_bits
+parameter. The valid values for both of these parameters are an inclusive
+bitwise OR of the masks shown in Table 1. There is no interface to return your
+client's current event selection mask. Clients cannot set other clients' event
+selection masks.
+
+The X server reports the events defined by Xkb to your client application only
+if you have requested them via a call to
+.I XkbSelectEvents
+or
+.I XkbSelectEventDetails.
+Specify the event types in which you are interested in a mask.
+
+Table 1 lists the event mask constants that can be specified with the
+.I XkbSelectEvents
+request and the circumstances in which the mask should be specified.
+
+.TS
+c s s
+l l l
+l l l.
+Table 1 XkbSelectEvents Mask Constants
+_
+Event Mask Value Notification Wanted
+_
+XkbNewKeyboardNotifyMask (1L<<0) Keyboard geometry change
+XkbMapNotifyMask (1L<<1) Keyboard mapping change
+XkbStateNotifyMask (1L<<2) Keyboard state change
+XkbControlsNotifyMask (1L<<3) Keyboard control change
+XkbIndicatorStateNotifyMask (1L<<4) Keyboard indicator state change
+XkbIndicatorMapNotifyMask (1L<<5) Keyboard indicator map change
+XkbNamesNotifyMask (1L<<6) Keyboard name change
+XkbCompatMapNotifyMask (1L<<7) Keyboard compat map change
+XkbBellNotifyMask (1L<<8) Bell
+XkbActionMessageMask (1L<<9) Action message
+XkbAccessXNotifyMask (1L<<10) AccessX features
+XkbExtensionDeviceNotifyMask (1L<<11) Extension device
+XkbAllEventsMask (0xFFF) All Xkb events
+.TE
+
+If a bit is not set in the
+.I bits_to_change
+parameter, but the corresponding bit is set in the
+.I values_for_bits
+parameter, a BadMatch protocol error results. If an undefined bit is set in
+either the
+.I bits_to_change
+or the
+.I values_for_bits
+parameter, a BadValue protocol error results.
+
+All event selection bits are initially zero for clients using the Xkb extension.
+Once you set some bits, they remain set for your client until you clear them via
+another call to
+.I XkbSelectEvents.
+
+.I XkbSelectEvents
+returns False if the Xkb extension has not been initilialized and True
+otherwise.
+.SH "RETURN VALUES"
+.TP 15
+True
+The
+.I XkbSelectEvents
+function returns True if the Xkb extension has been initilialized.
+.TP 15
+False
+The
+.I XkbSelectEvents
+function returns False if the Xkb extension has not been initilialized.
+.SH "SEE ALSO"
+.BR XkbSelectEventDetails (__libmansuffix__),
+.BR XkbUseCoreKbd (__libmansuffix__)
diff --git a/libX11/man/xkb/XkbSetAccessXTimeout.man b/libX11/man/xkb/XkbSetAccessXTimeout.man
index 5f50ec68f..00514699f 100644
--- a/libX11/man/xkb/XkbSetAccessXTimeout.man
+++ b/libX11/man/xkb/XkbSetAccessXTimeout.man
@@ -1,193 +1,193 @@
-'\" t
-.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
-.\"
-.\" Permission is hereby granted, free of charge, to any person obtaining a
-.\" copy of this software and associated documentation files (the "Software"),
-.\" to deal in the Software without restriction, including without limitation
-.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
-.\" and/or sell copies of the Software, and to permit persons to whom the
-.\" Software is furnished to do so, subject to the following conditions:
-.\"
-.\" The above copyright notice and this permission notice (including the next
-.\" paragraph) shall be included in all copies or substantial portions of the
-.\" Software.
-.\"
-.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-.\" DEALINGS IN THE SOFTWARE.
-.\"
-.TH XkbSetAccessXTimeout __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
-.SH NAME
-XkbSetAccessXTimeout \- Configures the AccessXTimeout options for a keyboard
-device
-.SH SYNOPSIS
-.HP
-.B Bool XkbSetAccessXTimeout
-.BI "(\^Display *" "display" "\^,"
-.BI "unsigned int " "device_spec" "\^,"
-.BI "unsigned short " "timeout" "\^,"
-.BI "unsigned int " "ctrls_mask" "\^,"
-.BI "unsigned int " "ctrls_values" "\^,"
-.BI "unsigned short " "opts_mask" "\^,"
-.BI "unsigned short " "opts_values" "\^);"
-.if n .ti +5n
-.if t .ti +.5i
-.SH ARGUMENTS
-.TP
-.I \- display
-connection to X server
-.TP
-.I \- device_spec
-device to configure, or XkbUseCoreKbd
-.TP
-.I \- timeout
-seconds idle until AccessXTimeout occurs
-.TP
-.I \- ctrls_mask
-boolean controls to modify
-.TP
-.I \- ctrls_values
-new bits for controls selected by ctrls_mask
-.TP
-.I \- opts_mask
-ax_options to change
-.TP
-.I \- opts_values
-new bits for ax_options selected by opts_mask
-.SH DESCRIPTION
-.LP
-In environments where computers are shared, features such as SlowKeys present a
-problem: if SlowKeys is on, the keyboard can appear to be unresponsive because
-keys are not accepted until they are held for a certain period of time. To help
-solve this problem, Xkb provides an AccessXTimeout control to automatically
-change the enabled/disabled state of any boolean controls and to change the
-value of the AccessXKeys and AccessXFeedback control attributes if the keyboard
-is idle for a specified period of time.
-
-When a timeout as specified by AccessXTimeout occurs and a control is
-consequently modified, Xkb generates an XkbControlsNotify event. For more
-information on XkbControlsNotify events.
-
-.I timeout
-specifies the number of seconds the keyboard must be idle before the controls
-are modified.
-.I ctrls_mask
-specifies what controls are to be enabled or disabled, and
-.I ctrls_values
-specifies whether those controls are to be enabled or disabled. The bit values
-correspond to those for enabling and disabling boolean controls using
-.I XkbChangeEnabledControls.
- The
-.I opts_mask
-field specifies which attributes of the AccessXKeys and AccessXFeedback controls
-are to be changed, and
-.I opts_values
-specifies the new values for those options. The bit values correspond to those
-for the
-.I ax_options
-field of an XkbDescRec.
-
-.I XkbSetAccessXTimeout
-sends a request to configure the AccessXTimeout control to the server. It does
-not wait for a reply, and normally returns True. If a compatible version of the
-Xkb extension is not available in the server,
-.I XkbSetAccessXTimeout
-returns False.
-.SH "RETURN VALUES"
-.TP 15
-True
-The
-.I XkbSetAccessXTimeout
-function returns True when a compatible version of the Xkb extension is available in the server.
-.TP 15
-False
-The
-.I XkbSetAccessXTimeout
-function returns False when a compatible version of the Xkb extension is not available in the server.
-.SH STRUCTURES
-.LP
-The complete description of an Xkb keyboard is given by an XkbDescRec. The component
-structures in the XkbDescRec represent the major Xkb components.
-
-.nf
-typedef struct {
- struct _XDisplay * display; /\(** connection to X server */
- unsigned short flags; /\(** private to Xkb, do not modify */
- unsigned short device_spec; /\(** device of interest */
- KeyCode min_key_code; /\(** minimum keycode for device */
- KeyCode max_key_code; /\(** maximum keycode for device */
- XkbControlsPtr ctrls; /\(** controls */
- XkbServerMapPtr server; /\(** server keymap */
- XkbClientMapPtr map; /\(** client keymap */
- XkbIndicatorPtr indicators; /\(** indicator map */
- XkbNamesPtr names; /\(** names for all components */
- XkbCompatMapPtr compat; /\(** compatibility map */
- XkbGeometryPtr geom; /\(** physical geometry of keyboard */
-} XkbDescRec, *XkbDescPtr;
-
-.fi
-The
-.I display
-field points to an X display structure. The
-.I flags field is private to the library: modifying
-.I flags
-may yield unpredictable results. The
-.I device_spec
-field specifies the device identifier of the keyboard input device, or
-XkbUseCoreKeyboard, which specifies the core keyboard device. The
-.I min_key_code
-and
-.I max_key_code
-fields specify the least and greatest keycode that can be returned by the keyboard.
-
-Each structure component has a corresponding mask bit that is used in function calls to
-indicate that the structure should be manipulated in some manner, such as allocating it
-or freeing it. These masks and their relationships to the fields in the XkbDescRec are
-shown in Table 1.
-
-.TS
-c s s
-l l l
-l l l.
-Table 1 Mask Bits for XkbDescRec
-_
-Mask Bit XkbDescRec Field Value
-_
-XkbControlsMask ctrls (1L<<0)
-XkbServerMapMask server (1L<<1)
-XkbIClientMapMask map (1L<<2)
-XkbIndicatorMapMask indicators (1L<<3)
-XkbNamesMask names (1L<<4)
-XkbCompatMapMask compat (1L<<5)
-XkbGeometryMask geom (1L<<6)
-XkbAllComponentsMask All Fields (0x7f)
-.TE
-
-The structure for the XkbControlsNotify event is defined as follows:
-.nf
-
- typedef struct {
- int type; /\(** Xkb extension base event code */
- unsigned long serial; /\(** X server serial number for event */
- Bool send_event; /\(** True => synthetically generated */
- Display * display; /\(** server connection where event generated */
- Time time; /\(** server time when event generated */
- int xkb_type; /\(** XkbCompatMapNotify */
- int device; /\(** Xkb device ID, will not be XkbUseCoreKbd */
- unsigned int changed_ctrls; /\(** bits indicating which controls data have changed*/
- unsigned int enabled_ctrls; /\(** controls currently enabled in server */
- unsigned int enabled_ctrl_changes; /\(** bits indicating enabled/disabled controls */
- int num_groups; /\(** current number of keyboard groups */
- KeyCode keycode; /\(** != 0 => keycode of key causing change */
- char event_type; /\(** Type of event causing change */
- char req_major; /\(** major event code of event causing change */
- char req_minor; /\(** minor event code of event causing change */
- } XkbControlsNotifyEvent;
-
-.fi
-.SH "SEE ALSO"
-.BR XkbChangeEnabledControls (__libmansuffix__)
+'\" t
+.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the "Software"),
+.\" to deal in the Software without restriction, including without limitation
+.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
+.\" and/or sell copies of the Software, and to permit persons to whom the
+.\" Software is furnished to do so, subject to the following conditions:
+.\"
+.\" The above copyright notice and this permission notice (including the next
+.\" paragraph) shall be included in all copies or substantial portions of the
+.\" Software.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+.\" DEALINGS IN THE SOFTWARE.
+.\"
+.TH XkbSetAccessXTimeout __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbSetAccessXTimeout \- Configures the AccessXTimeout options for a keyboard
+device
+.SH SYNOPSIS
+.HP
+.B Bool XkbSetAccessXTimeout
+.BI "(\^Display *" "display" "\^,"
+.BI "unsigned int " "device_spec" "\^,"
+.BI "unsigned short " "timeout" "\^,"
+.BI "unsigned int " "ctrls_mask" "\^,"
+.BI "unsigned int " "ctrls_values" "\^,"
+.BI "unsigned short " "opts_mask" "\^,"
+.BI "unsigned short " "opts_values" "\^);"
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- display
+connection to X server
+.TP
+.I \- device_spec
+device to configure, or XkbUseCoreKbd
+.TP
+.I \- timeout
+seconds idle until AccessXTimeout occurs
+.TP
+.I \- ctrls_mask
+boolean controls to modify
+.TP
+.I \- ctrls_values
+new bits for controls selected by ctrls_mask
+.TP
+.I \- opts_mask
+ax_options to change
+.TP
+.I \- opts_values
+new bits for ax_options selected by opts_mask
+.SH DESCRIPTION
+.LP
+In environments where computers are shared, features such as SlowKeys present a
+problem: if SlowKeys is on, the keyboard can appear to be unresponsive because
+keys are not accepted until they are held for a certain period of time. To help
+solve this problem, Xkb provides an AccessXTimeout control to automatically
+change the enabled/disabled state of any boolean controls and to change the
+value of the AccessXKeys and AccessXFeedback control attributes if the keyboard
+is idle for a specified period of time.
+
+When a timeout as specified by AccessXTimeout occurs and a control is
+consequently modified, Xkb generates an XkbControlsNotify event. For more
+information on XkbControlsNotify events.
+
+.I timeout
+specifies the number of seconds the keyboard must be idle before the controls
+are modified.
+.I ctrls_mask
+specifies what controls are to be enabled or disabled, and
+.I ctrls_values
+specifies whether those controls are to be enabled or disabled. The bit values
+correspond to those for enabling and disabling boolean controls using
+.I XkbChangeEnabledControls.
+ The
+.I opts_mask
+field specifies which attributes of the AccessXKeys and AccessXFeedback controls
+are to be changed, and
+.I opts_values
+specifies the new values for those options. The bit values correspond to those
+for the
+.I ax_options
+field of an XkbDescRec.
+
+.I XkbSetAccessXTimeout
+sends a request to configure the AccessXTimeout control to the server. It does
+not wait for a reply, and normally returns True. If a compatible version of the
+Xkb extension is not available in the server,
+.I XkbSetAccessXTimeout
+returns False.
+.SH "RETURN VALUES"
+.TP 15
+True
+The
+.I XkbSetAccessXTimeout
+function returns True when a compatible version of the Xkb extension is available in the server.
+.TP 15
+False
+The
+.I XkbSetAccessXTimeout
+function returns False when a compatible version of the Xkb extension is not available in the server.
+.SH STRUCTURES
+.LP
+The complete description of an Xkb keyboard is given by an XkbDescRec. The component
+structures in the XkbDescRec represent the major Xkb components.
+
+.nf
+typedef struct {
+ struct _XDisplay * display; /\(** connection to X server */
+ unsigned short flags; /\(** private to Xkb, do not modify */
+ unsigned short device_spec; /\(** device of interest */
+ KeyCode min_key_code; /\(** minimum keycode for device */
+ KeyCode max_key_code; /\(** maximum keycode for device */
+ XkbControlsPtr ctrls; /\(** controls */
+ XkbServerMapPtr server; /\(** server keymap */
+ XkbClientMapPtr map; /\(** client keymap */
+ XkbIndicatorPtr indicators; /\(** indicator map */
+ XkbNamesPtr names; /\(** names for all components */
+ XkbCompatMapPtr compat; /\(** compatibility map */
+ XkbGeometryPtr geom; /\(** physical geometry of keyboard */
+} XkbDescRec, *XkbDescPtr;
+
+.fi
+The
+.I display
+field points to an X display structure. The
+.I flags field is private to the library: modifying
+.I flags
+may yield unpredictable results. The
+.I device_spec
+field specifies the device identifier of the keyboard input device, or
+XkbUseCoreKeyboard, which specifies the core keyboard device. The
+.I min_key_code
+and
+.I max_key_code
+fields specify the least and greatest keycode that can be returned by the keyboard.
+
+Each structure component has a corresponding mask bit that is used in function calls to
+indicate that the structure should be manipulated in some manner, such as allocating it
+or freeing it. These masks and their relationships to the fields in the XkbDescRec are
+shown in Table 1.
+
+.TS
+c s s
+l l l
+l l l.
+Table 1 Mask Bits for XkbDescRec
+_
+Mask Bit XkbDescRec Field Value
+_
+XkbControlsMask ctrls (1L<<0)
+XkbServerMapMask server (1L<<1)
+XkbIClientMapMask map (1L<<2)
+XkbIndicatorMapMask indicators (1L<<3)
+XkbNamesMask names (1L<<4)
+XkbCompatMapMask compat (1L<<5)
+XkbGeometryMask geom (1L<<6)
+XkbAllComponentsMask All Fields (0x7f)
+.TE
+
+The structure for the XkbControlsNotify event is defined as follows:
+.nf
+
+ typedef struct {
+ int type; /\(** Xkb extension base event code */
+ unsigned long serial; /\(** X server serial number for event */
+ Bool send_event; /\(** True => synthetically generated */
+ Display * display; /\(** server connection where event generated */
+ Time time; /\(** server time when event generated */
+ int xkb_type; /\(** XkbCompatMapNotify */
+ int device; /\(** Xkb device ID, will not be XkbUseCoreKbd */
+ unsigned int changed_ctrls; /\(** bits indicating which controls data have changed*/
+ unsigned int enabled_ctrls; /\(** controls currently enabled in server */
+ unsigned int enabled_ctrl_changes; /\(** bits indicating enabled/disabled controls */
+ int num_groups; /\(** current number of keyboard groups */
+ KeyCode keycode; /\(** != 0 => keycode of key causing change */
+ char event_type; /\(** Type of event causing change */
+ char req_major; /\(** major event code of event causing change */
+ char req_minor; /\(** minor event code of event causing change */
+ } XkbControlsNotifyEvent;
+
+.fi
+.SH "SEE ALSO"
+.BR XkbChangeEnabledControls (__libmansuffix__)
diff --git a/libX11/man/xkb/XkbSetAutoRepeatRate.man b/libX11/man/xkb/XkbSetAutoRepeatRate.man
index cdcbe120b..3deec37a6 100644
--- a/libX11/man/xkb/XkbSetAutoRepeatRate.man
+++ b/libX11/man/xkb/XkbSetAutoRepeatRate.man
@@ -1,98 +1,98 @@
-.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
-.\"
-.\" Permission is hereby granted, free of charge, to any person obtaining a
-.\" copy of this software and associated documentation files (the "Software"),
-.\" to deal in the Software without restriction, including without limitation
-.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
-.\" and/or sell copies of the Software, and to permit persons to whom the
-.\" Software is furnished to do so, subject to the following conditions:
-.\"
-.\" The above copyright notice and this permission notice (including the next
-.\" paragraph) shall be included in all copies or substantial portions of the
-.\" Software.
-.\"
-.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-.\" DEALINGS IN THE SOFTWARE.
-.\"
-.TH XkbSetAutoRepeatRate __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
-.SH NAME
-XkbSetAutoRepeatRate \- Sets the attributes of the RepeatKeys control for a
-keyboard device
-.SH SYNOPSIS
-.HP
-.B Bool XkbSetAutoRepeatRate
-.BI "(\^Display *" "display" "\^,"
-.BI "unsigned int " "device_spec" "\^,"
-.BI "unsigned int " "timeout" "\^,"
-.BI "unsigned int " "interval" "\^);"
-.if n .ti +5n
-.if t .ti +.5i
-.SH ARGUMENTS
-.TP
-.I \- display
-connection to X server
-.TP
-.I \- device_spec
-device to configure, or XkbUseCoreKbd
-.TP
-.I \- timeout
-initial delay, ms
-.TP
-.I \- interval
-delay between repeats, ms
-.SH DESCRIPTION
-.LP
-The core protocol allows only control over whether or not the entire keyboard or
-individual keys should auto-repeat when held down. RepeatKeys is a boolean
-control that extends this capability by adding control over the delay until a
-key begins to repeat and the rate at which it repeats. RepeatKeys is coupled
-with the core auto-repeat control: when RepeatKeys is enabled or disabled, the
-core auto-repeat is enabled or disabled and vice versa.
-
-Auto-repeating keys are controlled by two attributes. The first,
-.I timeout,
-is the delay after the initial press of an auto-repeating key and the first
-generated repeat event. The second,
-.I interval,
-is the delay between all subsequent generated repeat events. As with all boolean
-controls, configuring the attributes that determine how the control operates
-does not automatically enable the control as a whole.
-
-.I XkbSetAutoRepeatRate
-sends a request to the X server to configure the AutoRepeat control attributes
-to the values specified in
-.I timeout
-and
-.I interval.
-
-.I XkbSetAutoRepeatRate
-does not wait for a reply; it normally returns True. Specifying a zero value for
-either
-.I timeout
-or
-.I interval
-causes the server to generate a BadValue protocol error. If a compatible version
-of the Xkb extension is not available in the server,
-.I XkbSetAutoRepeatRate
-returns False.
-.SH "RETURN VALUES"
-.TP 15
-True
-The
-.I XkbSetAutoRepeatRate
-function returns True normally.
-.TP 15
-False
-The
-.I XkbSetAutoRepeatRate
-function returns False if a compatible version of the Xkb extension is not
-available in the server.
-.SH DIAGNOSTICS
-.TP 15
-.B BadValue
-An argument is out of range
+.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the "Software"),
+.\" to deal in the Software without restriction, including without limitation
+.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
+.\" and/or sell copies of the Software, and to permit persons to whom the
+.\" Software is furnished to do so, subject to the following conditions:
+.\"
+.\" The above copyright notice and this permission notice (including the next
+.\" paragraph) shall be included in all copies or substantial portions of the
+.\" Software.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+.\" DEALINGS IN THE SOFTWARE.
+.\"
+.TH XkbSetAutoRepeatRate __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbSetAutoRepeatRate \- Sets the attributes of the RepeatKeys control for a
+keyboard device
+.SH SYNOPSIS
+.HP
+.B Bool XkbSetAutoRepeatRate
+.BI "(\^Display *" "display" "\^,"
+.BI "unsigned int " "device_spec" "\^,"
+.BI "unsigned int " "timeout" "\^,"
+.BI "unsigned int " "interval" "\^);"
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- display
+connection to X server
+.TP
+.I \- device_spec
+device to configure, or XkbUseCoreKbd
+.TP
+.I \- timeout
+initial delay, ms
+.TP
+.I \- interval
+delay between repeats, ms
+.SH DESCRIPTION
+.LP
+The core protocol allows only control over whether or not the entire keyboard or
+individual keys should auto-repeat when held down. RepeatKeys is a boolean
+control that extends this capability by adding control over the delay until a
+key begins to repeat and the rate at which it repeats. RepeatKeys is coupled
+with the core auto-repeat control: when RepeatKeys is enabled or disabled, the
+core auto-repeat is enabled or disabled and vice versa.
+
+Auto-repeating keys are controlled by two attributes. The first,
+.I timeout,
+is the delay after the initial press of an auto-repeating key and the first
+generated repeat event. The second,
+.I interval,
+is the delay between all subsequent generated repeat events. As with all boolean
+controls, configuring the attributes that determine how the control operates
+does not automatically enable the control as a whole.
+
+.I XkbSetAutoRepeatRate
+sends a request to the X server to configure the AutoRepeat control attributes
+to the values specified in
+.I timeout
+and
+.I interval.
+
+.I XkbSetAutoRepeatRate
+does not wait for a reply; it normally returns True. Specifying a zero value for
+either
+.I timeout
+or
+.I interval
+causes the server to generate a BadValue protocol error. If a compatible version
+of the Xkb extension is not available in the server,
+.I XkbSetAutoRepeatRate
+returns False.
+.SH "RETURN VALUES"
+.TP 15
+True
+The
+.I XkbSetAutoRepeatRate
+function returns True normally.
+.TP 15
+False
+The
+.I XkbSetAutoRepeatRate
+function returns False if a compatible version of the Xkb extension is not
+available in the server.
+.SH DIAGNOSTICS
+.TP 15
+.B BadValue
+An argument is out of range
diff --git a/libX11/man/xkb/XkbSetAutoResetControls.man b/libX11/man/xkb/XkbSetAutoResetControls.man
index a3956f60f..ecaf891f8 100644
--- a/libX11/man/xkb/XkbSetAutoResetControls.man
+++ b/libX11/man/xkb/XkbSetAutoResetControls.man
@@ -1,100 +1,100 @@
-.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
-.\"
-.\" Permission is hereby granted, free of charge, to any person obtaining a
-.\" copy of this software and associated documentation files (the "Software"),
-.\" to deal in the Software without restriction, including without limitation
-.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
-.\" and/or sell copies of the Software, and to permit persons to whom the
-.\" Software is furnished to do so, subject to the following conditions:
-.\"
-.\" The above copyright notice and this permission notice (including the next
-.\" paragraph) shall be included in all copies or substantial portions of the
-.\" Software.
-.\"
-.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-.\" DEALINGS IN THE SOFTWARE.
-.\"
-.TH XkbSetAutoResetControls __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
-.SH NAME
-XkbSetAutoResetControls \- Changes the current values of the AutoReset control
-attributes
-.SH SYNOPSIS
-.HP
-.B Bool XkbSetAutoResetControls
-.BI "(\^Display *" "dpy" "\^,"
-.BI "unsigned int " "changes" "\^,"
-.BI "unsigned int *" "auto_ctrls" "\^,"
-.BI "unsigned int *" "auto_values" "\^);"
-.if n .ti +5n
-.if t .ti +.5i
-.SH ARGUMENTS
-.TP
-.I \- dpy
-connection to X server
-.TP
-.I \- changes
-controls for which to change auto-reset values
-.TP
-.I \- auto_ctrls
-controls from changes that should auto reset
-.TP
-.I \- auto_values
-1 bit => auto-reset on
-.SH DESCRIPTION
-.LP
-.I XkbSetAutoResetControls
-changes the auto-reset status and associated auto-reset values for the controls
-selected by
-.I changes.
-For any control selected by
-.I changes,
-if the corresponding bit is set in
-.I auto_ctrls,
-the control is configured to auto-reset when the client exits. If the
-corresponding bit in
-.I auto_values
-is on, the control is turned on when the client exits; if zero, the control is
-turned off when the client exits. For any control selected by
-.I changes,
-if the corresponding bit is not set in
-.I auto_ctrls,
-the control is configured to not reset when the client exits.
-
-For example:
-
-.nf
-To leave the auto-reset controls for StickyKeys the way they are:
-
- ok = XkbSetAutoResetControls(dpy, 0, 0, 0);
-
-To change the auto-reset controls so that StickyKeys are unaffected when the
-client exits:
-
- ok = XkbSetAutoResetControls(dpy, XkbStickyKeysMask, 0, 0);
-
-To change the auto-reset controls so that StickyKeys are turned off when the
-client exits:
-
- ok = XkbSetAutoResetControls(dpy, XkbStickyKeysMask, XkbStickyKeysMask, 0);
-
-To change the auto-reset controls so that StickyKeys are turned on when the
-client exits:
-
- ok = XkbSetAutoResetControls(dpy, XkbStickyKeysMask, XkbStickyKeysMask,
-XkbStickyKeysMask);
-
-.fi
-.I XkbSetAutoResetControls
-backfills
-.I auto_ctrls
-and
-.I auto_values
-with the auto-reset controls for this particular client. Note that all of the
-bits are valid in the returned values, not just the ones selected in the
-.I changes
-mask.
+.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the "Software"),
+.\" to deal in the Software without restriction, including without limitation
+.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
+.\" and/or sell copies of the Software, and to permit persons to whom the
+.\" Software is furnished to do so, subject to the following conditions:
+.\"
+.\" The above copyright notice and this permission notice (including the next
+.\" paragraph) shall be included in all copies or substantial portions of the
+.\" Software.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+.\" DEALINGS IN THE SOFTWARE.
+.\"
+.TH XkbSetAutoResetControls __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbSetAutoResetControls \- Changes the current values of the AutoReset control
+attributes
+.SH SYNOPSIS
+.HP
+.B Bool XkbSetAutoResetControls
+.BI "(\^Display *" "dpy" "\^,"
+.BI "unsigned int " "changes" "\^,"
+.BI "unsigned int *" "auto_ctrls" "\^,"
+.BI "unsigned int *" "auto_values" "\^);"
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- dpy
+connection to X server
+.TP
+.I \- changes
+controls for which to change auto-reset values
+.TP
+.I \- auto_ctrls
+controls from changes that should auto reset
+.TP
+.I \- auto_values
+1 bit => auto-reset on
+.SH DESCRIPTION
+.LP
+.I XkbSetAutoResetControls
+changes the auto-reset status and associated auto-reset values for the controls
+selected by
+.I changes.
+For any control selected by
+.I changes,
+if the corresponding bit is set in
+.I auto_ctrls,
+the control is configured to auto-reset when the client exits. If the
+corresponding bit in
+.I auto_values
+is on, the control is turned on when the client exits; if zero, the control is
+turned off when the client exits. For any control selected by
+.I changes,
+if the corresponding bit is not set in
+.I auto_ctrls,
+the control is configured to not reset when the client exits.
+
+For example:
+
+.nf
+To leave the auto-reset controls for StickyKeys the way they are:
+
+ ok = XkbSetAutoResetControls(dpy, 0, 0, 0);
+
+To change the auto-reset controls so that StickyKeys are unaffected when the
+client exits:
+
+ ok = XkbSetAutoResetControls(dpy, XkbStickyKeysMask, 0, 0);
+
+To change the auto-reset controls so that StickyKeys are turned off when the
+client exits:
+
+ ok = XkbSetAutoResetControls(dpy, XkbStickyKeysMask, XkbStickyKeysMask, 0);
+
+To change the auto-reset controls so that StickyKeys are turned on when the
+client exits:
+
+ ok = XkbSetAutoResetControls(dpy, XkbStickyKeysMask, XkbStickyKeysMask,
+XkbStickyKeysMask);
+
+.fi
+.I XkbSetAutoResetControls
+backfills
+.I auto_ctrls
+and
+.I auto_values
+with the auto-reset controls for this particular client. Note that all of the
+bits are valid in the returned values, not just the ones selected in the
+.I changes
+mask.
diff --git a/libX11/man/xkb/XkbSetBounceKeysDelay.man b/libX11/man/xkb/XkbSetBounceKeysDelay.man
index 15ac5d10b..9637f0ef8 100644
--- a/libX11/man/xkb/XkbSetBounceKeysDelay.man
+++ b/libX11/man/xkb/XkbSetBounceKeysDelay.man
@@ -1,207 +1,207 @@
-'\" t
-.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
-.\"
-.\" Permission is hereby granted, free of charge, to any person obtaining a
-.\" copy of this software and associated documentation files (the "Software"),
-.\" to deal in the Software without restriction, including without limitation
-.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
-.\" and/or sell copies of the Software, and to permit persons to whom the
-.\" Software is furnished to do so, subject to the following conditions:
-.\"
-.\" The above copyright notice and this permission notice (including the next
-.\" paragraph) shall be included in all copies or substantial portions of the
-.\" Software.
-.\"
-.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-.\" DEALINGS IN THE SOFTWARE.
-.\"
-.TH XkbSetBounceKeysDelay __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
-.SH NAME
-XkbSetBounceKeysDelay \- Sets the BounceKeys delay for a keyboard device
-.SH SYNOPSIS
-.HP
-.B Bool XkbSetBounceKeysDelay
-.BI "(\^Display *" "display" "\^,"
-.BI "unsigned int " "device_spec" "\^,"
-.BI "unsigned int *" "delay" "\^);"
-.if n .ti +5n
-.if t .ti +.5i
-.SH ARGUMENTS
-.TP
-.I \- display
-connection to X server
-.TP
-.I \- device_spec
-device ID, or XkbUseCoreKbd
-.TP
-.I \- delay
-backfilled with bounce keys delay, ms
-.SH DESCRIPTION
-.LP
-The server can generate XkbAccessXNotify events for some of the global keyboard
-controls.
-The detail field describes what AccessX event just occurred and can be any of
-the values in
-Table 1.
-
-.TS
-c s
-l l
-l lw(4i).
-Table 1 AccessXNotify Events
-_
-detail Reason
-_
-XkbAXN_SKPress T{
-A key was pressed when SlowKeys was enabled.
-T}
-XkbAXN_SKAccept T{
-A key was accepted (held longer than the SlowKeys delay).
-T}
-XkbAXN_SKRelease T{
-An accepted SlowKeys key was released.
-T}
-XkbAXN_SKReject T{
-A key was rejected (released before the SlowKeys delay expired).
-T}
-XkbAXN_BKAccept T{
-A key was accepted by BounceKeys.
-T}
-XkbAXN_BKReject T{
-A key was rejected (pressed before the BounceKeys delay expired).
-T}
-XkbAXN_AXKWarning T{
-AccessXKeys is about to turn on/off StickyKeys or BounceKeys.
-T}
-.TE
-
-The
-.I keycode
-field reports the keycode of the key for which the event occurred. If the action
-is related to
-.I SlowKeys,
-the
-.I slowKeysDelay
-field contains the current SlowKeys acceptance delay. If the action is related
-to BounceKeys,
-the
-.I debounceDelay
-field contains the current BounceKeys debounce delay.
-
-Selecting for AccessX Events
-
-To receive XkbAccessXNotify events under all possible conditions, use
-.I XkbSelectEvents
-and pass XkbAccesXNotifyMask in both
-.I bits_to_change
-and
-.I values_for_bits.
-
-To receive XkbStateNotify events only under certain conditions, use
-.I XkbSelectEventDetails
-using XkbAccessXNotify as the
-.I event_type
-and specifying the desired state changes in
-.I bits_to_change
-and
-.I values_for_bits
-using mask bits from Table 2.
-
-.TS
-c s s
-l l l
-l l lw(3i).
-Table 2 AccessXNotify Event Details
-_
-XkbAccessXNotify Event Details Value Circumstances
-_
-XkbAXN_SKPressMask (1<<0) T{
-Slow key press notification wanted
-T}
-XkbAXN_SKAcceptMask (1<<1) T{
-Slow key accept notification wanted
-T}
-XkbAXN_SKRejectMask (1<<2) T{
-Slow key reject notification wanted
-T}
-XkbAXN_SKReleaseMask (1<<3) T{
-Slow key release notification wanted
-T}
-XkbAXN_BKAcceptMask (1<<4) T{
-Bounce key accept notification wanted
-T}
-XkbAXN_BKRejectMask (1<<5) T{
-Bounce key reject notification wanted
-T}
-XkbAXN_AXKWarningMask (1<<6) T{
-AccessX warning notification wanted
-T}
-XkbAllAccessXEventsMask (0x7f) T{
-All AccessX features notifications wanted
-T}
-.TE
-
-Some users may accidentally "bounce" on a key when they release it. They press
-it once, then accidentally press it again after they release it. The BounceKeys
-control temporarily disables a key after it has been pressed, effectively
-"debouncing" the keyboard. The period of time the key is disabled after it is
-released is known as the
-.I BounceKeys delay.
-BounceKeys is a boolean control.
-
-When the BounceKeys control is active, the server reports acceptance or
-rejection of any key to interested clients by sending an appropriate
-AccessXNotify event.
-
-.I XkbSetBounceKeysDelay
-sends a request to configure the BounceKeys control to the server. It does not
-wait for a reply and normally returns True. Specifying a value of zero for the
-delay parameter causes
-.I XkbSetBounceKeysDelay
-to generate a BadValue protocol error. If a compatible version of the Xkb
-extension is not available in the server,
-.I XkbSetBounceKeysDelay
-returns False.
-.SH "RETURN VALUES"
-.TP 15
-True
-The
-.I XkbSetBounceKeysDelay
-function returns True when it sends a request to configure the BounceKeys
-control to the server.
-.TP 15
-False
-The
-.I XkbSetBounceKeysDelay
-function returns False if a compatible version of the Xkb extension is not
-available in the server.
-.SH STRUCTURES
-.LP
-The structure for the XkbAccessXNotify event type is as follows:
-
-.nf
-typedef struct {
- int type; /\(** Xkb extension base event code */
- unsigned long serial; /\(** X server serial number for event */
- Bool send_event; /\(** True => synthetically generated */
- Display * display; /\(** server connection where event generated */
- Time time; /\(** server time when event generated */
- int xkb_type; /\(** XkbAccessXNotify */
- int device; /\(** Xkb device ID, will not be XkbUseCoreKbd
-*/
- int detail; /\(** XkbAXN_* */
- KeyCode keycode; /\(** key of event */
- int slowKeysDelay; /\(** current SlowKeys delay */
- int debounceDelay; /\(** current debounce delay */
-} XkbAccessXNotifyEvent;
-
-.fi
-.SH DIAGNOSTICS
-.TP 15
-.B BadValue
-An argument is out of range
+'\" t
+.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the "Software"),
+.\" to deal in the Software without restriction, including without limitation
+.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
+.\" and/or sell copies of the Software, and to permit persons to whom the
+.\" Software is furnished to do so, subject to the following conditions:
+.\"
+.\" The above copyright notice and this permission notice (including the next
+.\" paragraph) shall be included in all copies or substantial portions of the
+.\" Software.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+.\" DEALINGS IN THE SOFTWARE.
+.\"
+.TH XkbSetBounceKeysDelay __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbSetBounceKeysDelay \- Sets the BounceKeys delay for a keyboard device
+.SH SYNOPSIS
+.HP
+.B Bool XkbSetBounceKeysDelay
+.BI "(\^Display *" "display" "\^,"
+.BI "unsigned int " "device_spec" "\^,"
+.BI "unsigned int *" "delay" "\^);"
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- display
+connection to X server
+.TP
+.I \- device_spec
+device ID, or XkbUseCoreKbd
+.TP
+.I \- delay
+backfilled with bounce keys delay, ms
+.SH DESCRIPTION
+.LP
+The server can generate XkbAccessXNotify events for some of the global keyboard
+controls.
+The detail field describes what AccessX event just occurred and can be any of
+the values in
+Table 1.
+
+.TS
+c s
+l l
+l lw(4i).
+Table 1 AccessXNotify Events
+_
+detail Reason
+_
+XkbAXN_SKPress T{
+A key was pressed when SlowKeys was enabled.
+T}
+XkbAXN_SKAccept T{
+A key was accepted (held longer than the SlowKeys delay).
+T}
+XkbAXN_SKRelease T{
+An accepted SlowKeys key was released.
+T}
+XkbAXN_SKReject T{
+A key was rejected (released before the SlowKeys delay expired).
+T}
+XkbAXN_BKAccept T{
+A key was accepted by BounceKeys.
+T}
+XkbAXN_BKReject T{
+A key was rejected (pressed before the BounceKeys delay expired).
+T}
+XkbAXN_AXKWarning T{
+AccessXKeys is about to turn on/off StickyKeys or BounceKeys.
+T}
+.TE
+
+The
+.I keycode
+field reports the keycode of the key for which the event occurred. If the action
+is related to
+.I SlowKeys,
+the
+.I slowKeysDelay
+field contains the current SlowKeys acceptance delay. If the action is related
+to BounceKeys,
+the
+.I debounceDelay
+field contains the current BounceKeys debounce delay.
+
+Selecting for AccessX Events
+
+To receive XkbAccessXNotify events under all possible conditions, use
+.I XkbSelectEvents
+and pass XkbAccesXNotifyMask in both
+.I bits_to_change
+and
+.I values_for_bits.
+
+To receive XkbStateNotify events only under certain conditions, use
+.I XkbSelectEventDetails
+using XkbAccessXNotify as the
+.I event_type
+and specifying the desired state changes in
+.I bits_to_change
+and
+.I values_for_bits
+using mask bits from Table 2.
+
+.TS
+c s s
+l l l
+l l lw(3i).
+Table 2 AccessXNotify Event Details
+_
+XkbAccessXNotify Event Details Value Circumstances
+_
+XkbAXN_SKPressMask (1<<0) T{
+Slow key press notification wanted
+T}
+XkbAXN_SKAcceptMask (1<<1) T{
+Slow key accept notification wanted
+T}
+XkbAXN_SKRejectMask (1<<2) T{
+Slow key reject notification wanted
+T}
+XkbAXN_SKReleaseMask (1<<3) T{
+Slow key release notification wanted
+T}
+XkbAXN_BKAcceptMask (1<<4) T{
+Bounce key accept notification wanted
+T}
+XkbAXN_BKRejectMask (1<<5) T{
+Bounce key reject notification wanted
+T}
+XkbAXN_AXKWarningMask (1<<6) T{
+AccessX warning notification wanted
+T}
+XkbAllAccessXEventsMask (0x7f) T{
+All AccessX features notifications wanted
+T}
+.TE
+
+Some users may accidentally "bounce" on a key when they release it. They press
+it once, then accidentally press it again after they release it. The BounceKeys
+control temporarily disables a key after it has been pressed, effectively
+"debouncing" the keyboard. The period of time the key is disabled after it is
+released is known as the
+.I BounceKeys delay.
+BounceKeys is a boolean control.
+
+When the BounceKeys control is active, the server reports acceptance or
+rejection of any key to interested clients by sending an appropriate
+AccessXNotify event.
+
+.I XkbSetBounceKeysDelay
+sends a request to configure the BounceKeys control to the server. It does not
+wait for a reply and normally returns True. Specifying a value of zero for the
+delay parameter causes
+.I XkbSetBounceKeysDelay
+to generate a BadValue protocol error. If a compatible version of the Xkb
+extension is not available in the server,
+.I XkbSetBounceKeysDelay
+returns False.
+.SH "RETURN VALUES"
+.TP 15
+True
+The
+.I XkbSetBounceKeysDelay
+function returns True when it sends a request to configure the BounceKeys
+control to the server.
+.TP 15
+False
+The
+.I XkbSetBounceKeysDelay
+function returns False if a compatible version of the Xkb extension is not
+available in the server.
+.SH STRUCTURES
+.LP
+The structure for the XkbAccessXNotify event type is as follows:
+
+.nf
+typedef struct {
+ int type; /\(** Xkb extension base event code */
+ unsigned long serial; /\(** X server serial number for event */
+ Bool send_event; /\(** True => synthetically generated */
+ Display * display; /\(** server connection where event generated */
+ Time time; /\(** server time when event generated */
+ int xkb_type; /\(** XkbAccessXNotify */
+ int device; /\(** Xkb device ID, will not be XkbUseCoreKbd
+*/
+ int detail; /\(** XkbAXN_* */
+ KeyCode keycode; /\(** key of event */
+ int slowKeysDelay; /\(** current SlowKeys delay */
+ int debounceDelay; /\(** current debounce delay */
+} XkbAccessXNotifyEvent;
+
+.fi
+.SH DIAGNOSTICS
+.TP 15
+.B BadValue
+An argument is out of range
diff --git a/libX11/man/xkb/XkbSetCompatMap.man b/libX11/man/xkb/XkbSetCompatMap.man
index eeff71cb9..49d77a8de 100644
--- a/libX11/man/xkb/XkbSetCompatMap.man
+++ b/libX11/man/xkb/XkbSetCompatMap.man
@@ -1,203 +1,203 @@
-'\" t
-.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
-.\"
-.\" Permission is hereby granted, free of charge, to any person obtaining a
-.\" copy of this software and associated documentation files (the "Software"),
-.\" to deal in the Software without restriction, including without limitation
-.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
-.\" and/or sell copies of the Software, and to permit persons to whom the
-.\" Software is furnished to do so, subject to the following conditions:
-.\"
-.\" The above copyright notice and this permission notice (including the next
-.\" paragraph) shall be included in all copies or substantial portions of the
-.\" Software.
-.\"
-.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-.\" DEALINGS IN THE SOFTWARE.
-.\"
-.TH XkbSetCompatMap __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
-.SH NAME
-XkbSetCompatMap \- Modify the server's compatibility map
-.SH SYNOPSIS
-.HP
-.B Bool XkbSetCompatMap
-.BI "(\^Display *" "display" "\^,"
-.BI "unsigned int " "which" "\^,"
-.BI "XkbDescPtr " "xkb" "\^,"
-.BI "Bool " "update_actions" "\^);"
-.if n .ti +5n
-.if t .ti +.5i
-.SH ARGUMENTS
-.TP
-.I \- display
-connection to server
-.TP
-.I \- which
-mask of compat map components to set
-.TP
-.I \- xkb
-source for compat map components
-.TP
-.I \- update_actions
-True => apply to server's keyboard map
-.SH DESCRIPTION
-.LP
-To modify the server's compatibility map, first modify a local copy of the Xkb
-compatibility map, then call
-.I XkbSetCompatMap.
-You may allocate a new compatibility map for this purpose using
-.I XkbAllocCompatMap.
-You may also use a compatibility map from another server, although you need to
-adjust the
-.I device_spec
-field in the XkbDescRec accordingly. Note that symbol interpretations in a
-compatibility map (
-.I sym_interpret,
-the vector of XkbSymInterpretRec structures) are also allocated using this same
-function.
-
-.I XkbSetCompatMap
-copies compatibility map information from the keyboard description in
-.I xkb
-to the server specified in
-.I display
-'s compatibility map for the device specified by the
-.I device_spec
-field of
-.I xkb.
-Unless you have specifically modified this field, it is the default keyboard
-device.
-.I which
-specifies the compatibility map components to be set, and is an inclusive OR of
-the bits shown in Table 1.
-
-.TS
-c s s
-l l l
-l l lw(3i).
-Table 1 Compatibility Map Component Masks
-_
-Mask Value Affecting
-_
-XkbSymInterpMask (1<<0) Symbol interpretations
-XkbGroupCompatMask (1<<1) Group maps
-XkbAllCompatMask (0x3) All compatibility map components
-.TE
-
-After updating its compatibility map for the specified device, if
-.I update_actions
-is True, the server applies the new compatibility map to its entire keyboard for
-the device to generate a new set of key semantics, compatibility state, and a
-new core keyboard map. If
-.I update_actions
-is False, the new compatibility map is not used to generate any modifications to
-the current device semantics, state, or core keyboard map. One reason for not
-applying the compatibility map immediately would be if one server was being
-configured to match another on a piecemeal basis; the map should not be applied
-until everything is updated. To force an update at a later time, use
-.I XkbSetCompatMap
-specifying
-.I which
-as zero and
-.I update_actions
-as True.
-
-.I XkbSetCompatMap
-returns True if successful and False if unsuccessful. The server may report
-problems it encounters when processing the request subsequently via protocol
-errors.
-.SH "RETURN VALUES"
-.TP 15
-True
-The
-.I XkbSetCompatMap
-function returns True if successful.
-.TP 15
-False
-The
-.I XkbSetCompatMap
-function returns False if unsuccessful.
-.SH STRUCTURES
-.LP
-The complete description of an Xkb keyboard is given by an XkbDescRec. The
-component
-structures in the XkbDescRec represent the major Xkb components.
-
-.nf
-typedef struct {
- struct _XDisplay * display; /\(** connection to X server */
- unsigned short flags; /\(** private to Xkb, do not modify */
- unsigned short device_spec; /\(** device of interest */
- KeyCode min_key_code; /\(** minimum keycode for device */
- KeyCode max_key_code; /\(** maximum keycode for device */
- XkbControlsPtr ctrls; /\(** controls */
- XkbServerMapPtr server; /\(** server keymap */
- XkbClientMapPtr map; /\(** client keymap */
- XkbIndicatorPtr indicators; /\(** indicator map */
- XkbNamesPtr names; /\(** names for all components */
- XkbCompatMapPtr compat; /\(** compatibility map */
- XkbGeometryPtr geom; /\(** physical geometry of keyboard */
-} XkbDescRec, *XkbDescPtr;
-
-.fi
-The
-.I display
-field points to an X display structure. The
-.I flags field is private to the library: modifying
-.I flags
-may yield unpredictable results. The
-.I device_spec
-field specifies the device identifier of the keyboard input device, or
-XkbUseCoreKeyboard, which specifies the core keyboard device. The
-.I min_key_code
-and
-.I max_key_code
-fields specify the least and greatest keycode that can be returned by the
-keyboard.
-
-Each structure component has a corresponding mask bit that is used in function
-calls to
-indicate that the structure should be manipulated in some manner, such as
-allocating it
-or freeing it. These masks and their relationships to the fields in the
-XkbDescRec are
-shown in Table 2.
-
-.TS
-c s s
-l l l
-l l l.
-Table 2 Mask Bits for XkbDescRec
-_
-Mask Bit XkbDescRec Field Value
-_
-XkbControlsMask ctrls (1L<<0)
-XkbServerMapMask server (1L<<1)
-XkbIClientMapMask map (1L<<2)
-XkbIndicatorMapMask indicators (1L<<3)
-XkbNamesMask names (1L<<4)
-XkbCompatMapMask compat (1L<<5)
-XkbGeometryMask geom (1L<<6)
-XkbAllComponentsMask All Fields (0x7f)
-.TE
-
-The XkbSymInterpretRec structure specifies a symbol interpretation:
-.nf
-
- typedef struct {
- KeySym sym; /\(** keysym of interest or NULL */
- unsigned char flags; /\(** XkbSI_AutoRepeat, XkbSI_LockingKey */
- unsigned char match; /\(** specifies how mods is interpreted */
- unsigned char mods; /\(** modifier bits, correspond to eight real modifiers */
- unsigned char virtual_mod; /\(** 1 modifier to add to key virtual mod map */
- XkbAnyAction act; /\(** action to bind to symbol position on key */
- } XkbSymInterpretRec,*XkbSymInterpretPtr;
-
-.fi
-.SH "SEE ALSO"
-.BR XkbAllocCompatMap (__libmansuffix__)
+'\" t
+.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the "Software"),
+.\" to deal in the Software without restriction, including without limitation
+.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
+.\" and/or sell copies of the Software, and to permit persons to whom the
+.\" Software is furnished to do so, subject to the following conditions:
+.\"
+.\" The above copyright notice and this permission notice (including the next
+.\" paragraph) shall be included in all copies or substantial portions of the
+.\" Software.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+.\" DEALINGS IN THE SOFTWARE.
+.\"
+.TH XkbSetCompatMap __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbSetCompatMap \- Modify the server's compatibility map
+.SH SYNOPSIS
+.HP
+.B Bool XkbSetCompatMap
+.BI "(\^Display *" "display" "\^,"
+.BI "unsigned int " "which" "\^,"
+.BI "XkbDescPtr " "xkb" "\^,"
+.BI "Bool " "update_actions" "\^);"
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- display
+connection to server
+.TP
+.I \- which
+mask of compat map components to set
+.TP
+.I \- xkb
+source for compat map components
+.TP
+.I \- update_actions
+True => apply to server's keyboard map
+.SH DESCRIPTION
+.LP
+To modify the server's compatibility map, first modify a local copy of the Xkb
+compatibility map, then call
+.I XkbSetCompatMap.
+You may allocate a new compatibility map for this purpose using
+.I XkbAllocCompatMap.
+You may also use a compatibility map from another server, although you need to
+adjust the
+.I device_spec
+field in the XkbDescRec accordingly. Note that symbol interpretations in a
+compatibility map (
+.I sym_interpret,
+the vector of XkbSymInterpretRec structures) are also allocated using this same
+function.
+
+.I XkbSetCompatMap
+copies compatibility map information from the keyboard description in
+.I xkb
+to the server specified in
+.I display
+'s compatibility map for the device specified by the
+.I device_spec
+field of
+.I xkb.
+Unless you have specifically modified this field, it is the default keyboard
+device.
+.I which
+specifies the compatibility map components to be set, and is an inclusive OR of
+the bits shown in Table 1.
+
+.TS
+c s s
+l l l
+l l lw(3i).
+Table 1 Compatibility Map Component Masks
+_
+Mask Value Affecting
+_
+XkbSymInterpMask (1<<0) Symbol interpretations
+XkbGroupCompatMask (1<<1) Group maps
+XkbAllCompatMask (0x3) All compatibility map components
+.TE
+
+After updating its compatibility map for the specified device, if
+.I update_actions
+is True, the server applies the new compatibility map to its entire keyboard for
+the device to generate a new set of key semantics, compatibility state, and a
+new core keyboard map. If
+.I update_actions
+is False, the new compatibility map is not used to generate any modifications to
+the current device semantics, state, or core keyboard map. One reason for not
+applying the compatibility map immediately would be if one server was being
+configured to match another on a piecemeal basis; the map should not be applied
+until everything is updated. To force an update at a later time, use
+.I XkbSetCompatMap
+specifying
+.I which
+as zero and
+.I update_actions
+as True.
+
+.I XkbSetCompatMap
+returns True if successful and False if unsuccessful. The server may report
+problems it encounters when processing the request subsequently via protocol
+errors.
+.SH "RETURN VALUES"
+.TP 15
+True
+The
+.I XkbSetCompatMap
+function returns True if successful.
+.TP 15
+False
+The
+.I XkbSetCompatMap
+function returns False if unsuccessful.
+.SH STRUCTURES
+.LP
+The complete description of an Xkb keyboard is given by an XkbDescRec. The
+component
+structures in the XkbDescRec represent the major Xkb components.
+
+.nf
+typedef struct {
+ struct _XDisplay * display; /\(** connection to X server */
+ unsigned short flags; /\(** private to Xkb, do not modify */
+ unsigned short device_spec; /\(** device of interest */
+ KeyCode min_key_code; /\(** minimum keycode for device */
+ KeyCode max_key_code; /\(** maximum keycode for device */
+ XkbControlsPtr ctrls; /\(** controls */
+ XkbServerMapPtr server; /\(** server keymap */
+ XkbClientMapPtr map; /\(** client keymap */
+ XkbIndicatorPtr indicators; /\(** indicator map */
+ XkbNamesPtr names; /\(** names for all components */
+ XkbCompatMapPtr compat; /\(** compatibility map */
+ XkbGeometryPtr geom; /\(** physical geometry of keyboard */
+} XkbDescRec, *XkbDescPtr;
+
+.fi
+The
+.I display
+field points to an X display structure. The
+.I flags field is private to the library: modifying
+.I flags
+may yield unpredictable results. The
+.I device_spec
+field specifies the device identifier of the keyboard input device, or
+XkbUseCoreKeyboard, which specifies the core keyboard device. The
+.I min_key_code
+and
+.I max_key_code
+fields specify the least and greatest keycode that can be returned by the
+keyboard.
+
+Each structure component has a corresponding mask bit that is used in function
+calls to
+indicate that the structure should be manipulated in some manner, such as
+allocating it
+or freeing it. These masks and their relationships to the fields in the
+XkbDescRec are
+shown in Table 2.
+
+.TS
+c s s
+l l l
+l l l.
+Table 2 Mask Bits for XkbDescRec
+_
+Mask Bit XkbDescRec Field Value
+_
+XkbControlsMask ctrls (1L<<0)
+XkbServerMapMask server (1L<<1)
+XkbIClientMapMask map (1L<<2)
+XkbIndicatorMapMask indicators (1L<<3)
+XkbNamesMask names (1L<<4)
+XkbCompatMapMask compat (1L<<5)
+XkbGeometryMask geom (1L<<6)
+XkbAllComponentsMask All Fields (0x7f)
+.TE
+
+The XkbSymInterpretRec structure specifies a symbol interpretation:
+.nf
+
+ typedef struct {
+ KeySym sym; /\(** keysym of interest or NULL */
+ unsigned char flags; /\(** XkbSI_AutoRepeat, XkbSI_LockingKey */
+ unsigned char match; /\(** specifies how mods is interpreted */
+ unsigned char mods; /\(** modifier bits, correspond to eight real modifiers */
+ unsigned char virtual_mod; /\(** 1 modifier to add to key virtual mod map */
+ XkbAnyAction act; /\(** action to bind to symbol position on key */
+ } XkbSymInterpretRec,*XkbSymInterpretPtr;
+
+.fi
+.SH "SEE ALSO"
+.BR XkbAllocCompatMap (__libmansuffix__)
diff --git a/libX11/man/xkb/XkbSetControls.man b/libX11/man/xkb/XkbSetControls.man
index 269e19c99..8993ad089 100644
--- a/libX11/man/xkb/XkbSetControls.man
+++ b/libX11/man/xkb/XkbSetControls.man
@@ -1,167 +1,167 @@
-'\" t
-.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
-.\"
-.\" Permission is hereby granted, free of charge, to any person obtaining a
-.\" copy of this software and associated documentation files (the "Software"),
-.\" to deal in the Software without restriction, including without limitation
-.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
-.\" and/or sell copies of the Software, and to permit persons to whom the
-.\" Software is furnished to do so, subject to the following conditions:
-.\"
-.\" The above copyright notice and this permission notice (including the next
-.\" paragraph) shall be included in all copies or substantial portions of the
-.\" Software.
-.\"
-.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-.\" DEALINGS IN THE SOFTWARE.
-.\"
-.TH XkbSetControls __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
-.SH NAME
-XkbSetControls \- Copies changes to the X server based on a modified ctrls
-structure in a local copy of the keyboard description
-.SH SYNOPSIS
-.HP
-.B Bool XkbSetControls
-.BI "(\^Display *" "display" "\^,"
-.BI "unsigned long " "which" "\^,"
-.BI "XkbDescPtr " "xkb" "\^);"
-.if n .ti +5n
-.if t .ti +.5i
-.SH ARGUMENTS
-.TP
-.I \- display
-connection to X server
-.TP
-.I \- which
-mask of controls requested
-.TP
-.I \- xkb
-keyboard description for controls information
-.SH DESCRIPTION
-.LP
-For each bit that is set in the
-.I which
-parameter,
-.I XkbSetControls
-sends the corresponding values from the
-.I xkb->ctrls
-field to the server. Valid values for
-.I which
-are any combination of the masks listed in Table 1 that have "ok" in the
-.I which
-column.
-
-Table 1 shows the actual values for the individual mask bits used to select
-controls for
-modification and to enable and disable the control. Note that the same mask bit
-is used to
-specify general modifications to the parameters used to configure the control
-(which), and to
-enable and disable the control (enabled_ctrls). The anomalies in the table (no
-"ok" in column)
-are for controls that have no configurable attributes; and for controls that are
-not boolean
-controls and therefore cannot be enabled or disabled.
-
-.TS
-c s s s
-l l l l
-l l l l
-l l l l.
-Table 1 Controls Mask Bits
-_
-Mask Bit which or enabled Value
- changed_ctrls _ctrls
-_
-XkbRepeatKeysMask ok ok (1L<<0)
-XkbSlowKeysMask ok ok (1L<<1)
-XkbBounceKeysMask ok ok (1L<<2)
-XkbStickyKeysMask ok ok (1L<<3)
-XkbMouseKeysMask ok ok (1L<<4)
-XkbMouseKeysAccelMask ok ok (1L<<5)
-XkbAccessXKeysMask ok ok (1L<<6)
-XkbAccessXTimeoutMask ok ok (1L<<7)
-XkbAccessXFeedbackMask ok ok (1L<<8)
-XkbAudibleBellMask ok (1L<<9)
-XkbOverlay1Mask ok (1L<<10)
-XkbOverlay2Mask ok (1L<<11)
-XkbIgnoreGroupLockMask ok (1L<<12)
-XkbGroupsWrapMask ok (1L<<27)
-XkbInternalModsMask ok (1L<<28)
-XkbIgnoreLockModsMask ok (1L<<29)
-XkbPerKeyRepeatMask ok (1L<<30)
-XkbControlsEnabledMask ok (1L<<31)
-XkbAccessXOptionsMask ok ok (XkbStickyKeysMask |
- XkbAccessXFeedbackMask)
-XkbAllBooleanCtrlsMask ok (0x00001FFF)
-XkbAllControlsMask ok (0xF8001FFF)
-.TE
-
-If
-.I xkb->ctrls
-is NULL, the server does not support a compatible version of Xkb, or the Xkb
-extension has not been properly initialized,
-.I XkbSetControls
-returns False. Otherwise, it sends the request to the X server and returns True.
-
-Note that changes to attributes of controls in the XkbControlsRec structure are
-apparent only when the associated control is enabled, although the corresponding
-values are still updated in the X server. For example, the
-.I repeat_delay
-and
-.I repeat_interval
-fields are ignored unless the RepeatKeys control is enabled (that is, the X
-server's equivalent of
-.I xkb->ctrls
-has XkbRepeatKeyMask set in
-.I enabled_ctrls).
-It is permissible to modify the attributes of a control in one call to
-.I XkbSetControls
-and enable the control in a subsequent call. See
-.I XkbChangeEnabledControls
-for more information on enabling and disabling controls.
-
-Note that the
-.I enabled_ctrls
-field is itself a control - the EnabledControls control. As such, to set a
-specific configuration of enabled and disabled boolean controls, you must set
-.I enabled_ctrls
-to the appropriate bits to enable only the controls you want and disable all
-others, then specify the XkbControlsEnabledMask in a call to
-.I XkbSetControls.
-
-Because this is somewhat awkward if all you want to do is enable and disable
-controls, and not modify any of their attributes, a convenience function is also
-provided for this purpose,
-.I XkbChangeEnabledControls.
-.SH "RETURN VALUES"
-.TP 15
-True
-The
-.I XkbSetControls
-function returns True when it sends the request to the X server.
-.TP 15
-False
-The
-.I XkbSetControls
-function returns False when
-.I xkb->ctrls
-is NULL, the server does not support a compatible version of Xkb, or the Xkb
-extension has not been properly initialized.
-.SH DIAGNOSTICS
-.TP 15
-.B BadAlloc
-Unable to allocate storage
-.TP 15
-.B BadMatch
-A compatible version of Xkb was not available in the server or an argument has
-correct type and range, but is otherwise invalid
-.SH "SEE ALSO"
-.BR XkbChangeEnabledControls (__libmansuffix__),
-.BR XkbFreeControls (__libmansuffix__)
-
+'\" t
+.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the "Software"),
+.\" to deal in the Software without restriction, including without limitation
+.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
+.\" and/or sell copies of the Software, and to permit persons to whom the
+.\" Software is furnished to do so, subject to the following conditions:
+.\"
+.\" The above copyright notice and this permission notice (including the next
+.\" paragraph) shall be included in all copies or substantial portions of the
+.\" Software.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+.\" DEALINGS IN THE SOFTWARE.
+.\"
+.TH XkbSetControls __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbSetControls \- Copies changes to the X server based on a modified ctrls
+structure in a local copy of the keyboard description
+.SH SYNOPSIS
+.HP
+.B Bool XkbSetControls
+.BI "(\^Display *" "display" "\^,"
+.BI "unsigned long " "which" "\^,"
+.BI "XkbDescPtr " "xkb" "\^);"
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- display
+connection to X server
+.TP
+.I \- which
+mask of controls requested
+.TP
+.I \- xkb
+keyboard description for controls information
+.SH DESCRIPTION
+.LP
+For each bit that is set in the
+.I which
+parameter,
+.I XkbSetControls
+sends the corresponding values from the
+.I xkb->ctrls
+field to the server. Valid values for
+.I which
+are any combination of the masks listed in Table 1 that have "ok" in the
+.I which
+column.
+
+Table 1 shows the actual values for the individual mask bits used to select
+controls for
+modification and to enable and disable the control. Note that the same mask bit
+is used to
+specify general modifications to the parameters used to configure the control
+(which), and to
+enable and disable the control (enabled_ctrls). The anomalies in the table (no
+"ok" in column)
+are for controls that have no configurable attributes; and for controls that are
+not boolean
+controls and therefore cannot be enabled or disabled.
+
+.TS
+c s s s
+l l l l
+l l l l
+l l l l.
+Table 1 Controls Mask Bits
+_
+Mask Bit which or enabled Value
+ changed_ctrls _ctrls
+_
+XkbRepeatKeysMask ok ok (1L<<0)
+XkbSlowKeysMask ok ok (1L<<1)
+XkbBounceKeysMask ok ok (1L<<2)
+XkbStickyKeysMask ok ok (1L<<3)
+XkbMouseKeysMask ok ok (1L<<4)
+XkbMouseKeysAccelMask ok ok (1L<<5)
+XkbAccessXKeysMask ok ok (1L<<6)
+XkbAccessXTimeoutMask ok ok (1L<<7)
+XkbAccessXFeedbackMask ok ok (1L<<8)
+XkbAudibleBellMask ok (1L<<9)
+XkbOverlay1Mask ok (1L<<10)
+XkbOverlay2Mask ok (1L<<11)
+XkbIgnoreGroupLockMask ok (1L<<12)
+XkbGroupsWrapMask ok (1L<<27)
+XkbInternalModsMask ok (1L<<28)
+XkbIgnoreLockModsMask ok (1L<<29)
+XkbPerKeyRepeatMask ok (1L<<30)
+XkbControlsEnabledMask ok (1L<<31)
+XkbAccessXOptionsMask ok ok (XkbStickyKeysMask |
+ XkbAccessXFeedbackMask)
+XkbAllBooleanCtrlsMask ok (0x00001FFF)
+XkbAllControlsMask ok (0xF8001FFF)
+.TE
+
+If
+.I xkb->ctrls
+is NULL, the server does not support a compatible version of Xkb, or the Xkb
+extension has not been properly initialized,
+.I XkbSetControls
+returns False. Otherwise, it sends the request to the X server and returns True.
+
+Note that changes to attributes of controls in the XkbControlsRec structure are
+apparent only when the associated control is enabled, although the corresponding
+values are still updated in the X server. For example, the
+.I repeat_delay
+and
+.I repeat_interval
+fields are ignored unless the RepeatKeys control is enabled (that is, the X
+server's equivalent of
+.I xkb->ctrls
+has XkbRepeatKeyMask set in
+.I enabled_ctrls).
+It is permissible to modify the attributes of a control in one call to
+.I XkbSetControls
+and enable the control in a subsequent call. See
+.I XkbChangeEnabledControls
+for more information on enabling and disabling controls.
+
+Note that the
+.I enabled_ctrls
+field is itself a control - the EnabledControls control. As such, to set a
+specific configuration of enabled and disabled boolean controls, you must set
+.I enabled_ctrls
+to the appropriate bits to enable only the controls you want and disable all
+others, then specify the XkbControlsEnabledMask in a call to
+.I XkbSetControls.
+
+Because this is somewhat awkward if all you want to do is enable and disable
+controls, and not modify any of their attributes, a convenience function is also
+provided for this purpose,
+.I XkbChangeEnabledControls.
+.SH "RETURN VALUES"
+.TP 15
+True
+The
+.I XkbSetControls
+function returns True when it sends the request to the X server.
+.TP 15
+False
+The
+.I XkbSetControls
+function returns False when
+.I xkb->ctrls
+is NULL, the server does not support a compatible version of Xkb, or the Xkb
+extension has not been properly initialized.
+.SH DIAGNOSTICS
+.TP 15
+.B BadAlloc
+Unable to allocate storage
+.TP 15
+.B BadMatch
+A compatible version of Xkb was not available in the server or an argument has
+correct type and range, but is otherwise invalid
+.SH "SEE ALSO"
+.BR XkbChangeEnabledControls (__libmansuffix__),
+.BR XkbFreeControls (__libmansuffix__)
+
diff --git a/libX11/man/xkb/XkbSetDebuggingFlags.man b/libX11/man/xkb/XkbSetDebuggingFlags.man
index 1c2028f44..358ccf83f 100644
--- a/libX11/man/xkb/XkbSetDebuggingFlags.man
+++ b/libX11/man/xkb/XkbSetDebuggingFlags.man
@@ -1,169 +1,169 @@
-'\" t
-.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
-.\"
-.\" Permission is hereby granted, free of charge, to any person obtaining a
-.\" copy of this software and associated documentation files (the "Software"),
-.\" to deal in the Software without restriction, including without limitation
-.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
-.\" and/or sell copies of the Software, and to permit persons to whom the
-.\" Software is furnished to do so, subject to the following conditions:
-.\"
-.\" The above copyright notice and this permission notice (including the next
-.\" paragraph) shall be included in all copies or substantial portions of the
-.\" Software.
-.\"
-.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-.\" DEALINGS IN THE SOFTWARE.
-.\"
-.TH XkbSetDebuggingFlags __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
-.SH NAME
-XkbSetDebuggingFlags \- Change the values of any of the debug controls
-.SH SYNOPSIS
-.HP
-.B Bool XkbSetDebuggingFlags
-.BI "(\^Display *" "display" "\^,"
-.BI "unsigned int " "mask" "\^,"
-.BI "unsigned int " "flags" "\^,"
-.BI "char *" "msg" "\^,"
-.BI "unsigned int " "ctrls_mask" "\^,"
-.BI "unsigned int " "ctrls" "\^,"
-.BI "unsigned int *" "ret_flags" "\^,"
-.BI "unsigned int *" "ret_ctrls" "\^);"
-.if n .ti +5n
-.if t .ti +.5i
-.SH ARGUMENTS
-.TP
-.I \- display
-connection to X server
-.TP
-.I \- mask
-mask selecting debug output flags to change
-.TP
-.I \- flags
-values for debug output flags selected by mask
-.TP
-.I \- msg
-message to print right now
-.TP
-.I \- ctrls_mask
-mask selecting debug controls to change
-.TP
-.I \- ctrls
-values for debug controls selected by ctrls_mask
-.TP
-.I \- ret_flags
-resulting state of all debug output flags
-.TP
-.I \- ret_ctrls
-resulting state of all debug controls
-.SH DESCRIPTION
-.LP
-The debugging aids are intended for use primarily by Xkb implementors and are
-optional in any implementation.
-
-There are two bitmasks that may be used to control debugging. One bitmask
-controls the output of debugging information, and the other controls behavior.
-Both bitmasks are initially all zeros.
-
-To change the values of any of the debug controls, use
-.I XkbSetDebuggingFlags.
-
-.I XkbSetDebuggingFlags
-modifies the debug output flags as specified by
-.I mask
-and
-flags,
-modifies the debug controls flags as specified by
-.I ctrls_mask
-and
-ctrls,
-prints the message
-.I msg,
-and backfills
-.I ret_flags
-and
-.I ret_ctrls
-with the resulting debug output and debug controls flags.
-
-When bits are set in the debug output masks,
-.I mask
-and
-.I flags,
-Xkb prints debug information corresponding to each bit at appropriate points
-during its processing. The device to which the output is written is
-implementation-dependent, but is normally the same device to which X server
-error messages are directed; thus the bits that can be set in
-.I mask
-and
-.I flags
-is implementation-specific. To turn on a debug output selection, set the bit for
-the output in the
-.I mask
-parameter and set the corresponding bit in the
-.I flags
-parameter. To turn off event selection for an event, set the bit for the output
-in the
-.I mask
-parameter and do not set the corresponding bit in the
-.I flags
-parameter.
-
-When bits are set in the debug controls masks,
-.I ctrls_mask
-and
-.I ctrls,
-Xkb modifies its behavior according to each controls bit.
-.I ctrls_mask
-and
-ctrls
-are related in the same way that
-.I mask
-and
-.I flags
-are. The valid controls bits are defined in Table 1.
-
-.TS
-c s s
-l l l.
-Table 1 Debug Control Masks
-_
-Debug Control Mask Value Meaning
-_
-XkbDF_DisableLocks (1 << 0) Disable actions that lock modifiers
-.TE
-
-.I XkbSetDebuggingFlags
-returns True if successful and False otherwise. The only protocol error it may
-generate is BadAlloc, if for some reason it is unable to allocate storage.
-
-.I XkbSetDebuggingFlags
-is intended for developer use and may be disabled in production X servers. If it
-is disabled,
-.I XkbSetDebuggingFlags
-has no effect and does not generate any protocol errors.
-
-The message in
-.I msg
-is written immediately. The device to which it is written is implementation
-dependent but is normally the same device where X server error messages are
-directed.
-.SH "RETURN VALUES"
-.TP 15
-True
-The
-.I XkbSetDebuggingFlags
-function returns True when successful.
-.TP 15
-False
-The
-.I XkbSetDebuggingFlags
-function returns False when not successful.
-.SH DIAGNOSTICS
-.TP 15
-.B BadAlloc
-Unable to allocate storage
+'\" t
+.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the "Software"),
+.\" to deal in the Software without restriction, including without limitation
+.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
+.\" and/or sell copies of the Software, and to permit persons to whom the
+.\" Software is furnished to do so, subject to the following conditions:
+.\"
+.\" The above copyright notice and this permission notice (including the next
+.\" paragraph) shall be included in all copies or substantial portions of the
+.\" Software.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+.\" DEALINGS IN THE SOFTWARE.
+.\"
+.TH XkbSetDebuggingFlags __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbSetDebuggingFlags \- Change the values of any of the debug controls
+.SH SYNOPSIS
+.HP
+.B Bool XkbSetDebuggingFlags
+.BI "(\^Display *" "display" "\^,"
+.BI "unsigned int " "mask" "\^,"
+.BI "unsigned int " "flags" "\^,"
+.BI "char *" "msg" "\^,"
+.BI "unsigned int " "ctrls_mask" "\^,"
+.BI "unsigned int " "ctrls" "\^,"
+.BI "unsigned int *" "ret_flags" "\^,"
+.BI "unsigned int *" "ret_ctrls" "\^);"
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- display
+connection to X server
+.TP
+.I \- mask
+mask selecting debug output flags to change
+.TP
+.I \- flags
+values for debug output flags selected by mask
+.TP
+.I \- msg
+message to print right now
+.TP
+.I \- ctrls_mask
+mask selecting debug controls to change
+.TP
+.I \- ctrls
+values for debug controls selected by ctrls_mask
+.TP
+.I \- ret_flags
+resulting state of all debug output flags
+.TP
+.I \- ret_ctrls
+resulting state of all debug controls
+.SH DESCRIPTION
+.LP
+The debugging aids are intended for use primarily by Xkb implementors and are
+optional in any implementation.
+
+There are two bitmasks that may be used to control debugging. One bitmask
+controls the output of debugging information, and the other controls behavior.
+Both bitmasks are initially all zeros.
+
+To change the values of any of the debug controls, use
+.I XkbSetDebuggingFlags.
+
+.I XkbSetDebuggingFlags
+modifies the debug output flags as specified by
+.I mask
+and
+flags,
+modifies the debug controls flags as specified by
+.I ctrls_mask
+and
+ctrls,
+prints the message
+.I msg,
+and backfills
+.I ret_flags
+and
+.I ret_ctrls
+with the resulting debug output and debug controls flags.
+
+When bits are set in the debug output masks,
+.I mask
+and
+.I flags,
+Xkb prints debug information corresponding to each bit at appropriate points
+during its processing. The device to which the output is written is
+implementation-dependent, but is normally the same device to which X server
+error messages are directed; thus the bits that can be set in
+.I mask
+and
+.I flags
+is implementation-specific. To turn on a debug output selection, set the bit for
+the output in the
+.I mask
+parameter and set the corresponding bit in the
+.I flags
+parameter. To turn off event selection for an event, set the bit for the output
+in the
+.I mask
+parameter and do not set the corresponding bit in the
+.I flags
+parameter.
+
+When bits are set in the debug controls masks,
+.I ctrls_mask
+and
+.I ctrls,
+Xkb modifies its behavior according to each controls bit.
+.I ctrls_mask
+and
+ctrls
+are related in the same way that
+.I mask
+and
+.I flags
+are. The valid controls bits are defined in Table 1.
+
+.TS
+c s s
+l l l.
+Table 1 Debug Control Masks
+_
+Debug Control Mask Value Meaning
+_
+XkbDF_DisableLocks (1 << 0) Disable actions that lock modifiers
+.TE
+
+.I XkbSetDebuggingFlags
+returns True if successful and False otherwise. The only protocol error it may
+generate is BadAlloc, if for some reason it is unable to allocate storage.
+
+.I XkbSetDebuggingFlags
+is intended for developer use and may be disabled in production X servers. If it
+is disabled,
+.I XkbSetDebuggingFlags
+has no effect and does not generate any protocol errors.
+
+The message in
+.I msg
+is written immediately. The device to which it is written is implementation
+dependent but is normally the same device where X server error messages are
+directed.
+.SH "RETURN VALUES"
+.TP 15
+True
+The
+.I XkbSetDebuggingFlags
+function returns True when successful.
+.TP 15
+False
+The
+.I XkbSetDebuggingFlags
+function returns False when not successful.
+.SH DIAGNOSTICS
+.TP 15
+.B BadAlloc
+Unable to allocate storage
diff --git a/libX11/man/xkb/XkbSetDeviceInfo.man b/libX11/man/xkb/XkbSetDeviceInfo.man
index 9577fe10c..1a2b00f8d 100644
--- a/libX11/man/xkb/XkbSetDeviceInfo.man
+++ b/libX11/man/xkb/XkbSetDeviceInfo.man
@@ -1,221 +1,221 @@
-'\" t
-.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
-.\"
-.\" Permission is hereby granted, free of charge, to any person obtaining a
-.\" copy of this software and associated documentation files (the "Software"),
-.\" to deal in the Software without restriction, including without limitation
-.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
-.\" and/or sell copies of the Software, and to permit persons to whom the
-.\" Software is furnished to do so, subject to the following conditions:
-.\"
-.\" The above copyright notice and this permission notice (including the next
-.\" paragraph) shall be included in all copies or substantial portions of the
-.\" Software.
-.\"
-.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-.\" DEALINGS IN THE SOFTWARE.
-.\"
-.TH XkbSetDeviceInfo __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
-.SH NAME
-XkbSetDeviceInfo \- Modify some or all of the characteristics of an X Input
-Extension device
-.SH SYNOPSIS
-.HP
-.B Bool XkbSetDeviceInfo
-.BI "(\^Display *" "dpy" "\^,"
-.BI "unsigned int " "which" "\^,"
-.BI "XkbDeviceInfoPtr " "device_info" "\^);"
-.if n .ti +5n
-.if t .ti +.5i
-.SH ARGUMENTS
-.TP
-.I \- dpy
-connection to X server
-.TP
-.I \- which
-mask indicating characteristics to modify
-.TP
-.I \- device_info
-structure defining the device and modifications
-.SH DESCRIPTION
-.LP
-To change characteristics of an X Input Extension device in the server, first
-modify a local copy of the device structure and then use either
-.I XkbSetDeviceInfo,
-or, to save network traffic, use an XkbDeviceChangesRec structure and call
-.I XkbChangeDeviceInfo
-to download the changes to the server.
-
-.I XkbSetDeviceInfo
-sends a request to the server to modify the characteristics of the device
-specified in the
-.I device_info
-structure. The particular characteristics modified are identified by the bits
-set in
-.I which
-and take their values from the relevant fields in
-device_info (see Table 1). XkbSetDeviceInfo returns True if the request was
-successfully sent to the server. If the X server implementation does not allow
-interaction between the X input extension and the Xkb Extension, the function
-does nothing and returns False.
-.bp
-.nf
- Table 1 XkbDeviceInfoRec Mask Bits
-____________________________________________________________________________________
-Name XkbDeviceInfoRec Value Capability If Set
- Fields Effected
-____________________________________________________________________________________
-XkbXI_KeyboardsMask (1L <<0) Clients can use all
- Xkb requests and events
- with KeyClass devices
- supported by the input
- device extension.
-
-XkbXI_ButtonActionsMask num_btns (1L <<1) Clients can assign key
- btn_acts actions to buttons
- non-KeyClass input
- extension devices.
-
-XkbXI_IndicatorNamesMask leds->names (1L <<2) Clients can assign
- names to indicators on
- non-KeyClass input
- extension devices.
-
-XkbXI_IndicatorMapsMask leds->maps (1L <<3) Clients can assign
- indicator maps to
- indicators on
- non-KeyClass input
- extension devices.
-
-XkbXI_IndicatorStateMask leds->state (1L <<4) Clients can request
- the status of indicators
- on non-KeyClass input
- extension devices.
-
-XkbXI_IndicatorsMask sz_leds (0x1c) XkbXI_IndicatorNamesMask |
- num_leds XkbXI_IndicatorMapsMask |
- leds->* XkbXI_IndicatorStateMask
-
-XkbXI_UnsupportedFeaturesMask unsupported (1L <<15)
-
-XkbXI_AllDeviceFeaturesMask Those selected (0x1e) XkbXI_IndicatorsMask |
- by Value Column XkbSI_ButtonActionsMask
- masks
-
-XkbXI_AllFeaturesMask Those selected (0x1f) XkbSI_AllDeviceFeaturesMask |
- by Value Column XkbSI_KeyboardsMask
- masks
-
-XkbXI_AllDetailsMask Those selected (0x801f) XkbXI_AllFeaturesMask |
- by Value column XkbXI_UnsupportedFeaturesMask
- masks
-.fi
-
-The
-.I which
-parameter specifies which aspects of the device should be changed and is a
-bitmask composed of an inclusive OR or one or more of the following bits:
-XkbXI_ButtonActionsMask, XkbXI_IndicatorNamesMask, XkbXI_IndicatorMapsMask. If
-the features requested to be manipulated in
-.I which
-are valid for the device, but the server does not support assignment of one or
-more of them, that particular portion of the request is ignored.
-
-If the device specified in
-.I device_info->device_spec
-does not contain buttons and a request affecting buttons is made, or the device
-does not contain indicators and a request affecting indicators is made, a
-BadMatch protocol error results.
-
-If the XkbXI_ButtonActionsMask bit is set in the
-.I supported
-mask returned by
-.I XkbGetDeviceInfo,
-the Xkb extension allows applications to assign key actions to buttons on input
-extension devices other than the core keyboard device. If the
-XkbXI_ButtonActionsMask is set in
-.I which,
-the actions for all buttons specified in
-.I device_info
-are set to the XkbActions specified in
-.I device_info->btn_acts.
-If the number of buttons requested to be updated is not valid for the device,
-.I XkbSetDeviceInfo
-returns False and a BadValue protocol error results.
-
-If the XkbXI_IndicatorMaps and / or XkbXI_IndicatorNamesMask bit is set in the
-.I supported
-mask returned by
-.I XkbGetDeviceInfo,
-the Xkb extension allows applications to assign maps and / or names to the
-indicators of nonkeyboard extension devices. If supported, maps and / or names
-can be assigned to all extension device indicators, whether they are part of a
-keyboard feedback or part of an indicator feedback.
-
-If the XkbXI_IndicatorMapsMask and / or XkbXI_IndicatorNamesMask flag is set in
-.I which,
-the indicator maps and / or names for all
-.I device_info->num_leds
-indicator devices specified in
-.I device_info->leds
-are set to the maps and / or names specified in
-.I device_info->leds. device_info->leds->led_class
-and
-.I led_id
-specify the input extension class and device ID for each indicator device to
-modify; if they have invalid values, a BadValue protocol error results and
-.I XkbSetDeviceInfo
-returns False. If they have legal values but do not specify a keyboard or
-indicator class feedback for the device in question, a BadMatch error results.
-If any of the values in
-.I device_info->leds->names
-are not a valid Atom or None, a BadAtom protocol error results.
-.SH "RETURN VALUES"
-.TP 15
-True
-The
-.I XkbSetDeviceInfo
-function returns True if the request was successfully sent to the server.
-.TP 15
-False
-The
-.I XkbSetDeviceInfo
-function returns False if the X server implementation does not allow interaction
-between the X input extension and the Xkb Extension.
-.SH STRUCTURES
-.LP
-Changes to an Xkb extension device may be tracked by listening to
-XkbDeviceExtensionNotify events and accumulating the changes in an
-XkbDeviceChangesRec structure. The changes noted in the structure may then be
-used in subsequent operations to update either a server configuration or a local
-copy of an Xkb extension device configuration. The changes structure is defined
-as follows:
-.nf
-
-typedef struct _XkbDeviceChanges {
- unsigned int changed; /\(** bits indicating what has changed */
- unsigned short first_btn; /\(** number of first button which changed, if any */
- unsigned short num_btns; /\(** number of buttons that have changed */
- XkbDeviceLedChangesRec leds;
-} XkbDeviceChangesRec,*XkbDeviceChangesPtr;
-
-.fi
-.SH DIAGNOSTICS
-.TP 15
-.B BadAtom
-A name is neither a valid Atom or None
-.TP 15
-.B BadMatch
-A compatible version of Xkb was not available in the server or an argument has
-correct type and range, but is otherwise invalid
-.TP 15
-.B BadValue
-An argument is out of range
-.SH "SEE ALSO"
-.BR XkbChangeDeviceInfo (__libmansuffix__),
-.BR XkbGetDeviceInfo (__libmansuffix__)
+'\" t
+.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the "Software"),
+.\" to deal in the Software without restriction, including without limitation
+.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
+.\" and/or sell copies of the Software, and to permit persons to whom the
+.\" Software is furnished to do so, subject to the following conditions:
+.\"
+.\" The above copyright notice and this permission notice (including the next
+.\" paragraph) shall be included in all copies or substantial portions of the
+.\" Software.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+.\" DEALINGS IN THE SOFTWARE.
+.\"
+.TH XkbSetDeviceInfo __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbSetDeviceInfo \- Modify some or all of the characteristics of an X Input
+Extension device
+.SH SYNOPSIS
+.HP
+.B Bool XkbSetDeviceInfo
+.BI "(\^Display *" "dpy" "\^,"
+.BI "unsigned int " "which" "\^,"
+.BI "XkbDeviceInfoPtr " "device_info" "\^);"
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- dpy
+connection to X server
+.TP
+.I \- which
+mask indicating characteristics to modify
+.TP
+.I \- device_info
+structure defining the device and modifications
+.SH DESCRIPTION
+.LP
+To change characteristics of an X Input Extension device in the server, first
+modify a local copy of the device structure and then use either
+.I XkbSetDeviceInfo,
+or, to save network traffic, use an XkbDeviceChangesRec structure and call
+.I XkbChangeDeviceInfo
+to download the changes to the server.
+
+.I XkbSetDeviceInfo
+sends a request to the server to modify the characteristics of the device
+specified in the
+.I device_info
+structure. The particular characteristics modified are identified by the bits
+set in
+.I which
+and take their values from the relevant fields in
+device_info (see Table 1). XkbSetDeviceInfo returns True if the request was
+successfully sent to the server. If the X server implementation does not allow
+interaction between the X input extension and the Xkb Extension, the function
+does nothing and returns False.
+.bp
+.nf
+ Table 1 XkbDeviceInfoRec Mask Bits
+____________________________________________________________________________________
+Name XkbDeviceInfoRec Value Capability If Set
+ Fields Effected
+____________________________________________________________________________________
+XkbXI_KeyboardsMask (1L <<0) Clients can use all
+ Xkb requests and events
+ with KeyClass devices
+ supported by the input
+ device extension.
+
+XkbXI_ButtonActionsMask num_btns (1L <<1) Clients can assign key
+ btn_acts actions to buttons
+ non-KeyClass input
+ extension devices.
+
+XkbXI_IndicatorNamesMask leds->names (1L <<2) Clients can assign
+ names to indicators on
+ non-KeyClass input
+ extension devices.
+
+XkbXI_IndicatorMapsMask leds->maps (1L <<3) Clients can assign
+ indicator maps to
+ indicators on
+ non-KeyClass input
+ extension devices.
+
+XkbXI_IndicatorStateMask leds->state (1L <<4) Clients can request
+ the status of indicators
+ on non-KeyClass input
+ extension devices.
+
+XkbXI_IndicatorsMask sz_leds (0x1c) XkbXI_IndicatorNamesMask |
+ num_leds XkbXI_IndicatorMapsMask |
+ leds->* XkbXI_IndicatorStateMask
+
+XkbXI_UnsupportedFeaturesMask unsupported (1L <<15)
+
+XkbXI_AllDeviceFeaturesMask Those selected (0x1e) XkbXI_IndicatorsMask |
+ by Value Column XkbSI_ButtonActionsMask
+ masks
+
+XkbXI_AllFeaturesMask Those selected (0x1f) XkbSI_AllDeviceFeaturesMask |
+ by Value Column XkbSI_KeyboardsMask
+ masks
+
+XkbXI_AllDetailsMask Those selected (0x801f) XkbXI_AllFeaturesMask |
+ by Value column XkbXI_UnsupportedFeaturesMask
+ masks
+.fi
+
+The
+.I which
+parameter specifies which aspects of the device should be changed and is a
+bitmask composed of an inclusive OR or one or more of the following bits:
+XkbXI_ButtonActionsMask, XkbXI_IndicatorNamesMask, XkbXI_IndicatorMapsMask. If
+the features requested to be manipulated in
+.I which
+are valid for the device, but the server does not support assignment of one or
+more of them, that particular portion of the request is ignored.
+
+If the device specified in
+.I device_info->device_spec
+does not contain buttons and a request affecting buttons is made, or the device
+does not contain indicators and a request affecting indicators is made, a
+BadMatch protocol error results.
+
+If the XkbXI_ButtonActionsMask bit is set in the
+.I supported
+mask returned by
+.I XkbGetDeviceInfo,
+the Xkb extension allows applications to assign key actions to buttons on input
+extension devices other than the core keyboard device. If the
+XkbXI_ButtonActionsMask is set in
+.I which,
+the actions for all buttons specified in
+.I device_info
+are set to the XkbActions specified in
+.I device_info->btn_acts.
+If the number of buttons requested to be updated is not valid for the device,
+.I XkbSetDeviceInfo
+returns False and a BadValue protocol error results.
+
+If the XkbXI_IndicatorMaps and / or XkbXI_IndicatorNamesMask bit is set in the
+.I supported
+mask returned by
+.I XkbGetDeviceInfo,
+the Xkb extension allows applications to assign maps and / or names to the
+indicators of nonkeyboard extension devices. If supported, maps and / or names
+can be assigned to all extension device indicators, whether they are part of a
+keyboard feedback or part of an indicator feedback.
+
+If the XkbXI_IndicatorMapsMask and / or XkbXI_IndicatorNamesMask flag is set in
+.I which,
+the indicator maps and / or names for all
+.I device_info->num_leds
+indicator devices specified in
+.I device_info->leds
+are set to the maps and / or names specified in
+.I device_info->leds. device_info->leds->led_class
+and
+.I led_id
+specify the input extension class and device ID for each indicator device to
+modify; if they have invalid values, a BadValue protocol error results and
+.I XkbSetDeviceInfo
+returns False. If they have legal values but do not specify a keyboard or
+indicator class feedback for the device in question, a BadMatch error results.
+If any of the values in
+.I device_info->leds->names
+are not a valid Atom or None, a BadAtom protocol error results.
+.SH "RETURN VALUES"
+.TP 15
+True
+The
+.I XkbSetDeviceInfo
+function returns True if the request was successfully sent to the server.
+.TP 15
+False
+The
+.I XkbSetDeviceInfo
+function returns False if the X server implementation does not allow interaction
+between the X input extension and the Xkb Extension.
+.SH STRUCTURES
+.LP
+Changes to an Xkb extension device may be tracked by listening to
+XkbDeviceExtensionNotify events and accumulating the changes in an
+XkbDeviceChangesRec structure. The changes noted in the structure may then be
+used in subsequent operations to update either a server configuration or a local
+copy of an Xkb extension device configuration. The changes structure is defined
+as follows:
+.nf
+
+typedef struct _XkbDeviceChanges {
+ unsigned int changed; /\(** bits indicating what has changed */
+ unsigned short first_btn; /\(** number of first button which changed, if any */
+ unsigned short num_btns; /\(** number of buttons that have changed */
+ XkbDeviceLedChangesRec leds;
+} XkbDeviceChangesRec,*XkbDeviceChangesPtr;
+
+.fi
+.SH DIAGNOSTICS
+.TP 15
+.B BadAtom
+A name is neither a valid Atom or None
+.TP 15
+.B BadMatch
+A compatible version of Xkb was not available in the server or an argument has
+correct type and range, but is otherwise invalid
+.TP 15
+.B BadValue
+An argument is out of range
+.SH "SEE ALSO"
+.BR XkbChangeDeviceInfo (__libmansuffix__),
+.BR XkbGetDeviceInfo (__libmansuffix__)
diff --git a/libX11/man/xkb/XkbSetIgnoreLockMods.man b/libX11/man/xkb/XkbSetIgnoreLockMods.man
index f006d1618..e3dd33db4 100644
--- a/libX11/man/xkb/XkbSetIgnoreLockMods.man
+++ b/libX11/man/xkb/XkbSetIgnoreLockMods.man
@@ -1,194 +1,194 @@
-'\" t
-.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
-.\"
-.\" Permission is hereby granted, free of charge, to any person obtaining a
-.\" copy of this software and associated documentation files (the "Software"),
-.\" to deal in the Software without restriction, including without limitation
-.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
-.\" and/or sell copies of the Software, and to permit persons to whom the
-.\" Software is furnished to do so, subject to the following conditions:
-.\"
-.\" The above copyright notice and this permission notice (including the next
-.\" paragraph) shall be included in all copies or substantial portions of the
-.\" Software.
-.\"
-.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-.\" DEALINGS IN THE SOFTWARE.
-.\"
-.TH XkbSetIgnoreLockMods __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
-.SH NAME
-XkbSetIgnoreLockMods \- Sets the modifiers that, if locked, are not to be
-reported in matching events to passive grabs
-.SH SYNOPSIS
-.HP
-.B Bool XkbSetIgnoreLockMods
-.BI "(\^Display *" "display" "\^,"
-.BI "unsigned int " "device_spec" "\^,"
-.BI "unsigned int " "affect_real" "\^,"
-.BI "unsigned int " "real_values" "\^,"
-.BI "unsigned int " "affect_virtual" "\^,"
-.BI "unsigned int " "virtual_values" "\^);"
-.if n .ti +5n
-.if t .ti +.5i
-.SH ARGUMENTS
-.TP
-.I \- display
-connection to the X server
-.TP
-.I \- device_spec
-device ID, or XkbUseCoreKbd
-.TP
-.I \- affect_real
-mask of real modifiers affected by this call
-.TP
-.I \- real_values
-values for affected real modifiers (1=>set, 0=>unset)
-.TP
-.I \- affect_virtual
-mask of virtual modifiers affected by this call
-.TP
-.I \- virtual_values
-values for affected virtual modifiers (1=>set, 0=>unset)
-.SH DESCRIPTION
-.LP
-The core protocol does not provide a way to exclude specific modifiers from grab
-calculations, with the result that locking modifiers sometimes have
-unanticipated side effects.
-
-The IgnoreLockMods control specifies modifiers that should be excluded from grab
-calculations. These modifiers are also not reported in any core events except
-KeyPress and KeyRelease events that do not activate a passive grab and that do
-not occur while a grab is active.
-
-Manipulate the IgnoreLockMods control via the
-.I ignore_lock
-field in the XkbControlsRec structure, then use
-.I XkbSetControls
-and
-.I XkbGetControls
-to query and change this control. Alternatively, use
-.I XkbSetIgnoreLockMods.
-
-.I XkbSetIgnoreLockMods
-sends a request to the server to change the server's IgnoreLockMods control.
-.I affect_real
-and
-.I real_values
-are masks of real modifier bits indicating which real modifiers are to be added
-and removed from the server's IgnoreLockMods control. Modifiers selected by both
-.I affect_real
-and
-.I real_values
-are added to the server's IgnoreLockMods control; those selected by
-.I affect_real
-but not by
-.I real_values
-are removed from the server's IgnoreLockMods control. Valid values for
-.I affect_real
-and
-.I real_values
-consist of any combination of the eight core modifier bits: ShiftMask, LockMask,
-ControlMask, Mod1Mask - Mod5Mask.
-.I affect_virtual
-and
-.I virtual_values
-are masks of virtual modifier bits indicating which virtual modifiers are to be
-added and removed from the server's IgnoreLockMods control. Modifiers selected
-by both
-.I affect_virtual
-and
-.I virtual_values
-are added to the server's IgnoreLockMods control; those selected by
-.I affect_virtual
-but not by
-.I virtual_values
-are removed from the server's IgnoreLockMods control. See below for a discussion
-of virtual modifier masks to use in
-.I affect_virtual
-and
-.I virtual_values. XkbSetIgnoreLockMods
-does not wait for a reply from the server. It returns True if the request was
-sent, and False otherwise.
-
-Virtual modifiers are named by converting their string name to an X Atom and
-storing the Atom in the
-.I names.vmods
-array in an XkbDescRec structure. The position of a name Atom in the
-.I names.vmods
-array defines the bit position used to represent the virtual modifier and also
-the index used when accessing virtual modifier information in arrays: the name
-in the i-th (0 relative) entry of
-.I names.vmods
-is the i-th virtual modifier, represented by the mask (1<<i). Throughout Xkb,
-various functions have a parameter that is a mask representing virtual modifier
-choices. In each case, the i-th bit (0 relative) of the mask represents the i-th
-virtual modifier.
-
-To set the name of a virtual modifier, use
-.I XkbSetNames,
-using XkbVirtualModNamesMask in
-.I which
-and the name in the
-.I xkb
-argument; to retrieve indicator names, use
-.I XkbGetNames.
-.SH STRUCTURES
-.LP
-The complete description of an Xkb keyboard is given by an XkbDescRec. The
-component structures in the XkbDescRec represent the major Xkb components.
-.nf
-
-typedef struct {
- struct _XDisplay * display; /\(** connection to X server */
- unsigned short flags; /\(** private to Xkb, do not modify */
- unsigned short device_spec; /\(** device of interest */
- KeyCode min_key_code; /\(** minimum keycode for device */
- KeyCode max_key_code; /\(** maximum keycode for device */
- XkbControlsPtr ctrls; /\(** controls */
- XkbServerMapPtr server; /\(** server keymap */
- XkbClientMapPtr map; /\(** client keymap */
- XkbIndicatorPtr indicators; /\(** indicator map */
- XkbNamesPtr names; /\(** names for all components */
- XkbCompatMapPtr compat; /\(** compatibility map */
- XkbGeometryPtr geom; /\(** physical geometry of keyboard */
-} XkbDescRec, *XkbDescPtr;
-
-.fi
-The display field points to an X display structure. The flags field is private
-to the library: modifying flags may yield unpredictable results. The device_spec
-field specifies the device identifier of the keyboard input device, or
-XkbUseCoreKeyboard, which specifies the core keyboard device. The min_key_code
-and max_key_code fields specify the least and greatest keycode that can be
-returned by the keyboard.
-
-Each structure component has a corresponding mask bit that is used in function
-calls to indicate that the structure should be manipulated in some manner, such
-as allocating it or freeing it. These masks and their relationships to the
-fields in the XkbDescRec are shown in Table 1.
-
-.TS
-c s s
-l l l
-l l l.
-Table 1 Mask Bits for XkbDescRec
-_
-Mask Bit XkbDescRec Field Value
-_
-XkbControlsMask ctrls (1L<<0)
-XkbServerMapMask server (1L<<1)
-XkbIClientMapMask map (1L<<2)
-XkbIndicatorMapMask indicators (1L<<3)
-XkbNamesMask names (1L<<4)
-XkbCompatMapMask compat (1L<<5)
-XkbGeometryMask geom (1L<<6)
-XkbAllComponentsMask All Fields (0x7f)
-.SH "SEE ALSO"
-.BR XkbGetControls (__libmansuffix__),
-.BR XkbGetNames (__libmansuffix__),
-.BR XkbSetControls (__libmansuffix__),
-.BR XkbSetNames (__libmansuffix__)
+'\" t
+.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the "Software"),
+.\" to deal in the Software without restriction, including without limitation
+.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
+.\" and/or sell copies of the Software, and to permit persons to whom the
+.\" Software is furnished to do so, subject to the following conditions:
+.\"
+.\" The above copyright notice and this permission notice (including the next
+.\" paragraph) shall be included in all copies or substantial portions of the
+.\" Software.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+.\" DEALINGS IN THE SOFTWARE.
+.\"
+.TH XkbSetIgnoreLockMods __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbSetIgnoreLockMods \- Sets the modifiers that, if locked, are not to be
+reported in matching events to passive grabs
+.SH SYNOPSIS
+.HP
+.B Bool XkbSetIgnoreLockMods
+.BI "(\^Display *" "display" "\^,"
+.BI "unsigned int " "device_spec" "\^,"
+.BI "unsigned int " "affect_real" "\^,"
+.BI "unsigned int " "real_values" "\^,"
+.BI "unsigned int " "affect_virtual" "\^,"
+.BI "unsigned int " "virtual_values" "\^);"
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- display
+connection to the X server
+.TP
+.I \- device_spec
+device ID, or XkbUseCoreKbd
+.TP
+.I \- affect_real
+mask of real modifiers affected by this call
+.TP
+.I \- real_values
+values for affected real modifiers (1=>set, 0=>unset)
+.TP
+.I \- affect_virtual
+mask of virtual modifiers affected by this call
+.TP
+.I \- virtual_values
+values for affected virtual modifiers (1=>set, 0=>unset)
+.SH DESCRIPTION
+.LP
+The core protocol does not provide a way to exclude specific modifiers from grab
+calculations, with the result that locking modifiers sometimes have
+unanticipated side effects.
+
+The IgnoreLockMods control specifies modifiers that should be excluded from grab
+calculations. These modifiers are also not reported in any core events except
+KeyPress and KeyRelease events that do not activate a passive grab and that do
+not occur while a grab is active.
+
+Manipulate the IgnoreLockMods control via the
+.I ignore_lock
+field in the XkbControlsRec structure, then use
+.I XkbSetControls
+and
+.I XkbGetControls
+to query and change this control. Alternatively, use
+.I XkbSetIgnoreLockMods.
+
+.I XkbSetIgnoreLockMods
+sends a request to the server to change the server's IgnoreLockMods control.
+.I affect_real
+and
+.I real_values
+are masks of real modifier bits indicating which real modifiers are to be added
+and removed from the server's IgnoreLockMods control. Modifiers selected by both
+.I affect_real
+and
+.I real_values
+are added to the server's IgnoreLockMods control; those selected by
+.I affect_real
+but not by
+.I real_values
+are removed from the server's IgnoreLockMods control. Valid values for
+.I affect_real
+and
+.I real_values
+consist of any combination of the eight core modifier bits: ShiftMask, LockMask,
+ControlMask, Mod1Mask - Mod5Mask.
+.I affect_virtual
+and
+.I virtual_values
+are masks of virtual modifier bits indicating which virtual modifiers are to be
+added and removed from the server's IgnoreLockMods control. Modifiers selected
+by both
+.I affect_virtual
+and
+.I virtual_values
+are added to the server's IgnoreLockMods control; those selected by
+.I affect_virtual
+but not by
+.I virtual_values
+are removed from the server's IgnoreLockMods control. See below for a discussion
+of virtual modifier masks to use in
+.I affect_virtual
+and
+.I virtual_values. XkbSetIgnoreLockMods
+does not wait for a reply from the server. It returns True if the request was
+sent, and False otherwise.
+
+Virtual modifiers are named by converting their string name to an X Atom and
+storing the Atom in the
+.I names.vmods
+array in an XkbDescRec structure. The position of a name Atom in the
+.I names.vmods
+array defines the bit position used to represent the virtual modifier and also
+the index used when accessing virtual modifier information in arrays: the name
+in the i-th (0 relative) entry of
+.I names.vmods
+is the i-th virtual modifier, represented by the mask (1<<i). Throughout Xkb,
+various functions have a parameter that is a mask representing virtual modifier
+choices. In each case, the i-th bit (0 relative) of the mask represents the i-th
+virtual modifier.
+
+To set the name of a virtual modifier, use
+.I XkbSetNames,
+using XkbVirtualModNamesMask in
+.I which
+and the name in the
+.I xkb
+argument; to retrieve indicator names, use
+.I XkbGetNames.
+.SH STRUCTURES
+.LP
+The complete description of an Xkb keyboard is given by an XkbDescRec. The
+component structures in the XkbDescRec represent the major Xkb components.
+.nf
+
+typedef struct {
+ struct _XDisplay * display; /\(** connection to X server */
+ unsigned short flags; /\(** private to Xkb, do not modify */
+ unsigned short device_spec; /\(** device of interest */
+ KeyCode min_key_code; /\(** minimum keycode for device */
+ KeyCode max_key_code; /\(** maximum keycode for device */
+ XkbControlsPtr ctrls; /\(** controls */
+ XkbServerMapPtr server; /\(** server keymap */
+ XkbClientMapPtr map; /\(** client keymap */
+ XkbIndicatorPtr indicators; /\(** indicator map */
+ XkbNamesPtr names; /\(** names for all components */
+ XkbCompatMapPtr compat; /\(** compatibility map */
+ XkbGeometryPtr geom; /\(** physical geometry of keyboard */
+} XkbDescRec, *XkbDescPtr;
+
+.fi
+The display field points to an X display structure. The flags field is private
+to the library: modifying flags may yield unpredictable results. The device_spec
+field specifies the device identifier of the keyboard input device, or
+XkbUseCoreKeyboard, which specifies the core keyboard device. The min_key_code
+and max_key_code fields specify the least and greatest keycode that can be
+returned by the keyboard.
+
+Each structure component has a corresponding mask bit that is used in function
+calls to indicate that the structure should be manipulated in some manner, such
+as allocating it or freeing it. These masks and their relationships to the
+fields in the XkbDescRec are shown in Table 1.
+
+.TS
+c s s
+l l l
+l l l.
+Table 1 Mask Bits for XkbDescRec
+_
+Mask Bit XkbDescRec Field Value
+_
+XkbControlsMask ctrls (1L<<0)
+XkbServerMapMask server (1L<<1)
+XkbIClientMapMask map (1L<<2)
+XkbIndicatorMapMask indicators (1L<<3)
+XkbNamesMask names (1L<<4)
+XkbCompatMapMask compat (1L<<5)
+XkbGeometryMask geom (1L<<6)
+XkbAllComponentsMask All Fields (0x7f)
+.SH "SEE ALSO"
+.BR XkbGetControls (__libmansuffix__),
+.BR XkbGetNames (__libmansuffix__),
+.BR XkbSetControls (__libmansuffix__),
+.BR XkbSetNames (__libmansuffix__)
diff --git a/libX11/man/xkb/XkbSetIndicatorMap.man b/libX11/man/xkb/XkbSetIndicatorMap.man
index a8255cc19..5d5a48b2c 100644
--- a/libX11/man/xkb/XkbSetIndicatorMap.man
+++ b/libX11/man/xkb/XkbSetIndicatorMap.man
@@ -1,180 +1,180 @@
-'\" t
-.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
-.\"
-.\" Permission is hereby granted, free of charge, to any person obtaining a
-.\" copy of this software and associated documentation files (the "Software"),
-.\" to deal in the Software without restriction, including without limitation
-.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
-.\" and/or sell copies of the Software, and to permit persons to whom the
-.\" Software is furnished to do so, subject to the following conditions:
-.\"
-.\" The above copyright notice and this permission notice (including the next
-.\" paragraph) shall be included in all copies or substantial portions of the
-.\" Software.
-.\"
-.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-.\" DEALINGS IN THE SOFTWARE.
-.\"
-.TH XkbSetIndicatorMap __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
-.SH NAME
-XkbSetIndicatorMap \- Downloads the changes to the server based on modifications
-to a local copy of the keyboard description which will update the maps for one
-or more indicators
-.SH SYNOPSIS
-.HP
-.B Bool XkbSetIndicatorMap
-.BI "(\^Display *" "dpy" "\^,"
-.BI "unsigned int " "which" "\^,"
-.BI "XkbDescPtr " "desc" "\^);"
-.if n .ti +5n
-.if t .ti +.5i
-.SH ARGUMENTS
-.TP
-.I \- dpy
-connection to the X server
-.TP
-.I \- which
-mask of indicators to change
-.TP
-.I \- desc
-keyboard description from which the maps are taken
-.SH DESCRIPTION
-.LP
-This section discusses the effects of explicitly changing indicators depending
-upon different settings in the indicator map. See Tables 1 and Table 2 for
-information on the effects of the indicator map fields when explicit changes are
-made.
-
-.TS
-c s s
-c s s
-l l l
-l l lw(3i).
-Table 1 XkbIndicatorMapRec which_groups and groups,
-Indicator Drives Keyboard
-_
-which_groups New State Effect on Keyboard Group State
-_
-XkbIM_UseNone On or Off No effect
-XkbIM_UseBase On or Off No effect
-XkbIM_UseLatched On T{
-The groups field is treated as a group mask. The keyboard group latch is changed
-to the lowest numbered
-group specified in groups; if groups is empty, the keyboard group latch is
-changed to zero.
-T}
-XkbIM_UseLatched Off T{
-The groups field is treated as a group mask. If the indicator is explicitly
-extinguished, keyboard group
-latch is changed to the lowest numbered group not specified in groups; if groups
-is zero, the keyboard
-group latch is set to the index of the highest legal keyboard group.
-T}
-XkbIM_UseLocked or
-.br
-XkbIM_UseEffective On T{
-If the groups mask is empty, group is not changed; otherwise, the locked
-keyboard group is changed to the
-lowest numbered group specified in groups.
-T}
-XkbIM_UseLocked or
-.br
-XkbIM_UseEffective Off T{
-Locked keyboard group is changed to the lowest numbered group that is not
-specified in the groups mask, or
-to Group1 if the groups mask contains all keyboard groups.
-T}
-
-.TE
-
-.TS
-c s s
-c s s
-l l l
-l l lw(3i).
-Table 2 XkbIndicatorMapRec which_mods and mods,
-Indicator Drives Keyboard
-_
-which_mods New State Effect on Keyboard Modifiers
-_
-XkbIM_UseNone or XkbIM_UseBase On or Off No Effect
-XkbIM_UseLatched On T{
-Any modifiers specified in the mask field of mods are added to the latched
-modifiers.
-T}
-XkbIM_UseLatched Off T{
-Any modifiers specified in the mask field of mods are removed from the latched
-modifiers.
-T}
-XkbIM_UseLocked, XkbIM_UseCompat, or XkbIM_UseEffective On T{
-Any modifiers specified in the mask field of mods are added to the locked
-modifiers.
-T}
-XkbIM_UseLocked Off T{
-Any modifiers specified in the mask field of mods are removed from the locked
-modifiers.
-T}
-XkbIM_UseCompat or XkbIM_UseEffective Off T{
-Any modifiers specified in the mask field of mods are removed from both the
-locked and latched modifiers.
-T}
-.TE
-
-If XkbIM_LEDDrivesKB is set and XkbIM_NoExplicit is not, and if you call a
-function that updates the server's image of the indicator map (such as
-.I XkbSetIndicatorMap
-or
-.I XkbSetNamedIndicator),
- Xkb changes the keyboard state and controls to reflect the other fields of the
-indicator map. If you attempt to explicitly change the value of an indicator for
-which XkbIM_LEDDrivesKB is absent or for which XkbIM_NoExplicit is present,
-keyboard state or controls are unaffected.
-
-If neither XkbIM_NoAutomatic nor XkbIM_NoExplicit is set in an indicator map,
-Xkb honors any request to change the state of the indicator, but the new state
-might be immediately superseded by automatic changes to the indicator state if
-the keyboard state or controls change.
-
-The effects of changing an indicator that drives the keyboard are cumulative; it
-is possible for a single change to affect keyboard group, modifiers, and
-controls simultaneously.
-
-If you change an indicator for which both the XkbIM_LEDDrivesKB and
-XkbIM_NoAutomatic flags are specified, Xkb applies the keyboard changes
-specified in the other indicator map fields and changes the indicator to reflect
-the state that was explicitly requested. The indicator remains in the new state
-until it is explicitly changed again.
-
-If the XkbIM_NoAutomatic flag is not set and XkbIM_LEDDrivesKB is set, Xkb
-applies the changes specified in the other indicator map fields and sets the
-state of the indicator to the values specified by the indicator map. Note that
-it is possible in this case for the indicator to end up in a different state
-than the one that was explicitly requested. For example, Xkb does not extinguish
-an indicator with
-.I which_mods
-of XkbIM_UseBase and
-.I mods
-of Shift if, at the time Xkb processes the request to extinguish the indicator,
-one of the Shift keys is physically depressed.
-
-If you explicitly light an indicator for which XkbIM_LEDDrivesKB is set, Xkb
-enables all of the boolean controls specified in the
-.I ctrls
-field of its indicator map. Explicitly extinguishing such an indicator causes
-Xkb to disable all of the boolean controls specified in
-.I ctrls.
-
-For each bit set in the
-.I which
-parameter,
-.I XkbSetIndicatorMap
-sends the corresponding indicator map from the
-.I desc
-parameter to the server.
-.SH "SEE ALSO"
-.BR XkbSetNamedIndicator (__libmansuffix__)
+'\" t
+.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the "Software"),
+.\" to deal in the Software without restriction, including without limitation
+.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
+.\" and/or sell copies of the Software, and to permit persons to whom the
+.\" Software is furnished to do so, subject to the following conditions:
+.\"
+.\" The above copyright notice and this permission notice (including the next
+.\" paragraph) shall be included in all copies or substantial portions of the
+.\" Software.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+.\" DEALINGS IN THE SOFTWARE.
+.\"
+.TH XkbSetIndicatorMap __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbSetIndicatorMap \- Downloads the changes to the server based on modifications
+to a local copy of the keyboard description which will update the maps for one
+or more indicators
+.SH SYNOPSIS
+.HP
+.B Bool XkbSetIndicatorMap
+.BI "(\^Display *" "dpy" "\^,"
+.BI "unsigned int " "which" "\^,"
+.BI "XkbDescPtr " "desc" "\^);"
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- dpy
+connection to the X server
+.TP
+.I \- which
+mask of indicators to change
+.TP
+.I \- desc
+keyboard description from which the maps are taken
+.SH DESCRIPTION
+.LP
+This section discusses the effects of explicitly changing indicators depending
+upon different settings in the indicator map. See Tables 1 and Table 2 for
+information on the effects of the indicator map fields when explicit changes are
+made.
+
+.TS
+c s s
+c s s
+l l l
+l l lw(3i).
+Table 1 XkbIndicatorMapRec which_groups and groups,
+Indicator Drives Keyboard
+_
+which_groups New State Effect on Keyboard Group State
+_
+XkbIM_UseNone On or Off No effect
+XkbIM_UseBase On or Off No effect
+XkbIM_UseLatched On T{
+The groups field is treated as a group mask. The keyboard group latch is changed
+to the lowest numbered
+group specified in groups; if groups is empty, the keyboard group latch is
+changed to zero.
+T}
+XkbIM_UseLatched Off T{
+The groups field is treated as a group mask. If the indicator is explicitly
+extinguished, keyboard group
+latch is changed to the lowest numbered group not specified in groups; if groups
+is zero, the keyboard
+group latch is set to the index of the highest legal keyboard group.
+T}
+XkbIM_UseLocked or
+.br
+XkbIM_UseEffective On T{
+If the groups mask is empty, group is not changed; otherwise, the locked
+keyboard group is changed to the
+lowest numbered group specified in groups.
+T}
+XkbIM_UseLocked or
+.br
+XkbIM_UseEffective Off T{
+Locked keyboard group is changed to the lowest numbered group that is not
+specified in the groups mask, or
+to Group1 if the groups mask contains all keyboard groups.
+T}
+
+.TE
+
+.TS
+c s s
+c s s
+l l l
+l l lw(3i).
+Table 2 XkbIndicatorMapRec which_mods and mods,
+Indicator Drives Keyboard
+_
+which_mods New State Effect on Keyboard Modifiers
+_
+XkbIM_UseNone or XkbIM_UseBase On or Off No Effect
+XkbIM_UseLatched On T{
+Any modifiers specified in the mask field of mods are added to the latched
+modifiers.
+T}
+XkbIM_UseLatched Off T{
+Any modifiers specified in the mask field of mods are removed from the latched
+modifiers.
+T}
+XkbIM_UseLocked, XkbIM_UseCompat, or XkbIM_UseEffective On T{
+Any modifiers specified in the mask field of mods are added to the locked
+modifiers.
+T}
+XkbIM_UseLocked Off T{
+Any modifiers specified in the mask field of mods are removed from the locked
+modifiers.
+T}
+XkbIM_UseCompat or XkbIM_UseEffective Off T{
+Any modifiers specified in the mask field of mods are removed from both the
+locked and latched modifiers.
+T}
+.TE
+
+If XkbIM_LEDDrivesKB is set and XkbIM_NoExplicit is not, and if you call a
+function that updates the server's image of the indicator map (such as
+.I XkbSetIndicatorMap
+or
+.I XkbSetNamedIndicator),
+ Xkb changes the keyboard state and controls to reflect the other fields of the
+indicator map. If you attempt to explicitly change the value of an indicator for
+which XkbIM_LEDDrivesKB is absent or for which XkbIM_NoExplicit is present,
+keyboard state or controls are unaffected.
+
+If neither XkbIM_NoAutomatic nor XkbIM_NoExplicit is set in an indicator map,
+Xkb honors any request to change the state of the indicator, but the new state
+might be immediately superseded by automatic changes to the indicator state if
+the keyboard state or controls change.
+
+The effects of changing an indicator that drives the keyboard are cumulative; it
+is possible for a single change to affect keyboard group, modifiers, and
+controls simultaneously.
+
+If you change an indicator for which both the XkbIM_LEDDrivesKB and
+XkbIM_NoAutomatic flags are specified, Xkb applies the keyboard changes
+specified in the other indicator map fields and changes the indicator to reflect
+the state that was explicitly requested. The indicator remains in the new state
+until it is explicitly changed again.
+
+If the XkbIM_NoAutomatic flag is not set and XkbIM_LEDDrivesKB is set, Xkb
+applies the changes specified in the other indicator map fields and sets the
+state of the indicator to the values specified by the indicator map. Note that
+it is possible in this case for the indicator to end up in a different state
+than the one that was explicitly requested. For example, Xkb does not extinguish
+an indicator with
+.I which_mods
+of XkbIM_UseBase and
+.I mods
+of Shift if, at the time Xkb processes the request to extinguish the indicator,
+one of the Shift keys is physically depressed.
+
+If you explicitly light an indicator for which XkbIM_LEDDrivesKB is set, Xkb
+enables all of the boolean controls specified in the
+.I ctrls
+field of its indicator map. Explicitly extinguishing such an indicator causes
+Xkb to disable all of the boolean controls specified in
+.I ctrls.
+
+For each bit set in the
+.I which
+parameter,
+.I XkbSetIndicatorMap
+sends the corresponding indicator map from the
+.I desc
+parameter to the server.
+.SH "SEE ALSO"
+.BR XkbSetNamedIndicator (__libmansuffix__)
diff --git a/libX11/man/xkb/XkbSetMap.man b/libX11/man/xkb/XkbSetMap.man
index 7a5ac9b3f..e322c4015 100644
--- a/libX11/man/xkb/XkbSetMap.man
+++ b/libX11/man/xkb/XkbSetMap.man
@@ -1,383 +1,383 @@
-'\" t
-.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
-.\"
-.\" Permission is hereby granted, free of charge, to any person obtaining a
-.\" copy of this software and associated documentation files (the "Software"),
-.\" to deal in the Software without restriction, including without limitation
-.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
-.\" and/or sell copies of the Software, and to permit persons to whom the
-.\" Software is furnished to do so, subject to the following conditions:
-.\"
-.\" The above copyright notice and this permission notice (including the next
-.\" paragraph) shall be included in all copies or substantial portions of the
-.\" Software.
-.\"
-.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-.\" DEALINGS IN THE SOFTWARE.
-.\"
-.TH XkbSetMap __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
-.SH NAME
-XkbSetMap \- Send a complete new set of values for entire components to the
-server.
-.SH SYNOPSIS
-.HP
-.B Bool XkbSetMap
-.BI "(\^Display *" "dpy" "\^,"
-.BI "unsigned int " "which" "\^,"
-.BI "XkbDescPtr " "xkb" "\^);"
-.if n .ti +5n
-.if t .ti +.5i
-.SH ARGUMENTS
-.TP
-.I \- dpy
-connection to X server
-.TP
-.I \- which
-mask selecting subcomponents to update
-.TP
-.I \- xkb
-description from which new values are taken
-.SH DESCRIPTION
-.LP
-There are two ways to make changes to map components: either change a local copy
-of the keyboard map and
-call
-.I XkbSetMap
-to send the modified map to the server, or, to reduce network traffic, use an
-XkbMapChangesRec structure
-and call
-.I XkbChangeMap.
-
-Use
-.I XkbSetMap
-to send a complete new set of values for entire components (for example, all
-symbols, all actions, and so
-on) to the server. The
-.I which
-parameter specifies the components to be sent to the server, and is a bitwise
-inclusive OR of the masks
-listed in Table 1. The
-.I xkb
-parameter is a pointer to an XkbDescRec structure and contains the information
-to be copied to the server.
-For each bit set in the
-.I which
-parameter,
-.I XkbSetMap
-takes the corresponding structure values from the
-.I xkb
-parameter and sends it to the server specified by
-.I dpy.
-
-If any components specified by
-.I which
-are not present in the
-.I xkb
-parameter,
-.I XkbSetMap
-returns False. Otherwise, it sends the update request to the server and returns
-True.
-.I XkbSetMap
-can generate BadAlloc, BadLength, and BadValue protocol errors.
-
-Key types, symbol maps, and actions are all interrelated; changes in one require
-changes in the others. Xkb
-provides functions to make it easier to edit these components and handle the
-interdependencies. Table 1
-lists these helper functions and provides a pointer to where they are defined.
-
-.TS
-c s s s s
-c s s s s
-l l l l l
-l l l l l
-lw(2i) l l lw(1i) lw(3i).
-Table 1 Xkb Mapping Component Masks
-and Convenience Functions
-_
-Mask Value Map Fields Convenience
- Functions
-_
-T{
-XkbKeyTypesMask
-T} (1<<0) client T{
-types
-.br
-size_types
-.br
-num_types
-T} T{
-XkbGetKeyTypes
-.br
-XkbResizeKeyType
-.br
-XkbCopyKeyType
-.br
-XkbCopyKeyTypes
-T}
-T{
-XkbKeySymsMask
-T} (1<<1) client T{
-syms
-.br
-size_syms
-.br
-num_syms
-.br
-key_sym_map
-T} T{
-XkbGetKeySyms
-.br
-XkbResizeKeySyms
-.br
-XkbChangeTypesOfKey
-T}
-T{
-XkbModifierMapMask
-T} (1<<2) client modmap T{
-XkbGetKeyModifierMap
-T}
-T{
-XkbExplicitComponentsMask
-T} (1<<3) server T{
-explicit
-T} T{
-XkbGetKeyExplicitComponents
-T}
-T{
-XkbKeyActionsMask
-T} (1<<4) server T{
-key_acts
-.br
-acts
-.br
-num_acts
-.br
-size_acts
-T} T{
-XkbGetKeyActions
-.br
-XkbResizeKeyActions
-T}
-T{
-XkbKeyBehaviorsMask
-T} (1<<5) server T{
-behaviors
-T} T{
-XkbGetKeyBehaviors
-T}
-T{
-XkbVirtualModsMask
-T} (1<<6) server T{
-vmods
-T} T{
-XkbGetVirtualMods
-T}
-T{
-XkbVirtualModMapMask
-T} (1<<7) server T{
-vmodmap
-T} T{
-XkbGetVirtualModMap
-T}
-.TE
-
-The
-.I changed
-field identifies the map components that have changed in an XkbDescRec structure
-and may contain any of the
-bits in Table 1, which are also shown in Table 2. Every 1 bit in
-.I changed
-also identifies which other fields in the XkbMapChangesRec structure contain
-valid values, as indicated in
-Table 2. The
-.I min_key_code
-and
-.I max_key_code
-fields are for reference only; they are ignored on any requests sent to the
-server and are always updated
-by the server whenever it returns the data for an XkbMapChangesRec.
-.bp
-.TS
-c s s
-l l l
-l l l
-l l l
-l lw(2i) lw(3i).
-Table 2 XkbMapChangesRec Masks
-_
- Valid
-Mask XkbMapChangesRec XkbDescRec Field Containing
- Fields Changed Data
-_
-XkbKeyTypesMask first_type, map->type[first_type] ..
- num_types map->type[first_type + num_types - 1]
-.sp
-XkbKeySymsMask first_key_sym, map->key_sym_map[first_key_sym] ..
- num_key_syms map->key_sym_map[first_key_sym +
- num_key_syms - 1]
-XkbModifierMapMask first_modmap_key, map->modmap[first_modmap_key] ..
- num_modmap_keys map->modmap[first_modmap_key +
- num_modmap_keys-1]
-XkbExplicitComponentsMask first_key_explicit,
-server->explicit[first_key_explicit] ..
- num_key_explicit server->explicit[first_key_explicit +
- num_key_explicit - 1]
-XkbKeyActionsMask first_key_act, server->key_acts[first_key_act] ..
- num_key_acts server->key_acts[first_key_act +
- num_key_acts - 1]
-XkbKeyBehaviorsMask first_key_behavior,
-server->behaviors[first_key_behavior] ..
- num_key_behaviors server->behaviors[first_key_behavior +
- num_key_behaviors - 1]
-XkbVirtualModsMask vmods server->vmods[*]
-XkbVirtualModMapMask first_vmodmap_key,
-server->vmodmap[first_vmodmap_key]
- num_vmodmap_keys ..
- server->vmodmap[first_vmodmap_key
- + num_vmodmap_keys - 1]
-.TE
-.SH "RETURN VALUES"
-.TP 15
-True
-The
-.I XkbSetMap
-function returns True all components specified by
-.I which
-are present in the
-.I xkb
-parameter.
-.TP 15
-False
-The
-.I XkbSetMap
-function returns False if any component specified by
-.I which
-is not present in the
-.I xkb
-parameter.
-.SH STRUCTURES
-.LP
-
-Use the XkbMapChangesRec structure to identify and track partial modifications
-to the mapping components
-and to reduce the amount of traffic between the server and clients.
-.nf
-
-typedef struct _XkbMapChanges {
- unsigned short changed; /\(** identifies valid components in structure */
- KeyCode min_key_code; /\(** lowest numbered keycode for device */
- KeyCode max_key_code; /\(** highest numbered keycode for device */
- unsigned char first_type; /\(** index of first key type modified */
- unsigned char num_types; /\(** # types modified */
- KeyCode first_key_sym; /\(** first key whose key_sym_map changed */
- unsigned char num_key_syms; /\(** # key_sym_map entries changed */
- KeyCode first_key_act; /\(** first key whose key_acts entry changed */
- unsigned char num_key_acts; /\(** # key_acts entries changed */
- KeyCode first_key_behavior; /\(** first key whose behaviors changed */
- unsigned char num_key_behaviors; /\(** # behaviors entries changed */
- KeyCode first_key_explicit; /\(** first key whose explicit entry changed */
- unsigned char num_key_explicit; /\(** # explicit entries changed */
- KeyCode first_modmap_key; /\(** first key whose modmap entry changed */
- unsigned char num_modmap_keys; /\(** # modmap entries changed */
- KeyCode first_vmodmap_key; /\(** first key whose vmodmap changed */
- unsigned char num_vmodmap_keys; /\(** # vmodmap entries changed */
- unsigned char pad1; /\(** reserved */
- unsigned short vmods; /\(** mask indicating which vmods changed */
-} XkbMapChangesRec,*XkbMapChangesPtr;
-
-.fi
-
-The complete description of an Xkb keyboard is given by an XkbDescRec. The
-component
-structures in the XkbDescRec represent the major Xkb components.
-
-.nf
-typedef struct {
- struct _XDisplay * display; /\(** connection to X server */
- unsigned short flags; /\(** private to Xkb, do not modify */
- unsigned short device_spec; /\(** device of interest */
- KeyCode min_key_code; /\(** minimum keycode for device */
- KeyCode max_key_code; /\(** maximum keycode for device */
- XkbControlsPtr ctrls; /\(** controls */
- XkbServerMapPtr server; /\(** server keymap */
- XkbClientMapPtr map; /\(** client keymap */
- XkbIndicatorPtr indicators; /\(** indicator map */
- XkbNamesPtr names; /\(** names for all components */
- XkbCompatMapPtr compat; /\(** compatibility map */
- XkbGeometryPtr geom; /\(** physical geometry of keyboard */
-} XkbDescRec, *XkbDescPtr;
-
-.fi
-The
-.I display
-field points to an X display structure. The
-.I flags field is private to the library: modifying
-.I flags
-may yield unpredictable results. The
-.I device_spec
-field specifies the device identifier of the keyboard input device, or
-XkbUseCoreKeyboard, which specifies the core keyboard device. The
-.I min_key_code
-and
-.I max_key_code
-fields specify the least and greatest keycode that can be returned by the
-keyboard.
-
-Each structure component has a corresponding mask bit that is used in function
-calls to
-indicate that the structure should be manipulated in some manner, such as
-allocating it
-or freeing it. These masks and their relationships to the fields in the
-XkbDescRec are
-shown in Table 3.
-.bp
-.TS
-c s s
-l l l
-l l l.
-Table 3 Mask Bits for XkbDescRec
-_
-Mask Bit XkbDescRec Field Value
-_
-XkbControlsMask ctrls (1L<<0)
-XkbServerMapMask server (1L<<1)
-XkbIClientMapMask map (1L<<2)
-XkbIndicatorMapMask indicators (1L<<3)
-XkbNamesMask names (1L<<4)
-XkbCompatMapMask compat (1L<<5)
-XkbGeometryMask geom (1L<<6)
-XkbAllComponentsMask All Fields (0x7f)
-.TE
-.SH DIAGNOSTICS
-.TP 15
-.B BadAlloc
-Unable to allocate storage
-.TP 15
-.B BadLength
-The length of a request is shorter or longer than that required to minimally
-contain the arguments
-.TP 15
-.B BadValue
-An argument is out of range
-.SH "SEE ALSO"
-.BR XkbChangeMap (__libmansuffix__),
-.BR XkbChangeTypesOfKey (__libmansuffix__),
-.BR XkbCopyKeyType (__libmansuffix__),
-.BR XkbCopyKeyTypes (__libmansuffix__),
-.BR XkbGetKeyActions (__libmansuffix__),
-.BR XkbGetKeyBehaviors (__libmansuffix__),
-.BR XkbGetKeyExplicitComponents (__libmansuffix__),
-.BR XkbGetKeyModifierMap (__libmansuffix__),
-.BR XkbGetKeySyms (__libmansuffix__),
-.BR XkbGetKeyTypes (__libmansuffix__),
-.BR XkbResizeKeyActions (__libmansuffix__),
-.BR XkbResizeKeySyms (__libmansuffix__),
-.BR XkbResizeKeyType (__libmansuffix__),
-.BR XkbGetVirtualModMap (__libmansuffix__),
-.BR XkbGetVirtualMods (__libmansuffix__)
+'\" t
+.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the "Software"),
+.\" to deal in the Software without restriction, including without limitation
+.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
+.\" and/or sell copies of the Software, and to permit persons to whom the
+.\" Software is furnished to do so, subject to the following conditions:
+.\"
+.\" The above copyright notice and this permission notice (including the next
+.\" paragraph) shall be included in all copies or substantial portions of the
+.\" Software.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+.\" DEALINGS IN THE SOFTWARE.
+.\"
+.TH XkbSetMap __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbSetMap \- Send a complete new set of values for entire components to the
+server.
+.SH SYNOPSIS
+.HP
+.B Bool XkbSetMap
+.BI "(\^Display *" "dpy" "\^,"
+.BI "unsigned int " "which" "\^,"
+.BI "XkbDescPtr " "xkb" "\^);"
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- dpy
+connection to X server
+.TP
+.I \- which
+mask selecting subcomponents to update
+.TP
+.I \- xkb
+description from which new values are taken
+.SH DESCRIPTION
+.LP
+There are two ways to make changes to map components: either change a local copy
+of the keyboard map and
+call
+.I XkbSetMap
+to send the modified map to the server, or, to reduce network traffic, use an
+XkbMapChangesRec structure
+and call
+.I XkbChangeMap.
+
+Use
+.I XkbSetMap
+to send a complete new set of values for entire components (for example, all
+symbols, all actions, and so
+on) to the server. The
+.I which
+parameter specifies the components to be sent to the server, and is a bitwise
+inclusive OR of the masks
+listed in Table 1. The
+.I xkb
+parameter is a pointer to an XkbDescRec structure and contains the information
+to be copied to the server.
+For each bit set in the
+.I which
+parameter,
+.I XkbSetMap
+takes the corresponding structure values from the
+.I xkb
+parameter and sends it to the server specified by
+.I dpy.
+
+If any components specified by
+.I which
+are not present in the
+.I xkb
+parameter,
+.I XkbSetMap
+returns False. Otherwise, it sends the update request to the server and returns
+True.
+.I XkbSetMap
+can generate BadAlloc, BadLength, and BadValue protocol errors.
+
+Key types, symbol maps, and actions are all interrelated; changes in one require
+changes in the others. Xkb
+provides functions to make it easier to edit these components and handle the
+interdependencies. Table 1
+lists these helper functions and provides a pointer to where they are defined.
+
+.TS
+c s s s s
+c s s s s
+l l l l l
+l l l l l
+lw(2i) l l lw(1i) lw(3i).
+Table 1 Xkb Mapping Component Masks
+and Convenience Functions
+_
+Mask Value Map Fields Convenience
+ Functions
+_
+T{
+XkbKeyTypesMask
+T} (1<<0) client T{
+types
+.br
+size_types
+.br
+num_types
+T} T{
+XkbGetKeyTypes
+.br
+XkbResizeKeyType
+.br
+XkbCopyKeyType
+.br
+XkbCopyKeyTypes
+T}
+T{
+XkbKeySymsMask
+T} (1<<1) client T{
+syms
+.br
+size_syms
+.br
+num_syms
+.br
+key_sym_map
+T} T{
+XkbGetKeySyms
+.br
+XkbResizeKeySyms
+.br
+XkbChangeTypesOfKey
+T}
+T{
+XkbModifierMapMask
+T} (1<<2) client modmap T{
+XkbGetKeyModifierMap
+T}
+T{
+XkbExplicitComponentsMask
+T} (1<<3) server T{
+explicit
+T} T{
+XkbGetKeyExplicitComponents
+T}
+T{
+XkbKeyActionsMask
+T} (1<<4) server T{
+key_acts
+.br
+acts
+.br
+num_acts
+.br
+size_acts
+T} T{
+XkbGetKeyActions
+.br
+XkbResizeKeyActions
+T}
+T{
+XkbKeyBehaviorsMask
+T} (1<<5) server T{
+behaviors
+T} T{
+XkbGetKeyBehaviors
+T}
+T{
+XkbVirtualModsMask
+T} (1<<6) server T{
+vmods
+T} T{
+XkbGetVirtualMods
+T}
+T{
+XkbVirtualModMapMask
+T} (1<<7) server T{
+vmodmap
+T} T{
+XkbGetVirtualModMap
+T}
+.TE
+
+The
+.I changed
+field identifies the map components that have changed in an XkbDescRec structure
+and may contain any of the
+bits in Table 1, which are also shown in Table 2. Every 1 bit in
+.I changed
+also identifies which other fields in the XkbMapChangesRec structure contain
+valid values, as indicated in
+Table 2. The
+.I min_key_code
+and
+.I max_key_code
+fields are for reference only; they are ignored on any requests sent to the
+server and are always updated
+by the server whenever it returns the data for an XkbMapChangesRec.
+.bp
+.TS
+c s s
+l l l
+l l l
+l l l
+l lw(2i) lw(3i).
+Table 2 XkbMapChangesRec Masks
+_
+ Valid
+Mask XkbMapChangesRec XkbDescRec Field Containing
+ Fields Changed Data
+_
+XkbKeyTypesMask first_type, map->type[first_type] ..
+ num_types map->type[first_type + num_types - 1]
+.sp
+XkbKeySymsMask first_key_sym, map->key_sym_map[first_key_sym] ..
+ num_key_syms map->key_sym_map[first_key_sym +
+ num_key_syms - 1]
+XkbModifierMapMask first_modmap_key, map->modmap[first_modmap_key] ..
+ num_modmap_keys map->modmap[first_modmap_key +
+ num_modmap_keys-1]
+XkbExplicitComponentsMask first_key_explicit,
+server->explicit[first_key_explicit] ..
+ num_key_explicit server->explicit[first_key_explicit +
+ num_key_explicit - 1]
+XkbKeyActionsMask first_key_act, server->key_acts[first_key_act] ..
+ num_key_acts server->key_acts[first_key_act +
+ num_key_acts - 1]
+XkbKeyBehaviorsMask first_key_behavior,
+server->behaviors[first_key_behavior] ..
+ num_key_behaviors server->behaviors[first_key_behavior +
+ num_key_behaviors - 1]
+XkbVirtualModsMask vmods server->vmods[*]
+XkbVirtualModMapMask first_vmodmap_key,
+server->vmodmap[first_vmodmap_key]
+ num_vmodmap_keys ..
+ server->vmodmap[first_vmodmap_key
+ + num_vmodmap_keys - 1]
+.TE
+.SH "RETURN VALUES"
+.TP 15
+True
+The
+.I XkbSetMap
+function returns True all components specified by
+.I which
+are present in the
+.I xkb
+parameter.
+.TP 15
+False
+The
+.I XkbSetMap
+function returns False if any component specified by
+.I which
+is not present in the
+.I xkb
+parameter.
+.SH STRUCTURES
+.LP
+
+Use the XkbMapChangesRec structure to identify and track partial modifications
+to the mapping components
+and to reduce the amount of traffic between the server and clients.
+.nf
+
+typedef struct _XkbMapChanges {
+ unsigned short changed; /\(** identifies valid components in structure */
+ KeyCode min_key_code; /\(** lowest numbered keycode for device */
+ KeyCode max_key_code; /\(** highest numbered keycode for device */
+ unsigned char first_type; /\(** index of first key type modified */
+ unsigned char num_types; /\(** # types modified */
+ KeyCode first_key_sym; /\(** first key whose key_sym_map changed */
+ unsigned char num_key_syms; /\(** # key_sym_map entries changed */
+ KeyCode first_key_act; /\(** first key whose key_acts entry changed */
+ unsigned char num_key_acts; /\(** # key_acts entries changed */
+ KeyCode first_key_behavior; /\(** first key whose behaviors changed */
+ unsigned char num_key_behaviors; /\(** # behaviors entries changed */
+ KeyCode first_key_explicit; /\(** first key whose explicit entry changed */
+ unsigned char num_key_explicit; /\(** # explicit entries changed */
+ KeyCode first_modmap_key; /\(** first key whose modmap entry changed */
+ unsigned char num_modmap_keys; /\(** # modmap entries changed */
+ KeyCode first_vmodmap_key; /\(** first key whose vmodmap changed */
+ unsigned char num_vmodmap_keys; /\(** # vmodmap entries changed */
+ unsigned char pad1; /\(** reserved */
+ unsigned short vmods; /\(** mask indicating which vmods changed */
+} XkbMapChangesRec,*XkbMapChangesPtr;
+
+.fi
+
+The complete description of an Xkb keyboard is given by an XkbDescRec. The
+component
+structures in the XkbDescRec represent the major Xkb components.
+
+.nf
+typedef struct {
+ struct _XDisplay * display; /\(** connection to X server */
+ unsigned short flags; /\(** private to Xkb, do not modify */
+ unsigned short device_spec; /\(** device of interest */
+ KeyCode min_key_code; /\(** minimum keycode for device */
+ KeyCode max_key_code; /\(** maximum keycode for device */
+ XkbControlsPtr ctrls; /\(** controls */
+ XkbServerMapPtr server; /\(** server keymap */
+ XkbClientMapPtr map; /\(** client keymap */
+ XkbIndicatorPtr indicators; /\(** indicator map */
+ XkbNamesPtr names; /\(** names for all components */
+ XkbCompatMapPtr compat; /\(** compatibility map */
+ XkbGeometryPtr geom; /\(** physical geometry of keyboard */
+} XkbDescRec, *XkbDescPtr;
+
+.fi
+The
+.I display
+field points to an X display structure. The
+.I flags field is private to the library: modifying
+.I flags
+may yield unpredictable results. The
+.I device_spec
+field specifies the device identifier of the keyboard input device, or
+XkbUseCoreKeyboard, which specifies the core keyboard device. The
+.I min_key_code
+and
+.I max_key_code
+fields specify the least and greatest keycode that can be returned by the
+keyboard.
+
+Each structure component has a corresponding mask bit that is used in function
+calls to
+indicate that the structure should be manipulated in some manner, such as
+allocating it
+or freeing it. These masks and their relationships to the fields in the
+XkbDescRec are
+shown in Table 3.
+.bp
+.TS
+c s s
+l l l
+l l l.
+Table 3 Mask Bits for XkbDescRec
+_
+Mask Bit XkbDescRec Field Value
+_
+XkbControlsMask ctrls (1L<<0)
+XkbServerMapMask server (1L<<1)
+XkbIClientMapMask map (1L<<2)
+XkbIndicatorMapMask indicators (1L<<3)
+XkbNamesMask names (1L<<4)
+XkbCompatMapMask compat (1L<<5)
+XkbGeometryMask geom (1L<<6)
+XkbAllComponentsMask All Fields (0x7f)
+.TE
+.SH DIAGNOSTICS
+.TP 15
+.B BadAlloc
+Unable to allocate storage
+.TP 15
+.B BadLength
+The length of a request is shorter or longer than that required to minimally
+contain the arguments
+.TP 15
+.B BadValue
+An argument is out of range
+.SH "SEE ALSO"
+.BR XkbChangeMap (__libmansuffix__),
+.BR XkbChangeTypesOfKey (__libmansuffix__),
+.BR XkbCopyKeyType (__libmansuffix__),
+.BR XkbCopyKeyTypes (__libmansuffix__),
+.BR XkbGetKeyActions (__libmansuffix__),
+.BR XkbGetKeyBehaviors (__libmansuffix__),
+.BR XkbGetKeyExplicitComponents (__libmansuffix__),
+.BR XkbGetKeyModifierMap (__libmansuffix__),
+.BR XkbGetKeySyms (__libmansuffix__),
+.BR XkbGetKeyTypes (__libmansuffix__),
+.BR XkbResizeKeyActions (__libmansuffix__),
+.BR XkbResizeKeySyms (__libmansuffix__),
+.BR XkbResizeKeyType (__libmansuffix__),
+.BR XkbGetVirtualModMap (__libmansuffix__),
+.BR XkbGetVirtualMods (__libmansuffix__)
diff --git a/libX11/man/xkb/XkbSetModActionVMods.man b/libX11/man/xkb/XkbSetModActionVMods.man
index 4fb5b3944..cb2178b1b 100644
--- a/libX11/man/xkb/XkbSetModActionVMods.man
+++ b/libX11/man/xkb/XkbSetModActionVMods.man
@@ -1,57 +1,57 @@
-'\" t
-.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
-.\"
-.\" Permission is hereby granted, free of charge, to any person obtaining a
-.\" copy of this software and associated documentation files (the "Software"),
-.\" to deal in the Software without restriction, including without limitation
-.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
-.\" and/or sell copies of the Software, and to permit persons to whom the
-.\" Software is furnished to do so, subject to the following conditions:
-.\"
-.\" The above copyright notice and this permission notice (including the next
-.\" paragraph) shall be included in all copies or substantial portions of the
-.\" Software.
-.\"
-.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-.\" DEALINGS IN THE SOFTWARE.
-.\"
-.TH XkbSetModActionVMods __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
-.SH NAME
-XkbSetModActionVMods \- Sets the vmods1 and vmods2 fields of act using the vmods
-format of an Xkb modifier description
-.SH SYNOPSIS
-.HP
-.B void XkbSetModActionVMods
-.BI "(\^XkbAction " "act" "\^,"
-.BI "unsigned short " "vmods" "\^);"
-.if n .ti +5n
-.if t .ti +.5i
-.SH ARGUMENTS
-.TP
-.I \- act
-action in which to set vmods
-.TP
-.I \- vmods
-virtual mods to set
-.SH DESCRIPTION
-.LP
-.I XkbSetModActionVMods
-sets the
-.I vmods1
-and
-.I vmods2
-fields of
-.I act
-using the
-.I vmods
-format of an Xkb modifier description.
-.SH NOTES
-.LP
-Despite the fact that the first parameter of these two macros is of type
-XkbAction, these macros may be used only with Actions of type XkbModAction and
-XkbISOAction.
+'\" t
+.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the "Software"),
+.\" to deal in the Software without restriction, including without limitation
+.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
+.\" and/or sell copies of the Software, and to permit persons to whom the
+.\" Software is furnished to do so, subject to the following conditions:
+.\"
+.\" The above copyright notice and this permission notice (including the next
+.\" paragraph) shall be included in all copies or substantial portions of the
+.\" Software.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+.\" DEALINGS IN THE SOFTWARE.
+.\"
+.TH XkbSetModActionVMods __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbSetModActionVMods \- Sets the vmods1 and vmods2 fields of act using the vmods
+format of an Xkb modifier description
+.SH SYNOPSIS
+.HP
+.B void XkbSetModActionVMods
+.BI "(\^XkbAction " "act" "\^,"
+.BI "unsigned short " "vmods" "\^);"
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- act
+action in which to set vmods
+.TP
+.I \- vmods
+virtual mods to set
+.SH DESCRIPTION
+.LP
+.I XkbSetModActionVMods
+sets the
+.I vmods1
+and
+.I vmods2
+fields of
+.I act
+using the
+.I vmods
+format of an Xkb modifier description.
+.SH NOTES
+.LP
+Despite the fact that the first parameter of these two macros is of type
+XkbAction, these macros may be used only with Actions of type XkbModAction and
+XkbISOAction.
diff --git a/libX11/man/xkb/XkbSetNamedIndicator.man b/libX11/man/xkb/XkbSetNamedIndicator.man
index 119dc8a37..5cd558d5c 100644
--- a/libX11/man/xkb/XkbSetNamedIndicator.man
+++ b/libX11/man/xkb/XkbSetNamedIndicator.man
@@ -1,119 +1,119 @@
-.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
-.\"
-.\" Permission is hereby granted, free of charge, to any person obtaining a
-.\" copy of this software and associated documentation files (the "Software"),
-.\" to deal in the Software without restriction, including without limitation
-.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
-.\" and/or sell copies of the Software, and to permit persons to whom the
-.\" Software is furnished to do so, subject to the following conditions:
-.\"
-.\" The above copyright notice and this permission notice (including the next
-.\" paragraph) shall be included in all copies or substantial portions of the
-.\" Software.
-.\"
-.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-.\" DEALINGS IN THE SOFTWARE.
-.\"
-.TH XkbSetNamedIndicator __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
-.SH NAME
-XkbSetNamedIndicator \- Names an indicator if it is not already named; toggles
-the state of the indicator; sets the indicator to a specified state and sets the
-indicator map for the indicator
-.SH SYNOPSIS
-.HP
-.B Bool XkbSetNamedIndicator
-.BI "(\^Display *" "dpy" "\^,"
-.BI "unsigned int " "device_spec" "\^,"
-.BI "Atom " "name" "\^,"
-.BI "Bool " "change_state" "\^,"
-.BI "Bool " "state" "\^,"
-.BI "Bool " "create_new" "\^,"
-.BI "XkbIndicatorMapPtr " "map" "\^);"
-.if n .ti +5n
-.if t .ti +.5i
-.SH ARGUMENTS
-.TP
-.I \- dpy
-connection to the X server
-.TP
-.I \- device_spec
-device ID, or XkbUseCoreKbd
-.TP
-.I \- name
-name of the indicator to change
-.TP
-.I \- change_state
-whether to change the indicator state or not
-.TP
-.I \- state
-desired new state for the indicator
-.TP
-.I \- create_new
-whether a new indicator with the specified name should be created when necessary
-.TP
-.I \- map
-new map for the indicator
-.SH DESCRIPTION
-.LP
-If a compatible version of the Xkb extension is not available in the server,
-.I XkbSetNamedIndicator
-returns False. Otherwise, it sends a request to the X server to change the
-indicator specified by
-.I name
-and returns True.
-
-If
-.I change_state
-is True, and the optional parameter,
-.I state,
-is not NULL,
-.I XkbSetNamedIndicator
-tells the server to change the state of the named indicator to the value
-specified by
-.I state.
-
-If an indicator with the name specified by
-.I name
-does not already exist, the
-.I create_new
-parameter tells the server whether it should create a new named indicator. If
-.I create_new
-is True, the server finds the first indicator that doesn't have a name and gives
-it the name specified by
-.I name.
-If the optional parameter,
-.I map, is not NULL,
-.I XkbSetNamedIndicator
-tells the server to change the indicator's map to the values specified in
-.I map.
-
-In addition, it can also generate XkbIndicatorStateNotify,
-XkbIndicatorMapNotify, and XkbNamesNotify events.
-.SH "RETURN VALUES"
-.TP 15
-True
-The
-.I XkbSetNamedIndicator
-function returns True if a compatible version of the Xkb extension is available in the server.
-.TP 15
-False
-The
-.I XkbSetNamedIndicator
-function returns False if a compatible version of the Xkb extension is not available in the server.
-.SH DIAGNOSTICS
-.TP 15
-.B BadAtom
-A name is neither a valid Atom or None
-.TP 15
-.B BadImplementation
-Invalid reply from server
-.SH "SEE ALSO"
-.BR XkbIndicatorMapNotify (__libmansuffix__),
-.BR XkbIndicatorStateNotify (__libmansuffix__),
-.BR XkbNamesNotify (__libmansuffix__)
-
+.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the "Software"),
+.\" to deal in the Software without restriction, including without limitation
+.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
+.\" and/or sell copies of the Software, and to permit persons to whom the
+.\" Software is furnished to do so, subject to the following conditions:
+.\"
+.\" The above copyright notice and this permission notice (including the next
+.\" paragraph) shall be included in all copies or substantial portions of the
+.\" Software.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+.\" DEALINGS IN THE SOFTWARE.
+.\"
+.TH XkbSetNamedIndicator __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbSetNamedIndicator \- Names an indicator if it is not already named; toggles
+the state of the indicator; sets the indicator to a specified state and sets the
+indicator map for the indicator
+.SH SYNOPSIS
+.HP
+.B Bool XkbSetNamedIndicator
+.BI "(\^Display *" "dpy" "\^,"
+.BI "unsigned int " "device_spec" "\^,"
+.BI "Atom " "name" "\^,"
+.BI "Bool " "change_state" "\^,"
+.BI "Bool " "state" "\^,"
+.BI "Bool " "create_new" "\^,"
+.BI "XkbIndicatorMapPtr " "map" "\^);"
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- dpy
+connection to the X server
+.TP
+.I \- device_spec
+device ID, or XkbUseCoreKbd
+.TP
+.I \- name
+name of the indicator to change
+.TP
+.I \- change_state
+whether to change the indicator state or not
+.TP
+.I \- state
+desired new state for the indicator
+.TP
+.I \- create_new
+whether a new indicator with the specified name should be created when necessary
+.TP
+.I \- map
+new map for the indicator
+.SH DESCRIPTION
+.LP
+If a compatible version of the Xkb extension is not available in the server,
+.I XkbSetNamedIndicator
+returns False. Otherwise, it sends a request to the X server to change the
+indicator specified by
+.I name
+and returns True.
+
+If
+.I change_state
+is True, and the optional parameter,
+.I state,
+is not NULL,
+.I XkbSetNamedIndicator
+tells the server to change the state of the named indicator to the value
+specified by
+.I state.
+
+If an indicator with the name specified by
+.I name
+does not already exist, the
+.I create_new
+parameter tells the server whether it should create a new named indicator. If
+.I create_new
+is True, the server finds the first indicator that doesn't have a name and gives
+it the name specified by
+.I name.
+If the optional parameter,
+.I map, is not NULL,
+.I XkbSetNamedIndicator
+tells the server to change the indicator's map to the values specified in
+.I map.
+
+In addition, it can also generate XkbIndicatorStateNotify,
+XkbIndicatorMapNotify, and XkbNamesNotify events.
+.SH "RETURN VALUES"
+.TP 15
+True
+The
+.I XkbSetNamedIndicator
+function returns True if a compatible version of the Xkb extension is available in the server.
+.TP 15
+False
+The
+.I XkbSetNamedIndicator
+function returns False if a compatible version of the Xkb extension is not available in the server.
+.SH DIAGNOSTICS
+.TP 15
+.B BadAtom
+A name is neither a valid Atom or None
+.TP 15
+.B BadImplementation
+Invalid reply from server
+.SH "SEE ALSO"
+.BR XkbIndicatorMapNotify (__libmansuffix__),
+.BR XkbIndicatorStateNotify (__libmansuffix__),
+.BR XkbNamesNotify (__libmansuffix__)
+
diff --git a/libX11/man/xkb/XkbSetNames.man b/libX11/man/xkb/XkbSetNames.man
index 35c32778b..de64eb27f 100644
--- a/libX11/man/xkb/XkbSetNames.man
+++ b/libX11/man/xkb/XkbSetNames.man
@@ -1,208 +1,208 @@
-'\" t
-.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
-.\"
-.\" Permission is hereby granted, free of charge, to any person obtaining a
-.\" copy of this software and associated documentation files (the "Software"),
-.\" to deal in the Software without restriction, including without limitation
-.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
-.\" and/or sell copies of the Software, and to permit persons to whom the
-.\" Software is furnished to do so, subject to the following conditions:
-.\"
-.\" The above copyright notice and this permission notice (including the next
-.\" paragraph) shall be included in all copies or substantial portions of the
-.\" Software.
-.\"
-.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-.\" DEALINGS IN THE SOFTWARE.
-.\"
-.TH XkbSetNames __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
-.SH NAME
-XkbSetNames \- Change the symbolic names in the server
-.SH SYNOPSIS
-.HP
-.B Bool XkbSetNames
-.BI "(\^Display *" "dpy" "\^,"
-.BI "unsigned int " "which" "\^,"
-.BI "unsigned int " "first_type" "\^,"
-.BI "unsigned int " "num_types" "\^,"
-.BI "XkbDescPtr " "xkb" "\^);"
-.if n .ti +5n
-.if t .ti +.5i
-.SH ARGUMENTS
-.TP
-.I \- dpy
-connection to the X server
-.TP
-.I \- which
-mask of names or map components to be changed
-.TP
-.I \- first_type
-first type whose name is to be changed
-.TP
-.I \- num_types
-number of types for which names are to be changed
-.TP
-.I \- xkb
-keyboard description from which names are to be taken
-.SH DESCRIPTION
-.LP
-To change the symbolic names in the server, first modify a local copy of the
-keyboard description and then
-use either
-.I XkbSetNames,
-or, to save network traffic, use a XkbNameChangesRecstructure and call
-.I XkbChangeNames
-to download the changes to the server.
-.I XkbSetNames
-and
-.I XkbChangeNames
-can generate BadAlloc, BadAtom, BadLength, BadMatch, and BadImplementation
-errors.
-
-Use
-.I XkbSetNames
-to change many names at the same time. For each bit set in
-.I which, XkbSetNames
-takes the corresponding value (or values in the case of arrays) from the
-keyboard description
-.I xkb
-and sends it to the server.
-
-The
-.I first_type
-and
-.I num_types
-arguments are used only if XkbKeyTypeNamesMask or XkbKTLevelNamesMask is set in
-.I which
-and specify a subset of the types for which the corresponding names are to be
-changed. If either or both of
-these mask bits are set but the specified types are illegal,
-.I XkbSetNames
-returns False and does not update any of the names specified in
-.I which.
-The specified types are illegal if
-.I xkb
-does not include a map component or if
-.I first_type
-and
-.I num_types
-specify types that are not defined in the keyboard description.
-.SH STRUCTURES
-.LP
-The XkbNameChangesRec allows applications to identify small modifications to the
-symbolic names and
-effectively reduces the amount of traffic sent to the server:
-.nf
-
- typedef struct _XkbNameChanges {
- unsigned int changed; /\(** name components that have changed */
- unsigned char first_type; /\(** first key type with a new name */
- unsigned char num_types; /\(** number of types with new names */
- unsigned char first_lvl; /\(** first key type with new level names
-*/
- unsigned char num_lvls; /\(** number of key types with new level
-names */
- unsigned char num_aliases; /\(** if key aliases changed, total number
-of key aliases */
- unsigned char num_rg; /\(** if radio groups changed, total
-number of radio groups */
- unsigned char first_key; /\(** first key with a new name */
- unsigned char num_keys; /\(** number of keys with new names */
- unsigned short changed_vmods; /\(** mask of virtual modifiers for which
-names have changed */
- unsigned long changed_indicators; /\(** mask of indicators for which names
-were changed */
- unsigned char changed_groups; /\(** mask of groups for which names
-were changed */
- } XkbNameChangesRec, *XkbNameChangesPtr
-
-.fi
-The
-.I changed
-field specifies the name components that have changed and is the bitwise
-inclusive OR of the valid names
-mask bits defined in Table 1. The rest of the fields in the structure specify
-the ranges that have changed
-for the various kinds of symbolic names, as shown in Table 2.
-
-Xkb provides several functions that work with symbolic names. Each of these
-functions uses a mask to
-specify individual fields of the structures described above. These masks and
-their relationships to the
-fields in a keyboard description are shown in Table 1.
-
-.TS
-c s s s
-l l l l.
-Table 1 Symbolic Names Masks
-_
-Mask Bit Value Keyboard Field
- Component
-_
-XkbKeycodesNameMask (1<<0) Xkb->names keycodes
-XkbGeometryNameMask (1<<1) Xkb->names geometry
-XkbSymbolsNameMask (1<<2) Xkb->names symbols
-XkbPhysSymbolsNameMask (1<<3) Xkb->names phys_symbols
-XkbTypesNameMask (1<<4) Xkb->names type
-XkbCompatNameMask (1<<5) Xkb->names compat
-XkbKeyTypeNamesMask (1<<6) Xkb->map type[*].name
-XkbKTLevelNamesMask (1<<7) Xkb->map type[*].lvl_names[*]
-XkbIndicatorNamesMask (1<<8) Xkb->names indicators[*]
-XkbKeyNamesMask (1<<9) Xkb->names keys[*], num_keys
-XkbKeyAliasesMask (1<<10) Xkb->names key_aliases[*], num_key_aliases
-XkbVirtualModNamesMask (1<<11) Xkb->names vmods[*]
-XkbGroupNamesMask (1<<12) Xkb->names groups[*]
-XkbRGNamesMask (1<<13) Xkb->names radio_groups[*], num_rg
-XkbComponentNamesMask (0x3f) Xkb->names keycodes,
- geometry,
- symbols,
- physical symbols,
- types, and
- compatibility map
-XkbAllNamesMask (0x3fff) Xkb->names all name components
-.TE
-
-.TS
-c s s s
-l l l l.
-Table 2 XkbNameChanges Fields
-_
-Mask Fields Component Field
-_
-XkbKeyTypeNamesMask first_type, Xkb->map type[*].name
- num_types
-XkbKTLevelNamesMask first_lvl, Xkb->map type[*].lvl_names[*]
- num_lvls
-XkbKeyAliasesMask num_aliases Xkb->names key_aliases[*]
-XkbRGNamesMask num_rg Xkb->names radio_groups[*]
-XkbKeyNamesMask first_key, Xkb->names keys[*]
- num_keys
-XkbVirtualModNamesMask changed_vmods Xkb->names vmods[*]
-XkbIndicatorNamesMask changed_indicators Xkb->names indicators[*]
-XkbGroupNamesMask changed_groups Xkb->names groups[*]
-.TE
-.SH DIAGNOSTICS
-.TP 15
-.B BadAlloc
-Unable to allocate storage
-.TP 15
-.B BadAtom
-A name is neither a valid Atom or None
-.TP 15
-.B BadImplementation
-Invalid reply from server
-.TP 15
-.B BadLength
-The length of a request is shorter or longer than that required to minimally
-contain the arguments
-.TP 15
-.B BadMatch
-A compatible version of Xkb was not available in the server or an argument has
-correct type and range, but is otherwise invalid
-.SH "SEE ALSO"
-.BR XkbChangeNames (__libmansuffix__)
+'\" t
+.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the "Software"),
+.\" to deal in the Software without restriction, including without limitation
+.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
+.\" and/or sell copies of the Software, and to permit persons to whom the
+.\" Software is furnished to do so, subject to the following conditions:
+.\"
+.\" The above copyright notice and this permission notice (including the next
+.\" paragraph) shall be included in all copies or substantial portions of the
+.\" Software.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+.\" DEALINGS IN THE SOFTWARE.
+.\"
+.TH XkbSetNames __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbSetNames \- Change the symbolic names in the server
+.SH SYNOPSIS
+.HP
+.B Bool XkbSetNames
+.BI "(\^Display *" "dpy" "\^,"
+.BI "unsigned int " "which" "\^,"
+.BI "unsigned int " "first_type" "\^,"
+.BI "unsigned int " "num_types" "\^,"
+.BI "XkbDescPtr " "xkb" "\^);"
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- dpy
+connection to the X server
+.TP
+.I \- which
+mask of names or map components to be changed
+.TP
+.I \- first_type
+first type whose name is to be changed
+.TP
+.I \- num_types
+number of types for which names are to be changed
+.TP
+.I \- xkb
+keyboard description from which names are to be taken
+.SH DESCRIPTION
+.LP
+To change the symbolic names in the server, first modify a local copy of the
+keyboard description and then
+use either
+.I XkbSetNames,
+or, to save network traffic, use a XkbNameChangesRecstructure and call
+.I XkbChangeNames
+to download the changes to the server.
+.I XkbSetNames
+and
+.I XkbChangeNames
+can generate BadAlloc, BadAtom, BadLength, BadMatch, and BadImplementation
+errors.
+
+Use
+.I XkbSetNames
+to change many names at the same time. For each bit set in
+.I which, XkbSetNames
+takes the corresponding value (or values in the case of arrays) from the
+keyboard description
+.I xkb
+and sends it to the server.
+
+The
+.I first_type
+and
+.I num_types
+arguments are used only if XkbKeyTypeNamesMask or XkbKTLevelNamesMask is set in
+.I which
+and specify a subset of the types for which the corresponding names are to be
+changed. If either or both of
+these mask bits are set but the specified types are illegal,
+.I XkbSetNames
+returns False and does not update any of the names specified in
+.I which.
+The specified types are illegal if
+.I xkb
+does not include a map component or if
+.I first_type
+and
+.I num_types
+specify types that are not defined in the keyboard description.
+.SH STRUCTURES
+.LP
+The XkbNameChangesRec allows applications to identify small modifications to the
+symbolic names and
+effectively reduces the amount of traffic sent to the server:
+.nf
+
+ typedef struct _XkbNameChanges {
+ unsigned int changed; /\(** name components that have changed */
+ unsigned char first_type; /\(** first key type with a new name */
+ unsigned char num_types; /\(** number of types with new names */
+ unsigned char first_lvl; /\(** first key type with new level names
+*/
+ unsigned char num_lvls; /\(** number of key types with new level
+names */
+ unsigned char num_aliases; /\(** if key aliases changed, total number
+of key aliases */
+ unsigned char num_rg; /\(** if radio groups changed, total
+number of radio groups */
+ unsigned char first_key; /\(** first key with a new name */
+ unsigned char num_keys; /\(** number of keys with new names */
+ unsigned short changed_vmods; /\(** mask of virtual modifiers for which
+names have changed */
+ unsigned long changed_indicators; /\(** mask of indicators for which names
+were changed */
+ unsigned char changed_groups; /\(** mask of groups for which names
+were changed */
+ } XkbNameChangesRec, *XkbNameChangesPtr
+
+.fi
+The
+.I changed
+field specifies the name components that have changed and is the bitwise
+inclusive OR of the valid names
+mask bits defined in Table 1. The rest of the fields in the structure specify
+the ranges that have changed
+for the various kinds of symbolic names, as shown in Table 2.
+
+Xkb provides several functions that work with symbolic names. Each of these
+functions uses a mask to
+specify individual fields of the structures described above. These masks and
+their relationships to the
+fields in a keyboard description are shown in Table 1.
+
+.TS
+c s s s
+l l l l.
+Table 1 Symbolic Names Masks
+_
+Mask Bit Value Keyboard Field
+ Component
+_
+XkbKeycodesNameMask (1<<0) Xkb->names keycodes
+XkbGeometryNameMask (1<<1) Xkb->names geometry
+XkbSymbolsNameMask (1<<2) Xkb->names symbols
+XkbPhysSymbolsNameMask (1<<3) Xkb->names phys_symbols
+XkbTypesNameMask (1<<4) Xkb->names type
+XkbCompatNameMask (1<<5) Xkb->names compat
+XkbKeyTypeNamesMask (1<<6) Xkb->map type[*].name
+XkbKTLevelNamesMask (1<<7) Xkb->map type[*].lvl_names[*]
+XkbIndicatorNamesMask (1<<8) Xkb->names indicators[*]
+XkbKeyNamesMask (1<<9) Xkb->names keys[*], num_keys
+XkbKeyAliasesMask (1<<10) Xkb->names key_aliases[*], num_key_aliases
+XkbVirtualModNamesMask (1<<11) Xkb->names vmods[*]
+XkbGroupNamesMask (1<<12) Xkb->names groups[*]
+XkbRGNamesMask (1<<13) Xkb->names radio_groups[*], num_rg
+XkbComponentNamesMask (0x3f) Xkb->names keycodes,
+ geometry,
+ symbols,
+ physical symbols,
+ types, and
+ compatibility map
+XkbAllNamesMask (0x3fff) Xkb->names all name components
+.TE
+
+.TS
+c s s s
+l l l l.
+Table 2 XkbNameChanges Fields
+_
+Mask Fields Component Field
+_
+XkbKeyTypeNamesMask first_type, Xkb->map type[*].name
+ num_types
+XkbKTLevelNamesMask first_lvl, Xkb->map type[*].lvl_names[*]
+ num_lvls
+XkbKeyAliasesMask num_aliases Xkb->names key_aliases[*]
+XkbRGNamesMask num_rg Xkb->names radio_groups[*]
+XkbKeyNamesMask first_key, Xkb->names keys[*]
+ num_keys
+XkbVirtualModNamesMask changed_vmods Xkb->names vmods[*]
+XkbIndicatorNamesMask changed_indicators Xkb->names indicators[*]
+XkbGroupNamesMask changed_groups Xkb->names groups[*]
+.TE
+.SH DIAGNOSTICS
+.TP 15
+.B BadAlloc
+Unable to allocate storage
+.TP 15
+.B BadAtom
+A name is neither a valid Atom or None
+.TP 15
+.B BadImplementation
+Invalid reply from server
+.TP 15
+.B BadLength
+The length of a request is shorter or longer than that required to minimally
+contain the arguments
+.TP 15
+.B BadMatch
+A compatible version of Xkb was not available in the server or an argument has
+correct type and range, but is otherwise invalid
+.SH "SEE ALSO"
+.BR XkbChangeNames (__libmansuffix__)
diff --git a/libX11/man/xkb/XkbSetServerInternalMods.man b/libX11/man/xkb/XkbSetServerInternalMods.man
index 54f8894bd..93ede9b13 100644
--- a/libX11/man/xkb/XkbSetServerInternalMods.man
+++ b/libX11/man/xkb/XkbSetServerInternalMods.man
@@ -1,198 +1,198 @@
-'\" t
-.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
-.\"
-.\" Permission is hereby granted, free of charge, to any person obtaining a
-.\" copy of this software and associated documentation files (the "Software"),
-.\" to deal in the Software without restriction, including without limitation
-.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
-.\" and/or sell copies of the Software, and to permit persons to whom the
-.\" Software is furnished to do so, subject to the following conditions:
-.\"
-.\" The above copyright notice and this permission notice (including the next
-.\" paragraph) shall be included in all copies or substantial portions of the
-.\" Software.
-.\"
-.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-.\" DEALINGS IN THE SOFTWARE.
-.\"
-.TH XkbSetServerInternalMods __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
-.SH NAME
-XkbSetServerInternalMods \- Sets the modifiers that are consumed by the server
-before events are delivered to the client
-.SH SYNOPSIS
-.HP
-.B Bool XkbSetServerInternalMods
-.BI "(\^Display *" "display" "\^,"
-.BI "unsigned int " "device_spec" "\^,"
-.BI "unsigned int " "affect_real" "\^,"
-.BI "unsigned int " "real_values" "\^,"
-.BI "unsigned int " "affect_virtual" "\^,"
-.BI "unsigned int " "virtual_values" "\^);"
-.if n .ti +5n
-.if t .ti +.5i
-.SH ARGUMENTS
-.TP
-.I \- display
-connection to the X server
-.TP
-.I \- device_spec
-device ID, or XkbUseCoreKbd
-.TP
-.I \- affect_real
-mask of real modifiers affected by this call
-.TP
-.I \- real_values
-values for affected real modifiers (1=>set, 0=>unset)
-.TP
-.I \- affect_virtual
-mask of virtual modifiers affected by this call
-.TP
-.I \- virtual_values
-values for affected virtual modifiers (1=>set, 0=>unset)
-.SH DESCRIPTION
-.LP
-The core protocol does not provide any means to prevent a modifier from being
-reported in events sent to clients; Xkb, however makes this possible via the
-InternalMods control. It specifies modifiers that should be consumed by the
-server and not reported to clients. When a key is pressed and a modifier that
-has its bit set in the InternalMods control is reported to the server, the
-server uses the modifier when determining the actions to apply for the key. The
-server then clears the bit, so it is not actually reported to the client. In
-addition, modifiers specified in the InternalMods control are not used to
-determine grabs and are not used to calculate core protocol compatibility state.
-
-Manipulate the InternalMods control via the
-.I internal
-field in the XkbControlsRec structure, using
-.I XkbSetControls
-and
-.I XkbGetControls.
-Alternatively, use
-.I XkbSetServerInternalMods.
-
-.I XkbSetServerInternalMods
-sends a request to the server to change the internal modifiers consumed by the
-server.
-.I affect_real
-and
-.I real_values
-are masks of real modifier bits indicating which real modifiers are to be added
-and removed from the server's internal modifiers control. Modifiers selected by
-both
-.I affect_real
-and
-.I real_values
-are added to the server's internal modifiers control; those selected by
-.I affect_real
-but not by
-.I real_values
-are removed from the server's internal modifiers mask. Valid values for
-.I affect_real
-and
-.I real_values
-consist of any combination of the eight core modifier bits: ShiftMask, LockMask,
-ControlMask, Mod1Mask - Mod5Mask.
-.I affect_virtual
-and
-.I virtual_values
-are masks of virtual modifier bits indicating which virtual modifiers are to be
-added and removed from the server's internal modifiers control. Modifiers
-selected by both
-.I affect_virtual
-and
-.I virtual_values
-are added to the server's internal modifiers control; those selected by
-.I affect_virtual
-but not by
-.I virtual_values
-are removed from the server's internal modifiers control. See below for a
-discussion of virtual modifier masks to use in
-.I affect_virtual
-and
-.I virtual_values. XkbSetServerInternalMods
-does not wait for a reply from the server. It returns True if the request was
-sent and False otherwise.
-
-Virtual modifiers are named by converting their string name to an X Atom and
-storing the Atom in the
-.I names.vmods
-array in an XkbDescRec structure. The position of a name Atom in the
-.I names.vmods
-array defines the bit position used to represent the virtual modifier and also
-the index used when accessing virtual modifier information in arrays: the name
-in the i-th (0 relative) entry of
-.I names.vmods
-is the i-th virtual modifier, represented by the mask (1<<i). Throughout Xkb,
-various functions have a parameter that is a mask representing virtual modifier
-choices. In each case, the i-th bit (0 relative) of the mask represents the i-th
-virtual modifier.
-
-To set the name of a virtual modifier, use
-.I XkbSetNames,
-using XkbVirtualModNamesMask in
-.I which
-and the name in the
-.I xkb
-argument; to retrieve indicator names, use
-.I XkbGetNames.
-.SH STRUCTURES
-.LP
-The complete description of an Xkb keyboard is given by an XkbDescRec. The
-component structures in the XkbDescRec represent the major Xkb components
-outlined in Figure 1.1.
-.nf
-
-typedef struct {
- struct _XDisplay * display; /\(** connection to X server */
- unsigned short flags; /\(** private to Xkb, do not modify */
- unsigned short device_spec; /\(** device of interest */
- KeyCode min_key_code; /\(** minimum keycode for device */
- KeyCode max_key_code; /\(** maximum keycode for device */
- XkbControlsPtr ctrls; /\(** controls */
- XkbServerMapPtr server; /\(** server keymap */
- XkbClientMapPtr map; /\(** client keymap */
- XkbIndicatorPtr indicators; /\(** indicator map */
- XkbNamesPtr names; /\(** names for all components */
- XkbCompatMapPtr compat; /\(** compatibility map */
- XkbGeometryPtr geom; /\(** physical geometry of keyboard */
-} XkbDescRec, *XkbDescPtr;
-
-.fi
-The display field points to an X display structure. The flags field is private
-to the library: modifying flags may yield unpredictable results. The device_spec
-field specifies the device identifier of the keyboard input device, or
-XkbUseCoreKeyboard, which specifies the core keyboard device. The min_key_code
-and max_key_code fields specify the least and greatest keycode that can be
-returned by the keyboard.
-
-Each structure component has a corresponding mask bit that is used in function
-calls to indicate that the structure should be manipulated in some manner, such
-as allocating it or freeing it. These masks and their relationships to the
-fields in the XkbDescRec are shown in Table 1.
-
-.TS
-c s s
-l l l
-l l l.
-Table 1 Mask Bits for XkbDescRec
-_
-Mask Bit XkbDescRec Field Value
-_
-XkbControlsMask ctrls (1L<<0)
-XkbServerMapMask server (1L<<1)
-XkbIClientMapMask map (1L<<2)
-XkbIndicatorMapMask indicators (1L<<3)
-XkbNamesMask names (1L<<4)
-XkbCompatMapMask compat (1L<<5)
-XkbGeometryMask geom (1L<<6)
-XkbAllComponentsMask All Fields (0x7f)
-.SH "SEE ALSO"
-.BR XkbGetControls (__libmansuffix__),
-.BR XkbGetNames (__libmansuffix__),
-.BR XkbSetControls (__libmansuffix__),
-.BR XkbSetNames (__libmansuffix__)
+'\" t
+.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the "Software"),
+.\" to deal in the Software without restriction, including without limitation
+.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
+.\" and/or sell copies of the Software, and to permit persons to whom the
+.\" Software is furnished to do so, subject to the following conditions:
+.\"
+.\" The above copyright notice and this permission notice (including the next
+.\" paragraph) shall be included in all copies or substantial portions of the
+.\" Software.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+.\" DEALINGS IN THE SOFTWARE.
+.\"
+.TH XkbSetServerInternalMods __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbSetServerInternalMods \- Sets the modifiers that are consumed by the server
+before events are delivered to the client
+.SH SYNOPSIS
+.HP
+.B Bool XkbSetServerInternalMods
+.BI "(\^Display *" "display" "\^,"
+.BI "unsigned int " "device_spec" "\^,"
+.BI "unsigned int " "affect_real" "\^,"
+.BI "unsigned int " "real_values" "\^,"
+.BI "unsigned int " "affect_virtual" "\^,"
+.BI "unsigned int " "virtual_values" "\^);"
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- display
+connection to the X server
+.TP
+.I \- device_spec
+device ID, or XkbUseCoreKbd
+.TP
+.I \- affect_real
+mask of real modifiers affected by this call
+.TP
+.I \- real_values
+values for affected real modifiers (1=>set, 0=>unset)
+.TP
+.I \- affect_virtual
+mask of virtual modifiers affected by this call
+.TP
+.I \- virtual_values
+values for affected virtual modifiers (1=>set, 0=>unset)
+.SH DESCRIPTION
+.LP
+The core protocol does not provide any means to prevent a modifier from being
+reported in events sent to clients; Xkb, however makes this possible via the
+InternalMods control. It specifies modifiers that should be consumed by the
+server and not reported to clients. When a key is pressed and a modifier that
+has its bit set in the InternalMods control is reported to the server, the
+server uses the modifier when determining the actions to apply for the key. The
+server then clears the bit, so it is not actually reported to the client. In
+addition, modifiers specified in the InternalMods control are not used to
+determine grabs and are not used to calculate core protocol compatibility state.
+
+Manipulate the InternalMods control via the
+.I internal
+field in the XkbControlsRec structure, using
+.I XkbSetControls
+and
+.I XkbGetControls.
+Alternatively, use
+.I XkbSetServerInternalMods.
+
+.I XkbSetServerInternalMods
+sends a request to the server to change the internal modifiers consumed by the
+server.
+.I affect_real
+and
+.I real_values
+are masks of real modifier bits indicating which real modifiers are to be added
+and removed from the server's internal modifiers control. Modifiers selected by
+both
+.I affect_real
+and
+.I real_values
+are added to the server's internal modifiers control; those selected by
+.I affect_real
+but not by
+.I real_values
+are removed from the server's internal modifiers mask. Valid values for
+.I affect_real
+and
+.I real_values
+consist of any combination of the eight core modifier bits: ShiftMask, LockMask,
+ControlMask, Mod1Mask - Mod5Mask.
+.I affect_virtual
+and
+.I virtual_values
+are masks of virtual modifier bits indicating which virtual modifiers are to be
+added and removed from the server's internal modifiers control. Modifiers
+selected by both
+.I affect_virtual
+and
+.I virtual_values
+are added to the server's internal modifiers control; those selected by
+.I affect_virtual
+but not by
+.I virtual_values
+are removed from the server's internal modifiers control. See below for a
+discussion of virtual modifier masks to use in
+.I affect_virtual
+and
+.I virtual_values. XkbSetServerInternalMods
+does not wait for a reply from the server. It returns True if the request was
+sent and False otherwise.
+
+Virtual modifiers are named by converting their string name to an X Atom and
+storing the Atom in the
+.I names.vmods
+array in an XkbDescRec structure. The position of a name Atom in the
+.I names.vmods
+array defines the bit position used to represent the virtual modifier and also
+the index used when accessing virtual modifier information in arrays: the name
+in the i-th (0 relative) entry of
+.I names.vmods
+is the i-th virtual modifier, represented by the mask (1<<i). Throughout Xkb,
+various functions have a parameter that is a mask representing virtual modifier
+choices. In each case, the i-th bit (0 relative) of the mask represents the i-th
+virtual modifier.
+
+To set the name of a virtual modifier, use
+.I XkbSetNames,
+using XkbVirtualModNamesMask in
+.I which
+and the name in the
+.I xkb
+argument; to retrieve indicator names, use
+.I XkbGetNames.
+.SH STRUCTURES
+.LP
+The complete description of an Xkb keyboard is given by an XkbDescRec. The
+component structures in the XkbDescRec represent the major Xkb components
+outlined in Figure 1.1.
+.nf
+
+typedef struct {
+ struct _XDisplay * display; /\(** connection to X server */
+ unsigned short flags; /\(** private to Xkb, do not modify */
+ unsigned short device_spec; /\(** device of interest */
+ KeyCode min_key_code; /\(** minimum keycode for device */
+ KeyCode max_key_code; /\(** maximum keycode for device */
+ XkbControlsPtr ctrls; /\(** controls */
+ XkbServerMapPtr server; /\(** server keymap */
+ XkbClientMapPtr map; /\(** client keymap */
+ XkbIndicatorPtr indicators; /\(** indicator map */
+ XkbNamesPtr names; /\(** names for all components */
+ XkbCompatMapPtr compat; /\(** compatibility map */
+ XkbGeometryPtr geom; /\(** physical geometry of keyboard */
+} XkbDescRec, *XkbDescPtr;
+
+.fi
+The display field points to an X display structure. The flags field is private
+to the library: modifying flags may yield unpredictable results. The device_spec
+field specifies the device identifier of the keyboard input device, or
+XkbUseCoreKeyboard, which specifies the core keyboard device. The min_key_code
+and max_key_code fields specify the least and greatest keycode that can be
+returned by the keyboard.
+
+Each structure component has a corresponding mask bit that is used in function
+calls to indicate that the structure should be manipulated in some manner, such
+as allocating it or freeing it. These masks and their relationships to the
+fields in the XkbDescRec are shown in Table 1.
+
+.TS
+c s s
+l l l
+l l l.
+Table 1 Mask Bits for XkbDescRec
+_
+Mask Bit XkbDescRec Field Value
+_
+XkbControlsMask ctrls (1L<<0)
+XkbServerMapMask server (1L<<1)
+XkbIClientMapMask map (1L<<2)
+XkbIndicatorMapMask indicators (1L<<3)
+XkbNamesMask names (1L<<4)
+XkbCompatMapMask compat (1L<<5)
+XkbGeometryMask geom (1L<<6)
+XkbAllComponentsMask All Fields (0x7f)
+.SH "SEE ALSO"
+.BR XkbGetControls (__libmansuffix__),
+.BR XkbGetNames (__libmansuffix__),
+.BR XkbSetControls (__libmansuffix__),
+.BR XkbSetNames (__libmansuffix__)
diff --git a/libX11/man/xkb/XkbSetXlibControls.man b/libX11/man/xkb/XkbSetXlibControls.man
index e17e7fb5b..05a289899 100644
--- a/libX11/man/xkb/XkbSetXlibControls.man
+++ b/libX11/man/xkb/XkbSetXlibControls.man
@@ -1,105 +1,105 @@
-'\" t
-.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
-.\"
-.\" Permission is hereby granted, free of charge, to any person obtaining a
-.\" copy of this software and associated documentation files (the "Software"),
-.\" to deal in the Software without restriction, including without limitation
-.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
-.\" and/or sell copies of the Software, and to permit persons to whom the
-.\" Software is furnished to do so, subject to the following conditions:
-.\"
-.\" The above copyright notice and this permission notice (including the next
-.\" paragraph) shall be included in all copies or substantial portions of the
-.\" Software.
-.\"
-.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-.\" DEALINGS IN THE SOFTWARE.
-.\"
-.TH XkbSetXlibControls __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
-.SH NAME
-XkbSetXlibControls \- Changes the state of the Library Controls
-.SH SYNOPSIS
-.HP
-.B unsigned int XkbSetXlibControls
-.BI "(\^Display *" "display" "\^,"
-.BI "unsigned long " "bits_to_change" "\^,"
-.BI "unsigned long " "values_for_bits" "\^);"
-.if n .ti +5n
-.if t .ti +.5i
-.SH ARGUMENTS
-.TP
-.I \- display
-connection to X server
-.TP
-.I \- bits_to_change
-selects controls to be modified
-.TP
-.I \- values_for_bits
-turns selected controls on (1) or off (0)
-.SH DESCRIPTION
-.LP
-.I XkbSetXlibControls
-modifies the state of the controls selected by
-.I bits_to_change;
-only the controls selected by
-.I bits_to_change
-are modified. If the bit corresponding to a control is on in
-.I bits_to_change
-and also on in
-.I values_for_bits,
-the control is enabled. If the bit corresponding to a control is on in
-.I bits_to_change
-but off in
-.I values_for_bits,
-the control is disabled.
-.I bits_to_change
-should be an inclusive OR of bits from Table 1.
-
-.TS
-c s
-l l
-l l.
-Table 1 Library Control Masks
-_
-Library Control Mask Value
-_
-XkbLC_ForceLatin1Lookup (1 << 0)
-XkbLC_ConsumeLookupMods (1 << 1)
-XkbLC_AlwaysConsumeShiftAndLock (1 << 2)
-XkbLC_IgnoreNewKeyboards (1 << 3)
-XkbLC_ConsumeKeysOnComposeFail (1 << 29)
-XkbLC_ComposeLED (1 << 30)
-XkbLC_BeepOnComposeFail (1 << 31)
-XkbLC_AllControls (0xc0000007)
-.TE
-.SH "RETURN VALUES"
-.TP 15
-(1 << 0)
-XkbLC_ForceLatin1Lookup
-.TP 15
-(1 << 1)
-XkbLC_ConsumeLookupMods
-.TP 15
-(1 << 2)
-XkbLC_AlwaysConsumeShiftAndLock
-.TP 15
-(1 << 3)
-XkbLC_IgnoreNewKeyboards
-.TP 15
-(1 << 29)
-XkbLC_ConsumeKeysOnComposeFail
-.TP 15
-(1 << 30)
-XkbLC_ComposeLED
-.TP 15
-(1 << 31)
-XkbLC_BeepOnComposeFail
-.TP 15
-(0xc0000007)
-XkbLC_AllControls
-
+'\" t
+.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the "Software"),
+.\" to deal in the Software without restriction, including without limitation
+.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
+.\" and/or sell copies of the Software, and to permit persons to whom the
+.\" Software is furnished to do so, subject to the following conditions:
+.\"
+.\" The above copyright notice and this permission notice (including the next
+.\" paragraph) shall be included in all copies or substantial portions of the
+.\" Software.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+.\" DEALINGS IN THE SOFTWARE.
+.\"
+.TH XkbSetXlibControls __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbSetXlibControls \- Changes the state of the Library Controls
+.SH SYNOPSIS
+.HP
+.B unsigned int XkbSetXlibControls
+.BI "(\^Display *" "display" "\^,"
+.BI "unsigned long " "bits_to_change" "\^,"
+.BI "unsigned long " "values_for_bits" "\^);"
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- display
+connection to X server
+.TP
+.I \- bits_to_change
+selects controls to be modified
+.TP
+.I \- values_for_bits
+turns selected controls on (1) or off (0)
+.SH DESCRIPTION
+.LP
+.I XkbSetXlibControls
+modifies the state of the controls selected by
+.I bits_to_change;
+only the controls selected by
+.I bits_to_change
+are modified. If the bit corresponding to a control is on in
+.I bits_to_change
+and also on in
+.I values_for_bits,
+the control is enabled. If the bit corresponding to a control is on in
+.I bits_to_change
+but off in
+.I values_for_bits,
+the control is disabled.
+.I bits_to_change
+should be an inclusive OR of bits from Table 1.
+
+.TS
+c s
+l l
+l l.
+Table 1 Library Control Masks
+_
+Library Control Mask Value
+_
+XkbLC_ForceLatin1Lookup (1 << 0)
+XkbLC_ConsumeLookupMods (1 << 1)
+XkbLC_AlwaysConsumeShiftAndLock (1 << 2)
+XkbLC_IgnoreNewKeyboards (1 << 3)
+XkbLC_ConsumeKeysOnComposeFail (1 << 29)
+XkbLC_ComposeLED (1 << 30)
+XkbLC_BeepOnComposeFail (1 << 31)
+XkbLC_AllControls (0xc0000007)
+.TE
+.SH "RETURN VALUES"
+.TP 15
+(1 << 0)
+XkbLC_ForceLatin1Lookup
+.TP 15
+(1 << 1)
+XkbLC_ConsumeLookupMods
+.TP 15
+(1 << 2)
+XkbLC_AlwaysConsumeShiftAndLock
+.TP 15
+(1 << 3)
+XkbLC_IgnoreNewKeyboards
+.TP 15
+(1 << 29)
+XkbLC_ConsumeKeysOnComposeFail
+.TP 15
+(1 << 30)
+XkbLC_ComposeLED
+.TP 15
+(1 << 31)
+XkbLC_BeepOnComposeFail
+.TP 15
+(0xc0000007)
+XkbLC_AllControls
+
diff --git a/libX11/man/xkb/XkbTranslateKeyCode.man b/libX11/man/xkb/XkbTranslateKeyCode.man
index 88ee33d89..7f1afdd29 100644
--- a/libX11/man/xkb/XkbTranslateKeyCode.man
+++ b/libX11/man/xkb/XkbTranslateKeyCode.man
@@ -1,71 +1,71 @@
-.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
-.\"
-.\" Permission is hereby granted, free of charge, to any person obtaining a
-.\" copy of this software and associated documentation files (the "Software"),
-.\" to deal in the Software without restriction, including without limitation
-.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
-.\" and/or sell copies of the Software, and to permit persons to whom the
-.\" Software is furnished to do so, subject to the following conditions:
-.\"
-.\" The above copyright notice and this permission notice (including the next
-.\" paragraph) shall be included in all copies or substantial portions of the
-.\" Software.
-.\"
-.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-.\" DEALINGS IN THE SOFTWARE.
-.\"
-.TH XkbTranslateKeyCode __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
-.SH NAME
-XkbTranslateKeyCode \- Translate a keycode to a key symbol and modifiers
-.SH SYNOPSIS
-.HP
-.B Bool XkbTranslateKeyCode
-.BI "(\^XkbDescPtr " "xkb" "\^,"
-.BI "KeyCode " "key" "\^,"
-.BI "unsigned int " "mods" "\^,"
-.BI "unsigned int *" "mods_rtrn" "\^,"
-.BI "KeySym *" "keysym_rtrn" "\^);"
-.if n .ti +5n
-.if t .ti +.5i
-.SH ARGUMENTS
-.TP
-.I \- xkb
-keyboard description to use for translation
-.TP
-.I \- key
-keycode to translate
-.TP
-.I \- mods
-modifiers to apply when translating key
-.TP
-.I \- mods_rtrn
-backfilled with unconsumed modifiers
-.TP
-.I \- keysym_rtrn
-keysym resulting from translation
-.SH DESCRIPTION
-.LP
-.I mods_rtrn
-is backfilled with the modifiers consumed by the translation process.
-.I mods
-is a bitwise inclusive OR of the legal modifier masks: ShiftMask, LockMask,
-ControlMask, Mod1Mask, Mod2Mask, Mod3Mask, Mod4Mask, Mod5Mask.The
-AlwaysConsumeShiftAndLock library control (see below), if enabled, causes
-.I XkbTranslateKeyCode
-to consume shift and lock.
-.I XkbTranslateKeyCode
-returns True if the translation resulted in a keysym, and False if it resulted
-in NoSymbol.
-
-The AlwaysConsumeShiftAndLock control, if enabled, forces
-.I XLookupString
-to consume the Shift and Lock modifiers when processing all keys, even if the
-definition for the key type does not specify these modifiers. The
-AlwaysConsumeShiftAndLock control is unset by default.
-.SH "SEE ALSO"
-.BR XLookupString (__libmansuffix__)
+.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the "Software"),
+.\" to deal in the Software without restriction, including without limitation
+.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
+.\" and/or sell copies of the Software, and to permit persons to whom the
+.\" Software is furnished to do so, subject to the following conditions:
+.\"
+.\" The above copyright notice and this permission notice (including the next
+.\" paragraph) shall be included in all copies or substantial portions of the
+.\" Software.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+.\" DEALINGS IN THE SOFTWARE.
+.\"
+.TH XkbTranslateKeyCode __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbTranslateKeyCode \- Translate a keycode to a key symbol and modifiers
+.SH SYNOPSIS
+.HP
+.B Bool XkbTranslateKeyCode
+.BI "(\^XkbDescPtr " "xkb" "\^,"
+.BI "KeyCode " "key" "\^,"
+.BI "unsigned int " "mods" "\^,"
+.BI "unsigned int *" "mods_rtrn" "\^,"
+.BI "KeySym *" "keysym_rtrn" "\^);"
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- xkb
+keyboard description to use for translation
+.TP
+.I \- key
+keycode to translate
+.TP
+.I \- mods
+modifiers to apply when translating key
+.TP
+.I \- mods_rtrn
+backfilled with unconsumed modifiers
+.TP
+.I \- keysym_rtrn
+keysym resulting from translation
+.SH DESCRIPTION
+.LP
+.I mods_rtrn
+is backfilled with the modifiers consumed by the translation process.
+.I mods
+is a bitwise inclusive OR of the legal modifier masks: ShiftMask, LockMask,
+ControlMask, Mod1Mask, Mod2Mask, Mod3Mask, Mod4Mask, Mod5Mask.The
+AlwaysConsumeShiftAndLock library control (see below), if enabled, causes
+.I XkbTranslateKeyCode
+to consume shift and lock.
+.I XkbTranslateKeyCode
+returns True if the translation resulted in a keysym, and False if it resulted
+in NoSymbol.
+
+The AlwaysConsumeShiftAndLock control, if enabled, forces
+.I XLookupString
+to consume the Shift and Lock modifiers when processing all keys, even if the
+definition for the key type does not specify these modifiers. The
+AlwaysConsumeShiftAndLock control is unset by default.
+.SH "SEE ALSO"
+.BR XLookupString (__libmansuffix__)
diff --git a/libX11/man/xkb/XkbTranslateKeySym.man b/libX11/man/xkb/XkbTranslateKeySym.man
index 10fe1516a..9a23ce283 100644
--- a/libX11/man/xkb/XkbTranslateKeySym.man
+++ b/libX11/man/xkb/XkbTranslateKeySym.man
@@ -1,81 +1,81 @@
-.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
-.\"
-.\" Permission is hereby granted, free of charge, to any person obtaining a
-.\" copy of this software and associated documentation files (the "Software"),
-.\" to deal in the Software without restriction, including without limitation
-.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
-.\" and/or sell copies of the Software, and to permit persons to whom the
-.\" Software is furnished to do so, subject to the following conditions:
-.\"
-.\" The above copyright notice and this permission notice (including the next
-.\" paragraph) shall be included in all copies or substantial portions of the
-.\" Software.
-.\"
-.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-.\" DEALINGS IN THE SOFTWARE.
-.\"
-.TH XkbTranslateKeySym __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
-.SH NAME
-XkbTranslateKeySym \- Find the string and symbol associated with a keysym for a
-given keyboard state
-.SH SYNOPSIS
-.HP
-.B int XkbTranslateKeySym
-.BI "(\^Display *" "dpy" "\^,"
-.BI "KeySym *" "sym_inout" "\^,"
-.BI "unsigned int " "mods" "\^,"
-.BI "char *" "buf" "\^,"
-.BI "int " "nbytes" "\^,"
-.BI "int *" "extra_rtrn" "\^);"
-.if n .ti +5n
-.if t .ti +.5i
-.SH ARGUMENTS
-.TP
-.I \- dpy
-connection to X server
-.TP
-.I \- sym_inout
-symbol to be translated; result of translation
-.TP
-.I \- mods
-modifiers to apply to sym_inout
-.TP
-.I \- buf
-buffer into which returned string is written
-.TP
-.I \- nbytes
-size of buffer in bytes
-.TP
-.I \- extra_rtrn
-number of bytes overflow
-.SH DESCRIPTION
-.LP
-.I XkbTranslateKeySym
-applies the transformations specified in
-.I mods
-to the symbol specified by
-.I sym_inout.
-It returns in
-.I buf
-the string, if any, associated with the keysym for the current locale. If the
-transformations in
-.I mods
-changes the keysym,
-.I sym_inout
-is updated accordingly. If the string returned is larger than
-.I nbytes,
-a count of bytes that does not fit into the buffer is returned in
-.I extra_rtrn. XkbTranslateKeySym
-returns the number of bytes it placed into
-.I buf.
-.SH "RETURN VALUES"
-.TP 15
-buf
-Returns the string, if any, associated with the keysym for the current locale.
-
-
+.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the "Software"),
+.\" to deal in the Software without restriction, including without limitation
+.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
+.\" and/or sell copies of the Software, and to permit persons to whom the
+.\" Software is furnished to do so, subject to the following conditions:
+.\"
+.\" The above copyright notice and this permission notice (including the next
+.\" paragraph) shall be included in all copies or substantial portions of the
+.\" Software.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+.\" DEALINGS IN THE SOFTWARE.
+.\"
+.TH XkbTranslateKeySym __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbTranslateKeySym \- Find the string and symbol associated with a keysym for a
+given keyboard state
+.SH SYNOPSIS
+.HP
+.B int XkbTranslateKeySym
+.BI "(\^Display *" "dpy" "\^,"
+.BI "KeySym *" "sym_inout" "\^,"
+.BI "unsigned int " "mods" "\^,"
+.BI "char *" "buf" "\^,"
+.BI "int " "nbytes" "\^,"
+.BI "int *" "extra_rtrn" "\^);"
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- dpy
+connection to X server
+.TP
+.I \- sym_inout
+symbol to be translated; result of translation
+.TP
+.I \- mods
+modifiers to apply to sym_inout
+.TP
+.I \- buf
+buffer into which returned string is written
+.TP
+.I \- nbytes
+size of buffer in bytes
+.TP
+.I \- extra_rtrn
+number of bytes overflow
+.SH DESCRIPTION
+.LP
+.I XkbTranslateKeySym
+applies the transformations specified in
+.I mods
+to the symbol specified by
+.I sym_inout.
+It returns in
+.I buf
+the string, if any, associated with the keysym for the current locale. If the
+transformations in
+.I mods
+changes the keysym,
+.I sym_inout
+is updated accordingly. If the string returned is larger than
+.I nbytes,
+a count of bytes that does not fit into the buffer is returned in
+.I extra_rtrn. XkbTranslateKeySym
+returns the number of bytes it placed into
+.I buf.
+.SH "RETURN VALUES"
+.TP 15
+buf
+Returns the string, if any, associated with the keysym for the current locale.
+
+
diff --git a/libX11/man/xkb/XkbUpdateMapFromCore.man b/libX11/man/xkb/XkbUpdateMapFromCore.man
index 9da40332e..e65d598d2 100644
--- a/libX11/man/xkb/XkbUpdateMapFromCore.man
+++ b/libX11/man/xkb/XkbUpdateMapFromCore.man
@@ -1,110 +1,110 @@
-'\" t
-.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
-.\"
-.\" Permission is hereby granted, free of charge, to any person obtaining a
-.\" copy of this software and associated documentation files (the "Software"),
-.\" to deal in the Software without restriction, including without limitation
-.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
-.\" and/or sell copies of the Software, and to permit persons to whom the
-.\" Software is furnished to do so, subject to the following conditions:
-.\"
-.\" The above copyright notice and this permission notice (including the next
-.\" paragraph) shall be included in all copies or substantial portions of the
-.\" Software.
-.\"
-.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-.\" DEALINGS IN THE SOFTWARE.
-.\"
-.TH XkbUpdateMapFromCore __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
-.SH NAME
-XkbUpdateMapFromCore \- Update a local Xkb keyboard map to reflect the mapping
-expressed by a core format mapping
-.SH SYNOPSIS
-.HP
-.B Bool XkbUpdateMapFromCore
-.BI "(\^XkbDescPtr " "xkb" "\^,"
-.BI "KeyCode " "first_key" "\^,"
-.BI "int " "num_keys" "\^,"
-.BI "int " "map_width" "\^,"
-.BI "KeySym *" "core_keysyms" "\^,"
-.BI "XkbChangesPtr " "changes" "\^);"
-.if n .ti +5n
-.if t .ti +.5i
-.SH ARGUMENTS
-.TP
-.I \- xkb
-keyboard description to update
-.TP
-.I \- first_key
-keycode of first key description to update
-.TP
-.I \- num_keys
-number of key descriptions to update
-.TP
-.I \- map_width
-width of core protocol keymap
-.TP
-.I \- core_keysyms
-symbols in core protocol keymap
-.TP
-.I \- changes
-backfilled with changes made to Xkb
-.SH DESCRIPTION
-.LP
-Xkb provides several functions that make it easier to apply the compatibility
-map to configure a client-side Xkb keyboard mapping, given a core protocol
-representation of part or all of a keyboard mapping. Obtain a core protocol
-representation of a keyboard mapping from an actual server (by using
-.I XGetKeyboardMapping,
-for example), a data file, or some other source.
-
-.I XkbUpdateMapFromCore
-interprets input argument information representing a keyboard map in core format
-to update the Xkb keyboard description passed in
-.I xkb.
-Only a portion of the Xkb map is updated - the portion corresponding to keys
-with keycodes in the range
-.I first_key
-through
-.I first_key + num_keys - 1.
-If
-.I XkbUpdateMapFromCore
-is being called in response to a MappingNotify event,
-.I first_key
-and
-.I num_keys
-are reported in the MappingNotify event.
-.I core_keysyms
-contains the keysyms corresponding to the keycode range being updated, in core
-keyboard description order.
-.I map_width
-is the number of keysyms per key in
-.I core_keysyms.
-Thus, the first
-.I map_width
-entries in
-.I core_keysyms
-are for the key with keycode
-.I first_key,
-the next
-.I map_width
-entries are for key
-.I first_key + 1,
-and so on.
-
-In addition to modifying the Xkb keyboard mapping in
-.I xkb, XkbUpdateMapFromCore
-backfills the changes structure whose address is passed in
-.I changes
-to indicate the modifications that were made. You may then use
-.I changes
-in subsequent calls such as
-.I XkbSetMap,
-to propagate the local modifications to a server.
-.SH "SEE ALSO"
-.BR XkbSetMap (__libmansuffix__)
+'\" t
+.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the "Software"),
+.\" to deal in the Software without restriction, including without limitation
+.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
+.\" and/or sell copies of the Software, and to permit persons to whom the
+.\" Software is furnished to do so, subject to the following conditions:
+.\"
+.\" The above copyright notice and this permission notice (including the next
+.\" paragraph) shall be included in all copies or substantial portions of the
+.\" Software.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+.\" DEALINGS IN THE SOFTWARE.
+.\"
+.TH XkbUpdateMapFromCore __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbUpdateMapFromCore \- Update a local Xkb keyboard map to reflect the mapping
+expressed by a core format mapping
+.SH SYNOPSIS
+.HP
+.B Bool XkbUpdateMapFromCore
+.BI "(\^XkbDescPtr " "xkb" "\^,"
+.BI "KeyCode " "first_key" "\^,"
+.BI "int " "num_keys" "\^,"
+.BI "int " "map_width" "\^,"
+.BI "KeySym *" "core_keysyms" "\^,"
+.BI "XkbChangesPtr " "changes" "\^);"
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- xkb
+keyboard description to update
+.TP
+.I \- first_key
+keycode of first key description to update
+.TP
+.I \- num_keys
+number of key descriptions to update
+.TP
+.I \- map_width
+width of core protocol keymap
+.TP
+.I \- core_keysyms
+symbols in core protocol keymap
+.TP
+.I \- changes
+backfilled with changes made to Xkb
+.SH DESCRIPTION
+.LP
+Xkb provides several functions that make it easier to apply the compatibility
+map to configure a client-side Xkb keyboard mapping, given a core protocol
+representation of part or all of a keyboard mapping. Obtain a core protocol
+representation of a keyboard mapping from an actual server (by using
+.I XGetKeyboardMapping,
+for example), a data file, or some other source.
+
+.I XkbUpdateMapFromCore
+interprets input argument information representing a keyboard map in core format
+to update the Xkb keyboard description passed in
+.I xkb.
+Only a portion of the Xkb map is updated - the portion corresponding to keys
+with keycodes in the range
+.I first_key
+through
+.I first_key + num_keys - 1.
+If
+.I XkbUpdateMapFromCore
+is being called in response to a MappingNotify event,
+.I first_key
+and
+.I num_keys
+are reported in the MappingNotify event.
+.I core_keysyms
+contains the keysyms corresponding to the keycode range being updated, in core
+keyboard description order.
+.I map_width
+is the number of keysyms per key in
+.I core_keysyms.
+Thus, the first
+.I map_width
+entries in
+.I core_keysyms
+are for the key with keycode
+.I first_key,
+the next
+.I map_width
+entries are for key
+.I first_key + 1,
+and so on.
+
+In addition to modifying the Xkb keyboard mapping in
+.I xkb, XkbUpdateMapFromCore
+backfills the changes structure whose address is passed in
+.I changes
+to indicate the modifications that were made. You may then use
+.I changes
+in subsequent calls such as
+.I XkbSetMap,
+to propagate the local modifications to a server.
+.SH "SEE ALSO"
+.BR XkbSetMap (__libmansuffix__)
diff --git a/libX11/man/xkb/XkbVirtualModsToReal.man b/libX11/man/xkb/XkbVirtualModsToReal.man
index a1f3973aa..9c1ebbf4a 100644
--- a/libX11/man/xkb/XkbVirtualModsToReal.man
+++ b/libX11/man/xkb/XkbVirtualModsToReal.man
@@ -1,130 +1,130 @@
-.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
-.\"
-.\" Permission is hereby granted, free of charge, to any person obtaining a
-.\" copy of this software and associated documentation files (the "Software"),
-.\" to deal in the Software without restriction, including without limitation
-.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
-.\" and/or sell copies of the Software, and to permit persons to whom the
-.\" Software is furnished to do so, subject to the following conditions:
-.\"
-.\" The above copyright notice and this permission notice (including the next
-.\" paragraph) shall be included in all copies or substantial portions of the
-.\" Software.
-.\"
-.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-.\" DEALINGS IN THE SOFTWARE.
-.\"
-.TH XkbVirtualModsToReal __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
-.SH NAME
-XkbVirtualModsToReal \- Determines the mapping of virtual modifiers to core X
-protocol modifiers
-.SH SYNOPSIS
-.HP
-.B Bool XkbVirtualModsToReal
-.BI "(\^XkbDescPtr " "xkb" "\^,"
-.BI "unsigned int " "virtual_mask" "\^,"
-.BI "unsigned int *" "mask_rtrn" "\^);"
-.if n .ti +5n
-.if t .ti +.5i
-.SH ARGUMENTS
-.TP
-.I \- xkb
-keyboard description for input device
-.TP
-.I \- virtual_mask
-virtual modifier mask to translate
-.TP
-.I \- mask_rtrn
-backfilled with real modifiers
-.SH DESCRIPTION
-.LP
-Xkb maintains a
-.I virtual modifier mapping,
-which lists the virtual modifiers associated with, or bound to, each key. The
-real modifiers bound to a virtual modifier always include all of the modifiers
-bound to any of the keys that specify that virtual modifier in their virtual
-modifier mapping. The
-.I server.vmodmap
-array indicates which virtual modifiers are bound to each key; each entry is a
-bitmask for the virtual modifier bits. The
-.I server.vmodmap
-array is indexed by keycode.
-
-The
-.I vmodmap
-and
-.I vmods
-members of the server map are the "master" virtual modifier definitions. Xkb
-automatically propagates any changes to these fields to all other fields that
-use virtual modifier mappings.
-
-For example, if Mod3 is bound to the Num_Lock key by the core protocol modifier
-mapping, and the NumLock virtual modifier is bound to they Num_Lock key by the
-virtual modifier mapping, Mod3 is added to the set of modifiers associated with
-NumLock.
-
-The virtual modifier mapping is normally updated whenever actions are
-automatically applied to symbols and few applications should need to change the
-virtual modifier mapping explicitly.
-
-Use
-.I XkbGetMap
-to get the virtual modifiers from the server or use
-.I XkbGetVirtualMods
-to update a local copy of the virtual modifiers bindings from the server. To set
-the binding of a virtual modifier to a real modifier, use
-.I XkbGetVirtualMods
-
-If the keyboard description defined by
-.I xkb
-includes bindings for virtual modifiers,
-.I XkbVirtualModsToReal
-uses those bindings to determine the set of real modifiers that correspond to
-the set of virtual modifiers specified in
-.I virtual_mask.
-The
-.I virtual_mask
-parameter is a mask specifying the virtual modifiers to translate; the i-th bit
-(0 relative) of the mask represents the i-th virtual modifier. If
-.I mask_rtrn
-is non-NULL,
-.I XkbVirtualModsToReal
-backfills it with the resulting real modifier mask. If the keyboard description
-in
-.I xkb
-does not include virtual modifier bindings,
-.I XkbVirtualModsToReal
-returns False; otherwise, it returns True.
-.SH "RETURN VALUES"
-.TP 15
-True
-The
-.I XkbVirtualModsToReal
-function returns True if the keyboard description
-in
-.I xkb
-does include virtual modifier bindings.
-.TP 15
-False
-The
-.I XkbVirtualModsToReal
-function returns False if the keyboard description
-in
-.I xkb
-does not include virtual modifier bindings.
-.SH "SEE ALSO"
-.BR XkbGetMap (__libmansuffix__),
-.BR XkbGetVirtualMods (__libmansuffix__)
-.SH NOTES
-.LP
-It is possible for a local (client-side) keyboard description (the
-.I xkb
-parameter) to not contain any virtual modifier information (simply because the
-client has not requested it) while the server's corresponding definition may
-contain virtual modifier information.
-
+.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the "Software"),
+.\" to deal in the Software without restriction, including without limitation
+.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
+.\" and/or sell copies of the Software, and to permit persons to whom the
+.\" Software is furnished to do so, subject to the following conditions:
+.\"
+.\" The above copyright notice and this permission notice (including the next
+.\" paragraph) shall be included in all copies or substantial portions of the
+.\" Software.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+.\" DEALINGS IN THE SOFTWARE.
+.\"
+.TH XkbVirtualModsToReal __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbVirtualModsToReal \- Determines the mapping of virtual modifiers to core X
+protocol modifiers
+.SH SYNOPSIS
+.HP
+.B Bool XkbVirtualModsToReal
+.BI "(\^XkbDescPtr " "xkb" "\^,"
+.BI "unsigned int " "virtual_mask" "\^,"
+.BI "unsigned int *" "mask_rtrn" "\^);"
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- xkb
+keyboard description for input device
+.TP
+.I \- virtual_mask
+virtual modifier mask to translate
+.TP
+.I \- mask_rtrn
+backfilled with real modifiers
+.SH DESCRIPTION
+.LP
+Xkb maintains a
+.I virtual modifier mapping,
+which lists the virtual modifiers associated with, or bound to, each key. The
+real modifiers bound to a virtual modifier always include all of the modifiers
+bound to any of the keys that specify that virtual modifier in their virtual
+modifier mapping. The
+.I server.vmodmap
+array indicates which virtual modifiers are bound to each key; each entry is a
+bitmask for the virtual modifier bits. The
+.I server.vmodmap
+array is indexed by keycode.
+
+The
+.I vmodmap
+and
+.I vmods
+members of the server map are the "master" virtual modifier definitions. Xkb
+automatically propagates any changes to these fields to all other fields that
+use virtual modifier mappings.
+
+For example, if Mod3 is bound to the Num_Lock key by the core protocol modifier
+mapping, and the NumLock virtual modifier is bound to they Num_Lock key by the
+virtual modifier mapping, Mod3 is added to the set of modifiers associated with
+NumLock.
+
+The virtual modifier mapping is normally updated whenever actions are
+automatically applied to symbols and few applications should need to change the
+virtual modifier mapping explicitly.
+
+Use
+.I XkbGetMap
+to get the virtual modifiers from the server or use
+.I XkbGetVirtualMods
+to update a local copy of the virtual modifiers bindings from the server. To set
+the binding of a virtual modifier to a real modifier, use
+.I XkbGetVirtualMods
+
+If the keyboard description defined by
+.I xkb
+includes bindings for virtual modifiers,
+.I XkbVirtualModsToReal
+uses those bindings to determine the set of real modifiers that correspond to
+the set of virtual modifiers specified in
+.I virtual_mask.
+The
+.I virtual_mask
+parameter is a mask specifying the virtual modifiers to translate; the i-th bit
+(0 relative) of the mask represents the i-th virtual modifier. If
+.I mask_rtrn
+is non-NULL,
+.I XkbVirtualModsToReal
+backfills it with the resulting real modifier mask. If the keyboard description
+in
+.I xkb
+does not include virtual modifier bindings,
+.I XkbVirtualModsToReal
+returns False; otherwise, it returns True.
+.SH "RETURN VALUES"
+.TP 15
+True
+The
+.I XkbVirtualModsToReal
+function returns True if the keyboard description
+in
+.I xkb
+does include virtual modifier bindings.
+.TP 15
+False
+The
+.I XkbVirtualModsToReal
+function returns False if the keyboard description
+in
+.I xkb
+does not include virtual modifier bindings.
+.SH "SEE ALSO"
+.BR XkbGetMap (__libmansuffix__),
+.BR XkbGetVirtualMods (__libmansuffix__)
+.SH NOTES
+.LP
+It is possible for a local (client-side) keyboard description (the
+.I xkb
+parameter) to not contain any virtual modifier information (simply because the
+client has not requested it) while the server's corresponding definition may
+contain virtual modifier information.
+
diff --git a/libX11/modules/Makefile.am b/libX11/modules/Makefile.am
index 1ef0dfbd7..76e33839c 100644
--- a/libX11/modules/Makefile.am
+++ b/libX11/modules/Makefile.am
@@ -1 +1 @@
-SUBDIRS=im lc om
+SUBDIRS=im lc om
diff --git a/libX11/modules/im/Makefile.am b/libX11/modules/im/Makefile.am
index 330a6dd6d..0974cf615 100644
--- a/libX11/modules/im/Makefile.am
+++ b/libX11/modules/im/Makefile.am
@@ -1 +1 @@
-SUBDIRS=ximcp
+SUBDIRS=ximcp
diff --git a/libX11/modules/im/ximcp/Makefile.am b/libX11/modules/im/ximcp/Makefile.am
index 319b3089e..16a6ca878 100644
--- a/libX11/modules/im/ximcp/Makefile.am
+++ b/libX11/modules/im/ximcp/Makefile.am
@@ -1,59 +1,59 @@
-AM_CPPFLAGS= \
- -I$(top_srcdir)/include \
- -I$(top_srcdir)/include/X11 \
- -I$(top_builddir)/include \
- -I$(top_builddir)/include/X11 \
- -I$(top_srcdir)/src/xcms \
- -I$(top_srcdir)/src/xkb \
- -I$(top_srcdir)/src/xlibi18n \
- -D_BSD_SOURCE -DXIM_t -DTRANS_CLIENT
-
-AM_CFLAGS= \
- $(X11_CFLAGS) \
- $(BIGFONT_CFLAGS) \
- $(MALLOC_ZERO_CFLAGS) \
- $(CWARNFLAGS)
-
-if XLIB_LOADABLE_I18N
-
-commonlibdir = $(X11_LOCALELIBDIR)/common
-commonlib_LTLIBRARIES=ximcp.la
-ximcp_la_LDFLAGS = -module -version-number 2:0:0
-ximcp_la_LIBADD = $(I18N_MODULE_LIBS)
-
-else
-
-noinst_LTLIBRARIES=libximcp.la
-
-endif
-
-
-ximcp_la_SOURCES = \
- imCallbk.c \
- imDefFlt.c \
- imDefIc.c \
- imDefIm.c \
- imDefLkup.c \
- imDispch.c \
- imEvToWire.c \
- imExten.c \
- imImSw.c \
- imInsClbk.c \
- imInt.c \
- imLcFlt.c \
- imLcGIc.c \
- imLcIc.c \
- imLcIm.c \
- imLcLkup.c \
- imLcPrs.c \
- imLcSIc.c \
- imRmAttr.c \
- imRm.c \
- imThaiFlt.c \
- imThaiIc.c \
- imThaiIm.c \
- imTrans.c \
- imTransR.c \
- imTrX.c
-
-libximcp_la_SOURCES = $(ximcp_la_SOURCES)
+AM_CPPFLAGS= \
+ -I$(top_srcdir)/include \
+ -I$(top_srcdir)/include/X11 \
+ -I$(top_builddir)/include \
+ -I$(top_builddir)/include/X11 \
+ -I$(top_srcdir)/src/xcms \
+ -I$(top_srcdir)/src/xkb \
+ -I$(top_srcdir)/src/xlibi18n \
+ -D_BSD_SOURCE -DXIM_t -DTRANS_CLIENT
+
+AM_CFLAGS= \
+ $(X11_CFLAGS) \
+ $(BIGFONT_CFLAGS) \
+ $(MALLOC_ZERO_CFLAGS) \
+ $(CWARNFLAGS)
+
+if XLIB_LOADABLE_I18N
+
+commonlibdir = $(X11_LOCALELIBDIR)/common
+commonlib_LTLIBRARIES=ximcp.la
+ximcp_la_LDFLAGS = -module -version-number 2:0:0
+ximcp_la_LIBADD = $(I18N_MODULE_LIBS)
+
+else
+
+noinst_LTLIBRARIES=libximcp.la
+
+endif
+
+
+ximcp_la_SOURCES = \
+ imCallbk.c \
+ imDefFlt.c \
+ imDefIc.c \
+ imDefIm.c \
+ imDefLkup.c \
+ imDispch.c \
+ imEvToWire.c \
+ imExten.c \
+ imImSw.c \
+ imInsClbk.c \
+ imInt.c \
+ imLcFlt.c \
+ imLcGIc.c \
+ imLcIc.c \
+ imLcIm.c \
+ imLcLkup.c \
+ imLcPrs.c \
+ imLcSIc.c \
+ imRmAttr.c \
+ imRm.c \
+ imThaiFlt.c \
+ imThaiIc.c \
+ imThaiIm.c \
+ imTrans.c \
+ imTransR.c \
+ imTrX.c
+
+libximcp_la_SOURCES = $(ximcp_la_SOURCES)
diff --git a/libX11/modules/im/ximcp/imEvToWire.c b/libX11/modules/im/ximcp/imEvToWire.c
index 8dd263381..497c86598 100644
--- a/libX11/modules/im/ximcp/imEvToWire.c
+++ b/libX11/modules/im/ximcp/imEvToWire.c
@@ -1,788 +1,788 @@
-/***********************************************************
-Copyright 1993 by Digital Equipment Corporation, Maynard, Massachusetts,
-
- All Rights Reserved
-
-Permission to use, copy, modify, and distribute this software and its
-documentation for any purpose and without fee is hereby granted,
-provided that the above copyright notice appear in all copies and that
-both that copyright notice and this permission notice appear in
-supporting documentation, and that the name of Digital not be
-used in advertising or publicity pertaining to distribution of the
-software without specific, written prior permission.
-
-DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
-ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
-DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
-ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
-WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
-ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
-SOFTWARE.
-
-******************************************************************/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include <X11/Xlibint.h>
-#include <X11/Xlib.h>
-#include "Ximint.h"
-
-
-#define sw16(n, s) ((s) ? \
- (((n) << 8 & 0xff00) | \
- ((n) >> 8 & 0xff) \
- ) : n)
-
-#define sw32(n, s) ((s) ? \
- (((n) << 24 & 0xff000000) | \
- ((n) << 8 & 0xff0000) | \
- ((n) >> 8 & 0xff00) | \
- ((n) >> 24 & 0xff) \
- ) : n)
-
-Status
-_XimProtoEventToWire(
- register XEvent *re, /* pointer to where event should be reformatted */
- register xEvent *event, /* wire protocol event */
- Bool sw) /* swap byte? */
-{
- switch (event->u.u.type = re->type) {
- case KeyPress:
- case KeyRelease:
- {
- register XKeyEvent *ev = (XKeyEvent*) re;
- event->u.keyButtonPointer.root = sw32(ev->root, sw);
- event->u.keyButtonPointer.event =
- sw32(ev->window, sw);
- event->u.keyButtonPointer.child =
- sw32(ev->subwindow, sw);
- event->u.keyButtonPointer.time = sw32(ev->time, sw);
- event->u.keyButtonPointer.eventX = sw16(ev->x, sw) ;
- event->u.keyButtonPointer.eventY = sw16(ev->y, sw) ;
- event->u.keyButtonPointer.rootX =
- sw16(ev->x_root, sw);
- event->u.keyButtonPointer.rootY =
- sw16(ev->y_root, sw);
- event->u.keyButtonPointer.state = sw16(ev->state, sw);
- event->u.keyButtonPointer.sameScreen = ev->same_screen;
- event->u.u.detail = ev->keycode;
- }
- break;
- case ButtonPress:
- case ButtonRelease:
- {
- register XButtonEvent *ev = (XButtonEvent *) re;
- event->u.keyButtonPointer.root = sw32(ev->root, sw);
- event->u.keyButtonPointer.event = sw32(ev->window, sw);
- event->u.keyButtonPointer.child = sw32(ev->subwindow, sw);
- event->u.keyButtonPointer.time = sw32(ev->time, sw);
- event->u.keyButtonPointer.eventX = sw16(ev->x, sw);
- event->u.keyButtonPointer.eventY = sw16(ev->y, sw);
- event->u.keyButtonPointer.rootX = sw16(ev->x_root, sw);
- event->u.keyButtonPointer.rootY = sw16(ev->y_root, sw);
- event->u.keyButtonPointer.state = sw16(ev->state, sw);
- event->u.keyButtonPointer.sameScreen = ev->same_screen;
- event->u.u.detail = ev->button;
- }
- break;
- case MotionNotify:
- {
- register XMotionEvent *ev = (XMotionEvent *)re;
- event->u.keyButtonPointer.root = sw32(ev->root, sw);
- event->u.keyButtonPointer.event = sw32(ev->window, sw);
- event->u.keyButtonPointer.child = sw32(ev->subwindow, sw);
- event->u.keyButtonPointer.time = sw32(ev->time, sw);
- event->u.keyButtonPointer.eventX= sw16(ev->x, sw);
- event->u.keyButtonPointer.eventY= sw16(ev->y, sw);
- event->u.keyButtonPointer.rootX = sw16(ev->x_root, sw);
- event->u.keyButtonPointer.rootY = sw16(ev->y_root, sw);
- event->u.keyButtonPointer.state = sw16(ev->state, sw);
- event->u.keyButtonPointer.sameScreen= ev->same_screen;
- event->u.u.detail = ev->is_hint;
- }
- break;
- case EnterNotify:
- case LeaveNotify:
- {
- register XCrossingEvent *ev = (XCrossingEvent *) re;
- event->u.enterLeave.root = sw32(ev->root, sw);
- event->u.enterLeave.event = sw32(ev->window, sw);
- event->u.enterLeave.child = sw32(ev->subwindow, sw);
- event->u.enterLeave.time = sw32(ev->time, sw);
- event->u.enterLeave.eventX = sw16(ev->x, sw);
- event->u.enterLeave.eventY = sw16(ev->y, sw);
- event->u.enterLeave.rootX = sw16(ev->x_root, sw);
- event->u.enterLeave.rootY = sw16(ev->y_root, sw);
- event->u.enterLeave.state = sw16(ev->state, sw);
- event->u.enterLeave.mode = ev->mode;
- event->u.enterLeave.flags = 0;
- if (ev->same_screen) {
- event->u.enterLeave.flags |= ELFlagSameScreen;
- }
- if (ev->focus) {
- event->u.enterLeave.flags |= ELFlagFocus;
- }
- event->u.u.detail = ev->detail;
- }
- break;
- case FocusIn:
- case FocusOut:
- {
- register XFocusChangeEvent *ev = (XFocusChangeEvent *) re;
- event->u.focus.window = sw32(ev->window, sw);
- event->u.focus.mode = ev->mode;
- event->u.u.detail = ev->detail;
- }
- break;
- case KeymapNotify:
- {
- register XKeymapEvent *ev = (XKeymapEvent *) re;
- memcpy((char *)(((xKeymapEvent *) event)->map),
- &ev->key_vector[1],
- sizeof (((xKeymapEvent *) event)->map));
- }
- break;
- case Expose:
- {
- register XExposeEvent *ev = (XExposeEvent *) re;
- event->u.expose.window = sw32(ev->window, sw);
- event->u.expose.x = sw16(ev->x, sw);
- event->u.expose.y = sw16(ev->y, sw);
- event->u.expose.width = sw16(ev->width, sw);
- event->u.expose.height = sw16(ev->height, sw);
- event->u.expose.count = sw16(ev->count, sw);
- }
- break;
- case GraphicsExpose:
- {
- register XGraphicsExposeEvent *ev =
- (XGraphicsExposeEvent *) re;
- event->u.graphicsExposure.drawable = sw32(ev->drawable, sw);
- event->u.graphicsExposure.x = sw16(ev->x, sw);
- event->u.graphicsExposure.y = sw16(ev->y, sw);
- event->u.graphicsExposure.width = sw16(ev->width, sw);
- event->u.graphicsExposure.height = sw16(ev->height, sw);
- event->u.graphicsExposure.count = sw16(ev->count, sw);
- event->u.graphicsExposure.majorEvent= ev->major_code;
- event->u.graphicsExposure.minorEvent= sw16(ev->minor_code, sw);
- }
- break;
- case NoExpose:
- {
- register XNoExposeEvent *ev = (XNoExposeEvent *) re;
- event->u.noExposure.drawable = sw32(ev->drawable, sw);
- event->u.noExposure.majorEvent = ev->major_code;
- event->u.noExposure.minorEvent = sw16(ev->minor_code, sw);
- }
- break;
- case VisibilityNotify:
- {
- register XVisibilityEvent *ev = (XVisibilityEvent *) re;
- event->u.visibility.window = sw32(ev->window, sw);
- event->u.visibility.state = ev->state;
- }
- break;
- case CreateNotify:
- {
- register XCreateWindowEvent *ev =
- (XCreateWindowEvent *) re;
- event->u.createNotify.window = sw32(ev->window, sw);
- event->u.createNotify.parent = sw32(ev->parent, sw);
- event->u.createNotify.x = sw16(ev->x, sw);
- event->u.createNotify.y = sw16(ev->y, sw);
- event->u.createNotify.width = sw16(ev->width, sw);
- event->u.createNotify.height = sw16(ev->height, sw);
- event->u.createNotify.borderWidth = sw16(ev->border_width, sw);
- event->u.createNotify.override = ev->override_redirect;
- }
- break;
- case DestroyNotify:
- {
- register XDestroyWindowEvent *ev =
- (XDestroyWindowEvent *) re;
- event->u.destroyNotify.window = sw32(ev->window, sw);
- event->u.destroyNotify.event = sw32(ev->event, sw);
- }
- break;
- case UnmapNotify:
- {
- register XUnmapEvent *ev = (XUnmapEvent *) re;
- event->u.unmapNotify.window = sw32(ev->window, sw);
- event->u.unmapNotify.event = sw32(ev->event, sw);
- event->u.unmapNotify.fromConfigure = ev->from_configure;
- }
- break;
- case MapNotify:
- {
- register XMapEvent *ev = (XMapEvent *) re;
- event->u.mapNotify.window = sw32(ev->window, sw);
- event->u.mapNotify.event = sw32(ev->event, sw);
- event->u.mapNotify.override = ev->override_redirect;
- }
- break;
- case MapRequest:
- {
- register XMapRequestEvent *ev = (XMapRequestEvent *) re;
- event->u.mapRequest.window = sw32(ev->window, sw);
- event->u.mapRequest.parent = sw32(ev->parent, sw);
- }
- break;
- case ReparentNotify:
- {
- register XReparentEvent *ev = (XReparentEvent *) re;
- event->u.reparent.window = sw32(ev->window, sw);
- event->u.reparent.event = sw32(ev->event, sw);
- event->u.reparent.parent = sw32(ev->parent, sw);
- event->u.reparent.x = sw16(ev->x, sw);
- event->u.reparent.y = sw16(ev->y, sw);
- event->u.reparent.override = ev->override_redirect;
- }
- break;
- case ConfigureNotify:
- {
- register XConfigureEvent *ev = (XConfigureEvent *) re;
- event->u.configureNotify.window = sw32(ev->window, sw);
- event->u.configureNotify.event = sw32(ev->event, sw);
- event->u.configureNotify.aboveSibling = sw32(ev->above, sw);
- event->u.configureNotify.x = sw16(ev->x, sw);
- event->u.configureNotify.y = sw16(ev->y, sw);
- event->u.configureNotify.width = sw16(ev->width, sw);
- event->u.configureNotify.height = sw16(ev->height, sw);
- event->u.configureNotify.borderWidth= sw16(ev->border_width, sw);
- event->u.configureNotify.override = ev->override_redirect;
- }
- break;
- case ConfigureRequest:
- {
- register XConfigureRequestEvent *ev =
- (XConfigureRequestEvent *) re;
- event->u.configureRequest.window = sw32(ev->window, sw);
- event->u.configureRequest.parent = sw32(ev->parent, sw);
- event->u.configureRequest.sibling = sw32(ev->above, sw);
- event->u.configureRequest.x = sw16(ev->x, sw);
- event->u.configureRequest.y = sw16(ev->y, sw);
- event->u.configureRequest.width = sw16(ev->width, sw);
- event->u.configureRequest.height = sw16(ev->height, sw);
- event->u.configureRequest.borderWidth= sw16(ev->border_width, sw);
- event->u.configureRequest.valueMask= sw16(ev->value_mask, sw);
- event->u.u.detail = ev->detail;
- }
- break;
- case GravityNotify:
- {
- register XGravityEvent *ev = (XGravityEvent *) re;
- event->u.gravity.window = sw32(ev->window, sw);
- event->u.gravity.event = sw32(ev->event, sw);
- event->u.gravity.x = sw16(ev->x, sw);
- event->u.gravity.y = sw16(ev->y, sw);
- }
- break;
- case ResizeRequest:
- {
- register XResizeRequestEvent *ev =
- (XResizeRequestEvent *) re;
- event->u.resizeRequest.window = sw32(ev->window, sw);
- event->u.resizeRequest.width = sw16(ev->width, sw);
- event->u.resizeRequest.height = sw16(ev->height, sw);
- }
- break;
- case CirculateNotify:
- {
- register XCirculateEvent *ev = (XCirculateEvent *) re;
- event->u.circulate.window = sw32(ev->window, sw);
- event->u.circulate.event = sw32(ev->event, sw);
- event->u.circulate.place = ev->place;
- }
- break;
- case CirculateRequest:
- {
- register XCirculateRequestEvent *ev =
- (XCirculateRequestEvent *) re;
- event->u.circulate.window = sw32(ev->window, sw);
- event->u.circulate.event = sw32(ev->parent, sw);
- event->u.circulate.place = ev->place;
- }
- break;
- case PropertyNotify:
- {
- register XPropertyEvent *ev = (XPropertyEvent *) re;
- event->u.property.window = sw32(ev->window, sw);
- event->u.property.atom = sw32(ev->atom, sw);
- event->u.property.time = sw32(ev->time, sw);
- event->u.property.state = ev->state;
- }
- break;
- case SelectionClear:
- {
- register XSelectionClearEvent *ev =
- (XSelectionClearEvent *) re;
- event->u.selectionClear.window = sw32(ev->window, sw);
- event->u.selectionClear.atom = sw32(ev->selection, sw);
- event->u.selectionClear.time = sw32(ev->time, sw);
- }
- break;
- case SelectionRequest:
- {
- register XSelectionRequestEvent *ev =
- (XSelectionRequestEvent *) re;
- event->u.selectionRequest.owner = sw32(ev->owner, sw);
- event->u.selectionRequest.requestor = sw32(ev->requestor, sw);
- event->u.selectionRequest.selection = sw32(ev->selection, sw);
- event->u.selectionRequest.target = sw32(ev->target, sw);
- event->u.selectionRequest.property = sw32(ev->property, sw);
- event->u.selectionRequest.time = sw32(ev->time, sw);
- }
- break;
- case SelectionNotify:
- {
- register XSelectionEvent *ev = (XSelectionEvent *) re;
- event->u.selectionNotify.requestor = sw32(ev->requestor, sw);
- event->u.selectionNotify.selection = sw32(ev->selection, sw);
- event->u.selectionNotify.target = sw32(ev->target, sw);
- event->u.selectionNotify.property = sw32(ev->property, sw);
- event->u.selectionNotify.time = sw32(ev->time, sw);
- }
- break;
- case ColormapNotify:
- {
- register XColormapEvent *ev = (XColormapEvent *) re;
- event->u.colormap.window = sw32(ev->window, sw);
- event->u.colormap.colormap = sw32(ev->colormap, sw);
- event->u.colormap.new = ev->new;
- event->u.colormap.state = ev->state;
- }
- break;
- case ClientMessage:
- {
- register int i;
- register XClientMessageEvent *ev
- = (XClientMessageEvent *) re;
- event->u.clientMessage.window = sw32(ev->window, sw);
- event->u.u.detail = ev->format;
- switch (ev->format) {
- case 8:
- event->u.clientMessage.u.b.type = sw32(ev->message_type, sw);
- for (i = 0; i < 20; i++)
- event->u.clientMessage.u.b.bytes[i] = ev->data.b[i];
- break;
- case 16:
- event->u.clientMessage.u.s.type = sw32(ev->message_type, sw);
- event->u.clientMessage.u.s.shorts0 = sw16(ev->data.s[0], sw);
- event->u.clientMessage.u.s.shorts1 = sw16(ev->data.s[1], sw);
- event->u.clientMessage.u.s.shorts2 = sw16(ev->data.s[2], sw);
- event->u.clientMessage.u.s.shorts3 = sw16(ev->data.s[3], sw);
- event->u.clientMessage.u.s.shorts4 = sw16(ev->data.s[4], sw);
- event->u.clientMessage.u.s.shorts5 = sw16(ev->data.s[5], sw);
- event->u.clientMessage.u.s.shorts6 = sw16(ev->data.s[6], sw);
- event->u.clientMessage.u.s.shorts7 = sw16(ev->data.s[7], sw);
- event->u.clientMessage.u.s.shorts8 = sw16(ev->data.s[8], sw);
- event->u.clientMessage.u.s.shorts9 = sw16(ev->data.s[9], sw);
- break;
- case 32:
- event->u.clientMessage.u.l.type = sw32(ev->message_type, sw);
- event->u.clientMessage.u.l.longs0 = sw32(ev->data.l[0], sw);
- event->u.clientMessage.u.l.longs1 = sw32(ev->data.l[1], sw);
- event->u.clientMessage.u.l.longs2 = sw32(ev->data.l[2], sw);
- event->u.clientMessage.u.l.longs3 = sw32(ev->data.l[3], sw);
- event->u.clientMessage.u.l.longs4 = sw32(ev->data.l[4], sw);
- break;
- default:
- /* client passing bogus data, let server complain */
- break;
- }
- }
- break;
- case MappingNotify:
- {
- register XMappingEvent *ev = (XMappingEvent *) re;
- event->u.mappingNotify.firstKeyCode = ev->first_keycode;
- event->u.mappingNotify.request = ev->request;
- event->u.mappingNotify.count = ev->count;
- }
- break;
-
- default:
- return(0);
- }
- /* Common process */
- if (((XAnyEvent *)re)->send_event)
- event->u.u.type |= 0x80;
- event->u.u.sequenceNumber =
- ((XAnyEvent *)re)->serial & ~((unsigned long)0xffff);
- event->u.u.sequenceNumber = sw16(event->u.u.sequenceNumber, sw);
- return(1);
-}
-
-
-/*
- * reformat a wire event into an XEvent structure of the right type.
- */
-Bool
-_XimProtoWireToEvent(
- register XEvent *re, /* pointer to where event should be reformatted */
- register xEvent *event, /* wire protocol event */
- Bool sw) /* swap byte? */
-{
-
- re->type = event->u.u.type & 0x7f;
- ((XAnyEvent *)re)->serial = sw16(event->u.u.sequenceNumber, sw);
- ((XAnyEvent *)re)->send_event = ((event->u.u.type & 0x80) != 0);
- ((XAnyEvent *)re)->display = NULL;
-
- /* Ignore the leading bit of the event type since it is set when a
- client sends an event rather than the server. */
-
- switch (event-> u.u.type & 0177) {
- case KeyPress:
- case KeyRelease:
- {
- register XKeyEvent *ev = (XKeyEvent*) re;
- ev->root = sw32(event->u.keyButtonPointer.root, sw);
- ev->window = sw32(event->u.keyButtonPointer.event, sw);
- ev->subwindow = sw32(event->u.keyButtonPointer.child, sw);
- ev->time = sw32(event->u.keyButtonPointer.time, sw);
- ev->x = cvtINT16toInt(sw16(event->u.keyButtonPointer.eventX, sw));
- ev->y = cvtINT16toInt(sw16(event->u.keyButtonPointer.eventY, sw));
- ev->x_root = cvtINT16toInt(sw16(event->u.keyButtonPointer.rootX, sw));
- ev->y_root = cvtINT16toInt(sw16(event->u.keyButtonPointer.rootY, sw));
- ev->state = sw16(event->u.keyButtonPointer.state, sw);
- ev->same_screen = event->u.keyButtonPointer.sameScreen;
- ev->keycode = event->u.u.detail;
- }
- break;
- case ButtonPress:
- case ButtonRelease:
- {
- register XButtonEvent *ev = (XButtonEvent *) re;
- ev->root = sw32(event->u.keyButtonPointer.root, sw);
- ev->window = sw32(event->u.keyButtonPointer.event, sw);
- ev->subwindow = sw32(event->u.keyButtonPointer.child, sw);
- ev->time = sw32(event->u.keyButtonPointer.time, sw);
- ev->x = cvtINT16toInt(sw16(event->u.keyButtonPointer.eventX, sw));
- ev->y = cvtINT16toInt(sw16(event->u.keyButtonPointer.eventY, sw));
- ev->x_root = cvtINT16toInt(sw16(event->u.keyButtonPointer.rootX, sw));
- ev->y_root = cvtINT16toInt(sw16(event->u.keyButtonPointer.rootY, sw));
- ev->state = sw16(event->u.keyButtonPointer.state, sw);
- ev->same_screen = event->u.keyButtonPointer.sameScreen;
- ev->button = event->u.u.detail;
- }
- break;
- case MotionNotify:
- {
- register XMotionEvent *ev = (XMotionEvent *)re;
- ev->root = sw32(event->u.keyButtonPointer.root, sw);
- ev->window = sw32(event->u.keyButtonPointer.event, sw);
- ev->subwindow = sw32(event->u.keyButtonPointer.child, sw);
- ev->time = sw32(event->u.keyButtonPointer.time, sw);
- ev->x = cvtINT16toInt(sw16(event->u.keyButtonPointer.eventX, sw));
- ev->y = cvtINT16toInt(sw16(event->u.keyButtonPointer.eventY, sw));
- ev->x_root = cvtINT16toInt(sw16(event->u.keyButtonPointer.rootX, sw));
- ev->y_root = cvtINT16toInt(sw16(event->u.keyButtonPointer.rootY, sw));
- ev->state = sw16(event->u.keyButtonPointer.state, sw);
- ev->same_screen = event->u.keyButtonPointer.sameScreen;
- ev->is_hint = event->u.u.detail;
- }
- break;
- case EnterNotify:
- case LeaveNotify:
- {
- register XCrossingEvent *ev = (XCrossingEvent *) re;
- ev->root = sw32(event->u.enterLeave.root, sw);
- ev->window = sw32(event->u.enterLeave.event, sw);
- ev->subwindow = sw32(event->u.enterLeave.child, sw);
- ev->time = sw32(event->u.enterLeave.time, sw);
- ev->x = cvtINT16toInt(sw16(event->u.enterLeave.eventX, sw));
- ev->y = cvtINT16toInt(sw16(event->u.enterLeave.eventY, sw));
- ev->x_root = cvtINT16toInt(sw16(event->u.enterLeave.rootX, sw));
- ev->y_root = cvtINT16toInt(sw16(event->u.enterLeave.rootY, sw));
- ev->state = sw16(event->u.enterLeave.state, sw);
- ev->mode = event->u.enterLeave.mode;
- ev->same_screen = (event->u.enterLeave.flags &
- ELFlagSameScreen) && True;
- ev->focus = (event->u.enterLeave.flags &
- ELFlagFocus) && True;
- ev->detail = event->u.u.detail;
- }
- break;
- case FocusIn:
- case FocusOut:
- {
- register XFocusChangeEvent *ev = (XFocusChangeEvent *) re;
- ev->window = sw32(event->u.focus.window, sw);
- ev->mode = event->u.focus.mode;
- ev->detail = event->u.u.detail;
- }
- break;
- case KeymapNotify:
- {
- register XKeymapEvent *ev = (XKeymapEvent *) re;
- ev->window = None;
- memcpy(&ev->key_vector[1],
- (char *)((xKeymapEvent *) event)->map,
- sizeof (((xKeymapEvent *) event)->map));
- }
- break;
- case Expose:
- {
- register XExposeEvent *ev = (XExposeEvent *) re;
- ev->window = sw32(event->u.expose.window, sw);
- ev->x = sw16(event->u.expose.x, sw);
- ev->y = sw16(event->u.expose.y, sw);
- ev->width = sw16(event->u.expose.width, sw);
- ev->height = sw16(event->u.expose.height, sw);
- ev->count = sw16(event->u.expose.count, sw);
- }
- break;
- case GraphicsExpose:
- {
- register XGraphicsExposeEvent *ev =
- (XGraphicsExposeEvent *) re;
- ev->drawable = sw32(event->u.graphicsExposure.drawable, sw);
- ev->x = sw16(event->u.graphicsExposure.x, sw);
- ev->y = sw16(event->u.graphicsExposure.y, sw);
- ev->width = sw16(event->u.graphicsExposure.width, sw);
- ev->height = sw16(event->u.graphicsExposure.height, sw);
- ev->count = sw16(event->u.graphicsExposure.count, sw);
- ev->major_code = event->u.graphicsExposure.majorEvent;
- ev->minor_code = sw16(event->u.graphicsExposure.minorEvent, sw);
- }
- break;
- case NoExpose:
- {
- register XNoExposeEvent *ev = (XNoExposeEvent *) re;
- ev->drawable = sw32(event->u.noExposure.drawable, sw);
- ev->major_code = event->u.noExposure.majorEvent;
- ev->minor_code = sw16(event->u.noExposure.minorEvent, sw);
- }
- break;
- case VisibilityNotify:
- {
- register XVisibilityEvent *ev = (XVisibilityEvent *) re;
- ev->window = sw32(event->u.visibility.window, sw);
- ev->state = event->u.visibility.state;
- }
- break;
- case CreateNotify:
- {
- register XCreateWindowEvent *ev =
- (XCreateWindowEvent *) re;
- ev->window = sw32(event->u.createNotify.window, sw);
- ev->parent = sw32(event->u.createNotify.parent, sw);
- ev->x = cvtINT16toInt(sw16(event->u.createNotify.x, sw));
- ev->y = cvtINT16toInt(sw16(event->u.createNotify.y, sw));
- ev->width = sw16(event->u.createNotify.width, sw);
- ev->height = sw16(event->u.createNotify.height, sw);
- ev->border_width = sw16(event->u.createNotify.borderWidth, sw);
- ev->override_redirect = event->u.createNotify.override;
- }
- break;
- case DestroyNotify:
- {
- register XDestroyWindowEvent *ev =
- (XDestroyWindowEvent *) re;
- ev->window = sw32(event->u.destroyNotify.window, sw);
- ev->event = sw32(event->u.destroyNotify.event, sw);
- }
- break;
- case UnmapNotify:
- {
- register XUnmapEvent *ev = (XUnmapEvent *) re;
- ev->window = sw32(event->u.unmapNotify.window, sw);
- ev->event = sw32(event->u.unmapNotify.event, sw);
- ev->from_configure = event->u.unmapNotify.fromConfigure;
- }
- break;
- case MapNotify:
- {
- register XMapEvent *ev = (XMapEvent *) re;
- ev->window = sw32(event->u.mapNotify.window, sw);
- ev->event = sw32(event->u.mapNotify.event, sw);
- ev->override_redirect = event->u.mapNotify.override;
- }
- break;
- case MapRequest:
- {
- register XMapRequestEvent *ev = (XMapRequestEvent *) re;
- ev->window = sw32(event->u.mapRequest.window, sw);
- ev->parent = sw32(event->u.mapRequest.parent, sw);
- }
- break;
- case ReparentNotify:
- {
- register XReparentEvent *ev = (XReparentEvent *) re;
- ev->event = sw32(event->u.reparent.event, sw);
- ev->window = sw32(event->u.reparent.window, sw);
- ev->parent = sw32(event->u.reparent.parent, sw);
- ev->x = cvtINT16toInt(sw16(event->u.reparent.x, sw));
- ev->y = cvtINT16toInt(sw16(event->u.reparent.y, sw));
- ev->override_redirect = event->u.reparent.override;
- }
- break;
- case ConfigureNotify:
- {
- register XConfigureEvent *ev = (XConfigureEvent *) re;
- ev->event = sw32(event->u.configureNotify.event, sw);
- ev->window = sw32(event->u.configureNotify.window, sw);
- ev->above = sw32(event->u.configureNotify.aboveSibling, sw);
- ev->x = cvtINT16toInt(sw16(event->u.configureNotify.x, sw));
- ev->y = cvtINT16toInt(sw16(event->u.configureNotify.y, sw));
- ev->width = sw16(event->u.configureNotify.width, sw);
- ev->height = sw16(event->u.configureNotify.height, sw);
- ev->border_width = sw16(event->u.configureNotify.borderWidth, sw);
- ev->override_redirect = event->u.configureNotify.override;
- }
- break;
- case ConfigureRequest:
- {
- register XConfigureRequestEvent *ev =
- (XConfigureRequestEvent *) re;
- ev->window = sw32(event->u.configureRequest.window, sw);
- ev->parent = sw32(event->u.configureRequest.parent, sw);
- ev->above = sw32(event->u.configureRequest.sibling, sw);
- ev->x = cvtINT16toInt(sw16(event->u.configureRequest.x, sw));
- ev->y = cvtINT16toInt(sw16(event->u.configureRequest.y, sw));
- ev->width = sw16(event->u.configureRequest.width, sw);
- ev->height = sw16(event->u.configureRequest.height, sw);
- ev->border_width = sw16(event->u.configureRequest.borderWidth, sw);
- ev->value_mask = sw16(event->u.configureRequest.valueMask, sw);
- ev->detail = event->u.u.detail;
- }
- break;
- case GravityNotify:
- {
- register XGravityEvent *ev = (XGravityEvent *) re;
- ev->window = sw32(event->u.gravity.window, sw);
- ev->event = sw32(event->u.gravity.event, sw);
- ev->x = cvtINT16toInt(sw16(event->u.gravity.x, sw));
- ev->y = cvtINT16toInt(sw16(event->u.gravity.y, sw));
- }
- break;
- case ResizeRequest:
- {
- register XResizeRequestEvent *ev =
- (XResizeRequestEvent *) re;
- ev->window = sw32(event->u.resizeRequest.window, sw);
- ev->width = sw16(event->u.resizeRequest.width, sw);
- ev->height = sw16(event->u.resizeRequest.height, sw);
- }
- break;
- case CirculateNotify:
- {
- register XCirculateEvent *ev = (XCirculateEvent *) re;
- ev->window = sw32(event->u.circulate.window, sw);
- ev->event = sw32(event->u.circulate.event, sw);
- ev->place = event->u.circulate.place;
- }
- break;
- case CirculateRequest:
- {
- register XCirculateRequestEvent *ev =
- (XCirculateRequestEvent *) re;
- ev->window = sw32(event->u.circulate.window, sw);
- ev->parent = sw32(event->u.circulate.event, sw);
- ev->place = event->u.circulate.place;
- }
- break;
- case PropertyNotify:
- {
- register XPropertyEvent *ev = (XPropertyEvent *) re;
- ev->window = sw32(event->u.property.window, sw);
- ev->atom = sw32(event->u.property.atom, sw);
- ev->time = sw32(event->u.property.time, sw);
- ev->state = event->u.property.state;
- }
- break;
- case SelectionClear:
- {
- register XSelectionClearEvent *ev =
- (XSelectionClearEvent *) re;
- ev->window = sw32(event->u.selectionClear.window, sw);
- ev->selection = sw32(event->u.selectionClear.atom, sw);
- ev->time = sw32(event->u.selectionClear.time, sw);
- }
- break;
- case SelectionRequest:
- {
- register XSelectionRequestEvent *ev =
- (XSelectionRequestEvent *) re;
- ev->owner = sw32(event->u.selectionRequest.owner, sw);
- ev->requestor = sw32(event->u.selectionRequest.requestor, sw);
- ev->selection = sw32(event->u.selectionRequest.selection, sw);
- ev->target = sw32(event->u.selectionRequest.target, sw);
- ev->property = sw32(event->u.selectionRequest.property, sw);
- ev->time = sw32(event->u.selectionRequest.time, sw);
- }
- break;
- case SelectionNotify:
- {
- register XSelectionEvent *ev = (XSelectionEvent *) re;
- ev->requestor = sw32(event->u.selectionNotify.requestor, sw);
- ev->selection = sw32(event->u.selectionNotify.selection, sw);
- ev->target = sw32(event->u.selectionNotify.target, sw);
- ev->property = sw32(event->u.selectionNotify.property, sw);
- ev->time = sw32(event->u.selectionNotify.time, sw);
- }
- break;
- case ColormapNotify:
- {
- register XColormapEvent *ev = (XColormapEvent *) re;
- ev->window = sw32(event->u.colormap.window, sw);
- ev->colormap = sw32(event->u.colormap.colormap, sw);
- ev->new = event->u.colormap.new;
- ev->state = event->u.colormap.state;
- }
- break;
- case ClientMessage:
- {
- register int i;
- register XClientMessageEvent *ev
- = (XClientMessageEvent *) re;
- ev->window = sw32(event->u.clientMessage.window, sw);
- ev->format = event->u.u.detail;
- switch (ev->format) {
- case 8:
- ev->message_type = sw32(event->u.clientMessage.u.b.type, sw);
- for (i = 0; i < 20; i++)
- ev->data.b[i] = event->u.clientMessage.u.b.bytes[i];
- break;
- case 16:
- ev->message_type = sw32(event->u.clientMessage.u.s.type, sw);
- ev->data.s[0] = cvtINT16toShort(sw16(event->u.clientMessage.u.s.shorts0, sw));
- ev->data.s[1] = cvtINT16toShort(sw16(event->u.clientMessage.u.s.shorts1, sw));
- ev->data.s[2] = cvtINT16toShort(sw16(event->u.clientMessage.u.s.shorts2, sw));
- ev->data.s[3] = cvtINT16toShort(sw16(event->u.clientMessage.u.s.shorts3, sw));
- ev->data.s[4] = cvtINT16toShort(sw16(event->u.clientMessage.u.s.shorts4, sw));
- ev->data.s[5] = cvtINT16toShort(sw16(event->u.clientMessage.u.s.shorts5, sw));
- ev->data.s[6] = cvtINT16toShort(sw16(event->u.clientMessage.u.s.shorts6, sw));
- ev->data.s[7] = cvtINT16toShort(sw16(event->u.clientMessage.u.s.shorts7, sw));
- ev->data.s[8] = cvtINT16toShort(sw16(event->u.clientMessage.u.s.shorts8, sw));
- ev->data.s[9] = cvtINT16toShort(sw16(event->u.clientMessage.u.s.shorts9, sw));
- break;
- case 32:
- ev->message_type = sw32(event->u.clientMessage.u.l.type, sw);
- ev->data.l[0] = cvtINT32toLong(sw32(event->u.clientMessage.u.l.longs0, sw));
- ev->data.l[1] = cvtINT32toLong(sw32(event->u.clientMessage.u.l.longs1, sw));
- ev->data.l[2] = cvtINT32toLong(sw32(event->u.clientMessage.u.l.longs2, sw));
- ev->data.l[3] = cvtINT32toLong(sw32(event->u.clientMessage.u.l.longs3, sw));
- ev->data.l[4] = cvtINT32toLong(sw32(event->u.clientMessage.u.l.longs4, sw));
- break;
- default: /* XXX should never occur */
- break;
- }
- }
- break;
- case MappingNotify:
- {
- register XMappingEvent *ev = (XMappingEvent *)re;
- ev->window = 0;
- ev->first_keycode = event->u.mappingNotify.firstKeyCode;
- ev->request = event->u.mappingNotify.request;
- ev->count = event->u.mappingNotify.count;
- }
- break;
- default:
- return(False);
- }
- return(True);
-}
+/***********************************************************
+Copyright 1993 by Digital Equipment Corporation, Maynard, Massachusetts,
+
+ All Rights Reserved
+
+Permission to use, copy, modify, and distribute this software and its
+documentation for any purpose and without fee is hereby granted,
+provided that the above copyright notice appear in all copies and that
+both that copyright notice and this permission notice appear in
+supporting documentation, and that the name of Digital not be
+used in advertising or publicity pertaining to distribution of the
+software without specific, written prior permission.
+
+DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
+ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
+DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
+ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
+WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
+ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
+SOFTWARE.
+
+******************************************************************/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include <X11/Xlibint.h>
+#include <X11/Xlib.h>
+#include "Ximint.h"
+
+
+#define sw16(n, s) ((s) ? \
+ (((n) << 8 & 0xff00) | \
+ ((n) >> 8 & 0xff) \
+ ) : n)
+
+#define sw32(n, s) ((s) ? \
+ (((n) << 24 & 0xff000000) | \
+ ((n) << 8 & 0xff0000) | \
+ ((n) >> 8 & 0xff00) | \
+ ((n) >> 24 & 0xff) \
+ ) : n)
+
+Status
+_XimProtoEventToWire(
+ register XEvent *re, /* pointer to where event should be reformatted */
+ register xEvent *event, /* wire protocol event */
+ Bool sw) /* swap byte? */
+{
+ switch (event->u.u.type = re->type) {
+ case KeyPress:
+ case KeyRelease:
+ {
+ register XKeyEvent *ev = (XKeyEvent*) re;
+ event->u.keyButtonPointer.root = sw32(ev->root, sw);
+ event->u.keyButtonPointer.event =
+ sw32(ev->window, sw);
+ event->u.keyButtonPointer.child =
+ sw32(ev->subwindow, sw);
+ event->u.keyButtonPointer.time = sw32(ev->time, sw);
+ event->u.keyButtonPointer.eventX = sw16(ev->x, sw) ;
+ event->u.keyButtonPointer.eventY = sw16(ev->y, sw) ;
+ event->u.keyButtonPointer.rootX =
+ sw16(ev->x_root, sw);
+ event->u.keyButtonPointer.rootY =
+ sw16(ev->y_root, sw);
+ event->u.keyButtonPointer.state = sw16(ev->state, sw);
+ event->u.keyButtonPointer.sameScreen = ev->same_screen;
+ event->u.u.detail = ev->keycode;
+ }
+ break;
+ case ButtonPress:
+ case ButtonRelease:
+ {
+ register XButtonEvent *ev = (XButtonEvent *) re;
+ event->u.keyButtonPointer.root = sw32(ev->root, sw);
+ event->u.keyButtonPointer.event = sw32(ev->window, sw);
+ event->u.keyButtonPointer.child = sw32(ev->subwindow, sw);
+ event->u.keyButtonPointer.time = sw32(ev->time, sw);
+ event->u.keyButtonPointer.eventX = sw16(ev->x, sw);
+ event->u.keyButtonPointer.eventY = sw16(ev->y, sw);
+ event->u.keyButtonPointer.rootX = sw16(ev->x_root, sw);
+ event->u.keyButtonPointer.rootY = sw16(ev->y_root, sw);
+ event->u.keyButtonPointer.state = sw16(ev->state, sw);
+ event->u.keyButtonPointer.sameScreen = ev->same_screen;
+ event->u.u.detail = ev->button;
+ }
+ break;
+ case MotionNotify:
+ {
+ register XMotionEvent *ev = (XMotionEvent *)re;
+ event->u.keyButtonPointer.root = sw32(ev->root, sw);
+ event->u.keyButtonPointer.event = sw32(ev->window, sw);
+ event->u.keyButtonPointer.child = sw32(ev->subwindow, sw);
+ event->u.keyButtonPointer.time = sw32(ev->time, sw);
+ event->u.keyButtonPointer.eventX= sw16(ev->x, sw);
+ event->u.keyButtonPointer.eventY= sw16(ev->y, sw);
+ event->u.keyButtonPointer.rootX = sw16(ev->x_root, sw);
+ event->u.keyButtonPointer.rootY = sw16(ev->y_root, sw);
+ event->u.keyButtonPointer.state = sw16(ev->state, sw);
+ event->u.keyButtonPointer.sameScreen= ev->same_screen;
+ event->u.u.detail = ev->is_hint;
+ }
+ break;
+ case EnterNotify:
+ case LeaveNotify:
+ {
+ register XCrossingEvent *ev = (XCrossingEvent *) re;
+ event->u.enterLeave.root = sw32(ev->root, sw);
+ event->u.enterLeave.event = sw32(ev->window, sw);
+ event->u.enterLeave.child = sw32(ev->subwindow, sw);
+ event->u.enterLeave.time = sw32(ev->time, sw);
+ event->u.enterLeave.eventX = sw16(ev->x, sw);
+ event->u.enterLeave.eventY = sw16(ev->y, sw);
+ event->u.enterLeave.rootX = sw16(ev->x_root, sw);
+ event->u.enterLeave.rootY = sw16(ev->y_root, sw);
+ event->u.enterLeave.state = sw16(ev->state, sw);
+ event->u.enterLeave.mode = ev->mode;
+ event->u.enterLeave.flags = 0;
+ if (ev->same_screen) {
+ event->u.enterLeave.flags |= ELFlagSameScreen;
+ }
+ if (ev->focus) {
+ event->u.enterLeave.flags |= ELFlagFocus;
+ }
+ event->u.u.detail = ev->detail;
+ }
+ break;
+ case FocusIn:
+ case FocusOut:
+ {
+ register XFocusChangeEvent *ev = (XFocusChangeEvent *) re;
+ event->u.focus.window = sw32(ev->window, sw);
+ event->u.focus.mode = ev->mode;
+ event->u.u.detail = ev->detail;
+ }
+ break;
+ case KeymapNotify:
+ {
+ register XKeymapEvent *ev = (XKeymapEvent *) re;
+ memcpy((char *)(((xKeymapEvent *) event)->map),
+ &ev->key_vector[1],
+ sizeof (((xKeymapEvent *) event)->map));
+ }
+ break;
+ case Expose:
+ {
+ register XExposeEvent *ev = (XExposeEvent *) re;
+ event->u.expose.window = sw32(ev->window, sw);
+ event->u.expose.x = sw16(ev->x, sw);
+ event->u.expose.y = sw16(ev->y, sw);
+ event->u.expose.width = sw16(ev->width, sw);
+ event->u.expose.height = sw16(ev->height, sw);
+ event->u.expose.count = sw16(ev->count, sw);
+ }
+ break;
+ case GraphicsExpose:
+ {
+ register XGraphicsExposeEvent *ev =
+ (XGraphicsExposeEvent *) re;
+ event->u.graphicsExposure.drawable = sw32(ev->drawable, sw);
+ event->u.graphicsExposure.x = sw16(ev->x, sw);
+ event->u.graphicsExposure.y = sw16(ev->y, sw);
+ event->u.graphicsExposure.width = sw16(ev->width, sw);
+ event->u.graphicsExposure.height = sw16(ev->height, sw);
+ event->u.graphicsExposure.count = sw16(ev->count, sw);
+ event->u.graphicsExposure.majorEvent= ev->major_code;
+ event->u.graphicsExposure.minorEvent= sw16(ev->minor_code, sw);
+ }
+ break;
+ case NoExpose:
+ {
+ register XNoExposeEvent *ev = (XNoExposeEvent *) re;
+ event->u.noExposure.drawable = sw32(ev->drawable, sw);
+ event->u.noExposure.majorEvent = ev->major_code;
+ event->u.noExposure.minorEvent = sw16(ev->minor_code, sw);
+ }
+ break;
+ case VisibilityNotify:
+ {
+ register XVisibilityEvent *ev = (XVisibilityEvent *) re;
+ event->u.visibility.window = sw32(ev->window, sw);
+ event->u.visibility.state = ev->state;
+ }
+ break;
+ case CreateNotify:
+ {
+ register XCreateWindowEvent *ev =
+ (XCreateWindowEvent *) re;
+ event->u.createNotify.window = sw32(ev->window, sw);
+ event->u.createNotify.parent = sw32(ev->parent, sw);
+ event->u.createNotify.x = sw16(ev->x, sw);
+ event->u.createNotify.y = sw16(ev->y, sw);
+ event->u.createNotify.width = sw16(ev->width, sw);
+ event->u.createNotify.height = sw16(ev->height, sw);
+ event->u.createNotify.borderWidth = sw16(ev->border_width, sw);
+ event->u.createNotify.override = ev->override_redirect;
+ }
+ break;
+ case DestroyNotify:
+ {
+ register XDestroyWindowEvent *ev =
+ (XDestroyWindowEvent *) re;
+ event->u.destroyNotify.window = sw32(ev->window, sw);
+ event->u.destroyNotify.event = sw32(ev->event, sw);
+ }
+ break;
+ case UnmapNotify:
+ {
+ register XUnmapEvent *ev = (XUnmapEvent *) re;
+ event->u.unmapNotify.window = sw32(ev->window, sw);
+ event->u.unmapNotify.event = sw32(ev->event, sw);
+ event->u.unmapNotify.fromConfigure = ev->from_configure;
+ }
+ break;
+ case MapNotify:
+ {
+ register XMapEvent *ev = (XMapEvent *) re;
+ event->u.mapNotify.window = sw32(ev->window, sw);
+ event->u.mapNotify.event = sw32(ev->event, sw);
+ event->u.mapNotify.override = ev->override_redirect;
+ }
+ break;
+ case MapRequest:
+ {
+ register XMapRequestEvent *ev = (XMapRequestEvent *) re;
+ event->u.mapRequest.window = sw32(ev->window, sw);
+ event->u.mapRequest.parent = sw32(ev->parent, sw);
+ }
+ break;
+ case ReparentNotify:
+ {
+ register XReparentEvent *ev = (XReparentEvent *) re;
+ event->u.reparent.window = sw32(ev->window, sw);
+ event->u.reparent.event = sw32(ev->event, sw);
+ event->u.reparent.parent = sw32(ev->parent, sw);
+ event->u.reparent.x = sw16(ev->x, sw);
+ event->u.reparent.y = sw16(ev->y, sw);
+ event->u.reparent.override = ev->override_redirect;
+ }
+ break;
+ case ConfigureNotify:
+ {
+ register XConfigureEvent *ev = (XConfigureEvent *) re;
+ event->u.configureNotify.window = sw32(ev->window, sw);
+ event->u.configureNotify.event = sw32(ev->event, sw);
+ event->u.configureNotify.aboveSibling = sw32(ev->above, sw);
+ event->u.configureNotify.x = sw16(ev->x, sw);
+ event->u.configureNotify.y = sw16(ev->y, sw);
+ event->u.configureNotify.width = sw16(ev->width, sw);
+ event->u.configureNotify.height = sw16(ev->height, sw);
+ event->u.configureNotify.borderWidth= sw16(ev->border_width, sw);
+ event->u.configureNotify.override = ev->override_redirect;
+ }
+ break;
+ case ConfigureRequest:
+ {
+ register XConfigureRequestEvent *ev =
+ (XConfigureRequestEvent *) re;
+ event->u.configureRequest.window = sw32(ev->window, sw);
+ event->u.configureRequest.parent = sw32(ev->parent, sw);
+ event->u.configureRequest.sibling = sw32(ev->above, sw);
+ event->u.configureRequest.x = sw16(ev->x, sw);
+ event->u.configureRequest.y = sw16(ev->y, sw);
+ event->u.configureRequest.width = sw16(ev->width, sw);
+ event->u.configureRequest.height = sw16(ev->height, sw);
+ event->u.configureRequest.borderWidth= sw16(ev->border_width, sw);
+ event->u.configureRequest.valueMask= sw16(ev->value_mask, sw);
+ event->u.u.detail = ev->detail;
+ }
+ break;
+ case GravityNotify:
+ {
+ register XGravityEvent *ev = (XGravityEvent *) re;
+ event->u.gravity.window = sw32(ev->window, sw);
+ event->u.gravity.event = sw32(ev->event, sw);
+ event->u.gravity.x = sw16(ev->x, sw);
+ event->u.gravity.y = sw16(ev->y, sw);
+ }
+ break;
+ case ResizeRequest:
+ {
+ register XResizeRequestEvent *ev =
+ (XResizeRequestEvent *) re;
+ event->u.resizeRequest.window = sw32(ev->window, sw);
+ event->u.resizeRequest.width = sw16(ev->width, sw);
+ event->u.resizeRequest.height = sw16(ev->height, sw);
+ }
+ break;
+ case CirculateNotify:
+ {
+ register XCirculateEvent *ev = (XCirculateEvent *) re;
+ event->u.circulate.window = sw32(ev->window, sw);
+ event->u.circulate.event = sw32(ev->event, sw);
+ event->u.circulate.place = ev->place;
+ }
+ break;
+ case CirculateRequest:
+ {
+ register XCirculateRequestEvent *ev =
+ (XCirculateRequestEvent *) re;
+ event->u.circulate.window = sw32(ev->window, sw);
+ event->u.circulate.event = sw32(ev->parent, sw);
+ event->u.circulate.place = ev->place;
+ }
+ break;
+ case PropertyNotify:
+ {
+ register XPropertyEvent *ev = (XPropertyEvent *) re;
+ event->u.property.window = sw32(ev->window, sw);
+ event->u.property.atom = sw32(ev->atom, sw);
+ event->u.property.time = sw32(ev->time, sw);
+ event->u.property.state = ev->state;
+ }
+ break;
+ case SelectionClear:
+ {
+ register XSelectionClearEvent *ev =
+ (XSelectionClearEvent *) re;
+ event->u.selectionClear.window = sw32(ev->window, sw);
+ event->u.selectionClear.atom = sw32(ev->selection, sw);
+ event->u.selectionClear.time = sw32(ev->time, sw);
+ }
+ break;
+ case SelectionRequest:
+ {
+ register XSelectionRequestEvent *ev =
+ (XSelectionRequestEvent *) re;
+ event->u.selectionRequest.owner = sw32(ev->owner, sw);
+ event->u.selectionRequest.requestor = sw32(ev->requestor, sw);
+ event->u.selectionRequest.selection = sw32(ev->selection, sw);
+ event->u.selectionRequest.target = sw32(ev->target, sw);
+ event->u.selectionRequest.property = sw32(ev->property, sw);
+ event->u.selectionRequest.time = sw32(ev->time, sw);
+ }
+ break;
+ case SelectionNotify:
+ {
+ register XSelectionEvent *ev = (XSelectionEvent *) re;
+ event->u.selectionNotify.requestor = sw32(ev->requestor, sw);
+ event->u.selectionNotify.selection = sw32(ev->selection, sw);
+ event->u.selectionNotify.target = sw32(ev->target, sw);
+ event->u.selectionNotify.property = sw32(ev->property, sw);
+ event->u.selectionNotify.time = sw32(ev->time, sw);
+ }
+ break;
+ case ColormapNotify:
+ {
+ register XColormapEvent *ev = (XColormapEvent *) re;
+ event->u.colormap.window = sw32(ev->window, sw);
+ event->u.colormap.colormap = sw32(ev->colormap, sw);
+ event->u.colormap.new = ev->new;
+ event->u.colormap.state = ev->state;
+ }
+ break;
+ case ClientMessage:
+ {
+ register int i;
+ register XClientMessageEvent *ev
+ = (XClientMessageEvent *) re;
+ event->u.clientMessage.window = sw32(ev->window, sw);
+ event->u.u.detail = ev->format;
+ switch (ev->format) {
+ case 8:
+ event->u.clientMessage.u.b.type = sw32(ev->message_type, sw);
+ for (i = 0; i < 20; i++)
+ event->u.clientMessage.u.b.bytes[i] = ev->data.b[i];
+ break;
+ case 16:
+ event->u.clientMessage.u.s.type = sw32(ev->message_type, sw);
+ event->u.clientMessage.u.s.shorts0 = sw16(ev->data.s[0], sw);
+ event->u.clientMessage.u.s.shorts1 = sw16(ev->data.s[1], sw);
+ event->u.clientMessage.u.s.shorts2 = sw16(ev->data.s[2], sw);
+ event->u.clientMessage.u.s.shorts3 = sw16(ev->data.s[3], sw);
+ event->u.clientMessage.u.s.shorts4 = sw16(ev->data.s[4], sw);
+ event->u.clientMessage.u.s.shorts5 = sw16(ev->data.s[5], sw);
+ event->u.clientMessage.u.s.shorts6 = sw16(ev->data.s[6], sw);
+ event->u.clientMessage.u.s.shorts7 = sw16(ev->data.s[7], sw);
+ event->u.clientMessage.u.s.shorts8 = sw16(ev->data.s[8], sw);
+ event->u.clientMessage.u.s.shorts9 = sw16(ev->data.s[9], sw);
+ break;
+ case 32:
+ event->u.clientMessage.u.l.type = sw32(ev->message_type, sw);
+ event->u.clientMessage.u.l.longs0 = sw32(ev->data.l[0], sw);
+ event->u.clientMessage.u.l.longs1 = sw32(ev->data.l[1], sw);
+ event->u.clientMessage.u.l.longs2 = sw32(ev->data.l[2], sw);
+ event->u.clientMessage.u.l.longs3 = sw32(ev->data.l[3], sw);
+ event->u.clientMessage.u.l.longs4 = sw32(ev->data.l[4], sw);
+ break;
+ default:
+ /* client passing bogus data, let server complain */
+ break;
+ }
+ }
+ break;
+ case MappingNotify:
+ {
+ register XMappingEvent *ev = (XMappingEvent *) re;
+ event->u.mappingNotify.firstKeyCode = ev->first_keycode;
+ event->u.mappingNotify.request = ev->request;
+ event->u.mappingNotify.count = ev->count;
+ }
+ break;
+
+ default:
+ return(0);
+ }
+ /* Common process */
+ if (((XAnyEvent *)re)->send_event)
+ event->u.u.type |= 0x80;
+ event->u.u.sequenceNumber =
+ ((XAnyEvent *)re)->serial & ~((unsigned long)0xffff);
+ event->u.u.sequenceNumber = sw16(event->u.u.sequenceNumber, sw);
+ return(1);
+}
+
+
+/*
+ * reformat a wire event into an XEvent structure of the right type.
+ */
+Bool
+_XimProtoWireToEvent(
+ register XEvent *re, /* pointer to where event should be reformatted */
+ register xEvent *event, /* wire protocol event */
+ Bool sw) /* swap byte? */
+{
+
+ re->type = event->u.u.type & 0x7f;
+ ((XAnyEvent *)re)->serial = sw16(event->u.u.sequenceNumber, sw);
+ ((XAnyEvent *)re)->send_event = ((event->u.u.type & 0x80) != 0);
+ ((XAnyEvent *)re)->display = NULL;
+
+ /* Ignore the leading bit of the event type since it is set when a
+ client sends an event rather than the server. */
+
+ switch (event-> u.u.type & 0177) {
+ case KeyPress:
+ case KeyRelease:
+ {
+ register XKeyEvent *ev = (XKeyEvent*) re;
+ ev->root = sw32(event->u.keyButtonPointer.root, sw);
+ ev->window = sw32(event->u.keyButtonPointer.event, sw);
+ ev->subwindow = sw32(event->u.keyButtonPointer.child, sw);
+ ev->time = sw32(event->u.keyButtonPointer.time, sw);
+ ev->x = cvtINT16toInt(sw16(event->u.keyButtonPointer.eventX, sw));
+ ev->y = cvtINT16toInt(sw16(event->u.keyButtonPointer.eventY, sw));
+ ev->x_root = cvtINT16toInt(sw16(event->u.keyButtonPointer.rootX, sw));
+ ev->y_root = cvtINT16toInt(sw16(event->u.keyButtonPointer.rootY, sw));
+ ev->state = sw16(event->u.keyButtonPointer.state, sw);
+ ev->same_screen = event->u.keyButtonPointer.sameScreen;
+ ev->keycode = event->u.u.detail;
+ }
+ break;
+ case ButtonPress:
+ case ButtonRelease:
+ {
+ register XButtonEvent *ev = (XButtonEvent *) re;
+ ev->root = sw32(event->u.keyButtonPointer.root, sw);
+ ev->window = sw32(event->u.keyButtonPointer.event, sw);
+ ev->subwindow = sw32(event->u.keyButtonPointer.child, sw);
+ ev->time = sw32(event->u.keyButtonPointer.time, sw);
+ ev->x = cvtINT16toInt(sw16(event->u.keyButtonPointer.eventX, sw));
+ ev->y = cvtINT16toInt(sw16(event->u.keyButtonPointer.eventY, sw));
+ ev->x_root = cvtINT16toInt(sw16(event->u.keyButtonPointer.rootX, sw));
+ ev->y_root = cvtINT16toInt(sw16(event->u.keyButtonPointer.rootY, sw));
+ ev->state = sw16(event->u.keyButtonPointer.state, sw);
+ ev->same_screen = event->u.keyButtonPointer.sameScreen;
+ ev->button = event->u.u.detail;
+ }
+ break;
+ case MotionNotify:
+ {
+ register XMotionEvent *ev = (XMotionEvent *)re;
+ ev->root = sw32(event->u.keyButtonPointer.root, sw);
+ ev->window = sw32(event->u.keyButtonPointer.event, sw);
+ ev->subwindow = sw32(event->u.keyButtonPointer.child, sw);
+ ev->time = sw32(event->u.keyButtonPointer.time, sw);
+ ev->x = cvtINT16toInt(sw16(event->u.keyButtonPointer.eventX, sw));
+ ev->y = cvtINT16toInt(sw16(event->u.keyButtonPointer.eventY, sw));
+ ev->x_root = cvtINT16toInt(sw16(event->u.keyButtonPointer.rootX, sw));
+ ev->y_root = cvtINT16toInt(sw16(event->u.keyButtonPointer.rootY, sw));
+ ev->state = sw16(event->u.keyButtonPointer.state, sw);
+ ev->same_screen = event->u.keyButtonPointer.sameScreen;
+ ev->is_hint = event->u.u.detail;
+ }
+ break;
+ case EnterNotify:
+ case LeaveNotify:
+ {
+ register XCrossingEvent *ev = (XCrossingEvent *) re;
+ ev->root = sw32(event->u.enterLeave.root, sw);
+ ev->window = sw32(event->u.enterLeave.event, sw);
+ ev->subwindow = sw32(event->u.enterLeave.child, sw);
+ ev->time = sw32(event->u.enterLeave.time, sw);
+ ev->x = cvtINT16toInt(sw16(event->u.enterLeave.eventX, sw));
+ ev->y = cvtINT16toInt(sw16(event->u.enterLeave.eventY, sw));
+ ev->x_root = cvtINT16toInt(sw16(event->u.enterLeave.rootX, sw));
+ ev->y_root = cvtINT16toInt(sw16(event->u.enterLeave.rootY, sw));
+ ev->state = sw16(event->u.enterLeave.state, sw);
+ ev->mode = event->u.enterLeave.mode;
+ ev->same_screen = (event->u.enterLeave.flags &
+ ELFlagSameScreen) && True;
+ ev->focus = (event->u.enterLeave.flags &
+ ELFlagFocus) && True;
+ ev->detail = event->u.u.detail;
+ }
+ break;
+ case FocusIn:
+ case FocusOut:
+ {
+ register XFocusChangeEvent *ev = (XFocusChangeEvent *) re;
+ ev->window = sw32(event->u.focus.window, sw);
+ ev->mode = event->u.focus.mode;
+ ev->detail = event->u.u.detail;
+ }
+ break;
+ case KeymapNotify:
+ {
+ register XKeymapEvent *ev = (XKeymapEvent *) re;
+ ev->window = None;
+ memcpy(&ev->key_vector[1],
+ (char *)((xKeymapEvent *) event)->map,
+ sizeof (((xKeymapEvent *) event)->map));
+ }
+ break;
+ case Expose:
+ {
+ register XExposeEvent *ev = (XExposeEvent *) re;
+ ev->window = sw32(event->u.expose.window, sw);
+ ev->x = sw16(event->u.expose.x, sw);
+ ev->y = sw16(event->u.expose.y, sw);
+ ev->width = sw16(event->u.expose.width, sw);
+ ev->height = sw16(event->u.expose.height, sw);
+ ev->count = sw16(event->u.expose.count, sw);
+ }
+ break;
+ case GraphicsExpose:
+ {
+ register XGraphicsExposeEvent *ev =
+ (XGraphicsExposeEvent *) re;
+ ev->drawable = sw32(event->u.graphicsExposure.drawable, sw);
+ ev->x = sw16(event->u.graphicsExposure.x, sw);
+ ev->y = sw16(event->u.graphicsExposure.y, sw);
+ ev->width = sw16(event->u.graphicsExposure.width, sw);
+ ev->height = sw16(event->u.graphicsExposure.height, sw);
+ ev->count = sw16(event->u.graphicsExposure.count, sw);
+ ev->major_code = event->u.graphicsExposure.majorEvent;
+ ev->minor_code = sw16(event->u.graphicsExposure.minorEvent, sw);
+ }
+ break;
+ case NoExpose:
+ {
+ register XNoExposeEvent *ev = (XNoExposeEvent *) re;
+ ev->drawable = sw32(event->u.noExposure.drawable, sw);
+ ev->major_code = event->u.noExposure.majorEvent;
+ ev->minor_code = sw16(event->u.noExposure.minorEvent, sw);
+ }
+ break;
+ case VisibilityNotify:
+ {
+ register XVisibilityEvent *ev = (XVisibilityEvent *) re;
+ ev->window = sw32(event->u.visibility.window, sw);
+ ev->state = event->u.visibility.state;
+ }
+ break;
+ case CreateNotify:
+ {
+ register XCreateWindowEvent *ev =
+ (XCreateWindowEvent *) re;
+ ev->window = sw32(event->u.createNotify.window, sw);
+ ev->parent = sw32(event->u.createNotify.parent, sw);
+ ev->x = cvtINT16toInt(sw16(event->u.createNotify.x, sw));
+ ev->y = cvtINT16toInt(sw16(event->u.createNotify.y, sw));
+ ev->width = sw16(event->u.createNotify.width, sw);
+ ev->height = sw16(event->u.createNotify.height, sw);
+ ev->border_width = sw16(event->u.createNotify.borderWidth, sw);
+ ev->override_redirect = event->u.createNotify.override;
+ }
+ break;
+ case DestroyNotify:
+ {
+ register XDestroyWindowEvent *ev =
+ (XDestroyWindowEvent *) re;
+ ev->window = sw32(event->u.destroyNotify.window, sw);
+ ev->event = sw32(event->u.destroyNotify.event, sw);
+ }
+ break;
+ case UnmapNotify:
+ {
+ register XUnmapEvent *ev = (XUnmapEvent *) re;
+ ev->window = sw32(event->u.unmapNotify.window, sw);
+ ev->event = sw32(event->u.unmapNotify.event, sw);
+ ev->from_configure = event->u.unmapNotify.fromConfigure;
+ }
+ break;
+ case MapNotify:
+ {
+ register XMapEvent *ev = (XMapEvent *) re;
+ ev->window = sw32(event->u.mapNotify.window, sw);
+ ev->event = sw32(event->u.mapNotify.event, sw);
+ ev->override_redirect = event->u.mapNotify.override;
+ }
+ break;
+ case MapRequest:
+ {
+ register XMapRequestEvent *ev = (XMapRequestEvent *) re;
+ ev->window = sw32(event->u.mapRequest.window, sw);
+ ev->parent = sw32(event->u.mapRequest.parent, sw);
+ }
+ break;
+ case ReparentNotify:
+ {
+ register XReparentEvent *ev = (XReparentEvent *) re;
+ ev->event = sw32(event->u.reparent.event, sw);
+ ev->window = sw32(event->u.reparent.window, sw);
+ ev->parent = sw32(event->u.reparent.parent, sw);
+ ev->x = cvtINT16toInt(sw16(event->u.reparent.x, sw));
+ ev->y = cvtINT16toInt(sw16(event->u.reparent.y, sw));
+ ev->override_redirect = event->u.reparent.override;
+ }
+ break;
+ case ConfigureNotify:
+ {
+ register XConfigureEvent *ev = (XConfigureEvent *) re;
+ ev->event = sw32(event->u.configureNotify.event, sw);
+ ev->window = sw32(event->u.configureNotify.window, sw);
+ ev->above = sw32(event->u.configureNotify.aboveSibling, sw);
+ ev->x = cvtINT16toInt(sw16(event->u.configureNotify.x, sw));
+ ev->y = cvtINT16toInt(sw16(event->u.configureNotify.y, sw));
+ ev->width = sw16(event->u.configureNotify.width, sw);
+ ev->height = sw16(event->u.configureNotify.height, sw);
+ ev->border_width = sw16(event->u.configureNotify.borderWidth, sw);
+ ev->override_redirect = event->u.configureNotify.override;
+ }
+ break;
+ case ConfigureRequest:
+ {
+ register XConfigureRequestEvent *ev =
+ (XConfigureRequestEvent *) re;
+ ev->window = sw32(event->u.configureRequest.window, sw);
+ ev->parent = sw32(event->u.configureRequest.parent, sw);
+ ev->above = sw32(event->u.configureRequest.sibling, sw);
+ ev->x = cvtINT16toInt(sw16(event->u.configureRequest.x, sw));
+ ev->y = cvtINT16toInt(sw16(event->u.configureRequest.y, sw));
+ ev->width = sw16(event->u.configureRequest.width, sw);
+ ev->height = sw16(event->u.configureRequest.height, sw);
+ ev->border_width = sw16(event->u.configureRequest.borderWidth, sw);
+ ev->value_mask = sw16(event->u.configureRequest.valueMask, sw);
+ ev->detail = event->u.u.detail;
+ }
+ break;
+ case GravityNotify:
+ {
+ register XGravityEvent *ev = (XGravityEvent *) re;
+ ev->window = sw32(event->u.gravity.window, sw);
+ ev->event = sw32(event->u.gravity.event, sw);
+ ev->x = cvtINT16toInt(sw16(event->u.gravity.x, sw));
+ ev->y = cvtINT16toInt(sw16(event->u.gravity.y, sw));
+ }
+ break;
+ case ResizeRequest:
+ {
+ register XResizeRequestEvent *ev =
+ (XResizeRequestEvent *) re;
+ ev->window = sw32(event->u.resizeRequest.window, sw);
+ ev->width = sw16(event->u.resizeRequest.width, sw);
+ ev->height = sw16(event->u.resizeRequest.height, sw);
+ }
+ break;
+ case CirculateNotify:
+ {
+ register XCirculateEvent *ev = (XCirculateEvent *) re;
+ ev->window = sw32(event->u.circulate.window, sw);
+ ev->event = sw32(event->u.circulate.event, sw);
+ ev->place = event->u.circulate.place;
+ }
+ break;
+ case CirculateRequest:
+ {
+ register XCirculateRequestEvent *ev =
+ (XCirculateRequestEvent *) re;
+ ev->window = sw32(event->u.circulate.window, sw);
+ ev->parent = sw32(event->u.circulate.event, sw);
+ ev->place = event->u.circulate.place;
+ }
+ break;
+ case PropertyNotify:
+ {
+ register XPropertyEvent *ev = (XPropertyEvent *) re;
+ ev->window = sw32(event->u.property.window, sw);
+ ev->atom = sw32(event->u.property.atom, sw);
+ ev->time = sw32(event->u.property.time, sw);
+ ev->state = event->u.property.state;
+ }
+ break;
+ case SelectionClear:
+ {
+ register XSelectionClearEvent *ev =
+ (XSelectionClearEvent *) re;
+ ev->window = sw32(event->u.selectionClear.window, sw);
+ ev->selection = sw32(event->u.selectionClear.atom, sw);
+ ev->time = sw32(event->u.selectionClear.time, sw);
+ }
+ break;
+ case SelectionRequest:
+ {
+ register XSelectionRequestEvent *ev =
+ (XSelectionRequestEvent *) re;
+ ev->owner = sw32(event->u.selectionRequest.owner, sw);
+ ev->requestor = sw32(event->u.selectionRequest.requestor, sw);
+ ev->selection = sw32(event->u.selectionRequest.selection, sw);
+ ev->target = sw32(event->u.selectionRequest.target, sw);
+ ev->property = sw32(event->u.selectionRequest.property, sw);
+ ev->time = sw32(event->u.selectionRequest.time, sw);
+ }
+ break;
+ case SelectionNotify:
+ {
+ register XSelectionEvent *ev = (XSelectionEvent *) re;
+ ev->requestor = sw32(event->u.selectionNotify.requestor, sw);
+ ev->selection = sw32(event->u.selectionNotify.selection, sw);
+ ev->target = sw32(event->u.selectionNotify.target, sw);
+ ev->property = sw32(event->u.selectionNotify.property, sw);
+ ev->time = sw32(event->u.selectionNotify.time, sw);
+ }
+ break;
+ case ColormapNotify:
+ {
+ register XColormapEvent *ev = (XColormapEvent *) re;
+ ev->window = sw32(event->u.colormap.window, sw);
+ ev->colormap = sw32(event->u.colormap.colormap, sw);
+ ev->new = event->u.colormap.new;
+ ev->state = event->u.colormap.state;
+ }
+ break;
+ case ClientMessage:
+ {
+ register int i;
+ register XClientMessageEvent *ev
+ = (XClientMessageEvent *) re;
+ ev->window = sw32(event->u.clientMessage.window, sw);
+ ev->format = event->u.u.detail;
+ switch (ev->format) {
+ case 8:
+ ev->message_type = sw32(event->u.clientMessage.u.b.type, sw);
+ for (i = 0; i < 20; i++)
+ ev->data.b[i] = event->u.clientMessage.u.b.bytes[i];
+ break;
+ case 16:
+ ev->message_type = sw32(event->u.clientMessage.u.s.type, sw);
+ ev->data.s[0] = cvtINT16toShort(sw16(event->u.clientMessage.u.s.shorts0, sw));
+ ev->data.s[1] = cvtINT16toShort(sw16(event->u.clientMessage.u.s.shorts1, sw));
+ ev->data.s[2] = cvtINT16toShort(sw16(event->u.clientMessage.u.s.shorts2, sw));
+ ev->data.s[3] = cvtINT16toShort(sw16(event->u.clientMessage.u.s.shorts3, sw));
+ ev->data.s[4] = cvtINT16toShort(sw16(event->u.clientMessage.u.s.shorts4, sw));
+ ev->data.s[5] = cvtINT16toShort(sw16(event->u.clientMessage.u.s.shorts5, sw));
+ ev->data.s[6] = cvtINT16toShort(sw16(event->u.clientMessage.u.s.shorts6, sw));
+ ev->data.s[7] = cvtINT16toShort(sw16(event->u.clientMessage.u.s.shorts7, sw));
+ ev->data.s[8] = cvtINT16toShort(sw16(event->u.clientMessage.u.s.shorts8, sw));
+ ev->data.s[9] = cvtINT16toShort(sw16(event->u.clientMessage.u.s.shorts9, sw));
+ break;
+ case 32:
+ ev->message_type = sw32(event->u.clientMessage.u.l.type, sw);
+ ev->data.l[0] = cvtINT32toLong(sw32(event->u.clientMessage.u.l.longs0, sw));
+ ev->data.l[1] = cvtINT32toLong(sw32(event->u.clientMessage.u.l.longs1, sw));
+ ev->data.l[2] = cvtINT32toLong(sw32(event->u.clientMessage.u.l.longs2, sw));
+ ev->data.l[3] = cvtINT32toLong(sw32(event->u.clientMessage.u.l.longs3, sw));
+ ev->data.l[4] = cvtINT32toLong(sw32(event->u.clientMessage.u.l.longs4, sw));
+ break;
+ default: /* XXX should never occur */
+ break;
+ }
+ }
+ break;
+ case MappingNotify:
+ {
+ register XMappingEvent *ev = (XMappingEvent *)re;
+ ev->window = 0;
+ ev->first_keycode = event->u.mappingNotify.firstKeyCode;
+ ev->request = event->u.mappingNotify.request;
+ ev->count = event->u.mappingNotify.count;
+ }
+ break;
+ default:
+ return(False);
+ }
+ return(True);
+}
diff --git a/libX11/modules/lc/Makefile.am b/libX11/modules/lc/Makefile.am
index 82bd06017..3cad2d61c 100644
--- a/libX11/modules/lc/Makefile.am
+++ b/libX11/modules/lc/Makefile.am
@@ -1 +1 @@
-SUBDIRS=Utf8 def gen xlocale
+SUBDIRS=Utf8 def gen xlocale
diff --git a/libX11/modules/lc/Utf8/Makefile.am b/libX11/modules/lc/Utf8/Makefile.am
index 01ad75185..50049c2f0 100644
--- a/libX11/modules/lc/Utf8/Makefile.am
+++ b/libX11/modules/lc/Utf8/Makefile.am
@@ -1,34 +1,34 @@
-AM_CPPFLAGS= \
- -I$(top_srcdir)/include \
- -I$(top_srcdir)/include/X11 \
- -I$(top_builddir)/include \
- -I$(top_builddir)/include/X11 \
- -I$(top_srcdir)/src/xcms \
- -I$(top_srcdir)/src/xkb \
- -I$(top_srcdir)/src/xlibi18n \
- -D_BSD_SOURCE
-
-AM_CFLAGS= \
- $(X11_CFLAGS) \
- $(BIGFONT_CFLAGS) \
- $(MALLOC_ZERO_CFLAGS) \
- $(CWARNFLAGS)
-
-if XLIB_LOADABLE_I18N
-
-commonlibdir = $(X11_LOCALELIBDIR)/common
-commonlib_LTLIBRARIES=xlcUTF8Load.la
-xlcUTF8Load_la_LDFLAGS = -module -version-number 2:0:0
-xlcUTF8Load_la_LIBADD = $(I18N_MODULE_LIBS)
-
-else
-
-noinst_LTLIBRARIES = libxlcUTF8Load.la
-
-endif
-
-
-xlcUTF8Load_la_SOURCES = \
- lcUTF8Load.c
-
-libxlcUTF8Load_la_SOURCES = $(xlcUTF8Load_la_SOURCES)
+AM_CPPFLAGS= \
+ -I$(top_srcdir)/include \
+ -I$(top_srcdir)/include/X11 \
+ -I$(top_builddir)/include \
+ -I$(top_builddir)/include/X11 \
+ -I$(top_srcdir)/src/xcms \
+ -I$(top_srcdir)/src/xkb \
+ -I$(top_srcdir)/src/xlibi18n \
+ -D_BSD_SOURCE
+
+AM_CFLAGS= \
+ $(X11_CFLAGS) \
+ $(BIGFONT_CFLAGS) \
+ $(MALLOC_ZERO_CFLAGS) \
+ $(CWARNFLAGS)
+
+if XLIB_LOADABLE_I18N
+
+commonlibdir = $(X11_LOCALELIBDIR)/common
+commonlib_LTLIBRARIES=xlcUTF8Load.la
+xlcUTF8Load_la_LDFLAGS = -module -version-number 2:0:0
+xlcUTF8Load_la_LIBADD = $(I18N_MODULE_LIBS)
+
+else
+
+noinst_LTLIBRARIES = libxlcUTF8Load.la
+
+endif
+
+
+xlcUTF8Load_la_SOURCES = \
+ lcUTF8Load.c
+
+libxlcUTF8Load_la_SOURCES = $(xlcUTF8Load_la_SOURCES)
diff --git a/libX11/modules/lc/Utf8/lcUTF8Load.c b/libX11/modules/lc/Utf8/lcUTF8Load.c
index c1eec3749..82ea3b54d 100644
--- a/libX11/modules/lc/Utf8/lcUTF8Load.c
+++ b/libX11/modules/lc/Utf8/lcUTF8Load.c
@@ -1,70 +1,70 @@
-/******************************************************************
-
- Copyright 1993 by SunSoft, Inc.
- Copyright 1999-2000 by Bruno Haible
-
-Permission to use, copy, modify, distribute, and sell this software
-and its documentation for any purpose is hereby granted without fee,
-provided that the above copyright notice appear in all copies and
-that both that copyright notice and this permission notice appear
-in supporting documentation, and that the names of SunSoft, Inc. and
-Bruno Haible not be used in advertising or publicity pertaining to
-distribution of the software without specific, written prior
-permission. SunSoft, Inc. and Bruno Haible make no representations
-about the suitability of this software for any purpose. It is
-provided "as is" without express or implied warranty.
-
-SunSoft Inc. AND Bruno Haible DISCLAIM ALL WARRANTIES WITH REGARD
-TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
-AND FITNESS, IN NO EVENT SHALL SunSoft, Inc. OR Bruno Haible BE LIABLE
-FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
-WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
-ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT
-OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
-
-******************************************************************/
-
-/*
- * This file contains the UTF-8 locale loader.
- * Supports: all locales with codeset UTF-8.
- * Platforms: all systems.
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include <stdio.h>
-#include "Xlibint.h"
-#include "XlcPubI.h"
-#include "XlcGeneric.h"
-
-XLCd
-_XlcUtf8Loader(
- const char *name)
-{
- XLCd lcd;
-
- lcd = _XlcCreateLC(name, _XlcGenericMethods);
- if (lcd == (XLCd) NULL)
- return lcd;
-
- /* The official IANA name for UTF-8 is "UTF-8" in upper case with a dash. */
- if (!XLC_PUBLIC_PART(lcd)->codeset) {
- _XlcDestroyLC(lcd);
- return (XLCd) NULL;
- }
- else if (!_XlcCompareISOLatin1(XLC_PUBLIC_PART(lcd)->codeset, "UTF-8")) {
- _XlcAddUtf8LocaleConverters(lcd);
- }
- else if (!_XlcCompareISOLatin1(XLC_PUBLIC_PART(lcd)->codeset, "GB18030")) {
- _XlcAddGB18030LocaleConverters(lcd);
- }
- else {
- _XlcDestroyLC(lcd);
- return (XLCd) NULL;
- }
-
- _XlcAddUtf8Converters(lcd);
-
- return lcd;
-}
+/******************************************************************
+
+ Copyright 1993 by SunSoft, Inc.
+ Copyright 1999-2000 by Bruno Haible
+
+Permission to use, copy, modify, distribute, and sell this software
+and its documentation for any purpose is hereby granted without fee,
+provided that the above copyright notice appear in all copies and
+that both that copyright notice and this permission notice appear
+in supporting documentation, and that the names of SunSoft, Inc. and
+Bruno Haible not be used in advertising or publicity pertaining to
+distribution of the software without specific, written prior
+permission. SunSoft, Inc. and Bruno Haible make no representations
+about the suitability of this software for any purpose. It is
+provided "as is" without express or implied warranty.
+
+SunSoft Inc. AND Bruno Haible DISCLAIM ALL WARRANTIES WITH REGARD
+TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
+AND FITNESS, IN NO EVENT SHALL SunSoft, Inc. OR Bruno Haible BE LIABLE
+FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT
+OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+
+******************************************************************/
+
+/*
+ * This file contains the UTF-8 locale loader.
+ * Supports: all locales with codeset UTF-8.
+ * Platforms: all systems.
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include <stdio.h>
+#include "Xlibint.h"
+#include "XlcPubI.h"
+#include "XlcGeneric.h"
+
+XLCd
+_XlcUtf8Loader(
+ const char *name)
+{
+ XLCd lcd;
+
+ lcd = _XlcCreateLC(name, _XlcGenericMethods);
+ if (lcd == (XLCd) NULL)
+ return lcd;
+
+ /* The official IANA name for UTF-8 is "UTF-8" in upper case with a dash. */
+ if (!XLC_PUBLIC_PART(lcd)->codeset) {
+ _XlcDestroyLC(lcd);
+ return (XLCd) NULL;
+ }
+ else if (!_XlcCompareISOLatin1(XLC_PUBLIC_PART(lcd)->codeset, "UTF-8")) {
+ _XlcAddUtf8LocaleConverters(lcd);
+ }
+ else if (!_XlcCompareISOLatin1(XLC_PUBLIC_PART(lcd)->codeset, "GB18030")) {
+ _XlcAddGB18030LocaleConverters(lcd);
+ }
+ else {
+ _XlcDestroyLC(lcd);
+ return (XLCd) NULL;
+ }
+
+ _XlcAddUtf8Converters(lcd);
+
+ return lcd;
+}
diff --git a/libX11/modules/lc/def/Makefile.am b/libX11/modules/lc/def/Makefile.am
index b9bd31d6d..3307077a0 100644
--- a/libX11/modules/lc/def/Makefile.am
+++ b/libX11/modules/lc/def/Makefile.am
@@ -1,32 +1,32 @@
-AM_CPPFLAGS= \
- -I$(top_srcdir)/include \
- -I$(top_srcdir)/include/X11 \
- -I$(top_builddir)/include \
- -I$(top_builddir)/include/X11 \
- -I$(top_srcdir)/src/xcms \
- -I$(top_srcdir)/src/xkb \
- -I$(top_srcdir)/src/xlibi18n \
- -D_BSD_SOURCE
-
-AM_CFLAGS= \
- $(X11_CFLAGS) \
- $(BIGFONT_CFLAGS) \
- $(CWARNFLAGS)
-
-if XLIB_LOADABLE_I18N
-
-commonlibdir = $(X11_LOCALELIBDIR)/common
-commonlib_LTLIBRARIES=xlcDef.la
-xlcDef_la_LDFLAGS = -module -version-number 2:0:0
-xlcDef_la_LIBADD = $(I18N_MODULE_LIBS)
-
-else
-
-noinst_LTLIBRARIES = libxlcDef.la
-
-endif
-
-xlcDef_la_SOURCES = \
- lcDefConv.c
-
-libxlcDef_la_SOURCES = $(xlcDef_la_SOURCES)
+AM_CPPFLAGS= \
+ -I$(top_srcdir)/include \
+ -I$(top_srcdir)/include/X11 \
+ -I$(top_builddir)/include \
+ -I$(top_builddir)/include/X11 \
+ -I$(top_srcdir)/src/xcms \
+ -I$(top_srcdir)/src/xkb \
+ -I$(top_srcdir)/src/xlibi18n \
+ -D_BSD_SOURCE
+
+AM_CFLAGS= \
+ $(X11_CFLAGS) \
+ $(BIGFONT_CFLAGS) \
+ $(CWARNFLAGS)
+
+if XLIB_LOADABLE_I18N
+
+commonlibdir = $(X11_LOCALELIBDIR)/common
+commonlib_LTLIBRARIES=xlcDef.la
+xlcDef_la_LDFLAGS = -module -version-number 2:0:0
+xlcDef_la_LIBADD = $(I18N_MODULE_LIBS)
+
+else
+
+noinst_LTLIBRARIES = libxlcDef.la
+
+endif
+
+xlcDef_la_SOURCES = \
+ lcDefConv.c
+
+libxlcDef_la_SOURCES = $(xlcDef_la_SOURCES)
diff --git a/libX11/modules/lc/gen/Makefile.am b/libX11/modules/lc/gen/Makefile.am
index 91004a3c5..8ed02a5ad 100644
--- a/libX11/modules/lc/gen/Makefile.am
+++ b/libX11/modules/lc/gen/Makefile.am
@@ -1,32 +1,32 @@
-AM_CPPFLAGS= \
- -I$(top_srcdir)/include \
- -I$(top_srcdir)/include/X11 \
- -I$(top_builddir)/include \
- -I$(top_builddir)/include/X11 \
- -I$(top_srcdir)/src/xcms \
- -I$(top_srcdir)/src/xkb \
- -I$(top_srcdir)/src/xlibi18n \
- -D_BSD_SOURCE
-
-AM_CFLAGS= \
- $(X11_CFLAGS) \
- $(BIGFONT_CFLAGS) \
- $(CWARNFLAGS)
-
-if XLIB_LOADABLE_I18N
-
-commonlibdir = $(X11_LOCALELIBDIR)/common
-commonlib_LTLIBRARIES=xlibi18n.la
-xlibi18n_la_LDFLAGS = -module -version-number 2:0:0
-xlibi18n_la_LIBADD = $(I18N_MODULE_LIBS)
-
-else
-
-noinst_LTLIBRARIES = libxlibi18n.la
-
-endif
-
-xlibi18n_la_SOURCES = \
- lcGenConv.c
-
-libxlibi18n_la_SOURCES = $(xlibi18n_la_SOURCES)
+AM_CPPFLAGS= \
+ -I$(top_srcdir)/include \
+ -I$(top_srcdir)/include/X11 \
+ -I$(top_builddir)/include \
+ -I$(top_builddir)/include/X11 \
+ -I$(top_srcdir)/src/xcms \
+ -I$(top_srcdir)/src/xkb \
+ -I$(top_srcdir)/src/xlibi18n \
+ -D_BSD_SOURCE
+
+AM_CFLAGS= \
+ $(X11_CFLAGS) \
+ $(BIGFONT_CFLAGS) \
+ $(CWARNFLAGS)
+
+if XLIB_LOADABLE_I18N
+
+commonlibdir = $(X11_LOCALELIBDIR)/common
+commonlib_LTLIBRARIES=xlibi18n.la
+xlibi18n_la_LDFLAGS = -module -version-number 2:0:0
+xlibi18n_la_LIBADD = $(I18N_MODULE_LIBS)
+
+else
+
+noinst_LTLIBRARIES = libxlibi18n.la
+
+endif
+
+xlibi18n_la_SOURCES = \
+ lcGenConv.c
+
+libxlibi18n_la_SOURCES = $(xlibi18n_la_SOURCES)
diff --git a/libX11/modules/lc/xlocale/Makefile.am b/libX11/modules/lc/xlocale/Makefile.am
index ce1fd0976..70a221fd7 100644
--- a/libX11/modules/lc/xlocale/Makefile.am
+++ b/libX11/modules/lc/xlocale/Makefile.am
@@ -1,35 +1,35 @@
-AM_CPPFLAGS= \
- -I$(top_srcdir)/include \
- -I$(top_srcdir)/include/X11 \
- -I$(top_builddir)/include \
- -I$(top_builddir)/include/X11 \
- -I$(top_srcdir)/src/xcms \
- -I$(top_srcdir)/src/xkb \
- -I$(top_srcdir)/src/xlibi18n \
- -D_BSD_SOURCE
-
-AM_CFLAGS= \
- $(X11_CFLAGS) \
- $(BIGFONT_CFLAGS) \
- $(CWARNFLAGS)
-
-if XLIB_LOADABLE_I18N
-
-commonlibdir = $(X11_LOCALELIBDIR)/common
-commonlib_LTLIBRARIES=xlocale.la
-xlocale_la_LDFLAGS = -module -version-number 2:0:0
-xlocale_la_LIBADD = $(I18N_MODULE_LIBS)
-
-else
-
-noinst_LTLIBRARIES = libxlocale.la
-
-endif
-
-
-xlocale_la_SOURCES = \
- lcEuc.c \
- lcJis.c \
- lcSjis.c
-
-libxlocale_la_SOURCES = $(xlocale_la_SOURCES)
+AM_CPPFLAGS= \
+ -I$(top_srcdir)/include \
+ -I$(top_srcdir)/include/X11 \
+ -I$(top_builddir)/include \
+ -I$(top_builddir)/include/X11 \
+ -I$(top_srcdir)/src/xcms \
+ -I$(top_srcdir)/src/xkb \
+ -I$(top_srcdir)/src/xlibi18n \
+ -D_BSD_SOURCE
+
+AM_CFLAGS= \
+ $(X11_CFLAGS) \
+ $(BIGFONT_CFLAGS) \
+ $(CWARNFLAGS)
+
+if XLIB_LOADABLE_I18N
+
+commonlibdir = $(X11_LOCALELIBDIR)/common
+commonlib_LTLIBRARIES=xlocale.la
+xlocale_la_LDFLAGS = -module -version-number 2:0:0
+xlocale_la_LIBADD = $(I18N_MODULE_LIBS)
+
+else
+
+noinst_LTLIBRARIES = libxlocale.la
+
+endif
+
+
+xlocale_la_SOURCES = \
+ lcEuc.c \
+ lcJis.c \
+ lcSjis.c
+
+libxlocale_la_SOURCES = $(xlocale_la_SOURCES)
diff --git a/libX11/modules/lc/xlocale/lcEuc.c b/libX11/modules/lc/xlocale/lcEuc.c
index b39050578..442e3090f 100644
--- a/libX11/modules/lc/xlocale/lcEuc.c
+++ b/libX11/modules/lc/xlocale/lcEuc.c
@@ -1,1537 +1,1537 @@
-/******************************************************************
-
- Copyright 1992, 1993 by FUJITSU LIMITED
- Copyright 1993 by Fujitsu Open Systems Solutions, Inc.
-
-Permission to use, copy, modify, distribute and sell this software
-and its documentation for any purpose is hereby granted without fee,
-provided that the above copyright notice appear in all copies and
-that both that copyright notice and this permission notice appear
-in supporting documentation, and that the name of FUJITSU LIMITED and
-Fujitsu Open Systems Solutions, Inc. not be used in advertising or
-publicity pertaining to distribution of the software without specific,
-written prior permission.
-FUJITSU LIMITED and Fujitsu Open Systems Solutions, Inc. makes no
-representations about the suitability of this software for any purpose.
-It is provided "as is" without express or implied warranty.
-
-FUJITSU LIMITED AND FUJITSU OPEN SYSTEMS SOLUTIONS, INC. DISCLAIMS ALL
-WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES
-OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL FUJITSU OPEN SYSTEMS
-SOLUTIONS, INC. AND FUJITSU LIMITED BE LIABLE FOR ANY SPECIAL, INDIRECT
-OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF
-USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
-TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
-OF THIS SOFTWARE.
-
- Authors: Shigeru Yamada (yamada@ossi.com)
- Jeffrey Bloomfield (jeffb@ossi.com)
- Yoshiyuki Segawa (segawa@ossi.com)
-
-*****************************************************************/
-
-/*
- * An EUC locale.
- * Supports: all locales with codeset eucJP, eucKR, eucCN, eucTW.
- * How: Provides converters for euc*.
- * Platforms: Only those defining X_LOCALE (only Lynx, Linux-libc5, OS/2).
- */
-
-#ifdef X_LOCALE
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-#include "XlcGeneric.h"
-
-#include <ctype.h>
-#ifdef WIN32
-#define isascii __isascii
-#endif
-
-#define CS0 codesets[0] /* Codeset 0 - 7-bit ASCII */
-#define CS1 codesets[1] /* Codeset 1 - Kanji */
-#define CS2 codesets[2] /* Codeset 2 - Half-Kana */
-#define CS3 codesets[3] /* Codeset 3 - User defined */
-
-#define SS2 0x8e /* Single-shift char: CS2 */
-#define SS3 0x8f /* Single-shift char: CS3 */
-
-#define ASCII_CODESET 0
-#define KANJI_CODESET 1
-#define KANA_CODESET 2
-#define USERDEF_CODESET 3
-#define MAX_CODESETS
-
-#define GR 0x80 /* begins right-side (non-ascii) region */
-#define GL 0x7f /* ends left-side (ascii) region */
-
-#define isleftside(c) (((c) & GR) ? 0 : 1)
-#define isrightside(c) (!isleftside(c))
-
-#define BIT8OFF(c) ((c) & GL)
-#define BIT8ON(c) ((c) | GR)
-
-typedef unsigned char Uchar;
-typedef unsigned long Ulong;
-typedef unsigned int Uint;
-
-static CodeSet GetCodeSetFromCharSet (XLCd lcd, XlcCharSet charset);
-static CodeSet wc_codeset (XLCd lcd, wchar_t wch);
-
-#define BADCHAR(min_ch, c) (BIT8OFF(c) < (char)min_ch && BIT8OFF(c) != 0x0 && \
- BIT8OFF(c) != '\t' && BIT8OFF(c) != '\n' && \
- BIT8OFF(c) != 0x1b)
-
-/*
- * Notes:
- * 1. Defining FORCE_INDIRECT_CONVERTER (see _XlcEucLoader())
- * forces indirect (charset) conversions (e.g. wcstocs()<->cstombs()).
- * 2. Using direct converters (e.g. mbstowcs()) decreases conversion
- * times by 20-40% (depends on specific converter used).
- */
-
-static int
-euc_mbstowcs(
- XlcConv conv,
- XPointer *from,
- int *from_left,
- XPointer *to,
- int *to_left,
- XPointer *args,
- int num_args)
-{
- XLCd lcd = (XLCd)conv->state;
-
- Uchar ch;
- int chr_len = 0;
- int sshift = False;
- int shift_mult = 0;
- Uint chrcode;
-
- Uint wc_encode = 0;
- Uint wc_tmp = 0;
-
- int cs0flg = False;
- int cs1flg = False;
- int length = 0;
- int unconv_num = 0;
-
- Bool new_char;
-
- const char *inbufptr = *from;
- wchar_t *outbufptr = (wchar_t *) *to;
-
- CodeSet *codesets = XLC_GENERIC(lcd, codeset_list);
- int codeset_num = XLC_GENERIC(lcd, codeset_num);
- Ulong wc_shift = XLC_GENERIC(lcd, wc_shift_bits);
-
- for (new_char = True; *from_left > 0 && *to_left > 0;) {
-
- ch = *inbufptr++;
-
- if (isleftside(ch)) { /* CS0 */
- if (ASCII_CODESET >= codeset_num) {
- unconv_num++;
- (*from_left)--;
- continue;
- }
- if( cs0flg == True) {
- new_char = True;
- cs0flg = False;
- }
- length = CS0->length;
- *outbufptr++ = (wchar_t)ch;
- (*from_left)--;
- (*to_left)--;
- continue;
- }
- else if (ch == SS2) { /* CS2 */
- if (KANA_CODESET >= codeset_num) {
- unconv_num++;
- (*from_left)--;
- continue;
- }
- if (sshift == True || cs1flg == True) {
- cs1flg = False;
- unconv_num++;
- continue;
- }
- length = CS2->length;
- wc_encode = CS2->wc_encoding;
- chrcode = 0;
- sshift = True;
- cs0flg = True;
- (*from_left)--;
- continue;
- }
- else if (ch == SS3) { /* CS3 */
- if (USERDEF_CODESET >= codeset_num) {
- unconv_num++;
- (*from_left)--;
- continue;
- }
- if (sshift == True || cs1flg == True) {
- cs1flg = False;
- unconv_num++;
- continue;
- }
- length = CS3->length;
- if (*from_left < 1 )
- unconv_num++;
- wc_encode = CS3->wc_encoding;
- chrcode = 0;
- sshift = True;
- cs0flg = True;
- (*from_left)--;
- continue;
-
- } else { /* CS1 */
- if (KANJI_CODESET >= codeset_num) {
- unconv_num++;
- (*from_left)--;
- continue;
- }
- if (sshift == False) {
- length = CS1->length;
- if (*from_left < 1)
- unconv_num++;
- wc_encode = CS1->wc_encoding;
- }
- chrcode = BIT8OFF(ch);
- cs0flg = True;
- cs1flg = True;
- (*from_left)--;
- }
-
- if (new_char) { /* begin new character */
- chr_len = length;
- shift_mult = length - 1;
- new_char = False;
- }
-
- chrcode <<= (wc_shift * shift_mult);
- shift_mult--;
- wc_tmp |= chrcode;
-
- if (--chr_len == 0) {
- wc_tmp |= wc_encode;
- *outbufptr++ = wc_tmp;
- (*to_left)--;
-
- new_char = True;
- sshift = False;
- cs0flg = False;
- cs1flg = False;
- wc_tmp = (Uint)0;
- }
-
- } /* end for */
-
- *to = (XPointer)outbufptr;
-
- if (cs0flg == True || cs1flg == True) /* error check on last char */
- unconv_num++;
-
- return unconv_num;
-}
-
-
-static int
-euc_wcstombs(
- XlcConv conv,
- XPointer *from,
- int *from_left,
- XPointer *to,
- int *to_left,
- XPointer *args,
- int num_args)
-{
- const wchar_t *inbufptr = (const wchar_t *) *from;
- XPointer outbufptr = *to;
- wchar_t wch;
- int length;
- Uchar tmp;
- int unconv_num = 0;
-
- XLCd lcd = (XLCd)conv->state;
- CodeSet codeset;
- Ulong wc_shift = XLC_GENERIC(lcd, wc_shift_bits);
-
- for (; *from_left > 0 && *to_left > 0; (*from_left)-- ) {
-
- wch = *inbufptr++;
-
- if (!(codeset = wc_codeset(lcd, wch))) {
- unconv_num++;
- (*from_left)--;
- continue;
- }
-
- length = codeset->length;
- wch ^= (wchar_t)codeset->wc_encoding;
-
- if (codeset->parse_info) { /* put out SS2 or SS3 */
- if (*to_left < length + 1) {
- unconv_num++;
- break;
- }
- *outbufptr++ = *codeset->parse_info->encoding;
- (*to_left)--;
- } else {
- if (*to_left < length) {
- unconv_num++;
- break;
- }
- }
-
- do {
- length--;
- tmp = (wch>>(wchar_t)(length * wc_shift));
-
- if (codeset->side == XlcGR)
- tmp = BIT8ON(tmp);
-
- *outbufptr++ = (Uchar)tmp;
- (*to_left)--;
- } while (length);
- }
-
- *to = (XPointer)outbufptr;
-
- return unconv_num;
-}
-
-
-static int
-euc_mbtocs(
- XlcConv conv,
- XPointer *from,
- int *from_left,
- XPointer *to,
- int *to_left,
- XPointer *args,
- int num_args)
-{
- XLCd lcd = (XLCd)conv->state;
- XlcCharSet charset;
- CodeSet *codesets = XLC_GENERIC(lcd, codeset_list);
- int codeset_num = XLC_GENERIC(lcd, codeset_num);
- int length;
- int unconv_num = 0;
- int min_ch = 0;
- const char *src = *from;
- char *dst = *to;
-
- if (isleftside(*src)) { /* 7-bit (CS0) */
- if (ASCII_CODESET >= codeset_num)
- return -1;
- charset = *CS0->charset_list;
- }
- else if ((Uchar)*src == SS2) { /* half-kana (CS2) */
- if (KANA_CODESET >= codeset_num)
- return -1;
- charset = *CS2->charset_list;
- src++;
- (*from_left)--;
- }
- else if ((Uchar)*src == SS3) { /* user-def */
- if (USERDEF_CODESET >= codeset_num)
- return -1;
- charset = *CS3->charset_list;
- src++;
- (*from_left)--;
- }
- else { /* Kanji (CS1) */
- if (KANJI_CODESET >= codeset_num)
- return -1;
- charset = *CS1->charset_list;
- }
-
- if(*from_left < charset->char_size || *to_left < charset->char_size)
- return -1;
-
- min_ch = 0x20;
- if (charset->set_size == 94)
- if (charset->char_size > 1 || charset->side == XlcGR)
- min_ch = 0x21;
-
- length = charset->char_size;
- do {
- if(BADCHAR(min_ch, *src)) {
- unconv_num++;
- src++;
- break;
- }
- switch (charset->side) {
- case XlcGL:
- *dst++ = BIT8OFF(*src++);
- break;
- case XlcGR:
- *dst++ = BIT8ON(*src++);
- break;
- default:
- *dst++ = *src++;
- break;
- }
- } while (--length);
-
- *to = dst;
- *from = (XPointer) src;
- *from_left -= charset->char_size;
- *to_left -= charset->char_size - length;
-
- if (num_args > 0)
- *((XlcCharSet *) args[0]) = charset;
-
- return unconv_num;
-}
-
-
-static int
-euc_mbstocs(
- XlcConv conv,
- XPointer *from,
- int *from_left,
- XPointer *to,
- int *to_left,
- XPointer *args,
- int num_args)
-{
- const char *tmp_from;
- char *tmp_to;
- int tmp_from_left, tmp_to_left;
- XlcCharSet charset, tmp_charset;
- XPointer tmp_args[1];
- int unconv_num = 0, ret;
-
-/* Determine the charset of the segment and convert one characater: */
-
- tmp_args[0] = (XPointer) &charset; /* charset from euc_mbtocs() */
- while
- ((ret = euc_mbtocs(conv, from, from_left, to, to_left, tmp_args, 1)) > 0)
- unconv_num += ret;
- if ( ret < 0 )
- return ret;
-
- tmp_from = *from;
- tmp_from_left = *from_left;
- tmp_to_left = *to_left;
- tmp_to = *to;
-
-/* Convert remainder of the segment: */
-
- tmp_args[0] = (XPointer) &tmp_charset;
- while( (ret = euc_mbtocs(conv, (XPointer *) &tmp_from, &tmp_from_left,
- (XPointer *) &tmp_to, &tmp_to_left, tmp_args, 1)) >= 0 ) {
-
- if (ret > 0) {
- unconv_num += ret;
- continue;
- }
-
- if (tmp_charset != charset) /* quit on end of segment */
- break;
-
- *from = (XPointer) tmp_from;
- *from_left = tmp_from_left;
- *to = (XPointer) tmp_to;
- *to_left = tmp_to_left;
- }
-
- if (num_args > 0)
- *((XlcCharSet *) args[0]) = charset;
-
- return unconv_num;
-}
-
-
-static int
-euc_wcstocs(
- XlcConv conv,
- XPointer *from,
- int *from_left,
- XPointer *to,
- int *to_left,
- XPointer *args,
- int num_args)
-{
- XLCd lcd = (XLCd)conv->state;
- const wchar_t *wcptr = (const wchar_t *) *from;
- char *bufptr = (char *) *to;
- wchar_t wch;
- char *tmpptr;
- int length;
- CodeSet codeset;
- Ulong wc_encoding;
- int wcstr_len = *from_left, buf_len = *to_left;
-
- if (!(codeset = wc_codeset(lcd, *wcptr)))
- return -1;
-
- wc_encoding = codeset->wc_encoding;
-
- if (wcstr_len < buf_len / codeset->length)
- buf_len = wcstr_len * codeset->length;
-
- for ( ; wcstr_len > 0 && buf_len > 0; wcptr++, wcstr_len--) {
- wch = *wcptr;
-
- if ((wch & XLC_GENERIC(lcd, wc_encode_mask)) != wc_encoding)
- break;
-
- length = codeset->length;
-
- buf_len -= length;
- bufptr += length;
- tmpptr = bufptr - 1;
-
- while (length--) {
- *tmpptr-- = codeset->length == 1 && codeset->side == XlcGR ?
- BIT8ON(wch) : BIT8OFF(wch);
- wch >>= (wchar_t)XLC_GENERIC(lcd, wc_shift_bits);
- }
- }
-
- if (num_args > 0)
- *((XlcCharSet *) args[0]) = *codeset->charset_list;
-
- *from_left -= wcptr - (wchar_t *) *from;
- *from = (XPointer) wcptr;
-
- *to_left -= bufptr - *to;
- *to = bufptr;
-
- return 0;
-}
-
-
-static int
-euc_cstombs(
- XlcConv conv,
- XPointer *from,
- int *from_left,
- XPointer *to,
- int *to_left,
- XPointer *args,
- int num_args)
-{
- XLCd lcd = (XLCd)conv->state;
- const char *csptr = *from;
- char *bufptr = *to;
- int csstr_len = *from_left;
- int buf_len = *to_left;
- int length;
- CodeSet codeset;
- int cvt_length;
-
- if (num_args < 1)
- return -1;
-
- if (!(codeset = GetCodeSetFromCharSet(lcd, (XlcCharSet) args[0])))
- return -1;
-
- cvt_length = 0;
- csstr_len /= codeset->length;
- buf_len /= codeset->length;
-
- if (codeset->parse_info)
- csstr_len *= 2;
-
- if (csstr_len < buf_len)
- buf_len = csstr_len;
-
- cvt_length += buf_len * codeset->length;
-
- if (bufptr) {
- while (buf_len--) {
- if (codeset->parse_info) /* put out SS2 or SS3 */
- *bufptr++ = *codeset->parse_info->encoding;
-
- length = codeset->length;
- while (length--)
- *bufptr++ = codeset->side == XlcGR ?
- BIT8ON(*csptr++) : BIT8OFF(*csptr++);
- }
- }
-
- *from_left -= csptr - *from;
- *from = (XPointer) csptr;
- if (bufptr)
- *to += cvt_length;
- *to_left -= cvt_length;
-
- return 0;
-}
-
-
-static int
-euc_cstowcs(
- XlcConv conv,
- XPointer *from,
- int *from_left,
- XPointer *to,
- int *to_left,
- XPointer *args,
- int num_args)
-{
- XLCd lcd = (XLCd)conv->state;
- const char *csptr = *from;
- wchar_t *bufptr = (wchar_t *) *to;
- wchar_t *toptr = (wchar_t *) *to;
- int csstr_len = *from_left;
- int buf_len = *to_left;
- wchar_t wch;
- int length;
- Ulong wc_shift_bits = XLC_GENERIC(lcd, wc_shift_bits);
- CodeSet codeset;
-
- if (num_args < 1)
- return -1;
-
- if (!(codeset = GetCodeSetFromCharSet(lcd, (XlcCharSet) args[0])))
- return -1;
-
- csstr_len /= codeset->length;
- if (csstr_len < buf_len)
- buf_len = csstr_len;
- *to_left -= buf_len;
-
- if (bufptr) {
-
- toptr += buf_len;
- *to = (XPointer) toptr;
-
- while (buf_len--) {
-
- wch = (wchar_t) BIT8OFF(*csptr);
- csptr++;
-
- length = codeset->length - 1;
- while (length--) {
- wch = (wch << wc_shift_bits) | BIT8OFF(*csptr);
- csptr++;
- }
- *bufptr++ = wch | codeset->wc_encoding;
- }
- }
- *from_left -= csptr - *from;
- *from = (XPointer) csptr;
-
- return 0;
-}
-
-
-static CodeSet
-wc_codeset(
- XLCd lcd,
- wchar_t wch)
-{
- CodeSet *codesets = XLC_GENERIC(lcd, codeset_list);
- int end = XLC_GENERIC(lcd, codeset_num);
- Ulong widech = (Ulong)(wch & XLC_GENERIC(lcd, wc_encode_mask));
-
- for (; --end >= 0; codesets++)
- if ( widech == (*codesets)->wc_encoding )
- return *codesets;
-
- return NULL;
-}
-
-
-static CodeSet
-GetCodeSetFromCharSet(
- XLCd lcd,
- XlcCharSet charset)
-{
- CodeSet *codeset = XLC_GENERIC(lcd, codeset_list);
- XlcCharSet *charset_list;
- int codeset_num, num_charsets;
-
- codeset_num = XLC_GENERIC(lcd, codeset_num);
-
- for ( ; codeset_num-- > 0; codeset++) {
- num_charsets = (*codeset)->num_charsets;
- charset_list = (*codeset)->charset_list;
-
- for ( ; num_charsets-- > 0; charset_list++)
- if (*charset_list == charset)
- return *codeset;
- }
-
- return (CodeSet) NULL;
-}
-
-
-static XlcConv
-create_conv(
- XLCd lcd,
- XlcConvMethods methods)
-{
- XlcConv conv;
-
- conv = (XlcConv) Xmalloc(sizeof(XlcConvRec));
- if (conv == NULL)
- return (XlcConv) NULL;
-
- conv->methods = methods;
- conv->state = (XPointer) lcd;
- return conv;
-}
-
-
-/*
- * Stripped down Direct CT converters for EUC
- *
- */
-
-typedef struct _CTDataRec {
- int side;
- int length;
- char *name;
- Ulong wc_encoding;
- char sshift;
- char *ct_encoding;
- int ct_encoding_len;
- int set_size;
- Uchar min_ch;
- Uchar ct_type;
-} CTDataRec, *CTData;
-
-typedef struct _StateRec {
- CTData GL_charset;
- CTData GR_charset;
- CTData charset;
-} StateRec, *State;
-
-#define CT_STD 0
-#define CT_NSTD 1
-#define CT_DIR 2
-#define CT_EXT0 3
-#define CT_EXT1 4
-#define CT_EXT2 5
-#define CT_VER 6
-
-static CTDataRec ctdata[] =
-{
- { XlcGL, 1, "ISO8859-1:GL", 0, 0, "\033(B" , 3, 0, 0, CT_STD },
- { XlcGR, 1, "ISO8859-1:GR", 0, 0, "\033-A" , 3, 0, 0, CT_STD },
- { XlcGL, 1, "JISX0201.1976-0:GL", 0, 0, "\033(J" , 3, 0, 0, CT_STD },
- { XlcGR, 1, "JISX0201.1976-0:GR", 0, 0, "\033)I" , 3, 0, 0, CT_STD },
- { XlcGL, 2, "JISX0208.1983-0:GL", 0, 0, "\033$(B" , 4, 0, 0, CT_STD },
- { XlcGR, 2, "JISX0208.1983-0:GR", 0, 0, "\033$)B" , 4, 0, 0, CT_STD },
- { XlcGL, 2, "JISX0212.1990-0:GL", 0, 0, "\033$(D" , 4, 0, 0, CT_STD },
- { XlcGR, 2, "JISX0212.1990-0:GR", 0, 0, "\033$)D" , 4, 0, 0, CT_STD },
- { XlcUnknown, 0, "Ignore-Ext-Status?", 0, 0, "\033#" , 2, 0, 0, CT_VER },
- { XlcUnknown, 0, "NonStd-?-OctetChar", 0, 0, "\033%/0" , 4, 0, 0, CT_NSTD },
- { XlcUnknown, 1, "NonStd-1-OctetChar", 0, 0, "\033%/1" , 4, 0, 0, CT_NSTD },
- { XlcUnknown, 2, "NonStd-2-OctetChar", 0, 0, "\033%/2" , 4, 0, 0, CT_NSTD },
- { XlcUnknown, 3, "NonStd-3-OctetChar", 0, 0, "\033%/3" , 4, 0, 0, CT_NSTD },
- { XlcUnknown, 4, "NonStd-4-OctetChar", 0, 0, "\033%/4" , 4, 0, 0, CT_NSTD },
- { XlcUnknown, 0, "Extension-2" , 0, 0, "\033%/" , 3, 0, 0, CT_EXT2 },
- { XlcUnknown, 0, "Extension-0" , 0, 0, "\033" , 1, 0, 0, CT_EXT0 },
- { XlcUnknown, 0, "Begin-L-to-R-Text", 0, 0, "\2331]" , 3, 0, 0, CT_DIR },
- { XlcUnknown, 0, "Begin-R-to-L-Text", 0, 0, "\2332]" , 3, 0, 0, CT_DIR },
- { XlcUnknown, 0, "End-Of-String", 0, 0, "\233]" , 2, 0, 0, CT_DIR },
- { XlcUnknown, 0, "Extension-1" , 0, 0, "\233" , 1, 0, 0, CT_EXT1 },
-};
-
-/* Note on above table: euc_ctstombs() and euc_ctstowcs() parser depends on
- * certain table entries occuring in decreasing string length--
- * 1. CT_EXT2 and CT_EXT0 entries must occur after CT_NSTD entries.
- * 2. CT_DIR and CT_EXT1 entries must occur after CT_DIR entries.
- */
-
-static CTData ctd_endp = ctdata + ((sizeof(ctdata) / sizeof(CTDataRec))) - 1;
-static CTData ctdptr[sizeof(ctdata) / sizeof(CTDataRec)];
-
-#define Ascii 0
-#define Kanji 1
-#define Kana 2
-#define Userdef 3
-
-/*
- * initCTptr(): Set ctdptr[] to point at ctdata[], indexed by codeset_num.
- */
-static void
-initCTptr(
- XLCd lcd)
-{
- int num_codesets = XLC_GENERIC(lcd, codeset_num);
- int num_charsets;
- int i, j;
- CodeSet *codesets = XLC_GENERIC(lcd, codeset_list);
- CodeSet codeset;
- XlcCharSet charset;
- CTData ctdp = ctdata;
-
- ctdptr[Ascii] = &ctdata[0]; /* failsafe */
-
- for (i = 0; i < num_codesets; i++) {
-
- codeset = codesets[i];
- num_charsets = codeset->num_charsets;
-
- for (j = 0; j < num_charsets; j++) {
-
- charset = codeset->charset_list[j];
-
- for (ctdp = ctdata; ctdp <= ctd_endp; ctdp++)
-
- if (! strcmp(ctdp->name, charset->name)) {
-
- ctdptr[codeset->cs_num] = ctdp;
-
- ctdptr[codeset->cs_num]->wc_encoding = codeset->wc_encoding;
-
- ctdptr[codeset->cs_num]->set_size =
- charset->set_size;
-
- ctdptr[codeset->cs_num]->min_ch =
- charset->set_size == 94 &&
- (ctdptr[codeset->cs_num]->length > 1 ||
- ctdptr[codeset->cs_num]->side == XlcGR) ? 0x21 : 0x20;
-
- if (codeset->parse_info) {
- ctdptr[codeset->cs_num]->sshift =
- *codeset->parse_info->encoding;
- }
-
- break;
- }
- }
- }
-}
-
-
-#define SKIP_I(str) while (*(str) >= 0x20 && *(str) <= 0x2f) (str)++;
-#define SKIP_P(str) while (*(str) >= 0x30 && *(str) <= 0x3f) (str)++;
-
-static int
-euc_ctstowcs(
- XlcConv conv,
- XPointer *from,
- int *from_left,
- XPointer *to,
- int *to_left,
- XPointer *args,
- int num_args)
-{
- XLCd lcd = (XLCd)conv->state;
- Ulong wc_shift_bits = XLC_GENERIC(lcd, wc_shift_bits);
- const char *inbufptr = *from;
- const char *inbuf_base;
- wchar_t *outbufptr = (wchar_t *) *to;
- wchar_t *outbuf_base = outbufptr;
- int clen, length;
- int unconv_num = 0;
- unsigned int ct_seglen = 0;
- Uchar ct_type = 0;
- int shift_mult;
- wchar_t wc_tmp;
- wchar_t wch;
- Ulong wc_encoding;
- CTData ctdp = ctdata;
- CTData GL_ctdp = ctdp; /* GL ctdp save */
- CTData GR_ctdp = ctdp; /* GR ctdp save */
- Bool save_outbuf = True;
- /* If outbufptr is NULL, doen't save output, but just counts
- a length to hold the output */
- if (outbufptr == NULL) save_outbuf = False;
-
- for (length = ctdata[Ascii].length; *from_left > 0; (*from_left) -= length)
- {
- ct_type = CT_STD;
- /* change GL/GR charset */
- if(ctdp->side == XlcGR && isleftside(*inbufptr)){
- /* select GL side */
- ctdp = GL_ctdp;
- length = ctdp->length;
- ct_type = ctdp->ct_type;
- }else if(ctdp->side == XlcGL && isrightside(*inbufptr)){
- /* select GR side */
- ctdp = GR_ctdp;
- length = ctdp->length;
- ct_type = ctdp->ct_type;
- }
- if (*inbufptr == '\033' || *inbufptr == (char)'\233') {
- for (ctdp = ctdata; ctdp <= ctd_endp ; ctdp++) {
-
- if(!strncmp(inbufptr, ctdp->ct_encoding, ctdp->ct_encoding_len))
- {
- inbufptr += ctdp->ct_encoding_len;
- (*from_left) -= ctdp->ct_encoding_len;
- if (ctdp->length) {
- length = ctdp->length;
- if( *from_left < length ) {
- *to = (XPointer)outbufptr;
- *to_left -= outbufptr - outbuf_base;
- return( unconv_num + *from_left );
- }
- }
- ct_type = ctdp->ct_type;
- if(ctdp->side == XlcGL){
- GL_ctdp = ctdp; /* save GL ctdp */
- }else{
- GR_ctdp = ctdp; /* save GR ctdp */
- }
- break;
- }
- }
- if (ctdp > ctd_endp) /* failed to match CT sequence */
- unconv_num++;
- }
-
-/* The following code insures that non-standard encodings, direction, extension,
- * and version strings are ignored; subject to change in future.
- */
- switch (ct_type) {
- case CT_STD:
- break;
- case CT_EXT2:
- inbufptr++;
- (*from_left)--;
- case CT_NSTD:
- ct_seglen = (BIT8OFF(*inbufptr) << 7) + BIT8OFF(*(inbufptr+1)) + 2;
- inbufptr += ct_seglen;
- (*from_left) -= ct_seglen;
- continue;
- case CT_EXT0:
- inbuf_base = inbufptr;
- SKIP_I(inbufptr);
- inbufptr++;
- ct_seglen = (unsigned)(inbufptr - inbuf_base);
- *(from_left) -= ct_seglen;
- continue;
- case CT_EXT1:
- inbuf_base = inbufptr;
- SKIP_P(inbufptr);
- SKIP_I(inbufptr);
- inbufptr++;
- ct_seglen = (unsigned)(inbufptr - inbuf_base);
- *(from_left) -= ct_seglen;
- continue;
- case CT_DIR:
- continue;
- case CT_VER:
- inbufptr += 2;
- *(from_left) -= 2;
- continue;
- }
-
- wc_encoding = (ctdp == ctdptr[Kana] && isleftside(*inbufptr)) ?
- ctdptr[Ascii]->wc_encoding: ctdp->wc_encoding;
-
- shift_mult = length - 1;
- wch = (wchar_t)0;
- clen = length;
-
- do {
- wc_tmp = BIT8OFF(*inbufptr++) << (wc_shift_bits * shift_mult);
- wch |= wc_tmp;
- shift_mult--;
- } while (--clen);
-
- if (save_outbuf == True)
- *outbufptr++ = wch | wc_encoding;
- if (--*to_left == 0 && *from_left != length) {
- *to = (XPointer)outbufptr;
- unconv_num = *from_left;
- return unconv_num;
- }
- }
-
- *to = (XPointer)outbufptr;
-
- return unconv_num;
-
-}
-
-
-#define byte1 (length == codeset->length - 1)
-#define byte2 (byte1 == 0)
-#define kanji (codeset->cs_num == 1)
-#define kana (codeset->cs_num == 2)
-#define userdef (codeset->cs_num == 3)
-
-static int
-euc_wcstocts(
- XlcConv conv,
- XPointer *from,
- int *from_left,
- XPointer *to,
- int *to_left,
- XPointer *args,
- int num_args)
-{
- int ct_len = *to_left;
- const wchar_t *inbufptr = (const wchar_t *) *from;
- char *ctptr = *to;
- XPointer ct_base = ctptr;
- wchar_t wch;
- int length;
- int unconv_num = 0;
- Uchar tmp;
- Uchar t1 = 0;
- int num_conv;
-
- StateRec ct_state;
- XLCd lcd = (XLCd)conv->state;
- CTData charset;
- CodeSet codeset;
- Ulong wc_shift = XLC_GENERIC(lcd, wc_shift_bits);
-
-/* Initial State: */
- ct_state.GL_charset = ctdptr[0]; /* Codeset 0 */
- ct_state.GR_charset = NULL;
-
- if (*from_left > *to_left)
- *from_left = *to_left;
-
- for (; *from_left > 0 ; (*from_left)-- ) {
-
- wch = *inbufptr++;
-
- if (!(codeset = wc_codeset(lcd, wch))) {
- unconv_num++;
- (*from_left)--;
- continue;
- }
-
- charset = ctdptr[codeset->cs_num];
-
- length = codeset->length;
- wch ^= (wchar_t)codeset->wc_encoding;
-
- if ( (charset->side == XlcGR && charset != ct_state.GR_charset) ||
- (charset->side == XlcGL && charset != ct_state.GL_charset) ) {
-
- ct_len -= ctdptr[codeset->cs_num]->ct_encoding_len;
-
- if (ct_len < 0) {
- unconv_num++;
- break;
- }
-
- if (ctptr) {
- strcpy(ctptr, ctdptr[codeset->cs_num]->ct_encoding);
- ctptr += ctdptr[codeset->cs_num]->ct_encoding_len;
- }
- }
-
- if (charset->side == XlcGR) {
- ct_state.GR_charset = charset;
- ct_state.GL_charset = NULL;
- } else if (charset->side == XlcGL) {
- ct_state.GL_charset = charset;
- ct_state.GR_charset = NULL;
- }
-
- do {
-
- length--;
- tmp = wch>>(wchar_t)( (Ulong)length * wc_shift);
-
- if (kana) {
- if (BADCHAR(charset->min_ch, (char)tmp)) {
- unconv_num++;
- break;
- }
- *ctptr++ = (char)BIT8ON(tmp);
- }
-
- else if (byte1 && (kanji || userdef))
- t1 = tmp;
-
- else if (byte2 && (kanji || userdef)) {
- if (BADCHAR(charset->min_ch, (char)t1) ||
- BADCHAR(charset->min_ch, (char)tmp)) {
- unconv_num++;
- break;
- }
- if (charset->side == XlcGR) {
- *ctptr++ = (char)BIT8ON(t1);
- *ctptr++ = (char)BIT8ON(tmp);
- } else {
- *ctptr++ = (char)BIT8OFF(t1);
- *ctptr++ = (char)BIT8OFF(tmp);
- }
- }
-
- else {
- if (BADCHAR(charset->min_ch, (char)tmp)) {
- unconv_num++;
- break;
- }
- *ctptr++ = (char)tmp;
- }
-
-
- } while (length);
-
- } /* end for */
-
- *to = (XPointer)ctptr;
-
- if ((num_conv = (int)(ctptr - ct_base)) > 0)
- (*to_left) -= num_conv;
-
- return unconv_num;
-}
-#undef byte1
-#undef byte2
-#undef kana
-#undef kanji
-#undef userdef
-
-
-#define byte1 (ctdp->length == clen)
-#define kana (ctdp == ctdptr[Kana] && isrightside(*inbufptr))
-/* #define kanji (ctdp == ctdptr[Kanji]) */
-#define kanji (strstr(ctdp->name, "JISX0208"))
-#define userdef (ctdp == ctdptr[Userdef])
-
-static int
-euc_ctstombs(
- XlcConv conv,
- XPointer *from,
- int *from_left,
- XPointer *to,
- int *to_left,
- XPointer *args,
- int num_args)
-{
- char *inbufptr = *from;
- XPointer outbufptr = *to;
- const char *inbuf_base;
- XPointer outbuf_base = outbufptr;
- int clen, length;
- int unconv_num = 0;
- unsigned int ct_seglen = 0;
- Uchar ct_type = 0;
- CTData ctdp = &ctdata[0]; /* default */
- CTData GL_ctdp = ctdp; /* GL ctdp save */
- CTData GR_ctdp = ctdp; /* GR ctdp save */
- Bool save_outbuf = True;
- /* If outbufptr is NULL, doen't save output, but just counts
- a length to hold the output */
- if (outbufptr == NULL) save_outbuf = False;
-
- for (length = ctdata[Ascii].length; *from_left > 0; (*from_left) -= length)
- {
- ct_type = CT_STD;
- /* change GL/GR charset */
- if(ctdp->side == XlcGR && isleftside(*inbufptr)){
- /* select GL side */
- ctdp = GL_ctdp;
- length = ctdp->length;
- ct_type = ctdp->ct_type;
- }else if(ctdp->side == XlcGL && isrightside(*inbufptr)){
- /* select GR side */
- ctdp = GR_ctdp;
- length = ctdp->length;
- ct_type = ctdp->ct_type;
- }
- if (*inbufptr == '\033' || *inbufptr == (char)'\233') {
-
- for (ctdp = ctdata; ctdp <= ctd_endp ; ctdp++) {
-
- if(!strncmp(inbufptr, ctdp->ct_encoding, ctdp->ct_encoding_len))
- {
- inbufptr += ctdp->ct_encoding_len;
- (*from_left) -= ctdp->ct_encoding_len;
- if (ctdp->length) {
- length = ctdp->length;
- if( *from_left < length ) {
- *to = (XPointer)outbufptr;
- *to_left -= outbufptr - outbuf_base;
- return( unconv_num + *from_left );
- }
- }
- ct_type = ctdp->ct_type;
- if(ctdp->side == XlcGL){
- GL_ctdp = ctdp; /* save GL ctdp */
- }else{
- GR_ctdp = ctdp; /* save GR ctdp */
- }
- break;
- }
- }
- if (ctdp > ctd_endp) /* failed to match CT sequence */
- unconv_num++;
- }
-
-/* The following code insures that non-standard encodings, direction, extension,
- * and version strings are ignored; subject to change in future.
- */
- switch (ct_type) {
- case CT_STD:
- break;
- case CT_EXT2:
- inbufptr++;
- (*from_left)--;
- case CT_NSTD:
- ct_seglen = (BIT8OFF(*inbufptr) << 7) + BIT8OFF(*(inbufptr+1)) + 2;
- inbufptr += ct_seglen;
- (*from_left) -= ct_seglen;
- continue;
- case CT_EXT0:
- inbuf_base = inbufptr;
- SKIP_I(inbufptr);
- inbufptr++;
- ct_seglen = (unsigned)(inbufptr - inbuf_base);
- *(from_left) -= ct_seglen;
- continue;
- case CT_EXT1:
- inbuf_base = inbufptr;
- SKIP_P(inbufptr);
- SKIP_I(inbufptr);
- inbufptr++;
- ct_seglen = (unsigned)(inbufptr - inbuf_base);
- *(from_left) -= ct_seglen;
- continue;
- case CT_DIR:
- continue;
- case CT_VER:
- inbufptr += 2;
- *(from_left) -= 2;
- continue;
- }
-
- clen = length;
- do {
-
- if (byte1) {
- if (kanji) {
- /* FIXME: assignment of read-only location */
- *inbufptr = BIT8ON(*inbufptr);
- *(inbufptr+1) = BIT8ON(*(inbufptr+1));
- }
- else if (kana || userdef) {
- if (save_outbuf == True) {
- *outbufptr++ = ctdp->sshift;
- }
- (*to_left)--;
- }
- }
- if (save_outbuf == True) {
- *outbufptr++ = *inbufptr;
- }
- (*to_left)--;
- inbufptr++;
-
- if (*to_left == 0 && *from_left != length) {
- *to = (XPointer)outbufptr;
- unconv_num = *from_left;
- return unconv_num;
- }
- } while (--clen);
- }
-
- *to = outbufptr;
-
- return unconv_num;
-
-}
-#undef byte1
-#undef kana
-#undef kanji
-#undef userdef
-
-
-static int
-euc_mbstocts(
- XlcConv conv,
- XPointer *from,
- int *from_left,
- XPointer *to,
- int *to_left,
- XPointer *args,
- int num_args)
-{
- int ct_len = *to_left;
- int cs_num;
- int clen, length = 0;
- int unconv_num = 0;
- int num_conv;
- const char *inbufptr = *from;
- char *ctptr = *to;
- XPointer ct_base = ctptr;
-
- StateRec ct_state;
- CTData charset;
- XLCd lcd = (XLCd) conv->state;
- int codeset_num = XLC_GENERIC(lcd, codeset_num);
-
-/* Initial State: */
- ct_state.GL_charset = NULL;
- ct_state.GR_charset = NULL;
-
- if (*from_left > *to_left)
- *from_left = *to_left;
-
- for (;*from_left > 0; (*from_left) -= length) {
-
- if (isleftside(*inbufptr)) { /* 7-bit (CS0) */
- if (ASCII_CODESET >= codeset_num) {
- unconv_num++;
- (*from_left)--;
- continue;
- }
- cs_num = Ascii;
- charset = ctdptr[Ascii];
- }
- else if ((Uchar)*inbufptr == SS2) { /* Kana */
- if (KANA_CODESET >= codeset_num) {
- unconv_num++;
- (*from_left)--;
- continue;
- }
- cs_num = Kana;
- charset = ctdptr[Kana];
- inbufptr++;
- (*from_left)--;
- }
- else if ((Uchar)*inbufptr == SS3) { /* Userdef */
- if (USERDEF_CODESET >= codeset_num) {
- unconv_num++;
- (*from_left)--;
- continue;
- }
- cs_num = Userdef;
- charset = ctdptr[Userdef];
- inbufptr++;
- (*from_left)--;
- }
- else {
- if (KANJI_CODESET >= codeset_num) {
- unconv_num++;
- (*from_left)--;
- continue;
- }
- cs_num = Kanji;
- charset = ctdptr[Kanji];
- }
-
- length = charset->length;
-
- if (BADCHAR(charset->min_ch, *inbufptr))
- continue;
-
- if ( (charset->side == XlcGR && charset != ct_state.GR_charset) ||
- (charset->side == XlcGL && charset != ct_state.GL_charset) ) {
-
- ct_len -= ctdptr[cs_num]->ct_encoding_len;
- if (ct_len < 0) {
- unconv_num++;
- break;
- }
-
- if (ctptr) {
- strcpy(ctptr, ctdptr[cs_num]->ct_encoding);
- ctptr += ctdptr[cs_num]->ct_encoding_len;
- }
- }
-
- if (charset->side == XlcGR) {
- ct_state.GR_charset = charset;
- ct_state.GL_charset = NULL;
- } else if (charset->side == XlcGL) {
- ct_state.GL_charset = charset;
- ct_state.GR_charset = NULL;
- }
-
- clen = length;
-
- do {
- *ctptr++ = charset == ct_state.GR_charset ?
- BIT8ON(*inbufptr++) : BIT8OFF(*inbufptr++);
- } while (--clen);
- }
-
- *to = (XPointer)ctptr;
-
- if ((num_conv = (int)(ctptr - ct_base)) > 0)
- (*to_left) -= num_conv;
- return unconv_num;
-
-}
-
-
-static void
-close_converter(
- XlcConv conv)
-{
- Xfree((char *) conv);
-}
-
-enum { MBSTOCS, WCSTOCS, MBTOCS, CSTOMBS, CSTOWCS, MBSTOWCS, WCSTOMBS,
- CTSTOWCS, CTSTOMBS, WCSTOCTS, MBSTOCTS };
-
-static XlcConvMethodsRec conv_methods[] = {
- {close_converter, euc_mbstocs, NULL },
- {close_converter, euc_wcstocs, NULL },
- {close_converter, euc_mbtocs, NULL },
- {close_converter, euc_cstombs, NULL },
- {close_converter, euc_cstowcs, NULL },
- {close_converter, euc_mbstowcs, NULL },
- {close_converter, euc_wcstombs, NULL },
- {close_converter, euc_ctstowcs, NULL },
- {close_converter, euc_ctstombs, NULL },
- {close_converter, euc_wcstocts, NULL },
- {close_converter, euc_mbstocts, NULL },
-};
-
-
-static XlcConv
-open_mbstocs(
- XLCd from_lcd,
- const char *from_type,
- XLCd to_lcd,
- const char *to_type)
-{
- return create_conv(from_lcd, &conv_methods[MBSTOCS]);
-}
-
-static XlcConv
-open_wcstocs(
- XLCd from_lcd,
- const char *from_type,
- XLCd to_lcd,
- const char *to_type)
-{
- return create_conv(from_lcd, &conv_methods[WCSTOCS]);
-}
-
-static XlcConv
-open_mbtocs(
- XLCd from_lcd,
- const char *from_type,
- XLCd to_lcd,
- const char *to_type)
-{
- return create_conv(from_lcd, &conv_methods[MBTOCS]);
-}
-
-static XlcConv
-open_cstombs(
- XLCd from_lcd,
- const char *from_type,
- XLCd to_lcd,
- const char *to_type)
-{
- return create_conv(from_lcd, &conv_methods[CSTOMBS]);
-}
-
-static XlcConv
-open_cstowcs(
- XLCd from_lcd,
- const char *from_type,
- XLCd to_lcd,
- const char *to_type)
-{
- return create_conv(from_lcd, &conv_methods[CSTOWCS]);
-}
-
-static XlcConv
-open_mbstowcs(
- XLCd from_lcd,
- const char *from_type,
- XLCd to_lcd,
- const char *to_type)
-{
- return create_conv(from_lcd, &conv_methods[MBSTOWCS]);
-}
-
-static XlcConv
-open_wcstombs(
- XLCd from_lcd,
- const char *from_type,
- XLCd to_lcd,
- const char *to_type)
-{
- return create_conv(from_lcd, &conv_methods[WCSTOMBS]);
-}
-
-static XlcConv
-open_ctstowcs(
- XLCd from_lcd,
- const char *from_type,
- XLCd to_lcd,
- const char *to_type)
-{
- return create_conv(from_lcd, &conv_methods[CTSTOWCS]);
-}
-
-static XlcConv
-open_ctstombs(
- XLCd from_lcd,
- const char *from_type,
- XLCd to_lcd,
- const char *to_type)
-{
- return create_conv(from_lcd, &conv_methods[CTSTOMBS]);
-}
-
-static XlcConv
-open_wcstocts(
- XLCd from_lcd,
- const char *from_type,
- XLCd to_lcd,
- const char *to_type)
-{
- return create_conv(from_lcd, &conv_methods[WCSTOCTS]);
-}
-
-static XlcConv
-open_mbstocts(
- XLCd from_lcd,
- const char *from_type,
- XLCd to_lcd,
- const char *to_type)
-{
- return create_conv(from_lcd, &conv_methods[MBSTOCTS]);
-}
-
-XLCd
-_XlcEucLoader(
- const char *name)
-{
- XLCd lcd;
-
- lcd = _XlcCreateLC(name, _XlcGenericMethods);
- if (lcd == NULL)
- return lcd;
-
- if (!XLC_PUBLIC_PART(lcd)->codeset ||
- (_XlcNCompareISOLatin1(XLC_PUBLIC_PART(lcd)->codeset, "euc", 3))) {
- _XlcDestroyLC(lcd);
- return (XLCd) NULL;
- }
-
- initCTptr(lcd);
-
- _XlcSetConverter(lcd, XlcNMultiByte, lcd, XlcNCharSet, open_mbstocs);
- _XlcSetConverter(lcd, XlcNWideChar, lcd, XlcNCharSet, open_wcstocs);
- _XlcSetConverter(lcd, XlcNCharSet, lcd, XlcNMultiByte, open_cstombs);
- _XlcSetConverter(lcd, XlcNCharSet, lcd, XlcNWideChar, open_cstowcs);
- _XlcSetConverter(lcd, XlcNMultiByte, lcd, XlcNChar, open_mbtocs);
-
-#ifndef FORCE_INDIRECT_CONVERTER
- _XlcSetConverter(lcd, XlcNCompoundText, lcd, XlcNMultiByte, open_ctstombs);
- _XlcSetConverter(lcd, XlcNCompoundText, lcd, XlcNWideChar, open_ctstowcs);
- _XlcSetConverter(lcd, XlcNMultiByte, lcd, XlcNCompoundText, open_mbstocts);
- _XlcSetConverter(lcd, XlcNMultiByte, lcd, XlcNWideChar, open_mbstowcs);
- _XlcSetConverter(lcd, XlcNWideChar, lcd, XlcNCompoundText, open_wcstocts);
- _XlcSetConverter(lcd, XlcNWideChar, lcd, XlcNMultiByte, open_wcstombs);
-#endif
-
- _XlcAddUtf8Converters(lcd);
-
- return lcd;
-}
-
-#else
-typedef int dummy;
-#endif /* X_LOCALE */
+/******************************************************************
+
+ Copyright 1992, 1993 by FUJITSU LIMITED
+ Copyright 1993 by Fujitsu Open Systems Solutions, Inc.
+
+Permission to use, copy, modify, distribute and sell this software
+and its documentation for any purpose is hereby granted without fee,
+provided that the above copyright notice appear in all copies and
+that both that copyright notice and this permission notice appear
+in supporting documentation, and that the name of FUJITSU LIMITED and
+Fujitsu Open Systems Solutions, Inc. not be used in advertising or
+publicity pertaining to distribution of the software without specific,
+written prior permission.
+FUJITSU LIMITED and Fujitsu Open Systems Solutions, Inc. makes no
+representations about the suitability of this software for any purpose.
+It is provided "as is" without express or implied warranty.
+
+FUJITSU LIMITED AND FUJITSU OPEN SYSTEMS SOLUTIONS, INC. DISCLAIMS ALL
+WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES
+OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL FUJITSU OPEN SYSTEMS
+SOLUTIONS, INC. AND FUJITSU LIMITED BE LIABLE FOR ANY SPECIAL, INDIRECT
+OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF
+USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
+TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
+OF THIS SOFTWARE.
+
+ Authors: Shigeru Yamada (yamada@ossi.com)
+ Jeffrey Bloomfield (jeffb@ossi.com)
+ Yoshiyuki Segawa (segawa@ossi.com)
+
+*****************************************************************/
+
+/*
+ * An EUC locale.
+ * Supports: all locales with codeset eucJP, eucKR, eucCN, eucTW.
+ * How: Provides converters for euc*.
+ * Platforms: Only those defining X_LOCALE (only Lynx, Linux-libc5, OS/2).
+ */
+
+#ifdef X_LOCALE
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+#include "XlcGeneric.h"
+
+#include <ctype.h>
+#ifdef WIN32
+#define isascii __isascii
+#endif
+
+#define CS0 codesets[0] /* Codeset 0 - 7-bit ASCII */
+#define CS1 codesets[1] /* Codeset 1 - Kanji */
+#define CS2 codesets[2] /* Codeset 2 - Half-Kana */
+#define CS3 codesets[3] /* Codeset 3 - User defined */
+
+#define SS2 0x8e /* Single-shift char: CS2 */
+#define SS3 0x8f /* Single-shift char: CS3 */
+
+#define ASCII_CODESET 0
+#define KANJI_CODESET 1
+#define KANA_CODESET 2
+#define USERDEF_CODESET 3
+#define MAX_CODESETS
+
+#define GR 0x80 /* begins right-side (non-ascii) region */
+#define GL 0x7f /* ends left-side (ascii) region */
+
+#define isleftside(c) (((c) & GR) ? 0 : 1)
+#define isrightside(c) (!isleftside(c))
+
+#define BIT8OFF(c) ((c) & GL)
+#define BIT8ON(c) ((c) | GR)
+
+typedef unsigned char Uchar;
+typedef unsigned long Ulong;
+typedef unsigned int Uint;
+
+static CodeSet GetCodeSetFromCharSet (XLCd lcd, XlcCharSet charset);
+static CodeSet wc_codeset (XLCd lcd, wchar_t wch);
+
+#define BADCHAR(min_ch, c) (BIT8OFF(c) < (char)min_ch && BIT8OFF(c) != 0x0 && \
+ BIT8OFF(c) != '\t' && BIT8OFF(c) != '\n' && \
+ BIT8OFF(c) != 0x1b)
+
+/*
+ * Notes:
+ * 1. Defining FORCE_INDIRECT_CONVERTER (see _XlcEucLoader())
+ * forces indirect (charset) conversions (e.g. wcstocs()<->cstombs()).
+ * 2. Using direct converters (e.g. mbstowcs()) decreases conversion
+ * times by 20-40% (depends on specific converter used).
+ */
+
+static int
+euc_mbstowcs(
+ XlcConv conv,
+ XPointer *from,
+ int *from_left,
+ XPointer *to,
+ int *to_left,
+ XPointer *args,
+ int num_args)
+{
+ XLCd lcd = (XLCd)conv->state;
+
+ Uchar ch;
+ int chr_len = 0;
+ int sshift = False;
+ int shift_mult = 0;
+ Uint chrcode;
+
+ Uint wc_encode = 0;
+ Uint wc_tmp = 0;
+
+ int cs0flg = False;
+ int cs1flg = False;
+ int length = 0;
+ int unconv_num = 0;
+
+ Bool new_char;
+
+ const char *inbufptr = *from;
+ wchar_t *outbufptr = (wchar_t *) *to;
+
+ CodeSet *codesets = XLC_GENERIC(lcd, codeset_list);
+ int codeset_num = XLC_GENERIC(lcd, codeset_num);
+ Ulong wc_shift = XLC_GENERIC(lcd, wc_shift_bits);
+
+ for (new_char = True; *from_left > 0 && *to_left > 0;) {
+
+ ch = *inbufptr++;
+
+ if (isleftside(ch)) { /* CS0 */
+ if (ASCII_CODESET >= codeset_num) {
+ unconv_num++;
+ (*from_left)--;
+ continue;
+ }
+ if( cs0flg == True) {
+ new_char = True;
+ cs0flg = False;
+ }
+ length = CS0->length;
+ *outbufptr++ = (wchar_t)ch;
+ (*from_left)--;
+ (*to_left)--;
+ continue;
+ }
+ else if (ch == SS2) { /* CS2 */
+ if (KANA_CODESET >= codeset_num) {
+ unconv_num++;
+ (*from_left)--;
+ continue;
+ }
+ if (sshift == True || cs1flg == True) {
+ cs1flg = False;
+ unconv_num++;
+ continue;
+ }
+ length = CS2->length;
+ wc_encode = CS2->wc_encoding;
+ chrcode = 0;
+ sshift = True;
+ cs0flg = True;
+ (*from_left)--;
+ continue;
+ }
+ else if (ch == SS3) { /* CS3 */
+ if (USERDEF_CODESET >= codeset_num) {
+ unconv_num++;
+ (*from_left)--;
+ continue;
+ }
+ if (sshift == True || cs1flg == True) {
+ cs1flg = False;
+ unconv_num++;
+ continue;
+ }
+ length = CS3->length;
+ if (*from_left < 1 )
+ unconv_num++;
+ wc_encode = CS3->wc_encoding;
+ chrcode = 0;
+ sshift = True;
+ cs0flg = True;
+ (*from_left)--;
+ continue;
+
+ } else { /* CS1 */
+ if (KANJI_CODESET >= codeset_num) {
+ unconv_num++;
+ (*from_left)--;
+ continue;
+ }
+ if (sshift == False) {
+ length = CS1->length;
+ if (*from_left < 1)
+ unconv_num++;
+ wc_encode = CS1->wc_encoding;
+ }
+ chrcode = BIT8OFF(ch);
+ cs0flg = True;
+ cs1flg = True;
+ (*from_left)--;
+ }
+
+ if (new_char) { /* begin new character */
+ chr_len = length;
+ shift_mult = length - 1;
+ new_char = False;
+ }
+
+ chrcode <<= (wc_shift * shift_mult);
+ shift_mult--;
+ wc_tmp |= chrcode;
+
+ if (--chr_len == 0) {
+ wc_tmp |= wc_encode;
+ *outbufptr++ = wc_tmp;
+ (*to_left)--;
+
+ new_char = True;
+ sshift = False;
+ cs0flg = False;
+ cs1flg = False;
+ wc_tmp = (Uint)0;
+ }
+
+ } /* end for */
+
+ *to = (XPointer)outbufptr;
+
+ if (cs0flg == True || cs1flg == True) /* error check on last char */
+ unconv_num++;
+
+ return unconv_num;
+}
+
+
+static int
+euc_wcstombs(
+ XlcConv conv,
+ XPointer *from,
+ int *from_left,
+ XPointer *to,
+ int *to_left,
+ XPointer *args,
+ int num_args)
+{
+ const wchar_t *inbufptr = (const wchar_t *) *from;
+ XPointer outbufptr = *to;
+ wchar_t wch;
+ int length;
+ Uchar tmp;
+ int unconv_num = 0;
+
+ XLCd lcd = (XLCd)conv->state;
+ CodeSet codeset;
+ Ulong wc_shift = XLC_GENERIC(lcd, wc_shift_bits);
+
+ for (; *from_left > 0 && *to_left > 0; (*from_left)-- ) {
+
+ wch = *inbufptr++;
+
+ if (!(codeset = wc_codeset(lcd, wch))) {
+ unconv_num++;
+ (*from_left)--;
+ continue;
+ }
+
+ length = codeset->length;
+ wch ^= (wchar_t)codeset->wc_encoding;
+
+ if (codeset->parse_info) { /* put out SS2 or SS3 */
+ if (*to_left < length + 1) {
+ unconv_num++;
+ break;
+ }
+ *outbufptr++ = *codeset->parse_info->encoding;
+ (*to_left)--;
+ } else {
+ if (*to_left < length) {
+ unconv_num++;
+ break;
+ }
+ }
+
+ do {
+ length--;
+ tmp = (wch>>(wchar_t)(length * wc_shift));
+
+ if (codeset->side == XlcGR)
+ tmp = BIT8ON(tmp);
+
+ *outbufptr++ = (Uchar)tmp;
+ (*to_left)--;
+ } while (length);
+ }
+
+ *to = (XPointer)outbufptr;
+
+ return unconv_num;
+}
+
+
+static int
+euc_mbtocs(
+ XlcConv conv,
+ XPointer *from,
+ int *from_left,
+ XPointer *to,
+ int *to_left,
+ XPointer *args,
+ int num_args)
+{
+ XLCd lcd = (XLCd)conv->state;
+ XlcCharSet charset;
+ CodeSet *codesets = XLC_GENERIC(lcd, codeset_list);
+ int codeset_num = XLC_GENERIC(lcd, codeset_num);
+ int length;
+ int unconv_num = 0;
+ int min_ch = 0;
+ const char *src = *from;
+ char *dst = *to;
+
+ if (isleftside(*src)) { /* 7-bit (CS0) */
+ if (ASCII_CODESET >= codeset_num)
+ return -1;
+ charset = *CS0->charset_list;
+ }
+ else if ((Uchar)*src == SS2) { /* half-kana (CS2) */
+ if (KANA_CODESET >= codeset_num)
+ return -1;
+ charset = *CS2->charset_list;
+ src++;
+ (*from_left)--;
+ }
+ else if ((Uchar)*src == SS3) { /* user-def */
+ if (USERDEF_CODESET >= codeset_num)
+ return -1;
+ charset = *CS3->charset_list;
+ src++;
+ (*from_left)--;
+ }
+ else { /* Kanji (CS1) */
+ if (KANJI_CODESET >= codeset_num)
+ return -1;
+ charset = *CS1->charset_list;
+ }
+
+ if(*from_left < charset->char_size || *to_left < charset->char_size)
+ return -1;
+
+ min_ch = 0x20;
+ if (charset->set_size == 94)
+ if (charset->char_size > 1 || charset->side == XlcGR)
+ min_ch = 0x21;
+
+ length = charset->char_size;
+ do {
+ if(BADCHAR(min_ch, *src)) {
+ unconv_num++;
+ src++;
+ break;
+ }
+ switch (charset->side) {
+ case XlcGL:
+ *dst++ = BIT8OFF(*src++);
+ break;
+ case XlcGR:
+ *dst++ = BIT8ON(*src++);
+ break;
+ default:
+ *dst++ = *src++;
+ break;
+ }
+ } while (--length);
+
+ *to = dst;
+ *from = (XPointer) src;
+ *from_left -= charset->char_size;
+ *to_left -= charset->char_size - length;
+
+ if (num_args > 0)
+ *((XlcCharSet *) args[0]) = charset;
+
+ return unconv_num;
+}
+
+
+static int
+euc_mbstocs(
+ XlcConv conv,
+ XPointer *from,
+ int *from_left,
+ XPointer *to,
+ int *to_left,
+ XPointer *args,
+ int num_args)
+{
+ const char *tmp_from;
+ char *tmp_to;
+ int tmp_from_left, tmp_to_left;
+ XlcCharSet charset, tmp_charset;
+ XPointer tmp_args[1];
+ int unconv_num = 0, ret;
+
+/* Determine the charset of the segment and convert one characater: */
+
+ tmp_args[0] = (XPointer) &charset; /* charset from euc_mbtocs() */
+ while
+ ((ret = euc_mbtocs(conv, from, from_left, to, to_left, tmp_args, 1)) > 0)
+ unconv_num += ret;
+ if ( ret < 0 )
+ return ret;
+
+ tmp_from = *from;
+ tmp_from_left = *from_left;
+ tmp_to_left = *to_left;
+ tmp_to = *to;
+
+/* Convert remainder of the segment: */
+
+ tmp_args[0] = (XPointer) &tmp_charset;
+ while( (ret = euc_mbtocs(conv, (XPointer *) &tmp_from, &tmp_from_left,
+ (XPointer *) &tmp_to, &tmp_to_left, tmp_args, 1)) >= 0 ) {
+
+ if (ret > 0) {
+ unconv_num += ret;
+ continue;
+ }
+
+ if (tmp_charset != charset) /* quit on end of segment */
+ break;
+
+ *from = (XPointer) tmp_from;
+ *from_left = tmp_from_left;
+ *to = (XPointer) tmp_to;
+ *to_left = tmp_to_left;
+ }
+
+ if (num_args > 0)
+ *((XlcCharSet *) args[0]) = charset;
+
+ return unconv_num;
+}
+
+
+static int
+euc_wcstocs(
+ XlcConv conv,
+ XPointer *from,
+ int *from_left,
+ XPointer *to,
+ int *to_left,
+ XPointer *args,
+ int num_args)
+{
+ XLCd lcd = (XLCd)conv->state;
+ const wchar_t *wcptr = (const wchar_t *) *from;
+ char *bufptr = (char *) *to;
+ wchar_t wch;
+ char *tmpptr;
+ int length;
+ CodeSet codeset;
+ Ulong wc_encoding;
+ int wcstr_len = *from_left, buf_len = *to_left;
+
+ if (!(codeset = wc_codeset(lcd, *wcptr)))
+ return -1;
+
+ wc_encoding = codeset->wc_encoding;
+
+ if (wcstr_len < buf_len / codeset->length)
+ buf_len = wcstr_len * codeset->length;
+
+ for ( ; wcstr_len > 0 && buf_len > 0; wcptr++, wcstr_len--) {
+ wch = *wcptr;
+
+ if ((wch & XLC_GENERIC(lcd, wc_encode_mask)) != wc_encoding)
+ break;
+
+ length = codeset->length;
+
+ buf_len -= length;
+ bufptr += length;
+ tmpptr = bufptr - 1;
+
+ while (length--) {
+ *tmpptr-- = codeset->length == 1 && codeset->side == XlcGR ?
+ BIT8ON(wch) : BIT8OFF(wch);
+ wch >>= (wchar_t)XLC_GENERIC(lcd, wc_shift_bits);
+ }
+ }
+
+ if (num_args > 0)
+ *((XlcCharSet *) args[0]) = *codeset->charset_list;
+
+ *from_left -= wcptr - (wchar_t *) *from;
+ *from = (XPointer) wcptr;
+
+ *to_left -= bufptr - *to;
+ *to = bufptr;
+
+ return 0;
+}
+
+
+static int
+euc_cstombs(
+ XlcConv conv,
+ XPointer *from,
+ int *from_left,
+ XPointer *to,
+ int *to_left,
+ XPointer *args,
+ int num_args)
+{
+ XLCd lcd = (XLCd)conv->state;
+ const char *csptr = *from;
+ char *bufptr = *to;
+ int csstr_len = *from_left;
+ int buf_len = *to_left;
+ int length;
+ CodeSet codeset;
+ int cvt_length;
+
+ if (num_args < 1)
+ return -1;
+
+ if (!(codeset = GetCodeSetFromCharSet(lcd, (XlcCharSet) args[0])))
+ return -1;
+
+ cvt_length = 0;
+ csstr_len /= codeset->length;
+ buf_len /= codeset->length;
+
+ if (codeset->parse_info)
+ csstr_len *= 2;
+
+ if (csstr_len < buf_len)
+ buf_len = csstr_len;
+
+ cvt_length += buf_len * codeset->length;
+
+ if (bufptr) {
+ while (buf_len--) {
+ if (codeset->parse_info) /* put out SS2 or SS3 */
+ *bufptr++ = *codeset->parse_info->encoding;
+
+ length = codeset->length;
+ while (length--)
+ *bufptr++ = codeset->side == XlcGR ?
+ BIT8ON(*csptr++) : BIT8OFF(*csptr++);
+ }
+ }
+
+ *from_left -= csptr - *from;
+ *from = (XPointer) csptr;
+ if (bufptr)
+ *to += cvt_length;
+ *to_left -= cvt_length;
+
+ return 0;
+}
+
+
+static int
+euc_cstowcs(
+ XlcConv conv,
+ XPointer *from,
+ int *from_left,
+ XPointer *to,
+ int *to_left,
+ XPointer *args,
+ int num_args)
+{
+ XLCd lcd = (XLCd)conv->state;
+ const char *csptr = *from;
+ wchar_t *bufptr = (wchar_t *) *to;
+ wchar_t *toptr = (wchar_t *) *to;
+ int csstr_len = *from_left;
+ int buf_len = *to_left;
+ wchar_t wch;
+ int length;
+ Ulong wc_shift_bits = XLC_GENERIC(lcd, wc_shift_bits);
+ CodeSet codeset;
+
+ if (num_args < 1)
+ return -1;
+
+ if (!(codeset = GetCodeSetFromCharSet(lcd, (XlcCharSet) args[0])))
+ return -1;
+
+ csstr_len /= codeset->length;
+ if (csstr_len < buf_len)
+ buf_len = csstr_len;
+ *to_left -= buf_len;
+
+ if (bufptr) {
+
+ toptr += buf_len;
+ *to = (XPointer) toptr;
+
+ while (buf_len--) {
+
+ wch = (wchar_t) BIT8OFF(*csptr);
+ csptr++;
+
+ length = codeset->length - 1;
+ while (length--) {
+ wch = (wch << wc_shift_bits) | BIT8OFF(*csptr);
+ csptr++;
+ }
+ *bufptr++ = wch | codeset->wc_encoding;
+ }
+ }
+ *from_left -= csptr - *from;
+ *from = (XPointer) csptr;
+
+ return 0;
+}
+
+
+static CodeSet
+wc_codeset(
+ XLCd lcd,
+ wchar_t wch)
+{
+ CodeSet *codesets = XLC_GENERIC(lcd, codeset_list);
+ int end = XLC_GENERIC(lcd, codeset_num);
+ Ulong widech = (Ulong)(wch & XLC_GENERIC(lcd, wc_encode_mask));
+
+ for (; --end >= 0; codesets++)
+ if ( widech == (*codesets)->wc_encoding )
+ return *codesets;
+
+ return NULL;
+}
+
+
+static CodeSet
+GetCodeSetFromCharSet(
+ XLCd lcd,
+ XlcCharSet charset)
+{
+ CodeSet *codeset = XLC_GENERIC(lcd, codeset_list);
+ XlcCharSet *charset_list;
+ int codeset_num, num_charsets;
+
+ codeset_num = XLC_GENERIC(lcd, codeset_num);
+
+ for ( ; codeset_num-- > 0; codeset++) {
+ num_charsets = (*codeset)->num_charsets;
+ charset_list = (*codeset)->charset_list;
+
+ for ( ; num_charsets-- > 0; charset_list++)
+ if (*charset_list == charset)
+ return *codeset;
+ }
+
+ return (CodeSet) NULL;
+}
+
+
+static XlcConv
+create_conv(
+ XLCd lcd,
+ XlcConvMethods methods)
+{
+ XlcConv conv;
+
+ conv = (XlcConv) Xmalloc(sizeof(XlcConvRec));
+ if (conv == NULL)
+ return (XlcConv) NULL;
+
+ conv->methods = methods;
+ conv->state = (XPointer) lcd;
+ return conv;
+}
+
+
+/*
+ * Stripped down Direct CT converters for EUC
+ *
+ */
+
+typedef struct _CTDataRec {
+ int side;
+ int length;
+ char *name;
+ Ulong wc_encoding;
+ char sshift;
+ char *ct_encoding;
+ int ct_encoding_len;
+ int set_size;
+ Uchar min_ch;
+ Uchar ct_type;
+} CTDataRec, *CTData;
+
+typedef struct _StateRec {
+ CTData GL_charset;
+ CTData GR_charset;
+ CTData charset;
+} StateRec, *State;
+
+#define CT_STD 0
+#define CT_NSTD 1
+#define CT_DIR 2
+#define CT_EXT0 3
+#define CT_EXT1 4
+#define CT_EXT2 5
+#define CT_VER 6
+
+static CTDataRec ctdata[] =
+{
+ { XlcGL, 1, "ISO8859-1:GL", 0, 0, "\033(B" , 3, 0, 0, CT_STD },
+ { XlcGR, 1, "ISO8859-1:GR", 0, 0, "\033-A" , 3, 0, 0, CT_STD },
+ { XlcGL, 1, "JISX0201.1976-0:GL", 0, 0, "\033(J" , 3, 0, 0, CT_STD },
+ { XlcGR, 1, "JISX0201.1976-0:GR", 0, 0, "\033)I" , 3, 0, 0, CT_STD },
+ { XlcGL, 2, "JISX0208.1983-0:GL", 0, 0, "\033$(B" , 4, 0, 0, CT_STD },
+ { XlcGR, 2, "JISX0208.1983-0:GR", 0, 0, "\033$)B" , 4, 0, 0, CT_STD },
+ { XlcGL, 2, "JISX0212.1990-0:GL", 0, 0, "\033$(D" , 4, 0, 0, CT_STD },
+ { XlcGR, 2, "JISX0212.1990-0:GR", 0, 0, "\033$)D" , 4, 0, 0, CT_STD },
+ { XlcUnknown, 0, "Ignore-Ext-Status?", 0, 0, "\033#" , 2, 0, 0, CT_VER },
+ { XlcUnknown, 0, "NonStd-?-OctetChar", 0, 0, "\033%/0" , 4, 0, 0, CT_NSTD },
+ { XlcUnknown, 1, "NonStd-1-OctetChar", 0, 0, "\033%/1" , 4, 0, 0, CT_NSTD },
+ { XlcUnknown, 2, "NonStd-2-OctetChar", 0, 0, "\033%/2" , 4, 0, 0, CT_NSTD },
+ { XlcUnknown, 3, "NonStd-3-OctetChar", 0, 0, "\033%/3" , 4, 0, 0, CT_NSTD },
+ { XlcUnknown, 4, "NonStd-4-OctetChar", 0, 0, "\033%/4" , 4, 0, 0, CT_NSTD },
+ { XlcUnknown, 0, "Extension-2" , 0, 0, "\033%/" , 3, 0, 0, CT_EXT2 },
+ { XlcUnknown, 0, "Extension-0" , 0, 0, "\033" , 1, 0, 0, CT_EXT0 },
+ { XlcUnknown, 0, "Begin-L-to-R-Text", 0, 0, "\2331]" , 3, 0, 0, CT_DIR },
+ { XlcUnknown, 0, "Begin-R-to-L-Text", 0, 0, "\2332]" , 3, 0, 0, CT_DIR },
+ { XlcUnknown, 0, "End-Of-String", 0, 0, "\233]" , 2, 0, 0, CT_DIR },
+ { XlcUnknown, 0, "Extension-1" , 0, 0, "\233" , 1, 0, 0, CT_EXT1 },
+};
+
+/* Note on above table: euc_ctstombs() and euc_ctstowcs() parser depends on
+ * certain table entries occuring in decreasing string length--
+ * 1. CT_EXT2 and CT_EXT0 entries must occur after CT_NSTD entries.
+ * 2. CT_DIR and CT_EXT1 entries must occur after CT_DIR entries.
+ */
+
+static CTData ctd_endp = ctdata + ((sizeof(ctdata) / sizeof(CTDataRec))) - 1;
+static CTData ctdptr[sizeof(ctdata) / sizeof(CTDataRec)];
+
+#define Ascii 0
+#define Kanji 1
+#define Kana 2
+#define Userdef 3
+
+/*
+ * initCTptr(): Set ctdptr[] to point at ctdata[], indexed by codeset_num.
+ */
+static void
+initCTptr(
+ XLCd lcd)
+{
+ int num_codesets = XLC_GENERIC(lcd, codeset_num);
+ int num_charsets;
+ int i, j;
+ CodeSet *codesets = XLC_GENERIC(lcd, codeset_list);
+ CodeSet codeset;
+ XlcCharSet charset;
+ CTData ctdp = ctdata;
+
+ ctdptr[Ascii] = &ctdata[0]; /* failsafe */
+
+ for (i = 0; i < num_codesets; i++) {
+
+ codeset = codesets[i];
+ num_charsets = codeset->num_charsets;
+
+ for (j = 0; j < num_charsets; j++) {
+
+ charset = codeset->charset_list[j];
+
+ for (ctdp = ctdata; ctdp <= ctd_endp; ctdp++)
+
+ if (! strcmp(ctdp->name, charset->name)) {
+
+ ctdptr[codeset->cs_num] = ctdp;
+
+ ctdptr[codeset->cs_num]->wc_encoding = codeset->wc_encoding;
+
+ ctdptr[codeset->cs_num]->set_size =
+ charset->set_size;
+
+ ctdptr[codeset->cs_num]->min_ch =
+ charset->set_size == 94 &&
+ (ctdptr[codeset->cs_num]->length > 1 ||
+ ctdptr[codeset->cs_num]->side == XlcGR) ? 0x21 : 0x20;
+
+ if (codeset->parse_info) {
+ ctdptr[codeset->cs_num]->sshift =
+ *codeset->parse_info->encoding;
+ }
+
+ break;
+ }
+ }
+ }
+}
+
+
+#define SKIP_I(str) while (*(str) >= 0x20 && *(str) <= 0x2f) (str)++;
+#define SKIP_P(str) while (*(str) >= 0x30 && *(str) <= 0x3f) (str)++;
+
+static int
+euc_ctstowcs(
+ XlcConv conv,
+ XPointer *from,
+ int *from_left,
+ XPointer *to,
+ int *to_left,
+ XPointer *args,
+ int num_args)
+{
+ XLCd lcd = (XLCd)conv->state;
+ Ulong wc_shift_bits = XLC_GENERIC(lcd, wc_shift_bits);
+ const char *inbufptr = *from;
+ const char *inbuf_base;
+ wchar_t *outbufptr = (wchar_t *) *to;
+ wchar_t *outbuf_base = outbufptr;
+ int clen, length;
+ int unconv_num = 0;
+ unsigned int ct_seglen = 0;
+ Uchar ct_type = 0;
+ int shift_mult;
+ wchar_t wc_tmp;
+ wchar_t wch;
+ Ulong wc_encoding;
+ CTData ctdp = ctdata;
+ CTData GL_ctdp = ctdp; /* GL ctdp save */
+ CTData GR_ctdp = ctdp; /* GR ctdp save */
+ Bool save_outbuf = True;
+ /* If outbufptr is NULL, doen't save output, but just counts
+ a length to hold the output */
+ if (outbufptr == NULL) save_outbuf = False;
+
+ for (length = ctdata[Ascii].length; *from_left > 0; (*from_left) -= length)
+ {
+ ct_type = CT_STD;
+ /* change GL/GR charset */
+ if(ctdp->side == XlcGR && isleftside(*inbufptr)){
+ /* select GL side */
+ ctdp = GL_ctdp;
+ length = ctdp->length;
+ ct_type = ctdp->ct_type;
+ }else if(ctdp->side == XlcGL && isrightside(*inbufptr)){
+ /* select GR side */
+ ctdp = GR_ctdp;
+ length = ctdp->length;
+ ct_type = ctdp->ct_type;
+ }
+ if (*inbufptr == '\033' || *inbufptr == (char)'\233') {
+ for (ctdp = ctdata; ctdp <= ctd_endp ; ctdp++) {
+
+ if(!strncmp(inbufptr, ctdp->ct_encoding, ctdp->ct_encoding_len))
+ {
+ inbufptr += ctdp->ct_encoding_len;
+ (*from_left) -= ctdp->ct_encoding_len;
+ if (ctdp->length) {
+ length = ctdp->length;
+ if( *from_left < length ) {
+ *to = (XPointer)outbufptr;
+ *to_left -= outbufptr - outbuf_base;
+ return( unconv_num + *from_left );
+ }
+ }
+ ct_type = ctdp->ct_type;
+ if(ctdp->side == XlcGL){
+ GL_ctdp = ctdp; /* save GL ctdp */
+ }else{
+ GR_ctdp = ctdp; /* save GR ctdp */
+ }
+ break;
+ }
+ }
+ if (ctdp > ctd_endp) /* failed to match CT sequence */
+ unconv_num++;
+ }
+
+/* The following code insures that non-standard encodings, direction, extension,
+ * and version strings are ignored; subject to change in future.
+ */
+ switch (ct_type) {
+ case CT_STD:
+ break;
+ case CT_EXT2:
+ inbufptr++;
+ (*from_left)--;
+ case CT_NSTD:
+ ct_seglen = (BIT8OFF(*inbufptr) << 7) + BIT8OFF(*(inbufptr+1)) + 2;
+ inbufptr += ct_seglen;
+ (*from_left) -= ct_seglen;
+ continue;
+ case CT_EXT0:
+ inbuf_base = inbufptr;
+ SKIP_I(inbufptr);
+ inbufptr++;
+ ct_seglen = (unsigned)(inbufptr - inbuf_base);
+ *(from_left) -= ct_seglen;
+ continue;
+ case CT_EXT1:
+ inbuf_base = inbufptr;
+ SKIP_P(inbufptr);
+ SKIP_I(inbufptr);
+ inbufptr++;
+ ct_seglen = (unsigned)(inbufptr - inbuf_base);
+ *(from_left) -= ct_seglen;
+ continue;
+ case CT_DIR:
+ continue;
+ case CT_VER:
+ inbufptr += 2;
+ *(from_left) -= 2;
+ continue;
+ }
+
+ wc_encoding = (ctdp == ctdptr[Kana] && isleftside(*inbufptr)) ?
+ ctdptr[Ascii]->wc_encoding: ctdp->wc_encoding;
+
+ shift_mult = length - 1;
+ wch = (wchar_t)0;
+ clen = length;
+
+ do {
+ wc_tmp = BIT8OFF(*inbufptr++) << (wc_shift_bits * shift_mult);
+ wch |= wc_tmp;
+ shift_mult--;
+ } while (--clen);
+
+ if (save_outbuf == True)
+ *outbufptr++ = wch | wc_encoding;
+ if (--*to_left == 0 && *from_left != length) {
+ *to = (XPointer)outbufptr;
+ unconv_num = *from_left;
+ return unconv_num;
+ }
+ }
+
+ *to = (XPointer)outbufptr;
+
+ return unconv_num;
+
+}
+
+
+#define byte1 (length == codeset->length - 1)
+#define byte2 (byte1 == 0)
+#define kanji (codeset->cs_num == 1)
+#define kana (codeset->cs_num == 2)
+#define userdef (codeset->cs_num == 3)
+
+static int
+euc_wcstocts(
+ XlcConv conv,
+ XPointer *from,
+ int *from_left,
+ XPointer *to,
+ int *to_left,
+ XPointer *args,
+ int num_args)
+{
+ int ct_len = *to_left;
+ const wchar_t *inbufptr = (const wchar_t *) *from;
+ char *ctptr = *to;
+ XPointer ct_base = ctptr;
+ wchar_t wch;
+ int length;
+ int unconv_num = 0;
+ Uchar tmp;
+ Uchar t1 = 0;
+ int num_conv;
+
+ StateRec ct_state;
+ XLCd lcd = (XLCd)conv->state;
+ CTData charset;
+ CodeSet codeset;
+ Ulong wc_shift = XLC_GENERIC(lcd, wc_shift_bits);
+
+/* Initial State: */
+ ct_state.GL_charset = ctdptr[0]; /* Codeset 0 */
+ ct_state.GR_charset = NULL;
+
+ if (*from_left > *to_left)
+ *from_left = *to_left;
+
+ for (; *from_left > 0 ; (*from_left)-- ) {
+
+ wch = *inbufptr++;
+
+ if (!(codeset = wc_codeset(lcd, wch))) {
+ unconv_num++;
+ (*from_left)--;
+ continue;
+ }
+
+ charset = ctdptr[codeset->cs_num];
+
+ length = codeset->length;
+ wch ^= (wchar_t)codeset->wc_encoding;
+
+ if ( (charset->side == XlcGR && charset != ct_state.GR_charset) ||
+ (charset->side == XlcGL && charset != ct_state.GL_charset) ) {
+
+ ct_len -= ctdptr[codeset->cs_num]->ct_encoding_len;
+
+ if (ct_len < 0) {
+ unconv_num++;
+ break;
+ }
+
+ if (ctptr) {
+ strcpy(ctptr, ctdptr[codeset->cs_num]->ct_encoding);
+ ctptr += ctdptr[codeset->cs_num]->ct_encoding_len;
+ }
+ }
+
+ if (charset->side == XlcGR) {
+ ct_state.GR_charset = charset;
+ ct_state.GL_charset = NULL;
+ } else if (charset->side == XlcGL) {
+ ct_state.GL_charset = charset;
+ ct_state.GR_charset = NULL;
+ }
+
+ do {
+
+ length--;
+ tmp = wch>>(wchar_t)( (Ulong)length * wc_shift);
+
+ if (kana) {
+ if (BADCHAR(charset->min_ch, (char)tmp)) {
+ unconv_num++;
+ break;
+ }
+ *ctptr++ = (char)BIT8ON(tmp);
+ }
+
+ else if (byte1 && (kanji || userdef))
+ t1 = tmp;
+
+ else if (byte2 && (kanji || userdef)) {
+ if (BADCHAR(charset->min_ch, (char)t1) ||
+ BADCHAR(charset->min_ch, (char)tmp)) {
+ unconv_num++;
+ break;
+ }
+ if (charset->side == XlcGR) {
+ *ctptr++ = (char)BIT8ON(t1);
+ *ctptr++ = (char)BIT8ON(tmp);
+ } else {
+ *ctptr++ = (char)BIT8OFF(t1);
+ *ctptr++ = (char)BIT8OFF(tmp);
+ }
+ }
+
+ else {
+ if (BADCHAR(charset->min_ch, (char)tmp)) {
+ unconv_num++;
+ break;
+ }
+ *ctptr++ = (char)tmp;
+ }
+
+
+ } while (length);
+
+ } /* end for */
+
+ *to = (XPointer)ctptr;
+
+ if ((num_conv = (int)(ctptr - ct_base)) > 0)
+ (*to_left) -= num_conv;
+
+ return unconv_num;
+}
+#undef byte1
+#undef byte2
+#undef kana
+#undef kanji
+#undef userdef
+
+
+#define byte1 (ctdp->length == clen)
+#define kana (ctdp == ctdptr[Kana] && isrightside(*inbufptr))
+/* #define kanji (ctdp == ctdptr[Kanji]) */
+#define kanji (strstr(ctdp->name, "JISX0208"))
+#define userdef (ctdp == ctdptr[Userdef])
+
+static int
+euc_ctstombs(
+ XlcConv conv,
+ XPointer *from,
+ int *from_left,
+ XPointer *to,
+ int *to_left,
+ XPointer *args,
+ int num_args)
+{
+ char *inbufptr = *from;
+ XPointer outbufptr = *to;
+ const char *inbuf_base;
+ XPointer outbuf_base = outbufptr;
+ int clen, length;
+ int unconv_num = 0;
+ unsigned int ct_seglen = 0;
+ Uchar ct_type = 0;
+ CTData ctdp = &ctdata[0]; /* default */
+ CTData GL_ctdp = ctdp; /* GL ctdp save */
+ CTData GR_ctdp = ctdp; /* GR ctdp save */
+ Bool save_outbuf = True;
+ /* If outbufptr is NULL, doen't save output, but just counts
+ a length to hold the output */
+ if (outbufptr == NULL) save_outbuf = False;
+
+ for (length = ctdata[Ascii].length; *from_left > 0; (*from_left) -= length)
+ {
+ ct_type = CT_STD;
+ /* change GL/GR charset */
+ if(ctdp->side == XlcGR && isleftside(*inbufptr)){
+ /* select GL side */
+ ctdp = GL_ctdp;
+ length = ctdp->length;
+ ct_type = ctdp->ct_type;
+ }else if(ctdp->side == XlcGL && isrightside(*inbufptr)){
+ /* select GR side */
+ ctdp = GR_ctdp;
+ length = ctdp->length;
+ ct_type = ctdp->ct_type;
+ }
+ if (*inbufptr == '\033' || *inbufptr == (char)'\233') {
+
+ for (ctdp = ctdata; ctdp <= ctd_endp ; ctdp++) {
+
+ if(!strncmp(inbufptr, ctdp->ct_encoding, ctdp->ct_encoding_len))
+ {
+ inbufptr += ctdp->ct_encoding_len;
+ (*from_left) -= ctdp->ct_encoding_len;
+ if (ctdp->length) {
+ length = ctdp->length;
+ if( *from_left < length ) {
+ *to = (XPointer)outbufptr;
+ *to_left -= outbufptr - outbuf_base;
+ return( unconv_num + *from_left );
+ }
+ }
+ ct_type = ctdp->ct_type;
+ if(ctdp->side == XlcGL){
+ GL_ctdp = ctdp; /* save GL ctdp */
+ }else{
+ GR_ctdp = ctdp; /* save GR ctdp */
+ }
+ break;
+ }
+ }
+ if (ctdp > ctd_endp) /* failed to match CT sequence */
+ unconv_num++;
+ }
+
+/* The following code insures that non-standard encodings, direction, extension,
+ * and version strings are ignored; subject to change in future.
+ */
+ switch (ct_type) {
+ case CT_STD:
+ break;
+ case CT_EXT2:
+ inbufptr++;
+ (*from_left)--;
+ case CT_NSTD:
+ ct_seglen = (BIT8OFF(*inbufptr) << 7) + BIT8OFF(*(inbufptr+1)) + 2;
+ inbufptr += ct_seglen;
+ (*from_left) -= ct_seglen;
+ continue;
+ case CT_EXT0:
+ inbuf_base = inbufptr;
+ SKIP_I(inbufptr);
+ inbufptr++;
+ ct_seglen = (unsigned)(inbufptr - inbuf_base);
+ *(from_left) -= ct_seglen;
+ continue;
+ case CT_EXT1:
+ inbuf_base = inbufptr;
+ SKIP_P(inbufptr);
+ SKIP_I(inbufptr);
+ inbufptr++;
+ ct_seglen = (unsigned)(inbufptr - inbuf_base);
+ *(from_left) -= ct_seglen;
+ continue;
+ case CT_DIR:
+ continue;
+ case CT_VER:
+ inbufptr += 2;
+ *(from_left) -= 2;
+ continue;
+ }
+
+ clen = length;
+ do {
+
+ if (byte1) {
+ if (kanji) {
+ /* FIXME: assignment of read-only location */
+ *inbufptr = BIT8ON(*inbufptr);
+ *(inbufptr+1) = BIT8ON(*(inbufptr+1));
+ }
+ else if (kana || userdef) {
+ if (save_outbuf == True) {
+ *outbufptr++ = ctdp->sshift;
+ }
+ (*to_left)--;
+ }
+ }
+ if (save_outbuf == True) {
+ *outbufptr++ = *inbufptr;
+ }
+ (*to_left)--;
+ inbufptr++;
+
+ if (*to_left == 0 && *from_left != length) {
+ *to = (XPointer)outbufptr;
+ unconv_num = *from_left;
+ return unconv_num;
+ }
+ } while (--clen);
+ }
+
+ *to = outbufptr;
+
+ return unconv_num;
+
+}
+#undef byte1
+#undef kana
+#undef kanji
+#undef userdef
+
+
+static int
+euc_mbstocts(
+ XlcConv conv,
+ XPointer *from,
+ int *from_left,
+ XPointer *to,
+ int *to_left,
+ XPointer *args,
+ int num_args)
+{
+ int ct_len = *to_left;
+ int cs_num;
+ int clen, length = 0;
+ int unconv_num = 0;
+ int num_conv;
+ const char *inbufptr = *from;
+ char *ctptr = *to;
+ XPointer ct_base = ctptr;
+
+ StateRec ct_state;
+ CTData charset;
+ XLCd lcd = (XLCd) conv->state;
+ int codeset_num = XLC_GENERIC(lcd, codeset_num);
+
+/* Initial State: */
+ ct_state.GL_charset = NULL;
+ ct_state.GR_charset = NULL;
+
+ if (*from_left > *to_left)
+ *from_left = *to_left;
+
+ for (;*from_left > 0; (*from_left) -= length) {
+
+ if (isleftside(*inbufptr)) { /* 7-bit (CS0) */
+ if (ASCII_CODESET >= codeset_num) {
+ unconv_num++;
+ (*from_left)--;
+ continue;
+ }
+ cs_num = Ascii;
+ charset = ctdptr[Ascii];
+ }
+ else if ((Uchar)*inbufptr == SS2) { /* Kana */
+ if (KANA_CODESET >= codeset_num) {
+ unconv_num++;
+ (*from_left)--;
+ continue;
+ }
+ cs_num = Kana;
+ charset = ctdptr[Kana];
+ inbufptr++;
+ (*from_left)--;
+ }
+ else if ((Uchar)*inbufptr == SS3) { /* Userdef */
+ if (USERDEF_CODESET >= codeset_num) {
+ unconv_num++;
+ (*from_left)--;
+ continue;
+ }
+ cs_num = Userdef;
+ charset = ctdptr[Userdef];
+ inbufptr++;
+ (*from_left)--;
+ }
+ else {
+ if (KANJI_CODESET >= codeset_num) {
+ unconv_num++;
+ (*from_left)--;
+ continue;
+ }
+ cs_num = Kanji;
+ charset = ctdptr[Kanji];
+ }
+
+ length = charset->length;
+
+ if (BADCHAR(charset->min_ch, *inbufptr))
+ continue;
+
+ if ( (charset->side == XlcGR && charset != ct_state.GR_charset) ||
+ (charset->side == XlcGL && charset != ct_state.GL_charset) ) {
+
+ ct_len -= ctdptr[cs_num]->ct_encoding_len;
+ if (ct_len < 0) {
+ unconv_num++;
+ break;
+ }
+
+ if (ctptr) {
+ strcpy(ctptr, ctdptr[cs_num]->ct_encoding);
+ ctptr += ctdptr[cs_num]->ct_encoding_len;
+ }
+ }
+
+ if (charset->side == XlcGR) {
+ ct_state.GR_charset = charset;
+ ct_state.GL_charset = NULL;
+ } else if (charset->side == XlcGL) {
+ ct_state.GL_charset = charset;
+ ct_state.GR_charset = NULL;
+ }
+
+ clen = length;
+
+ do {
+ *ctptr++ = charset == ct_state.GR_charset ?
+ BIT8ON(*inbufptr++) : BIT8OFF(*inbufptr++);
+ } while (--clen);
+ }
+
+ *to = (XPointer)ctptr;
+
+ if ((num_conv = (int)(ctptr - ct_base)) > 0)
+ (*to_left) -= num_conv;
+ return unconv_num;
+
+}
+
+
+static void
+close_converter(
+ XlcConv conv)
+{
+ Xfree((char *) conv);
+}
+
+enum { MBSTOCS, WCSTOCS, MBTOCS, CSTOMBS, CSTOWCS, MBSTOWCS, WCSTOMBS,
+ CTSTOWCS, CTSTOMBS, WCSTOCTS, MBSTOCTS };
+
+static XlcConvMethodsRec conv_methods[] = {
+ {close_converter, euc_mbstocs, NULL },
+ {close_converter, euc_wcstocs, NULL },
+ {close_converter, euc_mbtocs, NULL },
+ {close_converter, euc_cstombs, NULL },
+ {close_converter, euc_cstowcs, NULL },
+ {close_converter, euc_mbstowcs, NULL },
+ {close_converter, euc_wcstombs, NULL },
+ {close_converter, euc_ctstowcs, NULL },
+ {close_converter, euc_ctstombs, NULL },
+ {close_converter, euc_wcstocts, NULL },
+ {close_converter, euc_mbstocts, NULL },
+};
+
+
+static XlcConv
+open_mbstocs(
+ XLCd from_lcd,
+ const char *from_type,
+ XLCd to_lcd,
+ const char *to_type)
+{
+ return create_conv(from_lcd, &conv_methods[MBSTOCS]);
+}
+
+static XlcConv
+open_wcstocs(
+ XLCd from_lcd,
+ const char *from_type,
+ XLCd to_lcd,
+ const char *to_type)
+{
+ return create_conv(from_lcd, &conv_methods[WCSTOCS]);
+}
+
+static XlcConv
+open_mbtocs(
+ XLCd from_lcd,
+ const char *from_type,
+ XLCd to_lcd,
+ const char *to_type)
+{
+ return create_conv(from_lcd, &conv_methods[MBTOCS]);
+}
+
+static XlcConv
+open_cstombs(
+ XLCd from_lcd,
+ const char *from_type,
+ XLCd to_lcd,
+ const char *to_type)
+{
+ return create_conv(from_lcd, &conv_methods[CSTOMBS]);
+}
+
+static XlcConv
+open_cstowcs(
+ XLCd from_lcd,
+ const char *from_type,
+ XLCd to_lcd,
+ const char *to_type)
+{
+ return create_conv(from_lcd, &conv_methods[CSTOWCS]);
+}
+
+static XlcConv
+open_mbstowcs(
+ XLCd from_lcd,
+ const char *from_type,
+ XLCd to_lcd,
+ const char *to_type)
+{
+ return create_conv(from_lcd, &conv_methods[MBSTOWCS]);
+}
+
+static XlcConv
+open_wcstombs(
+ XLCd from_lcd,
+ const char *from_type,
+ XLCd to_lcd,
+ const char *to_type)
+{
+ return create_conv(from_lcd, &conv_methods[WCSTOMBS]);
+}
+
+static XlcConv
+open_ctstowcs(
+ XLCd from_lcd,
+ const char *from_type,
+ XLCd to_lcd,
+ const char *to_type)
+{
+ return create_conv(from_lcd, &conv_methods[CTSTOWCS]);
+}
+
+static XlcConv
+open_ctstombs(
+ XLCd from_lcd,
+ const char *from_type,
+ XLCd to_lcd,
+ const char *to_type)
+{
+ return create_conv(from_lcd, &conv_methods[CTSTOMBS]);
+}
+
+static XlcConv
+open_wcstocts(
+ XLCd from_lcd,
+ const char *from_type,
+ XLCd to_lcd,
+ const char *to_type)
+{
+ return create_conv(from_lcd, &conv_methods[WCSTOCTS]);
+}
+
+static XlcConv
+open_mbstocts(
+ XLCd from_lcd,
+ const char *from_type,
+ XLCd to_lcd,
+ const char *to_type)
+{
+ return create_conv(from_lcd, &conv_methods[MBSTOCTS]);
+}
+
+XLCd
+_XlcEucLoader(
+ const char *name)
+{
+ XLCd lcd;
+
+ lcd = _XlcCreateLC(name, _XlcGenericMethods);
+ if (lcd == NULL)
+ return lcd;
+
+ if (!XLC_PUBLIC_PART(lcd)->codeset ||
+ (_XlcNCompareISOLatin1(XLC_PUBLIC_PART(lcd)->codeset, "euc", 3))) {
+ _XlcDestroyLC(lcd);
+ return (XLCd) NULL;
+ }
+
+ initCTptr(lcd);
+
+ _XlcSetConverter(lcd, XlcNMultiByte, lcd, XlcNCharSet, open_mbstocs);
+ _XlcSetConverter(lcd, XlcNWideChar, lcd, XlcNCharSet, open_wcstocs);
+ _XlcSetConverter(lcd, XlcNCharSet, lcd, XlcNMultiByte, open_cstombs);
+ _XlcSetConverter(lcd, XlcNCharSet, lcd, XlcNWideChar, open_cstowcs);
+ _XlcSetConverter(lcd, XlcNMultiByte, lcd, XlcNChar, open_mbtocs);
+
+#ifndef FORCE_INDIRECT_CONVERTER
+ _XlcSetConverter(lcd, XlcNCompoundText, lcd, XlcNMultiByte, open_ctstombs);
+ _XlcSetConverter(lcd, XlcNCompoundText, lcd, XlcNWideChar, open_ctstowcs);
+ _XlcSetConverter(lcd, XlcNMultiByte, lcd, XlcNCompoundText, open_mbstocts);
+ _XlcSetConverter(lcd, XlcNMultiByte, lcd, XlcNWideChar, open_mbstowcs);
+ _XlcSetConverter(lcd, XlcNWideChar, lcd, XlcNCompoundText, open_wcstocts);
+ _XlcSetConverter(lcd, XlcNWideChar, lcd, XlcNMultiByte, open_wcstombs);
+#endif
+
+ _XlcAddUtf8Converters(lcd);
+
+ return lcd;
+}
+
+#else
+typedef int dummy;
+#endif /* X_LOCALE */
diff --git a/libX11/modules/lc/xlocale/lcSjis.c b/libX11/modules/lc/xlocale/lcSjis.c
index a7a9bbc4f..74dd033ec 100644
--- a/libX11/modules/lc/xlocale/lcSjis.c
+++ b/libX11/modules/lc/xlocale/lcSjis.c
@@ -1,1612 +1,1612 @@
-/****************************************************************
-
- Copyright 1992, 1993 by FUJITSU LIMITED
- Copyright 1993 by Fujitsu Open Systems Solutions, Inc.
- Copyright 1994 by Sony Corporation
-
-Permission to use, copy, modify, distribute and sell this software
-and its documentation for any purpose is hereby granted without fee,
-provided that the above copyright notice appear in all copies and
-that both that copyright notice and this permission notice appear
-in supporting documentation, and that the name of FUJITSU LIMITED,
-Fujitsu Open Systems Solutions, Inc. and Sony Corporation not be
-used in advertising or publicity pertaining to distribution of the
-software without specific, written prior permission.
-FUJITSU LIMITED, Fujitsu Open Systems Solutions, Inc. and
-Sony Corporation make no representations about the suitability of
-this software for any purpose. It is provided "as is" without
-express or implied warranty.
-
-FUJITSU LIMITED, FUJITSU OPEN SYSTEMS SOLUTIONS, INC. AND SONY
-CORPORATION DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
-INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS,
-IN NO EVENT SHALL FUJITSU OPEN SYSTEMS SOLUTIONS, INC., FUJITSU LIMITED
-AND SONY CORPORATION BE LIABLE FOR ANY SPECIAL, INDIRECT OR
-CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS
-OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
-OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE
-OR PERFORMANCE OF THIS SOFTWARE.
-
- Authors: Jeffrey Bloomfield (jeffb@ossi.com)
- Shigeru Yamada (yamada@ossi.com)
- Yoshiyuki Segawa (segawa@ossi.com)
- Modifier:Makoto Wakamatsu Sony Corporation
- makoto@sm.sony.co.jp
-
-*****************************************************************/
-
-/*
- * A Japanese SJIS locale.
- * Supports: all locales with codeset SJIS.
- * How: Provides converters for SJIS.
- * Platforms: Only those defining X_LOCALE (only Lynx, Linux-libc5, OS/2).
- */
-
-#ifdef X_LOCALE
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-#include "XlcGeneric.h"
-
-#include <ctype.h>
-#ifdef WIN32
-#define isascii __isascii
-#endif
-
-#define CS0 codesets[0] /* Codeset 0 - 7-bit ASCII */
-#define CS1 codesets[1] /* Codeset 1 - Kanji */
-#define CS2 codesets[2] /* Codeset 2 - Half-Kana */
-#define CS3 codesets[3] /* Codeset 3 - User defined */
-
-#define ascii (codeset->cs_num == 0)
-#define kanji (codeset->cs_num == 1)
-#define kana (codeset->cs_num == 2)
-#define userdef (codeset->cs_num == 3)
-
-#define ASCII_CODESET 0
-#define KANJI_CODESET 1
-#define KANA_CODESET 2
-#define USERDEF_CODESET 3
-#define MAX_CODESETS 4
-
-#define GR 0x80 /* begins right-side (non-ascii) region */
-#define GL 0x7f /* ends left-side (ascii) region */
-
-#define isleftside(c) (((c) & GR) ? 0 : 1)
-#define isrightside(c) (!isleftside(c))
-
-typedef unsigned char Uchar;
-typedef unsigned long Ulong;
-typedef unsigned int Uint;
-
-/* Acceptable range for 2nd byte of SJIS multibyte char */
-#define VALID_MULTIBYTE(c) \
- ((0x40<=((Uchar)c) && ((Uchar)c)<=0x7e) \
- || (0x80<=((Uchar)c) && ((Uchar)c)<=0xfc))
-
-#ifndef iskanji
-#define iskanji(c) ((0x81<=((Uchar)c) && ((Uchar)c)<=0x9f) \
- || (0xe0<=((Uchar)c) && ((Uchar)c)<=0xef))
-#endif /* !iskanji */
-
-#ifndef iskana
-#define iskana(c) (0xa1<=((Uchar)c) && ((Uchar)c)<=0xdf)
-#endif /* !iskana */
-
-#define isuserdef(c) (0xf0<=((Uchar)c) && ((Uchar)c)<=0xfc)
-
-#define BIT8OFF(c) ((c) & GL)
-#define BIT8ON(c) ((c) | GR)
-
-
-static void jis_to_sjis (Uchar *p1, Uchar *p2);
-static void sjis_to_jis (Uchar *p1, Uchar *p2);
-static CodeSet wc_codeset (XLCd lcd, wchar_t wch);
-
-
-/*
- * Notes:
- * 1. 16-bit widechar format is limited to 14 data bits. Since the 2nd byte
- * of SJIS multibyte chars are in the ranges of 0x40 - 7E and 0x80 - 0xFC,
- * SJIS cannot map directly into 16 bit widechar format within the confines
- * of a single codeset. Therefore, for SJIS widechar conversion, SJIS Kanji
- * is mapped into the JIS codeset. (The algorithms used in jis_to_sjis()
- * and sjis_to_jis() are from Ken Lunde (lunde@mv.us.adobe.com) and are in
- * the public domain.)
- * 2. Defining FORCE_INDIRECT_CONVERTER (see _XlcEucLoader())
- * forces indirect (charset) conversions (e.g. wcstocs()<->cstombs()).
- * 3. Using direct converters (e.g. mbstowcs()) decreases conversion
- * times by 20-40% (depends on specific converter used).
- */
-
-
-static int
-sjis_mbstowcs(
- XlcConv conv,
- XPointer *from,
- int *from_left,
- XPointer *to,
- int *to_left,
- XPointer *args,
- int num_args)
-{
-
- XLCd lcd = (XLCd)conv->state;
-
- int chr_len = 0;
- int shift_mult = 0;
- Uint chrcode = 0;
-
- Uchar ch, ch2;
- Uint wc_encode = 0;
- Uint wc_tmp = 0;
-
- Bool new_char;
-
- int firstbyte;
- int length = 0;
- int num_conv;
- int unconv_num = 0;
-
- const char *inbufptr = *from;
- wchar_t *outbufptr = (wchar_t *) *to;
- wchar_t *outbuf_base = outbufptr;
-
- CodeSet *codesets = XLC_GENERIC(lcd, codeset_list);
- int codeset_num = XLC_GENERIC(lcd, codeset_num);
- Ulong wc_shift = XLC_GENERIC(lcd, wc_shift_bits);
-
- if (*from_left > *to_left)
- *from_left = *to_left;
-
- for (new_char = True, firstbyte = True; *from_left > 0; (*from_left)--) {
-
- ch = *inbufptr++;
-
- if (firstbyte) {
- if (ASCII_CODESET >= codeset_num) {
- unconv_num++;
- (*from_left)--;
- continue;
- }
- if (isascii(ch)) {
- length = CS0->length;
- *outbufptr++ = (wchar_t)ch;
- continue;
- }
- else if (iskanji(ch)) {
- if (KANJI_CODESET >= codeset_num) {
- unconv_num++;
- (*from_left)--;
- continue;
- }
- firstbyte = False;
- length = CS1->length;
- if (*from_left < length || *to_left < length)
- return -1;
- wc_encode = CS1->wc_encoding;
- ch2 = *inbufptr;
- sjis_to_jis(&ch, &ch2);
- chrcode = ch;
- }
- else if (iskana(ch)) {
- if (KANA_CODESET >= codeset_num) {
- unconv_num++;
- (*from_left)--;
- continue;
- }
- length = CS2->length;
- wc_encode = CS2->wc_encoding;
- chrcode = BIT8OFF(ch);
- }
- else if (isuserdef(ch)) {
- if (USERDEF_CODESET >= codeset_num) {
- unconv_num++;
- (*from_left)--;
- continue;
- }
- firstbyte = False;
- length = CS3->length;
- if (*from_left < length || *to_left < length)
- return -1;
- wc_encode = CS3->wc_encoding;
- ch2 = *inbufptr;
- sjis_to_jis(&ch, &ch2);
- chrcode = ch;
- }
- else /* unknown */ {
- unconv_num++;
- (*from_left)--;
- continue;
- }
- } else { /* 2nd byte of multibyte char */
- if (!VALID_MULTIBYTE((Uchar) *(inbufptr-1))) {
- unconv_num++;
- firstbyte = True;
- }
- chrcode = ch2;
- }
-
- if (new_char) {
- chr_len = length;
- shift_mult = length - 1;
- new_char = False;
- }
-
- chrcode <<= (wc_shift * shift_mult);
- shift_mult--;
- wc_tmp |= chrcode;
- if (--chr_len == 0) {
- wc_tmp |= wc_encode;
- *outbufptr++ = wc_tmp;
-
- firstbyte = True;
- new_char = True;
- wc_tmp = (Uint)0;
- }
-
- } /* end for */
-
- *to = (XPointer)outbufptr;
-
- if ((num_conv = outbufptr - outbuf_base) > 0)
- (*to_left) -= num_conv;
-
- return unconv_num;
-}
-
-
-#define byte1 (length == codeset->length - 1)
-#define byte2 (byte1 == 0)
-
-static int
-sjis_wcstombs(
- XlcConv conv,
- XPointer *from,
- int *from_left,
- XPointer *to,
- int *to_left,
- XPointer *args,
- int num_args)
-{
- const wchar_t *inbufptr = (const wchar_t *) *from;
- XPointer outbufptr = *to;
- XPointer outbuf_base = outbufptr;
- wchar_t wch;
- int length;
- Uchar tmp;
- Uchar t1, t2;
- int num_conv;
- int unconv_num = 0;
-
- XLCd lcd = (XLCd)conv->state;
- CodeSet codeset;
- Ulong wc_shift = XLC_GENERIC(lcd, wc_shift_bits);
-
- if (*from_left > *to_left)
- *from_left = *to_left;
-
- for (; *from_left > 0 ; (*from_left)-- ) {
-
- wch = *inbufptr++;
-
- if (!(codeset = wc_codeset(lcd, wch))) {
- unconv_num++;
- (*from_left)--;
- continue;
- }
-
- length = codeset->length;
- wch ^= (wchar_t)codeset->wc_encoding;
-
- do {
- length--;
- tmp = wch>>(wchar_t)( (Ulong)length * wc_shift);
-
- if (kana)
- tmp = BIT8ON(tmp);
-
- else if (byte1 && (kanji || userdef)) {
- t1 = BIT8OFF(tmp);
- continue;
- }
-
- else if (byte2 && (kanji || userdef)) {
- t2 = BIT8OFF(tmp);
- jis_to_sjis(&t1, &t2);
- *outbufptr++ = (char)t1;
- tmp = t2;
- }
-
- *outbufptr++ = (char)tmp;
- } while (length);
-
- } /* end for */
-
- *to = (XPointer)outbufptr;
-
- if ((num_conv = (int)(outbufptr - outbuf_base)) > 0)
- (*to_left) -= num_conv;
-
- return unconv_num;
-}
-#undef byte1
-#undef byte2
-
-/*
- * sjis<->jis conversion for widechar kanji (See Note at top of file)
- */
-static void
-sjis_to_jis(
- Uchar *p1,
- Uchar *p2)
-{
- Uchar c1 = *p1;
- Uchar c2 = *p2;
- Uchar adjust = c2 < 0x9f;
- Uchar rowOffset = c1 < 0xa0 ? 0x70 : 0xb0;
- Uchar cellOffset = adjust ? (0x1f + (c2 > 0x7f)) : 0x7e;
-
- *p1 = ((c1 - rowOffset) << 1) - adjust;
- *p2 -= cellOffset;
-}
-
-static void
-jis_to_sjis(
- Uchar *p1,
- Uchar *p2)
-{
- Uchar c1 = *p1;
- Uchar c2 = *p2;
- Uchar rowOffset = c1 < 0x5f ? 0x70 : 0xb0;
- Uchar cellOffset = c1 % 2 ? 0x1f + (c2 > 0x5f) : 0x7e;
-
- *p1 = ((Uchar)(c1 + 1) >> 1) + rowOffset;
- *p2 = c2 + cellOffset;
-}
-
-static CodeSet
-wc_codeset(
- XLCd lcd,
- wchar_t wch)
-{
- CodeSet *codesets = XLC_GENERIC(lcd, codeset_list);
-#if !defined(__sony_news) || defined(SVR4)
- int end = XLC_GENERIC(lcd, codeset_num);
- Ulong widech = (Ulong)(wch & XLC_GENERIC(lcd, wc_encode_mask));
-
- for (; --end >= 0; codesets++)
- if ( widech == (*codesets)->wc_encoding )
- return *codesets;
-
- return NULL;
-#else
- if( iskanji(wch >> 8) )
- return( codesets[1] );
- if( iskana(wch & 0xff) )
- return( codesets[2] );
- return( codesets[0] );
-#endif
-}
-
-
-static int
-sjis_mbtocs(
- XlcConv conv,
- XPointer *from,
- int *from_left,
- XPointer *to,
- int *to_left,
- XPointer *args,
- int num_args)
-{
- XLCd lcd = (XLCd)conv->state;
- XlcCharSet charset = NULL;
- int char_size = 0;
- int unconv_num = 0;
- const char *src = *from;
- char *dst = *to;
- CodeSet *codesets = XLC_GENERIC(lcd, codeset_list);
- int codeset_num = XLC_GENERIC(lcd, codeset_num);
-
- if (iskanji(*src)) {
- if (KANJI_CODESET >= codeset_num)
- return -1;
- charset = *CS1->charset_list;
- char_size = charset->char_size;
-
- if (*from_left >= char_size && *to_left >= char_size) {
- *dst++ = *src++;
- *dst++ = *src++;
- if (!VALID_MULTIBYTE((Uchar) *(src-1))) /* check 2nd byte */
- unconv_num++;
- sjis_to_jis((Uchar *)(dst-2), (Uchar *)(dst-1));
- } else
- return -1;
- }
- else if (isuserdef(*src)) {
- if (USERDEF_CODESET >= codeset_num)
- return -1;
- charset = *CS3->charset_list;
- char_size = charset->char_size;
-
- if (*from_left >= char_size && *to_left >= char_size) {
- *dst++ = *src++;
- *dst++ = *src++;
- if (!VALID_MULTIBYTE((Uchar) *(src-1))) /* check 2nd byte */
- unconv_num++;
- sjis_to_jis((Uchar *)(dst-2), (Uchar *)(dst-1));
- } else
- return -1;
- }
- else if (isascii(*src)) {
- if (ASCII_CODESET >= codeset_num)
- return -1;
- charset = *CS0->charset_list;
- char_size = charset->char_size;
-
- if (*from_left >= char_size && *to_left >= char_size)
- *dst++ = *src++;
- else
- return -1;
- }
- else if (iskana(*src)) {
- if (KANA_CODESET >= codeset_num)
- return -1;
- charset = *CS2->charset_list;
- char_size = charset->char_size;
-
- if (*from_left >= char_size && *to_left >= char_size)
- *dst++ = *src++;
- else
- return -1;
- }
- else /* unknown */
- return -1;
-
- *from_left -= char_size;
- *to_left -= char_size;
-
- *to = (XPointer) dst;
- *from = (XPointer) src;
-
- if (num_args > 0)
- *((XlcCharSet *) args[0]) = charset;
-
- return unconv_num;
-}
-
-
-static int
-sjis_mbstocs(
- XlcConv conv,
- XPointer *from,
- int *from_left,
- XPointer *to,
- int *to_left,
- XPointer *args,
- int num_args)
-{
- const char *tmp_from;
- char *tmp_to;
- int tmp_from_left, tmp_to_left;
- XlcCharSet charset, tmp_charset;
- XPointer tmp_args[1];
- int unconv_num = 0, ret;
-
-/* Determine the charset of the segment and convert one character: */
-
- tmp_args[0] = (XPointer) &charset; /* charset from sjis_mbtocs() */
- while
- ((ret = sjis_mbtocs(conv, from, from_left, to, to_left, tmp_args, 1)) > 0)
- unconv_num += ret;
- if ( ret < 0 )
- return ret;
-
- tmp_from = *from;
- tmp_from_left = *from_left;
- tmp_to_left = *to_left;
- tmp_to = *to;
-
-/* Convert remainder of the segment: */
-
- tmp_args[0] = (XPointer) &tmp_charset;
- while( (ret = sjis_mbtocs(conv, (XPointer *) &tmp_from, &tmp_from_left,
- (XPointer *) &tmp_to, &tmp_to_left, tmp_args, 1)) >= 0 ) {
-
- if (ret > 0) {
- unconv_num += ret;
- continue;
- }
-
- if (tmp_charset != charset) /* quit on end of segment */
- break;
-
- *from = (XPointer) tmp_from;
- *from_left = tmp_from_left;
- *to = (XPointer) tmp_to;
- *to_left = tmp_to_left;
- }
-
- if (num_args > 0)
- *((XlcCharSet *) args[0]) = charset;
-
- return unconv_num;
-}
-
-static int
-sjis_wcstocs(
- XlcConv conv,
- XPointer *from,
- int *from_left,
- XPointer *to,
- int *to_left,
- XPointer *args,
- int num_args)
-{
- XLCd lcd = (XLCd) conv->state;
- const wchar_t *wcptr = *((const wchar_t **)from);
- char *bufptr = *((char **) to);
- wchar_t wch;
- char *tmpptr;
- int length;
- CodeSet codeset;
- Ulong wc_encoding;
- int buf_len = *to_left;
- int wcstr_len = *from_left;
-
- if (!(codeset = wc_codeset(lcd, *wcptr)))
- return -1;
-
- if (wcstr_len < buf_len / codeset->length)
- buf_len = wcstr_len * codeset->length;
-
-#if !defined(__sony_news) || defined(SVR4)
- wc_encoding = codeset->wc_encoding;
-
- for ( ; wcstr_len > 0 && buf_len > 0; wcptr++, wcstr_len--) {
- wch = *wcptr;
-
- if ((wch & XLC_GENERIC(lcd, wc_encode_mask)) != wc_encoding)
- break;
-
- length = codeset->length;
-
- buf_len -= length;
- bufptr += length;
- tmpptr = bufptr - 1;
-
- while (length--) {
- *tmpptr-- = kana ? BIT8ON(wch) : BIT8OFF(wch);
- wch >>= (wchar_t)XLC_GENERIC(lcd, wc_shift_bits);
- }
- }
-#else
- length = codeset->length;
- for( ; wcstr_len > 0 && buf_len > 0; wcptr++, wcstr_len-- ) {
- wch = *wcptr;
- if( codeset != wc_codeset( lcd, wch ) )
- break;
-
- buf_len -= length;
- if( length == 2 ) {
- unsigned short code;
-
- code = sjis2jis( wch & 0xffff );
- *bufptr++ = code >> 8;
- *bufptr++ = code & 0xff;
- }
- else
- *bufptr++ = wch & 0xff;
- }
-#endif
-
- if (num_args > 0)
- *((XlcCharSet *) args[0]) = *codeset->charset_list;
-
- *from_left -= wcptr - (wchar_t *) *from;
- *from = (XPointer) wcptr;
-
- *to_left -= bufptr - *to;
- *to = bufptr;
-
- return 0;
-}
-
-static CodeSet
-GetCodeSetFromCharSet(
- XLCd lcd,
- XlcCharSet charset)
-{
- CodeSet *codeset = XLC_GENERIC(lcd, codeset_list);
- XlcCharSet *charset_list;
- int codeset_num, num_charsets;
-
- codeset_num = XLC_GENERIC(lcd, codeset_num);
-
- for ( ; codeset_num-- > 0; codeset++) {
- num_charsets = (*codeset)->num_charsets;
- charset_list = (*codeset)->charset_list;
-
- for ( ; num_charsets-- > 0; charset_list++)
- if (*charset_list == charset)
- return *codeset;
- }
-
- return (CodeSet) NULL;
-}
-
-
-static int
-sjis_cstombs(
- XlcConv conv,
- char **from,
- int *from_left,
- char **to,
- int *to_left,
- XPointer *args,
- int num_args)
-{
- XLCd lcd = (XLCd) conv->state;
- const char *csptr = *from;
- char *bufptr = *to;
- int csstr_len = *from_left;
- int buf_len = *to_left;
- int length;
- CodeSet codeset;
- int cvt_length = 0;
-
- if (num_args < 1)
- return -1;
-
- if (!(codeset = GetCodeSetFromCharSet(lcd, (XlcCharSet) args[0])))
- return -1;
-
- csstr_len /= codeset->length;
- buf_len /= codeset->length;
- if (csstr_len < buf_len)
- buf_len = csstr_len;
-
- cvt_length += buf_len * codeset->length;
-
- if (bufptr) {
- while (buf_len--) {
- length = codeset->length;
- while (length--)
- *bufptr++ = codeset->length == 1 && codeset->side == XlcGR ?
- BIT8ON(*csptr++) : BIT8OFF(*csptr++);
-
- if (codeset->length == 2)
- jis_to_sjis((Uchar *)(bufptr-2), (Uchar *)(bufptr-1));
- }
- }
-
- *from_left -= csptr - *from;
- *from = (XPointer) csptr;
-
- if (bufptr)
- *to += cvt_length;
- *to_left -= cvt_length;
-
-
- return 0;
-}
-
-static int
-sjis_cstowcs(
- XlcConv conv,
- XPointer *from,
- int *from_left,
- XPointer *to,
- int *to_left,
- XPointer *args,
- int num_args)
-{
- XLCd lcd = (XLCd) conv->state;
- const char *csptr = (const char *) *from;
- wchar_t *bufptr = (wchar_t *) *to;
- wchar_t *toptr = (wchar_t *) *to;
- int csstr_len = *from_left;
- int buf_len = *to_left;
- wchar_t wch;
- int length;
- Ulong wc_shift_bits = (int)XLC_GENERIC(lcd, wc_shift_bits);
- CodeSet codeset;
-
- if (num_args < 1)
- return -1;
-
- if (!(codeset = GetCodeSetFromCharSet(lcd, (XlcCharSet) args[0])))
- return -1;
-
- csstr_len /= codeset->length;
- if (csstr_len < buf_len)
- buf_len = csstr_len;
-
- *to_left -= buf_len;
-
- if (bufptr) {
-
- toptr += buf_len;
- *to = (XPointer) toptr;
-
- while (buf_len--) {
- wch = (wchar_t) BIT8OFF(*csptr);
- csptr++;
-
- length = codeset->length - 1;
- while (length--) {
- wch = (wch << wc_shift_bits) | BIT8OFF(*csptr);
- csptr++;
- }
- *bufptr++ = wch | codeset->wc_encoding;
- }
- }
-
- *from_left -= csptr - *from;
- *from = (XPointer) csptr;
-
- return 0;
-}
-
-
-/*
- * Stripped down Direct CT converters for SJIS
- *
- */
-
-#define BADCHAR(min_ch, c) (BIT8OFF(c) < (char)min_ch && BIT8OFF(c) != 0x0 && \
- BIT8OFF(c) != '\t' && BIT8OFF(c) != '\n' && \
- BIT8OFF(c) != 0x1b)
-
-typedef struct _CTDataRec {
- int side;
- int length;
- char *name;
- Ulong wc_encoding;
- char *ct_encoding;
- int ct_encoding_len;
- int set_size;
- Uchar min_ch;
- Uchar ct_type;
-} CTDataRec, *CTData;
-
-typedef struct _StateRec {
- CTData GL_charset;
- CTData GR_charset;
- CTData charset;
-} StateRec, *State;
-
-#define CT_STD 0
-#define CT_NSTD 1
-#define CT_DIR 2
-#define CT_EXT0 3
-#define CT_EXT1 4
-#define CT_EXT2 5
-#define CT_VER 6
-
-static CTDataRec ctdata[] =
-{
- { XlcGL, 1, "ISO8859-1:GL", 0, "\033(B" , 3, 0, 0, CT_STD },
- { XlcGR, 1, "ISO8859-1:GR", 0, "\033-A" , 3, 0, 0, CT_STD },
- { XlcGL, 1, "JISX0201.1976-0:GL", 0, "\033(J" , 3, 0, 0, CT_STD },
- { XlcGR, 1, "JISX0201.1976-0:GR", 0, "\033)I" , 3, 0, 0, CT_STD },
- { XlcGL, 2, "JISX0208.1983-0:GL", 0, "\033$(B" , 4, 0, 0, CT_STD },
- { XlcGR, 2, "JISX0208.1983-0:GR", 0, "\033$)B" , 4, 0, 0, CT_STD },
- { XlcGL, 2, "JISX0212.1990-0:GL", 0, "\033$(D" , 4, 0, 0, CT_STD },
- { XlcGR, 2, "JISX0212.1990-0:GR", 0, "\033$)D" , 4, 0, 0, CT_STD },
- { XlcUnknown, 0, "Ignore-Ext-Status?", 0, "\033#" , 2, 0, 0, CT_VER },
- { XlcUnknown, 0, "NonStd-?-OctetChar", 0, "\033%/0" , 4, 0, 0, CT_NSTD },
- { XlcUnknown, 1, "NonStd-1-OctetChar", 0, "\033%/1" , 4, 0, 0, CT_NSTD },
- { XlcUnknown, 2, "NonStd-2-OctetChar", 0, "\033%/2" , 4, 0, 0, CT_NSTD },
- { XlcUnknown, 3, "NonStd-3-OctetChar", 0, "\033%/3" , 4, 0, 0, CT_NSTD },
- { XlcUnknown, 4, "NonStd-4-OctetChar", 0, "\033%/4" , 4, 0, 0, CT_NSTD },
- { XlcUnknown, 0, "Extension-2" , 0, "\033%/" , 3, 0, 0, CT_EXT2 },
- { XlcUnknown, 0, "Extension-0" , 0, "\033" , 1, 0, 0, CT_EXT0 },
- { XlcUnknown, 0, "Begin-L-to-R-Text", 0, "\2331]" , 3, 0, 0, CT_DIR },
- { XlcUnknown, 0, "Begin-R-to-L-Text", 0, "\2332]" , 3, 0, 0, CT_DIR },
- { XlcUnknown, 0, "End-Of-String", 0, "\233]" , 2, 0, 0, CT_DIR },
- { XlcUnknown, 0, "Extension-1" , 0, "\233" , 1, 0, 0, CT_EXT1 },
-};
-
-/* Note on above table: sjis_ctstombs() and sjis_ctstowcs() parser depends on
- * certain table entries occuring in decreasing string length--
- * 1. CT_EXT2 and CT_EXT0 entries must occur after CT_NSTD entries.
- * 2. CT_DIR and CT_EXT1 entries must occur after CT_DIR entries.
- */
-
-static CTData ctdptr[sizeof(ctdata) / sizeof(CTDataRec)];
-static CTData ctd_endp = ctdata + ((sizeof(ctdata) / sizeof(CTDataRec))) - 1;
-
-#define Ascii 0
-#define Kanji 1
-#define Kana 2
-#define Userdef 3
-
-/*
- * initCTptr(): Set ctptr[] to point at ctdata[], indexed by codeset_num.
- */
-static void
-initCTptr(
- XLCd lcd)
-{
- int num_codesets = XLC_GENERIC(lcd, codeset_num);
- int num_charsets;
- int i, j;
- CodeSet *codesets = XLC_GENERIC(lcd, codeset_list);
- CodeSet codeset;
- XlcCharSet charset;
- CTData ctdp = ctdata;
-
- ctdptr[Ascii] = &ctdata[0]; /* failsafe */
-
- for (i = 0; i < num_codesets; i++) {
-
- codeset = codesets[i];
- num_charsets = codeset->num_charsets;
-
- for (j = 0; j < num_charsets; j++) {
-
- charset = codeset->charset_list[j];
-
- for (ctdp = ctdata; ctdp <= ctd_endp; ctdp++)
-
- if (! strcmp(ctdp->name, charset->name)) {
-
- ctdptr[codeset->cs_num] = ctdp;
-
- ctdptr[codeset->cs_num]->wc_encoding = codeset->wc_encoding;
-
- ctdptr[codeset->cs_num]->set_size =
- charset->set_size;
-
- ctdptr[codeset->cs_num]->min_ch =
- charset->set_size == 94 &&
- (ctdptr[codeset->cs_num]->length > 1 ||
- ctdptr[codeset->cs_num]->side == XlcGR) ? 0x21 : 0x20;
-
- break;
- }
- }
- }
-}
-
-
-static int
-sjis_mbstocts(
- XlcConv conv,
- XPointer *from,
- int *from_left,
- XPointer *to,
- int *to_left,
- XPointer *args,
- int num_args)
-{
- int ct_len = *to_left;
- int cs_num;
- int clen;
- int unconv_num = 0;
- int num_conv;
- const char *inbufptr = *from;
- char *ctptr = *to;
- XPointer ct_base = ctptr;
-
- StateRec ct_state;
- CTData charset = NULL;
- XLCd lcd = (XLCd) conv->state;
- int codeset_num = XLC_GENERIC(lcd, codeset_num);
-
-/* Initial State: */
-
- ct_state.GL_charset = ctdptr[Ascii];
- ct_state.GR_charset = NULL;
-
- if (*from_left > *to_left)
- *from_left = *to_left;
-
- for (;*from_left > 0; (*from_left) -= charset->length) {
-
- if (iskanji(*inbufptr)) {
- if (KANJI_CODESET >= codeset_num) {
- unconv_num++;
- (*from_left)--;
- continue;
- }
- cs_num = Kanji;
- charset = ctdptr[Kanji];
- if (!VALID_MULTIBYTE((Uchar) *(inbufptr+1)))
- unconv_num++;
- }
- else if (isuserdef(*inbufptr)) {
- if (USERDEF_CODESET >= codeset_num) {
- unconv_num++;
- (*from_left)--;
- continue;
- }
- cs_num = Userdef;
- charset = ctdptr[Userdef];
- if (!VALID_MULTIBYTE((Uchar) *(inbufptr+1)))
- unconv_num++;
- }
- else if (isascii(*inbufptr)) {
- if (ASCII_CODESET >= codeset_num) {
- unconv_num++;
- (*from_left)--;
- continue;
- }
- cs_num = Ascii;
- charset = ctdptr[Ascii];
- }
- else if (iskana(*inbufptr)) {
- if (KANA_CODESET >= codeset_num) {
- unconv_num++;
- (*from_left)--;
- continue;
- }
- cs_num = Kana;
- charset = ctdptr[Kana];
- }
- else { /* unknown */
- unconv_num++;
- (*from_left)--;
- continue;
- }
-
- if ( (charset->side == XlcGR && charset != ct_state.GR_charset) ||
- (charset->side == XlcGL && charset != ct_state.GL_charset) ) {
-
- ct_len -= ctdptr[cs_num]->ct_encoding_len;
- if (ct_len < 0) {
- unconv_num++;
- break;
- }
-
- if (ctptr) {
- strcpy(ctptr, ctdptr[cs_num]->ct_encoding);
- ctptr += ctdptr[cs_num]->ct_encoding_len;
- }
- }
-
- clen = charset->length;
- do {
- *ctptr++ = *inbufptr++;
- } while (--clen);
-
- if (charset->length >= 2) {
- sjis_to_jis((Uchar *)(ctptr-2), (Uchar *)(ctptr-1));
- if (BADCHAR(charset->min_ch, *(ctptr-2)) ||
- BADCHAR(charset->min_ch, *(ctptr-1))) {
- unconv_num++;
- continue;
- }
- }
- else
- if (BADCHAR(charset->min_ch, *(ctptr-1))) {
- unconv_num++;
- continue;
- }
-
- if (charset->side == XlcGR)
- ct_state.GR_charset = charset;
- else if (charset->side == XlcGL)
- ct_state.GL_charset = charset;
-
- if (charset->side == XlcGR) {
- clen = charset->length;
- do {
- (*(Uchar *)(ctptr-clen)) = BIT8ON(*(Uchar *)(ctptr-clen));
- } while (--clen);
- }
- }
-
- *to = (XPointer)ctptr;
-
- if ((num_conv = (int)(ctptr - ct_base)) > 0)
- (*to_left) -= num_conv;
-
- return unconv_num;
-
-}
-
-
-#define byte1 (length == codeset->length - 1)
-#define byte2 (byte1 == 0)
-
-static int
-sjis_wcstocts(
- XlcConv conv,
- XPointer *from,
- int *from_left,
- XPointer *to,
- int *to_left,
- XPointer *args,
- int num_args)
-{
- int ct_len = *to_left;
- const wchar_t *inbufptr = (const wchar_t *) *from;
- char *ctptr = *to;
- XPointer ct_base = ctptr;
- wchar_t wch;
- int length;
- Uchar tmp;
- Uchar t1 = 0;
- int num_conv;
-
- StateRec ct_state;
- XLCd lcd = (XLCd)conv->state;
- CTData charset;
- CodeSet codeset;
- int unconv_num = 0;
- Ulong wc_shift = XLC_GENERIC(lcd, wc_shift_bits);
-
-/* Initial State: */
- ct_state.GL_charset = ctdptr[0]; /* Codeset 0 */
- ct_state.GR_charset = NULL;
-
- if (*from_left > *to_left)
- *from_left = *to_left;
-
- for (; *from_left > 0 ; (*from_left)-- ) {
-
- wch = *inbufptr++;
-
- if (!(codeset = wc_codeset(lcd, wch))) {
- unconv_num++;
- (*from_left)--;
- continue;
- }
-
- charset = ctdptr[codeset->cs_num];
-
- length = codeset->length;
- wch ^= (wchar_t)codeset->wc_encoding;
-
- if ( (charset->side == XlcGR && charset != ct_state.GR_charset) ||
- (charset->side == XlcGL && charset != ct_state.GL_charset) ) {
-
- ct_len -= ctdptr[codeset->cs_num]->ct_encoding_len;
- if (ct_len < 0) {
- unconv_num++;
- break;
- }
-
- if (ctptr) {
- strcpy(ctptr, ctdptr[codeset->cs_num]->ct_encoding);
- ctptr += ctdptr[codeset->cs_num]->ct_encoding_len;
- }
-
- }
-
- if (charset->side == XlcGR)
- ct_state.GR_charset = charset;
- else if (charset->side == XlcGL)
- ct_state.GL_charset = charset;
-
- do {
- length--;
- tmp = wch>>(wchar_t)( (Ulong)length * wc_shift);
-
- if (kana) {
- if (BADCHAR(charset->min_ch, (char)tmp)) {
- unconv_num++;
- break;
- }
- *ctptr++ = (char)BIT8ON(tmp);
- }
-
- else if (byte1 && (kanji || userdef)) {
- t1 = tmp;
- }
-
- else if (byte2 && (kanji || userdef)) {
- if (BADCHAR(charset->min_ch, (char)t1) ||
- BADCHAR(charset->min_ch, (char)tmp)) {
- unconv_num++;
- break;
- }
-
- *ctptr++ = (char)BIT8OFF(t1);
- *ctptr++ = (char)BIT8OFF(tmp);
- }
-
- else {
- if (BADCHAR(charset->min_ch, (char)tmp)) {
- unconv_num++;
- break;
- }
- *ctptr++ = (char)tmp;
- }
- } while (length);
-
- } /* end for */
-
- *to = (XPointer)ctptr;
-
- if ((num_conv = (int)(ctptr - ct_base)) > 0)
- (*to_left) -= num_conv;
-
- return unconv_num;
-}
-#undef byte1
-#undef byte2
-
-#define SKIP_I(str) while (*(str) >= 0x20 && *(str) <= 0x2f) (str)++;
-#define SKIP_P(str) while (*(str) >= 0x30 && *(str) <= 0x3f) (str)++;
-
-static int
-sjis_ctstombs(
- XlcConv conv,
- XPointer *from,
- int *from_left,
- XPointer *to,
- int *to_left,
- XPointer *args,
- int num_args)
-{
- const char *inbufptr = *from;
- XPointer outbufptr = *to;
- const char *inbuf_base;
- XPointer outbuf_base = outbufptr;
- int clen, length;
- int unconv_num = 0;
- int num_conv;
- unsigned int ct_seglen = 0;
- Uchar ct_type;
- CTData ctdp = ctdata; /* default */
- CTData GL_ctdp = ctdp; /* GL ctdp save */
- CTData GR_ctdp = ctdp; /* GR ctdp save */
-
- if (*from_left > *to_left)
- *from_left = *to_left;
-
- for (length = ctdata[Ascii].length; *from_left > 0 ; (*from_left) -= length)
- {
- ct_type = CT_STD;
- /* change GL/GR charset */
- if(ctdp->side == XlcGR && isleftside(*inbufptr)){
- /* select GL side */
- ctdp = GL_ctdp;
- length = ctdp->length;
- ct_type = ctdp->ct_type;
- }else if(ctdp->side == XlcGL && isrightside(*inbufptr)){
- /* select GR side */
- ctdp = GR_ctdp;
- length = ctdp->length;
- ct_type = ctdp->ct_type;
- }
- if (*inbufptr == '\033' || *inbufptr == (char)'\233') {
-
- for (ctdp = ctdata; ctdp <= ctd_endp ; ctdp++) {
-
- if(!strncmp(inbufptr, ctdp->ct_encoding, ctdp->ct_encoding_len))
- {
- inbufptr += ctdp->ct_encoding_len;
- (*from_left) -= ctdp->ct_encoding_len;
- if( ctdp->length ) {
- length = ctdp->length;
- if( *from_left < length ) {
- *to = (XPointer)outbufptr;
- *to_left -= outbufptr - outbuf_base;
- return( unconv_num + *from_left );
- }
- }
- ct_type = ctdp->ct_type;
- if(ctdp->side == XlcGL){
- GL_ctdp = ctdp; /* save GL ctdp */
- }else{
- GR_ctdp = ctdp; /* save GR ctdp */
- }
- break;
- }
- }
- if (ctdp > ctd_endp) /* failed to match CT sequence */
- unconv_num++;
- }
-
-/* The following code insures that non-standard encodings, direction, extension,
- * and version strings are ignored; subject to change in future.
- */
- switch (ct_type) {
- case CT_STD:
- break;
- case CT_EXT2:
- inbufptr++;
- (*from_left)--;
- case CT_NSTD:
- ct_seglen = (BIT8OFF(*inbufptr) << 7) + BIT8OFF(*(inbufptr+1)) + 2;
- inbufptr += ct_seglen;
- (*from_left) -= ct_seglen;
- continue;
- case CT_EXT0:
- inbuf_base = inbufptr;
- SKIP_I(inbufptr);
- inbufptr++;
- ct_seglen = (unsigned)(inbufptr - inbuf_base);
- (*from_left) -= ct_seglen;
- continue;
- case CT_EXT1:
- inbuf_base = inbufptr;
- SKIP_P(inbufptr);
- SKIP_I(inbufptr);
- inbufptr++;
- ct_seglen = (unsigned)(inbufptr - inbuf_base);
- (*from_left) -= ct_seglen;
- continue;
- case CT_DIR:
- continue;
- case CT_VER:
- inbufptr += 2;
- (*from_left) -= 2;
- continue;
- }
-
- if (ctdp->side == XlcGL || isrightside (*inbufptr)) {
- clen = length;
- } else {
- clen = 1;
- *from_left += length - clen;
- }
- do {
- Uchar mask = (length == 2) ? GL : -1;
- *outbufptr++ = *inbufptr++ & mask;
- } while (--clen);
-
- if (length >= 2)
- jis_to_sjis((Uchar *)(outbufptr-2), (Uchar *)(outbufptr-1));
- }
-
- *to = (XPointer)outbufptr;
-
- if ((num_conv = (int)(outbufptr - outbuf_base)) > 0)
- (*to_left) -= num_conv;
-
- return unconv_num;
-}
-
-
-static int
-sjis_ctstowcs(
- XlcConv conv,
- XPointer *from,
- int *from_left,
- XPointer *to,
- int *to_left,
- XPointer *args,
- int num_args)
-{
- XLCd lcd = (XLCd)conv->state;
- Ulong wc_shift_bits = XLC_GENERIC(lcd, wc_shift_bits);
- const char *inbufptr = *from;
- const char *inbuf_base;
- wchar_t *outbufptr = (wchar_t *) *to;
- wchar_t *outbuf_base = outbufptr;
- int clen, length;
- int num_conv;
- int unconv_num = 0;
- unsigned int ct_seglen = 0;
- Uchar ct_type = 0;
- int shift_mult;
- wchar_t wc_tmp;
- wchar_t wch;
- Ulong wc_encoding;
- CTData ctdp = ctdata;
- CTData GL_ctdp = ctdp; /* GL ctdp save */
- CTData GR_ctdp = ctdp; /* GR ctdp save */
-
- if (*from_left > *to_left)
- *from_left = *to_left;
-
- for (length = ctdata[Ascii].length; *from_left > 0; (*from_left) -= length )
- {
- ct_type = CT_STD;
- /* change GL/GR charset */
- if(ctdp->side == XlcGR && isleftside(*inbufptr)){
- /* select GL side */
- ctdp = GL_ctdp;
- length = ctdp->length;
- ct_type = ctdp->ct_type;
- }else if(ctdp->side == XlcGL && isrightside(*inbufptr)){
- /* select GR side */
- ctdp = GR_ctdp;
- length = ctdp->length;
- ct_type = ctdp->ct_type;
- }
- if (*inbufptr == '\033' || *inbufptr == (char)'\233') {
- for (ctdp = ctdata; ctdp <= ctd_endp ; ctdp++) {
-
- if(!strncmp(inbufptr, ctdp->ct_encoding, ctdp->ct_encoding_len))
- {
- inbufptr += ctdp->ct_encoding_len;
- (*from_left) -= ctdp->ct_encoding_len;
- if( ctdp->length ) {
- length = ctdp->length;
- if( *from_left < length ) {
- *to = (XPointer)outbufptr;
- *to_left -= outbufptr - outbuf_base;
- return( unconv_num + *from_left );
- }
- }
- ct_type = ctdp->ct_type;
- if(ctdp->side == XlcGL){
- GL_ctdp = ctdp; /* save GL ctdp */
- }else{
- GR_ctdp = ctdp; /* save GR ctdp */
- }
- break;
- }
- }
- if (ctdp > ctd_endp) /* failed to match CT sequence */
- unconv_num++;
- }
-
-/* The following block of code insures that non-standard encodings, direction,
- * extension, and version strings are ignored; subject to change in future.
- */
- switch (ct_type) {
- case CT_STD:
- break;
- case CT_EXT2:
- inbufptr++;
- (*from_left)--;
- case CT_NSTD:
- ct_seglen = (BIT8OFF(*inbufptr) << 7) + BIT8OFF(*(inbufptr+1)) + 2;
- inbufptr += ct_seglen;
- (*from_left) -= ct_seglen;
- continue;
- case CT_EXT0:
- inbuf_base = inbufptr;
- SKIP_I(inbufptr);
- inbufptr++;
- ct_seglen = (unsigned)(inbufptr - inbuf_base);
- (*from_left) -= ct_seglen;
- continue;
- case CT_EXT1:
- inbuf_base = inbufptr;
- SKIP_P(inbufptr);
- SKIP_I(inbufptr);
- inbufptr++;
- ct_seglen = (unsigned)(inbufptr - inbuf_base);
- (*from_left) -= ct_seglen;
- continue;
- case CT_DIR:
- continue;
- case CT_VER:
- inbufptr += 2;
- (*from_left) -= 2;
- continue;
- }
-#if !defined(__sony_news) || defined(SVR4)
- if (ctdp->side == XlcGL || isrightside (*inbufptr)) {
- clen = length;
- wc_encoding = ctdp->wc_encoding;
- } else {
- clen = 1;
- *from_left += length - clen;
- wc_encoding = ctdptr[Ascii]->wc_encoding;
- }
- shift_mult = clen - 1;
- wch = (wchar_t)0;
-
- do {
- wc_tmp = BIT8OFF(*inbufptr++) << (wc_shift_bits * shift_mult);
- wch |= wc_tmp;
- shift_mult--;
- } while (--clen);
- *outbufptr++ = wch | wc_encoding;
-#else
- if( length == 1 )
- *outbufptr++ = (unsigned char)*inbufptr++;
- else if( length == 2 ) {
- unsigned short code;
- code = (*inbufptr << 8) | *(inbufptr+1);
- *outbufptr++ = jis2sjis( code );
- inbufptr += 2;
- }
-#endif
- }
- *to = (XPointer)outbufptr;
-
- if ((num_conv = (int)(outbufptr - outbuf_base)) > 0)
- (*to_left) -= num_conv ;
-
- return unconv_num;
-
-}
-#undef BADCHAR
-
-static void
-close_converter(
- XlcConv conv)
-{
- Xfree((char *) conv);
-}
-
-
-static XlcConv
-create_conv(
- XLCd lcd,
- XlcConvMethods methods)
-{
- XlcConv conv;
-
- conv = (XlcConv) Xmalloc(sizeof(XlcConvRec));
- if (conv == NULL)
- return (XlcConv) NULL;
-
- conv->methods = methods;
- conv->state = (XPointer) lcd;
- return conv;
-}
-
-
-enum { MBSTOCS, WCSTOCS, MBTOCS, CSTOMBS, CSTOWCS, MBSTOWCS, WCSTOMBS,
- WCSTOCTS, MBSTOCTS, CTSTOMBS, CTSTOWCS };
-
-static XlcConvMethodsRec conv_methods[] = {
- {close_converter, sjis_mbstocs, NULL },
- {close_converter, sjis_wcstocs, NULL },
- {close_converter, sjis_mbtocs, NULL },
- {close_converter, sjis_cstombs, NULL },
- {close_converter, sjis_cstowcs, NULL },
- {close_converter, sjis_mbstowcs, NULL },
- {close_converter, sjis_wcstombs, NULL },
- {close_converter, sjis_wcstocts, NULL },
- {close_converter, sjis_mbstocts, NULL },
- {close_converter, sjis_ctstombs, NULL },
- {close_converter, sjis_ctstowcs, NULL },
-};
-
-
-static XlcConv
-open_mbstocs(
- XLCd from_lcd,
- const char *from_type,
- XLCd to_lcd,
- const char *to_type)
-{
- return create_conv(from_lcd, &conv_methods[MBSTOCS]);
-}
-
-static XlcConv
-open_wcstocs(
- XLCd from_lcd,
- const char *from_type,
- XLCd to_lcd,
- const char *to_type)
-{
- return create_conv(from_lcd, &conv_methods[WCSTOCS]);
-}
-
-static XlcConv
-open_mbtocs(
- XLCd from_lcd,
- const char *from_type,
- XLCd to_lcd,
- const char *to_type)
-{
- return create_conv(from_lcd, &conv_methods[MBTOCS]);
-}
-
-static XlcConv
-open_cstombs(
- XLCd from_lcd,
- const char *from_type,
- XLCd to_lcd,
- const char *to_type)
-{
- return create_conv(from_lcd, &conv_methods[CSTOMBS]);
-}
-
-static XlcConv
-open_cstowcs(
- XLCd from_lcd,
- const char *from_type,
- XLCd to_lcd,
- const char *to_type)
-{
- return create_conv(from_lcd, &conv_methods[CSTOWCS]);
-}
-
-static XlcConv
-open_mbstowcs(
- XLCd from_lcd,
- const char *from_type,
- XLCd to_lcd,
- const char *to_type)
-{
- return create_conv(from_lcd, &conv_methods[MBSTOWCS]);
-}
-
-static XlcConv
-open_wcstombs(
- XLCd from_lcd,
- const char *from_type,
- XLCd to_lcd,
- const char *to_type)
-{
- return create_conv(from_lcd, &conv_methods[WCSTOMBS]);
-}
-
-static XlcConv
-open_wcstocts(
- XLCd from_lcd,
- const char *from_type,
- XLCd to_lcd,
- const char *to_type)
-{
- return create_conv(from_lcd, &conv_methods[WCSTOCTS]);
-}
-
-static XlcConv
-open_mbstocts(
- XLCd from_lcd,
- const char *from_type,
- XLCd to_lcd,
- const char *to_type)
-{
- return create_conv(from_lcd, &conv_methods[MBSTOCTS]);
-}
-
-static XlcConv
-open_ctstombs(
- XLCd from_lcd,
- const char *from_type,
- XLCd to_lcd,
- const char *to_type)
-{
- return create_conv(from_lcd, &conv_methods[CTSTOMBS]);
-}
-
-static XlcConv
-open_ctstowcs(
- XLCd from_lcd,
- const char *from_type,
- XLCd to_lcd,
- const char *to_type)
-{
- return create_conv(from_lcd, &conv_methods[CTSTOWCS]);
-}
-
-XLCd
-_XlcSjisLoader(
- const char *name)
-{
- XLCd lcd;
-
- lcd = _XlcCreateLC(name, _XlcGenericMethods);
- if (lcd == NULL)
- return lcd;
-
- if (!XLC_PUBLIC_PART(lcd)->codeset ||
- (_XlcCompareISOLatin1(XLC_PUBLIC_PART(lcd)->codeset, "SJIS"))) {
- _XlcDestroyLC(lcd);
- return (XLCd) NULL;
- }
-
- initCTptr(lcd);
-
- _XlcSetConverter(lcd, XlcNMultiByte, lcd, XlcNCharSet, open_mbstocs);
- _XlcSetConverter(lcd, XlcNWideChar, lcd, XlcNCharSet, open_wcstocs);
- _XlcSetConverter(lcd, XlcNCharSet, lcd, XlcNMultiByte, open_cstombs);
- _XlcSetConverter(lcd, XlcNCharSet, lcd, XlcNWideChar, open_cstowcs);
- _XlcSetConverter(lcd, XlcNMultiByte, lcd, XlcNChar, open_mbtocs);
-
-#ifndef FORCE_INDIRECT_CONVERTER
- _XlcSetConverter(lcd, XlcNCompoundText, lcd, XlcNMultiByte, open_ctstombs);
- _XlcSetConverter(lcd, XlcNCompoundText, lcd, XlcNWideChar, open_ctstowcs);
- _XlcSetConverter(lcd, XlcNMultiByte, lcd, XlcNCompoundText, open_mbstocts);
- _XlcSetConverter(lcd, XlcNMultiByte, lcd, XlcNWideChar, open_mbstowcs);
- _XlcSetConverter(lcd, XlcNWideChar, lcd, XlcNCompoundText, open_wcstocts);
- _XlcSetConverter(lcd, XlcNWideChar, lcd, XlcNMultiByte, open_wcstombs);
-#endif
-
- _XlcAddUtf8Converters(lcd);
-
- return lcd;
-}
-
-#else
-typedef int dummy;
-#endif /* X_LOCALE */
+/****************************************************************
+
+ Copyright 1992, 1993 by FUJITSU LIMITED
+ Copyright 1993 by Fujitsu Open Systems Solutions, Inc.
+ Copyright 1994 by Sony Corporation
+
+Permission to use, copy, modify, distribute and sell this software
+and its documentation for any purpose is hereby granted without fee,
+provided that the above copyright notice appear in all copies and
+that both that copyright notice and this permission notice appear
+in supporting documentation, and that the name of FUJITSU LIMITED,
+Fujitsu Open Systems Solutions, Inc. and Sony Corporation not be
+used in advertising or publicity pertaining to distribution of the
+software without specific, written prior permission.
+FUJITSU LIMITED, Fujitsu Open Systems Solutions, Inc. and
+Sony Corporation make no representations about the suitability of
+this software for any purpose. It is provided "as is" without
+express or implied warranty.
+
+FUJITSU LIMITED, FUJITSU OPEN SYSTEMS SOLUTIONS, INC. AND SONY
+CORPORATION DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
+INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS,
+IN NO EVENT SHALL FUJITSU OPEN SYSTEMS SOLUTIONS, INC., FUJITSU LIMITED
+AND SONY CORPORATION BE LIABLE FOR ANY SPECIAL, INDIRECT OR
+CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS
+OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
+OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE
+OR PERFORMANCE OF THIS SOFTWARE.
+
+ Authors: Jeffrey Bloomfield (jeffb@ossi.com)
+ Shigeru Yamada (yamada@ossi.com)
+ Yoshiyuki Segawa (segawa@ossi.com)
+ Modifier:Makoto Wakamatsu Sony Corporation
+ makoto@sm.sony.co.jp
+
+*****************************************************************/
+
+/*
+ * A Japanese SJIS locale.
+ * Supports: all locales with codeset SJIS.
+ * How: Provides converters for SJIS.
+ * Platforms: Only those defining X_LOCALE (only Lynx, Linux-libc5, OS/2).
+ */
+
+#ifdef X_LOCALE
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+#include "XlcGeneric.h"
+
+#include <ctype.h>
+#ifdef WIN32
+#define isascii __isascii
+#endif
+
+#define CS0 codesets[0] /* Codeset 0 - 7-bit ASCII */
+#define CS1 codesets[1] /* Codeset 1 - Kanji */
+#define CS2 codesets[2] /* Codeset 2 - Half-Kana */
+#define CS3 codesets[3] /* Codeset 3 - User defined */
+
+#define ascii (codeset->cs_num == 0)
+#define kanji (codeset->cs_num == 1)
+#define kana (codeset->cs_num == 2)
+#define userdef (codeset->cs_num == 3)
+
+#define ASCII_CODESET 0
+#define KANJI_CODESET 1
+#define KANA_CODESET 2
+#define USERDEF_CODESET 3
+#define MAX_CODESETS 4
+
+#define GR 0x80 /* begins right-side (non-ascii) region */
+#define GL 0x7f /* ends left-side (ascii) region */
+
+#define isleftside(c) (((c) & GR) ? 0 : 1)
+#define isrightside(c) (!isleftside(c))
+
+typedef unsigned char Uchar;
+typedef unsigned long Ulong;
+typedef unsigned int Uint;
+
+/* Acceptable range for 2nd byte of SJIS multibyte char */
+#define VALID_MULTIBYTE(c) \
+ ((0x40<=((Uchar)c) && ((Uchar)c)<=0x7e) \
+ || (0x80<=((Uchar)c) && ((Uchar)c)<=0xfc))
+
+#ifndef iskanji
+#define iskanji(c) ((0x81<=((Uchar)c) && ((Uchar)c)<=0x9f) \
+ || (0xe0<=((Uchar)c) && ((Uchar)c)<=0xef))
+#endif /* !iskanji */
+
+#ifndef iskana
+#define iskana(c) (0xa1<=((Uchar)c) && ((Uchar)c)<=0xdf)
+#endif /* !iskana */
+
+#define isuserdef(c) (0xf0<=((Uchar)c) && ((Uchar)c)<=0xfc)
+
+#define BIT8OFF(c) ((c) & GL)
+#define BIT8ON(c) ((c) | GR)
+
+
+static void jis_to_sjis (Uchar *p1, Uchar *p2);
+static void sjis_to_jis (Uchar *p1, Uchar *p2);
+static CodeSet wc_codeset (XLCd lcd, wchar_t wch);
+
+
+/*
+ * Notes:
+ * 1. 16-bit widechar format is limited to 14 data bits. Since the 2nd byte
+ * of SJIS multibyte chars are in the ranges of 0x40 - 7E and 0x80 - 0xFC,
+ * SJIS cannot map directly into 16 bit widechar format within the confines
+ * of a single codeset. Therefore, for SJIS widechar conversion, SJIS Kanji
+ * is mapped into the JIS codeset. (The algorithms used in jis_to_sjis()
+ * and sjis_to_jis() are from Ken Lunde (lunde@mv.us.adobe.com) and are in
+ * the public domain.)
+ * 2. Defining FORCE_INDIRECT_CONVERTER (see _XlcEucLoader())
+ * forces indirect (charset) conversions (e.g. wcstocs()<->cstombs()).
+ * 3. Using direct converters (e.g. mbstowcs()) decreases conversion
+ * times by 20-40% (depends on specific converter used).
+ */
+
+
+static int
+sjis_mbstowcs(
+ XlcConv conv,
+ XPointer *from,
+ int *from_left,
+ XPointer *to,
+ int *to_left,
+ XPointer *args,
+ int num_args)
+{
+
+ XLCd lcd = (XLCd)conv->state;
+
+ int chr_len = 0;
+ int shift_mult = 0;
+ Uint chrcode = 0;
+
+ Uchar ch, ch2;
+ Uint wc_encode = 0;
+ Uint wc_tmp = 0;
+
+ Bool new_char;
+
+ int firstbyte;
+ int length = 0;
+ int num_conv;
+ int unconv_num = 0;
+
+ const char *inbufptr = *from;
+ wchar_t *outbufptr = (wchar_t *) *to;
+ wchar_t *outbuf_base = outbufptr;
+
+ CodeSet *codesets = XLC_GENERIC(lcd, codeset_list);
+ int codeset_num = XLC_GENERIC(lcd, codeset_num);
+ Ulong wc_shift = XLC_GENERIC(lcd, wc_shift_bits);
+
+ if (*from_left > *to_left)
+ *from_left = *to_left;
+
+ for (new_char = True, firstbyte = True; *from_left > 0; (*from_left)--) {
+
+ ch = *inbufptr++;
+
+ if (firstbyte) {
+ if (ASCII_CODESET >= codeset_num) {
+ unconv_num++;
+ (*from_left)--;
+ continue;
+ }
+ if (isascii(ch)) {
+ length = CS0->length;
+ *outbufptr++ = (wchar_t)ch;
+ continue;
+ }
+ else if (iskanji(ch)) {
+ if (KANJI_CODESET >= codeset_num) {
+ unconv_num++;
+ (*from_left)--;
+ continue;
+ }
+ firstbyte = False;
+ length = CS1->length;
+ if (*from_left < length || *to_left < length)
+ return -1;
+ wc_encode = CS1->wc_encoding;
+ ch2 = *inbufptr;
+ sjis_to_jis(&ch, &ch2);
+ chrcode = ch;
+ }
+ else if (iskana(ch)) {
+ if (KANA_CODESET >= codeset_num) {
+ unconv_num++;
+ (*from_left)--;
+ continue;
+ }
+ length = CS2->length;
+ wc_encode = CS2->wc_encoding;
+ chrcode = BIT8OFF(ch);
+ }
+ else if (isuserdef(ch)) {
+ if (USERDEF_CODESET >= codeset_num) {
+ unconv_num++;
+ (*from_left)--;
+ continue;
+ }
+ firstbyte = False;
+ length = CS3->length;
+ if (*from_left < length || *to_left < length)
+ return -1;
+ wc_encode = CS3->wc_encoding;
+ ch2 = *inbufptr;
+ sjis_to_jis(&ch, &ch2);
+ chrcode = ch;
+ }
+ else /* unknown */ {
+ unconv_num++;
+ (*from_left)--;
+ continue;
+ }
+ } else { /* 2nd byte of multibyte char */
+ if (!VALID_MULTIBYTE((Uchar) *(inbufptr-1))) {
+ unconv_num++;
+ firstbyte = True;
+ }
+ chrcode = ch2;
+ }
+
+ if (new_char) {
+ chr_len = length;
+ shift_mult = length - 1;
+ new_char = False;
+ }
+
+ chrcode <<= (wc_shift * shift_mult);
+ shift_mult--;
+ wc_tmp |= chrcode;
+ if (--chr_len == 0) {
+ wc_tmp |= wc_encode;
+ *outbufptr++ = wc_tmp;
+
+ firstbyte = True;
+ new_char = True;
+ wc_tmp = (Uint)0;
+ }
+
+ } /* end for */
+
+ *to = (XPointer)outbufptr;
+
+ if ((num_conv = outbufptr - outbuf_base) > 0)
+ (*to_left) -= num_conv;
+
+ return unconv_num;
+}
+
+
+#define byte1 (length == codeset->length - 1)
+#define byte2 (byte1 == 0)
+
+static int
+sjis_wcstombs(
+ XlcConv conv,
+ XPointer *from,
+ int *from_left,
+ XPointer *to,
+ int *to_left,
+ XPointer *args,
+ int num_args)
+{
+ const wchar_t *inbufptr = (const wchar_t *) *from;
+ XPointer outbufptr = *to;
+ XPointer outbuf_base = outbufptr;
+ wchar_t wch;
+ int length;
+ Uchar tmp;
+ Uchar t1, t2;
+ int num_conv;
+ int unconv_num = 0;
+
+ XLCd lcd = (XLCd)conv->state;
+ CodeSet codeset;
+ Ulong wc_shift = XLC_GENERIC(lcd, wc_shift_bits);
+
+ if (*from_left > *to_left)
+ *from_left = *to_left;
+
+ for (; *from_left > 0 ; (*from_left)-- ) {
+
+ wch = *inbufptr++;
+
+ if (!(codeset = wc_codeset(lcd, wch))) {
+ unconv_num++;
+ (*from_left)--;
+ continue;
+ }
+
+ length = codeset->length;
+ wch ^= (wchar_t)codeset->wc_encoding;
+
+ do {
+ length--;
+ tmp = wch>>(wchar_t)( (Ulong)length * wc_shift);
+
+ if (kana)
+ tmp = BIT8ON(tmp);
+
+ else if (byte1 && (kanji || userdef)) {
+ t1 = BIT8OFF(tmp);
+ continue;
+ }
+
+ else if (byte2 && (kanji || userdef)) {
+ t2 = BIT8OFF(tmp);
+ jis_to_sjis(&t1, &t2);
+ *outbufptr++ = (char)t1;
+ tmp = t2;
+ }
+
+ *outbufptr++ = (char)tmp;
+ } while (length);
+
+ } /* end for */
+
+ *to = (XPointer)outbufptr;
+
+ if ((num_conv = (int)(outbufptr - outbuf_base)) > 0)
+ (*to_left) -= num_conv;
+
+ return unconv_num;
+}
+#undef byte1
+#undef byte2
+
+/*
+ * sjis<->jis conversion for widechar kanji (See Note at top of file)
+ */
+static void
+sjis_to_jis(
+ Uchar *p1,
+ Uchar *p2)
+{
+ Uchar c1 = *p1;
+ Uchar c2 = *p2;
+ Uchar adjust = c2 < 0x9f;
+ Uchar rowOffset = c1 < 0xa0 ? 0x70 : 0xb0;
+ Uchar cellOffset = adjust ? (0x1f + (c2 > 0x7f)) : 0x7e;
+
+ *p1 = ((c1 - rowOffset) << 1) - adjust;
+ *p2 -= cellOffset;
+}
+
+static void
+jis_to_sjis(
+ Uchar *p1,
+ Uchar *p2)
+{
+ Uchar c1 = *p1;
+ Uchar c2 = *p2;
+ Uchar rowOffset = c1 < 0x5f ? 0x70 : 0xb0;
+ Uchar cellOffset = c1 % 2 ? 0x1f + (c2 > 0x5f) : 0x7e;
+
+ *p1 = ((Uchar)(c1 + 1) >> 1) + rowOffset;
+ *p2 = c2 + cellOffset;
+}
+
+static CodeSet
+wc_codeset(
+ XLCd lcd,
+ wchar_t wch)
+{
+ CodeSet *codesets = XLC_GENERIC(lcd, codeset_list);
+#if !defined(__sony_news) || defined(SVR4)
+ int end = XLC_GENERIC(lcd, codeset_num);
+ Ulong widech = (Ulong)(wch & XLC_GENERIC(lcd, wc_encode_mask));
+
+ for (; --end >= 0; codesets++)
+ if ( widech == (*codesets)->wc_encoding )
+ return *codesets;
+
+ return NULL;
+#else
+ if( iskanji(wch >> 8) )
+ return( codesets[1] );
+ if( iskana(wch & 0xff) )
+ return( codesets[2] );
+ return( codesets[0] );
+#endif
+}
+
+
+static int
+sjis_mbtocs(
+ XlcConv conv,
+ XPointer *from,
+ int *from_left,
+ XPointer *to,
+ int *to_left,
+ XPointer *args,
+ int num_args)
+{
+ XLCd lcd = (XLCd)conv->state;
+ XlcCharSet charset = NULL;
+ int char_size = 0;
+ int unconv_num = 0;
+ const char *src = *from;
+ char *dst = *to;
+ CodeSet *codesets = XLC_GENERIC(lcd, codeset_list);
+ int codeset_num = XLC_GENERIC(lcd, codeset_num);
+
+ if (iskanji(*src)) {
+ if (KANJI_CODESET >= codeset_num)
+ return -1;
+ charset = *CS1->charset_list;
+ char_size = charset->char_size;
+
+ if (*from_left >= char_size && *to_left >= char_size) {
+ *dst++ = *src++;
+ *dst++ = *src++;
+ if (!VALID_MULTIBYTE((Uchar) *(src-1))) /* check 2nd byte */
+ unconv_num++;
+ sjis_to_jis((Uchar *)(dst-2), (Uchar *)(dst-1));
+ } else
+ return -1;
+ }
+ else if (isuserdef(*src)) {
+ if (USERDEF_CODESET >= codeset_num)
+ return -1;
+ charset = *CS3->charset_list;
+ char_size = charset->char_size;
+
+ if (*from_left >= char_size && *to_left >= char_size) {
+ *dst++ = *src++;
+ *dst++ = *src++;
+ if (!VALID_MULTIBYTE((Uchar) *(src-1))) /* check 2nd byte */
+ unconv_num++;
+ sjis_to_jis((Uchar *)(dst-2), (Uchar *)(dst-1));
+ } else
+ return -1;
+ }
+ else if (isascii(*src)) {
+ if (ASCII_CODESET >= codeset_num)
+ return -1;
+ charset = *CS0->charset_list;
+ char_size = charset->char_size;
+
+ if (*from_left >= char_size && *to_left >= char_size)
+ *dst++ = *src++;
+ else
+ return -1;
+ }
+ else if (iskana(*src)) {
+ if (KANA_CODESET >= codeset_num)
+ return -1;
+ charset = *CS2->charset_list;
+ char_size = charset->char_size;
+
+ if (*from_left >= char_size && *to_left >= char_size)
+ *dst++ = *src++;
+ else
+ return -1;
+ }
+ else /* unknown */
+ return -1;
+
+ *from_left -= char_size;
+ *to_left -= char_size;
+
+ *to = (XPointer) dst;
+ *from = (XPointer) src;
+
+ if (num_args > 0)
+ *((XlcCharSet *) args[0]) = charset;
+
+ return unconv_num;
+}
+
+
+static int
+sjis_mbstocs(
+ XlcConv conv,
+ XPointer *from,
+ int *from_left,
+ XPointer *to,
+ int *to_left,
+ XPointer *args,
+ int num_args)
+{
+ const char *tmp_from;
+ char *tmp_to;
+ int tmp_from_left, tmp_to_left;
+ XlcCharSet charset, tmp_charset;
+ XPointer tmp_args[1];
+ int unconv_num = 0, ret;
+
+/* Determine the charset of the segment and convert one character: */
+
+ tmp_args[0] = (XPointer) &charset; /* charset from sjis_mbtocs() */
+ while
+ ((ret = sjis_mbtocs(conv, from, from_left, to, to_left, tmp_args, 1)) > 0)
+ unconv_num += ret;
+ if ( ret < 0 )
+ return ret;
+
+ tmp_from = *from;
+ tmp_from_left = *from_left;
+ tmp_to_left = *to_left;
+ tmp_to = *to;
+
+/* Convert remainder of the segment: */
+
+ tmp_args[0] = (XPointer) &tmp_charset;
+ while( (ret = sjis_mbtocs(conv, (XPointer *) &tmp_from, &tmp_from_left,
+ (XPointer *) &tmp_to, &tmp_to_left, tmp_args, 1)) >= 0 ) {
+
+ if (ret > 0) {
+ unconv_num += ret;
+ continue;
+ }
+
+ if (tmp_charset != charset) /* quit on end of segment */
+ break;
+
+ *from = (XPointer) tmp_from;
+ *from_left = tmp_from_left;
+ *to = (XPointer) tmp_to;
+ *to_left = tmp_to_left;
+ }
+
+ if (num_args > 0)
+ *((XlcCharSet *) args[0]) = charset;
+
+ return unconv_num;
+}
+
+static int
+sjis_wcstocs(
+ XlcConv conv,
+ XPointer *from,
+ int *from_left,
+ XPointer *to,
+ int *to_left,
+ XPointer *args,
+ int num_args)
+{
+ XLCd lcd = (XLCd) conv->state;
+ const wchar_t *wcptr = *((const wchar_t **)from);
+ char *bufptr = *((char **) to);
+ wchar_t wch;
+ char *tmpptr;
+ int length;
+ CodeSet codeset;
+ Ulong wc_encoding;
+ int buf_len = *to_left;
+ int wcstr_len = *from_left;
+
+ if (!(codeset = wc_codeset(lcd, *wcptr)))
+ return -1;
+
+ if (wcstr_len < buf_len / codeset->length)
+ buf_len = wcstr_len * codeset->length;
+
+#if !defined(__sony_news) || defined(SVR4)
+ wc_encoding = codeset->wc_encoding;
+
+ for ( ; wcstr_len > 0 && buf_len > 0; wcptr++, wcstr_len--) {
+ wch = *wcptr;
+
+ if ((wch & XLC_GENERIC(lcd, wc_encode_mask)) != wc_encoding)
+ break;
+
+ length = codeset->length;
+
+ buf_len -= length;
+ bufptr += length;
+ tmpptr = bufptr - 1;
+
+ while (length--) {
+ *tmpptr-- = kana ? BIT8ON(wch) : BIT8OFF(wch);
+ wch >>= (wchar_t)XLC_GENERIC(lcd, wc_shift_bits);
+ }
+ }
+#else
+ length = codeset->length;
+ for( ; wcstr_len > 0 && buf_len > 0; wcptr++, wcstr_len-- ) {
+ wch = *wcptr;
+ if( codeset != wc_codeset( lcd, wch ) )
+ break;
+
+ buf_len -= length;
+ if( length == 2 ) {
+ unsigned short code;
+
+ code = sjis2jis( wch & 0xffff );
+ *bufptr++ = code >> 8;
+ *bufptr++ = code & 0xff;
+ }
+ else
+ *bufptr++ = wch & 0xff;
+ }
+#endif
+
+ if (num_args > 0)
+ *((XlcCharSet *) args[0]) = *codeset->charset_list;
+
+ *from_left -= wcptr - (wchar_t *) *from;
+ *from = (XPointer) wcptr;
+
+ *to_left -= bufptr - *to;
+ *to = bufptr;
+
+ return 0;
+}
+
+static CodeSet
+GetCodeSetFromCharSet(
+ XLCd lcd,
+ XlcCharSet charset)
+{
+ CodeSet *codeset = XLC_GENERIC(lcd, codeset_list);
+ XlcCharSet *charset_list;
+ int codeset_num, num_charsets;
+
+ codeset_num = XLC_GENERIC(lcd, codeset_num);
+
+ for ( ; codeset_num-- > 0; codeset++) {
+ num_charsets = (*codeset)->num_charsets;
+ charset_list = (*codeset)->charset_list;
+
+ for ( ; num_charsets-- > 0; charset_list++)
+ if (*charset_list == charset)
+ return *codeset;
+ }
+
+ return (CodeSet) NULL;
+}
+
+
+static int
+sjis_cstombs(
+ XlcConv conv,
+ char **from,
+ int *from_left,
+ char **to,
+ int *to_left,
+ XPointer *args,
+ int num_args)
+{
+ XLCd lcd = (XLCd) conv->state;
+ const char *csptr = *from;
+ char *bufptr = *to;
+ int csstr_len = *from_left;
+ int buf_len = *to_left;
+ int length;
+ CodeSet codeset;
+ int cvt_length = 0;
+
+ if (num_args < 1)
+ return -1;
+
+ if (!(codeset = GetCodeSetFromCharSet(lcd, (XlcCharSet) args[0])))
+ return -1;
+
+ csstr_len /= codeset->length;
+ buf_len /= codeset->length;
+ if (csstr_len < buf_len)
+ buf_len = csstr_len;
+
+ cvt_length += buf_len * codeset->length;
+
+ if (bufptr) {
+ while (buf_len--) {
+ length = codeset->length;
+ while (length--)
+ *bufptr++ = codeset->length == 1 && codeset->side == XlcGR ?
+ BIT8ON(*csptr++) : BIT8OFF(*csptr++);
+
+ if (codeset->length == 2)
+ jis_to_sjis((Uchar *)(bufptr-2), (Uchar *)(bufptr-1));
+ }
+ }
+
+ *from_left -= csptr - *from;
+ *from = (XPointer) csptr;
+
+ if (bufptr)
+ *to += cvt_length;
+ *to_left -= cvt_length;
+
+
+ return 0;
+}
+
+static int
+sjis_cstowcs(
+ XlcConv conv,
+ XPointer *from,
+ int *from_left,
+ XPointer *to,
+ int *to_left,
+ XPointer *args,
+ int num_args)
+{
+ XLCd lcd = (XLCd) conv->state;
+ const char *csptr = (const char *) *from;
+ wchar_t *bufptr = (wchar_t *) *to;
+ wchar_t *toptr = (wchar_t *) *to;
+ int csstr_len = *from_left;
+ int buf_len = *to_left;
+ wchar_t wch;
+ int length;
+ Ulong wc_shift_bits = (int)XLC_GENERIC(lcd, wc_shift_bits);
+ CodeSet codeset;
+
+ if (num_args < 1)
+ return -1;
+
+ if (!(codeset = GetCodeSetFromCharSet(lcd, (XlcCharSet) args[0])))
+ return -1;
+
+ csstr_len /= codeset->length;
+ if (csstr_len < buf_len)
+ buf_len = csstr_len;
+
+ *to_left -= buf_len;
+
+ if (bufptr) {
+
+ toptr += buf_len;
+ *to = (XPointer) toptr;
+
+ while (buf_len--) {
+ wch = (wchar_t) BIT8OFF(*csptr);
+ csptr++;
+
+ length = codeset->length - 1;
+ while (length--) {
+ wch = (wch << wc_shift_bits) | BIT8OFF(*csptr);
+ csptr++;
+ }
+ *bufptr++ = wch | codeset->wc_encoding;
+ }
+ }
+
+ *from_left -= csptr - *from;
+ *from = (XPointer) csptr;
+
+ return 0;
+}
+
+
+/*
+ * Stripped down Direct CT converters for SJIS
+ *
+ */
+
+#define BADCHAR(min_ch, c) (BIT8OFF(c) < (char)min_ch && BIT8OFF(c) != 0x0 && \
+ BIT8OFF(c) != '\t' && BIT8OFF(c) != '\n' && \
+ BIT8OFF(c) != 0x1b)
+
+typedef struct _CTDataRec {
+ int side;
+ int length;
+ char *name;
+ Ulong wc_encoding;
+ char *ct_encoding;
+ int ct_encoding_len;
+ int set_size;
+ Uchar min_ch;
+ Uchar ct_type;
+} CTDataRec, *CTData;
+
+typedef struct _StateRec {
+ CTData GL_charset;
+ CTData GR_charset;
+ CTData charset;
+} StateRec, *State;
+
+#define CT_STD 0
+#define CT_NSTD 1
+#define CT_DIR 2
+#define CT_EXT0 3
+#define CT_EXT1 4
+#define CT_EXT2 5
+#define CT_VER 6
+
+static CTDataRec ctdata[] =
+{
+ { XlcGL, 1, "ISO8859-1:GL", 0, "\033(B" , 3, 0, 0, CT_STD },
+ { XlcGR, 1, "ISO8859-1:GR", 0, "\033-A" , 3, 0, 0, CT_STD },
+ { XlcGL, 1, "JISX0201.1976-0:GL", 0, "\033(J" , 3, 0, 0, CT_STD },
+ { XlcGR, 1, "JISX0201.1976-0:GR", 0, "\033)I" , 3, 0, 0, CT_STD },
+ { XlcGL, 2, "JISX0208.1983-0:GL", 0, "\033$(B" , 4, 0, 0, CT_STD },
+ { XlcGR, 2, "JISX0208.1983-0:GR", 0, "\033$)B" , 4, 0, 0, CT_STD },
+ { XlcGL, 2, "JISX0212.1990-0:GL", 0, "\033$(D" , 4, 0, 0, CT_STD },
+ { XlcGR, 2, "JISX0212.1990-0:GR", 0, "\033$)D" , 4, 0, 0, CT_STD },
+ { XlcUnknown, 0, "Ignore-Ext-Status?", 0, "\033#" , 2, 0, 0, CT_VER },
+ { XlcUnknown, 0, "NonStd-?-OctetChar", 0, "\033%/0" , 4, 0, 0, CT_NSTD },
+ { XlcUnknown, 1, "NonStd-1-OctetChar", 0, "\033%/1" , 4, 0, 0, CT_NSTD },
+ { XlcUnknown, 2, "NonStd-2-OctetChar", 0, "\033%/2" , 4, 0, 0, CT_NSTD },
+ { XlcUnknown, 3, "NonStd-3-OctetChar", 0, "\033%/3" , 4, 0, 0, CT_NSTD },
+ { XlcUnknown, 4, "NonStd-4-OctetChar", 0, "\033%/4" , 4, 0, 0, CT_NSTD },
+ { XlcUnknown, 0, "Extension-2" , 0, "\033%/" , 3, 0, 0, CT_EXT2 },
+ { XlcUnknown, 0, "Extension-0" , 0, "\033" , 1, 0, 0, CT_EXT0 },
+ { XlcUnknown, 0, "Begin-L-to-R-Text", 0, "\2331]" , 3, 0, 0, CT_DIR },
+ { XlcUnknown, 0, "Begin-R-to-L-Text", 0, "\2332]" , 3, 0, 0, CT_DIR },
+ { XlcUnknown, 0, "End-Of-String", 0, "\233]" , 2, 0, 0, CT_DIR },
+ { XlcUnknown, 0, "Extension-1" , 0, "\233" , 1, 0, 0, CT_EXT1 },
+};
+
+/* Note on above table: sjis_ctstombs() and sjis_ctstowcs() parser depends on
+ * certain table entries occuring in decreasing string length--
+ * 1. CT_EXT2 and CT_EXT0 entries must occur after CT_NSTD entries.
+ * 2. CT_DIR and CT_EXT1 entries must occur after CT_DIR entries.
+ */
+
+static CTData ctdptr[sizeof(ctdata) / sizeof(CTDataRec)];
+static CTData ctd_endp = ctdata + ((sizeof(ctdata) / sizeof(CTDataRec))) - 1;
+
+#define Ascii 0
+#define Kanji 1
+#define Kana 2
+#define Userdef 3
+
+/*
+ * initCTptr(): Set ctptr[] to point at ctdata[], indexed by codeset_num.
+ */
+static void
+initCTptr(
+ XLCd lcd)
+{
+ int num_codesets = XLC_GENERIC(lcd, codeset_num);
+ int num_charsets;
+ int i, j;
+ CodeSet *codesets = XLC_GENERIC(lcd, codeset_list);
+ CodeSet codeset;
+ XlcCharSet charset;
+ CTData ctdp = ctdata;
+
+ ctdptr[Ascii] = &ctdata[0]; /* failsafe */
+
+ for (i = 0; i < num_codesets; i++) {
+
+ codeset = codesets[i];
+ num_charsets = codeset->num_charsets;
+
+ for (j = 0; j < num_charsets; j++) {
+
+ charset = codeset->charset_list[j];
+
+ for (ctdp = ctdata; ctdp <= ctd_endp; ctdp++)
+
+ if (! strcmp(ctdp->name, charset->name)) {
+
+ ctdptr[codeset->cs_num] = ctdp;
+
+ ctdptr[codeset->cs_num]->wc_encoding = codeset->wc_encoding;
+
+ ctdptr[codeset->cs_num]->set_size =
+ charset->set_size;
+
+ ctdptr[codeset->cs_num]->min_ch =
+ charset->set_size == 94 &&
+ (ctdptr[codeset->cs_num]->length > 1 ||
+ ctdptr[codeset->cs_num]->side == XlcGR) ? 0x21 : 0x20;
+
+ break;
+ }
+ }
+ }
+}
+
+
+static int
+sjis_mbstocts(
+ XlcConv conv,
+ XPointer *from,
+ int *from_left,
+ XPointer *to,
+ int *to_left,
+ XPointer *args,
+ int num_args)
+{
+ int ct_len = *to_left;
+ int cs_num;
+ int clen;
+ int unconv_num = 0;
+ int num_conv;
+ const char *inbufptr = *from;
+ char *ctptr = *to;
+ XPointer ct_base = ctptr;
+
+ StateRec ct_state;
+ CTData charset = NULL;
+ XLCd lcd = (XLCd) conv->state;
+ int codeset_num = XLC_GENERIC(lcd, codeset_num);
+
+/* Initial State: */
+
+ ct_state.GL_charset = ctdptr[Ascii];
+ ct_state.GR_charset = NULL;
+
+ if (*from_left > *to_left)
+ *from_left = *to_left;
+
+ for (;*from_left > 0; (*from_left) -= charset->length) {
+
+ if (iskanji(*inbufptr)) {
+ if (KANJI_CODESET >= codeset_num) {
+ unconv_num++;
+ (*from_left)--;
+ continue;
+ }
+ cs_num = Kanji;
+ charset = ctdptr[Kanji];
+ if (!VALID_MULTIBYTE((Uchar) *(inbufptr+1)))
+ unconv_num++;
+ }
+ else if (isuserdef(*inbufptr)) {
+ if (USERDEF_CODESET >= codeset_num) {
+ unconv_num++;
+ (*from_left)--;
+ continue;
+ }
+ cs_num = Userdef;
+ charset = ctdptr[Userdef];
+ if (!VALID_MULTIBYTE((Uchar) *(inbufptr+1)))
+ unconv_num++;
+ }
+ else if (isascii(*inbufptr)) {
+ if (ASCII_CODESET >= codeset_num) {
+ unconv_num++;
+ (*from_left)--;
+ continue;
+ }
+ cs_num = Ascii;
+ charset = ctdptr[Ascii];
+ }
+ else if (iskana(*inbufptr)) {
+ if (KANA_CODESET >= codeset_num) {
+ unconv_num++;
+ (*from_left)--;
+ continue;
+ }
+ cs_num = Kana;
+ charset = ctdptr[Kana];
+ }
+ else { /* unknown */
+ unconv_num++;
+ (*from_left)--;
+ continue;
+ }
+
+ if ( (charset->side == XlcGR && charset != ct_state.GR_charset) ||
+ (charset->side == XlcGL && charset != ct_state.GL_charset) ) {
+
+ ct_len -= ctdptr[cs_num]->ct_encoding_len;
+ if (ct_len < 0) {
+ unconv_num++;
+ break;
+ }
+
+ if (ctptr) {
+ strcpy(ctptr, ctdptr[cs_num]->ct_encoding);
+ ctptr += ctdptr[cs_num]->ct_encoding_len;
+ }
+ }
+
+ clen = charset->length;
+ do {
+ *ctptr++ = *inbufptr++;
+ } while (--clen);
+
+ if (charset->length >= 2) {
+ sjis_to_jis((Uchar *)(ctptr-2), (Uchar *)(ctptr-1));
+ if (BADCHAR(charset->min_ch, *(ctptr-2)) ||
+ BADCHAR(charset->min_ch, *(ctptr-1))) {
+ unconv_num++;
+ continue;
+ }
+ }
+ else
+ if (BADCHAR(charset->min_ch, *(ctptr-1))) {
+ unconv_num++;
+ continue;
+ }
+
+ if (charset->side == XlcGR)
+ ct_state.GR_charset = charset;
+ else if (charset->side == XlcGL)
+ ct_state.GL_charset = charset;
+
+ if (charset->side == XlcGR) {
+ clen = charset->length;
+ do {
+ (*(Uchar *)(ctptr-clen)) = BIT8ON(*(Uchar *)(ctptr-clen));
+ } while (--clen);
+ }
+ }
+
+ *to = (XPointer)ctptr;
+
+ if ((num_conv = (int)(ctptr - ct_base)) > 0)
+ (*to_left) -= num_conv;
+
+ return unconv_num;
+
+}
+
+
+#define byte1 (length == codeset->length - 1)
+#define byte2 (byte1 == 0)
+
+static int
+sjis_wcstocts(
+ XlcConv conv,
+ XPointer *from,
+ int *from_left,
+ XPointer *to,
+ int *to_left,
+ XPointer *args,
+ int num_args)
+{
+ int ct_len = *to_left;
+ const wchar_t *inbufptr = (const wchar_t *) *from;
+ char *ctptr = *to;
+ XPointer ct_base = ctptr;
+ wchar_t wch;
+ int length;
+ Uchar tmp;
+ Uchar t1 = 0;
+ int num_conv;
+
+ StateRec ct_state;
+ XLCd lcd = (XLCd)conv->state;
+ CTData charset;
+ CodeSet codeset;
+ int unconv_num = 0;
+ Ulong wc_shift = XLC_GENERIC(lcd, wc_shift_bits);
+
+/* Initial State: */
+ ct_state.GL_charset = ctdptr[0]; /* Codeset 0 */
+ ct_state.GR_charset = NULL;
+
+ if (*from_left > *to_left)
+ *from_left = *to_left;
+
+ for (; *from_left > 0 ; (*from_left)-- ) {
+
+ wch = *inbufptr++;
+
+ if (!(codeset = wc_codeset(lcd, wch))) {
+ unconv_num++;
+ (*from_left)--;
+ continue;
+ }
+
+ charset = ctdptr[codeset->cs_num];
+
+ length = codeset->length;
+ wch ^= (wchar_t)codeset->wc_encoding;
+
+ if ( (charset->side == XlcGR && charset != ct_state.GR_charset) ||
+ (charset->side == XlcGL && charset != ct_state.GL_charset) ) {
+
+ ct_len -= ctdptr[codeset->cs_num]->ct_encoding_len;
+ if (ct_len < 0) {
+ unconv_num++;
+ break;
+ }
+
+ if (ctptr) {
+ strcpy(ctptr, ctdptr[codeset->cs_num]->ct_encoding);
+ ctptr += ctdptr[codeset->cs_num]->ct_encoding_len;
+ }
+
+ }
+
+ if (charset->side == XlcGR)
+ ct_state.GR_charset = charset;
+ else if (charset->side == XlcGL)
+ ct_state.GL_charset = charset;
+
+ do {
+ length--;
+ tmp = wch>>(wchar_t)( (Ulong)length * wc_shift);
+
+ if (kana) {
+ if (BADCHAR(charset->min_ch, (char)tmp)) {
+ unconv_num++;
+ break;
+ }
+ *ctptr++ = (char)BIT8ON(tmp);
+ }
+
+ else if (byte1 && (kanji || userdef)) {
+ t1 = tmp;
+ }
+
+ else if (byte2 && (kanji || userdef)) {
+ if (BADCHAR(charset->min_ch, (char)t1) ||
+ BADCHAR(charset->min_ch, (char)tmp)) {
+ unconv_num++;
+ break;
+ }
+
+ *ctptr++ = (char)BIT8OFF(t1);
+ *ctptr++ = (char)BIT8OFF(tmp);
+ }
+
+ else {
+ if (BADCHAR(charset->min_ch, (char)tmp)) {
+ unconv_num++;
+ break;
+ }
+ *ctptr++ = (char)tmp;
+ }
+ } while (length);
+
+ } /* end for */
+
+ *to = (XPointer)ctptr;
+
+ if ((num_conv = (int)(ctptr - ct_base)) > 0)
+ (*to_left) -= num_conv;
+
+ return unconv_num;
+}
+#undef byte1
+#undef byte2
+
+#define SKIP_I(str) while (*(str) >= 0x20 && *(str) <= 0x2f) (str)++;
+#define SKIP_P(str) while (*(str) >= 0x30 && *(str) <= 0x3f) (str)++;
+
+static int
+sjis_ctstombs(
+ XlcConv conv,
+ XPointer *from,
+ int *from_left,
+ XPointer *to,
+ int *to_left,
+ XPointer *args,
+ int num_args)
+{
+ const char *inbufptr = *from;
+ XPointer outbufptr = *to;
+ const char *inbuf_base;
+ XPointer outbuf_base = outbufptr;
+ int clen, length;
+ int unconv_num = 0;
+ int num_conv;
+ unsigned int ct_seglen = 0;
+ Uchar ct_type;
+ CTData ctdp = ctdata; /* default */
+ CTData GL_ctdp = ctdp; /* GL ctdp save */
+ CTData GR_ctdp = ctdp; /* GR ctdp save */
+
+ if (*from_left > *to_left)
+ *from_left = *to_left;
+
+ for (length = ctdata[Ascii].length; *from_left > 0 ; (*from_left) -= length)
+ {
+ ct_type = CT_STD;
+ /* change GL/GR charset */
+ if(ctdp->side == XlcGR && isleftside(*inbufptr)){
+ /* select GL side */
+ ctdp = GL_ctdp;
+ length = ctdp->length;
+ ct_type = ctdp->ct_type;
+ }else if(ctdp->side == XlcGL && isrightside(*inbufptr)){
+ /* select GR side */
+ ctdp = GR_ctdp;
+ length = ctdp->length;
+ ct_type = ctdp->ct_type;
+ }
+ if (*inbufptr == '\033' || *inbufptr == (char)'\233') {
+
+ for (ctdp = ctdata; ctdp <= ctd_endp ; ctdp++) {
+
+ if(!strncmp(inbufptr, ctdp->ct_encoding, ctdp->ct_encoding_len))
+ {
+ inbufptr += ctdp->ct_encoding_len;
+ (*from_left) -= ctdp->ct_encoding_len;
+ if( ctdp->length ) {
+ length = ctdp->length;
+ if( *from_left < length ) {
+ *to = (XPointer)outbufptr;
+ *to_left -= outbufptr - outbuf_base;
+ return( unconv_num + *from_left );
+ }
+ }
+ ct_type = ctdp->ct_type;
+ if(ctdp->side == XlcGL){
+ GL_ctdp = ctdp; /* save GL ctdp */
+ }else{
+ GR_ctdp = ctdp; /* save GR ctdp */
+ }
+ break;
+ }
+ }
+ if (ctdp > ctd_endp) /* failed to match CT sequence */
+ unconv_num++;
+ }
+
+/* The following code insures that non-standard encodings, direction, extension,
+ * and version strings are ignored; subject to change in future.
+ */
+ switch (ct_type) {
+ case CT_STD:
+ break;
+ case CT_EXT2:
+ inbufptr++;
+ (*from_left)--;
+ case CT_NSTD:
+ ct_seglen = (BIT8OFF(*inbufptr) << 7) + BIT8OFF(*(inbufptr+1)) + 2;
+ inbufptr += ct_seglen;
+ (*from_left) -= ct_seglen;
+ continue;
+ case CT_EXT0:
+ inbuf_base = inbufptr;
+ SKIP_I(inbufptr);
+ inbufptr++;
+ ct_seglen = (unsigned)(inbufptr - inbuf_base);
+ (*from_left) -= ct_seglen;
+ continue;
+ case CT_EXT1:
+ inbuf_base = inbufptr;
+ SKIP_P(inbufptr);
+ SKIP_I(inbufptr);
+ inbufptr++;
+ ct_seglen = (unsigned)(inbufptr - inbuf_base);
+ (*from_left) -= ct_seglen;
+ continue;
+ case CT_DIR:
+ continue;
+ case CT_VER:
+ inbufptr += 2;
+ (*from_left) -= 2;
+ continue;
+ }
+
+ if (ctdp->side == XlcGL || isrightside (*inbufptr)) {
+ clen = length;
+ } else {
+ clen = 1;
+ *from_left += length - clen;
+ }
+ do {
+ Uchar mask = (length == 2) ? GL : -1;
+ *outbufptr++ = *inbufptr++ & mask;
+ } while (--clen);
+
+ if (length >= 2)
+ jis_to_sjis((Uchar *)(outbufptr-2), (Uchar *)(outbufptr-1));
+ }
+
+ *to = (XPointer)outbufptr;
+
+ if ((num_conv = (int)(outbufptr - outbuf_base)) > 0)
+ (*to_left) -= num_conv;
+
+ return unconv_num;
+}
+
+
+static int
+sjis_ctstowcs(
+ XlcConv conv,
+ XPointer *from,
+ int *from_left,
+ XPointer *to,
+ int *to_left,
+ XPointer *args,
+ int num_args)
+{
+ XLCd lcd = (XLCd)conv->state;
+ Ulong wc_shift_bits = XLC_GENERIC(lcd, wc_shift_bits);
+ const char *inbufptr = *from;
+ const char *inbuf_base;
+ wchar_t *outbufptr = (wchar_t *) *to;
+ wchar_t *outbuf_base = outbufptr;
+ int clen, length;
+ int num_conv;
+ int unconv_num = 0;
+ unsigned int ct_seglen = 0;
+ Uchar ct_type = 0;
+ int shift_mult;
+ wchar_t wc_tmp;
+ wchar_t wch;
+ Ulong wc_encoding;
+ CTData ctdp = ctdata;
+ CTData GL_ctdp = ctdp; /* GL ctdp save */
+ CTData GR_ctdp = ctdp; /* GR ctdp save */
+
+ if (*from_left > *to_left)
+ *from_left = *to_left;
+
+ for (length = ctdata[Ascii].length; *from_left > 0; (*from_left) -= length )
+ {
+ ct_type = CT_STD;
+ /* change GL/GR charset */
+ if(ctdp->side == XlcGR && isleftside(*inbufptr)){
+ /* select GL side */
+ ctdp = GL_ctdp;
+ length = ctdp->length;
+ ct_type = ctdp->ct_type;
+ }else if(ctdp->side == XlcGL && isrightside(*inbufptr)){
+ /* select GR side */
+ ctdp = GR_ctdp;
+ length = ctdp->length;
+ ct_type = ctdp->ct_type;
+ }
+ if (*inbufptr == '\033' || *inbufptr == (char)'\233') {
+ for (ctdp = ctdata; ctdp <= ctd_endp ; ctdp++) {
+
+ if(!strncmp(inbufptr, ctdp->ct_encoding, ctdp->ct_encoding_len))
+ {
+ inbufptr += ctdp->ct_encoding_len;
+ (*from_left) -= ctdp->ct_encoding_len;
+ if( ctdp->length ) {
+ length = ctdp->length;
+ if( *from_left < length ) {
+ *to = (XPointer)outbufptr;
+ *to_left -= outbufptr - outbuf_base;
+ return( unconv_num + *from_left );
+ }
+ }
+ ct_type = ctdp->ct_type;
+ if(ctdp->side == XlcGL){
+ GL_ctdp = ctdp; /* save GL ctdp */
+ }else{
+ GR_ctdp = ctdp; /* save GR ctdp */
+ }
+ break;
+ }
+ }
+ if (ctdp > ctd_endp) /* failed to match CT sequence */
+ unconv_num++;
+ }
+
+/* The following block of code insures that non-standard encodings, direction,
+ * extension, and version strings are ignored; subject to change in future.
+ */
+ switch (ct_type) {
+ case CT_STD:
+ break;
+ case CT_EXT2:
+ inbufptr++;
+ (*from_left)--;
+ case CT_NSTD:
+ ct_seglen = (BIT8OFF(*inbufptr) << 7) + BIT8OFF(*(inbufptr+1)) + 2;
+ inbufptr += ct_seglen;
+ (*from_left) -= ct_seglen;
+ continue;
+ case CT_EXT0:
+ inbuf_base = inbufptr;
+ SKIP_I(inbufptr);
+ inbufptr++;
+ ct_seglen = (unsigned)(inbufptr - inbuf_base);
+ (*from_left) -= ct_seglen;
+ continue;
+ case CT_EXT1:
+ inbuf_base = inbufptr;
+ SKIP_P(inbufptr);
+ SKIP_I(inbufptr);
+ inbufptr++;
+ ct_seglen = (unsigned)(inbufptr - inbuf_base);
+ (*from_left) -= ct_seglen;
+ continue;
+ case CT_DIR:
+ continue;
+ case CT_VER:
+ inbufptr += 2;
+ (*from_left) -= 2;
+ continue;
+ }
+#if !defined(__sony_news) || defined(SVR4)
+ if (ctdp->side == XlcGL || isrightside (*inbufptr)) {
+ clen = length;
+ wc_encoding = ctdp->wc_encoding;
+ } else {
+ clen = 1;
+ *from_left += length - clen;
+ wc_encoding = ctdptr[Ascii]->wc_encoding;
+ }
+ shift_mult = clen - 1;
+ wch = (wchar_t)0;
+
+ do {
+ wc_tmp = BIT8OFF(*inbufptr++) << (wc_shift_bits * shift_mult);
+ wch |= wc_tmp;
+ shift_mult--;
+ } while (--clen);
+ *outbufptr++ = wch | wc_encoding;
+#else
+ if( length == 1 )
+ *outbufptr++ = (unsigned char)*inbufptr++;
+ else if( length == 2 ) {
+ unsigned short code;
+ code = (*inbufptr << 8) | *(inbufptr+1);
+ *outbufptr++ = jis2sjis( code );
+ inbufptr += 2;
+ }
+#endif
+ }
+ *to = (XPointer)outbufptr;
+
+ if ((num_conv = (int)(outbufptr - outbuf_base)) > 0)
+ (*to_left) -= num_conv ;
+
+ return unconv_num;
+
+}
+#undef BADCHAR
+
+static void
+close_converter(
+ XlcConv conv)
+{
+ Xfree((char *) conv);
+}
+
+
+static XlcConv
+create_conv(
+ XLCd lcd,
+ XlcConvMethods methods)
+{
+ XlcConv conv;
+
+ conv = (XlcConv) Xmalloc(sizeof(XlcConvRec));
+ if (conv == NULL)
+ return (XlcConv) NULL;
+
+ conv->methods = methods;
+ conv->state = (XPointer) lcd;
+ return conv;
+}
+
+
+enum { MBSTOCS, WCSTOCS, MBTOCS, CSTOMBS, CSTOWCS, MBSTOWCS, WCSTOMBS,
+ WCSTOCTS, MBSTOCTS, CTSTOMBS, CTSTOWCS };
+
+static XlcConvMethodsRec conv_methods[] = {
+ {close_converter, sjis_mbstocs, NULL },
+ {close_converter, sjis_wcstocs, NULL },
+ {close_converter, sjis_mbtocs, NULL },
+ {close_converter, sjis_cstombs, NULL },
+ {close_converter, sjis_cstowcs, NULL },
+ {close_converter, sjis_mbstowcs, NULL },
+ {close_converter, sjis_wcstombs, NULL },
+ {close_converter, sjis_wcstocts, NULL },
+ {close_converter, sjis_mbstocts, NULL },
+ {close_converter, sjis_ctstombs, NULL },
+ {close_converter, sjis_ctstowcs, NULL },
+};
+
+
+static XlcConv
+open_mbstocs(
+ XLCd from_lcd,
+ const char *from_type,
+ XLCd to_lcd,
+ const char *to_type)
+{
+ return create_conv(from_lcd, &conv_methods[MBSTOCS]);
+}
+
+static XlcConv
+open_wcstocs(
+ XLCd from_lcd,
+ const char *from_type,
+ XLCd to_lcd,
+ const char *to_type)
+{
+ return create_conv(from_lcd, &conv_methods[WCSTOCS]);
+}
+
+static XlcConv
+open_mbtocs(
+ XLCd from_lcd,
+ const char *from_type,
+ XLCd to_lcd,
+ const char *to_type)
+{
+ return create_conv(from_lcd, &conv_methods[MBTOCS]);
+}
+
+static XlcConv
+open_cstombs(
+ XLCd from_lcd,
+ const char *from_type,
+ XLCd to_lcd,
+ const char *to_type)
+{
+ return create_conv(from_lcd, &conv_methods[CSTOMBS]);
+}
+
+static XlcConv
+open_cstowcs(
+ XLCd from_lcd,
+ const char *from_type,
+ XLCd to_lcd,
+ const char *to_type)
+{
+ return create_conv(from_lcd, &conv_methods[CSTOWCS]);
+}
+
+static XlcConv
+open_mbstowcs(
+ XLCd from_lcd,
+ const char *from_type,
+ XLCd to_lcd,
+ const char *to_type)
+{
+ return create_conv(from_lcd, &conv_methods[MBSTOWCS]);
+}
+
+static XlcConv
+open_wcstombs(
+ XLCd from_lcd,
+ const char *from_type,
+ XLCd to_lcd,
+ const char *to_type)
+{
+ return create_conv(from_lcd, &conv_methods[WCSTOMBS]);
+}
+
+static XlcConv
+open_wcstocts(
+ XLCd from_lcd,
+ const char *from_type,
+ XLCd to_lcd,
+ const char *to_type)
+{
+ return create_conv(from_lcd, &conv_methods[WCSTOCTS]);
+}
+
+static XlcConv
+open_mbstocts(
+ XLCd from_lcd,
+ const char *from_type,
+ XLCd to_lcd,
+ const char *to_type)
+{
+ return create_conv(from_lcd, &conv_methods[MBSTOCTS]);
+}
+
+static XlcConv
+open_ctstombs(
+ XLCd from_lcd,
+ const char *from_type,
+ XLCd to_lcd,
+ const char *to_type)
+{
+ return create_conv(from_lcd, &conv_methods[CTSTOMBS]);
+}
+
+static XlcConv
+open_ctstowcs(
+ XLCd from_lcd,
+ const char *from_type,
+ XLCd to_lcd,
+ const char *to_type)
+{
+ return create_conv(from_lcd, &conv_methods[CTSTOWCS]);
+}
+
+XLCd
+_XlcSjisLoader(
+ const char *name)
+{
+ XLCd lcd;
+
+ lcd = _XlcCreateLC(name, _XlcGenericMethods);
+ if (lcd == NULL)
+ return lcd;
+
+ if (!XLC_PUBLIC_PART(lcd)->codeset ||
+ (_XlcCompareISOLatin1(XLC_PUBLIC_PART(lcd)->codeset, "SJIS"))) {
+ _XlcDestroyLC(lcd);
+ return (XLCd) NULL;
+ }
+
+ initCTptr(lcd);
+
+ _XlcSetConverter(lcd, XlcNMultiByte, lcd, XlcNCharSet, open_mbstocs);
+ _XlcSetConverter(lcd, XlcNWideChar, lcd, XlcNCharSet, open_wcstocs);
+ _XlcSetConverter(lcd, XlcNCharSet, lcd, XlcNMultiByte, open_cstombs);
+ _XlcSetConverter(lcd, XlcNCharSet, lcd, XlcNWideChar, open_cstowcs);
+ _XlcSetConverter(lcd, XlcNMultiByte, lcd, XlcNChar, open_mbtocs);
+
+#ifndef FORCE_INDIRECT_CONVERTER
+ _XlcSetConverter(lcd, XlcNCompoundText, lcd, XlcNMultiByte, open_ctstombs);
+ _XlcSetConverter(lcd, XlcNCompoundText, lcd, XlcNWideChar, open_ctstowcs);
+ _XlcSetConverter(lcd, XlcNMultiByte, lcd, XlcNCompoundText, open_mbstocts);
+ _XlcSetConverter(lcd, XlcNMultiByte, lcd, XlcNWideChar, open_mbstowcs);
+ _XlcSetConverter(lcd, XlcNWideChar, lcd, XlcNCompoundText, open_wcstocts);
+ _XlcSetConverter(lcd, XlcNWideChar, lcd, XlcNMultiByte, open_wcstombs);
+#endif
+
+ _XlcAddUtf8Converters(lcd);
+
+ return lcd;
+}
+
+#else
+typedef int dummy;
+#endif /* X_LOCALE */
diff --git a/libX11/modules/om/Makefile.am b/libX11/modules/om/Makefile.am
index cb22f5a42..24f4c06a2 100644
--- a/libX11/modules/om/Makefile.am
+++ b/libX11/modules/om/Makefile.am
@@ -1 +1 @@
-SUBDIRS=generic
+SUBDIRS=generic
diff --git a/libX11/modules/om/generic/Makefile.am b/libX11/modules/om/generic/Makefile.am
index 435a0aa66..4a10b38c4 100644
--- a/libX11/modules/om/generic/Makefile.am
+++ b/libX11/modules/om/generic/Makefile.am
@@ -1,42 +1,42 @@
-AM_CPPFLAGS= \
- -I$(top_srcdir)/include \
- -I$(top_srcdir)/include/X11 \
- -I$(top_builddir)/include \
- -I$(top_builddir)/include/X11 \
- -I$(top_srcdir)/src/xcms \
- -I$(top_srcdir)/src/xkb \
- -I$(top_srcdir)/src/xlibi18n \
- -I$(top_srcdir)/src \
- -D_BSD_SOURCE
-
-AM_CFLAGS= \
- $(X11_CFLAGS) \
- $(BIGFONT_CFLAGS) \
- $(MALLOC_ZERO_CFLAGS) \
- $(CWARNFLAGS)
-
-if XLIB_LOADABLE_I18N
-
-commonlibdir = $(X11_LOCALELIBDIR)/common
-commonlib_LTLIBRARIES=xomGeneric.la
-xomGeneric_la_LDFLAGS = -module -version-number 2:0:0
-xomGeneric_la_LIBADD = $(I18N_MODULE_LIBS)
-
-else
-
-noinst_LTLIBRARIES = libxomGeneric.la
-
-endif
-
-
-xomGeneric_la_SOURCES = \
- omDefault.c \
- omGeneric.c \
- omImText.c \
- omText.c \
- omTextEsc.c \
- omTextExt.c \
- omTextPer.c \
- omXChar.c
-
-libxomGeneric_la_SOURCES = $(xomGeneric_la_SOURCES)
+AM_CPPFLAGS= \
+ -I$(top_srcdir)/include \
+ -I$(top_srcdir)/include/X11 \
+ -I$(top_builddir)/include \
+ -I$(top_builddir)/include/X11 \
+ -I$(top_srcdir)/src/xcms \
+ -I$(top_srcdir)/src/xkb \
+ -I$(top_srcdir)/src/xlibi18n \
+ -I$(top_srcdir)/src \
+ -D_BSD_SOURCE
+
+AM_CFLAGS= \
+ $(X11_CFLAGS) \
+ $(BIGFONT_CFLAGS) \
+ $(MALLOC_ZERO_CFLAGS) \
+ $(CWARNFLAGS)
+
+if XLIB_LOADABLE_I18N
+
+commonlibdir = $(X11_LOCALELIBDIR)/common
+commonlib_LTLIBRARIES=xomGeneric.la
+xomGeneric_la_LDFLAGS = -module -version-number 2:0:0
+xomGeneric_la_LIBADD = $(I18N_MODULE_LIBS)
+
+else
+
+noinst_LTLIBRARIES = libxomGeneric.la
+
+endif
+
+
+xomGeneric_la_SOURCES = \
+ omDefault.c \
+ omGeneric.c \
+ omImText.c \
+ omText.c \
+ omTextEsc.c \
+ omTextExt.c \
+ omTextPer.c \
+ omXChar.c
+
+libxomGeneric_la_SOURCES = $(xomGeneric_la_SOURCES)
diff --git a/libX11/modules/om/generic/omDefault.c b/libX11/modules/om/generic/omDefault.c
index 3f867ba65..322690fa0 100644
--- a/libX11/modules/om/generic/omDefault.c
+++ b/libX11/modules/om/generic/omDefault.c
@@ -1,449 +1,449 @@
-/*
- * Copyright 1992, 1993 by TOSHIBA Corp.
- *
- * Permission to use, copy, modify, and distribute this software and its
- * documentation for any purpose and without fee is hereby granted, provided
- * that the above copyright notice appear in all copies and that both that
- * copyright notice and this permission notice appear in supporting
- * documentation, and that the name of TOSHIBA not be used in advertising
- * or publicity pertaining to distribution of the software without specific,
- * written prior permission. TOSHIBA make no representations about the
- * suitability of this software for any purpose. It is provided "as is"
- * without express or implied warranty.
- *
- * TOSHIBA DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
- * ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
- * TOSHIBA BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
- * ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
- * WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
- * ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
- * SOFTWARE.
- *
- * Author: Katsuhisa Yano TOSHIBA Corp.
- * mopi@osa.ilab.toshiba.co.jp
- */
-/*
- * (c) Copyright 1995 FUJITSU LIMITED
- * This is source code modified by FUJITSU LIMITED under the Joint
- * Development Agreement for the CDE/Motif PST.
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-#include "XomGeneric.h"
-#include <X11/Xos.h>
-#include <X11/Xatom.h>
-#include <stdio.h>
-
-#define DefineLocalBuf char local_buf[BUFSIZ]
-#define AllocLocalBuf(length) (length > BUFSIZ ? (char *)Xmalloc(length) : local_buf)
-#define FreeLocalBuf(ptr) if (ptr != local_buf) Xfree(ptr)
-
-static Bool
-wcs_to_mbs(
- XOC oc,
- char *to,
- _Xconst wchar_t *from,
- int length)
-{
- XlcConv conv;
- int to_left, ret;
-
- conv = _XomInitConverter(oc, XOMWideChar);
- if (conv == NULL)
- return False;
-
- to_left = length;
- ret = _XlcConvert(conv, (XPointer *) &from, &length, (XPointer *) &to,
- &to_left, NULL, 0);
- if (ret != 0 || length > 0)
- return False;
-
- return True;
-}
-
-static Bool
-utf8_to_mbs(
- XOC oc,
- char *to,
- _Xconst char *from,
- int length)
-{
- XlcConv conv;
- int to_left, ret;
-
- conv = _XomInitConverter(oc, XOMUtf8String);
- if (conv == NULL)
- return False;
-
- to_left = length;
- ret = _XlcConvert(conv, (XPointer *) &from, &length, (XPointer *) &to,
- &to_left, NULL, 0);
- if (ret != 0 || length > 0)
- return False;
-
- return True;
-}
-
-int
-_XmbDefaultTextEscapement(XOC oc, _Xconst char *text, int length)
-{
- return XTextWidth(*oc->core.font_info.font_struct_list, text, length);
-}
-
-int
-_XwcDefaultTextEscapement(XOC oc, _Xconst wchar_t *text, int length)
-{
- DefineLocalBuf;
- char *buf = AllocLocalBuf(length);
- int ret;
-
- if (buf == NULL)
- return 0;
-
- if (wcs_to_mbs(oc, buf, text, length) == False) {
- ret = 0;
- goto err;
- }
-
- ret = _XmbDefaultTextEscapement(oc, buf, length);
-
-err:
- FreeLocalBuf(buf);
-
- return ret;
-}
-
-int
-_Xutf8DefaultTextEscapement(XOC oc, _Xconst char *text, int length)
-{
- DefineLocalBuf;
- char *buf = AllocLocalBuf(length);
- int ret;
-
- if (buf == NULL)
- return 0;
-
- if (utf8_to_mbs(oc, buf, text, length) == False) {
- ret = 0;
- goto err;
- }
-
- ret = _XmbDefaultTextEscapement(oc, buf, length);
-
-err:
- FreeLocalBuf(buf);
-
- return ret;
-}
-
-int
-_XmbDefaultTextExtents(XOC oc, _Xconst char *text, int length,
- XRectangle *overall_ink, XRectangle *overall_logical)
-{
- int direction, logical_ascent, logical_descent;
- XCharStruct overall;
-
- XTextExtents(*oc->core.font_info.font_struct_list, text, length, &direction,
- &logical_ascent, &logical_descent, &overall);
-
- if (overall_ink) {
- overall_ink->x = overall.lbearing;
- overall_ink->y = -(overall.ascent);
- overall_ink->width = overall.rbearing - overall.lbearing;
- overall_ink->height = overall.ascent + overall.descent;
- }
-
- if (overall_logical) {
- overall_logical->x = 0;
- overall_logical->y = -(logical_ascent);
- overall_logical->width = overall.width;
- overall_logical->height = logical_ascent + logical_descent;
- }
-
- return overall.width;
-}
-
-int
-_XwcDefaultTextExtents(XOC oc, _Xconst wchar_t *text, int length,
- XRectangle *overall_ink, XRectangle *overall_logical)
-{
- DefineLocalBuf;
- char *buf = AllocLocalBuf(length);
- int ret;
-
- if (buf == NULL)
- return 0;
-
- if (wcs_to_mbs(oc, buf, text, length) == False) {
- ret = 0;
- goto err;
- }
-
- ret = _XmbDefaultTextExtents(oc, buf, length, overall_ink, overall_logical);
-
-err:
- FreeLocalBuf(buf);
-
- return ret;
-}
-
-int
-_Xutf8DefaultTextExtents(XOC oc, _Xconst char *text, int length,
- XRectangle *overall_ink, XRectangle *overall_logical)
-{
- DefineLocalBuf;
- char *buf = AllocLocalBuf(length);
- int ret;
-
- if (buf == NULL)
- return 0;
-
- if (utf8_to_mbs(oc, buf, text, length) == False) {
- ret = 0;
- goto err;
- }
-
- ret = _XmbDefaultTextExtents(oc, buf, length, overall_ink, overall_logical);
-
-err:
- FreeLocalBuf(buf);
-
- return ret;
-}
-
-Status
-_XmbDefaultTextPerCharExtents(XOC oc, _Xconst char *text, int length,
- XRectangle *ink_buf, XRectangle *logical_buf,
- int buf_size, int *num_chars,
- XRectangle *overall_ink,
- XRectangle *overall_logical)
-{
- XFontStruct *font = *oc->core.font_info.font_struct_list;
- XCharStruct *def, *cs, overall;
- Bool first = True;
-
- if (buf_size < length)
- return 0;
-
- bzero((char *) &overall, sizeof(XCharStruct));
- *num_chars = 0;
-
- CI_GET_DEFAULT_INFO_1D(font, def)
-
- while (length-- > 0) {
- CI_GET_CHAR_INFO_1D(font, *text, def, cs)
- text++;
- if (cs == NULL)
- continue;
-
- ink_buf->x = overall.width + cs->lbearing;
- ink_buf->y = -(cs->ascent);
- ink_buf->width = cs->rbearing - cs->lbearing;
- ink_buf->height = cs->ascent + cs->descent;
- ink_buf++;
-
- logical_buf->x = overall.width;
- logical_buf->y = -(font->ascent);
- logical_buf->width = cs->width;
- logical_buf->height = font->ascent + font->descent;
- logical_buf++;
-
- if (first) {
- overall = *cs;
- first = False;
- } else {
- overall.ascent = max(overall.ascent, cs->ascent);
- overall.descent = max(overall.descent, cs->descent);
- overall.lbearing = min(overall.lbearing, overall.width +
- cs->lbearing);
- overall.rbearing = max(overall.rbearing, overall.width +
- cs->rbearing);
- overall.width += cs->width;
- }
-
- (*num_chars)++;
- }
-
- if (overall_ink) {
- overall_ink->x = overall.lbearing;
- overall_ink->y = -(overall.ascent);
- overall_ink->width = overall.rbearing - overall.lbearing;
- overall_ink->height = overall.ascent + overall.descent;
- }
-
- if (overall_logical) {
- overall_logical->x = 0;
- overall_logical->y = -(font->ascent);
- overall_logical->width = overall.width;
- overall_logical->height = font->ascent + font->descent;
- }
-
- return 1;
-}
-
-Status
-_XwcDefaultTextPerCharExtents(XOC oc, _Xconst wchar_t *text, int length,
- XRectangle *ink_buf, XRectangle *logical_buf,
- int buf_size, int *num_chars,
- XRectangle *overall_ink,
- XRectangle *overall_logical)
-{
- DefineLocalBuf;
- char *buf = AllocLocalBuf(length);
- Status ret;
-
- if (buf == NULL)
- return 0;
-
- if (wcs_to_mbs(oc, buf, text, length) == False) {
- ret = 0;
- goto err;
- }
-
- ret = _XmbDefaultTextPerCharExtents(oc, buf, length, ink_buf, logical_buf,
- buf_size, num_chars, overall_ink,
- overall_logical);
-
-err:
- FreeLocalBuf(buf);
-
- return ret;
-}
-
-Status
-_Xutf8DefaultTextPerCharExtents(XOC oc, _Xconst char *text, int length,
- XRectangle *ink_buf, XRectangle *logical_buf,
- int buf_size, int *num_chars,
- XRectangle *overall_ink,
- XRectangle *overall_logical)
-{
- DefineLocalBuf;
- char *buf = AllocLocalBuf(length);
- Status ret;
-
- if (buf == NULL)
- return 0;
-
- if (utf8_to_mbs(oc, buf, text, length) == False) {
- ret = 0;
- goto err;
- }
-
- ret = _XmbDefaultTextPerCharExtents(oc, buf, length, ink_buf, logical_buf,
- buf_size, num_chars, overall_ink,
- overall_logical);
-
-err:
- FreeLocalBuf(buf);
-
- return ret;
-}
-
-int
-_XmbDefaultDrawString(Display *dpy, Drawable d, XOC oc, GC gc, int x, int y,
- _Xconst char *text, int length)
-{
- XFontStruct *font = *oc->core.font_info.font_struct_list;
-
- XSetFont(dpy, gc, font->fid);
- XDrawString(dpy, d, gc, x, y, text, length);
-
- return XTextWidth(font, text, length);
-}
-
-int
-_XwcDefaultDrawString(Display *dpy, Drawable d, XOC oc, GC gc, int x, int y,
- _Xconst wchar_t *text, int length)
-{
- DefineLocalBuf;
- char *buf = AllocLocalBuf(length);
- int ret;
-
- if (buf == NULL)
- return 0;
-
- if (wcs_to_mbs(oc, buf, text, length) == False) {
- ret = 0;
- goto err;
- }
-
- ret = _XmbDefaultDrawString(dpy, d, oc, gc, x, y, buf, length);
-
-err:
- FreeLocalBuf(buf);
-
- return ret;
-}
-
-int
-_Xutf8DefaultDrawString(Display *dpy, Drawable d, XOC oc, GC gc, int x, int y,
- _Xconst char *text, int length)
-{
- DefineLocalBuf;
- char *buf = AllocLocalBuf(length);
- int ret;
-
- if (buf == NULL)
- return 0;
-
- if (utf8_to_mbs(oc, buf, text, length) == False) {
- ret = 0;
- goto err;
- }
-
- ret = _XmbDefaultDrawString(dpy, d, oc, gc, x, y, buf, length);
-
-err:
- FreeLocalBuf(buf);
-
- return ret;
-}
-
-void
-_XmbDefaultDrawImageString(Display *dpy, Drawable d, XOC oc, GC gc, int x,
- int y, _Xconst char *text, int length)
-{
- XSetFont(dpy, gc, (*oc->core.font_info.font_struct_list)->fid);
- XDrawImageString(dpy, d, gc, x, y, text, length);
-}
-
-void
-_XwcDefaultDrawImageString(Display *dpy, Drawable d, XOC oc, GC gc, int x,
- int y, _Xconst wchar_t *text, int length)
-{
- DefineLocalBuf;
- char *buf = AllocLocalBuf(length);
-
- if (buf == NULL)
- return;
-
- if (wcs_to_mbs(oc, buf, text, length) == False)
- goto err;
-
- _XmbDefaultDrawImageString(dpy, d, oc, gc, x, y, buf, length);
-
-err:
- FreeLocalBuf(buf);
-}
-
-void
-_Xutf8DefaultDrawImageString(Display *dpy, Drawable d, XOC oc, GC gc, int x,
- int y, _Xconst char *text, int length)
-{
- DefineLocalBuf;
- char *buf = AllocLocalBuf(length);
-
- if (buf == NULL)
- return;
-
- if (utf8_to_mbs(oc, buf, text, length) == False)
- goto err;
-
- _XmbDefaultDrawImageString(dpy, d, oc, gc, x, y, buf, length);
-
-err:
- FreeLocalBuf(buf);
-}
+/*
+ * Copyright 1992, 1993 by TOSHIBA Corp.
+ *
+ * Permission to use, copy, modify, and distribute this software and its
+ * documentation for any purpose and without fee is hereby granted, provided
+ * that the above copyright notice appear in all copies and that both that
+ * copyright notice and this permission notice appear in supporting
+ * documentation, and that the name of TOSHIBA not be used in advertising
+ * or publicity pertaining to distribution of the software without specific,
+ * written prior permission. TOSHIBA make no representations about the
+ * suitability of this software for any purpose. It is provided "as is"
+ * without express or implied warranty.
+ *
+ * TOSHIBA DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
+ * ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
+ * TOSHIBA BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
+ * ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
+ * WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
+ * ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
+ * SOFTWARE.
+ *
+ * Author: Katsuhisa Yano TOSHIBA Corp.
+ * mopi@osa.ilab.toshiba.co.jp
+ */
+/*
+ * (c) Copyright 1995 FUJITSU LIMITED
+ * This is source code modified by FUJITSU LIMITED under the Joint
+ * Development Agreement for the CDE/Motif PST.
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+#include "XomGeneric.h"
+#include <X11/Xos.h>
+#include <X11/Xatom.h>
+#include <stdio.h>
+
+#define DefineLocalBuf char local_buf[BUFSIZ]
+#define AllocLocalBuf(length) (length > BUFSIZ ? (char *)Xmalloc(length) : local_buf)
+#define FreeLocalBuf(ptr) if (ptr != local_buf) Xfree(ptr)
+
+static Bool
+wcs_to_mbs(
+ XOC oc,
+ char *to,
+ _Xconst wchar_t *from,
+ int length)
+{
+ XlcConv conv;
+ int to_left, ret;
+
+ conv = _XomInitConverter(oc, XOMWideChar);
+ if (conv == NULL)
+ return False;
+
+ to_left = length;
+ ret = _XlcConvert(conv, (XPointer *) &from, &length, (XPointer *) &to,
+ &to_left, NULL, 0);
+ if (ret != 0 || length > 0)
+ return False;
+
+ return True;
+}
+
+static Bool
+utf8_to_mbs(
+ XOC oc,
+ char *to,
+ _Xconst char *from,
+ int length)
+{
+ XlcConv conv;
+ int to_left, ret;
+
+ conv = _XomInitConverter(oc, XOMUtf8String);
+ if (conv == NULL)
+ return False;
+
+ to_left = length;
+ ret = _XlcConvert(conv, (XPointer *) &from, &length, (XPointer *) &to,
+ &to_left, NULL, 0);
+ if (ret != 0 || length > 0)
+ return False;
+
+ return True;
+}
+
+int
+_XmbDefaultTextEscapement(XOC oc, _Xconst char *text, int length)
+{
+ return XTextWidth(*oc->core.font_info.font_struct_list, text, length);
+}
+
+int
+_XwcDefaultTextEscapement(XOC oc, _Xconst wchar_t *text, int length)
+{
+ DefineLocalBuf;
+ char *buf = AllocLocalBuf(length);
+ int ret;
+
+ if (buf == NULL)
+ return 0;
+
+ if (wcs_to_mbs(oc, buf, text, length) == False) {
+ ret = 0;
+ goto err;
+ }
+
+ ret = _XmbDefaultTextEscapement(oc, buf, length);
+
+err:
+ FreeLocalBuf(buf);
+
+ return ret;
+}
+
+int
+_Xutf8DefaultTextEscapement(XOC oc, _Xconst char *text, int length)
+{
+ DefineLocalBuf;
+ char *buf = AllocLocalBuf(length);
+ int ret;
+
+ if (buf == NULL)
+ return 0;
+
+ if (utf8_to_mbs(oc, buf, text, length) == False) {
+ ret = 0;
+ goto err;
+ }
+
+ ret = _XmbDefaultTextEscapement(oc, buf, length);
+
+err:
+ FreeLocalBuf(buf);
+
+ return ret;
+}
+
+int
+_XmbDefaultTextExtents(XOC oc, _Xconst char *text, int length,
+ XRectangle *overall_ink, XRectangle *overall_logical)
+{
+ int direction, logical_ascent, logical_descent;
+ XCharStruct overall;
+
+ XTextExtents(*oc->core.font_info.font_struct_list, text, length, &direction,
+ &logical_ascent, &logical_descent, &overall);
+
+ if (overall_ink) {
+ overall_ink->x = overall.lbearing;
+ overall_ink->y = -(overall.ascent);
+ overall_ink->width = overall.rbearing - overall.lbearing;
+ overall_ink->height = overall.ascent + overall.descent;
+ }
+
+ if (overall_logical) {
+ overall_logical->x = 0;
+ overall_logical->y = -(logical_ascent);
+ overall_logical->width = overall.width;
+ overall_logical->height = logical_ascent + logical_descent;
+ }
+
+ return overall.width;
+}
+
+int
+_XwcDefaultTextExtents(XOC oc, _Xconst wchar_t *text, int length,
+ XRectangle *overall_ink, XRectangle *overall_logical)
+{
+ DefineLocalBuf;
+ char *buf = AllocLocalBuf(length);
+ int ret;
+
+ if (buf == NULL)
+ return 0;
+
+ if (wcs_to_mbs(oc, buf, text, length) == False) {
+ ret = 0;
+ goto err;
+ }
+
+ ret = _XmbDefaultTextExtents(oc, buf, length, overall_ink, overall_logical);
+
+err:
+ FreeLocalBuf(buf);
+
+ return ret;
+}
+
+int
+_Xutf8DefaultTextExtents(XOC oc, _Xconst char *text, int length,
+ XRectangle *overall_ink, XRectangle *overall_logical)
+{
+ DefineLocalBuf;
+ char *buf = AllocLocalBuf(length);
+ int ret;
+
+ if (buf == NULL)
+ return 0;
+
+ if (utf8_to_mbs(oc, buf, text, length) == False) {
+ ret = 0;
+ goto err;
+ }
+
+ ret = _XmbDefaultTextExtents(oc, buf, length, overall_ink, overall_logical);
+
+err:
+ FreeLocalBuf(buf);
+
+ return ret;
+}
+
+Status
+_XmbDefaultTextPerCharExtents(XOC oc, _Xconst char *text, int length,
+ XRectangle *ink_buf, XRectangle *logical_buf,
+ int buf_size, int *num_chars,
+ XRectangle *overall_ink,
+ XRectangle *overall_logical)
+{
+ XFontStruct *font = *oc->core.font_info.font_struct_list;
+ XCharStruct *def, *cs, overall;
+ Bool first = True;
+
+ if (buf_size < length)
+ return 0;
+
+ bzero((char *) &overall, sizeof(XCharStruct));
+ *num_chars = 0;
+
+ CI_GET_DEFAULT_INFO_1D(font, def)
+
+ while (length-- > 0) {
+ CI_GET_CHAR_INFO_1D(font, *text, def, cs)
+ text++;
+ if (cs == NULL)
+ continue;
+
+ ink_buf->x = overall.width + cs->lbearing;
+ ink_buf->y = -(cs->ascent);
+ ink_buf->width = cs->rbearing - cs->lbearing;
+ ink_buf->height = cs->ascent + cs->descent;
+ ink_buf++;
+
+ logical_buf->x = overall.width;
+ logical_buf->y = -(font->ascent);
+ logical_buf->width = cs->width;
+ logical_buf->height = font->ascent + font->descent;
+ logical_buf++;
+
+ if (first) {
+ overall = *cs;
+ first = False;
+ } else {
+ overall.ascent = max(overall.ascent, cs->ascent);
+ overall.descent = max(overall.descent, cs->descent);
+ overall.lbearing = min(overall.lbearing, overall.width +
+ cs->lbearing);
+ overall.rbearing = max(overall.rbearing, overall.width +
+ cs->rbearing);
+ overall.width += cs->width;
+ }
+
+ (*num_chars)++;
+ }
+
+ if (overall_ink) {
+ overall_ink->x = overall.lbearing;
+ overall_ink->y = -(overall.ascent);
+ overall_ink->width = overall.rbearing - overall.lbearing;
+ overall_ink->height = overall.ascent + overall.descent;
+ }
+
+ if (overall_logical) {
+ overall_logical->x = 0;
+ overall_logical->y = -(font->ascent);
+ overall_logical->width = overall.width;
+ overall_logical->height = font->ascent + font->descent;
+ }
+
+ return 1;
+}
+
+Status
+_XwcDefaultTextPerCharExtents(XOC oc, _Xconst wchar_t *text, int length,
+ XRectangle *ink_buf, XRectangle *logical_buf,
+ int buf_size, int *num_chars,
+ XRectangle *overall_ink,
+ XRectangle *overall_logical)
+{
+ DefineLocalBuf;
+ char *buf = AllocLocalBuf(length);
+ Status ret;
+
+ if (buf == NULL)
+ return 0;
+
+ if (wcs_to_mbs(oc, buf, text, length) == False) {
+ ret = 0;
+ goto err;
+ }
+
+ ret = _XmbDefaultTextPerCharExtents(oc, buf, length, ink_buf, logical_buf,
+ buf_size, num_chars, overall_ink,
+ overall_logical);
+
+err:
+ FreeLocalBuf(buf);
+
+ return ret;
+}
+
+Status
+_Xutf8DefaultTextPerCharExtents(XOC oc, _Xconst char *text, int length,
+ XRectangle *ink_buf, XRectangle *logical_buf,
+ int buf_size, int *num_chars,
+ XRectangle *overall_ink,
+ XRectangle *overall_logical)
+{
+ DefineLocalBuf;
+ char *buf = AllocLocalBuf(length);
+ Status ret;
+
+ if (buf == NULL)
+ return 0;
+
+ if (utf8_to_mbs(oc, buf, text, length) == False) {
+ ret = 0;
+ goto err;
+ }
+
+ ret = _XmbDefaultTextPerCharExtents(oc, buf, length, ink_buf, logical_buf,
+ buf_size, num_chars, overall_ink,
+ overall_logical);
+
+err:
+ FreeLocalBuf(buf);
+
+ return ret;
+}
+
+int
+_XmbDefaultDrawString(Display *dpy, Drawable d, XOC oc, GC gc, int x, int y,
+ _Xconst char *text, int length)
+{
+ XFontStruct *font = *oc->core.font_info.font_struct_list;
+
+ XSetFont(dpy, gc, font->fid);
+ XDrawString(dpy, d, gc, x, y, text, length);
+
+ return XTextWidth(font, text, length);
+}
+
+int
+_XwcDefaultDrawString(Display *dpy, Drawable d, XOC oc, GC gc, int x, int y,
+ _Xconst wchar_t *text, int length)
+{
+ DefineLocalBuf;
+ char *buf = AllocLocalBuf(length);
+ int ret;
+
+ if (buf == NULL)
+ return 0;
+
+ if (wcs_to_mbs(oc, buf, text, length) == False) {
+ ret = 0;
+ goto err;
+ }
+
+ ret = _XmbDefaultDrawString(dpy, d, oc, gc, x, y, buf, length);
+
+err:
+ FreeLocalBuf(buf);
+
+ return ret;
+}
+
+int
+_Xutf8DefaultDrawString(Display *dpy, Drawable d, XOC oc, GC gc, int x, int y,
+ _Xconst char *text, int length)
+{
+ DefineLocalBuf;
+ char *buf = AllocLocalBuf(length);
+ int ret;
+
+ if (buf == NULL)
+ return 0;
+
+ if (utf8_to_mbs(oc, buf, text, length) == False) {
+ ret = 0;
+ goto err;
+ }
+
+ ret = _XmbDefaultDrawString(dpy, d, oc, gc, x, y, buf, length);
+
+err:
+ FreeLocalBuf(buf);
+
+ return ret;
+}
+
+void
+_XmbDefaultDrawImageString(Display *dpy, Drawable d, XOC oc, GC gc, int x,
+ int y, _Xconst char *text, int length)
+{
+ XSetFont(dpy, gc, (*oc->core.font_info.font_struct_list)->fid);
+ XDrawImageString(dpy, d, gc, x, y, text, length);
+}
+
+void
+_XwcDefaultDrawImageString(Display *dpy, Drawable d, XOC oc, GC gc, int x,
+ int y, _Xconst wchar_t *text, int length)
+{
+ DefineLocalBuf;
+ char *buf = AllocLocalBuf(length);
+
+ if (buf == NULL)
+ return;
+
+ if (wcs_to_mbs(oc, buf, text, length) == False)
+ goto err;
+
+ _XmbDefaultDrawImageString(dpy, d, oc, gc, x, y, buf, length);
+
+err:
+ FreeLocalBuf(buf);
+}
+
+void
+_Xutf8DefaultDrawImageString(Display *dpy, Drawable d, XOC oc, GC gc, int x,
+ int y, _Xconst char *text, int length)
+{
+ DefineLocalBuf;
+ char *buf = AllocLocalBuf(length);
+
+ if (buf == NULL)
+ return;
+
+ if (utf8_to_mbs(oc, buf, text, length) == False)
+ goto err;
+
+ _XmbDefaultDrawImageString(dpy, d, oc, gc, x, y, buf, length);
+
+err:
+ FreeLocalBuf(buf);
+}
diff --git a/libX11/modules/om/generic/omImText.c b/libX11/modules/om/generic/omImText.c
index 68086ff76..1bc08bc25 100644
--- a/libX11/modules/om/generic/omImText.c
+++ b/libX11/modules/om/generic/omImText.c
@@ -1,90 +1,90 @@
-/*
- * Copyright 1992, 1993 by TOSHIBA Corp.
- *
- * Permission to use, copy, modify, and distribute this software and its
- * documentation for any purpose and without fee is hereby granted, provided
- * that the above copyright notice appear in all copies and that both that
- * copyright notice and this permission notice appear in supporting
- * documentation, and that the name of TOSHIBA not be used in advertising
- * or publicity pertaining to distribution of the software without specific,
- * written prior permission. TOSHIBA make no representations about the
- * suitability of this software for any purpose. It is provided "as is"
- * without express or implied warranty.
- *
- * TOSHIBA DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
- * ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
- * TOSHIBA BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
- * ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
- * WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
- * ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
- * SOFTWARE.
- *
- * Author: Katsuhisa Yano TOSHIBA Corp.
- * mopi@osa.ilab.toshiba.co.jp
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-#include "XomGeneric.h"
-
-#if 0
-extern int _XomGenericTextExtents(), _XomGenericDrawString();
-#endif
-
-#define GET_VALUE_MASK (GCFunction | GCForeground | GCBackground | GCFillStyle)
-#define SET_VALUE_MASK (GCFunction | GCForeground | GCFillStyle)
-
-static void
-_XomGenericDrawImageString(
- Display *dpy,
- Drawable d,
- XOC oc,
- GC gc,
- int x, int y,
- XOMTextType type,
- XPointer text,
- int length)
-{
- XGCValues values;
- XRectangle extent;
-
- XGetGCValues(dpy, gc, GET_VALUE_MASK, &values);
-
- XSetFunction(dpy, gc, GXcopy);
- XSetForeground(dpy, gc, values.background);
- XSetFillStyle(dpy, gc, FillSolid);
-
- _XomGenericTextExtents(oc, type, text, length, 0, &extent);
- XFillRectangle(dpy, d, gc, x + extent.x, y + extent.y, extent.width,
- extent.height);
-
- XChangeGC(dpy, gc, SET_VALUE_MASK, &values);
-
- _XomGenericDrawString(dpy, d, oc, gc, x, y, type, text, length);
-}
-
-void
-_XmbGenericDrawImageString(Display *dpy, Drawable d, XOC oc, GC gc, int x,
- int y, _Xconst char *text, int length)
-{
- _XomGenericDrawImageString(dpy, d, oc, gc, x, y, XOMMultiByte,
- (XPointer) text, length);
-}
-
-void
-_XwcGenericDrawImageString(Display *dpy, Drawable d, XOC oc, GC gc, int x,
- int y, _Xconst wchar_t *text, int length)
-{
- _XomGenericDrawImageString(dpy, d, oc, gc, x, y, XOMWideChar,
- (XPointer) text, length);
-}
-
-void
-_Xutf8GenericDrawImageString(Display *dpy, Drawable d, XOC oc, GC gc, int x,
- int y, _Xconst char *text, int length)
-{
- _XomGenericDrawImageString(dpy, d, oc, gc, x, y, XOMUtf8String,
- (XPointer) text, length);
-}
+/*
+ * Copyright 1992, 1993 by TOSHIBA Corp.
+ *
+ * Permission to use, copy, modify, and distribute this software and its
+ * documentation for any purpose and without fee is hereby granted, provided
+ * that the above copyright notice appear in all copies and that both that
+ * copyright notice and this permission notice appear in supporting
+ * documentation, and that the name of TOSHIBA not be used in advertising
+ * or publicity pertaining to distribution of the software without specific,
+ * written prior permission. TOSHIBA make no representations about the
+ * suitability of this software for any purpose. It is provided "as is"
+ * without express or implied warranty.
+ *
+ * TOSHIBA DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
+ * ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
+ * TOSHIBA BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
+ * ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
+ * WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
+ * ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
+ * SOFTWARE.
+ *
+ * Author: Katsuhisa Yano TOSHIBA Corp.
+ * mopi@osa.ilab.toshiba.co.jp
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+#include "XomGeneric.h"
+
+#if 0
+extern int _XomGenericTextExtents(), _XomGenericDrawString();
+#endif
+
+#define GET_VALUE_MASK (GCFunction | GCForeground | GCBackground | GCFillStyle)
+#define SET_VALUE_MASK (GCFunction | GCForeground | GCFillStyle)
+
+static void
+_XomGenericDrawImageString(
+ Display *dpy,
+ Drawable d,
+ XOC oc,
+ GC gc,
+ int x, int y,
+ XOMTextType type,
+ XPointer text,
+ int length)
+{
+ XGCValues values;
+ XRectangle extent;
+
+ XGetGCValues(dpy, gc, GET_VALUE_MASK, &values);
+
+ XSetFunction(dpy, gc, GXcopy);
+ XSetForeground(dpy, gc, values.background);
+ XSetFillStyle(dpy, gc, FillSolid);
+
+ _XomGenericTextExtents(oc, type, text, length, 0, &extent);
+ XFillRectangle(dpy, d, gc, x + extent.x, y + extent.y, extent.width,
+ extent.height);
+
+ XChangeGC(dpy, gc, SET_VALUE_MASK, &values);
+
+ _XomGenericDrawString(dpy, d, oc, gc, x, y, type, text, length);
+}
+
+void
+_XmbGenericDrawImageString(Display *dpy, Drawable d, XOC oc, GC gc, int x,
+ int y, _Xconst char *text, int length)
+{
+ _XomGenericDrawImageString(dpy, d, oc, gc, x, y, XOMMultiByte,
+ (XPointer) text, length);
+}
+
+void
+_XwcGenericDrawImageString(Display *dpy, Drawable d, XOC oc, GC gc, int x,
+ int y, _Xconst wchar_t *text, int length)
+{
+ _XomGenericDrawImageString(dpy, d, oc, gc, x, y, XOMWideChar,
+ (XPointer) text, length);
+}
+
+void
+_Xutf8GenericDrawImageString(Display *dpy, Drawable d, XOC oc, GC gc, int x,
+ int y, _Xconst char *text, int length)
+{
+ _XomGenericDrawImageString(dpy, d, oc, gc, x, y, XOMUtf8String,
+ (XPointer) text, length);
+}
diff --git a/libX11/modules/om/generic/omText.c b/libX11/modules/om/generic/omText.c
index fd957d491..bfceca96e 100644
--- a/libX11/modules/om/generic/omText.c
+++ b/libX11/modules/om/generic/omText.c
@@ -1,370 +1,370 @@
-/*
- * Copyright 1992, 1993 by TOSHIBA Corp.
- *
- * Permission to use, copy, modify, and distribute this software and its
- * documentation for any purpose and without fee is hereby granted, provided
- * that the above copyright notice appear in all copies and that both that
- * copyright notice and this permission notice appear in supporting
- * documentation, and that the name of TOSHIBA not be used in advertising
- * or publicity pertaining to distribution of the software without specific,
- * written prior permission. TOSHIBA make no representations about the
- * suitability of this software for any purpose. It is provided "as is"
- * without express or implied warranty.
- *
- * TOSHIBA DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
- * ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
- * TOSHIBA BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
- * ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
- * WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
- * ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
- * SOFTWARE.
- *
- * Author: Katsuhisa Yano TOSHIBA Corp.
- * mopi@osa.ilab.toshiba.co.jp
- */
-/*
- * Copyright 1995 by FUJITSU LIMITED
- * This is source code modified by FUJITSU LIMITED under the Joint
- * Development Agreement for the CDE/Motif PST.
- */
-/*
- * Modifiers: Jeff Walls, Paul Anderson (HEWLETT-PACKARD)
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-#include "XomGeneric.h"
-#include <stdio.h>
-
-/* For VW/UDC */
-
-static int
-is_rotate(
- XOC oc,
- XFontStruct *font)
-{
- XOCGenericPart *gen = XOC_GENERIC(oc);
- FontSet font_set;
- VRotate vrotate;
- int font_set_count;
- int vrotate_num;
-
- font_set = gen->font_set;
- font_set_count = gen->font_set_num;
- for( ; font_set_count-- ; font_set++) {
- if((font_set->vrotate_num > 0) && (font_set->vrotate)) {
- vrotate = font_set->vrotate;
- vrotate_num = font_set->vrotate_num;
- for( ; vrotate_num-- ; vrotate++)
- if(vrotate->font == font)
- return True;
- }
- }
- return False;
-}
-
-static int
-is_codemap(
- XOC oc,
- XFontStruct *font)
-{
- XOCGenericPart *gen = XOC_GENERIC(oc);
- FontSet font_set;
- FontData vmap;
- int font_set_count;
- int vmap_num;
-
- font_set = gen->font_set;
- font_set_count = gen->font_set_num;
- for( ; font_set_count-- ; font_set++) {
- if(font_set->vmap_num > 0) {
- vmap = font_set->vmap;
- vmap_num = font_set->vmap_num;
- for( ; vmap_num-- ; vmap++)
- if(vmap->font == font)
- return True;
- }
- }
- return False;
-}
-
-static int
-draw_vertical(
- Display *dpy,
- Drawable d,
- XOC oc,
- GC gc,
- XFontStruct *font,
- Bool is_xchar2b,
- int x, int y,
- XPointer text,
- int length)
-{
- XChar2b *buf2b;
- char *buf;
- int wx = 0, wy = 0;
- int direction = 0;
- int font_ascent_return = 0, font_descent_return = 0;
- int i;
- XCharStruct overall;
-
- wy = y;
- if (is_xchar2b) {
- for(i = 0, buf2b = (XChar2b *) text ; i < length ; i++, buf2b++) {
- if(is_rotate(oc, font) == True) {
- XTextExtents16(font, buf2b, 1,
- &direction, &font_ascent_return,
- &font_descent_return, &overall);
- wx = x - (int)((overall.rbearing - overall.lbearing) >> 1) -
- (int) overall.lbearing;
- wy += overall.ascent;
- XDrawString16(dpy, d, gc, wx, wy, buf2b, 1);
- wy += overall.descent;
- } else {
- wx = x - (int)((font->max_bounds.rbearing -
- font->min_bounds.lbearing) >> 1) -
- (int) font->min_bounds.lbearing;
- wy += font->max_bounds.ascent;
- XDrawString16(dpy, d, gc, wx, wy, buf2b, 1);
- wy += font->max_bounds.descent;
- }
- }
- } else {
- for(i = 0, buf = (char *)text ; i < length && *buf ; i++, buf++) {
- if(is_rotate(oc, font) == True) {
- XTextExtents(font, buf, 1,
- &direction, &font_ascent_return,
- &font_descent_return, &overall);
- wx = x - (int)((overall.rbearing - overall.lbearing) >> 1) -
- (int) overall.lbearing;
- wy += overall.ascent;
- XDrawString(dpy, d, gc, wx, wy, buf, 1);
- wy += overall.descent;
- } else {
- wx = x - (int)((font->max_bounds.rbearing -
- font->min_bounds.lbearing) >> 1) -
- (int) font->min_bounds.lbearing;
- wy += font->max_bounds.ascent;
- XDrawString(dpy, d, gc, wx, wy, buf, 1);
- wy += font->max_bounds.descent;
- }
- }
- }
- return wy;
-}
-
-#define VMAP 0
-#define VROTATE 1
-#define FONTSCOPE 2
-
-static int
-DrawStringWithFontSet(
- Display *dpy,
- Drawable d,
- XOC oc,
- FontSet fs,
- GC gc,
- int x, int y,
- XPointer text,
- int length)
-{
- XFontStruct *font;
- Bool is_xchar2b;
- unsigned char *ptr;
- int ptr_len, char_len = 0;
- FontData fd;
- int ret = 0;
-
- ptr = (unsigned char *)text;
- is_xchar2b = fs->is_xchar2b;
-
- while (length > 0) {
- fd = _XomGetFontDataFromFontSet(fs,
- ptr,length,&ptr_len,is_xchar2b,FONTSCOPE);
- if(ptr_len <= 0)
- break;
-
- /* First, see if the "Best Match" font for the FontSet was set.
- * If it was, use that font. If it was not set, then use the
- * font defined by font_set->font_data[0] (which is what
- * _XomGetFontDataFromFontSet() always seems to return for
- * non-VW text). Note that given the new algorithm in
- * parse_fontname() and parse_fontdata(), fs->font will
- * *always* contain good data. We should probably remove
- * the check for "fd->font", but we won't :-) -- jjw/pma (HP)
- */
- if((font = fs->font) == (XFontStruct *) NULL){
-
- if(fd == (FontData) NULL ||
- (font = fd->font) == (XFontStruct *) NULL)
- break;
- }
-
- switch(oc->core.orientation) {
- case XOMOrientation_LTR_TTB:
- case XOMOrientation_RTL_TTB:
- XSetFont(dpy, gc, font->fid);
-
- if (is_xchar2b) {
- char_len = ptr_len / sizeof(XChar2b);
- XDrawString16(dpy, d, gc, x, y, (XChar2b *)ptr, char_len);
- x += XTextWidth16(font, (XChar2b *)ptr, char_len);
- } else {
- char_len = ptr_len;
- XDrawString(dpy, d, gc, x, y, (char *)ptr, char_len);
- x += XTextWidth(font, (char *)ptr, char_len);
- }
- break;
- case XOMOrientation_TTB_RTL:
- case XOMOrientation_TTB_LTR:
- if(fs->font == font) {
- fd = _XomGetFontDataFromFontSet(fs,
- ptr,length,&ptr_len,is_xchar2b,VMAP);
- if(ptr_len <= 0)
- break;
- if(fd == (FontData) NULL ||
- (font = fd->font) == (XFontStruct *) NULL)
- break;
-
- if(is_codemap(oc, fd->font) == False) {
- fd = _XomGetFontDataFromFontSet(fs,
- ptr,length,&ptr_len,is_xchar2b,VROTATE);
- if(ptr_len <= 0)
- break;
- if(fd == (FontData) NULL ||
- (font = fd->font) == (XFontStruct *) NULL)
- break;
- }
- }
-
- if(is_xchar2b)
- char_len = ptr_len / sizeof(XChar2b);
- else
- char_len = ptr_len;
- XSetFont(dpy, gc, font->fid);
- y = draw_vertical(dpy, d, oc, gc, font, is_xchar2b, x, y,
- (char *)ptr, char_len);
- break;
-
- case XOMOrientation_Context:
- /* never used? */
- break;
- }
-
- if(char_len <= 0)
- break;
-
- length -= char_len;
- ptr += ptr_len;
- }
-
- switch(oc->core.orientation) {
- case XOMOrientation_LTR_TTB:
- case XOMOrientation_RTL_TTB:
- ret = x;
- break;
- case XOMOrientation_TTB_RTL:
- case XOMOrientation_TTB_LTR:
- ret = y;
- break;
- case XOMOrientation_Context:
- /* not used? */
- break;
- }
- return ret;
-}
-
-/* For VW/UDC */
-
-int
-_XomGenericDrawString(
- Display *dpy,
- Drawable d,
- XOC oc,
- GC gc,
- int x, int y,
- XOMTextType type,
- XPointer text,
- int length)
-{
- XlcConv conv;
- XFontStruct *font;
- Bool is_xchar2b;
-/* VW/UDC */
- XPointer args[3];
- FontSet fs;
-/* VW/UDC */
- XChar2b xchar2b_buf[BUFSIZ], *buf;
- int start_x = x;
- int start_y = y;
- int left = 0, buf_len = 0;
- int next = 0;
-
- conv = _XomInitConverter(oc, type);
- if (conv == NULL)
- return -1;
-
- args[0] = (XPointer) &font;
- args[1] = (XPointer) &is_xchar2b;
- args[2] = (XPointer) &fs;
-
- while (length > 0) {
- buf = xchar2b_buf;
- left = buf_len = BUFSIZ;
-
- if (_XomConvert(oc, conv, (XPointer *) &text, &length,
- (XPointer *) &buf, &left, args, 3) < 0)
- break;
- buf_len -= left;
-
-/* For VW/UDC */
- next = DrawStringWithFontSet(dpy, d, oc, fs, gc, x, y,
- (XPointer)xchar2b_buf, buf_len);
-
- switch(oc->core.orientation) {
- case XOMOrientation_LTR_TTB:
- case XOMOrientation_RTL_TTB:
- x = next;
- break;
- case XOMOrientation_TTB_RTL:
- case XOMOrientation_TTB_LTR:
- y = next;
- break;
- case XOMOrientation_Context:
- /* not used */
- break;
- }
-/* For VW/UDC */
- }
-
- x -= start_x;
- y -= start_y;
-
- return x;
-}
-
-int
-_XmbGenericDrawString(Display *dpy, Drawable d, XOC oc, GC gc, int x, int y,
- _Xconst char *text, int length)
-{
- return _XomGenericDrawString(dpy, d, oc, gc, x, y, XOMMultiByte,
- (XPointer) text, length);
-}
-
-int
-_XwcGenericDrawString(Display *dpy, Drawable d, XOC oc, GC gc, int x, int y,
- _Xconst wchar_t *text, int length)
-{
- return _XomGenericDrawString(dpy, d, oc, gc, x, y, XOMWideChar,
- (XPointer) text, length);
-}
-
-int
-_Xutf8GenericDrawString(Display *dpy, Drawable d, XOC oc, GC gc, int x, int y,
- _Xconst char *text, int length)
-{
- return _XomGenericDrawString(dpy, d, oc, gc, x, y, XOMUtf8String,
- (XPointer) text, length);
-}
+/*
+ * Copyright 1992, 1993 by TOSHIBA Corp.
+ *
+ * Permission to use, copy, modify, and distribute this software and its
+ * documentation for any purpose and without fee is hereby granted, provided
+ * that the above copyright notice appear in all copies and that both that
+ * copyright notice and this permission notice appear in supporting
+ * documentation, and that the name of TOSHIBA not be used in advertising
+ * or publicity pertaining to distribution of the software without specific,
+ * written prior permission. TOSHIBA make no representations about the
+ * suitability of this software for any purpose. It is provided "as is"
+ * without express or implied warranty.
+ *
+ * TOSHIBA DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
+ * ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
+ * TOSHIBA BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
+ * ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
+ * WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
+ * ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
+ * SOFTWARE.
+ *
+ * Author: Katsuhisa Yano TOSHIBA Corp.
+ * mopi@osa.ilab.toshiba.co.jp
+ */
+/*
+ * Copyright 1995 by FUJITSU LIMITED
+ * This is source code modified by FUJITSU LIMITED under the Joint
+ * Development Agreement for the CDE/Motif PST.
+ */
+/*
+ * Modifiers: Jeff Walls, Paul Anderson (HEWLETT-PACKARD)
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+#include "XomGeneric.h"
+#include <stdio.h>
+
+/* For VW/UDC */
+
+static int
+is_rotate(
+ XOC oc,
+ XFontStruct *font)
+{
+ XOCGenericPart *gen = XOC_GENERIC(oc);
+ FontSet font_set;
+ VRotate vrotate;
+ int font_set_count;
+ int vrotate_num;
+
+ font_set = gen->font_set;
+ font_set_count = gen->font_set_num;
+ for( ; font_set_count-- ; font_set++) {
+ if((font_set->vrotate_num > 0) && (font_set->vrotate)) {
+ vrotate = font_set->vrotate;
+ vrotate_num = font_set->vrotate_num;
+ for( ; vrotate_num-- ; vrotate++)
+ if(vrotate->font == font)
+ return True;
+ }
+ }
+ return False;
+}
+
+static int
+is_codemap(
+ XOC oc,
+ XFontStruct *font)
+{
+ XOCGenericPart *gen = XOC_GENERIC(oc);
+ FontSet font_set;
+ FontData vmap;
+ int font_set_count;
+ int vmap_num;
+
+ font_set = gen->font_set;
+ font_set_count = gen->font_set_num;
+ for( ; font_set_count-- ; font_set++) {
+ if(font_set->vmap_num > 0) {
+ vmap = font_set->vmap;
+ vmap_num = font_set->vmap_num;
+ for( ; vmap_num-- ; vmap++)
+ if(vmap->font == font)
+ return True;
+ }
+ }
+ return False;
+}
+
+static int
+draw_vertical(
+ Display *dpy,
+ Drawable d,
+ XOC oc,
+ GC gc,
+ XFontStruct *font,
+ Bool is_xchar2b,
+ int x, int y,
+ XPointer text,
+ int length)
+{
+ XChar2b *buf2b;
+ char *buf;
+ int wx = 0, wy = 0;
+ int direction = 0;
+ int font_ascent_return = 0, font_descent_return = 0;
+ int i;
+ XCharStruct overall;
+
+ wy = y;
+ if (is_xchar2b) {
+ for(i = 0, buf2b = (XChar2b *) text ; i < length ; i++, buf2b++) {
+ if(is_rotate(oc, font) == True) {
+ XTextExtents16(font, buf2b, 1,
+ &direction, &font_ascent_return,
+ &font_descent_return, &overall);
+ wx = x - (int)((overall.rbearing - overall.lbearing) >> 1) -
+ (int) overall.lbearing;
+ wy += overall.ascent;
+ XDrawString16(dpy, d, gc, wx, wy, buf2b, 1);
+ wy += overall.descent;
+ } else {
+ wx = x - (int)((font->max_bounds.rbearing -
+ font->min_bounds.lbearing) >> 1) -
+ (int) font->min_bounds.lbearing;
+ wy += font->max_bounds.ascent;
+ XDrawString16(dpy, d, gc, wx, wy, buf2b, 1);
+ wy += font->max_bounds.descent;
+ }
+ }
+ } else {
+ for(i = 0, buf = (char *)text ; i < length && *buf ; i++, buf++) {
+ if(is_rotate(oc, font) == True) {
+ XTextExtents(font, buf, 1,
+ &direction, &font_ascent_return,
+ &font_descent_return, &overall);
+ wx = x - (int)((overall.rbearing - overall.lbearing) >> 1) -
+ (int) overall.lbearing;
+ wy += overall.ascent;
+ XDrawString(dpy, d, gc, wx, wy, buf, 1);
+ wy += overall.descent;
+ } else {
+ wx = x - (int)((font->max_bounds.rbearing -
+ font->min_bounds.lbearing) >> 1) -
+ (int) font->min_bounds.lbearing;
+ wy += font->max_bounds.ascent;
+ XDrawString(dpy, d, gc, wx, wy, buf, 1);
+ wy += font->max_bounds.descent;
+ }
+ }
+ }
+ return wy;
+}
+
+#define VMAP 0
+#define VROTATE 1
+#define FONTSCOPE 2
+
+static int
+DrawStringWithFontSet(
+ Display *dpy,
+ Drawable d,
+ XOC oc,
+ FontSet fs,
+ GC gc,
+ int x, int y,
+ XPointer text,
+ int length)
+{
+ XFontStruct *font;
+ Bool is_xchar2b;
+ unsigned char *ptr;
+ int ptr_len, char_len = 0;
+ FontData fd;
+ int ret = 0;
+
+ ptr = (unsigned char *)text;
+ is_xchar2b = fs->is_xchar2b;
+
+ while (length > 0) {
+ fd = _XomGetFontDataFromFontSet(fs,
+ ptr,length,&ptr_len,is_xchar2b,FONTSCOPE);
+ if(ptr_len <= 0)
+ break;
+
+ /* First, see if the "Best Match" font for the FontSet was set.
+ * If it was, use that font. If it was not set, then use the
+ * font defined by font_set->font_data[0] (which is what
+ * _XomGetFontDataFromFontSet() always seems to return for
+ * non-VW text). Note that given the new algorithm in
+ * parse_fontname() and parse_fontdata(), fs->font will
+ * *always* contain good data. We should probably remove
+ * the check for "fd->font", but we won't :-) -- jjw/pma (HP)
+ */
+ if((font = fs->font) == (XFontStruct *) NULL){
+
+ if(fd == (FontData) NULL ||
+ (font = fd->font) == (XFontStruct *) NULL)
+ break;
+ }
+
+ switch(oc->core.orientation) {
+ case XOMOrientation_LTR_TTB:
+ case XOMOrientation_RTL_TTB:
+ XSetFont(dpy, gc, font->fid);
+
+ if (is_xchar2b) {
+ char_len = ptr_len / sizeof(XChar2b);
+ XDrawString16(dpy, d, gc, x, y, (XChar2b *)ptr, char_len);
+ x += XTextWidth16(font, (XChar2b *)ptr, char_len);
+ } else {
+ char_len = ptr_len;
+ XDrawString(dpy, d, gc, x, y, (char *)ptr, char_len);
+ x += XTextWidth(font, (char *)ptr, char_len);
+ }
+ break;
+ case XOMOrientation_TTB_RTL:
+ case XOMOrientation_TTB_LTR:
+ if(fs->font == font) {
+ fd = _XomGetFontDataFromFontSet(fs,
+ ptr,length,&ptr_len,is_xchar2b,VMAP);
+ if(ptr_len <= 0)
+ break;
+ if(fd == (FontData) NULL ||
+ (font = fd->font) == (XFontStruct *) NULL)
+ break;
+
+ if(is_codemap(oc, fd->font) == False) {
+ fd = _XomGetFontDataFromFontSet(fs,
+ ptr,length,&ptr_len,is_xchar2b,VROTATE);
+ if(ptr_len <= 0)
+ break;
+ if(fd == (FontData) NULL ||
+ (font = fd->font) == (XFontStruct *) NULL)
+ break;
+ }
+ }
+
+ if(is_xchar2b)
+ char_len = ptr_len / sizeof(XChar2b);
+ else
+ char_len = ptr_len;
+ XSetFont(dpy, gc, font->fid);
+ y = draw_vertical(dpy, d, oc, gc, font, is_xchar2b, x, y,
+ (char *)ptr, char_len);
+ break;
+
+ case XOMOrientation_Context:
+ /* never used? */
+ break;
+ }
+
+ if(char_len <= 0)
+ break;
+
+ length -= char_len;
+ ptr += ptr_len;
+ }
+
+ switch(oc->core.orientation) {
+ case XOMOrientation_LTR_TTB:
+ case XOMOrientation_RTL_TTB:
+ ret = x;
+ break;
+ case XOMOrientation_TTB_RTL:
+ case XOMOrientation_TTB_LTR:
+ ret = y;
+ break;
+ case XOMOrientation_Context:
+ /* not used? */
+ break;
+ }
+ return ret;
+}
+
+/* For VW/UDC */
+
+int
+_XomGenericDrawString(
+ Display *dpy,
+ Drawable d,
+ XOC oc,
+ GC gc,
+ int x, int y,
+ XOMTextType type,
+ XPointer text,
+ int length)
+{
+ XlcConv conv;
+ XFontStruct *font;
+ Bool is_xchar2b;
+/* VW/UDC */
+ XPointer args[3];
+ FontSet fs;
+/* VW/UDC */
+ XChar2b xchar2b_buf[BUFSIZ], *buf;
+ int start_x = x;
+ int start_y = y;
+ int left = 0, buf_len = 0;
+ int next = 0;
+
+ conv = _XomInitConverter(oc, type);
+ if (conv == NULL)
+ return -1;
+
+ args[0] = (XPointer) &font;
+ args[1] = (XPointer) &is_xchar2b;
+ args[2] = (XPointer) &fs;
+
+ while (length > 0) {
+ buf = xchar2b_buf;
+ left = buf_len = BUFSIZ;
+
+ if (_XomConvert(oc, conv, (XPointer *) &text, &length,
+ (XPointer *) &buf, &left, args, 3) < 0)
+ break;
+ buf_len -= left;
+
+/* For VW/UDC */
+ next = DrawStringWithFontSet(dpy, d, oc, fs, gc, x, y,
+ (XPointer)xchar2b_buf, buf_len);
+
+ switch(oc->core.orientation) {
+ case XOMOrientation_LTR_TTB:
+ case XOMOrientation_RTL_TTB:
+ x = next;
+ break;
+ case XOMOrientation_TTB_RTL:
+ case XOMOrientation_TTB_LTR:
+ y = next;
+ break;
+ case XOMOrientation_Context:
+ /* not used */
+ break;
+ }
+/* For VW/UDC */
+ }
+
+ x -= start_x;
+ y -= start_y;
+
+ return x;
+}
+
+int
+_XmbGenericDrawString(Display *dpy, Drawable d, XOC oc, GC gc, int x, int y,
+ _Xconst char *text, int length)
+{
+ return _XomGenericDrawString(dpy, d, oc, gc, x, y, XOMMultiByte,
+ (XPointer) text, length);
+}
+
+int
+_XwcGenericDrawString(Display *dpy, Drawable d, XOC oc, GC gc, int x, int y,
+ _Xconst wchar_t *text, int length)
+{
+ return _XomGenericDrawString(dpy, d, oc, gc, x, y, XOMWideChar,
+ (XPointer) text, length);
+}
+
+int
+_Xutf8GenericDrawString(Display *dpy, Drawable d, XOC oc, GC gc, int x, int y,
+ _Xconst char *text, int length)
+{
+ return _XomGenericDrawString(dpy, d, oc, gc, x, y, XOMUtf8String,
+ (XPointer) text, length);
+}
diff --git a/libX11/modules/om/generic/omTextEsc.c b/libX11/modules/om/generic/omTextEsc.c
index cb444f441..df1fb10c0 100644
--- a/libX11/modules/om/generic/omTextEsc.c
+++ b/libX11/modules/om/generic/omTextEsc.c
@@ -1,300 +1,300 @@
-/*
- * Copyright 1992, 1993 by TOSHIBA Corp.
- *
- * Permission to use, copy, modify, and distribute this software and its
- * documentation for any purpose and without fee is hereby granted, provided
- * that the above copyright notice appear in all copies and that both that
- * copyright notice and this permission notice appear in supporting
- * documentation, and that the name of TOSHIBA not be used in advertising
- * or publicity pertaining to distribution of the software without specific,
- * written prior permission. TOSHIBA make no representations about the
- * suitability of this software for any purpose. It is provided "as is"
- * without express or implied warranty.
- *
- * TOSHIBA DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
- * ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
- * TOSHIBA BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
- * ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
- * WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
- * ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
- * SOFTWARE.
- *
- * Author: Katsuhisa Yano TOSHIBA Corp.
- * mopi@osa.ilab.toshiba.co.jp
- */
-/*
- * Copyright 1995 by FUJITSU LIMITED
- * This is source code modified by FUJITSU LIMITED under the Joint
- * Development Agreement for the CDE/Motif PST.
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-#include "XomGeneric.h"
-#include <stdio.h>
-
-/* For VW/UDC start */
-
-#define VMAP 0
-#define VROTATE 1
-#define FONTSCOPE 2
-
-static int
-is_rotate(
- XOC oc,
- XFontStruct *font)
-{
- XOCGenericPart *gen = XOC_GENERIC(oc);
- FontSet font_set;
- VRotate vrotate;
- int font_set_count;
- int vrotate_num;
-
- font_set = gen->font_set;
- font_set_count = gen->font_set_num;
- for( ; font_set_count-- ; font_set++) {
- if((font_set->vrotate_num > 0) && (font_set->vrotate != NULL)) {
- vrotate = font_set->vrotate;
- vrotate_num = font_set->vrotate_num;
- for( ; vrotate_num-- ; vrotate++)
- if(vrotate->font == font)
- return True;
- }
- }
- return False;
-}
-
-static int
-is_codemap(
- XOC oc,
- XFontStruct *font)
-{
- XOCGenericPart *gen = XOC_GENERIC(oc);
- FontSet font_set;
- FontData vmap;
- int font_set_count;
- int vmap_num;
-
- font_set = gen->font_set;
- font_set_count = gen->font_set_num;
- for( ; font_set_count-- ; font_set++) {
- if(font_set->vmap_num > 0) {
- vmap = font_set->vmap;
- vmap_num = font_set->vmap_num;
- for( ; vmap_num-- ; vmap++)
- if(vmap->font == font)
- return True;
- }
- }
- return False;
-}
-
-static int
-escapement_vertical(
- XOC oc,
- XFontStruct *font,
- Bool is_xchar2b,
- XPointer text,
- int length)
-{
- XChar2b *buf2b;
- char *buf;
- int escapement = 0, i;
-
- if(is_xchar2b) {
- for(i = 0, buf2b = (XChar2b *) text ; i < length ; i++, buf2b++) {
- if(is_rotate(oc, font) == True) {
- escapement += _XTextHeight16(font, buf2b, 1);
- } else {
- escapement += (int) (font->max_bounds.ascent +
- font->max_bounds.descent);
- }
- }
- } else {
- for(i = 0, buf = (char *)text ; i < length && *buf ; i++, buf++) {
- if(is_rotate(oc, font) == True) {
- escapement += _XTextHeight(font, buf, 1);
- } else {
- escapement += (int) (font->max_bounds.ascent +
- font->max_bounds.descent);
- }
- }
- }
- return escapement;
-}
-
-
-static int
-TextWidthWithFontSet(
- FontSet font_set,
- XOC oc,
- XPointer text,
- int length)
-{
- FontData fd;
- XFontStruct *font;
- unsigned char *ptr = (unsigned char *)text;
- Bool is_xchar2b;
- int ptr_len = length;
- int escapement = 0, char_len = 0;
-
- if(font_set == (FontSet) NULL)
- return escapement;
-
- is_xchar2b = font_set->is_xchar2b;
-
- while(length > 0) {
- fd = _XomGetFontDataFromFontSet(font_set, ptr, length, &ptr_len,
- is_xchar2b, FONTSCOPE);
- if(ptr_len <= 0)
- break;
-
- /*
- * First, see if the "Best Match" font for the FontSet was set.
- * If it was, use that font. If it was not set, then use the
- * font defined by font_set->font_data[0] (which is what
- * _XomGetFontDataFromFontSet() always seems to return for
- * non-VW text). Note that given the new algorithm in
- * parse_fontname() and parse_fontdata(), fs->font will
- * *always* contain good data. We should probably remove
- * the check for "fd->font", but we won't :-) -- jjw/pma (HP)
- *
- * Above comment and way this is done propagated from omText.c
- * Note that fd->font is junk so using the result of the
- * above call /needs/ to be ignored.
- *
- * Owen Taylor <otaylor@redhat.com> 12 Jul 2000
- *
- */
-
- if(fd == (FontData) NULL ||
- (font = font_set->font) == (XFontStruct *) NULL) {
-
- if((font = fd->font) == (XFontStruct *) NULL)
- break;
- }
-
- switch(oc->core.orientation) {
- case XOMOrientation_LTR_TTB:
- case XOMOrientation_RTL_TTB:
- if (is_xchar2b) {
- char_len = ptr_len / sizeof(XChar2b);
- escapement += XTextWidth16(font, (XChar2b *)ptr, char_len);
- } else {
- char_len = ptr_len;
- escapement += XTextWidth(font, (char *)ptr, char_len);
- }
- break;
-
- case XOMOrientation_TTB_LTR:
- case XOMOrientation_TTB_RTL:
- if(font_set->font == font) {
- fd = _XomGetFontDataFromFontSet(font_set, ptr, length, &ptr_len,
- is_xchar2b, VMAP);
- if(ptr_len <= 0)
- break;
- if(fd == (FontData) NULL ||
- (font = fd->font) == (XFontStruct *) NULL)
- break;
-
- if(is_codemap(oc, fd->font) == False) {
- fd = _XomGetFontDataFromFontSet(font_set, ptr, length,
- &ptr_len, is_xchar2b,
- VROTATE);
- if(ptr_len <= 0)
- break;
- if(fd == (FontData) NULL ||
- (font = fd->font) == (XFontStruct *) NULL)
- break;
- }
- }
-
- if(is_xchar2b)
- char_len = ptr_len / sizeof(XChar2b);
- else
- char_len = ptr_len;
- escapement += escapement_vertical(oc, font, is_xchar2b,
- (XPointer) ptr, char_len);
- break;
-
- case XOMOrientation_Context:
- /* not used? */
- break;
- }
-
- if(char_len <= 0)
- break;
-
- length -= char_len;
- ptr += ptr_len;
- }
-
- return escapement;
-}
-
-/* For VW/UDC end */
-
-static int
-_XomGenericTextEscapement(
- XOC oc,
- XOMTextType type,
- XPointer text,
- int length)
-{
- XlcConv conv;
- XFontStruct *font;
- Bool is_xchar2b;
-/* VW/UDC */
- XPointer args[3];
- FontSet font_set;
-/* VW/UDC */
- XChar2b xchar2b_buf[BUFSIZ], *buf;
- int escapement = 0;
- int buf_len = 0, left = 0;
-
- conv = _XomInitConverter(oc, type);
- if (conv == NULL)
- return escapement;
-
- args[0] = (XPointer) &font;
- args[1] = (XPointer) &is_xchar2b;
- args[2] = (XPointer) &font_set;
-
- while (length > 0) {
- buf = xchar2b_buf;
- left = buf_len = BUFSIZ;
-
- if (_XomConvert(oc, conv, (XPointer *) &text, &length,
- (XPointer *) &buf, &left, args, 3) < 0)
- break;
- buf_len -= left;
-
-/* VW/UDC */
- escapement += TextWidthWithFontSet(font_set, oc,
- (XPointer) xchar2b_buf, buf_len);
-/* VW/UDC */
- }
-
- return escapement;
-}
-
-int
-_XmbGenericTextEscapement(XOC oc, _Xconst char *text, int length)
-{
- return _XomGenericTextEscapement(oc, XOMMultiByte, (XPointer) text, length);
-}
-
-int
-_XwcGenericTextEscapement(XOC oc, _Xconst wchar_t *text, int length)
-{
- return _XomGenericTextEscapement(oc, XOMWideChar, (XPointer) text, length);
-}
-
-int
-_Xutf8GenericTextEscapement(XOC oc, _Xconst char *text, int length)
-{
- return _XomGenericTextEscapement(oc, XOMUtf8String, (XPointer) text,
- length);
-}
+/*
+ * Copyright 1992, 1993 by TOSHIBA Corp.
+ *
+ * Permission to use, copy, modify, and distribute this software and its
+ * documentation for any purpose and without fee is hereby granted, provided
+ * that the above copyright notice appear in all copies and that both that
+ * copyright notice and this permission notice appear in supporting
+ * documentation, and that the name of TOSHIBA not be used in advertising
+ * or publicity pertaining to distribution of the software without specific,
+ * written prior permission. TOSHIBA make no representations about the
+ * suitability of this software for any purpose. It is provided "as is"
+ * without express or implied warranty.
+ *
+ * TOSHIBA DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
+ * ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
+ * TOSHIBA BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
+ * ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
+ * WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
+ * ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
+ * SOFTWARE.
+ *
+ * Author: Katsuhisa Yano TOSHIBA Corp.
+ * mopi@osa.ilab.toshiba.co.jp
+ */
+/*
+ * Copyright 1995 by FUJITSU LIMITED
+ * This is source code modified by FUJITSU LIMITED under the Joint
+ * Development Agreement for the CDE/Motif PST.
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+#include "XomGeneric.h"
+#include <stdio.h>
+
+/* For VW/UDC start */
+
+#define VMAP 0
+#define VROTATE 1
+#define FONTSCOPE 2
+
+static int
+is_rotate(
+ XOC oc,
+ XFontStruct *font)
+{
+ XOCGenericPart *gen = XOC_GENERIC(oc);
+ FontSet font_set;
+ VRotate vrotate;
+ int font_set_count;
+ int vrotate_num;
+
+ font_set = gen->font_set;
+ font_set_count = gen->font_set_num;
+ for( ; font_set_count-- ; font_set++) {
+ if((font_set->vrotate_num > 0) && (font_set->vrotate != NULL)) {
+ vrotate = font_set->vrotate;
+ vrotate_num = font_set->vrotate_num;
+ for( ; vrotate_num-- ; vrotate++)
+ if(vrotate->font == font)
+ return True;
+ }
+ }
+ return False;
+}
+
+static int
+is_codemap(
+ XOC oc,
+ XFontStruct *font)
+{
+ XOCGenericPart *gen = XOC_GENERIC(oc);
+ FontSet font_set;
+ FontData vmap;
+ int font_set_count;
+ int vmap_num;
+
+ font_set = gen->font_set;
+ font_set_count = gen->font_set_num;
+ for( ; font_set_count-- ; font_set++) {
+ if(font_set->vmap_num > 0) {
+ vmap = font_set->vmap;
+ vmap_num = font_set->vmap_num;
+ for( ; vmap_num-- ; vmap++)
+ if(vmap->font == font)
+ return True;
+ }
+ }
+ return False;
+}
+
+static int
+escapement_vertical(
+ XOC oc,
+ XFontStruct *font,
+ Bool is_xchar2b,
+ XPointer text,
+ int length)
+{
+ XChar2b *buf2b;
+ char *buf;
+ int escapement = 0, i;
+
+ if(is_xchar2b) {
+ for(i = 0, buf2b = (XChar2b *) text ; i < length ; i++, buf2b++) {
+ if(is_rotate(oc, font) == True) {
+ escapement += _XTextHeight16(font, buf2b, 1);
+ } else {
+ escapement += (int) (font->max_bounds.ascent +
+ font->max_bounds.descent);
+ }
+ }
+ } else {
+ for(i = 0, buf = (char *)text ; i < length && *buf ; i++, buf++) {
+ if(is_rotate(oc, font) == True) {
+ escapement += _XTextHeight(font, buf, 1);
+ } else {
+ escapement += (int) (font->max_bounds.ascent +
+ font->max_bounds.descent);
+ }
+ }
+ }
+ return escapement;
+}
+
+
+static int
+TextWidthWithFontSet(
+ FontSet font_set,
+ XOC oc,
+ XPointer text,
+ int length)
+{
+ FontData fd;
+ XFontStruct *font;
+ unsigned char *ptr = (unsigned char *)text;
+ Bool is_xchar2b;
+ int ptr_len = length;
+ int escapement = 0, char_len = 0;
+
+ if(font_set == (FontSet) NULL)
+ return escapement;
+
+ is_xchar2b = font_set->is_xchar2b;
+
+ while(length > 0) {
+ fd = _XomGetFontDataFromFontSet(font_set, ptr, length, &ptr_len,
+ is_xchar2b, FONTSCOPE);
+ if(ptr_len <= 0)
+ break;
+
+ /*
+ * First, see if the "Best Match" font for the FontSet was set.
+ * If it was, use that font. If it was not set, then use the
+ * font defined by font_set->font_data[0] (which is what
+ * _XomGetFontDataFromFontSet() always seems to return for
+ * non-VW text). Note that given the new algorithm in
+ * parse_fontname() and parse_fontdata(), fs->font will
+ * *always* contain good data. We should probably remove
+ * the check for "fd->font", but we won't :-) -- jjw/pma (HP)
+ *
+ * Above comment and way this is done propagated from omText.c
+ * Note that fd->font is junk so using the result of the
+ * above call /needs/ to be ignored.
+ *
+ * Owen Taylor <otaylor@redhat.com> 12 Jul 2000
+ *
+ */
+
+ if(fd == (FontData) NULL ||
+ (font = font_set->font) == (XFontStruct *) NULL) {
+
+ if((font = fd->font) == (XFontStruct *) NULL)
+ break;
+ }
+
+ switch(oc->core.orientation) {
+ case XOMOrientation_LTR_TTB:
+ case XOMOrientation_RTL_TTB:
+ if (is_xchar2b) {
+ char_len = ptr_len / sizeof(XChar2b);
+ escapement += XTextWidth16(font, (XChar2b *)ptr, char_len);
+ } else {
+ char_len = ptr_len;
+ escapement += XTextWidth(font, (char *)ptr, char_len);
+ }
+ break;
+
+ case XOMOrientation_TTB_LTR:
+ case XOMOrientation_TTB_RTL:
+ if(font_set->font == font) {
+ fd = _XomGetFontDataFromFontSet(font_set, ptr, length, &ptr_len,
+ is_xchar2b, VMAP);
+ if(ptr_len <= 0)
+ break;
+ if(fd == (FontData) NULL ||
+ (font = fd->font) == (XFontStruct *) NULL)
+ break;
+
+ if(is_codemap(oc, fd->font) == False) {
+ fd = _XomGetFontDataFromFontSet(font_set, ptr, length,
+ &ptr_len, is_xchar2b,
+ VROTATE);
+ if(ptr_len <= 0)
+ break;
+ if(fd == (FontData) NULL ||
+ (font = fd->font) == (XFontStruct *) NULL)
+ break;
+ }
+ }
+
+ if(is_xchar2b)
+ char_len = ptr_len / sizeof(XChar2b);
+ else
+ char_len = ptr_len;
+ escapement += escapement_vertical(oc, font, is_xchar2b,
+ (XPointer) ptr, char_len);
+ break;
+
+ case XOMOrientation_Context:
+ /* not used? */
+ break;
+ }
+
+ if(char_len <= 0)
+ break;
+
+ length -= char_len;
+ ptr += ptr_len;
+ }
+
+ return escapement;
+}
+
+/* For VW/UDC end */
+
+static int
+_XomGenericTextEscapement(
+ XOC oc,
+ XOMTextType type,
+ XPointer text,
+ int length)
+{
+ XlcConv conv;
+ XFontStruct *font;
+ Bool is_xchar2b;
+/* VW/UDC */
+ XPointer args[3];
+ FontSet font_set;
+/* VW/UDC */
+ XChar2b xchar2b_buf[BUFSIZ], *buf;
+ int escapement = 0;
+ int buf_len = 0, left = 0;
+
+ conv = _XomInitConverter(oc, type);
+ if (conv == NULL)
+ return escapement;
+
+ args[0] = (XPointer) &font;
+ args[1] = (XPointer) &is_xchar2b;
+ args[2] = (XPointer) &font_set;
+
+ while (length > 0) {
+ buf = xchar2b_buf;
+ left = buf_len = BUFSIZ;
+
+ if (_XomConvert(oc, conv, (XPointer *) &text, &length,
+ (XPointer *) &buf, &left, args, 3) < 0)
+ break;
+ buf_len -= left;
+
+/* VW/UDC */
+ escapement += TextWidthWithFontSet(font_set, oc,
+ (XPointer) xchar2b_buf, buf_len);
+/* VW/UDC */
+ }
+
+ return escapement;
+}
+
+int
+_XmbGenericTextEscapement(XOC oc, _Xconst char *text, int length)
+{
+ return _XomGenericTextEscapement(oc, XOMMultiByte, (XPointer) text, length);
+}
+
+int
+_XwcGenericTextEscapement(XOC oc, _Xconst wchar_t *text, int length)
+{
+ return _XomGenericTextEscapement(oc, XOMWideChar, (XPointer) text, length);
+}
+
+int
+_Xutf8GenericTextEscapement(XOC oc, _Xconst char *text, int length)
+{
+ return _XomGenericTextEscapement(oc, XOMUtf8String, (XPointer) text,
+ length);
+}
diff --git a/libX11/modules/om/generic/omTextExt.c b/libX11/modules/om/generic/omTextExt.c
index 22f99d8f5..baeadf6b0 100644
--- a/libX11/modules/om/generic/omTextExt.c
+++ b/libX11/modules/om/generic/omTextExt.c
@@ -1,135 +1,135 @@
-/*
- * Copyright 1992, 1993 by TOSHIBA Corp.
- *
- * Permission to use, copy, modify, and distribute this software and its
- * documentation for any purpose and without fee is hereby granted, provided
- * that the above copyright notice appear in all copies and that both that
- * copyright notice and this permission notice appear in supporting
- * documentation, and that the name of TOSHIBA not be used in advertising
- * or publicity pertaining to distribution of the software without specific,
- * written prior permission. TOSHIBA make no representations about the
- * suitability of this software for any purpose. It is provided "as is"
- * without express or implied warranty.
- *
- * TOSHIBA DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
- * ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
- * TOSHIBA BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
- * ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
- * WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
- * ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
- * SOFTWARE.
- *
- * Author: Katsuhisa Yano TOSHIBA Corp.
- * mopi@osa.ilab.toshiba.co.jp
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-#include "XomGeneric.h"
-#include <stdio.h>
-
-int
-_XomGenericTextExtents(
- XOC oc,
- XOMTextType type,
- XPointer text,
- int length,
- XRectangle *overall_ink,
- XRectangle *overall_logical)
-{
- XlcConv conv;
- XFontStruct *font;
- Bool is_xchar2b;
- XPointer args[2];
- XChar2b xchar2b_buf[BUFSIZ], *buf;
- int direction, logical_ascent, logical_descent, tmp_ascent, tmp_descent;
- XCharStruct overall, tmp_overall;
- int buf_len, left;
- Bool first = True;
-
- conv = _XomInitConverter(oc, type);
- if (conv == NULL)
- return 0;
-
- bzero((char *) &overall, sizeof(XCharStruct));
- logical_ascent = logical_descent = 0;
-
- args[0] = (XPointer) &font;
- args[1] = (XPointer) &is_xchar2b;
-
- while (length > 0) {
- buf = xchar2b_buf;
- left = buf_len = BUFSIZ;
-
- if (_XomConvert(oc, conv, (XPointer *) &text, &length,
- (XPointer *) &buf, &left, args, 2) < 0)
- break;
- buf_len -= left;
-
- if (is_xchar2b)
- XTextExtents16(font, xchar2b_buf, buf_len, &direction,
- &tmp_ascent, &tmp_descent, &tmp_overall);
- else
- XTextExtents(font, (char *) xchar2b_buf, buf_len, &direction,
- &tmp_ascent, &tmp_descent, &tmp_overall);
-
- if (first) { /* initialize overall */
- overall = tmp_overall;
- logical_ascent = tmp_ascent;
- logical_descent = tmp_descent;
- first = False;
- } else {
- overall.lbearing = min(overall.lbearing,
- overall.width + tmp_overall.lbearing);
- overall.rbearing = max(overall.rbearing,
- overall.width + tmp_overall.rbearing);
- overall.ascent = max(overall.ascent, tmp_overall.ascent);
- overall.descent = max(overall.descent, tmp_overall.descent);
- overall.width += tmp_overall.width;
- logical_ascent = max(logical_ascent, tmp_ascent);
- logical_descent = max(logical_descent, tmp_descent);
- }
- }
-
- if (overall_ink) {
- overall_ink->x = overall.lbearing;
- overall_ink->y = -(overall.ascent);
- overall_ink->width = overall.rbearing - overall.lbearing;
- overall_ink->height = overall.ascent + overall.descent;
- }
-
- if (overall_logical) {
- overall_logical->x = 0;
- overall_logical->y = -(logical_ascent);
- overall_logical->width = overall.width;
- overall_logical->height = logical_ascent + logical_descent;
- }
-
- return overall.width;
-}
-
-int
-_XmbGenericTextExtents(XOC oc, _Xconst char *text, int length,
- XRectangle *overall_ink, XRectangle *overall_logical)
-{
- return _XomGenericTextExtents(oc, XOMMultiByte, (XPointer) text, length,
- overall_ink, overall_logical);
-}
-
-int
-_XwcGenericTextExtents(XOC oc, _Xconst wchar_t *text, int length,
- XRectangle *overall_ink, XRectangle *overall_logical)
-{
- return _XomGenericTextExtents(oc, XOMWideChar, (XPointer) text, length,
- overall_ink, overall_logical);
-}
-
-int
-_Xutf8GenericTextExtents(XOC oc, _Xconst char *text, int length,
- XRectangle *overall_ink, XRectangle *overall_logical)
-{
- return _XomGenericTextExtents(oc, XOMUtf8String, (XPointer) text, length,
- overall_ink, overall_logical);
-}
+/*
+ * Copyright 1992, 1993 by TOSHIBA Corp.
+ *
+ * Permission to use, copy, modify, and distribute this software and its
+ * documentation for any purpose and without fee is hereby granted, provided
+ * that the above copyright notice appear in all copies and that both that
+ * copyright notice and this permission notice appear in supporting
+ * documentation, and that the name of TOSHIBA not be used in advertising
+ * or publicity pertaining to distribution of the software without specific,
+ * written prior permission. TOSHIBA make no representations about the
+ * suitability of this software for any purpose. It is provided "as is"
+ * without express or implied warranty.
+ *
+ * TOSHIBA DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
+ * ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
+ * TOSHIBA BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
+ * ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
+ * WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
+ * ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
+ * SOFTWARE.
+ *
+ * Author: Katsuhisa Yano TOSHIBA Corp.
+ * mopi@osa.ilab.toshiba.co.jp
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+#include "XomGeneric.h"
+#include <stdio.h>
+
+int
+_XomGenericTextExtents(
+ XOC oc,
+ XOMTextType type,
+ XPointer text,
+ int length,
+ XRectangle *overall_ink,
+ XRectangle *overall_logical)
+{
+ XlcConv conv;
+ XFontStruct *font;
+ Bool is_xchar2b;
+ XPointer args[2];
+ XChar2b xchar2b_buf[BUFSIZ], *buf;
+ int direction, logical_ascent, logical_descent, tmp_ascent, tmp_descent;
+ XCharStruct overall, tmp_overall;
+ int buf_len, left;
+ Bool first = True;
+
+ conv = _XomInitConverter(oc, type);
+ if (conv == NULL)
+ return 0;
+
+ bzero((char *) &overall, sizeof(XCharStruct));
+ logical_ascent = logical_descent = 0;
+
+ args[0] = (XPointer) &font;
+ args[1] = (XPointer) &is_xchar2b;
+
+ while (length > 0) {
+ buf = xchar2b_buf;
+ left = buf_len = BUFSIZ;
+
+ if (_XomConvert(oc, conv, (XPointer *) &text, &length,
+ (XPointer *) &buf, &left, args, 2) < 0)
+ break;
+ buf_len -= left;
+
+ if (is_xchar2b)
+ XTextExtents16(font, xchar2b_buf, buf_len, &direction,
+ &tmp_ascent, &tmp_descent, &tmp_overall);
+ else
+ XTextExtents(font, (char *) xchar2b_buf, buf_len, &direction,
+ &tmp_ascent, &tmp_descent, &tmp_overall);
+
+ if (first) { /* initialize overall */
+ overall = tmp_overall;
+ logical_ascent = tmp_ascent;
+ logical_descent = tmp_descent;
+ first = False;
+ } else {
+ overall.lbearing = min(overall.lbearing,
+ overall.width + tmp_overall.lbearing);
+ overall.rbearing = max(overall.rbearing,
+ overall.width + tmp_overall.rbearing);
+ overall.ascent = max(overall.ascent, tmp_overall.ascent);
+ overall.descent = max(overall.descent, tmp_overall.descent);
+ overall.width += tmp_overall.width;
+ logical_ascent = max(logical_ascent, tmp_ascent);
+ logical_descent = max(logical_descent, tmp_descent);
+ }
+ }
+
+ if (overall_ink) {
+ overall_ink->x = overall.lbearing;
+ overall_ink->y = -(overall.ascent);
+ overall_ink->width = overall.rbearing - overall.lbearing;
+ overall_ink->height = overall.ascent + overall.descent;
+ }
+
+ if (overall_logical) {
+ overall_logical->x = 0;
+ overall_logical->y = -(logical_ascent);
+ overall_logical->width = overall.width;
+ overall_logical->height = logical_ascent + logical_descent;
+ }
+
+ return overall.width;
+}
+
+int
+_XmbGenericTextExtents(XOC oc, _Xconst char *text, int length,
+ XRectangle *overall_ink, XRectangle *overall_logical)
+{
+ return _XomGenericTextExtents(oc, XOMMultiByte, (XPointer) text, length,
+ overall_ink, overall_logical);
+}
+
+int
+_XwcGenericTextExtents(XOC oc, _Xconst wchar_t *text, int length,
+ XRectangle *overall_ink, XRectangle *overall_logical)
+{
+ return _XomGenericTextExtents(oc, XOMWideChar, (XPointer) text, length,
+ overall_ink, overall_logical);
+}
+
+int
+_Xutf8GenericTextExtents(XOC oc, _Xconst char *text, int length,
+ XRectangle *overall_ink, XRectangle *overall_logical)
+{
+ return _XomGenericTextExtents(oc, XOMUtf8String, (XPointer) text, length,
+ overall_ink, overall_logical);
+}
diff --git a/libX11/modules/om/generic/omTextPer.c b/libX11/modules/om/generic/omTextPer.c
index c66848aa2..ae08fe6a4 100644
--- a/libX11/modules/om/generic/omTextPer.c
+++ b/libX11/modules/om/generic/omTextPer.c
@@ -1,202 +1,202 @@
-/*
- * Copyright 1992, 1993 by TOSHIBA Corp.
- *
- * Permission to use, copy, modify, and distribute this software and its
- * documentation for any purpose and without fee is hereby granted, provided
- * that the above copyright notice appear in all copies and that both that
- * copyright notice and this permission notice appear in supporting
- * documentation, and that the name of TOSHIBA not be used in advertising
- * or publicity pertaining to distribution of the software without specific,
- * written prior permission. TOSHIBA make no representations about the
- * suitability of this software for any purpose. It is provided "as is"
- * without express or implied warranty.
- *
- * TOSHIBA DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
- * ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
- * TOSHIBA BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
- * ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
- * WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
- * ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
- * SOFTWARE.
- *
- * Author: Katsuhisa Yano TOSHIBA Corp.
- * mopi@osa.ilab.toshiba.co.jp
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-#include "XomGeneric.h"
-#include <stdio.h>
-
-static Status
-_XomGenericTextPerCharExtents(
- XOC oc,
- XOMTextType type,
- XPointer text,
- int length,
- XRectangle *ink_buf,
- XRectangle *logical_buf,
- int buf_size,
- int *num_chars,
- XRectangle *overall_ink,
- XRectangle *overall_logical)
-{
- XlcConv conv;
- XFontStruct *font;
- Bool is_xchar2b;
- XPointer args[2];
- XChar2b xchar2b_buf[BUFSIZ], *xchar2b_ptr;
- char *xchar_ptr = NULL;
- XCharStruct *def, *cs, overall;
- int buf_len, left, require_num;
- int logical_ascent, logical_descent;
- Bool first = True;
-
- conv = _XomInitConverter(oc, type);
- if (conv == NULL)
- return 0;
-
- bzero((char *) &overall, sizeof(XCharStruct));
- logical_ascent = logical_descent = require_num = *num_chars = 0;
-
- args[0] = (XPointer) &font;
- args[1] = (XPointer) &is_xchar2b;
-
- while (length > 0) {
- xchar2b_ptr = xchar2b_buf;
- left = buf_len = BUFSIZ;
-
- if (_XomConvert(oc, conv, (XPointer *) &text, &length,
- (XPointer *) &xchar2b_ptr, &left, args, 2) < 0)
- break;
- buf_len -= left;
-
- if (require_num) {
- require_num += buf_len;
- continue;
- }
- if (buf_size < buf_len) {
- require_num = *num_chars + buf_len;
- continue;
- }
- buf_size -= buf_len;
-
- if (first) {
- logical_ascent = font->ascent;
- logical_descent = font->descent;
- } else {
- logical_ascent = max(logical_ascent, font->ascent);
- logical_descent = max(logical_descent, font->descent);
- }
-
- if (is_xchar2b) {
- CI_GET_DEFAULT_INFO_2D(font, def)
- xchar2b_ptr = xchar2b_buf;
- } else {
- CI_GET_DEFAULT_INFO_1D(font, def)
- xchar_ptr = (char *) xchar2b_buf;
- }
-
- while (buf_len-- > 0) {
- if (is_xchar2b) {
- CI_GET_CHAR_INFO_2D(font, xchar2b_ptr->byte1,
- xchar2b_ptr->byte2, def, cs)
- xchar2b_ptr++;
- } else {
- CI_GET_CHAR_INFO_1D(font, *xchar_ptr, def, cs)
- xchar_ptr++;
- }
- if (cs == NULL)
- continue;
-
- ink_buf->x = overall.width + cs->lbearing;
- ink_buf->y = -(cs->ascent);
- ink_buf->width = cs->rbearing - cs->lbearing;
- ink_buf->height = cs->ascent + cs->descent;
- ink_buf++;
-
- logical_buf->x = overall.width;
- logical_buf->y = -(font->ascent);
- logical_buf->width = cs->width;
- logical_buf->height = font->ascent + font->descent;
- logical_buf++;
-
- if (first) {
- overall = *cs;
- first = False;
- } else {
- overall.ascent = max(overall.ascent, cs->ascent);
- overall.descent = max(overall.descent, cs->descent);
- overall.lbearing = min(overall.lbearing,
- overall.width + cs->lbearing);
- overall.rbearing = max(overall.rbearing,
- overall.width + cs->rbearing);
- overall.width += cs->width;
- }
-
- (*num_chars)++;
- }
- }
-
- if (require_num) {
- *num_chars = require_num;
- return 0;
- } else {
- if (overall_ink) {
- overall_ink->x = overall.lbearing;
- overall_ink->y = -(overall.ascent);
- overall_ink->width = overall.rbearing - overall.lbearing;
- overall_ink->height = overall.ascent + overall.descent;
- }
-
- if (overall_logical) {
- overall_logical->x = 0;
- overall_logical->y = -(logical_ascent);
- overall_logical->width = overall.width;
- overall_logical->height = logical_ascent + logical_descent;
- }
- }
-
- return 1;
-}
-
-Status
-_XmbGenericTextPerCharExtents(XOC oc, _Xconst char *text, int length,
- XRectangle *ink_buf, XRectangle *logical_buf,
- int buf_size, int *num_chars,
- XRectangle *overall_ink,
- XRectangle *overall_logical)
-{
- return _XomGenericTextPerCharExtents(oc, XOMMultiByte, (XPointer) text,
- length, ink_buf, logical_buf, buf_size,
- num_chars, overall_ink,
- overall_logical);
-}
-
-Status
-_XwcGenericTextPerCharExtents(XOC oc, _Xconst wchar_t *text, int length,
- XRectangle *ink_buf, XRectangle *logical_buf,
- int buf_size, int *num_chars,
- XRectangle *overall_ink,
- XRectangle *overall_logical)
-{
- return _XomGenericTextPerCharExtents(oc, XOMWideChar, (XPointer) text,
- length, ink_buf, logical_buf, buf_size,
- num_chars, overall_ink,
- overall_logical);
-}
-
-Status
-_Xutf8GenericTextPerCharExtents(XOC oc, _Xconst char *text, int length,
- XRectangle *ink_buf, XRectangle *logical_buf,
- int buf_size, int *num_chars,
- XRectangle *overall_ink,
- XRectangle *overall_logical)
-{
- return _XomGenericTextPerCharExtents(oc, XOMUtf8String, (XPointer) text,
- length, ink_buf, logical_buf, buf_size,
- num_chars, overall_ink,
- overall_logical);
-}
+/*
+ * Copyright 1992, 1993 by TOSHIBA Corp.
+ *
+ * Permission to use, copy, modify, and distribute this software and its
+ * documentation for any purpose and without fee is hereby granted, provided
+ * that the above copyright notice appear in all copies and that both that
+ * copyright notice and this permission notice appear in supporting
+ * documentation, and that the name of TOSHIBA not be used in advertising
+ * or publicity pertaining to distribution of the software without specific,
+ * written prior permission. TOSHIBA make no representations about the
+ * suitability of this software for any purpose. It is provided "as is"
+ * without express or implied warranty.
+ *
+ * TOSHIBA DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
+ * ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
+ * TOSHIBA BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
+ * ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
+ * WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
+ * ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
+ * SOFTWARE.
+ *
+ * Author: Katsuhisa Yano TOSHIBA Corp.
+ * mopi@osa.ilab.toshiba.co.jp
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+#include "XomGeneric.h"
+#include <stdio.h>
+
+static Status
+_XomGenericTextPerCharExtents(
+ XOC oc,
+ XOMTextType type,
+ XPointer text,
+ int length,
+ XRectangle *ink_buf,
+ XRectangle *logical_buf,
+ int buf_size,
+ int *num_chars,
+ XRectangle *overall_ink,
+ XRectangle *overall_logical)
+{
+ XlcConv conv;
+ XFontStruct *font;
+ Bool is_xchar2b;
+ XPointer args[2];
+ XChar2b xchar2b_buf[BUFSIZ], *xchar2b_ptr;
+ char *xchar_ptr = NULL;
+ XCharStruct *def, *cs, overall;
+ int buf_len, left, require_num;
+ int logical_ascent, logical_descent;
+ Bool first = True;
+
+ conv = _XomInitConverter(oc, type);
+ if (conv == NULL)
+ return 0;
+
+ bzero((char *) &overall, sizeof(XCharStruct));
+ logical_ascent = logical_descent = require_num = *num_chars = 0;
+
+ args[0] = (XPointer) &font;
+ args[1] = (XPointer) &is_xchar2b;
+
+ while (length > 0) {
+ xchar2b_ptr = xchar2b_buf;
+ left = buf_len = BUFSIZ;
+
+ if (_XomConvert(oc, conv, (XPointer *) &text, &length,
+ (XPointer *) &xchar2b_ptr, &left, args, 2) < 0)
+ break;
+ buf_len -= left;
+
+ if (require_num) {
+ require_num += buf_len;
+ continue;
+ }
+ if (buf_size < buf_len) {
+ require_num = *num_chars + buf_len;
+ continue;
+ }
+ buf_size -= buf_len;
+
+ if (first) {
+ logical_ascent = font->ascent;
+ logical_descent = font->descent;
+ } else {
+ logical_ascent = max(logical_ascent, font->ascent);
+ logical_descent = max(logical_descent, font->descent);
+ }
+
+ if (is_xchar2b) {
+ CI_GET_DEFAULT_INFO_2D(font, def)
+ xchar2b_ptr = xchar2b_buf;
+ } else {
+ CI_GET_DEFAULT_INFO_1D(font, def)
+ xchar_ptr = (char *) xchar2b_buf;
+ }
+
+ while (buf_len-- > 0) {
+ if (is_xchar2b) {
+ CI_GET_CHAR_INFO_2D(font, xchar2b_ptr->byte1,
+ xchar2b_ptr->byte2, def, cs)
+ xchar2b_ptr++;
+ } else {
+ CI_GET_CHAR_INFO_1D(font, *xchar_ptr, def, cs)
+ xchar_ptr++;
+ }
+ if (cs == NULL)
+ continue;
+
+ ink_buf->x = overall.width + cs->lbearing;
+ ink_buf->y = -(cs->ascent);
+ ink_buf->width = cs->rbearing - cs->lbearing;
+ ink_buf->height = cs->ascent + cs->descent;
+ ink_buf++;
+
+ logical_buf->x = overall.width;
+ logical_buf->y = -(font->ascent);
+ logical_buf->width = cs->width;
+ logical_buf->height = font->ascent + font->descent;
+ logical_buf++;
+
+ if (first) {
+ overall = *cs;
+ first = False;
+ } else {
+ overall.ascent = max(overall.ascent, cs->ascent);
+ overall.descent = max(overall.descent, cs->descent);
+ overall.lbearing = min(overall.lbearing,
+ overall.width + cs->lbearing);
+ overall.rbearing = max(overall.rbearing,
+ overall.width + cs->rbearing);
+ overall.width += cs->width;
+ }
+
+ (*num_chars)++;
+ }
+ }
+
+ if (require_num) {
+ *num_chars = require_num;
+ return 0;
+ } else {
+ if (overall_ink) {
+ overall_ink->x = overall.lbearing;
+ overall_ink->y = -(overall.ascent);
+ overall_ink->width = overall.rbearing - overall.lbearing;
+ overall_ink->height = overall.ascent + overall.descent;
+ }
+
+ if (overall_logical) {
+ overall_logical->x = 0;
+ overall_logical->y = -(logical_ascent);
+ overall_logical->width = overall.width;
+ overall_logical->height = logical_ascent + logical_descent;
+ }
+ }
+
+ return 1;
+}
+
+Status
+_XmbGenericTextPerCharExtents(XOC oc, _Xconst char *text, int length,
+ XRectangle *ink_buf, XRectangle *logical_buf,
+ int buf_size, int *num_chars,
+ XRectangle *overall_ink,
+ XRectangle *overall_logical)
+{
+ return _XomGenericTextPerCharExtents(oc, XOMMultiByte, (XPointer) text,
+ length, ink_buf, logical_buf, buf_size,
+ num_chars, overall_ink,
+ overall_logical);
+}
+
+Status
+_XwcGenericTextPerCharExtents(XOC oc, _Xconst wchar_t *text, int length,
+ XRectangle *ink_buf, XRectangle *logical_buf,
+ int buf_size, int *num_chars,
+ XRectangle *overall_ink,
+ XRectangle *overall_logical)
+{
+ return _XomGenericTextPerCharExtents(oc, XOMWideChar, (XPointer) text,
+ length, ink_buf, logical_buf, buf_size,
+ num_chars, overall_ink,
+ overall_logical);
+}
+
+Status
+_Xutf8GenericTextPerCharExtents(XOC oc, _Xconst char *text, int length,
+ XRectangle *ink_buf, XRectangle *logical_buf,
+ int buf_size, int *num_chars,
+ XRectangle *overall_ink,
+ XRectangle *overall_logical)
+{
+ return _XomGenericTextPerCharExtents(oc, XOMUtf8String, (XPointer) text,
+ length, ink_buf, logical_buf, buf_size,
+ num_chars, overall_ink,
+ overall_logical);
+}
diff --git a/libX11/modules/om/generic/omXChar.c b/libX11/modules/om/generic/omXChar.c
index 61c8c0b89..ff517d5e5 100644
--- a/libX11/modules/om/generic/omXChar.c
+++ b/libX11/modules/om/generic/omXChar.c
@@ -1,477 +1,477 @@
-/*
- * Copyright 1992, 1993 by TOSHIBA Corp.
- *
- * Permission to use, copy, modify, and distribute this software and its
- * documentation for any purpose and without fee is hereby granted, provided
- * that the above copyright notice appear in all copies and that both that
- * copyright notice and this permission notice appear in supporting
- * documentation, and that the name of TOSHIBA not be used in advertising
- * or publicity pertaining to distribution of the software without specific,
- * written prior permission. TOSHIBA make no representations about the
- * suitability of this software for any purpose. It is provided "as is"
- * without express or implied warranty.
- *
- * TOSHIBA DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
- * ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
- * TOSHIBA BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
- * ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
- * WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
- * ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
- * SOFTWARE.
- *
- * Author: Katsuhisa Yano TOSHIBA Corp.
- * mopi@osa.ilab.toshiba.co.jp
- */
-/*
- * Copyright 1995 by FUJITSU LIMITED
- * This is source code modified by FUJITSU LIMITED under the Joint
- * Development Agreement for the CDE/Motif PST.
- *
- * Modifier: Takanori Tateno FUJITSU LIMITED
- *
- */
-/*
- * Modifiers: Jeff Walls, Paul Anderson (HEWLETT-PACKARD)
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-#include "XlcPublic.h"
-#include "XomGeneric.h"
-#include <stdio.h>
-
-/* for VW/UDC start */
-static Bool
-ismatch_scopes(
- FontData fontdata,
- unsigned long *value,
- Bool is_shift)
-{
- register int scopes_num = fontdata->scopes_num;
- FontScope scopes = fontdata->scopes;
- if (!scopes_num)
- return False;
-
- if(fontdata->font == NULL)
- return False;
-
- for(;scopes_num--;scopes++)
- if ((scopes->start <= (*value & 0x7f7f)) &&
- ((scopes->end) >= (*value & 0x7f7f))){
- if(is_shift == True) {
- if(scopes->shift){
- if(scopes->shift_direction == '+'){
- *value += scopes->shift ;
- } else if( scopes->shift_direction == '-'){
- *value -= scopes->shift ;
- }
- }
- }
- return True;
- }
-
- return False;
-}
-
-static int
-check_vertical_fonttype(
- char *name)
-{
- char *ptr;
- int type = 0;
-
- if(name == (char *)NULL || (int) strlen(name) <= 0)
- return False;
-
- /* Obtains the pointer of CHARSET_ENCODING_FIELD. */
- if((ptr = strchr(name, '-')) == (char *) NULL)
- return False;
- ptr++;
-
- /* Obtains the pointer of vertical_map font type. */
- if((ptr = strchr(ptr, '.')) == (char *) NULL)
- return False;
- ptr++;
-
- switch(*ptr) {
- case '1':
- type = 1; break;
- case '2':
- type = 2; break;
- case '3':
- type = 3; break;
- }
- return type;
-}
-
-/*
-*/
-#define VMAP 0
-#define VROTATE 1
-#define FONTSCOPE 2
-
-FontData
-_XomGetFontDataFromFontSet(
- FontSet fs,
- unsigned char *str,
- int len,
- int *len_ret,
- int is2b,
- int type) /* VMAP , VROTATE , else */
-{
- unsigned long value;
- int num,i,hit,csize;
- FontData fontdata;
- unsigned char *c;
- int vfont_type;
-
- c = str;
- hit = -1;
- if(type == VMAP){
- fontdata = fs->vmap;
- num = fs->vmap_num;
- } else if(type == VROTATE){
- fontdata = (FontData)fs->vrotate;
- num = fs->vrotate_num;
- } else {
- if(fs->font_data_count <= 0 || fs->font_data == (FontData)NULL) {
- fontdata = fs->substitute;
- num = fs->substitute_num;
- }else {
- fontdata = fs->font_data;
- num = fs->font_data_count;
- }
- /* CDExc20229 fix */
- if(fontdata == NULL || num == 0){
- return(NULL);
- }
- }
-
-
- if(is2b){
- csize = 2;
- } else {
- csize = 1;
- }
-
- for(;len;len--){
- if(is2b){
- value = (((unsigned long)*c) << 8)|(unsigned long)*(c + 1);
- } else {
- value = (unsigned long)*c;
- }
-
- /* ### NOTE: This routine DOES NOT WORK!
- * ### We can work around the problem in the calling routine,
- * ### but we really need to understand this better. As it
- * ### stands, the algorithm ALWAYS returns "fontdata[0]"
- * ### for non-VW text! This is clearly wrong. In fact,
- * ### given the new parse_font[name|data]() algorithms,
- * ### we may not even need this routine to do anything
- * ### for non-VW text (since font_set->font always contains
- * ### the best font for this fontset). -- jjw/pma (HP)
- */
- for (i=0;i<num;i++) {
- if(type == VROTATE) {
- if(fontdata[i].font) {
- /* If the num_cr equal zero, all character is rotated. */
- if(fontdata[i].scopes_num == 0) {
- break;
- } else {
- /* The vertical rotate glyph is not have code shift. */
- if (ismatch_scopes(&(fontdata[i]),&value,False)) {
- break;
- }
- }
- }
- } else if(type == VMAP) {
- if(fontdata[i].font) {
- vfont_type = check_vertical_fonttype(fontdata[i].name);
- if(vfont_type == 0 || vfont_type == 1) {
- break;
- } else if(vfont_type == 2 || vfont_type == 3) {
- if(fontdata[i].scopes_num <= 0)
- break;
-
- if (ismatch_scopes(&(fontdata[i]),&value,True)) {
- break;
- }
- }
- }
- } else { /* FONTSCOPE */
- if(fontdata[i].font) {
- if(fontdata[i].scopes_num <= 0)
- break;
- if (ismatch_scopes(&(fontdata[i]),&value,True)){
- break;
- }
- }
- }
- }
- if((hit != -1) && (i != hit)){
- break;
- }
- if(i == num){
- if( type == VROTATE || type == VMAP){
- /* Change 1996.01.23 start */
- if(fs->font_data_count <= 0 ||
- fs->font_data == (FontData)NULL)
- fontdata = fs->substitute;
- else
- fontdata = fs->font_data;
- /* Change 1996.01.23 end */
- }
- hit = 0;
- c += csize;
- break;
- }
- if( hit == -1 ) hit = i;
- if(is2b){
- *c = (unsigned char)(value >> 8);
- *(c + 1) = (unsigned char)(value);
- } else {
- *c = (unsigned char)value;
- }
- c += csize;
- }
- *len_ret = (c - str);
- return(&(fontdata[hit]));
-}
-/* for VW/UDC end */
-
-static FontSet
-_XomGetFontSetFromCharSet(
- XOC oc,
- XlcCharSet charset)
-{
- register FontSet font_set = XOC_GENERIC(oc)->font_set;
- register int num = XOC_GENERIC(oc)->font_set_num;
- XlcCharSet *charset_list;
- int charset_count;
-
- for ( ; num-- > 0; font_set++) {
- charset_count = font_set->charset_count;
- charset_list = font_set->charset_list;
- for ( ; charset_count-- > 0; charset_list++)
- if (*charset_list == charset)
- return font_set;
- }
-
- return (FontSet) NULL;
-}
-
-#ifdef MUSTCOPY
-static void
-cs_to_xchar2b(
- register char *from,
- register XChar2b *to,
- register length)
-{
- while (length-- > 0) {
- to->byte1 = *from++;
- to->byte2 = *from++;
- to++;
- }
-}
-
-static void
-cs_to_xchar2b_gl(
- register char *from,
- register XChar2b *to,
- register length)
-{
- while (length-- > 0) {
- to->byte1 = *from++ & 0x7f;
- to->byte2 = *from++ & 0x7f;
- to++;
- }
-}
-
-static void
-cs_to_xchar2b_gr(
- register char *from,
- register XChar2b *to,
- register length)
-{
- while (length-- > 0) {
- to->byte1 = *from++ | 0x80;
- to->byte2 = *from++ | 0x80;
- to++;
- }
-}
-#endif
-
-static void
-shift_to_gl(
- register char *text,
- register int length)
-{
- while (length-- > 0)
- *text++ &= 0x7f;
-}
-
-static void
-shift_to_gr(
- register char *text,
- register int length)
-{
- while (length-- > 0)
- *text++ |= 0x80;
-}
-
-static Bool
-load_font(
- XOC oc,
- FontSet font_set)
-{
- font_set->font = XLoadQueryFont(oc->core.om->core.display,
- oc->core.font_info.font_name_list[font_set->id]);
- if (font_set->font == NULL)
- return False;
-
- oc->core.font_info.font_struct_list[font_set->id] = font_set->font;
- XFreeFontInfo(NULL, font_set->info, 1);
- font_set->info = NULL;
-
- if (font_set->font->min_byte1 || font_set->font->max_byte1)
- font_set->is_xchar2b = True;
- else
- font_set->is_xchar2b = False;
-
- return True;
-}
-
-int
-_XomConvert(
- XOC oc,
- XlcConv conv,
- XPointer *from,
- int *from_left,
- XPointer *to,
- int *to_left,
- XPointer *args,
- int num_args)
-{
- XPointer cs, lc_args[1];
- XlcCharSet charset;
- int length, cs_left, ret;
- FontSet font_set;
-#ifdef MUSTCOPY
- XChar2b *xchar2b;
- char *buf, buf_local[BUFSIZ];
-#endif
-
- cs = *to;
- cs_left = *to_left;
- lc_args[0] = (XPointer) &charset;
-
- ret = _XlcConvert(conv, from, from_left, &cs, &cs_left, lc_args, 1);
- if (ret < 0)
- return -1;
-
- font_set = _XomGetFontSetFromCharSet(oc, charset);
- if (font_set == NULL)
- return -1;
-
- if (font_set->font == NULL && load_font(oc, font_set) == False)
- return -1;
-
- length = *to_left - cs_left;
-
-#ifdef MUSTCOPY
- if (font_set->is_xchar2b) {
- buf = (length > BUFSIZ) ? Xmalloc(length) : buf_local;
- if (buf == NULL)
- return -1;
- memcpy(buf, (char *) *to, length);
-
- xchar2b = (XChar2b *) *to;
- length >>= 1;
-
- if (font_set->side == charset->side)
- cs_to_xchar2b(buf, xchar2b, length);
- else if (font_set->side == XlcGL)
- cs_to_xchar2b_gl(buf, xchar2b, length);
- else if (font_set->side == XlcGR)
- cs_to_xchar2b_gr(buf, xchar2b, length);
- else
- cs_to_xchar2b(buf, xchar2b, length);
-
- if (buf != buf_local)
- Xfree(buf);
-
- *to = (XPointer) (xchar2b + length);
- *to_left -= length;
- } else
-#endif
- {
- if (font_set->side != charset->side) {
- if (font_set->side == XlcGL)
- shift_to_gl(*to, length);
- else if (font_set->side == XlcGR)
- shift_to_gr(*to, length);
- }
-
- if (font_set->is_xchar2b)
- length >>= 1;
- *to = cs;
- *to_left -= length;
- }
-
- *((XFontStruct **) args[0]) = font_set->font;
- *((Bool *) args[1]) = font_set->is_xchar2b;
- if(num_args >= 3){
- *((FontSet *) args[2]) = font_set;
- }
-
- return ret;
-}
-
-XlcConv
-_XomInitConverter(
- XOC oc,
- XOMTextType type)
-{
- XOCGenericPart *gen = XOC_GENERIC(oc);
- XlcConv *convp;
- const char *conv_type;
- XlcConv conv;
- XLCd lcd;
-
- switch (type) {
- case XOMWideChar:
- convp = &gen->wcs_to_cs;
- conv_type = XlcNWideChar;
- break;
- case XOMMultiByte:
- convp = &gen->mbs_to_cs;
- conv_type = XlcNMultiByte;
- break;
- case XOMUtf8String:
- convp = &gen->utf8_to_cs;
- conv_type = XlcNUtf8String;
- break;
- default:
- return (XlcConv) NULL;
- }
-
- conv = *convp;
- if (conv) {
- _XlcResetConverter(conv);
- return conv;
- }
-
- lcd = oc->core.om->core.lcd;
-
- conv = _XlcOpenConverter(lcd, conv_type, lcd, XlcNFontCharSet);
- if (conv == (XlcConv) NULL) {
- conv = _XlcOpenConverter(lcd, conv_type, lcd, XlcNCharSet);
- if (conv == (XlcConv) NULL)
- return (XlcConv) NULL;
- }
-
- *convp = conv;
- return conv;
-}
+/*
+ * Copyright 1992, 1993 by TOSHIBA Corp.
+ *
+ * Permission to use, copy, modify, and distribute this software and its
+ * documentation for any purpose and without fee is hereby granted, provided
+ * that the above copyright notice appear in all copies and that both that
+ * copyright notice and this permission notice appear in supporting
+ * documentation, and that the name of TOSHIBA not be used in advertising
+ * or publicity pertaining to distribution of the software without specific,
+ * written prior permission. TOSHIBA make no representations about the
+ * suitability of this software for any purpose. It is provided "as is"
+ * without express or implied warranty.
+ *
+ * TOSHIBA DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
+ * ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
+ * TOSHIBA BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
+ * ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
+ * WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
+ * ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
+ * SOFTWARE.
+ *
+ * Author: Katsuhisa Yano TOSHIBA Corp.
+ * mopi@osa.ilab.toshiba.co.jp
+ */
+/*
+ * Copyright 1995 by FUJITSU LIMITED
+ * This is source code modified by FUJITSU LIMITED under the Joint
+ * Development Agreement for the CDE/Motif PST.
+ *
+ * Modifier: Takanori Tateno FUJITSU LIMITED
+ *
+ */
+/*
+ * Modifiers: Jeff Walls, Paul Anderson (HEWLETT-PACKARD)
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+#include "XlcPublic.h"
+#include "XomGeneric.h"
+#include <stdio.h>
+
+/* for VW/UDC start */
+static Bool
+ismatch_scopes(
+ FontData fontdata,
+ unsigned long *value,
+ Bool is_shift)
+{
+ register int scopes_num = fontdata->scopes_num;
+ FontScope scopes = fontdata->scopes;
+ if (!scopes_num)
+ return False;
+
+ if(fontdata->font == NULL)
+ return False;
+
+ for(;scopes_num--;scopes++)
+ if ((scopes->start <= (*value & 0x7f7f)) &&
+ ((scopes->end) >= (*value & 0x7f7f))){
+ if(is_shift == True) {
+ if(scopes->shift){
+ if(scopes->shift_direction == '+'){
+ *value += scopes->shift ;
+ } else if( scopes->shift_direction == '-'){
+ *value -= scopes->shift ;
+ }
+ }
+ }
+ return True;
+ }
+
+ return False;
+}
+
+static int
+check_vertical_fonttype(
+ char *name)
+{
+ char *ptr;
+ int type = 0;
+
+ if(name == (char *)NULL || (int) strlen(name) <= 0)
+ return False;
+
+ /* Obtains the pointer of CHARSET_ENCODING_FIELD. */
+ if((ptr = strchr(name, '-')) == (char *) NULL)
+ return False;
+ ptr++;
+
+ /* Obtains the pointer of vertical_map font type. */
+ if((ptr = strchr(ptr, '.')) == (char *) NULL)
+ return False;
+ ptr++;
+
+ switch(*ptr) {
+ case '1':
+ type = 1; break;
+ case '2':
+ type = 2; break;
+ case '3':
+ type = 3; break;
+ }
+ return type;
+}
+
+/*
+*/
+#define VMAP 0
+#define VROTATE 1
+#define FONTSCOPE 2
+
+FontData
+_XomGetFontDataFromFontSet(
+ FontSet fs,
+ unsigned char *str,
+ int len,
+ int *len_ret,
+ int is2b,
+ int type) /* VMAP , VROTATE , else */
+{
+ unsigned long value;
+ int num,i,hit,csize;
+ FontData fontdata;
+ unsigned char *c;
+ int vfont_type;
+
+ c = str;
+ hit = -1;
+ if(type == VMAP){
+ fontdata = fs->vmap;
+ num = fs->vmap_num;
+ } else if(type == VROTATE){
+ fontdata = (FontData)fs->vrotate;
+ num = fs->vrotate_num;
+ } else {
+ if(fs->font_data_count <= 0 || fs->font_data == (FontData)NULL) {
+ fontdata = fs->substitute;
+ num = fs->substitute_num;
+ }else {
+ fontdata = fs->font_data;
+ num = fs->font_data_count;
+ }
+ /* CDExc20229 fix */
+ if(fontdata == NULL || num == 0){
+ return(NULL);
+ }
+ }
+
+
+ if(is2b){
+ csize = 2;
+ } else {
+ csize = 1;
+ }
+
+ for(;len;len--){
+ if(is2b){
+ value = (((unsigned long)*c) << 8)|(unsigned long)*(c + 1);
+ } else {
+ value = (unsigned long)*c;
+ }
+
+ /* ### NOTE: This routine DOES NOT WORK!
+ * ### We can work around the problem in the calling routine,
+ * ### but we really need to understand this better. As it
+ * ### stands, the algorithm ALWAYS returns "fontdata[0]"
+ * ### for non-VW text! This is clearly wrong. In fact,
+ * ### given the new parse_font[name|data]() algorithms,
+ * ### we may not even need this routine to do anything
+ * ### for non-VW text (since font_set->font always contains
+ * ### the best font for this fontset). -- jjw/pma (HP)
+ */
+ for (i=0;i<num;i++) {
+ if(type == VROTATE) {
+ if(fontdata[i].font) {
+ /* If the num_cr equal zero, all character is rotated. */
+ if(fontdata[i].scopes_num == 0) {
+ break;
+ } else {
+ /* The vertical rotate glyph is not have code shift. */
+ if (ismatch_scopes(&(fontdata[i]),&value,False)) {
+ break;
+ }
+ }
+ }
+ } else if(type == VMAP) {
+ if(fontdata[i].font) {
+ vfont_type = check_vertical_fonttype(fontdata[i].name);
+ if(vfont_type == 0 || vfont_type == 1) {
+ break;
+ } else if(vfont_type == 2 || vfont_type == 3) {
+ if(fontdata[i].scopes_num <= 0)
+ break;
+
+ if (ismatch_scopes(&(fontdata[i]),&value,True)) {
+ break;
+ }
+ }
+ }
+ } else { /* FONTSCOPE */
+ if(fontdata[i].font) {
+ if(fontdata[i].scopes_num <= 0)
+ break;
+ if (ismatch_scopes(&(fontdata[i]),&value,True)){
+ break;
+ }
+ }
+ }
+ }
+ if((hit != -1) && (i != hit)){
+ break;
+ }
+ if(i == num){
+ if( type == VROTATE || type == VMAP){
+ /* Change 1996.01.23 start */
+ if(fs->font_data_count <= 0 ||
+ fs->font_data == (FontData)NULL)
+ fontdata = fs->substitute;
+ else
+ fontdata = fs->font_data;
+ /* Change 1996.01.23 end */
+ }
+ hit = 0;
+ c += csize;
+ break;
+ }
+ if( hit == -1 ) hit = i;
+ if(is2b){
+ *c = (unsigned char)(value >> 8);
+ *(c + 1) = (unsigned char)(value);
+ } else {
+ *c = (unsigned char)value;
+ }
+ c += csize;
+ }
+ *len_ret = (c - str);
+ return(&(fontdata[hit]));
+}
+/* for VW/UDC end */
+
+static FontSet
+_XomGetFontSetFromCharSet(
+ XOC oc,
+ XlcCharSet charset)
+{
+ register FontSet font_set = XOC_GENERIC(oc)->font_set;
+ register int num = XOC_GENERIC(oc)->font_set_num;
+ XlcCharSet *charset_list;
+ int charset_count;
+
+ for ( ; num-- > 0; font_set++) {
+ charset_count = font_set->charset_count;
+ charset_list = font_set->charset_list;
+ for ( ; charset_count-- > 0; charset_list++)
+ if (*charset_list == charset)
+ return font_set;
+ }
+
+ return (FontSet) NULL;
+}
+
+#ifdef MUSTCOPY
+static void
+cs_to_xchar2b(
+ register char *from,
+ register XChar2b *to,
+ register length)
+{
+ while (length-- > 0) {
+ to->byte1 = *from++;
+ to->byte2 = *from++;
+ to++;
+ }
+}
+
+static void
+cs_to_xchar2b_gl(
+ register char *from,
+ register XChar2b *to,
+ register length)
+{
+ while (length-- > 0) {
+ to->byte1 = *from++ & 0x7f;
+ to->byte2 = *from++ & 0x7f;
+ to++;
+ }
+}
+
+static void
+cs_to_xchar2b_gr(
+ register char *from,
+ register XChar2b *to,
+ register length)
+{
+ while (length-- > 0) {
+ to->byte1 = *from++ | 0x80;
+ to->byte2 = *from++ | 0x80;
+ to++;
+ }
+}
+#endif
+
+static void
+shift_to_gl(
+ register char *text,
+ register int length)
+{
+ while (length-- > 0)
+ *text++ &= 0x7f;
+}
+
+static void
+shift_to_gr(
+ register char *text,
+ register int length)
+{
+ while (length-- > 0)
+ *text++ |= 0x80;
+}
+
+static Bool
+load_font(
+ XOC oc,
+ FontSet font_set)
+{
+ font_set->font = XLoadQueryFont(oc->core.om->core.display,
+ oc->core.font_info.font_name_list[font_set->id]);
+ if (font_set->font == NULL)
+ return False;
+
+ oc->core.font_info.font_struct_list[font_set->id] = font_set->font;
+ XFreeFontInfo(NULL, font_set->info, 1);
+ font_set->info = NULL;
+
+ if (font_set->font->min_byte1 || font_set->font->max_byte1)
+ font_set->is_xchar2b = True;
+ else
+ font_set->is_xchar2b = False;
+
+ return True;
+}
+
+int
+_XomConvert(
+ XOC oc,
+ XlcConv conv,
+ XPointer *from,
+ int *from_left,
+ XPointer *to,
+ int *to_left,
+ XPointer *args,
+ int num_args)
+{
+ XPointer cs, lc_args[1];
+ XlcCharSet charset;
+ int length, cs_left, ret;
+ FontSet font_set;
+#ifdef MUSTCOPY
+ XChar2b *xchar2b;
+ char *buf, buf_local[BUFSIZ];
+#endif
+
+ cs = *to;
+ cs_left = *to_left;
+ lc_args[0] = (XPointer) &charset;
+
+ ret = _XlcConvert(conv, from, from_left, &cs, &cs_left, lc_args, 1);
+ if (ret < 0)
+ return -1;
+
+ font_set = _XomGetFontSetFromCharSet(oc, charset);
+ if (font_set == NULL)
+ return -1;
+
+ if (font_set->font == NULL && load_font(oc, font_set) == False)
+ return -1;
+
+ length = *to_left - cs_left;
+
+#ifdef MUSTCOPY
+ if (font_set->is_xchar2b) {
+ buf = (length > BUFSIZ) ? Xmalloc(length) : buf_local;
+ if (buf == NULL)
+ return -1;
+ memcpy(buf, (char *) *to, length);
+
+ xchar2b = (XChar2b *) *to;
+ length >>= 1;
+
+ if (font_set->side == charset->side)
+ cs_to_xchar2b(buf, xchar2b, length);
+ else if (font_set->side == XlcGL)
+ cs_to_xchar2b_gl(buf, xchar2b, length);
+ else if (font_set->side == XlcGR)
+ cs_to_xchar2b_gr(buf, xchar2b, length);
+ else
+ cs_to_xchar2b(buf, xchar2b, length);
+
+ if (buf != buf_local)
+ Xfree(buf);
+
+ *to = (XPointer) (xchar2b + length);
+ *to_left -= length;
+ } else
+#endif
+ {
+ if (font_set->side != charset->side) {
+ if (font_set->side == XlcGL)
+ shift_to_gl(*to, length);
+ else if (font_set->side == XlcGR)
+ shift_to_gr(*to, length);
+ }
+
+ if (font_set->is_xchar2b)
+ length >>= 1;
+ *to = cs;
+ *to_left -= length;
+ }
+
+ *((XFontStruct **) args[0]) = font_set->font;
+ *((Bool *) args[1]) = font_set->is_xchar2b;
+ if(num_args >= 3){
+ *((FontSet *) args[2]) = font_set;
+ }
+
+ return ret;
+}
+
+XlcConv
+_XomInitConverter(
+ XOC oc,
+ XOMTextType type)
+{
+ XOCGenericPart *gen = XOC_GENERIC(oc);
+ XlcConv *convp;
+ const char *conv_type;
+ XlcConv conv;
+ XLCd lcd;
+
+ switch (type) {
+ case XOMWideChar:
+ convp = &gen->wcs_to_cs;
+ conv_type = XlcNWideChar;
+ break;
+ case XOMMultiByte:
+ convp = &gen->mbs_to_cs;
+ conv_type = XlcNMultiByte;
+ break;
+ case XOMUtf8String:
+ convp = &gen->utf8_to_cs;
+ conv_type = XlcNUtf8String;
+ break;
+ default:
+ return (XlcConv) NULL;
+ }
+
+ conv = *convp;
+ if (conv) {
+ _XlcResetConverter(conv);
+ return conv;
+ }
+
+ lcd = oc->core.om->core.lcd;
+
+ conv = _XlcOpenConverter(lcd, conv_type, lcd, XlcNFontCharSet);
+ if (conv == (XlcConv) NULL) {
+ conv = _XlcOpenConverter(lcd, conv_type, lcd, XlcNCharSet);
+ if (conv == (XlcConv) NULL)
+ return (XlcConv) NULL;
+ }
+
+ *convp = conv;
+ return conv;
+}
diff --git a/libX11/nls/.gitignore b/libX11/nls/.gitignore
index d9d1160b6..cdb8fee7a 100644
--- a/libX11/nls/.gitignore
+++ b/libX11/nls/.gitignore
@@ -1,12 +1,12 @@
-Compose
-XLC_LOCALE
-compose.dir
-compose.dir.l1
-compose.dir.l2
-locale.alias
-locale.alias.l1
-locale.alias.l2
-locale.dir
-locale.dir.l1
-locale.dir.l2
-xorg.css
+Compose
+XLC_LOCALE
+compose.dir
+compose.dir.l1
+compose.dir.l2
+locale.alias
+locale.alias.l1
+locale.alias.l2
+locale.dir
+locale.dir.l1
+locale.dir.l2
+xorg.css
diff --git a/libX11/nls/C/XI18N_OBJS b/libX11/nls/C/XI18N_OBJS
index f4065656f..32e4f3588 100644
--- a/libX11/nls/C/XI18N_OBJS
+++ b/libX11/nls/C/XI18N_OBJS
@@ -1,8 +1,8 @@
-# CATEGORY(XLC|XIM|OM) SHARED_LIBRARY_NAME FUNCTION_NAME
-#
-# XI18N objects table for euro locales
-#
-XLC common/xlibi18n _XlcGenericLoader # XLC_open
-XIM common/ximcp _XimOpenIM # XIM_open
-XOM common/xomGeneric _XomGenericOpenOM # XOM_open
-
+# CATEGORY(XLC|XIM|OM) SHARED_LIBRARY_NAME FUNCTION_NAME
+#
+# XI18N objects table for euro locales
+#
+XLC common/xlibi18n _XlcGenericLoader # XLC_open
+XIM common/ximcp _XimOpenIM # XIM_open
+XOM common/xomGeneric _XomGenericOpenOM # XOM_open
+
diff --git a/libX11/nls/C/XLC_LOCALE.pre b/libX11/nls/C/XLC_LOCALE.pre
index 66df3323c..4653930d2 100644
--- a/libX11/nls/C/XLC_LOCALE.pre
+++ b/libX11/nls/C/XLC_LOCALE.pre
@@ -1,61 +1,61 @@
-XCOMM XLocale Database Sample for C.
-XCOMM
-
-XCOMM
-XCOMM XLC_FONTSET category
-XCOMM
-XLC_FONTSET
-XCOMM fs0 class (7 bit ASCII)
-fs0 {
- charset {
- name ISO8859-1:GL
- }
- font {
- primary ISO8859-1:GL
- vertical_rotate all
- }
-}
-END XLC_FONTSET
-
-XCOMM
-XCOMM XLC_XLOCALE category
-XCOMM
-XLC_XLOCALE
-
-encoding_name STRING
-mb_cur_max 1
-state_depend_encoding False
-#if WCHAR32
-wc_encoding_mask \x30000000
-wc_shift_bits 7
-#else
-wc_encoding_mask \x00008080
-wc_shift_bits 8
-#endif
-
-#ifndef X_LOCALE
-use_stdc_env True
-force_convert_to_mb True
-#endif
-
-XCOMM cs0 class
-cs0 {
- side GL:Default
- length 1
- wc_encoding \x00000000
- ct_encoding ISO8859-1:GL
-}
-
-XCOMM cs1 class
-cs1 {
- side GR:Default
- length 1
-#if WCHAR32
- wc_encoding \x30000000
-#else
- wc_encoding \x00008080
-#endif
- ct_encoding ISO8859-1:GR
-}
-
-END XLC_XLOCALE
+XCOMM XLocale Database Sample for C.
+XCOMM
+
+XCOMM
+XCOMM XLC_FONTSET category
+XCOMM
+XLC_FONTSET
+XCOMM fs0 class (7 bit ASCII)
+fs0 {
+ charset {
+ name ISO8859-1:GL
+ }
+ font {
+ primary ISO8859-1:GL
+ vertical_rotate all
+ }
+}
+END XLC_FONTSET
+
+XCOMM
+XCOMM XLC_XLOCALE category
+XCOMM
+XLC_XLOCALE
+
+encoding_name STRING
+mb_cur_max 1
+state_depend_encoding False
+#if WCHAR32
+wc_encoding_mask \x30000000
+wc_shift_bits 7
+#else
+wc_encoding_mask \x00008080
+wc_shift_bits 8
+#endif
+
+#ifndef X_LOCALE
+use_stdc_env True
+force_convert_to_mb True
+#endif
+
+XCOMM cs0 class
+cs0 {
+ side GL:Default
+ length 1
+ wc_encoding \x00000000
+ ct_encoding ISO8859-1:GL
+}
+
+XCOMM cs1 class
+cs1 {
+ side GR:Default
+ length 1
+#if WCHAR32
+ wc_encoding \x30000000
+#else
+ wc_encoding \x00008080
+#endif
+ ct_encoding ISO8859-1:GR
+}
+
+END XLC_XLOCALE
diff --git a/libX11/nls/am_ET.UTF-8/Compose.pre b/libX11/nls/am_ET.UTF-8/Compose.pre
index eb992e6d1..760d94629 100644
--- a/libX11/nls/am_ET.UTF-8/Compose.pre
+++ b/libX11/nls/am_ET.UTF-8/Compose.pre
@@ -1,360 +1,360 @@
-XCOMM
-XCOMM UTF-8 (Unicode) compose sequence
-XCOMM for Ethiopean layout.
-XCOMM Designed as a part of OLPC project
-XCOMM
-XCOMM 2007 Sergey Udaltsov <svu@gnome.org>
-XCOMM
-
-
-XCOMM
-XCOMM Group I
-XCOMM
-
-XCOMM Modifier: /u/
-<u> <U1200> : "áˆ" U1201 # key h (base character ሀ)
-<u> <U1208> : "ሉ" U1209 # key l (base character ለ)
-<u> <U1218> : "ሙ" U1219 # key m (base character መ)
-<u> <U1228> : "ሩ" U1229 # key r (base character ረ)
-<u> <U1230> : "ሱ" U1231 # key s (base character ሰ)
-<u> <U1240> : "á‰" U1241 # key q (base character ቀ)
-<u> <U1260> : "ቡ" U1261 # key b (base character በ)
-<u> <U1270> : "ቱ" U1271 # key t (base character ተ)
-<u> <U1290> : "ኑ" U1291 # key n (base character áŠ)
-<u> <U12A0> : "ኡ" U12A1 # key x (base character አ)
-<u> <U12A8> : "ኩ" U12A9 # key k (base character ከ)
-<u> <U12C8> : "ዉ" U12C9 # key w (base character ወ)
-<u> <U12D8> : "ዙ" U12D9 # key z (base character ዘ)
-<u> <U12E8> : "ዩ" U12E9 # key y (base character የ)
-<u> <U12F0> : "ዱ" U12F1 # key d (base character ደ)
-<u> <U1300> : "áŒ" U1301 # key j (base character ጀ)
-<u> <U1308> : "ጉ" U1309 # key g (base character ገ)
-<u> <U1340> : "á" U1341 # key [ (base character á€)
-<u> <U1348> : "á‰" U1349 # key f (base character áˆ)
-<u> <U1350> : "á‘" U1351 # key p (base character á)
-<u> <U1238> : "ሹ" U1239 # key v (base character ሸ)
-<u> <U1328> : "ጩ" U1329 # key ] (base character ጨ)
-
-XCOMM Modifier: /i/
-<i> <U1200> : "ሂ" U1202 # key h (base character ሀ)
-<i> <U1208> : "ሊ" U120A # key l (base character ለ)
-<i> <U1218> : "ሚ" U121A # key m (base character መ)
-<i> <U1228> : "ሪ" U122A # key r (base character ረ)
-<i> <U1230> : "ሲ" U1232 # key s (base character ሰ)
-<i> <U1240> : "ቂ" U1242 # key q (base character ቀ)
-<i> <U1260> : "ቢ" U1262 # key b (base character በ)
-<i> <U1270> : "ቲ" U1272 # key t (base character ተ)
-<i> <U1290> : "ኒ" U1292 # key n (base character áŠ)
-<i> <U12A0> : "ኢ" U12A2 # key x (base character አ)
-<i> <U12A8> : "ኪ" U12AA # key k (base character ከ)
-<i> <U12C8> : "ዊ" U12CA # key w (base character ወ)
-<i> <U12D8> : "ዚ" U12DA # key z (base character ዘ)
-<i> <U12E8> : "ዪ" U12EA # key y (base character የ)
-<i> <U12F0> : "ዲ" U12F2 # key d (base character ደ)
-<i> <U1300> : "ጂ" U1302 # key j (base character ጀ)
-<i> <U1308> : "ጊ" U130A # key g (base character ገ)
-<i> <U1340> : "á‚" U1342 # key [ (base character á€)
-<i> <U1348> : "áŠ" U134A # key f (base character áˆ)
-<i> <U1350> : "á’" U1352 # key p (base character á)
-<i> <U1238> : "ሺ" U123A # key v (base character ሸ)
-<i> <U1328> : "ጪ" U132A # key ] (base character ጨ)
-
-XCOMM Modifier: /a/
-<a> <U1200> : "ሃ" U1203 # key h (base character ሀ)
-<a> <U1208> : "ላ" U120B # key l (base character ለ)
-<a> <U1218> : "ማ" U121B # key m (base character መ)
-<a> <U1228> : "ራ" U122B # key r (base character ረ)
-<a> <U1230> : "ሳ" U1233 # key s (base character ሰ)
-<a> <U1240> : "ቃ" U1243 # key q (base character ቀ)
-<a> <U1260> : "ባ" U1263 # key b (base character በ)
-<a> <U1270> : "ታ" U1273 # key t (base character ተ)
-<a> <U1290> : "ና" U1293 # key n (base character áŠ)
-<a> <U12A0> : "ኣ" U12A3 # key x (base character አ)
-<a> <U12A8> : "ካ" U12AB # key k (base character ከ)
-<a> <U12C8> : "ዋ" U12CB # key w (base character ወ)
-<a> <U12D8> : "ዛ" U12DB # key z (base character ዘ)
-<a> <U12E8> : "ያ" U12EB # key y (base character የ)
-<a> <U12F0> : "ዳ" U12F3 # key d (base character ደ)
-<a> <U1300> : "ጃ" U1303 # key j (base character ጀ)
-<a> <U1308> : "ጋ" U130B # key g (base character ገ)
-<a> <U1340> : "áƒ" U1343 # key [ (base character á€)
-<a> <U1348> : "á‹" U134B # key f (base character áˆ)
-<a> <U1350> : "á“" U1353 # key p (base character á)
-<a> <U1238> : "ሻ" U123B # key v (base character ሸ)
-<a> <U1328> : "ጫ" U132B # key ] (base character ጨ)
-
-XCOMM Modifier: /e/
-<e> <U1200> : "ሄ" U1204 # key h (base character ሀ)
-<e> <U1208> : "ሌ" U120C # key l (base character ለ)
-<e> <U1218> : "ሜ" U121C # key m (base character መ)
-<e> <U1228> : "ሬ" U122C # key r (base character ረ)
-<e> <U1230> : "ሴ" U1234 # key s (base character ሰ)
-<e> <U1240> : "ቄ" U1244 # key q (base character ቀ)
-<e> <U1260> : "ቤ" U1264 # key b (base character በ)
-<e> <U1270> : "ቴ" U1274 # key t (base character ተ)
-<e> <U1290> : "ኔ" U1294 # key n (base character áŠ)
-<e> <U12A0> : "ኤ" U12A4 # key x (base character አ)
-<e> <U12A8> : "ኬ" U12AC # key k (base character ከ)
-<e> <U12C8> : "ዌ" U12CC # key w (base character ወ)
-<e> <U12D8> : "ዜ" U12DC # key z (base character ዘ)
-<e> <U12E8> : "ዬ" U12EC # key y (base character የ)
-<e> <U12F0> : "á‹´" U12F4 # key d (base character á‹°)
-<e> <U1300> : "ጄ" U1304 # key j (base character ጀ)
-<e> <U1308> : "ጌ" U130C # key g (base character ገ)
-<e> <U1340> : "á„" U1344 # key [ (base character á€)
-<e> <U1348> : "áŒ" U134C # key f (base character áˆ)
-<e> <U1350> : "á”" U1354 # key p (base character á)
-<e> <U1238> : "ሼ" U123C # key v (base character ሸ)
-<e> <U1328> : "ጬ" U132C # key ] (base character ጨ)
-
-XCOMM Modifier: /c/
-<c> <U1200> : "ህ" U1205 # key h (base character ሀ)
-<c> <U1208> : "áˆ" U120D # key l (base character ለ)
-<c> <U1218> : "áˆ" U121D # key m (base character መ)
-<c> <U1228> : "ር" U122D # key r (base character ረ)
-<c> <U1230> : "ስ" U1235 # key s (base character ሰ)
-<c> <U1240> : "ቅ" U1245 # key q (base character ቀ)
-<c> <U1260> : "ብ" U1265 # key b (base character በ)
-<c> <U1270> : "ት" U1275 # key t (base character ተ)
-<c> <U1290> : "ን" U1295 # key n (base character áŠ)
-<c> <U12A0> : "እ" U12A5 # key x (base character አ)
-<c> <U12A8> : "ክ" U12AD # key k (base character ከ)
-<c> <U12C8> : "á‹" U12CD # key w (base character ወ)
-<c> <U12D8> : "á‹" U12DD # key z (base character ዘ)
-<c> <U12E8> : "ይ" U12ED # key y (base character የ)
-<c> <U12F0> : "ድ" U12F5 # key d (base character ደ)
-<c> <U1300> : "ጅ" U1305 # key j (base character ጀ)
-<c> <U1308> : "áŒ" U130D # key g (base character ገ)
-<c> <U1340> : "á…" U1345 # key [ (base character á€)
-<c> <U1348> : "á" U134D # key f (base character áˆ)
-<c> <U1350> : "á•" U1355 # key p (base character á)
-<c> <U1238> : "ሽ" U123D # key v (base character ሸ)
-<c> <U1328> : "ጭ" U132D # key ] (base character ጨ)
-
-XCOMM Modifier: /o/
-<o> <U1200> : "ሆ" U1206 # key h (base character ሀ)
-<o> <U1208> : "ሎ" U120E # key l (base character ለ)
-<o> <U1218> : "ሞ" U121E # key m (base character መ)
-<o> <U1228> : "ሮ" U122E # key r (base character ረ)
-<o> <U1230> : "ሶ" U1236 # key s (base character ሰ)
-<o> <U1240> : "ቆ" U1246 # key q (base character ቀ)
-<o> <U1260> : "ቦ" U1266 # key b (base character በ)
-<o> <U1270> : "ቶ" U1276 # key t (base character ተ)
-<o> <U1290> : "ኖ" U1296 # key n (base character áŠ)
-<o> <U12A0> : "ኦ" U12A6 # key x (base character አ)
-<o> <U12A8> : "ኮ" U12AE # key k (base character ከ)
-<o> <U12C8> : "ዎ" U12CE # key w (base character ወ)
-<o> <U12D8> : "ዞ" U12DE # key z (base character ዘ)
-<o> <U12E8> : "ዮ" U12EE # key y (base character የ)
-<o> <U12F0> : "ዶ" U12F6 # key d (base character ደ)
-<o> <U1300> : "ጆ" U1306 # key j (base character ጀ)
-<o> <U1308> : "ጎ" U130E # key g (base character ገ)
-<o> <U1340> : "á†" U1346 # key [ (base character á€)
-<o> <U1348> : "áŽ" U134E # key f (base character áˆ)
-<o> <U1350> : "á–" U1356 # key p (base character á)
-<o> <U1238> : "ሾ" U123E # key v (base character ሸ)
-<o> <U1328> : "ጮ" U132E # key ] (base character ጨ)
-
-XCOMM Modifier: /A/
-<A> <U1208> : "áˆ" U120F # key l (base character ለ)
-<A> <U1218> : "ሟ" U121F # key m (base character መ)
-<A> <U1228> : "ሯ" U122F # key r (base character ረ)
-<A> <U1230> : "ሷ" U1237 # key s (base character ሰ)
-<A> <U1240> : "ቋ" U124B # key q (base character ቀ)
-<A> <U1260> : "ቧ" U1267 # key b (base character በ)
-<A> <U1270> : "ቷ" U1277 # key t (base character ተ)
-<A> <U1290> : "ኗ" U1297 # key n (base character áŠ)
-<A> <U12A0> : "ኧ" U12A7 # key x (base character አ)
-<A> <U12A8> : "ኳ" U12B3 # key k (base character ከ)
-<A> <U12D8> : "ዟ" U12DF # key z (base character ዘ)
-<A> <U12F0> : "á‹·" U12F7 # key d (base character á‹°)
-<A> <U1300> : "ጇ" U1307 # key j (base character ጀ)
-<A> <U1308> : "ጓ" U1313 # key g (base character ገ)
-<A> <U1348> : "á" U134F # key f (base character áˆ)
-<A> <U1350> : "á—" U1357 # key p (base character á)
-<A> <U1238> : "ሿ" U123F # key v (base character ሸ)
-<A> <U1328> : "ጯ" U132F # key ] (base character ጨ)
-
-XCOMM Modifier: /U/
-<U> <U1240> : "á‰" U124D # key q (base character ቀ)
-<U> <U12A8> : "ኵ" U12B5 # key k (base character ከ)
-<U> <U1308> : "ጕ" U1315 # key g (base character ገ)
-
-XCOMM Modifier: /I/
-<I> <U1240> : "ቊ" U124A # key q (base character ቀ)
-<I> <U12A8> : "ኲ" U12B2 # key k (base character ከ)
-<I> <U1308> : "ጒ" U1312 # key g (base character ገ)
-
-XCOMM Modifier: /E/
-<E> <U1240> : "ቌ" U124C # key q (base character ቀ)
-<E> <U12A8> : "ኴ" U12B4 # key k (base character ከ)
-<E> <U1308> : "ጔ" U1314 # key g (base character ገ)
-
-XCOMM Modifier: /O/
-<O> <U1240> : "ቈ" U1248 # key q (base character ቀ)
-<O> <U12A8> : "ኰ" U12B0 # key k (base character ከ)
-<O> <U1308> : "áŒ" U1310 # key g (base character ገ)
-
-XCOMM
-XCOMM Group II
-XCOMM
-XCOMM Modifier: /u/
-<u> <U1210> : "ሑ" U1211 # key h (base character áˆ)
-<u> <U1220> : "ሡ" U1221 # key s (base character ሠ)
-<u> <U1250> : "ቑ" U1251 # key q (base character á‰)
-<u> <U1278> : "ቹ" U1279 # key c (base character ቸ)
-<u> <U1320> : "ጡ" U1321 # key t (base character ጠ)
-<u> <U1298> : "ኙ" U1299 # key n (base character ኘ)
-<u> <U12D0> : "á‹‘" U12D1 # key x (base character á‹)
-<u> <U12B8> : "ኹ" U12B9 # key k (base character ኸ)
-<u> <U12E0> : "á‹¡" U12E1 # key z (base character á‹ )
-<u> <U12F8> : "ዹ" U12F9 # key d (base character ዸ)
-<u> <U1318> : "ጙ" U1319 # key g (base character ጘ)
-<u> <U1338> : "ጹ" U1339 # key [ (base character ጸ)
-<u> <U1330> : "ጱ" U1331 # key p (base character ጰ)
-<u> <U1280> : "áŠ" U1281 # key ] (base character ኀ)
-<u> <U1268> : "ቩ" U1269 # key v (base character ቨ)
-
-XCOMM Modifier: /i/
-<i> <U1210> : "ሒ" U1212 # key h (base character áˆ)
-<i> <U1220> : "ሢ" U1222 # key s (base character ሠ)
-<i> <U1250> : "ቒ" U1252 # key q (base character á‰)
-<i> <U1278> : "ቺ" U127A # key c (base character ቸ)
-<i> <U1320> : "ጢ" U1322 # key t (base character ጠ)
-<i> <U1298> : "ኚ" U129A # key n (base character ኘ)
-<i> <U12D0> : "á‹’" U12D2 # key x (base character á‹)
-<i> <U12B8> : "ኺ" U12BA # key k (base character ኸ)
-<i> <U12E0> : "á‹¢" U12E2 # key z (base character á‹ )
-<i> <U12F8> : "ዺ" U12FA # key d (base character ዸ)
-<i> <U1318> : "ጚ" U131A # key g (base character ጘ)
-<i> <U1338> : "ጺ" U133A # key [ (base character ጸ)
-<i> <U1330> : "ጲ" U1332 # key p (base character ጰ)
-<i> <U1280> : "ኂ" U1282 # key ] (base character ኀ)
-<i> <U1268> : "ቪ" U126A # key v (base character ቨ)
-
-XCOMM Modifier: /a/
-<a> <U1210> : "ሓ" U1213 # key h (base character áˆ)
-<a> <U1220> : "ሣ" U1223 # key s (base character ሠ)
-<a> <U1250> : "ቓ" U1253 # key q (base character á‰)
-<a> <U1278> : "ቻ" U127B # key c (base character ቸ)
-<a> <U1320> : "ጣ" U1323 # key t (base character ጠ)
-<a> <U1298> : "ኛ" U129B # key n (base character ኘ)
-<a> <U12D0> : "á‹“" U12D3 # key x (base character á‹)
-<a> <U12B8> : "ኻ" U12BB # key k (base character ኸ)
-<a> <U12E0> : "á‹£" U12E3 # key z (base character á‹ )
-<a> <U12F8> : "ዻ" U12FB # key d (base character ዸ)
-<a> <U1318> : "ጛ" U131B # key g (base character ጘ)
-<a> <U1338> : "ጻ" U133B # key [ (base character ጸ)
-<a> <U1330> : "ጳ" U1333 # key p (base character ጰ)
-<a> <U1280> : "ኃ" U1283 # key ] (base character ኀ)
-<a> <U1268> : "ቫ" U126B # key v (base character ቨ)
-
-XCOMM Modifier: /e/
-<e> <U1210> : "ሔ" U1214 # key h (base character áˆ)
-<e> <U1220> : "ሤ" U1224 # key s (base character ሠ)
-<e> <U1250> : "ቔ" U1254 # key q (base character á‰)
-<e> <U1278> : "ቼ" U127C # key c (base character ቸ)
-<e> <U1320> : "ጤ" U1324 # key t (base character ጠ)
-<e> <U1298> : "ኜ" U129C # key n (base character ኘ)
-<e> <U12D0> : "á‹”" U12D4 # key x (base character á‹)
-<e> <U12B8> : "ኼ" U12BC # key k (base character ኸ)
-<e> <U12E0> : "ዤ" U12E4 # key z (base character ዠ)
-<e> <U12F8> : "ዼ" U12FC # key d (base character ዸ)
-<e> <U1318> : "ጜ" U131C # key g (base character ጘ)
-<e> <U1338> : "ጼ" U133C # key [ (base character ጸ)
-<e> <U1330> : "ጴ" U1334 # key p (base character ጰ)
-<e> <U1280> : "ኄ" U1284 # key ] (base character ኀ)
-<e> <U1268> : "ቬ" U126C # key v (base character ቨ)
-
-XCOMM Modifier: /c/
-<c> <U1210> : "ሕ" U1215 # key h (base character áˆ)
-<c> <U1220> : "ሥ" U1225 # key s (base character ሠ)
-<c> <U1250> : "ቕ" U1255 # key q (base character á‰)
-<c> <U1278> : "ች" U127D # key c (base character ቸ)
-<c> <U1320> : "ጥ" U1325 # key t (base character ጠ)
-<c> <U1298> : "áŠ" U129D # key n (base character ኘ)
-<c> <U12D0> : "á‹•" U12D5 # key x (base character á‹)
-<c> <U12B8> : "ኽ" U12BD # key k (base character ኸ)
-<c> <U12E0> : "á‹¥" U12E5 # key z (base character á‹ )
-<c> <U12F8> : "ዽ" U12FD # key d (base character ዸ)
-<c> <U1318> : "áŒ" U131D # key g (base character ጘ)
-<c> <U1338> : "ጽ" U133D # key [ (base character ጸ)
-<c> <U1330> : "ጵ" U1335 # key p (base character ጰ)
-<c> <U1280> : "ኅ" U1285 # key ] (base character ኀ)
-<c> <U1268> : "ቭ" U126D # key v (base character ቨ)
-
-XCOMM Modifier: /o/
-<o> <U1210> : "ሖ" U1216 # key h (base character áˆ)
-<o> <U1220> : "ሦ" U1226 # key s (base character ሠ)
-<o> <U1250> : "ቖ" U1256 # key q (base character á‰)
-<o> <U1278> : "ቾ" U127E # key c (base character ቸ)
-<o> <U1320> : "ጦ" U1326 # key t (base character ጠ)
-<o> <U1298> : "ኞ" U129E # key n (base character ኘ)
-<o> <U12D0> : "á‹–" U12D6 # key x (base character á‹)
-<o> <U12B8> : "ኾ" U12BE # key k (base character ኸ)
-<o> <U12E0> : "ዦ" U12E6 # key z (base character ዠ)
-<o> <U12F8> : "ዾ" U12FE # key d (base character ዸ)
-<o> <U1318> : "ጞ" U131E # key g (base character ጘ)
-<o> <U1338> : "ጾ" U133E # key [ (base character ጸ)
-<o> <U1330> : "ጶ" U1336 # key p (base character ጰ)
-<o> <U1280> : "ኆ" U1286 # key ] (base character ኀ)
-<o> <U1268> : "ቮ" U126E # key v (base character ቨ)
-
-XCOMM Modifier: /A/
-<A> <U1210> : "ሗ" U1217 # key h (base character áˆ)
-<A> <U1220> : "ሧ" U1227 # key s (base character ሠ)
-<A> <U1250> : "ቛ" U125B # key q (base character á‰)
-<A> <U1278> : "ቿ" U127F # key c (base character ቸ)
-<A> <U1320> : "ጧ" U1327 # key t (base character ጠ)
-<A> <U1298> : "ኟ" U129F # key n (base character ኘ)
-<A> <U12B8> : "ዃ" U12C3 # key k (base character ኸ)
-<A> <U12E0> : "ዧ" U12E7 # key z (base character ዠ)
-<A> <U12F8> : "ዿ" U12FF # key d (base character ዸ)
-<A> <U1338> : "ጿ" U133F # key [ (base character ጸ)
-<A> <U1330> : "ጷ" U1337 # key p (base character ጰ)
-<A> <U1280> : "ኋ" U128B # key ] (base character ኀ)
-<A> <U1268> : "ቯ" U126F # key v (base character ቨ)
-
-XCOMM Modifier: /U/
-<U> <U1250> : "á‰" U125D # key q (base character á‰)
-<U> <U12B8> : "ዅ" U12C5 # key k (base character ኸ)
-
-XCOMM Modifier: /I/
-<I> <U1250> : "ቚ" U125A # key q (base character á‰)
-<I> <U12B8> : "ዂ" U12C2 # key k (base character ኸ)
-
-XCOMM Modifier: /E/
-<E> <U1250> : "ቜ" U125C # key q (base character á‰)
-<E> <U12B8> : "ዄ" U12C4 # key k (base character ኸ)
-
-XCOMM Modifier: /O/
-<O> <U1250> : "ቘ" U1258 # key q (base character á‰)
-<O> <U12B8> : "ዀ" U12C0 # key k (base character ኸ)
-
-XCOMM
-XCOMM Group III
-XCOMM
-<backslash> <quotedbl> : "á¥" U1365 # key "
-<backslash> <apostrophe> : "á¦" U1366 # key "
-<backslash> <minus> : "|" U007C # key -
-<backslash> <underscore> : "Â¥" U00A5 # key _
-<backslash> <question> : "á§" U1367 # key ?
-
-XCOMM
-XCOMM Khmer digraphs
-XCOMM
-
-<U17ff> : "ាំ"
-<U17fe> : "ោះ"
-<U17fd> : "áŸáŸ‡"
-<U17fc> : "ុំ"
-<U17fb> : "ុះ"
-
-XCOMM
-XCOMM Arabic Lam-Alef ligatures
-XCOMM
-
-<UFEFB> : "لا" # ARABIC LIGATURE LAM WITH ALEF
-<UFEF7> : "لأ" # ARABIC LIGATURE LAM WITH ALEF WITH HAMZA ABOVE
-<UFEF9> : "لإ" # ARABIC LIGATURE LAM WITH ALEF WITH HAMZA BELOW
-<UFEF5> : "لآ" # ARABIC LIGATURE LAM WITH ALEF WITH MADDA ABOVE
+XCOMM
+XCOMM UTF-8 (Unicode) compose sequence
+XCOMM for Ethiopean layout.
+XCOMM Designed as a part of OLPC project
+XCOMM
+XCOMM 2007 Sergey Udaltsov <svu@gnome.org>
+XCOMM
+
+
+XCOMM
+XCOMM Group I
+XCOMM
+
+XCOMM Modifier: /u/
+<u> <U1200> : "áˆ" U1201 # key h (base character ሀ)
+<u> <U1208> : "ሉ" U1209 # key l (base character ለ)
+<u> <U1218> : "ሙ" U1219 # key m (base character መ)
+<u> <U1228> : "ሩ" U1229 # key r (base character ረ)
+<u> <U1230> : "ሱ" U1231 # key s (base character ሰ)
+<u> <U1240> : "á‰" U1241 # key q (base character ቀ)
+<u> <U1260> : "ቡ" U1261 # key b (base character በ)
+<u> <U1270> : "ቱ" U1271 # key t (base character ተ)
+<u> <U1290> : "ኑ" U1291 # key n (base character áŠ)
+<u> <U12A0> : "ኡ" U12A1 # key x (base character አ)
+<u> <U12A8> : "ኩ" U12A9 # key k (base character ከ)
+<u> <U12C8> : "ዉ" U12C9 # key w (base character ወ)
+<u> <U12D8> : "ዙ" U12D9 # key z (base character ዘ)
+<u> <U12E8> : "ዩ" U12E9 # key y (base character የ)
+<u> <U12F0> : "ዱ" U12F1 # key d (base character ደ)
+<u> <U1300> : "áŒ" U1301 # key j (base character ጀ)
+<u> <U1308> : "ጉ" U1309 # key g (base character ገ)
+<u> <U1340> : "á" U1341 # key [ (base character á€)
+<u> <U1348> : "á‰" U1349 # key f (base character áˆ)
+<u> <U1350> : "á‘" U1351 # key p (base character á)
+<u> <U1238> : "ሹ" U1239 # key v (base character ሸ)
+<u> <U1328> : "ጩ" U1329 # key ] (base character ጨ)
+
+XCOMM Modifier: /i/
+<i> <U1200> : "ሂ" U1202 # key h (base character ሀ)
+<i> <U1208> : "ሊ" U120A # key l (base character ለ)
+<i> <U1218> : "ሚ" U121A # key m (base character መ)
+<i> <U1228> : "ሪ" U122A # key r (base character ረ)
+<i> <U1230> : "ሲ" U1232 # key s (base character ሰ)
+<i> <U1240> : "ቂ" U1242 # key q (base character ቀ)
+<i> <U1260> : "ቢ" U1262 # key b (base character በ)
+<i> <U1270> : "ቲ" U1272 # key t (base character ተ)
+<i> <U1290> : "ኒ" U1292 # key n (base character áŠ)
+<i> <U12A0> : "ኢ" U12A2 # key x (base character አ)
+<i> <U12A8> : "ኪ" U12AA # key k (base character ከ)
+<i> <U12C8> : "ዊ" U12CA # key w (base character ወ)
+<i> <U12D8> : "ዚ" U12DA # key z (base character ዘ)
+<i> <U12E8> : "ዪ" U12EA # key y (base character የ)
+<i> <U12F0> : "ዲ" U12F2 # key d (base character ደ)
+<i> <U1300> : "ጂ" U1302 # key j (base character ጀ)
+<i> <U1308> : "ጊ" U130A # key g (base character ገ)
+<i> <U1340> : "á‚" U1342 # key [ (base character á€)
+<i> <U1348> : "áŠ" U134A # key f (base character áˆ)
+<i> <U1350> : "á’" U1352 # key p (base character á)
+<i> <U1238> : "ሺ" U123A # key v (base character ሸ)
+<i> <U1328> : "ጪ" U132A # key ] (base character ጨ)
+
+XCOMM Modifier: /a/
+<a> <U1200> : "ሃ" U1203 # key h (base character ሀ)
+<a> <U1208> : "ላ" U120B # key l (base character ለ)
+<a> <U1218> : "ማ" U121B # key m (base character መ)
+<a> <U1228> : "ራ" U122B # key r (base character ረ)
+<a> <U1230> : "ሳ" U1233 # key s (base character ሰ)
+<a> <U1240> : "ቃ" U1243 # key q (base character ቀ)
+<a> <U1260> : "ባ" U1263 # key b (base character በ)
+<a> <U1270> : "ታ" U1273 # key t (base character ተ)
+<a> <U1290> : "ና" U1293 # key n (base character áŠ)
+<a> <U12A0> : "ኣ" U12A3 # key x (base character አ)
+<a> <U12A8> : "ካ" U12AB # key k (base character ከ)
+<a> <U12C8> : "ዋ" U12CB # key w (base character ወ)
+<a> <U12D8> : "ዛ" U12DB # key z (base character ዘ)
+<a> <U12E8> : "ያ" U12EB # key y (base character የ)
+<a> <U12F0> : "ዳ" U12F3 # key d (base character ደ)
+<a> <U1300> : "ጃ" U1303 # key j (base character ጀ)
+<a> <U1308> : "ጋ" U130B # key g (base character ገ)
+<a> <U1340> : "áƒ" U1343 # key [ (base character á€)
+<a> <U1348> : "á‹" U134B # key f (base character áˆ)
+<a> <U1350> : "á“" U1353 # key p (base character á)
+<a> <U1238> : "ሻ" U123B # key v (base character ሸ)
+<a> <U1328> : "ጫ" U132B # key ] (base character ጨ)
+
+XCOMM Modifier: /e/
+<e> <U1200> : "ሄ" U1204 # key h (base character ሀ)
+<e> <U1208> : "ሌ" U120C # key l (base character ለ)
+<e> <U1218> : "ሜ" U121C # key m (base character መ)
+<e> <U1228> : "ሬ" U122C # key r (base character ረ)
+<e> <U1230> : "ሴ" U1234 # key s (base character ሰ)
+<e> <U1240> : "ቄ" U1244 # key q (base character ቀ)
+<e> <U1260> : "ቤ" U1264 # key b (base character በ)
+<e> <U1270> : "ቴ" U1274 # key t (base character ተ)
+<e> <U1290> : "ኔ" U1294 # key n (base character áŠ)
+<e> <U12A0> : "ኤ" U12A4 # key x (base character አ)
+<e> <U12A8> : "ኬ" U12AC # key k (base character ከ)
+<e> <U12C8> : "ዌ" U12CC # key w (base character ወ)
+<e> <U12D8> : "ዜ" U12DC # key z (base character ዘ)
+<e> <U12E8> : "ዬ" U12EC # key y (base character የ)
+<e> <U12F0> : "á‹´" U12F4 # key d (base character á‹°)
+<e> <U1300> : "ጄ" U1304 # key j (base character ጀ)
+<e> <U1308> : "ጌ" U130C # key g (base character ገ)
+<e> <U1340> : "á„" U1344 # key [ (base character á€)
+<e> <U1348> : "áŒ" U134C # key f (base character áˆ)
+<e> <U1350> : "á”" U1354 # key p (base character á)
+<e> <U1238> : "ሼ" U123C # key v (base character ሸ)
+<e> <U1328> : "ጬ" U132C # key ] (base character ጨ)
+
+XCOMM Modifier: /c/
+<c> <U1200> : "ህ" U1205 # key h (base character ሀ)
+<c> <U1208> : "áˆ" U120D # key l (base character ለ)
+<c> <U1218> : "áˆ" U121D # key m (base character መ)
+<c> <U1228> : "ር" U122D # key r (base character ረ)
+<c> <U1230> : "ስ" U1235 # key s (base character ሰ)
+<c> <U1240> : "ቅ" U1245 # key q (base character ቀ)
+<c> <U1260> : "ብ" U1265 # key b (base character በ)
+<c> <U1270> : "ት" U1275 # key t (base character ተ)
+<c> <U1290> : "ን" U1295 # key n (base character áŠ)
+<c> <U12A0> : "እ" U12A5 # key x (base character አ)
+<c> <U12A8> : "ክ" U12AD # key k (base character ከ)
+<c> <U12C8> : "á‹" U12CD # key w (base character ወ)
+<c> <U12D8> : "á‹" U12DD # key z (base character ዘ)
+<c> <U12E8> : "ይ" U12ED # key y (base character የ)
+<c> <U12F0> : "ድ" U12F5 # key d (base character ደ)
+<c> <U1300> : "ጅ" U1305 # key j (base character ጀ)
+<c> <U1308> : "áŒ" U130D # key g (base character ገ)
+<c> <U1340> : "á…" U1345 # key [ (base character á€)
+<c> <U1348> : "á" U134D # key f (base character áˆ)
+<c> <U1350> : "á•" U1355 # key p (base character á)
+<c> <U1238> : "ሽ" U123D # key v (base character ሸ)
+<c> <U1328> : "ጭ" U132D # key ] (base character ጨ)
+
+XCOMM Modifier: /o/
+<o> <U1200> : "ሆ" U1206 # key h (base character ሀ)
+<o> <U1208> : "ሎ" U120E # key l (base character ለ)
+<o> <U1218> : "ሞ" U121E # key m (base character መ)
+<o> <U1228> : "ሮ" U122E # key r (base character ረ)
+<o> <U1230> : "ሶ" U1236 # key s (base character ሰ)
+<o> <U1240> : "ቆ" U1246 # key q (base character ቀ)
+<o> <U1260> : "ቦ" U1266 # key b (base character በ)
+<o> <U1270> : "ቶ" U1276 # key t (base character ተ)
+<o> <U1290> : "ኖ" U1296 # key n (base character áŠ)
+<o> <U12A0> : "ኦ" U12A6 # key x (base character አ)
+<o> <U12A8> : "ኮ" U12AE # key k (base character ከ)
+<o> <U12C8> : "ዎ" U12CE # key w (base character ወ)
+<o> <U12D8> : "ዞ" U12DE # key z (base character ዘ)
+<o> <U12E8> : "ዮ" U12EE # key y (base character የ)
+<o> <U12F0> : "ዶ" U12F6 # key d (base character ደ)
+<o> <U1300> : "ጆ" U1306 # key j (base character ጀ)
+<o> <U1308> : "ጎ" U130E # key g (base character ገ)
+<o> <U1340> : "á†" U1346 # key [ (base character á€)
+<o> <U1348> : "áŽ" U134E # key f (base character áˆ)
+<o> <U1350> : "á–" U1356 # key p (base character á)
+<o> <U1238> : "ሾ" U123E # key v (base character ሸ)
+<o> <U1328> : "ጮ" U132E # key ] (base character ጨ)
+
+XCOMM Modifier: /A/
+<A> <U1208> : "áˆ" U120F # key l (base character ለ)
+<A> <U1218> : "ሟ" U121F # key m (base character መ)
+<A> <U1228> : "ሯ" U122F # key r (base character ረ)
+<A> <U1230> : "ሷ" U1237 # key s (base character ሰ)
+<A> <U1240> : "ቋ" U124B # key q (base character ቀ)
+<A> <U1260> : "ቧ" U1267 # key b (base character በ)
+<A> <U1270> : "ቷ" U1277 # key t (base character ተ)
+<A> <U1290> : "ኗ" U1297 # key n (base character áŠ)
+<A> <U12A0> : "ኧ" U12A7 # key x (base character አ)
+<A> <U12A8> : "ኳ" U12B3 # key k (base character ከ)
+<A> <U12D8> : "ዟ" U12DF # key z (base character ዘ)
+<A> <U12F0> : "á‹·" U12F7 # key d (base character á‹°)
+<A> <U1300> : "ጇ" U1307 # key j (base character ጀ)
+<A> <U1308> : "ጓ" U1313 # key g (base character ገ)
+<A> <U1348> : "á" U134F # key f (base character áˆ)
+<A> <U1350> : "á—" U1357 # key p (base character á)
+<A> <U1238> : "ሿ" U123F # key v (base character ሸ)
+<A> <U1328> : "ጯ" U132F # key ] (base character ጨ)
+
+XCOMM Modifier: /U/
+<U> <U1240> : "á‰" U124D # key q (base character ቀ)
+<U> <U12A8> : "ኵ" U12B5 # key k (base character ከ)
+<U> <U1308> : "ጕ" U1315 # key g (base character ገ)
+
+XCOMM Modifier: /I/
+<I> <U1240> : "ቊ" U124A # key q (base character ቀ)
+<I> <U12A8> : "ኲ" U12B2 # key k (base character ከ)
+<I> <U1308> : "ጒ" U1312 # key g (base character ገ)
+
+XCOMM Modifier: /E/
+<E> <U1240> : "ቌ" U124C # key q (base character ቀ)
+<E> <U12A8> : "ኴ" U12B4 # key k (base character ከ)
+<E> <U1308> : "ጔ" U1314 # key g (base character ገ)
+
+XCOMM Modifier: /O/
+<O> <U1240> : "ቈ" U1248 # key q (base character ቀ)
+<O> <U12A8> : "ኰ" U12B0 # key k (base character ከ)
+<O> <U1308> : "áŒ" U1310 # key g (base character ገ)
+
+XCOMM
+XCOMM Group II
+XCOMM
+XCOMM Modifier: /u/
+<u> <U1210> : "ሑ" U1211 # key h (base character áˆ)
+<u> <U1220> : "ሡ" U1221 # key s (base character ሠ)
+<u> <U1250> : "ቑ" U1251 # key q (base character á‰)
+<u> <U1278> : "ቹ" U1279 # key c (base character ቸ)
+<u> <U1320> : "ጡ" U1321 # key t (base character ጠ)
+<u> <U1298> : "ኙ" U1299 # key n (base character ኘ)
+<u> <U12D0> : "á‹‘" U12D1 # key x (base character á‹)
+<u> <U12B8> : "ኹ" U12B9 # key k (base character ኸ)
+<u> <U12E0> : "á‹¡" U12E1 # key z (base character á‹ )
+<u> <U12F8> : "ዹ" U12F9 # key d (base character ዸ)
+<u> <U1318> : "ጙ" U1319 # key g (base character ጘ)
+<u> <U1338> : "ጹ" U1339 # key [ (base character ጸ)
+<u> <U1330> : "ጱ" U1331 # key p (base character ጰ)
+<u> <U1280> : "áŠ" U1281 # key ] (base character ኀ)
+<u> <U1268> : "ቩ" U1269 # key v (base character ቨ)
+
+XCOMM Modifier: /i/
+<i> <U1210> : "ሒ" U1212 # key h (base character áˆ)
+<i> <U1220> : "ሢ" U1222 # key s (base character ሠ)
+<i> <U1250> : "ቒ" U1252 # key q (base character á‰)
+<i> <U1278> : "ቺ" U127A # key c (base character ቸ)
+<i> <U1320> : "ጢ" U1322 # key t (base character ጠ)
+<i> <U1298> : "ኚ" U129A # key n (base character ኘ)
+<i> <U12D0> : "á‹’" U12D2 # key x (base character á‹)
+<i> <U12B8> : "ኺ" U12BA # key k (base character ኸ)
+<i> <U12E0> : "á‹¢" U12E2 # key z (base character á‹ )
+<i> <U12F8> : "ዺ" U12FA # key d (base character ዸ)
+<i> <U1318> : "ጚ" U131A # key g (base character ጘ)
+<i> <U1338> : "ጺ" U133A # key [ (base character ጸ)
+<i> <U1330> : "ጲ" U1332 # key p (base character ጰ)
+<i> <U1280> : "ኂ" U1282 # key ] (base character ኀ)
+<i> <U1268> : "ቪ" U126A # key v (base character ቨ)
+
+XCOMM Modifier: /a/
+<a> <U1210> : "ሓ" U1213 # key h (base character áˆ)
+<a> <U1220> : "ሣ" U1223 # key s (base character ሠ)
+<a> <U1250> : "ቓ" U1253 # key q (base character á‰)
+<a> <U1278> : "ቻ" U127B # key c (base character ቸ)
+<a> <U1320> : "ጣ" U1323 # key t (base character ጠ)
+<a> <U1298> : "ኛ" U129B # key n (base character ኘ)
+<a> <U12D0> : "á‹“" U12D3 # key x (base character á‹)
+<a> <U12B8> : "ኻ" U12BB # key k (base character ኸ)
+<a> <U12E0> : "á‹£" U12E3 # key z (base character á‹ )
+<a> <U12F8> : "ዻ" U12FB # key d (base character ዸ)
+<a> <U1318> : "ጛ" U131B # key g (base character ጘ)
+<a> <U1338> : "ጻ" U133B # key [ (base character ጸ)
+<a> <U1330> : "ጳ" U1333 # key p (base character ጰ)
+<a> <U1280> : "ኃ" U1283 # key ] (base character ኀ)
+<a> <U1268> : "ቫ" U126B # key v (base character ቨ)
+
+XCOMM Modifier: /e/
+<e> <U1210> : "ሔ" U1214 # key h (base character áˆ)
+<e> <U1220> : "ሤ" U1224 # key s (base character ሠ)
+<e> <U1250> : "ቔ" U1254 # key q (base character á‰)
+<e> <U1278> : "ቼ" U127C # key c (base character ቸ)
+<e> <U1320> : "ጤ" U1324 # key t (base character ጠ)
+<e> <U1298> : "ኜ" U129C # key n (base character ኘ)
+<e> <U12D0> : "á‹”" U12D4 # key x (base character á‹)
+<e> <U12B8> : "ኼ" U12BC # key k (base character ኸ)
+<e> <U12E0> : "ዤ" U12E4 # key z (base character ዠ)
+<e> <U12F8> : "ዼ" U12FC # key d (base character ዸ)
+<e> <U1318> : "ጜ" U131C # key g (base character ጘ)
+<e> <U1338> : "ጼ" U133C # key [ (base character ጸ)
+<e> <U1330> : "ጴ" U1334 # key p (base character ጰ)
+<e> <U1280> : "ኄ" U1284 # key ] (base character ኀ)
+<e> <U1268> : "ቬ" U126C # key v (base character ቨ)
+
+XCOMM Modifier: /c/
+<c> <U1210> : "ሕ" U1215 # key h (base character áˆ)
+<c> <U1220> : "ሥ" U1225 # key s (base character ሠ)
+<c> <U1250> : "ቕ" U1255 # key q (base character á‰)
+<c> <U1278> : "ች" U127D # key c (base character ቸ)
+<c> <U1320> : "ጥ" U1325 # key t (base character ጠ)
+<c> <U1298> : "áŠ" U129D # key n (base character ኘ)
+<c> <U12D0> : "á‹•" U12D5 # key x (base character á‹)
+<c> <U12B8> : "ኽ" U12BD # key k (base character ኸ)
+<c> <U12E0> : "á‹¥" U12E5 # key z (base character á‹ )
+<c> <U12F8> : "ዽ" U12FD # key d (base character ዸ)
+<c> <U1318> : "áŒ" U131D # key g (base character ጘ)
+<c> <U1338> : "ጽ" U133D # key [ (base character ጸ)
+<c> <U1330> : "ጵ" U1335 # key p (base character ጰ)
+<c> <U1280> : "ኅ" U1285 # key ] (base character ኀ)
+<c> <U1268> : "ቭ" U126D # key v (base character ቨ)
+
+XCOMM Modifier: /o/
+<o> <U1210> : "ሖ" U1216 # key h (base character áˆ)
+<o> <U1220> : "ሦ" U1226 # key s (base character ሠ)
+<o> <U1250> : "ቖ" U1256 # key q (base character á‰)
+<o> <U1278> : "ቾ" U127E # key c (base character ቸ)
+<o> <U1320> : "ጦ" U1326 # key t (base character ጠ)
+<o> <U1298> : "ኞ" U129E # key n (base character ኘ)
+<o> <U12D0> : "á‹–" U12D6 # key x (base character á‹)
+<o> <U12B8> : "ኾ" U12BE # key k (base character ኸ)
+<o> <U12E0> : "ዦ" U12E6 # key z (base character ዠ)
+<o> <U12F8> : "ዾ" U12FE # key d (base character ዸ)
+<o> <U1318> : "ጞ" U131E # key g (base character ጘ)
+<o> <U1338> : "ጾ" U133E # key [ (base character ጸ)
+<o> <U1330> : "ጶ" U1336 # key p (base character ጰ)
+<o> <U1280> : "ኆ" U1286 # key ] (base character ኀ)
+<o> <U1268> : "ቮ" U126E # key v (base character ቨ)
+
+XCOMM Modifier: /A/
+<A> <U1210> : "ሗ" U1217 # key h (base character áˆ)
+<A> <U1220> : "ሧ" U1227 # key s (base character ሠ)
+<A> <U1250> : "ቛ" U125B # key q (base character á‰)
+<A> <U1278> : "ቿ" U127F # key c (base character ቸ)
+<A> <U1320> : "ጧ" U1327 # key t (base character ጠ)
+<A> <U1298> : "ኟ" U129F # key n (base character ኘ)
+<A> <U12B8> : "ዃ" U12C3 # key k (base character ኸ)
+<A> <U12E0> : "ዧ" U12E7 # key z (base character ዠ)
+<A> <U12F8> : "ዿ" U12FF # key d (base character ዸ)
+<A> <U1338> : "ጿ" U133F # key [ (base character ጸ)
+<A> <U1330> : "ጷ" U1337 # key p (base character ጰ)
+<A> <U1280> : "ኋ" U128B # key ] (base character ኀ)
+<A> <U1268> : "ቯ" U126F # key v (base character ቨ)
+
+XCOMM Modifier: /U/
+<U> <U1250> : "á‰" U125D # key q (base character á‰)
+<U> <U12B8> : "ዅ" U12C5 # key k (base character ኸ)
+
+XCOMM Modifier: /I/
+<I> <U1250> : "ቚ" U125A # key q (base character á‰)
+<I> <U12B8> : "ዂ" U12C2 # key k (base character ኸ)
+
+XCOMM Modifier: /E/
+<E> <U1250> : "ቜ" U125C # key q (base character á‰)
+<E> <U12B8> : "ዄ" U12C4 # key k (base character ኸ)
+
+XCOMM Modifier: /O/
+<O> <U1250> : "ቘ" U1258 # key q (base character á‰)
+<O> <U12B8> : "ዀ" U12C0 # key k (base character ኸ)
+
+XCOMM
+XCOMM Group III
+XCOMM
+<backslash> <quotedbl> : "á¥" U1365 # key "
+<backslash> <apostrophe> : "á¦" U1366 # key "
+<backslash> <minus> : "|" U007C # key -
+<backslash> <underscore> : "Â¥" U00A5 # key _
+<backslash> <question> : "á§" U1367 # key ?
+
+XCOMM
+XCOMM Khmer digraphs
+XCOMM
+
+<U17ff> : "ាំ"
+<U17fe> : "ោះ"
+<U17fd> : "áŸáŸ‡"
+<U17fc> : "ុំ"
+<U17fb> : "ុះ"
+
+XCOMM
+XCOMM Arabic Lam-Alef ligatures
+XCOMM
+
+<UFEFB> : "لا" # ARABIC LIGATURE LAM WITH ALEF
+<UFEF7> : "لأ" # ARABIC LIGATURE LAM WITH ALEF WITH HAMZA ABOVE
+<UFEF9> : "لإ" # ARABIC LIGATURE LAM WITH ALEF WITH HAMZA BELOW
+<UFEF5> : "لآ" # ARABIC LIGATURE LAM WITH ALEF WITH MADDA ABOVE
diff --git a/libX11/nls/armscii-8/Compose.pre b/libX11/nls/armscii-8/Compose.pre
index f6299bbb2..f9ac7dead 100644
--- a/libX11/nls/armscii-8/Compose.pre
+++ b/libX11/nls/armscii-8/Compose.pre
@@ -1,14 +1,14 @@
-XCOMM
-XCOMM ARMSCII-8 Compose Sequence
-XCOMM
-XCOMM Sequence Definition
-XCOMM
-XCOMM
-XCOMM This file currently has no entries. It appears that a compose file (even
-XCOMM just an empty one) is required for the appropriate keysyms to work for
-XCOMM this encoding.
-XCOMM
-XCOMM <Multi_key> Means <Compose>
-XCOMM Special Character
-
-XCOMM End of Sequence Definition
+XCOMM
+XCOMM ARMSCII-8 Compose Sequence
+XCOMM
+XCOMM Sequence Definition
+XCOMM
+XCOMM
+XCOMM This file currently has no entries. It appears that a compose file (even
+XCOMM just an empty one) is required for the appropriate keysyms to work for
+XCOMM this encoding.
+XCOMM
+XCOMM <Multi_key> Means <Compose>
+XCOMM Special Character
+
+XCOMM End of Sequence Definition
diff --git a/libX11/nls/armscii-8/XI18N_OBJS b/libX11/nls/armscii-8/XI18N_OBJS
index 3ece32e62..02d87c60d 100644
--- a/libX11/nls/armscii-8/XI18N_OBJS
+++ b/libX11/nls/armscii-8/XI18N_OBJS
@@ -1,7 +1,7 @@
-# CATEGORY(XLC|XIM|OM) SHARED_LIBRARY_NAME FUNCTION_NAME
-#
-# XI18N objects table for armscii-8 locale
-#
-XLC common/xlcDef _XlcDefaultLoader # XLC_open
-XIM common/ximcp _XimOpenIM _XimRegisterIMInstantiateCallback _XimUnRegisterIMInstantiateCallback # XIM_open XIM_register XIM_unregister
-XOM common/xomGeneric _XomGenericOpenOM # XOM_open
+# CATEGORY(XLC|XIM|OM) SHARED_LIBRARY_NAME FUNCTION_NAME
+#
+# XI18N objects table for armscii-8 locale
+#
+XLC common/xlcDef _XlcDefaultLoader # XLC_open
+XIM common/ximcp _XimOpenIM _XimRegisterIMInstantiateCallback _XimUnRegisterIMInstantiateCallback # XIM_open XIM_register XIM_unregister
+XOM common/xomGeneric _XomGenericOpenOM # XOM_open
diff --git a/libX11/nls/armscii-8/XLC_LOCALE.pre b/libX11/nls/armscii-8/XLC_LOCALE.pre
index 258ce257d..72013f711 100644
--- a/libX11/nls/armscii-8/XLC_LOCALE.pre
+++ b/libX11/nls/armscii-8/XLC_LOCALE.pre
@@ -1,79 +1,79 @@
-XCOMM XLocale Database Sample for armscii-8.
-XCOMM
-
-XCOMM
-XCOMM XLC_FONTSET category
-XCOMM
-XLC_FONTSET
-XCOMM fs0 class (7 bit ASCII)
-fs0 {
- charset {
- name ISO8859-1:GL
- }
- font {
- primary ARMSCII-8:GL
- substitute ISO8859-1:GL
- }
-}
-XCOMM fs1 class
-fs1 {
- charset ARMSCII-8:GR
- font ARMSCII-8:GR
-}
-END XLC_FONTSET
-
-XCOMM
-XCOMM XLC_CHARSET_DEFINE category
-XCOMM
-XLC_CHARSET_DEFINE
-csd0 {
- charset_name ARMSCII-8
- side GR
- length 1
- string_encoding False
- sequence \x1b%/1
-}
-END XLC_CHARSET_DEFINE
-
-XCOMM
-XCOMM XLC_XLOCALE category
-XCOMM
-XLC_XLOCALE
-
-encoding_name ARMSCII-8
-mb_cur_max 1
-state_depend_encoding False
-#if WCHAR32
-wc_encoding_mask \x30000000
-wc_shift_bits 7
-#else
-wc_encoding_mask \x00008080
-wc_shift_bits 8
-#endif
-
-#ifndef X_LOCALE
-use_stdc_env True
-#endif
-
-XCOMM cs0 class
-cs0 {
- side GL:Default
- length 1
- wc_encoding \x00000000
- ct_encoding ARMSCII-8:GL; ISO8859-1:GL
-}
-
-
-XCOMM cs1 class
-cs1 {
- side GR:Default
- length 1
-#if WCHAR32
- wc_encoding \x30000000
-#else
- wc_encoding \x00008080
-#endif
- ct_encoding ARMSCII-8:GR
-}
-
-END XLC_XLOCALE
+XCOMM XLocale Database Sample for armscii-8.
+XCOMM
+
+XCOMM
+XCOMM XLC_FONTSET category
+XCOMM
+XLC_FONTSET
+XCOMM fs0 class (7 bit ASCII)
+fs0 {
+ charset {
+ name ISO8859-1:GL
+ }
+ font {
+ primary ARMSCII-8:GL
+ substitute ISO8859-1:GL
+ }
+}
+XCOMM fs1 class
+fs1 {
+ charset ARMSCII-8:GR
+ font ARMSCII-8:GR
+}
+END XLC_FONTSET
+
+XCOMM
+XCOMM XLC_CHARSET_DEFINE category
+XCOMM
+XLC_CHARSET_DEFINE
+csd0 {
+ charset_name ARMSCII-8
+ side GR
+ length 1
+ string_encoding False
+ sequence \x1b%/1
+}
+END XLC_CHARSET_DEFINE
+
+XCOMM
+XCOMM XLC_XLOCALE category
+XCOMM
+XLC_XLOCALE
+
+encoding_name ARMSCII-8
+mb_cur_max 1
+state_depend_encoding False
+#if WCHAR32
+wc_encoding_mask \x30000000
+wc_shift_bits 7
+#else
+wc_encoding_mask \x00008080
+wc_shift_bits 8
+#endif
+
+#ifndef X_LOCALE
+use_stdc_env True
+#endif
+
+XCOMM cs0 class
+cs0 {
+ side GL:Default
+ length 1
+ wc_encoding \x00000000
+ ct_encoding ARMSCII-8:GL; ISO8859-1:GL
+}
+
+
+XCOMM cs1 class
+cs1 {
+ side GR:Default
+ length 1
+#if WCHAR32
+ wc_encoding \x30000000
+#else
+ wc_encoding \x00008080
+#endif
+ ct_encoding ARMSCII-8:GR
+}
+
+END XLC_XLOCALE
diff --git a/libX11/nls/compose-check.pl b/libX11/nls/compose-check.pl
index a12db0c82..399bfa99c 100644
--- a/libX11/nls/compose-check.pl
+++ b/libX11/nls/compose-check.pl
@@ -1,161 +1,161 @@
-#! /usr/bin/perl
-#
-# Copyright 2009 Oracle and/or its affiliates. All rights reserved.
-#
-# Permission is hereby granted, free of charge, to any person obtaining a
-# copy of this software and associated documentation files (the "Software"),
-# to deal in the Software without restriction, including without limitation
-# the rights to use, copy, modify, merge, publish, distribute, sublicense,
-# and/or sell copies of the Software, and to permit persons to whom the
-# Software is furnished to do so, subject to the following conditions:
-#
-# The above copyright notice and this permission notice (including the next
-# paragraph) shall be included in all copies or substantial portions of the
-# Software.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-# THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-# DEALINGS IN THE SOFTWARE.
-#
-
-#
-# Check a compose file for duplicate/conflicting entries and other common errors
-#
-
-# Compose file grammar is defined in modules/im/ximcp/imLcPrs.c
-
-use strict;
-use warnings;
-
-my $error_count = 0;
-
-if (scalar(@ARGV) == 0) {
- if ( -f 'Compose' ) {
- push @ARGV, 'Compose';
- } else {
- push @ARGV, glob '*/Compose';
- }
-}
-
-foreach my $cf (@ARGV) {
- # print "Checking $cf\n";
- $error_count += check_compose_file($cf);
-}
-
-exit($error_count);
-
-sub check_compose_file {
- my ($filename) = @_;
- my $errors = 0;
-
- my %compose_table = ();
- my $line = 0;
- my $pre_file = ($filename =~ m{\.pre$}) ? 1 : 0;
- my $in_c_comment = 0;
-
- open my $COMPOSE, '<', $filename or die "Could not open $filename: $!";
-
- COMPOSE_LINE:
- while (my $cl = <$COMPOSE>) {
- $line++;
- chomp($cl);
- my $original_line = $cl;
-
- # Special handling for changes cpp makes to .pre files
- if ($pre_file == 1) {
- if ($in_c_comment) { # Look for end of multi-line C comment
- if ($cl =~ m{\*/(.*)$}) {
- $cl = $1;
- $in_c_comment = 0;
- } else {
- next;
- }
- }
- $cl =~ s{/\*.\**/}{}; # Remove single line C comments
- if ($cl =~ m{^(.*)/\*}) { # Start of a multi-line C comment
- $cl = $1;
- $in_c_comment = 1;
- }
- next if $cl =~ m{^\s*XCOMM}; # Skip pre-processing comments
- }
-
- $cl =~ s{#.*$}{}; # Remove comments
- next if $cl =~ m{^\s*$}; # Skip blank (or comment-only) lines
- chomp($cl);
-
- if ($cl =~ m{^(STATE\s+|END_STATE)}) { # Sun extension to compose file syntax
- %compose_table = ();
- }
- elsif ($cl =~ m{^([^:]+)\s*:\s*(.+)$}) {
- my ($seq, $action) = ($1, $2);
- $seq =~ s{\s+$}{};
-
- my @keys = grep { $_ !~ m/^\s*$/ } split /[\s\<\>]+/, $seq;
-
- my $final_key = pop @keys;
- my $keytable = \%compose_table;
-
- foreach my $k (@keys) {
- if ($k =~ m{^U([[:xdigit:]]+)$}) {
- $k = 'U' . lc($1);
- }
- if (exists $keytable->{$k}) {
- $keytable = $keytable->{$k};
- if (ref($keytable) ne 'HASH') {
- print
- "Clash with existing sequence in $filename on line $line: $seq\n";
- print_sequences([$line, $original_line]);
- print_sequences($keytable);
- $errors++;
- next COMPOSE_LINE;
- }
- } else {
- my $new_keytable = {};
- $keytable->{$k} = $new_keytable;
- $keytable = $new_keytable;
- }
- }
-
- if (exists $keytable->{$final_key}) {
- print "Clash with existing sequence in $filename on line $line: $seq\n";
- print_sequences([$line, $original_line]);
- print_sequences($keytable->{$final_key});
- $errors++;
- } else {
- $keytable->{$final_key} = [$line, $original_line];
- }
- } elsif ($cl =~ m{^(STATE_TYPE:|\@StartDeadKeyMap|\@EndDeadKeyMap)}) {
- # ignore
- } elsif ($cl =~ m{^include "(.*)"}) {
- my $incpath = $1;
- if (($pre_file == 1) && ($incpath !~ m{^X11_LOCALEDATADIR/})) {
- print "Include path starts with $incpath instead of X11_LOCALEDATADIR\n",
- " -- may not find include files when installed in alternate paths\n\n";
- }
- } else {
- print 'Unrecognized pattern in ', $filename, ' on line #', $line, ":\n ",
- $cl, "\n";
- }
- }
- close $COMPOSE;
-
- return $errors;
-}
-
-sub print_sequences {
- my ($entry_ref) = @_;
-
- if (ref($entry_ref) eq 'HASH') {
- foreach my $h (values %{$entry_ref}) {
- print_sequences($h);
- }
- } else {
- my ($line, $seq) = @{$entry_ref};
-
- print " line #", $line, ": ", $seq, "\n";
- }
-}
+#! /usr/bin/perl
+#
+# Copyright 2009 Oracle and/or its affiliates. All rights reserved.
+#
+# Permission is hereby granted, free of charge, to any person obtaining a
+# copy of this software and associated documentation files (the "Software"),
+# to deal in the Software without restriction, including without limitation
+# the rights to use, copy, modify, merge, publish, distribute, sublicense,
+# and/or sell copies of the Software, and to permit persons to whom the
+# Software is furnished to do so, subject to the following conditions:
+#
+# The above copyright notice and this permission notice (including the next
+# paragraph) shall be included in all copies or substantial portions of the
+# Software.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+# THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+# DEALINGS IN THE SOFTWARE.
+#
+
+#
+# Check a compose file for duplicate/conflicting entries and other common errors
+#
+
+# Compose file grammar is defined in modules/im/ximcp/imLcPrs.c
+
+use strict;
+use warnings;
+
+my $error_count = 0;
+
+if (scalar(@ARGV) == 0) {
+ if ( -f 'Compose' ) {
+ push @ARGV, 'Compose';
+ } else {
+ push @ARGV, glob '*/Compose';
+ }
+}
+
+foreach my $cf (@ARGV) {
+ # print "Checking $cf\n";
+ $error_count += check_compose_file($cf);
+}
+
+exit($error_count);
+
+sub check_compose_file {
+ my ($filename) = @_;
+ my $errors = 0;
+
+ my %compose_table = ();
+ my $line = 0;
+ my $pre_file = ($filename =~ m{\.pre$}) ? 1 : 0;
+ my $in_c_comment = 0;
+
+ open my $COMPOSE, '<', $filename or die "Could not open $filename: $!";
+
+ COMPOSE_LINE:
+ while (my $cl = <$COMPOSE>) {
+ $line++;
+ chomp($cl);
+ my $original_line = $cl;
+
+ # Special handling for changes cpp makes to .pre files
+ if ($pre_file == 1) {
+ if ($in_c_comment) { # Look for end of multi-line C comment
+ if ($cl =~ m{\*/(.*)$}) {
+ $cl = $1;
+ $in_c_comment = 0;
+ } else {
+ next;
+ }
+ }
+ $cl =~ s{/\*.\**/}{}; # Remove single line C comments
+ if ($cl =~ m{^(.*)/\*}) { # Start of a multi-line C comment
+ $cl = $1;
+ $in_c_comment = 1;
+ }
+ next if $cl =~ m{^\s*XCOMM}; # Skip pre-processing comments
+ }
+
+ $cl =~ s{#.*$}{}; # Remove comments
+ next if $cl =~ m{^\s*$}; # Skip blank (or comment-only) lines
+ chomp($cl);
+
+ if ($cl =~ m{^(STATE\s+|END_STATE)}) { # Sun extension to compose file syntax
+ %compose_table = ();
+ }
+ elsif ($cl =~ m{^([^:]+)\s*:\s*(.+)$}) {
+ my ($seq, $action) = ($1, $2);
+ $seq =~ s{\s+$}{};
+
+ my @keys = grep { $_ !~ m/^\s*$/ } split /[\s\<\>]+/, $seq;
+
+ my $final_key = pop @keys;
+ my $keytable = \%compose_table;
+
+ foreach my $k (@keys) {
+ if ($k =~ m{^U([[:xdigit:]]+)$}) {
+ $k = 'U' . lc($1);
+ }
+ if (exists $keytable->{$k}) {
+ $keytable = $keytable->{$k};
+ if (ref($keytable) ne 'HASH') {
+ print
+ "Clash with existing sequence in $filename on line $line: $seq\n";
+ print_sequences([$line, $original_line]);
+ print_sequences($keytable);
+ $errors++;
+ next COMPOSE_LINE;
+ }
+ } else {
+ my $new_keytable = {};
+ $keytable->{$k} = $new_keytable;
+ $keytable = $new_keytable;
+ }
+ }
+
+ if (exists $keytable->{$final_key}) {
+ print "Clash with existing sequence in $filename on line $line: $seq\n";
+ print_sequences([$line, $original_line]);
+ print_sequences($keytable->{$final_key});
+ $errors++;
+ } else {
+ $keytable->{$final_key} = [$line, $original_line];
+ }
+ } elsif ($cl =~ m{^(STATE_TYPE:|\@StartDeadKeyMap|\@EndDeadKeyMap)}) {
+ # ignore
+ } elsif ($cl =~ m{^include "(.*)"}) {
+ my $incpath = $1;
+ if (($pre_file == 1) && ($incpath !~ m{^X11_LOCALEDATADIR/})) {
+ print "Include path starts with $incpath instead of X11_LOCALEDATADIR\n",
+ " -- may not find include files when installed in alternate paths\n\n";
+ }
+ } else {
+ print 'Unrecognized pattern in ', $filename, ' on line #', $line, ":\n ",
+ $cl, "\n";
+ }
+ }
+ close $COMPOSE;
+
+ return $errors;
+}
+
+sub print_sequences {
+ my ($entry_ref) = @_;
+
+ if (ref($entry_ref) eq 'HASH') {
+ foreach my $h (values %{$entry_ref}) {
+ print_sequences($h);
+ }
+ } else {
+ my ($line, $seq) = @{$entry_ref};
+
+ print " line #", $line, ": ", $seq, "\n";
+ }
+}
diff --git a/libX11/nls/compose.dir.pre b/libX11/nls/compose.dir.pre
index f18d3cb62..14a2fa987 100644
--- a/libX11/nls/compose.dir.pre
+++ b/libX11/nls/compose.dir.pre
@@ -1,420 +1,420 @@
-XCOMM
-XCOMM This file contains compose table file name.
-XCOMM The first word is the compose table file name and
-XCOMM the second word is full locale name.
-XCOMM
-XCOMM
-iso8859-1/Compose: C
-iso8859-1/Compose: af_ZA.ISO8859-1
-iso8859-6/Compose: ar_AA.ISO8859-6
-iso8859-6/Compose: ar_BH.ISO8859-6
-iso8859-6/Compose: ar_DZ.ISO8859-6
-iso8859-6/Compose: ar_EG.ISO8859-6
-iso8859-6/Compose: ar_IQ.ISO8859-6
-iso8859-6/Compose: ar_JO.ISO8859-6
-iso8859-6/Compose: ar_KW.ISO8859-6
-iso8859-6/Compose: ar_LB.ISO8859-6
-iso8859-6/Compose: ar_LY.ISO8859-6
-iso8859-6/Compose: ar_MA.ISO8859-6
-iso8859-6/Compose: ar_OM.ISO8859-6
-iso8859-6/Compose: ar_QA.ISO8859-6
-iso8859-6/Compose: ar_SA.ISO8859-6
-iso8859-6/Compose: ar_TN.ISO8859-6
-iso8859-6/Compose: ar_YE.ISO8859-6
-iso8859-9e/Compose: az_AZ.ISO8859-9E
-koi8-c/Compose: a3_AZ.KOI8-C
-microsoft-cp1251/Compose: be_BY.CP1251
-iso8859-5/Compose: bg_BG.ISO8859-5
-microsoft-cp1251/Compose: bg_BG.CP1251
-iso8859-1/Compose: br_FR.ISO8859-1
-iso8859-14/Compose: br_FR.ISO8859-14
-iso8859-15/Compose: br_FR.ISO8859-15
-iso8859-2/Compose: bs_BA.ISO8859-2
-iso8859-1/Compose: ca_AD.ISO8859-1
-iso8859-15/Compose: ca_AD.ISO8859-15
-iso8859-1/Compose: ca_ES.ISO8859-1
-iso8859-15/Compose: ca_ES.ISO8859-15
-iso8859-1/Compose: ca_FR.ISO8859-1
-iso8859-15/Compose: ca_FR.ISO8859-15
-iso8859-1/Compose: ca_IT.ISO8859-1
-iso8859-15/Compose: ca_IT.ISO8859-15
-iso8859-2/Compose: cs_CZ.ISO8859-2
-iso8859-1/Compose: cy_GB.ISO8859-1
-iso8859-14/Compose: cy_GB.ISO8859-14
-iso8859-15/Compose: cy_GB.ISO8859-15
-iso8859-1/Compose: da_DK.ISO8859-1
-iso8859-15/Compose: da_DK.ISO8859-15
-iso8859-1/Compose: de_AT.ISO8859-1
-iso8859-15/Compose: de_AT.ISO8859-15
-iso8859-1/Compose: de_CH.ISO8859-1
-iso8859-15/Compose: de_CH.ISO8859-15
-iso8859-1/Compose: de_DE.ISO8859-1
-iso8859-15/Compose: de_DE.ISO8859-15
-iso8859-1/Compose: de_LI.ISO8859-1
-iso8859-15/Compose: de_LI.ISO8859-15
-iso8859-1/Compose: de_LU.ISO8859-1
-iso8859-15/Compose: de_LU.ISO8859-15
-iso8859-7/Compose: el_GR.ISO8859-7
-iso8859-1/Compose: en_AU.ISO8859-1
-iso8859-1/Compose: en_BZ.ISO8859-1
-iso8859-1/Compose: en_CA.ISO8859-1
-iso8859-1/Compose: en_GB.ISO8859-1
-iso8859-15/Compose: en_GB.ISO8859-15
-iso8859-1/Compose: en_IE.ISO8859-1
-iso8859-15/Compose: en_IE.ISO8859-15
-iso8859-1/Compose: en_JM.ISO8859-1
-iso8859-1/Compose: en_NZ.ISO8859-1
-iso8859-1/Compose: en_TT.ISO8859-1
-iso8859-1/Compose: en_UK.ISO8859-1
-iso8859-15/Compose: en_UK.ISO8859-15
-iso8859-1/Compose: en_US.ISO8859-1
-iso8859-15/Compose: en_US.ISO8859-15
-iso8859-1/Compose: en_ZA.ISO8859-1
-iso8859-15/Compose: en_ZA.ISO8859-15
-iso8859-3/Compose: eo_XX.ISO8859-3
-iso8859-1/Compose: es_AR.ISO8859-1
-iso8859-1/Compose: es_BO.ISO8859-1
-iso8859-1/Compose: es_CL.ISO8859-1
-iso8859-1/Compose: es_CO.ISO8859-1
-iso8859-1/Compose: es_CR.ISO8859-1
-iso8859-1/Compose: es_DO.ISO8859-1
-iso8859-1/Compose: es_EC.ISO8859-1
-iso8859-1/Compose: es_ES.ISO8859-1
-iso8859-15/Compose: es_ES.ISO8859-15
-iso8859-1/Compose: es_GT.ISO8859-1
-iso8859-1/Compose: es_HN.ISO8859-1
-iso8859-1/Compose: es_MX.ISO8859-1
-iso8859-1/Compose: es_NI.ISO8859-1
-iso8859-1/Compose: es_PA.ISO8859-1
-iso8859-1/Compose: es_PE.ISO8859-1
-iso8859-1/Compose: es_PR.ISO8859-1
-iso8859-1/Compose: es_PY.ISO8859-1
-iso8859-1/Compose: es_SV.ISO8859-1
-iso8859-1/Compose: es_UY.ISO8859-1
-iso8859-1/Compose: es_VE.ISO8859-1
-iso8859-1/Compose: et_EE.ISO8859-1
-iso8859-4/Compose: et_EE.ISO8859-4
-iso8859-13/Compose: et_EE.ISO8859-13
-iso8859-15/Compose: et_EE.ISO8859-15
-iso8859-1/Compose: eu_ES.ISO8859-1
-iso8859-15/Compose: eu_ES.ISO8859-15
-isiri-3342/Compose: fa_IR.ISIRI-3342
-iso8859-1/Compose: fi_FI.ISO8859-1
-iso8859-15/Compose: fi_FI.ISO8859-15
-iso8859-1/Compose: fo_FO.ISO8859-1
-iso8859-15/Compose: fo_FO.ISO8859-15
-iso8859-1/Compose: fr_BE.ISO8859-1
-iso8859-15/Compose: fr_BE.ISO8859-15
-iso8859-1/Compose: fr_CA.ISO8859-1
-iso8859-15/Compose: fr_CA.ISO8859-15
-iso8859-1/Compose: fr_CH.ISO8859-1
-iso8859-15/Compose: fr_CH.ISO8859-15
-iso8859-1/Compose: fr_FR.ISO8859-1
-iso8859-15/Compose: fr_FR.ISO8859-15
-iso8859-1/Compose: fr_LU.ISO8859-1
-iso8859-15/Compose: fr_LU.ISO8859-15
-iso8859-1/Compose: ga_IE.ISO8859-1
-iso8859-14/Compose: ga_IE.ISO8859-14
-iso8859-15/Compose: ga_IE.ISO8859-15
-iso8859-1/Compose: gd_GB.ISO8859-1
-iso8859-14/Compose: gd_GB.ISO8859-14
-iso8859-15/Compose: gd_GB.ISO8859-15
-iso8859-1/Compose: gl_ES.ISO8859-1
-iso8859-15/Compose: gl_ES.ISO8859-15
-iso8859-1/Compose: gv_GB.ISO8859-1
-iso8859-14/Compose: gv_GB.ISO8859-14
-iso8859-15/Compose: gv_GB.ISO8859-15
-iso8859-8/Compose: he_IL.ISO8859-8
-microsoft-cp1255/Compose: he_IL.CP1255
-iscii-dev/Compose: hi_IN.ISCII-DEV
-iso8859-2/Compose: hr_HR.ISO8859-2
-iso8859-2/Compose: hu_HU.ISO8859-2
-armscii-8/Compose: hy_AM.ARMSCII-8
-iso8859-1/Compose: id_ID.ISO8859-1
-iso8859-15/Compose: id_ID.ISO8859-15
-iso8859-1/Compose: is_IS.ISO8859-1
-iso8859-15/Compose: is_IS.ISO8859-15
-iso8859-1/Compose: it_CH.ISO8859-1
-iso8859-15/Compose: it_CH.ISO8859-15
-iso8859-1/Compose: it_IT.ISO8859-1
-iso8859-15/Compose: it_IT.ISO8859-15
-ja/Compose: ja_JP.eucJP
-ja.SJIS/Compose: ja_JP.SJIS
-ja.JIS/Compose: ja_JP.JIS7
-georgian-academy/Compose: ka_GE.GEORGIAN-ACADEMY
-georgian-ps/Compose: ka_GE.GEORGIAN-PS
-iso8859-1/Compose: kl_GL.ISO8859-1
-iso8859-15/Compose: kl_GL.ISO8859-15
-iso8859-1/Compose: kw_GB.ISO8859-1
-iso8859-14/Compose: kw_GB.ISO8859-14
-iso8859-15/Compose: kw_GB.ISO8859-15
-ko/Compose: ko_KR.eucKR
-ibm-cp1133/Compose: lo_LA.IBM-CP1133
-mulelao-1/Compose: lo_LA.MULELAO-1
-iso8859-1/Compose: lt_LN.ISO8859-1
-iso8859-4/Compose: lt_LT.ISO8859-4
-iso8859-13/Compose: lt_LT.ISO8859-13
-iso8859-4/Compose: lv_LV.ISO8859-4
-iso8859-13/Compose: lv_LV.ISO8859-13
-iso8859-13/Compose: mi_NZ.ISO8859-13
-iso8859-5/Compose: mk_MK.ISO8859-5
-XCOMM mk_MK.UTF-8/Compose: mk_MK.UTF-8
-microsoft-cp1251/Compose: mk_MK.CP1251
-iso8859-1/Compose: ms_MY.ISO8859-1
-iso8859-3/Compose: mt_MT.ISO8859-3
-iso8859-1/Compose: nl_BE.ISO8859-1
-iso8859-15/Compose: nl_BE.ISO8859-15
-iso8859-1/Compose: nl_NL.ISO8859-1
-iso8859-15/Compose: nl_NL.ISO8859-15
-iso8859-1/Compose: no_NO.ISO8859-1
-iso8859-15/Compose: no_NO.ISO8859-15
-iso8859-1/Compose: nb_NO.ISO8859-1
-iso8859-15/Compose: nb_NO.ISO8859-15
-iso8859-1/Compose: nn_NO.ISO8859-1
-iso8859-15/Compose: nn_NO.ISO8859-15
-iso8859-1/Compose: nr_ZA.ISO8859-1
-iso8859-15/Compose: nso_ZA.ISO8859-15
-iso8859-1/Compose: ny_NO.ISO8859-1
-iso8859-15/Compose: ny_NO.ISO8859-15
-iso8859-1/Compose: oc_FR.ISO8859-1
-iso8859-15/Compose: oc_FR.ISO8859-15
-iso8859-1/Compose: pd_DE.ISO8859-1
-iso8859-1/Compose: pd_US.ISO8859-1
-iso8859-1/Compose: ph_PH.ISO8859-1
-iso8859-2/Compose: pl_PL.ISO8859-2
-iso8859-1/Compose: pp_AN.ISO8859-1
-iso8859-1/Compose: pt_BR.ISO8859-1
-iso8859-15/Compose: pt_BR.ISO8859-15
-iso8859-1/Compose: pt_PT.ISO8859-1
-iso8859-15/Compose: pt_PT.ISO8859-15
-iso8859-2/Compose: ro_RO.ISO8859-2
-koi8-r/Compose: ru_RU.KOI8-R
-iso8859-5/Compose: ru_RU.ISO8859-5
-microsoft-cp1251/Compose: ru_RU.CP1251
-koi8-u/Compose: ru_UA.KOI8-U
-iso8859-1/Compose: rw_RW.ISO8859-1
-iso8859-2/Compose: sh_YU.ISO8859-2
-iso8859-2/Compose: sk_SK.ISO8859-2
-iso8859-2/Compose: sl_CS.ISO8859-2
-iso8859-2/Compose: sl_SI.ISO8859-2
-iso8859-2/Compose: sq_AL.ISO8859-2
-iso8859-2/Compose: sr_CS.ISO8859-2
-iso8859-5/Compose: sr_CS.ISO8859-5
-iso8859-2/Compose: sr_YU.ISO8859-2
-iso8859-5/Compose: sr_YU.ISO8859-5
-iso8859-1/Compose: ss_ZA.ISO8859-1
-iso8859-1/Compose: st_ZA.ISO8859-1
-iso8859-1/Compose: sv_FI.ISO8859-1
-iso8859-15/Compose: sv_FI.ISO8859-15
-iso8859-1/Compose: sv_SE.ISO8859-1
-iso8859-15/Compose: sv_SE.ISO8859-15
-tscii-0/Compose: ta_IN.TSCII-0
-koi8-c/Compose: tg_TJ.KOI8-C
-iso8859-1/Compose: tl_PH.ISO8859-1
-iso8859-15/Compose: tn_ZA.ISO8859-15
-iso8859-9/Compose: tr_TR.ISO8859-9
-iso8859-1/Compose: ts_ZA.ISO8859-1
-tatar-cyr/Compose: tt_RU.TATAR-CYR
-koi8-c/Compose: tt_RU.KOI8-C
-koi8-u/Compose: uk_UA.KOI8-U
-microsoft-cp1256/Compose: ur_PK.CP1256
-vi_VN.viscii/Compose: vi_VN.VISCII
-vi_VN.tcvn/Compose: vi_VN.TCVN
-iso8859-1/Compose: wa_BE.ISO8859-1
-iso8859-1/Compose: xh_ZA.ISO8859-1
-microsoft-cp1255/Compose: yi_US.CP1256
-zh_CN/Compose: zh_CN.eucCN
-zh_CN/Compose: zh_CN.GB2312
-zh_CN.gbk/Compose: zh_CN.GBK
-zh_CN.gb18030/Compose: zh_CN.GB18030
-zh_HK.big5/Compose: zh_HK.big5
-zh_HK.big5/Compose: zh_HK.Big5
-zh_HK.big5hkscs/Compose: zh_HK.big5hkscs
-zh_HK.big5hkscs/Compose: zh_HK.Big5HKSCS
-zh_TW.big5/Compose: zh_TW.big5
-zh_TW.big5/Compose: zh_TW.Big5
-zh_TW/Compose: zh_TW.eucTW
-iso8859-1/Compose: zu_ZA.ISO8859-1
-XCOMM
-XCOMM
-en_US.UTF-8/Compose: af_ZA.UTF-8
-en_US.UTF-8/Compose: ar_AA.UTF-8
-en_US.UTF-8/Compose: ar_BH.UTF-8
-en_US.UTF-8/Compose: ar_DZ.UTF-8
-en_US.UTF-8/Compose: ar_EG.UTF-8
-en_US.UTF-8/Compose: ar_IN.UTF-8
-en_US.UTF-8/Compose: ar_IQ.UTF-8
-en_US.UTF-8/Compose: ar_JO.UTF-8
-en_US.UTF-8/Compose: ar_KW.UTF-8
-en_US.UTF-8/Compose: ar_LB.UTF-8
-en_US.UTF-8/Compose: ar_LY.UTF-8
-en_US.UTF-8/Compose: ar_MA.UTF-8
-en_US.UTF-8/Compose: ar_OM.UTF-8
-en_US.UTF-8/Compose: ar_QA.UTF-8
-en_US.UTF-8/Compose: ar_SA.UTF-8
-en_US.UTF-8/Compose: ar_TN.UTF-8
-en_US.UTF-8/Compose: ar_YE.UTF-8
-en_US.UTF-8/Compose: bo_IN.UTF-8
-en_US.UTF-8/Compose: bs_BA.UTF-8
-en_US.UTF-8/Compose: az_AZ.UTF-8
-en_US.UTF-8/Compose: a3_AZ.UTF-8
-en_US.UTF-8/Compose: be_BY.UTF-8
-en_US.UTF-8/Compose: bg_BG.UTF-8
-en_US.UTF-8/Compose: bn_IN.UTF-8
-en_US.UTF-8/Compose: br_FR.UTF-8
-en_US.UTF-8/Compose: ca_AD.UTF-8
-en_US.UTF-8/Compose: ca_ES.UTF-8
-en_US.UTF-8/Compose: ca_FR.UTF-8
-en_US.UTF-8/Compose: ca_IT.UTF-8
-en_US.UTF-8/Compose: cs_CZ.UTF-8
-en_US.UTF-8/Compose: cy_GB.UTF-8
-en_US.UTF-8/Compose: cz_CZ.UTF-8
-en_US.UTF-8/Compose: da_DK.UTF-8
-en_US.UTF-8/Compose: de_AT.UTF-8
-en_US.UTF-8/Compose: de_BE.UTF-8
-en_US.UTF-8/Compose: de_CH.UTF-8
-en_US.UTF-8/Compose: de_DE.UTF-8
-en_US.UTF-8/Compose: de_LI.UTF-8
-en_US.UTF-8/Compose: de_LU.UTF-8
-el_GR.UTF-8/Compose: el_CY.UTF-8
-el_GR.UTF-8/Compose: el_GR.UTF-8
-en_US.UTF-8/Compose: en_AU.UTF-8
-en_US.UTF-8/Compose: en_BZ.UTF-8
-en_US.UTF-8/Compose: en_CA.UTF-8
-en_US.UTF-8/Compose: en_GB.UTF-8
-en_US.UTF-8/Compose: en_IE.UTF-8
-en_US.UTF-8/Compose: en_JM.UTF-8
-en_US.UTF-8/Compose: en_MT.UTF-8
-en_US.UTF-8/Compose: en_NZ.UTF-8
-en_US.UTF-8/Compose: en_TT.UTF-8
-en_US.UTF-8/Compose: en_UK.UTF-8
-en_US.UTF-8/Compose: en_US.UTF-8
-en_US.UTF-8/Compose: en_ZA.UTF-8
-en_US.UTF-8/Compose: eo_XX.UTF-8
-en_US.UTF-8/Compose: es_AR.UTF-8
-en_US.UTF-8/Compose: es_BO.UTF-8
-en_US.UTF-8/Compose: es_CL.UTF-8
-en_US.UTF-8/Compose: es_CO.UTF-8
-en_US.UTF-8/Compose: es_CR.UTF-8
-en_US.UTF-8/Compose: es_DO.UTF-8
-en_US.UTF-8/Compose: es_EC.UTF-8
-en_US.UTF-8/Compose: es_ES.UTF-8
-en_US.UTF-8/Compose: es_GT.UTF-8
-en_US.UTF-8/Compose: es_HN.UTF-8
-en_US.UTF-8/Compose: es_MX.UTF-8
-en_US.UTF-8/Compose: es_NI.UTF-8
-en_US.UTF-8/Compose: es_PA.UTF-8
-en_US.UTF-8/Compose: es_PE.UTF-8
-en_US.UTF-8/Compose: es_PR.UTF-8
-en_US.UTF-8/Compose: es_PY.UTF-8
-en_US.UTF-8/Compose: es_SV.UTF-8
-en_US.UTF-8/Compose: es_US.UTF-8
-en_US.UTF-8/Compose: es_UY.UTF-8
-en_US.UTF-8/Compose: es_VE.UTF-8
-en_US.UTF-8/Compose: et_EE.UTF-8
-en_US.UTF-8/Compose: eu_ES.UTF-8
-en_US.UTF-8/Compose: fa_IR.UTF-8
-fi_FI.UTF-8/Compose: fi_FI.UTF-8
-en_US.UTF-8/Compose: fo_FO.UTF-8
-en_US.UTF-8/Compose: fr_BE.UTF-8
-en_US.UTF-8/Compose: fr_CA.UTF-8
-en_US.UTF-8/Compose: fr_CH.UTF-8
-en_US.UTF-8/Compose: fr_FR.UTF-8
-en_US.UTF-8/Compose: fr_LU.UTF-8
-en_US.UTF-8/Compose: ga_IE.UTF-8
-en_US.UTF-8/Compose: gd_GB.UTF-8
-en_US.UTF-8/Compose: gl_ES.UTF-8
-en_US.UTF-8/Compose: gu_IN.UTF-8
-en_US.UTF-8/Compose: gv_GB.UTF-8
-en_US.UTF-8/Compose: he_IL.UTF-8
-en_US.UTF-8/Compose: hi_IN.UTF-8
-en_US.UTF-8/Compose: hne_IN.UTF-8
-en_US.UTF-8/Compose: hr_HR.UTF-8
-en_US.UTF-8/Compose: hu_HU.UTF-8
-en_US.UTF-8/Compose: hy_AM.UTF-8
-en_US.UTF-8/Compose: id_ID.UTF-8
-en_US.UTF-8/Compose: is_IS.UTF-8
-en_US.UTF-8/Compose: it_CH.UTF-8
-en_US.UTF-8/Compose: it_IT.UTF-8
-en_US.UTF-8/Compose: iu_CA.UTF-8
-en_US.UTF-8/Compose: ja_JP.UTF-8
-en_US.UTF-8/Compose: ka_GE.UTF-8
-en_US.UTF-8/Compose: kl_GL.UTF-8
-en_US.UTF-8/Compose: kk_KZ.UTF-8
-en_US.UTF-8/Compose: kn_IN.UTF-8
-en_US.UTF-8/Compose: ko_KR.UTF-8
-en_US.UTF-8/Compose: ks_IN.UTF-8
-en_US.UTF-8/Compose: ks_IN@devanagari.UTF-8
-en_US.UTF-8/Compose: kw_GB.UTF-8
-en_US.UTF-8/Compose: ky_KG.UTF-8
-en_US.UTF-8/Compose: lo_LA.UTF-8
-en_US.UTF-8/Compose: lt_LT.UTF-8
-en_US.UTF-8/Compose: lv_LV.UTF-8
-en_US.UTF-8/Compose: mai_IN.UTF-8
-en_US.UTF-8/Compose: mi_NZ.UTF-8
-en_US.UTF-8/Compose: mk_MK.UTF-8
-en_US.UTF-8/Compose: ml_IN.UTF-8
-en_US.UTF-8/Compose: mr_IN.UTF-8
-en_US.UTF-8/Compose: ms_MY.UTF-8
-en_US.UTF-8/Compose: mt_MT.UTF-8
-en_US.UTF-8/Compose: nl_BE.UTF-8
-en_US.UTF-8/Compose: nl_NL.UTF-8
-en_US.UTF-8/Compose: nn_NO.UTF-8
-en_US.UTF-8/Compose: no_NO.UTF-8
-en_US.UTF-8/Compose: nb_NO.UTF-8
-en_US.UTF-8/Compose: nr_ZA.UTF-8
-en_US.UTF-8/Compose: nso_ZA.UTF-8
-en_US.UTF-8/Compose: ny_NO.UTF-8
-en_US.UTF-8/Compose: oc_FR.UTF-8
-en_US.UTF-8/Compose: or_IN.UTF-8
-en_US.UTF-8/Compose: pa_IN.UTF-8
-en_US.UTF-8/Compose: pa_PK.UTF-8
-en_US.UTF-8/Compose: pd_DE.UTF-8
-en_US.UTF-8/Compose: pd_US.UTF-8
-en_US.UTF-8/Compose: ph_PH.UTF-8
-en_US.UTF-8/Compose: pl_PL.UTF-8
-en_US.UTF-8/Compose: pp_AN.UTF-8
-pt_BR.UTF-8/Compose: pt_BR.UTF-8
-en_US.UTF-8/Compose: pt_PT.UTF-8
-en_US.UTF-8/Compose: ro_RO.UTF-8
-en_US.UTF-8/Compose: ru_RU.UTF-8
-en_US.UTF-8/Compose: ru_UA.UTF-8
-en_US.UTF-8/Compose: rw_RW.UTF-8
-en_US.UTF-8/Compose: sa_IN.UTF-8
-en_US.UTF-8/Compose: sd_IN.UTF-8
-en_US.UTF-8/Compose: sd_IN@devanagari.UTF-8
-en_US.UTF-8/Compose: sh_BA.UTF-8
-en_US.UTF-8/Compose: si_LK.UTF-8
-en_US.UTF-8/Compose: sk_SK.UTF-8
-en_US.UTF-8/Compose: sl_SI.UTF-8
-en_US.UTF-8/Compose: sq_AL.UTF-8
-en_US.UTF-8/Compose: sr_CS.UTF-8
-en_US.UTF-8/Compose: sr_ME.UTF-8
-en_US.UTF-8/Compose: sr_RS.UTF-8
-en_US.UTF-8/Compose: sr_YU.UTF-8
-en_US.UTF-8/Compose: ss_ZA.UTF-8
-en_US.UTF-8/Compose: st_ZA.UTF-8
-en_US.UTF-8/Compose: sv_FI.UTF-8
-en_US.UTF-8/Compose: sv_SE.UTF-8
-en_US.UTF-8/Compose: ta_IN.UTF-8
-en_US.UTF-8/Compose: te_IN.UTF-8
-en_US.UTF-8/Compose: tg_TJ.UTF-8
-en_US.UTF-8/Compose: th_TH.UTF-8
-en_US.UTF-8/Compose: tl_PH.UTF-8
-en_US.UTF-8/Compose: tn_ZA.UTF-8
-en_US.UTF-8/Compose: tr_TR.UTF-8
-en_US.UTF-8/Compose: ts_ZA.UTF-8
-en_US.UTF-8/Compose: tt_RU.UTF-8
-en_US.UTF-8/Compose: uk_UA.UTF-8
-en_US.UTF-8/Compose: ur_PK.UTF-8
-en_US.UTF-8/Compose: uz_UZ.UTF-8
-en_US.UTF-8/Compose: ve_ZA.UTF-8
-en_US.UTF-8/Compose: vi_VN.UTF-8
-en_US.UTF-8/Compose: wa_BE.UTF-8
-en_US.UTF-8/Compose: yi_US.UTF-8
-en_US.UTF-8/Compose: xh_ZA.UTF-8
-en_US.UTF-8/Compose: zh_TW.UTF-8
-en_US.UTF-8/Compose: zu_ZA.UTF-8
-en_US.UTF-8/Compose: bs_BA.UTF-8
-en_US.UTF-8/Compose: ne_NP.UTF-8
-
+XCOMM
+XCOMM This file contains compose table file name.
+XCOMM The first word is the compose table file name and
+XCOMM the second word is full locale name.
+XCOMM
+XCOMM
+iso8859-1/Compose: C
+iso8859-1/Compose: af_ZA.ISO8859-1
+iso8859-6/Compose: ar_AA.ISO8859-6
+iso8859-6/Compose: ar_BH.ISO8859-6
+iso8859-6/Compose: ar_DZ.ISO8859-6
+iso8859-6/Compose: ar_EG.ISO8859-6
+iso8859-6/Compose: ar_IQ.ISO8859-6
+iso8859-6/Compose: ar_JO.ISO8859-6
+iso8859-6/Compose: ar_KW.ISO8859-6
+iso8859-6/Compose: ar_LB.ISO8859-6
+iso8859-6/Compose: ar_LY.ISO8859-6
+iso8859-6/Compose: ar_MA.ISO8859-6
+iso8859-6/Compose: ar_OM.ISO8859-6
+iso8859-6/Compose: ar_QA.ISO8859-6
+iso8859-6/Compose: ar_SA.ISO8859-6
+iso8859-6/Compose: ar_TN.ISO8859-6
+iso8859-6/Compose: ar_YE.ISO8859-6
+iso8859-9e/Compose: az_AZ.ISO8859-9E
+koi8-c/Compose: a3_AZ.KOI8-C
+microsoft-cp1251/Compose: be_BY.CP1251
+iso8859-5/Compose: bg_BG.ISO8859-5
+microsoft-cp1251/Compose: bg_BG.CP1251
+iso8859-1/Compose: br_FR.ISO8859-1
+iso8859-14/Compose: br_FR.ISO8859-14
+iso8859-15/Compose: br_FR.ISO8859-15
+iso8859-2/Compose: bs_BA.ISO8859-2
+iso8859-1/Compose: ca_AD.ISO8859-1
+iso8859-15/Compose: ca_AD.ISO8859-15
+iso8859-1/Compose: ca_ES.ISO8859-1
+iso8859-15/Compose: ca_ES.ISO8859-15
+iso8859-1/Compose: ca_FR.ISO8859-1
+iso8859-15/Compose: ca_FR.ISO8859-15
+iso8859-1/Compose: ca_IT.ISO8859-1
+iso8859-15/Compose: ca_IT.ISO8859-15
+iso8859-2/Compose: cs_CZ.ISO8859-2
+iso8859-1/Compose: cy_GB.ISO8859-1
+iso8859-14/Compose: cy_GB.ISO8859-14
+iso8859-15/Compose: cy_GB.ISO8859-15
+iso8859-1/Compose: da_DK.ISO8859-1
+iso8859-15/Compose: da_DK.ISO8859-15
+iso8859-1/Compose: de_AT.ISO8859-1
+iso8859-15/Compose: de_AT.ISO8859-15
+iso8859-1/Compose: de_CH.ISO8859-1
+iso8859-15/Compose: de_CH.ISO8859-15
+iso8859-1/Compose: de_DE.ISO8859-1
+iso8859-15/Compose: de_DE.ISO8859-15
+iso8859-1/Compose: de_LI.ISO8859-1
+iso8859-15/Compose: de_LI.ISO8859-15
+iso8859-1/Compose: de_LU.ISO8859-1
+iso8859-15/Compose: de_LU.ISO8859-15
+iso8859-7/Compose: el_GR.ISO8859-7
+iso8859-1/Compose: en_AU.ISO8859-1
+iso8859-1/Compose: en_BZ.ISO8859-1
+iso8859-1/Compose: en_CA.ISO8859-1
+iso8859-1/Compose: en_GB.ISO8859-1
+iso8859-15/Compose: en_GB.ISO8859-15
+iso8859-1/Compose: en_IE.ISO8859-1
+iso8859-15/Compose: en_IE.ISO8859-15
+iso8859-1/Compose: en_JM.ISO8859-1
+iso8859-1/Compose: en_NZ.ISO8859-1
+iso8859-1/Compose: en_TT.ISO8859-1
+iso8859-1/Compose: en_UK.ISO8859-1
+iso8859-15/Compose: en_UK.ISO8859-15
+iso8859-1/Compose: en_US.ISO8859-1
+iso8859-15/Compose: en_US.ISO8859-15
+iso8859-1/Compose: en_ZA.ISO8859-1
+iso8859-15/Compose: en_ZA.ISO8859-15
+iso8859-3/Compose: eo_XX.ISO8859-3
+iso8859-1/Compose: es_AR.ISO8859-1
+iso8859-1/Compose: es_BO.ISO8859-1
+iso8859-1/Compose: es_CL.ISO8859-1
+iso8859-1/Compose: es_CO.ISO8859-1
+iso8859-1/Compose: es_CR.ISO8859-1
+iso8859-1/Compose: es_DO.ISO8859-1
+iso8859-1/Compose: es_EC.ISO8859-1
+iso8859-1/Compose: es_ES.ISO8859-1
+iso8859-15/Compose: es_ES.ISO8859-15
+iso8859-1/Compose: es_GT.ISO8859-1
+iso8859-1/Compose: es_HN.ISO8859-1
+iso8859-1/Compose: es_MX.ISO8859-1
+iso8859-1/Compose: es_NI.ISO8859-1
+iso8859-1/Compose: es_PA.ISO8859-1
+iso8859-1/Compose: es_PE.ISO8859-1
+iso8859-1/Compose: es_PR.ISO8859-1
+iso8859-1/Compose: es_PY.ISO8859-1
+iso8859-1/Compose: es_SV.ISO8859-1
+iso8859-1/Compose: es_UY.ISO8859-1
+iso8859-1/Compose: es_VE.ISO8859-1
+iso8859-1/Compose: et_EE.ISO8859-1
+iso8859-4/Compose: et_EE.ISO8859-4
+iso8859-13/Compose: et_EE.ISO8859-13
+iso8859-15/Compose: et_EE.ISO8859-15
+iso8859-1/Compose: eu_ES.ISO8859-1
+iso8859-15/Compose: eu_ES.ISO8859-15
+isiri-3342/Compose: fa_IR.ISIRI-3342
+iso8859-1/Compose: fi_FI.ISO8859-1
+iso8859-15/Compose: fi_FI.ISO8859-15
+iso8859-1/Compose: fo_FO.ISO8859-1
+iso8859-15/Compose: fo_FO.ISO8859-15
+iso8859-1/Compose: fr_BE.ISO8859-1
+iso8859-15/Compose: fr_BE.ISO8859-15
+iso8859-1/Compose: fr_CA.ISO8859-1
+iso8859-15/Compose: fr_CA.ISO8859-15
+iso8859-1/Compose: fr_CH.ISO8859-1
+iso8859-15/Compose: fr_CH.ISO8859-15
+iso8859-1/Compose: fr_FR.ISO8859-1
+iso8859-15/Compose: fr_FR.ISO8859-15
+iso8859-1/Compose: fr_LU.ISO8859-1
+iso8859-15/Compose: fr_LU.ISO8859-15
+iso8859-1/Compose: ga_IE.ISO8859-1
+iso8859-14/Compose: ga_IE.ISO8859-14
+iso8859-15/Compose: ga_IE.ISO8859-15
+iso8859-1/Compose: gd_GB.ISO8859-1
+iso8859-14/Compose: gd_GB.ISO8859-14
+iso8859-15/Compose: gd_GB.ISO8859-15
+iso8859-1/Compose: gl_ES.ISO8859-1
+iso8859-15/Compose: gl_ES.ISO8859-15
+iso8859-1/Compose: gv_GB.ISO8859-1
+iso8859-14/Compose: gv_GB.ISO8859-14
+iso8859-15/Compose: gv_GB.ISO8859-15
+iso8859-8/Compose: he_IL.ISO8859-8
+microsoft-cp1255/Compose: he_IL.CP1255
+iscii-dev/Compose: hi_IN.ISCII-DEV
+iso8859-2/Compose: hr_HR.ISO8859-2
+iso8859-2/Compose: hu_HU.ISO8859-2
+armscii-8/Compose: hy_AM.ARMSCII-8
+iso8859-1/Compose: id_ID.ISO8859-1
+iso8859-15/Compose: id_ID.ISO8859-15
+iso8859-1/Compose: is_IS.ISO8859-1
+iso8859-15/Compose: is_IS.ISO8859-15
+iso8859-1/Compose: it_CH.ISO8859-1
+iso8859-15/Compose: it_CH.ISO8859-15
+iso8859-1/Compose: it_IT.ISO8859-1
+iso8859-15/Compose: it_IT.ISO8859-15
+ja/Compose: ja_JP.eucJP
+ja.SJIS/Compose: ja_JP.SJIS
+ja.JIS/Compose: ja_JP.JIS7
+georgian-academy/Compose: ka_GE.GEORGIAN-ACADEMY
+georgian-ps/Compose: ka_GE.GEORGIAN-PS
+iso8859-1/Compose: kl_GL.ISO8859-1
+iso8859-15/Compose: kl_GL.ISO8859-15
+iso8859-1/Compose: kw_GB.ISO8859-1
+iso8859-14/Compose: kw_GB.ISO8859-14
+iso8859-15/Compose: kw_GB.ISO8859-15
+ko/Compose: ko_KR.eucKR
+ibm-cp1133/Compose: lo_LA.IBM-CP1133
+mulelao-1/Compose: lo_LA.MULELAO-1
+iso8859-1/Compose: lt_LN.ISO8859-1
+iso8859-4/Compose: lt_LT.ISO8859-4
+iso8859-13/Compose: lt_LT.ISO8859-13
+iso8859-4/Compose: lv_LV.ISO8859-4
+iso8859-13/Compose: lv_LV.ISO8859-13
+iso8859-13/Compose: mi_NZ.ISO8859-13
+iso8859-5/Compose: mk_MK.ISO8859-5
+XCOMM mk_MK.UTF-8/Compose: mk_MK.UTF-8
+microsoft-cp1251/Compose: mk_MK.CP1251
+iso8859-1/Compose: ms_MY.ISO8859-1
+iso8859-3/Compose: mt_MT.ISO8859-3
+iso8859-1/Compose: nl_BE.ISO8859-1
+iso8859-15/Compose: nl_BE.ISO8859-15
+iso8859-1/Compose: nl_NL.ISO8859-1
+iso8859-15/Compose: nl_NL.ISO8859-15
+iso8859-1/Compose: no_NO.ISO8859-1
+iso8859-15/Compose: no_NO.ISO8859-15
+iso8859-1/Compose: nb_NO.ISO8859-1
+iso8859-15/Compose: nb_NO.ISO8859-15
+iso8859-1/Compose: nn_NO.ISO8859-1
+iso8859-15/Compose: nn_NO.ISO8859-15
+iso8859-1/Compose: nr_ZA.ISO8859-1
+iso8859-15/Compose: nso_ZA.ISO8859-15
+iso8859-1/Compose: ny_NO.ISO8859-1
+iso8859-15/Compose: ny_NO.ISO8859-15
+iso8859-1/Compose: oc_FR.ISO8859-1
+iso8859-15/Compose: oc_FR.ISO8859-15
+iso8859-1/Compose: pd_DE.ISO8859-1
+iso8859-1/Compose: pd_US.ISO8859-1
+iso8859-1/Compose: ph_PH.ISO8859-1
+iso8859-2/Compose: pl_PL.ISO8859-2
+iso8859-1/Compose: pp_AN.ISO8859-1
+iso8859-1/Compose: pt_BR.ISO8859-1
+iso8859-15/Compose: pt_BR.ISO8859-15
+iso8859-1/Compose: pt_PT.ISO8859-1
+iso8859-15/Compose: pt_PT.ISO8859-15
+iso8859-2/Compose: ro_RO.ISO8859-2
+koi8-r/Compose: ru_RU.KOI8-R
+iso8859-5/Compose: ru_RU.ISO8859-5
+microsoft-cp1251/Compose: ru_RU.CP1251
+koi8-u/Compose: ru_UA.KOI8-U
+iso8859-1/Compose: rw_RW.ISO8859-1
+iso8859-2/Compose: sh_YU.ISO8859-2
+iso8859-2/Compose: sk_SK.ISO8859-2
+iso8859-2/Compose: sl_CS.ISO8859-2
+iso8859-2/Compose: sl_SI.ISO8859-2
+iso8859-2/Compose: sq_AL.ISO8859-2
+iso8859-2/Compose: sr_CS.ISO8859-2
+iso8859-5/Compose: sr_CS.ISO8859-5
+iso8859-2/Compose: sr_YU.ISO8859-2
+iso8859-5/Compose: sr_YU.ISO8859-5
+iso8859-1/Compose: ss_ZA.ISO8859-1
+iso8859-1/Compose: st_ZA.ISO8859-1
+iso8859-1/Compose: sv_FI.ISO8859-1
+iso8859-15/Compose: sv_FI.ISO8859-15
+iso8859-1/Compose: sv_SE.ISO8859-1
+iso8859-15/Compose: sv_SE.ISO8859-15
+tscii-0/Compose: ta_IN.TSCII-0
+koi8-c/Compose: tg_TJ.KOI8-C
+iso8859-1/Compose: tl_PH.ISO8859-1
+iso8859-15/Compose: tn_ZA.ISO8859-15
+iso8859-9/Compose: tr_TR.ISO8859-9
+iso8859-1/Compose: ts_ZA.ISO8859-1
+tatar-cyr/Compose: tt_RU.TATAR-CYR
+koi8-c/Compose: tt_RU.KOI8-C
+koi8-u/Compose: uk_UA.KOI8-U
+microsoft-cp1256/Compose: ur_PK.CP1256
+vi_VN.viscii/Compose: vi_VN.VISCII
+vi_VN.tcvn/Compose: vi_VN.TCVN
+iso8859-1/Compose: wa_BE.ISO8859-1
+iso8859-1/Compose: xh_ZA.ISO8859-1
+microsoft-cp1255/Compose: yi_US.CP1256
+zh_CN/Compose: zh_CN.eucCN
+zh_CN/Compose: zh_CN.GB2312
+zh_CN.gbk/Compose: zh_CN.GBK
+zh_CN.gb18030/Compose: zh_CN.GB18030
+zh_HK.big5/Compose: zh_HK.big5
+zh_HK.big5/Compose: zh_HK.Big5
+zh_HK.big5hkscs/Compose: zh_HK.big5hkscs
+zh_HK.big5hkscs/Compose: zh_HK.Big5HKSCS
+zh_TW.big5/Compose: zh_TW.big5
+zh_TW.big5/Compose: zh_TW.Big5
+zh_TW/Compose: zh_TW.eucTW
+iso8859-1/Compose: zu_ZA.ISO8859-1
+XCOMM
+XCOMM
+en_US.UTF-8/Compose: af_ZA.UTF-8
+en_US.UTF-8/Compose: ar_AA.UTF-8
+en_US.UTF-8/Compose: ar_BH.UTF-8
+en_US.UTF-8/Compose: ar_DZ.UTF-8
+en_US.UTF-8/Compose: ar_EG.UTF-8
+en_US.UTF-8/Compose: ar_IN.UTF-8
+en_US.UTF-8/Compose: ar_IQ.UTF-8
+en_US.UTF-8/Compose: ar_JO.UTF-8
+en_US.UTF-8/Compose: ar_KW.UTF-8
+en_US.UTF-8/Compose: ar_LB.UTF-8
+en_US.UTF-8/Compose: ar_LY.UTF-8
+en_US.UTF-8/Compose: ar_MA.UTF-8
+en_US.UTF-8/Compose: ar_OM.UTF-8
+en_US.UTF-8/Compose: ar_QA.UTF-8
+en_US.UTF-8/Compose: ar_SA.UTF-8
+en_US.UTF-8/Compose: ar_TN.UTF-8
+en_US.UTF-8/Compose: ar_YE.UTF-8
+en_US.UTF-8/Compose: bo_IN.UTF-8
+en_US.UTF-8/Compose: bs_BA.UTF-8
+en_US.UTF-8/Compose: az_AZ.UTF-8
+en_US.UTF-8/Compose: a3_AZ.UTF-8
+en_US.UTF-8/Compose: be_BY.UTF-8
+en_US.UTF-8/Compose: bg_BG.UTF-8
+en_US.UTF-8/Compose: bn_IN.UTF-8
+en_US.UTF-8/Compose: br_FR.UTF-8
+en_US.UTF-8/Compose: ca_AD.UTF-8
+en_US.UTF-8/Compose: ca_ES.UTF-8
+en_US.UTF-8/Compose: ca_FR.UTF-8
+en_US.UTF-8/Compose: ca_IT.UTF-8
+en_US.UTF-8/Compose: cs_CZ.UTF-8
+en_US.UTF-8/Compose: cy_GB.UTF-8
+en_US.UTF-8/Compose: cz_CZ.UTF-8
+en_US.UTF-8/Compose: da_DK.UTF-8
+en_US.UTF-8/Compose: de_AT.UTF-8
+en_US.UTF-8/Compose: de_BE.UTF-8
+en_US.UTF-8/Compose: de_CH.UTF-8
+en_US.UTF-8/Compose: de_DE.UTF-8
+en_US.UTF-8/Compose: de_LI.UTF-8
+en_US.UTF-8/Compose: de_LU.UTF-8
+el_GR.UTF-8/Compose: el_CY.UTF-8
+el_GR.UTF-8/Compose: el_GR.UTF-8
+en_US.UTF-8/Compose: en_AU.UTF-8
+en_US.UTF-8/Compose: en_BZ.UTF-8
+en_US.UTF-8/Compose: en_CA.UTF-8
+en_US.UTF-8/Compose: en_GB.UTF-8
+en_US.UTF-8/Compose: en_IE.UTF-8
+en_US.UTF-8/Compose: en_JM.UTF-8
+en_US.UTF-8/Compose: en_MT.UTF-8
+en_US.UTF-8/Compose: en_NZ.UTF-8
+en_US.UTF-8/Compose: en_TT.UTF-8
+en_US.UTF-8/Compose: en_UK.UTF-8
+en_US.UTF-8/Compose: en_US.UTF-8
+en_US.UTF-8/Compose: en_ZA.UTF-8
+en_US.UTF-8/Compose: eo_XX.UTF-8
+en_US.UTF-8/Compose: es_AR.UTF-8
+en_US.UTF-8/Compose: es_BO.UTF-8
+en_US.UTF-8/Compose: es_CL.UTF-8
+en_US.UTF-8/Compose: es_CO.UTF-8
+en_US.UTF-8/Compose: es_CR.UTF-8
+en_US.UTF-8/Compose: es_DO.UTF-8
+en_US.UTF-8/Compose: es_EC.UTF-8
+en_US.UTF-8/Compose: es_ES.UTF-8
+en_US.UTF-8/Compose: es_GT.UTF-8
+en_US.UTF-8/Compose: es_HN.UTF-8
+en_US.UTF-8/Compose: es_MX.UTF-8
+en_US.UTF-8/Compose: es_NI.UTF-8
+en_US.UTF-8/Compose: es_PA.UTF-8
+en_US.UTF-8/Compose: es_PE.UTF-8
+en_US.UTF-8/Compose: es_PR.UTF-8
+en_US.UTF-8/Compose: es_PY.UTF-8
+en_US.UTF-8/Compose: es_SV.UTF-8
+en_US.UTF-8/Compose: es_US.UTF-8
+en_US.UTF-8/Compose: es_UY.UTF-8
+en_US.UTF-8/Compose: es_VE.UTF-8
+en_US.UTF-8/Compose: et_EE.UTF-8
+en_US.UTF-8/Compose: eu_ES.UTF-8
+en_US.UTF-8/Compose: fa_IR.UTF-8
+fi_FI.UTF-8/Compose: fi_FI.UTF-8
+en_US.UTF-8/Compose: fo_FO.UTF-8
+en_US.UTF-8/Compose: fr_BE.UTF-8
+en_US.UTF-8/Compose: fr_CA.UTF-8
+en_US.UTF-8/Compose: fr_CH.UTF-8
+en_US.UTF-8/Compose: fr_FR.UTF-8
+en_US.UTF-8/Compose: fr_LU.UTF-8
+en_US.UTF-8/Compose: ga_IE.UTF-8
+en_US.UTF-8/Compose: gd_GB.UTF-8
+en_US.UTF-8/Compose: gl_ES.UTF-8
+en_US.UTF-8/Compose: gu_IN.UTF-8
+en_US.UTF-8/Compose: gv_GB.UTF-8
+en_US.UTF-8/Compose: he_IL.UTF-8
+en_US.UTF-8/Compose: hi_IN.UTF-8
+en_US.UTF-8/Compose: hne_IN.UTF-8
+en_US.UTF-8/Compose: hr_HR.UTF-8
+en_US.UTF-8/Compose: hu_HU.UTF-8
+en_US.UTF-8/Compose: hy_AM.UTF-8
+en_US.UTF-8/Compose: id_ID.UTF-8
+en_US.UTF-8/Compose: is_IS.UTF-8
+en_US.UTF-8/Compose: it_CH.UTF-8
+en_US.UTF-8/Compose: it_IT.UTF-8
+en_US.UTF-8/Compose: iu_CA.UTF-8
+en_US.UTF-8/Compose: ja_JP.UTF-8
+en_US.UTF-8/Compose: ka_GE.UTF-8
+en_US.UTF-8/Compose: kl_GL.UTF-8
+en_US.UTF-8/Compose: kk_KZ.UTF-8
+en_US.UTF-8/Compose: kn_IN.UTF-8
+en_US.UTF-8/Compose: ko_KR.UTF-8
+en_US.UTF-8/Compose: ks_IN.UTF-8
+en_US.UTF-8/Compose: ks_IN@devanagari.UTF-8
+en_US.UTF-8/Compose: kw_GB.UTF-8
+en_US.UTF-8/Compose: ky_KG.UTF-8
+en_US.UTF-8/Compose: lo_LA.UTF-8
+en_US.UTF-8/Compose: lt_LT.UTF-8
+en_US.UTF-8/Compose: lv_LV.UTF-8
+en_US.UTF-8/Compose: mai_IN.UTF-8
+en_US.UTF-8/Compose: mi_NZ.UTF-8
+en_US.UTF-8/Compose: mk_MK.UTF-8
+en_US.UTF-8/Compose: ml_IN.UTF-8
+en_US.UTF-8/Compose: mr_IN.UTF-8
+en_US.UTF-8/Compose: ms_MY.UTF-8
+en_US.UTF-8/Compose: mt_MT.UTF-8
+en_US.UTF-8/Compose: nl_BE.UTF-8
+en_US.UTF-8/Compose: nl_NL.UTF-8
+en_US.UTF-8/Compose: nn_NO.UTF-8
+en_US.UTF-8/Compose: no_NO.UTF-8
+en_US.UTF-8/Compose: nb_NO.UTF-8
+en_US.UTF-8/Compose: nr_ZA.UTF-8
+en_US.UTF-8/Compose: nso_ZA.UTF-8
+en_US.UTF-8/Compose: ny_NO.UTF-8
+en_US.UTF-8/Compose: oc_FR.UTF-8
+en_US.UTF-8/Compose: or_IN.UTF-8
+en_US.UTF-8/Compose: pa_IN.UTF-8
+en_US.UTF-8/Compose: pa_PK.UTF-8
+en_US.UTF-8/Compose: pd_DE.UTF-8
+en_US.UTF-8/Compose: pd_US.UTF-8
+en_US.UTF-8/Compose: ph_PH.UTF-8
+en_US.UTF-8/Compose: pl_PL.UTF-8
+en_US.UTF-8/Compose: pp_AN.UTF-8
+pt_BR.UTF-8/Compose: pt_BR.UTF-8
+en_US.UTF-8/Compose: pt_PT.UTF-8
+en_US.UTF-8/Compose: ro_RO.UTF-8
+en_US.UTF-8/Compose: ru_RU.UTF-8
+en_US.UTF-8/Compose: ru_UA.UTF-8
+en_US.UTF-8/Compose: rw_RW.UTF-8
+en_US.UTF-8/Compose: sa_IN.UTF-8
+en_US.UTF-8/Compose: sd_IN.UTF-8
+en_US.UTF-8/Compose: sd_IN@devanagari.UTF-8
+en_US.UTF-8/Compose: sh_BA.UTF-8
+en_US.UTF-8/Compose: si_LK.UTF-8
+en_US.UTF-8/Compose: sk_SK.UTF-8
+en_US.UTF-8/Compose: sl_SI.UTF-8
+en_US.UTF-8/Compose: sq_AL.UTF-8
+en_US.UTF-8/Compose: sr_CS.UTF-8
+en_US.UTF-8/Compose: sr_ME.UTF-8
+en_US.UTF-8/Compose: sr_RS.UTF-8
+en_US.UTF-8/Compose: sr_YU.UTF-8
+en_US.UTF-8/Compose: ss_ZA.UTF-8
+en_US.UTF-8/Compose: st_ZA.UTF-8
+en_US.UTF-8/Compose: sv_FI.UTF-8
+en_US.UTF-8/Compose: sv_SE.UTF-8
+en_US.UTF-8/Compose: ta_IN.UTF-8
+en_US.UTF-8/Compose: te_IN.UTF-8
+en_US.UTF-8/Compose: tg_TJ.UTF-8
+en_US.UTF-8/Compose: th_TH.UTF-8
+en_US.UTF-8/Compose: tl_PH.UTF-8
+en_US.UTF-8/Compose: tn_ZA.UTF-8
+en_US.UTF-8/Compose: tr_TR.UTF-8
+en_US.UTF-8/Compose: ts_ZA.UTF-8
+en_US.UTF-8/Compose: tt_RU.UTF-8
+en_US.UTF-8/Compose: uk_UA.UTF-8
+en_US.UTF-8/Compose: ur_PK.UTF-8
+en_US.UTF-8/Compose: uz_UZ.UTF-8
+en_US.UTF-8/Compose: ve_ZA.UTF-8
+en_US.UTF-8/Compose: vi_VN.UTF-8
+en_US.UTF-8/Compose: wa_BE.UTF-8
+en_US.UTF-8/Compose: yi_US.UTF-8
+en_US.UTF-8/Compose: xh_ZA.UTF-8
+en_US.UTF-8/Compose: zh_TW.UTF-8
+en_US.UTF-8/Compose: zu_ZA.UTF-8
+en_US.UTF-8/Compose: bs_BA.UTF-8
+en_US.UTF-8/Compose: ne_NP.UTF-8
+
diff --git a/libX11/nls/el_GR.UTF-8/Compose.pre b/libX11/nls/el_GR.UTF-8/Compose.pre
index 6ae478ab4..ad9033717 100644
--- a/libX11/nls/el_GR.UTF-8/Compose.pre
+++ b/libX11/nls/el_GR.UTF-8/Compose.pre
@@ -1,1981 +1,1981 @@
-XCOMM
-XCOMM
-XCOMM UTF-8 compose sequence definitions for the greek keyboard layout.
-XCOMM
-XCOMM This file is mostly meant to be used along with the xkb/symbols/el
-XCOMM symbols definition file. In addition, the dead key definitions in
-XCOMM the machine generated part are really only relevant to the
-XCOMM "polytonic" variant in that file.
-XCOMM
-XCOMM The definitions herein cover the following ISO 10646 / Unicode
-XCOMM ranges:
-XCOMM - Basic Latin (0000-007F) (complete coverage)
-XCOMM - Latin-1 Supplement (0080-00FF) (complete coverage)
-XCOMM - Greek and Coptic (0370-03FF) (only the big ISO 8859-7 based
-XCOMM part at the beginning)
-XCOMM - Greek Extended (1F00-1FFF) (complete coverage)
-XCOMM - There are also six (6) characters from other ranges.
-XCOMM Moreover, the following character sets are completely covered:
-XCOMM - ISO 8859-1
-XCOMM - ISO 8859-7
-XCOMM
-XCOMM This file consists of four parts. Two of them have been adapted from
-XCOMM the iso8859-1/Compose and iso8859-7/Compose files. The other two
-XCOMM parts have been created by:
-XCOMM Vasilis Vasaitis <vvas@hal.csd.auth.gr>
-XCOMM based on the idea and initial implementation by:
-XCOMM Alejandros Diamandidis <adia@egnatia.ee.auth.gr>
-
-XCOMM Part 1
-XCOMM
-XCOMM ISO 8859-1 (Latin-1) multi-key definitions extracted and converted
-XCOMM from the iso8859-1/Compose file.
-
-XCOMM Special Character
-<Multi_key> <plus> <plus> : "#" numbersign
-<Multi_key> <apostrophe> <space> : "'" apostrophe
-<Multi_key> <space> <apostrophe> : "'" apostrophe
-<Multi_key> <A> <T> : "@" at
-<Multi_key> <parenleft> <parenleft> : "[" bracketleft
-<Multi_key> <slash> <less> : "\\" backslash
-<Multi_key> <less> <slash> : "\\" backslash
-<Multi_key> <parenright> <parenright> : "]" bracketright
-<Multi_key> <asciicircum> <space> : "^" asciicircum
-<Multi_key> <space> <asciicircum> : "^" asciicircum
-<Multi_key> <greater> <space> : "^" asciicircum
-<Multi_key> <space> <greater> : "^" asciicircum
-<Multi_key> <grave> <space> : "`" grave
-<Multi_key> <space> <grave> : "`" grave
-<Multi_key> <parenleft> <minus> : "{" braceleft
-<Multi_key> <minus> <parenleft> : "{" braceleft
-<Multi_key> <slash> <asciicircum> : "|" bar
-<Multi_key> <asciicircum> <slash> : "|" bar
-<Multi_key> <V> <L> : "|" bar
-<Multi_key> <L> <V> : "|" bar
-<Multi_key> <v> <l> : "|" bar
-<Multi_key> <l> <v> : "|" bar
-<Multi_key> <parenright> <minus> : "}" braceright
-<Multi_key> <minus> <parenright> : "}" braceright
-<Multi_key> <asciitilde> <space> : "~" asciitilde
-<Multi_key> <space> <asciitilde> : "~" asciitilde
-<Multi_key> <minus> <space> : "~" asciitilde
-<Multi_key> <space> <minus> : "~" asciitilde
-<Multi_key> <exclam> <exclam> : "¡" exclamdown
-<Multi_key> <c> <slash> : "¢" cent
-<Multi_key> <slash> <c> : "¢" cent
-<Multi_key> <C> <slash> : "¢" cent
-<Multi_key> <slash> <C> : "¢" cent
-<Multi_key> <C> <bar> : "¢" cent
-<Multi_key> <bar> <C> : "¢" cent
-<Multi_key> <c> <bar> : "¢" cent
-<Multi_key> <bar> <c> : "¢" cent
-<Multi_key> <l> <minus> : "£" sterling
-<Multi_key> <minus> <l> : "£" sterling
-<Multi_key> <L> <minus> : "£" sterling
-<Multi_key> <minus> <L> : "£" sterling
-<Multi_key> <l> <equal> : "£" sterling
-<Multi_key> <equal> <l> : "£" sterling
-<Multi_key> <L> <equal> : "£" sterling
-<Multi_key> <equal> <L> : "£" sterling
-<Multi_key> <y> <minus> : "Â¥" yen
-<Multi_key> <minus> <y> : "Â¥" yen
-<Multi_key> <Y> <minus> : "Â¥" yen
-<Multi_key> <minus> <Y> : "Â¥" yen
-<Multi_key> <y> <equal> : "Â¥" yen
-<Multi_key> <equal> <y> : "Â¥" yen
-<Multi_key> <Y> <equal> : "Â¥" yen
-<Multi_key> <equal> <Y> : "Â¥" yen
-<Multi_key> <s> <o> : "§" section
-<Multi_key> <o> <s> : "§" section
-<Multi_key> <S> <O> : "§" section
-<Multi_key> <O> <S> : "§" section
-<Multi_key> <S> <exclam> : "§" section
-<Multi_key> <exclam> <S> : "§" section
-<Multi_key> <s> <exclam> : "§" section
-<Multi_key> <exclam> <s> : "§" section
-<Multi_key> <S> <0> : "§" section
-<Multi_key> <0> <S> : "§" section
-<Multi_key> <s> <0> : "§" section
-<Multi_key> <0> <s> : "§" section
-<Multi_key> <x> <o> : "¤" currency
-<Multi_key> <o> <x> : "¤" currency
-<Multi_key> <X> <O> : "¤" currency
-<Multi_key> <O> <X> : "¤" currency
-<Multi_key> <x> <O> : "¤" currency
-<Multi_key> <O> <x> : "¤" currency
-<Multi_key> <X> <o> : "¤" currency
-<Multi_key> <o> <X> : "¤" currency
-<Multi_key> <x> <0> : "¤" currency
-<Multi_key> <0> <x> : "¤" currency
-<Multi_key> <X> <0> : "¤" currency
-<Multi_key> <0> <X> : "¤" currency
-<Multi_key> <c> <o> : "©" copyright
-<Multi_key> <o> <c> : "©" copyright
-<Multi_key> <C> <O> : "©" copyright
-<Multi_key> <O> <C> : "©" copyright
-<Multi_key> <c> <O> : "©" copyright
-<Multi_key> <O> <c> : "©" copyright
-<Multi_key> <C> <o> : "©" copyright
-<Multi_key> <o> <C> : "©" copyright
-<Multi_key> <c> <0> : "©" copyright
-<Multi_key> <0> <c> : "©" copyright
-<Multi_key> <C> <0> : "©" copyright
-<Multi_key> <0> <C> : "©" copyright
-<Multi_key> <parenleft> <c> : "©" copyright
-<Multi_key> <a> <underscore> : "ª" ordfeminine
-<Multi_key> <underscore> <a> : "ª" ordfeminine
-<Multi_key> <A> <underscore> : "ª" ordfeminine
-<Multi_key> <underscore> <A> : "ª" ordfeminine
-<Multi_key> <o> <underscore> : "º" masculine
-<Multi_key> <underscore> <o> : "º" masculine
-<Multi_key> <O> <underscore> : "º" masculine
-<Multi_key> <underscore> <O> : "º" masculine
-<Multi_key> <less> <less> : "«" guillemotleft
-<Multi_key> <greater> <greater> : "»" guillemotright
-<Multi_key> <0> <asciicircum> : "°" degree
-<Multi_key> <asciicircum> <0> : "°" degree
-<Multi_key> <0> <asterisk> : "°" degree
-<Multi_key> <asterisk> <0> : "°" degree
-<Multi_key> <plus> <minus> : "±" plusminus
-<Multi_key> <minus> <plus> : "±" plusminus
-<Multi_key> <slash> <u> : "µ" mu
-<Multi_key> <u> <slash> : "µ" mu
-<Multi_key> <slash> <U> : "µ" mu
-<Multi_key> <U> <slash> : "µ" mu
-<Multi_key> <1> <asciicircum> : "¹" onesuperior
-<Multi_key> <asciicircum> <1> : "¹" onesuperior
-<Multi_key> <S> <1> : "¹" onesuperior
-<Multi_key> <1> <S> : "¹" onesuperior
-<Multi_key> <s> <1> : "¹" onesuperior
-<Multi_key> <1> <s> : "¹" onesuperior
-<Multi_key> <2> <asciicircum> : "²" twosuperior
-<Multi_key> <asciicircum> <2> : "²" twosuperior
-<Multi_key> <S> <2> : "²" twosuperior
-<Multi_key> <2> <S> : "²" twosuperior
-<Multi_key> <s> <2> : "²" twosuperior
-<Multi_key> <2> <s> : "²" twosuperior
-<Multi_key> <3> <asciicircum> : "³" threesuperior
-<Multi_key> <asciicircum> <3> : "³" threesuperior
-<Multi_key> <S> <3> : "³" threesuperior
-<Multi_key> <3> <S> : "³" threesuperior
-<Multi_key> <s> <3> : "³" threesuperior
-<Multi_key> <3> <s> : "³" threesuperior
-<Multi_key> <p> <exclam> : "¶" paragraph
-<Multi_key> <exclam> <p> : "¶" paragraph
-<Multi_key> <P> <exclam> : "¶" paragraph
-<Multi_key> <exclam> <P> : "¶" paragraph
-<Multi_key> <period> <asciicircum> : "·" periodcentered
-<Multi_key> <asciicircum> <period> : "·" periodcentered
-<Multi_key> <period> <minus> : "·" periodcentered
-<Multi_key> <period> <equal> : "•" enfilledcircbullet
-<Multi_key> <period> <period> : "…" ellipsis
-<Multi_key> <1> <4> : "¼" onequarter
-<Multi_key> <1> <2> : "½" onehalf
-<Multi_key> <3> <4> : "¾" threequarters
-<Multi_key> <question> <question> : "¿" questiondown
-<Multi_key> <space> <space> : " " nobreakspace
-<Multi_key> <bar> <bar> : "¦" brokenbar
-<Multi_key> <exclam> <asciicircum> : "¦" brokenbar
-<Multi_key> <asciicircum> <exclam> : "¦" brokenbar
-<Multi_key> <V> <B> : "¦" brokenbar
-<Multi_key> <B> <V> : "¦" brokenbar
-<Multi_key> <v> <b> : "¦" brokenbar
-<Multi_key> <b> <v> : "¦" brokenbar
-<Multi_key> <minus> <comma> : "¬" notsign
-<Multi_key> <comma> <minus> : "¬" notsign
-<Multi_key> <minus> <minus> : "­" hyphen
-<Multi_key> <R> <O> : "®" registered
-<Multi_key> <O> <R> : "®" registered
-<Multi_key> <parenleft> <r> : "®" registered
-<Multi_key> <minus> <asciicircum> : "¯" macron
-<Multi_key> <asciicircum> <minus> : "¯" macron
-<Multi_key> <underscore> <asciicircum> : "¯" macron
-<Multi_key> <asciicircum> <underscore> : "¯" macron
-<Multi_key> <underscore> <underscore> : "¯" macron
-<Multi_key> <minus> <colon> : "÷" division
-<Multi_key> <colon> <minus> : "÷" division
-<Multi_key> <x> <x> : "×" multiply
-<Multi_key> <apostrophe> <apostrophe> : "´" acute
-<Multi_key> <comma> <comma> : "¸" cedilla
-<Multi_key> <quotedbl> <quotedbl> : "¨" diaeresis
-XCOMM Accented Alphabet
-<Multi_key> <A> <grave> : "À" Agrave
-<Multi_key> <grave> <A> : "À" Agrave
-<Multi_key> <A> <acute> : "Ã" Aacute
-<Multi_key> <acute> <A> : "Ã" Aacute
-<Multi_key> <A> <apostrophe> : "Ã" Aacute
-<Multi_key> <apostrophe> <A> : "Ã" Aacute
-<Multi_key> <A> <asciicircum> : "Â" Acircumflex
-<Multi_key> <asciicircum> <A> : "Â" Acircumflex
-<Multi_key> <A> <greater> : "Â" Acircumflex
-<Multi_key> <greater> <A> : "Â" Acircumflex
-<Multi_key> <A> <asciitilde> : "Ã" Atilde
-<Multi_key> <asciitilde> <A> : "Ã" Atilde
-<Multi_key> <A> <minus> : "Ã" Atilde
-<Multi_key> <minus> <A> : "Ã" Atilde
-<Multi_key> <A> <quotedbl> : "Ä" Adiaeresis
-<Multi_key> <quotedbl> <A> : "Ä" Adiaeresis
-<Multi_key> <A> <diaeresis> : "Ä" Adiaeresis
-<Multi_key> <diaeresis> <A> : "Ä" Adiaeresis
-<Multi_key> <A> <asterisk> : "Ã…" Aring
-<Multi_key> <asterisk> <A> : "Ã…" Aring
-<Multi_key> <A> <A> : "Ã…" Aring
-<Multi_key> <A> <O> : "Ã…" Aring
-<Multi_key> <A> <E> : "Æ" AE
-<Multi_key> <a> <grave> : "à" agrave
-<Multi_key> <grave> <a> : "à" agrave
-<Multi_key> <a> <acute> : "á" aacute
-<Multi_key> <acute> <a> : "á" aacute
-<Multi_key> <a> <apostrophe> : "á" aacute
-<Multi_key> <apostrophe> <a> : "á" aacute
-<Multi_key> <a> <asciicircum> : "â" acircumflex
-<Multi_key> <asciicircum> <a> : "â" acircumflex
-<Multi_key> <a> <greater> : "â" acircumflex
-<Multi_key> <greater> <a> : "â" acircumflex
-<Multi_key> <a> <asciitilde> : "ã" atilde
-<Multi_key> <asciitilde> <a> : "ã" atilde
-<Multi_key> <a> <minus> : "ã" atilde
-<Multi_key> <minus> <a> : "ã" atilde
-<Multi_key> <a> <quotedbl> : "ä" adiaeresis
-<Multi_key> <quotedbl> <a> : "ä" adiaeresis
-<Multi_key> <a> <diaeresis> : "ä" adiaeresis
-<Multi_key> <diaeresis> <a> : "ä" adiaeresis
-<Multi_key> <a> <asterisk> : "Ã¥" aring
-<Multi_key> <asterisk> <a> : "Ã¥" aring
-<Multi_key> <a> <a> : "Ã¥" aring
-<Multi_key> <a> <o> : "Ã¥" aring
-<Multi_key> <a> <e> : "æ" ae
-<Multi_key> <acute> <C> : "Ç" Ccedilla
-<Multi_key> <acute> <c> : "ç" ccedilla
-<Multi_key> <C> <comma> : "Ç" Ccedilla
-<Multi_key> <C> <cedilla> : "Ç" Ccedilla
-<Multi_key> <comma> <C> : "Ç" Ccedilla
-<Multi_key> <cedilla> <C> : "Ç" Ccedilla
-<Multi_key> <c> <comma> : "ç" ccedilla
-<Multi_key> <c> <cedilla> : "ç" ccedilla
-<Multi_key> <comma> <c> : "ç" ccedilla
-<Multi_key> <cedilla> <c> : "ç" ccedilla
-<Multi_key> <minus> <D> : "Ã" ETH
-<Multi_key> <D> <minus> : "Ã" ETH
-<Multi_key> <minus> <d> : "ð" eth
-<Multi_key> <d> <minus> : "ð" eth
-<Multi_key> <E> <grave> : "È" Egrave
-<Multi_key> <grave> <E> : "È" Egrave
-<Multi_key> <E> <acute> : "É" Eacute
-<Multi_key> <acute> <E> : "É" Eacute
-<Multi_key> <E> <apostrophe> : "É" Eacute
-<Multi_key> <apostrophe> <E> : "É" Eacute
-<Multi_key> <E> <asciicircum> : "Ê" Ecircumflex
-<Multi_key> <asciicircum> <E> : "Ê" Ecircumflex
-<Multi_key> <E> <greater> : "Ê" Ecircumflex
-<Multi_key> <greater> <E> : "Ê" Ecircumflex
-<Multi_key> <E> <quotedbl> : "Ë" Ediaeresis
-<Multi_key> <quotedbl> <E> : "Ë" Ediaeresis
-<Multi_key> <E> <diaeresis> : "Ë" Ediaeresis
-<Multi_key> <diaeresis> <E> : "Ë" Ediaeresis
-<Multi_key> <e> <grave> : "è" egrave
-<Multi_key> <grave> <e> : "è" egrave
-<Multi_key> <e> <acute> : "é" eacute
-<Multi_key> <acute> <e> : "é" eacute
-<Multi_key> <e> <apostrophe> : "é" eacute
-<Multi_key> <apostrophe> <e> : "é" eacute
-<Multi_key> <e> <asciicircum> : "ê" ecircumflex
-<Multi_key> <asciicircum> <e> : "ê" ecircumflex
-<Multi_key> <e> <greater> : "ê" ecircumflex
-<Multi_key> <greater> <e> : "ê" ecircumflex
-<Multi_key> <e> <quotedbl> : "ë" ediaeresis
-<Multi_key> <quotedbl> <e> : "ë" ediaeresis
-<Multi_key> <e> <diaeresis> : "ë" ediaeresis
-<Multi_key> <diaeresis> <e> : "ë" ediaeresis
-<Multi_key> <I> <grave> : "Ì" Igrave
-<Multi_key> <grave> <I> : "Ì" Igrave
-<Multi_key> <I> <acute> : "Ã" Iacute
-<Multi_key> <acute> <I> : "Ã" Iacute
-<Multi_key> <I> <apostrophe> : "Ã" Iacute
-<Multi_key> <apostrophe> <I> : "Ã" Iacute
-<Multi_key> <I> <asciicircum> : "ÃŽ" Icircumflex
-<Multi_key> <asciicircum> <I> : "ÃŽ" Icircumflex
-<Multi_key> <I> <greater> : "ÃŽ" Icircumflex
-<Multi_key> <greater> <I> : "ÃŽ" Icircumflex
-<Multi_key> <I> <quotedbl> : "Ã" Idiaeresis
-<Multi_key> <quotedbl> <I> : "Ã" Idiaeresis
-<Multi_key> <I> <diaeresis> : "Ã" Idiaeresis
-<Multi_key> <diaeresis> <I> : "Ã" Idiaeresis
-<Multi_key> <i> <grave> : "ì" igrave
-<Multi_key> <grave> <i> : "ì" igrave
-<Multi_key> <i> <acute> : "í" iacute
-<Multi_key> <acute> <i> : "í" iacute
-<Multi_key> <i> <apostrophe> : "í" iacute
-<Multi_key> <apostrophe> <i> : "í" iacute
-<Multi_key> <i> <asciicircum> : "î" icircumflex
-<Multi_key> <asciicircum> <i> : "î" icircumflex
-<Multi_key> <i> <greater> : "î" icircumflex
-<Multi_key> <greater> <i> : "î" icircumflex
-<Multi_key> <i> <quotedbl> : "ï" idiaeresis
-<Multi_key> <quotedbl> <i> : "ï" idiaeresis
-<Multi_key> <i> <diaeresis> : "ï" idiaeresis
-<Multi_key> <diaeresis> <i> : "ï" idiaeresis
-<Multi_key> <N> <asciitilde> : "Ñ" Ntilde
-<Multi_key> <asciitilde> <N> : "Ñ" Ntilde
-<Multi_key> <N> <minus> : "Ñ" Ntilde
-<Multi_key> <minus> <N> : "Ñ" Ntilde
-<Multi_key> <n> <asciitilde> : "ñ" ntilde
-<Multi_key> <asciitilde> <n> : "ñ" ntilde
-<Multi_key> <n> <minus> : "ñ" ntilde
-<Multi_key> <minus> <n> : "ñ" ntilde
-<Multi_key> <O> <grave> : "Ã’" Ograve
-<Multi_key> <grave> <O> : "Ã’" Ograve
-<Multi_key> <O> <acute> : "Ó" Oacute
-<Multi_key> <acute> <O> : "Ó" Oacute
-<Multi_key> <O> <apostrophe> : "Ó" Oacute
-<Multi_key> <apostrophe> <O> : "Ó" Oacute
-<Multi_key> <O> <asciicircum> : "Ô" Ocircumflex
-<Multi_key> <asciicircum> <O> : "Ô" Ocircumflex
-<Multi_key> <O> <greater> : "Ô" Ocircumflex
-<Multi_key> <greater> <O> : "Ô" Ocircumflex
-<Multi_key> <O> <asciitilde> : "Õ" Otilde
-<Multi_key> <asciitilde> <O> : "Õ" Otilde
-<Multi_key> <O> <minus> : "Õ" Otilde
-<Multi_key> <minus> <O> : "Õ" Otilde
-<Multi_key> <O> <quotedbl> : "Ö" Odiaeresis
-<Multi_key> <quotedbl> <O> : "Ö" Odiaeresis
-<Multi_key> <O> <diaeresis> : "Ö" Odiaeresis
-<Multi_key> <diaeresis> <O> : "Ö" Odiaeresis
-<Multi_key> <O> <slash> : "Ø" Ooblique
-<Multi_key> <slash> <O> : "Ø" Ooblique
-<Multi_key> <o> <grave> : "ò" ograve
-<Multi_key> <grave> <o> : "ò" ograve
-<Multi_key> <o> <acute> : "ó" oacute
-<Multi_key> <acute> <o> : "ó" oacute
-<Multi_key> <o> <apostrophe> : "ó" oacute
-<Multi_key> <apostrophe> <o> : "ó" oacute
-<Multi_key> <o> <asciicircum> : "ô" ocircumflex
-<Multi_key> <asciicircum> <o> : "ô" ocircumflex
-<Multi_key> <o> <greater> : "ô" ocircumflex
-<Multi_key> <greater> <o> : "ô" ocircumflex
-<Multi_key> <o> <asciitilde> : "õ" otilde
-<Multi_key> <asciitilde> <o> : "õ" otilde
-<Multi_key> <o> <minus> : "õ" otilde
-<Multi_key> <minus> <o> : "õ" otilde
-<Multi_key> <o> <quotedbl> : "ö" odiaeresis
-<Multi_key> <quotedbl> <o> : "ö" odiaeresis
-<Multi_key> <o> <diaeresis> : "ö" odiaeresis
-<Multi_key> <diaeresis> <o> : "ö" odiaeresis
-<Multi_key> <o> <slash> : "ø" oslash
-<Multi_key> <slash> <o> : "ø" oslash
-<Multi_key> <U> <grave> : "Ù" Ugrave
-<Multi_key> <grave> <U> : "Ù" Ugrave
-<Multi_key> <U> <acute> : "Ú" Uacute
-<Multi_key> <acute> <U> : "Ú" Uacute
-<Multi_key> <U> <apostrophe> : "Ú" Uacute
-<Multi_key> <apostrophe> <U> : "Ú" Uacute
-<Multi_key> <U> <asciicircum> : "Û" Ucircumflex
-<Multi_key> <asciicircum> <U> : "Û" Ucircumflex
-<Multi_key> <U> <greater> : "Û" Ucircumflex
-<Multi_key> <greater> <U> : "Û" Ucircumflex
-<Multi_key> <U> <quotedbl> : "Ü" Udiaeresis
-<Multi_key> <quotedbl> <U> : "Ü" Udiaeresis
-<Multi_key> <U> <diaeresis> : "Ü" Udiaeresis
-<Multi_key> <diaeresis> <U> : "Ü" Udiaeresis
-<Multi_key> <u> <grave> : "ù" ugrave
-<Multi_key> <grave> <u> : "ù" ugrave
-<Multi_key> <u> <acute> : "ú" uacute
-<Multi_key> <acute> <u> : "ú" uacute
-<Multi_key> <u> <apostrophe> : "ú" uacute
-<Multi_key> <apostrophe> <u> : "ú" uacute
-<Multi_key> <u> <asciicircum> : "û" ucircumflex
-<Multi_key> <asciicircum> <u> : "û" ucircumflex
-<Multi_key> <u> <greater> : "û" ucircumflex
-<Multi_key> <greater> <u> : "û" ucircumflex
-<Multi_key> <u> <quotedbl> : "ü" udiaeresis
-<Multi_key> <quotedbl> <u> : "ü" udiaeresis
-<Multi_key> <u> <diaeresis> : "ü" udiaeresis
-<Multi_key> <diaeresis> <u> : "ü" udiaeresis
-<Multi_key> <s> <s> : "ß" ssharp
-<Multi_key> <T> <H> : "Þ" THORN
-<Multi_key> <t> <h> : "þ" thorn
-<Multi_key> <Y> <acute> : "Ã" Yacute
-<Multi_key> <acute> <Y> : "Ã" Yacute
-<Multi_key> <Y> <apostrophe> : "Ã" Yacute
-<Multi_key> <apostrophe> <Y> : "Ã" Yacute
-<Multi_key> <y> <acute> : "ý" yacute
-<Multi_key> <acute> <y> : "ý" yacute
-<Multi_key> <y> <apostrophe> : "ý" yacute
-<Multi_key> <apostrophe> <y> : "ý" yacute
-<Multi_key> <y> <quotedbl> : "ÿ" ydiaeresis
-<Multi_key> <quotedbl> <y> : "ÿ" ydiaeresis
-<Multi_key> <y> <diaeresis> : "ÿ" ydiaeresis
-<Multi_key> <diaeresis> <y> : "ÿ" ydiaeresis
-
-XCOMM Part 2
-XCOMM
-XCOMM Greek Extended multi-key and dead key definitions. These have been
-XCOMM machine-generated by a perl script, found at:
-XCOMM http://hal.csd.auth.gr/~vvas/i18n/xkb/polytonic-compose.pl
-
-<Multi_key> <greater> <Greek_alpha> : "á¼€" U1f00
-<dead_horn> <Greek_alpha> : "á¼€" U1f00
-<dead_psili> <Greek_alpha> : "á¼€" U1f00
-<Multi_key> <less> <Greek_alpha> : "á¼" U1f01
-<dead_ogonek> <Greek_alpha> : "á¼" U1f01
-<dead_dasia> <Greek_alpha> : "á¼" U1f01
-<Multi_key> <greater> <grave> <Greek_alpha> : "ἂ" U1f02
-<Multi_key> <grave> <greater> <Greek_alpha> : "ἂ" U1f02
-<dead_horn> <dead_grave> <Greek_alpha> : "ἂ" U1f02
-<dead_psili> <dead_grave> <Greek_alpha> : "ἂ" U1f02
-<dead_grave> <dead_horn> <Greek_alpha> : "ἂ" U1f02
-<dead_grave> <dead_psili> <Greek_alpha> : "ἂ" U1f02
-<Multi_key> <less> <grave> <Greek_alpha> : "ἃ" U1f03
-<Multi_key> <grave> <less> <Greek_alpha> : "ἃ" U1f03
-<dead_ogonek> <dead_grave> <Greek_alpha> : "ἃ" U1f03
-<dead_dasia> <dead_grave> <Greek_alpha> : "ἃ" U1f03
-<dead_grave> <dead_ogonek> <Greek_alpha> : "ἃ" U1f03
-<dead_grave> <dead_dasia> <Greek_alpha> : "ἃ" U1f03
-<Multi_key> <greater> <apostrophe> <Greek_alpha> : "ἄ" U1f04
-<Multi_key> <apostrophe> <greater> <Greek_alpha> : "ἄ" U1f04
-<dead_horn> <dead_acute> <Greek_alpha> : "ἄ" U1f04
-<dead_psili> <dead_acute> <Greek_alpha> : "ἄ" U1f04
-<dead_acute> <dead_horn> <Greek_alpha> : "ἄ" U1f04
-<dead_acute> <dead_psili> <Greek_alpha> : "ἄ" U1f04
-<Multi_key> <less> <apostrophe> <Greek_alpha> : "á¼…" U1f05
-<Multi_key> <apostrophe> <less> <Greek_alpha> : "á¼…" U1f05
-<dead_ogonek> <dead_acute> <Greek_alpha> : "á¼…" U1f05
-<dead_dasia> <dead_acute> <Greek_alpha> : "á¼…" U1f05
-<dead_acute> <dead_ogonek> <Greek_alpha> : "á¼…" U1f05
-<dead_acute> <dead_dasia> <Greek_alpha> : "á¼…" U1f05
-<Multi_key> <greater> <asciitilde> <Greek_alpha> : "ἆ" U1f06
-<Multi_key> <asciitilde> <greater> <Greek_alpha> : "ἆ" U1f06
-<dead_horn> <dead_tilde> <Greek_alpha> : "ἆ" U1f06
-<dead_psili> <dead_tilde> <Greek_alpha> : "ἆ" U1f06
-<dead_tilde> <dead_horn> <Greek_alpha> : "ἆ" U1f06
-<dead_tilde> <dead_psili> <Greek_alpha> : "ἆ" U1f06
-<Multi_key> <less> <asciitilde> <Greek_alpha> : "ἇ" U1f07
-<Multi_key> <asciitilde> <less> <Greek_alpha> : "ἇ" U1f07
-<dead_ogonek> <dead_tilde> <Greek_alpha> : "ἇ" U1f07
-<dead_dasia> <dead_tilde> <Greek_alpha> : "ἇ" U1f07
-<dead_tilde> <dead_ogonek> <Greek_alpha> : "ἇ" U1f07
-<dead_tilde> <dead_dasia> <Greek_alpha> : "ἇ" U1f07
-<Multi_key> <greater> <Greek_ALPHA> : "Ἀ" U1f08
-<dead_horn> <Greek_ALPHA> : "Ἀ" U1f08
-<dead_psili> <Greek_ALPHA> : "Ἀ" U1f08
-<Multi_key> <less> <Greek_ALPHA> : "Ἁ" U1f09
-<dead_ogonek> <Greek_ALPHA> : "Ἁ" U1f09
-<dead_dasia> <Greek_ALPHA> : "Ἁ" U1f09
-<Multi_key> <greater> <grave> <Greek_ALPHA> : "Ἂ" U1f0a
-<Multi_key> <grave> <greater> <Greek_ALPHA> : "Ἂ" U1f0a
-<dead_horn> <dead_grave> <Greek_ALPHA> : "Ἂ" U1f0a
-<dead_psili> <dead_grave> <Greek_ALPHA> : "Ἂ" U1f0a
-<dead_grave> <dead_horn> <Greek_ALPHA> : "Ἂ" U1f0a
-<dead_grave> <dead_psili> <Greek_ALPHA> : "Ἂ" U1f0a
-<Multi_key> <less> <grave> <Greek_ALPHA> : "Ἃ" U1f0b
-<Multi_key> <grave> <less> <Greek_ALPHA> : "Ἃ" U1f0b
-<dead_ogonek> <dead_grave> <Greek_ALPHA> : "Ἃ" U1f0b
-<dead_dasia> <dead_grave> <Greek_ALPHA> : "Ἃ" U1f0b
-<dead_grave> <dead_ogonek> <Greek_ALPHA> : "Ἃ" U1f0b
-<dead_grave> <dead_dasia> <Greek_ALPHA> : "Ἃ" U1f0b
-<Multi_key> <greater> <apostrophe> <Greek_ALPHA> : "Ἄ" U1f0c
-<Multi_key> <apostrophe> <greater> <Greek_ALPHA> : "Ἄ" U1f0c
-<dead_horn> <dead_acute> <Greek_ALPHA> : "Ἄ" U1f0c
-<dead_psili> <dead_acute> <Greek_ALPHA> : "Ἄ" U1f0c
-<dead_acute> <dead_horn> <Greek_ALPHA> : "Ἄ" U1f0c
-<dead_acute> <dead_psili> <Greek_ALPHA> : "Ἄ" U1f0c
-<Multi_key> <less> <apostrophe> <Greek_ALPHA> : "á¼" U1f0d
-<Multi_key> <apostrophe> <less> <Greek_ALPHA> : "á¼" U1f0d
-<dead_ogonek> <dead_acute> <Greek_ALPHA> : "á¼" U1f0d
-<dead_dasia> <dead_acute> <Greek_ALPHA> : "á¼" U1f0d
-<dead_acute> <dead_ogonek> <Greek_ALPHA> : "á¼" U1f0d
-<dead_acute> <dead_dasia> <Greek_ALPHA> : "á¼" U1f0d
-<Multi_key> <greater> <asciitilde> <Greek_ALPHA> : "Ἆ" U1f0e
-<Multi_key> <asciitilde> <greater> <Greek_ALPHA> : "Ἆ" U1f0e
-<dead_horn> <dead_tilde> <Greek_ALPHA> : "Ἆ" U1f0e
-<dead_psili> <dead_tilde> <Greek_ALPHA> : "Ἆ" U1f0e
-<dead_tilde> <dead_horn> <Greek_ALPHA> : "Ἆ" U1f0e
-<dead_tilde> <dead_psili> <Greek_ALPHA> : "Ἆ" U1f0e
-<Multi_key> <less> <asciitilde> <Greek_ALPHA> : "á¼" U1f0f
-<Multi_key> <asciitilde> <less> <Greek_ALPHA> : "á¼" U1f0f
-<dead_ogonek> <dead_tilde> <Greek_ALPHA> : "á¼" U1f0f
-<dead_dasia> <dead_tilde> <Greek_ALPHA> : "á¼" U1f0f
-<dead_tilde> <dead_ogonek> <Greek_ALPHA> : "á¼" U1f0f
-<dead_tilde> <dead_dasia> <Greek_ALPHA> : "á¼" U1f0f
-<Multi_key> <greater> <Greek_epsilon> : "á¼" U1f10
-<dead_horn> <Greek_epsilon> : "á¼" U1f10
-<dead_psili> <Greek_epsilon> : "á¼" U1f10
-<Multi_key> <less> <Greek_epsilon> : "ἑ" U1f11
-<dead_ogonek> <Greek_epsilon> : "ἑ" U1f11
-<dead_dasia> <Greek_epsilon> : "ἑ" U1f11
-<Multi_key> <greater> <grave> <Greek_epsilon> : "á¼’" U1f12
-<Multi_key> <grave> <greater> <Greek_epsilon> : "á¼’" U1f12
-<dead_horn> <dead_grave> <Greek_epsilon> : "á¼’" U1f12
-<dead_psili> <dead_grave> <Greek_epsilon> : "á¼’" U1f12
-<dead_grave> <dead_horn> <Greek_epsilon> : "á¼’" U1f12
-<dead_grave> <dead_psili> <Greek_epsilon> : "á¼’" U1f12
-<Multi_key> <less> <grave> <Greek_epsilon> : "ἓ" U1f13
-<Multi_key> <grave> <less> <Greek_epsilon> : "ἓ" U1f13
-<dead_ogonek> <dead_grave> <Greek_epsilon> : "ἓ" U1f13
-<dead_dasia> <dead_grave> <Greek_epsilon> : "ἓ" U1f13
-<dead_grave> <dead_ogonek> <Greek_epsilon> : "ἓ" U1f13
-<dead_grave> <dead_dasia> <Greek_epsilon> : "ἓ" U1f13
-<Multi_key> <greater> <apostrophe> <Greek_epsilon> : "á¼”" U1f14
-<Multi_key> <apostrophe> <greater> <Greek_epsilon> : "á¼”" U1f14
-<dead_horn> <dead_acute> <Greek_epsilon> : "á¼”" U1f14
-<dead_psili> <dead_acute> <Greek_epsilon> : "á¼”" U1f14
-<dead_acute> <dead_horn> <Greek_epsilon> : "á¼”" U1f14
-<dead_acute> <dead_psili> <Greek_epsilon> : "á¼”" U1f14
-<Multi_key> <less> <apostrophe> <Greek_epsilon> : "ἕ" U1f15
-<Multi_key> <apostrophe> <less> <Greek_epsilon> : "ἕ" U1f15
-<dead_ogonek> <dead_acute> <Greek_epsilon> : "ἕ" U1f15
-<dead_dasia> <dead_acute> <Greek_epsilon> : "ἕ" U1f15
-<dead_acute> <dead_ogonek> <Greek_epsilon> : "ἕ" U1f15
-<dead_acute> <dead_dasia> <Greek_epsilon> : "ἕ" U1f15
-<Multi_key> <greater> <Greek_EPSILON> : "Ἐ" U1f18
-<dead_horn> <Greek_EPSILON> : "Ἐ" U1f18
-<dead_psili> <Greek_EPSILON> : "Ἐ" U1f18
-<Multi_key> <less> <Greek_EPSILON> : "á¼™" U1f19
-<dead_ogonek> <Greek_EPSILON> : "á¼™" U1f19
-<dead_dasia> <Greek_EPSILON> : "á¼™" U1f19
-<Multi_key> <greater> <grave> <Greek_EPSILON> : "Ἒ" U1f1a
-<Multi_key> <grave> <greater> <Greek_EPSILON> : "Ἒ" U1f1a
-<dead_horn> <dead_grave> <Greek_EPSILON> : "Ἒ" U1f1a
-<dead_psili> <dead_grave> <Greek_EPSILON> : "Ἒ" U1f1a
-<dead_grave> <dead_horn> <Greek_EPSILON> : "Ἒ" U1f1a
-<dead_grave> <dead_psili> <Greek_EPSILON> : "Ἒ" U1f1a
-<Multi_key> <less> <grave> <Greek_EPSILON> : "á¼›" U1f1b
-<Multi_key> <grave> <less> <Greek_EPSILON> : "á¼›" U1f1b
-<dead_ogonek> <dead_grave> <Greek_EPSILON> : "á¼›" U1f1b
-<dead_dasia> <dead_grave> <Greek_EPSILON> : "á¼›" U1f1b
-<dead_grave> <dead_ogonek> <Greek_EPSILON> : "á¼›" U1f1b
-<dead_grave> <dead_dasia> <Greek_EPSILON> : "á¼›" U1f1b
-<Multi_key> <greater> <apostrophe> <Greek_EPSILON> : "Ἔ" U1f1c
-<Multi_key> <apostrophe> <greater> <Greek_EPSILON> : "Ἔ" U1f1c
-<dead_horn> <dead_acute> <Greek_EPSILON> : "Ἔ" U1f1c
-<dead_psili> <dead_acute> <Greek_EPSILON> : "Ἔ" U1f1c
-<dead_acute> <dead_horn> <Greek_EPSILON> : "Ἔ" U1f1c
-<dead_acute> <dead_psili> <Greek_EPSILON> : "Ἔ" U1f1c
-<Multi_key> <less> <apostrophe> <Greek_EPSILON> : "á¼" U1f1d
-<Multi_key> <apostrophe> <less> <Greek_EPSILON> : "á¼" U1f1d
-<dead_ogonek> <dead_acute> <Greek_EPSILON> : "á¼" U1f1d
-<dead_dasia> <dead_acute> <Greek_EPSILON> : "á¼" U1f1d
-<dead_acute> <dead_ogonek> <Greek_EPSILON> : "á¼" U1f1d
-<dead_acute> <dead_dasia> <Greek_EPSILON> : "á¼" U1f1d
-<Multi_key> <greater> <Greek_eta> : "á¼ " U1f20
-<dead_horn> <Greek_eta> : "á¼ " U1f20
-<dead_psili> <Greek_eta> : "á¼ " U1f20
-<Multi_key> <less> <Greek_eta> : "ἡ" U1f21
-<dead_ogonek> <Greek_eta> : "ἡ" U1f21
-<dead_dasia> <Greek_eta> : "ἡ" U1f21
-<Multi_key> <greater> <grave> <Greek_eta> : "á¼¢" U1f22
-<Multi_key> <grave> <greater> <Greek_eta> : "á¼¢" U1f22
-<dead_horn> <dead_grave> <Greek_eta> : "á¼¢" U1f22
-<dead_psili> <dead_grave> <Greek_eta> : "á¼¢" U1f22
-<dead_grave> <dead_horn> <Greek_eta> : "á¼¢" U1f22
-<dead_grave> <dead_psili> <Greek_eta> : "á¼¢" U1f22
-<Multi_key> <less> <grave> <Greek_eta> : "á¼£" U1f23
-<Multi_key> <grave> <less> <Greek_eta> : "á¼£" U1f23
-<dead_ogonek> <dead_grave> <Greek_eta> : "á¼£" U1f23
-<dead_dasia> <dead_grave> <Greek_eta> : "á¼£" U1f23
-<dead_grave> <dead_ogonek> <Greek_eta> : "á¼£" U1f23
-<dead_grave> <dead_dasia> <Greek_eta> : "á¼£" U1f23
-<Multi_key> <greater> <apostrophe> <Greek_eta> : "ἤ" U1f24
-<Multi_key> <apostrophe> <greater> <Greek_eta> : "ἤ" U1f24
-<dead_horn> <dead_acute> <Greek_eta> : "ἤ" U1f24
-<dead_psili> <dead_acute> <Greek_eta> : "ἤ" U1f24
-<dead_acute> <dead_horn> <Greek_eta> : "ἤ" U1f24
-<dead_acute> <dead_psili> <Greek_eta> : "ἤ" U1f24
-<Multi_key> <less> <apostrophe> <Greek_eta> : "á¼¥" U1f25
-<Multi_key> <apostrophe> <less> <Greek_eta> : "á¼¥" U1f25
-<dead_ogonek> <dead_acute> <Greek_eta> : "á¼¥" U1f25
-<dead_dasia> <dead_acute> <Greek_eta> : "á¼¥" U1f25
-<dead_acute> <dead_ogonek> <Greek_eta> : "á¼¥" U1f25
-<dead_acute> <dead_dasia> <Greek_eta> : "á¼¥" U1f25
-<Multi_key> <greater> <asciitilde> <Greek_eta> : "ἦ" U1f26
-<Multi_key> <asciitilde> <greater> <Greek_eta> : "ἦ" U1f26
-<dead_horn> <dead_tilde> <Greek_eta> : "ἦ" U1f26
-<dead_psili> <dead_tilde> <Greek_eta> : "ἦ" U1f26
-<dead_tilde> <dead_horn> <Greek_eta> : "ἦ" U1f26
-<dead_tilde> <dead_psili> <Greek_eta> : "ἦ" U1f26
-<Multi_key> <less> <asciitilde> <Greek_eta> : "ἧ" U1f27
-<Multi_key> <asciitilde> <less> <Greek_eta> : "ἧ" U1f27
-<dead_ogonek> <dead_tilde> <Greek_eta> : "ἧ" U1f27
-<dead_dasia> <dead_tilde> <Greek_eta> : "ἧ" U1f27
-<dead_tilde> <dead_ogonek> <Greek_eta> : "ἧ" U1f27
-<dead_tilde> <dead_dasia> <Greek_eta> : "ἧ" U1f27
-<Multi_key> <greater> <Greek_ETA> : "Ἠ" U1f28
-<dead_horn> <Greek_ETA> : "Ἠ" U1f28
-<dead_psili> <Greek_ETA> : "Ἠ" U1f28
-<Multi_key> <less> <Greek_ETA> : "Ἡ" U1f29
-<dead_ogonek> <Greek_ETA> : "Ἡ" U1f29
-<dead_dasia> <Greek_ETA> : "Ἡ" U1f29
-<Multi_key> <greater> <grave> <Greek_ETA> : "Ἢ" U1f2a
-<Multi_key> <grave> <greater> <Greek_ETA> : "Ἢ" U1f2a
-<dead_horn> <dead_grave> <Greek_ETA> : "Ἢ" U1f2a
-<dead_psili> <dead_grave> <Greek_ETA> : "Ἢ" U1f2a
-<dead_grave> <dead_horn> <Greek_ETA> : "Ἢ" U1f2a
-<dead_grave> <dead_psili> <Greek_ETA> : "Ἢ" U1f2a
-<Multi_key> <less> <grave> <Greek_ETA> : "Ἣ" U1f2b
-<Multi_key> <grave> <less> <Greek_ETA> : "Ἣ" U1f2b
-<dead_ogonek> <dead_grave> <Greek_ETA> : "Ἣ" U1f2b
-<dead_dasia> <dead_grave> <Greek_ETA> : "Ἣ" U1f2b
-<dead_grave> <dead_ogonek> <Greek_ETA> : "Ἣ" U1f2b
-<dead_grave> <dead_dasia> <Greek_ETA> : "Ἣ" U1f2b
-<Multi_key> <greater> <apostrophe> <Greek_ETA> : "Ἤ" U1f2c
-<Multi_key> <apostrophe> <greater> <Greek_ETA> : "Ἤ" U1f2c
-<dead_horn> <dead_acute> <Greek_ETA> : "Ἤ" U1f2c
-<dead_psili> <dead_acute> <Greek_ETA> : "Ἤ" U1f2c
-<dead_acute> <dead_horn> <Greek_ETA> : "Ἤ" U1f2c
-<dead_acute> <dead_psili> <Greek_ETA> : "Ἤ" U1f2c
-<Multi_key> <less> <apostrophe> <Greek_ETA> : "á¼­" U1f2d
-<Multi_key> <apostrophe> <less> <Greek_ETA> : "á¼­" U1f2d
-<dead_ogonek> <dead_acute> <Greek_ETA> : "á¼­" U1f2d
-<dead_dasia> <dead_acute> <Greek_ETA> : "á¼­" U1f2d
-<dead_acute> <dead_ogonek> <Greek_ETA> : "á¼­" U1f2d
-<dead_acute> <dead_dasia> <Greek_ETA> : "á¼­" U1f2d
-<Multi_key> <greater> <asciitilde> <Greek_ETA> : "á¼®" U1f2e
-<Multi_key> <asciitilde> <greater> <Greek_ETA> : "á¼®" U1f2e
-<dead_horn> <dead_tilde> <Greek_ETA> : "á¼®" U1f2e
-<dead_psili> <dead_tilde> <Greek_ETA> : "á¼®" U1f2e
-<dead_tilde> <dead_horn> <Greek_ETA> : "á¼®" U1f2e
-<dead_tilde> <dead_psili> <Greek_ETA> : "á¼®" U1f2e
-<Multi_key> <less> <asciitilde> <Greek_ETA> : "Ἧ" U1f2f
-<Multi_key> <asciitilde> <less> <Greek_ETA> : "Ἧ" U1f2f
-<dead_ogonek> <dead_tilde> <Greek_ETA> : "Ἧ" U1f2f
-<dead_dasia> <dead_tilde> <Greek_ETA> : "Ἧ" U1f2f
-<dead_tilde> <dead_ogonek> <Greek_ETA> : "Ἧ" U1f2f
-<dead_tilde> <dead_dasia> <Greek_ETA> : "Ἧ" U1f2f
-<Multi_key> <greater> <Greek_iota> : "á¼°" U1f30
-<dead_horn> <Greek_iota> : "á¼°" U1f30
-<dead_psili> <Greek_iota> : "á¼°" U1f30
-<Multi_key> <less> <Greek_iota> : "á¼±" U1f31
-<dead_ogonek> <Greek_iota> : "á¼±" U1f31
-<dead_dasia> <Greek_iota> : "á¼±" U1f31
-<Multi_key> <greater> <grave> <Greek_iota> : "á¼²" U1f32
-<Multi_key> <grave> <greater> <Greek_iota> : "á¼²" U1f32
-<dead_horn> <dead_grave> <Greek_iota> : "á¼²" U1f32
-<dead_psili> <dead_grave> <Greek_iota> : "á¼²" U1f32
-<dead_grave> <dead_horn> <Greek_iota> : "á¼²" U1f32
-<dead_grave> <dead_psili> <Greek_iota> : "á¼²" U1f32
-<Multi_key> <less> <grave> <Greek_iota> : "á¼³" U1f33
-<Multi_key> <grave> <less> <Greek_iota> : "á¼³" U1f33
-<dead_ogonek> <dead_grave> <Greek_iota> : "á¼³" U1f33
-<dead_dasia> <dead_grave> <Greek_iota> : "á¼³" U1f33
-<dead_grave> <dead_ogonek> <Greek_iota> : "á¼³" U1f33
-<dead_grave> <dead_dasia> <Greek_iota> : "á¼³" U1f33
-<Multi_key> <greater> <apostrophe> <Greek_iota> : "á¼´" U1f34
-<Multi_key> <apostrophe> <greater> <Greek_iota> : "á¼´" U1f34
-<dead_horn> <dead_acute> <Greek_iota> : "á¼´" U1f34
-<dead_psili> <dead_acute> <Greek_iota> : "á¼´" U1f34
-<dead_acute> <dead_horn> <Greek_iota> : "á¼´" U1f34
-<dead_acute> <dead_psili> <Greek_iota> : "á¼´" U1f34
-<Multi_key> <less> <apostrophe> <Greek_iota> : "á¼µ" U1f35
-<Multi_key> <apostrophe> <less> <Greek_iota> : "á¼µ" U1f35
-<dead_ogonek> <dead_acute> <Greek_iota> : "á¼µ" U1f35
-<dead_dasia> <dead_acute> <Greek_iota> : "á¼µ" U1f35
-<dead_acute> <dead_ogonek> <Greek_iota> : "á¼µ" U1f35
-<dead_acute> <dead_dasia> <Greek_iota> : "á¼µ" U1f35
-<Multi_key> <greater> <asciitilde> <Greek_iota> : "ἶ" U1f36
-<Multi_key> <asciitilde> <greater> <Greek_iota> : "ἶ" U1f36
-<dead_horn> <dead_tilde> <Greek_iota> : "ἶ" U1f36
-<dead_psili> <dead_tilde> <Greek_iota> : "ἶ" U1f36
-<dead_tilde> <dead_horn> <Greek_iota> : "ἶ" U1f36
-<dead_tilde> <dead_psili> <Greek_iota> : "ἶ" U1f36
-<Multi_key> <less> <asciitilde> <Greek_iota> : "á¼·" U1f37
-<Multi_key> <asciitilde> <less> <Greek_iota> : "á¼·" U1f37
-<dead_ogonek> <dead_tilde> <Greek_iota> : "á¼·" U1f37
-<dead_dasia> <dead_tilde> <Greek_iota> : "á¼·" U1f37
-<dead_tilde> <dead_ogonek> <Greek_iota> : "á¼·" U1f37
-<dead_tilde> <dead_dasia> <Greek_iota> : "á¼·" U1f37
-<Multi_key> <greater> <Greek_IOTA> : "Ἰ" U1f38
-<dead_horn> <Greek_IOTA> : "Ἰ" U1f38
-<dead_psili> <Greek_IOTA> : "Ἰ" U1f38
-<Multi_key> <less> <Greek_IOTA> : "á¼¹" U1f39
-<dead_ogonek> <Greek_IOTA> : "á¼¹" U1f39
-<dead_dasia> <Greek_IOTA> : "á¼¹" U1f39
-<Multi_key> <greater> <grave> <Greek_IOTA> : "Ἲ" U1f3a
-<Multi_key> <grave> <greater> <Greek_IOTA> : "Ἲ" U1f3a
-<dead_horn> <dead_grave> <Greek_IOTA> : "Ἲ" U1f3a
-<dead_psili> <dead_grave> <Greek_IOTA> : "Ἲ" U1f3a
-<dead_grave> <dead_horn> <Greek_IOTA> : "Ἲ" U1f3a
-<dead_grave> <dead_psili> <Greek_IOTA> : "Ἲ" U1f3a
-<Multi_key> <less> <grave> <Greek_IOTA> : "á¼»" U1f3b
-<Multi_key> <grave> <less> <Greek_IOTA> : "á¼»" U1f3b
-<dead_ogonek> <dead_grave> <Greek_IOTA> : "á¼»" U1f3b
-<dead_dasia> <dead_grave> <Greek_IOTA> : "á¼»" U1f3b
-<dead_grave> <dead_ogonek> <Greek_IOTA> : "á¼»" U1f3b
-<dead_grave> <dead_dasia> <Greek_IOTA> : "á¼»" U1f3b
-<Multi_key> <greater> <apostrophe> <Greek_IOTA> : "á¼¼" U1f3c
-<Multi_key> <apostrophe> <greater> <Greek_IOTA> : "á¼¼" U1f3c
-<dead_horn> <dead_acute> <Greek_IOTA> : "á¼¼" U1f3c
-<dead_psili> <dead_acute> <Greek_IOTA> : "á¼¼" U1f3c
-<dead_acute> <dead_horn> <Greek_IOTA> : "á¼¼" U1f3c
-<dead_acute> <dead_psili> <Greek_IOTA> : "á¼¼" U1f3c
-<Multi_key> <less> <apostrophe> <Greek_IOTA> : "á¼½" U1f3d
-<Multi_key> <apostrophe> <less> <Greek_IOTA> : "á¼½" U1f3d
-<dead_ogonek> <dead_acute> <Greek_IOTA> : "á¼½" U1f3d
-<dead_dasia> <dead_acute> <Greek_IOTA> : "á¼½" U1f3d
-<dead_acute> <dead_ogonek> <Greek_IOTA> : "á¼½" U1f3d
-<dead_acute> <dead_dasia> <Greek_IOTA> : "á¼½" U1f3d
-<Multi_key> <greater> <asciitilde> <Greek_IOTA> : "á¼¾" U1f3e
-<Multi_key> <asciitilde> <greater> <Greek_IOTA> : "á¼¾" U1f3e
-<dead_horn> <dead_tilde> <Greek_IOTA> : "á¼¾" U1f3e
-<dead_psili> <dead_tilde> <Greek_IOTA> : "á¼¾" U1f3e
-<dead_tilde> <dead_horn> <Greek_IOTA> : "á¼¾" U1f3e
-<dead_tilde> <dead_psili> <Greek_IOTA> : "á¼¾" U1f3e
-<Multi_key> <less> <asciitilde> <Greek_IOTA> : "Ἷ" U1f3f
-<Multi_key> <asciitilde> <less> <Greek_IOTA> : "Ἷ" U1f3f
-<dead_ogonek> <dead_tilde> <Greek_IOTA> : "Ἷ" U1f3f
-<dead_dasia> <dead_tilde> <Greek_IOTA> : "Ἷ" U1f3f
-<dead_tilde> <dead_ogonek> <Greek_IOTA> : "Ἷ" U1f3f
-<dead_tilde> <dead_dasia> <Greek_IOTA> : "Ἷ" U1f3f
-<Multi_key> <greater> <Greek_omicron> : "á½€" U1f40
-<dead_horn> <Greek_omicron> : "á½€" U1f40
-<dead_psili> <Greek_omicron> : "á½€" U1f40
-<Multi_key> <less> <Greek_omicron> : "á½" U1f41
-<dead_ogonek> <Greek_omicron> : "á½" U1f41
-<dead_dasia> <Greek_omicron> : "á½" U1f41
-<Multi_key> <greater> <grave> <Greek_omicron> : "ὂ" U1f42
-<Multi_key> <grave> <greater> <Greek_omicron> : "ὂ" U1f42
-<dead_horn> <dead_grave> <Greek_omicron> : "ὂ" U1f42
-<dead_psili> <dead_grave> <Greek_omicron> : "ὂ" U1f42
-<dead_grave> <dead_horn> <Greek_omicron> : "ὂ" U1f42
-<dead_grave> <dead_psili> <Greek_omicron> : "ὂ" U1f42
-<Multi_key> <less> <grave> <Greek_omicron> : "ὃ" U1f43
-<Multi_key> <grave> <less> <Greek_omicron> : "ὃ" U1f43
-<dead_ogonek> <dead_grave> <Greek_omicron> : "ὃ" U1f43
-<dead_dasia> <dead_grave> <Greek_omicron> : "ὃ" U1f43
-<dead_grave> <dead_ogonek> <Greek_omicron> : "ὃ" U1f43
-<dead_grave> <dead_dasia> <Greek_omicron> : "ὃ" U1f43
-<Multi_key> <greater> <apostrophe> <Greek_omicron> : "ὄ" U1f44
-<Multi_key> <apostrophe> <greater> <Greek_omicron> : "ὄ" U1f44
-<dead_horn> <dead_acute> <Greek_omicron> : "ὄ" U1f44
-<dead_psili> <dead_acute> <Greek_omicron> : "ὄ" U1f44
-<dead_acute> <dead_horn> <Greek_omicron> : "ὄ" U1f44
-<dead_acute> <dead_psili> <Greek_omicron> : "ὄ" U1f44
-<Multi_key> <less> <apostrophe> <Greek_omicron> : "á½…" U1f45
-<Multi_key> <apostrophe> <less> <Greek_omicron> : "á½…" U1f45
-<dead_ogonek> <dead_acute> <Greek_omicron> : "á½…" U1f45
-<dead_dasia> <dead_acute> <Greek_omicron> : "á½…" U1f45
-<dead_acute> <dead_ogonek> <Greek_omicron> : "á½…" U1f45
-<dead_acute> <dead_dasia> <Greek_omicron> : "á½…" U1f45
-<Multi_key> <greater> <Greek_OMICRON> : "Ὀ" U1f48
-<dead_horn> <Greek_OMICRON> : "Ὀ" U1f48
-<dead_psili> <Greek_OMICRON> : "Ὀ" U1f48
-<Multi_key> <less> <Greek_OMICRON> : "Ὁ" U1f49
-<dead_ogonek> <Greek_OMICRON> : "Ὁ" U1f49
-<dead_dasia> <Greek_OMICRON> : "Ὁ" U1f49
-<Multi_key> <greater> <grave> <Greek_OMICRON> : "Ὂ" U1f4a
-<Multi_key> <grave> <greater> <Greek_OMICRON> : "Ὂ" U1f4a
-<dead_horn> <dead_grave> <Greek_OMICRON> : "Ὂ" U1f4a
-<dead_psili> <dead_grave> <Greek_OMICRON> : "Ὂ" U1f4a
-<dead_grave> <dead_horn> <Greek_OMICRON> : "Ὂ" U1f4a
-<dead_grave> <dead_psili> <Greek_OMICRON> : "Ὂ" U1f4a
-<Multi_key> <less> <grave> <Greek_OMICRON> : "Ὃ" U1f4b
-<Multi_key> <grave> <less> <Greek_OMICRON> : "Ὃ" U1f4b
-<dead_ogonek> <dead_grave> <Greek_OMICRON> : "Ὃ" U1f4b
-<dead_dasia> <dead_grave> <Greek_OMICRON> : "Ὃ" U1f4b
-<dead_grave> <dead_ogonek> <Greek_OMICRON> : "Ὃ" U1f4b
-<dead_grave> <dead_dasia> <Greek_OMICRON> : "Ὃ" U1f4b
-<Multi_key> <greater> <apostrophe> <Greek_OMICRON> : "Ὄ" U1f4c
-<Multi_key> <apostrophe> <greater> <Greek_OMICRON> : "Ὄ" U1f4c
-<dead_horn> <dead_acute> <Greek_OMICRON> : "Ὄ" U1f4c
-<dead_psili> <dead_acute> <Greek_OMICRON> : "Ὄ" U1f4c
-<dead_acute> <dead_horn> <Greek_OMICRON> : "Ὄ" U1f4c
-<dead_acute> <dead_psili> <Greek_OMICRON> : "Ὄ" U1f4c
-<Multi_key> <less> <apostrophe> <Greek_OMICRON> : "á½" U1f4d
-<Multi_key> <apostrophe> <less> <Greek_OMICRON> : "á½" U1f4d
-<dead_ogonek> <dead_acute> <Greek_OMICRON> : "á½" U1f4d
-<dead_dasia> <dead_acute> <Greek_OMICRON> : "á½" U1f4d
-<dead_acute> <dead_ogonek> <Greek_OMICRON> : "á½" U1f4d
-<dead_acute> <dead_dasia> <Greek_OMICRON> : "á½" U1f4d
-<Multi_key> <greater> <Greek_upsilon> : "á½" U1f50
-<dead_horn> <Greek_upsilon> : "á½" U1f50
-<dead_psili> <Greek_upsilon> : "á½" U1f50
-<Multi_key> <less> <Greek_upsilon> : "ὑ" U1f51
-<dead_ogonek> <Greek_upsilon> : "ὑ" U1f51
-<dead_dasia> <Greek_upsilon> : "ὑ" U1f51
-<Multi_key> <greater> <grave> <Greek_upsilon> : "á½’" U1f52
-<Multi_key> <grave> <greater> <Greek_upsilon> : "á½’" U1f52
-<dead_horn> <dead_grave> <Greek_upsilon> : "á½’" U1f52
-<dead_psili> <dead_grave> <Greek_upsilon> : "á½’" U1f52
-<dead_grave> <dead_horn> <Greek_upsilon> : "á½’" U1f52
-<dead_grave> <dead_psili> <Greek_upsilon> : "á½’" U1f52
-<Multi_key> <less> <grave> <Greek_upsilon> : "ὓ" U1f53
-<Multi_key> <grave> <less> <Greek_upsilon> : "ὓ" U1f53
-<dead_ogonek> <dead_grave> <Greek_upsilon> : "ὓ" U1f53
-<dead_dasia> <dead_grave> <Greek_upsilon> : "ὓ" U1f53
-<dead_grave> <dead_ogonek> <Greek_upsilon> : "ὓ" U1f53
-<dead_grave> <dead_dasia> <Greek_upsilon> : "ὓ" U1f53
-<Multi_key> <greater> <apostrophe> <Greek_upsilon> : "á½”" U1f54
-<Multi_key> <apostrophe> <greater> <Greek_upsilon> : "á½”" U1f54
-<dead_horn> <dead_acute> <Greek_upsilon> : "á½”" U1f54
-<dead_psili> <dead_acute> <Greek_upsilon> : "á½”" U1f54
-<dead_acute> <dead_horn> <Greek_upsilon> : "á½”" U1f54
-<dead_acute> <dead_psili> <Greek_upsilon> : "á½”" U1f54
-<Multi_key> <less> <apostrophe> <Greek_upsilon> : "ὕ" U1f55
-<Multi_key> <apostrophe> <less> <Greek_upsilon> : "ὕ" U1f55
-<dead_ogonek> <dead_acute> <Greek_upsilon> : "ὕ" U1f55
-<dead_dasia> <dead_acute> <Greek_upsilon> : "ὕ" U1f55
-<dead_acute> <dead_ogonek> <Greek_upsilon> : "ὕ" U1f55
-<dead_acute> <dead_dasia> <Greek_upsilon> : "ὕ" U1f55
-<Multi_key> <greater> <asciitilde> <Greek_upsilon> : "á½–" U1f56
-<Multi_key> <asciitilde> <greater> <Greek_upsilon> : "á½–" U1f56
-<dead_horn> <dead_tilde> <Greek_upsilon> : "á½–" U1f56
-<dead_psili> <dead_tilde> <Greek_upsilon> : "á½–" U1f56
-<dead_tilde> <dead_horn> <Greek_upsilon> : "á½–" U1f56
-<dead_tilde> <dead_psili> <Greek_upsilon> : "á½–" U1f56
-<Multi_key> <less> <asciitilde> <Greek_upsilon> : "á½—" U1f57
-<Multi_key> <asciitilde> <less> <Greek_upsilon> : "á½—" U1f57
-<dead_ogonek> <dead_tilde> <Greek_upsilon> : "á½—" U1f57
-<dead_dasia> <dead_tilde> <Greek_upsilon> : "á½—" U1f57
-<dead_tilde> <dead_ogonek> <Greek_upsilon> : "á½—" U1f57
-<dead_tilde> <dead_dasia> <Greek_upsilon> : "á½—" U1f57
-<Multi_key> <less> <Greek_UPSILON> : "á½™" U1f59
-<dead_ogonek> <Greek_UPSILON> : "á½™" U1f59
-<dead_dasia> <Greek_UPSILON> : "á½™" U1f59
-<Multi_key> <less> <grave> <Greek_UPSILON> : "á½›" U1f5b
-<Multi_key> <grave> <less> <Greek_UPSILON> : "á½›" U1f5b
-<dead_ogonek> <dead_grave> <Greek_UPSILON> : "á½›" U1f5b
-<dead_dasia> <dead_grave> <Greek_UPSILON> : "á½›" U1f5b
-<dead_grave> <dead_ogonek> <Greek_UPSILON> : "á½›" U1f5b
-<dead_grave> <dead_dasia> <Greek_UPSILON> : "á½›" U1f5b
-<Multi_key> <less> <apostrophe> <Greek_UPSILON> : "á½" U1f5d
-<Multi_key> <apostrophe> <less> <Greek_UPSILON> : "á½" U1f5d
-<dead_ogonek> <dead_acute> <Greek_UPSILON> : "á½" U1f5d
-<dead_dasia> <dead_acute> <Greek_UPSILON> : "á½" U1f5d
-<dead_acute> <dead_ogonek> <Greek_UPSILON> : "á½" U1f5d
-<dead_acute> <dead_dasia> <Greek_UPSILON> : "á½" U1f5d
-<Multi_key> <less> <asciitilde> <Greek_UPSILON> : "Ὗ" U1f5f
-<Multi_key> <asciitilde> <less> <Greek_UPSILON> : "Ὗ" U1f5f
-<dead_ogonek> <dead_tilde> <Greek_UPSILON> : "Ὗ" U1f5f
-<dead_dasia> <dead_tilde> <Greek_UPSILON> : "Ὗ" U1f5f
-<dead_tilde> <dead_ogonek> <Greek_UPSILON> : "Ὗ" U1f5f
-<dead_tilde> <dead_dasia> <Greek_UPSILON> : "Ὗ" U1f5f
-<Multi_key> <greater> <Greek_omega> : "á½ " U1f60
-<dead_horn> <Greek_omega> : "á½ " U1f60
-<dead_psili> <Greek_omega> : "á½ " U1f60
-<Multi_key> <less> <Greek_omega> : "ὡ" U1f61
-<dead_ogonek> <Greek_omega> : "ὡ" U1f61
-<dead_dasia> <Greek_omega> : "ὡ" U1f61
-<Multi_key> <greater> <grave> <Greek_omega> : "á½¢" U1f62
-<Multi_key> <grave> <greater> <Greek_omega> : "á½¢" U1f62
-<dead_horn> <dead_grave> <Greek_omega> : "á½¢" U1f62
-<dead_psili> <dead_grave> <Greek_omega> : "á½¢" U1f62
-<dead_grave> <dead_horn> <Greek_omega> : "á½¢" U1f62
-<dead_grave> <dead_psili> <Greek_omega> : "á½¢" U1f62
-<Multi_key> <less> <grave> <Greek_omega> : "á½£" U1f63
-<Multi_key> <grave> <less> <Greek_omega> : "á½£" U1f63
-<dead_ogonek> <dead_grave> <Greek_omega> : "á½£" U1f63
-<dead_dasia> <dead_grave> <Greek_omega> : "á½£" U1f63
-<dead_grave> <dead_ogonek> <Greek_omega> : "á½£" U1f63
-<dead_grave> <dead_dasia> <Greek_omega> : "á½£" U1f63
-<Multi_key> <greater> <apostrophe> <Greek_omega> : "ὤ" U1f64
-<Multi_key> <apostrophe> <greater> <Greek_omega> : "ὤ" U1f64
-<dead_horn> <dead_acute> <Greek_omega> : "ὤ" U1f64
-<dead_psili> <dead_acute> <Greek_omega> : "ὤ" U1f64
-<dead_acute> <dead_horn> <Greek_omega> : "ὤ" U1f64
-<dead_acute> <dead_psili> <Greek_omega> : "ὤ" U1f64
-<Multi_key> <less> <apostrophe> <Greek_omega> : "á½¥" U1f65
-<Multi_key> <apostrophe> <less> <Greek_omega> : "á½¥" U1f65
-<dead_ogonek> <dead_acute> <Greek_omega> : "á½¥" U1f65
-<dead_dasia> <dead_acute> <Greek_omega> : "á½¥" U1f65
-<dead_acute> <dead_ogonek> <Greek_omega> : "á½¥" U1f65
-<dead_acute> <dead_dasia> <Greek_omega> : "á½¥" U1f65
-<Multi_key> <greater> <asciitilde> <Greek_omega> : "ὦ" U1f66
-<Multi_key> <asciitilde> <greater> <Greek_omega> : "ὦ" U1f66
-<dead_horn> <dead_tilde> <Greek_omega> : "ὦ" U1f66
-<dead_psili> <dead_tilde> <Greek_omega> : "ὦ" U1f66
-<dead_tilde> <dead_horn> <Greek_omega> : "ὦ" U1f66
-<dead_tilde> <dead_psili> <Greek_omega> : "ὦ" U1f66
-<Multi_key> <less> <asciitilde> <Greek_omega> : "ὧ" U1f67
-<Multi_key> <asciitilde> <less> <Greek_omega> : "ὧ" U1f67
-<dead_ogonek> <dead_tilde> <Greek_omega> : "ὧ" U1f67
-<dead_dasia> <dead_tilde> <Greek_omega> : "ὧ" U1f67
-<dead_tilde> <dead_ogonek> <Greek_omega> : "ὧ" U1f67
-<dead_tilde> <dead_dasia> <Greek_omega> : "ὧ" U1f67
-<Multi_key> <greater> <Greek_OMEGA> : "Ὠ" U1f68
-<dead_horn> <Greek_OMEGA> : "Ὠ" U1f68
-<dead_psili> <Greek_OMEGA> : "Ὠ" U1f68
-<Multi_key> <less> <Greek_OMEGA> : "Ὡ" U1f69
-<dead_ogonek> <Greek_OMEGA> : "Ὡ" U1f69
-<dead_dasia> <Greek_OMEGA> : "Ὡ" U1f69
-<Multi_key> <greater> <grave> <Greek_OMEGA> : "Ὢ" U1f6a
-<Multi_key> <grave> <greater> <Greek_OMEGA> : "Ὢ" U1f6a
-<dead_horn> <dead_grave> <Greek_OMEGA> : "Ὢ" U1f6a
-<dead_psili> <dead_grave> <Greek_OMEGA> : "Ὢ" U1f6a
-<dead_grave> <dead_horn> <Greek_OMEGA> : "Ὢ" U1f6a
-<dead_grave> <dead_psili> <Greek_OMEGA> : "Ὢ" U1f6a
-<Multi_key> <less> <grave> <Greek_OMEGA> : "Ὣ" U1f6b
-<Multi_key> <grave> <less> <Greek_OMEGA> : "Ὣ" U1f6b
-<dead_ogonek> <dead_grave> <Greek_OMEGA> : "Ὣ" U1f6b
-<dead_dasia> <dead_grave> <Greek_OMEGA> : "Ὣ" U1f6b
-<dead_grave> <dead_ogonek> <Greek_OMEGA> : "Ὣ" U1f6b
-<dead_grave> <dead_dasia> <Greek_OMEGA> : "Ὣ" U1f6b
-<Multi_key> <greater> <apostrophe> <Greek_OMEGA> : "Ὤ" U1f6c
-<Multi_key> <apostrophe> <greater> <Greek_OMEGA> : "Ὤ" U1f6c
-<dead_horn> <dead_acute> <Greek_OMEGA> : "Ὤ" U1f6c
-<dead_psili> <dead_acute> <Greek_OMEGA> : "Ὤ" U1f6c
-<dead_acute> <dead_horn> <Greek_OMEGA> : "Ὤ" U1f6c
-<dead_acute> <dead_psili> <Greek_OMEGA> : "Ὤ" U1f6c
-<Multi_key> <less> <apostrophe> <Greek_OMEGA> : "á½­" U1f6d
-<Multi_key> <apostrophe> <less> <Greek_OMEGA> : "á½­" U1f6d
-<dead_ogonek> <dead_acute> <Greek_OMEGA> : "á½­" U1f6d
-<dead_dasia> <dead_acute> <Greek_OMEGA> : "á½­" U1f6d
-<dead_acute> <dead_ogonek> <Greek_OMEGA> : "á½­" U1f6d
-<dead_acute> <dead_dasia> <Greek_OMEGA> : "á½­" U1f6d
-<Multi_key> <greater> <asciitilde> <Greek_OMEGA> : "á½®" U1f6e
-<Multi_key> <asciitilde> <greater> <Greek_OMEGA> : "á½®" U1f6e
-<dead_horn> <dead_tilde> <Greek_OMEGA> : "á½®" U1f6e
-<dead_psili> <dead_tilde> <Greek_OMEGA> : "á½®" U1f6e
-<dead_tilde> <dead_horn> <Greek_OMEGA> : "á½®" U1f6e
-<dead_tilde> <dead_psili> <Greek_OMEGA> : "á½®" U1f6e
-<Multi_key> <less> <asciitilde> <Greek_OMEGA> : "Ὧ" U1f6f
-<Multi_key> <asciitilde> <less> <Greek_OMEGA> : "Ὧ" U1f6f
-<dead_ogonek> <dead_tilde> <Greek_OMEGA> : "Ὧ" U1f6f
-<dead_dasia> <dead_tilde> <Greek_OMEGA> : "Ὧ" U1f6f
-<dead_tilde> <dead_ogonek> <Greek_OMEGA> : "Ὧ" U1f6f
-<dead_tilde> <dead_dasia> <Greek_OMEGA> : "Ὧ" U1f6f
-<Multi_key> <grave> <Greek_alpha> : "á½°" U1f70
-<dead_grave> <Greek_alpha> : "á½°" U1f70
-<Multi_key> <grave> <Greek_epsilon> : "á½²" U1f72
-<dead_grave> <Greek_epsilon> : "á½²" U1f72
-<Multi_key> <grave> <Greek_eta> : "á½´" U1f74
-<dead_grave> <Greek_eta> : "á½´" U1f74
-<Multi_key> <grave> <Greek_iota> : "ὶ" U1f76
-<dead_grave> <Greek_iota> : "ὶ" U1f76
-<Multi_key> <grave> <Greek_omicron> : "ὸ" U1f78
-<dead_grave> <Greek_omicron> : "ὸ" U1f78
-<Multi_key> <grave> <Greek_upsilon> : "ὺ" U1f7a
-<dead_grave> <Greek_upsilon> : "ὺ" U1f7a
-<Multi_key> <grave> <Greek_omega> : "á½¼" U1f7c
-<dead_grave> <Greek_omega> : "á½¼" U1f7c
-<Multi_key> <bar> <greater> <Greek_alpha> : "á¾€" U1f80
-<Multi_key> <greater> <bar> <Greek_alpha> : "á¾€" U1f80
-<dead_iota> <dead_horn> <Greek_alpha> : "á¾€" U1f80
-<dead_iota> <dead_psili> <Greek_alpha> : "á¾€" U1f80
-<dead_horn> <dead_iota> <Greek_alpha> : "á¾€" U1f80
-<dead_psili> <dead_iota> <Greek_alpha> : "á¾€" U1f80
-<Multi_key> <bar> <less> <Greek_alpha> : "á¾" U1f81
-<Multi_key> <less> <bar> <Greek_alpha> : "á¾" U1f81
-<dead_iota> <dead_ogonek> <Greek_alpha> : "á¾" U1f81
-<dead_iota> <dead_dasia> <Greek_alpha> : "á¾" U1f81
-<dead_ogonek> <dead_iota> <Greek_alpha> : "á¾" U1f81
-<dead_dasia> <dead_iota> <Greek_alpha> : "á¾" U1f81
-<Multi_key> <bar> <greater> <grave> <Greek_alpha> : "ᾂ" U1f82
-<Multi_key> <bar> <grave> <greater> <Greek_alpha> : "ᾂ" U1f82
-<Multi_key> <greater> <bar> <grave> <Greek_alpha> : "ᾂ" U1f82
-<Multi_key> <greater> <grave> <bar> <Greek_alpha> : "ᾂ" U1f82
-<Multi_key> <grave> <bar> <greater> <Greek_alpha> : "ᾂ" U1f82
-<Multi_key> <grave> <greater> <bar> <Greek_alpha> : "ᾂ" U1f82
-<dead_iota> <dead_horn> <dead_grave> <Greek_alpha> : "ᾂ" U1f82
-<dead_iota> <dead_psili> <dead_grave> <Greek_alpha> : "ᾂ" U1f82
-<dead_iota> <dead_grave> <dead_horn> <Greek_alpha> : "ᾂ" U1f82
-<dead_iota> <dead_grave> <dead_psili> <Greek_alpha> : "ᾂ" U1f82
-<dead_horn> <dead_iota> <dead_grave> <Greek_alpha> : "ᾂ" U1f82
-<dead_psili> <dead_iota> <dead_grave> <Greek_alpha> : "ᾂ" U1f82
-<dead_horn> <dead_grave> <dead_iota> <Greek_alpha> : "ᾂ" U1f82
-<dead_psili> <dead_grave> <dead_iota> <Greek_alpha> : "ᾂ" U1f82
-<dead_grave> <dead_iota> <dead_horn> <Greek_alpha> : "ᾂ" U1f82
-<dead_grave> <dead_iota> <dead_psili> <Greek_alpha> : "ᾂ" U1f82
-<dead_grave> <dead_horn> <dead_iota> <Greek_alpha> : "ᾂ" U1f82
-<dead_grave> <dead_psili> <dead_iota> <Greek_alpha> : "ᾂ" U1f82
-<Multi_key> <bar> <less> <grave> <Greek_alpha> : "ᾃ" U1f83
-<Multi_key> <bar> <grave> <less> <Greek_alpha> : "ᾃ" U1f83
-<Multi_key> <less> <bar> <grave> <Greek_alpha> : "ᾃ" U1f83
-<Multi_key> <less> <grave> <bar> <Greek_alpha> : "ᾃ" U1f83
-<Multi_key> <grave> <bar> <less> <Greek_alpha> : "ᾃ" U1f83
-<Multi_key> <grave> <less> <bar> <Greek_alpha> : "ᾃ" U1f83
-<dead_iota> <dead_ogonek> <dead_grave> <Greek_alpha> : "ᾃ" U1f83
-<dead_iota> <dead_dasia> <dead_grave> <Greek_alpha> : "ᾃ" U1f83
-<dead_iota> <dead_grave> <dead_ogonek> <Greek_alpha> : "ᾃ" U1f83
-<dead_iota> <dead_grave> <dead_dasia> <Greek_alpha> : "ᾃ" U1f83
-<dead_ogonek> <dead_iota> <dead_grave> <Greek_alpha> : "ᾃ" U1f83
-<dead_dasia> <dead_iota> <dead_grave> <Greek_alpha> : "ᾃ" U1f83
-<dead_ogonek> <dead_grave> <dead_iota> <Greek_alpha> : "ᾃ" U1f83
-<dead_dasia> <dead_grave> <dead_iota> <Greek_alpha> : "ᾃ" U1f83
-<dead_grave> <dead_iota> <dead_ogonek> <Greek_alpha> : "ᾃ" U1f83
-<dead_grave> <dead_iota> <dead_dasia> <Greek_alpha> : "ᾃ" U1f83
-<dead_grave> <dead_ogonek> <dead_iota> <Greek_alpha> : "ᾃ" U1f83
-<dead_grave> <dead_dasia> <dead_iota> <Greek_alpha> : "ᾃ" U1f83
-<Multi_key> <bar> <greater> <apostrophe> <Greek_alpha> : "ᾄ" U1f84
-<Multi_key> <bar> <apostrophe> <greater> <Greek_alpha> : "ᾄ" U1f84
-<Multi_key> <greater> <bar> <apostrophe> <Greek_alpha> : "ᾄ" U1f84
-<Multi_key> <greater> <apostrophe> <bar> <Greek_alpha> : "ᾄ" U1f84
-<Multi_key> <apostrophe> <bar> <greater> <Greek_alpha> : "ᾄ" U1f84
-<Multi_key> <apostrophe> <greater> <bar> <Greek_alpha> : "ᾄ" U1f84
-<dead_iota> <dead_horn> <dead_acute> <Greek_alpha> : "ᾄ" U1f84
-<dead_iota> <dead_psili> <dead_acute> <Greek_alpha> : "ᾄ" U1f84
-<dead_iota> <dead_acute> <dead_horn> <Greek_alpha> : "ᾄ" U1f84
-<dead_iota> <dead_acute> <dead_psili> <Greek_alpha> : "ᾄ" U1f84
-<dead_horn> <dead_iota> <dead_acute> <Greek_alpha> : "ᾄ" U1f84
-<dead_psili> <dead_iota> <dead_acute> <Greek_alpha> : "ᾄ" U1f84
-<dead_horn> <dead_acute> <dead_iota> <Greek_alpha> : "ᾄ" U1f84
-<dead_psili> <dead_acute> <dead_iota> <Greek_alpha> : "ᾄ" U1f84
-<dead_acute> <dead_iota> <dead_horn> <Greek_alpha> : "ᾄ" U1f84
-<dead_acute> <dead_iota> <dead_psili> <Greek_alpha> : "ᾄ" U1f84
-<dead_acute> <dead_horn> <dead_iota> <Greek_alpha> : "ᾄ" U1f84
-<dead_acute> <dead_psili> <dead_iota> <Greek_alpha> : "ᾄ" U1f84
-<Multi_key> <bar> <less> <apostrophe> <Greek_alpha> : "á¾…" U1f85
-<Multi_key> <bar> <apostrophe> <less> <Greek_alpha> : "á¾…" U1f85
-<Multi_key> <less> <bar> <apostrophe> <Greek_alpha> : "á¾…" U1f85
-<Multi_key> <less> <apostrophe> <bar> <Greek_alpha> : "á¾…" U1f85
-<Multi_key> <apostrophe> <bar> <less> <Greek_alpha> : "á¾…" U1f85
-<Multi_key> <apostrophe> <less> <bar> <Greek_alpha> : "á¾…" U1f85
-<dead_iota> <dead_ogonek> <dead_acute> <Greek_alpha> : "á¾…" U1f85
-<dead_iota> <dead_dasia> <dead_acute> <Greek_alpha> : "á¾…" U1f85
-<dead_iota> <dead_acute> <dead_ogonek> <Greek_alpha> : "á¾…" U1f85
-<dead_iota> <dead_acute> <dead_dasia> <Greek_alpha> : "á¾…" U1f85
-<dead_ogonek> <dead_iota> <dead_acute> <Greek_alpha> : "á¾…" U1f85
-<dead_dasia> <dead_iota> <dead_acute> <Greek_alpha> : "á¾…" U1f85
-<dead_ogonek> <dead_acute> <dead_iota> <Greek_alpha> : "á¾…" U1f85
-<dead_dasia> <dead_acute> <dead_iota> <Greek_alpha> : "á¾…" U1f85
-<dead_acute> <dead_iota> <dead_ogonek> <Greek_alpha> : "á¾…" U1f85
-<dead_acute> <dead_iota> <dead_dasia> <Greek_alpha> : "á¾…" U1f85
-<dead_acute> <dead_ogonek> <dead_iota> <Greek_alpha> : "á¾…" U1f85
-<dead_acute> <dead_dasia> <dead_iota> <Greek_alpha> : "á¾…" U1f85
-<Multi_key> <bar> <greater> <asciitilde> <Greek_alpha> : "ᾆ" U1f86
-<Multi_key> <bar> <asciitilde> <greater> <Greek_alpha> : "ᾆ" U1f86
-<Multi_key> <greater> <bar> <asciitilde> <Greek_alpha> : "ᾆ" U1f86
-<Multi_key> <greater> <asciitilde> <bar> <Greek_alpha> : "ᾆ" U1f86
-<Multi_key> <asciitilde> <bar> <greater> <Greek_alpha> : "ᾆ" U1f86
-<Multi_key> <asciitilde> <greater> <bar> <Greek_alpha> : "ᾆ" U1f86
-<dead_iota> <dead_horn> <dead_tilde> <Greek_alpha> : "ᾆ" U1f86
-<dead_iota> <dead_psili> <dead_tilde> <Greek_alpha> : "ᾆ" U1f86
-<dead_iota> <dead_tilde> <dead_horn> <Greek_alpha> : "ᾆ" U1f86
-<dead_iota> <dead_tilde> <dead_psili> <Greek_alpha> : "ᾆ" U1f86
-<dead_horn> <dead_iota> <dead_tilde> <Greek_alpha> : "ᾆ" U1f86
-<dead_psili> <dead_iota> <dead_tilde> <Greek_alpha> : "ᾆ" U1f86
-<dead_horn> <dead_tilde> <dead_iota> <Greek_alpha> : "ᾆ" U1f86
-<dead_psili> <dead_tilde> <dead_iota> <Greek_alpha> : "ᾆ" U1f86
-<dead_tilde> <dead_iota> <dead_horn> <Greek_alpha> : "ᾆ" U1f86
-<dead_tilde> <dead_iota> <dead_psili> <Greek_alpha> : "ᾆ" U1f86
-<dead_tilde> <dead_horn> <dead_iota> <Greek_alpha> : "ᾆ" U1f86
-<dead_tilde> <dead_psili> <dead_iota> <Greek_alpha> : "ᾆ" U1f86
-<Multi_key> <bar> <less> <asciitilde> <Greek_alpha> : "ᾇ" U1f87
-<Multi_key> <bar> <asciitilde> <less> <Greek_alpha> : "ᾇ" U1f87
-<Multi_key> <less> <bar> <asciitilde> <Greek_alpha> : "ᾇ" U1f87
-<Multi_key> <less> <asciitilde> <bar> <Greek_alpha> : "ᾇ" U1f87
-<Multi_key> <asciitilde> <bar> <less> <Greek_alpha> : "ᾇ" U1f87
-<Multi_key> <asciitilde> <less> <bar> <Greek_alpha> : "ᾇ" U1f87
-<dead_iota> <dead_ogonek> <dead_tilde> <Greek_alpha> : "ᾇ" U1f87
-<dead_iota> <dead_dasia> <dead_tilde> <Greek_alpha> : "ᾇ" U1f87
-<dead_iota> <dead_tilde> <dead_ogonek> <Greek_alpha> : "ᾇ" U1f87
-<dead_iota> <dead_tilde> <dead_dasia> <Greek_alpha> : "ᾇ" U1f87
-<dead_ogonek> <dead_iota> <dead_tilde> <Greek_alpha> : "ᾇ" U1f87
-<dead_dasia> <dead_iota> <dead_tilde> <Greek_alpha> : "ᾇ" U1f87
-<dead_ogonek> <dead_tilde> <dead_iota> <Greek_alpha> : "ᾇ" U1f87
-<dead_dasia> <dead_tilde> <dead_iota> <Greek_alpha> : "ᾇ" U1f87
-<dead_tilde> <dead_iota> <dead_ogonek> <Greek_alpha> : "ᾇ" U1f87
-<dead_tilde> <dead_iota> <dead_dasia> <Greek_alpha> : "ᾇ" U1f87
-<dead_tilde> <dead_ogonek> <dead_iota> <Greek_alpha> : "ᾇ" U1f87
-<dead_tilde> <dead_dasia> <dead_iota> <Greek_alpha> : "ᾇ" U1f87
-<Multi_key> <bar> <greater> <Greek_ALPHA> : "ᾈ" U1f88
-<Multi_key> <greater> <bar> <Greek_ALPHA> : "ᾈ" U1f88
-<dead_iota> <dead_horn> <Greek_ALPHA> : "ᾈ" U1f88
-<dead_iota> <dead_psili> <Greek_ALPHA> : "ᾈ" U1f88
-<dead_horn> <dead_iota> <Greek_ALPHA> : "ᾈ" U1f88
-<dead_psili> <dead_iota> <Greek_ALPHA> : "ᾈ" U1f88
-<Multi_key> <bar> <less> <Greek_ALPHA> : "ᾉ" U1f89
-<Multi_key> <less> <bar> <Greek_ALPHA> : "ᾉ" U1f89
-<dead_iota> <dead_ogonek> <Greek_ALPHA> : "ᾉ" U1f89
-<dead_iota> <dead_dasia> <Greek_ALPHA> : "ᾉ" U1f89
-<dead_ogonek> <dead_iota> <Greek_ALPHA> : "ᾉ" U1f89
-<dead_dasia> <dead_iota> <Greek_ALPHA> : "ᾉ" U1f89
-<Multi_key> <bar> <greater> <grave> <Greek_ALPHA> : "ᾊ" U1f8a
-<Multi_key> <bar> <grave> <greater> <Greek_ALPHA> : "ᾊ" U1f8a
-<Multi_key> <greater> <bar> <grave> <Greek_ALPHA> : "ᾊ" U1f8a
-<Multi_key> <greater> <grave> <bar> <Greek_ALPHA> : "ᾊ" U1f8a
-<Multi_key> <grave> <bar> <greater> <Greek_ALPHA> : "ᾊ" U1f8a
-<Multi_key> <grave> <greater> <bar> <Greek_ALPHA> : "ᾊ" U1f8a
-<dead_iota> <dead_horn> <dead_grave> <Greek_ALPHA> : "ᾊ" U1f8a
-<dead_iota> <dead_psili> <dead_grave> <Greek_ALPHA> : "ᾊ" U1f8a
-<dead_iota> <dead_grave> <dead_horn> <Greek_ALPHA> : "ᾊ" U1f8a
-<dead_iota> <dead_grave> <dead_psili> <Greek_ALPHA> : "ᾊ" U1f8a
-<dead_horn> <dead_iota> <dead_grave> <Greek_ALPHA> : "ᾊ" U1f8a
-<dead_psili> <dead_iota> <dead_grave> <Greek_ALPHA> : "ᾊ" U1f8a
-<dead_horn> <dead_grave> <dead_iota> <Greek_ALPHA> : "ᾊ" U1f8a
-<dead_psili> <dead_grave> <dead_iota> <Greek_ALPHA> : "ᾊ" U1f8a
-<dead_grave> <dead_iota> <dead_horn> <Greek_ALPHA> : "ᾊ" U1f8a
-<dead_grave> <dead_iota> <dead_psili> <Greek_ALPHA> : "ᾊ" U1f8a
-<dead_grave> <dead_horn> <dead_iota> <Greek_ALPHA> : "ᾊ" U1f8a
-<dead_grave> <dead_psili> <dead_iota> <Greek_ALPHA> : "ᾊ" U1f8a
-<Multi_key> <bar> <less> <grave> <Greek_ALPHA> : "ᾋ" U1f8b
-<Multi_key> <bar> <grave> <less> <Greek_ALPHA> : "ᾋ" U1f8b
-<Multi_key> <less> <bar> <grave> <Greek_ALPHA> : "ᾋ" U1f8b
-<Multi_key> <less> <grave> <bar> <Greek_ALPHA> : "ᾋ" U1f8b
-<Multi_key> <grave> <bar> <less> <Greek_ALPHA> : "ᾋ" U1f8b
-<Multi_key> <grave> <less> <bar> <Greek_ALPHA> : "ᾋ" U1f8b
-<dead_iota> <dead_ogonek> <dead_grave> <Greek_ALPHA> : "ᾋ" U1f8b
-<dead_iota> <dead_dasia> <dead_grave> <Greek_ALPHA> : "ᾋ" U1f8b
-<dead_iota> <dead_grave> <dead_ogonek> <Greek_ALPHA> : "ᾋ" U1f8b
-<dead_iota> <dead_grave> <dead_dasia> <Greek_ALPHA> : "ᾋ" U1f8b
-<dead_ogonek> <dead_iota> <dead_grave> <Greek_ALPHA> : "ᾋ" U1f8b
-<dead_dasia> <dead_iota> <dead_grave> <Greek_ALPHA> : "ᾋ" U1f8b
-<dead_ogonek> <dead_grave> <dead_iota> <Greek_ALPHA> : "ᾋ" U1f8b
-<dead_dasia> <dead_grave> <dead_iota> <Greek_ALPHA> : "ᾋ" U1f8b
-<dead_grave> <dead_iota> <dead_ogonek> <Greek_ALPHA> : "ᾋ" U1f8b
-<dead_grave> <dead_iota> <dead_dasia> <Greek_ALPHA> : "ᾋ" U1f8b
-<dead_grave> <dead_ogonek> <dead_iota> <Greek_ALPHA> : "ᾋ" U1f8b
-<dead_grave> <dead_dasia> <dead_iota> <Greek_ALPHA> : "ᾋ" U1f8b
-<Multi_key> <bar> <greater> <apostrophe> <Greek_ALPHA> : "ᾌ" U1f8c
-<Multi_key> <bar> <apostrophe> <greater> <Greek_ALPHA> : "ᾌ" U1f8c
-<Multi_key> <greater> <bar> <apostrophe> <Greek_ALPHA> : "ᾌ" U1f8c
-<Multi_key> <greater> <apostrophe> <bar> <Greek_ALPHA> : "ᾌ" U1f8c
-<Multi_key> <apostrophe> <bar> <greater> <Greek_ALPHA> : "ᾌ" U1f8c
-<Multi_key> <apostrophe> <greater> <bar> <Greek_ALPHA> : "ᾌ" U1f8c
-<dead_iota> <dead_horn> <dead_acute> <Greek_ALPHA> : "ᾌ" U1f8c
-<dead_iota> <dead_psili> <dead_acute> <Greek_ALPHA> : "ᾌ" U1f8c
-<dead_iota> <dead_acute> <dead_horn> <Greek_ALPHA> : "ᾌ" U1f8c
-<dead_iota> <dead_acute> <dead_psili> <Greek_ALPHA> : "ᾌ" U1f8c
-<dead_horn> <dead_iota> <dead_acute> <Greek_ALPHA> : "ᾌ" U1f8c
-<dead_psili> <dead_iota> <dead_acute> <Greek_ALPHA> : "ᾌ" U1f8c
-<dead_horn> <dead_acute> <dead_iota> <Greek_ALPHA> : "ᾌ" U1f8c
-<dead_psili> <dead_acute> <dead_iota> <Greek_ALPHA> : "ᾌ" U1f8c
-<dead_acute> <dead_iota> <dead_horn> <Greek_ALPHA> : "ᾌ" U1f8c
-<dead_acute> <dead_iota> <dead_psili> <Greek_ALPHA> : "ᾌ" U1f8c
-<dead_acute> <dead_horn> <dead_iota> <Greek_ALPHA> : "ᾌ" U1f8c
-<dead_acute> <dead_psili> <dead_iota> <Greek_ALPHA> : "ᾌ" U1f8c
-<Multi_key> <bar> <less> <apostrophe> <Greek_ALPHA> : "á¾" U1f8d
-<Multi_key> <bar> <apostrophe> <less> <Greek_ALPHA> : "á¾" U1f8d
-<Multi_key> <less> <bar> <apostrophe> <Greek_ALPHA> : "á¾" U1f8d
-<Multi_key> <less> <apostrophe> <bar> <Greek_ALPHA> : "á¾" U1f8d
-<Multi_key> <apostrophe> <bar> <less> <Greek_ALPHA> : "á¾" U1f8d
-<Multi_key> <apostrophe> <less> <bar> <Greek_ALPHA> : "á¾" U1f8d
-<dead_iota> <dead_ogonek> <dead_acute> <Greek_ALPHA> : "á¾" U1f8d
-<dead_iota> <dead_dasia> <dead_acute> <Greek_ALPHA> : "á¾" U1f8d
-<dead_iota> <dead_acute> <dead_ogonek> <Greek_ALPHA> : "á¾" U1f8d
-<dead_iota> <dead_acute> <dead_dasia> <Greek_ALPHA> : "á¾" U1f8d
-<dead_ogonek> <dead_iota> <dead_acute> <Greek_ALPHA> : "á¾" U1f8d
-<dead_dasia> <dead_iota> <dead_acute> <Greek_ALPHA> : "á¾" U1f8d
-<dead_ogonek> <dead_acute> <dead_iota> <Greek_ALPHA> : "á¾" U1f8d
-<dead_dasia> <dead_acute> <dead_iota> <Greek_ALPHA> : "á¾" U1f8d
-<dead_acute> <dead_iota> <dead_ogonek> <Greek_ALPHA> : "á¾" U1f8d
-<dead_acute> <dead_iota> <dead_dasia> <Greek_ALPHA> : "á¾" U1f8d
-<dead_acute> <dead_ogonek> <dead_iota> <Greek_ALPHA> : "á¾" U1f8d
-<dead_acute> <dead_dasia> <dead_iota> <Greek_ALPHA> : "á¾" U1f8d
-<Multi_key> <bar> <greater> <asciitilde> <Greek_ALPHA> : "ᾎ" U1f8e
-<Multi_key> <bar> <asciitilde> <greater> <Greek_ALPHA> : "ᾎ" U1f8e
-<Multi_key> <greater> <bar> <asciitilde> <Greek_ALPHA> : "ᾎ" U1f8e
-<Multi_key> <greater> <asciitilde> <bar> <Greek_ALPHA> : "ᾎ" U1f8e
-<Multi_key> <asciitilde> <bar> <greater> <Greek_ALPHA> : "ᾎ" U1f8e
-<Multi_key> <asciitilde> <greater> <bar> <Greek_ALPHA> : "ᾎ" U1f8e
-<dead_iota> <dead_horn> <dead_tilde> <Greek_ALPHA> : "ᾎ" U1f8e
-<dead_iota> <dead_psili> <dead_tilde> <Greek_ALPHA> : "ᾎ" U1f8e
-<dead_iota> <dead_tilde> <dead_horn> <Greek_ALPHA> : "ᾎ" U1f8e
-<dead_iota> <dead_tilde> <dead_psili> <Greek_ALPHA> : "ᾎ" U1f8e
-<dead_horn> <dead_iota> <dead_tilde> <Greek_ALPHA> : "ᾎ" U1f8e
-<dead_psili> <dead_iota> <dead_tilde> <Greek_ALPHA> : "ᾎ" U1f8e
-<dead_horn> <dead_tilde> <dead_iota> <Greek_ALPHA> : "ᾎ" U1f8e
-<dead_psili> <dead_tilde> <dead_iota> <Greek_ALPHA> : "ᾎ" U1f8e
-<dead_tilde> <dead_iota> <dead_horn> <Greek_ALPHA> : "ᾎ" U1f8e
-<dead_tilde> <dead_iota> <dead_psili> <Greek_ALPHA> : "ᾎ" U1f8e
-<dead_tilde> <dead_horn> <dead_iota> <Greek_ALPHA> : "ᾎ" U1f8e
-<dead_tilde> <dead_psili> <dead_iota> <Greek_ALPHA> : "ᾎ" U1f8e
-<Multi_key> <bar> <less> <asciitilde> <Greek_ALPHA> : "á¾" U1f8f
-<Multi_key> <bar> <asciitilde> <less> <Greek_ALPHA> : "á¾" U1f8f
-<Multi_key> <less> <bar> <asciitilde> <Greek_ALPHA> : "á¾" U1f8f
-<Multi_key> <less> <asciitilde> <bar> <Greek_ALPHA> : "á¾" U1f8f
-<Multi_key> <asciitilde> <bar> <less> <Greek_ALPHA> : "á¾" U1f8f
-<Multi_key> <asciitilde> <less> <bar> <Greek_ALPHA> : "á¾" U1f8f
-<dead_iota> <dead_ogonek> <dead_tilde> <Greek_ALPHA> : "á¾" U1f8f
-<dead_iota> <dead_dasia> <dead_tilde> <Greek_ALPHA> : "á¾" U1f8f
-<dead_iota> <dead_tilde> <dead_ogonek> <Greek_ALPHA> : "á¾" U1f8f
-<dead_iota> <dead_tilde> <dead_dasia> <Greek_ALPHA> : "á¾" U1f8f
-<dead_ogonek> <dead_iota> <dead_tilde> <Greek_ALPHA> : "á¾" U1f8f
-<dead_dasia> <dead_iota> <dead_tilde> <Greek_ALPHA> : "á¾" U1f8f
-<dead_ogonek> <dead_tilde> <dead_iota> <Greek_ALPHA> : "á¾" U1f8f
-<dead_dasia> <dead_tilde> <dead_iota> <Greek_ALPHA> : "á¾" U1f8f
-<dead_tilde> <dead_iota> <dead_ogonek> <Greek_ALPHA> : "á¾" U1f8f
-<dead_tilde> <dead_iota> <dead_dasia> <Greek_ALPHA> : "á¾" U1f8f
-<dead_tilde> <dead_ogonek> <dead_iota> <Greek_ALPHA> : "á¾" U1f8f
-<dead_tilde> <dead_dasia> <dead_iota> <Greek_ALPHA> : "á¾" U1f8f
-<Multi_key> <bar> <greater> <Greek_eta> : "á¾" U1f90
-<Multi_key> <greater> <bar> <Greek_eta> : "á¾" U1f90
-<dead_iota> <dead_horn> <Greek_eta> : "á¾" U1f90
-<dead_iota> <dead_psili> <Greek_eta> : "á¾" U1f90
-<dead_horn> <dead_iota> <Greek_eta> : "á¾" U1f90
-<dead_psili> <dead_iota> <Greek_eta> : "á¾" U1f90
-<Multi_key> <bar> <less> <Greek_eta> : "ᾑ" U1f91
-<Multi_key> <less> <bar> <Greek_eta> : "ᾑ" U1f91
-<dead_iota> <dead_ogonek> <Greek_eta> : "ᾑ" U1f91
-<dead_iota> <dead_dasia> <Greek_eta> : "ᾑ" U1f91
-<dead_ogonek> <dead_iota> <Greek_eta> : "ᾑ" U1f91
-<dead_dasia> <dead_iota> <Greek_eta> : "ᾑ" U1f91
-<Multi_key> <bar> <greater> <grave> <Greek_eta> : "á¾’" U1f92
-<Multi_key> <bar> <grave> <greater> <Greek_eta> : "á¾’" U1f92
-<Multi_key> <greater> <bar> <grave> <Greek_eta> : "á¾’" U1f92
-<Multi_key> <greater> <grave> <bar> <Greek_eta> : "á¾’" U1f92
-<Multi_key> <grave> <bar> <greater> <Greek_eta> : "á¾’" U1f92
-<Multi_key> <grave> <greater> <bar> <Greek_eta> : "á¾’" U1f92
-<dead_iota> <dead_horn> <dead_grave> <Greek_eta> : "á¾’" U1f92
-<dead_iota> <dead_psili> <dead_grave> <Greek_eta> : "á¾’" U1f92
-<dead_iota> <dead_grave> <dead_horn> <Greek_eta> : "á¾’" U1f92
-<dead_iota> <dead_grave> <dead_psili> <Greek_eta> : "á¾’" U1f92
-<dead_horn> <dead_iota> <dead_grave> <Greek_eta> : "á¾’" U1f92
-<dead_psili> <dead_iota> <dead_grave> <Greek_eta> : "á¾’" U1f92
-<dead_horn> <dead_grave> <dead_iota> <Greek_eta> : "á¾’" U1f92
-<dead_psili> <dead_grave> <dead_iota> <Greek_eta> : "á¾’" U1f92
-<dead_grave> <dead_iota> <dead_horn> <Greek_eta> : "á¾’" U1f92
-<dead_grave> <dead_iota> <dead_psili> <Greek_eta> : "á¾’" U1f92
-<dead_grave> <dead_horn> <dead_iota> <Greek_eta> : "á¾’" U1f92
-<dead_grave> <dead_psili> <dead_iota> <Greek_eta> : "á¾’" U1f92
-<Multi_key> <bar> <less> <grave> <Greek_eta> : "ᾓ" U1f93
-<Multi_key> <bar> <grave> <less> <Greek_eta> : "ᾓ" U1f93
-<Multi_key> <less> <bar> <grave> <Greek_eta> : "ᾓ" U1f93
-<Multi_key> <less> <grave> <bar> <Greek_eta> : "ᾓ" U1f93
-<Multi_key> <grave> <bar> <less> <Greek_eta> : "ᾓ" U1f93
-<Multi_key> <grave> <less> <bar> <Greek_eta> : "ᾓ" U1f93
-<dead_iota> <dead_ogonek> <dead_grave> <Greek_eta> : "ᾓ" U1f93
-<dead_iota> <dead_dasia> <dead_grave> <Greek_eta> : "ᾓ" U1f93
-<dead_iota> <dead_grave> <dead_ogonek> <Greek_eta> : "ᾓ" U1f93
-<dead_iota> <dead_grave> <dead_dasia> <Greek_eta> : "ᾓ" U1f93
-<dead_ogonek> <dead_iota> <dead_grave> <Greek_eta> : "ᾓ" U1f93
-<dead_dasia> <dead_iota> <dead_grave> <Greek_eta> : "ᾓ" U1f93
-<dead_ogonek> <dead_grave> <dead_iota> <Greek_eta> : "ᾓ" U1f93
-<dead_dasia> <dead_grave> <dead_iota> <Greek_eta> : "ᾓ" U1f93
-<dead_grave> <dead_iota> <dead_ogonek> <Greek_eta> : "ᾓ" U1f93
-<dead_grave> <dead_iota> <dead_dasia> <Greek_eta> : "ᾓ" U1f93
-<dead_grave> <dead_ogonek> <dead_iota> <Greek_eta> : "ᾓ" U1f93
-<dead_grave> <dead_dasia> <dead_iota> <Greek_eta> : "ᾓ" U1f93
-<Multi_key> <bar> <greater> <apostrophe> <Greek_eta> : "á¾”" U1f94
-<Multi_key> <bar> <apostrophe> <greater> <Greek_eta> : "á¾”" U1f94
-<Multi_key> <greater> <bar> <apostrophe> <Greek_eta> : "á¾”" U1f94
-<Multi_key> <greater> <apostrophe> <bar> <Greek_eta> : "á¾”" U1f94
-<Multi_key> <apostrophe> <bar> <greater> <Greek_eta> : "á¾”" U1f94
-<Multi_key> <apostrophe> <greater> <bar> <Greek_eta> : "á¾”" U1f94
-<dead_iota> <dead_horn> <dead_acute> <Greek_eta> : "á¾”" U1f94
-<dead_iota> <dead_psili> <dead_acute> <Greek_eta> : "á¾”" U1f94
-<dead_iota> <dead_acute> <dead_horn> <Greek_eta> : "á¾”" U1f94
-<dead_iota> <dead_acute> <dead_psili> <Greek_eta> : "á¾”" U1f94
-<dead_horn> <dead_iota> <dead_acute> <Greek_eta> : "á¾”" U1f94
-<dead_psili> <dead_iota> <dead_acute> <Greek_eta> : "á¾”" U1f94
-<dead_horn> <dead_acute> <dead_iota> <Greek_eta> : "á¾”" U1f94
-<dead_psili> <dead_acute> <dead_iota> <Greek_eta> : "á¾”" U1f94
-<dead_acute> <dead_iota> <dead_horn> <Greek_eta> : "á¾”" U1f94
-<dead_acute> <dead_iota> <dead_psili> <Greek_eta> : "á¾”" U1f94
-<dead_acute> <dead_horn> <dead_iota> <Greek_eta> : "á¾”" U1f94
-<dead_acute> <dead_psili> <dead_iota> <Greek_eta> : "á¾”" U1f94
-<Multi_key> <bar> <less> <apostrophe> <Greek_eta> : "ᾕ" U1f95
-<Multi_key> <bar> <apostrophe> <less> <Greek_eta> : "ᾕ" U1f95
-<Multi_key> <less> <bar> <apostrophe> <Greek_eta> : "ᾕ" U1f95
-<Multi_key> <less> <apostrophe> <bar> <Greek_eta> : "ᾕ" U1f95
-<Multi_key> <apostrophe> <bar> <less> <Greek_eta> : "ᾕ" U1f95
-<Multi_key> <apostrophe> <less> <bar> <Greek_eta> : "ᾕ" U1f95
-<dead_iota> <dead_ogonek> <dead_acute> <Greek_eta> : "ᾕ" U1f95
-<dead_iota> <dead_dasia> <dead_acute> <Greek_eta> : "ᾕ" U1f95
-<dead_iota> <dead_acute> <dead_ogonek> <Greek_eta> : "ᾕ" U1f95
-<dead_iota> <dead_acute> <dead_dasia> <Greek_eta> : "ᾕ" U1f95
-<dead_ogonek> <dead_iota> <dead_acute> <Greek_eta> : "ᾕ" U1f95
-<dead_dasia> <dead_iota> <dead_acute> <Greek_eta> : "ᾕ" U1f95
-<dead_ogonek> <dead_acute> <dead_iota> <Greek_eta> : "ᾕ" U1f95
-<dead_dasia> <dead_acute> <dead_iota> <Greek_eta> : "ᾕ" U1f95
-<dead_acute> <dead_iota> <dead_ogonek> <Greek_eta> : "ᾕ" U1f95
-<dead_acute> <dead_iota> <dead_dasia> <Greek_eta> : "ᾕ" U1f95
-<dead_acute> <dead_ogonek> <dead_iota> <Greek_eta> : "ᾕ" U1f95
-<dead_acute> <dead_dasia> <dead_iota> <Greek_eta> : "ᾕ" U1f95
-<Multi_key> <bar> <greater> <asciitilde> <Greek_eta> : "á¾–" U1f96
-<Multi_key> <bar> <asciitilde> <greater> <Greek_eta> : "á¾–" U1f96
-<Multi_key> <greater> <bar> <asciitilde> <Greek_eta> : "á¾–" U1f96
-<Multi_key> <greater> <asciitilde> <bar> <Greek_eta> : "á¾–" U1f96
-<Multi_key> <asciitilde> <bar> <greater> <Greek_eta> : "á¾–" U1f96
-<Multi_key> <asciitilde> <greater> <bar> <Greek_eta> : "á¾–" U1f96
-<dead_iota> <dead_horn> <dead_tilde> <Greek_eta> : "á¾–" U1f96
-<dead_iota> <dead_psili> <dead_tilde> <Greek_eta> : "á¾–" U1f96
-<dead_iota> <dead_tilde> <dead_horn> <Greek_eta> : "á¾–" U1f96
-<dead_iota> <dead_tilde> <dead_psili> <Greek_eta> : "á¾–" U1f96
-<dead_horn> <dead_iota> <dead_tilde> <Greek_eta> : "á¾–" U1f96
-<dead_psili> <dead_iota> <dead_tilde> <Greek_eta> : "á¾–" U1f96
-<dead_horn> <dead_tilde> <dead_iota> <Greek_eta> : "á¾–" U1f96
-<dead_psili> <dead_tilde> <dead_iota> <Greek_eta> : "á¾–" U1f96
-<dead_tilde> <dead_iota> <dead_horn> <Greek_eta> : "á¾–" U1f96
-<dead_tilde> <dead_iota> <dead_psili> <Greek_eta> : "á¾–" U1f96
-<dead_tilde> <dead_horn> <dead_iota> <Greek_eta> : "á¾–" U1f96
-<dead_tilde> <dead_psili> <dead_iota> <Greek_eta> : "á¾–" U1f96
-<Multi_key> <bar> <less> <asciitilde> <Greek_eta> : "á¾—" U1f97
-<Multi_key> <bar> <asciitilde> <less> <Greek_eta> : "á¾—" U1f97
-<Multi_key> <less> <bar> <asciitilde> <Greek_eta> : "á¾—" U1f97
-<Multi_key> <less> <asciitilde> <bar> <Greek_eta> : "á¾—" U1f97
-<Multi_key> <asciitilde> <bar> <less> <Greek_eta> : "á¾—" U1f97
-<Multi_key> <asciitilde> <less> <bar> <Greek_eta> : "á¾—" U1f97
-<dead_iota> <dead_ogonek> <dead_tilde> <Greek_eta> : "á¾—" U1f97
-<dead_iota> <dead_dasia> <dead_tilde> <Greek_eta> : "á¾—" U1f97
-<dead_iota> <dead_tilde> <dead_ogonek> <Greek_eta> : "á¾—" U1f97
-<dead_iota> <dead_tilde> <dead_dasia> <Greek_eta> : "á¾—" U1f97
-<dead_ogonek> <dead_iota> <dead_tilde> <Greek_eta> : "á¾—" U1f97
-<dead_dasia> <dead_iota> <dead_tilde> <Greek_eta> : "á¾—" U1f97
-<dead_ogonek> <dead_tilde> <dead_iota> <Greek_eta> : "á¾—" U1f97
-<dead_dasia> <dead_tilde> <dead_iota> <Greek_eta> : "á¾—" U1f97
-<dead_tilde> <dead_iota> <dead_ogonek> <Greek_eta> : "á¾—" U1f97
-<dead_tilde> <dead_iota> <dead_dasia> <Greek_eta> : "á¾—" U1f97
-<dead_tilde> <dead_ogonek> <dead_iota> <Greek_eta> : "á¾—" U1f97
-<dead_tilde> <dead_dasia> <dead_iota> <Greek_eta> : "á¾—" U1f97
-<Multi_key> <bar> <greater> <Greek_ETA> : "ᾘ" U1f98
-<Multi_key> <greater> <bar> <Greek_ETA> : "ᾘ" U1f98
-<dead_iota> <dead_horn> <Greek_ETA> : "ᾘ" U1f98
-<dead_iota> <dead_psili> <Greek_ETA> : "ᾘ" U1f98
-<dead_horn> <dead_iota> <Greek_ETA> : "ᾘ" U1f98
-<dead_psili> <dead_iota> <Greek_ETA> : "ᾘ" U1f98
-<Multi_key> <bar> <less> <Greek_ETA> : "á¾™" U1f99
-<Multi_key> <less> <bar> <Greek_ETA> : "á¾™" U1f99
-<dead_iota> <dead_ogonek> <Greek_ETA> : "á¾™" U1f99
-<dead_iota> <dead_dasia> <Greek_ETA> : "á¾™" U1f99
-<dead_ogonek> <dead_iota> <Greek_ETA> : "á¾™" U1f99
-<dead_dasia> <dead_iota> <Greek_ETA> : "á¾™" U1f99
-<Multi_key> <bar> <greater> <grave> <Greek_ETA> : "ᾚ" U1f9a
-<Multi_key> <bar> <grave> <greater> <Greek_ETA> : "ᾚ" U1f9a
-<Multi_key> <greater> <bar> <grave> <Greek_ETA> : "ᾚ" U1f9a
-<Multi_key> <greater> <grave> <bar> <Greek_ETA> : "ᾚ" U1f9a
-<Multi_key> <grave> <bar> <greater> <Greek_ETA> : "ᾚ" U1f9a
-<Multi_key> <grave> <greater> <bar> <Greek_ETA> : "ᾚ" U1f9a
-<dead_iota> <dead_horn> <dead_grave> <Greek_ETA> : "ᾚ" U1f9a
-<dead_iota> <dead_psili> <dead_grave> <Greek_ETA> : "ᾚ" U1f9a
-<dead_iota> <dead_grave> <dead_horn> <Greek_ETA> : "ᾚ" U1f9a
-<dead_iota> <dead_grave> <dead_psili> <Greek_ETA> : "ᾚ" U1f9a
-<dead_horn> <dead_iota> <dead_grave> <Greek_ETA> : "ᾚ" U1f9a
-<dead_psili> <dead_iota> <dead_grave> <Greek_ETA> : "ᾚ" U1f9a
-<dead_horn> <dead_grave> <dead_iota> <Greek_ETA> : "ᾚ" U1f9a
-<dead_psili> <dead_grave> <dead_iota> <Greek_ETA> : "ᾚ" U1f9a
-<dead_grave> <dead_iota> <dead_horn> <Greek_ETA> : "ᾚ" U1f9a
-<dead_grave> <dead_iota> <dead_psili> <Greek_ETA> : "ᾚ" U1f9a
-<dead_grave> <dead_horn> <dead_iota> <Greek_ETA> : "ᾚ" U1f9a
-<dead_grave> <dead_psili> <dead_iota> <Greek_ETA> : "ᾚ" U1f9a
-<Multi_key> <bar> <less> <grave> <Greek_ETA> : "á¾›" U1f9b
-<Multi_key> <bar> <grave> <less> <Greek_ETA> : "á¾›" U1f9b
-<Multi_key> <less> <bar> <grave> <Greek_ETA> : "á¾›" U1f9b
-<Multi_key> <less> <grave> <bar> <Greek_ETA> : "á¾›" U1f9b
-<Multi_key> <grave> <bar> <less> <Greek_ETA> : "á¾›" U1f9b
-<Multi_key> <grave> <less> <bar> <Greek_ETA> : "á¾›" U1f9b
-<dead_iota> <dead_ogonek> <dead_grave> <Greek_ETA> : "á¾›" U1f9b
-<dead_iota> <dead_dasia> <dead_grave> <Greek_ETA> : "á¾›" U1f9b
-<dead_iota> <dead_grave> <dead_ogonek> <Greek_ETA> : "á¾›" U1f9b
-<dead_iota> <dead_grave> <dead_dasia> <Greek_ETA> : "á¾›" U1f9b
-<dead_ogonek> <dead_iota> <dead_grave> <Greek_ETA> : "á¾›" U1f9b
-<dead_dasia> <dead_iota> <dead_grave> <Greek_ETA> : "á¾›" U1f9b
-<dead_ogonek> <dead_grave> <dead_iota> <Greek_ETA> : "á¾›" U1f9b
-<dead_dasia> <dead_grave> <dead_iota> <Greek_ETA> : "á¾›" U1f9b
-<dead_grave> <dead_iota> <dead_ogonek> <Greek_ETA> : "á¾›" U1f9b
-<dead_grave> <dead_iota> <dead_dasia> <Greek_ETA> : "á¾›" U1f9b
-<dead_grave> <dead_ogonek> <dead_iota> <Greek_ETA> : "á¾›" U1f9b
-<dead_grave> <dead_dasia> <dead_iota> <Greek_ETA> : "á¾›" U1f9b
-<Multi_key> <bar> <greater> <apostrophe> <Greek_ETA> : "ᾜ" U1f9c
-<Multi_key> <bar> <apostrophe> <greater> <Greek_ETA> : "ᾜ" U1f9c
-<Multi_key> <greater> <bar> <apostrophe> <Greek_ETA> : "ᾜ" U1f9c
-<Multi_key> <greater> <apostrophe> <bar> <Greek_ETA> : "ᾜ" U1f9c
-<Multi_key> <apostrophe> <bar> <greater> <Greek_ETA> : "ᾜ" U1f9c
-<Multi_key> <apostrophe> <greater> <bar> <Greek_ETA> : "ᾜ" U1f9c
-<dead_iota> <dead_horn> <dead_acute> <Greek_ETA> : "ᾜ" U1f9c
-<dead_iota> <dead_psili> <dead_acute> <Greek_ETA> : "ᾜ" U1f9c
-<dead_iota> <dead_acute> <dead_horn> <Greek_ETA> : "ᾜ" U1f9c
-<dead_iota> <dead_acute> <dead_psili> <Greek_ETA> : "ᾜ" U1f9c
-<dead_horn> <dead_iota> <dead_acute> <Greek_ETA> : "ᾜ" U1f9c
-<dead_psili> <dead_iota> <dead_acute> <Greek_ETA> : "ᾜ" U1f9c
-<dead_horn> <dead_acute> <dead_iota> <Greek_ETA> : "ᾜ" U1f9c
-<dead_psili> <dead_acute> <dead_iota> <Greek_ETA> : "ᾜ" U1f9c
-<dead_acute> <dead_iota> <dead_horn> <Greek_ETA> : "ᾜ" U1f9c
-<dead_acute> <dead_iota> <dead_psili> <Greek_ETA> : "ᾜ" U1f9c
-<dead_acute> <dead_horn> <dead_iota> <Greek_ETA> : "ᾜ" U1f9c
-<dead_acute> <dead_psili> <dead_iota> <Greek_ETA> : "ᾜ" U1f9c
-<Multi_key> <bar> <less> <apostrophe> <Greek_ETA> : "á¾" U1f9d
-<Multi_key> <bar> <apostrophe> <less> <Greek_ETA> : "á¾" U1f9d
-<Multi_key> <less> <bar> <apostrophe> <Greek_ETA> : "á¾" U1f9d
-<Multi_key> <less> <apostrophe> <bar> <Greek_ETA> : "á¾" U1f9d
-<Multi_key> <apostrophe> <bar> <less> <Greek_ETA> : "á¾" U1f9d
-<Multi_key> <apostrophe> <less> <bar> <Greek_ETA> : "á¾" U1f9d
-<dead_iota> <dead_ogonek> <dead_acute> <Greek_ETA> : "á¾" U1f9d
-<dead_iota> <dead_dasia> <dead_acute> <Greek_ETA> : "á¾" U1f9d
-<dead_iota> <dead_acute> <dead_ogonek> <Greek_ETA> : "á¾" U1f9d
-<dead_iota> <dead_acute> <dead_dasia> <Greek_ETA> : "á¾" U1f9d
-<dead_ogonek> <dead_iota> <dead_acute> <Greek_ETA> : "á¾" U1f9d
-<dead_dasia> <dead_iota> <dead_acute> <Greek_ETA> : "á¾" U1f9d
-<dead_ogonek> <dead_acute> <dead_iota> <Greek_ETA> : "á¾" U1f9d
-<dead_dasia> <dead_acute> <dead_iota> <Greek_ETA> : "á¾" U1f9d
-<dead_acute> <dead_iota> <dead_ogonek> <Greek_ETA> : "á¾" U1f9d
-<dead_acute> <dead_iota> <dead_dasia> <Greek_ETA> : "á¾" U1f9d
-<dead_acute> <dead_ogonek> <dead_iota> <Greek_ETA> : "á¾" U1f9d
-<dead_acute> <dead_dasia> <dead_iota> <Greek_ETA> : "á¾" U1f9d
-<Multi_key> <bar> <greater> <asciitilde> <Greek_ETA> : "ᾞ" U1f9e
-<Multi_key> <bar> <asciitilde> <greater> <Greek_ETA> : "ᾞ" U1f9e
-<Multi_key> <greater> <bar> <asciitilde> <Greek_ETA> : "ᾞ" U1f9e
-<Multi_key> <greater> <asciitilde> <bar> <Greek_ETA> : "ᾞ" U1f9e
-<Multi_key> <asciitilde> <bar> <greater> <Greek_ETA> : "ᾞ" U1f9e
-<Multi_key> <asciitilde> <greater> <bar> <Greek_ETA> : "ᾞ" U1f9e
-<dead_iota> <dead_horn> <dead_tilde> <Greek_ETA> : "ᾞ" U1f9e
-<dead_iota> <dead_psili> <dead_tilde> <Greek_ETA> : "ᾞ" U1f9e
-<dead_iota> <dead_tilde> <dead_horn> <Greek_ETA> : "ᾞ" U1f9e
-<dead_iota> <dead_tilde> <dead_psili> <Greek_ETA> : "ᾞ" U1f9e
-<dead_horn> <dead_iota> <dead_tilde> <Greek_ETA> : "ᾞ" U1f9e
-<dead_psili> <dead_iota> <dead_tilde> <Greek_ETA> : "ᾞ" U1f9e
-<dead_horn> <dead_tilde> <dead_iota> <Greek_ETA> : "ᾞ" U1f9e
-<dead_psili> <dead_tilde> <dead_iota> <Greek_ETA> : "ᾞ" U1f9e
-<dead_tilde> <dead_iota> <dead_horn> <Greek_ETA> : "ᾞ" U1f9e
-<dead_tilde> <dead_iota> <dead_psili> <Greek_ETA> : "ᾞ" U1f9e
-<dead_tilde> <dead_horn> <dead_iota> <Greek_ETA> : "ᾞ" U1f9e
-<dead_tilde> <dead_psili> <dead_iota> <Greek_ETA> : "ᾞ" U1f9e
-<Multi_key> <bar> <less> <asciitilde> <Greek_ETA> : "ᾟ" U1f9f
-<Multi_key> <bar> <asciitilde> <less> <Greek_ETA> : "ᾟ" U1f9f
-<Multi_key> <less> <bar> <asciitilde> <Greek_ETA> : "ᾟ" U1f9f
-<Multi_key> <less> <asciitilde> <bar> <Greek_ETA> : "ᾟ" U1f9f
-<Multi_key> <asciitilde> <bar> <less> <Greek_ETA> : "ᾟ" U1f9f
-<Multi_key> <asciitilde> <less> <bar> <Greek_ETA> : "ᾟ" U1f9f
-<dead_iota> <dead_ogonek> <dead_tilde> <Greek_ETA> : "ᾟ" U1f9f
-<dead_iota> <dead_dasia> <dead_tilde> <Greek_ETA> : "ᾟ" U1f9f
-<dead_iota> <dead_tilde> <dead_ogonek> <Greek_ETA> : "ᾟ" U1f9f
-<dead_iota> <dead_tilde> <dead_dasia> <Greek_ETA> : "ᾟ" U1f9f
-<dead_ogonek> <dead_iota> <dead_tilde> <Greek_ETA> : "ᾟ" U1f9f
-<dead_dasia> <dead_iota> <dead_tilde> <Greek_ETA> : "ᾟ" U1f9f
-<dead_ogonek> <dead_tilde> <dead_iota> <Greek_ETA> : "ᾟ" U1f9f
-<dead_dasia> <dead_tilde> <dead_iota> <Greek_ETA> : "ᾟ" U1f9f
-<dead_tilde> <dead_iota> <dead_ogonek> <Greek_ETA> : "ᾟ" U1f9f
-<dead_tilde> <dead_iota> <dead_dasia> <Greek_ETA> : "ᾟ" U1f9f
-<dead_tilde> <dead_ogonek> <dead_iota> <Greek_ETA> : "ᾟ" U1f9f
-<dead_tilde> <dead_dasia> <dead_iota> <Greek_ETA> : "ᾟ" U1f9f
-<Multi_key> <bar> <greater> <Greek_omega> : "á¾ " U1fa0
-<Multi_key> <greater> <bar> <Greek_omega> : "á¾ " U1fa0
-<dead_iota> <dead_horn> <Greek_omega> : "á¾ " U1fa0
-<dead_iota> <dead_psili> <Greek_omega> : "á¾ " U1fa0
-<dead_horn> <dead_iota> <Greek_omega> : "á¾ " U1fa0
-<dead_psili> <dead_iota> <Greek_omega> : "á¾ " U1fa0
-<Multi_key> <bar> <less> <Greek_omega> : "ᾡ" U1fa1
-<Multi_key> <less> <bar> <Greek_omega> : "ᾡ" U1fa1
-<dead_iota> <dead_ogonek> <Greek_omega> : "ᾡ" U1fa1
-<dead_iota> <dead_dasia> <Greek_omega> : "ᾡ" U1fa1
-<dead_ogonek> <dead_iota> <Greek_omega> : "ᾡ" U1fa1
-<dead_dasia> <dead_iota> <Greek_omega> : "ᾡ" U1fa1
-<Multi_key> <bar> <greater> <grave> <Greek_omega> : "á¾¢" U1fa2
-<Multi_key> <bar> <grave> <greater> <Greek_omega> : "á¾¢" U1fa2
-<Multi_key> <greater> <bar> <grave> <Greek_omega> : "á¾¢" U1fa2
-<Multi_key> <greater> <grave> <bar> <Greek_omega> : "á¾¢" U1fa2
-<Multi_key> <grave> <bar> <greater> <Greek_omega> : "á¾¢" U1fa2
-<Multi_key> <grave> <greater> <bar> <Greek_omega> : "á¾¢" U1fa2
-<dead_iota> <dead_horn> <dead_grave> <Greek_omega> : "á¾¢" U1fa2
-<dead_iota> <dead_psili> <dead_grave> <Greek_omega> : "á¾¢" U1fa2
-<dead_iota> <dead_grave> <dead_horn> <Greek_omega> : "á¾¢" U1fa2
-<dead_iota> <dead_grave> <dead_psili> <Greek_omega> : "á¾¢" U1fa2
-<dead_horn> <dead_iota> <dead_grave> <Greek_omega> : "á¾¢" U1fa2
-<dead_psili> <dead_iota> <dead_grave> <Greek_omega> : "á¾¢" U1fa2
-<dead_horn> <dead_grave> <dead_iota> <Greek_omega> : "á¾¢" U1fa2
-<dead_psili> <dead_grave> <dead_iota> <Greek_omega> : "á¾¢" U1fa2
-<dead_grave> <dead_iota> <dead_horn> <Greek_omega> : "á¾¢" U1fa2
-<dead_grave> <dead_iota> <dead_psili> <Greek_omega> : "á¾¢" U1fa2
-<dead_grave> <dead_horn> <dead_iota> <Greek_omega> : "á¾¢" U1fa2
-<dead_grave> <dead_psili> <dead_iota> <Greek_omega> : "á¾¢" U1fa2
-<Multi_key> <bar> <less> <grave> <Greek_omega> : "á¾£" U1fa3
-<Multi_key> <bar> <grave> <less> <Greek_omega> : "á¾£" U1fa3
-<Multi_key> <less> <bar> <grave> <Greek_omega> : "á¾£" U1fa3
-<Multi_key> <less> <grave> <bar> <Greek_omega> : "á¾£" U1fa3
-<Multi_key> <grave> <bar> <less> <Greek_omega> : "á¾£" U1fa3
-<Multi_key> <grave> <less> <bar> <Greek_omega> : "á¾£" U1fa3
-<dead_iota> <dead_ogonek> <dead_grave> <Greek_omega> : "á¾£" U1fa3
-<dead_iota> <dead_dasia> <dead_grave> <Greek_omega> : "á¾£" U1fa3
-<dead_iota> <dead_grave> <dead_ogonek> <Greek_omega> : "á¾£" U1fa3
-<dead_iota> <dead_grave> <dead_dasia> <Greek_omega> : "á¾£" U1fa3
-<dead_ogonek> <dead_iota> <dead_grave> <Greek_omega> : "á¾£" U1fa3
-<dead_dasia> <dead_iota> <dead_grave> <Greek_omega> : "á¾£" U1fa3
-<dead_ogonek> <dead_grave> <dead_iota> <Greek_omega> : "á¾£" U1fa3
-<dead_dasia> <dead_grave> <dead_iota> <Greek_omega> : "á¾£" U1fa3
-<dead_grave> <dead_iota> <dead_ogonek> <Greek_omega> : "á¾£" U1fa3
-<dead_grave> <dead_iota> <dead_dasia> <Greek_omega> : "á¾£" U1fa3
-<dead_grave> <dead_ogonek> <dead_iota> <Greek_omega> : "á¾£" U1fa3
-<dead_grave> <dead_dasia> <dead_iota> <Greek_omega> : "á¾£" U1fa3
-<Multi_key> <bar> <greater> <apostrophe> <Greek_omega> : "ᾤ" U1fa4
-<Multi_key> <bar> <apostrophe> <greater> <Greek_omega> : "ᾤ" U1fa4
-<Multi_key> <greater> <bar> <apostrophe> <Greek_omega> : "ᾤ" U1fa4
-<Multi_key> <greater> <apostrophe> <bar> <Greek_omega> : "ᾤ" U1fa4
-<Multi_key> <apostrophe> <bar> <greater> <Greek_omega> : "ᾤ" U1fa4
-<Multi_key> <apostrophe> <greater> <bar> <Greek_omega> : "ᾤ" U1fa4
-<dead_iota> <dead_horn> <dead_acute> <Greek_omega> : "ᾤ" U1fa4
-<dead_iota> <dead_psili> <dead_acute> <Greek_omega> : "ᾤ" U1fa4
-<dead_iota> <dead_acute> <dead_horn> <Greek_omega> : "ᾤ" U1fa4
-<dead_iota> <dead_acute> <dead_psili> <Greek_omega> : "ᾤ" U1fa4
-<dead_horn> <dead_iota> <dead_acute> <Greek_omega> : "ᾤ" U1fa4
-<dead_psili> <dead_iota> <dead_acute> <Greek_omega> : "ᾤ" U1fa4
-<dead_horn> <dead_acute> <dead_iota> <Greek_omega> : "ᾤ" U1fa4
-<dead_psili> <dead_acute> <dead_iota> <Greek_omega> : "ᾤ" U1fa4
-<dead_acute> <dead_iota> <dead_horn> <Greek_omega> : "ᾤ" U1fa4
-<dead_acute> <dead_iota> <dead_psili> <Greek_omega> : "ᾤ" U1fa4
-<dead_acute> <dead_horn> <dead_iota> <Greek_omega> : "ᾤ" U1fa4
-<dead_acute> <dead_psili> <dead_iota> <Greek_omega> : "ᾤ" U1fa4
-<Multi_key> <bar> <less> <apostrophe> <Greek_omega> : "á¾¥" U1fa5
-<Multi_key> <bar> <apostrophe> <less> <Greek_omega> : "á¾¥" U1fa5
-<Multi_key> <less> <bar> <apostrophe> <Greek_omega> : "á¾¥" U1fa5
-<Multi_key> <less> <apostrophe> <bar> <Greek_omega> : "á¾¥" U1fa5
-<Multi_key> <apostrophe> <bar> <less> <Greek_omega> : "á¾¥" U1fa5
-<Multi_key> <apostrophe> <less> <bar> <Greek_omega> : "á¾¥" U1fa5
-<dead_iota> <dead_ogonek> <dead_acute> <Greek_omega> : "á¾¥" U1fa5
-<dead_iota> <dead_dasia> <dead_acute> <Greek_omega> : "á¾¥" U1fa5
-<dead_iota> <dead_acute> <dead_ogonek> <Greek_omega> : "á¾¥" U1fa5
-<dead_iota> <dead_acute> <dead_dasia> <Greek_omega> : "á¾¥" U1fa5
-<dead_ogonek> <dead_iota> <dead_acute> <Greek_omega> : "á¾¥" U1fa5
-<dead_dasia> <dead_iota> <dead_acute> <Greek_omega> : "á¾¥" U1fa5
-<dead_ogonek> <dead_acute> <dead_iota> <Greek_omega> : "á¾¥" U1fa5
-<dead_dasia> <dead_acute> <dead_iota> <Greek_omega> : "á¾¥" U1fa5
-<dead_acute> <dead_iota> <dead_ogonek> <Greek_omega> : "á¾¥" U1fa5
-<dead_acute> <dead_iota> <dead_dasia> <Greek_omega> : "á¾¥" U1fa5
-<dead_acute> <dead_ogonek> <dead_iota> <Greek_omega> : "á¾¥" U1fa5
-<dead_acute> <dead_dasia> <dead_iota> <Greek_omega> : "á¾¥" U1fa5
-<Multi_key> <bar> <greater> <asciitilde> <Greek_omega> : "ᾦ" U1fa6
-<Multi_key> <bar> <asciitilde> <greater> <Greek_omega> : "ᾦ" U1fa6
-<Multi_key> <greater> <bar> <asciitilde> <Greek_omega> : "ᾦ" U1fa6
-<Multi_key> <greater> <asciitilde> <bar> <Greek_omega> : "ᾦ" U1fa6
-<Multi_key> <asciitilde> <bar> <greater> <Greek_omega> : "ᾦ" U1fa6
-<Multi_key> <asciitilde> <greater> <bar> <Greek_omega> : "ᾦ" U1fa6
-<dead_iota> <dead_horn> <dead_tilde> <Greek_omega> : "ᾦ" U1fa6
-<dead_iota> <dead_psili> <dead_tilde> <Greek_omega> : "ᾦ" U1fa6
-<dead_iota> <dead_tilde> <dead_horn> <Greek_omega> : "ᾦ" U1fa6
-<dead_iota> <dead_tilde> <dead_psili> <Greek_omega> : "ᾦ" U1fa6
-<dead_horn> <dead_iota> <dead_tilde> <Greek_omega> : "ᾦ" U1fa6
-<dead_psili> <dead_iota> <dead_tilde> <Greek_omega> : "ᾦ" U1fa6
-<dead_horn> <dead_tilde> <dead_iota> <Greek_omega> : "ᾦ" U1fa6
-<dead_psili> <dead_tilde> <dead_iota> <Greek_omega> : "ᾦ" U1fa6
-<dead_tilde> <dead_iota> <dead_horn> <Greek_omega> : "ᾦ" U1fa6
-<dead_tilde> <dead_iota> <dead_psili> <Greek_omega> : "ᾦ" U1fa6
-<dead_tilde> <dead_horn> <dead_iota> <Greek_omega> : "ᾦ" U1fa6
-<dead_tilde> <dead_psili> <dead_iota> <Greek_omega> : "ᾦ" U1fa6
-<Multi_key> <bar> <less> <asciitilde> <Greek_omega> : "ᾧ" U1fa7
-<Multi_key> <bar> <asciitilde> <less> <Greek_omega> : "ᾧ" U1fa7
-<Multi_key> <less> <bar> <asciitilde> <Greek_omega> : "ᾧ" U1fa7
-<Multi_key> <less> <asciitilde> <bar> <Greek_omega> : "ᾧ" U1fa7
-<Multi_key> <asciitilde> <bar> <less> <Greek_omega> : "ᾧ" U1fa7
-<Multi_key> <asciitilde> <less> <bar> <Greek_omega> : "ᾧ" U1fa7
-<dead_iota> <dead_ogonek> <dead_tilde> <Greek_omega> : "ᾧ" U1fa7
-<dead_iota> <dead_dasia> <dead_tilde> <Greek_omega> : "ᾧ" U1fa7
-<dead_iota> <dead_tilde> <dead_ogonek> <Greek_omega> : "ᾧ" U1fa7
-<dead_iota> <dead_tilde> <dead_dasia> <Greek_omega> : "ᾧ" U1fa7
-<dead_ogonek> <dead_iota> <dead_tilde> <Greek_omega> : "ᾧ" U1fa7
-<dead_dasia> <dead_iota> <dead_tilde> <Greek_omega> : "ᾧ" U1fa7
-<dead_ogonek> <dead_tilde> <dead_iota> <Greek_omega> : "ᾧ" U1fa7
-<dead_dasia> <dead_tilde> <dead_iota> <Greek_omega> : "ᾧ" U1fa7
-<dead_tilde> <dead_iota> <dead_ogonek> <Greek_omega> : "ᾧ" U1fa7
-<dead_tilde> <dead_iota> <dead_dasia> <Greek_omega> : "ᾧ" U1fa7
-<dead_tilde> <dead_ogonek> <dead_iota> <Greek_omega> : "ᾧ" U1fa7
-<dead_tilde> <dead_dasia> <dead_iota> <Greek_omega> : "ᾧ" U1fa7
-<Multi_key> <bar> <greater> <Greek_OMEGA> : "ᾨ" U1fa8
-<Multi_key> <greater> <bar> <Greek_OMEGA> : "ᾨ" U1fa8
-<dead_iota> <dead_horn> <Greek_OMEGA> : "ᾨ" U1fa8
-<dead_iota> <dead_psili> <Greek_OMEGA> : "ᾨ" U1fa8
-<dead_horn> <dead_iota> <Greek_OMEGA> : "ᾨ" U1fa8
-<dead_psili> <dead_iota> <Greek_OMEGA> : "ᾨ" U1fa8
-<Multi_key> <bar> <less> <Greek_OMEGA> : "ᾩ" U1fa9
-<Multi_key> <less> <bar> <Greek_OMEGA> : "ᾩ" U1fa9
-<dead_iota> <dead_ogonek> <Greek_OMEGA> : "ᾩ" U1fa9
-<dead_iota> <dead_dasia> <Greek_OMEGA> : "ᾩ" U1fa9
-<dead_ogonek> <dead_iota> <Greek_OMEGA> : "ᾩ" U1fa9
-<dead_dasia> <dead_iota> <Greek_OMEGA> : "ᾩ" U1fa9
-<Multi_key> <bar> <greater> <grave> <Greek_OMEGA> : "ᾪ" U1faa
-<Multi_key> <bar> <grave> <greater> <Greek_OMEGA> : "ᾪ" U1faa
-<Multi_key> <greater> <bar> <grave> <Greek_OMEGA> : "ᾪ" U1faa
-<Multi_key> <greater> <grave> <bar> <Greek_OMEGA> : "ᾪ" U1faa
-<Multi_key> <grave> <bar> <greater> <Greek_OMEGA> : "ᾪ" U1faa
-<Multi_key> <grave> <greater> <bar> <Greek_OMEGA> : "ᾪ" U1faa
-<dead_iota> <dead_horn> <dead_grave> <Greek_OMEGA> : "ᾪ" U1faa
-<dead_iota> <dead_psili> <dead_grave> <Greek_OMEGA> : "ᾪ" U1faa
-<dead_iota> <dead_grave> <dead_horn> <Greek_OMEGA> : "ᾪ" U1faa
-<dead_iota> <dead_grave> <dead_psili> <Greek_OMEGA> : "ᾪ" U1faa
-<dead_horn> <dead_iota> <dead_grave> <Greek_OMEGA> : "ᾪ" U1faa
-<dead_psili> <dead_iota> <dead_grave> <Greek_OMEGA> : "ᾪ" U1faa
-<dead_horn> <dead_grave> <dead_iota> <Greek_OMEGA> : "ᾪ" U1faa
-<dead_psili> <dead_grave> <dead_iota> <Greek_OMEGA> : "ᾪ" U1faa
-<dead_grave> <dead_iota> <dead_horn> <Greek_OMEGA> : "ᾪ" U1faa
-<dead_grave> <dead_iota> <dead_psili> <Greek_OMEGA> : "ᾪ" U1faa
-<dead_grave> <dead_horn> <dead_iota> <Greek_OMEGA> : "ᾪ" U1faa
-<dead_grave> <dead_psili> <dead_iota> <Greek_OMEGA> : "ᾪ" U1faa
-<Multi_key> <bar> <less> <grave> <Greek_OMEGA> : "ᾫ" U1fab
-<Multi_key> <bar> <grave> <less> <Greek_OMEGA> : "ᾫ" U1fab
-<Multi_key> <less> <bar> <grave> <Greek_OMEGA> : "ᾫ" U1fab
-<Multi_key> <less> <grave> <bar> <Greek_OMEGA> : "ᾫ" U1fab
-<Multi_key> <grave> <bar> <less> <Greek_OMEGA> : "ᾫ" U1fab
-<Multi_key> <grave> <less> <bar> <Greek_OMEGA> : "ᾫ" U1fab
-<dead_iota> <dead_ogonek> <dead_grave> <Greek_OMEGA> : "ᾫ" U1fab
-<dead_iota> <dead_dasia> <dead_grave> <Greek_OMEGA> : "ᾫ" U1fab
-<dead_iota> <dead_grave> <dead_ogonek> <Greek_OMEGA> : "ᾫ" U1fab
-<dead_iota> <dead_grave> <dead_dasia> <Greek_OMEGA> : "ᾫ" U1fab
-<dead_ogonek> <dead_iota> <dead_grave> <Greek_OMEGA> : "ᾫ" U1fab
-<dead_dasia> <dead_iota> <dead_grave> <Greek_OMEGA> : "ᾫ" U1fab
-<dead_ogonek> <dead_grave> <dead_iota> <Greek_OMEGA> : "ᾫ" U1fab
-<dead_dasia> <dead_grave> <dead_iota> <Greek_OMEGA> : "ᾫ" U1fab
-<dead_grave> <dead_iota> <dead_ogonek> <Greek_OMEGA> : "ᾫ" U1fab
-<dead_grave> <dead_iota> <dead_dasia> <Greek_OMEGA> : "ᾫ" U1fab
-<dead_grave> <dead_ogonek> <dead_iota> <Greek_OMEGA> : "ᾫ" U1fab
-<dead_grave> <dead_dasia> <dead_iota> <Greek_OMEGA> : "ᾫ" U1fab
-<Multi_key> <bar> <greater> <apostrophe> <Greek_OMEGA> : "ᾬ" U1fac
-<Multi_key> <bar> <apostrophe> <greater> <Greek_OMEGA> : "ᾬ" U1fac
-<Multi_key> <greater> <bar> <apostrophe> <Greek_OMEGA> : "ᾬ" U1fac
-<Multi_key> <greater> <apostrophe> <bar> <Greek_OMEGA> : "ᾬ" U1fac
-<Multi_key> <apostrophe> <bar> <greater> <Greek_OMEGA> : "ᾬ" U1fac
-<Multi_key> <apostrophe> <greater> <bar> <Greek_OMEGA> : "ᾬ" U1fac
-<dead_iota> <dead_horn> <dead_acute> <Greek_OMEGA> : "ᾬ" U1fac
-<dead_iota> <dead_psili> <dead_acute> <Greek_OMEGA> : "ᾬ" U1fac
-<dead_iota> <dead_acute> <dead_horn> <Greek_OMEGA> : "ᾬ" U1fac
-<dead_iota> <dead_acute> <dead_psili> <Greek_OMEGA> : "ᾬ" U1fac
-<dead_horn> <dead_iota> <dead_acute> <Greek_OMEGA> : "ᾬ" U1fac
-<dead_psili> <dead_iota> <dead_acute> <Greek_OMEGA> : "ᾬ" U1fac
-<dead_horn> <dead_acute> <dead_iota> <Greek_OMEGA> : "ᾬ" U1fac
-<dead_psili> <dead_acute> <dead_iota> <Greek_OMEGA> : "ᾬ" U1fac
-<dead_acute> <dead_iota> <dead_horn> <Greek_OMEGA> : "ᾬ" U1fac
-<dead_acute> <dead_iota> <dead_psili> <Greek_OMEGA> : "ᾬ" U1fac
-<dead_acute> <dead_horn> <dead_iota> <Greek_OMEGA> : "ᾬ" U1fac
-<dead_acute> <dead_psili> <dead_iota> <Greek_OMEGA> : "ᾬ" U1fac
-<Multi_key> <bar> <less> <apostrophe> <Greek_OMEGA> : "á¾­" U1fad
-<Multi_key> <bar> <apostrophe> <less> <Greek_OMEGA> : "á¾­" U1fad
-<Multi_key> <less> <bar> <apostrophe> <Greek_OMEGA> : "á¾­" U1fad
-<Multi_key> <less> <apostrophe> <bar> <Greek_OMEGA> : "á¾­" U1fad
-<Multi_key> <apostrophe> <bar> <less> <Greek_OMEGA> : "á¾­" U1fad
-<Multi_key> <apostrophe> <less> <bar> <Greek_OMEGA> : "á¾­" U1fad
-<dead_iota> <dead_ogonek> <dead_acute> <Greek_OMEGA> : "á¾­" U1fad
-<dead_iota> <dead_dasia> <dead_acute> <Greek_OMEGA> : "á¾­" U1fad
-<dead_iota> <dead_acute> <dead_ogonek> <Greek_OMEGA> : "á¾­" U1fad
-<dead_iota> <dead_acute> <dead_dasia> <Greek_OMEGA> : "á¾­" U1fad
-<dead_ogonek> <dead_iota> <dead_acute> <Greek_OMEGA> : "á¾­" U1fad
-<dead_dasia> <dead_iota> <dead_acute> <Greek_OMEGA> : "á¾­" U1fad
-<dead_ogonek> <dead_acute> <dead_iota> <Greek_OMEGA> : "á¾­" U1fad
-<dead_dasia> <dead_acute> <dead_iota> <Greek_OMEGA> : "á¾­" U1fad
-<dead_acute> <dead_iota> <dead_ogonek> <Greek_OMEGA> : "á¾­" U1fad
-<dead_acute> <dead_iota> <dead_dasia> <Greek_OMEGA> : "á¾­" U1fad
-<dead_acute> <dead_ogonek> <dead_iota> <Greek_OMEGA> : "á¾­" U1fad
-<dead_acute> <dead_dasia> <dead_iota> <Greek_OMEGA> : "á¾­" U1fad
-<Multi_key> <bar> <greater> <asciitilde> <Greek_OMEGA> : "á¾®" U1fae
-<Multi_key> <bar> <asciitilde> <greater> <Greek_OMEGA> : "á¾®" U1fae
-<Multi_key> <greater> <bar> <asciitilde> <Greek_OMEGA> : "á¾®" U1fae
-<Multi_key> <greater> <asciitilde> <bar> <Greek_OMEGA> : "á¾®" U1fae
-<Multi_key> <asciitilde> <bar> <greater> <Greek_OMEGA> : "á¾®" U1fae
-<Multi_key> <asciitilde> <greater> <bar> <Greek_OMEGA> : "á¾®" U1fae
-<dead_iota> <dead_horn> <dead_tilde> <Greek_OMEGA> : "á¾®" U1fae
-<dead_iota> <dead_psili> <dead_tilde> <Greek_OMEGA> : "á¾®" U1fae
-<dead_iota> <dead_tilde> <dead_horn> <Greek_OMEGA> : "á¾®" U1fae
-<dead_iota> <dead_tilde> <dead_psili> <Greek_OMEGA> : "á¾®" U1fae
-<dead_horn> <dead_iota> <dead_tilde> <Greek_OMEGA> : "á¾®" U1fae
-<dead_psili> <dead_iota> <dead_tilde> <Greek_OMEGA> : "á¾®" U1fae
-<dead_horn> <dead_tilde> <dead_iota> <Greek_OMEGA> : "á¾®" U1fae
-<dead_psili> <dead_tilde> <dead_iota> <Greek_OMEGA> : "á¾®" U1fae
-<dead_tilde> <dead_iota> <dead_horn> <Greek_OMEGA> : "á¾®" U1fae
-<dead_tilde> <dead_iota> <dead_psili> <Greek_OMEGA> : "á¾®" U1fae
-<dead_tilde> <dead_horn> <dead_iota> <Greek_OMEGA> : "á¾®" U1fae
-<dead_tilde> <dead_psili> <dead_iota> <Greek_OMEGA> : "á¾®" U1fae
-<Multi_key> <bar> <less> <asciitilde> <Greek_OMEGA> : "ᾯ" U1faf
-<Multi_key> <bar> <asciitilde> <less> <Greek_OMEGA> : "ᾯ" U1faf
-<Multi_key> <less> <bar> <asciitilde> <Greek_OMEGA> : "ᾯ" U1faf
-<Multi_key> <less> <asciitilde> <bar> <Greek_OMEGA> : "ᾯ" U1faf
-<Multi_key> <asciitilde> <bar> <less> <Greek_OMEGA> : "ᾯ" U1faf
-<Multi_key> <asciitilde> <less> <bar> <Greek_OMEGA> : "ᾯ" U1faf
-<dead_iota> <dead_ogonek> <dead_tilde> <Greek_OMEGA> : "ᾯ" U1faf
-<dead_iota> <dead_dasia> <dead_tilde> <Greek_OMEGA> : "ᾯ" U1faf
-<dead_iota> <dead_tilde> <dead_ogonek> <Greek_OMEGA> : "ᾯ" U1faf
-<dead_iota> <dead_tilde> <dead_dasia> <Greek_OMEGA> : "ᾯ" U1faf
-<dead_ogonek> <dead_iota> <dead_tilde> <Greek_OMEGA> : "ᾯ" U1faf
-<dead_dasia> <dead_iota> <dead_tilde> <Greek_OMEGA> : "ᾯ" U1faf
-<dead_ogonek> <dead_tilde> <dead_iota> <Greek_OMEGA> : "ᾯ" U1faf
-<dead_dasia> <dead_tilde> <dead_iota> <Greek_OMEGA> : "ᾯ" U1faf
-<dead_tilde> <dead_iota> <dead_ogonek> <Greek_OMEGA> : "ᾯ" U1faf
-<dead_tilde> <dead_iota> <dead_dasia> <Greek_OMEGA> : "ᾯ" U1faf
-<dead_tilde> <dead_ogonek> <dead_iota> <Greek_OMEGA> : "ᾯ" U1faf
-<dead_tilde> <dead_dasia> <dead_iota> <Greek_OMEGA> : "ᾯ" U1faf
-<dead_breve> <Greek_alpha> : "á¾°" U1fb0
-<dead_macron> <Greek_alpha> : "á¾±" U1fb1
-<dead_breve> <Greek_ALPHA> : "Ᾰ" U1fb8
-<dead_macron> <Greek_ALPHA> : "á¾¹" U1fb9
-<dead_breve> <Greek_iota> : "á¿" U1fd0
-<dead_macron> <Greek_iota> : "á¿‘" U1fd1
-<dead_breve> <Greek_IOTA> : "Ῐ" U1fd8
-<dead_macron> <Greek_IOTA> : "á¿™" U1fd9
-<dead_breve> <Greek_upsilon> : "á¿ " U1fe0
-<dead_macron> <Greek_upsilon> : "á¿¡" U1fe1
-<dead_breve> <Greek_UPSILON> : "Ῠ" U1fe8
-<dead_macron> <Greek_UPSILON> : "á¿©" U1fe9
-<Multi_key> <grave> <Greek_ALPHA> : "Ὰ" U1fba
-<dead_grave> <Greek_ALPHA> : "Ὰ" U1fba
-<Multi_key> <grave> <Greek_EPSILON> : "Ὲ" U1fc8
-<dead_grave> <Greek_EPSILON> : "Ὲ" U1fc8
-<Multi_key> <grave> <Greek_ETA> : "á¿Š" U1fca
-<dead_grave> <Greek_ETA> : "á¿Š" U1fca
-<Multi_key> <grave> <Greek_IOTA> : "á¿š" U1fda
-<dead_grave> <Greek_IOTA> : "á¿š" U1fda
-<Multi_key> <grave> <Greek_UPSILON> : "Ὺ" U1fea
-<dead_grave> <Greek_UPSILON> : "Ὺ" U1fea
-<Multi_key> <grave> <Greek_OMICRON> : "Ὸ" U1ff8
-<dead_grave> <Greek_OMICRON> : "Ὸ" U1ff8
-<Multi_key> <grave> <Greek_OMEGA> : "Ὼ" U1ffa
-<dead_grave> <Greek_OMEGA> : "Ὼ" U1ffa
-<Multi_key> <bar> <grave> <Greek_alpha> : "á¾²" U1fb2
-<Multi_key> <grave> <bar> <Greek_alpha> : "á¾²" U1fb2
-<dead_iota> <dead_grave> <Greek_alpha> : "á¾²" U1fb2
-<dead_grave> <dead_iota> <Greek_alpha> : "á¾²" U1fb2
-<Multi_key> <bar> <Greek_alpha> : "á¾³" U1fb3
-<dead_iota> <Greek_alpha> : "á¾³" U1fb3
-<Multi_key> <bar> <apostrophe> <Greek_alpha> : "á¾´" U1fb4
-<Multi_key> <apostrophe> <bar> <Greek_alpha> : "á¾´" U1fb4
-<dead_iota> <dead_acute> <Greek_alpha> : "á¾´" U1fb4
-<dead_acute> <dead_iota> <Greek_alpha> : "á¾´" U1fb4
-<Multi_key> <asciitilde> <Greek_alpha> : "ᾶ" U1fb6
-<dead_tilde> <Greek_alpha> : "ᾶ" U1fb6
-<Multi_key> <bar> <asciitilde> <Greek_alpha> : "á¾·" U1fb7
-<Multi_key> <asciitilde> <bar> <Greek_alpha> : "á¾·" U1fb7
-<dead_iota> <dead_tilde> <Greek_alpha> : "á¾·" U1fb7
-<dead_tilde> <dead_iota> <Greek_alpha> : "á¾·" U1fb7
-<Multi_key> <bar> <grave> <Greek_eta> : "á¿‚" U1fc2
-<Multi_key> <grave> <bar> <Greek_eta> : "á¿‚" U1fc2
-<dead_iota> <dead_grave> <Greek_eta> : "á¿‚" U1fc2
-<dead_grave> <dead_iota> <Greek_eta> : "á¿‚" U1fc2
-<Multi_key> <bar> <Greek_eta> : "ῃ" U1fc3
-<dead_iota> <Greek_eta> : "ῃ" U1fc3
-<Multi_key> <bar> <apostrophe> <Greek_eta> : "á¿„" U1fc4
-<Multi_key> <apostrophe> <bar> <Greek_eta> : "á¿„" U1fc4
-<dead_iota> <dead_acute> <Greek_eta> : "á¿„" U1fc4
-<dead_acute> <dead_iota> <Greek_eta> : "á¿„" U1fc4
-<Multi_key> <asciitilde> <Greek_eta> : "ῆ" U1fc6
-<dead_tilde> <Greek_eta> : "ῆ" U1fc6
-<Multi_key> <bar> <asciitilde> <Greek_eta> : "ῇ" U1fc7
-<Multi_key> <asciitilde> <bar> <Greek_eta> : "ῇ" U1fc7
-<dead_iota> <dead_tilde> <Greek_eta> : "ῇ" U1fc7
-<dead_tilde> <dead_iota> <Greek_eta> : "ῇ" U1fc7
-<Multi_key> <quotedbl> <grave> <Greek_iota> : "á¿’" U1fd2
-<Multi_key> <grave> <quotedbl> <Greek_iota> : "á¿’" U1fd2
-<dead_diaeresis> <dead_grave> <Greek_iota> : "á¿’" U1fd2
-<dead_grave> <dead_diaeresis> <Greek_iota> : "á¿’" U1fd2
-<Multi_key> <asciitilde> <Greek_iota> : "á¿–" U1fd6
-<dead_tilde> <Greek_iota> : "á¿–" U1fd6
-<Multi_key> <quotedbl> <asciitilde> <Greek_iota> : "á¿—" U1fd7
-<Multi_key> <asciitilde> <quotedbl> <Greek_iota> : "á¿—" U1fd7
-<dead_diaeresis> <dead_tilde> <Greek_iota> : "á¿—" U1fd7
-<dead_tilde> <dead_diaeresis> <Greek_iota> : "á¿—" U1fd7
-<Multi_key> <quotedbl> <grave> <Greek_upsilon> : "á¿¢" U1fe2
-<Multi_key> <grave> <quotedbl> <Greek_upsilon> : "á¿¢" U1fe2
-<dead_diaeresis> <dead_grave> <Greek_upsilon> : "á¿¢" U1fe2
-<dead_grave> <dead_diaeresis> <Greek_upsilon> : "á¿¢" U1fe2
-<Multi_key> <asciitilde> <Greek_upsilon> : "ῦ" U1fe6
-<dead_tilde> <Greek_upsilon> : "ῦ" U1fe6
-<Multi_key> <quotedbl> <asciitilde> <Greek_upsilon> : "ῧ" U1fe7
-<Multi_key> <asciitilde> <quotedbl> <Greek_upsilon> : "ῧ" U1fe7
-<dead_diaeresis> <dead_tilde> <Greek_upsilon> : "ῧ" U1fe7
-<dead_tilde> <dead_diaeresis> <Greek_upsilon> : "ῧ" U1fe7
-<Multi_key> <bar> <grave> <Greek_omega> : "ῲ" U1ff2
-<Multi_key> <grave> <bar> <Greek_omega> : "ῲ" U1ff2
-<dead_iota> <dead_grave> <Greek_omega> : "ῲ" U1ff2
-<dead_grave> <dead_iota> <Greek_omega> : "ῲ" U1ff2
-<Multi_key> <bar> <Greek_omega> : "ῳ" U1ff3
-<dead_iota> <Greek_omega> : "ῳ" U1ff3
-<Multi_key> <bar> <apostrophe> <Greek_omega> : "á¿´" U1ff4
-<Multi_key> <apostrophe> <bar> <Greek_omega> : "á¿´" U1ff4
-<dead_iota> <dead_acute> <Greek_omega> : "á¿´" U1ff4
-<dead_acute> <dead_iota> <Greek_omega> : "á¿´" U1ff4
-<Multi_key> <asciitilde> <Greek_omega> : "ῶ" U1ff6
-<dead_tilde> <Greek_omega> : "ῶ" U1ff6
-<Multi_key> <bar> <asciitilde> <Greek_omega> : "á¿·" U1ff7
-<Multi_key> <asciitilde> <bar> <Greek_omega> : "á¿·" U1ff7
-<dead_iota> <dead_tilde> <Greek_omega> : "á¿·" U1ff7
-<dead_tilde> <dead_iota> <Greek_omega> : "á¿·" U1ff7
-<Multi_key> <bar> <Greek_ALPHA> : "á¾¼" U1fbc
-<dead_iota> <Greek_ALPHA> : "á¾¼" U1fbc
-<Multi_key> <bar> <Greek_ETA> : "ῌ" U1fcc
-<dead_iota> <Greek_ETA> : "ῌ" U1fcc
-<Multi_key> <bar> <Greek_OMEGA> : "ῼ" U1ffc
-<dead_iota> <Greek_OMEGA> : "ῼ" U1ffc
-<Multi_key> <greater> <Greek_rho> : "ῤ" U1fe4
-<dead_horn> <Greek_rho> : "ῤ" U1fe4
-<dead_psili> <Greek_rho> : "ῤ" U1fe4
-<Multi_key> <less> <Greek_rho> : "á¿¥" U1fe5
-<dead_ogonek> <Greek_rho> : "á¿¥" U1fe5
-<dead_dasia> <Greek_rho> : "á¿¥" U1fe5
-<Multi_key> <less> <Greek_RHO> : "Ῥ" U1fec
-<dead_ogonek> <Greek_RHO> : "Ῥ" U1fec
-<dead_dasia> <Greek_RHO> : "Ῥ" U1fec
-<dead_horn> <dead_grave> <space> : "á¿" U1fcd
-<dead_psili> <dead_grave> <space> : "á¿" U1fcd
-<dead_grave> <dead_horn> <space> : "á¿" U1fcd
-<dead_grave> <dead_psili> <space> : "á¿" U1fcd
-<dead_horn> <dead_acute> <space> : "á¿Ž" U1fce
-<dead_psili> <dead_acute> <space> : "á¿Ž" U1fce
-<dead_acute> <dead_horn> <space> : "á¿Ž" U1fce
-<dead_acute> <dead_psili> <space> : "á¿Ž" U1fce
-<dead_horn> <dead_tilde> <space> : "á¿" U1fcf
-<dead_psili> <dead_tilde> <space> : "á¿" U1fcf
-<dead_tilde> <dead_horn> <space> : "á¿" U1fcf
-<dead_tilde> <dead_psili> <space> : "á¿" U1fcf
-<dead_ogonek> <dead_grave> <space> : "á¿" U1fdd
-<dead_dasia> <dead_grave> <space> : "á¿" U1fdd
-<dead_grave> <dead_ogonek> <space> : "á¿" U1fdd
-<dead_grave> <dead_dasia> <space> : "á¿" U1fdd
-<dead_ogonek> <dead_acute> <space> : "á¿ž" U1fde
-<dead_dasia> <dead_acute> <space> : "á¿ž" U1fde
-<dead_acute> <dead_ogonek> <space> : "á¿ž" U1fde
-<dead_acute> <dead_dasia> <space> : "á¿ž" U1fde
-<dead_ogonek> <dead_tilde> <space> : "á¿Ÿ" U1fdf
-<dead_dasia> <dead_tilde> <space> : "á¿Ÿ" U1fdf
-<dead_tilde> <dead_ogonek> <space> : "á¿Ÿ" U1fdf
-<dead_tilde> <dead_dasia> <space> : "á¿Ÿ" U1fdf
-<dead_diaeresis> <dead_grave> <space> : "á¿­" U1fed
-<dead_grave> <dead_diaeresis> <space> : "á¿­" U1fed
-<dead_diaeresis> <dead_tilde> <space> : "á¿" U1fc1
-<dead_tilde> <dead_diaeresis> <space> : "á¿" U1fc1
-<dead_horn> <space> : "᾿" U1fbf
-<dead_psili> <space> : "᾿" U1fbf
-<dead_horn> <dead_horn> : "᾿" U1fbf
-<dead_psili> <dead_horn> : "᾿" U1fbf
-<dead_ogonek> <space> : "῾" U1ffe
-<dead_dasia> <space> : "῾" U1ffe
-<dead_ogonek> <dead_ogonek> : "῾" U1ffe
-<dead_dasia> <dead_ogonek> : "῾" U1ffe
-<dead_grave> <space> : "`" U1fef
-<dead_grave> <dead_grave> : "`" U1fef
-<dead_tilde> <space> : "á¿€" U1fc0
-<dead_tilde> <dead_tilde> : "á¿€" U1fc0
-<dead_horn> <underscore> : "á¾½" U1fbd
-<dead_psili> <underscore> : "á¾½" U1fbd
-<dead_iota> <underscore> : "á¾¾" U1fbe
-<dead_iota> <space> : "ͺ" U037a
-<dead_iota> <dead_iota> : "ͺ" U037a
-
-XCOMM Part 3
-XCOMM
-XCOMM ISO 8859-7 (Greek) multi-key and dead key definitions extracted and
-XCOMM converted from the iso8859-7/Compose file.
-
-<Multi_key> <Greek_ALPHA> <apostrophe> : "Ά" Greek_ALPHAaccent
-<Multi_key> <apostrophe> <Greek_ALPHA> : "Ά" Greek_ALPHAaccent
-<Multi_key> <Greek_EPSILON> <apostrophe>: "Έ" Greek_EPSILONaccent
-<Multi_key> <apostrophe> <Greek_EPSILON>: "Έ" Greek_EPSILONaccent
-<Multi_key> <Greek_ETA> <apostrophe> : "Ή" Greek_ETAaccent
-<Multi_key> <apostrophe> <Greek_ETA> : "Ή" Greek_ETAaccent
-<Multi_key> <Greek_IOTA> <apostrophe> : "Ί" Greek_IOTAaccent
-<Multi_key> <apostrophe> <Greek_IOTA> : "Ί" Greek_IOTAaccent
-<Multi_key> <Greek_OMICRON> <apostrophe>: "Ό" Greek_OMICRONaccent
-<Multi_key> <apostrophe> <Greek_OMICRON>: "Ό" Greek_OMICRONaccent
-<Multi_key> <Greek_UPSILON> <apostrophe>: "ÎŽ" Greek_UPSILONaccent
-<Multi_key> <apostrophe> <Greek_UPSILON>: "ÎŽ" Greek_UPSILONaccent
-<Multi_key> <Greek_OMEGA> <apostrophe> : "Î" Greek_OMEGAaccent
-<Multi_key> <apostrophe> <Greek_OMEGA> : "Î" Greek_OMEGAaccent
-<Multi_key> <Greek_IOTA> <quotedbl> : "Ϊ" Greek_IOTAdieresis
-<Multi_key> <quotedbl> <Greek_IOTA> : "Ϊ" Greek_IOTAdieresis
-<Multi_key> <Greek_UPSILON> <quotedbl> : "Ϋ" Greek_UPSILONdieresis
-<Multi_key> <quotedbl> <Greek_UPSILON> : "Ϋ" Greek_UPSILONdieresis
-
-<Multi_key> <Greek_alpha> <apostrophe> : "ά" Greek_alphaaccent
-<Multi_key> <apostrophe> <Greek_alpha> : "ά" Greek_alphaaccent
-<Multi_key> <Greek_epsilon> <apostrophe>: "έ" Greek_epsilonaccent
-<Multi_key> <apostrophe> <Greek_epsilon>: "έ" Greek_epsilonaccent
-<Multi_key> <Greek_eta> <apostrophe> : "ή" Greek_etaaccent
-<Multi_key> <apostrophe> <Greek_eta> : "ή" Greek_etaaccent
-<Multi_key> <Greek_iota> <apostrophe> : "ί" Greek_iotaaccent
-<Multi_key> <apostrophe> <Greek_iota> : "ί" Greek_iotaaccent
-<Multi_key> <Greek_omicron> <apostrophe>: "ό" Greek_omicronaccent
-<Multi_key> <apostrophe> <Greek_omicron>: "ό" Greek_omicronaccent
-<Multi_key> <Greek_upsilon> <apostrophe>: "Ï" Greek_upsilonaccent
-<Multi_key> <apostrophe> <Greek_upsilon>: "Ï" Greek_upsilonaccent
-<Multi_key> <Greek_omega> <apostrophe> : "ÏŽ" Greek_omegaaccent
-<Multi_key> <apostrophe> <Greek_omega> : "ÏŽ" Greek_omegaaccent
-<Multi_key> <Greek_iota> <quotedbl> : "ÏŠ" Greek_iotadieresis
-<Multi_key> <quotedbl> <Greek_iota> : "ÏŠ" Greek_iotadieresis
-<Multi_key> <Greek_upsilon> <quotedbl> : "Ï‹" Greek_upsilondieresis
-<Multi_key> <quotedbl> <Greek_upsilon> : "Ï‹" Greek_upsilondieresis
-
-<Multi_key> <apostrophe> <quotedbl> <Greek_iota> : "Î" Greek_iotaaccentdieresis
-<Multi_key> <quotedbl> <apostrophe> <Greek_iota> : "Î" Greek_iotaaccentdieresis
-<Multi_key> <apostrophe> <quotedbl> <Greek_upsilon> : "ΰ" Greek_upsilonaccentdieresis
-<Multi_key> <quotedbl> <apostrophe> <Greek_upsilon> : "ΰ" Greek_upsilonaccentdieresis
-<Multi_key> <apostrophe> <quotedbl> <space> : "Î…" Greek_accentdieresis
-<Multi_key> <quotedbl> <apostrophe> <space> : "Î…" Greek_accentdieresis
-
-<dead_acute> <Greek_alpha> : "ά" Greek_alphaaccent
-<dead_acute> <Greek_epsilon> : "έ" Greek_epsilonaccent
-<dead_acute> <Greek_eta> : "ή" Greek_etaaccent
-<dead_acute> <Greek_iota> : "ί" Greek_iotaaccent
-<dead_acute> <Greek_omicron> : "ό" Greek_omicronaccent
-<dead_acute> <Greek_upsilon> : "Ï" Greek_upsilonaccent
-<dead_acute> <Greek_omega> : "ÏŽ" Greek_omegaaccent
-<dead_acute> <Greek_ALPHA> : "Ά" Greek_ALPHAaccent
-<dead_acute> <Greek_EPSILON> : "Έ" Greek_EPSILONaccent
-<dead_acute> <Greek_ETA> : "Ή" Greek_ETAaccent
-<dead_acute> <Greek_IOTA> : "Ί" Greek_IOTAaccent
-<dead_acute> <Greek_OMICRON> : "Ό" Greek_OMICRONaccent
-<dead_acute> <Greek_UPSILON> : "ÎŽ" Greek_UPSILONaccent
-<dead_acute> <Greek_OMEGA> : "Î" Greek_OMEGAaccent
-<dead_acute> <space> : "΄" U0384
-<dead_acute> <dead_acute> : "΄" U0384
-<dead_acute> <period> : "·" periodcentered
-<dead_acute> <less> : "«" guillemotleft
-<dead_acute> <greater> : "»" guillemotright
-
-<dead_diaeresis> <Greek_iota> : "ÏŠ" Greek_iotadieresis
-<dead_diaeresis> <Greek_upsilon> : "Ï‹" Greek_upsilondieresis
-<dead_diaeresis> <Greek_IOTA> : "Ϊ" Greek_IOTAdieresis
-<dead_diaeresis> <Greek_UPSILON> : "Ϋ" Greek_UPSILONdieresis
-<dead_diaeresis> <space> : "¨" diaeresis
-<dead_diaeresis> <dead_diaeresis> : "¨" diaeresis
-<dead_diaeresis> <period> : "·" periodcentered
-<dead_diaeresis> <less> : "«" guillemotleft
-<dead_diaeresis> <greater> : "»" guillemotright
-
-<dead_acute> <dead_diaeresis> <Greek_iota> : "Î" Greek_iotaaccentdieresis
-<dead_acute> <dead_diaeresis> <Greek_upsilon> : "ΰ" Greek_upsilonaccentdieresis
-<dead_acute> <dead_diaeresis> <space> : "Î…" Greek_accentdieresis
-
-<dead_diaeresis> <dead_acute> <Greek_iota> : "Î" Greek_iotaaccentdieresis
-<dead_diaeresis> <dead_acute> <Greek_upsilon> : "ΰ" Greek_upsilonaccentdieresis
-<dead_diaeresis> <dead_acute> <space> : "Î…" Greek_accentdieresis
-
-XCOMM Part 4
-XCOMM
-XCOMM Miscellaneous extensions.
-
-<dead_macron> <space> : "¯" macron
-<dead_macron> <dead_macron> : "¯" macron
-<dead_breve> <space> : "˘" breve
-<dead_breve> <dead_breve> : "˘" breve
-
-<dead_grave> <underscore> : "`" grave
-<dead_acute> <underscore> : "´" acute
-<dead_tilde> <underscore> : "~" asciitilde
-
-<Multi_key> <less> <apostrophe> <space> : "‘" leftsinglequotemark
-<Multi_key> <apostrophe> <less> <space> : "‘" leftsinglequotemark
-<Multi_key> <greater> <apostrophe> <space> : "’" rightsinglequotemark
-<Multi_key> <apostrophe> <greater> <space> : "’" rightsinglequotemark
-<Multi_key> <asciitilde> <asciitilde> : "―" Greek_horizbar
-<Multi_key> <asciicircum> <asciicircum> : "˘" breve
-
-<Multi_key> <slash> <slash> : "Í´" U0374
-<Multi_key> <backslash> <backslash> : "͵" U0375
-<Multi_key> <semicolon> <semicolon> : ";" U037e
-<Multi_key> <colon> <colon> : "·" U0387
-
-<Multi_key> <C> <equal> : "€" EuroSign
-<Multi_key> <equal> <C> : "€" EuroSign
-<Multi_key> <c> <equal> : "€" EuroSign
-<Multi_key> <equal> <c> : "€" EuroSign
-<Multi_key> <E> <equal> : "€" EuroSign
-<Multi_key> <equal> <E> : "€" EuroSign
-<Multi_key> <e> <equal> : "€" EuroSign
-<Multi_key> <equal> <e> : "€" EuroSign
-<Multi_key> <Greek_EPSILON> <equal> : "€" EuroSign
-<Multi_key> <equal> <Greek_EPSILON> : "€" EuroSign
-<Multi_key> <Greek_epsilon> <equal> : "€" EuroSign
-<Multi_key> <equal> <Greek_epsilon> : "€" EuroSign
-
-<Multi_key> <Greek_DELTA> <Greek_RHO> : "₯" U20af
-<Multi_key> <Greek_DELTA> <Greek_rho> : "₯" U20af
-<Multi_key> <Greek_delta> <Greek_RHO> : "₯" U20af
-<Multi_key> <Greek_delta> <Greek_rho> : "₯" U20af
-
-<Multi_key> <question> <exclam> : "‽" U203D # INTERROBANG
-<Multi_key> <exclam> <question> : "‽" U203D # INTERROBANG
-
-<Multi_key> <1> <3> : "â…“" U2153 # VULGAR FRACTION ONE THIRD
-<Multi_key> <2> <3> : "â…”" U2154 # VULGAR FRACTION TWO THIRDS
-<Multi_key> <1> <5> : "â…•" U2155 # VULGAR FRACTION ONE FIFTH
-<Multi_key> <2> <5> : "â…–" U2156 # VULGAR FRACTION TWO FIFTHS
-<Multi_key> <3> <5> : "â…—" U2157 # VULGAR FRACTION THREE FIFTHS
-<Multi_key> <4> <5> : "â…˜" U2158 # VULGAR FRACTION FOUR FIFTHS
-<Multi_key> <1> <6> : "â…™" U2159 # VULGAR FRACTION ONE SIXTH
-<Multi_key> <5> <6> : "â…š" U215A # VULGAR FRACTION FIVE SIXTHS
-<Multi_key> <1> <8> : "â…›" U215B # VULGAR FRACTION ONE EIGHTH
-<Multi_key> <3> <8> : "⅜" U215C # VULGAR FRACTION THREE EIGHTHS
-<Multi_key> <5> <8> : "â…" U215D # VULGAR FRACTION FIVE EIGHTHS
-<Multi_key> <7> <8> : "â…ž" U215E # VULGAR FRACTION SEVEN EIGHTHS
-
-XCOMM
-XCOMM Khmer digraphs
-XCOMM
-
-<U17ff> : "ាំ"
-<U17fe> : "ោះ"
-<U17fd> : "áŸáŸ‡"
-<U17fc> : "ុំ"
-<U17fb> : "ុះ"
-
-XCOMM End
+XCOMM
+XCOMM
+XCOMM UTF-8 compose sequence definitions for the greek keyboard layout.
+XCOMM
+XCOMM This file is mostly meant to be used along with the xkb/symbols/el
+XCOMM symbols definition file. In addition, the dead key definitions in
+XCOMM the machine generated part are really only relevant to the
+XCOMM "polytonic" variant in that file.
+XCOMM
+XCOMM The definitions herein cover the following ISO 10646 / Unicode
+XCOMM ranges:
+XCOMM - Basic Latin (0000-007F) (complete coverage)
+XCOMM - Latin-1 Supplement (0080-00FF) (complete coverage)
+XCOMM - Greek and Coptic (0370-03FF) (only the big ISO 8859-7 based
+XCOMM part at the beginning)
+XCOMM - Greek Extended (1F00-1FFF) (complete coverage)
+XCOMM - There are also six (6) characters from other ranges.
+XCOMM Moreover, the following character sets are completely covered:
+XCOMM - ISO 8859-1
+XCOMM - ISO 8859-7
+XCOMM
+XCOMM This file consists of four parts. Two of them have been adapted from
+XCOMM the iso8859-1/Compose and iso8859-7/Compose files. The other two
+XCOMM parts have been created by:
+XCOMM Vasilis Vasaitis <vvas@hal.csd.auth.gr>
+XCOMM based on the idea and initial implementation by:
+XCOMM Alejandros Diamandidis <adia@egnatia.ee.auth.gr>
+
+XCOMM Part 1
+XCOMM
+XCOMM ISO 8859-1 (Latin-1) multi-key definitions extracted and converted
+XCOMM from the iso8859-1/Compose file.
+
+XCOMM Special Character
+<Multi_key> <plus> <plus> : "#" numbersign
+<Multi_key> <apostrophe> <space> : "'" apostrophe
+<Multi_key> <space> <apostrophe> : "'" apostrophe
+<Multi_key> <A> <T> : "@" at
+<Multi_key> <parenleft> <parenleft> : "[" bracketleft
+<Multi_key> <slash> <less> : "\\" backslash
+<Multi_key> <less> <slash> : "\\" backslash
+<Multi_key> <parenright> <parenright> : "]" bracketright
+<Multi_key> <asciicircum> <space> : "^" asciicircum
+<Multi_key> <space> <asciicircum> : "^" asciicircum
+<Multi_key> <greater> <space> : "^" asciicircum
+<Multi_key> <space> <greater> : "^" asciicircum
+<Multi_key> <grave> <space> : "`" grave
+<Multi_key> <space> <grave> : "`" grave
+<Multi_key> <parenleft> <minus> : "{" braceleft
+<Multi_key> <minus> <parenleft> : "{" braceleft
+<Multi_key> <slash> <asciicircum> : "|" bar
+<Multi_key> <asciicircum> <slash> : "|" bar
+<Multi_key> <V> <L> : "|" bar
+<Multi_key> <L> <V> : "|" bar
+<Multi_key> <v> <l> : "|" bar
+<Multi_key> <l> <v> : "|" bar
+<Multi_key> <parenright> <minus> : "}" braceright
+<Multi_key> <minus> <parenright> : "}" braceright
+<Multi_key> <asciitilde> <space> : "~" asciitilde
+<Multi_key> <space> <asciitilde> : "~" asciitilde
+<Multi_key> <minus> <space> : "~" asciitilde
+<Multi_key> <space> <minus> : "~" asciitilde
+<Multi_key> <exclam> <exclam> : "¡" exclamdown
+<Multi_key> <c> <slash> : "¢" cent
+<Multi_key> <slash> <c> : "¢" cent
+<Multi_key> <C> <slash> : "¢" cent
+<Multi_key> <slash> <C> : "¢" cent
+<Multi_key> <C> <bar> : "¢" cent
+<Multi_key> <bar> <C> : "¢" cent
+<Multi_key> <c> <bar> : "¢" cent
+<Multi_key> <bar> <c> : "¢" cent
+<Multi_key> <l> <minus> : "£" sterling
+<Multi_key> <minus> <l> : "£" sterling
+<Multi_key> <L> <minus> : "£" sterling
+<Multi_key> <minus> <L> : "£" sterling
+<Multi_key> <l> <equal> : "£" sterling
+<Multi_key> <equal> <l> : "£" sterling
+<Multi_key> <L> <equal> : "£" sterling
+<Multi_key> <equal> <L> : "£" sterling
+<Multi_key> <y> <minus> : "Â¥" yen
+<Multi_key> <minus> <y> : "Â¥" yen
+<Multi_key> <Y> <minus> : "Â¥" yen
+<Multi_key> <minus> <Y> : "Â¥" yen
+<Multi_key> <y> <equal> : "Â¥" yen
+<Multi_key> <equal> <y> : "Â¥" yen
+<Multi_key> <Y> <equal> : "Â¥" yen
+<Multi_key> <equal> <Y> : "Â¥" yen
+<Multi_key> <s> <o> : "§" section
+<Multi_key> <o> <s> : "§" section
+<Multi_key> <S> <O> : "§" section
+<Multi_key> <O> <S> : "§" section
+<Multi_key> <S> <exclam> : "§" section
+<Multi_key> <exclam> <S> : "§" section
+<Multi_key> <s> <exclam> : "§" section
+<Multi_key> <exclam> <s> : "§" section
+<Multi_key> <S> <0> : "§" section
+<Multi_key> <0> <S> : "§" section
+<Multi_key> <s> <0> : "§" section
+<Multi_key> <0> <s> : "§" section
+<Multi_key> <x> <o> : "¤" currency
+<Multi_key> <o> <x> : "¤" currency
+<Multi_key> <X> <O> : "¤" currency
+<Multi_key> <O> <X> : "¤" currency
+<Multi_key> <x> <O> : "¤" currency
+<Multi_key> <O> <x> : "¤" currency
+<Multi_key> <X> <o> : "¤" currency
+<Multi_key> <o> <X> : "¤" currency
+<Multi_key> <x> <0> : "¤" currency
+<Multi_key> <0> <x> : "¤" currency
+<Multi_key> <X> <0> : "¤" currency
+<Multi_key> <0> <X> : "¤" currency
+<Multi_key> <c> <o> : "©" copyright
+<Multi_key> <o> <c> : "©" copyright
+<Multi_key> <C> <O> : "©" copyright
+<Multi_key> <O> <C> : "©" copyright
+<Multi_key> <c> <O> : "©" copyright
+<Multi_key> <O> <c> : "©" copyright
+<Multi_key> <C> <o> : "©" copyright
+<Multi_key> <o> <C> : "©" copyright
+<Multi_key> <c> <0> : "©" copyright
+<Multi_key> <0> <c> : "©" copyright
+<Multi_key> <C> <0> : "©" copyright
+<Multi_key> <0> <C> : "©" copyright
+<Multi_key> <parenleft> <c> : "©" copyright
+<Multi_key> <a> <underscore> : "ª" ordfeminine
+<Multi_key> <underscore> <a> : "ª" ordfeminine
+<Multi_key> <A> <underscore> : "ª" ordfeminine
+<Multi_key> <underscore> <A> : "ª" ordfeminine
+<Multi_key> <o> <underscore> : "º" masculine
+<Multi_key> <underscore> <o> : "º" masculine
+<Multi_key> <O> <underscore> : "º" masculine
+<Multi_key> <underscore> <O> : "º" masculine
+<Multi_key> <less> <less> : "«" guillemotleft
+<Multi_key> <greater> <greater> : "»" guillemotright
+<Multi_key> <0> <asciicircum> : "°" degree
+<Multi_key> <asciicircum> <0> : "°" degree
+<Multi_key> <0> <asterisk> : "°" degree
+<Multi_key> <asterisk> <0> : "°" degree
+<Multi_key> <plus> <minus> : "±" plusminus
+<Multi_key> <minus> <plus> : "±" plusminus
+<Multi_key> <slash> <u> : "µ" mu
+<Multi_key> <u> <slash> : "µ" mu
+<Multi_key> <slash> <U> : "µ" mu
+<Multi_key> <U> <slash> : "µ" mu
+<Multi_key> <1> <asciicircum> : "¹" onesuperior
+<Multi_key> <asciicircum> <1> : "¹" onesuperior
+<Multi_key> <S> <1> : "¹" onesuperior
+<Multi_key> <1> <S> : "¹" onesuperior
+<Multi_key> <s> <1> : "¹" onesuperior
+<Multi_key> <1> <s> : "¹" onesuperior
+<Multi_key> <2> <asciicircum> : "²" twosuperior
+<Multi_key> <asciicircum> <2> : "²" twosuperior
+<Multi_key> <S> <2> : "²" twosuperior
+<Multi_key> <2> <S> : "²" twosuperior
+<Multi_key> <s> <2> : "²" twosuperior
+<Multi_key> <2> <s> : "²" twosuperior
+<Multi_key> <3> <asciicircum> : "³" threesuperior
+<Multi_key> <asciicircum> <3> : "³" threesuperior
+<Multi_key> <S> <3> : "³" threesuperior
+<Multi_key> <3> <S> : "³" threesuperior
+<Multi_key> <s> <3> : "³" threesuperior
+<Multi_key> <3> <s> : "³" threesuperior
+<Multi_key> <p> <exclam> : "¶" paragraph
+<Multi_key> <exclam> <p> : "¶" paragraph
+<Multi_key> <P> <exclam> : "¶" paragraph
+<Multi_key> <exclam> <P> : "¶" paragraph
+<Multi_key> <period> <asciicircum> : "·" periodcentered
+<Multi_key> <asciicircum> <period> : "·" periodcentered
+<Multi_key> <period> <minus> : "·" periodcentered
+<Multi_key> <period> <equal> : "•" enfilledcircbullet
+<Multi_key> <period> <period> : "…" ellipsis
+<Multi_key> <1> <4> : "¼" onequarter
+<Multi_key> <1> <2> : "½" onehalf
+<Multi_key> <3> <4> : "¾" threequarters
+<Multi_key> <question> <question> : "¿" questiondown
+<Multi_key> <space> <space> : " " nobreakspace
+<Multi_key> <bar> <bar> : "¦" brokenbar
+<Multi_key> <exclam> <asciicircum> : "¦" brokenbar
+<Multi_key> <asciicircum> <exclam> : "¦" brokenbar
+<Multi_key> <V> <B> : "¦" brokenbar
+<Multi_key> <B> <V> : "¦" brokenbar
+<Multi_key> <v> <b> : "¦" brokenbar
+<Multi_key> <b> <v> : "¦" brokenbar
+<Multi_key> <minus> <comma> : "¬" notsign
+<Multi_key> <comma> <minus> : "¬" notsign
+<Multi_key> <minus> <minus> : "­" hyphen
+<Multi_key> <R> <O> : "®" registered
+<Multi_key> <O> <R> : "®" registered
+<Multi_key> <parenleft> <r> : "®" registered
+<Multi_key> <minus> <asciicircum> : "¯" macron
+<Multi_key> <asciicircum> <minus> : "¯" macron
+<Multi_key> <underscore> <asciicircum> : "¯" macron
+<Multi_key> <asciicircum> <underscore> : "¯" macron
+<Multi_key> <underscore> <underscore> : "¯" macron
+<Multi_key> <minus> <colon> : "÷" division
+<Multi_key> <colon> <minus> : "÷" division
+<Multi_key> <x> <x> : "×" multiply
+<Multi_key> <apostrophe> <apostrophe> : "´" acute
+<Multi_key> <comma> <comma> : "¸" cedilla
+<Multi_key> <quotedbl> <quotedbl> : "¨" diaeresis
+XCOMM Accented Alphabet
+<Multi_key> <A> <grave> : "À" Agrave
+<Multi_key> <grave> <A> : "À" Agrave
+<Multi_key> <A> <acute> : "Ã" Aacute
+<Multi_key> <acute> <A> : "Ã" Aacute
+<Multi_key> <A> <apostrophe> : "Ã" Aacute
+<Multi_key> <apostrophe> <A> : "Ã" Aacute
+<Multi_key> <A> <asciicircum> : "Â" Acircumflex
+<Multi_key> <asciicircum> <A> : "Â" Acircumflex
+<Multi_key> <A> <greater> : "Â" Acircumflex
+<Multi_key> <greater> <A> : "Â" Acircumflex
+<Multi_key> <A> <asciitilde> : "Ã" Atilde
+<Multi_key> <asciitilde> <A> : "Ã" Atilde
+<Multi_key> <A> <minus> : "Ã" Atilde
+<Multi_key> <minus> <A> : "Ã" Atilde
+<Multi_key> <A> <quotedbl> : "Ä" Adiaeresis
+<Multi_key> <quotedbl> <A> : "Ä" Adiaeresis
+<Multi_key> <A> <diaeresis> : "Ä" Adiaeresis
+<Multi_key> <diaeresis> <A> : "Ä" Adiaeresis
+<Multi_key> <A> <asterisk> : "Ã…" Aring
+<Multi_key> <asterisk> <A> : "Ã…" Aring
+<Multi_key> <A> <A> : "Ã…" Aring
+<Multi_key> <A> <O> : "Ã…" Aring
+<Multi_key> <A> <E> : "Æ" AE
+<Multi_key> <a> <grave> : "à" agrave
+<Multi_key> <grave> <a> : "à" agrave
+<Multi_key> <a> <acute> : "á" aacute
+<Multi_key> <acute> <a> : "á" aacute
+<Multi_key> <a> <apostrophe> : "á" aacute
+<Multi_key> <apostrophe> <a> : "á" aacute
+<Multi_key> <a> <asciicircum> : "â" acircumflex
+<Multi_key> <asciicircum> <a> : "â" acircumflex
+<Multi_key> <a> <greater> : "â" acircumflex
+<Multi_key> <greater> <a> : "â" acircumflex
+<Multi_key> <a> <asciitilde> : "ã" atilde
+<Multi_key> <asciitilde> <a> : "ã" atilde
+<Multi_key> <a> <minus> : "ã" atilde
+<Multi_key> <minus> <a> : "ã" atilde
+<Multi_key> <a> <quotedbl> : "ä" adiaeresis
+<Multi_key> <quotedbl> <a> : "ä" adiaeresis
+<Multi_key> <a> <diaeresis> : "ä" adiaeresis
+<Multi_key> <diaeresis> <a> : "ä" adiaeresis
+<Multi_key> <a> <asterisk> : "Ã¥" aring
+<Multi_key> <asterisk> <a> : "Ã¥" aring
+<Multi_key> <a> <a> : "Ã¥" aring
+<Multi_key> <a> <o> : "Ã¥" aring
+<Multi_key> <a> <e> : "æ" ae
+<Multi_key> <acute> <C> : "Ç" Ccedilla
+<Multi_key> <acute> <c> : "ç" ccedilla
+<Multi_key> <C> <comma> : "Ç" Ccedilla
+<Multi_key> <C> <cedilla> : "Ç" Ccedilla
+<Multi_key> <comma> <C> : "Ç" Ccedilla
+<Multi_key> <cedilla> <C> : "Ç" Ccedilla
+<Multi_key> <c> <comma> : "ç" ccedilla
+<Multi_key> <c> <cedilla> : "ç" ccedilla
+<Multi_key> <comma> <c> : "ç" ccedilla
+<Multi_key> <cedilla> <c> : "ç" ccedilla
+<Multi_key> <minus> <D> : "Ã" ETH
+<Multi_key> <D> <minus> : "Ã" ETH
+<Multi_key> <minus> <d> : "ð" eth
+<Multi_key> <d> <minus> : "ð" eth
+<Multi_key> <E> <grave> : "È" Egrave
+<Multi_key> <grave> <E> : "È" Egrave
+<Multi_key> <E> <acute> : "É" Eacute
+<Multi_key> <acute> <E> : "É" Eacute
+<Multi_key> <E> <apostrophe> : "É" Eacute
+<Multi_key> <apostrophe> <E> : "É" Eacute
+<Multi_key> <E> <asciicircum> : "Ê" Ecircumflex
+<Multi_key> <asciicircum> <E> : "Ê" Ecircumflex
+<Multi_key> <E> <greater> : "Ê" Ecircumflex
+<Multi_key> <greater> <E> : "Ê" Ecircumflex
+<Multi_key> <E> <quotedbl> : "Ë" Ediaeresis
+<Multi_key> <quotedbl> <E> : "Ë" Ediaeresis
+<Multi_key> <E> <diaeresis> : "Ë" Ediaeresis
+<Multi_key> <diaeresis> <E> : "Ë" Ediaeresis
+<Multi_key> <e> <grave> : "è" egrave
+<Multi_key> <grave> <e> : "è" egrave
+<Multi_key> <e> <acute> : "é" eacute
+<Multi_key> <acute> <e> : "é" eacute
+<Multi_key> <e> <apostrophe> : "é" eacute
+<Multi_key> <apostrophe> <e> : "é" eacute
+<Multi_key> <e> <asciicircum> : "ê" ecircumflex
+<Multi_key> <asciicircum> <e> : "ê" ecircumflex
+<Multi_key> <e> <greater> : "ê" ecircumflex
+<Multi_key> <greater> <e> : "ê" ecircumflex
+<Multi_key> <e> <quotedbl> : "ë" ediaeresis
+<Multi_key> <quotedbl> <e> : "ë" ediaeresis
+<Multi_key> <e> <diaeresis> : "ë" ediaeresis
+<Multi_key> <diaeresis> <e> : "ë" ediaeresis
+<Multi_key> <I> <grave> : "Ì" Igrave
+<Multi_key> <grave> <I> : "Ì" Igrave
+<Multi_key> <I> <acute> : "Ã" Iacute
+<Multi_key> <acute> <I> : "Ã" Iacute
+<Multi_key> <I> <apostrophe> : "Ã" Iacute
+<Multi_key> <apostrophe> <I> : "Ã" Iacute
+<Multi_key> <I> <asciicircum> : "ÃŽ" Icircumflex
+<Multi_key> <asciicircum> <I> : "ÃŽ" Icircumflex
+<Multi_key> <I> <greater> : "ÃŽ" Icircumflex
+<Multi_key> <greater> <I> : "ÃŽ" Icircumflex
+<Multi_key> <I> <quotedbl> : "Ã" Idiaeresis
+<Multi_key> <quotedbl> <I> : "Ã" Idiaeresis
+<Multi_key> <I> <diaeresis> : "Ã" Idiaeresis
+<Multi_key> <diaeresis> <I> : "Ã" Idiaeresis
+<Multi_key> <i> <grave> : "ì" igrave
+<Multi_key> <grave> <i> : "ì" igrave
+<Multi_key> <i> <acute> : "í" iacute
+<Multi_key> <acute> <i> : "í" iacute
+<Multi_key> <i> <apostrophe> : "í" iacute
+<Multi_key> <apostrophe> <i> : "í" iacute
+<Multi_key> <i> <asciicircum> : "î" icircumflex
+<Multi_key> <asciicircum> <i> : "î" icircumflex
+<Multi_key> <i> <greater> : "î" icircumflex
+<Multi_key> <greater> <i> : "î" icircumflex
+<Multi_key> <i> <quotedbl> : "ï" idiaeresis
+<Multi_key> <quotedbl> <i> : "ï" idiaeresis
+<Multi_key> <i> <diaeresis> : "ï" idiaeresis
+<Multi_key> <diaeresis> <i> : "ï" idiaeresis
+<Multi_key> <N> <asciitilde> : "Ñ" Ntilde
+<Multi_key> <asciitilde> <N> : "Ñ" Ntilde
+<Multi_key> <N> <minus> : "Ñ" Ntilde
+<Multi_key> <minus> <N> : "Ñ" Ntilde
+<Multi_key> <n> <asciitilde> : "ñ" ntilde
+<Multi_key> <asciitilde> <n> : "ñ" ntilde
+<Multi_key> <n> <minus> : "ñ" ntilde
+<Multi_key> <minus> <n> : "ñ" ntilde
+<Multi_key> <O> <grave> : "Ã’" Ograve
+<Multi_key> <grave> <O> : "Ã’" Ograve
+<Multi_key> <O> <acute> : "Ó" Oacute
+<Multi_key> <acute> <O> : "Ó" Oacute
+<Multi_key> <O> <apostrophe> : "Ó" Oacute
+<Multi_key> <apostrophe> <O> : "Ó" Oacute
+<Multi_key> <O> <asciicircum> : "Ô" Ocircumflex
+<Multi_key> <asciicircum> <O> : "Ô" Ocircumflex
+<Multi_key> <O> <greater> : "Ô" Ocircumflex
+<Multi_key> <greater> <O> : "Ô" Ocircumflex
+<Multi_key> <O> <asciitilde> : "Õ" Otilde
+<Multi_key> <asciitilde> <O> : "Õ" Otilde
+<Multi_key> <O> <minus> : "Õ" Otilde
+<Multi_key> <minus> <O> : "Õ" Otilde
+<Multi_key> <O> <quotedbl> : "Ö" Odiaeresis
+<Multi_key> <quotedbl> <O> : "Ö" Odiaeresis
+<Multi_key> <O> <diaeresis> : "Ö" Odiaeresis
+<Multi_key> <diaeresis> <O> : "Ö" Odiaeresis
+<Multi_key> <O> <slash> : "Ø" Ooblique
+<Multi_key> <slash> <O> : "Ø" Ooblique
+<Multi_key> <o> <grave> : "ò" ograve
+<Multi_key> <grave> <o> : "ò" ograve
+<Multi_key> <o> <acute> : "ó" oacute
+<Multi_key> <acute> <o> : "ó" oacute
+<Multi_key> <o> <apostrophe> : "ó" oacute
+<Multi_key> <apostrophe> <o> : "ó" oacute
+<Multi_key> <o> <asciicircum> : "ô" ocircumflex
+<Multi_key> <asciicircum> <o> : "ô" ocircumflex
+<Multi_key> <o> <greater> : "ô" ocircumflex
+<Multi_key> <greater> <o> : "ô" ocircumflex
+<Multi_key> <o> <asciitilde> : "õ" otilde
+<Multi_key> <asciitilde> <o> : "õ" otilde
+<Multi_key> <o> <minus> : "õ" otilde
+<Multi_key> <minus> <o> : "õ" otilde
+<Multi_key> <o> <quotedbl> : "ö" odiaeresis
+<Multi_key> <quotedbl> <o> : "ö" odiaeresis
+<Multi_key> <o> <diaeresis> : "ö" odiaeresis
+<Multi_key> <diaeresis> <o> : "ö" odiaeresis
+<Multi_key> <o> <slash> : "ø" oslash
+<Multi_key> <slash> <o> : "ø" oslash
+<Multi_key> <U> <grave> : "Ù" Ugrave
+<Multi_key> <grave> <U> : "Ù" Ugrave
+<Multi_key> <U> <acute> : "Ú" Uacute
+<Multi_key> <acute> <U> : "Ú" Uacute
+<Multi_key> <U> <apostrophe> : "Ú" Uacute
+<Multi_key> <apostrophe> <U> : "Ú" Uacute
+<Multi_key> <U> <asciicircum> : "Û" Ucircumflex
+<Multi_key> <asciicircum> <U> : "Û" Ucircumflex
+<Multi_key> <U> <greater> : "Û" Ucircumflex
+<Multi_key> <greater> <U> : "Û" Ucircumflex
+<Multi_key> <U> <quotedbl> : "Ü" Udiaeresis
+<Multi_key> <quotedbl> <U> : "Ü" Udiaeresis
+<Multi_key> <U> <diaeresis> : "Ü" Udiaeresis
+<Multi_key> <diaeresis> <U> : "Ü" Udiaeresis
+<Multi_key> <u> <grave> : "ù" ugrave
+<Multi_key> <grave> <u> : "ù" ugrave
+<Multi_key> <u> <acute> : "ú" uacute
+<Multi_key> <acute> <u> : "ú" uacute
+<Multi_key> <u> <apostrophe> : "ú" uacute
+<Multi_key> <apostrophe> <u> : "ú" uacute
+<Multi_key> <u> <asciicircum> : "û" ucircumflex
+<Multi_key> <asciicircum> <u> : "û" ucircumflex
+<Multi_key> <u> <greater> : "û" ucircumflex
+<Multi_key> <greater> <u> : "û" ucircumflex
+<Multi_key> <u> <quotedbl> : "ü" udiaeresis
+<Multi_key> <quotedbl> <u> : "ü" udiaeresis
+<Multi_key> <u> <diaeresis> : "ü" udiaeresis
+<Multi_key> <diaeresis> <u> : "ü" udiaeresis
+<Multi_key> <s> <s> : "ß" ssharp
+<Multi_key> <T> <H> : "Þ" THORN
+<Multi_key> <t> <h> : "þ" thorn
+<Multi_key> <Y> <acute> : "Ã" Yacute
+<Multi_key> <acute> <Y> : "Ã" Yacute
+<Multi_key> <Y> <apostrophe> : "Ã" Yacute
+<Multi_key> <apostrophe> <Y> : "Ã" Yacute
+<Multi_key> <y> <acute> : "ý" yacute
+<Multi_key> <acute> <y> : "ý" yacute
+<Multi_key> <y> <apostrophe> : "ý" yacute
+<Multi_key> <apostrophe> <y> : "ý" yacute
+<Multi_key> <y> <quotedbl> : "ÿ" ydiaeresis
+<Multi_key> <quotedbl> <y> : "ÿ" ydiaeresis
+<Multi_key> <y> <diaeresis> : "ÿ" ydiaeresis
+<Multi_key> <diaeresis> <y> : "ÿ" ydiaeresis
+
+XCOMM Part 2
+XCOMM
+XCOMM Greek Extended multi-key and dead key definitions. These have been
+XCOMM machine-generated by a perl script, found at:
+XCOMM http://hal.csd.auth.gr/~vvas/i18n/xkb/polytonic-compose.pl
+
+<Multi_key> <greater> <Greek_alpha> : "á¼€" U1f00
+<dead_horn> <Greek_alpha> : "á¼€" U1f00
+<dead_psili> <Greek_alpha> : "á¼€" U1f00
+<Multi_key> <less> <Greek_alpha> : "á¼" U1f01
+<dead_ogonek> <Greek_alpha> : "á¼" U1f01
+<dead_dasia> <Greek_alpha> : "á¼" U1f01
+<Multi_key> <greater> <grave> <Greek_alpha> : "ἂ" U1f02
+<Multi_key> <grave> <greater> <Greek_alpha> : "ἂ" U1f02
+<dead_horn> <dead_grave> <Greek_alpha> : "ἂ" U1f02
+<dead_psili> <dead_grave> <Greek_alpha> : "ἂ" U1f02
+<dead_grave> <dead_horn> <Greek_alpha> : "ἂ" U1f02
+<dead_grave> <dead_psili> <Greek_alpha> : "ἂ" U1f02
+<Multi_key> <less> <grave> <Greek_alpha> : "ἃ" U1f03
+<Multi_key> <grave> <less> <Greek_alpha> : "ἃ" U1f03
+<dead_ogonek> <dead_grave> <Greek_alpha> : "ἃ" U1f03
+<dead_dasia> <dead_grave> <Greek_alpha> : "ἃ" U1f03
+<dead_grave> <dead_ogonek> <Greek_alpha> : "ἃ" U1f03
+<dead_grave> <dead_dasia> <Greek_alpha> : "ἃ" U1f03
+<Multi_key> <greater> <apostrophe> <Greek_alpha> : "ἄ" U1f04
+<Multi_key> <apostrophe> <greater> <Greek_alpha> : "ἄ" U1f04
+<dead_horn> <dead_acute> <Greek_alpha> : "ἄ" U1f04
+<dead_psili> <dead_acute> <Greek_alpha> : "ἄ" U1f04
+<dead_acute> <dead_horn> <Greek_alpha> : "ἄ" U1f04
+<dead_acute> <dead_psili> <Greek_alpha> : "ἄ" U1f04
+<Multi_key> <less> <apostrophe> <Greek_alpha> : "á¼…" U1f05
+<Multi_key> <apostrophe> <less> <Greek_alpha> : "á¼…" U1f05
+<dead_ogonek> <dead_acute> <Greek_alpha> : "á¼…" U1f05
+<dead_dasia> <dead_acute> <Greek_alpha> : "á¼…" U1f05
+<dead_acute> <dead_ogonek> <Greek_alpha> : "á¼…" U1f05
+<dead_acute> <dead_dasia> <Greek_alpha> : "á¼…" U1f05
+<Multi_key> <greater> <asciitilde> <Greek_alpha> : "ἆ" U1f06
+<Multi_key> <asciitilde> <greater> <Greek_alpha> : "ἆ" U1f06
+<dead_horn> <dead_tilde> <Greek_alpha> : "ἆ" U1f06
+<dead_psili> <dead_tilde> <Greek_alpha> : "ἆ" U1f06
+<dead_tilde> <dead_horn> <Greek_alpha> : "ἆ" U1f06
+<dead_tilde> <dead_psili> <Greek_alpha> : "ἆ" U1f06
+<Multi_key> <less> <asciitilde> <Greek_alpha> : "ἇ" U1f07
+<Multi_key> <asciitilde> <less> <Greek_alpha> : "ἇ" U1f07
+<dead_ogonek> <dead_tilde> <Greek_alpha> : "ἇ" U1f07
+<dead_dasia> <dead_tilde> <Greek_alpha> : "ἇ" U1f07
+<dead_tilde> <dead_ogonek> <Greek_alpha> : "ἇ" U1f07
+<dead_tilde> <dead_dasia> <Greek_alpha> : "ἇ" U1f07
+<Multi_key> <greater> <Greek_ALPHA> : "Ἀ" U1f08
+<dead_horn> <Greek_ALPHA> : "Ἀ" U1f08
+<dead_psili> <Greek_ALPHA> : "Ἀ" U1f08
+<Multi_key> <less> <Greek_ALPHA> : "Ἁ" U1f09
+<dead_ogonek> <Greek_ALPHA> : "Ἁ" U1f09
+<dead_dasia> <Greek_ALPHA> : "Ἁ" U1f09
+<Multi_key> <greater> <grave> <Greek_ALPHA> : "Ἂ" U1f0a
+<Multi_key> <grave> <greater> <Greek_ALPHA> : "Ἂ" U1f0a
+<dead_horn> <dead_grave> <Greek_ALPHA> : "Ἂ" U1f0a
+<dead_psili> <dead_grave> <Greek_ALPHA> : "Ἂ" U1f0a
+<dead_grave> <dead_horn> <Greek_ALPHA> : "Ἂ" U1f0a
+<dead_grave> <dead_psili> <Greek_ALPHA> : "Ἂ" U1f0a
+<Multi_key> <less> <grave> <Greek_ALPHA> : "Ἃ" U1f0b
+<Multi_key> <grave> <less> <Greek_ALPHA> : "Ἃ" U1f0b
+<dead_ogonek> <dead_grave> <Greek_ALPHA> : "Ἃ" U1f0b
+<dead_dasia> <dead_grave> <Greek_ALPHA> : "Ἃ" U1f0b
+<dead_grave> <dead_ogonek> <Greek_ALPHA> : "Ἃ" U1f0b
+<dead_grave> <dead_dasia> <Greek_ALPHA> : "Ἃ" U1f0b
+<Multi_key> <greater> <apostrophe> <Greek_ALPHA> : "Ἄ" U1f0c
+<Multi_key> <apostrophe> <greater> <Greek_ALPHA> : "Ἄ" U1f0c
+<dead_horn> <dead_acute> <Greek_ALPHA> : "Ἄ" U1f0c
+<dead_psili> <dead_acute> <Greek_ALPHA> : "Ἄ" U1f0c
+<dead_acute> <dead_horn> <Greek_ALPHA> : "Ἄ" U1f0c
+<dead_acute> <dead_psili> <Greek_ALPHA> : "Ἄ" U1f0c
+<Multi_key> <less> <apostrophe> <Greek_ALPHA> : "á¼" U1f0d
+<Multi_key> <apostrophe> <less> <Greek_ALPHA> : "á¼" U1f0d
+<dead_ogonek> <dead_acute> <Greek_ALPHA> : "á¼" U1f0d
+<dead_dasia> <dead_acute> <Greek_ALPHA> : "á¼" U1f0d
+<dead_acute> <dead_ogonek> <Greek_ALPHA> : "á¼" U1f0d
+<dead_acute> <dead_dasia> <Greek_ALPHA> : "á¼" U1f0d
+<Multi_key> <greater> <asciitilde> <Greek_ALPHA> : "Ἆ" U1f0e
+<Multi_key> <asciitilde> <greater> <Greek_ALPHA> : "Ἆ" U1f0e
+<dead_horn> <dead_tilde> <Greek_ALPHA> : "Ἆ" U1f0e
+<dead_psili> <dead_tilde> <Greek_ALPHA> : "Ἆ" U1f0e
+<dead_tilde> <dead_horn> <Greek_ALPHA> : "Ἆ" U1f0e
+<dead_tilde> <dead_psili> <Greek_ALPHA> : "Ἆ" U1f0e
+<Multi_key> <less> <asciitilde> <Greek_ALPHA> : "á¼" U1f0f
+<Multi_key> <asciitilde> <less> <Greek_ALPHA> : "á¼" U1f0f
+<dead_ogonek> <dead_tilde> <Greek_ALPHA> : "á¼" U1f0f
+<dead_dasia> <dead_tilde> <Greek_ALPHA> : "á¼" U1f0f
+<dead_tilde> <dead_ogonek> <Greek_ALPHA> : "á¼" U1f0f
+<dead_tilde> <dead_dasia> <Greek_ALPHA> : "á¼" U1f0f
+<Multi_key> <greater> <Greek_epsilon> : "á¼" U1f10
+<dead_horn> <Greek_epsilon> : "á¼" U1f10
+<dead_psili> <Greek_epsilon> : "á¼" U1f10
+<Multi_key> <less> <Greek_epsilon> : "ἑ" U1f11
+<dead_ogonek> <Greek_epsilon> : "ἑ" U1f11
+<dead_dasia> <Greek_epsilon> : "ἑ" U1f11
+<Multi_key> <greater> <grave> <Greek_epsilon> : "á¼’" U1f12
+<Multi_key> <grave> <greater> <Greek_epsilon> : "á¼’" U1f12
+<dead_horn> <dead_grave> <Greek_epsilon> : "á¼’" U1f12
+<dead_psili> <dead_grave> <Greek_epsilon> : "á¼’" U1f12
+<dead_grave> <dead_horn> <Greek_epsilon> : "á¼’" U1f12
+<dead_grave> <dead_psili> <Greek_epsilon> : "á¼’" U1f12
+<Multi_key> <less> <grave> <Greek_epsilon> : "ἓ" U1f13
+<Multi_key> <grave> <less> <Greek_epsilon> : "ἓ" U1f13
+<dead_ogonek> <dead_grave> <Greek_epsilon> : "ἓ" U1f13
+<dead_dasia> <dead_grave> <Greek_epsilon> : "ἓ" U1f13
+<dead_grave> <dead_ogonek> <Greek_epsilon> : "ἓ" U1f13
+<dead_grave> <dead_dasia> <Greek_epsilon> : "ἓ" U1f13
+<Multi_key> <greater> <apostrophe> <Greek_epsilon> : "á¼”" U1f14
+<Multi_key> <apostrophe> <greater> <Greek_epsilon> : "á¼”" U1f14
+<dead_horn> <dead_acute> <Greek_epsilon> : "á¼”" U1f14
+<dead_psili> <dead_acute> <Greek_epsilon> : "á¼”" U1f14
+<dead_acute> <dead_horn> <Greek_epsilon> : "á¼”" U1f14
+<dead_acute> <dead_psili> <Greek_epsilon> : "á¼”" U1f14
+<Multi_key> <less> <apostrophe> <Greek_epsilon> : "ἕ" U1f15
+<Multi_key> <apostrophe> <less> <Greek_epsilon> : "ἕ" U1f15
+<dead_ogonek> <dead_acute> <Greek_epsilon> : "ἕ" U1f15
+<dead_dasia> <dead_acute> <Greek_epsilon> : "ἕ" U1f15
+<dead_acute> <dead_ogonek> <Greek_epsilon> : "ἕ" U1f15
+<dead_acute> <dead_dasia> <Greek_epsilon> : "ἕ" U1f15
+<Multi_key> <greater> <Greek_EPSILON> : "Ἐ" U1f18
+<dead_horn> <Greek_EPSILON> : "Ἐ" U1f18
+<dead_psili> <Greek_EPSILON> : "Ἐ" U1f18
+<Multi_key> <less> <Greek_EPSILON> : "á¼™" U1f19
+<dead_ogonek> <Greek_EPSILON> : "á¼™" U1f19
+<dead_dasia> <Greek_EPSILON> : "á¼™" U1f19
+<Multi_key> <greater> <grave> <Greek_EPSILON> : "Ἒ" U1f1a
+<Multi_key> <grave> <greater> <Greek_EPSILON> : "Ἒ" U1f1a
+<dead_horn> <dead_grave> <Greek_EPSILON> : "Ἒ" U1f1a
+<dead_psili> <dead_grave> <Greek_EPSILON> : "Ἒ" U1f1a
+<dead_grave> <dead_horn> <Greek_EPSILON> : "Ἒ" U1f1a
+<dead_grave> <dead_psili> <Greek_EPSILON> : "Ἒ" U1f1a
+<Multi_key> <less> <grave> <Greek_EPSILON> : "á¼›" U1f1b
+<Multi_key> <grave> <less> <Greek_EPSILON> : "á¼›" U1f1b
+<dead_ogonek> <dead_grave> <Greek_EPSILON> : "á¼›" U1f1b
+<dead_dasia> <dead_grave> <Greek_EPSILON> : "á¼›" U1f1b
+<dead_grave> <dead_ogonek> <Greek_EPSILON> : "á¼›" U1f1b
+<dead_grave> <dead_dasia> <Greek_EPSILON> : "á¼›" U1f1b
+<Multi_key> <greater> <apostrophe> <Greek_EPSILON> : "Ἔ" U1f1c
+<Multi_key> <apostrophe> <greater> <Greek_EPSILON> : "Ἔ" U1f1c
+<dead_horn> <dead_acute> <Greek_EPSILON> : "Ἔ" U1f1c
+<dead_psili> <dead_acute> <Greek_EPSILON> : "Ἔ" U1f1c
+<dead_acute> <dead_horn> <Greek_EPSILON> : "Ἔ" U1f1c
+<dead_acute> <dead_psili> <Greek_EPSILON> : "Ἔ" U1f1c
+<Multi_key> <less> <apostrophe> <Greek_EPSILON> : "á¼" U1f1d
+<Multi_key> <apostrophe> <less> <Greek_EPSILON> : "á¼" U1f1d
+<dead_ogonek> <dead_acute> <Greek_EPSILON> : "á¼" U1f1d
+<dead_dasia> <dead_acute> <Greek_EPSILON> : "á¼" U1f1d
+<dead_acute> <dead_ogonek> <Greek_EPSILON> : "á¼" U1f1d
+<dead_acute> <dead_dasia> <Greek_EPSILON> : "á¼" U1f1d
+<Multi_key> <greater> <Greek_eta> : "á¼ " U1f20
+<dead_horn> <Greek_eta> : "á¼ " U1f20
+<dead_psili> <Greek_eta> : "á¼ " U1f20
+<Multi_key> <less> <Greek_eta> : "ἡ" U1f21
+<dead_ogonek> <Greek_eta> : "ἡ" U1f21
+<dead_dasia> <Greek_eta> : "ἡ" U1f21
+<Multi_key> <greater> <grave> <Greek_eta> : "á¼¢" U1f22
+<Multi_key> <grave> <greater> <Greek_eta> : "á¼¢" U1f22
+<dead_horn> <dead_grave> <Greek_eta> : "á¼¢" U1f22
+<dead_psili> <dead_grave> <Greek_eta> : "á¼¢" U1f22
+<dead_grave> <dead_horn> <Greek_eta> : "á¼¢" U1f22
+<dead_grave> <dead_psili> <Greek_eta> : "á¼¢" U1f22
+<Multi_key> <less> <grave> <Greek_eta> : "á¼£" U1f23
+<Multi_key> <grave> <less> <Greek_eta> : "á¼£" U1f23
+<dead_ogonek> <dead_grave> <Greek_eta> : "á¼£" U1f23
+<dead_dasia> <dead_grave> <Greek_eta> : "á¼£" U1f23
+<dead_grave> <dead_ogonek> <Greek_eta> : "á¼£" U1f23
+<dead_grave> <dead_dasia> <Greek_eta> : "á¼£" U1f23
+<Multi_key> <greater> <apostrophe> <Greek_eta> : "ἤ" U1f24
+<Multi_key> <apostrophe> <greater> <Greek_eta> : "ἤ" U1f24
+<dead_horn> <dead_acute> <Greek_eta> : "ἤ" U1f24
+<dead_psili> <dead_acute> <Greek_eta> : "ἤ" U1f24
+<dead_acute> <dead_horn> <Greek_eta> : "ἤ" U1f24
+<dead_acute> <dead_psili> <Greek_eta> : "ἤ" U1f24
+<Multi_key> <less> <apostrophe> <Greek_eta> : "á¼¥" U1f25
+<Multi_key> <apostrophe> <less> <Greek_eta> : "á¼¥" U1f25
+<dead_ogonek> <dead_acute> <Greek_eta> : "á¼¥" U1f25
+<dead_dasia> <dead_acute> <Greek_eta> : "á¼¥" U1f25
+<dead_acute> <dead_ogonek> <Greek_eta> : "á¼¥" U1f25
+<dead_acute> <dead_dasia> <Greek_eta> : "á¼¥" U1f25
+<Multi_key> <greater> <asciitilde> <Greek_eta> : "ἦ" U1f26
+<Multi_key> <asciitilde> <greater> <Greek_eta> : "ἦ" U1f26
+<dead_horn> <dead_tilde> <Greek_eta> : "ἦ" U1f26
+<dead_psili> <dead_tilde> <Greek_eta> : "ἦ" U1f26
+<dead_tilde> <dead_horn> <Greek_eta> : "ἦ" U1f26
+<dead_tilde> <dead_psili> <Greek_eta> : "ἦ" U1f26
+<Multi_key> <less> <asciitilde> <Greek_eta> : "ἧ" U1f27
+<Multi_key> <asciitilde> <less> <Greek_eta> : "ἧ" U1f27
+<dead_ogonek> <dead_tilde> <Greek_eta> : "ἧ" U1f27
+<dead_dasia> <dead_tilde> <Greek_eta> : "ἧ" U1f27
+<dead_tilde> <dead_ogonek> <Greek_eta> : "ἧ" U1f27
+<dead_tilde> <dead_dasia> <Greek_eta> : "ἧ" U1f27
+<Multi_key> <greater> <Greek_ETA> : "Ἠ" U1f28
+<dead_horn> <Greek_ETA> : "Ἠ" U1f28
+<dead_psili> <Greek_ETA> : "Ἠ" U1f28
+<Multi_key> <less> <Greek_ETA> : "Ἡ" U1f29
+<dead_ogonek> <Greek_ETA> : "Ἡ" U1f29
+<dead_dasia> <Greek_ETA> : "Ἡ" U1f29
+<Multi_key> <greater> <grave> <Greek_ETA> : "Ἢ" U1f2a
+<Multi_key> <grave> <greater> <Greek_ETA> : "Ἢ" U1f2a
+<dead_horn> <dead_grave> <Greek_ETA> : "Ἢ" U1f2a
+<dead_psili> <dead_grave> <Greek_ETA> : "Ἢ" U1f2a
+<dead_grave> <dead_horn> <Greek_ETA> : "Ἢ" U1f2a
+<dead_grave> <dead_psili> <Greek_ETA> : "Ἢ" U1f2a
+<Multi_key> <less> <grave> <Greek_ETA> : "Ἣ" U1f2b
+<Multi_key> <grave> <less> <Greek_ETA> : "Ἣ" U1f2b
+<dead_ogonek> <dead_grave> <Greek_ETA> : "Ἣ" U1f2b
+<dead_dasia> <dead_grave> <Greek_ETA> : "Ἣ" U1f2b
+<dead_grave> <dead_ogonek> <Greek_ETA> : "Ἣ" U1f2b
+<dead_grave> <dead_dasia> <Greek_ETA> : "Ἣ" U1f2b
+<Multi_key> <greater> <apostrophe> <Greek_ETA> : "Ἤ" U1f2c
+<Multi_key> <apostrophe> <greater> <Greek_ETA> : "Ἤ" U1f2c
+<dead_horn> <dead_acute> <Greek_ETA> : "Ἤ" U1f2c
+<dead_psili> <dead_acute> <Greek_ETA> : "Ἤ" U1f2c
+<dead_acute> <dead_horn> <Greek_ETA> : "Ἤ" U1f2c
+<dead_acute> <dead_psili> <Greek_ETA> : "Ἤ" U1f2c
+<Multi_key> <less> <apostrophe> <Greek_ETA> : "á¼­" U1f2d
+<Multi_key> <apostrophe> <less> <Greek_ETA> : "á¼­" U1f2d
+<dead_ogonek> <dead_acute> <Greek_ETA> : "á¼­" U1f2d
+<dead_dasia> <dead_acute> <Greek_ETA> : "á¼­" U1f2d
+<dead_acute> <dead_ogonek> <Greek_ETA> : "á¼­" U1f2d
+<dead_acute> <dead_dasia> <Greek_ETA> : "á¼­" U1f2d
+<Multi_key> <greater> <asciitilde> <Greek_ETA> : "á¼®" U1f2e
+<Multi_key> <asciitilde> <greater> <Greek_ETA> : "á¼®" U1f2e
+<dead_horn> <dead_tilde> <Greek_ETA> : "á¼®" U1f2e
+<dead_psili> <dead_tilde> <Greek_ETA> : "á¼®" U1f2e
+<dead_tilde> <dead_horn> <Greek_ETA> : "á¼®" U1f2e
+<dead_tilde> <dead_psili> <Greek_ETA> : "á¼®" U1f2e
+<Multi_key> <less> <asciitilde> <Greek_ETA> : "Ἧ" U1f2f
+<Multi_key> <asciitilde> <less> <Greek_ETA> : "Ἧ" U1f2f
+<dead_ogonek> <dead_tilde> <Greek_ETA> : "Ἧ" U1f2f
+<dead_dasia> <dead_tilde> <Greek_ETA> : "Ἧ" U1f2f
+<dead_tilde> <dead_ogonek> <Greek_ETA> : "Ἧ" U1f2f
+<dead_tilde> <dead_dasia> <Greek_ETA> : "Ἧ" U1f2f
+<Multi_key> <greater> <Greek_iota> : "á¼°" U1f30
+<dead_horn> <Greek_iota> : "á¼°" U1f30
+<dead_psili> <Greek_iota> : "á¼°" U1f30
+<Multi_key> <less> <Greek_iota> : "á¼±" U1f31
+<dead_ogonek> <Greek_iota> : "á¼±" U1f31
+<dead_dasia> <Greek_iota> : "á¼±" U1f31
+<Multi_key> <greater> <grave> <Greek_iota> : "á¼²" U1f32
+<Multi_key> <grave> <greater> <Greek_iota> : "á¼²" U1f32
+<dead_horn> <dead_grave> <Greek_iota> : "á¼²" U1f32
+<dead_psili> <dead_grave> <Greek_iota> : "á¼²" U1f32
+<dead_grave> <dead_horn> <Greek_iota> : "á¼²" U1f32
+<dead_grave> <dead_psili> <Greek_iota> : "á¼²" U1f32
+<Multi_key> <less> <grave> <Greek_iota> : "á¼³" U1f33
+<Multi_key> <grave> <less> <Greek_iota> : "á¼³" U1f33
+<dead_ogonek> <dead_grave> <Greek_iota> : "á¼³" U1f33
+<dead_dasia> <dead_grave> <Greek_iota> : "á¼³" U1f33
+<dead_grave> <dead_ogonek> <Greek_iota> : "á¼³" U1f33
+<dead_grave> <dead_dasia> <Greek_iota> : "á¼³" U1f33
+<Multi_key> <greater> <apostrophe> <Greek_iota> : "á¼´" U1f34
+<Multi_key> <apostrophe> <greater> <Greek_iota> : "á¼´" U1f34
+<dead_horn> <dead_acute> <Greek_iota> : "á¼´" U1f34
+<dead_psili> <dead_acute> <Greek_iota> : "á¼´" U1f34
+<dead_acute> <dead_horn> <Greek_iota> : "á¼´" U1f34
+<dead_acute> <dead_psili> <Greek_iota> : "á¼´" U1f34
+<Multi_key> <less> <apostrophe> <Greek_iota> : "á¼µ" U1f35
+<Multi_key> <apostrophe> <less> <Greek_iota> : "á¼µ" U1f35
+<dead_ogonek> <dead_acute> <Greek_iota> : "á¼µ" U1f35
+<dead_dasia> <dead_acute> <Greek_iota> : "á¼µ" U1f35
+<dead_acute> <dead_ogonek> <Greek_iota> : "á¼µ" U1f35
+<dead_acute> <dead_dasia> <Greek_iota> : "á¼µ" U1f35
+<Multi_key> <greater> <asciitilde> <Greek_iota> : "ἶ" U1f36
+<Multi_key> <asciitilde> <greater> <Greek_iota> : "ἶ" U1f36
+<dead_horn> <dead_tilde> <Greek_iota> : "ἶ" U1f36
+<dead_psili> <dead_tilde> <Greek_iota> : "ἶ" U1f36
+<dead_tilde> <dead_horn> <Greek_iota> : "ἶ" U1f36
+<dead_tilde> <dead_psili> <Greek_iota> : "ἶ" U1f36
+<Multi_key> <less> <asciitilde> <Greek_iota> : "á¼·" U1f37
+<Multi_key> <asciitilde> <less> <Greek_iota> : "á¼·" U1f37
+<dead_ogonek> <dead_tilde> <Greek_iota> : "á¼·" U1f37
+<dead_dasia> <dead_tilde> <Greek_iota> : "á¼·" U1f37
+<dead_tilde> <dead_ogonek> <Greek_iota> : "á¼·" U1f37
+<dead_tilde> <dead_dasia> <Greek_iota> : "á¼·" U1f37
+<Multi_key> <greater> <Greek_IOTA> : "Ἰ" U1f38
+<dead_horn> <Greek_IOTA> : "Ἰ" U1f38
+<dead_psili> <Greek_IOTA> : "Ἰ" U1f38
+<Multi_key> <less> <Greek_IOTA> : "á¼¹" U1f39
+<dead_ogonek> <Greek_IOTA> : "á¼¹" U1f39
+<dead_dasia> <Greek_IOTA> : "á¼¹" U1f39
+<Multi_key> <greater> <grave> <Greek_IOTA> : "Ἲ" U1f3a
+<Multi_key> <grave> <greater> <Greek_IOTA> : "Ἲ" U1f3a
+<dead_horn> <dead_grave> <Greek_IOTA> : "Ἲ" U1f3a
+<dead_psili> <dead_grave> <Greek_IOTA> : "Ἲ" U1f3a
+<dead_grave> <dead_horn> <Greek_IOTA> : "Ἲ" U1f3a
+<dead_grave> <dead_psili> <Greek_IOTA> : "Ἲ" U1f3a
+<Multi_key> <less> <grave> <Greek_IOTA> : "á¼»" U1f3b
+<Multi_key> <grave> <less> <Greek_IOTA> : "á¼»" U1f3b
+<dead_ogonek> <dead_grave> <Greek_IOTA> : "á¼»" U1f3b
+<dead_dasia> <dead_grave> <Greek_IOTA> : "á¼»" U1f3b
+<dead_grave> <dead_ogonek> <Greek_IOTA> : "á¼»" U1f3b
+<dead_grave> <dead_dasia> <Greek_IOTA> : "á¼»" U1f3b
+<Multi_key> <greater> <apostrophe> <Greek_IOTA> : "á¼¼" U1f3c
+<Multi_key> <apostrophe> <greater> <Greek_IOTA> : "á¼¼" U1f3c
+<dead_horn> <dead_acute> <Greek_IOTA> : "á¼¼" U1f3c
+<dead_psili> <dead_acute> <Greek_IOTA> : "á¼¼" U1f3c
+<dead_acute> <dead_horn> <Greek_IOTA> : "á¼¼" U1f3c
+<dead_acute> <dead_psili> <Greek_IOTA> : "á¼¼" U1f3c
+<Multi_key> <less> <apostrophe> <Greek_IOTA> : "á¼½" U1f3d
+<Multi_key> <apostrophe> <less> <Greek_IOTA> : "á¼½" U1f3d
+<dead_ogonek> <dead_acute> <Greek_IOTA> : "á¼½" U1f3d
+<dead_dasia> <dead_acute> <Greek_IOTA> : "á¼½" U1f3d
+<dead_acute> <dead_ogonek> <Greek_IOTA> : "á¼½" U1f3d
+<dead_acute> <dead_dasia> <Greek_IOTA> : "á¼½" U1f3d
+<Multi_key> <greater> <asciitilde> <Greek_IOTA> : "á¼¾" U1f3e
+<Multi_key> <asciitilde> <greater> <Greek_IOTA> : "á¼¾" U1f3e
+<dead_horn> <dead_tilde> <Greek_IOTA> : "á¼¾" U1f3e
+<dead_psili> <dead_tilde> <Greek_IOTA> : "á¼¾" U1f3e
+<dead_tilde> <dead_horn> <Greek_IOTA> : "á¼¾" U1f3e
+<dead_tilde> <dead_psili> <Greek_IOTA> : "á¼¾" U1f3e
+<Multi_key> <less> <asciitilde> <Greek_IOTA> : "Ἷ" U1f3f
+<Multi_key> <asciitilde> <less> <Greek_IOTA> : "Ἷ" U1f3f
+<dead_ogonek> <dead_tilde> <Greek_IOTA> : "Ἷ" U1f3f
+<dead_dasia> <dead_tilde> <Greek_IOTA> : "Ἷ" U1f3f
+<dead_tilde> <dead_ogonek> <Greek_IOTA> : "Ἷ" U1f3f
+<dead_tilde> <dead_dasia> <Greek_IOTA> : "Ἷ" U1f3f
+<Multi_key> <greater> <Greek_omicron> : "á½€" U1f40
+<dead_horn> <Greek_omicron> : "á½€" U1f40
+<dead_psili> <Greek_omicron> : "á½€" U1f40
+<Multi_key> <less> <Greek_omicron> : "á½" U1f41
+<dead_ogonek> <Greek_omicron> : "á½" U1f41
+<dead_dasia> <Greek_omicron> : "á½" U1f41
+<Multi_key> <greater> <grave> <Greek_omicron> : "ὂ" U1f42
+<Multi_key> <grave> <greater> <Greek_omicron> : "ὂ" U1f42
+<dead_horn> <dead_grave> <Greek_omicron> : "ὂ" U1f42
+<dead_psili> <dead_grave> <Greek_omicron> : "ὂ" U1f42
+<dead_grave> <dead_horn> <Greek_omicron> : "ὂ" U1f42
+<dead_grave> <dead_psili> <Greek_omicron> : "ὂ" U1f42
+<Multi_key> <less> <grave> <Greek_omicron> : "ὃ" U1f43
+<Multi_key> <grave> <less> <Greek_omicron> : "ὃ" U1f43
+<dead_ogonek> <dead_grave> <Greek_omicron> : "ὃ" U1f43
+<dead_dasia> <dead_grave> <Greek_omicron> : "ὃ" U1f43
+<dead_grave> <dead_ogonek> <Greek_omicron> : "ὃ" U1f43
+<dead_grave> <dead_dasia> <Greek_omicron> : "ὃ" U1f43
+<Multi_key> <greater> <apostrophe> <Greek_omicron> : "ὄ" U1f44
+<Multi_key> <apostrophe> <greater> <Greek_omicron> : "ὄ" U1f44
+<dead_horn> <dead_acute> <Greek_omicron> : "ὄ" U1f44
+<dead_psili> <dead_acute> <Greek_omicron> : "ὄ" U1f44
+<dead_acute> <dead_horn> <Greek_omicron> : "ὄ" U1f44
+<dead_acute> <dead_psili> <Greek_omicron> : "ὄ" U1f44
+<Multi_key> <less> <apostrophe> <Greek_omicron> : "á½…" U1f45
+<Multi_key> <apostrophe> <less> <Greek_omicron> : "á½…" U1f45
+<dead_ogonek> <dead_acute> <Greek_omicron> : "á½…" U1f45
+<dead_dasia> <dead_acute> <Greek_omicron> : "á½…" U1f45
+<dead_acute> <dead_ogonek> <Greek_omicron> : "á½…" U1f45
+<dead_acute> <dead_dasia> <Greek_omicron> : "á½…" U1f45
+<Multi_key> <greater> <Greek_OMICRON> : "Ὀ" U1f48
+<dead_horn> <Greek_OMICRON> : "Ὀ" U1f48
+<dead_psili> <Greek_OMICRON> : "Ὀ" U1f48
+<Multi_key> <less> <Greek_OMICRON> : "Ὁ" U1f49
+<dead_ogonek> <Greek_OMICRON> : "Ὁ" U1f49
+<dead_dasia> <Greek_OMICRON> : "Ὁ" U1f49
+<Multi_key> <greater> <grave> <Greek_OMICRON> : "Ὂ" U1f4a
+<Multi_key> <grave> <greater> <Greek_OMICRON> : "Ὂ" U1f4a
+<dead_horn> <dead_grave> <Greek_OMICRON> : "Ὂ" U1f4a
+<dead_psili> <dead_grave> <Greek_OMICRON> : "Ὂ" U1f4a
+<dead_grave> <dead_horn> <Greek_OMICRON> : "Ὂ" U1f4a
+<dead_grave> <dead_psili> <Greek_OMICRON> : "Ὂ" U1f4a
+<Multi_key> <less> <grave> <Greek_OMICRON> : "Ὃ" U1f4b
+<Multi_key> <grave> <less> <Greek_OMICRON> : "Ὃ" U1f4b
+<dead_ogonek> <dead_grave> <Greek_OMICRON> : "Ὃ" U1f4b
+<dead_dasia> <dead_grave> <Greek_OMICRON> : "Ὃ" U1f4b
+<dead_grave> <dead_ogonek> <Greek_OMICRON> : "Ὃ" U1f4b
+<dead_grave> <dead_dasia> <Greek_OMICRON> : "Ὃ" U1f4b
+<Multi_key> <greater> <apostrophe> <Greek_OMICRON> : "Ὄ" U1f4c
+<Multi_key> <apostrophe> <greater> <Greek_OMICRON> : "Ὄ" U1f4c
+<dead_horn> <dead_acute> <Greek_OMICRON> : "Ὄ" U1f4c
+<dead_psili> <dead_acute> <Greek_OMICRON> : "Ὄ" U1f4c
+<dead_acute> <dead_horn> <Greek_OMICRON> : "Ὄ" U1f4c
+<dead_acute> <dead_psili> <Greek_OMICRON> : "Ὄ" U1f4c
+<Multi_key> <less> <apostrophe> <Greek_OMICRON> : "á½" U1f4d
+<Multi_key> <apostrophe> <less> <Greek_OMICRON> : "á½" U1f4d
+<dead_ogonek> <dead_acute> <Greek_OMICRON> : "á½" U1f4d
+<dead_dasia> <dead_acute> <Greek_OMICRON> : "á½" U1f4d
+<dead_acute> <dead_ogonek> <Greek_OMICRON> : "á½" U1f4d
+<dead_acute> <dead_dasia> <Greek_OMICRON> : "á½" U1f4d
+<Multi_key> <greater> <Greek_upsilon> : "á½" U1f50
+<dead_horn> <Greek_upsilon> : "á½" U1f50
+<dead_psili> <Greek_upsilon> : "á½" U1f50
+<Multi_key> <less> <Greek_upsilon> : "ὑ" U1f51
+<dead_ogonek> <Greek_upsilon> : "ὑ" U1f51
+<dead_dasia> <Greek_upsilon> : "ὑ" U1f51
+<Multi_key> <greater> <grave> <Greek_upsilon> : "á½’" U1f52
+<Multi_key> <grave> <greater> <Greek_upsilon> : "á½’" U1f52
+<dead_horn> <dead_grave> <Greek_upsilon> : "á½’" U1f52
+<dead_psili> <dead_grave> <Greek_upsilon> : "á½’" U1f52
+<dead_grave> <dead_horn> <Greek_upsilon> : "á½’" U1f52
+<dead_grave> <dead_psili> <Greek_upsilon> : "á½’" U1f52
+<Multi_key> <less> <grave> <Greek_upsilon> : "ὓ" U1f53
+<Multi_key> <grave> <less> <Greek_upsilon> : "ὓ" U1f53
+<dead_ogonek> <dead_grave> <Greek_upsilon> : "ὓ" U1f53
+<dead_dasia> <dead_grave> <Greek_upsilon> : "ὓ" U1f53
+<dead_grave> <dead_ogonek> <Greek_upsilon> : "ὓ" U1f53
+<dead_grave> <dead_dasia> <Greek_upsilon> : "ὓ" U1f53
+<Multi_key> <greater> <apostrophe> <Greek_upsilon> : "á½”" U1f54
+<Multi_key> <apostrophe> <greater> <Greek_upsilon> : "á½”" U1f54
+<dead_horn> <dead_acute> <Greek_upsilon> : "á½”" U1f54
+<dead_psili> <dead_acute> <Greek_upsilon> : "á½”" U1f54
+<dead_acute> <dead_horn> <Greek_upsilon> : "á½”" U1f54
+<dead_acute> <dead_psili> <Greek_upsilon> : "á½”" U1f54
+<Multi_key> <less> <apostrophe> <Greek_upsilon> : "ὕ" U1f55
+<Multi_key> <apostrophe> <less> <Greek_upsilon> : "ὕ" U1f55
+<dead_ogonek> <dead_acute> <Greek_upsilon> : "ὕ" U1f55
+<dead_dasia> <dead_acute> <Greek_upsilon> : "ὕ" U1f55
+<dead_acute> <dead_ogonek> <Greek_upsilon> : "ὕ" U1f55
+<dead_acute> <dead_dasia> <Greek_upsilon> : "ὕ" U1f55
+<Multi_key> <greater> <asciitilde> <Greek_upsilon> : "á½–" U1f56
+<Multi_key> <asciitilde> <greater> <Greek_upsilon> : "á½–" U1f56
+<dead_horn> <dead_tilde> <Greek_upsilon> : "á½–" U1f56
+<dead_psili> <dead_tilde> <Greek_upsilon> : "á½–" U1f56
+<dead_tilde> <dead_horn> <Greek_upsilon> : "á½–" U1f56
+<dead_tilde> <dead_psili> <Greek_upsilon> : "á½–" U1f56
+<Multi_key> <less> <asciitilde> <Greek_upsilon> : "á½—" U1f57
+<Multi_key> <asciitilde> <less> <Greek_upsilon> : "á½—" U1f57
+<dead_ogonek> <dead_tilde> <Greek_upsilon> : "á½—" U1f57
+<dead_dasia> <dead_tilde> <Greek_upsilon> : "á½—" U1f57
+<dead_tilde> <dead_ogonek> <Greek_upsilon> : "á½—" U1f57
+<dead_tilde> <dead_dasia> <Greek_upsilon> : "á½—" U1f57
+<Multi_key> <less> <Greek_UPSILON> : "á½™" U1f59
+<dead_ogonek> <Greek_UPSILON> : "á½™" U1f59
+<dead_dasia> <Greek_UPSILON> : "á½™" U1f59
+<Multi_key> <less> <grave> <Greek_UPSILON> : "á½›" U1f5b
+<Multi_key> <grave> <less> <Greek_UPSILON> : "á½›" U1f5b
+<dead_ogonek> <dead_grave> <Greek_UPSILON> : "á½›" U1f5b
+<dead_dasia> <dead_grave> <Greek_UPSILON> : "á½›" U1f5b
+<dead_grave> <dead_ogonek> <Greek_UPSILON> : "á½›" U1f5b
+<dead_grave> <dead_dasia> <Greek_UPSILON> : "á½›" U1f5b
+<Multi_key> <less> <apostrophe> <Greek_UPSILON> : "á½" U1f5d
+<Multi_key> <apostrophe> <less> <Greek_UPSILON> : "á½" U1f5d
+<dead_ogonek> <dead_acute> <Greek_UPSILON> : "á½" U1f5d
+<dead_dasia> <dead_acute> <Greek_UPSILON> : "á½" U1f5d
+<dead_acute> <dead_ogonek> <Greek_UPSILON> : "á½" U1f5d
+<dead_acute> <dead_dasia> <Greek_UPSILON> : "á½" U1f5d
+<Multi_key> <less> <asciitilde> <Greek_UPSILON> : "Ὗ" U1f5f
+<Multi_key> <asciitilde> <less> <Greek_UPSILON> : "Ὗ" U1f5f
+<dead_ogonek> <dead_tilde> <Greek_UPSILON> : "Ὗ" U1f5f
+<dead_dasia> <dead_tilde> <Greek_UPSILON> : "Ὗ" U1f5f
+<dead_tilde> <dead_ogonek> <Greek_UPSILON> : "Ὗ" U1f5f
+<dead_tilde> <dead_dasia> <Greek_UPSILON> : "Ὗ" U1f5f
+<Multi_key> <greater> <Greek_omega> : "á½ " U1f60
+<dead_horn> <Greek_omega> : "á½ " U1f60
+<dead_psili> <Greek_omega> : "á½ " U1f60
+<Multi_key> <less> <Greek_omega> : "ὡ" U1f61
+<dead_ogonek> <Greek_omega> : "ὡ" U1f61
+<dead_dasia> <Greek_omega> : "ὡ" U1f61
+<Multi_key> <greater> <grave> <Greek_omega> : "á½¢" U1f62
+<Multi_key> <grave> <greater> <Greek_omega> : "á½¢" U1f62
+<dead_horn> <dead_grave> <Greek_omega> : "á½¢" U1f62
+<dead_psili> <dead_grave> <Greek_omega> : "á½¢" U1f62
+<dead_grave> <dead_horn> <Greek_omega> : "á½¢" U1f62
+<dead_grave> <dead_psili> <Greek_omega> : "á½¢" U1f62
+<Multi_key> <less> <grave> <Greek_omega> : "á½£" U1f63
+<Multi_key> <grave> <less> <Greek_omega> : "á½£" U1f63
+<dead_ogonek> <dead_grave> <Greek_omega> : "á½£" U1f63
+<dead_dasia> <dead_grave> <Greek_omega> : "á½£" U1f63
+<dead_grave> <dead_ogonek> <Greek_omega> : "á½£" U1f63
+<dead_grave> <dead_dasia> <Greek_omega> : "á½£" U1f63
+<Multi_key> <greater> <apostrophe> <Greek_omega> : "ὤ" U1f64
+<Multi_key> <apostrophe> <greater> <Greek_omega> : "ὤ" U1f64
+<dead_horn> <dead_acute> <Greek_omega> : "ὤ" U1f64
+<dead_psili> <dead_acute> <Greek_omega> : "ὤ" U1f64
+<dead_acute> <dead_horn> <Greek_omega> : "ὤ" U1f64
+<dead_acute> <dead_psili> <Greek_omega> : "ὤ" U1f64
+<Multi_key> <less> <apostrophe> <Greek_omega> : "á½¥" U1f65
+<Multi_key> <apostrophe> <less> <Greek_omega> : "á½¥" U1f65
+<dead_ogonek> <dead_acute> <Greek_omega> : "á½¥" U1f65
+<dead_dasia> <dead_acute> <Greek_omega> : "á½¥" U1f65
+<dead_acute> <dead_ogonek> <Greek_omega> : "á½¥" U1f65
+<dead_acute> <dead_dasia> <Greek_omega> : "á½¥" U1f65
+<Multi_key> <greater> <asciitilde> <Greek_omega> : "ὦ" U1f66
+<Multi_key> <asciitilde> <greater> <Greek_omega> : "ὦ" U1f66
+<dead_horn> <dead_tilde> <Greek_omega> : "ὦ" U1f66
+<dead_psili> <dead_tilde> <Greek_omega> : "ὦ" U1f66
+<dead_tilde> <dead_horn> <Greek_omega> : "ὦ" U1f66
+<dead_tilde> <dead_psili> <Greek_omega> : "ὦ" U1f66
+<Multi_key> <less> <asciitilde> <Greek_omega> : "ὧ" U1f67
+<Multi_key> <asciitilde> <less> <Greek_omega> : "ὧ" U1f67
+<dead_ogonek> <dead_tilde> <Greek_omega> : "ὧ" U1f67
+<dead_dasia> <dead_tilde> <Greek_omega> : "ὧ" U1f67
+<dead_tilde> <dead_ogonek> <Greek_omega> : "ὧ" U1f67
+<dead_tilde> <dead_dasia> <Greek_omega> : "ὧ" U1f67
+<Multi_key> <greater> <Greek_OMEGA> : "Ὠ" U1f68
+<dead_horn> <Greek_OMEGA> : "Ὠ" U1f68
+<dead_psili> <Greek_OMEGA> : "Ὠ" U1f68
+<Multi_key> <less> <Greek_OMEGA> : "Ὡ" U1f69
+<dead_ogonek> <Greek_OMEGA> : "Ὡ" U1f69
+<dead_dasia> <Greek_OMEGA> : "Ὡ" U1f69
+<Multi_key> <greater> <grave> <Greek_OMEGA> : "Ὢ" U1f6a
+<Multi_key> <grave> <greater> <Greek_OMEGA> : "Ὢ" U1f6a
+<dead_horn> <dead_grave> <Greek_OMEGA> : "Ὢ" U1f6a
+<dead_psili> <dead_grave> <Greek_OMEGA> : "Ὢ" U1f6a
+<dead_grave> <dead_horn> <Greek_OMEGA> : "Ὢ" U1f6a
+<dead_grave> <dead_psili> <Greek_OMEGA> : "Ὢ" U1f6a
+<Multi_key> <less> <grave> <Greek_OMEGA> : "Ὣ" U1f6b
+<Multi_key> <grave> <less> <Greek_OMEGA> : "Ὣ" U1f6b
+<dead_ogonek> <dead_grave> <Greek_OMEGA> : "Ὣ" U1f6b
+<dead_dasia> <dead_grave> <Greek_OMEGA> : "Ὣ" U1f6b
+<dead_grave> <dead_ogonek> <Greek_OMEGA> : "Ὣ" U1f6b
+<dead_grave> <dead_dasia> <Greek_OMEGA> : "Ὣ" U1f6b
+<Multi_key> <greater> <apostrophe> <Greek_OMEGA> : "Ὤ" U1f6c
+<Multi_key> <apostrophe> <greater> <Greek_OMEGA> : "Ὤ" U1f6c
+<dead_horn> <dead_acute> <Greek_OMEGA> : "Ὤ" U1f6c
+<dead_psili> <dead_acute> <Greek_OMEGA> : "Ὤ" U1f6c
+<dead_acute> <dead_horn> <Greek_OMEGA> : "Ὤ" U1f6c
+<dead_acute> <dead_psili> <Greek_OMEGA> : "Ὤ" U1f6c
+<Multi_key> <less> <apostrophe> <Greek_OMEGA> : "á½­" U1f6d
+<Multi_key> <apostrophe> <less> <Greek_OMEGA> : "á½­" U1f6d
+<dead_ogonek> <dead_acute> <Greek_OMEGA> : "á½­" U1f6d
+<dead_dasia> <dead_acute> <Greek_OMEGA> : "á½­" U1f6d
+<dead_acute> <dead_ogonek> <Greek_OMEGA> : "á½­" U1f6d
+<dead_acute> <dead_dasia> <Greek_OMEGA> : "á½­" U1f6d
+<Multi_key> <greater> <asciitilde> <Greek_OMEGA> : "á½®" U1f6e
+<Multi_key> <asciitilde> <greater> <Greek_OMEGA> : "á½®" U1f6e
+<dead_horn> <dead_tilde> <Greek_OMEGA> : "á½®" U1f6e
+<dead_psili> <dead_tilde> <Greek_OMEGA> : "á½®" U1f6e
+<dead_tilde> <dead_horn> <Greek_OMEGA> : "á½®" U1f6e
+<dead_tilde> <dead_psili> <Greek_OMEGA> : "á½®" U1f6e
+<Multi_key> <less> <asciitilde> <Greek_OMEGA> : "Ὧ" U1f6f
+<Multi_key> <asciitilde> <less> <Greek_OMEGA> : "Ὧ" U1f6f
+<dead_ogonek> <dead_tilde> <Greek_OMEGA> : "Ὧ" U1f6f
+<dead_dasia> <dead_tilde> <Greek_OMEGA> : "Ὧ" U1f6f
+<dead_tilde> <dead_ogonek> <Greek_OMEGA> : "Ὧ" U1f6f
+<dead_tilde> <dead_dasia> <Greek_OMEGA> : "Ὧ" U1f6f
+<Multi_key> <grave> <Greek_alpha> : "á½°" U1f70
+<dead_grave> <Greek_alpha> : "á½°" U1f70
+<Multi_key> <grave> <Greek_epsilon> : "á½²" U1f72
+<dead_grave> <Greek_epsilon> : "á½²" U1f72
+<Multi_key> <grave> <Greek_eta> : "á½´" U1f74
+<dead_grave> <Greek_eta> : "á½´" U1f74
+<Multi_key> <grave> <Greek_iota> : "ὶ" U1f76
+<dead_grave> <Greek_iota> : "ὶ" U1f76
+<Multi_key> <grave> <Greek_omicron> : "ὸ" U1f78
+<dead_grave> <Greek_omicron> : "ὸ" U1f78
+<Multi_key> <grave> <Greek_upsilon> : "ὺ" U1f7a
+<dead_grave> <Greek_upsilon> : "ὺ" U1f7a
+<Multi_key> <grave> <Greek_omega> : "á½¼" U1f7c
+<dead_grave> <Greek_omega> : "á½¼" U1f7c
+<Multi_key> <bar> <greater> <Greek_alpha> : "á¾€" U1f80
+<Multi_key> <greater> <bar> <Greek_alpha> : "á¾€" U1f80
+<dead_iota> <dead_horn> <Greek_alpha> : "á¾€" U1f80
+<dead_iota> <dead_psili> <Greek_alpha> : "á¾€" U1f80
+<dead_horn> <dead_iota> <Greek_alpha> : "á¾€" U1f80
+<dead_psili> <dead_iota> <Greek_alpha> : "á¾€" U1f80
+<Multi_key> <bar> <less> <Greek_alpha> : "á¾" U1f81
+<Multi_key> <less> <bar> <Greek_alpha> : "á¾" U1f81
+<dead_iota> <dead_ogonek> <Greek_alpha> : "á¾" U1f81
+<dead_iota> <dead_dasia> <Greek_alpha> : "á¾" U1f81
+<dead_ogonek> <dead_iota> <Greek_alpha> : "á¾" U1f81
+<dead_dasia> <dead_iota> <Greek_alpha> : "á¾" U1f81
+<Multi_key> <bar> <greater> <grave> <Greek_alpha> : "ᾂ" U1f82
+<Multi_key> <bar> <grave> <greater> <Greek_alpha> : "ᾂ" U1f82
+<Multi_key> <greater> <bar> <grave> <Greek_alpha> : "ᾂ" U1f82
+<Multi_key> <greater> <grave> <bar> <Greek_alpha> : "ᾂ" U1f82
+<Multi_key> <grave> <bar> <greater> <Greek_alpha> : "ᾂ" U1f82
+<Multi_key> <grave> <greater> <bar> <Greek_alpha> : "ᾂ" U1f82
+<dead_iota> <dead_horn> <dead_grave> <Greek_alpha> : "ᾂ" U1f82
+<dead_iota> <dead_psili> <dead_grave> <Greek_alpha> : "ᾂ" U1f82
+<dead_iota> <dead_grave> <dead_horn> <Greek_alpha> : "ᾂ" U1f82
+<dead_iota> <dead_grave> <dead_psili> <Greek_alpha> : "ᾂ" U1f82
+<dead_horn> <dead_iota> <dead_grave> <Greek_alpha> : "ᾂ" U1f82
+<dead_psili> <dead_iota> <dead_grave> <Greek_alpha> : "ᾂ" U1f82
+<dead_horn> <dead_grave> <dead_iota> <Greek_alpha> : "ᾂ" U1f82
+<dead_psili> <dead_grave> <dead_iota> <Greek_alpha> : "ᾂ" U1f82
+<dead_grave> <dead_iota> <dead_horn> <Greek_alpha> : "ᾂ" U1f82
+<dead_grave> <dead_iota> <dead_psili> <Greek_alpha> : "ᾂ" U1f82
+<dead_grave> <dead_horn> <dead_iota> <Greek_alpha> : "ᾂ" U1f82
+<dead_grave> <dead_psili> <dead_iota> <Greek_alpha> : "ᾂ" U1f82
+<Multi_key> <bar> <less> <grave> <Greek_alpha> : "ᾃ" U1f83
+<Multi_key> <bar> <grave> <less> <Greek_alpha> : "ᾃ" U1f83
+<Multi_key> <less> <bar> <grave> <Greek_alpha> : "ᾃ" U1f83
+<Multi_key> <less> <grave> <bar> <Greek_alpha> : "ᾃ" U1f83
+<Multi_key> <grave> <bar> <less> <Greek_alpha> : "ᾃ" U1f83
+<Multi_key> <grave> <less> <bar> <Greek_alpha> : "ᾃ" U1f83
+<dead_iota> <dead_ogonek> <dead_grave> <Greek_alpha> : "ᾃ" U1f83
+<dead_iota> <dead_dasia> <dead_grave> <Greek_alpha> : "ᾃ" U1f83
+<dead_iota> <dead_grave> <dead_ogonek> <Greek_alpha> : "ᾃ" U1f83
+<dead_iota> <dead_grave> <dead_dasia> <Greek_alpha> : "ᾃ" U1f83
+<dead_ogonek> <dead_iota> <dead_grave> <Greek_alpha> : "ᾃ" U1f83
+<dead_dasia> <dead_iota> <dead_grave> <Greek_alpha> : "ᾃ" U1f83
+<dead_ogonek> <dead_grave> <dead_iota> <Greek_alpha> : "ᾃ" U1f83
+<dead_dasia> <dead_grave> <dead_iota> <Greek_alpha> : "ᾃ" U1f83
+<dead_grave> <dead_iota> <dead_ogonek> <Greek_alpha> : "ᾃ" U1f83
+<dead_grave> <dead_iota> <dead_dasia> <Greek_alpha> : "ᾃ" U1f83
+<dead_grave> <dead_ogonek> <dead_iota> <Greek_alpha> : "ᾃ" U1f83
+<dead_grave> <dead_dasia> <dead_iota> <Greek_alpha> : "ᾃ" U1f83
+<Multi_key> <bar> <greater> <apostrophe> <Greek_alpha> : "ᾄ" U1f84
+<Multi_key> <bar> <apostrophe> <greater> <Greek_alpha> : "ᾄ" U1f84
+<Multi_key> <greater> <bar> <apostrophe> <Greek_alpha> : "ᾄ" U1f84
+<Multi_key> <greater> <apostrophe> <bar> <Greek_alpha> : "ᾄ" U1f84
+<Multi_key> <apostrophe> <bar> <greater> <Greek_alpha> : "ᾄ" U1f84
+<Multi_key> <apostrophe> <greater> <bar> <Greek_alpha> : "ᾄ" U1f84
+<dead_iota> <dead_horn> <dead_acute> <Greek_alpha> : "ᾄ" U1f84
+<dead_iota> <dead_psili> <dead_acute> <Greek_alpha> : "ᾄ" U1f84
+<dead_iota> <dead_acute> <dead_horn> <Greek_alpha> : "ᾄ" U1f84
+<dead_iota> <dead_acute> <dead_psili> <Greek_alpha> : "ᾄ" U1f84
+<dead_horn> <dead_iota> <dead_acute> <Greek_alpha> : "ᾄ" U1f84
+<dead_psili> <dead_iota> <dead_acute> <Greek_alpha> : "ᾄ" U1f84
+<dead_horn> <dead_acute> <dead_iota> <Greek_alpha> : "ᾄ" U1f84
+<dead_psili> <dead_acute> <dead_iota> <Greek_alpha> : "ᾄ" U1f84
+<dead_acute> <dead_iota> <dead_horn> <Greek_alpha> : "ᾄ" U1f84
+<dead_acute> <dead_iota> <dead_psili> <Greek_alpha> : "ᾄ" U1f84
+<dead_acute> <dead_horn> <dead_iota> <Greek_alpha> : "ᾄ" U1f84
+<dead_acute> <dead_psili> <dead_iota> <Greek_alpha> : "ᾄ" U1f84
+<Multi_key> <bar> <less> <apostrophe> <Greek_alpha> : "á¾…" U1f85
+<Multi_key> <bar> <apostrophe> <less> <Greek_alpha> : "á¾…" U1f85
+<Multi_key> <less> <bar> <apostrophe> <Greek_alpha> : "á¾…" U1f85
+<Multi_key> <less> <apostrophe> <bar> <Greek_alpha> : "á¾…" U1f85
+<Multi_key> <apostrophe> <bar> <less> <Greek_alpha> : "á¾…" U1f85
+<Multi_key> <apostrophe> <less> <bar> <Greek_alpha> : "á¾…" U1f85
+<dead_iota> <dead_ogonek> <dead_acute> <Greek_alpha> : "á¾…" U1f85
+<dead_iota> <dead_dasia> <dead_acute> <Greek_alpha> : "á¾…" U1f85
+<dead_iota> <dead_acute> <dead_ogonek> <Greek_alpha> : "á¾…" U1f85
+<dead_iota> <dead_acute> <dead_dasia> <Greek_alpha> : "á¾…" U1f85
+<dead_ogonek> <dead_iota> <dead_acute> <Greek_alpha> : "á¾…" U1f85
+<dead_dasia> <dead_iota> <dead_acute> <Greek_alpha> : "á¾…" U1f85
+<dead_ogonek> <dead_acute> <dead_iota> <Greek_alpha> : "á¾…" U1f85
+<dead_dasia> <dead_acute> <dead_iota> <Greek_alpha> : "á¾…" U1f85
+<dead_acute> <dead_iota> <dead_ogonek> <Greek_alpha> : "á¾…" U1f85
+<dead_acute> <dead_iota> <dead_dasia> <Greek_alpha> : "á¾…" U1f85
+<dead_acute> <dead_ogonek> <dead_iota> <Greek_alpha> : "á¾…" U1f85
+<dead_acute> <dead_dasia> <dead_iota> <Greek_alpha> : "á¾…" U1f85
+<Multi_key> <bar> <greater> <asciitilde> <Greek_alpha> : "ᾆ" U1f86
+<Multi_key> <bar> <asciitilde> <greater> <Greek_alpha> : "ᾆ" U1f86
+<Multi_key> <greater> <bar> <asciitilde> <Greek_alpha> : "ᾆ" U1f86
+<Multi_key> <greater> <asciitilde> <bar> <Greek_alpha> : "ᾆ" U1f86
+<Multi_key> <asciitilde> <bar> <greater> <Greek_alpha> : "ᾆ" U1f86
+<Multi_key> <asciitilde> <greater> <bar> <Greek_alpha> : "ᾆ" U1f86
+<dead_iota> <dead_horn> <dead_tilde> <Greek_alpha> : "ᾆ" U1f86
+<dead_iota> <dead_psili> <dead_tilde> <Greek_alpha> : "ᾆ" U1f86
+<dead_iota> <dead_tilde> <dead_horn> <Greek_alpha> : "ᾆ" U1f86
+<dead_iota> <dead_tilde> <dead_psili> <Greek_alpha> : "ᾆ" U1f86
+<dead_horn> <dead_iota> <dead_tilde> <Greek_alpha> : "ᾆ" U1f86
+<dead_psili> <dead_iota> <dead_tilde> <Greek_alpha> : "ᾆ" U1f86
+<dead_horn> <dead_tilde> <dead_iota> <Greek_alpha> : "ᾆ" U1f86
+<dead_psili> <dead_tilde> <dead_iota> <Greek_alpha> : "ᾆ" U1f86
+<dead_tilde> <dead_iota> <dead_horn> <Greek_alpha> : "ᾆ" U1f86
+<dead_tilde> <dead_iota> <dead_psili> <Greek_alpha> : "ᾆ" U1f86
+<dead_tilde> <dead_horn> <dead_iota> <Greek_alpha> : "ᾆ" U1f86
+<dead_tilde> <dead_psili> <dead_iota> <Greek_alpha> : "ᾆ" U1f86
+<Multi_key> <bar> <less> <asciitilde> <Greek_alpha> : "ᾇ" U1f87
+<Multi_key> <bar> <asciitilde> <less> <Greek_alpha> : "ᾇ" U1f87
+<Multi_key> <less> <bar> <asciitilde> <Greek_alpha> : "ᾇ" U1f87
+<Multi_key> <less> <asciitilde> <bar> <Greek_alpha> : "ᾇ" U1f87
+<Multi_key> <asciitilde> <bar> <less> <Greek_alpha> : "ᾇ" U1f87
+<Multi_key> <asciitilde> <less> <bar> <Greek_alpha> : "ᾇ" U1f87
+<dead_iota> <dead_ogonek> <dead_tilde> <Greek_alpha> : "ᾇ" U1f87
+<dead_iota> <dead_dasia> <dead_tilde> <Greek_alpha> : "ᾇ" U1f87
+<dead_iota> <dead_tilde> <dead_ogonek> <Greek_alpha> : "ᾇ" U1f87
+<dead_iota> <dead_tilde> <dead_dasia> <Greek_alpha> : "ᾇ" U1f87
+<dead_ogonek> <dead_iota> <dead_tilde> <Greek_alpha> : "ᾇ" U1f87
+<dead_dasia> <dead_iota> <dead_tilde> <Greek_alpha> : "ᾇ" U1f87
+<dead_ogonek> <dead_tilde> <dead_iota> <Greek_alpha> : "ᾇ" U1f87
+<dead_dasia> <dead_tilde> <dead_iota> <Greek_alpha> : "ᾇ" U1f87
+<dead_tilde> <dead_iota> <dead_ogonek> <Greek_alpha> : "ᾇ" U1f87
+<dead_tilde> <dead_iota> <dead_dasia> <Greek_alpha> : "ᾇ" U1f87
+<dead_tilde> <dead_ogonek> <dead_iota> <Greek_alpha> : "ᾇ" U1f87
+<dead_tilde> <dead_dasia> <dead_iota> <Greek_alpha> : "ᾇ" U1f87
+<Multi_key> <bar> <greater> <Greek_ALPHA> : "ᾈ" U1f88
+<Multi_key> <greater> <bar> <Greek_ALPHA> : "ᾈ" U1f88
+<dead_iota> <dead_horn> <Greek_ALPHA> : "ᾈ" U1f88
+<dead_iota> <dead_psili> <Greek_ALPHA> : "ᾈ" U1f88
+<dead_horn> <dead_iota> <Greek_ALPHA> : "ᾈ" U1f88
+<dead_psili> <dead_iota> <Greek_ALPHA> : "ᾈ" U1f88
+<Multi_key> <bar> <less> <Greek_ALPHA> : "ᾉ" U1f89
+<Multi_key> <less> <bar> <Greek_ALPHA> : "ᾉ" U1f89
+<dead_iota> <dead_ogonek> <Greek_ALPHA> : "ᾉ" U1f89
+<dead_iota> <dead_dasia> <Greek_ALPHA> : "ᾉ" U1f89
+<dead_ogonek> <dead_iota> <Greek_ALPHA> : "ᾉ" U1f89
+<dead_dasia> <dead_iota> <Greek_ALPHA> : "ᾉ" U1f89
+<Multi_key> <bar> <greater> <grave> <Greek_ALPHA> : "ᾊ" U1f8a
+<Multi_key> <bar> <grave> <greater> <Greek_ALPHA> : "ᾊ" U1f8a
+<Multi_key> <greater> <bar> <grave> <Greek_ALPHA> : "ᾊ" U1f8a
+<Multi_key> <greater> <grave> <bar> <Greek_ALPHA> : "ᾊ" U1f8a
+<Multi_key> <grave> <bar> <greater> <Greek_ALPHA> : "ᾊ" U1f8a
+<Multi_key> <grave> <greater> <bar> <Greek_ALPHA> : "ᾊ" U1f8a
+<dead_iota> <dead_horn> <dead_grave> <Greek_ALPHA> : "ᾊ" U1f8a
+<dead_iota> <dead_psili> <dead_grave> <Greek_ALPHA> : "ᾊ" U1f8a
+<dead_iota> <dead_grave> <dead_horn> <Greek_ALPHA> : "ᾊ" U1f8a
+<dead_iota> <dead_grave> <dead_psili> <Greek_ALPHA> : "ᾊ" U1f8a
+<dead_horn> <dead_iota> <dead_grave> <Greek_ALPHA> : "ᾊ" U1f8a
+<dead_psili> <dead_iota> <dead_grave> <Greek_ALPHA> : "ᾊ" U1f8a
+<dead_horn> <dead_grave> <dead_iota> <Greek_ALPHA> : "ᾊ" U1f8a
+<dead_psili> <dead_grave> <dead_iota> <Greek_ALPHA> : "ᾊ" U1f8a
+<dead_grave> <dead_iota> <dead_horn> <Greek_ALPHA> : "ᾊ" U1f8a
+<dead_grave> <dead_iota> <dead_psili> <Greek_ALPHA> : "ᾊ" U1f8a
+<dead_grave> <dead_horn> <dead_iota> <Greek_ALPHA> : "ᾊ" U1f8a
+<dead_grave> <dead_psili> <dead_iota> <Greek_ALPHA> : "ᾊ" U1f8a
+<Multi_key> <bar> <less> <grave> <Greek_ALPHA> : "ᾋ" U1f8b
+<Multi_key> <bar> <grave> <less> <Greek_ALPHA> : "ᾋ" U1f8b
+<Multi_key> <less> <bar> <grave> <Greek_ALPHA> : "ᾋ" U1f8b
+<Multi_key> <less> <grave> <bar> <Greek_ALPHA> : "ᾋ" U1f8b
+<Multi_key> <grave> <bar> <less> <Greek_ALPHA> : "ᾋ" U1f8b
+<Multi_key> <grave> <less> <bar> <Greek_ALPHA> : "ᾋ" U1f8b
+<dead_iota> <dead_ogonek> <dead_grave> <Greek_ALPHA> : "ᾋ" U1f8b
+<dead_iota> <dead_dasia> <dead_grave> <Greek_ALPHA> : "ᾋ" U1f8b
+<dead_iota> <dead_grave> <dead_ogonek> <Greek_ALPHA> : "ᾋ" U1f8b
+<dead_iota> <dead_grave> <dead_dasia> <Greek_ALPHA> : "ᾋ" U1f8b
+<dead_ogonek> <dead_iota> <dead_grave> <Greek_ALPHA> : "ᾋ" U1f8b
+<dead_dasia> <dead_iota> <dead_grave> <Greek_ALPHA> : "ᾋ" U1f8b
+<dead_ogonek> <dead_grave> <dead_iota> <Greek_ALPHA> : "ᾋ" U1f8b
+<dead_dasia> <dead_grave> <dead_iota> <Greek_ALPHA> : "ᾋ" U1f8b
+<dead_grave> <dead_iota> <dead_ogonek> <Greek_ALPHA> : "ᾋ" U1f8b
+<dead_grave> <dead_iota> <dead_dasia> <Greek_ALPHA> : "ᾋ" U1f8b
+<dead_grave> <dead_ogonek> <dead_iota> <Greek_ALPHA> : "ᾋ" U1f8b
+<dead_grave> <dead_dasia> <dead_iota> <Greek_ALPHA> : "ᾋ" U1f8b
+<Multi_key> <bar> <greater> <apostrophe> <Greek_ALPHA> : "ᾌ" U1f8c
+<Multi_key> <bar> <apostrophe> <greater> <Greek_ALPHA> : "ᾌ" U1f8c
+<Multi_key> <greater> <bar> <apostrophe> <Greek_ALPHA> : "ᾌ" U1f8c
+<Multi_key> <greater> <apostrophe> <bar> <Greek_ALPHA> : "ᾌ" U1f8c
+<Multi_key> <apostrophe> <bar> <greater> <Greek_ALPHA> : "ᾌ" U1f8c
+<Multi_key> <apostrophe> <greater> <bar> <Greek_ALPHA> : "ᾌ" U1f8c
+<dead_iota> <dead_horn> <dead_acute> <Greek_ALPHA> : "ᾌ" U1f8c
+<dead_iota> <dead_psili> <dead_acute> <Greek_ALPHA> : "ᾌ" U1f8c
+<dead_iota> <dead_acute> <dead_horn> <Greek_ALPHA> : "ᾌ" U1f8c
+<dead_iota> <dead_acute> <dead_psili> <Greek_ALPHA> : "ᾌ" U1f8c
+<dead_horn> <dead_iota> <dead_acute> <Greek_ALPHA> : "ᾌ" U1f8c
+<dead_psili> <dead_iota> <dead_acute> <Greek_ALPHA> : "ᾌ" U1f8c
+<dead_horn> <dead_acute> <dead_iota> <Greek_ALPHA> : "ᾌ" U1f8c
+<dead_psili> <dead_acute> <dead_iota> <Greek_ALPHA> : "ᾌ" U1f8c
+<dead_acute> <dead_iota> <dead_horn> <Greek_ALPHA> : "ᾌ" U1f8c
+<dead_acute> <dead_iota> <dead_psili> <Greek_ALPHA> : "ᾌ" U1f8c
+<dead_acute> <dead_horn> <dead_iota> <Greek_ALPHA> : "ᾌ" U1f8c
+<dead_acute> <dead_psili> <dead_iota> <Greek_ALPHA> : "ᾌ" U1f8c
+<Multi_key> <bar> <less> <apostrophe> <Greek_ALPHA> : "á¾" U1f8d
+<Multi_key> <bar> <apostrophe> <less> <Greek_ALPHA> : "á¾" U1f8d
+<Multi_key> <less> <bar> <apostrophe> <Greek_ALPHA> : "á¾" U1f8d
+<Multi_key> <less> <apostrophe> <bar> <Greek_ALPHA> : "á¾" U1f8d
+<Multi_key> <apostrophe> <bar> <less> <Greek_ALPHA> : "á¾" U1f8d
+<Multi_key> <apostrophe> <less> <bar> <Greek_ALPHA> : "á¾" U1f8d
+<dead_iota> <dead_ogonek> <dead_acute> <Greek_ALPHA> : "á¾" U1f8d
+<dead_iota> <dead_dasia> <dead_acute> <Greek_ALPHA> : "á¾" U1f8d
+<dead_iota> <dead_acute> <dead_ogonek> <Greek_ALPHA> : "á¾" U1f8d
+<dead_iota> <dead_acute> <dead_dasia> <Greek_ALPHA> : "á¾" U1f8d
+<dead_ogonek> <dead_iota> <dead_acute> <Greek_ALPHA> : "á¾" U1f8d
+<dead_dasia> <dead_iota> <dead_acute> <Greek_ALPHA> : "á¾" U1f8d
+<dead_ogonek> <dead_acute> <dead_iota> <Greek_ALPHA> : "á¾" U1f8d
+<dead_dasia> <dead_acute> <dead_iota> <Greek_ALPHA> : "á¾" U1f8d
+<dead_acute> <dead_iota> <dead_ogonek> <Greek_ALPHA> : "á¾" U1f8d
+<dead_acute> <dead_iota> <dead_dasia> <Greek_ALPHA> : "á¾" U1f8d
+<dead_acute> <dead_ogonek> <dead_iota> <Greek_ALPHA> : "á¾" U1f8d
+<dead_acute> <dead_dasia> <dead_iota> <Greek_ALPHA> : "á¾" U1f8d
+<Multi_key> <bar> <greater> <asciitilde> <Greek_ALPHA> : "ᾎ" U1f8e
+<Multi_key> <bar> <asciitilde> <greater> <Greek_ALPHA> : "ᾎ" U1f8e
+<Multi_key> <greater> <bar> <asciitilde> <Greek_ALPHA> : "ᾎ" U1f8e
+<Multi_key> <greater> <asciitilde> <bar> <Greek_ALPHA> : "ᾎ" U1f8e
+<Multi_key> <asciitilde> <bar> <greater> <Greek_ALPHA> : "ᾎ" U1f8e
+<Multi_key> <asciitilde> <greater> <bar> <Greek_ALPHA> : "ᾎ" U1f8e
+<dead_iota> <dead_horn> <dead_tilde> <Greek_ALPHA> : "ᾎ" U1f8e
+<dead_iota> <dead_psili> <dead_tilde> <Greek_ALPHA> : "ᾎ" U1f8e
+<dead_iota> <dead_tilde> <dead_horn> <Greek_ALPHA> : "ᾎ" U1f8e
+<dead_iota> <dead_tilde> <dead_psili> <Greek_ALPHA> : "ᾎ" U1f8e
+<dead_horn> <dead_iota> <dead_tilde> <Greek_ALPHA> : "ᾎ" U1f8e
+<dead_psili> <dead_iota> <dead_tilde> <Greek_ALPHA> : "ᾎ" U1f8e
+<dead_horn> <dead_tilde> <dead_iota> <Greek_ALPHA> : "ᾎ" U1f8e
+<dead_psili> <dead_tilde> <dead_iota> <Greek_ALPHA> : "ᾎ" U1f8e
+<dead_tilde> <dead_iota> <dead_horn> <Greek_ALPHA> : "ᾎ" U1f8e
+<dead_tilde> <dead_iota> <dead_psili> <Greek_ALPHA> : "ᾎ" U1f8e
+<dead_tilde> <dead_horn> <dead_iota> <Greek_ALPHA> : "ᾎ" U1f8e
+<dead_tilde> <dead_psili> <dead_iota> <Greek_ALPHA> : "ᾎ" U1f8e
+<Multi_key> <bar> <less> <asciitilde> <Greek_ALPHA> : "á¾" U1f8f
+<Multi_key> <bar> <asciitilde> <less> <Greek_ALPHA> : "á¾" U1f8f
+<Multi_key> <less> <bar> <asciitilde> <Greek_ALPHA> : "á¾" U1f8f
+<Multi_key> <less> <asciitilde> <bar> <Greek_ALPHA> : "á¾" U1f8f
+<Multi_key> <asciitilde> <bar> <less> <Greek_ALPHA> : "á¾" U1f8f
+<Multi_key> <asciitilde> <less> <bar> <Greek_ALPHA> : "á¾" U1f8f
+<dead_iota> <dead_ogonek> <dead_tilde> <Greek_ALPHA> : "á¾" U1f8f
+<dead_iota> <dead_dasia> <dead_tilde> <Greek_ALPHA> : "á¾" U1f8f
+<dead_iota> <dead_tilde> <dead_ogonek> <Greek_ALPHA> : "á¾" U1f8f
+<dead_iota> <dead_tilde> <dead_dasia> <Greek_ALPHA> : "á¾" U1f8f
+<dead_ogonek> <dead_iota> <dead_tilde> <Greek_ALPHA> : "á¾" U1f8f
+<dead_dasia> <dead_iota> <dead_tilde> <Greek_ALPHA> : "á¾" U1f8f
+<dead_ogonek> <dead_tilde> <dead_iota> <Greek_ALPHA> : "á¾" U1f8f
+<dead_dasia> <dead_tilde> <dead_iota> <Greek_ALPHA> : "á¾" U1f8f
+<dead_tilde> <dead_iota> <dead_ogonek> <Greek_ALPHA> : "á¾" U1f8f
+<dead_tilde> <dead_iota> <dead_dasia> <Greek_ALPHA> : "á¾" U1f8f
+<dead_tilde> <dead_ogonek> <dead_iota> <Greek_ALPHA> : "á¾" U1f8f
+<dead_tilde> <dead_dasia> <dead_iota> <Greek_ALPHA> : "á¾" U1f8f
+<Multi_key> <bar> <greater> <Greek_eta> : "á¾" U1f90
+<Multi_key> <greater> <bar> <Greek_eta> : "á¾" U1f90
+<dead_iota> <dead_horn> <Greek_eta> : "á¾" U1f90
+<dead_iota> <dead_psili> <Greek_eta> : "á¾" U1f90
+<dead_horn> <dead_iota> <Greek_eta> : "á¾" U1f90
+<dead_psili> <dead_iota> <Greek_eta> : "á¾" U1f90
+<Multi_key> <bar> <less> <Greek_eta> : "ᾑ" U1f91
+<Multi_key> <less> <bar> <Greek_eta> : "ᾑ" U1f91
+<dead_iota> <dead_ogonek> <Greek_eta> : "ᾑ" U1f91
+<dead_iota> <dead_dasia> <Greek_eta> : "ᾑ" U1f91
+<dead_ogonek> <dead_iota> <Greek_eta> : "ᾑ" U1f91
+<dead_dasia> <dead_iota> <Greek_eta> : "ᾑ" U1f91
+<Multi_key> <bar> <greater> <grave> <Greek_eta> : "á¾’" U1f92
+<Multi_key> <bar> <grave> <greater> <Greek_eta> : "á¾’" U1f92
+<Multi_key> <greater> <bar> <grave> <Greek_eta> : "á¾’" U1f92
+<Multi_key> <greater> <grave> <bar> <Greek_eta> : "á¾’" U1f92
+<Multi_key> <grave> <bar> <greater> <Greek_eta> : "á¾’" U1f92
+<Multi_key> <grave> <greater> <bar> <Greek_eta> : "á¾’" U1f92
+<dead_iota> <dead_horn> <dead_grave> <Greek_eta> : "á¾’" U1f92
+<dead_iota> <dead_psili> <dead_grave> <Greek_eta> : "á¾’" U1f92
+<dead_iota> <dead_grave> <dead_horn> <Greek_eta> : "á¾’" U1f92
+<dead_iota> <dead_grave> <dead_psili> <Greek_eta> : "á¾’" U1f92
+<dead_horn> <dead_iota> <dead_grave> <Greek_eta> : "á¾’" U1f92
+<dead_psili> <dead_iota> <dead_grave> <Greek_eta> : "á¾’" U1f92
+<dead_horn> <dead_grave> <dead_iota> <Greek_eta> : "á¾’" U1f92
+<dead_psili> <dead_grave> <dead_iota> <Greek_eta> : "á¾’" U1f92
+<dead_grave> <dead_iota> <dead_horn> <Greek_eta> : "á¾’" U1f92
+<dead_grave> <dead_iota> <dead_psili> <Greek_eta> : "á¾’" U1f92
+<dead_grave> <dead_horn> <dead_iota> <Greek_eta> : "á¾’" U1f92
+<dead_grave> <dead_psili> <dead_iota> <Greek_eta> : "á¾’" U1f92
+<Multi_key> <bar> <less> <grave> <Greek_eta> : "ᾓ" U1f93
+<Multi_key> <bar> <grave> <less> <Greek_eta> : "ᾓ" U1f93
+<Multi_key> <less> <bar> <grave> <Greek_eta> : "ᾓ" U1f93
+<Multi_key> <less> <grave> <bar> <Greek_eta> : "ᾓ" U1f93
+<Multi_key> <grave> <bar> <less> <Greek_eta> : "ᾓ" U1f93
+<Multi_key> <grave> <less> <bar> <Greek_eta> : "ᾓ" U1f93
+<dead_iota> <dead_ogonek> <dead_grave> <Greek_eta> : "ᾓ" U1f93
+<dead_iota> <dead_dasia> <dead_grave> <Greek_eta> : "ᾓ" U1f93
+<dead_iota> <dead_grave> <dead_ogonek> <Greek_eta> : "ᾓ" U1f93
+<dead_iota> <dead_grave> <dead_dasia> <Greek_eta> : "ᾓ" U1f93
+<dead_ogonek> <dead_iota> <dead_grave> <Greek_eta> : "ᾓ" U1f93
+<dead_dasia> <dead_iota> <dead_grave> <Greek_eta> : "ᾓ" U1f93
+<dead_ogonek> <dead_grave> <dead_iota> <Greek_eta> : "ᾓ" U1f93
+<dead_dasia> <dead_grave> <dead_iota> <Greek_eta> : "ᾓ" U1f93
+<dead_grave> <dead_iota> <dead_ogonek> <Greek_eta> : "ᾓ" U1f93
+<dead_grave> <dead_iota> <dead_dasia> <Greek_eta> : "ᾓ" U1f93
+<dead_grave> <dead_ogonek> <dead_iota> <Greek_eta> : "ᾓ" U1f93
+<dead_grave> <dead_dasia> <dead_iota> <Greek_eta> : "ᾓ" U1f93
+<Multi_key> <bar> <greater> <apostrophe> <Greek_eta> : "á¾”" U1f94
+<Multi_key> <bar> <apostrophe> <greater> <Greek_eta> : "á¾”" U1f94
+<Multi_key> <greater> <bar> <apostrophe> <Greek_eta> : "á¾”" U1f94
+<Multi_key> <greater> <apostrophe> <bar> <Greek_eta> : "á¾”" U1f94
+<Multi_key> <apostrophe> <bar> <greater> <Greek_eta> : "á¾”" U1f94
+<Multi_key> <apostrophe> <greater> <bar> <Greek_eta> : "á¾”" U1f94
+<dead_iota> <dead_horn> <dead_acute> <Greek_eta> : "á¾”" U1f94
+<dead_iota> <dead_psili> <dead_acute> <Greek_eta> : "á¾”" U1f94
+<dead_iota> <dead_acute> <dead_horn> <Greek_eta> : "á¾”" U1f94
+<dead_iota> <dead_acute> <dead_psili> <Greek_eta> : "á¾”" U1f94
+<dead_horn> <dead_iota> <dead_acute> <Greek_eta> : "á¾”" U1f94
+<dead_psili> <dead_iota> <dead_acute> <Greek_eta> : "á¾”" U1f94
+<dead_horn> <dead_acute> <dead_iota> <Greek_eta> : "á¾”" U1f94
+<dead_psili> <dead_acute> <dead_iota> <Greek_eta> : "á¾”" U1f94
+<dead_acute> <dead_iota> <dead_horn> <Greek_eta> : "á¾”" U1f94
+<dead_acute> <dead_iota> <dead_psili> <Greek_eta> : "á¾”" U1f94
+<dead_acute> <dead_horn> <dead_iota> <Greek_eta> : "á¾”" U1f94
+<dead_acute> <dead_psili> <dead_iota> <Greek_eta> : "á¾”" U1f94
+<Multi_key> <bar> <less> <apostrophe> <Greek_eta> : "ᾕ" U1f95
+<Multi_key> <bar> <apostrophe> <less> <Greek_eta> : "ᾕ" U1f95
+<Multi_key> <less> <bar> <apostrophe> <Greek_eta> : "ᾕ" U1f95
+<Multi_key> <less> <apostrophe> <bar> <Greek_eta> : "ᾕ" U1f95
+<Multi_key> <apostrophe> <bar> <less> <Greek_eta> : "ᾕ" U1f95
+<Multi_key> <apostrophe> <less> <bar> <Greek_eta> : "ᾕ" U1f95
+<dead_iota> <dead_ogonek> <dead_acute> <Greek_eta> : "ᾕ" U1f95
+<dead_iota> <dead_dasia> <dead_acute> <Greek_eta> : "ᾕ" U1f95
+<dead_iota> <dead_acute> <dead_ogonek> <Greek_eta> : "ᾕ" U1f95
+<dead_iota> <dead_acute> <dead_dasia> <Greek_eta> : "ᾕ" U1f95
+<dead_ogonek> <dead_iota> <dead_acute> <Greek_eta> : "ᾕ" U1f95
+<dead_dasia> <dead_iota> <dead_acute> <Greek_eta> : "ᾕ" U1f95
+<dead_ogonek> <dead_acute> <dead_iota> <Greek_eta> : "ᾕ" U1f95
+<dead_dasia> <dead_acute> <dead_iota> <Greek_eta> : "ᾕ" U1f95
+<dead_acute> <dead_iota> <dead_ogonek> <Greek_eta> : "ᾕ" U1f95
+<dead_acute> <dead_iota> <dead_dasia> <Greek_eta> : "ᾕ" U1f95
+<dead_acute> <dead_ogonek> <dead_iota> <Greek_eta> : "ᾕ" U1f95
+<dead_acute> <dead_dasia> <dead_iota> <Greek_eta> : "ᾕ" U1f95
+<Multi_key> <bar> <greater> <asciitilde> <Greek_eta> : "á¾–" U1f96
+<Multi_key> <bar> <asciitilde> <greater> <Greek_eta> : "á¾–" U1f96
+<Multi_key> <greater> <bar> <asciitilde> <Greek_eta> : "á¾–" U1f96
+<Multi_key> <greater> <asciitilde> <bar> <Greek_eta> : "á¾–" U1f96
+<Multi_key> <asciitilde> <bar> <greater> <Greek_eta> : "á¾–" U1f96
+<Multi_key> <asciitilde> <greater> <bar> <Greek_eta> : "á¾–" U1f96
+<dead_iota> <dead_horn> <dead_tilde> <Greek_eta> : "á¾–" U1f96
+<dead_iota> <dead_psili> <dead_tilde> <Greek_eta> : "á¾–" U1f96
+<dead_iota> <dead_tilde> <dead_horn> <Greek_eta> : "á¾–" U1f96
+<dead_iota> <dead_tilde> <dead_psili> <Greek_eta> : "á¾–" U1f96
+<dead_horn> <dead_iota> <dead_tilde> <Greek_eta> : "á¾–" U1f96
+<dead_psili> <dead_iota> <dead_tilde> <Greek_eta> : "á¾–" U1f96
+<dead_horn> <dead_tilde> <dead_iota> <Greek_eta> : "á¾–" U1f96
+<dead_psili> <dead_tilde> <dead_iota> <Greek_eta> : "á¾–" U1f96
+<dead_tilde> <dead_iota> <dead_horn> <Greek_eta> : "á¾–" U1f96
+<dead_tilde> <dead_iota> <dead_psili> <Greek_eta> : "á¾–" U1f96
+<dead_tilde> <dead_horn> <dead_iota> <Greek_eta> : "á¾–" U1f96
+<dead_tilde> <dead_psili> <dead_iota> <Greek_eta> : "á¾–" U1f96
+<Multi_key> <bar> <less> <asciitilde> <Greek_eta> : "á¾—" U1f97
+<Multi_key> <bar> <asciitilde> <less> <Greek_eta> : "á¾—" U1f97
+<Multi_key> <less> <bar> <asciitilde> <Greek_eta> : "á¾—" U1f97
+<Multi_key> <less> <asciitilde> <bar> <Greek_eta> : "á¾—" U1f97
+<Multi_key> <asciitilde> <bar> <less> <Greek_eta> : "á¾—" U1f97
+<Multi_key> <asciitilde> <less> <bar> <Greek_eta> : "á¾—" U1f97
+<dead_iota> <dead_ogonek> <dead_tilde> <Greek_eta> : "á¾—" U1f97
+<dead_iota> <dead_dasia> <dead_tilde> <Greek_eta> : "á¾—" U1f97
+<dead_iota> <dead_tilde> <dead_ogonek> <Greek_eta> : "á¾—" U1f97
+<dead_iota> <dead_tilde> <dead_dasia> <Greek_eta> : "á¾—" U1f97
+<dead_ogonek> <dead_iota> <dead_tilde> <Greek_eta> : "á¾—" U1f97
+<dead_dasia> <dead_iota> <dead_tilde> <Greek_eta> : "á¾—" U1f97
+<dead_ogonek> <dead_tilde> <dead_iota> <Greek_eta> : "á¾—" U1f97
+<dead_dasia> <dead_tilde> <dead_iota> <Greek_eta> : "á¾—" U1f97
+<dead_tilde> <dead_iota> <dead_ogonek> <Greek_eta> : "á¾—" U1f97
+<dead_tilde> <dead_iota> <dead_dasia> <Greek_eta> : "á¾—" U1f97
+<dead_tilde> <dead_ogonek> <dead_iota> <Greek_eta> : "á¾—" U1f97
+<dead_tilde> <dead_dasia> <dead_iota> <Greek_eta> : "á¾—" U1f97
+<Multi_key> <bar> <greater> <Greek_ETA> : "ᾘ" U1f98
+<Multi_key> <greater> <bar> <Greek_ETA> : "ᾘ" U1f98
+<dead_iota> <dead_horn> <Greek_ETA> : "ᾘ" U1f98
+<dead_iota> <dead_psili> <Greek_ETA> : "ᾘ" U1f98
+<dead_horn> <dead_iota> <Greek_ETA> : "ᾘ" U1f98
+<dead_psili> <dead_iota> <Greek_ETA> : "ᾘ" U1f98
+<Multi_key> <bar> <less> <Greek_ETA> : "á¾™" U1f99
+<Multi_key> <less> <bar> <Greek_ETA> : "á¾™" U1f99
+<dead_iota> <dead_ogonek> <Greek_ETA> : "á¾™" U1f99
+<dead_iota> <dead_dasia> <Greek_ETA> : "á¾™" U1f99
+<dead_ogonek> <dead_iota> <Greek_ETA> : "á¾™" U1f99
+<dead_dasia> <dead_iota> <Greek_ETA> : "á¾™" U1f99
+<Multi_key> <bar> <greater> <grave> <Greek_ETA> : "ᾚ" U1f9a
+<Multi_key> <bar> <grave> <greater> <Greek_ETA> : "ᾚ" U1f9a
+<Multi_key> <greater> <bar> <grave> <Greek_ETA> : "ᾚ" U1f9a
+<Multi_key> <greater> <grave> <bar> <Greek_ETA> : "ᾚ" U1f9a
+<Multi_key> <grave> <bar> <greater> <Greek_ETA> : "ᾚ" U1f9a
+<Multi_key> <grave> <greater> <bar> <Greek_ETA> : "ᾚ" U1f9a
+<dead_iota> <dead_horn> <dead_grave> <Greek_ETA> : "ᾚ" U1f9a
+<dead_iota> <dead_psili> <dead_grave> <Greek_ETA> : "ᾚ" U1f9a
+<dead_iota> <dead_grave> <dead_horn> <Greek_ETA> : "ᾚ" U1f9a
+<dead_iota> <dead_grave> <dead_psili> <Greek_ETA> : "ᾚ" U1f9a
+<dead_horn> <dead_iota> <dead_grave> <Greek_ETA> : "ᾚ" U1f9a
+<dead_psili> <dead_iota> <dead_grave> <Greek_ETA> : "ᾚ" U1f9a
+<dead_horn> <dead_grave> <dead_iota> <Greek_ETA> : "ᾚ" U1f9a
+<dead_psili> <dead_grave> <dead_iota> <Greek_ETA> : "ᾚ" U1f9a
+<dead_grave> <dead_iota> <dead_horn> <Greek_ETA> : "ᾚ" U1f9a
+<dead_grave> <dead_iota> <dead_psili> <Greek_ETA> : "ᾚ" U1f9a
+<dead_grave> <dead_horn> <dead_iota> <Greek_ETA> : "ᾚ" U1f9a
+<dead_grave> <dead_psili> <dead_iota> <Greek_ETA> : "ᾚ" U1f9a
+<Multi_key> <bar> <less> <grave> <Greek_ETA> : "á¾›" U1f9b
+<Multi_key> <bar> <grave> <less> <Greek_ETA> : "á¾›" U1f9b
+<Multi_key> <less> <bar> <grave> <Greek_ETA> : "á¾›" U1f9b
+<Multi_key> <less> <grave> <bar> <Greek_ETA> : "á¾›" U1f9b
+<Multi_key> <grave> <bar> <less> <Greek_ETA> : "á¾›" U1f9b
+<Multi_key> <grave> <less> <bar> <Greek_ETA> : "á¾›" U1f9b
+<dead_iota> <dead_ogonek> <dead_grave> <Greek_ETA> : "á¾›" U1f9b
+<dead_iota> <dead_dasia> <dead_grave> <Greek_ETA> : "á¾›" U1f9b
+<dead_iota> <dead_grave> <dead_ogonek> <Greek_ETA> : "á¾›" U1f9b
+<dead_iota> <dead_grave> <dead_dasia> <Greek_ETA> : "á¾›" U1f9b
+<dead_ogonek> <dead_iota> <dead_grave> <Greek_ETA> : "á¾›" U1f9b
+<dead_dasia> <dead_iota> <dead_grave> <Greek_ETA> : "á¾›" U1f9b
+<dead_ogonek> <dead_grave> <dead_iota> <Greek_ETA> : "á¾›" U1f9b
+<dead_dasia> <dead_grave> <dead_iota> <Greek_ETA> : "á¾›" U1f9b
+<dead_grave> <dead_iota> <dead_ogonek> <Greek_ETA> : "á¾›" U1f9b
+<dead_grave> <dead_iota> <dead_dasia> <Greek_ETA> : "á¾›" U1f9b
+<dead_grave> <dead_ogonek> <dead_iota> <Greek_ETA> : "á¾›" U1f9b
+<dead_grave> <dead_dasia> <dead_iota> <Greek_ETA> : "á¾›" U1f9b
+<Multi_key> <bar> <greater> <apostrophe> <Greek_ETA> : "ᾜ" U1f9c
+<Multi_key> <bar> <apostrophe> <greater> <Greek_ETA> : "ᾜ" U1f9c
+<Multi_key> <greater> <bar> <apostrophe> <Greek_ETA> : "ᾜ" U1f9c
+<Multi_key> <greater> <apostrophe> <bar> <Greek_ETA> : "ᾜ" U1f9c
+<Multi_key> <apostrophe> <bar> <greater> <Greek_ETA> : "ᾜ" U1f9c
+<Multi_key> <apostrophe> <greater> <bar> <Greek_ETA> : "ᾜ" U1f9c
+<dead_iota> <dead_horn> <dead_acute> <Greek_ETA> : "ᾜ" U1f9c
+<dead_iota> <dead_psili> <dead_acute> <Greek_ETA> : "ᾜ" U1f9c
+<dead_iota> <dead_acute> <dead_horn> <Greek_ETA> : "ᾜ" U1f9c
+<dead_iota> <dead_acute> <dead_psili> <Greek_ETA> : "ᾜ" U1f9c
+<dead_horn> <dead_iota> <dead_acute> <Greek_ETA> : "ᾜ" U1f9c
+<dead_psili> <dead_iota> <dead_acute> <Greek_ETA> : "ᾜ" U1f9c
+<dead_horn> <dead_acute> <dead_iota> <Greek_ETA> : "ᾜ" U1f9c
+<dead_psili> <dead_acute> <dead_iota> <Greek_ETA> : "ᾜ" U1f9c
+<dead_acute> <dead_iota> <dead_horn> <Greek_ETA> : "ᾜ" U1f9c
+<dead_acute> <dead_iota> <dead_psili> <Greek_ETA> : "ᾜ" U1f9c
+<dead_acute> <dead_horn> <dead_iota> <Greek_ETA> : "ᾜ" U1f9c
+<dead_acute> <dead_psili> <dead_iota> <Greek_ETA> : "ᾜ" U1f9c
+<Multi_key> <bar> <less> <apostrophe> <Greek_ETA> : "á¾" U1f9d
+<Multi_key> <bar> <apostrophe> <less> <Greek_ETA> : "á¾" U1f9d
+<Multi_key> <less> <bar> <apostrophe> <Greek_ETA> : "á¾" U1f9d
+<Multi_key> <less> <apostrophe> <bar> <Greek_ETA> : "á¾" U1f9d
+<Multi_key> <apostrophe> <bar> <less> <Greek_ETA> : "á¾" U1f9d
+<Multi_key> <apostrophe> <less> <bar> <Greek_ETA> : "á¾" U1f9d
+<dead_iota> <dead_ogonek> <dead_acute> <Greek_ETA> : "á¾" U1f9d
+<dead_iota> <dead_dasia> <dead_acute> <Greek_ETA> : "á¾" U1f9d
+<dead_iota> <dead_acute> <dead_ogonek> <Greek_ETA> : "á¾" U1f9d
+<dead_iota> <dead_acute> <dead_dasia> <Greek_ETA> : "á¾" U1f9d
+<dead_ogonek> <dead_iota> <dead_acute> <Greek_ETA> : "á¾" U1f9d
+<dead_dasia> <dead_iota> <dead_acute> <Greek_ETA> : "á¾" U1f9d
+<dead_ogonek> <dead_acute> <dead_iota> <Greek_ETA> : "á¾" U1f9d
+<dead_dasia> <dead_acute> <dead_iota> <Greek_ETA> : "á¾" U1f9d
+<dead_acute> <dead_iota> <dead_ogonek> <Greek_ETA> : "á¾" U1f9d
+<dead_acute> <dead_iota> <dead_dasia> <Greek_ETA> : "á¾" U1f9d
+<dead_acute> <dead_ogonek> <dead_iota> <Greek_ETA> : "á¾" U1f9d
+<dead_acute> <dead_dasia> <dead_iota> <Greek_ETA> : "á¾" U1f9d
+<Multi_key> <bar> <greater> <asciitilde> <Greek_ETA> : "ᾞ" U1f9e
+<Multi_key> <bar> <asciitilde> <greater> <Greek_ETA> : "ᾞ" U1f9e
+<Multi_key> <greater> <bar> <asciitilde> <Greek_ETA> : "ᾞ" U1f9e
+<Multi_key> <greater> <asciitilde> <bar> <Greek_ETA> : "ᾞ" U1f9e
+<Multi_key> <asciitilde> <bar> <greater> <Greek_ETA> : "ᾞ" U1f9e
+<Multi_key> <asciitilde> <greater> <bar> <Greek_ETA> : "ᾞ" U1f9e
+<dead_iota> <dead_horn> <dead_tilde> <Greek_ETA> : "ᾞ" U1f9e
+<dead_iota> <dead_psili> <dead_tilde> <Greek_ETA> : "ᾞ" U1f9e
+<dead_iota> <dead_tilde> <dead_horn> <Greek_ETA> : "ᾞ" U1f9e
+<dead_iota> <dead_tilde> <dead_psili> <Greek_ETA> : "ᾞ" U1f9e
+<dead_horn> <dead_iota> <dead_tilde> <Greek_ETA> : "ᾞ" U1f9e
+<dead_psili> <dead_iota> <dead_tilde> <Greek_ETA> : "ᾞ" U1f9e
+<dead_horn> <dead_tilde> <dead_iota> <Greek_ETA> : "ᾞ" U1f9e
+<dead_psili> <dead_tilde> <dead_iota> <Greek_ETA> : "ᾞ" U1f9e
+<dead_tilde> <dead_iota> <dead_horn> <Greek_ETA> : "ᾞ" U1f9e
+<dead_tilde> <dead_iota> <dead_psili> <Greek_ETA> : "ᾞ" U1f9e
+<dead_tilde> <dead_horn> <dead_iota> <Greek_ETA> : "ᾞ" U1f9e
+<dead_tilde> <dead_psili> <dead_iota> <Greek_ETA> : "ᾞ" U1f9e
+<Multi_key> <bar> <less> <asciitilde> <Greek_ETA> : "ᾟ" U1f9f
+<Multi_key> <bar> <asciitilde> <less> <Greek_ETA> : "ᾟ" U1f9f
+<Multi_key> <less> <bar> <asciitilde> <Greek_ETA> : "ᾟ" U1f9f
+<Multi_key> <less> <asciitilde> <bar> <Greek_ETA> : "ᾟ" U1f9f
+<Multi_key> <asciitilde> <bar> <less> <Greek_ETA> : "ᾟ" U1f9f
+<Multi_key> <asciitilde> <less> <bar> <Greek_ETA> : "ᾟ" U1f9f
+<dead_iota> <dead_ogonek> <dead_tilde> <Greek_ETA> : "ᾟ" U1f9f
+<dead_iota> <dead_dasia> <dead_tilde> <Greek_ETA> : "ᾟ" U1f9f
+<dead_iota> <dead_tilde> <dead_ogonek> <Greek_ETA> : "ᾟ" U1f9f
+<dead_iota> <dead_tilde> <dead_dasia> <Greek_ETA> : "ᾟ" U1f9f
+<dead_ogonek> <dead_iota> <dead_tilde> <Greek_ETA> : "ᾟ" U1f9f
+<dead_dasia> <dead_iota> <dead_tilde> <Greek_ETA> : "ᾟ" U1f9f
+<dead_ogonek> <dead_tilde> <dead_iota> <Greek_ETA> : "ᾟ" U1f9f
+<dead_dasia> <dead_tilde> <dead_iota> <Greek_ETA> : "ᾟ" U1f9f
+<dead_tilde> <dead_iota> <dead_ogonek> <Greek_ETA> : "ᾟ" U1f9f
+<dead_tilde> <dead_iota> <dead_dasia> <Greek_ETA> : "ᾟ" U1f9f
+<dead_tilde> <dead_ogonek> <dead_iota> <Greek_ETA> : "ᾟ" U1f9f
+<dead_tilde> <dead_dasia> <dead_iota> <Greek_ETA> : "ᾟ" U1f9f
+<Multi_key> <bar> <greater> <Greek_omega> : "á¾ " U1fa0
+<Multi_key> <greater> <bar> <Greek_omega> : "á¾ " U1fa0
+<dead_iota> <dead_horn> <Greek_omega> : "á¾ " U1fa0
+<dead_iota> <dead_psili> <Greek_omega> : "á¾ " U1fa0
+<dead_horn> <dead_iota> <Greek_omega> : "á¾ " U1fa0
+<dead_psili> <dead_iota> <Greek_omega> : "á¾ " U1fa0
+<Multi_key> <bar> <less> <Greek_omega> : "ᾡ" U1fa1
+<Multi_key> <less> <bar> <Greek_omega> : "ᾡ" U1fa1
+<dead_iota> <dead_ogonek> <Greek_omega> : "ᾡ" U1fa1
+<dead_iota> <dead_dasia> <Greek_omega> : "ᾡ" U1fa1
+<dead_ogonek> <dead_iota> <Greek_omega> : "ᾡ" U1fa1
+<dead_dasia> <dead_iota> <Greek_omega> : "ᾡ" U1fa1
+<Multi_key> <bar> <greater> <grave> <Greek_omega> : "á¾¢" U1fa2
+<Multi_key> <bar> <grave> <greater> <Greek_omega> : "á¾¢" U1fa2
+<Multi_key> <greater> <bar> <grave> <Greek_omega> : "á¾¢" U1fa2
+<Multi_key> <greater> <grave> <bar> <Greek_omega> : "á¾¢" U1fa2
+<Multi_key> <grave> <bar> <greater> <Greek_omega> : "á¾¢" U1fa2
+<Multi_key> <grave> <greater> <bar> <Greek_omega> : "á¾¢" U1fa2
+<dead_iota> <dead_horn> <dead_grave> <Greek_omega> : "á¾¢" U1fa2
+<dead_iota> <dead_psili> <dead_grave> <Greek_omega> : "á¾¢" U1fa2
+<dead_iota> <dead_grave> <dead_horn> <Greek_omega> : "á¾¢" U1fa2
+<dead_iota> <dead_grave> <dead_psili> <Greek_omega> : "á¾¢" U1fa2
+<dead_horn> <dead_iota> <dead_grave> <Greek_omega> : "á¾¢" U1fa2
+<dead_psili> <dead_iota> <dead_grave> <Greek_omega> : "á¾¢" U1fa2
+<dead_horn> <dead_grave> <dead_iota> <Greek_omega> : "á¾¢" U1fa2
+<dead_psili> <dead_grave> <dead_iota> <Greek_omega> : "á¾¢" U1fa2
+<dead_grave> <dead_iota> <dead_horn> <Greek_omega> : "á¾¢" U1fa2
+<dead_grave> <dead_iota> <dead_psili> <Greek_omega> : "á¾¢" U1fa2
+<dead_grave> <dead_horn> <dead_iota> <Greek_omega> : "á¾¢" U1fa2
+<dead_grave> <dead_psili> <dead_iota> <Greek_omega> : "á¾¢" U1fa2
+<Multi_key> <bar> <less> <grave> <Greek_omega> : "á¾£" U1fa3
+<Multi_key> <bar> <grave> <less> <Greek_omega> : "á¾£" U1fa3
+<Multi_key> <less> <bar> <grave> <Greek_omega> : "á¾£" U1fa3
+<Multi_key> <less> <grave> <bar> <Greek_omega> : "á¾£" U1fa3
+<Multi_key> <grave> <bar> <less> <Greek_omega> : "á¾£" U1fa3
+<Multi_key> <grave> <less> <bar> <Greek_omega> : "á¾£" U1fa3
+<dead_iota> <dead_ogonek> <dead_grave> <Greek_omega> : "á¾£" U1fa3
+<dead_iota> <dead_dasia> <dead_grave> <Greek_omega> : "á¾£" U1fa3
+<dead_iota> <dead_grave> <dead_ogonek> <Greek_omega> : "á¾£" U1fa3
+<dead_iota> <dead_grave> <dead_dasia> <Greek_omega> : "á¾£" U1fa3
+<dead_ogonek> <dead_iota> <dead_grave> <Greek_omega> : "á¾£" U1fa3
+<dead_dasia> <dead_iota> <dead_grave> <Greek_omega> : "á¾£" U1fa3
+<dead_ogonek> <dead_grave> <dead_iota> <Greek_omega> : "á¾£" U1fa3
+<dead_dasia> <dead_grave> <dead_iota> <Greek_omega> : "á¾£" U1fa3
+<dead_grave> <dead_iota> <dead_ogonek> <Greek_omega> : "á¾£" U1fa3
+<dead_grave> <dead_iota> <dead_dasia> <Greek_omega> : "á¾£" U1fa3
+<dead_grave> <dead_ogonek> <dead_iota> <Greek_omega> : "á¾£" U1fa3
+<dead_grave> <dead_dasia> <dead_iota> <Greek_omega> : "á¾£" U1fa3
+<Multi_key> <bar> <greater> <apostrophe> <Greek_omega> : "ᾤ" U1fa4
+<Multi_key> <bar> <apostrophe> <greater> <Greek_omega> : "ᾤ" U1fa4
+<Multi_key> <greater> <bar> <apostrophe> <Greek_omega> : "ᾤ" U1fa4
+<Multi_key> <greater> <apostrophe> <bar> <Greek_omega> : "ᾤ" U1fa4
+<Multi_key> <apostrophe> <bar> <greater> <Greek_omega> : "ᾤ" U1fa4
+<Multi_key> <apostrophe> <greater> <bar> <Greek_omega> : "ᾤ" U1fa4
+<dead_iota> <dead_horn> <dead_acute> <Greek_omega> : "ᾤ" U1fa4
+<dead_iota> <dead_psili> <dead_acute> <Greek_omega> : "ᾤ" U1fa4
+<dead_iota> <dead_acute> <dead_horn> <Greek_omega> : "ᾤ" U1fa4
+<dead_iota> <dead_acute> <dead_psili> <Greek_omega> : "ᾤ" U1fa4
+<dead_horn> <dead_iota> <dead_acute> <Greek_omega> : "ᾤ" U1fa4
+<dead_psili> <dead_iota> <dead_acute> <Greek_omega> : "ᾤ" U1fa4
+<dead_horn> <dead_acute> <dead_iota> <Greek_omega> : "ᾤ" U1fa4
+<dead_psili> <dead_acute> <dead_iota> <Greek_omega> : "ᾤ" U1fa4
+<dead_acute> <dead_iota> <dead_horn> <Greek_omega> : "ᾤ" U1fa4
+<dead_acute> <dead_iota> <dead_psili> <Greek_omega> : "ᾤ" U1fa4
+<dead_acute> <dead_horn> <dead_iota> <Greek_omega> : "ᾤ" U1fa4
+<dead_acute> <dead_psili> <dead_iota> <Greek_omega> : "ᾤ" U1fa4
+<Multi_key> <bar> <less> <apostrophe> <Greek_omega> : "á¾¥" U1fa5
+<Multi_key> <bar> <apostrophe> <less> <Greek_omega> : "á¾¥" U1fa5
+<Multi_key> <less> <bar> <apostrophe> <Greek_omega> : "á¾¥" U1fa5
+<Multi_key> <less> <apostrophe> <bar> <Greek_omega> : "á¾¥" U1fa5
+<Multi_key> <apostrophe> <bar> <less> <Greek_omega> : "á¾¥" U1fa5
+<Multi_key> <apostrophe> <less> <bar> <Greek_omega> : "á¾¥" U1fa5
+<dead_iota> <dead_ogonek> <dead_acute> <Greek_omega> : "á¾¥" U1fa5
+<dead_iota> <dead_dasia> <dead_acute> <Greek_omega> : "á¾¥" U1fa5
+<dead_iota> <dead_acute> <dead_ogonek> <Greek_omega> : "á¾¥" U1fa5
+<dead_iota> <dead_acute> <dead_dasia> <Greek_omega> : "á¾¥" U1fa5
+<dead_ogonek> <dead_iota> <dead_acute> <Greek_omega> : "á¾¥" U1fa5
+<dead_dasia> <dead_iota> <dead_acute> <Greek_omega> : "á¾¥" U1fa5
+<dead_ogonek> <dead_acute> <dead_iota> <Greek_omega> : "á¾¥" U1fa5
+<dead_dasia> <dead_acute> <dead_iota> <Greek_omega> : "á¾¥" U1fa5
+<dead_acute> <dead_iota> <dead_ogonek> <Greek_omega> : "á¾¥" U1fa5
+<dead_acute> <dead_iota> <dead_dasia> <Greek_omega> : "á¾¥" U1fa5
+<dead_acute> <dead_ogonek> <dead_iota> <Greek_omega> : "á¾¥" U1fa5
+<dead_acute> <dead_dasia> <dead_iota> <Greek_omega> : "á¾¥" U1fa5
+<Multi_key> <bar> <greater> <asciitilde> <Greek_omega> : "ᾦ" U1fa6
+<Multi_key> <bar> <asciitilde> <greater> <Greek_omega> : "ᾦ" U1fa6
+<Multi_key> <greater> <bar> <asciitilde> <Greek_omega> : "ᾦ" U1fa6
+<Multi_key> <greater> <asciitilde> <bar> <Greek_omega> : "ᾦ" U1fa6
+<Multi_key> <asciitilde> <bar> <greater> <Greek_omega> : "ᾦ" U1fa6
+<Multi_key> <asciitilde> <greater> <bar> <Greek_omega> : "ᾦ" U1fa6
+<dead_iota> <dead_horn> <dead_tilde> <Greek_omega> : "ᾦ" U1fa6
+<dead_iota> <dead_psili> <dead_tilde> <Greek_omega> : "ᾦ" U1fa6
+<dead_iota> <dead_tilde> <dead_horn> <Greek_omega> : "ᾦ" U1fa6
+<dead_iota> <dead_tilde> <dead_psili> <Greek_omega> : "ᾦ" U1fa6
+<dead_horn> <dead_iota> <dead_tilde> <Greek_omega> : "ᾦ" U1fa6
+<dead_psili> <dead_iota> <dead_tilde> <Greek_omega> : "ᾦ" U1fa6
+<dead_horn> <dead_tilde> <dead_iota> <Greek_omega> : "ᾦ" U1fa6
+<dead_psili> <dead_tilde> <dead_iota> <Greek_omega> : "ᾦ" U1fa6
+<dead_tilde> <dead_iota> <dead_horn> <Greek_omega> : "ᾦ" U1fa6
+<dead_tilde> <dead_iota> <dead_psili> <Greek_omega> : "ᾦ" U1fa6
+<dead_tilde> <dead_horn> <dead_iota> <Greek_omega> : "ᾦ" U1fa6
+<dead_tilde> <dead_psili> <dead_iota> <Greek_omega> : "ᾦ" U1fa6
+<Multi_key> <bar> <less> <asciitilde> <Greek_omega> : "ᾧ" U1fa7
+<Multi_key> <bar> <asciitilde> <less> <Greek_omega> : "ᾧ" U1fa7
+<Multi_key> <less> <bar> <asciitilde> <Greek_omega> : "ᾧ" U1fa7
+<Multi_key> <less> <asciitilde> <bar> <Greek_omega> : "ᾧ" U1fa7
+<Multi_key> <asciitilde> <bar> <less> <Greek_omega> : "ᾧ" U1fa7
+<Multi_key> <asciitilde> <less> <bar> <Greek_omega> : "ᾧ" U1fa7
+<dead_iota> <dead_ogonek> <dead_tilde> <Greek_omega> : "ᾧ" U1fa7
+<dead_iota> <dead_dasia> <dead_tilde> <Greek_omega> : "ᾧ" U1fa7
+<dead_iota> <dead_tilde> <dead_ogonek> <Greek_omega> : "ᾧ" U1fa7
+<dead_iota> <dead_tilde> <dead_dasia> <Greek_omega> : "ᾧ" U1fa7
+<dead_ogonek> <dead_iota> <dead_tilde> <Greek_omega> : "ᾧ" U1fa7
+<dead_dasia> <dead_iota> <dead_tilde> <Greek_omega> : "ᾧ" U1fa7
+<dead_ogonek> <dead_tilde> <dead_iota> <Greek_omega> : "ᾧ" U1fa7
+<dead_dasia> <dead_tilde> <dead_iota> <Greek_omega> : "ᾧ" U1fa7
+<dead_tilde> <dead_iota> <dead_ogonek> <Greek_omega> : "ᾧ" U1fa7
+<dead_tilde> <dead_iota> <dead_dasia> <Greek_omega> : "ᾧ" U1fa7
+<dead_tilde> <dead_ogonek> <dead_iota> <Greek_omega> : "ᾧ" U1fa7
+<dead_tilde> <dead_dasia> <dead_iota> <Greek_omega> : "ᾧ" U1fa7
+<Multi_key> <bar> <greater> <Greek_OMEGA> : "ᾨ" U1fa8
+<Multi_key> <greater> <bar> <Greek_OMEGA> : "ᾨ" U1fa8
+<dead_iota> <dead_horn> <Greek_OMEGA> : "ᾨ" U1fa8
+<dead_iota> <dead_psili> <Greek_OMEGA> : "ᾨ" U1fa8
+<dead_horn> <dead_iota> <Greek_OMEGA> : "ᾨ" U1fa8
+<dead_psili> <dead_iota> <Greek_OMEGA> : "ᾨ" U1fa8
+<Multi_key> <bar> <less> <Greek_OMEGA> : "ᾩ" U1fa9
+<Multi_key> <less> <bar> <Greek_OMEGA> : "ᾩ" U1fa9
+<dead_iota> <dead_ogonek> <Greek_OMEGA> : "ᾩ" U1fa9
+<dead_iota> <dead_dasia> <Greek_OMEGA> : "ᾩ" U1fa9
+<dead_ogonek> <dead_iota> <Greek_OMEGA> : "ᾩ" U1fa9
+<dead_dasia> <dead_iota> <Greek_OMEGA> : "ᾩ" U1fa9
+<Multi_key> <bar> <greater> <grave> <Greek_OMEGA> : "ᾪ" U1faa
+<Multi_key> <bar> <grave> <greater> <Greek_OMEGA> : "ᾪ" U1faa
+<Multi_key> <greater> <bar> <grave> <Greek_OMEGA> : "ᾪ" U1faa
+<Multi_key> <greater> <grave> <bar> <Greek_OMEGA> : "ᾪ" U1faa
+<Multi_key> <grave> <bar> <greater> <Greek_OMEGA> : "ᾪ" U1faa
+<Multi_key> <grave> <greater> <bar> <Greek_OMEGA> : "ᾪ" U1faa
+<dead_iota> <dead_horn> <dead_grave> <Greek_OMEGA> : "ᾪ" U1faa
+<dead_iota> <dead_psili> <dead_grave> <Greek_OMEGA> : "ᾪ" U1faa
+<dead_iota> <dead_grave> <dead_horn> <Greek_OMEGA> : "ᾪ" U1faa
+<dead_iota> <dead_grave> <dead_psili> <Greek_OMEGA> : "ᾪ" U1faa
+<dead_horn> <dead_iota> <dead_grave> <Greek_OMEGA> : "ᾪ" U1faa
+<dead_psili> <dead_iota> <dead_grave> <Greek_OMEGA> : "ᾪ" U1faa
+<dead_horn> <dead_grave> <dead_iota> <Greek_OMEGA> : "ᾪ" U1faa
+<dead_psili> <dead_grave> <dead_iota> <Greek_OMEGA> : "ᾪ" U1faa
+<dead_grave> <dead_iota> <dead_horn> <Greek_OMEGA> : "ᾪ" U1faa
+<dead_grave> <dead_iota> <dead_psili> <Greek_OMEGA> : "ᾪ" U1faa
+<dead_grave> <dead_horn> <dead_iota> <Greek_OMEGA> : "ᾪ" U1faa
+<dead_grave> <dead_psili> <dead_iota> <Greek_OMEGA> : "ᾪ" U1faa
+<Multi_key> <bar> <less> <grave> <Greek_OMEGA> : "ᾫ" U1fab
+<Multi_key> <bar> <grave> <less> <Greek_OMEGA> : "ᾫ" U1fab
+<Multi_key> <less> <bar> <grave> <Greek_OMEGA> : "ᾫ" U1fab
+<Multi_key> <less> <grave> <bar> <Greek_OMEGA> : "ᾫ" U1fab
+<Multi_key> <grave> <bar> <less> <Greek_OMEGA> : "ᾫ" U1fab
+<Multi_key> <grave> <less> <bar> <Greek_OMEGA> : "ᾫ" U1fab
+<dead_iota> <dead_ogonek> <dead_grave> <Greek_OMEGA> : "ᾫ" U1fab
+<dead_iota> <dead_dasia> <dead_grave> <Greek_OMEGA> : "ᾫ" U1fab
+<dead_iota> <dead_grave> <dead_ogonek> <Greek_OMEGA> : "ᾫ" U1fab
+<dead_iota> <dead_grave> <dead_dasia> <Greek_OMEGA> : "ᾫ" U1fab
+<dead_ogonek> <dead_iota> <dead_grave> <Greek_OMEGA> : "ᾫ" U1fab
+<dead_dasia> <dead_iota> <dead_grave> <Greek_OMEGA> : "ᾫ" U1fab
+<dead_ogonek> <dead_grave> <dead_iota> <Greek_OMEGA> : "ᾫ" U1fab
+<dead_dasia> <dead_grave> <dead_iota> <Greek_OMEGA> : "ᾫ" U1fab
+<dead_grave> <dead_iota> <dead_ogonek> <Greek_OMEGA> : "ᾫ" U1fab
+<dead_grave> <dead_iota> <dead_dasia> <Greek_OMEGA> : "ᾫ" U1fab
+<dead_grave> <dead_ogonek> <dead_iota> <Greek_OMEGA> : "ᾫ" U1fab
+<dead_grave> <dead_dasia> <dead_iota> <Greek_OMEGA> : "ᾫ" U1fab
+<Multi_key> <bar> <greater> <apostrophe> <Greek_OMEGA> : "ᾬ" U1fac
+<Multi_key> <bar> <apostrophe> <greater> <Greek_OMEGA> : "ᾬ" U1fac
+<Multi_key> <greater> <bar> <apostrophe> <Greek_OMEGA> : "ᾬ" U1fac
+<Multi_key> <greater> <apostrophe> <bar> <Greek_OMEGA> : "ᾬ" U1fac
+<Multi_key> <apostrophe> <bar> <greater> <Greek_OMEGA> : "ᾬ" U1fac
+<Multi_key> <apostrophe> <greater> <bar> <Greek_OMEGA> : "ᾬ" U1fac
+<dead_iota> <dead_horn> <dead_acute> <Greek_OMEGA> : "ᾬ" U1fac
+<dead_iota> <dead_psili> <dead_acute> <Greek_OMEGA> : "ᾬ" U1fac
+<dead_iota> <dead_acute> <dead_horn> <Greek_OMEGA> : "ᾬ" U1fac
+<dead_iota> <dead_acute> <dead_psili> <Greek_OMEGA> : "ᾬ" U1fac
+<dead_horn> <dead_iota> <dead_acute> <Greek_OMEGA> : "ᾬ" U1fac
+<dead_psili> <dead_iota> <dead_acute> <Greek_OMEGA> : "ᾬ" U1fac
+<dead_horn> <dead_acute> <dead_iota> <Greek_OMEGA> : "ᾬ" U1fac
+<dead_psili> <dead_acute> <dead_iota> <Greek_OMEGA> : "ᾬ" U1fac
+<dead_acute> <dead_iota> <dead_horn> <Greek_OMEGA> : "ᾬ" U1fac
+<dead_acute> <dead_iota> <dead_psili> <Greek_OMEGA> : "ᾬ" U1fac
+<dead_acute> <dead_horn> <dead_iota> <Greek_OMEGA> : "ᾬ" U1fac
+<dead_acute> <dead_psili> <dead_iota> <Greek_OMEGA> : "ᾬ" U1fac
+<Multi_key> <bar> <less> <apostrophe> <Greek_OMEGA> : "á¾­" U1fad
+<Multi_key> <bar> <apostrophe> <less> <Greek_OMEGA> : "á¾­" U1fad
+<Multi_key> <less> <bar> <apostrophe> <Greek_OMEGA> : "á¾­" U1fad
+<Multi_key> <less> <apostrophe> <bar> <Greek_OMEGA> : "á¾­" U1fad
+<Multi_key> <apostrophe> <bar> <less> <Greek_OMEGA> : "á¾­" U1fad
+<Multi_key> <apostrophe> <less> <bar> <Greek_OMEGA> : "á¾­" U1fad
+<dead_iota> <dead_ogonek> <dead_acute> <Greek_OMEGA> : "á¾­" U1fad
+<dead_iota> <dead_dasia> <dead_acute> <Greek_OMEGA> : "á¾­" U1fad
+<dead_iota> <dead_acute> <dead_ogonek> <Greek_OMEGA> : "á¾­" U1fad
+<dead_iota> <dead_acute> <dead_dasia> <Greek_OMEGA> : "á¾­" U1fad
+<dead_ogonek> <dead_iota> <dead_acute> <Greek_OMEGA> : "á¾­" U1fad
+<dead_dasia> <dead_iota> <dead_acute> <Greek_OMEGA> : "á¾­" U1fad
+<dead_ogonek> <dead_acute> <dead_iota> <Greek_OMEGA> : "á¾­" U1fad
+<dead_dasia> <dead_acute> <dead_iota> <Greek_OMEGA> : "á¾­" U1fad
+<dead_acute> <dead_iota> <dead_ogonek> <Greek_OMEGA> : "á¾­" U1fad
+<dead_acute> <dead_iota> <dead_dasia> <Greek_OMEGA> : "á¾­" U1fad
+<dead_acute> <dead_ogonek> <dead_iota> <Greek_OMEGA> : "á¾­" U1fad
+<dead_acute> <dead_dasia> <dead_iota> <Greek_OMEGA> : "á¾­" U1fad
+<Multi_key> <bar> <greater> <asciitilde> <Greek_OMEGA> : "á¾®" U1fae
+<Multi_key> <bar> <asciitilde> <greater> <Greek_OMEGA> : "á¾®" U1fae
+<Multi_key> <greater> <bar> <asciitilde> <Greek_OMEGA> : "á¾®" U1fae
+<Multi_key> <greater> <asciitilde> <bar> <Greek_OMEGA> : "á¾®" U1fae
+<Multi_key> <asciitilde> <bar> <greater> <Greek_OMEGA> : "á¾®" U1fae
+<Multi_key> <asciitilde> <greater> <bar> <Greek_OMEGA> : "á¾®" U1fae
+<dead_iota> <dead_horn> <dead_tilde> <Greek_OMEGA> : "á¾®" U1fae
+<dead_iota> <dead_psili> <dead_tilde> <Greek_OMEGA> : "á¾®" U1fae
+<dead_iota> <dead_tilde> <dead_horn> <Greek_OMEGA> : "á¾®" U1fae
+<dead_iota> <dead_tilde> <dead_psili> <Greek_OMEGA> : "á¾®" U1fae
+<dead_horn> <dead_iota> <dead_tilde> <Greek_OMEGA> : "á¾®" U1fae
+<dead_psili> <dead_iota> <dead_tilde> <Greek_OMEGA> : "á¾®" U1fae
+<dead_horn> <dead_tilde> <dead_iota> <Greek_OMEGA> : "á¾®" U1fae
+<dead_psili> <dead_tilde> <dead_iota> <Greek_OMEGA> : "á¾®" U1fae
+<dead_tilde> <dead_iota> <dead_horn> <Greek_OMEGA> : "á¾®" U1fae
+<dead_tilde> <dead_iota> <dead_psili> <Greek_OMEGA> : "á¾®" U1fae
+<dead_tilde> <dead_horn> <dead_iota> <Greek_OMEGA> : "á¾®" U1fae
+<dead_tilde> <dead_psili> <dead_iota> <Greek_OMEGA> : "á¾®" U1fae
+<Multi_key> <bar> <less> <asciitilde> <Greek_OMEGA> : "ᾯ" U1faf
+<Multi_key> <bar> <asciitilde> <less> <Greek_OMEGA> : "ᾯ" U1faf
+<Multi_key> <less> <bar> <asciitilde> <Greek_OMEGA> : "ᾯ" U1faf
+<Multi_key> <less> <asciitilde> <bar> <Greek_OMEGA> : "ᾯ" U1faf
+<Multi_key> <asciitilde> <bar> <less> <Greek_OMEGA> : "ᾯ" U1faf
+<Multi_key> <asciitilde> <less> <bar> <Greek_OMEGA> : "ᾯ" U1faf
+<dead_iota> <dead_ogonek> <dead_tilde> <Greek_OMEGA> : "ᾯ" U1faf
+<dead_iota> <dead_dasia> <dead_tilde> <Greek_OMEGA> : "ᾯ" U1faf
+<dead_iota> <dead_tilde> <dead_ogonek> <Greek_OMEGA> : "ᾯ" U1faf
+<dead_iota> <dead_tilde> <dead_dasia> <Greek_OMEGA> : "ᾯ" U1faf
+<dead_ogonek> <dead_iota> <dead_tilde> <Greek_OMEGA> : "ᾯ" U1faf
+<dead_dasia> <dead_iota> <dead_tilde> <Greek_OMEGA> : "ᾯ" U1faf
+<dead_ogonek> <dead_tilde> <dead_iota> <Greek_OMEGA> : "ᾯ" U1faf
+<dead_dasia> <dead_tilde> <dead_iota> <Greek_OMEGA> : "ᾯ" U1faf
+<dead_tilde> <dead_iota> <dead_ogonek> <Greek_OMEGA> : "ᾯ" U1faf
+<dead_tilde> <dead_iota> <dead_dasia> <Greek_OMEGA> : "ᾯ" U1faf
+<dead_tilde> <dead_ogonek> <dead_iota> <Greek_OMEGA> : "ᾯ" U1faf
+<dead_tilde> <dead_dasia> <dead_iota> <Greek_OMEGA> : "ᾯ" U1faf
+<dead_breve> <Greek_alpha> : "á¾°" U1fb0
+<dead_macron> <Greek_alpha> : "á¾±" U1fb1
+<dead_breve> <Greek_ALPHA> : "Ᾰ" U1fb8
+<dead_macron> <Greek_ALPHA> : "á¾¹" U1fb9
+<dead_breve> <Greek_iota> : "á¿" U1fd0
+<dead_macron> <Greek_iota> : "á¿‘" U1fd1
+<dead_breve> <Greek_IOTA> : "Ῐ" U1fd8
+<dead_macron> <Greek_IOTA> : "á¿™" U1fd9
+<dead_breve> <Greek_upsilon> : "á¿ " U1fe0
+<dead_macron> <Greek_upsilon> : "á¿¡" U1fe1
+<dead_breve> <Greek_UPSILON> : "Ῠ" U1fe8
+<dead_macron> <Greek_UPSILON> : "á¿©" U1fe9
+<Multi_key> <grave> <Greek_ALPHA> : "Ὰ" U1fba
+<dead_grave> <Greek_ALPHA> : "Ὰ" U1fba
+<Multi_key> <grave> <Greek_EPSILON> : "Ὲ" U1fc8
+<dead_grave> <Greek_EPSILON> : "Ὲ" U1fc8
+<Multi_key> <grave> <Greek_ETA> : "á¿Š" U1fca
+<dead_grave> <Greek_ETA> : "á¿Š" U1fca
+<Multi_key> <grave> <Greek_IOTA> : "á¿š" U1fda
+<dead_grave> <Greek_IOTA> : "á¿š" U1fda
+<Multi_key> <grave> <Greek_UPSILON> : "Ὺ" U1fea
+<dead_grave> <Greek_UPSILON> : "Ὺ" U1fea
+<Multi_key> <grave> <Greek_OMICRON> : "Ὸ" U1ff8
+<dead_grave> <Greek_OMICRON> : "Ὸ" U1ff8
+<Multi_key> <grave> <Greek_OMEGA> : "Ὼ" U1ffa
+<dead_grave> <Greek_OMEGA> : "Ὼ" U1ffa
+<Multi_key> <bar> <grave> <Greek_alpha> : "á¾²" U1fb2
+<Multi_key> <grave> <bar> <Greek_alpha> : "á¾²" U1fb2
+<dead_iota> <dead_grave> <Greek_alpha> : "á¾²" U1fb2
+<dead_grave> <dead_iota> <Greek_alpha> : "á¾²" U1fb2
+<Multi_key> <bar> <Greek_alpha> : "á¾³" U1fb3
+<dead_iota> <Greek_alpha> : "á¾³" U1fb3
+<Multi_key> <bar> <apostrophe> <Greek_alpha> : "á¾´" U1fb4
+<Multi_key> <apostrophe> <bar> <Greek_alpha> : "á¾´" U1fb4
+<dead_iota> <dead_acute> <Greek_alpha> : "á¾´" U1fb4
+<dead_acute> <dead_iota> <Greek_alpha> : "á¾´" U1fb4
+<Multi_key> <asciitilde> <Greek_alpha> : "ᾶ" U1fb6
+<dead_tilde> <Greek_alpha> : "ᾶ" U1fb6
+<Multi_key> <bar> <asciitilde> <Greek_alpha> : "á¾·" U1fb7
+<Multi_key> <asciitilde> <bar> <Greek_alpha> : "á¾·" U1fb7
+<dead_iota> <dead_tilde> <Greek_alpha> : "á¾·" U1fb7
+<dead_tilde> <dead_iota> <Greek_alpha> : "á¾·" U1fb7
+<Multi_key> <bar> <grave> <Greek_eta> : "á¿‚" U1fc2
+<Multi_key> <grave> <bar> <Greek_eta> : "á¿‚" U1fc2
+<dead_iota> <dead_grave> <Greek_eta> : "á¿‚" U1fc2
+<dead_grave> <dead_iota> <Greek_eta> : "á¿‚" U1fc2
+<Multi_key> <bar> <Greek_eta> : "ῃ" U1fc3
+<dead_iota> <Greek_eta> : "ῃ" U1fc3
+<Multi_key> <bar> <apostrophe> <Greek_eta> : "á¿„" U1fc4
+<Multi_key> <apostrophe> <bar> <Greek_eta> : "á¿„" U1fc4
+<dead_iota> <dead_acute> <Greek_eta> : "á¿„" U1fc4
+<dead_acute> <dead_iota> <Greek_eta> : "á¿„" U1fc4
+<Multi_key> <asciitilde> <Greek_eta> : "ῆ" U1fc6
+<dead_tilde> <Greek_eta> : "ῆ" U1fc6
+<Multi_key> <bar> <asciitilde> <Greek_eta> : "ῇ" U1fc7
+<Multi_key> <asciitilde> <bar> <Greek_eta> : "ῇ" U1fc7
+<dead_iota> <dead_tilde> <Greek_eta> : "ῇ" U1fc7
+<dead_tilde> <dead_iota> <Greek_eta> : "ῇ" U1fc7
+<Multi_key> <quotedbl> <grave> <Greek_iota> : "á¿’" U1fd2
+<Multi_key> <grave> <quotedbl> <Greek_iota> : "á¿’" U1fd2
+<dead_diaeresis> <dead_grave> <Greek_iota> : "á¿’" U1fd2
+<dead_grave> <dead_diaeresis> <Greek_iota> : "á¿’" U1fd2
+<Multi_key> <asciitilde> <Greek_iota> : "á¿–" U1fd6
+<dead_tilde> <Greek_iota> : "á¿–" U1fd6
+<Multi_key> <quotedbl> <asciitilde> <Greek_iota> : "á¿—" U1fd7
+<Multi_key> <asciitilde> <quotedbl> <Greek_iota> : "á¿—" U1fd7
+<dead_diaeresis> <dead_tilde> <Greek_iota> : "á¿—" U1fd7
+<dead_tilde> <dead_diaeresis> <Greek_iota> : "á¿—" U1fd7
+<Multi_key> <quotedbl> <grave> <Greek_upsilon> : "á¿¢" U1fe2
+<Multi_key> <grave> <quotedbl> <Greek_upsilon> : "á¿¢" U1fe2
+<dead_diaeresis> <dead_grave> <Greek_upsilon> : "á¿¢" U1fe2
+<dead_grave> <dead_diaeresis> <Greek_upsilon> : "á¿¢" U1fe2
+<Multi_key> <asciitilde> <Greek_upsilon> : "ῦ" U1fe6
+<dead_tilde> <Greek_upsilon> : "ῦ" U1fe6
+<Multi_key> <quotedbl> <asciitilde> <Greek_upsilon> : "ῧ" U1fe7
+<Multi_key> <asciitilde> <quotedbl> <Greek_upsilon> : "ῧ" U1fe7
+<dead_diaeresis> <dead_tilde> <Greek_upsilon> : "ῧ" U1fe7
+<dead_tilde> <dead_diaeresis> <Greek_upsilon> : "ῧ" U1fe7
+<Multi_key> <bar> <grave> <Greek_omega> : "ῲ" U1ff2
+<Multi_key> <grave> <bar> <Greek_omega> : "ῲ" U1ff2
+<dead_iota> <dead_grave> <Greek_omega> : "ῲ" U1ff2
+<dead_grave> <dead_iota> <Greek_omega> : "ῲ" U1ff2
+<Multi_key> <bar> <Greek_omega> : "ῳ" U1ff3
+<dead_iota> <Greek_omega> : "ῳ" U1ff3
+<Multi_key> <bar> <apostrophe> <Greek_omega> : "á¿´" U1ff4
+<Multi_key> <apostrophe> <bar> <Greek_omega> : "á¿´" U1ff4
+<dead_iota> <dead_acute> <Greek_omega> : "á¿´" U1ff4
+<dead_acute> <dead_iota> <Greek_omega> : "á¿´" U1ff4
+<Multi_key> <asciitilde> <Greek_omega> : "ῶ" U1ff6
+<dead_tilde> <Greek_omega> : "ῶ" U1ff6
+<Multi_key> <bar> <asciitilde> <Greek_omega> : "á¿·" U1ff7
+<Multi_key> <asciitilde> <bar> <Greek_omega> : "á¿·" U1ff7
+<dead_iota> <dead_tilde> <Greek_omega> : "á¿·" U1ff7
+<dead_tilde> <dead_iota> <Greek_omega> : "á¿·" U1ff7
+<Multi_key> <bar> <Greek_ALPHA> : "á¾¼" U1fbc
+<dead_iota> <Greek_ALPHA> : "á¾¼" U1fbc
+<Multi_key> <bar> <Greek_ETA> : "ῌ" U1fcc
+<dead_iota> <Greek_ETA> : "ῌ" U1fcc
+<Multi_key> <bar> <Greek_OMEGA> : "ῼ" U1ffc
+<dead_iota> <Greek_OMEGA> : "ῼ" U1ffc
+<Multi_key> <greater> <Greek_rho> : "ῤ" U1fe4
+<dead_horn> <Greek_rho> : "ῤ" U1fe4
+<dead_psili> <Greek_rho> : "ῤ" U1fe4
+<Multi_key> <less> <Greek_rho> : "á¿¥" U1fe5
+<dead_ogonek> <Greek_rho> : "á¿¥" U1fe5
+<dead_dasia> <Greek_rho> : "á¿¥" U1fe5
+<Multi_key> <less> <Greek_RHO> : "Ῥ" U1fec
+<dead_ogonek> <Greek_RHO> : "Ῥ" U1fec
+<dead_dasia> <Greek_RHO> : "Ῥ" U1fec
+<dead_horn> <dead_grave> <space> : "á¿" U1fcd
+<dead_psili> <dead_grave> <space> : "á¿" U1fcd
+<dead_grave> <dead_horn> <space> : "á¿" U1fcd
+<dead_grave> <dead_psili> <space> : "á¿" U1fcd
+<dead_horn> <dead_acute> <space> : "á¿Ž" U1fce
+<dead_psili> <dead_acute> <space> : "á¿Ž" U1fce
+<dead_acute> <dead_horn> <space> : "á¿Ž" U1fce
+<dead_acute> <dead_psili> <space> : "á¿Ž" U1fce
+<dead_horn> <dead_tilde> <space> : "á¿" U1fcf
+<dead_psili> <dead_tilde> <space> : "á¿" U1fcf
+<dead_tilde> <dead_horn> <space> : "á¿" U1fcf
+<dead_tilde> <dead_psili> <space> : "á¿" U1fcf
+<dead_ogonek> <dead_grave> <space> : "á¿" U1fdd
+<dead_dasia> <dead_grave> <space> : "á¿" U1fdd
+<dead_grave> <dead_ogonek> <space> : "á¿" U1fdd
+<dead_grave> <dead_dasia> <space> : "á¿" U1fdd
+<dead_ogonek> <dead_acute> <space> : "á¿ž" U1fde
+<dead_dasia> <dead_acute> <space> : "á¿ž" U1fde
+<dead_acute> <dead_ogonek> <space> : "á¿ž" U1fde
+<dead_acute> <dead_dasia> <space> : "á¿ž" U1fde
+<dead_ogonek> <dead_tilde> <space> : "á¿Ÿ" U1fdf
+<dead_dasia> <dead_tilde> <space> : "á¿Ÿ" U1fdf
+<dead_tilde> <dead_ogonek> <space> : "á¿Ÿ" U1fdf
+<dead_tilde> <dead_dasia> <space> : "á¿Ÿ" U1fdf
+<dead_diaeresis> <dead_grave> <space> : "á¿­" U1fed
+<dead_grave> <dead_diaeresis> <space> : "á¿­" U1fed
+<dead_diaeresis> <dead_tilde> <space> : "á¿" U1fc1
+<dead_tilde> <dead_diaeresis> <space> : "á¿" U1fc1
+<dead_horn> <space> : "᾿" U1fbf
+<dead_psili> <space> : "᾿" U1fbf
+<dead_horn> <dead_horn> : "᾿" U1fbf
+<dead_psili> <dead_horn> : "᾿" U1fbf
+<dead_ogonek> <space> : "῾" U1ffe
+<dead_dasia> <space> : "῾" U1ffe
+<dead_ogonek> <dead_ogonek> : "῾" U1ffe
+<dead_dasia> <dead_ogonek> : "῾" U1ffe
+<dead_grave> <space> : "`" U1fef
+<dead_grave> <dead_grave> : "`" U1fef
+<dead_tilde> <space> : "á¿€" U1fc0
+<dead_tilde> <dead_tilde> : "á¿€" U1fc0
+<dead_horn> <underscore> : "á¾½" U1fbd
+<dead_psili> <underscore> : "á¾½" U1fbd
+<dead_iota> <underscore> : "á¾¾" U1fbe
+<dead_iota> <space> : "ͺ" U037a
+<dead_iota> <dead_iota> : "ͺ" U037a
+
+XCOMM Part 3
+XCOMM
+XCOMM ISO 8859-7 (Greek) multi-key and dead key definitions extracted and
+XCOMM converted from the iso8859-7/Compose file.
+
+<Multi_key> <Greek_ALPHA> <apostrophe> : "Ά" Greek_ALPHAaccent
+<Multi_key> <apostrophe> <Greek_ALPHA> : "Ά" Greek_ALPHAaccent
+<Multi_key> <Greek_EPSILON> <apostrophe>: "Έ" Greek_EPSILONaccent
+<Multi_key> <apostrophe> <Greek_EPSILON>: "Έ" Greek_EPSILONaccent
+<Multi_key> <Greek_ETA> <apostrophe> : "Ή" Greek_ETAaccent
+<Multi_key> <apostrophe> <Greek_ETA> : "Ή" Greek_ETAaccent
+<Multi_key> <Greek_IOTA> <apostrophe> : "Ί" Greek_IOTAaccent
+<Multi_key> <apostrophe> <Greek_IOTA> : "Ί" Greek_IOTAaccent
+<Multi_key> <Greek_OMICRON> <apostrophe>: "Ό" Greek_OMICRONaccent
+<Multi_key> <apostrophe> <Greek_OMICRON>: "Ό" Greek_OMICRONaccent
+<Multi_key> <Greek_UPSILON> <apostrophe>: "ÎŽ" Greek_UPSILONaccent
+<Multi_key> <apostrophe> <Greek_UPSILON>: "ÎŽ" Greek_UPSILONaccent
+<Multi_key> <Greek_OMEGA> <apostrophe> : "Î" Greek_OMEGAaccent
+<Multi_key> <apostrophe> <Greek_OMEGA> : "Î" Greek_OMEGAaccent
+<Multi_key> <Greek_IOTA> <quotedbl> : "Ϊ" Greek_IOTAdieresis
+<Multi_key> <quotedbl> <Greek_IOTA> : "Ϊ" Greek_IOTAdieresis
+<Multi_key> <Greek_UPSILON> <quotedbl> : "Ϋ" Greek_UPSILONdieresis
+<Multi_key> <quotedbl> <Greek_UPSILON> : "Ϋ" Greek_UPSILONdieresis
+
+<Multi_key> <Greek_alpha> <apostrophe> : "ά" Greek_alphaaccent
+<Multi_key> <apostrophe> <Greek_alpha> : "ά" Greek_alphaaccent
+<Multi_key> <Greek_epsilon> <apostrophe>: "έ" Greek_epsilonaccent
+<Multi_key> <apostrophe> <Greek_epsilon>: "έ" Greek_epsilonaccent
+<Multi_key> <Greek_eta> <apostrophe> : "ή" Greek_etaaccent
+<Multi_key> <apostrophe> <Greek_eta> : "ή" Greek_etaaccent
+<Multi_key> <Greek_iota> <apostrophe> : "ί" Greek_iotaaccent
+<Multi_key> <apostrophe> <Greek_iota> : "ί" Greek_iotaaccent
+<Multi_key> <Greek_omicron> <apostrophe>: "ό" Greek_omicronaccent
+<Multi_key> <apostrophe> <Greek_omicron>: "ό" Greek_omicronaccent
+<Multi_key> <Greek_upsilon> <apostrophe>: "Ï" Greek_upsilonaccent
+<Multi_key> <apostrophe> <Greek_upsilon>: "Ï" Greek_upsilonaccent
+<Multi_key> <Greek_omega> <apostrophe> : "ÏŽ" Greek_omegaaccent
+<Multi_key> <apostrophe> <Greek_omega> : "ÏŽ" Greek_omegaaccent
+<Multi_key> <Greek_iota> <quotedbl> : "ÏŠ" Greek_iotadieresis
+<Multi_key> <quotedbl> <Greek_iota> : "ÏŠ" Greek_iotadieresis
+<Multi_key> <Greek_upsilon> <quotedbl> : "Ï‹" Greek_upsilondieresis
+<Multi_key> <quotedbl> <Greek_upsilon> : "Ï‹" Greek_upsilondieresis
+
+<Multi_key> <apostrophe> <quotedbl> <Greek_iota> : "Î" Greek_iotaaccentdieresis
+<Multi_key> <quotedbl> <apostrophe> <Greek_iota> : "Î" Greek_iotaaccentdieresis
+<Multi_key> <apostrophe> <quotedbl> <Greek_upsilon> : "ΰ" Greek_upsilonaccentdieresis
+<Multi_key> <quotedbl> <apostrophe> <Greek_upsilon> : "ΰ" Greek_upsilonaccentdieresis
+<Multi_key> <apostrophe> <quotedbl> <space> : "Î…" Greek_accentdieresis
+<Multi_key> <quotedbl> <apostrophe> <space> : "Î…" Greek_accentdieresis
+
+<dead_acute> <Greek_alpha> : "ά" Greek_alphaaccent
+<dead_acute> <Greek_epsilon> : "έ" Greek_epsilonaccent
+<dead_acute> <Greek_eta> : "ή" Greek_etaaccent
+<dead_acute> <Greek_iota> : "ί" Greek_iotaaccent
+<dead_acute> <Greek_omicron> : "ό" Greek_omicronaccent
+<dead_acute> <Greek_upsilon> : "Ï" Greek_upsilonaccent
+<dead_acute> <Greek_omega> : "ÏŽ" Greek_omegaaccent
+<dead_acute> <Greek_ALPHA> : "Ά" Greek_ALPHAaccent
+<dead_acute> <Greek_EPSILON> : "Έ" Greek_EPSILONaccent
+<dead_acute> <Greek_ETA> : "Ή" Greek_ETAaccent
+<dead_acute> <Greek_IOTA> : "Ί" Greek_IOTAaccent
+<dead_acute> <Greek_OMICRON> : "Ό" Greek_OMICRONaccent
+<dead_acute> <Greek_UPSILON> : "ÎŽ" Greek_UPSILONaccent
+<dead_acute> <Greek_OMEGA> : "Î" Greek_OMEGAaccent
+<dead_acute> <space> : "΄" U0384
+<dead_acute> <dead_acute> : "΄" U0384
+<dead_acute> <period> : "·" periodcentered
+<dead_acute> <less> : "«" guillemotleft
+<dead_acute> <greater> : "»" guillemotright
+
+<dead_diaeresis> <Greek_iota> : "ÏŠ" Greek_iotadieresis
+<dead_diaeresis> <Greek_upsilon> : "Ï‹" Greek_upsilondieresis
+<dead_diaeresis> <Greek_IOTA> : "Ϊ" Greek_IOTAdieresis
+<dead_diaeresis> <Greek_UPSILON> : "Ϋ" Greek_UPSILONdieresis
+<dead_diaeresis> <space> : "¨" diaeresis
+<dead_diaeresis> <dead_diaeresis> : "¨" diaeresis
+<dead_diaeresis> <period> : "·" periodcentered
+<dead_diaeresis> <less> : "«" guillemotleft
+<dead_diaeresis> <greater> : "»" guillemotright
+
+<dead_acute> <dead_diaeresis> <Greek_iota> : "Î" Greek_iotaaccentdieresis
+<dead_acute> <dead_diaeresis> <Greek_upsilon> : "ΰ" Greek_upsilonaccentdieresis
+<dead_acute> <dead_diaeresis> <space> : "Î…" Greek_accentdieresis
+
+<dead_diaeresis> <dead_acute> <Greek_iota> : "Î" Greek_iotaaccentdieresis
+<dead_diaeresis> <dead_acute> <Greek_upsilon> : "ΰ" Greek_upsilonaccentdieresis
+<dead_diaeresis> <dead_acute> <space> : "Î…" Greek_accentdieresis
+
+XCOMM Part 4
+XCOMM
+XCOMM Miscellaneous extensions.
+
+<dead_macron> <space> : "¯" macron
+<dead_macron> <dead_macron> : "¯" macron
+<dead_breve> <space> : "˘" breve
+<dead_breve> <dead_breve> : "˘" breve
+
+<dead_grave> <underscore> : "`" grave
+<dead_acute> <underscore> : "´" acute
+<dead_tilde> <underscore> : "~" asciitilde
+
+<Multi_key> <less> <apostrophe> <space> : "‘" leftsinglequotemark
+<Multi_key> <apostrophe> <less> <space> : "‘" leftsinglequotemark
+<Multi_key> <greater> <apostrophe> <space> : "’" rightsinglequotemark
+<Multi_key> <apostrophe> <greater> <space> : "’" rightsinglequotemark
+<Multi_key> <asciitilde> <asciitilde> : "―" Greek_horizbar
+<Multi_key> <asciicircum> <asciicircum> : "˘" breve
+
+<Multi_key> <slash> <slash> : "Í´" U0374
+<Multi_key> <backslash> <backslash> : "͵" U0375
+<Multi_key> <semicolon> <semicolon> : ";" U037e
+<Multi_key> <colon> <colon> : "·" U0387
+
+<Multi_key> <C> <equal> : "€" EuroSign
+<Multi_key> <equal> <C> : "€" EuroSign
+<Multi_key> <c> <equal> : "€" EuroSign
+<Multi_key> <equal> <c> : "€" EuroSign
+<Multi_key> <E> <equal> : "€" EuroSign
+<Multi_key> <equal> <E> : "€" EuroSign
+<Multi_key> <e> <equal> : "€" EuroSign
+<Multi_key> <equal> <e> : "€" EuroSign
+<Multi_key> <Greek_EPSILON> <equal> : "€" EuroSign
+<Multi_key> <equal> <Greek_EPSILON> : "€" EuroSign
+<Multi_key> <Greek_epsilon> <equal> : "€" EuroSign
+<Multi_key> <equal> <Greek_epsilon> : "€" EuroSign
+
+<Multi_key> <Greek_DELTA> <Greek_RHO> : "₯" U20af
+<Multi_key> <Greek_DELTA> <Greek_rho> : "₯" U20af
+<Multi_key> <Greek_delta> <Greek_RHO> : "₯" U20af
+<Multi_key> <Greek_delta> <Greek_rho> : "₯" U20af
+
+<Multi_key> <question> <exclam> : "‽" U203D # INTERROBANG
+<Multi_key> <exclam> <question> : "‽" U203D # INTERROBANG
+
+<Multi_key> <1> <3> : "â…“" U2153 # VULGAR FRACTION ONE THIRD
+<Multi_key> <2> <3> : "â…”" U2154 # VULGAR FRACTION TWO THIRDS
+<Multi_key> <1> <5> : "â…•" U2155 # VULGAR FRACTION ONE FIFTH
+<Multi_key> <2> <5> : "â…–" U2156 # VULGAR FRACTION TWO FIFTHS
+<Multi_key> <3> <5> : "â…—" U2157 # VULGAR FRACTION THREE FIFTHS
+<Multi_key> <4> <5> : "â…˜" U2158 # VULGAR FRACTION FOUR FIFTHS
+<Multi_key> <1> <6> : "â…™" U2159 # VULGAR FRACTION ONE SIXTH
+<Multi_key> <5> <6> : "â…š" U215A # VULGAR FRACTION FIVE SIXTHS
+<Multi_key> <1> <8> : "â…›" U215B # VULGAR FRACTION ONE EIGHTH
+<Multi_key> <3> <8> : "⅜" U215C # VULGAR FRACTION THREE EIGHTHS
+<Multi_key> <5> <8> : "â…" U215D # VULGAR FRACTION FIVE EIGHTHS
+<Multi_key> <7> <8> : "â…ž" U215E # VULGAR FRACTION SEVEN EIGHTHS
+
+XCOMM
+XCOMM Khmer digraphs
+XCOMM
+
+<U17ff> : "ាំ"
+<U17fe> : "ោះ"
+<U17fd> : "áŸáŸ‡"
+<U17fc> : "ុំ"
+<U17fb> : "ុះ"
+
+XCOMM End
diff --git a/libX11/nls/en_US.UTF-8/XI18N_OBJS b/libX11/nls/en_US.UTF-8/XI18N_OBJS
index 1d481b615..f201bf435 100644
--- a/libX11/nls/en_US.UTF-8/XI18N_OBJS
+++ b/libX11/nls/en_US.UTF-8/XI18N_OBJS
@@ -1,8 +1,8 @@
-# CATEGORY(XLC|XIM|OM) SHARED_LIBRARY_NAME FUNCTION_NAME
-#
-# XI18N objects table for euro locales
-#
-XLC common/xlcUTF8Load _XlcUtf8Loader # XLC_open
-XOM common/xomLTRTTB _XomGenericOpenOM # XOM_open
-XIM common/xiiimp _SwitchOpenIM # XIM_open
-XIM common/xiiimp _XimpLocalOpenIM # XIM_open
+# CATEGORY(XLC|XIM|OM) SHARED_LIBRARY_NAME FUNCTION_NAME
+#
+# XI18N objects table for euro locales
+#
+XLC common/xlcUTF8Load _XlcUtf8Loader # XLC_open
+XOM common/xomLTRTTB _XomGenericOpenOM # XOM_open
+XIM common/xiiimp _SwitchOpenIM # XIM_open
+XIM common/xiiimp _XimpLocalOpenIM # XIM_open
diff --git a/libX11/nls/en_US.UTF-8/XLC_LOCALE.pre b/libX11/nls/en_US.UTF-8/XLC_LOCALE.pre
index 1678f9b3a..35d009f24 100644
--- a/libX11/nls/en_US.UTF-8/XLC_LOCALE.pre
+++ b/libX11/nls/en_US.UTF-8/XLC_LOCALE.pre
@@ -1,300 +1,300 @@
-XCOMM XLocale Database Sample for en_US.UTF-8
-XCOMM
-
-XCOMM
-XCOMM XLC_FONTSET category
-XCOMM
-XLC_FONTSET
-
-on_demand_loading True
-
-object_name generic
-
-XCOMM fs0 class (7 bit ASCII)
-fs0 {
- charset {
- name ISO8859-1:GL
- }
- font {
- primary ISO8859-1:GL
- vertical_rotate all
- }
-}
-XCOMM fs1 class (ISO8859 families)
-fs1 {
- charset {
- name ISO8859-1:GR
- }
- font {
- primary ISO8859-1:GR
- }
-}
-XCOMM fs2 class (ISO8859 families)
-fs2 {
- charset {
- name ISO8859-2:GR
- }
- font {
- primary ISO8859-2:GR
- }
-}
-XCOMM fs3 class (ISO8859 families)
-fs3 {
- charset {
- name ISO8859-3:GR
- }
- font {
- primary ISO8859-3:GR
- }
-}
-XCOMM fs4 class (ISO8859 families)
-fs4 {
- charset {
- name ISO8859-4:GR
- }
- font {
- primary ISO8859-4:GR
- }
-}
-XCOMM fs5 class (ISO8859 families)
-fs5 {
- charset {
- name ISO8859-5:GR
- }
- font {
- primary ISO8859-5:GR
- }
-}
-XCOMM fs6 class (koi8-r)
-fs6 {
- charset {
- name KOI8-R:GR
- }
- font {
- primary KOI8-R:GR
- }
-}
-XCOMM fs7 class (ISO8859 families)
-fs7 {
- charset {
- name ISO8859-7:GR
- }
- font {
- primary ISO8859-7:GR
- }
-}
-XCOMM fs9 class (ISO8859 families)
-fs8 {
- charset {
- name ISO8859-9:GR
- }
- font {
- primary ISO8859-9:GR
- }
-}
-XCOMM fs13 class (ISO8859 families)
-fs9 {
- charset {
- name ISO8859-13:GR
- }
- font {
- primary ISO8859-13:GR
- }
-}
-XCOMM fs14 class (ISO8859 families)
-fs10 {
- charset {
- name ISO8859-14:GR
- }
- font {
- primary ISO8859-14:GR
- }
-}
-XCOMM fs15 class (ISO8859 families)
-fs11 {
- charset {
- name ISO8859-15:GR
- }
- font {
- primary ISO8859-15:GR
- }
-}
-XCOMM fs16 class (Kanji)
-fs12 {
- charset {
- name JISX0208.1983-0:GL
- }
- font {
- primary JISX0208.1983-0:GL
- }
-}
-XCOMM fs17 class (Korean Character)
-fs13 {
- charset {
- name KSC5601.1987-0:GL
- }
- font {
- primary KSC5601.1987-0:GL
- }
-}
-XCOMM fs18 class (Chinese Han Character)
-fs14 {
- charset {
- name GB2312.1980-0:GL
- }
- font {
- primary GB2312.1980-0:GL
- }
-}
-XCOMM fs20 class (Half Kana)
-fs15 {
- charset {
- name JISX0201.1976-0:GR
- }
- font {
- primary JISX0201.1976-0:GR
- vertical_rotate all
- }
-}
-XCOMM ISO10646 should come last so the fonts above will actually be used
-XCOMM fs24 class
-fs16 {
- charset {
- name ISO10646-1
- }
- font {
- primary ISO10646-1
- }
-}
-END XLC_FONTSET
-
-XCOMM
-XCOMM XLC_XLOCALE category
-XCOMM
-XLC_XLOCALE
-
-encoding_name UTF-8
-mb_cur_max 6
-state_depend_encoding False
-
-XCOMM cs0 class
-cs0 {
- side GL:Default
- length 1
- ct_encoding ISO8859-1:GL
-}
-
-XCOMM cs1 class
-cs1 {
- side GR:Default
- length 1
- ct_encoding ISO8859-1:GR
-}
-
-XCOMM cs2 class
-cs2 {
- side GR
- length 1
- ct_encoding ISO8859-2:GR
-}
-
-XCOMM cs3 class
-cs3 {
- side GR
- length 1
- ct_encoding ISO8859-3:GR
-}
-
-XCOMM cs4 class
-cs4 {
- side GR
- length 1
- ct_encoding ISO8859-4:GR
-}
-
-XCOMM cs5 class
-cs5 {
- side GR
- length 1
- ct_encoding ISO8859-5:GR
-}
-
-XCOMM cs6 class
-cs6 {
- side GR
- length 1
- ct_encoding KOI8-R:GR
-}
-
-XCOMM cs7 class
-cs7 {
- side GR
- length 1
- ct_encoding ISO8859-7:GR
-}
-
-XCOMM cs9 class
-cs8 {
- side GR
- length 1
- ct_encoding ISO8859-9:GR
-}
-
-XCOMM cs13 class
-cs9 {
- side GR
- length 1
- ct_encoding ISO8859-13:GR
-}
-
-XCOMM cs14 class
-cs10 {
- side GR
- length 1
- ct_encoding ISO8859-14:GR
-}
-
-XCOMM cs15 class
-cs11 {
- side GR
- length 1
- ct_encoding ISO8859-15:GR
-}
-
-XCOMM cs16 class
-cs12 {
- side GR
- length 2
- ct_encoding JISX0208.1983-0:GL; JISX0208.1983-0:GR;\
- JISX0208.1983-1:GL; JISX0208.1983-1:GR
-}
-
-XCOMM cs17 class
-cs13 {
- side GL
- length 2
- ct_encoding KSC5601.1987-0:GL; KSC5601.1987-0:GR;\
- KSC5601.1987-1:GL; KSC5601.1987-1:GR
-}
-
-XCOMM cs18 class
-cs14 {
- side GR
- length 2
- ct_encoding GB2312.1980-0:GL; GB2312.1980-0:GR
-}
-
-XCOMM cs20 class
-cs15 {
- side GR
- length 1
- ct_encoding JISX0201.1976-0:GR
-}
-
-XCOMM cs24 class
-cs16 {
- side none
- ct_encoding ISO10646-1
-}
-
-END XLC_XLOCALE
+XCOMM XLocale Database Sample for en_US.UTF-8
+XCOMM
+
+XCOMM
+XCOMM XLC_FONTSET category
+XCOMM
+XLC_FONTSET
+
+on_demand_loading True
+
+object_name generic
+
+XCOMM fs0 class (7 bit ASCII)
+fs0 {
+ charset {
+ name ISO8859-1:GL
+ }
+ font {
+ primary ISO8859-1:GL
+ vertical_rotate all
+ }
+}
+XCOMM fs1 class (ISO8859 families)
+fs1 {
+ charset {
+ name ISO8859-1:GR
+ }
+ font {
+ primary ISO8859-1:GR
+ }
+}
+XCOMM fs2 class (ISO8859 families)
+fs2 {
+ charset {
+ name ISO8859-2:GR
+ }
+ font {
+ primary ISO8859-2:GR
+ }
+}
+XCOMM fs3 class (ISO8859 families)
+fs3 {
+ charset {
+ name ISO8859-3:GR
+ }
+ font {
+ primary ISO8859-3:GR
+ }
+}
+XCOMM fs4 class (ISO8859 families)
+fs4 {
+ charset {
+ name ISO8859-4:GR
+ }
+ font {
+ primary ISO8859-4:GR
+ }
+}
+XCOMM fs5 class (ISO8859 families)
+fs5 {
+ charset {
+ name ISO8859-5:GR
+ }
+ font {
+ primary ISO8859-5:GR
+ }
+}
+XCOMM fs6 class (koi8-r)
+fs6 {
+ charset {
+ name KOI8-R:GR
+ }
+ font {
+ primary KOI8-R:GR
+ }
+}
+XCOMM fs7 class (ISO8859 families)
+fs7 {
+ charset {
+ name ISO8859-7:GR
+ }
+ font {
+ primary ISO8859-7:GR
+ }
+}
+XCOMM fs9 class (ISO8859 families)
+fs8 {
+ charset {
+ name ISO8859-9:GR
+ }
+ font {
+ primary ISO8859-9:GR
+ }
+}
+XCOMM fs13 class (ISO8859 families)
+fs9 {
+ charset {
+ name ISO8859-13:GR
+ }
+ font {
+ primary ISO8859-13:GR
+ }
+}
+XCOMM fs14 class (ISO8859 families)
+fs10 {
+ charset {
+ name ISO8859-14:GR
+ }
+ font {
+ primary ISO8859-14:GR
+ }
+}
+XCOMM fs15 class (ISO8859 families)
+fs11 {
+ charset {
+ name ISO8859-15:GR
+ }
+ font {
+ primary ISO8859-15:GR
+ }
+}
+XCOMM fs16 class (Kanji)
+fs12 {
+ charset {
+ name JISX0208.1983-0:GL
+ }
+ font {
+ primary JISX0208.1983-0:GL
+ }
+}
+XCOMM fs17 class (Korean Character)
+fs13 {
+ charset {
+ name KSC5601.1987-0:GL
+ }
+ font {
+ primary KSC5601.1987-0:GL
+ }
+}
+XCOMM fs18 class (Chinese Han Character)
+fs14 {
+ charset {
+ name GB2312.1980-0:GL
+ }
+ font {
+ primary GB2312.1980-0:GL
+ }
+}
+XCOMM fs20 class (Half Kana)
+fs15 {
+ charset {
+ name JISX0201.1976-0:GR
+ }
+ font {
+ primary JISX0201.1976-0:GR
+ vertical_rotate all
+ }
+}
+XCOMM ISO10646 should come last so the fonts above will actually be used
+XCOMM fs24 class
+fs16 {
+ charset {
+ name ISO10646-1
+ }
+ font {
+ primary ISO10646-1
+ }
+}
+END XLC_FONTSET
+
+XCOMM
+XCOMM XLC_XLOCALE category
+XCOMM
+XLC_XLOCALE
+
+encoding_name UTF-8
+mb_cur_max 6
+state_depend_encoding False
+
+XCOMM cs0 class
+cs0 {
+ side GL:Default
+ length 1
+ ct_encoding ISO8859-1:GL
+}
+
+XCOMM cs1 class
+cs1 {
+ side GR:Default
+ length 1
+ ct_encoding ISO8859-1:GR
+}
+
+XCOMM cs2 class
+cs2 {
+ side GR
+ length 1
+ ct_encoding ISO8859-2:GR
+}
+
+XCOMM cs3 class
+cs3 {
+ side GR
+ length 1
+ ct_encoding ISO8859-3:GR
+}
+
+XCOMM cs4 class
+cs4 {
+ side GR
+ length 1
+ ct_encoding ISO8859-4:GR
+}
+
+XCOMM cs5 class
+cs5 {
+ side GR
+ length 1
+ ct_encoding ISO8859-5:GR
+}
+
+XCOMM cs6 class
+cs6 {
+ side GR
+ length 1
+ ct_encoding KOI8-R:GR
+}
+
+XCOMM cs7 class
+cs7 {
+ side GR
+ length 1
+ ct_encoding ISO8859-7:GR
+}
+
+XCOMM cs9 class
+cs8 {
+ side GR
+ length 1
+ ct_encoding ISO8859-9:GR
+}
+
+XCOMM cs13 class
+cs9 {
+ side GR
+ length 1
+ ct_encoding ISO8859-13:GR
+}
+
+XCOMM cs14 class
+cs10 {
+ side GR
+ length 1
+ ct_encoding ISO8859-14:GR
+}
+
+XCOMM cs15 class
+cs11 {
+ side GR
+ length 1
+ ct_encoding ISO8859-15:GR
+}
+
+XCOMM cs16 class
+cs12 {
+ side GR
+ length 2
+ ct_encoding JISX0208.1983-0:GL; JISX0208.1983-0:GR;\
+ JISX0208.1983-1:GL; JISX0208.1983-1:GR
+}
+
+XCOMM cs17 class
+cs13 {
+ side GL
+ length 2
+ ct_encoding KSC5601.1987-0:GL; KSC5601.1987-0:GR;\
+ KSC5601.1987-1:GL; KSC5601.1987-1:GR
+}
+
+XCOMM cs18 class
+cs14 {
+ side GR
+ length 2
+ ct_encoding GB2312.1980-0:GL; GB2312.1980-0:GR
+}
+
+XCOMM cs20 class
+cs15 {
+ side GR
+ length 1
+ ct_encoding JISX0201.1976-0:GR
+}
+
+XCOMM cs24 class
+cs16 {
+ side none
+ ct_encoding ISO10646-1
+}
+
+END XLC_XLOCALE
diff --git a/libX11/nls/georgian-academy/Compose.pre b/libX11/nls/georgian-academy/Compose.pre
index 2fe78a957..1f9b450c0 100644
--- a/libX11/nls/georgian-academy/Compose.pre
+++ b/libX11/nls/georgian-academy/Compose.pre
@@ -1,14 +1,14 @@
-XCOMM
-XCOMM georgian-academy Compose Sequence
-XCOMM
-XCOMM Sequence Definition
-XCOMM
-XCOMM
-XCOMM This file currently has no entries. It appears that a compose file (even
-XCOMM just an empty one) is required for the appropriate keysyms to work for
-XCOMM this encoding.
-XCOMM
-XCOMM <Multi_key> Means <Compose>
-XCOMM Special Character
-
-XCOMM End of Sequence Definition
+XCOMM
+XCOMM georgian-academy Compose Sequence
+XCOMM
+XCOMM Sequence Definition
+XCOMM
+XCOMM
+XCOMM This file currently has no entries. It appears that a compose file (even
+XCOMM just an empty one) is required for the appropriate keysyms to work for
+XCOMM this encoding.
+XCOMM
+XCOMM <Multi_key> Means <Compose>
+XCOMM Special Character
+
+XCOMM End of Sequence Definition
diff --git a/libX11/nls/georgian-academy/XI18N_OBJS b/libX11/nls/georgian-academy/XI18N_OBJS
index 53cb477eb..c4f7ffa19 100644
--- a/libX11/nls/georgian-academy/XI18N_OBJS
+++ b/libX11/nls/georgian-academy/XI18N_OBJS
@@ -1,7 +1,7 @@
-# CATEGORY(XLC|XIM|OM) SHARED_LIBRARY_NAME FUNCTION_NAME
-#
-# XI18N objects table for georgian-academy locale
-#
-XLC common/xlcDef _XlcDefaultLoader # XLC_open
-XIM common/ximcp _XimOpenIM _XimRegisterIMInstantiateCallback _XimUnRegisterIMInstantiateCallback # XIM_open XIM_register XIM_unregister
-XOM common/xomGeneric _XomGenericOpenOM # XOM_open
+# CATEGORY(XLC|XIM|OM) SHARED_LIBRARY_NAME FUNCTION_NAME
+#
+# XI18N objects table for georgian-academy locale
+#
+XLC common/xlcDef _XlcDefaultLoader # XLC_open
+XIM common/ximcp _XimOpenIM _XimRegisterIMInstantiateCallback _XimUnRegisterIMInstantiateCallback # XIM_open XIM_register XIM_unregister
+XOM common/xomGeneric _XomGenericOpenOM # XOM_open
diff --git a/libX11/nls/georgian-academy/XLC_LOCALE.pre b/libX11/nls/georgian-academy/XLC_LOCALE.pre
index 18c82ff28..c51b1efa7 100644
--- a/libX11/nls/georgian-academy/XLC_LOCALE.pre
+++ b/libX11/nls/georgian-academy/XLC_LOCALE.pre
@@ -1,79 +1,79 @@
-XCOMM XLocale Database Sample for georgian-academy
-XCOMM
-
-XCOMM
-XCOMM XLC_FONTSET category
-XCOMM
-XLC_FONTSET
-XCOMM fs0 class (7 bit ASCII)
-fs0 {
- charset {
- name ISO8859-1:GL
- }
- font {
- primary GEORGIAN-ACADEMY:GL
- substitute ISO8859-1:GL
- }
-}
-XCOMM fs1 class
-fs1 {
- charset GEORGIAN-ACADEMY:GR
- font GEORGIAN-ACADEMY:GR
-}
-END XLC_FONTSET
-
-XCOMM
-XCOMM XLC_CHARSET_DEFINE category
-XCOMM
-XLC_CHARSET_DEFINE
-csd0 {
- charset_name GEORGIAN-ACADEMY
- side GR
- length 1
- string_encoding False
- sequence \x1b%/1
-}
-END XLC_CHARSET_DEFINE
-
-XCOMM
-XCOMM XLC_XLOCALE category
-XCOMM
-XLC_XLOCALE
-
-encoding_name GEORGIAN-ACADEMY
-mb_cur_max 1
-state_depend_encoding False
-#if WCHAR32
-wc_encoding_mask \x30000000
-wc_shift_bits 7
-#else
-wc_encoding_mask \x00008080
-wc_shift_bits 8
-#endif
-
-#ifndef X_LOCALE
-use_stdc_env True
-#endif
-
-XCOMM cs0 class
-cs0 {
- side GL:Default
- length 1
- wc_encoding \x00000000
- ct_encoding GEORGIAN-ACADEMY:GL; ISO8859-1:GL
-}
-
-
-XCOMM cs1 class
-cs1 {
- side GR:Default
- length 1
-#if WCHAR32
- wc_encoding \x30000000
-#else
- wc_encoding \x00008080
-#endif
- ct_encoding GEORGIAN-ACADEMY:GR
-}
-
-END XLC_XLOCALE
+XCOMM XLocale Database Sample for georgian-academy
+XCOMM
+
+XCOMM
+XCOMM XLC_FONTSET category
+XCOMM
+XLC_FONTSET
+XCOMM fs0 class (7 bit ASCII)
+fs0 {
+ charset {
+ name ISO8859-1:GL
+ }
+ font {
+ primary GEORGIAN-ACADEMY:GL
+ substitute ISO8859-1:GL
+ }
+}
+XCOMM fs1 class
+fs1 {
+ charset GEORGIAN-ACADEMY:GR
+ font GEORGIAN-ACADEMY:GR
+}
+END XLC_FONTSET
+
+XCOMM
+XCOMM XLC_CHARSET_DEFINE category
+XCOMM
+XLC_CHARSET_DEFINE
+csd0 {
+ charset_name GEORGIAN-ACADEMY
+ side GR
+ length 1
+ string_encoding False
+ sequence \x1b%/1
+}
+END XLC_CHARSET_DEFINE
+
+XCOMM
+XCOMM XLC_XLOCALE category
+XCOMM
+XLC_XLOCALE
+
+encoding_name GEORGIAN-ACADEMY
+mb_cur_max 1
+state_depend_encoding False
+#if WCHAR32
+wc_encoding_mask \x30000000
+wc_shift_bits 7
+#else
+wc_encoding_mask \x00008080
+wc_shift_bits 8
+#endif
+
+#ifndef X_LOCALE
+use_stdc_env True
+#endif
+
+XCOMM cs0 class
+cs0 {
+ side GL:Default
+ length 1
+ wc_encoding \x00000000
+ ct_encoding GEORGIAN-ACADEMY:GL; ISO8859-1:GL
+}
+
+
+XCOMM cs1 class
+cs1 {
+ side GR:Default
+ length 1
+#if WCHAR32
+ wc_encoding \x30000000
+#else
+ wc_encoding \x00008080
+#endif
+ ct_encoding GEORGIAN-ACADEMY:GR
+}
+
+END XLC_XLOCALE
diff --git a/libX11/nls/georgian-ps/Compose.pre b/libX11/nls/georgian-ps/Compose.pre
index acbebbf63..672835b1d 100644
--- a/libX11/nls/georgian-ps/Compose.pre
+++ b/libX11/nls/georgian-ps/Compose.pre
@@ -1,14 +1,14 @@
-XCOMM
-XCOMM georgian-ps Compose Sequence
-XCOMM
-XCOMM Sequence Definition
-XCOMM
-XCOMM
-XCOMM This file currently has no entries. It appears that a compose file (even
-XCOMM just an empty one) is required for the appropriate keysyms to work for
-XCOMM this encoding.
-XCOMM
-XCOMM <Multi_key> Means <Compose>
-XCOMM Special Character
-
-XCOMM End of Sequence Definition
+XCOMM
+XCOMM georgian-ps Compose Sequence
+XCOMM
+XCOMM Sequence Definition
+XCOMM
+XCOMM
+XCOMM This file currently has no entries. It appears that a compose file (even
+XCOMM just an empty one) is required for the appropriate keysyms to work for
+XCOMM this encoding.
+XCOMM
+XCOMM <Multi_key> Means <Compose>
+XCOMM Special Character
+
+XCOMM End of Sequence Definition
diff --git a/libX11/nls/georgian-ps/XI18N_OBJS b/libX11/nls/georgian-ps/XI18N_OBJS
index b9907e77d..558452d9d 100644
--- a/libX11/nls/georgian-ps/XI18N_OBJS
+++ b/libX11/nls/georgian-ps/XI18N_OBJS
@@ -1,7 +1,7 @@
-# CATEGORY(XLC|XIM|OM) SHARED_LIBRARY_NAME FUNCTION_NAME
-#
-# XI18N objects table for georgian-ps locale
-#
-XLC common/xlcDef _XlcDefaultLoader # XLC_open
-XIM common/ximcp _XimOpenIM _XimRegisterIMInstantiateCallback _XimUnRegisterIMInstantiateCallback # XIM_open XIM_register XIM_unregister
-XOM common/xomGeneric _XomGenericOpenOM # XOM_open
+# CATEGORY(XLC|XIM|OM) SHARED_LIBRARY_NAME FUNCTION_NAME
+#
+# XI18N objects table for georgian-ps locale
+#
+XLC common/xlcDef _XlcDefaultLoader # XLC_open
+XIM common/ximcp _XimOpenIM _XimRegisterIMInstantiateCallback _XimUnRegisterIMInstantiateCallback # XIM_open XIM_register XIM_unregister
+XOM common/xomGeneric _XomGenericOpenOM # XOM_open
diff --git a/libX11/nls/georgian-ps/XLC_LOCALE.pre b/libX11/nls/georgian-ps/XLC_LOCALE.pre
index 9c1ba03d3..470dcae2d 100644
--- a/libX11/nls/georgian-ps/XLC_LOCALE.pre
+++ b/libX11/nls/georgian-ps/XLC_LOCALE.pre
@@ -1,79 +1,79 @@
-XCOMM XLocale Database Sample for georgian-ps
-XCOMM
-
-XCOMM
-XCOMM XLC_FONTSET category
-XCOMM
-XLC_FONTSET
-XCOMM fs0 class (7 bit ASCII)
-fs0 {
- charset {
- name ISO8859-1:GL
- }
- font {
- primary GEORGIAN-PS:GL
- substitute ISO8859-1:GL
- }
-}
-XCOMM fs1 class
-fs1 {
- charset GEORGIAN-PS:GR
- font GEORGIAN-PS:GR
-}
-END XLC_FONTSET
-
-XCOMM
-XCOMM XLC_CHARSET_DEFINE category
-XCOMM
-XLC_CHARSET_DEFINE
-csd0 {
- charset_name GEORGIAN-PS
- side GR
- length 1
- string_encoding False
- sequence \x1b%/1
-}
-END XLC_CHARSET_DEFINE
-
-XCOMM
-XCOMM XLC_XLOCALE category
-XCOMM
-XLC_XLOCALE
-
-encoding_name GEORGIAN-PS
-mb_cur_max 1
-state_depend_encoding False
-#if WCHAR32
-wc_encoding_mask \x30000000
-wc_shift_bits 7
-#else
-wc_encoding_mask \x00008080
-wc_shift_bits 8
-#endif
-
-#ifndef X_LOCALE
-use_stdc_env True
-#endif
-
-XCOMM cs0 class
-cs0 {
- side GL:Default
- length 1
- wc_encoding \x00000000
- ct_encoding GEORGIAN-PS:GL; ISO8859-1:GL
-}
-
-
-XCOMM cs1 class
-cs1 {
- side GR:Default
- length 1
-#if WCHAR32
- wc_encoding \x30000000
-#else
- wc_encoding \x00008080
-#endif
- ct_encoding GEORGIAN-PS:GR
-}
-
-END XLC_XLOCALE
+XCOMM XLocale Database Sample for georgian-ps
+XCOMM
+
+XCOMM
+XCOMM XLC_FONTSET category
+XCOMM
+XLC_FONTSET
+XCOMM fs0 class (7 bit ASCII)
+fs0 {
+ charset {
+ name ISO8859-1:GL
+ }
+ font {
+ primary GEORGIAN-PS:GL
+ substitute ISO8859-1:GL
+ }
+}
+XCOMM fs1 class
+fs1 {
+ charset GEORGIAN-PS:GR
+ font GEORGIAN-PS:GR
+}
+END XLC_FONTSET
+
+XCOMM
+XCOMM XLC_CHARSET_DEFINE category
+XCOMM
+XLC_CHARSET_DEFINE
+csd0 {
+ charset_name GEORGIAN-PS
+ side GR
+ length 1
+ string_encoding False
+ sequence \x1b%/1
+}
+END XLC_CHARSET_DEFINE
+
+XCOMM
+XCOMM XLC_XLOCALE category
+XCOMM
+XLC_XLOCALE
+
+encoding_name GEORGIAN-PS
+mb_cur_max 1
+state_depend_encoding False
+#if WCHAR32
+wc_encoding_mask \x30000000
+wc_shift_bits 7
+#else
+wc_encoding_mask \x00008080
+wc_shift_bits 8
+#endif
+
+#ifndef X_LOCALE
+use_stdc_env True
+#endif
+
+XCOMM cs0 class
+cs0 {
+ side GL:Default
+ length 1
+ wc_encoding \x00000000
+ ct_encoding GEORGIAN-PS:GL; ISO8859-1:GL
+}
+
+
+XCOMM cs1 class
+cs1 {
+ side GR:Default
+ length 1
+#if WCHAR32
+ wc_encoding \x30000000
+#else
+ wc_encoding \x00008080
+#endif
+ ct_encoding GEORGIAN-PS:GR
+}
+
+END XLC_XLOCALE
diff --git a/libX11/nls/ibm-cp1133/Compose.pre b/libX11/nls/ibm-cp1133/Compose.pre
index 69d3679fe..ef0f59aab 100644
--- a/libX11/nls/ibm-cp1133/Compose.pre
+++ b/libX11/nls/ibm-cp1133/Compose.pre
@@ -1,14 +1,14 @@
-XCOMM
-XCOMM ibm-cp1133 Compose Sequence
-XCOMM
-XCOMM Sequence Definition
-XCOMM
-XCOMM
-XCOMM This file currently has no entries. It appears that a compose file (even
-XCOMM just an empty one) is required for the appropriate keysyms to work for
-XCOMM this encoding.
-XCOMM
-XCOMM <Multi_key> Means <Compose>
-XCOMM Special Character
-
-XCOMM End of Sequence Definition
+XCOMM
+XCOMM ibm-cp1133 Compose Sequence
+XCOMM
+XCOMM Sequence Definition
+XCOMM
+XCOMM
+XCOMM This file currently has no entries. It appears that a compose file (even
+XCOMM just an empty one) is required for the appropriate keysyms to work for
+XCOMM this encoding.
+XCOMM
+XCOMM <Multi_key> Means <Compose>
+XCOMM Special Character
+
+XCOMM End of Sequence Definition
diff --git a/libX11/nls/ibm-cp1133/XI18N_OBJS b/libX11/nls/ibm-cp1133/XI18N_OBJS
index da47e0cfb..02ca83b16 100644
--- a/libX11/nls/ibm-cp1133/XI18N_OBJS
+++ b/libX11/nls/ibm-cp1133/XI18N_OBJS
@@ -1,7 +1,7 @@
-# CATEGORY(XLC|XIM|OM) SHARED_LIBRARY_NAME FUNCTION_NAME
-#
-# XI18N objects table for ibm-cp1133 locale
-#
-XLC common/xlcDef _XlcDefaultLoader # XLC_open
-XIM common/ximcp _XimOpenIM _XimRegisterIMInstantiateCallback _XimUnRegisterIMInstantiateCallback # XIM_open XIM_register XIM_unregister
-XOM common/xomGeneric _XomGenericOpenOM # XOM_open
+# CATEGORY(XLC|XIM|OM) SHARED_LIBRARY_NAME FUNCTION_NAME
+#
+# XI18N objects table for ibm-cp1133 locale
+#
+XLC common/xlcDef _XlcDefaultLoader # XLC_open
+XIM common/ximcp _XimOpenIM _XimRegisterIMInstantiateCallback _XimUnRegisterIMInstantiateCallback # XIM_open XIM_register XIM_unregister
+XOM common/xomGeneric _XomGenericOpenOM # XOM_open
diff --git a/libX11/nls/ibm-cp1133/XLC_LOCALE.pre b/libX11/nls/ibm-cp1133/XLC_LOCALE.pre
index 52e536242..f3b762c8f 100644
--- a/libX11/nls/ibm-cp1133/XLC_LOCALE.pre
+++ b/libX11/nls/ibm-cp1133/XLC_LOCALE.pre
@@ -1,79 +1,79 @@
-XCOMM XLocale Database Sample for ibm-cp1133.
-XCOMM
-
-XCOMM
-XCOMM XLC_FONTSET category
-XCOMM
-XLC_FONTSET
-XCOMM fs0 class (7 bit ASCII)
-fs0 {
- charset {
- name ISO8859-1:GL
- }
- font {
- primary IBM-CP1133:GL
- substitute ISO8859-1:GL
- }
-}
-XCOMM fs1 class
-fs1 {
- charset IBM-CP1133:GR
- font IBM-CP1133:GR
-}
-END XLC_FONTSET
-
-XCOMM
-XCOMM XLC_CHARSET_DEFINE category
-XCOMM
-XLC_CHARSET_DEFINE
-csd0 {
- charset_name IBM-CP1133
- side GR
- length 1
- string_encoding False
- sequence \x1b%/1
-}
-END XLC_CHARSET_DEFINE
-
-XCOMM
-XCOMM XLC_XLOCALE category
-XCOMM
-XLC_XLOCALE
-
-encoding_name IBM-CP1133
-mb_cur_max 1
-state_depend_encoding False
-#if WCHAR32
-wc_encoding_mask \x30000000
-wc_shift_bits 7
-#else
-wc_encoding_mask \x00008080
-wc_shift_bits 8
-#endif
-
-#ifndef X_LOCALE
-use_stdc_env True
-#endif
-
-XCOMM cs0 class
-cs0 {
- side GL:Default
- length 1
- wc_encoding \x00000000
- ct_encoding IBM-CP1133:GL; ISO8859-1:GL
-}
-
-
-XCOMM cs1 class
-cs1 {
- side GR:Default
- length 1
-#if WCHAR32
- wc_encoding \x30000000
-#else
- wc_encoding \x00008080
-#endif
- ct_encoding IBM-CP1133:GR
-}
-
-END XLC_XLOCALE
+XCOMM XLocale Database Sample for ibm-cp1133.
+XCOMM
+
+XCOMM
+XCOMM XLC_FONTSET category
+XCOMM
+XLC_FONTSET
+XCOMM fs0 class (7 bit ASCII)
+fs0 {
+ charset {
+ name ISO8859-1:GL
+ }
+ font {
+ primary IBM-CP1133:GL
+ substitute ISO8859-1:GL
+ }
+}
+XCOMM fs1 class
+fs1 {
+ charset IBM-CP1133:GR
+ font IBM-CP1133:GR
+}
+END XLC_FONTSET
+
+XCOMM
+XCOMM XLC_CHARSET_DEFINE category
+XCOMM
+XLC_CHARSET_DEFINE
+csd0 {
+ charset_name IBM-CP1133
+ side GR
+ length 1
+ string_encoding False
+ sequence \x1b%/1
+}
+END XLC_CHARSET_DEFINE
+
+XCOMM
+XCOMM XLC_XLOCALE category
+XCOMM
+XLC_XLOCALE
+
+encoding_name IBM-CP1133
+mb_cur_max 1
+state_depend_encoding False
+#if WCHAR32
+wc_encoding_mask \x30000000
+wc_shift_bits 7
+#else
+wc_encoding_mask \x00008080
+wc_shift_bits 8
+#endif
+
+#ifndef X_LOCALE
+use_stdc_env True
+#endif
+
+XCOMM cs0 class
+cs0 {
+ side GL:Default
+ length 1
+ wc_encoding \x00000000
+ ct_encoding IBM-CP1133:GL; ISO8859-1:GL
+}
+
+
+XCOMM cs1 class
+cs1 {
+ side GR:Default
+ length 1
+#if WCHAR32
+ wc_encoding \x30000000
+#else
+ wc_encoding \x00008080
+#endif
+ ct_encoding IBM-CP1133:GR
+}
+
+END XLC_XLOCALE
diff --git a/libX11/nls/iscii-dev/XI18N_OBJS b/libX11/nls/iscii-dev/XI18N_OBJS
index 568791098..0dbaed515 100644
--- a/libX11/nls/iscii-dev/XI18N_OBJS
+++ b/libX11/nls/iscii-dev/XI18N_OBJS
@@ -1,7 +1,7 @@
-# CATEGORY(XLC|XIM|OM) SHARED_LIBRARY_NAME FUNCTION_NAME
-#
-# XI18N objects table for iscii-dev locale
-#
-XLC common/xlcDef _XlcDefaultLoader # XLC_open
-XIM common/ximcp _XimOpenIM _XimRegisterIMInstantiateCallback _XimUnRegisterIMInstantiateCallback # XIM_open XIM_register XIM_unregister
-XOM common/xomGeneric _XomGenericOpenOM # XOM_open
+# CATEGORY(XLC|XIM|OM) SHARED_LIBRARY_NAME FUNCTION_NAME
+#
+# XI18N objects table for iscii-dev locale
+#
+XLC common/xlcDef _XlcDefaultLoader # XLC_open
+XIM common/ximcp _XimOpenIM _XimRegisterIMInstantiateCallback _XimUnRegisterIMInstantiateCallback # XIM_open XIM_register XIM_unregister
+XOM common/xomGeneric _XomGenericOpenOM # XOM_open
diff --git a/libX11/nls/iscii-dev/XLC_LOCALE.pre b/libX11/nls/iscii-dev/XLC_LOCALE.pre
index 7a300cf81..1ddb1861c 100644
--- a/libX11/nls/iscii-dev/XLC_LOCALE.pre
+++ b/libX11/nls/iscii-dev/XLC_LOCALE.pre
@@ -1,79 +1,79 @@
-XCOMM XLocale Database Sample for mulelao-1.
-XCOMM
-
-XCOMM
-XCOMM XLC_FONTSET category
-XCOMM
-XLC_FONTSET
-XCOMM fs0 class (7 bit ASCII)
-fs0 {
- charset {
- name ISO8859-1:GL
- }
- font {
- primary ISCII-DEV:GL
- substitute ISO8859-1:GL
- }
-}
-XCOMM fs1 class
-fs1 {
- charset ISCII-DEV:GR
- font ISCII-DEV:GR
-}
-END XLC_FONTSET
-
-XCOMM
-XCOMM XLC_CHARSET_DEFINE category
-XCOMM
-XLC_CHARSET_DEFINE
-csd0 {
- charset_name ISCII-DEV
- side GR
- length 1
- string_encoding False
- sequence \x1b%/1
-}
-END XLC_CHARSET_DEFINE
-
-XCOMM
-XCOMM XLC_XLOCALE category
-XCOMM
-XLC_XLOCALE
-
-encoding_name ISCII-DEV
-mb_cur_max 1
-state_depend_encoding False
-#if WCHAR32
-wc_encoding_mask \x30000000
-wc_shift_bits 7
-#else
-wc_encoding_mask \x00008080
-wc_shift_bits 8
-#endif
-
-#ifndef X_LOCALE
-use_stdc_env True
-#endif
-
-XCOMM cs0 class
-cs0 {
- side GL:Default
- length 1
- wc_encoding \x00000000
- ct_encoding ISCII-DEV:GL; ISO8859-1:GL
-}
-
-
-XCOMM cs1 class
-cs1 {
- side GR:Default
- length 1
-#if WCHAR32
- wc_encoding \x30000000
-#else
- wc_encoding \x00008080
-#endif
- ct_encoding ISCII-DEV:GR
-}
-
-END XLC_XLOCALE
+XCOMM XLocale Database Sample for mulelao-1.
+XCOMM
+
+XCOMM
+XCOMM XLC_FONTSET category
+XCOMM
+XLC_FONTSET
+XCOMM fs0 class (7 bit ASCII)
+fs0 {
+ charset {
+ name ISO8859-1:GL
+ }
+ font {
+ primary ISCII-DEV:GL
+ substitute ISO8859-1:GL
+ }
+}
+XCOMM fs1 class
+fs1 {
+ charset ISCII-DEV:GR
+ font ISCII-DEV:GR
+}
+END XLC_FONTSET
+
+XCOMM
+XCOMM XLC_CHARSET_DEFINE category
+XCOMM
+XLC_CHARSET_DEFINE
+csd0 {
+ charset_name ISCII-DEV
+ side GR
+ length 1
+ string_encoding False
+ sequence \x1b%/1
+}
+END XLC_CHARSET_DEFINE
+
+XCOMM
+XCOMM XLC_XLOCALE category
+XCOMM
+XLC_XLOCALE
+
+encoding_name ISCII-DEV
+mb_cur_max 1
+state_depend_encoding False
+#if WCHAR32
+wc_encoding_mask \x30000000
+wc_shift_bits 7
+#else
+wc_encoding_mask \x00008080
+wc_shift_bits 8
+#endif
+
+#ifndef X_LOCALE
+use_stdc_env True
+#endif
+
+XCOMM cs0 class
+cs0 {
+ side GL:Default
+ length 1
+ wc_encoding \x00000000
+ ct_encoding ISCII-DEV:GL; ISO8859-1:GL
+}
+
+
+XCOMM cs1 class
+cs1 {
+ side GR:Default
+ length 1
+#if WCHAR32
+ wc_encoding \x30000000
+#else
+ wc_encoding \x00008080
+#endif
+ ct_encoding ISCII-DEV:GR
+}
+
+END XLC_XLOCALE
diff --git a/libX11/nls/isiri-3342/XI18N_OBJS b/libX11/nls/isiri-3342/XI18N_OBJS
index 0eab87106..028d84716 100644
--- a/libX11/nls/isiri-3342/XI18N_OBJS
+++ b/libX11/nls/isiri-3342/XI18N_OBJS
@@ -1,7 +1,7 @@
-# CATEGORY(XLC|XIM|OM) SHARED_LIBRARY_NAME FUNCTION_NAME
-#
-# XI18N objects table for isiri-3342 locale
-#
-XLC common/xlcDef _XlcDefaultLoader # XLC_open
-XIM common/ximcp _XimOpenIM _XimRegisterIMInstantiateCallback _XimUnRegisterIMInstantiateCallback # XIM_open XIM_register XIM_unregister
-XOM common/xomGeneric _XomGenericOpenOM # XOM_open
+# CATEGORY(XLC|XIM|OM) SHARED_LIBRARY_NAME FUNCTION_NAME
+#
+# XI18N objects table for isiri-3342 locale
+#
+XLC common/xlcDef _XlcDefaultLoader # XLC_open
+XIM common/ximcp _XimOpenIM _XimRegisterIMInstantiateCallback _XimUnRegisterIMInstantiateCallback # XIM_open XIM_register XIM_unregister
+XOM common/xomGeneric _XomGenericOpenOM # XOM_open
diff --git a/libX11/nls/isiri-3342/XLC_LOCALE.pre b/libX11/nls/isiri-3342/XLC_LOCALE.pre
index a375c623a..59072fcea 100644
--- a/libX11/nls/isiri-3342/XLC_LOCALE.pre
+++ b/libX11/nls/isiri-3342/XLC_LOCALE.pre
@@ -1,79 +1,79 @@
-XCOMM XLocale Database Sample for mulelao-1.
-XCOMM
-
-XCOMM
-XCOMM XLC_FONTSET category
-XCOMM
-XLC_FONTSET
-XCOMM fs0 class (7 bit ASCII)
-fs0 {
- charset {
- name ISO8859-1:GL
- }
- font {
- primary ISIRI-3342:GL
- substitute ISO8859-1:GL
- }
-}
-XCOMM fs1 class
-fs1 {
- charset ISIRI-3342:GR
- font ISIRI-3342:GR
-}
-END XLC_FONTSET
-
-XCOMM
-XCOMM XLC_CHARSET_DEFINE category
-XCOMM
-XLC_CHARSET_DEFINE
-csd0 {
- charset_name ISIRI-3342
- side GR
- length 1
- string_encoding False
- sequence \x1b%/1
-}
-END XLC_CHARSET_DEFINE
-
-XCOMM
-XCOMM XLC_XLOCALE category
-XCOMM
-XLC_XLOCALE
-
-encoding_name ISIRI-3342
-mb_cur_max 1
-state_depend_encoding False
-#if WCHAR32
-wc_encoding_mask \x30000000
-wc_shift_bits 7
-#else
-wc_encoding_mask \x00008080
-wc_shift_bits 8
-#endif
-
-#ifndef X_LOCALE
-use_stdc_env True
-#endif
-
-XCOMM cs0 class
-cs0 {
- side GL:Default
- length 1
- wc_encoding \x00000000
- ct_encoding ISIRI-3342:GL; ISO8859-1:GL
-}
-
-
-XCOMM cs1 class
-cs1 {
- side GR:Default
- length 1
-#if WCHAR32
- wc_encoding \x30000000
-#else
- wc_encoding \x00008080
-#endif
- ct_encoding ISIRI-3342:GR
-}
-
-END XLC_XLOCALE
+XCOMM XLocale Database Sample for mulelao-1.
+XCOMM
+
+XCOMM
+XCOMM XLC_FONTSET category
+XCOMM
+XLC_FONTSET
+XCOMM fs0 class (7 bit ASCII)
+fs0 {
+ charset {
+ name ISO8859-1:GL
+ }
+ font {
+ primary ISIRI-3342:GL
+ substitute ISO8859-1:GL
+ }
+}
+XCOMM fs1 class
+fs1 {
+ charset ISIRI-3342:GR
+ font ISIRI-3342:GR
+}
+END XLC_FONTSET
+
+XCOMM
+XCOMM XLC_CHARSET_DEFINE category
+XCOMM
+XLC_CHARSET_DEFINE
+csd0 {
+ charset_name ISIRI-3342
+ side GR
+ length 1
+ string_encoding False
+ sequence \x1b%/1
+}
+END XLC_CHARSET_DEFINE
+
+XCOMM
+XCOMM XLC_XLOCALE category
+XCOMM
+XLC_XLOCALE
+
+encoding_name ISIRI-3342
+mb_cur_max 1
+state_depend_encoding False
+#if WCHAR32
+wc_encoding_mask \x30000000
+wc_shift_bits 7
+#else
+wc_encoding_mask \x00008080
+wc_shift_bits 8
+#endif
+
+#ifndef X_LOCALE
+use_stdc_env True
+#endif
+
+XCOMM cs0 class
+cs0 {
+ side GL:Default
+ length 1
+ wc_encoding \x00000000
+ ct_encoding ISIRI-3342:GL; ISO8859-1:GL
+}
+
+
+XCOMM cs1 class
+cs1 {
+ side GR:Default
+ length 1
+#if WCHAR32
+ wc_encoding \x30000000
+#else
+ wc_encoding \x00008080
+#endif
+ ct_encoding ISIRI-3342:GR
+}
+
+END XLC_XLOCALE
diff --git a/libX11/nls/iso8859-1/XI18N_OBJS b/libX11/nls/iso8859-1/XI18N_OBJS
index f4065656f..32e4f3588 100644
--- a/libX11/nls/iso8859-1/XI18N_OBJS
+++ b/libX11/nls/iso8859-1/XI18N_OBJS
@@ -1,8 +1,8 @@
-# CATEGORY(XLC|XIM|OM) SHARED_LIBRARY_NAME FUNCTION_NAME
-#
-# XI18N objects table for euro locales
-#
-XLC common/xlibi18n _XlcGenericLoader # XLC_open
-XIM common/ximcp _XimOpenIM # XIM_open
-XOM common/xomGeneric _XomGenericOpenOM # XOM_open
-
+# CATEGORY(XLC|XIM|OM) SHARED_LIBRARY_NAME FUNCTION_NAME
+#
+# XI18N objects table for euro locales
+#
+XLC common/xlibi18n _XlcGenericLoader # XLC_open
+XIM common/ximcp _XimOpenIM # XIM_open
+XOM common/xomGeneric _XomGenericOpenOM # XOM_open
+
diff --git a/libX11/nls/iso8859-1/XLC_LOCALE.pre b/libX11/nls/iso8859-1/XLC_LOCALE.pre
index 72ee4f8e7..af09009b3 100644
--- a/libX11/nls/iso8859-1/XLC_LOCALE.pre
+++ b/libX11/nls/iso8859-1/XLC_LOCALE.pre
@@ -1,71 +1,71 @@
-XCOMM XLocale Database Sample for iso8859-1.
-XCOMM
-
-XCOMM
-XCOMM XLC_FONTSET category
-XCOMM
-XLC_FONTSET
-XCOMM fs0 class
-fs0 {
- charset {
- name ISO8859-1:GL
- }
- font {
- primary ISO8859-1:GL
- vertical_rotate all
- }
-}
-XCOMM fs1 class
-fs1 {
- charset {
- name ISO8859-1:GR
- }
- font {
- primary ISO8859-1:GR
- }
-}
-END XLC_FONTSET
-
-XCOMM
-XCOMM XLC_XLOCALE category
-XCOMM
-XLC_XLOCALE
-
-encoding_name ISO8859-1
-mb_cur_max 1
-state_depend_encoding False
-#if WCHAR32
-wc_encoding_mask \x30000000
-wc_shift_bits 7
-#else
-wc_encoding_mask \x00008080
-wc_shift_bits 8
-#endif
-
-#ifndef X_LOCALE
-use_stdc_env True
-force_convert_to_mb True
-#endif
-
-XCOMM cs0 class
-cs0 {
- side GL:Default
- length 1
- wc_encoding \x00000000
- ct_encoding ISO8859-1:GL
-}
-
-
-XCOMM cs1 class
-cs1 {
- side GR:Default
- length 1
-#if WCHAR32
- wc_encoding \x30000000
-#else
- wc_encoding \x00008080
-#endif
- ct_encoding ISO8859-1:GR
-}
-
-END XLC_XLOCALE
+XCOMM XLocale Database Sample for iso8859-1.
+XCOMM
+
+XCOMM
+XCOMM XLC_FONTSET category
+XCOMM
+XLC_FONTSET
+XCOMM fs0 class
+fs0 {
+ charset {
+ name ISO8859-1:GL
+ }
+ font {
+ primary ISO8859-1:GL
+ vertical_rotate all
+ }
+}
+XCOMM fs1 class
+fs1 {
+ charset {
+ name ISO8859-1:GR
+ }
+ font {
+ primary ISO8859-1:GR
+ }
+}
+END XLC_FONTSET
+
+XCOMM
+XCOMM XLC_XLOCALE category
+XCOMM
+XLC_XLOCALE
+
+encoding_name ISO8859-1
+mb_cur_max 1
+state_depend_encoding False
+#if WCHAR32
+wc_encoding_mask \x30000000
+wc_shift_bits 7
+#else
+wc_encoding_mask \x00008080
+wc_shift_bits 8
+#endif
+
+#ifndef X_LOCALE
+use_stdc_env True
+force_convert_to_mb True
+#endif
+
+XCOMM cs0 class
+cs0 {
+ side GL:Default
+ length 1
+ wc_encoding \x00000000
+ ct_encoding ISO8859-1:GL
+}
+
+
+XCOMM cs1 class
+cs1 {
+ side GR:Default
+ length 1
+#if WCHAR32
+ wc_encoding \x30000000
+#else
+ wc_encoding \x00008080
+#endif
+ ct_encoding ISO8859-1:GR
+}
+
+END XLC_XLOCALE
diff --git a/libX11/nls/iso8859-10/Compose.pre b/libX11/nls/iso8859-10/Compose.pre
index 1809f509f..12fa7f669 100644
--- a/libX11/nls/iso8859-10/Compose.pre
+++ b/libX11/nls/iso8859-10/Compose.pre
@@ -1,14 +1,14 @@
-XCOMM
-XCOMM ISO 8859-10 Compose Sequence
-XCOMM
-XCOMM Sequence Definition
-XCOMM
-XCOMM
-XCOMM This file currently has no entries. It appears that a compose file (even
-XCOMM just an empty one) is required for the appropriate keysyms to work for
-XCOMM this encoding.
-XCOMM
-XCOMM <Multi_key> Means <Compose>
-XCOMM Special Character
-
-XCOMM End of Sequence Definition
+XCOMM
+XCOMM ISO 8859-10 Compose Sequence
+XCOMM
+XCOMM Sequence Definition
+XCOMM
+XCOMM
+XCOMM This file currently has no entries. It appears that a compose file (even
+XCOMM just an empty one) is required for the appropriate keysyms to work for
+XCOMM this encoding.
+XCOMM
+XCOMM <Multi_key> Means <Compose>
+XCOMM Special Character
+
+XCOMM End of Sequence Definition
diff --git a/libX11/nls/iso8859-10/XI18N_OBJS b/libX11/nls/iso8859-10/XI18N_OBJS
index 7d27dba61..7e3b8549c 100644
--- a/libX11/nls/iso8859-10/XI18N_OBJS
+++ b/libX11/nls/iso8859-10/XI18N_OBJS
@@ -1,7 +1,7 @@
-# CATEGORY(XLC|XIM|OM) SHARED_LIBRARY_NAME FUNCTION_NAME
-#
-# XI18N objects table for iso8859-10 locale
-#
-XLC common/xlcDef _XlcDefaultLoader # XLC_open
-XIM common/ximcp _XimOpenIM _XimRegisterIMInstantiateCallback _XimUnRegisterIMInstantiateCallback # XIM_open XIM_register XIM_unregister
-XOM common/xomGeneric _XomGenericOpenOM # XOM_open
+# CATEGORY(XLC|XIM|OM) SHARED_LIBRARY_NAME FUNCTION_NAME
+#
+# XI18N objects table for iso8859-10 locale
+#
+XLC common/xlcDef _XlcDefaultLoader # XLC_open
+XIM common/ximcp _XimOpenIM _XimRegisterIMInstantiateCallback _XimUnRegisterIMInstantiateCallback # XIM_open XIM_register XIM_unregister
+XOM common/xomGeneric _XomGenericOpenOM # XOM_open
diff --git a/libX11/nls/iso8859-10/XLC_LOCALE.pre b/libX11/nls/iso8859-10/XLC_LOCALE.pre
index 9dfbb7f3f..a075c38c7 100644
--- a/libX11/nls/iso8859-10/XLC_LOCALE.pre
+++ b/libX11/nls/iso8859-10/XLC_LOCALE.pre
@@ -1,72 +1,72 @@
-XCOMM XLocale Database Sample for iso8859-4.
-XCOMM
-
-XCOMM
-XCOMM XLC_FONTSET category
-XCOMM
-XLC_FONTSET
-XCOMM fs0 class
-fs0 {
- charset {
- name ISO8859-1:GL
- }
- font {
- primary ISO8859-10:GL
- substitute ISO8859-1:GL
- vertical_rotate all
- }
-}
-XCOMM fs1 class
-fs1 {
- charset {
- name ISO8859-10:GR
- }
- font {
- primary ISO8859-10:GR
- }
-}
-END XLC_FONTSET
-
-XCOMM
-XCOMM XLC_XLOCALE category
-XCOMM
-XLC_XLOCALE
-
-encoding_name ISO8859-10
-mb_cur_max 1
-state_depend_encoding False
-#if WCHAR32
-wc_encoding_mask \x30000000
-wc_shift_bits 7
-#else
-wc_encoding_mask \x00008080
-wc_shift_bits 8
-#endif
-
-#ifndef X_LOCALE
-use_stdc_env True
-force_convert_to_mb True
-#endif
-
-XCOMM cs0 class
-cs0 {
- side GL:Default
- length 1
- wc_encoding \x00000000
- ct_encoding ISO8859-10:GL; ISO8859-1:GL
-}
-
-
-XCOMM cs1 class
-cs1 {
- side GR:Default
- length 1
-#if WCHAR32
- wc_encoding \x30000000
-#else
- wc_encoding \x00008080
-#endif
- ct_encoding ISO8859-10:GR
-}
-
-END XLC_XLOCALE
+XCOMM XLocale Database Sample for iso8859-4.
+XCOMM
+
+XCOMM
+XCOMM XLC_FONTSET category
+XCOMM
+XLC_FONTSET
+XCOMM fs0 class
+fs0 {
+ charset {
+ name ISO8859-1:GL
+ }
+ font {
+ primary ISO8859-10:GL
+ substitute ISO8859-1:GL
+ vertical_rotate all
+ }
+}
+XCOMM fs1 class
+fs1 {
+ charset {
+ name ISO8859-10:GR
+ }
+ font {
+ primary ISO8859-10:GR
+ }
+}
+END XLC_FONTSET
+
+XCOMM
+XCOMM XLC_XLOCALE category
+XCOMM
+XLC_XLOCALE
+
+encoding_name ISO8859-10
+mb_cur_max 1
+state_depend_encoding False
+#if WCHAR32
+wc_encoding_mask \x30000000
+wc_shift_bits 7
+#else
+wc_encoding_mask \x00008080
+wc_shift_bits 8
+#endif
+
+#ifndef X_LOCALE
+use_stdc_env True
+force_convert_to_mb True
+#endif
+
+XCOMM cs0 class
+cs0 {
+ side GL:Default
+ length 1
+ wc_encoding \x00000000
+ ct_encoding ISO8859-10:GL; ISO8859-1:GL
+}
+
+
+XCOMM cs1 class
+cs1 {
+ side GR:Default
+ length 1
+#if WCHAR32
+ wc_encoding \x30000000
+#else
+ wc_encoding \x00008080
+#endif
+ ct_encoding ISO8859-10:GR
+}
+
+END XLC_XLOCALE
diff --git a/libX11/nls/iso8859-11/XI18N_OBJS b/libX11/nls/iso8859-11/XI18N_OBJS
index 24f9e7e74..168ccc04d 100644
--- a/libX11/nls/iso8859-11/XI18N_OBJS
+++ b/libX11/nls/iso8859-11/XI18N_OBJS
@@ -1,8 +1,8 @@
-# CATEGORY(XLC|XIM|OM) SHARED_LIBRARY_NAME FUNCTION_NAME
-#
-# XI18N objects table for iso8859-11 locale
-#
-#
-XLC common/xlcDef _XlcDefaultLoader # XLC_open
-XIM common/ximcp _XimOpenIM _XimRegisterIMInstantiateCallback _XimUnRegisterIMInstantiateCallback # XIM_open XIM_register XIM_unregister
-XOM common/xomGeneric _XomGenericOpenOM # XOM_open
+# CATEGORY(XLC|XIM|OM) SHARED_LIBRARY_NAME FUNCTION_NAME
+#
+# XI18N objects table for iso8859-11 locale
+#
+#
+XLC common/xlcDef _XlcDefaultLoader # XLC_open
+XIM common/ximcp _XimOpenIM _XimRegisterIMInstantiateCallback _XimUnRegisterIMInstantiateCallback # XIM_open XIM_register XIM_unregister
+XOM common/xomGeneric _XomGenericOpenOM # XOM_open
diff --git a/libX11/nls/iso8859-11/XLC_LOCALE.pre b/libX11/nls/iso8859-11/XLC_LOCALE.pre
index 1d332be90..4949e654b 100644
--- a/libX11/nls/iso8859-11/XLC_LOCALE.pre
+++ b/libX11/nls/iso8859-11/XLC_LOCALE.pre
@@ -1,72 +1,72 @@
-XCOMM XLocale Database Sample for iso8859-11.
-XCOMM
-
-XCOMM
-XCOMM XLC_FONTSET category
-XCOMM
-XLC_FONTSET
-XCOMM fs0 class
-fs0 {
- charset {
- name ISO8859-1:GL
- }
- font {
- primary ISO8859-11:GL
- substitute ISO8859-1:GL
- vertical_rotate all
- }
-}
-XCOMM fs1 class
-fs1 {
- charset {
- name ISO8859-11:GR
- }
- font {
- primary ISO8859-11:GR
- }
-}
-END XLC_FONTSET
-
-XCOMM
-XCOMM XLC_XLOCALE category
-XCOMM
-XLC_XLOCALE
-
-encoding_name ISO8859-11
-mb_cur_max 1
-state_depend_encoding False
-#if WCHAR32
-wc_encoding_mask \x30000000
-wc_shift_bits 7
-#else
-wc_encoding_mask \x00008080
-wc_shift_bits 8
-#endif
-
-#ifndef X_LOCALE
-use_stdc_env True
-force_convert_to_mb True
-#endif
-
-XCOMM cs0 class
-cs0 {
- side GL:Default
- length 1
- wc_encoding \x00000000
- ct_encoding ISO8859-11:GL; ISO8859-1:GL
-}
-
-
-XCOMM cs1 class
-cs1 {
- side GR:Default
- length 1
-#if WCHAR32
- wc_encoding \x30000000
-#else
- wc_encoding \x00008080
-#endif
- ct_encoding ISO8859-11:GR
-}
-
-END XLC_XLOCALE
+XCOMM XLocale Database Sample for iso8859-11.
+XCOMM
+
+XCOMM
+XCOMM XLC_FONTSET category
+XCOMM
+XLC_FONTSET
+XCOMM fs0 class
+fs0 {
+ charset {
+ name ISO8859-1:GL
+ }
+ font {
+ primary ISO8859-11:GL
+ substitute ISO8859-1:GL
+ vertical_rotate all
+ }
+}
+XCOMM fs1 class
+fs1 {
+ charset {
+ name ISO8859-11:GR
+ }
+ font {
+ primary ISO8859-11:GR
+ }
+}
+END XLC_FONTSET
+
+XCOMM
+XCOMM XLC_XLOCALE category
+XCOMM
+XLC_XLOCALE
+
+encoding_name ISO8859-11
+mb_cur_max 1
+state_depend_encoding False
+#if WCHAR32
+wc_encoding_mask \x30000000
+wc_shift_bits 7
+#else
+wc_encoding_mask \x00008080
+wc_shift_bits 8
+#endif
+
+#ifndef X_LOCALE
+use_stdc_env True
+force_convert_to_mb True
+#endif
+
+XCOMM cs0 class
+cs0 {
+ side GL:Default
+ length 1
+ wc_encoding \x00000000
+ ct_encoding ISO8859-11:GL; ISO8859-1:GL
+}
+
+
+XCOMM cs1 class
+cs1 {
+ side GR:Default
+ length 1
+#if WCHAR32
+ wc_encoding \x30000000
+#else
+ wc_encoding \x00008080
+#endif
+ ct_encoding ISO8859-11:GR
+}
+
+END XLC_XLOCALE
diff --git a/libX11/nls/iso8859-13/Compose.pre b/libX11/nls/iso8859-13/Compose.pre
index 410201873..3e02ca9c1 100644
--- a/libX11/nls/iso8859-13/Compose.pre
+++ b/libX11/nls/iso8859-13/Compose.pre
@@ -1,432 +1,432 @@
-XCOMM
-XCOMM ISO 8859-13 (Latin7) Compose Sequence
-XCOMM
-XCOMM Sequence Definition
-XCOMM
-XCOMM <Multi_key> Means <Compose>
-XCOMM Special Character
-XCOMM Right-hand side (Accented Alphabet)
-XCOMM These compose sequences are pure supposition on my part.
-XCOMM It would be nice to know what the real cultural conventions
-XCOMM are for compose sequences.
-<Multi_key> <plus> <plus> : "#" numbersign
-<Multi_key> <apostrophe> <space> : "'" apostrophe
-<Multi_key> <space> <apostrophe> : "'" apostrophe
-<Multi_key> <A> <T> : "@" at
-<Multi_key> <parenleft> <parenleft> : "[" bracketleft
-<Multi_key> <slash> <slash> : "\\" backslash
-<Multi_key> <slash> <less> : "\\" backslash
-<Multi_key> <less> <slash> : "\\" backslash
-<Multi_key> <parenright> <parenright> : "]" bracketright
-<Multi_key> <asciicircum> <space> : "^" asciicircum
-<Multi_key> <space> <asciicircum> : "^" asciicircum
-<Multi_key> <greater> <space> : "^" asciicircum
-<Multi_key> <space> <greater> : "^" asciicircum
-<Multi_key> <grave> <space> : "`" grave
-<Multi_key> <space> <grave> : "`" grave
-<Multi_key> <less> <apostrophe> : "`" grave
-<Multi_key> <apostrophe> <less> : "`" grave
-<Multi_key> <parenleft> <minus> : "{" braceleft
-<Multi_key> <minus> <parenleft> : "{" braceleft
-<Multi_key> <slash> <asciicircum> : "|" bar
-<Multi_key> <asciicircum> <slash> : "|" bar
-<Multi_key> <parenright> <minus> : "}" braceright
-<Multi_key> <minus> <parenright> : "}" braceright
-<Multi_key> <asciitilde> <space> : "~" asciitilde
-<Multi_key> <space> <asciitilde> : "~" asciitilde
-<Multi_key> <minus> <space> : "~" asciitilde
-<Multi_key> <space> <minus> : "~" asciitilde
-<Multi_key> <greater> <quotedbl> : "\241" rightdoublequotemark
-<Multi_key> <quotedbl> <greater> : "\241" rightdoublequotemark
-<Multi_key> <greater> <comma> : "\245" doublelowquotemark
-<Multi_key> <comma> <greater> : "\245" doublelowquotemark
-<Multi_key> <less> <quotedbl> : "\264" leftdoublequotemark
-<Multi_key> <quotedbl> <less> : "\264" leftdoublequotemark
-<Multi_key> <less> <less> : "\253" guillemotleft
-<Multi_key> <greater> <greater> : "\273" guillemotright
-<Multi_key> <apostrophe> <apostrophe> : "\377" rightsinglequotemark
-<Multi_key> <greater> <apostrophe> : "\377" rightsinglequotemark
-<Multi_key> <apostrophe> <greater> : "\377" rightsinglequotemark
-<Multi_key> <c> <slash> : "\242" cent
-<Multi_key> <slash> <c> : "\242" cent
-<Multi_key> <C> <slash> : "\242" cent
-<Multi_key> <slash> <C> : "\242" cent
-<Multi_key> <C> <bar> : "\242" cent
-<Multi_key> <bar> <C> : "\242" cent
-<Multi_key> <c> <bar> : "\242" cent
-<Multi_key> <bar> <c> : "\242" cent
-<Multi_key> <l> <equal> : "\243" sterling
-<Multi_key> <equal> <l> : "\243" sterling
-<Multi_key> <L> <equal> : "\243" sterling
-<Multi_key> <equal> <L> : "\243" sterling
-<Multi_key> <c> <o> : "\251" copyright
-<Multi_key> <o> <c> : "\251" copyright
-<Multi_key> <C> <O> : "\251" copyright
-<Multi_key> <O> <C> : "\251" copyright
-<Multi_key> <c> <O> : "\251" copyright
-<Multi_key> <O> <c> : "\251" copyright
-<Multi_key> <C> <o> : "\251" copyright
-<Multi_key> <o> <C> : "\251" copyright
-<Multi_key> <c> <0> : "\251" copyright
-<Multi_key> <0> <c> : "\251" copyright
-<Multi_key> <C> <0> : "\251" copyright
-<Multi_key> <0> <C> : "\251" copyright
-<Multi_key> <parenleft> <c> : "\251" copyright
-<Multi_key> <s> <o> : "\247" section
-<Multi_key> <o> <s> : "\247" section
-<Multi_key> <S> <O> : "\247" section
-<Multi_key> <O> <S> : "\247" section
-<Multi_key> <S> <exclam> : "\247" section
-<Multi_key> <exclam> <S> : "\247" section
-<Multi_key> <s> <exclam> : "\247" section
-<Multi_key> <exclam> <s> : "\247" section
-<Multi_key> <S> <0> : "\247" section
-<Multi_key> <0> <S> : "\247" section
-<Multi_key> <s> <0> : "\247" section
-<Multi_key> <0> <s> : "\247" section
-<Multi_key> <x> <o> : "\244" currency
-<Multi_key> <o> <x> : "\244" currency
-<Multi_key> <X> <O> : "\244" currency
-<Multi_key> <O> <X> : "\244" currency
-<Multi_key> <x> <O> : "\244" currency
-<Multi_key> <O> <x> : "\244" currency
-<Multi_key> <X> <o> : "\244" currency
-<Multi_key> <o> <X> : "\244" currency
-<Multi_key> <x> <0> : "\244" currency
-<Multi_key> <0> <x> : "\244" currency
-<Multi_key> <X> <0> : "\244" currency
-<Multi_key> <0> <X> : "\244" currency
-<Multi_key> <0> <asciicircum> : "\260" degree
-<Multi_key> <asciicircum> <0> : "\260" degree
-<Multi_key> <0> <asterisk> : "\260" degree
-<Multi_key> <asterisk> <0> : "\260" degree
-<Multi_key> <plus> <minus> : "\261" plusminus
-<Multi_key> <minus> <plus> : "\261" plusminus
-<Multi_key> <m> <u> : "\265" mu
-<Multi_key> <slash> <u> : "\265" mu
-<Multi_key> <u> <slash> : "\265" mu
-<Multi_key> <slash> <U> : "\265" mu
-<Multi_key> <U> <slash> : "\265" mu
-<Multi_key> <1> <asciicircum> : "\271" onesuperior
-<Multi_key> <asciicircum> <1> : "\271" onesuperior
-<Multi_key> <S> <1> : "\271" onesuperior
-<Multi_key> <1> <S> : "\271" onesuperior
-<Multi_key> <s> <1> : "\271" onesuperior
-<Multi_key> <1> <s> : "\271" onesuperior
-<Multi_key> <2> <asciicircum> : "\262" twosuperior
-<Multi_key> <asciicircum> <2> : "\262" twosuperior
-<Multi_key> <S> <2> : "\262" twosuperior
-<Multi_key> <2> <S> : "\262" twosuperior
-<Multi_key> <s> <2> : "\262" twosuperior
-<Multi_key> <2> <s> : "\262" twosuperior
-<Multi_key> <3> <asciicircum> : "\263" threesuperior
-<Multi_key> <asciicircum> <3> : "\263" threesuperior
-<Multi_key> <S> <3> : "\263" threesuperior
-<Multi_key> <3> <S> : "\263" threesuperior
-<Multi_key> <s> <3> : "\263" threesuperior
-<Multi_key> <3> <s> : "\263" threesuperior
-<Multi_key> <p> <exclam> : "\266" paragraph
-<Multi_key> <exclam> <p> : "\266" paragraph
-<Multi_key> <P> <exclam> : "\266" paragraph
-<Multi_key> <exclam> <P> : "\266" paragraph
-<Multi_key> <period> <asciicircum> : "\267" periodcentered
-<Multi_key> <asciicircum> <period> : "\267" periodcentered
-<Multi_key> <period> <period> : "\267" periodcentered
-<Multi_key> <1> <4> : "\274" onequarter
-<Multi_key> <1> <2> : "\275" onehalf
-<Multi_key> <3> <4> : "\276" threequarters
-<Multi_key> <question> <question> : "\277" questiondown
-<Multi_key> <space> <space> : "\240" nobreakspace
-<Multi_key> <bar> <bar> : "\246" brokenbar
-<Multi_key> <exclam> <asciicircum> : "\246" brokenbar
-<Multi_key> <asciicircum> <exclam> : "\246" brokenbar
-<Multi_key> <V> <B> : "\246" brokenbar
-<Multi_key> <B> <V> : "\246" brokenbar
-<Multi_key> <v> <b> : "\246" brokenbar
-<Multi_key> <b> <v> : "\246" brokenbar
-<Multi_key> <minus> <comma> : "\254" notsign
-<Multi_key> <comma> <minus> : "\254" notsign
-<Multi_key> <minus> <minus> : "\255" hyphen
-<Multi_key> <R> <O> : "\256" registered
-<Multi_key> <O> <R> : "\256" registered
-<Multi_key> <parenleft> <r> : "\256" registered
-<Multi_key> <minus> <colon> : "\367" division
-<Multi_key> <colon> <minus> : "\367" division
-<Multi_key> <x> <x> : "\327" multiply
-XCOMM Accented Alphabet
-<Multi_key> <A> <semicolon> : "\300" Aogonek
-<Multi_key> <semicolon> <A> : "\300" Aogonek
-<Multi_key> <A> <comma> : "\300" Aogonek
-<Multi_key> <comma> <A> : "\300" Aogonek
-<Multi_key> <R> <comma> : "\252" Rcedilla
-<Multi_key> <R> <cedilla> : "\252" Rcedilla
-<Multi_key> <comma> <R> : "\252" Rcedilla
-<Multi_key> <cedilla> <R> : "\252" Rcedilla
-<Multi_key> <L> <comma> : "\317" Lcedilla
-<Multi_key> <L> <cedilla> : "\317" Lcedilla
-<Multi_key> <comma> <L> : "\317" Lcedilla
-<Multi_key> <cedilla> <L> : "\317" Lcedilla
-<Multi_key> <S> <less> : "\320" Scaron
-<Multi_key> <less> <S> : "\320" Scaron
-<Multi_key> <E> <minus> : "\307" Emacron
-<Multi_key> <minus> <E> : "\307" Emacron
-<Multi_key> <E> <underscore> : "\307" Emacron
-<Multi_key> <underscore> <E> : "\307" Emacron
-<Multi_key> <G> <comma> : "\314" Gcedilla
-<Multi_key> <G> <cedilla> : "\314" Gcedilla
-<Multi_key> <comma> <G> : "\314" Gcedilla
-<Multi_key> <cedilla> <G> : "\314" Gcedilla
-<Multi_key> <Z> <less> : "\336" Zcaron
-<Multi_key> <less> <Z> : "\336" Zcaron
-<Multi_key> <a> <semicolon> : "\340" aogonek
-<Multi_key> <semicolon> <a> : "\340" aogonek
-<Multi_key> <a> <comma> : "\340" aogonek
-<Multi_key> <comma> <a> : "\340" aogonek
-<Multi_key> <r> <comma> : "\272" rcedilla
-<Multi_key> <r> <cedilla> : "\272" rcedilla
-<Multi_key> <comma> <r> : "\272" rcedilla
-<Multi_key> <cedilla> <r> : "\272" rcedilla
-<Multi_key> <l> <comma> : "\357" lcedilla
-<Multi_key> <l> <cedilla> : "\357" lcedilla
-<Multi_key> <comma> <l> : "\357" lcedilla
-<Multi_key> <cedilla> <l> : "\357" lcedilla
-<Multi_key> <s> <less> : "\360" scaron
-<Multi_key> <less> <s> : "\360" scaron
-<Multi_key> <e> <minus> : "\347" emacron
-<Multi_key> <minus> <e> : "\347" emacron
-<Multi_key> <e> <underscore> : "\347" emacron
-<Multi_key> <underscore> <e> : "\347" emacron
-<Multi_key> <g> <comma> : "\354" gcedilla
-<Multi_key> <g> <cedilla> : "\354" gcedilla
-<Multi_key> <comma> <g> : "\354" gcedilla
-<Multi_key> <cedilla> <g> : "\354" gcedilla
-<Multi_key> <z> <less> : "\376" zcaron
-<Multi_key> <less> <z> : "\376" zcaron
-<Multi_key> <A> <underscore> : "\302" Amacron
-<Multi_key> <underscore> <A> : "\302" Amacron
-<Multi_key> <A> <minus> : "\302" Amacron
-<Multi_key> <minus> <A> : "\302" Amacron
-<Multi_key> <A> <quotedbl> : "\304" Adiaeresis
-<Multi_key> <quotedbl> <A> : "\304" Adiaeresis
-<Multi_key> <A> <asterisk> : "\305" Aring
-<Multi_key> <asterisk> <A> : "\305" Aring
-<Multi_key> <A> <A> : "\305" Aring
-<Multi_key> <A> <O> : "\305" Aring
-<Multi_key> <A> <E> : "\257" AE
-<Multi_key> <I> <semicolon> : "\301" Iogonek
-<Multi_key> <semicolon> <I> : "\301" Iogonek
-<Multi_key> <I> <comma> : "\301" Iogonek
-<Multi_key> <comma> <I> : "\301" Iogonek
-<Multi_key> <C> <less> : "\310" Ccaron
-<Multi_key> <less> <C> : "\310" Ccaron
-<Multi_key> <E> <acute> : "\311" Eacute
-<Multi_key> <acute> <E> : "\311" Eacute
-<Multi_key> <E> <apostrophe> : "\311" Eacute
-<Multi_key> <apostrophe> <E> : "\311" Eacute
-<Multi_key> <E> <semicolon> : "\306" Eogonek
-<Multi_key> <semicolon> <E> : "\306" Eogonek
-<Multi_key> <E> <comma> : "\306" Eogonek
-<Multi_key> <comma> <E> : "\306" Eogonek
-<Multi_key> <E> <period> : "\313" Eabovedot
-<Multi_key> <period> <E> : "\313" Eabovedot
-<Multi_key> <I> <minus> : "\316" Imacron
-<Multi_key> <minus> <I> : "\316" Imacron
-<Multi_key> <I> <underscore> : "\316" Imacron
-<Multi_key> <underscore> <I> : "\316" Imacron
-<Multi_key> <N> <comma> : "\322" Ncedilla
-<Multi_key> <N> <cedilla> : "\322" Ncedilla
-<Multi_key> <comma> <N> : "\322" Ncedilla
-<Multi_key> <cedilla> <N> : "\322" Ncedilla
-<Multi_key> <O> <underscore> : "\324" Omacron
-<Multi_key> <underscore> <O> : "\324" Omacron
-<Multi_key> <O> <minus> : "\324" Omacron
-<Multi_key> <minus> <O> : "\324" Omacron
-<Multi_key> <K> <comma> : "\315" Kcedilla
-<Multi_key> <K> <cedilla> : "\315" Kcedilla
-<Multi_key> <comma> <K> : "\315" Kcedilla
-<Multi_key> <cedilla> <K> : "\315" Kcedilla
-<Multi_key> <O> <asciitilde> : "\325" Otilde
-<Multi_key> <asciitilde> <O> : "\325" Otilde
-<Multi_key> <O> <quotedbl> : "\326" Odiaeresis
-<Multi_key> <quotedbl> <O> : "\326" Odiaeresis
-<Multi_key> <O> <slash> : "\250" Ooblique
-<Multi_key> <slash> <O> : "\250" Ooblique
-<Multi_key> <U> <semicolon> : "\330" Uogonek
-<Multi_key> <semicolon> <U> : "\330" Uogonek
-<Multi_key> <U> <comma> : "\330" Uogonek
-<Multi_key> <comma> <U> : "\330" Uogonek
-<Multi_key> <U> <quotedbl> : "\334" Udiaeresis
-<Multi_key> <quotedbl> <U> : "\334" Udiaeresis
-<Multi_key> <U> <underscore> : "\333" Umacron
-<Multi_key> <underscore> <U> : "\333" Umacron
-<Multi_key> <U> <minus> : "\333" Umacron
-<Multi_key> <minus> <U> : "\333" Umacron
-<Multi_key> <s> <s> : "\337" ssharp
-<Multi_key> <a> <underscore> : "\342" amacron
-<Multi_key> <underscore> <a> : "\342" amacron
-<Multi_key> <a> <minus> : "\342" amacron
-<Multi_key> <minus> <a> : "\342" amacron
-<Multi_key> <a> <quotedbl> : "\344" adiaeresis
-<Multi_key> <quotedbl> <a> : "\344" adiaeresis
-<Multi_key> <a> <asterisk> : "\345" aring
-<Multi_key> <asterisk> <a> : "\345" aring
-<Multi_key> <a> <a> : "\345" aring
-<Multi_key> <a> <o> : "\345" aring
-<Multi_key> <a> <e> : "\277" ae
-<Multi_key> <i> <semicolon> : "\341" iogonek
-<Multi_key> <semicolon> <i> : "\341" iogonek
-<Multi_key> <i> <comma> : "\341" iogonek
-<Multi_key> <comma> <i> : "\341" iogonek
-<Multi_key> <c> <less> : "\350" ccaron
-<Multi_key> <less> <c> : "\350" ccaron
-<Multi_key> <e> <acute> : "\351" eacute
-<Multi_key> <acute> <e> : "\351" eacute
-<Multi_key> <e> <apostrophe> : "\351" eacute
-<Multi_key> <apostrophe> <e> : "\351" eacute
-<Multi_key> <e> <semicolon> : "\346" eogonek
-<Multi_key> <semicolon> <e> : "\346" eogonek
-<Multi_key> <e> <comma> : "\346" eogonek
-<Multi_key> <comma> <e> : "\346" eogonek
-<Multi_key> <e> <period> : "\353" eabovedot
-<Multi_key> <period> <e> : "\353" eabovedot
-<Multi_key> <i> <minus> : "\356" imacron
-<Multi_key> <minus> <i> : "\356" imacron
-<Multi_key> <i> <underscore> : "\356" imacron
-<Multi_key> <underscore> <i> : "\356" imacron
-<Multi_key> <n> <comma> : "\362" ncedilla
-<Multi_key> <n> <cedilla> : "\362" ncedilla
-<Multi_key> <comma> <n> : "\362" ncedilla
-<Multi_key> <cedilla> <n> : "\362" ncedilla
-<Multi_key> <o> <underscore> : "\364" omacron
-<Multi_key> <underscore> <o> : "\364" omacron
-<Multi_key> <o> <minus> : "\364" omacron
-<Multi_key> <minus> <o> : "\364" omacron
-<Multi_key> <k> <comma> : "\355" kcedilla
-<Multi_key> <k> <cedilla> : "\355" kcedilla
-<Multi_key> <comma> <k> : "\355" kcedilla
-<Multi_key> <cedilla> <k> : "\355" kcedilla
-<Multi_key> <o> <asciitilde> : "\365" otilde
-<Multi_key> <asciitilde> <o> : "\365" otilde
-<Multi_key> <o> <quotedbl> : "\366" odiaeresis
-<Multi_key> <quotedbl> <o> : "\366" odiaeresis
-<Multi_key> <o> <slash> : "\270" ooblique
-<Multi_key> <slash> <o> : "\270" ooblique
-<Multi_key> <u> <semicolon> : "\370" uogonek
-<Multi_key> <semicolon> <u> : "\370" uogonek
-<Multi_key> <u> <comma> : "\370" uogonek
-<Multi_key> <comma> <u> : "\370" uogonek
-<Multi_key> <u> <quotedbl> : "\374" udiaeresis
-<Multi_key> <quotedbl> <u> : "\374" udiaeresis
-<Multi_key> <u> <underscore> : "\373" umacron
-<Multi_key> <underscore> <u> : "\373" umacron
-<Multi_key> <u> <minus> : "\373" umacron
-<Multi_key> <minus> <u> : "\373" umacron
-<Multi_key> <C> <apostrophe> : "\303" Cacute
-<Multi_key> <apostrophe> <C> : "\303" Cacute
-<Multi_key> <c> <apostrophe> : "\343" cacute
-<Multi_key> <apostrophe> <c> : "\343" cacute
-<Multi_key> <O> <apostrophe> : "\323" Oacute
-<Multi_key> <apostrophe> <O> : "\323" Oacute
-<Multi_key> <o> <apostrophe> : "\363" oacute
-<Multi_key> <apostrophe> <o> : "\363" oacute
-<Multi_key> <Z> <apostrophe> : "\312" Zacute
-<Multi_key> <apostrophe> <Z> : "\312" Zacute
-<Multi_key> <z> <apostrophe> : "\352" zacute
-<Multi_key> <apostrophe> <z> : "\352" zacute
-<Multi_key> <N> <apostrophe> : "\321" Nacute
-<Multi_key> <apostrophe> <N> : "\321" Nacute
-<Multi_key> <n> <apostrophe> : "\361" nacute
-<Multi_key> <apostrophe> <n> : "\361" nacute
-<Multi_key> <L> <minus> : "\331" Lstroke
-<Multi_key> <minus> <L> : "\331" Lstroke
-<Multi_key> <L> <slash> : "\331" Lstroke
-<Multi_key> <slash> <L> : "\331" Lstroke
-<Multi_key> <l> <minus> : "\371" lstroke
-<Multi_key> <minus> <l> : "\371" lstroke
-<Multi_key> <l> <slash> : "\371" lstroke
-<Multi_key> <slash> <l> : "\371" lstroke
-<Multi_key> <S> <apostrophe> : "\332" Sacute
-<Multi_key> <apostrophe> <S> : "\332" Sacute
-<Multi_key> <s> <apostrophe> : "\372" sacute
-<Multi_key> <apostrophe> <s> : "\372" sacute
-<Multi_key> <Z> <period> : "\335" Zabovedot
-<Multi_key> <period> <Z> : "\335" Zabovedot
-<Multi_key> <z> <period> : "\375" zabovedot
-<Multi_key> <period> <z> : "\375" zabovedot
-
-<dead_abovedot> <A> : "\305" Aring
-<dead_abovedot> <a> : "\345" aring
-<dead_abovedot> <E> : "\313" Eabovedot
-<dead_abovedot> <e> : "\353" eabovedot
-<dead_abovedot> <Z> : "\335" Zabovedot
-<dead_abovedot> <z> : "\375" zabovedot
-<dead_abovedot> <dead_abovedot> : "\267" abovedot
-<dead_abovering> <A> : "\305" Aring
-<dead_abovering> <a> : "\345" aring
-<dead_abovering> <E> : "\313" Eabovedot
-<dead_abovering> <e> : "\353" eabovedot
-<dead_abovering> <Z> : "\335" Zabovedot
-<dead_abovering> <z> : "\375" zabovedot
-<dead_abovering> <ring> : "\260" ring
-<dead_abovering> <dead_abovering> : "\260" ring
-<dead_acute> <dead_acute> : "\377" rightsinglequotemark
-<dead_acute> <C> : "\303" Cacute
-<dead_acute> <E> : "\311" Eacute
-<dead_acute> <Z> : "\312" Zacute
-<dead_acute> <N> : "\321" Nacute
-<dead_acute> <O> : "\323" Oacute
-<dead_acute> <S> : "\332" Sacute
-<dead_acute> <c> : "\343" cacute
-<dead_acute> <e> : "\351" eacute
-<dead_acute> <z> : "\352" zacute
-<dead_acute> <n> : "\361" nacute
-<dead_acute> <o> : "\363" oacute
-<dead_acute> <s> : "\372" sacute
-<dead_caron> <C> : "\310" Ccaron
-<dead_caron> <S> : "\320" Scaron
-<dead_caron> <Z> : "\336" Zcaron
-<dead_caron> <c> : "\350" ccaron
-<dead_caron> <s> : "\360" scaron
-<dead_caron> <z> : "\376" zcaron
-<dead_cedilla> <R> : "\252" Rcedilla
-<dead_cedilla> <G> : "\314" Gcedilla
-<dead_cedilla> <K> : "\315" Kcedilla
-<dead_cedilla> <L> : "\317" Lcedilla
-<dead_cedilla> <N> : "\322" Ncedilla
-<dead_cedilla> <r> : "\272" rcedilla
-<dead_cedilla> <g> : "\354" gcedilla
-<dead_cedilla> <k> : "\355" kcedilla
-<dead_cedilla> <l> : "\357" lcedilla
-<dead_cedilla> <n> : "\362" ncedilla
-<dead_diaeresis> <A> : "\304" Adiaeresis
-<dead_diaeresis> <O> : "\326" Odiaeresis
-<dead_diaeresis> <U> : "\334" Udiaeresis
-<dead_diaeresis> <a> : "\344" adiaeresis
-<dead_diaeresis> <o> : "\366" odiaeresis
-<dead_diaeresis> <u> : "\374" udiaeresis
-<dead_macron> <A> : "\302" Amacron
-<dead_macron> <E> : "\307" Emacron
-<dead_macron> <I> : "\316" Imacron
-<dead_macron> <O> : "\324" Omacron
-<dead_macron> <U> : "\333" Umacron
-<dead_macron> <a> : "\342" amacron
-<dead_macron> <e> : "\347" emacron
-<dead_macron> <i> : "\356" imacron
-<dead_macron> <o> : "\364" omacron
-<dead_macron> <u> : "\373" umacron
-<dead_macron> <macron> : "\255" macron
-<dead_macron> <dead_macron> : "\255" macron
-<dead_ogonek> <A> : "\300" Aogonek
-<dead_ogonek> <I> : "\301" Iogonek
-<dead_ogonek> <E> : "\306" Eogonek
-<dead_ogonek> <U> : "\330" Uogonek
-<dead_ogonek> <a> : "\340" aogonek
-<dead_ogonek> <i> : "\341" iogonek
-<dead_ogonek> <e> : "\346" eogonek
-<dead_ogonek> <u> : "\370" uogonek
-<dead_tilde> <O> : "\325" Otilde
-<dead_tilde> <o> : "\365" otilde
-<dead_tilde> <asciitilde> : "~" asciitilde
-<dead_tilde> <dead_tilde> : "~" asciitilde
-
-XCOMM End of Sequence Definition
+XCOMM
+XCOMM ISO 8859-13 (Latin7) Compose Sequence
+XCOMM
+XCOMM Sequence Definition
+XCOMM
+XCOMM <Multi_key> Means <Compose>
+XCOMM Special Character
+XCOMM Right-hand side (Accented Alphabet)
+XCOMM These compose sequences are pure supposition on my part.
+XCOMM It would be nice to know what the real cultural conventions
+XCOMM are for compose sequences.
+<Multi_key> <plus> <plus> : "#" numbersign
+<Multi_key> <apostrophe> <space> : "'" apostrophe
+<Multi_key> <space> <apostrophe> : "'" apostrophe
+<Multi_key> <A> <T> : "@" at
+<Multi_key> <parenleft> <parenleft> : "[" bracketleft
+<Multi_key> <slash> <slash> : "\\" backslash
+<Multi_key> <slash> <less> : "\\" backslash
+<Multi_key> <less> <slash> : "\\" backslash
+<Multi_key> <parenright> <parenright> : "]" bracketright
+<Multi_key> <asciicircum> <space> : "^" asciicircum
+<Multi_key> <space> <asciicircum> : "^" asciicircum
+<Multi_key> <greater> <space> : "^" asciicircum
+<Multi_key> <space> <greater> : "^" asciicircum
+<Multi_key> <grave> <space> : "`" grave
+<Multi_key> <space> <grave> : "`" grave
+<Multi_key> <less> <apostrophe> : "`" grave
+<Multi_key> <apostrophe> <less> : "`" grave
+<Multi_key> <parenleft> <minus> : "{" braceleft
+<Multi_key> <minus> <parenleft> : "{" braceleft
+<Multi_key> <slash> <asciicircum> : "|" bar
+<Multi_key> <asciicircum> <slash> : "|" bar
+<Multi_key> <parenright> <minus> : "}" braceright
+<Multi_key> <minus> <parenright> : "}" braceright
+<Multi_key> <asciitilde> <space> : "~" asciitilde
+<Multi_key> <space> <asciitilde> : "~" asciitilde
+<Multi_key> <minus> <space> : "~" asciitilde
+<Multi_key> <space> <minus> : "~" asciitilde
+<Multi_key> <greater> <quotedbl> : "\241" rightdoublequotemark
+<Multi_key> <quotedbl> <greater> : "\241" rightdoublequotemark
+<Multi_key> <greater> <comma> : "\245" doublelowquotemark
+<Multi_key> <comma> <greater> : "\245" doublelowquotemark
+<Multi_key> <less> <quotedbl> : "\264" leftdoublequotemark
+<Multi_key> <quotedbl> <less> : "\264" leftdoublequotemark
+<Multi_key> <less> <less> : "\253" guillemotleft
+<Multi_key> <greater> <greater> : "\273" guillemotright
+<Multi_key> <apostrophe> <apostrophe> : "\377" rightsinglequotemark
+<Multi_key> <greater> <apostrophe> : "\377" rightsinglequotemark
+<Multi_key> <apostrophe> <greater> : "\377" rightsinglequotemark
+<Multi_key> <c> <slash> : "\242" cent
+<Multi_key> <slash> <c> : "\242" cent
+<Multi_key> <C> <slash> : "\242" cent
+<Multi_key> <slash> <C> : "\242" cent
+<Multi_key> <C> <bar> : "\242" cent
+<Multi_key> <bar> <C> : "\242" cent
+<Multi_key> <c> <bar> : "\242" cent
+<Multi_key> <bar> <c> : "\242" cent
+<Multi_key> <l> <equal> : "\243" sterling
+<Multi_key> <equal> <l> : "\243" sterling
+<Multi_key> <L> <equal> : "\243" sterling
+<Multi_key> <equal> <L> : "\243" sterling
+<Multi_key> <c> <o> : "\251" copyright
+<Multi_key> <o> <c> : "\251" copyright
+<Multi_key> <C> <O> : "\251" copyright
+<Multi_key> <O> <C> : "\251" copyright
+<Multi_key> <c> <O> : "\251" copyright
+<Multi_key> <O> <c> : "\251" copyright
+<Multi_key> <C> <o> : "\251" copyright
+<Multi_key> <o> <C> : "\251" copyright
+<Multi_key> <c> <0> : "\251" copyright
+<Multi_key> <0> <c> : "\251" copyright
+<Multi_key> <C> <0> : "\251" copyright
+<Multi_key> <0> <C> : "\251" copyright
+<Multi_key> <parenleft> <c> : "\251" copyright
+<Multi_key> <s> <o> : "\247" section
+<Multi_key> <o> <s> : "\247" section
+<Multi_key> <S> <O> : "\247" section
+<Multi_key> <O> <S> : "\247" section
+<Multi_key> <S> <exclam> : "\247" section
+<Multi_key> <exclam> <S> : "\247" section
+<Multi_key> <s> <exclam> : "\247" section
+<Multi_key> <exclam> <s> : "\247" section
+<Multi_key> <S> <0> : "\247" section
+<Multi_key> <0> <S> : "\247" section
+<Multi_key> <s> <0> : "\247" section
+<Multi_key> <0> <s> : "\247" section
+<Multi_key> <x> <o> : "\244" currency
+<Multi_key> <o> <x> : "\244" currency
+<Multi_key> <X> <O> : "\244" currency
+<Multi_key> <O> <X> : "\244" currency
+<Multi_key> <x> <O> : "\244" currency
+<Multi_key> <O> <x> : "\244" currency
+<Multi_key> <X> <o> : "\244" currency
+<Multi_key> <o> <X> : "\244" currency
+<Multi_key> <x> <0> : "\244" currency
+<Multi_key> <0> <x> : "\244" currency
+<Multi_key> <X> <0> : "\244" currency
+<Multi_key> <0> <X> : "\244" currency
+<Multi_key> <0> <asciicircum> : "\260" degree
+<Multi_key> <asciicircum> <0> : "\260" degree
+<Multi_key> <0> <asterisk> : "\260" degree
+<Multi_key> <asterisk> <0> : "\260" degree
+<Multi_key> <plus> <minus> : "\261" plusminus
+<Multi_key> <minus> <plus> : "\261" plusminus
+<Multi_key> <m> <u> : "\265" mu
+<Multi_key> <slash> <u> : "\265" mu
+<Multi_key> <u> <slash> : "\265" mu
+<Multi_key> <slash> <U> : "\265" mu
+<Multi_key> <U> <slash> : "\265" mu
+<Multi_key> <1> <asciicircum> : "\271" onesuperior
+<Multi_key> <asciicircum> <1> : "\271" onesuperior
+<Multi_key> <S> <1> : "\271" onesuperior
+<Multi_key> <1> <S> : "\271" onesuperior
+<Multi_key> <s> <1> : "\271" onesuperior
+<Multi_key> <1> <s> : "\271" onesuperior
+<Multi_key> <2> <asciicircum> : "\262" twosuperior
+<Multi_key> <asciicircum> <2> : "\262" twosuperior
+<Multi_key> <S> <2> : "\262" twosuperior
+<Multi_key> <2> <S> : "\262" twosuperior
+<Multi_key> <s> <2> : "\262" twosuperior
+<Multi_key> <2> <s> : "\262" twosuperior
+<Multi_key> <3> <asciicircum> : "\263" threesuperior
+<Multi_key> <asciicircum> <3> : "\263" threesuperior
+<Multi_key> <S> <3> : "\263" threesuperior
+<Multi_key> <3> <S> : "\263" threesuperior
+<Multi_key> <s> <3> : "\263" threesuperior
+<Multi_key> <3> <s> : "\263" threesuperior
+<Multi_key> <p> <exclam> : "\266" paragraph
+<Multi_key> <exclam> <p> : "\266" paragraph
+<Multi_key> <P> <exclam> : "\266" paragraph
+<Multi_key> <exclam> <P> : "\266" paragraph
+<Multi_key> <period> <asciicircum> : "\267" periodcentered
+<Multi_key> <asciicircum> <period> : "\267" periodcentered
+<Multi_key> <period> <period> : "\267" periodcentered
+<Multi_key> <1> <4> : "\274" onequarter
+<Multi_key> <1> <2> : "\275" onehalf
+<Multi_key> <3> <4> : "\276" threequarters
+<Multi_key> <question> <question> : "\277" questiondown
+<Multi_key> <space> <space> : "\240" nobreakspace
+<Multi_key> <bar> <bar> : "\246" brokenbar
+<Multi_key> <exclam> <asciicircum> : "\246" brokenbar
+<Multi_key> <asciicircum> <exclam> : "\246" brokenbar
+<Multi_key> <V> <B> : "\246" brokenbar
+<Multi_key> <B> <V> : "\246" brokenbar
+<Multi_key> <v> <b> : "\246" brokenbar
+<Multi_key> <b> <v> : "\246" brokenbar
+<Multi_key> <minus> <comma> : "\254" notsign
+<Multi_key> <comma> <minus> : "\254" notsign
+<Multi_key> <minus> <minus> : "\255" hyphen
+<Multi_key> <R> <O> : "\256" registered
+<Multi_key> <O> <R> : "\256" registered
+<Multi_key> <parenleft> <r> : "\256" registered
+<Multi_key> <minus> <colon> : "\367" division
+<Multi_key> <colon> <minus> : "\367" division
+<Multi_key> <x> <x> : "\327" multiply
+XCOMM Accented Alphabet
+<Multi_key> <A> <semicolon> : "\300" Aogonek
+<Multi_key> <semicolon> <A> : "\300" Aogonek
+<Multi_key> <A> <comma> : "\300" Aogonek
+<Multi_key> <comma> <A> : "\300" Aogonek
+<Multi_key> <R> <comma> : "\252" Rcedilla
+<Multi_key> <R> <cedilla> : "\252" Rcedilla
+<Multi_key> <comma> <R> : "\252" Rcedilla
+<Multi_key> <cedilla> <R> : "\252" Rcedilla
+<Multi_key> <L> <comma> : "\317" Lcedilla
+<Multi_key> <L> <cedilla> : "\317" Lcedilla
+<Multi_key> <comma> <L> : "\317" Lcedilla
+<Multi_key> <cedilla> <L> : "\317" Lcedilla
+<Multi_key> <S> <less> : "\320" Scaron
+<Multi_key> <less> <S> : "\320" Scaron
+<Multi_key> <E> <minus> : "\307" Emacron
+<Multi_key> <minus> <E> : "\307" Emacron
+<Multi_key> <E> <underscore> : "\307" Emacron
+<Multi_key> <underscore> <E> : "\307" Emacron
+<Multi_key> <G> <comma> : "\314" Gcedilla
+<Multi_key> <G> <cedilla> : "\314" Gcedilla
+<Multi_key> <comma> <G> : "\314" Gcedilla
+<Multi_key> <cedilla> <G> : "\314" Gcedilla
+<Multi_key> <Z> <less> : "\336" Zcaron
+<Multi_key> <less> <Z> : "\336" Zcaron
+<Multi_key> <a> <semicolon> : "\340" aogonek
+<Multi_key> <semicolon> <a> : "\340" aogonek
+<Multi_key> <a> <comma> : "\340" aogonek
+<Multi_key> <comma> <a> : "\340" aogonek
+<Multi_key> <r> <comma> : "\272" rcedilla
+<Multi_key> <r> <cedilla> : "\272" rcedilla
+<Multi_key> <comma> <r> : "\272" rcedilla
+<Multi_key> <cedilla> <r> : "\272" rcedilla
+<Multi_key> <l> <comma> : "\357" lcedilla
+<Multi_key> <l> <cedilla> : "\357" lcedilla
+<Multi_key> <comma> <l> : "\357" lcedilla
+<Multi_key> <cedilla> <l> : "\357" lcedilla
+<Multi_key> <s> <less> : "\360" scaron
+<Multi_key> <less> <s> : "\360" scaron
+<Multi_key> <e> <minus> : "\347" emacron
+<Multi_key> <minus> <e> : "\347" emacron
+<Multi_key> <e> <underscore> : "\347" emacron
+<Multi_key> <underscore> <e> : "\347" emacron
+<Multi_key> <g> <comma> : "\354" gcedilla
+<Multi_key> <g> <cedilla> : "\354" gcedilla
+<Multi_key> <comma> <g> : "\354" gcedilla
+<Multi_key> <cedilla> <g> : "\354" gcedilla
+<Multi_key> <z> <less> : "\376" zcaron
+<Multi_key> <less> <z> : "\376" zcaron
+<Multi_key> <A> <underscore> : "\302" Amacron
+<Multi_key> <underscore> <A> : "\302" Amacron
+<Multi_key> <A> <minus> : "\302" Amacron
+<Multi_key> <minus> <A> : "\302" Amacron
+<Multi_key> <A> <quotedbl> : "\304" Adiaeresis
+<Multi_key> <quotedbl> <A> : "\304" Adiaeresis
+<Multi_key> <A> <asterisk> : "\305" Aring
+<Multi_key> <asterisk> <A> : "\305" Aring
+<Multi_key> <A> <A> : "\305" Aring
+<Multi_key> <A> <O> : "\305" Aring
+<Multi_key> <A> <E> : "\257" AE
+<Multi_key> <I> <semicolon> : "\301" Iogonek
+<Multi_key> <semicolon> <I> : "\301" Iogonek
+<Multi_key> <I> <comma> : "\301" Iogonek
+<Multi_key> <comma> <I> : "\301" Iogonek
+<Multi_key> <C> <less> : "\310" Ccaron
+<Multi_key> <less> <C> : "\310" Ccaron
+<Multi_key> <E> <acute> : "\311" Eacute
+<Multi_key> <acute> <E> : "\311" Eacute
+<Multi_key> <E> <apostrophe> : "\311" Eacute
+<Multi_key> <apostrophe> <E> : "\311" Eacute
+<Multi_key> <E> <semicolon> : "\306" Eogonek
+<Multi_key> <semicolon> <E> : "\306" Eogonek
+<Multi_key> <E> <comma> : "\306" Eogonek
+<Multi_key> <comma> <E> : "\306" Eogonek
+<Multi_key> <E> <period> : "\313" Eabovedot
+<Multi_key> <period> <E> : "\313" Eabovedot
+<Multi_key> <I> <minus> : "\316" Imacron
+<Multi_key> <minus> <I> : "\316" Imacron
+<Multi_key> <I> <underscore> : "\316" Imacron
+<Multi_key> <underscore> <I> : "\316" Imacron
+<Multi_key> <N> <comma> : "\322" Ncedilla
+<Multi_key> <N> <cedilla> : "\322" Ncedilla
+<Multi_key> <comma> <N> : "\322" Ncedilla
+<Multi_key> <cedilla> <N> : "\322" Ncedilla
+<Multi_key> <O> <underscore> : "\324" Omacron
+<Multi_key> <underscore> <O> : "\324" Omacron
+<Multi_key> <O> <minus> : "\324" Omacron
+<Multi_key> <minus> <O> : "\324" Omacron
+<Multi_key> <K> <comma> : "\315" Kcedilla
+<Multi_key> <K> <cedilla> : "\315" Kcedilla
+<Multi_key> <comma> <K> : "\315" Kcedilla
+<Multi_key> <cedilla> <K> : "\315" Kcedilla
+<Multi_key> <O> <asciitilde> : "\325" Otilde
+<Multi_key> <asciitilde> <O> : "\325" Otilde
+<Multi_key> <O> <quotedbl> : "\326" Odiaeresis
+<Multi_key> <quotedbl> <O> : "\326" Odiaeresis
+<Multi_key> <O> <slash> : "\250" Ooblique
+<Multi_key> <slash> <O> : "\250" Ooblique
+<Multi_key> <U> <semicolon> : "\330" Uogonek
+<Multi_key> <semicolon> <U> : "\330" Uogonek
+<Multi_key> <U> <comma> : "\330" Uogonek
+<Multi_key> <comma> <U> : "\330" Uogonek
+<Multi_key> <U> <quotedbl> : "\334" Udiaeresis
+<Multi_key> <quotedbl> <U> : "\334" Udiaeresis
+<Multi_key> <U> <underscore> : "\333" Umacron
+<Multi_key> <underscore> <U> : "\333" Umacron
+<Multi_key> <U> <minus> : "\333" Umacron
+<Multi_key> <minus> <U> : "\333" Umacron
+<Multi_key> <s> <s> : "\337" ssharp
+<Multi_key> <a> <underscore> : "\342" amacron
+<Multi_key> <underscore> <a> : "\342" amacron
+<Multi_key> <a> <minus> : "\342" amacron
+<Multi_key> <minus> <a> : "\342" amacron
+<Multi_key> <a> <quotedbl> : "\344" adiaeresis
+<Multi_key> <quotedbl> <a> : "\344" adiaeresis
+<Multi_key> <a> <asterisk> : "\345" aring
+<Multi_key> <asterisk> <a> : "\345" aring
+<Multi_key> <a> <a> : "\345" aring
+<Multi_key> <a> <o> : "\345" aring
+<Multi_key> <a> <e> : "\277" ae
+<Multi_key> <i> <semicolon> : "\341" iogonek
+<Multi_key> <semicolon> <i> : "\341" iogonek
+<Multi_key> <i> <comma> : "\341" iogonek
+<Multi_key> <comma> <i> : "\341" iogonek
+<Multi_key> <c> <less> : "\350" ccaron
+<Multi_key> <less> <c> : "\350" ccaron
+<Multi_key> <e> <acute> : "\351" eacute
+<Multi_key> <acute> <e> : "\351" eacute
+<Multi_key> <e> <apostrophe> : "\351" eacute
+<Multi_key> <apostrophe> <e> : "\351" eacute
+<Multi_key> <e> <semicolon> : "\346" eogonek
+<Multi_key> <semicolon> <e> : "\346" eogonek
+<Multi_key> <e> <comma> : "\346" eogonek
+<Multi_key> <comma> <e> : "\346" eogonek
+<Multi_key> <e> <period> : "\353" eabovedot
+<Multi_key> <period> <e> : "\353" eabovedot
+<Multi_key> <i> <minus> : "\356" imacron
+<Multi_key> <minus> <i> : "\356" imacron
+<Multi_key> <i> <underscore> : "\356" imacron
+<Multi_key> <underscore> <i> : "\356" imacron
+<Multi_key> <n> <comma> : "\362" ncedilla
+<Multi_key> <n> <cedilla> : "\362" ncedilla
+<Multi_key> <comma> <n> : "\362" ncedilla
+<Multi_key> <cedilla> <n> : "\362" ncedilla
+<Multi_key> <o> <underscore> : "\364" omacron
+<Multi_key> <underscore> <o> : "\364" omacron
+<Multi_key> <o> <minus> : "\364" omacron
+<Multi_key> <minus> <o> : "\364" omacron
+<Multi_key> <k> <comma> : "\355" kcedilla
+<Multi_key> <k> <cedilla> : "\355" kcedilla
+<Multi_key> <comma> <k> : "\355" kcedilla
+<Multi_key> <cedilla> <k> : "\355" kcedilla
+<Multi_key> <o> <asciitilde> : "\365" otilde
+<Multi_key> <asciitilde> <o> : "\365" otilde
+<Multi_key> <o> <quotedbl> : "\366" odiaeresis
+<Multi_key> <quotedbl> <o> : "\366" odiaeresis
+<Multi_key> <o> <slash> : "\270" ooblique
+<Multi_key> <slash> <o> : "\270" ooblique
+<Multi_key> <u> <semicolon> : "\370" uogonek
+<Multi_key> <semicolon> <u> : "\370" uogonek
+<Multi_key> <u> <comma> : "\370" uogonek
+<Multi_key> <comma> <u> : "\370" uogonek
+<Multi_key> <u> <quotedbl> : "\374" udiaeresis
+<Multi_key> <quotedbl> <u> : "\374" udiaeresis
+<Multi_key> <u> <underscore> : "\373" umacron
+<Multi_key> <underscore> <u> : "\373" umacron
+<Multi_key> <u> <minus> : "\373" umacron
+<Multi_key> <minus> <u> : "\373" umacron
+<Multi_key> <C> <apostrophe> : "\303" Cacute
+<Multi_key> <apostrophe> <C> : "\303" Cacute
+<Multi_key> <c> <apostrophe> : "\343" cacute
+<Multi_key> <apostrophe> <c> : "\343" cacute
+<Multi_key> <O> <apostrophe> : "\323" Oacute
+<Multi_key> <apostrophe> <O> : "\323" Oacute
+<Multi_key> <o> <apostrophe> : "\363" oacute
+<Multi_key> <apostrophe> <o> : "\363" oacute
+<Multi_key> <Z> <apostrophe> : "\312" Zacute
+<Multi_key> <apostrophe> <Z> : "\312" Zacute
+<Multi_key> <z> <apostrophe> : "\352" zacute
+<Multi_key> <apostrophe> <z> : "\352" zacute
+<Multi_key> <N> <apostrophe> : "\321" Nacute
+<Multi_key> <apostrophe> <N> : "\321" Nacute
+<Multi_key> <n> <apostrophe> : "\361" nacute
+<Multi_key> <apostrophe> <n> : "\361" nacute
+<Multi_key> <L> <minus> : "\331" Lstroke
+<Multi_key> <minus> <L> : "\331" Lstroke
+<Multi_key> <L> <slash> : "\331" Lstroke
+<Multi_key> <slash> <L> : "\331" Lstroke
+<Multi_key> <l> <minus> : "\371" lstroke
+<Multi_key> <minus> <l> : "\371" lstroke
+<Multi_key> <l> <slash> : "\371" lstroke
+<Multi_key> <slash> <l> : "\371" lstroke
+<Multi_key> <S> <apostrophe> : "\332" Sacute
+<Multi_key> <apostrophe> <S> : "\332" Sacute
+<Multi_key> <s> <apostrophe> : "\372" sacute
+<Multi_key> <apostrophe> <s> : "\372" sacute
+<Multi_key> <Z> <period> : "\335" Zabovedot
+<Multi_key> <period> <Z> : "\335" Zabovedot
+<Multi_key> <z> <period> : "\375" zabovedot
+<Multi_key> <period> <z> : "\375" zabovedot
+
+<dead_abovedot> <A> : "\305" Aring
+<dead_abovedot> <a> : "\345" aring
+<dead_abovedot> <E> : "\313" Eabovedot
+<dead_abovedot> <e> : "\353" eabovedot
+<dead_abovedot> <Z> : "\335" Zabovedot
+<dead_abovedot> <z> : "\375" zabovedot
+<dead_abovedot> <dead_abovedot> : "\267" abovedot
+<dead_abovering> <A> : "\305" Aring
+<dead_abovering> <a> : "\345" aring
+<dead_abovering> <E> : "\313" Eabovedot
+<dead_abovering> <e> : "\353" eabovedot
+<dead_abovering> <Z> : "\335" Zabovedot
+<dead_abovering> <z> : "\375" zabovedot
+<dead_abovering> <ring> : "\260" ring
+<dead_abovering> <dead_abovering> : "\260" ring
+<dead_acute> <dead_acute> : "\377" rightsinglequotemark
+<dead_acute> <C> : "\303" Cacute
+<dead_acute> <E> : "\311" Eacute
+<dead_acute> <Z> : "\312" Zacute
+<dead_acute> <N> : "\321" Nacute
+<dead_acute> <O> : "\323" Oacute
+<dead_acute> <S> : "\332" Sacute
+<dead_acute> <c> : "\343" cacute
+<dead_acute> <e> : "\351" eacute
+<dead_acute> <z> : "\352" zacute
+<dead_acute> <n> : "\361" nacute
+<dead_acute> <o> : "\363" oacute
+<dead_acute> <s> : "\372" sacute
+<dead_caron> <C> : "\310" Ccaron
+<dead_caron> <S> : "\320" Scaron
+<dead_caron> <Z> : "\336" Zcaron
+<dead_caron> <c> : "\350" ccaron
+<dead_caron> <s> : "\360" scaron
+<dead_caron> <z> : "\376" zcaron
+<dead_cedilla> <R> : "\252" Rcedilla
+<dead_cedilla> <G> : "\314" Gcedilla
+<dead_cedilla> <K> : "\315" Kcedilla
+<dead_cedilla> <L> : "\317" Lcedilla
+<dead_cedilla> <N> : "\322" Ncedilla
+<dead_cedilla> <r> : "\272" rcedilla
+<dead_cedilla> <g> : "\354" gcedilla
+<dead_cedilla> <k> : "\355" kcedilla
+<dead_cedilla> <l> : "\357" lcedilla
+<dead_cedilla> <n> : "\362" ncedilla
+<dead_diaeresis> <A> : "\304" Adiaeresis
+<dead_diaeresis> <O> : "\326" Odiaeresis
+<dead_diaeresis> <U> : "\334" Udiaeresis
+<dead_diaeresis> <a> : "\344" adiaeresis
+<dead_diaeresis> <o> : "\366" odiaeresis
+<dead_diaeresis> <u> : "\374" udiaeresis
+<dead_macron> <A> : "\302" Amacron
+<dead_macron> <E> : "\307" Emacron
+<dead_macron> <I> : "\316" Imacron
+<dead_macron> <O> : "\324" Omacron
+<dead_macron> <U> : "\333" Umacron
+<dead_macron> <a> : "\342" amacron
+<dead_macron> <e> : "\347" emacron
+<dead_macron> <i> : "\356" imacron
+<dead_macron> <o> : "\364" omacron
+<dead_macron> <u> : "\373" umacron
+<dead_macron> <macron> : "\255" macron
+<dead_macron> <dead_macron> : "\255" macron
+<dead_ogonek> <A> : "\300" Aogonek
+<dead_ogonek> <I> : "\301" Iogonek
+<dead_ogonek> <E> : "\306" Eogonek
+<dead_ogonek> <U> : "\330" Uogonek
+<dead_ogonek> <a> : "\340" aogonek
+<dead_ogonek> <i> : "\341" iogonek
+<dead_ogonek> <e> : "\346" eogonek
+<dead_ogonek> <u> : "\370" uogonek
+<dead_tilde> <O> : "\325" Otilde
+<dead_tilde> <o> : "\365" otilde
+<dead_tilde> <asciitilde> : "~" asciitilde
+<dead_tilde> <dead_tilde> : "~" asciitilde
+
+XCOMM End of Sequence Definition
diff --git a/libX11/nls/iso8859-13/XI18N_OBJS b/libX11/nls/iso8859-13/XI18N_OBJS
index daac7d36c..f20902a61 100644
--- a/libX11/nls/iso8859-13/XI18N_OBJS
+++ b/libX11/nls/iso8859-13/XI18N_OBJS
@@ -1,8 +1,8 @@
-# CATEGORY(XLC|XIM|OM) SHARED_LIBRARY_NAME FUNCTION_NAME
-#
-# XI18N objects table for euro locales
-#
-XLC common/xlibi18n _XlcGenericLoader # XLC_open
-XIM common/xiiimp _XimpLocalOpenIM # XIM_open
-XOM common/xomGeneric _XomGenericOpenOM # XOM_open
-
+# CATEGORY(XLC|XIM|OM) SHARED_LIBRARY_NAME FUNCTION_NAME
+#
+# XI18N objects table for euro locales
+#
+XLC common/xlibi18n _XlcGenericLoader # XLC_open
+XIM common/xiiimp _XimpLocalOpenIM # XIM_open
+XOM common/xomGeneric _XomGenericOpenOM # XOM_open
+
diff --git a/libX11/nls/iso8859-13/XLC_LOCALE.pre b/libX11/nls/iso8859-13/XLC_LOCALE.pre
index c85978582..b12750048 100644
--- a/libX11/nls/iso8859-13/XLC_LOCALE.pre
+++ b/libX11/nls/iso8859-13/XLC_LOCALE.pre
@@ -1,72 +1,72 @@
-XCOMM XLocale Database Sample for iso8859-13.
-XCOMM
-
-XCOMM
-XCOMM XLC_FONTSET category
-XCOMM
-XLC_FONTSET
-XCOMM fs0 class
-fs0 {
- charset {
- name ISO8859-1:GL
- }
- font {
- primary ISO8859-13:GL
- substitute ISO8859-1:GL
- vertical_rotate all
- }
-}
-XCOMM fs1 class
-fs1 {
- charset {
- name ISO8859-13:GR
- }
- font {
- primary ISO8859-13:GR
- }
-}
-END XLC_FONTSET
-
-XCOMM
-XCOMM XLC_XLOCALE category
-XCOMM
-XLC_XLOCALE
-
-encoding_name ISO8859-13
-mb_cur_max 1
-state_depend_encoding False
-#if WCHAR32
-wc_encoding_mask \x30000000
-wc_shift_bits 7
-#else
-wc_encoding_mask \x00008080
-wc_shift_bits 8
-#endif
-
-#ifndef X_LOCALE
-use_stdc_env True
-force_convert_to_mb True
-#endif
-
-XCOMM cs0 class
-cs0 {
- side GL:Default
- length 1
- wc_encoding \x00000000
- ct_encoding ISO8859-13:GL; ISO8859-1:GL
-}
-
-
-XCOMM cs1 class
-cs1 {
- side GR:Default
- length 1
-#if WCHAR32
- wc_encoding \x30000000
-#else
- wc_encoding \x00008080
-#endif
- ct_encoding ISO8859-13:GR
-}
-
-END XLC_XLOCALE
+XCOMM XLocale Database Sample for iso8859-13.
+XCOMM
+
+XCOMM
+XCOMM XLC_FONTSET category
+XCOMM
+XLC_FONTSET
+XCOMM fs0 class
+fs0 {
+ charset {
+ name ISO8859-1:GL
+ }
+ font {
+ primary ISO8859-13:GL
+ substitute ISO8859-1:GL
+ vertical_rotate all
+ }
+}
+XCOMM fs1 class
+fs1 {
+ charset {
+ name ISO8859-13:GR
+ }
+ font {
+ primary ISO8859-13:GR
+ }
+}
+END XLC_FONTSET
+
+XCOMM
+XCOMM XLC_XLOCALE category
+XCOMM
+XLC_XLOCALE
+
+encoding_name ISO8859-13
+mb_cur_max 1
+state_depend_encoding False
+#if WCHAR32
+wc_encoding_mask \x30000000
+wc_shift_bits 7
+#else
+wc_encoding_mask \x00008080
+wc_shift_bits 8
+#endif
+
+#ifndef X_LOCALE
+use_stdc_env True
+force_convert_to_mb True
+#endif
+
+XCOMM cs0 class
+cs0 {
+ side GL:Default
+ length 1
+ wc_encoding \x00000000
+ ct_encoding ISO8859-13:GL; ISO8859-1:GL
+}
+
+
+XCOMM cs1 class
+cs1 {
+ side GR:Default
+ length 1
+#if WCHAR32
+ wc_encoding \x30000000
+#else
+ wc_encoding \x00008080
+#endif
+ ct_encoding ISO8859-13:GR
+}
+
+END XLC_XLOCALE
diff --git a/libX11/nls/iso8859-14/Compose.pre b/libX11/nls/iso8859-14/Compose.pre
index 8bf641f1e..911a1eb2f 100644
--- a/libX11/nls/iso8859-14/Compose.pre
+++ b/libX11/nls/iso8859-14/Compose.pre
@@ -1,509 +1,509 @@
-XCOMM ISO 8859-14 (Latin 8) Compose Sequences
-XCOMM
-XCOMM Original version by Alastair McKinstry, <amck@maths.tcd.ie>
-XCOMM Fixed and tidied up by Seamus O Ciardhuain <seoc@cnds.ucd.ie> (Dec 2002)
-XCOMM
-XCOMM
-XCOMM First part is taken from the Latin-1 definitions,
-XCOMM i.e. characters the same in 8859-1 and 8859-14.
-XCOMM
-XCOMM <Multi_key> Means <Compose>
-XCOMM Special Character
-<Multi_key> <plus> <plus> : "#" numbersign
-<Multi_key> <apostrophe> <space> : "'" apostrophe
-<Multi_key> <space> <apostrophe> : "'" apostrophe
-<Multi_key> <A> <T> : "@" at
-<Multi_key> <parenleft> <parenleft> : "[" bracketleft
-<Multi_key> <slash> <slash> : "\\" backslash
-<Multi_key> <slash> <less> : "\\" backslash
-<Multi_key> <less> <slash> : "\\" backslash
-<Multi_key> <parenright> <parenright> : "]" bracketright
-<Multi_key> <asciicircum> <space> : "^" asciicircum
-<Multi_key> <space> <asciicircum> : "^" asciicircum
-<Multi_key> <greater> <space> : "^" asciicircum
-<Multi_key> <space> <greater> : "^" asciicircum
-<Multi_key> <grave> <space> : "`" grave
-<Multi_key> <space> <grave> : "`" grave
-<Multi_key> <parenleft> <minus> : "{" braceleft
-<Multi_key> <minus> <parenleft> : "{" braceleft
-<Multi_key> <slash> <asciicircum> : "|" bar
-<Multi_key> <asciicircum> <slash> : "|" bar
-<Multi_key> <V> <L> : "|" bar
-<Multi_key> <L> <V> : "|" bar
-<Multi_key> <v> <l> : "|" bar
-<Multi_key> <l> <v> : "|" bar
-<Multi_key> <parenright> <minus> : "}" braceright
-<Multi_key> <minus> <parenright> : "}" braceright
-<Multi_key> <asciitilde> <space> : "~" asciitilde
-<Multi_key> <space> <asciitilde> : "~" asciitilde
-<Multi_key> <minus> <space> : "~" asciitilde
-<Multi_key> <space> <minus> : "~" asciitilde
-<Multi_key> <l> <minus> : "\243" sterling
-<Multi_key> <minus> <l> : "\243" sterling
-<Multi_key> <L> <minus> : "\243" sterling
-<Multi_key> <minus> <L> : "\243" sterling
-<Multi_key> <l> <equal> : "\243" sterling
-<Multi_key> <equal> <l> : "\243" sterling
-<Multi_key> <L> <equal> : "\243" sterling
-<Multi_key> <equal> <L> : "\243" sterling
-<Multi_key> <s> <o> : "\247" section
-<Multi_key> <o> <s> : "\247" section
-<Multi_key> <S> <O> : "\247" section
-<Multi_key> <O> <S> : "\247" section
-<Multi_key> <S> <exclam> : "\247" section
-<Multi_key> <exclam> <S> : "\247" section
-<Multi_key> <s> <exclam> : "\247" section
-<Multi_key> <exclam> <s> : "\247" section
-<Multi_key> <S> <0> : "\247" section
-<Multi_key> <0> <S> : "\247" section
-<Multi_key> <s> <0> : "\247" section
-<Multi_key> <0> <s> : "\247" section
-<Multi_key> <c> <o> : "\251" copyright
-<Multi_key> <o> <c> : "\251" copyright
-<Multi_key> <C> <O> : "\251" copyright
-<Multi_key> <O> <C> : "\251" copyright
-<Multi_key> <c> <O> : "\251" copyright
-<Multi_key> <O> <c> : "\251" copyright
-<Multi_key> <C> <o> : "\251" copyright
-<Multi_key> <o> <C> : "\251" copyright
-<Multi_key> <c> <0> : "\251" copyright
-<Multi_key> <0> <c> : "\251" copyright
-<Multi_key> <C> <0> : "\251" copyright
-<Multi_key> <0> <C> : "\251" copyright
-<Multi_key> <p> <exclam> : "\266" paragraph
-<Multi_key> <exclam> <p> : "\266" paragraph
-<Multi_key> <P> <exclam> : "\266" paragraph
-<Multi_key> <exclam> <P> : "\266" paragraph
-<Multi_key> <space> <space> : "\240" nobreakspace
-<Multi_key> <minus> <minus> : "\255" hyphen
-<Multi_key> <R> <O> : "\256" registered
-<Multi_key> <O> <R> : "\256" registered
-<Multi_key> <r> <o> : "\256" registered
-<Multi_key> <o> <r> : "\256" registered
-<Multi_key> <R> <0> : "\256" registered
-<Multi_key> <r> <0> : "\256" registered
-<Multi_key> <0> <R> : "\256" registered
-<Multi_key> <0> <r> : "\256" registered
-
-XCOMM Accented Alphabet
-<Multi_key> <A> <grave> : "\300" Agrave
-<Multi_key> <grave> <A> : "\300" Agrave
-<Multi_key> <A> <acute> : "\301" Aacute
-<Multi_key> <acute> <A> : "\301" Aacute
-<Multi_key> <A> <apostrophe> : "\301" Aacute
-<Multi_key> <apostrophe> <A> : "\301" Aacute
-<Multi_key> <A> <asciicircum> : "\302" Acircumflex
-<Multi_key> <asciicircum> <A> : "\302" Acircumflex
-<Multi_key> <A> <greater> : "\302" Acircumflex
-<Multi_key> <greater> <A> : "\302" Acircumflex
-<Multi_key> <A> <asciitilde> : "\303" Atilde
-<Multi_key> <asciitilde> <A> : "\303" Atilde
-<Multi_key> <A> <minus> : "\303" Atilde
-<Multi_key> <minus> <A> : "\303" Atilde
-<Multi_key> <A> <quotedbl> : "\304" Adiaeresis
-<Multi_key> <quotedbl> <A> : "\304" Adiaeresis
-<Multi_key> <A> <diaeresis> : "\304" Adiaeresis
-<Multi_key> <diaeresis> <A> : "\304" Adiaeresis
-<Multi_key> <A> <asterisk> : "\305" Aring
-<Multi_key> <asterisk> <A> : "\305" Aring
-<Multi_key> <A> <E> : "\306" AE
-<Multi_key> <a> <grave> : "\340" agrave
-<Multi_key> <grave> <a> : "\340" agrave
-<Multi_key> <a> <acute> : "\341" aacute
-<Multi_key> <acute> <a> : "\341" aacute
-<Multi_key> <a> <apostrophe> : "\341" aacute
-<Multi_key> <apostrophe> <a> : "\341" aacute
-<Multi_key> <a> <asciicircum> : "\342" acircumflex
-<Multi_key> <asciicircum> <a> : "\342" acircumflex
-<Multi_key> <a> <greater> : "\342" acircumflex
-<Multi_key> <greater> <a> : "\342" acircumflex
-<Multi_key> <a> <asciitilde> : "\343" atilde
-<Multi_key> <asciitilde> <a> : "\343" atilde
-<Multi_key> <a> <minus> : "\343" atilde
-<Multi_key> <minus> <a> : "\343" atilde
-<Multi_key> <a> <quotedbl> : "\344" adiaeresis
-<Multi_key> <quotedbl> <a> : "\344" adiaeresis
-<Multi_key> <a> <diaeresis> : "\344" adiaeresis
-<Multi_key> <diaeresis> <a> : "\344" adiaeresis
-<Multi_key> <a> <asterisk> : "\345" aring
-<Multi_key> <asterisk> <a> : "\345" aring
-<Multi_key> <a> <e> : "\346" ae
-<Multi_key> <C> <comma> : "\307" Ccedilla
-<Multi_key> <C> <cedilla> : "\307" Ccedilla
-<Multi_key> <comma> <C> : "\307" Ccedilla
-<Multi_key> <cedilla> <C> : "\307" Ccedilla
-<Multi_key> <c> <comma> : "\347" ccedilla
-<Multi_key> <c> <cedilla> : "\347" ccedilla
-<Multi_key> <comma> <c> : "\347" ccedilla
-<Multi_key> <cedilla> <c> : "\347" ccedilla
-<Multi_key> <E> <grave> : "\310" Egrave
-<Multi_key> <grave> <E> : "\310" Egrave
-<Multi_key> <E> <acute> : "\311" Eacute
-<Multi_key> <acute> <E> : "\311" Eacute
-<Multi_key> <E> <apostrophe> : "\311" Eacute
-<Multi_key> <apostrophe> <E> : "\311" Eacute
-<Multi_key> <E> <asciicircum> : "\312" Ecircumflex
-<Multi_key> <asciicircum> <E> : "\312" Ecircumflex
-<Multi_key> <E> <greater> : "\312" Ecircumflex
-<Multi_key> <greater> <E> : "\312" Ecircumflex
-<Multi_key> <E> <quotedbl> : "\313" Ediaeresis
-<Multi_key> <quotedbl> <E> : "\313" Ediaeresis
-<Multi_key> <E> <diaeresis> : "\313" Ediaeresis
-<Multi_key> <diaeresis> <E> : "\313" Ediaeresis
-<Multi_key> <e> <grave> : "\350" egrave
-<Multi_key> <grave> <e> : "\350" egrave
-<Multi_key> <e> <acute> : "\351" eacute
-<Multi_key> <acute> <e> : "\351" eacute
-<Multi_key> <e> <apostrophe> : "\351" eacute
-<Multi_key> <apostrophe> <e> : "\351" eacute
-<Multi_key> <e> <asciicircum> : "\352" ecircumflex
-<Multi_key> <asciicircum> <e> : "\352" ecircumflex
-<Multi_key> <e> <greater> : "\352" ecircumflex
-<Multi_key> <greater> <e> : "\352" ecircumflex
-<Multi_key> <e> <quotedbl> : "\353" ediaeresis
-<Multi_key> <quotedbl> <e> : "\353" ediaeresis
-<Multi_key> <e> <diaeresis> : "\353" ediaeresis
-<Multi_key> <diaeresis> <e> : "\353" ediaeresis
-<Multi_key> <I> <grave> : "\314" Igrave
-<Multi_key> <grave> <I> : "\314" Igrave
-<Multi_key> <I> <acute> : "\315" Iacute
-<Multi_key> <acute> <I> : "\315" Iacute
-<Multi_key> <I> <apostrophe> : "\315" Iacute
-<Multi_key> <apostrophe> <I> : "\315" Iacute
-<Multi_key> <I> <asciicircum> : "\316" Icircumflex
-<Multi_key> <asciicircum> <I> : "\316" Icircumflex
-<Multi_key> <I> <greater> : "\316" Icircumflex
-<Multi_key> <greater> <I> : "\316" Icircumflex
-<Multi_key> <I> <quotedbl> : "\317" Idiaeresis
-<Multi_key> <quotedbl> <I> : "\317" Idiaeresis
-<Multi_key> <I> <diaeresis> : "\317" Idiaeresis
-<Multi_key> <diaeresis> <I> : "\317" Idiaeresis
-<Multi_key> <i> <grave> : "\354" igrave
-<Multi_key> <grave> <i> : "\354" igrave
-<Multi_key> <i> <acute> : "\355" iacute
-<Multi_key> <acute> <i> : "\355" iacute
-<Multi_key> <i> <apostrophe> : "\355" iacute
-<Multi_key> <apostrophe> <i> : "\355" iacute
-<Multi_key> <i> <asciicircum> : "\356" icircumflex
-<Multi_key> <asciicircum> <i> : "\356" icircumflex
-<Multi_key> <i> <greater> : "\356" icircumflex
-<Multi_key> <greater> <i> : "\356" icircumflex
-<Multi_key> <i> <quotedbl> : "\357" idiaeresis
-<Multi_key> <quotedbl> <i> : "\357" idiaeresis
-<Multi_key> <i> <diaeresis> : "\357" idiaeresis
-<Multi_key> <diaeresis> <i> : "\357" idiaeresis
-<Multi_key> <N> <asciitilde> : "\321" Ntilde
-<Multi_key> <asciitilde> <N> : "\321" Ntilde
-<Multi_key> <N> <minus> : "\321" Ntilde
-<Multi_key> <minus> <N> : "\321" Ntilde
-<Multi_key> <n> <asciitilde> : "\361" ntilde
-<Multi_key> <asciitilde> <n> : "\361" ntilde
-<Multi_key> <n> <minus> : "\361" ntilde
-<Multi_key> <minus> <n> : "\361" ntilde
-<Multi_key> <O> <grave> : "\322" Ograve
-<Multi_key> <grave> <O> : "\322" Ograve
-<Multi_key> <O> <acute> : "\323" Oacute
-<Multi_key> <acute> <O> : "\323" Oacute
-<Multi_key> <O> <apostrophe> : "\323" Oacute
-<Multi_key> <apostrophe> <O> : "\323" Oacute
-<Multi_key> <O> <asciicircum> : "\324" Ocircumflex
-<Multi_key> <asciicircum> <O> : "\324" Ocircumflex
-<Multi_key> <O> <greater> : "\324" Ocircumflex
-<Multi_key> <greater> <O> : "\324" Ocircumflex
-<Multi_key> <O> <asciitilde> : "\325" Otilde
-<Multi_key> <asciitilde> <O> : "\325" Otilde
-<Multi_key> <O> <minus> : "\325" Otilde
-<Multi_key> <minus> <O> : "\325" Otilde
-<Multi_key> <O> <quotedbl> : "\326" Odiaeresis
-<Multi_key> <quotedbl> <O> : "\326" Odiaeresis
-<Multi_key> <O> <diaeresis> : "\326" Odiaeresis
-<Multi_key> <diaeresis> <O> : "\326" Odiaeresis
-<Multi_key> <O> <slash> : "\330" Ooblique
-<Multi_key> <slash> <O> : "\330" Ooblique
-<Multi_key> <o> <grave> : "\362" ograve
-<Multi_key> <grave> <o> : "\362" ograve
-<Multi_key> <o> <acute> : "\363" oacute
-<Multi_key> <acute> <o> : "\363" oacute
-<Multi_key> <o> <apostrophe> : "\363" oacute
-<Multi_key> <apostrophe> <o> : "\363" oacute
-<Multi_key> <o> <asciicircum> : "\364" ocircumflex
-<Multi_key> <asciicircum> <o> : "\364" ocircumflex
-<Multi_key> <o> <greater> : "\364" ocircumflex
-<Multi_key> <greater> <o> : "\364" ocircumflex
-<Multi_key> <o> <asciitilde> : "\365" otilde
-<Multi_key> <asciitilde> <o> : "\365" otilde
-<Multi_key> <o> <minus> : "\365" otilde
-<Multi_key> <minus> <o> : "\365" otilde
-<Multi_key> <o> <quotedbl> : "\366" odiaeresis
-<Multi_key> <quotedbl> <o> : "\366" odiaeresis
-<Multi_key> <o> <diaeresis> : "\366" odiaeresis
-<Multi_key> <diaeresis> <o> : "\366" odiaeresis
-<Multi_key> <o> <slash> : "\370" oslash
-<Multi_key> <slash> <o> : "\370" oslash
-<Multi_key> <U> <grave> : "\331" Ugrave
-<Multi_key> <grave> <U> : "\331" Ugrave
-<Multi_key> <U> <acute> : "\332" Uacute
-<Multi_key> <acute> <U> : "\332" Uacute
-<Multi_key> <U> <apostrophe> : "\332" Uacute
-<Multi_key> <apostrophe> <U> : "\332" Uacute
-<Multi_key> <U> <asciicircum> : "\333" Ucircumflex
-<Multi_key> <asciicircum> <U> : "\333" Ucircumflex
-<Multi_key> <U> <greater> : "\333" Ucircumflex
-<Multi_key> <greater> <U> : "\333" Ucircumflex
-<Multi_key> <U> <quotedbl> : "\334" Udiaeresis
-<Multi_key> <quotedbl> <U> : "\334" Udiaeresis
-<Multi_key> <U> <diaeresis> : "\334" Udiaeresis
-<Multi_key> <diaeresis> <U> : "\334" Udiaeresis
-<Multi_key> <u> <grave> : "\371" ugrave
-<Multi_key> <grave> <u> : "\371" ugrave
-<Multi_key> <u> <acute> : "\372" uacute
-<Multi_key> <acute> <u> : "\372" uacute
-<Multi_key> <u> <apostrophe> : "\372" uacute
-<Multi_key> <apostrophe> <u> : "\372" uacute
-<Multi_key> <u> <asciicircum> : "\373" ucircumflex
-<Multi_key> <asciicircum> <u> : "\373" ucircumflex
-<Multi_key> <u> <greater> : "\373" ucircumflex
-<Multi_key> <greater> <u> : "\373" ucircumflex
-<Multi_key> <u> <quotedbl> : "\374" udiaeresis
-<Multi_key> <quotedbl> <u> : "\374" udiaeresis
-<Multi_key> <u> <diaeresis> : "\374" udiaeresis
-<Multi_key> <diaeresis> <u> : "\374" udiaeresis
-<Multi_key> <s> <s> : "\337" ssharp
-<Multi_key> <Y> <acute> : "\335" Yacute
-<Multi_key> <acute> <Y> : "\335" Yacute
-<Multi_key> <Y> <apostrophe> : "\335" Yacute
-<Multi_key> <apostrophe> <Y> : "\335" Yacute
-<Multi_key> <y> <acute> : "\375" yacute
-<Multi_key> <acute> <y> : "\375" yacute
-<Multi_key> <y> <apostrophe> : "\375" yacute
-<Multi_key> <apostrophe> <y> : "\375" yacute
-<Multi_key> <y> <quotedbl> : "\377" ydiaeresis
-<Multi_key> <quotedbl> <y> : "\377" ydiaeresis
-<Multi_key> <y> <diaeresis> : "\377" ydiaeresis
-<Multi_key> <diaeresis> <y> : "\377" ydiaeresis
-
-XCOMM
-XCOMM dead key accent keysyms
-XCOMM Special Character
-<dead_circumflex> <slash> : "|" bar
-<dead_grave> <space> : "`" grave
-<dead_acute> <space> : "'" apostrophe
-<dead_circumflex> <space> : "^" asciicircum
-<dead_tilde> <space> : "~" asciitilde
-
-XCOMM Accented Alphabet
-<dead_grave> <A> : "\300" Agrave
-<dead_acute> <A> : "\301" Aacute
-<dead_circumflex> <A> : "\302" Acircumflex
-<dead_tilde> <A> : "\303" Atilde
-<dead_diaeresis> <A> : "\304" Adiaeresis
-<dead_grave> <a> : "\340" agrave
-<dead_acute> <a> : "\341" aacute
-<dead_circumflex> <a> : "\342" acircumflex
-<dead_tilde> <a> : "\343" atilde
-<dead_diaeresis> <a> : "\344" adiaeresis
-<dead_cedilla> <C> : "\307" Ccedilla
-<dead_cedilla> <c> : "\347" ccedilla
-<dead_grave> <E> : "\310" Egrave
-<dead_acute> <E> : "\311" Eacute
-<dead_circumflex> <E> : "\312" Ecircumflex
-<dead_diaeresis> <E> : "\313" Ediaeresis
-<dead_grave> <e> : "\350" egrave
-<dead_acute> <e> : "\351" eacute
-<dead_circumflex> <e> : "\352" ecircumflex
-<dead_diaeresis> <e> : "\353" ediaeresis
-<dead_grave> <I> : "\314" Igrave
-<dead_acute> <I> : "\315" Iacute
-<dead_circumflex> <I> : "\316" Icircumflex
-<dead_diaeresis> <I> : "\317" Idiaeresis
-<dead_grave> <i> : "\354" igrave
-<dead_acute> <i> : "\355" iacute
-<dead_circumflex> <i> : "\356" icircumflex
-<dead_diaeresis> <i> : "\357" idiaeresis
-<dead_tilde> <N> : "\321" Ntilde
-<dead_tilde> <n> : "\361" ntilde
-<dead_grave> <O> : "\322" Ograve
-<dead_acute> <O> : "\323" Oacute
-<dead_circumflex> <O> : "\324" Ocircumflex
-<dead_tilde> <O> : "\325" Otilde
-<dead_diaeresis> <O> : "\326" Odiaeresis
-<dead_grave> <o> : "\362" ograve
-<dead_acute> <o> : "\363" oacute
-<dead_circumflex> <o> : "\364" ocircumflex
-<dead_tilde> <o> : "\365" otilde
-<dead_diaeresis> <o> : "\366" odiaeresis
-<dead_grave> <U> : "\331" Ugrave
-<dead_acute> <U> : "\332" Uacute
-<dead_circumflex> <U> : "\333" Ucircumflex
-<dead_diaeresis> <U> : "\334" Udiaeresis
-<dead_grave> <u> : "\371" ugrave
-<dead_acute> <u> : "\372" uacute
-<dead_circumflex> <u> : "\373" ucircumflex
-<dead_diaeresis> <u> : "\374" udiaeresis
-<dead_acute> <Y> : "\335" Yacute
-<dead_acute> <y> : "\375" yacute
-<dead_diaeresis> <y> : "\377" ydiaeresis
-
-
-XCOMM The following is Celtic character support,
-XCOMM i.e. the characters in 8859-14 which differ from 8859-1.
-
-<Multi_key> <period> <b> : "\242" babovedot
-<Multi_key> <period> <B> : "\241" Babovedot
-<Multi_key> <period> <c> : "\245" cabovedot
-<Multi_key> <period> <C> : "\245" Cabovedot
-<Multi_key> <period> <d> : "\253" dabovedot
-<Multi_key> <period> <D> : "\246" Dabovedot
-<Multi_key> <period> <f> : "\261" fabovedot
-<Multi_key> <period> <F> : "\260" Fabovedot
-<Multi_key> <period> <g> : "\263" gabovedot
-<Multi_key> <period> <G> : "\262" Gabovedot
-<Multi_key> <period> <m> : "\265" mabovedot
-<Multi_key> <period> <M> : "\264" Mabovedot
-<Multi_key> <period> <p> : "\271" pabovedot
-<Multi_key> <period> <P> : "\267" Pabovedot
-<Multi_key> <period> <s> : "\277" sabovedot
-<Multi_key> <period> <S> : "\273" Sabovedot
-<Multi_key> <period> <t> : "\367" tabovedot
-<Multi_key> <period> <T> : "\327" Tabovedot
-
-<Multi_key> <b> <period> : "\242" babovedot
-<Multi_key> <B> <period> : "\241" Babovedot
-<Multi_key> <c> <period> : "\245" cabovedot
-<Multi_key> <C> <period> : "\245" Cabovedot
-<Multi_key> <d> <period> : "\253" dabovedot
-<Multi_key> <D> <period> : "\246" Dabovedot
-<Multi_key> <f> <period> : "\261" fabovedot
-<Multi_key> <F> <period> : "\260" Fabovedot
-<Multi_key> <g> <period> : "\263" gabovedot
-<Multi_key> <G> <period> : "\262" Gabovedot
-<Multi_key> <m> <period> : "\265" mabovedot
-<Multi_key> <M> <period> : "\264" Mabovedot
-<Multi_key> <p> <period> : "\271" pabovedot
-<Multi_key> <P> <period> : "\267" Pabovedot
-<Multi_key> <s> <period> : "\277" sabovedot
-<Multi_key> <S> <period> : "\273" Sabovedot
-<Multi_key> <t> <period> : "\367" tabovedot
-<Multi_key> <T> <period> : "\327" Tabovedot
-
-<Multi_key> <y> <asciicircum> : "\376" ycircumflex
-<Multi_key> <asciicircum> <y> : "\376" ycircumflex
-<Multi_key> <Y> <asciicircum> : "\336" Ycircumflex
-<Multi_key> <asciicircum> <Y> : "\336" Ycircumflex
-
-<Multi_key> <w> <asciicircum> : "\360" wcircumflex
-<Multi_key> <asciicircum> <w> : "\360" wcircumflex
-<Multi_key> <W> <asciicircum> : "\320" Wcircumflex
-<Multi_key> <asciicircum> <W> : "\320" Wcircumflex
-
-<Multi_key> <Y> <quotedbl> : "\257" Ydiaeresis
-<Multi_key> <quotedbl> <Y> : "\257" Ydiaeresis
-<Multi_key> <Y> <diaeresis> : "\257" Ydiaeresis
-<Multi_key> <diaeresis> <Y> : "\257" Ydiaeresis
-
-<Multi_key> <W> <quotedbl> : "\275" Wdiaeresis
-<Multi_key> <quotedbl> <W> : "\275" Wdiaeresis
-<Multi_key> <W> <diaeresis> : "\275" Wdiaeresis
-<Multi_key> <diaeresis> <W> : "\275" Wdiaeresis
-<Multi_key> <w> <quotedbl> : "\276" wdiaeresis
-<Multi_key> <quotedbl> <w> : "\276" wdiaeresis
-<Multi_key> <w> <diaeresis> : "\276" wdiaeresis
-<Multi_key> <diaeresis> <w> : "\276" wdiaeresis
-
-<Multi_key> <Y> <grave> : "\254" Ygrave
-<Multi_key> <grave> <Y> : "\254" Ygrave
-<Multi_key> <y> <grave> : "\274" ygrave
-<Multi_key> <grave> <y> : "\274" ygrave
-
-<Multi_key> <W> <grave> : "\250" Wgrave
-<Multi_key> <grave> <W> : "\250" Wgrave
-<Multi_key> <w> <grave> : "\270" wgrave
-<Multi_key> <grave> <w> : "\270" wgrave
-
-<Multi_key> <W> <apostrophe> : "\252" Wacute
-<Multi_key> <apostrophe> <W> : "\252" Wacute
-<Multi_key> <W> <acute> : "\252" Wacute
-<Multi_key> <acute> <W> : "\252" Wacute
-<Multi_key> <w> <apostrophe> : "\272" wacute
-<Multi_key> <apostrophe> <w> : "\272" wacute
-<Multi_key> <w> <acute> : "\272" wacute
-<Multi_key> <acute> <w> : "\272" wacute
-
-<dead_abovedot> <b> : "\242" babovedot
-<dead_abovedot> <B> : "\241" Babovedot
-<dead_abovedot> <c> : "\245" cabovedot
-<dead_abovedot> <C> : "\245" Cabovedot
-<dead_abovedot> <d> : "\253" dabovedot
-<dead_abovedot> <D> : "\246" Dabovedot
-<dead_abovedot> <f> : "\261" fabovedot
-<dead_abovedot> <F> : "\260" Fabovedot
-<dead_abovedot> <g> : "\263" gabovedot
-<dead_abovedot> <G> : "\262" Gabovedot
-<dead_abovedot> <m> : "\265" mabovedot
-<dead_abovedot> <M> : "\264" Mabovedot
-<dead_abovedot> <p> : "\271" pabovedot
-<dead_abovedot> <P> : "\267" Pabovedot
-<dead_abovedot> <s> : "\277" sabovedot
-<dead_abovedot> <S> : "\273" Sabovedot
-<dead_abovedot> <t> : "\367" tabovedot
-<dead_abovedot> <T> : "\327" Tabovedot
-
-<dead_circumflex> <b> : "\242" babovedot
-<dead_circumflex> <B> : "\241" Babovedot
-<dead_circumflex> <c> : "\245" cabovedot
-<dead_circumflex> <C> : "\245" Cabovedot
-<dead_circumflex> <d> : "\253" dabovedot
-<dead_circumflex> <D> : "\246" Dabovedot
-<dead_circumflex> <f> : "\261" fabovedot
-<dead_circumflex> <F> : "\260" Fabovedot
-<dead_circumflex> <g> : "\263" gabovedot
-<dead_circumflex> <G> : "\262" Gabovedot
-<dead_circumflex> <m> : "\265" mabovedot
-<dead_circumflex> <M> : "\264" Mabovedot
-<dead_circumflex> <p> : "\271" pabovedot
-<dead_circumflex> <P> : "\267" Pabovedot
-<dead_circumflex> <s> : "\277" sabovedot
-<dead_circumflex> <S> : "\273" Sabovedot
-<dead_circumflex> <t> : "\367" tabovedot
-<dead_circumflex> <T> : "\327" Tabovedot
-
-<dead_acute> <b> : "\242" babovedot
-<dead_acute> <B> : "\241" Babovedot
-<dead_acute> <c> : "\245" cabovedot
-<dead_acute> <C> : "\245" Cabovedot
-<dead_acute> <d> : "\253" dabovedot
-<dead_acute> <D> : "\246" Dabovedot
-<dead_acute> <f> : "\261" fabovedot
-<dead_acute> <F> : "\260" Fabovedot
-<dead_acute> <g> : "\263" gabovedot
-<dead_acute> <G> : "\262" Gabovedot
-<dead_acute> <m> : "\265" mabovedot
-<dead_acute> <M> : "\264" Mabovedot
-<dead_acute> <p> : "\271" pabovedot
-<dead_acute> <P> : "\267" Pabovedot
-<dead_acute> <s> : "\277" sabovedot
-<dead_acute> <S> : "\273" Sabovedot
-<dead_acute> <t> : "\367" tabovedot
-<dead_acute> <T> : "\327" Tabovedot
-
-<dead_diaeresis> <Y> : "\257" Ydiaeresis
-
-<dead_grave> <Y> : "\254" Ygrave
-<dead_grave> <y> : "\274" ygrave
-
-<dead_circumflex> <y> : "\376" ycircumflex
-<dead_circumflex> <Y> : "\336" Ycircumflex
-
-<dead_circumflex> <w> : "\360" wcircumflex
-<dead_circumflex> <W> : "\320" Wcircumflex
-
-<dead_diaeresis> <w> : "\276" wdiaeresis
-<dead_diaeresis> <W> : "\275" Wdiaeresis
-
-<dead_acute> <w> : "\272" wacute
-<dead_acute> <W> : "\252" Wacute
-
-<dead_grave> <W> : "\250" Wgrave
-<dead_grave> <w> : "\270" wgrave
-
-XCOMM End of Sequence Definition
+XCOMM ISO 8859-14 (Latin 8) Compose Sequences
+XCOMM
+XCOMM Original version by Alastair McKinstry, <amck@maths.tcd.ie>
+XCOMM Fixed and tidied up by Seamus O Ciardhuain <seoc@cnds.ucd.ie> (Dec 2002)
+XCOMM
+XCOMM
+XCOMM First part is taken from the Latin-1 definitions,
+XCOMM i.e. characters the same in 8859-1 and 8859-14.
+XCOMM
+XCOMM <Multi_key> Means <Compose>
+XCOMM Special Character
+<Multi_key> <plus> <plus> : "#" numbersign
+<Multi_key> <apostrophe> <space> : "'" apostrophe
+<Multi_key> <space> <apostrophe> : "'" apostrophe
+<Multi_key> <A> <T> : "@" at
+<Multi_key> <parenleft> <parenleft> : "[" bracketleft
+<Multi_key> <slash> <slash> : "\\" backslash
+<Multi_key> <slash> <less> : "\\" backslash
+<Multi_key> <less> <slash> : "\\" backslash
+<Multi_key> <parenright> <parenright> : "]" bracketright
+<Multi_key> <asciicircum> <space> : "^" asciicircum
+<Multi_key> <space> <asciicircum> : "^" asciicircum
+<Multi_key> <greater> <space> : "^" asciicircum
+<Multi_key> <space> <greater> : "^" asciicircum
+<Multi_key> <grave> <space> : "`" grave
+<Multi_key> <space> <grave> : "`" grave
+<Multi_key> <parenleft> <minus> : "{" braceleft
+<Multi_key> <minus> <parenleft> : "{" braceleft
+<Multi_key> <slash> <asciicircum> : "|" bar
+<Multi_key> <asciicircum> <slash> : "|" bar
+<Multi_key> <V> <L> : "|" bar
+<Multi_key> <L> <V> : "|" bar
+<Multi_key> <v> <l> : "|" bar
+<Multi_key> <l> <v> : "|" bar
+<Multi_key> <parenright> <minus> : "}" braceright
+<Multi_key> <minus> <parenright> : "}" braceright
+<Multi_key> <asciitilde> <space> : "~" asciitilde
+<Multi_key> <space> <asciitilde> : "~" asciitilde
+<Multi_key> <minus> <space> : "~" asciitilde
+<Multi_key> <space> <minus> : "~" asciitilde
+<Multi_key> <l> <minus> : "\243" sterling
+<Multi_key> <minus> <l> : "\243" sterling
+<Multi_key> <L> <minus> : "\243" sterling
+<Multi_key> <minus> <L> : "\243" sterling
+<Multi_key> <l> <equal> : "\243" sterling
+<Multi_key> <equal> <l> : "\243" sterling
+<Multi_key> <L> <equal> : "\243" sterling
+<Multi_key> <equal> <L> : "\243" sterling
+<Multi_key> <s> <o> : "\247" section
+<Multi_key> <o> <s> : "\247" section
+<Multi_key> <S> <O> : "\247" section
+<Multi_key> <O> <S> : "\247" section
+<Multi_key> <S> <exclam> : "\247" section
+<Multi_key> <exclam> <S> : "\247" section
+<Multi_key> <s> <exclam> : "\247" section
+<Multi_key> <exclam> <s> : "\247" section
+<Multi_key> <S> <0> : "\247" section
+<Multi_key> <0> <S> : "\247" section
+<Multi_key> <s> <0> : "\247" section
+<Multi_key> <0> <s> : "\247" section
+<Multi_key> <c> <o> : "\251" copyright
+<Multi_key> <o> <c> : "\251" copyright
+<Multi_key> <C> <O> : "\251" copyright
+<Multi_key> <O> <C> : "\251" copyright
+<Multi_key> <c> <O> : "\251" copyright
+<Multi_key> <O> <c> : "\251" copyright
+<Multi_key> <C> <o> : "\251" copyright
+<Multi_key> <o> <C> : "\251" copyright
+<Multi_key> <c> <0> : "\251" copyright
+<Multi_key> <0> <c> : "\251" copyright
+<Multi_key> <C> <0> : "\251" copyright
+<Multi_key> <0> <C> : "\251" copyright
+<Multi_key> <p> <exclam> : "\266" paragraph
+<Multi_key> <exclam> <p> : "\266" paragraph
+<Multi_key> <P> <exclam> : "\266" paragraph
+<Multi_key> <exclam> <P> : "\266" paragraph
+<Multi_key> <space> <space> : "\240" nobreakspace
+<Multi_key> <minus> <minus> : "\255" hyphen
+<Multi_key> <R> <O> : "\256" registered
+<Multi_key> <O> <R> : "\256" registered
+<Multi_key> <r> <o> : "\256" registered
+<Multi_key> <o> <r> : "\256" registered
+<Multi_key> <R> <0> : "\256" registered
+<Multi_key> <r> <0> : "\256" registered
+<Multi_key> <0> <R> : "\256" registered
+<Multi_key> <0> <r> : "\256" registered
+
+XCOMM Accented Alphabet
+<Multi_key> <A> <grave> : "\300" Agrave
+<Multi_key> <grave> <A> : "\300" Agrave
+<Multi_key> <A> <acute> : "\301" Aacute
+<Multi_key> <acute> <A> : "\301" Aacute
+<Multi_key> <A> <apostrophe> : "\301" Aacute
+<Multi_key> <apostrophe> <A> : "\301" Aacute
+<Multi_key> <A> <asciicircum> : "\302" Acircumflex
+<Multi_key> <asciicircum> <A> : "\302" Acircumflex
+<Multi_key> <A> <greater> : "\302" Acircumflex
+<Multi_key> <greater> <A> : "\302" Acircumflex
+<Multi_key> <A> <asciitilde> : "\303" Atilde
+<Multi_key> <asciitilde> <A> : "\303" Atilde
+<Multi_key> <A> <minus> : "\303" Atilde
+<Multi_key> <minus> <A> : "\303" Atilde
+<Multi_key> <A> <quotedbl> : "\304" Adiaeresis
+<Multi_key> <quotedbl> <A> : "\304" Adiaeresis
+<Multi_key> <A> <diaeresis> : "\304" Adiaeresis
+<Multi_key> <diaeresis> <A> : "\304" Adiaeresis
+<Multi_key> <A> <asterisk> : "\305" Aring
+<Multi_key> <asterisk> <A> : "\305" Aring
+<Multi_key> <A> <E> : "\306" AE
+<Multi_key> <a> <grave> : "\340" agrave
+<Multi_key> <grave> <a> : "\340" agrave
+<Multi_key> <a> <acute> : "\341" aacute
+<Multi_key> <acute> <a> : "\341" aacute
+<Multi_key> <a> <apostrophe> : "\341" aacute
+<Multi_key> <apostrophe> <a> : "\341" aacute
+<Multi_key> <a> <asciicircum> : "\342" acircumflex
+<Multi_key> <asciicircum> <a> : "\342" acircumflex
+<Multi_key> <a> <greater> : "\342" acircumflex
+<Multi_key> <greater> <a> : "\342" acircumflex
+<Multi_key> <a> <asciitilde> : "\343" atilde
+<Multi_key> <asciitilde> <a> : "\343" atilde
+<Multi_key> <a> <minus> : "\343" atilde
+<Multi_key> <minus> <a> : "\343" atilde
+<Multi_key> <a> <quotedbl> : "\344" adiaeresis
+<Multi_key> <quotedbl> <a> : "\344" adiaeresis
+<Multi_key> <a> <diaeresis> : "\344" adiaeresis
+<Multi_key> <diaeresis> <a> : "\344" adiaeresis
+<Multi_key> <a> <asterisk> : "\345" aring
+<Multi_key> <asterisk> <a> : "\345" aring
+<Multi_key> <a> <e> : "\346" ae
+<Multi_key> <C> <comma> : "\307" Ccedilla
+<Multi_key> <C> <cedilla> : "\307" Ccedilla
+<Multi_key> <comma> <C> : "\307" Ccedilla
+<Multi_key> <cedilla> <C> : "\307" Ccedilla
+<Multi_key> <c> <comma> : "\347" ccedilla
+<Multi_key> <c> <cedilla> : "\347" ccedilla
+<Multi_key> <comma> <c> : "\347" ccedilla
+<Multi_key> <cedilla> <c> : "\347" ccedilla
+<Multi_key> <E> <grave> : "\310" Egrave
+<Multi_key> <grave> <E> : "\310" Egrave
+<Multi_key> <E> <acute> : "\311" Eacute
+<Multi_key> <acute> <E> : "\311" Eacute
+<Multi_key> <E> <apostrophe> : "\311" Eacute
+<Multi_key> <apostrophe> <E> : "\311" Eacute
+<Multi_key> <E> <asciicircum> : "\312" Ecircumflex
+<Multi_key> <asciicircum> <E> : "\312" Ecircumflex
+<Multi_key> <E> <greater> : "\312" Ecircumflex
+<Multi_key> <greater> <E> : "\312" Ecircumflex
+<Multi_key> <E> <quotedbl> : "\313" Ediaeresis
+<Multi_key> <quotedbl> <E> : "\313" Ediaeresis
+<Multi_key> <E> <diaeresis> : "\313" Ediaeresis
+<Multi_key> <diaeresis> <E> : "\313" Ediaeresis
+<Multi_key> <e> <grave> : "\350" egrave
+<Multi_key> <grave> <e> : "\350" egrave
+<Multi_key> <e> <acute> : "\351" eacute
+<Multi_key> <acute> <e> : "\351" eacute
+<Multi_key> <e> <apostrophe> : "\351" eacute
+<Multi_key> <apostrophe> <e> : "\351" eacute
+<Multi_key> <e> <asciicircum> : "\352" ecircumflex
+<Multi_key> <asciicircum> <e> : "\352" ecircumflex
+<Multi_key> <e> <greater> : "\352" ecircumflex
+<Multi_key> <greater> <e> : "\352" ecircumflex
+<Multi_key> <e> <quotedbl> : "\353" ediaeresis
+<Multi_key> <quotedbl> <e> : "\353" ediaeresis
+<Multi_key> <e> <diaeresis> : "\353" ediaeresis
+<Multi_key> <diaeresis> <e> : "\353" ediaeresis
+<Multi_key> <I> <grave> : "\314" Igrave
+<Multi_key> <grave> <I> : "\314" Igrave
+<Multi_key> <I> <acute> : "\315" Iacute
+<Multi_key> <acute> <I> : "\315" Iacute
+<Multi_key> <I> <apostrophe> : "\315" Iacute
+<Multi_key> <apostrophe> <I> : "\315" Iacute
+<Multi_key> <I> <asciicircum> : "\316" Icircumflex
+<Multi_key> <asciicircum> <I> : "\316" Icircumflex
+<Multi_key> <I> <greater> : "\316" Icircumflex
+<Multi_key> <greater> <I> : "\316" Icircumflex
+<Multi_key> <I> <quotedbl> : "\317" Idiaeresis
+<Multi_key> <quotedbl> <I> : "\317" Idiaeresis
+<Multi_key> <I> <diaeresis> : "\317" Idiaeresis
+<Multi_key> <diaeresis> <I> : "\317" Idiaeresis
+<Multi_key> <i> <grave> : "\354" igrave
+<Multi_key> <grave> <i> : "\354" igrave
+<Multi_key> <i> <acute> : "\355" iacute
+<Multi_key> <acute> <i> : "\355" iacute
+<Multi_key> <i> <apostrophe> : "\355" iacute
+<Multi_key> <apostrophe> <i> : "\355" iacute
+<Multi_key> <i> <asciicircum> : "\356" icircumflex
+<Multi_key> <asciicircum> <i> : "\356" icircumflex
+<Multi_key> <i> <greater> : "\356" icircumflex
+<Multi_key> <greater> <i> : "\356" icircumflex
+<Multi_key> <i> <quotedbl> : "\357" idiaeresis
+<Multi_key> <quotedbl> <i> : "\357" idiaeresis
+<Multi_key> <i> <diaeresis> : "\357" idiaeresis
+<Multi_key> <diaeresis> <i> : "\357" idiaeresis
+<Multi_key> <N> <asciitilde> : "\321" Ntilde
+<Multi_key> <asciitilde> <N> : "\321" Ntilde
+<Multi_key> <N> <minus> : "\321" Ntilde
+<Multi_key> <minus> <N> : "\321" Ntilde
+<Multi_key> <n> <asciitilde> : "\361" ntilde
+<Multi_key> <asciitilde> <n> : "\361" ntilde
+<Multi_key> <n> <minus> : "\361" ntilde
+<Multi_key> <minus> <n> : "\361" ntilde
+<Multi_key> <O> <grave> : "\322" Ograve
+<Multi_key> <grave> <O> : "\322" Ograve
+<Multi_key> <O> <acute> : "\323" Oacute
+<Multi_key> <acute> <O> : "\323" Oacute
+<Multi_key> <O> <apostrophe> : "\323" Oacute
+<Multi_key> <apostrophe> <O> : "\323" Oacute
+<Multi_key> <O> <asciicircum> : "\324" Ocircumflex
+<Multi_key> <asciicircum> <O> : "\324" Ocircumflex
+<Multi_key> <O> <greater> : "\324" Ocircumflex
+<Multi_key> <greater> <O> : "\324" Ocircumflex
+<Multi_key> <O> <asciitilde> : "\325" Otilde
+<Multi_key> <asciitilde> <O> : "\325" Otilde
+<Multi_key> <O> <minus> : "\325" Otilde
+<Multi_key> <minus> <O> : "\325" Otilde
+<Multi_key> <O> <quotedbl> : "\326" Odiaeresis
+<Multi_key> <quotedbl> <O> : "\326" Odiaeresis
+<Multi_key> <O> <diaeresis> : "\326" Odiaeresis
+<Multi_key> <diaeresis> <O> : "\326" Odiaeresis
+<Multi_key> <O> <slash> : "\330" Ooblique
+<Multi_key> <slash> <O> : "\330" Ooblique
+<Multi_key> <o> <grave> : "\362" ograve
+<Multi_key> <grave> <o> : "\362" ograve
+<Multi_key> <o> <acute> : "\363" oacute
+<Multi_key> <acute> <o> : "\363" oacute
+<Multi_key> <o> <apostrophe> : "\363" oacute
+<Multi_key> <apostrophe> <o> : "\363" oacute
+<Multi_key> <o> <asciicircum> : "\364" ocircumflex
+<Multi_key> <asciicircum> <o> : "\364" ocircumflex
+<Multi_key> <o> <greater> : "\364" ocircumflex
+<Multi_key> <greater> <o> : "\364" ocircumflex
+<Multi_key> <o> <asciitilde> : "\365" otilde
+<Multi_key> <asciitilde> <o> : "\365" otilde
+<Multi_key> <o> <minus> : "\365" otilde
+<Multi_key> <minus> <o> : "\365" otilde
+<Multi_key> <o> <quotedbl> : "\366" odiaeresis
+<Multi_key> <quotedbl> <o> : "\366" odiaeresis
+<Multi_key> <o> <diaeresis> : "\366" odiaeresis
+<Multi_key> <diaeresis> <o> : "\366" odiaeresis
+<Multi_key> <o> <slash> : "\370" oslash
+<Multi_key> <slash> <o> : "\370" oslash
+<Multi_key> <U> <grave> : "\331" Ugrave
+<Multi_key> <grave> <U> : "\331" Ugrave
+<Multi_key> <U> <acute> : "\332" Uacute
+<Multi_key> <acute> <U> : "\332" Uacute
+<Multi_key> <U> <apostrophe> : "\332" Uacute
+<Multi_key> <apostrophe> <U> : "\332" Uacute
+<Multi_key> <U> <asciicircum> : "\333" Ucircumflex
+<Multi_key> <asciicircum> <U> : "\333" Ucircumflex
+<Multi_key> <U> <greater> : "\333" Ucircumflex
+<Multi_key> <greater> <U> : "\333" Ucircumflex
+<Multi_key> <U> <quotedbl> : "\334" Udiaeresis
+<Multi_key> <quotedbl> <U> : "\334" Udiaeresis
+<Multi_key> <U> <diaeresis> : "\334" Udiaeresis
+<Multi_key> <diaeresis> <U> : "\334" Udiaeresis
+<Multi_key> <u> <grave> : "\371" ugrave
+<Multi_key> <grave> <u> : "\371" ugrave
+<Multi_key> <u> <acute> : "\372" uacute
+<Multi_key> <acute> <u> : "\372" uacute
+<Multi_key> <u> <apostrophe> : "\372" uacute
+<Multi_key> <apostrophe> <u> : "\372" uacute
+<Multi_key> <u> <asciicircum> : "\373" ucircumflex
+<Multi_key> <asciicircum> <u> : "\373" ucircumflex
+<Multi_key> <u> <greater> : "\373" ucircumflex
+<Multi_key> <greater> <u> : "\373" ucircumflex
+<Multi_key> <u> <quotedbl> : "\374" udiaeresis
+<Multi_key> <quotedbl> <u> : "\374" udiaeresis
+<Multi_key> <u> <diaeresis> : "\374" udiaeresis
+<Multi_key> <diaeresis> <u> : "\374" udiaeresis
+<Multi_key> <s> <s> : "\337" ssharp
+<Multi_key> <Y> <acute> : "\335" Yacute
+<Multi_key> <acute> <Y> : "\335" Yacute
+<Multi_key> <Y> <apostrophe> : "\335" Yacute
+<Multi_key> <apostrophe> <Y> : "\335" Yacute
+<Multi_key> <y> <acute> : "\375" yacute
+<Multi_key> <acute> <y> : "\375" yacute
+<Multi_key> <y> <apostrophe> : "\375" yacute
+<Multi_key> <apostrophe> <y> : "\375" yacute
+<Multi_key> <y> <quotedbl> : "\377" ydiaeresis
+<Multi_key> <quotedbl> <y> : "\377" ydiaeresis
+<Multi_key> <y> <diaeresis> : "\377" ydiaeresis
+<Multi_key> <diaeresis> <y> : "\377" ydiaeresis
+
+XCOMM
+XCOMM dead key accent keysyms
+XCOMM Special Character
+<dead_circumflex> <slash> : "|" bar
+<dead_grave> <space> : "`" grave
+<dead_acute> <space> : "'" apostrophe
+<dead_circumflex> <space> : "^" asciicircum
+<dead_tilde> <space> : "~" asciitilde
+
+XCOMM Accented Alphabet
+<dead_grave> <A> : "\300" Agrave
+<dead_acute> <A> : "\301" Aacute
+<dead_circumflex> <A> : "\302" Acircumflex
+<dead_tilde> <A> : "\303" Atilde
+<dead_diaeresis> <A> : "\304" Adiaeresis
+<dead_grave> <a> : "\340" agrave
+<dead_acute> <a> : "\341" aacute
+<dead_circumflex> <a> : "\342" acircumflex
+<dead_tilde> <a> : "\343" atilde
+<dead_diaeresis> <a> : "\344" adiaeresis
+<dead_cedilla> <C> : "\307" Ccedilla
+<dead_cedilla> <c> : "\347" ccedilla
+<dead_grave> <E> : "\310" Egrave
+<dead_acute> <E> : "\311" Eacute
+<dead_circumflex> <E> : "\312" Ecircumflex
+<dead_diaeresis> <E> : "\313" Ediaeresis
+<dead_grave> <e> : "\350" egrave
+<dead_acute> <e> : "\351" eacute
+<dead_circumflex> <e> : "\352" ecircumflex
+<dead_diaeresis> <e> : "\353" ediaeresis
+<dead_grave> <I> : "\314" Igrave
+<dead_acute> <I> : "\315" Iacute
+<dead_circumflex> <I> : "\316" Icircumflex
+<dead_diaeresis> <I> : "\317" Idiaeresis
+<dead_grave> <i> : "\354" igrave
+<dead_acute> <i> : "\355" iacute
+<dead_circumflex> <i> : "\356" icircumflex
+<dead_diaeresis> <i> : "\357" idiaeresis
+<dead_tilde> <N> : "\321" Ntilde
+<dead_tilde> <n> : "\361" ntilde
+<dead_grave> <O> : "\322" Ograve
+<dead_acute> <O> : "\323" Oacute
+<dead_circumflex> <O> : "\324" Ocircumflex
+<dead_tilde> <O> : "\325" Otilde
+<dead_diaeresis> <O> : "\326" Odiaeresis
+<dead_grave> <o> : "\362" ograve
+<dead_acute> <o> : "\363" oacute
+<dead_circumflex> <o> : "\364" ocircumflex
+<dead_tilde> <o> : "\365" otilde
+<dead_diaeresis> <o> : "\366" odiaeresis
+<dead_grave> <U> : "\331" Ugrave
+<dead_acute> <U> : "\332" Uacute
+<dead_circumflex> <U> : "\333" Ucircumflex
+<dead_diaeresis> <U> : "\334" Udiaeresis
+<dead_grave> <u> : "\371" ugrave
+<dead_acute> <u> : "\372" uacute
+<dead_circumflex> <u> : "\373" ucircumflex
+<dead_diaeresis> <u> : "\374" udiaeresis
+<dead_acute> <Y> : "\335" Yacute
+<dead_acute> <y> : "\375" yacute
+<dead_diaeresis> <y> : "\377" ydiaeresis
+
+
+XCOMM The following is Celtic character support,
+XCOMM i.e. the characters in 8859-14 which differ from 8859-1.
+
+<Multi_key> <period> <b> : "\242" babovedot
+<Multi_key> <period> <B> : "\241" Babovedot
+<Multi_key> <period> <c> : "\245" cabovedot
+<Multi_key> <period> <C> : "\245" Cabovedot
+<Multi_key> <period> <d> : "\253" dabovedot
+<Multi_key> <period> <D> : "\246" Dabovedot
+<Multi_key> <period> <f> : "\261" fabovedot
+<Multi_key> <period> <F> : "\260" Fabovedot
+<Multi_key> <period> <g> : "\263" gabovedot
+<Multi_key> <period> <G> : "\262" Gabovedot
+<Multi_key> <period> <m> : "\265" mabovedot
+<Multi_key> <period> <M> : "\264" Mabovedot
+<Multi_key> <period> <p> : "\271" pabovedot
+<Multi_key> <period> <P> : "\267" Pabovedot
+<Multi_key> <period> <s> : "\277" sabovedot
+<Multi_key> <period> <S> : "\273" Sabovedot
+<Multi_key> <period> <t> : "\367" tabovedot
+<Multi_key> <period> <T> : "\327" Tabovedot
+
+<Multi_key> <b> <period> : "\242" babovedot
+<Multi_key> <B> <period> : "\241" Babovedot
+<Multi_key> <c> <period> : "\245" cabovedot
+<Multi_key> <C> <period> : "\245" Cabovedot
+<Multi_key> <d> <period> : "\253" dabovedot
+<Multi_key> <D> <period> : "\246" Dabovedot
+<Multi_key> <f> <period> : "\261" fabovedot
+<Multi_key> <F> <period> : "\260" Fabovedot
+<Multi_key> <g> <period> : "\263" gabovedot
+<Multi_key> <G> <period> : "\262" Gabovedot
+<Multi_key> <m> <period> : "\265" mabovedot
+<Multi_key> <M> <period> : "\264" Mabovedot
+<Multi_key> <p> <period> : "\271" pabovedot
+<Multi_key> <P> <period> : "\267" Pabovedot
+<Multi_key> <s> <period> : "\277" sabovedot
+<Multi_key> <S> <period> : "\273" Sabovedot
+<Multi_key> <t> <period> : "\367" tabovedot
+<Multi_key> <T> <period> : "\327" Tabovedot
+
+<Multi_key> <y> <asciicircum> : "\376" ycircumflex
+<Multi_key> <asciicircum> <y> : "\376" ycircumflex
+<Multi_key> <Y> <asciicircum> : "\336" Ycircumflex
+<Multi_key> <asciicircum> <Y> : "\336" Ycircumflex
+
+<Multi_key> <w> <asciicircum> : "\360" wcircumflex
+<Multi_key> <asciicircum> <w> : "\360" wcircumflex
+<Multi_key> <W> <asciicircum> : "\320" Wcircumflex
+<Multi_key> <asciicircum> <W> : "\320" Wcircumflex
+
+<Multi_key> <Y> <quotedbl> : "\257" Ydiaeresis
+<Multi_key> <quotedbl> <Y> : "\257" Ydiaeresis
+<Multi_key> <Y> <diaeresis> : "\257" Ydiaeresis
+<Multi_key> <diaeresis> <Y> : "\257" Ydiaeresis
+
+<Multi_key> <W> <quotedbl> : "\275" Wdiaeresis
+<Multi_key> <quotedbl> <W> : "\275" Wdiaeresis
+<Multi_key> <W> <diaeresis> : "\275" Wdiaeresis
+<Multi_key> <diaeresis> <W> : "\275" Wdiaeresis
+<Multi_key> <w> <quotedbl> : "\276" wdiaeresis
+<Multi_key> <quotedbl> <w> : "\276" wdiaeresis
+<Multi_key> <w> <diaeresis> : "\276" wdiaeresis
+<Multi_key> <diaeresis> <w> : "\276" wdiaeresis
+
+<Multi_key> <Y> <grave> : "\254" Ygrave
+<Multi_key> <grave> <Y> : "\254" Ygrave
+<Multi_key> <y> <grave> : "\274" ygrave
+<Multi_key> <grave> <y> : "\274" ygrave
+
+<Multi_key> <W> <grave> : "\250" Wgrave
+<Multi_key> <grave> <W> : "\250" Wgrave
+<Multi_key> <w> <grave> : "\270" wgrave
+<Multi_key> <grave> <w> : "\270" wgrave
+
+<Multi_key> <W> <apostrophe> : "\252" Wacute
+<Multi_key> <apostrophe> <W> : "\252" Wacute
+<Multi_key> <W> <acute> : "\252" Wacute
+<Multi_key> <acute> <W> : "\252" Wacute
+<Multi_key> <w> <apostrophe> : "\272" wacute
+<Multi_key> <apostrophe> <w> : "\272" wacute
+<Multi_key> <w> <acute> : "\272" wacute
+<Multi_key> <acute> <w> : "\272" wacute
+
+<dead_abovedot> <b> : "\242" babovedot
+<dead_abovedot> <B> : "\241" Babovedot
+<dead_abovedot> <c> : "\245" cabovedot
+<dead_abovedot> <C> : "\245" Cabovedot
+<dead_abovedot> <d> : "\253" dabovedot
+<dead_abovedot> <D> : "\246" Dabovedot
+<dead_abovedot> <f> : "\261" fabovedot
+<dead_abovedot> <F> : "\260" Fabovedot
+<dead_abovedot> <g> : "\263" gabovedot
+<dead_abovedot> <G> : "\262" Gabovedot
+<dead_abovedot> <m> : "\265" mabovedot
+<dead_abovedot> <M> : "\264" Mabovedot
+<dead_abovedot> <p> : "\271" pabovedot
+<dead_abovedot> <P> : "\267" Pabovedot
+<dead_abovedot> <s> : "\277" sabovedot
+<dead_abovedot> <S> : "\273" Sabovedot
+<dead_abovedot> <t> : "\367" tabovedot
+<dead_abovedot> <T> : "\327" Tabovedot
+
+<dead_circumflex> <b> : "\242" babovedot
+<dead_circumflex> <B> : "\241" Babovedot
+<dead_circumflex> <c> : "\245" cabovedot
+<dead_circumflex> <C> : "\245" Cabovedot
+<dead_circumflex> <d> : "\253" dabovedot
+<dead_circumflex> <D> : "\246" Dabovedot
+<dead_circumflex> <f> : "\261" fabovedot
+<dead_circumflex> <F> : "\260" Fabovedot
+<dead_circumflex> <g> : "\263" gabovedot
+<dead_circumflex> <G> : "\262" Gabovedot
+<dead_circumflex> <m> : "\265" mabovedot
+<dead_circumflex> <M> : "\264" Mabovedot
+<dead_circumflex> <p> : "\271" pabovedot
+<dead_circumflex> <P> : "\267" Pabovedot
+<dead_circumflex> <s> : "\277" sabovedot
+<dead_circumflex> <S> : "\273" Sabovedot
+<dead_circumflex> <t> : "\367" tabovedot
+<dead_circumflex> <T> : "\327" Tabovedot
+
+<dead_acute> <b> : "\242" babovedot
+<dead_acute> <B> : "\241" Babovedot
+<dead_acute> <c> : "\245" cabovedot
+<dead_acute> <C> : "\245" Cabovedot
+<dead_acute> <d> : "\253" dabovedot
+<dead_acute> <D> : "\246" Dabovedot
+<dead_acute> <f> : "\261" fabovedot
+<dead_acute> <F> : "\260" Fabovedot
+<dead_acute> <g> : "\263" gabovedot
+<dead_acute> <G> : "\262" Gabovedot
+<dead_acute> <m> : "\265" mabovedot
+<dead_acute> <M> : "\264" Mabovedot
+<dead_acute> <p> : "\271" pabovedot
+<dead_acute> <P> : "\267" Pabovedot
+<dead_acute> <s> : "\277" sabovedot
+<dead_acute> <S> : "\273" Sabovedot
+<dead_acute> <t> : "\367" tabovedot
+<dead_acute> <T> : "\327" Tabovedot
+
+<dead_diaeresis> <Y> : "\257" Ydiaeresis
+
+<dead_grave> <Y> : "\254" Ygrave
+<dead_grave> <y> : "\274" ygrave
+
+<dead_circumflex> <y> : "\376" ycircumflex
+<dead_circumflex> <Y> : "\336" Ycircumflex
+
+<dead_circumflex> <w> : "\360" wcircumflex
+<dead_circumflex> <W> : "\320" Wcircumflex
+
+<dead_diaeresis> <w> : "\276" wdiaeresis
+<dead_diaeresis> <W> : "\275" Wdiaeresis
+
+<dead_acute> <w> : "\272" wacute
+<dead_acute> <W> : "\252" Wacute
+
+<dead_grave> <W> : "\250" Wgrave
+<dead_grave> <w> : "\270" wgrave
+
+XCOMM End of Sequence Definition
diff --git a/libX11/nls/iso8859-14/XI18N_OBJS b/libX11/nls/iso8859-14/XI18N_OBJS
index ae0e6f505..ebd00a6bb 100644
--- a/libX11/nls/iso8859-14/XI18N_OBJS
+++ b/libX11/nls/iso8859-14/XI18N_OBJS
@@ -1,7 +1,7 @@
-# CATEGORY(XLC|XIM|OM) SHARED_LIBRARY_NAME FUNCTION_NAME
-#
-# XI18N objects table for iso8859-14 locale
-#
-XLC common/xlcDef _XlcDefaultLoader # XLC_open
-XIM common/ximcp _XimOpenIM _XimRegisterIMInstantiateCallback _XimUnRegisterIMInstantiateCallback # XIM_open XIM_register XIM_unregister
-XOM common/xomGeneric _XomGenericOpenOM # XOM_open
+# CATEGORY(XLC|XIM|OM) SHARED_LIBRARY_NAME FUNCTION_NAME
+#
+# XI18N objects table for iso8859-14 locale
+#
+XLC common/xlcDef _XlcDefaultLoader # XLC_open
+XIM common/ximcp _XimOpenIM _XimRegisterIMInstantiateCallback _XimUnRegisterIMInstantiateCallback # XIM_open XIM_register XIM_unregister
+XOM common/xomGeneric _XomGenericOpenOM # XOM_open
diff --git a/libX11/nls/iso8859-14/XLC_LOCALE.pre b/libX11/nls/iso8859-14/XLC_LOCALE.pre
index feeca6c62..287f757be 100644
--- a/libX11/nls/iso8859-14/XLC_LOCALE.pre
+++ b/libX11/nls/iso8859-14/XLC_LOCALE.pre
@@ -1,72 +1,72 @@
-XCOMM XLocale Database Sample for iso8859-14.
-XCOMM
-
-XCOMM
-XCOMM XLC_FONTSET category
-XCOMM
-XLC_FONTSET
-XCOMM fs0 class
-fs0 {
- charset {
- name ISO8859-1:GL
- }
- font {
- primary ISO8859-14:GL
- substitute ISO8859-1:GL
- vertical_rotate all
- }
-}
-XCOMM fs1 class
-fs1 {
- charset {
- name ISO8859-14:GR
- }
- font {
- primary ISO8859-14:GR
- }
-}
-END XLC_FONTSET
-
-XCOMM
-XCOMM XLC_XLOCALE category
-XCOMM
-XLC_XLOCALE
-
-encoding_name ISO8859-14
-mb_cur_max 1
-state_depend_encoding False
-#if WCHAR32
-wc_encoding_mask \x30000000
-wc_shift_bits 7
-#else
-wc_encoding_mask \x00008080
-wc_shift_bits 8
-#endif
-
-#ifndef X_LOCALE
-use_stdc_env True
-force_convert_to_mb True
-#endif
-
-XCOMM cs0 class
-cs0 {
- side GL:Default
- length 1
- wc_encoding \x00000000
- ct_encoding ISO8859-14:GL; ISO8859-1:GL
-}
-
-
-XCOMM cs1 class
-cs1 {
- side GR:Default
- length 1
-#if WCHAR32
- wc_encoding \x30000000
-#else
- wc_encoding \x00008080
-#endif
- ct_encoding ISO8859-14:GR
-}
-
-END XLC_XLOCALE
+XCOMM XLocale Database Sample for iso8859-14.
+XCOMM
+
+XCOMM
+XCOMM XLC_FONTSET category
+XCOMM
+XLC_FONTSET
+XCOMM fs0 class
+fs0 {
+ charset {
+ name ISO8859-1:GL
+ }
+ font {
+ primary ISO8859-14:GL
+ substitute ISO8859-1:GL
+ vertical_rotate all
+ }
+}
+XCOMM fs1 class
+fs1 {
+ charset {
+ name ISO8859-14:GR
+ }
+ font {
+ primary ISO8859-14:GR
+ }
+}
+END XLC_FONTSET
+
+XCOMM
+XCOMM XLC_XLOCALE category
+XCOMM
+XLC_XLOCALE
+
+encoding_name ISO8859-14
+mb_cur_max 1
+state_depend_encoding False
+#if WCHAR32
+wc_encoding_mask \x30000000
+wc_shift_bits 7
+#else
+wc_encoding_mask \x00008080
+wc_shift_bits 8
+#endif
+
+#ifndef X_LOCALE
+use_stdc_env True
+force_convert_to_mb True
+#endif
+
+XCOMM cs0 class
+cs0 {
+ side GL:Default
+ length 1
+ wc_encoding \x00000000
+ ct_encoding ISO8859-14:GL; ISO8859-1:GL
+}
+
+
+XCOMM cs1 class
+cs1 {
+ side GR:Default
+ length 1
+#if WCHAR32
+ wc_encoding \x30000000
+#else
+ wc_encoding \x00008080
+#endif
+ ct_encoding ISO8859-14:GR
+}
+
+END XLC_XLOCALE
diff --git a/libX11/nls/iso8859-15/Compose.pre b/libX11/nls/iso8859-15/Compose.pre
index db937f39b..ec75cfe28 100644
--- a/libX11/nls/iso8859-15/Compose.pre
+++ b/libX11/nls/iso8859-15/Compose.pre
@@ -1,476 +1,476 @@
-XCOMM
-XCOMM ISO 8859-15 (Latin1) Compose Sequence
-XCOMM
-XCOMM
-XCOMM Sequence Definition
-XCOMM
-XCOMM <Multi_key> Means <Compose>
-XCOMM Special Character
-<Multi_key> <plus> <plus> : "#" numbersign
-<Multi_key> <apostrophe> <space> : "'" apostrophe
-<Multi_key> <space> <apostrophe> : "'" apostrophe
-<Multi_key> <A> <T> : "@" at
-<Multi_key> <parenleft> <parenleft> : "[" bracketleft
-<Multi_key> <slash> <slash> : "\\" backslash
-<Multi_key> <slash> <less> : "\\" backslash
-<Multi_key> <less> <slash> : "\\" backslash
-<Multi_key> <parenright> <parenright> : "]" bracketright
-<Multi_key> <asciicircum> <space> : "^" asciicircum
-<Multi_key> <space> <asciicircum> : "^" asciicircum
-<Multi_key> <greater> <space> : "^" asciicircum
-<Multi_key> <space> <greater> : "^" asciicircum
-<Multi_key> <grave> <space> : "`" grave
-<Multi_key> <space> <grave> : "`" grave
-<Multi_key> <parenleft> <minus> : "{" braceleft
-<Multi_key> <minus> <parenleft> : "{" braceleft
-<Multi_key> <slash> <asciicircum> : "|" bar
-<Multi_key> <asciicircum> <slash> : "|" bar
-<Multi_key> <V> <L> : "|" bar
-<Multi_key> <L> <V> : "|" bar
-<Multi_key> <v> <l> : "|" bar
-<Multi_key> <l> <v> : "|" bar
-<Multi_key> <parenright> <minus> : "}" braceright
-<Multi_key> <minus> <parenright> : "}" braceright
-<Multi_key> <asciitilde> <space> : "~" asciitilde
-<Multi_key> <space> <asciitilde> : "~" asciitilde
-<Multi_key> <minus> <space> : "~" asciitilde
-<Multi_key> <space> <minus> : "~" asciitilde
-<Multi_key> <exclam> <exclam> : "\241" exclamdown
-<Multi_key> <c> <slash> : "\242" cent
-<Multi_key> <slash> <c> : "\242" cent
-<Multi_key> <C> <slash> : "\242" cent
-<Multi_key> <slash> <C> : "\242" cent
-<Multi_key> <C> <bar> : "\242" cent
-<Multi_key> <bar> <C> : "\242" cent
-<Multi_key> <c> <bar> : "\242" cent
-<Multi_key> <bar> <c> : "\242" cent
-<Multi_key> <l> <minus> : "\243" sterling
-<Multi_key> <minus> <l> : "\243" sterling
-<Multi_key> <L> <minus> : "\243" sterling
-<Multi_key> <minus> <L> : "\243" sterling
-<Multi_key> <l> <equal> : "\243" sterling
-<Multi_key> <equal> <l> : "\243" sterling
-<Multi_key> <L> <equal> : "\243" sterling
-<Multi_key> <equal> <L> : "\243" sterling
-<Multi_key> <C> <equal> : "\244" EuroSign
-<Multi_key> <equal> <C> : "\244" EuroSign
-<Multi_key> <c> <equal> : "\244" EuroSign
-<Multi_key> <equal> <c> : "\244" EuroSign
-<Multi_key> <E> <equal> : "\244" EuroSign
-<Multi_key> <equal> <E> : "\244" EuroSign
-<Multi_key> <e> <equal> : "\244" EuroSign
-<Multi_key> <equal> <e> : "\244" EuroSign
-<Multi_key> <y> <minus> : "\245" yen
-<Multi_key> <minus> <y> : "\245" yen
-<Multi_key> <Y> <minus> : "\245" yen
-<Multi_key> <minus> <Y> : "\245" yen
-<Multi_key> <y> <equal> : "\245" yen
-<Multi_key> <equal> <y> : "\245" yen
-<Multi_key> <Y> <equal> : "\245" yen
-<Multi_key> <equal> <Y> : "\245" yen
-<Multi_key> <s> <o> : "\247" section
-<Multi_key> <o> <s> : "\247" section
-<Multi_key> <S> <O> : "\247" section
-<Multi_key> <O> <S> : "\247" section
-<Multi_key> <S> <exclam> : "\247" section
-<Multi_key> <exclam> <S> : "\247" section
-<Multi_key> <s> <exclam> : "\247" section
-<Multi_key> <exclam> <s> : "\247" section
-<Multi_key> <S> <0> : "\247" section
-<Multi_key> <0> <S> : "\247" section
-<Multi_key> <s> <0> : "\247" section
-<Multi_key> <0> <s> : "\247" section
-<Multi_key> <c> <o> : "\251" copyright
-<Multi_key> <o> <c> : "\251" copyright
-<Multi_key> <C> <O> : "\251" copyright
-<Multi_key> <O> <C> : "\251" copyright
-<Multi_key> <c> <O> : "\251" copyright
-<Multi_key> <O> <c> : "\251" copyright
-<Multi_key> <C> <o> : "\251" copyright
-<Multi_key> <o> <C> : "\251" copyright
-<Multi_key> <c> <0> : "\251" copyright
-<Multi_key> <0> <c> : "\251" copyright
-<Multi_key> <C> <0> : "\251" copyright
-<Multi_key> <0> <C> : "\251" copyright
-<Multi_key> <parenleft> <c> : "\251" copyright
-<Multi_key> <parenleft> <C> : "\251" copyright
-<Multi_key> <a> <underscore> : "\252" ordfeminine
-<Multi_key> <underscore> <a> : "\252" ordfeminine
-<Multi_key> <A> <underscore> : "\252" ordfeminine
-<Multi_key> <underscore> <A> : "\252" ordfeminine
-<Multi_key> <o> <underscore> : "\272" masculine
-<Multi_key> <underscore> <o> : "\272" masculine
-<Multi_key> <O> <underscore> : "\272" masculine
-<Multi_key> <underscore> <O> : "\272" masculine
-<Multi_key> <less> <less> : "\253" guillemotleft
-<Multi_key> <greater> <greater> : "\273" guillemotright
-<Multi_key> <0> <asciicircum> : "\260" degree
-<Multi_key> <asciicircum> <0> : "\260" degree
-<Multi_key> <0> <asterisk> : "\260" degree
-<Multi_key> <asterisk> <0> : "\260" degree
-<Multi_key> <plus> <minus> : "\261" plusminus
-<Multi_key> <minus> <plus> : "\261" plusminus
-<Multi_key> <slash> <u> : "\265" mu
-<Multi_key> <u> <slash> : "\265" mu
-<Multi_key> <slash> <U> : "\265" mu
-<Multi_key> <U> <slash> : "\265" mu
-<Multi_key> <1> <asciicircum> : "\271" onesuperior
-<Multi_key> <asciicircum> <1> : "\271" onesuperior
-<Multi_key> <S> <1> : "\271" onesuperior
-<Multi_key> <1> <S> : "\271" onesuperior
-<Multi_key> <s> <1> : "\271" onesuperior
-<Multi_key> <1> <s> : "\271" onesuperior
-<Multi_key> <2> <asciicircum> : "\262" twosuperior
-<Multi_key> <asciicircum> <2> : "\262" twosuperior
-<Multi_key> <S> <2> : "\262" twosuperior
-<Multi_key> <2> <S> : "\262" twosuperior
-<Multi_key> <s> <2> : "\262" twosuperior
-<Multi_key> <2> <s> : "\262" twosuperior
-<Multi_key> <3> <asciicircum> : "\263" threesuperior
-<Multi_key> <asciicircum> <3> : "\263" threesuperior
-<Multi_key> <S> <3> : "\263" threesuperior
-<Multi_key> <3> <S> : "\263" threesuperior
-<Multi_key> <s> <3> : "\263" threesuperior
-<Multi_key> <3> <s> : "\263" threesuperior
-<Multi_key> <p> <exclam> : "\266" paragraph
-<Multi_key> <exclam> <p> : "\266" paragraph
-<Multi_key> <P> <exclam> : "\266" paragraph
-<Multi_key> <exclam> <P> : "\266" paragraph
-<Multi_key> <period> <asciicircum> : "\267" periodcentered
-<Multi_key> <asciicircum> <period> : "\267" periodcentered
-<Multi_key> <period> <period> : "\267" periodcentered
-<Multi_key> <question> <question> : "\277" questiondown
-<Multi_key> <space> <space> : "\240" nobreakspace
-<Multi_key> <minus> <comma> : "\254" notsign
-<Multi_key> <comma> <minus> : "\254" notsign
-<Multi_key> <minus> <minus> : "\255" hyphen
-<Multi_key> <R> <O> : "\256" registered
-<Multi_key> <O> <R> : "\256" registered
-<Multi_key> <parenleft> <r> : "\256" registered
-<Multi_key> <minus> <asciicircum> : "\257" macron
-<Multi_key> <asciicircum> <minus> : "\257" macron
-<Multi_key> <underscore> <asciicircum> : "\257" macron
-<Multi_key> <asciicircum> <underscore> : "\257" macron
-<Multi_key> <underscore> <underscore> : "\257" macron
-<Multi_key> <minus> <colon> : "\367" division
-<Multi_key> <colon> <minus> : "\367" division
-<Multi_key> <x> <x> : "\327" multiply
-<Multi_key> <apostrophe> <apostrophe> : "\264" acute
-<Multi_key> <comma> <comma> : "\270" cedilla
-<Multi_key> <quotedbl> <quotedbl> : "\"" quotedbl
-XCOMM Accented Alphabet
-<Multi_key> <A> <grave> : "\300" Agrave
-<Multi_key> <grave> <A> : "\300" Agrave
-<Multi_key> <A> <acute> : "\301" Aacute
-<Multi_key> <acute> <A> : "\301" Aacute
-<Multi_key> <A> <apostrophe> : "\301" Aacute
-<Multi_key> <apostrophe> <A> : "\301" Aacute
-<Multi_key> <A> <asciicircum> : "\302" Acircumflex
-<Multi_key> <asciicircum> <A> : "\302" Acircumflex
-<Multi_key> <A> <greater> : "\302" Acircumflex
-<Multi_key> <greater> <A> : "\302" Acircumflex
-<Multi_key> <A> <asciitilde> : "\303" Atilde
-<Multi_key> <asciitilde> <A> : "\303" Atilde
-<Multi_key> <A> <minus> : "\303" Atilde
-<Multi_key> <minus> <A> : "\303" Atilde
-<Multi_key> <A> <quotedbl> : "\304" Adiaeresis
-<Multi_key> <quotedbl> <A> : "\304" Adiaeresis
-<Multi_key> <A> <diaeresis> : "\304" Adiaeresis
-<Multi_key> <diaeresis> <A> : "\304" Adiaeresis
-<Multi_key> <A> <asterisk> : "\305" Aring
-<Multi_key> <asterisk> <A> : "\305" Aring
-<Multi_key> <A> <A> : "\305" Aring
-<Multi_key> <A> <O> : "\305" Aring
-<Multi_key> <A> <E> : "\306" AE
-<Multi_key> <a> <grave> : "\340" agrave
-<Multi_key> <grave> <a> : "\340" agrave
-<Multi_key> <a> <acute> : "\341" aacute
-<Multi_key> <acute> <a> : "\341" aacute
-<Multi_key> <a> <apostrophe> : "\341" aacute
-<Multi_key> <apostrophe> <a> : "\341" aacute
-<Multi_key> <a> <asciicircum> : "\342" acircumflex
-<Multi_key> <asciicircum> <a> : "\342" acircumflex
-<Multi_key> <a> <greater> : "\342" acircumflex
-<Multi_key> <greater> <a> : "\342" acircumflex
-<Multi_key> <a> <asciitilde> : "\343" atilde
-<Multi_key> <asciitilde> <a> : "\343" atilde
-<Multi_key> <a> <minus> : "\343" atilde
-<Multi_key> <minus> <a> : "\343" atilde
-<Multi_key> <a> <quotedbl> : "\344" adiaeresis
-<Multi_key> <quotedbl> <a> : "\344" adiaeresis
-<Multi_key> <a> <diaeresis> : "\344" adiaeresis
-<Multi_key> <diaeresis> <a> : "\344" adiaeresis
-<Multi_key> <a> <asterisk> : "\345" aring
-<Multi_key> <asterisk> <a> : "\345" aring
-<Multi_key> <a> <a> : "\345" aring
-<Multi_key> <a> <o> : "\345" aring
-<Multi_key> <a> <e> : "\346" ae
-<Multi_key> <acute> <C> : "\307" Ccedilla
-<Multi_key> <acute> <c> : "\347" ccedilla
-<Multi_key> <C> <comma> : "\307" Ccedilla
-<Multi_key> <C> <cedilla> : "\307" Ccedilla
-<Multi_key> <comma> <C> : "\307" Ccedilla
-<Multi_key> <cedilla> <C> : "\307" Ccedilla
-<Multi_key> <c> <comma> : "\347" ccedilla
-<Multi_key> <c> <cedilla> : "\347" ccedilla
-<Multi_key> <comma> <c> : "\347" ccedilla
-<Multi_key> <cedilla> <c> : "\347" ccedilla
-<Multi_key> <minus> <D> : "\320" ETH
-<Multi_key> <D> <minus> : "\320" ETH
-<Multi_key> <minus> <d> : "\360" eth
-<Multi_key> <d> <minus> : "\360" eth
-<Multi_key> <E> <grave> : "\310" Egrave
-<Multi_key> <grave> <E> : "\310" Egrave
-<Multi_key> <E> <acute> : "\311" Eacute
-<Multi_key> <acute> <E> : "\311" Eacute
-<Multi_key> <E> <apostrophe> : "\311" Eacute
-<Multi_key> <apostrophe> <E> : "\311" Eacute
-<Multi_key> <E> <asciicircum> : "\312" Ecircumflex
-<Multi_key> <asciicircum> <E> : "\312" Ecircumflex
-<Multi_key> <E> <greater> : "\312" Ecircumflex
-<Multi_key> <greater> <E> : "\312" Ecircumflex
-<Multi_key> <E> <quotedbl> : "\313" Ediaeresis
-<Multi_key> <quotedbl> <E> : "\313" Ediaeresis
-<Multi_key> <E> <diaeresis> : "\313" Ediaeresis
-<Multi_key> <diaeresis> <E> : "\313" Ediaeresis
-<Multi_key> <e> <grave> : "\350" egrave
-<Multi_key> <grave> <e> : "\350" egrave
-<Multi_key> <e> <acute> : "\351" eacute
-<Multi_key> <acute> <e> : "\351" eacute
-<Multi_key> <e> <apostrophe> : "\351" eacute
-<Multi_key> <apostrophe> <e> : "\351" eacute
-<Multi_key> <e> <asciicircum> : "\352" ecircumflex
-<Multi_key> <asciicircum> <e> : "\352" ecircumflex
-<Multi_key> <e> <greater> : "\352" ecircumflex
-<Multi_key> <greater> <e> : "\352" ecircumflex
-<Multi_key> <e> <quotedbl> : "\353" ediaeresis
-<Multi_key> <quotedbl> <e> : "\353" ediaeresis
-<Multi_key> <e> <diaeresis> : "\353" ediaeresis
-<Multi_key> <diaeresis> <e> : "\353" ediaeresis
-<Multi_key> <I> <grave> : "\314" Igrave
-<Multi_key> <grave> <I> : "\314" Igrave
-<Multi_key> <I> <acute> : "\315" Iacute
-<Multi_key> <acute> <I> : "\315" Iacute
-<Multi_key> <I> <apostrophe> : "\315" Iacute
-<Multi_key> <apostrophe> <I> : "\315" Iacute
-<Multi_key> <I> <asciicircum> : "\316" Icircumflex
-<Multi_key> <asciicircum> <I> : "\316" Icircumflex
-<Multi_key> <I> <greater> : "\316" Icircumflex
-<Multi_key> <greater> <I> : "\316" Icircumflex
-<Multi_key> <I> <quotedbl> : "\317" Idiaeresis
-<Multi_key> <quotedbl> <I> : "\317" Idiaeresis
-<Multi_key> <I> <diaeresis> : "\317" Idiaeresis
-<Multi_key> <diaeresis> <I> : "\317" Idiaeresis
-<Multi_key> <i> <grave> : "\354" igrave
-<Multi_key> <grave> <i> : "\354" igrave
-<Multi_key> <i> <acute> : "\355" iacute
-<Multi_key> <acute> <i> : "\355" iacute
-<Multi_key> <i> <apostrophe> : "\355" iacute
-<Multi_key> <apostrophe> <i> : "\355" iacute
-<Multi_key> <i> <asciicircum> : "\356" icircumflex
-<Multi_key> <asciicircum> <i> : "\356" icircumflex
-<Multi_key> <i> <greater> : "\356" icircumflex
-<Multi_key> <greater> <i> : "\356" icircumflex
-<Multi_key> <i> <quotedbl> : "\357" idiaeresis
-<Multi_key> <quotedbl> <i> : "\357" idiaeresis
-<Multi_key> <i> <diaeresis> : "\357" idiaeresis
-<Multi_key> <diaeresis> <i> : "\357" idiaeresis
-<Multi_key> <N> <asciitilde> : "\321" Ntilde
-<Multi_key> <asciitilde> <N> : "\321" Ntilde
-<Multi_key> <N> <minus> : "\321" Ntilde
-<Multi_key> <minus> <N> : "\321" Ntilde
-<Multi_key> <n> <asciitilde> : "\361" ntilde
-<Multi_key> <asciitilde> <n> : "\361" ntilde
-<Multi_key> <n> <minus> : "\361" ntilde
-<Multi_key> <minus> <n> : "\361" ntilde
-<Multi_key> <O> <grave> : "\322" Ograve
-<Multi_key> <grave> <O> : "\322" Ograve
-<Multi_key> <O> <acute> : "\323" Oacute
-<Multi_key> <acute> <O> : "\323" Oacute
-<Multi_key> <O> <apostrophe> : "\323" Oacute
-<Multi_key> <apostrophe> <O> : "\323" Oacute
-<Multi_key> <O> <asciicircum> : "\324" Ocircumflex
-<Multi_key> <asciicircum> <O> : "\324" Ocircumflex
-<Multi_key> <O> <greater> : "\324" Ocircumflex
-<Multi_key> <greater> <O> : "\324" Ocircumflex
-<Multi_key> <O> <asciitilde> : "\325" Otilde
-<Multi_key> <asciitilde> <O> : "\325" Otilde
-<Multi_key> <O> <minus> : "\325" Otilde
-<Multi_key> <minus> <O> : "\325" Otilde
-<Multi_key> <O> <quotedbl> : "\326" Odiaeresis
-<Multi_key> <quotedbl> <O> : "\326" Odiaeresis
-<Multi_key> <O> <diaeresis> : "\326" Odiaeresis
-<Multi_key> <diaeresis> <O> : "\326" Odiaeresis
-<Multi_key> <O> <slash> : "\330" Ooblique
-<Multi_key> <slash> <O> : "\330" Ooblique
-<Multi_key> <O> <E> : "\274" OE
-<Multi_key> <o> <grave> : "\362" ograve
-<Multi_key> <grave> <o> : "\362" ograve
-<Multi_key> <o> <acute> : "\363" oacute
-<Multi_key> <acute> <o> : "\363" oacute
-<Multi_key> <o> <apostrophe> : "\363" oacute
-<Multi_key> <apostrophe> <o> : "\363" oacute
-<Multi_key> <o> <asciicircum> : "\364" ocircumflex
-<Multi_key> <asciicircum> <o> : "\364" ocircumflex
-<Multi_key> <o> <greater> : "\364" ocircumflex
-<Multi_key> <greater> <o> : "\364" ocircumflex
-<Multi_key> <o> <asciitilde> : "\365" otilde
-<Multi_key> <asciitilde> <o> : "\365" otilde
-<Multi_key> <o> <minus> : "\365" otilde
-<Multi_key> <minus> <o> : "\365" otilde
-<Multi_key> <o> <quotedbl> : "\366" odiaeresis
-<Multi_key> <quotedbl> <o> : "\366" odiaeresis
-<Multi_key> <o> <diaeresis> : "\366" odiaeresis
-<Multi_key> <diaeresis> <o> : "\366" odiaeresis
-<Multi_key> <o> <slash> : "\370" oslash
-<Multi_key> <slash> <o> : "\370" oslash
-<Multi_key> <o> <e> : "\275" oe
-<Multi_key> <S> <less> : "\246" Scaron
-<Multi_key> <less> <S> : "\246" Scaron
-<Multi_key> <s> <less> : "\250" scaron
-<Multi_key> <less> <s> : "\250" scaron
-<Multi_key> <U> <grave> : "\331" Ugrave
-<Multi_key> <grave> <U> : "\331" Ugrave
-<Multi_key> <U> <acute> : "\332" Uacute
-<Multi_key> <acute> <U> : "\332" Uacute
-<Multi_key> <U> <apostrophe> : "\332" Uacute
-<Multi_key> <apostrophe> <U> : "\332" Uacute
-<Multi_key> <U> <asciicircum> : "\333" Ucircumflex
-<Multi_key> <asciicircum> <U> : "\333" Ucircumflex
-<Multi_key> <U> <greater> : "\333" Ucircumflex
-<Multi_key> <greater> <U> : "\333" Ucircumflex
-<Multi_key> <U> <quotedbl> : "\334" Udiaeresis
-<Multi_key> <quotedbl> <U> : "\334" Udiaeresis
-<Multi_key> <U> <diaeresis> : "\334" Udiaeresis
-<Multi_key> <diaeresis> <U> : "\334" Udiaeresis
-<Multi_key> <u> <grave> : "\371" ugrave
-<Multi_key> <grave> <u> : "\371" ugrave
-<Multi_key> <u> <acute> : "\372" uacute
-<Multi_key> <acute> <u> : "\372" uacute
-<Multi_key> <u> <apostrophe> : "\372" uacute
-<Multi_key> <apostrophe> <u> : "\372" uacute
-<Multi_key> <u> <asciicircum> : "\373" ucircumflex
-<Multi_key> <asciicircum> <u> : "\373" ucircumflex
-<Multi_key> <u> <greater> : "\373" ucircumflex
-<Multi_key> <greater> <u> : "\373" ucircumflex
-<Multi_key> <u> <quotedbl> : "\374" udiaeresis
-<Multi_key> <quotedbl> <u> : "\374" udiaeresis
-<Multi_key> <u> <diaeresis> : "\374" udiaeresis
-<Multi_key> <diaeresis> <u> : "\374" udiaeresis
-<Multi_key> <s> <s> : "\337" ssharp
-<Multi_key> <T> <H> : "\336" THORN
-<Multi_key> <t> <h> : "\376" thorn
-<Multi_key> <Y> <acute> : "\335" Yacute
-<Multi_key> <acute> <Y> : "\335" Yacute
-<Multi_key> <Y> <apostrophe> : "\335" Yacute
-<Multi_key> <apostrophe> <Y> : "\335" Yacute
-<Multi_key> <Y> <quotedbl> : "\276" Ydiaeresis
-<Multi_key> <quotedbl> <Y> : "\276" Ydiaeresis
-<Multi_key> <Y> <diaeresis> : "\276" Ydiaeresis
-<Multi_key> <diaeresis> <Y> : "\276" Ydiaeresis
-<Multi_key> <y> <acute> : "\375" yacute
-<Multi_key> <acute> <y> : "\375" yacute
-<Multi_key> <y> <apostrophe> : "\375" yacute
-<Multi_key> <apostrophe> <y> : "\375" yacute
-<Multi_key> <y> <quotedbl> : "\377" ydiaeresis
-<Multi_key> <quotedbl> <y> : "\377" ydiaeresis
-<Multi_key> <y> <diaeresis> : "\377" ydiaeresis
-<Multi_key> <diaeresis> <y> : "\377" ydiaeresis
-<Multi_key> <Z> <less> : "\264" Zcaron
-<Multi_key> <less> <Z> : "\264" Zcaron
-<Multi_key> <z> <less> : "\270" zcaron
-<Multi_key> <less> <z> : "\270" zcaron
-XCOMM
-XCOMM dead key accent keysyms
-XCOMM Special Character
-<dead_circumflex> <slash> : "|" bar
-<dead_circumflex> <space> : "^" asciicircum
-<dead_circumflex> <dead_circumflex> : "^" asciicircum
-<dead_tilde> <space> : "~" asciitilde
-<dead_tilde> <dead_tilde> : "~" asciitilde
-<dead_grave> <space> : "`" grave
-<dead_grave> <dead_grave> : "`" grave
-XCOMM These are for us_intl, that does not have diaeresis, etc
-<dead_acute> <space> : "'" apostrophe
-<dead_acute> <dead_acute> : "\264" acute
-<dead_diaeresis> <space> : "\"" quotedbl
-<dead_diaeresis> <dead_diaeresis> : "\"" quotedbl
-<dead_doubleacute> <space> : "\"" quotedbl
-<dead_circumflex> <0> : "\260" degree
-<dead_circumflex> <1> : "\271" onesuperior
-<dead_circumflex> <2> : "\262" twosuperior
-<dead_circumflex> <3> : "\263" threesuperior
-<dead_circumflex> <period> : "\267" periodcentered
-<dead_cedilla> <minus> : "\254" notsign
-<dead_circumflex> <minus> : "\257" macron
-<dead_circumflex> <underscore> : "\257" macron
-<dead_acute> <apostrophe> : "\264" acute
-<dead_cedilla> <comma> : "\270" cedilla
-<dead_diaeresis> <quotedbl> : "\"" quotedbl
-XCOMM Accented Alphabet
-<dead_abovering> <A> : "\305" Aring
-<dead_grave> <A> : "\300" Agrave
-<dead_acute> <A> : "\301" Aacute
-<dead_circumflex> <A> : "\302" Acircumflex
-<dead_tilde> <A> : "\303" Atilde
-<dead_diaeresis> <A> : "\304" Adiaeresis
-<dead_abovering> <a> : "\345" aring
-<dead_grave> <a> : "\340" agrave
-<dead_acute> <a> : "\341" aacute
-<dead_circumflex> <a> : "\342" acircumflex
-<dead_tilde> <a> : "\343" atilde
-<dead_diaeresis> <a> : "\344" adiaeresis
-<dead_cedilla> <C> : "\307" Ccedilla
-<dead_cedilla> <c> : "\347" ccedilla
-<dead_grave> <E> : "\310" Egrave
-<dead_acute> <E> : "\311" Eacute
-<dead_circumflex> <E> : "\312" Ecircumflex
-<dead_diaeresis> <E> : "\313" Ediaeresis
-<dead_grave> <e> : "\350" egrave
-<dead_acute> <e> : "\351" eacute
-<dead_circumflex> <e> : "\352" ecircumflex
-<dead_diaeresis> <e> : "\353" ediaeresis
-<dead_grave> <I> : "\314" Igrave
-<dead_acute> <I> : "\315" Iacute
-<dead_circumflex> <I> : "\316" Icircumflex
-<dead_diaeresis> <I> : "\317" Idiaeresis
-<dead_grave> <i> : "\354" igrave
-<dead_acute> <i> : "\355" iacute
-<dead_circumflex> <i> : "\356" icircumflex
-<dead_diaeresis> <i> : "\357" idiaeresis
-<dead_tilde> <N> : "\321" Ntilde
-<dead_tilde> <n> : "\361" ntilde
-<dead_grave> <O> : "\322" Ograve
-<dead_acute> <O> : "\323" Oacute
-<dead_circumflex> <O> : "\324" Ocircumflex
-<dead_tilde> <O> : "\325" Otilde
-<dead_diaeresis> <O> : "\326" Odiaeresis
-<dead_grave> <o> : "\362" ograve
-<dead_acute> <o> : "\363" oacute
-<dead_circumflex> <o> : "\364" ocircumflex
-<dead_tilde> <o> : "\365" otilde
-<dead_diaeresis> <o> : "\366" odiaeresis
-<dead_caron> <S> : "\246" Scaron
-<dead_caron> <s> : "\250" scaron
-<dead_circumflex> <S> : "\246" Scaron
-<dead_circumflex> <s> : "\250" scaron
-<dead_grave> <U> : "\331" Ugrave
-<dead_acute> <U> : "\332" Uacute
-<dead_circumflex> <U> : "\333" Ucircumflex
-<dead_diaeresis> <U> : "\334" Udiaeresis
-<dead_grave> <u> : "\371" ugrave
-<dead_acute> <u> : "\372" uacute
-<dead_circumflex> <u> : "\373" ucircumflex
-<dead_diaeresis> <u> : "\374" udiaeresis
-<dead_acute> <Y> : "\335" Yacute
-<dead_diaeresis> <Y> : "\276" Ydiaeresis
-<dead_acute> <y> : "\375" yacute
-<dead_diaeresis> <y> : "\377" ydiaeresis
-<dead_caron> <Z> : "\264" Zcaron
-<dead_caron> <z> : "\270" zcaron
-<dead_circumflex> <Z> : "\264" Zcaron
-<dead_circumflex> <z> : "\270" zcaron
-XCOMM Useful for portuguese language
-<dead_acute> <C> : "\307" Ccedilla
-<dead_acute> <c> : "\347" ccedilla
-XCOMM End of Sequence Definition
+XCOMM
+XCOMM ISO 8859-15 (Latin1) Compose Sequence
+XCOMM
+XCOMM
+XCOMM Sequence Definition
+XCOMM
+XCOMM <Multi_key> Means <Compose>
+XCOMM Special Character
+<Multi_key> <plus> <plus> : "#" numbersign
+<Multi_key> <apostrophe> <space> : "'" apostrophe
+<Multi_key> <space> <apostrophe> : "'" apostrophe
+<Multi_key> <A> <T> : "@" at
+<Multi_key> <parenleft> <parenleft> : "[" bracketleft
+<Multi_key> <slash> <slash> : "\\" backslash
+<Multi_key> <slash> <less> : "\\" backslash
+<Multi_key> <less> <slash> : "\\" backslash
+<Multi_key> <parenright> <parenright> : "]" bracketright
+<Multi_key> <asciicircum> <space> : "^" asciicircum
+<Multi_key> <space> <asciicircum> : "^" asciicircum
+<Multi_key> <greater> <space> : "^" asciicircum
+<Multi_key> <space> <greater> : "^" asciicircum
+<Multi_key> <grave> <space> : "`" grave
+<Multi_key> <space> <grave> : "`" grave
+<Multi_key> <parenleft> <minus> : "{" braceleft
+<Multi_key> <minus> <parenleft> : "{" braceleft
+<Multi_key> <slash> <asciicircum> : "|" bar
+<Multi_key> <asciicircum> <slash> : "|" bar
+<Multi_key> <V> <L> : "|" bar
+<Multi_key> <L> <V> : "|" bar
+<Multi_key> <v> <l> : "|" bar
+<Multi_key> <l> <v> : "|" bar
+<Multi_key> <parenright> <minus> : "}" braceright
+<Multi_key> <minus> <parenright> : "}" braceright
+<Multi_key> <asciitilde> <space> : "~" asciitilde
+<Multi_key> <space> <asciitilde> : "~" asciitilde
+<Multi_key> <minus> <space> : "~" asciitilde
+<Multi_key> <space> <minus> : "~" asciitilde
+<Multi_key> <exclam> <exclam> : "\241" exclamdown
+<Multi_key> <c> <slash> : "\242" cent
+<Multi_key> <slash> <c> : "\242" cent
+<Multi_key> <C> <slash> : "\242" cent
+<Multi_key> <slash> <C> : "\242" cent
+<Multi_key> <C> <bar> : "\242" cent
+<Multi_key> <bar> <C> : "\242" cent
+<Multi_key> <c> <bar> : "\242" cent
+<Multi_key> <bar> <c> : "\242" cent
+<Multi_key> <l> <minus> : "\243" sterling
+<Multi_key> <minus> <l> : "\243" sterling
+<Multi_key> <L> <minus> : "\243" sterling
+<Multi_key> <minus> <L> : "\243" sterling
+<Multi_key> <l> <equal> : "\243" sterling
+<Multi_key> <equal> <l> : "\243" sterling
+<Multi_key> <L> <equal> : "\243" sterling
+<Multi_key> <equal> <L> : "\243" sterling
+<Multi_key> <C> <equal> : "\244" EuroSign
+<Multi_key> <equal> <C> : "\244" EuroSign
+<Multi_key> <c> <equal> : "\244" EuroSign
+<Multi_key> <equal> <c> : "\244" EuroSign
+<Multi_key> <E> <equal> : "\244" EuroSign
+<Multi_key> <equal> <E> : "\244" EuroSign
+<Multi_key> <e> <equal> : "\244" EuroSign
+<Multi_key> <equal> <e> : "\244" EuroSign
+<Multi_key> <y> <minus> : "\245" yen
+<Multi_key> <minus> <y> : "\245" yen
+<Multi_key> <Y> <minus> : "\245" yen
+<Multi_key> <minus> <Y> : "\245" yen
+<Multi_key> <y> <equal> : "\245" yen
+<Multi_key> <equal> <y> : "\245" yen
+<Multi_key> <Y> <equal> : "\245" yen
+<Multi_key> <equal> <Y> : "\245" yen
+<Multi_key> <s> <o> : "\247" section
+<Multi_key> <o> <s> : "\247" section
+<Multi_key> <S> <O> : "\247" section
+<Multi_key> <O> <S> : "\247" section
+<Multi_key> <S> <exclam> : "\247" section
+<Multi_key> <exclam> <S> : "\247" section
+<Multi_key> <s> <exclam> : "\247" section
+<Multi_key> <exclam> <s> : "\247" section
+<Multi_key> <S> <0> : "\247" section
+<Multi_key> <0> <S> : "\247" section
+<Multi_key> <s> <0> : "\247" section
+<Multi_key> <0> <s> : "\247" section
+<Multi_key> <c> <o> : "\251" copyright
+<Multi_key> <o> <c> : "\251" copyright
+<Multi_key> <C> <O> : "\251" copyright
+<Multi_key> <O> <C> : "\251" copyright
+<Multi_key> <c> <O> : "\251" copyright
+<Multi_key> <O> <c> : "\251" copyright
+<Multi_key> <C> <o> : "\251" copyright
+<Multi_key> <o> <C> : "\251" copyright
+<Multi_key> <c> <0> : "\251" copyright
+<Multi_key> <0> <c> : "\251" copyright
+<Multi_key> <C> <0> : "\251" copyright
+<Multi_key> <0> <C> : "\251" copyright
+<Multi_key> <parenleft> <c> : "\251" copyright
+<Multi_key> <parenleft> <C> : "\251" copyright
+<Multi_key> <a> <underscore> : "\252" ordfeminine
+<Multi_key> <underscore> <a> : "\252" ordfeminine
+<Multi_key> <A> <underscore> : "\252" ordfeminine
+<Multi_key> <underscore> <A> : "\252" ordfeminine
+<Multi_key> <o> <underscore> : "\272" masculine
+<Multi_key> <underscore> <o> : "\272" masculine
+<Multi_key> <O> <underscore> : "\272" masculine
+<Multi_key> <underscore> <O> : "\272" masculine
+<Multi_key> <less> <less> : "\253" guillemotleft
+<Multi_key> <greater> <greater> : "\273" guillemotright
+<Multi_key> <0> <asciicircum> : "\260" degree
+<Multi_key> <asciicircum> <0> : "\260" degree
+<Multi_key> <0> <asterisk> : "\260" degree
+<Multi_key> <asterisk> <0> : "\260" degree
+<Multi_key> <plus> <minus> : "\261" plusminus
+<Multi_key> <minus> <plus> : "\261" plusminus
+<Multi_key> <slash> <u> : "\265" mu
+<Multi_key> <u> <slash> : "\265" mu
+<Multi_key> <slash> <U> : "\265" mu
+<Multi_key> <U> <slash> : "\265" mu
+<Multi_key> <1> <asciicircum> : "\271" onesuperior
+<Multi_key> <asciicircum> <1> : "\271" onesuperior
+<Multi_key> <S> <1> : "\271" onesuperior
+<Multi_key> <1> <S> : "\271" onesuperior
+<Multi_key> <s> <1> : "\271" onesuperior
+<Multi_key> <1> <s> : "\271" onesuperior
+<Multi_key> <2> <asciicircum> : "\262" twosuperior
+<Multi_key> <asciicircum> <2> : "\262" twosuperior
+<Multi_key> <S> <2> : "\262" twosuperior
+<Multi_key> <2> <S> : "\262" twosuperior
+<Multi_key> <s> <2> : "\262" twosuperior
+<Multi_key> <2> <s> : "\262" twosuperior
+<Multi_key> <3> <asciicircum> : "\263" threesuperior
+<Multi_key> <asciicircum> <3> : "\263" threesuperior
+<Multi_key> <S> <3> : "\263" threesuperior
+<Multi_key> <3> <S> : "\263" threesuperior
+<Multi_key> <s> <3> : "\263" threesuperior
+<Multi_key> <3> <s> : "\263" threesuperior
+<Multi_key> <p> <exclam> : "\266" paragraph
+<Multi_key> <exclam> <p> : "\266" paragraph
+<Multi_key> <P> <exclam> : "\266" paragraph
+<Multi_key> <exclam> <P> : "\266" paragraph
+<Multi_key> <period> <asciicircum> : "\267" periodcentered
+<Multi_key> <asciicircum> <period> : "\267" periodcentered
+<Multi_key> <period> <period> : "\267" periodcentered
+<Multi_key> <question> <question> : "\277" questiondown
+<Multi_key> <space> <space> : "\240" nobreakspace
+<Multi_key> <minus> <comma> : "\254" notsign
+<Multi_key> <comma> <minus> : "\254" notsign
+<Multi_key> <minus> <minus> : "\255" hyphen
+<Multi_key> <R> <O> : "\256" registered
+<Multi_key> <O> <R> : "\256" registered
+<Multi_key> <parenleft> <r> : "\256" registered
+<Multi_key> <minus> <asciicircum> : "\257" macron
+<Multi_key> <asciicircum> <minus> : "\257" macron
+<Multi_key> <underscore> <asciicircum> : "\257" macron
+<Multi_key> <asciicircum> <underscore> : "\257" macron
+<Multi_key> <underscore> <underscore> : "\257" macron
+<Multi_key> <minus> <colon> : "\367" division
+<Multi_key> <colon> <minus> : "\367" division
+<Multi_key> <x> <x> : "\327" multiply
+<Multi_key> <apostrophe> <apostrophe> : "\264" acute
+<Multi_key> <comma> <comma> : "\270" cedilla
+<Multi_key> <quotedbl> <quotedbl> : "\"" quotedbl
+XCOMM Accented Alphabet
+<Multi_key> <A> <grave> : "\300" Agrave
+<Multi_key> <grave> <A> : "\300" Agrave
+<Multi_key> <A> <acute> : "\301" Aacute
+<Multi_key> <acute> <A> : "\301" Aacute
+<Multi_key> <A> <apostrophe> : "\301" Aacute
+<Multi_key> <apostrophe> <A> : "\301" Aacute
+<Multi_key> <A> <asciicircum> : "\302" Acircumflex
+<Multi_key> <asciicircum> <A> : "\302" Acircumflex
+<Multi_key> <A> <greater> : "\302" Acircumflex
+<Multi_key> <greater> <A> : "\302" Acircumflex
+<Multi_key> <A> <asciitilde> : "\303" Atilde
+<Multi_key> <asciitilde> <A> : "\303" Atilde
+<Multi_key> <A> <minus> : "\303" Atilde
+<Multi_key> <minus> <A> : "\303" Atilde
+<Multi_key> <A> <quotedbl> : "\304" Adiaeresis
+<Multi_key> <quotedbl> <A> : "\304" Adiaeresis
+<Multi_key> <A> <diaeresis> : "\304" Adiaeresis
+<Multi_key> <diaeresis> <A> : "\304" Adiaeresis
+<Multi_key> <A> <asterisk> : "\305" Aring
+<Multi_key> <asterisk> <A> : "\305" Aring
+<Multi_key> <A> <A> : "\305" Aring
+<Multi_key> <A> <O> : "\305" Aring
+<Multi_key> <A> <E> : "\306" AE
+<Multi_key> <a> <grave> : "\340" agrave
+<Multi_key> <grave> <a> : "\340" agrave
+<Multi_key> <a> <acute> : "\341" aacute
+<Multi_key> <acute> <a> : "\341" aacute
+<Multi_key> <a> <apostrophe> : "\341" aacute
+<Multi_key> <apostrophe> <a> : "\341" aacute
+<Multi_key> <a> <asciicircum> : "\342" acircumflex
+<Multi_key> <asciicircum> <a> : "\342" acircumflex
+<Multi_key> <a> <greater> : "\342" acircumflex
+<Multi_key> <greater> <a> : "\342" acircumflex
+<Multi_key> <a> <asciitilde> : "\343" atilde
+<Multi_key> <asciitilde> <a> : "\343" atilde
+<Multi_key> <a> <minus> : "\343" atilde
+<Multi_key> <minus> <a> : "\343" atilde
+<Multi_key> <a> <quotedbl> : "\344" adiaeresis
+<Multi_key> <quotedbl> <a> : "\344" adiaeresis
+<Multi_key> <a> <diaeresis> : "\344" adiaeresis
+<Multi_key> <diaeresis> <a> : "\344" adiaeresis
+<Multi_key> <a> <asterisk> : "\345" aring
+<Multi_key> <asterisk> <a> : "\345" aring
+<Multi_key> <a> <a> : "\345" aring
+<Multi_key> <a> <o> : "\345" aring
+<Multi_key> <a> <e> : "\346" ae
+<Multi_key> <acute> <C> : "\307" Ccedilla
+<Multi_key> <acute> <c> : "\347" ccedilla
+<Multi_key> <C> <comma> : "\307" Ccedilla
+<Multi_key> <C> <cedilla> : "\307" Ccedilla
+<Multi_key> <comma> <C> : "\307" Ccedilla
+<Multi_key> <cedilla> <C> : "\307" Ccedilla
+<Multi_key> <c> <comma> : "\347" ccedilla
+<Multi_key> <c> <cedilla> : "\347" ccedilla
+<Multi_key> <comma> <c> : "\347" ccedilla
+<Multi_key> <cedilla> <c> : "\347" ccedilla
+<Multi_key> <minus> <D> : "\320" ETH
+<Multi_key> <D> <minus> : "\320" ETH
+<Multi_key> <minus> <d> : "\360" eth
+<Multi_key> <d> <minus> : "\360" eth
+<Multi_key> <E> <grave> : "\310" Egrave
+<Multi_key> <grave> <E> : "\310" Egrave
+<Multi_key> <E> <acute> : "\311" Eacute
+<Multi_key> <acute> <E> : "\311" Eacute
+<Multi_key> <E> <apostrophe> : "\311" Eacute
+<Multi_key> <apostrophe> <E> : "\311" Eacute
+<Multi_key> <E> <asciicircum> : "\312" Ecircumflex
+<Multi_key> <asciicircum> <E> : "\312" Ecircumflex
+<Multi_key> <E> <greater> : "\312" Ecircumflex
+<Multi_key> <greater> <E> : "\312" Ecircumflex
+<Multi_key> <E> <quotedbl> : "\313" Ediaeresis
+<Multi_key> <quotedbl> <E> : "\313" Ediaeresis
+<Multi_key> <E> <diaeresis> : "\313" Ediaeresis
+<Multi_key> <diaeresis> <E> : "\313" Ediaeresis
+<Multi_key> <e> <grave> : "\350" egrave
+<Multi_key> <grave> <e> : "\350" egrave
+<Multi_key> <e> <acute> : "\351" eacute
+<Multi_key> <acute> <e> : "\351" eacute
+<Multi_key> <e> <apostrophe> : "\351" eacute
+<Multi_key> <apostrophe> <e> : "\351" eacute
+<Multi_key> <e> <asciicircum> : "\352" ecircumflex
+<Multi_key> <asciicircum> <e> : "\352" ecircumflex
+<Multi_key> <e> <greater> : "\352" ecircumflex
+<Multi_key> <greater> <e> : "\352" ecircumflex
+<Multi_key> <e> <quotedbl> : "\353" ediaeresis
+<Multi_key> <quotedbl> <e> : "\353" ediaeresis
+<Multi_key> <e> <diaeresis> : "\353" ediaeresis
+<Multi_key> <diaeresis> <e> : "\353" ediaeresis
+<Multi_key> <I> <grave> : "\314" Igrave
+<Multi_key> <grave> <I> : "\314" Igrave
+<Multi_key> <I> <acute> : "\315" Iacute
+<Multi_key> <acute> <I> : "\315" Iacute
+<Multi_key> <I> <apostrophe> : "\315" Iacute
+<Multi_key> <apostrophe> <I> : "\315" Iacute
+<Multi_key> <I> <asciicircum> : "\316" Icircumflex
+<Multi_key> <asciicircum> <I> : "\316" Icircumflex
+<Multi_key> <I> <greater> : "\316" Icircumflex
+<Multi_key> <greater> <I> : "\316" Icircumflex
+<Multi_key> <I> <quotedbl> : "\317" Idiaeresis
+<Multi_key> <quotedbl> <I> : "\317" Idiaeresis
+<Multi_key> <I> <diaeresis> : "\317" Idiaeresis
+<Multi_key> <diaeresis> <I> : "\317" Idiaeresis
+<Multi_key> <i> <grave> : "\354" igrave
+<Multi_key> <grave> <i> : "\354" igrave
+<Multi_key> <i> <acute> : "\355" iacute
+<Multi_key> <acute> <i> : "\355" iacute
+<Multi_key> <i> <apostrophe> : "\355" iacute
+<Multi_key> <apostrophe> <i> : "\355" iacute
+<Multi_key> <i> <asciicircum> : "\356" icircumflex
+<Multi_key> <asciicircum> <i> : "\356" icircumflex
+<Multi_key> <i> <greater> : "\356" icircumflex
+<Multi_key> <greater> <i> : "\356" icircumflex
+<Multi_key> <i> <quotedbl> : "\357" idiaeresis
+<Multi_key> <quotedbl> <i> : "\357" idiaeresis
+<Multi_key> <i> <diaeresis> : "\357" idiaeresis
+<Multi_key> <diaeresis> <i> : "\357" idiaeresis
+<Multi_key> <N> <asciitilde> : "\321" Ntilde
+<Multi_key> <asciitilde> <N> : "\321" Ntilde
+<Multi_key> <N> <minus> : "\321" Ntilde
+<Multi_key> <minus> <N> : "\321" Ntilde
+<Multi_key> <n> <asciitilde> : "\361" ntilde
+<Multi_key> <asciitilde> <n> : "\361" ntilde
+<Multi_key> <n> <minus> : "\361" ntilde
+<Multi_key> <minus> <n> : "\361" ntilde
+<Multi_key> <O> <grave> : "\322" Ograve
+<Multi_key> <grave> <O> : "\322" Ograve
+<Multi_key> <O> <acute> : "\323" Oacute
+<Multi_key> <acute> <O> : "\323" Oacute
+<Multi_key> <O> <apostrophe> : "\323" Oacute
+<Multi_key> <apostrophe> <O> : "\323" Oacute
+<Multi_key> <O> <asciicircum> : "\324" Ocircumflex
+<Multi_key> <asciicircum> <O> : "\324" Ocircumflex
+<Multi_key> <O> <greater> : "\324" Ocircumflex
+<Multi_key> <greater> <O> : "\324" Ocircumflex
+<Multi_key> <O> <asciitilde> : "\325" Otilde
+<Multi_key> <asciitilde> <O> : "\325" Otilde
+<Multi_key> <O> <minus> : "\325" Otilde
+<Multi_key> <minus> <O> : "\325" Otilde
+<Multi_key> <O> <quotedbl> : "\326" Odiaeresis
+<Multi_key> <quotedbl> <O> : "\326" Odiaeresis
+<Multi_key> <O> <diaeresis> : "\326" Odiaeresis
+<Multi_key> <diaeresis> <O> : "\326" Odiaeresis
+<Multi_key> <O> <slash> : "\330" Ooblique
+<Multi_key> <slash> <O> : "\330" Ooblique
+<Multi_key> <O> <E> : "\274" OE
+<Multi_key> <o> <grave> : "\362" ograve
+<Multi_key> <grave> <o> : "\362" ograve
+<Multi_key> <o> <acute> : "\363" oacute
+<Multi_key> <acute> <o> : "\363" oacute
+<Multi_key> <o> <apostrophe> : "\363" oacute
+<Multi_key> <apostrophe> <o> : "\363" oacute
+<Multi_key> <o> <asciicircum> : "\364" ocircumflex
+<Multi_key> <asciicircum> <o> : "\364" ocircumflex
+<Multi_key> <o> <greater> : "\364" ocircumflex
+<Multi_key> <greater> <o> : "\364" ocircumflex
+<Multi_key> <o> <asciitilde> : "\365" otilde
+<Multi_key> <asciitilde> <o> : "\365" otilde
+<Multi_key> <o> <minus> : "\365" otilde
+<Multi_key> <minus> <o> : "\365" otilde
+<Multi_key> <o> <quotedbl> : "\366" odiaeresis
+<Multi_key> <quotedbl> <o> : "\366" odiaeresis
+<Multi_key> <o> <diaeresis> : "\366" odiaeresis
+<Multi_key> <diaeresis> <o> : "\366" odiaeresis
+<Multi_key> <o> <slash> : "\370" oslash
+<Multi_key> <slash> <o> : "\370" oslash
+<Multi_key> <o> <e> : "\275" oe
+<Multi_key> <S> <less> : "\246" Scaron
+<Multi_key> <less> <S> : "\246" Scaron
+<Multi_key> <s> <less> : "\250" scaron
+<Multi_key> <less> <s> : "\250" scaron
+<Multi_key> <U> <grave> : "\331" Ugrave
+<Multi_key> <grave> <U> : "\331" Ugrave
+<Multi_key> <U> <acute> : "\332" Uacute
+<Multi_key> <acute> <U> : "\332" Uacute
+<Multi_key> <U> <apostrophe> : "\332" Uacute
+<Multi_key> <apostrophe> <U> : "\332" Uacute
+<Multi_key> <U> <asciicircum> : "\333" Ucircumflex
+<Multi_key> <asciicircum> <U> : "\333" Ucircumflex
+<Multi_key> <U> <greater> : "\333" Ucircumflex
+<Multi_key> <greater> <U> : "\333" Ucircumflex
+<Multi_key> <U> <quotedbl> : "\334" Udiaeresis
+<Multi_key> <quotedbl> <U> : "\334" Udiaeresis
+<Multi_key> <U> <diaeresis> : "\334" Udiaeresis
+<Multi_key> <diaeresis> <U> : "\334" Udiaeresis
+<Multi_key> <u> <grave> : "\371" ugrave
+<Multi_key> <grave> <u> : "\371" ugrave
+<Multi_key> <u> <acute> : "\372" uacute
+<Multi_key> <acute> <u> : "\372" uacute
+<Multi_key> <u> <apostrophe> : "\372" uacute
+<Multi_key> <apostrophe> <u> : "\372" uacute
+<Multi_key> <u> <asciicircum> : "\373" ucircumflex
+<Multi_key> <asciicircum> <u> : "\373" ucircumflex
+<Multi_key> <u> <greater> : "\373" ucircumflex
+<Multi_key> <greater> <u> : "\373" ucircumflex
+<Multi_key> <u> <quotedbl> : "\374" udiaeresis
+<Multi_key> <quotedbl> <u> : "\374" udiaeresis
+<Multi_key> <u> <diaeresis> : "\374" udiaeresis
+<Multi_key> <diaeresis> <u> : "\374" udiaeresis
+<Multi_key> <s> <s> : "\337" ssharp
+<Multi_key> <T> <H> : "\336" THORN
+<Multi_key> <t> <h> : "\376" thorn
+<Multi_key> <Y> <acute> : "\335" Yacute
+<Multi_key> <acute> <Y> : "\335" Yacute
+<Multi_key> <Y> <apostrophe> : "\335" Yacute
+<Multi_key> <apostrophe> <Y> : "\335" Yacute
+<Multi_key> <Y> <quotedbl> : "\276" Ydiaeresis
+<Multi_key> <quotedbl> <Y> : "\276" Ydiaeresis
+<Multi_key> <Y> <diaeresis> : "\276" Ydiaeresis
+<Multi_key> <diaeresis> <Y> : "\276" Ydiaeresis
+<Multi_key> <y> <acute> : "\375" yacute
+<Multi_key> <acute> <y> : "\375" yacute
+<Multi_key> <y> <apostrophe> : "\375" yacute
+<Multi_key> <apostrophe> <y> : "\375" yacute
+<Multi_key> <y> <quotedbl> : "\377" ydiaeresis
+<Multi_key> <quotedbl> <y> : "\377" ydiaeresis
+<Multi_key> <y> <diaeresis> : "\377" ydiaeresis
+<Multi_key> <diaeresis> <y> : "\377" ydiaeresis
+<Multi_key> <Z> <less> : "\264" Zcaron
+<Multi_key> <less> <Z> : "\264" Zcaron
+<Multi_key> <z> <less> : "\270" zcaron
+<Multi_key> <less> <z> : "\270" zcaron
+XCOMM
+XCOMM dead key accent keysyms
+XCOMM Special Character
+<dead_circumflex> <slash> : "|" bar
+<dead_circumflex> <space> : "^" asciicircum
+<dead_circumflex> <dead_circumflex> : "^" asciicircum
+<dead_tilde> <space> : "~" asciitilde
+<dead_tilde> <dead_tilde> : "~" asciitilde
+<dead_grave> <space> : "`" grave
+<dead_grave> <dead_grave> : "`" grave
+XCOMM These are for us_intl, that does not have diaeresis, etc
+<dead_acute> <space> : "'" apostrophe
+<dead_acute> <dead_acute> : "\264" acute
+<dead_diaeresis> <space> : "\"" quotedbl
+<dead_diaeresis> <dead_diaeresis> : "\"" quotedbl
+<dead_doubleacute> <space> : "\"" quotedbl
+<dead_circumflex> <0> : "\260" degree
+<dead_circumflex> <1> : "\271" onesuperior
+<dead_circumflex> <2> : "\262" twosuperior
+<dead_circumflex> <3> : "\263" threesuperior
+<dead_circumflex> <period> : "\267" periodcentered
+<dead_cedilla> <minus> : "\254" notsign
+<dead_circumflex> <minus> : "\257" macron
+<dead_circumflex> <underscore> : "\257" macron
+<dead_acute> <apostrophe> : "\264" acute
+<dead_cedilla> <comma> : "\270" cedilla
+<dead_diaeresis> <quotedbl> : "\"" quotedbl
+XCOMM Accented Alphabet
+<dead_abovering> <A> : "\305" Aring
+<dead_grave> <A> : "\300" Agrave
+<dead_acute> <A> : "\301" Aacute
+<dead_circumflex> <A> : "\302" Acircumflex
+<dead_tilde> <A> : "\303" Atilde
+<dead_diaeresis> <A> : "\304" Adiaeresis
+<dead_abovering> <a> : "\345" aring
+<dead_grave> <a> : "\340" agrave
+<dead_acute> <a> : "\341" aacute
+<dead_circumflex> <a> : "\342" acircumflex
+<dead_tilde> <a> : "\343" atilde
+<dead_diaeresis> <a> : "\344" adiaeresis
+<dead_cedilla> <C> : "\307" Ccedilla
+<dead_cedilla> <c> : "\347" ccedilla
+<dead_grave> <E> : "\310" Egrave
+<dead_acute> <E> : "\311" Eacute
+<dead_circumflex> <E> : "\312" Ecircumflex
+<dead_diaeresis> <E> : "\313" Ediaeresis
+<dead_grave> <e> : "\350" egrave
+<dead_acute> <e> : "\351" eacute
+<dead_circumflex> <e> : "\352" ecircumflex
+<dead_diaeresis> <e> : "\353" ediaeresis
+<dead_grave> <I> : "\314" Igrave
+<dead_acute> <I> : "\315" Iacute
+<dead_circumflex> <I> : "\316" Icircumflex
+<dead_diaeresis> <I> : "\317" Idiaeresis
+<dead_grave> <i> : "\354" igrave
+<dead_acute> <i> : "\355" iacute
+<dead_circumflex> <i> : "\356" icircumflex
+<dead_diaeresis> <i> : "\357" idiaeresis
+<dead_tilde> <N> : "\321" Ntilde
+<dead_tilde> <n> : "\361" ntilde
+<dead_grave> <O> : "\322" Ograve
+<dead_acute> <O> : "\323" Oacute
+<dead_circumflex> <O> : "\324" Ocircumflex
+<dead_tilde> <O> : "\325" Otilde
+<dead_diaeresis> <O> : "\326" Odiaeresis
+<dead_grave> <o> : "\362" ograve
+<dead_acute> <o> : "\363" oacute
+<dead_circumflex> <o> : "\364" ocircumflex
+<dead_tilde> <o> : "\365" otilde
+<dead_diaeresis> <o> : "\366" odiaeresis
+<dead_caron> <S> : "\246" Scaron
+<dead_caron> <s> : "\250" scaron
+<dead_circumflex> <S> : "\246" Scaron
+<dead_circumflex> <s> : "\250" scaron
+<dead_grave> <U> : "\331" Ugrave
+<dead_acute> <U> : "\332" Uacute
+<dead_circumflex> <U> : "\333" Ucircumflex
+<dead_diaeresis> <U> : "\334" Udiaeresis
+<dead_grave> <u> : "\371" ugrave
+<dead_acute> <u> : "\372" uacute
+<dead_circumflex> <u> : "\373" ucircumflex
+<dead_diaeresis> <u> : "\374" udiaeresis
+<dead_acute> <Y> : "\335" Yacute
+<dead_diaeresis> <Y> : "\276" Ydiaeresis
+<dead_acute> <y> : "\375" yacute
+<dead_diaeresis> <y> : "\377" ydiaeresis
+<dead_caron> <Z> : "\264" Zcaron
+<dead_caron> <z> : "\270" zcaron
+<dead_circumflex> <Z> : "\264" Zcaron
+<dead_circumflex> <z> : "\270" zcaron
+XCOMM Useful for portuguese language
+<dead_acute> <C> : "\307" Ccedilla
+<dead_acute> <c> : "\347" ccedilla
+XCOMM End of Sequence Definition
diff --git a/libX11/nls/iso8859-15/XI18N_OBJS b/libX11/nls/iso8859-15/XI18N_OBJS
index 03f9f2c62..1e4f6cc51 100644
--- a/libX11/nls/iso8859-15/XI18N_OBJS
+++ b/libX11/nls/iso8859-15/XI18N_OBJS
@@ -1,7 +1,7 @@
-# CATEGORY(XLC|XIM|OM) SHARED_LIBRARY_NAME FUNCTION_NAME
-#
-# XI18N objects table for iso8859-15 locale
-#
-XLC common/xlcDef _XlcDefaultLoader # XLC_open
-XIM common/ximcp _XimOpenIM _XimRegisterIMInstantiateCallback _XimUnRegisterIMInstantiateCallback # XIM_open XIM_register XIM_unregister
-XOM common/xomGeneric _XomGenericOpenOM # XOM_open
+# CATEGORY(XLC|XIM|OM) SHARED_LIBRARY_NAME FUNCTION_NAME
+#
+# XI18N objects table for iso8859-15 locale
+#
+XLC common/xlcDef _XlcDefaultLoader # XLC_open
+XIM common/ximcp _XimOpenIM _XimRegisterIMInstantiateCallback _XimUnRegisterIMInstantiateCallback # XIM_open XIM_register XIM_unregister
+XOM common/xomGeneric _XomGenericOpenOM # XOM_open
diff --git a/libX11/nls/iso8859-15/XLC_LOCALE.pre b/libX11/nls/iso8859-15/XLC_LOCALE.pre
index 285fa7544..892187429 100644
--- a/libX11/nls/iso8859-15/XLC_LOCALE.pre
+++ b/libX11/nls/iso8859-15/XLC_LOCALE.pre
@@ -1,78 +1,78 @@
-XCOMM XLocale Database Sample for fcd/dis/iso 8859-15.
-XCOMM When Final Committee Draft (FCD) 8859-15 is formalized
-XCOMM then this file will be renamed iso8859-15.
-XCOMM This file is provided as preliminary support for the Latin-9
-XCOMM (a.k.a. Latin-0) character set so that Europeans who want
-XCOMM the Euro currency character can do so.
-XCOMM
-XCOMM
-
-XCOMM
-XCOMM XLC_FONTSET category
-XCOMM
-XLC_FONTSET
-XCOMM fs0 class
-fs0 {
- charset {
- name ISO8859-1:GL
- }
- font {
- primary ISO8859-15:GL
- substitute ISO8859-15:GL
- vertical_rotate all
- }
-}
-XCOMM fs1 class
-fs1 {
- charset {
- name ISO8859-15:GR
- }
- font {
- primary ISO8859-15:GR
- }
-}
-END XLC_FONTSET
-
-XCOMM
-XCOMM XLC_XLOCALE category
-XCOMM
-XLC_XLOCALE
-
-encoding_name ISO8859-15
-mb_cur_max 1
-state_depend_encoding False
-#if WCHAR32
-wc_encoding_mask \x30000000
-wc_shift_bits 7
-#else
-wc_encoding_mask \x00008080
-wc_shift_bits 8
-#endif
-
-#ifndef X_LOCALE
-use_stdc_env True
-force_convert_to_mb True
-#endif
-
-XCOMM cs0 class
-cs0 {
- side GL:Default
- length 1
- wc_encoding \x00000000
- ct_encoding ISO8859-15:GL; ISO8859-1:GL
-}
-
-
-XCOMM cs1 class
-cs1 {
- side GR:Default
- length 1
-#if WCHAR32
- wc_encoding \x30000000
-#else
- wc_encoding \x00008080
-#endif
- ct_encoding ISO8859-15:GR
-}
-
-END XLC_XLOCALE
+XCOMM XLocale Database Sample for fcd/dis/iso 8859-15.
+XCOMM When Final Committee Draft (FCD) 8859-15 is formalized
+XCOMM then this file will be renamed iso8859-15.
+XCOMM This file is provided as preliminary support for the Latin-9
+XCOMM (a.k.a. Latin-0) character set so that Europeans who want
+XCOMM the Euro currency character can do so.
+XCOMM
+XCOMM
+
+XCOMM
+XCOMM XLC_FONTSET category
+XCOMM
+XLC_FONTSET
+XCOMM fs0 class
+fs0 {
+ charset {
+ name ISO8859-1:GL
+ }
+ font {
+ primary ISO8859-15:GL
+ substitute ISO8859-15:GL
+ vertical_rotate all
+ }
+}
+XCOMM fs1 class
+fs1 {
+ charset {
+ name ISO8859-15:GR
+ }
+ font {
+ primary ISO8859-15:GR
+ }
+}
+END XLC_FONTSET
+
+XCOMM
+XCOMM XLC_XLOCALE category
+XCOMM
+XLC_XLOCALE
+
+encoding_name ISO8859-15
+mb_cur_max 1
+state_depend_encoding False
+#if WCHAR32
+wc_encoding_mask \x30000000
+wc_shift_bits 7
+#else
+wc_encoding_mask \x00008080
+wc_shift_bits 8
+#endif
+
+#ifndef X_LOCALE
+use_stdc_env True
+force_convert_to_mb True
+#endif
+
+XCOMM cs0 class
+cs0 {
+ side GL:Default
+ length 1
+ wc_encoding \x00000000
+ ct_encoding ISO8859-15:GL; ISO8859-1:GL
+}
+
+
+XCOMM cs1 class
+cs1 {
+ side GR:Default
+ length 1
+#if WCHAR32
+ wc_encoding \x30000000
+#else
+ wc_encoding \x00008080
+#endif
+ ct_encoding ISO8859-15:GR
+}
+
+END XLC_XLOCALE
diff --git a/libX11/nls/iso8859-2/Compose.pre b/libX11/nls/iso8859-2/Compose.pre
index a4ea6f49a..876e82c6d 100644
--- a/libX11/nls/iso8859-2/Compose.pre
+++ b/libX11/nls/iso8859-2/Compose.pre
@@ -1,535 +1,535 @@
-XCOMM
-XCOMM ISO 8859-2 (Latin2) Compose Sequence
-XCOMM
-XCOMM
-XCOMM Sequence Definition
-XCOMM
-XCOMM <Multi_key> Means <Compose>
-XCOMM Special Character
-<Multi_key> <plus> <plus> : "#" numbersign
-<Multi_key> <apostrophe> <space> : "'" apostrophe
-<Multi_key> <space> <apostrophe> : "'" apostrophe
-<Multi_key> <A> <A> : "@" at
-<Multi_key> <parenleft> <parenleft> : "[" bracketleft
-<Multi_key> <slash> <slash> : "\\" backslash
-<Multi_key> <slash> <less> : "\\" backslash
-<Multi_key> <less> <slash> : "\\" backslash
-<Multi_key> <parenright> <parenright> : "]" bracketright
-<Multi_key> <asciicircum> <space> : "^" asciicircum
-<Multi_key> <space> <asciicircum> : "^" asciicircum
-<Multi_key> <greater> <space> : "^" asciicircum
-<Multi_key> <space> <greater> : "^" asciicircum
-<Multi_key> <grave> <space> : "`" grave
-<Multi_key> <space> <grave> : "`" grave
-<Multi_key> <parenleft> <minus> : "{" braceleft
-<Multi_key> <minus> <parenleft> : "{" braceleft
-<Multi_key> <slash> <asciicircum> : "|" bar
-<Multi_key> <asciicircum> <slash> : "|" bar
-<Multi_key> <V> <L> : "|" bar
-<Multi_key> <L> <V> : "|" bar
-<Multi_key> <v> <l> : "|" bar
-<Multi_key> <l> <v> : "|" bar
-<Multi_key> <parenright> <minus> : "}" braceright
-<Multi_key> <minus> <parenright> : "}" braceright
-<Multi_key> <asciitilde> <space> : "~" asciitilde
-<Multi_key> <space> <asciitilde> : "~" asciitilde
-<Multi_key> <minus> <space> : "~" asciitilde
-<Multi_key> <space> <minus> : "~" asciitilde
-<Multi_key> <x> <o> : "\244" currency
-<Multi_key> <o> <x> : "\244" currency
-<Multi_key> <X> <O> : "\244" currency
-<Multi_key> <O> <X> : "\244" currency
-<Multi_key> <x> <O> : "\244" currency
-<Multi_key> <O> <x> : "\244" currency
-<Multi_key> <X> <o> : "\244" currency
-<Multi_key> <o> <X> : "\244" currency
-<Multi_key> <x> <0> : "\244" currency
-<Multi_key> <0> <x> : "\244" currency
-<Multi_key> <X> <0> : "\244" currency
-<Multi_key> <0> <X> : "\244" currency
-<Multi_key> <p> <exclam> : "\266" paragraph
-<Multi_key> <exclam> <p> : "\266" paragraph
-<Multi_key> <P> <exclam> : "\266" paragraph
-<Multi_key> <exclam> <P> : "\266" paragraph
-XCOMM Right-hand side (Accented Alphabet)
-XCOMM These compose sequences are pure supposition on my part.
-XCOMM It would be nice to know what the real cultural conventions
-XCOMM are for compose sequences.
-<Multi_key> <A> <comma> : "\241" Aogonek
-<Multi_key> <comma> <A> : "\241" Aogonek
-<Multi_key> <A> <ogonek> : "\241" Aogonek
-<Multi_key> <ogonek> <A> : "\241" Aogonek
-<Multi_key> <U> <space> : "\242" breve
-<Multi_key> <L> <minus> : "\243" Lstroke
-<Multi_key> <L> <less> : "\245" Lcaron
-<Multi_key> <less> <L> : "\245" Lcaron
-<Multi_key> <L> <caron> : "\245" Lcaron
-<Multi_key> <caron> <L> : "\245" Lcaron
-<Multi_key> <S> <apostrophe> : "\246" Sacute
-<Multi_key> <apostrophe> <S> : "\246" Sacute
-<Multi_key> <S> <acute> : "\246" Sacute
-<Multi_key> <acute> <S> : "\246" Sacute
-<Multi_key> <s> <o> : "\247" section
-<Multi_key> <o> <s> : "\247" section
-<Multi_key> <S> <O> : "\247" section
-<Multi_key> <O> <S> : "\247" section
-<Multi_key> <S> <exclam> : "\247" section
-<Multi_key> <exclam> <S> : "\247" section
-<Multi_key> <s> <exclam> : "\247" section
-<Multi_key> <exclam> <s> : "\247" section
-<Multi_key> <S> <0> : "\247" section
-<Multi_key> <0> <S> : "\247" section
-<Multi_key> <s> <0> : "\247" section
-<Multi_key> <0> <s> : "\247" section
-<Multi_key> <quotedbl> <quotedbl> : "\250" diaeresis
-<Multi_key> <S> <less> : "\251" Scaron
-<Multi_key> <less> <S> : "\251" Scaron
-<Multi_key> <S> <caron> : "\251" Scaron
-<Multi_key> <caron> <S> : "\251" Scaron
-<Multi_key> <S> <comma> : "\252" Scedilla
-<Multi_key> <comma> <S> : "\252" Scedilla
-<Multi_key> <S> <cedilla> : "\252" Scedilla
-<Multi_key> <cedilla> <S> : "\252" Scedilla
-<Multi_key> <T> <less> : "\253" Tcaron
-<Multi_key> <less> <T> : "\253" Tcaron
-<Multi_key> <T> <caron> : "\253" Tcaron
-<Multi_key> <caron> <T> : "\253" Tcaron
-<Multi_key> <Z> <apostrophe> : "\254" Zacute
-<Multi_key> <apostrophe> <Z> : "\254" Zacute
-<Multi_key> <Z> <acute> : "\254" Zacute
-<Multi_key> <acute> <Z> : "\254" Zacute
-<Multi_key> <minus> <minus> : "\255" hyphen
-<Multi_key> <Z> <less> : "\256" Zcaron
-<Multi_key> <less> <Z> : "\256" Zcaron
-<Multi_key> <Z> <caron> : "\256" Zcaron
-<Multi_key> <caron> <Z> : "\256" Zcaron
-<Multi_key> <Z> <period> : "\257" Zabovedot
-<Multi_key> <0> <asterisk> : "\260" degree
-<Multi_key> <asterisk> <0> : "\260" degree
-<Multi_key> <a> <comma> : "\261" aogonek
-<Multi_key> <comma> <a> : "\261" aogonek
-<Multi_key> <a> <ogonek> : "\261" aogonek
-<Multi_key> <ogonek> <a> : "\261" aogonek
-<Multi_key> <l> <minus> : "\263" lstroke
-<Multi_key> <l> <less> : "\265" lcaron
-<Multi_key> <less> <l> : "\265" lcaron
-<Multi_key> <l> <caron> : "\265" lcaron
-<Multi_key> <caron> <l> : "\265" lcaron
-<Multi_key> <s> <apostrophe> : "\266" sacute
-<Multi_key> <apostrophe> <s> : "\266" sacute
-<Multi_key> <s> <acute> : "\266" sacute
-<Multi_key> <acute> <s> : "\266" sacute
-<Multi_key> <less> <less> : "\267" caron
-<Multi_key> <comma> <comma> : "\270" cedilla
-<Multi_key> <s> <less> : "\271" scaron
-<Multi_key> <less> <s> : "\271" scaron
-<Multi_key> <s> <caron> : "\271" scaron
-<Multi_key> <caron> <s> : "\271" scaron
-<Multi_key> <s> <comma> : "\272" scedilla
-<Multi_key> <comma> <s> : "\272" scedilla
-<Multi_key> <s> <cedilla> : "\272" scedilla
-<Multi_key> <cedilla> <s> : "\272" scedilla
-<Multi_key> <t> <less> : "\273" tcaron
-<Multi_key> <less> <t> : "\273" tcaron
-<Multi_key> <t> <caron> : "\273" tcaron
-<Multi_key> <caron> <t> : "\273" tcaron
-<Multi_key> <z> <apostrophe> : "\274" zacute
-<Multi_key> <apostrophe> <z> : "\274" zacute
-<Multi_key> <z> <acute> : "\274" zacute
-<Multi_key> <acute> <z> : "\274" zacute
-<Multi_key> <apostrophe> <apostrophe> <space> : "\275" doubleacute
-<Multi_key> <acute> <acute> <space> : "\275" doubleacute
-<Multi_key> <z> <less> : "\276" zcaron
-<Multi_key> <less> <z> : "\276" zcaron
-<Multi_key> <z> <caron> : "\276" zcaron
-<Multi_key> <caron> <z> : "\276" zcaron
-<Multi_key> <z> <period> : "\277" zabovedot
-<Multi_key> <R> <acute> : "\300" Racute
-<Multi_key> <acute> <R> : "\300" Racute
-<Multi_key> <R> <apostrophe> : "\300" Racute
-<Multi_key> <apostrophe> <R> : "\300" Racute
-<Multi_key> <A> <acute> : "\301" Aacute
-<Multi_key> <acute> <A> : "\301" Aacute
-<Multi_key> <A> <apostrophe> : "\301" Aacute
-<Multi_key> <apostrophe> <A> : "\301" Aacute
-<Multi_key> <A> <asciicircum> : "\302" Acircumflex
-<Multi_key> <asciicircum> <A> : "\302" Acircumflex
-<Multi_key> <A> <greater> : "\302" Acircumflex
-<Multi_key> <greater> <A> : "\302" Acircumflex
-<Multi_key> <A> <U> : "\303" Abreve
-<Multi_key> <A> <breve> : "\303" Abreve
-<Multi_key> <breve> <A> : "\303" Abreve
-<Multi_key> <A> <quotedbl> : "\304" Adiaeresis
-<Multi_key> <quotedbl> <A> : "\304" Adiaeresis
-<Multi_key> <L> <acute> : "\305" Lacute
-<Multi_key> <acute> <L> : "\305" Lacute
-<Multi_key> <L> <apostrophe> : "\305" Lacute
-<Multi_key> <apostrophe> <L> : "\305" Lacute
-<Multi_key> <C> <acute> : "\306" Cacute
-<Multi_key> <acute> <C> : "\306" Cacute
-<Multi_key> <C> <apostrophe> : "\306" Cacute
-<Multi_key> <apostrophe> <C> : "\306" Cacute
-<Multi_key> <C> <comma> : "\307" Ccedilla
-<Multi_key> <comma> <C> : "\307" Ccedilla
-<Multi_key> <C> <cedilla> : "\307" Ccedilla
-<Multi_key> <cedilla> <C> : "\307" Ccedilla
-<Multi_key> <C> <less> : "\310" Ccaron
-<Multi_key> <less> <C> : "\310" Ccaron
-<Multi_key> <C> <caron> : "\310" Ccaron
-<Multi_key> <caron> <C> : "\310" Ccaron
-<Multi_key> <E> <acute> : "\311" Eacute
-<Multi_key> <acute> <E> : "\311" Eacute
-<Multi_key> <E> <apostrophe> : "\311" Eacute
-<Multi_key> <apostrophe> <E> : "\311" Eacute
-<Multi_key> <E> <comma> : "\312" Eogonek
-<Multi_key> <comma> <E> : "\312" Eogonek
-<Multi_key> <E> <ogonek> : "\312" Eogonek
-<Multi_key> <ogonek> <E> : "\312" Eogonek
-<Multi_key> <E> <quotedbl> : "\313" Ediaeresis
-<Multi_key> <quotedbl> <E> : "\313" Ediaeresis
-<Multi_key> <E> <less> : "\314" Ecaron
-<Multi_key> <less> <E> : "\314" Ecaron
-<Multi_key> <E> <caron> : "\314" Ecaron
-<Multi_key> <caron> <E> : "\314" Ecaron
-<Multi_key> <I> <acute> : "\315" Iacute
-<Multi_key> <acute> <I> : "\315" Iacute
-<Multi_key> <I> <apostrophe> : "\315" Iacute
-<Multi_key> <apostrophe> <I> : "\315" Iacute
-<Multi_key> <I> <asciicircum> : "\316" Icircumflex
-<Multi_key> <asciicircum> <I> : "\316" Icircumflex
-<Multi_key> <I> <greater> : "\316" Icircumflex
-<Multi_key> <greater> <I> : "\316" Icircumflex
-<Multi_key> <D> <less> : "\317" Dcaron
-<Multi_key> <less> <D> : "\317" Dcaron
-<Multi_key> <D> <caron> : "\317" Dcaron
-<Multi_key> <caron> <D> : "\317" Dcaron
-<Multi_key> <D> <minus> : "\320" Dstroke
-<Multi_key> <minus> <D> : "\320" Dstroke
-<Multi_key> <N> <acute> : "\321" Nacute
-<Multi_key> <acute> <N> : "\321" Nacute
-<Multi_key> <N> <apostrophe> : "\321" Nacute
-<Multi_key> <apostrophe> <N> : "\321" Nacute
-<Multi_key> <N> <less> : "\322" Ncaron
-<Multi_key> <less> <N> : "\322" Ncaron
-<Multi_key> <N> <caron> : "\322" Ncaron
-<Multi_key> <caron> <N> : "\322" Ncaron
-<Multi_key> <O> <acute> : "\323" Oacute
-<Multi_key> <acute> <O> : "\323" Oacute
-<Multi_key> <O> <apostrophe> : "\323" Oacute
-<Multi_key> <apostrophe> <O> : "\323" Oacute
-<Multi_key> <O> <asciicircum> : "\324" Ocircumflex
-<Multi_key> <asciicircum> <O> : "\324" Ocircumflex
-<Multi_key> <O> <greater> : "\324" Ocircumflex
-<Multi_key> <greater> <O> : "\324" Ocircumflex
-<Multi_key> <apostrophe> <apostrophe> <O> : "\325" Odoubleacute
-<Multi_key> <acute> <acute> <O> : "\325" Odoubleacute
-<Multi_key> <O> <quotedbl> : "\326" Odiaeresis
-<Multi_key> <quotedbl> <O> : "\326" Odiaeresis
-<Multi_key> <x> <x> : "\327" multiply
-<Multi_key> <R> <less> : "\330" Rcaron
-<Multi_key> <less> <R> : "\330" Rcaron
-<Multi_key> <R> <caron> : "\330" Rcaron
-<Multi_key> <caron> <R> : "\330" Rcaron
-<Multi_key> <U> <asterisk> : "\331" Uring
-<Multi_key> <asterisk> <U> : "\331" Uring
-<Multi_key> <U> <acute> : "\332" Uacute
-<Multi_key> <acute> <U> : "\332" Uacute
-<Multi_key> <U> <apostrophe> : "\332" Uacute
-<Multi_key> <apostrophe> <U> : "\332" Uacute
-<Multi_key> <apostrophe> <apostrophe> <U> : "\333" Udoubleacute
-<Multi_key> <acute> <acute> <U> : "\333" Udoubleacute
-<Multi_key> <U> <quotedbl> : "\334" Udiaeresis
-<Multi_key> <quotedbl> <U> : "\334" Udiaeresis
-<Multi_key> <Y> <acute> : "\335" Yacute
-<Multi_key> <acute> <Y> : "\335" Yacute
-<Multi_key> <Y> <apostrophe> : "\335" Yacute
-<Multi_key> <apostrophe> <Y> : "\335" Yacute
-<Multi_key> <T> <comma> : "\336" Tcedilla
-<Multi_key> <comma> <T> : "\336" Tcedilla
-<Multi_key> <T> <cedilla> : "\336" Tcedilla
-<Multi_key> <cedilla> <T> : "\336" Tcedilla
-<Multi_key> <s> <s> : "\337" ssharp
-<Multi_key> <r> <acute> : "\340" racute
-<Multi_key> <acute> <r> : "\340" racute
-<Multi_key> <r> <apostrophe> : "\340" racute
-<Multi_key> <apostrophe> <r> : "\340" racute
-<Multi_key> <a> <acute> : "\341" aacute
-<Multi_key> <acute> <a> : "\341" aacute
-<Multi_key> <a> <apostrophe> : "\341" aacute
-<Multi_key> <apostrophe> <a> : "\341" aacute
-<Multi_key> <a> <asciicircum> : "\342" acircumflex
-<Multi_key> <asciicircum> <a> : "\342" acircumflex
-<Multi_key> <a> <greater> : "\342" acircumflex
-<Multi_key> <greater> <a> : "\342" acircumflex
-<Multi_key> <a> <U> : "\343" abreve
-<Multi_key> <a> <breve> : "\343" abreve
-<Multi_key> <breve> <a> : "\343" abreve
-<Multi_key> <a> <quotedbl> : "\344" adiaeresis
-<Multi_key> <quotedbl> <a> : "\344" adiaeresis
-<Multi_key> <l> <acute> : "\345" lacute
-<Multi_key> <acute> <l> : "\345" lacute
-<Multi_key> <l> <apostrophe> : "\345" lacute
-<Multi_key> <apostrophe> <l> : "\345" lacute
-<Multi_key> <c> <acute> : "\346" cacute
-<Multi_key> <acute> <c> : "\346" cacute
-<Multi_key> <c> <apostrophe> : "\346" cacute
-<Multi_key> <apostrophe> <c> : "\346" cacute
-<Multi_key> <c> <comma> : "\347" ccedilla
-<Multi_key> <comma> <c> : "\347" ccedilla
-<Multi_key> <c> <cedilla> : "\347" ccedilla
-<Multi_key> <cedilla> <c> : "\347" ccedilla
-<Multi_key> <c> <less> : "\350" ccaron
-<Multi_key> <less> <c> : "\350" ccaron
-<Multi_key> <c> <caron> : "\350" ccaron
-<Multi_key> <caron> <c> : "\350" ccaron
-<Multi_key> <e> <acute> : "\351" eacute
-<Multi_key> <acute> <e> : "\351" eacute
-<Multi_key> <e> <apostrophe> : "\351" eacute
-<Multi_key> <apostrophe> <e> : "\351" eacute
-<Multi_key> <e> <comma> : "\352" eogonek
-<Multi_key> <comma> <e> : "\352" eogonek
-<Multi_key> <e> <ogonek> : "\352" eogonek
-<Multi_key> <ogonek> <e> : "\352" eogonek
-<Multi_key> <e> <quotedbl> : "\353" ediaeresis
-<Multi_key> <quotedbl> <e> : "\353" ediaeresis
-<Multi_key> <e> <less> : "\354" ecaron
-<Multi_key> <less> <e> : "\354" ecaron
-<Multi_key> <e> <caron> : "\354" ecaron
-<Multi_key> <caron> <e> : "\354" ecaron
-<Multi_key> <i> <acute> : "\355" iacute
-<Multi_key> <acute> <i> : "\355" iacute
-<Multi_key> <i> <apostrophe> : "\355" iacute
-<Multi_key> <apostrophe> <i> : "\355" iacute
-<Multi_key> <i> <asciicircum> : "\356" icircumflex
-<Multi_key> <asciicircum> <i> : "\356" icircumflex
-<Multi_key> <i> <greater> : "\356" icircumflex
-<Multi_key> <greater> <i> : "\356" icircumflex
-<Multi_key> <d> <less> : "\357" dcaron
-<Multi_key> <less> <d> : "\357" dcaron
-<Multi_key> <d> <caron> : "\357" dcaron
-<Multi_key> <caron> <d> : "\357" dcaron
-<Multi_key> <d> <minus> : "\360" dstroke
-<Multi_key> <minus> <d> : "\360" dstroke
-<Multi_key> <n> <acute> : "\361" nacute
-<Multi_key> <acute> <n> : "\361" nacute
-<Multi_key> <n> <apostrophe> : "\361" nacute
-<Multi_key> <apostrophe> <n> : "\361" nacute
-<Multi_key> <n> <less> : "\362" ncaron
-<Multi_key> <less> <n> : "\362" ncaron
-<Multi_key> <n> <caron> : "\362" ncaron
-<Multi_key> <caron> <n> : "\362" ncaron
-<Multi_key> <o> <acute> : "\363" oacute
-<Multi_key> <acute> <o> : "\363" oacute
-<Multi_key> <o> <apostrophe> : "\363" oacute
-<Multi_key> <apostrophe> <o> : "\363" oacute
-<Multi_key> <o> <asciicircum> : "\364" ocircumflex
-<Multi_key> <asciicircum> <o> : "\364" ocircumflex
-<Multi_key> <o> <greater> : "\364" ocircumflex
-<Multi_key> <greater> <o> : "\364" ocircumflex
-<Multi_key> <apostrophe> <apostrophe> <o> : "\365" odoubleacute
-<Multi_key> <acute> <acute> <o> : "\365" odoubleacute
-<Multi_key> <o> <quotedbl> : "\366" odiaeresis
-<Multi_key> <quotedbl> <o> : "\366" odiaeresis
-<Multi_key> <minus> <colon> : "\367" division
-<Multi_key> <colon> <minus> : "\367" division
-<Multi_key> <r> <less> : "\370" rcaron
-<Multi_key> <less> <r> : "\370" rcaron
-<Multi_key> <r> <caron> : "\370" rcaron
-<Multi_key> <caron> <r> : "\370" rcaron
-<Multi_key> <u> <asterisk> : "\371" uring
-<Multi_key> <asterisk> <u> : "\371" uring
-<Multi_key> <u> <acute> : "\372" uacute
-<Multi_key> <acute> <u> : "\372" uacute
-<Multi_key> <u> <apostrophe> : "\372" uacute
-<Multi_key> <apostrophe> <u> : "\372" uacute
-<Multi_key> <apostrophe> <apostrophe> <u> : "\373" udoubleacute
-<Multi_key> <acute> <acute> <u> : "\373" udoubleacute
-<Multi_key> <u> <quotedbl> : "\374" udiaeresis
-<Multi_key> <quotedbl> <u> : "\374" udiaeresis
-<Multi_key> <y> <acute> : "\375" yacute
-<Multi_key> <acute> <y> : "\375" yacute
-<Multi_key> <y> <apostrophe> : "\375" yacute
-<Multi_key> <apostrophe> <y> : "\375" yacute
-<Multi_key> <t> <comma> : "\376" tcedilla
-<Multi_key> <comma> <t> : "\376" tcedilla
-<Multi_key> <t> <cedilla> : "\376" tcedilla
-<Multi_key> <cedilla> <t> : "\376" tcedilla
-<Multi_key> <period> <period> : "\377" abovedot
-<dead_acute> <A> : "\301" Aacute
-<dead_acute> <C> : "\306" Cacute
-<dead_acute> <E> : "\311" Eacute
-<dead_acute> <I> : "\315" Iacute
-<dead_acute> <L> : "\305" Lacute
-<dead_acute> <N> : "\321" Nacute
-<dead_acute> <O> : "\323" Oacute
-<dead_acute> <R> : "\300" Racute
-<dead_acute> <S> : "\246" Sacute
-<dead_acute> <U> : "\332" Uacute
-<dead_acute> <Y> : "\335" Yacute
-<dead_acute> <Z> : "\254" Zacute
-<dead_acute> <a> : "\341" aacute
-<dead_acute> <c> : "\346" cacute
-<dead_acute> <e> : "\351" eacute
-<dead_acute> <i> : "\355" iacute
-<dead_acute> <l> : "\345" lacute
-<dead_acute> <n> : "\361" nacute
-<dead_acute> <o> : "\363" oacute
-<dead_acute> <r> : "\340" racute
-<dead_acute> <s> : "\266" sacute
-<dead_acute> <u> : "\372" uacute
-<dead_acute> <y> : "\375" yacute
-<dead_acute> <z> : "\274" zacute
-<dead_breve> <A> : "\303" Abreve
-<dead_breve> <a> : "\343" abreve
-<dead_diaeresis> <A> : "\304" Adiaeresis
-<dead_diaeresis> <E> : "\313" Ediaeresis
-<dead_diaeresis> <O> : "\326" Odiaeresis
-<dead_diaeresis> <U> : "\334" Udiaeresis
-<dead_diaeresis> <a> : "\344" adiaeresis
-<dead_diaeresis> <e> : "\353" ediaeresis
-<dead_diaeresis> <o> : "\366" odiaeresis
-<dead_diaeresis> <u> : "\374" udiaeresis
-<dead_abovering> <U> : "\331" Uring
-<dead_abovering> <u> : "\371" uring
-<dead_doubleacute> <O> : "\325" Odoubleacute
-<dead_doubleacute> <U> : "\333" Udoubleacute
-<dead_doubleacute> <o> : "\365" odoubleacute
-<dead_doubleacute> <u> : "\373" udoubleacute
-<dead_caron> <C> : "\310" Ccaron
-<dead_caron> <D> : "\317" Dcaron
-<dead_caron> <E> : "\314" Ecaron
-<dead_caron> <L> : "\245" Lcaron
-<dead_caron> <N> : "\322" Ncaron
-<dead_caron> <R> : "\330" Rcaron
-<dead_caron> <S> : "\251" Scaron
-<dead_caron> <T> : "\253" Tcaron
-<dead_caron> <Z> : "\256" Zcaron
-<dead_caron> <c> : "\350" ccaron
-<dead_caron> <d> : "\357" dcaron
-<dead_caron> <e> : "\354" ecaron
-<dead_caron> <l> : "\265" lcaron
-<dead_caron> <n> : "\362" ncaron
-<dead_caron> <r> : "\370" rcaron
-<dead_caron> <s> : "\271" scaron
-<dead_caron> <t> : "\273" tcaron
-<dead_caron> <z> : "\276" zcaron
-<dead_cedilla> <S> : "\252" Scedilla
-<dead_cedilla> <C> : "\307" Ccedilla
-<dead_cedilla> <T> : "\336" Tcedilla
-<dead_cedilla> <c> : "\347" ccedilla
-<dead_cedilla> <s> : "\272" scedilla
-<dead_cedilla> <t> : "\376" tcedilla
-XCOMM those are for ease of use
-<dead_abovedot> <U> : "\331" Uring
-<dead_abovedot> <u> : "\371" uring
-<dead_caron> <U> : "\331" Uring
-<dead_caron> <u> : "\371" uring
-XCOMM traditional sequences
-<Multi_key> <O> <E> : "\274" OE
-<Multi_key> <o> <e> : "\275" oe
-<dead_abovering> <A> : "\305" Aring
-<dead_abovering> <a> : "\345" aring
-<dead_abovering> <dead_abovering> : "\260" degree
-<dead_abovering> <degree> : "\260" degree
-<dead_abovering> <space> : "\260" degree
-<dead_abovering> <nobreakspace> : "\260" degree
-<dead_tilde> <I> : "\245" Itilde
-<dead_tilde> <i> : "\265" itilde
-<dead_tilde> <A> : "\303" Atilde
-<dead_tilde> <O> : "\325" Otilde
-<dead_tilde> <U> : "\335" Utilde
-<dead_tilde> <a> : "\343" atilde
-<dead_tilde> <o> : "\365" otilde
-<dead_tilde> <u> : "\375" utilde
-<dead_tilde> <N> : "\321" Ntilde
-<dead_tilde> <n> : "\361" ntilde
-<dead_tilde> <dead_tilde> : "~" asciitilde
-<dead_tilde> <asciitilde> : "~" asciitilde
-<dead_tilde> <space> : "~" asciitilde
-<dead_tilde> <nobreakspace> : "~" asciitilde
-<dead_caron> <caron> : "\267" caron
-<dead_caron> <dead_caron> : "\267" caron
-<dead_caron> <space> : "\267" caron
-<dead_caron> <nobreakspace> : "\267" caron
-<dead_circumflex> <A> : "\302" Acircumflex
-<dead_circumflex> <I> : "\316" Icircumflex
-<dead_circumflex> <O> : "\324" Ocircumflex
-<dead_circumflex> <U> : "\333" Ucircumflex
-<dead_circumflex> <a> : "\342" acircumflex
-<dead_circumflex> <i> : "\356" icircumflex
-<dead_circumflex> <o> : "\364" ocircumflex
-<dead_circumflex> <u> : "\373" ucircumflex
-<dead_circumflex> <dead_circumflex> : "\136" asciicircum
-<dead_circumflex> <asciicircum> : "\136" asciicircum
-<dead_circumflex> <space> : "\136" asciicircum
-<dead_circumflex> <nobreakspace> : "\136" asciicircum
-<dead_breve> <G> : "\253" Gbreve
-<dead_breve> <g> : "\273" gbreve
-<dead_breve> <U> : "\335" Ubreve
-<dead_breve> <u> : "\375" ubreve
-<dead_breve> <dead_breve> : "\242" breve
-<dead_breve> <breve> : "\242" breve
-<dead_breve> <space> : "\242" breve
-<dead_breve> <nobreakspace> : "\242" breve
-<dead_ogonek> <A> : "\241" Aogonek
-<dead_ogonek> <I> : "\307" Iogonek
-<dead_ogonek> <E> : "\312" Eogonek
-<dead_ogonek> <U> : "\331" Uogonek
-<dead_ogonek> <a> : "\261" aogonek
-<dead_ogonek> <i> : "\347" iogonek
-<dead_ogonek> <e> : "\352" eogonek
-<dead_ogonek> <u> : "\371" uogonek
-<dead_ogonek> <dead_ogonek> : "\662" ogonek
-<dead_ogonek> <ogonek> : "\662" ogonek
-<dead_ogonek> <space> : "\662" ogonek
-<dead_ogonek> <nobreakspace> : "\662" ogonek
-<dead_grave> <A> : "\300" Agrave
-<dead_grave> <a> : "\340" agrave
-<dead_grave> <E> : "\310" Egrave
-<dead_grave> <e> : "\350" egrave
-<dead_grave> <I> : "\314" Igrave
-<dead_grave> <i> : "\354" igrave
-<dead_grave> <O> : "\322" Ograve
-<dead_grave> <o> : "\362" ograve
-<dead_grave> <U> : "\331" Ugrave
-<dead_grave> <u> : "\371" ugrave
-<dead_grave> <dead_grave> : "`" grave
-<dead_grave> <grave> : "`" grave
-<dead_grave> <space> : "`" grave
-<dead_grave> <nobreakspace> : "`" grave
-<dead_abovedot> <C> : "\305" Cabovedot
-<dead_abovedot> <c> : "\345" cabovedot
-<dead_abovedot> <I> : "\251" Iabovedot
-<dead_abovedot> <i> : "\271" idotless
-<dead_abovedot> <Z> : "\257" Zabovedot
-<dead_abovedot> <z> : "\277" zabovedot
-<dead_abovedot> <E> : "\314" Eabovedot
-<dead_abovedot> <e> : "\354" eabovedot
-<dead_abovedot> <dead_abovedot> : "\377" abovedot
-<dead_abovedot> <abovedot> : "\377" abovedot
-<dead_abovedot> <space> : "\377" abovedot
-<dead_abovedot> <nobreakspace> : "\377" abovedot
-<dead_acute> <dead_acute> : "\264" acute
-<dead_acute> <acute> : "\264" acute
-<dead_acute> <space> : "\264" acute
-<dead_acute> <nobreakspace> : "\264" acute
-<dead_doubleacute> <dead_doubleacute> : "\675" doubleacute
-<dead_doubleacute> <doubleacute> : "\675" doubleacute
-<dead_doubleacute> <space> : "\675" doubleacute
-<dead_doubleacute> <nobreakspace> : "\675" doubleacute
-<dead_diaeresis> <I> : "\317" Idiaeresis
-<dead_diaeresis> <i> : "\357" idiaeresis
-<dead_diaeresis> <y> : "\377" ydiaeresis
-<dead_diaeresis> <dead_diaeresis> : "\250" diaeresis
-<dead_diaeresis> <diaeresis> : "\250" diaeresis
-<dead_diaeresis> <space> : "\250" diaeresis
-<dead_diaeresis> <nobreakspace> : "\250" diaeresis
-<dead_cedilla> <dead_cedilla> : "\270" cedilla
-<dead_cedilla> <cedilla> : "\270" cedilla
-<dead_cedilla> <space> : "\270" cedilla
-<dead_cedilla> <nobreakspace> : "\270" cedilla
-<dead_macron> <dead_macron> : "\257" macron
-<dead_macron> <macron> : "\257" macron
-<dead_macron> <space> : "\257" macron
-<dead_macron> <nobreakspace> : "\257" macron
-XCOMM End of Sequence Definition
+XCOMM
+XCOMM ISO 8859-2 (Latin2) Compose Sequence
+XCOMM
+XCOMM
+XCOMM Sequence Definition
+XCOMM
+XCOMM <Multi_key> Means <Compose>
+XCOMM Special Character
+<Multi_key> <plus> <plus> : "#" numbersign
+<Multi_key> <apostrophe> <space> : "'" apostrophe
+<Multi_key> <space> <apostrophe> : "'" apostrophe
+<Multi_key> <A> <A> : "@" at
+<Multi_key> <parenleft> <parenleft> : "[" bracketleft
+<Multi_key> <slash> <slash> : "\\" backslash
+<Multi_key> <slash> <less> : "\\" backslash
+<Multi_key> <less> <slash> : "\\" backslash
+<Multi_key> <parenright> <parenright> : "]" bracketright
+<Multi_key> <asciicircum> <space> : "^" asciicircum
+<Multi_key> <space> <asciicircum> : "^" asciicircum
+<Multi_key> <greater> <space> : "^" asciicircum
+<Multi_key> <space> <greater> : "^" asciicircum
+<Multi_key> <grave> <space> : "`" grave
+<Multi_key> <space> <grave> : "`" grave
+<Multi_key> <parenleft> <minus> : "{" braceleft
+<Multi_key> <minus> <parenleft> : "{" braceleft
+<Multi_key> <slash> <asciicircum> : "|" bar
+<Multi_key> <asciicircum> <slash> : "|" bar
+<Multi_key> <V> <L> : "|" bar
+<Multi_key> <L> <V> : "|" bar
+<Multi_key> <v> <l> : "|" bar
+<Multi_key> <l> <v> : "|" bar
+<Multi_key> <parenright> <minus> : "}" braceright
+<Multi_key> <minus> <parenright> : "}" braceright
+<Multi_key> <asciitilde> <space> : "~" asciitilde
+<Multi_key> <space> <asciitilde> : "~" asciitilde
+<Multi_key> <minus> <space> : "~" asciitilde
+<Multi_key> <space> <minus> : "~" asciitilde
+<Multi_key> <x> <o> : "\244" currency
+<Multi_key> <o> <x> : "\244" currency
+<Multi_key> <X> <O> : "\244" currency
+<Multi_key> <O> <X> : "\244" currency
+<Multi_key> <x> <O> : "\244" currency
+<Multi_key> <O> <x> : "\244" currency
+<Multi_key> <X> <o> : "\244" currency
+<Multi_key> <o> <X> : "\244" currency
+<Multi_key> <x> <0> : "\244" currency
+<Multi_key> <0> <x> : "\244" currency
+<Multi_key> <X> <0> : "\244" currency
+<Multi_key> <0> <X> : "\244" currency
+<Multi_key> <p> <exclam> : "\266" paragraph
+<Multi_key> <exclam> <p> : "\266" paragraph
+<Multi_key> <P> <exclam> : "\266" paragraph
+<Multi_key> <exclam> <P> : "\266" paragraph
+XCOMM Right-hand side (Accented Alphabet)
+XCOMM These compose sequences are pure supposition on my part.
+XCOMM It would be nice to know what the real cultural conventions
+XCOMM are for compose sequences.
+<Multi_key> <A> <comma> : "\241" Aogonek
+<Multi_key> <comma> <A> : "\241" Aogonek
+<Multi_key> <A> <ogonek> : "\241" Aogonek
+<Multi_key> <ogonek> <A> : "\241" Aogonek
+<Multi_key> <U> <space> : "\242" breve
+<Multi_key> <L> <minus> : "\243" Lstroke
+<Multi_key> <L> <less> : "\245" Lcaron
+<Multi_key> <less> <L> : "\245" Lcaron
+<Multi_key> <L> <caron> : "\245" Lcaron
+<Multi_key> <caron> <L> : "\245" Lcaron
+<Multi_key> <S> <apostrophe> : "\246" Sacute
+<Multi_key> <apostrophe> <S> : "\246" Sacute
+<Multi_key> <S> <acute> : "\246" Sacute
+<Multi_key> <acute> <S> : "\246" Sacute
+<Multi_key> <s> <o> : "\247" section
+<Multi_key> <o> <s> : "\247" section
+<Multi_key> <S> <O> : "\247" section
+<Multi_key> <O> <S> : "\247" section
+<Multi_key> <S> <exclam> : "\247" section
+<Multi_key> <exclam> <S> : "\247" section
+<Multi_key> <s> <exclam> : "\247" section
+<Multi_key> <exclam> <s> : "\247" section
+<Multi_key> <S> <0> : "\247" section
+<Multi_key> <0> <S> : "\247" section
+<Multi_key> <s> <0> : "\247" section
+<Multi_key> <0> <s> : "\247" section
+<Multi_key> <quotedbl> <quotedbl> : "\250" diaeresis
+<Multi_key> <S> <less> : "\251" Scaron
+<Multi_key> <less> <S> : "\251" Scaron
+<Multi_key> <S> <caron> : "\251" Scaron
+<Multi_key> <caron> <S> : "\251" Scaron
+<Multi_key> <S> <comma> : "\252" Scedilla
+<Multi_key> <comma> <S> : "\252" Scedilla
+<Multi_key> <S> <cedilla> : "\252" Scedilla
+<Multi_key> <cedilla> <S> : "\252" Scedilla
+<Multi_key> <T> <less> : "\253" Tcaron
+<Multi_key> <less> <T> : "\253" Tcaron
+<Multi_key> <T> <caron> : "\253" Tcaron
+<Multi_key> <caron> <T> : "\253" Tcaron
+<Multi_key> <Z> <apostrophe> : "\254" Zacute
+<Multi_key> <apostrophe> <Z> : "\254" Zacute
+<Multi_key> <Z> <acute> : "\254" Zacute
+<Multi_key> <acute> <Z> : "\254" Zacute
+<Multi_key> <minus> <minus> : "\255" hyphen
+<Multi_key> <Z> <less> : "\256" Zcaron
+<Multi_key> <less> <Z> : "\256" Zcaron
+<Multi_key> <Z> <caron> : "\256" Zcaron
+<Multi_key> <caron> <Z> : "\256" Zcaron
+<Multi_key> <Z> <period> : "\257" Zabovedot
+<Multi_key> <0> <asterisk> : "\260" degree
+<Multi_key> <asterisk> <0> : "\260" degree
+<Multi_key> <a> <comma> : "\261" aogonek
+<Multi_key> <comma> <a> : "\261" aogonek
+<Multi_key> <a> <ogonek> : "\261" aogonek
+<Multi_key> <ogonek> <a> : "\261" aogonek
+<Multi_key> <l> <minus> : "\263" lstroke
+<Multi_key> <l> <less> : "\265" lcaron
+<Multi_key> <less> <l> : "\265" lcaron
+<Multi_key> <l> <caron> : "\265" lcaron
+<Multi_key> <caron> <l> : "\265" lcaron
+<Multi_key> <s> <apostrophe> : "\266" sacute
+<Multi_key> <apostrophe> <s> : "\266" sacute
+<Multi_key> <s> <acute> : "\266" sacute
+<Multi_key> <acute> <s> : "\266" sacute
+<Multi_key> <less> <less> : "\267" caron
+<Multi_key> <comma> <comma> : "\270" cedilla
+<Multi_key> <s> <less> : "\271" scaron
+<Multi_key> <less> <s> : "\271" scaron
+<Multi_key> <s> <caron> : "\271" scaron
+<Multi_key> <caron> <s> : "\271" scaron
+<Multi_key> <s> <comma> : "\272" scedilla
+<Multi_key> <comma> <s> : "\272" scedilla
+<Multi_key> <s> <cedilla> : "\272" scedilla
+<Multi_key> <cedilla> <s> : "\272" scedilla
+<Multi_key> <t> <less> : "\273" tcaron
+<Multi_key> <less> <t> : "\273" tcaron
+<Multi_key> <t> <caron> : "\273" tcaron
+<Multi_key> <caron> <t> : "\273" tcaron
+<Multi_key> <z> <apostrophe> : "\274" zacute
+<Multi_key> <apostrophe> <z> : "\274" zacute
+<Multi_key> <z> <acute> : "\274" zacute
+<Multi_key> <acute> <z> : "\274" zacute
+<Multi_key> <apostrophe> <apostrophe> <space> : "\275" doubleacute
+<Multi_key> <acute> <acute> <space> : "\275" doubleacute
+<Multi_key> <z> <less> : "\276" zcaron
+<Multi_key> <less> <z> : "\276" zcaron
+<Multi_key> <z> <caron> : "\276" zcaron
+<Multi_key> <caron> <z> : "\276" zcaron
+<Multi_key> <z> <period> : "\277" zabovedot
+<Multi_key> <R> <acute> : "\300" Racute
+<Multi_key> <acute> <R> : "\300" Racute
+<Multi_key> <R> <apostrophe> : "\300" Racute
+<Multi_key> <apostrophe> <R> : "\300" Racute
+<Multi_key> <A> <acute> : "\301" Aacute
+<Multi_key> <acute> <A> : "\301" Aacute
+<Multi_key> <A> <apostrophe> : "\301" Aacute
+<Multi_key> <apostrophe> <A> : "\301" Aacute
+<Multi_key> <A> <asciicircum> : "\302" Acircumflex
+<Multi_key> <asciicircum> <A> : "\302" Acircumflex
+<Multi_key> <A> <greater> : "\302" Acircumflex
+<Multi_key> <greater> <A> : "\302" Acircumflex
+<Multi_key> <A> <U> : "\303" Abreve
+<Multi_key> <A> <breve> : "\303" Abreve
+<Multi_key> <breve> <A> : "\303" Abreve
+<Multi_key> <A> <quotedbl> : "\304" Adiaeresis
+<Multi_key> <quotedbl> <A> : "\304" Adiaeresis
+<Multi_key> <L> <acute> : "\305" Lacute
+<Multi_key> <acute> <L> : "\305" Lacute
+<Multi_key> <L> <apostrophe> : "\305" Lacute
+<Multi_key> <apostrophe> <L> : "\305" Lacute
+<Multi_key> <C> <acute> : "\306" Cacute
+<Multi_key> <acute> <C> : "\306" Cacute
+<Multi_key> <C> <apostrophe> : "\306" Cacute
+<Multi_key> <apostrophe> <C> : "\306" Cacute
+<Multi_key> <C> <comma> : "\307" Ccedilla
+<Multi_key> <comma> <C> : "\307" Ccedilla
+<Multi_key> <C> <cedilla> : "\307" Ccedilla
+<Multi_key> <cedilla> <C> : "\307" Ccedilla
+<Multi_key> <C> <less> : "\310" Ccaron
+<Multi_key> <less> <C> : "\310" Ccaron
+<Multi_key> <C> <caron> : "\310" Ccaron
+<Multi_key> <caron> <C> : "\310" Ccaron
+<Multi_key> <E> <acute> : "\311" Eacute
+<Multi_key> <acute> <E> : "\311" Eacute
+<Multi_key> <E> <apostrophe> : "\311" Eacute
+<Multi_key> <apostrophe> <E> : "\311" Eacute
+<Multi_key> <E> <comma> : "\312" Eogonek
+<Multi_key> <comma> <E> : "\312" Eogonek
+<Multi_key> <E> <ogonek> : "\312" Eogonek
+<Multi_key> <ogonek> <E> : "\312" Eogonek
+<Multi_key> <E> <quotedbl> : "\313" Ediaeresis
+<Multi_key> <quotedbl> <E> : "\313" Ediaeresis
+<Multi_key> <E> <less> : "\314" Ecaron
+<Multi_key> <less> <E> : "\314" Ecaron
+<Multi_key> <E> <caron> : "\314" Ecaron
+<Multi_key> <caron> <E> : "\314" Ecaron
+<Multi_key> <I> <acute> : "\315" Iacute
+<Multi_key> <acute> <I> : "\315" Iacute
+<Multi_key> <I> <apostrophe> : "\315" Iacute
+<Multi_key> <apostrophe> <I> : "\315" Iacute
+<Multi_key> <I> <asciicircum> : "\316" Icircumflex
+<Multi_key> <asciicircum> <I> : "\316" Icircumflex
+<Multi_key> <I> <greater> : "\316" Icircumflex
+<Multi_key> <greater> <I> : "\316" Icircumflex
+<Multi_key> <D> <less> : "\317" Dcaron
+<Multi_key> <less> <D> : "\317" Dcaron
+<Multi_key> <D> <caron> : "\317" Dcaron
+<Multi_key> <caron> <D> : "\317" Dcaron
+<Multi_key> <D> <minus> : "\320" Dstroke
+<Multi_key> <minus> <D> : "\320" Dstroke
+<Multi_key> <N> <acute> : "\321" Nacute
+<Multi_key> <acute> <N> : "\321" Nacute
+<Multi_key> <N> <apostrophe> : "\321" Nacute
+<Multi_key> <apostrophe> <N> : "\321" Nacute
+<Multi_key> <N> <less> : "\322" Ncaron
+<Multi_key> <less> <N> : "\322" Ncaron
+<Multi_key> <N> <caron> : "\322" Ncaron
+<Multi_key> <caron> <N> : "\322" Ncaron
+<Multi_key> <O> <acute> : "\323" Oacute
+<Multi_key> <acute> <O> : "\323" Oacute
+<Multi_key> <O> <apostrophe> : "\323" Oacute
+<Multi_key> <apostrophe> <O> : "\323" Oacute
+<Multi_key> <O> <asciicircum> : "\324" Ocircumflex
+<Multi_key> <asciicircum> <O> : "\324" Ocircumflex
+<Multi_key> <O> <greater> : "\324" Ocircumflex
+<Multi_key> <greater> <O> : "\324" Ocircumflex
+<Multi_key> <apostrophe> <apostrophe> <O> : "\325" Odoubleacute
+<Multi_key> <acute> <acute> <O> : "\325" Odoubleacute
+<Multi_key> <O> <quotedbl> : "\326" Odiaeresis
+<Multi_key> <quotedbl> <O> : "\326" Odiaeresis
+<Multi_key> <x> <x> : "\327" multiply
+<Multi_key> <R> <less> : "\330" Rcaron
+<Multi_key> <less> <R> : "\330" Rcaron
+<Multi_key> <R> <caron> : "\330" Rcaron
+<Multi_key> <caron> <R> : "\330" Rcaron
+<Multi_key> <U> <asterisk> : "\331" Uring
+<Multi_key> <asterisk> <U> : "\331" Uring
+<Multi_key> <U> <acute> : "\332" Uacute
+<Multi_key> <acute> <U> : "\332" Uacute
+<Multi_key> <U> <apostrophe> : "\332" Uacute
+<Multi_key> <apostrophe> <U> : "\332" Uacute
+<Multi_key> <apostrophe> <apostrophe> <U> : "\333" Udoubleacute
+<Multi_key> <acute> <acute> <U> : "\333" Udoubleacute
+<Multi_key> <U> <quotedbl> : "\334" Udiaeresis
+<Multi_key> <quotedbl> <U> : "\334" Udiaeresis
+<Multi_key> <Y> <acute> : "\335" Yacute
+<Multi_key> <acute> <Y> : "\335" Yacute
+<Multi_key> <Y> <apostrophe> : "\335" Yacute
+<Multi_key> <apostrophe> <Y> : "\335" Yacute
+<Multi_key> <T> <comma> : "\336" Tcedilla
+<Multi_key> <comma> <T> : "\336" Tcedilla
+<Multi_key> <T> <cedilla> : "\336" Tcedilla
+<Multi_key> <cedilla> <T> : "\336" Tcedilla
+<Multi_key> <s> <s> : "\337" ssharp
+<Multi_key> <r> <acute> : "\340" racute
+<Multi_key> <acute> <r> : "\340" racute
+<Multi_key> <r> <apostrophe> : "\340" racute
+<Multi_key> <apostrophe> <r> : "\340" racute
+<Multi_key> <a> <acute> : "\341" aacute
+<Multi_key> <acute> <a> : "\341" aacute
+<Multi_key> <a> <apostrophe> : "\341" aacute
+<Multi_key> <apostrophe> <a> : "\341" aacute
+<Multi_key> <a> <asciicircum> : "\342" acircumflex
+<Multi_key> <asciicircum> <a> : "\342" acircumflex
+<Multi_key> <a> <greater> : "\342" acircumflex
+<Multi_key> <greater> <a> : "\342" acircumflex
+<Multi_key> <a> <U> : "\343" abreve
+<Multi_key> <a> <breve> : "\343" abreve
+<Multi_key> <breve> <a> : "\343" abreve
+<Multi_key> <a> <quotedbl> : "\344" adiaeresis
+<Multi_key> <quotedbl> <a> : "\344" adiaeresis
+<Multi_key> <l> <acute> : "\345" lacute
+<Multi_key> <acute> <l> : "\345" lacute
+<Multi_key> <l> <apostrophe> : "\345" lacute
+<Multi_key> <apostrophe> <l> : "\345" lacute
+<Multi_key> <c> <acute> : "\346" cacute
+<Multi_key> <acute> <c> : "\346" cacute
+<Multi_key> <c> <apostrophe> : "\346" cacute
+<Multi_key> <apostrophe> <c> : "\346" cacute
+<Multi_key> <c> <comma> : "\347" ccedilla
+<Multi_key> <comma> <c> : "\347" ccedilla
+<Multi_key> <c> <cedilla> : "\347" ccedilla
+<Multi_key> <cedilla> <c> : "\347" ccedilla
+<Multi_key> <c> <less> : "\350" ccaron
+<Multi_key> <less> <c> : "\350" ccaron
+<Multi_key> <c> <caron> : "\350" ccaron
+<Multi_key> <caron> <c> : "\350" ccaron
+<Multi_key> <e> <acute> : "\351" eacute
+<Multi_key> <acute> <e> : "\351" eacute
+<Multi_key> <e> <apostrophe> : "\351" eacute
+<Multi_key> <apostrophe> <e> : "\351" eacute
+<Multi_key> <e> <comma> : "\352" eogonek
+<Multi_key> <comma> <e> : "\352" eogonek
+<Multi_key> <e> <ogonek> : "\352" eogonek
+<Multi_key> <ogonek> <e> : "\352" eogonek
+<Multi_key> <e> <quotedbl> : "\353" ediaeresis
+<Multi_key> <quotedbl> <e> : "\353" ediaeresis
+<Multi_key> <e> <less> : "\354" ecaron
+<Multi_key> <less> <e> : "\354" ecaron
+<Multi_key> <e> <caron> : "\354" ecaron
+<Multi_key> <caron> <e> : "\354" ecaron
+<Multi_key> <i> <acute> : "\355" iacute
+<Multi_key> <acute> <i> : "\355" iacute
+<Multi_key> <i> <apostrophe> : "\355" iacute
+<Multi_key> <apostrophe> <i> : "\355" iacute
+<Multi_key> <i> <asciicircum> : "\356" icircumflex
+<Multi_key> <asciicircum> <i> : "\356" icircumflex
+<Multi_key> <i> <greater> : "\356" icircumflex
+<Multi_key> <greater> <i> : "\356" icircumflex
+<Multi_key> <d> <less> : "\357" dcaron
+<Multi_key> <less> <d> : "\357" dcaron
+<Multi_key> <d> <caron> : "\357" dcaron
+<Multi_key> <caron> <d> : "\357" dcaron
+<Multi_key> <d> <minus> : "\360" dstroke
+<Multi_key> <minus> <d> : "\360" dstroke
+<Multi_key> <n> <acute> : "\361" nacute
+<Multi_key> <acute> <n> : "\361" nacute
+<Multi_key> <n> <apostrophe> : "\361" nacute
+<Multi_key> <apostrophe> <n> : "\361" nacute
+<Multi_key> <n> <less> : "\362" ncaron
+<Multi_key> <less> <n> : "\362" ncaron
+<Multi_key> <n> <caron> : "\362" ncaron
+<Multi_key> <caron> <n> : "\362" ncaron
+<Multi_key> <o> <acute> : "\363" oacute
+<Multi_key> <acute> <o> : "\363" oacute
+<Multi_key> <o> <apostrophe> : "\363" oacute
+<Multi_key> <apostrophe> <o> : "\363" oacute
+<Multi_key> <o> <asciicircum> : "\364" ocircumflex
+<Multi_key> <asciicircum> <o> : "\364" ocircumflex
+<Multi_key> <o> <greater> : "\364" ocircumflex
+<Multi_key> <greater> <o> : "\364" ocircumflex
+<Multi_key> <apostrophe> <apostrophe> <o> : "\365" odoubleacute
+<Multi_key> <acute> <acute> <o> : "\365" odoubleacute
+<Multi_key> <o> <quotedbl> : "\366" odiaeresis
+<Multi_key> <quotedbl> <o> : "\366" odiaeresis
+<Multi_key> <minus> <colon> : "\367" division
+<Multi_key> <colon> <minus> : "\367" division
+<Multi_key> <r> <less> : "\370" rcaron
+<Multi_key> <less> <r> : "\370" rcaron
+<Multi_key> <r> <caron> : "\370" rcaron
+<Multi_key> <caron> <r> : "\370" rcaron
+<Multi_key> <u> <asterisk> : "\371" uring
+<Multi_key> <asterisk> <u> : "\371" uring
+<Multi_key> <u> <acute> : "\372" uacute
+<Multi_key> <acute> <u> : "\372" uacute
+<Multi_key> <u> <apostrophe> : "\372" uacute
+<Multi_key> <apostrophe> <u> : "\372" uacute
+<Multi_key> <apostrophe> <apostrophe> <u> : "\373" udoubleacute
+<Multi_key> <acute> <acute> <u> : "\373" udoubleacute
+<Multi_key> <u> <quotedbl> : "\374" udiaeresis
+<Multi_key> <quotedbl> <u> : "\374" udiaeresis
+<Multi_key> <y> <acute> : "\375" yacute
+<Multi_key> <acute> <y> : "\375" yacute
+<Multi_key> <y> <apostrophe> : "\375" yacute
+<Multi_key> <apostrophe> <y> : "\375" yacute
+<Multi_key> <t> <comma> : "\376" tcedilla
+<Multi_key> <comma> <t> : "\376" tcedilla
+<Multi_key> <t> <cedilla> : "\376" tcedilla
+<Multi_key> <cedilla> <t> : "\376" tcedilla
+<Multi_key> <period> <period> : "\377" abovedot
+<dead_acute> <A> : "\301" Aacute
+<dead_acute> <C> : "\306" Cacute
+<dead_acute> <E> : "\311" Eacute
+<dead_acute> <I> : "\315" Iacute
+<dead_acute> <L> : "\305" Lacute
+<dead_acute> <N> : "\321" Nacute
+<dead_acute> <O> : "\323" Oacute
+<dead_acute> <R> : "\300" Racute
+<dead_acute> <S> : "\246" Sacute
+<dead_acute> <U> : "\332" Uacute
+<dead_acute> <Y> : "\335" Yacute
+<dead_acute> <Z> : "\254" Zacute
+<dead_acute> <a> : "\341" aacute
+<dead_acute> <c> : "\346" cacute
+<dead_acute> <e> : "\351" eacute
+<dead_acute> <i> : "\355" iacute
+<dead_acute> <l> : "\345" lacute
+<dead_acute> <n> : "\361" nacute
+<dead_acute> <o> : "\363" oacute
+<dead_acute> <r> : "\340" racute
+<dead_acute> <s> : "\266" sacute
+<dead_acute> <u> : "\372" uacute
+<dead_acute> <y> : "\375" yacute
+<dead_acute> <z> : "\274" zacute
+<dead_breve> <A> : "\303" Abreve
+<dead_breve> <a> : "\343" abreve
+<dead_diaeresis> <A> : "\304" Adiaeresis
+<dead_diaeresis> <E> : "\313" Ediaeresis
+<dead_diaeresis> <O> : "\326" Odiaeresis
+<dead_diaeresis> <U> : "\334" Udiaeresis
+<dead_diaeresis> <a> : "\344" adiaeresis
+<dead_diaeresis> <e> : "\353" ediaeresis
+<dead_diaeresis> <o> : "\366" odiaeresis
+<dead_diaeresis> <u> : "\374" udiaeresis
+<dead_abovering> <U> : "\331" Uring
+<dead_abovering> <u> : "\371" uring
+<dead_doubleacute> <O> : "\325" Odoubleacute
+<dead_doubleacute> <U> : "\333" Udoubleacute
+<dead_doubleacute> <o> : "\365" odoubleacute
+<dead_doubleacute> <u> : "\373" udoubleacute
+<dead_caron> <C> : "\310" Ccaron
+<dead_caron> <D> : "\317" Dcaron
+<dead_caron> <E> : "\314" Ecaron
+<dead_caron> <L> : "\245" Lcaron
+<dead_caron> <N> : "\322" Ncaron
+<dead_caron> <R> : "\330" Rcaron
+<dead_caron> <S> : "\251" Scaron
+<dead_caron> <T> : "\253" Tcaron
+<dead_caron> <Z> : "\256" Zcaron
+<dead_caron> <c> : "\350" ccaron
+<dead_caron> <d> : "\357" dcaron
+<dead_caron> <e> : "\354" ecaron
+<dead_caron> <l> : "\265" lcaron
+<dead_caron> <n> : "\362" ncaron
+<dead_caron> <r> : "\370" rcaron
+<dead_caron> <s> : "\271" scaron
+<dead_caron> <t> : "\273" tcaron
+<dead_caron> <z> : "\276" zcaron
+<dead_cedilla> <S> : "\252" Scedilla
+<dead_cedilla> <C> : "\307" Ccedilla
+<dead_cedilla> <T> : "\336" Tcedilla
+<dead_cedilla> <c> : "\347" ccedilla
+<dead_cedilla> <s> : "\272" scedilla
+<dead_cedilla> <t> : "\376" tcedilla
+XCOMM those are for ease of use
+<dead_abovedot> <U> : "\331" Uring
+<dead_abovedot> <u> : "\371" uring
+<dead_caron> <U> : "\331" Uring
+<dead_caron> <u> : "\371" uring
+XCOMM traditional sequences
+<Multi_key> <O> <E> : "\274" OE
+<Multi_key> <o> <e> : "\275" oe
+<dead_abovering> <A> : "\305" Aring
+<dead_abovering> <a> : "\345" aring
+<dead_abovering> <dead_abovering> : "\260" degree
+<dead_abovering> <degree> : "\260" degree
+<dead_abovering> <space> : "\260" degree
+<dead_abovering> <nobreakspace> : "\260" degree
+<dead_tilde> <I> : "\245" Itilde
+<dead_tilde> <i> : "\265" itilde
+<dead_tilde> <A> : "\303" Atilde
+<dead_tilde> <O> : "\325" Otilde
+<dead_tilde> <U> : "\335" Utilde
+<dead_tilde> <a> : "\343" atilde
+<dead_tilde> <o> : "\365" otilde
+<dead_tilde> <u> : "\375" utilde
+<dead_tilde> <N> : "\321" Ntilde
+<dead_tilde> <n> : "\361" ntilde
+<dead_tilde> <dead_tilde> : "~" asciitilde
+<dead_tilde> <asciitilde> : "~" asciitilde
+<dead_tilde> <space> : "~" asciitilde
+<dead_tilde> <nobreakspace> : "~" asciitilde
+<dead_caron> <caron> : "\267" caron
+<dead_caron> <dead_caron> : "\267" caron
+<dead_caron> <space> : "\267" caron
+<dead_caron> <nobreakspace> : "\267" caron
+<dead_circumflex> <A> : "\302" Acircumflex
+<dead_circumflex> <I> : "\316" Icircumflex
+<dead_circumflex> <O> : "\324" Ocircumflex
+<dead_circumflex> <U> : "\333" Ucircumflex
+<dead_circumflex> <a> : "\342" acircumflex
+<dead_circumflex> <i> : "\356" icircumflex
+<dead_circumflex> <o> : "\364" ocircumflex
+<dead_circumflex> <u> : "\373" ucircumflex
+<dead_circumflex> <dead_circumflex> : "\136" asciicircum
+<dead_circumflex> <asciicircum> : "\136" asciicircum
+<dead_circumflex> <space> : "\136" asciicircum
+<dead_circumflex> <nobreakspace> : "\136" asciicircum
+<dead_breve> <G> : "\253" Gbreve
+<dead_breve> <g> : "\273" gbreve
+<dead_breve> <U> : "\335" Ubreve
+<dead_breve> <u> : "\375" ubreve
+<dead_breve> <dead_breve> : "\242" breve
+<dead_breve> <breve> : "\242" breve
+<dead_breve> <space> : "\242" breve
+<dead_breve> <nobreakspace> : "\242" breve
+<dead_ogonek> <A> : "\241" Aogonek
+<dead_ogonek> <I> : "\307" Iogonek
+<dead_ogonek> <E> : "\312" Eogonek
+<dead_ogonek> <U> : "\331" Uogonek
+<dead_ogonek> <a> : "\261" aogonek
+<dead_ogonek> <i> : "\347" iogonek
+<dead_ogonek> <e> : "\352" eogonek
+<dead_ogonek> <u> : "\371" uogonek
+<dead_ogonek> <dead_ogonek> : "\662" ogonek
+<dead_ogonek> <ogonek> : "\662" ogonek
+<dead_ogonek> <space> : "\662" ogonek
+<dead_ogonek> <nobreakspace> : "\662" ogonek
+<dead_grave> <A> : "\300" Agrave
+<dead_grave> <a> : "\340" agrave
+<dead_grave> <E> : "\310" Egrave
+<dead_grave> <e> : "\350" egrave
+<dead_grave> <I> : "\314" Igrave
+<dead_grave> <i> : "\354" igrave
+<dead_grave> <O> : "\322" Ograve
+<dead_grave> <o> : "\362" ograve
+<dead_grave> <U> : "\331" Ugrave
+<dead_grave> <u> : "\371" ugrave
+<dead_grave> <dead_grave> : "`" grave
+<dead_grave> <grave> : "`" grave
+<dead_grave> <space> : "`" grave
+<dead_grave> <nobreakspace> : "`" grave
+<dead_abovedot> <C> : "\305" Cabovedot
+<dead_abovedot> <c> : "\345" cabovedot
+<dead_abovedot> <I> : "\251" Iabovedot
+<dead_abovedot> <i> : "\271" idotless
+<dead_abovedot> <Z> : "\257" Zabovedot
+<dead_abovedot> <z> : "\277" zabovedot
+<dead_abovedot> <E> : "\314" Eabovedot
+<dead_abovedot> <e> : "\354" eabovedot
+<dead_abovedot> <dead_abovedot> : "\377" abovedot
+<dead_abovedot> <abovedot> : "\377" abovedot
+<dead_abovedot> <space> : "\377" abovedot
+<dead_abovedot> <nobreakspace> : "\377" abovedot
+<dead_acute> <dead_acute> : "\264" acute
+<dead_acute> <acute> : "\264" acute
+<dead_acute> <space> : "\264" acute
+<dead_acute> <nobreakspace> : "\264" acute
+<dead_doubleacute> <dead_doubleacute> : "\675" doubleacute
+<dead_doubleacute> <doubleacute> : "\675" doubleacute
+<dead_doubleacute> <space> : "\675" doubleacute
+<dead_doubleacute> <nobreakspace> : "\675" doubleacute
+<dead_diaeresis> <I> : "\317" Idiaeresis
+<dead_diaeresis> <i> : "\357" idiaeresis
+<dead_diaeresis> <y> : "\377" ydiaeresis
+<dead_diaeresis> <dead_diaeresis> : "\250" diaeresis
+<dead_diaeresis> <diaeresis> : "\250" diaeresis
+<dead_diaeresis> <space> : "\250" diaeresis
+<dead_diaeresis> <nobreakspace> : "\250" diaeresis
+<dead_cedilla> <dead_cedilla> : "\270" cedilla
+<dead_cedilla> <cedilla> : "\270" cedilla
+<dead_cedilla> <space> : "\270" cedilla
+<dead_cedilla> <nobreakspace> : "\270" cedilla
+<dead_macron> <dead_macron> : "\257" macron
+<dead_macron> <macron> : "\257" macron
+<dead_macron> <space> : "\257" macron
+<dead_macron> <nobreakspace> : "\257" macron
+XCOMM End of Sequence Definition
diff --git a/libX11/nls/iso8859-2/XI18N_OBJS b/libX11/nls/iso8859-2/XI18N_OBJS
index daac7d36c..f20902a61 100644
--- a/libX11/nls/iso8859-2/XI18N_OBJS
+++ b/libX11/nls/iso8859-2/XI18N_OBJS
@@ -1,8 +1,8 @@
-# CATEGORY(XLC|XIM|OM) SHARED_LIBRARY_NAME FUNCTION_NAME
-#
-# XI18N objects table for euro locales
-#
-XLC common/xlibi18n _XlcGenericLoader # XLC_open
-XIM common/xiiimp _XimpLocalOpenIM # XIM_open
-XOM common/xomGeneric _XomGenericOpenOM # XOM_open
-
+# CATEGORY(XLC|XIM|OM) SHARED_LIBRARY_NAME FUNCTION_NAME
+#
+# XI18N objects table for euro locales
+#
+XLC common/xlibi18n _XlcGenericLoader # XLC_open
+XIM common/xiiimp _XimpLocalOpenIM # XIM_open
+XOM common/xomGeneric _XomGenericOpenOM # XOM_open
+
diff --git a/libX11/nls/iso8859-2/XLC_LOCALE.pre b/libX11/nls/iso8859-2/XLC_LOCALE.pre
index 357966291..8c70e8a4e 100644
--- a/libX11/nls/iso8859-2/XLC_LOCALE.pre
+++ b/libX11/nls/iso8859-2/XLC_LOCALE.pre
@@ -1,72 +1,72 @@
-XCOMM XLocale Database Sample for iso8859-2.
-XCOMM
-
-XCOMM
-XCOMM XLC_FONTSET category
-XCOMM
-XLC_FONTSET
-XCOMM fs0 class
-fs0 {
- charset {
- name ISO8859-1:GL
- }
- font {
- primary ISO8859-2:GL
- substitute ISO8859-1:GL
- vertical_rotate all
- }
-}
-XCOMM fs1 class
-fs1 {
- charset {
- name ISO8859-2:GR
- }
- font {
- primary ISO8859-2:GR
- }
-}
-END XLC_FONTSET
-
-XCOMM
-XCOMM XLC_XLOCALE category
-XCOMM
-XLC_XLOCALE
-
-encoding_name ISO8859-2
-mb_cur_max 1
-state_depend_encoding False
-#if WCHAR32
-wc_encoding_mask \x30000000
-wc_shift_bits 7
-#else
-wc_encoding_mask \x00008080
-wc_shift_bits 8
-#endif
-
-#ifndef X_LOCALE
-use_stdc_env True
-force_convert_to_mb True
-#endif
-
-XCOMM cs0 class
-cs0 {
- side GL:Default
- length 1
- wc_encoding \x00000000
- ct_encoding ISO8859-2:GL; ISO8859-1:GL
-}
-
-
-XCOMM cs1 class
-cs1 {
- side GR:Default
- length 1
-#if WCHAR32
- wc_encoding \x30000000
-#else
- wc_encoding \x00008080
-#endif
- ct_encoding ISO8859-2:GR
-}
-
-END XLC_XLOCALE
+XCOMM XLocale Database Sample for iso8859-2.
+XCOMM
+
+XCOMM
+XCOMM XLC_FONTSET category
+XCOMM
+XLC_FONTSET
+XCOMM fs0 class
+fs0 {
+ charset {
+ name ISO8859-1:GL
+ }
+ font {
+ primary ISO8859-2:GL
+ substitute ISO8859-1:GL
+ vertical_rotate all
+ }
+}
+XCOMM fs1 class
+fs1 {
+ charset {
+ name ISO8859-2:GR
+ }
+ font {
+ primary ISO8859-2:GR
+ }
+}
+END XLC_FONTSET
+
+XCOMM
+XCOMM XLC_XLOCALE category
+XCOMM
+XLC_XLOCALE
+
+encoding_name ISO8859-2
+mb_cur_max 1
+state_depend_encoding False
+#if WCHAR32
+wc_encoding_mask \x30000000
+wc_shift_bits 7
+#else
+wc_encoding_mask \x00008080
+wc_shift_bits 8
+#endif
+
+#ifndef X_LOCALE
+use_stdc_env True
+force_convert_to_mb True
+#endif
+
+XCOMM cs0 class
+cs0 {
+ side GL:Default
+ length 1
+ wc_encoding \x00000000
+ ct_encoding ISO8859-2:GL; ISO8859-1:GL
+}
+
+
+XCOMM cs1 class
+cs1 {
+ side GR:Default
+ length 1
+#if WCHAR32
+ wc_encoding \x30000000
+#else
+ wc_encoding \x00008080
+#endif
+ ct_encoding ISO8859-2:GR
+}
+
+END XLC_XLOCALE
diff --git a/libX11/nls/iso8859-3/Compose.pre b/libX11/nls/iso8859-3/Compose.pre
index bb45ff9e5..6238d5c34 100644
--- a/libX11/nls/iso8859-3/Compose.pre
+++ b/libX11/nls/iso8859-3/Compose.pre
@@ -1,483 +1,483 @@
-XCOMM
-XCOMM ISO 8859-3 (Latin3) Compose Sequence
-XCOMM
-XCOMM Sequence Definition
-XCOMM
-XCOMM
-XCOMM <Multi_key> Means <Compose>
-XCOMM Special Character
-<Multi_key> <plus> <plus> : "#" numbersign
-<Multi_key> <apostrophe> <space> : "'" apostrophe
-<Multi_key> <space> <apostrophe> : "'" apostrophe
-<Multi_key> <A> <A> : "@" at
-<Multi_key> <parenleft> <parenleft> : "[" bracketleft
-<Multi_key> <slash> <slash> : "\\" backslash
-<Multi_key> <slash> <less> : "\\" backslash
-<Multi_key> <less> <slash> : "\\" backslash
-<Multi_key> <parenright> <parenright> : "]" bracketright
-<Multi_key> <asciicircum> <space> : "^" asciicircum
-<Multi_key> <space> <asciicircum> : "^" asciicircum
-<Multi_key> <greater> <space> : "^" asciicircum
-<Multi_key> <space> <greater> : "^" asciicircum
-<Multi_key> <grave> <space> : "`" grave
-<Multi_key> <space> <grave> : "`" grave
-<Multi_key> <parenleft> <minus> : "{" braceleft
-<Multi_key> <minus> <parenleft> : "{" braceleft
-<Multi_key> <slash> <asciicircum> : "|" bar
-<Multi_key> <asciicircum> <slash> : "|" bar
-<Multi_key> <V> <L> : "|" bar
-<Multi_key> <L> <V> : "|" bar
-<Multi_key> <v> <l> : "|" bar
-<Multi_key> <l> <v> : "|" bar
-<Multi_key> <parenright> <minus> : "}" braceright
-<Multi_key> <minus> <parenright> : "}" braceright
-<Multi_key> <asciitilde> <space> : "~" asciitilde
-<Multi_key> <space> <asciitilde> : "~" asciitilde
-<Multi_key> <minus> <space> : "~" asciitilde
-<Multi_key> <space> <minus> : "~" asciitilde
-<Multi_key> <l> <minus> : "\243" sterling
-<Multi_key> <minus> <l> : "\243" sterling
-<Multi_key> <L> <minus> : "\243" sterling
-<Multi_key> <minus> <L> : "\243" sterling
-<Multi_key> <l> <equal> : "\243" sterling
-<Multi_key> <equal> <l> : "\243" sterling
-<Multi_key> <L> <equal> : "\243" sterling
-<Multi_key> <equal> <L> : "\243" sterling
-<Multi_key> <C> <equal> : "\244" EuroSign
-<Multi_key> <equal> <C> : "\244" EuroSign
-<Multi_key> <c> <equal> : "\244" EuroSign
-<Multi_key> <equal> <c> : "\244" EuroSign
-<Multi_key> <E> <equal> : "\244" EuroSign
-<Multi_key> <equal> <E> : "\244" EuroSign
-<Multi_key> <e> <equal> : "\244" EuroSign
-<Multi_key> <equal> <e> : "\244" EuroSign
-<Multi_key> <y> <minus> : "\245" yen
-<Multi_key> <minus> <y> : "\245" yen
-<Multi_key> <Y> <minus> : "\245" yen
-<Multi_key> <minus> <Y> : "\245" yen
-<Multi_key> <y> <equal> : "\245" yen
-<Multi_key> <equal> <y> : "\245" yen
-<Multi_key> <Y> <equal> : "\245" yen
-<Multi_key> <equal> <Y> : "\245" yen
-<Multi_key> <s> <o> : "\247" section
-<Multi_key> <o> <s> : "\247" section
-<Multi_key> <S> <O> : "\247" section
-<Multi_key> <O> <S> : "\247" section
-<Multi_key> <S> <exclam> : "\247" section
-<Multi_key> <exclam> <S> : "\247" section
-<Multi_key> <s> <exclam> : "\247" section
-<Multi_key> <exclam> <s> : "\247" section
-<Multi_key> <S> <0> : "\247" section
-<Multi_key> <0> <S> : "\247" section
-<Multi_key> <s> <0> : "\247" section
-<Multi_key> <0> <s> : "\247" section
-<Multi_key> <0> <asciicircum> : "\260" degree
-<Multi_key> <asciicircum> <0> : "\260" degree
-<Multi_key> <0> <asterisk> : "\260" degree
-<Multi_key> <asterisk> <0> : "\260" degree
-<Multi_key> <slash> <u> : "\265" mu
-<Multi_key> <u> <slash> : "\265" mu
-<Multi_key> <slash> <U> : "\265" mu
-<Multi_key> <U> <slash> : "\265" mu
-<Multi_key> <2> <asciicircum> : "\262" twosuperior
-<Multi_key> <asciicircum> <2> : "\262" twosuperior
-<Multi_key> <S> <2> : "\262" twosuperior
-<Multi_key> <2> <S> : "\262" twosuperior
-<Multi_key> <s> <2> : "\262" twosuperior
-<Multi_key> <2> <s> : "\262" twosuperior
-<Multi_key> <3> <asciicircum> : "\263" threesuperior
-<Multi_key> <asciicircum> <3> : "\263" threesuperior
-<Multi_key> <S> <3> : "\263" threesuperior
-<Multi_key> <3> <S> : "\263" threesuperior
-<Multi_key> <s> <3> : "\263" threesuperior
-<Multi_key> <3> <s> : "\263" threesuperior
-<Multi_key> <period> <asciicircum> : "\267" periodcentered
-<Multi_key> <asciicircum> <period> : "\267" periodcentered
-<Multi_key> <period> <period> : "\267" periodcentered
-<Multi_key> <space> <space> : "\240" nobreakspace
-<Multi_key> <minus> <minus> : "\255" hyphen
-<Multi_key> <R> <O> : "\256" registered
-<Multi_key> <O> <R> : "\256" registered
-<Multi_key> <parenleft> <r> : "\256" registered
-<Multi_key> <minus> <colon> : "\367" division
-<Multi_key> <colon> <minus> : "\367" division
-<Multi_key> <x> <x> : "\327" multiply
-<Multi_key> <apostrophe> <apostrophe> : "\264" acute
-<Multi_key> <comma> <comma> : "\270" cedilla
-<Multi_key> <quotedbl> <quotedbl> : "\250" diaeresis
-XCOMM Accented Alphabet
-<Multi_key> <A> <grave> : "\300" Agrave
-<Multi_key> <grave> <A> : "\300" Agrave
-<Multi_key> <A> <acute> : "\301" Aacute
-<Multi_key> <acute> <A> : "\301" Aacute
-<Multi_key> <A> <apostrophe> : "\301" Aacute
-<Multi_key> <apostrophe> <A> : "\301" Aacute
-<Multi_key> <A> <asciicircum> : "\302" Acircumflex
-<Multi_key> <asciicircum> <A> : "\302" Acircumflex
-<Multi_key> <A> <greater> : "\302" Acircumflex
-<Multi_key> <greater> <A> : "\302" Acircumflex
-<Multi_key> <A> <asciitilde> : "\303" Atilde
-<Multi_key> <asciitilde> <A> : "\303" Atilde
-<Multi_key> <A> <minus> : "\303" Atilde
-<Multi_key> <minus> <A> : "\303" Atilde
-<Multi_key> <A> <quotedbl> : "\304" Adiaeresis
-<Multi_key> <quotedbl> <A> : "\304" Adiaeresis
-<Multi_key> <A> <diaeresis> : "\304" Adiaeresis
-<Multi_key> <diaeresis> <A> : "\304" Adiaeresis
-<Multi_key> <a> <grave> : "\340" agrave
-<Multi_key> <grave> <a> : "\340" agrave
-<Multi_key> <a> <acute> : "\341" aacute
-<Multi_key> <acute> <a> : "\341" aacute
-<Multi_key> <a> <apostrophe> : "\341" aacute
-<Multi_key> <apostrophe> <a> : "\341" aacute
-<Multi_key> <a> <asciicircum> : "\342" acircumflex
-<Multi_key> <asciicircum> <a> : "\342" acircumflex
-<Multi_key> <a> <greater> : "\342" acircumflex
-<Multi_key> <greater> <a> : "\342" acircumflex
-<Multi_key> <a> <asciitilde> : "\343" atilde
-<Multi_key> <asciitilde> <a> : "\343" atilde
-<Multi_key> <a> <minus> : "\343" atilde
-<Multi_key> <minus> <a> : "\343" atilde
-<Multi_key> <a> <quotedbl> : "\344" adiaeresis
-<Multi_key> <quotedbl> <a> : "\344" adiaeresis
-<Multi_key> <a> <diaeresis> : "\344" adiaeresis
-<Multi_key> <diaeresis> <a> : "\344" adiaeresis
-<Multi_key> <C> <period> : "\305" Cabovedot
-<Multi_key> <period> <C> : "\305" Cabovedot
-<Multi_key> <C> <asciicircum> : "\306" Ccircumflex
-<Multi_key> <asciicircum> <C> : "\306" Ccircumflex
-<Multi_key> <C> <greater> : "\306" Ccircumflex
-<Multi_key> <greater> <C> : "\306" Ccircumflex
-<Multi_key> <C> <comma> : "\307" Ccedilla
-<Multi_key> <C> <cedilla> : "\307" Ccedilla
-<Multi_key> <comma> <C> : "\307" Ccedilla
-<Multi_key> <cedilla> <C> : "\307" Ccedilla
-<Multi_key> <c> <period> : "\345" cabovedot
-<Multi_key> <period> <c> : "\345" cabovedot
-<Multi_key> <c> <asciicircum> : "\346" ccircumflex
-<Multi_key> <asciicircum> <c> : "\346" ccircumflex
-<Multi_key> <c> <greater> : "\346" ccircumflex
-<Multi_key> <greater> <c> : "\346" ccircumflex
-<Multi_key> <c> <comma> : "\347" ccedilla
-<Multi_key> <c> <cedilla> : "\347" ccedilla
-<Multi_key> <comma> <c> : "\347" ccedilla
-<Multi_key> <cedilla> <c> : "\347" ccedilla
-<Multi_key> <minus> <D> : "\320" ETH
-<Multi_key> <D> <minus> : "\320" ETH
-<Multi_key> <minus> <d> : "\360" eth
-<Multi_key> <d> <minus> : "\360" eth
-<Multi_key> <E> <grave> : "\310" Egrave
-<Multi_key> <grave> <E> : "\310" Egrave
-<Multi_key> <E> <acute> : "\311" Eacute
-<Multi_key> <acute> <E> : "\311" Eacute
-<Multi_key> <E> <apostrophe> : "\311" Eacute
-<Multi_key> <apostrophe> <E> : "\311" Eacute
-<Multi_key> <E> <asciicircum> : "\312" Ecircumflex
-<Multi_key> <asciicircum> <E> : "\312" Ecircumflex
-<Multi_key> <E> <greater> : "\312" Ecircumflex
-<Multi_key> <greater> <E> : "\312" Ecircumflex
-<Multi_key> <E> <quotedbl> : "\313" Ediaeresis
-<Multi_key> <quotedbl> <E> : "\313" Ediaeresis
-<Multi_key> <E> <diaeresis> : "\313" Ediaeresis
-<Multi_key> <diaeresis> <E> : "\313" Ediaeresis
-<Multi_key> <e> <grave> : "\350" egrave
-<Multi_key> <grave> <e> : "\350" egrave
-<Multi_key> <e> <acute> : "\351" eacute
-<Multi_key> <acute> <e> : "\351" eacute
-<Multi_key> <e> <apostrophe> : "\351" eacute
-<Multi_key> <apostrophe> <e> : "\351" eacute
-<Multi_key> <e> <asciicircum> : "\352" ecircumflex
-<Multi_key> <asciicircum> <e> : "\352" ecircumflex
-<Multi_key> <e> <greater> : "\352" ecircumflex
-<Multi_key> <greater> <e> : "\352" ecircumflex
-<Multi_key> <e> <quotedbl> : "\353" ediaeresis
-<Multi_key> <quotedbl> <e> : "\353" ediaeresis
-<Multi_key> <e> <diaeresis> : "\353" ediaeresis
-<Multi_key> <diaeresis> <e> : "\353" ediaeresis
-<Multi_key> <G> <U> : "\253" Gbreve
-<Multi_key> <G> <parenleft> : "\253" Gbreve
-<Multi_key> <parenleft> <G> : "\253" Gbreve
-<Multi_key> <G> <breve> : "\253" Gbreve
-<Multi_key> <breve> <G> : "\253" Gbreve
-<Multi_key> <G> <period> : "\325" Gabovedot
-<Multi_key> <period> <G> : "\325" Gabovedot
-<Multi_key> <G> <asciicircum> : "\330" Gcircumflex
-<Multi_key> <asciicircum> <G> : "\330" Gcircumflex
-<Multi_key> <G> <greater> : "\330" Gcircumflex
-<Multi_key> <greater> <G> : "\330" Gcircumflex
-<Multi_key> <g> <U> : "\273" gbreve
-<Multi_key> <g> <parenleft> : "\273" gbreve
-<Multi_key> <parenleft> <g> : "\273" gbreve
-<Multi_key> <g> <breve> : "\273" gbreve
-<Multi_key> <breve> <g> : "\273" gbreve
-<Multi_key> <g> <period> : "\365" gabovedot
-<Multi_key> <period> <g> : "\365" gabovedot
-<Multi_key> <g> <asciicircum> : "\370" gcircumflex
-<Multi_key> <asciicircum> <g> : "\370" gcircumflex
-<Multi_key> <g> <greater> : "\370" gcircumflex
-<Multi_key> <greater> <g> : "\370" gcircumflex
-<Multi_key> <H> <minus> : "\241" Hstroke
-<Multi_key> <minus> <H> : "\241" Hstroke
-<Multi_key> <H> <asciicircum> : "\246" Hcircumflex
-<Multi_key> <asciicircum> <H> : "\246" Hcircumflex
-<Multi_key> <H> <greater> : "\246" Hcircumflex
-<Multi_key> <greater> <H> : "\246" Hcircumflex
-<Multi_key> <h> <minus> : "\261" hstroke
-<Multi_key> <minus> <h> : "\261" hstroke
-<Multi_key> <h> <asciicircum> : "\266" hcircumflex
-<Multi_key> <asciicircum> <h> : "\266" hcircumflex
-<Multi_key> <h> <greater> : "\266" hcircumflex
-<Multi_key> <greater> <h> : "\266" hcircumflex
-<Multi_key> <I> <period> : "\251" Iabovedot
-<Multi_key> <period> <I> : "\251" Iabovedot
-<Multi_key> <I> <grave> : "\314" Igrave
-<Multi_key> <grave> <I> : "\314" Igrave
-<Multi_key> <I> <acute> : "\315" Iacute
-<Multi_key> <acute> <I> : "\315" Iacute
-<Multi_key> <I> <apostrophe> : "\315" Iacute
-<Multi_key> <apostrophe> <I> : "\315" Iacute
-<Multi_key> <I> <asciicircum> : "\316" Icircumflex
-<Multi_key> <asciicircum> <I> : "\316" Icircumflex
-<Multi_key> <I> <greater> : "\316" Icircumflex
-<Multi_key> <greater> <I> : "\316" Icircumflex
-<Multi_key> <I> <quotedbl> : "\317" Idiaeresis
-<Multi_key> <quotedbl> <I> : "\317" Idiaeresis
-<Multi_key> <I> <diaeresis> : "\317" Idiaeresis
-<Multi_key> <diaeresis> <I> : "\317" Idiaeresis
-<Multi_key> <i> <period> : "\271" idotless
-<Multi_key> <period> <i> : "\271" idotless
-<Multi_key> <i> <grave> : "\354" igrave
-<Multi_key> <grave> <i> : "\354" igrave
-<Multi_key> <i> <acute> : "\355" iacute
-<Multi_key> <acute> <i> : "\355" iacute
-<Multi_key> <i> <apostrophe> : "\355" iacute
-<Multi_key> <apostrophe> <i> : "\355" iacute
-<Multi_key> <i> <asciicircum> : "\356" icircumflex
-<Multi_key> <asciicircum> <i> : "\356" icircumflex
-<Multi_key> <i> <greater> : "\356" icircumflex
-<Multi_key> <greater> <i> : "\356" icircumflex
-<Multi_key> <i> <quotedbl> : "\357" idiaeresis
-<Multi_key> <quotedbl> <i> : "\357" idiaeresis
-<Multi_key> <i> <diaeresis> : "\357" idiaeresis
-<Multi_key> <diaeresis> <i> : "\357" idiaeresis
-<Multi_key> <J> <asciicircum> : "\254" Jcircumflex
-<Multi_key> <asciicircum> <J> : "\254" Jcircumflex
-<Multi_key> <J> <greater> : "\254" Jcircumflex
-<Multi_key> <greater> <J> : "\254" Jcircumflex
-<Multi_key> <j> <asciicircum> : "\274" jcircumflex
-<Multi_key> <asciicircum> <j> : "\274" jcircumflex
-<Multi_key> <j> <greater> : "\274" jcircumflex
-<Multi_key> <greater> <j> : "\274" jcircumflex
-<Multi_key> <O> <grave> : "\322" Ograve
-<Multi_key> <grave> <O> : "\322" Ograve
-<Multi_key> <O> <acute> : "\323" Oacute
-<Multi_key> <acute> <O> : "\323" Oacute
-<Multi_key> <O> <apostrophe> : "\323" Oacute
-<Multi_key> <apostrophe> <O> : "\323" Oacute
-<Multi_key> <O> <asciicircum> : "\324" Ocircumflex
-<Multi_key> <asciicircum> <O> : "\324" Ocircumflex
-<Multi_key> <O> <greater> : "\324" Ocircumflex
-<Multi_key> <greater> <O> : "\324" Ocircumflex
-<Multi_key> <O> <asciitilde> : "\325" Otilde
-<Multi_key> <asciitilde> <O> : "\325" Otilde
-<Multi_key> <O> <minus> : "\325" Otilde
-<Multi_key> <minus> <O> : "\325" Otilde
-<Multi_key> <O> <quotedbl> : "\326" Odiaeresis
-<Multi_key> <quotedbl> <O> : "\326" Odiaeresis
-<Multi_key> <O> <diaeresis> : "\326" Odiaeresis
-<Multi_key> <diaeresis> <O> : "\326" Odiaeresis
-<Multi_key> <o> <grave> : "\362" ograve
-<Multi_key> <grave> <o> : "\362" ograve
-<Multi_key> <o> <acute> : "\363" oacute
-<Multi_key> <acute> <o> : "\363" oacute
-<Multi_key> <o> <apostrophe> : "\363" oacute
-<Multi_key> <apostrophe> <o> : "\363" oacute
-<Multi_key> <o> <asciicircum> : "\364" ocircumflex
-<Multi_key> <asciicircum> <o> : "\364" ocircumflex
-<Multi_key> <o> <greater> : "\364" ocircumflex
-<Multi_key> <greater> <o> : "\364" ocircumflex
-<Multi_key> <o> <asciitilde> : "\365" otilde
-<Multi_key> <asciitilde> <o> : "\365" otilde
-<Multi_key> <o> <minus> : "\365" otilde
-<Multi_key> <minus> <o> : "\365" otilde
-<Multi_key> <o> <quotedbl> : "\366" odiaeresis
-<Multi_key> <quotedbl> <o> : "\366" odiaeresis
-<Multi_key> <o> <diaeresis> : "\366" odiaeresis
-<Multi_key> <diaeresis> <o> : "\366" odiaeresis
-<Multi_key> <S> <cedilla> : "\252" Scedilla
-<Multi_key> <S> <comma> : "\252" Scedilla
-<Multi_key> <cedilla> <S> : "\252" Scedilla
-<Multi_key> <cedilla> <s> : "\272" scedilla
-<Multi_key> <comma> <S> : "\252" Scedilla
-<Multi_key> <comma> <s> : "\272" scedilla
-<Multi_key> <s> <cedilla> : "\272" scedilla
-<Multi_key> <s> <comma> : "\272" scedilla
-<Multi_key> <S> <asciicircum> : "\336" Scircumflex
-<Multi_key> <asciicircum> <S> : "\336" Scircumflex
-<Multi_key> <S> <greater> : "\336" Scircumflex
-<Multi_key> <greater> <S> : "\336" Scircumflex
-<Multi_key> <s> <asciicircum> : "\376" scircumflex
-<Multi_key> <asciicircum> <s> : "\376" scircumflex
-<Multi_key> <s> <greater> : "\376" scircumflex
-<Multi_key> <greater> <s> : "\376" scircumflex
-<Multi_key> <U> <grave> : "\331" Ugrave
-<Multi_key> <grave> <U> : "\331" Ugrave
-<Multi_key> <U> <acute> : "\332" Uacute
-<Multi_key> <acute> <U> : "\332" Uacute
-<Multi_key> <U> <apostrophe> : "\332" Uacute
-<Multi_key> <apostrophe> <U> : "\332" Uacute
-<Multi_key> <U> <asciicircum> : "\333" Ucircumflex
-<Multi_key> <asciicircum> <U> : "\333" Ucircumflex
-<Multi_key> <U> <greater> : "\333" Ucircumflex
-<Multi_key> <greater> <U> : "\333" Ucircumflex
-<Multi_key> <U> <quotedbl> : "\334" Udiaeresis
-<Multi_key> <quotedbl> <U> : "\334" Udiaeresis
-<Multi_key> <U> <diaeresis> : "\334" Udiaeresis
-<Multi_key> <diaeresis> <U> : "\334" Udiaeresis
-<Multi_key> <U> <U> : "\335" Ubreve
-<Multi_key> <U> <parenleft> : "\335" Ubreve
-<Multi_key> <parenleft> <U> : "\335" Ubreve
-<Multi_key> <U> <breve> : "\335" Ubreve
-<Multi_key> <breve> <U> : "\335" Ubreve
-<Multi_key> <u> <grave> : "\371" ugrave
-<Multi_key> <grave> <u> : "\371" ugrave
-<Multi_key> <u> <acute> : "\372" uacute
-<Multi_key> <acute> <u> : "\372" uacute
-<Multi_key> <u> <apostrophe> : "\372" uacute
-<Multi_key> <apostrophe> <u> : "\372" uacute
-<Multi_key> <u> <asciicircum> : "\373" ucircumflex
-<Multi_key> <asciicircum> <u> : "\373" ucircumflex
-<Multi_key> <u> <greater> : "\373" ucircumflex
-<Multi_key> <greater> <u> : "\373" ucircumflex
-<Multi_key> <u> <quotedbl> : "\374" udiaeresis
-<Multi_key> <quotedbl> <u> : "\374" udiaeresis
-<Multi_key> <u> <diaeresis> : "\374" udiaeresis
-<Multi_key> <diaeresis> <u> : "\374" udiaeresis
-<Multi_key> <u> <U> : "\375" ubreve
-<Multi_key> <u> <parenleft> : "\375" ubreve
-<Multi_key> <parenleft> <u> : "\375" ubreve
-<Multi_key> <u> <breve> : "\375" ubreve
-<Multi_key> <breve> <u> : "\375" ubreve
-<Multi_key> <s> <s> : "\337" ssharp
-<Multi_key> <Y> <acute> : "\335" Yacute
-<Multi_key> <acute> <Y> : "\335" Yacute
-<Multi_key> <Y> <apostrophe> : "\335" Yacute
-<Multi_key> <apostrophe> <Y> : "\335" Yacute
-<Multi_key> <Y> <quotedbl> : "\276" Ydiaeresis
-<Multi_key> <quotedbl> <Y> : "\276" Ydiaeresis
-<Multi_key> <Y> <diaeresis> : "\276" Ydiaeresis
-<Multi_key> <diaeresis> <Y> : "\276" Ydiaeresis
-<Multi_key> <y> <acute> : "\375" yacute
-<Multi_key> <acute> <y> : "\375" yacute
-<Multi_key> <y> <apostrophe> : "\375" yacute
-<Multi_key> <apostrophe> <y> : "\375" yacute
-<Multi_key> <y> <quotedbl> : "\377" ydiaeresis
-<Multi_key> <quotedbl> <y> : "\377" ydiaeresis
-<Multi_key> <y> <diaeresis> : "\377" ydiaeresis
-<Multi_key> <diaeresis> <y> : "\377" ydiaeresis
-<Multi_key> <Z> <period> : "\257" Zabovedot
-<Multi_key> <period> <Z> : "\257" Zabovedot
-<Multi_key> <z> <period> : "\277" zabovedot
-<Multi_key> <period> <z> : "\277" zabovedot
-XCOMM
-XCOMM dead key accent keysyms
-XCOMM Special Character
-<dead_circumflex> <slash> : "|" bar
-<dead_grave> <space> : "`" grave
-<dead_acute> <space> : "'" apostrophe
-<dead_diaeresis> <space> : "\250" diaeresis
-<dead_circumflex> <space> : "^" asciicircum
-<dead_tilde> <space> : "~" asciitilde
-<dead_circumflex> <0> : "\260" degree
-<dead_circumflex> <1> : "\271" onesuperior
-<dead_circumflex> <2> : "\262" twosuperior
-<dead_circumflex> <3> : "\263" threesuperior
-<dead_circumflex> <period> : "\267" periodcentered
-<dead_cedilla> <minus> : "\254" notsign
-<dead_circumflex> <minus> : "\257" macron
-<dead_circumflex> <underscore> : "\257" macron
-<dead_acute> <apostrophe> : "\264" acute
-<dead_cedilla> <comma> : "\270" cedilla
-<dead_diaeresis> <quotedbl> : "\250" diaeresis
-XCOMM Accented Alphabet
-<dead_abovering> <A> : "\305" Aring
-<dead_abovering> <a> : "\345" aring
-<dead_grave> <A> : "\300" Agrave
-<dead_acute> <A> : "\301" Aacute
-<dead_circumflex> <A> : "\302" Acircumflex
-<dead_tilde> <A> : "\303" Atilde
-<dead_diaeresis> <A> : "\304" Adiaeresis
-<dead_grave> <a> : "\340" agrave
-<dead_acute> <a> : "\341" aacute
-<dead_circumflex> <a> : "\342" acircumflex
-<dead_tilde> <a> : "\343" atilde
-<dead_diaeresis> <a> : "\344" adiaeresis
-<dead_cedilla> <C> : "\307" Ccedilla
-<dead_circumflex> <C> : "\306" Ccircumflex
-<dead_abovedot> <C> : "\305" Cabovedot
-<dead_cedilla> <c> : "\347" ccedilla
-<dead_circumflex> <c> : "\346" ccircumflex
-<dead_abovedot> <c> : "\345" cabovedot
-<dead_grave> <E> : "\310" Egrave
-<dead_acute> <E> : "\311" Eacute
-<dead_circumflex> <E> : "\312" Ecircumflex
-<dead_diaeresis> <E> : "\313" Ediaeresis
-<dead_grave> <e> : "\350" egrave
-<dead_acute> <e> : "\351" eacute
-<dead_circumflex> <e> : "\352" ecircumflex
-<dead_diaeresis> <e> : "\353" ediaeresis
-<dead_breve> <G> : "\253" Gbreve
-<dead_circumflex> <G> : "\330" Gcircumflex
-<dead_breve> <g> : "\273" gbreve
-<dead_circumflex> <g> : "\370" gcircumflex
-<dead_circumflex> <H> : "\246" Hcircumflex
-<dead_circumflex> <h> : "\266" hcircumflex
-<dead_grave> <I> : "\314" Igrave
-<dead_acute> <I> : "\315" Iacute
-<dead_circumflex> <I> : "\316" Icircumflex
-<dead_diaeresis> <I> : "\317" Idiaeresis
-<dead_abovedot> <I> : "\251" Iabovedot
-<dead_grave> <i> : "\354" igrave
-<dead_acute> <i> : "\355" iacute
-<dead_circumflex> <i> : "\356" icircumflex
-<dead_diaeresis> <i> : "\357" idiaeresis
-<dead_abovedot> <i> : "\271" idotless
-<dead_circumflex> <J> : "\254" Jcircumflex
-<dead_circumflex> <j> : "\274" jcircumflex
-<dead_tilde> <N> : "\321" Ntilde
-<dead_tilde> <n> : "\361" ntilde
-<dead_grave> <O> : "\322" Ograve
-<dead_acute> <O> : "\323" Oacute
-<dead_circumflex> <O> : "\324" Ocircumflex
-<dead_tilde> <O> : "\325" Otilde
-<dead_diaeresis> <O> : "\326" Odiaeresis
-<dead_grave> <o> : "\362" ograve
-<dead_acute> <o> : "\363" oacute
-<dead_circumflex> <o> : "\364" ocircumflex
-<dead_tilde> <o> : "\365" otilde
-<dead_diaeresis> <o> : "\366" odiaeresis
-<dead_caron> <S> : "\246" Scaron
-<dead_cedilla> <S> : "\252" Scedilla
-<dead_circumflex> <S> : "\336" Scircumflex
-<dead_caron> <s> : "\250" scaron
-<dead_cedilla> <s> : "\272" scedilla
-<dead_circumflex> <s> : "\376" scircumflex
-<dead_breve> <U> : "\335" Ubreve
-<dead_grave> <U> : "\331" Ugrave
-<dead_acute> <U> : "\332" Uacute
-<dead_circumflex> <U> : "\333" Ucircumflex
-<dead_diaeresis> <U> : "\334" Udiaeresis
-<dead_breve> <u> : "\375" ubreve
-<dead_grave> <u> : "\371" ugrave
-<dead_acute> <u> : "\372" uacute
-<dead_circumflex> <u> : "\373" ucircumflex
-<dead_diaeresis> <u> : "\374" udiaeresis
-<dead_acute> <Y> : "\335" Yacute
-<dead_diaeresis> <Y> : "\276" Ydiaeresis
-<dead_acute> <y> : "\375" yacute
-<dead_diaeresis> <y> : "\377" ydiaeresis
-<dead_caron> <Z> : "\264" Zcaron
-<dead_abovedot> <Z> : "\257" Zabovedot
-<dead_caron> <z> : "\270" zcaron
-<dead_abovedot> <z> : "\277" zabovedot
-XCOMM End of Sequence Definition
+XCOMM
+XCOMM ISO 8859-3 (Latin3) Compose Sequence
+XCOMM
+XCOMM Sequence Definition
+XCOMM
+XCOMM
+XCOMM <Multi_key> Means <Compose>
+XCOMM Special Character
+<Multi_key> <plus> <plus> : "#" numbersign
+<Multi_key> <apostrophe> <space> : "'" apostrophe
+<Multi_key> <space> <apostrophe> : "'" apostrophe
+<Multi_key> <A> <A> : "@" at
+<Multi_key> <parenleft> <parenleft> : "[" bracketleft
+<Multi_key> <slash> <slash> : "\\" backslash
+<Multi_key> <slash> <less> : "\\" backslash
+<Multi_key> <less> <slash> : "\\" backslash
+<Multi_key> <parenright> <parenright> : "]" bracketright
+<Multi_key> <asciicircum> <space> : "^" asciicircum
+<Multi_key> <space> <asciicircum> : "^" asciicircum
+<Multi_key> <greater> <space> : "^" asciicircum
+<Multi_key> <space> <greater> : "^" asciicircum
+<Multi_key> <grave> <space> : "`" grave
+<Multi_key> <space> <grave> : "`" grave
+<Multi_key> <parenleft> <minus> : "{" braceleft
+<Multi_key> <minus> <parenleft> : "{" braceleft
+<Multi_key> <slash> <asciicircum> : "|" bar
+<Multi_key> <asciicircum> <slash> : "|" bar
+<Multi_key> <V> <L> : "|" bar
+<Multi_key> <L> <V> : "|" bar
+<Multi_key> <v> <l> : "|" bar
+<Multi_key> <l> <v> : "|" bar
+<Multi_key> <parenright> <minus> : "}" braceright
+<Multi_key> <minus> <parenright> : "}" braceright
+<Multi_key> <asciitilde> <space> : "~" asciitilde
+<Multi_key> <space> <asciitilde> : "~" asciitilde
+<Multi_key> <minus> <space> : "~" asciitilde
+<Multi_key> <space> <minus> : "~" asciitilde
+<Multi_key> <l> <minus> : "\243" sterling
+<Multi_key> <minus> <l> : "\243" sterling
+<Multi_key> <L> <minus> : "\243" sterling
+<Multi_key> <minus> <L> : "\243" sterling
+<Multi_key> <l> <equal> : "\243" sterling
+<Multi_key> <equal> <l> : "\243" sterling
+<Multi_key> <L> <equal> : "\243" sterling
+<Multi_key> <equal> <L> : "\243" sterling
+<Multi_key> <C> <equal> : "\244" EuroSign
+<Multi_key> <equal> <C> : "\244" EuroSign
+<Multi_key> <c> <equal> : "\244" EuroSign
+<Multi_key> <equal> <c> : "\244" EuroSign
+<Multi_key> <E> <equal> : "\244" EuroSign
+<Multi_key> <equal> <E> : "\244" EuroSign
+<Multi_key> <e> <equal> : "\244" EuroSign
+<Multi_key> <equal> <e> : "\244" EuroSign
+<Multi_key> <y> <minus> : "\245" yen
+<Multi_key> <minus> <y> : "\245" yen
+<Multi_key> <Y> <minus> : "\245" yen
+<Multi_key> <minus> <Y> : "\245" yen
+<Multi_key> <y> <equal> : "\245" yen
+<Multi_key> <equal> <y> : "\245" yen
+<Multi_key> <Y> <equal> : "\245" yen
+<Multi_key> <equal> <Y> : "\245" yen
+<Multi_key> <s> <o> : "\247" section
+<Multi_key> <o> <s> : "\247" section
+<Multi_key> <S> <O> : "\247" section
+<Multi_key> <O> <S> : "\247" section
+<Multi_key> <S> <exclam> : "\247" section
+<Multi_key> <exclam> <S> : "\247" section
+<Multi_key> <s> <exclam> : "\247" section
+<Multi_key> <exclam> <s> : "\247" section
+<Multi_key> <S> <0> : "\247" section
+<Multi_key> <0> <S> : "\247" section
+<Multi_key> <s> <0> : "\247" section
+<Multi_key> <0> <s> : "\247" section
+<Multi_key> <0> <asciicircum> : "\260" degree
+<Multi_key> <asciicircum> <0> : "\260" degree
+<Multi_key> <0> <asterisk> : "\260" degree
+<Multi_key> <asterisk> <0> : "\260" degree
+<Multi_key> <slash> <u> : "\265" mu
+<Multi_key> <u> <slash> : "\265" mu
+<Multi_key> <slash> <U> : "\265" mu
+<Multi_key> <U> <slash> : "\265" mu
+<Multi_key> <2> <asciicircum> : "\262" twosuperior
+<Multi_key> <asciicircum> <2> : "\262" twosuperior
+<Multi_key> <S> <2> : "\262" twosuperior
+<Multi_key> <2> <S> : "\262" twosuperior
+<Multi_key> <s> <2> : "\262" twosuperior
+<Multi_key> <2> <s> : "\262" twosuperior
+<Multi_key> <3> <asciicircum> : "\263" threesuperior
+<Multi_key> <asciicircum> <3> : "\263" threesuperior
+<Multi_key> <S> <3> : "\263" threesuperior
+<Multi_key> <3> <S> : "\263" threesuperior
+<Multi_key> <s> <3> : "\263" threesuperior
+<Multi_key> <3> <s> : "\263" threesuperior
+<Multi_key> <period> <asciicircum> : "\267" periodcentered
+<Multi_key> <asciicircum> <period> : "\267" periodcentered
+<Multi_key> <period> <period> : "\267" periodcentered
+<Multi_key> <space> <space> : "\240" nobreakspace
+<Multi_key> <minus> <minus> : "\255" hyphen
+<Multi_key> <R> <O> : "\256" registered
+<Multi_key> <O> <R> : "\256" registered
+<Multi_key> <parenleft> <r> : "\256" registered
+<Multi_key> <minus> <colon> : "\367" division
+<Multi_key> <colon> <minus> : "\367" division
+<Multi_key> <x> <x> : "\327" multiply
+<Multi_key> <apostrophe> <apostrophe> : "\264" acute
+<Multi_key> <comma> <comma> : "\270" cedilla
+<Multi_key> <quotedbl> <quotedbl> : "\250" diaeresis
+XCOMM Accented Alphabet
+<Multi_key> <A> <grave> : "\300" Agrave
+<Multi_key> <grave> <A> : "\300" Agrave
+<Multi_key> <A> <acute> : "\301" Aacute
+<Multi_key> <acute> <A> : "\301" Aacute
+<Multi_key> <A> <apostrophe> : "\301" Aacute
+<Multi_key> <apostrophe> <A> : "\301" Aacute
+<Multi_key> <A> <asciicircum> : "\302" Acircumflex
+<Multi_key> <asciicircum> <A> : "\302" Acircumflex
+<Multi_key> <A> <greater> : "\302" Acircumflex
+<Multi_key> <greater> <A> : "\302" Acircumflex
+<Multi_key> <A> <asciitilde> : "\303" Atilde
+<Multi_key> <asciitilde> <A> : "\303" Atilde
+<Multi_key> <A> <minus> : "\303" Atilde
+<Multi_key> <minus> <A> : "\303" Atilde
+<Multi_key> <A> <quotedbl> : "\304" Adiaeresis
+<Multi_key> <quotedbl> <A> : "\304" Adiaeresis
+<Multi_key> <A> <diaeresis> : "\304" Adiaeresis
+<Multi_key> <diaeresis> <A> : "\304" Adiaeresis
+<Multi_key> <a> <grave> : "\340" agrave
+<Multi_key> <grave> <a> : "\340" agrave
+<Multi_key> <a> <acute> : "\341" aacute
+<Multi_key> <acute> <a> : "\341" aacute
+<Multi_key> <a> <apostrophe> : "\341" aacute
+<Multi_key> <apostrophe> <a> : "\341" aacute
+<Multi_key> <a> <asciicircum> : "\342" acircumflex
+<Multi_key> <asciicircum> <a> : "\342" acircumflex
+<Multi_key> <a> <greater> : "\342" acircumflex
+<Multi_key> <greater> <a> : "\342" acircumflex
+<Multi_key> <a> <asciitilde> : "\343" atilde
+<Multi_key> <asciitilde> <a> : "\343" atilde
+<Multi_key> <a> <minus> : "\343" atilde
+<Multi_key> <minus> <a> : "\343" atilde
+<Multi_key> <a> <quotedbl> : "\344" adiaeresis
+<Multi_key> <quotedbl> <a> : "\344" adiaeresis
+<Multi_key> <a> <diaeresis> : "\344" adiaeresis
+<Multi_key> <diaeresis> <a> : "\344" adiaeresis
+<Multi_key> <C> <period> : "\305" Cabovedot
+<Multi_key> <period> <C> : "\305" Cabovedot
+<Multi_key> <C> <asciicircum> : "\306" Ccircumflex
+<Multi_key> <asciicircum> <C> : "\306" Ccircumflex
+<Multi_key> <C> <greater> : "\306" Ccircumflex
+<Multi_key> <greater> <C> : "\306" Ccircumflex
+<Multi_key> <C> <comma> : "\307" Ccedilla
+<Multi_key> <C> <cedilla> : "\307" Ccedilla
+<Multi_key> <comma> <C> : "\307" Ccedilla
+<Multi_key> <cedilla> <C> : "\307" Ccedilla
+<Multi_key> <c> <period> : "\345" cabovedot
+<Multi_key> <period> <c> : "\345" cabovedot
+<Multi_key> <c> <asciicircum> : "\346" ccircumflex
+<Multi_key> <asciicircum> <c> : "\346" ccircumflex
+<Multi_key> <c> <greater> : "\346" ccircumflex
+<Multi_key> <greater> <c> : "\346" ccircumflex
+<Multi_key> <c> <comma> : "\347" ccedilla
+<Multi_key> <c> <cedilla> : "\347" ccedilla
+<Multi_key> <comma> <c> : "\347" ccedilla
+<Multi_key> <cedilla> <c> : "\347" ccedilla
+<Multi_key> <minus> <D> : "\320" ETH
+<Multi_key> <D> <minus> : "\320" ETH
+<Multi_key> <minus> <d> : "\360" eth
+<Multi_key> <d> <minus> : "\360" eth
+<Multi_key> <E> <grave> : "\310" Egrave
+<Multi_key> <grave> <E> : "\310" Egrave
+<Multi_key> <E> <acute> : "\311" Eacute
+<Multi_key> <acute> <E> : "\311" Eacute
+<Multi_key> <E> <apostrophe> : "\311" Eacute
+<Multi_key> <apostrophe> <E> : "\311" Eacute
+<Multi_key> <E> <asciicircum> : "\312" Ecircumflex
+<Multi_key> <asciicircum> <E> : "\312" Ecircumflex
+<Multi_key> <E> <greater> : "\312" Ecircumflex
+<Multi_key> <greater> <E> : "\312" Ecircumflex
+<Multi_key> <E> <quotedbl> : "\313" Ediaeresis
+<Multi_key> <quotedbl> <E> : "\313" Ediaeresis
+<Multi_key> <E> <diaeresis> : "\313" Ediaeresis
+<Multi_key> <diaeresis> <E> : "\313" Ediaeresis
+<Multi_key> <e> <grave> : "\350" egrave
+<Multi_key> <grave> <e> : "\350" egrave
+<Multi_key> <e> <acute> : "\351" eacute
+<Multi_key> <acute> <e> : "\351" eacute
+<Multi_key> <e> <apostrophe> : "\351" eacute
+<Multi_key> <apostrophe> <e> : "\351" eacute
+<Multi_key> <e> <asciicircum> : "\352" ecircumflex
+<Multi_key> <asciicircum> <e> : "\352" ecircumflex
+<Multi_key> <e> <greater> : "\352" ecircumflex
+<Multi_key> <greater> <e> : "\352" ecircumflex
+<Multi_key> <e> <quotedbl> : "\353" ediaeresis
+<Multi_key> <quotedbl> <e> : "\353" ediaeresis
+<Multi_key> <e> <diaeresis> : "\353" ediaeresis
+<Multi_key> <diaeresis> <e> : "\353" ediaeresis
+<Multi_key> <G> <U> : "\253" Gbreve
+<Multi_key> <G> <parenleft> : "\253" Gbreve
+<Multi_key> <parenleft> <G> : "\253" Gbreve
+<Multi_key> <G> <breve> : "\253" Gbreve
+<Multi_key> <breve> <G> : "\253" Gbreve
+<Multi_key> <G> <period> : "\325" Gabovedot
+<Multi_key> <period> <G> : "\325" Gabovedot
+<Multi_key> <G> <asciicircum> : "\330" Gcircumflex
+<Multi_key> <asciicircum> <G> : "\330" Gcircumflex
+<Multi_key> <G> <greater> : "\330" Gcircumflex
+<Multi_key> <greater> <G> : "\330" Gcircumflex
+<Multi_key> <g> <U> : "\273" gbreve
+<Multi_key> <g> <parenleft> : "\273" gbreve
+<Multi_key> <parenleft> <g> : "\273" gbreve
+<Multi_key> <g> <breve> : "\273" gbreve
+<Multi_key> <breve> <g> : "\273" gbreve
+<Multi_key> <g> <period> : "\365" gabovedot
+<Multi_key> <period> <g> : "\365" gabovedot
+<Multi_key> <g> <asciicircum> : "\370" gcircumflex
+<Multi_key> <asciicircum> <g> : "\370" gcircumflex
+<Multi_key> <g> <greater> : "\370" gcircumflex
+<Multi_key> <greater> <g> : "\370" gcircumflex
+<Multi_key> <H> <minus> : "\241" Hstroke
+<Multi_key> <minus> <H> : "\241" Hstroke
+<Multi_key> <H> <asciicircum> : "\246" Hcircumflex
+<Multi_key> <asciicircum> <H> : "\246" Hcircumflex
+<Multi_key> <H> <greater> : "\246" Hcircumflex
+<Multi_key> <greater> <H> : "\246" Hcircumflex
+<Multi_key> <h> <minus> : "\261" hstroke
+<Multi_key> <minus> <h> : "\261" hstroke
+<Multi_key> <h> <asciicircum> : "\266" hcircumflex
+<Multi_key> <asciicircum> <h> : "\266" hcircumflex
+<Multi_key> <h> <greater> : "\266" hcircumflex
+<Multi_key> <greater> <h> : "\266" hcircumflex
+<Multi_key> <I> <period> : "\251" Iabovedot
+<Multi_key> <period> <I> : "\251" Iabovedot
+<Multi_key> <I> <grave> : "\314" Igrave
+<Multi_key> <grave> <I> : "\314" Igrave
+<Multi_key> <I> <acute> : "\315" Iacute
+<Multi_key> <acute> <I> : "\315" Iacute
+<Multi_key> <I> <apostrophe> : "\315" Iacute
+<Multi_key> <apostrophe> <I> : "\315" Iacute
+<Multi_key> <I> <asciicircum> : "\316" Icircumflex
+<Multi_key> <asciicircum> <I> : "\316" Icircumflex
+<Multi_key> <I> <greater> : "\316" Icircumflex
+<Multi_key> <greater> <I> : "\316" Icircumflex
+<Multi_key> <I> <quotedbl> : "\317" Idiaeresis
+<Multi_key> <quotedbl> <I> : "\317" Idiaeresis
+<Multi_key> <I> <diaeresis> : "\317" Idiaeresis
+<Multi_key> <diaeresis> <I> : "\317" Idiaeresis
+<Multi_key> <i> <period> : "\271" idotless
+<Multi_key> <period> <i> : "\271" idotless
+<Multi_key> <i> <grave> : "\354" igrave
+<Multi_key> <grave> <i> : "\354" igrave
+<Multi_key> <i> <acute> : "\355" iacute
+<Multi_key> <acute> <i> : "\355" iacute
+<Multi_key> <i> <apostrophe> : "\355" iacute
+<Multi_key> <apostrophe> <i> : "\355" iacute
+<Multi_key> <i> <asciicircum> : "\356" icircumflex
+<Multi_key> <asciicircum> <i> : "\356" icircumflex
+<Multi_key> <i> <greater> : "\356" icircumflex
+<Multi_key> <greater> <i> : "\356" icircumflex
+<Multi_key> <i> <quotedbl> : "\357" idiaeresis
+<Multi_key> <quotedbl> <i> : "\357" idiaeresis
+<Multi_key> <i> <diaeresis> : "\357" idiaeresis
+<Multi_key> <diaeresis> <i> : "\357" idiaeresis
+<Multi_key> <J> <asciicircum> : "\254" Jcircumflex
+<Multi_key> <asciicircum> <J> : "\254" Jcircumflex
+<Multi_key> <J> <greater> : "\254" Jcircumflex
+<Multi_key> <greater> <J> : "\254" Jcircumflex
+<Multi_key> <j> <asciicircum> : "\274" jcircumflex
+<Multi_key> <asciicircum> <j> : "\274" jcircumflex
+<Multi_key> <j> <greater> : "\274" jcircumflex
+<Multi_key> <greater> <j> : "\274" jcircumflex
+<Multi_key> <O> <grave> : "\322" Ograve
+<Multi_key> <grave> <O> : "\322" Ograve
+<Multi_key> <O> <acute> : "\323" Oacute
+<Multi_key> <acute> <O> : "\323" Oacute
+<Multi_key> <O> <apostrophe> : "\323" Oacute
+<Multi_key> <apostrophe> <O> : "\323" Oacute
+<Multi_key> <O> <asciicircum> : "\324" Ocircumflex
+<Multi_key> <asciicircum> <O> : "\324" Ocircumflex
+<Multi_key> <O> <greater> : "\324" Ocircumflex
+<Multi_key> <greater> <O> : "\324" Ocircumflex
+<Multi_key> <O> <asciitilde> : "\325" Otilde
+<Multi_key> <asciitilde> <O> : "\325" Otilde
+<Multi_key> <O> <minus> : "\325" Otilde
+<Multi_key> <minus> <O> : "\325" Otilde
+<Multi_key> <O> <quotedbl> : "\326" Odiaeresis
+<Multi_key> <quotedbl> <O> : "\326" Odiaeresis
+<Multi_key> <O> <diaeresis> : "\326" Odiaeresis
+<Multi_key> <diaeresis> <O> : "\326" Odiaeresis
+<Multi_key> <o> <grave> : "\362" ograve
+<Multi_key> <grave> <o> : "\362" ograve
+<Multi_key> <o> <acute> : "\363" oacute
+<Multi_key> <acute> <o> : "\363" oacute
+<Multi_key> <o> <apostrophe> : "\363" oacute
+<Multi_key> <apostrophe> <o> : "\363" oacute
+<Multi_key> <o> <asciicircum> : "\364" ocircumflex
+<Multi_key> <asciicircum> <o> : "\364" ocircumflex
+<Multi_key> <o> <greater> : "\364" ocircumflex
+<Multi_key> <greater> <o> : "\364" ocircumflex
+<Multi_key> <o> <asciitilde> : "\365" otilde
+<Multi_key> <asciitilde> <o> : "\365" otilde
+<Multi_key> <o> <minus> : "\365" otilde
+<Multi_key> <minus> <o> : "\365" otilde
+<Multi_key> <o> <quotedbl> : "\366" odiaeresis
+<Multi_key> <quotedbl> <o> : "\366" odiaeresis
+<Multi_key> <o> <diaeresis> : "\366" odiaeresis
+<Multi_key> <diaeresis> <o> : "\366" odiaeresis
+<Multi_key> <S> <cedilla> : "\252" Scedilla
+<Multi_key> <S> <comma> : "\252" Scedilla
+<Multi_key> <cedilla> <S> : "\252" Scedilla
+<Multi_key> <cedilla> <s> : "\272" scedilla
+<Multi_key> <comma> <S> : "\252" Scedilla
+<Multi_key> <comma> <s> : "\272" scedilla
+<Multi_key> <s> <cedilla> : "\272" scedilla
+<Multi_key> <s> <comma> : "\272" scedilla
+<Multi_key> <S> <asciicircum> : "\336" Scircumflex
+<Multi_key> <asciicircum> <S> : "\336" Scircumflex
+<Multi_key> <S> <greater> : "\336" Scircumflex
+<Multi_key> <greater> <S> : "\336" Scircumflex
+<Multi_key> <s> <asciicircum> : "\376" scircumflex
+<Multi_key> <asciicircum> <s> : "\376" scircumflex
+<Multi_key> <s> <greater> : "\376" scircumflex
+<Multi_key> <greater> <s> : "\376" scircumflex
+<Multi_key> <U> <grave> : "\331" Ugrave
+<Multi_key> <grave> <U> : "\331" Ugrave
+<Multi_key> <U> <acute> : "\332" Uacute
+<Multi_key> <acute> <U> : "\332" Uacute
+<Multi_key> <U> <apostrophe> : "\332" Uacute
+<Multi_key> <apostrophe> <U> : "\332" Uacute
+<Multi_key> <U> <asciicircum> : "\333" Ucircumflex
+<Multi_key> <asciicircum> <U> : "\333" Ucircumflex
+<Multi_key> <U> <greater> : "\333" Ucircumflex
+<Multi_key> <greater> <U> : "\333" Ucircumflex
+<Multi_key> <U> <quotedbl> : "\334" Udiaeresis
+<Multi_key> <quotedbl> <U> : "\334" Udiaeresis
+<Multi_key> <U> <diaeresis> : "\334" Udiaeresis
+<Multi_key> <diaeresis> <U> : "\334" Udiaeresis
+<Multi_key> <U> <U> : "\335" Ubreve
+<Multi_key> <U> <parenleft> : "\335" Ubreve
+<Multi_key> <parenleft> <U> : "\335" Ubreve
+<Multi_key> <U> <breve> : "\335" Ubreve
+<Multi_key> <breve> <U> : "\335" Ubreve
+<Multi_key> <u> <grave> : "\371" ugrave
+<Multi_key> <grave> <u> : "\371" ugrave
+<Multi_key> <u> <acute> : "\372" uacute
+<Multi_key> <acute> <u> : "\372" uacute
+<Multi_key> <u> <apostrophe> : "\372" uacute
+<Multi_key> <apostrophe> <u> : "\372" uacute
+<Multi_key> <u> <asciicircum> : "\373" ucircumflex
+<Multi_key> <asciicircum> <u> : "\373" ucircumflex
+<Multi_key> <u> <greater> : "\373" ucircumflex
+<Multi_key> <greater> <u> : "\373" ucircumflex
+<Multi_key> <u> <quotedbl> : "\374" udiaeresis
+<Multi_key> <quotedbl> <u> : "\374" udiaeresis
+<Multi_key> <u> <diaeresis> : "\374" udiaeresis
+<Multi_key> <diaeresis> <u> : "\374" udiaeresis
+<Multi_key> <u> <U> : "\375" ubreve
+<Multi_key> <u> <parenleft> : "\375" ubreve
+<Multi_key> <parenleft> <u> : "\375" ubreve
+<Multi_key> <u> <breve> : "\375" ubreve
+<Multi_key> <breve> <u> : "\375" ubreve
+<Multi_key> <s> <s> : "\337" ssharp
+<Multi_key> <Y> <acute> : "\335" Yacute
+<Multi_key> <acute> <Y> : "\335" Yacute
+<Multi_key> <Y> <apostrophe> : "\335" Yacute
+<Multi_key> <apostrophe> <Y> : "\335" Yacute
+<Multi_key> <Y> <quotedbl> : "\276" Ydiaeresis
+<Multi_key> <quotedbl> <Y> : "\276" Ydiaeresis
+<Multi_key> <Y> <diaeresis> : "\276" Ydiaeresis
+<Multi_key> <diaeresis> <Y> : "\276" Ydiaeresis
+<Multi_key> <y> <acute> : "\375" yacute
+<Multi_key> <acute> <y> : "\375" yacute
+<Multi_key> <y> <apostrophe> : "\375" yacute
+<Multi_key> <apostrophe> <y> : "\375" yacute
+<Multi_key> <y> <quotedbl> : "\377" ydiaeresis
+<Multi_key> <quotedbl> <y> : "\377" ydiaeresis
+<Multi_key> <y> <diaeresis> : "\377" ydiaeresis
+<Multi_key> <diaeresis> <y> : "\377" ydiaeresis
+<Multi_key> <Z> <period> : "\257" Zabovedot
+<Multi_key> <period> <Z> : "\257" Zabovedot
+<Multi_key> <z> <period> : "\277" zabovedot
+<Multi_key> <period> <z> : "\277" zabovedot
+XCOMM
+XCOMM dead key accent keysyms
+XCOMM Special Character
+<dead_circumflex> <slash> : "|" bar
+<dead_grave> <space> : "`" grave
+<dead_acute> <space> : "'" apostrophe
+<dead_diaeresis> <space> : "\250" diaeresis
+<dead_circumflex> <space> : "^" asciicircum
+<dead_tilde> <space> : "~" asciitilde
+<dead_circumflex> <0> : "\260" degree
+<dead_circumflex> <1> : "\271" onesuperior
+<dead_circumflex> <2> : "\262" twosuperior
+<dead_circumflex> <3> : "\263" threesuperior
+<dead_circumflex> <period> : "\267" periodcentered
+<dead_cedilla> <minus> : "\254" notsign
+<dead_circumflex> <minus> : "\257" macron
+<dead_circumflex> <underscore> : "\257" macron
+<dead_acute> <apostrophe> : "\264" acute
+<dead_cedilla> <comma> : "\270" cedilla
+<dead_diaeresis> <quotedbl> : "\250" diaeresis
+XCOMM Accented Alphabet
+<dead_abovering> <A> : "\305" Aring
+<dead_abovering> <a> : "\345" aring
+<dead_grave> <A> : "\300" Agrave
+<dead_acute> <A> : "\301" Aacute
+<dead_circumflex> <A> : "\302" Acircumflex
+<dead_tilde> <A> : "\303" Atilde
+<dead_diaeresis> <A> : "\304" Adiaeresis
+<dead_grave> <a> : "\340" agrave
+<dead_acute> <a> : "\341" aacute
+<dead_circumflex> <a> : "\342" acircumflex
+<dead_tilde> <a> : "\343" atilde
+<dead_diaeresis> <a> : "\344" adiaeresis
+<dead_cedilla> <C> : "\307" Ccedilla
+<dead_circumflex> <C> : "\306" Ccircumflex
+<dead_abovedot> <C> : "\305" Cabovedot
+<dead_cedilla> <c> : "\347" ccedilla
+<dead_circumflex> <c> : "\346" ccircumflex
+<dead_abovedot> <c> : "\345" cabovedot
+<dead_grave> <E> : "\310" Egrave
+<dead_acute> <E> : "\311" Eacute
+<dead_circumflex> <E> : "\312" Ecircumflex
+<dead_diaeresis> <E> : "\313" Ediaeresis
+<dead_grave> <e> : "\350" egrave
+<dead_acute> <e> : "\351" eacute
+<dead_circumflex> <e> : "\352" ecircumflex
+<dead_diaeresis> <e> : "\353" ediaeresis
+<dead_breve> <G> : "\253" Gbreve
+<dead_circumflex> <G> : "\330" Gcircumflex
+<dead_breve> <g> : "\273" gbreve
+<dead_circumflex> <g> : "\370" gcircumflex
+<dead_circumflex> <H> : "\246" Hcircumflex
+<dead_circumflex> <h> : "\266" hcircumflex
+<dead_grave> <I> : "\314" Igrave
+<dead_acute> <I> : "\315" Iacute
+<dead_circumflex> <I> : "\316" Icircumflex
+<dead_diaeresis> <I> : "\317" Idiaeresis
+<dead_abovedot> <I> : "\251" Iabovedot
+<dead_grave> <i> : "\354" igrave
+<dead_acute> <i> : "\355" iacute
+<dead_circumflex> <i> : "\356" icircumflex
+<dead_diaeresis> <i> : "\357" idiaeresis
+<dead_abovedot> <i> : "\271" idotless
+<dead_circumflex> <J> : "\254" Jcircumflex
+<dead_circumflex> <j> : "\274" jcircumflex
+<dead_tilde> <N> : "\321" Ntilde
+<dead_tilde> <n> : "\361" ntilde
+<dead_grave> <O> : "\322" Ograve
+<dead_acute> <O> : "\323" Oacute
+<dead_circumflex> <O> : "\324" Ocircumflex
+<dead_tilde> <O> : "\325" Otilde
+<dead_diaeresis> <O> : "\326" Odiaeresis
+<dead_grave> <o> : "\362" ograve
+<dead_acute> <o> : "\363" oacute
+<dead_circumflex> <o> : "\364" ocircumflex
+<dead_tilde> <o> : "\365" otilde
+<dead_diaeresis> <o> : "\366" odiaeresis
+<dead_caron> <S> : "\246" Scaron
+<dead_cedilla> <S> : "\252" Scedilla
+<dead_circumflex> <S> : "\336" Scircumflex
+<dead_caron> <s> : "\250" scaron
+<dead_cedilla> <s> : "\272" scedilla
+<dead_circumflex> <s> : "\376" scircumflex
+<dead_breve> <U> : "\335" Ubreve
+<dead_grave> <U> : "\331" Ugrave
+<dead_acute> <U> : "\332" Uacute
+<dead_circumflex> <U> : "\333" Ucircumflex
+<dead_diaeresis> <U> : "\334" Udiaeresis
+<dead_breve> <u> : "\375" ubreve
+<dead_grave> <u> : "\371" ugrave
+<dead_acute> <u> : "\372" uacute
+<dead_circumflex> <u> : "\373" ucircumflex
+<dead_diaeresis> <u> : "\374" udiaeresis
+<dead_acute> <Y> : "\335" Yacute
+<dead_diaeresis> <Y> : "\276" Ydiaeresis
+<dead_acute> <y> : "\375" yacute
+<dead_diaeresis> <y> : "\377" ydiaeresis
+<dead_caron> <Z> : "\264" Zcaron
+<dead_abovedot> <Z> : "\257" Zabovedot
+<dead_caron> <z> : "\270" zcaron
+<dead_abovedot> <z> : "\277" zabovedot
+XCOMM End of Sequence Definition
diff --git a/libX11/nls/iso8859-3/XI18N_OBJS b/libX11/nls/iso8859-3/XI18N_OBJS
index f41a9e259..1f39eba73 100644
--- a/libX11/nls/iso8859-3/XI18N_OBJS
+++ b/libX11/nls/iso8859-3/XI18N_OBJS
@@ -1,7 +1,7 @@
-# CATEGORY(XLC|XIM|OM) SHARED_LIBRARY_NAME FUNCTION_NAME
-#
-# XI18N objects table for iso8859-3 locale
-#
-XLC common/xlcDef _XlcDefaultLoader # XLC_open
-XIM common/ximcp _XimOpenIM _XimRegisterIMInstantiateCallback _XimUnRegisterIMInstantiateCallback # XIM_open XIM_register XIM_unregister
-XOM common/xomGeneric _XomGenericOpenOM # XOM_open
+# CATEGORY(XLC|XIM|OM) SHARED_LIBRARY_NAME FUNCTION_NAME
+#
+# XI18N objects table for iso8859-3 locale
+#
+XLC common/xlcDef _XlcDefaultLoader # XLC_open
+XIM common/ximcp _XimOpenIM _XimRegisterIMInstantiateCallback _XimUnRegisterIMInstantiateCallback # XIM_open XIM_register XIM_unregister
+XOM common/xomGeneric _XomGenericOpenOM # XOM_open
diff --git a/libX11/nls/iso8859-3/XLC_LOCALE.pre b/libX11/nls/iso8859-3/XLC_LOCALE.pre
index 0780ce976..e8f9e776f 100644
--- a/libX11/nls/iso8859-3/XLC_LOCALE.pre
+++ b/libX11/nls/iso8859-3/XLC_LOCALE.pre
@@ -1,72 +1,72 @@
-XCOMM XLocale Database Sample for iso8859-3.
-XCOMM
-
-XCOMM
-XCOMM XLC_FONTSET category
-XCOMM
-XLC_FONTSET
-XCOMM fs0 class
-fs0 {
- charset {
- name ISO8859-1:GL
- }
- font {
- primary ISO8859-3:GL
- substitute ISO8859-1:GL
- vertical_rotate all
- }
-}
-XCOMM fs1 class
-fs1 {
- charset {
- name ISO8859-3:GR
- }
- font {
- primary ISO8859-3:GR
- }
-}
-END XLC_FONTSET
-
-XCOMM
-XCOMM XLC_XLOCALE category
-XCOMM
-XLC_XLOCALE
-
-encoding_name ISO8859-3
-mb_cur_max 1
-state_depend_encoding False
-#if WCHAR32
-wc_encoding_mask \x30000000
-wc_shift_bits 7
-#else
-wc_encoding_mask \x00008080
-wc_shift_bits 8
-#endif
-
-#ifndef X_LOCALE
-use_stdc_env True
-force_convert_to_mb True
-#endif
-
-XCOMM cs0 class
-cs0 {
- side GL:Default
- length 1
- wc_encoding \x00000000
- ct_encoding ISO8859-3:GL; ISO8859-1:GL
-}
-
-
-XCOMM cs1 class
-cs1 {
- side GR:Default
- length 1
-#if WCHAR32
- wc_encoding \x30000000
-#else
- wc_encoding \x00008080
-#endif
- ct_encoding ISO8859-3:GR
-}
-
-END XLC_XLOCALE
+XCOMM XLocale Database Sample for iso8859-3.
+XCOMM
+
+XCOMM
+XCOMM XLC_FONTSET category
+XCOMM
+XLC_FONTSET
+XCOMM fs0 class
+fs0 {
+ charset {
+ name ISO8859-1:GL
+ }
+ font {
+ primary ISO8859-3:GL
+ substitute ISO8859-1:GL
+ vertical_rotate all
+ }
+}
+XCOMM fs1 class
+fs1 {
+ charset {
+ name ISO8859-3:GR
+ }
+ font {
+ primary ISO8859-3:GR
+ }
+}
+END XLC_FONTSET
+
+XCOMM
+XCOMM XLC_XLOCALE category
+XCOMM
+XLC_XLOCALE
+
+encoding_name ISO8859-3
+mb_cur_max 1
+state_depend_encoding False
+#if WCHAR32
+wc_encoding_mask \x30000000
+wc_shift_bits 7
+#else
+wc_encoding_mask \x00008080
+wc_shift_bits 8
+#endif
+
+#ifndef X_LOCALE
+use_stdc_env True
+force_convert_to_mb True
+#endif
+
+XCOMM cs0 class
+cs0 {
+ side GL:Default
+ length 1
+ wc_encoding \x00000000
+ ct_encoding ISO8859-3:GL; ISO8859-1:GL
+}
+
+
+XCOMM cs1 class
+cs1 {
+ side GR:Default
+ length 1
+#if WCHAR32
+ wc_encoding \x30000000
+#else
+ wc_encoding \x00008080
+#endif
+ ct_encoding ISO8859-3:GR
+}
+
+END XLC_XLOCALE
diff --git a/libX11/nls/iso8859-4/Compose.pre b/libX11/nls/iso8859-4/Compose.pre
index 0af56e87c..74480452e 100644
--- a/libX11/nls/iso8859-4/Compose.pre
+++ b/libX11/nls/iso8859-4/Compose.pre
@@ -1,374 +1,374 @@
-XCOMM
-XCOMM ISO 8859-4 (Latin4) Compose Sequence
-XCOMM
-XCOMM Sequence Definition
-XCOMM
-XCOMM <Multi_key> Means <Compose>
-XCOMM Special Character
-XCOMM Right-hand side (Accented Alphabet)
-XCOMM These compose sequences are pure supposition on my part.
-XCOMM It would be nice to know what the real cultural conventions
-XCOMM are for compose sequences.
-<Multi_key> <A> <comma> : "\241" Aogonek
-<Multi_key> <comma> <A> : "\241" Aogonek
-<Multi_key> <k> <k> : "\242" kra
-<Multi_key> <R> <comma> : "\243" Rcedilla
-<Multi_key> <R> <cedilla> : "\243" Rcedilla
-<Multi_key> <comma> <R> : "\243" Rcedilla
-<Multi_key> <cedilla> <R> : "\243" Rcedilla
-<Multi_key> <x> <o> : "\244" currency
-<Multi_key> <o> <x> : "\244" currency
-<Multi_key> <X> <O> : "\244" currency
-<Multi_key> <O> <X> : "\244" currency
-<Multi_key> <x> <O> : "\244" currency
-<Multi_key> <O> <x> : "\244" currency
-<Multi_key> <X> <o> : "\244" currency
-<Multi_key> <o> <X> : "\244" currency
-<Multi_key> <x> <0> : "\244" currency
-<Multi_key> <0> <x> : "\244" currency
-<Multi_key> <X> <0> : "\244" currency
-<Multi_key> <0> <X> : "\244" currency
-<Multi_key> <I> <asciitilde> : "\245" Itilde
-<Multi_key> <asciitilde> <I> : "\245" Itilde
-<Multi_key> <L> <comma> : "\246" Lcedilla
-<Multi_key> <L> <cedilla> : "\246" Lcedilla
-<Multi_key> <comma> <L> : "\246" Lcedilla
-<Multi_key> <cedilla> <L> : "\246" Lcedilla
-<Multi_key> <s> <o> : "\247" section
-<Multi_key> <o> <s> : "\247" section
-<Multi_key> <S> <O> : "\247" section
-<Multi_key> <O> <S> : "\247" section
-<Multi_key> <S> <exclam> : "\247" section
-<Multi_key> <exclam> <S> : "\247" section
-<Multi_key> <s> <exclam> : "\247" section
-<Multi_key> <exclam> <s> : "\247" section
-<Multi_key> <S> <0> : "\247" section
-<Multi_key> <0> <S> : "\247" section
-<Multi_key> <s> <0> : "\247" section
-<Multi_key> <0> <s> : "\247" section
-<Multi_key> <quotedbl> <quotedbl> : "\250" diaeresis
-<Multi_key> <S> <less> : "\251" Scaron
-<Multi_key> <less> <S> : "\251" Scaron
-<Multi_key> <E> <minus> : "\252" Emacron
-<Multi_key> <minus> <E> : "\252" Emacron
-<Multi_key> <E> <underscore> : "\252" Emacron
-<Multi_key> <underscore> <E> : "\252" Emacron
-<Multi_key> <G> <comma> : "\253" Gcedilla
-<Multi_key> <G> <cedilla> : "\253" Gcedilla
-<Multi_key> <comma> <G> : "\253" Gcedilla
-<Multi_key> <cedilla> <G> : "\253" Gcedilla
-<Multi_key> <T> <minus> : "\254" Tstroke
-<Multi_key> <T> <slash> : "\254" Tstroke
-<Multi_key> <slash> <T> : "\254" Tstroke
-<Multi_key> <minus> <minus> : "\255" hyphen
-<Multi_key> <Z> <less> : "\256" Zcaron
-<Multi_key> <less> <Z> : "\256" Zcaron
-<Multi_key> <minus> <asciicircum> : "\257" macron
-<Multi_key> <asciicircum> <minus> : "\257" macron
-<Multi_key> <underscore> <asciicircum> : "\257" macron
-<Multi_key> <asciicircum> <underscore> : "\257" macron
-<Multi_key> <underscore> <underscore> : "\257" macron
-<Multi_key> <0> <asterisk> : "\260" degree
-<Multi_key> <asterisk> <0> : "\260" degree
-<Multi_key> <a> <comma> : "\261" aogonek
-<Multi_key> <comma> <a> : "\261" aogonek
-<Multi_key> <r> <comma> : "\263" rcedilla
-<Multi_key> <r> <cedilla> : "\263" rcedilla
-<Multi_key> <comma> <r> : "\263" rcedilla
-<Multi_key> <cedilla> <r> : "\263" rcedilla
-<Multi_key> <apostrophe> <apostrophe> : "\264" acute
-<Multi_key> <i> <asciitilde> : "\265" itilde
-<Multi_key> <asciitilde> <i> : "\265" itilde
-<Multi_key> <l> <comma> : "\266" lcedilla
-<Multi_key> <l> <cedilla> : "\266" lcedilla
-<Multi_key> <comma> <l> : "\266" lcedilla
-<Multi_key> <cedilla> <l> : "\266" lcedilla
-<Multi_key> <less> <less> : "\267" caron
-<Multi_key> <comma> <comma> : "\270" cedilla
-<Multi_key> <s> <less> : "\271" scaron
-<Multi_key> <less> <s> : "\271" scaron
-<Multi_key> <e> <minus> : "\272" emacron
-<Multi_key> <minus> <e> : "\272" emacron
-<Multi_key> <e> <underscore> : "\272" emacron
-<Multi_key> <underscore> <e> : "\272" emacron
-<Multi_key> <g> <comma> : "\273" gcedilla
-<Multi_key> <g> <cedilla> : "\273" gcedilla
-<Multi_key> <comma> <g> : "\273" gcedilla
-<Multi_key> <cedilla> <g> : "\273" gcedilla
-<Multi_key> <t> <minus> : "\274" tstroke
-<Multi_key> <t> <slash> : "\274" tstroke
-<Multi_key> <slash> <t> : "\274" tstroke
-<Multi_key> <N> <G> : "\275" ENG
-<Multi_key> <z> <less> : "\276" zcaron
-<Multi_key> <less> <z> : "\276" zcaron
-<Multi_key> <n> <g> : "\277" eng
-<Multi_key> <A> <underscore> : "\300" Amacron
-<Multi_key> <underscore> <A> : "\300" Amacron
-<Multi_key> <A> <minus> : "\300" Amacron
-<Multi_key> <minus> <A> : "\300" Amacron
-<Multi_key> <A> <acute> : "\301" Aacute
-<Multi_key> <acute> <A> : "\301" Aacute
-<Multi_key> <A> <apostrophe> : "\301" Aacute
-<Multi_key> <apostrophe> <A> : "\301" Aacute
-<Multi_key> <A> <asciicircum> : "\302" Acircumflex
-<Multi_key> <asciicircum> <A> : "\302" Acircumflex
-<Multi_key> <A> <greater> : "\302" Acircumflex
-<Multi_key> <greater> <A> : "\302" Acircumflex
-<Multi_key> <A> <asciitilde> : "\303" Atilde
-<Multi_key> <asciitilde> <A> : "\303" Atilde
-<Multi_key> <A> <quotedbl> : "\304" Adiaeresis
-<Multi_key> <quotedbl> <A> : "\304" Adiaeresis
-<Multi_key> <A> <asterisk> : "\305" Aring
-<Multi_key> <asterisk> <A> : "\305" Aring
-<Multi_key> <A> <E> : "\306" AE
-<Multi_key> <I> <comma> : "\307" Iogonek
-<Multi_key> <comma> <I> : "\307" Iogonek
-<Multi_key> <C> <less> : "\310" Ccaron
-<Multi_key> <less> <C> : "\310" Ccaron
-<Multi_key> <E> <acute> : "\311" Eacute
-<Multi_key> <acute> <E> : "\311" Eacute
-<Multi_key> <E> <apostrophe> : "\311" Eacute
-<Multi_key> <apostrophe> <E> : "\311" Eacute
-<Multi_key> <E> <comma> : "\312" Eogonek
-<Multi_key> <comma> <E> : "\312" Eogonek
-<Multi_key> <E> <quotedbl> : "\313" Ediaeresis
-<Multi_key> <quotedbl> <E> : "\313" Ediaeresis
-<Multi_key> <E> <period> : "\314" Eabovedot
-<Multi_key> <period> <E> : "\314" Eabovedot
-<Multi_key> <I> <acute> : "\315" Iacute
-<Multi_key> <acute> <I> : "\315" Iacute
-<Multi_key> <I> <apostrophe> : "\315" Iacute
-<Multi_key> <apostrophe> <I> : "\315" Iacute
-<Multi_key> <I> <asciicircum> : "\316" Icircumflex
-<Multi_key> <asciicircum> <I> : "\316" Icircumflex
-<Multi_key> <I> <greater> : "\316" Icircumflex
-<Multi_key> <greater> <I> : "\316" Icircumflex
-<Multi_key> <I> <minus> : "\317" Imacron
-<Multi_key> <minus> <I> : "\317" Imacron
-<Multi_key> <I> <underscore> : "\317" Imacron
-<Multi_key> <underscore> <I> : "\317" Imacron
-<Multi_key> <D> <minus> : "\320" Dstroke
-<Multi_key> <minus> <D> : "\320" Dstroke
-<Multi_key> <N> <comma> : "\321" Ncedilla
-<Multi_key> <N> <cedilla> : "\321" Ncedilla
-<Multi_key> <comma> <N> : "\321" Ncedilla
-<Multi_key> <cedilla> <N> : "\321" Ncedilla
-<Multi_key> <O> <underscore> : "\322" Omacron
-<Multi_key> <underscore> <O> : "\322" Omacron
-<Multi_key> <O> <minus> : "\322" Omacron
-<Multi_key> <minus> <O> : "\322" Omacron
-<Multi_key> <K> <comma> : "\323" Kcedilla
-<Multi_key> <K> <cedilla> : "\323" Kcedilla
-<Multi_key> <comma> <K> : "\323" Kcedilla
-<Multi_key> <cedilla> <K> : "\323" Kcedilla
-<Multi_key> <O> <asciicircum> : "\324" Ocircumflex
-<Multi_key> <asciicircum> <O> : "\324" Ocircumflex
-<Multi_key> <O> <greater> : "\324" Ocircumflex
-<Multi_key> <greater> <O> : "\324" Ocircumflex
-<Multi_key> <O> <asciitilde> : "\325" Otilde
-<Multi_key> <asciitilde> <O> : "\325" Otilde
-<Multi_key> <O> <quotedbl> : "\326" Odiaeresis
-<Multi_key> <quotedbl> <O> : "\326" Odiaeresis
-<Multi_key> <x> <x> : "\327" multiply
-<Multi_key> <O> <slash> : "\330" Ooblique
-<Multi_key> <slash> <O> : "\330" Ooblique
-<Multi_key> <U> <comma> : "\331" Uogonek
-<Multi_key> <comma> <U> : "\331" Uogonek
-<Multi_key> <U> <acute> : "\332" Uacute
-<Multi_key> <acute> <U> : "\332" Uacute
-<Multi_key> <U> <apostrophe> : "\332" Uacute
-<Multi_key> <apostrophe> <U> : "\332" Uacute
-<Multi_key> <U> <asciicircum> : "\333" Ucircumflex
-<Multi_key> <asciicircum> <U> : "\333" Ucircumflex
-<Multi_key> <U> <greater> : "\333" Ucircumflex
-<Multi_key> <greater> <U> : "\333" Ucircumflex
-<Multi_key> <U> <quotedbl> : "\334" Udiaeresis
-<Multi_key> <quotedbl> <U> : "\334" Udiaeresis
-<Multi_key> <U> <asciitilde> : "\335" Utilde
-<Multi_key> <asciitilde> <U> : "\335" Utilde
-<Multi_key> <U> <underscore> : "\336" Umacron
-<Multi_key> <underscore> <U> : "\336" Umacron
-<Multi_key> <U> <minus> : "\336" Umacron
-<Multi_key> <minus> <U> : "\336" Umacron
-<Multi_key> <s> <s> : "\337" ssharp
-<Multi_key> <a> <underscore> : "\340" amacron
-<Multi_key> <underscore> <a> : "\340" amacron
-<Multi_key> <a> <minus> : "\340" amacron
-<Multi_key> <minus> <a> : "\340" amacron
-<Multi_key> <a> <acute> : "\341" aacute
-<Multi_key> <acute> <a> : "\341" aacute
-<Multi_key> <a> <apostrophe> : "\341" aacute
-<Multi_key> <apostrophe> <a> : "\341" aacute
-<Multi_key> <a> <asciicircum> : "\342" acircumflex
-<Multi_key> <asciicircum> <a> : "\342" acircumflex
-<Multi_key> <a> <greater> : "\342" acircumflex
-<Multi_key> <greater> <a> : "\342" acircumflex
-<Multi_key> <a> <asciitilde> : "\343" atilde
-<Multi_key> <asciitilde> <a> : "\343" atilde
-<Multi_key> <a> <quotedbl> : "\344" adiaeresis
-<Multi_key> <quotedbl> <a> : "\344" adiaeresis
-<Multi_key> <a> <asterisk> : "\345" aring
-<Multi_key> <asterisk> <a> : "\345" aring
-<Multi_key> <a> <e> : "\346" ae
-<Multi_key> <i> <comma> : "\347" iogonek
-<Multi_key> <comma> <i> : "\347" iogonek
-<Multi_key> <c> <less> : "\350" ccaron
-<Multi_key> <less> <c> : "\350" ccaron
-<Multi_key> <e> <acute> : "\351" eacute
-<Multi_key> <acute> <e> : "\351" eacute
-<Multi_key> <e> <apostrophe> : "\351" eacute
-<Multi_key> <apostrophe> <e> : "\351" eacute
-<Multi_key> <e> <comma> : "\352" eogonek
-<Multi_key> <comma> <e> : "\352" eogonek
-<Multi_key> <e> <quotedbl> : "\353" ediaeresis
-<Multi_key> <quotedbl> <e> : "\353" ediaeresis
-<Multi_key> <e> <period> : "\354" eabovedot
-<Multi_key> <period> <e> : "\354" eabovedot
-<Multi_key> <i> <acute> : "\355" iacute
-<Multi_key> <acute> <i> : "\355" iacute
-<Multi_key> <i> <apostrophe> : "\355" iacute
-<Multi_key> <apostrophe> <i> : "\355" iacute
-<Multi_key> <i> <asciicircum> : "\356" icircumflex
-<Multi_key> <asciicircum> <i> : "\356" icircumflex
-<Multi_key> <i> <greater> : "\356" icircumflex
-<Multi_key> <greater> <i> : "\356" icircumflex
-<Multi_key> <i> <minus> : "\357" imacron
-<Multi_key> <minus> <i> : "\357" imacron
-<Multi_key> <i> <underscore> : "\357" imacron
-<Multi_key> <underscore> <i> : "\357" imacron
-<Multi_key> <d> <minus> : "\360" dstroke
-<Multi_key> <minus> <d> : "\360" dstroke
-<Multi_key> <n> <comma> : "\361" ncedilla
-<Multi_key> <n> <cedilla> : "\361" ncedilla
-<Multi_key> <comma> <n> : "\361" ncedilla
-<Multi_key> <cedilla> <n> : "\361" ncedilla
-<Multi_key> <o> <underscore> : "\362" omacron
-<Multi_key> <underscore> <o> : "\362" omacron
-<Multi_key> <o> <minus> : "\362" omacron
-<Multi_key> <minus> <o> : "\362" omacron
-<Multi_key> <k> <comma> : "\363" kcedilla
-<Multi_key> <k> <cedilla> : "\363" kcedilla
-<Multi_key> <comma> <k> : "\363" kcedilla
-<Multi_key> <cedilla> <k> : "\363" kcedilla
-<Multi_key> <o> <asciicircum> : "\364" ocircumflex
-<Multi_key> <asciicircum> <o> : "\364" ocircumflex
-<Multi_key> <o> <greater> : "\364" ocircumflex
-<Multi_key> <greater> <o> : "\364" ocircumflex
-<Multi_key> <o> <asciitilde> : "\365" otilde
-<Multi_key> <asciitilde> <o> : "\365" otilde
-<Multi_key> <o> <quotedbl> : "\366" odiaeresis
-<Multi_key> <quotedbl> <o> : "\366" odiaeresis
-<Multi_key> <minus> <colon> : "\367" division
-<Multi_key> <colon> <minus> : "\367" division
-
-<Multi_key> <o> <slash> : "\370" ooblique
-<Multi_key> <slash> <o> : "\370" ooblique
-<Multi_key> <u> <comma> : "\371" uogonek
-<Multi_key> <comma> <u> : "\371" uogonek
-<Multi_key> <u> <acute> : "\372" uacute
-<Multi_key> <acute> <u> : "\372" uacute
-<Multi_key> <u> <apostrophe> : "\372" uacute
-<Multi_key> <apostrophe> <u> : "\372" uacute
-<Multi_key> <u> <asciicircum> : "\373" ucircumflex
-<Multi_key> <asciicircum> <u> : "\373" ucircumflex
-<Multi_key> <u> <greater> : "\373" ucircumflex
-<Multi_key> <greater> <u> : "\373" ucircumflex
-<Multi_key> <u> <quotedbl> : "\374" udiaeresis
-<Multi_key> <quotedbl> <u> : "\374" udiaeresis
-<Multi_key> <u> <asciitilde> : "\375" utilde
-<Multi_key> <asciitilde> <u> : "\375" utilde
-<Multi_key> <u> <underscore> : "\376" umacron
-<Multi_key> <underscore> <u> : "\376" umacron
-<Multi_key> <u> <minus> : "\376" umacron
-<Multi_key> <minus> <u> : "\376" umacron
-<Multi_key> <period> <period> : "\377" abovedot
-
-<dead_abovedot> <E> : "\314" Eabovedot
-<dead_abovedot> <e> : "\354" eabovedot
-<dead_abovedot> <abovedot> : "\377" abovedot
-<dead_abovedot> <dead_abovedot> : "\377" abovedot
-<dead_abovering> <A> : "\305" Aring
-<dead_abovering> <a> : "\345" aring
-<dead_acute> <acute> : "\264" acute
-<dead_acute> <dead_acute> : "\264" acute
-<dead_acute> <A> : "\301" Aacute
-<dead_acute> <E> : "\311" Eacute
-<dead_acute> <I> : "\315" Iacute
-<dead_acute> <U> : "\332" Uacute
-<dead_acute> <a> : "\341" aacute
-<dead_acute> <e> : "\351" eacute
-<dead_acute> <i> : "\355" iacute
-<dead_acute> <u> : "\372" uacute
-<dead_caron> <S> : "\251" Scaron
-<dead_caron> <Z> : "\256" Zcaron
-<dead_caron> <caron> : "\267" caron
-<dead_caron> <dead_caron> : "\267" caron
-<dead_caron> <s> : "\271" scaron
-<dead_caron> <z> : "\276" zcaron
-<dead_caron> <C> : "\310" Ccaron
-<dead_caron> <c> : "\350" ccaron
-<dead_cedilla> <R> : "\243" Rcedilla
-<dead_cedilla> <L> : "\246" Lcedilla
-<dead_cedilla> <G> : "\253" Gcedilla
-<dead_cedilla> <r> : "\263" rcedilla
-<dead_cedilla> <l> : "\266" lcedilla
-<dead_cedilla> <cedilla> : "\270" cedilla
-<dead_cedilla> <dead_cedilla> : "\270" cedilla
-<dead_cedilla> <g> : "\273" gcedilla
-<dead_cedilla> <N> : "\321" Ncedilla
-<dead_cedilla> <K> : "\323" Kcedilla
-<dead_cedilla> <n> : "\361" ncedilla
-<dead_cedilla> <k> : "\363" kcedilla
-<dead_circumflex> <A> : "\302" Acircumflex
-<dead_circumflex> <I> : "\316" Icircumflex
-<dead_circumflex> <O> : "\324" Ocircumflex
-<dead_circumflex> <U> : "\333" Ucircumflex
-<dead_circumflex> <a> : "\342" acircumflex
-<dead_circumflex> <i> : "\356" icircumflex
-<dead_circumflex> <o> : "\364" ocircumflex
-<dead_circumflex> <u> : "\373" ucircumflex
-<dead_diaeresis> <diaeresis> : "\250" diaeresis
-<dead_diaeresis> <dead_diaeresis> : "\250" diaeresis
-<dead_diaeresis> <A> : "\304" Adiaeresis
-<dead_diaeresis> <E> : "\313" Ediaeresis
-<dead_diaeresis> <O> : "\326" Odiaeresis
-<dead_diaeresis> <U> : "\334" Udiaeresis
-<dead_diaeresis> <a> : "\344" adiaeresis
-<dead_diaeresis> <e> : "\353" ediaeresis
-<dead_diaeresis> <o> : "\366" odiaeresis
-<dead_diaeresis> <u> : "\374" udiaeresis
-<dead_macron> <E> : "\252" Emacron
-<dead_macron> <macron> : "\257" macron
-<dead_macron> <dead_macron> : "\257" macron
-<dead_macron> <e> : "\272" emacron
-<dead_macron> <A> : "\300" Amacron
-<dead_macron> <I> : "\317" Imacron
-<dead_macron> <O> : "\322" Omacron
-<dead_macron> <U> : "\336" Umacron
-<dead_macron> <a> : "\340" amacron
-<dead_macron> <i> : "\357" imacron
-<dead_macron> <o> : "\362" omacron
-<dead_macron> <u> : "\376" umacron
-<dead_ogonek> <A> : "\241" Aogonek
-<dead_ogonek> <a> : "\261" aogonek
-<dead_ogonek> <ogonek> : "\262" ogonek
-<dead_ogonek> <dead_ogonek> : "\262" ogonek
-<dead_ogonek> <I> : "\307" Iogonek
-<dead_ogonek> <E> : "\312" Eogonek
-<dead_ogonek> <U> : "\331" Uogonek
-<dead_ogonek> <i> : "\347" iogonek
-<dead_ogonek> <e> : "\352" eogonek
-<dead_ogonek> <u> : "\371" uogonek
-<dead_abovering> <ring> : "\260" ring
-<dead_abovering> <dead_abovering> : "\260" ring
-<dead_tilde> <I> : "\245" Itilde
-<dead_tilde> <i> : "\265" itilde
-<dead_tilde> <A> : "\303" Atilde
-<dead_tilde> <O> : "\325" Otilde
-<dead_tilde> <U> : "\335" Utilde
-<dead_tilde> <a> : "\343" atilde
-<dead_tilde> <o> : "\365" otilde
-<dead_tilde> <u> : "\375" utilde
-<dead_tilde> <asciitilde> : "~" asciitilde
-<dead_tilde> <dead_tilde> : "~" asciitilde
-XCOMM End of Sequence Definition
+XCOMM
+XCOMM ISO 8859-4 (Latin4) Compose Sequence
+XCOMM
+XCOMM Sequence Definition
+XCOMM
+XCOMM <Multi_key> Means <Compose>
+XCOMM Special Character
+XCOMM Right-hand side (Accented Alphabet)
+XCOMM These compose sequences are pure supposition on my part.
+XCOMM It would be nice to know what the real cultural conventions
+XCOMM are for compose sequences.
+<Multi_key> <A> <comma> : "\241" Aogonek
+<Multi_key> <comma> <A> : "\241" Aogonek
+<Multi_key> <k> <k> : "\242" kra
+<Multi_key> <R> <comma> : "\243" Rcedilla
+<Multi_key> <R> <cedilla> : "\243" Rcedilla
+<Multi_key> <comma> <R> : "\243" Rcedilla
+<Multi_key> <cedilla> <R> : "\243" Rcedilla
+<Multi_key> <x> <o> : "\244" currency
+<Multi_key> <o> <x> : "\244" currency
+<Multi_key> <X> <O> : "\244" currency
+<Multi_key> <O> <X> : "\244" currency
+<Multi_key> <x> <O> : "\244" currency
+<Multi_key> <O> <x> : "\244" currency
+<Multi_key> <X> <o> : "\244" currency
+<Multi_key> <o> <X> : "\244" currency
+<Multi_key> <x> <0> : "\244" currency
+<Multi_key> <0> <x> : "\244" currency
+<Multi_key> <X> <0> : "\244" currency
+<Multi_key> <0> <X> : "\244" currency
+<Multi_key> <I> <asciitilde> : "\245" Itilde
+<Multi_key> <asciitilde> <I> : "\245" Itilde
+<Multi_key> <L> <comma> : "\246" Lcedilla
+<Multi_key> <L> <cedilla> : "\246" Lcedilla
+<Multi_key> <comma> <L> : "\246" Lcedilla
+<Multi_key> <cedilla> <L> : "\246" Lcedilla
+<Multi_key> <s> <o> : "\247" section
+<Multi_key> <o> <s> : "\247" section
+<Multi_key> <S> <O> : "\247" section
+<Multi_key> <O> <S> : "\247" section
+<Multi_key> <S> <exclam> : "\247" section
+<Multi_key> <exclam> <S> : "\247" section
+<Multi_key> <s> <exclam> : "\247" section
+<Multi_key> <exclam> <s> : "\247" section
+<Multi_key> <S> <0> : "\247" section
+<Multi_key> <0> <S> : "\247" section
+<Multi_key> <s> <0> : "\247" section
+<Multi_key> <0> <s> : "\247" section
+<Multi_key> <quotedbl> <quotedbl> : "\250" diaeresis
+<Multi_key> <S> <less> : "\251" Scaron
+<Multi_key> <less> <S> : "\251" Scaron
+<Multi_key> <E> <minus> : "\252" Emacron
+<Multi_key> <minus> <E> : "\252" Emacron
+<Multi_key> <E> <underscore> : "\252" Emacron
+<Multi_key> <underscore> <E> : "\252" Emacron
+<Multi_key> <G> <comma> : "\253" Gcedilla
+<Multi_key> <G> <cedilla> : "\253" Gcedilla
+<Multi_key> <comma> <G> : "\253" Gcedilla
+<Multi_key> <cedilla> <G> : "\253" Gcedilla
+<Multi_key> <T> <minus> : "\254" Tstroke
+<Multi_key> <T> <slash> : "\254" Tstroke
+<Multi_key> <slash> <T> : "\254" Tstroke
+<Multi_key> <minus> <minus> : "\255" hyphen
+<Multi_key> <Z> <less> : "\256" Zcaron
+<Multi_key> <less> <Z> : "\256" Zcaron
+<Multi_key> <minus> <asciicircum> : "\257" macron
+<Multi_key> <asciicircum> <minus> : "\257" macron
+<Multi_key> <underscore> <asciicircum> : "\257" macron
+<Multi_key> <asciicircum> <underscore> : "\257" macron
+<Multi_key> <underscore> <underscore> : "\257" macron
+<Multi_key> <0> <asterisk> : "\260" degree
+<Multi_key> <asterisk> <0> : "\260" degree
+<Multi_key> <a> <comma> : "\261" aogonek
+<Multi_key> <comma> <a> : "\261" aogonek
+<Multi_key> <r> <comma> : "\263" rcedilla
+<Multi_key> <r> <cedilla> : "\263" rcedilla
+<Multi_key> <comma> <r> : "\263" rcedilla
+<Multi_key> <cedilla> <r> : "\263" rcedilla
+<Multi_key> <apostrophe> <apostrophe> : "\264" acute
+<Multi_key> <i> <asciitilde> : "\265" itilde
+<Multi_key> <asciitilde> <i> : "\265" itilde
+<Multi_key> <l> <comma> : "\266" lcedilla
+<Multi_key> <l> <cedilla> : "\266" lcedilla
+<Multi_key> <comma> <l> : "\266" lcedilla
+<Multi_key> <cedilla> <l> : "\266" lcedilla
+<Multi_key> <less> <less> : "\267" caron
+<Multi_key> <comma> <comma> : "\270" cedilla
+<Multi_key> <s> <less> : "\271" scaron
+<Multi_key> <less> <s> : "\271" scaron
+<Multi_key> <e> <minus> : "\272" emacron
+<Multi_key> <minus> <e> : "\272" emacron
+<Multi_key> <e> <underscore> : "\272" emacron
+<Multi_key> <underscore> <e> : "\272" emacron
+<Multi_key> <g> <comma> : "\273" gcedilla
+<Multi_key> <g> <cedilla> : "\273" gcedilla
+<Multi_key> <comma> <g> : "\273" gcedilla
+<Multi_key> <cedilla> <g> : "\273" gcedilla
+<Multi_key> <t> <minus> : "\274" tstroke
+<Multi_key> <t> <slash> : "\274" tstroke
+<Multi_key> <slash> <t> : "\274" tstroke
+<Multi_key> <N> <G> : "\275" ENG
+<Multi_key> <z> <less> : "\276" zcaron
+<Multi_key> <less> <z> : "\276" zcaron
+<Multi_key> <n> <g> : "\277" eng
+<Multi_key> <A> <underscore> : "\300" Amacron
+<Multi_key> <underscore> <A> : "\300" Amacron
+<Multi_key> <A> <minus> : "\300" Amacron
+<Multi_key> <minus> <A> : "\300" Amacron
+<Multi_key> <A> <acute> : "\301" Aacute
+<Multi_key> <acute> <A> : "\301" Aacute
+<Multi_key> <A> <apostrophe> : "\301" Aacute
+<Multi_key> <apostrophe> <A> : "\301" Aacute
+<Multi_key> <A> <asciicircum> : "\302" Acircumflex
+<Multi_key> <asciicircum> <A> : "\302" Acircumflex
+<Multi_key> <A> <greater> : "\302" Acircumflex
+<Multi_key> <greater> <A> : "\302" Acircumflex
+<Multi_key> <A> <asciitilde> : "\303" Atilde
+<Multi_key> <asciitilde> <A> : "\303" Atilde
+<Multi_key> <A> <quotedbl> : "\304" Adiaeresis
+<Multi_key> <quotedbl> <A> : "\304" Adiaeresis
+<Multi_key> <A> <asterisk> : "\305" Aring
+<Multi_key> <asterisk> <A> : "\305" Aring
+<Multi_key> <A> <E> : "\306" AE
+<Multi_key> <I> <comma> : "\307" Iogonek
+<Multi_key> <comma> <I> : "\307" Iogonek
+<Multi_key> <C> <less> : "\310" Ccaron
+<Multi_key> <less> <C> : "\310" Ccaron
+<Multi_key> <E> <acute> : "\311" Eacute
+<Multi_key> <acute> <E> : "\311" Eacute
+<Multi_key> <E> <apostrophe> : "\311" Eacute
+<Multi_key> <apostrophe> <E> : "\311" Eacute
+<Multi_key> <E> <comma> : "\312" Eogonek
+<Multi_key> <comma> <E> : "\312" Eogonek
+<Multi_key> <E> <quotedbl> : "\313" Ediaeresis
+<Multi_key> <quotedbl> <E> : "\313" Ediaeresis
+<Multi_key> <E> <period> : "\314" Eabovedot
+<Multi_key> <period> <E> : "\314" Eabovedot
+<Multi_key> <I> <acute> : "\315" Iacute
+<Multi_key> <acute> <I> : "\315" Iacute
+<Multi_key> <I> <apostrophe> : "\315" Iacute
+<Multi_key> <apostrophe> <I> : "\315" Iacute
+<Multi_key> <I> <asciicircum> : "\316" Icircumflex
+<Multi_key> <asciicircum> <I> : "\316" Icircumflex
+<Multi_key> <I> <greater> : "\316" Icircumflex
+<Multi_key> <greater> <I> : "\316" Icircumflex
+<Multi_key> <I> <minus> : "\317" Imacron
+<Multi_key> <minus> <I> : "\317" Imacron
+<Multi_key> <I> <underscore> : "\317" Imacron
+<Multi_key> <underscore> <I> : "\317" Imacron
+<Multi_key> <D> <minus> : "\320" Dstroke
+<Multi_key> <minus> <D> : "\320" Dstroke
+<Multi_key> <N> <comma> : "\321" Ncedilla
+<Multi_key> <N> <cedilla> : "\321" Ncedilla
+<Multi_key> <comma> <N> : "\321" Ncedilla
+<Multi_key> <cedilla> <N> : "\321" Ncedilla
+<Multi_key> <O> <underscore> : "\322" Omacron
+<Multi_key> <underscore> <O> : "\322" Omacron
+<Multi_key> <O> <minus> : "\322" Omacron
+<Multi_key> <minus> <O> : "\322" Omacron
+<Multi_key> <K> <comma> : "\323" Kcedilla
+<Multi_key> <K> <cedilla> : "\323" Kcedilla
+<Multi_key> <comma> <K> : "\323" Kcedilla
+<Multi_key> <cedilla> <K> : "\323" Kcedilla
+<Multi_key> <O> <asciicircum> : "\324" Ocircumflex
+<Multi_key> <asciicircum> <O> : "\324" Ocircumflex
+<Multi_key> <O> <greater> : "\324" Ocircumflex
+<Multi_key> <greater> <O> : "\324" Ocircumflex
+<Multi_key> <O> <asciitilde> : "\325" Otilde
+<Multi_key> <asciitilde> <O> : "\325" Otilde
+<Multi_key> <O> <quotedbl> : "\326" Odiaeresis
+<Multi_key> <quotedbl> <O> : "\326" Odiaeresis
+<Multi_key> <x> <x> : "\327" multiply
+<Multi_key> <O> <slash> : "\330" Ooblique
+<Multi_key> <slash> <O> : "\330" Ooblique
+<Multi_key> <U> <comma> : "\331" Uogonek
+<Multi_key> <comma> <U> : "\331" Uogonek
+<Multi_key> <U> <acute> : "\332" Uacute
+<Multi_key> <acute> <U> : "\332" Uacute
+<Multi_key> <U> <apostrophe> : "\332" Uacute
+<Multi_key> <apostrophe> <U> : "\332" Uacute
+<Multi_key> <U> <asciicircum> : "\333" Ucircumflex
+<Multi_key> <asciicircum> <U> : "\333" Ucircumflex
+<Multi_key> <U> <greater> : "\333" Ucircumflex
+<Multi_key> <greater> <U> : "\333" Ucircumflex
+<Multi_key> <U> <quotedbl> : "\334" Udiaeresis
+<Multi_key> <quotedbl> <U> : "\334" Udiaeresis
+<Multi_key> <U> <asciitilde> : "\335" Utilde
+<Multi_key> <asciitilde> <U> : "\335" Utilde
+<Multi_key> <U> <underscore> : "\336" Umacron
+<Multi_key> <underscore> <U> : "\336" Umacron
+<Multi_key> <U> <minus> : "\336" Umacron
+<Multi_key> <minus> <U> : "\336" Umacron
+<Multi_key> <s> <s> : "\337" ssharp
+<Multi_key> <a> <underscore> : "\340" amacron
+<Multi_key> <underscore> <a> : "\340" amacron
+<Multi_key> <a> <minus> : "\340" amacron
+<Multi_key> <minus> <a> : "\340" amacron
+<Multi_key> <a> <acute> : "\341" aacute
+<Multi_key> <acute> <a> : "\341" aacute
+<Multi_key> <a> <apostrophe> : "\341" aacute
+<Multi_key> <apostrophe> <a> : "\341" aacute
+<Multi_key> <a> <asciicircum> : "\342" acircumflex
+<Multi_key> <asciicircum> <a> : "\342" acircumflex
+<Multi_key> <a> <greater> : "\342" acircumflex
+<Multi_key> <greater> <a> : "\342" acircumflex
+<Multi_key> <a> <asciitilde> : "\343" atilde
+<Multi_key> <asciitilde> <a> : "\343" atilde
+<Multi_key> <a> <quotedbl> : "\344" adiaeresis
+<Multi_key> <quotedbl> <a> : "\344" adiaeresis
+<Multi_key> <a> <asterisk> : "\345" aring
+<Multi_key> <asterisk> <a> : "\345" aring
+<Multi_key> <a> <e> : "\346" ae
+<Multi_key> <i> <comma> : "\347" iogonek
+<Multi_key> <comma> <i> : "\347" iogonek
+<Multi_key> <c> <less> : "\350" ccaron
+<Multi_key> <less> <c> : "\350" ccaron
+<Multi_key> <e> <acute> : "\351" eacute
+<Multi_key> <acute> <e> : "\351" eacute
+<Multi_key> <e> <apostrophe> : "\351" eacute
+<Multi_key> <apostrophe> <e> : "\351" eacute
+<Multi_key> <e> <comma> : "\352" eogonek
+<Multi_key> <comma> <e> : "\352" eogonek
+<Multi_key> <e> <quotedbl> : "\353" ediaeresis
+<Multi_key> <quotedbl> <e> : "\353" ediaeresis
+<Multi_key> <e> <period> : "\354" eabovedot
+<Multi_key> <period> <e> : "\354" eabovedot
+<Multi_key> <i> <acute> : "\355" iacute
+<Multi_key> <acute> <i> : "\355" iacute
+<Multi_key> <i> <apostrophe> : "\355" iacute
+<Multi_key> <apostrophe> <i> : "\355" iacute
+<Multi_key> <i> <asciicircum> : "\356" icircumflex
+<Multi_key> <asciicircum> <i> : "\356" icircumflex
+<Multi_key> <i> <greater> : "\356" icircumflex
+<Multi_key> <greater> <i> : "\356" icircumflex
+<Multi_key> <i> <minus> : "\357" imacron
+<Multi_key> <minus> <i> : "\357" imacron
+<Multi_key> <i> <underscore> : "\357" imacron
+<Multi_key> <underscore> <i> : "\357" imacron
+<Multi_key> <d> <minus> : "\360" dstroke
+<Multi_key> <minus> <d> : "\360" dstroke
+<Multi_key> <n> <comma> : "\361" ncedilla
+<Multi_key> <n> <cedilla> : "\361" ncedilla
+<Multi_key> <comma> <n> : "\361" ncedilla
+<Multi_key> <cedilla> <n> : "\361" ncedilla
+<Multi_key> <o> <underscore> : "\362" omacron
+<Multi_key> <underscore> <o> : "\362" omacron
+<Multi_key> <o> <minus> : "\362" omacron
+<Multi_key> <minus> <o> : "\362" omacron
+<Multi_key> <k> <comma> : "\363" kcedilla
+<Multi_key> <k> <cedilla> : "\363" kcedilla
+<Multi_key> <comma> <k> : "\363" kcedilla
+<Multi_key> <cedilla> <k> : "\363" kcedilla
+<Multi_key> <o> <asciicircum> : "\364" ocircumflex
+<Multi_key> <asciicircum> <o> : "\364" ocircumflex
+<Multi_key> <o> <greater> : "\364" ocircumflex
+<Multi_key> <greater> <o> : "\364" ocircumflex
+<Multi_key> <o> <asciitilde> : "\365" otilde
+<Multi_key> <asciitilde> <o> : "\365" otilde
+<Multi_key> <o> <quotedbl> : "\366" odiaeresis
+<Multi_key> <quotedbl> <o> : "\366" odiaeresis
+<Multi_key> <minus> <colon> : "\367" division
+<Multi_key> <colon> <minus> : "\367" division
+
+<Multi_key> <o> <slash> : "\370" ooblique
+<Multi_key> <slash> <o> : "\370" ooblique
+<Multi_key> <u> <comma> : "\371" uogonek
+<Multi_key> <comma> <u> : "\371" uogonek
+<Multi_key> <u> <acute> : "\372" uacute
+<Multi_key> <acute> <u> : "\372" uacute
+<Multi_key> <u> <apostrophe> : "\372" uacute
+<Multi_key> <apostrophe> <u> : "\372" uacute
+<Multi_key> <u> <asciicircum> : "\373" ucircumflex
+<Multi_key> <asciicircum> <u> : "\373" ucircumflex
+<Multi_key> <u> <greater> : "\373" ucircumflex
+<Multi_key> <greater> <u> : "\373" ucircumflex
+<Multi_key> <u> <quotedbl> : "\374" udiaeresis
+<Multi_key> <quotedbl> <u> : "\374" udiaeresis
+<Multi_key> <u> <asciitilde> : "\375" utilde
+<Multi_key> <asciitilde> <u> : "\375" utilde
+<Multi_key> <u> <underscore> : "\376" umacron
+<Multi_key> <underscore> <u> : "\376" umacron
+<Multi_key> <u> <minus> : "\376" umacron
+<Multi_key> <minus> <u> : "\376" umacron
+<Multi_key> <period> <period> : "\377" abovedot
+
+<dead_abovedot> <E> : "\314" Eabovedot
+<dead_abovedot> <e> : "\354" eabovedot
+<dead_abovedot> <abovedot> : "\377" abovedot
+<dead_abovedot> <dead_abovedot> : "\377" abovedot
+<dead_abovering> <A> : "\305" Aring
+<dead_abovering> <a> : "\345" aring
+<dead_acute> <acute> : "\264" acute
+<dead_acute> <dead_acute> : "\264" acute
+<dead_acute> <A> : "\301" Aacute
+<dead_acute> <E> : "\311" Eacute
+<dead_acute> <I> : "\315" Iacute
+<dead_acute> <U> : "\332" Uacute
+<dead_acute> <a> : "\341" aacute
+<dead_acute> <e> : "\351" eacute
+<dead_acute> <i> : "\355" iacute
+<dead_acute> <u> : "\372" uacute
+<dead_caron> <S> : "\251" Scaron
+<dead_caron> <Z> : "\256" Zcaron
+<dead_caron> <caron> : "\267" caron
+<dead_caron> <dead_caron> : "\267" caron
+<dead_caron> <s> : "\271" scaron
+<dead_caron> <z> : "\276" zcaron
+<dead_caron> <C> : "\310" Ccaron
+<dead_caron> <c> : "\350" ccaron
+<dead_cedilla> <R> : "\243" Rcedilla
+<dead_cedilla> <L> : "\246" Lcedilla
+<dead_cedilla> <G> : "\253" Gcedilla
+<dead_cedilla> <r> : "\263" rcedilla
+<dead_cedilla> <l> : "\266" lcedilla
+<dead_cedilla> <cedilla> : "\270" cedilla
+<dead_cedilla> <dead_cedilla> : "\270" cedilla
+<dead_cedilla> <g> : "\273" gcedilla
+<dead_cedilla> <N> : "\321" Ncedilla
+<dead_cedilla> <K> : "\323" Kcedilla
+<dead_cedilla> <n> : "\361" ncedilla
+<dead_cedilla> <k> : "\363" kcedilla
+<dead_circumflex> <A> : "\302" Acircumflex
+<dead_circumflex> <I> : "\316" Icircumflex
+<dead_circumflex> <O> : "\324" Ocircumflex
+<dead_circumflex> <U> : "\333" Ucircumflex
+<dead_circumflex> <a> : "\342" acircumflex
+<dead_circumflex> <i> : "\356" icircumflex
+<dead_circumflex> <o> : "\364" ocircumflex
+<dead_circumflex> <u> : "\373" ucircumflex
+<dead_diaeresis> <diaeresis> : "\250" diaeresis
+<dead_diaeresis> <dead_diaeresis> : "\250" diaeresis
+<dead_diaeresis> <A> : "\304" Adiaeresis
+<dead_diaeresis> <E> : "\313" Ediaeresis
+<dead_diaeresis> <O> : "\326" Odiaeresis
+<dead_diaeresis> <U> : "\334" Udiaeresis
+<dead_diaeresis> <a> : "\344" adiaeresis
+<dead_diaeresis> <e> : "\353" ediaeresis
+<dead_diaeresis> <o> : "\366" odiaeresis
+<dead_diaeresis> <u> : "\374" udiaeresis
+<dead_macron> <E> : "\252" Emacron
+<dead_macron> <macron> : "\257" macron
+<dead_macron> <dead_macron> : "\257" macron
+<dead_macron> <e> : "\272" emacron
+<dead_macron> <A> : "\300" Amacron
+<dead_macron> <I> : "\317" Imacron
+<dead_macron> <O> : "\322" Omacron
+<dead_macron> <U> : "\336" Umacron
+<dead_macron> <a> : "\340" amacron
+<dead_macron> <i> : "\357" imacron
+<dead_macron> <o> : "\362" omacron
+<dead_macron> <u> : "\376" umacron
+<dead_ogonek> <A> : "\241" Aogonek
+<dead_ogonek> <a> : "\261" aogonek
+<dead_ogonek> <ogonek> : "\262" ogonek
+<dead_ogonek> <dead_ogonek> : "\262" ogonek
+<dead_ogonek> <I> : "\307" Iogonek
+<dead_ogonek> <E> : "\312" Eogonek
+<dead_ogonek> <U> : "\331" Uogonek
+<dead_ogonek> <i> : "\347" iogonek
+<dead_ogonek> <e> : "\352" eogonek
+<dead_ogonek> <u> : "\371" uogonek
+<dead_abovering> <ring> : "\260" ring
+<dead_abovering> <dead_abovering> : "\260" ring
+<dead_tilde> <I> : "\245" Itilde
+<dead_tilde> <i> : "\265" itilde
+<dead_tilde> <A> : "\303" Atilde
+<dead_tilde> <O> : "\325" Otilde
+<dead_tilde> <U> : "\335" Utilde
+<dead_tilde> <a> : "\343" atilde
+<dead_tilde> <o> : "\365" otilde
+<dead_tilde> <u> : "\375" utilde
+<dead_tilde> <asciitilde> : "~" asciitilde
+<dead_tilde> <dead_tilde> : "~" asciitilde
+XCOMM End of Sequence Definition
diff --git a/libX11/nls/iso8859-4/XI18N_OBJS b/libX11/nls/iso8859-4/XI18N_OBJS
index 555fd4c4a..7404dab99 100644
--- a/libX11/nls/iso8859-4/XI18N_OBJS
+++ b/libX11/nls/iso8859-4/XI18N_OBJS
@@ -1,7 +1,7 @@
-# CATEGORY(XLC|XIM|OM) SHARED_LIBRARY_NAME FUNCTION_NAME
-#
-# XI18N objects table for iso8859-4 locale
-#
-XLC common/xlcDef _XlcDefaultLoader # XLC_open
-XIM common/ximcp _XimOpenIM _XimRegisterIMInstantiateCallback _XimUnRegisterIMInstantiateCallback # XIM_open XIM_register XIM_unregister
-XOM common/xomGeneric _XomGenericOpenOM # XOM_open
+# CATEGORY(XLC|XIM|OM) SHARED_LIBRARY_NAME FUNCTION_NAME
+#
+# XI18N objects table for iso8859-4 locale
+#
+XLC common/xlcDef _XlcDefaultLoader # XLC_open
+XIM common/ximcp _XimOpenIM _XimRegisterIMInstantiateCallback _XimUnRegisterIMInstantiateCallback # XIM_open XIM_register XIM_unregister
+XOM common/xomGeneric _XomGenericOpenOM # XOM_open
diff --git a/libX11/nls/iso8859-4/XLC_LOCALE.pre b/libX11/nls/iso8859-4/XLC_LOCALE.pre
index 9a484f807..9bf101d07 100644
--- a/libX11/nls/iso8859-4/XLC_LOCALE.pre
+++ b/libX11/nls/iso8859-4/XLC_LOCALE.pre
@@ -1,72 +1,72 @@
-XCOMM XLocale Database Sample for iso8859-4.
-XCOMM
-
-XCOMM
-XCOMM XLC_FONTSET category
-XCOMM
-XLC_FONTSET
-XCOMM fs0 class
-fs0 {
- charset {
- name ISO8859-1:GL
- }
- font {
- primary ISO8859-4:GL
- substitute ISO8859-1:GL
- vertical_rotate all
- }
-}
-XCOMM fs1 class
-fs1 {
- charset {
- name ISO8859-4:GR
- }
- font {
- primary ISO8859-4:GR
- }
-}
-END XLC_FONTSET
-
-XCOMM
-XCOMM XLC_XLOCALE category
-XCOMM
-XLC_XLOCALE
-
-encoding_name ISO8859-4
-mb_cur_max 1
-state_depend_encoding False
-#if WCHAR32
-wc_encoding_mask \x30000000
-wc_shift_bits 7
-#else
-wc_encoding_mask \x00008080
-wc_shift_bits 8
-#endif
-
-#ifndef X_LOCALE
-use_stdc_env True
-force_convert_to_mb True
-#endif
-
-XCOMM cs0 class
-cs0 {
- side GL:Default
- length 1
- wc_encoding \x00000000
- ct_encoding ISO8859-4:GL; ISO8859-1:GL
-}
-
-
-XCOMM cs1 class
-cs1 {
- side GR:Default
- length 1
-#if WCHAR32
- wc_encoding \x30000000
-#else
- wc_encoding \x00008080
-#endif
- ct_encoding ISO8859-4:GR
-}
-
-END XLC_XLOCALE
+XCOMM XLocale Database Sample for iso8859-4.
+XCOMM
+
+XCOMM
+XCOMM XLC_FONTSET category
+XCOMM
+XLC_FONTSET
+XCOMM fs0 class
+fs0 {
+ charset {
+ name ISO8859-1:GL
+ }
+ font {
+ primary ISO8859-4:GL
+ substitute ISO8859-1:GL
+ vertical_rotate all
+ }
+}
+XCOMM fs1 class
+fs1 {
+ charset {
+ name ISO8859-4:GR
+ }
+ font {
+ primary ISO8859-4:GR
+ }
+}
+END XLC_FONTSET
+
+XCOMM
+XCOMM XLC_XLOCALE category
+XCOMM
+XLC_XLOCALE
+
+encoding_name ISO8859-4
+mb_cur_max 1
+state_depend_encoding False
+#if WCHAR32
+wc_encoding_mask \x30000000
+wc_shift_bits 7
+#else
+wc_encoding_mask \x00008080
+wc_shift_bits 8
+#endif
+
+#ifndef X_LOCALE
+use_stdc_env True
+force_convert_to_mb True
+#endif
+
+XCOMM cs0 class
+cs0 {
+ side GL:Default
+ length 1
+ wc_encoding \x00000000
+ ct_encoding ISO8859-4:GL; ISO8859-1:GL
+}
+
+
+XCOMM cs1 class
+cs1 {
+ side GR:Default
+ length 1
+#if WCHAR32
+ wc_encoding \x30000000
+#else
+ wc_encoding \x00008080
+#endif
+ ct_encoding ISO8859-4:GR
+}
+
+END XLC_XLOCALE
diff --git a/libX11/nls/iso8859-5/Compose.pre b/libX11/nls/iso8859-5/Compose.pre
index 8c802fbbe..01ee440fe 100644
--- a/libX11/nls/iso8859-5/Compose.pre
+++ b/libX11/nls/iso8859-5/Compose.pre
@@ -1,14 +1,14 @@
-XCOMM
-XCOMM ISO 8859-5 Compose Sequence
-XCOMM
-XCOMM Sequence Definition
-XCOMM
-XCOMM
-XCOMM This file currently has no entries. It appears that a compose file (even
-XCOMM just an empty one) is required for the appropriate keysyms to work for
-XCOMM this encoding.
-XCOMM
-XCOMM <Multi_key> Means <Compose>
-XCOMM Special Character
-
-XCOMM End of Sequence Definition
+XCOMM
+XCOMM ISO 8859-5 Compose Sequence
+XCOMM
+XCOMM Sequence Definition
+XCOMM
+XCOMM
+XCOMM This file currently has no entries. It appears that a compose file (even
+XCOMM just an empty one) is required for the appropriate keysyms to work for
+XCOMM this encoding.
+XCOMM
+XCOMM <Multi_key> Means <Compose>
+XCOMM Special Character
+
+XCOMM End of Sequence Definition
diff --git a/libX11/nls/iso8859-5/XI18N_OBJS b/libX11/nls/iso8859-5/XI18N_OBJS
index daac7d36c..f20902a61 100644
--- a/libX11/nls/iso8859-5/XI18N_OBJS
+++ b/libX11/nls/iso8859-5/XI18N_OBJS
@@ -1,8 +1,8 @@
-# CATEGORY(XLC|XIM|OM) SHARED_LIBRARY_NAME FUNCTION_NAME
-#
-# XI18N objects table for euro locales
-#
-XLC common/xlibi18n _XlcGenericLoader # XLC_open
-XIM common/xiiimp _XimpLocalOpenIM # XIM_open
-XOM common/xomGeneric _XomGenericOpenOM # XOM_open
-
+# CATEGORY(XLC|XIM|OM) SHARED_LIBRARY_NAME FUNCTION_NAME
+#
+# XI18N objects table for euro locales
+#
+XLC common/xlibi18n _XlcGenericLoader # XLC_open
+XIM common/xiiimp _XimpLocalOpenIM # XIM_open
+XOM common/xomGeneric _XomGenericOpenOM # XOM_open
+
diff --git a/libX11/nls/iso8859-5/XLC_LOCALE.pre b/libX11/nls/iso8859-5/XLC_LOCALE.pre
index 70606c5ec..5a78709ac 100644
--- a/libX11/nls/iso8859-5/XLC_LOCALE.pre
+++ b/libX11/nls/iso8859-5/XLC_LOCALE.pre
@@ -1,72 +1,72 @@
-XCOMM XLocale Database Sample for iso8859-5.
-XCOMM
-
-XCOMM
-XCOMM XLC_FONTSET category
-XCOMM
-XLC_FONTSET
-XCOMM fs0 class
-fs0 {
- charset {
- name ISO8859-1:GL
- }
- font {
- primary ISO8859-5:GL
- substitute ISO8859-1:GL
- vertical_rotate all
- }
-}
-XCOMM fs1 class
-fs1 {
- charset {
- name ISO8859-5:GR
- }
- font {
- primary ISO8859-5:GR
- }
-}
-END XLC_FONTSET
-
-XCOMM
-XCOMM XLC_XLOCALE category
-XCOMM
-XLC_XLOCALE
-
-encoding_name ISO8859-5
-mb_cur_max 1
-state_depend_encoding False
-#if WCHAR32
-wc_encoding_mask \x30000000
-wc_shift_bits 7
-#else
-wc_encoding_mask \x00008080
-wc_shift_bits 8
-#endif
-
-#ifndef X_LOCALE
-use_stdc_env True
-force_convert_to_mb True
-#endif
-
-XCOMM cs0 class
-cs0 {
- side GL:Default
- length 1
- wc_encoding \x00000000
- ct_encoding ISO8859-5:GL; ISO8859-1:GL
-}
-
-
-XCOMM cs1 class
-cs1 {
- side GR:Default
- length 1
-#if WCHAR32
- wc_encoding \x30000000
-#else
- wc_encoding \x00008080
-#endif
- ct_encoding ISO8859-5:GR
-}
-
-END XLC_XLOCALE
+XCOMM XLocale Database Sample for iso8859-5.
+XCOMM
+
+XCOMM
+XCOMM XLC_FONTSET category
+XCOMM
+XLC_FONTSET
+XCOMM fs0 class
+fs0 {
+ charset {
+ name ISO8859-1:GL
+ }
+ font {
+ primary ISO8859-5:GL
+ substitute ISO8859-1:GL
+ vertical_rotate all
+ }
+}
+XCOMM fs1 class
+fs1 {
+ charset {
+ name ISO8859-5:GR
+ }
+ font {
+ primary ISO8859-5:GR
+ }
+}
+END XLC_FONTSET
+
+XCOMM
+XCOMM XLC_XLOCALE category
+XCOMM
+XLC_XLOCALE
+
+encoding_name ISO8859-5
+mb_cur_max 1
+state_depend_encoding False
+#if WCHAR32
+wc_encoding_mask \x30000000
+wc_shift_bits 7
+#else
+wc_encoding_mask \x00008080
+wc_shift_bits 8
+#endif
+
+#ifndef X_LOCALE
+use_stdc_env True
+force_convert_to_mb True
+#endif
+
+XCOMM cs0 class
+cs0 {
+ side GL:Default
+ length 1
+ wc_encoding \x00000000
+ ct_encoding ISO8859-5:GL; ISO8859-1:GL
+}
+
+
+XCOMM cs1 class
+cs1 {
+ side GR:Default
+ length 1
+#if WCHAR32
+ wc_encoding \x30000000
+#else
+ wc_encoding \x00008080
+#endif
+ ct_encoding ISO8859-5:GR
+}
+
+END XLC_XLOCALE
diff --git a/libX11/nls/iso8859-6/Compose.pre b/libX11/nls/iso8859-6/Compose.pre
index a43e4ffc2..cb033155f 100644
--- a/libX11/nls/iso8859-6/Compose.pre
+++ b/libX11/nls/iso8859-6/Compose.pre
@@ -1,14 +1,14 @@
-XCOMM
-XCOMM ISO 8859-6 Compose Sequence
-XCOMM
-XCOMM Sequence Definition
-XCOMM
-XCOMM
-XCOMM This file currently has no entries. It appears that a compose file (even
-XCOMM just an empty one) is required for the appropriate keysyms to work for
-XCOMM this encoding.
-XCOMM
-XCOMM <Multi_key> Means <Compose>
-XCOMM Special Character
-
-XCOMM End of Sequence Definition
+XCOMM
+XCOMM ISO 8859-6 Compose Sequence
+XCOMM
+XCOMM Sequence Definition
+XCOMM
+XCOMM
+XCOMM This file currently has no entries. It appears that a compose file (even
+XCOMM just an empty one) is required for the appropriate keysyms to work for
+XCOMM this encoding.
+XCOMM
+XCOMM <Multi_key> Means <Compose>
+XCOMM Special Character
+
+XCOMM End of Sequence Definition
diff --git a/libX11/nls/iso8859-6/XI18N_OBJS b/libX11/nls/iso8859-6/XI18N_OBJS
index da139ca5d..ab2d30076 100644
--- a/libX11/nls/iso8859-6/XI18N_OBJS
+++ b/libX11/nls/iso8859-6/XI18N_OBJS
@@ -1,7 +1,7 @@
-# CATEGORY(XLC|XIM|OM) SHARED_LIBRARY_NAME FUNCTION_NAME
-#
-# XI18N objects table for iso8859-6 locale
-#
-XLC common/xlcDef _XlcDefaultLoader # XLC_open
-XIM common/ximcp _XimOpenIM _XimRegisterIMInstantiateCallback _XimUnRegisterIMInstantiateCallback # XIM_open XIM_register XIM_unregister
-XOM common/xomGeneric _XomGenericOpenOM # XOM_open
+# CATEGORY(XLC|XIM|OM) SHARED_LIBRARY_NAME FUNCTION_NAME
+#
+# XI18N objects table for iso8859-6 locale
+#
+XLC common/xlcDef _XlcDefaultLoader # XLC_open
+XIM common/ximcp _XimOpenIM _XimRegisterIMInstantiateCallback _XimUnRegisterIMInstantiateCallback # XIM_open XIM_register XIM_unregister
+XOM common/xomGeneric _XomGenericOpenOM # XOM_open
diff --git a/libX11/nls/iso8859-6/XLC_LOCALE.pre b/libX11/nls/iso8859-6/XLC_LOCALE.pre
index 60a388741..5b0d4d4a5 100644
--- a/libX11/nls/iso8859-6/XLC_LOCALE.pre
+++ b/libX11/nls/iso8859-6/XLC_LOCALE.pre
@@ -1,72 +1,72 @@
-XCOMM XLocale Database Sample for iso8859-6.
-XCOMM
-
-XCOMM
-XCOMM XLC_FONTSET category
-XCOMM
-XLC_FONTSET
-XCOMM fs0 class
-fs0 {
- charset {
- name ISO8859-1:GL
- }
- font {
- primary ISO8859-6:GL
- substitute ISO8859-1:GL
- vertical_rotate all
- }
-}
-XCOMM fs1 class
-fs1 {
- charset {
- name ISO8859-6:GR
- }
- font {
- primary ISO8859-6:GR
- }
-}
-END XLC_FONTSET
-
-XCOMM
-XCOMM XLC_XLOCALE category
-XCOMM
-XLC_XLOCALE
-
-encoding_name ISO8859-6
-mb_cur_max 1
-state_depend_encoding False
-#if WCHAR32
-wc_encoding_mask \x30000000
-wc_shift_bits 7
-#else
-wc_encoding_mask \x00008080
-wc_shift_bits 8
-#endif
-
-#ifndef X_LOCALE
-use_stdc_env True
-force_convert_to_mb True
-#endif
-
-XCOMM cs0 class
-cs0 {
- side GL:Default
- length 1
- wc_encoding \x00000000
- ct_encoding ISO8859-6:GL; ISO8859-1:GL
-}
-
-
-XCOMM cs1 class
-cs1 {
- side GR:Default
- length 1
-#if WCHAR32
- wc_encoding \x30000000
-#else
- wc_encoding \x00008080
-#endif
- ct_encoding ISO8859-6:GR
-}
-
-END XLC_XLOCALE
+XCOMM XLocale Database Sample for iso8859-6.
+XCOMM
+
+XCOMM
+XCOMM XLC_FONTSET category
+XCOMM
+XLC_FONTSET
+XCOMM fs0 class
+fs0 {
+ charset {
+ name ISO8859-1:GL
+ }
+ font {
+ primary ISO8859-6:GL
+ substitute ISO8859-1:GL
+ vertical_rotate all
+ }
+}
+XCOMM fs1 class
+fs1 {
+ charset {
+ name ISO8859-6:GR
+ }
+ font {
+ primary ISO8859-6:GR
+ }
+}
+END XLC_FONTSET
+
+XCOMM
+XCOMM XLC_XLOCALE category
+XCOMM
+XLC_XLOCALE
+
+encoding_name ISO8859-6
+mb_cur_max 1
+state_depend_encoding False
+#if WCHAR32
+wc_encoding_mask \x30000000
+wc_shift_bits 7
+#else
+wc_encoding_mask \x00008080
+wc_shift_bits 8
+#endif
+
+#ifndef X_LOCALE
+use_stdc_env True
+force_convert_to_mb True
+#endif
+
+XCOMM cs0 class
+cs0 {
+ side GL:Default
+ length 1
+ wc_encoding \x00000000
+ ct_encoding ISO8859-6:GL; ISO8859-1:GL
+}
+
+
+XCOMM cs1 class
+cs1 {
+ side GR:Default
+ length 1
+#if WCHAR32
+ wc_encoding \x30000000
+#else
+ wc_encoding \x00008080
+#endif
+ ct_encoding ISO8859-6:GR
+}
+
+END XLC_XLOCALE
diff --git a/libX11/nls/iso8859-7/Compose.pre b/libX11/nls/iso8859-7/Compose.pre
index ca80de23c..c79b2773c 100644
--- a/libX11/nls/iso8859-7/Compose.pre
+++ b/libX11/nls/iso8859-7/Compose.pre
@@ -1,222 +1,222 @@
-XCOMM
-XCOMM ISO 8859-7 (Greek) Compose Sequence
-XCOMM
-XCOMM
-XCOMM
-XCOMM Sequence Definition
-XCOMM
-XCOMM <Multi_key> Means <Compose>
-XCOMM Special Character
-<Multi_key> <plus> <plus> : "#" numbersign
-<Multi_key> <apostrophe> <space> : "'" apostrophe
-<Multi_key> <space> <apostrophe> : "'" apostrophe
-<Multi_key> <A> <T> : "@" at
-<Multi_key> <parenleft> <parenleft> : "[" bracketleft
-<Multi_key> <slash> <slash> : "\\" backslash
-<Multi_key> <slash> <less> : "\\" backslash
-<Multi_key> <less> <slash> : "\\" backslash
-<Multi_key> <parenright> <parenright> : "]" bracketright
-<Multi_key> <asciicircum> <space> : "^" asciicircum
-<Multi_key> <space> <asciicircum> : "^" asciicircum
-<Multi_key> <greater> <space> : "^" asciicircum
-<Multi_key> <space> <greater> : "^" asciicircum
-<Multi_key> <grave> <space> : "`" grave
-<Multi_key> <space> <grave> : "`" grave
-<Multi_key> <parenleft> <minus> : "{" braceleft
-<Multi_key> <minus> <parenleft> : "{" braceleft
-<Multi_key> <slash> <asciicircum> : "|" bar
-<Multi_key> <asciicircum> <slash> : "|" bar
-<Multi_key> <V> <L> : "|" bar
-<Multi_key> <L> <V> : "|" bar
-<Multi_key> <v> <l> : "|" bar
-<Multi_key> <l> <v> : "|" bar
-<Multi_key> <parenright> <minus> : "}" braceright
-<Multi_key> <minus> <parenright> : "}" braceright
-<Multi_key> <asciitilde> <space> : "~" asciitilde
-<Multi_key> <space> <asciitilde> : "~" asciitilde
-<Multi_key> <minus> <space> : "~" asciitilde
-<Multi_key> <space> <minus> : "~" asciitilde
-
-<Multi_key> <l> <minus> : "\243" sterling
-<Multi_key> <minus> <l> : "\243" sterling
-<Multi_key> <L> <minus> : "\243" sterling
-<Multi_key> <minus> <L> : "\243" sterling
-<Multi_key> <l> <equal> : "\243" sterling
-<Multi_key> <equal> <l> : "\243" sterling
-<Multi_key> <L> <equal> : "\243" sterling
-<Multi_key> <equal> <L> : "\243" sterling
-<Multi_key> <s> <o> : "\247" section
-<Multi_key> <o> <s> : "\247" section
-<Multi_key> <S> <O> : "\247" section
-<Multi_key> <O> <S> : "\247" section
-<Multi_key> <S> <exclam> : "\247" section
-<Multi_key> <exclam> <S> : "\247" section
-<Multi_key> <s> <exclam> : "\247" section
-<Multi_key> <exclam> <s> : "\247" section
-<Multi_key> <S> <0> : "\247" section
-<Multi_key> <0> <S> : "\247" section
-<Multi_key> <s> <0> : "\247" section
-<Multi_key> <0> <s> : "\247" section
-<Multi_key> <c> <o> : "\251" copyright
-<Multi_key> <o> <c> : "\251" copyright
-<Multi_key> <C> <O> : "\251" copyright
-<Multi_key> <O> <C> : "\251" copyright
-<Multi_key> <c> <O> : "\251" copyright
-<Multi_key> <O> <c> : "\251" copyright
-<Multi_key> <C> <o> : "\251" copyright
-<Multi_key> <o> <C> : "\251" copyright
-<Multi_key> <c> <0> : "\251" copyright
-<Multi_key> <0> <c> : "\251" copyright
-<Multi_key> <C> <0> : "\251" copyright
-<Multi_key> <0> <C> : "\251" copyright
-<Multi_key> <parenleft> <c> : "\251" copyright
-<Multi_key> <less> <less> : "\253" guillemotleft
-<Multi_key> <greater> <greater> : "\273" guillemotright
-<Multi_key> <0> <asciicircum> : "\260" degree
-<Multi_key> <asciicircum> <0> : "\260" degree
-<Multi_key> <0> <asterisk> : "\260" degree
-<Multi_key> <asterisk> <0> : "\260" degree
-<Multi_key> <plus> <minus> : "\261" plusminus
-<Multi_key> <minus> <plus> : "\261" plusminus
-<Multi_key> <2> <asciicircum> : "\262" twosuperior
-<Multi_key> <asciicircum> <2> : "\262" twosuperior
-<Multi_key> <S> <2> : "\262" twosuperior
-<Multi_key> <2> <S> : "\262" twosuperior
-<Multi_key> <s> <2> : "\262" twosuperior
-<Multi_key> <2> <s> : "\262" twosuperior
-<Multi_key> <3> <asciicircum> : "\263" threesuperior
-<Multi_key> <asciicircum> <3> : "\263" threesuperior
-<Multi_key> <S> <3> : "\263" threesuperior
-<Multi_key> <3> <S> : "\263" threesuperior
-<Multi_key> <s> <3> : "\263" threesuperior
-<Multi_key> <3> <s> : "\263" threesuperior
-<Multi_key> <period> <asciicircum> : "\267" periodcentered
-<Multi_key> <asciicircum> <period> : "\267" periodcentered
-<Multi_key> <period> <period> : "\267" periodcentered
-<Multi_key> <1> <2> : "\275" onehalf
-<Multi_key> <space> <space> : "\240" nobreakspace
-<Multi_key> <bar> <bar> : "\246" brokenbar
-<Multi_key> <exclam> <asciicircum> : "\246" brokenbar
-<Multi_key> <asciicircum> <exclam> : "\246" brokenbar
-<Multi_key> <V> <B> : "\246" brokenbar
-<Multi_key> <B> <V> : "\246" brokenbar
-<Multi_key> <v> <b> : "\246" brokenbar
-<Multi_key> <b> <v> : "\246" brokenbar
-<Multi_key> <minus> <comma> : "\254" notsign
-<Multi_key> <comma> <minus> : "\254" notsign
-<Multi_key> <minus> <minus> : "\255" hyphen
-XCOMM should be Greek tonos but not defined in X11
-<Multi_key> <apostrophe> <apostrophe> : "\264" acute
-XCOMM should be Greek dialytika but not defined in X11
-<Multi_key> <quotedbl> <quotedbl> : "\250" diaeresis
-XCOMM special characters that don't exist in Latin-1
-<Multi_key> <less> <apostrophe> : "\241" leftsinglequotemark
-<Multi_key> <apostrophe> <less> : "\241" leftsinglequotemark
-<Multi_key> <greater> <apostrophe> : "\242" rightsinglequotemark
-<Multi_key> <apostrophe> <greater> : "\242" rightsinglequotemark
-<Multi_key> <asciitilde> <asciitilde> : "\257" Greek_horizbar
-
-XCOMM Accented Alphabet
-<Multi_key> <Greek_ALPHA> <apostrophe> : "\266" Greek_ALPHAaccent
-<Multi_key> <apostrophe> <Greek_ALPHA> : "\266" Greek_ALPHAaccent
-<Multi_key> <Greek_EPSILON> <apostrophe>: "\270" Greek_EPSILONaccent
-<Multi_key> <apostrophe> <Greek_EPSILON>: "\270" Greek_EPSILONaccent
-<Multi_key> <Greek_ETA> <apostrophe> : "\271" Greek_ETAaccent
-<Multi_key> <apostrophe> <Greek_ETA> : "\271" Greek_ETAaccent
-<Multi_key> <Greek_IOTA> <apostrophe> : "\272" Greek_IOTAaccent
-<Multi_key> <apostrophe> <Greek_IOTA> : "\272" Greek_IOTAaccent
-<Multi_key> <Greek_OMICRON> <apostrophe>: "\274" Greek_OMICRONaccent
-<Multi_key> <apostrophe> <Greek_OMICRON>: "\274" Greek_OMICRONaccent
-<Multi_key> <Greek_UPSILON> <apostrophe>: "\276" Greek_UPSILONaccent
-<Multi_key> <apostrophe> <Greek_UPSILON>: "\276" Greek_UPSILONaccent
-<Multi_key> <Greek_OMEGA> <apostrophe> : "\277" Greek_OMEGAaccent
-<Multi_key> <apostrophe> <Greek_OMEGA> : "\277" Greek_OMEGAaccent
-<Multi_key> <Greek_IOTA> <quotedbl> : "\332" Greek_IOTAdieresis
-<Multi_key> <quotedbl> <Greek_IOTA> : "\332" Greek_IOTAdieresis
-<Multi_key> <Greek_UPSILON> <quotedbl> : "\333" Greek_UPSILONdieresis
-<Multi_key> <quotedbl> <Greek_UPSILON> : "\333" Greek_UPSILONdieresis
-
-<Multi_key> <Greek_alpha> <apostrophe> : "\334" Greek_alphaaccent
-<Multi_key> <apostrophe> <Greek_alpha> : "\334" Greek_alphaaccent
-<Multi_key> <Greek_epsilon> <apostrophe>: "\335" Greek_epsilonaccent
-<Multi_key> <apostrophe> <Greek_epsilon>: "\335" Greek_epsilonaccent
-<Multi_key> <Greek_eta> <apostrophe> : "\336" Greek_etaaccent
-<Multi_key> <apostrophe> <Greek_eta> : "\336" Greek_etaaccent
-<Multi_key> <Greek_iota> <apostrophe> : "\337" Greek_iotaaccent
-<Multi_key> <apostrophe> <Greek_iota> : "\337" Greek_iotaaccent
-<Multi_key> <Greek_omicron> <apostrophe>: "\374" Greek_omicronaccent
-<Multi_key> <apostrophe> <Greek_omicron>: "\374" Greek_omicronaccent
-<Multi_key> <Greek_upsilon> <apostrophe>: "\375" Greek_upsilonaccent
-<Multi_key> <apostrophe> <Greek_upsilon>: "\375" Greek_upsilonaccent
-<Multi_key> <Greek_omega> <apostrophe> : "\376" Greek_omegaaccent
-<Multi_key> <apostrophe> <Greek_omega> : "\376" Greek_omegaaccent
-<Multi_key> <Greek_iota> <quotedbl> : "\372" Greek_iotadieresis
-<Multi_key> <quotedbl> <Greek_iota> : "\372" Greek_iotadieresis
-<Multi_key> <Greek_upsilon> <quotedbl> : "\373" Greek_upsilondieresis
-<Multi_key> <quotedbl> <Greek_upsilon> : "\373" Greek_upsilondieresis
-
-<Multi_key> <apostrophe> <quotedbl> <Greek_iota> : "\300" Greek_iotaaccentdieresis
-<Multi_key> <quotedbl> <apostrophe> <Greek_iota> : "\300" Greek_iotaaccentdieresis
-<Multi_key> <apostrophe> <quotedbl> <Greek_upsilon> : "\340" Greek_upsilonaccentdieresis
-<Multi_key> <quotedbl> <apostrophe> <Greek_upsilon> : "\340" Greek_upsilonaccentdieresis
-<Multi_key> <apostrophe> <quotedbl> <space> : "\265" Greek_accentdieresis
-<Multi_key> <quotedbl> <apostrophe> <space> : "\265" Greek_accentdieresis
-
-XCOMM
-XCOMM
-XCOMM dead key accent keysyms
-XCOMM Special Character
-<dead_circumflex> <slash> : "|" bar
-<dead_grave> <space> : "`" grave
-<dead_diaeresis> <space> : "\250" diaeresis
-<dead_circumflex> <space> : "^" asciicircum
-<dead_tilde> <space> : "~" asciitilde
-<dead_doubleacute> <space> : "\"" quotedbl
-<dead_abovering> <space> : "\260" degree
-<dead_abovering> <dead_abovering> : "\260" degree
-<dead_circumflex> <0> : "\260" degree
-<dead_circumflex> <2> : "\262" twosuperior
-<dead_circumflex> <3> : "\263" threesuperior
-<dead_circumflex> <period> : "\267" periodcentered
-<dead_circumflex> <exclam> : "\246" brokenbar
-<dead_cedilla> <minus> : "\254" notsign
-<dead_acute> <apostrophe> : "\264" acute
-<dead_diaeresis> <quotedbl> : "\250" diaeresis
-
-XCOMM Accented Alphabet (plus some more symbols)
-<dead_acute> <Greek_alpha> : "\334" Greek_alphaaccent
-<dead_acute> <Greek_epsilon> : "\335" Greek_epsilonaccent
-<dead_acute> <Greek_eta> : "\336" Greek_etaaccent
-<dead_acute> <Greek_iota> : "\337" Greek_iotaaccent
-<dead_acute> <Greek_omicron> : "\374" Greek_omicronaccent
-<dead_acute> <Greek_upsilon> : "\375" Greek_upsilonaccent
-<dead_acute> <Greek_omega> : "\376" Greek_omegaaccent
-<dead_acute> <Greek_ALPHA> : "\266" Greek_ALPHAaccent
-<dead_acute> <Greek_EPSILON> : "\270" Greek_EPSILONaccent
-<dead_acute> <Greek_ETA> : "\271" Greek_ETAaccent
-<dead_acute> <Greek_IOTA> : "\272" Greek_IOTAaccent
-<dead_acute> <Greek_OMICRON> : "\274" Greek_OMICRONaccent
-<dead_acute> <Greek_UPSILON> : "\276" Greek_UPSILONaccent
-<dead_acute> <Greek_OMEGA> : "\277" Greek_OMEGAaccent
-<dead_acute> <space> : "\264" acute
-<dead_acute> <dead_acute> : "\264" acute
-<dead_acute> <period> : "\267" periodcentered
-<dead_acute> <less> : "\253" guillemotleft
-<dead_acute> <greater> : "\273" guillemotright
-
-<dead_diaeresis> <Greek_iota> : "\372" Greek_iotadieresis
-<dead_diaeresis> <Greek_upsilon> : "\373" Greek_upsilondieresis
-<dead_diaeresis> <Greek_IOTA> : "\332" Greek_IOTAdieresis
-<dead_diaeresis> <Greek_UPSILON> : "\333" Greek_UPSILONdieresis
-<dead_diaeresis> <dead_diaeresis> : "\250" diaeresis
-<dead_diaeresis> <period> : "\267" periodcentered
-<dead_diaeresis> <less> : "\253" guillemotleft
-<dead_diaeresis> <greater> : "\273" guillemotright
-
-<dead_acute> <dead_diaeresis> <Greek_iota> : "\300" Greek_iotaaccentdieresis
-<dead_acute> <dead_diaeresis> <Greek_upsilon> : "\340" Greek_upsilonaccentdieresis
-<dead_acute> <dead_diaeresis> <space> : "\265" Greek_accentdieresis
-
-<dead_diaeresis> <dead_acute> <Greek_iota> : "\300" Greek_iotaaccentdieresis
-<dead_diaeresis> <dead_acute> <Greek_upsilon> : "\340" Greek_upsilonaccentdieresis
-<dead_diaeresis> <dead_acute> <space> : "\265" Greek_accentdieresis
+XCOMM
+XCOMM ISO 8859-7 (Greek) Compose Sequence
+XCOMM
+XCOMM
+XCOMM
+XCOMM Sequence Definition
+XCOMM
+XCOMM <Multi_key> Means <Compose>
+XCOMM Special Character
+<Multi_key> <plus> <plus> : "#" numbersign
+<Multi_key> <apostrophe> <space> : "'" apostrophe
+<Multi_key> <space> <apostrophe> : "'" apostrophe
+<Multi_key> <A> <T> : "@" at
+<Multi_key> <parenleft> <parenleft> : "[" bracketleft
+<Multi_key> <slash> <slash> : "\\" backslash
+<Multi_key> <slash> <less> : "\\" backslash
+<Multi_key> <less> <slash> : "\\" backslash
+<Multi_key> <parenright> <parenright> : "]" bracketright
+<Multi_key> <asciicircum> <space> : "^" asciicircum
+<Multi_key> <space> <asciicircum> : "^" asciicircum
+<Multi_key> <greater> <space> : "^" asciicircum
+<Multi_key> <space> <greater> : "^" asciicircum
+<Multi_key> <grave> <space> : "`" grave
+<Multi_key> <space> <grave> : "`" grave
+<Multi_key> <parenleft> <minus> : "{" braceleft
+<Multi_key> <minus> <parenleft> : "{" braceleft
+<Multi_key> <slash> <asciicircum> : "|" bar
+<Multi_key> <asciicircum> <slash> : "|" bar
+<Multi_key> <V> <L> : "|" bar
+<Multi_key> <L> <V> : "|" bar
+<Multi_key> <v> <l> : "|" bar
+<Multi_key> <l> <v> : "|" bar
+<Multi_key> <parenright> <minus> : "}" braceright
+<Multi_key> <minus> <parenright> : "}" braceright
+<Multi_key> <asciitilde> <space> : "~" asciitilde
+<Multi_key> <space> <asciitilde> : "~" asciitilde
+<Multi_key> <minus> <space> : "~" asciitilde
+<Multi_key> <space> <minus> : "~" asciitilde
+
+<Multi_key> <l> <minus> : "\243" sterling
+<Multi_key> <minus> <l> : "\243" sterling
+<Multi_key> <L> <minus> : "\243" sterling
+<Multi_key> <minus> <L> : "\243" sterling
+<Multi_key> <l> <equal> : "\243" sterling
+<Multi_key> <equal> <l> : "\243" sterling
+<Multi_key> <L> <equal> : "\243" sterling
+<Multi_key> <equal> <L> : "\243" sterling
+<Multi_key> <s> <o> : "\247" section
+<Multi_key> <o> <s> : "\247" section
+<Multi_key> <S> <O> : "\247" section
+<Multi_key> <O> <S> : "\247" section
+<Multi_key> <S> <exclam> : "\247" section
+<Multi_key> <exclam> <S> : "\247" section
+<Multi_key> <s> <exclam> : "\247" section
+<Multi_key> <exclam> <s> : "\247" section
+<Multi_key> <S> <0> : "\247" section
+<Multi_key> <0> <S> : "\247" section
+<Multi_key> <s> <0> : "\247" section
+<Multi_key> <0> <s> : "\247" section
+<Multi_key> <c> <o> : "\251" copyright
+<Multi_key> <o> <c> : "\251" copyright
+<Multi_key> <C> <O> : "\251" copyright
+<Multi_key> <O> <C> : "\251" copyright
+<Multi_key> <c> <O> : "\251" copyright
+<Multi_key> <O> <c> : "\251" copyright
+<Multi_key> <C> <o> : "\251" copyright
+<Multi_key> <o> <C> : "\251" copyright
+<Multi_key> <c> <0> : "\251" copyright
+<Multi_key> <0> <c> : "\251" copyright
+<Multi_key> <C> <0> : "\251" copyright
+<Multi_key> <0> <C> : "\251" copyright
+<Multi_key> <parenleft> <c> : "\251" copyright
+<Multi_key> <less> <less> : "\253" guillemotleft
+<Multi_key> <greater> <greater> : "\273" guillemotright
+<Multi_key> <0> <asciicircum> : "\260" degree
+<Multi_key> <asciicircum> <0> : "\260" degree
+<Multi_key> <0> <asterisk> : "\260" degree
+<Multi_key> <asterisk> <0> : "\260" degree
+<Multi_key> <plus> <minus> : "\261" plusminus
+<Multi_key> <minus> <plus> : "\261" plusminus
+<Multi_key> <2> <asciicircum> : "\262" twosuperior
+<Multi_key> <asciicircum> <2> : "\262" twosuperior
+<Multi_key> <S> <2> : "\262" twosuperior
+<Multi_key> <2> <S> : "\262" twosuperior
+<Multi_key> <s> <2> : "\262" twosuperior
+<Multi_key> <2> <s> : "\262" twosuperior
+<Multi_key> <3> <asciicircum> : "\263" threesuperior
+<Multi_key> <asciicircum> <3> : "\263" threesuperior
+<Multi_key> <S> <3> : "\263" threesuperior
+<Multi_key> <3> <S> : "\263" threesuperior
+<Multi_key> <s> <3> : "\263" threesuperior
+<Multi_key> <3> <s> : "\263" threesuperior
+<Multi_key> <period> <asciicircum> : "\267" periodcentered
+<Multi_key> <asciicircum> <period> : "\267" periodcentered
+<Multi_key> <period> <period> : "\267" periodcentered
+<Multi_key> <1> <2> : "\275" onehalf
+<Multi_key> <space> <space> : "\240" nobreakspace
+<Multi_key> <bar> <bar> : "\246" brokenbar
+<Multi_key> <exclam> <asciicircum> : "\246" brokenbar
+<Multi_key> <asciicircum> <exclam> : "\246" brokenbar
+<Multi_key> <V> <B> : "\246" brokenbar
+<Multi_key> <B> <V> : "\246" brokenbar
+<Multi_key> <v> <b> : "\246" brokenbar
+<Multi_key> <b> <v> : "\246" brokenbar
+<Multi_key> <minus> <comma> : "\254" notsign
+<Multi_key> <comma> <minus> : "\254" notsign
+<Multi_key> <minus> <minus> : "\255" hyphen
+XCOMM should be Greek tonos but not defined in X11
+<Multi_key> <apostrophe> <apostrophe> : "\264" acute
+XCOMM should be Greek dialytika but not defined in X11
+<Multi_key> <quotedbl> <quotedbl> : "\250" diaeresis
+XCOMM special characters that don't exist in Latin-1
+<Multi_key> <less> <apostrophe> : "\241" leftsinglequotemark
+<Multi_key> <apostrophe> <less> : "\241" leftsinglequotemark
+<Multi_key> <greater> <apostrophe> : "\242" rightsinglequotemark
+<Multi_key> <apostrophe> <greater> : "\242" rightsinglequotemark
+<Multi_key> <asciitilde> <asciitilde> : "\257" Greek_horizbar
+
+XCOMM Accented Alphabet
+<Multi_key> <Greek_ALPHA> <apostrophe> : "\266" Greek_ALPHAaccent
+<Multi_key> <apostrophe> <Greek_ALPHA> : "\266" Greek_ALPHAaccent
+<Multi_key> <Greek_EPSILON> <apostrophe>: "\270" Greek_EPSILONaccent
+<Multi_key> <apostrophe> <Greek_EPSILON>: "\270" Greek_EPSILONaccent
+<Multi_key> <Greek_ETA> <apostrophe> : "\271" Greek_ETAaccent
+<Multi_key> <apostrophe> <Greek_ETA> : "\271" Greek_ETAaccent
+<Multi_key> <Greek_IOTA> <apostrophe> : "\272" Greek_IOTAaccent
+<Multi_key> <apostrophe> <Greek_IOTA> : "\272" Greek_IOTAaccent
+<Multi_key> <Greek_OMICRON> <apostrophe>: "\274" Greek_OMICRONaccent
+<Multi_key> <apostrophe> <Greek_OMICRON>: "\274" Greek_OMICRONaccent
+<Multi_key> <Greek_UPSILON> <apostrophe>: "\276" Greek_UPSILONaccent
+<Multi_key> <apostrophe> <Greek_UPSILON>: "\276" Greek_UPSILONaccent
+<Multi_key> <Greek_OMEGA> <apostrophe> : "\277" Greek_OMEGAaccent
+<Multi_key> <apostrophe> <Greek_OMEGA> : "\277" Greek_OMEGAaccent
+<Multi_key> <Greek_IOTA> <quotedbl> : "\332" Greek_IOTAdieresis
+<Multi_key> <quotedbl> <Greek_IOTA> : "\332" Greek_IOTAdieresis
+<Multi_key> <Greek_UPSILON> <quotedbl> : "\333" Greek_UPSILONdieresis
+<Multi_key> <quotedbl> <Greek_UPSILON> : "\333" Greek_UPSILONdieresis
+
+<Multi_key> <Greek_alpha> <apostrophe> : "\334" Greek_alphaaccent
+<Multi_key> <apostrophe> <Greek_alpha> : "\334" Greek_alphaaccent
+<Multi_key> <Greek_epsilon> <apostrophe>: "\335" Greek_epsilonaccent
+<Multi_key> <apostrophe> <Greek_epsilon>: "\335" Greek_epsilonaccent
+<Multi_key> <Greek_eta> <apostrophe> : "\336" Greek_etaaccent
+<Multi_key> <apostrophe> <Greek_eta> : "\336" Greek_etaaccent
+<Multi_key> <Greek_iota> <apostrophe> : "\337" Greek_iotaaccent
+<Multi_key> <apostrophe> <Greek_iota> : "\337" Greek_iotaaccent
+<Multi_key> <Greek_omicron> <apostrophe>: "\374" Greek_omicronaccent
+<Multi_key> <apostrophe> <Greek_omicron>: "\374" Greek_omicronaccent
+<Multi_key> <Greek_upsilon> <apostrophe>: "\375" Greek_upsilonaccent
+<Multi_key> <apostrophe> <Greek_upsilon>: "\375" Greek_upsilonaccent
+<Multi_key> <Greek_omega> <apostrophe> : "\376" Greek_omegaaccent
+<Multi_key> <apostrophe> <Greek_omega> : "\376" Greek_omegaaccent
+<Multi_key> <Greek_iota> <quotedbl> : "\372" Greek_iotadieresis
+<Multi_key> <quotedbl> <Greek_iota> : "\372" Greek_iotadieresis
+<Multi_key> <Greek_upsilon> <quotedbl> : "\373" Greek_upsilondieresis
+<Multi_key> <quotedbl> <Greek_upsilon> : "\373" Greek_upsilondieresis
+
+<Multi_key> <apostrophe> <quotedbl> <Greek_iota> : "\300" Greek_iotaaccentdieresis
+<Multi_key> <quotedbl> <apostrophe> <Greek_iota> : "\300" Greek_iotaaccentdieresis
+<Multi_key> <apostrophe> <quotedbl> <Greek_upsilon> : "\340" Greek_upsilonaccentdieresis
+<Multi_key> <quotedbl> <apostrophe> <Greek_upsilon> : "\340" Greek_upsilonaccentdieresis
+<Multi_key> <apostrophe> <quotedbl> <space> : "\265" Greek_accentdieresis
+<Multi_key> <quotedbl> <apostrophe> <space> : "\265" Greek_accentdieresis
+
+XCOMM
+XCOMM
+XCOMM dead key accent keysyms
+XCOMM Special Character
+<dead_circumflex> <slash> : "|" bar
+<dead_grave> <space> : "`" grave
+<dead_diaeresis> <space> : "\250" diaeresis
+<dead_circumflex> <space> : "^" asciicircum
+<dead_tilde> <space> : "~" asciitilde
+<dead_doubleacute> <space> : "\"" quotedbl
+<dead_abovering> <space> : "\260" degree
+<dead_abovering> <dead_abovering> : "\260" degree
+<dead_circumflex> <0> : "\260" degree
+<dead_circumflex> <2> : "\262" twosuperior
+<dead_circumflex> <3> : "\263" threesuperior
+<dead_circumflex> <period> : "\267" periodcentered
+<dead_circumflex> <exclam> : "\246" brokenbar
+<dead_cedilla> <minus> : "\254" notsign
+<dead_acute> <apostrophe> : "\264" acute
+<dead_diaeresis> <quotedbl> : "\250" diaeresis
+
+XCOMM Accented Alphabet (plus some more symbols)
+<dead_acute> <Greek_alpha> : "\334" Greek_alphaaccent
+<dead_acute> <Greek_epsilon> : "\335" Greek_epsilonaccent
+<dead_acute> <Greek_eta> : "\336" Greek_etaaccent
+<dead_acute> <Greek_iota> : "\337" Greek_iotaaccent
+<dead_acute> <Greek_omicron> : "\374" Greek_omicronaccent
+<dead_acute> <Greek_upsilon> : "\375" Greek_upsilonaccent
+<dead_acute> <Greek_omega> : "\376" Greek_omegaaccent
+<dead_acute> <Greek_ALPHA> : "\266" Greek_ALPHAaccent
+<dead_acute> <Greek_EPSILON> : "\270" Greek_EPSILONaccent
+<dead_acute> <Greek_ETA> : "\271" Greek_ETAaccent
+<dead_acute> <Greek_IOTA> : "\272" Greek_IOTAaccent
+<dead_acute> <Greek_OMICRON> : "\274" Greek_OMICRONaccent
+<dead_acute> <Greek_UPSILON> : "\276" Greek_UPSILONaccent
+<dead_acute> <Greek_OMEGA> : "\277" Greek_OMEGAaccent
+<dead_acute> <space> : "\264" acute
+<dead_acute> <dead_acute> : "\264" acute
+<dead_acute> <period> : "\267" periodcentered
+<dead_acute> <less> : "\253" guillemotleft
+<dead_acute> <greater> : "\273" guillemotright
+
+<dead_diaeresis> <Greek_iota> : "\372" Greek_iotadieresis
+<dead_diaeresis> <Greek_upsilon> : "\373" Greek_upsilondieresis
+<dead_diaeresis> <Greek_IOTA> : "\332" Greek_IOTAdieresis
+<dead_diaeresis> <Greek_UPSILON> : "\333" Greek_UPSILONdieresis
+<dead_diaeresis> <dead_diaeresis> : "\250" diaeresis
+<dead_diaeresis> <period> : "\267" periodcentered
+<dead_diaeresis> <less> : "\253" guillemotleft
+<dead_diaeresis> <greater> : "\273" guillemotright
+
+<dead_acute> <dead_diaeresis> <Greek_iota> : "\300" Greek_iotaaccentdieresis
+<dead_acute> <dead_diaeresis> <Greek_upsilon> : "\340" Greek_upsilonaccentdieresis
+<dead_acute> <dead_diaeresis> <space> : "\265" Greek_accentdieresis
+
+<dead_diaeresis> <dead_acute> <Greek_iota> : "\300" Greek_iotaaccentdieresis
+<dead_diaeresis> <dead_acute> <Greek_upsilon> : "\340" Greek_upsilonaccentdieresis
+<dead_diaeresis> <dead_acute> <space> : "\265" Greek_accentdieresis
diff --git a/libX11/nls/iso8859-7/XI18N_OBJS b/libX11/nls/iso8859-7/XI18N_OBJS
index daac7d36c..f20902a61 100644
--- a/libX11/nls/iso8859-7/XI18N_OBJS
+++ b/libX11/nls/iso8859-7/XI18N_OBJS
@@ -1,8 +1,8 @@
-# CATEGORY(XLC|XIM|OM) SHARED_LIBRARY_NAME FUNCTION_NAME
-#
-# XI18N objects table for euro locales
-#
-XLC common/xlibi18n _XlcGenericLoader # XLC_open
-XIM common/xiiimp _XimpLocalOpenIM # XIM_open
-XOM common/xomGeneric _XomGenericOpenOM # XOM_open
-
+# CATEGORY(XLC|XIM|OM) SHARED_LIBRARY_NAME FUNCTION_NAME
+#
+# XI18N objects table for euro locales
+#
+XLC common/xlibi18n _XlcGenericLoader # XLC_open
+XIM common/xiiimp _XimpLocalOpenIM # XIM_open
+XOM common/xomGeneric _XomGenericOpenOM # XOM_open
+
diff --git a/libX11/nls/iso8859-7/XLC_LOCALE.pre b/libX11/nls/iso8859-7/XLC_LOCALE.pre
index a40fd8894..9910bbe43 100644
--- a/libX11/nls/iso8859-7/XLC_LOCALE.pre
+++ b/libX11/nls/iso8859-7/XLC_LOCALE.pre
@@ -1,72 +1,72 @@
-XCOMM XLocale Database Sample for iso8859-7.
-XCOMM
-
-XCOMM
-XCOMM XLC_FONTSET category
-XCOMM
-XLC_FONTSET
-XCOMM fs0 class
-fs0 {
- charset {
- name ISO8859-1:GL
- }
- font {
- primary ISO8859-7:GL
- substitute ISO8859-1:GL
- vertical_rotate all
- }
-}
-XCOMM fs1 class
-fs1 {
- charset {
- name ISO8859-7:GR
- }
- font {
- primary ISO8859-7:GR
- }
-}
-END XLC_FONTSET
-
-XCOMM
-XCOMM XLC_XLOCALE category
-XCOMM
-XLC_XLOCALE
-
-encoding_name ISO8859-7
-mb_cur_max 1
-state_depend_encoding False
-#if WCHAR32
-wc_encoding_mask \x30000000
-wc_shift_bits 7
-#else
-wc_encoding_mask \x00008080
-wc_shift_bits 8
-#endif
-
-#ifndef X_LOCALE
-use_stdc_env True
-force_convert_to_mb True
-#endif
-
-XCOMM cs0 class
-cs0 {
- side GL:Default
- length 1
- wc_encoding \x00000000
- ct_encoding ISO8859-7:GL; ISO8859-1:GL
-}
-
-
-XCOMM cs1 class
-cs1 {
- side GR:Default
- length 1
-#if WCHAR32
- wc_encoding \x30000000
-#else
- wc_encoding \x00008080
-#endif
- ct_encoding ISO8859-7:GR
-}
-
-END XLC_XLOCALE
+XCOMM XLocale Database Sample for iso8859-7.
+XCOMM
+
+XCOMM
+XCOMM XLC_FONTSET category
+XCOMM
+XLC_FONTSET
+XCOMM fs0 class
+fs0 {
+ charset {
+ name ISO8859-1:GL
+ }
+ font {
+ primary ISO8859-7:GL
+ substitute ISO8859-1:GL
+ vertical_rotate all
+ }
+}
+XCOMM fs1 class
+fs1 {
+ charset {
+ name ISO8859-7:GR
+ }
+ font {
+ primary ISO8859-7:GR
+ }
+}
+END XLC_FONTSET
+
+XCOMM
+XCOMM XLC_XLOCALE category
+XCOMM
+XLC_XLOCALE
+
+encoding_name ISO8859-7
+mb_cur_max 1
+state_depend_encoding False
+#if WCHAR32
+wc_encoding_mask \x30000000
+wc_shift_bits 7
+#else
+wc_encoding_mask \x00008080
+wc_shift_bits 8
+#endif
+
+#ifndef X_LOCALE
+use_stdc_env True
+force_convert_to_mb True
+#endif
+
+XCOMM cs0 class
+cs0 {
+ side GL:Default
+ length 1
+ wc_encoding \x00000000
+ ct_encoding ISO8859-7:GL; ISO8859-1:GL
+}
+
+
+XCOMM cs1 class
+cs1 {
+ side GR:Default
+ length 1
+#if WCHAR32
+ wc_encoding \x30000000
+#else
+ wc_encoding \x00008080
+#endif
+ ct_encoding ISO8859-7:GR
+}
+
+END XLC_XLOCALE
diff --git a/libX11/nls/iso8859-8/Compose.pre b/libX11/nls/iso8859-8/Compose.pre
index ba1c8318c..1ca90c720 100644
--- a/libX11/nls/iso8859-8/Compose.pre
+++ b/libX11/nls/iso8859-8/Compose.pre
@@ -1,14 +1,14 @@
-XCOMM
-XCOMM ISO 8859-8 Compose Sequence
-XCOMM
-XCOMM Sequence Definition
-XCOMM
-XCOMM
-XCOMM This file currently has no entries. It appears that a compose file (even
-XCOMM just an empty one) is required for the appropriate keysyms to work for
-XCOMM this encoding.
-XCOMM
-XCOMM <Multi_key> Means <Compose>
-XCOMM Special Character
-
-XCOMM End of Sequence Definition
+XCOMM
+XCOMM ISO 8859-8 Compose Sequence
+XCOMM
+XCOMM Sequence Definition
+XCOMM
+XCOMM
+XCOMM This file currently has no entries. It appears that a compose file (even
+XCOMM just an empty one) is required for the appropriate keysyms to work for
+XCOMM this encoding.
+XCOMM
+XCOMM <Multi_key> Means <Compose>
+XCOMM Special Character
+
+XCOMM End of Sequence Definition
diff --git a/libX11/nls/iso8859-8/XI18N_OBJS b/libX11/nls/iso8859-8/XI18N_OBJS
index 7cd2436ce..e85b513b3 100644
--- a/libX11/nls/iso8859-8/XI18N_OBJS
+++ b/libX11/nls/iso8859-8/XI18N_OBJS
@@ -1,7 +1,7 @@
-# CATEGORY(XLC|XIM|OM) SHARED_LIBRARY_NAME FUNCTION_NAME
-#
-# XI18N objects table for iso8859-8 locale
-#
-XLC common/xlcDef _XlcDefaultLoader # XLC_open
-XIM common/ximcp _XimOpenIM _XimRegisterIMInstantiateCallback _XimUnRegisterIMInstantiateCallback # XIM_open XIM_register XIM_unregister
-XOM common/xomGeneric _XomGenericOpenOM # XOM_open
+# CATEGORY(XLC|XIM|OM) SHARED_LIBRARY_NAME FUNCTION_NAME
+#
+# XI18N objects table for iso8859-8 locale
+#
+XLC common/xlcDef _XlcDefaultLoader # XLC_open
+XIM common/ximcp _XimOpenIM _XimRegisterIMInstantiateCallback _XimUnRegisterIMInstantiateCallback # XIM_open XIM_register XIM_unregister
+XOM common/xomGeneric _XomGenericOpenOM # XOM_open
diff --git a/libX11/nls/iso8859-8/XLC_LOCALE.pre b/libX11/nls/iso8859-8/XLC_LOCALE.pre
index 64412f604..20a9f8f2a 100644
--- a/libX11/nls/iso8859-8/XLC_LOCALE.pre
+++ b/libX11/nls/iso8859-8/XLC_LOCALE.pre
@@ -1,72 +1,72 @@
-XCOMM XLocale Database Sample for iso8859-8.
-XCOMM
-
-XCOMM
-XCOMM XLC_FONTSET category
-XCOMM
-XLC_FONTSET
-XCOMM fs0 class
-fs0 {
- charset {
- name ISO8859-1:GL
- }
- font {
- primary ISO8859-8:GL
- substitute ISO8859-1:GL
- vertical_rotate all
- }
-}
-XCOMM fs1 class
-fs1 {
- charset {
- name ISO8859-8:GR
- }
- font {
- primary ISO8859-8:GR
- }
-}
-END XLC_FONTSET
-
-XCOMM
-XCOMM XLC_XLOCALE category
-XCOMM
-XLC_XLOCALE
-
-encoding_name ISO8859-8
-mb_cur_max 1
-state_depend_encoding False
-#if WCHAR32
-wc_encoding_mask \x30000000
-wc_shift_bits 7
-#else
-wc_encoding_mask \x00008080
-wc_shift_bits 8
-#endif
-
-#ifndef X_LOCALE
-use_stdc_env True
-force_convert_to_mb True
-#endif
-
-XCOMM cs0 class
-cs0 {
- side GL:Default
- length 1
- wc_encoding \x00000000
- ct_encoding ISO8859-8:GL; ISO8859-1:GL
-}
-
-
-XCOMM cs1 class
-cs1 {
- side GR:Default
- length 1
-#if WCHAR32
- wc_encoding \x30000000
-#else
- wc_encoding \x00008080
-#endif
- ct_encoding ISO8859-8:GR
-}
-
-END XLC_XLOCALE
+XCOMM XLocale Database Sample for iso8859-8.
+XCOMM
+
+XCOMM
+XCOMM XLC_FONTSET category
+XCOMM
+XLC_FONTSET
+XCOMM fs0 class
+fs0 {
+ charset {
+ name ISO8859-1:GL
+ }
+ font {
+ primary ISO8859-8:GL
+ substitute ISO8859-1:GL
+ vertical_rotate all
+ }
+}
+XCOMM fs1 class
+fs1 {
+ charset {
+ name ISO8859-8:GR
+ }
+ font {
+ primary ISO8859-8:GR
+ }
+}
+END XLC_FONTSET
+
+XCOMM
+XCOMM XLC_XLOCALE category
+XCOMM
+XLC_XLOCALE
+
+encoding_name ISO8859-8
+mb_cur_max 1
+state_depend_encoding False
+#if WCHAR32
+wc_encoding_mask \x30000000
+wc_shift_bits 7
+#else
+wc_encoding_mask \x00008080
+wc_shift_bits 8
+#endif
+
+#ifndef X_LOCALE
+use_stdc_env True
+force_convert_to_mb True
+#endif
+
+XCOMM cs0 class
+cs0 {
+ side GL:Default
+ length 1
+ wc_encoding \x00000000
+ ct_encoding ISO8859-8:GL; ISO8859-1:GL
+}
+
+
+XCOMM cs1 class
+cs1 {
+ side GR:Default
+ length 1
+#if WCHAR32
+ wc_encoding \x30000000
+#else
+ wc_encoding \x00008080
+#endif
+ ct_encoding ISO8859-8:GR
+}
+
+END XLC_XLOCALE
diff --git a/libX11/nls/iso8859-9/Compose.pre b/libX11/nls/iso8859-9/Compose.pre
index 2cd18c156..83122a235 100644
--- a/libX11/nls/iso8859-9/Compose.pre
+++ b/libX11/nls/iso8859-9/Compose.pre
@@ -1,481 +1,481 @@
-XCOMM
-XCOMM ISO 8859-9 (Latin5) Compose Sequence
-XCOMM
-XCOMM Sequence Definition
-XCOMM
-XCOMM
-XCOMM <Multi_key> Means <Compose>
-XCOMM Special Character
-<Multi_key> <plus> <plus> : "#" numbersign
-<Multi_key> <apostrophe> <space> : "'" apostrophe
-<Multi_key> <space> <apostrophe> : "'" apostrophe
-<Multi_key> <parenleft> <parenleft> : "[" bracketleft
-<Multi_key> <slash> <slash> : "\\" backslash
-<Multi_key> <slash> <less> : "\\" backslash
-<Multi_key> <less> <slash> : "\\" backslash
-<Multi_key> <parenright> <parenright> : "]" bracketright
-<Multi_key> <asciicircum> <space> : "^" asciicircum
-<Multi_key> <space> <asciicircum> : "^" asciicircum
-<Multi_key> <greater> <space> : "^" asciicircum
-<Multi_key> <space> <greater> : "^" asciicircum
-<Multi_key> <grave> <space> : "`" grave
-<Multi_key> <space> <grave> : "`" grave
-<Multi_key> <parenleft> <minus> : "{" braceleft
-<Multi_key> <minus> <parenleft> : "{" braceleft
-<Multi_key> <slash> <asciicircum> : "|" bar
-<Multi_key> <asciicircum> <slash> : "|" bar
-<Multi_key> <V> <L> : "|" bar
-<Multi_key> <L> <V> : "|" bar
-<Multi_key> <v> <l> : "|" bar
-<Multi_key> <l> <v> : "|" bar
-<Multi_key> <parenright> <minus> : "}" braceright
-<Multi_key> <minus> <parenright> : "}" braceright
-<Multi_key> <asciitilde> <space> : "~" asciitilde
-<Multi_key> <space> <asciitilde> : "~" asciitilde
-<Multi_key> <minus> <space> : "~" asciitilde
-<Multi_key> <space> <minus> : "~" asciitilde
-<Multi_key> <exclam> <exclam> : "\241" exclamdown
-<Multi_key> <c> <slash> : "\242" cent
-<Multi_key> <slash> <c> : "\242" cent
-<Multi_key> <C> <slash> : "\242" cent
-<Multi_key> <slash> <C> : "\242" cent
-<Multi_key> <C> <bar> : "\242" cent
-<Multi_key> <bar> <C> : "\242" cent
-<Multi_key> <c> <bar> : "\242" cent
-<Multi_key> <bar> <c> : "\242" cent
-<Multi_key> <l> <minus> : "\243" sterling
-<Multi_key> <minus> <l> : "\243" sterling
-<Multi_key> <L> <minus> : "\243" sterling
-<Multi_key> <minus> <L> : "\243" sterling
-<Multi_key> <l> <equal> : "\243" sterling
-<Multi_key> <equal> <l> : "\243" sterling
-<Multi_key> <L> <equal> : "\243" sterling
-<Multi_key> <equal> <L> : "\243" sterling
-<Multi_key> <C> <equal> : "\244" EuroSign
-<Multi_key> <equal> <C> : "\244" EuroSign
-<Multi_key> <c> <equal> : "\244" EuroSign
-<Multi_key> <equal> <c> : "\244" EuroSign
-<Multi_key> <E> <equal> : "\244" EuroSign
-<Multi_key> <equal> <E> : "\244" EuroSign
-<Multi_key> <e> <equal> : "\244" EuroSign
-<Multi_key> <equal> <e> : "\244" EuroSign
-<Multi_key> <y> <minus> : "\245" yen
-<Multi_key> <minus> <y> : "\245" yen
-<Multi_key> <Y> <minus> : "\245" yen
-<Multi_key> <minus> <Y> : "\245" yen
-<Multi_key> <y> <equal> : "\245" yen
-<Multi_key> <equal> <y> : "\245" yen
-<Multi_key> <Y> <equal> : "\245" yen
-<Multi_key> <equal> <Y> : "\245" yen
-<Multi_key> <s> <o> : "\247" section
-<Multi_key> <o> <s> : "\247" section
-<Multi_key> <S> <O> : "\247" section
-<Multi_key> <O> <S> : "\247" section
-<Multi_key> <S> <exclam> : "\247" section
-<Multi_key> <exclam> <S> : "\247" section
-<Multi_key> <s> <exclam> : "\247" section
-<Multi_key> <exclam> <s> : "\247" section
-<Multi_key> <S> <0> : "\247" section
-<Multi_key> <0> <S> : "\247" section
-<Multi_key> <s> <0> : "\247" section
-<Multi_key> <0> <s> : "\247" section
-<Multi_key> <c> <o> : "\251" copyright
-<Multi_key> <o> <c> : "\251" copyright
-<Multi_key> <C> <O> : "\251" copyright
-<Multi_key> <O> <C> : "\251" copyright
-<Multi_key> <c> <O> : "\251" copyright
-<Multi_key> <O> <c> : "\251" copyright
-<Multi_key> <C> <o> : "\251" copyright
-<Multi_key> <o> <C> : "\251" copyright
-<Multi_key> <c> <0> : "\251" copyright
-<Multi_key> <0> <c> : "\251" copyright
-<Multi_key> <C> <0> : "\251" copyright
-<Multi_key> <0> <C> : "\251" copyright
-<Multi_key> <parenleft> <c> : "\251" copyright
-<Multi_key> <a> <underscore> : "\252" ordfeminine
-<Multi_key> <underscore> <a> : "\252" ordfeminine
-<Multi_key> <A> <underscore> : "\252" ordfeminine
-<Multi_key> <underscore> <A> : "\252" ordfeminine
-<Multi_key> <o> <underscore> : "\272" masculine
-<Multi_key> <underscore> <o> : "\272" masculine
-<Multi_key> <O> <underscore> : "\272" masculine
-<Multi_key> <underscore> <O> : "\272" masculine
-<Multi_key> <less> <less> : "\253" guillemotleft
-<Multi_key> <greater> <greater> : "\273" guillemotright
-<Multi_key> <0> <asciicircum> : "\260" degree
-<Multi_key> <asciicircum> <0> : "\260" degree
-<Multi_key> <0> <asterisk> : "\260" degree
-<Multi_key> <asterisk> <0> : "\260" degree
-<Multi_key> <plus> <minus> : "\261" plusminus
-<Multi_key> <minus> <plus> : "\261" plusminus
-<Multi_key> <slash> <u> : "\265" mu
-<Multi_key> <u> <slash> : "\265" mu
-<Multi_key> <slash> <U> : "\265" mu
-<Multi_key> <U> <slash> : "\265" mu
-<Multi_key> <1> <asciicircum> : "\271" onesuperior
-<Multi_key> <asciicircum> <1> : "\271" onesuperior
-<Multi_key> <S> <1> : "\271" onesuperior
-<Multi_key> <1> <S> : "\271" onesuperior
-<Multi_key> <s> <1> : "\271" onesuperior
-<Multi_key> <1> <s> : "\271" onesuperior
-<Multi_key> <2> <asciicircum> : "\262" twosuperior
-<Multi_key> <asciicircum> <2> : "\262" twosuperior
-<Multi_key> <S> <2> : "\262" twosuperior
-<Multi_key> <2> <S> : "\262" twosuperior
-<Multi_key> <s> <2> : "\262" twosuperior
-<Multi_key> <2> <s> : "\262" twosuperior
-<Multi_key> <3> <asciicircum> : "\263" threesuperior
-<Multi_key> <asciicircum> <3> : "\263" threesuperior
-<Multi_key> <S> <3> : "\263" threesuperior
-<Multi_key> <3> <S> : "\263" threesuperior
-<Multi_key> <s> <3> : "\263" threesuperior
-<Multi_key> <3> <s> : "\263" threesuperior
-<Multi_key> <p> <exclam> : "\266" paragraph
-<Multi_key> <exclam> <p> : "\266" paragraph
-<Multi_key> <P> <exclam> : "\266" paragraph
-<Multi_key> <exclam> <P> : "\266" paragraph
-<Multi_key> <period> <asciicircum> : "\267" periodcentered
-<Multi_key> <asciicircum> <period> : "\267" periodcentered
-<Multi_key> <period> <period> : "\267" periodcentered
-<Multi_key> <question> <question> : "\277" questiondown
-<Multi_key> <space> <space> : "\240" nobreakspace
-<Multi_key> <minus> <comma> : "\254" notsign
-<Multi_key> <comma> <minus> : "\254" notsign
-<Multi_key> <minus> <minus> : "\255" hyphen
-<Multi_key> <R> <O> : "\256" registered
-<Multi_key> <O> <R> : "\256" registered
-<Multi_key> <parenleft> <r> : "\256" registered
-<Multi_key> <minus> <asciicircum> : "\257" macron
-<Multi_key> <asciicircum> <minus> : "\257" macron
-<Multi_key> <underscore> <asciicircum> : "\257" macron
-<Multi_key> <asciicircum> <underscore> : "\257" macron
-<Multi_key> <underscore> <underscore> : "\257" macron
-<Multi_key> <minus> <colon> : "\367" division
-<Multi_key> <colon> <minus> : "\367" division
-<Multi_key> <x> <x> : "\327" multiply
-<Multi_key> <apostrophe> <apostrophe> : "\264" acute
-<Multi_key> <comma> <comma> : "\270" cedilla
-<Multi_key> <quotedbl> <quotedbl> : "\250" diaeresis
-XCOMM Accented Alphabet
-<Multi_key> <A> <grave> : "\300" Agrave
-<Multi_key> <grave> <A> : "\300" Agrave
-<Multi_key> <A> <acute> : "\301" Aacute
-<Multi_key> <acute> <A> : "\301" Aacute
-<Multi_key> <A> <apostrophe> : "\301" Aacute
-<Multi_key> <apostrophe> <A> : "\301" Aacute
-<Multi_key> <A> <asciicircum> : "\302" Acircumflex
-<Multi_key> <asciicircum> <A> : "\302" Acircumflex
-<Multi_key> <A> <greater> : "\302" Acircumflex
-<Multi_key> <greater> <A> : "\302" Acircumflex
-<Multi_key> <A> <asciitilde> : "\303" Atilde
-<Multi_key> <asciitilde> <A> : "\303" Atilde
-<Multi_key> <A> <minus> : "\303" Atilde
-<Multi_key> <minus> <A> : "\303" Atilde
-<Multi_key> <A> <quotedbl> : "\304" Adiaeresis
-<Multi_key> <quotedbl> <A> : "\304" Adiaeresis
-<Multi_key> <A> <diaeresis> : "\304" Adiaeresis
-<Multi_key> <diaeresis> <A> : "\304" Adiaeresis
-<Multi_key> <A> <asterisk> : "\305" Aring
-<Multi_key> <asterisk> <A> : "\305" Aring
-<Multi_key> <A> <A> : "\305" Aring
-<Multi_key> <A> <E> : "\306" AE
-<Multi_key> <a> <grave> : "\340" agrave
-<Multi_key> <grave> <a> : "\340" agrave
-<Multi_key> <a> <acute> : "\341" aacute
-<Multi_key> <acute> <a> : "\341" aacute
-<Multi_key> <a> <apostrophe> : "\341" aacute
-<Multi_key> <apostrophe> <a> : "\341" aacute
-<Multi_key> <a> <asciicircum> : "\342" acircumflex
-<Multi_key> <asciicircum> <a> : "\342" acircumflex
-<Multi_key> <a> <greater> : "\342" acircumflex
-<Multi_key> <greater> <a> : "\342" acircumflex
-<Multi_key> <a> <asciitilde> : "\343" atilde
-<Multi_key> <asciitilde> <a> : "\343" atilde
-<Multi_key> <a> <minus> : "\343" atilde
-<Multi_key> <minus> <a> : "\343" atilde
-<Multi_key> <a> <quotedbl> : "\344" adiaeresis
-<Multi_key> <quotedbl> <a> : "\344" adiaeresis
-<Multi_key> <a> <diaeresis> : "\344" adiaeresis
-<Multi_key> <diaeresis> <a> : "\344" adiaeresis
-<Multi_key> <a> <asterisk> : "\345" aring
-<Multi_key> <asterisk> <a> : "\345" aring
-<Multi_key> <a> <a> : "\345" aring
-<Multi_key> <a> <e> : "\346" ae
-<Multi_key> <C> <comma> : "\307" Ccedilla
-<Multi_key> <C> <cedilla> : "\307" Ccedilla
-<Multi_key> <comma> <C> : "\307" Ccedilla
-<Multi_key> <cedilla> <C> : "\307" Ccedilla
-<Multi_key> <c> <comma> : "\347" ccedilla
-<Multi_key> <c> <cedilla> : "\347" ccedilla
-<Multi_key> <comma> <c> : "\347" ccedilla
-<Multi_key> <cedilla> <c> : "\347" ccedilla
-<Multi_key> <minus> <D> : "\320" ETH
-<Multi_key> <D> <minus> : "\320" ETH
-<Multi_key> <minus> <d> : "\360" eth
-<Multi_key> <d> <minus> : "\360" eth
-<Multi_key> <E> <grave> : "\310" Egrave
-<Multi_key> <grave> <E> : "\310" Egrave
-<Multi_key> <E> <acute> : "\311" Eacute
-<Multi_key> <acute> <E> : "\311" Eacute
-<Multi_key> <E> <apostrophe> : "\311" Eacute
-<Multi_key> <apostrophe> <E> : "\311" Eacute
-<Multi_key> <E> <asciicircum> : "\312" Ecircumflex
-<Multi_key> <asciicircum> <E> : "\312" Ecircumflex
-<Multi_key> <E> <greater> : "\312" Ecircumflex
-<Multi_key> <greater> <E> : "\312" Ecircumflex
-<Multi_key> <E> <quotedbl> : "\313" Ediaeresis
-<Multi_key> <quotedbl> <E> : "\313" Ediaeresis
-<Multi_key> <E> <diaeresis> : "\313" Ediaeresis
-<Multi_key> <diaeresis> <E> : "\313" Ediaeresis
-<Multi_key> <e> <grave> : "\350" egrave
-<Multi_key> <grave> <e> : "\350" egrave
-<Multi_key> <e> <acute> : "\351" eacute
-<Multi_key> <acute> <e> : "\351" eacute
-<Multi_key> <e> <apostrophe> : "\351" eacute
-<Multi_key> <apostrophe> <e> : "\351" eacute
-<Multi_key> <e> <asciicircum> : "\352" ecircumflex
-<Multi_key> <asciicircum> <e> : "\352" ecircumflex
-<Multi_key> <e> <greater> : "\352" ecircumflex
-<Multi_key> <greater> <e> : "\352" ecircumflex
-<Multi_key> <e> <quotedbl> : "\353" ediaeresis
-<Multi_key> <quotedbl> <e> : "\353" ediaeresis
-<Multi_key> <e> <diaeresis> : "\353" ediaeresis
-<Multi_key> <diaeresis> <e> : "\353" ediaeresis
-<Multi_key> <G> <U> : "\320" Gbreve
-<Multi_key> <G> <parenleft> : "\320" Gbreve
-<Multi_key> <parenleft> <G> : "\320" Gbreve
-<Multi_key> <G> <breve> : "\320" Gbreve
-<Multi_key> <breve> <G> : "\320" Gbreve
-<Multi_key> <g> <U> : "\360" gbreve
-<Multi_key> <g> <parenleft> : "\360" gbreve
-<Multi_key> <parenleft> <g> : "\360" gbreve
-<Multi_key> <g> <breve> : "\360" gbreve
-<Multi_key> <breve> <g> : "\360" gbreve
-<Multi_key> <I> <grave> : "\314" Igrave
-<Multi_key> <grave> <I> : "\314" Igrave
-<Multi_key> <I> <acute> : "\315" Iacute
-<Multi_key> <acute> <I> : "\315" Iacute
-<Multi_key> <I> <apostrophe> : "\315" Iacute
-<Multi_key> <apostrophe> <I> : "\315" Iacute
-<Multi_key> <I> <asciicircum> : "\316" Icircumflex
-<Multi_key> <asciicircum> <I> : "\316" Icircumflex
-<Multi_key> <I> <greater> : "\316" Icircumflex
-<Multi_key> <greater> <I> : "\316" Icircumflex
-<Multi_key> <I> <quotedbl> : "\317" Idiaeresis
-<Multi_key> <quotedbl> <I> : "\317" Idiaeresis
-<Multi_key> <I> <diaeresis> : "\317" Idiaeresis
-<Multi_key> <diaeresis> <I> : "\317" Idiaeresis
-<Multi_key> <I> <period> : "\335" Iabovedot
-<Multi_key> <period> <I> : "\335" Iabovedot
-<Multi_key> <i> <grave> : "\354" igrave
-<Multi_key> <grave> <i> : "\354" igrave
-<Multi_key> <i> <acute> : "\355" iacute
-<Multi_key> <acute> <i> : "\355" iacute
-<Multi_key> <i> <apostrophe> : "\355" iacute
-<Multi_key> <apostrophe> <i> : "\355" iacute
-<Multi_key> <i> <asciicircum> : "\356" icircumflex
-<Multi_key> <asciicircum> <i> : "\356" icircumflex
-<Multi_key> <i> <greater> : "\356" icircumflex
-<Multi_key> <greater> <i> : "\356" icircumflex
-<Multi_key> <i> <quotedbl> : "\357" idiaeresis
-<Multi_key> <quotedbl> <i> : "\357" idiaeresis
-<Multi_key> <i> <diaeresis> : "\357" idiaeresis
-<Multi_key> <diaeresis> <i> : "\357" idiaeresis
-<Multi_key> <i> <period> : "\375" idotless
-<Multi_key> <period> <i> : "\375" idotless
-<Multi_key> <N> <asciitilde> : "\321" Ntilde
-<Multi_key> <asciitilde> <N> : "\321" Ntilde
-<Multi_key> <N> <minus> : "\321" Ntilde
-<Multi_key> <minus> <N> : "\321" Ntilde
-<Multi_key> <n> <asciitilde> : "\361" ntilde
-<Multi_key> <asciitilde> <n> : "\361" ntilde
-<Multi_key> <n> <minus> : "\361" ntilde
-<Multi_key> <minus> <n> : "\361" ntilde
-<Multi_key> <O> <grave> : "\322" Ograve
-<Multi_key> <grave> <O> : "\322" Ograve
-<Multi_key> <O> <acute> : "\323" Oacute
-<Multi_key> <acute> <O> : "\323" Oacute
-<Multi_key> <O> <apostrophe> : "\323" Oacute
-<Multi_key> <apostrophe> <O> : "\323" Oacute
-<Multi_key> <O> <asciicircum> : "\324" Ocircumflex
-<Multi_key> <asciicircum> <O> : "\324" Ocircumflex
-<Multi_key> <O> <greater> : "\324" Ocircumflex
-<Multi_key> <greater> <O> : "\324" Ocircumflex
-<Multi_key> <O> <asciitilde> : "\325" Otilde
-<Multi_key> <asciitilde> <O> : "\325" Otilde
-<Multi_key> <O> <minus> : "\325" Otilde
-<Multi_key> <minus> <O> : "\325" Otilde
-<Multi_key> <O> <quotedbl> : "\326" Odiaeresis
-<Multi_key> <quotedbl> <O> : "\326" Odiaeresis
-<Multi_key> <O> <diaeresis> : "\326" Odiaeresis
-<Multi_key> <diaeresis> <O> : "\326" Odiaeresis
-<Multi_key> <O> <slash> : "\330" Ooblique
-<Multi_key> <slash> <O> : "\330" Ooblique
-<Multi_key> <O> <E> : "\274" OE
-<Multi_key> <o> <grave> : "\362" ograve
-<Multi_key> <grave> <o> : "\362" ograve
-<Multi_key> <o> <acute> : "\363" oacute
-<Multi_key> <acute> <o> : "\363" oacute
-<Multi_key> <o> <apostrophe> : "\363" oacute
-<Multi_key> <apostrophe> <o> : "\363" oacute
-<Multi_key> <o> <asciicircum> : "\364" ocircumflex
-<Multi_key> <asciicircum> <o> : "\364" ocircumflex
-<Multi_key> <o> <greater> : "\364" ocircumflex
-<Multi_key> <greater> <o> : "\364" ocircumflex
-<Multi_key> <o> <asciitilde> : "\365" otilde
-<Multi_key> <asciitilde> <o> : "\365" otilde
-<Multi_key> <o> <minus> : "\365" otilde
-<Multi_key> <minus> <o> : "\365" otilde
-<Multi_key> <o> <quotedbl> : "\366" odiaeresis
-<Multi_key> <quotedbl> <o> : "\366" odiaeresis
-<Multi_key> <o> <diaeresis> : "\366" odiaeresis
-<Multi_key> <diaeresis> <o> : "\366" odiaeresis
-<Multi_key> <o> <slash> : "\370" oslash
-<Multi_key> <slash> <o> : "\370" oslash
-<Multi_key> <S> <cedilla> : "\336" Scedilla
-<Multi_key> <S> <comma> : "\336" Scedilla
-<Multi_key> <cedilla> <S> : "\336" Scedilla
-<Multi_key> <cedilla> <s> : "\376" scedilla
-<Multi_key> <comma> <S> : "\336" Scedilla
-<Multi_key> <comma> <s> : "\376" scedilla
-<Multi_key> <s> <cedilla> : "\376" scedilla
-<Multi_key> <s> <comma> : "\376" scedilla
-<Multi_key> <U> <grave> : "\331" Ugrave
-<Multi_key> <grave> <U> : "\331" Ugrave
-<Multi_key> <U> <acute> : "\332" Uacute
-<Multi_key> <acute> <U> : "\332" Uacute
-<Multi_key> <U> <apostrophe> : "\332" Uacute
-<Multi_key> <apostrophe> <U> : "\332" Uacute
-<Multi_key> <U> <asciicircum> : "\333" Ucircumflex
-<Multi_key> <asciicircum> <U> : "\333" Ucircumflex
-<Multi_key> <U> <greater> : "\333" Ucircumflex
-<Multi_key> <greater> <U> : "\333" Ucircumflex
-<Multi_key> <U> <quotedbl> : "\334" Udiaeresis
-<Multi_key> <quotedbl> <U> : "\334" Udiaeresis
-<Multi_key> <U> <diaeresis> : "\334" Udiaeresis
-<Multi_key> <diaeresis> <U> : "\334" Udiaeresis
-<Multi_key> <u> <grave> : "\371" ugrave
-<Multi_key> <grave> <u> : "\371" ugrave
-<Multi_key> <u> <acute> : "\372" uacute
-<Multi_key> <acute> <u> : "\372" uacute
-<Multi_key> <u> <apostrophe> : "\372" uacute
-<Multi_key> <apostrophe> <u> : "\372" uacute
-<Multi_key> <u> <asciicircum> : "\373" ucircumflex
-<Multi_key> <asciicircum> <u> : "\373" ucircumflex
-<Multi_key> <u> <greater> : "\373" ucircumflex
-<Multi_key> <greater> <u> : "\373" ucircumflex
-<Multi_key> <u> <quotedbl> : "\374" udiaeresis
-<Multi_key> <quotedbl> <u> : "\374" udiaeresis
-<Multi_key> <u> <diaeresis> : "\374" udiaeresis
-<Multi_key> <diaeresis> <u> : "\374" udiaeresis
-<Multi_key> <s> <s> : "\337" ssharp
-<Multi_key> <T> <H> : "\336" THORN
-<Multi_key> <t> <h> : "\376" thorn
-<Multi_key> <Y> <acute> : "\335" Yacute
-<Multi_key> <acute> <Y> : "\335" Yacute
-<Multi_key> <Y> <apostrophe> : "\335" Yacute
-<Multi_key> <apostrophe> <Y> : "\335" Yacute
-<Multi_key> <Y> <quotedbl> : "\276" Ydiaeresis
-<Multi_key> <quotedbl> <Y> : "\276" Ydiaeresis
-<Multi_key> <Y> <diaeresis> : "\276" Ydiaeresis
-<Multi_key> <diaeresis> <Y> : "\276" Ydiaeresis
-<Multi_key> <y> <acute> : "\375" yacute
-<Multi_key> <acute> <y> : "\375" yacute
-<Multi_key> <y> <apostrophe> : "\375" yacute
-<Multi_key> <apostrophe> <y> : "\375" yacute
-<Multi_key> <y> <quotedbl> : "\377" ydiaeresis
-<Multi_key> <quotedbl> <y> : "\377" ydiaeresis
-<Multi_key> <y> <diaeresis> : "\377" ydiaeresis
-<Multi_key> <diaeresis> <y> : "\377" ydiaeresis
-<Multi_key> <Z> <less> : "\264" Zcaron
-<Multi_key> <less> <Z> : "\264" Zcaron
-<Multi_key> <z> <less> : "\270" zcaron
-<Multi_key> <less> <z> : "\270" zcaron
-<Multi_key> <v> <Z> : "\264" Zcaron
-<Multi_key> <v> <z> : "\270" zcaron
-XCOMM
-XCOMM dead key accent keysyms
-XCOMM Special Character
-<dead_circumflex> <slash> : "|" bar
-<dead_grave> <space> : "`" grave
-<dead_acute> <space> : "'" apostrophe
-<dead_diaeresis> <space> : "\250" diaeresis
-<dead_circumflex> <space> : "^" asciicircum
-<dead_tilde> <space> : "~" asciitilde
-<dead_circumflex> <0> : "\260" degree
-<dead_circumflex> <1> : "\271" onesuperior
-<dead_circumflex> <2> : "\262" twosuperior
-<dead_circumflex> <3> : "\263" threesuperior
-<dead_circumflex> <period> : "\267" periodcentered
-<dead_cedilla> <minus> : "\254" notsign
-<dead_circumflex> <minus> : "\257" macron
-<dead_circumflex> <underscore> : "\257" macron
-<dead_acute> <apostrophe> : "\264" acute
-<dead_cedilla> <comma> : "\270" cedilla
-<dead_diaeresis> <quotedbl> : "\250" diaeresis
-XCOMM Accented Alphabet
-<dead_abovering> <A> : "\305" Aring
-<dead_abovering> <a> : "\345" aring
-<dead_grave> <A> : "\300" Agrave
-<dead_acute> <A> : "\301" Aacute
-<dead_circumflex> <A> : "\302" Acircumflex
-<dead_tilde> <A> : "\303" Atilde
-<dead_diaeresis> <A> : "\304" Adiaeresis
-<dead_grave> <a> : "\340" agrave
-<dead_acute> <a> : "\341" aacute
-<dead_circumflex> <a> : "\342" acircumflex
-<dead_tilde> <a> : "\343" atilde
-<dead_diaeresis> <a> : "\344" adiaeresis
-<dead_cedilla> <C> : "\307" Ccedilla
-<dead_cedilla> <c> : "\347" ccedilla
-<dead_grave> <E> : "\310" Egrave
-<dead_acute> <E> : "\311" Eacute
-<dead_circumflex> <E> : "\312" Ecircumflex
-<dead_diaeresis> <E> : "\313" Ediaeresis
-<dead_grave> <e> : "\350" egrave
-<dead_acute> <e> : "\351" eacute
-<dead_circumflex> <e> : "\352" ecircumflex
-<dead_diaeresis> <e> : "\353" ediaeresis
-<dead_breve> <G> : "\320" Gbreve
-<dead_breve> <g> : "\360" gbreve
-<dead_abovedot> <I> : "\335" Iabovedot
-<dead_grave> <I> : "\314" Igrave
-<dead_acute> <I> : "\315" Iacute
-<dead_circumflex> <I> : "\316" Icircumflex
-<dead_diaeresis> <I> : "\317" Idiaeresis
-<dead_abovedot> <i> : "\375" idotless
-<dead_grave> <i> : "\354" igrave
-<dead_acute> <i> : "\355" iacute
-<dead_circumflex> <i> : "\356" icircumflex
-<dead_diaeresis> <i> : "\357" idiaeresis
-<dead_tilde> <N> : "\321" Ntilde
-<dead_tilde> <n> : "\361" ntilde
-<dead_grave> <O> : "\322" Ograve
-<dead_acute> <O> : "\323" Oacute
-<dead_circumflex> <O> : "\324" Ocircumflex
-<dead_tilde> <O> : "\325" Otilde
-<dead_diaeresis> <O> : "\326" Odiaeresis
-<dead_grave> <o> : "\362" ograve
-<dead_acute> <o> : "\363" oacute
-<dead_circumflex> <o> : "\364" ocircumflex
-<dead_tilde> <o> : "\365" otilde
-<dead_diaeresis> <o> : "\366" odiaeresis
-<dead_caron> <S> : "\246" Scaron
-<dead_caron> <s> : "\250" scaron
-<dead_cedilla> <S> : "\336" Scedilla
-<dead_cedilla> <s> : "\376" scedilla
-<dead_grave> <U> : "\331" Ugrave
-<dead_acute> <U> : "\332" Uacute
-<dead_circumflex> <U> : "\333" Ucircumflex
-<dead_diaeresis> <U> : "\334" Udiaeresis
-<dead_grave> <u> : "\371" ugrave
-<dead_acute> <u> : "\372" uacute
-<dead_circumflex> <u> : "\373" ucircumflex
-<dead_diaeresis> <u> : "\374" udiaeresis
-<dead_acute> <Y> : "\335" Yacute
-<dead_diaeresis> <Y> : "\276" Ydiaeresis
-<dead_acute> <y> : "\375" yacute
-<dead_diaeresis> <y> : "\377" ydiaeresis
-<dead_caron> <Z> : "\264" Zcaron
-<dead_caron> <z> : "\270" zcaron
-XCOMM End of Sequence Definition
+XCOMM
+XCOMM ISO 8859-9 (Latin5) Compose Sequence
+XCOMM
+XCOMM Sequence Definition
+XCOMM
+XCOMM
+XCOMM <Multi_key> Means <Compose>
+XCOMM Special Character
+<Multi_key> <plus> <plus> : "#" numbersign
+<Multi_key> <apostrophe> <space> : "'" apostrophe
+<Multi_key> <space> <apostrophe> : "'" apostrophe
+<Multi_key> <parenleft> <parenleft> : "[" bracketleft
+<Multi_key> <slash> <slash> : "\\" backslash
+<Multi_key> <slash> <less> : "\\" backslash
+<Multi_key> <less> <slash> : "\\" backslash
+<Multi_key> <parenright> <parenright> : "]" bracketright
+<Multi_key> <asciicircum> <space> : "^" asciicircum
+<Multi_key> <space> <asciicircum> : "^" asciicircum
+<Multi_key> <greater> <space> : "^" asciicircum
+<Multi_key> <space> <greater> : "^" asciicircum
+<Multi_key> <grave> <space> : "`" grave
+<Multi_key> <space> <grave> : "`" grave
+<Multi_key> <parenleft> <minus> : "{" braceleft
+<Multi_key> <minus> <parenleft> : "{" braceleft
+<Multi_key> <slash> <asciicircum> : "|" bar
+<Multi_key> <asciicircum> <slash> : "|" bar
+<Multi_key> <V> <L> : "|" bar
+<Multi_key> <L> <V> : "|" bar
+<Multi_key> <v> <l> : "|" bar
+<Multi_key> <l> <v> : "|" bar
+<Multi_key> <parenright> <minus> : "}" braceright
+<Multi_key> <minus> <parenright> : "}" braceright
+<Multi_key> <asciitilde> <space> : "~" asciitilde
+<Multi_key> <space> <asciitilde> : "~" asciitilde
+<Multi_key> <minus> <space> : "~" asciitilde
+<Multi_key> <space> <minus> : "~" asciitilde
+<Multi_key> <exclam> <exclam> : "\241" exclamdown
+<Multi_key> <c> <slash> : "\242" cent
+<Multi_key> <slash> <c> : "\242" cent
+<Multi_key> <C> <slash> : "\242" cent
+<Multi_key> <slash> <C> : "\242" cent
+<Multi_key> <C> <bar> : "\242" cent
+<Multi_key> <bar> <C> : "\242" cent
+<Multi_key> <c> <bar> : "\242" cent
+<Multi_key> <bar> <c> : "\242" cent
+<Multi_key> <l> <minus> : "\243" sterling
+<Multi_key> <minus> <l> : "\243" sterling
+<Multi_key> <L> <minus> : "\243" sterling
+<Multi_key> <minus> <L> : "\243" sterling
+<Multi_key> <l> <equal> : "\243" sterling
+<Multi_key> <equal> <l> : "\243" sterling
+<Multi_key> <L> <equal> : "\243" sterling
+<Multi_key> <equal> <L> : "\243" sterling
+<Multi_key> <C> <equal> : "\244" EuroSign
+<Multi_key> <equal> <C> : "\244" EuroSign
+<Multi_key> <c> <equal> : "\244" EuroSign
+<Multi_key> <equal> <c> : "\244" EuroSign
+<Multi_key> <E> <equal> : "\244" EuroSign
+<Multi_key> <equal> <E> : "\244" EuroSign
+<Multi_key> <e> <equal> : "\244" EuroSign
+<Multi_key> <equal> <e> : "\244" EuroSign
+<Multi_key> <y> <minus> : "\245" yen
+<Multi_key> <minus> <y> : "\245" yen
+<Multi_key> <Y> <minus> : "\245" yen
+<Multi_key> <minus> <Y> : "\245" yen
+<Multi_key> <y> <equal> : "\245" yen
+<Multi_key> <equal> <y> : "\245" yen
+<Multi_key> <Y> <equal> : "\245" yen
+<Multi_key> <equal> <Y> : "\245" yen
+<Multi_key> <s> <o> : "\247" section
+<Multi_key> <o> <s> : "\247" section
+<Multi_key> <S> <O> : "\247" section
+<Multi_key> <O> <S> : "\247" section
+<Multi_key> <S> <exclam> : "\247" section
+<Multi_key> <exclam> <S> : "\247" section
+<Multi_key> <s> <exclam> : "\247" section
+<Multi_key> <exclam> <s> : "\247" section
+<Multi_key> <S> <0> : "\247" section
+<Multi_key> <0> <S> : "\247" section
+<Multi_key> <s> <0> : "\247" section
+<Multi_key> <0> <s> : "\247" section
+<Multi_key> <c> <o> : "\251" copyright
+<Multi_key> <o> <c> : "\251" copyright
+<Multi_key> <C> <O> : "\251" copyright
+<Multi_key> <O> <C> : "\251" copyright
+<Multi_key> <c> <O> : "\251" copyright
+<Multi_key> <O> <c> : "\251" copyright
+<Multi_key> <C> <o> : "\251" copyright
+<Multi_key> <o> <C> : "\251" copyright
+<Multi_key> <c> <0> : "\251" copyright
+<Multi_key> <0> <c> : "\251" copyright
+<Multi_key> <C> <0> : "\251" copyright
+<Multi_key> <0> <C> : "\251" copyright
+<Multi_key> <parenleft> <c> : "\251" copyright
+<Multi_key> <a> <underscore> : "\252" ordfeminine
+<Multi_key> <underscore> <a> : "\252" ordfeminine
+<Multi_key> <A> <underscore> : "\252" ordfeminine
+<Multi_key> <underscore> <A> : "\252" ordfeminine
+<Multi_key> <o> <underscore> : "\272" masculine
+<Multi_key> <underscore> <o> : "\272" masculine
+<Multi_key> <O> <underscore> : "\272" masculine
+<Multi_key> <underscore> <O> : "\272" masculine
+<Multi_key> <less> <less> : "\253" guillemotleft
+<Multi_key> <greater> <greater> : "\273" guillemotright
+<Multi_key> <0> <asciicircum> : "\260" degree
+<Multi_key> <asciicircum> <0> : "\260" degree
+<Multi_key> <0> <asterisk> : "\260" degree
+<Multi_key> <asterisk> <0> : "\260" degree
+<Multi_key> <plus> <minus> : "\261" plusminus
+<Multi_key> <minus> <plus> : "\261" plusminus
+<Multi_key> <slash> <u> : "\265" mu
+<Multi_key> <u> <slash> : "\265" mu
+<Multi_key> <slash> <U> : "\265" mu
+<Multi_key> <U> <slash> : "\265" mu
+<Multi_key> <1> <asciicircum> : "\271" onesuperior
+<Multi_key> <asciicircum> <1> : "\271" onesuperior
+<Multi_key> <S> <1> : "\271" onesuperior
+<Multi_key> <1> <S> : "\271" onesuperior
+<Multi_key> <s> <1> : "\271" onesuperior
+<Multi_key> <1> <s> : "\271" onesuperior
+<Multi_key> <2> <asciicircum> : "\262" twosuperior
+<Multi_key> <asciicircum> <2> : "\262" twosuperior
+<Multi_key> <S> <2> : "\262" twosuperior
+<Multi_key> <2> <S> : "\262" twosuperior
+<Multi_key> <s> <2> : "\262" twosuperior
+<Multi_key> <2> <s> : "\262" twosuperior
+<Multi_key> <3> <asciicircum> : "\263" threesuperior
+<Multi_key> <asciicircum> <3> : "\263" threesuperior
+<Multi_key> <S> <3> : "\263" threesuperior
+<Multi_key> <3> <S> : "\263" threesuperior
+<Multi_key> <s> <3> : "\263" threesuperior
+<Multi_key> <3> <s> : "\263" threesuperior
+<Multi_key> <p> <exclam> : "\266" paragraph
+<Multi_key> <exclam> <p> : "\266" paragraph
+<Multi_key> <P> <exclam> : "\266" paragraph
+<Multi_key> <exclam> <P> : "\266" paragraph
+<Multi_key> <period> <asciicircum> : "\267" periodcentered
+<Multi_key> <asciicircum> <period> : "\267" periodcentered
+<Multi_key> <period> <period> : "\267" periodcentered
+<Multi_key> <question> <question> : "\277" questiondown
+<Multi_key> <space> <space> : "\240" nobreakspace
+<Multi_key> <minus> <comma> : "\254" notsign
+<Multi_key> <comma> <minus> : "\254" notsign
+<Multi_key> <minus> <minus> : "\255" hyphen
+<Multi_key> <R> <O> : "\256" registered
+<Multi_key> <O> <R> : "\256" registered
+<Multi_key> <parenleft> <r> : "\256" registered
+<Multi_key> <minus> <asciicircum> : "\257" macron
+<Multi_key> <asciicircum> <minus> : "\257" macron
+<Multi_key> <underscore> <asciicircum> : "\257" macron
+<Multi_key> <asciicircum> <underscore> : "\257" macron
+<Multi_key> <underscore> <underscore> : "\257" macron
+<Multi_key> <minus> <colon> : "\367" division
+<Multi_key> <colon> <minus> : "\367" division
+<Multi_key> <x> <x> : "\327" multiply
+<Multi_key> <apostrophe> <apostrophe> : "\264" acute
+<Multi_key> <comma> <comma> : "\270" cedilla
+<Multi_key> <quotedbl> <quotedbl> : "\250" diaeresis
+XCOMM Accented Alphabet
+<Multi_key> <A> <grave> : "\300" Agrave
+<Multi_key> <grave> <A> : "\300" Agrave
+<Multi_key> <A> <acute> : "\301" Aacute
+<Multi_key> <acute> <A> : "\301" Aacute
+<Multi_key> <A> <apostrophe> : "\301" Aacute
+<Multi_key> <apostrophe> <A> : "\301" Aacute
+<Multi_key> <A> <asciicircum> : "\302" Acircumflex
+<Multi_key> <asciicircum> <A> : "\302" Acircumflex
+<Multi_key> <A> <greater> : "\302" Acircumflex
+<Multi_key> <greater> <A> : "\302" Acircumflex
+<Multi_key> <A> <asciitilde> : "\303" Atilde
+<Multi_key> <asciitilde> <A> : "\303" Atilde
+<Multi_key> <A> <minus> : "\303" Atilde
+<Multi_key> <minus> <A> : "\303" Atilde
+<Multi_key> <A> <quotedbl> : "\304" Adiaeresis
+<Multi_key> <quotedbl> <A> : "\304" Adiaeresis
+<Multi_key> <A> <diaeresis> : "\304" Adiaeresis
+<Multi_key> <diaeresis> <A> : "\304" Adiaeresis
+<Multi_key> <A> <asterisk> : "\305" Aring
+<Multi_key> <asterisk> <A> : "\305" Aring
+<Multi_key> <A> <A> : "\305" Aring
+<Multi_key> <A> <E> : "\306" AE
+<Multi_key> <a> <grave> : "\340" agrave
+<Multi_key> <grave> <a> : "\340" agrave
+<Multi_key> <a> <acute> : "\341" aacute
+<Multi_key> <acute> <a> : "\341" aacute
+<Multi_key> <a> <apostrophe> : "\341" aacute
+<Multi_key> <apostrophe> <a> : "\341" aacute
+<Multi_key> <a> <asciicircum> : "\342" acircumflex
+<Multi_key> <asciicircum> <a> : "\342" acircumflex
+<Multi_key> <a> <greater> : "\342" acircumflex
+<Multi_key> <greater> <a> : "\342" acircumflex
+<Multi_key> <a> <asciitilde> : "\343" atilde
+<Multi_key> <asciitilde> <a> : "\343" atilde
+<Multi_key> <a> <minus> : "\343" atilde
+<Multi_key> <minus> <a> : "\343" atilde
+<Multi_key> <a> <quotedbl> : "\344" adiaeresis
+<Multi_key> <quotedbl> <a> : "\344" adiaeresis
+<Multi_key> <a> <diaeresis> : "\344" adiaeresis
+<Multi_key> <diaeresis> <a> : "\344" adiaeresis
+<Multi_key> <a> <asterisk> : "\345" aring
+<Multi_key> <asterisk> <a> : "\345" aring
+<Multi_key> <a> <a> : "\345" aring
+<Multi_key> <a> <e> : "\346" ae
+<Multi_key> <C> <comma> : "\307" Ccedilla
+<Multi_key> <C> <cedilla> : "\307" Ccedilla
+<Multi_key> <comma> <C> : "\307" Ccedilla
+<Multi_key> <cedilla> <C> : "\307" Ccedilla
+<Multi_key> <c> <comma> : "\347" ccedilla
+<Multi_key> <c> <cedilla> : "\347" ccedilla
+<Multi_key> <comma> <c> : "\347" ccedilla
+<Multi_key> <cedilla> <c> : "\347" ccedilla
+<Multi_key> <minus> <D> : "\320" ETH
+<Multi_key> <D> <minus> : "\320" ETH
+<Multi_key> <minus> <d> : "\360" eth
+<Multi_key> <d> <minus> : "\360" eth
+<Multi_key> <E> <grave> : "\310" Egrave
+<Multi_key> <grave> <E> : "\310" Egrave
+<Multi_key> <E> <acute> : "\311" Eacute
+<Multi_key> <acute> <E> : "\311" Eacute
+<Multi_key> <E> <apostrophe> : "\311" Eacute
+<Multi_key> <apostrophe> <E> : "\311" Eacute
+<Multi_key> <E> <asciicircum> : "\312" Ecircumflex
+<Multi_key> <asciicircum> <E> : "\312" Ecircumflex
+<Multi_key> <E> <greater> : "\312" Ecircumflex
+<Multi_key> <greater> <E> : "\312" Ecircumflex
+<Multi_key> <E> <quotedbl> : "\313" Ediaeresis
+<Multi_key> <quotedbl> <E> : "\313" Ediaeresis
+<Multi_key> <E> <diaeresis> : "\313" Ediaeresis
+<Multi_key> <diaeresis> <E> : "\313" Ediaeresis
+<Multi_key> <e> <grave> : "\350" egrave
+<Multi_key> <grave> <e> : "\350" egrave
+<Multi_key> <e> <acute> : "\351" eacute
+<Multi_key> <acute> <e> : "\351" eacute
+<Multi_key> <e> <apostrophe> : "\351" eacute
+<Multi_key> <apostrophe> <e> : "\351" eacute
+<Multi_key> <e> <asciicircum> : "\352" ecircumflex
+<Multi_key> <asciicircum> <e> : "\352" ecircumflex
+<Multi_key> <e> <greater> : "\352" ecircumflex
+<Multi_key> <greater> <e> : "\352" ecircumflex
+<Multi_key> <e> <quotedbl> : "\353" ediaeresis
+<Multi_key> <quotedbl> <e> : "\353" ediaeresis
+<Multi_key> <e> <diaeresis> : "\353" ediaeresis
+<Multi_key> <diaeresis> <e> : "\353" ediaeresis
+<Multi_key> <G> <U> : "\320" Gbreve
+<Multi_key> <G> <parenleft> : "\320" Gbreve
+<Multi_key> <parenleft> <G> : "\320" Gbreve
+<Multi_key> <G> <breve> : "\320" Gbreve
+<Multi_key> <breve> <G> : "\320" Gbreve
+<Multi_key> <g> <U> : "\360" gbreve
+<Multi_key> <g> <parenleft> : "\360" gbreve
+<Multi_key> <parenleft> <g> : "\360" gbreve
+<Multi_key> <g> <breve> : "\360" gbreve
+<Multi_key> <breve> <g> : "\360" gbreve
+<Multi_key> <I> <grave> : "\314" Igrave
+<Multi_key> <grave> <I> : "\314" Igrave
+<Multi_key> <I> <acute> : "\315" Iacute
+<Multi_key> <acute> <I> : "\315" Iacute
+<Multi_key> <I> <apostrophe> : "\315" Iacute
+<Multi_key> <apostrophe> <I> : "\315" Iacute
+<Multi_key> <I> <asciicircum> : "\316" Icircumflex
+<Multi_key> <asciicircum> <I> : "\316" Icircumflex
+<Multi_key> <I> <greater> : "\316" Icircumflex
+<Multi_key> <greater> <I> : "\316" Icircumflex
+<Multi_key> <I> <quotedbl> : "\317" Idiaeresis
+<Multi_key> <quotedbl> <I> : "\317" Idiaeresis
+<Multi_key> <I> <diaeresis> : "\317" Idiaeresis
+<Multi_key> <diaeresis> <I> : "\317" Idiaeresis
+<Multi_key> <I> <period> : "\335" Iabovedot
+<Multi_key> <period> <I> : "\335" Iabovedot
+<Multi_key> <i> <grave> : "\354" igrave
+<Multi_key> <grave> <i> : "\354" igrave
+<Multi_key> <i> <acute> : "\355" iacute
+<Multi_key> <acute> <i> : "\355" iacute
+<Multi_key> <i> <apostrophe> : "\355" iacute
+<Multi_key> <apostrophe> <i> : "\355" iacute
+<Multi_key> <i> <asciicircum> : "\356" icircumflex
+<Multi_key> <asciicircum> <i> : "\356" icircumflex
+<Multi_key> <i> <greater> : "\356" icircumflex
+<Multi_key> <greater> <i> : "\356" icircumflex
+<Multi_key> <i> <quotedbl> : "\357" idiaeresis
+<Multi_key> <quotedbl> <i> : "\357" idiaeresis
+<Multi_key> <i> <diaeresis> : "\357" idiaeresis
+<Multi_key> <diaeresis> <i> : "\357" idiaeresis
+<Multi_key> <i> <period> : "\375" idotless
+<Multi_key> <period> <i> : "\375" idotless
+<Multi_key> <N> <asciitilde> : "\321" Ntilde
+<Multi_key> <asciitilde> <N> : "\321" Ntilde
+<Multi_key> <N> <minus> : "\321" Ntilde
+<Multi_key> <minus> <N> : "\321" Ntilde
+<Multi_key> <n> <asciitilde> : "\361" ntilde
+<Multi_key> <asciitilde> <n> : "\361" ntilde
+<Multi_key> <n> <minus> : "\361" ntilde
+<Multi_key> <minus> <n> : "\361" ntilde
+<Multi_key> <O> <grave> : "\322" Ograve
+<Multi_key> <grave> <O> : "\322" Ograve
+<Multi_key> <O> <acute> : "\323" Oacute
+<Multi_key> <acute> <O> : "\323" Oacute
+<Multi_key> <O> <apostrophe> : "\323" Oacute
+<Multi_key> <apostrophe> <O> : "\323" Oacute
+<Multi_key> <O> <asciicircum> : "\324" Ocircumflex
+<Multi_key> <asciicircum> <O> : "\324" Ocircumflex
+<Multi_key> <O> <greater> : "\324" Ocircumflex
+<Multi_key> <greater> <O> : "\324" Ocircumflex
+<Multi_key> <O> <asciitilde> : "\325" Otilde
+<Multi_key> <asciitilde> <O> : "\325" Otilde
+<Multi_key> <O> <minus> : "\325" Otilde
+<Multi_key> <minus> <O> : "\325" Otilde
+<Multi_key> <O> <quotedbl> : "\326" Odiaeresis
+<Multi_key> <quotedbl> <O> : "\326" Odiaeresis
+<Multi_key> <O> <diaeresis> : "\326" Odiaeresis
+<Multi_key> <diaeresis> <O> : "\326" Odiaeresis
+<Multi_key> <O> <slash> : "\330" Ooblique
+<Multi_key> <slash> <O> : "\330" Ooblique
+<Multi_key> <O> <E> : "\274" OE
+<Multi_key> <o> <grave> : "\362" ograve
+<Multi_key> <grave> <o> : "\362" ograve
+<Multi_key> <o> <acute> : "\363" oacute
+<Multi_key> <acute> <o> : "\363" oacute
+<Multi_key> <o> <apostrophe> : "\363" oacute
+<Multi_key> <apostrophe> <o> : "\363" oacute
+<Multi_key> <o> <asciicircum> : "\364" ocircumflex
+<Multi_key> <asciicircum> <o> : "\364" ocircumflex
+<Multi_key> <o> <greater> : "\364" ocircumflex
+<Multi_key> <greater> <o> : "\364" ocircumflex
+<Multi_key> <o> <asciitilde> : "\365" otilde
+<Multi_key> <asciitilde> <o> : "\365" otilde
+<Multi_key> <o> <minus> : "\365" otilde
+<Multi_key> <minus> <o> : "\365" otilde
+<Multi_key> <o> <quotedbl> : "\366" odiaeresis
+<Multi_key> <quotedbl> <o> : "\366" odiaeresis
+<Multi_key> <o> <diaeresis> : "\366" odiaeresis
+<Multi_key> <diaeresis> <o> : "\366" odiaeresis
+<Multi_key> <o> <slash> : "\370" oslash
+<Multi_key> <slash> <o> : "\370" oslash
+<Multi_key> <S> <cedilla> : "\336" Scedilla
+<Multi_key> <S> <comma> : "\336" Scedilla
+<Multi_key> <cedilla> <S> : "\336" Scedilla
+<Multi_key> <cedilla> <s> : "\376" scedilla
+<Multi_key> <comma> <S> : "\336" Scedilla
+<Multi_key> <comma> <s> : "\376" scedilla
+<Multi_key> <s> <cedilla> : "\376" scedilla
+<Multi_key> <s> <comma> : "\376" scedilla
+<Multi_key> <U> <grave> : "\331" Ugrave
+<Multi_key> <grave> <U> : "\331" Ugrave
+<Multi_key> <U> <acute> : "\332" Uacute
+<Multi_key> <acute> <U> : "\332" Uacute
+<Multi_key> <U> <apostrophe> : "\332" Uacute
+<Multi_key> <apostrophe> <U> : "\332" Uacute
+<Multi_key> <U> <asciicircum> : "\333" Ucircumflex
+<Multi_key> <asciicircum> <U> : "\333" Ucircumflex
+<Multi_key> <U> <greater> : "\333" Ucircumflex
+<Multi_key> <greater> <U> : "\333" Ucircumflex
+<Multi_key> <U> <quotedbl> : "\334" Udiaeresis
+<Multi_key> <quotedbl> <U> : "\334" Udiaeresis
+<Multi_key> <U> <diaeresis> : "\334" Udiaeresis
+<Multi_key> <diaeresis> <U> : "\334" Udiaeresis
+<Multi_key> <u> <grave> : "\371" ugrave
+<Multi_key> <grave> <u> : "\371" ugrave
+<Multi_key> <u> <acute> : "\372" uacute
+<Multi_key> <acute> <u> : "\372" uacute
+<Multi_key> <u> <apostrophe> : "\372" uacute
+<Multi_key> <apostrophe> <u> : "\372" uacute
+<Multi_key> <u> <asciicircum> : "\373" ucircumflex
+<Multi_key> <asciicircum> <u> : "\373" ucircumflex
+<Multi_key> <u> <greater> : "\373" ucircumflex
+<Multi_key> <greater> <u> : "\373" ucircumflex
+<Multi_key> <u> <quotedbl> : "\374" udiaeresis
+<Multi_key> <quotedbl> <u> : "\374" udiaeresis
+<Multi_key> <u> <diaeresis> : "\374" udiaeresis
+<Multi_key> <diaeresis> <u> : "\374" udiaeresis
+<Multi_key> <s> <s> : "\337" ssharp
+<Multi_key> <T> <H> : "\336" THORN
+<Multi_key> <t> <h> : "\376" thorn
+<Multi_key> <Y> <acute> : "\335" Yacute
+<Multi_key> <acute> <Y> : "\335" Yacute
+<Multi_key> <Y> <apostrophe> : "\335" Yacute
+<Multi_key> <apostrophe> <Y> : "\335" Yacute
+<Multi_key> <Y> <quotedbl> : "\276" Ydiaeresis
+<Multi_key> <quotedbl> <Y> : "\276" Ydiaeresis
+<Multi_key> <Y> <diaeresis> : "\276" Ydiaeresis
+<Multi_key> <diaeresis> <Y> : "\276" Ydiaeresis
+<Multi_key> <y> <acute> : "\375" yacute
+<Multi_key> <acute> <y> : "\375" yacute
+<Multi_key> <y> <apostrophe> : "\375" yacute
+<Multi_key> <apostrophe> <y> : "\375" yacute
+<Multi_key> <y> <quotedbl> : "\377" ydiaeresis
+<Multi_key> <quotedbl> <y> : "\377" ydiaeresis
+<Multi_key> <y> <diaeresis> : "\377" ydiaeresis
+<Multi_key> <diaeresis> <y> : "\377" ydiaeresis
+<Multi_key> <Z> <less> : "\264" Zcaron
+<Multi_key> <less> <Z> : "\264" Zcaron
+<Multi_key> <z> <less> : "\270" zcaron
+<Multi_key> <less> <z> : "\270" zcaron
+<Multi_key> <v> <Z> : "\264" Zcaron
+<Multi_key> <v> <z> : "\270" zcaron
+XCOMM
+XCOMM dead key accent keysyms
+XCOMM Special Character
+<dead_circumflex> <slash> : "|" bar
+<dead_grave> <space> : "`" grave
+<dead_acute> <space> : "'" apostrophe
+<dead_diaeresis> <space> : "\250" diaeresis
+<dead_circumflex> <space> : "^" asciicircum
+<dead_tilde> <space> : "~" asciitilde
+<dead_circumflex> <0> : "\260" degree
+<dead_circumflex> <1> : "\271" onesuperior
+<dead_circumflex> <2> : "\262" twosuperior
+<dead_circumflex> <3> : "\263" threesuperior
+<dead_circumflex> <period> : "\267" periodcentered
+<dead_cedilla> <minus> : "\254" notsign
+<dead_circumflex> <minus> : "\257" macron
+<dead_circumflex> <underscore> : "\257" macron
+<dead_acute> <apostrophe> : "\264" acute
+<dead_cedilla> <comma> : "\270" cedilla
+<dead_diaeresis> <quotedbl> : "\250" diaeresis
+XCOMM Accented Alphabet
+<dead_abovering> <A> : "\305" Aring
+<dead_abovering> <a> : "\345" aring
+<dead_grave> <A> : "\300" Agrave
+<dead_acute> <A> : "\301" Aacute
+<dead_circumflex> <A> : "\302" Acircumflex
+<dead_tilde> <A> : "\303" Atilde
+<dead_diaeresis> <A> : "\304" Adiaeresis
+<dead_grave> <a> : "\340" agrave
+<dead_acute> <a> : "\341" aacute
+<dead_circumflex> <a> : "\342" acircumflex
+<dead_tilde> <a> : "\343" atilde
+<dead_diaeresis> <a> : "\344" adiaeresis
+<dead_cedilla> <C> : "\307" Ccedilla
+<dead_cedilla> <c> : "\347" ccedilla
+<dead_grave> <E> : "\310" Egrave
+<dead_acute> <E> : "\311" Eacute
+<dead_circumflex> <E> : "\312" Ecircumflex
+<dead_diaeresis> <E> : "\313" Ediaeresis
+<dead_grave> <e> : "\350" egrave
+<dead_acute> <e> : "\351" eacute
+<dead_circumflex> <e> : "\352" ecircumflex
+<dead_diaeresis> <e> : "\353" ediaeresis
+<dead_breve> <G> : "\320" Gbreve
+<dead_breve> <g> : "\360" gbreve
+<dead_abovedot> <I> : "\335" Iabovedot
+<dead_grave> <I> : "\314" Igrave
+<dead_acute> <I> : "\315" Iacute
+<dead_circumflex> <I> : "\316" Icircumflex
+<dead_diaeresis> <I> : "\317" Idiaeresis
+<dead_abovedot> <i> : "\375" idotless
+<dead_grave> <i> : "\354" igrave
+<dead_acute> <i> : "\355" iacute
+<dead_circumflex> <i> : "\356" icircumflex
+<dead_diaeresis> <i> : "\357" idiaeresis
+<dead_tilde> <N> : "\321" Ntilde
+<dead_tilde> <n> : "\361" ntilde
+<dead_grave> <O> : "\322" Ograve
+<dead_acute> <O> : "\323" Oacute
+<dead_circumflex> <O> : "\324" Ocircumflex
+<dead_tilde> <O> : "\325" Otilde
+<dead_diaeresis> <O> : "\326" Odiaeresis
+<dead_grave> <o> : "\362" ograve
+<dead_acute> <o> : "\363" oacute
+<dead_circumflex> <o> : "\364" ocircumflex
+<dead_tilde> <o> : "\365" otilde
+<dead_diaeresis> <o> : "\366" odiaeresis
+<dead_caron> <S> : "\246" Scaron
+<dead_caron> <s> : "\250" scaron
+<dead_cedilla> <S> : "\336" Scedilla
+<dead_cedilla> <s> : "\376" scedilla
+<dead_grave> <U> : "\331" Ugrave
+<dead_acute> <U> : "\332" Uacute
+<dead_circumflex> <U> : "\333" Ucircumflex
+<dead_diaeresis> <U> : "\334" Udiaeresis
+<dead_grave> <u> : "\371" ugrave
+<dead_acute> <u> : "\372" uacute
+<dead_circumflex> <u> : "\373" ucircumflex
+<dead_diaeresis> <u> : "\374" udiaeresis
+<dead_acute> <Y> : "\335" Yacute
+<dead_diaeresis> <Y> : "\276" Ydiaeresis
+<dead_acute> <y> : "\375" yacute
+<dead_diaeresis> <y> : "\377" ydiaeresis
+<dead_caron> <Z> : "\264" Zcaron
+<dead_caron> <z> : "\270" zcaron
+XCOMM End of Sequence Definition
diff --git a/libX11/nls/iso8859-9/XI18N_OBJS b/libX11/nls/iso8859-9/XI18N_OBJS
index daac7d36c..f20902a61 100644
--- a/libX11/nls/iso8859-9/XI18N_OBJS
+++ b/libX11/nls/iso8859-9/XI18N_OBJS
@@ -1,8 +1,8 @@
-# CATEGORY(XLC|XIM|OM) SHARED_LIBRARY_NAME FUNCTION_NAME
-#
-# XI18N objects table for euro locales
-#
-XLC common/xlibi18n _XlcGenericLoader # XLC_open
-XIM common/xiiimp _XimpLocalOpenIM # XIM_open
-XOM common/xomGeneric _XomGenericOpenOM # XOM_open
-
+# CATEGORY(XLC|XIM|OM) SHARED_LIBRARY_NAME FUNCTION_NAME
+#
+# XI18N objects table for euro locales
+#
+XLC common/xlibi18n _XlcGenericLoader # XLC_open
+XIM common/xiiimp _XimpLocalOpenIM # XIM_open
+XOM common/xomGeneric _XomGenericOpenOM # XOM_open
+
diff --git a/libX11/nls/iso8859-9/XLC_LOCALE.pre b/libX11/nls/iso8859-9/XLC_LOCALE.pre
index 48a06da6a..4ffbce79f 100644
--- a/libX11/nls/iso8859-9/XLC_LOCALE.pre
+++ b/libX11/nls/iso8859-9/XLC_LOCALE.pre
@@ -1,72 +1,72 @@
-XCOMM XLocale Database Sample for iso8859-9.
-XCOMM
-
-XCOMM
-XCOMM XLC_FONTSET category
-XCOMM
-XLC_FONTSET
-XCOMM fs0 class
-fs0 {
- charset {
- name ISO8859-1:GL
- }
- font {
- primary ISO8859-9:GL
- substitute ISO8859-1:GL
- vertical_rotate all
- }
-}
-XCOMM fs1 class
-fs1 {
- charset {
- name ISO8859-9:GR
- }
- font {
- primary ISO8859-9:GR
- }
-}
-END XLC_FONTSET
-
-XCOMM
-XCOMM XLC_XLOCALE category
-XCOMM
-XLC_XLOCALE
-
-encoding_name ISO8859-9
-mb_cur_max 1
-state_depend_encoding False
-#if WCHAR32
-wc_encoding_mask \x30000000
-wc_shift_bits 7
-#else
-wc_encoding_mask \x00008080
-wc_shift_bits 8
-#endif
-
-#ifndef X_LOCALE
-use_stdc_env True
-force_convert_to_mb True
-#endif
-
-XCOMM cs0 class
-cs0 {
- side GL:Default
- length 1
- wc_encoding \x00000000
- ct_encoding ISO8859-9:GL; ISO8859-1:GL
-}
-
-
-XCOMM cs1 class
-cs1 {
- side GR:Default
- length 1
-#if WCHAR32
- wc_encoding \x30000000
-#else
- wc_encoding \x00008080
-#endif
- ct_encoding ISO8859-9:GR
-}
-
-END XLC_XLOCALE
+XCOMM XLocale Database Sample for iso8859-9.
+XCOMM
+
+XCOMM
+XCOMM XLC_FONTSET category
+XCOMM
+XLC_FONTSET
+XCOMM fs0 class
+fs0 {
+ charset {
+ name ISO8859-1:GL
+ }
+ font {
+ primary ISO8859-9:GL
+ substitute ISO8859-1:GL
+ vertical_rotate all
+ }
+}
+XCOMM fs1 class
+fs1 {
+ charset {
+ name ISO8859-9:GR
+ }
+ font {
+ primary ISO8859-9:GR
+ }
+}
+END XLC_FONTSET
+
+XCOMM
+XCOMM XLC_XLOCALE category
+XCOMM
+XLC_XLOCALE
+
+encoding_name ISO8859-9
+mb_cur_max 1
+state_depend_encoding False
+#if WCHAR32
+wc_encoding_mask \x30000000
+wc_shift_bits 7
+#else
+wc_encoding_mask \x00008080
+wc_shift_bits 8
+#endif
+
+#ifndef X_LOCALE
+use_stdc_env True
+force_convert_to_mb True
+#endif
+
+XCOMM cs0 class
+cs0 {
+ side GL:Default
+ length 1
+ wc_encoding \x00000000
+ ct_encoding ISO8859-9:GL; ISO8859-1:GL
+}
+
+
+XCOMM cs1 class
+cs1 {
+ side GR:Default
+ length 1
+#if WCHAR32
+ wc_encoding \x30000000
+#else
+ wc_encoding \x00008080
+#endif
+ ct_encoding ISO8859-9:GR
+}
+
+END XLC_XLOCALE
diff --git a/libX11/nls/iso8859-9e/Compose.pre b/libX11/nls/iso8859-9e/Compose.pre
index 4d90987a7..96815319b 100644
--- a/libX11/nls/iso8859-9e/Compose.pre
+++ b/libX11/nls/iso8859-9e/Compose.pre
@@ -1,493 +1,493 @@
-XCOMM
-XCOMM ISO 8859-9e (Latin??) Compose Sequence
-XCOMM
-XCOMM Sequence Definition
-XCOMM
-XCOMM
-XCOMM <Multi_key> Means <Compose>
-XCOMM Special Character
-<Multi_key> <plus> <plus> : "#" numbersign
-<Multi_key> <apostrophe> <space> : "'" apostrophe
-<Multi_key> <space> <apostrophe> : "'" apostrophe
-<Multi_key> <parenleft> <parenleft> : "[" bracketleft
-<Multi_key> <slash> <slash> : "\\" backslash
-<Multi_key> <slash> <less> : "\\" backslash
-<Multi_key> <less> <slash> : "\\" backslash
-<Multi_key> <parenright> <parenright> : "]" bracketright
-<Multi_key> <asciicircum> <space> : "^" asciicircum
-<Multi_key> <space> <asciicircum> : "^" asciicircum
-<Multi_key> <greater> <space> : "^" asciicircum
-<Multi_key> <space> <greater> : "^" asciicircum
-<Multi_key> <grave> <space> : "`" grave
-<Multi_key> <space> <grave> : "`" grave
-<Multi_key> <parenleft> <minus> : "{" braceleft
-<Multi_key> <minus> <parenleft> : "{" braceleft
-<Multi_key> <slash> <asciicircum> : "|" bar
-<Multi_key> <asciicircum> <slash> : "|" bar
-<Multi_key> <V> <L> : "|" bar
-<Multi_key> <L> <V> : "|" bar
-<Multi_key> <v> <l> : "|" bar
-<Multi_key> <l> <v> : "|" bar
-<Multi_key> <parenright> <minus> : "}" braceright
-<Multi_key> <minus> <parenright> : "}" braceright
-<Multi_key> <asciitilde> <space> : "~" asciitilde
-<Multi_key> <space> <asciitilde> : "~" asciitilde
-<Multi_key> <minus> <space> : "~" asciitilde
-<Multi_key> <space> <minus> : "~" asciitilde
-<Multi_key> <exclam> <exclam> : "\241" exclamdown
-<Multi_key> <c> <slash> : "\242" cent
-<Multi_key> <slash> <c> : "\242" cent
-<Multi_key> <C> <slash> : "\242" cent
-<Multi_key> <slash> <C> : "\242" cent
-<Multi_key> <C> <bar> : "\242" cent
-<Multi_key> <bar> <C> : "\242" cent
-<Multi_key> <c> <bar> : "\242" cent
-<Multi_key> <bar> <c> : "\242" cent
-<Multi_key> <l> <minus> : "\243" sterling
-<Multi_key> <minus> <l> : "\243" sterling
-<Multi_key> <L> <minus> : "\243" sterling
-<Multi_key> <minus> <L> : "\243" sterling
-<Multi_key> <l> <equal> : "\243" sterling
-<Multi_key> <equal> <l> : "\243" sterling
-<Multi_key> <L> <equal> : "\243" sterling
-<Multi_key> <equal> <L> : "\243" sterling
-<Multi_key> <C> <equal> : "\244" EuroSign
-<Multi_key> <equal> <C> : "\244" EuroSign
-<Multi_key> <c> <equal> : "\244" EuroSign
-<Multi_key> <equal> <c> : "\244" EuroSign
-<Multi_key> <E> <equal> : "\244" EuroSign
-<Multi_key> <equal> <E> : "\244" EuroSign
-<Multi_key> <e> <equal> : "\244" EuroSign
-<Multi_key> <equal> <e> : "\244" EuroSign
-<Multi_key> <y> <minus> : "\245" yen
-<Multi_key> <minus> <y> : "\245" yen
-<Multi_key> <Y> <minus> : "\245" yen
-<Multi_key> <minus> <Y> : "\245" yen
-<Multi_key> <y> <equal> : "\245" yen
-<Multi_key> <equal> <y> : "\245" yen
-<Multi_key> <Y> <equal> : "\245" yen
-<Multi_key> <equal> <Y> : "\245" yen
-<Multi_key> <s> <o> : "\247" section
-<Multi_key> <o> <s> : "\247" section
-<Multi_key> <S> <O> : "\247" section
-<Multi_key> <O> <S> : "\247" section
-<Multi_key> <S> <exclam> : "\247" section
-<Multi_key> <exclam> <S> : "\247" section
-<Multi_key> <s> <exclam> : "\247" section
-<Multi_key> <exclam> <s> : "\247" section
-<Multi_key> <S> <0> : "\247" section
-<Multi_key> <0> <S> : "\247" section
-<Multi_key> <s> <0> : "\247" section
-<Multi_key> <0> <s> : "\247" section
-<Multi_key> <c> <o> : "\251" copyright
-<Multi_key> <o> <c> : "\251" copyright
-<Multi_key> <C> <O> : "\251" copyright
-<Multi_key> <O> <C> : "\251" copyright
-<Multi_key> <c> <O> : "\251" copyright
-<Multi_key> <O> <c> : "\251" copyright
-<Multi_key> <C> <o> : "\251" copyright
-<Multi_key> <o> <C> : "\251" copyright
-<Multi_key> <c> <0> : "\251" copyright
-<Multi_key> <0> <c> : "\251" copyright
-<Multi_key> <C> <0> : "\251" copyright
-<Multi_key> <0> <C> : "\251" copyright
-<Multi_key> <parenleft> <c> : "\251" copyright
-<Multi_key> <a> <underscore> : "\252" ordfeminine
-<Multi_key> <underscore> <a> : "\252" ordfeminine
-<Multi_key> <A> <underscore> : "\252" ordfeminine
-<Multi_key> <underscore> <A> : "\252" ordfeminine
-<Multi_key> <o> <underscore> : "\272" masculine
-<Multi_key> <underscore> <o> : "\272" masculine
-<Multi_key> <O> <underscore> : "\272" masculine
-<Multi_key> <underscore> <O> : "\272" masculine
-<Multi_key> <less> <less> : "\253" guillemotleft
-<Multi_key> <greater> <greater> : "\273" guillemotright
-<Multi_key> <0> <asciicircum> : "\260" degree
-<Multi_key> <asciicircum> <0> : "\260" degree
-<Multi_key> <0> <asterisk> : "\260" degree
-<Multi_key> <asterisk> <0> : "\260" degree
-<Multi_key> <plus> <minus> : "\261" plusminus
-<Multi_key> <minus> <plus> : "\261" plusminus
-<Multi_key> <slash> <u> : "\265" mu
-<Multi_key> <u> <slash> : "\265" mu
-<Multi_key> <slash> <U> : "\265" mu
-<Multi_key> <U> <slash> : "\265" mu
-<Multi_key> <1> <asciicircum> : "\271" onesuperior
-<Multi_key> <asciicircum> <1> : "\271" onesuperior
-<Multi_key> <S> <1> : "\271" onesuperior
-<Multi_key> <1> <S> : "\271" onesuperior
-<Multi_key> <s> <1> : "\271" onesuperior
-<Multi_key> <1> <s> : "\271" onesuperior
-<Multi_key> <2> <asciicircum> : "\262" twosuperior
-<Multi_key> <asciicircum> <2> : "\262" twosuperior
-<Multi_key> <S> <2> : "\262" twosuperior
-<Multi_key> <2> <S> : "\262" twosuperior
-<Multi_key> <s> <2> : "\262" twosuperior
-<Multi_key> <2> <s> : "\262" twosuperior
-<Multi_key> <3> <asciicircum> : "\263" threesuperior
-<Multi_key> <asciicircum> <3> : "\263" threesuperior
-<Multi_key> <S> <3> : "\263" threesuperior
-<Multi_key> <3> <S> : "\263" threesuperior
-<Multi_key> <s> <3> : "\263" threesuperior
-<Multi_key> <3> <s> : "\263" threesuperior
-<Multi_key> <p> <exclam> : "\266" paragraph
-<Multi_key> <exclam> <p> : "\266" paragraph
-<Multi_key> <P> <exclam> : "\266" paragraph
-<Multi_key> <exclam> <P> : "\266" paragraph
-<Multi_key> <period> <asciicircum> : "\267" periodcentered
-<Multi_key> <asciicircum> <period> : "\267" periodcentered
-<Multi_key> <period> <period> : "\267" periodcentered
-<Multi_key> <question> <question> : "\277" questiondown
-<Multi_key> <space> <space> : "\240" nobreakspace
-<Multi_key> <minus> <comma> : "\254" notsign
-<Multi_key> <comma> <minus> : "\254" notsign
-<Multi_key> <minus> <minus> : "\255" hyphen
-<Multi_key> <R> <O> : "\256" registered
-<Multi_key> <O> <R> : "\256" registered
-<Multi_key> <parenleft> <r> : "\256" registered
-<Multi_key> <minus> <asciicircum> : "\257" macron
-<Multi_key> <asciicircum> <minus> : "\257" macron
-<Multi_key> <underscore> <asciicircum> : "\257" macron
-<Multi_key> <asciicircum> <underscore> : "\257" macron
-<Multi_key> <underscore> <underscore> : "\257" macron
-<Multi_key> <minus> <colon> : "\367" division
-<Multi_key> <colon> <minus> : "\367" division
-<Multi_key> <x> <x> : "\327" multiply
-<Multi_key> <apostrophe> <apostrophe> : "\264" acute
-<Multi_key> <comma> <comma> : "\270" cedilla
-<Multi_key> <quotedbl> <quotedbl> : "\250" diaeresis
-XCOMM Accented Alphabet
-<Multi_key> <A> <grave> : "\300" Agrave
-<Multi_key> <grave> <A> : "\300" Agrave
-<Multi_key> <A> <acute> : "\301" Aacute
-<Multi_key> <acute> <A> : "\301" Aacute
-<Multi_key> <A> <apostrophe> : "\301" Aacute
-<Multi_key> <apostrophe> <A> : "\301" Aacute
-<Multi_key> <A> <asciicircum> : "\302" Acircumflex
-<Multi_key> <asciicircum> <A> : "\302" Acircumflex
-<Multi_key> <A> <greater> : "\302" Acircumflex
-<Multi_key> <greater> <A> : "\302" Acircumflex
-<Multi_key> <A> <asciitilde> : "\303" Atilde
-<Multi_key> <asciitilde> <A> : "\303" Atilde
-<Multi_key> <A> <minus> : "\303" Atilde
-<Multi_key> <minus> <A> : "\303" Atilde
-<Multi_key> <A> <quotedbl> : "\304" Adiaeresis
-<Multi_key> <quotedbl> <A> : "\304" Adiaeresis
-<Multi_key> <A> <diaeresis> : "\304" Adiaeresis
-<Multi_key> <diaeresis> <A> : "\304" Adiaeresis
-<Multi_key> <A> <asterisk> : "\305" Aring
-<Multi_key> <asterisk> <A> : "\305" Aring
-<Multi_key> <A> <A> : "\305" Aring
-<Multi_key> <E> <E> : "\306" SCHWA
-<Multi_key> <a> <grave> : "\340" agrave
-<Multi_key> <grave> <a> : "\340" agrave
-<Multi_key> <a> <acute> : "\341" aacute
-<Multi_key> <acute> <a> : "\341" aacute
-<Multi_key> <a> <apostrophe> : "\341" aacute
-<Multi_key> <apostrophe> <a> : "\341" aacute
-<Multi_key> <a> <asciicircum> : "\342" acircumflex
-<Multi_key> <asciicircum> <a> : "\342" acircumflex
-<Multi_key> <a> <greater> : "\342" acircumflex
-<Multi_key> <greater> <a> : "\342" acircumflex
-<Multi_key> <a> <asciitilde> : "\343" atilde
-<Multi_key> <asciitilde> <a> : "\343" atilde
-<Multi_key> <a> <minus> : "\343" atilde
-<Multi_key> <minus> <a> : "\343" atilde
-<Multi_key> <a> <quotedbl> : "\344" adiaeresis
-<Multi_key> <quotedbl> <a> : "\344" adiaeresis
-<Multi_key> <a> <diaeresis> : "\344" adiaeresis
-<Multi_key> <diaeresis> <a> : "\344" adiaeresis
-<Multi_key> <a> <asterisk> : "\345" aring
-<Multi_key> <asterisk> <a> : "\345" aring
-<Multi_key> <a> <a> : "\345" aring
-<Multi_key> <e> <e> : "\346" schwa
-<Multi_key> <C> <comma> : "\307" Ccedilla
-<Multi_key> <C> <cedilla> : "\307" Ccedilla
-<Multi_key> <comma> <C> : "\307" Ccedilla
-<Multi_key> <cedilla> <C> : "\307" Ccedilla
-<Multi_key> <c> <comma> : "\347" ccedilla
-<Multi_key> <c> <cedilla> : "\347" ccedilla
-<Multi_key> <comma> <c> : "\347" ccedilla
-<Multi_key> <cedilla> <c> : "\347" ccedilla
-<Multi_key> <minus> <D> : "\320" ETH
-<Multi_key> <D> <minus> : "\320" ETH
-<Multi_key> <minus> <d> : "\360" eth
-<Multi_key> <d> <minus> : "\360" eth
-<Multi_key> <E> <grave> : "\310" Egrave
-<Multi_key> <grave> <E> : "\310" Egrave
-<Multi_key> <E> <acute> : "\311" Eacute
-<Multi_key> <acute> <E> : "\311" Eacute
-<Multi_key> <E> <apostrophe> : "\311" Eacute
-<Multi_key> <apostrophe> <E> : "\311" Eacute
-<Multi_key> <E> <asciicircum> : "\312" Ecircumflex
-<Multi_key> <asciicircum> <E> : "\312" Ecircumflex
-<Multi_key> <E> <greater> : "\312" Ecircumflex
-<Multi_key> <greater> <E> : "\312" Ecircumflex
-<Multi_key> <E> <quotedbl> : "\313" Ediaeresis
-<Multi_key> <quotedbl> <E> : "\313" Ediaeresis
-<Multi_key> <E> <diaeresis> : "\313" Ediaeresis
-<Multi_key> <diaeresis> <E> : "\313" Ediaeresis
-<Multi_key> <e> <grave> : "\350" egrave
-<Multi_key> <grave> <e> : "\350" egrave
-<Multi_key> <e> <acute> : "\351" eacute
-<Multi_key> <acute> <e> : "\351" eacute
-<Multi_key> <e> <apostrophe> : "\351" eacute
-<Multi_key> <apostrophe> <e> : "\351" eacute
-<Multi_key> <e> <asciicircum> : "\352" ecircumflex
-<Multi_key> <asciicircum> <e> : "\352" ecircumflex
-<Multi_key> <e> <greater> : "\352" ecircumflex
-<Multi_key> <greater> <e> : "\352" ecircumflex
-<Multi_key> <e> <quotedbl> : "\353" ediaeresis
-<Multi_key> <quotedbl> <e> : "\353" ediaeresis
-<Multi_key> <e> <diaeresis> : "\353" ediaeresis
-<Multi_key> <diaeresis> <e> : "\353" ediaeresis
-<Multi_key> <G> <U> : "\320" Gbreve
-<Multi_key> <G> <parenleft> : "\320" Gbreve
-<Multi_key> <parenleft> <G> : "\320" Gbreve
-<Multi_key> <G> <breve> : "\320" Gbreve
-<Multi_key> <breve> <G> : "\320" Gbreve
-<Multi_key> <g> <U> : "\360" gbreve
-<Multi_key> <g> <parenleft> : "\360" gbreve
-<Multi_key> <parenleft> <g> : "\360" gbreve
-<Multi_key> <g> <breve> : "\360" gbreve
-<Multi_key> <breve> <g> : "\360" gbreve
-<Multi_key> <I> <grave> : "\314" Igrave
-<Multi_key> <grave> <I> : "\314" Igrave
-<Multi_key> <I> <acute> : "\315" Iacute
-<Multi_key> <acute> <I> : "\315" Iacute
-<Multi_key> <I> <apostrophe> : "\315" Iacute
-<Multi_key> <apostrophe> <I> : "\315" Iacute
-<Multi_key> <I> <asciicircum> : "\316" Icircumflex
-<Multi_key> <asciicircum> <I> : "\316" Icircumflex
-<Multi_key> <I> <greater> : "\316" Icircumflex
-<Multi_key> <greater> <I> : "\316" Icircumflex
-<Multi_key> <I> <quotedbl> : "\317" Idiaeresis
-<Multi_key> <quotedbl> <I> : "\317" Idiaeresis
-<Multi_key> <I> <diaeresis> : "\317" Idiaeresis
-<Multi_key> <diaeresis> <I> : "\317" Idiaeresis
-<Multi_key> <I> <period> : "\335" Iabovedot
-<Multi_key> <period> <I> : "\335" Iabovedot
-<Multi_key> <i> <grave> : "\354" igrave
-<Multi_key> <grave> <i> : "\354" igrave
-<Multi_key> <i> <acute> : "\355" iacute
-<Multi_key> <acute> <i> : "\355" iacute
-<Multi_key> <i> <apostrophe> : "\355" iacute
-<Multi_key> <apostrophe> <i> : "\355" iacute
-<Multi_key> <i> <asciicircum> : "\356" icircumflex
-<Multi_key> <asciicircum> <i> : "\356" icircumflex
-<Multi_key> <i> <greater> : "\356" icircumflex
-<Multi_key> <greater> <i> : "\356" icircumflex
-<Multi_key> <i> <quotedbl> : "\357" idiaeresis
-<Multi_key> <quotedbl> <i> : "\357" idiaeresis
-<Multi_key> <i> <diaeresis> : "\357" idiaeresis
-<Multi_key> <diaeresis> <i> : "\357" idiaeresis
-<Multi_key> <i> <period> : "\375" idotless
-<Multi_key> <period> <i> : "\375" idotless
-<Multi_key> <N> <asciitilde> : "\321" Ntilde
-<Multi_key> <asciitilde> <N> : "\321" Ntilde
-<Multi_key> <N> <minus> : "\321" Ntilde
-<Multi_key> <minus> <N> : "\321" Ntilde
-<Multi_key> <n> <asciitilde> : "\361" ntilde
-<Multi_key> <asciitilde> <n> : "\361" ntilde
-<Multi_key> <n> <minus> : "\361" ntilde
-<Multi_key> <minus> <n> : "\361" ntilde
-<Multi_key> <O> <grave> : "\322" Ograve
-<Multi_key> <grave> <O> : "\322" Ograve
-<Multi_key> <O> <acute> : "\323" Oacute
-<Multi_key> <acute> <O> : "\323" Oacute
-<Multi_key> <O> <apostrophe> : "\323" Oacute
-<Multi_key> <apostrophe> <O> : "\323" Oacute
-<Multi_key> <O> <asciicircum> : "\324" Ocircumflex
-<Multi_key> <asciicircum> <O> : "\324" Ocircumflex
-<Multi_key> <O> <greater> : "\324" Ocircumflex
-<Multi_key> <greater> <O> : "\324" Ocircumflex
-<Multi_key> <O> <asciitilde> : "\325" Otilde
-<Multi_key> <asciitilde> <O> : "\325" Otilde
-<Multi_key> <O> <minus> : "\325" Otilde
-<Multi_key> <minus> <O> : "\325" Otilde
-<Multi_key> <O> <quotedbl> : "\326" Odiaeresis
-<Multi_key> <quotedbl> <O> : "\326" Odiaeresis
-<Multi_key> <O> <diaeresis> : "\326" Odiaeresis
-<Multi_key> <diaeresis> <O> : "\326" Odiaeresis
-<Multi_key> <O> <slash> : "\330" Ooblique
-<Multi_key> <slash> <O> : "\330" Ooblique
-<Multi_key> <O> <E> : "\274" OE
-<Multi_key> <o> <grave> : "\362" ograve
-<Multi_key> <grave> <o> : "\362" ograve
-<Multi_key> <o> <acute> : "\363" oacute
-<Multi_key> <acute> <o> : "\363" oacute
-<Multi_key> <o> <apostrophe> : "\363" oacute
-<Multi_key> <apostrophe> <o> : "\363" oacute
-<Multi_key> <o> <asciicircum> : "\364" ocircumflex
-<Multi_key> <asciicircum> <o> : "\364" ocircumflex
-<Multi_key> <o> <greater> : "\364" ocircumflex
-<Multi_key> <greater> <o> : "\364" ocircumflex
-<Multi_key> <o> <asciitilde> : "\365" otilde
-<Multi_key> <asciitilde> <o> : "\365" otilde
-<Multi_key> <o> <minus> : "\365" otilde
-<Multi_key> <minus> <o> : "\365" otilde
-<Multi_key> <o> <quotedbl> : "\366" odiaeresis
-<Multi_key> <quotedbl> <o> : "\366" odiaeresis
-<Multi_key> <o> <diaeresis> : "\366" odiaeresis
-<Multi_key> <diaeresis> <o> : "\366" odiaeresis
-<Multi_key> <o> <slash> : "\370" oslash
-<Multi_key> <slash> <o> : "\370" oslash
-<Multi_key> <S> <cedilla> : "\336" Scedilla
-<Multi_key> <S> <comma> : "\336" Scedilla
-<Multi_key> <cedilla> <S> : "\336" Scedilla
-<Multi_key> <cedilla> <s> : "\376" scedilla
-<Multi_key> <comma> <S> : "\336" Scedilla
-<Multi_key> <comma> <s> : "\376" scedilla
-<Multi_key> <s> <cedilla> : "\376" scedilla
-<Multi_key> <s> <comma> : "\376" scedilla
-<Multi_key> <U> <grave> : "\331" Ugrave
-<Multi_key> <grave> <U> : "\331" Ugrave
-<Multi_key> <U> <acute> : "\332" Uacute
-<Multi_key> <acute> <U> : "\332" Uacute
-<Multi_key> <U> <apostrophe> : "\332" Uacute
-<Multi_key> <apostrophe> <U> : "\332" Uacute
-<Multi_key> <U> <asciicircum> : "\333" Ucircumflex
-<Multi_key> <asciicircum> <U> : "\333" Ucircumflex
-<Multi_key> <U> <greater> : "\333" Ucircumflex
-<Multi_key> <greater> <U> : "\333" Ucircumflex
-<Multi_key> <U> <quotedbl> : "\334" Udiaeresis
-<Multi_key> <quotedbl> <U> : "\334" Udiaeresis
-<Multi_key> <U> <diaeresis> : "\334" Udiaeresis
-<Multi_key> <diaeresis> <U> : "\334" Udiaeresis
-<Multi_key> <u> <grave> : "\371" ugrave
-<Multi_key> <grave> <u> : "\371" ugrave
-<Multi_key> <u> <acute> : "\372" uacute
-<Multi_key> <acute> <u> : "\372" uacute
-<Multi_key> <u> <apostrophe> : "\372" uacute
-<Multi_key> <apostrophe> <u> : "\372" uacute
-<Multi_key> <u> <asciicircum> : "\373" ucircumflex
-<Multi_key> <asciicircum> <u> : "\373" ucircumflex
-<Multi_key> <u> <greater> : "\373" ucircumflex
-<Multi_key> <greater> <u> : "\373" ucircumflex
-<Multi_key> <u> <quotedbl> : "\374" udiaeresis
-<Multi_key> <quotedbl> <u> : "\374" udiaeresis
-<Multi_key> <u> <diaeresis> : "\374" udiaeresis
-<Multi_key> <diaeresis> <u> : "\374" udiaeresis
-<Multi_key> <s> <s> : "\337" ssharp
-<Multi_key> <T> <H> : "\336" THORN
-<Multi_key> <t> <h> : "\376" thorn
-<Multi_key> <Y> <acute> : "\327" Yacute
-<Multi_key> <acute> <Y> : "\327" Yacute
-<Multi_key> <Y> <apostrophe> : "\327" Yacute
-<Multi_key> <apostrophe> <Y> : "\327" Yacute
-<Multi_key> <Y> <quotedbl> : "\276" Ydiaeresis
-<Multi_key> <quotedbl> <Y> : "\276" Ydiaeresis
-<Multi_key> <Y> <diaeresis> : "\276" Ydiaeresis
-<Multi_key> <diaeresis> <Y> : "\276" Ydiaeresis
-<Multi_key> <y> <acute> : "\367" yacute
-<Multi_key> <acute> <y> : "\367" yacute
-<Multi_key> <y> <apostrophe> : "\367" yacute
-<Multi_key> <apostrophe> <y> : "\367" yacute
-<Multi_key> <y> <quotedbl> : "\377" ydiaeresis
-<Multi_key> <quotedbl> <y> : "\377" ydiaeresis
-<Multi_key> <y> <diaeresis> : "\377" ydiaeresis
-<Multi_key> <diaeresis> <y> : "\377" ydiaeresis
-<Multi_key> <Z> <less> : "\241" Zcaron
-<Multi_key> <less> <Z> : "\241" Zcaron
-<Multi_key> <z> <less> : "\261" zcaron
-<Multi_key> <less> <z> : "\261" zcaron
-<Multi_key> <v> <Z> : "\241" Zcaron
-<Multi_key> <v> <z> : "\261" zcaron
-<Multi_key> <G> <less> : "\252" Gcaron
-<Multi_key> <less> <G> : "\252" Gcaron
-<Multi_key> <g> <less> : "\272" gcaron
-<Multi_key> <less> <g> : "\272" gcaron
-<Multi_key> <v> <G> : "\252" Gcaron
-<Multi_key> <v> <g> : "\272" gcaron
-<Multi_key> <O> <less> : "\264" Ocaron
-<Multi_key> <less> <O> : "\264" Ocaron
-<Multi_key> <o> <less> : "\275" ocaron
-<Multi_key> <less> <o> : "\275" ocaron
-<Multi_key> <v> <O> : "\264" Ocaron
-<Multi_key> <v> <o> : "\275" ocaron
-XCOMM
-XCOMM dead key accent keysyms
-XCOMM Special Character
-<dead_circumflex> <slash> : "|" bar
-<dead_grave> <space> : "`" grave
-<dead_acute> <space> : "'" apostrophe
-<dead_diaeresis> <space> : "\250" diaeresis
-<dead_circumflex> <space> : "^" asciicircum
-<dead_tilde> <space> : "~" asciitilde
-<dead_circumflex> <0> : "\260" degree
-<dead_circumflex> <1> : "\271" onesuperior
-<dead_circumflex> <2> : "\262" twosuperior
-<dead_circumflex> <3> : "\263" threesuperior
-<dead_circumflex> <period> : "\267" periodcentered
-<dead_cedilla> <minus> : "\254" notsign
-<dead_circumflex> <minus> : "\257" macron
-<dead_circumflex> <underscore> : "\257" macron
-<dead_acute> <apostrophe> : "\264" acute
-<dead_cedilla> <comma> : "\270" cedilla
-<dead_diaeresis> <quotedbl> : "\250" diaeresis
-XCOMM Accented Alphabet
-<dead_abovering> <A> : "\305" Aring
-<dead_abovering> <a> : "\345" aring
-<dead_grave> <A> : "\300" Agrave
-<dead_acute> <A> : "\301" Aacute
-<dead_circumflex> <A> : "\302" Acircumflex
-<dead_tilde> <A> : "\303" Atilde
-<dead_diaeresis> <A> : "\304" Adiaeresis
-<dead_grave> <a> : "\340" agrave
-<dead_acute> <a> : "\341" aacute
-<dead_circumflex> <a> : "\342" acircumflex
-<dead_tilde> <a> : "\343" atilde
-<dead_diaeresis> <a> : "\344" adiaeresis
-<dead_cedilla> <C> : "\307" Ccedilla
-<dead_cedilla> <c> : "\347" ccedilla
-<dead_grave> <E> : "\310" Egrave
-<dead_acute> <E> : "\311" Eacute
-<dead_circumflex> <E> : "\312" Ecircumflex
-<dead_diaeresis> <E> : "\313" Ediaeresis
-<dead_grave> <e> : "\350" egrave
-<dead_acute> <e> : "\351" eacute
-<dead_circumflex> <e> : "\352" ecircumflex
-<dead_diaeresis> <e> : "\353" ediaeresis
-<dead_breve> <G> : "\320" Gbreve
-<dead_breve> <g> : "\360" gbreve
-<dead_abovedot> <I> : "\335" Iabovedot
-<dead_grave> <I> : "\314" Igrave
-<dead_acute> <I> : "\315" Iacute
-<dead_circumflex> <I> : "\316" Icircumflex
-<dead_diaeresis> <I> : "\317" Idiaeresis
-<dead_abovedot> <i> : "\375" idotless
-<dead_grave> <i> : "\354" igrave
-<dead_acute> <i> : "\355" iacute
-<dead_circumflex> <i> : "\356" icircumflex
-<dead_diaeresis> <i> : "\357" idiaeresis
-<dead_tilde> <N> : "\321" Ntilde
-<dead_tilde> <n> : "\361" ntilde
-<dead_grave> <O> : "\322" Ograve
-<dead_acute> <O> : "\323" Oacute
-<dead_circumflex> <O> : "\324" Ocircumflex
-<dead_tilde> <O> : "\325" Otilde
-<dead_diaeresis> <O> : "\326" Odiaeresis
-<dead_grave> <o> : "\362" ograve
-<dead_acute> <o> : "\363" oacute
-<dead_circumflex> <o> : "\364" ocircumflex
-<dead_tilde> <o> : "\365" otilde
-<dead_diaeresis> <o> : "\366" odiaeresis
-<dead_cedilla> <S> : "\336" Scedilla
-<dead_cedilla> <s> : "\376" scedilla
-<dead_grave> <U> : "\331" Ugrave
-<dead_acute> <U> : "\332" Uacute
-<dead_circumflex> <U> : "\333" Ucircumflex
-<dead_diaeresis> <U> : "\334" Udiaeresis
-<dead_grave> <u> : "\371" ugrave
-<dead_acute> <u> : "\372" uacute
-<dead_circumflex> <u> : "\373" ucircumflex
-<dead_diaeresis> <u> : "\374" udiaeresis
-<dead_acute> <Y> : "\327" Yacute
-<dead_diaeresis> <Y> : "\276" Ydiaeresis
-<dead_acute> <y> : "\367" yacute
-<dead_diaeresis> <y> : "\377" ydiaeresis
-<dead_caron> <Z> : "\241" Zcaron
-<dead_caron> <z> : "\261" zcaron
-<dead_caron> <G> : "\252" Gcaron
-<dead_caron> <g> : "\272" gcaron
-XCOMM End of Sequence Definition
+XCOMM
+XCOMM ISO 8859-9e (Latin??) Compose Sequence
+XCOMM
+XCOMM Sequence Definition
+XCOMM
+XCOMM
+XCOMM <Multi_key> Means <Compose>
+XCOMM Special Character
+<Multi_key> <plus> <plus> : "#" numbersign
+<Multi_key> <apostrophe> <space> : "'" apostrophe
+<Multi_key> <space> <apostrophe> : "'" apostrophe
+<Multi_key> <parenleft> <parenleft> : "[" bracketleft
+<Multi_key> <slash> <slash> : "\\" backslash
+<Multi_key> <slash> <less> : "\\" backslash
+<Multi_key> <less> <slash> : "\\" backslash
+<Multi_key> <parenright> <parenright> : "]" bracketright
+<Multi_key> <asciicircum> <space> : "^" asciicircum
+<Multi_key> <space> <asciicircum> : "^" asciicircum
+<Multi_key> <greater> <space> : "^" asciicircum
+<Multi_key> <space> <greater> : "^" asciicircum
+<Multi_key> <grave> <space> : "`" grave
+<Multi_key> <space> <grave> : "`" grave
+<Multi_key> <parenleft> <minus> : "{" braceleft
+<Multi_key> <minus> <parenleft> : "{" braceleft
+<Multi_key> <slash> <asciicircum> : "|" bar
+<Multi_key> <asciicircum> <slash> : "|" bar
+<Multi_key> <V> <L> : "|" bar
+<Multi_key> <L> <V> : "|" bar
+<Multi_key> <v> <l> : "|" bar
+<Multi_key> <l> <v> : "|" bar
+<Multi_key> <parenright> <minus> : "}" braceright
+<Multi_key> <minus> <parenright> : "}" braceright
+<Multi_key> <asciitilde> <space> : "~" asciitilde
+<Multi_key> <space> <asciitilde> : "~" asciitilde
+<Multi_key> <minus> <space> : "~" asciitilde
+<Multi_key> <space> <minus> : "~" asciitilde
+<Multi_key> <exclam> <exclam> : "\241" exclamdown
+<Multi_key> <c> <slash> : "\242" cent
+<Multi_key> <slash> <c> : "\242" cent
+<Multi_key> <C> <slash> : "\242" cent
+<Multi_key> <slash> <C> : "\242" cent
+<Multi_key> <C> <bar> : "\242" cent
+<Multi_key> <bar> <C> : "\242" cent
+<Multi_key> <c> <bar> : "\242" cent
+<Multi_key> <bar> <c> : "\242" cent
+<Multi_key> <l> <minus> : "\243" sterling
+<Multi_key> <minus> <l> : "\243" sterling
+<Multi_key> <L> <minus> : "\243" sterling
+<Multi_key> <minus> <L> : "\243" sterling
+<Multi_key> <l> <equal> : "\243" sterling
+<Multi_key> <equal> <l> : "\243" sterling
+<Multi_key> <L> <equal> : "\243" sterling
+<Multi_key> <equal> <L> : "\243" sterling
+<Multi_key> <C> <equal> : "\244" EuroSign
+<Multi_key> <equal> <C> : "\244" EuroSign
+<Multi_key> <c> <equal> : "\244" EuroSign
+<Multi_key> <equal> <c> : "\244" EuroSign
+<Multi_key> <E> <equal> : "\244" EuroSign
+<Multi_key> <equal> <E> : "\244" EuroSign
+<Multi_key> <e> <equal> : "\244" EuroSign
+<Multi_key> <equal> <e> : "\244" EuroSign
+<Multi_key> <y> <minus> : "\245" yen
+<Multi_key> <minus> <y> : "\245" yen
+<Multi_key> <Y> <minus> : "\245" yen
+<Multi_key> <minus> <Y> : "\245" yen
+<Multi_key> <y> <equal> : "\245" yen
+<Multi_key> <equal> <y> : "\245" yen
+<Multi_key> <Y> <equal> : "\245" yen
+<Multi_key> <equal> <Y> : "\245" yen
+<Multi_key> <s> <o> : "\247" section
+<Multi_key> <o> <s> : "\247" section
+<Multi_key> <S> <O> : "\247" section
+<Multi_key> <O> <S> : "\247" section
+<Multi_key> <S> <exclam> : "\247" section
+<Multi_key> <exclam> <S> : "\247" section
+<Multi_key> <s> <exclam> : "\247" section
+<Multi_key> <exclam> <s> : "\247" section
+<Multi_key> <S> <0> : "\247" section
+<Multi_key> <0> <S> : "\247" section
+<Multi_key> <s> <0> : "\247" section
+<Multi_key> <0> <s> : "\247" section
+<Multi_key> <c> <o> : "\251" copyright
+<Multi_key> <o> <c> : "\251" copyright
+<Multi_key> <C> <O> : "\251" copyright
+<Multi_key> <O> <C> : "\251" copyright
+<Multi_key> <c> <O> : "\251" copyright
+<Multi_key> <O> <c> : "\251" copyright
+<Multi_key> <C> <o> : "\251" copyright
+<Multi_key> <o> <C> : "\251" copyright
+<Multi_key> <c> <0> : "\251" copyright
+<Multi_key> <0> <c> : "\251" copyright
+<Multi_key> <C> <0> : "\251" copyright
+<Multi_key> <0> <C> : "\251" copyright
+<Multi_key> <parenleft> <c> : "\251" copyright
+<Multi_key> <a> <underscore> : "\252" ordfeminine
+<Multi_key> <underscore> <a> : "\252" ordfeminine
+<Multi_key> <A> <underscore> : "\252" ordfeminine
+<Multi_key> <underscore> <A> : "\252" ordfeminine
+<Multi_key> <o> <underscore> : "\272" masculine
+<Multi_key> <underscore> <o> : "\272" masculine
+<Multi_key> <O> <underscore> : "\272" masculine
+<Multi_key> <underscore> <O> : "\272" masculine
+<Multi_key> <less> <less> : "\253" guillemotleft
+<Multi_key> <greater> <greater> : "\273" guillemotright
+<Multi_key> <0> <asciicircum> : "\260" degree
+<Multi_key> <asciicircum> <0> : "\260" degree
+<Multi_key> <0> <asterisk> : "\260" degree
+<Multi_key> <asterisk> <0> : "\260" degree
+<Multi_key> <plus> <minus> : "\261" plusminus
+<Multi_key> <minus> <plus> : "\261" plusminus
+<Multi_key> <slash> <u> : "\265" mu
+<Multi_key> <u> <slash> : "\265" mu
+<Multi_key> <slash> <U> : "\265" mu
+<Multi_key> <U> <slash> : "\265" mu
+<Multi_key> <1> <asciicircum> : "\271" onesuperior
+<Multi_key> <asciicircum> <1> : "\271" onesuperior
+<Multi_key> <S> <1> : "\271" onesuperior
+<Multi_key> <1> <S> : "\271" onesuperior
+<Multi_key> <s> <1> : "\271" onesuperior
+<Multi_key> <1> <s> : "\271" onesuperior
+<Multi_key> <2> <asciicircum> : "\262" twosuperior
+<Multi_key> <asciicircum> <2> : "\262" twosuperior
+<Multi_key> <S> <2> : "\262" twosuperior
+<Multi_key> <2> <S> : "\262" twosuperior
+<Multi_key> <s> <2> : "\262" twosuperior
+<Multi_key> <2> <s> : "\262" twosuperior
+<Multi_key> <3> <asciicircum> : "\263" threesuperior
+<Multi_key> <asciicircum> <3> : "\263" threesuperior
+<Multi_key> <S> <3> : "\263" threesuperior
+<Multi_key> <3> <S> : "\263" threesuperior
+<Multi_key> <s> <3> : "\263" threesuperior
+<Multi_key> <3> <s> : "\263" threesuperior
+<Multi_key> <p> <exclam> : "\266" paragraph
+<Multi_key> <exclam> <p> : "\266" paragraph
+<Multi_key> <P> <exclam> : "\266" paragraph
+<Multi_key> <exclam> <P> : "\266" paragraph
+<Multi_key> <period> <asciicircum> : "\267" periodcentered
+<Multi_key> <asciicircum> <period> : "\267" periodcentered
+<Multi_key> <period> <period> : "\267" periodcentered
+<Multi_key> <question> <question> : "\277" questiondown
+<Multi_key> <space> <space> : "\240" nobreakspace
+<Multi_key> <minus> <comma> : "\254" notsign
+<Multi_key> <comma> <minus> : "\254" notsign
+<Multi_key> <minus> <minus> : "\255" hyphen
+<Multi_key> <R> <O> : "\256" registered
+<Multi_key> <O> <R> : "\256" registered
+<Multi_key> <parenleft> <r> : "\256" registered
+<Multi_key> <minus> <asciicircum> : "\257" macron
+<Multi_key> <asciicircum> <minus> : "\257" macron
+<Multi_key> <underscore> <asciicircum> : "\257" macron
+<Multi_key> <asciicircum> <underscore> : "\257" macron
+<Multi_key> <underscore> <underscore> : "\257" macron
+<Multi_key> <minus> <colon> : "\367" division
+<Multi_key> <colon> <minus> : "\367" division
+<Multi_key> <x> <x> : "\327" multiply
+<Multi_key> <apostrophe> <apostrophe> : "\264" acute
+<Multi_key> <comma> <comma> : "\270" cedilla
+<Multi_key> <quotedbl> <quotedbl> : "\250" diaeresis
+XCOMM Accented Alphabet
+<Multi_key> <A> <grave> : "\300" Agrave
+<Multi_key> <grave> <A> : "\300" Agrave
+<Multi_key> <A> <acute> : "\301" Aacute
+<Multi_key> <acute> <A> : "\301" Aacute
+<Multi_key> <A> <apostrophe> : "\301" Aacute
+<Multi_key> <apostrophe> <A> : "\301" Aacute
+<Multi_key> <A> <asciicircum> : "\302" Acircumflex
+<Multi_key> <asciicircum> <A> : "\302" Acircumflex
+<Multi_key> <A> <greater> : "\302" Acircumflex
+<Multi_key> <greater> <A> : "\302" Acircumflex
+<Multi_key> <A> <asciitilde> : "\303" Atilde
+<Multi_key> <asciitilde> <A> : "\303" Atilde
+<Multi_key> <A> <minus> : "\303" Atilde
+<Multi_key> <minus> <A> : "\303" Atilde
+<Multi_key> <A> <quotedbl> : "\304" Adiaeresis
+<Multi_key> <quotedbl> <A> : "\304" Adiaeresis
+<Multi_key> <A> <diaeresis> : "\304" Adiaeresis
+<Multi_key> <diaeresis> <A> : "\304" Adiaeresis
+<Multi_key> <A> <asterisk> : "\305" Aring
+<Multi_key> <asterisk> <A> : "\305" Aring
+<Multi_key> <A> <A> : "\305" Aring
+<Multi_key> <E> <E> : "\306" SCHWA
+<Multi_key> <a> <grave> : "\340" agrave
+<Multi_key> <grave> <a> : "\340" agrave
+<Multi_key> <a> <acute> : "\341" aacute
+<Multi_key> <acute> <a> : "\341" aacute
+<Multi_key> <a> <apostrophe> : "\341" aacute
+<Multi_key> <apostrophe> <a> : "\341" aacute
+<Multi_key> <a> <asciicircum> : "\342" acircumflex
+<Multi_key> <asciicircum> <a> : "\342" acircumflex
+<Multi_key> <a> <greater> : "\342" acircumflex
+<Multi_key> <greater> <a> : "\342" acircumflex
+<Multi_key> <a> <asciitilde> : "\343" atilde
+<Multi_key> <asciitilde> <a> : "\343" atilde
+<Multi_key> <a> <minus> : "\343" atilde
+<Multi_key> <minus> <a> : "\343" atilde
+<Multi_key> <a> <quotedbl> : "\344" adiaeresis
+<Multi_key> <quotedbl> <a> : "\344" adiaeresis
+<Multi_key> <a> <diaeresis> : "\344" adiaeresis
+<Multi_key> <diaeresis> <a> : "\344" adiaeresis
+<Multi_key> <a> <asterisk> : "\345" aring
+<Multi_key> <asterisk> <a> : "\345" aring
+<Multi_key> <a> <a> : "\345" aring
+<Multi_key> <e> <e> : "\346" schwa
+<Multi_key> <C> <comma> : "\307" Ccedilla
+<Multi_key> <C> <cedilla> : "\307" Ccedilla
+<Multi_key> <comma> <C> : "\307" Ccedilla
+<Multi_key> <cedilla> <C> : "\307" Ccedilla
+<Multi_key> <c> <comma> : "\347" ccedilla
+<Multi_key> <c> <cedilla> : "\347" ccedilla
+<Multi_key> <comma> <c> : "\347" ccedilla
+<Multi_key> <cedilla> <c> : "\347" ccedilla
+<Multi_key> <minus> <D> : "\320" ETH
+<Multi_key> <D> <minus> : "\320" ETH
+<Multi_key> <minus> <d> : "\360" eth
+<Multi_key> <d> <minus> : "\360" eth
+<Multi_key> <E> <grave> : "\310" Egrave
+<Multi_key> <grave> <E> : "\310" Egrave
+<Multi_key> <E> <acute> : "\311" Eacute
+<Multi_key> <acute> <E> : "\311" Eacute
+<Multi_key> <E> <apostrophe> : "\311" Eacute
+<Multi_key> <apostrophe> <E> : "\311" Eacute
+<Multi_key> <E> <asciicircum> : "\312" Ecircumflex
+<Multi_key> <asciicircum> <E> : "\312" Ecircumflex
+<Multi_key> <E> <greater> : "\312" Ecircumflex
+<Multi_key> <greater> <E> : "\312" Ecircumflex
+<Multi_key> <E> <quotedbl> : "\313" Ediaeresis
+<Multi_key> <quotedbl> <E> : "\313" Ediaeresis
+<Multi_key> <E> <diaeresis> : "\313" Ediaeresis
+<Multi_key> <diaeresis> <E> : "\313" Ediaeresis
+<Multi_key> <e> <grave> : "\350" egrave
+<Multi_key> <grave> <e> : "\350" egrave
+<Multi_key> <e> <acute> : "\351" eacute
+<Multi_key> <acute> <e> : "\351" eacute
+<Multi_key> <e> <apostrophe> : "\351" eacute
+<Multi_key> <apostrophe> <e> : "\351" eacute
+<Multi_key> <e> <asciicircum> : "\352" ecircumflex
+<Multi_key> <asciicircum> <e> : "\352" ecircumflex
+<Multi_key> <e> <greater> : "\352" ecircumflex
+<Multi_key> <greater> <e> : "\352" ecircumflex
+<Multi_key> <e> <quotedbl> : "\353" ediaeresis
+<Multi_key> <quotedbl> <e> : "\353" ediaeresis
+<Multi_key> <e> <diaeresis> : "\353" ediaeresis
+<Multi_key> <diaeresis> <e> : "\353" ediaeresis
+<Multi_key> <G> <U> : "\320" Gbreve
+<Multi_key> <G> <parenleft> : "\320" Gbreve
+<Multi_key> <parenleft> <G> : "\320" Gbreve
+<Multi_key> <G> <breve> : "\320" Gbreve
+<Multi_key> <breve> <G> : "\320" Gbreve
+<Multi_key> <g> <U> : "\360" gbreve
+<Multi_key> <g> <parenleft> : "\360" gbreve
+<Multi_key> <parenleft> <g> : "\360" gbreve
+<Multi_key> <g> <breve> : "\360" gbreve
+<Multi_key> <breve> <g> : "\360" gbreve
+<Multi_key> <I> <grave> : "\314" Igrave
+<Multi_key> <grave> <I> : "\314" Igrave
+<Multi_key> <I> <acute> : "\315" Iacute
+<Multi_key> <acute> <I> : "\315" Iacute
+<Multi_key> <I> <apostrophe> : "\315" Iacute
+<Multi_key> <apostrophe> <I> : "\315" Iacute
+<Multi_key> <I> <asciicircum> : "\316" Icircumflex
+<Multi_key> <asciicircum> <I> : "\316" Icircumflex
+<Multi_key> <I> <greater> : "\316" Icircumflex
+<Multi_key> <greater> <I> : "\316" Icircumflex
+<Multi_key> <I> <quotedbl> : "\317" Idiaeresis
+<Multi_key> <quotedbl> <I> : "\317" Idiaeresis
+<Multi_key> <I> <diaeresis> : "\317" Idiaeresis
+<Multi_key> <diaeresis> <I> : "\317" Idiaeresis
+<Multi_key> <I> <period> : "\335" Iabovedot
+<Multi_key> <period> <I> : "\335" Iabovedot
+<Multi_key> <i> <grave> : "\354" igrave
+<Multi_key> <grave> <i> : "\354" igrave
+<Multi_key> <i> <acute> : "\355" iacute
+<Multi_key> <acute> <i> : "\355" iacute
+<Multi_key> <i> <apostrophe> : "\355" iacute
+<Multi_key> <apostrophe> <i> : "\355" iacute
+<Multi_key> <i> <asciicircum> : "\356" icircumflex
+<Multi_key> <asciicircum> <i> : "\356" icircumflex
+<Multi_key> <i> <greater> : "\356" icircumflex
+<Multi_key> <greater> <i> : "\356" icircumflex
+<Multi_key> <i> <quotedbl> : "\357" idiaeresis
+<Multi_key> <quotedbl> <i> : "\357" idiaeresis
+<Multi_key> <i> <diaeresis> : "\357" idiaeresis
+<Multi_key> <diaeresis> <i> : "\357" idiaeresis
+<Multi_key> <i> <period> : "\375" idotless
+<Multi_key> <period> <i> : "\375" idotless
+<Multi_key> <N> <asciitilde> : "\321" Ntilde
+<Multi_key> <asciitilde> <N> : "\321" Ntilde
+<Multi_key> <N> <minus> : "\321" Ntilde
+<Multi_key> <minus> <N> : "\321" Ntilde
+<Multi_key> <n> <asciitilde> : "\361" ntilde
+<Multi_key> <asciitilde> <n> : "\361" ntilde
+<Multi_key> <n> <minus> : "\361" ntilde
+<Multi_key> <minus> <n> : "\361" ntilde
+<Multi_key> <O> <grave> : "\322" Ograve
+<Multi_key> <grave> <O> : "\322" Ograve
+<Multi_key> <O> <acute> : "\323" Oacute
+<Multi_key> <acute> <O> : "\323" Oacute
+<Multi_key> <O> <apostrophe> : "\323" Oacute
+<Multi_key> <apostrophe> <O> : "\323" Oacute
+<Multi_key> <O> <asciicircum> : "\324" Ocircumflex
+<Multi_key> <asciicircum> <O> : "\324" Ocircumflex
+<Multi_key> <O> <greater> : "\324" Ocircumflex
+<Multi_key> <greater> <O> : "\324" Ocircumflex
+<Multi_key> <O> <asciitilde> : "\325" Otilde
+<Multi_key> <asciitilde> <O> : "\325" Otilde
+<Multi_key> <O> <minus> : "\325" Otilde
+<Multi_key> <minus> <O> : "\325" Otilde
+<Multi_key> <O> <quotedbl> : "\326" Odiaeresis
+<Multi_key> <quotedbl> <O> : "\326" Odiaeresis
+<Multi_key> <O> <diaeresis> : "\326" Odiaeresis
+<Multi_key> <diaeresis> <O> : "\326" Odiaeresis
+<Multi_key> <O> <slash> : "\330" Ooblique
+<Multi_key> <slash> <O> : "\330" Ooblique
+<Multi_key> <O> <E> : "\274" OE
+<Multi_key> <o> <grave> : "\362" ograve
+<Multi_key> <grave> <o> : "\362" ograve
+<Multi_key> <o> <acute> : "\363" oacute
+<Multi_key> <acute> <o> : "\363" oacute
+<Multi_key> <o> <apostrophe> : "\363" oacute
+<Multi_key> <apostrophe> <o> : "\363" oacute
+<Multi_key> <o> <asciicircum> : "\364" ocircumflex
+<Multi_key> <asciicircum> <o> : "\364" ocircumflex
+<Multi_key> <o> <greater> : "\364" ocircumflex
+<Multi_key> <greater> <o> : "\364" ocircumflex
+<Multi_key> <o> <asciitilde> : "\365" otilde
+<Multi_key> <asciitilde> <o> : "\365" otilde
+<Multi_key> <o> <minus> : "\365" otilde
+<Multi_key> <minus> <o> : "\365" otilde
+<Multi_key> <o> <quotedbl> : "\366" odiaeresis
+<Multi_key> <quotedbl> <o> : "\366" odiaeresis
+<Multi_key> <o> <diaeresis> : "\366" odiaeresis
+<Multi_key> <diaeresis> <o> : "\366" odiaeresis
+<Multi_key> <o> <slash> : "\370" oslash
+<Multi_key> <slash> <o> : "\370" oslash
+<Multi_key> <S> <cedilla> : "\336" Scedilla
+<Multi_key> <S> <comma> : "\336" Scedilla
+<Multi_key> <cedilla> <S> : "\336" Scedilla
+<Multi_key> <cedilla> <s> : "\376" scedilla
+<Multi_key> <comma> <S> : "\336" Scedilla
+<Multi_key> <comma> <s> : "\376" scedilla
+<Multi_key> <s> <cedilla> : "\376" scedilla
+<Multi_key> <s> <comma> : "\376" scedilla
+<Multi_key> <U> <grave> : "\331" Ugrave
+<Multi_key> <grave> <U> : "\331" Ugrave
+<Multi_key> <U> <acute> : "\332" Uacute
+<Multi_key> <acute> <U> : "\332" Uacute
+<Multi_key> <U> <apostrophe> : "\332" Uacute
+<Multi_key> <apostrophe> <U> : "\332" Uacute
+<Multi_key> <U> <asciicircum> : "\333" Ucircumflex
+<Multi_key> <asciicircum> <U> : "\333" Ucircumflex
+<Multi_key> <U> <greater> : "\333" Ucircumflex
+<Multi_key> <greater> <U> : "\333" Ucircumflex
+<Multi_key> <U> <quotedbl> : "\334" Udiaeresis
+<Multi_key> <quotedbl> <U> : "\334" Udiaeresis
+<Multi_key> <U> <diaeresis> : "\334" Udiaeresis
+<Multi_key> <diaeresis> <U> : "\334" Udiaeresis
+<Multi_key> <u> <grave> : "\371" ugrave
+<Multi_key> <grave> <u> : "\371" ugrave
+<Multi_key> <u> <acute> : "\372" uacute
+<Multi_key> <acute> <u> : "\372" uacute
+<Multi_key> <u> <apostrophe> : "\372" uacute
+<Multi_key> <apostrophe> <u> : "\372" uacute
+<Multi_key> <u> <asciicircum> : "\373" ucircumflex
+<Multi_key> <asciicircum> <u> : "\373" ucircumflex
+<Multi_key> <u> <greater> : "\373" ucircumflex
+<Multi_key> <greater> <u> : "\373" ucircumflex
+<Multi_key> <u> <quotedbl> : "\374" udiaeresis
+<Multi_key> <quotedbl> <u> : "\374" udiaeresis
+<Multi_key> <u> <diaeresis> : "\374" udiaeresis
+<Multi_key> <diaeresis> <u> : "\374" udiaeresis
+<Multi_key> <s> <s> : "\337" ssharp
+<Multi_key> <T> <H> : "\336" THORN
+<Multi_key> <t> <h> : "\376" thorn
+<Multi_key> <Y> <acute> : "\327" Yacute
+<Multi_key> <acute> <Y> : "\327" Yacute
+<Multi_key> <Y> <apostrophe> : "\327" Yacute
+<Multi_key> <apostrophe> <Y> : "\327" Yacute
+<Multi_key> <Y> <quotedbl> : "\276" Ydiaeresis
+<Multi_key> <quotedbl> <Y> : "\276" Ydiaeresis
+<Multi_key> <Y> <diaeresis> : "\276" Ydiaeresis
+<Multi_key> <diaeresis> <Y> : "\276" Ydiaeresis
+<Multi_key> <y> <acute> : "\367" yacute
+<Multi_key> <acute> <y> : "\367" yacute
+<Multi_key> <y> <apostrophe> : "\367" yacute
+<Multi_key> <apostrophe> <y> : "\367" yacute
+<Multi_key> <y> <quotedbl> : "\377" ydiaeresis
+<Multi_key> <quotedbl> <y> : "\377" ydiaeresis
+<Multi_key> <y> <diaeresis> : "\377" ydiaeresis
+<Multi_key> <diaeresis> <y> : "\377" ydiaeresis
+<Multi_key> <Z> <less> : "\241" Zcaron
+<Multi_key> <less> <Z> : "\241" Zcaron
+<Multi_key> <z> <less> : "\261" zcaron
+<Multi_key> <less> <z> : "\261" zcaron
+<Multi_key> <v> <Z> : "\241" Zcaron
+<Multi_key> <v> <z> : "\261" zcaron
+<Multi_key> <G> <less> : "\252" Gcaron
+<Multi_key> <less> <G> : "\252" Gcaron
+<Multi_key> <g> <less> : "\272" gcaron
+<Multi_key> <less> <g> : "\272" gcaron
+<Multi_key> <v> <G> : "\252" Gcaron
+<Multi_key> <v> <g> : "\272" gcaron
+<Multi_key> <O> <less> : "\264" Ocaron
+<Multi_key> <less> <O> : "\264" Ocaron
+<Multi_key> <o> <less> : "\275" ocaron
+<Multi_key> <less> <o> : "\275" ocaron
+<Multi_key> <v> <O> : "\264" Ocaron
+<Multi_key> <v> <o> : "\275" ocaron
+XCOMM
+XCOMM dead key accent keysyms
+XCOMM Special Character
+<dead_circumflex> <slash> : "|" bar
+<dead_grave> <space> : "`" grave
+<dead_acute> <space> : "'" apostrophe
+<dead_diaeresis> <space> : "\250" diaeresis
+<dead_circumflex> <space> : "^" asciicircum
+<dead_tilde> <space> : "~" asciitilde
+<dead_circumflex> <0> : "\260" degree
+<dead_circumflex> <1> : "\271" onesuperior
+<dead_circumflex> <2> : "\262" twosuperior
+<dead_circumflex> <3> : "\263" threesuperior
+<dead_circumflex> <period> : "\267" periodcentered
+<dead_cedilla> <minus> : "\254" notsign
+<dead_circumflex> <minus> : "\257" macron
+<dead_circumflex> <underscore> : "\257" macron
+<dead_acute> <apostrophe> : "\264" acute
+<dead_cedilla> <comma> : "\270" cedilla
+<dead_diaeresis> <quotedbl> : "\250" diaeresis
+XCOMM Accented Alphabet
+<dead_abovering> <A> : "\305" Aring
+<dead_abovering> <a> : "\345" aring
+<dead_grave> <A> : "\300" Agrave
+<dead_acute> <A> : "\301" Aacute
+<dead_circumflex> <A> : "\302" Acircumflex
+<dead_tilde> <A> : "\303" Atilde
+<dead_diaeresis> <A> : "\304" Adiaeresis
+<dead_grave> <a> : "\340" agrave
+<dead_acute> <a> : "\341" aacute
+<dead_circumflex> <a> : "\342" acircumflex
+<dead_tilde> <a> : "\343" atilde
+<dead_diaeresis> <a> : "\344" adiaeresis
+<dead_cedilla> <C> : "\307" Ccedilla
+<dead_cedilla> <c> : "\347" ccedilla
+<dead_grave> <E> : "\310" Egrave
+<dead_acute> <E> : "\311" Eacute
+<dead_circumflex> <E> : "\312" Ecircumflex
+<dead_diaeresis> <E> : "\313" Ediaeresis
+<dead_grave> <e> : "\350" egrave
+<dead_acute> <e> : "\351" eacute
+<dead_circumflex> <e> : "\352" ecircumflex
+<dead_diaeresis> <e> : "\353" ediaeresis
+<dead_breve> <G> : "\320" Gbreve
+<dead_breve> <g> : "\360" gbreve
+<dead_abovedot> <I> : "\335" Iabovedot
+<dead_grave> <I> : "\314" Igrave
+<dead_acute> <I> : "\315" Iacute
+<dead_circumflex> <I> : "\316" Icircumflex
+<dead_diaeresis> <I> : "\317" Idiaeresis
+<dead_abovedot> <i> : "\375" idotless
+<dead_grave> <i> : "\354" igrave
+<dead_acute> <i> : "\355" iacute
+<dead_circumflex> <i> : "\356" icircumflex
+<dead_diaeresis> <i> : "\357" idiaeresis
+<dead_tilde> <N> : "\321" Ntilde
+<dead_tilde> <n> : "\361" ntilde
+<dead_grave> <O> : "\322" Ograve
+<dead_acute> <O> : "\323" Oacute
+<dead_circumflex> <O> : "\324" Ocircumflex
+<dead_tilde> <O> : "\325" Otilde
+<dead_diaeresis> <O> : "\326" Odiaeresis
+<dead_grave> <o> : "\362" ograve
+<dead_acute> <o> : "\363" oacute
+<dead_circumflex> <o> : "\364" ocircumflex
+<dead_tilde> <o> : "\365" otilde
+<dead_diaeresis> <o> : "\366" odiaeresis
+<dead_cedilla> <S> : "\336" Scedilla
+<dead_cedilla> <s> : "\376" scedilla
+<dead_grave> <U> : "\331" Ugrave
+<dead_acute> <U> : "\332" Uacute
+<dead_circumflex> <U> : "\333" Ucircumflex
+<dead_diaeresis> <U> : "\334" Udiaeresis
+<dead_grave> <u> : "\371" ugrave
+<dead_acute> <u> : "\372" uacute
+<dead_circumflex> <u> : "\373" ucircumflex
+<dead_diaeresis> <u> : "\374" udiaeresis
+<dead_acute> <Y> : "\327" Yacute
+<dead_diaeresis> <Y> : "\276" Ydiaeresis
+<dead_acute> <y> : "\367" yacute
+<dead_diaeresis> <y> : "\377" ydiaeresis
+<dead_caron> <Z> : "\241" Zcaron
+<dead_caron> <z> : "\261" zcaron
+<dead_caron> <G> : "\252" Gcaron
+<dead_caron> <g> : "\272" gcaron
+XCOMM End of Sequence Definition
diff --git a/libX11/nls/iso8859-9e/XI18N_OBJS b/libX11/nls/iso8859-9e/XI18N_OBJS
index 325fb2135..a0d710b6b 100644
--- a/libX11/nls/iso8859-9e/XI18N_OBJS
+++ b/libX11/nls/iso8859-9e/XI18N_OBJS
@@ -1,7 +1,7 @@
-# CATEGORY(XLC|XIM|OM) SHARED_LIBRARY_NAME FUNCTION_NAME
-#
-# XI18N objects table for iso8859-9e locale
-#
-XLC common/xlcDef _XlcDefaultLoader # XLC_open
-XIM common/ximcp _XimOpenIM _XimRegisterIMInstantiateCallback _XimUnRegisterIMInstantiateCallback # XIM_open XIM_register XIM_unregister
-XOM common/xomGeneric _XomGenericOpenOM # XOM_open
+# CATEGORY(XLC|XIM|OM) SHARED_LIBRARY_NAME FUNCTION_NAME
+#
+# XI18N objects table for iso8859-9e locale
+#
+XLC common/xlcDef _XlcDefaultLoader # XLC_open
+XIM common/ximcp _XimOpenIM _XimRegisterIMInstantiateCallback _XimUnRegisterIMInstantiateCallback # XIM_open XIM_register XIM_unregister
+XOM common/xomGeneric _XomGenericOpenOM # XOM_open
diff --git a/libX11/nls/iso8859-9e/XLC_LOCALE.pre b/libX11/nls/iso8859-9e/XLC_LOCALE.pre
index ba35c7ee8..cc7657850 100644
--- a/libX11/nls/iso8859-9e/XLC_LOCALE.pre
+++ b/libX11/nls/iso8859-9e/XLC_LOCALE.pre
@@ -1,84 +1,84 @@
-XCOMM XLocale Database Sample for iso8859-9e.
-XCOMM
-
-XCOMM
-XCOMM XLC_FONTSET category
-XCOMM
-XLC_FONTSET
-XCOMM fs0 class
-fs0 {
- charset {
- name ISO8859-1:GL
- }
- font {
- primary ISO8859-9E:GL
- substitute ISO8859-1:GL
- vertical_rotate all
- }
-}
-XCOMM fs1 class
-fs1 {
- charset {
- name ISO8859-9E:GR
- }
- font {
- primary ISO8859-9E:GR
- }
-}
-END XLC_FONTSET
-XCOMM
-XCOMM XLC_CHARSET_DEFINE category
-XCOMM
-XLC_CHARSET_DEFINE
-csd0 {
- charset_name ISO8859-9E
- side GR
- length 1
- string_encoding False
- sequence \x1b%/1
-}
-END XLC_CHARSET_DEFINE
-
-XCOMM
-XCOMM XLC_XLOCALE category
-XCOMM
-XLC_XLOCALE
-
-encoding_name ISO8859-9E
-mb_cur_max 1
-state_depend_encoding False
-#if WCHAR32
-wc_encoding_mask \x30000000
-wc_shift_bits 7
-#else
-wc_encoding_mask \x00008080
-wc_shift_bits 8
-#endif
-
-#ifndef X_LOCALE
-use_stdc_env True
-force_convert_to_mb True
-#endif
-
-XCOMM cs0 class
-cs0 {
- side GL:Default
- length 1
- wc_encoding \x00000000
- ct_encoding ISO8859-9E:GL; ISO8859-1:GL
-}
-
-
-XCOMM cs1 class
-cs1 {
- side GR:Default
- length 1
-#if WCHAR32
- wc_encoding \x30000000
-#else
- wc_encoding \x00008080
-#endif
- ct_encoding ISO8859-9E:GR
-}
-
-END XLC_XLOCALE
+XCOMM XLocale Database Sample for iso8859-9e.
+XCOMM
+
+XCOMM
+XCOMM XLC_FONTSET category
+XCOMM
+XLC_FONTSET
+XCOMM fs0 class
+fs0 {
+ charset {
+ name ISO8859-1:GL
+ }
+ font {
+ primary ISO8859-9E:GL
+ substitute ISO8859-1:GL
+ vertical_rotate all
+ }
+}
+XCOMM fs1 class
+fs1 {
+ charset {
+ name ISO8859-9E:GR
+ }
+ font {
+ primary ISO8859-9E:GR
+ }
+}
+END XLC_FONTSET
+XCOMM
+XCOMM XLC_CHARSET_DEFINE category
+XCOMM
+XLC_CHARSET_DEFINE
+csd0 {
+ charset_name ISO8859-9E
+ side GR
+ length 1
+ string_encoding False
+ sequence \x1b%/1
+}
+END XLC_CHARSET_DEFINE
+
+XCOMM
+XCOMM XLC_XLOCALE category
+XCOMM
+XLC_XLOCALE
+
+encoding_name ISO8859-9E
+mb_cur_max 1
+state_depend_encoding False
+#if WCHAR32
+wc_encoding_mask \x30000000
+wc_shift_bits 7
+#else
+wc_encoding_mask \x00008080
+wc_shift_bits 8
+#endif
+
+#ifndef X_LOCALE
+use_stdc_env True
+force_convert_to_mb True
+#endif
+
+XCOMM cs0 class
+cs0 {
+ side GL:Default
+ length 1
+ wc_encoding \x00000000
+ ct_encoding ISO8859-9E:GL; ISO8859-1:GL
+}
+
+
+XCOMM cs1 class
+cs1 {
+ side GR:Default
+ length 1
+#if WCHAR32
+ wc_encoding \x30000000
+#else
+ wc_encoding \x00008080
+#endif
+ ct_encoding ISO8859-9E:GR
+}
+
+END XLC_XLOCALE
diff --git a/libX11/nls/ja.JIS/Compose.pre b/libX11/nls/ja.JIS/Compose.pre
index 7473fb859..b1f8e55a0 100644
--- a/libX11/nls/ja.JIS/Compose.pre
+++ b/libX11/nls/ja.JIS/Compose.pre
@@ -1,14 +1,14 @@
-XCOMM
-XCOMM ja.JIS Compose Sequence
-XCOMM
-XCOMM Sequence Definition
-XCOMM
-XCOMM
-XCOMM This file currently has no entries. It appears that a compose file (even
-XCOMM just an empty one) is required for the appropriate keysyms to work for
-XCOMM this encoding.
-XCOMM
-XCOMM <Multi_key> Means <Compose>
-XCOMM Special Character
-
-XCOMM End of Sequence Definition
+XCOMM
+XCOMM ja.JIS Compose Sequence
+XCOMM
+XCOMM Sequence Definition
+XCOMM
+XCOMM
+XCOMM This file currently has no entries. It appears that a compose file (even
+XCOMM just an empty one) is required for the appropriate keysyms to work for
+XCOMM this encoding.
+XCOMM
+XCOMM <Multi_key> Means <Compose>
+XCOMM Special Character
+
+XCOMM End of Sequence Definition
diff --git a/libX11/nls/ja.JIS/XI18N_OBJS b/libX11/nls/ja.JIS/XI18N_OBJS
index b709c8210..0cf97ee81 100644
--- a/libX11/nls/ja.JIS/XI18N_OBJS
+++ b/libX11/nls/ja.JIS/XI18N_OBJS
@@ -1,7 +1,7 @@
-# CATEGORY(XLC|XIM|OM) SHARED_LIBRARY_NAME FUNCTION_NAME
-#
-# XI18N objects table for ja.JIS locale
-#
-XLC common/xlibi18n _XlcGenericLoader # XLC_open
-XIM common/ximcp _XimOpenIM _XimRegisterIMInstantiateCallback _XimUnRegisterIMInstantiateCallback # XIM_open XIM_register XIM_unregister
-XOM common/xomGeneric _XomGenericOpenOM # XOM_open
+# CATEGORY(XLC|XIM|OM) SHARED_LIBRARY_NAME FUNCTION_NAME
+#
+# XI18N objects table for ja.JIS locale
+#
+XLC common/xlibi18n _XlcGenericLoader # XLC_open
+XIM common/ximcp _XimOpenIM _XimRegisterIMInstantiateCallback _XimUnRegisterIMInstantiateCallback # XIM_open XIM_register XIM_unregister
+XOM common/xomGeneric _XomGenericOpenOM # XOM_open
diff --git a/libX11/nls/ja.JIS/XLC_LOCALE.pre b/libX11/nls/ja.JIS/XLC_LOCALE.pre
index 8fc4d056c..4b771aca2 100644
--- a/libX11/nls/ja.JIS/XLC_LOCALE.pre
+++ b/libX11/nls/ja.JIS/XLC_LOCALE.pre
@@ -1,124 +1,124 @@
-XCOMM
-XCOMM XLocale Database Sample for ja_JP.jis
-XCOMM
-
-XCOMM
-XCOMM XLC_FONTSET category
-XCOMM
-XLC_FONTSET
-XCOMM fs0 class (7 bit ASCII)
-fs0 {
- charset {
- name ISO8859-1:GL
- }
- font {
- primary ISO8859-1:GL
- substitute JISX0201.1976-0:GL
- vertical_rotate all
- }
-}
-XCOMM fs1 class (Kanji)
-fs1 {
- charset {
- name JISX0208.1983-0:GL
- }
- font {
- primary JISX0208.1983-0:GL
- substitute JISX0208.1990-0:GL
- }
-}
-XCOMM fs2 class (Half Kana)
-fs2 {
- charset {
- name JISX0201.1976-0:GR
- }
- font {
- primary JISX0201.1976-0:GR
- substitute JISX0201.1976-0:GR
- vertical_rotate all
- }
-}
-XCOMM fs3 class (Supplementary Kanji)
-XCOMM fs3 {
-XCOMM charset {
-XCOMM name JISX0212.1990-0:GL
-XCOMM }
-XCOMM font {
-XCOMM primary JISX0212.1990-0:GL
-XCOMM }
-XCOMM }
-END XLC_FONTSET
-
-XCOMM
-XCOMM XLC_XLOCALE category
-XCOMM
-XLC_XLOCALE
-
-encoding_name ja.jis
-mb_cur_max 5
-state_depend_encoding True
-#if WCHAR32
-wc_encoding_mask \x30000000
-wc_shift_bits 7
-#else
-wc_encoding_mask \x00008080
-wc_shift_bits 8
-#endif
-
-#ifndef X_LOCALE
-use_stdc_env True
-force_convert_to_mb True
-#endif
-
-XCOMM cs0 class
-cs0 {
- side GL:Default
- length 1
- mb_encoding <LSL> \x1b \x28 \x4a;\
- <LSL> \x1b \x28 \x42
- wc_encoding \x00000000
- ct_encoding ISO8859-1:GL; JISX0201.1976-0:GL
-}
-
-XCOMM cs1 class
-cs1 {
- side GL
- length 2
- mb_encoding <LSL> \x1b \x24 \x42;\
- <LSL> \x1b \x24 \x40
-#if WCHAR32
- wc_encoding \x30000000
-#else
- wc_encoding \x00008080
-#endif
- ct_encoding JISX0208.1983-0:GL; JISX0208.1983-0:GR;\
- JISX0208.1983-1:GL; JISX0208.1983-1:GR
-}
-
-XCOMM cs2 class
-cs2 {
- side GL
- length 1
- mb_encoding <LSL> \x1b \x28 \x49
-#if WCHAR32
- wc_encoding \x10000000
-#else
- wc_encoding \x00000080
-#endif
- ct_encoding JISX0201.1976-0:GR
-}
-
-XCOMM cs3 class
-XCOMM cs3 {
-XCOMM side GL
-XCOMM length 2
-XCOMM mb_encoding <LSL> \x1b \x24 \x28 \x44
-XCOMM #if WCHAR32
-XCOMM wc_encoding \x20000000
-XCOMM #else
-XCOMM wc_encoding \x00008000
-XCOMM #endif
-XCOMM ct_encoding JISX0212.1990-0:GL; JISX0212.1990-0:GR
-XCOMM }
-
-END XLC_XLOCALE
+XCOMM
+XCOMM XLocale Database Sample for ja_JP.jis
+XCOMM
+
+XCOMM
+XCOMM XLC_FONTSET category
+XCOMM
+XLC_FONTSET
+XCOMM fs0 class (7 bit ASCII)
+fs0 {
+ charset {
+ name ISO8859-1:GL
+ }
+ font {
+ primary ISO8859-1:GL
+ substitute JISX0201.1976-0:GL
+ vertical_rotate all
+ }
+}
+XCOMM fs1 class (Kanji)
+fs1 {
+ charset {
+ name JISX0208.1983-0:GL
+ }
+ font {
+ primary JISX0208.1983-0:GL
+ substitute JISX0208.1990-0:GL
+ }
+}
+XCOMM fs2 class (Half Kana)
+fs2 {
+ charset {
+ name JISX0201.1976-0:GR
+ }
+ font {
+ primary JISX0201.1976-0:GR
+ substitute JISX0201.1976-0:GR
+ vertical_rotate all
+ }
+}
+XCOMM fs3 class (Supplementary Kanji)
+XCOMM fs3 {
+XCOMM charset {
+XCOMM name JISX0212.1990-0:GL
+XCOMM }
+XCOMM font {
+XCOMM primary JISX0212.1990-0:GL
+XCOMM }
+XCOMM }
+END XLC_FONTSET
+
+XCOMM
+XCOMM XLC_XLOCALE category
+XCOMM
+XLC_XLOCALE
+
+encoding_name ja.jis
+mb_cur_max 5
+state_depend_encoding True
+#if WCHAR32
+wc_encoding_mask \x30000000
+wc_shift_bits 7
+#else
+wc_encoding_mask \x00008080
+wc_shift_bits 8
+#endif
+
+#ifndef X_LOCALE
+use_stdc_env True
+force_convert_to_mb True
+#endif
+
+XCOMM cs0 class
+cs0 {
+ side GL:Default
+ length 1
+ mb_encoding <LSL> \x1b \x28 \x4a;\
+ <LSL> \x1b \x28 \x42
+ wc_encoding \x00000000
+ ct_encoding ISO8859-1:GL; JISX0201.1976-0:GL
+}
+
+XCOMM cs1 class
+cs1 {
+ side GL
+ length 2
+ mb_encoding <LSL> \x1b \x24 \x42;\
+ <LSL> \x1b \x24 \x40
+#if WCHAR32
+ wc_encoding \x30000000
+#else
+ wc_encoding \x00008080
+#endif
+ ct_encoding JISX0208.1983-0:GL; JISX0208.1983-0:GR;\
+ JISX0208.1983-1:GL; JISX0208.1983-1:GR
+}
+
+XCOMM cs2 class
+cs2 {
+ side GL
+ length 1
+ mb_encoding <LSL> \x1b \x28 \x49
+#if WCHAR32
+ wc_encoding \x10000000
+#else
+ wc_encoding \x00000080
+#endif
+ ct_encoding JISX0201.1976-0:GR
+}
+
+XCOMM cs3 class
+XCOMM cs3 {
+XCOMM side GL
+XCOMM length 2
+XCOMM mb_encoding <LSL> \x1b \x24 \x28 \x44
+XCOMM #if WCHAR32
+XCOMM wc_encoding \x20000000
+XCOMM #else
+XCOMM wc_encoding \x00008000
+XCOMM #endif
+XCOMM ct_encoding JISX0212.1990-0:GL; JISX0212.1990-0:GR
+XCOMM }
+
+END XLC_XLOCALE
diff --git a/libX11/nls/ja.S90/XI18N_OBJS b/libX11/nls/ja.S90/XI18N_OBJS
index 8f5a14992..d8f0fdd99 100644
--- a/libX11/nls/ja.S90/XI18N_OBJS
+++ b/libX11/nls/ja.S90/XI18N_OBJS
@@ -1,7 +1,7 @@
-# CATEGORY(XLC|XIM|OM) SHARED_LIBRARY_NAME FUNCTION_NAME
-#
-# XI18N objects table for ja.S90 locale
-#
-XLC common/xlibi18n _XlcGenericLoader # XLC_open
-XIM common/ximcp _XimOpenIM _XimRegisterIMInstantiateCallback _XimUnRegisterIMInstantiateCallback # XIM_open XIM_register XIM_unregister
-XOM common/xomGeneric _XomGenericOpenOM # XOM_open
+# CATEGORY(XLC|XIM|OM) SHARED_LIBRARY_NAME FUNCTION_NAME
+#
+# XI18N objects table for ja.S90 locale
+#
+XLC common/xlibi18n _XlcGenericLoader # XLC_open
+XIM common/ximcp _XimOpenIM _XimRegisterIMInstantiateCallback _XimUnRegisterIMInstantiateCallback # XIM_open XIM_register XIM_unregister
+XOM common/xomGeneric _XomGenericOpenOM # XOM_open
diff --git a/libX11/nls/ja.S90/XLC_LOCALE.pre b/libX11/nls/ja.S90/XLC_LOCALE.pre
index d373187ae..cb4e49d13 100644
--- a/libX11/nls/ja.S90/XLC_LOCALE.pre
+++ b/libX11/nls/ja.S90/XLC_LOCALE.pre
@@ -1,150 +1,150 @@
-XCOMM Copyright 1995 by FUJITSU LIMITED
-XCOMM This is source code modified by FUJITSU LIMITED under the Joint
-XCOMM Development Agreement for the CDEnext PST.
-XCOMM This is unpublished proprietary source code of FUJITSU LIMITED
-XCOMM
-XCOMM NLS-DB for ja_JP.S90
-
-XCOMM
-XCOMM XLC_CHARSET_DEFINE category
-XCOMM
-XLC_CHARSET_DEFINE
-csd0 {
- charset_name u90x03.1991-0
- side GL
- length 2
- gc_number 94
- string_encoding False
- sequence \x1b\x25\x28\x32
- encoding_name fujitsu.U90X03
-}
-
-csd1 {
- charset_name u90x03.1991-0
- side GR
- length 2
- gc_number 94
- string_encoding False
- sequence \x1b\x25\x2f\x32
- encoding_name fujitsu.U90X03
-}
-END XLC_CHARSET_DEFINE
-
-XCOMM
-XCOMM XLC_FONTSET category
-XCOMM
-XLC_FONTSET
-XCOMM fs0 class (7 bit ASCII)
-fs0 {
- charset {
- name JISX0201.1976-0:GL
- }
- font {
- primary JISX0201.1976-0:GL
- substitute ISO8859-1:GL
- vertical_rotate all
- }
-}
-XCOMM fs1 class (Kanji)
-fs1 {
- charset {
- name JISX0208.1983-0:GL
- udc_area \x7521,\x7e7e
- }
- font {
- primary fujitsu.u90x01.1991-0:GL,[\x2121,\x747e];\
- fujitsu.u90x03.1991-0:GL,[\x7521,\x7e7e]->\x6521
- substitute u90x01.1991-0:GL;\
- JISX0208.1983-0:GL; JISX0208.1983-0:GR;\
- JISX0208.1983-1:GL; JISX0208.1983-1:GR;\
- JISX0208.1990-0:GL; JISX0208.1990-0:GR
- vertical_map u90x01.1991-0.2:GL,\
- [\x2122,\x2125]->\x7d21,[\x2131,\x2132]->\x7d25,\
- [\x213c,\x213e]->\x7d27,[\x2141,\x215b]->\x7d2a,\
- [\x2421,\x2421]->\x7d45,[\x2423,\x2423]->\x7d46,\
- [\x2425,\x2425]->\x7d47,[\x2427,\x2427]->\x7d48,\
- [\x2429,\x2429]->\x7d49,[\x2443,\x2443]->\x7d4a,\
- [\x2463,\x2463]->\x7d4b,[\x2465,\x2465]->\x7d4c,\
- [\x2467,\x2467]->\x7d4d,[\x246e,\x246e]->\x7d4e,\
- [\x2521,\x2521]->\x7d4f,[\x2523,\x2523]->\x7d50,\
- [\x2525,\x2525]->\x7d51,[\x2527,\x2527]->\x7d52,\
- [\x2529,\x2529]->\x7d53,[\x2543,\x2543]->\x7d54,\
- [\x2563,\x2563]->\x7d55,[\x2565,\x2565]->\x7d56,\
- [\x2567,\x2567]->\x7d57,[\x256e,\x256e]->\x7d58,\
- [\x2575,\x2576]->\x7d59,[\x2475,\x2476]->\x7d5b
- }
-}
-XCOMM fs2 class (Half Kana)
-fs2 {
- charset {
- name JISX0201.1976-0:GR
- }
- font {
- primary JISX0201.1976-0:GR
- vertical_rotate all
- }
-}
-XCOMM fs3 class (JEF Kanji + User Defined Character)
-fs3 {
- charset {
- name u90x03.1991-0:GR; u90x03.1991-0:GL
- udc_area \x6521,\x787e
- }
- font {
- primary fujitsu.u90x03.1991-0:GL
- substitute u90x03.1991-0:GL;\
- JISX0208.1983-0:GL; JISX0208.1983-0:GR;\
- JISX0208.1983-1:GL; JISX0208.1983-1:GR;\
- JISX0208.1990-0:GL; JISX0208.1990-0:GR
- }
-}
-END XLC_FONTSET
-
-XCOMM
-XCOMM XLC_XLOCALE category
-XCOMM
-XLC_XLOCALE
-
-XCOMM encoding_name ja.euc
-encoding_name ja_JP.S90
-mb_cur_max 3
-state_depend_encoding False
-
-wc_encoding_mask \x30000000
-wc_shift_bits 7
-
-
-XCOMM cs0 class
-cs0 {
- side GL:Default
- length 1
- wc_encoding \x00000000
- ct_encoding JISX0201.1976-0:GL; ISO8859-1:GL
-}
-
-XCOMM cs1 class
-cs1 {
- side GR:Default
- length 2
- wc_encoding \x30000000
- ct_encoding JISX0208.1983-0:GL; JISX0208.1983-0:GR;\
- JISX0208.1983-1:GL; JISX0208.1983-1:GR
-}
-
-XCOMM cs2 class
-cs2 {
- side GR
- length 1
- mb_encoding <SS> \x8e
- wc_encoding \x10000000
- ct_encoding JISX0201.1976-0:GR
-}
-XCOMM cs3 class
-cs3 {
- side GR
- length 2
- mb_encoding <SS> \x8f
- wc_encoding \x20000000
- ct_encoding u90x03.1991-0:GR; u90x03.1991-0:GL
-}
-END XLC_XLOCALE
+XCOMM Copyright 1995 by FUJITSU LIMITED
+XCOMM This is source code modified by FUJITSU LIMITED under the Joint
+XCOMM Development Agreement for the CDEnext PST.
+XCOMM This is unpublished proprietary source code of FUJITSU LIMITED
+XCOMM
+XCOMM NLS-DB for ja_JP.S90
+
+XCOMM
+XCOMM XLC_CHARSET_DEFINE category
+XCOMM
+XLC_CHARSET_DEFINE
+csd0 {
+ charset_name u90x03.1991-0
+ side GL
+ length 2
+ gc_number 94
+ string_encoding False
+ sequence \x1b\x25\x28\x32
+ encoding_name fujitsu.U90X03
+}
+
+csd1 {
+ charset_name u90x03.1991-0
+ side GR
+ length 2
+ gc_number 94
+ string_encoding False
+ sequence \x1b\x25\x2f\x32
+ encoding_name fujitsu.U90X03
+}
+END XLC_CHARSET_DEFINE
+
+XCOMM
+XCOMM XLC_FONTSET category
+XCOMM
+XLC_FONTSET
+XCOMM fs0 class (7 bit ASCII)
+fs0 {
+ charset {
+ name JISX0201.1976-0:GL
+ }
+ font {
+ primary JISX0201.1976-0:GL
+ substitute ISO8859-1:GL
+ vertical_rotate all
+ }
+}
+XCOMM fs1 class (Kanji)
+fs1 {
+ charset {
+ name JISX0208.1983-0:GL
+ udc_area \x7521,\x7e7e
+ }
+ font {
+ primary fujitsu.u90x01.1991-0:GL,[\x2121,\x747e];\
+ fujitsu.u90x03.1991-0:GL,[\x7521,\x7e7e]->\x6521
+ substitute u90x01.1991-0:GL;\
+ JISX0208.1983-0:GL; JISX0208.1983-0:GR;\
+ JISX0208.1983-1:GL; JISX0208.1983-1:GR;\
+ JISX0208.1990-0:GL; JISX0208.1990-0:GR
+ vertical_map u90x01.1991-0.2:GL,\
+ [\x2122,\x2125]->\x7d21,[\x2131,\x2132]->\x7d25,\
+ [\x213c,\x213e]->\x7d27,[\x2141,\x215b]->\x7d2a,\
+ [\x2421,\x2421]->\x7d45,[\x2423,\x2423]->\x7d46,\
+ [\x2425,\x2425]->\x7d47,[\x2427,\x2427]->\x7d48,\
+ [\x2429,\x2429]->\x7d49,[\x2443,\x2443]->\x7d4a,\
+ [\x2463,\x2463]->\x7d4b,[\x2465,\x2465]->\x7d4c,\
+ [\x2467,\x2467]->\x7d4d,[\x246e,\x246e]->\x7d4e,\
+ [\x2521,\x2521]->\x7d4f,[\x2523,\x2523]->\x7d50,\
+ [\x2525,\x2525]->\x7d51,[\x2527,\x2527]->\x7d52,\
+ [\x2529,\x2529]->\x7d53,[\x2543,\x2543]->\x7d54,\
+ [\x2563,\x2563]->\x7d55,[\x2565,\x2565]->\x7d56,\
+ [\x2567,\x2567]->\x7d57,[\x256e,\x256e]->\x7d58,\
+ [\x2575,\x2576]->\x7d59,[\x2475,\x2476]->\x7d5b
+ }
+}
+XCOMM fs2 class (Half Kana)
+fs2 {
+ charset {
+ name JISX0201.1976-0:GR
+ }
+ font {
+ primary JISX0201.1976-0:GR
+ vertical_rotate all
+ }
+}
+XCOMM fs3 class (JEF Kanji + User Defined Character)
+fs3 {
+ charset {
+ name u90x03.1991-0:GR; u90x03.1991-0:GL
+ udc_area \x6521,\x787e
+ }
+ font {
+ primary fujitsu.u90x03.1991-0:GL
+ substitute u90x03.1991-0:GL;\
+ JISX0208.1983-0:GL; JISX0208.1983-0:GR;\
+ JISX0208.1983-1:GL; JISX0208.1983-1:GR;\
+ JISX0208.1990-0:GL; JISX0208.1990-0:GR
+ }
+}
+END XLC_FONTSET
+
+XCOMM
+XCOMM XLC_XLOCALE category
+XCOMM
+XLC_XLOCALE
+
+XCOMM encoding_name ja.euc
+encoding_name ja_JP.S90
+mb_cur_max 3
+state_depend_encoding False
+
+wc_encoding_mask \x30000000
+wc_shift_bits 7
+
+
+XCOMM cs0 class
+cs0 {
+ side GL:Default
+ length 1
+ wc_encoding \x00000000
+ ct_encoding JISX0201.1976-0:GL; ISO8859-1:GL
+}
+
+XCOMM cs1 class
+cs1 {
+ side GR:Default
+ length 2
+ wc_encoding \x30000000
+ ct_encoding JISX0208.1983-0:GL; JISX0208.1983-0:GR;\
+ JISX0208.1983-1:GL; JISX0208.1983-1:GR
+}
+
+XCOMM cs2 class
+cs2 {
+ side GR
+ length 1
+ mb_encoding <SS> \x8e
+ wc_encoding \x10000000
+ ct_encoding JISX0201.1976-0:GR
+}
+XCOMM cs3 class
+cs3 {
+ side GR
+ length 2
+ mb_encoding <SS> \x8f
+ wc_encoding \x20000000
+ ct_encoding u90x03.1991-0:GR; u90x03.1991-0:GL
+}
+END XLC_XLOCALE
diff --git a/libX11/nls/ja.SJIS/Compose.pre b/libX11/nls/ja.SJIS/Compose.pre
index 3b9bc8618..a6c75ef29 100644
--- a/libX11/nls/ja.SJIS/Compose.pre
+++ b/libX11/nls/ja.SJIS/Compose.pre
@@ -1,14 +1,14 @@
-XCOMM
-XCOMM ja.SJIS Compose Sequence
-XCOMM
-XCOMM Sequence Definition
-XCOMM
-XCOMM
-XCOMM This file currently has no entries. It appears that a compose file (even
-XCOMM just an empty one) is required for the appropriate keysyms to work for
-XCOMM this encoding.
-XCOMM
-XCOMM <Multi_key> Means <Compose>
-XCOMM Special Character
-
-XCOMM End of Sequence Definition
+XCOMM
+XCOMM ja.SJIS Compose Sequence
+XCOMM
+XCOMM Sequence Definition
+XCOMM
+XCOMM
+XCOMM This file currently has no entries. It appears that a compose file (even
+XCOMM just an empty one) is required for the appropriate keysyms to work for
+XCOMM this encoding.
+XCOMM
+XCOMM <Multi_key> Means <Compose>
+XCOMM Special Character
+
+XCOMM End of Sequence Definition
diff --git a/libX11/nls/ja.SJIS/XI18N_OBJS b/libX11/nls/ja.SJIS/XI18N_OBJS
index 3972441c4..29dffff7e 100644
--- a/libX11/nls/ja.SJIS/XI18N_OBJS
+++ b/libX11/nls/ja.SJIS/XI18N_OBJS
@@ -1,10 +1,10 @@
-# CATEGORY(XLC|XIM|OM) SHARED_LIBRARY_NAME FUNCTION_NAME
-#
-# XI18N objects table for ja locale
-#
-XLC ja_JP.PCK/xlibi18n_PCK _XlcGenericLoader # XLC_open
-XLC common/xlibi18n _XlcGenericLoader # XLC_open
-XIM common/ximp40 _Ximp_OpenIM # XIM_open
-XIM common/ximlocal _XimpLocalOpenIM # XIM_open
-XIM common/ximcp _XimOpenIM _XimRegisterIMInstantiateCallback _XimUnRegisterIMInstantiateCallback # XIM_open XIM_regiser XIM_unregister
-XOM common/xomGeneric _XomGenericOpenOM # XOM_open
+# CATEGORY(XLC|XIM|OM) SHARED_LIBRARY_NAME FUNCTION_NAME
+#
+# XI18N objects table for ja locale
+#
+XLC ja_JP.PCK/xlibi18n_PCK _XlcGenericLoader # XLC_open
+XLC common/xlibi18n _XlcGenericLoader # XLC_open
+XIM common/ximp40 _Ximp_OpenIM # XIM_open
+XIM common/ximlocal _XimpLocalOpenIM # XIM_open
+XIM common/ximcp _XimOpenIM _XimRegisterIMInstantiateCallback _XimUnRegisterIMInstantiateCallback # XIM_open XIM_regiser XIM_unregister
+XOM common/xomGeneric _XomGenericOpenOM # XOM_open
diff --git a/libX11/nls/ja.SJIS/XLC_LOCALE.pre b/libX11/nls/ja.SJIS/XLC_LOCALE.pre
index 8ba3fb1f4..671a98535 100644
--- a/libX11/nls/ja.SJIS/XLC_LOCALE.pre
+++ b/libX11/nls/ja.SJIS/XLC_LOCALE.pre
@@ -1,384 +1,384 @@
-XCOMM
-XCOMM XLocale Database Sample for ja_JP.sjis
-XCOMM
-
-#ifndef __uxp__
-
-XCOMM
-XCOMM XLC_FONTSET category
-XCOMM
-XLC_FONTSET
-XCOMM fs0 class (7 bit ASCII)
-fs0 {
- charset {
- name ISO8859-1:GL
- }
- font {
- primary ISO8859-1:GL
- substitute JISX0201.1976-0:GL
- vertical_rotate all
- }
-}
-XCOMM fs1 class (Kanji)
-fs1 {
- charset {
- name JISX0208.1983-0:GL
- }
- font {
- primary JISX0208.1983-0:GL
- substitute JISX0208.1990-0:GL
- }
-}
-XCOMM fs2 class (Half Kana)
-fs2 {
- charset {
- name JISX0201.1976-0:GR
- }
- font {
- primary JISX0201.1976-0:GR
- substitute JISX0201.1976-0:GR
- vertical_rotate all
- }
-}
-XCOMM fs3 class (Supplementary Kanji)
-XCOMM fs3 {
-XCOMM charset {
-XCOMM name JISX0212.1990-0:GL
-XCOMM }
-XCOMM font {
-XCOMM primary JISX0212.1990-0:GL
-XCOMM }
-XCOMM }
-END XLC_FONTSET
-
-XCOMM
-XCOMM XLC_XLOCALE category
-XCOMM
-XLC_XLOCALE
-
-encoding_name ja.sjis
-mb_cur_max 2
-state_depend_encoding False
-#if WCHAR32
-wc_encoding_mask \x30000000
-wc_shift_bits 7
-#else
-wc_encoding_mask \x00008080
-wc_shift_bits 8
-#endif
-
-#ifndef X_LOCALE
-use_stdc_env True
-force_convert_to_mb True
-#endif
-
-XCOMM cs0 class
-cs0 {
- side GL:Default
- length 1
- wc_encoding \x00000000
- ct_encoding ISO8859-1:GL; JISX0201.1976-0:GL
-}
-
-XCOMM cs1 class
-cs1 {
- side none
- length 2
- byte1 \x81,\x9f;\xe0,\xef
- byte2 \x40,\x7e;\x80,\xfc
-#if WCHAR32
- wc_encoding \x30000000
-#else
- wc_encoding \x00008080
-#endif
- ct_encoding JISX0208.1983-0:GL; JISX0208.1983-0:GR;\
- JISX0208.1983-1:GL; JISX0208.1983-1:GR
- mb_conversion \
- [\x8140,\x817e]->\x2121,[\x8180,\x819e]->\x2160,[\x819f,\x81fc]->\x2221,\
- [\x8240,\x827e]->\x2321,[\x8280,\x829e]->\x2360,[\x829f,\x82fc]->\x2421,\
- [\x8340,\x837e]->\x2521,[\x8380,\x839e]->\x2560,[\x839f,\x83fc]->\x2621,\
- [\x8440,\x847e]->\x2721,[\x8480,\x849e]->\x2760,[\x849f,\x84fc]->\x2821,\
- [\x8540,\x857e]->\x2921,[\x8580,\x859e]->\x2960,[\x859f,\x85fc]->\x2a21,\
- [\x8640,\x867e]->\x2b21,[\x8680,\x869e]->\x2b60,[\x869f,\x86fc]->\x2c21,\
- [\x8740,\x877e]->\x2d21,[\x8780,\x879e]->\x2d60,[\x879f,\x87fc]->\x2e21,\
- [\x8840,\x887e]->\x2f21,[\x8880,\x889e]->\x2f60,[\x889f,\x88fc]->\x3021,\
- [\x8940,\x897e]->\x3121,[\x8980,\x899e]->\x3160,[\x899f,\x89fc]->\x3221,\
- [\x8a40,\x8a7e]->\x3321,[\x8a80,\x8a9e]->\x3360,[\x8a9f,\x8afc]->\x3421,\
- [\x8b40,\x8b7e]->\x3521,[\x8b80,\x8b9e]->\x3560,[\x8b9f,\x8bfc]->\x3621,\
- [\x8c40,\x8c7e]->\x3721,[\x8c80,\x8c9e]->\x3760,[\x8c9f,\x8cfc]->\x3821,\
- [\x8d40,\x8d7e]->\x3921,[\x8d80,\x8d9e]->\x3960,[\x8d9f,\x8dfc]->\x3a21,\
- [\x8e40,\x8e7e]->\x3b21,[\x8e80,\x8e9e]->\x3b60,[\x8e9f,\x8efc]->\x3c21,\
- [\x8f40,\x8f7e]->\x3d21,[\x8f80,\x8f9e]->\x3d60,[\x8f9f,\x8ffc]->\x3e21,\
- [\x9040,\x907e]->\x3f21,[\x9080,\x909e]->\x3f60,[\x909f,\x90fc]->\x4021,\
- [\x9140,\x917e]->\x4121,[\x9180,\x919e]->\x4160,[\x919f,\x91fc]->\x4221,\
- [\x9240,\x927e]->\x4321,[\x9280,\x929e]->\x4360,[\x929f,\x92fc]->\x4421,\
- [\x9340,\x937e]->\x4521,[\x9380,\x939e]->\x4560,[\x939f,\x93fc]->\x4621,\
- [\x9440,\x947e]->\x4721,[\x9480,\x949e]->\x4760,[\x949f,\x94fc]->\x4821,\
- [\x9540,\x957e]->\x4921,[\x9580,\x959e]->\x4960,[\x959f,\x95fc]->\x4a21,\
- [\x9640,\x967e]->\x4b21,[\x9680,\x969e]->\x4b60,[\x969f,\x96fc]->\x4c21,\
- [\x9740,\x977e]->\x4d21,[\x9780,\x979e]->\x4d60,[\x979f,\x97fc]->\x4e21,\
- [\x9840,\x987e]->\x4f21,[\x9880,\x989e]->\x4f60,[\x989f,\x98fc]->\x5021,\
- [\x9940,\x997e]->\x5121,[\x9980,\x999e]->\x5160,[\x999f,\x99fc]->\x5221,\
- [\x9a40,\x9a7e]->\x5321,[\x9a80,\x9a9e]->\x5360,[\x9a9f,\x9afc]->\x5421,\
- [\x9b40,\x9b7e]->\x5521,[\x9b80,\x9b9e]->\x5560,[\x9b9f,\x9bfc]->\x5621,\
- [\x9c40,\x9c7e]->\x5721,[\x9c80,\x9c9e]->\x5760,[\x9c9f,\x9cfc]->\x5821,\
- [\x9d40,\x9d7e]->\x5921,[\x9d80,\x9d9e]->\x5960,[\x9d9f,\x9dfc]->\x5a21,\
- [\x9e40,\x9e7e]->\x5b21,[\x9e80,\x9e9e]->\x5b60,[\x9e9f,\x9efc]->\x5c21,\
- [\x9f40,\x9f7e]->\x5d21,[\x9f80,\x9f9e]->\x5d60,[\x9f9f,\x9ffc]->\x5e21,\
- [\xe040,\xe07e]->\x5f21,[\xe080,\xe09e]->\x5f60,[\xe09f,\xe0fc]->\x6021,\
- [\xe140,\xe17e]->\x6121,[\xe180,\xe19e]->\x6160,[\xe19f,\xe1fc]->\x6221,\
- [\xe240,\xe27e]->\x6321,[\xe280,\xe29e]->\x6360,[\xe29f,\xe2fc]->\x6421,\
- [\xe340,\xe37e]->\x6521,[\xe380,\xe39e]->\x6560,[\xe39f,\xe3fc]->\x6621,\
- [\xe440,\xe47e]->\x6721,[\xe480,\xe49e]->\x6760,[\xe49f,\xe4fc]->\x6821,\
- [\xe540,\xe57e]->\x6921,[\xe580,\xe59e]->\x6960,[\xe59f,\xe5fc]->\x6a21,\
- [\xe640,\xe67e]->\x6b21,[\xe680,\xe69e]->\x6b60,[\xe69f,\xe6fc]->\x6c21,\
- [\xe740,\xe77e]->\x6d21,[\xe780,\xe79e]->\x6d60,[\xe79f,\xe7fc]->\x6e21,\
- [\xe840,\xe87e]->\x6f21,[\xe880,\xe89e]->\x6f60,[\xe89f,\xe8fc]->\x7021,\
- [\xe940,\xe97e]->\x7121,[\xe980,\xe99e]->\x7160,[\xe99f,\xe9fc]->\x7221,\
- [\xea40,\xea7e]->\x7321,[\xea80,\xea9e]->\x7360,[\xea9f,\xeafc]->\x7421,\
- [\xeb40,\xeb7e]->\x7521,[\xeb80,\xeb9e]->\x7560,[\xeb9f,\xebfc]->\x7621,\
- [\xec40,\xec7e]->\x7721,[\xec80,\xec9e]->\x7760,[\xec9f,\xecfc]->\x7821,\
- [\xed40,\xed7e]->\x7921,[\xed80,\xed9e]->\x7960,[\xed9f,\xedfc]->\x7a21,\
- [\xee40,\xee7e]->\x7b21,[\xee80,\xee9e]->\x7b60,[\xee9f,\xeefc]->\x7c21,\
- [\xef40,\xef7e]->\x7d21,[\xef80,\xef9e]->\x7d60,[\xef9f,\xeffc]->\x7e21
-}
-
-XCOMM cs2 class
-cs2 {
- side GR
- length 1
-#if WCHAR32
- wc_encoding \x10000000
-#else
- wc_encoding \x00000080
-#endif
- ct_encoding JISX0201.1976-0:GR
-}
-
-XCOMM cs3 class
-XCOMM cs3 {
-XCOMM side GR
-XCOMM length 2
-XCOMM #if WCHAR32
-XCOMM wc_encoding \x20000000
-XCOMM #else
-XCOMM wc_encoding \x00008000
-XCOMM #endif
-XCOMM ct_encoding JISX0212.1990-0:GL; JISX0212.1990-0:GR
-XCOMM }
-
-END XLC_XLOCALE
-
-#else /* __uxp__ */
-
-XCOMM For UXP/DS plat form
-XCOMM
-XCOMM XLC_CHARSET_DEFINE category
-XCOMM
-XLC_CHARSET_DEFINE
-csd0 {
- charset_name u90x03.1991-0
- side GL
- length 2
- gc_number 94
- string_encoding False
- sequence \x1b\x25\x28\x32
- encoding_name fujitsu.U90X03
-}
-
-csd1 {
- charset_name u90x03.1991-0
- side GR
- length 2
- gc_number 94
- string_encoding False
- sequence \x1b\x25\x2f\x32
- encoding_name fujitsu.U90X03
-}
-END XLC_CHARSET_DEFINE
-
-XCOMM
-XCOMM XLC_FONTSET category
-XCOMM
-XLC_FONTSET
-XCOMM fs0 class (7 bit ASCII)
-fs0 {
- charset {
- name JISX0201.1976-0:GL
- }
- font {
- primary JISX0201.1976-0:GL
- substitute ISO8859-1:GL
- vertical_rotate all
- }
-}
-XCOMM fs1 class (Kanji)
-fs1 {
- charset {
- name JISX0208.1983-0:GL
- }
- font {
- primary fujitsu.u90x01.1991-0:GL
- substitute u90x01.1991-0:GL;\
- JISX0208.1983-0:GL; JISX0208.1983-0:GR;\
- JISX0208.1983-1:GL; JISX0208.1983-1:GR;\
- JISX0208.1990-0:GL; JISX0208.1990-0:GR
- vertical_map u90x01.1991-0.2:GL,\
- [\x2122,\x2125]->\x7d21,[\x2131,\x2132]->\x7d25,\
- [\x213c,\x213e]->\x7d27,[\x2141,\x215b]->\x7d2a,\
- [\x2421,\x2421]->\x7d45,[\x2423,\x2423]->\x7d46,\
- [\x2425,\x2425]->\x7d47,[\x2427,\x2427]->\x7d48,\
- [\x2429,\x2429]->\x7d49,[\x2443,\x2443]->\x7d4a,\
- [\x2463,\x2463]->\x7d4b,[\x2465,\x2465]->\x7d4c,\
- [\x2467,\x2467]->\x7d4d,[\x246e,\x246e]->\x7d4e,\
- [\x2521,\x2521]->\x7d4f,[\x2523,\x2523]->\x7d50,\
- [\x2525,\x2525]->\x7d51,[\x2527,\x2527]->\x7d52,\
- [\x2529,\x2529]->\x7d53,[\x2543,\x2543]->\x7d54,\
- [\x2563,\x2563]->\x7d55,[\x2565,\x2565]->\x7d56,\
- [\x2567,\x2567]->\x7d57,[\x256e,\x256e]->\x7d58,\
- [\x2575,\x2576]->\x7d59,[\x2475,\x2476]->\x7d5b
- }
-}
-XCOMM fs2 class (Half Kana)
-fs2 {
- charset {
- name JISX0201.1976-0:GR
- }
- font {
- primary JISX0201.1976-0:GR
- vertical_rotate all
- }
-}
-XCOMM fs3 class (Supplementary Kanji)
-fs3 {
- charset {
- name u90x03.1991-0:GL; u90x03.1991-0:GR
- udc_area \x6521,\x787e
- }
- font {
- primary fujitsu.u90x03.1991-0:GL
- substitute u90x03.1991-0:GL;\
- JISX0208.1983-0:GL; JISX0208.1983-0:GR;\
- JISX0208.1983-1:GL; JISX0208.1983-1:GR;\
- JISX0208.1990-0:GL; JISX0208.1990-0:GR
- }
-}
-END XLC_FONTSET
-
-XCOMM
-XCOMM XLC_XLOCALE category
-XCOMM
-XLC_XLOCALE
-
-encoding_name ja.sjis
-mb_cur_max 2
-state_depend_encoding False
-
-wc_encoding_mask \x30000000
-wc_shift_bits 7
-
-
-XCOMM cs0 class
-cs0 {
- side GL:Default
- length 1
- wc_encoding \x00000000
- ct_encoding JISX0201.1976-0:GL; ISO8859-1:GL
-}
-
-XCOMM cs1 class
-cs1 {
- side none
- length 2
- byte1 \x81,\x9f;\xe0,\xef
- byte2 \x40,\x7e;\x80,\xfc
-
- wc_encoding \x30000000
-
- ct_encoding JISX0208.1983-0:GL; JISX0208.1983-0:GR;\
- JISX0208.1983-1:GL; JISX0208.1983-1:GR
- mb_conversion \
- [\x8140,\x817e]->\x2121,[\x8180,\x819e]->\x2160,[\x819f,\x81fc]->\x2221,\
- [\x8240,\x827e]->\x2321,[\x8280,\x829e]->\x2360,[\x829f,\x82fc]->\x2421,\
- [\x8340,\x837e]->\x2521,[\x8380,\x839e]->\x2560,[\x839f,\x83fc]->\x2621,\
- [\x8440,\x847e]->\x2721,[\x8480,\x849e]->\x2760,[\x849f,\x84fc]->\x2821,\
- [\x8540,\x857e]->\x2921,[\x8580,\x859e]->\x2960,[\x859f,\x85fc]->\x2a21,\
- [\x8640,\x867e]->\x2b21,[\x8680,\x869e]->\x2b60,[\x869f,\x86fc]->\x2c21,\
- [\x8740,\x877e]->\x2d21,[\x8780,\x879e]->\x2d60,[\x879f,\x87fc]->\x2e21,\
- [\x8840,\x887e]->\x2f21,[\x8880,\x889e]->\x2f60,[\x889f,\x88fc]->\x3021,\
- [\x8940,\x897e]->\x3121,[\x8980,\x899e]->\x3160,[\x899f,\x89fc]->\x3221,\
- [\x8a40,\x8a7e]->\x3321,[\x8a80,\x8a9e]->\x3360,[\x8a9f,\x8afc]->\x3421,\
- [\x8b40,\x8b7e]->\x3521,[\x8b80,\x8b9e]->\x3560,[\x8b9f,\x8bfc]->\x3621,\
- [\x8c40,\x8c7e]->\x3721,[\x8c80,\x8c9e]->\x3760,[\x8c9f,\x8cfc]->\x3821,\
- [\x8d40,\x8d7e]->\x3921,[\x8d80,\x8d9e]->\x3960,[\x8d9f,\x8dfc]->\x3a21,\
- [\x8e40,\x8e7e]->\x3b21,[\x8e80,\x8e9e]->\x3b60,[\x8e9f,\x8efc]->\x3c21,\
- [\x8f40,\x8f7e]->\x3d21,[\x8f80,\x8f9e]->\x3d60,[\x8f9f,\x8ffc]->\x3e21,\
- [\x9040,\x907e]->\x3f21,[\x9080,\x909e]->\x3f60,[\x909f,\x90fc]->\x4021,\
- [\x9140,\x917e]->\x4121,[\x9180,\x919e]->\x4160,[\x919f,\x91fc]->\x4221,\
- [\x9240,\x927e]->\x4321,[\x9280,\x929e]->\x4360,[\x929f,\x92fc]->\x4421,\
- [\x9340,\x937e]->\x4521,[\x9380,\x939e]->\x4560,[\x939f,\x93fc]->\x4621,\
- [\x9440,\x947e]->\x4721,[\x9480,\x949e]->\x4760,[\x949f,\x94fc]->\x4821,\
- [\x9540,\x957e]->\x4921,[\x9580,\x959e]->\x4960,[\x959f,\x95fc]->\x4a21,\
- [\x9640,\x967e]->\x4b21,[\x9680,\x969e]->\x4b60,[\x969f,\x96fc]->\x4c21,\
- [\x9740,\x977e]->\x4d21,[\x9780,\x979e]->\x4d60,[\x979f,\x97fc]->\x4e21,\
- [\x9840,\x987e]->\x4f21,[\x9880,\x989e]->\x4f60,[\x989f,\x98fc]->\x5021,\
- [\x9940,\x997e]->\x5121,[\x9980,\x999e]->\x5160,[\x999f,\x99fc]->\x5221,\
- [\x9a40,\x9a7e]->\x5321,[\x9a80,\x9a9e]->\x5360,[\x9a9f,\x9afc]->\x5421,\
- [\x9b40,\x9b7e]->\x5521,[\x9b80,\x9b9e]->\x5560,[\x9b9f,\x9bfc]->\x5621,\
- [\x9c40,\x9c7e]->\x5721,[\x9c80,\x9c9e]->\x5760,[\x9c9f,\x9cfc]->\x5821,\
- [\x9d40,\x9d7e]->\x5921,[\x9d80,\x9d9e]->\x5960,[\x9d9f,\x9dfc]->\x5a21,\
- [\x9e40,\x9e7e]->\x5b21,[\x9e80,\x9e9e]->\x5b60,[\x9e9f,\x9efc]->\x5c21,\
- [\x9f40,\x9f7e]->\x5d21,[\x9f80,\x9f9e]->\x5d60,[\x9f9f,\x9ffc]->\x5e21,\
- [\xe040,\xe07e]->\x5f21,[\xe080,\xe09e]->\x5f60,[\xe09f,\xe0fc]->\x6021,\
- [\xe140,\xe17e]->\x6121,[\xe180,\xe19e]->\x6160,[\xe19f,\xe1fc]->\x6221,\
- [\xe240,\xe27e]->\x6321,[\xe280,\xe29e]->\x6360,[\xe29f,\xe2fc]->\x6421,\
- [\xe340,\xe37e]->\x6521,[\xe380,\xe39e]->\x6560,[\xe39f,\xe3fc]->\x6621,\
- [\xe440,\xe47e]->\x6721,[\xe480,\xe49e]->\x6760,[\xe49f,\xe4fc]->\x6821,\
- [\xe540,\xe57e]->\x6921,[\xe580,\xe59e]->\x6960,[\xe59f,\xe5fc]->\x6a21,\
- [\xe640,\xe67e]->\x6b21,[\xe680,\xe69e]->\x6b60,[\xe69f,\xe6fc]->\x6c21,\
- [\xe740,\xe77e]->\x6d21,[\xe780,\xe79e]->\x6d60,[\xe79f,\xe7fc]->\x6e21,\
- [\xe840,\xe87e]->\x6f21,[\xe880,\xe89e]->\x6f60,[\xe89f,\xe8fc]->\x7021,\
- [\xe940,\xe97e]->\x7121,[\xe980,\xe99e]->\x7160,[\xe99f,\xe9fc]->\x7221,\
- [\xea40,\xea7e]->\x7321,[\xea80,\xea9e]->\x7360,[\xea9f,\xeafc]->\x7421,\
- [\xeb40,\xeb7e]->\x7521,[\xeb80,\xeb9e]->\x7560,[\xeb9f,\xebfc]->\x7621,\
- [\xec40,\xec7e]->\x7721,[\xec80,\xec9e]->\x7760,[\xec9f,\xecfc]->\x7821,\
- [\xed40,\xed7e]->\x7921,[\xed80,\xed9e]->\x7960,[\xed9f,\xedfc]->\x7a21,\
- [\xee40,\xee7e]->\x7b21,[\xee80,\xee9e]->\x7b60,[\xee9f,\xeefc]->\x7c21,\
- [\xef40,\xef7e]->\x7d21,[\xef80,\xef9e]->\x7d60,[\xef9f,\xeffc]->\x7e21
-}
-
-XCOMM cs2 class
-cs2 {
- side GR
- length 1
- wc_encoding \x10000000
- ct_encoding JISX0201.1976-0:GR
-}
-
-XCOMM cs3 class
-cs3 {
- side none
- length 2
- byte1 \xf0,\xfc
- byte2 \x40,\x7e;\x80,\xfc
- wc_encoding \x20000000
- ct_encoding u90x03.1991-0:GL; u90x03.1991-0:GR
- mb_conversion \
- [\xf040,\xf07e]->\x6521,[\xf080,\xf09e]->\x6560,[\xf09f,\xf0fc]->\x6621,\
- [\xf140,\xf17e]->\x6721,[\xf180,\xf19e]->\x6760,[\xf19f,\xf1fc]->\x6821,\
- [\xf240,\xf27e]->\x6921,[\xf280,\xf29e]->\x6960,[\xf29f,\xf2fc]->\x6a21,\
- [\xf340,\xf37e]->\x6b21,[\xf380,\xf39e]->\x6b60,[\xf39f,\xf3fc]->\x6c21,\
- [\xf440,\xf47e]->\x6d21,[\xf480,\xf49e]->\x6d60,[\xf49f,\xf4fc]->\x6e21,\
- [\xf540,\xf57e]->\x6f21,[\xf580,\xf59e]->\x6f60,[\xf59f,\xf5fc]->\x7021,\
- [\xf640,\xf67e]->\x7121,[\xf680,\xf69e]->\x7160,[\xf69f,\xf6fc]->\x7221,\
- [\xf740,\xf77e]->\x7321,[\xf780,\xf79e]->\x7360,[\xf79f,\xf7fc]->\x7421,\
- [\xf840,\xf87e]->\x7521,[\xf880,\xf89e]->\x7560,[\xf89f,\xf8fc]->\x7621,\
- [\xf940,\xf97e]->\x7721,[\xf980,\xf99e]->\x7760,[\xf99f,\xf9fc]->\x7821,\
- [\xfa40,\xfa7e]->\x7921,[\xfa80,\xfa9e]->\x7960,[\xfa9f,\xfafc]->\x7a21,\
- [\xfb40,\xfb7e]->\x7b21,[\xfb80,\xfb9e]->\x7b60,[\xfb9f,\xfbfc]->\x7c21,\
- [\xfc40,\xfc7e]->\x7d21,[\xfc80,\xfc9e]->\x7d60,[\xfc9f,\xfcfc]->\x7e21
-}
-
-END XLC_XLOCALE
-
-#endif /* __uxp__ */
+XCOMM
+XCOMM XLocale Database Sample for ja_JP.sjis
+XCOMM
+
+#ifndef __uxp__
+
+XCOMM
+XCOMM XLC_FONTSET category
+XCOMM
+XLC_FONTSET
+XCOMM fs0 class (7 bit ASCII)
+fs0 {
+ charset {
+ name ISO8859-1:GL
+ }
+ font {
+ primary ISO8859-1:GL
+ substitute JISX0201.1976-0:GL
+ vertical_rotate all
+ }
+}
+XCOMM fs1 class (Kanji)
+fs1 {
+ charset {
+ name JISX0208.1983-0:GL
+ }
+ font {
+ primary JISX0208.1983-0:GL
+ substitute JISX0208.1990-0:GL
+ }
+}
+XCOMM fs2 class (Half Kana)
+fs2 {
+ charset {
+ name JISX0201.1976-0:GR
+ }
+ font {
+ primary JISX0201.1976-0:GR
+ substitute JISX0201.1976-0:GR
+ vertical_rotate all
+ }
+}
+XCOMM fs3 class (Supplementary Kanji)
+XCOMM fs3 {
+XCOMM charset {
+XCOMM name JISX0212.1990-0:GL
+XCOMM }
+XCOMM font {
+XCOMM primary JISX0212.1990-0:GL
+XCOMM }
+XCOMM }
+END XLC_FONTSET
+
+XCOMM
+XCOMM XLC_XLOCALE category
+XCOMM
+XLC_XLOCALE
+
+encoding_name ja.sjis
+mb_cur_max 2
+state_depend_encoding False
+#if WCHAR32
+wc_encoding_mask \x30000000
+wc_shift_bits 7
+#else
+wc_encoding_mask \x00008080
+wc_shift_bits 8
+#endif
+
+#ifndef X_LOCALE
+use_stdc_env True
+force_convert_to_mb True
+#endif
+
+XCOMM cs0 class
+cs0 {
+ side GL:Default
+ length 1
+ wc_encoding \x00000000
+ ct_encoding ISO8859-1:GL; JISX0201.1976-0:GL
+}
+
+XCOMM cs1 class
+cs1 {
+ side none
+ length 2
+ byte1 \x81,\x9f;\xe0,\xef
+ byte2 \x40,\x7e;\x80,\xfc
+#if WCHAR32
+ wc_encoding \x30000000
+#else
+ wc_encoding \x00008080
+#endif
+ ct_encoding JISX0208.1983-0:GL; JISX0208.1983-0:GR;\
+ JISX0208.1983-1:GL; JISX0208.1983-1:GR
+ mb_conversion \
+ [\x8140,\x817e]->\x2121,[\x8180,\x819e]->\x2160,[\x819f,\x81fc]->\x2221,\
+ [\x8240,\x827e]->\x2321,[\x8280,\x829e]->\x2360,[\x829f,\x82fc]->\x2421,\
+ [\x8340,\x837e]->\x2521,[\x8380,\x839e]->\x2560,[\x839f,\x83fc]->\x2621,\
+ [\x8440,\x847e]->\x2721,[\x8480,\x849e]->\x2760,[\x849f,\x84fc]->\x2821,\
+ [\x8540,\x857e]->\x2921,[\x8580,\x859e]->\x2960,[\x859f,\x85fc]->\x2a21,\
+ [\x8640,\x867e]->\x2b21,[\x8680,\x869e]->\x2b60,[\x869f,\x86fc]->\x2c21,\
+ [\x8740,\x877e]->\x2d21,[\x8780,\x879e]->\x2d60,[\x879f,\x87fc]->\x2e21,\
+ [\x8840,\x887e]->\x2f21,[\x8880,\x889e]->\x2f60,[\x889f,\x88fc]->\x3021,\
+ [\x8940,\x897e]->\x3121,[\x8980,\x899e]->\x3160,[\x899f,\x89fc]->\x3221,\
+ [\x8a40,\x8a7e]->\x3321,[\x8a80,\x8a9e]->\x3360,[\x8a9f,\x8afc]->\x3421,\
+ [\x8b40,\x8b7e]->\x3521,[\x8b80,\x8b9e]->\x3560,[\x8b9f,\x8bfc]->\x3621,\
+ [\x8c40,\x8c7e]->\x3721,[\x8c80,\x8c9e]->\x3760,[\x8c9f,\x8cfc]->\x3821,\
+ [\x8d40,\x8d7e]->\x3921,[\x8d80,\x8d9e]->\x3960,[\x8d9f,\x8dfc]->\x3a21,\
+ [\x8e40,\x8e7e]->\x3b21,[\x8e80,\x8e9e]->\x3b60,[\x8e9f,\x8efc]->\x3c21,\
+ [\x8f40,\x8f7e]->\x3d21,[\x8f80,\x8f9e]->\x3d60,[\x8f9f,\x8ffc]->\x3e21,\
+ [\x9040,\x907e]->\x3f21,[\x9080,\x909e]->\x3f60,[\x909f,\x90fc]->\x4021,\
+ [\x9140,\x917e]->\x4121,[\x9180,\x919e]->\x4160,[\x919f,\x91fc]->\x4221,\
+ [\x9240,\x927e]->\x4321,[\x9280,\x929e]->\x4360,[\x929f,\x92fc]->\x4421,\
+ [\x9340,\x937e]->\x4521,[\x9380,\x939e]->\x4560,[\x939f,\x93fc]->\x4621,\
+ [\x9440,\x947e]->\x4721,[\x9480,\x949e]->\x4760,[\x949f,\x94fc]->\x4821,\
+ [\x9540,\x957e]->\x4921,[\x9580,\x959e]->\x4960,[\x959f,\x95fc]->\x4a21,\
+ [\x9640,\x967e]->\x4b21,[\x9680,\x969e]->\x4b60,[\x969f,\x96fc]->\x4c21,\
+ [\x9740,\x977e]->\x4d21,[\x9780,\x979e]->\x4d60,[\x979f,\x97fc]->\x4e21,\
+ [\x9840,\x987e]->\x4f21,[\x9880,\x989e]->\x4f60,[\x989f,\x98fc]->\x5021,\
+ [\x9940,\x997e]->\x5121,[\x9980,\x999e]->\x5160,[\x999f,\x99fc]->\x5221,\
+ [\x9a40,\x9a7e]->\x5321,[\x9a80,\x9a9e]->\x5360,[\x9a9f,\x9afc]->\x5421,\
+ [\x9b40,\x9b7e]->\x5521,[\x9b80,\x9b9e]->\x5560,[\x9b9f,\x9bfc]->\x5621,\
+ [\x9c40,\x9c7e]->\x5721,[\x9c80,\x9c9e]->\x5760,[\x9c9f,\x9cfc]->\x5821,\
+ [\x9d40,\x9d7e]->\x5921,[\x9d80,\x9d9e]->\x5960,[\x9d9f,\x9dfc]->\x5a21,\
+ [\x9e40,\x9e7e]->\x5b21,[\x9e80,\x9e9e]->\x5b60,[\x9e9f,\x9efc]->\x5c21,\
+ [\x9f40,\x9f7e]->\x5d21,[\x9f80,\x9f9e]->\x5d60,[\x9f9f,\x9ffc]->\x5e21,\
+ [\xe040,\xe07e]->\x5f21,[\xe080,\xe09e]->\x5f60,[\xe09f,\xe0fc]->\x6021,\
+ [\xe140,\xe17e]->\x6121,[\xe180,\xe19e]->\x6160,[\xe19f,\xe1fc]->\x6221,\
+ [\xe240,\xe27e]->\x6321,[\xe280,\xe29e]->\x6360,[\xe29f,\xe2fc]->\x6421,\
+ [\xe340,\xe37e]->\x6521,[\xe380,\xe39e]->\x6560,[\xe39f,\xe3fc]->\x6621,\
+ [\xe440,\xe47e]->\x6721,[\xe480,\xe49e]->\x6760,[\xe49f,\xe4fc]->\x6821,\
+ [\xe540,\xe57e]->\x6921,[\xe580,\xe59e]->\x6960,[\xe59f,\xe5fc]->\x6a21,\
+ [\xe640,\xe67e]->\x6b21,[\xe680,\xe69e]->\x6b60,[\xe69f,\xe6fc]->\x6c21,\
+ [\xe740,\xe77e]->\x6d21,[\xe780,\xe79e]->\x6d60,[\xe79f,\xe7fc]->\x6e21,\
+ [\xe840,\xe87e]->\x6f21,[\xe880,\xe89e]->\x6f60,[\xe89f,\xe8fc]->\x7021,\
+ [\xe940,\xe97e]->\x7121,[\xe980,\xe99e]->\x7160,[\xe99f,\xe9fc]->\x7221,\
+ [\xea40,\xea7e]->\x7321,[\xea80,\xea9e]->\x7360,[\xea9f,\xeafc]->\x7421,\
+ [\xeb40,\xeb7e]->\x7521,[\xeb80,\xeb9e]->\x7560,[\xeb9f,\xebfc]->\x7621,\
+ [\xec40,\xec7e]->\x7721,[\xec80,\xec9e]->\x7760,[\xec9f,\xecfc]->\x7821,\
+ [\xed40,\xed7e]->\x7921,[\xed80,\xed9e]->\x7960,[\xed9f,\xedfc]->\x7a21,\
+ [\xee40,\xee7e]->\x7b21,[\xee80,\xee9e]->\x7b60,[\xee9f,\xeefc]->\x7c21,\
+ [\xef40,\xef7e]->\x7d21,[\xef80,\xef9e]->\x7d60,[\xef9f,\xeffc]->\x7e21
+}
+
+XCOMM cs2 class
+cs2 {
+ side GR
+ length 1
+#if WCHAR32
+ wc_encoding \x10000000
+#else
+ wc_encoding \x00000080
+#endif
+ ct_encoding JISX0201.1976-0:GR
+}
+
+XCOMM cs3 class
+XCOMM cs3 {
+XCOMM side GR
+XCOMM length 2
+XCOMM #if WCHAR32
+XCOMM wc_encoding \x20000000
+XCOMM #else
+XCOMM wc_encoding \x00008000
+XCOMM #endif
+XCOMM ct_encoding JISX0212.1990-0:GL; JISX0212.1990-0:GR
+XCOMM }
+
+END XLC_XLOCALE
+
+#else /* __uxp__ */
+
+XCOMM For UXP/DS plat form
+XCOMM
+XCOMM XLC_CHARSET_DEFINE category
+XCOMM
+XLC_CHARSET_DEFINE
+csd0 {
+ charset_name u90x03.1991-0
+ side GL
+ length 2
+ gc_number 94
+ string_encoding False
+ sequence \x1b\x25\x28\x32
+ encoding_name fujitsu.U90X03
+}
+
+csd1 {
+ charset_name u90x03.1991-0
+ side GR
+ length 2
+ gc_number 94
+ string_encoding False
+ sequence \x1b\x25\x2f\x32
+ encoding_name fujitsu.U90X03
+}
+END XLC_CHARSET_DEFINE
+
+XCOMM
+XCOMM XLC_FONTSET category
+XCOMM
+XLC_FONTSET
+XCOMM fs0 class (7 bit ASCII)
+fs0 {
+ charset {
+ name JISX0201.1976-0:GL
+ }
+ font {
+ primary JISX0201.1976-0:GL
+ substitute ISO8859-1:GL
+ vertical_rotate all
+ }
+}
+XCOMM fs1 class (Kanji)
+fs1 {
+ charset {
+ name JISX0208.1983-0:GL
+ }
+ font {
+ primary fujitsu.u90x01.1991-0:GL
+ substitute u90x01.1991-0:GL;\
+ JISX0208.1983-0:GL; JISX0208.1983-0:GR;\
+ JISX0208.1983-1:GL; JISX0208.1983-1:GR;\
+ JISX0208.1990-0:GL; JISX0208.1990-0:GR
+ vertical_map u90x01.1991-0.2:GL,\
+ [\x2122,\x2125]->\x7d21,[\x2131,\x2132]->\x7d25,\
+ [\x213c,\x213e]->\x7d27,[\x2141,\x215b]->\x7d2a,\
+ [\x2421,\x2421]->\x7d45,[\x2423,\x2423]->\x7d46,\
+ [\x2425,\x2425]->\x7d47,[\x2427,\x2427]->\x7d48,\
+ [\x2429,\x2429]->\x7d49,[\x2443,\x2443]->\x7d4a,\
+ [\x2463,\x2463]->\x7d4b,[\x2465,\x2465]->\x7d4c,\
+ [\x2467,\x2467]->\x7d4d,[\x246e,\x246e]->\x7d4e,\
+ [\x2521,\x2521]->\x7d4f,[\x2523,\x2523]->\x7d50,\
+ [\x2525,\x2525]->\x7d51,[\x2527,\x2527]->\x7d52,\
+ [\x2529,\x2529]->\x7d53,[\x2543,\x2543]->\x7d54,\
+ [\x2563,\x2563]->\x7d55,[\x2565,\x2565]->\x7d56,\
+ [\x2567,\x2567]->\x7d57,[\x256e,\x256e]->\x7d58,\
+ [\x2575,\x2576]->\x7d59,[\x2475,\x2476]->\x7d5b
+ }
+}
+XCOMM fs2 class (Half Kana)
+fs2 {
+ charset {
+ name JISX0201.1976-0:GR
+ }
+ font {
+ primary JISX0201.1976-0:GR
+ vertical_rotate all
+ }
+}
+XCOMM fs3 class (Supplementary Kanji)
+fs3 {
+ charset {
+ name u90x03.1991-0:GL; u90x03.1991-0:GR
+ udc_area \x6521,\x787e
+ }
+ font {
+ primary fujitsu.u90x03.1991-0:GL
+ substitute u90x03.1991-0:GL;\
+ JISX0208.1983-0:GL; JISX0208.1983-0:GR;\
+ JISX0208.1983-1:GL; JISX0208.1983-1:GR;\
+ JISX0208.1990-0:GL; JISX0208.1990-0:GR
+ }
+}
+END XLC_FONTSET
+
+XCOMM
+XCOMM XLC_XLOCALE category
+XCOMM
+XLC_XLOCALE
+
+encoding_name ja.sjis
+mb_cur_max 2
+state_depend_encoding False
+
+wc_encoding_mask \x30000000
+wc_shift_bits 7
+
+
+XCOMM cs0 class
+cs0 {
+ side GL:Default
+ length 1
+ wc_encoding \x00000000
+ ct_encoding JISX0201.1976-0:GL; ISO8859-1:GL
+}
+
+XCOMM cs1 class
+cs1 {
+ side none
+ length 2
+ byte1 \x81,\x9f;\xe0,\xef
+ byte2 \x40,\x7e;\x80,\xfc
+
+ wc_encoding \x30000000
+
+ ct_encoding JISX0208.1983-0:GL; JISX0208.1983-0:GR;\
+ JISX0208.1983-1:GL; JISX0208.1983-1:GR
+ mb_conversion \
+ [\x8140,\x817e]->\x2121,[\x8180,\x819e]->\x2160,[\x819f,\x81fc]->\x2221,\
+ [\x8240,\x827e]->\x2321,[\x8280,\x829e]->\x2360,[\x829f,\x82fc]->\x2421,\
+ [\x8340,\x837e]->\x2521,[\x8380,\x839e]->\x2560,[\x839f,\x83fc]->\x2621,\
+ [\x8440,\x847e]->\x2721,[\x8480,\x849e]->\x2760,[\x849f,\x84fc]->\x2821,\
+ [\x8540,\x857e]->\x2921,[\x8580,\x859e]->\x2960,[\x859f,\x85fc]->\x2a21,\
+ [\x8640,\x867e]->\x2b21,[\x8680,\x869e]->\x2b60,[\x869f,\x86fc]->\x2c21,\
+ [\x8740,\x877e]->\x2d21,[\x8780,\x879e]->\x2d60,[\x879f,\x87fc]->\x2e21,\
+ [\x8840,\x887e]->\x2f21,[\x8880,\x889e]->\x2f60,[\x889f,\x88fc]->\x3021,\
+ [\x8940,\x897e]->\x3121,[\x8980,\x899e]->\x3160,[\x899f,\x89fc]->\x3221,\
+ [\x8a40,\x8a7e]->\x3321,[\x8a80,\x8a9e]->\x3360,[\x8a9f,\x8afc]->\x3421,\
+ [\x8b40,\x8b7e]->\x3521,[\x8b80,\x8b9e]->\x3560,[\x8b9f,\x8bfc]->\x3621,\
+ [\x8c40,\x8c7e]->\x3721,[\x8c80,\x8c9e]->\x3760,[\x8c9f,\x8cfc]->\x3821,\
+ [\x8d40,\x8d7e]->\x3921,[\x8d80,\x8d9e]->\x3960,[\x8d9f,\x8dfc]->\x3a21,\
+ [\x8e40,\x8e7e]->\x3b21,[\x8e80,\x8e9e]->\x3b60,[\x8e9f,\x8efc]->\x3c21,\
+ [\x8f40,\x8f7e]->\x3d21,[\x8f80,\x8f9e]->\x3d60,[\x8f9f,\x8ffc]->\x3e21,\
+ [\x9040,\x907e]->\x3f21,[\x9080,\x909e]->\x3f60,[\x909f,\x90fc]->\x4021,\
+ [\x9140,\x917e]->\x4121,[\x9180,\x919e]->\x4160,[\x919f,\x91fc]->\x4221,\
+ [\x9240,\x927e]->\x4321,[\x9280,\x929e]->\x4360,[\x929f,\x92fc]->\x4421,\
+ [\x9340,\x937e]->\x4521,[\x9380,\x939e]->\x4560,[\x939f,\x93fc]->\x4621,\
+ [\x9440,\x947e]->\x4721,[\x9480,\x949e]->\x4760,[\x949f,\x94fc]->\x4821,\
+ [\x9540,\x957e]->\x4921,[\x9580,\x959e]->\x4960,[\x959f,\x95fc]->\x4a21,\
+ [\x9640,\x967e]->\x4b21,[\x9680,\x969e]->\x4b60,[\x969f,\x96fc]->\x4c21,\
+ [\x9740,\x977e]->\x4d21,[\x9780,\x979e]->\x4d60,[\x979f,\x97fc]->\x4e21,\
+ [\x9840,\x987e]->\x4f21,[\x9880,\x989e]->\x4f60,[\x989f,\x98fc]->\x5021,\
+ [\x9940,\x997e]->\x5121,[\x9980,\x999e]->\x5160,[\x999f,\x99fc]->\x5221,\
+ [\x9a40,\x9a7e]->\x5321,[\x9a80,\x9a9e]->\x5360,[\x9a9f,\x9afc]->\x5421,\
+ [\x9b40,\x9b7e]->\x5521,[\x9b80,\x9b9e]->\x5560,[\x9b9f,\x9bfc]->\x5621,\
+ [\x9c40,\x9c7e]->\x5721,[\x9c80,\x9c9e]->\x5760,[\x9c9f,\x9cfc]->\x5821,\
+ [\x9d40,\x9d7e]->\x5921,[\x9d80,\x9d9e]->\x5960,[\x9d9f,\x9dfc]->\x5a21,\
+ [\x9e40,\x9e7e]->\x5b21,[\x9e80,\x9e9e]->\x5b60,[\x9e9f,\x9efc]->\x5c21,\
+ [\x9f40,\x9f7e]->\x5d21,[\x9f80,\x9f9e]->\x5d60,[\x9f9f,\x9ffc]->\x5e21,\
+ [\xe040,\xe07e]->\x5f21,[\xe080,\xe09e]->\x5f60,[\xe09f,\xe0fc]->\x6021,\
+ [\xe140,\xe17e]->\x6121,[\xe180,\xe19e]->\x6160,[\xe19f,\xe1fc]->\x6221,\
+ [\xe240,\xe27e]->\x6321,[\xe280,\xe29e]->\x6360,[\xe29f,\xe2fc]->\x6421,\
+ [\xe340,\xe37e]->\x6521,[\xe380,\xe39e]->\x6560,[\xe39f,\xe3fc]->\x6621,\
+ [\xe440,\xe47e]->\x6721,[\xe480,\xe49e]->\x6760,[\xe49f,\xe4fc]->\x6821,\
+ [\xe540,\xe57e]->\x6921,[\xe580,\xe59e]->\x6960,[\xe59f,\xe5fc]->\x6a21,\
+ [\xe640,\xe67e]->\x6b21,[\xe680,\xe69e]->\x6b60,[\xe69f,\xe6fc]->\x6c21,\
+ [\xe740,\xe77e]->\x6d21,[\xe780,\xe79e]->\x6d60,[\xe79f,\xe7fc]->\x6e21,\
+ [\xe840,\xe87e]->\x6f21,[\xe880,\xe89e]->\x6f60,[\xe89f,\xe8fc]->\x7021,\
+ [\xe940,\xe97e]->\x7121,[\xe980,\xe99e]->\x7160,[\xe99f,\xe9fc]->\x7221,\
+ [\xea40,\xea7e]->\x7321,[\xea80,\xea9e]->\x7360,[\xea9f,\xeafc]->\x7421,\
+ [\xeb40,\xeb7e]->\x7521,[\xeb80,\xeb9e]->\x7560,[\xeb9f,\xebfc]->\x7621,\
+ [\xec40,\xec7e]->\x7721,[\xec80,\xec9e]->\x7760,[\xec9f,\xecfc]->\x7821,\
+ [\xed40,\xed7e]->\x7921,[\xed80,\xed9e]->\x7960,[\xed9f,\xedfc]->\x7a21,\
+ [\xee40,\xee7e]->\x7b21,[\xee80,\xee9e]->\x7b60,[\xee9f,\xeefc]->\x7c21,\
+ [\xef40,\xef7e]->\x7d21,[\xef80,\xef9e]->\x7d60,[\xef9f,\xeffc]->\x7e21
+}
+
+XCOMM cs2 class
+cs2 {
+ side GR
+ length 1
+ wc_encoding \x10000000
+ ct_encoding JISX0201.1976-0:GR
+}
+
+XCOMM cs3 class
+cs3 {
+ side none
+ length 2
+ byte1 \xf0,\xfc
+ byte2 \x40,\x7e;\x80,\xfc
+ wc_encoding \x20000000
+ ct_encoding u90x03.1991-0:GL; u90x03.1991-0:GR
+ mb_conversion \
+ [\xf040,\xf07e]->\x6521,[\xf080,\xf09e]->\x6560,[\xf09f,\xf0fc]->\x6621,\
+ [\xf140,\xf17e]->\x6721,[\xf180,\xf19e]->\x6760,[\xf19f,\xf1fc]->\x6821,\
+ [\xf240,\xf27e]->\x6921,[\xf280,\xf29e]->\x6960,[\xf29f,\xf2fc]->\x6a21,\
+ [\xf340,\xf37e]->\x6b21,[\xf380,\xf39e]->\x6b60,[\xf39f,\xf3fc]->\x6c21,\
+ [\xf440,\xf47e]->\x6d21,[\xf480,\xf49e]->\x6d60,[\xf49f,\xf4fc]->\x6e21,\
+ [\xf540,\xf57e]->\x6f21,[\xf580,\xf59e]->\x6f60,[\xf59f,\xf5fc]->\x7021,\
+ [\xf640,\xf67e]->\x7121,[\xf680,\xf69e]->\x7160,[\xf69f,\xf6fc]->\x7221,\
+ [\xf740,\xf77e]->\x7321,[\xf780,\xf79e]->\x7360,[\xf79f,\xf7fc]->\x7421,\
+ [\xf840,\xf87e]->\x7521,[\xf880,\xf89e]->\x7560,[\xf89f,\xf8fc]->\x7621,\
+ [\xf940,\xf97e]->\x7721,[\xf980,\xf99e]->\x7760,[\xf99f,\xf9fc]->\x7821,\
+ [\xfa40,\xfa7e]->\x7921,[\xfa80,\xfa9e]->\x7960,[\xfa9f,\xfafc]->\x7a21,\
+ [\xfb40,\xfb7e]->\x7b21,[\xfb80,\xfb9e]->\x7b60,[\xfb9f,\xfbfc]->\x7c21,\
+ [\xfc40,\xfc7e]->\x7d21,[\xfc80,\xfc9e]->\x7d60,[\xfc9f,\xfcfc]->\x7e21
+}
+
+END XLC_XLOCALE
+
+#endif /* __uxp__ */
diff --git a/libX11/nls/ja.U90/XI18N_OBJS b/libX11/nls/ja.U90/XI18N_OBJS
index cedf8bc53..8c766a958 100644
--- a/libX11/nls/ja.U90/XI18N_OBJS
+++ b/libX11/nls/ja.U90/XI18N_OBJS
@@ -1,7 +1,7 @@
-# CATEGORY(XLC|XIM|OM) SHARED_LIBRARY_NAME FUNCTION_NAME
-#
-# XI18N objects table for ja.U90 locale
-#
-XLC common/xlibi18n _XlcGenericLoader # XLC_open
-XIM common/ximcp _XimOpenIM _XimRegisterIMInstantiateCallback _XimUnRegisterIMInstantiateCallback # XIM_open XIM_register XIM_unregister
-XOM common/xomGeneric _XomGenericOpenOM # XOM_open
+# CATEGORY(XLC|XIM|OM) SHARED_LIBRARY_NAME FUNCTION_NAME
+#
+# XI18N objects table for ja.U90 locale
+#
+XLC common/xlibi18n _XlcGenericLoader # XLC_open
+XIM common/ximcp _XimOpenIM _XimRegisterIMInstantiateCallback _XimUnRegisterIMInstantiateCallback # XIM_open XIM_register XIM_unregister
+XOM common/xomGeneric _XomGenericOpenOM # XOM_open
diff --git a/libX11/nls/ja.U90/XLC_LOCALE.pre b/libX11/nls/ja.U90/XLC_LOCALE.pre
index bad4687e6..5d8fd3c0a 100644
--- a/libX11/nls/ja.U90/XLC_LOCALE.pre
+++ b/libX11/nls/ja.U90/XLC_LOCALE.pre
@@ -1,151 +1,151 @@
-XCOMM Copyright 1995 by FUJITSU LIMITED
-XCOMM This is source code modified by FUJITSU LIMITED under the Joint
-XCOMM Development Agreement for the CDEnext PST.
-XCOMM This is unpublished proprietary source code of FUJITSU LIMITED
-XCOMM
-XCOMM NLS-DB for ja_JP.U90
-
-XCOMM
-XCOMM XLC_CHARSET_DEFINE category
-XCOMM
-XLC_CHARSET_DEFINE
-csd0 {
- charset_name u90x03.1991-0
- side GL
- length 2
- gc_number 94
- string_encoding False
- sequence \x1b\x25\x28\x32
- encoding_name fujitsu.U90X03
-}
-
-csd1 {
- charset_name u90x03.1991-0
- side GR
- length 2
- gc_number 94
- string_encoding False
- sequence \x1b\x25\x2f\x32
- encoding_name fujitsu.U90X03
-}
-END XLC_CHARSET_DEFINE
-
-XCOMM
-XCOMM XLC_FONTSET category
-XCOMM
-XLC_FONTSET
-XCOMM fs0 class (7 bit ASCII)
-fs0 {
- charset {
- name JISX0201.1976-0:GL
- }
- font {
- primary JISX0201.1976-0:GL
- substitute ISO8859-1:GL
- vertical_rotate all
- }
-}
-XCOMM fs1 class (Kanji)
-fs1 {
- charset {
- name JISX0208.1983-0:GL
- }
- font {
- primary fujitsu.u90x01.1991-0:GL
-XCOMM primary JISX0208.1983-0:GL
- substitute JISX0208.1983-0:GL; JISX0208.1983-0:GR;\
- JISX0208.1983-1:GL; JISX0208.1983-1:GR;\
- JISX0208.1990-0:GL; JISX0208.1990-0:GR;\
- u90x01.1991-0:GL
- vertical_map u90x01.1991-0.2:GL,\
- [\x2122,\x2125]->\x7d21,[\x2131,\x2132]->\x7d25,\
- [\x213c,\x213e]->\x7d27,[\x2141,\x215b]->\x7d2a,\
- [\x2421,\x2421]->\x7d45,[\x2423,\x2423]->\x7d46,\
- [\x2425,\x2425]->\x7d47,[\x2427,\x2427]->\x7d48,\
- [\x2429,\x2429]->\x7d49,[\x2443,\x2443]->\x7d4a,\
- [\x2463,\x2463]->\x7d4b,[\x2465,\x2465]->\x7d4c,\
- [\x2467,\x2467]->\x7d4d,[\x246e,\x246e]->\x7d4e,\
- [\x2521,\x2521]->\x7d4f,[\x2523,\x2523]->\x7d50,\
- [\x2525,\x2525]->\x7d51,[\x2527,\x2527]->\x7d52,\
- [\x2529,\x2529]->\x7d53,[\x2543,\x2543]->\x7d54,\
- [\x2563,\x2563]->\x7d55,[\x2565,\x2565]->\x7d56,\
- [\x2567,\x2567]->\x7d57,[\x256e,\x256e]->\x7d58,\
- [\x2575,\x2576]->\x7d59,[\x2475,\x2476]->\x7d5b
- }
-}
-XCOMM fs2 class (Half Kana)
-fs2 {
- charset {
- name JISX0201.1976-0:GR
- }
- font {
- primary JISX0201.1976-0:GR
- vertical_rotate all
- }
-}
-XCOMM fs3 class (JEF Kanji + User Defined Character)
-fs3 {
- charset {
- name u90x03.1991-0:GR; u90x03.1991-0:GL
- udc_area \x6521,\x787e
- }
- font {
- primary fujitsu.u90x03.1991-0:GL
- substitute u90x03.1991-0:GL;\
- JISX0208.1983-0:GL; JISX0208.1983-0:GR;\
- JISX0208.1983-1:GL; JISX0208.1983-1:GR;\
- JISX0208.1990-0:GL; JISX0208.1990-0:GR
- }
-}
-END XLC_FONTSET
-
-XCOMM
-XCOMM XLC_XLOCALE category
-XCOMM
-XLC_XLOCALE
-
-XCOMM encoding_name ja.euc
-encoding_name ja_JP.U90
-mb_cur_max 3
-state_depend_encoding False
-
-wc_encoding_mask \x30000000
-wc_shift_bits 7
-
-
-XCOMM cs0 class
-cs0 {
- side GL:Default
- length 1
- wc_encoding \x00000000
- ct_encoding JISX0201.1976-0:GL; ISO8859-1:GL
-}
-
-XCOMM cs1 class
-cs1 {
- side GR:Default
- length 2
- wc_encoding \x30000000
- ct_encoding JISX0208.1983-0:GL; JISX0208.1983-0:GR;\
- JISX0208.1983-1:GL; JISX0208.1983-1:GR
-}
-
-XCOMM cs2 class
-cs2 {
- side GR
- length 1
- mb_encoding <SS> \x8e
- wc_encoding \x10000000
- ct_encoding JISX0201.1976-0:GR
-}
-
-XCOMM cs3 class
-cs3 {
- side GR
- length 2
- mb_encoding <SS> \x8f
- wc_encoding \x20000000
- ct_encoding u90x03.1991-0:GR; u90x03.1991-0:GL
-}
-
-END XLC_XLOCALE
+XCOMM Copyright 1995 by FUJITSU LIMITED
+XCOMM This is source code modified by FUJITSU LIMITED under the Joint
+XCOMM Development Agreement for the CDEnext PST.
+XCOMM This is unpublished proprietary source code of FUJITSU LIMITED
+XCOMM
+XCOMM NLS-DB for ja_JP.U90
+
+XCOMM
+XCOMM XLC_CHARSET_DEFINE category
+XCOMM
+XLC_CHARSET_DEFINE
+csd0 {
+ charset_name u90x03.1991-0
+ side GL
+ length 2
+ gc_number 94
+ string_encoding False
+ sequence \x1b\x25\x28\x32
+ encoding_name fujitsu.U90X03
+}
+
+csd1 {
+ charset_name u90x03.1991-0
+ side GR
+ length 2
+ gc_number 94
+ string_encoding False
+ sequence \x1b\x25\x2f\x32
+ encoding_name fujitsu.U90X03
+}
+END XLC_CHARSET_DEFINE
+
+XCOMM
+XCOMM XLC_FONTSET category
+XCOMM
+XLC_FONTSET
+XCOMM fs0 class (7 bit ASCII)
+fs0 {
+ charset {
+ name JISX0201.1976-0:GL
+ }
+ font {
+ primary JISX0201.1976-0:GL
+ substitute ISO8859-1:GL
+ vertical_rotate all
+ }
+}
+XCOMM fs1 class (Kanji)
+fs1 {
+ charset {
+ name JISX0208.1983-0:GL
+ }
+ font {
+ primary fujitsu.u90x01.1991-0:GL
+XCOMM primary JISX0208.1983-0:GL
+ substitute JISX0208.1983-0:GL; JISX0208.1983-0:GR;\
+ JISX0208.1983-1:GL; JISX0208.1983-1:GR;\
+ JISX0208.1990-0:GL; JISX0208.1990-0:GR;\
+ u90x01.1991-0:GL
+ vertical_map u90x01.1991-0.2:GL,\
+ [\x2122,\x2125]->\x7d21,[\x2131,\x2132]->\x7d25,\
+ [\x213c,\x213e]->\x7d27,[\x2141,\x215b]->\x7d2a,\
+ [\x2421,\x2421]->\x7d45,[\x2423,\x2423]->\x7d46,\
+ [\x2425,\x2425]->\x7d47,[\x2427,\x2427]->\x7d48,\
+ [\x2429,\x2429]->\x7d49,[\x2443,\x2443]->\x7d4a,\
+ [\x2463,\x2463]->\x7d4b,[\x2465,\x2465]->\x7d4c,\
+ [\x2467,\x2467]->\x7d4d,[\x246e,\x246e]->\x7d4e,\
+ [\x2521,\x2521]->\x7d4f,[\x2523,\x2523]->\x7d50,\
+ [\x2525,\x2525]->\x7d51,[\x2527,\x2527]->\x7d52,\
+ [\x2529,\x2529]->\x7d53,[\x2543,\x2543]->\x7d54,\
+ [\x2563,\x2563]->\x7d55,[\x2565,\x2565]->\x7d56,\
+ [\x2567,\x2567]->\x7d57,[\x256e,\x256e]->\x7d58,\
+ [\x2575,\x2576]->\x7d59,[\x2475,\x2476]->\x7d5b
+ }
+}
+XCOMM fs2 class (Half Kana)
+fs2 {
+ charset {
+ name JISX0201.1976-0:GR
+ }
+ font {
+ primary JISX0201.1976-0:GR
+ vertical_rotate all
+ }
+}
+XCOMM fs3 class (JEF Kanji + User Defined Character)
+fs3 {
+ charset {
+ name u90x03.1991-0:GR; u90x03.1991-0:GL
+ udc_area \x6521,\x787e
+ }
+ font {
+ primary fujitsu.u90x03.1991-0:GL
+ substitute u90x03.1991-0:GL;\
+ JISX0208.1983-0:GL; JISX0208.1983-0:GR;\
+ JISX0208.1983-1:GL; JISX0208.1983-1:GR;\
+ JISX0208.1990-0:GL; JISX0208.1990-0:GR
+ }
+}
+END XLC_FONTSET
+
+XCOMM
+XCOMM XLC_XLOCALE category
+XCOMM
+XLC_XLOCALE
+
+XCOMM encoding_name ja.euc
+encoding_name ja_JP.U90
+mb_cur_max 3
+state_depend_encoding False
+
+wc_encoding_mask \x30000000
+wc_shift_bits 7
+
+
+XCOMM cs0 class
+cs0 {
+ side GL:Default
+ length 1
+ wc_encoding \x00000000
+ ct_encoding JISX0201.1976-0:GL; ISO8859-1:GL
+}
+
+XCOMM cs1 class
+cs1 {
+ side GR:Default
+ length 2
+ wc_encoding \x30000000
+ ct_encoding JISX0208.1983-0:GL; JISX0208.1983-0:GR;\
+ JISX0208.1983-1:GL; JISX0208.1983-1:GR
+}
+
+XCOMM cs2 class
+cs2 {
+ side GR
+ length 1
+ mb_encoding <SS> \x8e
+ wc_encoding \x10000000
+ ct_encoding JISX0201.1976-0:GR
+}
+
+XCOMM cs3 class
+cs3 {
+ side GR
+ length 2
+ mb_encoding <SS> \x8f
+ wc_encoding \x20000000
+ ct_encoding u90x03.1991-0:GR; u90x03.1991-0:GL
+}
+
+END XLC_XLOCALE
diff --git a/libX11/nls/ja/Compose.pre b/libX11/nls/ja/Compose.pre
index 0935d75a4..26042570d 100644
--- a/libX11/nls/ja/Compose.pre
+++ b/libX11/nls/ja/Compose.pre
@@ -1,14 +1,14 @@
-XCOMM
-XCOMM ja Compose Sequence
-XCOMM
-XCOMM Sequence Definition
-XCOMM
-XCOMM
-XCOMM This file currently has no entries. It appears that a compose file (even
-XCOMM just an empty one) is required for the appropriate keysyms to work for
-XCOMM this encoding.
-XCOMM
-XCOMM <Multi_key> Means <Compose>
-XCOMM Special Character
-
-XCOMM End of Sequence Definition
+XCOMM
+XCOMM ja Compose Sequence
+XCOMM
+XCOMM Sequence Definition
+XCOMM
+XCOMM
+XCOMM This file currently has no entries. It appears that a compose file (even
+XCOMM just an empty one) is required for the appropriate keysyms to work for
+XCOMM this encoding.
+XCOMM
+XCOMM <Multi_key> Means <Compose>
+XCOMM Special Character
+
+XCOMM End of Sequence Definition
diff --git a/libX11/nls/ja/XI18N_OBJS b/libX11/nls/ja/XI18N_OBJS
index 2db64ddc2..50b51fecd 100644
--- a/libX11/nls/ja/XI18N_OBJS
+++ b/libX11/nls/ja/XI18N_OBJS
@@ -1,11 +1,11 @@
-# CATEGORY(XLC|XIM|OM) SHARED_LIBRARY_NAME FUNCTION_NAME
-#
-# XI18N objects table for ja locale
-#
-XLC ja/xlibi18n_ja _XlcGenericLoader # XLC_open
-XLC common/xlibi18n _XlcGenericLoader # XLC_open
-#XIM common/ximcp _XimOpenIM _XimRegisterIMInstantiateCallback _XimUnRegisterIMInstantiateCallback # XIM_open XIM_regiser XIM_unregister
-XIM common/ximp40 _Ximp_OpenIM # XIM_open
-XIM common/ximlocal _XimpLocalOpenIM # XIM_open
-XIM common/ximcp _XimOpenIM _XimRegisterIMInstantiateCallback _XimUnRegisterIMInstantiateCallback # XIM_open XIM_regiser XIM_unregister
-XOM common/xomGeneric _XomGenericOpenOM # XOM_open
+# CATEGORY(XLC|XIM|OM) SHARED_LIBRARY_NAME FUNCTION_NAME
+#
+# XI18N objects table for ja locale
+#
+XLC ja/xlibi18n_ja _XlcGenericLoader # XLC_open
+XLC common/xlibi18n _XlcGenericLoader # XLC_open
+#XIM common/ximcp _XimOpenIM _XimRegisterIMInstantiateCallback _XimUnRegisterIMInstantiateCallback # XIM_open XIM_regiser XIM_unregister
+XIM common/ximp40 _Ximp_OpenIM # XIM_open
+XIM common/ximlocal _XimpLocalOpenIM # XIM_open
+XIM common/ximcp _XimOpenIM _XimRegisterIMInstantiateCallback _XimUnRegisterIMInstantiateCallback # XIM_open XIM_regiser XIM_unregister
+XOM common/xomGeneric _XomGenericOpenOM # XOM_open
diff --git a/libX11/nls/ja/XLC_LOCALE.pre b/libX11/nls/ja/XLC_LOCALE.pre
index ae619ec15..99decf0a0 100644
--- a/libX11/nls/ja/XLC_LOCALE.pre
+++ b/libX11/nls/ja/XLC_LOCALE.pre
@@ -1,124 +1,124 @@
-XCOMM
-XCOMM XLocale Database Sample for ja_JP.euc
-XCOMM
-
-XCOMM
-XCOMM XLC_FONTSET category
-XCOMM
-XLC_FONTSET
-XCOMM fs0 class (7 bit ASCII)
-fs0 {
- charset {
- name ISO8859-1:GL
- }
- font {
- primary ISO8859-1:GL
- substitute JISX0201.1976-0:GL
- vertical_rotate all
- }
-}
-XCOMM fs1 class (Kanji)
-fs1 {
- charset {
- name JISX0208.1983-0:GL
- udc_area \x7521,\x7e7e
- }
- font {
- primary JISX0208.1983-0:GL
- substitute JISX0208.1990-0:GL
- }
-}
-XCOMM fs2 class (Half Kana)
-fs2 {
- charset {
- name JISX0201.1976-0:GR
- }
- font {
- primary JISX0201.1976-0:GR
- substitute JISX0201.1976-0:GR
- vertical_rotate all
- }
-}
-XCOMM fs3 class (Supplementary Kanji)
-XCOMM fs3 {
-XCOMM charset {
-XCOMM name JISX0212.1990-0:GL
-XCOMM udc_area \x7521,\x7e7e
-XCOMM }
-XCOMM font {
-XCOMM primary JISX0212.1990-0:GL
-XCOMM }
-XCOMM }
-END XLC_FONTSET
-
-XCOMM
-XCOMM XLC_XLOCALE category
-XCOMM
-XLC_XLOCALE
-
-encoding_name ja.euc
-mb_cur_max 3
-state_depend_encoding False
-#if WCHAR32
-wc_encoding_mask \x30000000
-wc_shift_bits 7
-#else
-wc_encoding_mask \x00008080
-wc_shift_bits 8
-#endif
-
-#ifndef X_LOCALE
-use_stdc_env True
-force_convert_to_mb True
-#endif
-
-XCOMM cs0 class
-cs0 {
- side GL:Default
- length 1
- wc_encoding \x00000000
- ct_encoding ISO8859-1:GL; JISX0201.1976-0:GL
-}
-
-XCOMM cs1 class
-cs1 {
- side GR:Default
- length 2
-#if WCHAR32
- wc_encoding \x30000000
-#else
- wc_encoding \x00008080
-#endif
- ct_encoding JISX0208.1983-0:GL; JISX0208.1983-0:GR;\
- JISX0208.1983-1:GL; JISX0208.1983-1:GR
-}
-
-XCOMM cs2 class
-cs2 {
- side GR
- length 1
- mb_encoding <SS> \x8e
-#if WCHAR32
- wc_encoding \x10000000
-#else
- wc_encoding \x00000080
-#endif
- ct_encoding JISX0201.1976-0:GR
-}
-
-XCOMM cs3 class
-XCOMM cs3 {
-XCOMM side GL
-XCOMM length 2
-XCOMM mb_encoding <SS> \x8f
-XCOMM #if WCHAR32
-XCOMM wc_encoding \x20000000
-XCOMM #else
-XCOMM wc_encoding \x00008000
-XCOMM #endif
-XCOMM ct_encoding JISX0212.1990-0:GL; JISX0212.1990-0:GR
-XCOMM }
-
-
-END XLC_XLOCALE
-
+XCOMM
+XCOMM XLocale Database Sample for ja_JP.euc
+XCOMM
+
+XCOMM
+XCOMM XLC_FONTSET category
+XCOMM
+XLC_FONTSET
+XCOMM fs0 class (7 bit ASCII)
+fs0 {
+ charset {
+ name ISO8859-1:GL
+ }
+ font {
+ primary ISO8859-1:GL
+ substitute JISX0201.1976-0:GL
+ vertical_rotate all
+ }
+}
+XCOMM fs1 class (Kanji)
+fs1 {
+ charset {
+ name JISX0208.1983-0:GL
+ udc_area \x7521,\x7e7e
+ }
+ font {
+ primary JISX0208.1983-0:GL
+ substitute JISX0208.1990-0:GL
+ }
+}
+XCOMM fs2 class (Half Kana)
+fs2 {
+ charset {
+ name JISX0201.1976-0:GR
+ }
+ font {
+ primary JISX0201.1976-0:GR
+ substitute JISX0201.1976-0:GR
+ vertical_rotate all
+ }
+}
+XCOMM fs3 class (Supplementary Kanji)
+XCOMM fs3 {
+XCOMM charset {
+XCOMM name JISX0212.1990-0:GL
+XCOMM udc_area \x7521,\x7e7e
+XCOMM }
+XCOMM font {
+XCOMM primary JISX0212.1990-0:GL
+XCOMM }
+XCOMM }
+END XLC_FONTSET
+
+XCOMM
+XCOMM XLC_XLOCALE category
+XCOMM
+XLC_XLOCALE
+
+encoding_name ja.euc
+mb_cur_max 3
+state_depend_encoding False
+#if WCHAR32
+wc_encoding_mask \x30000000
+wc_shift_bits 7
+#else
+wc_encoding_mask \x00008080
+wc_shift_bits 8
+#endif
+
+#ifndef X_LOCALE
+use_stdc_env True
+force_convert_to_mb True
+#endif
+
+XCOMM cs0 class
+cs0 {
+ side GL:Default
+ length 1
+ wc_encoding \x00000000
+ ct_encoding ISO8859-1:GL; JISX0201.1976-0:GL
+}
+
+XCOMM cs1 class
+cs1 {
+ side GR:Default
+ length 2
+#if WCHAR32
+ wc_encoding \x30000000
+#else
+ wc_encoding \x00008080
+#endif
+ ct_encoding JISX0208.1983-0:GL; JISX0208.1983-0:GR;\
+ JISX0208.1983-1:GL; JISX0208.1983-1:GR
+}
+
+XCOMM cs2 class
+cs2 {
+ side GR
+ length 1
+ mb_encoding <SS> \x8e
+#if WCHAR32
+ wc_encoding \x10000000
+#else
+ wc_encoding \x00000080
+#endif
+ ct_encoding JISX0201.1976-0:GR
+}
+
+XCOMM cs3 class
+XCOMM cs3 {
+XCOMM side GL
+XCOMM length 2
+XCOMM mb_encoding <SS> \x8f
+XCOMM #if WCHAR32
+XCOMM wc_encoding \x20000000
+XCOMM #else
+XCOMM wc_encoding \x00008000
+XCOMM #endif
+XCOMM ct_encoding JISX0212.1990-0:GL; JISX0212.1990-0:GR
+XCOMM }
+
+
+END XLC_XLOCALE
+
diff --git a/libX11/nls/ja_JP.UTF-8/XI18N_OBJS b/libX11/nls/ja_JP.UTF-8/XI18N_OBJS
index af46a1a2b..9159b67e9 100644
--- a/libX11/nls/ja_JP.UTF-8/XI18N_OBJS
+++ b/libX11/nls/ja_JP.UTF-8/XI18N_OBJS
@@ -1,8 +1,8 @@
-# CATEGORY(XLC|XIM|OM) SHARED_LIBRARY_NAME FUNCTION_NAME
-#
-# XI18N objects table for ja_JP.UTF-8 locale
-#
-#
-XLC common/xlcUTF8Load _XlcUtf8Loader # XLC_open
-XIM common/ximcp _XimOpenIM _XimRegisterIMInstantiateCallback _XimUnRegisterIMInstantiateCallback # XIM_open XIM_register XIM_unregister
-XOM common/xomGeneric _XomGenericOpenOM # XOM_open
+# CATEGORY(XLC|XIM|OM) SHARED_LIBRARY_NAME FUNCTION_NAME
+#
+# XI18N objects table for ja_JP.UTF-8 locale
+#
+#
+XLC common/xlcUTF8Load _XlcUtf8Loader # XLC_open
+XIM common/ximcp _XimOpenIM _XimRegisterIMInstantiateCallback _XimUnRegisterIMInstantiateCallback # XIM_open XIM_register XIM_unregister
+XOM common/xomGeneric _XomGenericOpenOM # XOM_open
diff --git a/libX11/nls/ja_JP.UTF-8/XLC_LOCALE.pre b/libX11/nls/ja_JP.UTF-8/XLC_LOCALE.pre
index c1c4e8e00..0f5ebe29d 100644
--- a/libX11/nls/ja_JP.UTF-8/XLC_LOCALE.pre
+++ b/libX11/nls/ja_JP.UTF-8/XLC_LOCALE.pre
@@ -1,149 +1,149 @@
-XCOMM
-
-XCOMM
-XCOMM XLC_FONTSET category
-XCOMM
-XLC_FONTSET
-
-on_demand_loading True
-
-object_name generic
-
-XCOMM We leave the legacy encodings in for the moment, because we don't
-XCOMM have that many ISO10646 fonts yet.
-XCOMM fs0 class (7 bit ASCII)
-fs0 {
- charset {
- name ISO8859-1:GL
- }
- font {
- primary ISO8859-1:GL
- vertical_rotate all
- }
-}
-XCOMM fs1 class (ISO8859 families)
-fs1 {
- charset {
- name ISO8859-1:GR
- }
- font {
- primary ISO8859-1:GR
- }
-}
-
-XCOMM fs2 class (Kanji)
-fs2 {
- charset {
- name JISX0208.1983-0:GL
- }
- font {
- primary JISX0208.1983-0:GL
- }
-}
-
-XCOMM fs3 class (Korean Character)
-fs3 {
- charset {
- name KSC5601.1987-0:GL
- }
- font {
- primary KSC5601.1987-0:GL
- }
-}
-
-XCOMM fs4 class (Chinese Han Character)
-fs4 {
- charset {
- name GB2312.1980-0:GL
- }
- font {
- primary GB2312.1980-0:GL
- }
-}
-XCOMM fs5 class (Half Kana)
-fs5 {
- charset {
- name JISX0201.1976-0:GR
- }
- font {
- primary JISX0201.1976-0:GR
- vertical_rotate all
- }
-}
-XCOMM ISO10646-1 is put last to make usually better-looking
-XCOMM other fonts are picked up before iso10646-1 fonts.
-XCOMM Moreover, some iso10646-1 fonts don't have any glyph at all
-XCOMM in ISO8859-X ranges.
-
-XCOMM fs6 class
-fs6 {
- charset {
- name ISO10646-1
- }
- font {
- primary ISO10646-1
- }
-}
-
-END XLC_FONTSET
-
-XCOMM
-XCOMM XLC_XLOCALE category
-XCOMM
-XLC_XLOCALE
-
-encoding_name UTF-8
-mb_cur_max 6
-state_depend_encoding False
-
-XCOMM cs0 class
-cs0 {
- side GL:Default
- length 1
- ct_encoding ISO8859-1:GL
-}
-
-XCOMM cs1 class
-cs1 {
- side GR:Default
- length 1
- ct_encoding ISO8859-1:GR
-}
-
-XCOMM cs2 class
-cs2 {
- side GR
- length 2
- ct_encoding JISX0208.1983-0:GL; JISX0208.1983-0:GR; JISX0208.1983-1:GL; JISX0208.1983-1:GR
-
-}
-
-XCOMM cs3 class
-cs3 {
- side GL
- length 2
- ct_encoding KSC5601.1987-0:GL; KSC5601.1987-0:GR; KSC5601.1987-1:GL; KSC5601.1987-1:GR
-
-}
-
-XCOMM cs4 class
-cs4 {
- side GR
- length 2
- ct_encoding GB2312.1980-0:GL; GB2312.1980-0:GR
-}
-
-XCOMM cs5 class
-cs5 {
- side GR
- length 1
- ct_encoding JISX0201.1976-0:GR
-}
-
-XCOMM cs6 class
-cs6 {
- side none
- ct_encoding ISO10646-1
-}
-
-END XLC_XLOCALE
+XCOMM
+
+XCOMM
+XCOMM XLC_FONTSET category
+XCOMM
+XLC_FONTSET
+
+on_demand_loading True
+
+object_name generic
+
+XCOMM We leave the legacy encodings in for the moment, because we don't
+XCOMM have that many ISO10646 fonts yet.
+XCOMM fs0 class (7 bit ASCII)
+fs0 {
+ charset {
+ name ISO8859-1:GL
+ }
+ font {
+ primary ISO8859-1:GL
+ vertical_rotate all
+ }
+}
+XCOMM fs1 class (ISO8859 families)
+fs1 {
+ charset {
+ name ISO8859-1:GR
+ }
+ font {
+ primary ISO8859-1:GR
+ }
+}
+
+XCOMM fs2 class (Kanji)
+fs2 {
+ charset {
+ name JISX0208.1983-0:GL
+ }
+ font {
+ primary JISX0208.1983-0:GL
+ }
+}
+
+XCOMM fs3 class (Korean Character)
+fs3 {
+ charset {
+ name KSC5601.1987-0:GL
+ }
+ font {
+ primary KSC5601.1987-0:GL
+ }
+}
+
+XCOMM fs4 class (Chinese Han Character)
+fs4 {
+ charset {
+ name GB2312.1980-0:GL
+ }
+ font {
+ primary GB2312.1980-0:GL
+ }
+}
+XCOMM fs5 class (Half Kana)
+fs5 {
+ charset {
+ name JISX0201.1976-0:GR
+ }
+ font {
+ primary JISX0201.1976-0:GR
+ vertical_rotate all
+ }
+}
+XCOMM ISO10646-1 is put last to make usually better-looking
+XCOMM other fonts are picked up before iso10646-1 fonts.
+XCOMM Moreover, some iso10646-1 fonts don't have any glyph at all
+XCOMM in ISO8859-X ranges.
+
+XCOMM fs6 class
+fs6 {
+ charset {
+ name ISO10646-1
+ }
+ font {
+ primary ISO10646-1
+ }
+}
+
+END XLC_FONTSET
+
+XCOMM
+XCOMM XLC_XLOCALE category
+XCOMM
+XLC_XLOCALE
+
+encoding_name UTF-8
+mb_cur_max 6
+state_depend_encoding False
+
+XCOMM cs0 class
+cs0 {
+ side GL:Default
+ length 1
+ ct_encoding ISO8859-1:GL
+}
+
+XCOMM cs1 class
+cs1 {
+ side GR:Default
+ length 1
+ ct_encoding ISO8859-1:GR
+}
+
+XCOMM cs2 class
+cs2 {
+ side GR
+ length 2
+ ct_encoding JISX0208.1983-0:GL; JISX0208.1983-0:GR; JISX0208.1983-1:GL; JISX0208.1983-1:GR
+
+}
+
+XCOMM cs3 class
+cs3 {
+ side GL
+ length 2
+ ct_encoding KSC5601.1987-0:GL; KSC5601.1987-0:GR; KSC5601.1987-1:GL; KSC5601.1987-1:GR
+
+}
+
+XCOMM cs4 class
+cs4 {
+ side GR
+ length 2
+ ct_encoding GB2312.1980-0:GL; GB2312.1980-0:GR
+}
+
+XCOMM cs5 class
+cs5 {
+ side GR
+ length 1
+ ct_encoding JISX0201.1976-0:GR
+}
+
+XCOMM cs6 class
+cs6 {
+ side none
+ ct_encoding ISO10646-1
+}
+
+END XLC_XLOCALE
diff --git a/libX11/nls/ko/Compose.pre b/libX11/nls/ko/Compose.pre
index 0b1f57045..4297871e7 100644
--- a/libX11/nls/ko/Compose.pre
+++ b/libX11/nls/ko/Compose.pre
@@ -1,14 +1,14 @@
-XCOMM
-XCOMM ko Compose Sequence
-XCOMM
-XCOMM Sequence Definition
-XCOMM
-XCOMM
-XCOMM This file currently has no entries. It appears that a compose file (even
-XCOMM just an empty one) is required for the appropriate keysyms to work for
-XCOMM this encoding.
-XCOMM
-XCOMM <Multi_key> Means <Compose>
-XCOMM Special Character
-
-XCOMM End of Sequence Definition
+XCOMM
+XCOMM ko Compose Sequence
+XCOMM
+XCOMM Sequence Definition
+XCOMM
+XCOMM
+XCOMM This file currently has no entries. It appears that a compose file (even
+XCOMM just an empty one) is required for the appropriate keysyms to work for
+XCOMM this encoding.
+XCOMM
+XCOMM <Multi_key> Means <Compose>
+XCOMM Special Character
+
+XCOMM End of Sequence Definition
diff --git a/libX11/nls/ko/XI18N_OBJS b/libX11/nls/ko/XI18N_OBJS
index f57b4648b..5ee523799 100644
--- a/libX11/nls/ko/XI18N_OBJS
+++ b/libX11/nls/ko/XI18N_OBJS
@@ -1,7 +1,7 @@
-# CATEGORY(XLC|XIM|OM) SHARED_LIBRARY_NAME FUNCTION_NAME
-#
-# XI18N objects table for ko locale
-#
-XLC common/xlibi18n _XlcGenericLoader # XLC_open
-XIM common/ximp40 _Ximp_OpenIM # XIM_open
-XOM common/xomGeneric _XomGenericOpenOM # XOM_open
+# CATEGORY(XLC|XIM|OM) SHARED_LIBRARY_NAME FUNCTION_NAME
+#
+# XI18N objects table for ko locale
+#
+XLC common/xlibi18n _XlcGenericLoader # XLC_open
+XIM common/ximp40 _Ximp_OpenIM # XIM_open
+XOM common/xomGeneric _XomGenericOpenOM # XOM_open
diff --git a/libX11/nls/ko/XLC_LOCALE.pre b/libX11/nls/ko/XLC_LOCALE.pre
index a91795462..bda77b7f8 100644
--- a/libX11/nls/ko/XLC_LOCALE.pre
+++ b/libX11/nls/ko/XLC_LOCALE.pre
@@ -1,71 +1,71 @@
-XCOMM XLocale Database Sample for ko.
-XCOMM
-
-XCOMM
-XCOMM XLC_FONTSET category
-XCOMM
-XLC_FONTSET
-XCOMM fs0 class (7 bit ASCII)
-fs0 {
- charset {
- name ISO8859-1:GL
- }
- font {
- primary ISO8859-1:GL
- vertical_rotate all
- }
-}
-XCOMM fs1 class
-fs1 {
- charset {
- name KSC5601.1987-0:GL
- }
- font {
- primary KSC5601.1987-0:GL
- substitute KSC5601.1987-0:GL
- }
-}
-END XLC_FONTSET
-
-XCOMM
-XCOMM XLC_XLOCALE category
-XCOMM
-XLC_XLOCALE
-
-encoding_name ko.euc
-mb_cur_max 2
-state_depend_encoding False
-#if WCHAR32
-wc_encoding_mask \x30000000
-wc_shift_bits 7
-#else
-wc_encoding_mask \x00008080
-wc_shift_bits 8
-#endif
-
-#ifndef X_LOCALE
-use_stdc_env True
-force_convert_to_mb True
-#endif
-
-XCOMM cs0 class
-cs0 {
- side GL:Default
- length 1
- wc_encoding \x00000000
- ct_encoding ISO8859-1:GL
-}
-
-XCOMM cs1 class
-cs1 {
- side GR:Default
- length 2
-#if WCHAR32
- wc_encoding \x30000000
-#else
- wc_encoding \x00008080
-#endif
- ct_encoding KSC5601.1987-0:GL; KSC5601.1987-0:GR
-}
-
-END XLC_XLOCALE
+XCOMM XLocale Database Sample for ko.
+XCOMM
+
+XCOMM
+XCOMM XLC_FONTSET category
+XCOMM
+XLC_FONTSET
+XCOMM fs0 class (7 bit ASCII)
+fs0 {
+ charset {
+ name ISO8859-1:GL
+ }
+ font {
+ primary ISO8859-1:GL
+ vertical_rotate all
+ }
+}
+XCOMM fs1 class
+fs1 {
+ charset {
+ name KSC5601.1987-0:GL
+ }
+ font {
+ primary KSC5601.1987-0:GL
+ substitute KSC5601.1987-0:GL
+ }
+}
+END XLC_FONTSET
+
+XCOMM
+XCOMM XLC_XLOCALE category
+XCOMM
+XLC_XLOCALE
+
+encoding_name ko.euc
+mb_cur_max 2
+state_depend_encoding False
+#if WCHAR32
+wc_encoding_mask \x30000000
+wc_shift_bits 7
+#else
+wc_encoding_mask \x00008080
+wc_shift_bits 8
+#endif
+
+#ifndef X_LOCALE
+use_stdc_env True
+force_convert_to_mb True
+#endif
+
+XCOMM cs0 class
+cs0 {
+ side GL:Default
+ length 1
+ wc_encoding \x00000000
+ ct_encoding ISO8859-1:GL
+}
+
+XCOMM cs1 class
+cs1 {
+ side GR:Default
+ length 2
+#if WCHAR32
+ wc_encoding \x30000000
+#else
+ wc_encoding \x00008080
+#endif
+ ct_encoding KSC5601.1987-0:GL; KSC5601.1987-0:GR
+}
+
+END XLC_XLOCALE
diff --git a/libX11/nls/ko_KR.UTF-8/XI18N_OBJS b/libX11/nls/ko_KR.UTF-8/XI18N_OBJS
index 3c46c5a92..96e753cb6 100644
--- a/libX11/nls/ko_KR.UTF-8/XI18N_OBJS
+++ b/libX11/nls/ko_KR.UTF-8/XI18N_OBJS
@@ -1,8 +1,8 @@
-# CATEGORY(XLC|XIM|OM) SHARED_LIBRARY_NAME FUNCTION_NAME
-#
-# XI18N objects table for ko_KR.UTF-8 locale
-#
-#
-XLC common/xlcUTF8Load _XlcUtf8Loader # XLC_open
-XIM common/ximcp _XimOpenIM _XimRegisterIMInstantiateCallback _XimUnRegisterIMInstantiateCallback # XIM_open XIM_register XIM_unregister
-XOM common/xomGeneric _XomGenericOpenOM # XOM_open
+# CATEGORY(XLC|XIM|OM) SHARED_LIBRARY_NAME FUNCTION_NAME
+#
+# XI18N objects table for ko_KR.UTF-8 locale
+#
+#
+XLC common/xlcUTF8Load _XlcUtf8Loader # XLC_open
+XIM common/ximcp _XimOpenIM _XimRegisterIMInstantiateCallback _XimUnRegisterIMInstantiateCallback # XIM_open XIM_register XIM_unregister
+XOM common/xomGeneric _XomGenericOpenOM # XOM_open
diff --git a/libX11/nls/ko_KR.UTF-8/XLC_LOCALE.pre b/libX11/nls/ko_KR.UTF-8/XLC_LOCALE.pre
index 33338a14e..b3db89da2 100644
--- a/libX11/nls/ko_KR.UTF-8/XLC_LOCALE.pre
+++ b/libX11/nls/ko_KR.UTF-8/XLC_LOCALE.pre
@@ -1,147 +1,147 @@
-
-XCOMM
-XCOMM XLC_FONTSET category
-XCOMM
-XLC_FONTSET
-
-on_demand_loading True
-
-object_name generic
-
-XCOMM We leave the legacy encodings in for the moment, because we don't
-XCOMM have that many ISO10646 fonts yet.
-XCOMM fs0 class (7 bit ASCII)
-fs0 {
- charset {
- name ISO8859-1:GL
- }
- font {
- primary ISO8859-1:GL
- vertical_rotate all
- }
-}
-XCOMM fs1 class (ISO8859 families)
-fs1 {
- charset {
- name ISO8859-1:GR
- }
- font {
- primary ISO8859-1:GR
- }
-}
-
-XCOMM fs2 class (Korean Character)
-fs2 {
- charset {
- name KSC5601.1987-0:GL
- }
- font {
- primary KSC5601.1987-0:GL
- }
-}
-XCOMM fs3 class (Kanji)
-fs3 {
- charset {
- name JISX0208.1983-0:GL
- }
- font {
- primary JISX0208.1983-0:GL
- }
-}
-XCOMM fs4 class (Chinese Han Character)
-fs4 {
- charset {
- name GB2312.1980-0:GL
- }
- font {
- primary GB2312.1980-0:GL
- }
-}
-XCOMM fs5 class (Half Kana)
-fs5 {
- charset {
- name JISX0201.1976-0:GR
- }
- font {
- primary JISX0201.1976-0:GR
- vertical_rotate all
- }
-}
-
-XCOMM ISO10646-1 is put last to make usually better-looking
-XCOMM other fonts are picked up before iso10646-1 fonts.
-XCOMM Moreover, some iso10646-1 fonts don't have any glyph at all
-XCOMM in ISO8859-X ranges.
-
-XCOMM fs6 class
-fs6 {
- charset {
- name ISO10646-1
- }
- font {
- primary ISO10646-1
- }
-}
-
-END XLC_FONTSET
-
-XCOMM
-XCOMM XLC_XLOCALE category
-XCOMM
-XLC_XLOCALE
-
-encoding_name UTF-8
-mb_cur_max 6
-state_depend_encoding False
-
-XCOMM cs0 class
-cs0 {
- side GL:Default
- length 1
- ct_encoding ISO8859-1:GL
-}
-
-XCOMM cs1 class
-cs1 {
- side GR:Default
- length 1
- ct_encoding ISO8859-1:GR
-}
-
-XCOMM cs2 class
-cs2 {
- side GL
- length 2
- ct_encoding KSC5601.1987-0:GL; KSC5601.1987-0:GR; KSC5601.1987-1:GL; KSC5601.1987-1:GR
-
-}
-
-XCOMM cs3 class
-cs3 {
- side GR
- length 2
- ct_encoding JISX0208.1983-0:GL; JISX0208.1983-0:GR; JISX0208.1983-1:GL; JISX0208.1983-1:GR
-
-}
-
-XCOMM cs4 class
-cs4 {
- side GR
- length 2
- ct_encoding GB2312.1980-0:GL; GB2312.1980-0:GR
-}
-
-XCOMM cs5 class
-cs5 {
- side GR
- length 1
- ct_encoding JISX0201.1976-0:GR
-}
-
-XCOMM cs6 class
-cs6 {
- side none
- ct_encoding ISO10646-1
-}
-
-END XLC_XLOCALE
+
+XCOMM
+XCOMM XLC_FONTSET category
+XCOMM
+XLC_FONTSET
+
+on_demand_loading True
+
+object_name generic
+
+XCOMM We leave the legacy encodings in for the moment, because we don't
+XCOMM have that many ISO10646 fonts yet.
+XCOMM fs0 class (7 bit ASCII)
+fs0 {
+ charset {
+ name ISO8859-1:GL
+ }
+ font {
+ primary ISO8859-1:GL
+ vertical_rotate all
+ }
+}
+XCOMM fs1 class (ISO8859 families)
+fs1 {
+ charset {
+ name ISO8859-1:GR
+ }
+ font {
+ primary ISO8859-1:GR
+ }
+}
+
+XCOMM fs2 class (Korean Character)
+fs2 {
+ charset {
+ name KSC5601.1987-0:GL
+ }
+ font {
+ primary KSC5601.1987-0:GL
+ }
+}
+XCOMM fs3 class (Kanji)
+fs3 {
+ charset {
+ name JISX0208.1983-0:GL
+ }
+ font {
+ primary JISX0208.1983-0:GL
+ }
+}
+XCOMM fs4 class (Chinese Han Character)
+fs4 {
+ charset {
+ name GB2312.1980-0:GL
+ }
+ font {
+ primary GB2312.1980-0:GL
+ }
+}
+XCOMM fs5 class (Half Kana)
+fs5 {
+ charset {
+ name JISX0201.1976-0:GR
+ }
+ font {
+ primary JISX0201.1976-0:GR
+ vertical_rotate all
+ }
+}
+
+XCOMM ISO10646-1 is put last to make usually better-looking
+XCOMM other fonts are picked up before iso10646-1 fonts.
+XCOMM Moreover, some iso10646-1 fonts don't have any glyph at all
+XCOMM in ISO8859-X ranges.
+
+XCOMM fs6 class
+fs6 {
+ charset {
+ name ISO10646-1
+ }
+ font {
+ primary ISO10646-1
+ }
+}
+
+END XLC_FONTSET
+
+XCOMM
+XCOMM XLC_XLOCALE category
+XCOMM
+XLC_XLOCALE
+
+encoding_name UTF-8
+mb_cur_max 6
+state_depend_encoding False
+
+XCOMM cs0 class
+cs0 {
+ side GL:Default
+ length 1
+ ct_encoding ISO8859-1:GL
+}
+
+XCOMM cs1 class
+cs1 {
+ side GR:Default
+ length 1
+ ct_encoding ISO8859-1:GR
+}
+
+XCOMM cs2 class
+cs2 {
+ side GL
+ length 2
+ ct_encoding KSC5601.1987-0:GL; KSC5601.1987-0:GR; KSC5601.1987-1:GL; KSC5601.1987-1:GR
+
+}
+
+XCOMM cs3 class
+cs3 {
+ side GR
+ length 2
+ ct_encoding JISX0208.1983-0:GL; JISX0208.1983-0:GR; JISX0208.1983-1:GL; JISX0208.1983-1:GR
+
+}
+
+XCOMM cs4 class
+cs4 {
+ side GR
+ length 2
+ ct_encoding GB2312.1980-0:GL; GB2312.1980-0:GR
+}
+
+XCOMM cs5 class
+cs5 {
+ side GR
+ length 1
+ ct_encoding JISX0201.1976-0:GR
+}
+
+XCOMM cs6 class
+cs6 {
+ side none
+ ct_encoding ISO10646-1
+}
+
+END XLC_XLOCALE
diff --git a/libX11/nls/koi8-c/Compose.pre b/libX11/nls/koi8-c/Compose.pre
index 53561c9c0..c15a3bbe9 100644
--- a/libX11/nls/koi8-c/Compose.pre
+++ b/libX11/nls/koi8-c/Compose.pre
@@ -1,122 +1,122 @@
-XCOMM
-XCOMM koi8-c Compose Sequence
-XCOMM
-XCOMM Sequence Definition
-XCOMM
-XCOMM
-
-XCOMM <Multi_key> Means <Compose>
-XCOMM Special Character
-<Multi_key> <plus> <plus> : "#" numbersign
-<Multi_key> <apostrophe> <space> : "'" apostrophe
-<Multi_key> <space> <apostrophe> : "'" apostrophe
-<Multi_key> <A> <T> : "@" at
-<Multi_key> <parenleft> <parenleft> : "[" bracketleft
-<Multi_key> <slash> <slash> : "\\" backslash
-<Multi_key> <slash> <less> : "\\" backslash
-<Multi_key> <less> <slash> : "\\" backslash
-<Multi_key> <parenright> <parenright> : "]" bracketright
-<Multi_key> <asciicircum> <space> : "^" asciicircum
-<Multi_key> <space> <asciicircum> : "^" asciicircum
-<Multi_key> <greater> <space> : "^" asciicircum
-<Multi_key> <space> <greater> : "^" asciicircum
-<Multi_key> <grave> <space> : "`" grave
-<Multi_key> <space> <grave> : "`" grave
-<Multi_key> <parenleft> <minus> : "{" braceleft
-<Multi_key> <minus> <parenleft> : "{" braceleft
-<Multi_key> <slash> <asciicircum> : "|" bar
-<Multi_key> <asciicircum> <slash> : "|" bar
-<Multi_key> <V> <L> : "|" bar
-<Multi_key> <L> <V> : "|" bar
-<Multi_key> <v> <l> : "|" bar
-<Multi_key> <l> <v> : "|" bar
-<Multi_key> <parenright> <minus> : "}" braceright
-<Multi_key> <minus> <parenright> : "}" braceright
-<Multi_key> <asciitilde> <space> : "~" asciitilde
-<Multi_key> <space> <asciitilde> : "~" asciitilde
-<Multi_key> <minus> <space> : "~" asciitilde
-<Multi_key> <space> <minus> : "~" asciitilde
-
-<Multi_key> <space> <space> : "\240" nobreakspace
-
-<Multi_key> <Cyrillic_ghe> <minus> : "\200" Cyrillic_ghe_bar
-<Multi_key> <Cyrillic_GHE> <minus> : "\220" Cyrillic_GHE_bar
-<Multi_key> <Cyrillic_zhe> <comma> : "\201" Cyrillic_zhe_descender
-<Multi_key> <Cyrillic_ZHE> <comma> : "\221" Cyrillic_ZHE_descender
-<Multi_key> <Cyrillic_ka> <comma> : "\202" Cyrillic_ka_descender
-<Multi_key> <Cyrillic_KA> <comma> : "\222" Cyrillic_KA_descender
-<Multi_key> <Cyrillic_ka> <slash> : "\203" Cyrillic_ka_vertstroke
-<Multi_key> <Cyrillic_KA> <slash> : "\223" Cyrillic_KA_vertstroke
-<Multi_key> <Cyrillic_ka> <bar> : "\203" Cyrillic_ka_vertstroke
-<Multi_key> <Cyrillic_KA> <bar> : "\223" Cyrillic_KA_vertstroke
-<Multi_key> <Cyrillic_en> <comma> : "\204" Cyrillic_en_descender
-<Multi_key> <Cyrillic_EN> <comma> : "\224" Cyrillic_EN_descender
-<Multi_key> <Cyrillic_u> <apostrophe> : "\205" Cyrillic_u_straight
-<Multi_key> <Cyrillic_U> <apostrophe> : "\225" Cyrillic_U_straight
-<Multi_key> <Cyrillic_u> <bar> : "\205" Cyrillic_u_straight
-<Multi_key> <Cyrillic_U> <bar> : "\225" Cyrillic_U_straight
-<Multi_key> <Cyrillic_u> <comma> : "\206" Cyrillic_u_straight_bar
-<Multi_key> <Cyrillic_U> <comma> : "\226" Cyrillic_U_straight_bat
-<Multi_key> <Cyrillic_u> <slash> : "\206" Cyrillic_u_straight_bar
-<Multi_key> <Cyrillic_U> <slash> : "\226" Cyrillic_U_straight_bat
-<Multi_key> <Cyrillic_ha> <comma> : "\207" Cyrillic_ha_descender
-<Multi_key> <Cyrillic_HA> <comma> : "\227" Cyrillic_HA_descender
-<Multi_key> <Cyrillic_che> <comma> : "\210" Cyrillic_che_descender
-<Multi_key> <Cyrillic_CHE> <comma> : "\230" Cyrillic_CHE_descender
-<Multi_key> <Cyrillic_che> <slash> : "\211" Cyrillic_che_vertstroke
-<Multi_key> <Cyrillic_CHE> <slash> : "\231" Cyrillic_CHE_vertstroke
-<Multi_key> <Cyrillic_che> <bar> : "\211" Cyrillic_che_vertstroke
-<Multi_key> <Cyrillic_CHE> <bar> : "\231" Cyrillic_CHE_vertstroke
-<Multi_key> <Cyrillic_ha> <apostrophe> : "\212" Cyrillic_shha
-<Multi_key> <Cyrillic_HA> <apostrophe> : "\232" Cyrillic_SHHA
-<Multi_key> <h> <apostrophe> : "\212" Cyrillic_shha
-<Multi_key> <H> <apostrophe> : "\232" Cyrillic_SHHA
-<Multi_key> <h> <h> : "\212" Cyrillic_shha
-<Multi_key> <H> <H> : "\232" Cyrillic_SHHA
-<Multi_key> <Cyrillic_ie> <Cyrillic_ie> : "\213" Cyrillic_schwa
-<Multi_key> <Cyrillic_IE> <Cyrillic_IE> : "\233" Cyrillic_SCHWA
-<Multi_key> <e> <e> : "\213" Cyrillic_schwa
-<Multi_key> <E> <E> : "\233" Cyrillic_SCHWA
-<Multi_key> <Cyrillic_i> <minus> : "\214" Cyrillic_i_macron
-<Multi_key> <Cyrillic_I> <minus> : "\234" Cyrillic_I_macron
-<Multi_key> <Cyrillic_o> <minus> : "\215" Cyrillic_o_bar
-<Multi_key> <Cyrillic_O> <minus> : "\235" Cyrillic_O_bar
-<Multi_key> <Cyrillic_u> <minus> : "\216" Cyrillic_u_macron
-<Multi_key> <Cyrillic_U> <minus> : "\236" Cyrillic_U_macron
-
-<Multi_key> <Cyrillic_de> <Cyrillic_je> : "\241" Serbian_dje
-<Multi_key> <Cyrillic_DE> <Cyrillic_JE> : "\261" Serbian_DJE
-<Multi_key> <Cyrillic_ghe> <Cyrillic_je> : "\242" Macedonia_gje
-<Multi_key> <Cyrillic_GHE> <Cyrillic_JE> : "\262" Macedonia_GJE
-<Multi_key> <Cyrillic_shorti> <Cyrillic_o> : "\243" Cyrillic_io
-<Multi_key> <Cyrillic_SHORTI> <Cyrillic_O> : "\263" Cyrillic_IO
-<Multi_key> <Cyrillic_je> <Cyrillic_o> : "\243" Cyrillic_io
-<Multi_key> <Cyrillic_JE> <Cyrillic_O> : "\263" Cyrillic_IO
-<Multi_key> <Cyrillic_ie> <colon> : "\243" Cyrillic_io
-<Multi_key> <Cyrillic_IE> <colon> : "\263" Cyrillic_IO
-
-<Multi_key> <Cyrillic_el> <Cyrillic_je> : "\251" Cyrillic_lje
-<Multi_key> <Cyrillic_EL> <Cyrillic_JE> : "\271" Cyrillic_LJE
-<Multi_key> <Cyrillic_en> <Cyrillic_je> : "\252" Cyrillic_nje
-<Multi_key> <Cyrillic_EN> <Cyrillic_JE> : "\272" Cyrillic_NJE
-
-<Multi_key> <Cyrillic_shorti> <Cyrillic_u> : "\300" Cyrillic_yu
-<Multi_key> <Cyrillic_SHORTI> <Cyrillic_U> : "\340" Cyrillic_YU
-<Multi_key> <Cyrillic_je> <Cyrillic_u> : "\300" Cyrillic_yu
-<Multi_key> <Cyrillic_JE> <Cyrillic_U> : "\340" Cyrillic_YU
-
-<Multi_key> <Cyrillic_te> <Cyrillic_es> : "\303" Cyrillic_tse
-<Multi_key> <Cyrillic_TE> <Cyrillic_ES> : "\343" Cyrillic_TSE
-
-<Multi_key> <Cyrillic_shorti> <Cyrillic_a> : "\321" Cyrillic_ya
-<Multi_key> <Cyrillic_SHORTI> <Cyrillic_A> : "\361" Cyrillic_YA
-<Multi_key> <Cyrillic_je> <Cyrillic_a> : "\321" Cyrillic_ya
-<Multi_key> <Cyrillic_JE> <Cyrillic_A> : "\361" Cyrillic_YA
-
-
-<Multi_key> <Cyrillic_sha> <comma> : "\335" Cyrillic_shcha
-<Multi_key> <Cyrillic_SHA> <comma> : "\375" Cyrillic_SHCHA
-
-
-
-XCOMM End of Sequence Definition
+XCOMM
+XCOMM koi8-c Compose Sequence
+XCOMM
+XCOMM Sequence Definition
+XCOMM
+XCOMM
+
+XCOMM <Multi_key> Means <Compose>
+XCOMM Special Character
+<Multi_key> <plus> <plus> : "#" numbersign
+<Multi_key> <apostrophe> <space> : "'" apostrophe
+<Multi_key> <space> <apostrophe> : "'" apostrophe
+<Multi_key> <A> <T> : "@" at
+<Multi_key> <parenleft> <parenleft> : "[" bracketleft
+<Multi_key> <slash> <slash> : "\\" backslash
+<Multi_key> <slash> <less> : "\\" backslash
+<Multi_key> <less> <slash> : "\\" backslash
+<Multi_key> <parenright> <parenright> : "]" bracketright
+<Multi_key> <asciicircum> <space> : "^" asciicircum
+<Multi_key> <space> <asciicircum> : "^" asciicircum
+<Multi_key> <greater> <space> : "^" asciicircum
+<Multi_key> <space> <greater> : "^" asciicircum
+<Multi_key> <grave> <space> : "`" grave
+<Multi_key> <space> <grave> : "`" grave
+<Multi_key> <parenleft> <minus> : "{" braceleft
+<Multi_key> <minus> <parenleft> : "{" braceleft
+<Multi_key> <slash> <asciicircum> : "|" bar
+<Multi_key> <asciicircum> <slash> : "|" bar
+<Multi_key> <V> <L> : "|" bar
+<Multi_key> <L> <V> : "|" bar
+<Multi_key> <v> <l> : "|" bar
+<Multi_key> <l> <v> : "|" bar
+<Multi_key> <parenright> <minus> : "}" braceright
+<Multi_key> <minus> <parenright> : "}" braceright
+<Multi_key> <asciitilde> <space> : "~" asciitilde
+<Multi_key> <space> <asciitilde> : "~" asciitilde
+<Multi_key> <minus> <space> : "~" asciitilde
+<Multi_key> <space> <minus> : "~" asciitilde
+
+<Multi_key> <space> <space> : "\240" nobreakspace
+
+<Multi_key> <Cyrillic_ghe> <minus> : "\200" Cyrillic_ghe_bar
+<Multi_key> <Cyrillic_GHE> <minus> : "\220" Cyrillic_GHE_bar
+<Multi_key> <Cyrillic_zhe> <comma> : "\201" Cyrillic_zhe_descender
+<Multi_key> <Cyrillic_ZHE> <comma> : "\221" Cyrillic_ZHE_descender
+<Multi_key> <Cyrillic_ka> <comma> : "\202" Cyrillic_ka_descender
+<Multi_key> <Cyrillic_KA> <comma> : "\222" Cyrillic_KA_descender
+<Multi_key> <Cyrillic_ka> <slash> : "\203" Cyrillic_ka_vertstroke
+<Multi_key> <Cyrillic_KA> <slash> : "\223" Cyrillic_KA_vertstroke
+<Multi_key> <Cyrillic_ka> <bar> : "\203" Cyrillic_ka_vertstroke
+<Multi_key> <Cyrillic_KA> <bar> : "\223" Cyrillic_KA_vertstroke
+<Multi_key> <Cyrillic_en> <comma> : "\204" Cyrillic_en_descender
+<Multi_key> <Cyrillic_EN> <comma> : "\224" Cyrillic_EN_descender
+<Multi_key> <Cyrillic_u> <apostrophe> : "\205" Cyrillic_u_straight
+<Multi_key> <Cyrillic_U> <apostrophe> : "\225" Cyrillic_U_straight
+<Multi_key> <Cyrillic_u> <bar> : "\205" Cyrillic_u_straight
+<Multi_key> <Cyrillic_U> <bar> : "\225" Cyrillic_U_straight
+<Multi_key> <Cyrillic_u> <comma> : "\206" Cyrillic_u_straight_bar
+<Multi_key> <Cyrillic_U> <comma> : "\226" Cyrillic_U_straight_bat
+<Multi_key> <Cyrillic_u> <slash> : "\206" Cyrillic_u_straight_bar
+<Multi_key> <Cyrillic_U> <slash> : "\226" Cyrillic_U_straight_bat
+<Multi_key> <Cyrillic_ha> <comma> : "\207" Cyrillic_ha_descender
+<Multi_key> <Cyrillic_HA> <comma> : "\227" Cyrillic_HA_descender
+<Multi_key> <Cyrillic_che> <comma> : "\210" Cyrillic_che_descender
+<Multi_key> <Cyrillic_CHE> <comma> : "\230" Cyrillic_CHE_descender
+<Multi_key> <Cyrillic_che> <slash> : "\211" Cyrillic_che_vertstroke
+<Multi_key> <Cyrillic_CHE> <slash> : "\231" Cyrillic_CHE_vertstroke
+<Multi_key> <Cyrillic_che> <bar> : "\211" Cyrillic_che_vertstroke
+<Multi_key> <Cyrillic_CHE> <bar> : "\231" Cyrillic_CHE_vertstroke
+<Multi_key> <Cyrillic_ha> <apostrophe> : "\212" Cyrillic_shha
+<Multi_key> <Cyrillic_HA> <apostrophe> : "\232" Cyrillic_SHHA
+<Multi_key> <h> <apostrophe> : "\212" Cyrillic_shha
+<Multi_key> <H> <apostrophe> : "\232" Cyrillic_SHHA
+<Multi_key> <h> <h> : "\212" Cyrillic_shha
+<Multi_key> <H> <H> : "\232" Cyrillic_SHHA
+<Multi_key> <Cyrillic_ie> <Cyrillic_ie> : "\213" Cyrillic_schwa
+<Multi_key> <Cyrillic_IE> <Cyrillic_IE> : "\233" Cyrillic_SCHWA
+<Multi_key> <e> <e> : "\213" Cyrillic_schwa
+<Multi_key> <E> <E> : "\233" Cyrillic_SCHWA
+<Multi_key> <Cyrillic_i> <minus> : "\214" Cyrillic_i_macron
+<Multi_key> <Cyrillic_I> <minus> : "\234" Cyrillic_I_macron
+<Multi_key> <Cyrillic_o> <minus> : "\215" Cyrillic_o_bar
+<Multi_key> <Cyrillic_O> <minus> : "\235" Cyrillic_O_bar
+<Multi_key> <Cyrillic_u> <minus> : "\216" Cyrillic_u_macron
+<Multi_key> <Cyrillic_U> <minus> : "\236" Cyrillic_U_macron
+
+<Multi_key> <Cyrillic_de> <Cyrillic_je> : "\241" Serbian_dje
+<Multi_key> <Cyrillic_DE> <Cyrillic_JE> : "\261" Serbian_DJE
+<Multi_key> <Cyrillic_ghe> <Cyrillic_je> : "\242" Macedonia_gje
+<Multi_key> <Cyrillic_GHE> <Cyrillic_JE> : "\262" Macedonia_GJE
+<Multi_key> <Cyrillic_shorti> <Cyrillic_o> : "\243" Cyrillic_io
+<Multi_key> <Cyrillic_SHORTI> <Cyrillic_O> : "\263" Cyrillic_IO
+<Multi_key> <Cyrillic_je> <Cyrillic_o> : "\243" Cyrillic_io
+<Multi_key> <Cyrillic_JE> <Cyrillic_O> : "\263" Cyrillic_IO
+<Multi_key> <Cyrillic_ie> <colon> : "\243" Cyrillic_io
+<Multi_key> <Cyrillic_IE> <colon> : "\263" Cyrillic_IO
+
+<Multi_key> <Cyrillic_el> <Cyrillic_je> : "\251" Cyrillic_lje
+<Multi_key> <Cyrillic_EL> <Cyrillic_JE> : "\271" Cyrillic_LJE
+<Multi_key> <Cyrillic_en> <Cyrillic_je> : "\252" Cyrillic_nje
+<Multi_key> <Cyrillic_EN> <Cyrillic_JE> : "\272" Cyrillic_NJE
+
+<Multi_key> <Cyrillic_shorti> <Cyrillic_u> : "\300" Cyrillic_yu
+<Multi_key> <Cyrillic_SHORTI> <Cyrillic_U> : "\340" Cyrillic_YU
+<Multi_key> <Cyrillic_je> <Cyrillic_u> : "\300" Cyrillic_yu
+<Multi_key> <Cyrillic_JE> <Cyrillic_U> : "\340" Cyrillic_YU
+
+<Multi_key> <Cyrillic_te> <Cyrillic_es> : "\303" Cyrillic_tse
+<Multi_key> <Cyrillic_TE> <Cyrillic_ES> : "\343" Cyrillic_TSE
+
+<Multi_key> <Cyrillic_shorti> <Cyrillic_a> : "\321" Cyrillic_ya
+<Multi_key> <Cyrillic_SHORTI> <Cyrillic_A> : "\361" Cyrillic_YA
+<Multi_key> <Cyrillic_je> <Cyrillic_a> : "\321" Cyrillic_ya
+<Multi_key> <Cyrillic_JE> <Cyrillic_A> : "\361" Cyrillic_YA
+
+
+<Multi_key> <Cyrillic_sha> <comma> : "\335" Cyrillic_shcha
+<Multi_key> <Cyrillic_SHA> <comma> : "\375" Cyrillic_SHCHA
+
+
+
+XCOMM End of Sequence Definition
diff --git a/libX11/nls/koi8-c/XI18N_OBJS b/libX11/nls/koi8-c/XI18N_OBJS
index 3fed1f118..a6374f358 100644
--- a/libX11/nls/koi8-c/XI18N_OBJS
+++ b/libX11/nls/koi8-c/XI18N_OBJS
@@ -1,7 +1,7 @@
-# CATEGORY(XLC|XIM|OM) SHARED_LIBRARY_NAME FUNCTION_NAME
-#
-# XI18N objects table for koi8-c locale
-#
-XLC common/xlcDef _XlcDefaultLoader # XLC_open
-XIM common/ximcp _XimOpenIM _XimRegisterIMInstantiateCallback _XimUnRegisterIMInstantiateCallback # XIM_open XIM_register XIM_unregister
-XOM common/xomGeneric _XomGenericOpenOM # XOM_open
+# CATEGORY(XLC|XIM|OM) SHARED_LIBRARY_NAME FUNCTION_NAME
+#
+# XI18N objects table for koi8-c locale
+#
+XLC common/xlcDef _XlcDefaultLoader # XLC_open
+XIM common/ximcp _XimOpenIM _XimRegisterIMInstantiateCallback _XimUnRegisterIMInstantiateCallback # XIM_open XIM_register XIM_unregister
+XOM common/xomGeneric _XomGenericOpenOM # XOM_open
diff --git a/libX11/nls/koi8-c/XLC_LOCALE.pre b/libX11/nls/koi8-c/XLC_LOCALE.pre
index 85bbc0923..68cd02f3b 100644
--- a/libX11/nls/koi8-c/XLC_LOCALE.pre
+++ b/libX11/nls/koi8-c/XLC_LOCALE.pre
@@ -1,79 +1,79 @@
-XCOMM XLocale Database Sample for koi8-c.
-XCOMM
-
-XCOMM
-XCOMM XLC_FONTSET category
-XCOMM
-XLC_FONTSET
-XCOMM fs0 class (7 bit ASCII)
-fs0 {
- charset {
- name ISO8859-1:GL
- }
- font {
- primary KOI8-C:GL
- substitute ISO8859-1:GL
- }
-}
-XCOMM fs1 class
-fs1 {
- charset KOI8-C:GR
- font KOI8-C:GR
-}
-END XLC_FONTSET
-
-XCOMM
-XCOMM XLC_CHARSET_DEFINE category
-XCOMM
-XLC_CHARSET_DEFINE
-csd0 {
- charset_name KOI8-C
- side GR
- length 1
- string_encoding False
- sequence \x1b%/1
-}
-END XLC_CHARSET_DEFINE
-
-XCOMM
-XCOMM XLC_XLOCALE category
-XCOMM
-XLC_XLOCALE
-
-encoding_name KOI8-C
-mb_cur_max 1
-state_depend_encoding False
-#if WCHAR32
-wc_encoding_mask \x30000000
-wc_shift_bits 7
-#else
-wc_encoding_mask \x00008080
-wc_shift_bits 8
-#endif
-
-#ifndef X_LOCALE
-use_stdc_env True
-#endif
-
-XCOMM cs0 class
-cs0 {
- side GL:Default
- length 1
- wc_encoding \x00000000
- ct_encoding KOI8-C:GL; ISO8859-1:GL
-}
-
-
-XCOMM cs1 class
-cs1 {
- side GR:Default
- length 1
-#if WCHAR32
- wc_encoding \x30000000
-#else
- wc_encoding \x00008080
-#endif
- ct_encoding KOI8-C:GR
-}
-
-END XLC_XLOCALE
+XCOMM XLocale Database Sample for koi8-c.
+XCOMM
+
+XCOMM
+XCOMM XLC_FONTSET category
+XCOMM
+XLC_FONTSET
+XCOMM fs0 class (7 bit ASCII)
+fs0 {
+ charset {
+ name ISO8859-1:GL
+ }
+ font {
+ primary KOI8-C:GL
+ substitute ISO8859-1:GL
+ }
+}
+XCOMM fs1 class
+fs1 {
+ charset KOI8-C:GR
+ font KOI8-C:GR
+}
+END XLC_FONTSET
+
+XCOMM
+XCOMM XLC_CHARSET_DEFINE category
+XCOMM
+XLC_CHARSET_DEFINE
+csd0 {
+ charset_name KOI8-C
+ side GR
+ length 1
+ string_encoding False
+ sequence \x1b%/1
+}
+END XLC_CHARSET_DEFINE
+
+XCOMM
+XCOMM XLC_XLOCALE category
+XCOMM
+XLC_XLOCALE
+
+encoding_name KOI8-C
+mb_cur_max 1
+state_depend_encoding False
+#if WCHAR32
+wc_encoding_mask \x30000000
+wc_shift_bits 7
+#else
+wc_encoding_mask \x00008080
+wc_shift_bits 8
+#endif
+
+#ifndef X_LOCALE
+use_stdc_env True
+#endif
+
+XCOMM cs0 class
+cs0 {
+ side GL:Default
+ length 1
+ wc_encoding \x00000000
+ ct_encoding KOI8-C:GL; ISO8859-1:GL
+}
+
+
+XCOMM cs1 class
+cs1 {
+ side GR:Default
+ length 1
+#if WCHAR32
+ wc_encoding \x30000000
+#else
+ wc_encoding \x00008080
+#endif
+ ct_encoding KOI8-C:GR
+}
+
+END XLC_XLOCALE
diff --git a/libX11/nls/koi8-r/Compose.pre b/libX11/nls/koi8-r/Compose.pre
index 3b9081b9b..d44893e64 100644
--- a/libX11/nls/koi8-r/Compose.pre
+++ b/libX11/nls/koi8-r/Compose.pre
@@ -1,14 +1,14 @@
-XCOMM
-XCOMM koi8-r Compose Sequence
-XCOMM
-XCOMM Sequence Definition
-XCOMM
-XCOMM
-XCOMM This file currently has no entries. It appears that a compose file (even
-XCOMM just an empty one) is required for the appropriate keysyms to work for
-XCOMM this encoding.
-XCOMM
-XCOMM <Multi_key> Means <Compose>
-XCOMM Special Character
-
-XCOMM End of Sequence Definition
+XCOMM
+XCOMM koi8-r Compose Sequence
+XCOMM
+XCOMM Sequence Definition
+XCOMM
+XCOMM
+XCOMM This file currently has no entries. It appears that a compose file (even
+XCOMM just an empty one) is required for the appropriate keysyms to work for
+XCOMM this encoding.
+XCOMM
+XCOMM <Multi_key> Means <Compose>
+XCOMM Special Character
+
+XCOMM End of Sequence Definition
diff --git a/libX11/nls/koi8-r/XI18N_OBJS b/libX11/nls/koi8-r/XI18N_OBJS
index 9833d6283..b704fec52 100644
--- a/libX11/nls/koi8-r/XI18N_OBJS
+++ b/libX11/nls/koi8-r/XI18N_OBJS
@@ -1,7 +1,7 @@
-# CATEGORY(XLC|XIM|OM) SHARED_LIBRARY_NAME FUNCTION_NAME
-#
-# XI18N objects table for koi8-r locale
-#
-XLC common/xlcDef _XlcDefaultLoader # XLC_open
-XIM common/ximcp _XimOpenIM _XimRegisterIMInstantiateCallback _XimUnRegisterIMInstantiateCallback # XIM_open XIM_register XIM_unregister
-XOM common/xomGeneric _XomGenericOpenOM # XOM_open
+# CATEGORY(XLC|XIM|OM) SHARED_LIBRARY_NAME FUNCTION_NAME
+#
+# XI18N objects table for koi8-r locale
+#
+XLC common/xlcDef _XlcDefaultLoader # XLC_open
+XIM common/ximcp _XimOpenIM _XimRegisterIMInstantiateCallback _XimUnRegisterIMInstantiateCallback # XIM_open XIM_register XIM_unregister
+XOM common/xomGeneric _XomGenericOpenOM # XOM_open
diff --git a/libX11/nls/koi8-r/XLC_LOCALE.pre b/libX11/nls/koi8-r/XLC_LOCALE.pre
index 12090506e..cda283e5d 100644
--- a/libX11/nls/koi8-r/XLC_LOCALE.pre
+++ b/libX11/nls/koi8-r/XLC_LOCALE.pre
@@ -1,80 +1,80 @@
-XCOMM XLocale Database Sample for koi8-r.
-XCOMM
-XCOMM
-
-XCOMM
-XCOMM XLC_FONTSET category
-XCOMM
-XLC_FONTSET
-XCOMM fs0 class (7 bit ASCII)
-fs0 {
- charset {
- name ISO8859-1:GL
- }
- font {
- primary KOI8-R:GL
- substitute ISO8859-1:GL
- }
-}
-XCOMM fs1 class
-fs1 {
- charset KOI8-R:GR
- font KOI8-R:GR
-}
-END XLC_FONTSET
-
-XCOMM
-XCOMM XLC_CHARSET_DEFINE category
-XCOMM
-XLC_CHARSET_DEFINE
-csd0 {
- charset_name KOI8-R
- side GR
- length 1
- string_encoding False
- sequence \x1b%/1
-}
-END XLC_CHARSET_DEFINE
-
-XCOMM
-XCOMM XLC_XLOCALE category
-XCOMM
-XLC_XLOCALE
-
-encoding_name KOI8-R
-mb_cur_max 1
-state_depend_encoding False
-#if WCHAR32
-wc_encoding_mask \x30000000
-wc_shift_bits 7
-#else
-wc_encoding_mask \x00008080
-wc_shift_bits 8
-#endif
-
-#ifndef X_LOCALE
-use_stdc_env True
-#endif
-
-XCOMM cs0 class
-cs0 {
- side GL:Default
- length 1
- wc_encoding \x00000000
- ct_encoding KOI8-R:GL; ISO8859-1:GL
-}
-
-
-XCOMM cs1 class
-cs1 {
- side GR:Default
- length 1
-#if WCHAR32
- wc_encoding \x30000000
-#else
- wc_encoding \x00008080
-#endif
- ct_encoding KOI8-R:GR
-}
-
-END XLC_XLOCALE
+XCOMM XLocale Database Sample for koi8-r.
+XCOMM
+XCOMM
+
+XCOMM
+XCOMM XLC_FONTSET category
+XCOMM
+XLC_FONTSET
+XCOMM fs0 class (7 bit ASCII)
+fs0 {
+ charset {
+ name ISO8859-1:GL
+ }
+ font {
+ primary KOI8-R:GL
+ substitute ISO8859-1:GL
+ }
+}
+XCOMM fs1 class
+fs1 {
+ charset KOI8-R:GR
+ font KOI8-R:GR
+}
+END XLC_FONTSET
+
+XCOMM
+XCOMM XLC_CHARSET_DEFINE category
+XCOMM
+XLC_CHARSET_DEFINE
+csd0 {
+ charset_name KOI8-R
+ side GR
+ length 1
+ string_encoding False
+ sequence \x1b%/1
+}
+END XLC_CHARSET_DEFINE
+
+XCOMM
+XCOMM XLC_XLOCALE category
+XCOMM
+XLC_XLOCALE
+
+encoding_name KOI8-R
+mb_cur_max 1
+state_depend_encoding False
+#if WCHAR32
+wc_encoding_mask \x30000000
+wc_shift_bits 7
+#else
+wc_encoding_mask \x00008080
+wc_shift_bits 8
+#endif
+
+#ifndef X_LOCALE
+use_stdc_env True
+#endif
+
+XCOMM cs0 class
+cs0 {
+ side GL:Default
+ length 1
+ wc_encoding \x00000000
+ ct_encoding KOI8-R:GL; ISO8859-1:GL
+}
+
+
+XCOMM cs1 class
+cs1 {
+ side GR:Default
+ length 1
+#if WCHAR32
+ wc_encoding \x30000000
+#else
+ wc_encoding \x00008080
+#endif
+ ct_encoding KOI8-R:GR
+}
+
+END XLC_XLOCALE
diff --git a/libX11/nls/koi8-u/Compose.pre b/libX11/nls/koi8-u/Compose.pre
index e06b12b48..fab51ed91 100644
--- a/libX11/nls/koi8-u/Compose.pre
+++ b/libX11/nls/koi8-u/Compose.pre
@@ -1,14 +1,14 @@
-XCOMM
-XCOMM koi8-u Compose Sequence
-XCOMM
-XCOMM Sequence Definition
-XCOMM
-XCOMM
-XCOMM This file currently has no entries. It appears that a compose file (even
-XCOMM just an empty one) is required for the appropriate keysyms to work for
-XCOMM this encoding.
-XCOMM
-XCOMM <Multi_key> Means <Compose>
-XCOMM Special Character
-
-XCOMM End of Sequence Definition
+XCOMM
+XCOMM koi8-u Compose Sequence
+XCOMM
+XCOMM Sequence Definition
+XCOMM
+XCOMM
+XCOMM This file currently has no entries. It appears that a compose file (even
+XCOMM just an empty one) is required for the appropriate keysyms to work for
+XCOMM this encoding.
+XCOMM
+XCOMM <Multi_key> Means <Compose>
+XCOMM Special Character
+
+XCOMM End of Sequence Definition
diff --git a/libX11/nls/koi8-u/XI18N_OBJS b/libX11/nls/koi8-u/XI18N_OBJS
index 1cb6b359b..dd2c992f1 100644
--- a/libX11/nls/koi8-u/XI18N_OBJS
+++ b/libX11/nls/koi8-u/XI18N_OBJS
@@ -1,7 +1,7 @@
-# CATEGORY(XLC|XIM|OM) SHARED_LIBRARY_NAME FUNCTION_NAME
-#
-# XI18N objects table for koi8-u locale
-#
-XLC common/xlcDef _XlcDefaultLoader # XLC_open
-XIM common/ximcp _XimOpenIM _XimRegisterIMInstantiateCallback _XimUnRegisterIMInstantiateCallback # XIM_open XIM_register XIM_unregister
-XOM common/xomGeneric _XomGenericOpenOM # XOM_open
+# CATEGORY(XLC|XIM|OM) SHARED_LIBRARY_NAME FUNCTION_NAME
+#
+# XI18N objects table for koi8-u locale
+#
+XLC common/xlcDef _XlcDefaultLoader # XLC_open
+XIM common/ximcp _XimOpenIM _XimRegisterIMInstantiateCallback _XimUnRegisterIMInstantiateCallback # XIM_open XIM_register XIM_unregister
+XOM common/xomGeneric _XomGenericOpenOM # XOM_open
diff --git a/libX11/nls/koi8-u/XLC_LOCALE.pre b/libX11/nls/koi8-u/XLC_LOCALE.pre
index a0c01560e..860438ad6 100644
--- a/libX11/nls/koi8-u/XLC_LOCALE.pre
+++ b/libX11/nls/koi8-u/XLC_LOCALE.pre
@@ -1,79 +1,79 @@
-XCOMM XLocale Database Sample for koi8-u.
-XCOMM
-
-XCOMM
-XCOMM XLC_FONTSET category
-XCOMM
-XLC_FONTSET
-XCOMM fs0 class (7 bit ASCII)
-fs0 {
- charset {
- name ISO8859-1:GL
- }
- font {
- primary KOI8-U:GL
- substitute ISO8859-1:GL
- }
-}
-XCOMM fs1 class
-fs1 {
- charset KOI8-U:GR
- font KOI8-U:GR
-}
-END XLC_FONTSET
-
-XCOMM
-XCOMM XLC_CHARSET_DEFINE category
-XCOMM
-XLC_CHARSET_DEFINE
-csd0 {
- charset_name KOI8-U
- side GR
- length 1
- string_encoding False
- sequence \x1b%/1
-}
-END XLC_CHARSET_DEFINE
-
-XCOMM
-XCOMM XLC_XLOCALE category
-XCOMM
-XLC_XLOCALE
-
-encoding_name KOI8-U
-mb_cur_max 1
-state_depend_encoding False
-#if WCHAR32
-wc_encoding_mask \x30000000
-wc_shift_bits 7
-#else
-wc_encoding_mask \x00008080
-wc_shift_bits 8
-#endif
-
-#ifndef X_LOCALE
-use_stdc_env True
-#endif
-
-XCOMM cs0 class
-cs0 {
- side GL:Default
- length 1
- wc_encoding \x00000000
- ct_encoding KOI8-U:GL; ISO8859-1:GL
-}
-
-
-XCOMM cs1 class
-cs1 {
- side GR:Default
- length 1
-#if WCHAR32
- wc_encoding \x30000000
-#else
- wc_encoding \x00008080
-#endif
- ct_encoding KOI8-U:GR
-}
-
-END XLC_XLOCALE
+XCOMM XLocale Database Sample for koi8-u.
+XCOMM
+
+XCOMM
+XCOMM XLC_FONTSET category
+XCOMM
+XLC_FONTSET
+XCOMM fs0 class (7 bit ASCII)
+fs0 {
+ charset {
+ name ISO8859-1:GL
+ }
+ font {
+ primary KOI8-U:GL
+ substitute ISO8859-1:GL
+ }
+}
+XCOMM fs1 class
+fs1 {
+ charset KOI8-U:GR
+ font KOI8-U:GR
+}
+END XLC_FONTSET
+
+XCOMM
+XCOMM XLC_CHARSET_DEFINE category
+XCOMM
+XLC_CHARSET_DEFINE
+csd0 {
+ charset_name KOI8-U
+ side GR
+ length 1
+ string_encoding False
+ sequence \x1b%/1
+}
+END XLC_CHARSET_DEFINE
+
+XCOMM
+XCOMM XLC_XLOCALE category
+XCOMM
+XLC_XLOCALE
+
+encoding_name KOI8-U
+mb_cur_max 1
+state_depend_encoding False
+#if WCHAR32
+wc_encoding_mask \x30000000
+wc_shift_bits 7
+#else
+wc_encoding_mask \x00008080
+wc_shift_bits 8
+#endif
+
+#ifndef X_LOCALE
+use_stdc_env True
+#endif
+
+XCOMM cs0 class
+cs0 {
+ side GL:Default
+ length 1
+ wc_encoding \x00000000
+ ct_encoding KOI8-U:GL; ISO8859-1:GL
+}
+
+
+XCOMM cs1 class
+cs1 {
+ side GR:Default
+ length 1
+#if WCHAR32
+ wc_encoding \x30000000
+#else
+ wc_encoding \x00008080
+#endif
+ ct_encoding KOI8-U:GR
+}
+
+END XLC_XLOCALE
diff --git a/libX11/nls/locale.dir.pre b/libX11/nls/locale.dir.pre
index bc49f2c8c..e0d9ef7ef 100644
--- a/libX11/nls/locale.dir.pre
+++ b/libX11/nls/locale.dir.pre
@@ -1,451 +1,451 @@
-XCOMM
-XCOMM This file contains locale database file names
-XCOMM The first word is the locale database file name and
-XCOMM the second word is the full locale name.
-XCOMM
-XCOMM
-
-C/XLC_LOCALE: C
-iso8859-1/XLC_LOCALE: af_ZA.ISO8859-1
-iso8859-6/XLC_LOCALE: ar_AA.ISO8859-6
-iso8859-6/XLC_LOCALE: ar_BH.ISO8859-6
-iso8859-6/XLC_LOCALE: ar_DZ.ISO8859-6
-iso8859-6/XLC_LOCALE: ar_EG.ISO8859-6
-iso8859-6/XLC_LOCALE: ar_IQ.ISO8859-6
-iso8859-6/XLC_LOCALE: ar_JO.ISO8859-6
-iso8859-6/XLC_LOCALE: ar_KW.ISO8859-6
-iso8859-6/XLC_LOCALE: ar_LB.ISO8859-6
-iso8859-6/XLC_LOCALE: ar_LY.ISO8859-6
-iso8859-6/XLC_LOCALE: ar_MA.ISO8859-6
-iso8859-6/XLC_LOCALE: ar_OM.ISO8859-6
-iso8859-6/XLC_LOCALE: ar_QA.ISO8859-6
-iso8859-6/XLC_LOCALE: ar_SA.ISO8859-6
-iso8859-6/XLC_LOCALE: ar_SD.ISO8859-6
-iso8859-6/XLC_LOCALE: ar_SY.ISO8859-6
-iso8859-6/XLC_LOCALE: ar_TN.ISO8859-6
-iso8859-6/XLC_LOCALE: ar_YE.ISO8859-6
-iso8859-9e/XLC_LOCALE: az_AZ.ISO8859-9E
-koi8-c/XLC_LOCALE: az_AZ.KOI8-C
-iso8859-5/XLC_LOCALE: be_BY.ISO8859-5
-microsoft-cp1251/XLC_LOCALE: be_BY.CP1251
-iso8859-5/XLC_LOCALE: bg_BG.ISO8859-5
-microsoft-cp1251/XLC_LOCALE: bg_BG.CP1251
-koi8-r/XLC_LOCALE: bg_BG.KOI8-R
-iso8859-2/XLC_LOCALE: bs_BA.ISO8859-2
-iso8859-1/XLC_LOCALE: br_FR.ISO8859-1
-iso8859-14/XLC_LOCALE: br_FR.ISO8859-14
-iso8859-15/XLC_LOCALE: br_FR.ISO8859-15
-iso8859-1/XLC_LOCALE: ca_AD.ISO8859-1
-iso8859-15/XLC_LOCALE: ca_AD.ISO8859-15
-iso8859-1/XLC_LOCALE: ca_ES.ISO8859-1
-iso8859-15/XLC_LOCALE: ca_ES.ISO8859-15
-iso8859-1/XLC_LOCALE: ca_FR.ISO8859-1
-iso8859-15/XLC_LOCALE: ca_FR.ISO8859-15
-iso8859-1/XLC_LOCALE: ca_IT.ISO8859-1
-iso8859-15/XLC_LOCALE: ca_IT.ISO8859-15
-iso8859-2/XLC_LOCALE: cs_CZ.ISO8859-2
-iso8859-1/XLC_LOCALE: cy_GB.ISO8859-1
-iso8859-14/XLC_LOCALE: cy_GB.ISO8859-14
-iso8859-15/XLC_LOCALE: cy_GB.ISO8859-15
-iso8859-2/XLC_LOCALE: cz_CZ.ISO8859-2
-iso8859-1/XLC_LOCALE: da_DK.ISO8859-1
-iso8859-15/XLC_LOCALE: da_DK.ISO8859-15
-iso8859-1/XLC_LOCALE: de_AT.ISO8859-1
-iso8859-15/XLC_LOCALE: de_AT.ISO8859-15
-iso8859-1/XLC_LOCALE: de_BE.ISO8859-1
-iso8859-15/XLC_LOCALE: de_BE.ISO8859-15
-iso8859-1/XLC_LOCALE: de_CH.ISO8859-1
-iso8859-15/XLC_LOCALE: de_CH.ISO8859-15
-iso8859-1/XLC_LOCALE: de_DE.ISO8859-1
-iso8859-15/XLC_LOCALE: de_DE.ISO8859-15
-iso8859-1/XLC_LOCALE: de_LI.ISO8859-1
-iso8859-1/XLC_LOCALE: de_LU.ISO8859-1
-iso8859-15/XLC_LOCALE: de_LU.ISO8859-15
-iso8859-7/XLC_LOCALE: el_GR.ISO8859-7
-iso8859-15/XLC_LOCALE: el_GR.ISO8859-15
-iso8859-1/XLC_LOCALE: en_AU.ISO8859-1
-iso8859-1/XLC_LOCALE: en_BE.ISO8859-1
-iso8859-1/XLC_LOCALE: en_BZ.ISO8859-1
-iso8859-1/XLC_LOCALE: en_BW.ISO8859-1
-iso8859-1/XLC_LOCALE: en_CA.ISO8859-1
-iso8859-1/XLC_LOCALE: en_GB.ISO8859-1
-iso8859-15/XLC_LOCALE: en_GB.ISO8859-15
-iso8859-1/XLC_LOCALE: en_HK.ISO8859-1
-iso8859-1/XLC_LOCALE: en_IE.ISO8859-1
-iso8859-15/XLC_LOCALE: en_IE.ISO8859-15
-iso8859-15/XLC_LOCALE: en_IN.ISO8859-15
-iso8859-1/XLC_LOCALE: en_JM.ISO8859-1
-iso8859-1/XLC_LOCALE: en_NZ.ISO8859-1
-iso8859-1/XLC_LOCALE: en_PH.ISO8859-1
-iso8859-1/XLC_LOCALE: en_SG.ISO8859-1
-iso8859-1/XLC_LOCALE: en_TT.ISO8859-1
-iso8859-1/XLC_LOCALE: en_UK.ISO8859-1
-iso8859-15/XLC_LOCALE: en_UK.ISO8859-15
-iso8859-1/XLC_LOCALE: en_US.ISO8859-1
-iso8859-15/XLC_LOCALE: en_US.ISO8859-15
-iso8859-1/XLC_LOCALE: en_ZA.ISO8859-1
-iso8859-15/XLC_LOCALE: en_ZA.ISO8859-15
-iso8859-3/XLC_LOCALE: eo_EO.ISO8859-3
-iso8859-3/XLC_LOCALE: eo_XX.ISO8859-3
-iso8859-1/XLC_LOCALE: es_AR.ISO8859-1
-iso8859-1/XLC_LOCALE: es_BO.ISO8859-1
-iso8859-1/XLC_LOCALE: es_CL.ISO8859-1
-iso8859-1/XLC_LOCALE: es_CO.ISO8859-1
-iso8859-1/XLC_LOCALE: es_CR.ISO8859-1
-iso8859-1/XLC_LOCALE: es_DO.ISO8859-1
-iso8859-1/XLC_LOCALE: es_EC.ISO8859-1
-iso8859-1/XLC_LOCALE: es_ES.ISO8859-1
-iso8859-15/XLC_LOCALE: es_ES.ISO8859-15
-iso8859-1/XLC_LOCALE: es_GT.ISO8859-1
-iso8859-1/XLC_LOCALE: es_HN.ISO8859-1
-iso8859-1/XLC_LOCALE: es_MX.ISO8859-1
-iso8859-1/XLC_LOCALE: es_NI.ISO8859-1
-iso8859-1/XLC_LOCALE: es_PA.ISO8859-1
-iso8859-1/XLC_LOCALE: es_PE.ISO8859-1
-iso8859-1/XLC_LOCALE: es_PR.ISO8859-1
-iso8859-1/XLC_LOCALE: es_PY.ISO8859-1
-iso8859-1/XLC_LOCALE: es_SV.ISO8859-1
-iso8859-1/XLC_LOCALE: es_US.ISO8859-1
-iso8859-1/XLC_LOCALE: es_UY.ISO8859-1
-iso8859-1/XLC_LOCALE: es_VE.ISO8859-1
-iso8859-1/XLC_LOCALE: et_EE.ISO8859-1
-iso8859-4/XLC_LOCALE: et_EE.ISO8859-4
-iso8859-13/XLC_LOCALE: et_EE.ISO8859-13
-iso8859-15/XLC_LOCALE: et_EE.ISO8859-15
-iso8859-1/XLC_LOCALE: eu_ES.ISO8859-1
-iso8859-15/XLC_LOCALE: eu_ES.ISO8859-15
-isiri-3342/XLC_LOCALE: fa_IR.ISIRI-3342
-iso8859-1/XLC_LOCALE: fi_FI.ISO8859-1
-iso8859-15/XLC_LOCALE: fi_FI.ISO8859-15
-iso8859-1/XLC_LOCALE: fo_FO.ISO8859-1
-iso8859-15/XLC_LOCALE: fo_FO.ISO8859-15
-iso8859-1/XLC_LOCALE: fr_BE.ISO8859-1
-iso8859-15/XLC_LOCALE: fr_BE.ISO8859-15
-iso8859-1/XLC_LOCALE: fr_CA.ISO8859-1
-iso8859-15/XLC_LOCALE: fr_CA.ISO8859-15
-iso8859-1/XLC_LOCALE: fr_CH.ISO8859-1
-iso8859-15/XLC_LOCALE: fr_CH.ISO8859-15
-iso8859-1/XLC_LOCALE: fr_FR.ISO8859-1
-iso8859-15/XLC_LOCALE: fr_FR.ISO8859-15
-iso8859-1/XLC_LOCALE: fr_LU.ISO8859-1
-iso8859-15/XLC_LOCALE: fr_LU.ISO8859-15
-iso8859-1/XLC_LOCALE: ga_IE.ISO8859-1
-iso8859-14/XLC_LOCALE: ga_IE.ISO8859-14
-iso8859-15/XLC_LOCALE: ga_IE.ISO8859-15
-iso8859-1/XLC_LOCALE: gd_GB.ISO8859-1
-iso8859-14/XLC_LOCALE: gd_GB.ISO8859-14
-iso8859-15/XLC_LOCALE: gd_GB.ISO8859-15
-iso8859-1/XLC_LOCALE: gl_ES.ISO8859-1
-iso8859-15/XLC_LOCALE: gl_ES.ISO8859-15
-iso8859-1/XLC_LOCALE: gv_GB.ISO8859-1
-iso8859-14/XLC_LOCALE: gv_GB.ISO8859-14
-iso8859-15/XLC_LOCALE: gv_GB.ISO8859-15
-iso8859-8/XLC_LOCALE: he_IL.ISO8859-8
-microsoft-cp1255/XLC_LOCALE: he_IL.CP1255
-iscii-dev/XLC_LOCALE: hi_IN.ISCII-DEV
-iso8859-2/XLC_LOCALE: hr_HR.ISO8859-2
-iso8859-2/XLC_LOCALE: hu_HU.ISO8859-2
-armscii-8/XLC_LOCALE: hy_AM.ARMSCII-8
-iso8859-1/XLC_LOCALE: id_ID.ISO8859-1
-iso8859-1/XLC_LOCALE: is_IS.ISO8859-1
-iso8859-15/XLC_LOCALE: is_IS.ISO8859-15
-iso8859-1/XLC_LOCALE: it_CH.ISO8859-1
-iso8859-1/XLC_LOCALE: it_IT.ISO8859-1
-iso8859-15/XLC_LOCALE: it_IT.ISO8859-15
-ja/XLC_LOCALE: ja_JP.eucJP
-ja.SJIS/XLC_LOCALE: ja_JP.SJIS
-ja.JIS/XLC_LOCALE: ja_JP.JIS7
-georgian-academy/XLC_LOCALE: ka_GE.GEORGIAN-ACADEMY
-georgian-ps/XLC_LOCALE: ka_GE.GEORGIAN-PS
-iso8859-1/XLC_LOCALE: kl_GL.ISO8859-1
-ko/XLC_LOCALE: ko_KR.eucKR
-iso8859-1/XLC_LOCALE: kw_GB.ISO8859-1
-iso8859-14/XLC_LOCALE: kw_GB.ISO8859-14
-iso8859-15/XLC_LOCALE: kw_GB.ISO8859-15
-ibm-cp1133/XLC_LOCALE: lo_LA.IBM-CP1133
-mulelao-1/XLC_LOCALE: lo_LA.MULELAO-1
-iso8859-4/XLC_LOCALE: lt_LT.ISO8859-4
-iso8859-13/XLC_LOCALE: lt_LT.ISO8859-13
-iso8859-4/XLC_LOCALE: lv_LV.ISO8859-4
-iso8859-13/XLC_LOCALE: lv_LV.ISO8859-13
-iso8859-13/XLC_LOCALE: mi_NZ.ISO8859-13
-iso8859-5/XLC_LOCALE: mk_MK.ISO8859-5
-microsoft-cp1251/XLC_LOCALE: mk_MK.CP1251
-iso8859-1/XLC_LOCALE: ms_MY.ISO8859-1
-iso8859-3/XLC_LOCALE: mt_MT.ISO8859-3
-iso8859-1/XLC_LOCALE: nb_NO.ISO8859-1
-iso8859-1/XLC_LOCALE: nb_NO.ISO8859-15
-iso8859-1/XLC_LOCALE: nl_BE.ISO8859-1
-iso8859-15/XLC_LOCALE: nl_BE.ISO8859-15
-iso8859-1/XLC_LOCALE: nl_NL.ISO8859-1
-iso8859-15/XLC_LOCALE: nl_NL.ISO8859-15
-iso8859-1/XLC_LOCALE: nn_NO.ISO8859-1
-iso8859-1/XLC_LOCALE: nn_NO.ISO8859-15
-iso8859-1/XLC_LOCALE: no_NO.ISO8859-1
-iso8859-1/XLC_LOCALE: no_NO.ISO8859-15
-iso8859-1/XLC_LOCALE: nr_ZA.ISO8859-1
-iso8859-15/XLC_LOCALE: nso_ZA.ISO8859-15
-iso8859-1/XLC_LOCALE: ny_NO.ISO8859-1
-iso8859-1/XLC_LOCALE: ny_NO.ISO8859-15
-iso8859-1/XLC_LOCALE: oc_FR.ISO8859-1
-iso8859-15/XLC_LOCALE: oc_FR.ISO8859-15
-iso8859-1/XLC_LOCALE: pd_DE.ISO8859-1
-iso8859-1/XLC_LOCALE: ph_PH.ISO8859-1
-iso8859-2/XLC_LOCALE: pl_PL.ISO8859-2
-iso8859-1/XLC_LOCALE: pp_AN.ISO8859-1
-iso8859-1/XLC_LOCALE: pt_BR.ISO8859-1
-iso8859-1/XLC_LOCALE: pt_PT.ISO8859-1
-iso8859-15/XLC_LOCALE: pt_PT.ISO8859-15
-iso8859-2/XLC_LOCALE: ro_RO.ISO8859-2
-iso8859-5/XLC_LOCALE: ru_RU.ISO8859-5
-microsoft-cp1251/XLC_LOCALE: ru_RU.CP1251
-koi8-r/XLC_LOCALE: ru_RU.KOI8-R
-koi8-u/XLC_LOCALE: ru_UA.KOI8-U
-iso8859-1/XLC_LOCALE: rw_RW.ISO8859-1
-iso8859-2/XLC_LOCALE: sh_YU.ISO8859-2
-iso8859-2/XLC_LOCALE: sk_SK.ISO8859-2
-iso8859-2/XLC_LOCALE: sl_SI.ISO8859-2
-iso8859-2/XLC_LOCALE: sq_AL.ISO8859-2
-iso8859-2/XLC_LOCALE: sr_CS.ISO8859-2
-iso8859-5/XLC_LOCALE: sr_CS.ISO8859-5
-iso8859-2/XLC_LOCALE: sr_YU.ISO8859-2
-iso8859-5/XLC_LOCALE: sr_YU.ISO8859-5
-microsoft-cp1251/XLC_LOCALE: sr_YU.CP1251
-iso8859-1/XLC_LOCALE: ss_ZA.ISO8859-1
-iso8859-1/XLC_LOCALE: st_ZA.ISO8859-1
-iso8859-1/XLC_LOCALE: sv_FI.ISO8859-1
-iso8859-15/XLC_LOCALE: sv_FI.ISO8859-15
-iso8859-1/XLC_LOCALE: sv_SE.ISO8859-1
-iso8859-15/XLC_LOCALE: sv_SE.ISO8859-15
-tscii-0/XLC_LOCALE: ta_IN.TSCII-0
-koi8-c/XLC_LOCALE: tg_TJ.KOI8-C
-th_TH/XLC_LOCALE: th_TH.TIS620
-iso8859-11/XLC_LOCALE: th_TH.ISO8859-11
-iso8859-1/XLC_LOCALE: tl_PH.ISO8859-1
-iso8859-15/XLC_LOCALE: tn_ZA.ISO8859-15
-iso8859-9/XLC_LOCALE: tr_TR.ISO8859-9
-iso8859-1/XLC_LOCALE: ts_ZA.ISO8859-1
-tatar-cyr/XLC_LOCALE: tt_RU.TATAR-CYR
-koi8-c/XLC_LOCALE: tt_RU.KOI8-C
-iso8859-5/XLC_LOCALE: uk_UA.ISO8859-5
-microsoft-cp1251/XLC_LOCALE: uk_UA.CP1251
-koi8-u/XLC_LOCALE: uk_UA.KOI8-U
-microsoft-cp1256/XLC_LOCALE: ur_PK.CP1256
-vi_VN.tcvn/XLC_LOCALE: vi_VN.TCVN
-vi_VN.viscii/XLC_LOCALE: vi_VN.VISCII
-iso8859-1/XLC_LOCALE: wa_BE.ISO8859-1
-iso8859-15/XLC_LOCALE: wa_BE.ISO8859-15
-iso8859-1/XLC_LOCALE: xh_ZA.ISO8859-1
-microsoft-cp1255/XLC_LOCALE: yi_US.CP1255
-zh_CN/XLC_LOCALE: zh_CN.eucCN
-zh_CN/XLC_LOCALE: zh_CN.gb2312
-zh_CN.gbk/XLC_LOCALE: zh_CN.gbk
-zh_CN.gb18030/XLC_LOCALE: zh_CN.gb18030
-zh_HK.big5/XLC_LOCALE: zh_HK.big5
-zh_HK.big5hkscs/XLC_LOCALE: zh_HK.big5-hkscs
-zh_HK.big5hkscs/XLC_LOCALE: zh_HK.Big5-HKSCS
-zh_HK.big5hkscs/XLC_LOCALE: zh_HK.big5hkscs
-zh_HK.big5hkscs/XLC_LOCALE: zh_HK.Big5HKSCS
-zh_TW.big5/XLC_LOCALE: zh_TW.big5
-zh_TW/XLC_LOCALE: zh_TW.eucTW
-iso8859-1/XLC_LOCALE: zu_ZA.ISO8859-1
-XCOMM Note: The UTF-8 locales don't work correctly yet. Work in progress.
-en_US.UTF-8/XLC_LOCALE: af_ZA.UTF-8
-en_US.UTF-8/XLC_LOCALE: am_ET.UTF-8
-en_US.UTF-8/XLC_LOCALE: ar_AA.UTF-8
-en_US.UTF-8/XLC_LOCALE: ar_AE.UTF-8
-en_US.UTF-8/XLC_LOCALE: ar_BH.UTF-8
-en_US.UTF-8/XLC_LOCALE: ar_DZ.UTF-8
-en_US.UTF-8/XLC_LOCALE: ar_EG.UTF-8
-en_US.UTF-8/XLC_LOCALE: ar_IN.UTF-8
-en_US.UTF-8/XLC_LOCALE: ar_IQ.UTF-8
-en_US.UTF-8/XLC_LOCALE: ar_JO.UTF-8
-en_US.UTF-8/XLC_LOCALE: ar_KW.UTF-8
-en_US.UTF-8/XLC_LOCALE: ar_LB.UTF-8
-en_US.UTF-8/XLC_LOCALE: ar_LY.UTF-8
-en_US.UTF-8/XLC_LOCALE: ar_MA.UTF-8
-en_US.UTF-8/XLC_LOCALE: ar_OM.UTF-8
-en_US.UTF-8/XLC_LOCALE: bs_BA.UTF-8
-en_US.UTF-8/XLC_LOCALE: ar_QA.UTF-8
-en_US.UTF-8/XLC_LOCALE: ar_SA.UTF-8
-en_US.UTF-8/XLC_LOCALE: ar_SD.UTF-8
-en_US.UTF-8/XLC_LOCALE: ar_SY.UTF-8
-en_US.UTF-8/XLC_LOCALE: ar_TN.UTF-8
-en_US.UTF-8/XLC_LOCALE: ar_YE.UTF-8
-en_US.UTF-8/XLC_LOCALE: as_IN.UTF-8
-en_US.UTF-8/XLC_LOCALE: az_AZ.UTF-8
-en_US.UTF-8/XLC_LOCALE: a3_AZ.UTF-8
-en_US.UTF-8/XLC_LOCALE: be_BY.UTF-8
-en_US.UTF-8/XLC_LOCALE: bg_BG.UTF-8
-en_US.UTF-8/XLC_LOCALE: bn_BD.UTF-8
-en_US.UTF-8/XLC_LOCALE: bn_IN.UTF-8
-en_US.UTF-8/XLC_LOCALE: bo_IN.UTF-8
-en_US.UTF-8/XLC_LOCALE: br_FR.UTF-8
-en_US.UTF-8/XLC_LOCALE: ca_AD.UTF-8
-en_US.UTF-8/XLC_LOCALE: ca_ES.UTF-8
-en_US.UTF-8/XLC_LOCALE: ca_FR.UTF-8
-en_US.UTF-8/XLC_LOCALE: ca_IT.UTF-8
-en_US.UTF-8/XLC_LOCALE: cs_CZ.UTF-8
-en_US.UTF-8/XLC_LOCALE: cy_GB.UTF-8
-en_US.UTF-8/XLC_LOCALE: cs_CZ.UTF-8
-en_US.UTF-8/XLC_LOCALE: da_DK.UTF-8
-en_US.UTF-8/XLC_LOCALE: de_AT.UTF-8
-en_US.UTF-8/XLC_LOCALE: de_BE.UTF-8
-en_US.UTF-8/XLC_LOCALE: de_CH.UTF-8
-en_US.UTF-8/XLC_LOCALE: de_DE.UTF-8
-en_US.UTF-8/XLC_LOCALE: de_LI.UTF-8
-en_US.UTF-8/XLC_LOCALE: de_LU.UTF-8
-en_US.UTF-8/XLC_LOCALE: el_CY.UTF-8
-en_US.UTF-8/XLC_LOCALE: el_GR.UTF-8
-en_US.UTF-8/XLC_LOCALE: en_AU.UTF-8
-en_US.UTF-8/XLC_LOCALE: en_BE.UTF-8
-en_US.UTF-8/XLC_LOCALE: en_BZ.UTF-8
-en_US.UTF-8/XLC_LOCALE: en_CA.UTF-8
-en_US.UTF-8/XLC_LOCALE: en_GB.UTF-8
-en_US.UTF-8/XLC_LOCALE: en_IE.UTF-8
-en_US.UTF-8/XLC_LOCALE: en_JM.UTF-8
-en_US.UTF-8/XLC_LOCALE: en_MT.UTF-8
-en_US.UTF-8/XLC_LOCALE: en_NZ.UTF-8
-en_US.UTF-8/XLC_LOCALE: en_TT.UTF-8
-en_US.UTF-8/XLC_LOCALE: en_UK.UTF-8
-en_US.UTF-8/XLC_LOCALE: en_US.UTF-8
-en_US.UTF-8/XLC_LOCALE: en_ZA.UTF-8
-en_US.UTF-8/XLC_LOCALE: eo_EO.UTF-8
-en_US.UTF-8/XLC_LOCALE: eo_XX.UTF-8
-en_US.UTF-8/XLC_LOCALE: es_AR.UTF-8
-en_US.UTF-8/XLC_LOCALE: es_BO.UTF-8
-en_US.UTF-8/XLC_LOCALE: es_CL.UTF-8
-en_US.UTF-8/XLC_LOCALE: es_CO.UTF-8
-en_US.UTF-8/XLC_LOCALE: es_CR.UTF-8
-en_US.UTF-8/XLC_LOCALE: es_DO.UTF-8
-en_US.UTF-8/XLC_LOCALE: es_EC.UTF-8
-en_US.UTF-8/XLC_LOCALE: es_ES.UTF-8
-en_US.UTF-8/XLC_LOCALE: es_GT.UTF-8
-en_US.UTF-8/XLC_LOCALE: es_HN.UTF-8
-en_US.UTF-8/XLC_LOCALE: es_MX.UTF-8
-en_US.UTF-8/XLC_LOCALE: es_NI.UTF-8
-en_US.UTF-8/XLC_LOCALE: es_PA.UTF-8
-en_US.UTF-8/XLC_LOCALE: es_PE.UTF-8
-en_US.UTF-8/XLC_LOCALE: es_PR.UTF-8
-en_US.UTF-8/XLC_LOCALE: es_PY.UTF-8
-en_US.UTF-8/XLC_LOCALE: es_SV.UTF-8
-en_US.UTF-8/XLC_LOCALE: es_US.UTF-8
-en_US.UTF-8/XLC_LOCALE: es_UY.UTF-8
-en_US.UTF-8/XLC_LOCALE: es_VE.UTF-8
-en_US.UTF-8/XLC_LOCALE: et_EE.UTF-8
-en_US.UTF-8/XLC_LOCALE: eu_ES.UTF-8
-en_US.UTF-8/XLC_LOCALE: fa_IR.UTF-8
-en_US.UTF-8/XLC_LOCALE: fi_FI.UTF-8
-en_US.UTF-8/XLC_LOCALE: fo_FO.UTF-8
-en_US.UTF-8/XLC_LOCALE: fr_BE.UTF-8
-en_US.UTF-8/XLC_LOCALE: fr_CA.UTF-8
-en_US.UTF-8/XLC_LOCALE: fr_CH.UTF-8
-en_US.UTF-8/XLC_LOCALE: fr_FR.UTF-8
-en_US.UTF-8/XLC_LOCALE: fr_LU.UTF-8
-en_US.UTF-8/XLC_LOCALE: ga_IE.UTF-8
-en_US.UTF-8/XLC_LOCALE: gd_GB.UTF-8
-en_US.UTF-8/XLC_LOCALE: gl_ES.UTF-8
-en_US.UTF-8/XLC_LOCALE: gu_IN.UTF-8
-en_US.UTF-8/XLC_LOCALE: gv_GB.UTF-8
-en_US.UTF-8/XLC_LOCALE: he_IL.UTF-8
-en_US.UTF-8/XLC_LOCALE: hi_IN.UTF-8
-en_US.UTF-8/XLC_LOCALE: hne_IN.UTF-8
-en_US.UTF-8/XLC_LOCALE: hr_HR.UTF-8
-en_US.UTF-8/XLC_LOCALE: hu_HU.UTF-8
-en_US.UTF-8/XLC_LOCALE: hy_AM.UTF-8
-en_US.UTF-8/XLC_LOCALE: id_ID.UTF-8
-en_US.UTF-8/XLC_LOCALE: is_IS.UTF-8
-en_US.UTF-8/XLC_LOCALE: it_CH.UTF-8
-en_US.UTF-8/XLC_LOCALE: it_IT.UTF-8
-en_US.UTF-8/XLC_LOCALE: iu_CA.UTF-8
-ja_JP.UTF-8/XLC_LOCALE: ja_JP.UTF-8
-en_US.UTF-8/XLC_LOCALE: ka_GE.UTF-8
-en_US.UTF-8/XLC_LOCALE: kl_GL.UTF-8
-en_US.UTF-8/XLC_LOCALE: kk_KZ.UTF-8
-en_US.UTF-8/XLC_LOCALE: kn_IN.UTF-8
-en_US.UTF-8/XLC_LOCALE: ks_IN.UTF-8
-en_US.UTF-8/XLC_LOCALE: ks_IN@devanagari.UTF-8
-ko_KR.UTF-8/XLC_LOCALE: ko_KR.UTF-8
-en_US.UTF-8/XLC_LOCALE: kw_GB.UTF-8
-en_US.UTF-8/XLC_LOCALE: ky_KG.UTF-8
-en_US.UTF-8/XLC_LOCALE: lo_LA.UTF-8
-en_US.UTF-8/XLC_LOCALE: lt_LT.UTF-8
-en_US.UTF-8/XLC_LOCALE: lv_LV.UTF-8
-en_US.UTF-8/XLC_LOCALE: mai_IN.UTF-8
-en_US.UTF-8/XLC_LOCALE: mi_NZ.UTF-8
-en_US.UTF-8/XLC_LOCALE: mk_MK.UTF-8
-en_US.UTF-8/XLC_LOCALE: ml_IN.UTF-8
-en_US.UTF-8/XLC_LOCALE: mr_IN.UTF-8
-en_US.UTF-8/XLC_LOCALE: ms_MY.UTF-8
-en_US.UTF-8/XLC_LOCALE: mt_MT.UTF-8
-en_US.UTF-8/XLC_LOCALE: nl_BE.UTF-8
-en_US.UTF-8/XLC_LOCALE: nl_NL.UTF-8
-en_US.UTF-8/XLC_LOCALE: nb_NO.UTF-8
-en_US.UTF-8/XLC_LOCALE: nn_NO.UTF-8
-en_US.UTF-8/XLC_LOCALE: no_NO.UTF-8
-en_US.UTF-8/XLC_LOCALE: nr_ZA.UTF-8
-en_US.UTF-8/XLC_LOCALE: nso_ZA.UTF-8
-en_US.UTF-8/XLC_LOCALE: ny_NO.UTF-8
-en_US.UTF-8/XLC_LOCALE: oc_FR.UTF-8
-en_US.UTF-8/XLC_LOCALE: or_IN.UTF-8
-en_US.UTF-8/XLC_LOCALE: pa_IN.UTF-8
-en_US.UTF-8/XLC_LOCALE: pa_PK.UTF-8
-en_US.UTF-8/XLC_LOCALE: pd_DE.UTF-8
-en_US.UTF-8/XLC_LOCALE: pd_US.UTF-8
-en_US.UTF-8/XLC_LOCALE: ph_PH.UTF-8
-en_US.UTF-8/XLC_LOCALE: pl_PL.UTF-8
-en_US.UTF-8/XLC_LOCALE: pp_AN.UTF-8
-pt_BR.UTF-8/XLC_LOCALE: pt_BR.UTF-8
-en_US.UTF-8/XLC_LOCALE: pt_PT.UTF-8
-en_US.UTF-8/XLC_LOCALE: ro_RO.UTF-8
-ru_RU.UTF-8/XLC_LOCALE: ru_RU.UTF-8
-en_US.UTF-8/XLC_LOCALE: ru_UA.UTF-8
-en_US.UTF-8/XLC_LOCALE: rw_RW.UTF-8
-en_US.UTF-8/XLC_LOCALE: sa_IN.UTF-8
-en_US.UTF-8/XLC_LOCALE: sd_IN.UTF-8
-en_US.UTF-8/XLC_LOCALE: sd_IN@devanagari.UTF-8
-en_US.UTF-8/XLC_LOCALE: se_NO.UTF-8
-en_US.UTF-8/XLC_LOCALE: sh_BA.UTF-8
-en_US.UTF-8/XLC_LOCALE: sh_YU.UTF-8
-en_US.UTF-8/XLC_LOCALE: si_LK.UTF-8
-en_US.UTF-8/XLC_LOCALE: sk_SK.UTF-8
-en_US.UTF-8/XLC_LOCALE: sl_SI.UTF-8
-en_US.UTF-8/XLC_LOCALE: sq_AL.UTF-8
-en_US.UTF-8/XLC_LOCALE: sr_CS.UTF-8
-en_US.UTF-8/XLC_LOCALE: sr_ME.UTF-8
-en_US.UTF-8/XLC_LOCALE: sr_RS.UTF-8
-en_US.UTF-8/XLC_LOCALE: sr_YU.UTF-8
-en_US.UTF-8/XLC_LOCALE: ss_ZA.UTF-8
-en_US.UTF-8/XLC_LOCALE: st_ZA.UTF-8
-en_US.UTF-8/XLC_LOCALE: sv_FI.UTF-8
-en_US.UTF-8/XLC_LOCALE: sv_SE.UTF-8
-en_US.UTF-8/XLC_LOCALE: ta_IN.UTF-8
-en_US.UTF-8/XLC_LOCALE: te_IN.UTF-8
-en_US.UTF-8/XLC_LOCALE: tg_TJ.UTF-8
-th_TH.UTF-8/XLC_LOCALE: th_TH.UTF-8
-en_US.UTF-8/XLC_LOCALE: ti_ER.UTF-8
-en_US.UTF-8/XLC_LOCALE: ti_ET.UTF-8
-en_US.UTF-8/XLC_LOCALE: tl_PH.UTF-8
-en_US.UTF-8/XLC_LOCALE: tn_ZA.UTF-8
-en_US.UTF-8/XLC_LOCALE: tr_TR.UTF-8
-en_US.UTF-8/XLC_LOCALE: ts_ZA.UTF-8
-en_US.UTF-8/XLC_LOCALE: tt_RU.UTF-8
-en_US.UTF-8/XLC_LOCALE: uk_UA.UTF-8
-en_US.UTF-8/XLC_LOCALE: ur_IN.UTF-8
-en_US.UTF-8/XLC_LOCALE: ur_PK.UTF-8
-en_US.UTF-8/XLC_LOCALE: uz_UZ.UTF-8
-en_US.UTF-8/XLC_LOCALE: ve_ZA.UTF-8
-en_US.UTF-8/XLC_LOCALE: vi_VN.UTF-8
-en_US.UTF-8/XLC_LOCALE: wa_BE.UTF-8
-en_US.UTF-8/XLC_LOCALE: xh_ZA.UTF-8
-en_US.UTF-8/XLC_LOCALE: yi_US.UTF-8
-en_US.UTF-8/XLC_LOCALE: ne_NP.UTF-8
-zh_CN.UTF-8/XLC_LOCALE: zh_CN.UTF-8
-zh_HK.UTF-8/XLC_LOCALE: zh_HK.UTF-8
-zh_CN.UTF-8/XLC_LOCALE: zh_SG.UTF-8
-zh_TW.UTF-8/XLC_LOCALE: zh_TW.UTF-8
-en_US.UTF-8/XLC_LOCALE: zu_ZA.UTF-8
-#ifdef __uxp__
-ja.U90/XLC_LOCALE: ja_JP.U90
-ja.S90/XLC_LOCALE: ja_JP.S90
-#endif
+XCOMM
+XCOMM This file contains locale database file names
+XCOMM The first word is the locale database file name and
+XCOMM the second word is the full locale name.
+XCOMM
+XCOMM
+
+C/XLC_LOCALE: C
+iso8859-1/XLC_LOCALE: af_ZA.ISO8859-1
+iso8859-6/XLC_LOCALE: ar_AA.ISO8859-6
+iso8859-6/XLC_LOCALE: ar_BH.ISO8859-6
+iso8859-6/XLC_LOCALE: ar_DZ.ISO8859-6
+iso8859-6/XLC_LOCALE: ar_EG.ISO8859-6
+iso8859-6/XLC_LOCALE: ar_IQ.ISO8859-6
+iso8859-6/XLC_LOCALE: ar_JO.ISO8859-6
+iso8859-6/XLC_LOCALE: ar_KW.ISO8859-6
+iso8859-6/XLC_LOCALE: ar_LB.ISO8859-6
+iso8859-6/XLC_LOCALE: ar_LY.ISO8859-6
+iso8859-6/XLC_LOCALE: ar_MA.ISO8859-6
+iso8859-6/XLC_LOCALE: ar_OM.ISO8859-6
+iso8859-6/XLC_LOCALE: ar_QA.ISO8859-6
+iso8859-6/XLC_LOCALE: ar_SA.ISO8859-6
+iso8859-6/XLC_LOCALE: ar_SD.ISO8859-6
+iso8859-6/XLC_LOCALE: ar_SY.ISO8859-6
+iso8859-6/XLC_LOCALE: ar_TN.ISO8859-6
+iso8859-6/XLC_LOCALE: ar_YE.ISO8859-6
+iso8859-9e/XLC_LOCALE: az_AZ.ISO8859-9E
+koi8-c/XLC_LOCALE: az_AZ.KOI8-C
+iso8859-5/XLC_LOCALE: be_BY.ISO8859-5
+microsoft-cp1251/XLC_LOCALE: be_BY.CP1251
+iso8859-5/XLC_LOCALE: bg_BG.ISO8859-5
+microsoft-cp1251/XLC_LOCALE: bg_BG.CP1251
+koi8-r/XLC_LOCALE: bg_BG.KOI8-R
+iso8859-2/XLC_LOCALE: bs_BA.ISO8859-2
+iso8859-1/XLC_LOCALE: br_FR.ISO8859-1
+iso8859-14/XLC_LOCALE: br_FR.ISO8859-14
+iso8859-15/XLC_LOCALE: br_FR.ISO8859-15
+iso8859-1/XLC_LOCALE: ca_AD.ISO8859-1
+iso8859-15/XLC_LOCALE: ca_AD.ISO8859-15
+iso8859-1/XLC_LOCALE: ca_ES.ISO8859-1
+iso8859-15/XLC_LOCALE: ca_ES.ISO8859-15
+iso8859-1/XLC_LOCALE: ca_FR.ISO8859-1
+iso8859-15/XLC_LOCALE: ca_FR.ISO8859-15
+iso8859-1/XLC_LOCALE: ca_IT.ISO8859-1
+iso8859-15/XLC_LOCALE: ca_IT.ISO8859-15
+iso8859-2/XLC_LOCALE: cs_CZ.ISO8859-2
+iso8859-1/XLC_LOCALE: cy_GB.ISO8859-1
+iso8859-14/XLC_LOCALE: cy_GB.ISO8859-14
+iso8859-15/XLC_LOCALE: cy_GB.ISO8859-15
+iso8859-2/XLC_LOCALE: cz_CZ.ISO8859-2
+iso8859-1/XLC_LOCALE: da_DK.ISO8859-1
+iso8859-15/XLC_LOCALE: da_DK.ISO8859-15
+iso8859-1/XLC_LOCALE: de_AT.ISO8859-1
+iso8859-15/XLC_LOCALE: de_AT.ISO8859-15
+iso8859-1/XLC_LOCALE: de_BE.ISO8859-1
+iso8859-15/XLC_LOCALE: de_BE.ISO8859-15
+iso8859-1/XLC_LOCALE: de_CH.ISO8859-1
+iso8859-15/XLC_LOCALE: de_CH.ISO8859-15
+iso8859-1/XLC_LOCALE: de_DE.ISO8859-1
+iso8859-15/XLC_LOCALE: de_DE.ISO8859-15
+iso8859-1/XLC_LOCALE: de_LI.ISO8859-1
+iso8859-1/XLC_LOCALE: de_LU.ISO8859-1
+iso8859-15/XLC_LOCALE: de_LU.ISO8859-15
+iso8859-7/XLC_LOCALE: el_GR.ISO8859-7
+iso8859-15/XLC_LOCALE: el_GR.ISO8859-15
+iso8859-1/XLC_LOCALE: en_AU.ISO8859-1
+iso8859-1/XLC_LOCALE: en_BE.ISO8859-1
+iso8859-1/XLC_LOCALE: en_BZ.ISO8859-1
+iso8859-1/XLC_LOCALE: en_BW.ISO8859-1
+iso8859-1/XLC_LOCALE: en_CA.ISO8859-1
+iso8859-1/XLC_LOCALE: en_GB.ISO8859-1
+iso8859-15/XLC_LOCALE: en_GB.ISO8859-15
+iso8859-1/XLC_LOCALE: en_HK.ISO8859-1
+iso8859-1/XLC_LOCALE: en_IE.ISO8859-1
+iso8859-15/XLC_LOCALE: en_IE.ISO8859-15
+iso8859-15/XLC_LOCALE: en_IN.ISO8859-15
+iso8859-1/XLC_LOCALE: en_JM.ISO8859-1
+iso8859-1/XLC_LOCALE: en_NZ.ISO8859-1
+iso8859-1/XLC_LOCALE: en_PH.ISO8859-1
+iso8859-1/XLC_LOCALE: en_SG.ISO8859-1
+iso8859-1/XLC_LOCALE: en_TT.ISO8859-1
+iso8859-1/XLC_LOCALE: en_UK.ISO8859-1
+iso8859-15/XLC_LOCALE: en_UK.ISO8859-15
+iso8859-1/XLC_LOCALE: en_US.ISO8859-1
+iso8859-15/XLC_LOCALE: en_US.ISO8859-15
+iso8859-1/XLC_LOCALE: en_ZA.ISO8859-1
+iso8859-15/XLC_LOCALE: en_ZA.ISO8859-15
+iso8859-3/XLC_LOCALE: eo_EO.ISO8859-3
+iso8859-3/XLC_LOCALE: eo_XX.ISO8859-3
+iso8859-1/XLC_LOCALE: es_AR.ISO8859-1
+iso8859-1/XLC_LOCALE: es_BO.ISO8859-1
+iso8859-1/XLC_LOCALE: es_CL.ISO8859-1
+iso8859-1/XLC_LOCALE: es_CO.ISO8859-1
+iso8859-1/XLC_LOCALE: es_CR.ISO8859-1
+iso8859-1/XLC_LOCALE: es_DO.ISO8859-1
+iso8859-1/XLC_LOCALE: es_EC.ISO8859-1
+iso8859-1/XLC_LOCALE: es_ES.ISO8859-1
+iso8859-15/XLC_LOCALE: es_ES.ISO8859-15
+iso8859-1/XLC_LOCALE: es_GT.ISO8859-1
+iso8859-1/XLC_LOCALE: es_HN.ISO8859-1
+iso8859-1/XLC_LOCALE: es_MX.ISO8859-1
+iso8859-1/XLC_LOCALE: es_NI.ISO8859-1
+iso8859-1/XLC_LOCALE: es_PA.ISO8859-1
+iso8859-1/XLC_LOCALE: es_PE.ISO8859-1
+iso8859-1/XLC_LOCALE: es_PR.ISO8859-1
+iso8859-1/XLC_LOCALE: es_PY.ISO8859-1
+iso8859-1/XLC_LOCALE: es_SV.ISO8859-1
+iso8859-1/XLC_LOCALE: es_US.ISO8859-1
+iso8859-1/XLC_LOCALE: es_UY.ISO8859-1
+iso8859-1/XLC_LOCALE: es_VE.ISO8859-1
+iso8859-1/XLC_LOCALE: et_EE.ISO8859-1
+iso8859-4/XLC_LOCALE: et_EE.ISO8859-4
+iso8859-13/XLC_LOCALE: et_EE.ISO8859-13
+iso8859-15/XLC_LOCALE: et_EE.ISO8859-15
+iso8859-1/XLC_LOCALE: eu_ES.ISO8859-1
+iso8859-15/XLC_LOCALE: eu_ES.ISO8859-15
+isiri-3342/XLC_LOCALE: fa_IR.ISIRI-3342
+iso8859-1/XLC_LOCALE: fi_FI.ISO8859-1
+iso8859-15/XLC_LOCALE: fi_FI.ISO8859-15
+iso8859-1/XLC_LOCALE: fo_FO.ISO8859-1
+iso8859-15/XLC_LOCALE: fo_FO.ISO8859-15
+iso8859-1/XLC_LOCALE: fr_BE.ISO8859-1
+iso8859-15/XLC_LOCALE: fr_BE.ISO8859-15
+iso8859-1/XLC_LOCALE: fr_CA.ISO8859-1
+iso8859-15/XLC_LOCALE: fr_CA.ISO8859-15
+iso8859-1/XLC_LOCALE: fr_CH.ISO8859-1
+iso8859-15/XLC_LOCALE: fr_CH.ISO8859-15
+iso8859-1/XLC_LOCALE: fr_FR.ISO8859-1
+iso8859-15/XLC_LOCALE: fr_FR.ISO8859-15
+iso8859-1/XLC_LOCALE: fr_LU.ISO8859-1
+iso8859-15/XLC_LOCALE: fr_LU.ISO8859-15
+iso8859-1/XLC_LOCALE: ga_IE.ISO8859-1
+iso8859-14/XLC_LOCALE: ga_IE.ISO8859-14
+iso8859-15/XLC_LOCALE: ga_IE.ISO8859-15
+iso8859-1/XLC_LOCALE: gd_GB.ISO8859-1
+iso8859-14/XLC_LOCALE: gd_GB.ISO8859-14
+iso8859-15/XLC_LOCALE: gd_GB.ISO8859-15
+iso8859-1/XLC_LOCALE: gl_ES.ISO8859-1
+iso8859-15/XLC_LOCALE: gl_ES.ISO8859-15
+iso8859-1/XLC_LOCALE: gv_GB.ISO8859-1
+iso8859-14/XLC_LOCALE: gv_GB.ISO8859-14
+iso8859-15/XLC_LOCALE: gv_GB.ISO8859-15
+iso8859-8/XLC_LOCALE: he_IL.ISO8859-8
+microsoft-cp1255/XLC_LOCALE: he_IL.CP1255
+iscii-dev/XLC_LOCALE: hi_IN.ISCII-DEV
+iso8859-2/XLC_LOCALE: hr_HR.ISO8859-2
+iso8859-2/XLC_LOCALE: hu_HU.ISO8859-2
+armscii-8/XLC_LOCALE: hy_AM.ARMSCII-8
+iso8859-1/XLC_LOCALE: id_ID.ISO8859-1
+iso8859-1/XLC_LOCALE: is_IS.ISO8859-1
+iso8859-15/XLC_LOCALE: is_IS.ISO8859-15
+iso8859-1/XLC_LOCALE: it_CH.ISO8859-1
+iso8859-1/XLC_LOCALE: it_IT.ISO8859-1
+iso8859-15/XLC_LOCALE: it_IT.ISO8859-15
+ja/XLC_LOCALE: ja_JP.eucJP
+ja.SJIS/XLC_LOCALE: ja_JP.SJIS
+ja.JIS/XLC_LOCALE: ja_JP.JIS7
+georgian-academy/XLC_LOCALE: ka_GE.GEORGIAN-ACADEMY
+georgian-ps/XLC_LOCALE: ka_GE.GEORGIAN-PS
+iso8859-1/XLC_LOCALE: kl_GL.ISO8859-1
+ko/XLC_LOCALE: ko_KR.eucKR
+iso8859-1/XLC_LOCALE: kw_GB.ISO8859-1
+iso8859-14/XLC_LOCALE: kw_GB.ISO8859-14
+iso8859-15/XLC_LOCALE: kw_GB.ISO8859-15
+ibm-cp1133/XLC_LOCALE: lo_LA.IBM-CP1133
+mulelao-1/XLC_LOCALE: lo_LA.MULELAO-1
+iso8859-4/XLC_LOCALE: lt_LT.ISO8859-4
+iso8859-13/XLC_LOCALE: lt_LT.ISO8859-13
+iso8859-4/XLC_LOCALE: lv_LV.ISO8859-4
+iso8859-13/XLC_LOCALE: lv_LV.ISO8859-13
+iso8859-13/XLC_LOCALE: mi_NZ.ISO8859-13
+iso8859-5/XLC_LOCALE: mk_MK.ISO8859-5
+microsoft-cp1251/XLC_LOCALE: mk_MK.CP1251
+iso8859-1/XLC_LOCALE: ms_MY.ISO8859-1
+iso8859-3/XLC_LOCALE: mt_MT.ISO8859-3
+iso8859-1/XLC_LOCALE: nb_NO.ISO8859-1
+iso8859-1/XLC_LOCALE: nb_NO.ISO8859-15
+iso8859-1/XLC_LOCALE: nl_BE.ISO8859-1
+iso8859-15/XLC_LOCALE: nl_BE.ISO8859-15
+iso8859-1/XLC_LOCALE: nl_NL.ISO8859-1
+iso8859-15/XLC_LOCALE: nl_NL.ISO8859-15
+iso8859-1/XLC_LOCALE: nn_NO.ISO8859-1
+iso8859-1/XLC_LOCALE: nn_NO.ISO8859-15
+iso8859-1/XLC_LOCALE: no_NO.ISO8859-1
+iso8859-1/XLC_LOCALE: no_NO.ISO8859-15
+iso8859-1/XLC_LOCALE: nr_ZA.ISO8859-1
+iso8859-15/XLC_LOCALE: nso_ZA.ISO8859-15
+iso8859-1/XLC_LOCALE: ny_NO.ISO8859-1
+iso8859-1/XLC_LOCALE: ny_NO.ISO8859-15
+iso8859-1/XLC_LOCALE: oc_FR.ISO8859-1
+iso8859-15/XLC_LOCALE: oc_FR.ISO8859-15
+iso8859-1/XLC_LOCALE: pd_DE.ISO8859-1
+iso8859-1/XLC_LOCALE: ph_PH.ISO8859-1
+iso8859-2/XLC_LOCALE: pl_PL.ISO8859-2
+iso8859-1/XLC_LOCALE: pp_AN.ISO8859-1
+iso8859-1/XLC_LOCALE: pt_BR.ISO8859-1
+iso8859-1/XLC_LOCALE: pt_PT.ISO8859-1
+iso8859-15/XLC_LOCALE: pt_PT.ISO8859-15
+iso8859-2/XLC_LOCALE: ro_RO.ISO8859-2
+iso8859-5/XLC_LOCALE: ru_RU.ISO8859-5
+microsoft-cp1251/XLC_LOCALE: ru_RU.CP1251
+koi8-r/XLC_LOCALE: ru_RU.KOI8-R
+koi8-u/XLC_LOCALE: ru_UA.KOI8-U
+iso8859-1/XLC_LOCALE: rw_RW.ISO8859-1
+iso8859-2/XLC_LOCALE: sh_YU.ISO8859-2
+iso8859-2/XLC_LOCALE: sk_SK.ISO8859-2
+iso8859-2/XLC_LOCALE: sl_SI.ISO8859-2
+iso8859-2/XLC_LOCALE: sq_AL.ISO8859-2
+iso8859-2/XLC_LOCALE: sr_CS.ISO8859-2
+iso8859-5/XLC_LOCALE: sr_CS.ISO8859-5
+iso8859-2/XLC_LOCALE: sr_YU.ISO8859-2
+iso8859-5/XLC_LOCALE: sr_YU.ISO8859-5
+microsoft-cp1251/XLC_LOCALE: sr_YU.CP1251
+iso8859-1/XLC_LOCALE: ss_ZA.ISO8859-1
+iso8859-1/XLC_LOCALE: st_ZA.ISO8859-1
+iso8859-1/XLC_LOCALE: sv_FI.ISO8859-1
+iso8859-15/XLC_LOCALE: sv_FI.ISO8859-15
+iso8859-1/XLC_LOCALE: sv_SE.ISO8859-1
+iso8859-15/XLC_LOCALE: sv_SE.ISO8859-15
+tscii-0/XLC_LOCALE: ta_IN.TSCII-0
+koi8-c/XLC_LOCALE: tg_TJ.KOI8-C
+th_TH/XLC_LOCALE: th_TH.TIS620
+iso8859-11/XLC_LOCALE: th_TH.ISO8859-11
+iso8859-1/XLC_LOCALE: tl_PH.ISO8859-1
+iso8859-15/XLC_LOCALE: tn_ZA.ISO8859-15
+iso8859-9/XLC_LOCALE: tr_TR.ISO8859-9
+iso8859-1/XLC_LOCALE: ts_ZA.ISO8859-1
+tatar-cyr/XLC_LOCALE: tt_RU.TATAR-CYR
+koi8-c/XLC_LOCALE: tt_RU.KOI8-C
+iso8859-5/XLC_LOCALE: uk_UA.ISO8859-5
+microsoft-cp1251/XLC_LOCALE: uk_UA.CP1251
+koi8-u/XLC_LOCALE: uk_UA.KOI8-U
+microsoft-cp1256/XLC_LOCALE: ur_PK.CP1256
+vi_VN.tcvn/XLC_LOCALE: vi_VN.TCVN
+vi_VN.viscii/XLC_LOCALE: vi_VN.VISCII
+iso8859-1/XLC_LOCALE: wa_BE.ISO8859-1
+iso8859-15/XLC_LOCALE: wa_BE.ISO8859-15
+iso8859-1/XLC_LOCALE: xh_ZA.ISO8859-1
+microsoft-cp1255/XLC_LOCALE: yi_US.CP1255
+zh_CN/XLC_LOCALE: zh_CN.eucCN
+zh_CN/XLC_LOCALE: zh_CN.gb2312
+zh_CN.gbk/XLC_LOCALE: zh_CN.gbk
+zh_CN.gb18030/XLC_LOCALE: zh_CN.gb18030
+zh_HK.big5/XLC_LOCALE: zh_HK.big5
+zh_HK.big5hkscs/XLC_LOCALE: zh_HK.big5-hkscs
+zh_HK.big5hkscs/XLC_LOCALE: zh_HK.Big5-HKSCS
+zh_HK.big5hkscs/XLC_LOCALE: zh_HK.big5hkscs
+zh_HK.big5hkscs/XLC_LOCALE: zh_HK.Big5HKSCS
+zh_TW.big5/XLC_LOCALE: zh_TW.big5
+zh_TW/XLC_LOCALE: zh_TW.eucTW
+iso8859-1/XLC_LOCALE: zu_ZA.ISO8859-1
+XCOMM Note: The UTF-8 locales don't work correctly yet. Work in progress.
+en_US.UTF-8/XLC_LOCALE: af_ZA.UTF-8
+en_US.UTF-8/XLC_LOCALE: am_ET.UTF-8
+en_US.UTF-8/XLC_LOCALE: ar_AA.UTF-8
+en_US.UTF-8/XLC_LOCALE: ar_AE.UTF-8
+en_US.UTF-8/XLC_LOCALE: ar_BH.UTF-8
+en_US.UTF-8/XLC_LOCALE: ar_DZ.UTF-8
+en_US.UTF-8/XLC_LOCALE: ar_EG.UTF-8
+en_US.UTF-8/XLC_LOCALE: ar_IN.UTF-8
+en_US.UTF-8/XLC_LOCALE: ar_IQ.UTF-8
+en_US.UTF-8/XLC_LOCALE: ar_JO.UTF-8
+en_US.UTF-8/XLC_LOCALE: ar_KW.UTF-8
+en_US.UTF-8/XLC_LOCALE: ar_LB.UTF-8
+en_US.UTF-8/XLC_LOCALE: ar_LY.UTF-8
+en_US.UTF-8/XLC_LOCALE: ar_MA.UTF-8
+en_US.UTF-8/XLC_LOCALE: ar_OM.UTF-8
+en_US.UTF-8/XLC_LOCALE: bs_BA.UTF-8
+en_US.UTF-8/XLC_LOCALE: ar_QA.UTF-8
+en_US.UTF-8/XLC_LOCALE: ar_SA.UTF-8
+en_US.UTF-8/XLC_LOCALE: ar_SD.UTF-8
+en_US.UTF-8/XLC_LOCALE: ar_SY.UTF-8
+en_US.UTF-8/XLC_LOCALE: ar_TN.UTF-8
+en_US.UTF-8/XLC_LOCALE: ar_YE.UTF-8
+en_US.UTF-8/XLC_LOCALE: as_IN.UTF-8
+en_US.UTF-8/XLC_LOCALE: az_AZ.UTF-8
+en_US.UTF-8/XLC_LOCALE: a3_AZ.UTF-8
+en_US.UTF-8/XLC_LOCALE: be_BY.UTF-8
+en_US.UTF-8/XLC_LOCALE: bg_BG.UTF-8
+en_US.UTF-8/XLC_LOCALE: bn_BD.UTF-8
+en_US.UTF-8/XLC_LOCALE: bn_IN.UTF-8
+en_US.UTF-8/XLC_LOCALE: bo_IN.UTF-8
+en_US.UTF-8/XLC_LOCALE: br_FR.UTF-8
+en_US.UTF-8/XLC_LOCALE: ca_AD.UTF-8
+en_US.UTF-8/XLC_LOCALE: ca_ES.UTF-8
+en_US.UTF-8/XLC_LOCALE: ca_FR.UTF-8
+en_US.UTF-8/XLC_LOCALE: ca_IT.UTF-8
+en_US.UTF-8/XLC_LOCALE: cs_CZ.UTF-8
+en_US.UTF-8/XLC_LOCALE: cy_GB.UTF-8
+en_US.UTF-8/XLC_LOCALE: cs_CZ.UTF-8
+en_US.UTF-8/XLC_LOCALE: da_DK.UTF-8
+en_US.UTF-8/XLC_LOCALE: de_AT.UTF-8
+en_US.UTF-8/XLC_LOCALE: de_BE.UTF-8
+en_US.UTF-8/XLC_LOCALE: de_CH.UTF-8
+en_US.UTF-8/XLC_LOCALE: de_DE.UTF-8
+en_US.UTF-8/XLC_LOCALE: de_LI.UTF-8
+en_US.UTF-8/XLC_LOCALE: de_LU.UTF-8
+en_US.UTF-8/XLC_LOCALE: el_CY.UTF-8
+en_US.UTF-8/XLC_LOCALE: el_GR.UTF-8
+en_US.UTF-8/XLC_LOCALE: en_AU.UTF-8
+en_US.UTF-8/XLC_LOCALE: en_BE.UTF-8
+en_US.UTF-8/XLC_LOCALE: en_BZ.UTF-8
+en_US.UTF-8/XLC_LOCALE: en_CA.UTF-8
+en_US.UTF-8/XLC_LOCALE: en_GB.UTF-8
+en_US.UTF-8/XLC_LOCALE: en_IE.UTF-8
+en_US.UTF-8/XLC_LOCALE: en_JM.UTF-8
+en_US.UTF-8/XLC_LOCALE: en_MT.UTF-8
+en_US.UTF-8/XLC_LOCALE: en_NZ.UTF-8
+en_US.UTF-8/XLC_LOCALE: en_TT.UTF-8
+en_US.UTF-8/XLC_LOCALE: en_UK.UTF-8
+en_US.UTF-8/XLC_LOCALE: en_US.UTF-8
+en_US.UTF-8/XLC_LOCALE: en_ZA.UTF-8
+en_US.UTF-8/XLC_LOCALE: eo_EO.UTF-8
+en_US.UTF-8/XLC_LOCALE: eo_XX.UTF-8
+en_US.UTF-8/XLC_LOCALE: es_AR.UTF-8
+en_US.UTF-8/XLC_LOCALE: es_BO.UTF-8
+en_US.UTF-8/XLC_LOCALE: es_CL.UTF-8
+en_US.UTF-8/XLC_LOCALE: es_CO.UTF-8
+en_US.UTF-8/XLC_LOCALE: es_CR.UTF-8
+en_US.UTF-8/XLC_LOCALE: es_DO.UTF-8
+en_US.UTF-8/XLC_LOCALE: es_EC.UTF-8
+en_US.UTF-8/XLC_LOCALE: es_ES.UTF-8
+en_US.UTF-8/XLC_LOCALE: es_GT.UTF-8
+en_US.UTF-8/XLC_LOCALE: es_HN.UTF-8
+en_US.UTF-8/XLC_LOCALE: es_MX.UTF-8
+en_US.UTF-8/XLC_LOCALE: es_NI.UTF-8
+en_US.UTF-8/XLC_LOCALE: es_PA.UTF-8
+en_US.UTF-8/XLC_LOCALE: es_PE.UTF-8
+en_US.UTF-8/XLC_LOCALE: es_PR.UTF-8
+en_US.UTF-8/XLC_LOCALE: es_PY.UTF-8
+en_US.UTF-8/XLC_LOCALE: es_SV.UTF-8
+en_US.UTF-8/XLC_LOCALE: es_US.UTF-8
+en_US.UTF-8/XLC_LOCALE: es_UY.UTF-8
+en_US.UTF-8/XLC_LOCALE: es_VE.UTF-8
+en_US.UTF-8/XLC_LOCALE: et_EE.UTF-8
+en_US.UTF-8/XLC_LOCALE: eu_ES.UTF-8
+en_US.UTF-8/XLC_LOCALE: fa_IR.UTF-8
+en_US.UTF-8/XLC_LOCALE: fi_FI.UTF-8
+en_US.UTF-8/XLC_LOCALE: fo_FO.UTF-8
+en_US.UTF-8/XLC_LOCALE: fr_BE.UTF-8
+en_US.UTF-8/XLC_LOCALE: fr_CA.UTF-8
+en_US.UTF-8/XLC_LOCALE: fr_CH.UTF-8
+en_US.UTF-8/XLC_LOCALE: fr_FR.UTF-8
+en_US.UTF-8/XLC_LOCALE: fr_LU.UTF-8
+en_US.UTF-8/XLC_LOCALE: ga_IE.UTF-8
+en_US.UTF-8/XLC_LOCALE: gd_GB.UTF-8
+en_US.UTF-8/XLC_LOCALE: gl_ES.UTF-8
+en_US.UTF-8/XLC_LOCALE: gu_IN.UTF-8
+en_US.UTF-8/XLC_LOCALE: gv_GB.UTF-8
+en_US.UTF-8/XLC_LOCALE: he_IL.UTF-8
+en_US.UTF-8/XLC_LOCALE: hi_IN.UTF-8
+en_US.UTF-8/XLC_LOCALE: hne_IN.UTF-8
+en_US.UTF-8/XLC_LOCALE: hr_HR.UTF-8
+en_US.UTF-8/XLC_LOCALE: hu_HU.UTF-8
+en_US.UTF-8/XLC_LOCALE: hy_AM.UTF-8
+en_US.UTF-8/XLC_LOCALE: id_ID.UTF-8
+en_US.UTF-8/XLC_LOCALE: is_IS.UTF-8
+en_US.UTF-8/XLC_LOCALE: it_CH.UTF-8
+en_US.UTF-8/XLC_LOCALE: it_IT.UTF-8
+en_US.UTF-8/XLC_LOCALE: iu_CA.UTF-8
+ja_JP.UTF-8/XLC_LOCALE: ja_JP.UTF-8
+en_US.UTF-8/XLC_LOCALE: ka_GE.UTF-8
+en_US.UTF-8/XLC_LOCALE: kl_GL.UTF-8
+en_US.UTF-8/XLC_LOCALE: kk_KZ.UTF-8
+en_US.UTF-8/XLC_LOCALE: kn_IN.UTF-8
+en_US.UTF-8/XLC_LOCALE: ks_IN.UTF-8
+en_US.UTF-8/XLC_LOCALE: ks_IN@devanagari.UTF-8
+ko_KR.UTF-8/XLC_LOCALE: ko_KR.UTF-8
+en_US.UTF-8/XLC_LOCALE: kw_GB.UTF-8
+en_US.UTF-8/XLC_LOCALE: ky_KG.UTF-8
+en_US.UTF-8/XLC_LOCALE: lo_LA.UTF-8
+en_US.UTF-8/XLC_LOCALE: lt_LT.UTF-8
+en_US.UTF-8/XLC_LOCALE: lv_LV.UTF-8
+en_US.UTF-8/XLC_LOCALE: mai_IN.UTF-8
+en_US.UTF-8/XLC_LOCALE: mi_NZ.UTF-8
+en_US.UTF-8/XLC_LOCALE: mk_MK.UTF-8
+en_US.UTF-8/XLC_LOCALE: ml_IN.UTF-8
+en_US.UTF-8/XLC_LOCALE: mr_IN.UTF-8
+en_US.UTF-8/XLC_LOCALE: ms_MY.UTF-8
+en_US.UTF-8/XLC_LOCALE: mt_MT.UTF-8
+en_US.UTF-8/XLC_LOCALE: nl_BE.UTF-8
+en_US.UTF-8/XLC_LOCALE: nl_NL.UTF-8
+en_US.UTF-8/XLC_LOCALE: nb_NO.UTF-8
+en_US.UTF-8/XLC_LOCALE: nn_NO.UTF-8
+en_US.UTF-8/XLC_LOCALE: no_NO.UTF-8
+en_US.UTF-8/XLC_LOCALE: nr_ZA.UTF-8
+en_US.UTF-8/XLC_LOCALE: nso_ZA.UTF-8
+en_US.UTF-8/XLC_LOCALE: ny_NO.UTF-8
+en_US.UTF-8/XLC_LOCALE: oc_FR.UTF-8
+en_US.UTF-8/XLC_LOCALE: or_IN.UTF-8
+en_US.UTF-8/XLC_LOCALE: pa_IN.UTF-8
+en_US.UTF-8/XLC_LOCALE: pa_PK.UTF-8
+en_US.UTF-8/XLC_LOCALE: pd_DE.UTF-8
+en_US.UTF-8/XLC_LOCALE: pd_US.UTF-8
+en_US.UTF-8/XLC_LOCALE: ph_PH.UTF-8
+en_US.UTF-8/XLC_LOCALE: pl_PL.UTF-8
+en_US.UTF-8/XLC_LOCALE: pp_AN.UTF-8
+pt_BR.UTF-8/XLC_LOCALE: pt_BR.UTF-8
+en_US.UTF-8/XLC_LOCALE: pt_PT.UTF-8
+en_US.UTF-8/XLC_LOCALE: ro_RO.UTF-8
+ru_RU.UTF-8/XLC_LOCALE: ru_RU.UTF-8
+en_US.UTF-8/XLC_LOCALE: ru_UA.UTF-8
+en_US.UTF-8/XLC_LOCALE: rw_RW.UTF-8
+en_US.UTF-8/XLC_LOCALE: sa_IN.UTF-8
+en_US.UTF-8/XLC_LOCALE: sd_IN.UTF-8
+en_US.UTF-8/XLC_LOCALE: sd_IN@devanagari.UTF-8
+en_US.UTF-8/XLC_LOCALE: se_NO.UTF-8
+en_US.UTF-8/XLC_LOCALE: sh_BA.UTF-8
+en_US.UTF-8/XLC_LOCALE: sh_YU.UTF-8
+en_US.UTF-8/XLC_LOCALE: si_LK.UTF-8
+en_US.UTF-8/XLC_LOCALE: sk_SK.UTF-8
+en_US.UTF-8/XLC_LOCALE: sl_SI.UTF-8
+en_US.UTF-8/XLC_LOCALE: sq_AL.UTF-8
+en_US.UTF-8/XLC_LOCALE: sr_CS.UTF-8
+en_US.UTF-8/XLC_LOCALE: sr_ME.UTF-8
+en_US.UTF-8/XLC_LOCALE: sr_RS.UTF-8
+en_US.UTF-8/XLC_LOCALE: sr_YU.UTF-8
+en_US.UTF-8/XLC_LOCALE: ss_ZA.UTF-8
+en_US.UTF-8/XLC_LOCALE: st_ZA.UTF-8
+en_US.UTF-8/XLC_LOCALE: sv_FI.UTF-8
+en_US.UTF-8/XLC_LOCALE: sv_SE.UTF-8
+en_US.UTF-8/XLC_LOCALE: ta_IN.UTF-8
+en_US.UTF-8/XLC_LOCALE: te_IN.UTF-8
+en_US.UTF-8/XLC_LOCALE: tg_TJ.UTF-8
+th_TH.UTF-8/XLC_LOCALE: th_TH.UTF-8
+en_US.UTF-8/XLC_LOCALE: ti_ER.UTF-8
+en_US.UTF-8/XLC_LOCALE: ti_ET.UTF-8
+en_US.UTF-8/XLC_LOCALE: tl_PH.UTF-8
+en_US.UTF-8/XLC_LOCALE: tn_ZA.UTF-8
+en_US.UTF-8/XLC_LOCALE: tr_TR.UTF-8
+en_US.UTF-8/XLC_LOCALE: ts_ZA.UTF-8
+en_US.UTF-8/XLC_LOCALE: tt_RU.UTF-8
+en_US.UTF-8/XLC_LOCALE: uk_UA.UTF-8
+en_US.UTF-8/XLC_LOCALE: ur_IN.UTF-8
+en_US.UTF-8/XLC_LOCALE: ur_PK.UTF-8
+en_US.UTF-8/XLC_LOCALE: uz_UZ.UTF-8
+en_US.UTF-8/XLC_LOCALE: ve_ZA.UTF-8
+en_US.UTF-8/XLC_LOCALE: vi_VN.UTF-8
+en_US.UTF-8/XLC_LOCALE: wa_BE.UTF-8
+en_US.UTF-8/XLC_LOCALE: xh_ZA.UTF-8
+en_US.UTF-8/XLC_LOCALE: yi_US.UTF-8
+en_US.UTF-8/XLC_LOCALE: ne_NP.UTF-8
+zh_CN.UTF-8/XLC_LOCALE: zh_CN.UTF-8
+zh_HK.UTF-8/XLC_LOCALE: zh_HK.UTF-8
+zh_CN.UTF-8/XLC_LOCALE: zh_SG.UTF-8
+zh_TW.UTF-8/XLC_LOCALE: zh_TW.UTF-8
+en_US.UTF-8/XLC_LOCALE: zu_ZA.UTF-8
+#ifdef __uxp__
+ja.U90/XLC_LOCALE: ja_JP.U90
+ja.S90/XLC_LOCALE: ja_JP.S90
+#endif
diff --git a/libX11/nls/microsoft-cp1251/XI18N_OBJS b/libX11/nls/microsoft-cp1251/XI18N_OBJS
index 8bad8beb2..98c5ef5ed 100644
--- a/libX11/nls/microsoft-cp1251/XI18N_OBJS
+++ b/libX11/nls/microsoft-cp1251/XI18N_OBJS
@@ -1,7 +1,7 @@
-# CATEGORY(XLC|XIM|OM) SHARED_LIBRARY_NAME FUNCTION_NAME
-#
-# XI18N objects table for microsoft-cp1251 locale
-#
-XLC common/xlcDef _XlcDefaultLoader # XLC_open
-XIM common/ximcp _XimOpenIM _XimRegisterIMInstantiateCallback _XimUnRegisterIMInstantiateCallback # XIM_open XIM_register XIM_unregister
-XOM common/xomGeneric _XomGenericOpenOM # XOM_open
+# CATEGORY(XLC|XIM|OM) SHARED_LIBRARY_NAME FUNCTION_NAME
+#
+# XI18N objects table for microsoft-cp1251 locale
+#
+XLC common/xlcDef _XlcDefaultLoader # XLC_open
+XIM common/ximcp _XimOpenIM _XimRegisterIMInstantiateCallback _XimUnRegisterIMInstantiateCallback # XIM_open XIM_register XIM_unregister
+XOM common/xomGeneric _XomGenericOpenOM # XOM_open
diff --git a/libX11/nls/microsoft-cp1251/XLC_LOCALE.pre b/libX11/nls/microsoft-cp1251/XLC_LOCALE.pre
index 743c4618f..77b9cd26e 100644
--- a/libX11/nls/microsoft-cp1251/XLC_LOCALE.pre
+++ b/libX11/nls/microsoft-cp1251/XLC_LOCALE.pre
@@ -1,85 +1,85 @@
-XCOMM XLocale Database Sample for microsoft-cp1251.
-XCOMM
-
-XCOMM
-XCOMM XLC_FONTSET category
-XCOMM
-XLC_FONTSET
-XCOMM fs0 class
-fs0 {
- charset {
- name ISO8859-1:GL
- }
- font {
- primary MICROSOFT-CP1251:GL
- substitute ISO8859-1:GL
- vertical_rotate all
- }
-}
-XCOMM fs1 class
-fs1 {
- charset {
- name MICROSOFT-CP1251:GR
- }
- font {
- primary MICROSOFT-CP1251:GR
- }
-}
-END XLC_FONTSET
-
-XCOMM
-XCOMM XLC_CHARSET_DEFINE category
-XCOMM
-XLC_CHARSET_DEFINE
-csd0 {
- charset_name MICROSOFT-CP1251
- side GR
- length 1
- string_encoding False
- sequence \x1b%/1
-}
-END XLC_CHARSET_DEFINE
-
-XCOMM
-XCOMM XLC_XLOCALE category
-XCOMM
-XLC_XLOCALE
-
-encoding_name MICROSOFT-CP1251
-mb_cur_max 1
-state_depend_encoding False
-#if WCHAR32
-wc_encoding_mask \x30000000
-wc_shift_bits 7
-#else
-wc_encoding_mask \x00008080
-wc_shift_bits 8
-#endif
-
-#ifndef X_LOCALE
-use_stdc_env True
-force_convert_to_mb True
-#endif
-
-XCOMM cs0 class
-cs0 {
- side GL:Default
- length 1
- wc_encoding \x00000000
- ct_encoding MICROSOFT-CP1251:GL; ISO8859-1:GL
-}
-
-
-XCOMM cs1 class
-cs1 {
- side GR:Default
- length 1
-#if WCHAR32
- wc_encoding \x30000000
-#else
- wc_encoding \x00008080
-#endif
- ct_encoding MICROSOFT-CP1251:GR
-}
-
-END XLC_XLOCALE
+XCOMM XLocale Database Sample for microsoft-cp1251.
+XCOMM
+
+XCOMM
+XCOMM XLC_FONTSET category
+XCOMM
+XLC_FONTSET
+XCOMM fs0 class
+fs0 {
+ charset {
+ name ISO8859-1:GL
+ }
+ font {
+ primary MICROSOFT-CP1251:GL
+ substitute ISO8859-1:GL
+ vertical_rotate all
+ }
+}
+XCOMM fs1 class
+fs1 {
+ charset {
+ name MICROSOFT-CP1251:GR
+ }
+ font {
+ primary MICROSOFT-CP1251:GR
+ }
+}
+END XLC_FONTSET
+
+XCOMM
+XCOMM XLC_CHARSET_DEFINE category
+XCOMM
+XLC_CHARSET_DEFINE
+csd0 {
+ charset_name MICROSOFT-CP1251
+ side GR
+ length 1
+ string_encoding False
+ sequence \x1b%/1
+}
+END XLC_CHARSET_DEFINE
+
+XCOMM
+XCOMM XLC_XLOCALE category
+XCOMM
+XLC_XLOCALE
+
+encoding_name MICROSOFT-CP1251
+mb_cur_max 1
+state_depend_encoding False
+#if WCHAR32
+wc_encoding_mask \x30000000
+wc_shift_bits 7
+#else
+wc_encoding_mask \x00008080
+wc_shift_bits 8
+#endif
+
+#ifndef X_LOCALE
+use_stdc_env True
+force_convert_to_mb True
+#endif
+
+XCOMM cs0 class
+cs0 {
+ side GL:Default
+ length 1
+ wc_encoding \x00000000
+ ct_encoding MICROSOFT-CP1251:GL; ISO8859-1:GL
+}
+
+
+XCOMM cs1 class
+cs1 {
+ side GR:Default
+ length 1
+#if WCHAR32
+ wc_encoding \x30000000
+#else
+ wc_encoding \x00008080
+#endif
+ ct_encoding MICROSOFT-CP1251:GR
+}
+
+END XLC_XLOCALE
diff --git a/libX11/nls/microsoft-cp1255/XI18N_OBJS b/libX11/nls/microsoft-cp1255/XI18N_OBJS
index c468efb03..3d0d9a5db 100644
--- a/libX11/nls/microsoft-cp1255/XI18N_OBJS
+++ b/libX11/nls/microsoft-cp1255/XI18N_OBJS
@@ -1,7 +1,7 @@
-# CATEGORY(XLC|XIM|OM) SHARED_LIBRARY_NAME FUNCTION_NAME
-#
-# XI18N objects table for microsoft-cp1255 locale
-#
-XLC common/xlcDef _XlcDefaultLoader # XLC_open
-XIM common/ximcp _XimOpenIM _XimRegisterIMInstantiateCallback _XimUnRegisterIMInstantiateCallback # XIM_open XIM_register XIM_unregister
-XOM common/xomGeneric _XomGenericOpenOM # XOM_open
+# CATEGORY(XLC|XIM|OM) SHARED_LIBRARY_NAME FUNCTION_NAME
+#
+# XI18N objects table for microsoft-cp1255 locale
+#
+XLC common/xlcDef _XlcDefaultLoader # XLC_open
+XIM common/ximcp _XimOpenIM _XimRegisterIMInstantiateCallback _XimUnRegisterIMInstantiateCallback # XIM_open XIM_register XIM_unregister
+XOM common/xomGeneric _XomGenericOpenOM # XOM_open
diff --git a/libX11/nls/microsoft-cp1255/XLC_LOCALE.pre b/libX11/nls/microsoft-cp1255/XLC_LOCALE.pre
index 26f361880..a9bea9c6c 100644
--- a/libX11/nls/microsoft-cp1255/XLC_LOCALE.pre
+++ b/libX11/nls/microsoft-cp1255/XLC_LOCALE.pre
@@ -1,85 +1,85 @@
-XCOMM XLocale Database Sample for microsoft-cp1255.
-XCOMM
-
-XCOMM
-XCOMM XLC_FONTSET category
-XCOMM
-XLC_FONTSET
-XCOMM fs0 class
-fs0 {
- charset {
- name ISO8859-1:GL
- }
- font {
- primary MICROSOFT-CP1255:GL
- substitute ISO8859-1:GL
- vertical_rotate all
- }
-}
-XCOMM fs1 class
-fs1 {
- charset {
- name MICROSOFT-CP1255:GR
- }
- font {
- primary MICROSOFT-CP1255:GR
- }
-}
-END XLC_FONTSET
-
-XCOMM
-XCOMM XLC_CHARSET_DEFINE category
-XCOMM
-XLC_CHARSET_DEFINE
-csd0 {
- charset_name MICROSOFT-CP1255
- side GR
- length 1
- string_encoding False
- sequence \x1b%/1
-}
-END XLC_CHARSET_DEFINE
-
-XCOMM
-XCOMM XLC_XLOCALE category
-XCOMM
-XLC_XLOCALE
-
-encoding_name MICROSOFT-CP1255
-mb_cur_max 1
-state_depend_encoding False
-#if WCHAR32
-wc_encoding_mask \x30000000
-wc_shift_bits 7
-#else
-wc_encoding_mask \x00008080
-wc_shift_bits 8
-#endif
-
-#ifndef X_LOCALE
-use_stdc_env True
-force_convert_to_mb True
-#endif
-
-XCOMM cs0 class
-cs0 {
- side GL:Default
- length 1
- wc_encoding \x00000000
- ct_encoding MICROSOFT-CP1255:GL; ISO8859-1:GL
-}
-
-
-XCOMM cs1 class
-cs1 {
- side GR:Default
- length 1
-#if WCHAR32
- wc_encoding \x30000000
-#else
- wc_encoding \x00008080
-#endif
- ct_encoding MICROSOFT-CP1255:GR
-}
-
-END XLC_XLOCALE
+XCOMM XLocale Database Sample for microsoft-cp1255.
+XCOMM
+
+XCOMM
+XCOMM XLC_FONTSET category
+XCOMM
+XLC_FONTSET
+XCOMM fs0 class
+fs0 {
+ charset {
+ name ISO8859-1:GL
+ }
+ font {
+ primary MICROSOFT-CP1255:GL
+ substitute ISO8859-1:GL
+ vertical_rotate all
+ }
+}
+XCOMM fs1 class
+fs1 {
+ charset {
+ name MICROSOFT-CP1255:GR
+ }
+ font {
+ primary MICROSOFT-CP1255:GR
+ }
+}
+END XLC_FONTSET
+
+XCOMM
+XCOMM XLC_CHARSET_DEFINE category
+XCOMM
+XLC_CHARSET_DEFINE
+csd0 {
+ charset_name MICROSOFT-CP1255
+ side GR
+ length 1
+ string_encoding False
+ sequence \x1b%/1
+}
+END XLC_CHARSET_DEFINE
+
+XCOMM
+XCOMM XLC_XLOCALE category
+XCOMM
+XLC_XLOCALE
+
+encoding_name MICROSOFT-CP1255
+mb_cur_max 1
+state_depend_encoding False
+#if WCHAR32
+wc_encoding_mask \x30000000
+wc_shift_bits 7
+#else
+wc_encoding_mask \x00008080
+wc_shift_bits 8
+#endif
+
+#ifndef X_LOCALE
+use_stdc_env True
+force_convert_to_mb True
+#endif
+
+XCOMM cs0 class
+cs0 {
+ side GL:Default
+ length 1
+ wc_encoding \x00000000
+ ct_encoding MICROSOFT-CP1255:GL; ISO8859-1:GL
+}
+
+
+XCOMM cs1 class
+cs1 {
+ side GR:Default
+ length 1
+#if WCHAR32
+ wc_encoding \x30000000
+#else
+ wc_encoding \x00008080
+#endif
+ ct_encoding MICROSOFT-CP1255:GR
+}
+
+END XLC_XLOCALE
diff --git a/libX11/nls/microsoft-cp1256/XI18N_OBJS b/libX11/nls/microsoft-cp1256/XI18N_OBJS
index 228ae4d73..e58719d06 100644
--- a/libX11/nls/microsoft-cp1256/XI18N_OBJS
+++ b/libX11/nls/microsoft-cp1256/XI18N_OBJS
@@ -1,7 +1,7 @@
-# CATEGORY(XLC|XIM|OM) SHARED_LIBRARY_NAME FUNCTION_NAME
-#
-# XI18N objects table for microsoft-cp1256 locale
-#
-XLC common/xlcDef _XlcDefaultLoader # XLC_open
-XIM common/ximcp _XimOpenIM _XimRegisterIMInstantiateCallback _XimUnRegisterIMInstantiateCallback # XIM_open XIM_register XIM_unregister
-XOM common/xomGeneric _XomGenericOpenOM # XOM_open
+# CATEGORY(XLC|XIM|OM) SHARED_LIBRARY_NAME FUNCTION_NAME
+#
+# XI18N objects table for microsoft-cp1256 locale
+#
+XLC common/xlcDef _XlcDefaultLoader # XLC_open
+XIM common/ximcp _XimOpenIM _XimRegisterIMInstantiateCallback _XimUnRegisterIMInstantiateCallback # XIM_open XIM_register XIM_unregister
+XOM common/xomGeneric _XomGenericOpenOM # XOM_open
diff --git a/libX11/nls/microsoft-cp1256/XLC_LOCALE.pre b/libX11/nls/microsoft-cp1256/XLC_LOCALE.pre
index 2c29af79d..7fdb074f1 100644
--- a/libX11/nls/microsoft-cp1256/XLC_LOCALE.pre
+++ b/libX11/nls/microsoft-cp1256/XLC_LOCALE.pre
@@ -1,85 +1,85 @@
-XCOMM XLocale Database Sample for microsoft-cp1256.
-XCOMM
-
-XCOMM
-XCOMM XLC_FONTSET category
-XCOMM
-XLC_FONTSET
-XCOMM fs0 class
-fs0 {
- charset {
- name ISO8859-1:GL
- }
- font {
- primary MICROSOFT-CP1256:GL
- substitute ISO8859-1:GL
- vertical_rotate all
- }
-}
-XCOMM fs1 class
-fs1 {
- charset {
- name MICROSOFT-CP1256:GR
- }
- font {
- primary MICROSOFT-CP1256:GR
- }
-}
-END XLC_FONTSET
-
-XCOMM
-XCOMM XLC_CHARSET_DEFINE category
-XCOMM
-XLC_CHARSET_DEFINE
-csd0 {
- charset_name MICROSOFT-CP1256
- side GR
- length 1
- string_encoding False
- sequence \x1b%/1
-}
-END XLC_CHARSET_DEFINE
-
-XCOMM
-XCOMM XLC_XLOCALE category
-XCOMM
-XLC_XLOCALE
-
-encoding_name MICROSOFT-CP1256
-mb_cur_max 1
-state_depend_encoding False
-#if WCHAR32
-wc_encoding_mask \x30000000
-wc_shift_bits 7
-#else
-wc_encoding_mask \x00008080
-wc_shift_bits 8
-#endif
-
-#ifndef X_LOCALE
-use_stdc_env True
-force_convert_to_mb True
-#endif
-
-XCOMM cs0 class
-cs0 {
- side GL:Default
- length 1
- wc_encoding \x00000000
- ct_encoding MICROSOFT-CP1256:GL; ISO8859-1:GL
-}
-
-
-XCOMM cs1 class
-cs1 {
- side GR:Default
- length 1
-#if WCHAR32
- wc_encoding \x30000000
-#else
- wc_encoding \x00008080
-#endif
- ct_encoding MICROSOFT-CP1256:GR
-}
-
-END XLC_XLOCALE
+XCOMM XLocale Database Sample for microsoft-cp1256.
+XCOMM
+
+XCOMM
+XCOMM XLC_FONTSET category
+XCOMM
+XLC_FONTSET
+XCOMM fs0 class
+fs0 {
+ charset {
+ name ISO8859-1:GL
+ }
+ font {
+ primary MICROSOFT-CP1256:GL
+ substitute ISO8859-1:GL
+ vertical_rotate all
+ }
+}
+XCOMM fs1 class
+fs1 {
+ charset {
+ name MICROSOFT-CP1256:GR
+ }
+ font {
+ primary MICROSOFT-CP1256:GR
+ }
+}
+END XLC_FONTSET
+
+XCOMM
+XCOMM XLC_CHARSET_DEFINE category
+XCOMM
+XLC_CHARSET_DEFINE
+csd0 {
+ charset_name MICROSOFT-CP1256
+ side GR
+ length 1
+ string_encoding False
+ sequence \x1b%/1
+}
+END XLC_CHARSET_DEFINE
+
+XCOMM
+XCOMM XLC_XLOCALE category
+XCOMM
+XLC_XLOCALE
+
+encoding_name MICROSOFT-CP1256
+mb_cur_max 1
+state_depend_encoding False
+#if WCHAR32
+wc_encoding_mask \x30000000
+wc_shift_bits 7
+#else
+wc_encoding_mask \x00008080
+wc_shift_bits 8
+#endif
+
+#ifndef X_LOCALE
+use_stdc_env True
+force_convert_to_mb True
+#endif
+
+XCOMM cs0 class
+cs0 {
+ side GL:Default
+ length 1
+ wc_encoding \x00000000
+ ct_encoding MICROSOFT-CP1256:GL; ISO8859-1:GL
+}
+
+
+XCOMM cs1 class
+cs1 {
+ side GR:Default
+ length 1
+#if WCHAR32
+ wc_encoding \x30000000
+#else
+ wc_encoding \x00008080
+#endif
+ ct_encoding MICROSOFT-CP1256:GR
+}
+
+END XLC_XLOCALE
diff --git a/libX11/nls/mulelao-1/Compose.pre b/libX11/nls/mulelao-1/Compose.pre
index c35be0f76..89302cc89 100644
--- a/libX11/nls/mulelao-1/Compose.pre
+++ b/libX11/nls/mulelao-1/Compose.pre
@@ -1,14 +1,14 @@
-XCOMM
-XCOMM mulelao-1 Compose Sequence
-XCOMM
-XCOMM Sequence Definition
-XCOMM
-XCOMM
-XCOMM This file currently has no entries. It appears that a compose file (even
-XCOMM just an empty one) is required for the appropriate keysyms to work for
-XCOMM this encoding.
-XCOMM
-XCOMM <Multi_key> Means <Compose>
-XCOMM Special Character
-
-XCOMM End of Sequence Definition
+XCOMM
+XCOMM mulelao-1 Compose Sequence
+XCOMM
+XCOMM Sequence Definition
+XCOMM
+XCOMM
+XCOMM This file currently has no entries. It appears that a compose file (even
+XCOMM just an empty one) is required for the appropriate keysyms to work for
+XCOMM this encoding.
+XCOMM
+XCOMM <Multi_key> Means <Compose>
+XCOMM Special Character
+
+XCOMM End of Sequence Definition
diff --git a/libX11/nls/mulelao-1/XI18N_OBJS b/libX11/nls/mulelao-1/XI18N_OBJS
index dbb9f0ee7..10d7248f8 100644
--- a/libX11/nls/mulelao-1/XI18N_OBJS
+++ b/libX11/nls/mulelao-1/XI18N_OBJS
@@ -1,7 +1,7 @@
-# CATEGORY(XLC|XIM|OM) SHARED_LIBRARY_NAME FUNCTION_NAME
-#
-# XI18N objects table for mulelao-1 locale
-#
-XLC common/xlcDef _XlcDefaultLoader # XLC_open
-XIM common/ximcp _XimOpenIM _XimRegisterIMInstantiateCallback _XimUnRegisterIMInstantiateCallback # XIM_open XIM_register XIM_unregister
-XOM common/xomGeneric _XomGenericOpenOM # XOM_open
+# CATEGORY(XLC|XIM|OM) SHARED_LIBRARY_NAME FUNCTION_NAME
+#
+# XI18N objects table for mulelao-1 locale
+#
+XLC common/xlcDef _XlcDefaultLoader # XLC_open
+XIM common/ximcp _XimOpenIM _XimRegisterIMInstantiateCallback _XimUnRegisterIMInstantiateCallback # XIM_open XIM_register XIM_unregister
+XOM common/xomGeneric _XomGenericOpenOM # XOM_open
diff --git a/libX11/nls/mulelao-1/XLC_LOCALE.pre b/libX11/nls/mulelao-1/XLC_LOCALE.pre
index 03676560d..45a63452f 100644
--- a/libX11/nls/mulelao-1/XLC_LOCALE.pre
+++ b/libX11/nls/mulelao-1/XLC_LOCALE.pre
@@ -1,79 +1,79 @@
-XCOMM XLocale Database Sample for mulelao-1.
-XCOMM
-
-XCOMM
-XCOMM XLC_FONTSET category
-XCOMM
-XLC_FONTSET
-XCOMM fs0 class (7 bit ASCII)
-fs0 {
- charset {
- name ISO8859-1:GL
- }
- font {
- primary MULELAO-1:GL
- substitute ISO8859-1:GL
- }
-}
-XCOMM fs1 class
-fs1 {
- charset MULELAO-1:GR
- font MULELAO-1:GR
-}
-END XLC_FONTSET
-
-XCOMM
-XCOMM XLC_CHARSET_DEFINE category
-XCOMM
-XLC_CHARSET_DEFINE
-csd0 {
- charset_name MULELAO-1
- side GR
- length 1
- string_encoding False
- sequence \x1b%/1
-}
-END XLC_CHARSET_DEFINE
-
-XCOMM
-XCOMM XLC_XLOCALE category
-XCOMM
-XLC_XLOCALE
-
-encoding_name MULELAO-1
-mb_cur_max 1
-state_depend_encoding False
-#if WCHAR32
-wc_encoding_mask \x30000000
-wc_shift_bits 7
-#else
-wc_encoding_mask \x00008080
-wc_shift_bits 8
-#endif
-
-#ifndef X_LOCALE
-use_stdc_env True
-#endif
-
-XCOMM cs0 class
-cs0 {
- side GL:Default
- length 1
- wc_encoding \x00000000
- ct_encoding MULELAO-1:GL; ISO8859-1:GL
-}
-
-
-XCOMM cs1 class
-cs1 {
- side GR:Default
- length 1
-#if WCHAR32
- wc_encoding \x30000000
-#else
- wc_encoding \x00008080
-#endif
- ct_encoding MULELAO-1:GR
-}
-
-END XLC_XLOCALE
+XCOMM XLocale Database Sample for mulelao-1.
+XCOMM
+
+XCOMM
+XCOMM XLC_FONTSET category
+XCOMM
+XLC_FONTSET
+XCOMM fs0 class (7 bit ASCII)
+fs0 {
+ charset {
+ name ISO8859-1:GL
+ }
+ font {
+ primary MULELAO-1:GL
+ substitute ISO8859-1:GL
+ }
+}
+XCOMM fs1 class
+fs1 {
+ charset MULELAO-1:GR
+ font MULELAO-1:GR
+}
+END XLC_FONTSET
+
+XCOMM
+XCOMM XLC_CHARSET_DEFINE category
+XCOMM
+XLC_CHARSET_DEFINE
+csd0 {
+ charset_name MULELAO-1
+ side GR
+ length 1
+ string_encoding False
+ sequence \x1b%/1
+}
+END XLC_CHARSET_DEFINE
+
+XCOMM
+XCOMM XLC_XLOCALE category
+XCOMM
+XLC_XLOCALE
+
+encoding_name MULELAO-1
+mb_cur_max 1
+state_depend_encoding False
+#if WCHAR32
+wc_encoding_mask \x30000000
+wc_shift_bits 7
+#else
+wc_encoding_mask \x00008080
+wc_shift_bits 8
+#endif
+
+#ifndef X_LOCALE
+use_stdc_env True
+#endif
+
+XCOMM cs0 class
+cs0 {
+ side GL:Default
+ length 1
+ wc_encoding \x00000000
+ ct_encoding MULELAO-1:GL; ISO8859-1:GL
+}
+
+
+XCOMM cs1 class
+cs1 {
+ side GR:Default
+ length 1
+#if WCHAR32
+ wc_encoding \x30000000
+#else
+ wc_encoding \x00008080
+#endif
+ ct_encoding MULELAO-1:GR
+}
+
+END XLC_XLOCALE
diff --git a/libX11/nls/nokhchi-1/XI18N_OBJS b/libX11/nls/nokhchi-1/XI18N_OBJS
index b57cb6d1f..58b1d01f7 100644
--- a/libX11/nls/nokhchi-1/XI18N_OBJS
+++ b/libX11/nls/nokhchi-1/XI18N_OBJS
@@ -1,7 +1,7 @@
-# CATEGORY(XLC|XIM|OM) SHARED_LIBRARY_NAME FUNCTION_NAME
-#
-# XI18N objects table for nokhchi-1 locale
-#
-XLC common/xlcDef _XlcDefaultLoader # XLC_open
-XIM common/ximcp _XimOpenIM _XimRegisterIMInstantiateCallback _XimUnRegisterIMInstantiateCallback # XIM_open XIM_register XIM_unregister
-XOM common/xomGeneric _XomGenericOpenOM # XOM_open
+# CATEGORY(XLC|XIM|OM) SHARED_LIBRARY_NAME FUNCTION_NAME
+#
+# XI18N objects table for nokhchi-1 locale
+#
+XLC common/xlcDef _XlcDefaultLoader # XLC_open
+XIM common/ximcp _XimOpenIM _XimRegisterIMInstantiateCallback _XimUnRegisterIMInstantiateCallback # XIM_open XIM_register XIM_unregister
+XOM common/xomGeneric _XomGenericOpenOM # XOM_open
diff --git a/libX11/nls/nokhchi-1/XLC_LOCALE.pre b/libX11/nls/nokhchi-1/XLC_LOCALE.pre
index 8fe7205d0..303867908 100644
--- a/libX11/nls/nokhchi-1/XLC_LOCALE.pre
+++ b/libX11/nls/nokhchi-1/XLC_LOCALE.pre
@@ -1,79 +1,79 @@
-XCOMM XLocale Database Sample for mulelao-1.
-XCOMM
-
-XCOMM
-XCOMM XLC_FONTSET category
-XCOMM
-XLC_FONTSET
-XCOMM fs0 class (7 bit ASCII)
-fs0 {
- charset {
- name ISO8859-1:GL
- }
- font {
- primary NOKHCHI-1:GL
- substitute ISO8859-1:GL
- }
-}
-XCOMM fs1 class
-fs1 {
- charset NOKHCHI-1:GR
- font NOKHCHI-1:GR
-}
-END XLC_FONTSET
-
-XCOMM
-XCOMM XLC_CHARSET_DEFINE category
-XCOMM
-XLC_CHARSET_DEFINE
-csd0 {
- charset_name NOKHCHI-1
- side GR
- length 1
- string_encoding False
- sequence \x1b%/1
-}
-END XLC_CHARSET_DEFINE
-
-XCOMM
-XCOMM XLC_XLOCALE category
-XCOMM
-XLC_XLOCALE
-
-encoding_name NOKHCHI-1
-mb_cur_max 1
-state_depend_encoding False
-#if WCHAR32
-wc_encoding_mask \x30000000
-wc_shift_bits 7
-#else
-wc_encoding_mask \x00008080
-wc_shift_bits 8
-#endif
-
-#ifndef X_LOCALE
-use_stdc_env True
-#endif
-
-XCOMM cs0 class
-cs0 {
- side GL:Default
- length 1
- wc_encoding \x00000000
- ct_encoding NOKHCHI-1:GL; ISO8859-1:GL
-}
-
-
-XCOMM cs1 class
-cs1 {
- side GR:Default
- length 1
-#if WCHAR32
- wc_encoding \x30000000
-#else
- wc_encoding \x00008080
-#endif
- ct_encoding NOKHCHI-1:GR
-}
-
-END XLC_XLOCALE
+XCOMM XLocale Database Sample for mulelao-1.
+XCOMM
+
+XCOMM
+XCOMM XLC_FONTSET category
+XCOMM
+XLC_FONTSET
+XCOMM fs0 class (7 bit ASCII)
+fs0 {
+ charset {
+ name ISO8859-1:GL
+ }
+ font {
+ primary NOKHCHI-1:GL
+ substitute ISO8859-1:GL
+ }
+}
+XCOMM fs1 class
+fs1 {
+ charset NOKHCHI-1:GR
+ font NOKHCHI-1:GR
+}
+END XLC_FONTSET
+
+XCOMM
+XCOMM XLC_CHARSET_DEFINE category
+XCOMM
+XLC_CHARSET_DEFINE
+csd0 {
+ charset_name NOKHCHI-1
+ side GR
+ length 1
+ string_encoding False
+ sequence \x1b%/1
+}
+END XLC_CHARSET_DEFINE
+
+XCOMM
+XCOMM XLC_XLOCALE category
+XCOMM
+XLC_XLOCALE
+
+encoding_name NOKHCHI-1
+mb_cur_max 1
+state_depend_encoding False
+#if WCHAR32
+wc_encoding_mask \x30000000
+wc_shift_bits 7
+#else
+wc_encoding_mask \x00008080
+wc_shift_bits 8
+#endif
+
+#ifndef X_LOCALE
+use_stdc_env True
+#endif
+
+XCOMM cs0 class
+cs0 {
+ side GL:Default
+ length 1
+ wc_encoding \x00000000
+ ct_encoding NOKHCHI-1:GL; ISO8859-1:GL
+}
+
+
+XCOMM cs1 class
+cs1 {
+ side GR:Default
+ length 1
+#if WCHAR32
+ wc_encoding \x30000000
+#else
+ wc_encoding \x00008080
+#endif
+ ct_encoding NOKHCHI-1:GR
+}
+
+END XLC_XLOCALE
diff --git a/libX11/nls/pt_BR.UTF-8/XI18N_OBJS b/libX11/nls/pt_BR.UTF-8/XI18N_OBJS
index 745b001d3..8eac6d8af 100644
--- a/libX11/nls/pt_BR.UTF-8/XI18N_OBJS
+++ b/libX11/nls/pt_BR.UTF-8/XI18N_OBJS
@@ -1,7 +1,7 @@
-# CATEGORY(XLC|XIM|OM) SHARED_LIBRARY_NAME FUNCTION_NAME
-#
-# XI18N objects table for pt_BR.UTF-8 locale
-#
-XLC common/xlcUTF8Load _XlcUtf8Loader # XLC_open
-XIM common/ximcp _XimOpenIM _XimRegisterIMInstantiateCallback _XimUnRegisterIMInstantiateCallback # XIM_open XIM_register XIM_unregister
-XOM common/xomGeneric _XomGenericOpenOM # XOM_open
+# CATEGORY(XLC|XIM|OM) SHARED_LIBRARY_NAME FUNCTION_NAME
+#
+# XI18N objects table for pt_BR.UTF-8 locale
+#
+XLC common/xlcUTF8Load _XlcUtf8Loader # XLC_open
+XIM common/ximcp _XimOpenIM _XimRegisterIMInstantiateCallback _XimUnRegisterIMInstantiateCallback # XIM_open XIM_register XIM_unregister
+XOM common/xomGeneric _XomGenericOpenOM # XOM_open
diff --git a/libX11/nls/pt_BR.UTF-8/XLC_LOCALE.pre b/libX11/nls/pt_BR.UTF-8/XLC_LOCALE.pre
index 64ecc5d37..e53dd5080 100644
--- a/libX11/nls/pt_BR.UTF-8/XLC_LOCALE.pre
+++ b/libX11/nls/pt_BR.UTF-8/XLC_LOCALE.pre
@@ -1,142 +1,142 @@
-XCOMM XLocale Database Sample for pt_BR.UTF-8
-XCOMM
-XCOMM Based on XLocale Database Sample for en_US.UTF-8
-XCOMM
-
-XCOMM
-XCOMM XLC_FONTSET category
-XCOMM
-XLC_FONTSET
-
-on_demand_loading True
-
-object_name generic
-
-XCOMM fs0 class (7 bit ASCII)
-fs0 {
- charset {
- name ISO8859-1:GL
- }
- font {
- primary ISO8859-1:GL
- vertical_rotate all
- }
-}
-XCOMM fs1 class (ISO8859 families)
-fs1 {
- charset {
- name ISO8859-1:GR
- }
- font {
- primary ISO8859-1:GR
- }
-}
-XCOMM fs2 class (Kanji)
-fs2 {
- charset {
- name JISX0208.1983-0:GL
- }
- font {
- primary JISX0208.1983-0:GL
- }
-}
-XCOMM fs3 class (Korean Character)
-fs3 {
- charset {
- name KSC5601.1987-0:GL
- }
- font {
- primary KSC5601.1987-0:GL
- }
-}
-XCOMM fs4 class (Chinese Han Character)
-fs4 {
- charset {
- name GB2312.1980-0:GL
- }
- font {
- primary GB2312.1980-0:GL
- }
-}
-XCOMM fs5 class (Half Kana)
-fs5 {
- charset {
- name JISX0201.1976-0:GR
- }
- font {
- primary JISX0201.1976-0:GR
- vertical_rotate all
- }
-}
-XCOMM ISO10646 is last, per Roland Mainz in
-XCOMM http://bugs.freedesktop.org/show_bug.cgi?id=1896
-fs6 {
- charset {
- name ISO10646-1
- }
- font {
- primary ISO10646-1
- }
-}
-END XLC_FONTSET
-
-XCOMM
-XCOMM XLC_XLOCALE category
-XCOMM
-XLC_XLOCALE
-
-encoding_name UTF-8
-mb_cur_max 6
-state_depend_encoding False
-
-XCOMM cs0 class
-cs0 {
- side GL:Default
- length 1
- ct_encoding ISO8859-1:GL
-}
-
-XCOMM cs1 class
-cs1 {
- side GR:Default
- length 1
- ct_encoding ISO8859-1:GR
-}
-
-XCOMM cs2 class
-cs2 {
- side GR
- length 2
- ct_encoding JISX0208.1983-0:GL; JISX0208.1983-0:GR;\
- JISX0208.1983-1:GL; JISX0208.1983-1:GR
-}
-
-XCOMM cs3 class
-cs3 {
- side GL
- length 2
- ct_encoding KSC5601.1987-0:GL; KSC5601.1987-0:GR;\
- KSC5601.1987-1:GL; KSC5601.1987-1:GR
-}
-
-XCOMM cs4 class
-cs4 {
- side GR
- length 2
- ct_encoding GB2312.1980-0:GL; GB2312.1980-0:GR
-}
-
-XCOMM cs5 class
-cs5 {
- side GR
- length 1
- ct_encoding JISX0201.1976-0:GR
-}
-
-XCOMM cs6 class
-cs6 {
- side none
- ct_encoding ISO10646-1
-}
-
-END XLC_XLOCALE
+XCOMM XLocale Database Sample for pt_BR.UTF-8
+XCOMM
+XCOMM Based on XLocale Database Sample for en_US.UTF-8
+XCOMM
+
+XCOMM
+XCOMM XLC_FONTSET category
+XCOMM
+XLC_FONTSET
+
+on_demand_loading True
+
+object_name generic
+
+XCOMM fs0 class (7 bit ASCII)
+fs0 {
+ charset {
+ name ISO8859-1:GL
+ }
+ font {
+ primary ISO8859-1:GL
+ vertical_rotate all
+ }
+}
+XCOMM fs1 class (ISO8859 families)
+fs1 {
+ charset {
+ name ISO8859-1:GR
+ }
+ font {
+ primary ISO8859-1:GR
+ }
+}
+XCOMM fs2 class (Kanji)
+fs2 {
+ charset {
+ name JISX0208.1983-0:GL
+ }
+ font {
+ primary JISX0208.1983-0:GL
+ }
+}
+XCOMM fs3 class (Korean Character)
+fs3 {
+ charset {
+ name KSC5601.1987-0:GL
+ }
+ font {
+ primary KSC5601.1987-0:GL
+ }
+}
+XCOMM fs4 class (Chinese Han Character)
+fs4 {
+ charset {
+ name GB2312.1980-0:GL
+ }
+ font {
+ primary GB2312.1980-0:GL
+ }
+}
+XCOMM fs5 class (Half Kana)
+fs5 {
+ charset {
+ name JISX0201.1976-0:GR
+ }
+ font {
+ primary JISX0201.1976-0:GR
+ vertical_rotate all
+ }
+}
+XCOMM ISO10646 is last, per Roland Mainz in
+XCOMM http://bugs.freedesktop.org/show_bug.cgi?id=1896
+fs6 {
+ charset {
+ name ISO10646-1
+ }
+ font {
+ primary ISO10646-1
+ }
+}
+END XLC_FONTSET
+
+XCOMM
+XCOMM XLC_XLOCALE category
+XCOMM
+XLC_XLOCALE
+
+encoding_name UTF-8
+mb_cur_max 6
+state_depend_encoding False
+
+XCOMM cs0 class
+cs0 {
+ side GL:Default
+ length 1
+ ct_encoding ISO8859-1:GL
+}
+
+XCOMM cs1 class
+cs1 {
+ side GR:Default
+ length 1
+ ct_encoding ISO8859-1:GR
+}
+
+XCOMM cs2 class
+cs2 {
+ side GR
+ length 2
+ ct_encoding JISX0208.1983-0:GL; JISX0208.1983-0:GR;\
+ JISX0208.1983-1:GL; JISX0208.1983-1:GR
+}
+
+XCOMM cs3 class
+cs3 {
+ side GL
+ length 2
+ ct_encoding KSC5601.1987-0:GL; KSC5601.1987-0:GR;\
+ KSC5601.1987-1:GL; KSC5601.1987-1:GR
+}
+
+XCOMM cs4 class
+cs4 {
+ side GR
+ length 2
+ ct_encoding GB2312.1980-0:GL; GB2312.1980-0:GR
+}
+
+XCOMM cs5 class
+cs5 {
+ side GR
+ length 1
+ ct_encoding JISX0201.1976-0:GR
+}
+
+XCOMM cs6 class
+cs6 {
+ side none
+ ct_encoding ISO10646-1
+}
+
+END XLC_XLOCALE
diff --git a/libX11/nls/ru_RU.UTF-8/Compose.pre b/libX11/nls/ru_RU.UTF-8/Compose.pre
index 5a4dd18b9..6c2c4114d 100644
--- a/libX11/nls/ru_RU.UTF-8/Compose.pre
+++ b/libX11/nls/ru_RU.UTF-8/Compose.pre
@@ -1 +1 @@
-include "X11_LOCALEDATADIR/en_US.UTF-8/Compose"
+include "X11_LOCALEDATADIR/en_US.UTF-8/Compose"
diff --git a/libX11/nls/ru_RU.UTF-8/XI18N_OBJS b/libX11/nls/ru_RU.UTF-8/XI18N_OBJS
index 1f8498788..842fc27f3 100644
--- a/libX11/nls/ru_RU.UTF-8/XI18N_OBJS
+++ b/libX11/nls/ru_RU.UTF-8/XI18N_OBJS
@@ -1,7 +1,7 @@
-# CATEGORY(XLC|XIM|OM) SHARED_LIBRARY_NAME FUNCTION_NAME
-#
-# XI18N objects table for ru_RU.UTF-8 locale
-#
-XLC common/xlcUTF8Load _XlcUtf8Loader # XLC_open
-XIM common/ximcp _XimOpenIM _XimRegisterIMInstantiateCallback _XimUnRegisterIMInstantiateCallback # XIM_open XIM_register XIM_unregister
-XOM common/xomGeneric _XomGenericOpenOM # XOM_open
+# CATEGORY(XLC|XIM|OM) SHARED_LIBRARY_NAME FUNCTION_NAME
+#
+# XI18N objects table for ru_RU.UTF-8 locale
+#
+XLC common/xlcUTF8Load _XlcUtf8Loader # XLC_open
+XIM common/ximcp _XimOpenIM _XimRegisterIMInstantiateCallback _XimUnRegisterIMInstantiateCallback # XIM_open XIM_register XIM_unregister
+XOM common/xomGeneric _XomGenericOpenOM # XOM_open
diff --git a/libX11/nls/ru_RU.UTF-8/XLC_LOCALE.pre b/libX11/nls/ru_RU.UTF-8/XLC_LOCALE.pre
index 9ae59e166..d2f397e47 100644
--- a/libX11/nls/ru_RU.UTF-8/XLC_LOCALE.pre
+++ b/libX11/nls/ru_RU.UTF-8/XLC_LOCALE.pre
@@ -1,169 +1,169 @@
-XCOMM
-XCOMM XLocale Database Sample for ru_RU.UTF-8
-XCOMM Derived from en_US.UTF-8
-XCOMM
-
-XCOMM
-XCOMM XLC_FONTSET category
-XCOMM
-XLC_FONTSET
-
-on_demand_loading True
-
-object_name generic
-
-XCOMM fs0 class (7 bit ASCII)
-fs0 {
- charset {
- name ISO8859-1:GL
- }
- font {
- primary ISO8859-1:GL
- vertical_rotate all
- }
-}
-XCOMM fs1 class (ISO8859 families)
-fs1 {
- charset {
- name ISO8859-1:GR
- }
- font {
- primary ISO8859-1:GR
- }
-}
-XCOMM fs2 class (KOI8-R)
-fs2 {
- charset {
- name KOI8-R:GR
- }
- font {
- primary KOI8-R:GR
- }
-}
-XCOMM fs3 class (MICROSOFT-CP1251)
-fs3 {
- charset {
- name MICROSOFT-CP1251:GR
- }
- font {
- primary MICROSOFT-CP1251:GR
- }
-}
-XCOMM fs4 class (ISO8859-5)
-fs4 {
- charset {
- name ISO8859-5:GR
- }
- font {
- primary ISO8859-5:GR
- }
-}
-XCOMM fs5 class (Kanji)
-fs5 {
- charset {
- name JISX0208.1983-0:GL
- }
- font {
- primary JISX0208.1983-0:GL
- }
-}
-XCOMM fs6 class (Korean Character)
-fs6 {
- charset {
- name KSC5601.1987-0:GL
- }
- font {
- primary KSC5601.1987-0:GL
- }
-}
-XCOMM fs7 class (Chinese Han Character)
-fs7 {
- charset {
- name GB2312.1980-0:GL
- }
- font {
- primary GB2312.1980-0:GL
- }
-}
-XCOMM fs8 class (Half Kana)
-fs8 {
- charset {
- name JISX0201.1976-0:GR
- }
- font {
- primary JISX0201.1976-0:GR
- vertical_rotate all
- }
-}
-XCOMM ISO10646 should come last so the fonts above will actually be used
-XCOMM fs9 class
-fs9 {
- charset {
- name ISO10646-1
- }
- font {
- primary ISO10646-1
- }
-}
-END XLC_FONTSET
-
-XCOMM
-XCOMM XLC_XLOCALE category
-XCOMM
-XLC_XLOCALE
-
-encoding_name UTF-8
-mb_cur_max 6
-state_depend_encoding False
-
-XCOMM cs0 class
-cs0 {
- side GL:Default
- length 1
- ct_encoding ISO8859-1:GL
-}
-
-XCOMM cs1 class
-cs1 {
- side GR:Default
- length 1
- ct_encoding ISO8859-1:GR
-}
-
-XCOMM cs2 class
-cs2 {
- side GR
- length 2
- ct_encoding JISX0208.1983-0:GL; JISX0208.1983-0:GR; JISX0208.1983-1:GL; JISX0208.1983-1:GR
-
-}
-
-XCOMM cs3 class
-cs3 {
- side GL
- length 2
- ct_encoding KSC5601.1987-0:GL; KSC5601.1987-0:GR; KSC5601.1987-1:GL; KSC5601.1987-1:GR
-
-}
-
-XCOMM cs4 class
-cs4 {
- side GR
- length 2
- ct_encoding GB2312.1980-0:GL; GB2312.1980-0:GR
-}
-
-XCOMM cs5 class
-cs5 {
- side GR
- length 1
- ct_encoding JISX0201.1976-0:GR
-}
-
-XCOMM cs6 class
-cs6 {
- side none
- ct_encoding ISO10646-1
-}
-
-END XLC_XLOCALE
+XCOMM
+XCOMM XLocale Database Sample for ru_RU.UTF-8
+XCOMM Derived from en_US.UTF-8
+XCOMM
+
+XCOMM
+XCOMM XLC_FONTSET category
+XCOMM
+XLC_FONTSET
+
+on_demand_loading True
+
+object_name generic
+
+XCOMM fs0 class (7 bit ASCII)
+fs0 {
+ charset {
+ name ISO8859-1:GL
+ }
+ font {
+ primary ISO8859-1:GL
+ vertical_rotate all
+ }
+}
+XCOMM fs1 class (ISO8859 families)
+fs1 {
+ charset {
+ name ISO8859-1:GR
+ }
+ font {
+ primary ISO8859-1:GR
+ }
+}
+XCOMM fs2 class (KOI8-R)
+fs2 {
+ charset {
+ name KOI8-R:GR
+ }
+ font {
+ primary KOI8-R:GR
+ }
+}
+XCOMM fs3 class (MICROSOFT-CP1251)
+fs3 {
+ charset {
+ name MICROSOFT-CP1251:GR
+ }
+ font {
+ primary MICROSOFT-CP1251:GR
+ }
+}
+XCOMM fs4 class (ISO8859-5)
+fs4 {
+ charset {
+ name ISO8859-5:GR
+ }
+ font {
+ primary ISO8859-5:GR
+ }
+}
+XCOMM fs5 class (Kanji)
+fs5 {
+ charset {
+ name JISX0208.1983-0:GL
+ }
+ font {
+ primary JISX0208.1983-0:GL
+ }
+}
+XCOMM fs6 class (Korean Character)
+fs6 {
+ charset {
+ name KSC5601.1987-0:GL
+ }
+ font {
+ primary KSC5601.1987-0:GL
+ }
+}
+XCOMM fs7 class (Chinese Han Character)
+fs7 {
+ charset {
+ name GB2312.1980-0:GL
+ }
+ font {
+ primary GB2312.1980-0:GL
+ }
+}
+XCOMM fs8 class (Half Kana)
+fs8 {
+ charset {
+ name JISX0201.1976-0:GR
+ }
+ font {
+ primary JISX0201.1976-0:GR
+ vertical_rotate all
+ }
+}
+XCOMM ISO10646 should come last so the fonts above will actually be used
+XCOMM fs9 class
+fs9 {
+ charset {
+ name ISO10646-1
+ }
+ font {
+ primary ISO10646-1
+ }
+}
+END XLC_FONTSET
+
+XCOMM
+XCOMM XLC_XLOCALE category
+XCOMM
+XLC_XLOCALE
+
+encoding_name UTF-8
+mb_cur_max 6
+state_depend_encoding False
+
+XCOMM cs0 class
+cs0 {
+ side GL:Default
+ length 1
+ ct_encoding ISO8859-1:GL
+}
+
+XCOMM cs1 class
+cs1 {
+ side GR:Default
+ length 1
+ ct_encoding ISO8859-1:GR
+}
+
+XCOMM cs2 class
+cs2 {
+ side GR
+ length 2
+ ct_encoding JISX0208.1983-0:GL; JISX0208.1983-0:GR; JISX0208.1983-1:GL; JISX0208.1983-1:GR
+
+}
+
+XCOMM cs3 class
+cs3 {
+ side GL
+ length 2
+ ct_encoding KSC5601.1987-0:GL; KSC5601.1987-0:GR; KSC5601.1987-1:GL; KSC5601.1987-1:GR
+
+}
+
+XCOMM cs4 class
+cs4 {
+ side GR
+ length 2
+ ct_encoding GB2312.1980-0:GL; GB2312.1980-0:GR
+}
+
+XCOMM cs5 class
+cs5 {
+ side GR
+ length 1
+ ct_encoding JISX0201.1976-0:GR
+}
+
+XCOMM cs6 class
+cs6 {
+ side none
+ ct_encoding ISO10646-1
+}
+
+END XLC_XLOCALE
diff --git a/libX11/nls/tatar-cyr/XI18N_OBJS b/libX11/nls/tatar-cyr/XI18N_OBJS
index fafb35ebe..074f2a173 100644
--- a/libX11/nls/tatar-cyr/XI18N_OBJS
+++ b/libX11/nls/tatar-cyr/XI18N_OBJS
@@ -1,7 +1,7 @@
-# CATEGORY(XLC|XIM|OM) SHARED_LIBRARY_NAME FUNCTION_NAME
-#
-# XI18N objects table for tatar-cyr locale
-#
-XLC common/xlcDef _XlcDefaultLoader # XLC_open
-XIM common/ximcp _XimOpenIM _XimRegisterIMInstantiateCallback _XimUnRegisterIMInstantiateCallback # XIM_open XIM_register XIM_unregister
-XOM common/xomGeneric _XomGenericOpenOM # XOM_open
+# CATEGORY(XLC|XIM|OM) SHARED_LIBRARY_NAME FUNCTION_NAME
+#
+# XI18N objects table for tatar-cyr locale
+#
+XLC common/xlcDef _XlcDefaultLoader # XLC_open
+XIM common/ximcp _XimOpenIM _XimRegisterIMInstantiateCallback _XimUnRegisterIMInstantiateCallback # XIM_open XIM_register XIM_unregister
+XOM common/xomGeneric _XomGenericOpenOM # XOM_open
diff --git a/libX11/nls/tatar-cyr/XLC_LOCALE.pre b/libX11/nls/tatar-cyr/XLC_LOCALE.pre
index 45c12412a..aaa95059e 100644
--- a/libX11/nls/tatar-cyr/XLC_LOCALE.pre
+++ b/libX11/nls/tatar-cyr/XLC_LOCALE.pre
@@ -1,85 +1,85 @@
-XCOMM XLocale Database Sample for tatar-cyr.
-XCOMM
-
-XCOMM
-XCOMM XLC_FONTSET category
-XCOMM
-XLC_FONTSET
-XCOMM fs0 class
-fs0 {
- charset {
- name ISO8859-1:GL
- }
- font {
- primary TATAR-CYR:GL
- substitute ISO8859-1:GL
- vertical_rotate all
- }
-}
-XCOMM fs1 class
-fs1 {
- charset {
- name TATAR-CYR:GR
- }
- font {
- primary TATAR-CYR:GR
- }
-}
-END XLC_FONTSET
-
-XCOMM
-XCOMM XLC_CHARSET_DEFINE category
-XCOMM
-XLC_CHARSET_DEFINE
-csd0 {
- charset_name TATAR-CYR
- side GR
- length 1
- string_encoding False
- sequence \x1b%/1
-}
-END XLC_CHARSET_DEFINE
-
-XCOMM
-XCOMM XLC_XLOCALE category
-XCOMM
-XLC_XLOCALE
-
-encoding_name TATAR-CYR
-mb_cur_max 1
-state_depend_encoding False
-#if WCHAR32
-wc_encoding_mask \x30000000
-wc_shift_bits 7
-#else
-wc_encoding_mask \x00008080
-wc_shift_bits 8
-#endif
-
-#ifndef X_LOCALE
-use_stdc_env True
-force_convert_to_mb True
-#endif
-
-XCOMM cs0 class
-cs0 {
- side GL:Default
- length 1
- wc_encoding \x00000000
- ct_encoding TATAR-CYR:GL; ISO8859-1:GL
-}
-
-
-XCOMM cs1 class
-cs1 {
- side GR:Default
- length 1
-#if WCHAR32
- wc_encoding \x30000000
-#else
- wc_encoding \x00008080
-#endif
- ct_encoding TATAR-CYR:GR
-}
-
-END XLC_XLOCALE
+XCOMM XLocale Database Sample for tatar-cyr.
+XCOMM
+
+XCOMM
+XCOMM XLC_FONTSET category
+XCOMM
+XLC_FONTSET
+XCOMM fs0 class
+fs0 {
+ charset {
+ name ISO8859-1:GL
+ }
+ font {
+ primary TATAR-CYR:GL
+ substitute ISO8859-1:GL
+ vertical_rotate all
+ }
+}
+XCOMM fs1 class
+fs1 {
+ charset {
+ name TATAR-CYR:GR
+ }
+ font {
+ primary TATAR-CYR:GR
+ }
+}
+END XLC_FONTSET
+
+XCOMM
+XCOMM XLC_CHARSET_DEFINE category
+XCOMM
+XLC_CHARSET_DEFINE
+csd0 {
+ charset_name TATAR-CYR
+ side GR
+ length 1
+ string_encoding False
+ sequence \x1b%/1
+}
+END XLC_CHARSET_DEFINE
+
+XCOMM
+XCOMM XLC_XLOCALE category
+XCOMM
+XLC_XLOCALE
+
+encoding_name TATAR-CYR
+mb_cur_max 1
+state_depend_encoding False
+#if WCHAR32
+wc_encoding_mask \x30000000
+wc_shift_bits 7
+#else
+wc_encoding_mask \x00008080
+wc_shift_bits 8
+#endif
+
+#ifndef X_LOCALE
+use_stdc_env True
+force_convert_to_mb True
+#endif
+
+XCOMM cs0 class
+cs0 {
+ side GL:Default
+ length 1
+ wc_encoding \x00000000
+ ct_encoding TATAR-CYR:GL; ISO8859-1:GL
+}
+
+
+XCOMM cs1 class
+cs1 {
+ side GR:Default
+ length 1
+#if WCHAR32
+ wc_encoding \x30000000
+#else
+ wc_encoding \x00008080
+#endif
+ ct_encoding TATAR-CYR:GR
+}
+
+END XLC_XLOCALE
diff --git a/libX11/nls/th_TH.UTF-8/XI18N_OBJS b/libX11/nls/th_TH.UTF-8/XI18N_OBJS
index 5fa487ffe..dec38b0f5 100644
--- a/libX11/nls/th_TH.UTF-8/XI18N_OBJS
+++ b/libX11/nls/th_TH.UTF-8/XI18N_OBJS
@@ -1,8 +1,8 @@
-# CATEGORY(XLC|XIM|OM) SHARED_LIBRARY_NAME FUNCTION_NAME
-#
-# XI18N objects table for th_TH.UTF-8 locale
-#
-#
-XLC common/xlcUTF8Load _XlcUtf8Loader # XLC_open
-XIM common/ximcp _XimOpenIM _XimRegisterIMInstantiateCallback _XimUnRegisterIMInstantiateCallback # XIM_open XIM_register XIM_unregister
-XOM common/xomGeneric _XomGenericOpenOM # XOM_open
+# CATEGORY(XLC|XIM|OM) SHARED_LIBRARY_NAME FUNCTION_NAME
+#
+# XI18N objects table for th_TH.UTF-8 locale
+#
+#
+XLC common/xlcUTF8Load _XlcUtf8Loader # XLC_open
+XIM common/ximcp _XimOpenIM _XimRegisterIMInstantiateCallback _XimUnRegisterIMInstantiateCallback # XIM_open XIM_register XIM_unregister
+XOM common/xomGeneric _XomGenericOpenOM # XOM_open
diff --git a/libX11/nls/th_TH.UTF-8/XLC_LOCALE.pre b/libX11/nls/th_TH.UTF-8/XLC_LOCALE.pre
index 165675f67..f79091ad5 100644
--- a/libX11/nls/th_TH.UTF-8/XLC_LOCALE.pre
+++ b/libX11/nls/th_TH.UTF-8/XLC_LOCALE.pre
@@ -1,79 +1,79 @@
-XCOMM XLocale Database Sample for th_TH
-XCOMM
-XCOMM
-XCOMM Modified from origial th_TH.TACTIS
-
-XCOMM
-XCOMM XLC_FONTSET category
-XCOMM
-XLC_FONTSET
-XCOMM fs0 class
-fs0 {
- charset {
- name ISO10646-1
- }
- font {
- primary ISO10646-1
- }
-}
-XCOMM We leave the legacy encodings in for the moment, because we don't
-XCOMM have that many ISO10646 fonts yet.
-XCOMM fs0 class (7 bit ASCII)
-fs1 {
- charset ISO8859-1:GL
- font ISO8859-1:GL
-}
-XCOMM fs1 class (Thai)
-fs2 {
- charset ISO8859-11:GR
- font ISO8859-11:GR
-}
-END XLC_FONTSET
-
-XCOMM
-XCOMM XLC_XLOCALE category
-XCOMM
-XLC_XLOCALE
-
-encoding_name UTF-8
-mb_cur_max 3
-state_depend_encoding False
-
-
-wc_encoding_mask \x30000000
-wc_shift_bits 7
-
-
-
-
-
-
-use_stdc_env True
-force_convert_to_mb True
-
-
-XCOMM cs0 class
-cs0 {
- side GL:Default
- length 1
- wc_encoding \x00000000
- ct_encoding ISO8859-1:GL
-}
-
-
-XCOMM cs1 class
-cs1 {
- side GR:Default
- length 1
-
- wc_encoding \x30000000
- ct_encoding ISO8859-11:GR
-}
-
-XCOMM cs2 class
-cs2 {
- side none
- ct_encoding ISO10646-1
-}
-
-END XLC_XLOCALE
+XCOMM XLocale Database Sample for th_TH
+XCOMM
+XCOMM
+XCOMM Modified from origial th_TH.TACTIS
+
+XCOMM
+XCOMM XLC_FONTSET category
+XCOMM
+XLC_FONTSET
+XCOMM fs0 class
+fs0 {
+ charset {
+ name ISO10646-1
+ }
+ font {
+ primary ISO10646-1
+ }
+}
+XCOMM We leave the legacy encodings in for the moment, because we don't
+XCOMM have that many ISO10646 fonts yet.
+XCOMM fs0 class (7 bit ASCII)
+fs1 {
+ charset ISO8859-1:GL
+ font ISO8859-1:GL
+}
+XCOMM fs1 class (Thai)
+fs2 {
+ charset ISO8859-11:GR
+ font ISO8859-11:GR
+}
+END XLC_FONTSET
+
+XCOMM
+XCOMM XLC_XLOCALE category
+XCOMM
+XLC_XLOCALE
+
+encoding_name UTF-8
+mb_cur_max 3
+state_depend_encoding False
+
+
+wc_encoding_mask \x30000000
+wc_shift_bits 7
+
+
+
+
+
+
+use_stdc_env True
+force_convert_to_mb True
+
+
+XCOMM cs0 class
+cs0 {
+ side GL:Default
+ length 1
+ wc_encoding \x00000000
+ ct_encoding ISO8859-1:GL
+}
+
+
+XCOMM cs1 class
+cs1 {
+ side GR:Default
+ length 1
+
+ wc_encoding \x30000000
+ ct_encoding ISO8859-11:GR
+}
+
+XCOMM cs2 class
+cs2 {
+ side none
+ ct_encoding ISO10646-1
+}
+
+END XLC_XLOCALE
diff --git a/libX11/nls/th_TH/XI18N_OBJS b/libX11/nls/th_TH/XI18N_OBJS
index 3b6fbbdd1..d677a002d 100644
--- a/libX11/nls/th_TH/XI18N_OBJS
+++ b/libX11/nls/th_TH/XI18N_OBJS
@@ -1,7 +1,7 @@
-# CATEGORY(XLC|XIM|OM) SHARED_LIBRARY_NAME FUNCTION_NAME
-#
-# XI18N objects table for th_TH locale
-#
-XLC common/xlcDef _XlcDefaultLoader # XLC_open
-XIM common/ximcp _XimOpenIM _XimRegisterIMInstantiateCallback _XimUnRegisterIMInstantiateCallback # XIM_open XIM_register XIM_unregister
-XOM common/xomGeneric _XomGenericOpenOM # XOM_open
+# CATEGORY(XLC|XIM|OM) SHARED_LIBRARY_NAME FUNCTION_NAME
+#
+# XI18N objects table for th_TH locale
+#
+XLC common/xlcDef _XlcDefaultLoader # XLC_open
+XIM common/ximcp _XimOpenIM _XimRegisterIMInstantiateCallback _XimUnRegisterIMInstantiateCallback # XIM_open XIM_register XIM_unregister
+XOM common/xomGeneric _XomGenericOpenOM # XOM_open
diff --git a/libX11/nls/th_TH/XLC_LOCALE.pre b/libX11/nls/th_TH/XLC_LOCALE.pre
index c349b3e8f..8530f0b0d 100644
--- a/libX11/nls/th_TH/XLC_LOCALE.pre
+++ b/libX11/nls/th_TH/XLC_LOCALE.pre
@@ -1,65 +1,65 @@
-XCOMM XLocale Database Sample for th_TH
-XCOMM
-XCOMM
-XCOMM Modified from origial th_TH.TACTIS
-
-XCOMM
-XCOMM XLC_FONTSET category
-XCOMM
-XLC_FONTSET
-XCOMM fs0 class (7 bit ASCII)
-fs0 {
- charset ISO8859-1:GL
- font ISO8859-1:GL
-}
-XCOMM fs1 class (Thai)
-fs1 {
- charset ISO8859-11:GR
- font ISO8859-11:GR
-}
-END XLC_FONTSET
-
-XCOMM
-XCOMM XLC_XLOCALE category
-XCOMM
-XLC_XLOCALE
-
-encoding_name TIS620
-mb_cur_max 1
-state_depend_encoding False
-
-#if WCHAR32
-wc_encoding_mask \x30000000
-wc_shift_bits 7
-#else
-wc_encoding_mask \x00008080
-wc_shift_bits 8
-#endif
-
-#ifndef X_LOCALE
-use_stdc_env True
-force_convert_to_mb True
-#endif
-
-XCOMM cs0 class
-cs0 {
- side GL:Default
- length 1
- wc_encoding \x00000000
- ct_encoding ISO8859-1:GL
-}
-
-
-XCOMM cs1 class
-cs1 {
- side GR:Default
- length 1
-#if WCHAR32
- wc_encoding \x30000000
-#else
- wc_encoding \x00008080
-#endif
- ct_encoding ISO8859-11:GR
-}
-
-END XLC_XLOCALE
+XCOMM XLocale Database Sample for th_TH
+XCOMM
+XCOMM
+XCOMM Modified from origial th_TH.TACTIS
+
+XCOMM
+XCOMM XLC_FONTSET category
+XCOMM
+XLC_FONTSET
+XCOMM fs0 class (7 bit ASCII)
+fs0 {
+ charset ISO8859-1:GL
+ font ISO8859-1:GL
+}
+XCOMM fs1 class (Thai)
+fs1 {
+ charset ISO8859-11:GR
+ font ISO8859-11:GR
+}
+END XLC_FONTSET
+
+XCOMM
+XCOMM XLC_XLOCALE category
+XCOMM
+XLC_XLOCALE
+
+encoding_name TIS620
+mb_cur_max 1
+state_depend_encoding False
+
+#if WCHAR32
+wc_encoding_mask \x30000000
+wc_shift_bits 7
+#else
+wc_encoding_mask \x00008080
+wc_shift_bits 8
+#endif
+
+#ifndef X_LOCALE
+use_stdc_env True
+force_convert_to_mb True
+#endif
+
+XCOMM cs0 class
+cs0 {
+ side GL:Default
+ length 1
+ wc_encoding \x00000000
+ ct_encoding ISO8859-1:GL
+}
+
+
+XCOMM cs1 class
+cs1 {
+ side GR:Default
+ length 1
+#if WCHAR32
+ wc_encoding \x30000000
+#else
+ wc_encoding \x00008080
+#endif
+ ct_encoding ISO8859-11:GR
+}
+
+END XLC_XLOCALE
diff --git a/libX11/nls/tscii-0/XI18N_OBJS b/libX11/nls/tscii-0/XI18N_OBJS
index c2d4ed7b6..237a33798 100644
--- a/libX11/nls/tscii-0/XI18N_OBJS
+++ b/libX11/nls/tscii-0/XI18N_OBJS
@@ -1,7 +1,7 @@
-# CATEGORY(XLC|XIM|OM) SHARED_LIBRARY_NAME FUNCTION_NAME
-#
-# XI18N objects table for tscii-0 locale
-#
-XLC common/xlcDef _XlcDefaultLoader # XLC_open
-XIM common/ximcp _XimOpenIM _XimRegisterIMInstantiateCallback _XimUnRegisterIMInstantiateCallback # XIM_open XIM_register XIM_unregister
-XOM common/xomGeneric _XomGenericOpenOM # XOM_open
+# CATEGORY(XLC|XIM|OM) SHARED_LIBRARY_NAME FUNCTION_NAME
+#
+# XI18N objects table for tscii-0 locale
+#
+XLC common/xlcDef _XlcDefaultLoader # XLC_open
+XIM common/ximcp _XimOpenIM _XimRegisterIMInstantiateCallback _XimUnRegisterIMInstantiateCallback # XIM_open XIM_register XIM_unregister
+XOM common/xomGeneric _XomGenericOpenOM # XOM_open
diff --git a/libX11/nls/tscii-0/XLC_LOCALE.pre b/libX11/nls/tscii-0/XLC_LOCALE.pre
index 04317ce1a..617bfdfe3 100644
--- a/libX11/nls/tscii-0/XLC_LOCALE.pre
+++ b/libX11/nls/tscii-0/XLC_LOCALE.pre
@@ -1,79 +1,79 @@
-XCOMM XLocale Database Sample for mulelao-1.
-XCOMM
-
-XCOMM
-XCOMM XLC_FONTSET category
-XCOMM
-XLC_FONTSET
-XCOMM fs0 class (7 bit ASCII)
-fs0 {
- charset {
- name ISO8859-1:GL
- }
- font {
- primary TSCII-0:GL
- substitute ISO8859-1:GL
- }
-}
-XCOMM fs1 class
-fs1 {
- charset TSCII-0:GR
- font TSCII-0:GR
-}
-END XLC_FONTSET
-
-XCOMM
-XCOMM XLC_CHARSET_DEFINE category
-XCOMM
-XLC_CHARSET_DEFINE
-csd0 {
- charset_name TSCII-0
- side GR
- length 1
- string_encoding False
- sequence \x1b%/1
-}
-END XLC_CHARSET_DEFINE
-
-XCOMM
-XCOMM XLC_XLOCALE category
-XCOMM
-XLC_XLOCALE
-
-encoding_name TSCII-0
-mb_cur_max 1
-state_depend_encoding False
-#if WCHAR32
-wc_encoding_mask \x30000000
-wc_shift_bits 7
-#else
-wc_encoding_mask \x00008080
-wc_shift_bits 8
-#endif
-
-#ifndef X_LOCALE
-use_stdc_env True
-#endif
-
-XCOMM cs0 class
-cs0 {
- side GL:Default
- length 1
- wc_encoding \x00000000
- ct_encoding TSCII-0:GL; ISO8859-1:GL
-}
-
-
-XCOMM cs1 class
-cs1 {
- side GR:Default
- length 1
-#if WCHAR32
- wc_encoding \x30000000
-#else
- wc_encoding \x00008080
-#endif
- ct_encoding TSCII-0:GR
-}
-
-END XLC_XLOCALE
+XCOMM XLocale Database Sample for mulelao-1.
+XCOMM
+
+XCOMM
+XCOMM XLC_FONTSET category
+XCOMM
+XLC_FONTSET
+XCOMM fs0 class (7 bit ASCII)
+fs0 {
+ charset {
+ name ISO8859-1:GL
+ }
+ font {
+ primary TSCII-0:GL
+ substitute ISO8859-1:GL
+ }
+}
+XCOMM fs1 class
+fs1 {
+ charset TSCII-0:GR
+ font TSCII-0:GR
+}
+END XLC_FONTSET
+
+XCOMM
+XCOMM XLC_CHARSET_DEFINE category
+XCOMM
+XLC_CHARSET_DEFINE
+csd0 {
+ charset_name TSCII-0
+ side GR
+ length 1
+ string_encoding False
+ sequence \x1b%/1
+}
+END XLC_CHARSET_DEFINE
+
+XCOMM
+XCOMM XLC_XLOCALE category
+XCOMM
+XLC_XLOCALE
+
+encoding_name TSCII-0
+mb_cur_max 1
+state_depend_encoding False
+#if WCHAR32
+wc_encoding_mask \x30000000
+wc_shift_bits 7
+#else
+wc_encoding_mask \x00008080
+wc_shift_bits 8
+#endif
+
+#ifndef X_LOCALE
+use_stdc_env True
+#endif
+
+XCOMM cs0 class
+cs0 {
+ side GL:Default
+ length 1
+ wc_encoding \x00000000
+ ct_encoding TSCII-0:GL; ISO8859-1:GL
+}
+
+
+XCOMM cs1 class
+cs1 {
+ side GR:Default
+ length 1
+#if WCHAR32
+ wc_encoding \x30000000
+#else
+ wc_encoding \x00008080
+#endif
+ ct_encoding TSCII-0:GR
+}
+
+END XLC_XLOCALE
diff --git a/libX11/nls/vi_VN.tcvn/Compose.pre b/libX11/nls/vi_VN.tcvn/Compose.pre
index bff4826f5..0f2279d36 100644
--- a/libX11/nls/vi_VN.tcvn/Compose.pre
+++ b/libX11/nls/vi_VN.tcvn/Compose.pre
@@ -1,135 +1,135 @@
-XCOMM 1998/12/18 Le Hong Boi $
-XCOMM
-XCOMM TCVN 5712-2 Compose Sequences
-XCOMM
-XCOMM Sequence Definition
-XCOMM
-XCOMM dead key accent keysyms
-XCOMM Special Character
-<dead_grave> <space> : "`" grave
-<dead_hook> <space> : " " space
-<dead_tilde> <space> : "~" asciitilde
-<dead_acute> <space> : "'" apostrophe
-<dead_acute> <apostrophe> : "\264" acute
-XCOMM Accented Alphabet
-<dead_grave> <A> : "\200" Agrave
-<dead_grave> <a> : "\265" agrave
-<dead_hook> <A> : "\266" Ahook
-<dead_hook> <a> : "\266" ahook
-<dead_tilde> <A> : "\202" Atilde
-<dead_tilde> <a> : "\267" atilde
-<dead_acute> <A> : "\203" Aacute
-<dead_acute> <a> : "\270" aacute
-<dead_belowdot> <A> : "\271" Abelowdot
-<dead_belowdot> <a> : "\271" abelowdot
-<dead_grave> <Abreve> : "\273" Abrevegrave
-<dead_grave> <abreve> : "\273" abrevegrave
-<dead_hook> <Abreve> : "\274" Abrevehook
-<dead_hook> <abreve> : "\274" abrevehook
-<dead_tilde> <Abreve> : "\275" Abrevetilde
-<dead_tilde> <abreve> : "\275" abrevetilde
-<dead_acute> <Abreve> : "\276" Abreveacute
-<dead_acute> <abreve> : "\276" abreveacute
-<dead_belowdot> <Abreve> : "\306" Abrevebelowdot
-<dead_belowdot> <abreve> : "\306" abrevebelowdot
-<dead_grave> <Acircumflex> : "\307" Acircumflexgrave
-<dead_grave> <acircumflex> : "\307" acircumflexgrave
-<dead_hook> <Acircumflex> : "\310" Acircumflexhook
-<dead_hook> <acircumflex> : "\310" acircumflexhook
-<dead_tilde> <Acircumflex> : "\311" Acircumflextilde
-<dead_tilde> <acircumflex> : "\311" acircumflextilde
-<dead_acute> <Acircumflex> : "\312" Acircumflexacute
-<dead_acute> <acircumflex> : "\312" acircumflexacute
-<dead_belowdot> <Acircumflex> : "\313" Acircumflexbelowdot
-<dead_belowdot> <acircumflex> : "\313" acircumflexbelowdot
-<dead_grave> <E> : "\207" Egrave
-<dead_grave> <e> : "\314" egrave
-<dead_hook> <E> : "\316" Ehook
-<dead_hook> <e> : "\316" ehook
-<dead_tilde> <E> : "\317" Etilde
-<dead_tilde> <e> : "\317" etilde
-<dead_acute> <E> : "\212" Eacute
-<dead_acute> <e> : "\320" eacute
-<dead_belowdot> <E> : "\321" Ebelowdot
-<dead_belowdot> <e> : "\321" ebelowdot
-<dead_grave> <Ecircumflex> : "\322" Ecircumflexgrave
-<dead_grave> <ecircumflex> : "\322" ecircumflexgrave
-<dead_hook> <Ecircumflex> : "\323" Ecircumflexhook
-<dead_hook> <ecircumflex> : "\323" ecircumflexhook
-<dead_tilde> <Ecircumflex> : "\324" Ecircumflextilde
-<dead_tilde> <ecircumflex> : "\324" ecircumflextilde
-<dead_acute> <Ecircumflex> : "\325" Ecircumflexacute
-<dead_acute> <ecircumflex> : "\325" ecircumflexacute
-<dead_belowdot> <Ecircumflex> : "\326" Ecircumflexbelowdot
-<dead_belowdot> <ecircumflex> : "\326" ecircumflexbelowdot
-<dead_grave> <I> : "\215" Igrave
-<dead_grave> <i> : "\327" igrave
-<dead_hook> <I> : "\330" Ihook
-<dead_hook> <i> : "\330" ihook
-<dead_tilde> <I> : "\217" Itilde
-<dead_tilde> <i> : "\334" itilde
-<dead_acute> <I> : "\220" Iacute
-<dead_acute> <i> : "\335" iacute
-<dead_belowdot> <I> : "\336" Ibelowdot
-<dead_belowdot> <i> : "\336" ibelowdot
-<dead_grave> <O> : "\222" Ograve
-<dead_grave> <o> : "\337" ograve
-<dead_hook> <O> : "\341" Ohook
-<dead_hook> <o> : "\341" ohook
-<dead_tilde> <O> : "\224" Otilde
-<dead_tilde> <o> : "\342" otilde
-<dead_acute> <O> : "\225" Oacute
-<dead_acute> <o> : "\343" oacute
-<dead_belowdot> <O> : "\344" Obelowdot
-<dead_belowdot> <o> : "\344" obelowdot
-<dead_grave> <Ocircumflex> : "\345" Ocircumflexgrave
-<dead_grave> <ocircumflex> : "\345" ocircumflexgrave
-<dead_hook> <Ocircumflex> : "\346" Ocircumflexhook
-<dead_hook> <ocircumflex> : "\346" ocircumflexhook
-<dead_tilde> <Ocircumflex> : "\347" Ocircumflextilde
-<dead_tilde> <ocircumflex> : "\347" ocircumflextilde
-<dead_acute> <Ocircumflex> : "\350" Ocircumflexacute
-<dead_acute> <ocircumflex> : "\350" ocircumflexacute
-<dead_belowdot> <Ocircumflex> : "\351" Ocircumflexbelowdot
-<dead_belowdot> <ocircumflex> : "\351" ocircumflexbelowdot
-<dead_grave> <Ohorn> : "\352" Ohorngrave
-<dead_grave> <ohorn> : "\352" ohorngrave
-<dead_hook> <Ohorn> : "\353" Ohornhook
-<dead_hook> <ohorn> : "\353" ohornhook
-<dead_tilde> <Ohorn> : "\354" Ohorntilde
-<dead_tilde> <ohorn> : "\354" ohorntilde
-<dead_acute> <Ohorn> : "\355" Ohornacute
-<dead_acute> <ohorn> : "\355" ohornacute
-<dead_belowdot> <Ohorn> : "\356" Ohornbelowdot
-<dead_belowdot> <ohorn> : "\356" ohornbelowdot
-<dead_grave> <U> : "\235" Ugrave
-<dead_grave> <u> : "\357" ugrave
-<dead_hook> <U> : "\361" Uhook
-<dead_hook> <u> : "\361" uhook
-<dead_tilde> <U> : "\237" Utilde
-<dead_tilde> <u> : "\362" utilde
-<dead_acute> <U> : "\001" Uacute
-<dead_acute> <u> : "\363" uacute
-<dead_belowdot> <U> : "\364" Ubelowdot
-<dead_belowdot> <u> : "\364" ubelowdot
-<dead_grave> <Uhorn> : "\365" Uhorngrave
-<dead_grave> <uhorn> : "\365" uhorngrave
-<dead_hook> <Uhorn> : "\366" Uhornhook
-<dead_hook> <uhorn> : "\366" uhornhook
-<dead_tilde> <Uhorn> : "\367" Uhorntilde
-<dead_tilde> <uhorn> : "\367" uhorntilde
-<dead_acute> <Uhorn> : "\370" Uhornacute
-<dead_acute> <uhorn> : "\370" uhornacute
-<dead_belowdot> <Uhorn> : "\371" Uhornbelowdot
-<dead_belowdot> <uhorn> : "\371" uhornbelowdot
-<dead_grave> <Y> : "\023" Ygrave
-<dead_grave> <y> : "\372" ygrave
-<dead_hook> <Y> : "\373" Yhook
-<dead_hook> <y> : "\373" yhook
-<dead_tilde> <Y> : "\374" Ytilde
-<dead_tilde> <y> : "\374" ytilde
-<dead_acute> <Y> : "\026" Yacute
-<dead_acute> <y> : "\375" yacute
-<dead_belowdot> <Y> : "\376" Ybelowdot
-<dead_belowdot> <y> : "\376" ybelowdot
-XCOMM End of Sequence Definition
+XCOMM 1998/12/18 Le Hong Boi $
+XCOMM
+XCOMM TCVN 5712-2 Compose Sequences
+XCOMM
+XCOMM Sequence Definition
+XCOMM
+XCOMM dead key accent keysyms
+XCOMM Special Character
+<dead_grave> <space> : "`" grave
+<dead_hook> <space> : " " space
+<dead_tilde> <space> : "~" asciitilde
+<dead_acute> <space> : "'" apostrophe
+<dead_acute> <apostrophe> : "\264" acute
+XCOMM Accented Alphabet
+<dead_grave> <A> : "\200" Agrave
+<dead_grave> <a> : "\265" agrave
+<dead_hook> <A> : "\266" Ahook
+<dead_hook> <a> : "\266" ahook
+<dead_tilde> <A> : "\202" Atilde
+<dead_tilde> <a> : "\267" atilde
+<dead_acute> <A> : "\203" Aacute
+<dead_acute> <a> : "\270" aacute
+<dead_belowdot> <A> : "\271" Abelowdot
+<dead_belowdot> <a> : "\271" abelowdot
+<dead_grave> <Abreve> : "\273" Abrevegrave
+<dead_grave> <abreve> : "\273" abrevegrave
+<dead_hook> <Abreve> : "\274" Abrevehook
+<dead_hook> <abreve> : "\274" abrevehook
+<dead_tilde> <Abreve> : "\275" Abrevetilde
+<dead_tilde> <abreve> : "\275" abrevetilde
+<dead_acute> <Abreve> : "\276" Abreveacute
+<dead_acute> <abreve> : "\276" abreveacute
+<dead_belowdot> <Abreve> : "\306" Abrevebelowdot
+<dead_belowdot> <abreve> : "\306" abrevebelowdot
+<dead_grave> <Acircumflex> : "\307" Acircumflexgrave
+<dead_grave> <acircumflex> : "\307" acircumflexgrave
+<dead_hook> <Acircumflex> : "\310" Acircumflexhook
+<dead_hook> <acircumflex> : "\310" acircumflexhook
+<dead_tilde> <Acircumflex> : "\311" Acircumflextilde
+<dead_tilde> <acircumflex> : "\311" acircumflextilde
+<dead_acute> <Acircumflex> : "\312" Acircumflexacute
+<dead_acute> <acircumflex> : "\312" acircumflexacute
+<dead_belowdot> <Acircumflex> : "\313" Acircumflexbelowdot
+<dead_belowdot> <acircumflex> : "\313" acircumflexbelowdot
+<dead_grave> <E> : "\207" Egrave
+<dead_grave> <e> : "\314" egrave
+<dead_hook> <E> : "\316" Ehook
+<dead_hook> <e> : "\316" ehook
+<dead_tilde> <E> : "\317" Etilde
+<dead_tilde> <e> : "\317" etilde
+<dead_acute> <E> : "\212" Eacute
+<dead_acute> <e> : "\320" eacute
+<dead_belowdot> <E> : "\321" Ebelowdot
+<dead_belowdot> <e> : "\321" ebelowdot
+<dead_grave> <Ecircumflex> : "\322" Ecircumflexgrave
+<dead_grave> <ecircumflex> : "\322" ecircumflexgrave
+<dead_hook> <Ecircumflex> : "\323" Ecircumflexhook
+<dead_hook> <ecircumflex> : "\323" ecircumflexhook
+<dead_tilde> <Ecircumflex> : "\324" Ecircumflextilde
+<dead_tilde> <ecircumflex> : "\324" ecircumflextilde
+<dead_acute> <Ecircumflex> : "\325" Ecircumflexacute
+<dead_acute> <ecircumflex> : "\325" ecircumflexacute
+<dead_belowdot> <Ecircumflex> : "\326" Ecircumflexbelowdot
+<dead_belowdot> <ecircumflex> : "\326" ecircumflexbelowdot
+<dead_grave> <I> : "\215" Igrave
+<dead_grave> <i> : "\327" igrave
+<dead_hook> <I> : "\330" Ihook
+<dead_hook> <i> : "\330" ihook
+<dead_tilde> <I> : "\217" Itilde
+<dead_tilde> <i> : "\334" itilde
+<dead_acute> <I> : "\220" Iacute
+<dead_acute> <i> : "\335" iacute
+<dead_belowdot> <I> : "\336" Ibelowdot
+<dead_belowdot> <i> : "\336" ibelowdot
+<dead_grave> <O> : "\222" Ograve
+<dead_grave> <o> : "\337" ograve
+<dead_hook> <O> : "\341" Ohook
+<dead_hook> <o> : "\341" ohook
+<dead_tilde> <O> : "\224" Otilde
+<dead_tilde> <o> : "\342" otilde
+<dead_acute> <O> : "\225" Oacute
+<dead_acute> <o> : "\343" oacute
+<dead_belowdot> <O> : "\344" Obelowdot
+<dead_belowdot> <o> : "\344" obelowdot
+<dead_grave> <Ocircumflex> : "\345" Ocircumflexgrave
+<dead_grave> <ocircumflex> : "\345" ocircumflexgrave
+<dead_hook> <Ocircumflex> : "\346" Ocircumflexhook
+<dead_hook> <ocircumflex> : "\346" ocircumflexhook
+<dead_tilde> <Ocircumflex> : "\347" Ocircumflextilde
+<dead_tilde> <ocircumflex> : "\347" ocircumflextilde
+<dead_acute> <Ocircumflex> : "\350" Ocircumflexacute
+<dead_acute> <ocircumflex> : "\350" ocircumflexacute
+<dead_belowdot> <Ocircumflex> : "\351" Ocircumflexbelowdot
+<dead_belowdot> <ocircumflex> : "\351" ocircumflexbelowdot
+<dead_grave> <Ohorn> : "\352" Ohorngrave
+<dead_grave> <ohorn> : "\352" ohorngrave
+<dead_hook> <Ohorn> : "\353" Ohornhook
+<dead_hook> <ohorn> : "\353" ohornhook
+<dead_tilde> <Ohorn> : "\354" Ohorntilde
+<dead_tilde> <ohorn> : "\354" ohorntilde
+<dead_acute> <Ohorn> : "\355" Ohornacute
+<dead_acute> <ohorn> : "\355" ohornacute
+<dead_belowdot> <Ohorn> : "\356" Ohornbelowdot
+<dead_belowdot> <ohorn> : "\356" ohornbelowdot
+<dead_grave> <U> : "\235" Ugrave
+<dead_grave> <u> : "\357" ugrave
+<dead_hook> <U> : "\361" Uhook
+<dead_hook> <u> : "\361" uhook
+<dead_tilde> <U> : "\237" Utilde
+<dead_tilde> <u> : "\362" utilde
+<dead_acute> <U> : "\001" Uacute
+<dead_acute> <u> : "\363" uacute
+<dead_belowdot> <U> : "\364" Ubelowdot
+<dead_belowdot> <u> : "\364" ubelowdot
+<dead_grave> <Uhorn> : "\365" Uhorngrave
+<dead_grave> <uhorn> : "\365" uhorngrave
+<dead_hook> <Uhorn> : "\366" Uhornhook
+<dead_hook> <uhorn> : "\366" uhornhook
+<dead_tilde> <Uhorn> : "\367" Uhorntilde
+<dead_tilde> <uhorn> : "\367" uhorntilde
+<dead_acute> <Uhorn> : "\370" Uhornacute
+<dead_acute> <uhorn> : "\370" uhornacute
+<dead_belowdot> <Uhorn> : "\371" Uhornbelowdot
+<dead_belowdot> <uhorn> : "\371" uhornbelowdot
+<dead_grave> <Y> : "\023" Ygrave
+<dead_grave> <y> : "\372" ygrave
+<dead_hook> <Y> : "\373" Yhook
+<dead_hook> <y> : "\373" yhook
+<dead_tilde> <Y> : "\374" Ytilde
+<dead_tilde> <y> : "\374" ytilde
+<dead_acute> <Y> : "\026" Yacute
+<dead_acute> <y> : "\375" yacute
+<dead_belowdot> <Y> : "\376" Ybelowdot
+<dead_belowdot> <y> : "\376" ybelowdot
+XCOMM End of Sequence Definition
diff --git a/libX11/nls/vi_VN.tcvn/XI18N_OBJS b/libX11/nls/vi_VN.tcvn/XI18N_OBJS
index 0b3507b84..cff66dfca 100644
--- a/libX11/nls/vi_VN.tcvn/XI18N_OBJS
+++ b/libX11/nls/vi_VN.tcvn/XI18N_OBJS
@@ -1,7 +1,7 @@
-# CATEGORY(XLC|XIM|OM) SHARED_LIBRARY_NAME FUNCTION_NAME
-#
-# XI18N objects table for vi_VN.tcvn locale
-#
-XLC common/xlcDef _XlcDefaultLoader # XLC_open
-XIM common/ximcp _XimOpenIM _XimRegisterIMInstantiateCallback _XimUnRegisterIMInstantiateCallback # XIM_open XIM_register XIM_unregister
-XOM common/xomGeneric _XomGenericOpenOM # XOM_open
+# CATEGORY(XLC|XIM|OM) SHARED_LIBRARY_NAME FUNCTION_NAME
+#
+# XI18N objects table for vi_VN.tcvn locale
+#
+XLC common/xlcDef _XlcDefaultLoader # XLC_open
+XIM common/ximcp _XimOpenIM _XimRegisterIMInstantiateCallback _XimUnRegisterIMInstantiateCallback # XIM_open XIM_register XIM_unregister
+XOM common/xomGeneric _XomGenericOpenOM # XOM_open
diff --git a/libX11/nls/vi_VN.tcvn/XLC_LOCALE.pre b/libX11/nls/vi_VN.tcvn/XLC_LOCALE.pre
index 5e149f68a..d2897d6dd 100644
--- a/libX11/nls/vi_VN.tcvn/XLC_LOCALE.pre
+++ b/libX11/nls/vi_VN.tcvn/XLC_LOCALE.pre
@@ -1,79 +1,79 @@
-XCOMM XLocale Database Sample for vi_VN.TCVN
-XCOMM
-
-XCOMM
-XCOMM XLC_FONTSET category
-XCOMM
-XLC_FONTSET
-XCOMM fs0 class (7 bit ASCII)
-fs0 {
- charset {
- name ISO8859-1:GL
- }
- font {
- primary TCVN-5712:GL
- substitute ISO8859-1:GL
- }
-}
-XCOMM fs1 class
-fs1 {
- charset TCVN-5712:GR
- font TCVN-5712:GR
-}
-END XLC_FONTSET
-
-XCOMM
-XCOMM XLC_CHARSET_DEFINE category
-XCOMM
-XLC_CHARSET_DEFINE
-csd0 {
- charset_name TCVN-5712
- side GR
- length 1
- string_encoding False
- sequence \x1b%/1
-}
-END XLC_CHARSET_DEFINE
-
-XCOMM
-XCOMM XLC_XLOCALE category
-XCOMM
-XLC_XLOCALE
-
-encoding_name TCVN-5712
-mb_cur_max 1
-state_depend_encoding False
-#if WCHAR32
-wc_encoding_mask \x30000000
-wc_shift_bits 7
-#else
-wc_encoding_mask \x00008080
-wc_shift_bits 8
-#endif
-
-#ifndef X_LOCALE
-use_stdc_env True
-#endif
-
-XCOMM cs0 class
-cs0 {
- side GL:Default
- length 1
- wc_encoding \x00000000
- ct_encoding TCVN-5712:GL; ISO8859-1:GL
-}
-
-
-XCOMM cs1 class
-cs1 {
- side GR:Default
- length 1
-#if WCHAR32
- wc_encoding \x30000000
-#else
- wc_encoding \x00008080
-#endif
- ct_encoding TCVN-5712:GR
-}
-
-END XLC_XLOCALE
+XCOMM XLocale Database Sample for vi_VN.TCVN
+XCOMM
+
+XCOMM
+XCOMM XLC_FONTSET category
+XCOMM
+XLC_FONTSET
+XCOMM fs0 class (7 bit ASCII)
+fs0 {
+ charset {
+ name ISO8859-1:GL
+ }
+ font {
+ primary TCVN-5712:GL
+ substitute ISO8859-1:GL
+ }
+}
+XCOMM fs1 class
+fs1 {
+ charset TCVN-5712:GR
+ font TCVN-5712:GR
+}
+END XLC_FONTSET
+
+XCOMM
+XCOMM XLC_CHARSET_DEFINE category
+XCOMM
+XLC_CHARSET_DEFINE
+csd0 {
+ charset_name TCVN-5712
+ side GR
+ length 1
+ string_encoding False
+ sequence \x1b%/1
+}
+END XLC_CHARSET_DEFINE
+
+XCOMM
+XCOMM XLC_XLOCALE category
+XCOMM
+XLC_XLOCALE
+
+encoding_name TCVN-5712
+mb_cur_max 1
+state_depend_encoding False
+#if WCHAR32
+wc_encoding_mask \x30000000
+wc_shift_bits 7
+#else
+wc_encoding_mask \x00008080
+wc_shift_bits 8
+#endif
+
+#ifndef X_LOCALE
+use_stdc_env True
+#endif
+
+XCOMM cs0 class
+cs0 {
+ side GL:Default
+ length 1
+ wc_encoding \x00000000
+ ct_encoding TCVN-5712:GL; ISO8859-1:GL
+}
+
+
+XCOMM cs1 class
+cs1 {
+ side GR:Default
+ length 1
+#if WCHAR32
+ wc_encoding \x30000000
+#else
+ wc_encoding \x00008080
+#endif
+ ct_encoding TCVN-5712:GR
+}
+
+END XLC_XLOCALE
diff --git a/libX11/nls/vi_VN.viscii/Compose.pre b/libX11/nls/vi_VN.viscii/Compose.pre
index 7f4338712..59cdb83ce 100644
--- a/libX11/nls/vi_VN.viscii/Compose.pre
+++ b/libX11/nls/vi_VN.viscii/Compose.pre
@@ -1,135 +1,135 @@
-XCOMM 1998/12/18 Le Hong Boi $
-XCOMM
-XCOMM TCVN 5712-2 Compose Sequences
-XCOMM
-XCOMM Sequence Definition
-XCOMM
-XCOMM dead key accent keysyms
-XCOMM Special Character
-<dead_grave> <space> : "`" grave
-<dead_hook> <space> : " " space
-<dead_tilde> <space> : "~" asciitilde
-<dead_acute> <space> : "'" apostrophe
-<dead_acute> <apostrophe> : "\264" acute
-XCOMM Accented Alphabet
-<dead_grave> <A> : "\300" Agrave
-<dead_grave> <a> : "\340" agrave
-<dead_hook> <A> : "\304" Ahook
-<dead_hook> <a> : "\344" ahook
-<dead_tilde> <A> : "\303" Atilde
-<dead_tilde> <a> : "\343" atilde
-<dead_acute> <A> : "\301" Aacute
-<dead_acute> <a> : "\341" aacute
-<dead_belowdot> <A> : "\200" Abelowdot
-<dead_belowdot> <a> : "\325" abelowdot
-<dead_grave> <Abreve> : "\202" Abrevegrave
-<dead_grave> <abreve> : "\242" abrevegrave
-<dead_hook> <Abreve> : "\002" Abrevehook
-<dead_hook> <abreve> : "\306" abrevehook
-<dead_tilde> <Abreve> : "\005" Abrevetilde
-<dead_tilde> <abreve> : "\307" abrevetilde
-<dead_acute> <Abreve> : "\201" Abreveacute
-<dead_acute> <abreve> : "\241" abreveacute
-<dead_belowdot> <Abreve> : "\203" Abrevebelowdot
-<dead_belowdot> <abreve> : "\243" abrevebelowdot
-<dead_grave> <Acircumflex> : "\205" Acircumflexgrave
-<dead_grave> <acircumflex> : "\245" acircumflexgrave
-<dead_hook> <Acircumflex> : "\206" Acircumflexhook
-<dead_hook> <acircumflex> : "\246" acircumflexhook
-<dead_tilde> <Acircumflex> : "\006" Acircumflextilde
-<dead_tilde> <acircumflex> : "\347" acircumflextilde
-<dead_acute> <Acircumflex> : "\204" Acircumflexacute
-<dead_acute> <acircumflex> : "\244" acircumflexacute
-<dead_belowdot> <Acircumflex> : "\207" Acircumflexbelowdot
-<dead_belowdot> <acircumflex> : "\247" acircumflexbelowdot
-<dead_grave> <E> : "\310" Egrave
-<dead_grave> <e> : "\350" egrave
-<dead_hook> <E> : "\313" Ehook
-<dead_hook> <e> : "\353" ehook
-<dead_tilde> <E> : "\210" Etilde
-<dead_tilde> <e> : "\250" etilde
-<dead_acute> <E> : "\311" Eacute
-<dead_acute> <e> : "\351" eacute
-<dead_belowdot> <E> : "\211" Ebelowdot
-<dead_belowdot> <e> : "\251" ebelowdot
-<dead_grave> <Ecircumflex> : "\213" Ecircumflexgrave
-<dead_grave> <ecircumflex> : "\253" ecircumflexgrave
-<dead_hook> <Ecircumflex> : "\214" Ecircumflexhook
-<dead_hook> <ecircumflex> : "\254" ecircumflexhook
-<dead_tilde> <Ecircumflex> : "\215" Ecircumflextilde
-<dead_tilde> <ecircumflex> : "\255" ecircumflextilde
-<dead_acute> <Ecircumflex> : "\212" Ecircumflexacute
-<dead_acute> <ecircumflex> : "\252" ecircumflexacute
-<dead_belowdot> <Ecircumflex> : "\216" Ecircumflexbelowdot
-<dead_belowdot> <ecircumflex> : "\256" ecircumflexbelowdot
-<dead_grave> <I> : "\314" Igrave
-<dead_grave> <i> : "\354" igrave
-<dead_hook> <I> : "\233" Ihook
-<dead_hook> <i> : "\357" ihook
-<dead_tilde> <I> : "\316" Itilde
-<dead_tilde> <i> : "\356" itilde
-<dead_acute> <I> : "\315" Iacute
-<dead_acute> <i> : "\355" iacute
-<dead_belowdot> <I> : "\230" Ibelowdot
-<dead_belowdot> <i> : "\270" ibelowdot
-<dead_grave> <O> : "\322" Ograve
-<dead_grave> <o> : "\362" ograve
-<dead_hook> <O> : "\231" Ohook
-<dead_hook> <o> : "\366" ohook
-<dead_tilde> <O> : "\240" Otilde
-<dead_tilde> <o> : "\365" otilde
-<dead_acute> <O> : "\323" Oacute
-<dead_acute> <o> : "\363" oacute
-<dead_belowdot> <O> : "\232" Obelowdot
-<dead_belowdot> <o> : "\367" obelowdot
-<dead_grave> <Ocircumflex> : "\220" Ocircumflexgrave
-<dead_grave> <ocircumflex> : "\260" ocircumflexgrave
-<dead_hook> <Ocircumflex> : "\221" Ocircumflexhook
-<dead_hook> <ocircumflex> : "\261" ocircumflexhook
-<dead_tilde> <Ocircumflex> : "\222" Ocircumflextilde
-<dead_tilde> <ocircumflex> : "\262" ocircumflextilde
-<dead_acute> <Ocircumflex> : "\217" Ocircumflexacute
-<dead_acute> <ocircumflex> : "\257" ocircumflexacute
-<dead_belowdot> <Ocircumflex> : "\223" Ocircumflexbelowdot
-<dead_belowdot> <ocircumflex> : "\265" ocircumflexbelowdot
-<dead_grave> <Ohorn> : "\226" Ohorngrave
-<dead_grave> <ohorn> : "\266" ohorngrave
-<dead_hook> <Ohorn> : "\227" Ohornhook
-<dead_hook> <ohorn> : "\267" ohornhook
-<dead_tilde> <Ohorn> : "\263" Ohorntilde
-<dead_tilde> <ohorn> : "\336" ohorntilde
-<dead_acute> <Ohorn> : "\225" Ohornacute
-<dead_acute> <ohorn> : "\276" ohornacute
-<dead_belowdot> <Ohorn> : "\224" Ohornbelowdot
-<dead_belowdot> <ohorn> : "\376" ohornbelowdot
-<dead_grave> <U> : "\331" Ugrave
-<dead_grave> <u> : "\371" ugrave
-<dead_hook> <U> : "\234" Uhook
-<dead_hook> <u> : "\374" uhook
-<dead_tilde> <U> : "\235" Utilde
-<dead_tilde> <u> : "\373" utilde
-<dead_acute> <U> : "\332" Uacute
-<dead_acute> <u> : "\372" uacute
-<dead_belowdot> <U> : "\236" Ubelowdot
-<dead_belowdot> <u> : "\370" ubelowdot
-<dead_grave> <Uhorn> : "\273" Uhorngrave
-<dead_grave> <uhorn> : "\327" uhorngrave
-<dead_hook> <Uhorn> : "\274" Uhornhook
-<dead_hook> <uhorn> : "\330" uhornhook
-<dead_tilde> <Uhorn> : "\377" Uhorntilde
-<dead_tilde> <uhorn> : "\346" uhorntilde
-<dead_acute> <Uhorn> : "\272" Uhornacute
-<dead_acute> <uhorn> : "\321" uhornacute
-<dead_belowdot> <Uhorn> : "\271" Uhornbelowdot
-<dead_belowdot> <uhorn> : "\361" uhornbelowdot
-<dead_grave> <Y> : "\237" Ygrave
-<dead_grave> <y> : "\317" ygrave
-<dead_hook> <Y> : "\024" Yhook
-<dead_hook> <y> : "\326" yhook
-<dead_tilde> <Y> : "\031" Ytilde
-<dead_tilde> <y> : "\333" ytilde
-<dead_acute> <Y> : "\335" Yacute
-<dead_acute> <y> : "\375" yacute
-<dead_belowdot> <Y> : "\036" Ybelowdot
-<dead_belowdot> <y> : "\334" ybelowdot
-XCOMM End of Sequence Definition
+XCOMM 1998/12/18 Le Hong Boi $
+XCOMM
+XCOMM TCVN 5712-2 Compose Sequences
+XCOMM
+XCOMM Sequence Definition
+XCOMM
+XCOMM dead key accent keysyms
+XCOMM Special Character
+<dead_grave> <space> : "`" grave
+<dead_hook> <space> : " " space
+<dead_tilde> <space> : "~" asciitilde
+<dead_acute> <space> : "'" apostrophe
+<dead_acute> <apostrophe> : "\264" acute
+XCOMM Accented Alphabet
+<dead_grave> <A> : "\300" Agrave
+<dead_grave> <a> : "\340" agrave
+<dead_hook> <A> : "\304" Ahook
+<dead_hook> <a> : "\344" ahook
+<dead_tilde> <A> : "\303" Atilde
+<dead_tilde> <a> : "\343" atilde
+<dead_acute> <A> : "\301" Aacute
+<dead_acute> <a> : "\341" aacute
+<dead_belowdot> <A> : "\200" Abelowdot
+<dead_belowdot> <a> : "\325" abelowdot
+<dead_grave> <Abreve> : "\202" Abrevegrave
+<dead_grave> <abreve> : "\242" abrevegrave
+<dead_hook> <Abreve> : "\002" Abrevehook
+<dead_hook> <abreve> : "\306" abrevehook
+<dead_tilde> <Abreve> : "\005" Abrevetilde
+<dead_tilde> <abreve> : "\307" abrevetilde
+<dead_acute> <Abreve> : "\201" Abreveacute
+<dead_acute> <abreve> : "\241" abreveacute
+<dead_belowdot> <Abreve> : "\203" Abrevebelowdot
+<dead_belowdot> <abreve> : "\243" abrevebelowdot
+<dead_grave> <Acircumflex> : "\205" Acircumflexgrave
+<dead_grave> <acircumflex> : "\245" acircumflexgrave
+<dead_hook> <Acircumflex> : "\206" Acircumflexhook
+<dead_hook> <acircumflex> : "\246" acircumflexhook
+<dead_tilde> <Acircumflex> : "\006" Acircumflextilde
+<dead_tilde> <acircumflex> : "\347" acircumflextilde
+<dead_acute> <Acircumflex> : "\204" Acircumflexacute
+<dead_acute> <acircumflex> : "\244" acircumflexacute
+<dead_belowdot> <Acircumflex> : "\207" Acircumflexbelowdot
+<dead_belowdot> <acircumflex> : "\247" acircumflexbelowdot
+<dead_grave> <E> : "\310" Egrave
+<dead_grave> <e> : "\350" egrave
+<dead_hook> <E> : "\313" Ehook
+<dead_hook> <e> : "\353" ehook
+<dead_tilde> <E> : "\210" Etilde
+<dead_tilde> <e> : "\250" etilde
+<dead_acute> <E> : "\311" Eacute
+<dead_acute> <e> : "\351" eacute
+<dead_belowdot> <E> : "\211" Ebelowdot
+<dead_belowdot> <e> : "\251" ebelowdot
+<dead_grave> <Ecircumflex> : "\213" Ecircumflexgrave
+<dead_grave> <ecircumflex> : "\253" ecircumflexgrave
+<dead_hook> <Ecircumflex> : "\214" Ecircumflexhook
+<dead_hook> <ecircumflex> : "\254" ecircumflexhook
+<dead_tilde> <Ecircumflex> : "\215" Ecircumflextilde
+<dead_tilde> <ecircumflex> : "\255" ecircumflextilde
+<dead_acute> <Ecircumflex> : "\212" Ecircumflexacute
+<dead_acute> <ecircumflex> : "\252" ecircumflexacute
+<dead_belowdot> <Ecircumflex> : "\216" Ecircumflexbelowdot
+<dead_belowdot> <ecircumflex> : "\256" ecircumflexbelowdot
+<dead_grave> <I> : "\314" Igrave
+<dead_grave> <i> : "\354" igrave
+<dead_hook> <I> : "\233" Ihook
+<dead_hook> <i> : "\357" ihook
+<dead_tilde> <I> : "\316" Itilde
+<dead_tilde> <i> : "\356" itilde
+<dead_acute> <I> : "\315" Iacute
+<dead_acute> <i> : "\355" iacute
+<dead_belowdot> <I> : "\230" Ibelowdot
+<dead_belowdot> <i> : "\270" ibelowdot
+<dead_grave> <O> : "\322" Ograve
+<dead_grave> <o> : "\362" ograve
+<dead_hook> <O> : "\231" Ohook
+<dead_hook> <o> : "\366" ohook
+<dead_tilde> <O> : "\240" Otilde
+<dead_tilde> <o> : "\365" otilde
+<dead_acute> <O> : "\323" Oacute
+<dead_acute> <o> : "\363" oacute
+<dead_belowdot> <O> : "\232" Obelowdot
+<dead_belowdot> <o> : "\367" obelowdot
+<dead_grave> <Ocircumflex> : "\220" Ocircumflexgrave
+<dead_grave> <ocircumflex> : "\260" ocircumflexgrave
+<dead_hook> <Ocircumflex> : "\221" Ocircumflexhook
+<dead_hook> <ocircumflex> : "\261" ocircumflexhook
+<dead_tilde> <Ocircumflex> : "\222" Ocircumflextilde
+<dead_tilde> <ocircumflex> : "\262" ocircumflextilde
+<dead_acute> <Ocircumflex> : "\217" Ocircumflexacute
+<dead_acute> <ocircumflex> : "\257" ocircumflexacute
+<dead_belowdot> <Ocircumflex> : "\223" Ocircumflexbelowdot
+<dead_belowdot> <ocircumflex> : "\265" ocircumflexbelowdot
+<dead_grave> <Ohorn> : "\226" Ohorngrave
+<dead_grave> <ohorn> : "\266" ohorngrave
+<dead_hook> <Ohorn> : "\227" Ohornhook
+<dead_hook> <ohorn> : "\267" ohornhook
+<dead_tilde> <Ohorn> : "\263" Ohorntilde
+<dead_tilde> <ohorn> : "\336" ohorntilde
+<dead_acute> <Ohorn> : "\225" Ohornacute
+<dead_acute> <ohorn> : "\276" ohornacute
+<dead_belowdot> <Ohorn> : "\224" Ohornbelowdot
+<dead_belowdot> <ohorn> : "\376" ohornbelowdot
+<dead_grave> <U> : "\331" Ugrave
+<dead_grave> <u> : "\371" ugrave
+<dead_hook> <U> : "\234" Uhook
+<dead_hook> <u> : "\374" uhook
+<dead_tilde> <U> : "\235" Utilde
+<dead_tilde> <u> : "\373" utilde
+<dead_acute> <U> : "\332" Uacute
+<dead_acute> <u> : "\372" uacute
+<dead_belowdot> <U> : "\236" Ubelowdot
+<dead_belowdot> <u> : "\370" ubelowdot
+<dead_grave> <Uhorn> : "\273" Uhorngrave
+<dead_grave> <uhorn> : "\327" uhorngrave
+<dead_hook> <Uhorn> : "\274" Uhornhook
+<dead_hook> <uhorn> : "\330" uhornhook
+<dead_tilde> <Uhorn> : "\377" Uhorntilde
+<dead_tilde> <uhorn> : "\346" uhorntilde
+<dead_acute> <Uhorn> : "\272" Uhornacute
+<dead_acute> <uhorn> : "\321" uhornacute
+<dead_belowdot> <Uhorn> : "\271" Uhornbelowdot
+<dead_belowdot> <uhorn> : "\361" uhornbelowdot
+<dead_grave> <Y> : "\237" Ygrave
+<dead_grave> <y> : "\317" ygrave
+<dead_hook> <Y> : "\024" Yhook
+<dead_hook> <y> : "\326" yhook
+<dead_tilde> <Y> : "\031" Ytilde
+<dead_tilde> <y> : "\333" ytilde
+<dead_acute> <Y> : "\335" Yacute
+<dead_acute> <y> : "\375" yacute
+<dead_belowdot> <Y> : "\036" Ybelowdot
+<dead_belowdot> <y> : "\334" ybelowdot
+XCOMM End of Sequence Definition
diff --git a/libX11/nls/vi_VN.viscii/XI18N_OBJS b/libX11/nls/vi_VN.viscii/XI18N_OBJS
index 6422fa7ed..5f4b3b604 100644
--- a/libX11/nls/vi_VN.viscii/XI18N_OBJS
+++ b/libX11/nls/vi_VN.viscii/XI18N_OBJS
@@ -1,7 +1,7 @@
-# CATEGORY(XLC|XIM|OM) SHARED_LIBRARY_NAME FUNCTION_NAME
-#
-# XI18N objects table for vi_VN.viscii locale
-#
-XLC common/xlcDef _XlcDefaultLoader # XLC_open
-XIM common/ximcp _XimOpenIM _XimRegisterIMInstantiateCallback _XimUnRegisterIMInstantiateCallback # XIM_open XIM_register XIM_unregister
-XOM common/xomGeneric _XomGenericOpenOM # XOM_open
+# CATEGORY(XLC|XIM|OM) SHARED_LIBRARY_NAME FUNCTION_NAME
+#
+# XI18N objects table for vi_VN.viscii locale
+#
+XLC common/xlcDef _XlcDefaultLoader # XLC_open
+XIM common/ximcp _XimOpenIM _XimRegisterIMInstantiateCallback _XimUnRegisterIMInstantiateCallback # XIM_open XIM_register XIM_unregister
+XOM common/xomGeneric _XomGenericOpenOM # XOM_open
diff --git a/libX11/nls/vi_VN.viscii/XLC_LOCALE.pre b/libX11/nls/vi_VN.viscii/XLC_LOCALE.pre
index 9df54f809..9df03005c 100644
--- a/libX11/nls/vi_VN.viscii/XLC_LOCALE.pre
+++ b/libX11/nls/vi_VN.viscii/XLC_LOCALE.pre
@@ -1,79 +1,79 @@
-XCOMM XLocale Database Sample for vi_VN.VISCII
-XCOMM
-
-XCOMM
-XCOMM XLC_FONTSET category
-XCOMM
-XLC_FONTSET
-XCOMM fs0 class (7 bit ASCII)
-fs0 {
- charset {
- name ISO8859-1:GL
- }
- font {
- primary VISCII1.1-1:GL
- substitute ISO8859-1:GL
- }
-}
-XCOMM fs1 class
-fs1 {
- charset VISCII1.1-1:GR
- font VISCII1.1-1:GR
-}
-END XLC_FONTSET
-
-XCOMM
-XCOMM XLC_CHARSET_DEFINE category
-XCOMM
-XLC_CHARSET_DEFINE
-csd0 {
- charset_name VISCII1.1-1
- side GR
- length 1
- string_encoding False
- sequence \x1b%/1
-}
-END XLC_CHARSET_DEFINE
-
-XCOMM
-XCOMM XLC_XLOCALE category
-XCOMM
-XLC_XLOCALE
-
-encoding_name VISCII1.1-1
-mb_cur_max 1
-state_depend_encoding False
-#if WCHAR32
-wc_encoding_mask \x30000000
-wc_shift_bits 7
-#else
-wc_encoding_mask \x00008080
-wc_shift_bits 8
-#endif
-
-#ifndef X_LOCALE
-use_stdc_env True
-#endif
-
-XCOMM cs0 class
-cs0 {
- side GL:Default
- length 1
- wc_encoding \x00000000
- ct_encoding VISCII1.1-1:GL; ISO8859-1:GL
-}
-
-
-XCOMM cs1 class
-cs1 {
- side GR:Default
- length 1
-#if WCHAR32
- wc_encoding \x30000000
-#else
- wc_encoding \x00008080
-#endif
- ct_encoding VISCII1.1-1:GR
-}
-
-END XLC_XLOCALE
+XCOMM XLocale Database Sample for vi_VN.VISCII
+XCOMM
+
+XCOMM
+XCOMM XLC_FONTSET category
+XCOMM
+XLC_FONTSET
+XCOMM fs0 class (7 bit ASCII)
+fs0 {
+ charset {
+ name ISO8859-1:GL
+ }
+ font {
+ primary VISCII1.1-1:GL
+ substitute ISO8859-1:GL
+ }
+}
+XCOMM fs1 class
+fs1 {
+ charset VISCII1.1-1:GR
+ font VISCII1.1-1:GR
+}
+END XLC_FONTSET
+
+XCOMM
+XCOMM XLC_CHARSET_DEFINE category
+XCOMM
+XLC_CHARSET_DEFINE
+csd0 {
+ charset_name VISCII1.1-1
+ side GR
+ length 1
+ string_encoding False
+ sequence \x1b%/1
+}
+END XLC_CHARSET_DEFINE
+
+XCOMM
+XCOMM XLC_XLOCALE category
+XCOMM
+XLC_XLOCALE
+
+encoding_name VISCII1.1-1
+mb_cur_max 1
+state_depend_encoding False
+#if WCHAR32
+wc_encoding_mask \x30000000
+wc_shift_bits 7
+#else
+wc_encoding_mask \x00008080
+wc_shift_bits 8
+#endif
+
+#ifndef X_LOCALE
+use_stdc_env True
+#endif
+
+XCOMM cs0 class
+cs0 {
+ side GL:Default
+ length 1
+ wc_encoding \x00000000
+ ct_encoding VISCII1.1-1:GL; ISO8859-1:GL
+}
+
+
+XCOMM cs1 class
+cs1 {
+ side GR:Default
+ length 1
+#if WCHAR32
+ wc_encoding \x30000000
+#else
+ wc_encoding \x00008080
+#endif
+ ct_encoding VISCII1.1-1:GR
+}
+
+END XLC_XLOCALE
diff --git a/libX11/nls/zh_CN.UTF-8/XI18N_OBJS b/libX11/nls/zh_CN.UTF-8/XI18N_OBJS
index a0ef7384f..29dd53a30 100644
--- a/libX11/nls/zh_CN.UTF-8/XI18N_OBJS
+++ b/libX11/nls/zh_CN.UTF-8/XI18N_OBJS
@@ -1,8 +1,8 @@
-# CATEGORY(XLC|XIM|OM) SHARED_LIBRARY_NAME FUNCTION_NAME
-#
-# XI18N objects table for zh_CN.UTF-8 locale
-#
-#
-XLC common/xlcUTF8Load _XlcUtf8Loader # XLC_open
-XIM common/ximcp _XimOpenIM _XimRegisterIMInstantiateCallback _XimUnRegisterIMInstantiateCallback # XIM_open XIM_register XIM_unregister
-XOM common/xomGeneric _XomGenericOpenOM # XOM_open
+# CATEGORY(XLC|XIM|OM) SHARED_LIBRARY_NAME FUNCTION_NAME
+#
+# XI18N objects table for zh_CN.UTF-8 locale
+#
+#
+XLC common/xlcUTF8Load _XlcUtf8Loader # XLC_open
+XIM common/ximcp _XimOpenIM _XimRegisterIMInstantiateCallback _XimUnRegisterIMInstantiateCallback # XIM_open XIM_register XIM_unregister
+XOM common/xomGeneric _XomGenericOpenOM # XOM_open
diff --git a/libX11/nls/zh_CN.UTF-8/XLC_LOCALE.pre b/libX11/nls/zh_CN.UTF-8/XLC_LOCALE.pre
index 2f72fb272..6f05d7a8e 100644
--- a/libX11/nls/zh_CN.UTF-8/XLC_LOCALE.pre
+++ b/libX11/nls/zh_CN.UTF-8/XLC_LOCALE.pre
@@ -1,107 +1,107 @@
-XCOMM XFree86 NLS for Chinese locale zh_CN.UTF-8
-XCOMM Modified from xc/nls/XLC_LOCALE/en_US.UTF-8
-XCOMM by James Su <suzhe@turbolinux.com.cn>
-XCOMM
-
-XCOMM
-XCOMM XLC_FONTSET category
-XCOMM
-XLC_FONTSET
-
-on_demand_loading True
-
-object_name generic
-
-XCOMM We leave the legacy encodings in for the moment, because we don't
-XCOMM have that many ISO10646 fonts yet.
-XCOMM fs0 class (7 bit ASCII)
-fs0 {
- charset {
- name ISO8859-1:GL
- }
- font {
- primary ISO8859-1:GL
- vertical_rotate all
- }
-}
-
-XCOMM fs1 class (ISO8859 families)
-fs1 {
- charset {
- name ISO8859-1:GR
- }
- font {
- primary ISO8859-1:GR
- }
-}
-
-XCOMM fs2 class (Chinese Han Character)
-fs2 {
- charset {
- name GB2312.1980-0:GL
- }
- font {
- primary GB2312.1980-0:GL
- }
-}
-
-XCOMM fs3 class (Chinese Han Character GBK)
-fs3 {
- charset {
- name GBK-0:GLGR
- }
- font {
- primary GBK-0:GLGR
- substitute GB13000.1993-1:GLGR
- }
-}
-
-XCOMM fs4 class
-fs4 {
- charset {
- name ISO10646-1
- }
- font {
- primary ISO10646-1
- }
-}
-END XLC_FONTSET
-
-XCOMM
-XCOMM XLC_XLOCALE category
-XCOMM
-XLC_XLOCALE
-
-encoding_name UTF-8
-mb_cur_max 6
-state_depend_encoding False
-
-XCOMM cs0 class
-cs0 {
- side GL:Default
- length 1
- ct_encoding ISO8859-1:GL
-}
-
-XCOMM cs1 class
-cs1 {
- side GR:Default
- length 1
- ct_encoding ISO8859-1:GR
-}
-
-XCOMM cs2 class
-cs2 {
- side GR
- length 2
- ct_encoding GB2312.1980-0:GL; GB2312.1980-0:GR
-}
-
-XCOMM cs3 class
-cs3 {
- side none
- ct_encoding ISO10646-1
-}
-
-END XLC_XLOCALE
-
+XCOMM XFree86 NLS for Chinese locale zh_CN.UTF-8
+XCOMM Modified from xc/nls/XLC_LOCALE/en_US.UTF-8
+XCOMM by James Su <suzhe@turbolinux.com.cn>
+XCOMM
+
+XCOMM
+XCOMM XLC_FONTSET category
+XCOMM
+XLC_FONTSET
+
+on_demand_loading True
+
+object_name generic
+
+XCOMM We leave the legacy encodings in for the moment, because we don't
+XCOMM have that many ISO10646 fonts yet.
+XCOMM fs0 class (7 bit ASCII)
+fs0 {
+ charset {
+ name ISO8859-1:GL
+ }
+ font {
+ primary ISO8859-1:GL
+ vertical_rotate all
+ }
+}
+
+XCOMM fs1 class (ISO8859 families)
+fs1 {
+ charset {
+ name ISO8859-1:GR
+ }
+ font {
+ primary ISO8859-1:GR
+ }
+}
+
+XCOMM fs2 class (Chinese Han Character)
+fs2 {
+ charset {
+ name GB2312.1980-0:GL
+ }
+ font {
+ primary GB2312.1980-0:GL
+ }
+}
+
+XCOMM fs3 class (Chinese Han Character GBK)
+fs3 {
+ charset {
+ name GBK-0:GLGR
+ }
+ font {
+ primary GBK-0:GLGR
+ substitute GB13000.1993-1:GLGR
+ }
+}
+
+XCOMM fs4 class
+fs4 {
+ charset {
+ name ISO10646-1
+ }
+ font {
+ primary ISO10646-1
+ }
+}
+END XLC_FONTSET
+
+XCOMM
+XCOMM XLC_XLOCALE category
+XCOMM
+XLC_XLOCALE
+
+encoding_name UTF-8
+mb_cur_max 6
+state_depend_encoding False
+
+XCOMM cs0 class
+cs0 {
+ side GL:Default
+ length 1
+ ct_encoding ISO8859-1:GL
+}
+
+XCOMM cs1 class
+cs1 {
+ side GR:Default
+ length 1
+ ct_encoding ISO8859-1:GR
+}
+
+XCOMM cs2 class
+cs2 {
+ side GR
+ length 2
+ ct_encoding GB2312.1980-0:GL; GB2312.1980-0:GR
+}
+
+XCOMM cs3 class
+cs3 {
+ side none
+ ct_encoding ISO10646-1
+}
+
+END XLC_XLOCALE
+
diff --git a/libX11/nls/zh_CN.gb18030/Compose.pre b/libX11/nls/zh_CN.gb18030/Compose.pre
index 7a7c7f241..a9e259fab 100644
--- a/libX11/nls/zh_CN.gb18030/Compose.pre
+++ b/libX11/nls/zh_CN.gb18030/Compose.pre
@@ -1,14 +1,14 @@
-XCOMM
-XCOMM zh_CN.GB18030 Compose Sequence
-XCOMM
-XCOMM Sequence Definition
-XCOMM
-XCOMM
-XCOMM This file currently has no entries. It appears that a compose file (even
-XCOMM just an empty one) is required for the appropriate keysyms to work for
-XCOMM this encoding.
-XCOMM
-XCOMM <Multi_key> Means <Compose>
-XCOMM Special Character
-
-XCOMM End of Sequence Definition
+XCOMM
+XCOMM zh_CN.GB18030 Compose Sequence
+XCOMM
+XCOMM Sequence Definition
+XCOMM
+XCOMM
+XCOMM This file currently has no entries. It appears that a compose file (even
+XCOMM just an empty one) is required for the appropriate keysyms to work for
+XCOMM this encoding.
+XCOMM
+XCOMM <Multi_key> Means <Compose>
+XCOMM Special Character
+
+XCOMM End of Sequence Definition
diff --git a/libX11/nls/zh_CN.gb18030/XI18N_OBJS b/libX11/nls/zh_CN.gb18030/XI18N_OBJS
index e9fef4c7a..a92b4033c 100644
--- a/libX11/nls/zh_CN.gb18030/XI18N_OBJS
+++ b/libX11/nls/zh_CN.gb18030/XI18N_OBJS
@@ -1,7 +1,7 @@
-# CATEGORY(XLC|XIM|OM) SHARED_LIBRARY_NAME FUNCTION_NAME
-#
-# XI18N objects table for zh_CN.gb18030 locale
-#
-XLC common/xlcUTF8Load _XlcUtf8Loader # XLC_open
-XIM common/ximcp _XimOpenIM _XimRegisterIMInstantiateCallback _XimUnRegisterIMInstantiateCallback # XIM_open XIM_register XIM_unregister
-XOM common/xomGeneric _XomGenericOpenOM # XOM_open
+# CATEGORY(XLC|XIM|OM) SHARED_LIBRARY_NAME FUNCTION_NAME
+#
+# XI18N objects table for zh_CN.gb18030 locale
+#
+XLC common/xlcUTF8Load _XlcUtf8Loader # XLC_open
+XIM common/ximcp _XimOpenIM _XimRegisterIMInstantiateCallback _XimUnRegisterIMInstantiateCallback # XIM_open XIM_register XIM_unregister
+XOM common/xomGeneric _XomGenericOpenOM # XOM_open
diff --git a/libX11/nls/zh_CN.gb18030/XLC_LOCALE.pre b/libX11/nls/zh_CN.gb18030/XLC_LOCALE.pre
index 4d01c8f7f..f9544c70e 100644
--- a/libX11/nls/zh_CN.gb18030/XLC_LOCALE.pre
+++ b/libX11/nls/zh_CN.gb18030/XLC_LOCALE.pre
@@ -1,106 +1,106 @@
-XCOMM XFree86 NLS for Chinese encoding GB18030
-XCOMM Modified from xc/nls/XLC_LOCALE/en_US.UTF-8
-XCOMM by James Su <suzhe@turbolinux.com.cn>
-
-XCOMM
-XCOMM XLC_FONTSET category
-XCOMM
-XLC_FONTSET
-
-on_demand_loading True
-
-object_name generic
-
-XCOMM We leave the legacy encodings in for the moment, because we don't
-XCOMM have that many ISO10646 fonts yet.
-XCOMM fs0 class (7 bit ASCII)
-fs0 {
- charset {
- name ISO8859-1:GL
- }
- font {
- primary ISO8859-1:GL
- vertical_rotate all
- }
-}
-
-XCOMM fs1 class (ISO8859 families)
-fs1 {
- charset {
- name ISO8859-1:GR
- }
- font {
- primary ISO8859-1:GR
- }
-}
-
-XCOMM fs2 class (Chinese Han Character)
-fs2 {
- charset {
- name GB2312.1980-0:GL
- }
- font {
- primary GB2312.1980-0:GL
- }
-}
-
-XCOMM fs3 class (Chinese Han Character GBK)
-fs3 {
- charset {
- name GBK-0:GLGR
- }
- font {
- primary GBK-0:GLGR
- substitute GB13000.1993-1:GLGR
- }
-}
-
-XCOMM fs4 class
-fs4 {
- charset {
- name ISO10646-1
- }
- font {
- primary GB18030-0
- substitute GBK2K-0
- }
-}
-END XLC_FONTSET
-
-XCOMM
-XCOMM XLC_XLOCALE category
-XCOMM
-XLC_XLOCALE
-
-encoding_name GB18030
-mb_cur_max 4
-state_depend_encoding False
-
-XCOMM cs0 class
-cs0 {
- side GL:Default
- length 1
- ct_encoding ISO8859-1:GL
-}
-
-XCOMM cs1 class
-cs1 {
- side GR:Default
- length 1
- ct_encoding ISO8859-1:GR
-}
-
-XCOMM cs2 class
-cs2 {
- side GR
- length 2
- ct_encoding GB2312.1980-0:GL; GB2312.1980-0:GR
-}
-
-XCOMM cs3 class
-cs3 {
- side none
- ct_encoding ISO10646-1
-}
-
-END XLC_XLOCALE
+XCOMM XFree86 NLS for Chinese encoding GB18030
+XCOMM Modified from xc/nls/XLC_LOCALE/en_US.UTF-8
+XCOMM by James Su <suzhe@turbolinux.com.cn>
+
+XCOMM
+XCOMM XLC_FONTSET category
+XCOMM
+XLC_FONTSET
+
+on_demand_loading True
+
+object_name generic
+
+XCOMM We leave the legacy encodings in for the moment, because we don't
+XCOMM have that many ISO10646 fonts yet.
+XCOMM fs0 class (7 bit ASCII)
+fs0 {
+ charset {
+ name ISO8859-1:GL
+ }
+ font {
+ primary ISO8859-1:GL
+ vertical_rotate all
+ }
+}
+
+XCOMM fs1 class (ISO8859 families)
+fs1 {
+ charset {
+ name ISO8859-1:GR
+ }
+ font {
+ primary ISO8859-1:GR
+ }
+}
+
+XCOMM fs2 class (Chinese Han Character)
+fs2 {
+ charset {
+ name GB2312.1980-0:GL
+ }
+ font {
+ primary GB2312.1980-0:GL
+ }
+}
+
+XCOMM fs3 class (Chinese Han Character GBK)
+fs3 {
+ charset {
+ name GBK-0:GLGR
+ }
+ font {
+ primary GBK-0:GLGR
+ substitute GB13000.1993-1:GLGR
+ }
+}
+
+XCOMM fs4 class
+fs4 {
+ charset {
+ name ISO10646-1
+ }
+ font {
+ primary GB18030-0
+ substitute GBK2K-0
+ }
+}
+END XLC_FONTSET
+
+XCOMM
+XCOMM XLC_XLOCALE category
+XCOMM
+XLC_XLOCALE
+
+encoding_name GB18030
+mb_cur_max 4
+state_depend_encoding False
+
+XCOMM cs0 class
+cs0 {
+ side GL:Default
+ length 1
+ ct_encoding ISO8859-1:GL
+}
+
+XCOMM cs1 class
+cs1 {
+ side GR:Default
+ length 1
+ ct_encoding ISO8859-1:GR
+}
+
+XCOMM cs2 class
+cs2 {
+ side GR
+ length 2
+ ct_encoding GB2312.1980-0:GL; GB2312.1980-0:GR
+}
+
+XCOMM cs3 class
+cs3 {
+ side none
+ ct_encoding ISO10646-1
+}
+
+END XLC_XLOCALE
diff --git a/libX11/nls/zh_CN.gbk/Compose.pre b/libX11/nls/zh_CN.gbk/Compose.pre
index 5b849aadd..c95d9ac82 100644
--- a/libX11/nls/zh_CN.gbk/Compose.pre
+++ b/libX11/nls/zh_CN.gbk/Compose.pre
@@ -1,14 +1,14 @@
-XCOMM
-XCOMM zh_CN.GBK Compose Sequence
-XCOMM
-XCOMM Sequence Definition
-XCOMM
-XCOMM
-XCOMM This file currently has no entries. It appears that a compose file (even
-XCOMM just an empty one) is required for the appropriate keysyms to work for
-XCOMM this encoding.
-XCOMM
-XCOMM <Multi_key> Means <Compose>
-XCOMM Special Character
-
-XCOMM End of Sequence Definition
+XCOMM
+XCOMM zh_CN.GBK Compose Sequence
+XCOMM
+XCOMM Sequence Definition
+XCOMM
+XCOMM
+XCOMM This file currently has no entries. It appears that a compose file (even
+XCOMM just an empty one) is required for the appropriate keysyms to work for
+XCOMM this encoding.
+XCOMM
+XCOMM <Multi_key> Means <Compose>
+XCOMM Special Character
+
+XCOMM End of Sequence Definition
diff --git a/libX11/nls/zh_CN.gbk/XI18N_OBJS b/libX11/nls/zh_CN.gbk/XI18N_OBJS
index 274697e49..197a3e194 100644
--- a/libX11/nls/zh_CN.gbk/XI18N_OBJS
+++ b/libX11/nls/zh_CN.gbk/XI18N_OBJS
@@ -1,7 +1,7 @@
-# CATEGORY(XLC|XIM|OM) SHARED_LIBRARY_NAME FUNCTION_NAME
-#
-# XI18N objects table for zh_CN.gbk locale
-#
-XLC common/xlibi18n _XlcGenericLoader # XLC_open
-XIM common/ximcp _XimOpenIM _XimRegisterIMInstantiateCallback _XimUnRegisterIMInstantiateCallback # XIM_open XIM_register XIM_unregister
-XOM common/xomGeneric _XomGenericOpenOM # XOM_open
+# CATEGORY(XLC|XIM|OM) SHARED_LIBRARY_NAME FUNCTION_NAME
+#
+# XI18N objects table for zh_CN.gbk locale
+#
+XLC common/xlibi18n _XlcGenericLoader # XLC_open
+XIM common/ximcp _XimOpenIM _XimRegisterIMInstantiateCallback _XimUnRegisterIMInstantiateCallback # XIM_open XIM_register XIM_unregister
+XOM common/xomGeneric _XomGenericOpenOM # XOM_open
diff --git a/libX11/nls/zh_CN.gbk/XLC_LOCALE.pre b/libX11/nls/zh_CN.gbk/XLC_LOCALE.pre
index b43dbec97..302818bca 100644
--- a/libX11/nls/zh_CN.gbk/XLC_LOCALE.pre
+++ b/libX11/nls/zh_CN.gbk/XLC_LOCALE.pre
@@ -1,70 +1,70 @@
-XCOMM
-XCOMM X11R6 L10N for Chinese GBK Encoding.
-XCOMM modified from xc/nls/XLC_LOCALE/zh_TW.Big5
-XCOMM by Sean Chen <seanc@turbolinux.com>
-XCOMM
-
-XCOMM
-XCOMM XLC_FONTSET category
-XCOMM
-XLC_FONTSET
-XCOMM fs0 class (7 bit ASCII)
-fs0 {
- charset {
- name ISO8859-1:GL
- }
- font {
- primary ISO8859-1:GL
- vertical_rotate all
- }
-}
-XCOMM fs1 class
-fs1 {
- charset {
- name GBK-0:GLGR
- }
- font {
- primary GBK-0:GLGR
- substitute GB13000.1993-1:GLGR
- }
-}
-END XLC_FONTSET
-
-XCOMM
-XCOMM XLC_XLOCALE category
-XCOMM
-XLC_XLOCALE
-
-encoding_name zh_CN.GBK
-mb_cur_max 2
-state_depend_encoding False
-
-wc_encoding_mask \x00008000
-wc_shift_bits 8
-
-use_stdc_env True
-force_convert_to_mb True
-
-XCOMM cs0 class
-cs0 {
- side GL:Default
- length 1
- wc_encoding \x00000000
- ct_encoding ISO8859-1:GL
-}
-
-XCOMM cs1 class
-cs1 {
- side none
- length 2
- byte1 \x81,\xfe
- byte2 \x40,\x7e;\x80,\xfe
-
- wc_encoding \x00008000
- ct_encoding GBK-0:GLGR:\x1b\x25\x2f\x32
-
- mb_conversion [\x8140,\xfefe]->\x0140
- ct_conversion [\x0140,\x7efe]->\x8140
-}
-
-END XLC_XLOCALE
+XCOMM
+XCOMM X11R6 L10N for Chinese GBK Encoding.
+XCOMM modified from xc/nls/XLC_LOCALE/zh_TW.Big5
+XCOMM by Sean Chen <seanc@turbolinux.com>
+XCOMM
+
+XCOMM
+XCOMM XLC_FONTSET category
+XCOMM
+XLC_FONTSET
+XCOMM fs0 class (7 bit ASCII)
+fs0 {
+ charset {
+ name ISO8859-1:GL
+ }
+ font {
+ primary ISO8859-1:GL
+ vertical_rotate all
+ }
+}
+XCOMM fs1 class
+fs1 {
+ charset {
+ name GBK-0:GLGR
+ }
+ font {
+ primary GBK-0:GLGR
+ substitute GB13000.1993-1:GLGR
+ }
+}
+END XLC_FONTSET
+
+XCOMM
+XCOMM XLC_XLOCALE category
+XCOMM
+XLC_XLOCALE
+
+encoding_name zh_CN.GBK
+mb_cur_max 2
+state_depend_encoding False
+
+wc_encoding_mask \x00008000
+wc_shift_bits 8
+
+use_stdc_env True
+force_convert_to_mb True
+
+XCOMM cs0 class
+cs0 {
+ side GL:Default
+ length 1
+ wc_encoding \x00000000
+ ct_encoding ISO8859-1:GL
+}
+
+XCOMM cs1 class
+cs1 {
+ side none
+ length 2
+ byte1 \x81,\xfe
+ byte2 \x40,\x7e;\x80,\xfe
+
+ wc_encoding \x00008000
+ ct_encoding GBK-0:GLGR:\x1b\x25\x2f\x32
+
+ mb_conversion [\x8140,\xfefe]->\x0140
+ ct_conversion [\x0140,\x7efe]->\x8140
+}
+
+END XLC_XLOCALE
diff --git a/libX11/nls/zh_CN/Compose.pre b/libX11/nls/zh_CN/Compose.pre
index d7ec8005f..2f04b4218 100644
--- a/libX11/nls/zh_CN/Compose.pre
+++ b/libX11/nls/zh_CN/Compose.pre
@@ -1,14 +1,14 @@
-XCOMM
-XCOMM zh Compose Sequence
-XCOMM
-XCOMM Sequence Definition
-XCOMM
-XCOMM
-XCOMM This file currently has no entries. It appears that a compose file (even
-XCOMM just an empty one) is required for the appropriate keysyms to work for
-XCOMM this encoding.
-XCOMM
-XCOMM <Multi_key> Means <Compose>
-XCOMM Special Character
-
-XCOMM End of Sequence Definition
+XCOMM
+XCOMM zh Compose Sequence
+XCOMM
+XCOMM Sequence Definition
+XCOMM
+XCOMM
+XCOMM This file currently has no entries. It appears that a compose file (even
+XCOMM just an empty one) is required for the appropriate keysyms to work for
+XCOMM this encoding.
+XCOMM
+XCOMM <Multi_key> Means <Compose>
+XCOMM Special Character
+
+XCOMM End of Sequence Definition
diff --git a/libX11/nls/zh_CN/XI18N_OBJS b/libX11/nls/zh_CN/XI18N_OBJS
index bc7f81bfc..3ad1a6230 100644
--- a/libX11/nls/zh_CN/XI18N_OBJS
+++ b/libX11/nls/zh_CN/XI18N_OBJS
@@ -1,9 +1,9 @@
-# CATEGORY(XLC|XIM|OM) SHARED_LIBRARY_NAME FUNCTION_NAME
-#
-# XI18N objects table for zh locale
-#
-#
-XLC common/xlocale _XlcEucLoader # XLC_open
-XLC common/xlibi18n _XlcGenericLoader # XLC_open
-XIM common/ximcp _XimOpenIM _XimRegisterIMInstantiateCallback _XimUnRegisterIMInstantiateCallback # XIM_open XIM_register XIM_unregister
-XOM common/xomGeneric _XomGenericOpenOM # XOM_open
+# CATEGORY(XLC|XIM|OM) SHARED_LIBRARY_NAME FUNCTION_NAME
+#
+# XI18N objects table for zh locale
+#
+#
+XLC common/xlocale _XlcEucLoader # XLC_open
+XLC common/xlibi18n _XlcGenericLoader # XLC_open
+XIM common/ximcp _XimOpenIM _XimRegisterIMInstantiateCallback _XimUnRegisterIMInstantiateCallback # XIM_open XIM_register XIM_unregister
+XOM common/xomGeneric _XomGenericOpenOM # XOM_open
diff --git a/libX11/nls/zh_CN/XLC_LOCALE.pre b/libX11/nls/zh_CN/XLC_LOCALE.pre
index f8d60a70a..0065d8df1 100644
--- a/libX11/nls/zh_CN/XLC_LOCALE.pre
+++ b/libX11/nls/zh_CN/XLC_LOCALE.pre
@@ -1,62 +1,62 @@
-XCOMM XLocale Database Sample for zh (eucCN).
-XCOMM
-
-XCOMM
-XCOMM XLC_FONTSET category
-XCOMM
-XLC_FONTSET
-XCOMM fs0 class (7 bit ASCII)
-fs0 {
- charset {
- name ISO8859-1:GL
- }
- font {
- primary ISO8859-1:GL
- vertical_rotate all
- }
-}
-XCOMM fs1 class
-fs1 {
- charset {
- name GB2312.1980-0:GL
- }
- font {
- primary GB2312.1980-0:GL
- substitute GB2312.1980-0:GLGR
- }
-}
-END XLC_FONTSET
-
-XCOMM
-XCOMM XLC_XLOCALE category
-XCOMM
-XLC_XLOCALE
-
-encoding_name zh.euc
-mb_cur_max 2
-state_depend_encoding False
-wc_encoding_mask \x30000000
-wc_shift_bits 7
-
-#ifndef X_LOCALE
-use_stdc_env True
-force_convert_to_mb True
-#endif
-
-XCOMM cs0 class
-cs0 {
- side GL:Default
- length 1
- wc_encoding \x00000000
- ct_encoding ISO8859-1:GL
-}
-
-XCOMM cs1 class
-cs1 {
- side GR:Default
- length 2
- wc_encoding \x30000000
- ct_encoding GB2312.1980-0:GL; GB2312.1980-0:GR
-}
-
-END XLC_XLOCALE
+XCOMM XLocale Database Sample for zh (eucCN).
+XCOMM
+
+XCOMM
+XCOMM XLC_FONTSET category
+XCOMM
+XLC_FONTSET
+XCOMM fs0 class (7 bit ASCII)
+fs0 {
+ charset {
+ name ISO8859-1:GL
+ }
+ font {
+ primary ISO8859-1:GL
+ vertical_rotate all
+ }
+}
+XCOMM fs1 class
+fs1 {
+ charset {
+ name GB2312.1980-0:GL
+ }
+ font {
+ primary GB2312.1980-0:GL
+ substitute GB2312.1980-0:GLGR
+ }
+}
+END XLC_FONTSET
+
+XCOMM
+XCOMM XLC_XLOCALE category
+XCOMM
+XLC_XLOCALE
+
+encoding_name zh.euc
+mb_cur_max 2
+state_depend_encoding False
+wc_encoding_mask \x30000000
+wc_shift_bits 7
+
+#ifndef X_LOCALE
+use_stdc_env True
+force_convert_to_mb True
+#endif
+
+XCOMM cs0 class
+cs0 {
+ side GL:Default
+ length 1
+ wc_encoding \x00000000
+ ct_encoding ISO8859-1:GL
+}
+
+XCOMM cs1 class
+cs1 {
+ side GR:Default
+ length 2
+ wc_encoding \x30000000
+ ct_encoding GB2312.1980-0:GL; GB2312.1980-0:GR
+}
+
+END XLC_XLOCALE
diff --git a/libX11/nls/zh_HK.UTF-8/XI18N_OBJS b/libX11/nls/zh_HK.UTF-8/XI18N_OBJS
index 8fb0b1be0..e9d5ef8ad 100644
--- a/libX11/nls/zh_HK.UTF-8/XI18N_OBJS
+++ b/libX11/nls/zh_HK.UTF-8/XI18N_OBJS
@@ -1,7 +1,7 @@
-# CATEGORY(XLC|XIM|OM) SHARED_LIBRARY_NAME FUNCTION_NAME
-#
-# XI18N objects table for zh_HK.UTF-8 locale
-#
-XLC common/xlcUTF8Load _XlcUtf8Loader # XLC_open
-XIM common/ximcp _XimOpenIM _XimRegisterIMInstantiateCallback _XimUnRegisterIMInstantiateCallback # XIM_open XIM_register XIM_unregister
-XOM common/xomGeneric _XomGenericOpenOM # XOM_open
+# CATEGORY(XLC|XIM|OM) SHARED_LIBRARY_NAME FUNCTION_NAME
+#
+# XI18N objects table for zh_HK.UTF-8 locale
+#
+XLC common/xlcUTF8Load _XlcUtf8Loader # XLC_open
+XIM common/ximcp _XimOpenIM _XimRegisterIMInstantiateCallback _XimUnRegisterIMInstantiateCallback # XIM_open XIM_register XIM_unregister
+XOM common/xomGeneric _XomGenericOpenOM # XOM_open
diff --git a/libX11/nls/zh_HK.UTF-8/XLC_LOCALE.pre b/libX11/nls/zh_HK.UTF-8/XLC_LOCALE.pre
index 7eac192c7..c08803258 100644
--- a/libX11/nls/zh_HK.UTF-8/XLC_LOCALE.pre
+++ b/libX11/nls/zh_HK.UTF-8/XLC_LOCALE.pre
@@ -1,96 +1,96 @@
-XCOMM XFree86 NLS for Chinese locale zh_HK.UTF-8
-XCOMM Modified from xc/nls/XLC_LOCALE/en_US.UTF-8
-XCOMM by James Su <suzhe@turbolinux.com.cn>
-
-XCOMM
-XCOMM XLC_FONTSET category
-XCOMM
-XLC_FONTSET
-
-on_demand_loading True
-
-object_name generic
-
-XCOMM We leave the legacy encodings in for the moment, because we don't
-XCOMM have that many ISO10646 fonts yet.
-XCOMM fs0 class (7 bit ASCII)
-fs0 {
- charset {
- name ISO8859-1:GL
- }
- font {
- primary ISO8859-1:GL
- vertical_rotate all
- }
-}
-
-XCOMM fs1 class (ISO8859 families)
-fs1 {
- charset {
- name ISO8859-1:GR
- }
- font {
- primary ISO8859-1:GR
- }
-}
-
-XCOMM fs2 class
-fs2 {
- charset {
- name BIG5HKSCS-0:GLGR
- }
- font {
- primary BIG5HKSCS-0:GLGR
- substitute BIG5-0:GLGR
- }
-}
-
-XCOMM fs3 class
-fs3 {
- charset {
- name ISO10646-1
- }
- font {
- primary ISO10646-1
- }
-}
-END XLC_FONTSET
-
-XCOMM
-XCOMM XLC_XLOCALE category
-XCOMM
-XLC_XLOCALE
-
-encoding_name UTF-8
-mb_cur_max 6
-state_depend_encoding False
-
-XCOMM cs0 class
-cs0 {
- side GL:Default
- length 1
- ct_encoding ISO8859-1:GL
-}
-
-XCOMM cs1 class
-cs1 {
- side GR:Default
- length 1
- ct_encoding ISO8859-1:GR
-}
-
-XCOMM cs2 class
-cs2 {
- side none
- length 2
- ct_encoding BIG5HKSCS-0:GLGR
-}
-
-XCOMM cs3 class
-cs3 {
- side none
- ct_encoding ISO10646-1
-}
-
-END XLC_XLOCALE
-
+XCOMM XFree86 NLS for Chinese locale zh_HK.UTF-8
+XCOMM Modified from xc/nls/XLC_LOCALE/en_US.UTF-8
+XCOMM by James Su <suzhe@turbolinux.com.cn>
+
+XCOMM
+XCOMM XLC_FONTSET category
+XCOMM
+XLC_FONTSET
+
+on_demand_loading True
+
+object_name generic
+
+XCOMM We leave the legacy encodings in for the moment, because we don't
+XCOMM have that many ISO10646 fonts yet.
+XCOMM fs0 class (7 bit ASCII)
+fs0 {
+ charset {
+ name ISO8859-1:GL
+ }
+ font {
+ primary ISO8859-1:GL
+ vertical_rotate all
+ }
+}
+
+XCOMM fs1 class (ISO8859 families)
+fs1 {
+ charset {
+ name ISO8859-1:GR
+ }
+ font {
+ primary ISO8859-1:GR
+ }
+}
+
+XCOMM fs2 class
+fs2 {
+ charset {
+ name BIG5HKSCS-0:GLGR
+ }
+ font {
+ primary BIG5HKSCS-0:GLGR
+ substitute BIG5-0:GLGR
+ }
+}
+
+XCOMM fs3 class
+fs3 {
+ charset {
+ name ISO10646-1
+ }
+ font {
+ primary ISO10646-1
+ }
+}
+END XLC_FONTSET
+
+XCOMM
+XCOMM XLC_XLOCALE category
+XCOMM
+XLC_XLOCALE
+
+encoding_name UTF-8
+mb_cur_max 6
+state_depend_encoding False
+
+XCOMM cs0 class
+cs0 {
+ side GL:Default
+ length 1
+ ct_encoding ISO8859-1:GL
+}
+
+XCOMM cs1 class
+cs1 {
+ side GR:Default
+ length 1
+ ct_encoding ISO8859-1:GR
+}
+
+XCOMM cs2 class
+cs2 {
+ side none
+ length 2
+ ct_encoding BIG5HKSCS-0:GLGR
+}
+
+XCOMM cs3 class
+cs3 {
+ side none
+ ct_encoding ISO10646-1
+}
+
+END XLC_XLOCALE
+
diff --git a/libX11/nls/zh_HK.big5/Compose.pre b/libX11/nls/zh_HK.big5/Compose.pre
index ec6055c72..79dd3a00d 100644
--- a/libX11/nls/zh_HK.big5/Compose.pre
+++ b/libX11/nls/zh_HK.big5/Compose.pre
@@ -1,13 +1,13 @@
-XCOMM
-XCOMM zh_HK.big5 Compose Sequence
-XCOMM
-XCOMM Sequence Definition
-XCOMM
-XCOMM This file currently has no entries. It appears that a compose file (even
-XCOMM just an empty one) is required for the appropriate keysyms to work for
-XCOMM this encoding.
-XCOMM
-XCOMM <Multi_key> Means <Compose>
-XCOMM Special Character
-
-XCOMM End of Sequence Definition
+XCOMM
+XCOMM zh_HK.big5 Compose Sequence
+XCOMM
+XCOMM Sequence Definition
+XCOMM
+XCOMM This file currently has no entries. It appears that a compose file (even
+XCOMM just an empty one) is required for the appropriate keysyms to work for
+XCOMM this encoding.
+XCOMM
+XCOMM <Multi_key> Means <Compose>
+XCOMM Special Character
+
+XCOMM End of Sequence Definition
diff --git a/libX11/nls/zh_HK.big5/XI18N_OBJS b/libX11/nls/zh_HK.big5/XI18N_OBJS
index f724f7cc9..826c79831 100644
--- a/libX11/nls/zh_HK.big5/XI18N_OBJS
+++ b/libX11/nls/zh_HK.big5/XI18N_OBJS
@@ -1,7 +1,7 @@
-# CATEGORY(XLC|XIM|OM) SHARED_LIBRARY_NAME FUNCTION_NAME
-#
-# XI18N objects table for zh_HK.big5 locale
-#
-XLC common/xlibi18n _XlcGenericLoader # XLC_open
-XIM common/ximcp _XimOpenIM _XimRegisterIMInstantiateCallback _XimUnRegisterIMInstantiateCallback # XIM_open XIM_register XIM_unregister
-XOM common/xomGeneric _XomGenericOpenOM # XOM_open
+# CATEGORY(XLC|XIM|OM) SHARED_LIBRARY_NAME FUNCTION_NAME
+#
+# XI18N objects table for zh_HK.big5 locale
+#
+XLC common/xlibi18n _XlcGenericLoader # XLC_open
+XIM common/ximcp _XimOpenIM _XimRegisterIMInstantiateCallback _XimUnRegisterIMInstantiateCallback # XIM_open XIM_register XIM_unregister
+XOM common/xomGeneric _XomGenericOpenOM # XOM_open
diff --git a/libX11/nls/zh_HK.big5/XLC_LOCALE.pre b/libX11/nls/zh_HK.big5/XLC_LOCALE.pre
index cebd49582..03f9d08f4 100644
--- a/libX11/nls/zh_HK.big5/XLC_LOCALE.pre
+++ b/libX11/nls/zh_HK.big5/XLC_LOCALE.pre
@@ -1,69 +1,69 @@
-XCOMM
-XCOMM (c) 1996, X11R6 L10N for Taiwan and Big5 Encoding Project
-XCOMM
-XCOMM modified for X11R6.3 by Hung-Chi Chu <hcchu@r350.ee.ntu.edu.tw> 1998/01/10
-XCOMM
-XCOMM XLC_FONTSET category
-XCOMM
-XCOMM
-XLC_FONTSET
-XCOMM fs0 class (7 bit ASCII)
-fs0 {
- charset {
- name ISO8859-1:GL
- }
- font {
- primary ISO8859-1:GL
- vertical_rotate all
- }
-}
-XCOMM fs1 class
-fs1 {
- charset {
- name BIG5-0:GLGR
- }
- font {
- primary BIG5-0:GLGR
- substitute BIG5-0:GLGR
- }
-}
-END XLC_FONTSET
-
-XCOMM
-XCOMM XLC_XLOCALE category
-XCOMM
-XLC_XLOCALE
-
-encoding_name zh_HK.Big5
-mb_cur_max 2
-state_depend_encoding False
-
-wc_encoding_mask \x00008000
-wc_shift_bits 8
-
-use_stdc_env True
-force_convert_to_mb True
-
-XCOMM cs0 class
-cs0 {
- side GL:Default
- length 1
- wc_encoding \x00000000
- ct_encoding ISO8859-1:GL
-}
-
-XCOMM cs1 class
-cs1 {
- side none
- length 2
- byte1 \xa1,\xf9
- byte2 \x40,\x7e;\xa1,\xfe
-
- wc_encoding \x00008000
- ct_encoding BIG5-0:GLGR:\x1b\x25\x2f\x32\x80\x89\x42\x49\x47\x35\x2d\x30\x02
-
- mb_conversion [\xa140,\xf9fe]->\x2140
- ct_conversion [\x2140,\x79fe]->\xa140
-}
-
-END XLC_XLOCALE
+XCOMM
+XCOMM (c) 1996, X11R6 L10N for Taiwan and Big5 Encoding Project
+XCOMM
+XCOMM modified for X11R6.3 by Hung-Chi Chu <hcchu@r350.ee.ntu.edu.tw> 1998/01/10
+XCOMM
+XCOMM XLC_FONTSET category
+XCOMM
+XCOMM
+XLC_FONTSET
+XCOMM fs0 class (7 bit ASCII)
+fs0 {
+ charset {
+ name ISO8859-1:GL
+ }
+ font {
+ primary ISO8859-1:GL
+ vertical_rotate all
+ }
+}
+XCOMM fs1 class
+fs1 {
+ charset {
+ name BIG5-0:GLGR
+ }
+ font {
+ primary BIG5-0:GLGR
+ substitute BIG5-0:GLGR
+ }
+}
+END XLC_FONTSET
+
+XCOMM
+XCOMM XLC_XLOCALE category
+XCOMM
+XLC_XLOCALE
+
+encoding_name zh_HK.Big5
+mb_cur_max 2
+state_depend_encoding False
+
+wc_encoding_mask \x00008000
+wc_shift_bits 8
+
+use_stdc_env True
+force_convert_to_mb True
+
+XCOMM cs0 class
+cs0 {
+ side GL:Default
+ length 1
+ wc_encoding \x00000000
+ ct_encoding ISO8859-1:GL
+}
+
+XCOMM cs1 class
+cs1 {
+ side none
+ length 2
+ byte1 \xa1,\xf9
+ byte2 \x40,\x7e;\xa1,\xfe
+
+ wc_encoding \x00008000
+ ct_encoding BIG5-0:GLGR:\x1b\x25\x2f\x32\x80\x89\x42\x49\x47\x35\x2d\x30\x02
+
+ mb_conversion [\xa140,\xf9fe]->\x2140
+ ct_conversion [\x2140,\x79fe]->\xa140
+}
+
+END XLC_XLOCALE
diff --git a/libX11/nls/zh_HK.big5hkscs/Compose.pre b/libX11/nls/zh_HK.big5hkscs/Compose.pre
index 14ec90348..a06611f07 100644
--- a/libX11/nls/zh_HK.big5hkscs/Compose.pre
+++ b/libX11/nls/zh_HK.big5hkscs/Compose.pre
@@ -1,13 +1,13 @@
-XCOMM
-XCOMM zh_HK.big5hkscs Compose Sequence
-XCOMM
-XCOMM Sequence Definition
-XCOMM
-XCOMM This file currently has no entries. It appears that a compose file (even
-XCOMM just an empty one) is required for the appropriate keysyms to work for
-XCOMM this encoding.
-XCOMM
-XCOMM <Multi_key> Means <Compose>
-XCOMM Special Character
-
-XCOMM End of Sequence Definition
+XCOMM
+XCOMM zh_HK.big5hkscs Compose Sequence
+XCOMM
+XCOMM Sequence Definition
+XCOMM
+XCOMM This file currently has no entries. It appears that a compose file (even
+XCOMM just an empty one) is required for the appropriate keysyms to work for
+XCOMM this encoding.
+XCOMM
+XCOMM <Multi_key> Means <Compose>
+XCOMM Special Character
+
+XCOMM End of Sequence Definition
diff --git a/libX11/nls/zh_HK.big5hkscs/XI18N_OBJS b/libX11/nls/zh_HK.big5hkscs/XI18N_OBJS
index e5ccf4a21..29dc2167a 100644
--- a/libX11/nls/zh_HK.big5hkscs/XI18N_OBJS
+++ b/libX11/nls/zh_HK.big5hkscs/XI18N_OBJS
@@ -1,7 +1,7 @@
-# CATEGORY(XLC|XIM|OM) SHARED_LIBRARY_NAME FUNCTION_NAME
-#
-# XI18N objects table for zh_HK.big5hkscs locale
-#
-XLC common/xlibi18n _XlcGenericLoader # XLC_open
-XIM common/ximcp _XimOpenIM _XimRegisterIMInstantiateCallback _XimUnRegisterIMInstantiateCallback # XIM_open XIM_register XIM_unregister
-XOM common/xomGeneric _XomGenericOpenOM # XOM_open
+# CATEGORY(XLC|XIM|OM) SHARED_LIBRARY_NAME FUNCTION_NAME
+#
+# XI18N objects table for zh_HK.big5hkscs locale
+#
+XLC common/xlibi18n _XlcGenericLoader # XLC_open
+XIM common/ximcp _XimOpenIM _XimRegisterIMInstantiateCallback _XimUnRegisterIMInstantiateCallback # XIM_open XIM_register XIM_unregister
+XOM common/xomGeneric _XomGenericOpenOM # XOM_open
diff --git a/libX11/nls/zh_HK.big5hkscs/XLC_LOCALE.pre b/libX11/nls/zh_HK.big5hkscs/XLC_LOCALE.pre
index 7aae554a0..dc19438dd 100644
--- a/libX11/nls/zh_HK.big5hkscs/XLC_LOCALE.pre
+++ b/libX11/nls/zh_HK.big5hkscs/XLC_LOCALE.pre
@@ -1,71 +1,71 @@
-XCOMM
-XCOMM (c) 1996, X11R6 L10N for Taiwan and Big5 Encoding Project
-XCOMM
-XCOMM modified for X11R6.3 by Hung-Chi Chu <hcchu@r350.ee.ntu.edu.tw> 1998/01/10
-XCOMM modified for Big5HKSCS by Roger So <roger.so@sw-linux.com>
-XCOMM
-XCOMM
-XCOMM XLC_FONTSET category
-XCOMM
-XLC_FONTSET
-XCOMM fs0 class (7 bit ASCII)
-fs0 {
- charset {
- name ISO8859-1:GL
- }
- font {
- primary ISO8859-1:GL
- vertical_rotate all
- }
-}
-
-XCOMM fs1 class (HKSCS extensions)
-fs1 {
- charset {
- name BIG5HKSCS-0:GLGR
- }
- font {
- primary BIG5HKSCS-0:GLGR
- substitute BIG5HKSCS-0:GLGR
- }
-}
-END XLC_FONTSET
-
-XCOMM
-XCOMM XLC_XLOCALE category
-XCOMM
-XLC_XLOCALE
-
-encoding_name zh_HK.big5hkscs
-mb_cur_max 2
-state_depend_encoding False
-
-wc_encoding_mask \x00008000
-wc_shift_bits 8
-
-use_stdc_env True
-force_convert_to_mb True
-
-+XCOMM cs0 class
-cs0 {
- side GL:Default
- length 1
- wc_encoding \x00000000
- ct_encoding ISO8859-1:GL
-}
-
-XCOMM cs1 class
-cs1 {
- side none
- length 2
- byte1 \x85,\xfe
- byte2 \x40,\x7e;\xa1,\xfe
-
- wc_encoding \x00008000
- ct_encoding BIG5HKSCS-0:GLGR:\x1b\x25\x2f\x32
-
- mb_conversion [\x8540,\xfefe]->\x0540
- ct_conversion [\x0540,\x7efe]->\x8540
-}
-
-END XLC_XLOCALE
+XCOMM
+XCOMM (c) 1996, X11R6 L10N for Taiwan and Big5 Encoding Project
+XCOMM
+XCOMM modified for X11R6.3 by Hung-Chi Chu <hcchu@r350.ee.ntu.edu.tw> 1998/01/10
+XCOMM modified for Big5HKSCS by Roger So <roger.so@sw-linux.com>
+XCOMM
+XCOMM
+XCOMM XLC_FONTSET category
+XCOMM
+XLC_FONTSET
+XCOMM fs0 class (7 bit ASCII)
+fs0 {
+ charset {
+ name ISO8859-1:GL
+ }
+ font {
+ primary ISO8859-1:GL
+ vertical_rotate all
+ }
+}
+
+XCOMM fs1 class (HKSCS extensions)
+fs1 {
+ charset {
+ name BIG5HKSCS-0:GLGR
+ }
+ font {
+ primary BIG5HKSCS-0:GLGR
+ substitute BIG5HKSCS-0:GLGR
+ }
+}
+END XLC_FONTSET
+
+XCOMM
+XCOMM XLC_XLOCALE category
+XCOMM
+XLC_XLOCALE
+
+encoding_name zh_HK.big5hkscs
+mb_cur_max 2
+state_depend_encoding False
+
+wc_encoding_mask \x00008000
+wc_shift_bits 8
+
+use_stdc_env True
+force_convert_to_mb True
+
++XCOMM cs0 class
+cs0 {
+ side GL:Default
+ length 1
+ wc_encoding \x00000000
+ ct_encoding ISO8859-1:GL
+}
+
+XCOMM cs1 class
+cs1 {
+ side none
+ length 2
+ byte1 \x85,\xfe
+ byte2 \x40,\x7e;\xa1,\xfe
+
+ wc_encoding \x00008000
+ ct_encoding BIG5HKSCS-0:GLGR:\x1b\x25\x2f\x32
+
+ mb_conversion [\x8540,\xfefe]->\x0540
+ ct_conversion [\x0540,\x7efe]->\x8540
+}
+
+END XLC_XLOCALE
diff --git a/libX11/nls/zh_TW.UTF-8/XI18N_OBJS b/libX11/nls/zh_TW.UTF-8/XI18N_OBJS
index aa9a447bd..a3a644b7c 100644
--- a/libX11/nls/zh_TW.UTF-8/XI18N_OBJS
+++ b/libX11/nls/zh_TW.UTF-8/XI18N_OBJS
@@ -1,7 +1,7 @@
-# CATEGORY(XLC|XIM|OM) SHARED_LIBRARY_NAME FUNCTION_NAME
-#
-# XI18N objects table for zh_TW.UTF-8 locale
-#
-XLC common/xlcUTF8Load _XlcUtf8Loader # XLC_open
-XIM common/ximcp _XimOpenIM _XimRegisterIMInstantiateCallback _XimUnRegisterIMInstantiateCallback # XIM_open XIM_register XIM_unregister
-XOM common/xomGeneric _XomGenericOpenOM # XOM_open
+# CATEGORY(XLC|XIM|OM) SHARED_LIBRARY_NAME FUNCTION_NAME
+#
+# XI18N objects table for zh_TW.UTF-8 locale
+#
+XLC common/xlcUTF8Load _XlcUtf8Loader # XLC_open
+XIM common/ximcp _XimOpenIM _XimRegisterIMInstantiateCallback _XimUnRegisterIMInstantiateCallback # XIM_open XIM_register XIM_unregister
+XOM common/xomGeneric _XomGenericOpenOM # XOM_open
diff --git a/libX11/nls/zh_TW.UTF-8/XLC_LOCALE.pre b/libX11/nls/zh_TW.UTF-8/XLC_LOCALE.pre
index d650d6c32..d5b19c03d 100644
--- a/libX11/nls/zh_TW.UTF-8/XLC_LOCALE.pre
+++ b/libX11/nls/zh_TW.UTF-8/XLC_LOCALE.pre
@@ -1,91 +1,91 @@
-XCOMM XLocale Database Sample for zh_TW.UTF-8
-XCOMM
-
-XCOMM
-XCOMM XLC_FONTSET category
-XCOMM
-XLC_FONTSET
-
-on_demand_loading True
-
-object_name generic
-
-XCOMM We leave the legacy encodings in for the moment, because we don't
-XCOMM have that many ISO10646 fonts yet.
-XCOMM fs0 class (7 bit ASCII)
-fs0 {
- charset {
- name ISO8859-1:GL
- }
- font {
- primary ISO8859-1:GL
- vertical_rotate all
- }
-}
-XCOMM fs1 class (ISO8859 families)
-fs1 {
- charset {
- name ISO8859-1:GR
- }
- font {
- primary ISO8859-1:GR
- }
-}
-XCOMM fs2 class (Chinese Han Character (Traditional))
-fs2 {
- charset {
- name BIG5-0:GLGR
- }
- font {
- primary BIG5-0:GLGR
- substitute BIG5-0:GLGR
- }
-}
-XCOMM fs3 class
-fs3 {
- charset {
- name ISO10646-1
- }
- font {
- primary ISO10646-1
- }
-}
-END XLC_FONTSET
-
-XCOMM
-XCOMM XLC_XLOCALE category
-XCOMM
-XLC_XLOCALE
-
-encoding_name UTF-8
-mb_cur_max 6
-state_depend_encoding False
-
-XCOMM cs0 class
-cs0 {
- side GL:Default
- length 1
- ct_encoding ISO8859-1:GL
-}
-
-XCOMM cs1 class
-cs1 {
- side GR:Default
- length 1
- ct_encoding ISO8859-1:GR
-}
-
-XCOMM cs2 class
-cs2 {
- side none
- length 2
- ct_encoding BIG5-0:GLGR
-}
-
-XCOMM cs3 class
-cs3 {
- side none
- ct_encoding ISO10646-1
-}
-
-END XLC_XLOCALE
+XCOMM XLocale Database Sample for zh_TW.UTF-8
+XCOMM
+
+XCOMM
+XCOMM XLC_FONTSET category
+XCOMM
+XLC_FONTSET
+
+on_demand_loading True
+
+object_name generic
+
+XCOMM We leave the legacy encodings in for the moment, because we don't
+XCOMM have that many ISO10646 fonts yet.
+XCOMM fs0 class (7 bit ASCII)
+fs0 {
+ charset {
+ name ISO8859-1:GL
+ }
+ font {
+ primary ISO8859-1:GL
+ vertical_rotate all
+ }
+}
+XCOMM fs1 class (ISO8859 families)
+fs1 {
+ charset {
+ name ISO8859-1:GR
+ }
+ font {
+ primary ISO8859-1:GR
+ }
+}
+XCOMM fs2 class (Chinese Han Character (Traditional))
+fs2 {
+ charset {
+ name BIG5-0:GLGR
+ }
+ font {
+ primary BIG5-0:GLGR
+ substitute BIG5-0:GLGR
+ }
+}
+XCOMM fs3 class
+fs3 {
+ charset {
+ name ISO10646-1
+ }
+ font {
+ primary ISO10646-1
+ }
+}
+END XLC_FONTSET
+
+XCOMM
+XCOMM XLC_XLOCALE category
+XCOMM
+XLC_XLOCALE
+
+encoding_name UTF-8
+mb_cur_max 6
+state_depend_encoding False
+
+XCOMM cs0 class
+cs0 {
+ side GL:Default
+ length 1
+ ct_encoding ISO8859-1:GL
+}
+
+XCOMM cs1 class
+cs1 {
+ side GR:Default
+ length 1
+ ct_encoding ISO8859-1:GR
+}
+
+XCOMM cs2 class
+cs2 {
+ side none
+ length 2
+ ct_encoding BIG5-0:GLGR
+}
+
+XCOMM cs3 class
+cs3 {
+ side none
+ ct_encoding ISO10646-1
+}
+
+END XLC_XLOCALE
diff --git a/libX11/nls/zh_TW.big5/Compose.pre b/libX11/nls/zh_TW.big5/Compose.pre
index 054c42e25..3c0dbb704 100644
--- a/libX11/nls/zh_TW.big5/Compose.pre
+++ b/libX11/nls/zh_TW.big5/Compose.pre
@@ -1,14 +1,14 @@
-XCOMM
-XCOMM zh_TW.big5 Compose Sequence
-XCOMM
-XCOMM Sequence Definition
-XCOMM
-XCOMM
-XCOMM This file currently has no entries. It appears that a compose file (even
-XCOMM just an empty one) is required for the appropriate keysyms to work for
-XCOMM this encoding.
-XCOMM
-XCOMM <Multi_key> Means <Compose>
-XCOMM Special Character
-
-XCOMM End of Sequence Definition
+XCOMM
+XCOMM zh_TW.big5 Compose Sequence
+XCOMM
+XCOMM Sequence Definition
+XCOMM
+XCOMM
+XCOMM This file currently has no entries. It appears that a compose file (even
+XCOMM just an empty one) is required for the appropriate keysyms to work for
+XCOMM this encoding.
+XCOMM
+XCOMM <Multi_key> Means <Compose>
+XCOMM Special Character
+
+XCOMM End of Sequence Definition
diff --git a/libX11/nls/zh_TW.big5/XI18N_OBJS b/libX11/nls/zh_TW.big5/XI18N_OBJS
index ff5ba24b6..6937f614b 100644
--- a/libX11/nls/zh_TW.big5/XI18N_OBJS
+++ b/libX11/nls/zh_TW.big5/XI18N_OBJS
@@ -1,7 +1,7 @@
-# CATEGORY(XLC|XIM|OM) SHARED_LIBRARY_NAME FUNCTION_NAME
-#
-# XI18N objects table for zh_TW.big5 locale
-#
-XLC common/xlibi18n _XlcGenericLoader # XLC_open
-XIM common/ximcp _XimOpenIM _XimRegisterIMInstantiateCallback _XimUnRegisterIMInstantiateCallback # XIM_open XIM_register XIM_unregister
-XOM common/xomGeneric _XomGenericOpenOM # XOM_open
+# CATEGORY(XLC|XIM|OM) SHARED_LIBRARY_NAME FUNCTION_NAME
+#
+# XI18N objects table for zh_TW.big5 locale
+#
+XLC common/xlibi18n _XlcGenericLoader # XLC_open
+XIM common/ximcp _XimOpenIM _XimRegisterIMInstantiateCallback _XimUnRegisterIMInstantiateCallback # XIM_open XIM_register XIM_unregister
+XOM common/xomGeneric _XomGenericOpenOM # XOM_open
diff --git a/libX11/nls/zh_TW.big5/XLC_LOCALE.pre b/libX11/nls/zh_TW.big5/XLC_LOCALE.pre
index 551e5d0fe..b04d02318 100644
--- a/libX11/nls/zh_TW.big5/XLC_LOCALE.pre
+++ b/libX11/nls/zh_TW.big5/XLC_LOCALE.pre
@@ -1,93 +1,93 @@
-XCOMM
-XCOMM (c) 1996, X11R6 L10N for Taiwan and Big5 Encoding Project
-XCOMM
-XCOMM modified for X11R6.3 by Hung-Chi Chu <hcchu@r350.ee.ntu.edu.tw> 1998/01/10
-XCOMM
-XCOMM
-XCOMM XLC_FONTSET category
-XCOMM
-XLC_FONTSET
-XCOMM fs0 class (7 bit ASCII)
-fs0 {
- charset {
- name ISO8859-1:GL
- }
- font {
- primary ISO8859-1:GL
- vertical_rotate all
- }
-}
-XCOMM fs1 class
-fs1 {
- charset {
- name BIG5-0:GLGR
- }
- font {
- primary BIG5-0:GLGR
- substitute BIG5-0:GLGR
- }
-}
-END XLC_FONTSET
-
-XCOMM
-XCOMM XLC_XLOCALE category
-XCOMM
-XLC_XLOCALE
-
-encoding_name zh_TW.Big5
-mb_cur_max 2
-state_depend_encoding False
-
-wc_encoding_mask \x00038000
-wc_shift_bits 8
-
-#ifndef X_LOCALE
-use_stdc_env True
-force_convert_to_mb True
-#endif
-
-XCOMM cs0 class
-cs0 {
- side GL:Default
- length 1
- wc_encoding \x00000000
- ct_encoding ISO8859-1:GL
-}
-
-XCOMM cs1 class
-cs1 {
- side none
- length 2
- byte1 \xa1,\xf9
- byte2 \x40,\x7e;\xa1,\xfe
-
- wc_encoding \x00008000
- ct_encoding BIG5-0:GLGR:\x1b\x25\x2f\x32
-
- mb_conversion [\xa140,\xf9fe]->\x2140
- ct_conversion [\x2140,\x79fe]->\xa140
-}
-
-XCOMM cs2 class
-cs2 {
- side none
- length 2
- byte1 \xa1,\xc7
- byte2 \x40,\x7e;\xa1,\xfe
- wc_encoding \x00010000
- ct_encoding BIG5-E0:GL;BIG5-E0:GR
- mb_conversion [\xa140,\xa17e]->\x2121, [\xa1a1,\xa1bf]->\x2160, [\xa1c0,\xa1fe]->\x2221, [\xa240,\xa25e]->\x2260, [\xa25f,\xa27e]->\x2321, [\xa2a1,\xa2de]->\x2341, [\xa2df,\xa2fe]->\x2421, [\xa340,\xa37d]->\x2441, [\xa37e,\xa37e]->\x2521, [\xa3a1,\xa3fd]->\x2522, [\xa3fe,\xa3fe]->\x2621, [\xa440,\xa47e]->\x2622, [\xa4a1,\xa4be]->\x2661, [\xa4bf,\xa4fe]->\x2721, [\xa540,\xa55d]->\x2761, [\xa55e,\xa57e]->\x2821, [\xa5a1,\xa5dd]->\x2842, [\xa5de,\xa5fe]->\x2921, [\xa640,\xa67c]->\x2942, [\xa67d,\xa67e]->\x2a21, [\xa6a1,\xa6fc]->\x2a23, [\xa6fd,\xa6fe]->\x2b21, [\xa740,\xa77e]->\x2b23, [\xa7a1,\xa7bd]->\x2b62, [\xa7be,\xa7fe]->\x2c21, [\xa840,\xa85c]->\x2c62, [\xa85d,\xa87e]->\x2d21, [\xa8a1,\xa8dc]->\x2d43, [\xa8dd,\xa8fe]->\x2e21, [\xa940,\xa97b]->\x2e43, [\xa97c,\xa97e]->\x2f21, [\xa9a1,\xa9fb]->\x2f24, [\xa9fc,\xa9fe]->\x3021, [\xaa40,\xaa7e]->\x3024, [\xaaa1,\xaabc]->\x3063, [\xaabd,\xaafe]->\x3121, [\xab40,\xab5b]->\x3163, [\xab5c,\xab7e]->\x3221, [\xaba1,\xabdb]->\x3244, [\xabdc,\xabfe]->\x3321, [\xac40,\xac7a]->\x3344, [\xac7b,\xac7e]->\x3421, [\xaca1,\xacfa]->\x3425, [\xacfb,\xacfe]->\x3521, [\xad40,\xad7e]->\x3525, [\xada1,\xadbb]->\x3564, [\xadbc,\xadfe]->\x3621, [\xae40,\xae5a]->\x3664, [\xae5b,\xae7e]->\x3721, [\xaea1,\xaeda]->\x3745, [\xaedb,\xaefe]->\x3821, [\xaf40,\xaf79]->\x3845, [\xaf7a,\xaf7e]->\x3921, [\xafa1,\xaff9]->\x3926, [\xaffa,\xaffe]->\x3a21, [\xb040,\xb07e]->\x3a26, [\xb0a1,\xb0ba]->\x3a65, [\xb0bb,\xb0fe]->\x3b21, [\xb140,\xb159]->\x3b65, [\xb15a,\xb17e]->\x3c21, [\xb1a1,\xb1d9]->\x3c46, [\xb1da,\xb1fe]->\x3d21, [\xb240,\xb278]->\x3d46, [\xb279,\xb27e]->\x3e21, [\xb2a1,\xb2f8]->\x3e27, [\xb2f9,\xb2fe]->\x3f21, [\xb340,\xb37e]->\x3f27, [\xb3a1,\xb3b9]->\x3f66, [\xb3ba,\xb3fe]->\x4021, [\xb440,\xb458]->\x4066, [\xb459,\xb47e]->\x4121, [\xb4a1,\xb4d8]->\x4147, [\xb4d9,\xb4fe]->\x4221, [\xb540,\xb577]->\x4247, [\xb578,\xb57e]->\x4321, [\xb5a1,\xb5f7]->\x4328, [\xb5f8,\xb5fe]->\x4421, [\xb640,\xb67e]->\x4428, [\xb6a1,\xb6b8]->\x4467, [\xb6b9,\xb6fe]->\x4521, [\xb740,\xb757]->\x4567, [\xb758,\xb77e]->\x4621, [\xb7a1,\xb7d7]->\x4648, [\xb7d8,\xb7fe]->\x4721, [\xb840,\xb876]->\x4748, [\xb877,\xb87e]->\x4821, [\xb8a1,\xb8f6]->\x4829, [\xb8f7,\xb8fe]->\x4921, [\xb940,\xb97e]->\x4929, [\xb9a1,\xb9b7]->\x4968, [\xb9b8,\xb9fe]->\x4a21, [\xba40,\xba56]->\x4a68, [\xba57,\xba7e]->\x4b21, [\xbaa1,\xbad6]->\x4b49, [\xbad7,\xbafe]->\x4c21, [\xbb40,\xbb75]->\x4c49, [\xbb76,\xbb7e]->\x4d21, [\xbba1,\xbbf5]->\x4d2a, [\xbbf6,\xbbfe]->\x4e21, [\xbc40,\xbc7e]->\x4e2a, [\xbca1,\xbcb6]->\x4e69, [\xbcb7,\xbcfe]->\x4f21, [\xbd40,\xbd55]->\x4f69, [\xbd56,\xbd7e]->\x5021, [\xbda1,\xbdd5]->\x504a, [\xbdd6,\xbdfe]->\x5121, [\xbe40,\xbe74]->\x514a, [\xbe75,\xbe7e]->\x5221, [\xbea1,\xbef4]->\x522b, [\xbef5,\xbefe]->\x5321, [\xbf40,\xbf7e]->\x532b, [\xbfa1,\xbfb5]->\x536a, [\xbfb6,\xbffe]->\x5421, [\xc040,\xc054]->\x546a, [\xc055,\xc07e]->\x5521, [\xc0a1,\xc0d4]->\x554b, [\xc0d5,\xc0fe]->\x5621, [\xc140,\xc173]->\x564b, [\xc174,\xc17e]->\x5721, [\xc1a1,\xc1f3]->\x572c, [\xc1f4,\xc1fe]->\x5821, [\xc240,\xc27e]->\x582c, [\xc2a1,\xc2b4]->\x586b, [\xc2b5,\xc2fe]->\x5921, [\xc340,\xc353]->\x596b, [\xc354,\xc37e]->\x5a21, [\xc3a1,\xc3d3]->\x5a4c, [\xc3d4,\xc3fe]->\x5b21, [\xc440,\xc472]->\x5b4c, [\xc473,\xc47e]->\x5c21, [\xc4a1,\xc4f2]->\x5c2d, [\xc4f3,\xc4fe]->\x5d21, [\xc540,\xc57e]->\x5d2d, [\xc5a1,\xc5b3]->\x5d6c, [\xc5b4,\xc5fe]->\x5e21, [\xc640,\xc652]->\x5e6c, [\xc653,\xc67e]->\x5f21, [\xc6a1,\xc6d2]->\x5f4d, [\xc6d3,\xc6fe]->\x6021, [\xc740,\xc771]->\x604d, [\xc772,\xc77e]->\x6121, [\xc7a1,\xc7f1]->\x612e, [\xc7f2,\xc7fe]->\x6221
-}
-
-XCOMM cs3 class
-cs3 {
- side none
- length 2
- byte1 \xc9,\xf9
- byte2 \x40,\x7e;\xa1,\xfe
- wc_encoding \x00020000
- ct_encoding BIG5-E1:GL;BIG5-E1:GR
- mb_conversion [\xc940,\xc97e]->\x2121, [\xc9a1,\xc9bf]->\x2160, [\xc9c0,\xc9fe]->\x2221, [\xca40,\xca5e]->\x2260, [\xca5f,\xca7e]->\x2321, [\xcaa1,\xcade]->\x2341, [\xcadf,\xcafe]->\x2421, [\xcb40,\xcb7d]->\x2441, [\xcb7e,\xcb7e]->\x2521, [\xcba1,\xcbfd]->\x2522, [\xcbfe,\xcbfe]->\x2621, [\xcc40,\xcc7e]->\x2622, [\xcca1,\xccbe]->\x2661, [\xccbf,\xccfe]->\x2721, [\xcd40,\xcd5d]->\x2761, [\xcd5e,\xcd7e]->\x2821, [\xcda1,\xcddd]->\x2842, [\xcdde,\xcdfe]->\x2921, [\xce40,\xce7c]->\x2942, [\xce7d,\xce7e]->\x2a21, [\xcea1,\xcefc]->\x2a23, [\xcefd,\xcefe]->\x2b21, [\xcf40,\xcf7e]->\x2b23, [\xcfa1,\xcfbd]->\x2b62, [\xcfbe,\xcffe]->\x2c21, [\xd040,\xd05c]->\x2c62, [\xd05d,\xd07e]->\x2d21, [\xd0a1,\xd0dc]->\x2d43, [\xd0dd,\xd0fe]->\x2e21, [\xd140,\xd17b]->\x2e43, [\xd17c,\xd17e]->\x2f21, [\xd1a1,\xd1fb]->\x2f24, [\xd1fc,\xd1fe]->\x3021, [\xd240,\xd27e]->\x3024, [\xd2a1,\xd2bc]->\x3063, [\xd2bd,\xd2fe]->\x3121, [\xd340,\xd35b]->\x3163, [\xd35c,\xd37e]->\x3221, [\xd3a1,\xd3db]->\x3244, [\xd3dc,\xd3fe]->\x3321, [\xd440,\xd47a]->\x3344, [\xd47b,\xd47e]->\x3421, [\xd4a1,\xd4fa]->\x3425, [\xd4fb,\xd4fe]->\x3521, [\xd540,\xd57e]->\x3525, [\xd5a1,\xd5bb]->\x3564, [\xd5bc,\xd5fe]->\x3621, [\xd640,\xd65a]->\x3664, [\xd65b,\xd67e]->\x3721, [\xd6a1,\xd6da]->\x3745, [\xd6db,\xd6fe]->\x3821, [\xd740,\xd779]->\x3845, [\xd77a,\xd77e]->\x3921, [\xd7a1,\xd7f9]->\x3926, [\xd7fa,\xd7fe]->\x3a21, [\xd840,\xd87e]->\x3a26, [\xd8a1,\xd8ba]->\x3a65, [\xd8bb,\xd8fe]->\x3b21, [\xd940,\xd959]->\x3b65, [\xd95a,\xd97e]->\x3c21, [\xd9a1,\xd9d9]->\x3c46, [\xd9da,\xd9fe]->\x3d21, [\xda40,\xda78]->\x3d46, [\xda79,\xda7e]->\x3e21, [\xdaa1,\xdaf8]->\x3e27, [\xdaf9,\xdafe]->\x3f21, [\xdb40,\xdb7e]->\x3f27, [\xdba1,\xdbb9]->\x3f66, [\xdbba,\xdbfe]->\x4021, [\xdc40,\xdc58]->\x4066, [\xdc59,\xdc7e]->\x4121, [\xdca1,\xdcd8]->\x4147, [\xdcd9,\xdcfe]->\x4221, [\xdd40,\xdd77]->\x4247, [\xdd78,\xdd7e]->\x4321, [\xdda1,\xddf7]->\x4328, [\xddf8,\xddfe]->\x4421, [\xde40,\xde7e]->\x4428, [\xdea1,\xdeb8]->\x4467, [\xdeb9,\xdefe]->\x4521, [\xdf40,\xdf57]->\x4567, [\xdf58,\xdf7e]->\x4621, [\xdfa1,\xdfd7]->\x4648, [\xdfd8,\xdffe]->\x4721, [\xe040,\xe076]->\x4748, [\xe077,\xe07e]->\x4821, [\xe0a1,\xe0f6]->\x4829, [\xe0f7,\xe0fe]->\x4921, [\xe140,\xe17e]->\x4929, [\xe1a1,\xe1b7]->\x4968, [\xe1b8,\xe1fe]->\x4a21, [\xe240,\xe256]->\x4a68, [\xe257,\xe27e]->\x4b21, [\xe2a1,\xe2d6]->\x4b49, [\xe2d7,\xe2fe]->\x4c21, [\xe340,\xe375]->\x4c49, [\xe376,\xe37e]->\x4d21, [\xe3a1,\xe3f5]->\x4d2a, [\xe3f6,\xe3fe]->\x4e21, [\xe440,\xe47e]->\x4e2a, [\xe4a1,\xe4b6]->\x4e69, [\xe4b7,\xe4fe]->\x4f21, [\xe540,\xe555]->\x4f69, [\xe556,\xe57e]->\x5021, [\xe5a1,\xe5d5]->\x504a, [\xe5d6,\xe5fe]->\x5121, [\xe640,\xe674]->\x514a, [\xe675,\xe67e]->\x5221, [\xe6a1,\xe6f4]->\x522b, [\xe6f5,\xe6fe]->\x5321, [\xe740,\xe77e]->\x532b, [\xe7a1,\xe7b5]->\x536a, [\xe7b6,\xe7fe]->\x5421, [\xe840,\xe854]->\x546a, [\xe855,\xe87e]->\x5521, [\xe8a1,\xe8d4]->\x554b, [\xe8d5,\xe8fe]->\x5621, [\xe940,\xe973]->\x564b, [\xe974,\xe97e]->\x5721, [\xe9a1,\xe9f3]->\x572c, [\xe9f4,\xe9fe]->\x5821, [\xea40,\xea7e]->\x582c, [\xeaa1,\xeab4]->\x586b, [\xeab5,\xeafe]->\x5921, [\xeb40,\xeb53]->\x596b, [\xeb54,\xeb7e]->\x5a21, [\xeba1,\xebd3]->\x5a4c, [\xebd4,\xebfe]->\x5b21, [\xec40,\xec72]->\x5b4c, [\xec73,\xec7e]->\x5c21, [\xeca1,\xecf2]->\x5c2d, [\xecf3,\xecfe]->\x5d21, [\xed40,\xed7e]->\x5d2d, [\xeda1,\xedb3]->\x5d6c, [\xedb4,\xedfe]->\x5e21, [\xee40,\xee52]->\x5e6c, [\xee53,\xee7e]->\x5f21, [\xeea1,\xeed2]->\x5f4d, [\xeed3,\xeefe]->\x6021, [\xef40,\xef71]->\x604d, [\xef72,\xef7e]->\x6121, [\xefa1,\xeff1]->\x612e, [\xeff2,\xeffe]->\x6221, [\xf040,\xf07e]->\x622e, [\xf0a1,\xf0b2]->\x626d, [\xf0b3,\xf0fe]->\x6321, [\xf140,\xf151]->\x636d, [\xf152,\xf17e]->\x6421, [\xf1a1,\xf1d1]->\x644e, [\xf1d2,\xf1fe]->\x6521, [\xf240,\xf270]->\x654e, [\xf271,\xf27e]->\x6621, [\xf2a1,\xf2f0]->\x662f, [\xf2f1,\xf2fe]->\x6721, [\xf340,\xf37e]->\x672f, [\xf3a1,\xf3b1]->\x676e, [\xf3b2,\xf3fe]->\x6821, [\xf440,\xf450]->\x686e, [\xf451,\xf47e]->\x6921, [\xf4a1,\xf4d0]->\x694f, [\xf4d1,\xf4fe]->\x6a21, [\xf540,\xf56f]->\x6a4f, [\xf570,\xf57e]->\x6b21, [\xf5a1,\xf5ef]->\x6b30, [\xf5f0,\xf5fe]->\x6c21, [\xf640,\xf67e]->\x6c30, [\xf6a1,\xf6b0]->\x6c6f, [\xf6b1,\xf6fe]->\x6d21, [\xf740,\xf74f]->\x6d6f, [\xf750,\xf77e]->\x6e21, [\xf7a1,\xf7cf]->\x6e50, [\xf7d0,\xf7fe]->\x6f21, [\xf840,\xf86e]->\x6f50, [\xf86f,\xf87e]->\x7021, [\xf8a1,\xf8ee]->\x7031, [\xf8ef,\xf8fe]->\x7121, [\xf940,\xf97e]->\x7131, [\xf9a1,\xf9af]->\x7170, [\xf9b0,\xf9fe]->\x7221
-}
-
-END XLC_XLOCALE
+XCOMM
+XCOMM (c) 1996, X11R6 L10N for Taiwan and Big5 Encoding Project
+XCOMM
+XCOMM modified for X11R6.3 by Hung-Chi Chu <hcchu@r350.ee.ntu.edu.tw> 1998/01/10
+XCOMM
+XCOMM
+XCOMM XLC_FONTSET category
+XCOMM
+XLC_FONTSET
+XCOMM fs0 class (7 bit ASCII)
+fs0 {
+ charset {
+ name ISO8859-1:GL
+ }
+ font {
+ primary ISO8859-1:GL
+ vertical_rotate all
+ }
+}
+XCOMM fs1 class
+fs1 {
+ charset {
+ name BIG5-0:GLGR
+ }
+ font {
+ primary BIG5-0:GLGR
+ substitute BIG5-0:GLGR
+ }
+}
+END XLC_FONTSET
+
+XCOMM
+XCOMM XLC_XLOCALE category
+XCOMM
+XLC_XLOCALE
+
+encoding_name zh_TW.Big5
+mb_cur_max 2
+state_depend_encoding False
+
+wc_encoding_mask \x00038000
+wc_shift_bits 8
+
+#ifndef X_LOCALE
+use_stdc_env True
+force_convert_to_mb True
+#endif
+
+XCOMM cs0 class
+cs0 {
+ side GL:Default
+ length 1
+ wc_encoding \x00000000
+ ct_encoding ISO8859-1:GL
+}
+
+XCOMM cs1 class
+cs1 {
+ side none
+ length 2
+ byte1 \xa1,\xf9
+ byte2 \x40,\x7e;\xa1,\xfe
+
+ wc_encoding \x00008000
+ ct_encoding BIG5-0:GLGR:\x1b\x25\x2f\x32
+
+ mb_conversion [\xa140,\xf9fe]->\x2140
+ ct_conversion [\x2140,\x79fe]->\xa140
+}
+
+XCOMM cs2 class
+cs2 {
+ side none
+ length 2
+ byte1 \xa1,\xc7
+ byte2 \x40,\x7e;\xa1,\xfe
+ wc_encoding \x00010000
+ ct_encoding BIG5-E0:GL;BIG5-E0:GR
+ mb_conversion [\xa140,\xa17e]->\x2121, [\xa1a1,\xa1bf]->\x2160, [\xa1c0,\xa1fe]->\x2221, [\xa240,\xa25e]->\x2260, [\xa25f,\xa27e]->\x2321, [\xa2a1,\xa2de]->\x2341, [\xa2df,\xa2fe]->\x2421, [\xa340,\xa37d]->\x2441, [\xa37e,\xa37e]->\x2521, [\xa3a1,\xa3fd]->\x2522, [\xa3fe,\xa3fe]->\x2621, [\xa440,\xa47e]->\x2622, [\xa4a1,\xa4be]->\x2661, [\xa4bf,\xa4fe]->\x2721, [\xa540,\xa55d]->\x2761, [\xa55e,\xa57e]->\x2821, [\xa5a1,\xa5dd]->\x2842, [\xa5de,\xa5fe]->\x2921, [\xa640,\xa67c]->\x2942, [\xa67d,\xa67e]->\x2a21, [\xa6a1,\xa6fc]->\x2a23, [\xa6fd,\xa6fe]->\x2b21, [\xa740,\xa77e]->\x2b23, [\xa7a1,\xa7bd]->\x2b62, [\xa7be,\xa7fe]->\x2c21, [\xa840,\xa85c]->\x2c62, [\xa85d,\xa87e]->\x2d21, [\xa8a1,\xa8dc]->\x2d43, [\xa8dd,\xa8fe]->\x2e21, [\xa940,\xa97b]->\x2e43, [\xa97c,\xa97e]->\x2f21, [\xa9a1,\xa9fb]->\x2f24, [\xa9fc,\xa9fe]->\x3021, [\xaa40,\xaa7e]->\x3024, [\xaaa1,\xaabc]->\x3063, [\xaabd,\xaafe]->\x3121, [\xab40,\xab5b]->\x3163, [\xab5c,\xab7e]->\x3221, [\xaba1,\xabdb]->\x3244, [\xabdc,\xabfe]->\x3321, [\xac40,\xac7a]->\x3344, [\xac7b,\xac7e]->\x3421, [\xaca1,\xacfa]->\x3425, [\xacfb,\xacfe]->\x3521, [\xad40,\xad7e]->\x3525, [\xada1,\xadbb]->\x3564, [\xadbc,\xadfe]->\x3621, [\xae40,\xae5a]->\x3664, [\xae5b,\xae7e]->\x3721, [\xaea1,\xaeda]->\x3745, [\xaedb,\xaefe]->\x3821, [\xaf40,\xaf79]->\x3845, [\xaf7a,\xaf7e]->\x3921, [\xafa1,\xaff9]->\x3926, [\xaffa,\xaffe]->\x3a21, [\xb040,\xb07e]->\x3a26, [\xb0a1,\xb0ba]->\x3a65, [\xb0bb,\xb0fe]->\x3b21, [\xb140,\xb159]->\x3b65, [\xb15a,\xb17e]->\x3c21, [\xb1a1,\xb1d9]->\x3c46, [\xb1da,\xb1fe]->\x3d21, [\xb240,\xb278]->\x3d46, [\xb279,\xb27e]->\x3e21, [\xb2a1,\xb2f8]->\x3e27, [\xb2f9,\xb2fe]->\x3f21, [\xb340,\xb37e]->\x3f27, [\xb3a1,\xb3b9]->\x3f66, [\xb3ba,\xb3fe]->\x4021, [\xb440,\xb458]->\x4066, [\xb459,\xb47e]->\x4121, [\xb4a1,\xb4d8]->\x4147, [\xb4d9,\xb4fe]->\x4221, [\xb540,\xb577]->\x4247, [\xb578,\xb57e]->\x4321, [\xb5a1,\xb5f7]->\x4328, [\xb5f8,\xb5fe]->\x4421, [\xb640,\xb67e]->\x4428, [\xb6a1,\xb6b8]->\x4467, [\xb6b9,\xb6fe]->\x4521, [\xb740,\xb757]->\x4567, [\xb758,\xb77e]->\x4621, [\xb7a1,\xb7d7]->\x4648, [\xb7d8,\xb7fe]->\x4721, [\xb840,\xb876]->\x4748, [\xb877,\xb87e]->\x4821, [\xb8a1,\xb8f6]->\x4829, [\xb8f7,\xb8fe]->\x4921, [\xb940,\xb97e]->\x4929, [\xb9a1,\xb9b7]->\x4968, [\xb9b8,\xb9fe]->\x4a21, [\xba40,\xba56]->\x4a68, [\xba57,\xba7e]->\x4b21, [\xbaa1,\xbad6]->\x4b49, [\xbad7,\xbafe]->\x4c21, [\xbb40,\xbb75]->\x4c49, [\xbb76,\xbb7e]->\x4d21, [\xbba1,\xbbf5]->\x4d2a, [\xbbf6,\xbbfe]->\x4e21, [\xbc40,\xbc7e]->\x4e2a, [\xbca1,\xbcb6]->\x4e69, [\xbcb7,\xbcfe]->\x4f21, [\xbd40,\xbd55]->\x4f69, [\xbd56,\xbd7e]->\x5021, [\xbda1,\xbdd5]->\x504a, [\xbdd6,\xbdfe]->\x5121, [\xbe40,\xbe74]->\x514a, [\xbe75,\xbe7e]->\x5221, [\xbea1,\xbef4]->\x522b, [\xbef5,\xbefe]->\x5321, [\xbf40,\xbf7e]->\x532b, [\xbfa1,\xbfb5]->\x536a, [\xbfb6,\xbffe]->\x5421, [\xc040,\xc054]->\x546a, [\xc055,\xc07e]->\x5521, [\xc0a1,\xc0d4]->\x554b, [\xc0d5,\xc0fe]->\x5621, [\xc140,\xc173]->\x564b, [\xc174,\xc17e]->\x5721, [\xc1a1,\xc1f3]->\x572c, [\xc1f4,\xc1fe]->\x5821, [\xc240,\xc27e]->\x582c, [\xc2a1,\xc2b4]->\x586b, [\xc2b5,\xc2fe]->\x5921, [\xc340,\xc353]->\x596b, [\xc354,\xc37e]->\x5a21, [\xc3a1,\xc3d3]->\x5a4c, [\xc3d4,\xc3fe]->\x5b21, [\xc440,\xc472]->\x5b4c, [\xc473,\xc47e]->\x5c21, [\xc4a1,\xc4f2]->\x5c2d, [\xc4f3,\xc4fe]->\x5d21, [\xc540,\xc57e]->\x5d2d, [\xc5a1,\xc5b3]->\x5d6c, [\xc5b4,\xc5fe]->\x5e21, [\xc640,\xc652]->\x5e6c, [\xc653,\xc67e]->\x5f21, [\xc6a1,\xc6d2]->\x5f4d, [\xc6d3,\xc6fe]->\x6021, [\xc740,\xc771]->\x604d, [\xc772,\xc77e]->\x6121, [\xc7a1,\xc7f1]->\x612e, [\xc7f2,\xc7fe]->\x6221
+}
+
+XCOMM cs3 class
+cs3 {
+ side none
+ length 2
+ byte1 \xc9,\xf9
+ byte2 \x40,\x7e;\xa1,\xfe
+ wc_encoding \x00020000
+ ct_encoding BIG5-E1:GL;BIG5-E1:GR
+ mb_conversion [\xc940,\xc97e]->\x2121, [\xc9a1,\xc9bf]->\x2160, [\xc9c0,\xc9fe]->\x2221, [\xca40,\xca5e]->\x2260, [\xca5f,\xca7e]->\x2321, [\xcaa1,\xcade]->\x2341, [\xcadf,\xcafe]->\x2421, [\xcb40,\xcb7d]->\x2441, [\xcb7e,\xcb7e]->\x2521, [\xcba1,\xcbfd]->\x2522, [\xcbfe,\xcbfe]->\x2621, [\xcc40,\xcc7e]->\x2622, [\xcca1,\xccbe]->\x2661, [\xccbf,\xccfe]->\x2721, [\xcd40,\xcd5d]->\x2761, [\xcd5e,\xcd7e]->\x2821, [\xcda1,\xcddd]->\x2842, [\xcdde,\xcdfe]->\x2921, [\xce40,\xce7c]->\x2942, [\xce7d,\xce7e]->\x2a21, [\xcea1,\xcefc]->\x2a23, [\xcefd,\xcefe]->\x2b21, [\xcf40,\xcf7e]->\x2b23, [\xcfa1,\xcfbd]->\x2b62, [\xcfbe,\xcffe]->\x2c21, [\xd040,\xd05c]->\x2c62, [\xd05d,\xd07e]->\x2d21, [\xd0a1,\xd0dc]->\x2d43, [\xd0dd,\xd0fe]->\x2e21, [\xd140,\xd17b]->\x2e43, [\xd17c,\xd17e]->\x2f21, [\xd1a1,\xd1fb]->\x2f24, [\xd1fc,\xd1fe]->\x3021, [\xd240,\xd27e]->\x3024, [\xd2a1,\xd2bc]->\x3063, [\xd2bd,\xd2fe]->\x3121, [\xd340,\xd35b]->\x3163, [\xd35c,\xd37e]->\x3221, [\xd3a1,\xd3db]->\x3244, [\xd3dc,\xd3fe]->\x3321, [\xd440,\xd47a]->\x3344, [\xd47b,\xd47e]->\x3421, [\xd4a1,\xd4fa]->\x3425, [\xd4fb,\xd4fe]->\x3521, [\xd540,\xd57e]->\x3525, [\xd5a1,\xd5bb]->\x3564, [\xd5bc,\xd5fe]->\x3621, [\xd640,\xd65a]->\x3664, [\xd65b,\xd67e]->\x3721, [\xd6a1,\xd6da]->\x3745, [\xd6db,\xd6fe]->\x3821, [\xd740,\xd779]->\x3845, [\xd77a,\xd77e]->\x3921, [\xd7a1,\xd7f9]->\x3926, [\xd7fa,\xd7fe]->\x3a21, [\xd840,\xd87e]->\x3a26, [\xd8a1,\xd8ba]->\x3a65, [\xd8bb,\xd8fe]->\x3b21, [\xd940,\xd959]->\x3b65, [\xd95a,\xd97e]->\x3c21, [\xd9a1,\xd9d9]->\x3c46, [\xd9da,\xd9fe]->\x3d21, [\xda40,\xda78]->\x3d46, [\xda79,\xda7e]->\x3e21, [\xdaa1,\xdaf8]->\x3e27, [\xdaf9,\xdafe]->\x3f21, [\xdb40,\xdb7e]->\x3f27, [\xdba1,\xdbb9]->\x3f66, [\xdbba,\xdbfe]->\x4021, [\xdc40,\xdc58]->\x4066, [\xdc59,\xdc7e]->\x4121, [\xdca1,\xdcd8]->\x4147, [\xdcd9,\xdcfe]->\x4221, [\xdd40,\xdd77]->\x4247, [\xdd78,\xdd7e]->\x4321, [\xdda1,\xddf7]->\x4328, [\xddf8,\xddfe]->\x4421, [\xde40,\xde7e]->\x4428, [\xdea1,\xdeb8]->\x4467, [\xdeb9,\xdefe]->\x4521, [\xdf40,\xdf57]->\x4567, [\xdf58,\xdf7e]->\x4621, [\xdfa1,\xdfd7]->\x4648, [\xdfd8,\xdffe]->\x4721, [\xe040,\xe076]->\x4748, [\xe077,\xe07e]->\x4821, [\xe0a1,\xe0f6]->\x4829, [\xe0f7,\xe0fe]->\x4921, [\xe140,\xe17e]->\x4929, [\xe1a1,\xe1b7]->\x4968, [\xe1b8,\xe1fe]->\x4a21, [\xe240,\xe256]->\x4a68, [\xe257,\xe27e]->\x4b21, [\xe2a1,\xe2d6]->\x4b49, [\xe2d7,\xe2fe]->\x4c21, [\xe340,\xe375]->\x4c49, [\xe376,\xe37e]->\x4d21, [\xe3a1,\xe3f5]->\x4d2a, [\xe3f6,\xe3fe]->\x4e21, [\xe440,\xe47e]->\x4e2a, [\xe4a1,\xe4b6]->\x4e69, [\xe4b7,\xe4fe]->\x4f21, [\xe540,\xe555]->\x4f69, [\xe556,\xe57e]->\x5021, [\xe5a1,\xe5d5]->\x504a, [\xe5d6,\xe5fe]->\x5121, [\xe640,\xe674]->\x514a, [\xe675,\xe67e]->\x5221, [\xe6a1,\xe6f4]->\x522b, [\xe6f5,\xe6fe]->\x5321, [\xe740,\xe77e]->\x532b, [\xe7a1,\xe7b5]->\x536a, [\xe7b6,\xe7fe]->\x5421, [\xe840,\xe854]->\x546a, [\xe855,\xe87e]->\x5521, [\xe8a1,\xe8d4]->\x554b, [\xe8d5,\xe8fe]->\x5621, [\xe940,\xe973]->\x564b, [\xe974,\xe97e]->\x5721, [\xe9a1,\xe9f3]->\x572c, [\xe9f4,\xe9fe]->\x5821, [\xea40,\xea7e]->\x582c, [\xeaa1,\xeab4]->\x586b, [\xeab5,\xeafe]->\x5921, [\xeb40,\xeb53]->\x596b, [\xeb54,\xeb7e]->\x5a21, [\xeba1,\xebd3]->\x5a4c, [\xebd4,\xebfe]->\x5b21, [\xec40,\xec72]->\x5b4c, [\xec73,\xec7e]->\x5c21, [\xeca1,\xecf2]->\x5c2d, [\xecf3,\xecfe]->\x5d21, [\xed40,\xed7e]->\x5d2d, [\xeda1,\xedb3]->\x5d6c, [\xedb4,\xedfe]->\x5e21, [\xee40,\xee52]->\x5e6c, [\xee53,\xee7e]->\x5f21, [\xeea1,\xeed2]->\x5f4d, [\xeed3,\xeefe]->\x6021, [\xef40,\xef71]->\x604d, [\xef72,\xef7e]->\x6121, [\xefa1,\xeff1]->\x612e, [\xeff2,\xeffe]->\x6221, [\xf040,\xf07e]->\x622e, [\xf0a1,\xf0b2]->\x626d, [\xf0b3,\xf0fe]->\x6321, [\xf140,\xf151]->\x636d, [\xf152,\xf17e]->\x6421, [\xf1a1,\xf1d1]->\x644e, [\xf1d2,\xf1fe]->\x6521, [\xf240,\xf270]->\x654e, [\xf271,\xf27e]->\x6621, [\xf2a1,\xf2f0]->\x662f, [\xf2f1,\xf2fe]->\x6721, [\xf340,\xf37e]->\x672f, [\xf3a1,\xf3b1]->\x676e, [\xf3b2,\xf3fe]->\x6821, [\xf440,\xf450]->\x686e, [\xf451,\xf47e]->\x6921, [\xf4a1,\xf4d0]->\x694f, [\xf4d1,\xf4fe]->\x6a21, [\xf540,\xf56f]->\x6a4f, [\xf570,\xf57e]->\x6b21, [\xf5a1,\xf5ef]->\x6b30, [\xf5f0,\xf5fe]->\x6c21, [\xf640,\xf67e]->\x6c30, [\xf6a1,\xf6b0]->\x6c6f, [\xf6b1,\xf6fe]->\x6d21, [\xf740,\xf74f]->\x6d6f, [\xf750,\xf77e]->\x6e21, [\xf7a1,\xf7cf]->\x6e50, [\xf7d0,\xf7fe]->\x6f21, [\xf840,\xf86e]->\x6f50, [\xf86f,\xf87e]->\x7021, [\xf8a1,\xf8ee]->\x7031, [\xf8ef,\xf8fe]->\x7121, [\xf940,\xf97e]->\x7131, [\xf9a1,\xf9af]->\x7170, [\xf9b0,\xf9fe]->\x7221
+}
+
+END XLC_XLOCALE
diff --git a/libX11/nls/zh_TW/Compose.pre b/libX11/nls/zh_TW/Compose.pre
index 32be5b186..79be29051 100644
--- a/libX11/nls/zh_TW/Compose.pre
+++ b/libX11/nls/zh_TW/Compose.pre
@@ -1,14 +1,14 @@
-XCOMM
-XCOMM zh_TW Compose Sequence
-XCOMM
-XCOMM Sequence Definition
-XCOMM
-XCOMM
-XCOMM This file currently has no entries. It appears that a compose file (even
-XCOMM just an empty one) is required for the appropriate keysyms to work for
-XCOMM this encoding.
-XCOMM
-XCOMM <Multi_key> Means <Compose>
-XCOMM Special Character
-
-XCOMM End of Sequence Definition
+XCOMM
+XCOMM zh_TW Compose Sequence
+XCOMM
+XCOMM Sequence Definition
+XCOMM
+XCOMM
+XCOMM This file currently has no entries. It appears that a compose file (even
+XCOMM just an empty one) is required for the appropriate keysyms to work for
+XCOMM this encoding.
+XCOMM
+XCOMM <Multi_key> Means <Compose>
+XCOMM Special Character
+
+XCOMM End of Sequence Definition
diff --git a/libX11/nls/zh_TW/XI18N_OBJS b/libX11/nls/zh_TW/XI18N_OBJS
index e8218cf29..0f471dd00 100644
--- a/libX11/nls/zh_TW/XI18N_OBJS
+++ b/libX11/nls/zh_TW/XI18N_OBJS
@@ -1,7 +1,7 @@
-# CATEGORY(XLC|XIM|OM) SHARED_LIBRARY_NAME FUNCTION_NAME
-#
-# XI18N objects table for zh_TW locale
-#
-XLC common/xlibi18n _XlcGenericLoader # XLC_open
-XIM common/ximp40 _Ximp_OpenIM # XIM_open
-XOM common/xomGeneric _XomGenericOpenOM # XOM_open
+# CATEGORY(XLC|XIM|OM) SHARED_LIBRARY_NAME FUNCTION_NAME
+#
+# XI18N objects table for zh_TW locale
+#
+XLC common/xlibi18n _XlcGenericLoader # XLC_open
+XIM common/ximp40 _Ximp_OpenIM # XIM_open
+XOM common/xomGeneric _XomGenericOpenOM # XOM_open
diff --git a/libX11/nls/zh_TW/XLC_LOCALE.pre b/libX11/nls/zh_TW/XLC_LOCALE.pre
index 7eed43670..d75ece85f 100644
--- a/libX11/nls/zh_TW/XLC_LOCALE.pre
+++ b/libX11/nls/zh_TW/XLC_LOCALE.pre
@@ -1,142 +1,142 @@
-XCOMM XLocale Database Sample for zh_TW
-XCOMM
-XCOMM Note: In lib/X11/lcCT.c, charset names for CNS11643 coded character
-XCOMM sets are defined as CNS11643.1986-1 and -2. In the ECMA Registry,
-XCOMM CNS coded character sets 1-7 are registered as CNS 11643-1992.
-XCOMM CJK.INF Version 1.7 (August 15, 1995) written by Ken Lunde says
-XCOMM plane 14 of CNS 11643-1983 now became plane 3 of CNS 11643-1992.
-XCOMM I do not know how Taiwanese EUC is organized currently, so I left the
-XCOMM X11R6 organization of fsN/csN as it is and only changed "CNS11643-*"
-XCOMM to "CNS11643.1986-*".
-XCOMM 1995-10-24 T. Numata (numa@rp.open.cs.fujitsu.co.jp)
-
-XCOMM
-XCOMM XLC_FONTSET category
-XCOMM
-XLC_FONTSET
-XCOMM fs0 class (7 bit ASCII)
-fs0 {
- charset {
- name ISO8859-1:GL
- }
- font {
- primary ISO8859-1:GL
- vertical_rotate all
- }
-}
-XCOMM fs1 class
-fs1 {
- charset {
- name CNS11643.1986-1:GL
- }
- font {
- primary CNS11643.1986-1:GL
- }
-}
-XCOMM fs2 class
-fs2 {
- charset {
- name CNS11643.1986-2:GL
- }
- font {
- primary CNS11643.1986-2:GL
- }
-}
-XCOMM fs3 class
-fs3 {
- charset {
- name CNS11643.1986-14:GL
- }
- font {
- primary CNS11643.1986-14:GL
- }
-}
-XCOMM fs4 class
-fs4 {
- charset {
- name CNS11643.1986-15:GL
- }
- font {
- primary CNS11643.1986-15:GL
- }
-}
-XCOMM fs5 class
-fs5 {
- charset {
- name CNS11643.1986-16:GL
- }
- font {
- primary CNS11643.1986-16:GL
- }
-}
-END XLC_FONTSET
-
-XCOMM
-XCOMM XLC_XLOCALE category
-XCOMM
-XLC_XLOCALE
-
-encoding_name zh_TW.euc
-mb_cur_max 4
-state_depend_encoding False
-wc_encoding_mask \x3fffc000
-wc_shift_bits 7
-
-#ifndef X_LOCALE
-use_stdc_env True
-force_convert_to_mb True
-#endif
-
-XCOMM cs0 class
-cs0 {
- side GL:Default
- length 1
- wc_encoding \x00000000
- ct_encoding ISO8859-1:GL; CNS11643.1986-0:GL
-}
-
-XCOMM cs1 class
-cs1 {
- side GR:Default
- length 2
- wc_encoding \x30000000
- ct_encoding CNS11643.1986-1:GR
-}
-
-XCOMM cs2 class # plane 2
-cs2 {
- side GR
- length 2
- mb_encoding <SS> \x8e\xa2
- wc_encoding \x10088000
- ct_encoding CNS11643.1986-2:GR
-}
-
-XCOMM cs3 class # plane 14
-cs3 {
- side GR
- length 2
- mb_encoding <SS> \x8e\xae
- wc_encoding \x100b8000
- ct_encoding CNS11643.1986-14:GR
-}
-
-XCOMM cs4 class # plane 15
-cs4 {
- side GR
- length 2
- mb_encoding <SS> \x8e\xaf
- wc_encoding \x100bc000
- ct_encoding CNS11643.1986-15:GR
-}
-
-XCOMM cs5 class # plane 16
-cs5 {
- side GR
- length 2
- mb_encoding <SS> \x8e\xb0
- wc_encoding \x100c0000
- ct_encoding CNS11643.1986-16:GR
-}
-
-END XLC_XLOCALE
+XCOMM XLocale Database Sample for zh_TW
+XCOMM
+XCOMM Note: In lib/X11/lcCT.c, charset names for CNS11643 coded character
+XCOMM sets are defined as CNS11643.1986-1 and -2. In the ECMA Registry,
+XCOMM CNS coded character sets 1-7 are registered as CNS 11643-1992.
+XCOMM CJK.INF Version 1.7 (August 15, 1995) written by Ken Lunde says
+XCOMM plane 14 of CNS 11643-1983 now became plane 3 of CNS 11643-1992.
+XCOMM I do not know how Taiwanese EUC is organized currently, so I left the
+XCOMM X11R6 organization of fsN/csN as it is and only changed "CNS11643-*"
+XCOMM to "CNS11643.1986-*".
+XCOMM 1995-10-24 T. Numata (numa@rp.open.cs.fujitsu.co.jp)
+
+XCOMM
+XCOMM XLC_FONTSET category
+XCOMM
+XLC_FONTSET
+XCOMM fs0 class (7 bit ASCII)
+fs0 {
+ charset {
+ name ISO8859-1:GL
+ }
+ font {
+ primary ISO8859-1:GL
+ vertical_rotate all
+ }
+}
+XCOMM fs1 class
+fs1 {
+ charset {
+ name CNS11643.1986-1:GL
+ }
+ font {
+ primary CNS11643.1986-1:GL
+ }
+}
+XCOMM fs2 class
+fs2 {
+ charset {
+ name CNS11643.1986-2:GL
+ }
+ font {
+ primary CNS11643.1986-2:GL
+ }
+}
+XCOMM fs3 class
+fs3 {
+ charset {
+ name CNS11643.1986-14:GL
+ }
+ font {
+ primary CNS11643.1986-14:GL
+ }
+}
+XCOMM fs4 class
+fs4 {
+ charset {
+ name CNS11643.1986-15:GL
+ }
+ font {
+ primary CNS11643.1986-15:GL
+ }
+}
+XCOMM fs5 class
+fs5 {
+ charset {
+ name CNS11643.1986-16:GL
+ }
+ font {
+ primary CNS11643.1986-16:GL
+ }
+}
+END XLC_FONTSET
+
+XCOMM
+XCOMM XLC_XLOCALE category
+XCOMM
+XLC_XLOCALE
+
+encoding_name zh_TW.euc
+mb_cur_max 4
+state_depend_encoding False
+wc_encoding_mask \x3fffc000
+wc_shift_bits 7
+
+#ifndef X_LOCALE
+use_stdc_env True
+force_convert_to_mb True
+#endif
+
+XCOMM cs0 class
+cs0 {
+ side GL:Default
+ length 1
+ wc_encoding \x00000000
+ ct_encoding ISO8859-1:GL; CNS11643.1986-0:GL
+}
+
+XCOMM cs1 class
+cs1 {
+ side GR:Default
+ length 2
+ wc_encoding \x30000000
+ ct_encoding CNS11643.1986-1:GR
+}
+
+XCOMM cs2 class # plane 2
+cs2 {
+ side GR
+ length 2
+ mb_encoding <SS> \x8e\xa2
+ wc_encoding \x10088000
+ ct_encoding CNS11643.1986-2:GR
+}
+
+XCOMM cs3 class # plane 14
+cs3 {
+ side GR
+ length 2
+ mb_encoding <SS> \x8e\xae
+ wc_encoding \x100b8000
+ ct_encoding CNS11643.1986-14:GR
+}
+
+XCOMM cs4 class # plane 15
+cs4 {
+ side GR
+ length 2
+ mb_encoding <SS> \x8e\xaf
+ wc_encoding \x100bc000
+ ct_encoding CNS11643.1986-15:GR
+}
+
+XCOMM cs5 class # plane 16
+cs5 {
+ side GR
+ length 2
+ mb_encoding <SS> \x8e\xb0
+ wc_encoding \x100c0000
+ ct_encoding CNS11643.1986-16:GR
+}
+
+END XLC_XLOCALE
diff --git a/libX11/specs/XIM/dynamicflow.svg b/libX11/specs/XIM/dynamicflow.svg
index 54fea7d6b..3da606f1f 100644
--- a/libX11/specs/XIM/dynamicflow.svg
+++ b/libX11/specs/XIM/dynamicflow.svg
@@ -1,294 +1,294 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="575.96063"
- height="277.7157"
- id="svg2"
- version="1.1"
- inkscape:version="0.47 r22583"
- sodipodi:docname="dynamicflow.svg">
- <defs
- id="defs4">
- <marker
- inkscape:stockid="Arrow1Lend"
- orient="auto"
- refY="0"
- refX="0"
- id="Arrow1Lend"
- style="overflow:visible">
- <path
- id="path3695"
- d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
- style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
- transform="matrix(-0.8,0,0,-0.8,-10,0)" />
- </marker>
- <inkscape:perspective
- sodipodi:type="inkscape:persp3d"
- inkscape:vp_x="0 : 526.18109 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="744.09448 : 526.18109 : 1"
- inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
- id="perspective10" />
- </defs>
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="0.7"
- inkscape:cx="217.60452"
- inkscape:cy="141.45567"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="false"
- units="pt"
- inkscape:window-width="675"
- inkscape:window-height="567"
- inkscape:window-x="31"
- inkscape:window-y="48"
- inkscape:window-maximized="0" />
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(-21.177732,-766.10217)">
- <text
- xml:space="preserve"
- style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
- x="120"
- y="775.21936"
- id="text2816"><tspan
- sodipodi:role="line"
- id="tspan2818"
- x="120"
- y="775.21936">IM Library</tspan></text>
- <text
- xml:space="preserve"
- style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
- x="362.28571"
- y="775.79077"
- id="text2820"><tspan
- sodipodi:role="line"
- id="tspan2822"
- x="362.28571"
- y="775.79077">IM Server</tspan></text>
- <text
- xml:space="preserve"
- style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
- x="19.999998"
- y="825.79077"
- id="text2824"><tspan
- sodipodi:role="line"
- id="tspan2826"
- x="19.999998"
- y="825.79077">Keys in the on-key-list</tspan></text>
- <text
- xml:space="preserve"
- style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
- x="22.571426"
- y="871.21936"
- id="text2828"><tspan
- sodipodi:role="line"
- id="tspan2830"
- x="22.571426"
- y="871.21936">event mask is changed</tspan><tspan
- sodipodi:role="line"
- x="22.571426"
- y="886.21936"
- id="tspan2832">to deselect the event</tspan></text>
- <text
- xml:space="preserve"
- style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
- x="31.14286"
- y="1025.2195"
- id="text2834"><tspan
- sodipodi:role="line"
- id="tspan2836"
- x="31.14286"
- y="1025.2195">event mask is changed</tspan><tspan
- sodipodi:role="line"
- x="31.14286"
- y="1040.2195"
- id="tspan2838">to select the event</tspan></text>
- <text
- xml:space="preserve"
- style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
- x="192.85715"
- y="863.79077"
- id="text2844"><tspan
- sodipodi:role="line"
- id="tspan2846"
- x="192.85715"
- y="863.79077">XIM_EXT_SET_EVENT_MASK</tspan></text>
- <text
- xml:space="preserve"
- style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
- x="206.84494"
- y="876.07648"
- id="text2848"><tspan
- sodipodi:role="line"
- id="tspan2850"
- x="206.84494"
- y="876.07648"
- style="font-size:10px">intercept-event-mask is set</tspan></text>
- <text
- xml:space="preserve"
- style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
- x="192.85715"
- y="1026.3622"
- id="text2852"><tspan
- sodipodi:role="line"
- id="tspan2854"
- x="192.85715"
- y="1026.3622">XIM_EXT_SET_EVENT_MASK</tspan></text>
- <text
- xml:space="preserve"
- style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
- x="214.70139"
- y="1039.5051"
- id="text2856"><tspan
- sodipodi:role="line"
- id="tspan2858"
- x="214.70139"
- y="1039.5051"
- style="font-size:10px">select-event-mask is set</tspan></text>
- <text
- xml:space="preserve"
- style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
- x="419.71429"
- y="875.21936"
- id="text2860"><tspan
- sodipodi:role="line"
- id="tspan2862"
- x="419.71429"
- y="875.21936">event mask is changed</tspan><tspan
- sodipodi:role="line"
- x="419.71429"
- y="890.21936"
- id="tspan2864">to select the event</tspan></text>
- <text
- xml:space="preserve"
- style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
- x="418.85712"
- y="957.21936"
- id="text2866"><tspan
- sodipodi:role="line"
- id="tspan2868"
- x="418.85712"
- y="957.21936">X events directly come</tspan><tspan
- sodipodi:role="line"
- x="418.85712"
- y="972.21936"
- id="tspan2870">to the IM Server</tspan></text>
- <text
- xml:space="preserve"
- style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
- x="422.85712"
- y="996.07648"
- id="text2872"><tspan
- sodipodi:role="line"
- id="tspan2874"
- x="422.85712"
- y="996.07648">when preediting is turned off</tspan></text>
- <text
- xml:space="preserve"
- style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
- x="423.42859"
- y="1028.6479"
- id="text2876"><tspan
- sodipodi:role="line"
- id="tspan2878"
- x="423.42859"
- y="1028.6479">event mask is changed</tspan><tspan
- sodipodi:role="line"
- x="423.42859"
- y="1043.6479"
- id="tspan2880">to deselect the event</tspan></text>
- <path
- style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
- d="m 181.42857,780.93364 c 0,239.99996 0,248.57146 0,248.57146"
- id="path2882" />
- <path
- style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
- d="m 367.14286,783.21935 c 0,244.28575 0,242.85715 0,242.85715"
- id="path2884" />
- <path
- style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-start:none;marker-end:url(#Arrow1Lend)"
- d="m 92.857143,77.142857 79.999997,0"
- id="path2886"
- transform="translate(0,752.36221)"
- inkscape:connector-type="polyline" />
- <path
- style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow1Lend)"
- d="m 192.85714,82.857143 162.85715,1.428571"
- id="path2888"
- transform="translate(0,752.36221)"
- inkscape:connector-type="polyline" />
- <path
- style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow1Lend)"
- d="m 352.85714,94.285714 -160,1.428572"
- id="path2890"
- transform="translate(0,752.36221)"
- inkscape:connector-type="polyline" />
- <text
- xml:space="preserve"
- style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
- x="202.60631"
- y="827.71936"
- id="text2854"><tspan
- sodipodi:role="line"
- id="tspan2856"
- x="202.60631"
- y="827.71936">XIM_TRIGGER_NOTIFY</tspan></text>
- <text
- xml:space="preserve"
- style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
- x="186.89201"
- y="902.86224"
- id="text2858"><tspan
- sodipodi:role="line"
- id="tspan2860"
- x="186.89201"
- y="902.86224">XIM_TRIGGER_NOTIFY_REPLY</tspan></text>
- <path
- style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow1Lend)"
- d="m 322.85714,145.3315 -151.42857,0"
- id="path2918"
- transform="translate(21.177732,766.10217)"
- inkscape:connector-type="polyline" />
- <path
- style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow1Lend)"
- d="m 327.14286,235.3315 -150,-1.42858"
- id="path3892"
- transform="translate(21.177732,766.10217)"
- inkscape:connector-type="polyline" />
- <path
- style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow1Lend)"
- d="M 447.14286,166.76007 378.57143,165.3315"
- id="path3894"
- transform="translate(21.177732,766.10217)"
- inkscape:connector-type="polyline" />
- </g>
-</svg>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ width="575.96063"
+ height="277.7157"
+ id="svg2"
+ version="1.1"
+ inkscape:version="0.47 r22583"
+ sodipodi:docname="dynamicflow.svg">
+ <defs
+ id="defs4">
+ <marker
+ inkscape:stockid="Arrow1Lend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="Arrow1Lend"
+ style="overflow:visible">
+ <path
+ id="path3695"
+ d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
+ style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
+ transform="matrix(-0.8,0,0,-0.8,-10,0)" />
+ </marker>
+ <inkscape:perspective
+ sodipodi:type="inkscape:persp3d"
+ inkscape:vp_x="0 : 526.18109 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_z="744.09448 : 526.18109 : 1"
+ inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+ id="perspective10" />
+ </defs>
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageopacity="0.0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="0.7"
+ inkscape:cx="217.60452"
+ inkscape:cy="141.45567"
+ inkscape:document-units="px"
+ inkscape:current-layer="layer1"
+ showgrid="false"
+ units="pt"
+ inkscape:window-width="675"
+ inkscape:window-height="567"
+ inkscape:window-x="31"
+ inkscape:window-y="48"
+ inkscape:window-maximized="0" />
+ <metadata
+ id="metadata7">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title />
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <g
+ inkscape:label="Layer 1"
+ inkscape:groupmode="layer"
+ id="layer1"
+ transform="translate(-21.177732,-766.10217)">
+ <text
+ xml:space="preserve"
+ style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
+ x="120"
+ y="775.21936"
+ id="text2816"><tspan
+ sodipodi:role="line"
+ id="tspan2818"
+ x="120"
+ y="775.21936">IM Library</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
+ x="362.28571"
+ y="775.79077"
+ id="text2820"><tspan
+ sodipodi:role="line"
+ id="tspan2822"
+ x="362.28571"
+ y="775.79077">IM Server</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
+ x="19.999998"
+ y="825.79077"
+ id="text2824"><tspan
+ sodipodi:role="line"
+ id="tspan2826"
+ x="19.999998"
+ y="825.79077">Keys in the on-key-list</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
+ x="22.571426"
+ y="871.21936"
+ id="text2828"><tspan
+ sodipodi:role="line"
+ id="tspan2830"
+ x="22.571426"
+ y="871.21936">event mask is changed</tspan><tspan
+ sodipodi:role="line"
+ x="22.571426"
+ y="886.21936"
+ id="tspan2832">to deselect the event</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
+ x="31.14286"
+ y="1025.2195"
+ id="text2834"><tspan
+ sodipodi:role="line"
+ id="tspan2836"
+ x="31.14286"
+ y="1025.2195">event mask is changed</tspan><tspan
+ sodipodi:role="line"
+ x="31.14286"
+ y="1040.2195"
+ id="tspan2838">to select the event</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
+ x="192.85715"
+ y="863.79077"
+ id="text2844"><tspan
+ sodipodi:role="line"
+ id="tspan2846"
+ x="192.85715"
+ y="863.79077">XIM_EXT_SET_EVENT_MASK</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
+ x="206.84494"
+ y="876.07648"
+ id="text2848"><tspan
+ sodipodi:role="line"
+ id="tspan2850"
+ x="206.84494"
+ y="876.07648"
+ style="font-size:10px">intercept-event-mask is set</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
+ x="192.85715"
+ y="1026.3622"
+ id="text2852"><tspan
+ sodipodi:role="line"
+ id="tspan2854"
+ x="192.85715"
+ y="1026.3622">XIM_EXT_SET_EVENT_MASK</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
+ x="214.70139"
+ y="1039.5051"
+ id="text2856"><tspan
+ sodipodi:role="line"
+ id="tspan2858"
+ x="214.70139"
+ y="1039.5051"
+ style="font-size:10px">select-event-mask is set</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
+ x="419.71429"
+ y="875.21936"
+ id="text2860"><tspan
+ sodipodi:role="line"
+ id="tspan2862"
+ x="419.71429"
+ y="875.21936">event mask is changed</tspan><tspan
+ sodipodi:role="line"
+ x="419.71429"
+ y="890.21936"
+ id="tspan2864">to select the event</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
+ x="418.85712"
+ y="957.21936"
+ id="text2866"><tspan
+ sodipodi:role="line"
+ id="tspan2868"
+ x="418.85712"
+ y="957.21936">X events directly come</tspan><tspan
+ sodipodi:role="line"
+ x="418.85712"
+ y="972.21936"
+ id="tspan2870">to the IM Server</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
+ x="422.85712"
+ y="996.07648"
+ id="text2872"><tspan
+ sodipodi:role="line"
+ id="tspan2874"
+ x="422.85712"
+ y="996.07648">when preediting is turned off</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
+ x="423.42859"
+ y="1028.6479"
+ id="text2876"><tspan
+ sodipodi:role="line"
+ id="tspan2878"
+ x="423.42859"
+ y="1028.6479">event mask is changed</tspan><tspan
+ sodipodi:role="line"
+ x="423.42859"
+ y="1043.6479"
+ id="tspan2880">to deselect the event</tspan></text>
+ <path
+ style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="m 181.42857,780.93364 c 0,239.99996 0,248.57146 0,248.57146"
+ id="path2882" />
+ <path
+ style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="m 367.14286,783.21935 c 0,244.28575 0,242.85715 0,242.85715"
+ id="path2884" />
+ <path
+ style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-start:none;marker-end:url(#Arrow1Lend)"
+ d="m 92.857143,77.142857 79.999997,0"
+ id="path2886"
+ transform="translate(0,752.36221)"
+ inkscape:connector-type="polyline" />
+ <path
+ style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow1Lend)"
+ d="m 192.85714,82.857143 162.85715,1.428571"
+ id="path2888"
+ transform="translate(0,752.36221)"
+ inkscape:connector-type="polyline" />
+ <path
+ style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow1Lend)"
+ d="m 352.85714,94.285714 -160,1.428572"
+ id="path2890"
+ transform="translate(0,752.36221)"
+ inkscape:connector-type="polyline" />
+ <text
+ xml:space="preserve"
+ style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
+ x="202.60631"
+ y="827.71936"
+ id="text2854"><tspan
+ sodipodi:role="line"
+ id="tspan2856"
+ x="202.60631"
+ y="827.71936">XIM_TRIGGER_NOTIFY</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
+ x="186.89201"
+ y="902.86224"
+ id="text2858"><tspan
+ sodipodi:role="line"
+ id="tspan2860"
+ x="186.89201"
+ y="902.86224">XIM_TRIGGER_NOTIFY_REPLY</tspan></text>
+ <path
+ style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow1Lend)"
+ d="m 322.85714,145.3315 -151.42857,0"
+ id="path2918"
+ transform="translate(21.177732,766.10217)"
+ inkscape:connector-type="polyline" />
+ <path
+ style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow1Lend)"
+ d="m 327.14286,235.3315 -150,-1.42858"
+ id="path3892"
+ transform="translate(21.177732,766.10217)"
+ inkscape:connector-type="polyline" />
+ <path
+ style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow1Lend)"
+ d="M 447.14286,166.76007 378.57143,165.3315"
+ id="path3894"
+ transform="translate(21.177732,766.10217)"
+ inkscape:connector-type="polyline" />
+ </g>
+</svg>
diff --git a/libX11/specs/XIM/dynamicflowsampleseq.svg b/libX11/specs/XIM/dynamicflowsampleseq.svg
index b3839bcce..305f16c80 100644
--- a/libX11/specs/XIM/dynamicflowsampleseq.svg
+++ b/libX11/specs/XIM/dynamicflowsampleseq.svg
@@ -1,436 +1,436 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="502.63379"
- height="290.44269"
- id="svg4341"
- version="1.1"
- inkscape:version="0.47 r22583"
- sodipodi:docname="dynamicflowsampleseq.svg">
- <defs
- id="defs4343">
- <inkscape:perspective
- sodipodi:type="inkscape:persp3d"
- inkscape:vp_x="0 : 526.18109 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="744.09448 : 526.18109 : 1"
- inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
- id="perspective4349" />
- <inkscape:perspective
- id="perspective4272"
- inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
- inkscape:vp_z="1 : 0.5 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_x="0 : 0.5 : 1"
- sodipodi:type="inkscape:persp3d" />
- <marker
- inkscape:stockid="Arrow1Lend"
- orient="auto"
- refY="0"
- refX="0"
- id="Arrow1Lend"
- style="overflow:visible">
- <path
- id="path3695"
- d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
- style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
- transform="matrix(-0.8,0,0,-0.8,-10,0)" />
- </marker>
- <marker
- inkscape:stockid="Arrow1Lend"
- orient="auto"
- refY="0"
- refX="0"
- id="marker4278"
- style="overflow:visible">
- <path
- id="path4280"
- d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
- style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
- transform="matrix(-0.8,0,0,-0.8,-10,0)" />
- </marker>
- <marker
- inkscape:stockid="Arrow1Lend"
- orient="auto"
- refY="0"
- refX="0"
- id="marker4282"
- style="overflow:visible">
- <path
- id="path4284"
- d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
- style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
- transform="matrix(-0.8,0,0,-0.8,-10,0)" />
- </marker>
- <marker
- inkscape:stockid="Arrow1Lend"
- orient="auto"
- refY="0"
- refX="0"
- id="marker4286"
- style="overflow:visible">
- <path
- id="path4288"
- d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
- style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
- transform="matrix(-0.8,0,0,-0.8,-10,0)" />
- </marker>
- <marker
- inkscape:stockid="Arrow1Lend"
- orient="auto"
- refY="0"
- refX="0"
- id="marker4290"
- style="overflow:visible">
- <path
- id="path4292"
- d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
- style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
- transform="matrix(-0.8,0,0,-0.8,-10,0)" />
- </marker>
- <marker
- inkscape:stockid="Arrow1Lend"
- orient="auto"
- refY="0"
- refX="0"
- id="marker4294"
- style="overflow:visible">
- <path
- id="path4296"
- d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
- style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
- transform="matrix(-0.8,0,0,-0.8,-10,0)" />
- </marker>
- <inkscape:perspective
- id="perspective2877"
- inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
- inkscape:vp_z="1 : 0.5 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_x="0 : 0.5 : 1"
- sodipodi:type="inkscape:persp3d" />
- <marker
- inkscape:stockid="Arrow1Lend"
- orient="auto"
- refY="0"
- refX="0"
- id="Arrow1Lend-3"
- style="overflow:visible">
- <path
- id="path3695-7"
- d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
- style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
- transform="matrix(-0.8,0,0,-0.8,-10,0)" />
- </marker>
- <inkscape:perspective
- id="perspective2905"
- inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
- inkscape:vp_z="1 : 0.5 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_x="0 : 0.5 : 1"
- sodipodi:type="inkscape:persp3d" />
- <marker
- inkscape:stockid="Arrow1Lend"
- orient="auto"
- refY="0"
- refX="0"
- id="Arrow1Lend-31"
- style="overflow:visible">
- <path
- id="path3695-4"
- d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
- style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
- transform="matrix(-0.8,0,0,-0.8,-10,0)" />
- </marker>
- <inkscape:perspective
- id="perspective2937"
- inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
- inkscape:vp_z="1 : 0.5 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_x="0 : 0.5 : 1"
- sodipodi:type="inkscape:persp3d" />
- <marker
- inkscape:stockid="Arrow1Lend"
- orient="auto"
- refY="0"
- refX="0"
- id="Arrow1Lend-8"
- style="overflow:visible">
- <path
- id="path3695-9"
- d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
- style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
- transform="matrix(-0.8,0,0,-0.8,-10,0)" />
- </marker>
- </defs>
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="0.35"
- inkscape:cx="362.98032"
- inkscape:cy="-207.27231"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="false"
- inkscape:window-width="677"
- inkscape:window-height="660"
- inkscape:window-x="0"
- inkscape:window-y="25"
- inkscape:window-maximized="0"
- inkscape:snap-nodes="false" />
- <metadata
- id="metadata4346">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(-12.019684,-34.647186)">
- <text
- xml:space="preserve"
- style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
- x="110.84195"
- y="43.764374"
- id="text2816"><tspan
- sodipodi:role="line"
- id="tspan2818"
- x="110.84195"
- y="43.764374">IM Library</tspan></text>
- <text
- xml:space="preserve"
- style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
- x="353.12766"
- y="44.335777"
- id="text2820"><tspan
- sodipodi:role="line"
- id="tspan2822"
- x="353.12766"
- y="44.335777">IM Server</tspan></text>
- <text
- xml:space="preserve"
- style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
- x="10.841949"
- y="94.335777"
- id="text2824"><tspan
- sodipodi:role="line"
- id="tspan2826"
- x="10.841949"
- y="94.335777">Keys in the on-key-list</tspan></text>
- <text
- xml:space="preserve"
- style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
- x="183.6991"
- y="132.33578"
- id="text2844"><tspan
- sodipodi:role="line"
- id="tspan2846"
- x="183.6991"
- y="132.33578">XIM_EXT_SET_EVENT_MASK</tspan></text>
- <text
- xml:space="preserve"
- style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
- x="197.68689"
- y="144.62149"
- id="text2848"><tspan
- sodipodi:role="line"
- id="tspan2850"
- x="197.68689"
- y="144.62149"
- style="font-size:10px">intercept-event-mask is set</tspan></text>
- <text
- xml:space="preserve"
- style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
- x="183.6991"
- y="260.90723"
- id="text2852"><tspan
- sodipodi:role="line"
- id="tspan2854"
- x="183.6991"
- y="260.90723">XIM_EXT_SET_EVENT_MASK</tspan></text>
- <text
- xml:space="preserve"
- style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
- x="205.54333"
- y="274.05017"
- id="text2856"><tspan
- sodipodi:role="line"
- id="tspan2858"
- x="205.54333"
- y="274.05017"
- style="font-size:10px">select-event-mask is set</tspan></text>
- <path
- style="fill:none;stroke:#000000;stroke-width:1.05025411px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
- d="m 172.27052,49.53018 c 0,264.72805 0,274.18271 0,274.18271"
- id="path2882" />
- <path
- style="fill:none;stroke:#000000;stroke-width:1.05972767px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
- d="m 357.98481,51.82588 c 0,274.33848 0,272.73413 0,272.73413"
- id="path2884" />
- <path
- style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-start:none;marker-end:url(#Arrow1Lend)"
- d="m 83.6991,98.05008 79.99999,0"
- id="path2886"
- inkscape:connector-type="polyline" />
- <path
- style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow1Lend)"
- d="m 183.69909,103.76437 162.85715,1.42857"
- id="path2888"
- inkscape:connector-type="polyline" />
- <path
- style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow1Lend)"
- d="m 343.69909,115.19294 -160,1.42857"
- id="path2890"
- inkscape:connector-type="polyline" />
- <text
- xml:space="preserve"
- style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
- x="193.44826"
- y="96.264374"
- id="text2854"><tspan
- sodipodi:role="line"
- id="tspan2856"
- x="193.44826"
- y="96.264374">XIM_TRIGGER_NOTIFY</tspan></text>
- <path
- style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow1Lend)"
- d="m 339.16254,235.97868 -150,-1.42858"
- id="path3892"
- inkscape:connector-type="polyline" />
- <path
- style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow1Lend)"
- d="m 443.16254,227.40725 -68.57143,-1.42857"
- id="path3894"
- inkscape:connector-type="polyline" />
- <text
- xml:space="preserve"
- style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
- x="28.571426"
- y="148.21933"
- id="text4489"><tspan
- sodipodi:role="line"
- id="tspan4491"
- x="28.571426"
- y="148.21933">the specified events</tspan><tspan
- sodipodi:role="line"
- x="28.571426"
- y="163.21933"
- id="tspan4493">are being filtered</tspan></text>
- <text
- xml:space="preserve"
- style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
- x="24.571426"
- y="221.36218"
- id="text4495"><tspan
- sodipodi:role="line"
- id="tspan4497"
- x="24.571426"
- y="221.36218">Keys in the off-key-list</tspan></text>
- <text
- xml:space="preserve"
- style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
- x="19.428574"
- y="300.79077"
- id="text4499"><tspan
- sodipodi:role="line"
- id="tspan4501"
- x="19.428574"
- y="300.79077">the specified events</tspan><tspan
- sodipodi:role="line"
- x="19.428574"
- y="315.79077"
- id="tspan4503">are being processed</tspan></text>
- <text
- xml:space="preserve"
- style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
- x="382.57144"
- y="98.647888"
- id="text4505"><tspan
- sodipodi:role="line"
- id="tspan4507"
- x="382.57144"
- y="98.647888">Keys in the on-key-list</tspan></text>
- <text
- xml:space="preserve"
- style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
- x="383.42691"
- y="148.21933"
- id="text4513"><tspan
- sodipodi:role="line"
- id="tspan4515"
- x="383.42691"
- y="148.21933">the specified events</tspan><tspan
- sodipodi:role="line"
- x="383.42691"
- y="163.21933"
- id="tspan4517">are being processed</tspan></text>
- <text
- xml:space="preserve"
- style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
- x="382.57144"
- y="221.36218"
- id="text4519"><tspan
- sodipodi:role="line"
- id="tspan4521"
- x="382.57144"
- y="221.36218">Keys in the off-key-list</tspan></text>
- <text
- xml:space="preserve"
- style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
- x="383.42691"
- y="300.79077"
- id="text4523"><tspan
- sodipodi:role="line"
- id="tspan4525"
- x="383.42691"
- y="300.79077">the specified events</tspan><tspan
- sodipodi:role="line"
- x="383.42691"
- y="315.79077"
- id="tspan4527">are being discarded</tspan></text>
- <path
- style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow1Lend)"
- d="m 436.85714,105.78486 -68.57143,-1.42857"
- id="path3894-2"
- inkscape:connector-type="polyline" />
- <path
- style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-start:none;marker-end:url(#Arrow1Lend)"
- d="m 79.14286,230.6479 79.99999,0"
- id="path2886-9"
- inkscape:connector-type="polyline" />
- <text
- xml:space="preserve"
- style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
- x="177.14285"
- y="175.50504"
- id="text2925"><tspan
- sodipodi:role="line"
- id="tspan2927"
- x="177.14285"
- y="175.50504">XIM_TRIGGER_NOTIFY_REPLY</tspan></text>
- <path
- style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow1Lend)"
- d="m 339.28571,189.37172 -150,-1.42858"
- id="path3892-4"
- inkscape:connector-type="polyline" />
- </g>
-</svg>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ width="502.63379"
+ height="290.44269"
+ id="svg4341"
+ version="1.1"
+ inkscape:version="0.47 r22583"
+ sodipodi:docname="dynamicflowsampleseq.svg">
+ <defs
+ id="defs4343">
+ <inkscape:perspective
+ sodipodi:type="inkscape:persp3d"
+ inkscape:vp_x="0 : 526.18109 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_z="744.09448 : 526.18109 : 1"
+ inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+ id="perspective4349" />
+ <inkscape:perspective
+ id="perspective4272"
+ inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+ inkscape:vp_z="1 : 0.5 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 0.5 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ <marker
+ inkscape:stockid="Arrow1Lend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="Arrow1Lend"
+ style="overflow:visible">
+ <path
+ id="path3695"
+ d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
+ style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
+ transform="matrix(-0.8,0,0,-0.8,-10,0)" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow1Lend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="marker4278"
+ style="overflow:visible">
+ <path
+ id="path4280"
+ d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
+ style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
+ transform="matrix(-0.8,0,0,-0.8,-10,0)" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow1Lend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="marker4282"
+ style="overflow:visible">
+ <path
+ id="path4284"
+ d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
+ style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
+ transform="matrix(-0.8,0,0,-0.8,-10,0)" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow1Lend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="marker4286"
+ style="overflow:visible">
+ <path
+ id="path4288"
+ d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
+ style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
+ transform="matrix(-0.8,0,0,-0.8,-10,0)" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow1Lend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="marker4290"
+ style="overflow:visible">
+ <path
+ id="path4292"
+ d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
+ style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
+ transform="matrix(-0.8,0,0,-0.8,-10,0)" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow1Lend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="marker4294"
+ style="overflow:visible">
+ <path
+ id="path4296"
+ d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
+ style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
+ transform="matrix(-0.8,0,0,-0.8,-10,0)" />
+ </marker>
+ <inkscape:perspective
+ id="perspective2877"
+ inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+ inkscape:vp_z="1 : 0.5 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 0.5 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ <marker
+ inkscape:stockid="Arrow1Lend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="Arrow1Lend-3"
+ style="overflow:visible">
+ <path
+ id="path3695-7"
+ d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
+ style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
+ transform="matrix(-0.8,0,0,-0.8,-10,0)" />
+ </marker>
+ <inkscape:perspective
+ id="perspective2905"
+ inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+ inkscape:vp_z="1 : 0.5 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 0.5 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ <marker
+ inkscape:stockid="Arrow1Lend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="Arrow1Lend-31"
+ style="overflow:visible">
+ <path
+ id="path3695-4"
+ d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
+ style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
+ transform="matrix(-0.8,0,0,-0.8,-10,0)" />
+ </marker>
+ <inkscape:perspective
+ id="perspective2937"
+ inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+ inkscape:vp_z="1 : 0.5 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 0.5 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ <marker
+ inkscape:stockid="Arrow1Lend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="Arrow1Lend-8"
+ style="overflow:visible">
+ <path
+ id="path3695-9"
+ d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
+ style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
+ transform="matrix(-0.8,0,0,-0.8,-10,0)" />
+ </marker>
+ </defs>
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageopacity="0.0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="0.35"
+ inkscape:cx="362.98032"
+ inkscape:cy="-207.27231"
+ inkscape:document-units="px"
+ inkscape:current-layer="layer1"
+ showgrid="false"
+ inkscape:window-width="677"
+ inkscape:window-height="660"
+ inkscape:window-x="0"
+ inkscape:window-y="25"
+ inkscape:window-maximized="0"
+ inkscape:snap-nodes="false" />
+ <metadata
+ id="metadata4346">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title />
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <g
+ inkscape:label="Layer 1"
+ inkscape:groupmode="layer"
+ id="layer1"
+ transform="translate(-12.019684,-34.647186)">
+ <text
+ xml:space="preserve"
+ style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
+ x="110.84195"
+ y="43.764374"
+ id="text2816"><tspan
+ sodipodi:role="line"
+ id="tspan2818"
+ x="110.84195"
+ y="43.764374">IM Library</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
+ x="353.12766"
+ y="44.335777"
+ id="text2820"><tspan
+ sodipodi:role="line"
+ id="tspan2822"
+ x="353.12766"
+ y="44.335777">IM Server</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
+ x="10.841949"
+ y="94.335777"
+ id="text2824"><tspan
+ sodipodi:role="line"
+ id="tspan2826"
+ x="10.841949"
+ y="94.335777">Keys in the on-key-list</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
+ x="183.6991"
+ y="132.33578"
+ id="text2844"><tspan
+ sodipodi:role="line"
+ id="tspan2846"
+ x="183.6991"
+ y="132.33578">XIM_EXT_SET_EVENT_MASK</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
+ x="197.68689"
+ y="144.62149"
+ id="text2848"><tspan
+ sodipodi:role="line"
+ id="tspan2850"
+ x="197.68689"
+ y="144.62149"
+ style="font-size:10px">intercept-event-mask is set</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
+ x="183.6991"
+ y="260.90723"
+ id="text2852"><tspan
+ sodipodi:role="line"
+ id="tspan2854"
+ x="183.6991"
+ y="260.90723">XIM_EXT_SET_EVENT_MASK</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
+ x="205.54333"
+ y="274.05017"
+ id="text2856"><tspan
+ sodipodi:role="line"
+ id="tspan2858"
+ x="205.54333"
+ y="274.05017"
+ style="font-size:10px">select-event-mask is set</tspan></text>
+ <path
+ style="fill:none;stroke:#000000;stroke-width:1.05025411px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="m 172.27052,49.53018 c 0,264.72805 0,274.18271 0,274.18271"
+ id="path2882" />
+ <path
+ style="fill:none;stroke:#000000;stroke-width:1.05972767px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="m 357.98481,51.82588 c 0,274.33848 0,272.73413 0,272.73413"
+ id="path2884" />
+ <path
+ style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-start:none;marker-end:url(#Arrow1Lend)"
+ d="m 83.6991,98.05008 79.99999,0"
+ id="path2886"
+ inkscape:connector-type="polyline" />
+ <path
+ style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow1Lend)"
+ d="m 183.69909,103.76437 162.85715,1.42857"
+ id="path2888"
+ inkscape:connector-type="polyline" />
+ <path
+ style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow1Lend)"
+ d="m 343.69909,115.19294 -160,1.42857"
+ id="path2890"
+ inkscape:connector-type="polyline" />
+ <text
+ xml:space="preserve"
+ style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
+ x="193.44826"
+ y="96.264374"
+ id="text2854"><tspan
+ sodipodi:role="line"
+ id="tspan2856"
+ x="193.44826"
+ y="96.264374">XIM_TRIGGER_NOTIFY</tspan></text>
+ <path
+ style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow1Lend)"
+ d="m 339.16254,235.97868 -150,-1.42858"
+ id="path3892"
+ inkscape:connector-type="polyline" />
+ <path
+ style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow1Lend)"
+ d="m 443.16254,227.40725 -68.57143,-1.42857"
+ id="path3894"
+ inkscape:connector-type="polyline" />
+ <text
+ xml:space="preserve"
+ style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
+ x="28.571426"
+ y="148.21933"
+ id="text4489"><tspan
+ sodipodi:role="line"
+ id="tspan4491"
+ x="28.571426"
+ y="148.21933">the specified events</tspan><tspan
+ sodipodi:role="line"
+ x="28.571426"
+ y="163.21933"
+ id="tspan4493">are being filtered</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
+ x="24.571426"
+ y="221.36218"
+ id="text4495"><tspan
+ sodipodi:role="line"
+ id="tspan4497"
+ x="24.571426"
+ y="221.36218">Keys in the off-key-list</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
+ x="19.428574"
+ y="300.79077"
+ id="text4499"><tspan
+ sodipodi:role="line"
+ id="tspan4501"
+ x="19.428574"
+ y="300.79077">the specified events</tspan><tspan
+ sodipodi:role="line"
+ x="19.428574"
+ y="315.79077"
+ id="tspan4503">are being processed</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
+ x="382.57144"
+ y="98.647888"
+ id="text4505"><tspan
+ sodipodi:role="line"
+ id="tspan4507"
+ x="382.57144"
+ y="98.647888">Keys in the on-key-list</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
+ x="383.42691"
+ y="148.21933"
+ id="text4513"><tspan
+ sodipodi:role="line"
+ id="tspan4515"
+ x="383.42691"
+ y="148.21933">the specified events</tspan><tspan
+ sodipodi:role="line"
+ x="383.42691"
+ y="163.21933"
+ id="tspan4517">are being processed</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
+ x="382.57144"
+ y="221.36218"
+ id="text4519"><tspan
+ sodipodi:role="line"
+ id="tspan4521"
+ x="382.57144"
+ y="221.36218">Keys in the off-key-list</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
+ x="383.42691"
+ y="300.79077"
+ id="text4523"><tspan
+ sodipodi:role="line"
+ id="tspan4525"
+ x="383.42691"
+ y="300.79077">the specified events</tspan><tspan
+ sodipodi:role="line"
+ x="383.42691"
+ y="315.79077"
+ id="tspan4527">are being discarded</tspan></text>
+ <path
+ style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow1Lend)"
+ d="m 436.85714,105.78486 -68.57143,-1.42857"
+ id="path3894-2"
+ inkscape:connector-type="polyline" />
+ <path
+ style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-start:none;marker-end:url(#Arrow1Lend)"
+ d="m 79.14286,230.6479 79.99999,0"
+ id="path2886-9"
+ inkscape:connector-type="polyline" />
+ <text
+ xml:space="preserve"
+ style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
+ x="177.14285"
+ y="175.50504"
+ id="text2925"><tspan
+ sodipodi:role="line"
+ id="tspan2927"
+ x="177.14285"
+ y="175.50504">XIM_TRIGGER_NOTIFY_REPLY</tspan></text>
+ <path
+ style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow1Lend)"
+ d="m 339.28571,189.37172 -150,-1.42858"
+ id="path3892-4"
+ inkscape:connector-type="polyline" />
+ </g>
+</svg>
diff --git a/libX11/specs/XIM/eventflow.svg b/libX11/specs/XIM/eventflow.svg
index 13886477b..e2146b4ea 100644
--- a/libX11/specs/XIM/eventflow.svg
+++ b/libX11/specs/XIM/eventflow.svg
@@ -1,314 +1,314 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="224.5"
- height="216.0125"
- id="svg2"
- version="1.1"
- inkscape:version="0.47 r22583"
- sodipodi:docname="eventflow.svg">
- <defs
- id="defs4">
- <marker
- inkscape:stockid="Arrow1Lstart"
- orient="auto"
- refY="0"
- refX="0"
- id="Arrow1Lstart"
- style="overflow:visible">
- <path
- id="path3665"
- d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
- style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
- transform="matrix(0.8,0,0,0.8,10,0)" />
- </marker>
- <marker
- inkscape:stockid="Arrow1Lend"
- orient="auto"
- refY="0"
- refX="0"
- id="Arrow1Lend"
- style="overflow:visible">
- <path
- id="path3668"
- d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
- style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
- transform="matrix(-0.8,0,0,-0.8,-10,0)" />
- </marker>
- <marker
- inkscape:stockid="Arrow2Lend"
- orient="auto"
- refY="0"
- refX="0"
- id="Arrow2Lend"
- style="overflow:visible">
- <path
- id="path3686"
- style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
- d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
- transform="matrix(-1.1,0,0,-1.1,-1.1,0)" />
- </marker>
- <marker
- inkscape:stockid="Arrow2Mend"
- orient="auto"
- refY="0"
- refX="0"
- id="Arrow2Mend"
- style="overflow:visible">
- <path
- id="path3692"
- style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
- d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
- transform="scale(-0.6,-0.6)" />
- </marker>
- <inkscape:perspective
- sodipodi:type="inkscape:persp3d"
- inkscape:vp_x="0 : 526.18109 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="744.09448 : 526.18109 : 1"
- inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
- id="perspective10" />
- <inkscape:perspective
- id="perspective4496"
- inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
- inkscape:vp_z="1 : 0.5 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_x="0 : 0.5 : 1"
- sodipodi:type="inkscape:persp3d" />
- <marker
- inkscape:stockid="Arrow1Lend"
- orient="auto"
- refY="0"
- refX="0"
- id="Arrow1Lend-2"
- style="overflow:visible">
- <path
- id="path3668-0"
- d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
- style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
- transform="matrix(-0.8,0,0,-0.8,-10,0)" />
- </marker>
- <inkscape:perspective
- id="perspective4537"
- inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
- inkscape:vp_z="1 : 0.5 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_x="0 : 0.5 : 1"
- sodipodi:type="inkscape:persp3d" />
- <marker
- inkscape:stockid="Arrow1Lend"
- orient="auto"
- refY="0"
- refX="0"
- id="Arrow1Lend-1"
- style="overflow:visible">
- <path
- id="path3668-6"
- d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
- style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
- transform="matrix(-0.8,0,0,-0.8,-10,0)" />
- </marker>
- <inkscape:perspective
- id="perspective4955"
- inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
- inkscape:vp_z="1 : 0.5 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_x="0 : 0.5 : 1"
- sodipodi:type="inkscape:persp3d" />
- <marker
- inkscape:stockid="Arrow1Lend"
- orient="auto"
- refY="0"
- refX="0"
- id="Arrow1Lend-14"
- style="overflow:visible">
- <path
- id="path3668-7"
- d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
- style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
- transform="matrix(-0.8,0,0,-0.8,-10,0)" />
- </marker>
- </defs>
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="1.5570699"
- inkscape:cx="130.77268"
- inkscape:cy="93.49857"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="false"
- inkscape:window-width="746"
- inkscape:window-height="745"
- inkscape:window-x="452"
- inkscape:window-y="11"
- inkscape:window-maximized="0"
- units="pt" />
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(-4.4747047,45.51725)">
- <rect
- style="fill:none;stroke:#000000;stroke-width:0.31376761;stroke-opacity:1"
- id="rect2818"
- width="134.02251"
- height="66.196053"
- x="52.050224"
- y="-17.612656"
- ry="3.8066549" />
- <rect
- style="fill:none;stroke:#000000;stroke-width:0.32876641;stroke-opacity:1"
- id="rect2820"
- width="85.332054"
- height="22.29335"
- x="93.551544"
- y="21.494766"
- ry="3.8002031" />
- <rect
- style="fill:none;stroke:#000000;stroke-width:0.21471952;stroke-opacity:1"
- id="rect2861"
- width="76.668564"
- height="28.791061"
- x="91.898651"
- y="70.911148"
- ry="2.6885254" />
- <rect
- style="fill:none;stroke:#000000;stroke-width:0.20091781;stroke-opacity:1"
- id="rect2878"
- width="72.692574"
- height="24.815073"
- x="63.165215"
- y="119.57973"
- ry="1.8175722" />
- <path
- style="fill:none;stroke:#000000;stroke-width:0.16700821px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow1Lend)"
- d="m 191.35869,-129.09736 0,-20.41139"
- id="path2888-8"
- inkscape:connector-type="polyline" />
- <g
- id="g5177"
- transform="matrix(0.27928539,0,0,0.27928539,11.337125,-81.727333)">
- <path
- inkscape:connector-type="polyline"
- id="path2888"
- d="m 218.57142,720.35677 0,-251.23328"
- style="fill:none;stroke:#000000;stroke-width:1.07757151px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow1Lend)" />
- <path
- inkscape:connector-type="polyline"
- id="path2888-3"
- d="m 335.37064,546.2675 0,-200.11997"
- style="fill:none;stroke:#000000;stroke-width:0.96785825px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-start:url(#Arrow1Lstart);marker-end:none" />
- <path
- inkscape:connector-type="polyline"
- id="path2888-82"
- d="m 219.2031,466.56824 0,-120.80758"
- style="fill:none;stroke:#000000;stroke-width:0.76102072px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:none" />
- <path
- inkscape:connector-type="polyline"
- id="path5175"
- d="m 219.26527,346.32772 116.0432,0.38074"
- style="fill:none;stroke:#000000;stroke-width:1.12434793px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;display:inline" />
- </g>
- <text
- xml:space="preserve"
- style="font-size:3.62546563px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
- x="67.625397"
- y="136.94441"
- id="text2865"><tspan
- sodipodi:role="line"
- id="tspan2867"
- x="67.625397"
- y="136.94441"
- style="font-size:14.50186253px">X Server</tspan></text>
- <text
- xml:space="preserve"
- style="font-size:3.35142469px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
- x="17.946682"
- y="107.43233"
- id="text2869"><tspan
- sodipodi:role="line"
- id="tspan2871"
- x="17.946682"
- y="107.43233"
- style="font-size:6.14427853px">Backend Method</tspan><tspan
- sodipodi:role="line"
- x="17.946682"
- y="115.11268"
- style="font-size:6.14427853px"
- id="tspan2873">(Core)</tspan></text>
- <text
- xml:space="preserve"
- style="font-size:3.35142469px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
- x="130.79489"
- y="107.07356"
- id="text2875"><tspan
- sodipodi:role="line"
- id="tspan2877"
- x="130.79489"
- y="107.07356"
- style="font-size:6.14427853px">Frontend Method</tspan><tspan
- sodipodi:role="line"
- x="130.79489"
- y="114.75391"
- id="tspan2879"
- style="font-size:6.14427853px">(Extension)</tspan></text>
- <text
- xml:space="preserve"
- style="font-size:3.71718764px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
- x="94.060638"
- y="91.657791"
- id="text2881"><tspan
- sodipodi:role="line"
- id="tspan2883"
- x="94.060638"
- y="91.657791"
- style="font-size:14.86875057px">IM Server</tspan></text>
- <text
- xml:space="preserve"
- style="font-size:3.35142469px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
- x="118.23929"
- y="37.838333"
- id="text2890"><tspan
- sodipodi:role="line"
- id="tspan2892"
- x="118.23929"
- y="37.838333"
- style="font-size:13.40569878px">Library</tspan></text>
- <text
- xml:space="preserve"
- style="font-size:3.35142469px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
- x="58.689751"
- y="1.2476349"
- id="text2899"><tspan
- sodipodi:role="line"
- id="tspan2901"
- x="58.689751"
- y="1.2476349"
- style="font-size:13.40569878px">Application</tspan></text>
- </g>
-</svg>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ width="224.5"
+ height="216.0125"
+ id="svg2"
+ version="1.1"
+ inkscape:version="0.47 r22583"
+ sodipodi:docname="eventflow.svg">
+ <defs
+ id="defs4">
+ <marker
+ inkscape:stockid="Arrow1Lstart"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="Arrow1Lstart"
+ style="overflow:visible">
+ <path
+ id="path3665"
+ d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
+ style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
+ transform="matrix(0.8,0,0,0.8,10,0)" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow1Lend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="Arrow1Lend"
+ style="overflow:visible">
+ <path
+ id="path3668"
+ d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
+ style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
+ transform="matrix(-0.8,0,0,-0.8,-10,0)" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow2Lend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="Arrow2Lend"
+ style="overflow:visible">
+ <path
+ id="path3686"
+ style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
+ d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+ transform="matrix(-1.1,0,0,-1.1,-1.1,0)" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow2Mend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="Arrow2Mend"
+ style="overflow:visible">
+ <path
+ id="path3692"
+ style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
+ d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+ transform="scale(-0.6,-0.6)" />
+ </marker>
+ <inkscape:perspective
+ sodipodi:type="inkscape:persp3d"
+ inkscape:vp_x="0 : 526.18109 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_z="744.09448 : 526.18109 : 1"
+ inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+ id="perspective10" />
+ <inkscape:perspective
+ id="perspective4496"
+ inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+ inkscape:vp_z="1 : 0.5 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 0.5 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ <marker
+ inkscape:stockid="Arrow1Lend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="Arrow1Lend-2"
+ style="overflow:visible">
+ <path
+ id="path3668-0"
+ d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
+ style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
+ transform="matrix(-0.8,0,0,-0.8,-10,0)" />
+ </marker>
+ <inkscape:perspective
+ id="perspective4537"
+ inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+ inkscape:vp_z="1 : 0.5 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 0.5 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ <marker
+ inkscape:stockid="Arrow1Lend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="Arrow1Lend-1"
+ style="overflow:visible">
+ <path
+ id="path3668-6"
+ d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
+ style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
+ transform="matrix(-0.8,0,0,-0.8,-10,0)" />
+ </marker>
+ <inkscape:perspective
+ id="perspective4955"
+ inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+ inkscape:vp_z="1 : 0.5 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 0.5 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ <marker
+ inkscape:stockid="Arrow1Lend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="Arrow1Lend-14"
+ style="overflow:visible">
+ <path
+ id="path3668-7"
+ d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
+ style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
+ transform="matrix(-0.8,0,0,-0.8,-10,0)" />
+ </marker>
+ </defs>
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageopacity="0.0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="1.5570699"
+ inkscape:cx="130.77268"
+ inkscape:cy="93.49857"
+ inkscape:document-units="px"
+ inkscape:current-layer="layer1"
+ showgrid="false"
+ inkscape:window-width="746"
+ inkscape:window-height="745"
+ inkscape:window-x="452"
+ inkscape:window-y="11"
+ inkscape:window-maximized="0"
+ units="pt" />
+ <metadata
+ id="metadata7">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title />
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <g
+ inkscape:label="Layer 1"
+ inkscape:groupmode="layer"
+ id="layer1"
+ transform="translate(-4.4747047,45.51725)">
+ <rect
+ style="fill:none;stroke:#000000;stroke-width:0.31376761;stroke-opacity:1"
+ id="rect2818"
+ width="134.02251"
+ height="66.196053"
+ x="52.050224"
+ y="-17.612656"
+ ry="3.8066549" />
+ <rect
+ style="fill:none;stroke:#000000;stroke-width:0.32876641;stroke-opacity:1"
+ id="rect2820"
+ width="85.332054"
+ height="22.29335"
+ x="93.551544"
+ y="21.494766"
+ ry="3.8002031" />
+ <rect
+ style="fill:none;stroke:#000000;stroke-width:0.21471952;stroke-opacity:1"
+ id="rect2861"
+ width="76.668564"
+ height="28.791061"
+ x="91.898651"
+ y="70.911148"
+ ry="2.6885254" />
+ <rect
+ style="fill:none;stroke:#000000;stroke-width:0.20091781;stroke-opacity:1"
+ id="rect2878"
+ width="72.692574"
+ height="24.815073"
+ x="63.165215"
+ y="119.57973"
+ ry="1.8175722" />
+ <path
+ style="fill:none;stroke:#000000;stroke-width:0.16700821px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow1Lend)"
+ d="m 191.35869,-129.09736 0,-20.41139"
+ id="path2888-8"
+ inkscape:connector-type="polyline" />
+ <g
+ id="g5177"
+ transform="matrix(0.27928539,0,0,0.27928539,11.337125,-81.727333)">
+ <path
+ inkscape:connector-type="polyline"
+ id="path2888"
+ d="m 218.57142,720.35677 0,-251.23328"
+ style="fill:none;stroke:#000000;stroke-width:1.07757151px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow1Lend)" />
+ <path
+ inkscape:connector-type="polyline"
+ id="path2888-3"
+ d="m 335.37064,546.2675 0,-200.11997"
+ style="fill:none;stroke:#000000;stroke-width:0.96785825px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-start:url(#Arrow1Lstart);marker-end:none" />
+ <path
+ inkscape:connector-type="polyline"
+ id="path2888-82"
+ d="m 219.2031,466.56824 0,-120.80758"
+ style="fill:none;stroke:#000000;stroke-width:0.76102072px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:none" />
+ <path
+ inkscape:connector-type="polyline"
+ id="path5175"
+ d="m 219.26527,346.32772 116.0432,0.38074"
+ style="fill:none;stroke:#000000;stroke-width:1.12434793px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;display:inline" />
+ </g>
+ <text
+ xml:space="preserve"
+ style="font-size:3.62546563px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
+ x="67.625397"
+ y="136.94441"
+ id="text2865"><tspan
+ sodipodi:role="line"
+ id="tspan2867"
+ x="67.625397"
+ y="136.94441"
+ style="font-size:14.50186253px">X Server</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:3.35142469px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
+ x="17.946682"
+ y="107.43233"
+ id="text2869"><tspan
+ sodipodi:role="line"
+ id="tspan2871"
+ x="17.946682"
+ y="107.43233"
+ style="font-size:6.14427853px">Backend Method</tspan><tspan
+ sodipodi:role="line"
+ x="17.946682"
+ y="115.11268"
+ style="font-size:6.14427853px"
+ id="tspan2873">(Core)</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:3.35142469px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
+ x="130.79489"
+ y="107.07356"
+ id="text2875"><tspan
+ sodipodi:role="line"
+ id="tspan2877"
+ x="130.79489"
+ y="107.07356"
+ style="font-size:6.14427853px">Frontend Method</tspan><tspan
+ sodipodi:role="line"
+ x="130.79489"
+ y="114.75391"
+ id="tspan2879"
+ style="font-size:6.14427853px">(Extension)</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:3.71718764px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
+ x="94.060638"
+ y="91.657791"
+ id="text2881"><tspan
+ sodipodi:role="line"
+ id="tspan2883"
+ x="94.060638"
+ y="91.657791"
+ style="font-size:14.86875057px">IM Server</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:3.35142469px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
+ x="118.23929"
+ y="37.838333"
+ id="text2890"><tspan
+ sodipodi:role="line"
+ id="tspan2892"
+ x="118.23929"
+ y="37.838333"
+ style="font-size:13.40569878px">Library</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:3.35142469px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
+ x="58.689751"
+ y="1.2476349"
+ id="text2899"><tspan
+ sodipodi:role="line"
+ id="tspan2901"
+ x="58.689751"
+ y="1.2476349"
+ style="font-size:13.40569878px">Application</tspan></text>
+ </g>
+</svg>
diff --git a/libX11/specs/XIM/sampleprotocolflow1.svg b/libX11/specs/XIM/sampleprotocolflow1.svg
index 622f9eed7..6378a1d76 100644
--- a/libX11/specs/XIM/sampleprotocolflow1.svg
+++ b/libX11/specs/XIM/sampleprotocolflow1.svg
@@ -1,939 +1,939 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="382.78897"
- height="202.96555"
- id="svg2"
- version="1.1"
- inkscape:version="0.47 r22583"
- sodipodi:docname="sampleprotocolflow1.svg">
- <defs
- id="defs4">
- <marker
- inkscape:stockid="Arrow2Mstart"
- orient="auto"
- refY="0"
- refX="0"
- id="Arrow2Mstart"
- style="overflow:visible">
- <path
- id="path4867"
- style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
- d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
- transform="scale(0.6,0.6)" />
- </marker>
- <marker
- inkscape:stockid="Arrow2Mend"
- orient="auto"
- refY="0"
- refX="0"
- id="Arrow2Mend"
- style="overflow:visible">
- <path
- id="path4870"
- style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
- d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
- transform="scale(-0.6,-0.6)" />
- </marker>
- <marker
- inkscape:stockid="Arrow1Send"
- orient="auto"
- refY="0"
- refX="0"
- id="Arrow1Send"
- style="overflow:visible">
- <path
- id="path4858"
- d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
- style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
- transform="matrix(-0.2,0,0,-0.2,-1.2,0)" />
- </marker>
- <marker
- inkscape:stockid="Arrow1Lstart"
- orient="auto"
- refY="0"
- refX="0"
- id="Arrow1Lstart"
- style="overflow:visible">
- <path
- id="path3946"
- d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
- style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
- transform="matrix(0.8,0,0,0.8,10,0)" />
- </marker>
- <marker
- inkscape:stockid="Arrow1Lend"
- orient="auto"
- refY="0"
- refX="0"
- id="Arrow1Lend"
- style="overflow:visible">
- <path
- id="path3949"
- d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
- style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
- transform="matrix(-0.8,0,0,-0.8,-10,0)" />
- </marker>
- <inkscape:perspective
- sodipodi:type="inkscape:persp3d"
- inkscape:vp_x="0 : 526.18109 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="744.09448 : 526.18109 : 1"
- inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
- id="perspective10" />
- <inkscape:perspective
- id="perspective4399"
- inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
- inkscape:vp_z="1 : 0.5 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_x="0 : 0.5 : 1"
- sodipodi:type="inkscape:persp3d" />
- <marker
- inkscape:stockid="Arrow1Lend"
- orient="auto"
- refY="0"
- refX="0"
- id="Arrow1Lend-6"
- style="overflow:visible">
- <path
- id="path3949-6"
- d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
- style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
- transform="matrix(-0.8,0,0,-0.8,-10,0)" />
- </marker>
- <inkscape:perspective
- id="perspective4427"
- inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
- inkscape:vp_z="1 : 0.5 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_x="0 : 0.5 : 1"
- sodipodi:type="inkscape:persp3d" />
- <marker
- inkscape:stockid="Arrow1Lend"
- orient="auto"
- refY="0"
- refX="0"
- id="Arrow1Lend-1"
- style="overflow:visible">
- <path
- id="path3949-1"
- d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
- style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
- transform="matrix(-0.8,0,0,-0.8,-10,0)" />
- </marker>
- <inkscape:perspective
- id="perspective4455"
- inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
- inkscape:vp_z="1 : 0.5 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_x="0 : 0.5 : 1"
- sodipodi:type="inkscape:persp3d" />
- <marker
- inkscape:stockid="Arrow1Lend"
- orient="auto"
- refY="0"
- refX="0"
- id="Arrow1Lend-9"
- style="overflow:visible">
- <path
- id="path3949-69"
- d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
- style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
- transform="matrix(-0.8,0,0,-0.8,-10,0)" />
- </marker>
- <inkscape:perspective
- id="perspective4483"
- inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
- inkscape:vp_z="1 : 0.5 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_x="0 : 0.5 : 1"
- sodipodi:type="inkscape:persp3d" />
- <marker
- inkscape:stockid="Arrow1Lend"
- orient="auto"
- refY="0"
- refX="0"
- id="Arrow1Lend-5"
- style="overflow:visible">
- <path
- id="path3949-4"
- d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
- style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
- transform="matrix(-0.8,0,0,-0.8,-10,0)" />
- </marker>
- <inkscape:perspective
- id="perspective4483-6"
- inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
- inkscape:vp_z="1 : 0.5 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_x="0 : 0.5 : 1"
- sodipodi:type="inkscape:persp3d" />
- <marker
- inkscape:stockid="Arrow1Lend"
- orient="auto"
- refY="0"
- refX="0"
- id="Arrow1Lend-52"
- style="overflow:visible">
- <path
- id="path3949-44"
- d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
- style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
- transform="matrix(-0.8,0,0,-0.8,-10,0)" />
- </marker>
- <inkscape:perspective
- id="perspective4524"
- inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
- inkscape:vp_z="1 : 0.5 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_x="0 : 0.5 : 1"
- sodipodi:type="inkscape:persp3d" />
- <marker
- inkscape:stockid="Arrow1Lend"
- orient="auto"
- refY="0"
- refX="0"
- id="Arrow1Lend-0"
- style="overflow:visible">
- <path
- id="path3949-7"
- d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
- style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
- transform="matrix(-0.8,0,0,-0.8,-10,0)" />
- </marker>
- <inkscape:perspective
- id="perspective4946"
- inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
- inkscape:vp_z="1 : 0.5 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_x="0 : 0.5 : 1"
- sodipodi:type="inkscape:persp3d" />
- <inkscape:perspective
- id="perspective4985"
- inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
- inkscape:vp_z="1 : 0.5 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_x="0 : 0.5 : 1"
- sodipodi:type="inkscape:persp3d" />
- <inkscape:perspective
- id="perspective5010"
- inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
- inkscape:vp_z="1 : 0.5 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_x="0 : 0.5 : 1"
- sodipodi:type="inkscape:persp3d" />
- <inkscape:perspective
- id="perspective5254"
- inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
- inkscape:vp_z="1 : 0.5 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_x="0 : 0.5 : 1"
- sodipodi:type="inkscape:persp3d" />
- <marker
- inkscape:stockid="Arrow1Lend"
- orient="auto"
- refY="0"
- refX="0"
- id="Arrow1Lend-0-8"
- style="overflow:visible">
- <path
- id="path3949-7-3"
- d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
- style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
- transform="matrix(-0.8,0,0,-0.8,-10,0)" />
- </marker>
- <inkscape:perspective
- id="perspective5282"
- inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
- inkscape:vp_z="1 : 0.5 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_x="0 : 0.5 : 1"
- sodipodi:type="inkscape:persp3d" />
- <marker
- inkscape:stockid="Arrow1Lend"
- orient="auto"
- refY="0"
- refX="0"
- id="Arrow1Lend-0-9"
- style="overflow:visible">
- <path
- id="path3949-7-9"
- d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
- style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
- transform="matrix(-0.8,0,0,-0.8,-10,0)" />
- </marker>
- <inkscape:perspective
- id="perspective5512"
- inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
- inkscape:vp_z="1 : 0.5 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_x="0 : 0.5 : 1"
- sodipodi:type="inkscape:persp3d" />
- <marker
- inkscape:stockid="Arrow1Lend"
- orient="auto"
- refY="0"
- refX="0"
- id="Arrow1Lend-0-9-9"
- style="overflow:visible">
- <path
- id="path3949-7-9-5"
- d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
- style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
- transform="matrix(-0.8,0,0,-0.8,-10,0)" />
- </marker>
- <inkscape:perspective
- id="perspective5540"
- inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
- inkscape:vp_z="1 : 0.5 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_x="0 : 0.5 : 1"
- sodipodi:type="inkscape:persp3d" />
- <marker
- inkscape:stockid="Arrow1Lend"
- orient="auto"
- refY="0"
- refX="0"
- id="Arrow1Lend-0-9-1"
- style="overflow:visible">
- <path
- id="path3949-7-9-1"
- d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
- style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
- transform="matrix(-0.8,0,0,-0.8,-10,0)" />
- </marker>
- <inkscape:perspective
- id="perspective5568"
- inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
- inkscape:vp_z="1 : 0.5 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_x="0 : 0.5 : 1"
- sodipodi:type="inkscape:persp3d" />
- <marker
- inkscape:stockid="Arrow1Lend"
- orient="auto"
- refY="0"
- refX="0"
- id="Arrow1Lend-0-5"
- style="overflow:visible">
- <path
- id="path3949-7-5"
- d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
- style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
- transform="matrix(-0.8,0,0,-0.8,-10,0)" />
- </marker>
- <inkscape:perspective
- id="perspective5598"
- inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
- inkscape:vp_z="1 : 0.5 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_x="0 : 0.5 : 1"
- sodipodi:type="inkscape:persp3d" />
- <marker
- inkscape:stockid="Arrow1Lend"
- orient="auto"
- refY="0"
- refX="0"
- id="Arrow1Lend-0-6"
- style="overflow:visible">
- <path
- id="path3949-7-7"
- d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
- style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
- transform="matrix(-0.8,0,0,-0.8,-10,0)" />
- </marker>
- <inkscape:perspective
- id="perspective5632"
- inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
- inkscape:vp_z="1 : 0.5 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_x="0 : 0.5 : 1"
- sodipodi:type="inkscape:persp3d" />
- <marker
- inkscape:stockid="Arrow1Lend"
- orient="auto"
- refY="0"
- refX="0"
- id="Arrow1Lend-0-0"
- style="overflow:visible">
- <path
- id="path3949-7-39"
- d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
- style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
- transform="matrix(-0.8,0,0,-0.8,-10,0)" />
- </marker>
- <inkscape:perspective
- id="perspective6084"
- inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
- inkscape:vp_z="1 : 0.5 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_x="0 : 0.5 : 1"
- sodipodi:type="inkscape:persp3d" />
- <marker
- inkscape:stockid="Arrow1Lend"
- orient="auto"
- refY="0"
- refX="0"
- id="Arrow1Lend-0-9-3"
- style="overflow:visible">
- <path
- id="path3949-7-9-6"
- d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
- style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
- transform="matrix(-0.8,0,0,-0.8,-10,0)" />
- </marker>
- <inkscape:perspective
- id="perspective6112"
- inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
- inkscape:vp_z="1 : 0.5 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_x="0 : 0.5 : 1"
- sodipodi:type="inkscape:persp3d" />
- <marker
- inkscape:stockid="Arrow1Lend"
- orient="auto"
- refY="0"
- refX="0"
- id="Arrow1Lend-50"
- style="overflow:visible">
- <path
- id="path3949-64"
- d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
- style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
- transform="matrix(-0.8,0,0,-0.8,-10,0)" />
- </marker>
- <inkscape:perspective
- id="perspective6140"
- inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
- inkscape:vp_z="1 : 0.5 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_x="0 : 0.5 : 1"
- sodipodi:type="inkscape:persp3d" />
- <marker
- inkscape:stockid="Arrow1Lend"
- orient="auto"
- refY="0"
- refX="0"
- id="Arrow1Lend-4"
- style="overflow:visible">
- <path
- id="path3949-3"
- d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
- style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
- transform="matrix(-0.8,0,0,-0.8,-10,0)" />
- </marker>
- <inkscape:perspective
- id="perspective6828"
- inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
- inkscape:vp_z="1 : 0.5 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_x="0 : 0.5 : 1"
- sodipodi:type="inkscape:persp3d" />
- <marker
- inkscape:stockid="Arrow1Lend"
- orient="auto"
- refY="0"
- refX="0"
- id="Arrow1Lend-4-0"
- style="overflow:visible">
- <path
- id="path3949-3-4"
- d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
- style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
- transform="matrix(-0.8,0,0,-0.8,-10,0)" />
- </marker>
- <inkscape:perspective
- id="perspective4760"
- inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
- inkscape:vp_z="1 : 0.5 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_x="0 : 0.5 : 1"
- sodipodi:type="inkscape:persp3d" />
- <marker
- inkscape:stockid="Arrow1Lend"
- orient="auto"
- refY="0"
- refX="0"
- id="Arrow1Lend-14"
- style="overflow:visible">
- <path
- id="path3949-447"
- d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
- style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
- transform="matrix(-0.8,0,0,-0.8,-10,0)" />
- </marker>
- <inkscape:perspective
- id="perspective4818"
- inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
- inkscape:vp_z="1 : 0.5 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_x="0 : 0.5 : 1"
- sodipodi:type="inkscape:persp3d" />
- <marker
- inkscape:stockid="Arrow1Lend"
- orient="auto"
- refY="0"
- refX="0"
- id="Arrow1Lend-0-2"
- style="overflow:visible">
- <path
- id="path3949-7-58"
- d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
- style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
- transform="matrix(-0.8,0,0,-0.8,-10,0)" />
- </marker>
- <inkscape:perspective
- id="perspective3436"
- inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
- inkscape:vp_z="1 : 0.5 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_x="0 : 0.5 : 1"
- sodipodi:type="inkscape:persp3d" />
- </defs>
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="1.28"
- inkscape:cx="191.3945"
- inkscape:cy="47.71932"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="false"
- inkscape:window-width="1000"
- inkscape:window-height="704"
- inkscape:window-x="11"
- inkscape:window-y="25"
- inkscape:window-maximized="0"
- units="pt"
- borderlayer="true" />
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(-47.418246,-76.438428)">
- <text
- xml:space="preserve"
- style="font-size:6.46660471px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
- x="46.783585"
- y="95.48922"
- id="text2816"><tspan
- sodipodi:role="line"
- id="tspan2818"
- x="46.783585"
- y="95.48922">Key event</tspan></text>
- <text
- xml:space="preserve"
- style="font-size:6.46660471px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
- x="46.783585"
- y="127.36035"
- id="text2820"><tspan
- sodipodi:role="line"
- id="tspan2822"
- x="46.783585"
- y="127.36035">Key event</tspan></text>
- <text
- xml:space="preserve"
- style="font-size:6.46660471px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
- x="145.80858"
- y="81.978302"
- id="text2830"><tspan
- sodipodi:role="line"
- id="tspan2832"
- x="145.80858"
- y="81.978302">Xib API</tspan></text>
- <text
- xml:space="preserve"
- style="font-size:6.46660471px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
- x="235.207"
- y="81.351532"
- id="text2834"><tspan
- sodipodi:role="line"
- id="tspan2836"
- x="235.207"
- y="81.351532">IM library</tspan></text>
- <text
- xml:space="preserve"
- style="font-size:6.46660471px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
- x="133.49124"
- y="93.73336"
- id="text2838"><tspan
- sodipodi:role="line"
- id="tspan2840"
- x="133.49124"
- y="93.73336">XNextEvent</tspan></text>
- <text
- xml:space="preserve"
- style="font-size:6.46660471px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
- x="133.49124"
- y="101.95583"
- id="text2842"><tspan
- sodipodi:role="line"
- id="tspan2844"
- x="133.49124"
- y="101.95583">XFilterEvent</tspan></text>
- <text
- xml:space="preserve"
- style="font-size:6.46660471px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
- x="133.49124"
- y="127.98712"
- id="text2846"><tspan
- sodipodi:role="line"
- id="tspan2848"
- x="133.49124"
- y="127.98712">XNextEvent</tspan></text>
- <text
- xml:space="preserve"
- style="font-size:6.46660471px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
- x="133.49124"
- y="135.05867"
- id="text2850"><tspan
- sodipodi:role="line"
- id="tspan2852"
- x="133.49124"
- y="135.05867">XFilterEvent</tspan></text>
- <text
- xml:space="preserve"
- style="font-size:6.46660471px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
- x="133.49124"
- y="162.35158"
- id="text2854"><tspan
- sodipodi:role="line"
- id="tspan2856"
- x="133.49124"
- y="162.35158">XNextEvent</tspan></text>
- <text
- xml:space="preserve"
- style="font-size:6.46660471px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
- x="133.49124"
- y="170.35785"
- id="text2858"><tspan
- sodipodi:role="line"
- id="tspan2860"
- x="133.49124"
- y="170.35785">XFilterEvent(returns False)</tspan></text>
- <text
- xml:space="preserve"
- style="font-size:6.46660471px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
- x="133.49124"
- y="179.28792"
- id="text2862"><tspan
- sodipodi:role="line"
- id="tspan2864"
- x="133.49124"
- y="179.28792">XmbLookupString</tspan></text>
- <text
- xml:space="preserve"
- style="font-size:6.46660471px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
- x="272.31775"
- y="101.96278"
- id="text2899"><tspan
- sodipodi:role="line"
- id="tspan2901"
- x="272.31775"
- y="101.96278">XIM_FORWARD_EVENT</tspan></text>
- <text
- xml:space="preserve"
- style="font-size:6.46660471px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
- x="272.31775"
- y="123.1926"
- id="text2903"><tspan
- sodipodi:role="line"
- id="tspan2905"
- x="272.31775"
- y="123.1926">XIM_FORWARD_EVENT</tspan><tspan
- sodipodi:role="line"
- x="272.31775"
- y="131.27585"
- id="tspan2907">or XIM_COMMIT</tspan><tspan
- sodipodi:role="line"
- x="272.31775"
- y="139.35912"
- id="tspan2909">(synchronous)</tspan></text>
- <text
- xml:space="preserve"
- style="font-size:6.46660471px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
- x="272.31775"
- y="160.72026"
- id="text2911"><tspan
- sodipodi:role="line"
- id="tspan2913"
- x="272.31775"
- y="160.72026">XIM_FORWARD_EVENT</tspan></text>
- <text
- xml:space="preserve"
- style="font-size:6.46660471px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
- x="292.59851"
- y="199.99501"
- id="text2915"><tspan
- sodipodi:role="line"
- id="tspan2917"
- x="292.59851"
- y="199.99501">XIM_SYNC</tspan></text>
- <text
- xml:space="preserve"
- style="font-size:6.46660471px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
- x="281.20618"
- y="211.76923"
- id="text2919"><tspan
- sodipodi:role="line"
- id="tspan2921"
- x="281.20618"
- y="211.76923">XIM_SYNC_REPLY</tspan></text>
- <text
- xml:space="preserve"
- style="font-size:6.46660471px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
- x="277.69659"
- y="228.37003"
- id="text2933"><tspan
- sodipodi:role="line"
- id="tspan2935"
- x="277.69659"
- y="228.37003">XIM_SET_IC_FOCUS</tspan></text>
- <text
- xml:space="preserve"
- style="font-size:6.46660471px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
- x="272.31775"
- y="244.28534"
- id="text2937"><tspan
- sodipodi:role="line"
- id="tspan2939"
- x="272.31775"
- y="244.28534">XIM_SYNC_REPLY as</tspan><tspan
- sodipodi:role="line"
- x="272.31775"
- y="252.36859"
- id="tspan2941">a reply of the </tspan><tspan
- sodipodi:role="line"
- x="272.31775"
- y="260.45184"
- id="tspan2943">XIM_FORWARD_EVENT</tspan></text>
- <text
- xml:space="preserve"
- style="font-size:6.46660471px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
- x="347.37851"
- y="81.921471"
- id="text2953"><tspan
- sodipodi:role="line"
- id="tspan2955"
- x="347.37851"
- y="81.921471">IM Server</tspan></text>
- <text
- xml:space="preserve"
- style="font-size:6.46660471px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
- x="358.27658"
- y="119.92648"
- id="text2957"><tspan
- sodipodi:role="line"
- id="tspan2959"
- x="358.27658"
- y="119.92648">synchronous</tspan><tspan
- sodipodi:role="line"
- x="358.27658"
- y="128.00974"
- id="tspan2961">request</tspan></text>
- <text
- xml:space="preserve"
- style="font-size:6.46660471px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
- x="358.07132"
- y="210.28015"
- id="text2967"><tspan
- sodipodi:role="line"
- id="tspan2969"
- x="358.07132"
- y="210.28015">processed</tspan><tspan
- sodipodi:role="line"
- x="358.07132"
- y="218.3634"
- id="tspan2971">(The focused</tspan><tspan
- sodipodi:role="line"
- x="358.07132"
- y="226.44667"
- id="tspan2973">IC is changed)</tspan></text>
- <text
- xml:space="preserve"
- style="font-size:6.46660471px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
- x="358.03976"
- y="238.10788"
- id="text2975"><tspan
- sodipodi:role="line"
- id="tspan2977"
- x="358.03976"
- y="238.10788">processed</tspan></text>
- <text
- xml:space="preserve"
- style="font-size:6.46660471px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
- x="358.03976"
- y="268.33426"
- id="text2979"><tspan
- sodipodi:role="line"
- id="tspan2981"
- x="358.03976"
- y="268.33426">processed</tspan></text>
- <path
- style="fill:none;stroke:#000000;stroke-width:0.53888369px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow1Lend);display:inline"
- d="m 264.36299,105.03516 79.29289,9.23801"
- id="path2987"
- inkscape:connector-type="polyline" />
- <path
- style="fill:none;stroke:#000000;stroke-width:0.53888369px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow1Lend);display:inline"
- d="m 268.13518,142.12302 79.29289,9.23801"
- id="path2987-1"
- inkscape:connector-type="polyline" />
- <text
- xml:space="preserve"
- style="font-size:6.46660471px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
- x="133.49124"
- y="204.28122"
- id="text2866-5"><tspan
- sodipodi:role="line"
- id="tspan2868-5"
- x="133.49124"
- y="204.28122">XSetICFocus</tspan></text>
- <text
- xml:space="preserve"
- style="font-size:6.46660471px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
- x="133.49124"
- y="245.50015"
- id="text2846-4"><tspan
- sodipodi:role="line"
- id="tspan2848-7"
- x="133.49124"
- y="245.50015">XNextEvent</tspan></text>
- <path
- style="fill:none;stroke:#000000;stroke-width:0.53888369px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow1Lend-0);display:inline"
- d="M 81.199995,92.94869 124.20402,92.404331"
- id="path5048"
- inkscape:connector-type="polyline" />
- <path
- style="fill:none;stroke:#000000;stroke-width:0.53888369px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow1Lend-0);display:inline"
- d="m 83.759014,126.12468 43.004026,-0.54436"
- id="path5048-6"
- inkscape:connector-type="polyline" />
- <path
- style="fill:none;stroke:#000000;stroke-width:0.53888369px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow1Lend-0-9);display:inline"
- d="m 174.28465,99.364052 87.64112,4.899188"
- id="path5302"
- inkscape:connector-type="polyline" />
- <path
- style="fill:none;stroke:#000000;stroke-width:0.53888369px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow1Lend-0-9)"
- d="m 173.9906,134.66938 87.64111,6.53226"
- id="path5302-2"
- inkscape:connector-type="polyline" />
- <text
- xml:space="preserve"
- style="font-size:6.46660471px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
- x="48.236271"
- y="192.34102"
- id="text5618"><tspan
- sodipodi:role="line"
- id="tspan5620"
- x="48.236271"
- y="192.34102">Application moves</tspan><tspan
- sodipodi:role="line"
- x="48.236271"
- y="200.42427"
- id="tspan5622">the focus</tspan></text>
- <path
- style="fill:none;stroke:#000000;stroke-width:0.58549535px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow1Lend-4)"
- d="m 402.38807,157.92589 c 61.85166,62.00083 0.1653,103.10771 0,103.2156 l -3.85389,2.11508"
- id="path6164-3"
- sodipodi:nodetypes="ccc" />
- <text
- xml:space="preserve"
- style="font-size:6.46660471px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
- x="360.99832"
- y="155.02936"
- id="text6848"><tspan
- sodipodi:role="line"
- id="tspan6850"
- x="360.99832"
- y="155.02936">Pending</tspan></text>
- <path
- style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Mend);display:inline"
- d="m 295.71429,348.34463 -72.85715,25"
- id="path4838"
- transform="translate(47.418246,-223.55662)"
- inkscape:connector-type="polyline" />
- <path
- style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Mend);display:inline"
- d="m 212.14286,376.91606 -80.71429,5"
- id="path6508"
- transform="translate(47.418246,-223.55662)"
- inkscape:connector-type="polyline" />
- <path
- style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Mend)"
- d="M 218.57143,426.20177 300,424.7732"
- id="path6746"
- transform="translate(47.418246,-223.55662)"
- inkscape:connector-type="polyline" />
- <path
- style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-start:none;marker-end:url(#Arrow2Mend)"
- d="M 299.28571,439.05892 220,438.34463"
- id="path6748"
- transform="translate(47.418246,-223.55662)"
- inkscape:connector-type="polyline" />
- <path
- style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Mend)"
- d="m 220,451.91606 77.85714,9.28571"
- id="path6750"
- transform="translate(47.418246,-223.55662)"
- inkscape:connector-type="polyline" />
- <path
- style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Mend)"
- d="m 220,485.48749 80.71429,7.14285"
- id="path6752"
- transform="translate(47.418246,-223.55662)"
- inkscape:connector-type="polyline" />
- <path
- style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Mend)"
- d="m 140.71429,426.20177 71.42857,-2.14285"
- id="path6754"
- transform="translate(47.418246,-223.55662)"
- inkscape:connector-type="polyline" />
- <path
- style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Mend)"
- d="m 78.571429,400.48749 -41.428572,1.42857"
- id="path6758"
- transform="translate(47.418246,-223.55662)"
- inkscape:connector-type="polyline" />
- <path
- style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Mend)"
- d="m 136.42857,466.20177 75.71429,16.42857"
- id="path8600"
- transform="translate(47.418246,-223.55662)"
- inkscape:connector-type="polyline" />
- <path
- style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
- d="m 216.73325,9.5118041 c 0.67941,192.9537359 0.67941,192.9537359 0.67941,192.9537359 l 0,0 0,0"
- id="path3426"
- transform="translate(47.418246,76.438428)" />
- <path
- style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
- d="m 350.47303,85.950232 c 0.67941,192.953738 0.67941,192.953738 0.67941,192.953738 l 0,0 0,0"
- id="path3426-4" />
- </g>
-</svg>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ width="382.78897"
+ height="202.96555"
+ id="svg2"
+ version="1.1"
+ inkscape:version="0.47 r22583"
+ sodipodi:docname="sampleprotocolflow1.svg">
+ <defs
+ id="defs4">
+ <marker
+ inkscape:stockid="Arrow2Mstart"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="Arrow2Mstart"
+ style="overflow:visible">
+ <path
+ id="path4867"
+ style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
+ d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+ transform="scale(0.6,0.6)" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow2Mend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="Arrow2Mend"
+ style="overflow:visible">
+ <path
+ id="path4870"
+ style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
+ d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+ transform="scale(-0.6,-0.6)" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow1Send"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="Arrow1Send"
+ style="overflow:visible">
+ <path
+ id="path4858"
+ d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
+ style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
+ transform="matrix(-0.2,0,0,-0.2,-1.2,0)" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow1Lstart"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="Arrow1Lstart"
+ style="overflow:visible">
+ <path
+ id="path3946"
+ d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
+ style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
+ transform="matrix(0.8,0,0,0.8,10,0)" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow1Lend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="Arrow1Lend"
+ style="overflow:visible">
+ <path
+ id="path3949"
+ d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
+ style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
+ transform="matrix(-0.8,0,0,-0.8,-10,0)" />
+ </marker>
+ <inkscape:perspective
+ sodipodi:type="inkscape:persp3d"
+ inkscape:vp_x="0 : 526.18109 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_z="744.09448 : 526.18109 : 1"
+ inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+ id="perspective10" />
+ <inkscape:perspective
+ id="perspective4399"
+ inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+ inkscape:vp_z="1 : 0.5 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 0.5 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ <marker
+ inkscape:stockid="Arrow1Lend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="Arrow1Lend-6"
+ style="overflow:visible">
+ <path
+ id="path3949-6"
+ d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
+ style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
+ transform="matrix(-0.8,0,0,-0.8,-10,0)" />
+ </marker>
+ <inkscape:perspective
+ id="perspective4427"
+ inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+ inkscape:vp_z="1 : 0.5 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 0.5 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ <marker
+ inkscape:stockid="Arrow1Lend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="Arrow1Lend-1"
+ style="overflow:visible">
+ <path
+ id="path3949-1"
+ d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
+ style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
+ transform="matrix(-0.8,0,0,-0.8,-10,0)" />
+ </marker>
+ <inkscape:perspective
+ id="perspective4455"
+ inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+ inkscape:vp_z="1 : 0.5 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 0.5 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ <marker
+ inkscape:stockid="Arrow1Lend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="Arrow1Lend-9"
+ style="overflow:visible">
+ <path
+ id="path3949-69"
+ d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
+ style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
+ transform="matrix(-0.8,0,0,-0.8,-10,0)" />
+ </marker>
+ <inkscape:perspective
+ id="perspective4483"
+ inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+ inkscape:vp_z="1 : 0.5 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 0.5 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ <marker
+ inkscape:stockid="Arrow1Lend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="Arrow1Lend-5"
+ style="overflow:visible">
+ <path
+ id="path3949-4"
+ d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
+ style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
+ transform="matrix(-0.8,0,0,-0.8,-10,0)" />
+ </marker>
+ <inkscape:perspective
+ id="perspective4483-6"
+ inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+ inkscape:vp_z="1 : 0.5 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 0.5 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ <marker
+ inkscape:stockid="Arrow1Lend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="Arrow1Lend-52"
+ style="overflow:visible">
+ <path
+ id="path3949-44"
+ d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
+ style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
+ transform="matrix(-0.8,0,0,-0.8,-10,0)" />
+ </marker>
+ <inkscape:perspective
+ id="perspective4524"
+ inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+ inkscape:vp_z="1 : 0.5 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 0.5 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ <marker
+ inkscape:stockid="Arrow1Lend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="Arrow1Lend-0"
+ style="overflow:visible">
+ <path
+ id="path3949-7"
+ d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
+ style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
+ transform="matrix(-0.8,0,0,-0.8,-10,0)" />
+ </marker>
+ <inkscape:perspective
+ id="perspective4946"
+ inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+ inkscape:vp_z="1 : 0.5 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 0.5 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ <inkscape:perspective
+ id="perspective4985"
+ inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+ inkscape:vp_z="1 : 0.5 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 0.5 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ <inkscape:perspective
+ id="perspective5010"
+ inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+ inkscape:vp_z="1 : 0.5 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 0.5 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ <inkscape:perspective
+ id="perspective5254"
+ inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+ inkscape:vp_z="1 : 0.5 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 0.5 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ <marker
+ inkscape:stockid="Arrow1Lend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="Arrow1Lend-0-8"
+ style="overflow:visible">
+ <path
+ id="path3949-7-3"
+ d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
+ style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
+ transform="matrix(-0.8,0,0,-0.8,-10,0)" />
+ </marker>
+ <inkscape:perspective
+ id="perspective5282"
+ inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+ inkscape:vp_z="1 : 0.5 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 0.5 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ <marker
+ inkscape:stockid="Arrow1Lend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="Arrow1Lend-0-9"
+ style="overflow:visible">
+ <path
+ id="path3949-7-9"
+ d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
+ style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
+ transform="matrix(-0.8,0,0,-0.8,-10,0)" />
+ </marker>
+ <inkscape:perspective
+ id="perspective5512"
+ inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+ inkscape:vp_z="1 : 0.5 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 0.5 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ <marker
+ inkscape:stockid="Arrow1Lend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="Arrow1Lend-0-9-9"
+ style="overflow:visible">
+ <path
+ id="path3949-7-9-5"
+ d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
+ style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
+ transform="matrix(-0.8,0,0,-0.8,-10,0)" />
+ </marker>
+ <inkscape:perspective
+ id="perspective5540"
+ inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+ inkscape:vp_z="1 : 0.5 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 0.5 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ <marker
+ inkscape:stockid="Arrow1Lend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="Arrow1Lend-0-9-1"
+ style="overflow:visible">
+ <path
+ id="path3949-7-9-1"
+ d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
+ style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
+ transform="matrix(-0.8,0,0,-0.8,-10,0)" />
+ </marker>
+ <inkscape:perspective
+ id="perspective5568"
+ inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+ inkscape:vp_z="1 : 0.5 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 0.5 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ <marker
+ inkscape:stockid="Arrow1Lend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="Arrow1Lend-0-5"
+ style="overflow:visible">
+ <path
+ id="path3949-7-5"
+ d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
+ style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
+ transform="matrix(-0.8,0,0,-0.8,-10,0)" />
+ </marker>
+ <inkscape:perspective
+ id="perspective5598"
+ inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+ inkscape:vp_z="1 : 0.5 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 0.5 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ <marker
+ inkscape:stockid="Arrow1Lend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="Arrow1Lend-0-6"
+ style="overflow:visible">
+ <path
+ id="path3949-7-7"
+ d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
+ style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
+ transform="matrix(-0.8,0,0,-0.8,-10,0)" />
+ </marker>
+ <inkscape:perspective
+ id="perspective5632"
+ inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+ inkscape:vp_z="1 : 0.5 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 0.5 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ <marker
+ inkscape:stockid="Arrow1Lend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="Arrow1Lend-0-0"
+ style="overflow:visible">
+ <path
+ id="path3949-7-39"
+ d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
+ style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
+ transform="matrix(-0.8,0,0,-0.8,-10,0)" />
+ </marker>
+ <inkscape:perspective
+ id="perspective6084"
+ inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+ inkscape:vp_z="1 : 0.5 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 0.5 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ <marker
+ inkscape:stockid="Arrow1Lend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="Arrow1Lend-0-9-3"
+ style="overflow:visible">
+ <path
+ id="path3949-7-9-6"
+ d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
+ style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
+ transform="matrix(-0.8,0,0,-0.8,-10,0)" />
+ </marker>
+ <inkscape:perspective
+ id="perspective6112"
+ inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+ inkscape:vp_z="1 : 0.5 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 0.5 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ <marker
+ inkscape:stockid="Arrow1Lend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="Arrow1Lend-50"
+ style="overflow:visible">
+ <path
+ id="path3949-64"
+ d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
+ style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
+ transform="matrix(-0.8,0,0,-0.8,-10,0)" />
+ </marker>
+ <inkscape:perspective
+ id="perspective6140"
+ inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+ inkscape:vp_z="1 : 0.5 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 0.5 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ <marker
+ inkscape:stockid="Arrow1Lend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="Arrow1Lend-4"
+ style="overflow:visible">
+ <path
+ id="path3949-3"
+ d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
+ style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
+ transform="matrix(-0.8,0,0,-0.8,-10,0)" />
+ </marker>
+ <inkscape:perspective
+ id="perspective6828"
+ inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+ inkscape:vp_z="1 : 0.5 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 0.5 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ <marker
+ inkscape:stockid="Arrow1Lend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="Arrow1Lend-4-0"
+ style="overflow:visible">
+ <path
+ id="path3949-3-4"
+ d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
+ style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
+ transform="matrix(-0.8,0,0,-0.8,-10,0)" />
+ </marker>
+ <inkscape:perspective
+ id="perspective4760"
+ inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+ inkscape:vp_z="1 : 0.5 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 0.5 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ <marker
+ inkscape:stockid="Arrow1Lend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="Arrow1Lend-14"
+ style="overflow:visible">
+ <path
+ id="path3949-447"
+ d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
+ style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
+ transform="matrix(-0.8,0,0,-0.8,-10,0)" />
+ </marker>
+ <inkscape:perspective
+ id="perspective4818"
+ inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+ inkscape:vp_z="1 : 0.5 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 0.5 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ <marker
+ inkscape:stockid="Arrow1Lend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="Arrow1Lend-0-2"
+ style="overflow:visible">
+ <path
+ id="path3949-7-58"
+ d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
+ style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
+ transform="matrix(-0.8,0,0,-0.8,-10,0)" />
+ </marker>
+ <inkscape:perspective
+ id="perspective3436"
+ inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+ inkscape:vp_z="1 : 0.5 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 0.5 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ </defs>
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageopacity="0.0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="1.28"
+ inkscape:cx="191.3945"
+ inkscape:cy="47.71932"
+ inkscape:document-units="px"
+ inkscape:current-layer="layer1"
+ showgrid="false"
+ inkscape:window-width="1000"
+ inkscape:window-height="704"
+ inkscape:window-x="11"
+ inkscape:window-y="25"
+ inkscape:window-maximized="0"
+ units="pt"
+ borderlayer="true" />
+ <metadata
+ id="metadata7">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title />
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <g
+ inkscape:label="Layer 1"
+ inkscape:groupmode="layer"
+ id="layer1"
+ transform="translate(-47.418246,-76.438428)">
+ <text
+ xml:space="preserve"
+ style="font-size:6.46660471px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
+ x="46.783585"
+ y="95.48922"
+ id="text2816"><tspan
+ sodipodi:role="line"
+ id="tspan2818"
+ x="46.783585"
+ y="95.48922">Key event</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:6.46660471px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
+ x="46.783585"
+ y="127.36035"
+ id="text2820"><tspan
+ sodipodi:role="line"
+ id="tspan2822"
+ x="46.783585"
+ y="127.36035">Key event</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:6.46660471px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
+ x="145.80858"
+ y="81.978302"
+ id="text2830"><tspan
+ sodipodi:role="line"
+ id="tspan2832"
+ x="145.80858"
+ y="81.978302">Xib API</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:6.46660471px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
+ x="235.207"
+ y="81.351532"
+ id="text2834"><tspan
+ sodipodi:role="line"
+ id="tspan2836"
+ x="235.207"
+ y="81.351532">IM library</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:6.46660471px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
+ x="133.49124"
+ y="93.73336"
+ id="text2838"><tspan
+ sodipodi:role="line"
+ id="tspan2840"
+ x="133.49124"
+ y="93.73336">XNextEvent</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:6.46660471px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
+ x="133.49124"
+ y="101.95583"
+ id="text2842"><tspan
+ sodipodi:role="line"
+ id="tspan2844"
+ x="133.49124"
+ y="101.95583">XFilterEvent</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:6.46660471px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
+ x="133.49124"
+ y="127.98712"
+ id="text2846"><tspan
+ sodipodi:role="line"
+ id="tspan2848"
+ x="133.49124"
+ y="127.98712">XNextEvent</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:6.46660471px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
+ x="133.49124"
+ y="135.05867"
+ id="text2850"><tspan
+ sodipodi:role="line"
+ id="tspan2852"
+ x="133.49124"
+ y="135.05867">XFilterEvent</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:6.46660471px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
+ x="133.49124"
+ y="162.35158"
+ id="text2854"><tspan
+ sodipodi:role="line"
+ id="tspan2856"
+ x="133.49124"
+ y="162.35158">XNextEvent</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:6.46660471px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
+ x="133.49124"
+ y="170.35785"
+ id="text2858"><tspan
+ sodipodi:role="line"
+ id="tspan2860"
+ x="133.49124"
+ y="170.35785">XFilterEvent(returns False)</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:6.46660471px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
+ x="133.49124"
+ y="179.28792"
+ id="text2862"><tspan
+ sodipodi:role="line"
+ id="tspan2864"
+ x="133.49124"
+ y="179.28792">XmbLookupString</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:6.46660471px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
+ x="272.31775"
+ y="101.96278"
+ id="text2899"><tspan
+ sodipodi:role="line"
+ id="tspan2901"
+ x="272.31775"
+ y="101.96278">XIM_FORWARD_EVENT</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:6.46660471px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
+ x="272.31775"
+ y="123.1926"
+ id="text2903"><tspan
+ sodipodi:role="line"
+ id="tspan2905"
+ x="272.31775"
+ y="123.1926">XIM_FORWARD_EVENT</tspan><tspan
+ sodipodi:role="line"
+ x="272.31775"
+ y="131.27585"
+ id="tspan2907">or XIM_COMMIT</tspan><tspan
+ sodipodi:role="line"
+ x="272.31775"
+ y="139.35912"
+ id="tspan2909">(synchronous)</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:6.46660471px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
+ x="272.31775"
+ y="160.72026"
+ id="text2911"><tspan
+ sodipodi:role="line"
+ id="tspan2913"
+ x="272.31775"
+ y="160.72026">XIM_FORWARD_EVENT</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:6.46660471px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
+ x="292.59851"
+ y="199.99501"
+ id="text2915"><tspan
+ sodipodi:role="line"
+ id="tspan2917"
+ x="292.59851"
+ y="199.99501">XIM_SYNC</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:6.46660471px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
+ x="281.20618"
+ y="211.76923"
+ id="text2919"><tspan
+ sodipodi:role="line"
+ id="tspan2921"
+ x="281.20618"
+ y="211.76923">XIM_SYNC_REPLY</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:6.46660471px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
+ x="277.69659"
+ y="228.37003"
+ id="text2933"><tspan
+ sodipodi:role="line"
+ id="tspan2935"
+ x="277.69659"
+ y="228.37003">XIM_SET_IC_FOCUS</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:6.46660471px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
+ x="272.31775"
+ y="244.28534"
+ id="text2937"><tspan
+ sodipodi:role="line"
+ id="tspan2939"
+ x="272.31775"
+ y="244.28534">XIM_SYNC_REPLY as</tspan><tspan
+ sodipodi:role="line"
+ x="272.31775"
+ y="252.36859"
+ id="tspan2941">a reply of the </tspan><tspan
+ sodipodi:role="line"
+ x="272.31775"
+ y="260.45184"
+ id="tspan2943">XIM_FORWARD_EVENT</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:6.46660471px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
+ x="347.37851"
+ y="81.921471"
+ id="text2953"><tspan
+ sodipodi:role="line"
+ id="tspan2955"
+ x="347.37851"
+ y="81.921471">IM Server</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:6.46660471px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
+ x="358.27658"
+ y="119.92648"
+ id="text2957"><tspan
+ sodipodi:role="line"
+ id="tspan2959"
+ x="358.27658"
+ y="119.92648">synchronous</tspan><tspan
+ sodipodi:role="line"
+ x="358.27658"
+ y="128.00974"
+ id="tspan2961">request</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:6.46660471px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
+ x="358.07132"
+ y="210.28015"
+ id="text2967"><tspan
+ sodipodi:role="line"
+ id="tspan2969"
+ x="358.07132"
+ y="210.28015">processed</tspan><tspan
+ sodipodi:role="line"
+ x="358.07132"
+ y="218.3634"
+ id="tspan2971">(The focused</tspan><tspan
+ sodipodi:role="line"
+ x="358.07132"
+ y="226.44667"
+ id="tspan2973">IC is changed)</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:6.46660471px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
+ x="358.03976"
+ y="238.10788"
+ id="text2975"><tspan
+ sodipodi:role="line"
+ id="tspan2977"
+ x="358.03976"
+ y="238.10788">processed</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:6.46660471px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
+ x="358.03976"
+ y="268.33426"
+ id="text2979"><tspan
+ sodipodi:role="line"
+ id="tspan2981"
+ x="358.03976"
+ y="268.33426">processed</tspan></text>
+ <path
+ style="fill:none;stroke:#000000;stroke-width:0.53888369px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow1Lend);display:inline"
+ d="m 264.36299,105.03516 79.29289,9.23801"
+ id="path2987"
+ inkscape:connector-type="polyline" />
+ <path
+ style="fill:none;stroke:#000000;stroke-width:0.53888369px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow1Lend);display:inline"
+ d="m 268.13518,142.12302 79.29289,9.23801"
+ id="path2987-1"
+ inkscape:connector-type="polyline" />
+ <text
+ xml:space="preserve"
+ style="font-size:6.46660471px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
+ x="133.49124"
+ y="204.28122"
+ id="text2866-5"><tspan
+ sodipodi:role="line"
+ id="tspan2868-5"
+ x="133.49124"
+ y="204.28122">XSetICFocus</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:6.46660471px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
+ x="133.49124"
+ y="245.50015"
+ id="text2846-4"><tspan
+ sodipodi:role="line"
+ id="tspan2848-7"
+ x="133.49124"
+ y="245.50015">XNextEvent</tspan></text>
+ <path
+ style="fill:none;stroke:#000000;stroke-width:0.53888369px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow1Lend-0);display:inline"
+ d="M 81.199995,92.94869 124.20402,92.404331"
+ id="path5048"
+ inkscape:connector-type="polyline" />
+ <path
+ style="fill:none;stroke:#000000;stroke-width:0.53888369px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow1Lend-0);display:inline"
+ d="m 83.759014,126.12468 43.004026,-0.54436"
+ id="path5048-6"
+ inkscape:connector-type="polyline" />
+ <path
+ style="fill:none;stroke:#000000;stroke-width:0.53888369px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow1Lend-0-9);display:inline"
+ d="m 174.28465,99.364052 87.64112,4.899188"
+ id="path5302"
+ inkscape:connector-type="polyline" />
+ <path
+ style="fill:none;stroke:#000000;stroke-width:0.53888369px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow1Lend-0-9)"
+ d="m 173.9906,134.66938 87.64111,6.53226"
+ id="path5302-2"
+ inkscape:connector-type="polyline" />
+ <text
+ xml:space="preserve"
+ style="font-size:6.46660471px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
+ x="48.236271"
+ y="192.34102"
+ id="text5618"><tspan
+ sodipodi:role="line"
+ id="tspan5620"
+ x="48.236271"
+ y="192.34102">Application moves</tspan><tspan
+ sodipodi:role="line"
+ x="48.236271"
+ y="200.42427"
+ id="tspan5622">the focus</tspan></text>
+ <path
+ style="fill:none;stroke:#000000;stroke-width:0.58549535px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow1Lend-4)"
+ d="m 402.38807,157.92589 c 61.85166,62.00083 0.1653,103.10771 0,103.2156 l -3.85389,2.11508"
+ id="path6164-3"
+ sodipodi:nodetypes="ccc" />
+ <text
+ xml:space="preserve"
+ style="font-size:6.46660471px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
+ x="360.99832"
+ y="155.02936"
+ id="text6848"><tspan
+ sodipodi:role="line"
+ id="tspan6850"
+ x="360.99832"
+ y="155.02936">Pending</tspan></text>
+ <path
+ style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Mend);display:inline"
+ d="m 295.71429,348.34463 -72.85715,25"
+ id="path4838"
+ transform="translate(47.418246,-223.55662)"
+ inkscape:connector-type="polyline" />
+ <path
+ style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Mend);display:inline"
+ d="m 212.14286,376.91606 -80.71429,5"
+ id="path6508"
+ transform="translate(47.418246,-223.55662)"
+ inkscape:connector-type="polyline" />
+ <path
+ style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Mend)"
+ d="M 218.57143,426.20177 300,424.7732"
+ id="path6746"
+ transform="translate(47.418246,-223.55662)"
+ inkscape:connector-type="polyline" />
+ <path
+ style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-start:none;marker-end:url(#Arrow2Mend)"
+ d="M 299.28571,439.05892 220,438.34463"
+ id="path6748"
+ transform="translate(47.418246,-223.55662)"
+ inkscape:connector-type="polyline" />
+ <path
+ style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Mend)"
+ d="m 220,451.91606 77.85714,9.28571"
+ id="path6750"
+ transform="translate(47.418246,-223.55662)"
+ inkscape:connector-type="polyline" />
+ <path
+ style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Mend)"
+ d="m 220,485.48749 80.71429,7.14285"
+ id="path6752"
+ transform="translate(47.418246,-223.55662)"
+ inkscape:connector-type="polyline" />
+ <path
+ style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Mend)"
+ d="m 140.71429,426.20177 71.42857,-2.14285"
+ id="path6754"
+ transform="translate(47.418246,-223.55662)"
+ inkscape:connector-type="polyline" />
+ <path
+ style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Mend)"
+ d="m 78.571429,400.48749 -41.428572,1.42857"
+ id="path6758"
+ transform="translate(47.418246,-223.55662)"
+ inkscape:connector-type="polyline" />
+ <path
+ style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Mend)"
+ d="m 136.42857,466.20177 75.71429,16.42857"
+ id="path8600"
+ transform="translate(47.418246,-223.55662)"
+ inkscape:connector-type="polyline" />
+ <path
+ style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="m 216.73325,9.5118041 c 0.67941,192.9537359 0.67941,192.9537359 0.67941,192.9537359 l 0,0 0,0"
+ id="path3426"
+ transform="translate(47.418246,76.438428)" />
+ <path
+ style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="m 350.47303,85.950232 c 0.67941,192.953738 0.67941,192.953738 0.67941,192.953738 l 0,0 0,0"
+ id="path3426-4" />
+ </g>
+</svg>
diff --git a/libX11/specs/XIM/sampleprotocolflow2.svg b/libX11/specs/XIM/sampleprotocolflow2.svg
index ddc866b5a..69217b180 100644
--- a/libX11/specs/XIM/sampleprotocolflow2.svg
+++ b/libX11/specs/XIM/sampleprotocolflow2.svg
@@ -1,997 +1,997 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="380.64612"
- height="310.49246"
- id="svg2"
- version="1.1"
- inkscape:version="0.47 r22583"
- sodipodi:docname="sampleprotocolflow2.svg">
- <defs
- id="defs4">
- <marker
- inkscape:stockid="Arrow1Lstart"
- orient="auto"
- refY="0"
- refX="0"
- id="Arrow1Lstart"
- style="overflow:visible">
- <path
- id="path3946"
- d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
- style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
- transform="matrix(0.8,0,0,0.8,10,0)" />
- </marker>
- <marker
- inkscape:stockid="Arrow1Lend"
- orient="auto"
- refY="0"
- refX="0"
- id="Arrow1Lend"
- style="overflow:visible">
- <path
- id="path3949"
- d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
- style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
- transform="matrix(-0.8,0,0,-0.8,-10,0)" />
- </marker>
- <inkscape:perspective
- sodipodi:type="inkscape:persp3d"
- inkscape:vp_x="0 : 526.18109 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="744.09448 : 526.18109 : 1"
- inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
- id="perspective10" />
- <inkscape:perspective
- id="perspective4399"
- inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
- inkscape:vp_z="1 : 0.5 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_x="0 : 0.5 : 1"
- sodipodi:type="inkscape:persp3d" />
- <marker
- inkscape:stockid="Arrow1Lend"
- orient="auto"
- refY="0"
- refX="0"
- id="Arrow1Lend-6"
- style="overflow:visible">
- <path
- id="path3949-6"
- d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
- style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
- transform="matrix(-0.8,0,0,-0.8,-10,0)" />
- </marker>
- <inkscape:perspective
- id="perspective4427"
- inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
- inkscape:vp_z="1 : 0.5 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_x="0 : 0.5 : 1"
- sodipodi:type="inkscape:persp3d" />
- <marker
- inkscape:stockid="Arrow1Lend"
- orient="auto"
- refY="0"
- refX="0"
- id="Arrow1Lend-1"
- style="overflow:visible">
- <path
- id="path3949-1"
- d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
- style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
- transform="matrix(-0.8,0,0,-0.8,-10,0)" />
- </marker>
- <inkscape:perspective
- id="perspective4455"
- inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
- inkscape:vp_z="1 : 0.5 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_x="0 : 0.5 : 1"
- sodipodi:type="inkscape:persp3d" />
- <marker
- inkscape:stockid="Arrow1Lend"
- orient="auto"
- refY="0"
- refX="0"
- id="Arrow1Lend-9"
- style="overflow:visible">
- <path
- id="path3949-69"
- d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
- style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
- transform="matrix(-0.8,0,0,-0.8,-10,0)" />
- </marker>
- <inkscape:perspective
- id="perspective4483"
- inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
- inkscape:vp_z="1 : 0.5 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_x="0 : 0.5 : 1"
- sodipodi:type="inkscape:persp3d" />
- <marker
- inkscape:stockid="Arrow1Lend"
- orient="auto"
- refY="0"
- refX="0"
- id="Arrow1Lend-5"
- style="overflow:visible">
- <path
- id="path3949-4"
- d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
- style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
- transform="matrix(-0.8,0,0,-0.8,-10,0)" />
- </marker>
- <inkscape:perspective
- id="perspective4483-6"
- inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
- inkscape:vp_z="1 : 0.5 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_x="0 : 0.5 : 1"
- sodipodi:type="inkscape:persp3d" />
- <marker
- inkscape:stockid="Arrow1Lend"
- orient="auto"
- refY="0"
- refX="0"
- id="Arrow1Lend-52"
- style="overflow:visible">
- <path
- id="path3949-44"
- d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
- style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
- transform="matrix(-0.8,0,0,-0.8,-10,0)" />
- </marker>
- <inkscape:perspective
- id="perspective4524"
- inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
- inkscape:vp_z="1 : 0.5 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_x="0 : 0.5 : 1"
- sodipodi:type="inkscape:persp3d" />
- <marker
- inkscape:stockid="Arrow1Lend"
- orient="auto"
- refY="0"
- refX="0"
- id="Arrow1Lend-0"
- style="overflow:visible">
- <path
- id="path3949-7"
- d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
- style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
- transform="matrix(-0.8,0,0,-0.8,-10,0)" />
- </marker>
- <inkscape:perspective
- id="perspective4946"
- inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
- inkscape:vp_z="1 : 0.5 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_x="0 : 0.5 : 1"
- sodipodi:type="inkscape:persp3d" />
- <inkscape:perspective
- id="perspective4985"
- inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
- inkscape:vp_z="1 : 0.5 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_x="0 : 0.5 : 1"
- sodipodi:type="inkscape:persp3d" />
- <inkscape:perspective
- id="perspective5010"
- inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
- inkscape:vp_z="1 : 0.5 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_x="0 : 0.5 : 1"
- sodipodi:type="inkscape:persp3d" />
- <inkscape:perspective
- id="perspective5254"
- inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
- inkscape:vp_z="1 : 0.5 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_x="0 : 0.5 : 1"
- sodipodi:type="inkscape:persp3d" />
- <marker
- inkscape:stockid="Arrow1Lend"
- orient="auto"
- refY="0"
- refX="0"
- id="Arrow1Lend-0-8"
- style="overflow:visible">
- <path
- id="path3949-7-3"
- d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
- style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
- transform="matrix(-0.8,0,0,-0.8,-10,0)" />
- </marker>
- <inkscape:perspective
- id="perspective5282"
- inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
- inkscape:vp_z="1 : 0.5 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_x="0 : 0.5 : 1"
- sodipodi:type="inkscape:persp3d" />
- <marker
- inkscape:stockid="Arrow1Lend"
- orient="auto"
- refY="0"
- refX="0"
- id="Arrow1Lend-0-9"
- style="overflow:visible">
- <path
- id="path3949-7-9"
- d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
- style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
- transform="matrix(-0.8,0,0,-0.8,-10,0)" />
- </marker>
- <inkscape:perspective
- id="perspective5512"
- inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
- inkscape:vp_z="1 : 0.5 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_x="0 : 0.5 : 1"
- sodipodi:type="inkscape:persp3d" />
- <marker
- inkscape:stockid="Arrow1Lend"
- orient="auto"
- refY="0"
- refX="0"
- id="Arrow1Lend-0-9-9"
- style="overflow:visible">
- <path
- id="path3949-7-9-5"
- d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
- style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
- transform="matrix(-0.8,0,0,-0.8,-10,0)" />
- </marker>
- <inkscape:perspective
- id="perspective5540"
- inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
- inkscape:vp_z="1 : 0.5 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_x="0 : 0.5 : 1"
- sodipodi:type="inkscape:persp3d" />
- <marker
- inkscape:stockid="Arrow1Lend"
- orient="auto"
- refY="0"
- refX="0"
- id="Arrow1Lend-0-9-1"
- style="overflow:visible">
- <path
- id="path3949-7-9-1"
- d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
- style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
- transform="matrix(-0.8,0,0,-0.8,-10,0)" />
- </marker>
- <inkscape:perspective
- id="perspective5568"
- inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
- inkscape:vp_z="1 : 0.5 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_x="0 : 0.5 : 1"
- sodipodi:type="inkscape:persp3d" />
- <marker
- inkscape:stockid="Arrow1Lend"
- orient="auto"
- refY="0"
- refX="0"
- id="Arrow1Lend-0-5"
- style="overflow:visible">
- <path
- id="path3949-7-5"
- d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
- style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
- transform="matrix(-0.8,0,0,-0.8,-10,0)" />
- </marker>
- <inkscape:perspective
- id="perspective5598"
- inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
- inkscape:vp_z="1 : 0.5 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_x="0 : 0.5 : 1"
- sodipodi:type="inkscape:persp3d" />
- <marker
- inkscape:stockid="Arrow1Lend"
- orient="auto"
- refY="0"
- refX="0"
- id="Arrow1Lend-0-6"
- style="overflow:visible">
- <path
- id="path3949-7-7"
- d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
- style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
- transform="matrix(-0.8,0,0,-0.8,-10,0)" />
- </marker>
- <inkscape:perspective
- id="perspective5632"
- inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
- inkscape:vp_z="1 : 0.5 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_x="0 : 0.5 : 1"
- sodipodi:type="inkscape:persp3d" />
- <marker
- inkscape:stockid="Arrow1Lend"
- orient="auto"
- refY="0"
- refX="0"
- id="Arrow1Lend-0-0"
- style="overflow:visible">
- <path
- id="path3949-7-39"
- d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
- style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
- transform="matrix(-0.8,0,0,-0.8,-10,0)" />
- </marker>
- <inkscape:perspective
- id="perspective6084"
- inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
- inkscape:vp_z="1 : 0.5 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_x="0 : 0.5 : 1"
- sodipodi:type="inkscape:persp3d" />
- <marker
- inkscape:stockid="Arrow1Lend"
- orient="auto"
- refY="0"
- refX="0"
- id="Arrow1Lend-0-9-3"
- style="overflow:visible">
- <path
- id="path3949-7-9-6"
- d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
- style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
- transform="matrix(-0.8,0,0,-0.8,-10,0)" />
- </marker>
- <inkscape:perspective
- id="perspective6112"
- inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
- inkscape:vp_z="1 : 0.5 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_x="0 : 0.5 : 1"
- sodipodi:type="inkscape:persp3d" />
- <marker
- inkscape:stockid="Arrow1Lend"
- orient="auto"
- refY="0"
- refX="0"
- id="Arrow1Lend-50"
- style="overflow:visible">
- <path
- id="path3949-64"
- d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
- style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
- transform="matrix(-0.8,0,0,-0.8,-10,0)" />
- </marker>
- <inkscape:perspective
- id="perspective6140"
- inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
- inkscape:vp_z="1 : 0.5 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_x="0 : 0.5 : 1"
- sodipodi:type="inkscape:persp3d" />
- <marker
- inkscape:stockid="Arrow1Lend"
- orient="auto"
- refY="0"
- refX="0"
- id="Arrow1Lend-4"
- style="overflow:visible">
- <path
- id="path3949-3"
- d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
- style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
- transform="matrix(-0.8,0,0,-0.8,-10,0)" />
- </marker>
- <inkscape:perspective
- id="perspective6828"
- inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
- inkscape:vp_z="1 : 0.5 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_x="0 : 0.5 : 1"
- sodipodi:type="inkscape:persp3d" />
- <marker
- inkscape:stockid="Arrow1Lend"
- orient="auto"
- refY="0"
- refX="0"
- id="Arrow1Lend-4-0"
- style="overflow:visible">
- <path
- id="path3949-3-4"
- d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
- style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
- transform="matrix(-0.8,0,0,-0.8,-10,0)" />
- </marker>
- </defs>
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="0.7"
- inkscape:cx="190.40212"
- inkscape:cy="129.5884"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="false"
- inkscape:window-width="1000"
- inkscape:window-height="704"
- inkscape:window-x="11"
- inkscape:window-y="25"
- inkscape:window-maximized="0" />
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(-47.418246,-76.438428)">
- <text
- xml:space="preserve"
- style="font-size:6.46660471px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
- x="46.783585"
- y="95.48922"
- id="text2816"><tspan
- sodipodi:role="line"
- id="tspan2818"
- x="46.783585"
- y="95.48922">Key event</tspan></text>
- <text
- xml:space="preserve"
- style="font-size:6.46660471px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
- x="46.783585"
- y="127.36035"
- id="text2820"><tspan
- sodipodi:role="line"
- id="tspan2822"
- x="46.783585"
- y="127.36035">Key event</tspan></text>
- <text
- xml:space="preserve"
- style="font-size:6.46660471px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
- x="145.80858"
- y="81.978302"
- id="text2830"><tspan
- sodipodi:role="line"
- id="tspan2832"
- x="145.80858"
- y="81.978302">Xib API</tspan></text>
- <text
- xml:space="preserve"
- style="font-size:6.46660471px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
- x="235.207"
- y="81.351532"
- id="text2834"><tspan
- sodipodi:role="line"
- id="tspan2836"
- x="235.207"
- y="81.351532">IM library</tspan></text>
- <text
- xml:space="preserve"
- style="font-size:6.46660471px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
- x="133.49124"
- y="93.73336"
- id="text2838"><tspan
- sodipodi:role="line"
- id="tspan2840"
- x="133.49124"
- y="93.73336">XNextEvent</tspan></text>
- <text
- xml:space="preserve"
- style="font-size:6.46660471px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
- x="133.49124"
- y="101.95583"
- id="text2842"><tspan
- sodipodi:role="line"
- id="tspan2844"
- x="133.49124"
- y="101.95583">XFilterEvent</tspan></text>
- <text
- xml:space="preserve"
- style="font-size:6.46660471px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
- x="133.49124"
- y="127.98712"
- id="text2846"><tspan
- sodipodi:role="line"
- id="tspan2848"
- x="133.49124"
- y="127.98712">XNextEvent</tspan></text>
- <text
- xml:space="preserve"
- style="font-size:6.46660471px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
- x="133.49124"
- y="135.05867"
- id="text2850"><tspan
- sodipodi:role="line"
- id="tspan2852"
- x="133.49124"
- y="135.05867">XFilterEvent</tspan></text>
- <text
- xml:space="preserve"
- style="font-size:6.46660471px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
- x="133.49124"
- y="214.35158"
- id="text2854"><tspan
- sodipodi:role="line"
- id="tspan2856"
- x="133.49124"
- y="214.35158">XNextEvent</tspan></text>
- <text
- xml:space="preserve"
- style="font-size:6.46660471px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
- x="133.49124"
- y="222.35785"
- id="text2858"><tspan
- sodipodi:role="line"
- id="tspan2860"
- x="133.49124"
- y="222.35785">XFilterEvent(returns False)</tspan></text>
- <text
- xml:space="preserve"
- style="font-size:6.46660471px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
- x="133.49124"
- y="231.28792"
- id="text2862"><tspan
- sodipodi:role="line"
- id="tspan2864"
- x="133.49124"
- y="231.28792">XmbLookupString</tspan></text>
- <text
- xml:space="preserve"
- style="font-size:6.46660471px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
- x="131.33569"
- y="156.61403"
- id="text2866"><tspan
- sodipodi:role="line"
- id="tspan2868"
- x="131.33569"
- y="156.61403">XSetICFocus</tspan></text>
- <path
- style="fill:none;stroke:#000000;stroke-width:0.63770252px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
- d="M 265.78566,87.858954 266.2312,384.03836"
- id="path2895"
- inkscape:connector-type="polyline" />
- <path
- style="fill:none;stroke:#000000;stroke-width:0.68468785px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
- d="m 350.18414,88.4268 1.48726,298.16174"
- id="path2897"
- inkscape:connector-type="polyline" />
- <text
- xml:space="preserve"
- style="font-size:6.46660471px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
- x="272.31775"
- y="101.96278"
- id="text2899"><tspan
- sodipodi:role="line"
- id="tspan2901"
- x="272.31775"
- y="101.96278">XIM_FORWARD_EVENT</tspan></text>
- <text
- xml:space="preserve"
- style="font-size:6.46660471px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
- x="272.31775"
- y="123.1926"
- id="text2903"><tspan
- sodipodi:role="line"
- id="tspan2905"
- x="272.31775"
- y="123.1926">XIM_FORWARD_EVENT</tspan><tspan
- sodipodi:role="line"
- x="272.31775"
- y="131.27585"
- id="tspan2907">or XIM_COMMIT</tspan><tspan
- sodipodi:role="line"
- x="272.31775"
- y="139.35912"
- id="tspan2909">(synchronous)</tspan></text>
- <text
- xml:space="preserve"
- style="font-size:6.46660471px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
- x="272.31775"
- y="160.72026"
- id="text2911"><tspan
- sodipodi:role="line"
- id="tspan2913"
- x="272.31775"
- y="160.72026">XIM_FORWARD_EVENT</tspan></text>
- <text
- xml:space="preserve"
- style="font-size:6.46660471px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
- x="292.59851"
- y="175.99501"
- id="text2915"><tspan
- sodipodi:role="line"
- id="tspan2917"
- x="292.59851"
- y="175.99501">XIM_SYNC</tspan></text>
- <text
- xml:space="preserve"
- style="font-size:6.46660471px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
- x="281.20618"
- y="197.76923"
- id="text2919"><tspan
- sodipodi:role="line"
- id="tspan2921"
- x="281.20618"
- y="197.76923">XIM_SYNC_REPLY</tspan></text>
- <text
- xml:space="preserve"
- style="font-size:6.46660471px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
- x="272.31302"
- y="218.45467"
- id="text2923"><tspan
- sodipodi:role="line"
- id="tspan2925"
- x="272.31302"
- y="218.45467">XIM_SET_IC_FOCUS is</tspan><tspan
- sodipodi:role="line"
- x="272.31302"
- y="226.53792"
- id="tspan2927">pend because another </tspan><tspan
- sodipodi:role="line"
- x="272.31302"
- y="234.62119"
- id="tspan2929">sync cycle is started</tspan><tspan
- sodipodi:role="line"
- x="272.31302"
- y="242.70444"
- id="tspan2931">by XIM_COMMIT</tspan></text>
- <text
- xml:space="preserve"
- style="font-size:6.46660471px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
- x="277.69659"
- y="260.37003"
- id="text2933"><tspan
- sodipodi:role="line"
- id="tspan2935"
- x="277.69659"
- y="260.37003">XIM_SET_IC_FOCUS</tspan></text>
- <text
- xml:space="preserve"
- style="font-size:6.46660471px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
- x="272.31775"
- y="302.28534"
- id="text2937"><tspan
- sodipodi:role="line"
- id="tspan2939"
- x="272.31775"
- y="302.28534">XIM_SYNC_REPLY as</tspan><tspan
- sodipodi:role="line"
- x="272.31775"
- y="310.36859"
- id="tspan2941">a reply of the </tspan><tspan
- sodipodi:role="line"
- x="272.31775"
- y="318.45184"
- id="tspan2943">XIM_FORWARD_EVENT</tspan></text>
- <text
- xml:space="preserve"
- style="font-size:6.46660471px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
- x="277.69659"
- y="346.37805"
- id="text2945"><tspan
- sodipodi:role="line"
- id="tspan2947"
- x="277.69659"
- y="346.37805">XIM_SET_IC_FOCUS</tspan></text>
- <text
- xml:space="preserve"
- style="font-size:6.46660471px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
- x="272.31775"
- y="376.79626"
- id="text2949"><tspan
- sodipodi:role="line"
- id="tspan2951"
- x="272.31775"
- y="376.79626">XIM_FORWARD_EVENT</tspan></text>
- <text
- xml:space="preserve"
- style="font-size:6.46660471px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
- x="347.37851"
- y="81.921471"
- id="text2953"><tspan
- sodipodi:role="line"
- id="tspan2955"
- x="347.37851"
- y="81.921471">IM Server</tspan></text>
- <text
- xml:space="preserve"
- style="font-size:6.46660471px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
- x="358.27658"
- y="119.92648"
- id="text2957"><tspan
- sodipodi:role="line"
- id="tspan2959"
- x="358.27658"
- y="119.92648">synchronous</tspan><tspan
- sodipodi:role="line"
- x="358.27658"
- y="128.00974"
- id="tspan2961">request</tspan></text>
- <text
- xml:space="preserve"
- style="font-size:6.46660471px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
- x="357.9924"
- y="153.67647"
- id="text2963"><tspan
- sodipodi:role="line"
- id="tspan2965"
- x="357.9924"
- y="153.67647">Pending</tspan></text>
- <text
- xml:space="preserve"
- style="font-size:6.46660471px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
- x="358.07132"
- y="272.28015"
- id="text2967"><tspan
- sodipodi:role="line"
- id="tspan2969"
- x="358.07132"
- y="272.28015">processed</tspan><tspan
- sodipodi:role="line"
- x="358.07132"
- y="280.3634"
- id="tspan2971">(The focused</tspan><tspan
- sodipodi:role="line"
- x="358.07132"
- y="288.44666"
- id="tspan2973">IC is changed)</tspan></text>
- <text
- xml:space="preserve"
- style="font-size:6.46660471px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
- x="358.03976"
- y="300.10788"
- id="text2975"><tspan
- sodipodi:role="line"
- id="tspan2977"
- x="358.03976"
- y="300.10788">processed</tspan></text>
- <text
- xml:space="preserve"
- style="font-size:6.46660471px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
- x="358.03976"
- y="332.33426"
- id="text2979"><tspan
- sodipodi:role="line"
- id="tspan2981"
- x="358.03976"
- y="332.33426">processed</tspan></text>
- <text
- xml:space="preserve"
- style="font-size:6.46660471px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
- x="358.03976"
- y="356.72079"
- id="text2983"><tspan
- sodipodi:role="line"
- id="tspan2985"
- x="358.03976"
- y="356.72079">processed</tspan></text>
- <path
- style="fill:none;stroke:#000000;stroke-width:0.53888369px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow1Lend);display:inline"
- d="m 264.36299,105.03516 79.29289,9.23801"
- id="path2987"
- inkscape:connector-type="polyline" />
- <path
- style="fill:none;stroke:#000000;stroke-width:0.53888369px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow1Lend);display:inline"
- d="m 268.13518,142.12302 79.29289,9.23801"
- id="path2987-1"
- inkscape:connector-type="polyline" />
- <path
- style="fill:none;stroke:#000000;stroke-width:0.53888369px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow1Lend);display:inline"
- d="m 269.52088,163.9863 79.29289,9.23801"
- id="path2987-1-9"
- inkscape:connector-type="polyline" />
- <path
- style="fill:none;stroke:#000000;stroke-width:0.53888369px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow1Lend);display:inline"
- d="m 269.05898,262.06314 79.29289,9.238"
- id="path2987-1-9-7"
- inkscape:connector-type="polyline" />
- <path
- style="fill:none;stroke:#000000;stroke-width:0.53888369px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow1Lend);display:inline"
- d="m 270.13675,321.80224 79.29289,9.23801"
- id="path2987-1-9-7-2"
- inkscape:connector-type="polyline" />
- <path
- style="fill:none;stroke:#000000;stroke-width:0.53888369px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow1Lend);display:inline"
- d="m 270.13675,348.74643 79.29289,9.23801"
- id="path2987-1-9-7-1"
- inkscape:connector-type="polyline" />
- <path
- style="fill:none;stroke:#000000;stroke-width:0.53888369px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow1Lend);display:inline"
- d="m 269.82882,357.06063 79.29289,9.23801"
- id="path2987-1-9-7-1-2"
- inkscape:connector-type="polyline" />
- <path
- style="fill:none;stroke:#000000;stroke-width:0.53888369px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow1Lend-0)"
- d="m 341.34638,128.13018 -71.59455,48.49953"
- id="path4544"
- inkscape:connector-type="polyline" />
- <text
- xml:space="preserve"
- style="font-size:6.46660471px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
- x="133.49124"
- y="264.28122"
- id="text2866-5"><tspan
- sodipodi:role="line"
- id="tspan2868-5"
- x="133.49124"
- y="264.28122">XSetICFocus</tspan></text>
- <text
- xml:space="preserve"
- style="font-size:6.46660471px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
- x="214.78569"
- y="171.39485"
- id="text4963"><tspan
- sodipodi:role="line"
- id="tspan4965"
- x="214.78569"
- y="171.39485">Pending until</tspan><tspan
- sodipodi:role="line"
- x="214.78569"
- y="179.4781"
- id="tspan4967">sync cycle is </tspan><tspan
- sodipodi:role="line"
- x="214.78569"
- y="187.56137"
- id="tspan4969">done</tspan></text>
- <text
- xml:space="preserve"
- style="font-size:6.46660471px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
- x="47.269844"
- y="147.68396"
- id="text4971"><tspan
- sodipodi:role="line"
- id="tspan4973"
- x="47.269844"
- y="147.68396">Button press causes</tspan><tspan
- sodipodi:role="line"
- x="47.269844"
- y="155.76721"
- id="tspan4975">focus change</tspan></text>
- <text
- xml:space="preserve"
- style="font-size:6.46660471px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
- x="58.639027"
- y="305.18289"
- id="text2820-7"><tspan
- sodipodi:role="line"
- id="tspan2822-8"
- x="58.639027"
- y="305.18289">Key event</tspan></text>
- <text
- xml:space="preserve"
- style="font-size:6.46660471px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
- x="141.03561"
- y="303.50015"
- id="text2846-4"><tspan
- sodipodi:role="line"
- id="tspan2848-7"
- x="141.03561"
- y="303.50015">XNextEvent</tspan></text>
- <text
- xml:space="preserve"
- style="font-size:6.46660471px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
- x="141.03561"
- y="312.12228"
- id="text2850-0"><tspan
- sodipodi:role="line"
- id="tspan2852-5"
- x="141.03561"
- y="312.12228">XFilterEvent</tspan></text>
- <path
- style="fill:none;stroke:#000000;stroke-width:0.53888369px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow1Lend-0);display:inline"
- d="M 81.199995,92.94869 124.20402,92.404331"
- id="path5048"
- inkscape:connector-type="polyline" />
- <path
- style="fill:none;stroke:#000000;stroke-width:0.53888369px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow1Lend-0);display:inline"
- d="m 83.759014,126.12468 43.004026,-0.54436"
- id="path5048-6"
- inkscape:connector-type="polyline" />
- <path
- style="fill:none;stroke:#000000;stroke-width:0.47733891px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow1Lend-0);display:inline"
- d="m 93.961564,154.29857 33.267186,-0.55213"
- id="path5048-6-8"
- inkscape:connector-type="polyline" />
- <path
- style="fill:none;stroke:#000000;stroke-width:0.53888369px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow1Lend-0-9);display:inline"
- d="m 174.28465,99.364052 87.64112,4.899188"
- id="path5302"
- inkscape:connector-type="polyline" />
- <path
- style="fill:none;stroke:#000000;stroke-width:0.53888369px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow1Lend-0-9)"
- d="m 173.9906,134.66938 87.64111,6.53226"
- id="path5302-2"
- inkscape:connector-type="polyline" />
- <path
- style="fill:none;stroke:#000000;stroke-width:0.53888369px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow1Lend-0-9)"
- d="m 173.30399,155.50805 87.64112,6.53226"
- id="path5302-2-7"
- inkscape:connector-type="polyline" />
- <path
- style="fill:none;stroke:#000000;stroke-width:0.53888369px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow1Lend-0);display:inline"
- d="m 349.43674,176.36427 -78.8013,16.6288"
- id="path4544-3"
- inkscape:connector-type="polyline" />
- <path
- style="fill:none;stroke:#000000;stroke-width:0.53888369px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow1Lend-0);display:inline"
- d="m 264.3103,194.20137 -78.8013,16.6288"
- id="path4544-3-2"
- inkscape:connector-type="polyline" />
- <text
- xml:space="preserve"
- style="font-size:6.46660471px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
- x="56.236271"
- y="254.34102"
- id="text5618"><tspan
- sodipodi:role="line"
- id="tspan5620"
- x="56.236271"
- y="254.34102">Application moves</tspan><tspan
- sodipodi:role="line"
- x="56.236271"
- y="262.42429"
- id="tspan5622">the focus</tspan></text>
- <path
- style="fill:none;stroke:#000000;stroke-width:0.47733891px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-start:url(#Arrow1Lstart);marker-end:none;display:inline"
- d="m 97.227685,228.25112 33.267185,-0.55213"
- id="path5048-6-8-8"
- inkscape:connector-type="polyline" />
- <path
- style="fill:none;stroke:#000000;stroke-width:0.53888369px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow1Lend-0-9);display:inline"
- d="m 180.54474,262.43681 84.64716,-0.31069"
- id="path5302-2-7-2"
- inkscape:connector-type="polyline" />
- <path
- style="fill:none;stroke:#000000;stroke-width:0.53888369px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow1Lend);display:inline"
- d="m 182.81773,303.5919 78.56369,15.14712"
- id="path2987-1-9-7-1-0"
- inkscape:connector-type="polyline" />
- <path
- style="fill:none;stroke:#000000;stroke-width:0.53888369px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow1Lend);display:inline"
- d="m 182.83763,311.31095 79.08814,42.81112"
- id="path2987-1-9-7-1-0-3"
- inkscape:connector-type="polyline" />
- <path
- style="fill:none;stroke:#000000;stroke-width:0.5115177px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow1Lend-4)"
- d="m 258.76887,219.70748 c -40.77117,71.79102 -0.10897,119.38886 0,119.51377 l 2.18035,2.44906"
- id="path6164"
- sodipodi:nodetypes="ccc" />
- <path
- style="fill:none;stroke:#000000;stroke-width:0.6913743px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow1Lend-4)"
- d="m 400.28515,175.83598 c 61.64296,86.74506 0.16474,144.25751 0,144.40845 l -3.84089,2.9592"
- id="path6164-3"
- sodipodi:nodetypes="ccc" />
- <text
- xml:space="preserve"
- style="font-size:6.46660471px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
- x="360.99832"
- y="175.02936"
- id="text6848"><tspan
- sodipodi:role="line"
- id="tspan6850"
- x="360.99832"
- y="175.02936">Pending</tspan></text>
- </g>
-</svg>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ width="380.64612"
+ height="310.49246"
+ id="svg2"
+ version="1.1"
+ inkscape:version="0.47 r22583"
+ sodipodi:docname="sampleprotocolflow2.svg">
+ <defs
+ id="defs4">
+ <marker
+ inkscape:stockid="Arrow1Lstart"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="Arrow1Lstart"
+ style="overflow:visible">
+ <path
+ id="path3946"
+ d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
+ style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
+ transform="matrix(0.8,0,0,0.8,10,0)" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow1Lend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="Arrow1Lend"
+ style="overflow:visible">
+ <path
+ id="path3949"
+ d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
+ style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
+ transform="matrix(-0.8,0,0,-0.8,-10,0)" />
+ </marker>
+ <inkscape:perspective
+ sodipodi:type="inkscape:persp3d"
+ inkscape:vp_x="0 : 526.18109 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_z="744.09448 : 526.18109 : 1"
+ inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+ id="perspective10" />
+ <inkscape:perspective
+ id="perspective4399"
+ inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+ inkscape:vp_z="1 : 0.5 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 0.5 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ <marker
+ inkscape:stockid="Arrow1Lend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="Arrow1Lend-6"
+ style="overflow:visible">
+ <path
+ id="path3949-6"
+ d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
+ style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
+ transform="matrix(-0.8,0,0,-0.8,-10,0)" />
+ </marker>
+ <inkscape:perspective
+ id="perspective4427"
+ inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+ inkscape:vp_z="1 : 0.5 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 0.5 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ <marker
+ inkscape:stockid="Arrow1Lend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="Arrow1Lend-1"
+ style="overflow:visible">
+ <path
+ id="path3949-1"
+ d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
+ style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
+ transform="matrix(-0.8,0,0,-0.8,-10,0)" />
+ </marker>
+ <inkscape:perspective
+ id="perspective4455"
+ inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+ inkscape:vp_z="1 : 0.5 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 0.5 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ <marker
+ inkscape:stockid="Arrow1Lend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="Arrow1Lend-9"
+ style="overflow:visible">
+ <path
+ id="path3949-69"
+ d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
+ style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
+ transform="matrix(-0.8,0,0,-0.8,-10,0)" />
+ </marker>
+ <inkscape:perspective
+ id="perspective4483"
+ inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+ inkscape:vp_z="1 : 0.5 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 0.5 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ <marker
+ inkscape:stockid="Arrow1Lend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="Arrow1Lend-5"
+ style="overflow:visible">
+ <path
+ id="path3949-4"
+ d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
+ style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
+ transform="matrix(-0.8,0,0,-0.8,-10,0)" />
+ </marker>
+ <inkscape:perspective
+ id="perspective4483-6"
+ inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+ inkscape:vp_z="1 : 0.5 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 0.5 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ <marker
+ inkscape:stockid="Arrow1Lend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="Arrow1Lend-52"
+ style="overflow:visible">
+ <path
+ id="path3949-44"
+ d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
+ style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
+ transform="matrix(-0.8,0,0,-0.8,-10,0)" />
+ </marker>
+ <inkscape:perspective
+ id="perspective4524"
+ inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+ inkscape:vp_z="1 : 0.5 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 0.5 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ <marker
+ inkscape:stockid="Arrow1Lend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="Arrow1Lend-0"
+ style="overflow:visible">
+ <path
+ id="path3949-7"
+ d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
+ style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
+ transform="matrix(-0.8,0,0,-0.8,-10,0)" />
+ </marker>
+ <inkscape:perspective
+ id="perspective4946"
+ inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+ inkscape:vp_z="1 : 0.5 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 0.5 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ <inkscape:perspective
+ id="perspective4985"
+ inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+ inkscape:vp_z="1 : 0.5 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 0.5 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ <inkscape:perspective
+ id="perspective5010"
+ inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+ inkscape:vp_z="1 : 0.5 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 0.5 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ <inkscape:perspective
+ id="perspective5254"
+ inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+ inkscape:vp_z="1 : 0.5 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 0.5 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ <marker
+ inkscape:stockid="Arrow1Lend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="Arrow1Lend-0-8"
+ style="overflow:visible">
+ <path
+ id="path3949-7-3"
+ d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
+ style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
+ transform="matrix(-0.8,0,0,-0.8,-10,0)" />
+ </marker>
+ <inkscape:perspective
+ id="perspective5282"
+ inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+ inkscape:vp_z="1 : 0.5 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 0.5 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ <marker
+ inkscape:stockid="Arrow1Lend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="Arrow1Lend-0-9"
+ style="overflow:visible">
+ <path
+ id="path3949-7-9"
+ d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
+ style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
+ transform="matrix(-0.8,0,0,-0.8,-10,0)" />
+ </marker>
+ <inkscape:perspective
+ id="perspective5512"
+ inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+ inkscape:vp_z="1 : 0.5 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 0.5 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ <marker
+ inkscape:stockid="Arrow1Lend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="Arrow1Lend-0-9-9"
+ style="overflow:visible">
+ <path
+ id="path3949-7-9-5"
+ d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
+ style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
+ transform="matrix(-0.8,0,0,-0.8,-10,0)" />
+ </marker>
+ <inkscape:perspective
+ id="perspective5540"
+ inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+ inkscape:vp_z="1 : 0.5 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 0.5 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ <marker
+ inkscape:stockid="Arrow1Lend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="Arrow1Lend-0-9-1"
+ style="overflow:visible">
+ <path
+ id="path3949-7-9-1"
+ d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
+ style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
+ transform="matrix(-0.8,0,0,-0.8,-10,0)" />
+ </marker>
+ <inkscape:perspective
+ id="perspective5568"
+ inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+ inkscape:vp_z="1 : 0.5 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 0.5 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ <marker
+ inkscape:stockid="Arrow1Lend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="Arrow1Lend-0-5"
+ style="overflow:visible">
+ <path
+ id="path3949-7-5"
+ d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
+ style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
+ transform="matrix(-0.8,0,0,-0.8,-10,0)" />
+ </marker>
+ <inkscape:perspective
+ id="perspective5598"
+ inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+ inkscape:vp_z="1 : 0.5 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 0.5 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ <marker
+ inkscape:stockid="Arrow1Lend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="Arrow1Lend-0-6"
+ style="overflow:visible">
+ <path
+ id="path3949-7-7"
+ d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
+ style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
+ transform="matrix(-0.8,0,0,-0.8,-10,0)" />
+ </marker>
+ <inkscape:perspective
+ id="perspective5632"
+ inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+ inkscape:vp_z="1 : 0.5 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 0.5 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ <marker
+ inkscape:stockid="Arrow1Lend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="Arrow1Lend-0-0"
+ style="overflow:visible">
+ <path
+ id="path3949-7-39"
+ d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
+ style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
+ transform="matrix(-0.8,0,0,-0.8,-10,0)" />
+ </marker>
+ <inkscape:perspective
+ id="perspective6084"
+ inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+ inkscape:vp_z="1 : 0.5 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 0.5 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ <marker
+ inkscape:stockid="Arrow1Lend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="Arrow1Lend-0-9-3"
+ style="overflow:visible">
+ <path
+ id="path3949-7-9-6"
+ d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
+ style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
+ transform="matrix(-0.8,0,0,-0.8,-10,0)" />
+ </marker>
+ <inkscape:perspective
+ id="perspective6112"
+ inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+ inkscape:vp_z="1 : 0.5 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 0.5 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ <marker
+ inkscape:stockid="Arrow1Lend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="Arrow1Lend-50"
+ style="overflow:visible">
+ <path
+ id="path3949-64"
+ d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
+ style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
+ transform="matrix(-0.8,0,0,-0.8,-10,0)" />
+ </marker>
+ <inkscape:perspective
+ id="perspective6140"
+ inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+ inkscape:vp_z="1 : 0.5 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 0.5 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ <marker
+ inkscape:stockid="Arrow1Lend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="Arrow1Lend-4"
+ style="overflow:visible">
+ <path
+ id="path3949-3"
+ d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
+ style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
+ transform="matrix(-0.8,0,0,-0.8,-10,0)" />
+ </marker>
+ <inkscape:perspective
+ id="perspective6828"
+ inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+ inkscape:vp_z="1 : 0.5 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 0.5 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ <marker
+ inkscape:stockid="Arrow1Lend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="Arrow1Lend-4-0"
+ style="overflow:visible">
+ <path
+ id="path3949-3-4"
+ d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
+ style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
+ transform="matrix(-0.8,0,0,-0.8,-10,0)" />
+ </marker>
+ </defs>
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageopacity="0.0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="0.7"
+ inkscape:cx="190.40212"
+ inkscape:cy="129.5884"
+ inkscape:document-units="px"
+ inkscape:current-layer="layer1"
+ showgrid="false"
+ inkscape:window-width="1000"
+ inkscape:window-height="704"
+ inkscape:window-x="11"
+ inkscape:window-y="25"
+ inkscape:window-maximized="0" />
+ <metadata
+ id="metadata7">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title />
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <g
+ inkscape:label="Layer 1"
+ inkscape:groupmode="layer"
+ id="layer1"
+ transform="translate(-47.418246,-76.438428)">
+ <text
+ xml:space="preserve"
+ style="font-size:6.46660471px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
+ x="46.783585"
+ y="95.48922"
+ id="text2816"><tspan
+ sodipodi:role="line"
+ id="tspan2818"
+ x="46.783585"
+ y="95.48922">Key event</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:6.46660471px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
+ x="46.783585"
+ y="127.36035"
+ id="text2820"><tspan
+ sodipodi:role="line"
+ id="tspan2822"
+ x="46.783585"
+ y="127.36035">Key event</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:6.46660471px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
+ x="145.80858"
+ y="81.978302"
+ id="text2830"><tspan
+ sodipodi:role="line"
+ id="tspan2832"
+ x="145.80858"
+ y="81.978302">Xib API</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:6.46660471px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
+ x="235.207"
+ y="81.351532"
+ id="text2834"><tspan
+ sodipodi:role="line"
+ id="tspan2836"
+ x="235.207"
+ y="81.351532">IM library</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:6.46660471px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
+ x="133.49124"
+ y="93.73336"
+ id="text2838"><tspan
+ sodipodi:role="line"
+ id="tspan2840"
+ x="133.49124"
+ y="93.73336">XNextEvent</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:6.46660471px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
+ x="133.49124"
+ y="101.95583"
+ id="text2842"><tspan
+ sodipodi:role="line"
+ id="tspan2844"
+ x="133.49124"
+ y="101.95583">XFilterEvent</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:6.46660471px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
+ x="133.49124"
+ y="127.98712"
+ id="text2846"><tspan
+ sodipodi:role="line"
+ id="tspan2848"
+ x="133.49124"
+ y="127.98712">XNextEvent</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:6.46660471px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
+ x="133.49124"
+ y="135.05867"
+ id="text2850"><tspan
+ sodipodi:role="line"
+ id="tspan2852"
+ x="133.49124"
+ y="135.05867">XFilterEvent</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:6.46660471px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
+ x="133.49124"
+ y="214.35158"
+ id="text2854"><tspan
+ sodipodi:role="line"
+ id="tspan2856"
+ x="133.49124"
+ y="214.35158">XNextEvent</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:6.46660471px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
+ x="133.49124"
+ y="222.35785"
+ id="text2858"><tspan
+ sodipodi:role="line"
+ id="tspan2860"
+ x="133.49124"
+ y="222.35785">XFilterEvent(returns False)</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:6.46660471px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
+ x="133.49124"
+ y="231.28792"
+ id="text2862"><tspan
+ sodipodi:role="line"
+ id="tspan2864"
+ x="133.49124"
+ y="231.28792">XmbLookupString</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:6.46660471px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
+ x="131.33569"
+ y="156.61403"
+ id="text2866"><tspan
+ sodipodi:role="line"
+ id="tspan2868"
+ x="131.33569"
+ y="156.61403">XSetICFocus</tspan></text>
+ <path
+ style="fill:none;stroke:#000000;stroke-width:0.63770252px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="M 265.78566,87.858954 266.2312,384.03836"
+ id="path2895"
+ inkscape:connector-type="polyline" />
+ <path
+ style="fill:none;stroke:#000000;stroke-width:0.68468785px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="m 350.18414,88.4268 1.48726,298.16174"
+ id="path2897"
+ inkscape:connector-type="polyline" />
+ <text
+ xml:space="preserve"
+ style="font-size:6.46660471px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
+ x="272.31775"
+ y="101.96278"
+ id="text2899"><tspan
+ sodipodi:role="line"
+ id="tspan2901"
+ x="272.31775"
+ y="101.96278">XIM_FORWARD_EVENT</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:6.46660471px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
+ x="272.31775"
+ y="123.1926"
+ id="text2903"><tspan
+ sodipodi:role="line"
+ id="tspan2905"
+ x="272.31775"
+ y="123.1926">XIM_FORWARD_EVENT</tspan><tspan
+ sodipodi:role="line"
+ x="272.31775"
+ y="131.27585"
+ id="tspan2907">or XIM_COMMIT</tspan><tspan
+ sodipodi:role="line"
+ x="272.31775"
+ y="139.35912"
+ id="tspan2909">(synchronous)</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:6.46660471px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
+ x="272.31775"
+ y="160.72026"
+ id="text2911"><tspan
+ sodipodi:role="line"
+ id="tspan2913"
+ x="272.31775"
+ y="160.72026">XIM_FORWARD_EVENT</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:6.46660471px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
+ x="292.59851"
+ y="175.99501"
+ id="text2915"><tspan
+ sodipodi:role="line"
+ id="tspan2917"
+ x="292.59851"
+ y="175.99501">XIM_SYNC</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:6.46660471px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
+ x="281.20618"
+ y="197.76923"
+ id="text2919"><tspan
+ sodipodi:role="line"
+ id="tspan2921"
+ x="281.20618"
+ y="197.76923">XIM_SYNC_REPLY</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:6.46660471px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
+ x="272.31302"
+ y="218.45467"
+ id="text2923"><tspan
+ sodipodi:role="line"
+ id="tspan2925"
+ x="272.31302"
+ y="218.45467">XIM_SET_IC_FOCUS is</tspan><tspan
+ sodipodi:role="line"
+ x="272.31302"
+ y="226.53792"
+ id="tspan2927">pend because another </tspan><tspan
+ sodipodi:role="line"
+ x="272.31302"
+ y="234.62119"
+ id="tspan2929">sync cycle is started</tspan><tspan
+ sodipodi:role="line"
+ x="272.31302"
+ y="242.70444"
+ id="tspan2931">by XIM_COMMIT</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:6.46660471px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
+ x="277.69659"
+ y="260.37003"
+ id="text2933"><tspan
+ sodipodi:role="line"
+ id="tspan2935"
+ x="277.69659"
+ y="260.37003">XIM_SET_IC_FOCUS</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:6.46660471px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
+ x="272.31775"
+ y="302.28534"
+ id="text2937"><tspan
+ sodipodi:role="line"
+ id="tspan2939"
+ x="272.31775"
+ y="302.28534">XIM_SYNC_REPLY as</tspan><tspan
+ sodipodi:role="line"
+ x="272.31775"
+ y="310.36859"
+ id="tspan2941">a reply of the </tspan><tspan
+ sodipodi:role="line"
+ x="272.31775"
+ y="318.45184"
+ id="tspan2943">XIM_FORWARD_EVENT</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:6.46660471px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
+ x="277.69659"
+ y="346.37805"
+ id="text2945"><tspan
+ sodipodi:role="line"
+ id="tspan2947"
+ x="277.69659"
+ y="346.37805">XIM_SET_IC_FOCUS</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:6.46660471px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
+ x="272.31775"
+ y="376.79626"
+ id="text2949"><tspan
+ sodipodi:role="line"
+ id="tspan2951"
+ x="272.31775"
+ y="376.79626">XIM_FORWARD_EVENT</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:6.46660471px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
+ x="347.37851"
+ y="81.921471"
+ id="text2953"><tspan
+ sodipodi:role="line"
+ id="tspan2955"
+ x="347.37851"
+ y="81.921471">IM Server</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:6.46660471px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
+ x="358.27658"
+ y="119.92648"
+ id="text2957"><tspan
+ sodipodi:role="line"
+ id="tspan2959"
+ x="358.27658"
+ y="119.92648">synchronous</tspan><tspan
+ sodipodi:role="line"
+ x="358.27658"
+ y="128.00974"
+ id="tspan2961">request</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:6.46660471px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
+ x="357.9924"
+ y="153.67647"
+ id="text2963"><tspan
+ sodipodi:role="line"
+ id="tspan2965"
+ x="357.9924"
+ y="153.67647">Pending</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:6.46660471px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
+ x="358.07132"
+ y="272.28015"
+ id="text2967"><tspan
+ sodipodi:role="line"
+ id="tspan2969"
+ x="358.07132"
+ y="272.28015">processed</tspan><tspan
+ sodipodi:role="line"
+ x="358.07132"
+ y="280.3634"
+ id="tspan2971">(The focused</tspan><tspan
+ sodipodi:role="line"
+ x="358.07132"
+ y="288.44666"
+ id="tspan2973">IC is changed)</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:6.46660471px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
+ x="358.03976"
+ y="300.10788"
+ id="text2975"><tspan
+ sodipodi:role="line"
+ id="tspan2977"
+ x="358.03976"
+ y="300.10788">processed</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:6.46660471px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
+ x="358.03976"
+ y="332.33426"
+ id="text2979"><tspan
+ sodipodi:role="line"
+ id="tspan2981"
+ x="358.03976"
+ y="332.33426">processed</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:6.46660471px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
+ x="358.03976"
+ y="356.72079"
+ id="text2983"><tspan
+ sodipodi:role="line"
+ id="tspan2985"
+ x="358.03976"
+ y="356.72079">processed</tspan></text>
+ <path
+ style="fill:none;stroke:#000000;stroke-width:0.53888369px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow1Lend);display:inline"
+ d="m 264.36299,105.03516 79.29289,9.23801"
+ id="path2987"
+ inkscape:connector-type="polyline" />
+ <path
+ style="fill:none;stroke:#000000;stroke-width:0.53888369px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow1Lend);display:inline"
+ d="m 268.13518,142.12302 79.29289,9.23801"
+ id="path2987-1"
+ inkscape:connector-type="polyline" />
+ <path
+ style="fill:none;stroke:#000000;stroke-width:0.53888369px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow1Lend);display:inline"
+ d="m 269.52088,163.9863 79.29289,9.23801"
+ id="path2987-1-9"
+ inkscape:connector-type="polyline" />
+ <path
+ style="fill:none;stroke:#000000;stroke-width:0.53888369px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow1Lend);display:inline"
+ d="m 269.05898,262.06314 79.29289,9.238"
+ id="path2987-1-9-7"
+ inkscape:connector-type="polyline" />
+ <path
+ style="fill:none;stroke:#000000;stroke-width:0.53888369px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow1Lend);display:inline"
+ d="m 270.13675,321.80224 79.29289,9.23801"
+ id="path2987-1-9-7-2"
+ inkscape:connector-type="polyline" />
+ <path
+ style="fill:none;stroke:#000000;stroke-width:0.53888369px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow1Lend);display:inline"
+ d="m 270.13675,348.74643 79.29289,9.23801"
+ id="path2987-1-9-7-1"
+ inkscape:connector-type="polyline" />
+ <path
+ style="fill:none;stroke:#000000;stroke-width:0.53888369px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow1Lend);display:inline"
+ d="m 269.82882,357.06063 79.29289,9.23801"
+ id="path2987-1-9-7-1-2"
+ inkscape:connector-type="polyline" />
+ <path
+ style="fill:none;stroke:#000000;stroke-width:0.53888369px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow1Lend-0)"
+ d="m 341.34638,128.13018 -71.59455,48.49953"
+ id="path4544"
+ inkscape:connector-type="polyline" />
+ <text
+ xml:space="preserve"
+ style="font-size:6.46660471px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
+ x="133.49124"
+ y="264.28122"
+ id="text2866-5"><tspan
+ sodipodi:role="line"
+ id="tspan2868-5"
+ x="133.49124"
+ y="264.28122">XSetICFocus</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:6.46660471px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
+ x="214.78569"
+ y="171.39485"
+ id="text4963"><tspan
+ sodipodi:role="line"
+ id="tspan4965"
+ x="214.78569"
+ y="171.39485">Pending until</tspan><tspan
+ sodipodi:role="line"
+ x="214.78569"
+ y="179.4781"
+ id="tspan4967">sync cycle is </tspan><tspan
+ sodipodi:role="line"
+ x="214.78569"
+ y="187.56137"
+ id="tspan4969">done</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:6.46660471px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
+ x="47.269844"
+ y="147.68396"
+ id="text4971"><tspan
+ sodipodi:role="line"
+ id="tspan4973"
+ x="47.269844"
+ y="147.68396">Button press causes</tspan><tspan
+ sodipodi:role="line"
+ x="47.269844"
+ y="155.76721"
+ id="tspan4975">focus change</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:6.46660471px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
+ x="58.639027"
+ y="305.18289"
+ id="text2820-7"><tspan
+ sodipodi:role="line"
+ id="tspan2822-8"
+ x="58.639027"
+ y="305.18289">Key event</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:6.46660471px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
+ x="141.03561"
+ y="303.50015"
+ id="text2846-4"><tspan
+ sodipodi:role="line"
+ id="tspan2848-7"
+ x="141.03561"
+ y="303.50015">XNextEvent</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:6.46660471px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
+ x="141.03561"
+ y="312.12228"
+ id="text2850-0"><tspan
+ sodipodi:role="line"
+ id="tspan2852-5"
+ x="141.03561"
+ y="312.12228">XFilterEvent</tspan></text>
+ <path
+ style="fill:none;stroke:#000000;stroke-width:0.53888369px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow1Lend-0);display:inline"
+ d="M 81.199995,92.94869 124.20402,92.404331"
+ id="path5048"
+ inkscape:connector-type="polyline" />
+ <path
+ style="fill:none;stroke:#000000;stroke-width:0.53888369px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow1Lend-0);display:inline"
+ d="m 83.759014,126.12468 43.004026,-0.54436"
+ id="path5048-6"
+ inkscape:connector-type="polyline" />
+ <path
+ style="fill:none;stroke:#000000;stroke-width:0.47733891px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow1Lend-0);display:inline"
+ d="m 93.961564,154.29857 33.267186,-0.55213"
+ id="path5048-6-8"
+ inkscape:connector-type="polyline" />
+ <path
+ style="fill:none;stroke:#000000;stroke-width:0.53888369px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow1Lend-0-9);display:inline"
+ d="m 174.28465,99.364052 87.64112,4.899188"
+ id="path5302"
+ inkscape:connector-type="polyline" />
+ <path
+ style="fill:none;stroke:#000000;stroke-width:0.53888369px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow1Lend-0-9)"
+ d="m 173.9906,134.66938 87.64111,6.53226"
+ id="path5302-2"
+ inkscape:connector-type="polyline" />
+ <path
+ style="fill:none;stroke:#000000;stroke-width:0.53888369px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow1Lend-0-9)"
+ d="m 173.30399,155.50805 87.64112,6.53226"
+ id="path5302-2-7"
+ inkscape:connector-type="polyline" />
+ <path
+ style="fill:none;stroke:#000000;stroke-width:0.53888369px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow1Lend-0);display:inline"
+ d="m 349.43674,176.36427 -78.8013,16.6288"
+ id="path4544-3"
+ inkscape:connector-type="polyline" />
+ <path
+ style="fill:none;stroke:#000000;stroke-width:0.53888369px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow1Lend-0);display:inline"
+ d="m 264.3103,194.20137 -78.8013,16.6288"
+ id="path4544-3-2"
+ inkscape:connector-type="polyline" />
+ <text
+ xml:space="preserve"
+ style="font-size:6.46660471px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
+ x="56.236271"
+ y="254.34102"
+ id="text5618"><tspan
+ sodipodi:role="line"
+ id="tspan5620"
+ x="56.236271"
+ y="254.34102">Application moves</tspan><tspan
+ sodipodi:role="line"
+ x="56.236271"
+ y="262.42429"
+ id="tspan5622">the focus</tspan></text>
+ <path
+ style="fill:none;stroke:#000000;stroke-width:0.47733891px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-start:url(#Arrow1Lstart);marker-end:none;display:inline"
+ d="m 97.227685,228.25112 33.267185,-0.55213"
+ id="path5048-6-8-8"
+ inkscape:connector-type="polyline" />
+ <path
+ style="fill:none;stroke:#000000;stroke-width:0.53888369px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow1Lend-0-9);display:inline"
+ d="m 180.54474,262.43681 84.64716,-0.31069"
+ id="path5302-2-7-2"
+ inkscape:connector-type="polyline" />
+ <path
+ style="fill:none;stroke:#000000;stroke-width:0.53888369px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow1Lend);display:inline"
+ d="m 182.81773,303.5919 78.56369,15.14712"
+ id="path2987-1-9-7-1-0"
+ inkscape:connector-type="polyline" />
+ <path
+ style="fill:none;stroke:#000000;stroke-width:0.53888369px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow1Lend);display:inline"
+ d="m 182.83763,311.31095 79.08814,42.81112"
+ id="path2987-1-9-7-1-0-3"
+ inkscape:connector-type="polyline" />
+ <path
+ style="fill:none;stroke:#000000;stroke-width:0.5115177px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow1Lend-4)"
+ d="m 258.76887,219.70748 c -40.77117,71.79102 -0.10897,119.38886 0,119.51377 l 2.18035,2.44906"
+ id="path6164"
+ sodipodi:nodetypes="ccc" />
+ <path
+ style="fill:none;stroke:#000000;stroke-width:0.6913743px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow1Lend-4)"
+ d="m 400.28515,175.83598 c 61.64296,86.74506 0.16474,144.25751 0,144.40845 l -3.84089,2.9592"
+ id="path6164-3"
+ sodipodi:nodetypes="ccc" />
+ <text
+ xml:space="preserve"
+ style="font-size:6.46660471px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
+ x="360.99832"
+ y="175.02936"
+ id="text6848"><tspan
+ sodipodi:role="line"
+ id="tspan6850"
+ x="360.99832"
+ y="175.02936">Pending</tspan></text>
+ </g>
+</svg>
diff --git a/libX11/specs/XIM/staticflow.svg b/libX11/specs/XIM/staticflow.svg
index 43f536425..3a50dde81 100644
--- a/libX11/specs/XIM/staticflow.svg
+++ b/libX11/specs/XIM/staticflow.svg
@@ -1,278 +1,278 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="575.96063"
- height="263.90292"
- id="svg2"
- version="1.1"
- inkscape:version="0.47 r22583"
- sodipodi:docname="staticflow.svg">
- <defs
- id="defs4">
- <marker
- inkscape:stockid="Arrow1Lend"
- orient="auto"
- refY="0"
- refX="0"
- id="Arrow1Lend"
- style="overflow:visible">
- <path
- id="path3695"
- d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
- style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
- transform="matrix(-0.8,0,0,-0.8,-10,0)" />
- </marker>
- <inkscape:perspective
- sodipodi:type="inkscape:persp3d"
- inkscape:vp_x="0 : 526.18109 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="744.09448 : 526.18109 : 1"
- inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
- id="perspective10" />
- </defs>
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="0.7"
- inkscape:cx="217.60452"
- inkscape:cy="127.64289"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="false"
- units="pt"
- inkscape:window-width="551"
- inkscape:window-height="483"
- inkscape:window-x="0"
- inkscape:window-y="262"
- inkscape:window-maximized="0" />
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(-21.177732,-766.10217)">
- <text
- xml:space="preserve"
- style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
- x="120"
- y="775.21936"
- id="text2816"><tspan
- sodipodi:role="line"
- id="tspan2818"
- x="120"
- y="775.21936">IM Library</tspan></text>
- <text
- xml:space="preserve"
- style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
- x="362.28571"
- y="775.79077"
- id="text2820"><tspan
- sodipodi:role="line"
- id="tspan2822"
- x="362.28571"
- y="775.79077">IM Server</tspan></text>
- <text
- xml:space="preserve"
- style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
- x="19.999998"
- y="825.79077"
- id="text2824"><tspan
- sodipodi:role="line"
- id="tspan2826"
- x="19.999998"
- y="825.79077">Keys in the on-key-list</tspan></text>
- <text
- xml:space="preserve"
- style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
- x="22.571426"
- y="871.21936"
- id="text2828"><tspan
- sodipodi:role="line"
- id="tspan2830"
- x="22.571426"
- y="871.21936">event mask is changed</tspan><tspan
- sodipodi:role="line"
- x="22.571426"
- y="886.21936"
- id="tspan2832">to deselect the event</tspan></text>
- <text
- xml:space="preserve"
- style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
- x="31.14286"
- y="993.21936"
- id="text2834"><tspan
- sodipodi:role="line"
- id="tspan2836"
- x="31.14286"
- y="993.21936">event mask is changed</tspan><tspan
- sodipodi:role="line"
- x="31.14286"
- y="1008.2194"
- id="tspan2838">to select the event</tspan></text>
- <text
- xml:space="preserve"
- style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
- x="208.14133"
- y="832.36218"
- id="text2840"><tspan
- sodipodi:role="line"
- id="tspan2842"
- x="208.14133"
- y="832.36218">XIM_FORWARD_EVENT</tspan></text>
- <text
- xml:space="preserve"
- style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
- x="192.85715"
- y="863.79077"
- id="text2844"><tspan
- sodipodi:role="line"
- id="tspan2846"
- x="192.85715"
- y="863.79077">XIM_EXT_SET_EVENT_MASK</tspan></text>
- <text
- xml:space="preserve"
- style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
- x="206.84494"
- y="876.07648"
- id="text2848"><tspan
- sodipodi:role="line"
- id="tspan2850"
- x="206.84494"
- y="876.07648"
- style="font-size:10px">intercept-event-mask is set</tspan></text>
- <text
- xml:space="preserve"
- style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
- x="192.85715"
- y="994.36218"
- id="text2852"><tspan
- sodipodi:role="line"
- id="tspan2854"
- x="192.85715"
- y="994.36218">XIM_EXT_SET_EVENT_MASK</tspan></text>
- <text
- xml:space="preserve"
- style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
- x="214.70139"
- y="1007.5051"
- id="text2856"><tspan
- sodipodi:role="line"
- id="tspan2858"
- x="214.70139"
- y="1007.5051"
- style="font-size:10px">select-event-mask is set</tspan></text>
- <text
- xml:space="preserve"
- style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
- x="419.71429"
- y="875.21936"
- id="text2860"><tspan
- sodipodi:role="line"
- id="tspan2862"
- x="419.71429"
- y="875.21936">event mask is changed</tspan><tspan
- sodipodi:role="line"
- x="419.71429"
- y="890.21936"
- id="tspan2864">to select the event</tspan></text>
- <text
- xml:space="preserve"
- style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
- x="418.85712"
- y="925.21936"
- id="text2866"><tspan
- sodipodi:role="line"
- id="tspan2868"
- x="418.85712"
- y="925.21936">X events directly come</tspan><tspan
- sodipodi:role="line"
- x="418.85712"
- y="940.21936"
- id="tspan2870">to the IM Server</tspan></text>
- <text
- xml:space="preserve"
- style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
- x="422.85712"
- y="964.07648"
- id="text2872"><tspan
- sodipodi:role="line"
- id="tspan2874"
- x="422.85712"
- y="964.07648">when preediting is turned off</tspan></text>
- <text
- xml:space="preserve"
- style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
- x="423.42859"
- y="996.64789"
- id="text2876"><tspan
- sodipodi:role="line"
- id="tspan2878"
- x="423.42859"
- y="996.64789">event mask is changed</tspan><tspan
- sodipodi:role="line"
- x="423.42859"
- y="1011.6479"
- id="tspan2880">to deselect the event</tspan></text>
- <path
- style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
- d="m 181.42857,780.93364 c 0,239.99996 0,248.57146 0,248.57146"
- id="path2882" />
- <path
- style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
- d="m 367.14286,783.21935 c 0,244.28575 0,242.85715 0,242.85715"
- id="path2884" />
- <path
- style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-start:none;marker-end:url(#Arrow1Lend)"
- d="m 92.857143,77.142857 79.999997,0"
- id="path2886"
- transform="translate(0,752.36221)"
- inkscape:connector-type="polyline" />
- <path
- style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow1Lend)"
- d="m 192.85714,82.857143 162.85715,1.428571"
- id="path2888"
- transform="translate(0,752.36221)"
- inkscape:connector-type="polyline" />
- <path
- style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow1Lend)"
- d="m 352.85714,94.285714 -160,1.428572"
- id="path2890"
- transform="translate(0,752.36221)"
- inkscape:connector-type="polyline" />
- <path
- style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow1Lend);display:inline"
- d="m 335.71429,220 -138.57143,0"
- id="path2892"
- transform="translate(0,752.36221)"
- inkscape:connector-type="polyline" />
- <path
- style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow1Lend)"
- d="m 472.85714,154.28571 -58.57143,-1.42857"
- id="path2915"
- transform="translate(0,752.36221)"
- inkscape:connector-type="polyline" />
- </g>
-</svg>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ width="575.96063"
+ height="263.90292"
+ id="svg2"
+ version="1.1"
+ inkscape:version="0.47 r22583"
+ sodipodi:docname="staticflow.svg">
+ <defs
+ id="defs4">
+ <marker
+ inkscape:stockid="Arrow1Lend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="Arrow1Lend"
+ style="overflow:visible">
+ <path
+ id="path3695"
+ d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
+ style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
+ transform="matrix(-0.8,0,0,-0.8,-10,0)" />
+ </marker>
+ <inkscape:perspective
+ sodipodi:type="inkscape:persp3d"
+ inkscape:vp_x="0 : 526.18109 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_z="744.09448 : 526.18109 : 1"
+ inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+ id="perspective10" />
+ </defs>
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageopacity="0.0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="0.7"
+ inkscape:cx="217.60452"
+ inkscape:cy="127.64289"
+ inkscape:document-units="px"
+ inkscape:current-layer="layer1"
+ showgrid="false"
+ units="pt"
+ inkscape:window-width="551"
+ inkscape:window-height="483"
+ inkscape:window-x="0"
+ inkscape:window-y="262"
+ inkscape:window-maximized="0" />
+ <metadata
+ id="metadata7">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title></dc:title>
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <g
+ inkscape:label="Layer 1"
+ inkscape:groupmode="layer"
+ id="layer1"
+ transform="translate(-21.177732,-766.10217)">
+ <text
+ xml:space="preserve"
+ style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
+ x="120"
+ y="775.21936"
+ id="text2816"><tspan
+ sodipodi:role="line"
+ id="tspan2818"
+ x="120"
+ y="775.21936">IM Library</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
+ x="362.28571"
+ y="775.79077"
+ id="text2820"><tspan
+ sodipodi:role="line"
+ id="tspan2822"
+ x="362.28571"
+ y="775.79077">IM Server</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
+ x="19.999998"
+ y="825.79077"
+ id="text2824"><tspan
+ sodipodi:role="line"
+ id="tspan2826"
+ x="19.999998"
+ y="825.79077">Keys in the on-key-list</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
+ x="22.571426"
+ y="871.21936"
+ id="text2828"><tspan
+ sodipodi:role="line"
+ id="tspan2830"
+ x="22.571426"
+ y="871.21936">event mask is changed</tspan><tspan
+ sodipodi:role="line"
+ x="22.571426"
+ y="886.21936"
+ id="tspan2832">to deselect the event</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
+ x="31.14286"
+ y="993.21936"
+ id="text2834"><tspan
+ sodipodi:role="line"
+ id="tspan2836"
+ x="31.14286"
+ y="993.21936">event mask is changed</tspan><tspan
+ sodipodi:role="line"
+ x="31.14286"
+ y="1008.2194"
+ id="tspan2838">to select the event</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
+ x="208.14133"
+ y="832.36218"
+ id="text2840"><tspan
+ sodipodi:role="line"
+ id="tspan2842"
+ x="208.14133"
+ y="832.36218">XIM_FORWARD_EVENT</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
+ x="192.85715"
+ y="863.79077"
+ id="text2844"><tspan
+ sodipodi:role="line"
+ id="tspan2846"
+ x="192.85715"
+ y="863.79077">XIM_EXT_SET_EVENT_MASK</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
+ x="206.84494"
+ y="876.07648"
+ id="text2848"><tspan
+ sodipodi:role="line"
+ id="tspan2850"
+ x="206.84494"
+ y="876.07648"
+ style="font-size:10px">intercept-event-mask is set</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
+ x="192.85715"
+ y="994.36218"
+ id="text2852"><tspan
+ sodipodi:role="line"
+ id="tspan2854"
+ x="192.85715"
+ y="994.36218">XIM_EXT_SET_EVENT_MASK</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
+ x="214.70139"
+ y="1007.5051"
+ id="text2856"><tspan
+ sodipodi:role="line"
+ id="tspan2858"
+ x="214.70139"
+ y="1007.5051"
+ style="font-size:10px">select-event-mask is set</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
+ x="419.71429"
+ y="875.21936"
+ id="text2860"><tspan
+ sodipodi:role="line"
+ id="tspan2862"
+ x="419.71429"
+ y="875.21936">event mask is changed</tspan><tspan
+ sodipodi:role="line"
+ x="419.71429"
+ y="890.21936"
+ id="tspan2864">to select the event</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
+ x="418.85712"
+ y="925.21936"
+ id="text2866"><tspan
+ sodipodi:role="line"
+ id="tspan2868"
+ x="418.85712"
+ y="925.21936">X events directly come</tspan><tspan
+ sodipodi:role="line"
+ x="418.85712"
+ y="940.21936"
+ id="tspan2870">to the IM Server</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
+ x="422.85712"
+ y="964.07648"
+ id="text2872"><tspan
+ sodipodi:role="line"
+ id="tspan2874"
+ x="422.85712"
+ y="964.07648">when preediting is turned off</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
+ x="423.42859"
+ y="996.64789"
+ id="text2876"><tspan
+ sodipodi:role="line"
+ id="tspan2878"
+ x="423.42859"
+ y="996.64789">event mask is changed</tspan><tspan
+ sodipodi:role="line"
+ x="423.42859"
+ y="1011.6479"
+ id="tspan2880">to deselect the event</tspan></text>
+ <path
+ style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="m 181.42857,780.93364 c 0,239.99996 0,248.57146 0,248.57146"
+ id="path2882" />
+ <path
+ style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="m 367.14286,783.21935 c 0,244.28575 0,242.85715 0,242.85715"
+ id="path2884" />
+ <path
+ style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-start:none;marker-end:url(#Arrow1Lend)"
+ d="m 92.857143,77.142857 79.999997,0"
+ id="path2886"
+ transform="translate(0,752.36221)"
+ inkscape:connector-type="polyline" />
+ <path
+ style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow1Lend)"
+ d="m 192.85714,82.857143 162.85715,1.428571"
+ id="path2888"
+ transform="translate(0,752.36221)"
+ inkscape:connector-type="polyline" />
+ <path
+ style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow1Lend)"
+ d="m 352.85714,94.285714 -160,1.428572"
+ id="path2890"
+ transform="translate(0,752.36221)"
+ inkscape:connector-type="polyline" />
+ <path
+ style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow1Lend);display:inline"
+ d="m 335.71429,220 -138.57143,0"
+ id="path2892"
+ transform="translate(0,752.36221)"
+ inkscape:connector-type="polyline" />
+ <path
+ style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow1Lend)"
+ d="m 472.85714,154.28571 -58.57143,-1.42857"
+ id="path2915"
+ transform="translate(0,752.36221)"
+ inkscape:connector-type="polyline" />
+ </g>
+</svg>
diff --git a/libX11/specs/XIM/staticflowsampleseq.svg b/libX11/specs/XIM/staticflowsampleseq.svg
index 3b49716ff..a0e8629d4 100644
--- a/libX11/specs/XIM/staticflowsampleseq.svg
+++ b/libX11/specs/XIM/staticflowsampleseq.svg
@@ -1,400 +1,400 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="502.63379"
- height="290.44269"
- id="svg4341"
- version="1.1"
- inkscape:version="0.47 r22583"
- sodipodi:docname="staticflowsampleseq.svg">
- <defs
- id="defs4343">
- <inkscape:perspective
- sodipodi:type="inkscape:persp3d"
- inkscape:vp_x="0 : 526.18109 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="744.09448 : 526.18109 : 1"
- inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
- id="perspective4349" />
- <inkscape:perspective
- id="perspective4272"
- inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
- inkscape:vp_z="1 : 0.5 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_x="0 : 0.5 : 1"
- sodipodi:type="inkscape:persp3d" />
- <marker
- inkscape:stockid="Arrow1Lend"
- orient="auto"
- refY="0"
- refX="0"
- id="Arrow1Lend"
- style="overflow:visible">
- <path
- id="path3695"
- d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
- style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
- transform="matrix(-0.8,0,0,-0.8,-10,0)" />
- </marker>
- <marker
- inkscape:stockid="Arrow1Lend"
- orient="auto"
- refY="0"
- refX="0"
- id="marker4278"
- style="overflow:visible">
- <path
- id="path4280"
- d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
- style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
- transform="matrix(-0.8,0,0,-0.8,-10,0)" />
- </marker>
- <marker
- inkscape:stockid="Arrow1Lend"
- orient="auto"
- refY="0"
- refX="0"
- id="marker4282"
- style="overflow:visible">
- <path
- id="path4284"
- d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
- style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
- transform="matrix(-0.8,0,0,-0.8,-10,0)" />
- </marker>
- <marker
- inkscape:stockid="Arrow1Lend"
- orient="auto"
- refY="0"
- refX="0"
- id="marker4286"
- style="overflow:visible">
- <path
- id="path4288"
- d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
- style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
- transform="matrix(-0.8,0,0,-0.8,-10,0)" />
- </marker>
- <marker
- inkscape:stockid="Arrow1Lend"
- orient="auto"
- refY="0"
- refX="0"
- id="marker4290"
- style="overflow:visible">
- <path
- id="path4292"
- d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
- style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
- transform="matrix(-0.8,0,0,-0.8,-10,0)" />
- </marker>
- <marker
- inkscape:stockid="Arrow1Lend"
- orient="auto"
- refY="0"
- refX="0"
- id="marker4294"
- style="overflow:visible">
- <path
- id="path4296"
- d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
- style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
- transform="matrix(-0.8,0,0,-0.8,-10,0)" />
- </marker>
- <inkscape:perspective
- id="perspective2877"
- inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
- inkscape:vp_z="1 : 0.5 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_x="0 : 0.5 : 1"
- sodipodi:type="inkscape:persp3d" />
- <marker
- inkscape:stockid="Arrow1Lend"
- orient="auto"
- refY="0"
- refX="0"
- id="Arrow1Lend-3"
- style="overflow:visible">
- <path
- id="path3695-7"
- d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
- style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
- transform="matrix(-0.8,0,0,-0.8,-10,0)" />
- </marker>
- <inkscape:perspective
- id="perspective2905"
- inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
- inkscape:vp_z="1 : 0.5 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_x="0 : 0.5 : 1"
- sodipodi:type="inkscape:persp3d" />
- <marker
- inkscape:stockid="Arrow1Lend"
- orient="auto"
- refY="0"
- refX="0"
- id="Arrow1Lend-31"
- style="overflow:visible">
- <path
- id="path3695-4"
- d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
- style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
- transform="matrix(-0.8,0,0,-0.8,-10,0)" />
- </marker>
- </defs>
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="0.7"
- inkscape:cx="310.98032"
- inkscape:cy="88.727691"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="false"
- inkscape:window-width="677"
- inkscape:window-height="660"
- inkscape:window-x="0"
- inkscape:window-y="25"
- inkscape:window-maximized="0" />
- <metadata
- id="metadata4346">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(-64.019684,-330.64719)">
- <text
- xml:space="preserve"
- style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
- x="162.84195"
- y="339.76437"
- id="text2816"><tspan
- sodipodi:role="line"
- id="tspan2818"
- x="162.84195"
- y="339.76437">IM Library</tspan></text>
- <text
- xml:space="preserve"
- style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
- x="405.12766"
- y="340.33578"
- id="text2820"><tspan
- sodipodi:role="line"
- id="tspan2822"
- x="405.12766"
- y="340.33578">IM Server</tspan></text>
- <text
- xml:space="preserve"
- style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
- x="62.841949"
- y="390.33578"
- id="text2824"><tspan
- sodipodi:role="line"
- id="tspan2826"
- x="62.841949"
- y="390.33578">Keys in the on-key-list</tspan></text>
- <text
- xml:space="preserve"
- style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
- x="235.6991"
- y="428.33578"
- id="text2844"><tspan
- sodipodi:role="line"
- id="tspan2846"
- x="235.6991"
- y="428.33578">XIM_EXT_SET_EVENT_MASK</tspan></text>
- <text
- xml:space="preserve"
- style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
- x="249.68689"
- y="440.62149"
- id="text2848"><tspan
- sodipodi:role="line"
- id="tspan2850"
- x="249.68689"
- y="440.62149"
- style="font-size:10px">intercept-event-mask is set</tspan></text>
- <text
- xml:space="preserve"
- style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
- x="235.6991"
- y="556.90723"
- id="text2852"><tspan
- sodipodi:role="line"
- id="tspan2854"
- x="235.6991"
- y="556.90723">XIM_EXT_SET_EVENT_MASK</tspan></text>
- <text
- xml:space="preserve"
- style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
- x="257.54333"
- y="570.05017"
- id="text2856"><tspan
- sodipodi:role="line"
- id="tspan2858"
- x="257.54333"
- y="570.05017"
- style="font-size:10px">select-event-mask is set</tspan></text>
- <path
- style="fill:none;stroke:#000000;stroke-width:1.05025411px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
- d="m 224.27052,345.53018 c 0,264.72805 0,274.18271 0,274.18271"
- id="path2882" />
- <path
- style="fill:none;stroke:#000000;stroke-width:1.05972767px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
- d="m 409.98481,347.82588 c 0,274.33848 0,272.73413 0,272.73413"
- id="path2884" />
- <path
- style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-start:none;marker-end:url(#Arrow1Lend)"
- d="m 135.6991,394.05008 79.99999,0"
- id="path2886"
- inkscape:connector-type="polyline" />
- <path
- style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow1Lend)"
- d="m 235.69909,399.76437 162.85715,1.42857"
- id="path2888"
- inkscape:connector-type="polyline" />
- <path
- style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow1Lend)"
- d="m 395.69909,411.19294 -160,1.42857"
- id="path2890"
- inkscape:connector-type="polyline" />
- <text
- xml:space="preserve"
- style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
- x="245.44826"
- y="392.26437"
- id="text2854"><tspan
- sodipodi:role="line"
- id="tspan2856"
- x="245.44826"
- y="392.26437">XIM_FORWARD_EVENT</tspan></text>
- <path
- style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow1Lend)"
- d="m 391.16254,531.97868 -150,-1.42858"
- id="path3892"
- inkscape:connector-type="polyline" />
- <path
- style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow1Lend)"
- d="m 495.16254,523.40725 -68.57143,-1.42857"
- id="path3894"
- inkscape:connector-type="polyline" />
- <text
- xml:space="preserve"
- style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
- x="80.571426"
- y="444.21933"
- id="text4489"><tspan
- sodipodi:role="line"
- id="tspan4491"
- x="80.571426"
- y="444.21933">the specified events</tspan><tspan
- sodipodi:role="line"
- x="80.571426"
- y="459.21933"
- id="tspan4493">are being filtered</tspan></text>
- <text
- xml:space="preserve"
- style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
- x="76.571426"
- y="517.36218"
- id="text4495"><tspan
- sodipodi:role="line"
- id="tspan4497"
- x="76.571426"
- y="517.36218">Keys in the off-key-list</tspan></text>
- <text
- xml:space="preserve"
- style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
- x="71.428574"
- y="596.79077"
- id="text4499"><tspan
- sodipodi:role="line"
- id="tspan4501"
- x="71.428574"
- y="596.79077">the specified events</tspan><tspan
- sodipodi:role="line"
- x="71.428574"
- y="611.79077"
- id="tspan4503">are being processed</tspan></text>
- <text
- xml:space="preserve"
- style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
- x="434.57144"
- y="394.64789"
- id="text4505"><tspan
- sodipodi:role="line"
- id="tspan4507"
- x="434.57144"
- y="394.64789">Keys in the on-key-list</tspan></text>
- <text
- xml:space="preserve"
- style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
- x="435.42691"
- y="444.21933"
- id="text4513"><tspan
- sodipodi:role="line"
- id="tspan4515"
- x="435.42691"
- y="444.21933">the specified events</tspan><tspan
- sodipodi:role="line"
- x="435.42691"
- y="459.21933"
- id="tspan4517">are being processed</tspan></text>
- <text
- xml:space="preserve"
- style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
- x="434.57144"
- y="517.36218"
- id="text4519"><tspan
- sodipodi:role="line"
- id="tspan4521"
- x="434.57144"
- y="517.36218">Keys in the off-key-list</tspan></text>
- <text
- xml:space="preserve"
- style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
- x="435.42691"
- y="596.79077"
- id="text4523"><tspan
- sodipodi:role="line"
- id="tspan4525"
- x="435.42691"
- y="596.79077">the specified events</tspan><tspan
- sodipodi:role="line"
- x="435.42691"
- y="611.79077"
- id="tspan4527">are being discarded</tspan></text>
- <path
- style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow1Lend)"
- d="m 488.85714,401.78486 -68.57143,-1.42857"
- id="path3894-2"
- inkscape:connector-type="polyline" />
- <path
- style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-start:none;marker-end:url(#Arrow1Lend)"
- d="m 131.14286,526.6479 79.99999,0"
- id="path2886-9"
- inkscape:connector-type="polyline" />
- </g>
-</svg>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ width="502.63379"
+ height="290.44269"
+ id="svg4341"
+ version="1.1"
+ inkscape:version="0.47 r22583"
+ sodipodi:docname="staticflowsampleseq.svg">
+ <defs
+ id="defs4343">
+ <inkscape:perspective
+ sodipodi:type="inkscape:persp3d"
+ inkscape:vp_x="0 : 526.18109 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_z="744.09448 : 526.18109 : 1"
+ inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+ id="perspective4349" />
+ <inkscape:perspective
+ id="perspective4272"
+ inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+ inkscape:vp_z="1 : 0.5 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 0.5 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ <marker
+ inkscape:stockid="Arrow1Lend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="Arrow1Lend"
+ style="overflow:visible">
+ <path
+ id="path3695"
+ d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
+ style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
+ transform="matrix(-0.8,0,0,-0.8,-10,0)" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow1Lend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="marker4278"
+ style="overflow:visible">
+ <path
+ id="path4280"
+ d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
+ style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
+ transform="matrix(-0.8,0,0,-0.8,-10,0)" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow1Lend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="marker4282"
+ style="overflow:visible">
+ <path
+ id="path4284"
+ d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
+ style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
+ transform="matrix(-0.8,0,0,-0.8,-10,0)" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow1Lend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="marker4286"
+ style="overflow:visible">
+ <path
+ id="path4288"
+ d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
+ style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
+ transform="matrix(-0.8,0,0,-0.8,-10,0)" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow1Lend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="marker4290"
+ style="overflow:visible">
+ <path
+ id="path4292"
+ d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
+ style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
+ transform="matrix(-0.8,0,0,-0.8,-10,0)" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow1Lend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="marker4294"
+ style="overflow:visible">
+ <path
+ id="path4296"
+ d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
+ style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
+ transform="matrix(-0.8,0,0,-0.8,-10,0)" />
+ </marker>
+ <inkscape:perspective
+ id="perspective2877"
+ inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+ inkscape:vp_z="1 : 0.5 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 0.5 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ <marker
+ inkscape:stockid="Arrow1Lend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="Arrow1Lend-3"
+ style="overflow:visible">
+ <path
+ id="path3695-7"
+ d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
+ style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
+ transform="matrix(-0.8,0,0,-0.8,-10,0)" />
+ </marker>
+ <inkscape:perspective
+ id="perspective2905"
+ inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+ inkscape:vp_z="1 : 0.5 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 0.5 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ <marker
+ inkscape:stockid="Arrow1Lend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="Arrow1Lend-31"
+ style="overflow:visible">
+ <path
+ id="path3695-4"
+ d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
+ style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
+ transform="matrix(-0.8,0,0,-0.8,-10,0)" />
+ </marker>
+ </defs>
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageopacity="0.0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="0.7"
+ inkscape:cx="310.98032"
+ inkscape:cy="88.727691"
+ inkscape:document-units="px"
+ inkscape:current-layer="layer1"
+ showgrid="false"
+ inkscape:window-width="677"
+ inkscape:window-height="660"
+ inkscape:window-x="0"
+ inkscape:window-y="25"
+ inkscape:window-maximized="0" />
+ <metadata
+ id="metadata4346">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title />
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <g
+ inkscape:label="Layer 1"
+ inkscape:groupmode="layer"
+ id="layer1"
+ transform="translate(-64.019684,-330.64719)">
+ <text
+ xml:space="preserve"
+ style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
+ x="162.84195"
+ y="339.76437"
+ id="text2816"><tspan
+ sodipodi:role="line"
+ id="tspan2818"
+ x="162.84195"
+ y="339.76437">IM Library</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
+ x="405.12766"
+ y="340.33578"
+ id="text2820"><tspan
+ sodipodi:role="line"
+ id="tspan2822"
+ x="405.12766"
+ y="340.33578">IM Server</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
+ x="62.841949"
+ y="390.33578"
+ id="text2824"><tspan
+ sodipodi:role="line"
+ id="tspan2826"
+ x="62.841949"
+ y="390.33578">Keys in the on-key-list</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
+ x="235.6991"
+ y="428.33578"
+ id="text2844"><tspan
+ sodipodi:role="line"
+ id="tspan2846"
+ x="235.6991"
+ y="428.33578">XIM_EXT_SET_EVENT_MASK</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
+ x="249.68689"
+ y="440.62149"
+ id="text2848"><tspan
+ sodipodi:role="line"
+ id="tspan2850"
+ x="249.68689"
+ y="440.62149"
+ style="font-size:10px">intercept-event-mask is set</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
+ x="235.6991"
+ y="556.90723"
+ id="text2852"><tspan
+ sodipodi:role="line"
+ id="tspan2854"
+ x="235.6991"
+ y="556.90723">XIM_EXT_SET_EVENT_MASK</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
+ x="257.54333"
+ y="570.05017"
+ id="text2856"><tspan
+ sodipodi:role="line"
+ id="tspan2858"
+ x="257.54333"
+ y="570.05017"
+ style="font-size:10px">select-event-mask is set</tspan></text>
+ <path
+ style="fill:none;stroke:#000000;stroke-width:1.05025411px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="m 224.27052,345.53018 c 0,264.72805 0,274.18271 0,274.18271"
+ id="path2882" />
+ <path
+ style="fill:none;stroke:#000000;stroke-width:1.05972767px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="m 409.98481,347.82588 c 0,274.33848 0,272.73413 0,272.73413"
+ id="path2884" />
+ <path
+ style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-start:none;marker-end:url(#Arrow1Lend)"
+ d="m 135.6991,394.05008 79.99999,0"
+ id="path2886"
+ inkscape:connector-type="polyline" />
+ <path
+ style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow1Lend)"
+ d="m 235.69909,399.76437 162.85715,1.42857"
+ id="path2888"
+ inkscape:connector-type="polyline" />
+ <path
+ style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow1Lend)"
+ d="m 395.69909,411.19294 -160,1.42857"
+ id="path2890"
+ inkscape:connector-type="polyline" />
+ <text
+ xml:space="preserve"
+ style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
+ x="245.44826"
+ y="392.26437"
+ id="text2854"><tspan
+ sodipodi:role="line"
+ id="tspan2856"
+ x="245.44826"
+ y="392.26437">XIM_FORWARD_EVENT</tspan></text>
+ <path
+ style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow1Lend)"
+ d="m 391.16254,531.97868 -150,-1.42858"
+ id="path3892"
+ inkscape:connector-type="polyline" />
+ <path
+ style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow1Lend)"
+ d="m 495.16254,523.40725 -68.57143,-1.42857"
+ id="path3894"
+ inkscape:connector-type="polyline" />
+ <text
+ xml:space="preserve"
+ style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
+ x="80.571426"
+ y="444.21933"
+ id="text4489"><tspan
+ sodipodi:role="line"
+ id="tspan4491"
+ x="80.571426"
+ y="444.21933">the specified events</tspan><tspan
+ sodipodi:role="line"
+ x="80.571426"
+ y="459.21933"
+ id="tspan4493">are being filtered</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
+ x="76.571426"
+ y="517.36218"
+ id="text4495"><tspan
+ sodipodi:role="line"
+ id="tspan4497"
+ x="76.571426"
+ y="517.36218">Keys in the off-key-list</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
+ x="71.428574"
+ y="596.79077"
+ id="text4499"><tspan
+ sodipodi:role="line"
+ id="tspan4501"
+ x="71.428574"
+ y="596.79077">the specified events</tspan><tspan
+ sodipodi:role="line"
+ x="71.428574"
+ y="611.79077"
+ id="tspan4503">are being processed</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
+ x="434.57144"
+ y="394.64789"
+ id="text4505"><tspan
+ sodipodi:role="line"
+ id="tspan4507"
+ x="434.57144"
+ y="394.64789">Keys in the on-key-list</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
+ x="435.42691"
+ y="444.21933"
+ id="text4513"><tspan
+ sodipodi:role="line"
+ id="tspan4515"
+ x="435.42691"
+ y="444.21933">the specified events</tspan><tspan
+ sodipodi:role="line"
+ x="435.42691"
+ y="459.21933"
+ id="tspan4517">are being processed</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
+ x="434.57144"
+ y="517.36218"
+ id="text4519"><tspan
+ sodipodi:role="line"
+ id="tspan4521"
+ x="434.57144"
+ y="517.36218">Keys in the off-key-list</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
+ x="435.42691"
+ y="596.79077"
+ id="text4523"><tspan
+ sodipodi:role="line"
+ id="tspan4525"
+ x="435.42691"
+ y="596.79077">the specified events</tspan><tspan
+ sodipodi:role="line"
+ x="435.42691"
+ y="611.79077"
+ id="tspan4527">are being discarded</tspan></text>
+ <path
+ style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow1Lend)"
+ d="m 488.85714,401.78486 -68.57143,-1.42857"
+ id="path3894-2"
+ inkscape:connector-type="polyline" />
+ <path
+ style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-start:none;marker-end:url(#Arrow1Lend)"
+ d="m 131.14286,526.6479 79.99999,0"
+ id="path2886-9"
+ inkscape:connector-type="polyline" />
+ </g>
+</svg>
diff --git a/libX11/specs/i18n/framework/framework.svg b/libX11/specs/i18n/framework/framework.svg
index 7adfc1404..e09741579 100644
--- a/libX11/specs/i18n/framework/framework.svg
+++ b/libX11/specs/i18n/framework/framework.svg
@@ -1,703 +1,703 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="540.32245"
- height="530.98114"
- id="svg2"
- version="1.1"
- inkscape:version="0.47 r22583"
- sodipodi:docname="framework.svg">
- <defs
- id="defs4">
- <marker
- inkscape:stockid="Arrow1Lend"
- orient="auto"
- refY="0"
- refX="0"
- id="Arrow1Lend"
- style="overflow:visible">
- <path
- id="path3656"
- d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
- style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
- transform="matrix(-0.8,0,0,-0.8,-10,0)" />
- </marker>
- <inkscape:perspective
- sodipodi:type="inkscape:persp3d"
- inkscape:vp_x="0 : 526.18109 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="744.09448 : 526.18109 : 1"
- inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
- id="perspective10" />
- <inkscape:perspective
- id="perspective2824"
- inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
- inkscape:vp_z="1 : 0.5 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_x="0 : 0.5 : 1"
- sodipodi:type="inkscape:persp3d" />
- <inkscape:perspective
- id="perspective2844"
- inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
- inkscape:vp_z="1 : 0.5 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_x="0 : 0.5 : 1"
- sodipodi:type="inkscape:persp3d" />
- <inkscape:perspective
- id="perspective2874"
- inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
- inkscape:vp_z="1 : 0.5 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_x="0 : 0.5 : 1"
- sodipodi:type="inkscape:persp3d" />
- <inkscape:perspective
- id="perspective2874-0"
- inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
- inkscape:vp_z="1 : 0.5 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_x="0 : 0.5 : 1"
- sodipodi:type="inkscape:persp3d" />
- <inkscape:perspective
- id="perspective2915"
- inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
- inkscape:vp_z="1 : 0.5 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_x="0 : 0.5 : 1"
- sodipodi:type="inkscape:persp3d" />
- <inkscape:perspective
- id="perspective4106"
- inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
- inkscape:vp_z="1 : 0.5 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_x="0 : 0.5 : 1"
- sodipodi:type="inkscape:persp3d" />
- <marker
- inkscape:stockid="Arrow1Lend"
- orient="auto"
- refY="0"
- refX="0"
- id="Arrow1Lend-8"
- style="overflow:visible">
- <path
- id="path3656-9"
- d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
- style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
- transform="matrix(-0.8,0,0,-0.8,-10,0)" />
- </marker>
- <inkscape:perspective
- id="perspective4134"
- inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
- inkscape:vp_z="1 : 0.5 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_x="0 : 0.5 : 1"
- sodipodi:type="inkscape:persp3d" />
- <marker
- inkscape:stockid="Arrow1Lend"
- orient="auto"
- refY="0"
- refX="0"
- id="Arrow1Lend-6"
- style="overflow:visible">
- <path
- id="path3656-3"
- d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
- style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
- transform="matrix(-0.8,0,0,-0.8,-10,0)" />
- </marker>
- <inkscape:perspective
- id="perspective4162"
- inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
- inkscape:vp_z="1 : 0.5 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_x="0 : 0.5 : 1"
- sodipodi:type="inkscape:persp3d" />
- <marker
- inkscape:stockid="Arrow1Lend"
- orient="auto"
- refY="0"
- refX="0"
- id="Arrow1Lend-2"
- style="overflow:visible">
- <path
- id="path3656-1"
- d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
- style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
- transform="matrix(-0.8,0,0,-0.8,-10,0)" />
- </marker>
- <inkscape:perspective
- id="perspective4190"
- inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
- inkscape:vp_z="1 : 0.5 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_x="0 : 0.5 : 1"
- sodipodi:type="inkscape:persp3d" />
- <marker
- inkscape:stockid="Arrow1Lend"
- orient="auto"
- refY="0"
- refX="0"
- id="Arrow1Lend-4"
- style="overflow:visible">
- <path
- id="path3656-91"
- d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
- style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
- transform="matrix(-0.8,0,0,-0.8,-10,0)" />
- </marker>
- <inkscape:perspective
- id="perspective4218"
- inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
- inkscape:vp_z="1 : 0.5 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_x="0 : 0.5 : 1"
- sodipodi:type="inkscape:persp3d" />
- <marker
- inkscape:stockid="Arrow1Lend"
- orient="auto"
- refY="0"
- refX="0"
- id="Arrow1Lend-3"
- style="overflow:visible">
- <path
- id="path3656-30"
- d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
- style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
- transform="matrix(-0.8,0,0,-0.8,-10,0)" />
- </marker>
- <inkscape:perspective
- id="perspective4246"
- inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
- inkscape:vp_z="1 : 0.5 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_x="0 : 0.5 : 1"
- sodipodi:type="inkscape:persp3d" />
- <marker
- inkscape:stockid="Arrow1Lend"
- orient="auto"
- refY="0"
- refX="0"
- id="Arrow1Lend-83"
- style="overflow:visible">
- <path
- id="path3656-2"
- d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
- style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
- transform="matrix(-0.8,0,0,-0.8,-10,0)" />
- </marker>
- <inkscape:perspective
- id="perspective4274"
- inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
- inkscape:vp_z="1 : 0.5 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_x="0 : 0.5 : 1"
- sodipodi:type="inkscape:persp3d" />
- <marker
- inkscape:stockid="Arrow1Lend"
- orient="auto"
- refY="0"
- refX="0"
- id="Arrow1Lend-35"
- style="overflow:visible">
- <path
- id="path3656-5"
- d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
- style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
- transform="matrix(-0.8,0,0,-0.8,-10,0)" />
- </marker>
- <inkscape:perspective
- id="perspective4302"
- inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
- inkscape:vp_z="1 : 0.5 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_x="0 : 0.5 : 1"
- sodipodi:type="inkscape:persp3d" />
- <marker
- inkscape:stockid="Arrow1Lend"
- orient="auto"
- refY="0"
- refX="0"
- id="Arrow1Lend-20"
- style="overflow:visible">
- <path
- id="path3656-0"
- d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
- style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
- transform="matrix(-0.8,0,0,-0.8,-10,0)" />
- </marker>
- <inkscape:perspective
- id="perspective4332"
- inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
- inkscape:vp_z="1 : 0.5 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_x="0 : 0.5 : 1"
- sodipodi:type="inkscape:persp3d" />
- </defs>
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="1.5911958"
- inkscape:cx="236.83428"
- inkscape:cy="268.26412"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="false"
- inkscape:window-width="1280"
- inkscape:window-height="752"
- inkscape:window-x="-3"
- inkscape:window-y="-3"
- inkscape:window-maximized="1" />
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(-78.35714,-45.862183)">
- <rect
- style="fill:none;stroke:#000000;stroke-opacity:1"
- id="rect2830"
- width="451.42856"
- height="38.57143"
- x="128.85715"
- y="46.362183"
- ry="0" />
- <rect
- style="fill:none;stroke:#000000;stroke-opacity:1"
- id="rect2832"
- width="125.71429"
- height="67.14286"
- x="98.571426"
- y="186.07646"
- ry="0" />
- <rect
- style="fill:none;stroke:#000000;stroke-opacity:1"
- id="rect2834"
- width="65.714287"
- height="45.714287"
- x="274.85715"
- y="188.55154"
- ry="0" />
- <rect
- style="fill:none;stroke:#000000;stroke-width:1.02407026;stroke-opacity:1"
- id="rect2858"
- width="133.40337"
- height="48.547359"
- x="274.86917"
- y="235.23137"
- ry="0" />
- <rect
- style="fill:none;stroke:#000000;stroke-opacity:1"
- id="rect2860"
- width="157.14285"
- height="62.857143"
- x="443.71429"
- y="188.93361"
- ry="0" />
- <rect
- style="fill:none;stroke:#000000;stroke-opacity:1"
- id="rect2862"
- width="167.14285"
- height="130"
- x="78.85714"
- y="387.79074"
- ry="0" />
- <rect
- style="fill:none;stroke:#000000;stroke-opacity:1"
- id="rect2862-6"
- width="167.14285"
- height="130"
- x="261.57141"
- y="388.50504"
- ry="0" />
- <rect
- style="fill:none;stroke:#000000;stroke-opacity:1"
- id="rect2862-9"
- width="167.14285"
- height="130"
- x="443.57141"
- y="388.50504"
- ry="0" />
- <text
- xml:space="preserve"
- style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
- x="303.85651"
- y="72.885086"
- id="text2897"><tspan
- sodipodi:role="line"
- id="tspan2899"
- x="303.85651"
- y="72.885086"
- style="font-size:20px">Application</tspan></text>
- <text
- xml:space="preserve"
- style="font-size:12px;font-style:normal;font-weight:normal;text-align:center;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
- x="170.05533"
- y="154.5576"
- id="text2901"><tspan
- sodipodi:role="line"
- id="tspan2903"
- x="170.05533"
- y="154.5576"
- style="font-size:16px;text-align:center;text-anchor:middle">&lt;&lt;ANSI/MSE API&gt;&gt;</tspan><tspan
- sodipodi:role="line"
- x="170.05533"
- y="174.5576"
- id="tspan2905"
- style="font-size:16px;text-align:center;text-anchor:middle">(X Contrib)</tspan></text>
- <rect
- style="fill:none;stroke:#000000;stroke-opacity:1"
- id="rect2834-6"
- width="65.714287"
- height="45.714287"
- x="341.6012"
- y="188.55154"
- ry="0" />
- <text
- xml:space="preserve"
- style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
- x="344.00778"
- y="155.16107"
- id="text2929"><tspan
- sodipodi:role="line"
- id="tspan2931"
- x="344.00778"
- y="155.16107"
- style="font-size:16px;text-align:center;text-anchor:middle">&lt;&lt;XLib API&gt;&gt;</tspan><tspan
- sodipodi:role="line"
- x="344.00778"
- y="175.16107"
- id="tspan2933"
- style="font-size:16px;text-align:center;text-anchor:middle">(X Core)</tspan></text>
- <text
- xml:space="preserve"
- style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
- x="524.94836"
- y="155.33501"
- id="text2935"><tspan
- sodipodi:role="line"
- id="tspan2937"
- x="524.94836"
- y="155.33501"
- style="font-size:16px;text-align:center;text-anchor:middle">&lt;&lt;ANSI/MSE API&gt;&gt;</tspan><tspan
- sodipodi:role="line"
- x="524.94836"
- y="175.33501"
- id="tspan2939"
- style="font-size:16px;text-align:center;text-anchor:middle">(X Contrib)</tspan></text>
- <text
- xml:space="preserve"
- style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
- x="278.00778"
- y="205.31915"
- id="text2941"><tspan
- sodipodi:role="line"
- id="tspan2943"
- x="278.00778"
- y="205.31915"
- style="font-size:16px">Input</tspan><tspan
- sodipodi:role="line"
- x="278.00778"
- y="225.31915"
- id="tspan2945"
- style="font-size:16px">Method</tspan></text>
- <text
- xml:space="preserve"
- style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
- x="343.88126"
- y="205.31915"
- id="text2947"><tspan
- sodipodi:role="line"
- id="tspan2949"
- x="343.88126"
- y="205.31915"
- style="font-size:16px">Output</tspan><tspan
- sodipodi:role="line"
- x="343.88126"
- y="225.31915"
- id="tspan2951"
- style="font-size:16px">Method</tspan></text>
- <text
- xml:space="preserve"
- style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
- x="280.57693"
- y="253.82504"
- id="text2953"><tspan
- sodipodi:role="line"
- id="tspan2955"
- x="280.57693"
- y="253.82504"
- style="font-size:14px">&lt;Locl. Serv. API&gt;</tspan><tspan
- sodipodi:role="line"
- x="280.57693"
- y="271.32504"
- id="tspan2957"
- style="font-size:14px">X Locale Object</tspan></text>
- <text
- xml:space="preserve"
- style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
- x="450.71121"
- y="207.0899"
- id="text2959"><tspan
- sodipodi:role="line"
- id="tspan2961"
- x="450.71121"
- y="207.0899"
- style="font-size:16px">C Library</tspan></text>
- <text
- xml:space="preserve"
- style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
- x="517.04321"
- y="241.71439"
- id="text2963"><tspan
- sodipodi:role="line"
- id="tspan2965"
- x="517.04321"
- y="241.71439"
- style="font-size:16px">ANSI impl</tspan></text>
- <text
- xml:space="preserve"
- style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
- x="104.89322"
- y="419.56409"
- id="text2967"><tspan
- sodipodi:role="line"
- id="tspan2969"
- x="104.89322"
- y="419.56409"
- style="font-size:16px">XLC_XLOCALE</tspan><tspan
- sodipodi:role="line"
- x="104.89322"
- y="439.56409"
- id="tspan2971"
- style="font-size:16px">- MB_CUR_MAX</tspan><tspan
- sodipodi:role="line"
- x="104.89322"
- y="459.56409"
- id="tspan2973"
- style="font-size:16px">codeset info</tspan><tspan
- sodipodi:role="line"
- x="104.89322"
- y="479.56409"
- id="tspan2975"
- style="font-size:16px">o char/charset</tspan><tspan
- sodipodi:role="line"
- x="104.89322"
- y="499.56409"
- id="tspan2977"
- style="font-size:16px">o conv/charset</tspan></text>
- <text
- xml:space="preserve"
- style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
- x="290.68759"
- y="414.07794"
- id="text2979"><tspan
- sodipodi:role="line"
- id="tspan2981"
- x="290.68759"
- y="414.07794"
- style="font-size:16px">XLC_FONTSET</tspan><tspan
- sodipodi:role="line"
- x="290.68759"
- y="434.07794"
- id="tspan2983"
- style="font-size:16px">- fontset info</tspan><tspan
- sodipodi:role="line"
- x="290.68759"
- y="454.07794"
- id="tspan2985"
- style="font-size:16px">- charset info</tspan><tspan
- sodipodi:role="line"
- x="290.68759"
- y="474.07794"
- id="tspan2987"
- style="font-size:16px">- font/charset</tspan><tspan
- sodipodi:role="line"
- x="290.68759"
- y="494.07794"
- id="tspan2989"
- style="font-size:16px">- XLFD,GL/GR</tspan></text>
- <text
- xml:space="preserve"
- style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
- x="469.39896"
- y="416.07794"
- id="text2991"><tspan
- sodipodi:role="line"
- id="tspan2993"
- x="469.39896"
- y="416.07794"
- style="font-size:16px">localedef DB</tspan><tspan
- sodipodi:role="line"
- x="469.39896"
- y="436.07794"
- id="tspan2995"
- style="font-size:16px">- MB_CUR_MAX</tspan><tspan
- sodipodi:role="line"
- x="469.39896"
- y="456.07794"
- id="tspan2997"
- style="font-size:16px">- codset info</tspan><tspan
- sodipodi:role="line"
- x="469.39896"
- y="476.07794"
- id="tspan2999"
- style="font-size:16px">o char/charset</tspan><tspan
- sodipodi:role="line"
- x="469.39896"
- y="496.07794"
- id="tspan3001"
- style="font-size:16px">o conv/charset</tspan></text>
- <text
- xml:space="preserve"
- style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
- x="106.83789"
- y="204.34682"
- id="text3026"><tspan
- sodipodi:role="line"
- id="tspan3028"
- x="106.83789"
- y="204.34682"
- style="font-size:16px">Locale Library</tspan><tspan
- sodipodi:role="line"
- x="106.83789"
- y="224.34682"
- id="tspan3030"
- style="font-size:16px" /></text>
- <text
- xml:space="preserve"
- style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
- x="105.69164"
- y="229.71439"
- id="text3032"><tspan
- sodipodi:role="line"
- id="tspan3034"
- x="105.69164"
- y="229.71439"
- style="font-size:16px">non-ANSI impl.</tspan></text>
- <path
- style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
- d="m 204.87737,342.20444 c 101.81022,0 101.81022,0 101.81022,0"
- id="path4322" />
- <path
- style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
- d="m 378.16996,341.36655 c 101.81022,0 101.81022,0 101.81022,0"
- id="path4322-3" />
- <path
- style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
- d="m 306.17376,342.94753 c 34.5652,-34.5652 33.93674,-33.93675 33.93674,-33.93675"
- id="path4346" />
- <path
- style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
- d="M 379.58874,342.20444 C 343.13816,305.75387 342.50971,305.12541 342.50971,305.12541"
- id="path4348" />
- <path
- style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
- d="m 81.699563,531.99881 c 16.339913,16.33991 16.339913,16.33991 16.339913,16.33991 312.972174,0 312.972174,0 312.972174,0"
- id="path4350" />
- <path
- style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
- d="M 411.01165,547.08181 426.7231,531.37035"
- id="path4352" />
- <path
- style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
- d="m 442.43456,533.25573 c 10.13348,17.55171 10.67774,18.49439 10.67774,18.49439 l 142.66605,0 0,-2.15448 13.82608,-13.82608"
- id="path4354" />
- <text
- xml:space="preserve"
- style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
- x="170.25287"
- y="574.73395"
- id="text4356"><tspan
- sodipodi:role="line"
- id="tspan4358"
- x="170.25287"
- y="574.73395"
- style="font-size:16px">XLocale Source (X Core)</tspan></text>
- <text
- xml:space="preserve"
- style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
- x="443.34363"
- y="572.22015"
- id="text4360"><tspan
- sodipodi:role="line"
- id="tspan4362"
- x="443.34363"
- y="572.22015"
- style="font-size:16px">System Locale Source</tspan></text>
- <path
- style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow1Lend-20)"
- d="m 46.505905,206.69672 1.256917,131.97622"
- id="path3948"
- transform="translate(78.35714,45.862183)"
- inkscape:connector-type="polyline" />
- <path
- style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow1Lend-20)"
- d="m 482.65588,204.18289 0,135.74696"
- id="path3950"
- transform="translate(78.35714,45.862183)"
- inkscape:connector-type="polyline" />
- <path
- style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-start:none;marker-end:url(#Arrow1Lend-20)"
- d="m 110.60864,39.526842 0,43.992073"
- id="path3952"
- transform="translate(78.35714,45.862183)"
- inkscape:connector-type="polyline" />
- <path
- style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-start:none;marker-end:url(#Arrow1Lend-20)"
- d="m 218.70345,38.269926 0,43.992073"
- id="path3954"
- transform="translate(78.35714,45.862183)"
- inkscape:connector-type="polyline" />
- <path
- style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-start:none;marker-end:url(#Arrow1Lend-20)"
- d="m 290.34768,38.269926 0,43.992073"
- id="path3956"
- transform="translate(78.35714,45.862183)"
- inkscape:connector-type="polyline" />
- <path
- style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow1Lend-20)"
- d="m 400.95632,34.499177 0,46.505905"
- id="path3958"
- transform="translate(78.35714,45.862183)"
- inkscape:connector-type="polyline" />
- <path
- style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow1Lend-20)"
- d="m 124.43472,293.42395 -1.25692,45.24899"
- id="path4960"
- transform="translate(78.35714,45.862183)"
- inkscape:connector-type="polyline" />
- <path
- style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow1Lend-20)"
- d="m 395.92865,292.16703 0,49.01974"
- id="path4962"
- inkscape:connector-type="polyline"
- transform="translate(78.35714,45.862183)" />
- <path
- style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow1Lend-20);opacity:1"
- d="m 258.92477,238.11963 1.25692,99.29639"
- id="path4964"
- inkscape:connector-type="polyline"
- transform="translate(78.35714,45.862183)" />
- </g>
-</svg>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ width="540.32245"
+ height="530.98114"
+ id="svg2"
+ version="1.1"
+ inkscape:version="0.47 r22583"
+ sodipodi:docname="framework.svg">
+ <defs
+ id="defs4">
+ <marker
+ inkscape:stockid="Arrow1Lend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="Arrow1Lend"
+ style="overflow:visible">
+ <path
+ id="path3656"
+ d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
+ style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
+ transform="matrix(-0.8,0,0,-0.8,-10,0)" />
+ </marker>
+ <inkscape:perspective
+ sodipodi:type="inkscape:persp3d"
+ inkscape:vp_x="0 : 526.18109 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_z="744.09448 : 526.18109 : 1"
+ inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+ id="perspective10" />
+ <inkscape:perspective
+ id="perspective2824"
+ inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+ inkscape:vp_z="1 : 0.5 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 0.5 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ <inkscape:perspective
+ id="perspective2844"
+ inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+ inkscape:vp_z="1 : 0.5 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 0.5 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ <inkscape:perspective
+ id="perspective2874"
+ inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+ inkscape:vp_z="1 : 0.5 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 0.5 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ <inkscape:perspective
+ id="perspective2874-0"
+ inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+ inkscape:vp_z="1 : 0.5 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 0.5 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ <inkscape:perspective
+ id="perspective2915"
+ inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+ inkscape:vp_z="1 : 0.5 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 0.5 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ <inkscape:perspective
+ id="perspective4106"
+ inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+ inkscape:vp_z="1 : 0.5 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 0.5 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ <marker
+ inkscape:stockid="Arrow1Lend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="Arrow1Lend-8"
+ style="overflow:visible">
+ <path
+ id="path3656-9"
+ d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
+ style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
+ transform="matrix(-0.8,0,0,-0.8,-10,0)" />
+ </marker>
+ <inkscape:perspective
+ id="perspective4134"
+ inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+ inkscape:vp_z="1 : 0.5 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 0.5 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ <marker
+ inkscape:stockid="Arrow1Lend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="Arrow1Lend-6"
+ style="overflow:visible">
+ <path
+ id="path3656-3"
+ d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
+ style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
+ transform="matrix(-0.8,0,0,-0.8,-10,0)" />
+ </marker>
+ <inkscape:perspective
+ id="perspective4162"
+ inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+ inkscape:vp_z="1 : 0.5 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 0.5 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ <marker
+ inkscape:stockid="Arrow1Lend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="Arrow1Lend-2"
+ style="overflow:visible">
+ <path
+ id="path3656-1"
+ d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
+ style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
+ transform="matrix(-0.8,0,0,-0.8,-10,0)" />
+ </marker>
+ <inkscape:perspective
+ id="perspective4190"
+ inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+ inkscape:vp_z="1 : 0.5 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 0.5 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ <marker
+ inkscape:stockid="Arrow1Lend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="Arrow1Lend-4"
+ style="overflow:visible">
+ <path
+ id="path3656-91"
+ d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
+ style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
+ transform="matrix(-0.8,0,0,-0.8,-10,0)" />
+ </marker>
+ <inkscape:perspective
+ id="perspective4218"
+ inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+ inkscape:vp_z="1 : 0.5 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 0.5 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ <marker
+ inkscape:stockid="Arrow1Lend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="Arrow1Lend-3"
+ style="overflow:visible">
+ <path
+ id="path3656-30"
+ d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
+ style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
+ transform="matrix(-0.8,0,0,-0.8,-10,0)" />
+ </marker>
+ <inkscape:perspective
+ id="perspective4246"
+ inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+ inkscape:vp_z="1 : 0.5 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 0.5 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ <marker
+ inkscape:stockid="Arrow1Lend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="Arrow1Lend-83"
+ style="overflow:visible">
+ <path
+ id="path3656-2"
+ d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
+ style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
+ transform="matrix(-0.8,0,0,-0.8,-10,0)" />
+ </marker>
+ <inkscape:perspective
+ id="perspective4274"
+ inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+ inkscape:vp_z="1 : 0.5 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 0.5 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ <marker
+ inkscape:stockid="Arrow1Lend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="Arrow1Lend-35"
+ style="overflow:visible">
+ <path
+ id="path3656-5"
+ d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
+ style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
+ transform="matrix(-0.8,0,0,-0.8,-10,0)" />
+ </marker>
+ <inkscape:perspective
+ id="perspective4302"
+ inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+ inkscape:vp_z="1 : 0.5 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 0.5 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ <marker
+ inkscape:stockid="Arrow1Lend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="Arrow1Lend-20"
+ style="overflow:visible">
+ <path
+ id="path3656-0"
+ d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
+ style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
+ transform="matrix(-0.8,0,0,-0.8,-10,0)" />
+ </marker>
+ <inkscape:perspective
+ id="perspective4332"
+ inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+ inkscape:vp_z="1 : 0.5 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 0.5 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ </defs>
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageopacity="0.0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="1.5911958"
+ inkscape:cx="236.83428"
+ inkscape:cy="268.26412"
+ inkscape:document-units="px"
+ inkscape:current-layer="layer1"
+ showgrid="false"
+ inkscape:window-width="1280"
+ inkscape:window-height="752"
+ inkscape:window-x="-3"
+ inkscape:window-y="-3"
+ inkscape:window-maximized="1" />
+ <metadata
+ id="metadata7">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <g
+ inkscape:label="Layer 1"
+ inkscape:groupmode="layer"
+ id="layer1"
+ transform="translate(-78.35714,-45.862183)">
+ <rect
+ style="fill:none;stroke:#000000;stroke-opacity:1"
+ id="rect2830"
+ width="451.42856"
+ height="38.57143"
+ x="128.85715"
+ y="46.362183"
+ ry="0" />
+ <rect
+ style="fill:none;stroke:#000000;stroke-opacity:1"
+ id="rect2832"
+ width="125.71429"
+ height="67.14286"
+ x="98.571426"
+ y="186.07646"
+ ry="0" />
+ <rect
+ style="fill:none;stroke:#000000;stroke-opacity:1"
+ id="rect2834"
+ width="65.714287"
+ height="45.714287"
+ x="274.85715"
+ y="188.55154"
+ ry="0" />
+ <rect
+ style="fill:none;stroke:#000000;stroke-width:1.02407026;stroke-opacity:1"
+ id="rect2858"
+ width="133.40337"
+ height="48.547359"
+ x="274.86917"
+ y="235.23137"
+ ry="0" />
+ <rect
+ style="fill:none;stroke:#000000;stroke-opacity:1"
+ id="rect2860"
+ width="157.14285"
+ height="62.857143"
+ x="443.71429"
+ y="188.93361"
+ ry="0" />
+ <rect
+ style="fill:none;stroke:#000000;stroke-opacity:1"
+ id="rect2862"
+ width="167.14285"
+ height="130"
+ x="78.85714"
+ y="387.79074"
+ ry="0" />
+ <rect
+ style="fill:none;stroke:#000000;stroke-opacity:1"
+ id="rect2862-6"
+ width="167.14285"
+ height="130"
+ x="261.57141"
+ y="388.50504"
+ ry="0" />
+ <rect
+ style="fill:none;stroke:#000000;stroke-opacity:1"
+ id="rect2862-9"
+ width="167.14285"
+ height="130"
+ x="443.57141"
+ y="388.50504"
+ ry="0" />
+ <text
+ xml:space="preserve"
+ style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
+ x="303.85651"
+ y="72.885086"
+ id="text2897"><tspan
+ sodipodi:role="line"
+ id="tspan2899"
+ x="303.85651"
+ y="72.885086"
+ style="font-size:20px">Application</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:12px;font-style:normal;font-weight:normal;text-align:center;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
+ x="170.05533"
+ y="154.5576"
+ id="text2901"><tspan
+ sodipodi:role="line"
+ id="tspan2903"
+ x="170.05533"
+ y="154.5576"
+ style="font-size:16px;text-align:center;text-anchor:middle">&lt;&lt;ANSI/MSE API&gt;&gt;</tspan><tspan
+ sodipodi:role="line"
+ x="170.05533"
+ y="174.5576"
+ id="tspan2905"
+ style="font-size:16px;text-align:center;text-anchor:middle">(X Contrib)</tspan></text>
+ <rect
+ style="fill:none;stroke:#000000;stroke-opacity:1"
+ id="rect2834-6"
+ width="65.714287"
+ height="45.714287"
+ x="341.6012"
+ y="188.55154"
+ ry="0" />
+ <text
+ xml:space="preserve"
+ style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
+ x="344.00778"
+ y="155.16107"
+ id="text2929"><tspan
+ sodipodi:role="line"
+ id="tspan2931"
+ x="344.00778"
+ y="155.16107"
+ style="font-size:16px;text-align:center;text-anchor:middle">&lt;&lt;XLib API&gt;&gt;</tspan><tspan
+ sodipodi:role="line"
+ x="344.00778"
+ y="175.16107"
+ id="tspan2933"
+ style="font-size:16px;text-align:center;text-anchor:middle">(X Core)</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
+ x="524.94836"
+ y="155.33501"
+ id="text2935"><tspan
+ sodipodi:role="line"
+ id="tspan2937"
+ x="524.94836"
+ y="155.33501"
+ style="font-size:16px;text-align:center;text-anchor:middle">&lt;&lt;ANSI/MSE API&gt;&gt;</tspan><tspan
+ sodipodi:role="line"
+ x="524.94836"
+ y="175.33501"
+ id="tspan2939"
+ style="font-size:16px;text-align:center;text-anchor:middle">(X Contrib)</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
+ x="278.00778"
+ y="205.31915"
+ id="text2941"><tspan
+ sodipodi:role="line"
+ id="tspan2943"
+ x="278.00778"
+ y="205.31915"
+ style="font-size:16px">Input</tspan><tspan
+ sodipodi:role="line"
+ x="278.00778"
+ y="225.31915"
+ id="tspan2945"
+ style="font-size:16px">Method</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
+ x="343.88126"
+ y="205.31915"
+ id="text2947"><tspan
+ sodipodi:role="line"
+ id="tspan2949"
+ x="343.88126"
+ y="205.31915"
+ style="font-size:16px">Output</tspan><tspan
+ sodipodi:role="line"
+ x="343.88126"
+ y="225.31915"
+ id="tspan2951"
+ style="font-size:16px">Method</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
+ x="280.57693"
+ y="253.82504"
+ id="text2953"><tspan
+ sodipodi:role="line"
+ id="tspan2955"
+ x="280.57693"
+ y="253.82504"
+ style="font-size:14px">&lt;Locl. Serv. API&gt;</tspan><tspan
+ sodipodi:role="line"
+ x="280.57693"
+ y="271.32504"
+ id="tspan2957"
+ style="font-size:14px">X Locale Object</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
+ x="450.71121"
+ y="207.0899"
+ id="text2959"><tspan
+ sodipodi:role="line"
+ id="tspan2961"
+ x="450.71121"
+ y="207.0899"
+ style="font-size:16px">C Library</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
+ x="517.04321"
+ y="241.71439"
+ id="text2963"><tspan
+ sodipodi:role="line"
+ id="tspan2965"
+ x="517.04321"
+ y="241.71439"
+ style="font-size:16px">ANSI impl</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
+ x="104.89322"
+ y="419.56409"
+ id="text2967"><tspan
+ sodipodi:role="line"
+ id="tspan2969"
+ x="104.89322"
+ y="419.56409"
+ style="font-size:16px">XLC_XLOCALE</tspan><tspan
+ sodipodi:role="line"
+ x="104.89322"
+ y="439.56409"
+ id="tspan2971"
+ style="font-size:16px">- MB_CUR_MAX</tspan><tspan
+ sodipodi:role="line"
+ x="104.89322"
+ y="459.56409"
+ id="tspan2973"
+ style="font-size:16px">codeset info</tspan><tspan
+ sodipodi:role="line"
+ x="104.89322"
+ y="479.56409"
+ id="tspan2975"
+ style="font-size:16px">o char/charset</tspan><tspan
+ sodipodi:role="line"
+ x="104.89322"
+ y="499.56409"
+ id="tspan2977"
+ style="font-size:16px">o conv/charset</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
+ x="290.68759"
+ y="414.07794"
+ id="text2979"><tspan
+ sodipodi:role="line"
+ id="tspan2981"
+ x="290.68759"
+ y="414.07794"
+ style="font-size:16px">XLC_FONTSET</tspan><tspan
+ sodipodi:role="line"
+ x="290.68759"
+ y="434.07794"
+ id="tspan2983"
+ style="font-size:16px">- fontset info</tspan><tspan
+ sodipodi:role="line"
+ x="290.68759"
+ y="454.07794"
+ id="tspan2985"
+ style="font-size:16px">- charset info</tspan><tspan
+ sodipodi:role="line"
+ x="290.68759"
+ y="474.07794"
+ id="tspan2987"
+ style="font-size:16px">- font/charset</tspan><tspan
+ sodipodi:role="line"
+ x="290.68759"
+ y="494.07794"
+ id="tspan2989"
+ style="font-size:16px">- XLFD,GL/GR</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
+ x="469.39896"
+ y="416.07794"
+ id="text2991"><tspan
+ sodipodi:role="line"
+ id="tspan2993"
+ x="469.39896"
+ y="416.07794"
+ style="font-size:16px">localedef DB</tspan><tspan
+ sodipodi:role="line"
+ x="469.39896"
+ y="436.07794"
+ id="tspan2995"
+ style="font-size:16px">- MB_CUR_MAX</tspan><tspan
+ sodipodi:role="line"
+ x="469.39896"
+ y="456.07794"
+ id="tspan2997"
+ style="font-size:16px">- codset info</tspan><tspan
+ sodipodi:role="line"
+ x="469.39896"
+ y="476.07794"
+ id="tspan2999"
+ style="font-size:16px">o char/charset</tspan><tspan
+ sodipodi:role="line"
+ x="469.39896"
+ y="496.07794"
+ id="tspan3001"
+ style="font-size:16px">o conv/charset</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
+ x="106.83789"
+ y="204.34682"
+ id="text3026"><tspan
+ sodipodi:role="line"
+ id="tspan3028"
+ x="106.83789"
+ y="204.34682"
+ style="font-size:16px">Locale Library</tspan><tspan
+ sodipodi:role="line"
+ x="106.83789"
+ y="224.34682"
+ id="tspan3030"
+ style="font-size:16px" /></text>
+ <text
+ xml:space="preserve"
+ style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
+ x="105.69164"
+ y="229.71439"
+ id="text3032"><tspan
+ sodipodi:role="line"
+ id="tspan3034"
+ x="105.69164"
+ y="229.71439"
+ style="font-size:16px">non-ANSI impl.</tspan></text>
+ <path
+ style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="m 204.87737,342.20444 c 101.81022,0 101.81022,0 101.81022,0"
+ id="path4322" />
+ <path
+ style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="m 378.16996,341.36655 c 101.81022,0 101.81022,0 101.81022,0"
+ id="path4322-3" />
+ <path
+ style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="m 306.17376,342.94753 c 34.5652,-34.5652 33.93674,-33.93675 33.93674,-33.93675"
+ id="path4346" />
+ <path
+ style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="M 379.58874,342.20444 C 343.13816,305.75387 342.50971,305.12541 342.50971,305.12541"
+ id="path4348" />
+ <path
+ style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="m 81.699563,531.99881 c 16.339913,16.33991 16.339913,16.33991 16.339913,16.33991 312.972174,0 312.972174,0 312.972174,0"
+ id="path4350" />
+ <path
+ style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="M 411.01165,547.08181 426.7231,531.37035"
+ id="path4352" />
+ <path
+ style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="m 442.43456,533.25573 c 10.13348,17.55171 10.67774,18.49439 10.67774,18.49439 l 142.66605,0 0,-2.15448 13.82608,-13.82608"
+ id="path4354" />
+ <text
+ xml:space="preserve"
+ style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
+ x="170.25287"
+ y="574.73395"
+ id="text4356"><tspan
+ sodipodi:role="line"
+ id="tspan4358"
+ x="170.25287"
+ y="574.73395"
+ style="font-size:16px">XLocale Source (X Core)</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
+ x="443.34363"
+ y="572.22015"
+ id="text4360"><tspan
+ sodipodi:role="line"
+ id="tspan4362"
+ x="443.34363"
+ y="572.22015"
+ style="font-size:16px">System Locale Source</tspan></text>
+ <path
+ style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow1Lend-20)"
+ d="m 46.505905,206.69672 1.256917,131.97622"
+ id="path3948"
+ transform="translate(78.35714,45.862183)"
+ inkscape:connector-type="polyline" />
+ <path
+ style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow1Lend-20)"
+ d="m 482.65588,204.18289 0,135.74696"
+ id="path3950"
+ transform="translate(78.35714,45.862183)"
+ inkscape:connector-type="polyline" />
+ <path
+ style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-start:none;marker-end:url(#Arrow1Lend-20)"
+ d="m 110.60864,39.526842 0,43.992073"
+ id="path3952"
+ transform="translate(78.35714,45.862183)"
+ inkscape:connector-type="polyline" />
+ <path
+ style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-start:none;marker-end:url(#Arrow1Lend-20)"
+ d="m 218.70345,38.269926 0,43.992073"
+ id="path3954"
+ transform="translate(78.35714,45.862183)"
+ inkscape:connector-type="polyline" />
+ <path
+ style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-start:none;marker-end:url(#Arrow1Lend-20)"
+ d="m 290.34768,38.269926 0,43.992073"
+ id="path3956"
+ transform="translate(78.35714,45.862183)"
+ inkscape:connector-type="polyline" />
+ <path
+ style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow1Lend-20)"
+ d="m 400.95632,34.499177 0,46.505905"
+ id="path3958"
+ transform="translate(78.35714,45.862183)"
+ inkscape:connector-type="polyline" />
+ <path
+ style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow1Lend-20)"
+ d="m 124.43472,293.42395 -1.25692,45.24899"
+ id="path4960"
+ transform="translate(78.35714,45.862183)"
+ inkscape:connector-type="polyline" />
+ <path
+ style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow1Lend-20)"
+ d="m 395.92865,292.16703 0,49.01974"
+ id="path4962"
+ inkscape:connector-type="polyline"
+ transform="translate(78.35714,45.862183)" />
+ <path
+ style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow1Lend-20);opacity:1"
+ d="m 258.92477,238.11963 1.25692,99.29639"
+ id="path4964"
+ inkscape:connector-type="polyline"
+ transform="translate(78.35714,45.862183)" />
+ </g>
+</svg>
diff --git a/libX11/src/.gitignore b/libX11/src/.gitignore
index 20eb6c6b7..51ef04e17 100644
--- a/libX11/src/.gitignore
+++ b/libX11/src/.gitignore
@@ -1,2 +1,2 @@
-# Add & Override for this directory and it's subdirectories
-ks_tables.h
+# Add & Override for this directory and it's subdirectories
+ks_tables.h
diff --git a/libX11/src/AllCells.c b/libX11/src/AllCells.c
index 01644b186..ddd9c22ef 100644
--- a/libX11/src/AllCells.c
+++ b/libX11/src/AllCells.c
@@ -1,63 +1,63 @@
-/*
-
-Copyright 1986, 1998 The Open Group
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall not be
-used in advertising or otherwise to promote the sale, use or other dealings
-in this Software without prior written authorization from The Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-
-Status XAllocColorCells(
- register Display *dpy,
- Colormap cmap,
- Bool contig,
- unsigned long *masks, /* LISTofCARD32 */ /* RETURN */
- unsigned int nplanes, /* CARD16 */
- unsigned long *pixels, /* LISTofCARD32 */ /* RETURN */
- unsigned int ncolors) /* CARD16 */
-{
-
- Status status;
- xAllocColorCellsReply rep;
- register xAllocColorCellsReq *req;
- LockDisplay(dpy);
- GetReq(AllocColorCells, req);
-
- req->cmap = cmap;
- req->colors = ncolors;
- req->planes = nplanes;
- req->contiguous = contig;
-
- status = _XReply(dpy, (xReply *)&rep, 0, xFalse);
-
- if (status) {
- _XRead32 (dpy, (long *) pixels, 4L * (long) (rep.nPixels));
- _XRead32 (dpy, (long *) masks, 4L * (long) (rep.nMasks));
- }
-
- UnlockDisplay(dpy);
- SyncHandle();
- return(status);
-}
+/*
+
+Copyright 1986, 1998 The Open Group
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group shall not be
+used in advertising or otherwise to promote the sale, use or other dealings
+in this Software without prior written authorization from The Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+
+Status XAllocColorCells(
+ register Display *dpy,
+ Colormap cmap,
+ Bool contig,
+ unsigned long *masks, /* LISTofCARD32 */ /* RETURN */
+ unsigned int nplanes, /* CARD16 */
+ unsigned long *pixels, /* LISTofCARD32 */ /* RETURN */
+ unsigned int ncolors) /* CARD16 */
+{
+
+ Status status;
+ xAllocColorCellsReply rep;
+ register xAllocColorCellsReq *req;
+ LockDisplay(dpy);
+ GetReq(AllocColorCells, req);
+
+ req->cmap = cmap;
+ req->colors = ncolors;
+ req->planes = nplanes;
+ req->contiguous = contig;
+
+ status = _XReply(dpy, (xReply *)&rep, 0, xFalse);
+
+ if (status) {
+ _XRead32 (dpy, (long *) pixels, 4L * (long) (rep.nPixels));
+ _XRead32 (dpy, (long *) masks, 4L * (long) (rep.nMasks));
+ }
+
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return(status);
+}
diff --git a/libX11/src/AllPlanes.c b/libX11/src/AllPlanes.c
index 02fff2340..b2e245387 100644
--- a/libX11/src/AllPlanes.c
+++ b/libX11/src/AllPlanes.c
@@ -1,74 +1,74 @@
-/*
-
-Copyright 1986, 1998 The Open Group
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall not be
-used in advertising or otherwise to promote the sale, use or other dealings
-in this Software without prior written authorization from The Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-
-Status XAllocColorPlanes(
- register Display *dpy,
- Colormap cmap,
- Bool contig,
- unsigned long *pixels, /* LISTofCARD32 */ /* RETURN */
- int ncolors,
- int nreds,
- int ngreens,
- int nblues,
- unsigned long *rmask,
- unsigned long *gmask,
- unsigned long *bmask) /* CARD32 */ /* RETURN */
-{
- xAllocColorPlanesReply rep;
- Status status;
- register xAllocColorPlanesReq *req;
-
- LockDisplay(dpy);
- GetReq(AllocColorPlanes,req);
-
- req->cmap = cmap;
- req->colors = ncolors;
- req->red = nreds;
- req->green = ngreens;
- req->blue = nblues;
- req->contiguous = contig;
-
- status = _XReply(dpy, (xReply *)&rep, 0, xFalse);
-
-
- if (status) {
- *rmask = rep.redMask;
- *gmask = rep.greenMask;
- *bmask = rep.blueMask;
-
- /* sizeof(CARD32) = 4 */
- _XRead32 (dpy, (long *) pixels, (long)(ncolors * 4));
- }
-
- UnlockDisplay(dpy);
- SyncHandle();
- return(status);
-}
+/*
+
+Copyright 1986, 1998 The Open Group
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group shall not be
+used in advertising or otherwise to promote the sale, use or other dealings
+in this Software without prior written authorization from The Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+
+Status XAllocColorPlanes(
+ register Display *dpy,
+ Colormap cmap,
+ Bool contig,
+ unsigned long *pixels, /* LISTofCARD32 */ /* RETURN */
+ int ncolors,
+ int nreds,
+ int ngreens,
+ int nblues,
+ unsigned long *rmask,
+ unsigned long *gmask,
+ unsigned long *bmask) /* CARD32 */ /* RETURN */
+{
+ xAllocColorPlanesReply rep;
+ Status status;
+ register xAllocColorPlanesReq *req;
+
+ LockDisplay(dpy);
+ GetReq(AllocColorPlanes,req);
+
+ req->cmap = cmap;
+ req->colors = ncolors;
+ req->red = nreds;
+ req->green = ngreens;
+ req->blue = nblues;
+ req->contiguous = contig;
+
+ status = _XReply(dpy, (xReply *)&rep, 0, xFalse);
+
+
+ if (status) {
+ *rmask = rep.redMask;
+ *gmask = rep.greenMask;
+ *bmask = rep.blueMask;
+
+ /* sizeof(CARD32) = 4 */
+ _XRead32 (dpy, (long *) pixels, (long)(ncolors * 4));
+ }
+
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return(status);
+}
diff --git a/libX11/src/AllowEv.c b/libX11/src/AllowEv.c
index ec093a7b8..4a17e7b2d 100644
--- a/libX11/src/AllowEv.c
+++ b/libX11/src/AllowEv.c
@@ -1,51 +1,51 @@
-/*
-
-Copyright 1986, 1998 The Open Group
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall not be
-used in advertising or otherwise to promote the sale, use or other dealings
-in this Software without prior written authorization from The Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-
-int
-XAllowEvents(
- register Display *dpy,
- int mode,
- Time time)
-
-{
- register xAllowEventsReq *req;
-
- LockDisplay(dpy);
- GetReq(AllowEvents,req);
- req->mode = mode;
- req->time = time;
- UnlockDisplay(dpy);
- SyncHandle();
- return 1;
-}
-
-
-
+/*
+
+Copyright 1986, 1998 The Open Group
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group shall not be
+used in advertising or otherwise to promote the sale, use or other dealings
+in this Software without prior written authorization from The Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+
+int
+XAllowEvents(
+ register Display *dpy,
+ int mode,
+ Time time)
+
+{
+ register xAllowEventsReq *req;
+
+ LockDisplay(dpy);
+ GetReq(AllowEvents,req);
+ req->mode = mode;
+ req->time = time;
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return 1;
+}
+
+
+
diff --git a/libX11/src/AutoRep.c b/libX11/src/AutoRep.c
index b39332d98..66b4097a8 100644
--- a/libX11/src/AutoRep.c
+++ b/libX11/src/AutoRep.c
@@ -1,50 +1,50 @@
-/*
-
-Copyright 1985, 1998 The Open Group
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall not be
-used in advertising or otherwise to promote the sale, use or other dealings
-in this Software without prior written authorization from The Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-
-int
-XAutoRepeatOn (register Display *dpy)
-{
- XKeyboardControl values;
- values.auto_repeat_mode = AutoRepeatModeOn;
- XChangeKeyboardControl (dpy, KBAutoRepeatMode, &values);
- return 1;
-}
-
-int
-XAutoRepeatOff (register Display *dpy)
-{
- XKeyboardControl values;
- values.auto_repeat_mode = AutoRepeatModeOff;
- XChangeKeyboardControl (dpy, KBAutoRepeatMode, &values);
- return 1;
-}
-
-
+/*
+
+Copyright 1985, 1998 The Open Group
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group shall not be
+used in advertising or otherwise to promote the sale, use or other dealings
+in this Software without prior written authorization from The Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+
+int
+XAutoRepeatOn (register Display *dpy)
+{
+ XKeyboardControl values;
+ values.auto_repeat_mode = AutoRepeatModeOn;
+ XChangeKeyboardControl (dpy, KBAutoRepeatMode, &values);
+ return 1;
+}
+
+int
+XAutoRepeatOff (register Display *dpy)
+{
+ XKeyboardControl values;
+ values.auto_repeat_mode = AutoRepeatModeOff;
+ XChangeKeyboardControl (dpy, KBAutoRepeatMode, &values);
+ return 1;
+}
+
+
diff --git a/libX11/src/Backgnd.c b/libX11/src/Backgnd.c
index 3b5b51b6b..bf7d75f8f 100644
--- a/libX11/src/Backgnd.c
+++ b/libX11/src/Backgnd.c
@@ -1,49 +1,49 @@
-/*
-
-Copyright 1986, 1998 The Open Group
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall not be
-used in advertising or otherwise to promote the sale, use or other dealings
-in this Software without prior written authorization from The Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-
-int
-XSetWindowBackground(
- register Display *dpy,
- Window w,
- unsigned long pixel)
-{
- register xChangeWindowAttributesReq *req;
-
- LockDisplay(dpy);
- GetReqExtra (ChangeWindowAttributes, 4, req);
- req->window = w;
- req->valueMask = CWBackPixel;
- OneDataCard32 (dpy, NEXTPTR(req,xChangeWindowAttributesReq), pixel);
- UnlockDisplay(dpy);
- SyncHandle();
- return 1;
-}
-
+/*
+
+Copyright 1986, 1998 The Open Group
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group shall not be
+used in advertising or otherwise to promote the sale, use or other dealings
+in this Software without prior written authorization from The Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+
+int
+XSetWindowBackground(
+ register Display *dpy,
+ Window w,
+ unsigned long pixel)
+{
+ register xChangeWindowAttributesReq *req;
+
+ LockDisplay(dpy);
+ GetReqExtra (ChangeWindowAttributes, 4, req);
+ req->window = w;
+ req->valueMask = CWBackPixel;
+ OneDataCard32 (dpy, NEXTPTR(req,xChangeWindowAttributesReq), pixel);
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return 1;
+}
+
diff --git a/libX11/src/BdrWidth.c b/libX11/src/BdrWidth.c
index a8dc8ee10..5da8ce772 100644
--- a/libX11/src/BdrWidth.c
+++ b/libX11/src/BdrWidth.c
@@ -1,53 +1,53 @@
-
-/*
-
-Copyright 1994, 1998 The Open Group
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
-
-The above copyright notice and this permission notice shall be included
-in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
-IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR
-OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
-ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall
-not be used in advertising or otherwise to promote the sale, use or
-other dealings in this Software without prior written authorization
-from The Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-
-int
-XSetWindowBorderWidth(
- Display *dpy,
- Window w,
- unsigned int width)
-{
- unsigned long lwidth = width; /* must be CARD32 */
-
- register xConfigureWindowReq *req;
- LockDisplay(dpy);
- GetReqExtra(ConfigureWindow, 4, req);
- req->window = w;
- req->mask = CWBorderWidth;
- OneDataCard32 (dpy, NEXTPTR(req,xConfigureWindowReq), lwidth);
- UnlockDisplay(dpy);
- SyncHandle();
- return 1;
-}
-
+
+/*
+
+Copyright 1994, 1998 The Open Group
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
+
+The above copyright notice and this permission notice shall be included
+in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR
+OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
+ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group shall
+not be used in advertising or otherwise to promote the sale, use or
+other dealings in this Software without prior written authorization
+from The Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+
+int
+XSetWindowBorderWidth(
+ Display *dpy,
+ Window w,
+ unsigned int width)
+{
+ unsigned long lwidth = width; /* must be CARD32 */
+
+ register xConfigureWindowReq *req;
+ LockDisplay(dpy);
+ GetReqExtra(ConfigureWindow, 4, req);
+ req->window = w;
+ req->mask = CWBorderWidth;
+ OneDataCard32 (dpy, NEXTPTR(req,xConfigureWindowReq), lwidth);
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return 1;
+}
+
diff --git a/libX11/src/Bell.c b/libX11/src/Bell.c
index 31522c547..7da8772cf 100644
--- a/libX11/src/Bell.c
+++ b/libX11/src/Bell.c
@@ -1,46 +1,46 @@
-/*
-
-Copyright 1986, 1998 The Open Group
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall not be
-used in advertising or otherwise to promote the sale, use or other dealings
-in this Software without prior written authorization from The Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-
-int
-XBell(
- register Display *dpy,
- int percent)
-{
- register xBellReq *req;
-
- LockDisplay(dpy);
- GetReq(Bell,req);
- req->percent = percent;
- UnlockDisplay(dpy);
- SyncHandle();
- return 1;
-}
-
+/*
+
+Copyright 1986, 1998 The Open Group
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group shall not be
+used in advertising or otherwise to promote the sale, use or other dealings
+in this Software without prior written authorization from The Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+
+int
+XBell(
+ register Display *dpy,
+ int percent)
+{
+ register xBellReq *req;
+
+ LockDisplay(dpy);
+ GetReq(Bell,req);
+ req->percent = percent;
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return 1;
+}
+
diff --git a/libX11/src/Border.c b/libX11/src/Border.c
index f83cf09a3..133043a5b 100644
--- a/libX11/src/Border.c
+++ b/libX11/src/Border.c
@@ -1,49 +1,49 @@
-/*
-
-Copyright 1986, 1998 The Open Group
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall not be
-used in advertising or otherwise to promote the sale, use or other dealings
-in this Software without prior written authorization from The Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-
-int
-XSetWindowBorder(
- register Display *dpy,
- Window w,
- unsigned long pixel)
-{
- register xChangeWindowAttributesReq *req;
-
- LockDisplay(dpy);
- GetReqExtra (ChangeWindowAttributes, 4, req);
- req->window = w;
- req->valueMask = CWBorderPixel;
- OneDataCard32 (dpy, NEXTPTR(req,xChangeWindowAttributesReq), pixel);
- UnlockDisplay(dpy);
- SyncHandle();
- return 1;
-}
-
+/*
+
+Copyright 1986, 1998 The Open Group
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group shall not be
+used in advertising or otherwise to promote the sale, use or other dealings
+in this Software without prior written authorization from The Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+
+int
+XSetWindowBorder(
+ register Display *dpy,
+ Window w,
+ unsigned long pixel)
+{
+ register xChangeWindowAttributesReq *req;
+
+ LockDisplay(dpy);
+ GetReqExtra (ChangeWindowAttributes, 4, req);
+ req->window = w;
+ req->valueMask = CWBorderPixel;
+ OneDataCard32 (dpy, NEXTPTR(req,xChangeWindowAttributesReq), pixel);
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return 1;
+}
+
diff --git a/libX11/src/ChAccCon.c b/libX11/src/ChAccCon.c
index 6ec9441f7..f8d099668 100644
--- a/libX11/src/ChAccCon.c
+++ b/libX11/src/ChAccCon.c
@@ -1,59 +1,59 @@
-/*
-
-Copyright 1986, 1998 The Open Group
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall not be
-used in advertising or otherwise to promote the sale, use or other dealings
-in this Software without prior written authorization from The Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-
-int
-XEnableAccessControl(register Display *dpy)
-{
- return XSetAccessControl(dpy, EnableAccess);
-}
-
-int
-XDisableAccessControl(register Display *dpy)
-{
- return XSetAccessControl(dpy, DisableAccess);
-}
-
-int
-XSetAccessControl(
- register Display *dpy,
- int mode)
-
-{
- register xSetAccessControlReq *req;
-
- LockDisplay(dpy);
- GetReq(SetAccessControl, req);
- req->mode = mode;
- UnlockDisplay(dpy);
- SyncHandle();
- return 1;
-}
-
+/*
+
+Copyright 1986, 1998 The Open Group
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group shall not be
+used in advertising or otherwise to promote the sale, use or other dealings
+in this Software without prior written authorization from The Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+
+int
+XEnableAccessControl(register Display *dpy)
+{
+ return XSetAccessControl(dpy, EnableAccess);
+}
+
+int
+XDisableAccessControl(register Display *dpy)
+{
+ return XSetAccessControl(dpy, DisableAccess);
+}
+
+int
+XSetAccessControl(
+ register Display *dpy,
+ int mode)
+
+{
+ register xSetAccessControlReq *req;
+
+ LockDisplay(dpy);
+ GetReq(SetAccessControl, req);
+ req->mode = mode;
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return 1;
+}
+
diff --git a/libX11/src/ChActPGb.c b/libX11/src/ChActPGb.c
index 8a77c84af..bebef2b01 100644
--- a/libX11/src/ChActPGb.c
+++ b/libX11/src/ChActPGb.c
@@ -1,49 +1,49 @@
-/*
-
-Copyright 1986, 1998 The Open Group
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall not be
-used in advertising or otherwise to promote the sale, use or other dealings
-in this Software without prior written authorization from The Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-
-int
-XChangeActivePointerGrab(
- register Display *dpy,
- unsigned int event_mask, /* CARD16 */
- Cursor curs,
- Time time)
-{
- register xChangeActivePointerGrabReq *req;
-
- LockDisplay(dpy);
- GetReq(ChangeActivePointerGrab, req);
- req->eventMask = event_mask;
- req->cursor = curs;
- req->time = time;
- UnlockDisplay(dpy);
- SyncHandle();
- return 1;
-}
+/*
+
+Copyright 1986, 1998 The Open Group
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group shall not be
+used in advertising or otherwise to promote the sale, use or other dealings
+in this Software without prior written authorization from The Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+
+int
+XChangeActivePointerGrab(
+ register Display *dpy,
+ unsigned int event_mask, /* CARD16 */
+ Cursor curs,
+ Time time)
+{
+ register xChangeActivePointerGrabReq *req;
+
+ LockDisplay(dpy);
+ GetReq(ChangeActivePointerGrab, req);
+ req->eventMask = event_mask;
+ req->cursor = curs;
+ req->time = time;
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return 1;
+}
diff --git a/libX11/src/ChClMode.c b/libX11/src/ChClMode.c
index 320564218..5250a80bc 100644
--- a/libX11/src/ChClMode.c
+++ b/libX11/src/ChClMode.c
@@ -1,46 +1,46 @@
-/*
-
-Copyright 1986, 1998 The Open Group
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall not be
-used in advertising or otherwise to promote the sale, use or other dealings
-in this Software without prior written authorization from The Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-
-int
-XSetCloseDownMode(
- register Display *dpy,
- int mode)
-{
- register xSetCloseDownModeReq *req;
-
- LockDisplay(dpy);
- GetReq(SetCloseDownMode, req);
- req->mode = mode;
- UnlockDisplay(dpy);
- SyncHandle();
- return 1;
-}
-
+/*
+
+Copyright 1986, 1998 The Open Group
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group shall not be
+used in advertising or otherwise to promote the sale, use or other dealings
+in this Software without prior written authorization from The Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+
+int
+XSetCloseDownMode(
+ register Display *dpy,
+ int mode)
+{
+ register xSetCloseDownModeReq *req;
+
+ LockDisplay(dpy);
+ GetReq(SetCloseDownMode, req);
+ req->mode = mode;
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return 1;
+}
+
diff --git a/libX11/src/ChCmap.c b/libX11/src/ChCmap.c
index 6dba0fc28..d9372cdf3 100644
--- a/libX11/src/ChCmap.c
+++ b/libX11/src/ChCmap.c
@@ -1,49 +1,49 @@
-/*
-
-Copyright 1986, 1998 The Open Group
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall not be
-used in advertising or otherwise to promote the sale, use or other dealings
-in this Software without prior written authorization from The Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-
-int
-XSetWindowColormap(
- register Display *dpy,
- Window w,
- Colormap colormap)
-{
- register xChangeWindowAttributesReq *req;
-
- LockDisplay(dpy);
- GetReqExtra (ChangeWindowAttributes, 4, req);
- req->window = w;
- req->valueMask = CWColormap;
- OneDataCard32 (dpy, NEXTPTR(req,xChangeWindowAttributesReq), colormap);
- UnlockDisplay(dpy);
- SyncHandle();
- return 1;
-}
-
+/*
+
+Copyright 1986, 1998 The Open Group
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group shall not be
+used in advertising or otherwise to promote the sale, use or other dealings
+in this Software without prior written authorization from The Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+
+int
+XSetWindowColormap(
+ register Display *dpy,
+ Window w,
+ Colormap colormap)
+{
+ register xChangeWindowAttributesReq *req;
+
+ LockDisplay(dpy);
+ GetReqExtra (ChangeWindowAttributes, 4, req);
+ req->window = w;
+ req->valueMask = CWColormap;
+ OneDataCard32 (dpy, NEXTPTR(req,xChangeWindowAttributesReq), colormap);
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return 1;
+}
+
diff --git a/libX11/src/ChGC.c b/libX11/src/ChGC.c
index 56a339c5a..8f677dc3a 100644
--- a/libX11/src/ChGC.c
+++ b/libX11/src/ChGC.c
@@ -1,52 +1,52 @@
-/*
-
-Copyright 1986, 1998 The Open Group
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall not be
-used in advertising or otherwise to promote the sale, use or other dealings
-in this Software without prior written authorization from The Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-#include "Cr.h"
-
-int
-XChangeGC (
- register Display *dpy,
- GC gc,
- unsigned long valuemask,
- XGCValues *values)
-{
- LockDisplay(dpy);
-
- valuemask &= (1L << (GCLastBit + 1)) - 1;
- if (valuemask) _XUpdateGCCache (gc, valuemask, values);
-
- /* if any Resource ID changed, must flush */
- if (gc->dirty & (GCFont | GCTile | GCStipple))
- _XFlushGCCache(dpy, gc);
- UnlockDisplay(dpy);
- SyncHandle();
- return 1;
-}
-
+/*
+
+Copyright 1986, 1998 The Open Group
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group shall not be
+used in advertising or otherwise to promote the sale, use or other dealings
+in this Software without prior written authorization from The Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+#include "Cr.h"
+
+int
+XChangeGC (
+ register Display *dpy,
+ GC gc,
+ unsigned long valuemask,
+ XGCValues *values)
+{
+ LockDisplay(dpy);
+
+ valuemask &= (1L << (GCLastBit + 1)) - 1;
+ if (valuemask) _XUpdateGCCache (gc, valuemask, values);
+
+ /* if any Resource ID changed, must flush */
+ if (gc->dirty & (GCFont | GCTile | GCStipple))
+ _XFlushGCCache(dpy, gc);
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return 1;
+}
+
diff --git a/libX11/src/ChKeyCon.c b/libX11/src/ChKeyCon.c
index 182cef1d8..bcf522340 100644
--- a/libX11/src/ChKeyCon.c
+++ b/libX11/src/ChKeyCon.c
@@ -1,83 +1,83 @@
-/*
-
-Copyright 1986, 1998 The Open Group
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall not be
-used in advertising or otherwise to promote the sale, use or other dealings
-in this Software without prior written authorization from The Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-
-int
-XChangeKeyboardControl(
- register Display *dpy,
- unsigned long mask,
- XKeyboardControl *value_list)
-{
- unsigned long values[8];
- register unsigned long *value = values;
- long nvalues;
- register xChangeKeyboardControlReq *req;
-
- LockDisplay(dpy);
- GetReq(ChangeKeyboardControl, req);
- req->mask = mask;
-
- if (mask & KBKeyClickPercent)
- *value++ = value_list->key_click_percent;
-
- if (mask & KBBellPercent)
- *value++ = value_list->bell_percent;
-
- if (mask & KBBellPitch)
- *value++ = value_list->bell_pitch;
-
- if (mask & KBBellDuration)
- *value++ = value_list->bell_duration;
-
- if (mask & KBLed)
- *value++ = value_list->led;
-
- if (mask & KBLedMode)
- *value++ = value_list->led_mode;
-
- if (mask & KBKey)
- *value++ = value_list->key;
-
- if (mask & KBAutoRepeatMode)
- *value++ = value_list->auto_repeat_mode;
-
-
- req->length += (nvalues = value - values);
-
- /* note: Data is a macro that uses its arguments multiple
- times, so "nvalues" is changed in a separate assignment
- statement */
-
- nvalues <<= 2;
- Data32 (dpy, (long *) values, nvalues);
- UnlockDisplay(dpy);
- SyncHandle();
- return 1;
- }
+/*
+
+Copyright 1986, 1998 The Open Group
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group shall not be
+used in advertising or otherwise to promote the sale, use or other dealings
+in this Software without prior written authorization from The Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+
+int
+XChangeKeyboardControl(
+ register Display *dpy,
+ unsigned long mask,
+ XKeyboardControl *value_list)
+{
+ unsigned long values[8];
+ register unsigned long *value = values;
+ long nvalues;
+ register xChangeKeyboardControlReq *req;
+
+ LockDisplay(dpy);
+ GetReq(ChangeKeyboardControl, req);
+ req->mask = mask;
+
+ if (mask & KBKeyClickPercent)
+ *value++ = value_list->key_click_percent;
+
+ if (mask & KBBellPercent)
+ *value++ = value_list->bell_percent;
+
+ if (mask & KBBellPitch)
+ *value++ = value_list->bell_pitch;
+
+ if (mask & KBBellDuration)
+ *value++ = value_list->bell_duration;
+
+ if (mask & KBLed)
+ *value++ = value_list->led;
+
+ if (mask & KBLedMode)
+ *value++ = value_list->led_mode;
+
+ if (mask & KBKey)
+ *value++ = value_list->key;
+
+ if (mask & KBAutoRepeatMode)
+ *value++ = value_list->auto_repeat_mode;
+
+
+ req->length += (nvalues = value - values);
+
+ /* note: Data is a macro that uses its arguments multiple
+ times, so "nvalues" is changed in a separate assignment
+ statement */
+
+ nvalues <<= 2;
+ Data32 (dpy, (long *) values, nvalues);
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return 1;
+ }
diff --git a/libX11/src/ChPntCon.c b/libX11/src/ChPntCon.c
index 3d1cf216a..c177c0045 100644
--- a/libX11/src/ChPntCon.c
+++ b/libX11/src/ChPntCon.c
@@ -1,55 +1,55 @@
-/*
-
-Copyright 1986, 1998 The Open Group
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall not be
-used in advertising or otherwise to promote the sale, use or other dealings
-in this Software without prior written authorization from The Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-
-int
-XChangePointerControl(
- register Display *dpy,
- Bool do_acc,
- Bool do_thresh,
- int acc_numerator,
- int acc_denominator,
- int threshold)
-
-{
- register xChangePointerControlReq *req;
-
- LockDisplay(dpy);
- GetReq(ChangePointerControl, req);
- req->doAccel = do_acc;
- req->doThresh = do_thresh;
- req->accelNum = acc_numerator;
- req->accelDenum = acc_denominator;
- req->threshold = threshold;
- UnlockDisplay(dpy);
- SyncHandle();
- return 1;
-}
-
+/*
+
+Copyright 1986, 1998 The Open Group
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group shall not be
+used in advertising or otherwise to promote the sale, use or other dealings
+in this Software without prior written authorization from The Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+
+int
+XChangePointerControl(
+ register Display *dpy,
+ Bool do_acc,
+ Bool do_thresh,
+ int acc_numerator,
+ int acc_denominator,
+ int threshold)
+
+{
+ register xChangePointerControlReq *req;
+
+ LockDisplay(dpy);
+ GetReq(ChangePointerControl, req);
+ req->doAccel = do_acc;
+ req->doThresh = do_thresh;
+ req->accelNum = acc_numerator;
+ req->accelDenum = acc_denominator;
+ req->threshold = threshold;
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return 1;
+}
+
diff --git a/libX11/src/ChProp.c b/libX11/src/ChProp.c
index 50aedc80a..b95775128 100644
--- a/libX11/src/ChProp.c
+++ b/libX11/src/ChProp.c
@@ -1,99 +1,99 @@
-/*
-
-Copyright 1986, 1998 The Open Group
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall not be
-used in advertising or otherwise to promote the sale, use or other dealings
-in this Software without prior written authorization from The Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-
-int
-XChangeProperty (
- register Display *dpy,
- Window w,
- Atom property,
- Atom type,
- int format, /* 8, 16, or 32 */
- int mode, /* PropModeReplace, PropModePrepend, PropModeAppend */
- _Xconst unsigned char *data,
- int nelements)
- {
- register xChangePropertyReq *req;
- register long len;
-
- LockDisplay(dpy);
- GetReq (ChangeProperty, req);
- req->window = w;
- req->property = property;
- req->type = type;
- req->mode = mode;
- if (nelements < 0) {
- req->nUnits = 0;
- req->format = 0; /* ask for garbage, get garbage */
- } else {
- req->nUnits = nelements;
- req->format = format;
- }
-
- switch (req->format) {
- case 8:
- len = ((long)nelements + 3)>>2;
- if (dpy->bigreq_size || req->length + len <= (unsigned) 65535) {
- SetReqLen(req, len, len);
- Data (dpy, (char *)data, nelements);
- } /* else force BadLength */
- break;
-
- case 16:
- len = ((long)nelements + 1)>>1;
- if (dpy->bigreq_size || req->length + len <= (unsigned) 65535) {
- SetReqLen(req, len, len);
- len = (long)nelements << 1;
- Data16 (dpy, (short *) data, len);
- } /* else force BadLength */
- break;
-
- case 32:
- len = nelements;
- if (dpy->bigreq_size || req->length + len <= (unsigned) 65535) {
- SetReqLen(req, len, len);
- len = (long)nelements << 2;
- Data32 (dpy, (long *) data, len);
- } /* else force BadLength */
- break;
-
- default:
- /* BadValue will be generated */ ;
- }
-
- UnlockDisplay(dpy);
- SyncHandle();
- return 1;
- }
-
-
-
-
-
+/*
+
+Copyright 1986, 1998 The Open Group
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group shall not be
+used in advertising or otherwise to promote the sale, use or other dealings
+in this Software without prior written authorization from The Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+
+int
+XChangeProperty (
+ register Display *dpy,
+ Window w,
+ Atom property,
+ Atom type,
+ int format, /* 8, 16, or 32 */
+ int mode, /* PropModeReplace, PropModePrepend, PropModeAppend */
+ _Xconst unsigned char *data,
+ int nelements)
+ {
+ register xChangePropertyReq *req;
+ register long len;
+
+ LockDisplay(dpy);
+ GetReq (ChangeProperty, req);
+ req->window = w;
+ req->property = property;
+ req->type = type;
+ req->mode = mode;
+ if (nelements < 0) {
+ req->nUnits = 0;
+ req->format = 0; /* ask for garbage, get garbage */
+ } else {
+ req->nUnits = nelements;
+ req->format = format;
+ }
+
+ switch (req->format) {
+ case 8:
+ len = ((long)nelements + 3)>>2;
+ if (dpy->bigreq_size || req->length + len <= (unsigned) 65535) {
+ SetReqLen(req, len, len);
+ Data (dpy, (char *)data, nelements);
+ } /* else force BadLength */
+ break;
+
+ case 16:
+ len = ((long)nelements + 1)>>1;
+ if (dpy->bigreq_size || req->length + len <= (unsigned) 65535) {
+ SetReqLen(req, len, len);
+ len = (long)nelements << 1;
+ Data16 (dpy, (short *) data, len);
+ } /* else force BadLength */
+ break;
+
+ case 32:
+ len = nelements;
+ if (dpy->bigreq_size || req->length + len <= (unsigned) 65535) {
+ SetReqLen(req, len, len);
+ len = (long)nelements << 2;
+ Data32 (dpy, (long *) data, len);
+ } /* else force BadLength */
+ break;
+
+ default:
+ /* BadValue will be generated */ ;
+ }
+
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return 1;
+ }
+
+
+
+
+
diff --git a/libX11/src/ChSaveSet.c b/libX11/src/ChSaveSet.c
index 46f73270d..068b042d2 100644
--- a/libX11/src/ChSaveSet.c
+++ b/libX11/src/ChSaveSet.c
@@ -1,63 +1,63 @@
-/*
-
-Copyright 1986, 1998 The Open Group
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall not be
-used in advertising or otherwise to promote the sale, use or other dealings
-in this Software without prior written authorization from The Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-
-int
-XChangeSaveSet(
- register Display *dpy,
- Window win,
- int mode)
-{
- register xChangeSaveSetReq *req;
-
- LockDisplay(dpy);
- GetReq(ChangeSaveSet, req);
- req->window = win;
- req->mode = mode;
- UnlockDisplay(dpy);
- SyncHandle();
- return 1;
-}
-
-int
-XAddToSaveSet(
- register Display *dpy,
- Window win)
-{
- return XChangeSaveSet(dpy,win,SetModeInsert);
-}
-
-int
-XRemoveFromSaveSet (
- register Display *dpy,
- Window win)
-{
- return XChangeSaveSet(dpy,win,SetModeDelete);
-}
+/*
+
+Copyright 1986, 1998 The Open Group
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group shall not be
+used in advertising or otherwise to promote the sale, use or other dealings
+in this Software without prior written authorization from The Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+
+int
+XChangeSaveSet(
+ register Display *dpy,
+ Window win,
+ int mode)
+{
+ register xChangeSaveSetReq *req;
+
+ LockDisplay(dpy);
+ GetReq(ChangeSaveSet, req);
+ req->window = win;
+ req->mode = mode;
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return 1;
+}
+
+int
+XAddToSaveSet(
+ register Display *dpy,
+ Window win)
+{
+ return XChangeSaveSet(dpy,win,SetModeInsert);
+}
+
+int
+XRemoveFromSaveSet (
+ register Display *dpy,
+ Window win)
+{
+ return XChangeSaveSet(dpy,win,SetModeDelete);
+}
diff --git a/libX11/src/ChWAttrs.c b/libX11/src/ChWAttrs.c
index d92afd748..25cbcbd05 100644
--- a/libX11/src/ChWAttrs.c
+++ b/libX11/src/ChWAttrs.c
@@ -1,57 +1,57 @@
-/*
-
-Copyright 1986, 1998 The Open Group
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall not be
-used in advertising or otherwise to promote the sale, use or other dealings
-in this Software without prior written authorization from The Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-
-#define AllMaskBits (CWBackPixmap|CWBackPixel|CWBorderPixmap|\
- CWBorderPixel|CWBitGravity|CWWinGravity|\
- CWBackingStore|CWBackingPlanes|CWBackingPixel|\
- CWOverrideRedirect|CWSaveUnder|CWEventMask|\
- CWDontPropagate|CWColormap|CWCursor)
-
-int
-XChangeWindowAttributes (
- register Display *dpy,
- Window w,
- unsigned long valuemask,
- XSetWindowAttributes *attributes)
-{
- register xChangeWindowAttributesReq *req;
-
- LockDisplay(dpy);
- GetReq(ChangeWindowAttributes,req);
- req->window = w;
- valuemask &= AllMaskBits;
- if ((req->valueMask = valuemask))
- _XProcessWindowAttributes (dpy, req, valuemask, attributes);
- UnlockDisplay(dpy);
- SyncHandle();
- return 1;
-}
-
+/*
+
+Copyright 1986, 1998 The Open Group
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group shall not be
+used in advertising or otherwise to promote the sale, use or other dealings
+in this Software without prior written authorization from The Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+
+#define AllMaskBits (CWBackPixmap|CWBackPixel|CWBorderPixmap|\
+ CWBorderPixel|CWBitGravity|CWWinGravity|\
+ CWBackingStore|CWBackingPlanes|CWBackingPixel|\
+ CWOverrideRedirect|CWSaveUnder|CWEventMask|\
+ CWDontPropagate|CWColormap|CWCursor)
+
+int
+XChangeWindowAttributes (
+ register Display *dpy,
+ Window w,
+ unsigned long valuemask,
+ XSetWindowAttributes *attributes)
+{
+ register xChangeWindowAttributesReq *req;
+
+ LockDisplay(dpy);
+ GetReq(ChangeWindowAttributes,req);
+ req->window = w;
+ valuemask &= AllMaskBits;
+ if ((req->valueMask = valuemask))
+ _XProcessWindowAttributes (dpy, req, valuemask, attributes);
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return 1;
+}
+
diff --git a/libX11/src/ChWindow.c b/libX11/src/ChWindow.c
index c00a9167f..fbd6e8846 100644
--- a/libX11/src/ChWindow.c
+++ b/libX11/src/ChWindow.c
@@ -1,63 +1,63 @@
-/*
-
-Copyright 1986, 1998 The Open Group
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall not be
-used in advertising or otherwise to promote the sale, use or other dealings
-in this Software without prior written authorization from The Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-
-int
-XResizeWindow(
- register Display *dpy,
- Window w,
- unsigned int width,
- unsigned int height)
-{
- register xConfigureWindowReq *req;
-
- LockDisplay(dpy);
- GetReqExtra(ConfigureWindow, 8, req); /* 2 4-byte quantities */
-
- req->window = w;
- req->mask = CWWidth | CWHeight;
-#ifdef MUSTCOPY
- {
- unsigned long lwidth = width, lheight = height;
- dpy->bufptr -= 8;
- Data32 (dpy, (long *) &lwidth, 4); /* order dictated by values of */
- Data32 (dpy, (long *) &lheight, 4); /* CWWidth and CWHeight */
- }
-#else
- {
- CARD32 *valuePtr = (CARD32 *) NEXTPTR(req,xConfigureWindowReq);
- *valuePtr++ = width;
- *valuePtr = height;
- }
-#endif /* MUSTCOPY */
- UnlockDisplay(dpy);
- SyncHandle();
- return 1;
-}
+/*
+
+Copyright 1986, 1998 The Open Group
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group shall not be
+used in advertising or otherwise to promote the sale, use or other dealings
+in this Software without prior written authorization from The Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+
+int
+XResizeWindow(
+ register Display *dpy,
+ Window w,
+ unsigned int width,
+ unsigned int height)
+{
+ register xConfigureWindowReq *req;
+
+ LockDisplay(dpy);
+ GetReqExtra(ConfigureWindow, 8, req); /* 2 4-byte quantities */
+
+ req->window = w;
+ req->mask = CWWidth | CWHeight;
+#ifdef MUSTCOPY
+ {
+ unsigned long lwidth = width, lheight = height;
+ dpy->bufptr -= 8;
+ Data32 (dpy, (long *) &lwidth, 4); /* order dictated by values of */
+ Data32 (dpy, (long *) &lheight, 4); /* CWWidth and CWHeight */
+ }
+#else
+ {
+ CARD32 *valuePtr = (CARD32 *) NEXTPTR(req,xConfigureWindowReq);
+ *valuePtr++ = width;
+ *valuePtr = height;
+ }
+#endif /* MUSTCOPY */
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return 1;
+}
diff --git a/libX11/src/ChkIfEv.c b/libX11/src/ChkIfEv.c
index 12065638d..876a850e6 100644
--- a/libX11/src/ChkIfEv.c
+++ b/libX11/src/ChkIfEv.c
@@ -1,83 +1,83 @@
-/*
-
-Copyright 1985, 1987, 1998 The Open Group
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall not be
-used in advertising or otherwise to promote the sale, use or other dealings
-in this Software without prior written authorization from The Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-
-/*
- * Check existing events in queue to find if any match. If so, return.
- * If not, flush buffer and see if any more events are readable. If one
- * matches, return. If all else fails, tell the user no events found.
- */
-
-Bool XCheckIfEvent (
- register Display *dpy,
- register XEvent *event, /* XEvent to be filled in. */
- Bool (*predicate)(
- Display* /* display */,
- XEvent* /* event */,
- char* /* arg */
- ), /* function to call */
- char *arg)
-{
- register _XQEvent *prev, *qelt;
- unsigned long qe_serial = 0;
- int n; /* time through count */
-
- LockDisplay(dpy);
- prev = NULL;
- for (n = 3; --n >= 0;) {
- for (qelt = prev ? prev->next : dpy->head;
- qelt;
- prev = qelt, qelt = qelt->next) {
- if(qelt->qserial_num > qe_serial
- && (*predicate)(dpy, &qelt->event, arg)) {
- *event = qelt->event;
- _XDeq(dpy, prev, qelt);
- _XStoreEventCookie(dpy, event);
- UnlockDisplay(dpy);
- return True;
- }
- }
- if (prev)
- qe_serial = prev->qserial_num;
- switch (n) {
- case 2:
- _XEventsQueued(dpy, QueuedAfterReading);
- break;
- case 1:
- _XFlush(dpy);
- break;
- }
- if (prev && prev->qserial_num != qe_serial)
- /* another thread has snatched this event */
- prev = NULL;
- }
- UnlockDisplay(dpy);
- return False;
-}
+/*
+
+Copyright 1985, 1987, 1998 The Open Group
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group shall not be
+used in advertising or otherwise to promote the sale, use or other dealings
+in this Software without prior written authorization from The Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+
+/*
+ * Check existing events in queue to find if any match. If so, return.
+ * If not, flush buffer and see if any more events are readable. If one
+ * matches, return. If all else fails, tell the user no events found.
+ */
+
+Bool XCheckIfEvent (
+ register Display *dpy,
+ register XEvent *event, /* XEvent to be filled in. */
+ Bool (*predicate)(
+ Display* /* display */,
+ XEvent* /* event */,
+ char* /* arg */
+ ), /* function to call */
+ char *arg)
+{
+ register _XQEvent *prev, *qelt;
+ unsigned long qe_serial = 0;
+ int n; /* time through count */
+
+ LockDisplay(dpy);
+ prev = NULL;
+ for (n = 3; --n >= 0;) {
+ for (qelt = prev ? prev->next : dpy->head;
+ qelt;
+ prev = qelt, qelt = qelt->next) {
+ if(qelt->qserial_num > qe_serial
+ && (*predicate)(dpy, &qelt->event, arg)) {
+ *event = qelt->event;
+ _XDeq(dpy, prev, qelt);
+ _XStoreEventCookie(dpy, event);
+ UnlockDisplay(dpy);
+ return True;
+ }
+ }
+ if (prev)
+ qe_serial = prev->qserial_num;
+ switch (n) {
+ case 2:
+ _XEventsQueued(dpy, QueuedAfterReading);
+ break;
+ case 1:
+ _XFlush(dpy);
+ break;
+ }
+ if (prev && prev->qserial_num != qe_serial)
+ /* another thread has snatched this event */
+ prev = NULL;
+ }
+ UnlockDisplay(dpy);
+ return False;
+}
diff --git a/libX11/src/ChkMaskEv.c b/libX11/src/ChkMaskEv.c
index cd3af5d99..78928e079 100644
--- a/libX11/src/ChkMaskEv.c
+++ b/libX11/src/ChkMaskEv.c
@@ -1,90 +1,90 @@
-/*
-
-Copyright 1985, 1987, 1998 The Open Group
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall not be
-used in advertising or otherwise to promote the sale, use or other dealings
-in this Software without prior written authorization from The Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-
-extern long const _Xevent_to_mask[];
-
-#define AllPointers (PointerMotionMask|PointerMotionHintMask|ButtonMotionMask)
-#define AllButtons (Button1MotionMask|Button2MotionMask|Button3MotionMask|\
- Button4MotionMask|Button5MotionMask)
-
-/*
- * Check existing events in queue to find if any match. If so, return.
- * If not, flush buffer and see if any more events are readable. If one
- * matches, return. If all else fails, tell the user no events found.
- */
-
-Bool XCheckMaskEvent (
- register Display *dpy,
- long mask, /* Selected event mask. */
- register XEvent *event) /* XEvent to be filled in. */
-{
- register _XQEvent *prev, *qelt;
- unsigned long qe_serial = 0;
- int n; /* time through count */
-
- LockDisplay(dpy);
-
- /* Delete unclaimed cookies */
- _XFreeEventCookies(dpy);
-
- prev = NULL;
- for (n = 3; --n >= 0;) {
- for (qelt = prev ? prev->next : dpy->head;
- qelt;
- prev = qelt, qelt = qelt->next) {
- if ((qelt->event.type < GenericEvent) &&
- (_Xevent_to_mask[qelt->event.type] & mask) &&
- ((qelt->event.type != MotionNotify) ||
- (mask & AllPointers) ||
- (mask & AllButtons & qelt->event.xmotion.state))) {
- *event = qelt->event;
- _XDeq(dpy, prev, qelt);
- UnlockDisplay(dpy);
- return True;
- }
- }
- if (prev)
- qe_serial = prev->qserial_num;
- switch (n) {
- case 2:
- _XEventsQueued(dpy, QueuedAfterReading);
- break;
- case 1:
- _XFlush(dpy);
- break;
- }
- if (prev && prev->qserial_num != qe_serial)
- /* another thread has snatched this event */
- prev = NULL;
- }
- UnlockDisplay(dpy);
- return False;
-}
+/*
+
+Copyright 1985, 1987, 1998 The Open Group
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group shall not be
+used in advertising or otherwise to promote the sale, use or other dealings
+in this Software without prior written authorization from The Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+
+extern long const _Xevent_to_mask[];
+
+#define AllPointers (PointerMotionMask|PointerMotionHintMask|ButtonMotionMask)
+#define AllButtons (Button1MotionMask|Button2MotionMask|Button3MotionMask|\
+ Button4MotionMask|Button5MotionMask)
+
+/*
+ * Check existing events in queue to find if any match. If so, return.
+ * If not, flush buffer and see if any more events are readable. If one
+ * matches, return. If all else fails, tell the user no events found.
+ */
+
+Bool XCheckMaskEvent (
+ register Display *dpy,
+ long mask, /* Selected event mask. */
+ register XEvent *event) /* XEvent to be filled in. */
+{
+ register _XQEvent *prev, *qelt;
+ unsigned long qe_serial = 0;
+ int n; /* time through count */
+
+ LockDisplay(dpy);
+
+ /* Delete unclaimed cookies */
+ _XFreeEventCookies(dpy);
+
+ prev = NULL;
+ for (n = 3; --n >= 0;) {
+ for (qelt = prev ? prev->next : dpy->head;
+ qelt;
+ prev = qelt, qelt = qelt->next) {
+ if ((qelt->event.type < GenericEvent) &&
+ (_Xevent_to_mask[qelt->event.type] & mask) &&
+ ((qelt->event.type != MotionNotify) ||
+ (mask & AllPointers) ||
+ (mask & AllButtons & qelt->event.xmotion.state))) {
+ *event = qelt->event;
+ _XDeq(dpy, prev, qelt);
+ UnlockDisplay(dpy);
+ return True;
+ }
+ }
+ if (prev)
+ qe_serial = prev->qserial_num;
+ switch (n) {
+ case 2:
+ _XEventsQueued(dpy, QueuedAfterReading);
+ break;
+ case 1:
+ _XFlush(dpy);
+ break;
+ }
+ if (prev && prev->qserial_num != qe_serial)
+ /* another thread has snatched this event */
+ prev = NULL;
+ }
+ UnlockDisplay(dpy);
+ return False;
+}
diff --git a/libX11/src/ChkWinEv.c b/libX11/src/ChkWinEv.c
index 299086399..9fb7db06a 100644
--- a/libX11/src/ChkWinEv.c
+++ b/libX11/src/ChkWinEv.c
@@ -1,91 +1,91 @@
-/*
-
-Copyright 1985, 1987, 1998 The Open Group
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall not be
-used in advertising or otherwise to promote the sale, use or other dealings
-in this Software without prior written authorization from The Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-
-extern long const _Xevent_to_mask[];
-#define AllPointers (PointerMotionMask|PointerMotionHintMask|ButtonMotionMask)
-#define AllButtons (Button1MotionMask|Button2MotionMask|Button3MotionMask|\
- Button4MotionMask|Button5MotionMask)
-
-/*
- * Check existing events in queue to find if any match. If so, return.
- * If not, flush buffer and see if any more events are readable. If one
- * matches, return. If all else fails, tell the user no events found.
- */
-
-Bool XCheckWindowEvent (
- register Display *dpy,
- Window w, /* Selected window. */
- long mask, /* Selected event mask. */
- register XEvent *event) /* XEvent to be filled in. */
-{
- register _XQEvent *prev, *qelt;
- unsigned long qe_serial = 0;
- int n; /* time through count */
-
- LockDisplay(dpy);
-
- /* Delete unclaimed cookies */
- _XFreeEventCookies(dpy);
-
- prev = NULL;
- for (n = 3; --n >= 0;) {
- for (qelt = prev ? prev->next : dpy->head;
- qelt;
- prev = qelt, qelt = qelt->next) {
- if ((qelt->event.xany.window == w) &&
- (qelt->event.type < GenericEvent) &&
- (_Xevent_to_mask[qelt->event.type] & mask) &&
- ((qelt->event.type != MotionNotify) ||
- (mask & AllPointers) ||
- (mask & AllButtons & qelt->event.xmotion.state))) {
- *event = qelt->event;
- _XDeq(dpy, prev, qelt);
- UnlockDisplay(dpy);
- return True;
- }
- }
- if (prev)
- qe_serial = prev->qserial_num;
- switch (n) {
- case 2:
- _XEventsQueued(dpy, QueuedAfterReading);
- break;
- case 1:
- _XFlush(dpy);
- break;
- }
- if (prev && prev->qserial_num != qe_serial)
- /* another thread has snatched this event */
- prev = NULL;
- }
- UnlockDisplay(dpy);
- return False;
-}
+/*
+
+Copyright 1985, 1987, 1998 The Open Group
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group shall not be
+used in advertising or otherwise to promote the sale, use or other dealings
+in this Software without prior written authorization from The Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+
+extern long const _Xevent_to_mask[];
+#define AllPointers (PointerMotionMask|PointerMotionHintMask|ButtonMotionMask)
+#define AllButtons (Button1MotionMask|Button2MotionMask|Button3MotionMask|\
+ Button4MotionMask|Button5MotionMask)
+
+/*
+ * Check existing events in queue to find if any match. If so, return.
+ * If not, flush buffer and see if any more events are readable. If one
+ * matches, return. If all else fails, tell the user no events found.
+ */
+
+Bool XCheckWindowEvent (
+ register Display *dpy,
+ Window w, /* Selected window. */
+ long mask, /* Selected event mask. */
+ register XEvent *event) /* XEvent to be filled in. */
+{
+ register _XQEvent *prev, *qelt;
+ unsigned long qe_serial = 0;
+ int n; /* time through count */
+
+ LockDisplay(dpy);
+
+ /* Delete unclaimed cookies */
+ _XFreeEventCookies(dpy);
+
+ prev = NULL;
+ for (n = 3; --n >= 0;) {
+ for (qelt = prev ? prev->next : dpy->head;
+ qelt;
+ prev = qelt, qelt = qelt->next) {
+ if ((qelt->event.xany.window == w) &&
+ (qelt->event.type < GenericEvent) &&
+ (_Xevent_to_mask[qelt->event.type] & mask) &&
+ ((qelt->event.type != MotionNotify) ||
+ (mask & AllPointers) ||
+ (mask & AllButtons & qelt->event.xmotion.state))) {
+ *event = qelt->event;
+ _XDeq(dpy, prev, qelt);
+ UnlockDisplay(dpy);
+ return True;
+ }
+ }
+ if (prev)
+ qe_serial = prev->qserial_num;
+ switch (n) {
+ case 2:
+ _XEventsQueued(dpy, QueuedAfterReading);
+ break;
+ case 1:
+ _XFlush(dpy);
+ break;
+ }
+ if (prev && prev->qserial_num != qe_serial)
+ /* another thread has snatched this event */
+ prev = NULL;
+ }
+ UnlockDisplay(dpy);
+ return False;
+}
diff --git a/libX11/src/CirWin.c b/libX11/src/CirWin.c
index 673755cb3..e37a42ade 100644
--- a/libX11/src/CirWin.c
+++ b/libX11/src/CirWin.c
@@ -1,48 +1,48 @@
-/*
-
-Copyright 1986, 1998 The Open Group
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall not be
-used in advertising or otherwise to promote the sale, use or other dealings
-in this Software without prior written authorization from The Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-
-int
-XCirculateSubwindows(
- register Display *dpy,
- Window w,
- int direction)
-{
- register xCirculateWindowReq *req;
-
- LockDisplay(dpy);
- GetReq(CirculateWindow, req);
- req->window = w;
- req->direction = direction;
- UnlockDisplay(dpy);
- SyncHandle();
- return 1;
-}
-
+/*
+
+Copyright 1986, 1998 The Open Group
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group shall not be
+used in advertising or otherwise to promote the sale, use or other dealings
+in this Software without prior written authorization from The Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+
+int
+XCirculateSubwindows(
+ register Display *dpy,
+ Window w,
+ int direction)
+{
+ register xCirculateWindowReq *req;
+
+ LockDisplay(dpy);
+ GetReq(CirculateWindow, req);
+ req->window = w;
+ req->direction = direction;
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return 1;
+}
+
diff --git a/libX11/src/CirWinDn.c b/libX11/src/CirWinDn.c
index 51a5cd218..f2b54852b 100644
--- a/libX11/src/CirWinDn.c
+++ b/libX11/src/CirWinDn.c
@@ -1,47 +1,47 @@
-/*
-
-Copyright 1986, 1998 The Open Group
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall not be
-used in advertising or otherwise to promote the sale, use or other dealings
-in this Software without prior written authorization from The Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-
-int
-XCirculateSubwindowsDown(
- register Display *dpy,
- Window w)
-{
- register xCirculateWindowReq *req;
-
- LockDisplay(dpy);
- GetReq(CirculateWindow, req);
- req->window = w;
- req->direction = LowerHighest;
- UnlockDisplay(dpy);
- SyncHandle();
- return 1;
-}
-
+/*
+
+Copyright 1986, 1998 The Open Group
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group shall not be
+used in advertising or otherwise to promote the sale, use or other dealings
+in this Software without prior written authorization from The Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+
+int
+XCirculateSubwindowsDown(
+ register Display *dpy,
+ Window w)
+{
+ register xCirculateWindowReq *req;
+
+ LockDisplay(dpy);
+ GetReq(CirculateWindow, req);
+ req->window = w;
+ req->direction = LowerHighest;
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return 1;
+}
+
diff --git a/libX11/src/CirWinUp.c b/libX11/src/CirWinUp.c
index ffbae76c7..be9f094cd 100644
--- a/libX11/src/CirWinUp.c
+++ b/libX11/src/CirWinUp.c
@@ -1,47 +1,47 @@
-/*
-
-Copyright 1986, 1998 The Open Group
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall not be
-used in advertising or otherwise to promote the sale, use or other dealings
-in this Software without prior written authorization from The Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-
-int
-XCirculateSubwindowsUp(
- register Display *dpy,
- Window w)
-{
- register xCirculateWindowReq *req;
-
- LockDisplay(dpy);
- GetReq(CirculateWindow, req);
- req->window = w;
- req->direction = RaiseLowest;
- UnlockDisplay(dpy);
- SyncHandle();
- return 1;
-}
-
+/*
+
+Copyright 1986, 1998 The Open Group
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group shall not be
+used in advertising or otherwise to promote the sale, use or other dealings
+in this Software without prior written authorization from The Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+
+int
+XCirculateSubwindowsUp(
+ register Display *dpy,
+ Window w)
+{
+ register xCirculateWindowReq *req;
+
+ LockDisplay(dpy);
+ GetReq(CirculateWindow, req);
+ req->window = w;
+ req->direction = RaiseLowest;
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return 1;
+}
+
diff --git a/libX11/src/ClDisplay.c b/libX11/src/ClDisplay.c
index 148284ff9..bddd7736f 100644
--- a/libX11/src/ClDisplay.c
+++ b/libX11/src/ClDisplay.c
@@ -1,74 +1,74 @@
-
-/*
-
-Copyright 1985, 1990, 1998 The Open Group
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
-
-The above copyright notice and this permission notice shall be included
-in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
-IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR
-OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
-ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall
-not be used in advertising or otherwise to promote the sale, use or
-other dealings in this Software without prior written authorization
-from The Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xxcbint.h"
-#include "Xlib.h"
-#include "Xlibint.h"
-#include "Xintconn.h"
-
-/*
- * XCloseDisplay - XSync the connection to the X Server, close the connection,
- * and free all associated storage. Extension close procs should only free
- * memory and must be careful about the types of requests they generate.
- */
-
-int
-XCloseDisplay (
- register Display *dpy)
-{
- register _XExtension *ext;
- register int i;
-
- if (!(dpy->flags & XlibDisplayClosing))
- {
- dpy->flags |= XlibDisplayClosing;
- for (i = 0; i < dpy->nscreens; i++) {
- register Screen *sp = &dpy->screens[i];
- XFreeGC (dpy, sp->default_gc);
- }
- if (dpy->cursor_font != None) {
- XUnloadFont (dpy, dpy->cursor_font);
- }
- XSync(dpy, 1); /* throw away pending events, catch errors */
- /* call out to any extensions interested */
- for (ext = dpy->ext_procs; ext; ext = ext->next) {
- if (ext->close_display)
- (*ext->close_display)(dpy, &ext->codes);
- }
- /* if the closes generated more protocol, sync them up */
- if (dpy->request != dpy->last_request_read)
- XSync(dpy, 1);
- }
- xcb_disconnect(dpy->xcb->connection);
- _XFreeDisplayStructure (dpy);
- return 0;
-}
+
+/*
+
+Copyright 1985, 1990, 1998 The Open Group
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
+
+The above copyright notice and this permission notice shall be included
+in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR
+OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
+ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group shall
+not be used in advertising or otherwise to promote the sale, use or
+other dealings in this Software without prior written authorization
+from The Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xxcbint.h"
+#include "Xlib.h"
+#include "Xlibint.h"
+#include "Xintconn.h"
+
+/*
+ * XCloseDisplay - XSync the connection to the X Server, close the connection,
+ * and free all associated storage. Extension close procs should only free
+ * memory and must be careful about the types of requests they generate.
+ */
+
+int
+XCloseDisplay (
+ register Display *dpy)
+{
+ register _XExtension *ext;
+ register int i;
+
+ if (!(dpy->flags & XlibDisplayClosing))
+ {
+ dpy->flags |= XlibDisplayClosing;
+ for (i = 0; i < dpy->nscreens; i++) {
+ register Screen *sp = &dpy->screens[i];
+ XFreeGC (dpy, sp->default_gc);
+ }
+ if (dpy->cursor_font != None) {
+ XUnloadFont (dpy, dpy->cursor_font);
+ }
+ XSync(dpy, 1); /* throw away pending events, catch errors */
+ /* call out to any extensions interested */
+ for (ext = dpy->ext_procs; ext; ext = ext->next) {
+ if (ext->close_display)
+ (*ext->close_display)(dpy, &ext->codes);
+ }
+ /* if the closes generated more protocol, sync them up */
+ if (dpy->request != dpy->last_request_read)
+ XSync(dpy, 1);
+ }
+ xcb_disconnect(dpy->xcb->connection);
+ _XFreeDisplayStructure (dpy);
+ return 0;
+}
diff --git a/libX11/src/Clear.c b/libX11/src/Clear.c
index 16ad2ec0b..63dc64045 100644
--- a/libX11/src/Clear.c
+++ b/libX11/src/Clear.c
@@ -1,49 +1,49 @@
-/*
-
-Copyright 1986, 1998 The Open Group
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall not be
-used in advertising or otherwise to promote the sale, use or other dealings
-in this Software without prior written authorization from The Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-
-int
-XClearWindow(
- register Display *dpy,
- Window w)
-{
- register xClearAreaReq *req;
-
- LockDisplay(dpy);
- GetReq(ClearArea, req);
- req->window = w;
- req->x = req->y = req->width = req->height = 0;
- /* these values mean "clear the entire window" */
- req->exposures = xFalse;
- UnlockDisplay(dpy);
- SyncHandle();
- return 1;
-}
-
+/*
+
+Copyright 1986, 1998 The Open Group
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group shall not be
+used in advertising or otherwise to promote the sale, use or other dealings
+in this Software without prior written authorization from The Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+
+int
+XClearWindow(
+ register Display *dpy,
+ Window w)
+{
+ register xClearAreaReq *req;
+
+ LockDisplay(dpy);
+ GetReq(ClearArea, req);
+ req->window = w;
+ req->x = req->y = req->width = req->height = 0;
+ /* these values mean "clear the entire window" */
+ req->exposures = xFalse;
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return 1;
+}
+
diff --git a/libX11/src/ClearArea.c b/libX11/src/ClearArea.c
index f0d7308dd..41fd17c80 100644
--- a/libX11/src/ClearArea.c
+++ b/libX11/src/ClearArea.c
@@ -1,56 +1,56 @@
-/*
-
-Copyright 1986, 1998 The Open Group
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall not be
-used in advertising or otherwise to promote the sale, use or other dealings
-in this Software without prior written authorization from The Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-
-int
-XClearArea (
- register Display *dpy,
- Window w,
- int x,
- int y,
- unsigned int width,
- unsigned int height,
- Bool exposures)
-{
- register xClearAreaReq *req;
-
- LockDisplay(dpy);
- GetReq(ClearArea, req);
- req->window = w;
- req->x = x;
- req->y = y;
- req->width = width;
- req->height = height;
- req->exposures = exposures;
- UnlockDisplay(dpy);
- SyncHandle();
- return 1;
-}
-
+/*
+
+Copyright 1986, 1998 The Open Group
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group shall not be
+used in advertising or otherwise to promote the sale, use or other dealings
+in this Software without prior written authorization from The Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+
+int
+XClearArea (
+ register Display *dpy,
+ Window w,
+ int x,
+ int y,
+ unsigned int width,
+ unsigned int height,
+ Bool exposures)
+{
+ register xClearAreaReq *req;
+
+ LockDisplay(dpy);
+ GetReq(ClearArea, req);
+ req->window = w;
+ req->x = x;
+ req->y = y;
+ req->width = width;
+ req->height = height;
+ req->exposures = exposures;
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return 1;
+}
+
diff --git a/libX11/src/Cmap.h b/libX11/src/Cmap.h
index e41c96512..062b5383b 100644
--- a/libX11/src/Cmap.h
+++ b/libX11/src/Cmap.h
@@ -1,10 +1,10 @@
-
-#ifndef _CMAP_H_
-#define _CMAP_H_
-
-extern void
-_XcmsDeleteCmapRec(
- Display *dpy,
- Colormap cmap);
-
-#endif /* _CMAP_H_ */
+
+#ifndef _CMAP_H_
+#define _CMAP_H_
+
+extern void
+_XcmsDeleteCmapRec(
+ Display *dpy,
+ Colormap cmap);
+
+#endif /* _CMAP_H_ */
diff --git a/libX11/src/ConfWind.c b/libX11/src/ConfWind.c
index 2d627763e..dd55b4422 100644
--- a/libX11/src/ConfWind.c
+++ b/libX11/src/ConfWind.c
@@ -1,71 +1,71 @@
-/*
-
-Copyright 1986, 1998 The Open Group
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall not be
-used in advertising or otherwise to promote the sale, use or other dealings
-in this Software without prior written authorization from The Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-
-int
-XMoveResizeWindow(
- register Display *dpy,
- Window w,
- int x,
- int y,
- unsigned int width,
- unsigned int height)
-{
- register xConfigureWindowReq *req;
-
- LockDisplay(dpy);
- GetReqExtra(ConfigureWindow, 16, req);
- req->window = w;
- req->mask = CWX | CWY | CWWidth | CWHeight;
-#ifdef MUSTCOPY
- {
- long lx = x, ly = y;
- unsigned long lwidth = width, lheight = height;
-
- dpy->bufptr -= 16;
- Data32 (dpy, (long *) &lx, 4); /* order must match values of */
- Data32 (dpy, (long *) &ly, 4); /* CWX, CWY, CWWidth, and CWHeight */
- Data32 (dpy, (long *) &lwidth, 4);
- Data32 (dpy, (long *) &lheight, 4);
- }
-#else
- {
- register CARD32 *valuePtr =
- (CARD32 *) NEXTPTR(req,xConfigureWindowReq);
- *valuePtr++ = x;
- *valuePtr++ = y;
- *valuePtr++ = width;
- *valuePtr = height;
- }
-#endif /* MUSTCOPY */
- UnlockDisplay(dpy);
- SyncHandle();
- return 1;
-}
+/*
+
+Copyright 1986, 1998 The Open Group
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group shall not be
+used in advertising or otherwise to promote the sale, use or other dealings
+in this Software without prior written authorization from The Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+
+int
+XMoveResizeWindow(
+ register Display *dpy,
+ Window w,
+ int x,
+ int y,
+ unsigned int width,
+ unsigned int height)
+{
+ register xConfigureWindowReq *req;
+
+ LockDisplay(dpy);
+ GetReqExtra(ConfigureWindow, 16, req);
+ req->window = w;
+ req->mask = CWX | CWY | CWWidth | CWHeight;
+#ifdef MUSTCOPY
+ {
+ long lx = x, ly = y;
+ unsigned long lwidth = width, lheight = height;
+
+ dpy->bufptr -= 16;
+ Data32 (dpy, (long *) &lx, 4); /* order must match values of */
+ Data32 (dpy, (long *) &ly, 4); /* CWX, CWY, CWWidth, and CWHeight */
+ Data32 (dpy, (long *) &lwidth, 4);
+ Data32 (dpy, (long *) &lheight, 4);
+ }
+#else
+ {
+ register CARD32 *valuePtr =
+ (CARD32 *) NEXTPTR(req,xConfigureWindowReq);
+ *valuePtr++ = x;
+ *valuePtr++ = y;
+ *valuePtr++ = width;
+ *valuePtr = height;
+ }
+#endif /* MUSTCOPY */
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return 1;
+}
diff --git a/libX11/src/Context.c b/libX11/src/Context.c
index ae059cb5c..79ae7d66c 100644
--- a/libX11/src/Context.c
+++ b/libX11/src/Context.c
@@ -1,302 +1,302 @@
-
-/***********************************************************
-Copyright 1987, 1988, 1990 by Digital Equipment Corporation, Maynard,
-
- All Rights Reserved
-
-Permission to use, copy, modify, and distribute this software and its
-documentation for any purpose and without fee is hereby granted,
-provided that the above copyright notice appear in all copies and that
-both that copyright notice and this permission notice appear in
-supporting documentation, and that the name Digital not be
-used in advertising or publicity pertaining to distribution of the
-software without specific, written prior permission.
-
-DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
-ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
-DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
-ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
-WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
-ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
-SOFTWARE.
-
-******************************************************************/
-
-/*
-
-Copyright 1987, 1988, 1990, 1994, 1998 The Open Group
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
-
-The above copyright notice and this permission notice shall be included
-in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
-IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR
-OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
-ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall
-not be used in advertising or otherwise to promote the sale, use or
-other dealings in this Software without prior written authorization
-from The Open Group.
-
-*/
-
-/* This module implements a simple sparse array.
-
- XSaveContext(a,b,c,d) will store d in position (a,b,c) of the array.
- XFindContext(a,b,c,&d) will set d to be the value in position (a,b,c).
- XDeleteContext(a,b,c) will delete the entry in (a,b,c).
-
- a is a display id, b is a resource id, and c is a Context. d is just an
- XPointer. This code will work with any range of parameters, but is geared
- to be most efficient with very few (one or two) different a's.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-#include "Xutil.h"
-#ifdef XTHREADS
-#include "locking.h"
-#endif
-
-#define INITHASHMASK 63 /* Number of entries originally in the hash table. */
-
-typedef struct _TableEntryRec { /* Stores one entry. */
- XID rid;
- XContext context;
- XPointer data;
- struct _TableEntryRec *next;
-} TableEntryRec, *TableEntry;
-
-typedef struct _XContextDB { /* Stores hash table for one display. */
- TableEntry *table; /* Pointer to array of hash entries. */
- int mask; /* Current size of hash table minus 1. */
- int numentries; /* Number of entries currently in table. */
-#ifdef XTHREADS
- LockInfoRec linfo;
-#endif
-} DBRec, *DB;
-
-#ifdef MOTIFBC
-static DB NullDB = (DB)0;
-#endif
-
-/* Given an XID and a context, returns a value between 0 and HashSize-1.
- Currently, this requires that HashSize be a power of 2.
-*/
-
-#define Hash(db,rid,context) \
- (db)->table[(((rid) << 1) + context) & (db)->mask]
-
-/* Resize the given db */
-
-static void ResizeTable(DB db)
-{
- TableEntry *otable;
- register TableEntry entry, next, *pold, *head;
- register int i, j;
-
- otable = db->table;
- for (i = INITHASHMASK+1; (i + i) < db->numentries; )
- i += i;
- db->table = (TableEntry *) Xcalloc((unsigned)i, sizeof(TableEntry));
- if (!db->table) {
- db->table = otable;
- return;
- }
- j = db->mask + 1;
- db->mask = i - 1;
- for (pold = otable ; --j >= 0; pold++) {
- for (entry = *pold; entry; entry = next) {
- next = entry->next;
- head = &Hash(db, entry->rid, entry->context);
- entry->next = *head;
- *head = entry;
- }
- }
- Xfree((char *) otable);
-}
-
-static void _XFreeContextDB(Display *display)
-{
- register DB db;
- register int i;
- register TableEntry *pentry, entry, next;
-
- db = display->context_db;
- if (db) {
- for (i = db->mask + 1, pentry = db->table ; --i >= 0; pentry++) {
- for (entry = *pentry; entry; entry = next) {
- next = entry->next;
- Xfree((char *)entry);
- }
- }
- Xfree((char *) db->table);
- _XFreeMutex(&db->linfo);
- Xfree((char *) db);
- }
-}
-
-/* Public routines. */
-
-/* Save the given value of data to correspond with the keys XID and context.
- Returns nonzero error code if an error has occured, 0 otherwise.
- Possible errors are Out-of-memory.
-*/
-
-int XSaveContext(
- Display *display,
- register XID rid,
- register XContext context,
- _Xconst char* data)
-{
- DB *pdb;
- register DB db;
- TableEntry *head;
- register TableEntry entry;
-
-#ifdef MOTIFBC
- if (!display) {
- pdb = &NullDB;
- db = *pdb;
- } else
-#endif
- {
- LockDisplay(display);
- pdb = &display->context_db;
- db = *pdb;
- UnlockDisplay(display);
- }
- if (!db) {
- db = (DB) Xmalloc(sizeof(DBRec));
- if (!db)
- return XCNOMEM;
- db->mask = INITHASHMASK;
- db->table = (TableEntry *)Xcalloc(db->mask + 1, sizeof(TableEntry));
- if (!db->table) {
- Xfree((char *)db);
- return XCNOMEM;
- }
- db->numentries = 0;
- _XCreateMutex(&db->linfo);
-#ifdef MOTIFBC
- if (!display) *pdb = db; else
-#endif
- {
- LockDisplay(display);
- *pdb = db;
- display->free_funcs->context_db = _XFreeContextDB;
- UnlockDisplay(display);
- }
- }
- _XLockMutex(&db->linfo);
- head = &Hash(db, rid, context);
- _XUnlockMutex(&db->linfo);
- for (entry = *head; entry; entry = entry->next) {
- if (entry->rid == rid && entry->context == context) {
- entry->data = (XPointer)data;
- return 0;
- }
- }
- entry = (TableEntry) Xmalloc(sizeof(TableEntryRec));
- if (!entry)
- return XCNOMEM;
- entry->rid = rid;
- entry->context = context;
- entry->data = (XPointer)data;
- entry->next = *head;
- *head = entry;
- _XLockMutex(&db->linfo);
- db->numentries++;
- if (db->numentries > (db->mask << 2))
- ResizeTable(db);
- _XUnlockMutex(&db->linfo);
- return 0;
-}
-
-
-
-/* Given an XID and context, returns the associated data. Note that data
- here is a pointer since it is a return value. Returns nonzero error code
- if an error has occured, 0 otherwise. Possible errors are Entry-not-found.
-*/
-
-int XFindContext(Display *display, XID rid, XContext context, XPointer *data)
-{
- register DB db;
- register TableEntry entry;
-
-#ifdef MOTIFBC
- if (!display) db = NullDB; else
-#endif
- {
- LockDisplay(display);
- db = display->context_db;
- UnlockDisplay(display);
- }
- if (!db)
- return XCNOENT;
- _XLockMutex(&db->linfo);
- for (entry = Hash(db, rid, context); entry; entry = entry->next)
- {
- if (entry->rid == rid && entry->context == context) {
- *data = (XPointer)entry->data;
- _XUnlockMutex(&db->linfo);
- return 0;
- }
- }
- _XUnlockMutex(&db->linfo);
- return XCNOENT;
-}
-
-
-
-/* Deletes the entry for the given XID and context from the datastructure.
- This returns the same thing that FindContext would have returned if called
- with the same arguments.
-*/
-
-int XDeleteContext(Display *display, XID rid, XContext context)
-{
- register DB db;
- register TableEntry entry, *prev;
-
-#ifdef MOTIFBC
- if (!display) db = NullDB; else
-#endif
- {
- LockDisplay(display);
- db = display->context_db;
- UnlockDisplay(display);
- }
- if (!db)
- return XCNOENT;
- _XLockMutex(&db->linfo);
- for (prev = &Hash(db, rid, context);
- (entry = *prev);
- prev = &entry->next) {
- if (entry->rid == rid && entry->context == context) {
- *prev = entry->next;
- Xfree((char *) entry);
- db->numentries--;
- if (db->numentries < db->mask && db->mask > INITHASHMASK)
- ResizeTable(db);
- _XUnlockMutex(&db->linfo);
- return 0;
- }
- }
- _XUnlockMutex(&db->linfo);
- return XCNOENT;
-}
+
+/***********************************************************
+Copyright 1987, 1988, 1990 by Digital Equipment Corporation, Maynard,
+
+ All Rights Reserved
+
+Permission to use, copy, modify, and distribute this software and its
+documentation for any purpose and without fee is hereby granted,
+provided that the above copyright notice appear in all copies and that
+both that copyright notice and this permission notice appear in
+supporting documentation, and that the name Digital not be
+used in advertising or publicity pertaining to distribution of the
+software without specific, written prior permission.
+
+DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
+ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
+DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
+ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
+WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
+ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
+SOFTWARE.
+
+******************************************************************/
+
+/*
+
+Copyright 1987, 1988, 1990, 1994, 1998 The Open Group
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
+
+The above copyright notice and this permission notice shall be included
+in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR
+OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
+ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group shall
+not be used in advertising or otherwise to promote the sale, use or
+other dealings in this Software without prior written authorization
+from The Open Group.
+
+*/
+
+/* This module implements a simple sparse array.
+
+ XSaveContext(a,b,c,d) will store d in position (a,b,c) of the array.
+ XFindContext(a,b,c,&d) will set d to be the value in position (a,b,c).
+ XDeleteContext(a,b,c) will delete the entry in (a,b,c).
+
+ a is a display id, b is a resource id, and c is a Context. d is just an
+ XPointer. This code will work with any range of parameters, but is geared
+ to be most efficient with very few (one or two) different a's.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+#include "Xutil.h"
+#ifdef XTHREADS
+#include "locking.h"
+#endif
+
+#define INITHASHMASK 63 /* Number of entries originally in the hash table. */
+
+typedef struct _TableEntryRec { /* Stores one entry. */
+ XID rid;
+ XContext context;
+ XPointer data;
+ struct _TableEntryRec *next;
+} TableEntryRec, *TableEntry;
+
+typedef struct _XContextDB { /* Stores hash table for one display. */
+ TableEntry *table; /* Pointer to array of hash entries. */
+ int mask; /* Current size of hash table minus 1. */
+ int numentries; /* Number of entries currently in table. */
+#ifdef XTHREADS
+ LockInfoRec linfo;
+#endif
+} DBRec, *DB;
+
+#ifdef MOTIFBC
+static DB NullDB = (DB)0;
+#endif
+
+/* Given an XID and a context, returns a value between 0 and HashSize-1.
+ Currently, this requires that HashSize be a power of 2.
+*/
+
+#define Hash(db,rid,context) \
+ (db)->table[(((rid) << 1) + context) & (db)->mask]
+
+/* Resize the given db */
+
+static void ResizeTable(DB db)
+{
+ TableEntry *otable;
+ register TableEntry entry, next, *pold, *head;
+ register int i, j;
+
+ otable = db->table;
+ for (i = INITHASHMASK+1; (i + i) < db->numentries; )
+ i += i;
+ db->table = (TableEntry *) Xcalloc((unsigned)i, sizeof(TableEntry));
+ if (!db->table) {
+ db->table = otable;
+ return;
+ }
+ j = db->mask + 1;
+ db->mask = i - 1;
+ for (pold = otable ; --j >= 0; pold++) {
+ for (entry = *pold; entry; entry = next) {
+ next = entry->next;
+ head = &Hash(db, entry->rid, entry->context);
+ entry->next = *head;
+ *head = entry;
+ }
+ }
+ Xfree((char *) otable);
+}
+
+static void _XFreeContextDB(Display *display)
+{
+ register DB db;
+ register int i;
+ register TableEntry *pentry, entry, next;
+
+ db = display->context_db;
+ if (db) {
+ for (i = db->mask + 1, pentry = db->table ; --i >= 0; pentry++) {
+ for (entry = *pentry; entry; entry = next) {
+ next = entry->next;
+ Xfree((char *)entry);
+ }
+ }
+ Xfree((char *) db->table);
+ _XFreeMutex(&db->linfo);
+ Xfree((char *) db);
+ }
+}
+
+/* Public routines. */
+
+/* Save the given value of data to correspond with the keys XID and context.
+ Returns nonzero error code if an error has occured, 0 otherwise.
+ Possible errors are Out-of-memory.
+*/
+
+int XSaveContext(
+ Display *display,
+ register XID rid,
+ register XContext context,
+ _Xconst char* data)
+{
+ DB *pdb;
+ register DB db;
+ TableEntry *head;
+ register TableEntry entry;
+
+#ifdef MOTIFBC
+ if (!display) {
+ pdb = &NullDB;
+ db = *pdb;
+ } else
+#endif
+ {
+ LockDisplay(display);
+ pdb = &display->context_db;
+ db = *pdb;
+ UnlockDisplay(display);
+ }
+ if (!db) {
+ db = (DB) Xmalloc(sizeof(DBRec));
+ if (!db)
+ return XCNOMEM;
+ db->mask = INITHASHMASK;
+ db->table = (TableEntry *)Xcalloc(db->mask + 1, sizeof(TableEntry));
+ if (!db->table) {
+ Xfree((char *)db);
+ return XCNOMEM;
+ }
+ db->numentries = 0;
+ _XCreateMutex(&db->linfo);
+#ifdef MOTIFBC
+ if (!display) *pdb = db; else
+#endif
+ {
+ LockDisplay(display);
+ *pdb = db;
+ display->free_funcs->context_db = _XFreeContextDB;
+ UnlockDisplay(display);
+ }
+ }
+ _XLockMutex(&db->linfo);
+ head = &Hash(db, rid, context);
+ _XUnlockMutex(&db->linfo);
+ for (entry = *head; entry; entry = entry->next) {
+ if (entry->rid == rid && entry->context == context) {
+ entry->data = (XPointer)data;
+ return 0;
+ }
+ }
+ entry = (TableEntry) Xmalloc(sizeof(TableEntryRec));
+ if (!entry)
+ return XCNOMEM;
+ entry->rid = rid;
+ entry->context = context;
+ entry->data = (XPointer)data;
+ entry->next = *head;
+ *head = entry;
+ _XLockMutex(&db->linfo);
+ db->numentries++;
+ if (db->numentries > (db->mask << 2))
+ ResizeTable(db);
+ _XUnlockMutex(&db->linfo);
+ return 0;
+}
+
+
+
+/* Given an XID and context, returns the associated data. Note that data
+ here is a pointer since it is a return value. Returns nonzero error code
+ if an error has occured, 0 otherwise. Possible errors are Entry-not-found.
+*/
+
+int XFindContext(Display *display, XID rid, XContext context, XPointer *data)
+{
+ register DB db;
+ register TableEntry entry;
+
+#ifdef MOTIFBC
+ if (!display) db = NullDB; else
+#endif
+ {
+ LockDisplay(display);
+ db = display->context_db;
+ UnlockDisplay(display);
+ }
+ if (!db)
+ return XCNOENT;
+ _XLockMutex(&db->linfo);
+ for (entry = Hash(db, rid, context); entry; entry = entry->next)
+ {
+ if (entry->rid == rid && entry->context == context) {
+ *data = (XPointer)entry->data;
+ _XUnlockMutex(&db->linfo);
+ return 0;
+ }
+ }
+ _XUnlockMutex(&db->linfo);
+ return XCNOENT;
+}
+
+
+
+/* Deletes the entry for the given XID and context from the datastructure.
+ This returns the same thing that FindContext would have returned if called
+ with the same arguments.
+*/
+
+int XDeleteContext(Display *display, XID rid, XContext context)
+{
+ register DB db;
+ register TableEntry entry, *prev;
+
+#ifdef MOTIFBC
+ if (!display) db = NullDB; else
+#endif
+ {
+ LockDisplay(display);
+ db = display->context_db;
+ UnlockDisplay(display);
+ }
+ if (!db)
+ return XCNOENT;
+ _XLockMutex(&db->linfo);
+ for (prev = &Hash(db, rid, context);
+ (entry = *prev);
+ prev = &entry->next) {
+ if (entry->rid == rid && entry->context == context) {
+ *prev = entry->next;
+ Xfree((char *) entry);
+ db->numentries--;
+ if (db->numentries < db->mask && db->mask > INITHASHMASK)
+ ResizeTable(db);
+ _XUnlockMutex(&db->linfo);
+ return 0;
+ }
+ }
+ _XUnlockMutex(&db->linfo);
+ return XCNOENT;
+}
diff --git a/libX11/src/ConvSel.c b/libX11/src/ConvSel.c
index 6b5058fd9..2dece58b5 100644
--- a/libX11/src/ConvSel.c
+++ b/libX11/src/ConvSel.c
@@ -1,53 +1,53 @@
-/*
-
-Copyright 1986,1998 The Open Group
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall not be
-used in advertising or otherwise to promote the sale, use or other dealings
-in this Software without prior written authorization from The Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-
-int
-XConvertSelection(
- register Display *dpy,
- Atom selection,
- Atom target,
- Atom property,
- Window requestor,
- Time time)
-{
- register xConvertSelectionReq *req;
-
- LockDisplay(dpy);
- GetReq(ConvertSelection, req);
- req->selection = selection;
- req->target = target;
- req->property = property;
- req->requestor = requestor;
- req->time = time;
- UnlockDisplay(dpy);
- SyncHandle();
- return Success;
-}
+/*
+
+Copyright 1986,1998 The Open Group
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group shall not be
+used in advertising or otherwise to promote the sale, use or other dealings
+in this Software without prior written authorization from The Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+
+int
+XConvertSelection(
+ register Display *dpy,
+ Atom selection,
+ Atom target,
+ Atom property,
+ Window requestor,
+ Time time)
+{
+ register xConvertSelectionReq *req;
+
+ LockDisplay(dpy);
+ GetReq(ConvertSelection, req);
+ req->selection = selection;
+ req->target = target;
+ req->property = property;
+ req->requestor = requestor;
+ req->time = time;
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return Success;
+}
diff --git a/libX11/src/CopyArea.c b/libX11/src/CopyArea.c
index 7d7dd5fbf..582582120 100644
--- a/libX11/src/CopyArea.c
+++ b/libX11/src/CopyArea.c
@@ -1,64 +1,64 @@
-/*
-
-Copyright 1986, 1998 The Open Group
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall not be
-used in advertising or otherwise to promote the sale, use or other dealings
-in this Software without prior written authorization from The Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-
-int
-XCopyArea(
- register Display *dpy,
- Drawable src_drawable,
- Drawable dst_drawable,
- GC gc,
- int src_x,
- int src_y,
- unsigned int width,
- unsigned int height,
- int dst_x,
- int dst_y)
-
-{
- register xCopyAreaReq *req;
-
- LockDisplay(dpy);
- FlushGC(dpy, gc);
- GetReq(CopyArea, req);
- req->srcDrawable = src_drawable;
- req->dstDrawable = dst_drawable;
- req->gc = gc->gid;
- req->srcX = src_x;
- req->srcY = src_y;
- req->dstX = dst_x;
- req->dstY = dst_y;
- req->width = width;
- req->height = height;
- UnlockDisplay(dpy);
- SyncHandle();
- return 1;
-}
-
+/*
+
+Copyright 1986, 1998 The Open Group
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group shall not be
+used in advertising or otherwise to promote the sale, use or other dealings
+in this Software without prior written authorization from The Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+
+int
+XCopyArea(
+ register Display *dpy,
+ Drawable src_drawable,
+ Drawable dst_drawable,
+ GC gc,
+ int src_x,
+ int src_y,
+ unsigned int width,
+ unsigned int height,
+ int dst_x,
+ int dst_y)
+
+{
+ register xCopyAreaReq *req;
+
+ LockDisplay(dpy);
+ FlushGC(dpy, gc);
+ GetReq(CopyArea, req);
+ req->srcDrawable = src_drawable;
+ req->dstDrawable = dst_drawable;
+ req->gc = gc->gid;
+ req->srcX = src_x;
+ req->srcY = src_y;
+ req->dstX = dst_x;
+ req->dstY = dst_y;
+ req->width = width;
+ req->height = height;
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return 1;
+}
+
diff --git a/libX11/src/CopyCmap.c b/libX11/src/CopyCmap.c
index 750f6f701..5444550cd 100644
--- a/libX11/src/CopyCmap.c
+++ b/libX11/src/CopyCmap.c
@@ -1,64 +1,64 @@
-/*
-
-Copyright 1986, 1998 The Open Group
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall not be
-used in advertising or otherwise to promote the sale, use or other dealings
-in this Software without prior written authorization from The Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#else
-#define XCMS 1
-#endif
-#include "Xlibint.h"
-
-#if XCMS
-#include "Xcmsint.h"
-
-/* cmsCmap.c */
-extern XcmsCmapRec * _XcmsCopyCmapRecAndFree(Display *dpy,
- Colormap src_cmap,
- Colormap copy_cmap);
-#endif
-
-Colormap XCopyColormapAndFree(
- register Display *dpy,
- Colormap src_cmap)
-{
- Colormap mid;
- register xCopyColormapAndFreeReq *req;
-
- LockDisplay(dpy);
- GetReq(CopyColormapAndFree, req);
-
- mid = req->mid = XAllocID(dpy);
- req->srcCmap = src_cmap;
-
- UnlockDisplay(dpy);
- SyncHandle();
-
-#if XCMS
- _XcmsCopyCmapRecAndFree(dpy, src_cmap, mid);
-#endif
-
- return(mid);
-}
+/*
+
+Copyright 1986, 1998 The Open Group
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group shall not be
+used in advertising or otherwise to promote the sale, use or other dealings
+in this Software without prior written authorization from The Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#else
+#define XCMS 1
+#endif
+#include "Xlibint.h"
+
+#if XCMS
+#include "Xcmsint.h"
+
+/* cmsCmap.c */
+extern XcmsCmapRec * _XcmsCopyCmapRecAndFree(Display *dpy,
+ Colormap src_cmap,
+ Colormap copy_cmap);
+#endif
+
+Colormap XCopyColormapAndFree(
+ register Display *dpy,
+ Colormap src_cmap)
+{
+ Colormap mid;
+ register xCopyColormapAndFreeReq *req;
+
+ LockDisplay(dpy);
+ GetReq(CopyColormapAndFree, req);
+
+ mid = req->mid = XAllocID(dpy);
+ req->srcCmap = src_cmap;
+
+ UnlockDisplay(dpy);
+ SyncHandle();
+
+#if XCMS
+ _XcmsCopyCmapRecAndFree(dpy, src_cmap, mid);
+#endif
+
+ return(mid);
+}
diff --git a/libX11/src/CopyGC.c b/libX11/src/CopyGC.c
index b83a110b7..9c71249cf 100644
--- a/libX11/src/CopyGC.c
+++ b/libX11/src/CopyGC.c
@@ -1,138 +1,138 @@
-/*
-
-Copyright 1986, 1998 The Open Group
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall not be
-used in advertising or otherwise to promote the sale, use or other dealings
-in this Software without prior written authorization from The Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-
-int
-XCopyGC (
- register Display *dpy,
- GC srcGC,
- unsigned long mask, /* which ones to set initially */
- GC destGC)
-{
- register XGCValues *destgv = &destGC->values,
- *srcgv = &srcGC->values;
- register xCopyGCReq *req;
- register _XExtension *ext;
-
- LockDisplay(dpy);
-
- mask &= (1L << (GCLastBit + 1)) - 1;
- /* if some of the source values to be copied are "dirty", flush them
- out before sending the CopyGC request. */
- if (srcGC->dirty & mask)
- _XFlushGCCache(dpy, srcGC);
-
- /* mark the copied values "not dirty" in the destination. */
- destGC->dirty &= ~mask;
-
- GetReq(CopyGC, req);
- req->srcGC = srcGC->gid;
- req->dstGC = destGC->gid;
- req->mask = mask;
-
- if (mask & GCFunction)
- destgv->function = srcgv->function;
-
- if (mask & GCPlaneMask)
- destgv->plane_mask = srcgv->plane_mask;
-
- if (mask & GCForeground)
- destgv->foreground = srcgv->foreground;
-
- if (mask & GCBackground)
- destgv->background = srcgv->background;
-
- if (mask & GCLineWidth)
- destgv->line_width = srcgv->line_width;
-
- if (mask & GCLineStyle)
- destgv->line_style = srcgv->line_style;
-
- if (mask & GCCapStyle)
- destgv->cap_style = srcgv->cap_style;
-
- if (mask & GCJoinStyle)
- destgv->join_style = srcgv->join_style;
-
- if (mask & GCFillStyle)
- destgv->fill_style = srcgv->fill_style;
-
- if (mask & GCFillRule)
- destgv->fill_rule = srcgv->fill_rule;
-
- if (mask & GCArcMode)
- destgv->arc_mode = srcgv->arc_mode;
-
- if (mask & GCTile)
- destgv->tile = srcgv->tile;
-
- if (mask & GCStipple)
- destgv->stipple = srcgv->stipple;
-
- if (mask & GCTileStipXOrigin)
- destgv->ts_x_origin = srcgv->ts_x_origin;
-
- if (mask & GCTileStipYOrigin)
- destgv->ts_y_origin = srcgv->ts_y_origin;
-
- if (mask & GCFont)
- destgv->font = srcgv->font;
-
- if (mask & GCSubwindowMode)
- destgv->subwindow_mode = srcgv->subwindow_mode;
-
- if (mask & GCGraphicsExposures)
- destgv->graphics_exposures = srcgv->graphics_exposures;
-
- if (mask & GCClipXOrigin)
- destgv->clip_x_origin = srcgv->clip_x_origin;
-
- if (mask & GCClipYOrigin)
- destgv->clip_y_origin = srcgv->clip_y_origin;
-
- if (mask & GCClipMask) {
- destGC->rects = srcGC->rects;
- destgv->clip_mask = srcgv->clip_mask;
- }
-
- if (mask & GCDashOffset)
- destgv->dash_offset = srcgv->dash_offset;
-
- if (mask & GCDashList) {
- destGC->dashes = srcGC->dashes;
- destgv->dashes = srcgv->dashes;
- }
- /* call out to any extensions interested */
- for (ext = dpy->ext_procs; ext; ext = ext->next)
- if (ext->copy_GC) (*ext->copy_GC)(dpy, destGC, &ext->codes);
- UnlockDisplay(dpy);
- SyncHandle();
- return 1;
- }
+/*
+
+Copyright 1986, 1998 The Open Group
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group shall not be
+used in advertising or otherwise to promote the sale, use or other dealings
+in this Software without prior written authorization from The Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+
+int
+XCopyGC (
+ register Display *dpy,
+ GC srcGC,
+ unsigned long mask, /* which ones to set initially */
+ GC destGC)
+{
+ register XGCValues *destgv = &destGC->values,
+ *srcgv = &srcGC->values;
+ register xCopyGCReq *req;
+ register _XExtension *ext;
+
+ LockDisplay(dpy);
+
+ mask &= (1L << (GCLastBit + 1)) - 1;
+ /* if some of the source values to be copied are "dirty", flush them
+ out before sending the CopyGC request. */
+ if (srcGC->dirty & mask)
+ _XFlushGCCache(dpy, srcGC);
+
+ /* mark the copied values "not dirty" in the destination. */
+ destGC->dirty &= ~mask;
+
+ GetReq(CopyGC, req);
+ req->srcGC = srcGC->gid;
+ req->dstGC = destGC->gid;
+ req->mask = mask;
+
+ if (mask & GCFunction)
+ destgv->function = srcgv->function;
+
+ if (mask & GCPlaneMask)
+ destgv->plane_mask = srcgv->plane_mask;
+
+ if (mask & GCForeground)
+ destgv->foreground = srcgv->foreground;
+
+ if (mask & GCBackground)
+ destgv->background = srcgv->background;
+
+ if (mask & GCLineWidth)
+ destgv->line_width = srcgv->line_width;
+
+ if (mask & GCLineStyle)
+ destgv->line_style = srcgv->line_style;
+
+ if (mask & GCCapStyle)
+ destgv->cap_style = srcgv->cap_style;
+
+ if (mask & GCJoinStyle)
+ destgv->join_style = srcgv->join_style;
+
+ if (mask & GCFillStyle)
+ destgv->fill_style = srcgv->fill_style;
+
+ if (mask & GCFillRule)
+ destgv->fill_rule = srcgv->fill_rule;
+
+ if (mask & GCArcMode)
+ destgv->arc_mode = srcgv->arc_mode;
+
+ if (mask & GCTile)
+ destgv->tile = srcgv->tile;
+
+ if (mask & GCStipple)
+ destgv->stipple = srcgv->stipple;
+
+ if (mask & GCTileStipXOrigin)
+ destgv->ts_x_origin = srcgv->ts_x_origin;
+
+ if (mask & GCTileStipYOrigin)
+ destgv->ts_y_origin = srcgv->ts_y_origin;
+
+ if (mask & GCFont)
+ destgv->font = srcgv->font;
+
+ if (mask & GCSubwindowMode)
+ destgv->subwindow_mode = srcgv->subwindow_mode;
+
+ if (mask & GCGraphicsExposures)
+ destgv->graphics_exposures = srcgv->graphics_exposures;
+
+ if (mask & GCClipXOrigin)
+ destgv->clip_x_origin = srcgv->clip_x_origin;
+
+ if (mask & GCClipYOrigin)
+ destgv->clip_y_origin = srcgv->clip_y_origin;
+
+ if (mask & GCClipMask) {
+ destGC->rects = srcGC->rects;
+ destgv->clip_mask = srcgv->clip_mask;
+ }
+
+ if (mask & GCDashOffset)
+ destgv->dash_offset = srcgv->dash_offset;
+
+ if (mask & GCDashList) {
+ destGC->dashes = srcGC->dashes;
+ destgv->dashes = srcgv->dashes;
+ }
+ /* call out to any extensions interested */
+ for (ext = dpy->ext_procs; ext; ext = ext->next)
+ if (ext->copy_GC) (*ext->copy_GC)(dpy, destGC, &ext->codes);
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return 1;
+ }
diff --git a/libX11/src/CopyPlane.c b/libX11/src/CopyPlane.c
index f46f6b533..818687687 100644
--- a/libX11/src/CopyPlane.c
+++ b/libX11/src/CopyPlane.c
@@ -1,66 +1,66 @@
-/*
-
-Copyright 1986, 1998 The Open Group
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall not be
-used in advertising or otherwise to promote the sale, use or other dealings
-in this Software without prior written authorization from The Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-
-int
-XCopyPlane(
- register Display *dpy,
- Drawable src_drawable,
- Drawable dst_drawable,
- GC gc,
- int src_x,
- int src_y,
- unsigned int width,
- unsigned int height,
- int dst_x,
- int dst_y,
- unsigned long bit_plane)
-
-{
- register xCopyPlaneReq *req;
-
- LockDisplay(dpy);
- FlushGC(dpy, gc);
- GetReq(CopyPlane, req);
- req->srcDrawable = src_drawable;
- req->dstDrawable = dst_drawable;
- req->gc = gc->gid;
- req->srcX = src_x;
- req->srcY = src_y;
- req->dstX = dst_x;
- req->dstY = dst_y;
- req->width = width;
- req->height = height;
- req->bitPlane = bit_plane;
- UnlockDisplay(dpy);
- SyncHandle();
- return 1;
-}
-
+/*
+
+Copyright 1986, 1998 The Open Group
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group shall not be
+used in advertising or otherwise to promote the sale, use or other dealings
+in this Software without prior written authorization from The Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+
+int
+XCopyPlane(
+ register Display *dpy,
+ Drawable src_drawable,
+ Drawable dst_drawable,
+ GC gc,
+ int src_x,
+ int src_y,
+ unsigned int width,
+ unsigned int height,
+ int dst_x,
+ int dst_y,
+ unsigned long bit_plane)
+
+{
+ register xCopyPlaneReq *req;
+
+ LockDisplay(dpy);
+ FlushGC(dpy, gc);
+ GetReq(CopyPlane, req);
+ req->srcDrawable = src_drawable;
+ req->dstDrawable = dst_drawable;
+ req->gc = gc->gid;
+ req->srcX = src_x;
+ req->srcY = src_y;
+ req->dstX = dst_x;
+ req->dstY = dst_y;
+ req->width = width;
+ req->height = height;
+ req->bitPlane = bit_plane;
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return 1;
+}
+
diff --git a/libX11/src/Cr.h b/libX11/src/Cr.h
index d07266265..800c9ab1c 100644
--- a/libX11/src/Cr.h
+++ b/libX11/src/Cr.h
@@ -1,27 +1,27 @@
-
-#ifndef _CR_H_
-#define _CR_H_
-
-extern int _XUpdateGCCache(
- register GC gc,
- register unsigned long mask,
- register XGCValues *attr);
-extern void _XNoticeCreateBitmap(
- Display *dpy,
- Pixmap pid,
- unsigned int width,
- unsigned int height);
-extern void _XNoticePutBitmap(
- Display *dpy,
- Drawable draw,
- XImage *image);
-extern Cursor _XTryShapeBitmapCursor(
- Display *dpy,
- Pixmap source,
- Pixmap mask,
- XColor *foreground,
- XColor *background,
- unsigned int x,
- unsigned int y);
-
-#endif /* _CR_H_ */
+
+#ifndef _CR_H_
+#define _CR_H_
+
+extern int _XUpdateGCCache(
+ register GC gc,
+ register unsigned long mask,
+ register XGCValues *attr);
+extern void _XNoticeCreateBitmap(
+ Display *dpy,
+ Pixmap pid,
+ unsigned int width,
+ unsigned int height);
+extern void _XNoticePutBitmap(
+ Display *dpy,
+ Drawable draw,
+ XImage *image);
+extern Cursor _XTryShapeBitmapCursor(
+ Display *dpy,
+ Pixmap source,
+ Pixmap mask,
+ XColor *foreground,
+ XColor *background,
+ unsigned int x,
+ unsigned int y);
+
+#endif /* _CR_H_ */
diff --git a/libX11/src/CrCmap.c b/libX11/src/CrCmap.c
index bddf237e7..9904c7dda 100644
--- a/libX11/src/CrCmap.c
+++ b/libX11/src/CrCmap.c
@@ -1,59 +1,59 @@
-/*
-
-Copyright 1986, 1998 The Open Group
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall not be
-used in advertising or otherwise to promote the sale, use or other dealings
-in this Software without prior written authorization from The Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-#include "Xcmsint.h"
-
-
-Colormap XCreateColormap(
- register Display *dpy,
- Window w,
- Visual *visual,
- int alloc)
-{
- register xCreateColormapReq *req;
- Colormap mid;
-
- LockDisplay(dpy);
- GetReq(CreateColormap, req);
- req->window = w;
- mid = req->mid = XAllocID(dpy);
- req->alloc = alloc;
- if (visual == CopyFromParent) req->visual = CopyFromParent;
- else req->visual = visual->visualid;
-
- UnlockDisplay(dpy);
- SyncHandle();
-
-#ifdef XCMS
- _XcmsAddCmapRec(dpy, mid, w, visual);
-#endif
-
- return(mid);
-}
+/*
+
+Copyright 1986, 1998 The Open Group
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group shall not be
+used in advertising or otherwise to promote the sale, use or other dealings
+in this Software without prior written authorization from The Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+#include "Xcmsint.h"
+
+
+Colormap XCreateColormap(
+ register Display *dpy,
+ Window w,
+ Visual *visual,
+ int alloc)
+{
+ register xCreateColormapReq *req;
+ Colormap mid;
+
+ LockDisplay(dpy);
+ GetReq(CreateColormap, req);
+ req->window = w;
+ mid = req->mid = XAllocID(dpy);
+ req->alloc = alloc;
+ if (visual == CopyFromParent) req->visual = CopyFromParent;
+ else req->visual = visual->visualid;
+
+ UnlockDisplay(dpy);
+ SyncHandle();
+
+#ifdef XCMS
+ _XcmsAddCmapRec(dpy, mid, w, visual);
+#endif
+
+ return(mid);
+}
diff --git a/libX11/src/CrCursor.c b/libX11/src/CrCursor.c
index 57e062c29..c8c174e5f 100644
--- a/libX11/src/CrCursor.c
+++ b/libX11/src/CrCursor.c
@@ -1,79 +1,79 @@
-/*
-
-Copyright 1986, 1998 The Open Group
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall not be
-used in advertising or otherwise to promote the sale, use or other dealings
-in this Software without prior written authorization from The Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-
-#ifdef USE_DYNAMIC_XCURSOR
-Cursor
-_XTryShapeBitmapCursor (Display *dpy,
- Pixmap source,
- Pixmap mask,
- XColor *foreground,
- XColor *background,
- unsigned int x,
- unsigned int y);
-#endif
-
-Cursor XCreatePixmapCursor(
- register Display *dpy,
- Pixmap source,
- Pixmap mask,
- XColor *foreground,
- XColor *background,
- unsigned int x,
- unsigned int y)
-
-{
- register xCreateCursorReq *req;
- Cursor cid;
-
-#ifdef USE_DYNAMIC_XCURSOR
- cid = _XTryShapeBitmapCursor (dpy, source, mask,
- foreground, background, x, y);
- if (cid)
- return cid;
-#endif
- LockDisplay(dpy);
- GetReq(CreateCursor, req);
- req->cid = cid = XAllocID(dpy);
- req->source = source;
- req->mask = mask;
- req->foreRed = foreground->red;
- req->foreGreen = foreground->green;
- req->foreBlue = foreground->blue;
- req->backRed = background->red;
- req->backGreen = background->green;
- req->backBlue = background->blue;
- req->x = x;
- req->y = y;
- UnlockDisplay(dpy);
- SyncHandle();
- return (cid);
-}
-
+/*
+
+Copyright 1986, 1998 The Open Group
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group shall not be
+used in advertising or otherwise to promote the sale, use or other dealings
+in this Software without prior written authorization from The Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+
+#ifdef USE_DYNAMIC_XCURSOR
+Cursor
+_XTryShapeBitmapCursor (Display *dpy,
+ Pixmap source,
+ Pixmap mask,
+ XColor *foreground,
+ XColor *background,
+ unsigned int x,
+ unsigned int y);
+#endif
+
+Cursor XCreatePixmapCursor(
+ register Display *dpy,
+ Pixmap source,
+ Pixmap mask,
+ XColor *foreground,
+ XColor *background,
+ unsigned int x,
+ unsigned int y)
+
+{
+ register xCreateCursorReq *req;
+ Cursor cid;
+
+#ifdef USE_DYNAMIC_XCURSOR
+ cid = _XTryShapeBitmapCursor (dpy, source, mask,
+ foreground, background, x, y);
+ if (cid)
+ return cid;
+#endif
+ LockDisplay(dpy);
+ GetReq(CreateCursor, req);
+ req->cid = cid = XAllocID(dpy);
+ req->source = source;
+ req->mask = mask;
+ req->foreRed = foreground->red;
+ req->foreGreen = foreground->green;
+ req->foreBlue = foreground->blue;
+ req->backRed = background->red;
+ req->backGreen = background->green;
+ req->backBlue = background->blue;
+ req->x = x;
+ req->y = y;
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return (cid);
+}
+
diff --git a/libX11/src/CrGC.c b/libX11/src/CrGC.c
index 5212c36a1..11de94c1f 100644
--- a/libX11/src/CrGC.c
+++ b/libX11/src/CrGC.c
@@ -1,345 +1,345 @@
-/*
-
-Copyright 1986, 1998 The Open Group
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall not be
-used in advertising or otherwise to promote the sale, use or other dealings
-in this Software without prior written authorization from The Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-#include "Cr.h"
-
-static XGCValues const initial_GC = {
- GXcopy, /* function */
- AllPlanes, /* plane_mask */
- 0L, /* foreground */
- 1L, /* background */
- 0, /* line_width */
- LineSolid, /* line_style */
- CapButt, /* cap_style */
- JoinMiter, /* join_style */
- FillSolid, /* fill_style */
- EvenOddRule,/* fill_rule */
- ArcPieSlice,/* arc_mode */
- (Pixmap)~0L,/* tile, impossible (unknown) resource */
- (Pixmap)~0L,/* stipple, impossible (unknown) resource */
- 0, /* ts_x_origin */
- 0, /* ts_y_origin */
- (Font)~0L, /* font, impossible (unknown) resource */
- ClipByChildren, /* subwindow_mode */
- True, /* graphics_exposures */
- 0, /* clip_x_origin */
- 0, /* clip_y_origin */
- None, /* clip_mask */
- 0, /* dash_offset */
- 4 /* dashes (list [4,4]) */
-};
-
-static void _XGenerateGCList(
- register Display *dpy,
- GC gc,
- xReq *req);
-
-GC XCreateGC (
- register Display *dpy,
- Drawable d, /* Window or Pixmap for which depth matches */
- unsigned long valuemask, /* which ones to set initially */
- XGCValues *values) /* the values themselves */
-{
- register GC gc;
- register xCreateGCReq *req;
- register _XExtension *ext;
-
- LockDisplay(dpy);
- if ((gc = (GC)Xmalloc (sizeof(struct _XGC))) == NULL) {
- UnlockDisplay(dpy);
- SyncHandle();
- return (NULL);
- }
- gc->rects = 0;
- gc->dashes = 0;
- gc->ext_data = NULL;
- gc->values = initial_GC;
- gc->dirty = 0L;
-
- valuemask &= (1L << (GCLastBit + 1)) - 1;
- if (valuemask) _XUpdateGCCache (gc, valuemask, values);
-
- GetReq(CreateGC, req);
- req->drawable = d;
- req->gc = gc->gid = XAllocID(dpy);
-
- if ((req->mask = gc->dirty))
- _XGenerateGCList (dpy, gc, (xReq *) req);
- /* call out to any extensions interested */
- for (ext = dpy->ext_procs; ext; ext = ext->next)
- if (ext->create_GC) (*ext->create_GC)(dpy, gc, &ext->codes);
- gc->dirty = 0L; /* allow extensions to see dirty bits */
- UnlockDisplay(dpy);
- SyncHandle();
- return (gc);
- }
-
-/*
- * GenerateGCList looks at the GC dirty bits, and appends all the required
- * long words to the request being generated.
- */
-
-static void
-_XGenerateGCList (
- register Display *dpy,
- GC gc,
- xReq *req)
- {
- unsigned long values[32];
- register unsigned long *value = values;
- long nvalues;
- register XGCValues *gv = &gc->values;
- register unsigned long dirty = gc->dirty;
-
- /*
- * Note: The order of these tests are critical; the order must be the
- * same as the GC mask bits in the word.
- */
- if (dirty & GCFunction) *value++ = gv->function;
- if (dirty & GCPlaneMask) *value++ = gv->plane_mask;
- if (dirty & GCForeground) *value++ = gv->foreground;
- if (dirty & GCBackground) *value++ = gv->background;
- if (dirty & GCLineWidth) *value++ = gv->line_width;
- if (dirty & GCLineStyle) *value++ = gv->line_style;
- if (dirty & GCCapStyle) *value++ = gv->cap_style;
- if (dirty & GCJoinStyle) *value++ = gv->join_style;
- if (dirty & GCFillStyle) *value++ = gv->fill_style;
- if (dirty & GCFillRule) *value++ = gv->fill_rule;
- if (dirty & GCTile) *value++ = gv->tile;
- if (dirty & GCStipple) *value++ = gv->stipple;
- if (dirty & GCTileStipXOrigin) *value++ = gv->ts_x_origin;
- if (dirty & GCTileStipYOrigin) *value++ = gv->ts_y_origin;
- if (dirty & GCFont) *value++ = gv->font;
- if (dirty & GCSubwindowMode) *value++ = gv->subwindow_mode;
- if (dirty & GCGraphicsExposures) *value++ = gv->graphics_exposures;
- if (dirty & GCClipXOrigin) *value++ = gv->clip_x_origin;
- if (dirty & GCClipYOrigin) *value++ = gv->clip_y_origin;
- if (dirty & GCClipMask) *value++ = gv->clip_mask;
- if (dirty & GCDashOffset) *value++ = gv->dash_offset;
- if (dirty & GCDashList) *value++ = gv->dashes;
- if (dirty & GCArcMode) *value++ = gv->arc_mode;
-
- req->length += (nvalues = value - values);
-
- /*
- * note: Data is a macro that uses its arguments multiple
- * times, so "nvalues" is changed in a separate assignment
- * statement
- */
-
- nvalues <<= 2;
- Data32 (dpy, (long *) values, nvalues);
-
- }
-
-
-int
-_XUpdateGCCache (
- register GC gc,
- register unsigned long mask,
- register XGCValues *attr)
-{
- register XGCValues *gv = &gc->values;
-
- if (mask & GCFunction)
- if (gv->function != attr->function) {
- gv->function = attr->function;
- gc->dirty |= GCFunction;
- }
-
- if (mask & GCPlaneMask)
- if (gv->plane_mask != attr->plane_mask) {
- gv->plane_mask = attr->plane_mask;
- gc->dirty |= GCPlaneMask;
- }
-
- if (mask & GCForeground)
- if (gv->foreground != attr->foreground) {
- gv->foreground = attr->foreground;
- gc->dirty |= GCForeground;
- }
-
- if (mask & GCBackground)
- if (gv->background != attr->background) {
- gv->background = attr->background;
- gc->dirty |= GCBackground;
- }
-
- if (mask & GCLineWidth)
- if (gv->line_width != attr->line_width) {
- gv->line_width = attr->line_width;
- gc->dirty |= GCLineWidth;
- }
-
- if (mask & GCLineStyle)
- if (gv->line_style != attr->line_style) {
- gv->line_style = attr->line_style;
- gc->dirty |= GCLineStyle;
- }
-
- if (mask & GCCapStyle)
- if (gv->cap_style != attr->cap_style) {
- gv->cap_style = attr->cap_style;
- gc->dirty |= GCCapStyle;
- }
-
- if (mask & GCJoinStyle)
- if (gv->join_style != attr->join_style) {
- gv->join_style = attr->join_style;
- gc->dirty |= GCJoinStyle;
- }
-
- if (mask & GCFillStyle)
- if (gv->fill_style != attr->fill_style) {
- gv->fill_style = attr->fill_style;
- gc->dirty |= GCFillStyle;
- }
-
- if (mask & GCFillRule)
- if (gv->fill_rule != attr->fill_rule) {
- gv->fill_rule = attr->fill_rule;
- gc->dirty |= GCFillRule;
- }
-
- if (mask & GCArcMode)
- if (gv->arc_mode != attr->arc_mode) {
- gv->arc_mode = attr->arc_mode;
- gc->dirty |= GCArcMode;
- }
-
- /* always write through tile change, since client may have changed pixmap contents */
- if (mask & GCTile) {
- gv->tile = attr->tile;
- gc->dirty |= GCTile;
- }
-
- /* always write through stipple change, since client may have changed pixmap contents */
- if (mask & GCStipple) {
- gv->stipple = attr->stipple;
- gc->dirty |= GCStipple;
- }
-
- if (mask & GCTileStipXOrigin)
- if (gv->ts_x_origin != attr->ts_x_origin) {
- gv->ts_x_origin = attr->ts_x_origin;
- gc->dirty |= GCTileStipXOrigin;
- }
-
- if (mask & GCTileStipYOrigin)
- if (gv->ts_y_origin != attr->ts_y_origin) {
- gv->ts_y_origin = attr->ts_y_origin;
- gc->dirty |= GCTileStipYOrigin;
- }
-
- if (mask & GCFont)
- if (gv->font != attr->font) {
- gv->font = attr->font;
- gc->dirty |= GCFont;
- }
-
- if (mask & GCSubwindowMode)
- if (gv->subwindow_mode != attr->subwindow_mode) {
- gv->subwindow_mode = attr->subwindow_mode;
- gc->dirty |= GCSubwindowMode;
- }
-
- if (mask & GCGraphicsExposures)
- if (gv->graphics_exposures != attr->graphics_exposures) {
- gv->graphics_exposures = attr->graphics_exposures;
- gc->dirty |= GCGraphicsExposures;
- }
-
- if (mask & GCClipXOrigin)
- if (gv->clip_x_origin != attr->clip_x_origin) {
- gv->clip_x_origin = attr->clip_x_origin;
- gc->dirty |= GCClipXOrigin;
- }
-
- if (mask & GCClipYOrigin)
- if (gv->clip_y_origin != attr->clip_y_origin) {
- gv->clip_y_origin = attr->clip_y_origin;
- gc->dirty |= GCClipYOrigin;
- }
-
- /* always write through mask change, since client may have changed pixmap contents */
- if (mask & GCClipMask) {
- gv->clip_mask = attr->clip_mask;
- gc->dirty |= GCClipMask;
- gc->rects = 0;
- }
-
- if (mask & GCDashOffset)
- if (gv->dash_offset != attr->dash_offset) {
- gv->dash_offset = attr->dash_offset;
- gc->dirty |= GCDashOffset;
- }
-
- if (mask & GCDashList)
- if ((gv->dashes != attr->dashes) || (gc->dashes == True)) {
- gv->dashes = attr->dashes;
- gc->dirty |= GCDashList;
- gc->dashes = 0;
- }
- return 0;
-}
-
-/* can only call when display is already locked. */
-
-void _XFlushGCCache(
- Display *dpy,
- GC gc)
-{
- register xChangeGCReq *req;
- register _XExtension *ext;
-
- if (gc->dirty) {
- GetReq(ChangeGC, req);
- req->gc = gc->gid;
- req->mask = gc->dirty;
- _XGenerateGCList (dpy, gc, (xReq *) req);
- /* call out to any extensions interested */
- for (ext = dpy->ext_procs; ext; ext = ext->next)
- if (ext->flush_GC) (*ext->flush_GC)(dpy, gc, &ext->codes);
- gc->dirty = 0L; /* allow extensions to see dirty bits */
- }
-}
-
-void
-XFlushGC(
- Display *dpy,
- GC gc)
-{
- FlushGC(dpy, gc);
-}
-
-GContext XGContextFromGC(GC gc)
-{
- return (gc->gid);
-}
+/*
+
+Copyright 1986, 1998 The Open Group
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group shall not be
+used in advertising or otherwise to promote the sale, use or other dealings
+in this Software without prior written authorization from The Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+#include "Cr.h"
+
+static XGCValues const initial_GC = {
+ GXcopy, /* function */
+ AllPlanes, /* plane_mask */
+ 0L, /* foreground */
+ 1L, /* background */
+ 0, /* line_width */
+ LineSolid, /* line_style */
+ CapButt, /* cap_style */
+ JoinMiter, /* join_style */
+ FillSolid, /* fill_style */
+ EvenOddRule,/* fill_rule */
+ ArcPieSlice,/* arc_mode */
+ (Pixmap)~0L,/* tile, impossible (unknown) resource */
+ (Pixmap)~0L,/* stipple, impossible (unknown) resource */
+ 0, /* ts_x_origin */
+ 0, /* ts_y_origin */
+ (Font)~0L, /* font, impossible (unknown) resource */
+ ClipByChildren, /* subwindow_mode */
+ True, /* graphics_exposures */
+ 0, /* clip_x_origin */
+ 0, /* clip_y_origin */
+ None, /* clip_mask */
+ 0, /* dash_offset */
+ 4 /* dashes (list [4,4]) */
+};
+
+static void _XGenerateGCList(
+ register Display *dpy,
+ GC gc,
+ xReq *req);
+
+GC XCreateGC (
+ register Display *dpy,
+ Drawable d, /* Window or Pixmap for which depth matches */
+ unsigned long valuemask, /* which ones to set initially */
+ XGCValues *values) /* the values themselves */
+{
+ register GC gc;
+ register xCreateGCReq *req;
+ register _XExtension *ext;
+
+ LockDisplay(dpy);
+ if ((gc = (GC)Xmalloc (sizeof(struct _XGC))) == NULL) {
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return (NULL);
+ }
+ gc->rects = 0;
+ gc->dashes = 0;
+ gc->ext_data = NULL;
+ gc->values = initial_GC;
+ gc->dirty = 0L;
+
+ valuemask &= (1L << (GCLastBit + 1)) - 1;
+ if (valuemask) _XUpdateGCCache (gc, valuemask, values);
+
+ GetReq(CreateGC, req);
+ req->drawable = d;
+ req->gc = gc->gid = XAllocID(dpy);
+
+ if ((req->mask = gc->dirty))
+ _XGenerateGCList (dpy, gc, (xReq *) req);
+ /* call out to any extensions interested */
+ for (ext = dpy->ext_procs; ext; ext = ext->next)
+ if (ext->create_GC) (*ext->create_GC)(dpy, gc, &ext->codes);
+ gc->dirty = 0L; /* allow extensions to see dirty bits */
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return (gc);
+ }
+
+/*
+ * GenerateGCList looks at the GC dirty bits, and appends all the required
+ * long words to the request being generated.
+ */
+
+static void
+_XGenerateGCList (
+ register Display *dpy,
+ GC gc,
+ xReq *req)
+ {
+ unsigned long values[32];
+ register unsigned long *value = values;
+ long nvalues;
+ register XGCValues *gv = &gc->values;
+ register unsigned long dirty = gc->dirty;
+
+ /*
+ * Note: The order of these tests are critical; the order must be the
+ * same as the GC mask bits in the word.
+ */
+ if (dirty & GCFunction) *value++ = gv->function;
+ if (dirty & GCPlaneMask) *value++ = gv->plane_mask;
+ if (dirty & GCForeground) *value++ = gv->foreground;
+ if (dirty & GCBackground) *value++ = gv->background;
+ if (dirty & GCLineWidth) *value++ = gv->line_width;
+ if (dirty & GCLineStyle) *value++ = gv->line_style;
+ if (dirty & GCCapStyle) *value++ = gv->cap_style;
+ if (dirty & GCJoinStyle) *value++ = gv->join_style;
+ if (dirty & GCFillStyle) *value++ = gv->fill_style;
+ if (dirty & GCFillRule) *value++ = gv->fill_rule;
+ if (dirty & GCTile) *value++ = gv->tile;
+ if (dirty & GCStipple) *value++ = gv->stipple;
+ if (dirty & GCTileStipXOrigin) *value++ = gv->ts_x_origin;
+ if (dirty & GCTileStipYOrigin) *value++ = gv->ts_y_origin;
+ if (dirty & GCFont) *value++ = gv->font;
+ if (dirty & GCSubwindowMode) *value++ = gv->subwindow_mode;
+ if (dirty & GCGraphicsExposures) *value++ = gv->graphics_exposures;
+ if (dirty & GCClipXOrigin) *value++ = gv->clip_x_origin;
+ if (dirty & GCClipYOrigin) *value++ = gv->clip_y_origin;
+ if (dirty & GCClipMask) *value++ = gv->clip_mask;
+ if (dirty & GCDashOffset) *value++ = gv->dash_offset;
+ if (dirty & GCDashList) *value++ = gv->dashes;
+ if (dirty & GCArcMode) *value++ = gv->arc_mode;
+
+ req->length += (nvalues = value - values);
+
+ /*
+ * note: Data is a macro that uses its arguments multiple
+ * times, so "nvalues" is changed in a separate assignment
+ * statement
+ */
+
+ nvalues <<= 2;
+ Data32 (dpy, (long *) values, nvalues);
+
+ }
+
+
+int
+_XUpdateGCCache (
+ register GC gc,
+ register unsigned long mask,
+ register XGCValues *attr)
+{
+ register XGCValues *gv = &gc->values;
+
+ if (mask & GCFunction)
+ if (gv->function != attr->function) {
+ gv->function = attr->function;
+ gc->dirty |= GCFunction;
+ }
+
+ if (mask & GCPlaneMask)
+ if (gv->plane_mask != attr->plane_mask) {
+ gv->plane_mask = attr->plane_mask;
+ gc->dirty |= GCPlaneMask;
+ }
+
+ if (mask & GCForeground)
+ if (gv->foreground != attr->foreground) {
+ gv->foreground = attr->foreground;
+ gc->dirty |= GCForeground;
+ }
+
+ if (mask & GCBackground)
+ if (gv->background != attr->background) {
+ gv->background = attr->background;
+ gc->dirty |= GCBackground;
+ }
+
+ if (mask & GCLineWidth)
+ if (gv->line_width != attr->line_width) {
+ gv->line_width = attr->line_width;
+ gc->dirty |= GCLineWidth;
+ }
+
+ if (mask & GCLineStyle)
+ if (gv->line_style != attr->line_style) {
+ gv->line_style = attr->line_style;
+ gc->dirty |= GCLineStyle;
+ }
+
+ if (mask & GCCapStyle)
+ if (gv->cap_style != attr->cap_style) {
+ gv->cap_style = attr->cap_style;
+ gc->dirty |= GCCapStyle;
+ }
+
+ if (mask & GCJoinStyle)
+ if (gv->join_style != attr->join_style) {
+ gv->join_style = attr->join_style;
+ gc->dirty |= GCJoinStyle;
+ }
+
+ if (mask & GCFillStyle)
+ if (gv->fill_style != attr->fill_style) {
+ gv->fill_style = attr->fill_style;
+ gc->dirty |= GCFillStyle;
+ }
+
+ if (mask & GCFillRule)
+ if (gv->fill_rule != attr->fill_rule) {
+ gv->fill_rule = attr->fill_rule;
+ gc->dirty |= GCFillRule;
+ }
+
+ if (mask & GCArcMode)
+ if (gv->arc_mode != attr->arc_mode) {
+ gv->arc_mode = attr->arc_mode;
+ gc->dirty |= GCArcMode;
+ }
+
+ /* always write through tile change, since client may have changed pixmap contents */
+ if (mask & GCTile) {
+ gv->tile = attr->tile;
+ gc->dirty |= GCTile;
+ }
+
+ /* always write through stipple change, since client may have changed pixmap contents */
+ if (mask & GCStipple) {
+ gv->stipple = attr->stipple;
+ gc->dirty |= GCStipple;
+ }
+
+ if (mask & GCTileStipXOrigin)
+ if (gv->ts_x_origin != attr->ts_x_origin) {
+ gv->ts_x_origin = attr->ts_x_origin;
+ gc->dirty |= GCTileStipXOrigin;
+ }
+
+ if (mask & GCTileStipYOrigin)
+ if (gv->ts_y_origin != attr->ts_y_origin) {
+ gv->ts_y_origin = attr->ts_y_origin;
+ gc->dirty |= GCTileStipYOrigin;
+ }
+
+ if (mask & GCFont)
+ if (gv->font != attr->font) {
+ gv->font = attr->font;
+ gc->dirty |= GCFont;
+ }
+
+ if (mask & GCSubwindowMode)
+ if (gv->subwindow_mode != attr->subwindow_mode) {
+ gv->subwindow_mode = attr->subwindow_mode;
+ gc->dirty |= GCSubwindowMode;
+ }
+
+ if (mask & GCGraphicsExposures)
+ if (gv->graphics_exposures != attr->graphics_exposures) {
+ gv->graphics_exposures = attr->graphics_exposures;
+ gc->dirty |= GCGraphicsExposures;
+ }
+
+ if (mask & GCClipXOrigin)
+ if (gv->clip_x_origin != attr->clip_x_origin) {
+ gv->clip_x_origin = attr->clip_x_origin;
+ gc->dirty |= GCClipXOrigin;
+ }
+
+ if (mask & GCClipYOrigin)
+ if (gv->clip_y_origin != attr->clip_y_origin) {
+ gv->clip_y_origin = attr->clip_y_origin;
+ gc->dirty |= GCClipYOrigin;
+ }
+
+ /* always write through mask change, since client may have changed pixmap contents */
+ if (mask & GCClipMask) {
+ gv->clip_mask = attr->clip_mask;
+ gc->dirty |= GCClipMask;
+ gc->rects = 0;
+ }
+
+ if (mask & GCDashOffset)
+ if (gv->dash_offset != attr->dash_offset) {
+ gv->dash_offset = attr->dash_offset;
+ gc->dirty |= GCDashOffset;
+ }
+
+ if (mask & GCDashList)
+ if ((gv->dashes != attr->dashes) || (gc->dashes == True)) {
+ gv->dashes = attr->dashes;
+ gc->dirty |= GCDashList;
+ gc->dashes = 0;
+ }
+ return 0;
+}
+
+/* can only call when display is already locked. */
+
+void _XFlushGCCache(
+ Display *dpy,
+ GC gc)
+{
+ register xChangeGCReq *req;
+ register _XExtension *ext;
+
+ if (gc->dirty) {
+ GetReq(ChangeGC, req);
+ req->gc = gc->gid;
+ req->mask = gc->dirty;
+ _XGenerateGCList (dpy, gc, (xReq *) req);
+ /* call out to any extensions interested */
+ for (ext = dpy->ext_procs; ext; ext = ext->next)
+ if (ext->flush_GC) (*ext->flush_GC)(dpy, gc, &ext->codes);
+ gc->dirty = 0L; /* allow extensions to see dirty bits */
+ }
+}
+
+void
+XFlushGC(
+ Display *dpy,
+ GC gc)
+{
+ FlushGC(dpy, gc);
+}
+
+GContext XGContextFromGC(GC gc)
+{
+ return (gc->gid);
+}
diff --git a/libX11/src/CrGlCur.c b/libX11/src/CrGlCur.c
index 4f332836b..510ff5d75 100644
--- a/libX11/src/CrGlCur.c
+++ b/libX11/src/CrGlCur.c
@@ -1,270 +1,270 @@
-/*
-
-Copyright 1986, 1998 The Open Group
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall not be
-used in advertising or otherwise to promote the sale, use or other dealings
-in this Software without prior written authorization from The Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-
-#ifdef USE_DYNAMIC_XCURSOR
-
-#ifdef __UNIXOS2__
-#define RTLD_LAZY 1
-#define LIBXCURSOR "Xcursor.dll"
-#endif
-#include <stdio.h>
-#include <string.h>
-#if defined(hpux)
-#include <dl.h>
-#else
-#include <dlfcn.h>
-#endif
-#include "Cr.h"
-
-#ifdef __CYGWIN__
-#define LIBXCURSOR "cygXcursor-1.dll"
-#endif
-
-#if defined(hpux)
-typedef shl_t XModuleType;
-#else
-#ifdef _MSC_VER
-#include <X11/XWindows.h>
-typedef HANDLE XModuleType;
-#define dlsym GetProcAddress
-#else
-typedef void *XModuleType;
-#endif
-#endif
-
-#ifndef LIBXCURSOR
-#define LIBXCURSOR "libXcursor.so.1"
-#endif
-
-static char libraryName[] = LIBXCURSOR;
-
-static XModuleType
-open_library (void)
-{
- char *library = libraryName;
- char *dot;
- XModuleType module;
- for (;;)
- {
-#if defined(hpux)
- module = shl_load(library, BIND_DEFERRED, 0L);
-#else
-#ifdef _MSC_VER
- module = LoadLibrary(library);
-#else
- module = dlopen(library, RTLD_LAZY);
-#endif
-#endif
- if (module)
- return module;
- dot = strrchr (library, '.');
- if (!dot)
- break;
- *dot = '\0';
- }
- return NULL;
-}
-
-static void *
-fetch_symbol (XModuleType module, const char *under_symbol)
-{
- void *result = NULL;
- const char *symbol = under_symbol + 1;
-#if defined(hpux)
- int getsyms_cnt, i;
- struct shl_symbol *symbols;
-
- getsyms_cnt = shl_getsymbols(module, TYPE_PROCEDURE,
- EXPORT_SYMBOLS, malloc, &symbols);
-
- for(i=0; i<getsyms_cnt; i++) {
- if(!strcmp(symbols[i].name, symbol)) {
- result = symbols[i].value;
- break;
- }
- }
-
- if(getsyms_cnt > 0) {
- free(symbols);
- }
-#else
- result = dlsym (module, symbol);
- if (!result)
- result = dlsym (module, under_symbol);
-#endif
- return result;
-}
-
-typedef void (*NoticeCreateBitmapFunc) (Display *dpy,
- Pixmap pid,
- unsigned int width,
- unsigned int height);
-
-typedef void (*NoticePutBitmapFunc) (Display *dpy,
- Drawable draw,
- XImage *image);
-
-typedef Cursor (*TryShapeBitmapCursorFunc) (Display *dpy,
- Pixmap source,
- Pixmap mask,
- XColor *foreground,
- XColor *background,
- unsigned int x,
- unsigned int y);
-
-typedef Cursor (*TryShapeCursorFunc) (Display *dpy,
- Font source_font,
- Font mask_font,
- unsigned int source_char,
- unsigned int mask_char,
- XColor _Xconst *foreground,
- XColor _Xconst *background);
-
-static XModuleType _XcursorModule;
-static Bool _XcursorModuleTried;
-
-#define GetFunc(type,name,ret) {\
- static Bool been_here; \
- static type staticFunc; \
- \
- _XLockMutex (_Xglobal_lock); \
- if (!been_here) \
- { \
- been_here = True; \
- if (!_XcursorModuleTried) \
- { \
- _XcursorModuleTried = True; \
- _XcursorModule = open_library (); \
- } \
- if (_XcursorModule) \
- staticFunc = (type) fetch_symbol (_XcursorModule, "_" name); \
- } \
- ret = staticFunc; \
- _XUnlockMutex (_Xglobal_lock); \
-}
-
-static Cursor
-_XTryShapeCursor (Display *dpy,
- Font source_font,
- Font mask_font,
- unsigned int source_char,
- unsigned int mask_char,
- XColor _Xconst *foreground,
- XColor _Xconst *background)
-{
- TryShapeCursorFunc func;
-
- GetFunc (TryShapeCursorFunc, "XcursorTryShapeCursor", func);
- if (func)
- return (*func) (dpy, source_font, mask_font, source_char, mask_char,
- foreground, background);
- return None;
-}
-
-void
-_XNoticeCreateBitmap (Display *dpy,
- Pixmap pid,
- unsigned int width,
- unsigned int height)
-{
- NoticeCreateBitmapFunc func;
-
- GetFunc (NoticeCreateBitmapFunc, "XcursorNoticeCreateBitmap", func);
- if (func)
- (*func) (dpy, pid, width, height);
-}
-
-void
-_XNoticePutBitmap (Display *dpy,
- Drawable draw,
- XImage *image)
-{
- NoticePutBitmapFunc func;
-
- GetFunc (NoticePutBitmapFunc, "XcursorNoticePutBitmap", func);
- if (func)
- (*func) (dpy, draw, image);
-}
-
-Cursor
-_XTryShapeBitmapCursor (Display *dpy,
- Pixmap source,
- Pixmap mask,
- XColor *foreground,
- XColor *background,
- unsigned int x,
- unsigned int y)
-{
- TryShapeBitmapCursorFunc func;
-
- GetFunc (TryShapeBitmapCursorFunc, "XcursorTryShapeBitmapCursor", func);
- if (func)
- return (*func) (dpy, source, mask, foreground, background, x, y);
- return None;
-}
-#endif
-
-Cursor XCreateGlyphCursor(
- register Display *dpy,
- Font source_font,
- Font mask_font,
- unsigned int source_char,
- unsigned int mask_char,
- XColor _Xconst *foreground,
- XColor _Xconst *background)
-{
- Cursor cid;
- register xCreateGlyphCursorReq *req;
-
-#ifdef USE_DYNAMIC_XCURSOR
- cid = _XTryShapeCursor (dpy, source_font, mask_font,
- source_char, mask_char, foreground, background);
- if (cid)
- return cid;
-#endif
- LockDisplay(dpy);
- GetReq(CreateGlyphCursor, req);
- cid = req->cid = XAllocID(dpy);
- req->source = source_font;
- req->mask = mask_font;
- req->sourceChar = source_char;
- req->maskChar = mask_char;
- req->foreRed = foreground->red;
- req->foreGreen = foreground->green;
- req->foreBlue = foreground->blue;
- req->backRed = background->red;
- req->backGreen = background->green;
- req->backBlue = background->blue;
- UnlockDisplay(dpy);
- SyncHandle();
- return (cid);
-}
-
+/*
+
+Copyright 1986, 1998 The Open Group
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group shall not be
+used in advertising or otherwise to promote the sale, use or other dealings
+in this Software without prior written authorization from The Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+
+#ifdef USE_DYNAMIC_XCURSOR
+
+#ifdef __UNIXOS2__
+#define RTLD_LAZY 1
+#define LIBXCURSOR "Xcursor.dll"
+#endif
+#include <stdio.h>
+#include <string.h>
+#if defined(hpux)
+#include <dl.h>
+#else
+#include <dlfcn.h>
+#endif
+#include "Cr.h"
+
+#ifdef __CYGWIN__
+#define LIBXCURSOR "cygXcursor-1.dll"
+#endif
+
+#if defined(hpux)
+typedef shl_t XModuleType;
+#else
+#ifdef _MSC_VER
+#include <X11/XWindows.h>
+typedef HANDLE XModuleType;
+#define dlsym GetProcAddress
+#else
+typedef void *XModuleType;
+#endif
+#endif
+
+#ifndef LIBXCURSOR
+#define LIBXCURSOR "libXcursor.so.1"
+#endif
+
+static char libraryName[] = LIBXCURSOR;
+
+static XModuleType
+open_library (void)
+{
+ char *library = libraryName;
+ char *dot;
+ XModuleType module;
+ for (;;)
+ {
+#if defined(hpux)
+ module = shl_load(library, BIND_DEFERRED, 0L);
+#else
+#ifdef _MSC_VER
+ module = LoadLibrary(library);
+#else
+ module = dlopen(library, RTLD_LAZY);
+#endif
+#endif
+ if (module)
+ return module;
+ dot = strrchr (library, '.');
+ if (!dot)
+ break;
+ *dot = '\0';
+ }
+ return NULL;
+}
+
+static void *
+fetch_symbol (XModuleType module, const char *under_symbol)
+{
+ void *result = NULL;
+ const char *symbol = under_symbol + 1;
+#if defined(hpux)
+ int getsyms_cnt, i;
+ struct shl_symbol *symbols;
+
+ getsyms_cnt = shl_getsymbols(module, TYPE_PROCEDURE,
+ EXPORT_SYMBOLS, malloc, &symbols);
+
+ for(i=0; i<getsyms_cnt; i++) {
+ if(!strcmp(symbols[i].name, symbol)) {
+ result = symbols[i].value;
+ break;
+ }
+ }
+
+ if(getsyms_cnt > 0) {
+ free(symbols);
+ }
+#else
+ result = dlsym (module, symbol);
+ if (!result)
+ result = dlsym (module, under_symbol);
+#endif
+ return result;
+}
+
+typedef void (*NoticeCreateBitmapFunc) (Display *dpy,
+ Pixmap pid,
+ unsigned int width,
+ unsigned int height);
+
+typedef void (*NoticePutBitmapFunc) (Display *dpy,
+ Drawable draw,
+ XImage *image);
+
+typedef Cursor (*TryShapeBitmapCursorFunc) (Display *dpy,
+ Pixmap source,
+ Pixmap mask,
+ XColor *foreground,
+ XColor *background,
+ unsigned int x,
+ unsigned int y);
+
+typedef Cursor (*TryShapeCursorFunc) (Display *dpy,
+ Font source_font,
+ Font mask_font,
+ unsigned int source_char,
+ unsigned int mask_char,
+ XColor _Xconst *foreground,
+ XColor _Xconst *background);
+
+static XModuleType _XcursorModule;
+static Bool _XcursorModuleTried;
+
+#define GetFunc(type,name,ret) {\
+ static Bool been_here; \
+ static type staticFunc; \
+ \
+ _XLockMutex (_Xglobal_lock); \
+ if (!been_here) \
+ { \
+ been_here = True; \
+ if (!_XcursorModuleTried) \
+ { \
+ _XcursorModuleTried = True; \
+ _XcursorModule = open_library (); \
+ } \
+ if (_XcursorModule) \
+ staticFunc = (type) fetch_symbol (_XcursorModule, "_" name); \
+ } \
+ ret = staticFunc; \
+ _XUnlockMutex (_Xglobal_lock); \
+}
+
+static Cursor
+_XTryShapeCursor (Display *dpy,
+ Font source_font,
+ Font mask_font,
+ unsigned int source_char,
+ unsigned int mask_char,
+ XColor _Xconst *foreground,
+ XColor _Xconst *background)
+{
+ TryShapeCursorFunc func;
+
+ GetFunc (TryShapeCursorFunc, "XcursorTryShapeCursor", func);
+ if (func)
+ return (*func) (dpy, source_font, mask_font, source_char, mask_char,
+ foreground, background);
+ return None;
+}
+
+void
+_XNoticeCreateBitmap (Display *dpy,
+ Pixmap pid,
+ unsigned int width,
+ unsigned int height)
+{
+ NoticeCreateBitmapFunc func;
+
+ GetFunc (NoticeCreateBitmapFunc, "XcursorNoticeCreateBitmap", func);
+ if (func)
+ (*func) (dpy, pid, width, height);
+}
+
+void
+_XNoticePutBitmap (Display *dpy,
+ Drawable draw,
+ XImage *image)
+{
+ NoticePutBitmapFunc func;
+
+ GetFunc (NoticePutBitmapFunc, "XcursorNoticePutBitmap", func);
+ if (func)
+ (*func) (dpy, draw, image);
+}
+
+Cursor
+_XTryShapeBitmapCursor (Display *dpy,
+ Pixmap source,
+ Pixmap mask,
+ XColor *foreground,
+ XColor *background,
+ unsigned int x,
+ unsigned int y)
+{
+ TryShapeBitmapCursorFunc func;
+
+ GetFunc (TryShapeBitmapCursorFunc, "XcursorTryShapeBitmapCursor", func);
+ if (func)
+ return (*func) (dpy, source, mask, foreground, background, x, y);
+ return None;
+}
+#endif
+
+Cursor XCreateGlyphCursor(
+ register Display *dpy,
+ Font source_font,
+ Font mask_font,
+ unsigned int source_char,
+ unsigned int mask_char,
+ XColor _Xconst *foreground,
+ XColor _Xconst *background)
+{
+ Cursor cid;
+ register xCreateGlyphCursorReq *req;
+
+#ifdef USE_DYNAMIC_XCURSOR
+ cid = _XTryShapeCursor (dpy, source_font, mask_font,
+ source_char, mask_char, foreground, background);
+ if (cid)
+ return cid;
+#endif
+ LockDisplay(dpy);
+ GetReq(CreateGlyphCursor, req);
+ cid = req->cid = XAllocID(dpy);
+ req->source = source_font;
+ req->mask = mask_font;
+ req->sourceChar = source_char;
+ req->maskChar = mask_char;
+ req->foreRed = foreground->red;
+ req->foreGreen = foreground->green;
+ req->foreBlue = foreground->blue;
+ req->backRed = background->red;
+ req->backGreen = background->green;
+ req->backBlue = background->blue;
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return (cid);
+}
+
diff --git a/libX11/src/CrPixmap.c b/libX11/src/CrPixmap.c
index a1b072279..cdf312076 100644
--- a/libX11/src/CrPixmap.c
+++ b/libX11/src/CrPixmap.c
@@ -1,65 +1,65 @@
-/*
-
-Copyright 1986, 1998 The Open Group
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall not be
-used in advertising or otherwise to promote the sale, use or other dealings
-in this Software without prior written authorization from The Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-
-#ifdef USE_DYNAMIC_XCURSOR
-void
-_XNoticeCreateBitmap (Display *dpy,
- Pixmap pid,
- unsigned int width,
- unsigned int height);
-#endif
-
-Pixmap XCreatePixmap (
- register Display *dpy,
- Drawable d,
- unsigned int width,
- unsigned int height,
- unsigned int depth)
-{
- Pixmap pid;
- register xCreatePixmapReq *req;
-
- LockDisplay(dpy);
- GetReq(CreatePixmap, req);
- req->drawable = d;
- req->width = width;
- req->height = height;
- req->depth = depth;
- pid = req->pid = XAllocID(dpy);
- UnlockDisplay(dpy);
- SyncHandle();
-#ifdef USE_DYNAMIC_XCURSOR
- if (depth == 1)
- _XNoticeCreateBitmap (dpy, pid, width, height);
-#endif
- return (pid);
-}
-
+/*
+
+Copyright 1986, 1998 The Open Group
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group shall not be
+used in advertising or otherwise to promote the sale, use or other dealings
+in this Software without prior written authorization from The Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+
+#ifdef USE_DYNAMIC_XCURSOR
+void
+_XNoticeCreateBitmap (Display *dpy,
+ Pixmap pid,
+ unsigned int width,
+ unsigned int height);
+#endif
+
+Pixmap XCreatePixmap (
+ register Display *dpy,
+ Drawable d,
+ unsigned int width,
+ unsigned int height,
+ unsigned int depth)
+{
+ Pixmap pid;
+ register xCreatePixmapReq *req;
+
+ LockDisplay(dpy);
+ GetReq(CreatePixmap, req);
+ req->drawable = d;
+ req->width = width;
+ req->height = height;
+ req->depth = depth;
+ pid = req->pid = XAllocID(dpy);
+ UnlockDisplay(dpy);
+ SyncHandle();
+#ifdef USE_DYNAMIC_XCURSOR
+ if (depth == 1)
+ _XNoticeCreateBitmap (dpy, pid, width, height);
+#endif
+ return (pid);
+}
+
diff --git a/libX11/src/CrWindow.c b/libX11/src/CrWindow.c
index bb5dfc50e..347e9a022 100644
--- a/libX11/src/CrWindow.c
+++ b/libX11/src/CrWindow.c
@@ -1,82 +1,82 @@
-/*
-
-Copyright 1986, 1998 The Open Group
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall not be
-used in advertising or otherwise to promote the sale, use or other dealings
-in this Software without prior written authorization from The Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-
-#ifdef _MSC_VER
-#undef CreateWindow
-#endif
-
-Window XCreateSimpleWindow(
- register Display *dpy,
- Window parent,
- int x,
- int y,
- unsigned int width,
- unsigned int height,
- unsigned int borderWidth,
- unsigned long border,
- unsigned long background)
-{
- Window wid;
- register xCreateWindowReq *req;
-
- LockDisplay(dpy);
- GetReqExtra(CreateWindow, 8, req);
- req->parent = parent;
- req->x = x;
- req->y = y;
- req->width = width;
- req->height = height;
- req->borderWidth = borderWidth;
- req->depth = 0;
- req->class = CopyFromParent;
- req->visual = CopyFromParent;
- wid = req->wid = XAllocID(dpy);
- req->mask = CWBackPixel | CWBorderPixel;
-
-#ifdef MUSTCOPY
- {
- unsigned long lbackground = background, lborder = border;
- dpy->bufptr -= 8;
- Data32 (dpy, (long *) &lbackground, 4);
- Data32 (dpy, (long *) &lborder, 4);
- }
-#else
- {
- register CARD32 *valuePtr = (CARD32 *) NEXTPTR(req,xCreateWindowReq);
- *valuePtr++ = background;
- *valuePtr = border;
- }
-#endif /* MUSTCOPY */
-
- UnlockDisplay(dpy);
- SyncHandle();
- return (wid);
- }
+/*
+
+Copyright 1986, 1998 The Open Group
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group shall not be
+used in advertising or otherwise to promote the sale, use or other dealings
+in this Software without prior written authorization from The Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+
+#ifdef _MSC_VER
+#undef CreateWindow
+#endif
+
+Window XCreateSimpleWindow(
+ register Display *dpy,
+ Window parent,
+ int x,
+ int y,
+ unsigned int width,
+ unsigned int height,
+ unsigned int borderWidth,
+ unsigned long border,
+ unsigned long background)
+{
+ Window wid;
+ register xCreateWindowReq *req;
+
+ LockDisplay(dpy);
+ GetReqExtra(CreateWindow, 8, req);
+ req->parent = parent;
+ req->x = x;
+ req->y = y;
+ req->width = width;
+ req->height = height;
+ req->borderWidth = borderWidth;
+ req->depth = 0;
+ req->class = CopyFromParent;
+ req->visual = CopyFromParent;
+ wid = req->wid = XAllocID(dpy);
+ req->mask = CWBackPixel | CWBorderPixel;
+
+#ifdef MUSTCOPY
+ {
+ unsigned long lbackground = background, lborder = border;
+ dpy->bufptr -= 8;
+ Data32 (dpy, (long *) &lbackground, 4);
+ Data32 (dpy, (long *) &lborder, 4);
+ }
+#else
+ {
+ register CARD32 *valuePtr = (CARD32 *) NEXTPTR(req,xCreateWindowReq);
+ *valuePtr++ = background;
+ *valuePtr = border;
+ }
+#endif /* MUSTCOPY */
+
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return (wid);
+ }
diff --git a/libX11/src/Cursor.c b/libX11/src/Cursor.c
index b8fb7e629..80b91c36d 100644
--- a/libX11/src/Cursor.c
+++ b/libX11/src/Cursor.c
@@ -1,53 +1,53 @@
-/*
-
-Copyright 1987, 1998 The Open Group
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall not be
-used in advertising or otherwise to promote the sale, use or other dealings
-in this Software without prior written authorization from The Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-static XColor _Xconst foreground = { 0, 0, 0, 0 }; /* black */
-static XColor _Xconst background = { 0, 65535, 65535, 65535 }; /* white */
-
-Cursor XCreateFontCursor(
- Display *dpy,
- unsigned int which)
-{
- /*
- * the cursor font contains the shape glyph followed by the mask
- * glyph; so character position 0 contains a shape, 1 the mask for 0,
- * 2 a shape, etc. <X11/cursorfont.h> contains hash define names
- * for all of these.
- */
-
- if (dpy->cursor_font == None) {
- dpy->cursor_font = XLoadFont (dpy, CURSORFONT);
- if (dpy->cursor_font == None) return None;
- }
-
- return XCreateGlyphCursor (dpy, dpy->cursor_font, dpy->cursor_font,
- which, which + 1, &foreground, &background);
-}
-
+/*
+
+Copyright 1987, 1998 The Open Group
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group shall not be
+used in advertising or otherwise to promote the sale, use or other dealings
+in this Software without prior written authorization from The Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+static XColor _Xconst foreground = { 0, 0, 0, 0 }; /* black */
+static XColor _Xconst background = { 0, 65535, 65535, 65535 }; /* white */
+
+Cursor XCreateFontCursor(
+ Display *dpy,
+ unsigned int which)
+{
+ /*
+ * the cursor font contains the shape glyph followed by the mask
+ * glyph; so character position 0 contains a shape, 1 the mask for 0,
+ * 2 a shape, etc. <X11/cursorfont.h> contains hash define names
+ * for all of these.
+ */
+
+ if (dpy->cursor_font == None) {
+ dpy->cursor_font = XLoadFont (dpy, CURSORFONT);
+ if (dpy->cursor_font == None) return None;
+ }
+
+ return XCreateGlyphCursor (dpy, dpy->cursor_font, dpy->cursor_font,
+ which, which + 1, &foreground, &background);
+}
+
diff --git a/libX11/src/DefCursor.c b/libX11/src/DefCursor.c
index cba155036..e3cee0649 100644
--- a/libX11/src/DefCursor.c
+++ b/libX11/src/DefCursor.c
@@ -1,49 +1,49 @@
-/*
-
-Copyright 1986,1998 The Open Group
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall not be
-used in advertising or otherwise to promote the sale, use or other dealings
-in this Software without prior written authorization from The Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-
-int
-XDefineCursor (
- register Display *dpy,
- Window w,
- Cursor cursor)
-{
- register xChangeWindowAttributesReq *req;
-
- LockDisplay(dpy);
- GetReqExtra (ChangeWindowAttributes, 4, req);
- req->window = w;
- req->valueMask = CWCursor;
- OneDataCard32 (dpy, NEXTPTR(req,xChangeWindowAttributesReq), cursor);
- UnlockDisplay(dpy);
- SyncHandle();
- return 1;
-}
-
+/*
+
+Copyright 1986,1998 The Open Group
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group shall not be
+used in advertising or otherwise to promote the sale, use or other dealings
+in this Software without prior written authorization from The Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+
+int
+XDefineCursor (
+ register Display *dpy,
+ Window w,
+ Cursor cursor)
+{
+ register xChangeWindowAttributesReq *req;
+
+ LockDisplay(dpy);
+ GetReqExtra (ChangeWindowAttributes, 4, req);
+ req->window = w;
+ req->valueMask = CWCursor;
+ OneDataCard32 (dpy, NEXTPTR(req,xChangeWindowAttributesReq), cursor);
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return 1;
+}
+
diff --git a/libX11/src/DelProp.c b/libX11/src/DelProp.c
index 161334708..da486b8ef 100644
--- a/libX11/src/DelProp.c
+++ b/libX11/src/DelProp.c
@@ -1,47 +1,47 @@
-/*
-
-Copyright 1986, 1998 The Open Group
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall not be
-used in advertising or otherwise to promote the sale, use or other dealings
-in this Software without prior written authorization from The Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-
-int
-XDeleteProperty(
- register Display *dpy,
- Window window,
- Atom property)
-{
- register xDeletePropertyReq *req;
-
- LockDisplay(dpy);
- GetReq(DeleteProperty, req);
- req->window = window;
- req->property = property;
- UnlockDisplay(dpy);
- SyncHandle();
- return 1;
-}
+/*
+
+Copyright 1986, 1998 The Open Group
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group shall not be
+used in advertising or otherwise to promote the sale, use or other dealings
+in this Software without prior written authorization from The Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+
+int
+XDeleteProperty(
+ register Display *dpy,
+ Window window,
+ Atom property)
+{
+ register xDeletePropertyReq *req;
+
+ LockDisplay(dpy);
+ GetReq(DeleteProperty, req);
+ req->window = window;
+ req->property = property;
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return 1;
+}
diff --git a/libX11/src/Depths.c b/libX11/src/Depths.c
index 1f3545a6c..f49655cb2 100644
--- a/libX11/src/Depths.c
+++ b/libX11/src/Depths.c
@@ -1,62 +1,62 @@
-/*
-
-Copyright 1989, 1998 The Open Group
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall not be
-used in advertising or otherwise to promote the sale, use or other dealings
-in this Software without prior written authorization from The Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-#include <stdio.h>
-
-/*
- * XListDepths - return info from connection setup
- */
-int *XListDepths (
- Display *dpy,
- int scrnum,
- int *countp)
-{
- Screen *scr;
- int count;
- int *depths;
-
- if (scrnum < 0 || scrnum >= dpy->nscreens) return NULL;
-
- scr = &dpy->screens[scrnum];
- if ((count = scr->ndepths) > 0) {
- register Depth *dp;
- register int i;
-
- depths = (int *) Xmalloc (count * sizeof(int));
- if (!depths) return NULL;
- for (i = 0, dp = scr->depths; i < count; i++, dp++)
- depths[i] = dp->depth;
- } else {
- /* a screen must have a depth */
- return NULL;
- }
- *countp = count;
- return depths;
-}
+/*
+
+Copyright 1989, 1998 The Open Group
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group shall not be
+used in advertising or otherwise to promote the sale, use or other dealings
+in this Software without prior written authorization from The Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+#include <stdio.h>
+
+/*
+ * XListDepths - return info from connection setup
+ */
+int *XListDepths (
+ Display *dpy,
+ int scrnum,
+ int *countp)
+{
+ Screen *scr;
+ int count;
+ int *depths;
+
+ if (scrnum < 0 || scrnum >= dpy->nscreens) return NULL;
+
+ scr = &dpy->screens[scrnum];
+ if ((count = scr->ndepths) > 0) {
+ register Depth *dp;
+ register int i;
+
+ depths = (int *) Xmalloc (count * sizeof(int));
+ if (!depths) return NULL;
+ for (i = 0, dp = scr->depths; i < count; i++, dp++)
+ depths[i] = dp->depth;
+ } else {
+ /* a screen must have a depth */
+ return NULL;
+ }
+ *countp = count;
+ return depths;
+}
diff --git a/libX11/src/DestSubs.c b/libX11/src/DestSubs.c
index ab63cc67e..7c6c428be 100644
--- a/libX11/src/DestSubs.c
+++ b/libX11/src/DestSubs.c
@@ -1,45 +1,45 @@
-/*
-
-Copyright 1986, 1998 The Open Group
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall not be
-used in advertising or otherwise to promote the sale, use or other dealings
-in this Software without prior written authorization from The Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-
-int
-XDestroySubwindows(
- register Display *dpy,
- Window win)
-{
- register xResourceReq *req;
-
- LockDisplay(dpy);
- GetResReq (DestroySubwindows,win, req);
- UnlockDisplay(dpy);
- SyncHandle();
- return 1;
-}
-
+/*
+
+Copyright 1986, 1998 The Open Group
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group shall not be
+used in advertising or otherwise to promote the sale, use or other dealings
+in this Software without prior written authorization from The Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+
+int
+XDestroySubwindows(
+ register Display *dpy,
+ Window win)
+{
+ register xResourceReq *req;
+
+ LockDisplay(dpy);
+ GetResReq (DestroySubwindows,win, req);
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return 1;
+}
+
diff --git a/libX11/src/DestWind.c b/libX11/src/DestWind.c
index 066e42eaf..c1aec893a 100644
--- a/libX11/src/DestWind.c
+++ b/libX11/src/DestWind.c
@@ -1,45 +1,45 @@
-/*
-
-Copyright 1986, 1998 The Open Group
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall not be
-used in advertising or otherwise to promote the sale, use or other dealings
-in this Software without prior written authorization from The Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-
-int
-XDestroyWindow (
- register Display *dpy,
- Window w)
-{
- register xResourceReq *req;
-
- LockDisplay(dpy);
- GetResReq(DestroyWindow, w, req);
- UnlockDisplay(dpy);
- SyncHandle();
- return 1;
-}
-
+/*
+
+Copyright 1986, 1998 The Open Group
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group shall not be
+used in advertising or otherwise to promote the sale, use or other dealings
+in this Software without prior written authorization from The Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+
+int
+XDestroyWindow (
+ register Display *dpy,
+ Window w)
+{
+ register xResourceReq *req;
+
+ LockDisplay(dpy);
+ GetResReq(DestroyWindow, w, req);
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return 1;
+}
+
diff --git a/libX11/src/DisName.c b/libX11/src/DisName.c
index 598347746..87a1e2f0e 100644
--- a/libX11/src/DisName.c
+++ b/libX11/src/DisName.c
@@ -1,64 +1,64 @@
-
-/*
-
-Copyright 1994, 1998 The Open Group
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
-
-The above copyright notice and this permission notice shall be included
-in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
-IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR
-OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
-ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall
-not be used in advertising or otherwise to promote the sale, use or
-other dealings in this Software without prior written authorization
-from The Open Group.
-
-*/
-
-/* XDisplayName.c */
-/*
- * Returns the name of the display XOpenDisplay would use. This is better
- * than just printing the "display" variable in a program because that
- * could be NULL and/or there could be an environment variable set.
- * This makes it easier for programmers to provide meaningful error
- * messages.
- *
- *
- * For example, this is used in XOpenDisplay() as
- * strncpy( displaybuf, XDisplayName( display ), sizeof(displaybuf) );
- * if ( *displaybuf == '\0' ) return( NULL );
- * This check is actually unnecessary because the next thing is an index()
- * call looking for a ':' which will fail and we'll return(NULL).
- */
-/* Written at Waterloo - JMSellens */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include <stdio.h>
-#include <stdlib.h>
-#include "Xlib.h"
-
-char *
-XDisplayName(
- _Xconst char *display)
-{
- char *d;
- if ( display != (char *)NULL && *display != '\0' )
- return( (char *)display );
- if ( (d = getenv( "DISPLAY" )) != (char *)NULL )
- return( d );
- return( "" );
-}
+
+/*
+
+Copyright 1994, 1998 The Open Group
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
+
+The above copyright notice and this permission notice shall be included
+in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR
+OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
+ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group shall
+not be used in advertising or otherwise to promote the sale, use or
+other dealings in this Software without prior written authorization
+from The Open Group.
+
+*/
+
+/* XDisplayName.c */
+/*
+ * Returns the name of the display XOpenDisplay would use. This is better
+ * than just printing the "display" variable in a program because that
+ * could be NULL and/or there could be an environment variable set.
+ * This makes it easier for programmers to provide meaningful error
+ * messages.
+ *
+ *
+ * For example, this is used in XOpenDisplay() as
+ * strncpy( displaybuf, XDisplayName( display ), sizeof(displaybuf) );
+ * if ( *displaybuf == '\0' ) return( NULL );
+ * This check is actually unnecessary because the next thing is an index()
+ * call looking for a ':' which will fail and we'll return(NULL).
+ */
+/* Written at Waterloo - JMSellens */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include <stdio.h>
+#include <stdlib.h>
+#include "Xlib.h"
+
+char *
+XDisplayName(
+ _Xconst char *display)
+{
+ char *d;
+ if ( display != (char *)NULL && *display != '\0' )
+ return( (char *)display );
+ if ( (d = getenv( "DISPLAY" )) != (char *)NULL )
+ return( d );
+ return( "" );
+}
diff --git a/libX11/src/DrArc.c b/libX11/src/DrArc.c
index 8e90ebee0..1dc4a07b2 100644
--- a/libX11/src/DrArc.c
+++ b/libX11/src/DrArc.c
@@ -1,85 +1,85 @@
-/*
-
-Copyright 1986, 1998 The Open Group
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall not be
-used in advertising or otherwise to promote the sale, use or other dealings
-in this Software without prior written authorization from The Open Group.
-
-*/
-
-/* Note to future maintainers: XDrawArc does NOT batch successive PolyArc
- requests into a single request like XDrawLine, XDrawPoint, etc.
- We don't do this because X_PolyArc applies the GC's join-style if
- the last point in one arc coincides with the first point in another.
- The client wouldn't expect this and would have no easy way to defeat it. */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-
-int
-XDrawArc(
- register Display *dpy,
- Drawable d,
- GC gc,
- int x,
- int y, /* INT16 */
- unsigned int width,
- unsigned int height, /* CARD16 */
- int angle1,
- int angle2) /* INT16 */
-{
- register xPolyArcReq *req;
- register xArc *arc;
-#ifdef MUSTCOPY
- xArc arcdata;
- long len = SIZEOF(xArc);
-
- arc = &arcdata;
-#endif /* MUSTCOPY */
-
- LockDisplay(dpy);
- FlushGC(dpy, gc);
- GetReqExtra (PolyArc, SIZEOF(xArc), req);
-
- req->drawable = d;
- req->gc = gc->gid;
-
-#ifndef MUSTCOPY
- arc = (xArc *) NEXTPTR(req,xPolyArcReq);
-#endif /* MUSTCOPY */
-
- arc->x = x;
- arc->y = y;
- arc->width = width;
- arc->height = height;
- arc->angle1 = angle1;
- arc->angle2 = angle2;
-
-#ifdef MUSTCOPY
- dpy->bufptr -= SIZEOF(xArc);
- Data (dpy, (char *) arc, len);
-#endif /* MUSTCOPY */
-
- UnlockDisplay(dpy);
- SyncHandle();
- return 1;
-}
+/*
+
+Copyright 1986, 1998 The Open Group
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group shall not be
+used in advertising or otherwise to promote the sale, use or other dealings
+in this Software without prior written authorization from The Open Group.
+
+*/
+
+/* Note to future maintainers: XDrawArc does NOT batch successive PolyArc
+ requests into a single request like XDrawLine, XDrawPoint, etc.
+ We don't do this because X_PolyArc applies the GC's join-style if
+ the last point in one arc coincides with the first point in another.
+ The client wouldn't expect this and would have no easy way to defeat it. */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+
+int
+XDrawArc(
+ register Display *dpy,
+ Drawable d,
+ GC gc,
+ int x,
+ int y, /* INT16 */
+ unsigned int width,
+ unsigned int height, /* CARD16 */
+ int angle1,
+ int angle2) /* INT16 */
+{
+ register xPolyArcReq *req;
+ register xArc *arc;
+#ifdef MUSTCOPY
+ xArc arcdata;
+ long len = SIZEOF(xArc);
+
+ arc = &arcdata;
+#endif /* MUSTCOPY */
+
+ LockDisplay(dpy);
+ FlushGC(dpy, gc);
+ GetReqExtra (PolyArc, SIZEOF(xArc), req);
+
+ req->drawable = d;
+ req->gc = gc->gid;
+
+#ifndef MUSTCOPY
+ arc = (xArc *) NEXTPTR(req,xPolyArcReq);
+#endif /* MUSTCOPY */
+
+ arc->x = x;
+ arc->y = y;
+ arc->width = width;
+ arc->height = height;
+ arc->angle1 = angle1;
+ arc->angle2 = angle2;
+
+#ifdef MUSTCOPY
+ dpy->bufptr -= SIZEOF(xArc);
+ Data (dpy, (char *) arc, len);
+#endif /* MUSTCOPY */
+
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return 1;
+}
diff --git a/libX11/src/DrArcs.c b/libX11/src/DrArcs.c
index c802a2726..14405aa3d 100644
--- a/libX11/src/DrArcs.c
+++ b/libX11/src/DrArcs.c
@@ -1,57 +1,57 @@
-/*
-
-Copyright 1986, 1998 The Open Group
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall not be
-used in advertising or otherwise to promote the sale, use or other dealings
-in this Software without prior written authorization from The Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-
-#define arc_scale (SIZEOF(xArc) / 4)
-
-int
-XDrawArcs(
- register Display *dpy,
- Drawable d,
- GC gc,
- XArc *arcs,
- int n_arcs)
-{
- register xPolyArcReq *req;
- register long len;
-
- LockDisplay(dpy);
- FlushGC(dpy, gc);
- GetReq(PolyArc,req);
- req->drawable = d;
- req->gc = gc->gid;
- len = ((long)n_arcs) * arc_scale;
- SetReqLen(req, len, 1);
- len <<= 2; /* watch out for macros... */
- Data16 (dpy, (short *) arcs, len);
- UnlockDisplay(dpy);
- SyncHandle();
- return 1;
-}
+/*
+
+Copyright 1986, 1998 The Open Group
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group shall not be
+used in advertising or otherwise to promote the sale, use or other dealings
+in this Software without prior written authorization from The Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+
+#define arc_scale (SIZEOF(xArc) / 4)
+
+int
+XDrawArcs(
+ register Display *dpy,
+ Drawable d,
+ GC gc,
+ XArc *arcs,
+ int n_arcs)
+{
+ register xPolyArcReq *req;
+ register long len;
+
+ LockDisplay(dpy);
+ FlushGC(dpy, gc);
+ GetReq(PolyArc,req);
+ req->drawable = d;
+ req->gc = gc->gid;
+ len = ((long)n_arcs) * arc_scale;
+ SetReqLen(req, len, 1);
+ len <<= 2; /* watch out for macros... */
+ Data16 (dpy, (short *) arcs, len);
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return 1;
+}
diff --git a/libX11/src/DrLine.c b/libX11/src/DrLine.c
index c25efad9e..3786f5933 100644
--- a/libX11/src/DrLine.c
+++ b/libX11/src/DrLine.c
@@ -1,101 +1,101 @@
-/*
-
-Copyright 1986, 1998 The Open Group
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall not be
-used in advertising or otherwise to promote the sale, use or other dealings
-in this Software without prior written authorization from The Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-
-/* precompute the maximum size of batching request allowed */
-
-#define wsize (SIZEOF(xPolySegmentReq) + WLNSPERBATCH * SIZEOF(xSegment))
-#define zsize (SIZEOF(xPolySegmentReq) + ZLNSPERBATCH * SIZEOF(xSegment))
-
-int
-XDrawLine (
- register Display *dpy,
- Drawable d,
- GC gc,
- int x1,
- int y1,
- int x2,
- int y2)
-{
- register xSegment *segment;
-#ifdef MUSTCOPY
- xSegment segmentdata;
- long len = SIZEOF(xSegment);
-
- segment = &segmentdata;
-#endif /* not MUSTCOPY */
-
- LockDisplay(dpy);
- FlushGC(dpy, gc);
-
- {
- register xPolySegmentReq *req = (xPolySegmentReq *) dpy->last_req;
-
- /* if same as previous request, with same drawable, batch requests */
- if (
- (req->reqType == X_PolySegment)
- && (req->drawable == d)
- && (req->gc == gc->gid)
- && ((dpy->bufptr + SIZEOF(xSegment)) <= dpy->bufmax)
- && (((char *)dpy->bufptr - (char *)req) < (gc->values.line_width ?
- wsize : zsize)) ) {
- req->length += SIZEOF(xSegment) >> 2;
-#ifndef MUSTCOPY
- segment = (xSegment *) dpy->bufptr;
- dpy->bufptr += SIZEOF(xSegment);
-#endif /* not MUSTCOPY */
- }
-
- else {
- GetReqExtra (PolySegment, SIZEOF(xSegment), req);
- req->drawable = d;
- req->gc = gc->gid;
-#ifdef MUSTCOPY
- dpy->bufptr -= SIZEOF(xSegment);
-#else
- segment = (xSegment *) NEXTPTR(req,xPolySegmentReq);
-#endif /* MUSTCOPY */
- }
-
- segment->x1 = x1;
- segment->y1 = y1;
- segment->x2 = x2;
- segment->y2 = y2;
-
-#ifdef MUSTCOPY
- Data (dpy, (char *) &segmentdata, len);
-#endif /* MUSTCOPY */
-
- UnlockDisplay(dpy);
- SyncHandle();
- }
- return 1;
-}
-
+/*
+
+Copyright 1986, 1998 The Open Group
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group shall not be
+used in advertising or otherwise to promote the sale, use or other dealings
+in this Software without prior written authorization from The Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+
+/* precompute the maximum size of batching request allowed */
+
+#define wsize (SIZEOF(xPolySegmentReq) + WLNSPERBATCH * SIZEOF(xSegment))
+#define zsize (SIZEOF(xPolySegmentReq) + ZLNSPERBATCH * SIZEOF(xSegment))
+
+int
+XDrawLine (
+ register Display *dpy,
+ Drawable d,
+ GC gc,
+ int x1,
+ int y1,
+ int x2,
+ int y2)
+{
+ register xSegment *segment;
+#ifdef MUSTCOPY
+ xSegment segmentdata;
+ long len = SIZEOF(xSegment);
+
+ segment = &segmentdata;
+#endif /* not MUSTCOPY */
+
+ LockDisplay(dpy);
+ FlushGC(dpy, gc);
+
+ {
+ register xPolySegmentReq *req = (xPolySegmentReq *) dpy->last_req;
+
+ /* if same as previous request, with same drawable, batch requests */
+ if (
+ (req->reqType == X_PolySegment)
+ && (req->drawable == d)
+ && (req->gc == gc->gid)
+ && ((dpy->bufptr + SIZEOF(xSegment)) <= dpy->bufmax)
+ && (((char *)dpy->bufptr - (char *)req) < (gc->values.line_width ?
+ wsize : zsize)) ) {
+ req->length += SIZEOF(xSegment) >> 2;
+#ifndef MUSTCOPY
+ segment = (xSegment *) dpy->bufptr;
+ dpy->bufptr += SIZEOF(xSegment);
+#endif /* not MUSTCOPY */
+ }
+
+ else {
+ GetReqExtra (PolySegment, SIZEOF(xSegment), req);
+ req->drawable = d;
+ req->gc = gc->gid;
+#ifdef MUSTCOPY
+ dpy->bufptr -= SIZEOF(xSegment);
+#else
+ segment = (xSegment *) NEXTPTR(req,xPolySegmentReq);
+#endif /* MUSTCOPY */
+ }
+
+ segment->x1 = x1;
+ segment->y1 = y1;
+ segment->x2 = x2;
+ segment->y2 = y2;
+
+#ifdef MUSTCOPY
+ Data (dpy, (char *) &segmentdata, len);
+#endif /* MUSTCOPY */
+
+ UnlockDisplay(dpy);
+ SyncHandle();
+ }
+ return 1;
+}
+
diff --git a/libX11/src/DrLines.c b/libX11/src/DrLines.c
index d7d641068..68071b6b4 100644
--- a/libX11/src/DrLines.c
+++ b/libX11/src/DrLines.c
@@ -1,57 +1,57 @@
-/*
-
-Copyright 1986, 1998 The Open Group
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall not be
-used in advertising or otherwise to promote the sale, use or other dealings
-in this Software without prior written authorization from The Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-
-int
-XDrawLines (
- register Display *dpy,
- Drawable d,
- GC gc,
- XPoint *points,
- int npoints,
- int mode)
-{
- register xPolyLineReq *req;
- register long length;
- LockDisplay(dpy);
- FlushGC(dpy, gc);
- GetReq (PolyLine, req);
- req->drawable = d;
- req->gc = gc->gid;
- req->coordMode = mode;
- SetReqLen(req, npoints, 65535 - req->length);
- /* each point is 2 16-bit integers */
- length = npoints << 2; /* watch out for macros... */
- Data16 (dpy, (short *) points, length);
- UnlockDisplay(dpy);
- SyncHandle();
- return 1;
-}
-
+/*
+
+Copyright 1986, 1998 The Open Group
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group shall not be
+used in advertising or otherwise to promote the sale, use or other dealings
+in this Software without prior written authorization from The Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+
+int
+XDrawLines (
+ register Display *dpy,
+ Drawable d,
+ GC gc,
+ XPoint *points,
+ int npoints,
+ int mode)
+{
+ register xPolyLineReq *req;
+ register long length;
+ LockDisplay(dpy);
+ FlushGC(dpy, gc);
+ GetReq (PolyLine, req);
+ req->drawable = d;
+ req->gc = gc->gid;
+ req->coordMode = mode;
+ SetReqLen(req, npoints, 65535 - req->length);
+ /* each point is 2 16-bit integers */
+ length = npoints << 2; /* watch out for macros... */
+ Data16 (dpy, (short *) points, length);
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return 1;
+}
+
diff --git a/libX11/src/DrPoint.c b/libX11/src/DrPoint.c
index 7ca8715d6..5c89b5c63 100644
--- a/libX11/src/DrPoint.c
+++ b/libX11/src/DrPoint.c
@@ -1,97 +1,97 @@
-/*
-
-Copyright 1986, 1998 The Open Group
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall not be
-used in advertising or otherwise to promote the sale, use or other dealings
-in this Software without prior written authorization from The Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-
-/* precompute the maximum size of batching request allowed */
-
-#define size (SIZEOF(xPolyPointReq) + PTSPERBATCH * SIZEOF(xPoint))
-
-int
-XDrawPoint(
- register Display *dpy,
- Drawable d,
- GC gc,
- int x,
- int y) /* INT16 */
-{
- xPoint *point;
-#ifdef MUSTCOPY
- xPoint pointdata;
- long len = SIZEOF(xPoint);
-
- point = &pointdata;
-#endif /* MUSTCOPY */
-
- LockDisplay(dpy);
- FlushGC(dpy, gc);
-
- {
- register xPolyPointReq *req = (xPolyPointReq *) dpy->last_req;
-
-
- /* if same as previous request, with same drawable, batch requests */
- if (
- (req->reqType == X_PolyPoint)
- && (req->drawable == d)
- && (req->gc == gc->gid)
- && (req->coordMode == CoordModeOrigin)
- && ((dpy->bufptr + SIZEOF(xPoint)) <= dpy->bufmax)
- && (((char *)dpy->bufptr - (char *)req) < size) ) {
- req->length += SIZEOF(xPoint) >> 2;
-#ifndef MUSTCOPY
- point = (xPoint *) dpy->bufptr;
- dpy->bufptr += SIZEOF(xPoint);
-#endif /* not MUSTCOPY */
- }
-
- else {
- GetReqExtra(PolyPoint, 4, req); /* 1 point = 4 bytes */
- req->drawable = d;
- req->gc = gc->gid;
- req->coordMode = CoordModeOrigin;
-#ifdef MUSTCOPY
- dpy->bufptr -= SIZEOF(xPoint);
-#else
- point = (xPoint *) NEXTPTR(req,xPolyPointReq);
-#endif /* MUSTCOPY */
- }
-
- point->x = x;
- point->y = y;
-
-#ifdef MUSTCOPY
- Data (dpy, (char *) point, len);
-#endif /* MUSTCOPY */
- }
- UnlockDisplay(dpy);
- SyncHandle();
- return 1;
-}
-
+/*
+
+Copyright 1986, 1998 The Open Group
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group shall not be
+used in advertising or otherwise to promote the sale, use or other dealings
+in this Software without prior written authorization from The Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+
+/* precompute the maximum size of batching request allowed */
+
+#define size (SIZEOF(xPolyPointReq) + PTSPERBATCH * SIZEOF(xPoint))
+
+int
+XDrawPoint(
+ register Display *dpy,
+ Drawable d,
+ GC gc,
+ int x,
+ int y) /* INT16 */
+{
+ xPoint *point;
+#ifdef MUSTCOPY
+ xPoint pointdata;
+ long len = SIZEOF(xPoint);
+
+ point = &pointdata;
+#endif /* MUSTCOPY */
+
+ LockDisplay(dpy);
+ FlushGC(dpy, gc);
+
+ {
+ register xPolyPointReq *req = (xPolyPointReq *) dpy->last_req;
+
+
+ /* if same as previous request, with same drawable, batch requests */
+ if (
+ (req->reqType == X_PolyPoint)
+ && (req->drawable == d)
+ && (req->gc == gc->gid)
+ && (req->coordMode == CoordModeOrigin)
+ && ((dpy->bufptr + SIZEOF(xPoint)) <= dpy->bufmax)
+ && (((char *)dpy->bufptr - (char *)req) < size) ) {
+ req->length += SIZEOF(xPoint) >> 2;
+#ifndef MUSTCOPY
+ point = (xPoint *) dpy->bufptr;
+ dpy->bufptr += SIZEOF(xPoint);
+#endif /* not MUSTCOPY */
+ }
+
+ else {
+ GetReqExtra(PolyPoint, 4, req); /* 1 point = 4 bytes */
+ req->drawable = d;
+ req->gc = gc->gid;
+ req->coordMode = CoordModeOrigin;
+#ifdef MUSTCOPY
+ dpy->bufptr -= SIZEOF(xPoint);
+#else
+ point = (xPoint *) NEXTPTR(req,xPolyPointReq);
+#endif /* MUSTCOPY */
+ }
+
+ point->x = x;
+ point->y = y;
+
+#ifdef MUSTCOPY
+ Data (dpy, (char *) point, len);
+#endif /* MUSTCOPY */
+ }
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return 1;
+}
+
diff --git a/libX11/src/DrPoints.c b/libX11/src/DrPoints.c
index e8b092555..287fa057d 100644
--- a/libX11/src/DrPoints.c
+++ b/libX11/src/DrPoints.c
@@ -1,85 +1,85 @@
-/*
-
-Copyright 1986, 1998 The Open Group
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall not be
-used in advertising or otherwise to promote the sale, use or other dealings
-in this Software without prior written authorization from The Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-
-int
-XDrawPoints(
- register Display *dpy,
- Drawable d,
- GC gc,
- XPoint *points,
- int n_points,
- int mode) /* CoordMode */
-{
- register xPolyPointReq *req;
- register long nbytes;
- int n;
- int xoff, yoff;
- XPoint pt;
-
- xoff = yoff = 0;
- LockDisplay(dpy);
- FlushGC(dpy, gc);
- while (n_points) {
- GetReq(PolyPoint, req);
- req->drawable = d;
- req->gc = gc->gid;
- req->coordMode = mode;
- n = n_points;
- if (!dpy->bigreq_size && n > (dpy->max_request_size - req->length))
- n = dpy->max_request_size - req->length;
- SetReqLen(req, n, n);
- nbytes = ((long)n) << 2; /* watch out for macros... */
- if (xoff || yoff) {
- pt.x = xoff + points->x;
- pt.y = yoff + points->y;
- Data16 (dpy, (short *) &pt, 4);
- if (nbytes > 4) {
- Data16 (dpy, (short *) (points + 1), nbytes - 4);
- }
- } else {
- Data16 (dpy, (short *) points, nbytes);
- }
- n_points -= n;
- if (n_points && (mode == CoordModePrevious)) {
- register XPoint *pptr = points;
- points += n;
- while (pptr != points) {
- xoff += pptr->x;
- yoff += pptr->y;
- pptr++;
- }
- } else
- points += n;
- }
- UnlockDisplay(dpy);
- SyncHandle();
- return 1;
-}
+/*
+
+Copyright 1986, 1998 The Open Group
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group shall not be
+used in advertising or otherwise to promote the sale, use or other dealings
+in this Software without prior written authorization from The Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+
+int
+XDrawPoints(
+ register Display *dpy,
+ Drawable d,
+ GC gc,
+ XPoint *points,
+ int n_points,
+ int mode) /* CoordMode */
+{
+ register xPolyPointReq *req;
+ register long nbytes;
+ int n;
+ int xoff, yoff;
+ XPoint pt;
+
+ xoff = yoff = 0;
+ LockDisplay(dpy);
+ FlushGC(dpy, gc);
+ while (n_points) {
+ GetReq(PolyPoint, req);
+ req->drawable = d;
+ req->gc = gc->gid;
+ req->coordMode = mode;
+ n = n_points;
+ if (!dpy->bigreq_size && n > (dpy->max_request_size - req->length))
+ n = dpy->max_request_size - req->length;
+ SetReqLen(req, n, n);
+ nbytes = ((long)n) << 2; /* watch out for macros... */
+ if (xoff || yoff) {
+ pt.x = xoff + points->x;
+ pt.y = yoff + points->y;
+ Data16 (dpy, (short *) &pt, 4);
+ if (nbytes > 4) {
+ Data16 (dpy, (short *) (points + 1), nbytes - 4);
+ }
+ } else {
+ Data16 (dpy, (short *) points, nbytes);
+ }
+ n_points -= n;
+ if (n_points && (mode == CoordModePrevious)) {
+ register XPoint *pptr = points;
+ points += n;
+ while (pptr != points) {
+ xoff += pptr->x;
+ yoff += pptr->y;
+ pptr++;
+ }
+ } else
+ points += n;
+ }
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return 1;
+}
diff --git a/libX11/src/DrRect.c b/libX11/src/DrRect.c
index 0fe301a2c..dadd55ea2 100644
--- a/libX11/src/DrRect.c
+++ b/libX11/src/DrRect.c
@@ -1,100 +1,100 @@
-/*
-
-Copyright 1986, 1998 The Open Group
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall not be
-used in advertising or otherwise to promote the sale, use or other dealings
-in this Software without prior written authorization from The Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-
-/* precompute the maximum size of batching request allowed */
-
-#define wsize (SIZEOF(xPolyRectangleReq) + WRCTSPERBATCH * SIZEOF(xRectangle))
-#define zsize (SIZEOF(xPolyRectangleReq) + ZRCTSPERBATCH * SIZEOF(xRectangle))
-
-int
-XDrawRectangle(
- register Display *dpy,
- Drawable d,
- GC gc,
- int x,
- int y, /* INT16 */
- unsigned int width,
- unsigned int height) /* CARD16 */
-{
- xRectangle *rect;
-#ifdef MUSTCOPY
- xRectangle rectdata;
- long len = SIZEOF(xRectangle);
-
- rect = &rectdata;
-#endif /* MUSTCOPY */
-
- LockDisplay(dpy);
- FlushGC(dpy, gc);
-
- {
- register xPolyRectangleReq *req = (xPolyRectangleReq *) dpy->last_req;
-
- /* if same as previous request, with same drawable, batch requests */
- if (
- (req->reqType == X_PolyRectangle)
- && (req->drawable == d)
- && (req->gc == gc->gid)
- && ((dpy->bufptr + SIZEOF(xRectangle)) <= dpy->bufmax)
- && (((char *)dpy->bufptr - (char *)req) < (gc->values.line_width ?
- wsize : zsize)) ) {
- req->length += SIZEOF(xRectangle) >> 2;
-#ifndef MUSTCOPY
- rect = (xRectangle *) dpy->bufptr;
- dpy->bufptr += SIZEOF(xRectangle);
-#endif /* not MUSTCOPY */
- }
-
- else {
- GetReqExtra(PolyRectangle, SIZEOF(xRectangle), req);
- req->drawable = d;
- req->gc = gc->gid;
-#ifdef MUSTCOPY
- dpy->bufptr -= SIZEOF(xRectangle);
-#else
- rect = (xRectangle *) NEXTPTR(req,xPolyRectangleReq);
-#endif /* MUSTCOPY */
- }
-
- rect->x = x;
- rect->y = y;
- rect->width = width;
- rect->height = height;
-
-#ifdef MUSTCOPY
- Data (dpy, (char *) rect, len); /* subtracted bufptr up above */
-#endif /* MUSTCOPY */
-
- }
- UnlockDisplay(dpy);
- SyncHandle();
- return 1;
-}
+/*
+
+Copyright 1986, 1998 The Open Group
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group shall not be
+used in advertising or otherwise to promote the sale, use or other dealings
+in this Software without prior written authorization from The Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+
+/* precompute the maximum size of batching request allowed */
+
+#define wsize (SIZEOF(xPolyRectangleReq) + WRCTSPERBATCH * SIZEOF(xRectangle))
+#define zsize (SIZEOF(xPolyRectangleReq) + ZRCTSPERBATCH * SIZEOF(xRectangle))
+
+int
+XDrawRectangle(
+ register Display *dpy,
+ Drawable d,
+ GC gc,
+ int x,
+ int y, /* INT16 */
+ unsigned int width,
+ unsigned int height) /* CARD16 */
+{
+ xRectangle *rect;
+#ifdef MUSTCOPY
+ xRectangle rectdata;
+ long len = SIZEOF(xRectangle);
+
+ rect = &rectdata;
+#endif /* MUSTCOPY */
+
+ LockDisplay(dpy);
+ FlushGC(dpy, gc);
+
+ {
+ register xPolyRectangleReq *req = (xPolyRectangleReq *) dpy->last_req;
+
+ /* if same as previous request, with same drawable, batch requests */
+ if (
+ (req->reqType == X_PolyRectangle)
+ && (req->drawable == d)
+ && (req->gc == gc->gid)
+ && ((dpy->bufptr + SIZEOF(xRectangle)) <= dpy->bufmax)
+ && (((char *)dpy->bufptr - (char *)req) < (gc->values.line_width ?
+ wsize : zsize)) ) {
+ req->length += SIZEOF(xRectangle) >> 2;
+#ifndef MUSTCOPY
+ rect = (xRectangle *) dpy->bufptr;
+ dpy->bufptr += SIZEOF(xRectangle);
+#endif /* not MUSTCOPY */
+ }
+
+ else {
+ GetReqExtra(PolyRectangle, SIZEOF(xRectangle), req);
+ req->drawable = d;
+ req->gc = gc->gid;
+#ifdef MUSTCOPY
+ dpy->bufptr -= SIZEOF(xRectangle);
+#else
+ rect = (xRectangle *) NEXTPTR(req,xPolyRectangleReq);
+#endif /* MUSTCOPY */
+ }
+
+ rect->x = x;
+ rect->y = y;
+ rect->width = width;
+ rect->height = height;
+
+#ifdef MUSTCOPY
+ Data (dpy, (char *) rect, len); /* subtracted bufptr up above */
+#endif /* MUSTCOPY */
+
+ }
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return 1;
+}
diff --git a/libX11/src/DrRects.c b/libX11/src/DrRects.c
index d21fd0fa6..7827bf18d 100644
--- a/libX11/src/DrRects.c
+++ b/libX11/src/DrRects.c
@@ -1,65 +1,65 @@
-/*
-
-Copyright 1986, 1998 The Open Group
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall not be
-used in advertising or otherwise to promote the sale, use or other dealings
-in this Software without prior written authorization from The Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-
-int
-XDrawRectangles(
- register Display *dpy,
- Drawable d,
- GC gc,
- XRectangle *rects,
- int n_rects)
-{
- register xPolyRectangleReq *req;
- long len;
- int n;
-
- LockDisplay(dpy);
- FlushGC(dpy, gc);
- while (n_rects) {
- GetReq(PolyRectangle, req);
- req->drawable = d;
- req->gc = gc->gid;
- n = n_rects;
- len = ((long)n) << 1;
- if (!dpy->bigreq_size && len > (dpy->max_request_size - req->length)) {
- n = (dpy->max_request_size - req->length) >> 1;
- len = ((long)n) << 1;
- }
- SetReqLen(req, len, len);
- len <<= 2; /* watch out for macros... */
- Data16 (dpy, (short *) rects, len);
- n_rects -= n;
- rects += n;
- }
- UnlockDisplay(dpy);
- SyncHandle();
- return 1;
-}
+/*
+
+Copyright 1986, 1998 The Open Group
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group shall not be
+used in advertising or otherwise to promote the sale, use or other dealings
+in this Software without prior written authorization from The Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+
+int
+XDrawRectangles(
+ register Display *dpy,
+ Drawable d,
+ GC gc,
+ XRectangle *rects,
+ int n_rects)
+{
+ register xPolyRectangleReq *req;
+ long len;
+ int n;
+
+ LockDisplay(dpy);
+ FlushGC(dpy, gc);
+ while (n_rects) {
+ GetReq(PolyRectangle, req);
+ req->drawable = d;
+ req->gc = gc->gid;
+ n = n_rects;
+ len = ((long)n) << 1;
+ if (!dpy->bigreq_size && len > (dpy->max_request_size - req->length)) {
+ n = (dpy->max_request_size - req->length) >> 1;
+ len = ((long)n) << 1;
+ }
+ SetReqLen(req, len, len);
+ len <<= 2; /* watch out for macros... */
+ Data16 (dpy, (short *) rects, len);
+ n_rects -= n;
+ rects += n;
+ }
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return 1;
+}
diff --git a/libX11/src/DrSegs.c b/libX11/src/DrSegs.c
index 70812413c..93eab4d08 100644
--- a/libX11/src/DrSegs.c
+++ b/libX11/src/DrSegs.c
@@ -1,66 +1,66 @@
-/*
-
-Copyright 1986, 1998 The Open Group
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall not be
-used in advertising or otherwise to promote the sale, use or other dealings
-in this Software without prior written authorization from The Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-
-int
-XDrawSegments (
- register Display *dpy,
- Drawable d,
- GC gc,
- XSegment *segments,
- int nsegments)
-{
- register xPolySegmentReq *req;
- long len;
- int n;
-
- LockDisplay(dpy);
- FlushGC(dpy, gc);
- while (nsegments) {
- GetReq (PolySegment, req);
- req->drawable = d;
- req->gc = gc->gid;
- n = nsegments;
- len = ((long)n) << 1;
- if (!dpy->bigreq_size && len > (dpy->max_request_size - req->length)) {
- n = (dpy->max_request_size - req->length) >> 1;
- len = ((long)n) << 1;
- }
- SetReqLen(req, len, len);
- len <<= 2; /* watch out for macros... */
- Data16 (dpy, (short *) segments, len);
- nsegments -= n;
- segments += n;
- }
- UnlockDisplay(dpy);
- SyncHandle();
- return 1;
-}
-
+/*
+
+Copyright 1986, 1998 The Open Group
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group shall not be
+used in advertising or otherwise to promote the sale, use or other dealings
+in this Software without prior written authorization from The Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+
+int
+XDrawSegments (
+ register Display *dpy,
+ Drawable d,
+ GC gc,
+ XSegment *segments,
+ int nsegments)
+{
+ register xPolySegmentReq *req;
+ long len;
+ int n;
+
+ LockDisplay(dpy);
+ FlushGC(dpy, gc);
+ while (nsegments) {
+ GetReq (PolySegment, req);
+ req->drawable = d;
+ req->gc = gc->gid;
+ n = nsegments;
+ len = ((long)n) << 1;
+ if (!dpy->bigreq_size && len > (dpy->max_request_size - req->length)) {
+ n = (dpy->max_request_size - req->length) >> 1;
+ len = ((long)n) << 1;
+ }
+ SetReqLen(req, len, len);
+ len <<= 2; /* watch out for macros... */
+ Data16 (dpy, (short *) segments, len);
+ nsegments -= n;
+ segments += n;
+ }
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return 1;
+}
+
diff --git a/libX11/src/ErrDes.c b/libX11/src/ErrDes.c
index 7dde06136..9a5b1805f 100644
--- a/libX11/src/ErrDes.c
+++ b/libX11/src/ErrDes.c
@@ -1,211 +1,211 @@
-/*
- */
-
-/***********************************************************
-
-Copyright 1987, 1988, 1998 The Open Group
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall not be
-used in advertising or otherwise to promote the sale, use or other dealings
-in this Software without prior written authorization from The Open Group.
-
-
-Copyright 1987, 1988 by Digital Equipment Corporation, Maynard, Massachusetts.
-
- All Rights Reserved
-
-Permission to use, copy, modify, and distribute this software and its
-documentation for any purpose and without fee is hereby granted,
-provided that the above copyright notice appear in all copies and that
-both that copyright notice and this permission notice appear in
-supporting documentation, and that the name of Digital not be
-used in advertising or publicity pertaining to distribution of the
-software without specific, written prior permission.
-
-DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
-ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
-DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
-ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
-WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
-ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
-SOFTWARE.
-
-******************************************************************/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-#include <X11/Xos.h>
-#include "Xresource.h"
-#include <stdio.h>
-
-#ifndef ERRORDB
-#ifndef XERRORDB
-#define ERRORDB "/usr/lib/X11/XErrorDB"
-#else
-#define ERRORDB XERRORDB
-#endif
-#endif
-
-/*
- * descriptions of errors in Section 4 of Protocol doc (pp. 350-351); more
- * verbose descriptions are given in the error database
- */
-static const char _XErrorList[] =
- /* No error */ "no error\0"
- /* BadRequest */ "BadRequest\0"
- /* BadValue */ "BadValue\0"
- /* BadWindow */ "BadWindow\0"
- /* BadPixmap */ "BadPixmap\0"
- /* BadAtom */ "BadAtom\0"
- /* BadCursor */ "BadCursor\0"
- /* BadFont */ "BadFont\0"
- /* BadMatch */ "BadMatch\0"
- /* BadDrawable */ "BadDrawable\0"
- /* BadAccess */ "BadAccess\0"
- /* BadAlloc */ "BadAlloc\0"
- /* BadColor */ "BadColor\0"
- /* BadGC */ "BadGC\0"
- /* BadIDChoice */ "BadIDChoice\0"
- /* BadName */ "BadName\0"
- /* BadLength */ "BadLength\0"
- /* BadImplementation */ "BadImplementation"
-;
-
-/* offsets into _XErrorList */
-static const unsigned char _XErrorOffsets[] = {
- 0, 9, 20, 29, 39, 49, 57, 67, 75, 84, 96,
- 106, 115, 124, 130, 142, 150, 160
-};
-
-
-int
-XGetErrorText(
- register Display *dpy,
- register int code,
- char *buffer,
- int nbytes)
-{
- char buf[150];
- register _XExtension *ext;
- _XExtension *bext = (_XExtension *)NULL;
-
- if (nbytes == 0) return 0;
- if (code <= BadImplementation && code > 0) {
- sprintf(buf, "%d", code);
- (void) XGetErrorDatabaseText(dpy, "XProtoError", buf,
- _XErrorList + _XErrorOffsets[code],
- buffer, nbytes);
- } else
- buffer[0] = '\0';
- /* call out to any extensions interested */
- for (ext = dpy->ext_procs; ext; ext = ext->next) {
- if (ext->error_string)
- (*ext->error_string)(dpy, code, &ext->codes, buffer, nbytes);
- if (ext->codes.first_error &&
- ext->codes.first_error <= code &&
- (!bext || ext->codes.first_error > bext->codes.first_error))
- bext = ext;
- }
- if (!buffer[0] && bext) {
- sprintf(buf, "%s.%d", bext->name, code - bext->codes.first_error);
- (void) XGetErrorDatabaseText(dpy, "XProtoError", buf, "", buffer, nbytes);
- }
- if (!buffer[0])
- sprintf(buffer, "%d", code);
- return 0;
-}
-
-int
-/*ARGSUSED*/
-XGetErrorDatabaseText(
- Display *dpy,
- register _Xconst char *name,
- register _Xconst char *type,
- _Xconst char *defaultp,
- char *buffer,
- int nbytes)
-{
-
- static XrmDatabase db = NULL;
- XrmString type_str;
- XrmValue result;
- char temp[BUFSIZ];
- char* tptr;
- unsigned long tlen;
-
- if (nbytes == 0) return 0;
-
- if (!db) {
- /* the Xrm routines expect to be called with the global
- mutex unlocked. */
- XrmDatabase temp_db;
- int do_destroy;
- const char *dbname;
-
- XrmInitialize();
-#ifdef WIN32
- dbname = getenv("XERRORDB");
- if (!dbname)
- dbname = ERRORDB;
-#else
- dbname = ERRORDB;
-#endif
- temp_db = XrmGetFileDatabase(dbname);
-
- _XLockMutex(_Xglobal_lock);
- if (!db) {
- db = temp_db;
- do_destroy = 0;
- } else
- do_destroy = 1; /* we didn't need to get it after all */
- _XUnlockMutex(_Xglobal_lock);
-
- if (do_destroy)
- XrmDestroyDatabase(temp_db);
- }
-
- if (db)
- {
- tlen = strlen (name) + strlen (type) + 2;
- if (tlen <= sizeof(temp))
- tptr = temp;
- else
- tptr = Xmalloc (tlen);
- if (tptr) {
- sprintf(tptr, "%s.%s", name, type);
- XrmGetResource(db, tptr, "ErrorType.ErrorNumber",
- &type_str, &result);
- if (tptr != temp)
- Xfree (tptr);
- } else {
- result.addr = (XPointer) NULL;
- }
- }
- else
- result.addr = (XPointer)NULL;
- if (!result.addr) {
- result.addr = (XPointer) defaultp;
- result.size = strlen(defaultp) + 1;
- }
- (void) strncpy (buffer, (char *) result.addr, nbytes);
- if (result.size > nbytes) buffer[nbytes-1] = '\0';
- return 0;
-}
+/*
+ */
+
+/***********************************************************
+
+Copyright 1987, 1988, 1998 The Open Group
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group shall not be
+used in advertising or otherwise to promote the sale, use or other dealings
+in this Software without prior written authorization from The Open Group.
+
+
+Copyright 1987, 1988 by Digital Equipment Corporation, Maynard, Massachusetts.
+
+ All Rights Reserved
+
+Permission to use, copy, modify, and distribute this software and its
+documentation for any purpose and without fee is hereby granted,
+provided that the above copyright notice appear in all copies and that
+both that copyright notice and this permission notice appear in
+supporting documentation, and that the name of Digital not be
+used in advertising or publicity pertaining to distribution of the
+software without specific, written prior permission.
+
+DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
+ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
+DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
+ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
+WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
+ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
+SOFTWARE.
+
+******************************************************************/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+#include <X11/Xos.h>
+#include "Xresource.h"
+#include <stdio.h>
+
+#ifndef ERRORDB
+#ifndef XERRORDB
+#define ERRORDB "/usr/lib/X11/XErrorDB"
+#else
+#define ERRORDB XERRORDB
+#endif
+#endif
+
+/*
+ * descriptions of errors in Section 4 of Protocol doc (pp. 350-351); more
+ * verbose descriptions are given in the error database
+ */
+static const char _XErrorList[] =
+ /* No error */ "no error\0"
+ /* BadRequest */ "BadRequest\0"
+ /* BadValue */ "BadValue\0"
+ /* BadWindow */ "BadWindow\0"
+ /* BadPixmap */ "BadPixmap\0"
+ /* BadAtom */ "BadAtom\0"
+ /* BadCursor */ "BadCursor\0"
+ /* BadFont */ "BadFont\0"
+ /* BadMatch */ "BadMatch\0"
+ /* BadDrawable */ "BadDrawable\0"
+ /* BadAccess */ "BadAccess\0"
+ /* BadAlloc */ "BadAlloc\0"
+ /* BadColor */ "BadColor\0"
+ /* BadGC */ "BadGC\0"
+ /* BadIDChoice */ "BadIDChoice\0"
+ /* BadName */ "BadName\0"
+ /* BadLength */ "BadLength\0"
+ /* BadImplementation */ "BadImplementation"
+;
+
+/* offsets into _XErrorList */
+static const unsigned char _XErrorOffsets[] = {
+ 0, 9, 20, 29, 39, 49, 57, 67, 75, 84, 96,
+ 106, 115, 124, 130, 142, 150, 160
+};
+
+
+int
+XGetErrorText(
+ register Display *dpy,
+ register int code,
+ char *buffer,
+ int nbytes)
+{
+ char buf[150];
+ register _XExtension *ext;
+ _XExtension *bext = (_XExtension *)NULL;
+
+ if (nbytes == 0) return 0;
+ if (code <= BadImplementation && code > 0) {
+ sprintf(buf, "%d", code);
+ (void) XGetErrorDatabaseText(dpy, "XProtoError", buf,
+ _XErrorList + _XErrorOffsets[code],
+ buffer, nbytes);
+ } else
+ buffer[0] = '\0';
+ /* call out to any extensions interested */
+ for (ext = dpy->ext_procs; ext; ext = ext->next) {
+ if (ext->error_string)
+ (*ext->error_string)(dpy, code, &ext->codes, buffer, nbytes);
+ if (ext->codes.first_error &&
+ ext->codes.first_error <= code &&
+ (!bext || ext->codes.first_error > bext->codes.first_error))
+ bext = ext;
+ }
+ if (!buffer[0] && bext) {
+ sprintf(buf, "%s.%d", bext->name, code - bext->codes.first_error);
+ (void) XGetErrorDatabaseText(dpy, "XProtoError", buf, "", buffer, nbytes);
+ }
+ if (!buffer[0])
+ sprintf(buffer, "%d", code);
+ return 0;
+}
+
+int
+/*ARGSUSED*/
+XGetErrorDatabaseText(
+ Display *dpy,
+ register _Xconst char *name,
+ register _Xconst char *type,
+ _Xconst char *defaultp,
+ char *buffer,
+ int nbytes)
+{
+
+ static XrmDatabase db = NULL;
+ XrmString type_str;
+ XrmValue result;
+ char temp[BUFSIZ];
+ char* tptr;
+ unsigned long tlen;
+
+ if (nbytes == 0) return 0;
+
+ if (!db) {
+ /* the Xrm routines expect to be called with the global
+ mutex unlocked. */
+ XrmDatabase temp_db;
+ int do_destroy;
+ const char *dbname;
+
+ XrmInitialize();
+#ifdef WIN32
+ dbname = getenv("XERRORDB");
+ if (!dbname)
+ dbname = ERRORDB;
+#else
+ dbname = ERRORDB;
+#endif
+ temp_db = XrmGetFileDatabase(dbname);
+
+ _XLockMutex(_Xglobal_lock);
+ if (!db) {
+ db = temp_db;
+ do_destroy = 0;
+ } else
+ do_destroy = 1; /* we didn't need to get it after all */
+ _XUnlockMutex(_Xglobal_lock);
+
+ if (do_destroy)
+ XrmDestroyDatabase(temp_db);
+ }
+
+ if (db)
+ {
+ tlen = strlen (name) + strlen (type) + 2;
+ if (tlen <= sizeof(temp))
+ tptr = temp;
+ else
+ tptr = Xmalloc (tlen);
+ if (tptr) {
+ sprintf(tptr, "%s.%s", name, type);
+ XrmGetResource(db, tptr, "ErrorType.ErrorNumber",
+ &type_str, &result);
+ if (tptr != temp)
+ Xfree (tptr);
+ } else {
+ result.addr = (XPointer) NULL;
+ }
+ }
+ else
+ result.addr = (XPointer)NULL;
+ if (!result.addr) {
+ result.addr = (XPointer) defaultp;
+ result.size = strlen(defaultp) + 1;
+ }
+ (void) strncpy (buffer, (char *) result.addr, nbytes);
+ if (result.size > nbytes) buffer[nbytes-1] = '\0';
+ return 0;
+}
diff --git a/libX11/src/ErrHndlr.c b/libX11/src/ErrHndlr.c
index c17d4eb26..167a68b1e 100644
--- a/libX11/src/ErrHndlr.c
+++ b/libX11/src/ErrHndlr.c
@@ -1,86 +1,86 @@
-/*
-
-Copyright 1986, 1998 The Open Group
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall not be
-used in advertising or otherwise to promote the sale, use or other dealings
-in this Software without prior written authorization from The Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-
-/*
- * XErrorHandler - This procedure sets the X non-fatal error handler
- * (_XErrorFunction) to be the specified routine. If NULL is passed in
- * the original error handler is restored.
- */
-
-XErrorHandler
-XSetErrorHandler(XErrorHandler handler)
-{
- int (*oldhandler)(Display *dpy, XErrorEvent *event);
-
- _XLockMutex(_Xglobal_lock);
- oldhandler = _XErrorFunction;
-
- if (!oldhandler)
- oldhandler = _XDefaultError;
-
- if (handler != NULL) {
- _XErrorFunction = handler;
- }
- else {
- _XErrorFunction = _XDefaultError;
- }
- _XUnlockMutex(_Xglobal_lock);
-
- return (XErrorHandler) oldhandler;
-}
-
-/*
- * XIOErrorHandler - This procedure sets the X fatal I/O error handler
- * (_XIOErrorFunction) to be the specified routine. If NULL is passed in
- * the original error handler is restored.
- */
-
-XIOErrorHandler
-XSetIOErrorHandler(XIOErrorHandler handler)
-{
- int (*oldhandler)(Display *dpy);
-
- _XLockMutex(_Xglobal_lock);
- oldhandler = _XIOErrorFunction;
-
- if (!oldhandler)
- oldhandler = _XDefaultIOError;
-
- if (handler != NULL) {
- _XIOErrorFunction = handler;
- }
- else {
- _XIOErrorFunction = _XDefaultIOError;
- }
- _XUnlockMutex(_Xglobal_lock);
-
- return (XIOErrorHandler) oldhandler;
-}
+/*
+
+Copyright 1986, 1998 The Open Group
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group shall not be
+used in advertising or otherwise to promote the sale, use or other dealings
+in this Software without prior written authorization from The Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+
+/*
+ * XErrorHandler - This procedure sets the X non-fatal error handler
+ * (_XErrorFunction) to be the specified routine. If NULL is passed in
+ * the original error handler is restored.
+ */
+
+XErrorHandler
+XSetErrorHandler(XErrorHandler handler)
+{
+ int (*oldhandler)(Display *dpy, XErrorEvent *event);
+
+ _XLockMutex(_Xglobal_lock);
+ oldhandler = _XErrorFunction;
+
+ if (!oldhandler)
+ oldhandler = _XDefaultError;
+
+ if (handler != NULL) {
+ _XErrorFunction = handler;
+ }
+ else {
+ _XErrorFunction = _XDefaultError;
+ }
+ _XUnlockMutex(_Xglobal_lock);
+
+ return (XErrorHandler) oldhandler;
+}
+
+/*
+ * XIOErrorHandler - This procedure sets the X fatal I/O error handler
+ * (_XIOErrorFunction) to be the specified routine. If NULL is passed in
+ * the original error handler is restored.
+ */
+
+XIOErrorHandler
+XSetIOErrorHandler(XIOErrorHandler handler)
+{
+ int (*oldhandler)(Display *dpy);
+
+ _XLockMutex(_Xglobal_lock);
+ oldhandler = _XIOErrorFunction;
+
+ if (!oldhandler)
+ oldhandler = _XDefaultIOError;
+
+ if (handler != NULL) {
+ _XIOErrorFunction = handler;
+ }
+ else {
+ _XIOErrorFunction = _XDefaultIOError;
+ }
+ _XUnlockMutex(_Xglobal_lock);
+
+ return (XIOErrorHandler) oldhandler;
+}
diff --git a/libX11/src/EvToWire.c b/libX11/src/EvToWire.c
index 6e2db3901..4aca053ab 100644
--- a/libX11/src/EvToWire.c
+++ b/libX11/src/EvToWire.c
@@ -1,406 +1,406 @@
-
-/*
-
-Copyright 1985, 1986, 1987, 1998 The Open Group
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
-
-The above copyright notice and this permission notice shall be included
-in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
-IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR
-OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
-ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall
-not be used in advertising or otherwise to promote the sale, use or
-other dealings in this Software without prior written authorization
-from The Open Group.
-
-*/
-
-/*
- * XEvToWire.c - Internal support routines for the C subroutine
- * interface library (Xlib) to the X Window System Protocol V11.0.
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-
-/*
- * Reformat an XEvent structure to a wire event of the right type.
- * Return True on success. If the type is unrecognized, return what
- * _XUnknownNativeEvent returns (i.e., False).
- */
-Status
-_XEventToWire(
- register Display *dpy,
- register XEvent *re, /* in: from */
- register xEvent *event) /* out: to */
-{
- switch (event->u.u.type = re->type) {
- case KeyPress:
- case KeyRelease:
- {
- register XKeyEvent *ev = (XKeyEvent*) re;
- event->u.keyButtonPointer.root = ev->root;
- event->u.keyButtonPointer.event = ev->window;
- event->u.keyButtonPointer.child = ev->subwindow;
- event->u.keyButtonPointer.time = ev->time;
- event->u.keyButtonPointer.eventX = ev->x ;
- event->u.keyButtonPointer.eventY = ev->y ;
- event->u.keyButtonPointer.rootX = ev->x_root;
- event->u.keyButtonPointer.rootY = ev->y_root;
- event->u.keyButtonPointer.state = ev->state;
- event->u.keyButtonPointer.sameScreen = ev->same_screen;
- event->u.u.detail = ev->keycode;
- }
- break;
- case ButtonPress:
- case ButtonRelease:
- {
- register XButtonEvent *ev = (XButtonEvent *) re;
- event->u.keyButtonPointer.root = ev->root;
- event->u.keyButtonPointer.event = ev->window;
- event->u.keyButtonPointer.child = ev->subwindow;
- event->u.keyButtonPointer.time = ev->time;
- event->u.keyButtonPointer.eventX = ev->x;
- event->u.keyButtonPointer.eventY = ev->y;
- event->u.keyButtonPointer.rootX = ev->x_root;
- event->u.keyButtonPointer.rootY = ev->y_root;
- event->u.keyButtonPointer.state = ev->state;
- event->u.keyButtonPointer.sameScreen = ev->same_screen;
- event->u.u.detail = ev->button;
- }
- break;
- case MotionNotify:
- {
- register XMotionEvent *ev = (XMotionEvent *)re;
- event->u.keyButtonPointer.root = ev->root;
- event->u.keyButtonPointer.event = ev->window;
- event->u.keyButtonPointer.child = ev->subwindow;
- event->u.keyButtonPointer.time = ev->time;
- event->u.keyButtonPointer.eventX= ev->x;
- event->u.keyButtonPointer.eventY= ev->y;
- event->u.keyButtonPointer.rootX = ev->x_root;
- event->u.keyButtonPointer.rootY = ev->y_root;
- event->u.keyButtonPointer.state = ev->state;
- event->u.keyButtonPointer.sameScreen= ev->same_screen;
- event->u.u.detail = ev->is_hint;
- }
- break;
- case EnterNotify:
- case LeaveNotify:
- {
- register XCrossingEvent *ev = (XCrossingEvent *) re;
- event->u.enterLeave.root = ev->root;
- event->u.enterLeave.event = ev->window;
- event->u.enterLeave.child = ev->subwindow;
- event->u.enterLeave.time = ev->time;
- event->u.enterLeave.eventX = ev->x;
- event->u.enterLeave.eventY = ev->y;
- event->u.enterLeave.rootX = ev->x_root;
- event->u.enterLeave.rootY = ev->y_root;
- event->u.enterLeave.state = ev->state;
- event->u.enterLeave.mode = ev->mode;
- event->u.enterLeave.flags = 0;
- if (ev->same_screen) {
- event->u.enterLeave.flags |= ELFlagSameScreen;
- }
- if (ev->focus) {
- event->u.enterLeave.flags |= ELFlagFocus;
- }
- event->u.u.detail = ev->detail;
- }
- break;
- case FocusIn:
- case FocusOut:
- {
- register XFocusChangeEvent *ev = (XFocusChangeEvent *) re;
- event->u.focus.window = ev->window;
- event->u.focus.mode = ev->mode;
- event->u.u.detail = ev->detail;
- }
- break;
- case KeymapNotify:
- {
- register XKeymapEvent *ev = (XKeymapEvent *) re;
- memcpy ((char *)(((xKeymapEvent *) event)->map),
- &ev->key_vector[1],
- sizeof (((xKeymapEvent *) event)->map));
- }
- break;
- case Expose:
- {
- register XExposeEvent *ev = (XExposeEvent *) re;
- event->u.expose.window = ev->window;
- event->u.expose.x = ev->x;
- event->u.expose.y = ev->y;
- event->u.expose.width = ev->width;
- event->u.expose.height = ev->height;
- event->u.expose.count = ev->count;
- }
- break;
- case GraphicsExpose:
- {
- register XGraphicsExposeEvent *ev =
- (XGraphicsExposeEvent *) re;
- event->u.graphicsExposure.drawable = ev->drawable;
- event->u.graphicsExposure.x = ev->x;
- event->u.graphicsExposure.y = ev->y;
- event->u.graphicsExposure.width = ev->width;
- event->u.graphicsExposure.height = ev->height;
- event->u.graphicsExposure.count = ev->count;
- event->u.graphicsExposure.majorEvent= ev->major_code;
- event->u.graphicsExposure.minorEvent= ev->minor_code;
- }
- break;
- case NoExpose:
- {
- register XNoExposeEvent *ev = (XNoExposeEvent *) re;
- event->u.noExposure.drawable = ev->drawable;
- event->u.noExposure.majorEvent = ev->major_code;
- event->u.noExposure.minorEvent = ev->minor_code;
- }
- break;
- case VisibilityNotify:
- {
- register XVisibilityEvent *ev = (XVisibilityEvent *) re;
- event->u.visibility.window = ev->window;
- event->u.visibility.state = ev->state;
- }
- break;
- case CreateNotify:
- {
- register XCreateWindowEvent *ev =
- (XCreateWindowEvent *) re;
- event->u.createNotify.window = ev->window;
- event->u.createNotify.parent = ev->parent;
- event->u.createNotify.x = ev->x;
- event->u.createNotify.y = ev->y;
- event->u.createNotify.width = ev->width;
- event->u.createNotify.height = ev->height;
- event->u.createNotify.borderWidth = ev->border_width;
- event->u.createNotify.override = ev->override_redirect;
- }
- break;
- case DestroyNotify:
- {
- register XDestroyWindowEvent *ev =
- (XDestroyWindowEvent *) re;
- event->u.destroyNotify.window = ev->window;
- event->u.destroyNotify.event = ev->event;
- }
- break;
- case UnmapNotify:
- {
- register XUnmapEvent *ev = (XUnmapEvent *) re;
- event->u.unmapNotify.window = ev->window;
- event->u.unmapNotify.event = ev->event;
- event->u.unmapNotify.fromConfigure = ev->from_configure;
- }
- break;
- case MapNotify:
- {
- register XMapEvent *ev = (XMapEvent *) re;
- event->u.mapNotify.window = ev->window;
- event->u.mapNotify.event = ev->event;
- event->u.mapNotify.override = ev->override_redirect;
- }
- break;
- case MapRequest:
- {
- register XMapRequestEvent *ev = (XMapRequestEvent *) re;
- event->u.mapRequest.window = ev->window;
- event->u.mapRequest.parent = ev->parent;
- }
- break;
- case ReparentNotify:
- {
- register XReparentEvent *ev = (XReparentEvent *) re;
- event->u.reparent.window = ev->window;
- event->u.reparent.event = ev->event;
- event->u.reparent.parent = ev->parent;
- event->u.reparent.x = ev->x;
- event->u.reparent.y = ev->y;
- event->u.reparent.override = ev->override_redirect;
- }
- break;
- case ConfigureNotify:
- {
- register XConfigureEvent *ev = (XConfigureEvent *) re;
- event->u.configureNotify.window = ev->window;
- event->u.configureNotify.event = ev->event;
- event->u.configureNotify.aboveSibling = ev->above;
- event->u.configureNotify.x = ev->x;
- event->u.configureNotify.y = ev->y;
- event->u.configureNotify.width = ev->width;
- event->u.configureNotify.height = ev->height;
- event->u.configureNotify.borderWidth= ev->border_width;
- event->u.configureNotify.override = ev->override_redirect;
- }
- break;
- case ConfigureRequest:
- {
- register XConfigureRequestEvent *ev =
- (XConfigureRequestEvent *) re;
- event->u.configureRequest.window = ev->window;
- event->u.configureRequest.parent = ev->parent;
- event->u.configureRequest.sibling = ev->above;
- event->u.configureRequest.x = ev->x;
- event->u.configureRequest.y = ev->y;
- event->u.configureRequest.width = ev->width;
- event->u.configureRequest.height = ev->height;
- event->u.configureRequest.borderWidth= ev->border_width;
- event->u.configureRequest.valueMask= ev->value_mask;
- event->u.u.detail = ev->detail;
- }
- break;
- case GravityNotify:
- {
- register XGravityEvent *ev = (XGravityEvent *) re;
- event->u.gravity.window = ev->window;
- event->u.gravity.event = ev->event;
- event->u.gravity.x = ev->x;
- event->u.gravity.y = ev->y;
- }
- break;
- case ResizeRequest:
- {
- register XResizeRequestEvent *ev =
- (XResizeRequestEvent *) re;
- event->u.resizeRequest.window = ev->window;
- event->u.resizeRequest.width = ev->width;
- event->u.resizeRequest.height = ev->height;
- }
- break;
- case CirculateNotify:
- {
- register XCirculateEvent *ev = (XCirculateEvent *) re;
- event->u.circulate.window = ev->window;
- event->u.circulate.event = ev->event;
- event->u.circulate.place = ev->place;
- }
- break;
- case CirculateRequest:
- {
- register XCirculateRequestEvent *ev =
- (XCirculateRequestEvent *) re;
- event->u.circulate.window = ev->window;
- event->u.circulate.event = ev->parent;
- event->u.circulate.place = ev->place;
- }
- break;
- case PropertyNotify:
- {
- register XPropertyEvent *ev = (XPropertyEvent *) re;
- event->u.property.window = ev->window;
- event->u.property.atom = ev->atom;
- event->u.property.time = ev->time;
- event->u.property.state = ev->state;
- }
- break;
- case SelectionClear:
- {
- register XSelectionClearEvent *ev =
- (XSelectionClearEvent *) re;
- event->u.selectionClear.window = ev->window;
- event->u.selectionClear.atom = ev->selection;
- event->u.selectionClear.time = ev->time;
- }
- break;
- case SelectionRequest:
- {
- register XSelectionRequestEvent *ev =
- (XSelectionRequestEvent *) re;
- event->u.selectionRequest.owner = ev->owner;
- event->u.selectionRequest.requestor = ev->requestor;
- event->u.selectionRequest.selection = ev->selection;
- event->u.selectionRequest.target = ev->target;
- event->u.selectionRequest.property = ev->property;
- event->u.selectionRequest.time = ev->time;
- }
- break;
- case SelectionNotify:
- {
- register XSelectionEvent *ev = (XSelectionEvent *) re;
- event->u.selectionNotify.requestor = ev->requestor;
- event->u.selectionNotify.selection = ev->selection;
- event->u.selectionNotify.target = ev->target;
- event->u.selectionNotify.property = ev->property;
- event->u.selectionNotify.time = ev->time;
- }
- break;
- case ColormapNotify:
- {
- register XColormapEvent *ev = (XColormapEvent *) re;
- event->u.colormap.window = ev->window;
- event->u.colormap.colormap = ev->colormap;
- event->u.colormap.new = ev->new;
- event->u.colormap.state = ev->state;
- }
- break;
- case ClientMessage:
- {
- register int i;
- register XClientMessageEvent *ev
- = (XClientMessageEvent *) re;
- event->u.clientMessage.window = ev->window;
- event->u.u.detail = ev->format;
- switch (ev->format) {
- case 8:
- event->u.clientMessage.u.b.type = ev->message_type;
- for (i = 0; i < 20; i++)
- event->u.clientMessage.u.b.bytes[i] = ev->data.b[i];
- break;
- case 16:
- event->u.clientMessage.u.s.type = ev->message_type;
- event->u.clientMessage.u.s.shorts0 = ev->data.s[0];
- event->u.clientMessage.u.s.shorts1 = ev->data.s[1];
- event->u.clientMessage.u.s.shorts2 = ev->data.s[2];
- event->u.clientMessage.u.s.shorts3 = ev->data.s[3];
- event->u.clientMessage.u.s.shorts4 = ev->data.s[4];
- event->u.clientMessage.u.s.shorts5 = ev->data.s[5];
- event->u.clientMessage.u.s.shorts6 = ev->data.s[6];
- event->u.clientMessage.u.s.shorts7 = ev->data.s[7];
- event->u.clientMessage.u.s.shorts8 = ev->data.s[8];
- event->u.clientMessage.u.s.shorts9 = ev->data.s[9];
- break;
- case 32:
- event->u.clientMessage.u.l.type = ev->message_type;
- event->u.clientMessage.u.l.longs0 = ev->data.l[0];
- event->u.clientMessage.u.l.longs1 = ev->data.l[1];
- event->u.clientMessage.u.l.longs2 = ev->data.l[2];
- event->u.clientMessage.u.l.longs3 = ev->data.l[3];
- event->u.clientMessage.u.l.longs4 = ev->data.l[4];
- break;
- default:
- /* client passing bogus data, let server complain */
- break;
- }
- }
- break;
- case MappingNotify:
- {
- register XMappingEvent *ev = (XMappingEvent *) re;
- event->u.mappingNotify.firstKeyCode = ev->first_keycode;
- event->u.mappingNotify.request = ev->request;
- event->u.mappingNotify.count = ev->count;
- }
- break;
-
- default:
- return(_XUnknownNativeEvent(dpy, re, event));
- }
- return(1);
-}
+
+/*
+
+Copyright 1985, 1986, 1987, 1998 The Open Group
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
+
+The above copyright notice and this permission notice shall be included
+in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR
+OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
+ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group shall
+not be used in advertising or otherwise to promote the sale, use or
+other dealings in this Software without prior written authorization
+from The Open Group.
+
+*/
+
+/*
+ * XEvToWire.c - Internal support routines for the C subroutine
+ * interface library (Xlib) to the X Window System Protocol V11.0.
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+
+/*
+ * Reformat an XEvent structure to a wire event of the right type.
+ * Return True on success. If the type is unrecognized, return what
+ * _XUnknownNativeEvent returns (i.e., False).
+ */
+Status
+_XEventToWire(
+ register Display *dpy,
+ register XEvent *re, /* in: from */
+ register xEvent *event) /* out: to */
+{
+ switch (event->u.u.type = re->type) {
+ case KeyPress:
+ case KeyRelease:
+ {
+ register XKeyEvent *ev = (XKeyEvent*) re;
+ event->u.keyButtonPointer.root = ev->root;
+ event->u.keyButtonPointer.event = ev->window;
+ event->u.keyButtonPointer.child = ev->subwindow;
+ event->u.keyButtonPointer.time = ev->time;
+ event->u.keyButtonPointer.eventX = ev->x ;
+ event->u.keyButtonPointer.eventY = ev->y ;
+ event->u.keyButtonPointer.rootX = ev->x_root;
+ event->u.keyButtonPointer.rootY = ev->y_root;
+ event->u.keyButtonPointer.state = ev->state;
+ event->u.keyButtonPointer.sameScreen = ev->same_screen;
+ event->u.u.detail = ev->keycode;
+ }
+ break;
+ case ButtonPress:
+ case ButtonRelease:
+ {
+ register XButtonEvent *ev = (XButtonEvent *) re;
+ event->u.keyButtonPointer.root = ev->root;
+ event->u.keyButtonPointer.event = ev->window;
+ event->u.keyButtonPointer.child = ev->subwindow;
+ event->u.keyButtonPointer.time = ev->time;
+ event->u.keyButtonPointer.eventX = ev->x;
+ event->u.keyButtonPointer.eventY = ev->y;
+ event->u.keyButtonPointer.rootX = ev->x_root;
+ event->u.keyButtonPointer.rootY = ev->y_root;
+ event->u.keyButtonPointer.state = ev->state;
+ event->u.keyButtonPointer.sameScreen = ev->same_screen;
+ event->u.u.detail = ev->button;
+ }
+ break;
+ case MotionNotify:
+ {
+ register XMotionEvent *ev = (XMotionEvent *)re;
+ event->u.keyButtonPointer.root = ev->root;
+ event->u.keyButtonPointer.event = ev->window;
+ event->u.keyButtonPointer.child = ev->subwindow;
+ event->u.keyButtonPointer.time = ev->time;
+ event->u.keyButtonPointer.eventX= ev->x;
+ event->u.keyButtonPointer.eventY= ev->y;
+ event->u.keyButtonPointer.rootX = ev->x_root;
+ event->u.keyButtonPointer.rootY = ev->y_root;
+ event->u.keyButtonPointer.state = ev->state;
+ event->u.keyButtonPointer.sameScreen= ev->same_screen;
+ event->u.u.detail = ev->is_hint;
+ }
+ break;
+ case EnterNotify:
+ case LeaveNotify:
+ {
+ register XCrossingEvent *ev = (XCrossingEvent *) re;
+ event->u.enterLeave.root = ev->root;
+ event->u.enterLeave.event = ev->window;
+ event->u.enterLeave.child = ev->subwindow;
+ event->u.enterLeave.time = ev->time;
+ event->u.enterLeave.eventX = ev->x;
+ event->u.enterLeave.eventY = ev->y;
+ event->u.enterLeave.rootX = ev->x_root;
+ event->u.enterLeave.rootY = ev->y_root;
+ event->u.enterLeave.state = ev->state;
+ event->u.enterLeave.mode = ev->mode;
+ event->u.enterLeave.flags = 0;
+ if (ev->same_screen) {
+ event->u.enterLeave.flags |= ELFlagSameScreen;
+ }
+ if (ev->focus) {
+ event->u.enterLeave.flags |= ELFlagFocus;
+ }
+ event->u.u.detail = ev->detail;
+ }
+ break;
+ case FocusIn:
+ case FocusOut:
+ {
+ register XFocusChangeEvent *ev = (XFocusChangeEvent *) re;
+ event->u.focus.window = ev->window;
+ event->u.focus.mode = ev->mode;
+ event->u.u.detail = ev->detail;
+ }
+ break;
+ case KeymapNotify:
+ {
+ register XKeymapEvent *ev = (XKeymapEvent *) re;
+ memcpy ((char *)(((xKeymapEvent *) event)->map),
+ &ev->key_vector[1],
+ sizeof (((xKeymapEvent *) event)->map));
+ }
+ break;
+ case Expose:
+ {
+ register XExposeEvent *ev = (XExposeEvent *) re;
+ event->u.expose.window = ev->window;
+ event->u.expose.x = ev->x;
+ event->u.expose.y = ev->y;
+ event->u.expose.width = ev->width;
+ event->u.expose.height = ev->height;
+ event->u.expose.count = ev->count;
+ }
+ break;
+ case GraphicsExpose:
+ {
+ register XGraphicsExposeEvent *ev =
+ (XGraphicsExposeEvent *) re;
+ event->u.graphicsExposure.drawable = ev->drawable;
+ event->u.graphicsExposure.x = ev->x;
+ event->u.graphicsExposure.y = ev->y;
+ event->u.graphicsExposure.width = ev->width;
+ event->u.graphicsExposure.height = ev->height;
+ event->u.graphicsExposure.count = ev->count;
+ event->u.graphicsExposure.majorEvent= ev->major_code;
+ event->u.graphicsExposure.minorEvent= ev->minor_code;
+ }
+ break;
+ case NoExpose:
+ {
+ register XNoExposeEvent *ev = (XNoExposeEvent *) re;
+ event->u.noExposure.drawable = ev->drawable;
+ event->u.noExposure.majorEvent = ev->major_code;
+ event->u.noExposure.minorEvent = ev->minor_code;
+ }
+ break;
+ case VisibilityNotify:
+ {
+ register XVisibilityEvent *ev = (XVisibilityEvent *) re;
+ event->u.visibility.window = ev->window;
+ event->u.visibility.state = ev->state;
+ }
+ break;
+ case CreateNotify:
+ {
+ register XCreateWindowEvent *ev =
+ (XCreateWindowEvent *) re;
+ event->u.createNotify.window = ev->window;
+ event->u.createNotify.parent = ev->parent;
+ event->u.createNotify.x = ev->x;
+ event->u.createNotify.y = ev->y;
+ event->u.createNotify.width = ev->width;
+ event->u.createNotify.height = ev->height;
+ event->u.createNotify.borderWidth = ev->border_width;
+ event->u.createNotify.override = ev->override_redirect;
+ }
+ break;
+ case DestroyNotify:
+ {
+ register XDestroyWindowEvent *ev =
+ (XDestroyWindowEvent *) re;
+ event->u.destroyNotify.window = ev->window;
+ event->u.destroyNotify.event = ev->event;
+ }
+ break;
+ case UnmapNotify:
+ {
+ register XUnmapEvent *ev = (XUnmapEvent *) re;
+ event->u.unmapNotify.window = ev->window;
+ event->u.unmapNotify.event = ev->event;
+ event->u.unmapNotify.fromConfigure = ev->from_configure;
+ }
+ break;
+ case MapNotify:
+ {
+ register XMapEvent *ev = (XMapEvent *) re;
+ event->u.mapNotify.window = ev->window;
+ event->u.mapNotify.event = ev->event;
+ event->u.mapNotify.override = ev->override_redirect;
+ }
+ break;
+ case MapRequest:
+ {
+ register XMapRequestEvent *ev = (XMapRequestEvent *) re;
+ event->u.mapRequest.window = ev->window;
+ event->u.mapRequest.parent = ev->parent;
+ }
+ break;
+ case ReparentNotify:
+ {
+ register XReparentEvent *ev = (XReparentEvent *) re;
+ event->u.reparent.window = ev->window;
+ event->u.reparent.event = ev->event;
+ event->u.reparent.parent = ev->parent;
+ event->u.reparent.x = ev->x;
+ event->u.reparent.y = ev->y;
+ event->u.reparent.override = ev->override_redirect;
+ }
+ break;
+ case ConfigureNotify:
+ {
+ register XConfigureEvent *ev = (XConfigureEvent *) re;
+ event->u.configureNotify.window = ev->window;
+ event->u.configureNotify.event = ev->event;
+ event->u.configureNotify.aboveSibling = ev->above;
+ event->u.configureNotify.x = ev->x;
+ event->u.configureNotify.y = ev->y;
+ event->u.configureNotify.width = ev->width;
+ event->u.configureNotify.height = ev->height;
+ event->u.configureNotify.borderWidth= ev->border_width;
+ event->u.configureNotify.override = ev->override_redirect;
+ }
+ break;
+ case ConfigureRequest:
+ {
+ register XConfigureRequestEvent *ev =
+ (XConfigureRequestEvent *) re;
+ event->u.configureRequest.window = ev->window;
+ event->u.configureRequest.parent = ev->parent;
+ event->u.configureRequest.sibling = ev->above;
+ event->u.configureRequest.x = ev->x;
+ event->u.configureRequest.y = ev->y;
+ event->u.configureRequest.width = ev->width;
+ event->u.configureRequest.height = ev->height;
+ event->u.configureRequest.borderWidth= ev->border_width;
+ event->u.configureRequest.valueMask= ev->value_mask;
+ event->u.u.detail = ev->detail;
+ }
+ break;
+ case GravityNotify:
+ {
+ register XGravityEvent *ev = (XGravityEvent *) re;
+ event->u.gravity.window = ev->window;
+ event->u.gravity.event = ev->event;
+ event->u.gravity.x = ev->x;
+ event->u.gravity.y = ev->y;
+ }
+ break;
+ case ResizeRequest:
+ {
+ register XResizeRequestEvent *ev =
+ (XResizeRequestEvent *) re;
+ event->u.resizeRequest.window = ev->window;
+ event->u.resizeRequest.width = ev->width;
+ event->u.resizeRequest.height = ev->height;
+ }
+ break;
+ case CirculateNotify:
+ {
+ register XCirculateEvent *ev = (XCirculateEvent *) re;
+ event->u.circulate.window = ev->window;
+ event->u.circulate.event = ev->event;
+ event->u.circulate.place = ev->place;
+ }
+ break;
+ case CirculateRequest:
+ {
+ register XCirculateRequestEvent *ev =
+ (XCirculateRequestEvent *) re;
+ event->u.circulate.window = ev->window;
+ event->u.circulate.event = ev->parent;
+ event->u.circulate.place = ev->place;
+ }
+ break;
+ case PropertyNotify:
+ {
+ register XPropertyEvent *ev = (XPropertyEvent *) re;
+ event->u.property.window = ev->window;
+ event->u.property.atom = ev->atom;
+ event->u.property.time = ev->time;
+ event->u.property.state = ev->state;
+ }
+ break;
+ case SelectionClear:
+ {
+ register XSelectionClearEvent *ev =
+ (XSelectionClearEvent *) re;
+ event->u.selectionClear.window = ev->window;
+ event->u.selectionClear.atom = ev->selection;
+ event->u.selectionClear.time = ev->time;
+ }
+ break;
+ case SelectionRequest:
+ {
+ register XSelectionRequestEvent *ev =
+ (XSelectionRequestEvent *) re;
+ event->u.selectionRequest.owner = ev->owner;
+ event->u.selectionRequest.requestor = ev->requestor;
+ event->u.selectionRequest.selection = ev->selection;
+ event->u.selectionRequest.target = ev->target;
+ event->u.selectionRequest.property = ev->property;
+ event->u.selectionRequest.time = ev->time;
+ }
+ break;
+ case SelectionNotify:
+ {
+ register XSelectionEvent *ev = (XSelectionEvent *) re;
+ event->u.selectionNotify.requestor = ev->requestor;
+ event->u.selectionNotify.selection = ev->selection;
+ event->u.selectionNotify.target = ev->target;
+ event->u.selectionNotify.property = ev->property;
+ event->u.selectionNotify.time = ev->time;
+ }
+ break;
+ case ColormapNotify:
+ {
+ register XColormapEvent *ev = (XColormapEvent *) re;
+ event->u.colormap.window = ev->window;
+ event->u.colormap.colormap = ev->colormap;
+ event->u.colormap.new = ev->new;
+ event->u.colormap.state = ev->state;
+ }
+ break;
+ case ClientMessage:
+ {
+ register int i;
+ register XClientMessageEvent *ev
+ = (XClientMessageEvent *) re;
+ event->u.clientMessage.window = ev->window;
+ event->u.u.detail = ev->format;
+ switch (ev->format) {
+ case 8:
+ event->u.clientMessage.u.b.type = ev->message_type;
+ for (i = 0; i < 20; i++)
+ event->u.clientMessage.u.b.bytes[i] = ev->data.b[i];
+ break;
+ case 16:
+ event->u.clientMessage.u.s.type = ev->message_type;
+ event->u.clientMessage.u.s.shorts0 = ev->data.s[0];
+ event->u.clientMessage.u.s.shorts1 = ev->data.s[1];
+ event->u.clientMessage.u.s.shorts2 = ev->data.s[2];
+ event->u.clientMessage.u.s.shorts3 = ev->data.s[3];
+ event->u.clientMessage.u.s.shorts4 = ev->data.s[4];
+ event->u.clientMessage.u.s.shorts5 = ev->data.s[5];
+ event->u.clientMessage.u.s.shorts6 = ev->data.s[6];
+ event->u.clientMessage.u.s.shorts7 = ev->data.s[7];
+ event->u.clientMessage.u.s.shorts8 = ev->data.s[8];
+ event->u.clientMessage.u.s.shorts9 = ev->data.s[9];
+ break;
+ case 32:
+ event->u.clientMessage.u.l.type = ev->message_type;
+ event->u.clientMessage.u.l.longs0 = ev->data.l[0];
+ event->u.clientMessage.u.l.longs1 = ev->data.l[1];
+ event->u.clientMessage.u.l.longs2 = ev->data.l[2];
+ event->u.clientMessage.u.l.longs3 = ev->data.l[3];
+ event->u.clientMessage.u.l.longs4 = ev->data.l[4];
+ break;
+ default:
+ /* client passing bogus data, let server complain */
+ break;
+ }
+ }
+ break;
+ case MappingNotify:
+ {
+ register XMappingEvent *ev = (XMappingEvent *) re;
+ event->u.mappingNotify.firstKeyCode = ev->first_keycode;
+ event->u.mappingNotify.request = ev->request;
+ event->u.mappingNotify.count = ev->count;
+ }
+ break;
+
+ default:
+ return(_XUnknownNativeEvent(dpy, re, event));
+ }
+ return(1);
+}
diff --git a/libX11/src/FSSaver.c b/libX11/src/FSSaver.c
index 4861b1d72..3df8ae681 100644
--- a/libX11/src/FSSaver.c
+++ b/libX11/src/FSSaver.c
@@ -1,60 +1,60 @@
-/*
-
-Copyright 1987, 1998 The Open Group
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall not be
-used in advertising or otherwise to promote the sale, use or other dealings
-in this Software without prior written authorization from The Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-
-int
-XActivateScreenSaver(register Display *dpy)
-{
- XForceScreenSaver (dpy, ScreenSaverActive);
- return 1;
-}
-
-int
-XResetScreenSaver(register Display *dpy)
-{
- XForceScreenSaver (dpy, ScreenSaverReset);
- return 1;
-}
-
-int
-XForceScreenSaver(
- register Display *dpy,
- int mode)
-{
- register xForceScreenSaverReq *req;
-
- LockDisplay(dpy);
- GetReq(ForceScreenSaver, req);
- req->mode = mode;
- UnlockDisplay(dpy);
- SyncHandle();
- return 1;
-}
-
+/*
+
+Copyright 1987, 1998 The Open Group
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group shall not be
+used in advertising or otherwise to promote the sale, use or other dealings
+in this Software without prior written authorization from The Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+
+int
+XActivateScreenSaver(register Display *dpy)
+{
+ XForceScreenSaver (dpy, ScreenSaverActive);
+ return 1;
+}
+
+int
+XResetScreenSaver(register Display *dpy)
+{
+ XForceScreenSaver (dpy, ScreenSaverReset);
+ return 1;
+}
+
+int
+XForceScreenSaver(
+ register Display *dpy,
+ int mode)
+{
+ register xForceScreenSaverReq *req;
+
+ LockDisplay(dpy);
+ GetReq(ForceScreenSaver, req);
+ req->mode = mode;
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return 1;
+}
+
diff --git a/libX11/src/FetchName.c b/libX11/src/FetchName.c
index 4363a01cb..22bd4607a 100644
--- a/libX11/src/FetchName.c
+++ b/libX11/src/FetchName.c
@@ -1,95 +1,95 @@
-/*
-
-Copyright 1986, 1998 The Open Group
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall not be
-used in advertising or otherwise to promote the sale, use or other dealings
-in this Software without prior written authorization from The Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include <X11/Xlibint.h>
-#include <X11/Xatom.h>
-#include <X11/Xos.h>
-#include <stdio.h>
-
-
-Status XFetchName (
- register Display *dpy,
- Window w,
- char **name)
-{
- Atom actual_type;
- int actual_format;
- unsigned long nitems;
- unsigned long leftover;
- unsigned char *data = NULL;
- if (XGetWindowProperty(dpy, w, XA_WM_NAME, 0L, (long)BUFSIZ, False, XA_STRING,
- &actual_type,
- &actual_format, &nitems, &leftover, &data) != Success) {
- *name = NULL;
- return (0);
- }
- if ( (actual_type == XA_STRING) && (actual_format == 8) ) {
-
- /* The data returned by XGetWindowProperty is guarranteed to
- contain one extra byte that is null terminated to make retrieveing
- string properties easy. */
-
- *name = (char *)data;
- return(1);
- }
- if (data) Xfree ((char *)data);
- *name = NULL;
- return(0);
-}
-
-Status XGetIconName (
- register Display *dpy,
- Window w,
- char **icon_name)
-{
- Atom actual_type;
- int actual_format;
- unsigned long nitems;
- unsigned long leftover;
- unsigned char *data = NULL;
- if (XGetWindowProperty(dpy, w, XA_WM_ICON_NAME, 0L, (long)BUFSIZ, False,
- XA_STRING,
- &actual_type,
- &actual_format, &nitems, &leftover, &data) != Success) {
- *icon_name = NULL;
- return (0);
- }
- if ( (actual_type == XA_STRING) && (actual_format == 8) ) {
-
- /* The data returned by XGetWindowProperty is guarranteed to
- contain one extra byte that is null terminated to make retrieveing
- string properties easy. */
-
- *icon_name = (char*)data;
- return(1);
- }
- if (data) Xfree ((char *)data);
- *icon_name = NULL;
- return(0);
-}
+/*
+
+Copyright 1986, 1998 The Open Group
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group shall not be
+used in advertising or otherwise to promote the sale, use or other dealings
+in this Software without prior written authorization from The Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include <X11/Xlibint.h>
+#include <X11/Xatom.h>
+#include <X11/Xos.h>
+#include <stdio.h>
+
+
+Status XFetchName (
+ register Display *dpy,
+ Window w,
+ char **name)
+{
+ Atom actual_type;
+ int actual_format;
+ unsigned long nitems;
+ unsigned long leftover;
+ unsigned char *data = NULL;
+ if (XGetWindowProperty(dpy, w, XA_WM_NAME, 0L, (long)BUFSIZ, False, XA_STRING,
+ &actual_type,
+ &actual_format, &nitems, &leftover, &data) != Success) {
+ *name = NULL;
+ return (0);
+ }
+ if ( (actual_type == XA_STRING) && (actual_format == 8) ) {
+
+ /* The data returned by XGetWindowProperty is guarranteed to
+ contain one extra byte that is null terminated to make retrieveing
+ string properties easy. */
+
+ *name = (char *)data;
+ return(1);
+ }
+ if (data) Xfree ((char *)data);
+ *name = NULL;
+ return(0);
+}
+
+Status XGetIconName (
+ register Display *dpy,
+ Window w,
+ char **icon_name)
+{
+ Atom actual_type;
+ int actual_format;
+ unsigned long nitems;
+ unsigned long leftover;
+ unsigned char *data = NULL;
+ if (XGetWindowProperty(dpy, w, XA_WM_ICON_NAME, 0L, (long)BUFSIZ, False,
+ XA_STRING,
+ &actual_type,
+ &actual_format, &nitems, &leftover, &data) != Success) {
+ *icon_name = NULL;
+ return (0);
+ }
+ if ( (actual_type == XA_STRING) && (actual_format == 8) ) {
+
+ /* The data returned by XGetWindowProperty is guarranteed to
+ contain one extra byte that is null terminated to make retrieveing
+ string properties easy. */
+
+ *icon_name = (char*)data;
+ return(1);
+ }
+ if (data) Xfree ((char *)data);
+ *icon_name = NULL;
+ return(0);
+}
diff --git a/libX11/src/FillArc.c b/libX11/src/FillArc.c
index 635b56aa5..0f1ad02d1 100644
--- a/libX11/src/FillArc.c
+++ b/libX11/src/FillArc.c
@@ -1,102 +1,102 @@
-/*
-
-Copyright 1986, 1998 The Open Group
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall not be
-used in advertising or otherwise to promote the sale, use or other dealings
-in this Software without prior written authorization from The Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-
-/* precompute the maximum size of batching request allowed */
-
-#define size (SIZEOF(xPolyFillArcReq) + FARCSPERBATCH * SIZEOF(xArc))
-
-int
-XFillArc(
- register Display *dpy,
- Drawable d,
- GC gc,
- int x,
- int y, /* INT16 */
- unsigned int width,
- unsigned int height, /* CARD16 */
- int angle1,
- int angle2) /* INT16 */
-{
- xArc *arc;
-#ifdef MUSTCOPY
- xArc arcdata;
- long len = SIZEOF(xArc);
-
- arc = &arcdata;
-#endif /* MUSTCOPY */
-
- LockDisplay(dpy);
- FlushGC(dpy, gc);
-
- {
- register xPolyFillArcReq *req = (xPolyFillArcReq *) dpy->last_req;
-
- /* if same as previous request, with same drawable, batch requests */
- if (
- (req->reqType == X_PolyFillArc)
- && (req->drawable == d)
- && (req->gc == gc->gid)
- && ((dpy->bufptr + SIZEOF(xArc)) <= dpy->bufmax)
- && (((char *)dpy->bufptr - (char *)req) < size) ) {
- req->length += SIZEOF(xArc) >> 2;
-#ifndef MUSTCOPY
- arc = (xArc *) dpy->bufptr;
- dpy->bufptr += SIZEOF(xArc);
-#endif /* not MUSTCOPY */
- }
-
- else {
- GetReqExtra(PolyFillArc, SIZEOF(xArc), req);
-
- req->drawable = d;
- req->gc = gc->gid;
-#ifdef MUSTCOPY
- dpy->bufptr -= SIZEOF(xArc);
-#else
- arc = (xArc *) NEXTPTR(req,xPolyFillArcReq);
-#endif /* MUSTCOPY */
- }
- arc->x = x;
- arc->y = y;
- arc->width = width;
- arc->height = height;
- arc->angle1 = angle1;
- arc->angle2 = angle2;
-
-#ifdef MUSTCOPY
- Data (dpy, (char *) arc, len);
-#endif /* MUSTCOPY */
-
- }
- UnlockDisplay(dpy);
- SyncHandle();
- return 1;
-}
+/*
+
+Copyright 1986, 1998 The Open Group
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group shall not be
+used in advertising or otherwise to promote the sale, use or other dealings
+in this Software without prior written authorization from The Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+
+/* precompute the maximum size of batching request allowed */
+
+#define size (SIZEOF(xPolyFillArcReq) + FARCSPERBATCH * SIZEOF(xArc))
+
+int
+XFillArc(
+ register Display *dpy,
+ Drawable d,
+ GC gc,
+ int x,
+ int y, /* INT16 */
+ unsigned int width,
+ unsigned int height, /* CARD16 */
+ int angle1,
+ int angle2) /* INT16 */
+{
+ xArc *arc;
+#ifdef MUSTCOPY
+ xArc arcdata;
+ long len = SIZEOF(xArc);
+
+ arc = &arcdata;
+#endif /* MUSTCOPY */
+
+ LockDisplay(dpy);
+ FlushGC(dpy, gc);
+
+ {
+ register xPolyFillArcReq *req = (xPolyFillArcReq *) dpy->last_req;
+
+ /* if same as previous request, with same drawable, batch requests */
+ if (
+ (req->reqType == X_PolyFillArc)
+ && (req->drawable == d)
+ && (req->gc == gc->gid)
+ && ((dpy->bufptr + SIZEOF(xArc)) <= dpy->bufmax)
+ && (((char *)dpy->bufptr - (char *)req) < size) ) {
+ req->length += SIZEOF(xArc) >> 2;
+#ifndef MUSTCOPY
+ arc = (xArc *) dpy->bufptr;
+ dpy->bufptr += SIZEOF(xArc);
+#endif /* not MUSTCOPY */
+ }
+
+ else {
+ GetReqExtra(PolyFillArc, SIZEOF(xArc), req);
+
+ req->drawable = d;
+ req->gc = gc->gid;
+#ifdef MUSTCOPY
+ dpy->bufptr -= SIZEOF(xArc);
+#else
+ arc = (xArc *) NEXTPTR(req,xPolyFillArcReq);
+#endif /* MUSTCOPY */
+ }
+ arc->x = x;
+ arc->y = y;
+ arc->width = width;
+ arc->height = height;
+ arc->angle1 = angle1;
+ arc->angle2 = angle2;
+
+#ifdef MUSTCOPY
+ Data (dpy, (char *) arc, len);
+#endif /* MUSTCOPY */
+
+ }
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return 1;
+}
diff --git a/libX11/src/FillArcs.c b/libX11/src/FillArcs.c
index 841f9ba83..62cfabf8f 100644
--- a/libX11/src/FillArcs.c
+++ b/libX11/src/FillArcs.c
@@ -1,67 +1,67 @@
-/*
-
-Copyright 1986, 1998 The Open Group
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall not be
-used in advertising or otherwise to promote the sale, use or other dealings
-in this Software without prior written authorization from The Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-
-#define arc_scale (SIZEOF(xArc) / 4)
-
-int
-XFillArcs(
- register Display *dpy,
- Drawable d,
- GC gc,
- XArc *arcs,
- int n_arcs)
-{
- register xPolyFillArcReq *req;
- long len;
- int n;
-
- LockDisplay(dpy);
- FlushGC(dpy, gc);
- while (n_arcs) {
- GetReq(PolyFillArc, req);
- req->drawable = d;
- req->gc = gc->gid;
- n = n_arcs;
- len = ((long)n) * arc_scale;
- if (!dpy->bigreq_size && len > (dpy->max_request_size - req->length)) {
- n = (dpy->max_request_size - req->length) / arc_scale;
- len = ((long)n) * arc_scale;
- }
- SetReqLen(req, len, len);
- len <<= 2; /* watch out for macros... */
- Data16 (dpy, (short *) arcs, len);
- n_arcs -= n;
- arcs += n;
- }
- UnlockDisplay(dpy);
- SyncHandle();
- return 1;
-}
+/*
+
+Copyright 1986, 1998 The Open Group
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group shall not be
+used in advertising or otherwise to promote the sale, use or other dealings
+in this Software without prior written authorization from The Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+
+#define arc_scale (SIZEOF(xArc) / 4)
+
+int
+XFillArcs(
+ register Display *dpy,
+ Drawable d,
+ GC gc,
+ XArc *arcs,
+ int n_arcs)
+{
+ register xPolyFillArcReq *req;
+ long len;
+ int n;
+
+ LockDisplay(dpy);
+ FlushGC(dpy, gc);
+ while (n_arcs) {
+ GetReq(PolyFillArc, req);
+ req->drawable = d;
+ req->gc = gc->gid;
+ n = n_arcs;
+ len = ((long)n) * arc_scale;
+ if (!dpy->bigreq_size && len > (dpy->max_request_size - req->length)) {
+ n = (dpy->max_request_size - req->length) / arc_scale;
+ len = ((long)n) * arc_scale;
+ }
+ SetReqLen(req, len, len);
+ len <<= 2; /* watch out for macros... */
+ Data16 (dpy, (short *) arcs, len);
+ n_arcs -= n;
+ arcs += n;
+ }
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return 1;
+}
diff --git a/libX11/src/FillPoly.c b/libX11/src/FillPoly.c
index 6468ea1ed..ea162a41e 100644
--- a/libX11/src/FillPoly.c
+++ b/libX11/src/FillPoly.c
@@ -1,64 +1,64 @@
-/*
-
-Copyright 1986, 1998 The Open Group
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall not be
-used in advertising or otherwise to promote the sale, use or other dealings
-in this Software without prior written authorization from The Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-
-int
-XFillPolygon(
- register Display *dpy,
- Drawable d,
- GC gc,
- XPoint *points,
- int n_points,
- int shape,
- int mode)
-{
- register xFillPolyReq *req;
- register long nbytes;
-
- LockDisplay(dpy);
- FlushGC(dpy, gc);
- GetReq(FillPoly, req);
-
- req->drawable = d;
- req->gc = gc->gid;
- req->shape = shape;
- req->coordMode = mode;
-
- SetReqLen(req, n_points, 65535 - req->length);
-
- /* shift (mult. by 4) before passing to the (possible) macro */
-
- nbytes = n_points << 2;
-
- Data16 (dpy, (short *) points, nbytes);
- UnlockDisplay(dpy);
- SyncHandle();
- return 1;
-}
+/*
+
+Copyright 1986, 1998 The Open Group
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group shall not be
+used in advertising or otherwise to promote the sale, use or other dealings
+in this Software without prior written authorization from The Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+
+int
+XFillPolygon(
+ register Display *dpy,
+ Drawable d,
+ GC gc,
+ XPoint *points,
+ int n_points,
+ int shape,
+ int mode)
+{
+ register xFillPolyReq *req;
+ register long nbytes;
+
+ LockDisplay(dpy);
+ FlushGC(dpy, gc);
+ GetReq(FillPoly, req);
+
+ req->drawable = d;
+ req->gc = gc->gid;
+ req->shape = shape;
+ req->coordMode = mode;
+
+ SetReqLen(req, n_points, 65535 - req->length);
+
+ /* shift (mult. by 4) before passing to the (possible) macro */
+
+ nbytes = n_points << 2;
+
+ Data16 (dpy, (short *) points, nbytes);
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return 1;
+}
diff --git a/libX11/src/FillRct.c b/libX11/src/FillRct.c
index 957f55a04..4cd104cb1 100644
--- a/libX11/src/FillRct.c
+++ b/libX11/src/FillRct.c
@@ -1,97 +1,97 @@
-/*
-
-Copyright 1986, 1998 The Open Group
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall not be
-used in advertising or otherwise to promote the sale, use or other dealings
-in this Software without prior written authorization from The Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-
-/* precompute the maximum size of batching request allowed */
-
-#define size (SIZEOF(xPolyFillRectangleReq) + FRCTSPERBATCH * SIZEOF(xRectangle))
-
-int
-XFillRectangle(
- register Display *dpy,
- Drawable d,
- GC gc,
- int x,
- int y, /* INT16 */
- unsigned int width,
- unsigned int height) /* CARD16 */
-{
- xRectangle *rect;
-#ifdef MUSTCOPY
- xRectangle rectdata;
- long len = SIZEOF(xRectangle);
-
- rect = &rectdata;
-#endif /* MUSTCOPY */
-
- LockDisplay(dpy);
- FlushGC(dpy, gc);
-
- {
- register xPolyFillRectangleReq *req
- = (xPolyFillRectangleReq *) dpy->last_req;
-
- /* if same as previous request, with same drawable, batch requests */
- if (
- (req->reqType == X_PolyFillRectangle)
- && (req->drawable == d)
- && (req->gc == gc->gid)
- && ((dpy->bufptr + SIZEOF(xRectangle)) <= dpy->bufmax)
- && (((char *)dpy->bufptr - (char *)req) < size) ) {
- req->length += SIZEOF(xRectangle) >> 2;
-#ifndef MUSTCOPY
- rect = (xRectangle *) dpy->bufptr;
- dpy->bufptr += SIZEOF(xRectangle);
-#endif /* not MUSTCOPY */
- }
-
- else {
- GetReqExtra(PolyFillRectangle, SIZEOF(xRectangle), req);
- req->drawable = d;
- req->gc = gc->gid;
-#ifdef MUSTCOPY
- dpy->bufptr -= SIZEOF(xRectangle);
-#else
- rect = (xRectangle *) NEXTPTR(req,xPolyFillRectangleReq);
-#endif /* MUSTCOPY */
- }
- rect->x = x;
- rect->y = y;
- rect->width = width;
- rect->height = height;
-
-#ifdef MUSTCOPY
- Data (dpy, (char *) rect, len);
-#endif /* MUSTCOPY */
- }
- UnlockDisplay(dpy);
- SyncHandle();
- return 1;
-}
+/*
+
+Copyright 1986, 1998 The Open Group
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group shall not be
+used in advertising or otherwise to promote the sale, use or other dealings
+in this Software without prior written authorization from The Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+
+/* precompute the maximum size of batching request allowed */
+
+#define size (SIZEOF(xPolyFillRectangleReq) + FRCTSPERBATCH * SIZEOF(xRectangle))
+
+int
+XFillRectangle(
+ register Display *dpy,
+ Drawable d,
+ GC gc,
+ int x,
+ int y, /* INT16 */
+ unsigned int width,
+ unsigned int height) /* CARD16 */
+{
+ xRectangle *rect;
+#ifdef MUSTCOPY
+ xRectangle rectdata;
+ long len = SIZEOF(xRectangle);
+
+ rect = &rectdata;
+#endif /* MUSTCOPY */
+
+ LockDisplay(dpy);
+ FlushGC(dpy, gc);
+
+ {
+ register xPolyFillRectangleReq *req
+ = (xPolyFillRectangleReq *) dpy->last_req;
+
+ /* if same as previous request, with same drawable, batch requests */
+ if (
+ (req->reqType == X_PolyFillRectangle)
+ && (req->drawable == d)
+ && (req->gc == gc->gid)
+ && ((dpy->bufptr + SIZEOF(xRectangle)) <= dpy->bufmax)
+ && (((char *)dpy->bufptr - (char *)req) < size) ) {
+ req->length += SIZEOF(xRectangle) >> 2;
+#ifndef MUSTCOPY
+ rect = (xRectangle *) dpy->bufptr;
+ dpy->bufptr += SIZEOF(xRectangle);
+#endif /* not MUSTCOPY */
+ }
+
+ else {
+ GetReqExtra(PolyFillRectangle, SIZEOF(xRectangle), req);
+ req->drawable = d;
+ req->gc = gc->gid;
+#ifdef MUSTCOPY
+ dpy->bufptr -= SIZEOF(xRectangle);
+#else
+ rect = (xRectangle *) NEXTPTR(req,xPolyFillRectangleReq);
+#endif /* MUSTCOPY */
+ }
+ rect->x = x;
+ rect->y = y;
+ rect->width = width;
+ rect->height = height;
+
+#ifdef MUSTCOPY
+ Data (dpy, (char *) rect, len);
+#endif /* MUSTCOPY */
+ }
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return 1;
+}
diff --git a/libX11/src/FillRcts.c b/libX11/src/FillRcts.c
index 0ce18f817..ad334244f 100644
--- a/libX11/src/FillRcts.c
+++ b/libX11/src/FillRcts.c
@@ -1,66 +1,66 @@
-/*
-
-Copyright 1986, 1998 The Open Group
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall not be
-used in advertising or otherwise to promote the sale, use or other dealings
-in this Software without prior written authorization from The Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-
-int
-XFillRectangles(
- register Display *dpy,
- Drawable d,
- GC gc,
- XRectangle *rectangles,
- int n_rects)
-{
- register xPolyFillRectangleReq *req;
- long len;
- int n;
-
- LockDisplay(dpy);
- FlushGC(dpy, gc);
- while (n_rects) {
- GetReq(PolyFillRectangle, req);
- req->drawable = d;
- req->gc = gc->gid;
- n = n_rects;
- len = ((long)n) << 1;
- if (!dpy->bigreq_size && len > (dpy->max_request_size - req->length)) {
- n = (dpy->max_request_size - req->length) >> 1;
- len = ((long)n) << 1;
- }
- SetReqLen(req, len, len);
- len <<= 2; /* watch out for macros... */
- Data16 (dpy, (short *) rectangles, len);
- n_rects -= n;
- rectangles += n;
- }
- UnlockDisplay(dpy);
- SyncHandle();
- return 1;
-}
-
+/*
+
+Copyright 1986, 1998 The Open Group
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group shall not be
+used in advertising or otherwise to promote the sale, use or other dealings
+in this Software without prior written authorization from The Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+
+int
+XFillRectangles(
+ register Display *dpy,
+ Drawable d,
+ GC gc,
+ XRectangle *rectangles,
+ int n_rects)
+{
+ register xPolyFillRectangleReq *req;
+ long len;
+ int n;
+
+ LockDisplay(dpy);
+ FlushGC(dpy, gc);
+ while (n_rects) {
+ GetReq(PolyFillRectangle, req);
+ req->drawable = d;
+ req->gc = gc->gid;
+ n = n_rects;
+ len = ((long)n) << 1;
+ if (!dpy->bigreq_size && len > (dpy->max_request_size - req->length)) {
+ n = (dpy->max_request_size - req->length) >> 1;
+ len = ((long)n) << 1;
+ }
+ SetReqLen(req, len, len);
+ len <<= 2; /* watch out for macros... */
+ Data16 (dpy, (short *) rectangles, len);
+ n_rects -= n;
+ rectangles += n;
+ }
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return 1;
+}
+
diff --git a/libX11/src/FilterEv.c b/libX11/src/FilterEv.c
index a4a21027f..0a48e5486 100644
--- a/libX11/src/FilterEv.c
+++ b/libX11/src/FilterEv.c
@@ -1,106 +1,106 @@
-
- /*
- * Copyright 1990, 1991 by OMRON Corporation
- *
- * Permission to use, copy, modify, distribute, and sell this software and its
- * documentation for any purpose is hereby granted without fee, provided that
- * the above copyright notice appear in all copies and that both that
- * copyright notice and this permission notice appear in supporting
- * documentation, and that the name OMRON not be used in
- * advertising or publicity pertaining to distribution of the software without
- * specific, written prior permission. OMRON makes no representations
- * about the suitability of this software for any purpose. It is provided
- * "as is" without express or implied warranty.
- *
- * OMRON DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
- * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
- * EVENT SHALL OMRON BE LIABLE FOR ANY SPECIAL, INDIRECT OR
- * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
- * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
- * TORTUOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
- * PERFORMANCE OF THIS SOFTWARE.
- *
- * Author: Seiji Kuwari OMRON Corporation
- * kuwa@omron.co.jp
- * kuwa%omron.co.jp@uunet.uu.net
- */
-
-/*
-
-Copyright 1991, 1998 The Open Group
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
-
-The above copyright notice and this permission notice shall be included
-in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
-IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR
-OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
-ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall
-not be used in advertising or otherwise to promote the sale, use or
-other dealings in this Software without prior written authorization
-from The Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#else
-#define XLOCALE 1
-#endif
-#include "Xlibint.h"
-#if XLOCALE
-#include "Xlcint.h"
-#endif
-
-extern long const _Xevent_to_mask[];
-
-/*
- * Look up if there is a specified filter for the event.
- */
-Bool
-XFilterEvent(
- XEvent *ev,
- Window window)
-{
-#if XLOCALE
- XFilterEventList p;
- Window win;
- long mask;
- Bool ret;
-
- if (window)
- win = window;
- else
- win = ev->xany.window;
- if (ev->type >= LASTEvent)
- mask = 0;
- else
- mask = _Xevent_to_mask[ev->type];
-
- LockDisplay(ev->xany.display);
- for (p = ev->xany.display->im_filters; p != NULL; p = p->next) {
- if (win == p->window) {
- if ((mask & p->event_mask) ||
- (ev->type >= p->start_type && ev->type <= p->end_type)) {
- UnlockDisplay(ev->xany.display);
- ret = (*(p->filter))(ev->xany.display, p->window, ev,
- p->client_data);
- return(ret);
- }
- }
- }
- UnlockDisplay(ev->xany.display);
-#endif
- return(False);
-}
+
+ /*
+ * Copyright 1990, 1991 by OMRON Corporation
+ *
+ * Permission to use, copy, modify, distribute, and sell this software and its
+ * documentation for any purpose is hereby granted without fee, provided that
+ * the above copyright notice appear in all copies and that both that
+ * copyright notice and this permission notice appear in supporting
+ * documentation, and that the name OMRON not be used in
+ * advertising or publicity pertaining to distribution of the software without
+ * specific, written prior permission. OMRON makes no representations
+ * about the suitability of this software for any purpose. It is provided
+ * "as is" without express or implied warranty.
+ *
+ * OMRON DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
+ * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
+ * EVENT SHALL OMRON BE LIABLE FOR ANY SPECIAL, INDIRECT OR
+ * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
+ * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
+ * TORTUOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+ * PERFORMANCE OF THIS SOFTWARE.
+ *
+ * Author: Seiji Kuwari OMRON Corporation
+ * kuwa@omron.co.jp
+ * kuwa%omron.co.jp@uunet.uu.net
+ */
+
+/*
+
+Copyright 1991, 1998 The Open Group
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
+
+The above copyright notice and this permission notice shall be included
+in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR
+OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
+ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group shall
+not be used in advertising or otherwise to promote the sale, use or
+other dealings in this Software without prior written authorization
+from The Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#else
+#define XLOCALE 1
+#endif
+#include "Xlibint.h"
+#if XLOCALE
+#include "Xlcint.h"
+#endif
+
+extern long const _Xevent_to_mask[];
+
+/*
+ * Look up if there is a specified filter for the event.
+ */
+Bool
+XFilterEvent(
+ XEvent *ev,
+ Window window)
+{
+#if XLOCALE
+ XFilterEventList p;
+ Window win;
+ long mask;
+ Bool ret;
+
+ if (window)
+ win = window;
+ else
+ win = ev->xany.window;
+ if (ev->type >= LASTEvent)
+ mask = 0;
+ else
+ mask = _Xevent_to_mask[ev->type];
+
+ LockDisplay(ev->xany.display);
+ for (p = ev->xany.display->im_filters; p != NULL; p = p->next) {
+ if (win == p->window) {
+ if ((mask & p->event_mask) ||
+ (ev->type >= p->start_type && ev->type <= p->end_type)) {
+ UnlockDisplay(ev->xany.display);
+ ret = (*(p->filter))(ev->xany.display, p->window, ev,
+ p->client_data);
+ return(ret);
+ }
+ }
+ }
+ UnlockDisplay(ev->xany.display);
+#endif
+ return(False);
+}
diff --git a/libX11/src/Flush.c b/libX11/src/Flush.c
index d0be0b922..46168999b 100644
--- a/libX11/src/Flush.c
+++ b/libX11/src/Flush.c
@@ -1,42 +1,42 @@
-/*
-
-Copyright 1986, 1998 The Open Group
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall not be
-used in advertising or otherwise to promote the sale, use or other dealings
-in this Software without prior written authorization from The Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-
-/* Flush all buffered output requests. */
-/* NOTE: NOT necessary when calling any of the Xlib routines. */
-
-int
-XFlush (register Display *dpy)
-{
- LockDisplay(dpy);
- _XFlush (dpy);
- UnlockDisplay(dpy);
- return 1;
- }
+/*
+
+Copyright 1986, 1998 The Open Group
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group shall not be
+used in advertising or otherwise to promote the sale, use or other dealings
+in this Software without prior written authorization from The Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+
+/* Flush all buffered output requests. */
+/* NOTE: NOT necessary when calling any of the Xlib routines. */
+
+int
+XFlush (register Display *dpy)
+{
+ LockDisplay(dpy);
+ _XFlush (dpy);
+ UnlockDisplay(dpy);
+ return 1;
+ }
diff --git a/libX11/src/FontInfo.c b/libX11/src/FontInfo.c
index dd0b83f24..a3ab65be5 100644
--- a/libX11/src/FontInfo.c
+++ b/libX11/src/FontInfo.c
@@ -1,253 +1,253 @@
-/*
-
-Copyright 1986, 1998 The Open Group
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall not be
-used in advertising or otherwise to promote the sale, use or other dealings
-in this Software without prior written authorization from The Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-
-#if defined(XF86BIGFONT) && !defined(MUSTCOPY)
-#define USE_XF86BIGFONT
-#endif
-#ifdef USE_XF86BIGFONT
-extern void _XF86BigfontFreeFontMetrics(
- XFontStruct* /* fs */
-);
-#endif
-
-char **XListFontsWithInfo(
-register Display *dpy,
-_Xconst char *pattern, /* null-terminated */
-int maxNames,
-int *actualCount, /* RETURN */
-XFontStruct **info) /* RETURN */
-{
- register long nbytes;
- register int i;
- register XFontStruct *fs;
- register int size = 0;
- XFontStruct *finfo = NULL;
- char **flist = NULL;
- xListFontsWithInfoReply reply;
- register xListFontsReq *req;
- int j;
-
- LockDisplay(dpy);
- GetReq(ListFontsWithInfo, req);
- req->maxNames = maxNames;
- nbytes = req->nbytes = pattern ? strlen (pattern) : 0;
- req->length += (nbytes + 3) >> 2;
- _XSend (dpy, pattern, nbytes);
- /* use _XSend instead of Data, since subsequent _XReply will flush buffer */
-
- for (i = 0; ; i++) {
- if (!_XReply (dpy, (xReply *) &reply,
- ((SIZEOF(xListFontsWithInfoReply) -
- SIZEOF(xGenericReply)) >> 2), xFalse)) {
- for (j=(i-1); (j >= 0); j--) {
- Xfree(flist[j]);
- if (finfo[j].properties) Xfree((char *) finfo[j].properties);
- }
- if (flist) Xfree((char *) flist);
- if (finfo) Xfree((char *) finfo);
- UnlockDisplay(dpy);
- SyncHandle();
- return ((char **) NULL);
- }
- if (reply.nameLength == 0)
- break;
- if ((i + reply.nReplies) >= size) {
- size = i + reply.nReplies + 1;
-
- if (finfo) {
- XFontStruct * tmp_finfo = (XFontStruct *)
- Xrealloc ((char *) finfo,
- (unsigned) (sizeof(XFontStruct) * size));
- char ** tmp_flist = (char **)
- Xrealloc ((char *) flist,
- (unsigned) (sizeof(char *) * (size+1)));
-
- if ((! tmp_finfo) || (! tmp_flist)) {
- /* free all the memory that we allocated */
- for (j=(i-1); (j >= 0); j--) {
- Xfree(flist[j]);
- if (finfo[j].properties)
- Xfree((char *) finfo[j].properties);
- }
- if (tmp_flist) Xfree((char *) tmp_flist);
- else Xfree((char *) flist);
- if (tmp_finfo) Xfree((char *) tmp_finfo);
- else Xfree((char *) finfo);
- goto clearwire;
- }
- finfo = tmp_finfo;
- flist = tmp_flist;
- }
- else {
- if (! (finfo = (XFontStruct *)
- Xmalloc((unsigned) (sizeof(XFontStruct) * size))))
- goto clearwire;
- if (! (flist = (char **)
- Xmalloc((unsigned) (sizeof(char *) * (size+1))))) {
- Xfree((char *) finfo);
- goto clearwire;
- }
- }
- }
- fs = &finfo[i];
-
- fs->ext_data = NULL;
- fs->per_char = NULL;
- fs->fid = None;
- fs->direction = reply.drawDirection;
- fs->min_char_or_byte2 = reply.minCharOrByte2;
- fs->max_char_or_byte2 = reply.maxCharOrByte2;
- fs->min_byte1 = reply.minByte1;
- fs->max_byte1 = reply.maxByte1;
- fs->default_char = reply.defaultChar;
- fs->all_chars_exist = reply.allCharsExist;
- fs->ascent = cvtINT16toInt (reply.fontAscent);
- fs->descent = cvtINT16toInt (reply.fontDescent);
-
-#ifdef MUSTCOPY
- {
- xCharInfo *xcip;
-
- xcip = (xCharInfo *) &reply.minBounds;
- fs->min_bounds.lbearing = xcip->leftSideBearing;
- fs->min_bounds.rbearing = xcip->rightSideBearing;
- fs->min_bounds.width = xcip->characterWidth;
- fs->min_bounds.ascent = xcip->ascent;
- fs->min_bounds.descent = xcip->descent;
- fs->min_bounds.attributes = xcip->attributes;
-
- xcip = (xCharInfo *) &reply.maxBounds;
- fs->max_bounds.lbearing = xcip->leftSideBearing;
- fs->max_bounds.rbearing = xcip->rightSideBearing;
- fs->max_bounds.width = xcip->characterWidth;
- fs->max_bounds.ascent = xcip->ascent;
- fs->max_bounds.descent = xcip->descent;
- fs->max_bounds.attributes = xcip->attributes;
- }
-#else
- /* XXX the next two statements won't work if short isn't 16 bits */
- fs->min_bounds = * (XCharStruct *) &reply.minBounds;
- fs->max_bounds = * (XCharStruct *) &reply.maxBounds;
-#endif /* MUSTCOPY */
-
- fs->n_properties = reply.nFontProps;
- if (fs->n_properties > 0) {
- nbytes = reply.nFontProps * sizeof(XFontProp);
- if (! (fs->properties = (XFontProp *) Xmalloc((unsigned) nbytes)))
- goto badmem;
- nbytes = reply.nFontProps * SIZEOF(xFontProp);
- _XRead32 (dpy, (long *)fs->properties, nbytes);
-
- } else
- fs->properties = NULL;
-
- j = reply.nameLength + 1;
- if (!i)
- j++; /* make first string 1 byte longer, to match XListFonts */
- flist[i] = (char *) Xmalloc ((unsigned int) j);
- if (! flist[i]) {
- if (finfo[i].properties) Xfree((char *) finfo[i].properties);
- nbytes = (reply.nameLength + 3) & ~3;
- _XEatData(dpy, (unsigned long) nbytes);
- goto badmem;
- }
- if (!i) {
- *flist[0] = 0; /* zero to distinguish from XListFonts */
- flist[0]++;
- }
- flist[i][reply.nameLength] = '\0';
- _XReadPad (dpy, flist[i], (long) reply.nameLength);
- }
- *info = finfo;
- *actualCount = i;
- if (flist)
- flist[i] = NULL; /* required in case XFreeFontNames is called */
- UnlockDisplay(dpy);
- SyncHandle();
- return (flist);
-
-
- badmem:
- /* Free all memory allocated by this function. */
- for (j=(i-1); (j >= 0); j--) {
- Xfree(flist[j]);
- if (finfo[j].properties) Xfree((char *) finfo[j].properties);
- }
- if (flist) Xfree((char *) flist);
- if (finfo) Xfree((char *) finfo);
-
- clearwire:
- /* Clear the wire. */
- do {
- if (reply.nFontProps)
- _XEatData(dpy, (unsigned long)
- (reply.nFontProps * SIZEOF(xFontProp)));
- nbytes = (reply.nameLength + 3) & ~3;
- _XEatData(dpy, (unsigned long) nbytes);
- }
- while (_XReply(dpy,(xReply *) &reply, ((SIZEOF(xListFontsWithInfoReply) -
- SIZEOF(xGenericReply)) >> 2),
- xFalse) && (reply.nameLength != 0));
-
- UnlockDisplay(dpy);
- SyncHandle();
- return (char **) NULL;
-}
-
-int
-XFreeFontInfo (
- char **names,
- XFontStruct *info,
- int actualCount)
-{
- register int i;
- if (names) {
- Xfree (names[0]-1);
- for (i = 1; i < actualCount; i++) {
- Xfree (names[i]);
- }
- Xfree((char *) names);
- }
- if (info) {
- for (i = 0; i < actualCount; i++) {
- if (info[i].per_char)
-#ifdef USE_XF86BIGFONT
- _XF86BigfontFreeFontMetrics(&info[i]);
-#else
- Xfree ((char *) info[i].per_char);
-#endif
- if (info[i].properties)
- Xfree ((char *) info[i].properties);
- }
- Xfree((char *) info);
- }
- return 1;
-}
+/*
+
+Copyright 1986, 1998 The Open Group
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group shall not be
+used in advertising or otherwise to promote the sale, use or other dealings
+in this Software without prior written authorization from The Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+
+#if defined(XF86BIGFONT) && !defined(MUSTCOPY)
+#define USE_XF86BIGFONT
+#endif
+#ifdef USE_XF86BIGFONT
+extern void _XF86BigfontFreeFontMetrics(
+ XFontStruct* /* fs */
+);
+#endif
+
+char **XListFontsWithInfo(
+register Display *dpy,
+_Xconst char *pattern, /* null-terminated */
+int maxNames,
+int *actualCount, /* RETURN */
+XFontStruct **info) /* RETURN */
+{
+ register long nbytes;
+ register int i;
+ register XFontStruct *fs;
+ register int size = 0;
+ XFontStruct *finfo = NULL;
+ char **flist = NULL;
+ xListFontsWithInfoReply reply;
+ register xListFontsReq *req;
+ int j;
+
+ LockDisplay(dpy);
+ GetReq(ListFontsWithInfo, req);
+ req->maxNames = maxNames;
+ nbytes = req->nbytes = pattern ? strlen (pattern) : 0;
+ req->length += (nbytes + 3) >> 2;
+ _XSend (dpy, pattern, nbytes);
+ /* use _XSend instead of Data, since subsequent _XReply will flush buffer */
+
+ for (i = 0; ; i++) {
+ if (!_XReply (dpy, (xReply *) &reply,
+ ((SIZEOF(xListFontsWithInfoReply) -
+ SIZEOF(xGenericReply)) >> 2), xFalse)) {
+ for (j=(i-1); (j >= 0); j--) {
+ Xfree(flist[j]);
+ if (finfo[j].properties) Xfree((char *) finfo[j].properties);
+ }
+ if (flist) Xfree((char *) flist);
+ if (finfo) Xfree((char *) finfo);
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return ((char **) NULL);
+ }
+ if (reply.nameLength == 0)
+ break;
+ if ((i + reply.nReplies) >= size) {
+ size = i + reply.nReplies + 1;
+
+ if (finfo) {
+ XFontStruct * tmp_finfo = (XFontStruct *)
+ Xrealloc ((char *) finfo,
+ (unsigned) (sizeof(XFontStruct) * size));
+ char ** tmp_flist = (char **)
+ Xrealloc ((char *) flist,
+ (unsigned) (sizeof(char *) * (size+1)));
+
+ if ((! tmp_finfo) || (! tmp_flist)) {
+ /* free all the memory that we allocated */
+ for (j=(i-1); (j >= 0); j--) {
+ Xfree(flist[j]);
+ if (finfo[j].properties)
+ Xfree((char *) finfo[j].properties);
+ }
+ if (tmp_flist) Xfree((char *) tmp_flist);
+ else Xfree((char *) flist);
+ if (tmp_finfo) Xfree((char *) tmp_finfo);
+ else Xfree((char *) finfo);
+ goto clearwire;
+ }
+ finfo = tmp_finfo;
+ flist = tmp_flist;
+ }
+ else {
+ if (! (finfo = (XFontStruct *)
+ Xmalloc((unsigned) (sizeof(XFontStruct) * size))))
+ goto clearwire;
+ if (! (flist = (char **)
+ Xmalloc((unsigned) (sizeof(char *) * (size+1))))) {
+ Xfree((char *) finfo);
+ goto clearwire;
+ }
+ }
+ }
+ fs = &finfo[i];
+
+ fs->ext_data = NULL;
+ fs->per_char = NULL;
+ fs->fid = None;
+ fs->direction = reply.drawDirection;
+ fs->min_char_or_byte2 = reply.minCharOrByte2;
+ fs->max_char_or_byte2 = reply.maxCharOrByte2;
+ fs->min_byte1 = reply.minByte1;
+ fs->max_byte1 = reply.maxByte1;
+ fs->default_char = reply.defaultChar;
+ fs->all_chars_exist = reply.allCharsExist;
+ fs->ascent = cvtINT16toInt (reply.fontAscent);
+ fs->descent = cvtINT16toInt (reply.fontDescent);
+
+#ifdef MUSTCOPY
+ {
+ xCharInfo *xcip;
+
+ xcip = (xCharInfo *) &reply.minBounds;
+ fs->min_bounds.lbearing = xcip->leftSideBearing;
+ fs->min_bounds.rbearing = xcip->rightSideBearing;
+ fs->min_bounds.width = xcip->characterWidth;
+ fs->min_bounds.ascent = xcip->ascent;
+ fs->min_bounds.descent = xcip->descent;
+ fs->min_bounds.attributes = xcip->attributes;
+
+ xcip = (xCharInfo *) &reply.maxBounds;
+ fs->max_bounds.lbearing = xcip->leftSideBearing;
+ fs->max_bounds.rbearing = xcip->rightSideBearing;
+ fs->max_bounds.width = xcip->characterWidth;
+ fs->max_bounds.ascent = xcip->ascent;
+ fs->max_bounds.descent = xcip->descent;
+ fs->max_bounds.attributes = xcip->attributes;
+ }
+#else
+ /* XXX the next two statements won't work if short isn't 16 bits */
+ fs->min_bounds = * (XCharStruct *) &reply.minBounds;
+ fs->max_bounds = * (XCharStruct *) &reply.maxBounds;
+#endif /* MUSTCOPY */
+
+ fs->n_properties = reply.nFontProps;
+ if (fs->n_properties > 0) {
+ nbytes = reply.nFontProps * sizeof(XFontProp);
+ if (! (fs->properties = (XFontProp *) Xmalloc((unsigned) nbytes)))
+ goto badmem;
+ nbytes = reply.nFontProps * SIZEOF(xFontProp);
+ _XRead32 (dpy, (long *)fs->properties, nbytes);
+
+ } else
+ fs->properties = NULL;
+
+ j = reply.nameLength + 1;
+ if (!i)
+ j++; /* make first string 1 byte longer, to match XListFonts */
+ flist[i] = (char *) Xmalloc ((unsigned int) j);
+ if (! flist[i]) {
+ if (finfo[i].properties) Xfree((char *) finfo[i].properties);
+ nbytes = (reply.nameLength + 3) & ~3;
+ _XEatData(dpy, (unsigned long) nbytes);
+ goto badmem;
+ }
+ if (!i) {
+ *flist[0] = 0; /* zero to distinguish from XListFonts */
+ flist[0]++;
+ }
+ flist[i][reply.nameLength] = '\0';
+ _XReadPad (dpy, flist[i], (long) reply.nameLength);
+ }
+ *info = finfo;
+ *actualCount = i;
+ if (flist)
+ flist[i] = NULL; /* required in case XFreeFontNames is called */
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return (flist);
+
+
+ badmem:
+ /* Free all memory allocated by this function. */
+ for (j=(i-1); (j >= 0); j--) {
+ Xfree(flist[j]);
+ if (finfo[j].properties) Xfree((char *) finfo[j].properties);
+ }
+ if (flist) Xfree((char *) flist);
+ if (finfo) Xfree((char *) finfo);
+
+ clearwire:
+ /* Clear the wire. */
+ do {
+ if (reply.nFontProps)
+ _XEatData(dpy, (unsigned long)
+ (reply.nFontProps * SIZEOF(xFontProp)));
+ nbytes = (reply.nameLength + 3) & ~3;
+ _XEatData(dpy, (unsigned long) nbytes);
+ }
+ while (_XReply(dpy,(xReply *) &reply, ((SIZEOF(xListFontsWithInfoReply) -
+ SIZEOF(xGenericReply)) >> 2),
+ xFalse) && (reply.nameLength != 0));
+
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return (char **) NULL;
+}
+
+int
+XFreeFontInfo (
+ char **names,
+ XFontStruct *info,
+ int actualCount)
+{
+ register int i;
+ if (names) {
+ Xfree (names[0]-1);
+ for (i = 1; i < actualCount; i++) {
+ Xfree (names[i]);
+ }
+ Xfree((char *) names);
+ }
+ if (info) {
+ for (i = 0; i < actualCount; i++) {
+ if (info[i].per_char)
+#ifdef USE_XF86BIGFONT
+ _XF86BigfontFreeFontMetrics(&info[i]);
+#else
+ Xfree ((char *) info[i].per_char);
+#endif
+ if (info[i].properties)
+ Xfree ((char *) info[i].properties);
+ }
+ Xfree((char *) info);
+ }
+ return 1;
+}
diff --git a/libX11/src/FontNames.c b/libX11/src/FontNames.c
index bf133f1b7..3018cf2cf 100644
--- a/libX11/src/FontNames.c
+++ b/libX11/src/FontNames.c
@@ -1,113 +1,113 @@
-/*
-
-Copyright 1986, 1998 The Open Group
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall not be
-used in advertising or otherwise to promote the sale, use or other dealings
-in this Software without prior written authorization from The Open Group.
-
-*/
-
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-
-char **
-XListFonts(
-register Display *dpy,
-_Xconst char *pattern, /* null-terminated */
-int maxNames,
-int *actualCount) /* RETURN */
-{
- register long nbytes;
- register unsigned i;
- register int length;
- char **flist;
- char *ch;
- xListFontsReply rep;
- register xListFontsReq *req;
- register long rlen;
-
- LockDisplay(dpy);
- GetReq(ListFonts, req);
- req->maxNames = maxNames;
- nbytes = req->nbytes = pattern ? strlen (pattern) : 0;
- req->length += (nbytes + 3) >> 2;
- _XSend (dpy, pattern, nbytes);
- /* use _XSend instead of Data, since following _XReply will flush buffer */
-
- if (!_XReply (dpy, (xReply *)&rep, 0, xFalse)) {
- *actualCount = 0;
- UnlockDisplay(dpy);
- SyncHandle();
- return (char **) NULL;
- }
-
- if (rep.nFonts) {
- flist = (char **)Xmalloc ((unsigned)rep.nFonts * sizeof(char *));
- rlen = rep.length << 2;
- ch = (char *) Xmalloc((unsigned) (rlen + 1));
- /* +1 to leave room for last null-terminator */
-
- if ((! flist) || (! ch)) {
- if (flist) Xfree((char *) flist);
- if (ch) Xfree(ch);
- _XEatData(dpy, (unsigned long) rlen);
- *actualCount = 0;
- UnlockDisplay(dpy);
- SyncHandle();
- return (char **) NULL;
- }
-
- _XReadPad (dpy, ch, rlen);
- /*
- * unpack into null terminated strings.
- */
- length = *(unsigned char *)ch;
- *ch = 1; /* make sure it is non-zero for XFreeFontNames */
- for (i = 0; i < rep.nFonts; i++) {
- flist[i] = ch + 1; /* skip over length */
- ch += length + 1; /* find next length ... */
- length = *(unsigned char *)ch;
- *ch = '\0'; /* and replace with null-termination */
- }
- }
- else flist = (char **) NULL;
- *actualCount = rep.nFonts;
- UnlockDisplay(dpy);
- SyncHandle();
- return (flist);
-}
-
-int
-XFreeFontNames(char **list)
-{
- if (list) {
- if (!*(list[0]-1)) { /* from ListFontsWithInfo */
- register char **names;
- for (names = list+1; *names; names++)
- Xfree (*names);
- }
- Xfree (list[0]-1);
- Xfree ((char *)list);
- }
- return 1;
-}
+/*
+
+Copyright 1986, 1998 The Open Group
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group shall not be
+used in advertising or otherwise to promote the sale, use or other dealings
+in this Software without prior written authorization from The Open Group.
+
+*/
+
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+
+char **
+XListFonts(
+register Display *dpy,
+_Xconst char *pattern, /* null-terminated */
+int maxNames,
+int *actualCount) /* RETURN */
+{
+ register long nbytes;
+ register unsigned i;
+ register int length;
+ char **flist;
+ char *ch;
+ xListFontsReply rep;
+ register xListFontsReq *req;
+ register long rlen;
+
+ LockDisplay(dpy);
+ GetReq(ListFonts, req);
+ req->maxNames = maxNames;
+ nbytes = req->nbytes = pattern ? strlen (pattern) : 0;
+ req->length += (nbytes + 3) >> 2;
+ _XSend (dpy, pattern, nbytes);
+ /* use _XSend instead of Data, since following _XReply will flush buffer */
+
+ if (!_XReply (dpy, (xReply *)&rep, 0, xFalse)) {
+ *actualCount = 0;
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return (char **) NULL;
+ }
+
+ if (rep.nFonts) {
+ flist = (char **)Xmalloc ((unsigned)rep.nFonts * sizeof(char *));
+ rlen = rep.length << 2;
+ ch = (char *) Xmalloc((unsigned) (rlen + 1));
+ /* +1 to leave room for last null-terminator */
+
+ if ((! flist) || (! ch)) {
+ if (flist) Xfree((char *) flist);
+ if (ch) Xfree(ch);
+ _XEatData(dpy, (unsigned long) rlen);
+ *actualCount = 0;
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return (char **) NULL;
+ }
+
+ _XReadPad (dpy, ch, rlen);
+ /*
+ * unpack into null terminated strings.
+ */
+ length = *(unsigned char *)ch;
+ *ch = 1; /* make sure it is non-zero for XFreeFontNames */
+ for (i = 0; i < rep.nFonts; i++) {
+ flist[i] = ch + 1; /* skip over length */
+ ch += length + 1; /* find next length ... */
+ length = *(unsigned char *)ch;
+ *ch = '\0'; /* and replace with null-termination */
+ }
+ }
+ else flist = (char **) NULL;
+ *actualCount = rep.nFonts;
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return (flist);
+}
+
+int
+XFreeFontNames(char **list)
+{
+ if (list) {
+ if (!*(list[0]-1)) { /* from ListFontsWithInfo */
+ register char **names;
+ for (names = list+1; *names; names++)
+ Xfree (*names);
+ }
+ Xfree (list[0]-1);
+ Xfree ((char *)list);
+ }
+ return 1;
+}
diff --git a/libX11/src/FreeCmap.c b/libX11/src/FreeCmap.c
index f68f5f449..e2b76fa6f 100644
--- a/libX11/src/FreeCmap.c
+++ b/libX11/src/FreeCmap.c
@@ -1,52 +1,52 @@
-/*
-
-Copyright 1986, 1998 The Open Group
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall not be
-used in advertising or otherwise to promote the sale, use or other dealings
-in this Software without prior written authorization from The Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlib.h"
-#include "Xlibint.h"
-#include "Cmap.h"
-
-int
-XFreeColormap(
- register Display *dpy,
- Colormap cmap)
-{
- register xResourceReq *req;
-
- LockDisplay(dpy);
- GetResReq(FreeColormap, cmap, req);
-
- UnlockDisplay(dpy);
- SyncHandle();
-
-#ifdef XCMS
- _XcmsDeleteCmapRec(dpy, cmap);
-#endif
-
- return 1;
-}
+/*
+
+Copyright 1986, 1998 The Open Group
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group shall not be
+used in advertising or otherwise to promote the sale, use or other dealings
+in this Software without prior written authorization from The Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlib.h"
+#include "Xlibint.h"
+#include "Cmap.h"
+
+int
+XFreeColormap(
+ register Display *dpy,
+ Colormap cmap)
+{
+ register xResourceReq *req;
+
+ LockDisplay(dpy);
+ GetResReq(FreeColormap, cmap, req);
+
+ UnlockDisplay(dpy);
+ SyncHandle();
+
+#ifdef XCMS
+ _XcmsDeleteCmapRec(dpy, cmap);
+#endif
+
+ return 1;
+}
diff --git a/libX11/src/FreeCols.c b/libX11/src/FreeCols.c
index c8ce982ed..a8b7f8867 100644
--- a/libX11/src/FreeCols.c
+++ b/libX11/src/FreeCols.c
@@ -1,57 +1,57 @@
-/*
-
-Copyright 1986, 1998 The Open Group
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall not be
-used in advertising or otherwise to promote the sale, use or other dealings
-in this Software without prior written authorization from The Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-
-int
-XFreeColors(
- register Display *dpy,
- Colormap cmap,
- unsigned long *pixels, /* LISTofCARD32 */
- int npixels,
- unsigned long planes) /* CARD32 */
-{
- register xFreeColorsReq *req;
- register long nbytes;
-
- LockDisplay(dpy);
- GetReq(FreeColors, req);
- req->cmap = cmap;
- req->planeMask = planes;
-
- /* on the VAX, each pixel is a 32-bit (unsigned) integer */
- req->length += npixels;
-
- nbytes = npixels << 2; /* watch out for macros... */
- Data32 (dpy, (long *) pixels, nbytes);
- UnlockDisplay(dpy);
- SyncHandle();
- return 1;
-}
-
+/*
+
+Copyright 1986, 1998 The Open Group
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group shall not be
+used in advertising or otherwise to promote the sale, use or other dealings
+in this Software without prior written authorization from The Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+
+int
+XFreeColors(
+ register Display *dpy,
+ Colormap cmap,
+ unsigned long *pixels, /* LISTofCARD32 */
+ int npixels,
+ unsigned long planes) /* CARD32 */
+{
+ register xFreeColorsReq *req;
+ register long nbytes;
+
+ LockDisplay(dpy);
+ GetReq(FreeColors, req);
+ req->cmap = cmap;
+ req->planeMask = planes;
+
+ /* on the VAX, each pixel is a 32-bit (unsigned) integer */
+ req->length += npixels;
+
+ nbytes = npixels << 2; /* watch out for macros... */
+ Data32 (dpy, (long *) pixels, nbytes);
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return 1;
+}
+
diff --git a/libX11/src/FreeCurs.c b/libX11/src/FreeCurs.c
index c957456b0..89fb577cc 100644
--- a/libX11/src/FreeCurs.c
+++ b/libX11/src/FreeCurs.c
@@ -1,44 +1,44 @@
-/*
-
-Copyright 1986, 1998 The Open Group
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall not be
-used in advertising or otherwise to promote the sale, use or other dealings
-in this Software without prior written authorization from The Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-
-int
-XFreeCursor(
- register Display *dpy,
- Cursor cursor)
-{
- register xResourceReq *req;
- LockDisplay(dpy);
- GetResReq(FreeCursor, cursor, req);
- UnlockDisplay(dpy);
- SyncHandle();
- return 1;
-}
-
+/*
+
+Copyright 1986, 1998 The Open Group
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group shall not be
+used in advertising or otherwise to promote the sale, use or other dealings
+in this Software without prior written authorization from The Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+
+int
+XFreeCursor(
+ register Display *dpy,
+ Cursor cursor)
+{
+ register xResourceReq *req;
+ LockDisplay(dpy);
+ GetResReq(FreeCursor, cursor, req);
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return 1;
+}
+
diff --git a/libX11/src/FreeEData.c b/libX11/src/FreeEData.c
index d4d8acdb1..3a7abca74 100644
--- a/libX11/src/FreeEData.c
+++ b/libX11/src/FreeEData.c
@@ -1,45 +1,45 @@
-/*
-
-Copyright 1986, 1998 The Open Group
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall not be
-used in advertising or otherwise to promote the sale, use or other dealings
-in this Software without prior written authorization from The Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-
-int
-_XFreeExtData (XExtData *extension)
-{
- XExtData *temp;
- while (extension) {
- if (extension->free_private)
- (*extension->free_private)(extension);
- else Xfree ((char *)extension->private_data);
- temp = extension->next;
- Xfree ((char *)extension);
- extension = temp;
- }
- return 0;
-}
+/*
+
+Copyright 1986, 1998 The Open Group
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group shall not be
+used in advertising or otherwise to promote the sale, use or other dealings
+in this Software without prior written authorization from The Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+
+int
+_XFreeExtData (XExtData *extension)
+{
+ XExtData *temp;
+ while (extension) {
+ if (extension->free_private)
+ (*extension->free_private)(extension);
+ else Xfree ((char *)extension->private_data);
+ temp = extension->next;
+ Xfree ((char *)extension);
+ extension = temp;
+ }
+ return 0;
+}
diff --git a/libX11/src/FreeEventData.c b/libX11/src/FreeEventData.c
index ddf6c71b6..e2d40b0db 100644
--- a/libX11/src/FreeEventData.c
+++ b/libX11/src/FreeEventData.c
@@ -1,42 +1,42 @@
-/*
- * Copyright © 2009 Red Hat, Inc.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice (including the next
- * paragraph) shall be included in all copies or substantial portions of the
- * Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
- * DEALINGS IN THE SOFTWARE.
- *
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-
-void
-XFreeEventData(Display *dpy, XGenericEventCookie *event)
-{
-
- if (_XIsEventCookie(dpy, (XEvent*)event) && event->data)
- {
- XFree(event->data);
- event->data = NULL;
- event->cookie = 0;
- }
- return;
-}
-
+/*
+ * Copyright © 2009 Red Hat, Inc.
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice (including the next
+ * paragraph) shall be included in all copies or substantial portions of the
+ * Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+ * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+ * DEALINGS IN THE SOFTWARE.
+ *
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+
+void
+XFreeEventData(Display *dpy, XGenericEventCookie *event)
+{
+
+ if (_XIsEventCookie(dpy, (XEvent*)event) && event->data)
+ {
+ XFree(event->data);
+ event->data = NULL;
+ event->cookie = 0;
+ }
+ return;
+}
+
diff --git a/libX11/src/FreeGC.c b/libX11/src/FreeGC.c
index af902b552..ab994bc64 100644
--- a/libX11/src/FreeGC.c
+++ b/libX11/src/FreeGC.c
@@ -1,50 +1,50 @@
-/*
-
-Copyright 1986, 1998 The Open Group
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall not be
-used in advertising or otherwise to promote the sale, use or other dealings
-in this Software without prior written authorization from The Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-
-int
-XFreeGC (
- register Display *dpy,
- GC gc)
- {
- register xResourceReq *req;
- register _XExtension *ext;
- LockDisplay(dpy);
- /* call out to any extensions interested */
- for (ext = dpy->ext_procs; ext; ext = ext->next)
- if (ext->free_GC) (*ext->free_GC)(dpy, gc, &ext->codes);
- GetResReq (FreeGC, gc->gid, req);
- UnlockDisplay(dpy);
- SyncHandle();
- _XFreeExtData(gc->ext_data);
- Xfree ((char *) gc);
- return 1;
- }
-
+/*
+
+Copyright 1986, 1998 The Open Group
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group shall not be
+used in advertising or otherwise to promote the sale, use or other dealings
+in this Software without prior written authorization from The Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+
+int
+XFreeGC (
+ register Display *dpy,
+ GC gc)
+ {
+ register xResourceReq *req;
+ register _XExtension *ext;
+ LockDisplay(dpy);
+ /* call out to any extensions interested */
+ for (ext = dpy->ext_procs; ext; ext = ext->next)
+ if (ext->free_GC) (*ext->free_GC)(dpy, gc, &ext->codes);
+ GetResReq (FreeGC, gc->gid, req);
+ UnlockDisplay(dpy);
+ SyncHandle();
+ _XFreeExtData(gc->ext_data);
+ Xfree ((char *) gc);
+ return 1;
+ }
+
diff --git a/libX11/src/FreePix.c b/libX11/src/FreePix.c
index e16c162e5..21367978e 100644
--- a/libX11/src/FreePix.c
+++ b/libX11/src/FreePix.c
@@ -1,44 +1,44 @@
-/*
-
-Copyright 1986, 1998 The Open Group
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall not be
-used in advertising or otherwise to promote the sale, use or other dealings
-in this Software without prior written authorization from The Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-
-int
-XFreePixmap(
- register Display *dpy,
- Pixmap pixmap)
-{
- register xResourceReq *req;
- LockDisplay(dpy);
- GetResReq(FreePixmap, pixmap, req);
- UnlockDisplay(dpy);
- SyncHandle();
- return 1;
-}
-
+/*
+
+Copyright 1986, 1998 The Open Group
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group shall not be
+used in advertising or otherwise to promote the sale, use or other dealings
+in this Software without prior written authorization from The Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+
+int
+XFreePixmap(
+ register Display *dpy,
+ Pixmap pixmap)
+{
+ register xResourceReq *req;
+ LockDisplay(dpy);
+ GetResReq(FreePixmap, pixmap, req);
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return 1;
+}
+
diff --git a/libX11/src/GCMisc.c b/libX11/src/GCMisc.c
index 26f894817..751e27dca 100644
--- a/libX11/src/GCMisc.c
+++ b/libX11/src/GCMisc.c
@@ -1,110 +1,110 @@
-/*
-
-Copyright 1986, 1998 The Open Group
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall not be
-used in advertising or otherwise to promote the sale, use or other dealings
-in this Software without prior written authorization from The Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-
-int
-XSetArcMode (
- register Display *dpy,
- register GC gc,
- int arc_mode)
-{
- LockDisplay(dpy);
- if (gc->values.arc_mode != arc_mode) {
- gc->values.arc_mode = arc_mode;
- gc->dirty |= GCArcMode;
- }
- UnlockDisplay(dpy);
- SyncHandle();
- return 1;
-}
-
-int
-XSetFillRule (
- register Display *dpy,
- register GC gc,
- int fill_rule)
-{
- LockDisplay(dpy);
- if (gc->values.fill_rule != fill_rule) {
- gc->values.fill_rule = fill_rule;
- gc->dirty |= GCFillRule;
- }
- UnlockDisplay(dpy);
- SyncHandle();
- return 1;
-}
-
-int
-XSetFillStyle (
- register Display *dpy,
- register GC gc,
- int fill_style)
-{
- LockDisplay(dpy);
- if (gc->values.fill_style != fill_style) {
- gc->values.fill_style = fill_style;
- gc->dirty |= GCFillStyle;
- }
- UnlockDisplay(dpy);
- SyncHandle();
- return 1;
-}
-
-int
-XSetGraphicsExposures (
- register Display *dpy,
- register GC gc,
- Bool graphics_exposures)
-{
- LockDisplay(dpy);
- if (gc->values.graphics_exposures != graphics_exposures) {
- gc->values.graphics_exposures = graphics_exposures;
- gc->dirty |= GCGraphicsExposures;
- }
- UnlockDisplay(dpy);
- SyncHandle();
- return 1;
-}
-
-int
-XSetSubwindowMode (
- register Display *dpy,
- register GC gc,
- int subwindow_mode)
-{
- LockDisplay(dpy);
- if (gc->values.subwindow_mode != subwindow_mode) {
- gc->values.subwindow_mode = subwindow_mode;
- gc->dirty |= GCSubwindowMode;
- }
- UnlockDisplay(dpy);
- SyncHandle();
- return 1;
-}
+/*
+
+Copyright 1986, 1998 The Open Group
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group shall not be
+used in advertising or otherwise to promote the sale, use or other dealings
+in this Software without prior written authorization from The Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+
+int
+XSetArcMode (
+ register Display *dpy,
+ register GC gc,
+ int arc_mode)
+{
+ LockDisplay(dpy);
+ if (gc->values.arc_mode != arc_mode) {
+ gc->values.arc_mode = arc_mode;
+ gc->dirty |= GCArcMode;
+ }
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return 1;
+}
+
+int
+XSetFillRule (
+ register Display *dpy,
+ register GC gc,
+ int fill_rule)
+{
+ LockDisplay(dpy);
+ if (gc->values.fill_rule != fill_rule) {
+ gc->values.fill_rule = fill_rule;
+ gc->dirty |= GCFillRule;
+ }
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return 1;
+}
+
+int
+XSetFillStyle (
+ register Display *dpy,
+ register GC gc,
+ int fill_style)
+{
+ LockDisplay(dpy);
+ if (gc->values.fill_style != fill_style) {
+ gc->values.fill_style = fill_style;
+ gc->dirty |= GCFillStyle;
+ }
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return 1;
+}
+
+int
+XSetGraphicsExposures (
+ register Display *dpy,
+ register GC gc,
+ Bool graphics_exposures)
+{
+ LockDisplay(dpy);
+ if (gc->values.graphics_exposures != graphics_exposures) {
+ gc->values.graphics_exposures = graphics_exposures;
+ gc->dirty |= GCGraphicsExposures;
+ }
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return 1;
+}
+
+int
+XSetSubwindowMode (
+ register Display *dpy,
+ register GC gc,
+ int subwindow_mode)
+{
+ LockDisplay(dpy);
+ if (gc->values.subwindow_mode != subwindow_mode) {
+ gc->values.subwindow_mode = subwindow_mode;
+ gc->dirty |= GCSubwindowMode;
+ }
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return 1;
+}
diff --git a/libX11/src/Geom.c b/libX11/src/Geom.c
index 2313eebe0..1da74f1c3 100644
--- a/libX11/src/Geom.c
+++ b/libX11/src/Geom.c
@@ -1,89 +1,89 @@
-
-/*
-
-Copyright 1985, 1998 The Open Group
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
-
-The above copyright notice and this permission notice shall be included
-in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
-IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR
-OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
-ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall
-not be used in advertising or otherwise to promote the sale, use or
-other dealings in this Software without prior written authorization
-from The Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-#include "Xutil.h"
-
-/*
- * This routine given a user supplied positional argument and a default
- * argument (fully qualified) will return the position the window should take
- * returns 0 if there was some problem, else the position bitmask.
- */
-
-int
-XGeometry (
- Display *dpy, /* user's display connection */
- int screen, /* screen on which to do computation */
- _Xconst char *pos, /* user provided geometry spec */
- _Xconst char *def, /* default geometry spec for window */
- unsigned int bwidth, /* border width */
- unsigned int fwidth, /* size of position units */
- unsigned int fheight,
- int xadd, /* any additional interior space */
- int yadd,
- register int *x, /* always set on successful RETURN */
- register int *y, /* always set on successful RETURN */
- register int *width, /* always set on successful RETURN */
- register int *height) /* always set on successful RETURN */
-{
- int px, py; /* returned values from parse */
- unsigned int pwidth, pheight; /* returned values from parse */
- int dx, dy; /* default values from parse */
- unsigned int dwidth, dheight; /* default values from parse */
- int pmask, dmask; /* values back from parse */
-
- pmask = XParseGeometry(pos, &px, &py, &pwidth, &pheight);
- dmask = XParseGeometry(def, &dx, &dy, &dwidth, &dheight);
-
- /* set default values */
- *x = (dmask & XNegative) ?
- DisplayWidth(dpy, screen) + dx - dwidth * fwidth -
- 2 * bwidth - xadd : dx;
- *y = (dmask & YNegative) ?
- DisplayHeight(dpy, screen) + dy - dheight * fheight -
- 2 * bwidth - yadd : dy;
- *width = dwidth;
- *height = dheight;
-
- if (pmask & WidthValue) *width = pwidth;
- if (pmask & HeightValue) *height = pheight;
-
- if (pmask & XValue)
- *x = (pmask & XNegative) ?
- DisplayWidth(dpy, screen) + px - *width * fwidth -
- 2 * bwidth - xadd : px;
- if (pmask & YValue)
- *y = (pmask & YNegative) ?
- DisplayHeight(dpy, screen) + py - *height * fheight -
- 2 * bwidth - yadd : py;
- return (pmask);
-}
+
+/*
+
+Copyright 1985, 1998 The Open Group
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
+
+The above copyright notice and this permission notice shall be included
+in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR
+OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
+ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group shall
+not be used in advertising or otherwise to promote the sale, use or
+other dealings in this Software without prior written authorization
+from The Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+#include "Xutil.h"
+
+/*
+ * This routine given a user supplied positional argument and a default
+ * argument (fully qualified) will return the position the window should take
+ * returns 0 if there was some problem, else the position bitmask.
+ */
+
+int
+XGeometry (
+ Display *dpy, /* user's display connection */
+ int screen, /* screen on which to do computation */
+ _Xconst char *pos, /* user provided geometry spec */
+ _Xconst char *def, /* default geometry spec for window */
+ unsigned int bwidth, /* border width */
+ unsigned int fwidth, /* size of position units */
+ unsigned int fheight,
+ int xadd, /* any additional interior space */
+ int yadd,
+ register int *x, /* always set on successful RETURN */
+ register int *y, /* always set on successful RETURN */
+ register int *width, /* always set on successful RETURN */
+ register int *height) /* always set on successful RETURN */
+{
+ int px, py; /* returned values from parse */
+ unsigned int pwidth, pheight; /* returned values from parse */
+ int dx, dy; /* default values from parse */
+ unsigned int dwidth, dheight; /* default values from parse */
+ int pmask, dmask; /* values back from parse */
+
+ pmask = XParseGeometry(pos, &px, &py, &pwidth, &pheight);
+ dmask = XParseGeometry(def, &dx, &dy, &dwidth, &dheight);
+
+ /* set default values */
+ *x = (dmask & XNegative) ?
+ DisplayWidth(dpy, screen) + dx - dwidth * fwidth -
+ 2 * bwidth - xadd : dx;
+ *y = (dmask & YNegative) ?
+ DisplayHeight(dpy, screen) + dy - dheight * fheight -
+ 2 * bwidth - yadd : dy;
+ *width = dwidth;
+ *height = dheight;
+
+ if (pmask & WidthValue) *width = pwidth;
+ if (pmask & HeightValue) *height = pheight;
+
+ if (pmask & XValue)
+ *x = (pmask & XNegative) ?
+ DisplayWidth(dpy, screen) + px - *width * fwidth -
+ 2 * bwidth - xadd : px;
+ if (pmask & YValue)
+ *y = (pmask & YNegative) ?
+ DisplayHeight(dpy, screen) + py - *height * fheight -
+ 2 * bwidth - yadd : py;
+ return (pmask);
+}
diff --git a/libX11/src/GetAtomNm.c b/libX11/src/GetAtomNm.c
index a2d6b183d..9823c690c 100644
--- a/libX11/src/GetAtomNm.c
+++ b/libX11/src/GetAtomNm.c
@@ -1,189 +1,189 @@
-/*
-
-Copyright 1986, 1998 The Open Group
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall not be
-used in advertising or otherwise to promote the sale, use or other dealings
-in this Software without prior written authorization from The Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-#include "Xintatom.h"
-
-static
-char *_XGetAtomName(
- Display *dpy,
- Atom atom)
-{
- xResourceReq *req;
- char *name;
- register Entry *table;
- register int idx;
- register Entry e;
-
- if (dpy->atoms) {
- table = dpy->atoms->table;
- for (idx = TABLESIZE; --idx >= 0; ) {
- if ((e = *table++) && (e->atom == atom)) {
- idx = strlen(EntryName(e)) + 1;
- if ((name = (char *)Xmalloc(idx)))
- strcpy(name, EntryName(e));
- return name;
- }
- }
- }
- GetResReq(GetAtomName, atom, req);
- return (char *)NULL;
-}
-
-char *XGetAtomName(
- register Display *dpy,
- Atom atom)
-{
- xGetAtomNameReply rep;
- char *name;
-
- LockDisplay(dpy);
- if ((name = _XGetAtomName(dpy, atom))) {
- UnlockDisplay(dpy);
- return name;
- }
- if (_XReply(dpy, (xReply *)&rep, 0, xFalse) == 0) {
- UnlockDisplay(dpy);
- SyncHandle();
- return(NULL);
- }
- if ((name = (char *) Xmalloc(rep.nameLength+1))) {
- _XReadPad(dpy, name, (long)rep.nameLength);
- name[rep.nameLength] = '\0';
- _XUpdateAtomCache(dpy, name, atom, 0, -1, 0);
- } else {
- _XEatData(dpy, (unsigned long) (rep.nameLength + 3) & ~3);
- name = (char *) NULL;
- }
- UnlockDisplay(dpy);
- SyncHandle();
- return(name);
-}
-
-typedef struct {
- unsigned long start_seq;
- unsigned long stop_seq;
- Atom *atoms;
- char **names;
- int idx;
- int count;
- Status status;
-} _XGetAtomNameState;
-
-static
-Bool _XGetAtomNameHandler(
- register Display *dpy,
- register xReply *rep,
- char *buf,
- int len,
- XPointer data)
-{
- register _XGetAtomNameState *state;
- xGetAtomNameReply replbuf;
- register xGetAtomNameReply *repl;
-
- state = (_XGetAtomNameState *)data;
- if (dpy->last_request_read < state->start_seq ||
- dpy->last_request_read > state->stop_seq)
- return False;
- while (state->idx < state->count && state->names[state->idx])
- state->idx++;
- if (state->idx >= state->count)
- return False;
- if (rep->generic.type == X_Error) {
- state->status = 0;
- return False;
- }
- repl = (xGetAtomNameReply *)
- _XGetAsyncReply(dpy, (char *)&replbuf, rep, buf, len,
- (SIZEOF(xGetAtomNameReply) - SIZEOF(xReply)) >> 2,
- False);
- state->names[state->idx] = (char *) Xmalloc(repl->nameLength+1);
- _XGetAsyncData(dpy, state->names[state->idx], buf, len,
- SIZEOF(xGetAtomNameReply), repl->nameLength,
- repl->length << 2);
- if (state->names[state->idx]) {
- state->names[state->idx][repl->nameLength] = '\0';
- _XUpdateAtomCache(dpy, state->names[state->idx],
- state->atoms[state->idx], 0, -1, 0);
- } else {
- state->status = 0;
- }
- return True;
-}
-
-Status
-XGetAtomNames (
- Display *dpy,
- Atom *atoms,
- int count,
- char **names_return)
-{
- _XAsyncHandler async;
- _XGetAtomNameState async_state;
- xGetAtomNameReply rep;
- int i;
- int missed = -1;
-
- LockDisplay(dpy);
- async_state.start_seq = dpy->request + 1;
- async_state.atoms = atoms;
- async_state.names = names_return;
- async_state.idx = 0;
- async_state.count = count - 1;
- async_state.status = 1;
- async.next = dpy->async_handlers;
- async.handler = _XGetAtomNameHandler;
- async.data = (XPointer)&async_state;
- dpy->async_handlers = &async;
- for (i = 0; i < count; i++) {
- if (!(names_return[i] = _XGetAtomName(dpy, atoms[i]))) {
- missed = i;
- async_state.stop_seq = dpy->request;
- }
- }
- if (missed >= 0) {
- if (_XReply(dpy, (xReply *)&rep, 0, xFalse)) {
- if ((names_return[missed] = (char *) Xmalloc(rep.nameLength+1))) {
- _XReadPad(dpy, names_return[missed], (long)rep.nameLength);
- names_return[missed][rep.nameLength] = '\0';
- _XUpdateAtomCache(dpy, names_return[missed], atoms[missed],
- 0, -1, 0);
- } else {
- _XEatData(dpy, (unsigned long) (rep.nameLength + 3) & ~3);
- async_state.status = 0;
- }
- }
- }
- DeqAsyncHandler(dpy, &async);
- UnlockDisplay(dpy);
- if (missed >= 0)
- SyncHandle();
- return async_state.status;
-}
+/*
+
+Copyright 1986, 1998 The Open Group
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group shall not be
+used in advertising or otherwise to promote the sale, use or other dealings
+in this Software without prior written authorization from The Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+#include "Xintatom.h"
+
+static
+char *_XGetAtomName(
+ Display *dpy,
+ Atom atom)
+{
+ xResourceReq *req;
+ char *name;
+ register Entry *table;
+ register int idx;
+ register Entry e;
+
+ if (dpy->atoms) {
+ table = dpy->atoms->table;
+ for (idx = TABLESIZE; --idx >= 0; ) {
+ if ((e = *table++) && (e->atom == atom)) {
+ idx = strlen(EntryName(e)) + 1;
+ if ((name = (char *)Xmalloc(idx)))
+ strcpy(name, EntryName(e));
+ return name;
+ }
+ }
+ }
+ GetResReq(GetAtomName, atom, req);
+ return (char *)NULL;
+}
+
+char *XGetAtomName(
+ register Display *dpy,
+ Atom atom)
+{
+ xGetAtomNameReply rep;
+ char *name;
+
+ LockDisplay(dpy);
+ if ((name = _XGetAtomName(dpy, atom))) {
+ UnlockDisplay(dpy);
+ return name;
+ }
+ if (_XReply(dpy, (xReply *)&rep, 0, xFalse) == 0) {
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return(NULL);
+ }
+ if ((name = (char *) Xmalloc(rep.nameLength+1))) {
+ _XReadPad(dpy, name, (long)rep.nameLength);
+ name[rep.nameLength] = '\0';
+ _XUpdateAtomCache(dpy, name, atom, 0, -1, 0);
+ } else {
+ _XEatData(dpy, (unsigned long) (rep.nameLength + 3) & ~3);
+ name = (char *) NULL;
+ }
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return(name);
+}
+
+typedef struct {
+ unsigned long start_seq;
+ unsigned long stop_seq;
+ Atom *atoms;
+ char **names;
+ int idx;
+ int count;
+ Status status;
+} _XGetAtomNameState;
+
+static
+Bool _XGetAtomNameHandler(
+ register Display *dpy,
+ register xReply *rep,
+ char *buf,
+ int len,
+ XPointer data)
+{
+ register _XGetAtomNameState *state;
+ xGetAtomNameReply replbuf;
+ register xGetAtomNameReply *repl;
+
+ state = (_XGetAtomNameState *)data;
+ if (dpy->last_request_read < state->start_seq ||
+ dpy->last_request_read > state->stop_seq)
+ return False;
+ while (state->idx < state->count && state->names[state->idx])
+ state->idx++;
+ if (state->idx >= state->count)
+ return False;
+ if (rep->generic.type == X_Error) {
+ state->status = 0;
+ return False;
+ }
+ repl = (xGetAtomNameReply *)
+ _XGetAsyncReply(dpy, (char *)&replbuf, rep, buf, len,
+ (SIZEOF(xGetAtomNameReply) - SIZEOF(xReply)) >> 2,
+ False);
+ state->names[state->idx] = (char *) Xmalloc(repl->nameLength+1);
+ _XGetAsyncData(dpy, state->names[state->idx], buf, len,
+ SIZEOF(xGetAtomNameReply), repl->nameLength,
+ repl->length << 2);
+ if (state->names[state->idx]) {
+ state->names[state->idx][repl->nameLength] = '\0';
+ _XUpdateAtomCache(dpy, state->names[state->idx],
+ state->atoms[state->idx], 0, -1, 0);
+ } else {
+ state->status = 0;
+ }
+ return True;
+}
+
+Status
+XGetAtomNames (
+ Display *dpy,
+ Atom *atoms,
+ int count,
+ char **names_return)
+{
+ _XAsyncHandler async;
+ _XGetAtomNameState async_state;
+ xGetAtomNameReply rep;
+ int i;
+ int missed = -1;
+
+ LockDisplay(dpy);
+ async_state.start_seq = dpy->request + 1;
+ async_state.atoms = atoms;
+ async_state.names = names_return;
+ async_state.idx = 0;
+ async_state.count = count - 1;
+ async_state.status = 1;
+ async.next = dpy->async_handlers;
+ async.handler = _XGetAtomNameHandler;
+ async.data = (XPointer)&async_state;
+ dpy->async_handlers = &async;
+ for (i = 0; i < count; i++) {
+ if (!(names_return[i] = _XGetAtomName(dpy, atoms[i]))) {
+ missed = i;
+ async_state.stop_seq = dpy->request;
+ }
+ }
+ if (missed >= 0) {
+ if (_XReply(dpy, (xReply *)&rep, 0, xFalse)) {
+ if ((names_return[missed] = (char *) Xmalloc(rep.nameLength+1))) {
+ _XReadPad(dpy, names_return[missed], (long)rep.nameLength);
+ names_return[missed][rep.nameLength] = '\0';
+ _XUpdateAtomCache(dpy, names_return[missed], atoms[missed],
+ 0, -1, 0);
+ } else {
+ _XEatData(dpy, (unsigned long) (rep.nameLength + 3) & ~3);
+ async_state.status = 0;
+ }
+ }
+ }
+ DeqAsyncHandler(dpy, &async);
+ UnlockDisplay(dpy);
+ if (missed >= 0)
+ SyncHandle();
+ return async_state.status;
+}
diff --git a/libX11/src/GetColor.c b/libX11/src/GetColor.c
index fc5de7c9b..cd0eb9f63 100644
--- a/libX11/src/GetColor.c
+++ b/libX11/src/GetColor.c
@@ -1,111 +1,111 @@
-/*
-
-Copyright 1986, 1998 The Open Group
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall not be
-used in advertising or otherwise to promote the sale, use or other dealings
-in this Software without prior written authorization from The Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include <stdio.h>
-#include "Xlibint.h"
-#include "Xcmsint.h"
-
-Status
-XAllocNamedColor(
-register Display *dpy,
-Colormap cmap,
-_Xconst char *colorname, /* STRING8 */
-XColor *hard_def, /* RETURN */
-XColor *exact_def) /* RETURN */
-{
-
- long nbytes;
- xAllocNamedColorReply rep;
- xAllocNamedColorReq *req;
-
- XcmsCCC ccc;
- XcmsColor cmsColor_exact;
- Status ret;
-
-#ifdef XCMS
- /*
- * Let's Attempt to use Xcms and i18n approach to Parse Color
- */
- if ((ccc = XcmsCCCOfColormap(dpy, cmap)) != (XcmsCCC)NULL) {
- const char *tmpName = colorname;
-
- switch (_XcmsResolveColorString(ccc, &tmpName, &cmsColor_exact,
- XcmsRGBFormat)) {
- case XcmsSuccess:
- case XcmsSuccessWithCompression:
- _XcmsRGB_to_XColor(&cmsColor_exact, exact_def, 1);
- memcpy((char *)hard_def, (char *)exact_def, sizeof(XColor));
- ret = XAllocColor(dpy, cmap, hard_def);
- exact_def->pixel = hard_def->pixel;
- return(ret);
- case XcmsFailure:
- case _XCMS_NEWNAME:
- /*
- * if the result was _XCMS_NEWNAME tmpName points to
- * a string in cmsColNm.c:pairs table, for example,
- * gray70 would become tekhvc:0.0/70.0/0.0
- */
- break;
- }
- }
-#endif
-
- /*
- * Xcms and i18n approach failed.
- */
- LockDisplay(dpy);
- GetReq(AllocNamedColor, req);
-
- req->cmap = cmap;
- nbytes = req->nbytes = strlen(colorname);
- req->length += (nbytes + 3) >> 2; /* round up to mult of 4 */
-
- _XSend(dpy, colorname, nbytes);
- /* _XSend is more efficient that Data, since _XReply follows */
-
- if (!_XReply (dpy, (xReply *) &rep, 0, xTrue)) {
- UnlockDisplay(dpy);
- SyncHandle();
- return (0);
- }
-
- exact_def->red = rep.exactRed;
- exact_def->green = rep.exactGreen;
- exact_def->blue = rep.exactBlue;
-
- hard_def->red = rep.screenRed;
- hard_def->green = rep.screenGreen;
- hard_def->blue = rep.screenBlue;
-
- exact_def->pixel = hard_def->pixel = rep.pixel;
-
- UnlockDisplay(dpy);
- SyncHandle();
- return (1);
-}
+/*
+
+Copyright 1986, 1998 The Open Group
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group shall not be
+used in advertising or otherwise to promote the sale, use or other dealings
+in this Software without prior written authorization from The Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include <stdio.h>
+#include "Xlibint.h"
+#include "Xcmsint.h"
+
+Status
+XAllocNamedColor(
+register Display *dpy,
+Colormap cmap,
+_Xconst char *colorname, /* STRING8 */
+XColor *hard_def, /* RETURN */
+XColor *exact_def) /* RETURN */
+{
+
+ long nbytes;
+ xAllocNamedColorReply rep;
+ xAllocNamedColorReq *req;
+
+ XcmsCCC ccc;
+ XcmsColor cmsColor_exact;
+ Status ret;
+
+#ifdef XCMS
+ /*
+ * Let's Attempt to use Xcms and i18n approach to Parse Color
+ */
+ if ((ccc = XcmsCCCOfColormap(dpy, cmap)) != (XcmsCCC)NULL) {
+ const char *tmpName = colorname;
+
+ switch (_XcmsResolveColorString(ccc, &tmpName, &cmsColor_exact,
+ XcmsRGBFormat)) {
+ case XcmsSuccess:
+ case XcmsSuccessWithCompression:
+ _XcmsRGB_to_XColor(&cmsColor_exact, exact_def, 1);
+ memcpy((char *)hard_def, (char *)exact_def, sizeof(XColor));
+ ret = XAllocColor(dpy, cmap, hard_def);
+ exact_def->pixel = hard_def->pixel;
+ return(ret);
+ case XcmsFailure:
+ case _XCMS_NEWNAME:
+ /*
+ * if the result was _XCMS_NEWNAME tmpName points to
+ * a string in cmsColNm.c:pairs table, for example,
+ * gray70 would become tekhvc:0.0/70.0/0.0
+ */
+ break;
+ }
+ }
+#endif
+
+ /*
+ * Xcms and i18n approach failed.
+ */
+ LockDisplay(dpy);
+ GetReq(AllocNamedColor, req);
+
+ req->cmap = cmap;
+ nbytes = req->nbytes = strlen(colorname);
+ req->length += (nbytes + 3) >> 2; /* round up to mult of 4 */
+
+ _XSend(dpy, colorname, nbytes);
+ /* _XSend is more efficient that Data, since _XReply follows */
+
+ if (!_XReply (dpy, (xReply *) &rep, 0, xTrue)) {
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return (0);
+ }
+
+ exact_def->red = rep.exactRed;
+ exact_def->green = rep.exactGreen;
+ exact_def->blue = rep.exactBlue;
+
+ hard_def->red = rep.screenRed;
+ hard_def->green = rep.screenGreen;
+ hard_def->blue = rep.screenBlue;
+
+ exact_def->pixel = hard_def->pixel = rep.pixel;
+
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return (1);
+}
diff --git a/libX11/src/GetDflt.c b/libX11/src/GetDflt.c
index 584f32c54..0443e2d1a 100644
--- a/libX11/src/GetDflt.c
+++ b/libX11/src/GetDflt.c
@@ -1,265 +1,265 @@
-
-/***********************************************************
-
-Copyright 1987, 1988, 1998 The Open Group
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall not be
-used in advertising or otherwise to promote the sale, use or other dealings
-in this Software without prior written authorization from The Open Group.
-
-
-Copyright 1987, 1988 by Digital Equipment Corporation, Maynard, Massachusetts.
-
- All Rights Reserved
-
-Permission to use, copy, modify, and distribute this software and its
-documentation for any purpose and without fee is hereby granted,
-provided that the above copyright notice appear in all copies and that
-both that copyright notice and this permission notice appear in
-supporting documentation, and that the name of Digital not be
-used in advertising or publicity pertaining to distribution of the
-software without specific, written prior permission.
-
-DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
-ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
-DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
-ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
-WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
-ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
-SOFTWARE.
-
-******************************************************************/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-#include <X11/Xos.h>
-#include <X11/Xresource.h>
-
-#ifndef X_NOT_POSIX
-#ifdef _POSIX_SOURCE
-#include <limits.h>
-#else
-#define _POSIX_SOURCE
-#include <limits.h>
-#undef _POSIX_SOURCE
-#endif
-#endif
-#ifndef PATH_MAX
-#ifdef WIN32
-#define PATH_MAX 512
-#else
-#include <sys/param.h>
-#endif
-#ifndef PATH_MAX
-#ifdef MAXPATHLEN
-#define PATH_MAX MAXPATHLEN
-#else
-#define PATH_MAX 1024
-#endif
-#endif
-#endif
-
-#ifdef XTHREADS
-#include <X11/Xthreads.h>
-#endif
-#ifndef WIN32
-#define X_INCLUDE_PWD_H
-#define XOS_USE_XLIB_LOCKING
-#include <X11/Xos_r.h>
-#endif
-#include <stdio.h>
-#include <ctype.h>
-
-
-/*ARGSUSED*/
-static char *
-GetHomeDir(
- char *dest,
- int len)
-{
-#ifdef WIN32
- register char *ptr1 = NULL;
- register char *ptr2 = NULL;
- int len1 = 0, len2 = 0;
-
- if ((ptr1 = getenv("HOME"))) { /* old, deprecated */
- len1 = strlen (ptr1);
- } else if ((ptr1 = getenv("HOMEDRIVE")) && (ptr2 = getenv("HOMEDIR"))) {
- len1 = strlen (ptr1);
- len2 = strlen (ptr2);
- } else if ((ptr2 = getenv("USERNAME"))) {
- len1 = strlen (ptr1 = "/users/");
- len2 = strlen (ptr2);
- }
- if ((len1 + len2 + 1) < len)
- sprintf (dest, "%s%s", ptr1, (ptr2) ? ptr2 : "");
- else
- *dest = '\0';
-#else
-#ifdef X_NEEDS_PWPARAMS
- _Xgetpwparams pwparams;
-#endif
- struct passwd *pw;
- register char *ptr;
-
- if (len <= 0 || dest == NULL)
- return NULL;
-
- if ((ptr = getenv("HOME"))) {
- (void) strncpy(dest, ptr, len-1);
- dest[len-1] = '\0';
- } else {
- if ((ptr = getenv("USER")))
- pw = _XGetpwnam(ptr,pwparams);
- else
- pw = _XGetpwuid(getuid(),pwparams);
- if (pw != NULL) {
- (void) strncpy(dest, pw->pw_dir, len-1);
- dest[len-1] = '\0';
- } else
- *dest = '\0';
- }
-#endif
- return dest;
-}
-
-
-static XrmDatabase
-InitDefaults(
- Display *dpy) /* display for defaults.... */
-{
- XrmDatabase userdb;
- XrmDatabase xdb;
- char fname[PATH_MAX]; /* longer than any conceivable size */
- char *xenv;
-
- XrmInitialize();
-
- /*
- * See lib/Xt/Initialize.c
- *
- * First, get the defaults from the server; if none, then load from
- * ~/.Xdefaults. Next, if there is an XENVIRONMENT environment variable,
- * then load that file.
- */
-
- if (dpy->xdefaults == NULL) {
- #ifdef _MSC_VER
- const char *slashDotXdefaults = ".Xdefaults";
- #else
- const char *slashDotXdefaults = "/.Xdefaults";
- #endif
-
- (void) GetHomeDir (fname, PATH_MAX - strlen (slashDotXdefaults) - 1);
- (void) strcat (fname, slashDotXdefaults);
- xdb = XrmGetFileDatabase (fname);
- } else {
- xdb = XrmGetStringDatabase(dpy->xdefaults);
- }
-
- if (!(xenv = getenv ("XENVIRONMENT"))) {
- #ifdef _MSC_VER
- const char *slashDotXdefaultsDash = ".Xdefaults-";
- #else
- const char *slashDotXdefaultsDash = "/.Xdefaults-";
- #endif
- int len;
-
- (void) GetHomeDir (fname, PATH_MAX - strlen (slashDotXdefaultsDash) - 1);
- (void) strcat (fname, slashDotXdefaultsDash);
- len = strlen (fname);
- (void) _XGetHostname (fname+len, PATH_MAX-len);
- xenv = fname;
- }
- userdb = XrmGetFileDatabase (xenv);
- XrmMergeDatabases (userdb, &xdb);
- return (xdb);
-
-#ifdef old
- if (fname[0] != '\0') userdb = XrmGetFileDatabase(fname);
- xdb = XrmGetStringDatabase(dpy->xdefaults);
- XrmMergeDatabases(userdb, &xdb);
- return xdb;
-#endif
-}
-
-char *
-XGetDefault(
- Display *dpy, /* display for defaults.... */
- char _Xconst *prog, /* name of program for option */
- register _Xconst char *name) /* name of option program wants */
-{ /* to get, for example, "font" */
- XrmName names[3];
- XrmClass classes[3];
- XrmRepresentation fromType;
- XrmValue result;
- char *progname;
-#ifdef WIN32
- char *progname2;
-#endif
-#ifdef __UNIXOS2__
- char *progname2;
- char *dotpos;
-#endif
-
- /*
- * strip path off of program name (XXX - this is OS specific)
- */
- progname = strrchr (prog, '/');
-#ifdef WIN32
- progname2 = strrchr (prog, '\\');
- if (progname2 && (!progname || progname < progname2))
- progname = progname2;
-#endif
-#ifdef __UNIXOS2__ /* Very similar to WIN32 */
- progname2 = strrchr (prog, '\\');
- if (progname2 && (!progname || progname < progname2))
- progname = progname2;
- dotpos = strrchr (prog, '.');
- if (dotpos && (dotpos>progname2)) *dotpos='\0';
-#endif /* We take out the .exe suffix */
-
- if (progname)
- progname++;
- else
- progname = (char *)prog;
-
- /*
- * see if database has ever been initialized. Lookups can be done
- * without locks held.
- */
- LockDisplay(dpy);
- if (dpy->db == NULL) {
- dpy->db = InitDefaults(dpy);
- dpy->flags |= XlibDisplayDfltRMDB;
- }
- UnlockDisplay(dpy);
-
- names[0] = XrmStringToName(progname);
- names[1] = XrmStringToName(name);
- names[2] = NULLQUARK;
- classes[0] = XrmStringToClass("Program");
- classes[1] = XrmStringToClass("Name");
- classes[2] = NULLQUARK;
- (void)XrmQGetResource(dpy->db, names, classes, &fromType, &result);
- return (result.addr);
-}
-
+
+/***********************************************************
+
+Copyright 1987, 1988, 1998 The Open Group
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group shall not be
+used in advertising or otherwise to promote the sale, use or other dealings
+in this Software without prior written authorization from The Open Group.
+
+
+Copyright 1987, 1988 by Digital Equipment Corporation, Maynard, Massachusetts.
+
+ All Rights Reserved
+
+Permission to use, copy, modify, and distribute this software and its
+documentation for any purpose and without fee is hereby granted,
+provided that the above copyright notice appear in all copies and that
+both that copyright notice and this permission notice appear in
+supporting documentation, and that the name of Digital not be
+used in advertising or publicity pertaining to distribution of the
+software without specific, written prior permission.
+
+DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
+ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
+DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
+ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
+WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
+ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
+SOFTWARE.
+
+******************************************************************/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+#include <X11/Xos.h>
+#include <X11/Xresource.h>
+
+#ifndef X_NOT_POSIX
+#ifdef _POSIX_SOURCE
+#include <limits.h>
+#else
+#define _POSIX_SOURCE
+#include <limits.h>
+#undef _POSIX_SOURCE
+#endif
+#endif
+#ifndef PATH_MAX
+#ifdef WIN32
+#define PATH_MAX 512
+#else
+#include <sys/param.h>
+#endif
+#ifndef PATH_MAX
+#ifdef MAXPATHLEN
+#define PATH_MAX MAXPATHLEN
+#else
+#define PATH_MAX 1024
+#endif
+#endif
+#endif
+
+#ifdef XTHREADS
+#include <X11/Xthreads.h>
+#endif
+#ifndef WIN32
+#define X_INCLUDE_PWD_H
+#define XOS_USE_XLIB_LOCKING
+#include <X11/Xos_r.h>
+#endif
+#include <stdio.h>
+#include <ctype.h>
+
+
+/*ARGSUSED*/
+static char *
+GetHomeDir(
+ char *dest,
+ int len)
+{
+#ifdef WIN32
+ register char *ptr1 = NULL;
+ register char *ptr2 = NULL;
+ int len1 = 0, len2 = 0;
+
+ if ((ptr1 = getenv("HOME"))) { /* old, deprecated */
+ len1 = strlen (ptr1);
+ } else if ((ptr1 = getenv("HOMEDRIVE")) && (ptr2 = getenv("HOMEDIR"))) {
+ len1 = strlen (ptr1);
+ len2 = strlen (ptr2);
+ } else if ((ptr2 = getenv("USERNAME"))) {
+ len1 = strlen (ptr1 = "/users/");
+ len2 = strlen (ptr2);
+ }
+ if ((len1 + len2 + 1) < len)
+ sprintf (dest, "%s%s", ptr1, (ptr2) ? ptr2 : "");
+ else
+ *dest = '\0';
+#else
+#ifdef X_NEEDS_PWPARAMS
+ _Xgetpwparams pwparams;
+#endif
+ struct passwd *pw;
+ register char *ptr;
+
+ if (len <= 0 || dest == NULL)
+ return NULL;
+
+ if ((ptr = getenv("HOME"))) {
+ (void) strncpy(dest, ptr, len-1);
+ dest[len-1] = '\0';
+ } else {
+ if ((ptr = getenv("USER")))
+ pw = _XGetpwnam(ptr,pwparams);
+ else
+ pw = _XGetpwuid(getuid(),pwparams);
+ if (pw != NULL) {
+ (void) strncpy(dest, pw->pw_dir, len-1);
+ dest[len-1] = '\0';
+ } else
+ *dest = '\0';
+ }
+#endif
+ return dest;
+}
+
+
+static XrmDatabase
+InitDefaults(
+ Display *dpy) /* display for defaults.... */
+{
+ XrmDatabase userdb;
+ XrmDatabase xdb;
+ char fname[PATH_MAX]; /* longer than any conceivable size */
+ char *xenv;
+
+ XrmInitialize();
+
+ /*
+ * See lib/Xt/Initialize.c
+ *
+ * First, get the defaults from the server; if none, then load from
+ * ~/.Xdefaults. Next, if there is an XENVIRONMENT environment variable,
+ * then load that file.
+ */
+
+ if (dpy->xdefaults == NULL) {
+ #ifdef _MSC_VER
+ const char *slashDotXdefaults = ".Xdefaults";
+ #else
+ const char *slashDotXdefaults = "/.Xdefaults";
+ #endif
+
+ (void) GetHomeDir (fname, PATH_MAX - strlen (slashDotXdefaults) - 1);
+ (void) strcat (fname, slashDotXdefaults);
+ xdb = XrmGetFileDatabase (fname);
+ } else {
+ xdb = XrmGetStringDatabase(dpy->xdefaults);
+ }
+
+ if (!(xenv = getenv ("XENVIRONMENT"))) {
+ #ifdef _MSC_VER
+ const char *slashDotXdefaultsDash = ".Xdefaults-";
+ #else
+ const char *slashDotXdefaultsDash = "/.Xdefaults-";
+ #endif
+ int len;
+
+ (void) GetHomeDir (fname, PATH_MAX - strlen (slashDotXdefaultsDash) - 1);
+ (void) strcat (fname, slashDotXdefaultsDash);
+ len = strlen (fname);
+ (void) _XGetHostname (fname+len, PATH_MAX-len);
+ xenv = fname;
+ }
+ userdb = XrmGetFileDatabase (xenv);
+ XrmMergeDatabases (userdb, &xdb);
+ return (xdb);
+
+#ifdef old
+ if (fname[0] != '\0') userdb = XrmGetFileDatabase(fname);
+ xdb = XrmGetStringDatabase(dpy->xdefaults);
+ XrmMergeDatabases(userdb, &xdb);
+ return xdb;
+#endif
+}
+
+char *
+XGetDefault(
+ Display *dpy, /* display for defaults.... */
+ char _Xconst *prog, /* name of program for option */
+ register _Xconst char *name) /* name of option program wants */
+{ /* to get, for example, "font" */
+ XrmName names[3];
+ XrmClass classes[3];
+ XrmRepresentation fromType;
+ XrmValue result;
+ char *progname;
+#ifdef WIN32
+ char *progname2;
+#endif
+#ifdef __UNIXOS2__
+ char *progname2;
+ char *dotpos;
+#endif
+
+ /*
+ * strip path off of program name (XXX - this is OS specific)
+ */
+ progname = strrchr (prog, '/');
+#ifdef WIN32
+ progname2 = strrchr (prog, '\\');
+ if (progname2 && (!progname || progname < progname2))
+ progname = progname2;
+#endif
+#ifdef __UNIXOS2__ /* Very similar to WIN32 */
+ progname2 = strrchr (prog, '\\');
+ if (progname2 && (!progname || progname < progname2))
+ progname = progname2;
+ dotpos = strrchr (prog, '.');
+ if (dotpos && (dotpos>progname2)) *dotpos='\0';
+#endif /* We take out the .exe suffix */
+
+ if (progname)
+ progname++;
+ else
+ progname = (char *)prog;
+
+ /*
+ * see if database has ever been initialized. Lookups can be done
+ * without locks held.
+ */
+ LockDisplay(dpy);
+ if (dpy->db == NULL) {
+ dpy->db = InitDefaults(dpy);
+ dpy->flags |= XlibDisplayDfltRMDB;
+ }
+ UnlockDisplay(dpy);
+
+ names[0] = XrmStringToName(progname);
+ names[1] = XrmStringToName(name);
+ names[2] = NULLQUARK;
+ classes[0] = XrmStringToClass("Program");
+ classes[1] = XrmStringToClass("Name");
+ classes[2] = NULLQUARK;
+ (void)XrmQGetResource(dpy->db, names, classes, &fromType, &result);
+ return (result.addr);
+}
+
diff --git a/libX11/src/GetEventData.c b/libX11/src/GetEventData.c
index 7ead6cae2..b93dee6cd 100644
--- a/libX11/src/GetEventData.c
+++ b/libX11/src/GetEventData.c
@@ -1,42 +1,42 @@
-/*
- * Copyright © 2009 Red Hat, Inc.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice (including the next
- * paragraph) shall be included in all copies or substantial portions of the
- * Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
- * DEALINGS IN THE SOFTWARE.
- *
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-
-Bool
-XGetEventData(Display *dpy, XGenericEventCookie *event)
-{
- Bool rc;
- LockDisplay(dpy);
-
- rc = _XFetchEventCookie(dpy, event);
-
- UnlockDisplay(dpy);
-
- return rc;
-}
-
+/*
+ * Copyright © 2009 Red Hat, Inc.
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice (including the next
+ * paragraph) shall be included in all copies or substantial portions of the
+ * Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+ * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+ * DEALINGS IN THE SOFTWARE.
+ *
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+
+Bool
+XGetEventData(Display *dpy, XGenericEventCookie *event)
+{
+ Bool rc;
+ LockDisplay(dpy);
+
+ rc = _XFetchEventCookie(dpy, event);
+
+ UnlockDisplay(dpy);
+
+ return rc;
+}
+
diff --git a/libX11/src/GetFPath.c b/libX11/src/GetFPath.c
index b5643b5d8..7d497c92e 100644
--- a/libX11/src/GetFPath.c
+++ b/libX11/src/GetFPath.c
@@ -1,91 +1,91 @@
-/*
-
-Copyright 1986, 1998 The Open Group
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall not be
-used in advertising or otherwise to promote the sale, use or other dealings
-in this Software without prior written authorization from The Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-
-char **XGetFontPath(
- register Display *dpy,
- int *npaths) /* RETURN */
-{
- xGetFontPathReply rep;
- register long nbytes;
- char **flist;
- char *ch;
- register unsigned i;
- register int length;
- register xReq *req;
-
- LockDisplay(dpy);
- GetEmptyReq (GetFontPath, req);
- (void) _XReply (dpy, (xReply *) &rep, 0, xFalse);
-
- if (rep.nPaths) {
- flist = (char **)
- Xmalloc((unsigned) rep.nPaths * sizeof (char *));
- nbytes = (long)rep.length << 2;
- ch = (char *) Xmalloc ((unsigned) (nbytes + 1));
- /* +1 to leave room for last null-terminator */
-
- if ((! flist) || (! ch)) {
- if (flist) Xfree((char *) flist);
- if (ch) Xfree(ch);
- _XEatData(dpy, (unsigned long) nbytes);
- UnlockDisplay(dpy);
- SyncHandle();
- return (char **) NULL;
- }
-
- _XReadPad (dpy, ch, nbytes);
- /*
- * unpack into null terminated strings.
- */
- length = *ch;
- for (i = 0; i < rep.nPaths; i++) {
- flist[i] = ch+1; /* skip over length */
- ch += length + 1; /* find next length ... */
- length = *ch;
- *ch = '\0'; /* and replace with null-termination */
- }
- }
- else flist = NULL;
- *npaths = rep.nPaths;
- UnlockDisplay(dpy);
- SyncHandle();
- return (flist);
-}
-
-int
-XFreeFontPath (char **list)
-{
- if (list != NULL) {
- Xfree (list[0]-1);
- Xfree ((char *)list);
- }
- return 1;
-}
+/*
+
+Copyright 1986, 1998 The Open Group
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group shall not be
+used in advertising or otherwise to promote the sale, use or other dealings
+in this Software without prior written authorization from The Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+
+char **XGetFontPath(
+ register Display *dpy,
+ int *npaths) /* RETURN */
+{
+ xGetFontPathReply rep;
+ register long nbytes;
+ char **flist;
+ char *ch;
+ register unsigned i;
+ register int length;
+ register xReq *req;
+
+ LockDisplay(dpy);
+ GetEmptyReq (GetFontPath, req);
+ (void) _XReply (dpy, (xReply *) &rep, 0, xFalse);
+
+ if (rep.nPaths) {
+ flist = (char **)
+ Xmalloc((unsigned) rep.nPaths * sizeof (char *));
+ nbytes = (long)rep.length << 2;
+ ch = (char *) Xmalloc ((unsigned) (nbytes + 1));
+ /* +1 to leave room for last null-terminator */
+
+ if ((! flist) || (! ch)) {
+ if (flist) Xfree((char *) flist);
+ if (ch) Xfree(ch);
+ _XEatData(dpy, (unsigned long) nbytes);
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return (char **) NULL;
+ }
+
+ _XReadPad (dpy, ch, nbytes);
+ /*
+ * unpack into null terminated strings.
+ */
+ length = *ch;
+ for (i = 0; i < rep.nPaths; i++) {
+ flist[i] = ch+1; /* skip over length */
+ ch += length + 1; /* find next length ... */
+ length = *ch;
+ *ch = '\0'; /* and replace with null-termination */
+ }
+ }
+ else flist = NULL;
+ *npaths = rep.nPaths;
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return (flist);
+}
+
+int
+XFreeFontPath (char **list)
+{
+ if (list != NULL) {
+ Xfree (list[0]-1);
+ Xfree ((char *)list);
+ }
+ return 1;
+}
diff --git a/libX11/src/GetFProp.c b/libX11/src/GetFProp.c
index 5ccefe5e3..27ec98b72 100644
--- a/libX11/src/GetFProp.c
+++ b/libX11/src/GetFProp.c
@@ -1,55 +1,55 @@
-/*
-
-Copyright 1986, 1998 The Open Group
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall not be
-used in advertising or otherwise to promote the sale, use or other dealings
-in this Software without prior written authorization from The Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-
-Bool XGetFontProperty (
- XFontStruct *fs,
- register Atom name,
- unsigned long *valuePtr)
-{
- /* XXX this is a simple linear search for now. If the
- protocol is changed to sort the property list, this should
- become a binary search. */
- register XFontProp *prop = fs->properties;
- register XFontProp *last = prop + fs->n_properties;
- while (prop != last) {
- if (prop->name == name) {
- *valuePtr = prop->card32;
- return (1);
- }
- prop++;
- }
- return (0);
- }
-
-
-
-
-
+/*
+
+Copyright 1986, 1998 The Open Group
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group shall not be
+used in advertising or otherwise to promote the sale, use or other dealings
+in this Software without prior written authorization from The Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+
+Bool XGetFontProperty (
+ XFontStruct *fs,
+ register Atom name,
+ unsigned long *valuePtr)
+{
+ /* XXX this is a simple linear search for now. If the
+ protocol is changed to sort the property list, this should
+ become a binary search. */
+ register XFontProp *prop = fs->properties;
+ register XFontProp *last = prop + fs->n_properties;
+ while (prop != last) {
+ if (prop->name == name) {
+ *valuePtr = prop->card32;
+ return (1);
+ }
+ prop++;
+ }
+ return (0);
+ }
+
+
+
+
+
diff --git a/libX11/src/GetGCVals.c b/libX11/src/GetGCVals.c
index 390528489..4861739a6 100644
--- a/libX11/src/GetGCVals.c
+++ b/libX11/src/GetGCVals.c
@@ -1,128 +1,128 @@
-
-/*
-
-Copyright 1989, 1998 The Open Group
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall not be
-used in advertising or otherwise to promote the sale, use or other dealings
-in this Software without prior written authorization from The Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-
-/*
- * All gc fields except GCClipMask and GCDashList
- */
-#define ValidGCValuesBits (GCFunction | GCPlaneMask | GCForeground | \
- GCBackground | GCLineWidth | GCLineStyle | \
- GCCapStyle | GCJoinStyle | GCFillStyle | \
- GCFillRule | GCTile | GCStipple | \
- GCTileStipXOrigin | GCTileStipYOrigin | \
- GCFont | GCSubwindowMode | GCGraphicsExposures | \
- GCClipXOrigin | GCClipYOrigin | GCDashOffset | \
- GCArcMode)
-
-/*ARGSUSED*/
-Status XGetGCValues (
- Display *dpy,
- GC gc,
- unsigned long valuemask,
- XGCValues *values)
-{
- if (valuemask == ValidGCValuesBits) {
- char dashes = values->dashes;
- Pixmap clip_mask = values->clip_mask;
- *values = gc->values;
- values->dashes = dashes;
- values->clip_mask = clip_mask;
- return True;
- }
-
- if (valuemask & ~ValidGCValuesBits) return False;
-
- if (valuemask & GCFunction)
- values->function = gc->values.function;
-
- if (valuemask & GCPlaneMask)
- values->plane_mask = gc->values.plane_mask;
-
- if (valuemask & GCForeground)
- values->foreground = gc->values.foreground;
-
- if (valuemask & GCBackground)
- values->background = gc->values.background;
-
- if (valuemask & GCLineWidth)
- values->line_width = gc->values.line_width;
-
- if (valuemask & GCLineStyle)
- values->line_style = gc->values.line_style;
-
- if (valuemask & GCCapStyle)
- values->cap_style = gc->values.cap_style;
-
- if (valuemask & GCJoinStyle)
- values->join_style = gc->values.join_style;
-
- if (valuemask & GCFillStyle)
- values->fill_style = gc->values.fill_style;
-
- if (valuemask & GCFillRule)
- values->fill_rule = gc->values.fill_rule;
-
- if (valuemask & GCTile)
- values->tile = gc->values.tile;
-
- if (valuemask & GCStipple)
- values->stipple = gc->values.stipple;
-
- if (valuemask & GCTileStipXOrigin)
- values->ts_x_origin = gc->values.ts_x_origin;
-
- if (valuemask & GCTileStipYOrigin)
- values->ts_y_origin = gc->values.ts_y_origin;
-
- if (valuemask & GCFont)
- values->font = gc->values.font;
-
- if (valuemask & GCSubwindowMode)
- values->subwindow_mode = gc->values.subwindow_mode;
-
- if (valuemask & GCGraphicsExposures)
- values->graphics_exposures = gc->values.graphics_exposures;
-
- if (valuemask & GCClipXOrigin)
- values->clip_x_origin = gc->values.clip_x_origin;
-
- if (valuemask & GCClipYOrigin)
- values->clip_y_origin = gc->values.clip_y_origin;
-
- if (valuemask & GCDashOffset)
-
- values->dash_offset = gc->values.dash_offset;
-
- if (valuemask & GCArcMode)
- values->arc_mode = gc->values.arc_mode;
-
- return True;
-}
+
+/*
+
+Copyright 1989, 1998 The Open Group
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group shall not be
+used in advertising or otherwise to promote the sale, use or other dealings
+in this Software without prior written authorization from The Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+
+/*
+ * All gc fields except GCClipMask and GCDashList
+ */
+#define ValidGCValuesBits (GCFunction | GCPlaneMask | GCForeground | \
+ GCBackground | GCLineWidth | GCLineStyle | \
+ GCCapStyle | GCJoinStyle | GCFillStyle | \
+ GCFillRule | GCTile | GCStipple | \
+ GCTileStipXOrigin | GCTileStipYOrigin | \
+ GCFont | GCSubwindowMode | GCGraphicsExposures | \
+ GCClipXOrigin | GCClipYOrigin | GCDashOffset | \
+ GCArcMode)
+
+/*ARGSUSED*/
+Status XGetGCValues (
+ Display *dpy,
+ GC gc,
+ unsigned long valuemask,
+ XGCValues *values)
+{
+ if (valuemask == ValidGCValuesBits) {
+ char dashes = values->dashes;
+ Pixmap clip_mask = values->clip_mask;
+ *values = gc->values;
+ values->dashes = dashes;
+ values->clip_mask = clip_mask;
+ return True;
+ }
+
+ if (valuemask & ~ValidGCValuesBits) return False;
+
+ if (valuemask & GCFunction)
+ values->function = gc->values.function;
+
+ if (valuemask & GCPlaneMask)
+ values->plane_mask = gc->values.plane_mask;
+
+ if (valuemask & GCForeground)
+ values->foreground = gc->values.foreground;
+
+ if (valuemask & GCBackground)
+ values->background = gc->values.background;
+
+ if (valuemask & GCLineWidth)
+ values->line_width = gc->values.line_width;
+
+ if (valuemask & GCLineStyle)
+ values->line_style = gc->values.line_style;
+
+ if (valuemask & GCCapStyle)
+ values->cap_style = gc->values.cap_style;
+
+ if (valuemask & GCJoinStyle)
+ values->join_style = gc->values.join_style;
+
+ if (valuemask & GCFillStyle)
+ values->fill_style = gc->values.fill_style;
+
+ if (valuemask & GCFillRule)
+ values->fill_rule = gc->values.fill_rule;
+
+ if (valuemask & GCTile)
+ values->tile = gc->values.tile;
+
+ if (valuemask & GCStipple)
+ values->stipple = gc->values.stipple;
+
+ if (valuemask & GCTileStipXOrigin)
+ values->ts_x_origin = gc->values.ts_x_origin;
+
+ if (valuemask & GCTileStipYOrigin)
+ values->ts_y_origin = gc->values.ts_y_origin;
+
+ if (valuemask & GCFont)
+ values->font = gc->values.font;
+
+ if (valuemask & GCSubwindowMode)
+ values->subwindow_mode = gc->values.subwindow_mode;
+
+ if (valuemask & GCGraphicsExposures)
+ values->graphics_exposures = gc->values.graphics_exposures;
+
+ if (valuemask & GCClipXOrigin)
+ values->clip_x_origin = gc->values.clip_x_origin;
+
+ if (valuemask & GCClipYOrigin)
+ values->clip_y_origin = gc->values.clip_y_origin;
+
+ if (valuemask & GCDashOffset)
+
+ values->dash_offset = gc->values.dash_offset;
+
+ if (valuemask & GCArcMode)
+ values->arc_mode = gc->values.arc_mode;
+
+ return True;
+}
diff --git a/libX11/src/GetGeom.c b/libX11/src/GetGeom.c
index eac36b064..1e1249d81 100644
--- a/libX11/src/GetGeom.c
+++ b/libX11/src/GetGeom.c
@@ -1,63 +1,63 @@
-/*
-
-Copyright 1986, 1998 The Open Group
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall not be
-used in advertising or otherwise to promote the sale, use or other dealings
-in this Software without prior written authorization from The Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-
-Status XGetGeometry (
- register Display *dpy,
- Drawable d,
- Window *root, /* RETURN */
- int *x,
- int *y, /* RETURN */
- unsigned int *width,
- unsigned int *height,
- unsigned int *borderWidth,
- unsigned int *depth) /* RETURN */
-{
- xGetGeometryReply rep;
- register xResourceReq *req;
- LockDisplay(dpy);
- GetResReq(GetGeometry, d, req);
- if (!_XReply (dpy, (xReply *)&rep, 0, xTrue)) {
- UnlockDisplay(dpy);
- SyncHandle();
- return (0);
- }
- *root = rep.root;
- *x = cvtINT16toInt (rep.x);
- *y = cvtINT16toInt (rep.y);
- *width = rep.width;
- *height = rep.height;
- *borderWidth = rep.borderWidth;
- *depth = rep.depth;
- UnlockDisplay(dpy);
- SyncHandle();
- return (1);
-}
-
+/*
+
+Copyright 1986, 1998 The Open Group
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group shall not be
+used in advertising or otherwise to promote the sale, use or other dealings
+in this Software without prior written authorization from The Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+
+Status XGetGeometry (
+ register Display *dpy,
+ Drawable d,
+ Window *root, /* RETURN */
+ int *x,
+ int *y, /* RETURN */
+ unsigned int *width,
+ unsigned int *height,
+ unsigned int *borderWidth,
+ unsigned int *depth) /* RETURN */
+{
+ xGetGeometryReply rep;
+ register xResourceReq *req;
+ LockDisplay(dpy);
+ GetResReq(GetGeometry, d, req);
+ if (!_XReply (dpy, (xReply *)&rep, 0, xTrue)) {
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return (0);
+ }
+ *root = rep.root;
+ *x = cvtINT16toInt (rep.x);
+ *y = cvtINT16toInt (rep.y);
+ *width = rep.width;
+ *height = rep.height;
+ *borderWidth = rep.borderWidth;
+ *depth = rep.depth;
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return (1);
+}
+
diff --git a/libX11/src/GetHColor.c b/libX11/src/GetHColor.c
index 2a633c323..081a2248d 100644
--- a/libX11/src/GetHColor.c
+++ b/libX11/src/GetHColor.c
@@ -1,58 +1,58 @@
-/*
-
-Copyright 1986, 1998 The Open Group
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall not be
-used in advertising or otherwise to promote the sale, use or other dealings
-in this Software without prior written authorization from The Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-
-Status XAllocColor(
- register Display *dpy,
- Colormap cmap,
- XColor *def)
-{
- Status status;
- xAllocColorReply rep;
- register xAllocColorReq *req;
- LockDisplay(dpy);
- GetReq(AllocColor, req);
-
- req->cmap = cmap;
- req->red = def->red;
- req->green = def->green;
- req->blue = def->blue;
-
- status = _XReply(dpy, (xReply *) &rep, 0, xTrue);
- if (status) {
- def->pixel = rep.pixel;
- def->red = rep.red;
- def->green = rep.green;
- def->blue = rep.blue;
- }
- UnlockDisplay(dpy);
- SyncHandle();
- return(status);
-}
+/*
+
+Copyright 1986, 1998 The Open Group
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group shall not be
+used in advertising or otherwise to promote the sale, use or other dealings
+in this Software without prior written authorization from The Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+
+Status XAllocColor(
+ register Display *dpy,
+ Colormap cmap,
+ XColor *def)
+{
+ Status status;
+ xAllocColorReply rep;
+ register xAllocColorReq *req;
+ LockDisplay(dpy);
+ GetReq(AllocColor, req);
+
+ req->cmap = cmap;
+ req->red = def->red;
+ req->green = def->green;
+ req->blue = def->blue;
+
+ status = _XReply(dpy, (xReply *) &rep, 0, xTrue);
+ if (status) {
+ def->pixel = rep.pixel;
+ def->red = rep.red;
+ def->green = rep.green;
+ def->blue = rep.blue;
+ }
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return(status);
+}
diff --git a/libX11/src/GetHints.c b/libX11/src/GetHints.c
index 681ed1baa..4800fe793 100644
--- a/libX11/src/GetHints.c
+++ b/libX11/src/GetHints.c
@@ -1,339 +1,339 @@
-
-/***********************************************************
-
-Copyright 1987, 1998 The Open Group
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall not be
-used in advertising or otherwise to promote the sale, use or other dealings
-in this Software without prior written authorization from The Open Group.
-
-
-Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts.
-
- All Rights Reserved
-
-Permission to use, copy, modify, and distribute this software and its
-documentation for any purpose and without fee is hereby granted,
-provided that the above copyright notice appear in all copies and that
-both that copyright notice and this permission notice appear in
-supporting documentation, and that the name of Digital not be
-used in advertising or publicity pertaining to distribution of the
-software without specific, written prior permission.
-
-DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
-ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
-DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
-ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
-WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
-ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
-SOFTWARE.
-
-******************************************************************/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include <X11/Xlibint.h>
-#include <X11/Xos.h>
-#include <X11/Xutil.h>
-#include "Xatomtype.h"
-#include <X11/Xatom.h>
-#include <stdio.h>
-
-Status XGetSizeHints (
- Display *dpy,
- Window w,
- XSizeHints *hints,
- Atom property)
-{
- xPropSizeHints *prop = NULL;
- Atom actual_type;
- int actual_format;
- unsigned long leftover;
- unsigned long nitems;
- if (XGetWindowProperty(dpy, w, property, 0L,
- (long) OldNumPropSizeElements,
- False, XA_WM_SIZE_HINTS, &actual_type, &actual_format,
- &nitems, &leftover, (unsigned char **)&prop)
- != Success) return (0);
-
- if ((actual_type != XA_WM_SIZE_HINTS) ||
- (nitems < OldNumPropSizeElements) || (actual_format != 32)) {
- if (prop != NULL) Xfree ((char *)prop);
- return(0);
- }
- hints->flags = (prop->flags & (USPosition|USSize|PAllHints));
- hints->x = cvtINT32toInt (prop->x);
- hints->y = cvtINT32toInt (prop->y);
- hints->width = cvtINT32toInt (prop->width);
- hints->height = cvtINT32toInt (prop->height);
- hints->min_width = cvtINT32toInt (prop->minWidth);
- hints->min_height = cvtINT32toInt (prop->minHeight);
- hints->max_width = cvtINT32toInt (prop->maxWidth);
- hints->max_height = cvtINT32toInt (prop->maxHeight);
- hints->width_inc = cvtINT32toInt (prop->widthInc);
- hints->height_inc = cvtINT32toInt (prop->heightInc);
- hints->min_aspect.x = cvtINT32toInt (prop->minAspectX);
- hints->min_aspect.y = cvtINT32toInt (prop->minAspectY);
- hints->max_aspect.x = cvtINT32toInt (prop->maxAspectX);
- hints->max_aspect.y = cvtINT32toInt (prop->maxAspectY);
- Xfree((char *)prop);
- return(1);
-}
-
-/*
- * must return a pointer to the hint, in malloc'd memory, or routine is not
- * extensible; any use of the caller's memory would cause things to be stepped
- * on.
- */
-
-XWMHints *XGetWMHints (
- Display *dpy,
- Window w)
-{
- xPropWMHints *prop = NULL;
- register XWMHints *hints;
- Atom actual_type;
- int actual_format;
- unsigned long leftover;
- unsigned long nitems;
- if (XGetWindowProperty(dpy, w, XA_WM_HINTS,
- 0L, (long)NumPropWMHintsElements,
- False, XA_WM_HINTS, &actual_type, &actual_format,
- &nitems, &leftover, (unsigned char **)&prop)
- != Success) return (NULL);
-
- /* If the property is undefined on the window, return null pointer. */
- /* pre-R3 bogusly truncated window_group, don't fail on them */
-
- if ((actual_type != XA_WM_HINTS) ||
- (nitems < (NumPropWMHintsElements - 1)) || (actual_format != 32)) {
- if (prop != NULL) Xfree ((char *)prop);
- return(NULL);
- }
- /* static copies not allowed in library, due to reentrancy constraint*/
- if ((hints = (XWMHints *) Xcalloc (1, (unsigned) sizeof(XWMHints)))) {
- hints->flags = prop->flags;
- hints->input = (prop->input ? True : False);
- hints->initial_state = cvtINT32toInt (prop->initialState);
- hints->icon_pixmap = prop->iconPixmap;
- hints->icon_window = prop->iconWindow;
- hints->icon_x = cvtINT32toInt (prop->iconX);
- hints->icon_y = cvtINT32toInt (prop->iconY);
- hints->icon_mask = prop->iconMask;
- if (nitems >= NumPropWMHintsElements)
- hints->window_group = prop->windowGroup;
- else
- hints->window_group = 0;
- }
- Xfree ((char *)prop);
- return(hints);
-}
-
-Status
-XGetZoomHints (
- Display *dpy,
- Window w,
- XSizeHints *zhints)
-{
- return (XGetSizeHints(dpy, w, zhints, XA_WM_ZOOM_HINTS));
-}
-
-Status
-XGetNormalHints (
- Display *dpy,
- Window w,
- XSizeHints *hints)
-{
- return (XGetSizeHints(dpy, w, hints, XA_WM_NORMAL_HINTS));
-}
-
-
-/*
- * XGetIconSizes reads the property
- * ICONSIZE_ATOM type: ICONSIZE_ATOM format: 32
- */
-
-Status XGetIconSizes (
- Display *dpy,
- Window w, /* typically, root */
- XIconSize **size_list, /* RETURN */
- int *count) /* RETURN number of items on the list */
-{
- xPropIconSize *prop = NULL;
- register xPropIconSize *pp;
- register XIconSize *hp, *hints;
- Atom actual_type;
- int actual_format;
- unsigned long leftover;
- unsigned long nitems;
- register int i;
-
- if (XGetWindowProperty(dpy, w, XA_WM_ICON_SIZE, 0L, 60L,
- False, XA_WM_ICON_SIZE, &actual_type, &actual_format,
- &nitems, &leftover, (unsigned char **)&prop)
- != Success) return (0);
-
- pp = prop;
-
- if ((actual_type != XA_WM_ICON_SIZE) ||
- (nitems < NumPropIconSizeElements) ||
- (nitems % NumPropIconSizeElements != 0) ||
- (actual_format != 32)) {
- if (prop != NULL) Xfree ((char *)prop);
- return(0);
- }
-
- /* static copies not allowed in library, due to reentrancy constraint*/
-
- nitems /= NumPropIconSizeElements;
- if (! (hp = hints = (XIconSize *)
- Xcalloc ((unsigned) nitems, (unsigned) sizeof(XIconSize)))) {
- if (prop) Xfree ((char *) prop);
- return 0;
- }
-
- /* march down array putting things into native form */
- for (i = 0; i < nitems; i++) {
- hp->min_width = cvtINT32toInt (pp->minWidth);
- hp->min_height = cvtINT32toInt (pp->minHeight);
- hp->max_width = cvtINT32toInt (pp->maxWidth);
- hp->max_height = cvtINT32toInt (pp->maxHeight);
- hp->width_inc = cvtINT32toInt (pp->widthInc);
- hp->height_inc = cvtINT32toInt (pp->heightInc);
- hp += 1;
- pp += 1;
- }
- *count = nitems;
- *size_list = hints;
- Xfree ((char *)prop);
- return(1);
-}
-
-
-Status XGetCommand (
- Display *dpy,
- Window w,
- char ***argvp,
- int *argcp)
-{
- XTextProperty tp;
- int argc;
- char **argv;
-
- if (!XGetTextProperty (dpy, w, &tp, XA_WM_COMMAND)) return 0;
-
- if (tp.encoding != XA_STRING || tp.format != 8) {
- if (tp.value) Xfree ((char *) tp.value);
- return 0;
- }
-
-
- /*
- * ignore final <NUL> if present since UNIX WM_COMMAND is nul-terminated
- */
- if (tp.nitems && (tp.value[tp.nitems - 1] == '\0')) tp.nitems--;
-
-
- /*
- * create a string list and return if successful
- */
- if (!XTextPropertyToStringList (&tp, &argv, &argc)) {
- if (tp.value) Xfree ((char *) tp.value);
- return (0);
- }
-
- if (tp.value) Xfree ((char *) tp.value);
- *argvp = argv;
- *argcp = argc;
- return 1;
-}
-
-
-Status
-XGetTransientForHint(
- Display *dpy,
- Window w,
- Window *propWindow)
-{
- Atom actual_type;
- int actual_format;
- unsigned long nitems;
- unsigned long leftover;
- Window *data = NULL;
- if (XGetWindowProperty(dpy, w, XA_WM_TRANSIENT_FOR, 0L, 1L, False,
- XA_WINDOW,
- &actual_type,
- &actual_format, &nitems, &leftover, (unsigned char **) &data)
- != Success) {
- *propWindow = None;
- return (0);
- }
- if ( (actual_type == XA_WINDOW) && (actual_format == 32) &&
- (nitems != 0) ) {
- *propWindow = *data;
- Xfree( (char *) data);
- return (1);
- }
- *propWindow = None;
- if (data) Xfree( (char *) data);
- return(0);
-}
-
-Status
-XGetClassHint(
- Display *dpy,
- Window w,
- XClassHint *classhint) /* RETURN */
-{
- int len_name, len_class;
-
- Atom actual_type;
- int actual_format;
- unsigned long nitems;
- unsigned long leftover;
- unsigned char *data = NULL;
- if (XGetWindowProperty(dpy, w, XA_WM_CLASS, 0L, (long)BUFSIZ, False,
- XA_STRING,
- &actual_type,
- &actual_format, &nitems, &leftover, &data) != Success)
- return (0);
-
- if ( (actual_type == XA_STRING) && (actual_format == 8) ) {
- len_name = strlen((char *) data);
- if (! (classhint->res_name = Xmalloc((unsigned) (len_name+1)))) {
- Xfree((char *) data);
- return (0);
- }
- strcpy(classhint->res_name, (char *) data);
- if (len_name == nitems) len_name--;
- len_class = strlen((char *) (data+len_name+1));
- if (! (classhint->res_class = Xmalloc((unsigned) (len_class+1)))) {
- Xfree(classhint->res_name);
- classhint->res_name = (char *) NULL;
- Xfree((char *) data);
- return (0);
- }
- strcpy(classhint->res_class, (char *) (data+len_name+1));
- Xfree( (char *) data);
- return(1);
- }
- if (data) Xfree( (char *) data);
- return(0);
-}
+
+/***********************************************************
+
+Copyright 1987, 1998 The Open Group
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group shall not be
+used in advertising or otherwise to promote the sale, use or other dealings
+in this Software without prior written authorization from The Open Group.
+
+
+Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts.
+
+ All Rights Reserved
+
+Permission to use, copy, modify, and distribute this software and its
+documentation for any purpose and without fee is hereby granted,
+provided that the above copyright notice appear in all copies and that
+both that copyright notice and this permission notice appear in
+supporting documentation, and that the name of Digital not be
+used in advertising or publicity pertaining to distribution of the
+software without specific, written prior permission.
+
+DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
+ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
+DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
+ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
+WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
+ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
+SOFTWARE.
+
+******************************************************************/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include <X11/Xlibint.h>
+#include <X11/Xos.h>
+#include <X11/Xutil.h>
+#include "Xatomtype.h"
+#include <X11/Xatom.h>
+#include <stdio.h>
+
+Status XGetSizeHints (
+ Display *dpy,
+ Window w,
+ XSizeHints *hints,
+ Atom property)
+{
+ xPropSizeHints *prop = NULL;
+ Atom actual_type;
+ int actual_format;
+ unsigned long leftover;
+ unsigned long nitems;
+ if (XGetWindowProperty(dpy, w, property, 0L,
+ (long) OldNumPropSizeElements,
+ False, XA_WM_SIZE_HINTS, &actual_type, &actual_format,
+ &nitems, &leftover, (unsigned char **)&prop)
+ != Success) return (0);
+
+ if ((actual_type != XA_WM_SIZE_HINTS) ||
+ (nitems < OldNumPropSizeElements) || (actual_format != 32)) {
+ if (prop != NULL) Xfree ((char *)prop);
+ return(0);
+ }
+ hints->flags = (prop->flags & (USPosition|USSize|PAllHints));
+ hints->x = cvtINT32toInt (prop->x);
+ hints->y = cvtINT32toInt (prop->y);
+ hints->width = cvtINT32toInt (prop->width);
+ hints->height = cvtINT32toInt (prop->height);
+ hints->min_width = cvtINT32toInt (prop->minWidth);
+ hints->min_height = cvtINT32toInt (prop->minHeight);
+ hints->max_width = cvtINT32toInt (prop->maxWidth);
+ hints->max_height = cvtINT32toInt (prop->maxHeight);
+ hints->width_inc = cvtINT32toInt (prop->widthInc);
+ hints->height_inc = cvtINT32toInt (prop->heightInc);
+ hints->min_aspect.x = cvtINT32toInt (prop->minAspectX);
+ hints->min_aspect.y = cvtINT32toInt (prop->minAspectY);
+ hints->max_aspect.x = cvtINT32toInt (prop->maxAspectX);
+ hints->max_aspect.y = cvtINT32toInt (prop->maxAspectY);
+ Xfree((char *)prop);
+ return(1);
+}
+
+/*
+ * must return a pointer to the hint, in malloc'd memory, or routine is not
+ * extensible; any use of the caller's memory would cause things to be stepped
+ * on.
+ */
+
+XWMHints *XGetWMHints (
+ Display *dpy,
+ Window w)
+{
+ xPropWMHints *prop = NULL;
+ register XWMHints *hints;
+ Atom actual_type;
+ int actual_format;
+ unsigned long leftover;
+ unsigned long nitems;
+ if (XGetWindowProperty(dpy, w, XA_WM_HINTS,
+ 0L, (long)NumPropWMHintsElements,
+ False, XA_WM_HINTS, &actual_type, &actual_format,
+ &nitems, &leftover, (unsigned char **)&prop)
+ != Success) return (NULL);
+
+ /* If the property is undefined on the window, return null pointer. */
+ /* pre-R3 bogusly truncated window_group, don't fail on them */
+
+ if ((actual_type != XA_WM_HINTS) ||
+ (nitems < (NumPropWMHintsElements - 1)) || (actual_format != 32)) {
+ if (prop != NULL) Xfree ((char *)prop);
+ return(NULL);
+ }
+ /* static copies not allowed in library, due to reentrancy constraint*/
+ if ((hints = (XWMHints *) Xcalloc (1, (unsigned) sizeof(XWMHints)))) {
+ hints->flags = prop->flags;
+ hints->input = (prop->input ? True : False);
+ hints->initial_state = cvtINT32toInt (prop->initialState);
+ hints->icon_pixmap = prop->iconPixmap;
+ hints->icon_window = prop->iconWindow;
+ hints->icon_x = cvtINT32toInt (prop->iconX);
+ hints->icon_y = cvtINT32toInt (prop->iconY);
+ hints->icon_mask = prop->iconMask;
+ if (nitems >= NumPropWMHintsElements)
+ hints->window_group = prop->windowGroup;
+ else
+ hints->window_group = 0;
+ }
+ Xfree ((char *)prop);
+ return(hints);
+}
+
+Status
+XGetZoomHints (
+ Display *dpy,
+ Window w,
+ XSizeHints *zhints)
+{
+ return (XGetSizeHints(dpy, w, zhints, XA_WM_ZOOM_HINTS));
+}
+
+Status
+XGetNormalHints (
+ Display *dpy,
+ Window w,
+ XSizeHints *hints)
+{
+ return (XGetSizeHints(dpy, w, hints, XA_WM_NORMAL_HINTS));
+}
+
+
+/*
+ * XGetIconSizes reads the property
+ * ICONSIZE_ATOM type: ICONSIZE_ATOM format: 32
+ */
+
+Status XGetIconSizes (
+ Display *dpy,
+ Window w, /* typically, root */
+ XIconSize **size_list, /* RETURN */
+ int *count) /* RETURN number of items on the list */
+{
+ xPropIconSize *prop = NULL;
+ register xPropIconSize *pp;
+ register XIconSize *hp, *hints;
+ Atom actual_type;
+ int actual_format;
+ unsigned long leftover;
+ unsigned long nitems;
+ register int i;
+
+ if (XGetWindowProperty(dpy, w, XA_WM_ICON_SIZE, 0L, 60L,
+ False, XA_WM_ICON_SIZE, &actual_type, &actual_format,
+ &nitems, &leftover, (unsigned char **)&prop)
+ != Success) return (0);
+
+ pp = prop;
+
+ if ((actual_type != XA_WM_ICON_SIZE) ||
+ (nitems < NumPropIconSizeElements) ||
+ (nitems % NumPropIconSizeElements != 0) ||
+ (actual_format != 32)) {
+ if (prop != NULL) Xfree ((char *)prop);
+ return(0);
+ }
+
+ /* static copies not allowed in library, due to reentrancy constraint*/
+
+ nitems /= NumPropIconSizeElements;
+ if (! (hp = hints = (XIconSize *)
+ Xcalloc ((unsigned) nitems, (unsigned) sizeof(XIconSize)))) {
+ if (prop) Xfree ((char *) prop);
+ return 0;
+ }
+
+ /* march down array putting things into native form */
+ for (i = 0; i < nitems; i++) {
+ hp->min_width = cvtINT32toInt (pp->minWidth);
+ hp->min_height = cvtINT32toInt (pp->minHeight);
+ hp->max_width = cvtINT32toInt (pp->maxWidth);
+ hp->max_height = cvtINT32toInt (pp->maxHeight);
+ hp->width_inc = cvtINT32toInt (pp->widthInc);
+ hp->height_inc = cvtINT32toInt (pp->heightInc);
+ hp += 1;
+ pp += 1;
+ }
+ *count = nitems;
+ *size_list = hints;
+ Xfree ((char *)prop);
+ return(1);
+}
+
+
+Status XGetCommand (
+ Display *dpy,
+ Window w,
+ char ***argvp,
+ int *argcp)
+{
+ XTextProperty tp;
+ int argc;
+ char **argv;
+
+ if (!XGetTextProperty (dpy, w, &tp, XA_WM_COMMAND)) return 0;
+
+ if (tp.encoding != XA_STRING || tp.format != 8) {
+ if (tp.value) Xfree ((char *) tp.value);
+ return 0;
+ }
+
+
+ /*
+ * ignore final <NUL> if present since UNIX WM_COMMAND is nul-terminated
+ */
+ if (tp.nitems && (tp.value[tp.nitems - 1] == '\0')) tp.nitems--;
+
+
+ /*
+ * create a string list and return if successful
+ */
+ if (!XTextPropertyToStringList (&tp, &argv, &argc)) {
+ if (tp.value) Xfree ((char *) tp.value);
+ return (0);
+ }
+
+ if (tp.value) Xfree ((char *) tp.value);
+ *argvp = argv;
+ *argcp = argc;
+ return 1;
+}
+
+
+Status
+XGetTransientForHint(
+ Display *dpy,
+ Window w,
+ Window *propWindow)
+{
+ Atom actual_type;
+ int actual_format;
+ unsigned long nitems;
+ unsigned long leftover;
+ Window *data = NULL;
+ if (XGetWindowProperty(dpy, w, XA_WM_TRANSIENT_FOR, 0L, 1L, False,
+ XA_WINDOW,
+ &actual_type,
+ &actual_format, &nitems, &leftover, (unsigned char **) &data)
+ != Success) {
+ *propWindow = None;
+ return (0);
+ }
+ if ( (actual_type == XA_WINDOW) && (actual_format == 32) &&
+ (nitems != 0) ) {
+ *propWindow = *data;
+ Xfree( (char *) data);
+ return (1);
+ }
+ *propWindow = None;
+ if (data) Xfree( (char *) data);
+ return(0);
+}
+
+Status
+XGetClassHint(
+ Display *dpy,
+ Window w,
+ XClassHint *classhint) /* RETURN */
+{
+ int len_name, len_class;
+
+ Atom actual_type;
+ int actual_format;
+ unsigned long nitems;
+ unsigned long leftover;
+ unsigned char *data = NULL;
+ if (XGetWindowProperty(dpy, w, XA_WM_CLASS, 0L, (long)BUFSIZ, False,
+ XA_STRING,
+ &actual_type,
+ &actual_format, &nitems, &leftover, &data) != Success)
+ return (0);
+
+ if ( (actual_type == XA_STRING) && (actual_format == 8) ) {
+ len_name = strlen((char *) data);
+ if (! (classhint->res_name = Xmalloc((unsigned) (len_name+1)))) {
+ Xfree((char *) data);
+ return (0);
+ }
+ strcpy(classhint->res_name, (char *) data);
+ if (len_name == nitems) len_name--;
+ len_class = strlen((char *) (data+len_name+1));
+ if (! (classhint->res_class = Xmalloc((unsigned) (len_class+1)))) {
+ Xfree(classhint->res_name);
+ classhint->res_name = (char *) NULL;
+ Xfree((char *) data);
+ return (0);
+ }
+ strcpy(classhint->res_class, (char *) (data+len_name+1));
+ Xfree( (char *) data);
+ return(1);
+ }
+ if (data) Xfree( (char *) data);
+ return(0);
+}
diff --git a/libX11/src/GetIFocus.c b/libX11/src/GetIFocus.c
index eccd60af5..5d43ead4f 100644
--- a/libX11/src/GetIFocus.c
+++ b/libX11/src/GetIFocus.c
@@ -1,49 +1,49 @@
-/*
-
-Copyright 1986, 1998 The Open Group
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall not be
-used in advertising or otherwise to promote the sale, use or other dealings
-in this Software without prior written authorization from The Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-
-int
-XGetInputFocus(
- register Display *dpy,
- Window *focus,
- int *revert_to)
-{
- xGetInputFocusReply rep;
- register xReq *req;
- LockDisplay(dpy);
- GetEmptyReq(GetInputFocus, req);
- (void) _XReply (dpy, (xReply *)&rep, 0, xTrue);
- *focus = rep.focus;
- *revert_to = rep.revertTo;
- UnlockDisplay(dpy);
- SyncHandle();
- return 1;
-}
-
+/*
+
+Copyright 1986, 1998 The Open Group
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group shall not be
+used in advertising or otherwise to promote the sale, use or other dealings
+in this Software without prior written authorization from The Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+
+int
+XGetInputFocus(
+ register Display *dpy,
+ Window *focus,
+ int *revert_to)
+{
+ xGetInputFocusReply rep;
+ register xReq *req;
+ LockDisplay(dpy);
+ GetEmptyReq(GetInputFocus, req);
+ (void) _XReply (dpy, (xReply *)&rep, 0, xTrue);
+ *focus = rep.focus;
+ *revert_to = rep.revertTo;
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return 1;
+}
+
diff --git a/libX11/src/GetImage.c b/libX11/src/GetImage.c
index 2017b30c6..e8f1b0309 100644
--- a/libX11/src/GetImage.c
+++ b/libX11/src/GetImage.c
@@ -1,128 +1,128 @@
-/*
-
-Copyright 1986, 1998 The Open Group
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall not be
-used in advertising or otherwise to promote the sale, use or other dealings
-in this Software without prior written authorization from The Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-#include <X11/Xutil.h> /* for XDestroyImage */
-#include "ImUtil.h"
-
-#define ROUNDUP(nbytes, pad) (((((nbytes) - 1) + (pad)) / (pad)) * (pad))
-
-static unsigned int Ones( /* HACKMEM 169 */
- unsigned long mask)
-{
- register unsigned long y;
-
- y = (mask >> 1) &033333333333;
- y = mask - y - ((y >>1) & 033333333333);
- return ((unsigned int) (((y + (y >> 3)) & 030707070707) % 077));
-}
-
-XImage *XGetImage (
- register Display *dpy,
- Drawable d,
- int x,
- int y,
- unsigned int width,
- unsigned int height,
- unsigned long plane_mask,
- int format) /* either XYPixmap or ZPixmap */
-{
- xGetImageReply rep;
- register xGetImageReq *req;
- char *data;
- long nbytes;
- XImage *image;
- LockDisplay(dpy);
- GetReq (GetImage, req);
- /*
- * first set up the standard stuff in the request
- */
- req->drawable = d;
- req->x = x;
- req->y = y;
- req->width = width;
- req->height = height;
- req->planeMask = plane_mask;
- req->format = format;
-
- if (_XReply (dpy, (xReply *) &rep, 0, xFalse) == 0 ||
- rep.length == 0) {
- UnlockDisplay(dpy);
- SyncHandle();
- return (XImage *)NULL;
- }
-
- nbytes = (long)rep.length << 2;
- data = (char *) Xmalloc((unsigned) nbytes);
- if (! data) {
- _XEatData(dpy, (unsigned long) nbytes);
- UnlockDisplay(dpy);
- SyncHandle();
- return (XImage *) NULL;
- }
- _XReadPad (dpy, data, nbytes);
- if (format == XYPixmap)
- image = XCreateImage(dpy, _XVIDtoVisual(dpy, rep.visual),
- Ones (plane_mask &
- (((unsigned long)0xFFFFFFFF) >> (32 - rep.depth))),
- format, 0, data, width, height, dpy->bitmap_pad, 0);
- else /* format == ZPixmap */
- image = XCreateImage (dpy, _XVIDtoVisual(dpy, rep.visual),
- rep.depth, ZPixmap, 0, data, width, height,
- _XGetScanlinePad(dpy, (int) rep.depth), 0);
-
- if (!image)
- Xfree(data);
- UnlockDisplay(dpy);
- SyncHandle();
- return (image);
-}
-
-XImage *XGetSubImage(
- register Display *dpy,
- Drawable d,
- int x,
- int y,
- unsigned int width,
- unsigned int height,
- unsigned long plane_mask,
- int format, /* either XYPixmap or ZPixmap */
- XImage *dest_image,
- int dest_x,
- int dest_y)
-{
- XImage *temp_image;
- temp_image = XGetImage(dpy, d, x, y, width, height,
- plane_mask, format);
- if (!temp_image)
- return (XImage *)NULL;
- _XSetImage(temp_image, dest_image, dest_x, dest_y);
- XDestroyImage(temp_image);
- return (dest_image);
-}
+/*
+
+Copyright 1986, 1998 The Open Group
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group shall not be
+used in advertising or otherwise to promote the sale, use or other dealings
+in this Software without prior written authorization from The Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+#include <X11/Xutil.h> /* for XDestroyImage */
+#include "ImUtil.h"
+
+#define ROUNDUP(nbytes, pad) (((((nbytes) - 1) + (pad)) / (pad)) * (pad))
+
+static unsigned int Ones( /* HACKMEM 169 */
+ unsigned long mask)
+{
+ register unsigned long y;
+
+ y = (mask >> 1) &033333333333;
+ y = mask - y - ((y >>1) & 033333333333);
+ return ((unsigned int) (((y + (y >> 3)) & 030707070707) % 077));
+}
+
+XImage *XGetImage (
+ register Display *dpy,
+ Drawable d,
+ int x,
+ int y,
+ unsigned int width,
+ unsigned int height,
+ unsigned long plane_mask,
+ int format) /* either XYPixmap or ZPixmap */
+{
+ xGetImageReply rep;
+ register xGetImageReq *req;
+ char *data;
+ long nbytes;
+ XImage *image;
+ LockDisplay(dpy);
+ GetReq (GetImage, req);
+ /*
+ * first set up the standard stuff in the request
+ */
+ req->drawable = d;
+ req->x = x;
+ req->y = y;
+ req->width = width;
+ req->height = height;
+ req->planeMask = plane_mask;
+ req->format = format;
+
+ if (_XReply (dpy, (xReply *) &rep, 0, xFalse) == 0 ||
+ rep.length == 0) {
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return (XImage *)NULL;
+ }
+
+ nbytes = (long)rep.length << 2;
+ data = (char *) Xmalloc((unsigned) nbytes);
+ if (! data) {
+ _XEatData(dpy, (unsigned long) nbytes);
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return (XImage *) NULL;
+ }
+ _XReadPad (dpy, data, nbytes);
+ if (format == XYPixmap)
+ image = XCreateImage(dpy, _XVIDtoVisual(dpy, rep.visual),
+ Ones (plane_mask &
+ (((unsigned long)0xFFFFFFFF) >> (32 - rep.depth))),
+ format, 0, data, width, height, dpy->bitmap_pad, 0);
+ else /* format == ZPixmap */
+ image = XCreateImage (dpy, _XVIDtoVisual(dpy, rep.visual),
+ rep.depth, ZPixmap, 0, data, width, height,
+ _XGetScanlinePad(dpy, (int) rep.depth), 0);
+
+ if (!image)
+ Xfree(data);
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return (image);
+}
+
+XImage *XGetSubImage(
+ register Display *dpy,
+ Drawable d,
+ int x,
+ int y,
+ unsigned int width,
+ unsigned int height,
+ unsigned long plane_mask,
+ int format, /* either XYPixmap or ZPixmap */
+ XImage *dest_image,
+ int dest_x,
+ int dest_y)
+{
+ XImage *temp_image;
+ temp_image = XGetImage(dpy, d, x, y, width, height,
+ plane_mask, format);
+ if (!temp_image)
+ return (XImage *)NULL;
+ _XSetImage(temp_image, dest_image, dest_x, dest_y);
+ XDestroyImage(temp_image);
+ return (dest_image);
+}
diff --git a/libX11/src/GetKCnt.c b/libX11/src/GetKCnt.c
index 94c82af83..17f487fbe 100644
--- a/libX11/src/GetKCnt.c
+++ b/libX11/src/GetKCnt.c
@@ -1,55 +1,55 @@
-/*
-
-Copyright 1986, 1998 The Open Group
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall not be
-used in advertising or otherwise to promote the sale, use or other dealings
-in this Software without prior written authorization from The Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-
-int
-XGetKeyboardControl (
- register Display *dpy,
- register XKeyboardState *state)
-{
- xGetKeyboardControlReply rep;
- register xReq *req;
- LockDisplay(dpy);
- GetEmptyReq (GetKeyboardControl, req);
- (void) _XReply (dpy, (xReply *) &rep,
- (SIZEOF(xGetKeyboardControlReply) - SIZEOF(xReply)) >> 2, xTrue);
-
- state->key_click_percent = rep.keyClickPercent;
- state->bell_percent = rep.bellPercent;
- state->bell_pitch = rep.bellPitch;
- state->bell_duration = rep.bellDuration;
- state->led_mask = rep.ledMask;
- state->global_auto_repeat = rep.globalAutoRepeat;
- memcpy (state->auto_repeats, rep.map, sizeof state->auto_repeats);
- UnlockDisplay(dpy);
- SyncHandle();
- return 1;
- }
-
+/*
+
+Copyright 1986, 1998 The Open Group
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group shall not be
+used in advertising or otherwise to promote the sale, use or other dealings
+in this Software without prior written authorization from The Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+
+int
+XGetKeyboardControl (
+ register Display *dpy,
+ register XKeyboardState *state)
+{
+ xGetKeyboardControlReply rep;
+ register xReq *req;
+ LockDisplay(dpy);
+ GetEmptyReq (GetKeyboardControl, req);
+ (void) _XReply (dpy, (xReply *) &rep,
+ (SIZEOF(xGetKeyboardControlReply) - SIZEOF(xReply)) >> 2, xTrue);
+
+ state->key_click_percent = rep.keyClickPercent;
+ state->bell_percent = rep.bellPercent;
+ state->bell_pitch = rep.bellPitch;
+ state->bell_duration = rep.bellDuration;
+ state->led_mask = rep.ledMask;
+ state->global_auto_repeat = rep.globalAutoRepeat;
+ memcpy (state->auto_repeats, rep.map, sizeof state->auto_repeats);
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return 1;
+ }
+
diff --git a/libX11/src/GetMoEv.c b/libX11/src/GetMoEv.c
index d66604217..3db176feb 100644
--- a/libX11/src/GetMoEv.c
+++ b/libX11/src/GetMoEv.c
@@ -1,85 +1,85 @@
-/*
-
-Copyright 1986, 1998 The Open Group
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall not be
-used in advertising or otherwise to promote the sale, use or other dealings
-in this Software without prior written authorization from The Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-
-XTimeCoord *XGetMotionEvents(
- register Display *dpy,
- Window w,
- Time start,
- Time stop,
- int *nEvents) /* RETURN */
-{
- xGetMotionEventsReply rep;
- register xGetMotionEventsReq *req;
- XTimeCoord *tc = NULL;
- long nbytes;
- LockDisplay(dpy);
- GetReq(GetMotionEvents, req);
- req->window = w;
-/* XXX is this right for all machines? */
- req->start = start;
- req->stop = stop;
- if (!_XReply (dpy, (xReply *)&rep, 0, xFalse)) {
- UnlockDisplay(dpy);
- SyncHandle();
- return (NULL);
- }
-
- if (rep.nEvents) {
- if (! (tc = (XTimeCoord *)
- Xmalloc( (unsigned)
- (nbytes = (long) rep.nEvents * sizeof(XTimeCoord))))) {
- _XEatData (dpy, (unsigned long) nbytes);
- UnlockDisplay(dpy);
- SyncHandle();
- return (NULL);
- }
- }
-
- *nEvents = rep.nEvents;
- nbytes = SIZEOF (xTimecoord);
- {
- register XTimeCoord *tcptr;
- register int i;
- xTimecoord xtc;
-
- for (i = rep.nEvents, tcptr = tc; i > 0; i--, tcptr++) {
- _XRead (dpy, (char *) &xtc, nbytes);
- tcptr->time = xtc.time;
- tcptr->x = cvtINT16toShort (xtc.x);
- tcptr->y = cvtINT16toShort (xtc.y);
- }
- }
-
- UnlockDisplay(dpy);
- SyncHandle();
- return (tc);
-}
-
+/*
+
+Copyright 1986, 1998 The Open Group
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group shall not be
+used in advertising or otherwise to promote the sale, use or other dealings
+in this Software without prior written authorization from The Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+
+XTimeCoord *XGetMotionEvents(
+ register Display *dpy,
+ Window w,
+ Time start,
+ Time stop,
+ int *nEvents) /* RETURN */
+{
+ xGetMotionEventsReply rep;
+ register xGetMotionEventsReq *req;
+ XTimeCoord *tc = NULL;
+ long nbytes;
+ LockDisplay(dpy);
+ GetReq(GetMotionEvents, req);
+ req->window = w;
+/* XXX is this right for all machines? */
+ req->start = start;
+ req->stop = stop;
+ if (!_XReply (dpy, (xReply *)&rep, 0, xFalse)) {
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return (NULL);
+ }
+
+ if (rep.nEvents) {
+ if (! (tc = (XTimeCoord *)
+ Xmalloc( (unsigned)
+ (nbytes = (long) rep.nEvents * sizeof(XTimeCoord))))) {
+ _XEatData (dpy, (unsigned long) nbytes);
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return (NULL);
+ }
+ }
+
+ *nEvents = rep.nEvents;
+ nbytes = SIZEOF (xTimecoord);
+ {
+ register XTimeCoord *tcptr;
+ register int i;
+ xTimecoord xtc;
+
+ for (i = rep.nEvents, tcptr = tc; i > 0; i--, tcptr++) {
+ _XRead (dpy, (char *) &xtc, nbytes);
+ tcptr->time = xtc.time;
+ tcptr->x = cvtINT16toShort (xtc.x);
+ tcptr->y = cvtINT16toShort (xtc.y);
+ }
+ }
+
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return (tc);
+}
+
diff --git a/libX11/src/GetNrmHint.c b/libX11/src/GetNrmHint.c
index 289b9c429..6f328e8fd 100644
--- a/libX11/src/GetNrmHint.c
+++ b/libX11/src/GetNrmHint.c
@@ -1,127 +1,127 @@
-/***********************************************************
-Copyright 1988 by Wyse Technology, Inc., San Jose, Ca,
-Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts,
-
- All Rights Reserved
-
-Permission to use, copy, modify, and distribute this software and its
-documentation for any purpose and without fee is hereby granted,
-provided that the above copyright notice appear in all copies and that
-both that copyright notice and this permission notice appear in
-supporting documentation, and that the name Digital not be
-used in advertising or publicity pertaining to distribution of the
-software without specific, written prior permission.
-
-DIGITAL AND WYSE DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
-INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
-EVENT SHALL DIGITAL OR WYSE BE LIABLE FOR ANY SPECIAL, INDIRECT OR
-CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF
-USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
-OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
-PERFORMANCE OF THIS SOFTWARE.
-
-******************************************************************/
-
-/*
-
-Copyright 1987, 1988, 1998 The Open Group
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
-
-The above copyright notice and this permission notice shall be included
-in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
-IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR
-OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
-ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall
-not be used in advertising or otherwise to promote the sale, use or
-other dealings in this Software without prior written authorization
-from The Open Group.
-
-*/
-
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include <X11/Xlibint.h>
-#include <X11/Xatom.h>
-#include "Xatomtype.h"
-#include <X11/Xutil.h>
-#include <stdio.h>
-
-Status XGetWMSizeHints (
- Display *dpy,
- Window w,
- XSizeHints *hints,
- long *supplied,
- Atom property)
-{
- xPropSizeHints *prop = NULL;
- Atom actual_type;
- int actual_format;
- unsigned long leftover;
- unsigned long nitems;
-
- if (XGetWindowProperty (dpy, w, property, 0L,
- (long)NumPropSizeElements,
- False, XA_WM_SIZE_HINTS, &actual_type,
- &actual_format, &nitems, &leftover,
- (unsigned char **)&prop)
- != Success)
- return False;
-
- if ((actual_type != XA_WM_SIZE_HINTS) ||
- (nitems < OldNumPropSizeElements) || (actual_format != 32)) {
- if (prop != NULL) Xfree ((char *)prop);
- return False;
- }
-
- hints->flags = prop->flags;
- /* XSizeHints misdeclares these as int instead of long */
- hints->x = cvtINT32toInt (prop->x);
- hints->y = cvtINT32toInt (prop->y);
- hints->width = cvtINT32toInt (prop->width);
- hints->height = cvtINT32toInt (prop->height);
- hints->min_width = cvtINT32toInt (prop->minWidth);
- hints->min_height = cvtINT32toInt (prop->minHeight);
- hints->max_width = cvtINT32toInt (prop->maxWidth);
- hints->max_height = cvtINT32toInt (prop->maxHeight);
- hints->width_inc = cvtINT32toInt (prop->widthInc);
- hints->height_inc = cvtINT32toInt (prop->heightInc);
- hints->min_aspect.x = cvtINT32toInt (prop->minAspectX);
- hints->min_aspect.y = cvtINT32toInt (prop->minAspectY);
- hints->max_aspect.x = cvtINT32toInt (prop->maxAspectX);
- hints->max_aspect.y = cvtINT32toInt (prop->maxAspectY);
-
- *supplied = (USPosition | USSize | PAllHints);
- if (nitems >= NumPropSizeElements) {
- hints->base_width= cvtINT32toInt (prop->baseWidth);
- hints->base_height= cvtINT32toInt (prop->baseHeight);
- hints->win_gravity= cvtINT32toInt (prop->winGravity);
- *supplied |= (PBaseSize | PWinGravity);
- }
- hints->flags &= (*supplied); /* get rid of unwanted bits */
- Xfree((char *)prop);
- return True;
-}
-
-
-Status XGetWMNormalHints (
- Display *dpy,
- Window w,
- XSizeHints *hints,
- long *supplied)
-{
- return (XGetWMSizeHints (dpy, w, hints, supplied, XA_WM_NORMAL_HINTS));
-}
+/***********************************************************
+Copyright 1988 by Wyse Technology, Inc., San Jose, Ca,
+Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts,
+
+ All Rights Reserved
+
+Permission to use, copy, modify, and distribute this software and its
+documentation for any purpose and without fee is hereby granted,
+provided that the above copyright notice appear in all copies and that
+both that copyright notice and this permission notice appear in
+supporting documentation, and that the name Digital not be
+used in advertising or publicity pertaining to distribution of the
+software without specific, written prior permission.
+
+DIGITAL AND WYSE DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
+INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
+EVENT SHALL DIGITAL OR WYSE BE LIABLE FOR ANY SPECIAL, INDIRECT OR
+CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF
+USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
+OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+PERFORMANCE OF THIS SOFTWARE.
+
+******************************************************************/
+
+/*
+
+Copyright 1987, 1988, 1998 The Open Group
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
+
+The above copyright notice and this permission notice shall be included
+in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR
+OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
+ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group shall
+not be used in advertising or otherwise to promote the sale, use or
+other dealings in this Software without prior written authorization
+from The Open Group.
+
+*/
+
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include <X11/Xlibint.h>
+#include <X11/Xatom.h>
+#include "Xatomtype.h"
+#include <X11/Xutil.h>
+#include <stdio.h>
+
+Status XGetWMSizeHints (
+ Display *dpy,
+ Window w,
+ XSizeHints *hints,
+ long *supplied,
+ Atom property)
+{
+ xPropSizeHints *prop = NULL;
+ Atom actual_type;
+ int actual_format;
+ unsigned long leftover;
+ unsigned long nitems;
+
+ if (XGetWindowProperty (dpy, w, property, 0L,
+ (long)NumPropSizeElements,
+ False, XA_WM_SIZE_HINTS, &actual_type,
+ &actual_format, &nitems, &leftover,
+ (unsigned char **)&prop)
+ != Success)
+ return False;
+
+ if ((actual_type != XA_WM_SIZE_HINTS) ||
+ (nitems < OldNumPropSizeElements) || (actual_format != 32)) {
+ if (prop != NULL) Xfree ((char *)prop);
+ return False;
+ }
+
+ hints->flags = prop->flags;
+ /* XSizeHints misdeclares these as int instead of long */
+ hints->x = cvtINT32toInt (prop->x);
+ hints->y = cvtINT32toInt (prop->y);
+ hints->width = cvtINT32toInt (prop->width);
+ hints->height = cvtINT32toInt (prop->height);
+ hints->min_width = cvtINT32toInt (prop->minWidth);
+ hints->min_height = cvtINT32toInt (prop->minHeight);
+ hints->max_width = cvtINT32toInt (prop->maxWidth);
+ hints->max_height = cvtINT32toInt (prop->maxHeight);
+ hints->width_inc = cvtINT32toInt (prop->widthInc);
+ hints->height_inc = cvtINT32toInt (prop->heightInc);
+ hints->min_aspect.x = cvtINT32toInt (prop->minAspectX);
+ hints->min_aspect.y = cvtINT32toInt (prop->minAspectY);
+ hints->max_aspect.x = cvtINT32toInt (prop->maxAspectX);
+ hints->max_aspect.y = cvtINT32toInt (prop->maxAspectY);
+
+ *supplied = (USPosition | USSize | PAllHints);
+ if (nitems >= NumPropSizeElements) {
+ hints->base_width= cvtINT32toInt (prop->baseWidth);
+ hints->base_height= cvtINT32toInt (prop->baseHeight);
+ hints->win_gravity= cvtINT32toInt (prop->winGravity);
+ *supplied |= (PBaseSize | PWinGravity);
+ }
+ hints->flags &= (*supplied); /* get rid of unwanted bits */
+ Xfree((char *)prop);
+ return True;
+}
+
+
+Status XGetWMNormalHints (
+ Display *dpy,
+ Window w,
+ XSizeHints *hints,
+ long *supplied)
+{
+ return (XGetWMSizeHints (dpy, w, hints, supplied, XA_WM_NORMAL_HINTS));
+}
diff --git a/libX11/src/GetPCnt.c b/libX11/src/GetPCnt.c
index 616a13cba..2c35d210c 100644
--- a/libX11/src/GetPCnt.c
+++ b/libX11/src/GetPCnt.c
@@ -1,52 +1,52 @@
-/*
-
-Copyright 1986, 1998 The Open Group
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall not be
-used in advertising or otherwise to promote the sale, use or other dealings
-in this Software without prior written authorization from The Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-
-int
-XGetPointerControl(
- register Display *dpy,
- /* the following are return only vars */
- int *accel_numer,
- int *accel_denom,
- int *threshold)
-{
- xGetPointerControlReply rep;
- xReq *req;
- LockDisplay(dpy);
- GetEmptyReq(GetPointerControl, req);
- (void) _XReply (dpy, (xReply *)&rep, 0, xTrue);
- *accel_numer = rep.accelNumerator;
- *accel_denom = rep.accelDenominator;
- *threshold = rep.threshold;
- UnlockDisplay(dpy);
- SyncHandle();
- return 1;
-}
-
+/*
+
+Copyright 1986, 1998 The Open Group
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group shall not be
+used in advertising or otherwise to promote the sale, use or other dealings
+in this Software without prior written authorization from The Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+
+int
+XGetPointerControl(
+ register Display *dpy,
+ /* the following are return only vars */
+ int *accel_numer,
+ int *accel_denom,
+ int *threshold)
+{
+ xGetPointerControlReply rep;
+ xReq *req;
+ LockDisplay(dpy);
+ GetEmptyReq(GetPointerControl, req);
+ (void) _XReply (dpy, (xReply *)&rep, 0, xTrue);
+ *accel_numer = rep.accelNumerator;
+ *accel_denom = rep.accelDenominator;
+ *threshold = rep.threshold;
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return 1;
+}
+
diff --git a/libX11/src/GetPntMap.c b/libX11/src/GetPntMap.c
index a89d28aed..0fcdb6696 100644
--- a/libX11/src/GetPntMap.c
+++ b/libX11/src/GetPntMap.c
@@ -1,123 +1,123 @@
-/*
-
-Copyright 1986, 1998 The Open Group
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall not be
-used in advertising or otherwise to promote the sale, use or other dealings
-in this Software without prior written authorization from The Open Group.
-
-*/
-
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-
-#ifdef MIN /* some systems define this in <sys/param.h> */
-#undef MIN
-#endif
-#define MIN(a, b) ((a) < (b) ? (a) : (b))
-
-int XGetPointerMapping (
- register Display *dpy,
- unsigned char *map, /* RETURN */
- int nmaps)
-
-{
- unsigned char mapping[256]; /* known fixed size */
- long nbytes, remainder = 0;
- xGetPointerMappingReply rep;
- register xReq *req;
-
- LockDisplay(dpy);
- GetEmptyReq(GetPointerMapping, req);
- if (! _XReply(dpy, (xReply *)&rep, 0, xFalse)) {
- UnlockDisplay(dpy);
- SyncHandle();
- return 0;
- }
-
- nbytes = (long)rep.length << 2;
-
- /* Don't count on the server returning a valid value */
- if (nbytes > sizeof mapping) {
- remainder = nbytes - sizeof mapping;
- nbytes = sizeof mapping;
- }
- _XRead (dpy, (char *)mapping, nbytes);
- /* don't return more data than the user asked for. */
- if (rep.nElts) {
- memcpy ((char *) map, (char *) mapping,
- MIN((int)rep.nElts, nmaps) );
- }
-
- if (remainder)
- _XEatData(dpy, (unsigned long)remainder);
-
- UnlockDisplay(dpy);
- SyncHandle();
- return ((int) rep.nElts);
-}
-
-KeySym *
-XGetKeyboardMapping (Display *dpy,
-#if NeedWidePrototypes
- unsigned int first_keycode,
-#else
- KeyCode first_keycode,
-#endif
- int count,
- int *keysyms_per_keycode)
-{
- long nbytes;
- unsigned long nkeysyms;
- register KeySym *mapping = NULL;
- xGetKeyboardMappingReply rep;
- register xGetKeyboardMappingReq *req;
-
- LockDisplay(dpy);
- GetReq(GetKeyboardMapping, req);
- req->firstKeyCode = first_keycode;
- req->count = count;
- if (! _XReply(dpy, (xReply *)&rep, 0, xFalse)) {
- UnlockDisplay(dpy);
- SyncHandle();
- return (KeySym *) NULL;
- }
-
- nkeysyms = (unsigned long) rep.length;
- if (nkeysyms > 0) {
- nbytes = nkeysyms * sizeof (KeySym);
- mapping = (KeySym *) Xmalloc ((unsigned) nbytes);
- nbytes = nkeysyms << 2;
- if (! mapping) {
- _XEatData(dpy, (unsigned long) nbytes);
- UnlockDisplay(dpy);
- SyncHandle();
- return (KeySym *) NULL;
- }
- _XRead32 (dpy, (long *) mapping, nbytes);
- }
- *keysyms_per_keycode = rep.keySymsPerKeyCode;
- UnlockDisplay(dpy);
- SyncHandle();
- return (mapping);
-}
-
+/*
+
+Copyright 1986, 1998 The Open Group
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group shall not be
+used in advertising or otherwise to promote the sale, use or other dealings
+in this Software without prior written authorization from The Open Group.
+
+*/
+
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+
+#ifdef MIN /* some systems define this in <sys/param.h> */
+#undef MIN
+#endif
+#define MIN(a, b) ((a) < (b) ? (a) : (b))
+
+int XGetPointerMapping (
+ register Display *dpy,
+ unsigned char *map, /* RETURN */
+ int nmaps)
+
+{
+ unsigned char mapping[256]; /* known fixed size */
+ long nbytes, remainder = 0;
+ xGetPointerMappingReply rep;
+ register xReq *req;
+
+ LockDisplay(dpy);
+ GetEmptyReq(GetPointerMapping, req);
+ if (! _XReply(dpy, (xReply *)&rep, 0, xFalse)) {
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return 0;
+ }
+
+ nbytes = (long)rep.length << 2;
+
+ /* Don't count on the server returning a valid value */
+ if (nbytes > sizeof mapping) {
+ remainder = nbytes - sizeof mapping;
+ nbytes = sizeof mapping;
+ }
+ _XRead (dpy, (char *)mapping, nbytes);
+ /* don't return more data than the user asked for. */
+ if (rep.nElts) {
+ memcpy ((char *) map, (char *) mapping,
+ MIN((int)rep.nElts, nmaps) );
+ }
+
+ if (remainder)
+ _XEatData(dpy, (unsigned long)remainder);
+
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return ((int) rep.nElts);
+}
+
+KeySym *
+XGetKeyboardMapping (Display *dpy,
+#if NeedWidePrototypes
+ unsigned int first_keycode,
+#else
+ KeyCode first_keycode,
+#endif
+ int count,
+ int *keysyms_per_keycode)
+{
+ long nbytes;
+ unsigned long nkeysyms;
+ register KeySym *mapping = NULL;
+ xGetKeyboardMappingReply rep;
+ register xGetKeyboardMappingReq *req;
+
+ LockDisplay(dpy);
+ GetReq(GetKeyboardMapping, req);
+ req->firstKeyCode = first_keycode;
+ req->count = count;
+ if (! _XReply(dpy, (xReply *)&rep, 0, xFalse)) {
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return (KeySym *) NULL;
+ }
+
+ nkeysyms = (unsigned long) rep.length;
+ if (nkeysyms > 0) {
+ nbytes = nkeysyms * sizeof (KeySym);
+ mapping = (KeySym *) Xmalloc ((unsigned) nbytes);
+ nbytes = nkeysyms << 2;
+ if (! mapping) {
+ _XEatData(dpy, (unsigned long) nbytes);
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return (KeySym *) NULL;
+ }
+ _XRead32 (dpy, (long *) mapping, nbytes);
+ }
+ *keysyms_per_keycode = rep.keySymsPerKeyCode;
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return (mapping);
+}
+
diff --git a/libX11/src/GetRGBCMap.c b/libX11/src/GetRGBCMap.c
index 67148e72c..9e227a263 100644
--- a/libX11/src/GetRGBCMap.c
+++ b/libX11/src/GetRGBCMap.c
@@ -1,135 +1,135 @@
-
-/*
-
-Copyright 1987, 1998 The Open Group
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
-
-The above copyright notice and this permission notice shall be included
-in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
-IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR
-OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
-ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall
-not be used in advertising or otherwise to promote the sale, use or
-other dealings in this Software without prior written authorization
-from The Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include <X11/Xlibint.h>
-#include <X11/Xutil.h>
-#include "Xatomtype.h"
-#include <X11/Xatom.h>
-
-Status XGetRGBColormaps (
- Display *dpy,
- Window w,
- XStandardColormap **stdcmap, /* RETURN */
- int *count, /* RETURN */
- Atom property) /* XA_RGB_BEST_MAP, etc. */
-{
- register int i; /* iterator variable */
- xPropStandardColormap *data = NULL; /* data read in from prop */
- Atom actual_type; /* how the prop was actually stored */
- int actual_format; /* ditto */
- unsigned long leftover; /* how much was left over */
- unsigned long nitems; /* number of 32bits read */
- int ncmaps; /* number of structs this makes */
- Bool old_style = False; /* if was too short */
- VisualID def_visual = None; /* visual to use if prop too short */
- XStandardColormap *cmaps; /* return value */
-
-
- if (XGetWindowProperty (dpy, w, property, 0L, 1000000L, False,
- XA_RGB_COLOR_MAP, &actual_type, &actual_format,
- &nitems, &leftover, (unsigned char **)&data)
- != Success)
- return False;
-
- /* if wrong type or format, or too small for us, then punt */
- if ((actual_type != XA_RGB_COLOR_MAP) || (actual_format != 32) ||
- (nitems < OldNumPropStandardColormapElements)) {
- if (data) Xfree ((char *) data);
- return False;
- }
-
- /*
- * See how many properties were found; if pre-ICCCM then assume
- * default visual and a kill id of 1.
- */
- if (nitems < NumPropStandardColormapElements) {
- ncmaps = 1;
- old_style = True;
- if (nitems < (NumPropStandardColormapElements - 1)) {
- Screen *sp = _XScreenOfWindow (dpy, w);
-
- if (!sp) {
- if (data) Xfree ((char *) data);
- return False;
- }
- def_visual = sp->root_visual->visualid;
- }
- } else {
- /*
- * make sure we have an integral number of colormaps
- */
- ncmaps = (nitems / NumPropStandardColormapElements);
- if ((((unsigned long) ncmaps) * NumPropStandardColormapElements) !=
- nitems) {
- if (data) Xfree ((char *) data);
- return False;
- }
- }
-
-
- /*
- * allocate array
- */
- cmaps = (XStandardColormap *) Xmalloc (ncmaps *
- sizeof (XStandardColormap));
- if (!cmaps) {
- if (data) Xfree ((char *) data);
- return False;
- }
-
-
- /*
- * and fill it in, handling compatibility with pre-ICCCM short stdcmaps
- */
- {
- register XStandardColormap *map;
- register xPropStandardColormap *prop;
-
- for (i = ncmaps, map = cmaps, prop = data; i > 0; i--, map++, prop++) {
- map->colormap = prop->colormap;
- map->red_max = prop->red_max;
- map->red_mult = prop->red_mult;
- map->green_max = prop->green_max;
- map->green_mult = prop->green_mult;
- map->blue_max = prop->blue_max;
- map->blue_mult = prop->blue_mult;
- map->base_pixel = prop->base_pixel;
- map->visualid = (def_visual ? def_visual : prop->visualid);
- map->killid = (old_style ? None : prop->killid);
- }
- }
- Xfree ((char *) data);
- *stdcmap = cmaps;
- *count = ncmaps;
- return True;
-}
-
+
+/*
+
+Copyright 1987, 1998 The Open Group
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
+
+The above copyright notice and this permission notice shall be included
+in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR
+OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
+ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group shall
+not be used in advertising or otherwise to promote the sale, use or
+other dealings in this Software without prior written authorization
+from The Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include <X11/Xlibint.h>
+#include <X11/Xutil.h>
+#include "Xatomtype.h"
+#include <X11/Xatom.h>
+
+Status XGetRGBColormaps (
+ Display *dpy,
+ Window w,
+ XStandardColormap **stdcmap, /* RETURN */
+ int *count, /* RETURN */
+ Atom property) /* XA_RGB_BEST_MAP, etc. */
+{
+ register int i; /* iterator variable */
+ xPropStandardColormap *data = NULL; /* data read in from prop */
+ Atom actual_type; /* how the prop was actually stored */
+ int actual_format; /* ditto */
+ unsigned long leftover; /* how much was left over */
+ unsigned long nitems; /* number of 32bits read */
+ int ncmaps; /* number of structs this makes */
+ Bool old_style = False; /* if was too short */
+ VisualID def_visual = None; /* visual to use if prop too short */
+ XStandardColormap *cmaps; /* return value */
+
+
+ if (XGetWindowProperty (dpy, w, property, 0L, 1000000L, False,
+ XA_RGB_COLOR_MAP, &actual_type, &actual_format,
+ &nitems, &leftover, (unsigned char **)&data)
+ != Success)
+ return False;
+
+ /* if wrong type or format, or too small for us, then punt */
+ if ((actual_type != XA_RGB_COLOR_MAP) || (actual_format != 32) ||
+ (nitems < OldNumPropStandardColormapElements)) {
+ if (data) Xfree ((char *) data);
+ return False;
+ }
+
+ /*
+ * See how many properties were found; if pre-ICCCM then assume
+ * default visual and a kill id of 1.
+ */
+ if (nitems < NumPropStandardColormapElements) {
+ ncmaps = 1;
+ old_style = True;
+ if (nitems < (NumPropStandardColormapElements - 1)) {
+ Screen *sp = _XScreenOfWindow (dpy, w);
+
+ if (!sp) {
+ if (data) Xfree ((char *) data);
+ return False;
+ }
+ def_visual = sp->root_visual->visualid;
+ }
+ } else {
+ /*
+ * make sure we have an integral number of colormaps
+ */
+ ncmaps = (nitems / NumPropStandardColormapElements);
+ if ((((unsigned long) ncmaps) * NumPropStandardColormapElements) !=
+ nitems) {
+ if (data) Xfree ((char *) data);
+ return False;
+ }
+ }
+
+
+ /*
+ * allocate array
+ */
+ cmaps = (XStandardColormap *) Xmalloc (ncmaps *
+ sizeof (XStandardColormap));
+ if (!cmaps) {
+ if (data) Xfree ((char *) data);
+ return False;
+ }
+
+
+ /*
+ * and fill it in, handling compatibility with pre-ICCCM short stdcmaps
+ */
+ {
+ register XStandardColormap *map;
+ register xPropStandardColormap *prop;
+
+ for (i = ncmaps, map = cmaps, prop = data; i > 0; i--, map++, prop++) {
+ map->colormap = prop->colormap;
+ map->red_max = prop->red_max;
+ map->red_mult = prop->red_mult;
+ map->green_max = prop->green_max;
+ map->green_mult = prop->green_mult;
+ map->blue_max = prop->blue_max;
+ map->blue_mult = prop->blue_mult;
+ map->base_pixel = prop->base_pixel;
+ map->visualid = (def_visual ? def_visual : prop->visualid);
+ map->killid = (old_style ? None : prop->killid);
+ }
+ }
+ Xfree ((char *) data);
+ *stdcmap = cmaps;
+ *count = ncmaps;
+ return True;
+}
+
diff --git a/libX11/src/GetSOwner.c b/libX11/src/GetSOwner.c
index a54816a84..2258f8ce1 100644
--- a/libX11/src/GetSOwner.c
+++ b/libX11/src/GetSOwner.c
@@ -1,45 +1,45 @@
-/*
-
-Copyright 1986, 1998 The Open Group
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall not be
-used in advertising or otherwise to promote the sale, use or other dealings
-in this Software without prior written authorization from The Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-
-Window XGetSelectionOwner(
- register Display *dpy,
- Atom selection)
-{
- xGetSelectionOwnerReply rep;
- register xResourceReq *req;
- LockDisplay(dpy);
- GetResReq(GetSelectionOwner, selection, req);
-
- if (_XReply(dpy, (xReply *)&rep, 0, xTrue) == 0) rep.owner = None;
- UnlockDisplay(dpy);
- SyncHandle();
- return(rep.owner);
-}
+/*
+
+Copyright 1986, 1998 The Open Group
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group shall not be
+used in advertising or otherwise to promote the sale, use or other dealings
+in this Software without prior written authorization from The Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+
+Window XGetSelectionOwner(
+ register Display *dpy,
+ Atom selection)
+{
+ xGetSelectionOwnerReply rep;
+ register xResourceReq *req;
+ LockDisplay(dpy);
+ GetResReq(GetSelectionOwner, selection, req);
+
+ if (_XReply(dpy, (xReply *)&rep, 0, xTrue) == 0) rep.owner = None;
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return(rep.owner);
+}
diff --git a/libX11/src/GetSSaver.c b/libX11/src/GetSSaver.c
index dcd4c64bc..1aba3bb74 100644
--- a/libX11/src/GetSSaver.c
+++ b/libX11/src/GetSSaver.c
@@ -1,56 +1,56 @@
-/*
-
-Copyright 1986, 1998 The Open Group
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall not be
-used in advertising or otherwise to promote the sale, use or other dealings
-in this Software without prior written authorization from The Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-
-int
-XGetScreenSaver(
- register Display *dpy,
- /* the following are return only vars */
- int *timeout,
- int *interval,
- int *prefer_blanking,
- int *allow_exp) /*boolean */
-
-{
- xGetScreenSaverReply rep;
- register xReq *req;
- LockDisplay(dpy);
- GetEmptyReq(GetScreenSaver, req);
-
- (void) _XReply (dpy, (xReply *)&rep, 0, xTrue);
- *timeout = rep.timeout;
- *interval = rep.interval;
- *prefer_blanking = rep.preferBlanking;
- *allow_exp = rep.allowExposures;
- UnlockDisplay(dpy);
- SyncHandle();
- return 1;
-}
-
+/*
+
+Copyright 1986, 1998 The Open Group
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group shall not be
+used in advertising or otherwise to promote the sale, use or other dealings
+in this Software without prior written authorization from The Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+
+int
+XGetScreenSaver(
+ register Display *dpy,
+ /* the following are return only vars */
+ int *timeout,
+ int *interval,
+ int *prefer_blanking,
+ int *allow_exp) /*boolean */
+
+{
+ xGetScreenSaverReply rep;
+ register xReq *req;
+ LockDisplay(dpy);
+ GetEmptyReq(GetScreenSaver, req);
+
+ (void) _XReply (dpy, (xReply *)&rep, 0, xTrue);
+ *timeout = rep.timeout;
+ *interval = rep.interval;
+ *prefer_blanking = rep.preferBlanking;
+ *allow_exp = rep.allowExposures;
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return 1;
+}
+
diff --git a/libX11/src/GetStCmap.c b/libX11/src/GetStCmap.c
index ec4244acf..82fb2134e 100644
--- a/libX11/src/GetStCmap.c
+++ b/libX11/src/GetStCmap.c
@@ -1,117 +1,117 @@
-
-/***********************************************************
-
-Copyright 1987, 1998 The Open Group
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall not be
-used in advertising or otherwise to promote the sale, use or other dealings
-in this Software without prior written authorization from The Open Group.
-
-
-Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts.
-
- All Rights Reserved
-
-Permission to use, copy, modify, and distribute this software and its
-documentation for any purpose and without fee is hereby granted,
-provided that the above copyright notice appear in all copies and that
-both that copyright notice and this permission notice appear in
-supporting documentation, and that the name of Digital not be
-used in advertising or publicity pertaining to distribution of the
-software without specific, written prior permission.
-
-DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
-ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
-DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
-ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
-WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
-ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
-SOFTWARE.
-
-******************************************************************/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include <X11/Xlibint.h>
-#include <X11/Xutil.h>
-#include "Xatomtype.h"
-#include <X11/Xatom.h>
-
-/*
- * WARNING
- *
- * This is a pre-ICCCM routine. It must not reference any of the new fields
- * in the XStandardColormap structure.
- */
-
-Status XGetStandardColormap (
- Display *dpy,
- Window w,
- XStandardColormap *cmap,
- Atom property) /* XA_RGB_BEST_MAP, etc. */
-{
- Status stat; /* return value */
- XStandardColormap *stdcmaps; /* will get malloced value */
- int nstdcmaps; /* count of above */
-
- stat = XGetRGBColormaps (dpy, w, &stdcmaps, &nstdcmaps, property);
- if (stat) {
- XStandardColormap *use;
-
- if (nstdcmaps > 1) {
- VisualID vid;
- Screen *sp = _XScreenOfWindow (dpy, w);
- int i;
-
- if (!sp) {
- if (stdcmaps) Xfree ((char *) stdcmaps);
- return False;
- }
- vid = sp->root_visual->visualid;
-
- for (i = 0; i < nstdcmaps; i++) {
- if (stdcmaps[i].visualid == vid) break;
- }
-
- if (i == nstdcmaps) { /* not found */
- Xfree ((char *) stdcmaps);
- return False;
- }
- use = &stdcmaps[i];
- } else {
- use = stdcmaps;
- }
-
- /*
- * assign only those fields which were in the pre-ICCCM version
- */
- cmap->colormap = use->colormap;
- cmap->red_max = use->red_max;
- cmap->red_mult = use->red_mult;
- cmap->green_max = use->green_max;
- cmap->green_mult = use->green_mult;
- cmap->blue_max = use->blue_max;
- cmap->blue_mult = use->blue_mult;
- cmap->base_pixel = use->base_pixel;
-
- Xfree ((char *) stdcmaps); /* don't need alloced memory */
- }
- return stat;
-}
+
+/***********************************************************
+
+Copyright 1987, 1998 The Open Group
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group shall not be
+used in advertising or otherwise to promote the sale, use or other dealings
+in this Software without prior written authorization from The Open Group.
+
+
+Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts.
+
+ All Rights Reserved
+
+Permission to use, copy, modify, and distribute this software and its
+documentation for any purpose and without fee is hereby granted,
+provided that the above copyright notice appear in all copies and that
+both that copyright notice and this permission notice appear in
+supporting documentation, and that the name of Digital not be
+used in advertising or publicity pertaining to distribution of the
+software without specific, written prior permission.
+
+DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
+ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
+DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
+ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
+WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
+ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
+SOFTWARE.
+
+******************************************************************/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include <X11/Xlibint.h>
+#include <X11/Xutil.h>
+#include "Xatomtype.h"
+#include <X11/Xatom.h>
+
+/*
+ * WARNING
+ *
+ * This is a pre-ICCCM routine. It must not reference any of the new fields
+ * in the XStandardColormap structure.
+ */
+
+Status XGetStandardColormap (
+ Display *dpy,
+ Window w,
+ XStandardColormap *cmap,
+ Atom property) /* XA_RGB_BEST_MAP, etc. */
+{
+ Status stat; /* return value */
+ XStandardColormap *stdcmaps; /* will get malloced value */
+ int nstdcmaps; /* count of above */
+
+ stat = XGetRGBColormaps (dpy, w, &stdcmaps, &nstdcmaps, property);
+ if (stat) {
+ XStandardColormap *use;
+
+ if (nstdcmaps > 1) {
+ VisualID vid;
+ Screen *sp = _XScreenOfWindow (dpy, w);
+ int i;
+
+ if (!sp) {
+ if (stdcmaps) Xfree ((char *) stdcmaps);
+ return False;
+ }
+ vid = sp->root_visual->visualid;
+
+ for (i = 0; i < nstdcmaps; i++) {
+ if (stdcmaps[i].visualid == vid) break;
+ }
+
+ if (i == nstdcmaps) { /* not found */
+ Xfree ((char *) stdcmaps);
+ return False;
+ }
+ use = &stdcmaps[i];
+ } else {
+ use = stdcmaps;
+ }
+
+ /*
+ * assign only those fields which were in the pre-ICCCM version
+ */
+ cmap->colormap = use->colormap;
+ cmap->red_max = use->red_max;
+ cmap->red_mult = use->red_mult;
+ cmap->green_max = use->green_max;
+ cmap->green_mult = use->green_mult;
+ cmap->blue_max = use->blue_max;
+ cmap->blue_mult = use->blue_mult;
+ cmap->base_pixel = use->base_pixel;
+
+ Xfree ((char *) stdcmaps); /* don't need alloced memory */
+ }
+ return stat;
+}
diff --git a/libX11/src/GetTxtProp.c b/libX11/src/GetTxtProp.c
index 0589c361c..d14505e2e 100644
--- a/libX11/src/GetTxtProp.c
+++ b/libX11/src/GetTxtProp.c
@@ -1,113 +1,113 @@
-/***********************************************************
-Copyright 1988 by Wyse Technology, Inc., San Jose, Ca.,
-
- All Rights Reserved
-
-Permission to use, copy, modify, and distribute this software and its
-documentation for any purpose and without fee is hereby granted,
-provided that the above copyright notice appear in all copies and that
-both that copyright notice and this permission notice appear in
-supporting documentation, and that the name Wyse not be
-used in advertising or publicity pertaining to distribution of the
-software without specific, written prior permission.
-
-WYSE DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
-ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
-DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
-ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
-WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
-ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
-SOFTWARE.
-
-******************************************************************/
-/*
-
-Copyright 1988, 1998 The Open Group
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
-
-The above copyright notice and this permission notice shall be included
-in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
-IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR
-OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
-ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall
-not be used in advertising or otherwise to promote the sale, use or
-other dealings in this Software without prior written authorization
-from The Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include <X11/Xlibint.h>
-#include <X11/Xatom.h>
-#include <X11/Xutil.h>
-#include <X11/Xos.h>
-#include <stdio.h>
-
-Status XGetTextProperty (
- Display *display,
- Window window,
- XTextProperty *tp,
- Atom property)
-{
- Atom actual_type;
- int actual_format = 0;
- unsigned long nitems = 0L, leftover = 0L;
- unsigned char *prop = NULL;
-
- if (XGetWindowProperty (display, window, property, 0L, 1000000L, False,
- AnyPropertyType, &actual_type, &actual_format,
- &nitems, &leftover, &prop) == Success &&
- actual_type != None) {
- /* okay, fill it in */
- tp->value = prop;
- tp->encoding = actual_type;
- tp->format = actual_format;
- tp->nitems = nitems;
- return True;
- }
-
- tp->value = NULL;
- tp->encoding = None;
- tp->format = 0;
- tp->nitems = 0;
- return False;
-}
-
-Status XGetWMName (
- Display *dpy,
- Window w,
- XTextProperty *tp)
-{
- return (XGetTextProperty (dpy, w, tp, XA_WM_NAME));
-}
-
-Status XGetWMIconName (
- Display *dpy,
- Window w,
- XTextProperty *tp)
-{
- return (XGetTextProperty (dpy, w, tp, XA_WM_ICON_NAME));
-}
-
-Status XGetWMClientMachine (
- Display *dpy,
- Window w,
- XTextProperty *tp)
-{
- return (XGetTextProperty (dpy, w, tp, XA_WM_CLIENT_MACHINE));
-}
-
+/***********************************************************
+Copyright 1988 by Wyse Technology, Inc., San Jose, Ca.,
+
+ All Rights Reserved
+
+Permission to use, copy, modify, and distribute this software and its
+documentation for any purpose and without fee is hereby granted,
+provided that the above copyright notice appear in all copies and that
+both that copyright notice and this permission notice appear in
+supporting documentation, and that the name Wyse not be
+used in advertising or publicity pertaining to distribution of the
+software without specific, written prior permission.
+
+WYSE DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
+ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
+DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
+ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
+WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
+ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
+SOFTWARE.
+
+******************************************************************/
+/*
+
+Copyright 1988, 1998 The Open Group
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
+
+The above copyright notice and this permission notice shall be included
+in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR
+OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
+ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group shall
+not be used in advertising or otherwise to promote the sale, use or
+other dealings in this Software without prior written authorization
+from The Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include <X11/Xlibint.h>
+#include <X11/Xatom.h>
+#include <X11/Xutil.h>
+#include <X11/Xos.h>
+#include <stdio.h>
+
+Status XGetTextProperty (
+ Display *display,
+ Window window,
+ XTextProperty *tp,
+ Atom property)
+{
+ Atom actual_type;
+ int actual_format = 0;
+ unsigned long nitems = 0L, leftover = 0L;
+ unsigned char *prop = NULL;
+
+ if (XGetWindowProperty (display, window, property, 0L, 1000000L, False,
+ AnyPropertyType, &actual_type, &actual_format,
+ &nitems, &leftover, &prop) == Success &&
+ actual_type != None) {
+ /* okay, fill it in */
+ tp->value = prop;
+ tp->encoding = actual_type;
+ tp->format = actual_format;
+ tp->nitems = nitems;
+ return True;
+ }
+
+ tp->value = NULL;
+ tp->encoding = None;
+ tp->format = 0;
+ tp->nitems = 0;
+ return False;
+}
+
+Status XGetWMName (
+ Display *dpy,
+ Window w,
+ XTextProperty *tp)
+{
+ return (XGetTextProperty (dpy, w, tp, XA_WM_NAME));
+}
+
+Status XGetWMIconName (
+ Display *dpy,
+ Window w,
+ XTextProperty *tp)
+{
+ return (XGetTextProperty (dpy, w, tp, XA_WM_ICON_NAME));
+}
+
+Status XGetWMClientMachine (
+ Display *dpy,
+ Window w,
+ XTextProperty *tp)
+{
+ return (XGetTextProperty (dpy, w, tp, XA_WM_CLIENT_MACHINE));
+}
+
diff --git a/libX11/src/GetWAttrs.c b/libX11/src/GetWAttrs.c
index 874cb1b46..c10824cf4 100644
--- a/libX11/src/GetWAttrs.c
+++ b/libX11/src/GetWAttrs.c
@@ -1,155 +1,155 @@
-/*
-
-Copyright 1986, 1998 The Open Group
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall not be
-used in advertising or otherwise to promote the sale, use or other dealings
-in this Software without prior written authorization from The Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-
-typedef struct _WAttrsState {
- unsigned long attr_seq;
- unsigned long geom_seq;
- XWindowAttributes *attr;
-} _XWAttrsState;
-
-static Bool
-_XWAttrsHandler(
- register Display *dpy,
- register xReply *rep,
- char *buf,
- int len,
- XPointer data)
-{
- register _XWAttrsState *state;
- xGetWindowAttributesReply replbuf;
- register xGetWindowAttributesReply *repl;
- register XWindowAttributes *attr;
-
- state = (_XWAttrsState *)data;
- if (dpy->last_request_read != state->attr_seq) {
- if (dpy->last_request_read == state->geom_seq &&
- !state->attr &&
- rep->generic.type == X_Error &&
- rep->error.errorCode == BadDrawable)
- return True;
- return False;
- }
- if (rep->generic.type == X_Error) {
- state->attr = (XWindowAttributes *)NULL;
- return False;
- }
- repl = (xGetWindowAttributesReply *)
- _XGetAsyncReply(dpy, (char *)&replbuf, rep, buf, len,
- (SIZEOF(xGetWindowAttributesReply) - SIZEOF(xReply)) >> 2,
- True);
- attr = state->attr;
- attr->class = repl->class;
- attr->bit_gravity = repl->bitGravity;
- attr->win_gravity = repl->winGravity;
- attr->backing_store = repl->backingStore;
- attr->backing_planes = repl->backingBitPlanes;
- attr->backing_pixel = repl->backingPixel;
- attr->save_under = repl->saveUnder;
- attr->colormap = repl->colormap;
- attr->map_installed = repl->mapInstalled;
- attr->map_state = repl->mapState;
- attr->all_event_masks = repl->allEventMasks;
- attr->your_event_mask = repl->yourEventMask;
- attr->do_not_propagate_mask = repl->doNotPropagateMask;
- attr->override_redirect = repl->override;
- attr->visual = _XVIDtoVisual (dpy, repl->visualID);
- return True;
-}
-
-Status
-_XGetWindowAttributes(
- register Display *dpy,
- Window w,
- XWindowAttributes *attr)
-{
- xGetGeometryReply rep;
- register xResourceReq *req;
- register int i;
- register Screen *sp;
- _XAsyncHandler async;
- _XWAttrsState async_state;
-
- GetResReq(GetWindowAttributes, w, req);
-
- async_state.attr_seq = dpy->request;
- async_state.geom_seq = 0;
- async_state.attr = attr;
- async.next = dpy->async_handlers;
- async.handler = _XWAttrsHandler;
- async.data = (XPointer)&async_state;
- dpy->async_handlers = &async;
-
- GetResReq(GetGeometry, w, req);
-
- async_state.geom_seq = dpy->request;
-
- if (!_XReply (dpy, (xReply *)&rep, 0, xTrue)) {
- DeqAsyncHandler(dpy, &async);
- return (0);
- }
- DeqAsyncHandler(dpy, &async);
- if (!async_state.attr) {
- return (0);
- }
- attr->x = cvtINT16toInt (rep.x);
- attr->y = cvtINT16toInt (rep.y);
- attr->width = rep.width;
- attr->height = rep.height;
- attr->border_width = rep.borderWidth;
- attr->depth = rep.depth;
- attr->root = rep.root;
- /* find correct screen so that applications find it easier.... */
- for (i = 0; i < dpy->nscreens; i++) {
- sp = &dpy->screens[i];
- if (sp->root == attr->root) {
- attr->screen = sp;
- break;
- }
- }
- return(1);
-}
-
-Status
-XGetWindowAttributes(
- Display *dpy,
- Window w,
- XWindowAttributes *attr)
-{
- Status ret;
-
- LockDisplay(dpy);
- ret = _XGetWindowAttributes(dpy, w, attr);
- UnlockDisplay(dpy);
- SyncHandle();
-
- return ret;
-}
-
+/*
+
+Copyright 1986, 1998 The Open Group
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group shall not be
+used in advertising or otherwise to promote the sale, use or other dealings
+in this Software without prior written authorization from The Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+
+typedef struct _WAttrsState {
+ unsigned long attr_seq;
+ unsigned long geom_seq;
+ XWindowAttributes *attr;
+} _XWAttrsState;
+
+static Bool
+_XWAttrsHandler(
+ register Display *dpy,
+ register xReply *rep,
+ char *buf,
+ int len,
+ XPointer data)
+{
+ register _XWAttrsState *state;
+ xGetWindowAttributesReply replbuf;
+ register xGetWindowAttributesReply *repl;
+ register XWindowAttributes *attr;
+
+ state = (_XWAttrsState *)data;
+ if (dpy->last_request_read != state->attr_seq) {
+ if (dpy->last_request_read == state->geom_seq &&
+ !state->attr &&
+ rep->generic.type == X_Error &&
+ rep->error.errorCode == BadDrawable)
+ return True;
+ return False;
+ }
+ if (rep->generic.type == X_Error) {
+ state->attr = (XWindowAttributes *)NULL;
+ return False;
+ }
+ repl = (xGetWindowAttributesReply *)
+ _XGetAsyncReply(dpy, (char *)&replbuf, rep, buf, len,
+ (SIZEOF(xGetWindowAttributesReply) - SIZEOF(xReply)) >> 2,
+ True);
+ attr = state->attr;
+ attr->class = repl->class;
+ attr->bit_gravity = repl->bitGravity;
+ attr->win_gravity = repl->winGravity;
+ attr->backing_store = repl->backingStore;
+ attr->backing_planes = repl->backingBitPlanes;
+ attr->backing_pixel = repl->backingPixel;
+ attr->save_under = repl->saveUnder;
+ attr->colormap = repl->colormap;
+ attr->map_installed = repl->mapInstalled;
+ attr->map_state = repl->mapState;
+ attr->all_event_masks = repl->allEventMasks;
+ attr->your_event_mask = repl->yourEventMask;
+ attr->do_not_propagate_mask = repl->doNotPropagateMask;
+ attr->override_redirect = repl->override;
+ attr->visual = _XVIDtoVisual (dpy, repl->visualID);
+ return True;
+}
+
+Status
+_XGetWindowAttributes(
+ register Display *dpy,
+ Window w,
+ XWindowAttributes *attr)
+{
+ xGetGeometryReply rep;
+ register xResourceReq *req;
+ register int i;
+ register Screen *sp;
+ _XAsyncHandler async;
+ _XWAttrsState async_state;
+
+ GetResReq(GetWindowAttributes, w, req);
+
+ async_state.attr_seq = dpy->request;
+ async_state.geom_seq = 0;
+ async_state.attr = attr;
+ async.next = dpy->async_handlers;
+ async.handler = _XWAttrsHandler;
+ async.data = (XPointer)&async_state;
+ dpy->async_handlers = &async;
+
+ GetResReq(GetGeometry, w, req);
+
+ async_state.geom_seq = dpy->request;
+
+ if (!_XReply (dpy, (xReply *)&rep, 0, xTrue)) {
+ DeqAsyncHandler(dpy, &async);
+ return (0);
+ }
+ DeqAsyncHandler(dpy, &async);
+ if (!async_state.attr) {
+ return (0);
+ }
+ attr->x = cvtINT16toInt (rep.x);
+ attr->y = cvtINT16toInt (rep.y);
+ attr->width = rep.width;
+ attr->height = rep.height;
+ attr->border_width = rep.borderWidth;
+ attr->depth = rep.depth;
+ attr->root = rep.root;
+ /* find correct screen so that applications find it easier.... */
+ for (i = 0; i < dpy->nscreens; i++) {
+ sp = &dpy->screens[i];
+ if (sp->root == attr->root) {
+ attr->screen = sp;
+ break;
+ }
+ }
+ return(1);
+}
+
+Status
+XGetWindowAttributes(
+ Display *dpy,
+ Window w,
+ XWindowAttributes *attr)
+{
+ Status ret;
+
+ LockDisplay(dpy);
+ ret = _XGetWindowAttributes(dpy, w, attr);
+ UnlockDisplay(dpy);
+ SyncHandle();
+
+ return ret;
+}
+
diff --git a/libX11/src/GetWMCMapW.c b/libX11/src/GetWMCMapW.c
index 6268cada8..5d54cc1ce 100644
--- a/libX11/src/GetWMCMapW.c
+++ b/libX11/src/GetWMCMapW.c
@@ -1,87 +1,87 @@
-
-/***********************************************************
-
-Copyright 1987, 1998 The Open Group
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall not be
-used in advertising or otherwise to promote the sale, use or other dealings
-in this Software without prior written authorization from The Open Group.
-
-
-Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts.
-
- All Rights Reserved
-
-Permission to use, copy, modify, and distribute this software and its
-documentation for any purpose and without fee is hereby granted,
-provided that the above copyright notice appear in all copies and that
-both that copyright notice and this permission notice appear in
-supporting documentation, and that the name of Digital not be
-used in advertising or publicity pertaining to distribution of the
-software without specific, written prior permission.
-
-DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
-ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
-DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
-ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
-WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
-ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
-SOFTWARE.
-
-******************************************************************/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-#include <X11/Xatom.h>
-#include <stdio.h>
-
-Status XGetWMColormapWindows (
- Display *dpy,
- Window w,
- Window **colormapWindows,
- int *countReturn)
-{
- Atom *data = NULL;
- Atom actual_type;
- Atom prop;
- int actual_format;
- unsigned long leftover, nitems;
-
- prop = XInternAtom(dpy, "WM_COLORMAP_WINDOWS", False);
- if (prop == None) return False;
-
- /* get the property */
- if (XGetWindowProperty (dpy, w, prop,
- 0L, 1000000L, False,
- XA_WINDOW, &actual_type, &actual_format,
- &nitems, &leftover, (unsigned char **) &data)
- != Success)
- return False;
-
- if (actual_type != XA_WINDOW || actual_format != 32) {
- if (data) Xfree ((char *) data);
- return False;
- }
-
- *colormapWindows = (Window *) data;
- *countReturn = (int) nitems;
- return True;
-}
+
+/***********************************************************
+
+Copyright 1987, 1998 The Open Group
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group shall not be
+used in advertising or otherwise to promote the sale, use or other dealings
+in this Software without prior written authorization from The Open Group.
+
+
+Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts.
+
+ All Rights Reserved
+
+Permission to use, copy, modify, and distribute this software and its
+documentation for any purpose and without fee is hereby granted,
+provided that the above copyright notice appear in all copies and that
+both that copyright notice and this permission notice appear in
+supporting documentation, and that the name of Digital not be
+used in advertising or publicity pertaining to distribution of the
+software without specific, written prior permission.
+
+DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
+ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
+DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
+ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
+WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
+ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
+SOFTWARE.
+
+******************************************************************/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+#include <X11/Xatom.h>
+#include <stdio.h>
+
+Status XGetWMColormapWindows (
+ Display *dpy,
+ Window w,
+ Window **colormapWindows,
+ int *countReturn)
+{
+ Atom *data = NULL;
+ Atom actual_type;
+ Atom prop;
+ int actual_format;
+ unsigned long leftover, nitems;
+
+ prop = XInternAtom(dpy, "WM_COLORMAP_WINDOWS", False);
+ if (prop == None) return False;
+
+ /* get the property */
+ if (XGetWindowProperty (dpy, w, prop,
+ 0L, 1000000L, False,
+ XA_WINDOW, &actual_type, &actual_format,
+ &nitems, &leftover, (unsigned char **) &data)
+ != Success)
+ return False;
+
+ if (actual_type != XA_WINDOW || actual_format != 32) {
+ if (data) Xfree ((char *) data);
+ return False;
+ }
+
+ *colormapWindows = (Window *) data;
+ *countReturn = (int) nitems;
+ return True;
+}
diff --git a/libX11/src/GetWMProto.c b/libX11/src/GetWMProto.c
index 41b1721cf..d8f8bdab4 100644
--- a/libX11/src/GetWMProto.c
+++ b/libX11/src/GetWMProto.c
@@ -1,87 +1,87 @@
-
-/***********************************************************
-
-Copyright 1987, 1998 The Open Group
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall not be
-used in advertising or otherwise to promote the sale, use or other dealings
-in this Software without prior written authorization from The Open Group.
-
-
-Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts.
-
- All Rights Reserved
-
-Permission to use, copy, modify, and distribute this software and its
-documentation for any purpose and without fee is hereby granted,
-provided that the above copyright notice appear in all copies and that
-both that copyright notice and this permission notice appear in
-supporting documentation, and that the name of Digital not be
-used in advertising or publicity pertaining to distribution of the
-software without specific, written prior permission.
-
-DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
-ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
-DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
-ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
-WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
-ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
-SOFTWARE.
-
-******************************************************************/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-#include <X11/Xatom.h>
-#include <stdio.h>
-
-Status XGetWMProtocols (
- Display *dpy,
- Window w,
- Atom **protocols,
- int *countReturn)
-{
- Atom *data = NULL;
- Atom actual_type;
- Atom prop;
- int actual_format;
- unsigned long leftover, nitems;
-
- prop = XInternAtom(dpy, "WM_PROTOCOLS", False);
- if (prop == None) return False;
-
- /* get the property */
- if (XGetWindowProperty (dpy, w, prop,
- 0L, 1000000L, False,
- XA_ATOM, &actual_type, &actual_format,
- &nitems, &leftover, (unsigned char **) &data)
- != Success)
- return False;
-
- if (actual_type != XA_ATOM || actual_format != 32) {
- if (data) Xfree ((char *) data);
- return False;
- }
-
- *protocols = (Atom *) data;
- *countReturn = (int) nitems;
- return True;
-}
+
+/***********************************************************
+
+Copyright 1987, 1998 The Open Group
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group shall not be
+used in advertising or otherwise to promote the sale, use or other dealings
+in this Software without prior written authorization from The Open Group.
+
+
+Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts.
+
+ All Rights Reserved
+
+Permission to use, copy, modify, and distribute this software and its
+documentation for any purpose and without fee is hereby granted,
+provided that the above copyright notice appear in all copies and that
+both that copyright notice and this permission notice appear in
+supporting documentation, and that the name of Digital not be
+used in advertising or publicity pertaining to distribution of the
+software without specific, written prior permission.
+
+DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
+ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
+DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
+ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
+WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
+ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
+SOFTWARE.
+
+******************************************************************/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+#include <X11/Xatom.h>
+#include <stdio.h>
+
+Status XGetWMProtocols (
+ Display *dpy,
+ Window w,
+ Atom **protocols,
+ int *countReturn)
+{
+ Atom *data = NULL;
+ Atom actual_type;
+ Atom prop;
+ int actual_format;
+ unsigned long leftover, nitems;
+
+ prop = XInternAtom(dpy, "WM_PROTOCOLS", False);
+ if (prop == None) return False;
+
+ /* get the property */
+ if (XGetWindowProperty (dpy, w, prop,
+ 0L, 1000000L, False,
+ XA_ATOM, &actual_type, &actual_format,
+ &nitems, &leftover, (unsigned char **) &data)
+ != Success)
+ return False;
+
+ if (actual_type != XA_ATOM || actual_format != 32) {
+ if (data) Xfree ((char *) data);
+ return False;
+ }
+
+ *protocols = (Atom *) data;
+ *countReturn = (int) nitems;
+ return True;
+}
diff --git a/libX11/src/GrButton.c b/libX11/src/GrButton.c
index 2c3f25941..621f49a5c 100644
--- a/libX11/src/GrButton.c
+++ b/libX11/src/GrButton.c
@@ -1,60 +1,60 @@
-/*
-
-Copyright 1986, 1998 The Open Group
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall not be
-used in advertising or otherwise to promote the sale, use or other dealings
-in this Software without prior written authorization from The Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-
-int
-XGrabButton(
- register Display *dpy,
- unsigned int button, /* CARD8 */
- unsigned int modifiers, /* CARD16 */
- Window grab_window,
- Bool owner_events,
- unsigned int event_mask, /* CARD16 */
- int pointer_mode,
- int keyboard_mode,
- Window confine_to,
- Cursor curs)
-{
- register xGrabButtonReq *req;
- LockDisplay(dpy);
- GetReq(GrabButton, req);
- req->modifiers = modifiers;
- req->button = button;
- req->grabWindow = grab_window;
- req->ownerEvents = owner_events;
- req->eventMask = event_mask;
- req->pointerMode = pointer_mode;
- req->keyboardMode = keyboard_mode;
- req->confineTo = confine_to;
- req->cursor = curs;
- UnlockDisplay(dpy);
- SyncHandle();
- return 1;
-}
+/*
+
+Copyright 1986, 1998 The Open Group
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group shall not be
+used in advertising or otherwise to promote the sale, use or other dealings
+in this Software without prior written authorization from The Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+
+int
+XGrabButton(
+ register Display *dpy,
+ unsigned int button, /* CARD8 */
+ unsigned int modifiers, /* CARD16 */
+ Window grab_window,
+ Bool owner_events,
+ unsigned int event_mask, /* CARD16 */
+ int pointer_mode,
+ int keyboard_mode,
+ Window confine_to,
+ Cursor curs)
+{
+ register xGrabButtonReq *req;
+ LockDisplay(dpy);
+ GetReq(GrabButton, req);
+ req->modifiers = modifiers;
+ req->button = button;
+ req->grabWindow = grab_window;
+ req->ownerEvents = owner_events;
+ req->eventMask = event_mask;
+ req->pointerMode = pointer_mode;
+ req->keyboardMode = keyboard_mode;
+ req->confineTo = confine_to;
+ req->cursor = curs;
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return 1;
+}
diff --git a/libX11/src/GrKey.c b/libX11/src/GrKey.c
index 960e38842..d2da5952f 100644
--- a/libX11/src/GrKey.c
+++ b/libX11/src/GrKey.c
@@ -1,58 +1,58 @@
-/*
-
-Copyright 1986, 1998 The Open Group
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall not be
-used in advertising or otherwise to promote the sale, use or other dealings
-in this Software without prior written authorization from The Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-
-int
-XGrabKey(
- register Display *dpy,
- int key,
- unsigned int modifiers,
- Window grab_window,
- Bool owner_events,
- int pointer_mode,
- int keyboard_mode)
-
-{
- register xGrabKeyReq *req;
- LockDisplay(dpy);
- GetReq(GrabKey, req);
- req->ownerEvents = owner_events;
- req->grabWindow = grab_window;
- req->modifiers = modifiers;
- req->key = key;
- req->pointerMode = pointer_mode;
- req->keyboardMode = keyboard_mode;
- UnlockDisplay(dpy);
- SyncHandle();
- return 1;
-}
-
-
-
+/*
+
+Copyright 1986, 1998 The Open Group
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group shall not be
+used in advertising or otherwise to promote the sale, use or other dealings
+in this Software without prior written authorization from The Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+
+int
+XGrabKey(
+ register Display *dpy,
+ int key,
+ unsigned int modifiers,
+ Window grab_window,
+ Bool owner_events,
+ int pointer_mode,
+ int keyboard_mode)
+
+{
+ register xGrabKeyReq *req;
+ LockDisplay(dpy);
+ GetReq(GrabKey, req);
+ req->ownerEvents = owner_events;
+ req->grabWindow = grab_window;
+ req->modifiers = modifiers;
+ req->key = key;
+ req->pointerMode = pointer_mode;
+ req->keyboardMode = keyboard_mode;
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return 1;
+}
+
+
+
diff --git a/libX11/src/GrKeybd.c b/libX11/src/GrKeybd.c
index c723450b7..07dc84115 100644
--- a/libX11/src/GrKeybd.c
+++ b/libX11/src/GrKeybd.c
@@ -1,58 +1,58 @@
-/*
-
-Copyright 1986, 1998 The Open Group
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall not be
-used in advertising or otherwise to promote the sale, use or other dealings
-in this Software without prior written authorization from The Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-int XGrabKeyboard (
- register Display *dpy,
- Window window,
- Bool ownerEvents,
- int pointerMode,
- int keyboardMode,
- Time time)
-{
- xGrabKeyboardReply rep;
- register xGrabKeyboardReq *req;
- register int status;
- LockDisplay(dpy);
- GetReq(GrabKeyboard, req);
- req->grabWindow = window;
- req->ownerEvents = ownerEvents;
- req->pointerMode = pointerMode;
- req->keyboardMode = keyboardMode;
- req->time = time;
-
- /* if we ever return, suppress the error */
- if (_XReply (dpy, (xReply *) &rep, 0, xTrue) == 0)
- rep.status = GrabSuccess;
- status = rep.status;
- UnlockDisplay(dpy);
- SyncHandle();
- return (status);
-}
-
+/*
+
+Copyright 1986, 1998 The Open Group
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group shall not be
+used in advertising or otherwise to promote the sale, use or other dealings
+in this Software without prior written authorization from The Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+int XGrabKeyboard (
+ register Display *dpy,
+ Window window,
+ Bool ownerEvents,
+ int pointerMode,
+ int keyboardMode,
+ Time time)
+{
+ xGrabKeyboardReply rep;
+ register xGrabKeyboardReq *req;
+ register int status;
+ LockDisplay(dpy);
+ GetReq(GrabKeyboard, req);
+ req->grabWindow = window;
+ req->ownerEvents = ownerEvents;
+ req->pointerMode = pointerMode;
+ req->keyboardMode = keyboardMode;
+ req->time = time;
+
+ /* if we ever return, suppress the error */
+ if (_XReply (dpy, (xReply *) &rep, 0, xTrue) == 0)
+ rep.status = GrabSuccess;
+ status = rep.status;
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return (status);
+}
+
diff --git a/libX11/src/GrPointer.c b/libX11/src/GrPointer.c
index fc8922231..a0d98277c 100644
--- a/libX11/src/GrPointer.c
+++ b/libX11/src/GrPointer.c
@@ -1,64 +1,64 @@
-/*
-
-Copyright 1986, 1998 The Open Group
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall not be
-used in advertising or otherwise to promote the sale, use or other dealings
-in this Software without prior written authorization from The Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-
-int XGrabPointer(
- register Display *dpy,
- Window grab_window,
- Bool owner_events,
- unsigned int event_mask, /* CARD16 */
- int pointer_mode,
- int keyboard_mode,
- Window confine_to,
- Cursor curs,
- Time time)
-{
- xGrabPointerReply rep;
- register xGrabPointerReq *req;
- register int status;
- LockDisplay(dpy);
- GetReq(GrabPointer, req);
- req->grabWindow = grab_window;
- req->ownerEvents = owner_events;
- req->eventMask = event_mask;
- req->pointerMode = pointer_mode;
- req->keyboardMode = keyboard_mode;
- req->confineTo = confine_to;
- req->cursor = curs;
- req->time = time;
-
- /* if we ever return, suppress the error */
- if (_XReply (dpy, (xReply *) &rep, 0, xTrue) == 0)
- rep.status = GrabSuccess;
- status = rep.status;
- UnlockDisplay(dpy);
- SyncHandle();
- return (status);
-}
+/*
+
+Copyright 1986, 1998 The Open Group
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group shall not be
+used in advertising or otherwise to promote the sale, use or other dealings
+in this Software without prior written authorization from The Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+
+int XGrabPointer(
+ register Display *dpy,
+ Window grab_window,
+ Bool owner_events,
+ unsigned int event_mask, /* CARD16 */
+ int pointer_mode,
+ int keyboard_mode,
+ Window confine_to,
+ Cursor curs,
+ Time time)
+{
+ xGrabPointerReply rep;
+ register xGrabPointerReq *req;
+ register int status;
+ LockDisplay(dpy);
+ GetReq(GrabPointer, req);
+ req->grabWindow = grab_window;
+ req->ownerEvents = owner_events;
+ req->eventMask = event_mask;
+ req->pointerMode = pointer_mode;
+ req->keyboardMode = keyboard_mode;
+ req->confineTo = confine_to;
+ req->cursor = curs;
+ req->time = time;
+
+ /* if we ever return, suppress the error */
+ if (_XReply (dpy, (xReply *) &rep, 0, xTrue) == 0)
+ rep.status = GrabSuccess;
+ status = rep.status;
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return (status);
+}
diff --git a/libX11/src/GrServer.c b/libX11/src/GrServer.c
index dddfad018..11d21e491 100644
--- a/libX11/src/GrServer.c
+++ b/libX11/src/GrServer.c
@@ -1,42 +1,42 @@
-/*
-
-Copyright 1986, 1998 The Open Group
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall not be
-used in advertising or otherwise to promote the sale, use or other dealings
-in this Software without prior written authorization from The Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-
-int
-XGrabServer (register Display *dpy)
-{
- register xReq *req;
- LockDisplay(dpy);
- GetEmptyReq(GrabServer, req);
- UnlockDisplay(dpy);
- SyncHandle();
- return 1;
-}
-
+/*
+
+Copyright 1986, 1998 The Open Group
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group shall not be
+used in advertising or otherwise to promote the sale, use or other dealings
+in this Software without prior written authorization from The Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+
+int
+XGrabServer (register Display *dpy)
+{
+ register xReq *req;
+ LockDisplay(dpy);
+ GetEmptyReq(GrabServer, req);
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return 1;
+}
+
diff --git a/libX11/src/Host.c b/libX11/src/Host.c
index c97e21e34..da9923a9e 100644
--- a/libX11/src/Host.c
+++ b/libX11/src/Host.c
@@ -1,161 +1,161 @@
-/*
-
-Copyright 1986, 1998 The Open Group
-
-All rights reserved.
-
-Permission is hereby granted, free of charge, to any person obtaining a
-copy of this software and associated documentation files (the
-"Software"), to deal in the Software without restriction, including
-without limitation the rights to use, copy, modify, merge, publish,
-distribute, and/or sell copies of the Software, and to permit persons
-to whom the Software is furnished to do so, provided that the above
-copyright notice(s) and this permission notice appear in all copies of
-the Software and that both the above copyright notice(s) and this
-permission notice appear in supporting documentation.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
-OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
-HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL
-INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING
-FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
-NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
-WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
-
-Except as contained in this notice, the name of a copyright holder
-shall not be used in advertising or otherwise to promote the sale, use
-or other dealings in this Software without prior written authorization
-of the copyright holder.
-
-X Window System is a trademark of The Open Group.
-
-*/
-
-/*
- * Copyright 2004 Oracle and/or its affiliates. All rights reserved.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice (including the next
- * paragraph) shall be included in all copies or substantial portions of the
- * Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
- * DEALINGS IN THE SOFTWARE.
- */
-
-
-/* this might be rightly regarded an os dependent file */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-
-int
-XAddHost (
- register Display *dpy,
- XHostAddress *host)
-{
- register xChangeHostsReq *req;
- register int length;
- XServerInterpretedAddress *siAddr;
- int addrlen;
-
- siAddr = host->family == FamilyServerInterpreted ?
- (XServerInterpretedAddress *)host->address : NULL;
- addrlen = siAddr ?
- siAddr->typelength + siAddr->valuelength + 1 : host->length;
-
- length = (addrlen + 3) & ~0x3; /* round up */
-
- LockDisplay(dpy);
- GetReqExtra (ChangeHosts, length, req);
- req->mode = HostInsert;
- req->hostFamily = host->family;
- req->hostLength = addrlen;
- if (siAddr) {
- char *dest = (char *) NEXTPTR(req,xChangeHostsReq);
- memcpy(dest, siAddr->type, siAddr->typelength);
- dest[siAddr->typelength] = '\0';
- memcpy(dest + siAddr->typelength + 1,siAddr->value,siAddr->valuelength);
- } else {
- memcpy((char *) NEXTPTR(req,xChangeHostsReq), host->address, addrlen);
- }
- UnlockDisplay(dpy);
- SyncHandle();
- return 1;
-}
-
-int
-XRemoveHost (
- register Display *dpy,
- XHostAddress *host)
-{
- register xChangeHostsReq *req;
- register int length;
- XServerInterpretedAddress *siAddr;
- int addrlen;
-
- siAddr = host->family == FamilyServerInterpreted ?
- (XServerInterpretedAddress *)host->address : NULL;
- addrlen = siAddr ?
- siAddr->typelength + siAddr->valuelength + 1 : host->length;
-
- length = (addrlen + 3) & ~0x3; /* round up */
-
- LockDisplay(dpy);
- GetReqExtra (ChangeHosts, length, req);
- req->mode = HostDelete;
- req->hostFamily = host->family;
- req->hostLength = addrlen;
- if (siAddr) {
- char *dest = (char *) NEXTPTR(req,xChangeHostsReq);
- memcpy(dest, siAddr->type, siAddr->typelength);
- dest[siAddr->typelength] = '\0';
- memcpy(dest + siAddr->typelength + 1,siAddr->value,siAddr->valuelength);
- } else {
- memcpy((char *) NEXTPTR(req,xChangeHostsReq), host->address, addrlen);
- }
- UnlockDisplay(dpy);
- SyncHandle();
- return 1;
-}
-
-int
-XAddHosts (
- register Display *dpy,
- XHostAddress *hosts,
- int n)
-{
- register int i;
- for (i = 0; i < n; i++) {
- (void) XAddHost(dpy, &hosts[i]);
- }
- return 1;
-}
-
-int
-XRemoveHosts (
- register Display *dpy,
- XHostAddress *hosts,
- int n)
-{
- register int i;
- for (i = 0; i < n; i++) {
- (void) XRemoveHost(dpy, &hosts[i]);
- }
- return 1;
-}
+/*
+
+Copyright 1986, 1998 The Open Group
+
+All rights reserved.
+
+Permission is hereby granted, free of charge, to any person obtaining a
+copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, and/or sell copies of the Software, and to permit persons
+to whom the Software is furnished to do so, provided that the above
+copyright notice(s) and this permission notice appear in all copies of
+the Software and that both the above copyright notice(s) and this
+permission notice appear in supporting documentation.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
+OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL
+INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING
+FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
+NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
+WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+
+Except as contained in this notice, the name of a copyright holder
+shall not be used in advertising or otherwise to promote the sale, use
+or other dealings in this Software without prior written authorization
+of the copyright holder.
+
+X Window System is a trademark of The Open Group.
+
+*/
+
+/*
+ * Copyright 2004 Oracle and/or its affiliates. All rights reserved.
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice (including the next
+ * paragraph) shall be included in all copies or substantial portions of the
+ * Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+ * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+ * DEALINGS IN THE SOFTWARE.
+ */
+
+
+/* this might be rightly regarded an os dependent file */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+
+int
+XAddHost (
+ register Display *dpy,
+ XHostAddress *host)
+{
+ register xChangeHostsReq *req;
+ register int length;
+ XServerInterpretedAddress *siAddr;
+ int addrlen;
+
+ siAddr = host->family == FamilyServerInterpreted ?
+ (XServerInterpretedAddress *)host->address : NULL;
+ addrlen = siAddr ?
+ siAddr->typelength + siAddr->valuelength + 1 : host->length;
+
+ length = (addrlen + 3) & ~0x3; /* round up */
+
+ LockDisplay(dpy);
+ GetReqExtra (ChangeHosts, length, req);
+ req->mode = HostInsert;
+ req->hostFamily = host->family;
+ req->hostLength = addrlen;
+ if (siAddr) {
+ char *dest = (char *) NEXTPTR(req,xChangeHostsReq);
+ memcpy(dest, siAddr->type, siAddr->typelength);
+ dest[siAddr->typelength] = '\0';
+ memcpy(dest + siAddr->typelength + 1,siAddr->value,siAddr->valuelength);
+ } else {
+ memcpy((char *) NEXTPTR(req,xChangeHostsReq), host->address, addrlen);
+ }
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return 1;
+}
+
+int
+XRemoveHost (
+ register Display *dpy,
+ XHostAddress *host)
+{
+ register xChangeHostsReq *req;
+ register int length;
+ XServerInterpretedAddress *siAddr;
+ int addrlen;
+
+ siAddr = host->family == FamilyServerInterpreted ?
+ (XServerInterpretedAddress *)host->address : NULL;
+ addrlen = siAddr ?
+ siAddr->typelength + siAddr->valuelength + 1 : host->length;
+
+ length = (addrlen + 3) & ~0x3; /* round up */
+
+ LockDisplay(dpy);
+ GetReqExtra (ChangeHosts, length, req);
+ req->mode = HostDelete;
+ req->hostFamily = host->family;
+ req->hostLength = addrlen;
+ if (siAddr) {
+ char *dest = (char *) NEXTPTR(req,xChangeHostsReq);
+ memcpy(dest, siAddr->type, siAddr->typelength);
+ dest[siAddr->typelength] = '\0';
+ memcpy(dest + siAddr->typelength + 1,siAddr->value,siAddr->valuelength);
+ } else {
+ memcpy((char *) NEXTPTR(req,xChangeHostsReq), host->address, addrlen);
+ }
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return 1;
+}
+
+int
+XAddHosts (
+ register Display *dpy,
+ XHostAddress *hosts,
+ int n)
+{
+ register int i;
+ for (i = 0; i < n; i++) {
+ (void) XAddHost(dpy, &hosts[i]);
+ }
+ return 1;
+}
+
+int
+XRemoveHosts (
+ register Display *dpy,
+ XHostAddress *hosts,
+ int n)
+{
+ register int i;
+ for (i = 0; i < n; i++) {
+ (void) XRemoveHost(dpy, &hosts[i]);
+ }
+ return 1;
+}
diff --git a/libX11/src/Iconify.c b/libX11/src/Iconify.c
index 38bd00246..3a969d741 100644
--- a/libX11/src/Iconify.c
+++ b/libX11/src/Iconify.c
@@ -1,85 +1,85 @@
-
-/***********************************************************
-Copyright 1988 by Wyse Technology, Inc., San Jose, Ca.
-
- All Rights Reserved
-
-Permission to use, copy, modify, and distribute this software and its
-documentation for any purpose and without fee is hereby granted,
-provided that the above copyright notice appear in all copies and that
-both that copyright notice and this permission notice appear in
-supporting documentation, and that the name Wyse not be
-used in advertising or publicity pertaining to distribution of the
-software without specific, written prior permission.
-
-WYSE DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
-ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
-DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
-ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
-WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
-ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
-SOFTWARE.
-
-******************************************************************/
-/*
-
-Copyright 1988, 1998 The Open Group
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
-
-The above copyright notice and this permission notice shall be included
-in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
-IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR
-OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
-ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall
-not be used in advertising or otherwise to promote the sale, use or
-other dealings in this Software without prior written authorization
-from The Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include <X11/Xlibint.h>
-#include <X11/Xatom.h>
-#include <X11/Xos.h>
-#include <X11/Xutil.h>
-#include <stdio.h>
-
-/*
- * This function instructs the window manager to change this window from
- * NormalState to IconicState.
- */
-Status XIconifyWindow (
- Display *dpy,
- Window w,
- int screen)
-{
- XClientMessageEvent ev;
- Window root = RootWindow (dpy, screen);
- Atom prop;
-
- prop = XInternAtom (dpy, "WM_CHANGE_STATE", False);
- if (prop == None) return False;
-
- ev.type = ClientMessage;
- ev.window = w;
- ev.message_type = prop;
- ev.format = 32;
- ev.data.l[0] = IconicState;
- return (XSendEvent (dpy, root, False,
- SubstructureRedirectMask|SubstructureNotifyMask,
- (XEvent *)&ev));
-}
+
+/***********************************************************
+Copyright 1988 by Wyse Technology, Inc., San Jose, Ca.
+
+ All Rights Reserved
+
+Permission to use, copy, modify, and distribute this software and its
+documentation for any purpose and without fee is hereby granted,
+provided that the above copyright notice appear in all copies and that
+both that copyright notice and this permission notice appear in
+supporting documentation, and that the name Wyse not be
+used in advertising or publicity pertaining to distribution of the
+software without specific, written prior permission.
+
+WYSE DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
+ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
+DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
+ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
+WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
+ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
+SOFTWARE.
+
+******************************************************************/
+/*
+
+Copyright 1988, 1998 The Open Group
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
+
+The above copyright notice and this permission notice shall be included
+in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR
+OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
+ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group shall
+not be used in advertising or otherwise to promote the sale, use or
+other dealings in this Software without prior written authorization
+from The Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include <X11/Xlibint.h>
+#include <X11/Xatom.h>
+#include <X11/Xos.h>
+#include <X11/Xutil.h>
+#include <stdio.h>
+
+/*
+ * This function instructs the window manager to change this window from
+ * NormalState to IconicState.
+ */
+Status XIconifyWindow (
+ Display *dpy,
+ Window w,
+ int screen)
+{
+ XClientMessageEvent ev;
+ Window root = RootWindow (dpy, screen);
+ Atom prop;
+
+ prop = XInternAtom (dpy, "WM_CHANGE_STATE", False);
+ if (prop == None) return False;
+
+ ev.type = ClientMessage;
+ ev.window = w;
+ ev.message_type = prop;
+ ev.format = 32;
+ ev.data.l[0] = IconicState;
+ return (XSendEvent (dpy, root, False,
+ SubstructureRedirectMask|SubstructureNotifyMask,
+ (XEvent *)&ev));
+}
diff --git a/libX11/src/IfEvent.c b/libX11/src/IfEvent.c
index 546025062..ead93dcac 100644
--- a/libX11/src/IfEvent.c
+++ b/libX11/src/IfEvent.c
@@ -1,73 +1,73 @@
-/*
-
-Copyright 1986, 1998 The Open Group
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall not be
-used in advertising or otherwise to promote the sale, use or other dealings
-in this Software without prior written authorization from The Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-
-/*
- * Flush output and (wait for and) return the next event matching the
- * predicate in the queue.
- */
-
-int
-XIfEvent (
- register Display *dpy,
- register XEvent *event,
- Bool (*predicate)(
- Display* /* display */,
- XEvent* /* event */,
- char* /* arg */
- ), /* function to call */
- char *arg)
-{
- register _XQEvent *qelt, *prev;
- unsigned long qe_serial = 0;
-
- LockDisplay(dpy);
- prev = NULL;
- while (1) {
- for (qelt = prev ? prev->next : dpy->head;
- qelt;
- prev = qelt, qelt = qelt->next) {
- if(qelt->qserial_num > qe_serial
- && (*predicate)(dpy, &qelt->event, arg)) {
- *event = qelt->event;
- _XDeq(dpy, prev, qelt);
- _XStoreEventCookie(dpy, event);
- UnlockDisplay(dpy);
- return 0;
- }
- }
- if (prev)
- qe_serial = prev->qserial_num;
- _XReadEvents(dpy);
- if (prev && prev->qserial_num != qe_serial)
- /* another thread has snatched this event */
- prev = NULL;
- }
-}
+/*
+
+Copyright 1986, 1998 The Open Group
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group shall not be
+used in advertising or otherwise to promote the sale, use or other dealings
+in this Software without prior written authorization from The Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+
+/*
+ * Flush output and (wait for and) return the next event matching the
+ * predicate in the queue.
+ */
+
+int
+XIfEvent (
+ register Display *dpy,
+ register XEvent *event,
+ Bool (*predicate)(
+ Display* /* display */,
+ XEvent* /* event */,
+ char* /* arg */
+ ), /* function to call */
+ char *arg)
+{
+ register _XQEvent *qelt, *prev;
+ unsigned long qe_serial = 0;
+
+ LockDisplay(dpy);
+ prev = NULL;
+ while (1) {
+ for (qelt = prev ? prev->next : dpy->head;
+ qelt;
+ prev = qelt, qelt = qelt->next) {
+ if(qelt->qserial_num > qe_serial
+ && (*predicate)(dpy, &qelt->event, arg)) {
+ *event = qelt->event;
+ _XDeq(dpy, prev, qelt);
+ _XStoreEventCookie(dpy, event);
+ UnlockDisplay(dpy);
+ return 0;
+ }
+ }
+ if (prev)
+ qe_serial = prev->qserial_num;
+ _XReadEvents(dpy);
+ if (prev && prev->qserial_num != qe_serial)
+ /* another thread has snatched this event */
+ prev = NULL;
+ }
+}
diff --git a/libX11/src/ImText.c b/libX11/src/ImText.c
index 434c682d9..c12f26854 100644
--- a/libX11/src/ImText.c
+++ b/libX11/src/ImText.c
@@ -1,101 +1,101 @@
-/*
-
-Copyright 1986, 1998 The Open Group
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall not be
-used in advertising or otherwise to promote the sale, use or other dealings
-in this Software without prior written authorization from The Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-
-int
-XDrawImageString(
- register Display *dpy,
- Drawable d,
- GC gc,
- int x,
- int y,
- _Xconst char *string,
- int length)
-{
- register xImageText8Req *req;
- char *CharacterOffset = (char *)string;
- int FirstTimeThrough = True;
- int lastX = 0;
-
- LockDisplay(dpy);
- FlushGC(dpy, gc);
-
- while (length > 0)
- {
- int Unit;
-
- if (length > 255) Unit = 255;
- else Unit = length;
-
- if (FirstTimeThrough)
- {
- FirstTimeThrough = False;
- }
- else
- {
- char buf[512];
- char *ptr, *str;
- xQueryTextExtentsReq *qreq;
- xQueryTextExtentsReply rep;
- int i;
-
- GetReq(QueryTextExtents, qreq);
- qreq->fid = gc->gid;
- qreq->length += (510 + 3)>>2;
- qreq->oddLength = 1;
- str = CharacterOffset - 255;
- for (ptr = buf, i = 255; --i >= 0; ) {
- *ptr++ = 0;
- *ptr++ = *str++;
- }
- Data (dpy, buf, 510);
- if (!_XReply (dpy, (xReply *)&rep, 0, xTrue))
- break;
-
- x = lastX + cvtINT32toInt (rep.overallWidth);
- }
-
- GetReq (ImageText8, req);
- req->length += (Unit + 3) >> 2;
- req->nChars = Unit;
- req->drawable = d;
- req->gc = gc->gid;
- req->y = y;
-
- lastX = req->x = x;
- Data (dpy, CharacterOffset, (long)Unit);
- CharacterOffset += Unit;
- length -= Unit;
- }
- UnlockDisplay(dpy);
- SyncHandle();
- return 0;
-}
-
+/*
+
+Copyright 1986, 1998 The Open Group
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group shall not be
+used in advertising or otherwise to promote the sale, use or other dealings
+in this Software without prior written authorization from The Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+
+int
+XDrawImageString(
+ register Display *dpy,
+ Drawable d,
+ GC gc,
+ int x,
+ int y,
+ _Xconst char *string,
+ int length)
+{
+ register xImageText8Req *req;
+ char *CharacterOffset = (char *)string;
+ int FirstTimeThrough = True;
+ int lastX = 0;
+
+ LockDisplay(dpy);
+ FlushGC(dpy, gc);
+
+ while (length > 0)
+ {
+ int Unit;
+
+ if (length > 255) Unit = 255;
+ else Unit = length;
+
+ if (FirstTimeThrough)
+ {
+ FirstTimeThrough = False;
+ }
+ else
+ {
+ char buf[512];
+ char *ptr, *str;
+ xQueryTextExtentsReq *qreq;
+ xQueryTextExtentsReply rep;
+ int i;
+
+ GetReq(QueryTextExtents, qreq);
+ qreq->fid = gc->gid;
+ qreq->length += (510 + 3)>>2;
+ qreq->oddLength = 1;
+ str = CharacterOffset - 255;
+ for (ptr = buf, i = 255; --i >= 0; ) {
+ *ptr++ = 0;
+ *ptr++ = *str++;
+ }
+ Data (dpy, buf, 510);
+ if (!_XReply (dpy, (xReply *)&rep, 0, xTrue))
+ break;
+
+ x = lastX + cvtINT32toInt (rep.overallWidth);
+ }
+
+ GetReq (ImageText8, req);
+ req->length += (Unit + 3) >> 2;
+ req->nChars = Unit;
+ req->drawable = d;
+ req->gc = gc->gid;
+ req->y = y;
+
+ lastX = req->x = x;
+ Data (dpy, CharacterOffset, (long)Unit);
+ CharacterOffset += Unit;
+ length -= Unit;
+ }
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return 0;
+}
+
diff --git a/libX11/src/ImText16.c b/libX11/src/ImText16.c
index 49859aa53..b0b60710c 100644
--- a/libX11/src/ImText16.c
+++ b/libX11/src/ImText16.c
@@ -1,103 +1,103 @@
-/*
-
-Copyright 1986, 1998 The Open Group
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall not be
-used in advertising or otherwise to promote the sale, use or other dealings
-in this Software without prior written authorization from The Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-
-int
-XDrawImageString16(
- register Display *dpy,
- Drawable d,
- GC gc,
- int x,
- int y,
- _Xconst XChar2b *string,
- int length)
-{
- register xImageText16Req *req;
- XChar2b *CharacterOffset = (XChar2b *)string;
- int FirstTimeThrough = True;
- int lastX = 0;
-
- LockDisplay(dpy);
- FlushGC(dpy, gc);
-
- while (length > 0)
- {
- int Unit, Datalength;
-
- if (length > 255) Unit = 255;
- else Unit = length;
-
- if (FirstTimeThrough)
- {
- FirstTimeThrough = False;
- }
- else
- {
- char buf[512];
- xQueryTextExtentsReq *qreq;
- xQueryTextExtentsReply rep;
- unsigned char *ptr;
- XChar2b *str;
- int i;
-
- GetReq(QueryTextExtents, qreq);
- qreq->fid = gc->gid;
- qreq->length += (510 + 3)>>2;
- qreq->oddLength = 1;
- str = CharacterOffset - 255;
- for (ptr = (unsigned char *)buf, i = 255; --i >= 0; str++) {
- *ptr++ = str->byte1;
- *ptr++ = str->byte2;
- }
- Data (dpy, buf, 510);
- if (!_XReply (dpy, (xReply *)&rep, 0, xTrue))
- break;
-
- x = lastX + cvtINT32toInt (rep.overallWidth);
- }
-
- GetReq (ImageText16, req);
- req->length += ((Unit << 1) + 3) >> 2;
- req->nChars = Unit;
- req->drawable = d;
- req->gc = gc->gid;
- req->y = y;
-
- lastX = req->x = x;
- Datalength = Unit << 1;
- Data (dpy, (char *)CharacterOffset, (long)Datalength);
- CharacterOffset += Unit;
- length -= Unit;
- }
- UnlockDisplay(dpy);
- SyncHandle();
- return 0;
-}
-
+/*
+
+Copyright 1986, 1998 The Open Group
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group shall not be
+used in advertising or otherwise to promote the sale, use or other dealings
+in this Software without prior written authorization from The Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+
+int
+XDrawImageString16(
+ register Display *dpy,
+ Drawable d,
+ GC gc,
+ int x,
+ int y,
+ _Xconst XChar2b *string,
+ int length)
+{
+ register xImageText16Req *req;
+ XChar2b *CharacterOffset = (XChar2b *)string;
+ int FirstTimeThrough = True;
+ int lastX = 0;
+
+ LockDisplay(dpy);
+ FlushGC(dpy, gc);
+
+ while (length > 0)
+ {
+ int Unit, Datalength;
+
+ if (length > 255) Unit = 255;
+ else Unit = length;
+
+ if (FirstTimeThrough)
+ {
+ FirstTimeThrough = False;
+ }
+ else
+ {
+ char buf[512];
+ xQueryTextExtentsReq *qreq;
+ xQueryTextExtentsReply rep;
+ unsigned char *ptr;
+ XChar2b *str;
+ int i;
+
+ GetReq(QueryTextExtents, qreq);
+ qreq->fid = gc->gid;
+ qreq->length += (510 + 3)>>2;
+ qreq->oddLength = 1;
+ str = CharacterOffset - 255;
+ for (ptr = (unsigned char *)buf, i = 255; --i >= 0; str++) {
+ *ptr++ = str->byte1;
+ *ptr++ = str->byte2;
+ }
+ Data (dpy, buf, 510);
+ if (!_XReply (dpy, (xReply *)&rep, 0, xTrue))
+ break;
+
+ x = lastX + cvtINT32toInt (rep.overallWidth);
+ }
+
+ GetReq (ImageText16, req);
+ req->length += ((Unit << 1) + 3) >> 2;
+ req->nChars = Unit;
+ req->drawable = d;
+ req->gc = gc->gid;
+ req->y = y;
+
+ lastX = req->x = x;
+ Datalength = Unit << 1;
+ Data (dpy, (char *)CharacterOffset, (long)Datalength);
+ CharacterOffset += Unit;
+ length -= Unit;
+ }
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return 0;
+}
+
diff --git a/libX11/src/InsCmap.c b/libX11/src/InsCmap.c
index 99ee8daac..735ab080e 100644
--- a/libX11/src/InsCmap.c
+++ b/libX11/src/InsCmap.c
@@ -1,44 +1,44 @@
-/*
-
-Copyright 1986, 1998 The Open Group
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall not be
-used in advertising or otherwise to promote the sale, use or other dealings
-in this Software without prior written authorization from The Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-
-int
-XInstallColormap(
- register Display *dpy,
- Colormap cmap)
-{
- register xResourceReq *req;
- LockDisplay(dpy);
- GetResReq(InstallColormap, cmap, req);
- UnlockDisplay(dpy);
- SyncHandle();
- return 1;
-}
-
+/*
+
+Copyright 1986, 1998 The Open Group
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group shall not be
+used in advertising or otherwise to promote the sale, use or other dealings
+in this Software without prior written authorization from The Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+
+int
+XInstallColormap(
+ register Display *dpy,
+ Colormap cmap)
+{
+ register xResourceReq *req;
+ LockDisplay(dpy);
+ GetResReq(InstallColormap, cmap, req);
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return 1;
+}
+
diff --git a/libX11/src/Key.h b/libX11/src/Key.h
index d3bd55f0d..0fe89ba37 100644
--- a/libX11/src/Key.h
+++ b/libX11/src/Key.h
@@ -1,17 +1,17 @@
-
-#ifndef _KEY_H_
-#define _KEY_H_
-
-#ifndef NEEDKTABLE
-extern const unsigned char _XkeyTable[];
-#endif
-
-extern int
-_XKeyInitialize(
- Display *dpy);
-
-extern XrmDatabase
-_XInitKeysymDB(
- void);
-
-#endif /* _KEY_H_ */
+
+#ifndef _KEY_H_
+#define _KEY_H_
+
+#ifndef NEEDKTABLE
+extern const unsigned char _XkeyTable[];
+#endif
+
+extern int
+_XKeyInitialize(
+ Display *dpy);
+
+extern XrmDatabase
+_XInitKeysymDB(
+ void);
+
+#endif /* _KEY_H_ */
diff --git a/libX11/src/KillCl.c b/libX11/src/KillCl.c
index f3c48c43e..cfd8cb000 100644
--- a/libX11/src/KillCl.c
+++ b/libX11/src/KillCl.c
@@ -1,44 +1,44 @@
-/*
-
-Copyright 1986, 1998 The Open Group
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall not be
-used in advertising or otherwise to promote the sale, use or other dealings
-in this Software without prior written authorization from The Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-
-int
-XKillClient(
- register Display *dpy,
- XID resource)
-{
- register xResourceReq *req;
- LockDisplay(dpy);
- GetResReq(KillClient, resource, req);
- UnlockDisplay(dpy);
- SyncHandle();
- return 1;
-}
-
+/*
+
+Copyright 1986, 1998 The Open Group
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group shall not be
+used in advertising or otherwise to promote the sale, use or other dealings
+in this Software without prior written authorization from The Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+
+int
+XKillClient(
+ register Display *dpy,
+ XID resource)
+{
+ register xResourceReq *req;
+ LockDisplay(dpy);
+ GetResReq(KillClient, resource, req);
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return 1;
+}
+
diff --git a/libX11/src/LiHosts.c b/libX11/src/LiHosts.c
index 88dca6d60..5ae70d5b2 100644
--- a/libX11/src/LiHosts.c
+++ b/libX11/src/LiHosts.c
@@ -1,156 +1,156 @@
-/*
-
-Copyright 1986, 1998 The Open Group
-
-All rights reserved.
-
-Permission is hereby granted, free of charge, to any person obtaining a
-copy of this software and associated documentation files (the
-"Software"), to deal in the Software without restriction, including
-without limitation the rights to use, copy, modify, merge, publish,
-distribute, and/or sell copies of the Software, and to permit persons
-to whom the Software is furnished to do so, provided that the above
-copyright notice(s) and this permission notice appear in all copies of
-the Software and that both the above copyright notice(s) and this
-permission notice appear in supporting documentation.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
-OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
-HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL
-INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING
-FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
-NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
-WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
-
-Except as contained in this notice, the name of a copyright holder
-shall not be used in advertising or otherwise to promote the sale, use
-or other dealings in this Software without prior written authorization
-of the copyright holder.
-
-X Window System is a trademark of The Open Group.
-
-*/
-
-/*
- * Copyright 2004 Oracle and/or its affiliates. All rights reserved.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice (including the next
- * paragraph) shall be included in all copies or substantial portions of the
- * Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
- * DEALINGS IN THE SOFTWARE.
- */
-
-/* This can really be considered an os dependent routine */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-/*
- * can be freed using XFree.
- */
-
-XHostAddress *XListHosts (
- register Display *dpy,
- int *nhosts, /* RETURN */
- Bool *enabled) /* RETURN */
-{
- register XHostAddress *outbuf = NULL, *op;
- xListHostsReply reply;
- long nbytes;
- unsigned char *buf, *bp;
- register unsigned i;
- register xListHostsReq *req;
- XServerInterpretedAddress *sip;
-
- *nhosts = 0;
- LockDisplay(dpy);
- GetReq (ListHosts, req);
-
- if (!_XReply (dpy, (xReply *) &reply, 0, xFalse)) {
- UnlockDisplay(dpy);
- SyncHandle();
- return (XHostAddress *) NULL;
- }
-
- if (reply.nHosts) {
- nbytes = reply.length << 2; /* compute number of bytes in reply */
-
- op = outbuf = (XHostAddress *)
- Xmalloc((unsigned) (nbytes +
- (reply.nHosts * sizeof(XHostAddress)) +
- (reply.nHosts * sizeof(XServerInterpretedAddress))));
-
- if (! outbuf) {
- _XEatData(dpy, (unsigned long) nbytes);
- UnlockDisplay(dpy);
- SyncHandle();
- return (XHostAddress *) NULL;
- }
- sip = (XServerInterpretedAddress *)
- (((unsigned char *) outbuf) + (reply.nHosts * sizeof(XHostAddress)));
- bp = buf = ((unsigned char *) sip)
- + (reply.nHosts * sizeof(XServerInterpretedAddress));
-
- _XRead (dpy, (char *) buf, nbytes);
-
- for (i = 0; i < reply.nHosts; i++) {
-#ifdef WORD64
- xHostEntry xhe;
- memcpy((char *)&xhe, bp, SIZEOF(xHostEntry));
- op->family = xhe.family;
- op->length = xhe.length;
-#else
- op->family = ((xHostEntry *) bp)->family;
- op->length =((xHostEntry *) bp)->length;
-#endif
- if (op->family == FamilyServerInterpreted) {
- char *tp = (char *) (bp + SIZEOF(xHostEntry));
- char *vp = memchr(tp, 0, op->length);
-
- if (vp != NULL) {
- sip->type = tp;
- sip->typelength = vp - tp;
- sip->value = vp + 1;
- sip->valuelength = op->length - (sip->typelength + 1);
- } else {
- sip->type = sip->value = NULL;
- sip->typelength = sip->valuelength = 0;
- }
- op->address = (char *) sip;
- sip++;
- } else {
- op->address = (char *) (bp + SIZEOF(xHostEntry));
- }
- bp += SIZEOF(xHostEntry) + (((op->length + 3) >> 2) << 2);
- op++;
- }
- }
-
- *enabled = reply.enabled;
- *nhosts = reply.nHosts;
- UnlockDisplay(dpy);
- SyncHandle();
- return (outbuf);
-}
-
-
-
-
-
+/*
+
+Copyright 1986, 1998 The Open Group
+
+All rights reserved.
+
+Permission is hereby granted, free of charge, to any person obtaining a
+copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, and/or sell copies of the Software, and to permit persons
+to whom the Software is furnished to do so, provided that the above
+copyright notice(s) and this permission notice appear in all copies of
+the Software and that both the above copyright notice(s) and this
+permission notice appear in supporting documentation.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
+OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL
+INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING
+FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
+NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
+WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+
+Except as contained in this notice, the name of a copyright holder
+shall not be used in advertising or otherwise to promote the sale, use
+or other dealings in this Software without prior written authorization
+of the copyright holder.
+
+X Window System is a trademark of The Open Group.
+
+*/
+
+/*
+ * Copyright 2004 Oracle and/or its affiliates. All rights reserved.
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice (including the next
+ * paragraph) shall be included in all copies or substantial portions of the
+ * Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+ * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+ * DEALINGS IN THE SOFTWARE.
+ */
+
+/* This can really be considered an os dependent routine */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+/*
+ * can be freed using XFree.
+ */
+
+XHostAddress *XListHosts (
+ register Display *dpy,
+ int *nhosts, /* RETURN */
+ Bool *enabled) /* RETURN */
+{
+ register XHostAddress *outbuf = NULL, *op;
+ xListHostsReply reply;
+ long nbytes;
+ unsigned char *buf, *bp;
+ register unsigned i;
+ register xListHostsReq *req;
+ XServerInterpretedAddress *sip;
+
+ *nhosts = 0;
+ LockDisplay(dpy);
+ GetReq (ListHosts, req);
+
+ if (!_XReply (dpy, (xReply *) &reply, 0, xFalse)) {
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return (XHostAddress *) NULL;
+ }
+
+ if (reply.nHosts) {
+ nbytes = reply.length << 2; /* compute number of bytes in reply */
+
+ op = outbuf = (XHostAddress *)
+ Xmalloc((unsigned) (nbytes +
+ (reply.nHosts * sizeof(XHostAddress)) +
+ (reply.nHosts * sizeof(XServerInterpretedAddress))));
+
+ if (! outbuf) {
+ _XEatData(dpy, (unsigned long) nbytes);
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return (XHostAddress *) NULL;
+ }
+ sip = (XServerInterpretedAddress *)
+ (((unsigned char *) outbuf) + (reply.nHosts * sizeof(XHostAddress)));
+ bp = buf = ((unsigned char *) sip)
+ + (reply.nHosts * sizeof(XServerInterpretedAddress));
+
+ _XRead (dpy, (char *) buf, nbytes);
+
+ for (i = 0; i < reply.nHosts; i++) {
+#ifdef WORD64
+ xHostEntry xhe;
+ memcpy((char *)&xhe, bp, SIZEOF(xHostEntry));
+ op->family = xhe.family;
+ op->length = xhe.length;
+#else
+ op->family = ((xHostEntry *) bp)->family;
+ op->length =((xHostEntry *) bp)->length;
+#endif
+ if (op->family == FamilyServerInterpreted) {
+ char *tp = (char *) (bp + SIZEOF(xHostEntry));
+ char *vp = memchr(tp, 0, op->length);
+
+ if (vp != NULL) {
+ sip->type = tp;
+ sip->typelength = vp - tp;
+ sip->value = vp + 1;
+ sip->valuelength = op->length - (sip->typelength + 1);
+ } else {
+ sip->type = sip->value = NULL;
+ sip->typelength = sip->valuelength = 0;
+ }
+ op->address = (char *) sip;
+ sip++;
+ } else {
+ op->address = (char *) (bp + SIZEOF(xHostEntry));
+ }
+ bp += SIZEOF(xHostEntry) + (((op->length + 3) >> 2) << 2);
+ op++;
+ }
+ }
+
+ *enabled = reply.enabled;
+ *nhosts = reply.nHosts;
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return (outbuf);
+}
+
+
+
+
+
diff --git a/libX11/src/LiICmaps.c b/libX11/src/LiICmaps.c
index 841d90653..e98161916 100644
--- a/libX11/src/LiICmaps.c
+++ b/libX11/src/LiICmaps.c
@@ -1,71 +1,71 @@
-/*
-
-Copyright 1986, 1998 The Open Group
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall not be
-used in advertising or otherwise to promote the sale, use or other dealings
-in this Software without prior written authorization from The Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-
-Colormap *XListInstalledColormaps(
- register Display *dpy,
- Window win,
- int *n) /* RETURN */
-{
- long nbytes;
- Colormap *cmaps;
- xListInstalledColormapsReply rep;
- register xResourceReq *req;
-
- LockDisplay(dpy);
- GetResReq(ListInstalledColormaps, win, req);
-
- if(_XReply(dpy, (xReply *) &rep, 0, xFalse) == 0) {
- UnlockDisplay(dpy);
- SyncHandle();
- *n = 0;
- return((Colormap *) NULL);
- }
-
- if (rep.nColormaps) {
- nbytes = rep.nColormaps * sizeof(Colormap);
- cmaps = (Colormap *) Xmalloc((unsigned) nbytes);
- nbytes = rep.nColormaps << 2;
- if (! cmaps) {
- _XEatData(dpy, (unsigned long) nbytes);
- UnlockDisplay(dpy);
- SyncHandle();
- return((Colormap *) NULL);
- }
- _XRead32 (dpy, (long *) cmaps, nbytes);
- }
- else cmaps = (Colormap *) NULL;
-
- *n = rep.nColormaps;
- UnlockDisplay(dpy);
- SyncHandle();
- return(cmaps);
-}
-
+/*
+
+Copyright 1986, 1998 The Open Group
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group shall not be
+used in advertising or otherwise to promote the sale, use or other dealings
+in this Software without prior written authorization from The Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+
+Colormap *XListInstalledColormaps(
+ register Display *dpy,
+ Window win,
+ int *n) /* RETURN */
+{
+ long nbytes;
+ Colormap *cmaps;
+ xListInstalledColormapsReply rep;
+ register xResourceReq *req;
+
+ LockDisplay(dpy);
+ GetResReq(ListInstalledColormaps, win, req);
+
+ if(_XReply(dpy, (xReply *) &rep, 0, xFalse) == 0) {
+ UnlockDisplay(dpy);
+ SyncHandle();
+ *n = 0;
+ return((Colormap *) NULL);
+ }
+
+ if (rep.nColormaps) {
+ nbytes = rep.nColormaps * sizeof(Colormap);
+ cmaps = (Colormap *) Xmalloc((unsigned) nbytes);
+ nbytes = rep.nColormaps << 2;
+ if (! cmaps) {
+ _XEatData(dpy, (unsigned long) nbytes);
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return((Colormap *) NULL);
+ }
+ _XRead32 (dpy, (long *) cmaps, nbytes);
+ }
+ else cmaps = (Colormap *) NULL;
+
+ *n = rep.nColormaps;
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return(cmaps);
+}
+
diff --git a/libX11/src/LiProps.c b/libX11/src/LiProps.c
index 52fcb20c6..72560aba7 100644
--- a/libX11/src/LiProps.c
+++ b/libX11/src/LiProps.c
@@ -1,69 +1,69 @@
-/*
-
-Copyright 1986, 1998 The Open Group
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall not be
-used in advertising or otherwise to promote the sale, use or other dealings
-in this Software without prior written authorization from The Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-
-Atom *XListProperties(
- register Display *dpy,
- Window window,
- int *n_props) /* RETURN */
-{
- long nbytes;
- xListPropertiesReply rep;
- Atom *properties;
- register xResourceReq *req;
-
- LockDisplay(dpy);
- GetResReq(ListProperties, window, req);
- if (!_XReply(dpy, (xReply *)&rep, 0, xFalse)) {
- *n_props = 0;
- UnlockDisplay(dpy);
- SyncHandle();
- return ((Atom *) NULL);
- }
-
- if (rep.nProperties) {
- nbytes = rep.nProperties * sizeof(Atom);
- properties = (Atom *) Xmalloc ((unsigned) nbytes);
- nbytes = rep.nProperties << 2;
- if (! properties) {
- _XEatData(dpy, (unsigned long) nbytes);
- UnlockDisplay(dpy);
- SyncHandle();
- return (Atom *) NULL;
- }
- _XRead32 (dpy, (long *) properties, nbytes);
- }
- else properties = (Atom *) NULL;
-
- *n_props = rep.nProperties;
- UnlockDisplay(dpy);
- SyncHandle();
- return (properties);
-}
+/*
+
+Copyright 1986, 1998 The Open Group
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group shall not be
+used in advertising or otherwise to promote the sale, use or other dealings
+in this Software without prior written authorization from The Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+
+Atom *XListProperties(
+ register Display *dpy,
+ Window window,
+ int *n_props) /* RETURN */
+{
+ long nbytes;
+ xListPropertiesReply rep;
+ Atom *properties;
+ register xResourceReq *req;
+
+ LockDisplay(dpy);
+ GetResReq(ListProperties, window, req);
+ if (!_XReply(dpy, (xReply *)&rep, 0, xFalse)) {
+ *n_props = 0;
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return ((Atom *) NULL);
+ }
+
+ if (rep.nProperties) {
+ nbytes = rep.nProperties * sizeof(Atom);
+ properties = (Atom *) Xmalloc ((unsigned) nbytes);
+ nbytes = rep.nProperties << 2;
+ if (! properties) {
+ _XEatData(dpy, (unsigned long) nbytes);
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return (Atom *) NULL;
+ }
+ _XRead32 (dpy, (long *) properties, nbytes);
+ }
+ else properties = (Atom *) NULL;
+
+ *n_props = rep.nProperties;
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return (properties);
+}
diff --git a/libX11/src/ListExt.c b/libX11/src/ListExt.c
index 76d19c4b0..16b522e88 100644
--- a/libX11/src/ListExt.c
+++ b/libX11/src/ListExt.c
@@ -1,97 +1,97 @@
-/*
-
-Copyright 1986, 1998 The Open Group
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall not be
-used in advertising or otherwise to promote the sale, use or other dealings
-in this Software without prior written authorization from The Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-
-char **XListExtensions(
- register Display *dpy,
- int *nextensions) /* RETURN */
-{
- xListExtensionsReply rep;
- char **list;
- char *ch;
- register unsigned i;
- register int length;
- register xReq *req;
- register long rlen;
-
- LockDisplay(dpy);
- GetEmptyReq (ListExtensions, req);
-
- if (! _XReply (dpy, (xReply *) &rep, 0, xFalse)) {
- UnlockDisplay(dpy);
- SyncHandle();
- return (char **) NULL;
- }
-
- if (rep.nExtensions) {
- list = (char **) Xmalloc (
- (unsigned)(rep.nExtensions * sizeof (char *)));
- rlen = rep.length << 2;
- ch = (char *) Xmalloc ((unsigned) rlen + 1);
- /* +1 to leave room for last null-terminator */
-
- if ((!list) || (!ch)) {
- if (list) Xfree((char *) list);
- if (ch) Xfree((char *) ch);
- _XEatData(dpy, (unsigned long) rlen);
- UnlockDisplay(dpy);
- SyncHandle();
- return (char **) NULL;
- }
-
- _XReadPad (dpy, ch, rlen);
- /*
- * unpack into null terminated strings.
- */
- length = *ch;
- for (i = 0; i < rep.nExtensions; i++) {
- list[i] = ch+1; /* skip over length */
- ch += length + 1; /* find next length ... */
- length = *ch;
- *ch = '\0'; /* and replace with null-termination */
- }
- }
- else list = (char **) NULL;
-
- *nextensions = rep.nExtensions;
- UnlockDisplay(dpy);
- SyncHandle();
- return (list);
-}
-
-int
-XFreeExtensionList (char **list)
-{
- if (list != NULL) {
- Xfree (list[0]-1);
- Xfree ((char *)list);
- }
- return 1;
-}
+/*
+
+Copyright 1986, 1998 The Open Group
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group shall not be
+used in advertising or otherwise to promote the sale, use or other dealings
+in this Software without prior written authorization from The Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+
+char **XListExtensions(
+ register Display *dpy,
+ int *nextensions) /* RETURN */
+{
+ xListExtensionsReply rep;
+ char **list;
+ char *ch;
+ register unsigned i;
+ register int length;
+ register xReq *req;
+ register long rlen;
+
+ LockDisplay(dpy);
+ GetEmptyReq (ListExtensions, req);
+
+ if (! _XReply (dpy, (xReply *) &rep, 0, xFalse)) {
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return (char **) NULL;
+ }
+
+ if (rep.nExtensions) {
+ list = (char **) Xmalloc (
+ (unsigned)(rep.nExtensions * sizeof (char *)));
+ rlen = rep.length << 2;
+ ch = (char *) Xmalloc ((unsigned) rlen + 1);
+ /* +1 to leave room for last null-terminator */
+
+ if ((!list) || (!ch)) {
+ if (list) Xfree((char *) list);
+ if (ch) Xfree((char *) ch);
+ _XEatData(dpy, (unsigned long) rlen);
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return (char **) NULL;
+ }
+
+ _XReadPad (dpy, ch, rlen);
+ /*
+ * unpack into null terminated strings.
+ */
+ length = *ch;
+ for (i = 0; i < rep.nExtensions; i++) {
+ list[i] = ch+1; /* skip over length */
+ ch += length + 1; /* find next length ... */
+ length = *ch;
+ *ch = '\0'; /* and replace with null-termination */
+ }
+ }
+ else list = (char **) NULL;
+
+ *nextensions = rep.nExtensions;
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return (list);
+}
+
+int
+XFreeExtensionList (char **list)
+{
+ if (list != NULL) {
+ Xfree (list[0]-1);
+ Xfree ((char *)list);
+ }
+ return 1;
+}
diff --git a/libX11/src/LoadFont.c b/libX11/src/LoadFont.c
index ad94f46ac..f547976ba 100644
--- a/libX11/src/LoadFont.c
+++ b/libX11/src/LoadFont.c
@@ -1,55 +1,55 @@
-/*
-
-Copyright 1986, 1998 The Open Group
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall not be
-used in advertising or otherwise to promote the sale, use or other dealings
-in this Software without prior written authorization from The Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-
-Font
-XLoadFont (
- register Display *dpy,
- _Xconst char *name)
-{
- register long nbytes;
- Font fid;
- register xOpenFontReq *req;
-
- if (_XF86LoadQueryLocaleFont(dpy, name, (XFontStruct **)0, &fid))
- return fid;
-
- LockDisplay(dpy);
- GetReq(OpenFont, req);
- nbytes = req->nbytes = name ? strlen(name) : 0;
- req->fid = fid = XAllocID(dpy);
- req->length += (nbytes+3)>>2;
- Data (dpy, name, nbytes);
- UnlockDisplay(dpy);
- SyncHandle();
- return (fid);
- /* can't return (req->fid) since request may have already been sent */
-}
-
+/*
+
+Copyright 1986, 1998 The Open Group
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group shall not be
+used in advertising or otherwise to promote the sale, use or other dealings
+in this Software without prior written authorization from The Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+
+Font
+XLoadFont (
+ register Display *dpy,
+ _Xconst char *name)
+{
+ register long nbytes;
+ Font fid;
+ register xOpenFontReq *req;
+
+ if (_XF86LoadQueryLocaleFont(dpy, name, (XFontStruct **)0, &fid))
+ return fid;
+
+ LockDisplay(dpy);
+ GetReq(OpenFont, req);
+ nbytes = req->nbytes = name ? strlen(name) : 0;
+ req->fid = fid = XAllocID(dpy);
+ req->length += (nbytes+3)>>2;
+ Data (dpy, name, nbytes);
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return (fid);
+ /* can't return (req->fid) since request may have already been sent */
+}
+
diff --git a/libX11/src/LockDis.c b/libX11/src/LockDis.c
index f7bfa7017..12dd97df0 100644
--- a/libX11/src/LockDis.c
+++ b/libX11/src/LockDis.c
@@ -1,84 +1,84 @@
-
-/*
-
-Copyright 1993, 1998 The Open Group
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall not be
-used in advertising or otherwise to promote the sale, use or other dealings
-in this Software without prior written authorization from The Open Group.
-
-*/
-
-/*
- * Author: Stephen Gildea, MIT X Consortium
- *
- * XLockDis.c - multi-thread application-level locking routines
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-#ifdef XTHREADS
-#include "locking.h"
-#endif
-
-void
-XLockDisplay(
- register Display* dpy)
-{
-#ifdef XTHREADS
- LockDisplay(dpy);
- if (dpy->lock)
- (*dpy->lock->user_lock_display)(dpy);
- /*
- * We want the threads in the reply queue to all get out before
- * XLockDisplay returns, in case they have any side effects the
- * caller of XLockDisplay was trying to protect against.
- * XLockDisplay puts itself at the head of the event waiters queue
- * to wait for all the replies to come in.
- */
- if (dpy->lock && dpy->lock->reply_awaiters) {
- struct _XCVList *cvl;
-
- cvl = (*dpy->lock->create_cvl)(dpy);
-
- /* stuff ourselves on the head of the queue */
- cvl->next = dpy->lock->event_awaiters;
- dpy->lock->event_awaiters = cvl;
-
- while (dpy->lock->reply_awaiters)
- ConditionWait(dpy, cvl->cv);
- UnlockNextEventReader(dpy); /* pass the signal on */
- }
- UnlockDisplay(dpy);
-#endif
-}
-
-void
-XUnlockDisplay(
- register Display* dpy)
-{
-#ifdef XTHREADS
- LockDisplay(dpy);
- if (dpy->lock)
- (*dpy->lock->user_unlock_display)(dpy);
- UnlockDisplay(dpy);
-#endif
-}
+
+/*
+
+Copyright 1993, 1998 The Open Group
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group shall not be
+used in advertising or otherwise to promote the sale, use or other dealings
+in this Software without prior written authorization from The Open Group.
+
+*/
+
+/*
+ * Author: Stephen Gildea, MIT X Consortium
+ *
+ * XLockDis.c - multi-thread application-level locking routines
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+#ifdef XTHREADS
+#include "locking.h"
+#endif
+
+void
+XLockDisplay(
+ register Display* dpy)
+{
+#ifdef XTHREADS
+ LockDisplay(dpy);
+ if (dpy->lock)
+ (*dpy->lock->user_lock_display)(dpy);
+ /*
+ * We want the threads in the reply queue to all get out before
+ * XLockDisplay returns, in case they have any side effects the
+ * caller of XLockDisplay was trying to protect against.
+ * XLockDisplay puts itself at the head of the event waiters queue
+ * to wait for all the replies to come in.
+ */
+ if (dpy->lock && dpy->lock->reply_awaiters) {
+ struct _XCVList *cvl;
+
+ cvl = (*dpy->lock->create_cvl)(dpy);
+
+ /* stuff ourselves on the head of the queue */
+ cvl->next = dpy->lock->event_awaiters;
+ dpy->lock->event_awaiters = cvl;
+
+ while (dpy->lock->reply_awaiters)
+ ConditionWait(dpy, cvl->cv);
+ UnlockNextEventReader(dpy); /* pass the signal on */
+ }
+ UnlockDisplay(dpy);
+#endif
+}
+
+void
+XUnlockDisplay(
+ register Display* dpy)
+{
+#ifdef XTHREADS
+ LockDisplay(dpy);
+ if (dpy->lock)
+ (*dpy->lock->user_unlock_display)(dpy);
+ UnlockDisplay(dpy);
+#endif
+}
diff --git a/libX11/src/LookupCol.c b/libX11/src/LookupCol.c
index 8569343a2..f7f969f56 100644
--- a/libX11/src/LookupCol.c
+++ b/libX11/src/LookupCol.c
@@ -1,104 +1,104 @@
-/*
-
-Copyright 1985, 1998 The Open Group
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall not be
-used in advertising or otherwise to promote the sale, use or other dealings
-in this Software without prior written authorization from The Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include <stdio.h>
-#include "Xlibint.h"
-#include "Xcmsint.h"
-
-
-Status
-XLookupColor (
- register Display *dpy,
- Colormap cmap,
- _Xconst char *spec,
- XColor *def,
- XColor *scr)
-{
- register int n;
- xLookupColorReply reply;
- register xLookupColorReq *req;
- XcmsCCC ccc;
- XcmsColor cmsColor_exact;
-
-#ifdef XCMS
- /*
- * Let's Attempt to use Xcms and i18n approach to Parse Color
- */
- if ((ccc = XcmsCCCOfColormap(dpy, cmap)) != (XcmsCCC)NULL) {
- const char *tmpName = spec;
-
- switch (_XcmsResolveColorString(ccc, &tmpName, &cmsColor_exact,
- XcmsRGBFormat)) {
- case XcmsSuccess:
- case XcmsSuccessWithCompression:
- _XcmsRGB_to_XColor(&cmsColor_exact, def, 1);
- memcpy((char *)scr, (char *)def, sizeof(XColor));
- _XUnresolveColor(ccc, scr);
- return(1);
- case XcmsFailure:
- case _XCMS_NEWNAME:
- /*
- * if the result was _XCMS_NEWNAME tmpName points to
- * a string in cmsColNm.c:pairs table, for example,
- * gray70 would become tekhvc:0.0/70.0/0.0
- */
- break;
- }
- }
-#endif
-
- /*
- * Xcms and i18n methods failed, so lets pass it to the server
- * for parsing.
- */
-
- n = strlen (spec);
- LockDisplay(dpy);
- GetReq (LookupColor, req);
- req->cmap = cmap;
- req->nbytes = n;
- req->length += (n + 3) >> 2;
- Data (dpy, spec, (long)n);
- if (!_XReply (dpy, (xReply *) &reply, 0, xTrue)) {
- UnlockDisplay(dpy);
- SyncHandle();
- return (0);
- }
- def->red = reply.exactRed;
- def->green = reply.exactGreen;
- def->blue = reply.exactBlue;
-
- scr->red = reply.screenRed;
- scr->green = reply.screenGreen;
- scr->blue = reply.screenBlue;
-
- UnlockDisplay(dpy);
- SyncHandle();
- return (1);
-}
+/*
+
+Copyright 1985, 1998 The Open Group
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group shall not be
+used in advertising or otherwise to promote the sale, use or other dealings
+in this Software without prior written authorization from The Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include <stdio.h>
+#include "Xlibint.h"
+#include "Xcmsint.h"
+
+
+Status
+XLookupColor (
+ register Display *dpy,
+ Colormap cmap,
+ _Xconst char *spec,
+ XColor *def,
+ XColor *scr)
+{
+ register int n;
+ xLookupColorReply reply;
+ register xLookupColorReq *req;
+ XcmsCCC ccc;
+ XcmsColor cmsColor_exact;
+
+#ifdef XCMS
+ /*
+ * Let's Attempt to use Xcms and i18n approach to Parse Color
+ */
+ if ((ccc = XcmsCCCOfColormap(dpy, cmap)) != (XcmsCCC)NULL) {
+ const char *tmpName = spec;
+
+ switch (_XcmsResolveColorString(ccc, &tmpName, &cmsColor_exact,
+ XcmsRGBFormat)) {
+ case XcmsSuccess:
+ case XcmsSuccessWithCompression:
+ _XcmsRGB_to_XColor(&cmsColor_exact, def, 1);
+ memcpy((char *)scr, (char *)def, sizeof(XColor));
+ _XUnresolveColor(ccc, scr);
+ return(1);
+ case XcmsFailure:
+ case _XCMS_NEWNAME:
+ /*
+ * if the result was _XCMS_NEWNAME tmpName points to
+ * a string in cmsColNm.c:pairs table, for example,
+ * gray70 would become tekhvc:0.0/70.0/0.0
+ */
+ break;
+ }
+ }
+#endif
+
+ /*
+ * Xcms and i18n methods failed, so lets pass it to the server
+ * for parsing.
+ */
+
+ n = strlen (spec);
+ LockDisplay(dpy);
+ GetReq (LookupColor, req);
+ req->cmap = cmap;
+ req->nbytes = n;
+ req->length += (n + 3) >> 2;
+ Data (dpy, spec, (long)n);
+ if (!_XReply (dpy, (xReply *) &reply, 0, xTrue)) {
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return (0);
+ }
+ def->red = reply.exactRed;
+ def->green = reply.exactGreen;
+ def->blue = reply.exactBlue;
+
+ scr->red = reply.screenRed;
+ scr->green = reply.screenGreen;
+ scr->blue = reply.screenBlue;
+
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return (1);
+}
diff --git a/libX11/src/LowerWin.c b/libX11/src/LowerWin.c
index d0a2ea97d..d430e6fd7 100644
--- a/libX11/src/LowerWin.c
+++ b/libX11/src/LowerWin.c
@@ -1,49 +1,49 @@
-/*
-
-Copyright 1986, 1998 The Open Group
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall not be
-used in advertising or otherwise to promote the sale, use or other dealings
-in this Software without prior written authorization from The Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-
-int
-XLowerWindow(
- Display *dpy,
- Window w)
-{
- register xConfigureWindowReq *req;
- unsigned long val = Below; /* needed for macro */
-
- LockDisplay(dpy);
- GetReqExtra(ConfigureWindow, 4, req);
- req->window = w;
- req->mask = CWStackMode;
- OneDataCard32 (dpy, NEXTPTR(req,xConfigureWindowReq), val);
- UnlockDisplay(dpy);
- SyncHandle();
- return 1;
-}
-
+/*
+
+Copyright 1986, 1998 The Open Group
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group shall not be
+used in advertising or otherwise to promote the sale, use or other dealings
+in this Software without prior written authorization from The Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+
+int
+XLowerWindow(
+ Display *dpy,
+ Window w)
+{
+ register xConfigureWindowReq *req;
+ unsigned long val = Below; /* needed for macro */
+
+ LockDisplay(dpy);
+ GetReqExtra(ConfigureWindow, 4, req);
+ req->window = w;
+ req->mask = CWStackMode;
+ OneDataCard32 (dpy, NEXTPTR(req,xConfigureWindowReq), val);
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return 1;
+}
+
diff --git a/libX11/src/Macros.c b/libX11/src/Macros.c
index eee68980a..42d4cf1c5 100644
--- a/libX11/src/Macros.c
+++ b/libX11/src/Macros.c
@@ -1,287 +1,287 @@
-/*
-
-Copyright 1987, 1998 The Open Group
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall not be
-used in advertising or otherwise to promote the sale, use or other dealings
-in this Software without prior written authorization from The Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-#define XUTIL_DEFINE_FUNCTIONS
-#include "Xutil.h"
-
-/*
- * This file makes full definitions of routines for each macro.
- * We do not expect C programs to use these, but other languages may
- * need them.
- */
-
-int XConnectionNumber(Display *dpy) { return (ConnectionNumber(dpy)); }
-
-Window XRootWindow (Display *dpy, int scr)
-{
- return (RootWindow(dpy,scr));
-}
-
-int XDefaultScreen(Display *dpy) { return (DefaultScreen(dpy)); }
-
-Window XDefaultRootWindow (Display *dpy)
-{
- return (RootWindow(dpy,DefaultScreen(dpy)));
-}
-
-Visual *XDefaultVisual(Display *dpy, int scr)
-{
- return (DefaultVisual(dpy, scr));
-}
-
-GC XDefaultGC(Display *dpy, int scr)
-{
- return (DefaultGC(dpy,scr));
-}
-
-unsigned long XBlackPixel(Display *dpy, int scr)
-{
- return (BlackPixel(dpy, scr));
-}
-
-unsigned long XWhitePixel(Display *dpy, int scr)
-{
- return (WhitePixel(dpy,scr));
-}
-
-unsigned long XAllPlanes(void) { return AllPlanes; }
-
-int XQLength(Display *dpy) { return (QLength(dpy)); }
-
-int XDisplayWidth(Display *dpy, int scr)
-{
- return (DisplayWidth(dpy,scr));
-}
-
-int XDisplayHeight(Display *dpy, int scr)
-{
- return (DisplayHeight(dpy, scr));
-}
-
-int XDisplayWidthMM(Display *dpy, int scr)
-{
- return (DisplayWidthMM(dpy, scr));
-}
-
-int XDisplayHeightMM(Display *dpy, int scr)
-{
- return (DisplayHeightMM(dpy, scr));
-}
-
-int XDisplayPlanes(Display *dpy, int scr)
-{
- return (DisplayPlanes(dpy, scr));
-}
-
-int XDisplayCells(Display *dpy, int scr)
-{
- return (DisplayCells (dpy, scr));
-}
-
-int XScreenCount(Display *dpy) { return (ScreenCount(dpy)); }
-
-char *XServerVendor(Display *dpy) { return (ServerVendor(dpy)); }
-
-int XProtocolVersion(Display *dpy) { return (ProtocolVersion(dpy)); }
-
-int XProtocolRevision(Display *dpy) { return (ProtocolRevision(dpy));}
-
-int XVendorRelease(Display *dpy) { return (VendorRelease(dpy)); }
-
-char *XDisplayString(Display *dpy) { return (DisplayString(dpy)); }
-
-int XDefaultDepth(Display *dpy, int scr)
-{
- return(DefaultDepth(dpy, scr));
-}
-
-Colormap XDefaultColormap(Display *dpy, int scr)
-{
- return (DefaultColormap(dpy, scr));
-}
-
-int XBitmapUnit(Display *dpy) { return (BitmapUnit(dpy)); }
-
-int XBitmapBitOrder(Display *dpy) { return (BitmapBitOrder(dpy)); }
-
-int XBitmapPad(Display *dpy) { return (BitmapPad(dpy)); }
-
-int XImageByteOrder(Display *dpy) { return (ImageByteOrder(dpy)); }
-
-unsigned long XNextRequest(Display *dpy)
-{
-#ifdef WORD64
- WORD64ALIGN
- return dpy->request + 1;
-#else
- return (NextRequest(dpy));
-#endif
-}
-
-unsigned long XLastKnownRequestProcessed(Display *dpy)
-{
- return (LastKnownRequestProcessed(dpy));
-}
-
-/* screen oriented macros (toolkit) */
-Screen *XScreenOfDisplay(Display *dpy, int scr)
-{
- return (ScreenOfDisplay(dpy, scr));
-}
-
-Screen *XDefaultScreenOfDisplay(Display *dpy)
-{
- return (DefaultScreenOfDisplay(dpy));
-}
-
-Display *XDisplayOfScreen(Screen *s) { return (DisplayOfScreen(s)); }
-
-Window XRootWindowOfScreen(Screen *s) { return (RootWindowOfScreen(s)); }
-
-unsigned long XBlackPixelOfScreen(Screen *s)
-{
- return (BlackPixelOfScreen(s));
-}
-
-unsigned long XWhitePixelOfScreen(Screen *s)
-{
- return (WhitePixelOfScreen(s));
-}
-
-Colormap XDefaultColormapOfScreen(Screen *s)
-{
- return (DefaultColormapOfScreen(s));
-}
-
-int XDefaultDepthOfScreen(Screen *s)
-{
- return (DefaultDepthOfScreen(s));
-}
-
-GC XDefaultGCOfScreen(Screen *s)
-{
- return (DefaultGCOfScreen(s));
-}
-
-Visual *XDefaultVisualOfScreen(Screen *s)
-{
- return (DefaultVisualOfScreen(s));
-}
-
-int XWidthOfScreen(Screen *s) { return (WidthOfScreen(s)); }
-
-int XHeightOfScreen(Screen *s) { return (HeightOfScreen(s)); }
-
-int XWidthMMOfScreen(Screen *s) { return (WidthMMOfScreen(s)); }
-
-int XHeightMMOfScreen(Screen *s) { return (HeightMMOfScreen(s)); }
-
-int XPlanesOfScreen(Screen *s) { return (PlanesOfScreen(s)); }
-
-int XCellsOfScreen(Screen *s) { return (CellsOfScreen(s)); }
-
-int XMinCmapsOfScreen(Screen *s) { return (MinCmapsOfScreen(s)); }
-
-int XMaxCmapsOfScreen(Screen *s) { return (MaxCmapsOfScreen(s)); }
-
-Bool XDoesSaveUnders(Screen *s) { return (DoesSaveUnders(s)); }
-
-int XDoesBackingStore(Screen *s) { return (DoesBackingStore(s)); }
-
-long XEventMaskOfScreen(Screen *s) { return (EventMaskOfScreen(s)); }
-
-int XScreenNumberOfScreen (register Screen *scr)
-{
- register Display *dpy = scr->display;
- register Screen *dpyscr = dpy->screens;
- register int i;
-
- for (i = 0; i < dpy->nscreens; i++, dpyscr++) {
- if (scr == dpyscr) return i;
- }
- return -1;
-}
-
-/*
- * These macros are used to give some sugar to the image routines so that
- * naive people are more comfortable with them.
- */
-#undef XDestroyImage
-int
-XDestroyImage(
- XImage *ximage)
-{
- return((*((ximage)->f.destroy_image))((ximage)));
-}
-#undef XGetPixel
-unsigned long XGetPixel(
- XImage *ximage,
- int x, int y)
-{
- return ((*((ximage)->f.get_pixel))((ximage), (x), (y)));
-}
-#undef XPutPixel
-int XPutPixel(
- XImage *ximage,
- int x, int y,
- unsigned long pixel)
-{
- return((*((ximage)->f.put_pixel))((ximage), (x), (y), (pixel)));
-}
-#undef XSubImage
-XImage *XSubImage(
- XImage *ximage,
- int x, int y,
- unsigned int width, unsigned int height)
-{
- return((*((ximage)->f.sub_image))((ximage), (x),
- (y), (width), (height)));
-}
-#undef XAddPixel
-int XAddPixel(
- XImage *ximage,
- long value)
-{
- return((*((ximage)->f.add_pixel))((ximage), (value)));
-}
-
-
-int
-XNoOp (register Display *dpy)
-{
- register xReq *req;
-
- LockDisplay(dpy);
- GetEmptyReq(NoOperation, req);
-
- UnlockDisplay(dpy);
- SyncHandle();
- return 1;
-}
+/*
+
+Copyright 1987, 1998 The Open Group
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group shall not be
+used in advertising or otherwise to promote the sale, use or other dealings
+in this Software without prior written authorization from The Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+#define XUTIL_DEFINE_FUNCTIONS
+#include "Xutil.h"
+
+/*
+ * This file makes full definitions of routines for each macro.
+ * We do not expect C programs to use these, but other languages may
+ * need them.
+ */
+
+int XConnectionNumber(Display *dpy) { return (ConnectionNumber(dpy)); }
+
+Window XRootWindow (Display *dpy, int scr)
+{
+ return (RootWindow(dpy,scr));
+}
+
+int XDefaultScreen(Display *dpy) { return (DefaultScreen(dpy)); }
+
+Window XDefaultRootWindow (Display *dpy)
+{
+ return (RootWindow(dpy,DefaultScreen(dpy)));
+}
+
+Visual *XDefaultVisual(Display *dpy, int scr)
+{
+ return (DefaultVisual(dpy, scr));
+}
+
+GC XDefaultGC(Display *dpy, int scr)
+{
+ return (DefaultGC(dpy,scr));
+}
+
+unsigned long XBlackPixel(Display *dpy, int scr)
+{
+ return (BlackPixel(dpy, scr));
+}
+
+unsigned long XWhitePixel(Display *dpy, int scr)
+{
+ return (WhitePixel(dpy,scr));
+}
+
+unsigned long XAllPlanes(void) { return AllPlanes; }
+
+int XQLength(Display *dpy) { return (QLength(dpy)); }
+
+int XDisplayWidth(Display *dpy, int scr)
+{
+ return (DisplayWidth(dpy,scr));
+}
+
+int XDisplayHeight(Display *dpy, int scr)
+{
+ return (DisplayHeight(dpy, scr));
+}
+
+int XDisplayWidthMM(Display *dpy, int scr)
+{
+ return (DisplayWidthMM(dpy, scr));
+}
+
+int XDisplayHeightMM(Display *dpy, int scr)
+{
+ return (DisplayHeightMM(dpy, scr));
+}
+
+int XDisplayPlanes(Display *dpy, int scr)
+{
+ return (DisplayPlanes(dpy, scr));
+}
+
+int XDisplayCells(Display *dpy, int scr)
+{
+ return (DisplayCells (dpy, scr));
+}
+
+int XScreenCount(Display *dpy) { return (ScreenCount(dpy)); }
+
+char *XServerVendor(Display *dpy) { return (ServerVendor(dpy)); }
+
+int XProtocolVersion(Display *dpy) { return (ProtocolVersion(dpy)); }
+
+int XProtocolRevision(Display *dpy) { return (ProtocolRevision(dpy));}
+
+int XVendorRelease(Display *dpy) { return (VendorRelease(dpy)); }
+
+char *XDisplayString(Display *dpy) { return (DisplayString(dpy)); }
+
+int XDefaultDepth(Display *dpy, int scr)
+{
+ return(DefaultDepth(dpy, scr));
+}
+
+Colormap XDefaultColormap(Display *dpy, int scr)
+{
+ return (DefaultColormap(dpy, scr));
+}
+
+int XBitmapUnit(Display *dpy) { return (BitmapUnit(dpy)); }
+
+int XBitmapBitOrder(Display *dpy) { return (BitmapBitOrder(dpy)); }
+
+int XBitmapPad(Display *dpy) { return (BitmapPad(dpy)); }
+
+int XImageByteOrder(Display *dpy) { return (ImageByteOrder(dpy)); }
+
+unsigned long XNextRequest(Display *dpy)
+{
+#ifdef WORD64
+ WORD64ALIGN
+ return dpy->request + 1;
+#else
+ return (NextRequest(dpy));
+#endif
+}
+
+unsigned long XLastKnownRequestProcessed(Display *dpy)
+{
+ return (LastKnownRequestProcessed(dpy));
+}
+
+/* screen oriented macros (toolkit) */
+Screen *XScreenOfDisplay(Display *dpy, int scr)
+{
+ return (ScreenOfDisplay(dpy, scr));
+}
+
+Screen *XDefaultScreenOfDisplay(Display *dpy)
+{
+ return (DefaultScreenOfDisplay(dpy));
+}
+
+Display *XDisplayOfScreen(Screen *s) { return (DisplayOfScreen(s)); }
+
+Window XRootWindowOfScreen(Screen *s) { return (RootWindowOfScreen(s)); }
+
+unsigned long XBlackPixelOfScreen(Screen *s)
+{
+ return (BlackPixelOfScreen(s));
+}
+
+unsigned long XWhitePixelOfScreen(Screen *s)
+{
+ return (WhitePixelOfScreen(s));
+}
+
+Colormap XDefaultColormapOfScreen(Screen *s)
+{
+ return (DefaultColormapOfScreen(s));
+}
+
+int XDefaultDepthOfScreen(Screen *s)
+{
+ return (DefaultDepthOfScreen(s));
+}
+
+GC XDefaultGCOfScreen(Screen *s)
+{
+ return (DefaultGCOfScreen(s));
+}
+
+Visual *XDefaultVisualOfScreen(Screen *s)
+{
+ return (DefaultVisualOfScreen(s));
+}
+
+int XWidthOfScreen(Screen *s) { return (WidthOfScreen(s)); }
+
+int XHeightOfScreen(Screen *s) { return (HeightOfScreen(s)); }
+
+int XWidthMMOfScreen(Screen *s) { return (WidthMMOfScreen(s)); }
+
+int XHeightMMOfScreen(Screen *s) { return (HeightMMOfScreen(s)); }
+
+int XPlanesOfScreen(Screen *s) { return (PlanesOfScreen(s)); }
+
+int XCellsOfScreen(Screen *s) { return (CellsOfScreen(s)); }
+
+int XMinCmapsOfScreen(Screen *s) { return (MinCmapsOfScreen(s)); }
+
+int XMaxCmapsOfScreen(Screen *s) { return (MaxCmapsOfScreen(s)); }
+
+Bool XDoesSaveUnders(Screen *s) { return (DoesSaveUnders(s)); }
+
+int XDoesBackingStore(Screen *s) { return (DoesBackingStore(s)); }
+
+long XEventMaskOfScreen(Screen *s) { return (EventMaskOfScreen(s)); }
+
+int XScreenNumberOfScreen (register Screen *scr)
+{
+ register Display *dpy = scr->display;
+ register Screen *dpyscr = dpy->screens;
+ register int i;
+
+ for (i = 0; i < dpy->nscreens; i++, dpyscr++) {
+ if (scr == dpyscr) return i;
+ }
+ return -1;
+}
+
+/*
+ * These macros are used to give some sugar to the image routines so that
+ * naive people are more comfortable with them.
+ */
+#undef XDestroyImage
+int
+XDestroyImage(
+ XImage *ximage)
+{
+ return((*((ximage)->f.destroy_image))((ximage)));
+}
+#undef XGetPixel
+unsigned long XGetPixel(
+ XImage *ximage,
+ int x, int y)
+{
+ return ((*((ximage)->f.get_pixel))((ximage), (x), (y)));
+}
+#undef XPutPixel
+int XPutPixel(
+ XImage *ximage,
+ int x, int y,
+ unsigned long pixel)
+{
+ return((*((ximage)->f.put_pixel))((ximage), (x), (y), (pixel)));
+}
+#undef XSubImage
+XImage *XSubImage(
+ XImage *ximage,
+ int x, int y,
+ unsigned int width, unsigned int height)
+{
+ return((*((ximage)->f.sub_image))((ximage), (x),
+ (y), (width), (height)));
+}
+#undef XAddPixel
+int XAddPixel(
+ XImage *ximage,
+ long value)
+{
+ return((*((ximage)->f.add_pixel))((ximage), (value)));
+}
+
+
+int
+XNoOp (register Display *dpy)
+{
+ register xReq *req;
+
+ LockDisplay(dpy);
+ GetEmptyReq(NoOperation, req);
+
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return 1;
+}
diff --git a/libX11/src/MapRaised.c b/libX11/src/MapRaised.c
index e853e404f..6ad6aef08 100644
--- a/libX11/src/MapRaised.c
+++ b/libX11/src/MapRaised.c
@@ -1,51 +1,51 @@
-/*
-
-Copyright 1986, 1998 The Open Group
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall not be
-used in advertising or otherwise to promote the sale, use or other dealings
-in this Software without prior written authorization from The Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-
-int
-XMapRaised (
- register Display *dpy,
- Window w)
-{
- register xConfigureWindowReq *req;
- register xResourceReq *req2;
- unsigned long val = Above; /* needed for macro */
-
- LockDisplay(dpy);
- GetReqExtra(ConfigureWindow, 4, req);
- req->window = w;
- req->mask = CWStackMode;
- OneDataCard32 (dpy, NEXTPTR(req,xConfigureWindowReq), val);
- GetResReq (MapWindow, w, req2);
- UnlockDisplay(dpy);
- SyncHandle();
- return 1;
-}
-
+/*
+
+Copyright 1986, 1998 The Open Group
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group shall not be
+used in advertising or otherwise to promote the sale, use or other dealings
+in this Software without prior written authorization from The Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+
+int
+XMapRaised (
+ register Display *dpy,
+ Window w)
+{
+ register xConfigureWindowReq *req;
+ register xResourceReq *req2;
+ unsigned long val = Above; /* needed for macro */
+
+ LockDisplay(dpy);
+ GetReqExtra(ConfigureWindow, 4, req);
+ req->window = w;
+ req->mask = CWStackMode;
+ OneDataCard32 (dpy, NEXTPTR(req,xConfigureWindowReq), val);
+ GetResReq (MapWindow, w, req2);
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return 1;
+}
+
diff --git a/libX11/src/MapSubs.c b/libX11/src/MapSubs.c
index 737131d38..14e8b8af5 100644
--- a/libX11/src/MapSubs.c
+++ b/libX11/src/MapSubs.c
@@ -1,43 +1,43 @@
-/*
-
-Copyright 1986, 1998 The Open Group
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall not be
-used in advertising or otherwise to promote the sale, use or other dealings
-in this Software without prior written authorization from The Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-
-int
-XMapSubwindows(
- register Display *dpy,
- Window win)
-{
- register xResourceReq *req;
- LockDisplay(dpy);
- GetResReq(MapSubwindows, win, req);
- UnlockDisplay(dpy);
- SyncHandle();
- return 1;
-}
+/*
+
+Copyright 1986, 1998 The Open Group
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group shall not be
+used in advertising or otherwise to promote the sale, use or other dealings
+in this Software without prior written authorization from The Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+
+int
+XMapSubwindows(
+ register Display *dpy,
+ Window win)
+{
+ register xResourceReq *req;
+ LockDisplay(dpy);
+ GetResReq(MapSubwindows, win, req);
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return 1;
+}
diff --git a/libX11/src/MapWindow.c b/libX11/src/MapWindow.c
index 23303e9b4..cc041ff51 100644
--- a/libX11/src/MapWindow.c
+++ b/libX11/src/MapWindow.c
@@ -1,44 +1,44 @@
-/*
-
-Copyright 1986, 1998 The Open Group
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall not be
-used in advertising or otherwise to promote the sale, use or other dealings
-in this Software without prior written authorization from The Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-
-int
-XMapWindow (
- register Display *dpy,
- Window w)
-{
- register xResourceReq *req;
- LockDisplay (dpy);
- GetResReq(MapWindow, w, req);
- UnlockDisplay (dpy);
- SyncHandle();
- return 1;
-}
-
+/*
+
+Copyright 1986, 1998 The Open Group
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group shall not be
+used in advertising or otherwise to promote the sale, use or other dealings
+in this Software without prior written authorization from The Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+
+int
+XMapWindow (
+ register Display *dpy,
+ Window w)
+{
+ register xResourceReq *req;
+ LockDisplay (dpy);
+ GetResReq(MapWindow, w, req);
+ UnlockDisplay (dpy);
+ SyncHandle();
+ return 1;
+}
+
diff --git a/libX11/src/MaskEvent.c b/libX11/src/MaskEvent.c
index dca019037..cbc8ca122 100644
--- a/libX11/src/MaskEvent.c
+++ b/libX11/src/MaskEvent.c
@@ -1,80 +1,80 @@
-/*
-
-Copyright 1986, 1998 The Open Group
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall not be
-used in advertising or otherwise to promote the sale, use or other dealings
-in this Software without prior written authorization from The Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-
-extern long const _Xevent_to_mask[];
-#define AllPointers (PointerMotionMask|PointerMotionHintMask|ButtonMotionMask)
-#define AllButtons (Button1MotionMask|Button2MotionMask|Button3MotionMask|\
- Button4MotionMask|Button5MotionMask)
-
-/*
- * return the next event in the queue matching one of the events in the mask.
- * If no event, flush output, and wait until match succeeds.
- * Events earlier in the queue are not discarded.
- */
-
-int
-XMaskEvent (
- register Display *dpy,
- long mask, /* Selected event mask. */
- register XEvent *event) /* XEvent to be filled in. */
-{
- register _XQEvent *prev, *qelt;
- unsigned long qe_serial = 0;
-
- LockDisplay(dpy);
-
- /* Delete unclaimed cookies */
- _XFreeEventCookies(dpy);
-
- prev = NULL;
- while (1) {
- for (qelt = prev ? prev->next : dpy->head;
- qelt;
- prev = qelt, qelt = qelt->next) {
- if ((qelt->event.type < GenericEvent) &&
- (_Xevent_to_mask[qelt->event.type] & mask) &&
- ((qelt->event.type != MotionNotify) ||
- (mask & AllPointers) ||
- (mask & AllButtons & qelt->event.xmotion.state))) {
- *event = qelt->event;
- _XDeq(dpy, prev, qelt);
- UnlockDisplay(dpy);
- return 0;
- }
- }
- if (prev)
- qe_serial = prev->qserial_num;
- _XReadEvents(dpy);
- if (prev && prev->qserial_num != qe_serial)
- /* another thread has snatched this event */
- prev = NULL;
- }
-}
+/*
+
+Copyright 1986, 1998 The Open Group
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group shall not be
+used in advertising or otherwise to promote the sale, use or other dealings
+in this Software without prior written authorization from The Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+
+extern long const _Xevent_to_mask[];
+#define AllPointers (PointerMotionMask|PointerMotionHintMask|ButtonMotionMask)
+#define AllButtons (Button1MotionMask|Button2MotionMask|Button3MotionMask|\
+ Button4MotionMask|Button5MotionMask)
+
+/*
+ * return the next event in the queue matching one of the events in the mask.
+ * If no event, flush output, and wait until match succeeds.
+ * Events earlier in the queue are not discarded.
+ */
+
+int
+XMaskEvent (
+ register Display *dpy,
+ long mask, /* Selected event mask. */
+ register XEvent *event) /* XEvent to be filled in. */
+{
+ register _XQEvent *prev, *qelt;
+ unsigned long qe_serial = 0;
+
+ LockDisplay(dpy);
+
+ /* Delete unclaimed cookies */
+ _XFreeEventCookies(dpy);
+
+ prev = NULL;
+ while (1) {
+ for (qelt = prev ? prev->next : dpy->head;
+ qelt;
+ prev = qelt, qelt = qelt->next) {
+ if ((qelt->event.type < GenericEvent) &&
+ (_Xevent_to_mask[qelt->event.type] & mask) &&
+ ((qelt->event.type != MotionNotify) ||
+ (mask & AllPointers) ||
+ (mask & AllButtons & qelt->event.xmotion.state))) {
+ *event = qelt->event;
+ _XDeq(dpy, prev, qelt);
+ UnlockDisplay(dpy);
+ return 0;
+ }
+ }
+ if (prev)
+ qe_serial = prev->qserial_num;
+ _XReadEvents(dpy);
+ if (prev && prev->qserial_num != qe_serial)
+ /* another thread has snatched this event */
+ prev = NULL;
+ }
+}
diff --git a/libX11/src/Misc.c b/libX11/src/Misc.c
index cd24c8b44..c3a028408 100644
--- a/libX11/src/Misc.c
+++ b/libX11/src/Misc.c
@@ -1,66 +1,66 @@
-/*
-
-Copyright 1988, 1998 The Open Group
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall not be
-used in advertising or otherwise to promote the sale, use or other dealings
-in this Software without prior written authorization from The Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-
-long XMaxRequestSize(Display *dpy)
-{
- return dpy->max_request_size;
-}
-
-char *XResourceManagerString(Display *dpy)
-{
- return dpy->xdefaults;
-}
-
-unsigned long XDisplayMotionBufferSize(Display *dpy)
-{
- return dpy->motion_buffer;
-}
-
-int
-XDisplayKeycodes(
- Display *dpy,
- int *min_keycode_return,
- int *max_keycode_return)
-{
- *min_keycode_return = dpy->min_keycode;
- *max_keycode_return = dpy->max_keycode;
- return 1;
-}
-
-VisualID XVisualIDFromVisual(Visual *visual)
-{
- return visual->visualid;
-}
-
-long XExtendedMaxRequestSize(Display *dpy)
-{
- return dpy->bigreq_size;
-}
+/*
+
+Copyright 1988, 1998 The Open Group
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group shall not be
+used in advertising or otherwise to promote the sale, use or other dealings
+in this Software without prior written authorization from The Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+
+long XMaxRequestSize(Display *dpy)
+{
+ return dpy->max_request_size;
+}
+
+char *XResourceManagerString(Display *dpy)
+{
+ return dpy->xdefaults;
+}
+
+unsigned long XDisplayMotionBufferSize(Display *dpy)
+{
+ return dpy->motion_buffer;
+}
+
+int
+XDisplayKeycodes(
+ Display *dpy,
+ int *min_keycode_return,
+ int *max_keycode_return)
+{
+ *min_keycode_return = dpy->min_keycode;
+ *max_keycode_return = dpy->max_keycode;
+ return 1;
+}
+
+VisualID XVisualIDFromVisual(Visual *visual)
+{
+ return visual->visualid;
+}
+
+long XExtendedMaxRequestSize(Display *dpy)
+{
+ return dpy->bigreq_size;
+}
diff --git a/libX11/src/ModMap.c b/libX11/src/ModMap.c
index 149bcbd20..c99bfdd5f 100644
--- a/libX11/src/ModMap.c
+++ b/libX11/src/ModMap.c
@@ -1,181 +1,181 @@
-/*
-
-Copyright 1986, 1998 The Open Group
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall not be
-used in advertising or otherwise to promote the sale, use or other dealings
-in this Software without prior written authorization from The Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-
-XModifierKeymap *
-XGetModifierMapping(register Display *dpy)
-{
- xGetModifierMappingReply rep;
- register xReq *req;
- unsigned long nbytes;
- XModifierKeymap *res;
-
- LockDisplay(dpy);
- GetEmptyReq(GetModifierMapping, req);
- (void) _XReply (dpy, (xReply *)&rep, 0, xFalse);
-
- nbytes = (unsigned long)rep.length << 2;
- res = (XModifierKeymap *) Xmalloc(sizeof (XModifierKeymap));
- if (res) res->modifiermap = (KeyCode *) Xmalloc ((unsigned) nbytes);
- if ((! res) || (! res->modifiermap)) {
- if (res) Xfree((char *) res);
- res = (XModifierKeymap *) NULL;
- _XEatData(dpy, nbytes);
- } else {
- _XReadPad(dpy, (char *) res->modifiermap, (long) nbytes);
- res->max_keypermod = rep.numKeyPerModifier;
- }
-
- UnlockDisplay(dpy);
- SyncHandle();
- return (res);
-}
-
-/*
- * Returns:
- * 0 Success
- * 1 Busy - one or more old or new modifiers are down
- * 2 Failed - one or more new modifiers unacceptable
- */
-int
-XSetModifierMapping(
- register Display *dpy,
- register XModifierKeymap *modifier_map)
-{
- register xSetModifierMappingReq *req;
- xSetModifierMappingReply rep;
- int mapSize = modifier_map->max_keypermod << 3; /* 8 modifiers */
-
- LockDisplay(dpy);
- GetReqExtra(SetModifierMapping, mapSize, req);
-
- req->numKeyPerModifier = modifier_map->max_keypermod;
-
- memcpy((char *) NEXTPTR(req,xSetModifierMappingReq),
- (char *) modifier_map->modifiermap,
- mapSize);
-
- (void) _XReply(dpy, (xReply *) & rep,
- (SIZEOF(xSetModifierMappingReply) - SIZEOF(xReply)) >> 2, xTrue);
- UnlockDisplay(dpy);
- SyncHandle();
- return (rep.success);
-}
-
-XModifierKeymap *
-XNewModifiermap(int keyspermodifier)
-{
- XModifierKeymap *res = (XModifierKeymap *) Xmalloc((sizeof (XModifierKeymap)));
- if (res) {
- res->max_keypermod = keyspermodifier;
- res->modifiermap = (keyspermodifier > 0 ?
- (KeyCode *) Xmalloc((unsigned) (8 * keyspermodifier))
- : (KeyCode *) NULL);
- if (keyspermodifier && (res->modifiermap == NULL)) {
- Xfree((char *) res);
- return (XModifierKeymap *) NULL;
- }
- }
- return (res);
-}
-
-
-int
-XFreeModifiermap(XModifierKeymap *map)
-{
- if (map) {
- if (map->modifiermap)
- Xfree((char *) map->modifiermap);
- Xfree((char *) map);
- }
- return 1;
-}
-
-XModifierKeymap *
-XInsertModifiermapEntry(XModifierKeymap *map,
-#if NeedWidePrototypes
- unsigned int keycode,
-#else
- KeyCode keycode,
-#endif
- int modifier)
-{
- XModifierKeymap *newmap;
- int i,
- row = modifier * map->max_keypermod,
- newrow,
- lastrow;
-
- for (i=0; i<map->max_keypermod; i++) {
- if (map->modifiermap[ row+i ] == keycode)
- return(map); /* already in the map */
- if (map->modifiermap[ row+i ] == 0) {
- map->modifiermap[ row+i ] = keycode;
- return(map); /* we added it without stretching the map */
- }
- }
-
- /* stretch the map */
- if ((newmap = XNewModifiermap(map->max_keypermod+1)) == NULL)
- return (XModifierKeymap *) NULL;
- newrow = row = 0;
- lastrow = newmap->max_keypermod * 8;
- while (newrow < lastrow) {
- for (i=0; i<map->max_keypermod; i++)
- newmap->modifiermap[ newrow+i ] = map->modifiermap[ row+i ];
- newmap->modifiermap[ newrow+i ] = 0;
- row += map->max_keypermod;
- newrow += newmap->max_keypermod;
- }
- (void) XFreeModifiermap(map);
- newrow = newmap->max_keypermod * modifier + newmap->max_keypermod - 1;
- newmap->modifiermap[ newrow ] = keycode;
- return(newmap);
-}
-
-XModifierKeymap *
-XDeleteModifiermapEntry(XModifierKeymap *map,
-#if NeedWidePrototypes
- unsigned int keycode,
-#else
- KeyCode keycode,
-#endif
- int modifier)
-{
- int i,
- row = modifier * map->max_keypermod;
-
- for (i=0; i<map->max_keypermod; i++) {
- if (map->modifiermap[ row+i ] == keycode)
- map->modifiermap[ row+i ] = 0;
- }
- /* should we shrink the map?? */
- return (map);
-}
+/*
+
+Copyright 1986, 1998 The Open Group
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group shall not be
+used in advertising or otherwise to promote the sale, use or other dealings
+in this Software without prior written authorization from The Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+
+XModifierKeymap *
+XGetModifierMapping(register Display *dpy)
+{
+ xGetModifierMappingReply rep;
+ register xReq *req;
+ unsigned long nbytes;
+ XModifierKeymap *res;
+
+ LockDisplay(dpy);
+ GetEmptyReq(GetModifierMapping, req);
+ (void) _XReply (dpy, (xReply *)&rep, 0, xFalse);
+
+ nbytes = (unsigned long)rep.length << 2;
+ res = (XModifierKeymap *) Xmalloc(sizeof (XModifierKeymap));
+ if (res) res->modifiermap = (KeyCode *) Xmalloc ((unsigned) nbytes);
+ if ((! res) || (! res->modifiermap)) {
+ if (res) Xfree((char *) res);
+ res = (XModifierKeymap *) NULL;
+ _XEatData(dpy, nbytes);
+ } else {
+ _XReadPad(dpy, (char *) res->modifiermap, (long) nbytes);
+ res->max_keypermod = rep.numKeyPerModifier;
+ }
+
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return (res);
+}
+
+/*
+ * Returns:
+ * 0 Success
+ * 1 Busy - one or more old or new modifiers are down
+ * 2 Failed - one or more new modifiers unacceptable
+ */
+int
+XSetModifierMapping(
+ register Display *dpy,
+ register XModifierKeymap *modifier_map)
+{
+ register xSetModifierMappingReq *req;
+ xSetModifierMappingReply rep;
+ int mapSize = modifier_map->max_keypermod << 3; /* 8 modifiers */
+
+ LockDisplay(dpy);
+ GetReqExtra(SetModifierMapping, mapSize, req);
+
+ req->numKeyPerModifier = modifier_map->max_keypermod;
+
+ memcpy((char *) NEXTPTR(req,xSetModifierMappingReq),
+ (char *) modifier_map->modifiermap,
+ mapSize);
+
+ (void) _XReply(dpy, (xReply *) & rep,
+ (SIZEOF(xSetModifierMappingReply) - SIZEOF(xReply)) >> 2, xTrue);
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return (rep.success);
+}
+
+XModifierKeymap *
+XNewModifiermap(int keyspermodifier)
+{
+ XModifierKeymap *res = (XModifierKeymap *) Xmalloc((sizeof (XModifierKeymap)));
+ if (res) {
+ res->max_keypermod = keyspermodifier;
+ res->modifiermap = (keyspermodifier > 0 ?
+ (KeyCode *) Xmalloc((unsigned) (8 * keyspermodifier))
+ : (KeyCode *) NULL);
+ if (keyspermodifier && (res->modifiermap == NULL)) {
+ Xfree((char *) res);
+ return (XModifierKeymap *) NULL;
+ }
+ }
+ return (res);
+}
+
+
+int
+XFreeModifiermap(XModifierKeymap *map)
+{
+ if (map) {
+ if (map->modifiermap)
+ Xfree((char *) map->modifiermap);
+ Xfree((char *) map);
+ }
+ return 1;
+}
+
+XModifierKeymap *
+XInsertModifiermapEntry(XModifierKeymap *map,
+#if NeedWidePrototypes
+ unsigned int keycode,
+#else
+ KeyCode keycode,
+#endif
+ int modifier)
+{
+ XModifierKeymap *newmap;
+ int i,
+ row = modifier * map->max_keypermod,
+ newrow,
+ lastrow;
+
+ for (i=0; i<map->max_keypermod; i++) {
+ if (map->modifiermap[ row+i ] == keycode)
+ return(map); /* already in the map */
+ if (map->modifiermap[ row+i ] == 0) {
+ map->modifiermap[ row+i ] = keycode;
+ return(map); /* we added it without stretching the map */
+ }
+ }
+
+ /* stretch the map */
+ if ((newmap = XNewModifiermap(map->max_keypermod+1)) == NULL)
+ return (XModifierKeymap *) NULL;
+ newrow = row = 0;
+ lastrow = newmap->max_keypermod * 8;
+ while (newrow < lastrow) {
+ for (i=0; i<map->max_keypermod; i++)
+ newmap->modifiermap[ newrow+i ] = map->modifiermap[ row+i ];
+ newmap->modifiermap[ newrow+i ] = 0;
+ row += map->max_keypermod;
+ newrow += newmap->max_keypermod;
+ }
+ (void) XFreeModifiermap(map);
+ newrow = newmap->max_keypermod * modifier + newmap->max_keypermod - 1;
+ newmap->modifiermap[ newrow ] = keycode;
+ return(newmap);
+}
+
+XModifierKeymap *
+XDeleteModifiermapEntry(XModifierKeymap *map,
+#if NeedWidePrototypes
+ unsigned int keycode,
+#else
+ KeyCode keycode,
+#endif
+ int modifier)
+{
+ int i,
+ row = modifier * map->max_keypermod;
+
+ for (i=0; i<map->max_keypermod; i++) {
+ if (map->modifiermap[ row+i ] == keycode)
+ map->modifiermap[ row+i ] = 0;
+ }
+ /* should we shrink the map?? */
+ return (map);
+}
diff --git a/libX11/src/MoveWin.c b/libX11/src/MoveWin.c
index 719c1d7d2..3cd75e106 100644
--- a/libX11/src/MoveWin.c
+++ b/libX11/src/MoveWin.c
@@ -1,65 +1,65 @@
-/*
-
-Copyright 1986, 1998 The Open Group
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall not be
-used in advertising or otherwise to promote the sale, use or other dealings
-in this Software without prior written authorization from The Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-
-int
-XMoveWindow (
- register Display *dpy,
- Window w,
- int x,
- int y)
-{
- register xConfigureWindowReq *req;
-
- LockDisplay(dpy);
- GetReqExtra(ConfigureWindow, 8, req);
-
- req->window = w;
- req->mask = CWX | CWY;
-
-#ifdef MUSTCOPY
- {
- long lx = (long) x, ly = (long) y;
- dpy->bufptr -= 8;
- Data32 (dpy, (long *) &lx, 4); /* order dictated by CWX and CWY */
- Data32 (dpy, (long *) &ly, 4);
- }
-#else
- {
- CARD32 *valuePtr = (CARD32 *) NEXTPTR(req,xConfigureWindowReq);
- *valuePtr++ = x;
- *valuePtr = y;
- }
-#endif /* MUSTCOPY */
- UnlockDisplay(dpy);
- SyncHandle();
- return 1;
-}
-
+/*
+
+Copyright 1986, 1998 The Open Group
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group shall not be
+used in advertising or otherwise to promote the sale, use or other dealings
+in this Software without prior written authorization from The Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+
+int
+XMoveWindow (
+ register Display *dpy,
+ Window w,
+ int x,
+ int y)
+{
+ register xConfigureWindowReq *req;
+
+ LockDisplay(dpy);
+ GetReqExtra(ConfigureWindow, 8, req);
+
+ req->window = w;
+ req->mask = CWX | CWY;
+
+#ifdef MUSTCOPY
+ {
+ long lx = (long) x, ly = (long) y;
+ dpy->bufptr -= 8;
+ Data32 (dpy, (long *) &lx, 4); /* order dictated by CWX and CWY */
+ Data32 (dpy, (long *) &ly, 4);
+ }
+#else
+ {
+ CARD32 *valuePtr = (CARD32 *) NEXTPTR(req,xConfigureWindowReq);
+ *valuePtr++ = x;
+ *valuePtr = y;
+ }
+#endif /* MUSTCOPY */
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return 1;
+}
+
diff --git a/libX11/src/NextEvent.c b/libX11/src/NextEvent.c
index 71f63b6ac..69b979ba6 100644
--- a/libX11/src/NextEvent.c
+++ b/libX11/src/NextEvent.c
@@ -1,58 +1,58 @@
-/*
-
-Copyright 1986, 1998 The Open Group
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall not be
-used in advertising or otherwise to promote the sale, use or other dealings
-in this Software without prior written authorization from The Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-
-/*
- * Return next event in queue, or if none, flush output and wait for
- * events.
- */
-
-int
-XNextEvent (
- register Display *dpy,
- register XEvent *event)
-{
- register _XQEvent *qelt;
-
- LockDisplay(dpy);
-
- /* Delete unclaimed cookies */
- _XFreeEventCookies(dpy);
-
- if (dpy->head == NULL)
- _XReadEvents(dpy);
- qelt = dpy->head;
- *event = qelt->event;
- _XDeq(dpy, NULL, qelt);
- _XStoreEventCookie(dpy, event);
- UnlockDisplay(dpy);
- return 0;
-}
-
+/*
+
+Copyright 1986, 1998 The Open Group
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group shall not be
+used in advertising or otherwise to promote the sale, use or other dealings
+in this Software without prior written authorization from The Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+
+/*
+ * Return next event in queue, or if none, flush output and wait for
+ * events.
+ */
+
+int
+XNextEvent (
+ register Display *dpy,
+ register XEvent *event)
+{
+ register _XQEvent *qelt;
+
+ LockDisplay(dpy);
+
+ /* Delete unclaimed cookies */
+ _XFreeEventCookies(dpy);
+
+ if (dpy->head == NULL)
+ _XReadEvents(dpy);
+ qelt = dpy->head;
+ *event = qelt->event;
+ _XDeq(dpy, NULL, qelt);
+ _XStoreEventCookie(dpy, event);
+ UnlockDisplay(dpy);
+ return 0;
+}
+
diff --git a/libX11/src/OCWrap.c b/libX11/src/OCWrap.c
index dd04ad856..fe23a3495 100644
--- a/libX11/src/OCWrap.c
+++ b/libX11/src/OCWrap.c
@@ -1,140 +1,140 @@
-/*
- * Copyright 1992, 1993 by TOSHIBA Corp.
- *
- * Permission to use, copy, modify, and distribute this software and its
- * documentation for any purpose and without fee is hereby granted, provided
- * that the above copyright notice appear in all copies and that both that
- * copyright notice and this permission notice appear in supporting
- * documentation, and that the name of TOSHIBA not be used in advertising
- * or publicity pertaining to distribution of the software without specific,
- * written prior permission. TOSHIBA make no representations about the
- * suitability of this software for any purpose. It is provided "as is"
- * without express or implied warranty.
- *
- * TOSHIBA DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
- * ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
- * TOSHIBA BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
- * ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
- * WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
- * ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
- * SOFTWARE.
- *
- * Author: Katsuhisa Yano TOSHIBA Corp.
- * mopi@osa.ilab.toshiba.co.jp
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-#include "Xlcint.h"
-
-XOC
-XCreateOC(XOM om, ...)
-{
- va_list var;
- XlcArgList args;
- XOC oc;
- int num_args;
-
- va_start(var, om);
- _XlcCountVaList(var, &num_args);
- va_end(var);
-
- va_start(var, om);
- _XlcVaToArgList(var, num_args, &args);
- va_end(var);
-
- if (args == (XlcArgList) NULL)
- return (XOC) NULL;
-
- oc = (*om->methods->create_oc)(om, args, num_args);
-
- Xfree(args);
-
- if (oc) {
- oc->core.next = om->core.oc_list;
- om->core.oc_list = oc;
- }
-
- return oc;
-}
-
-void
-XDestroyOC(XOC oc)
-{
- XOC prev, oc_list;
-
- prev = oc_list = oc->core.om->core.oc_list;
- if (oc_list == oc)
- oc->core.om->core.oc_list = oc_list->core.next;
- else {
- while ((oc_list = oc_list->core.next)) {
- if (oc_list == oc) {
- prev->core.next = oc_list->core.next;
- break;
- }
- prev = oc_list;
- }
- }
-
- (*oc->methods->destroy)(oc);
-}
-
-XOM
-XOMOfOC(XOC oc)
-{
- return oc->core.om;
-}
-
-char *
-XSetOCValues(XOC oc, ...)
-{
- va_list var;
- XlcArgList args;
- char *ret;
- int num_args;
-
- va_start(var, oc);
- _XlcCountVaList(var, &num_args);
- va_end(var);
-
- va_start(var, oc);
- _XlcVaToArgList(var, num_args, &args);
- va_end(var);
-
- if (args == (XlcArgList) NULL)
- return (char *) NULL;
-
- ret = (*oc->methods->set_values)(oc, args, num_args);
-
- Xfree(args);
-
- return ret;
-}
-
-char *
-XGetOCValues(XOC oc, ...)
-{
- va_list var;
- XlcArgList args;
- char *ret;
- int num_args;
-
- va_start(var, oc);
- _XlcCountVaList(var, &num_args);
- va_end(var);
-
- va_start(var, oc);
- _XlcVaToArgList(var, num_args, &args);
- va_end(var);
-
- if (args == (XlcArgList) NULL)
- return (char *) NULL;
-
- ret = (*oc->methods->get_values)(oc, args, num_args);
-
- Xfree(args);
-
- return ret;
-}
+/*
+ * Copyright 1992, 1993 by TOSHIBA Corp.
+ *
+ * Permission to use, copy, modify, and distribute this software and its
+ * documentation for any purpose and without fee is hereby granted, provided
+ * that the above copyright notice appear in all copies and that both that
+ * copyright notice and this permission notice appear in supporting
+ * documentation, and that the name of TOSHIBA not be used in advertising
+ * or publicity pertaining to distribution of the software without specific,
+ * written prior permission. TOSHIBA make no representations about the
+ * suitability of this software for any purpose. It is provided "as is"
+ * without express or implied warranty.
+ *
+ * TOSHIBA DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
+ * ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
+ * TOSHIBA BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
+ * ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
+ * WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
+ * ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
+ * SOFTWARE.
+ *
+ * Author: Katsuhisa Yano TOSHIBA Corp.
+ * mopi@osa.ilab.toshiba.co.jp
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+#include "Xlcint.h"
+
+XOC
+XCreateOC(XOM om, ...)
+{
+ va_list var;
+ XlcArgList args;
+ XOC oc;
+ int num_args;
+
+ va_start(var, om);
+ _XlcCountVaList(var, &num_args);
+ va_end(var);
+
+ va_start(var, om);
+ _XlcVaToArgList(var, num_args, &args);
+ va_end(var);
+
+ if (args == (XlcArgList) NULL)
+ return (XOC) NULL;
+
+ oc = (*om->methods->create_oc)(om, args, num_args);
+
+ Xfree(args);
+
+ if (oc) {
+ oc->core.next = om->core.oc_list;
+ om->core.oc_list = oc;
+ }
+
+ return oc;
+}
+
+void
+XDestroyOC(XOC oc)
+{
+ XOC prev, oc_list;
+
+ prev = oc_list = oc->core.om->core.oc_list;
+ if (oc_list == oc)
+ oc->core.om->core.oc_list = oc_list->core.next;
+ else {
+ while ((oc_list = oc_list->core.next)) {
+ if (oc_list == oc) {
+ prev->core.next = oc_list->core.next;
+ break;
+ }
+ prev = oc_list;
+ }
+ }
+
+ (*oc->methods->destroy)(oc);
+}
+
+XOM
+XOMOfOC(XOC oc)
+{
+ return oc->core.om;
+}
+
+char *
+XSetOCValues(XOC oc, ...)
+{
+ va_list var;
+ XlcArgList args;
+ char *ret;
+ int num_args;
+
+ va_start(var, oc);
+ _XlcCountVaList(var, &num_args);
+ va_end(var);
+
+ va_start(var, oc);
+ _XlcVaToArgList(var, num_args, &args);
+ va_end(var);
+
+ if (args == (XlcArgList) NULL)
+ return (char *) NULL;
+
+ ret = (*oc->methods->set_values)(oc, args, num_args);
+
+ Xfree(args);
+
+ return ret;
+}
+
+char *
+XGetOCValues(XOC oc, ...)
+{
+ va_list var;
+ XlcArgList args;
+ char *ret;
+ int num_args;
+
+ va_start(var, oc);
+ _XlcCountVaList(var, &num_args);
+ va_end(var);
+
+ va_start(var, oc);
+ _XlcVaToArgList(var, num_args, &args);
+ va_end(var);
+
+ if (args == (XlcArgList) NULL)
+ return (char *) NULL;
+
+ ret = (*oc->methods->get_values)(oc, args, num_args);
+
+ Xfree(args);
+
+ return ret;
+}
diff --git a/libX11/src/OMWrap.c b/libX11/src/OMWrap.c
index 056e1169e..045ca16bc 100644
--- a/libX11/src/OMWrap.c
+++ b/libX11/src/OMWrap.c
@@ -1,129 +1,129 @@
-/*
- * Copyright 1992, 1993 by TOSHIBA Corp.
- *
- * Permission to use, copy, modify, and distribute this software and its
- * documentation for any purpose and without fee is hereby granted, provided
- * that the above copyright notice appear in all copies and that both that
- * copyright notice and this permission notice appear in supporting
- * documentation, and that the name of TOSHIBA not be used in advertising
- * or publicity pertaining to distribution of the software without specific,
- * written prior permission. TOSHIBA make no representations about the
- * suitability of this software for any purpose. It is provided "as is"
- * without express or implied warranty.
- *
- * TOSHIBA DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
- * ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
- * TOSHIBA BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
- * ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
- * WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
- * ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
- * SOFTWARE.
- *
- * Author: Katsuhisa Yano TOSHIBA Corp.
- * mopi@osa.ilab.toshiba.co.jp
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-#include "Xlcint.h"
-
-XOM
-XOpenOM(Display *dpy, XrmDatabase rdb, _Xconst char *res_name,
- _Xconst char *res_class)
-{
- XLCd lcd = _XOpenLC((char *) NULL);
-
- if (lcd == NULL)
- return (XOM) NULL;
-
- if (lcd->methods->open_om)
- return (*lcd->methods->open_om)(lcd, dpy, rdb, res_name, res_class);
-
- return (XOM) NULL;
-}
-
-Status
-XCloseOM(XOM om)
-{
- XOC oc, next;
- XLCd lcd = om->core.lcd;
-
- next = om->core.oc_list;
-
- while ((oc = next)) {
- next = oc->core.next;
- (*oc->methods->destroy)(oc);
- }
-
- om->core.oc_list = NULL;
-
- _XCloseLC(lcd);
-
- return (*om->methods->close)(om);
-}
-
-char *
-XSetOMValues(XOM om, ...)
-{
- va_list var;
- XlcArgList args;
- char *ret;
- int num_args;
-
- va_start(var, om);
- _XlcCountVaList(var, &num_args);
- va_end(var);
-
- va_start(var, om);
- _XlcVaToArgList(var, num_args, &args);
- va_end(var);
-
- if (args == (XlcArgList) NULL)
- return (char *) NULL;
-
- ret = (*om->methods->set_values)(om, args, num_args);
-
- Xfree(args);
-
- return ret;
-}
-
-char *
-XGetOMValues(XOM om, ...)
-{
- va_list var;
- XlcArgList args;
- char *ret;
- int num_args;
-
- va_start(var, om);
- _XlcCountVaList(var, &num_args);
- va_end(var);
-
- va_start(var, om);
- _XlcVaToArgList(var, num_args, &args);
- va_end(var);
-
- if (args == (XlcArgList) NULL)
- return (char *) NULL;
-
- ret = (*om->methods->get_values)(om, args, num_args);
-
- Xfree(args);
-
- return ret;
-}
-
-Display *
-XDisplayOfOM(XOM om)
-{
- return om->core.display;
-}
-
-char *
-XLocaleOfOM(XOM om)
-{
- return om->core.lcd->core->name;
-}
+/*
+ * Copyright 1992, 1993 by TOSHIBA Corp.
+ *
+ * Permission to use, copy, modify, and distribute this software and its
+ * documentation for any purpose and without fee is hereby granted, provided
+ * that the above copyright notice appear in all copies and that both that
+ * copyright notice and this permission notice appear in supporting
+ * documentation, and that the name of TOSHIBA not be used in advertising
+ * or publicity pertaining to distribution of the software without specific,
+ * written prior permission. TOSHIBA make no representations about the
+ * suitability of this software for any purpose. It is provided "as is"
+ * without express or implied warranty.
+ *
+ * TOSHIBA DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
+ * ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
+ * TOSHIBA BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
+ * ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
+ * WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
+ * ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
+ * SOFTWARE.
+ *
+ * Author: Katsuhisa Yano TOSHIBA Corp.
+ * mopi@osa.ilab.toshiba.co.jp
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+#include "Xlcint.h"
+
+XOM
+XOpenOM(Display *dpy, XrmDatabase rdb, _Xconst char *res_name,
+ _Xconst char *res_class)
+{
+ XLCd lcd = _XOpenLC((char *) NULL);
+
+ if (lcd == NULL)
+ return (XOM) NULL;
+
+ if (lcd->methods->open_om)
+ return (*lcd->methods->open_om)(lcd, dpy, rdb, res_name, res_class);
+
+ return (XOM) NULL;
+}
+
+Status
+XCloseOM(XOM om)
+{
+ XOC oc, next;
+ XLCd lcd = om->core.lcd;
+
+ next = om->core.oc_list;
+
+ while ((oc = next)) {
+ next = oc->core.next;
+ (*oc->methods->destroy)(oc);
+ }
+
+ om->core.oc_list = NULL;
+
+ _XCloseLC(lcd);
+
+ return (*om->methods->close)(om);
+}
+
+char *
+XSetOMValues(XOM om, ...)
+{
+ va_list var;
+ XlcArgList args;
+ char *ret;
+ int num_args;
+
+ va_start(var, om);
+ _XlcCountVaList(var, &num_args);
+ va_end(var);
+
+ va_start(var, om);
+ _XlcVaToArgList(var, num_args, &args);
+ va_end(var);
+
+ if (args == (XlcArgList) NULL)
+ return (char *) NULL;
+
+ ret = (*om->methods->set_values)(om, args, num_args);
+
+ Xfree(args);
+
+ return ret;
+}
+
+char *
+XGetOMValues(XOM om, ...)
+{
+ va_list var;
+ XlcArgList args;
+ char *ret;
+ int num_args;
+
+ va_start(var, om);
+ _XlcCountVaList(var, &num_args);
+ va_end(var);
+
+ va_start(var, om);
+ _XlcVaToArgList(var, num_args, &args);
+ va_end(var);
+
+ if (args == (XlcArgList) NULL)
+ return (char *) NULL;
+
+ ret = (*om->methods->get_values)(om, args, num_args);
+
+ Xfree(args);
+
+ return ret;
+}
+
+Display *
+XDisplayOfOM(XOM om)
+{
+ return om->core.display;
+}
+
+char *
+XLocaleOfOM(XOM om)
+{
+ return om->core.lcd->core->name;
+}
diff --git a/libX11/src/ParseCmd.c b/libX11/src/ParseCmd.c
index a29f1952f..677190812 100644
--- a/libX11/src/ParseCmd.c
+++ b/libX11/src/ParseCmd.c
@@ -1,225 +1,225 @@
-
-/***********************************************************
-
-Copyright 1987, 1988, 1998 The Open Group
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall not be
-used in advertising or otherwise to promote the sale, use or other dealings
-in this Software without prior written authorization from The Open Group.
-
-
-Copyright 1987, 1988 by Digital Equipment Corporation, Maynard, Massachusetts.
-
- All Rights Reserved
-
-Permission to use, copy, modify, and distribute this software and its
-documentation for any purpose and without fee is hereby granted,
-provided that the above copyright notice appear in all copies and that
-both that copyright notice and this permission notice appear in
-supporting documentation, and that the name of Digital not be
-used in advertising or publicity pertaining to distribution of the
-software without specific, written prior permission.
-
-DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
-ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
-DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
-ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
-WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
-ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
-SOFTWARE.
-
-******************************************************************/
-
-/* XrmParseCommand()
-
- Parse command line and store argument values into resource database
-
- Allows any un-ambiguous abbreviation for an option name, but requires
- that the table be ordered with any options that are prefixes of
- other options appearing before the longer version in the table.
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-#include <X11/Xresource.h>
-#include <stdio.h>
-
-
-static void _XReportParseError(XrmOptionDescRec *arg, const char *msg)
-{
- (void) fprintf(stderr, "Error parsing argument \"%s\" (%s); %s\n",
- arg->option, arg->specifier, msg);
- exit(1);
-}
-
-void
-XrmParseCommand(
- XrmDatabase *pdb, /* data base */
- register XrmOptionDescList options, /* pointer to table of valid options */
- int num_options, /* number of options */
- _Xconst char *prefix, /* name to prefix resources with */
- int *argc, /* address of argument count */
- char **argv) /* argument list (command line) */
-{
- int foundOption;
- char **argsave;
- register int i, myargc;
- XrmBinding bindings[100];
- XrmQuark quarks[100];
- XrmBinding *start_bindings;
- XrmQuark *start_quarks;
- char *optP, *argP = NULL, optchar, argchar = 0;
- int matches;
- enum {DontCare, Check, NotSorted, Sorted} table_is_sorted;
- char **argend;
-
-#define PutCommandResource(value_str) \
- { \
- XrmStringToBindingQuarkList( \
- options[i].specifier, start_bindings, start_quarks); \
- XrmQPutStringResource(pdb, bindings, quarks, value_str); \
- } /* PutCommandResource */
-
- myargc = (*argc);
- argend = argv + myargc;
- argsave = ++argv;
-
- /* Initialize bindings/quark list with prefix (typically app name). */
- quarks[0] = XrmStringToName(prefix);
- bindings[0] = XrmBindTightly;
- start_quarks = quarks+1;
- start_bindings = bindings+1;
-
- table_is_sorted = (myargc > 2) ? Check : DontCare;
- for (--myargc; myargc > 0; --myargc, ++argv) {
- foundOption = False;
- matches = 0;
- for (i=0; i < num_options; ++i) {
- /* checking the sort order first insures we don't have to
- re-do the check if the arg hits on the last entry in
- the table. Useful because usually '=' is the last entry
- and users frequently specify geometry early in the command */
- if (table_is_sorted == Check && i > 0 &&
- strcmp(options[i].option, options[i-1].option) < 0) {
- table_is_sorted = NotSorted;
- }
- for (argP = *argv, optP = options[i].option;
- (optchar = *optP++) &&
- (argchar = *argP++) &&
- argchar == optchar;);
- if (!optchar) {
- if (!*argP ||
- options[i].argKind == XrmoptionStickyArg ||
- options[i].argKind == XrmoptionIsArg) {
- /* give preference to exact matches, StickyArg and IsArg */
- matches = 1;
- foundOption = i;
- break;
- }
- }
- else if (!argchar) {
- /* may be an abbreviation for this option */
- matches++;
- foundOption = i;
- }
- else if (table_is_sorted == Sorted && optchar > argchar) {
- break;
- }
- if (table_is_sorted == Check && i > 0 &&
- strcmp(options[i].option, options[i-1].option) < 0) {
- table_is_sorted = NotSorted;
- }
- }
- if (table_is_sorted == Check && i >= (num_options-1))
- table_is_sorted = Sorted;
- if (matches == 1) {
- i = foundOption;
- switch (options[i].argKind){
- case XrmoptionNoArg:
- --(*argc);
- PutCommandResource(options[i].value);
- break;
-
- case XrmoptionIsArg:
- --(*argc);
- PutCommandResource(*argv);
- break;
-
- case XrmoptionStickyArg:
- --(*argc);
- PutCommandResource(argP);
- break;
-
- case XrmoptionSepArg:
- if (myargc > 1) {
- ++argv; --myargc; --(*argc); --(*argc);
- PutCommandResource(*argv);
- } else
- (*argsave++) = (*argv);
- break;
-
- case XrmoptionResArg:
- if (myargc > 1) {
- ++argv; --myargc; --(*argc); --(*argc);
- XrmPutLineResource(pdb, *argv);
- } else
- (*argsave++) = (*argv);
- break;
-
- case XrmoptionSkipArg:
- if (myargc > 1) {
- --myargc;
- (*argsave++) = (*argv++);
- }
- (*argsave++) = (*argv);
- break;
-
- case XrmoptionSkipLine:
- for (; myargc > 0; myargc--)
- (*argsave++) = (*argv++);
- break;
-
- case XrmoptionSkipNArgs:
- {
- register int j = 1 + (long) options[i].value;
-
- if (j > myargc) j = myargc;
- for (; j > 0; j--) {
- (*argsave++) = (*argv++);
- myargc--;
- }
- argv--; /* went one too far before */
- myargc++;
- }
- break;
-
- default:
- _XReportParseError (&options[i], "unknown kind");
- break;
- }
- }
- else
- (*argsave++) = (*argv); /*compress arglist*/
- }
-
- if (argsave < argend)
- (*argsave)=NULL; /* put NULL terminator on compressed argv */
-}
+
+/***********************************************************
+
+Copyright 1987, 1988, 1998 The Open Group
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group shall not be
+used in advertising or otherwise to promote the sale, use or other dealings
+in this Software without prior written authorization from The Open Group.
+
+
+Copyright 1987, 1988 by Digital Equipment Corporation, Maynard, Massachusetts.
+
+ All Rights Reserved
+
+Permission to use, copy, modify, and distribute this software and its
+documentation for any purpose and without fee is hereby granted,
+provided that the above copyright notice appear in all copies and that
+both that copyright notice and this permission notice appear in
+supporting documentation, and that the name of Digital not be
+used in advertising or publicity pertaining to distribution of the
+software without specific, written prior permission.
+
+DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
+ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
+DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
+ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
+WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
+ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
+SOFTWARE.
+
+******************************************************************/
+
+/* XrmParseCommand()
+
+ Parse command line and store argument values into resource database
+
+ Allows any un-ambiguous abbreviation for an option name, but requires
+ that the table be ordered with any options that are prefixes of
+ other options appearing before the longer version in the table.
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+#include <X11/Xresource.h>
+#include <stdio.h>
+
+
+static void _XReportParseError(XrmOptionDescRec *arg, const char *msg)
+{
+ (void) fprintf(stderr, "Error parsing argument \"%s\" (%s); %s\n",
+ arg->option, arg->specifier, msg);
+ exit(1);
+}
+
+void
+XrmParseCommand(
+ XrmDatabase *pdb, /* data base */
+ register XrmOptionDescList options, /* pointer to table of valid options */
+ int num_options, /* number of options */
+ _Xconst char *prefix, /* name to prefix resources with */
+ int *argc, /* address of argument count */
+ char **argv) /* argument list (command line) */
+{
+ int foundOption;
+ char **argsave;
+ register int i, myargc;
+ XrmBinding bindings[100];
+ XrmQuark quarks[100];
+ XrmBinding *start_bindings;
+ XrmQuark *start_quarks;
+ char *optP, *argP = NULL, optchar, argchar = 0;
+ int matches;
+ enum {DontCare, Check, NotSorted, Sorted} table_is_sorted;
+ char **argend;
+
+#define PutCommandResource(value_str) \
+ { \
+ XrmStringToBindingQuarkList( \
+ options[i].specifier, start_bindings, start_quarks); \
+ XrmQPutStringResource(pdb, bindings, quarks, value_str); \
+ } /* PutCommandResource */
+
+ myargc = (*argc);
+ argend = argv + myargc;
+ argsave = ++argv;
+
+ /* Initialize bindings/quark list with prefix (typically app name). */
+ quarks[0] = XrmStringToName(prefix);
+ bindings[0] = XrmBindTightly;
+ start_quarks = quarks+1;
+ start_bindings = bindings+1;
+
+ table_is_sorted = (myargc > 2) ? Check : DontCare;
+ for (--myargc; myargc > 0; --myargc, ++argv) {
+ foundOption = False;
+ matches = 0;
+ for (i=0; i < num_options; ++i) {
+ /* checking the sort order first insures we don't have to
+ re-do the check if the arg hits on the last entry in
+ the table. Useful because usually '=' is the last entry
+ and users frequently specify geometry early in the command */
+ if (table_is_sorted == Check && i > 0 &&
+ strcmp(options[i].option, options[i-1].option) < 0) {
+ table_is_sorted = NotSorted;
+ }
+ for (argP = *argv, optP = options[i].option;
+ (optchar = *optP++) &&
+ (argchar = *argP++) &&
+ argchar == optchar;);
+ if (!optchar) {
+ if (!*argP ||
+ options[i].argKind == XrmoptionStickyArg ||
+ options[i].argKind == XrmoptionIsArg) {
+ /* give preference to exact matches, StickyArg and IsArg */
+ matches = 1;
+ foundOption = i;
+ break;
+ }
+ }
+ else if (!argchar) {
+ /* may be an abbreviation for this option */
+ matches++;
+ foundOption = i;
+ }
+ else if (table_is_sorted == Sorted && optchar > argchar) {
+ break;
+ }
+ if (table_is_sorted == Check && i > 0 &&
+ strcmp(options[i].option, options[i-1].option) < 0) {
+ table_is_sorted = NotSorted;
+ }
+ }
+ if (table_is_sorted == Check && i >= (num_options-1))
+ table_is_sorted = Sorted;
+ if (matches == 1) {
+ i = foundOption;
+ switch (options[i].argKind){
+ case XrmoptionNoArg:
+ --(*argc);
+ PutCommandResource(options[i].value);
+ break;
+
+ case XrmoptionIsArg:
+ --(*argc);
+ PutCommandResource(*argv);
+ break;
+
+ case XrmoptionStickyArg:
+ --(*argc);
+ PutCommandResource(argP);
+ break;
+
+ case XrmoptionSepArg:
+ if (myargc > 1) {
+ ++argv; --myargc; --(*argc); --(*argc);
+ PutCommandResource(*argv);
+ } else
+ (*argsave++) = (*argv);
+ break;
+
+ case XrmoptionResArg:
+ if (myargc > 1) {
+ ++argv; --myargc; --(*argc); --(*argc);
+ XrmPutLineResource(pdb, *argv);
+ } else
+ (*argsave++) = (*argv);
+ break;
+
+ case XrmoptionSkipArg:
+ if (myargc > 1) {
+ --myargc;
+ (*argsave++) = (*argv++);
+ }
+ (*argsave++) = (*argv);
+ break;
+
+ case XrmoptionSkipLine:
+ for (; myargc > 0; myargc--)
+ (*argsave++) = (*argv++);
+ break;
+
+ case XrmoptionSkipNArgs:
+ {
+ register int j = 1 + (long) options[i].value;
+
+ if (j > myargc) j = myargc;
+ for (; j > 0; j--) {
+ (*argsave++) = (*argv++);
+ myargc--;
+ }
+ argv--; /* went one too far before */
+ myargc++;
+ }
+ break;
+
+ default:
+ _XReportParseError (&options[i], "unknown kind");
+ break;
+ }
+ }
+ else
+ (*argsave++) = (*argv); /*compress arglist*/
+ }
+
+ if (argsave < argend)
+ (*argsave)=NULL; /* put NULL terminator on compressed argv */
+}
diff --git a/libX11/src/ParseCol.c b/libX11/src/ParseCol.c
index 913f04ee0..e997b1b8c 100644
--- a/libX11/src/ParseCol.c
+++ b/libX11/src/ParseCol.c
@@ -1,138 +1,138 @@
-/*
-
-Copyright 1985, 1998 The Open Group
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall not be
-used in advertising or otherwise to promote the sale, use or other dealings
-in this Software without prior written authorization from The Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include <stdio.h>
-#include "Xlibint.h"
-#include "Xcmsint.h"
-
-
-Status
-XParseColor (
- register Display *dpy,
- Colormap cmap,
- _Xconst char *spec,
- XColor *def)
-{
- register int n, i;
- int r, g, b;
- char c;
- XcmsCCC ccc;
- XcmsColor cmsColor;
-
- if (!spec) return(0);
- n = strlen (spec);
- if (*spec == '#') {
- /*
- * RGB
- */
- spec++;
- n--;
- if (n != 3 && n != 6 && n != 9 && n != 12)
- return (0);
- n /= 3;
- g = b = 0;
- do {
- r = g;
- g = b;
- b = 0;
- for (i = n; --i >= 0; ) {
- c = *spec++;
- b <<= 4;
- if (c >= '0' && c <= '9')
- b |= c - '0';
- else if (c >= 'A' && c <= 'F')
- b |= c - ('A' - 10);
- else if (c >= 'a' && c <= 'f')
- b |= c - ('a' - 10);
- else return (0);
- }
- } while (*spec != '\0');
- n <<= 2;
- n = 16 - n;
- def->red = r << n;
- def->green = g << n;
- def->blue = b << n;
- def->flags = DoRed | DoGreen | DoBlue;
- return (1);
- }
-
-
-#ifdef XCMS
- /*
- * Let's Attempt to use Xcms and i18n approach to Parse Color
- */
- if ((ccc = XcmsCCCOfColormap(dpy, cmap)) != (XcmsCCC)NULL) {
- const char *tmpName = spec;
-
- switch (_XcmsResolveColorString(ccc, &tmpName, &cmsColor,
- XcmsRGBFormat)) {
- case XcmsSuccess:
- case XcmsSuccessWithCompression:
- cmsColor.pixel = def->pixel;
- _XcmsRGB_to_XColor(&cmsColor, def, 1);
- return(1);
- case XcmsFailure:
- case _XCMS_NEWNAME:
- /*
- * if the result was _XCMS_NEWNAME tmpName points to
- * a string in cmsColNm.c:pairs table, for example,
- * gray70 would become tekhvc:0.0/70.0/0.0
- */
- break;
- }
- }
-#endif
-
- /*
- * Xcms and i18n methods failed, so lets pass it to the server
- * for parsing.
- */
- {
- xLookupColorReply reply;
- register xLookupColorReq *req;
- LockDisplay(dpy);
- GetReq (LookupColor, req);
- req->cmap = cmap;
- req->nbytes = n = strlen(spec);
- req->length += (n + 3) >> 2;
- Data (dpy, spec, (long)n);
- if (!_XReply (dpy, (xReply *) &reply, 0, xTrue)) {
- UnlockDisplay(dpy);
- SyncHandle();
- return (0);
- }
- def->red = reply.exactRed;
- def->green = reply.exactGreen;
- def->blue = reply.exactBlue;
- def->flags = DoRed | DoGreen | DoBlue;
- UnlockDisplay(dpy);
- SyncHandle();
- return (1);
- }
-}
+/*
+
+Copyright 1985, 1998 The Open Group
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group shall not be
+used in advertising or otherwise to promote the sale, use or other dealings
+in this Software without prior written authorization from The Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include <stdio.h>
+#include "Xlibint.h"
+#include "Xcmsint.h"
+
+
+Status
+XParseColor (
+ register Display *dpy,
+ Colormap cmap,
+ _Xconst char *spec,
+ XColor *def)
+{
+ register int n, i;
+ int r, g, b;
+ char c;
+ XcmsCCC ccc;
+ XcmsColor cmsColor;
+
+ if (!spec) return(0);
+ n = strlen (spec);
+ if (*spec == '#') {
+ /*
+ * RGB
+ */
+ spec++;
+ n--;
+ if (n != 3 && n != 6 && n != 9 && n != 12)
+ return (0);
+ n /= 3;
+ g = b = 0;
+ do {
+ r = g;
+ g = b;
+ b = 0;
+ for (i = n; --i >= 0; ) {
+ c = *spec++;
+ b <<= 4;
+ if (c >= '0' && c <= '9')
+ b |= c - '0';
+ else if (c >= 'A' && c <= 'F')
+ b |= c - ('A' - 10);
+ else if (c >= 'a' && c <= 'f')
+ b |= c - ('a' - 10);
+ else return (0);
+ }
+ } while (*spec != '\0');
+ n <<= 2;
+ n = 16 - n;
+ def->red = r << n;
+ def->green = g << n;
+ def->blue = b << n;
+ def->flags = DoRed | DoGreen | DoBlue;
+ return (1);
+ }
+
+
+#ifdef XCMS
+ /*
+ * Let's Attempt to use Xcms and i18n approach to Parse Color
+ */
+ if ((ccc = XcmsCCCOfColormap(dpy, cmap)) != (XcmsCCC)NULL) {
+ const char *tmpName = spec;
+
+ switch (_XcmsResolveColorString(ccc, &tmpName, &cmsColor,
+ XcmsRGBFormat)) {
+ case XcmsSuccess:
+ case XcmsSuccessWithCompression:
+ cmsColor.pixel = def->pixel;
+ _XcmsRGB_to_XColor(&cmsColor, def, 1);
+ return(1);
+ case XcmsFailure:
+ case _XCMS_NEWNAME:
+ /*
+ * if the result was _XCMS_NEWNAME tmpName points to
+ * a string in cmsColNm.c:pairs table, for example,
+ * gray70 would become tekhvc:0.0/70.0/0.0
+ */
+ break;
+ }
+ }
+#endif
+
+ /*
+ * Xcms and i18n methods failed, so lets pass it to the server
+ * for parsing.
+ */
+ {
+ xLookupColorReply reply;
+ register xLookupColorReq *req;
+ LockDisplay(dpy);
+ GetReq (LookupColor, req);
+ req->cmap = cmap;
+ req->nbytes = n = strlen(spec);
+ req->length += (n + 3) >> 2;
+ Data (dpy, spec, (long)n);
+ if (!_XReply (dpy, (xReply *) &reply, 0, xTrue)) {
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return (0);
+ }
+ def->red = reply.exactRed;
+ def->green = reply.exactGreen;
+ def->blue = reply.exactBlue;
+ def->flags = DoRed | DoGreen | DoBlue;
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return (1);
+ }
+}
diff --git a/libX11/src/ParseGeom.c b/libX11/src/ParseGeom.c
index ad33fe15b..dfd812fc9 100644
--- a/libX11/src/ParseGeom.c
+++ b/libX11/src/ParseGeom.c
@@ -1,162 +1,162 @@
-
-/*
-
-Copyright 1985, 1986, 1987,1998 The Open Group
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
-
-The above copyright notice and this permission notice shall be included
-in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
-IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR
-OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
-ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall
-not be used in advertising or otherwise to promote the sale, use or
-other dealings in this Software without prior written authorization
-from The Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-#include "Xutil.h"
-
-/*
- * XParseGeometry parses strings of the form
- * "=<width>x<height>{+-}<xoffset>{+-}<yoffset>", where
- * width, height, xoffset, and yoffset are unsigned integers.
- * Example: "=80x24+300-49"
- * The equal sign is optional.
- * It returns a bitmask that indicates which of the four values
- * were actually found in the string. For each value found,
- * the corresponding argument is updated; for each value
- * not found, the corresponding argument is left unchanged.
- */
-
-static int
-ReadInteger(char *string, char **NextString)
-{
- register int Result = 0;
- int Sign = 1;
-
- if (*string == '+')
- string++;
- else if (*string == '-')
- {
- string++;
- Sign = -1;
- }
- for (; (*string >= '0') && (*string <= '9'); string++)
- {
- Result = (Result * 10) + (*string - '0');
- }
- *NextString = string;
- if (Sign >= 0)
- return (Result);
- else
- return (-Result);
-}
-
-int
-XParseGeometry (
-_Xconst char *string,
-int *x,
-int *y,
-unsigned int *width, /* RETURN */
-unsigned int *height) /* RETURN */
-{
- int mask = NoValue;
- register char *strind;
- unsigned int tempWidth = 0, tempHeight = 0;
- int tempX = 0, tempY = 0;
- char *nextCharacter;
-
- if ( (string == NULL) || (*string == '\0')) return(mask);
- if (*string == '=')
- string++; /* ignore possible '=' at beg of geometry spec */
-
- strind = (char *)string;
- if (*strind != '+' && *strind != '-' && *strind != 'x') {
- tempWidth = ReadInteger(strind, &nextCharacter);
- if (strind == nextCharacter)
- return (0);
- strind = nextCharacter;
- mask |= WidthValue;
- }
-
- if (*strind == 'x' || *strind == 'X') {
- strind++;
- tempHeight = ReadInteger(strind, &nextCharacter);
- if (strind == nextCharacter)
- return (0);
- strind = nextCharacter;
- mask |= HeightValue;
- }
-
- if ((*strind == '+') || (*strind == '-')) {
- if (*strind == '-') {
- strind++;
- tempX = -ReadInteger(strind, &nextCharacter);
- if (strind == nextCharacter)
- return (0);
- strind = nextCharacter;
- mask |= XNegative;
-
- }
- else
- { strind++;
- tempX = ReadInteger(strind, &nextCharacter);
- if (strind == nextCharacter)
- return(0);
- strind = nextCharacter;
- }
- mask |= XValue;
- if ((*strind == '+') || (*strind == '-')) {
- if (*strind == '-') {
- strind++;
- tempY = -ReadInteger(strind, &nextCharacter);
- if (strind == nextCharacter)
- return(0);
- strind = nextCharacter;
- mask |= YNegative;
-
- }
- else
- {
- strind++;
- tempY = ReadInteger(strind, &nextCharacter);
- if (strind == nextCharacter)
- return(0);
- strind = nextCharacter;
- }
- mask |= YValue;
- }
- }
-
- /* If strind isn't at the end of the string the it's an invalid
- geometry specification. */
-
- if (*strind != '\0') return (0);
-
- if (mask & XValue)
- *x = tempX;
- if (mask & YValue)
- *y = tempY;
- if (mask & WidthValue)
- *width = tempWidth;
- if (mask & HeightValue)
- *height = tempHeight;
- return (mask);
-}
+
+/*
+
+Copyright 1985, 1986, 1987,1998 The Open Group
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
+
+The above copyright notice and this permission notice shall be included
+in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR
+OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
+ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group shall
+not be used in advertising or otherwise to promote the sale, use or
+other dealings in this Software without prior written authorization
+from The Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+#include "Xutil.h"
+
+/*
+ * XParseGeometry parses strings of the form
+ * "=<width>x<height>{+-}<xoffset>{+-}<yoffset>", where
+ * width, height, xoffset, and yoffset are unsigned integers.
+ * Example: "=80x24+300-49"
+ * The equal sign is optional.
+ * It returns a bitmask that indicates which of the four values
+ * were actually found in the string. For each value found,
+ * the corresponding argument is updated; for each value
+ * not found, the corresponding argument is left unchanged.
+ */
+
+static int
+ReadInteger(char *string, char **NextString)
+{
+ register int Result = 0;
+ int Sign = 1;
+
+ if (*string == '+')
+ string++;
+ else if (*string == '-')
+ {
+ string++;
+ Sign = -1;
+ }
+ for (; (*string >= '0') && (*string <= '9'); string++)
+ {
+ Result = (Result * 10) + (*string - '0');
+ }
+ *NextString = string;
+ if (Sign >= 0)
+ return (Result);
+ else
+ return (-Result);
+}
+
+int
+XParseGeometry (
+_Xconst char *string,
+int *x,
+int *y,
+unsigned int *width, /* RETURN */
+unsigned int *height) /* RETURN */
+{
+ int mask = NoValue;
+ register char *strind;
+ unsigned int tempWidth = 0, tempHeight = 0;
+ int tempX = 0, tempY = 0;
+ char *nextCharacter;
+
+ if ( (string == NULL) || (*string == '\0')) return(mask);
+ if (*string == '=')
+ string++; /* ignore possible '=' at beg of geometry spec */
+
+ strind = (char *)string;
+ if (*strind != '+' && *strind != '-' && *strind != 'x') {
+ tempWidth = ReadInteger(strind, &nextCharacter);
+ if (strind == nextCharacter)
+ return (0);
+ strind = nextCharacter;
+ mask |= WidthValue;
+ }
+
+ if (*strind == 'x' || *strind == 'X') {
+ strind++;
+ tempHeight = ReadInteger(strind, &nextCharacter);
+ if (strind == nextCharacter)
+ return (0);
+ strind = nextCharacter;
+ mask |= HeightValue;
+ }
+
+ if ((*strind == '+') || (*strind == '-')) {
+ if (*strind == '-') {
+ strind++;
+ tempX = -ReadInteger(strind, &nextCharacter);
+ if (strind == nextCharacter)
+ return (0);
+ strind = nextCharacter;
+ mask |= XNegative;
+
+ }
+ else
+ { strind++;
+ tempX = ReadInteger(strind, &nextCharacter);
+ if (strind == nextCharacter)
+ return(0);
+ strind = nextCharacter;
+ }
+ mask |= XValue;
+ if ((*strind == '+') || (*strind == '-')) {
+ if (*strind == '-') {
+ strind++;
+ tempY = -ReadInteger(strind, &nextCharacter);
+ if (strind == nextCharacter)
+ return(0);
+ strind = nextCharacter;
+ mask |= YNegative;
+
+ }
+ else
+ {
+ strind++;
+ tempY = ReadInteger(strind, &nextCharacter);
+ if (strind == nextCharacter)
+ return(0);
+ strind = nextCharacter;
+ }
+ mask |= YValue;
+ }
+ }
+
+ /* If strind isn't at the end of the string the it's an invalid
+ geometry specification. */
+
+ if (*strind != '\0') return (0);
+
+ if (mask & XValue)
+ *x = tempX;
+ if (mask & YValue)
+ *y = tempY;
+ if (mask & WidthValue)
+ *width = tempWidth;
+ if (mask & HeightValue)
+ *height = tempHeight;
+ return (mask);
+}
diff --git a/libX11/src/PeekEvent.c b/libX11/src/PeekEvent.c
index f7d4e7006..06546f0e7 100644
--- a/libX11/src/PeekEvent.c
+++ b/libX11/src/PeekEvent.c
@@ -1,55 +1,55 @@
-/*
-
-Copyright 1986, 1998 The Open Group
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall not be
-used in advertising or otherwise to promote the sale, use or other dealings
-in this Software without prior written authorization from The Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-
-/*
- * Return the next event in the queue,
- * BUT do not remove it from the queue.
- * If none found, flush and wait until there is an event to peek.
- */
-
-int
-XPeekEvent (
- register Display *dpy,
- register XEvent *event)
-{
- XEvent copy;
- LockDisplay(dpy);
- if (dpy->head == NULL)
- _XReadEvents(dpy);
- *event = (dpy->head)->event;
- if (_XCopyEventCookie(dpy, &event->xcookie, &copy.xcookie)) {
- _XStoreEventCookie(dpy, &copy);
- *event = copy;
- }
- UnlockDisplay(dpy);
- return 1;
-}
-
+/*
+
+Copyright 1986, 1998 The Open Group
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group shall not be
+used in advertising or otherwise to promote the sale, use or other dealings
+in this Software without prior written authorization from The Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+
+/*
+ * Return the next event in the queue,
+ * BUT do not remove it from the queue.
+ * If none found, flush and wait until there is an event to peek.
+ */
+
+int
+XPeekEvent (
+ register Display *dpy,
+ register XEvent *event)
+{
+ XEvent copy;
+ LockDisplay(dpy);
+ if (dpy->head == NULL)
+ _XReadEvents(dpy);
+ *event = (dpy->head)->event;
+ if (_XCopyEventCookie(dpy, &event->xcookie, &copy.xcookie)) {
+ _XStoreEventCookie(dpy, &copy);
+ *event = copy;
+ }
+ UnlockDisplay(dpy);
+ return 1;
+}
+
diff --git a/libX11/src/PeekIfEv.c b/libX11/src/PeekIfEv.c
index c60995824..207cd1191 100644
--- a/libX11/src/PeekIfEv.c
+++ b/libX11/src/PeekIfEv.c
@@ -1,78 +1,78 @@
-/*
-
-Copyright 1986, 1998 The Open Group
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall not be
-used in advertising or otherwise to promote the sale, use or other dealings
-in this Software without prior written authorization from The Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-
-/*
- * return the next event in the queue that satisfies the predicate.
- * BUT do not remove it from the queue.
- * If none found, flush, and then wait until one satisfies the predicate.
- */
-
-int
-XPeekIfEvent (
- register Display *dpy,
- register XEvent *event,
- Bool (*predicate)(
- Display* /* display */,
- XEvent* /* event */,
- char* /* arg */
- ),
- char *arg)
-{
- register _XQEvent *prev, *qelt;
- unsigned long qe_serial = 0;
-
- LockDisplay(dpy);
- prev = NULL;
- while (1) {
- for (qelt = prev ? prev->next : dpy->head;
- qelt;
- prev = qelt, qelt = qelt->next) {
- if(qelt->qserial_num > qe_serial
- && (*predicate)(dpy, &qelt->event, arg)) {
- XEvent copy;
- *event = qelt->event;
- if (_XCopyEventCookie(dpy, &event->xcookie, &copy.xcookie)) {
- _XStoreEventCookie(dpy, &copy);
- *event = copy;
- }
- UnlockDisplay(dpy);
- return 0;
- }
- }
- if (prev)
- qe_serial = prev->qserial_num;
- _XReadEvents(dpy);
- if (prev && prev->qserial_num != qe_serial)
- /* another thread has snatched this event */
- prev = NULL;
- }
-}
-
+/*
+
+Copyright 1986, 1998 The Open Group
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group shall not be
+used in advertising or otherwise to promote the sale, use or other dealings
+in this Software without prior written authorization from The Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+
+/*
+ * return the next event in the queue that satisfies the predicate.
+ * BUT do not remove it from the queue.
+ * If none found, flush, and then wait until one satisfies the predicate.
+ */
+
+int
+XPeekIfEvent (
+ register Display *dpy,
+ register XEvent *event,
+ Bool (*predicate)(
+ Display* /* display */,
+ XEvent* /* event */,
+ char* /* arg */
+ ),
+ char *arg)
+{
+ register _XQEvent *prev, *qelt;
+ unsigned long qe_serial = 0;
+
+ LockDisplay(dpy);
+ prev = NULL;
+ while (1) {
+ for (qelt = prev ? prev->next : dpy->head;
+ qelt;
+ prev = qelt, qelt = qelt->next) {
+ if(qelt->qserial_num > qe_serial
+ && (*predicate)(dpy, &qelt->event, arg)) {
+ XEvent copy;
+ *event = qelt->event;
+ if (_XCopyEventCookie(dpy, &event->xcookie, &copy.xcookie)) {
+ _XStoreEventCookie(dpy, &copy);
+ *event = copy;
+ }
+ UnlockDisplay(dpy);
+ return 0;
+ }
+ }
+ if (prev)
+ qe_serial = prev->qserial_num;
+ _XReadEvents(dpy);
+ if (prev && prev->qserial_num != qe_serial)
+ /* another thread has snatched this event */
+ prev = NULL;
+ }
+}
+
diff --git a/libX11/src/Pending.c b/libX11/src/Pending.c
index 16be7a0df..eb97060ca 100644
--- a/libX11/src/Pending.c
+++ b/libX11/src/Pending.c
@@ -1,58 +1,58 @@
-/*
-
-Copyright 1986, 1998 The Open Group
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall not be
-used in advertising or otherwise to promote the sale, use or other dealings
-in this Software without prior written authorization from The Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-
-/* Read in pending events if needed and return the number of queued events. */
-
-int XEventsQueued (
- register Display *dpy,
- int mode)
-{
- int ret_val;
- LockDisplay(dpy);
- if (dpy->qlen || (mode == QueuedAlready))
- ret_val = dpy->qlen;
- else
- ret_val = _XEventsQueued (dpy, mode);
- UnlockDisplay(dpy);
- return ret_val;
-}
-
-int XPending (register Display *dpy)
-{
- int ret_val;
- LockDisplay(dpy);
- if (dpy->qlen)
- ret_val = dpy->qlen;
- else
- ret_val = _XEventsQueued (dpy, QueuedAfterFlush);
- UnlockDisplay(dpy);
- return ret_val;
-}
+/*
+
+Copyright 1986, 1998 The Open Group
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group shall not be
+used in advertising or otherwise to promote the sale, use or other dealings
+in this Software without prior written authorization from The Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+
+/* Read in pending events if needed and return the number of queued events. */
+
+int XEventsQueued (
+ register Display *dpy,
+ int mode)
+{
+ int ret_val;
+ LockDisplay(dpy);
+ if (dpy->qlen || (mode == QueuedAlready))
+ ret_val = dpy->qlen;
+ else
+ ret_val = _XEventsQueued (dpy, mode);
+ UnlockDisplay(dpy);
+ return ret_val;
+}
+
+int XPending (register Display *dpy)
+{
+ int ret_val;
+ LockDisplay(dpy);
+ if (dpy->qlen)
+ ret_val = dpy->qlen;
+ else
+ ret_val = _XEventsQueued (dpy, QueuedAfterFlush);
+ UnlockDisplay(dpy);
+ return ret_val;
+}
diff --git a/libX11/src/PixFormats.c b/libX11/src/PixFormats.c
index 5d25d4118..8e4a10027 100644
--- a/libX11/src/PixFormats.c
+++ b/libX11/src/PixFormats.c
@@ -1,62 +1,62 @@
-/*
-
-Copyright 1989, 1998 The Open Group
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall not be
-used in advertising or otherwise to promote the sale, use or other dealings
-in this Software without prior written authorization from The Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-#include <stdio.h>
-
-/*
- * XListPixmapFormats - return info from connection setup
- */
-
-XPixmapFormatValues *XListPixmapFormats (
- Display *dpy,
- int *count) /* RETURN */
-{
- XPixmapFormatValues *formats = (XPixmapFormatValues *)
- Xmalloc((unsigned) (dpy->nformats * sizeof (XPixmapFormatValues)));
-
- if (formats) {
- register int i;
- register XPixmapFormatValues *f;
- register ScreenFormat *sf;
-
- /*
- * copy data from internal Xlib data structure in display
- */
- for (i = dpy->nformats, f = formats, sf = dpy->pixmap_format; i > 0;
- i--, f++, sf++) {
- f->depth = sf->depth;
- f->bits_per_pixel = sf->bits_per_pixel;
- f->scanline_pad = sf->scanline_pad;
- }
-
- *count = dpy->nformats;
- }
- return formats;
-}
+/*
+
+Copyright 1989, 1998 The Open Group
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group shall not be
+used in advertising or otherwise to promote the sale, use or other dealings
+in this Software without prior written authorization from The Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+#include <stdio.h>
+
+/*
+ * XListPixmapFormats - return info from connection setup
+ */
+
+XPixmapFormatValues *XListPixmapFormats (
+ Display *dpy,
+ int *count) /* RETURN */
+{
+ XPixmapFormatValues *formats = (XPixmapFormatValues *)
+ Xmalloc((unsigned) (dpy->nformats * sizeof (XPixmapFormatValues)));
+
+ if (formats) {
+ register int i;
+ register XPixmapFormatValues *f;
+ register ScreenFormat *sf;
+
+ /*
+ * copy data from internal Xlib data structure in display
+ */
+ for (i = dpy->nformats, f = formats, sf = dpy->pixmap_format; i > 0;
+ i--, f++, sf++) {
+ f->depth = sf->depth;
+ f->bits_per_pixel = sf->bits_per_pixel;
+ f->scanline_pad = sf->scanline_pad;
+ }
+
+ *count = dpy->nformats;
+ }
+ return formats;
+}
diff --git a/libX11/src/PmapBgnd.c b/libX11/src/PmapBgnd.c
index b25dddcca..9c5155833 100644
--- a/libX11/src/PmapBgnd.c
+++ b/libX11/src/PmapBgnd.c
@@ -1,48 +1,48 @@
-/*
-
-Copyright 1986, 1998 The Open Group
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall not be
-used in advertising or otherwise to promote the sale, use or other dealings
-in this Software without prior written authorization from The Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-
-int
-XSetWindowBackgroundPixmap(
- register Display *dpy,
- Window w,
- Pixmap pixmap)
-{
- register xChangeWindowAttributesReq *req;
- LockDisplay (dpy);
- GetReqExtra (ChangeWindowAttributes, 4, req);
- req->window = w;
- req->valueMask = CWBackPixmap;
- OneDataCard32 (dpy, NEXTPTR(req,xChangeWindowAttributesReq), pixmap);
- UnlockDisplay (dpy);
- SyncHandle();
- return 1;
-}
-
+/*
+
+Copyright 1986, 1998 The Open Group
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group shall not be
+used in advertising or otherwise to promote the sale, use or other dealings
+in this Software without prior written authorization from The Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+
+int
+XSetWindowBackgroundPixmap(
+ register Display *dpy,
+ Window w,
+ Pixmap pixmap)
+{
+ register xChangeWindowAttributesReq *req;
+ LockDisplay (dpy);
+ GetReqExtra (ChangeWindowAttributes, 4, req);
+ req->window = w;
+ req->valueMask = CWBackPixmap;
+ OneDataCard32 (dpy, NEXTPTR(req,xChangeWindowAttributesReq), pixmap);
+ UnlockDisplay (dpy);
+ SyncHandle();
+ return 1;
+}
+
diff --git a/libX11/src/PmapBord.c b/libX11/src/PmapBord.c
index 99937b3bc..7e1be616e 100644
--- a/libX11/src/PmapBord.c
+++ b/libX11/src/PmapBord.c
@@ -1,48 +1,48 @@
-/*
-
-Copyright 1986, 1998 The Open Group
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall not be
-used in advertising or otherwise to promote the sale, use or other dealings
-in this Software without prior written authorization from The Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-
-int
-XSetWindowBorderPixmap(
- register Display *dpy,
- Window w,
- Pixmap pixmap)
-{
- register xChangeWindowAttributesReq *req;
- LockDisplay(dpy);
- GetReqExtra (ChangeWindowAttributes, 4, req);
- req->window = w;
- req->valueMask = CWBorderPixmap;
- OneDataCard32 (dpy, NEXTPTR(req,xChangeWindowAttributesReq), pixmap);
- UnlockDisplay(dpy);
- SyncHandle();
- return 1;
-}
-
+/*
+
+Copyright 1986, 1998 The Open Group
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group shall not be
+used in advertising or otherwise to promote the sale, use or other dealings
+in this Software without prior written authorization from The Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+
+int
+XSetWindowBorderPixmap(
+ register Display *dpy,
+ Window w,
+ Pixmap pixmap)
+{
+ register xChangeWindowAttributesReq *req;
+ LockDisplay(dpy);
+ GetReqExtra (ChangeWindowAttributes, 4, req);
+ req->window = w;
+ req->valueMask = CWBorderPixmap;
+ OneDataCard32 (dpy, NEXTPTR(req,xChangeWindowAttributesReq), pixmap);
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return 1;
+}
+
diff --git a/libX11/src/PolyReg.c b/libX11/src/PolyReg.c
index af367cf6f..74c8765fe 100644
--- a/libX11/src/PolyReg.c
+++ b/libX11/src/PolyReg.c
@@ -1,638 +1,638 @@
-/************************************************************************
-
-Copyright 1987, 1998 The Open Group
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall not be
-used in advertising or otherwise to promote the sale, use or other dealings
-in this Software without prior written authorization from The Open Group.
-
-
-Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts.
-
- All Rights Reserved
-
-Permission to use, copy, modify, and distribute this software and its
-documentation for any purpose and without fee is hereby granted,
-provided that the above copyright notice appear in all copies and that
-both that copyright notice and this permission notice appear in
-supporting documentation, and that the name of Digital not be
-used in advertising or publicity pertaining to distribution of the
-software without specific, written prior permission.
-
-DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
-ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
-DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
-ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
-WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
-ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
-SOFTWARE.
-
-************************************************************************/
-
-#define LARGE_COORDINATE 1000000
-#define SMALL_COORDINATE -LARGE_COORDINATE
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-#include "Xutil.h"
-#include <X11/Xregion.h>
-#include "poly.h"
-
-/*
- * InsertEdgeInET
- *
- * Insert the given edge into the edge table.
- * First we must find the correct bucket in the
- * Edge table, then find the right slot in the
- * bucket. Finally, we can insert it.
- *
- */
-static void
-InsertEdgeInET(
- EdgeTable *ET,
- EdgeTableEntry *ETE,
- int scanline,
- ScanLineListBlock **SLLBlock,
- int *iSLLBlock)
-{
- register EdgeTableEntry *start, *prev;
- register ScanLineList *pSLL, *pPrevSLL;
- ScanLineListBlock *tmpSLLBlock;
-
- /*
- * find the right bucket to put the edge into
- */
- pPrevSLL = &ET->scanlines;
- pSLL = pPrevSLL->next;
- while (pSLL && (pSLL->scanline < scanline))
- {
- pPrevSLL = pSLL;
- pSLL = pSLL->next;
- }
-
- /*
- * reassign pSLL (pointer to ScanLineList) if necessary
- */
- if ((!pSLL) || (pSLL->scanline > scanline))
- {
- if (*iSLLBlock > SLLSPERBLOCK-1)
- {
- tmpSLLBlock =
- (ScanLineListBlock *)Xmalloc(sizeof(ScanLineListBlock));
- (*SLLBlock)->next = tmpSLLBlock;
- tmpSLLBlock->next = (ScanLineListBlock *)NULL;
- *SLLBlock = tmpSLLBlock;
- *iSLLBlock = 0;
- }
- pSLL = &((*SLLBlock)->SLLs[(*iSLLBlock)++]);
-
- pSLL->next = pPrevSLL->next;
- pSLL->edgelist = (EdgeTableEntry *)NULL;
- pPrevSLL->next = pSLL;
- }
- pSLL->scanline = scanline;
-
- /*
- * now insert the edge in the right bucket
- */
- prev = (EdgeTableEntry *)NULL;
- start = pSLL->edgelist;
- while (start && (start->bres.minor_axis < ETE->bres.minor_axis))
- {
- prev = start;
- start = start->next;
- }
- ETE->next = start;
-
- if (prev)
- prev->next = ETE;
- else
- pSLL->edgelist = ETE;
-}
-
-/*
- * CreateEdgeTable
- *
- * This routine creates the edge table for
- * scan converting polygons.
- * The Edge Table (ET) looks like:
- *
- * EdgeTable
- * --------
- * | ymax | ScanLineLists
- * |scanline|-->------------>-------------->...
- * -------- |scanline| |scanline|
- * |edgelist| |edgelist|
- * --------- ---------
- * | |
- * | |
- * V V
- * list of ETEs list of ETEs
- *
- * where ETE is an EdgeTableEntry data structure,
- * and there is one ScanLineList per scanline at
- * which an edge is initially entered.
- *
- */
-
-static void
-CreateETandAET(
- register int count,
- register XPoint *pts,
- EdgeTable *ET,
- EdgeTableEntry *AET,
- register EdgeTableEntry *pETEs,
- ScanLineListBlock *pSLLBlock)
-{
- register XPoint *top, *bottom;
- register XPoint *PrevPt, *CurrPt;
- int iSLLBlock = 0;
- int dy;
-
- if (count < 2) return;
-
- /*
- * initialize the Active Edge Table
- */
- AET->next = (EdgeTableEntry *)NULL;
- AET->back = (EdgeTableEntry *)NULL;
- AET->nextWETE = (EdgeTableEntry *)NULL;
- AET->bres.minor_axis = SMALL_COORDINATE;
-
- /*
- * initialize the Edge Table.
- */
- ET->scanlines.next = (ScanLineList *)NULL;
- ET->ymax = SMALL_COORDINATE;
- ET->ymin = LARGE_COORDINATE;
- pSLLBlock->next = (ScanLineListBlock *)NULL;
-
- PrevPt = &pts[count-1];
-
- /*
- * for each vertex in the array of points.
- * In this loop we are dealing with two vertices at
- * a time -- these make up one edge of the polygon.
- */
- while (count--)
- {
- CurrPt = pts++;
-
- /*
- * find out which point is above and which is below.
- */
- if (PrevPt->y > CurrPt->y)
- {
- bottom = PrevPt, top = CurrPt;
- pETEs->ClockWise = 0;
- }
- else
- {
- bottom = CurrPt, top = PrevPt;
- pETEs->ClockWise = 1;
- }
-
- /*
- * don't add horizontal edges to the Edge table.
- */
- if (bottom->y != top->y)
- {
- pETEs->ymax = bottom->y-1; /* -1 so we don't get last scanline */
-
- /*
- * initialize integer edge algorithm
- */
- dy = bottom->y - top->y;
- BRESINITPGONSTRUCT(dy, top->x, bottom->x, pETEs->bres);
-
- InsertEdgeInET(ET, pETEs, top->y, &pSLLBlock, &iSLLBlock);
-
- if (PrevPt->y > ET->ymax)
- ET->ymax = PrevPt->y;
- if (PrevPt->y < ET->ymin)
- ET->ymin = PrevPt->y;
- pETEs++;
- }
-
- PrevPt = CurrPt;
- }
-}
-
-/*
- * loadAET
- *
- * This routine moves EdgeTableEntries from the
- * EdgeTable into the Active Edge Table,
- * leaving them sorted by smaller x coordinate.
- *
- */
-
-static void
-loadAET(
- register EdgeTableEntry *AET,
- register EdgeTableEntry *ETEs)
-{
- register EdgeTableEntry *pPrevAET;
- register EdgeTableEntry *tmp;
-
- pPrevAET = AET;
- AET = AET->next;
- while (ETEs)
- {
- while (AET && (AET->bres.minor_axis < ETEs->bres.minor_axis))
- {
- pPrevAET = AET;
- AET = AET->next;
- }
- tmp = ETEs->next;
- ETEs->next = AET;
- if (AET)
- AET->back = ETEs;
- ETEs->back = pPrevAET;
- pPrevAET->next = ETEs;
- pPrevAET = ETEs;
-
- ETEs = tmp;
- }
-}
-
-/*
- * computeWAET
- *
- * This routine links the AET by the
- * nextWETE (winding EdgeTableEntry) link for
- * use by the winding number rule. The final
- * Active Edge Table (AET) might look something
- * like:
- *
- * AET
- * ---------- --------- ---------
- * |ymax | |ymax | |ymax |
- * | ... | |... | |... |
- * |next |->|next |->|next |->...
- * |nextWETE| |nextWETE| |nextWETE|
- * --------- --------- ^--------
- * | | |
- * V-------------------> V---> ...
- *
- */
-static void
-computeWAET(
- register EdgeTableEntry *AET)
-{
- register EdgeTableEntry *pWETE;
- register int inside = 1;
- register int isInside = 0;
-
- AET->nextWETE = (EdgeTableEntry *)NULL;
- pWETE = AET;
- AET = AET->next;
- while (AET)
- {
- if (AET->ClockWise)
- isInside++;
- else
- isInside--;
-
- if ((!inside && !isInside) ||
- ( inside && isInside))
- {
- pWETE->nextWETE = AET;
- pWETE = AET;
- inside = !inside;
- }
- AET = AET->next;
- }
- pWETE->nextWETE = (EdgeTableEntry *)NULL;
-}
-
-/*
- * InsertionSort
- *
- * Just a simple insertion sort using
- * pointers and back pointers to sort the Active
- * Edge Table.
- *
- */
-
-static int
-InsertionSort(
- register EdgeTableEntry *AET)
-{
- register EdgeTableEntry *pETEchase;
- register EdgeTableEntry *pETEinsert;
- register EdgeTableEntry *pETEchaseBackTMP;
- register int changed = 0;
-
- AET = AET->next;
- while (AET)
- {
- pETEinsert = AET;
- pETEchase = AET;
- while (pETEchase->back->bres.minor_axis > AET->bres.minor_axis)
- pETEchase = pETEchase->back;
-
- AET = AET->next;
- if (pETEchase != pETEinsert)
- {
- pETEchaseBackTMP = pETEchase->back;
- pETEinsert->back->next = AET;
- if (AET)
- AET->back = pETEinsert->back;
- pETEinsert->next = pETEchase;
- pETEchase->back->next = pETEinsert;
- pETEchase->back = pETEinsert;
- pETEinsert->back = pETEchaseBackTMP;
- changed = 1;
- }
- }
- return(changed);
-}
-
-/*
- * Clean up our act.
- */
-static void
-FreeStorage(
- register ScanLineListBlock *pSLLBlock)
-{
- register ScanLineListBlock *tmpSLLBlock;
-
- while (pSLLBlock)
- {
- tmpSLLBlock = pSLLBlock->next;
- Xfree((char *)pSLLBlock);
- pSLLBlock = tmpSLLBlock;
- }
-}
-
-/*
- * Create an array of rectangles from a list of points.
- * If indeed these things (POINTS, RECTS) are the same,
- * then this proc is still needed, because it allocates
- * storage for the array, which was allocated on the
- * stack by the calling procedure.
- *
- */
-static int PtsToRegion(
- register int numFullPtBlocks,
- register int iCurPtBlock,
- POINTBLOCK *FirstPtBlock,
- REGION *reg)
-{
- register BOX *rects;
- register XPoint *pts;
- register POINTBLOCK *CurPtBlock;
- register int i;
- register BOX *extents;
- register int numRects;
- BOX *prevRects = reg->rects;
-
- extents = &reg->extents;
-
- numRects = ((numFullPtBlocks * NUMPTSTOBUFFER) + iCurPtBlock) >> 1;
-
- if (!(reg->rects = (BOX *)Xrealloc((char *)reg->rects,
- (unsigned) (sizeof(BOX) * numRects)))) {
- Xfree(prevRects);
- return(0);
- }
-
- reg->size = numRects;
- CurPtBlock = FirstPtBlock;
- rects = reg->rects - 1;
- numRects = 0;
- extents->x1 = MAXSHORT, extents->x2 = MINSHORT;
-
- for ( ; numFullPtBlocks >= 0; numFullPtBlocks--) {
- /* the loop uses 2 points per iteration */
- i = NUMPTSTOBUFFER >> 1;
- if (!numFullPtBlocks)
- i = iCurPtBlock >> 1;
- for (pts = CurPtBlock->pts; i--; pts += 2) {
- if (pts->x == pts[1].x)
- continue;
- if (numRects && pts->x == rects->x1 && pts->y == rects->y2 &&
- pts[1].x == rects->x2 &&
- (numRects == 1 || rects[-1].y1 != rects->y1) &&
- (i && pts[2].y > pts[1].y)) {
- rects->y2 = pts[1].y + 1;
- continue;
- }
- numRects++;
- rects++;
- rects->x1 = pts->x; rects->y1 = pts->y;
- rects->x2 = pts[1].x; rects->y2 = pts[1].y + 1;
- if (rects->x1 < extents->x1)
- extents->x1 = rects->x1;
- if (rects->x2 > extents->x2)
- extents->x2 = rects->x2;
- }
- CurPtBlock = CurPtBlock->next;
- }
-
- if (numRects) {
- extents->y1 = reg->rects->y1;
- extents->y2 = rects->y2;
- } else {
- extents->x1 = 0;
- extents->y1 = 0;
- extents->x2 = 0;
- extents->y2 = 0;
- }
- reg->numRects = numRects;
-
- return(TRUE);
-}
-
-/*
- * polytoregion
- *
- * Scan converts a polygon by returning a run-length
- * encoding of the resultant bitmap -- the run-length
- * encoding is in the form of an array of rectangles.
- */
-Region
-XPolygonRegion(
- XPoint *Pts, /* the pts */
- int Count, /* number of pts */
- int rule) /* winding rule */
-{
- Region region;
- register EdgeTableEntry *pAET; /* Active Edge Table */
- register int y; /* current scanline */
- register int iPts = 0; /* number of pts in buffer */
- register EdgeTableEntry *pWETE; /* Winding Edge Table Entry*/
- register ScanLineList *pSLL; /* current scanLineList */
- register XPoint *pts; /* output buffer */
- EdgeTableEntry *pPrevAET; /* ptr to previous AET */
- EdgeTable ET; /* header node for ET */
- EdgeTableEntry AET; /* header node for AET */
- EdgeTableEntry *pETEs; /* EdgeTableEntries pool */
- ScanLineListBlock SLLBlock; /* header for scanlinelist */
- int fixWAET = FALSE;
- POINTBLOCK FirstPtBlock, *curPtBlock; /* PtBlock buffers */
- POINTBLOCK *tmpPtBlock;
- int numFullPtBlocks = 0;
-
- if (! (region = XCreateRegion())) return (Region) NULL;
-
- /* special case a rectangle */
- pts = Pts;
- if (((Count == 4) ||
- ((Count == 5) && (pts[4].x == pts[0].x) && (pts[4].y == pts[0].y))) &&
- (((pts[0].y == pts[1].y) &&
- (pts[1].x == pts[2].x) &&
- (pts[2].y == pts[3].y) &&
- (pts[3].x == pts[0].x)) ||
- ((pts[0].x == pts[1].x) &&
- (pts[1].y == pts[2].y) &&
- (pts[2].x == pts[3].x) &&
- (pts[3].y == pts[0].y)))) {
- region->extents.x1 = min(pts[0].x, pts[2].x);
- region->extents.y1 = min(pts[0].y, pts[2].y);
- region->extents.x2 = max(pts[0].x, pts[2].x);
- region->extents.y2 = max(pts[0].y, pts[2].y);
- if ((region->extents.x1 != region->extents.x2) &&
- (region->extents.y1 != region->extents.y2)) {
- region->numRects = 1;
- *(region->rects) = region->extents;
- }
- return(region);
- }
-
- if (Count < 2) return region;
-
- if (! (pETEs = (EdgeTableEntry *)
- Xmalloc((unsigned) (sizeof(EdgeTableEntry) * Count)))) {
- XDestroyRegion(region);
- return (Region) NULL;
- }
-
- pts = FirstPtBlock.pts;
- CreateETandAET(Count, Pts, &ET, &AET, pETEs, &SLLBlock);
- pSLL = ET.scanlines.next;
- curPtBlock = &FirstPtBlock;
-
- if (rule == EvenOddRule) {
- /*
- * for each scanline
- */
- for (y = ET.ymin; y < ET.ymax; y++) {
- /*
- * Add a new edge to the active edge table when we
- * get to the next edge.
- */
- if (pSLL != NULL && y == pSLL->scanline) {
- loadAET(&AET, pSLL->edgelist);
- pSLL = pSLL->next;
- }
- pPrevAET = &AET;
- pAET = AET.next;
-
- /*
- * for each active edge
- */
- while (pAET) {
- pts->x = pAET->bres.minor_axis, pts->y = y;
- pts++, iPts++;
-
- /*
- * send out the buffer
- */
- if (iPts == NUMPTSTOBUFFER) {
- tmpPtBlock = (POINTBLOCK *)Xmalloc(sizeof(POINTBLOCK));
- curPtBlock->next = tmpPtBlock;
- curPtBlock = tmpPtBlock;
- pts = curPtBlock->pts;
- numFullPtBlocks++;
- iPts = 0;
- }
- EVALUATEEDGEEVENODD(pAET, pPrevAET, y);
- }
- (void) InsertionSort(&AET);
- }
- }
- else {
- /*
- * for each scanline
- */
- for (y = ET.ymin; y < ET.ymax; y++) {
- /*
- * Add a new edge to the active edge table when we
- * get to the next edge.
- */
- if (pSLL != NULL && y == pSLL->scanline) {
- loadAET(&AET, pSLL->edgelist);
- computeWAET(&AET);
- pSLL = pSLL->next;
- }
- pPrevAET = &AET;
- pAET = AET.next;
- pWETE = pAET;
-
- /*
- * for each active edge
- */
- while (pAET) {
- /*
- * add to the buffer only those edges that
- * are in the Winding active edge table.
- */
- if (pWETE == pAET) {
- pts->x = pAET->bres.minor_axis, pts->y = y;
- pts++, iPts++;
-
- /*
- * send out the buffer
- */
- if (iPts == NUMPTSTOBUFFER) {
- tmpPtBlock = (POINTBLOCK *)Xmalloc(sizeof(POINTBLOCK));
- curPtBlock->next = tmpPtBlock;
- curPtBlock = tmpPtBlock;
- pts = curPtBlock->pts;
- numFullPtBlocks++; iPts = 0;
- }
- pWETE = pWETE->nextWETE;
- }
- EVALUATEEDGEWINDING(pAET, pPrevAET, y, fixWAET);
- }
-
- /*
- * recompute the winding active edge table if
- * we just resorted or have exited an edge.
- */
- if (InsertionSort(&AET) || fixWAET) {
- computeWAET(&AET);
- fixWAET = FALSE;
- }
- }
- }
- FreeStorage(SLLBlock.next);
- (void) PtsToRegion(numFullPtBlocks, iPts, &FirstPtBlock, region);
- for (curPtBlock = FirstPtBlock.next; --numFullPtBlocks >= 0;) {
- tmpPtBlock = curPtBlock->next;
- Xfree((char *)curPtBlock);
- curPtBlock = tmpPtBlock;
- }
- Xfree((char *)pETEs);
- return(region);
-}
+/************************************************************************
+
+Copyright 1987, 1998 The Open Group
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group shall not be
+used in advertising or otherwise to promote the sale, use or other dealings
+in this Software without prior written authorization from The Open Group.
+
+
+Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts.
+
+ All Rights Reserved
+
+Permission to use, copy, modify, and distribute this software and its
+documentation for any purpose and without fee is hereby granted,
+provided that the above copyright notice appear in all copies and that
+both that copyright notice and this permission notice appear in
+supporting documentation, and that the name of Digital not be
+used in advertising or publicity pertaining to distribution of the
+software without specific, written prior permission.
+
+DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
+ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
+DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
+ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
+WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
+ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
+SOFTWARE.
+
+************************************************************************/
+
+#define LARGE_COORDINATE 1000000
+#define SMALL_COORDINATE -LARGE_COORDINATE
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+#include "Xutil.h"
+#include <X11/Xregion.h>
+#include "poly.h"
+
+/*
+ * InsertEdgeInET
+ *
+ * Insert the given edge into the edge table.
+ * First we must find the correct bucket in the
+ * Edge table, then find the right slot in the
+ * bucket. Finally, we can insert it.
+ *
+ */
+static void
+InsertEdgeInET(
+ EdgeTable *ET,
+ EdgeTableEntry *ETE,
+ int scanline,
+ ScanLineListBlock **SLLBlock,
+ int *iSLLBlock)
+{
+ register EdgeTableEntry *start, *prev;
+ register ScanLineList *pSLL, *pPrevSLL;
+ ScanLineListBlock *tmpSLLBlock;
+
+ /*
+ * find the right bucket to put the edge into
+ */
+ pPrevSLL = &ET->scanlines;
+ pSLL = pPrevSLL->next;
+ while (pSLL && (pSLL->scanline < scanline))
+ {
+ pPrevSLL = pSLL;
+ pSLL = pSLL->next;
+ }
+
+ /*
+ * reassign pSLL (pointer to ScanLineList) if necessary
+ */
+ if ((!pSLL) || (pSLL->scanline > scanline))
+ {
+ if (*iSLLBlock > SLLSPERBLOCK-1)
+ {
+ tmpSLLBlock =
+ (ScanLineListBlock *)Xmalloc(sizeof(ScanLineListBlock));
+ (*SLLBlock)->next = tmpSLLBlock;
+ tmpSLLBlock->next = (ScanLineListBlock *)NULL;
+ *SLLBlock = tmpSLLBlock;
+ *iSLLBlock = 0;
+ }
+ pSLL = &((*SLLBlock)->SLLs[(*iSLLBlock)++]);
+
+ pSLL->next = pPrevSLL->next;
+ pSLL->edgelist = (EdgeTableEntry *)NULL;
+ pPrevSLL->next = pSLL;
+ }
+ pSLL->scanline = scanline;
+
+ /*
+ * now insert the edge in the right bucket
+ */
+ prev = (EdgeTableEntry *)NULL;
+ start = pSLL->edgelist;
+ while (start && (start->bres.minor_axis < ETE->bres.minor_axis))
+ {
+ prev = start;
+ start = start->next;
+ }
+ ETE->next = start;
+
+ if (prev)
+ prev->next = ETE;
+ else
+ pSLL->edgelist = ETE;
+}
+
+/*
+ * CreateEdgeTable
+ *
+ * This routine creates the edge table for
+ * scan converting polygons.
+ * The Edge Table (ET) looks like:
+ *
+ * EdgeTable
+ * --------
+ * | ymax | ScanLineLists
+ * |scanline|-->------------>-------------->...
+ * -------- |scanline| |scanline|
+ * |edgelist| |edgelist|
+ * --------- ---------
+ * | |
+ * | |
+ * V V
+ * list of ETEs list of ETEs
+ *
+ * where ETE is an EdgeTableEntry data structure,
+ * and there is one ScanLineList per scanline at
+ * which an edge is initially entered.
+ *
+ */
+
+static void
+CreateETandAET(
+ register int count,
+ register XPoint *pts,
+ EdgeTable *ET,
+ EdgeTableEntry *AET,
+ register EdgeTableEntry *pETEs,
+ ScanLineListBlock *pSLLBlock)
+{
+ register XPoint *top, *bottom;
+ register XPoint *PrevPt, *CurrPt;
+ int iSLLBlock = 0;
+ int dy;
+
+ if (count < 2) return;
+
+ /*
+ * initialize the Active Edge Table
+ */
+ AET->next = (EdgeTableEntry *)NULL;
+ AET->back = (EdgeTableEntry *)NULL;
+ AET->nextWETE = (EdgeTableEntry *)NULL;
+ AET->bres.minor_axis = SMALL_COORDINATE;
+
+ /*
+ * initialize the Edge Table.
+ */
+ ET->scanlines.next = (ScanLineList *)NULL;
+ ET->ymax = SMALL_COORDINATE;
+ ET->ymin = LARGE_COORDINATE;
+ pSLLBlock->next = (ScanLineListBlock *)NULL;
+
+ PrevPt = &pts[count-1];
+
+ /*
+ * for each vertex in the array of points.
+ * In this loop we are dealing with two vertices at
+ * a time -- these make up one edge of the polygon.
+ */
+ while (count--)
+ {
+ CurrPt = pts++;
+
+ /*
+ * find out which point is above and which is below.
+ */
+ if (PrevPt->y > CurrPt->y)
+ {
+ bottom = PrevPt, top = CurrPt;
+ pETEs->ClockWise = 0;
+ }
+ else
+ {
+ bottom = CurrPt, top = PrevPt;
+ pETEs->ClockWise = 1;
+ }
+
+ /*
+ * don't add horizontal edges to the Edge table.
+ */
+ if (bottom->y != top->y)
+ {
+ pETEs->ymax = bottom->y-1; /* -1 so we don't get last scanline */
+
+ /*
+ * initialize integer edge algorithm
+ */
+ dy = bottom->y - top->y;
+ BRESINITPGONSTRUCT(dy, top->x, bottom->x, pETEs->bres);
+
+ InsertEdgeInET(ET, pETEs, top->y, &pSLLBlock, &iSLLBlock);
+
+ if (PrevPt->y > ET->ymax)
+ ET->ymax = PrevPt->y;
+ if (PrevPt->y < ET->ymin)
+ ET->ymin = PrevPt->y;
+ pETEs++;
+ }
+
+ PrevPt = CurrPt;
+ }
+}
+
+/*
+ * loadAET
+ *
+ * This routine moves EdgeTableEntries from the
+ * EdgeTable into the Active Edge Table,
+ * leaving them sorted by smaller x coordinate.
+ *
+ */
+
+static void
+loadAET(
+ register EdgeTableEntry *AET,
+ register EdgeTableEntry *ETEs)
+{
+ register EdgeTableEntry *pPrevAET;
+ register EdgeTableEntry *tmp;
+
+ pPrevAET = AET;
+ AET = AET->next;
+ while (ETEs)
+ {
+ while (AET && (AET->bres.minor_axis < ETEs->bres.minor_axis))
+ {
+ pPrevAET = AET;
+ AET = AET->next;
+ }
+ tmp = ETEs->next;
+ ETEs->next = AET;
+ if (AET)
+ AET->back = ETEs;
+ ETEs->back = pPrevAET;
+ pPrevAET->next = ETEs;
+ pPrevAET = ETEs;
+
+ ETEs = tmp;
+ }
+}
+
+/*
+ * computeWAET
+ *
+ * This routine links the AET by the
+ * nextWETE (winding EdgeTableEntry) link for
+ * use by the winding number rule. The final
+ * Active Edge Table (AET) might look something
+ * like:
+ *
+ * AET
+ * ---------- --------- ---------
+ * |ymax | |ymax | |ymax |
+ * | ... | |... | |... |
+ * |next |->|next |->|next |->...
+ * |nextWETE| |nextWETE| |nextWETE|
+ * --------- --------- ^--------
+ * | | |
+ * V-------------------> V---> ...
+ *
+ */
+static void
+computeWAET(
+ register EdgeTableEntry *AET)
+{
+ register EdgeTableEntry *pWETE;
+ register int inside = 1;
+ register int isInside = 0;
+
+ AET->nextWETE = (EdgeTableEntry *)NULL;
+ pWETE = AET;
+ AET = AET->next;
+ while (AET)
+ {
+ if (AET->ClockWise)
+ isInside++;
+ else
+ isInside--;
+
+ if ((!inside && !isInside) ||
+ ( inside && isInside))
+ {
+ pWETE->nextWETE = AET;
+ pWETE = AET;
+ inside = !inside;
+ }
+ AET = AET->next;
+ }
+ pWETE->nextWETE = (EdgeTableEntry *)NULL;
+}
+
+/*
+ * InsertionSort
+ *
+ * Just a simple insertion sort using
+ * pointers and back pointers to sort the Active
+ * Edge Table.
+ *
+ */
+
+static int
+InsertionSort(
+ register EdgeTableEntry *AET)
+{
+ register EdgeTableEntry *pETEchase;
+ register EdgeTableEntry *pETEinsert;
+ register EdgeTableEntry *pETEchaseBackTMP;
+ register int changed = 0;
+
+ AET = AET->next;
+ while (AET)
+ {
+ pETEinsert = AET;
+ pETEchase = AET;
+ while (pETEchase->back->bres.minor_axis > AET->bres.minor_axis)
+ pETEchase = pETEchase->back;
+
+ AET = AET->next;
+ if (pETEchase != pETEinsert)
+ {
+ pETEchaseBackTMP = pETEchase->back;
+ pETEinsert->back->next = AET;
+ if (AET)
+ AET->back = pETEinsert->back;
+ pETEinsert->next = pETEchase;
+ pETEchase->back->next = pETEinsert;
+ pETEchase->back = pETEinsert;
+ pETEinsert->back = pETEchaseBackTMP;
+ changed = 1;
+ }
+ }
+ return(changed);
+}
+
+/*
+ * Clean up our act.
+ */
+static void
+FreeStorage(
+ register ScanLineListBlock *pSLLBlock)
+{
+ register ScanLineListBlock *tmpSLLBlock;
+
+ while (pSLLBlock)
+ {
+ tmpSLLBlock = pSLLBlock->next;
+ Xfree((char *)pSLLBlock);
+ pSLLBlock = tmpSLLBlock;
+ }
+}
+
+/*
+ * Create an array of rectangles from a list of points.
+ * If indeed these things (POINTS, RECTS) are the same,
+ * then this proc is still needed, because it allocates
+ * storage for the array, which was allocated on the
+ * stack by the calling procedure.
+ *
+ */
+static int PtsToRegion(
+ register int numFullPtBlocks,
+ register int iCurPtBlock,
+ POINTBLOCK *FirstPtBlock,
+ REGION *reg)
+{
+ register BOX *rects;
+ register XPoint *pts;
+ register POINTBLOCK *CurPtBlock;
+ register int i;
+ register BOX *extents;
+ register int numRects;
+ BOX *prevRects = reg->rects;
+
+ extents = &reg->extents;
+
+ numRects = ((numFullPtBlocks * NUMPTSTOBUFFER) + iCurPtBlock) >> 1;
+
+ if (!(reg->rects = (BOX *)Xrealloc((char *)reg->rects,
+ (unsigned) (sizeof(BOX) * numRects)))) {
+ Xfree(prevRects);
+ return(0);
+ }
+
+ reg->size = numRects;
+ CurPtBlock = FirstPtBlock;
+ rects = reg->rects - 1;
+ numRects = 0;
+ extents->x1 = MAXSHORT, extents->x2 = MINSHORT;
+
+ for ( ; numFullPtBlocks >= 0; numFullPtBlocks--) {
+ /* the loop uses 2 points per iteration */
+ i = NUMPTSTOBUFFER >> 1;
+ if (!numFullPtBlocks)
+ i = iCurPtBlock >> 1;
+ for (pts = CurPtBlock->pts; i--; pts += 2) {
+ if (pts->x == pts[1].x)
+ continue;
+ if (numRects && pts->x == rects->x1 && pts->y == rects->y2 &&
+ pts[1].x == rects->x2 &&
+ (numRects == 1 || rects[-1].y1 != rects->y1) &&
+ (i && pts[2].y > pts[1].y)) {
+ rects->y2 = pts[1].y + 1;
+ continue;
+ }
+ numRects++;
+ rects++;
+ rects->x1 = pts->x; rects->y1 = pts->y;
+ rects->x2 = pts[1].x; rects->y2 = pts[1].y + 1;
+ if (rects->x1 < extents->x1)
+ extents->x1 = rects->x1;
+ if (rects->x2 > extents->x2)
+ extents->x2 = rects->x2;
+ }
+ CurPtBlock = CurPtBlock->next;
+ }
+
+ if (numRects) {
+ extents->y1 = reg->rects->y1;
+ extents->y2 = rects->y2;
+ } else {
+ extents->x1 = 0;
+ extents->y1 = 0;
+ extents->x2 = 0;
+ extents->y2 = 0;
+ }
+ reg->numRects = numRects;
+
+ return(TRUE);
+}
+
+/*
+ * polytoregion
+ *
+ * Scan converts a polygon by returning a run-length
+ * encoding of the resultant bitmap -- the run-length
+ * encoding is in the form of an array of rectangles.
+ */
+Region
+XPolygonRegion(
+ XPoint *Pts, /* the pts */
+ int Count, /* number of pts */
+ int rule) /* winding rule */
+{
+ Region region;
+ register EdgeTableEntry *pAET; /* Active Edge Table */
+ register int y; /* current scanline */
+ register int iPts = 0; /* number of pts in buffer */
+ register EdgeTableEntry *pWETE; /* Winding Edge Table Entry*/
+ register ScanLineList *pSLL; /* current scanLineList */
+ register XPoint *pts; /* output buffer */
+ EdgeTableEntry *pPrevAET; /* ptr to previous AET */
+ EdgeTable ET; /* header node for ET */
+ EdgeTableEntry AET; /* header node for AET */
+ EdgeTableEntry *pETEs; /* EdgeTableEntries pool */
+ ScanLineListBlock SLLBlock; /* header for scanlinelist */
+ int fixWAET = FALSE;
+ POINTBLOCK FirstPtBlock, *curPtBlock; /* PtBlock buffers */
+ POINTBLOCK *tmpPtBlock;
+ int numFullPtBlocks = 0;
+
+ if (! (region = XCreateRegion())) return (Region) NULL;
+
+ /* special case a rectangle */
+ pts = Pts;
+ if (((Count == 4) ||
+ ((Count == 5) && (pts[4].x == pts[0].x) && (pts[4].y == pts[0].y))) &&
+ (((pts[0].y == pts[1].y) &&
+ (pts[1].x == pts[2].x) &&
+ (pts[2].y == pts[3].y) &&
+ (pts[3].x == pts[0].x)) ||
+ ((pts[0].x == pts[1].x) &&
+ (pts[1].y == pts[2].y) &&
+ (pts[2].x == pts[3].x) &&
+ (pts[3].y == pts[0].y)))) {
+ region->extents.x1 = min(pts[0].x, pts[2].x);
+ region->extents.y1 = min(pts[0].y, pts[2].y);
+ region->extents.x2 = max(pts[0].x, pts[2].x);
+ region->extents.y2 = max(pts[0].y, pts[2].y);
+ if ((region->extents.x1 != region->extents.x2) &&
+ (region->extents.y1 != region->extents.y2)) {
+ region->numRects = 1;
+ *(region->rects) = region->extents;
+ }
+ return(region);
+ }
+
+ if (Count < 2) return region;
+
+ if (! (pETEs = (EdgeTableEntry *)
+ Xmalloc((unsigned) (sizeof(EdgeTableEntry) * Count)))) {
+ XDestroyRegion(region);
+ return (Region) NULL;
+ }
+
+ pts = FirstPtBlock.pts;
+ CreateETandAET(Count, Pts, &ET, &AET, pETEs, &SLLBlock);
+ pSLL = ET.scanlines.next;
+ curPtBlock = &FirstPtBlock;
+
+ if (rule == EvenOddRule) {
+ /*
+ * for each scanline
+ */
+ for (y = ET.ymin; y < ET.ymax; y++) {
+ /*
+ * Add a new edge to the active edge table when we
+ * get to the next edge.
+ */
+ if (pSLL != NULL && y == pSLL->scanline) {
+ loadAET(&AET, pSLL->edgelist);
+ pSLL = pSLL->next;
+ }
+ pPrevAET = &AET;
+ pAET = AET.next;
+
+ /*
+ * for each active edge
+ */
+ while (pAET) {
+ pts->x = pAET->bres.minor_axis, pts->y = y;
+ pts++, iPts++;
+
+ /*
+ * send out the buffer
+ */
+ if (iPts == NUMPTSTOBUFFER) {
+ tmpPtBlock = (POINTBLOCK *)Xmalloc(sizeof(POINTBLOCK));
+ curPtBlock->next = tmpPtBlock;
+ curPtBlock = tmpPtBlock;
+ pts = curPtBlock->pts;
+ numFullPtBlocks++;
+ iPts = 0;
+ }
+ EVALUATEEDGEEVENODD(pAET, pPrevAET, y);
+ }
+ (void) InsertionSort(&AET);
+ }
+ }
+ else {
+ /*
+ * for each scanline
+ */
+ for (y = ET.ymin; y < ET.ymax; y++) {
+ /*
+ * Add a new edge to the active edge table when we
+ * get to the next edge.
+ */
+ if (pSLL != NULL && y == pSLL->scanline) {
+ loadAET(&AET, pSLL->edgelist);
+ computeWAET(&AET);
+ pSLL = pSLL->next;
+ }
+ pPrevAET = &AET;
+ pAET = AET.next;
+ pWETE = pAET;
+
+ /*
+ * for each active edge
+ */
+ while (pAET) {
+ /*
+ * add to the buffer only those edges that
+ * are in the Winding active edge table.
+ */
+ if (pWETE == pAET) {
+ pts->x = pAET->bres.minor_axis, pts->y = y;
+ pts++, iPts++;
+
+ /*
+ * send out the buffer
+ */
+ if (iPts == NUMPTSTOBUFFER) {
+ tmpPtBlock = (POINTBLOCK *)Xmalloc(sizeof(POINTBLOCK));
+ curPtBlock->next = tmpPtBlock;
+ curPtBlock = tmpPtBlock;
+ pts = curPtBlock->pts;
+ numFullPtBlocks++; iPts = 0;
+ }
+ pWETE = pWETE->nextWETE;
+ }
+ EVALUATEEDGEWINDING(pAET, pPrevAET, y, fixWAET);
+ }
+
+ /*
+ * recompute the winding active edge table if
+ * we just resorted or have exited an edge.
+ */
+ if (InsertionSort(&AET) || fixWAET) {
+ computeWAET(&AET);
+ fixWAET = FALSE;
+ }
+ }
+ }
+ FreeStorage(SLLBlock.next);
+ (void) PtsToRegion(numFullPtBlocks, iPts, &FirstPtBlock, region);
+ for (curPtBlock = FirstPtBlock.next; --numFullPtBlocks >= 0;) {
+ tmpPtBlock = curPtBlock->next;
+ Xfree((char *)curPtBlock);
+ curPtBlock = tmpPtBlock;
+ }
+ Xfree((char *)pETEs);
+ return(region);
+}
diff --git a/libX11/src/PolyTxt.c b/libX11/src/PolyTxt.c
index 727cdbb4a..471383b57 100644
--- a/libX11/src/PolyTxt.c
+++ b/libX11/src/PolyTxt.c
@@ -1,234 +1,234 @@
-/*
-
-Copyright 1986, 1998 The Open Group
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall not be
-used in advertising or otherwise to promote the sale, use or other dealings
-in this Software without prior written authorization from The Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-
-int
-XDrawText(
- register Display *dpy,
- Drawable d,
- GC gc,
- int x,
- int y,
- XTextItem *items,
- int nitems)
-{
- register int i;
- register XTextItem *item;
- int length = 0;
- register xPolyText8Req *req;
-
- LockDisplay(dpy);
- FlushGC(dpy, gc);
- GetReq (PolyText8, req);
- req->drawable = d;
- req->gc = gc->gid;
- req->x = x;
- req->y = y;
-
- item = items;
- for (i=0; i < nitems; i++) {
- if (item->font)
- length += 5; /* a 255 byte, plus size of Font id */
- if (item->delta)
- {
- if (item->delta > 0)
- {
- length += SIZEOF(xTextElt) * ((item->delta + 126) / 127);
- }
- else
- {
- length += SIZEOF(xTextElt) * ((-item->delta + 127) / 128);
- }
- }
- if (item->nchars > 0)
- {
- length += SIZEOF(xTextElt) * ((item->nchars + 253) / 254 - 1);
- if (!item->delta) length += SIZEOF(xTextElt);
- length += item->nchars;
- }
- item++;
- }
-
- req->length += (length + 3)>>2; /* convert to number of 32-bit words */
-
-
- /*
- * If the entire request does not fit into the remaining space in the
- * buffer, flush the buffer first. If the request does fit into the
- * empty buffer, then we won't have to flush it at the end to keep
- * the buffer 32-bit aligned.
- */
-
- if (dpy->bufptr + length > dpy->bufmax)
- _XFlush (dpy);
-
- item = items;
- for (i=0; i< nitems; i++) {
-
- if (item->font) {
- /* to mark a font shift, write a 255 byte followed by
- the 4 bytes of font ID, big-end first */
- register unsigned char *f;
- BufAlloc (unsigned char *, f, 5);
-
- f[0] = 255;
- f[1] = (item->font & 0xff000000) >> 24;
- f[2] = (item->font & 0x00ff0000) >> 16;
- f[3] = (item->font & 0x0000ff00) >> 8;
- f[4] = item->font & 0x000000ff;
-
- /* update GC shadow */
- gc->values.font = item->font;
- }
-
- {
- int nbytes = SIZEOF(xTextElt);
- int PartialNChars = item->nchars;
- int PartialDelta = item->delta;
- /* register xTextElt *elt; */
- int FirstTimeThrough = True;
- char *CharacterOffset = item->chars;
- char *tbuf = NULL;
-
- while((PartialDelta < -128) || (PartialDelta > 127))
- {
- int nb = SIZEOF(xTextElt);
-
- BufAlloc (char *, tbuf, nb);
- *tbuf = 0; /* elt->len */
- if (PartialDelta > 0 )
- {
- *(tbuf+1) = 127; /* elt->delta */
- PartialDelta = PartialDelta - 127;
- }
- else
- {
- /* -128 = 0x8, need to be careful of signed chars... */
- *((unsigned char *)(tbuf+1)) = 0x80; /* elt->delta */
- PartialDelta = PartialDelta + 128;
- }
- }
- if (PartialDelta)
- {
- BufAlloc (char *, tbuf , nbytes);
- *tbuf = 0; /* elt->len */
- *(tbuf+1) = PartialDelta; /* elt->delta */
- }
- while(PartialNChars > 254)
- {
- nbytes = 254;
- if (FirstTimeThrough)
- {
- FirstTimeThrough = False;
- if (!item->delta)
- {
- nbytes += SIZEOF(xTextElt);
- BufAlloc (char *, tbuf, nbytes);
- *(tbuf+1) = 0; /* elt->delta */
- }
- else
- {
- char *DummyChar;
- BufAlloc(char *, DummyChar, nbytes);
- }
- }
- else
- {
- nbytes += SIZEOF(xTextElt);
- BufAlloc (char *, tbuf, nbytes);
- *(tbuf+1) = 0; /* elt->delta */
- }
- /* watch out for signs on chars */
- *(unsigned char *)tbuf = 254; /* elt->len */
- memcpy (tbuf+2 , CharacterOffset, 254);
- PartialNChars = PartialNChars - 254;
- CharacterOffset += 254;
-
- }
- if (PartialNChars)
- {
- nbytes = PartialNChars;
- if (FirstTimeThrough)
- {
- FirstTimeThrough = False;
- if (!item->delta)
- {
- nbytes += SIZEOF(xTextElt);
- BufAlloc (char *, tbuf, nbytes);
- *(tbuf+1) = 0; /* elt->delta */
- }
- else
- {
- char *DummyChar;
- BufAlloc(char *, DummyChar, nbytes);
- }
- }
- else
- {
- nbytes += SIZEOF(xTextElt);
- BufAlloc (char *, tbuf, nbytes);
- *(tbuf+1) = 0; /* elt->delta */
- }
- *tbuf = PartialNChars; /* elt->len */
- memcpy (tbuf+2 , CharacterOffset, PartialNChars);
- }
- }
- item++;
- }
-
- /* Pad request out to a 32-bit boundary */
-
- if (length &= 3) {
- char *pad;
- /*
- * BufAlloc is a macro that uses its last argument more than
- * once, otherwise I'd write "BufAlloc (char *, pad, 4-length)"
- */
- length = 4 - length;
- BufAlloc (char *, pad, length);
- /*
- * if there are 3 bytes of padding, the first byte MUST be 0
- * so the pad bytes aren't mistaken for a final xTextElt
- */
- *pad = 0;
- }
-
- /*
- * If the buffer pointer is not now pointing to a 32-bit boundary,
- * we must flush the buffer so that it does point to a 32-bit boundary
- * at the end of this routine.
- */
-
- if ((dpy->bufptr - dpy->buffer) & 3)
- _XFlush (dpy);
- UnlockDisplay(dpy);
- SyncHandle();
- return 0;
- }
+/*
+
+Copyright 1986, 1998 The Open Group
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group shall not be
+used in advertising or otherwise to promote the sale, use or other dealings
+in this Software without prior written authorization from The Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+
+int
+XDrawText(
+ register Display *dpy,
+ Drawable d,
+ GC gc,
+ int x,
+ int y,
+ XTextItem *items,
+ int nitems)
+{
+ register int i;
+ register XTextItem *item;
+ int length = 0;
+ register xPolyText8Req *req;
+
+ LockDisplay(dpy);
+ FlushGC(dpy, gc);
+ GetReq (PolyText8, req);
+ req->drawable = d;
+ req->gc = gc->gid;
+ req->x = x;
+ req->y = y;
+
+ item = items;
+ for (i=0; i < nitems; i++) {
+ if (item->font)
+ length += 5; /* a 255 byte, plus size of Font id */
+ if (item->delta)
+ {
+ if (item->delta > 0)
+ {
+ length += SIZEOF(xTextElt) * ((item->delta + 126) / 127);
+ }
+ else
+ {
+ length += SIZEOF(xTextElt) * ((-item->delta + 127) / 128);
+ }
+ }
+ if (item->nchars > 0)
+ {
+ length += SIZEOF(xTextElt) * ((item->nchars + 253) / 254 - 1);
+ if (!item->delta) length += SIZEOF(xTextElt);
+ length += item->nchars;
+ }
+ item++;
+ }
+
+ req->length += (length + 3)>>2; /* convert to number of 32-bit words */
+
+
+ /*
+ * If the entire request does not fit into the remaining space in the
+ * buffer, flush the buffer first. If the request does fit into the
+ * empty buffer, then we won't have to flush it at the end to keep
+ * the buffer 32-bit aligned.
+ */
+
+ if (dpy->bufptr + length > dpy->bufmax)
+ _XFlush (dpy);
+
+ item = items;
+ for (i=0; i< nitems; i++) {
+
+ if (item->font) {
+ /* to mark a font shift, write a 255 byte followed by
+ the 4 bytes of font ID, big-end first */
+ register unsigned char *f;
+ BufAlloc (unsigned char *, f, 5);
+
+ f[0] = 255;
+ f[1] = (item->font & 0xff000000) >> 24;
+ f[2] = (item->font & 0x00ff0000) >> 16;
+ f[3] = (item->font & 0x0000ff00) >> 8;
+ f[4] = item->font & 0x000000ff;
+
+ /* update GC shadow */
+ gc->values.font = item->font;
+ }
+
+ {
+ int nbytes = SIZEOF(xTextElt);
+ int PartialNChars = item->nchars;
+ int PartialDelta = item->delta;
+ /* register xTextElt *elt; */
+ int FirstTimeThrough = True;
+ char *CharacterOffset = item->chars;
+ char *tbuf = NULL;
+
+ while((PartialDelta < -128) || (PartialDelta > 127))
+ {
+ int nb = SIZEOF(xTextElt);
+
+ BufAlloc (char *, tbuf, nb);
+ *tbuf = 0; /* elt->len */
+ if (PartialDelta > 0 )
+ {
+ *(tbuf+1) = 127; /* elt->delta */
+ PartialDelta = PartialDelta - 127;
+ }
+ else
+ {
+ /* -128 = 0x8, need to be careful of signed chars... */
+ *((unsigned char *)(tbuf+1)) = 0x80; /* elt->delta */
+ PartialDelta = PartialDelta + 128;
+ }
+ }
+ if (PartialDelta)
+ {
+ BufAlloc (char *, tbuf , nbytes);
+ *tbuf = 0; /* elt->len */
+ *(tbuf+1) = PartialDelta; /* elt->delta */
+ }
+ while(PartialNChars > 254)
+ {
+ nbytes = 254;
+ if (FirstTimeThrough)
+ {
+ FirstTimeThrough = False;
+ if (!item->delta)
+ {
+ nbytes += SIZEOF(xTextElt);
+ BufAlloc (char *, tbuf, nbytes);
+ *(tbuf+1) = 0; /* elt->delta */
+ }
+ else
+ {
+ char *DummyChar;
+ BufAlloc(char *, DummyChar, nbytes);
+ }
+ }
+ else
+ {
+ nbytes += SIZEOF(xTextElt);
+ BufAlloc (char *, tbuf, nbytes);
+ *(tbuf+1) = 0; /* elt->delta */
+ }
+ /* watch out for signs on chars */
+ *(unsigned char *)tbuf = 254; /* elt->len */
+ memcpy (tbuf+2 , CharacterOffset, 254);
+ PartialNChars = PartialNChars - 254;
+ CharacterOffset += 254;
+
+ }
+ if (PartialNChars)
+ {
+ nbytes = PartialNChars;
+ if (FirstTimeThrough)
+ {
+ FirstTimeThrough = False;
+ if (!item->delta)
+ {
+ nbytes += SIZEOF(xTextElt);
+ BufAlloc (char *, tbuf, nbytes);
+ *(tbuf+1) = 0; /* elt->delta */
+ }
+ else
+ {
+ char *DummyChar;
+ BufAlloc(char *, DummyChar, nbytes);
+ }
+ }
+ else
+ {
+ nbytes += SIZEOF(xTextElt);
+ BufAlloc (char *, tbuf, nbytes);
+ *(tbuf+1) = 0; /* elt->delta */
+ }
+ *tbuf = PartialNChars; /* elt->len */
+ memcpy (tbuf+2 , CharacterOffset, PartialNChars);
+ }
+ }
+ item++;
+ }
+
+ /* Pad request out to a 32-bit boundary */
+
+ if (length &= 3) {
+ char *pad;
+ /*
+ * BufAlloc is a macro that uses its last argument more than
+ * once, otherwise I'd write "BufAlloc (char *, pad, 4-length)"
+ */
+ length = 4 - length;
+ BufAlloc (char *, pad, length);
+ /*
+ * if there are 3 bytes of padding, the first byte MUST be 0
+ * so the pad bytes aren't mistaken for a final xTextElt
+ */
+ *pad = 0;
+ }
+
+ /*
+ * If the buffer pointer is not now pointing to a 32-bit boundary,
+ * we must flush the buffer so that it does point to a 32-bit boundary
+ * at the end of this routine.
+ */
+
+ if ((dpy->bufptr - dpy->buffer) & 3)
+ _XFlush (dpy);
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return 0;
+ }
diff --git a/libX11/src/PolyTxt16.c b/libX11/src/PolyTxt16.c
index 13f17f85e..dd6581827 100644
--- a/libX11/src/PolyTxt16.c
+++ b/libX11/src/PolyTxt16.c
@@ -1,268 +1,268 @@
-/*
-
-Copyright 1986, 1998 The Open Group
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall not be
-used in advertising or otherwise to promote the sale, use or other dealings
-in this Software without prior written authorization from The Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-
-int
-XDrawText16(
- register Display *dpy,
- Drawable d,
- GC gc,
- int x,
- int y,
- XTextItem16 *items,
- int nitems)
-{
- register int i;
- register XTextItem16 *item;
- int length = 0;
- register xPolyText16Req *req;
-
- LockDisplay(dpy);
- FlushGC(dpy, gc);
- GetReq (PolyText16, req);
- req->drawable = d;
- req->gc = gc->gid;
- req->x = x;
- req->y = y;
-
- item = items;
- for (i=0; i < nitems; i++) {
- if (item->font)
- length += 5; /* a 255 byte, plus size of Font id */
- if (item->delta)
- {
- if (item->delta > 0)
- {
- length += SIZEOF(xTextElt) * ((item->delta + 126) / 127);
- }
- else
- {
- length += SIZEOF(xTextElt) * ((-item->delta + 127) / 128);
- }
- }
- if (item->nchars > 0)
- {
- length += SIZEOF(xTextElt) * ((item->nchars + 253) / 254 - 1);
- if (!item->delta) length += SIZEOF(xTextElt);
- length += item->nchars << 1;
- }
- item++;
- }
-
- req->length += (length + 3)>>2; /* convert to number of 32-bit words */
-
-
- /*
- * If the entire request does not fit into the remaining space in the
- * buffer, flush the buffer first. If the request does fit into the
- * empty buffer, then we won't have to flush it at the end to keep
- * the buffer 32-bit aligned.
- */
-
- if (dpy->bufptr + length > dpy->bufmax)
- _XFlush (dpy);
-
- item = items;
- for (i=0; i< nitems; i++) {
-
- if (item->font) {
- /* to mark a font shift, write a 255 byte followed by
- the 4 bytes of font ID, big-end first */
- register unsigned char *f;
- BufAlloc (unsigned char *, f, 5);
-
- f[0] = 255;
- f[1] = (item->font & 0xff000000) >> 24;
- f[2] = (item->font & 0x00ff0000) >> 16;
- f[3] = (item->font & 0x0000ff00) >> 8;
- f[4] = item->font & 0x000000ff;
-
- /* update GC shadow */
- gc->values.font = item->font;
- }
-
- {
- int nbytes = SIZEOF(xTextElt);
- int PartialNChars = item->nchars;
- int PartialDelta = item->delta;
- register xTextElt *elt = NULL;
- int FirstTimeThrough = True;
- XChar2b *CharacterOffset = item->chars;
-
- while((PartialDelta < -128) || (PartialDelta > 127))
- {
- int nb = SIZEOF(xTextElt);
-
- BufAlloc (xTextElt *, elt, nb);
- elt->len = 0;
- if (PartialDelta > 0 )
- {
- elt->delta = 127;
- PartialDelta = PartialDelta - 127;
- }
- else
- {
- elt->delta = -128;
- PartialDelta = PartialDelta + 128;
- }
- }
- if (PartialDelta)
- {
- BufAlloc (xTextElt *, elt, nbytes);
- elt->len = 0;
- elt->delta = PartialDelta;
- }
- while(PartialNChars > 254)
- {
- nbytes = 254 * 2;
- if (FirstTimeThrough)
- {
- FirstTimeThrough = False;
- if (!item->delta)
- {
- nbytes += SIZEOF(xTextElt);
- BufAlloc (xTextElt *, elt, nbytes);
- elt->delta = 0;
- }
- else
- {
- char *DummyChar;
- BufAlloc(char *, DummyChar, nbytes);
-#ifdef lint
- DummyChar = DummyChar;
-#endif
- }
- }
- else
- {
- nbytes += SIZEOF(xTextElt);
- BufAlloc (xTextElt *, elt, nbytes);
- elt->delta = 0;
- }
- elt->len = 254;
-
-#if defined(MUSTCOPY) || defined(MUSTCOPY2B)
- {
- register int i;
- register unsigned char *cp;
- for (i = 0, cp = ((unsigned char *)elt) + 2; i < 254; i++) {
- *cp++ = CharacterOffset[i].byte1;
- *cp++ = CharacterOffset[i].byte2;
- }
- }
-#else
- memcpy ((char *) (elt + 1), (char *)CharacterOffset, 254 * 2);
-#endif
- PartialNChars = PartialNChars - 254;
- CharacterOffset += 254;
-
- }
- if (PartialNChars)
- {
- nbytes = PartialNChars * 2;
- if (FirstTimeThrough)
- {
- FirstTimeThrough = False;
- if (!item->delta)
- {
- nbytes += SIZEOF(xTextElt);
- BufAlloc (xTextElt *, elt, nbytes);
- elt->delta = 0;
- }
- else
- {
- char *DummyChar;
- BufAlloc(char *, DummyChar, nbytes);
-#ifdef lint
- DummyChar = DummyChar;
-#endif
- }
- }
- else
- {
- nbytes += SIZEOF(xTextElt);
- BufAlloc (xTextElt *, elt, nbytes);
- elt->delta = 0;
- }
- elt->len = PartialNChars;
-
-#if defined(MUSTCOPY) || defined(MUSTCOPY2B)
- {
- register int i;
- register unsigned char *cp;
- for (i = 0, cp = ((unsigned char *)elt) + 2; i < PartialNChars;
- i++) {
- *cp++ = CharacterOffset[i].byte1;
- *cp++ = CharacterOffset[i].byte2;
- }
- }
-#else
- memcpy ((char *) (elt + 1), (char *)CharacterOffset,
- PartialNChars *
-2);
-#endif
- }
- }
- item++;
- }
-
- /* Pad request out to a 32-bit boundary */
-
- if (length &= 3) {
- char *pad;
- /*
- * BufAlloc is a macro that uses its last argument more than
- * once, otherwise I'd write "BufAlloc (char *, pad, 4-length)"
- */
- length = 4 - length;
- BufAlloc (char *, pad, length);
- /*
- * if there are 3 bytes of padding, the first byte MUST be 0
- * so the pad bytes aren't mistaken for a final xTextElt
- */
- *pad = 0;
- }
-
- /*
- * If the buffer pointer is not now pointing to a 32-bit boundary,
- * we must flush the buffer so that it does point to a 32-bit boundary
- * at the end of this routine.
- */
-
- if ((dpy->bufptr - dpy->buffer) & 3)
- _XFlush (dpy);
-
- UnlockDisplay(dpy);
- SyncHandle();
- return 1;
- }
-
-
-
+/*
+
+Copyright 1986, 1998 The Open Group
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group shall not be
+used in advertising or otherwise to promote the sale, use or other dealings
+in this Software without prior written authorization from The Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+
+int
+XDrawText16(
+ register Display *dpy,
+ Drawable d,
+ GC gc,
+ int x,
+ int y,
+ XTextItem16 *items,
+ int nitems)
+{
+ register int i;
+ register XTextItem16 *item;
+ int length = 0;
+ register xPolyText16Req *req;
+
+ LockDisplay(dpy);
+ FlushGC(dpy, gc);
+ GetReq (PolyText16, req);
+ req->drawable = d;
+ req->gc = gc->gid;
+ req->x = x;
+ req->y = y;
+
+ item = items;
+ for (i=0; i < nitems; i++) {
+ if (item->font)
+ length += 5; /* a 255 byte, plus size of Font id */
+ if (item->delta)
+ {
+ if (item->delta > 0)
+ {
+ length += SIZEOF(xTextElt) * ((item->delta + 126) / 127);
+ }
+ else
+ {
+ length += SIZEOF(xTextElt) * ((-item->delta + 127) / 128);
+ }
+ }
+ if (item->nchars > 0)
+ {
+ length += SIZEOF(xTextElt) * ((item->nchars + 253) / 254 - 1);
+ if (!item->delta) length += SIZEOF(xTextElt);
+ length += item->nchars << 1;
+ }
+ item++;
+ }
+
+ req->length += (length + 3)>>2; /* convert to number of 32-bit words */
+
+
+ /*
+ * If the entire request does not fit into the remaining space in the
+ * buffer, flush the buffer first. If the request does fit into the
+ * empty buffer, then we won't have to flush it at the end to keep
+ * the buffer 32-bit aligned.
+ */
+
+ if (dpy->bufptr + length > dpy->bufmax)
+ _XFlush (dpy);
+
+ item = items;
+ for (i=0; i< nitems; i++) {
+
+ if (item->font) {
+ /* to mark a font shift, write a 255 byte followed by
+ the 4 bytes of font ID, big-end first */
+ register unsigned char *f;
+ BufAlloc (unsigned char *, f, 5);
+
+ f[0] = 255;
+ f[1] = (item->font & 0xff000000) >> 24;
+ f[2] = (item->font & 0x00ff0000) >> 16;
+ f[3] = (item->font & 0x0000ff00) >> 8;
+ f[4] = item->font & 0x000000ff;
+
+ /* update GC shadow */
+ gc->values.font = item->font;
+ }
+
+ {
+ int nbytes = SIZEOF(xTextElt);
+ int PartialNChars = item->nchars;
+ int PartialDelta = item->delta;
+ register xTextElt *elt = NULL;
+ int FirstTimeThrough = True;
+ XChar2b *CharacterOffset = item->chars;
+
+ while((PartialDelta < -128) || (PartialDelta > 127))
+ {
+ int nb = SIZEOF(xTextElt);
+
+ BufAlloc (xTextElt *, elt, nb);
+ elt->len = 0;
+ if (PartialDelta > 0 )
+ {
+ elt->delta = 127;
+ PartialDelta = PartialDelta - 127;
+ }
+ else
+ {
+ elt->delta = -128;
+ PartialDelta = PartialDelta + 128;
+ }
+ }
+ if (PartialDelta)
+ {
+ BufAlloc (xTextElt *, elt, nbytes);
+ elt->len = 0;
+ elt->delta = PartialDelta;
+ }
+ while(PartialNChars > 254)
+ {
+ nbytes = 254 * 2;
+ if (FirstTimeThrough)
+ {
+ FirstTimeThrough = False;
+ if (!item->delta)
+ {
+ nbytes += SIZEOF(xTextElt);
+ BufAlloc (xTextElt *, elt, nbytes);
+ elt->delta = 0;
+ }
+ else
+ {
+ char *DummyChar;
+ BufAlloc(char *, DummyChar, nbytes);
+#ifdef lint
+ DummyChar = DummyChar;
+#endif
+ }
+ }
+ else
+ {
+ nbytes += SIZEOF(xTextElt);
+ BufAlloc (xTextElt *, elt, nbytes);
+ elt->delta = 0;
+ }
+ elt->len = 254;
+
+#if defined(MUSTCOPY) || defined(MUSTCOPY2B)
+ {
+ register int i;
+ register unsigned char *cp;
+ for (i = 0, cp = ((unsigned char *)elt) + 2; i < 254; i++) {
+ *cp++ = CharacterOffset[i].byte1;
+ *cp++ = CharacterOffset[i].byte2;
+ }
+ }
+#else
+ memcpy ((char *) (elt + 1), (char *)CharacterOffset, 254 * 2);
+#endif
+ PartialNChars = PartialNChars - 254;
+ CharacterOffset += 254;
+
+ }
+ if (PartialNChars)
+ {
+ nbytes = PartialNChars * 2;
+ if (FirstTimeThrough)
+ {
+ FirstTimeThrough = False;
+ if (!item->delta)
+ {
+ nbytes += SIZEOF(xTextElt);
+ BufAlloc (xTextElt *, elt, nbytes);
+ elt->delta = 0;
+ }
+ else
+ {
+ char *DummyChar;
+ BufAlloc(char *, DummyChar, nbytes);
+#ifdef lint
+ DummyChar = DummyChar;
+#endif
+ }
+ }
+ else
+ {
+ nbytes += SIZEOF(xTextElt);
+ BufAlloc (xTextElt *, elt, nbytes);
+ elt->delta = 0;
+ }
+ elt->len = PartialNChars;
+
+#if defined(MUSTCOPY) || defined(MUSTCOPY2B)
+ {
+ register int i;
+ register unsigned char *cp;
+ for (i = 0, cp = ((unsigned char *)elt) + 2; i < PartialNChars;
+ i++) {
+ *cp++ = CharacterOffset[i].byte1;
+ *cp++ = CharacterOffset[i].byte2;
+ }
+ }
+#else
+ memcpy ((char *) (elt + 1), (char *)CharacterOffset,
+ PartialNChars *
+2);
+#endif
+ }
+ }
+ item++;
+ }
+
+ /* Pad request out to a 32-bit boundary */
+
+ if (length &= 3) {
+ char *pad;
+ /*
+ * BufAlloc is a macro that uses its last argument more than
+ * once, otherwise I'd write "BufAlloc (char *, pad, 4-length)"
+ */
+ length = 4 - length;
+ BufAlloc (char *, pad, length);
+ /*
+ * if there are 3 bytes of padding, the first byte MUST be 0
+ * so the pad bytes aren't mistaken for a final xTextElt
+ */
+ *pad = 0;
+ }
+
+ /*
+ * If the buffer pointer is not now pointing to a 32-bit boundary,
+ * we must flush the buffer so that it does point to a 32-bit boundary
+ * at the end of this routine.
+ */
+
+ if ((dpy->bufptr - dpy->buffer) & 3)
+ _XFlush (dpy);
+
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return 1;
+ }
+
+
+
diff --git a/libX11/src/PropAlloc.c b/libX11/src/PropAlloc.c
index d1ca9427c..bad768153 100644
--- a/libX11/src/PropAlloc.c
+++ b/libX11/src/PropAlloc.c
@@ -1,75 +1,75 @@
-/*
-
-Copyright 1989, 1998 The Open Group
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall not be
-used in advertising or otherwise to promote the sale, use or other dealings
-in this Software without prior written authorization from The Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-#include "Xutil.h"
-#include <stdio.h>
-
-
-/*
- * Routines for allocating space for structures that are expected to get
- * longer at some point.
- */
-
-XSizeHints *XAllocSizeHints (void)
-{
- return ((XSizeHints *) Xcalloc (1, (unsigned) sizeof (XSizeHints)));
-}
-
-
-XStandardColormap *XAllocStandardColormap (void)
-{
- return ((XStandardColormap *)
- Xcalloc (1, (unsigned) sizeof (XStandardColormap)));
-}
-
-
-XWMHints *XAllocWMHints (void)
-{
- return ((XWMHints *) Xcalloc (1, (unsigned) sizeof (XWMHints)));
-}
-
-
-XClassHint *XAllocClassHint (void)
-{
- register XClassHint *h;
-
- if ((h = (XClassHint *) Xcalloc (1, (unsigned) sizeof (XClassHint))))
- h->res_name = h->res_class = NULL;
-
- return h;
-}
-
-
-XIconSize *XAllocIconSize (void)
-{
- return ((XIconSize *) Xcalloc (1, (unsigned) sizeof (XIconSize)));
-}
-
-
+/*
+
+Copyright 1989, 1998 The Open Group
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group shall not be
+used in advertising or otherwise to promote the sale, use or other dealings
+in this Software without prior written authorization from The Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+#include "Xutil.h"
+#include <stdio.h>
+
+
+/*
+ * Routines for allocating space for structures that are expected to get
+ * longer at some point.
+ */
+
+XSizeHints *XAllocSizeHints (void)
+{
+ return ((XSizeHints *) Xcalloc (1, (unsigned) sizeof (XSizeHints)));
+}
+
+
+XStandardColormap *XAllocStandardColormap (void)
+{
+ return ((XStandardColormap *)
+ Xcalloc (1, (unsigned) sizeof (XStandardColormap)));
+}
+
+
+XWMHints *XAllocWMHints (void)
+{
+ return ((XWMHints *) Xcalloc (1, (unsigned) sizeof (XWMHints)));
+}
+
+
+XClassHint *XAllocClassHint (void)
+{
+ register XClassHint *h;
+
+ if ((h = (XClassHint *) Xcalloc (1, (unsigned) sizeof (XClassHint))))
+ h->res_name = h->res_class = NULL;
+
+ return h;
+}
+
+
+XIconSize *XAllocIconSize (void)
+{
+ return ((XIconSize *) Xcalloc (1, (unsigned) sizeof (XIconSize)));
+}
+
+
diff --git a/libX11/src/PutBEvent.c b/libX11/src/PutBEvent.c
index 9193cc3b4..f9d4c29bd 100644
--- a/libX11/src/PutBEvent.c
+++ b/libX11/src/PutBEvent.c
@@ -1,87 +1,87 @@
-/*
-
-Copyright 1986, 1998 The Open Group
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
-
-The above copyright notice and this permission notice shall be included
-in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
-IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR
-OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
-ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall
-not be used in advertising or otherwise to promote the sale, use or
-other dealings in this Software without prior written authorization
-from The Open Group.
-
-*/
-
-/* XPutBackEvent puts an event back at the head of the queue. */
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-
-int
-_XPutBackEvent (
- register Display *dpy,
- register XEvent *event)
- {
- register _XQEvent *qelt;
- XEvent store = *event;
-
- if (!dpy->qfree) {
- if ((dpy->qfree = (_XQEvent *) Xmalloc (sizeof (_XQEvent))) == NULL) {
- return 0;
- }
- dpy->qfree->next = NULL;
- }
-
- /* unclaimed cookie? */
- if (_XIsEventCookie(dpy, event))
- {
- XEvent copy = {0};
- /* if not claimed, then just fetch and store again */
- if (!event->xcookie.data) {
- _XFetchEventCookie(dpy, &event->xcookie);
- store = *event;
- } else { /* if claimed, copy, client must free */
- _XCopyEventCookie(dpy, &event->xcookie, &copy.xcookie);
- store = copy;
- }
- }
-
- qelt = dpy->qfree;
- dpy->qfree = qelt->next;
- qelt->qserial_num = dpy->next_event_serial_num++;
- qelt->next = dpy->head;
- qelt->event = store;
- dpy->head = qelt;
- if (dpy->tail == NULL)
- dpy->tail = qelt;
- dpy->qlen++;
- return 0;
- }
-
-int
-XPutBackEvent (
- register Display * dpy,
- register XEvent *event)
- {
- int ret;
-
- LockDisplay(dpy);
- ret = _XPutBackEvent(dpy, event);
- UnlockDisplay(dpy);
- return ret;
- }
+/*
+
+Copyright 1986, 1998 The Open Group
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
+
+The above copyright notice and this permission notice shall be included
+in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR
+OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
+ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group shall
+not be used in advertising or otherwise to promote the sale, use or
+other dealings in this Software without prior written authorization
+from The Open Group.
+
+*/
+
+/* XPutBackEvent puts an event back at the head of the queue. */
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+
+int
+_XPutBackEvent (
+ register Display *dpy,
+ register XEvent *event)
+ {
+ register _XQEvent *qelt;
+ XEvent store = *event;
+
+ if (!dpy->qfree) {
+ if ((dpy->qfree = (_XQEvent *) Xmalloc (sizeof (_XQEvent))) == NULL) {
+ return 0;
+ }
+ dpy->qfree->next = NULL;
+ }
+
+ /* unclaimed cookie? */
+ if (_XIsEventCookie(dpy, event))
+ {
+ XEvent copy = {0};
+ /* if not claimed, then just fetch and store again */
+ if (!event->xcookie.data) {
+ _XFetchEventCookie(dpy, &event->xcookie);
+ store = *event;
+ } else { /* if claimed, copy, client must free */
+ _XCopyEventCookie(dpy, &event->xcookie, &copy.xcookie);
+ store = copy;
+ }
+ }
+
+ qelt = dpy->qfree;
+ dpy->qfree = qelt->next;
+ qelt->qserial_num = dpy->next_event_serial_num++;
+ qelt->next = dpy->head;
+ qelt->event = store;
+ dpy->head = qelt;
+ if (dpy->tail == NULL)
+ dpy->tail = qelt;
+ dpy->qlen++;
+ return 0;
+ }
+
+int
+XPutBackEvent (
+ register Display * dpy,
+ register XEvent *event)
+ {
+ int ret;
+
+ LockDisplay(dpy);
+ ret = _XPutBackEvent(dpy, event);
+ UnlockDisplay(dpy);
+ return ret;
+ }
diff --git a/libX11/src/PutImage.c b/libX11/src/PutImage.c
index f5d74575c..6dad4f13a 100644
--- a/libX11/src/PutImage.c
+++ b/libX11/src/PutImage.c
@@ -1,1044 +1,1044 @@
-/*
-
-Copyright 1986, 1998 The Open Group
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall not be
-used in advertising or otherwise to promote the sale, use or other dealings
-in this Software without prior written authorization from The Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-#include "Xutil.h"
-#include <stdio.h>
-#include "Cr.h"
-#include "ImUtil.h"
-
-#if defined(__STDC__) && ((defined(sun) && defined(SVR4)) || defined(WIN32))
-#define RConst /**/
-#else
-#define RConst const
-#endif
-
-#if defined(Lynx) && defined(ROUNDUP)
-#undef ROUNDUP
-#endif
-
-/* assumes pad is a power of 2 */
-#define ROUNDUP(nbytes, pad) (((nbytes) + ((pad) - 1)) & ~(long)((pad) - 1))
-
-static unsigned char const _reverse_byte[0x100] = {
- 0x00, 0x80, 0x40, 0xc0, 0x20, 0xa0, 0x60, 0xe0,
- 0x10, 0x90, 0x50, 0xd0, 0x30, 0xb0, 0x70, 0xf0,
- 0x08, 0x88, 0x48, 0xc8, 0x28, 0xa8, 0x68, 0xe8,
- 0x18, 0x98, 0x58, 0xd8, 0x38, 0xb8, 0x78, 0xf8,
- 0x04, 0x84, 0x44, 0xc4, 0x24, 0xa4, 0x64, 0xe4,
- 0x14, 0x94, 0x54, 0xd4, 0x34, 0xb4, 0x74, 0xf4,
- 0x0c, 0x8c, 0x4c, 0xcc, 0x2c, 0xac, 0x6c, 0xec,
- 0x1c, 0x9c, 0x5c, 0xdc, 0x3c, 0xbc, 0x7c, 0xfc,
- 0x02, 0x82, 0x42, 0xc2, 0x22, 0xa2, 0x62, 0xe2,
- 0x12, 0x92, 0x52, 0xd2, 0x32, 0xb2, 0x72, 0xf2,
- 0x0a, 0x8a, 0x4a, 0xca, 0x2a, 0xaa, 0x6a, 0xea,
- 0x1a, 0x9a, 0x5a, 0xda, 0x3a, 0xba, 0x7a, 0xfa,
- 0x06, 0x86, 0x46, 0xc6, 0x26, 0xa6, 0x66, 0xe6,
- 0x16, 0x96, 0x56, 0xd6, 0x36, 0xb6, 0x76, 0xf6,
- 0x0e, 0x8e, 0x4e, 0xce, 0x2e, 0xae, 0x6e, 0xee,
- 0x1e, 0x9e, 0x5e, 0xde, 0x3e, 0xbe, 0x7e, 0xfe,
- 0x01, 0x81, 0x41, 0xc1, 0x21, 0xa1, 0x61, 0xe1,
- 0x11, 0x91, 0x51, 0xd1, 0x31, 0xb1, 0x71, 0xf1,
- 0x09, 0x89, 0x49, 0xc9, 0x29, 0xa9, 0x69, 0xe9,
- 0x19, 0x99, 0x59, 0xd9, 0x39, 0xb9, 0x79, 0xf9,
- 0x05, 0x85, 0x45, 0xc5, 0x25, 0xa5, 0x65, 0xe5,
- 0x15, 0x95, 0x55, 0xd5, 0x35, 0xb5, 0x75, 0xf5,
- 0x0d, 0x8d, 0x4d, 0xcd, 0x2d, 0xad, 0x6d, 0xed,
- 0x1d, 0x9d, 0x5d, 0xdd, 0x3d, 0xbd, 0x7d, 0xfd,
- 0x03, 0x83, 0x43, 0xc3, 0x23, 0xa3, 0x63, 0xe3,
- 0x13, 0x93, 0x53, 0xd3, 0x33, 0xb3, 0x73, 0xf3,
- 0x0b, 0x8b, 0x4b, 0xcb, 0x2b, 0xab, 0x6b, 0xeb,
- 0x1b, 0x9b, 0x5b, 0xdb, 0x3b, 0xbb, 0x7b, 0xfb,
- 0x07, 0x87, 0x47, 0xc7, 0x27, 0xa7, 0x67, 0xe7,
- 0x17, 0x97, 0x57, 0xd7, 0x37, 0xb7, 0x77, 0xf7,
- 0x0f, 0x8f, 0x4f, 0xcf, 0x2f, 0xaf, 0x6f, 0xef,
- 0x1f, 0x9f, 0x5f, 0xdf, 0x3f, 0xbf, 0x7f, 0xff
-};
-
-static unsigned char const _reverse_nibs[0x100] = {
- 0x00, 0x10, 0x20, 0x30, 0x40, 0x50, 0x60, 0x70,
- 0x80, 0x90, 0xa0, 0xb0, 0xc0, 0xd0, 0xe0, 0xf0,
- 0x01, 0x11, 0x21, 0x31, 0x41, 0x51, 0x61, 0x71,
- 0x81, 0x91, 0xa1, 0xb1, 0xc1, 0xd1, 0xe1, 0xf1,
- 0x02, 0x12, 0x22, 0x32, 0x42, 0x52, 0x62, 0x72,
- 0x82, 0x92, 0xa2, 0xb2, 0xc2, 0xd2, 0xe2, 0xf2,
- 0x03, 0x13, 0x23, 0x33, 0x43, 0x53, 0x63, 0x73,
- 0x83, 0x93, 0xa3, 0xb3, 0xc3, 0xd3, 0xe3, 0xf3,
- 0x04, 0x14, 0x24, 0x34, 0x44, 0x54, 0x64, 0x74,
- 0x84, 0x94, 0xa4, 0xb4, 0xc4, 0xd4, 0xe4, 0xf4,
- 0x05, 0x15, 0x25, 0x35, 0x45, 0x55, 0x65, 0x75,
- 0x85, 0x95, 0xa5, 0xb5, 0xc5, 0xd5, 0xe5, 0xf5,
- 0x06, 0x16, 0x26, 0x36, 0x46, 0x56, 0x66, 0x76,
- 0x86, 0x96, 0xa6, 0xb6, 0xc6, 0xd6, 0xe6, 0xf6,
- 0x07, 0x17, 0x27, 0x37, 0x47, 0x57, 0x67, 0x77,
- 0x87, 0x97, 0xa7, 0xb7, 0xc7, 0xd7, 0xe7, 0xf7,
- 0x08, 0x18, 0x28, 0x38, 0x48, 0x58, 0x68, 0x78,
- 0x88, 0x98, 0xa8, 0xb8, 0xc8, 0xd8, 0xe8, 0xf8,
- 0x09, 0x19, 0x29, 0x39, 0x49, 0x59, 0x69, 0x79,
- 0x89, 0x99, 0xa9, 0xb9, 0xc9, 0xd9, 0xe9, 0xf9,
- 0x0a, 0x1a, 0x2a, 0x3a, 0x4a, 0x5a, 0x6a, 0x7a,
- 0x8a, 0x9a, 0xaa, 0xba, 0xca, 0xda, 0xea, 0xfa,
- 0x0b, 0x1b, 0x2b, 0x3b, 0x4b, 0x5b, 0x6b, 0x7b,
- 0x8b, 0x9b, 0xab, 0xbb, 0xcb, 0xdb, 0xeb, 0xfb,
- 0x0c, 0x1c, 0x2c, 0x3c, 0x4c, 0x5c, 0x6c, 0x7c,
- 0x8c, 0x9c, 0xac, 0xbc, 0xcc, 0xdc, 0xec, 0xfc,
- 0x0d, 0x1d, 0x2d, 0x3d, 0x4d, 0x5d, 0x6d, 0x7d,
- 0x8d, 0x9d, 0xad, 0xbd, 0xcd, 0xdd, 0xed, 0xfd,
- 0x0e, 0x1e, 0x2e, 0x3e, 0x4e, 0x5e, 0x6e, 0x7e,
- 0x8e, 0x9e, 0xae, 0xbe, 0xce, 0xde, 0xee, 0xfe,
- 0x0f, 0x1f, 0x2f, 0x3f, 0x4f, 0x5f, 0x6f, 0x7f,
- 0x8f, 0x9f, 0xaf, 0xbf, 0xcf, 0xdf, 0xef, 0xff
-};
-
-int
-_XReverse_Bytes(
- register unsigned char *bpt,
- register int nb)
-{
- do {
- *bpt = _reverse_byte[*bpt];
- bpt++;
- } while (--nb > 0);
- return 0;
-}
-
-
-/* XXX the following functions are declared int instead of void because various
- * compilers and lints complain about later initialization of SwapFunc and/or
- * (swapfunc == NoSwap) when void is used.
- */
-
-/*ARGSUSED*/
-static void
-NoSwap (
- register unsigned char *src,
- register unsigned char *dest,
- long srclen,
- long srcinc,
- long destinc,
- unsigned int height,
- int half_order)
-{
- long h = height;
-
- if (srcinc == destinc)
- memcpy((char *)dest, (char *)src, (int)(srcinc * (h - 1) + srclen));
- else
- for (; --h >= 0; src += srcinc, dest += destinc)
- memcpy((char *)dest, (char *)src, (int)srclen);
-}
-
-static void
-SwapTwoBytes (
- register unsigned char *src,
- register unsigned char *dest,
- long srclen, long srcinc, long destinc,
- unsigned int height,
- int half_order)
-{
- long length = ROUNDUP(srclen, 2);
- register long h, n;
-
- srcinc -= length;
- destinc -= length;
- for (h = height; --h >= 0; src += srcinc, dest += destinc) {
- if ((h == 0) && (srclen != length)) {
- length -= 2;
- if (half_order == MSBFirst)
- *(dest + length) = *(src + length + 1);
- else
- *(dest + length + 1) = *(src + length);
- }
- for (n = length; n > 0; n -= 2, src += 2) {
- *dest++ = *(src + 1);
- *dest++ = *src;
- }
- }
-}
-
-static void
-SwapThreeBytes (
- register unsigned char *src,
- register unsigned char *dest,
- long srclen, long srcinc, long destinc,
- unsigned int height,
- int byte_order)
-{
- long length = ((srclen + 2) / 3) * 3;
- register long h, n;
-
- srcinc -= length;
- destinc -= length;
- for (h = height; --h >= 0; src += srcinc, dest += destinc) {
- if ((h == 0) && (srclen != length)) {
- length -= 3;
- if ((srclen - length) == 2)
- *(dest + length + 1) = *(src + length + 1);
- if (byte_order == MSBFirst)
- *(dest + length) = *(src + length + 2);
- else
- *(dest + length + 2) = *(src + length);
- }
- for (n = length; n > 0; n -= 3, src += 3) {
- *dest++ = *(src + 2);
- *dest++ = *(src + 1);
- *dest++ = *src;
- }
- }
-}
-
-static void
-SwapFourBytes (
- register unsigned char *src,
- register unsigned char *dest,
- long srclen, long srcinc, long destinc,
- unsigned int height,
- int half_order)
-{
- long length = ROUNDUP(srclen, 4);
- register long h, n;
-
- srcinc -= length;
- destinc -= length;
- for (h = height; --h >= 0; src += srcinc, dest += destinc) {
- if ((h == 0) && (srclen != length)) {
- length -= 4;
- if (half_order == MSBFirst)
- *(dest + length) = *(src + length + 3);
- if (((half_order == LSBFirst) && ((srclen - length) == 3)) ||
- ((half_order == MSBFirst) && (srclen & 2)))
- *(dest + length + 1) = *(src + length + 2);
- if (((half_order == MSBFirst) && ((srclen - length) == 3)) ||
- ((half_order == LSBFirst) && (srclen & 2)))
- *(dest + length + 2) = *(src + length + 1);
- if (half_order == LSBFirst)
- *(dest + length + 3) = *(src + length);
- }
- for (n = length; n > 0; n -= 4, src += 4) {
- *dest++ = *(src + 3);
- *dest++ = *(src + 2);
- *dest++ = *(src + 1);
- *dest++ = *src;
- }
- }
-}
-
-static void
-SwapWords (
- register unsigned char *src,
- register unsigned char *dest,
- long srclen, long srcinc, long destinc,
- unsigned int height,
- int half_order)
-{
- long length = ROUNDUP(srclen, 4);
- register long h, n;
-
- srcinc -= length;
- destinc -= length;
- for (h = height; --h >= 0; src += srcinc, dest += destinc) {
- if ((h == 0) && (srclen != length)) {
- length -= 4;
- if (half_order == MSBFirst)
- *(dest + length + 1) = *(src + length + 3);
- if (((half_order == LSBFirst) && ((srclen - length) == 3)) ||
- ((half_order == MSBFirst) && (srclen & 2)))
- *(dest + length) = *(src + length + 2);
- if (((half_order == MSBFirst) && ((srclen - length) == 3)) ||
- ((half_order == LSBFirst) && (srclen & 2)))
- *(dest + length + 3) = *(src + length + 1);
- if (half_order == LSBFirst)
- *(dest + length + 2) = *(src + length);
- }
- for (n = length; n > 0; n -= 4, src += 2) {
- *dest++ = *(src + 2);
- *dest++ = *(src + 3);
- *dest++ = *src++;
- *dest++ = *src++;
- }
- }
-}
-
-static void
-SwapNibbles(
- register unsigned char *src,
- register unsigned char *dest,
- long srclen, long srcinc, long destinc,
- unsigned int height)
-{
- register long h, n;
- register const unsigned char *rev = _reverse_nibs;
-
- srcinc -= srclen;
- destinc -= srclen;
- for (h = height; --h >= 0; src += srcinc, dest += destinc)
- for (n = srclen; --n >= 0; )
- *dest++ = rev[*src++];
-}
-
-static void
-ShiftNibblesLeft (
- register unsigned char *src,
- register unsigned char *dest,
- long srclen, long srcinc, long destinc,
- unsigned int height,
- int nibble_order)
-{
- register long h, n;
- register unsigned char c1, c2;
-
- srcinc -= srclen;
- destinc -= srclen;
- if (nibble_order == MSBFirst) {
- for (h = height; --h >= 0; src += srcinc, dest += destinc)
- for (n = srclen; --n >= 0; ) {
- c1 = *src++;
- c2 = *src;
- *dest++ = ((c1 & 0x0f) << 4) | ((c2 & (unsigned)0xf0) >> 4);
- }
- } else {
- for (h = height; --h >= 0; src += srcinc, dest += destinc)
- for (n = srclen; --n >= 0; ) {
- c1 = *src++;
- c2 = *src;
- *dest++ = ((c2 & 0x0f) << 4) | ((c1 & (unsigned)0xf0) >> 4);
- }
- }
-}
-
-/*ARGSUSED*/
-static void
-SwapBits(
- register unsigned char *src,
- register unsigned char *dest,
- long srclen, long srcinc, long destinc,
- unsigned int height,
- int half_order)
-{
- register long h, n;
- register const unsigned char *rev = _reverse_byte;
-
- srcinc -= srclen;
- destinc -= srclen;
- for (h = height; --h >= 0; src += srcinc, dest += destinc)
- for (n = srclen; --n >= 0; )
- *dest++ = rev[*src++];
-}
-
-static void
-SwapBitsAndTwoBytes(
- register unsigned char *src,
- register unsigned char *dest,
- long srclen, long srcinc, long destinc,
- unsigned int height,
- int half_order)
-{
- long length = ROUNDUP(srclen, 2);
- register long h, n;
- register const unsigned char *rev = _reverse_byte;
-
- srcinc -= length;
- destinc -= length;
- for (h = height; --h >= 0; src += srcinc, dest += destinc) {
- if ((h == 0) && (srclen != length)) {
- length -= 2;
- if (half_order == MSBFirst)
- *(dest + length) = rev[*(src + length + 1)];
- else
- *(dest + length + 1) = rev[*(src + length)];
- }
- for (n = length; n > 0; n -= 2, src += 2) {
- *dest++ = rev[*(src + 1)];
- *dest++ = rev[*src];
- }
- }
-}
-
-static void
-SwapBitsAndFourBytes(
- register unsigned char *src,
- register unsigned char *dest,
- long srclen, long srcinc, long destinc,
- unsigned int height,
- int half_order)
-{
- long length = ROUNDUP(srclen, 4);
- register long h, n;
- register const unsigned char *rev = _reverse_byte;
-
- srcinc -= length;
- destinc -= length;
- for (h = height; --h >= 0; src += srcinc, dest += destinc) {
- if ((h == 0) && (srclen != length)) {
- length -= 4;
- if (half_order == MSBFirst)
- *(dest + length) = rev[*(src + length + 3)];
- if (((half_order == LSBFirst) && ((srclen - length) == 3)) ||
- ((half_order == MSBFirst) && (srclen & 2)))
- *(dest + length + 1) = rev[*(src + length + 2)];
- if (((half_order == MSBFirst) && ((srclen - length) == 3)) ||
- ((half_order == LSBFirst) && (srclen & 2)))
- *(dest + length + 2) = rev[*(src + length + 1)];
- if (half_order == LSBFirst)
- *(dest + length + 3) = rev[*(src + length)];
- }
- for (n = length; n > 0; n -= 4, src += 4) {
- *dest++ = rev[*(src + 3)];
- *dest++ = rev[*(src + 2)];
- *dest++ = rev[*(src + 1)];
- *dest++ = rev[*src];
- }
- }
-}
-
-static void
-SwapBitsAndWords(
- register unsigned char *src,
- register unsigned char *dest,
- long srclen, long srcinc, long destinc,
- unsigned int height,
- int half_order)
-{
- long length = ROUNDUP(srclen, 4);
- register long h, n;
- register const unsigned char *rev = _reverse_byte;
-
- srcinc -= length;
- destinc -= length;
- for (h = height; --h >= 0; src += srcinc, dest += destinc) {
- if ((h == 0) && (srclen != length)) {
- length -= 4;
- if (half_order == MSBFirst)
- *(dest + length + 1) = rev[*(src + length + 3)];
- if (((half_order == LSBFirst) && ((srclen - length) == 3)) ||
- ((half_order == MSBFirst) && (srclen & 2)))
- *(dest + length) = rev[*(src + length + 2)];
- if (((half_order == MSBFirst) && ((srclen - length) == 3)) ||
- ((half_order == LSBFirst) && (srclen & 2)))
- *(dest + length + 3) = rev[*(src + length + 1)];
- if (half_order == LSBFirst)
- *(dest + length + 2) = rev[*(src + length)];
- }
- for (n = length; n > 0; n -= 4, src += 2) {
- *dest++ = rev[*(src + 2)];
- *dest++ = rev[*(src + 3)];
- *dest++ = rev[*src++];
- *dest++ = rev[*src++];
- }
- }
-}
-
-/*
-
-The following table gives the bit ordering within bytes (when accessed
-sequentially) for a scanline containing 32 bits, with bits numbered 0 to
-31, where bit 0 should be leftmost on the display. For a given byte
-labelled A-B, A is for the most significant bit of the byte, and B is
-for the least significant bit.
-
-legend:
- 1 scanline-unit = 8
- 2 scanline-unit = 16
- 4 scanline-unit = 32
- M byte-order = MostSignificant
- L byte-order = LeastSignificant
- m bit-order = MostSignificant
- l bit-order = LeastSignificant
-
-
-format ordering
-
-1Mm 00-07 08-15 16-23 24-31
-2Mm 00-07 08-15 16-23 24-31
-4Mm 00-07 08-15 16-23 24-31
-1Ml 07-00 15-08 23-16 31-24
-2Ml 15-08 07-00 31-24 23-16
-4Ml 31-24 23-16 15-08 07-00
-1Lm 00-07 08-15 16-23 24-31
-2Lm 08-15 00-07 24-31 16-23
-4Lm 24-31 16-23 08-15 00-07
-1Ll 07-00 15-08 23-16 31-24
-2Ll 07-00 15-08 23-16 31-24
-4Ll 07-00 15-08 23-16 31-24
-
-
-The following table gives the required conversion between any two
-formats. It is based strictly on the table above. If you believe one,
-you should believe the other.
-
-legend:
- n no changes
- s reverse 8-bit units within 16-bit units
- l reverse 8-bit units within 32-bit units
- w reverse 16-bit units within 32-bit units
- R reverse bits within 8-bit units
- S s+R
- L l+R
- W w+R
-
-*/
-
-static void (* RConst (SwapFunction[12][12]))(
- register unsigned char *src,
- register unsigned char *dest,
- long srclen,
- long srcinc,
- long destinc,
- unsigned int height,
- int half_order) = {
-#define n NoSwap,
-#define s SwapTwoBytes,
-#define l SwapFourBytes,
-#define w SwapWords,
-#define R SwapBits,
-#define S SwapBitsAndTwoBytes,
-#define L SwapBitsAndFourBytes,
-#define W SwapBitsAndWords,
-
-/* 1Mm 2Mm 4Mm 1Ml 2Ml 4Ml 1Lm 2Lm 4Lm 1Ll 2Ll 4Ll */
-/* 1Mm */ { n n n R S L n s l R R R },
-/* 2Mm */ { n n n R S L n s l R R R },
-/* 4Mm */ { n n n R S L n s l R R R },
-/* 1Ml */ { R R R n s l R S L n n n },
-/* 2Ml */ { S S S s n w S R W s s s },
-/* 4Ml */ { L L L l w n L W R l l l },
-/* 1Lm */ { n n n R S L n s l R R R },
-/* 2Lm */ { s s s S R W s n w S S S },
-/* 4Lm */ { l l l L W R l w n L L L },
-/* 1Ll */ { R R R n s l R S L n n n },
-/* 2Ll */ { R R R n s l R S L n n n },
-/* 4Ll */ { R R R n s l R S L n n n }
-
-#undef n
-#undef s
-#undef l
-#undef w
-#undef R
-#undef S
-#undef L
-#undef W
-
-};
-
-/* Of course, the table above is a lie. We also need to factor in the
- * order of the source data to cope with swapping half of a unit at the
- * end of a scanline, since we are trying to avoid de-ref'ing off the
- * end of the source.
- *
- * Defines whether the first half of a unit has the first half of the data
- */
-static int const HalfOrder[12] = {
- LSBFirst, /* 1Mm */
- LSBFirst, /* 2Mm */
- LSBFirst, /* 4Mm */
- LSBFirst, /* 1Ml */
- MSBFirst, /* 2Ml */
- MSBFirst, /* 4Ml */
- LSBFirst, /* 1Lm */
- MSBFirst, /* 2Lm */
- MSBFirst, /* 4Lm */
- LSBFirst, /* 1Ll */
- LSBFirst, /* 2Ll */
- LSBFirst /* 4Ll */
- };
-
-/* Finally, for SwapWords cases, the half order depends not just on the source
- * but also on the destination scanline unit. Use of this table changes some
- * MSBFirsts to LSBFirsts that are "do not care" (because the function will be
- * NoSwap or SwapBits) in addition to changing the desired ones.
- */
-
-static int const HalfOrderWord[12] = {
- MSBFirst, /* 1Mm */
- MSBFirst, /* 2Mm */
- MSBFirst, /* 4Mm */
- MSBFirst, /* 1Ml */
- MSBFirst, /* 2Ml */
- LSBFirst, /* 4Ml */
- MSBFirst, /* 1Lm */
- MSBFirst, /* 2Lm */
- LSBFirst, /* 4Lm */
- MSBFirst, /* 1Ll */
- MSBFirst, /* 2Ll */
- MSBFirst /* 4Ll */
- };
-
-/*
- * This macro creates a value from 0 to 11 suitable for indexing
- * into the table above.
- */
-#define ComposeIndex(bitmap_unit, bitmap_bit_order, byte_order) \
- (((bitmap_unit == 32) ? 2 : ((bitmap_unit == 16) ? 1 : 0)) \
- + (((bitmap_bit_order == MSBFirst) ? 0 : 3) \
- + ((byte_order == MSBFirst) ? 0 : 6)))
-
-/* Cancel a GetReq operation, before doing _XSend or Data */
-
-#if (defined(__STDC__) && !defined(UNIXCPP)) || defined(ANSICPP)
-#define UnGetReq(name)\
- dpy->bufptr -= SIZEOF(x##name##Req);\
- dpy->request--
-#else
-#define UnGetReq(name)\
- dpy->bufptr -= SIZEOF(x/**/name/**/Req);\
- dpy->request--
-#endif
-
-static void
-SendXYImage(
- register Display *dpy,
- register xPutImageReq *req,
- register XImage *image,
- int req_xoffset, int req_yoffset)
-{
- register int j;
- long total_xoffset, bytes_per_src, bytes_per_dest, length;
- long bytes_per_line, bytes_per_src_plane, bytes_per_dest_plane;
- char *src, *dest, *buf;
- char *extra = (char *)NULL;
- register void (*swapfunc)(
- register unsigned char *src,
- register unsigned char *dest,
- long srclen,
- long srcinc,
- long destinc,
- unsigned int height,
- int half_order);
- int half_order;
-
- total_xoffset = image->xoffset + req_xoffset;
- req->leftPad = total_xoffset & (dpy->bitmap_unit - 1);
- total_xoffset = (unsigned)(total_xoffset - req->leftPad) >> 3;
- /* The protocol requires left-pad of zero on all ZPixmap, even
- * though the 1-bit case is identical to bitmap format. This is a
- * bug in the protocol, caused because 1-bit ZPixmap was added late
- * in the game. Hairy shifting code compensation isn't worth it,
- * just use XYPixmap format instead.
- */
- if ((req->leftPad != 0) && (req->format == ZPixmap))
- req->format = XYPixmap;
- bytes_per_dest = (unsigned long)ROUNDUP((long)req->width + req->leftPad,
- dpy->bitmap_pad) >> 3;
- bytes_per_dest_plane = bytes_per_dest * req->height;
- length = bytes_per_dest_plane * image->depth;
- req->length += (length + 3) >> 2;
-
- swapfunc = SwapFunction[ComposeIndex(image->bitmap_unit,
- image->bitmap_bit_order,
- image->byte_order)]
- [ComposeIndex(dpy->bitmap_unit,
- dpy->bitmap_bit_order,
- dpy->byte_order)];
- half_order = HalfOrder[ComposeIndex(image->bitmap_unit,
- image->bitmap_bit_order,
- image->byte_order)];
- if (half_order == MSBFirst)
- half_order = HalfOrderWord[ComposeIndex(dpy->bitmap_unit,
- dpy->bitmap_bit_order,
- dpy->byte_order)];
-
- src = image->data + (image->bytes_per_line * req_yoffset) + total_xoffset;
-
- /* when total_xoffset > 0, we have to worry about stepping off the
- * end of image->data.
- */
- if ((swapfunc == NoSwap) &&
- (image->bytes_per_line == bytes_per_dest) &&
- (((total_xoffset == 0) &&
- ((image->depth == 1) || (image->height == req->height))) ||
- ((image->depth == 1) &&
- ((req_yoffset + req->height) < (unsigned)image->height)))) {
- Data(dpy, src, length);
- return;
- }
-
- length = ROUNDUP(length, 4);
- if ((dpy->bufptr + length) > dpy->bufmax) {
- if ((buf = _XAllocScratch(dpy, (unsigned long) (length))) == NULL) {
- UnGetReq(PutImage);
- return;
- }
- }
- else
- buf = dpy->bufptr;
-
- bytes_per_src = (req->width + req->leftPad + (unsigned)7) >> 3;
- bytes_per_line = image->bytes_per_line;
- bytes_per_src_plane = bytes_per_line * image->height;
- total_xoffset &= (image->bitmap_unit - 1) >> 3;
-
- if ((total_xoffset > 0) &&
- (image->byte_order != image->bitmap_bit_order)) {
- char *temp;
- long bytes_per_temp_plane, temp_length;
-
- bytes_per_line = bytes_per_src + total_xoffset;
- src -= total_xoffset;
- bytes_per_temp_plane = bytes_per_line * req->height;
- temp_length = ROUNDUP(bytes_per_temp_plane * image->depth, 4);
- if (buf == dpy->bufptr) {
- if (! (temp = _XAllocScratch(dpy, (unsigned long) temp_length))) {
- UnGetReq(PutImage);
- return;
- }
- }
- else
- if ((extra = temp = Xmalloc((unsigned) temp_length)) == NULL) {
- UnGetReq(PutImage);
- return;
- }
-
- swapfunc = SwapFunction[ComposeIndex(image->bitmap_unit,
- image->bitmap_bit_order,
- image->byte_order)]
- [ComposeIndex(image->bitmap_unit,
- dpy->byte_order,
- dpy->byte_order)];
- for (dest = temp, j = image->depth;
- --j >= 0;
- src += bytes_per_src_plane, dest += bytes_per_temp_plane)
- (*swapfunc)((unsigned char *)src, (unsigned char *)dest,
- bytes_per_line, (long)image->bytes_per_line,
- bytes_per_line, req->height, half_order);
- swapfunc = SwapFunction[ComposeIndex(image->bitmap_unit,
- dpy->byte_order,
- dpy->byte_order)]
- [ComposeIndex(dpy->bitmap_unit,
- dpy->bitmap_bit_order,
- dpy->byte_order)];
- half_order = HalfOrder[ComposeIndex(image->bitmap_unit,
- dpy->byte_order,
- dpy->byte_order)];
- src = temp + total_xoffset;
- bytes_per_src_plane = bytes_per_temp_plane;
- }
-
- for (dest = buf, j = image->depth;
- --j >= 0;
- src += bytes_per_src_plane, dest += bytes_per_dest_plane)
- (*swapfunc)((unsigned char *)src, (unsigned char *)dest,
- bytes_per_src, bytes_per_line,
- bytes_per_dest, req->height, half_order);
-
- if (extra)
- Xfree(extra);
-
- if (buf == dpy->bufptr)
- dpy->bufptr += length;
- else
- _XSend(dpy, buf, length);
- }
-
-static void
-SendZImage(
- register Display *dpy,
- register xPutImageReq *req,
- register XImage *image,
- int req_xoffset, int req_yoffset,
- int dest_bits_per_pixel, int dest_scanline_pad)
-{
- long bytes_per_src, bytes_per_dest, length;
- unsigned char *src, *dest;
- unsigned char *shifted_src = NULL;
-
- req->leftPad = 0;
- bytes_per_src = ROUNDUP((long)req->width * image->bits_per_pixel, 8) >> 3;
- bytes_per_dest = ROUNDUP((long)req->width * dest_bits_per_pixel,
- dest_scanline_pad) >> 3;
- length = bytes_per_dest * req->height;
- req->length += (length + 3) >> 2;
-
- src = (unsigned char *)image->data +
- (req_yoffset * image->bytes_per_line) +
- ((req_xoffset * image->bits_per_pixel) >> 3);
- if ((image->bits_per_pixel == 4) && ((unsigned int) req_xoffset & 0x01)) {
- if (! (shifted_src = (unsigned char *)
- Xmalloc((unsigned) (req->height * image->bytes_per_line)))) {
- UnGetReq(PutImage);
- return;
- }
-
- ShiftNibblesLeft(src, shifted_src, bytes_per_src,
- (long) image->bytes_per_line,
- (long) image->bytes_per_line, req->height,
- image->byte_order);
- src = shifted_src;
- }
-
- /* when req_xoffset > 0, we have to worry about stepping off the
- * end of image->data.
- */
- if (((image->byte_order == dpy->byte_order) ||
- (image->bits_per_pixel == 8)) &&
- ((long)image->bytes_per_line == bytes_per_dest) &&
- ((req_xoffset == 0) ||
- ((req_yoffset + req->height) < (unsigned)image->height))) {
- Data(dpy, (char *)src, length);
- if (shifted_src)
- Xfree((char *)shifted_src);
- return;
- }
-
- length = ROUNDUP(length, 4);
- if ((dpy->bufptr + length) <= dpy->bufmax)
- dest = (unsigned char *)dpy->bufptr;
- else
- if ((dest = (unsigned char *)
- _XAllocScratch(dpy, (unsigned long)(length))) == NULL) {
- if (shifted_src) Xfree((char *) shifted_src);
- UnGetReq(PutImage);
- return;
- }
-
- if ((image->byte_order == dpy->byte_order) ||
- (image->bits_per_pixel == 8))
- NoSwap(src, dest, bytes_per_src, (long)image->bytes_per_line,
- bytes_per_dest, req->height, image->byte_order);
- else if (image->bits_per_pixel == 32)
- SwapFourBytes(src, dest, bytes_per_src, (long)image->bytes_per_line,
- bytes_per_dest, req->height, image->byte_order);
- else if (image->bits_per_pixel == 24)
- SwapThreeBytes(src, dest, bytes_per_src, (long)image->bytes_per_line,
- bytes_per_dest, req->height, image->byte_order);
- else if (image->bits_per_pixel == 16)
- SwapTwoBytes(src, dest, bytes_per_src, (long)image->bytes_per_line,
- bytes_per_dest, req->height, image->byte_order);
- else
- SwapNibbles(src, dest, bytes_per_src, (long)image->bytes_per_line,
- bytes_per_dest, req->height);
-
- if (dest == (unsigned char *)dpy->bufptr)
- dpy->bufptr += length;
- else
- _XSend(dpy, (char *)dest, length);
-
- if (shifted_src)
- Xfree((char *)shifted_src);
-}
-
-static void
-PutImageRequest(
- register Display *dpy,
- Drawable d,
- GC gc,
- register XImage *image,
- int req_xoffset, int req_yoffset,
- int x, int y,
- unsigned int req_width, unsigned int req_height,
- int dest_bits_per_pixel, int dest_scanline_pad)
-{
- register xPutImageReq *req;
-
- GetReq(PutImage, req);
- req->drawable = d;
- req->gc = gc->gid;
- req->dstX = x;
- req->dstY = y;
- req->width = req_width;
- req->height = req_height;
- req->depth = image->depth;
- req->format = image->format;
- if ((image->bits_per_pixel == 1) || (image->format != ZPixmap))
- SendXYImage(dpy, req, image, req_xoffset, req_yoffset);
- else
- SendZImage(dpy, req, image, req_xoffset, req_yoffset,
- dest_bits_per_pixel, dest_scanline_pad);
-}
-
-static void
-PutSubImage (
- register Display *dpy,
- Drawable d,
- GC gc,
- register XImage *image,
- int req_xoffset,
- int req_yoffset,
- int x, int y,
- unsigned int req_width,
- unsigned int req_height,
- int dest_bits_per_pixel,
- int dest_scanline_pad)
-{
- int left_pad, BytesPerRow, Available;
-
- if ((req_width == 0) || (req_height == 0))
- return;
-
- Available = ((65536 < dpy->max_request_size) ? (65536 << 2)
- : (dpy->max_request_size << 2))
- - SIZEOF(xPutImageReq);
-
- if ((image->bits_per_pixel == 1) || (image->format != ZPixmap)) {
- left_pad = (image->xoffset + req_xoffset) & (dpy->bitmap_unit - 1);
- BytesPerRow = (ROUNDUP((long)req_width + left_pad,
- dpy->bitmap_pad) >> 3) * image->depth;
- } else {
- left_pad = 0;
- BytesPerRow = ROUNDUP((long)req_width * dest_bits_per_pixel,
- dest_scanline_pad) >> 3;
- }
-
- if ((BytesPerRow * req_height) <= Available) {
- PutImageRequest(dpy, d, gc, image, req_xoffset, req_yoffset, x, y,
- req_width, req_height,
- dest_bits_per_pixel, dest_scanline_pad);
- } else if (req_height > 1) {
- int SubImageHeight = Available / BytesPerRow;
-
- if (SubImageHeight == 0)
- SubImageHeight = 1;
-
- PutSubImage(dpy, d, gc, image, req_xoffset, req_yoffset, x, y,
- req_width, (unsigned int) SubImageHeight,
- dest_bits_per_pixel, dest_scanline_pad);
-
- PutSubImage(dpy, d, gc, image, req_xoffset,
- req_yoffset + SubImageHeight, x, y + SubImageHeight,
- req_width, req_height - SubImageHeight,
- dest_bits_per_pixel, dest_scanline_pad);
- } else {
- int SubImageWidth = (((Available << 3) / dest_scanline_pad)
- * dest_scanline_pad) - left_pad;
-
- PutSubImage(dpy, d, gc, image, req_xoffset, req_yoffset, x, y,
- (unsigned int) SubImageWidth, 1,
- dest_bits_per_pixel, dest_scanline_pad);
-
- PutSubImage(dpy, d, gc, image, req_xoffset + SubImageWidth,
- req_yoffset, x + SubImageWidth, y,
- req_width - SubImageWidth, 1,
- dest_bits_per_pixel, dest_scanline_pad);
- }
-}
-
-
-int
-XPutImage (
- register Display *dpy,
- Drawable d,
- GC gc,
- register XImage *image,
- int req_xoffset,
- int req_yoffset,
- int x,
- int y,
- unsigned int req_width,
- unsigned int req_height)
-
-{
- long width = req_width;
- long height = req_height;
- int dest_bits_per_pixel, dest_scanline_pad;
-
- if (req_xoffset < 0) {
- width += req_xoffset;
- req_xoffset = 0;
- }
- if (req_yoffset < 0) {
- height += req_yoffset;
- req_yoffset = 0;
- }
- if ((req_xoffset + width) > image->width)
- width = image->width - req_xoffset;
- if ((req_yoffset + height) > image->height)
- height = image->height - req_yoffset;
- if ((width <= 0) || (height <= 0))
- return 0;
-
- if ((image->bits_per_pixel == 1) || (image->format != ZPixmap)) {
- dest_bits_per_pixel = 1;
- dest_scanline_pad = dpy->bitmap_pad;
- } else {
- register int n;
- register ScreenFormat *format;
-
- dest_bits_per_pixel = image->bits_per_pixel;
- dest_scanline_pad = image->bitmap_pad;
- for (n = dpy->nformats, format = dpy->pixmap_format; --n >= 0; format++)
- if (format->depth == image->depth) {
- dest_bits_per_pixel = format->bits_per_pixel;
- dest_scanline_pad = format->scanline_pad;
- }
- if (dest_bits_per_pixel != image->bits_per_pixel) {
- XImage img;
- register long i, j;
- /* XXX slow, but works */
- img.width = width;
- img.height = height;
- img.xoffset = 0;
- img.format = ZPixmap;
- img.byte_order = dpy->byte_order;
- img.bitmap_unit = dpy->bitmap_unit;
- img.bitmap_bit_order = dpy->bitmap_bit_order;
- img.bitmap_pad = dest_scanline_pad;
- img.depth = image->depth;
- img.bits_per_pixel = dest_bits_per_pixel;
- img.bytes_per_line = ROUNDUP((dest_bits_per_pixel * width),
- dest_scanline_pad) >> 3;
- img.data = Xmalloc((unsigned) (img.bytes_per_line * height));
- if (img.data == NULL)
- return 0;
- _XInitImageFuncPtrs(&img);
- for (j = height; --j >= 0; )
- for (i = width; --i >= 0; )
- XPutPixel(&img, i, j, XGetPixel(image, req_xoffset + i,
- req_yoffset + j));
- LockDisplay(dpy);
- FlushGC(dpy, gc);
- PutSubImage(dpy, d, gc, &img, 0, 0, x, y,
- (unsigned int) width, (unsigned int) height,
- dest_bits_per_pixel, dest_scanline_pad);
- UnlockDisplay(dpy);
- SyncHandle();
- Xfree(img.data);
- return 0;
- }
- }
-
- LockDisplay(dpy);
- FlushGC(dpy, gc);
-
- PutSubImage(dpy, d, gc, image, req_xoffset, req_yoffset, x, y,
- (unsigned int) width, (unsigned int) height,
- dest_bits_per_pixel, dest_scanline_pad);
-
- UnlockDisplay(dpy);
- SyncHandle();
-#ifdef USE_DYNAMIC_XCURSOR
- if (image->bits_per_pixel == 1 &&
- x == 0 && y == 0 &&
- width == image->width && height == image->height &&
- gc->values.function == GXcopy &&
- (gc->values.plane_mask & 1))
- {
- _XNoticePutBitmap (dpy, d, image);
- }
-#endif
- return 0;
-}
+/*
+
+Copyright 1986, 1998 The Open Group
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group shall not be
+used in advertising or otherwise to promote the sale, use or other dealings
+in this Software without prior written authorization from The Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+#include "Xutil.h"
+#include <stdio.h>
+#include "Cr.h"
+#include "ImUtil.h"
+
+#if defined(__STDC__) && ((defined(sun) && defined(SVR4)) || defined(WIN32))
+#define RConst /**/
+#else
+#define RConst const
+#endif
+
+#if defined(Lynx) && defined(ROUNDUP)
+#undef ROUNDUP
+#endif
+
+/* assumes pad is a power of 2 */
+#define ROUNDUP(nbytes, pad) (((nbytes) + ((pad) - 1)) & ~(long)((pad) - 1))
+
+static unsigned char const _reverse_byte[0x100] = {
+ 0x00, 0x80, 0x40, 0xc0, 0x20, 0xa0, 0x60, 0xe0,
+ 0x10, 0x90, 0x50, 0xd0, 0x30, 0xb0, 0x70, 0xf0,
+ 0x08, 0x88, 0x48, 0xc8, 0x28, 0xa8, 0x68, 0xe8,
+ 0x18, 0x98, 0x58, 0xd8, 0x38, 0xb8, 0x78, 0xf8,
+ 0x04, 0x84, 0x44, 0xc4, 0x24, 0xa4, 0x64, 0xe4,
+ 0x14, 0x94, 0x54, 0xd4, 0x34, 0xb4, 0x74, 0xf4,
+ 0x0c, 0x8c, 0x4c, 0xcc, 0x2c, 0xac, 0x6c, 0xec,
+ 0x1c, 0x9c, 0x5c, 0xdc, 0x3c, 0xbc, 0x7c, 0xfc,
+ 0x02, 0x82, 0x42, 0xc2, 0x22, 0xa2, 0x62, 0xe2,
+ 0x12, 0x92, 0x52, 0xd2, 0x32, 0xb2, 0x72, 0xf2,
+ 0x0a, 0x8a, 0x4a, 0xca, 0x2a, 0xaa, 0x6a, 0xea,
+ 0x1a, 0x9a, 0x5a, 0xda, 0x3a, 0xba, 0x7a, 0xfa,
+ 0x06, 0x86, 0x46, 0xc6, 0x26, 0xa6, 0x66, 0xe6,
+ 0x16, 0x96, 0x56, 0xd6, 0x36, 0xb6, 0x76, 0xf6,
+ 0x0e, 0x8e, 0x4e, 0xce, 0x2e, 0xae, 0x6e, 0xee,
+ 0x1e, 0x9e, 0x5e, 0xde, 0x3e, 0xbe, 0x7e, 0xfe,
+ 0x01, 0x81, 0x41, 0xc1, 0x21, 0xa1, 0x61, 0xe1,
+ 0x11, 0x91, 0x51, 0xd1, 0x31, 0xb1, 0x71, 0xf1,
+ 0x09, 0x89, 0x49, 0xc9, 0x29, 0xa9, 0x69, 0xe9,
+ 0x19, 0x99, 0x59, 0xd9, 0x39, 0xb9, 0x79, 0xf9,
+ 0x05, 0x85, 0x45, 0xc5, 0x25, 0xa5, 0x65, 0xe5,
+ 0x15, 0x95, 0x55, 0xd5, 0x35, 0xb5, 0x75, 0xf5,
+ 0x0d, 0x8d, 0x4d, 0xcd, 0x2d, 0xad, 0x6d, 0xed,
+ 0x1d, 0x9d, 0x5d, 0xdd, 0x3d, 0xbd, 0x7d, 0xfd,
+ 0x03, 0x83, 0x43, 0xc3, 0x23, 0xa3, 0x63, 0xe3,
+ 0x13, 0x93, 0x53, 0xd3, 0x33, 0xb3, 0x73, 0xf3,
+ 0x0b, 0x8b, 0x4b, 0xcb, 0x2b, 0xab, 0x6b, 0xeb,
+ 0x1b, 0x9b, 0x5b, 0xdb, 0x3b, 0xbb, 0x7b, 0xfb,
+ 0x07, 0x87, 0x47, 0xc7, 0x27, 0xa7, 0x67, 0xe7,
+ 0x17, 0x97, 0x57, 0xd7, 0x37, 0xb7, 0x77, 0xf7,
+ 0x0f, 0x8f, 0x4f, 0xcf, 0x2f, 0xaf, 0x6f, 0xef,
+ 0x1f, 0x9f, 0x5f, 0xdf, 0x3f, 0xbf, 0x7f, 0xff
+};
+
+static unsigned char const _reverse_nibs[0x100] = {
+ 0x00, 0x10, 0x20, 0x30, 0x40, 0x50, 0x60, 0x70,
+ 0x80, 0x90, 0xa0, 0xb0, 0xc0, 0xd0, 0xe0, 0xf0,
+ 0x01, 0x11, 0x21, 0x31, 0x41, 0x51, 0x61, 0x71,
+ 0x81, 0x91, 0xa1, 0xb1, 0xc1, 0xd1, 0xe1, 0xf1,
+ 0x02, 0x12, 0x22, 0x32, 0x42, 0x52, 0x62, 0x72,
+ 0x82, 0x92, 0xa2, 0xb2, 0xc2, 0xd2, 0xe2, 0xf2,
+ 0x03, 0x13, 0x23, 0x33, 0x43, 0x53, 0x63, 0x73,
+ 0x83, 0x93, 0xa3, 0xb3, 0xc3, 0xd3, 0xe3, 0xf3,
+ 0x04, 0x14, 0x24, 0x34, 0x44, 0x54, 0x64, 0x74,
+ 0x84, 0x94, 0xa4, 0xb4, 0xc4, 0xd4, 0xe4, 0xf4,
+ 0x05, 0x15, 0x25, 0x35, 0x45, 0x55, 0x65, 0x75,
+ 0x85, 0x95, 0xa5, 0xb5, 0xc5, 0xd5, 0xe5, 0xf5,
+ 0x06, 0x16, 0x26, 0x36, 0x46, 0x56, 0x66, 0x76,
+ 0x86, 0x96, 0xa6, 0xb6, 0xc6, 0xd6, 0xe6, 0xf6,
+ 0x07, 0x17, 0x27, 0x37, 0x47, 0x57, 0x67, 0x77,
+ 0x87, 0x97, 0xa7, 0xb7, 0xc7, 0xd7, 0xe7, 0xf7,
+ 0x08, 0x18, 0x28, 0x38, 0x48, 0x58, 0x68, 0x78,
+ 0x88, 0x98, 0xa8, 0xb8, 0xc8, 0xd8, 0xe8, 0xf8,
+ 0x09, 0x19, 0x29, 0x39, 0x49, 0x59, 0x69, 0x79,
+ 0x89, 0x99, 0xa9, 0xb9, 0xc9, 0xd9, 0xe9, 0xf9,
+ 0x0a, 0x1a, 0x2a, 0x3a, 0x4a, 0x5a, 0x6a, 0x7a,
+ 0x8a, 0x9a, 0xaa, 0xba, 0xca, 0xda, 0xea, 0xfa,
+ 0x0b, 0x1b, 0x2b, 0x3b, 0x4b, 0x5b, 0x6b, 0x7b,
+ 0x8b, 0x9b, 0xab, 0xbb, 0xcb, 0xdb, 0xeb, 0xfb,
+ 0x0c, 0x1c, 0x2c, 0x3c, 0x4c, 0x5c, 0x6c, 0x7c,
+ 0x8c, 0x9c, 0xac, 0xbc, 0xcc, 0xdc, 0xec, 0xfc,
+ 0x0d, 0x1d, 0x2d, 0x3d, 0x4d, 0x5d, 0x6d, 0x7d,
+ 0x8d, 0x9d, 0xad, 0xbd, 0xcd, 0xdd, 0xed, 0xfd,
+ 0x0e, 0x1e, 0x2e, 0x3e, 0x4e, 0x5e, 0x6e, 0x7e,
+ 0x8e, 0x9e, 0xae, 0xbe, 0xce, 0xde, 0xee, 0xfe,
+ 0x0f, 0x1f, 0x2f, 0x3f, 0x4f, 0x5f, 0x6f, 0x7f,
+ 0x8f, 0x9f, 0xaf, 0xbf, 0xcf, 0xdf, 0xef, 0xff
+};
+
+int
+_XReverse_Bytes(
+ register unsigned char *bpt,
+ register int nb)
+{
+ do {
+ *bpt = _reverse_byte[*bpt];
+ bpt++;
+ } while (--nb > 0);
+ return 0;
+}
+
+
+/* XXX the following functions are declared int instead of void because various
+ * compilers and lints complain about later initialization of SwapFunc and/or
+ * (swapfunc == NoSwap) when void is used.
+ */
+
+/*ARGSUSED*/
+static void
+NoSwap (
+ register unsigned char *src,
+ register unsigned char *dest,
+ long srclen,
+ long srcinc,
+ long destinc,
+ unsigned int height,
+ int half_order)
+{
+ long h = height;
+
+ if (srcinc == destinc)
+ memcpy((char *)dest, (char *)src, (int)(srcinc * (h - 1) + srclen));
+ else
+ for (; --h >= 0; src += srcinc, dest += destinc)
+ memcpy((char *)dest, (char *)src, (int)srclen);
+}
+
+static void
+SwapTwoBytes (
+ register unsigned char *src,
+ register unsigned char *dest,
+ long srclen, long srcinc, long destinc,
+ unsigned int height,
+ int half_order)
+{
+ long length = ROUNDUP(srclen, 2);
+ register long h, n;
+
+ srcinc -= length;
+ destinc -= length;
+ for (h = height; --h >= 0; src += srcinc, dest += destinc) {
+ if ((h == 0) && (srclen != length)) {
+ length -= 2;
+ if (half_order == MSBFirst)
+ *(dest + length) = *(src + length + 1);
+ else
+ *(dest + length + 1) = *(src + length);
+ }
+ for (n = length; n > 0; n -= 2, src += 2) {
+ *dest++ = *(src + 1);
+ *dest++ = *src;
+ }
+ }
+}
+
+static void
+SwapThreeBytes (
+ register unsigned char *src,
+ register unsigned char *dest,
+ long srclen, long srcinc, long destinc,
+ unsigned int height,
+ int byte_order)
+{
+ long length = ((srclen + 2) / 3) * 3;
+ register long h, n;
+
+ srcinc -= length;
+ destinc -= length;
+ for (h = height; --h >= 0; src += srcinc, dest += destinc) {
+ if ((h == 0) && (srclen != length)) {
+ length -= 3;
+ if ((srclen - length) == 2)
+ *(dest + length + 1) = *(src + length + 1);
+ if (byte_order == MSBFirst)
+ *(dest + length) = *(src + length + 2);
+ else
+ *(dest + length + 2) = *(src + length);
+ }
+ for (n = length; n > 0; n -= 3, src += 3) {
+ *dest++ = *(src + 2);
+ *dest++ = *(src + 1);
+ *dest++ = *src;
+ }
+ }
+}
+
+static void
+SwapFourBytes (
+ register unsigned char *src,
+ register unsigned char *dest,
+ long srclen, long srcinc, long destinc,
+ unsigned int height,
+ int half_order)
+{
+ long length = ROUNDUP(srclen, 4);
+ register long h, n;
+
+ srcinc -= length;
+ destinc -= length;
+ for (h = height; --h >= 0; src += srcinc, dest += destinc) {
+ if ((h == 0) && (srclen != length)) {
+ length -= 4;
+ if (half_order == MSBFirst)
+ *(dest + length) = *(src + length + 3);
+ if (((half_order == LSBFirst) && ((srclen - length) == 3)) ||
+ ((half_order == MSBFirst) && (srclen & 2)))
+ *(dest + length + 1) = *(src + length + 2);
+ if (((half_order == MSBFirst) && ((srclen - length) == 3)) ||
+ ((half_order == LSBFirst) && (srclen & 2)))
+ *(dest + length + 2) = *(src + length + 1);
+ if (half_order == LSBFirst)
+ *(dest + length + 3) = *(src + length);
+ }
+ for (n = length; n > 0; n -= 4, src += 4) {
+ *dest++ = *(src + 3);
+ *dest++ = *(src + 2);
+ *dest++ = *(src + 1);
+ *dest++ = *src;
+ }
+ }
+}
+
+static void
+SwapWords (
+ register unsigned char *src,
+ register unsigned char *dest,
+ long srclen, long srcinc, long destinc,
+ unsigned int height,
+ int half_order)
+{
+ long length = ROUNDUP(srclen, 4);
+ register long h, n;
+
+ srcinc -= length;
+ destinc -= length;
+ for (h = height; --h >= 0; src += srcinc, dest += destinc) {
+ if ((h == 0) && (srclen != length)) {
+ length -= 4;
+ if (half_order == MSBFirst)
+ *(dest + length + 1) = *(src + length + 3);
+ if (((half_order == LSBFirst) && ((srclen - length) == 3)) ||
+ ((half_order == MSBFirst) && (srclen & 2)))
+ *(dest + length) = *(src + length + 2);
+ if (((half_order == MSBFirst) && ((srclen - length) == 3)) ||
+ ((half_order == LSBFirst) && (srclen & 2)))
+ *(dest + length + 3) = *(src + length + 1);
+ if (half_order == LSBFirst)
+ *(dest + length + 2) = *(src + length);
+ }
+ for (n = length; n > 0; n -= 4, src += 2) {
+ *dest++ = *(src + 2);
+ *dest++ = *(src + 3);
+ *dest++ = *src++;
+ *dest++ = *src++;
+ }
+ }
+}
+
+static void
+SwapNibbles(
+ register unsigned char *src,
+ register unsigned char *dest,
+ long srclen, long srcinc, long destinc,
+ unsigned int height)
+{
+ register long h, n;
+ register const unsigned char *rev = _reverse_nibs;
+
+ srcinc -= srclen;
+ destinc -= srclen;
+ for (h = height; --h >= 0; src += srcinc, dest += destinc)
+ for (n = srclen; --n >= 0; )
+ *dest++ = rev[*src++];
+}
+
+static void
+ShiftNibblesLeft (
+ register unsigned char *src,
+ register unsigned char *dest,
+ long srclen, long srcinc, long destinc,
+ unsigned int height,
+ int nibble_order)
+{
+ register long h, n;
+ register unsigned char c1, c2;
+
+ srcinc -= srclen;
+ destinc -= srclen;
+ if (nibble_order == MSBFirst) {
+ for (h = height; --h >= 0; src += srcinc, dest += destinc)
+ for (n = srclen; --n >= 0; ) {
+ c1 = *src++;
+ c2 = *src;
+ *dest++ = ((c1 & 0x0f) << 4) | ((c2 & (unsigned)0xf0) >> 4);
+ }
+ } else {
+ for (h = height; --h >= 0; src += srcinc, dest += destinc)
+ for (n = srclen; --n >= 0; ) {
+ c1 = *src++;
+ c2 = *src;
+ *dest++ = ((c2 & 0x0f) << 4) | ((c1 & (unsigned)0xf0) >> 4);
+ }
+ }
+}
+
+/*ARGSUSED*/
+static void
+SwapBits(
+ register unsigned char *src,
+ register unsigned char *dest,
+ long srclen, long srcinc, long destinc,
+ unsigned int height,
+ int half_order)
+{
+ register long h, n;
+ register const unsigned char *rev = _reverse_byte;
+
+ srcinc -= srclen;
+ destinc -= srclen;
+ for (h = height; --h >= 0; src += srcinc, dest += destinc)
+ for (n = srclen; --n >= 0; )
+ *dest++ = rev[*src++];
+}
+
+static void
+SwapBitsAndTwoBytes(
+ register unsigned char *src,
+ register unsigned char *dest,
+ long srclen, long srcinc, long destinc,
+ unsigned int height,
+ int half_order)
+{
+ long length = ROUNDUP(srclen, 2);
+ register long h, n;
+ register const unsigned char *rev = _reverse_byte;
+
+ srcinc -= length;
+ destinc -= length;
+ for (h = height; --h >= 0; src += srcinc, dest += destinc) {
+ if ((h == 0) && (srclen != length)) {
+ length -= 2;
+ if (half_order == MSBFirst)
+ *(dest + length) = rev[*(src + length + 1)];
+ else
+ *(dest + length + 1) = rev[*(src + length)];
+ }
+ for (n = length; n > 0; n -= 2, src += 2) {
+ *dest++ = rev[*(src + 1)];
+ *dest++ = rev[*src];
+ }
+ }
+}
+
+static void
+SwapBitsAndFourBytes(
+ register unsigned char *src,
+ register unsigned char *dest,
+ long srclen, long srcinc, long destinc,
+ unsigned int height,
+ int half_order)
+{
+ long length = ROUNDUP(srclen, 4);
+ register long h, n;
+ register const unsigned char *rev = _reverse_byte;
+
+ srcinc -= length;
+ destinc -= length;
+ for (h = height; --h >= 0; src += srcinc, dest += destinc) {
+ if ((h == 0) && (srclen != length)) {
+ length -= 4;
+ if (half_order == MSBFirst)
+ *(dest + length) = rev[*(src + length + 3)];
+ if (((half_order == LSBFirst) && ((srclen - length) == 3)) ||
+ ((half_order == MSBFirst) && (srclen & 2)))
+ *(dest + length + 1) = rev[*(src + length + 2)];
+ if (((half_order == MSBFirst) && ((srclen - length) == 3)) ||
+ ((half_order == LSBFirst) && (srclen & 2)))
+ *(dest + length + 2) = rev[*(src + length + 1)];
+ if (half_order == LSBFirst)
+ *(dest + length + 3) = rev[*(src + length)];
+ }
+ for (n = length; n > 0; n -= 4, src += 4) {
+ *dest++ = rev[*(src + 3)];
+ *dest++ = rev[*(src + 2)];
+ *dest++ = rev[*(src + 1)];
+ *dest++ = rev[*src];
+ }
+ }
+}
+
+static void
+SwapBitsAndWords(
+ register unsigned char *src,
+ register unsigned char *dest,
+ long srclen, long srcinc, long destinc,
+ unsigned int height,
+ int half_order)
+{
+ long length = ROUNDUP(srclen, 4);
+ register long h, n;
+ register const unsigned char *rev = _reverse_byte;
+
+ srcinc -= length;
+ destinc -= length;
+ for (h = height; --h >= 0; src += srcinc, dest += destinc) {
+ if ((h == 0) && (srclen != length)) {
+ length -= 4;
+ if (half_order == MSBFirst)
+ *(dest + length + 1) = rev[*(src + length + 3)];
+ if (((half_order == LSBFirst) && ((srclen - length) == 3)) ||
+ ((half_order == MSBFirst) && (srclen & 2)))
+ *(dest + length) = rev[*(src + length + 2)];
+ if (((half_order == MSBFirst) && ((srclen - length) == 3)) ||
+ ((half_order == LSBFirst) && (srclen & 2)))
+ *(dest + length + 3) = rev[*(src + length + 1)];
+ if (half_order == LSBFirst)
+ *(dest + length + 2) = rev[*(src + length)];
+ }
+ for (n = length; n > 0; n -= 4, src += 2) {
+ *dest++ = rev[*(src + 2)];
+ *dest++ = rev[*(src + 3)];
+ *dest++ = rev[*src++];
+ *dest++ = rev[*src++];
+ }
+ }
+}
+
+/*
+
+The following table gives the bit ordering within bytes (when accessed
+sequentially) for a scanline containing 32 bits, with bits numbered 0 to
+31, where bit 0 should be leftmost on the display. For a given byte
+labelled A-B, A is for the most significant bit of the byte, and B is
+for the least significant bit.
+
+legend:
+ 1 scanline-unit = 8
+ 2 scanline-unit = 16
+ 4 scanline-unit = 32
+ M byte-order = MostSignificant
+ L byte-order = LeastSignificant
+ m bit-order = MostSignificant
+ l bit-order = LeastSignificant
+
+
+format ordering
+
+1Mm 00-07 08-15 16-23 24-31
+2Mm 00-07 08-15 16-23 24-31
+4Mm 00-07 08-15 16-23 24-31
+1Ml 07-00 15-08 23-16 31-24
+2Ml 15-08 07-00 31-24 23-16
+4Ml 31-24 23-16 15-08 07-00
+1Lm 00-07 08-15 16-23 24-31
+2Lm 08-15 00-07 24-31 16-23
+4Lm 24-31 16-23 08-15 00-07
+1Ll 07-00 15-08 23-16 31-24
+2Ll 07-00 15-08 23-16 31-24
+4Ll 07-00 15-08 23-16 31-24
+
+
+The following table gives the required conversion between any two
+formats. It is based strictly on the table above. If you believe one,
+you should believe the other.
+
+legend:
+ n no changes
+ s reverse 8-bit units within 16-bit units
+ l reverse 8-bit units within 32-bit units
+ w reverse 16-bit units within 32-bit units
+ R reverse bits within 8-bit units
+ S s+R
+ L l+R
+ W w+R
+
+*/
+
+static void (* RConst (SwapFunction[12][12]))(
+ register unsigned char *src,
+ register unsigned char *dest,
+ long srclen,
+ long srcinc,
+ long destinc,
+ unsigned int height,
+ int half_order) = {
+#define n NoSwap,
+#define s SwapTwoBytes,
+#define l SwapFourBytes,
+#define w SwapWords,
+#define R SwapBits,
+#define S SwapBitsAndTwoBytes,
+#define L SwapBitsAndFourBytes,
+#define W SwapBitsAndWords,
+
+/* 1Mm 2Mm 4Mm 1Ml 2Ml 4Ml 1Lm 2Lm 4Lm 1Ll 2Ll 4Ll */
+/* 1Mm */ { n n n R S L n s l R R R },
+/* 2Mm */ { n n n R S L n s l R R R },
+/* 4Mm */ { n n n R S L n s l R R R },
+/* 1Ml */ { R R R n s l R S L n n n },
+/* 2Ml */ { S S S s n w S R W s s s },
+/* 4Ml */ { L L L l w n L W R l l l },
+/* 1Lm */ { n n n R S L n s l R R R },
+/* 2Lm */ { s s s S R W s n w S S S },
+/* 4Lm */ { l l l L W R l w n L L L },
+/* 1Ll */ { R R R n s l R S L n n n },
+/* 2Ll */ { R R R n s l R S L n n n },
+/* 4Ll */ { R R R n s l R S L n n n }
+
+#undef n
+#undef s
+#undef l
+#undef w
+#undef R
+#undef S
+#undef L
+#undef W
+
+};
+
+/* Of course, the table above is a lie. We also need to factor in the
+ * order of the source data to cope with swapping half of a unit at the
+ * end of a scanline, since we are trying to avoid de-ref'ing off the
+ * end of the source.
+ *
+ * Defines whether the first half of a unit has the first half of the data
+ */
+static int const HalfOrder[12] = {
+ LSBFirst, /* 1Mm */
+ LSBFirst, /* 2Mm */
+ LSBFirst, /* 4Mm */
+ LSBFirst, /* 1Ml */
+ MSBFirst, /* 2Ml */
+ MSBFirst, /* 4Ml */
+ LSBFirst, /* 1Lm */
+ MSBFirst, /* 2Lm */
+ MSBFirst, /* 4Lm */
+ LSBFirst, /* 1Ll */
+ LSBFirst, /* 2Ll */
+ LSBFirst /* 4Ll */
+ };
+
+/* Finally, for SwapWords cases, the half order depends not just on the source
+ * but also on the destination scanline unit. Use of this table changes some
+ * MSBFirsts to LSBFirsts that are "do not care" (because the function will be
+ * NoSwap or SwapBits) in addition to changing the desired ones.
+ */
+
+static int const HalfOrderWord[12] = {
+ MSBFirst, /* 1Mm */
+ MSBFirst, /* 2Mm */
+ MSBFirst, /* 4Mm */
+ MSBFirst, /* 1Ml */
+ MSBFirst, /* 2Ml */
+ LSBFirst, /* 4Ml */
+ MSBFirst, /* 1Lm */
+ MSBFirst, /* 2Lm */
+ LSBFirst, /* 4Lm */
+ MSBFirst, /* 1Ll */
+ MSBFirst, /* 2Ll */
+ MSBFirst /* 4Ll */
+ };
+
+/*
+ * This macro creates a value from 0 to 11 suitable for indexing
+ * into the table above.
+ */
+#define ComposeIndex(bitmap_unit, bitmap_bit_order, byte_order) \
+ (((bitmap_unit == 32) ? 2 : ((bitmap_unit == 16) ? 1 : 0)) \
+ + (((bitmap_bit_order == MSBFirst) ? 0 : 3) \
+ + ((byte_order == MSBFirst) ? 0 : 6)))
+
+/* Cancel a GetReq operation, before doing _XSend or Data */
+
+#if (defined(__STDC__) && !defined(UNIXCPP)) || defined(ANSICPP)
+#define UnGetReq(name)\
+ dpy->bufptr -= SIZEOF(x##name##Req);\
+ dpy->request--
+#else
+#define UnGetReq(name)\
+ dpy->bufptr -= SIZEOF(x/**/name/**/Req);\
+ dpy->request--
+#endif
+
+static void
+SendXYImage(
+ register Display *dpy,
+ register xPutImageReq *req,
+ register XImage *image,
+ int req_xoffset, int req_yoffset)
+{
+ register int j;
+ long total_xoffset, bytes_per_src, bytes_per_dest, length;
+ long bytes_per_line, bytes_per_src_plane, bytes_per_dest_plane;
+ char *src, *dest, *buf;
+ char *extra = (char *)NULL;
+ register void (*swapfunc)(
+ register unsigned char *src,
+ register unsigned char *dest,
+ long srclen,
+ long srcinc,
+ long destinc,
+ unsigned int height,
+ int half_order);
+ int half_order;
+
+ total_xoffset = image->xoffset + req_xoffset;
+ req->leftPad = total_xoffset & (dpy->bitmap_unit - 1);
+ total_xoffset = (unsigned)(total_xoffset - req->leftPad) >> 3;
+ /* The protocol requires left-pad of zero on all ZPixmap, even
+ * though the 1-bit case is identical to bitmap format. This is a
+ * bug in the protocol, caused because 1-bit ZPixmap was added late
+ * in the game. Hairy shifting code compensation isn't worth it,
+ * just use XYPixmap format instead.
+ */
+ if ((req->leftPad != 0) && (req->format == ZPixmap))
+ req->format = XYPixmap;
+ bytes_per_dest = (unsigned long)ROUNDUP((long)req->width + req->leftPad,
+ dpy->bitmap_pad) >> 3;
+ bytes_per_dest_plane = bytes_per_dest * req->height;
+ length = bytes_per_dest_plane * image->depth;
+ req->length += (length + 3) >> 2;
+
+ swapfunc = SwapFunction[ComposeIndex(image->bitmap_unit,
+ image->bitmap_bit_order,
+ image->byte_order)]
+ [ComposeIndex(dpy->bitmap_unit,
+ dpy->bitmap_bit_order,
+ dpy->byte_order)];
+ half_order = HalfOrder[ComposeIndex(image->bitmap_unit,
+ image->bitmap_bit_order,
+ image->byte_order)];
+ if (half_order == MSBFirst)
+ half_order = HalfOrderWord[ComposeIndex(dpy->bitmap_unit,
+ dpy->bitmap_bit_order,
+ dpy->byte_order)];
+
+ src = image->data + (image->bytes_per_line * req_yoffset) + total_xoffset;
+
+ /* when total_xoffset > 0, we have to worry about stepping off the
+ * end of image->data.
+ */
+ if ((swapfunc == NoSwap) &&
+ (image->bytes_per_line == bytes_per_dest) &&
+ (((total_xoffset == 0) &&
+ ((image->depth == 1) || (image->height == req->height))) ||
+ ((image->depth == 1) &&
+ ((req_yoffset + req->height) < (unsigned)image->height)))) {
+ Data(dpy, src, length);
+ return;
+ }
+
+ length = ROUNDUP(length, 4);
+ if ((dpy->bufptr + length) > dpy->bufmax) {
+ if ((buf = _XAllocScratch(dpy, (unsigned long) (length))) == NULL) {
+ UnGetReq(PutImage);
+ return;
+ }
+ }
+ else
+ buf = dpy->bufptr;
+
+ bytes_per_src = (req->width + req->leftPad + (unsigned)7) >> 3;
+ bytes_per_line = image->bytes_per_line;
+ bytes_per_src_plane = bytes_per_line * image->height;
+ total_xoffset &= (image->bitmap_unit - 1) >> 3;
+
+ if ((total_xoffset > 0) &&
+ (image->byte_order != image->bitmap_bit_order)) {
+ char *temp;
+ long bytes_per_temp_plane, temp_length;
+
+ bytes_per_line = bytes_per_src + total_xoffset;
+ src -= total_xoffset;
+ bytes_per_temp_plane = bytes_per_line * req->height;
+ temp_length = ROUNDUP(bytes_per_temp_plane * image->depth, 4);
+ if (buf == dpy->bufptr) {
+ if (! (temp = _XAllocScratch(dpy, (unsigned long) temp_length))) {
+ UnGetReq(PutImage);
+ return;
+ }
+ }
+ else
+ if ((extra = temp = Xmalloc((unsigned) temp_length)) == NULL) {
+ UnGetReq(PutImage);
+ return;
+ }
+
+ swapfunc = SwapFunction[ComposeIndex(image->bitmap_unit,
+ image->bitmap_bit_order,
+ image->byte_order)]
+ [ComposeIndex(image->bitmap_unit,
+ dpy->byte_order,
+ dpy->byte_order)];
+ for (dest = temp, j = image->depth;
+ --j >= 0;
+ src += bytes_per_src_plane, dest += bytes_per_temp_plane)
+ (*swapfunc)((unsigned char *)src, (unsigned char *)dest,
+ bytes_per_line, (long)image->bytes_per_line,
+ bytes_per_line, req->height, half_order);
+ swapfunc = SwapFunction[ComposeIndex(image->bitmap_unit,
+ dpy->byte_order,
+ dpy->byte_order)]
+ [ComposeIndex(dpy->bitmap_unit,
+ dpy->bitmap_bit_order,
+ dpy->byte_order)];
+ half_order = HalfOrder[ComposeIndex(image->bitmap_unit,
+ dpy->byte_order,
+ dpy->byte_order)];
+ src = temp + total_xoffset;
+ bytes_per_src_plane = bytes_per_temp_plane;
+ }
+
+ for (dest = buf, j = image->depth;
+ --j >= 0;
+ src += bytes_per_src_plane, dest += bytes_per_dest_plane)
+ (*swapfunc)((unsigned char *)src, (unsigned char *)dest,
+ bytes_per_src, bytes_per_line,
+ bytes_per_dest, req->height, half_order);
+
+ if (extra)
+ Xfree(extra);
+
+ if (buf == dpy->bufptr)
+ dpy->bufptr += length;
+ else
+ _XSend(dpy, buf, length);
+ }
+
+static void
+SendZImage(
+ register Display *dpy,
+ register xPutImageReq *req,
+ register XImage *image,
+ int req_xoffset, int req_yoffset,
+ int dest_bits_per_pixel, int dest_scanline_pad)
+{
+ long bytes_per_src, bytes_per_dest, length;
+ unsigned char *src, *dest;
+ unsigned char *shifted_src = NULL;
+
+ req->leftPad = 0;
+ bytes_per_src = ROUNDUP((long)req->width * image->bits_per_pixel, 8) >> 3;
+ bytes_per_dest = ROUNDUP((long)req->width * dest_bits_per_pixel,
+ dest_scanline_pad) >> 3;
+ length = bytes_per_dest * req->height;
+ req->length += (length + 3) >> 2;
+
+ src = (unsigned char *)image->data +
+ (req_yoffset * image->bytes_per_line) +
+ ((req_xoffset * image->bits_per_pixel) >> 3);
+ if ((image->bits_per_pixel == 4) && ((unsigned int) req_xoffset & 0x01)) {
+ if (! (shifted_src = (unsigned char *)
+ Xmalloc((unsigned) (req->height * image->bytes_per_line)))) {
+ UnGetReq(PutImage);
+ return;
+ }
+
+ ShiftNibblesLeft(src, shifted_src, bytes_per_src,
+ (long) image->bytes_per_line,
+ (long) image->bytes_per_line, req->height,
+ image->byte_order);
+ src = shifted_src;
+ }
+
+ /* when req_xoffset > 0, we have to worry about stepping off the
+ * end of image->data.
+ */
+ if (((image->byte_order == dpy->byte_order) ||
+ (image->bits_per_pixel == 8)) &&
+ ((long)image->bytes_per_line == bytes_per_dest) &&
+ ((req_xoffset == 0) ||
+ ((req_yoffset + req->height) < (unsigned)image->height))) {
+ Data(dpy, (char *)src, length);
+ if (shifted_src)
+ Xfree((char *)shifted_src);
+ return;
+ }
+
+ length = ROUNDUP(length, 4);
+ if ((dpy->bufptr + length) <= dpy->bufmax)
+ dest = (unsigned char *)dpy->bufptr;
+ else
+ if ((dest = (unsigned char *)
+ _XAllocScratch(dpy, (unsigned long)(length))) == NULL) {
+ if (shifted_src) Xfree((char *) shifted_src);
+ UnGetReq(PutImage);
+ return;
+ }
+
+ if ((image->byte_order == dpy->byte_order) ||
+ (image->bits_per_pixel == 8))
+ NoSwap(src, dest, bytes_per_src, (long)image->bytes_per_line,
+ bytes_per_dest, req->height, image->byte_order);
+ else if (image->bits_per_pixel == 32)
+ SwapFourBytes(src, dest, bytes_per_src, (long)image->bytes_per_line,
+ bytes_per_dest, req->height, image->byte_order);
+ else if (image->bits_per_pixel == 24)
+ SwapThreeBytes(src, dest, bytes_per_src, (long)image->bytes_per_line,
+ bytes_per_dest, req->height, image->byte_order);
+ else if (image->bits_per_pixel == 16)
+ SwapTwoBytes(src, dest, bytes_per_src, (long)image->bytes_per_line,
+ bytes_per_dest, req->height, image->byte_order);
+ else
+ SwapNibbles(src, dest, bytes_per_src, (long)image->bytes_per_line,
+ bytes_per_dest, req->height);
+
+ if (dest == (unsigned char *)dpy->bufptr)
+ dpy->bufptr += length;
+ else
+ _XSend(dpy, (char *)dest, length);
+
+ if (shifted_src)
+ Xfree((char *)shifted_src);
+}
+
+static void
+PutImageRequest(
+ register Display *dpy,
+ Drawable d,
+ GC gc,
+ register XImage *image,
+ int req_xoffset, int req_yoffset,
+ int x, int y,
+ unsigned int req_width, unsigned int req_height,
+ int dest_bits_per_pixel, int dest_scanline_pad)
+{
+ register xPutImageReq *req;
+
+ GetReq(PutImage, req);
+ req->drawable = d;
+ req->gc = gc->gid;
+ req->dstX = x;
+ req->dstY = y;
+ req->width = req_width;
+ req->height = req_height;
+ req->depth = image->depth;
+ req->format = image->format;
+ if ((image->bits_per_pixel == 1) || (image->format != ZPixmap))
+ SendXYImage(dpy, req, image, req_xoffset, req_yoffset);
+ else
+ SendZImage(dpy, req, image, req_xoffset, req_yoffset,
+ dest_bits_per_pixel, dest_scanline_pad);
+}
+
+static void
+PutSubImage (
+ register Display *dpy,
+ Drawable d,
+ GC gc,
+ register XImage *image,
+ int req_xoffset,
+ int req_yoffset,
+ int x, int y,
+ unsigned int req_width,
+ unsigned int req_height,
+ int dest_bits_per_pixel,
+ int dest_scanline_pad)
+{
+ int left_pad, BytesPerRow, Available;
+
+ if ((req_width == 0) || (req_height == 0))
+ return;
+
+ Available = ((65536 < dpy->max_request_size) ? (65536 << 2)
+ : (dpy->max_request_size << 2))
+ - SIZEOF(xPutImageReq);
+
+ if ((image->bits_per_pixel == 1) || (image->format != ZPixmap)) {
+ left_pad = (image->xoffset + req_xoffset) & (dpy->bitmap_unit - 1);
+ BytesPerRow = (ROUNDUP((long)req_width + left_pad,
+ dpy->bitmap_pad) >> 3) * image->depth;
+ } else {
+ left_pad = 0;
+ BytesPerRow = ROUNDUP((long)req_width * dest_bits_per_pixel,
+ dest_scanline_pad) >> 3;
+ }
+
+ if ((BytesPerRow * req_height) <= Available) {
+ PutImageRequest(dpy, d, gc, image, req_xoffset, req_yoffset, x, y,
+ req_width, req_height,
+ dest_bits_per_pixel, dest_scanline_pad);
+ } else if (req_height > 1) {
+ int SubImageHeight = Available / BytesPerRow;
+
+ if (SubImageHeight == 0)
+ SubImageHeight = 1;
+
+ PutSubImage(dpy, d, gc, image, req_xoffset, req_yoffset, x, y,
+ req_width, (unsigned int) SubImageHeight,
+ dest_bits_per_pixel, dest_scanline_pad);
+
+ PutSubImage(dpy, d, gc, image, req_xoffset,
+ req_yoffset + SubImageHeight, x, y + SubImageHeight,
+ req_width, req_height - SubImageHeight,
+ dest_bits_per_pixel, dest_scanline_pad);
+ } else {
+ int SubImageWidth = (((Available << 3) / dest_scanline_pad)
+ * dest_scanline_pad) - left_pad;
+
+ PutSubImage(dpy, d, gc, image, req_xoffset, req_yoffset, x, y,
+ (unsigned int) SubImageWidth, 1,
+ dest_bits_per_pixel, dest_scanline_pad);
+
+ PutSubImage(dpy, d, gc, image, req_xoffset + SubImageWidth,
+ req_yoffset, x + SubImageWidth, y,
+ req_width - SubImageWidth, 1,
+ dest_bits_per_pixel, dest_scanline_pad);
+ }
+}
+
+
+int
+XPutImage (
+ register Display *dpy,
+ Drawable d,
+ GC gc,
+ register XImage *image,
+ int req_xoffset,
+ int req_yoffset,
+ int x,
+ int y,
+ unsigned int req_width,
+ unsigned int req_height)
+
+{
+ long width = req_width;
+ long height = req_height;
+ int dest_bits_per_pixel, dest_scanline_pad;
+
+ if (req_xoffset < 0) {
+ width += req_xoffset;
+ req_xoffset = 0;
+ }
+ if (req_yoffset < 0) {
+ height += req_yoffset;
+ req_yoffset = 0;
+ }
+ if ((req_xoffset + width) > image->width)
+ width = image->width - req_xoffset;
+ if ((req_yoffset + height) > image->height)
+ height = image->height - req_yoffset;
+ if ((width <= 0) || (height <= 0))
+ return 0;
+
+ if ((image->bits_per_pixel == 1) || (image->format != ZPixmap)) {
+ dest_bits_per_pixel = 1;
+ dest_scanline_pad = dpy->bitmap_pad;
+ } else {
+ register int n;
+ register ScreenFormat *format;
+
+ dest_bits_per_pixel = image->bits_per_pixel;
+ dest_scanline_pad = image->bitmap_pad;
+ for (n = dpy->nformats, format = dpy->pixmap_format; --n >= 0; format++)
+ if (format->depth == image->depth) {
+ dest_bits_per_pixel = format->bits_per_pixel;
+ dest_scanline_pad = format->scanline_pad;
+ }
+ if (dest_bits_per_pixel != image->bits_per_pixel) {
+ XImage img;
+ register long i, j;
+ /* XXX slow, but works */
+ img.width = width;
+ img.height = height;
+ img.xoffset = 0;
+ img.format = ZPixmap;
+ img.byte_order = dpy->byte_order;
+ img.bitmap_unit = dpy->bitmap_unit;
+ img.bitmap_bit_order = dpy->bitmap_bit_order;
+ img.bitmap_pad = dest_scanline_pad;
+ img.depth = image->depth;
+ img.bits_per_pixel = dest_bits_per_pixel;
+ img.bytes_per_line = ROUNDUP((dest_bits_per_pixel * width),
+ dest_scanline_pad) >> 3;
+ img.data = Xmalloc((unsigned) (img.bytes_per_line * height));
+ if (img.data == NULL)
+ return 0;
+ _XInitImageFuncPtrs(&img);
+ for (j = height; --j >= 0; )
+ for (i = width; --i >= 0; )
+ XPutPixel(&img, i, j, XGetPixel(image, req_xoffset + i,
+ req_yoffset + j));
+ LockDisplay(dpy);
+ FlushGC(dpy, gc);
+ PutSubImage(dpy, d, gc, &img, 0, 0, x, y,
+ (unsigned int) width, (unsigned int) height,
+ dest_bits_per_pixel, dest_scanline_pad);
+ UnlockDisplay(dpy);
+ SyncHandle();
+ Xfree(img.data);
+ return 0;
+ }
+ }
+
+ LockDisplay(dpy);
+ FlushGC(dpy, gc);
+
+ PutSubImage(dpy, d, gc, image, req_xoffset, req_yoffset, x, y,
+ (unsigned int) width, (unsigned int) height,
+ dest_bits_per_pixel, dest_scanline_pad);
+
+ UnlockDisplay(dpy);
+ SyncHandle();
+#ifdef USE_DYNAMIC_XCURSOR
+ if (image->bits_per_pixel == 1 &&
+ x == 0 && y == 0 &&
+ width == image->width && height == image->height &&
+ gc->values.function == GXcopy &&
+ (gc->values.plane_mask & 1))
+ {
+ _XNoticePutBitmap (dpy, d, image);
+ }
+#endif
+ return 0;
+}
diff --git a/libX11/src/QuBest.c b/libX11/src/QuBest.c
index 15e4c0b23..97b1f116b 100644
--- a/libX11/src/QuBest.c
+++ b/libX11/src/QuBest.c
@@ -1,61 +1,61 @@
-/*
-
-Copyright 1986, 1998 The Open Group
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall not be
-used in advertising or otherwise to promote the sale, use or other dealings
-in this Software without prior written authorization from The Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-
-Status XQueryBestSize(
- register Display *dpy,
- int class,
- Drawable drawable,
- unsigned int width,
- unsigned int height,
- unsigned int *ret_width,
- unsigned int *ret_height)
-{
- xQueryBestSizeReply rep;
- register xQueryBestSizeReq *req;
-
- LockDisplay(dpy);
- GetReq(QueryBestSize, req);
- req->class = class;
- req->drawable = drawable;
- req->width = width;
- req->height = height;
- if (_XReply (dpy, (xReply *)&rep, 0, xTrue) == 0) {
- UnlockDisplay(dpy);
- SyncHandle();
- return 0;
- }
- *ret_width = rep.width;
- *ret_height = rep.height;
- UnlockDisplay(dpy);
- SyncHandle();
- return 1;
-}
-
+/*
+
+Copyright 1986, 1998 The Open Group
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group shall not be
+used in advertising or otherwise to promote the sale, use or other dealings
+in this Software without prior written authorization from The Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+
+Status XQueryBestSize(
+ register Display *dpy,
+ int class,
+ Drawable drawable,
+ unsigned int width,
+ unsigned int height,
+ unsigned int *ret_width,
+ unsigned int *ret_height)
+{
+ xQueryBestSizeReply rep;
+ register xQueryBestSizeReq *req;
+
+ LockDisplay(dpy);
+ GetReq(QueryBestSize, req);
+ req->class = class;
+ req->drawable = drawable;
+ req->width = width;
+ req->height = height;
+ if (_XReply (dpy, (xReply *)&rep, 0, xTrue) == 0) {
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return 0;
+ }
+ *ret_width = rep.width;
+ *ret_height = rep.height;
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return 1;
+}
+
diff --git a/libX11/src/QuColor.c b/libX11/src/QuColor.c
index a056ba4cc..4638095c0 100644
--- a/libX11/src/QuColor.c
+++ b/libX11/src/QuColor.c
@@ -1,61 +1,61 @@
-/*
-
-Copyright 1986, 1998 The Open Group
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall not be
-used in advertising or otherwise to promote the sale, use or other dealings
-in this Software without prior written authorization from The Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-
-int
-XQueryColor(
- register Display *dpy,
- Colormap cmap,
- XColor *def) /* RETURN */
-{
- xrgb color;
- xQueryColorsReply rep;
- register xQueryColorsReq *req;
- unsigned long val = def->pixel; /* needed for macro below */
-
- LockDisplay(dpy);
- GetReqExtra(QueryColors, 4, req); /* a pixel (CARD32) is 4 bytes */
- req->cmap = cmap;
-
- OneDataCard32 (dpy, NEXTPTR(req,xQueryColorsReq), val);
-
- if (_XReply(dpy, (xReply *) &rep, 0, xFalse) != 0) {
-
- _XRead(dpy, (char *)&color, (long) SIZEOF(xrgb));
-
- def->red = color.red;
- def->blue = color.blue;
- def->green = color.green;
- def->flags = DoRed | DoGreen | DoBlue;
- }
- UnlockDisplay(dpy);
- SyncHandle();
- return 1;
-}
+/*
+
+Copyright 1986, 1998 The Open Group
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group shall not be
+used in advertising or otherwise to promote the sale, use or other dealings
+in this Software without prior written authorization from The Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+
+int
+XQueryColor(
+ register Display *dpy,
+ Colormap cmap,
+ XColor *def) /* RETURN */
+{
+ xrgb color;
+ xQueryColorsReply rep;
+ register xQueryColorsReq *req;
+ unsigned long val = def->pixel; /* needed for macro below */
+
+ LockDisplay(dpy);
+ GetReqExtra(QueryColors, 4, req); /* a pixel (CARD32) is 4 bytes */
+ req->cmap = cmap;
+
+ OneDataCard32 (dpy, NEXTPTR(req,xQueryColorsReq), val);
+
+ if (_XReply(dpy, (xReply *) &rep, 0, xFalse) != 0) {
+
+ _XRead(dpy, (char *)&color, (long) SIZEOF(xrgb));
+
+ def->red = color.red;
+ def->blue = color.blue;
+ def->green = color.green;
+ def->flags = DoRed | DoGreen | DoBlue;
+ }
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return 1;
+}
diff --git a/libX11/src/QuCurShp.c b/libX11/src/QuCurShp.c
index 8b5cbfaed..bb17c42fc 100644
--- a/libX11/src/QuCurShp.c
+++ b/libX11/src/QuCurShp.c
@@ -1,60 +1,60 @@
-/*
-
-Copyright 1986, 1998 The Open Group
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall not be
-used in advertising or otherwise to promote the sale, use or other dealings
-in this Software without prior written authorization from The Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-
-Status XQueryBestCursor(
- register Display *dpy,
- Drawable drawable,
- unsigned int width,
- unsigned int height,
- unsigned int *ret_width,
- unsigned int *ret_height)
-{
- xQueryBestSizeReply rep;
- register xQueryBestSizeReq *req;
-
- LockDisplay(dpy);
- GetReq(QueryBestSize, req);
- req->class = CursorShape;
- req->drawable = drawable;
- req->width = width;
- req->height = height;
- if (_XReply (dpy, (xReply *)&rep, 0, xTrue) == 0) {
- UnlockDisplay(dpy);
- SyncHandle();
- return 0;
- }
- *ret_width = rep.width;
- *ret_height = rep.height;
- UnlockDisplay(dpy);
- SyncHandle();
- return 1;
-}
-
+/*
+
+Copyright 1986, 1998 The Open Group
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group shall not be
+used in advertising or otherwise to promote the sale, use or other dealings
+in this Software without prior written authorization from The Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+
+Status XQueryBestCursor(
+ register Display *dpy,
+ Drawable drawable,
+ unsigned int width,
+ unsigned int height,
+ unsigned int *ret_width,
+ unsigned int *ret_height)
+{
+ xQueryBestSizeReply rep;
+ register xQueryBestSizeReq *req;
+
+ LockDisplay(dpy);
+ GetReq(QueryBestSize, req);
+ req->class = CursorShape;
+ req->drawable = drawable;
+ req->width = width;
+ req->height = height;
+ if (_XReply (dpy, (xReply *)&rep, 0, xTrue) == 0) {
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return 0;
+ }
+ *ret_width = rep.width;
+ *ret_height = rep.height;
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return 1;
+}
+
diff --git a/libX11/src/QuExt.c b/libX11/src/QuExt.c
index 190e8b1f5..4e230e776 100644
--- a/libX11/src/QuExt.c
+++ b/libX11/src/QuExt.c
@@ -1,56 +1,56 @@
-/*
-
-Copyright 1986, 1998 The Open Group
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall not be
-used in advertising or otherwise to promote the sale, use or other dealings
-in this Software without prior written authorization from The Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-
-Bool
-XQueryExtension(
- register Display *dpy,
- _Xconst char *name,
- int *major_opcode, /* RETURN */
- int *first_event, /* RETURN */
- int *first_error) /* RETURN */
-{
- xQueryExtensionReply rep;
- register xQueryExtensionReq *req;
-
- LockDisplay(dpy);
- GetReq(QueryExtension, req);
- req->nbytes = name ? strlen(name) : 0;
- req->length += (req->nbytes+(unsigned)3)>>2;
- _XSend(dpy, name, (long)req->nbytes);
- (void) _XReply (dpy, (xReply *)&rep, 0, xTrue);
- *major_opcode = rep.major_opcode;
- *first_event = rep.first_event;
- *first_error = rep.first_error;
- UnlockDisplay(dpy);
- SyncHandle();
- return (rep.present);
-}
-
+/*
+
+Copyright 1986, 1998 The Open Group
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group shall not be
+used in advertising or otherwise to promote the sale, use or other dealings
+in this Software without prior written authorization from The Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+
+Bool
+XQueryExtension(
+ register Display *dpy,
+ _Xconst char *name,
+ int *major_opcode, /* RETURN */
+ int *first_event, /* RETURN */
+ int *first_error) /* RETURN */
+{
+ xQueryExtensionReply rep;
+ register xQueryExtensionReq *req;
+
+ LockDisplay(dpy);
+ GetReq(QueryExtension, req);
+ req->nbytes = name ? strlen(name) : 0;
+ req->length += (req->nbytes+(unsigned)3)>>2;
+ _XSend(dpy, name, (long)req->nbytes);
+ (void) _XReply (dpy, (xReply *)&rep, 0, xTrue);
+ *major_opcode = rep.major_opcode;
+ *first_event = rep.first_event;
+ *first_error = rep.first_error;
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return (rep.present);
+}
+
diff --git a/libX11/src/QuKeybd.c b/libX11/src/QuKeybd.c
index 8f296c285..4b8431d50 100644
--- a/libX11/src/QuKeybd.c
+++ b/libX11/src/QuKeybd.c
@@ -1,53 +1,53 @@
-/*
-
-Copyright 1986, 1998 The Open Group
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall not be
-used in advertising or otherwise to promote the sale, use or other dealings
-in this Software without prior written authorization from The Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-
-struct kmap {
- char map[32];
-};
-
-int
-XQueryKeymap(
- register Display *dpy,
- char keys[32])
-{
- xQueryKeymapReply rep;
- register xReq *req;
-
- LockDisplay(dpy);
- GetEmptyReq(QueryKeymap, req);
- (void) _XReply(dpy, (xReply *)&rep,
- (SIZEOF(xQueryKeymapReply) - SIZEOF(xReply)) >> 2, xTrue);
- *(struct kmap *) keys = *(struct kmap *)rep.map; /* faster than memcpy */
- UnlockDisplay(dpy);
- SyncHandle();
- return 1;
-}
-
+/*
+
+Copyright 1986, 1998 The Open Group
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group shall not be
+used in advertising or otherwise to promote the sale, use or other dealings
+in this Software without prior written authorization from The Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+
+struct kmap {
+ char map[32];
+};
+
+int
+XQueryKeymap(
+ register Display *dpy,
+ char keys[32])
+{
+ xQueryKeymapReply rep;
+ register xReq *req;
+
+ LockDisplay(dpy);
+ GetEmptyReq(QueryKeymap, req);
+ (void) _XReply(dpy, (xReply *)&rep,
+ (SIZEOF(xQueryKeymapReply) - SIZEOF(xReply)) >> 2, xTrue);
+ *(struct kmap *) keys = *(struct kmap *)rep.map; /* faster than memcpy */
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return 1;
+}
+
diff --git a/libX11/src/QuPntr.c b/libX11/src/QuPntr.c
index 17412fc8e..e1379a6f5 100644
--- a/libX11/src/QuPntr.c
+++ b/libX11/src/QuPntr.c
@@ -1,65 +1,65 @@
-/*
-
-Copyright 1986, 1998 The Open Group
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall not be
-used in advertising or otherwise to promote the sale, use or other dealings
-in this Software without prior written authorization from The Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-
-Bool XQueryPointer(
- register Display *dpy,
- Window w,
- Window *root,
- Window *child,
- int *root_x,
- int *root_y,
- int *win_x,
- int *win_y,
- unsigned int *mask)
-{
- xQueryPointerReply rep;
- xResourceReq *req;
-
- LockDisplay(dpy);
- GetResReq(QueryPointer, w, req);
- if (_XReply (dpy, (xReply *)&rep, 0, xTrue) == 0) {
- UnlockDisplay(dpy);
- SyncHandle();
- return(False);
- }
-
- *root = rep.root;
- *child = rep.child;
- *root_x = cvtINT16toInt (rep.rootX);
- *root_y = cvtINT16toInt (rep.rootY);
- *win_x = cvtINT16toInt (rep.winX);
- *win_y = cvtINT16toInt (rep.winY);
- *mask = rep.mask;
- UnlockDisplay(dpy);
- SyncHandle();
- return (rep.sameScreen);
-}
-
+/*
+
+Copyright 1986, 1998 The Open Group
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group shall not be
+used in advertising or otherwise to promote the sale, use or other dealings
+in this Software without prior written authorization from The Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+
+Bool XQueryPointer(
+ register Display *dpy,
+ Window w,
+ Window *root,
+ Window *child,
+ int *root_x,
+ int *root_y,
+ int *win_x,
+ int *win_y,
+ unsigned int *mask)
+{
+ xQueryPointerReply rep;
+ xResourceReq *req;
+
+ LockDisplay(dpy);
+ GetResReq(QueryPointer, w, req);
+ if (_XReply (dpy, (xReply *)&rep, 0, xTrue) == 0) {
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return(False);
+ }
+
+ *root = rep.root;
+ *child = rep.child;
+ *root_x = cvtINT16toInt (rep.rootX);
+ *root_y = cvtINT16toInt (rep.rootY);
+ *win_x = cvtINT16toInt (rep.winX);
+ *win_y = cvtINT16toInt (rep.winY);
+ *mask = rep.mask;
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return (rep.sameScreen);
+}
+
diff --git a/libX11/src/QuStipShp.c b/libX11/src/QuStipShp.c
index 11357e5e1..9f612fcb1 100644
--- a/libX11/src/QuStipShp.c
+++ b/libX11/src/QuStipShp.c
@@ -1,60 +1,60 @@
-/*
-
-Copyright 1986, 1998 The Open Group
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall not be
-used in advertising or otherwise to promote the sale, use or other dealings
-in this Software without prior written authorization from The Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-
-Status XQueryBestStipple(
- register Display *dpy,
- Drawable drawable,
- unsigned int width,
- unsigned int height,
- unsigned int *ret_width,
- unsigned int *ret_height)
-{
- xQueryBestSizeReply rep;
- register xQueryBestSizeReq *req;
-
- LockDisplay(dpy);
- GetReq(QueryBestSize, req);
- req->class = StippleShape;
- req->drawable = drawable;
- req->width = width;
- req->height = height;
- if (_XReply (dpy, (xReply *)&rep, 0, xTrue) == 0) {
- UnlockDisplay(dpy);
- SyncHandle();
- return 0;
- }
- *ret_width = rep.width;
- *ret_height = rep.height;
- UnlockDisplay(dpy);
- SyncHandle();
- return 1;
-}
-
+/*
+
+Copyright 1986, 1998 The Open Group
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group shall not be
+used in advertising or otherwise to promote the sale, use or other dealings
+in this Software without prior written authorization from The Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+
+Status XQueryBestStipple(
+ register Display *dpy,
+ Drawable drawable,
+ unsigned int width,
+ unsigned int height,
+ unsigned int *ret_width,
+ unsigned int *ret_height)
+{
+ xQueryBestSizeReply rep;
+ register xQueryBestSizeReq *req;
+
+ LockDisplay(dpy);
+ GetReq(QueryBestSize, req);
+ req->class = StippleShape;
+ req->drawable = drawable;
+ req->width = width;
+ req->height = height;
+ if (_XReply (dpy, (xReply *)&rep, 0, xTrue) == 0) {
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return 0;
+ }
+ *ret_width = rep.width;
+ *ret_height = rep.height;
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return 1;
+}
+
diff --git a/libX11/src/QuTextE16.c b/libX11/src/QuTextE16.c
index e88d246fa..e458bc52c 100644
--- a/libX11/src/QuTextE16.c
+++ b/libX11/src/QuTextE16.c
@@ -1,81 +1,81 @@
-/*
-
-Copyright 1986, 1987, 1998 The Open Group
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall not be
-used in advertising or otherwise to promote the sale, use or other dealings
-in this Software without prior written authorization from The Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-
-int
-XQueryTextExtents16 (
- register Display *dpy,
- Font fid,
- _Xconst XChar2b *string,
- register int nchars,
- int *dir,
- int *font_ascent,
- int *font_descent,
- register XCharStruct *overall)
-{
- register long i;
- register unsigned char *ptr;
- char *buf;
- xQueryTextExtentsReply rep;
- long nbytes;
- register xQueryTextExtentsReq *req;
-
- LockDisplay(dpy);
- nbytes = nchars << 1;
- GetReq(QueryTextExtents, req);
- req->fid = fid;
- if ((buf = _XAllocScratch (dpy, (unsigned long) nbytes))) {
- req->length += (nbytes + 3)>>2;
- req->oddLength = nchars & 1;
- for (ptr = (unsigned char *)buf, i = nchars; --i >= 0; string++) {
- *ptr++ = string->byte1;
- *ptr++ = string->byte2;
- }
- Data (dpy, buf, nbytes);
- }
- if (!_XReply (dpy, (xReply *)&rep, 0, xTrue) || !buf) {
- UnlockDisplay(dpy);
- SyncHandle();
- return 0;
- }
- *dir = rep.drawDirection;
- *font_ascent = cvtINT16toInt (rep.fontAscent);
- *font_descent = cvtINT16toInt (rep.fontDescent);
- overall->ascent = (short) cvtINT16toShort (rep.overallAscent);
- overall->descent = (short) cvtINT16toShort (rep.overallDescent);
- /* XXX bogus - we're throwing away information!!! */
- overall->width = (short) cvtINT32toInt (rep.overallWidth);
- overall->lbearing = (short) cvtINT32toInt (rep.overallLeft);
- overall->rbearing = (short) cvtINT32toInt (rep.overallRight);
- UnlockDisplay(dpy);
- SyncHandle();
- return 1;
-}
-
+/*
+
+Copyright 1986, 1987, 1998 The Open Group
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group shall not be
+used in advertising or otherwise to promote the sale, use or other dealings
+in this Software without prior written authorization from The Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+
+int
+XQueryTextExtents16 (
+ register Display *dpy,
+ Font fid,
+ _Xconst XChar2b *string,
+ register int nchars,
+ int *dir,
+ int *font_ascent,
+ int *font_descent,
+ register XCharStruct *overall)
+{
+ register long i;
+ register unsigned char *ptr;
+ char *buf;
+ xQueryTextExtentsReply rep;
+ long nbytes;
+ register xQueryTextExtentsReq *req;
+
+ LockDisplay(dpy);
+ nbytes = nchars << 1;
+ GetReq(QueryTextExtents, req);
+ req->fid = fid;
+ if ((buf = _XAllocScratch (dpy, (unsigned long) nbytes))) {
+ req->length += (nbytes + 3)>>2;
+ req->oddLength = nchars & 1;
+ for (ptr = (unsigned char *)buf, i = nchars; --i >= 0; string++) {
+ *ptr++ = string->byte1;
+ *ptr++ = string->byte2;
+ }
+ Data (dpy, buf, nbytes);
+ }
+ if (!_XReply (dpy, (xReply *)&rep, 0, xTrue) || !buf) {
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return 0;
+ }
+ *dir = rep.drawDirection;
+ *font_ascent = cvtINT16toInt (rep.fontAscent);
+ *font_descent = cvtINT16toInt (rep.fontDescent);
+ overall->ascent = (short) cvtINT16toShort (rep.overallAscent);
+ overall->descent = (short) cvtINT16toShort (rep.overallDescent);
+ /* XXX bogus - we're throwing away information!!! */
+ overall->width = (short) cvtINT32toInt (rep.overallWidth);
+ overall->lbearing = (short) cvtINT32toInt (rep.overallLeft);
+ overall->rbearing = (short) cvtINT32toInt (rep.overallRight);
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return 1;
+}
+
diff --git a/libX11/src/QuTextExt.c b/libX11/src/QuTextExt.c
index f5f715f04..8a17dbb27 100644
--- a/libX11/src/QuTextExt.c
+++ b/libX11/src/QuTextExt.c
@@ -1,80 +1,80 @@
-/*
-
-Copyright 1986, 1987, 1998 The Open Group
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall not be
-used in advertising or otherwise to promote the sale, use or other dealings
-in this Software without prior written authorization from The Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-
-int
-XQueryTextExtents (
- register Display *dpy,
- Font fid,
- register _Xconst char *string,
- register int nchars,
- int *dir,
- int *font_ascent,
- int *font_descent,
- register XCharStruct *overall)
-{
- register int i;
- register char *ptr;
- char *buf;
- xQueryTextExtentsReply rep;
- long nbytes;
- register xQueryTextExtentsReq *req;
-
- LockDisplay(dpy);
- nbytes = nchars << 1;
- GetReq(QueryTextExtents, req);
- req->fid = fid;
- if ((buf = _XAllocScratch (dpy, (unsigned long) nbytes))) {
- req->length += (nbytes + 3)>>2;
- req->oddLength = nchars & 1;
- for (ptr = buf, i = nchars; --i >= 0;) {
- *ptr++ = 0;
- *ptr++ = *string++;
- }
- Data (dpy, buf, nbytes);
- }
- if (!_XReply (dpy, (xReply *)&rep, 0, xTrue) || !buf) {
- UnlockDisplay(dpy);
- SyncHandle();
- return 0;
- }
- *dir = rep.drawDirection;
- *font_ascent = cvtINT16toInt (rep.fontAscent);
- *font_descent = cvtINT16toInt (rep.fontDescent);
- overall->ascent = (short) cvtINT16toShort (rep.overallAscent);
- overall->descent = (short) cvtINT16toShort (rep.overallDescent);
- /* XXX bogus - we're throwing away information!!! */
- overall->width = (short) cvtINT32toInt (rep.overallWidth);
- overall->lbearing = (short) cvtINT32toInt (rep.overallLeft);
- overall->rbearing = (short) cvtINT32toInt (rep.overallRight);
- UnlockDisplay(dpy);
- SyncHandle();
- return 1;
-}
+/*
+
+Copyright 1986, 1987, 1998 The Open Group
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group shall not be
+used in advertising or otherwise to promote the sale, use or other dealings
+in this Software without prior written authorization from The Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+
+int
+XQueryTextExtents (
+ register Display *dpy,
+ Font fid,
+ register _Xconst char *string,
+ register int nchars,
+ int *dir,
+ int *font_ascent,
+ int *font_descent,
+ register XCharStruct *overall)
+{
+ register int i;
+ register char *ptr;
+ char *buf;
+ xQueryTextExtentsReply rep;
+ long nbytes;
+ register xQueryTextExtentsReq *req;
+
+ LockDisplay(dpy);
+ nbytes = nchars << 1;
+ GetReq(QueryTextExtents, req);
+ req->fid = fid;
+ if ((buf = _XAllocScratch (dpy, (unsigned long) nbytes))) {
+ req->length += (nbytes + 3)>>2;
+ req->oddLength = nchars & 1;
+ for (ptr = buf, i = nchars; --i >= 0;) {
+ *ptr++ = 0;
+ *ptr++ = *string++;
+ }
+ Data (dpy, buf, nbytes);
+ }
+ if (!_XReply (dpy, (xReply *)&rep, 0, xTrue) || !buf) {
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return 0;
+ }
+ *dir = rep.drawDirection;
+ *font_ascent = cvtINT16toInt (rep.fontAscent);
+ *font_descent = cvtINT16toInt (rep.fontDescent);
+ overall->ascent = (short) cvtINT16toShort (rep.overallAscent);
+ overall->descent = (short) cvtINT16toShort (rep.overallDescent);
+ /* XXX bogus - we're throwing away information!!! */
+ overall->width = (short) cvtINT32toInt (rep.overallWidth);
+ overall->lbearing = (short) cvtINT32toInt (rep.overallLeft);
+ overall->rbearing = (short) cvtINT32toInt (rep.overallRight);
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return 1;
+}
diff --git a/libX11/src/QuTileShp.c b/libX11/src/QuTileShp.c
index 39ccb42fa..f713f4248 100644
--- a/libX11/src/QuTileShp.c
+++ b/libX11/src/QuTileShp.c
@@ -1,61 +1,61 @@
-/*
-
-Copyright 1986, 1998 The Open Group
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall not be
-used in advertising or otherwise to promote the sale, use or other dealings
-in this Software without prior written authorization from The Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-
-Status XQueryBestTile(
- register Display *dpy,
- Drawable drawable,
- unsigned int width,
- unsigned int height,
- unsigned int *ret_width,
- unsigned int *ret_height)
-{
- xQueryBestSizeReply rep;
- register xQueryBestSizeReq *req;
-
- LockDisplay(dpy);
- GetReq(QueryBestSize, req);
- req->class = TileShape;
- req->drawable = drawable;
- req->width = width;
- req->height = height;
- if (_XReply (dpy, (xReply *)&rep, 0, xTrue) == 0) {
- UnlockDisplay(dpy);
- SyncHandle();
- return(0);
- }
-
- *ret_width = rep.width;
- *ret_height = rep.height;
- UnlockDisplay(dpy);
- SyncHandle();
- return 1;
-}
-
+/*
+
+Copyright 1986, 1998 The Open Group
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group shall not be
+used in advertising or otherwise to promote the sale, use or other dealings
+in this Software without prior written authorization from The Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+
+Status XQueryBestTile(
+ register Display *dpy,
+ Drawable drawable,
+ unsigned int width,
+ unsigned int height,
+ unsigned int *ret_width,
+ unsigned int *ret_height)
+{
+ xQueryBestSizeReply rep;
+ register xQueryBestSizeReq *req;
+
+ LockDisplay(dpy);
+ GetReq(QueryBestSize, req);
+ req->class = TileShape;
+ req->drawable = drawable;
+ req->width = width;
+ req->height = height;
+ if (_XReply (dpy, (xReply *)&rep, 0, xTrue) == 0) {
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return(0);
+ }
+
+ *ret_width = rep.width;
+ *ret_height = rep.height;
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return 1;
+}
+
diff --git a/libX11/src/QuTree.c b/libX11/src/QuTree.c
index e95b57bd3..3cea282fa 100644
--- a/libX11/src/QuTree.c
+++ b/libX11/src/QuTree.c
@@ -1,72 +1,72 @@
-/*
-
-Copyright 1986, 1998 The Open Group
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall not be
-used in advertising or otherwise to promote the sale, use or other dealings
-in this Software without prior written authorization from The Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-
-Status XQueryTree (
- register Display *dpy,
- Window w,
- Window *root, /* RETURN */
- Window *parent, /* RETURN */
- Window **children, /* RETURN */
- unsigned int *nchildren) /* RETURN */
-{
- long nbytes;
- xQueryTreeReply rep;
- register xResourceReq *req;
-
- LockDisplay(dpy);
- GetResReq(QueryTree, w, req);
- if (!_XReply(dpy, (xReply *)&rep, 0, xFalse)) {
- UnlockDisplay(dpy);
- SyncHandle();
- return (0);
- }
-
- *children = (Window *) NULL;
- if (rep.nChildren != 0) {
- nbytes = rep.nChildren * sizeof(Window);
- *children = (Window *) Xmalloc((unsigned) nbytes);
- nbytes = rep.nChildren << 2;
- if (! *children) {
- _XEatData(dpy, (unsigned long) nbytes);
- UnlockDisplay(dpy);
- SyncHandle();
- return (0);
- }
- _XRead32 (dpy, (long *) *children, nbytes);
- }
- *parent = rep.parent;
- *root = rep.root;
- *nchildren = rep.nChildren;
- UnlockDisplay(dpy);
- SyncHandle();
- return (1);
-}
-
+/*
+
+Copyright 1986, 1998 The Open Group
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group shall not be
+used in advertising or otherwise to promote the sale, use or other dealings
+in this Software without prior written authorization from The Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+
+Status XQueryTree (
+ register Display *dpy,
+ Window w,
+ Window *root, /* RETURN */
+ Window *parent, /* RETURN */
+ Window **children, /* RETURN */
+ unsigned int *nchildren) /* RETURN */
+{
+ long nbytes;
+ xQueryTreeReply rep;
+ register xResourceReq *req;
+
+ LockDisplay(dpy);
+ GetResReq(QueryTree, w, req);
+ if (!_XReply(dpy, (xReply *)&rep, 0, xFalse)) {
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return (0);
+ }
+
+ *children = (Window *) NULL;
+ if (rep.nChildren != 0) {
+ nbytes = rep.nChildren * sizeof(Window);
+ *children = (Window *) Xmalloc((unsigned) nbytes);
+ nbytes = rep.nChildren << 2;
+ if (! *children) {
+ _XEatData(dpy, (unsigned long) nbytes);
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return (0);
+ }
+ _XRead32 (dpy, (long *) *children, nbytes);
+ }
+ *parent = rep.parent;
+ *root = rep.root;
+ *nchildren = rep.nChildren;
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return (1);
+}
+
diff --git a/libX11/src/RaiseWin.c b/libX11/src/RaiseWin.c
index 079439f2f..f431db579 100644
--- a/libX11/src/RaiseWin.c
+++ b/libX11/src/RaiseWin.c
@@ -1,49 +1,49 @@
-/*
-
-Copyright 1986, 1998 The Open Group
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall not be
-used in advertising or otherwise to promote the sale, use or other dealings
-in this Software without prior written authorization from The Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-
-int
-XRaiseWindow (
- register Display *dpy,
- Window w)
-{
- register xConfigureWindowReq *req;
- unsigned long val = Above; /* needed for macro below */
-
- LockDisplay(dpy);
- GetReqExtra(ConfigureWindow, 4, req);
- req->window = w;
- req->mask = CWStackMode;
- OneDataCard32 (dpy, NEXTPTR(req,xConfigureWindowReq), val);
- UnlockDisplay(dpy);
- SyncHandle();
- return 1;
-}
-
+/*
+
+Copyright 1986, 1998 The Open Group
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group shall not be
+used in advertising or otherwise to promote the sale, use or other dealings
+in this Software without prior written authorization from The Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+
+int
+XRaiseWindow (
+ register Display *dpy,
+ Window w)
+{
+ register xConfigureWindowReq *req;
+ unsigned long val = Above; /* needed for macro below */
+
+ LockDisplay(dpy);
+ GetReqExtra(ConfigureWindow, 4, req);
+ req->window = w;
+ req->mask = CWStackMode;
+ OneDataCard32 (dpy, NEXTPTR(req,xConfigureWindowReq), val);
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return 1;
+}
+
diff --git a/libX11/src/RecolorC.c b/libX11/src/RecolorC.c
index 6d2aacfa0..a54b48cb8 100644
--- a/libX11/src/RecolorC.c
+++ b/libX11/src/RecolorC.c
@@ -1,54 +1,54 @@
-/*
-
-Copyright 1986, 1998 The Open Group
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall not be
-used in advertising or otherwise to promote the sale, use or other dealings
-in this Software without prior written authorization from The Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-
-int
-XRecolorCursor(
- register Display *dpy,
- Cursor cursor,
- XColor *foreground,
- XColor *background)
-{
- register xRecolorCursorReq *req;
-
- LockDisplay(dpy);
- GetReq(RecolorCursor, req);
- req->cursor = cursor;
- req->foreRed = foreground->red;
- req->foreGreen = foreground->green;
- req->foreBlue = foreground->blue;
- req->backRed = background->red;
- req->backGreen = background->green;
- req->backBlue = background->blue;
- UnlockDisplay(dpy);
- SyncHandle();
- return 1;
-}
-
+/*
+
+Copyright 1986, 1998 The Open Group
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group shall not be
+used in advertising or otherwise to promote the sale, use or other dealings
+in this Software without prior written authorization from The Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+
+int
+XRecolorCursor(
+ register Display *dpy,
+ Cursor cursor,
+ XColor *foreground,
+ XColor *background)
+{
+ register xRecolorCursorReq *req;
+
+ LockDisplay(dpy);
+ GetReq(RecolorCursor, req);
+ req->cursor = cursor;
+ req->foreRed = foreground->red;
+ req->foreGreen = foreground->green;
+ req->foreBlue = foreground->blue;
+ req->backRed = background->red;
+ req->backGreen = background->green;
+ req->backBlue = background->blue;
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return 1;
+}
+
diff --git a/libX11/src/ReconfWM.c b/libX11/src/ReconfWM.c
index 63c10da86..1776f2e15 100644
--- a/libX11/src/ReconfWM.c
+++ b/libX11/src/ReconfWM.c
@@ -1,139 +1,139 @@
-/*
-
-Copyright 1986, 1998 The Open Group
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
-
-The above copyright notice and this permission notice shall be included
-in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
-IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR
-OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
-ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall
-not be used in advertising or otherwise to promote the sale, use or
-other dealings in this Software without prior written authorization
-from The Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-
-#define AllMaskBits (CWX|CWY|CWWidth|CWHeight|\
- CWBorderWidth|CWSibling|CWStackMode)
-
-Status XReconfigureWMWindow (
- register Display *dpy,
- Window w,
- int screen,
- unsigned int mask,
- XWindowChanges *changes)
-{
- XConfigureRequestEvent ev;
- Window root = RootWindow (dpy, screen);
- _XAsyncHandler async;
- _XAsyncErrorState async_state;
-
- /*
- * Only need to go through the trouble if we are actually changing the
- * stacking mode.
- */
- if (!(mask & CWStackMode)) {
- XConfigureWindow (dpy, w, mask, changes);
- return True;
- }
-
-
- /*
- * We need to inline XConfigureWindow and XSync so that everything is done
- * while the display is locked.
- */
-
- LockDisplay(dpy);
-
- /*
- * XConfigureWindow (dpy, w, mask, changes);
- */
- {
- unsigned long values[7];
- register unsigned long *value = values;
- long nvalues;
- register xConfigureWindowReq *req;
-
- GetReq(ConfigureWindow, req);
-
- async_state.min_sequence_number = dpy->request;
- async_state.max_sequence_number = dpy->request;
- async_state.error_code = BadMatch;
- async_state.major_opcode = X_ConfigureWindow;
- async_state.minor_opcode = 0;
- async_state.error_count = 0;
- async.next = dpy->async_handlers;
- async.handler = _XAsyncErrorHandler;
- async.data = (XPointer)&async_state;
- dpy->async_handlers = &async;
-
- req->window = w;
- mask &= AllMaskBits;
- req->mask = mask;
-
- if (mask & CWX) *value++ = changes->x;
- if (mask & CWY) *value++ = changes->y;
- if (mask & CWWidth) *value++ = changes->width;
- if (mask & CWHeight) *value++ = changes->height;
- if (mask & CWBorderWidth) *value++ = changes->border_width;
- if (mask & CWSibling) *value++ = changes->sibling;
- if (mask & CWStackMode) *value++ = changes->stack_mode;
- req->length += (nvalues = value - values);
- nvalues <<= 2; /* watch out for macros... */
- Data32 (dpy, (long *) values, nvalues);
- }
-
- /*
- * XSync (dpy, 0)
- */
- {
- xGetInputFocusReply rep;
- register xReq *req;
-
- GetEmptyReq(GetInputFocus, req);
- (void) _XReply (dpy, (xReply *)&rep, 0, xTrue);
- }
-
- DeqAsyncHandler(dpy, &async);
- UnlockDisplay(dpy);
- SyncHandle();
-
-
- /*
- * If the request succeeded, then everything is okay; otherwise, send event
- */
- if (!async_state.error_count) return True;
-
- ev.type = ConfigureRequest;
- ev.window = w;
- ev.parent = root;
- ev.value_mask = (mask & AllMaskBits);
- ev.x = changes->x;
- ev.y = changes->y;
- ev.width = changes->width;
- ev.height = changes->height;
- ev.border_width = changes->border_width;
- ev.above = changes->sibling;
- ev.detail = changes->stack_mode;
- return (XSendEvent (dpy, root, False,
- SubstructureRedirectMask|SubstructureNotifyMask,
- (XEvent *)&ev));
-}
+/*
+
+Copyright 1986, 1998 The Open Group
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
+
+The above copyright notice and this permission notice shall be included
+in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR
+OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
+ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group shall
+not be used in advertising or otherwise to promote the sale, use or
+other dealings in this Software without prior written authorization
+from The Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+
+#define AllMaskBits (CWX|CWY|CWWidth|CWHeight|\
+ CWBorderWidth|CWSibling|CWStackMode)
+
+Status XReconfigureWMWindow (
+ register Display *dpy,
+ Window w,
+ int screen,
+ unsigned int mask,
+ XWindowChanges *changes)
+{
+ XConfigureRequestEvent ev;
+ Window root = RootWindow (dpy, screen);
+ _XAsyncHandler async;
+ _XAsyncErrorState async_state;
+
+ /*
+ * Only need to go through the trouble if we are actually changing the
+ * stacking mode.
+ */
+ if (!(mask & CWStackMode)) {
+ XConfigureWindow (dpy, w, mask, changes);
+ return True;
+ }
+
+
+ /*
+ * We need to inline XConfigureWindow and XSync so that everything is done
+ * while the display is locked.
+ */
+
+ LockDisplay(dpy);
+
+ /*
+ * XConfigureWindow (dpy, w, mask, changes);
+ */
+ {
+ unsigned long values[7];
+ register unsigned long *value = values;
+ long nvalues;
+ register xConfigureWindowReq *req;
+
+ GetReq(ConfigureWindow, req);
+
+ async_state.min_sequence_number = dpy->request;
+ async_state.max_sequence_number = dpy->request;
+ async_state.error_code = BadMatch;
+ async_state.major_opcode = X_ConfigureWindow;
+ async_state.minor_opcode = 0;
+ async_state.error_count = 0;
+ async.next = dpy->async_handlers;
+ async.handler = _XAsyncErrorHandler;
+ async.data = (XPointer)&async_state;
+ dpy->async_handlers = &async;
+
+ req->window = w;
+ mask &= AllMaskBits;
+ req->mask = mask;
+
+ if (mask & CWX) *value++ = changes->x;
+ if (mask & CWY) *value++ = changes->y;
+ if (mask & CWWidth) *value++ = changes->width;
+ if (mask & CWHeight) *value++ = changes->height;
+ if (mask & CWBorderWidth) *value++ = changes->border_width;
+ if (mask & CWSibling) *value++ = changes->sibling;
+ if (mask & CWStackMode) *value++ = changes->stack_mode;
+ req->length += (nvalues = value - values);
+ nvalues <<= 2; /* watch out for macros... */
+ Data32 (dpy, (long *) values, nvalues);
+ }
+
+ /*
+ * XSync (dpy, 0)
+ */
+ {
+ xGetInputFocusReply rep;
+ register xReq *req;
+
+ GetEmptyReq(GetInputFocus, req);
+ (void) _XReply (dpy, (xReply *)&rep, 0, xTrue);
+ }
+
+ DeqAsyncHandler(dpy, &async);
+ UnlockDisplay(dpy);
+ SyncHandle();
+
+
+ /*
+ * If the request succeeded, then everything is okay; otherwise, send event
+ */
+ if (!async_state.error_count) return True;
+
+ ev.type = ConfigureRequest;
+ ev.window = w;
+ ev.parent = root;
+ ev.value_mask = (mask & AllMaskBits);
+ ev.x = changes->x;
+ ev.y = changes->y;
+ ev.width = changes->width;
+ ev.height = changes->height;
+ ev.border_width = changes->border_width;
+ ev.above = changes->sibling;
+ ev.detail = changes->stack_mode;
+ return (XSendEvent (dpy, root, False,
+ SubstructureRedirectMask|SubstructureNotifyMask,
+ (XEvent *)&ev));
+}
diff --git a/libX11/src/ReconfWin.c b/libX11/src/ReconfWin.c
index 4c2614d9d..bfa99f528 100644
--- a/libX11/src/ReconfWin.c
+++ b/libX11/src/ReconfWin.c
@@ -1,81 +1,81 @@
-/*
-
-Copyright 1986, 1998 The Open Group
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall not be
-used in advertising or otherwise to promote the sale, use or other dealings
-in this Software without prior written authorization from The Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-
-#define AllMaskBits (CWX|CWY|CWWidth|CWHeight|\
- CWBorderWidth|CWSibling|CWStackMode)
-
-int
-XConfigureWindow(
- register Display *dpy,
- Window w,
- unsigned int mask,
- XWindowChanges *changes)
-{
- unsigned long values[7];
- register unsigned long *value = values;
- long nvalues;
- register xConfigureWindowReq *req;
-
- LockDisplay(dpy);
- GetReq(ConfigureWindow, req);
- req->window = w;
- mask &= AllMaskBits;
- req->mask = mask;
-
- if (mask & CWX)
- *value++ = changes->x;
-
- if (mask & CWY)
- *value++ = changes->y;
-
- if (mask & CWWidth)
- *value++ = changes->width;
-
- if (mask & CWHeight)
- *value++ = changes->height;
-
- if (mask & CWBorderWidth)
- *value++ = changes->border_width;
-
- if (mask & CWSibling)
- *value++ = changes->sibling;
-
- if (mask & CWStackMode)
- *value++ = changes->stack_mode;
-
- req->length += (nvalues = value - values);
-
- nvalues <<= 2; /* watch out for macros... */
- Data32 (dpy, (long *) values, nvalues);
- UnlockDisplay(dpy);
- SyncHandle();
- return 1;
- }
+/*
+
+Copyright 1986, 1998 The Open Group
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group shall not be
+used in advertising or otherwise to promote the sale, use or other dealings
+in this Software without prior written authorization from The Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+
+#define AllMaskBits (CWX|CWY|CWWidth|CWHeight|\
+ CWBorderWidth|CWSibling|CWStackMode)
+
+int
+XConfigureWindow(
+ register Display *dpy,
+ Window w,
+ unsigned int mask,
+ XWindowChanges *changes)
+{
+ unsigned long values[7];
+ register unsigned long *value = values;
+ long nvalues;
+ register xConfigureWindowReq *req;
+
+ LockDisplay(dpy);
+ GetReq(ConfigureWindow, req);
+ req->window = w;
+ mask &= AllMaskBits;
+ req->mask = mask;
+
+ if (mask & CWX)
+ *value++ = changes->x;
+
+ if (mask & CWY)
+ *value++ = changes->y;
+
+ if (mask & CWWidth)
+ *value++ = changes->width;
+
+ if (mask & CWHeight)
+ *value++ = changes->height;
+
+ if (mask & CWBorderWidth)
+ *value++ = changes->border_width;
+
+ if (mask & CWSibling)
+ *value++ = changes->sibling;
+
+ if (mask & CWStackMode)
+ *value++ = changes->stack_mode;
+
+ req->length += (nvalues = value - values);
+
+ nvalues <<= 2; /* watch out for macros... */
+ Data32 (dpy, (long *) values, nvalues);
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return 1;
+ }
diff --git a/libX11/src/RegstFlt.c b/libX11/src/RegstFlt.c
index 934c73f14..9a560e794 100644
--- a/libX11/src/RegstFlt.c
+++ b/libX11/src/RegstFlt.c
@@ -1,155 +1,155 @@
-
- /*
- * Copyright 1990, 1991 by OMRON Corporation
- *
- * Permission to use, copy, modify, distribute, and sell this software and its
- * documentation for any purpose is hereby granted without fee, provided that
- * the above copyright notice appear in all copies and that both that
- * copyright notice and this permission notice appear in supporting
- * documentation, and that the name OMRON not be used in
- * advertising or publicity pertaining to distribution of the software without
- * specific, written prior permission. OMRON makes no representations
- * about the suitability of this software for any purpose. It is provided
- * "as is" without express or implied warranty.
- *
- * OMRON DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
- * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
- * EVENT SHALL OMRON BE LIABLE FOR ANY SPECIAL, INDIRECT OR
- * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
- * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
- * TORTUOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
- * PERFORMANCE OF THIS SOFTWARE.
- *
- * Author: Seiji Kuwari OMRON Corporation
- * kuwa@omron.co.jp
- * kuwa%omron.co.jp@uunet.uu.net
- */
-/*
-
-Copyright 1990, 1991, 1998 The Open Group
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
-
-The above copyright notice and this permission notice shall be included
-in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
-IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR
-OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
-ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall
-not be used in advertising or otherwise to promote the sale, use or
-other dealings in this Software without prior written authorization
-from The Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-#include "Xlcint.h"
-
-static void
-_XFreeIMFilters(
- Display *display)
-{
- register XFilterEventList fl;
-
- while ((fl = display->im_filters)) {
- display->im_filters = fl->next;
- Xfree((char *)fl);
- }
-}
-
-/*
- * Register a filter with the filter machinery by event mask.
- */
-void
-_XRegisterFilterByMask(
- Display *display,
- Window window,
- unsigned long event_mask,
- Bool (*filter)(
- Display*, Window, XEvent*, XPointer
- ),
- XPointer client_data)
-{
- XFilterEventRec *rec;
-
- rec = (XFilterEventList)Xmalloc(sizeof(XFilterEventRec));
- if (!rec)
- return;
- rec->window = window;
- rec->event_mask = event_mask;
- rec->start_type = 0;
- rec->end_type = 0;
- rec->filter = filter;
- rec->client_data = client_data;
- LockDisplay(display);
- rec->next = display->im_filters;
- display->im_filters = rec;
- display->free_funcs->im_filters = _XFreeIMFilters;
- UnlockDisplay(display);
-}
-
-/*
- * Register a filter with the filter machinery by type code.
- */
-void
-_XRegisterFilterByType(
- Display *display,
- Window window,
- int start_type,
- int end_type,
- Bool (*filter)(
- Display*, Window, XEvent*, XPointer
- ),
- XPointer client_data)
-{
- XFilterEventRec *rec;
-
- rec = (XFilterEventList)Xmalloc(sizeof(XFilterEventRec));
- if (!rec)
- return;
- rec->window = window;
- rec->event_mask = 0;
- rec->start_type = start_type;
- rec->end_type = end_type;
- rec->filter = filter;
- rec->client_data = client_data;
- LockDisplay(display);
- rec->next = display->im_filters;
- display->im_filters = rec;
- display->free_funcs->im_filters = _XFreeIMFilters;
- UnlockDisplay(display);
-}
-
-void
-_XUnregisterFilter(
- Display *display,
- Window window,
- Bool (*filter)(
- Display*, Window, XEvent*, XPointer
- ),
- XPointer client_data)
-{
- register XFilterEventList *prev, fl;
-
- for (prev = &display->im_filters; (fl = *prev); ) {
- if (fl->window == window &&
- fl->filter == filter && fl->client_data == client_data) {
- *prev = fl->next;
- Xfree((char *)fl);
- } else
- prev = &fl->next;
- }
-}
+
+ /*
+ * Copyright 1990, 1991 by OMRON Corporation
+ *
+ * Permission to use, copy, modify, distribute, and sell this software and its
+ * documentation for any purpose is hereby granted without fee, provided that
+ * the above copyright notice appear in all copies and that both that
+ * copyright notice and this permission notice appear in supporting
+ * documentation, and that the name OMRON not be used in
+ * advertising or publicity pertaining to distribution of the software without
+ * specific, written prior permission. OMRON makes no representations
+ * about the suitability of this software for any purpose. It is provided
+ * "as is" without express or implied warranty.
+ *
+ * OMRON DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
+ * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
+ * EVENT SHALL OMRON BE LIABLE FOR ANY SPECIAL, INDIRECT OR
+ * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
+ * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
+ * TORTUOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+ * PERFORMANCE OF THIS SOFTWARE.
+ *
+ * Author: Seiji Kuwari OMRON Corporation
+ * kuwa@omron.co.jp
+ * kuwa%omron.co.jp@uunet.uu.net
+ */
+/*
+
+Copyright 1990, 1991, 1998 The Open Group
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
+
+The above copyright notice and this permission notice shall be included
+in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR
+OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
+ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group shall
+not be used in advertising or otherwise to promote the sale, use or
+other dealings in this Software without prior written authorization
+from The Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+#include "Xlcint.h"
+
+static void
+_XFreeIMFilters(
+ Display *display)
+{
+ register XFilterEventList fl;
+
+ while ((fl = display->im_filters)) {
+ display->im_filters = fl->next;
+ Xfree((char *)fl);
+ }
+}
+
+/*
+ * Register a filter with the filter machinery by event mask.
+ */
+void
+_XRegisterFilterByMask(
+ Display *display,
+ Window window,
+ unsigned long event_mask,
+ Bool (*filter)(
+ Display*, Window, XEvent*, XPointer
+ ),
+ XPointer client_data)
+{
+ XFilterEventRec *rec;
+
+ rec = (XFilterEventList)Xmalloc(sizeof(XFilterEventRec));
+ if (!rec)
+ return;
+ rec->window = window;
+ rec->event_mask = event_mask;
+ rec->start_type = 0;
+ rec->end_type = 0;
+ rec->filter = filter;
+ rec->client_data = client_data;
+ LockDisplay(display);
+ rec->next = display->im_filters;
+ display->im_filters = rec;
+ display->free_funcs->im_filters = _XFreeIMFilters;
+ UnlockDisplay(display);
+}
+
+/*
+ * Register a filter with the filter machinery by type code.
+ */
+void
+_XRegisterFilterByType(
+ Display *display,
+ Window window,
+ int start_type,
+ int end_type,
+ Bool (*filter)(
+ Display*, Window, XEvent*, XPointer
+ ),
+ XPointer client_data)
+{
+ XFilterEventRec *rec;
+
+ rec = (XFilterEventList)Xmalloc(sizeof(XFilterEventRec));
+ if (!rec)
+ return;
+ rec->window = window;
+ rec->event_mask = 0;
+ rec->start_type = start_type;
+ rec->end_type = end_type;
+ rec->filter = filter;
+ rec->client_data = client_data;
+ LockDisplay(display);
+ rec->next = display->im_filters;
+ display->im_filters = rec;
+ display->free_funcs->im_filters = _XFreeIMFilters;
+ UnlockDisplay(display);
+}
+
+void
+_XUnregisterFilter(
+ Display *display,
+ Window window,
+ Bool (*filter)(
+ Display*, Window, XEvent*, XPointer
+ ),
+ XPointer client_data)
+{
+ register XFilterEventList *prev, fl;
+
+ for (prev = &display->im_filters; (fl = *prev); ) {
+ if (fl->window == window &&
+ fl->filter == filter && fl->client_data == client_data) {
+ *prev = fl->next;
+ Xfree((char *)fl);
+ } else
+ prev = &fl->next;
+ }
+}
diff --git a/libX11/src/RepWindow.c b/libX11/src/RepWindow.c
index 13e933e8c..1fde8d80f 100644
--- a/libX11/src/RepWindow.c
+++ b/libX11/src/RepWindow.c
@@ -1,52 +1,52 @@
-/*
-
-Copyright 1986, 1998 The Open Group
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall not be
-used in advertising or otherwise to promote the sale, use or other dealings
-in this Software without prior written authorization from The Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-
-int
-XReparentWindow(
- register Display *dpy,
- Window w,
- Window p,
- int x,
- int y)
-{
- register xReparentWindowReq *req;
-
- LockDisplay(dpy);
- GetReq(ReparentWindow, req);
- req->window = w;
- req->parent = p;
- req->x = x;
- req->y = y;
- UnlockDisplay(dpy);
- SyncHandle();
- return 1;
-}
-
+/*
+
+Copyright 1986, 1998 The Open Group
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group shall not be
+used in advertising or otherwise to promote the sale, use or other dealings
+in this Software without prior written authorization from The Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+
+int
+XReparentWindow(
+ register Display *dpy,
+ Window w,
+ Window p,
+ int x,
+ int y)
+{
+ register xReparentWindowReq *req;
+
+ LockDisplay(dpy);
+ GetReq(ReparentWindow, req);
+ req->window = w;
+ req->parent = p;
+ req->x = x;
+ req->y = y;
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return 1;
+}
+
diff --git a/libX11/src/RestackWs.c b/libX11/src/RestackWs.c
index c4e870971..1dba3c89f 100644
--- a/libX11/src/RestackWs.c
+++ b/libX11/src/RestackWs.c
@@ -1,70 +1,70 @@
-/*
-
-Copyright 1986, 1998 The Open Group
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall not be
-used in advertising or otherwise to promote the sale, use or other dealings
-in this Software without prior written authorization from The Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-
-int
-XRestackWindows (
- register Display *dpy,
- register Window *windows,
- int n)
-{
- int i = 0;
-#ifdef MUSTCOPY
- unsigned long val = Below; /* needed for macro below */
-#endif
-
- LockDisplay(dpy);
- while (windows++, ++i < n) {
- register xConfigureWindowReq *req;
-
- GetReqExtra (ConfigureWindow, 8, req);
- req->window = *windows;
- req->mask = CWSibling | CWStackMode;
-#ifdef MUSTCOPY
- dpy->bufptr -= 8;
- Data32 (dpy, (long *)(windows-1), 4);
- Data32 (dpy, (long *)&val, 4);
-#else
- {
- register CARD32 *values = (CARD32 *)
- NEXTPTR(req,xConfigureWindowReq);
- *values++ = *(windows-1);
- *values = Below;
- }
-#endif /* MUSTCOPY */
- }
- UnlockDisplay(dpy);
- SyncHandle();
- return 1;
- }
-
-
-
-
+/*
+
+Copyright 1986, 1998 The Open Group
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group shall not be
+used in advertising or otherwise to promote the sale, use or other dealings
+in this Software without prior written authorization from The Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+
+int
+XRestackWindows (
+ register Display *dpy,
+ register Window *windows,
+ int n)
+{
+ int i = 0;
+#ifdef MUSTCOPY
+ unsigned long val = Below; /* needed for macro below */
+#endif
+
+ LockDisplay(dpy);
+ while (windows++, ++i < n) {
+ register xConfigureWindowReq *req;
+
+ GetReqExtra (ConfigureWindow, 8, req);
+ req->window = *windows;
+ req->mask = CWSibling | CWStackMode;
+#ifdef MUSTCOPY
+ dpy->bufptr -= 8;
+ Data32 (dpy, (long *)(windows-1), 4);
+ Data32 (dpy, (long *)&val, 4);
+#else
+ {
+ register CARD32 *values = (CARD32 *)
+ NEXTPTR(req,xConfigureWindowReq);
+ *values++ = *(windows-1);
+ *values = Below;
+ }
+#endif /* MUSTCOPY */
+ }
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return 1;
+ }
+
+
+
+
diff --git a/libX11/src/RotProp.c b/libX11/src/RotProp.c
index 0a371c681..98d7dbd81 100644
--- a/libX11/src/RotProp.c
+++ b/libX11/src/RotProp.c
@@ -1,63 +1,63 @@
-/*
-
-Copyright 1986, 1998 The Open Group
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall not be
-used in advertising or otherwise to promote the sale, use or other dealings
-in this Software without prior written authorization from The Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-
-int
-XRotateWindowProperties(
- register Display *dpy,
- Window w,
- Atom *properties,
- register int nprops,
- int npositions)
-{
- register long nbytes;
- register xRotatePropertiesReq *req;
-
- LockDisplay(dpy);
- GetReq (RotateProperties, req);
- req->window = w;
- req->nAtoms = nprops;
- req->nPositions = npositions;
-
- req->length += nprops;
- nbytes = nprops << 2;
-/* XXX Cray needs packing here.... */
- Data32 (dpy, (long *) properties, nbytes);
-
-
- UnlockDisplay(dpy);
- SyncHandle();
- return 1;
- }
-
-
-
-
-
+/*
+
+Copyright 1986, 1998 The Open Group
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group shall not be
+used in advertising or otherwise to promote the sale, use or other dealings
+in this Software without prior written authorization from The Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+
+int
+XRotateWindowProperties(
+ register Display *dpy,
+ Window w,
+ Atom *properties,
+ register int nprops,
+ int npositions)
+{
+ register long nbytes;
+ register xRotatePropertiesReq *req;
+
+ LockDisplay(dpy);
+ GetReq (RotateProperties, req);
+ req->window = w;
+ req->nAtoms = nprops;
+ req->nPositions = npositions;
+
+ req->length += nprops;
+ nbytes = nprops << 2;
+/* XXX Cray needs packing here.... */
+ Data32 (dpy, (long *) properties, nbytes);
+
+
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return 1;
+ }
+
+
+
+
+
diff --git a/libX11/src/ScrResStr.c b/libX11/src/ScrResStr.c
index 8e7ad93e9..0601c8644 100644
--- a/libX11/src/ScrResStr.c
+++ b/libX11/src/ScrResStr.c
@@ -1,55 +1,55 @@
-/*
-
-Copyright 1991, 1998 The Open Group
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall not be
-used in advertising or otherwise to promote the sale, use or other dealings
-in this Software without prior written authorization from The Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-#include <X11/Xatom.h>
-
-char *XScreenResourceString(Screen *screen)
-{
- Atom prop_name;
- Atom actual_type;
- int actual_format;
- unsigned long nitems;
- unsigned long leftover;
- char *val = NULL;
-
- prop_name = XInternAtom(screen->display, "SCREEN_RESOURCES", True);
- if (prop_name &&
- XGetWindowProperty(screen->display, screen->root, prop_name,
- 0L, 100000000L, False,
- XA_STRING, &actual_type, &actual_format,
- &nitems, &leftover,
- (unsigned char **) &val) == Success) {
- if ((actual_type == XA_STRING) && (actual_format == 8))
- return val;
- if (val)
- Xfree(val);
- }
- return (char *)NULL;
-}
+/*
+
+Copyright 1991, 1998 The Open Group
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group shall not be
+used in advertising or otherwise to promote the sale, use or other dealings
+in this Software without prior written authorization from The Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+#include <X11/Xatom.h>
+
+char *XScreenResourceString(Screen *screen)
+{
+ Atom prop_name;
+ Atom actual_type;
+ int actual_format;
+ unsigned long nitems;
+ unsigned long leftover;
+ char *val = NULL;
+
+ prop_name = XInternAtom(screen->display, "SCREEN_RESOURCES", True);
+ if (prop_name &&
+ XGetWindowProperty(screen->display, screen->root, prop_name,
+ 0L, 100000000L, False,
+ XA_STRING, &actual_type, &actual_format,
+ &nitems, &leftover,
+ (unsigned char **) &val) == Success) {
+ if ((actual_type == XA_STRING) && (actual_format == 8))
+ return val;
+ if (val)
+ Xfree(val);
+ }
+ return (char *)NULL;
+}
diff --git a/libX11/src/SelInput.c b/libX11/src/SelInput.c
index d79c82bed..a3fa294f4 100644
--- a/libX11/src/SelInput.c
+++ b/libX11/src/SelInput.c
@@ -1,49 +1,49 @@
-/*
-
-Copyright 1986, 1998 The Open Group
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall not be
-used in advertising or otherwise to promote the sale, use or other dealings
-in this Software without prior written authorization from The Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-
-int
-XSelectInput (
- register Display *dpy,
- Window w,
- long mask)
-{
- register xChangeWindowAttributesReq *req;
-
- LockDisplay(dpy);
- GetReqExtra (ChangeWindowAttributes, 4, req);
- req->window = w;
- req->valueMask = CWEventMask;
- OneDataCard32 (dpy, NEXTPTR(req,xChangeWindowAttributesReq), mask);
- UnlockDisplay(dpy);
- SyncHandle();
- return 1;
-}
-
+/*
+
+Copyright 1986, 1998 The Open Group
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group shall not be
+used in advertising or otherwise to promote the sale, use or other dealings
+in this Software without prior written authorization from The Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+
+int
+XSelectInput (
+ register Display *dpy,
+ Window w,
+ long mask)
+{
+ register xChangeWindowAttributesReq *req;
+
+ LockDisplay(dpy);
+ GetReqExtra (ChangeWindowAttributes, 4, req);
+ req->window = w;
+ req->valueMask = CWEventMask;
+ OneDataCard32 (dpy, NEXTPTR(req,xChangeWindowAttributesReq), mask);
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return 1;
+}
+
diff --git a/libX11/src/SendEvent.c b/libX11/src/SendEvent.c
index 137163930..cc8bd5ace 100644
--- a/libX11/src/SendEvent.c
+++ b/libX11/src/SendEvent.c
@@ -1,81 +1,81 @@
-/*
-
-Copyright 1986, 1998 The Open Group
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall not be
-used in advertising or otherwise to promote the sale, use or other dealings
-in this Software without prior written authorization from The Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-
-/*
- * In order to avoid all images requiring _XEventToWire, we install the
- * event converter here if it has never been installed.
- */
-Status
-XSendEvent(
- register Display *dpy,
- Window w,
- Bool propagate,
- long event_mask,
- XEvent *event)
-{
- register xSendEventReq *req;
- xEvent ev;
- register Status (**fp)(
- Display * /* dpy */,
- XEvent * /* re */,
- xEvent * /* event */);
- Status status;
-
- /* initialize all of the event's fields first, before setting
- * the meaningful ones later.
- */
- memset (&ev, 0, sizeof (ev));
-
- LockDisplay (dpy);
-
- /* call through display to find proper conversion routine */
-
- fp = &dpy->wire_vec[event->type & 0177];
- if (*fp == NULL) *fp = _XEventToWire;
- status = (**fp)(dpy, event, &ev);
-
- if (status) {
- GetReq(SendEvent, req);
- req->destination = w;
- req->propagate = propagate;
- req->eventMask = event_mask;
-#ifdef WORD64
- /* avoid quad-alignment problems */
- memcpy ((char *) req->eventdata, (char *) &ev, SIZEOF(xEvent));
-#else
- req->event = ev;
-#endif /* WORD64 */
- }
-
- UnlockDisplay(dpy);
- SyncHandle();
- return(status);
-}
+/*
+
+Copyright 1986, 1998 The Open Group
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group shall not be
+used in advertising or otherwise to promote the sale, use or other dealings
+in this Software without prior written authorization from The Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+
+/*
+ * In order to avoid all images requiring _XEventToWire, we install the
+ * event converter here if it has never been installed.
+ */
+Status
+XSendEvent(
+ register Display *dpy,
+ Window w,
+ Bool propagate,
+ long event_mask,
+ XEvent *event)
+{
+ register xSendEventReq *req;
+ xEvent ev;
+ register Status (**fp)(
+ Display * /* dpy */,
+ XEvent * /* re */,
+ xEvent * /* event */);
+ Status status;
+
+ /* initialize all of the event's fields first, before setting
+ * the meaningful ones later.
+ */
+ memset (&ev, 0, sizeof (ev));
+
+ LockDisplay (dpy);
+
+ /* call through display to find proper conversion routine */
+
+ fp = &dpy->wire_vec[event->type & 0177];
+ if (*fp == NULL) *fp = _XEventToWire;
+ status = (**fp)(dpy, event, &ev);
+
+ if (status) {
+ GetReq(SendEvent, req);
+ req->destination = w;
+ req->propagate = propagate;
+ req->eventMask = event_mask;
+#ifdef WORD64
+ /* avoid quad-alignment problems */
+ memcpy ((char *) req->eventdata, (char *) &ev, SIZEOF(xEvent));
+#else
+ req->event = ev;
+#endif /* WORD64 */
+ }
+
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return(status);
+}
diff --git a/libX11/src/SetBack.c b/libX11/src/SetBack.c
index 384b8b9e5..269d10cc7 100644
--- a/libX11/src/SetBack.c
+++ b/libX11/src/SetBack.c
@@ -1,46 +1,46 @@
-/*
-
-Copyright 1986, 1998 The Open Group
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall not be
-used in advertising or otherwise to promote the sale, use or other dealings
-in this Software without prior written authorization from The Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-
-int
-XSetBackground (
- register Display *dpy,
- GC gc,
- unsigned long background) /* CARD32 */
-{
- LockDisplay(dpy);
- if (gc->values.background != background) {
- gc->values.background = background;
- gc->dirty |= GCBackground;
- }
- UnlockDisplay(dpy);
- SyncHandle();
- return 1;
-}
+/*
+
+Copyright 1986, 1998 The Open Group
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group shall not be
+used in advertising or otherwise to promote the sale, use or other dealings
+in this Software without prior written authorization from The Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+
+int
+XSetBackground (
+ register Display *dpy,
+ GC gc,
+ unsigned long background) /* CARD32 */
+{
+ LockDisplay(dpy);
+ if (gc->values.background != background) {
+ gc->values.background = background;
+ gc->dirty |= GCBackground;
+ }
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return 1;
+}
diff --git a/libX11/src/SetCRects.c b/libX11/src/SetCRects.c
index 4809592a4..c7ad3fcf2 100644
--- a/libX11/src/SetCRects.c
+++ b/libX11/src/SetCRects.c
@@ -1,81 +1,81 @@
-/*
-
-Copyright 1986, 1998 The Open Group
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall not be
-used in advertising or otherwise to promote the sale, use or other dealings
-in this Software without prior written authorization from The Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-
-/* can only call when display is locked. */
-void _XSetClipRectangles (
- register Display *dpy,
- GC gc,
- int clip_x_origin, int clip_y_origin,
- XRectangle *rectangles,
- int n,
- int ordering)
-{
- register xSetClipRectanglesReq *req;
- register long len;
- unsigned long dirty;
- register _XExtension *ext;
-
- GetReq (SetClipRectangles, req);
- req->gc = gc->gid;
- req->xOrigin = gc->values.clip_x_origin = clip_x_origin;
- req->yOrigin = gc->values.clip_y_origin = clip_y_origin;
- req->ordering = ordering;
- len = ((long)n) << 1;
- SetReqLen(req, len, 1);
- len <<= 2;
- Data16 (dpy, (short *) rectangles, len);
- gc->rects = 1;
- dirty = gc->dirty & ~(GCClipMask | GCClipXOrigin | GCClipYOrigin);
- gc->dirty = GCClipMask | GCClipXOrigin | GCClipYOrigin;
- /* call out to any extensions interested */
- for (ext = dpy->ext_procs; ext; ext = ext->next)
- if (ext->flush_GC) (*ext->flush_GC)(dpy, gc, &ext->codes);
- gc->dirty = dirty;
-}
-
-int
-XSetClipRectangles (
- register Display *dpy,
- GC gc,
- int clip_x_origin,
- int clip_y_origin,
- XRectangle *rectangles,
- int n,
- int ordering)
-{
- LockDisplay(dpy);
- _XSetClipRectangles (dpy, gc, clip_x_origin, clip_y_origin, rectangles, n,
- ordering);
- UnlockDisplay(dpy);
- SyncHandle();
- return 1;
-}
-
+/*
+
+Copyright 1986, 1998 The Open Group
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group shall not be
+used in advertising or otherwise to promote the sale, use or other dealings
+in this Software without prior written authorization from The Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+
+/* can only call when display is locked. */
+void _XSetClipRectangles (
+ register Display *dpy,
+ GC gc,
+ int clip_x_origin, int clip_y_origin,
+ XRectangle *rectangles,
+ int n,
+ int ordering)
+{
+ register xSetClipRectanglesReq *req;
+ register long len;
+ unsigned long dirty;
+ register _XExtension *ext;
+
+ GetReq (SetClipRectangles, req);
+ req->gc = gc->gid;
+ req->xOrigin = gc->values.clip_x_origin = clip_x_origin;
+ req->yOrigin = gc->values.clip_y_origin = clip_y_origin;
+ req->ordering = ordering;
+ len = ((long)n) << 1;
+ SetReqLen(req, len, 1);
+ len <<= 2;
+ Data16 (dpy, (short *) rectangles, len);
+ gc->rects = 1;
+ dirty = gc->dirty & ~(GCClipMask | GCClipXOrigin | GCClipYOrigin);
+ gc->dirty = GCClipMask | GCClipXOrigin | GCClipYOrigin;
+ /* call out to any extensions interested */
+ for (ext = dpy->ext_procs; ext; ext = ext->next)
+ if (ext->flush_GC) (*ext->flush_GC)(dpy, gc, &ext->codes);
+ gc->dirty = dirty;
+}
+
+int
+XSetClipRectangles (
+ register Display *dpy,
+ GC gc,
+ int clip_x_origin,
+ int clip_y_origin,
+ XRectangle *rectangles,
+ int n,
+ int ordering)
+{
+ LockDisplay(dpy);
+ _XSetClipRectangles (dpy, gc, clip_x_origin, clip_y_origin, rectangles, n,
+ ordering);
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return 1;
+}
+
diff --git a/libX11/src/SetClMask.c b/libX11/src/SetClMask.c
index ba65250fd..82cdb2cce 100644
--- a/libX11/src/SetClMask.c
+++ b/libX11/src/SetClMask.c
@@ -1,47 +1,47 @@
-/*
-
-Copyright 1986, 1998 The Open Group
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall not be
-used in advertising or otherwise to promote the sale, use or other dealings
-in this Software without prior written authorization from The Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-
-int
-XSetClipMask (
- register Display *dpy,
- GC gc,
- Pixmap mask)
-{
- LockDisplay(dpy);
- /* always update, since client may have changed pixmap contents */
- gc->values.clip_mask = mask;
- gc->dirty |= GCClipMask;
- gc->rects = 0;
- _XFlushGCCache(dpy, gc);
- UnlockDisplay(dpy);
- SyncHandle();
- return 1;
-}
+/*
+
+Copyright 1986, 1998 The Open Group
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group shall not be
+used in advertising or otherwise to promote the sale, use or other dealings
+in this Software without prior written authorization from The Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+
+int
+XSetClipMask (
+ register Display *dpy,
+ GC gc,
+ Pixmap mask)
+{
+ LockDisplay(dpy);
+ /* always update, since client may have changed pixmap contents */
+ gc->values.clip_mask = mask;
+ gc->dirty |= GCClipMask;
+ gc->rects = 0;
+ _XFlushGCCache(dpy, gc);
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return 1;
+}
diff --git a/libX11/src/SetClOrig.c b/libX11/src/SetClOrig.c
index ea0231586..800e1570d 100644
--- a/libX11/src/SetClOrig.c
+++ b/libX11/src/SetClOrig.c
@@ -1,53 +1,53 @@
-/*
-
-Copyright 1986, 1998 The Open Group
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall not be
-used in advertising or otherwise to promote the sale, use or other dealings
-in this Software without prior written authorization from The Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-
-int
-XSetClipOrigin (
- register Display *dpy,
- GC gc,
- int xorig,
- int yorig)
-{
- XGCValues *gv = &gc->values;
-
- LockDisplay(dpy);
- if (xorig != gv->clip_x_origin) {
- gv->clip_x_origin = xorig;
- gc->dirty |= GCClipXOrigin;
- }
- if (yorig != gv->clip_y_origin) {
- gv->clip_y_origin = yorig;
- gc->dirty |= GCClipYOrigin;
- }
- UnlockDisplay(dpy);
- SyncHandle();
- return 1;
-}
+/*
+
+Copyright 1986, 1998 The Open Group
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group shall not be
+used in advertising or otherwise to promote the sale, use or other dealings
+in this Software without prior written authorization from The Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+
+int
+XSetClipOrigin (
+ register Display *dpy,
+ GC gc,
+ int xorig,
+ int yorig)
+{
+ XGCValues *gv = &gc->values;
+
+ LockDisplay(dpy);
+ if (xorig != gv->clip_x_origin) {
+ gv->clip_x_origin = xorig;
+ gc->dirty |= GCClipXOrigin;
+ }
+ if (yorig != gv->clip_y_origin) {
+ gv->clip_y_origin = yorig;
+ gc->dirty |= GCClipYOrigin;
+ }
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return 1;
+}
diff --git a/libX11/src/SetDashes.c b/libX11/src/SetDashes.c
index e88b87dbd..ffe4a95ff 100644
--- a/libX11/src/SetDashes.c
+++ b/libX11/src/SetDashes.c
@@ -1,55 +1,55 @@
-/*
-
-Copyright 1986, 1998 The Open Group
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall not be
-used in advertising or otherwise to promote the sale, use or other dealings
-in this Software without prior written authorization from The Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-
-int
-XSetDashes (
- register Display *dpy,
- GC gc,
- int dash_offset,
- _Xconst char *list,
- int n)
- {
- register xSetDashesReq *req;
-
- LockDisplay(dpy);
- GetReq (SetDashes,req);
- req->gc = gc->gid;
- req->dashOffset = gc->values.dash_offset = dash_offset;
- req->nDashes = n;
- req->length += (n+3)>>2;
- gc->dashes = 1;
- gc->dirty &= ~(GCDashList | GCDashOffset);
- Data (dpy, list, (long)n);
- UnlockDisplay(dpy);
- SyncHandle();
- return 1;
- }
-
+/*
+
+Copyright 1986, 1998 The Open Group
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group shall not be
+used in advertising or otherwise to promote the sale, use or other dealings
+in this Software without prior written authorization from The Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+
+int
+XSetDashes (
+ register Display *dpy,
+ GC gc,
+ int dash_offset,
+ _Xconst char *list,
+ int n)
+ {
+ register xSetDashesReq *req;
+
+ LockDisplay(dpy);
+ GetReq (SetDashes,req);
+ req->gc = gc->gid;
+ req->dashOffset = gc->values.dash_offset = dash_offset;
+ req->nDashes = n;
+ req->length += (n+3)>>2;
+ gc->dashes = 1;
+ gc->dirty &= ~(GCDashList | GCDashOffset);
+ Data (dpy, list, (long)n);
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return 1;
+ }
+
diff --git a/libX11/src/SetFPath.c b/libX11/src/SetFPath.c
index 04d9436d7..89955c23e 100644
--- a/libX11/src/SetFPath.c
+++ b/libX11/src/SetFPath.c
@@ -1,77 +1,77 @@
-/*
-
-Copyright 1986, 1998 The Open Group
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall not be
-used in advertising or otherwise to promote the sale, use or other dealings
-in this Software without prior written authorization from The Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-
-#define safestrlen(s) ((s) ? strlen(s) : 0)
-
-int
-XSetFontPath (
- register Display *dpy,
- char **directories,
- int ndirs)
-{
- register int n = 0;
- register int i;
- register int nbytes;
- char *p;
- register xSetFontPathReq *req;
- int retCode;
-
- LockDisplay(dpy);
- GetReq (SetFontPath, req);
- req->nFonts = ndirs;
- for (i = 0; i < ndirs; i++) {
- n += safestrlen (directories[i]) + 1;
- }
- nbytes = (n + 3) & ~3;
- req->length += nbytes >> 2;
- if ((p = (char *) Xmalloc ((unsigned) nbytes))) {
- /*
- * pack into counted strings.
- */
- char *tmp = p;
-
- for (i = 0; i < ndirs; i++) {
- register int length = safestrlen (directories[i]);
- *p = length;
- memcpy (p + 1, directories[i], length);
- p += length + 1;
- }
- Data (dpy, tmp, nbytes);
- Xfree ((char *) tmp);
- retCode = 1;
- }
- else
- retCode = 0;
-
- UnlockDisplay(dpy);
- SyncHandle();
- return (retCode);
-}
+/*
+
+Copyright 1986, 1998 The Open Group
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group shall not be
+used in advertising or otherwise to promote the sale, use or other dealings
+in this Software without prior written authorization from The Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+
+#define safestrlen(s) ((s) ? strlen(s) : 0)
+
+int
+XSetFontPath (
+ register Display *dpy,
+ char **directories,
+ int ndirs)
+{
+ register int n = 0;
+ register int i;
+ register int nbytes;
+ char *p;
+ register xSetFontPathReq *req;
+ int retCode;
+
+ LockDisplay(dpy);
+ GetReq (SetFontPath, req);
+ req->nFonts = ndirs;
+ for (i = 0; i < ndirs; i++) {
+ n += safestrlen (directories[i]) + 1;
+ }
+ nbytes = (n + 3) & ~3;
+ req->length += nbytes >> 2;
+ if ((p = (char *) Xmalloc ((unsigned) nbytes))) {
+ /*
+ * pack into counted strings.
+ */
+ char *tmp = p;
+
+ for (i = 0; i < ndirs; i++) {
+ register int length = safestrlen (directories[i]);
+ *p = length;
+ memcpy (p + 1, directories[i], length);
+ p += length + 1;
+ }
+ Data (dpy, tmp, nbytes);
+ Xfree ((char *) tmp);
+ retCode = 1;
+ }
+ else
+ retCode = 0;
+
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return (retCode);
+}
diff --git a/libX11/src/SetFont.c b/libX11/src/SetFont.c
index 6dd873981..33ffca02d 100644
--- a/libX11/src/SetFont.c
+++ b/libX11/src/SetFont.c
@@ -1,47 +1,47 @@
-/*
-
-Copyright 1986, 1998 The Open Group
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall not be
-used in advertising or otherwise to promote the sale, use or other dealings
-in this Software without prior written authorization from The Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-
-int
-XSetFont (
- register Display *dpy,
- GC gc,
- Font font)
-{
- LockDisplay(dpy);
- if (gc->values.font != font) {
- gc->values.font = font;
- gc->dirty |= GCFont;
- _XFlushGCCache(dpy, gc);
- }
- UnlockDisplay(dpy);
- SyncHandle();
- return 1;
-}
+/*
+
+Copyright 1986, 1998 The Open Group
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group shall not be
+used in advertising or otherwise to promote the sale, use or other dealings
+in this Software without prior written authorization from The Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+
+int
+XSetFont (
+ register Display *dpy,
+ GC gc,
+ Font font)
+{
+ LockDisplay(dpy);
+ if (gc->values.font != font) {
+ gc->values.font = font;
+ gc->dirty |= GCFont;
+ _XFlushGCCache(dpy, gc);
+ }
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return 1;
+}
diff --git a/libX11/src/SetFore.c b/libX11/src/SetFore.c
index 92ca40d79..50c9f1228 100644
--- a/libX11/src/SetFore.c
+++ b/libX11/src/SetFore.c
@@ -1,46 +1,46 @@
-/*
-
-Copyright 1986, 1998 The Open Group
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall not be
-used in advertising or otherwise to promote the sale, use or other dealings
-in this Software without prior written authorization from The Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-
-int
-XSetForeground (
- register Display *dpy,
- GC gc,
- unsigned long foreground) /* CARD32 */
-{
- LockDisplay(dpy);
- if (gc->values.foreground != foreground) {
- gc->values.foreground = foreground;
- gc->dirty |= GCForeground;
- }
- UnlockDisplay(dpy);
- SyncHandle();
- return 1;
-}
+/*
+
+Copyright 1986, 1998 The Open Group
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group shall not be
+used in advertising or otherwise to promote the sale, use or other dealings
+in this Software without prior written authorization from The Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+
+int
+XSetForeground (
+ register Display *dpy,
+ GC gc,
+ unsigned long foreground) /* CARD32 */
+{
+ LockDisplay(dpy);
+ if (gc->values.foreground != foreground) {
+ gc->values.foreground = foreground;
+ gc->dirty |= GCForeground;
+ }
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return 1;
+}
diff --git a/libX11/src/SetFunc.c b/libX11/src/SetFunc.c
index 897ab03de..ffe4ec0cc 100644
--- a/libX11/src/SetFunc.c
+++ b/libX11/src/SetFunc.c
@@ -1,46 +1,46 @@
-/*
-
-Copyright 1986, 1998 The Open Group
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall not be
-used in advertising or otherwise to promote the sale, use or other dealings
-in this Software without prior written authorization from The Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-
-int
-XSetFunction (
- register Display *dpy,
- GC gc,
- int function)
-{
- LockDisplay(dpy);
- if (gc->values.function != function) {
- gc->values.function = function;
- gc->dirty |= GCFunction;
- }
- UnlockDisplay(dpy);
- SyncHandle();
- return 1;
-}
+/*
+
+Copyright 1986, 1998 The Open Group
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group shall not be
+used in advertising or otherwise to promote the sale, use or other dealings
+in this Software without prior written authorization from The Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+
+int
+XSetFunction (
+ register Display *dpy,
+ GC gc,
+ int function)
+{
+ LockDisplay(dpy);
+ if (gc->values.function != function) {
+ gc->values.function = function;
+ gc->dirty |= GCFunction;
+ }
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return 1;
+}
diff --git a/libX11/src/SetHints.c b/libX11/src/SetHints.c
index 0914287da..0c33f5901 100644
--- a/libX11/src/SetHints.c
+++ b/libX11/src/SetHints.c
@@ -1,317 +1,317 @@
-
-/***********************************************************
-
-Copyright 1987, 1998 The Open Group
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall not be
-used in advertising or otherwise to promote the sale, use or other dealings
-in this Software without prior written authorization from The Open Group.
-
-
-Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts.
-
- All Rights Reserved
-
-Permission to use, copy, modify, and distribute this software and its
-documentation for any purpose and without fee is hereby granted,
-provided that the above copyright notice appear in all copies and that
-both that copyright notice and this permission notice appear in
-supporting documentation, and that the name of Digital not be
-used in advertising or publicity pertaining to distribution of the
-software without specific, written prior permission.
-
-DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
-ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
-DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
-ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
-WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
-ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
-SOFTWARE.
-
-******************************************************************/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include <X11/Xlibint.h>
-#include <X11/Xutil.h>
-#include "Xatomtype.h"
-#include <X11/Xatom.h>
-#include <X11/Xos.h>
-
-#define safestrlen(s) ((s) ? strlen(s) : 0)
-
-int
-XSetSizeHints( /* old routine */
- Display *dpy,
- Window w,
- XSizeHints *hints,
- Atom property)
-{
- xPropSizeHints prop;
- memset(&prop, 0, sizeof(prop));
- prop.flags = (hints->flags & (USPosition|USSize|PAllHints));
- if (hints->flags & (USPosition|PPosition)) {
- prop.x = hints->x;
- prop.y = hints->y;
- }
- if (hints->flags & (USSize|PSize)) {
- prop.width = hints->width;
- prop.height = hints->height;
- }
- if (hints->flags & PMinSize) {
- prop.minWidth = hints->min_width;
- prop.minHeight = hints->min_height;
- }
- if (hints->flags & PMaxSize) {
- prop.maxWidth = hints->max_width;
- prop.maxHeight = hints->max_height;
- }
- if (hints->flags & PResizeInc) {
- prop.widthInc = hints->width_inc;
- prop.heightInc = hints->height_inc;
- }
- if (hints->flags & PAspect) {
- prop.minAspectX = hints->min_aspect.x;
- prop.minAspectY = hints->min_aspect.y;
- prop.maxAspectX = hints->max_aspect.x;
- prop.maxAspectY = hints->max_aspect.y;
- }
- return XChangeProperty (dpy, w, property, XA_WM_SIZE_HINTS, 32,
- PropModeReplace, (unsigned char *) &prop,
- OldNumPropSizeElements);
-}
-
-/*
- * XSetWMHints sets the property
- * WM_HINTS type: WM_HINTS format:32
- */
-
-int
-XSetWMHints (
- Display *dpy,
- Window w,
- XWMHints *wmhints)
-{
- xPropWMHints prop;
- memset(&prop, 0, sizeof(prop));
- prop.flags = wmhints->flags;
- if (wmhints->flags & InputHint)
- prop.input = (wmhints->input == True ? 1 : 0);
- if (wmhints->flags & StateHint)
- prop.initialState = wmhints->initial_state;
- if (wmhints->flags & IconPixmapHint)
- prop.iconPixmap = wmhints->icon_pixmap;
- if (wmhints->flags & IconWindowHint)
- prop.iconWindow = wmhints->icon_window;
- if (wmhints->flags & IconPositionHint) {
- prop.iconX = wmhints->icon_x;
- prop.iconY = wmhints->icon_y;
- }
- if (wmhints->flags & IconMaskHint)
- prop.iconMask = wmhints->icon_mask;
- if (wmhints->flags & WindowGroupHint)
- prop.windowGroup = wmhints->window_group;
- return XChangeProperty (dpy, w, XA_WM_HINTS, XA_WM_HINTS, 32,
- PropModeReplace, (unsigned char *) &prop,
- NumPropWMHintsElements);
-}
-
-
-
-/*
- * XSetZoomHints sets the property
- * WM_ZOOM_HINTS type: WM_SIZE_HINTS format: 32
- */
-
-int
-XSetZoomHints (
- Display *dpy,
- Window w,
- XSizeHints *zhints)
-{
- return XSetSizeHints (dpy, w, zhints, XA_WM_ZOOM_HINTS);
-}
-
-
-/*
- * XSetNormalHints sets the property
- * WM_NORMAL_HINTS type: WM_SIZE_HINTS format: 32
- */
-
-int
-XSetNormalHints ( /* old routine */
- Display *dpy,
- Window w,
- XSizeHints *hints)
-{
- return XSetSizeHints (dpy, w, hints, XA_WM_NORMAL_HINTS);
-}
-
-
-
-/*
- * Note, the following is one of the few cases were we really do want sizeof
- * when examining a protocol structure. This is because the XChangeProperty
- * routine will take care of converting to host to network data structures.
- */
-
-int
-XSetIconSizes (
- Display *dpy,
- Window w, /* typically, root */
- XIconSize *list,
- int count) /* number of items on the list */
-{
- register int i;
- xPropIconSize *pp, *prop;
-#define size_of_the_real_thing sizeof /* avoid grepping screwups */
- unsigned nbytes = count * size_of_the_real_thing(xPropIconSize);
-#undef size_of_the_real_thing
- if ((prop = pp = (xPropIconSize *) Xmalloc (nbytes))) {
- for (i = 0; i < count; i++) {
- pp->minWidth = list->min_width;
- pp->minHeight = list->min_height;
- pp->maxWidth = list->max_width;
- pp->maxHeight = list->max_height;
- pp->widthInc = list->width_inc;
- pp->heightInc = list->height_inc;
- pp += 1;
- list += 1;
- }
- XChangeProperty (dpy, w, XA_WM_ICON_SIZE, XA_WM_ICON_SIZE, 32,
- PropModeReplace, (unsigned char *) prop,
- count * NumPropIconSizeElements);
- Xfree ((char *)prop);
- }
- return 1;
-}
-
-int
-XSetCommand (
- Display *dpy,
- Window w,
- char **argv,
- int argc)
-{
- register int i;
- register int nbytes;
- register char *buf, *bp;
- for (i = 0, nbytes = 0; i < argc; i++) {
- nbytes += safestrlen(argv[i]) + 1;
- }
- if ((bp = buf = Xmalloc((unsigned) nbytes))) {
- /* copy arguments into single buffer */
- for (i = 0; i < argc; i++) {
- if (argv[i]) {
- (void) strcpy(bp, argv[i]);
- bp += strlen(argv[i]) + 1;
- }
- else
- *bp++ = '\0';
- }
- XChangeProperty (dpy, w, XA_WM_COMMAND, XA_STRING, 8,
- PropModeReplace, (unsigned char *)buf, nbytes);
- Xfree(buf);
- }
- return 1;
-}
-/*
- * XSetStandardProperties sets the following properties:
- * WM_NAME type: STRING format: 8
- * WM_ICON_NAME type: STRING format: 8
- * WM_HINTS type: WM_HINTS format: 32
- * WM_COMMAND type: STRING
- * WM_NORMAL_HINTS type: WM_SIZE_HINTS format: 32
- */
-
-int
-XSetStandardProperties (
- Display *dpy,
- Window w, /* window to decorate */
- _Xconst char *name, /* name of application */
- _Xconst char *icon_string,/* name string for icon */
- Pixmap icon_pixmap, /* pixmap to use as icon, or None */
- char **argv, /* command to be used to restart application */
- int argc, /* count of arguments */
- XSizeHints *hints) /* size hints for window in its normal state */
-{
- XWMHints phints;
- phints.flags = 0;
-
- if (name != NULL) XStoreName (dpy, w, name);
-
- if (icon_string != NULL) {
- XChangeProperty (dpy, w, XA_WM_ICON_NAME, XA_STRING, 8,
- PropModeReplace, (unsigned char *)icon_string, safestrlen(icon_string));
- }
-
- if (icon_pixmap != None) {
- phints.icon_pixmap = icon_pixmap;
- phints.flags |= IconPixmapHint;
- }
- if (argv != NULL) XSetCommand(dpy, w, argv, argc);
-
- if (hints != NULL) XSetNormalHints(dpy, w, hints);
-
- if (phints.flags != 0) XSetWMHints(dpy, w, &phints);
-
- return 1;
-}
-
-int
-XSetTransientForHint(
- Display *dpy,
- Window w,
- Window propWindow)
-{
- return XChangeProperty(dpy, w, XA_WM_TRANSIENT_FOR, XA_WINDOW, 32,
- PropModeReplace, (unsigned char *) &propWindow, 1);
-}
-
-int
-XSetClassHint(
- Display *dpy,
- Window w,
- XClassHint *classhint)
-{
- char *class_string;
- char *s;
- int len_nm, len_cl;
-
- len_nm = safestrlen(classhint->res_name);
- len_cl = safestrlen(classhint->res_class);
- if ((class_string = s = Xmalloc((unsigned) (len_nm + len_cl + 2)))) {
- if (len_nm) {
- strcpy(s, classhint->res_name);
- s += len_nm + 1;
- }
- else
- *s++ = '\0';
- if (len_cl)
- strcpy(s, classhint->res_class);
- else
- *s = '\0';
- XChangeProperty(dpy, w, XA_WM_CLASS, XA_STRING, 8,
- PropModeReplace, (unsigned char *) class_string,
- len_nm+len_cl+2);
- Xfree(class_string);
- }
- return 1;
-}
+
+/***********************************************************
+
+Copyright 1987, 1998 The Open Group
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group shall not be
+used in advertising or otherwise to promote the sale, use or other dealings
+in this Software without prior written authorization from The Open Group.
+
+
+Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts.
+
+ All Rights Reserved
+
+Permission to use, copy, modify, and distribute this software and its
+documentation for any purpose and without fee is hereby granted,
+provided that the above copyright notice appear in all copies and that
+both that copyright notice and this permission notice appear in
+supporting documentation, and that the name of Digital not be
+used in advertising or publicity pertaining to distribution of the
+software without specific, written prior permission.
+
+DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
+ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
+DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
+ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
+WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
+ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
+SOFTWARE.
+
+******************************************************************/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include <X11/Xlibint.h>
+#include <X11/Xutil.h>
+#include "Xatomtype.h"
+#include <X11/Xatom.h>
+#include <X11/Xos.h>
+
+#define safestrlen(s) ((s) ? strlen(s) : 0)
+
+int
+XSetSizeHints( /* old routine */
+ Display *dpy,
+ Window w,
+ XSizeHints *hints,
+ Atom property)
+{
+ xPropSizeHints prop;
+ memset(&prop, 0, sizeof(prop));
+ prop.flags = (hints->flags & (USPosition|USSize|PAllHints));
+ if (hints->flags & (USPosition|PPosition)) {
+ prop.x = hints->x;
+ prop.y = hints->y;
+ }
+ if (hints->flags & (USSize|PSize)) {
+ prop.width = hints->width;
+ prop.height = hints->height;
+ }
+ if (hints->flags & PMinSize) {
+ prop.minWidth = hints->min_width;
+ prop.minHeight = hints->min_height;
+ }
+ if (hints->flags & PMaxSize) {
+ prop.maxWidth = hints->max_width;
+ prop.maxHeight = hints->max_height;
+ }
+ if (hints->flags & PResizeInc) {
+ prop.widthInc = hints->width_inc;
+ prop.heightInc = hints->height_inc;
+ }
+ if (hints->flags & PAspect) {
+ prop.minAspectX = hints->min_aspect.x;
+ prop.minAspectY = hints->min_aspect.y;
+ prop.maxAspectX = hints->max_aspect.x;
+ prop.maxAspectY = hints->max_aspect.y;
+ }
+ return XChangeProperty (dpy, w, property, XA_WM_SIZE_HINTS, 32,
+ PropModeReplace, (unsigned char *) &prop,
+ OldNumPropSizeElements);
+}
+
+/*
+ * XSetWMHints sets the property
+ * WM_HINTS type: WM_HINTS format:32
+ */
+
+int
+XSetWMHints (
+ Display *dpy,
+ Window w,
+ XWMHints *wmhints)
+{
+ xPropWMHints prop;
+ memset(&prop, 0, sizeof(prop));
+ prop.flags = wmhints->flags;
+ if (wmhints->flags & InputHint)
+ prop.input = (wmhints->input == True ? 1 : 0);
+ if (wmhints->flags & StateHint)
+ prop.initialState = wmhints->initial_state;
+ if (wmhints->flags & IconPixmapHint)
+ prop.iconPixmap = wmhints->icon_pixmap;
+ if (wmhints->flags & IconWindowHint)
+ prop.iconWindow = wmhints->icon_window;
+ if (wmhints->flags & IconPositionHint) {
+ prop.iconX = wmhints->icon_x;
+ prop.iconY = wmhints->icon_y;
+ }
+ if (wmhints->flags & IconMaskHint)
+ prop.iconMask = wmhints->icon_mask;
+ if (wmhints->flags & WindowGroupHint)
+ prop.windowGroup = wmhints->window_group;
+ return XChangeProperty (dpy, w, XA_WM_HINTS, XA_WM_HINTS, 32,
+ PropModeReplace, (unsigned char *) &prop,
+ NumPropWMHintsElements);
+}
+
+
+
+/*
+ * XSetZoomHints sets the property
+ * WM_ZOOM_HINTS type: WM_SIZE_HINTS format: 32
+ */
+
+int
+XSetZoomHints (
+ Display *dpy,
+ Window w,
+ XSizeHints *zhints)
+{
+ return XSetSizeHints (dpy, w, zhints, XA_WM_ZOOM_HINTS);
+}
+
+
+/*
+ * XSetNormalHints sets the property
+ * WM_NORMAL_HINTS type: WM_SIZE_HINTS format: 32
+ */
+
+int
+XSetNormalHints ( /* old routine */
+ Display *dpy,
+ Window w,
+ XSizeHints *hints)
+{
+ return XSetSizeHints (dpy, w, hints, XA_WM_NORMAL_HINTS);
+}
+
+
+
+/*
+ * Note, the following is one of the few cases were we really do want sizeof
+ * when examining a protocol structure. This is because the XChangeProperty
+ * routine will take care of converting to host to network data structures.
+ */
+
+int
+XSetIconSizes (
+ Display *dpy,
+ Window w, /* typically, root */
+ XIconSize *list,
+ int count) /* number of items on the list */
+{
+ register int i;
+ xPropIconSize *pp, *prop;
+#define size_of_the_real_thing sizeof /* avoid grepping screwups */
+ unsigned nbytes = count * size_of_the_real_thing(xPropIconSize);
+#undef size_of_the_real_thing
+ if ((prop = pp = (xPropIconSize *) Xmalloc (nbytes))) {
+ for (i = 0; i < count; i++) {
+ pp->minWidth = list->min_width;
+ pp->minHeight = list->min_height;
+ pp->maxWidth = list->max_width;
+ pp->maxHeight = list->max_height;
+ pp->widthInc = list->width_inc;
+ pp->heightInc = list->height_inc;
+ pp += 1;
+ list += 1;
+ }
+ XChangeProperty (dpy, w, XA_WM_ICON_SIZE, XA_WM_ICON_SIZE, 32,
+ PropModeReplace, (unsigned char *) prop,
+ count * NumPropIconSizeElements);
+ Xfree ((char *)prop);
+ }
+ return 1;
+}
+
+int
+XSetCommand (
+ Display *dpy,
+ Window w,
+ char **argv,
+ int argc)
+{
+ register int i;
+ register int nbytes;
+ register char *buf, *bp;
+ for (i = 0, nbytes = 0; i < argc; i++) {
+ nbytes += safestrlen(argv[i]) + 1;
+ }
+ if ((bp = buf = Xmalloc((unsigned) nbytes))) {
+ /* copy arguments into single buffer */
+ for (i = 0; i < argc; i++) {
+ if (argv[i]) {
+ (void) strcpy(bp, argv[i]);
+ bp += strlen(argv[i]) + 1;
+ }
+ else
+ *bp++ = '\0';
+ }
+ XChangeProperty (dpy, w, XA_WM_COMMAND, XA_STRING, 8,
+ PropModeReplace, (unsigned char *)buf, nbytes);
+ Xfree(buf);
+ }
+ return 1;
+}
+/*
+ * XSetStandardProperties sets the following properties:
+ * WM_NAME type: STRING format: 8
+ * WM_ICON_NAME type: STRING format: 8
+ * WM_HINTS type: WM_HINTS format: 32
+ * WM_COMMAND type: STRING
+ * WM_NORMAL_HINTS type: WM_SIZE_HINTS format: 32
+ */
+
+int
+XSetStandardProperties (
+ Display *dpy,
+ Window w, /* window to decorate */
+ _Xconst char *name, /* name of application */
+ _Xconst char *icon_string,/* name string for icon */
+ Pixmap icon_pixmap, /* pixmap to use as icon, or None */
+ char **argv, /* command to be used to restart application */
+ int argc, /* count of arguments */
+ XSizeHints *hints) /* size hints for window in its normal state */
+{
+ XWMHints phints;
+ phints.flags = 0;
+
+ if (name != NULL) XStoreName (dpy, w, name);
+
+ if (icon_string != NULL) {
+ XChangeProperty (dpy, w, XA_WM_ICON_NAME, XA_STRING, 8,
+ PropModeReplace, (unsigned char *)icon_string, safestrlen(icon_string));
+ }
+
+ if (icon_pixmap != None) {
+ phints.icon_pixmap = icon_pixmap;
+ phints.flags |= IconPixmapHint;
+ }
+ if (argv != NULL) XSetCommand(dpy, w, argv, argc);
+
+ if (hints != NULL) XSetNormalHints(dpy, w, hints);
+
+ if (phints.flags != 0) XSetWMHints(dpy, w, &phints);
+
+ return 1;
+}
+
+int
+XSetTransientForHint(
+ Display *dpy,
+ Window w,
+ Window propWindow)
+{
+ return XChangeProperty(dpy, w, XA_WM_TRANSIENT_FOR, XA_WINDOW, 32,
+ PropModeReplace, (unsigned char *) &propWindow, 1);
+}
+
+int
+XSetClassHint(
+ Display *dpy,
+ Window w,
+ XClassHint *classhint)
+{
+ char *class_string;
+ char *s;
+ int len_nm, len_cl;
+
+ len_nm = safestrlen(classhint->res_name);
+ len_cl = safestrlen(classhint->res_class);
+ if ((class_string = s = Xmalloc((unsigned) (len_nm + len_cl + 2)))) {
+ if (len_nm) {
+ strcpy(s, classhint->res_name);
+ s += len_nm + 1;
+ }
+ else
+ *s++ = '\0';
+ if (len_cl)
+ strcpy(s, classhint->res_class);
+ else
+ *s = '\0';
+ XChangeProperty(dpy, w, XA_WM_CLASS, XA_STRING, 8,
+ PropModeReplace, (unsigned char *) class_string,
+ len_nm+len_cl+2);
+ Xfree(class_string);
+ }
+ return 1;
+}
diff --git a/libX11/src/SetIFocus.c b/libX11/src/SetIFocus.c
index 44cc30b75..bee96ca82 100644
--- a/libX11/src/SetIFocus.c
+++ b/libX11/src/SetIFocus.c
@@ -1,50 +1,50 @@
-/*
-
-Copyright 1986, 1998 The Open Group
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall not be
-used in advertising or otherwise to promote the sale, use or other dealings
-in this Software without prior written authorization from The Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-
-int
-XSetInputFocus(
- register Display *dpy,
- Window focus,
- int revert_to,
- Time time)
-{
- register xSetInputFocusReq *req;
-
- LockDisplay(dpy);
- GetReq(SetInputFocus, req);
- req->focus = focus;
- req->revertTo = revert_to;
- req->time = time;
- UnlockDisplay(dpy);
- SyncHandle();
- return 1;
-}
-
+/*
+
+Copyright 1986, 1998 The Open Group
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group shall not be
+used in advertising or otherwise to promote the sale, use or other dealings
+in this Software without prior written authorization from The Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+
+int
+XSetInputFocus(
+ register Display *dpy,
+ Window focus,
+ int revert_to,
+ Time time)
+{
+ register xSetInputFocusReq *req;
+
+ LockDisplay(dpy);
+ GetReq(SetInputFocus, req);
+ req->focus = focus;
+ req->revertTo = revert_to;
+ req->time = time;
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return 1;
+}
+
diff --git a/libX11/src/SetLStyle.c b/libX11/src/SetLStyle.c
index e730abb6e..8b00fae9c 100644
--- a/libX11/src/SetLStyle.c
+++ b/libX11/src/SetLStyle.c
@@ -1,63 +1,63 @@
-/*
-
-Copyright 1986, 1998 The Open Group
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall not be
-used in advertising or otherwise to promote the sale, use or other dealings
-in this Software without prior written authorization from The Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-
-int
-XSetLineAttributes(
- register Display *dpy,
- GC gc,
- unsigned int linewidth, /* CARD16 */
- int linestyle,
- int capstyle,
- int joinstyle)
-{
- XGCValues *gv = &gc->values;
-
- LockDisplay(dpy);
- if (linewidth != gv->line_width) {
- gv->line_width = linewidth;
- gc->dirty |= GCLineWidth;
- }
- if (linestyle != gv->line_style) {
- gv->line_style = linestyle;
- gc->dirty |= GCLineStyle;
- }
- if (capstyle != gv->cap_style) {
- gv->cap_style = capstyle;
- gc->dirty |= GCCapStyle;
- }
- if (joinstyle != gv->join_style) {
- gv->join_style = joinstyle;
- gc->dirty |= GCJoinStyle;
- }
- UnlockDisplay(dpy);
- SyncHandle();
- return 1;
-}
+/*
+
+Copyright 1986, 1998 The Open Group
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group shall not be
+used in advertising or otherwise to promote the sale, use or other dealings
+in this Software without prior written authorization from The Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+
+int
+XSetLineAttributes(
+ register Display *dpy,
+ GC gc,
+ unsigned int linewidth, /* CARD16 */
+ int linestyle,
+ int capstyle,
+ int joinstyle)
+{
+ XGCValues *gv = &gc->values;
+
+ LockDisplay(dpy);
+ if (linewidth != gv->line_width) {
+ gv->line_width = linewidth;
+ gc->dirty |= GCLineWidth;
+ }
+ if (linestyle != gv->line_style) {
+ gv->line_style = linestyle;
+ gc->dirty |= GCLineStyle;
+ }
+ if (capstyle != gv->cap_style) {
+ gv->cap_style = capstyle;
+ gc->dirty |= GCCapStyle;
+ }
+ if (joinstyle != gv->join_style) {
+ gv->join_style = joinstyle;
+ gc->dirty |= GCJoinStyle;
+ }
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return 1;
+}
diff --git a/libX11/src/SetNrmHint.c b/libX11/src/SetNrmHint.c
index 73e3dc742..94b447f26 100644
--- a/libX11/src/SetNrmHint.c
+++ b/libX11/src/SetNrmHint.c
@@ -1,127 +1,127 @@
-
-/***********************************************************
-Copyright 1988 by Wyse Technology, Inc., San Jose, Ca,
-Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts,
-
- All Rights Reserved
-
-Permission to use, copy, modify, and distribute this software and its
-documentation for any purpose and without fee is hereby granted,
-provided that the above copyright notice appear in all copies and that
-both that copyright notice and this permission notice appear in
-supporting documentation, and that the name Digital not be
-used in advertising or publicity pertaining to distribution of the
-software without specific, written prior permission.
-
-DIGITAL AND WYSE DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
-INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
-EVENT SHALL DIGITAL OR WYSE BE LIABLE FOR ANY SPECIAL, INDIRECT OR
-CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF
-USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
-OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
-PERFORMANCE OF THIS SOFTWARE.
-
-******************************************************************/
-/*
-
-Copyright 1987, 1988, 1998 The Open Group
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
-
-The above copyright notice and this permission notice shall be included
-in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
-IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR
-OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
-ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall
-not be used in advertising or otherwise to promote the sale, use or
-other dealings in this Software without prior written authorization
-from The Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include <X11/Xlibint.h>
-#include <X11/Xutil.h>
-#include "Xatomtype.h"
-#include <X11/Xatom.h>
-#include <X11/Xos.h>
-
-void XSetWMSizeHints (
- Display *dpy,
- Window w,
- XSizeHints *hints,
- Atom prop)
-{
- xPropSizeHints data;
-
- memset(&data, 0, sizeof(data));
- data.flags = (hints->flags &
- (USPosition|USSize|PPosition|PSize|PMinSize|PMaxSize|
- PResizeInc|PAspect|PBaseSize|PWinGravity));
-
- /*
- * The x, y, width, and height fields are obsolete; but, applications
- * that want to work with old window managers might set them.
- */
- if (hints->flags & (USPosition|PPosition)) {
- data.x = hints->x;
- data.y = hints->y;
- }
- if (hints->flags & (USSize|PSize)) {
- data.width = hints->width;
- data.height = hints->height;
- }
-
- if (hints->flags & PMinSize) {
- data.minWidth = hints->min_width;
- data.minHeight = hints->min_height;
- }
- if (hints->flags & PMaxSize) {
- data.maxWidth = hints->max_width;
- data.maxHeight = hints->max_height;
- }
- if (hints->flags & PResizeInc) {
- data.widthInc = hints->width_inc;
- data.heightInc = hints->height_inc;
- }
- if (hints->flags & PAspect) {
- data.minAspectX = hints->min_aspect.x;
- data.minAspectY = hints->min_aspect.y;
- data.maxAspectX = hints->max_aspect.x;
- data.maxAspectY = hints->max_aspect.y;
- }
- if (hints->flags & PBaseSize) {
- data.baseWidth = hints->base_width;
- data.baseHeight = hints->base_height;
- }
- if (hints->flags & PWinGravity) {
- data.winGravity = hints->win_gravity;
- }
-
- XChangeProperty (dpy, w, prop, XA_WM_SIZE_HINTS, 32,
- PropModeReplace, (unsigned char *) &data,
- NumPropSizeElements);
-}
-
-
-void XSetWMNormalHints (
- Display *dpy,
- Window w,
- XSizeHints *hints)
-{
- XSetWMSizeHints (dpy, w, hints, XA_WM_NORMAL_HINTS);
-}
-
+
+/***********************************************************
+Copyright 1988 by Wyse Technology, Inc., San Jose, Ca,
+Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts,
+
+ All Rights Reserved
+
+Permission to use, copy, modify, and distribute this software and its
+documentation for any purpose and without fee is hereby granted,
+provided that the above copyright notice appear in all copies and that
+both that copyright notice and this permission notice appear in
+supporting documentation, and that the name Digital not be
+used in advertising or publicity pertaining to distribution of the
+software without specific, written prior permission.
+
+DIGITAL AND WYSE DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
+INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
+EVENT SHALL DIGITAL OR WYSE BE LIABLE FOR ANY SPECIAL, INDIRECT OR
+CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF
+USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
+OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+PERFORMANCE OF THIS SOFTWARE.
+
+******************************************************************/
+/*
+
+Copyright 1987, 1988, 1998 The Open Group
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
+
+The above copyright notice and this permission notice shall be included
+in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR
+OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
+ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group shall
+not be used in advertising or otherwise to promote the sale, use or
+other dealings in this Software without prior written authorization
+from The Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include <X11/Xlibint.h>
+#include <X11/Xutil.h>
+#include "Xatomtype.h"
+#include <X11/Xatom.h>
+#include <X11/Xos.h>
+
+void XSetWMSizeHints (
+ Display *dpy,
+ Window w,
+ XSizeHints *hints,
+ Atom prop)
+{
+ xPropSizeHints data;
+
+ memset(&data, 0, sizeof(data));
+ data.flags = (hints->flags &
+ (USPosition|USSize|PPosition|PSize|PMinSize|PMaxSize|
+ PResizeInc|PAspect|PBaseSize|PWinGravity));
+
+ /*
+ * The x, y, width, and height fields are obsolete; but, applications
+ * that want to work with old window managers might set them.
+ */
+ if (hints->flags & (USPosition|PPosition)) {
+ data.x = hints->x;
+ data.y = hints->y;
+ }
+ if (hints->flags & (USSize|PSize)) {
+ data.width = hints->width;
+ data.height = hints->height;
+ }
+
+ if (hints->flags & PMinSize) {
+ data.minWidth = hints->min_width;
+ data.minHeight = hints->min_height;
+ }
+ if (hints->flags & PMaxSize) {
+ data.maxWidth = hints->max_width;
+ data.maxHeight = hints->max_height;
+ }
+ if (hints->flags & PResizeInc) {
+ data.widthInc = hints->width_inc;
+ data.heightInc = hints->height_inc;
+ }
+ if (hints->flags & PAspect) {
+ data.minAspectX = hints->min_aspect.x;
+ data.minAspectY = hints->min_aspect.y;
+ data.maxAspectX = hints->max_aspect.x;
+ data.maxAspectY = hints->max_aspect.y;
+ }
+ if (hints->flags & PBaseSize) {
+ data.baseWidth = hints->base_width;
+ data.baseHeight = hints->base_height;
+ }
+ if (hints->flags & PWinGravity) {
+ data.winGravity = hints->win_gravity;
+ }
+
+ XChangeProperty (dpy, w, prop, XA_WM_SIZE_HINTS, 32,
+ PropModeReplace, (unsigned char *) &data,
+ NumPropSizeElements);
+}
+
+
+void XSetWMNormalHints (
+ Display *dpy,
+ Window w,
+ XSizeHints *hints)
+{
+ XSetWMSizeHints (dpy, w, hints, XA_WM_NORMAL_HINTS);
+}
+
diff --git a/libX11/src/SetPMask.c b/libX11/src/SetPMask.c
index 42659da3e..9f236b00b 100644
--- a/libX11/src/SetPMask.c
+++ b/libX11/src/SetPMask.c
@@ -1,46 +1,46 @@
-/*
-
-Copyright 1986, 1998 The Open Group
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall not be
-used in advertising or otherwise to promote the sale, use or other dealings
-in this Software without prior written authorization from The Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-
-int
-XSetPlaneMask (
- register Display *dpy,
- GC gc,
- unsigned long planemask) /* CARD32 */
-{
- LockDisplay(dpy);
- if (gc->values.plane_mask != planemask) {
- gc->values.plane_mask = planemask;
- gc->dirty |= GCPlaneMask;
- }
- UnlockDisplay(dpy);
- SyncHandle();
- return 1;
-}
+/*
+
+Copyright 1986, 1998 The Open Group
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group shall not be
+used in advertising or otherwise to promote the sale, use or other dealings
+in this Software without prior written authorization from The Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+
+int
+XSetPlaneMask (
+ register Display *dpy,
+ GC gc,
+ unsigned long planemask) /* CARD32 */
+{
+ LockDisplay(dpy);
+ if (gc->values.plane_mask != planemask) {
+ gc->values.plane_mask = planemask;
+ gc->dirty |= GCPlaneMask;
+ }
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return 1;
+}
diff --git a/libX11/src/SetPntMap.c b/libX11/src/SetPntMap.c
index 5b278ff2b..2e292019f 100644
--- a/libX11/src/SetPntMap.c
+++ b/libX11/src/SetPntMap.c
@@ -1,77 +1,77 @@
-/*
-
-Copyright 1986, 1998 The Open Group
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall not be
-used in advertising or otherwise to promote the sale, use or other dealings
-in this Software without prior written authorization from The Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-/* returns either DeviceMappingSuccess or DeviceMappingBusy */
-
-int
-XSetPointerMapping (
- register Display *dpy,
- _Xconst unsigned char *map,
- int nmaps)
- {
- register xSetPointerMappingReq *req;
- xSetPointerMappingReply rep;
-
- LockDisplay(dpy);
- GetReq (SetPointerMapping, req);
- req->nElts = nmaps;
- req->length += (nmaps + 3)>>2;
- Data (dpy, (char *)map, (long) nmaps);
- if (_XReply (dpy, (xReply *)&rep, 0, xFalse) == 0)
- rep.success = MappingSuccess;
- UnlockDisplay(dpy);
- SyncHandle();
- return ((int) rep.success);
- }
-
-int
-XChangeKeyboardMapping (
- register Display *dpy,
- int first_keycode,
- int keysyms_per_keycode,
- KeySym *keysyms,
- int nkeycodes)
-{
- register long nbytes;
- register xChangeKeyboardMappingReq *req;
-
- LockDisplay(dpy);
- GetReq (ChangeKeyboardMapping, req);
- req->firstKeyCode = first_keycode;
- req->keyCodes = nkeycodes;
- req->keySymsPerKeyCode = keysyms_per_keycode;
- req->length += nkeycodes * keysyms_per_keycode;
- nbytes = keysyms_per_keycode * nkeycodes * 4;
- Data32 (dpy, (long *)keysyms, nbytes);
- UnlockDisplay(dpy);
- SyncHandle();
- return 0;
- }
-
+/*
+
+Copyright 1986, 1998 The Open Group
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group shall not be
+used in advertising or otherwise to promote the sale, use or other dealings
+in this Software without prior written authorization from The Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+/* returns either DeviceMappingSuccess or DeviceMappingBusy */
+
+int
+XSetPointerMapping (
+ register Display *dpy,
+ _Xconst unsigned char *map,
+ int nmaps)
+ {
+ register xSetPointerMappingReq *req;
+ xSetPointerMappingReply rep;
+
+ LockDisplay(dpy);
+ GetReq (SetPointerMapping, req);
+ req->nElts = nmaps;
+ req->length += (nmaps + 3)>>2;
+ Data (dpy, (char *)map, (long) nmaps);
+ if (_XReply (dpy, (xReply *)&rep, 0, xFalse) == 0)
+ rep.success = MappingSuccess;
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return ((int) rep.success);
+ }
+
+int
+XChangeKeyboardMapping (
+ register Display *dpy,
+ int first_keycode,
+ int keysyms_per_keycode,
+ KeySym *keysyms,
+ int nkeycodes)
+{
+ register long nbytes;
+ register xChangeKeyboardMappingReq *req;
+
+ LockDisplay(dpy);
+ GetReq (ChangeKeyboardMapping, req);
+ req->firstKeyCode = first_keycode;
+ req->keyCodes = nkeycodes;
+ req->keySymsPerKeyCode = keysyms_per_keycode;
+ req->length += nkeycodes * keysyms_per_keycode;
+ nbytes = keysyms_per_keycode * nkeycodes * 4;
+ Data32 (dpy, (long *)keysyms, nbytes);
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return 0;
+ }
+
diff --git a/libX11/src/SetRGBCMap.c b/libX11/src/SetRGBCMap.c
index 8acf98d6f..d2cbb5b5b 100644
--- a/libX11/src/SetRGBCMap.c
+++ b/libX11/src/SetRGBCMap.c
@@ -1,100 +1,100 @@
-/*
-
-Copyright 1989, 1998 The Open Group
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
-
-The above copyright notice and this permission notice shall be included
-in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
-IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR
-OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
-ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall
-not be used in advertising or otherwise to promote the sale, use or
-other dealings in this Software without prior written authorization
-from The Open Group.
-
-*/
-
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include <X11/Xlibint.h>
-#include <X11/Xutil.h>
-#include "Xatomtype.h"
-#include <X11/Xatom.h>
-
-void XSetRGBColormaps (
- Display *dpy,
- Window w,
- XStandardColormap *cmaps,
- int count,
- Atom property) /* XA_RGB_BEST_MAP, etc. */
-{
- register int i; /* iterator variable */
- register xPropStandardColormap *map; /* tmp variable, data in prop */
- register XStandardColormap *cmap; /* tmp variable, user data */
- xPropStandardColormap *data, tmpdata; /* scratch data */
- int mode = PropModeReplace; /* for partial writes */
- Bool alloced_scratch_space; /* do we need to free? */
-
-
- if (count < 1) return;
-
- /*
- * if doing more than one, allocate scratch space for it
- */
- if ((count > 1) && ((data = ((xPropStandardColormap *)
- Xmalloc(count*sizeof(xPropStandardColormap))))
- != NULL)) {
- alloced_scratch_space = True;
- } else {
- data = &tmpdata;
- alloced_scratch_space = False;
- }
-
-
- /*
- * Do the iteration. If using temp space put out each part of the prop;
- * otherwise, wait until the end and blast it all at once.
- */
- for (i = count, map = data, cmap = cmaps; i > 0; i--, cmap++) {
- map->colormap = cmap->colormap;
- map->red_max = cmap->red_max;
- map->red_mult = cmap->red_mult;
- map->green_max = cmap->green_max;
- map->green_mult = cmap->green_mult;
- map->blue_max = cmap->blue_max;
- map->blue_mult = cmap->blue_mult;
- map->base_pixel = cmap->base_pixel;
- map->visualid = cmap->visualid;
- map->killid = cmap->killid;
-
- if (alloced_scratch_space) {
- map++;
- } else {
- XChangeProperty (dpy, w, property, XA_RGB_COLOR_MAP, 32, mode,
- (unsigned char *) data,
- NumPropStandardColormapElements);
- mode = PropModeAppend;
- }
- }
-
- if (alloced_scratch_space) {
- XChangeProperty (dpy, w, property, XA_RGB_COLOR_MAP, 32,
- PropModeReplace, (unsigned char *) data,
- (int) (count * NumPropStandardColormapElements));
- Xfree ((char *) data);
- }
-}
+/*
+
+Copyright 1989, 1998 The Open Group
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
+
+The above copyright notice and this permission notice shall be included
+in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR
+OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
+ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group shall
+not be used in advertising or otherwise to promote the sale, use or
+other dealings in this Software without prior written authorization
+from The Open Group.
+
+*/
+
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include <X11/Xlibint.h>
+#include <X11/Xutil.h>
+#include "Xatomtype.h"
+#include <X11/Xatom.h>
+
+void XSetRGBColormaps (
+ Display *dpy,
+ Window w,
+ XStandardColormap *cmaps,
+ int count,
+ Atom property) /* XA_RGB_BEST_MAP, etc. */
+{
+ register int i; /* iterator variable */
+ register xPropStandardColormap *map; /* tmp variable, data in prop */
+ register XStandardColormap *cmap; /* tmp variable, user data */
+ xPropStandardColormap *data, tmpdata; /* scratch data */
+ int mode = PropModeReplace; /* for partial writes */
+ Bool alloced_scratch_space; /* do we need to free? */
+
+
+ if (count < 1) return;
+
+ /*
+ * if doing more than one, allocate scratch space for it
+ */
+ if ((count > 1) && ((data = ((xPropStandardColormap *)
+ Xmalloc(count*sizeof(xPropStandardColormap))))
+ != NULL)) {
+ alloced_scratch_space = True;
+ } else {
+ data = &tmpdata;
+ alloced_scratch_space = False;
+ }
+
+
+ /*
+ * Do the iteration. If using temp space put out each part of the prop;
+ * otherwise, wait until the end and blast it all at once.
+ */
+ for (i = count, map = data, cmap = cmaps; i > 0; i--, cmap++) {
+ map->colormap = cmap->colormap;
+ map->red_max = cmap->red_max;
+ map->red_mult = cmap->red_mult;
+ map->green_max = cmap->green_max;
+ map->green_mult = cmap->green_mult;
+ map->blue_max = cmap->blue_max;
+ map->blue_mult = cmap->blue_mult;
+ map->base_pixel = cmap->base_pixel;
+ map->visualid = cmap->visualid;
+ map->killid = cmap->killid;
+
+ if (alloced_scratch_space) {
+ map++;
+ } else {
+ XChangeProperty (dpy, w, property, XA_RGB_COLOR_MAP, 32, mode,
+ (unsigned char *) data,
+ NumPropStandardColormapElements);
+ mode = PropModeAppend;
+ }
+ }
+
+ if (alloced_scratch_space) {
+ XChangeProperty (dpy, w, property, XA_RGB_COLOR_MAP, 32,
+ PropModeReplace, (unsigned char *) data,
+ (int) (count * NumPropStandardColormapElements));
+ Xfree ((char *) data);
+ }
+}
diff --git a/libX11/src/SetSOwner.c b/libX11/src/SetSOwner.c
index c521ab714..bc8f56403 100644
--- a/libX11/src/SetSOwner.c
+++ b/libX11/src/SetSOwner.c
@@ -1,49 +1,49 @@
-/*
-
-Copyright 1986, 1998 The Open Group
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall not be
-used in advertising or otherwise to promote the sale, use or other dealings
-in this Software without prior written authorization from The Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-
-int
-XSetSelectionOwner(
- register Display *dpy,
- Atom selection,
- Window owner,
- Time time)
-{
- register xSetSelectionOwnerReq *req;
-
- LockDisplay(dpy);
- GetReq(SetSelectionOwner,req);
- req->selection = selection;
- req->window = owner;
- req->time = time;
- UnlockDisplay(dpy);
- SyncHandle();
- return 1;
-}
+/*
+
+Copyright 1986, 1998 The Open Group
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group shall not be
+used in advertising or otherwise to promote the sale, use or other dealings
+in this Software without prior written authorization from The Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+
+int
+XSetSelectionOwner(
+ register Display *dpy,
+ Atom selection,
+ Window owner,
+ Time time)
+{
+ register xSetSelectionOwnerReq *req;
+
+ LockDisplay(dpy);
+ GetReq(SetSelectionOwner,req);
+ req->selection = selection;
+ req->window = owner;
+ req->time = time;
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return 1;
+}
diff --git a/libX11/src/SetSSaver.c b/libX11/src/SetSSaver.c
index 1a3b85c96..adce749e1 100644
--- a/libX11/src/SetSSaver.c
+++ b/libX11/src/SetSSaver.c
@@ -1,53 +1,53 @@
-/*
-
-Copyright 1986, 1998 The Open Group
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall not be
-used in advertising or otherwise to promote the sale, use or other dealings
-in this Software without prior written authorization from The Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-
-int
-XSetScreenSaver(
- register Display *dpy,
- int timeout,
- int interval,
- int prefer_blank,
- int allow_exp)
-
-{
- register xSetScreenSaverReq *req;
-
- LockDisplay(dpy);
- GetReq(SetScreenSaver, req);
- req->timeout = timeout;
- req->interval = interval;
- req->preferBlank = prefer_blank;
- req->allowExpose = allow_exp;
- UnlockDisplay(dpy);
- SyncHandle();
- return 1;
-}
-
+/*
+
+Copyright 1986, 1998 The Open Group
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group shall not be
+used in advertising or otherwise to promote the sale, use or other dealings
+in this Software without prior written authorization from The Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+
+int
+XSetScreenSaver(
+ register Display *dpy,
+ int timeout,
+ int interval,
+ int prefer_blank,
+ int allow_exp)
+
+{
+ register xSetScreenSaverReq *req;
+
+ LockDisplay(dpy);
+ GetReq(SetScreenSaver, req);
+ req->timeout = timeout;
+ req->interval = interval;
+ req->preferBlank = prefer_blank;
+ req->allowExpose = allow_exp;
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return 1;
+}
+
diff --git a/libX11/src/SetStCmap.c b/libX11/src/SetStCmap.c
index 1ed9edba6..8c3ae6e3b 100644
--- a/libX11/src/SetStCmap.c
+++ b/libX11/src/SetStCmap.c
@@ -1,95 +1,95 @@
-
-/***********************************************************
-
-Copyright 1987, 1998 The Open Group
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall not be
-used in advertising or otherwise to promote the sale, use or other dealings
-in this Software without prior written authorization from The Open Group.
-
-
-Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts.
-
- All Rights Reserved
-
-Permission to use, copy, modify, and distribute this software and its
-documentation for any purpose and without fee is hereby granted,
-provided that the above copyright notice appear in all copies and that
-both that copyright notice and this permission notice appear in
-supporting documentation, and that the name of Digital not be
-used in advertising or publicity pertaining to distribution of the
-software without specific, written prior permission.
-
-DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
-ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
-DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
-ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
-WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
-ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
-SOFTWARE.
-
-******************************************************************/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include <X11/Xlibint.h>
-#include <X11/Xutil.h>
-#include "Xatomtype.h"
-#include <X11/Xatom.h>
-
-/*
- * WARNING
- *
- * This is a pre-ICCCM routine. It must not reference any of the new fields
- * in the XStandardColormap structure.
- */
-
-void XSetStandardColormap(
- Display *dpy,
- Window w,
- XStandardColormap *cmap,
- Atom property) /* XA_RGB_BEST_MAP, etc. */
-{
- Screen *sp;
- XStandardColormap stdcmap;
-
- sp = _XScreenOfWindow (dpy, w);
- if (!sp) {
- /* already caught the XGetGeometry error in _XScreenOfWindow */
- return;
- }
-
- stdcmap.colormap = cmap->colormap;
- stdcmap.red_max = cmap->red_max;
- stdcmap.red_mult = cmap->red_mult;
- stdcmap.green_max = cmap->green_max;
- stdcmap.green_mult = cmap->green_mult;
- stdcmap.blue_max = cmap->blue_max;
- stdcmap.blue_mult = cmap->blue_mult;
- stdcmap.base_pixel = cmap->base_pixel;
- stdcmap.visualid = sp->root_visual->visualid;
- stdcmap.killid = None; /* don't know how to kill this one */
-
-#ifdef XCMS
- XSetRGBColormaps (dpy, w, &stdcmap, 1, property);
-#endif
-
- return;
-}
+
+/***********************************************************
+
+Copyright 1987, 1998 The Open Group
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group shall not be
+used in advertising or otherwise to promote the sale, use or other dealings
+in this Software without prior written authorization from The Open Group.
+
+
+Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts.
+
+ All Rights Reserved
+
+Permission to use, copy, modify, and distribute this software and its
+documentation for any purpose and without fee is hereby granted,
+provided that the above copyright notice appear in all copies and that
+both that copyright notice and this permission notice appear in
+supporting documentation, and that the name of Digital not be
+used in advertising or publicity pertaining to distribution of the
+software without specific, written prior permission.
+
+DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
+ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
+DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
+ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
+WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
+ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
+SOFTWARE.
+
+******************************************************************/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include <X11/Xlibint.h>
+#include <X11/Xutil.h>
+#include "Xatomtype.h"
+#include <X11/Xatom.h>
+
+/*
+ * WARNING
+ *
+ * This is a pre-ICCCM routine. It must not reference any of the new fields
+ * in the XStandardColormap structure.
+ */
+
+void XSetStandardColormap(
+ Display *dpy,
+ Window w,
+ XStandardColormap *cmap,
+ Atom property) /* XA_RGB_BEST_MAP, etc. */
+{
+ Screen *sp;
+ XStandardColormap stdcmap;
+
+ sp = _XScreenOfWindow (dpy, w);
+ if (!sp) {
+ /* already caught the XGetGeometry error in _XScreenOfWindow */
+ return;
+ }
+
+ stdcmap.colormap = cmap->colormap;
+ stdcmap.red_max = cmap->red_max;
+ stdcmap.red_mult = cmap->red_mult;
+ stdcmap.green_max = cmap->green_max;
+ stdcmap.green_mult = cmap->green_mult;
+ stdcmap.blue_max = cmap->blue_max;
+ stdcmap.blue_mult = cmap->blue_mult;
+ stdcmap.base_pixel = cmap->base_pixel;
+ stdcmap.visualid = sp->root_visual->visualid;
+ stdcmap.killid = None; /* don't know how to kill this one */
+
+#ifdef XCMS
+ XSetRGBColormaps (dpy, w, &stdcmap, 1, property);
+#endif
+
+ return;
+}
diff --git a/libX11/src/SetState.c b/libX11/src/SetState.c
index 7f51518f6..e5aa21c05 100644
--- a/libX11/src/SetState.c
+++ b/libX11/src/SetState.c
@@ -1,64 +1,64 @@
-/*
-
-Copyright 1986, 1998 The Open Group
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall not be
-used in advertising or otherwise to promote the sale, use or other dealings
-in this Software without prior written authorization from The Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-
-int
-XSetState(
- register Display *dpy,
- GC gc,
- unsigned long foreground,
- unsigned long background,
- int function,
- unsigned long planemask)
-{
- XGCValues *gv = &gc->values;
-
- LockDisplay(dpy);
-
- if (function != gv->function) {
- gv->function = function;
- gc->dirty |= GCFunction;
- }
- if (planemask != gv->plane_mask) {
- gv->plane_mask = planemask;
- gc->dirty |= GCPlaneMask;
- }
- if (foreground != gv->foreground) {
- gv->foreground = foreground;
- gc->dirty |= GCForeground;
- }
- if (background != gv->background) {
- gv->background = background;
- gc->dirty |= GCBackground;
- }
- UnlockDisplay(dpy);
- SyncHandle();
- return 1;
-}
+/*
+
+Copyright 1986, 1998 The Open Group
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group shall not be
+used in advertising or otherwise to promote the sale, use or other dealings
+in this Software without prior written authorization from The Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+
+int
+XSetState(
+ register Display *dpy,
+ GC gc,
+ unsigned long foreground,
+ unsigned long background,
+ int function,
+ unsigned long planemask)
+{
+ XGCValues *gv = &gc->values;
+
+ LockDisplay(dpy);
+
+ if (function != gv->function) {
+ gv->function = function;
+ gc->dirty |= GCFunction;
+ }
+ if (planemask != gv->plane_mask) {
+ gv->plane_mask = planemask;
+ gc->dirty |= GCPlaneMask;
+ }
+ if (foreground != gv->foreground) {
+ gv->foreground = foreground;
+ gc->dirty |= GCForeground;
+ }
+ if (background != gv->background) {
+ gv->background = background;
+ gc->dirty |= GCBackground;
+ }
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return 1;
+}
diff --git a/libX11/src/SetStip.c b/libX11/src/SetStip.c
index 752cc7ec6..e95882786 100644
--- a/libX11/src/SetStip.c
+++ b/libX11/src/SetStip.c
@@ -1,46 +1,46 @@
-/*
-
-Copyright 1986, 1998 The Open Group
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall not be
-used in advertising or otherwise to promote the sale, use or other dealings
-in this Software without prior written authorization from The Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-
-int
-XSetStipple (
- register Display *dpy,
- GC gc,
- Pixmap stipple)
-{
- LockDisplay(dpy);
- /* always update, since client may have changed pixmap contents */
- gc->values.stipple = stipple;
- gc->dirty |= GCStipple;
- _XFlushGCCache(dpy, gc);
- UnlockDisplay(dpy);
- SyncHandle();
- return 1;
-}
+/*
+
+Copyright 1986, 1998 The Open Group
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group shall not be
+used in advertising or otherwise to promote the sale, use or other dealings
+in this Software without prior written authorization from The Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+
+int
+XSetStipple (
+ register Display *dpy,
+ GC gc,
+ Pixmap stipple)
+{
+ LockDisplay(dpy);
+ /* always update, since client may have changed pixmap contents */
+ gc->values.stipple = stipple;
+ gc->dirty |= GCStipple;
+ _XFlushGCCache(dpy, gc);
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return 1;
+}
diff --git a/libX11/src/SetTSOrig.c b/libX11/src/SetTSOrig.c
index 7259a7f61..0117c818b 100644
--- a/libX11/src/SetTSOrig.c
+++ b/libX11/src/SetTSOrig.c
@@ -1,53 +1,53 @@
-/*
-
-Copyright 1986, 1998 The Open Group
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall not be
-used in advertising or otherwise to promote the sale, use or other dealings
-in this Software without prior written authorization from The Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-
-int
-XSetTSOrigin (
- register Display *dpy,
- GC gc,
- int x,
- int y)
-{
- XGCValues *gv = &gc->values;
-
- LockDisplay(dpy);
- if (x != gv->ts_x_origin) {
- gv->ts_x_origin = x;
- gc->dirty |= GCTileStipXOrigin;
- }
- if (y != gv->ts_y_origin) {
- gv->ts_y_origin = y;
- gc->dirty |= GCTileStipYOrigin;
- }
- UnlockDisplay(dpy);
- SyncHandle();
- return 1;
-}
+/*
+
+Copyright 1986, 1998 The Open Group
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group shall not be
+used in advertising or otherwise to promote the sale, use or other dealings
+in this Software without prior written authorization from The Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+
+int
+XSetTSOrigin (
+ register Display *dpy,
+ GC gc,
+ int x,
+ int y)
+{
+ XGCValues *gv = &gc->values;
+
+ LockDisplay(dpy);
+ if (x != gv->ts_x_origin) {
+ gv->ts_x_origin = x;
+ gc->dirty |= GCTileStipXOrigin;
+ }
+ if (y != gv->ts_y_origin) {
+ gv->ts_y_origin = y;
+ gc->dirty |= GCTileStipYOrigin;
+ }
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return 1;
+}
diff --git a/libX11/src/SetTile.c b/libX11/src/SetTile.c
index 32b91ffa0..d32edff06 100644
--- a/libX11/src/SetTile.c
+++ b/libX11/src/SetTile.c
@@ -1,46 +1,46 @@
-/*
-
-Copyright 1986, 1998 The Open Group
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall not be
-used in advertising or otherwise to promote the sale, use or other dealings
-in this Software without prior written authorization from The Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-
-int
-XSetTile (
- register Display *dpy,
- GC gc,
- Pixmap tile)
-{
- LockDisplay(dpy);
- /* always update, since client may have changed pixmap contents */
- gc->values.tile = tile;
- gc->dirty |= GCTile;
- _XFlushGCCache(dpy, gc);
- UnlockDisplay(dpy);
- SyncHandle();
- return 1;
-}
+/*
+
+Copyright 1986, 1998 The Open Group
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group shall not be
+used in advertising or otherwise to promote the sale, use or other dealings
+in this Software without prior written authorization from The Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+
+int
+XSetTile (
+ register Display *dpy,
+ GC gc,
+ Pixmap tile)
+{
+ LockDisplay(dpy);
+ /* always update, since client may have changed pixmap contents */
+ gc->values.tile = tile;
+ gc->dirty |= GCTile;
+ _XFlushGCCache(dpy, gc);
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return 1;
+}
diff --git a/libX11/src/SetTxtProp.c b/libX11/src/SetTxtProp.c
index 55de0b96f..48689bcf1 100644
--- a/libX11/src/SetTxtProp.c
+++ b/libX11/src/SetTxtProp.c
@@ -1,93 +1,93 @@
-/***********************************************************
-Copyright 1988 by Wyse Technology, Inc., San Jose, Ca.
-
- All Rights Reserved
-
-Permission to use, copy, modify, and distribute this software and its
-documentation for any purpose and without fee is hereby granted,
-provided that the above copyright notice appear in all copies and that
-both that copyright notice and this permission notice appear in
-supporting documentation, and that the name of Wyse not be
-used in advertising or publicity pertaining to distribution of the
-software without specific, written prior permission.
-
-WYSE DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
-ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
-DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
-ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
-WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
-ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
-SOFTWARE.
-
-******************************************************************/
-/*
-
-Copyright 1988, 1998 The Open Group
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
-
-The above copyright notice and this permission notice shall be included
-in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
-IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR
-OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
-ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall
-not be used in advertising or otherwise to promote the sale, use or
-other dealings in this Software without prior written authorization
-from The Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include <X11/Xlibint.h>
-#include <X11/Xatom.h>
-#include <X11/Xutil.h>
-#include <X11/Xos.h>
-#include <stdio.h>
-
-void XSetTextProperty (
- Display *dpy,
- Window w,
- XTextProperty *tp,
- Atom property)
-{
- XChangeProperty (dpy, w, property, tp->encoding, tp->format,
- PropModeReplace, tp->value, tp->nitems);
-}
-
-void XSetWMName (
- Display *dpy,
- Window w,
- XTextProperty *tp)
-{
- XSetTextProperty (dpy, w, tp, XA_WM_NAME);
-}
-
-void XSetWMIconName (
- Display *dpy,
- Window w,
- XTextProperty *tp)
-{
- XSetTextProperty (dpy, w, tp, XA_WM_ICON_NAME);
-}
-
-void XSetWMClientMachine (
- Display *dpy,
- Window w,
- XTextProperty *tp)
-{
- XSetTextProperty (dpy, w, tp, XA_WM_CLIENT_MACHINE);
-}
-
+/***********************************************************
+Copyright 1988 by Wyse Technology, Inc., San Jose, Ca.
+
+ All Rights Reserved
+
+Permission to use, copy, modify, and distribute this software and its
+documentation for any purpose and without fee is hereby granted,
+provided that the above copyright notice appear in all copies and that
+both that copyright notice and this permission notice appear in
+supporting documentation, and that the name of Wyse not be
+used in advertising or publicity pertaining to distribution of the
+software without specific, written prior permission.
+
+WYSE DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
+ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
+DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
+ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
+WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
+ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
+SOFTWARE.
+
+******************************************************************/
+/*
+
+Copyright 1988, 1998 The Open Group
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
+
+The above copyright notice and this permission notice shall be included
+in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR
+OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
+ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group shall
+not be used in advertising or otherwise to promote the sale, use or
+other dealings in this Software without prior written authorization
+from The Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include <X11/Xlibint.h>
+#include <X11/Xatom.h>
+#include <X11/Xutil.h>
+#include <X11/Xos.h>
+#include <stdio.h>
+
+void XSetTextProperty (
+ Display *dpy,
+ Window w,
+ XTextProperty *tp,
+ Atom property)
+{
+ XChangeProperty (dpy, w, property, tp->encoding, tp->format,
+ PropModeReplace, tp->value, tp->nitems);
+}
+
+void XSetWMName (
+ Display *dpy,
+ Window w,
+ XTextProperty *tp)
+{
+ XSetTextProperty (dpy, w, tp, XA_WM_NAME);
+}
+
+void XSetWMIconName (
+ Display *dpy,
+ Window w,
+ XTextProperty *tp)
+{
+ XSetTextProperty (dpy, w, tp, XA_WM_ICON_NAME);
+}
+
+void XSetWMClientMachine (
+ Display *dpy,
+ Window w,
+ XTextProperty *tp)
+{
+ XSetTextProperty (dpy, w, tp, XA_WM_CLIENT_MACHINE);
+}
+
diff --git a/libX11/src/SetWMCMapW.c b/libX11/src/SetWMCMapW.c
index ae772b307..a323912e7 100644
--- a/libX11/src/SetWMCMapW.c
+++ b/libX11/src/SetWMCMapW.c
@@ -1,74 +1,74 @@
-
-/***********************************************************
-
-Copyright 1987, 1998 The Open Group
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall not be
-used in advertising or otherwise to promote the sale, use or other dealings
-in this Software without prior written authorization from The Open Group.
-
-
-Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts.
-
- All Rights Reserved
-
-Permission to use, copy, modify, and distribute this software and its
-documentation for any purpose and without fee is hereby granted,
-provided that the above copyright notice appear in all copies and that
-both that copyright notice and this permission notice appear in
-supporting documentation, and that the name of Digital not be
-used in advertising or publicity pertaining to distribution of the
-software without specific, written prior permission.
-
-DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
-ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
-DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
-ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
-WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
-ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
-SOFTWARE.
-
-******************************************************************/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-#include <X11/Xatom.h>
-
-/*
- * XSetWMProtocols sets the property
- * WM_COLORMAP_WINDOWS type: WINDOW format:32
- */
-
-Status XSetWMColormapWindows (
- Display *dpy,
- Window w,
- Window *windows,
- int count)
-{
- Atom prop;
-
- prop = XInternAtom (dpy, "WM_COLORMAP_WINDOWS", False);
- if (prop == None) return False;
-
- XChangeProperty (dpy, w, prop, XA_WINDOW, 32,
- PropModeReplace, (unsigned char *) windows, count);
- return True;
-}
+
+/***********************************************************
+
+Copyright 1987, 1998 The Open Group
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group shall not be
+used in advertising or otherwise to promote the sale, use or other dealings
+in this Software without prior written authorization from The Open Group.
+
+
+Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts.
+
+ All Rights Reserved
+
+Permission to use, copy, modify, and distribute this software and its
+documentation for any purpose and without fee is hereby granted,
+provided that the above copyright notice appear in all copies and that
+both that copyright notice and this permission notice appear in
+supporting documentation, and that the name of Digital not be
+used in advertising or publicity pertaining to distribution of the
+software without specific, written prior permission.
+
+DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
+ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
+DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
+ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
+WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
+ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
+SOFTWARE.
+
+******************************************************************/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+#include <X11/Xatom.h>
+
+/*
+ * XSetWMProtocols sets the property
+ * WM_COLORMAP_WINDOWS type: WINDOW format:32
+ */
+
+Status XSetWMColormapWindows (
+ Display *dpy,
+ Window w,
+ Window *windows,
+ int count)
+{
+ Atom prop;
+
+ prop = XInternAtom (dpy, "WM_COLORMAP_WINDOWS", False);
+ if (prop == None) return False;
+
+ XChangeProperty (dpy, w, prop, XA_WINDOW, 32,
+ PropModeReplace, (unsigned char *) windows, count);
+ return True;
+}
diff --git a/libX11/src/SetWMProto.c b/libX11/src/SetWMProto.c
index 5f3185ce1..700e13e8e 100644
--- a/libX11/src/SetWMProto.c
+++ b/libX11/src/SetWMProto.c
@@ -1,74 +1,74 @@
-
-/***********************************************************
-
-Copyright 1987, 1998 The Open Group
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall not be
-used in advertising or otherwise to promote the sale, use or other dealings
-in this Software without prior written authorization from The Open Group.
-
-
-Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts.
-
- All Rights Reserved
-
-Permission to use, copy, modify, and distribute this software and its
-documentation for any purpose and without fee is hereby granted,
-provided that the above copyright notice appear in all copies and that
-both that copyright notice and this permission notice appear in
-supporting documentation, and that the name of Digital not be
-used in advertising or publicity pertaining to distribution of the
-software without specific, written prior permission.
-
-DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
-ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
-DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
-ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
-WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
-ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
-SOFTWARE.
-
-******************************************************************/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-#include <X11/Xatom.h>
-
-/*
- * XSetWMProtocols sets the property
- * WM_PROTOCOLS type: ATOM format: 32
- */
-
-Status XSetWMProtocols (
- Display *dpy,
- Window w,
- Atom *protocols,
- int count)
-{
- Atom prop;
-
- prop = XInternAtom (dpy, "WM_PROTOCOLS", False);
- if (prop == None) return False;
-
- XChangeProperty (dpy, w, prop, XA_ATOM, 32,
- PropModeReplace, (unsigned char *) protocols, count);
- return True;
-}
+
+/***********************************************************
+
+Copyright 1987, 1998 The Open Group
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group shall not be
+used in advertising or otherwise to promote the sale, use or other dealings
+in this Software without prior written authorization from The Open Group.
+
+
+Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts.
+
+ All Rights Reserved
+
+Permission to use, copy, modify, and distribute this software and its
+documentation for any purpose and without fee is hereby granted,
+provided that the above copyright notice appear in all copies and that
+both that copyright notice and this permission notice appear in
+supporting documentation, and that the name of Digital not be
+used in advertising or publicity pertaining to distribution of the
+software without specific, written prior permission.
+
+DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
+ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
+DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
+ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
+WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
+ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
+SOFTWARE.
+
+******************************************************************/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+#include <X11/Xatom.h>
+
+/*
+ * XSetWMProtocols sets the property
+ * WM_PROTOCOLS type: ATOM format: 32
+ */
+
+Status XSetWMProtocols (
+ Display *dpy,
+ Window w,
+ Atom *protocols,
+ int count)
+{
+ Atom prop;
+
+ prop = XInternAtom (dpy, "WM_PROTOCOLS", False);
+ if (prop == None) return False;
+
+ XChangeProperty (dpy, w, prop, XA_ATOM, 32,
+ PropModeReplace, (unsigned char *) protocols, count);
+ return True;
+}
diff --git a/libX11/src/StBytes.c b/libX11/src/StBytes.c
index 4f2cc7101..13ac879c5 100644
--- a/libX11/src/StBytes.c
+++ b/libX11/src/StBytes.c
@@ -1,107 +1,107 @@
-/*
-
-Copyright 1986, 1998 The Open Group
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall not be
-used in advertising or otherwise to promote the sale, use or other dealings
-in this Software without prior written authorization from The Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include <X11/Xlibint.h>
-#include <X11/Xatom.h>
-
-/* insulate predefined atom numbers from cut routines */
-static const Atom n_to_atom[8] = {
- XA_CUT_BUFFER0,
- XA_CUT_BUFFER1,
- XA_CUT_BUFFER2,
- XA_CUT_BUFFER3,
- XA_CUT_BUFFER4,
- XA_CUT_BUFFER5,
- XA_CUT_BUFFER6,
- XA_CUT_BUFFER7};
-
-int
-XRotateBuffers (
- register Display *dpy,
- int rotate)
-{
- /* XRotateWindowProperties wants a non-const Atom*, but it doesn't
- * modify it, so this is safe.
- */
- return XRotateWindowProperties(dpy, RootWindow(dpy, 0), (Atom *)n_to_atom, 8, rotate);
-}
-
-char *XFetchBuffer (
- register Display *dpy,
- int *nbytes,
- register int buffer)
-{
- Atom actual_type;
- int actual_format;
- unsigned long nitems;
- unsigned long leftover;
- unsigned char *data;
- *nbytes = 0;
- if ((buffer < 0) || (buffer > 7)) return (NULL);
-/* XXX should be (sizeof (maxint) - 1)/4 */
- if (XGetWindowProperty(dpy, RootWindow(dpy, 0), n_to_atom[buffer],
- 0L, 10000000L, False, XA_STRING,
- &actual_type, &actual_format, &nitems, &leftover, &data) != Success) {
- return (NULL);
- }
- if ( (actual_type == XA_STRING) && (actual_format != 32) ) {
- *nbytes = nitems;
- return((char *)data);
- }
- if ((char *) data != NULL) Xfree ((char *)data);
- return(NULL);
-}
-
-char *XFetchBytes (
- register Display *dpy,
- int *nbytes)
-{
- return (XFetchBuffer (dpy, nbytes, 0));
-}
-
-int
-XStoreBuffer (
- register Display *dpy,
- _Xconst char *bytes,
- int nbytes,
- register int buffer)
-{
- if ((buffer < 0) || (buffer > 7)) return 0;
- return XChangeProperty(dpy, RootWindow(dpy, 0), n_to_atom[buffer],
- XA_STRING, 8, PropModeReplace, (unsigned char *) bytes, nbytes);
-}
-
-int
-XStoreBytes (
- register Display *dpy,
- _Xconst char *bytes,
- int nbytes)
-{
- return XStoreBuffer (dpy, bytes, nbytes, 0);
-}
+/*
+
+Copyright 1986, 1998 The Open Group
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group shall not be
+used in advertising or otherwise to promote the sale, use or other dealings
+in this Software without prior written authorization from The Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include <X11/Xlibint.h>
+#include <X11/Xatom.h>
+
+/* insulate predefined atom numbers from cut routines */
+static const Atom n_to_atom[8] = {
+ XA_CUT_BUFFER0,
+ XA_CUT_BUFFER1,
+ XA_CUT_BUFFER2,
+ XA_CUT_BUFFER3,
+ XA_CUT_BUFFER4,
+ XA_CUT_BUFFER5,
+ XA_CUT_BUFFER6,
+ XA_CUT_BUFFER7};
+
+int
+XRotateBuffers (
+ register Display *dpy,
+ int rotate)
+{
+ /* XRotateWindowProperties wants a non-const Atom*, but it doesn't
+ * modify it, so this is safe.
+ */
+ return XRotateWindowProperties(dpy, RootWindow(dpy, 0), (Atom *)n_to_atom, 8, rotate);
+}
+
+char *XFetchBuffer (
+ register Display *dpy,
+ int *nbytes,
+ register int buffer)
+{
+ Atom actual_type;
+ int actual_format;
+ unsigned long nitems;
+ unsigned long leftover;
+ unsigned char *data;
+ *nbytes = 0;
+ if ((buffer < 0) || (buffer > 7)) return (NULL);
+/* XXX should be (sizeof (maxint) - 1)/4 */
+ if (XGetWindowProperty(dpy, RootWindow(dpy, 0), n_to_atom[buffer],
+ 0L, 10000000L, False, XA_STRING,
+ &actual_type, &actual_format, &nitems, &leftover, &data) != Success) {
+ return (NULL);
+ }
+ if ( (actual_type == XA_STRING) && (actual_format != 32) ) {
+ *nbytes = nitems;
+ return((char *)data);
+ }
+ if ((char *) data != NULL) Xfree ((char *)data);
+ return(NULL);
+}
+
+char *XFetchBytes (
+ register Display *dpy,
+ int *nbytes)
+{
+ return (XFetchBuffer (dpy, nbytes, 0));
+}
+
+int
+XStoreBuffer (
+ register Display *dpy,
+ _Xconst char *bytes,
+ int nbytes,
+ register int buffer)
+{
+ if ((buffer < 0) || (buffer > 7)) return 0;
+ return XChangeProperty(dpy, RootWindow(dpy, 0), n_to_atom[buffer],
+ XA_STRING, 8, PropModeReplace, (unsigned char *) bytes, nbytes);
+}
+
+int
+XStoreBytes (
+ register Display *dpy,
+ _Xconst char *bytes,
+ int nbytes)
+{
+ return XStoreBuffer (dpy, bytes, nbytes, 0);
+}
diff --git a/libX11/src/StColor.c b/libX11/src/StColor.c
index 45a112eb4..19f2a4b1a 100644
--- a/libX11/src/StColor.c
+++ b/libX11/src/StColor.c
@@ -1,70 +1,70 @@
-/*
-
-Copyright 1986, 1998 The Open Group
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall not be
-used in advertising or otherwise to promote the sale, use or other dealings
-in this Software without prior written authorization from The Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-
-int
-XStoreColor(
- register Display *dpy,
- Colormap cmap,
- XColor *def)
-{
- xColorItem *citem;
- register xStoreColorsReq *req;
-#ifdef MUSTCOPY
- xColorItem citemdata;
- long len = SIZEOF(xColorItem);
-
- citem = &citemdata;
-#endif /* MUSTCOPY */
-
- LockDisplay(dpy);
- GetReqExtra(StoreColors, SIZEOF(xColorItem), req); /* assume size is 4*n */
-
- req->cmap = cmap;
-
-#ifndef MUSTCOPY
- citem = (xColorItem *) NEXTPTR(req,xStoreColorsReq);
-#endif /* not MUSTCOPY */
-
- citem->pixel = def->pixel;
- citem->red = def->red;
- citem->green = def->green;
- citem->blue = def->blue;
- citem->flags = def->flags; /* do_red, do_green, do_blue */
-
-#ifdef MUSTCOPY
- dpy->bufptr -= SIZEOF(xColorItem); /* adjust for GetReqExtra */
- Data (dpy, (char *) citem, len);
-#endif /* MUSTCOPY */
-
- UnlockDisplay(dpy);
- SyncHandle();
- return 1;
-}
+/*
+
+Copyright 1986, 1998 The Open Group
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group shall not be
+used in advertising or otherwise to promote the sale, use or other dealings
+in this Software without prior written authorization from The Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+
+int
+XStoreColor(
+ register Display *dpy,
+ Colormap cmap,
+ XColor *def)
+{
+ xColorItem *citem;
+ register xStoreColorsReq *req;
+#ifdef MUSTCOPY
+ xColorItem citemdata;
+ long len = SIZEOF(xColorItem);
+
+ citem = &citemdata;
+#endif /* MUSTCOPY */
+
+ LockDisplay(dpy);
+ GetReqExtra(StoreColors, SIZEOF(xColorItem), req); /* assume size is 4*n */
+
+ req->cmap = cmap;
+
+#ifndef MUSTCOPY
+ citem = (xColorItem *) NEXTPTR(req,xStoreColorsReq);
+#endif /* not MUSTCOPY */
+
+ citem->pixel = def->pixel;
+ citem->red = def->red;
+ citem->green = def->green;
+ citem->blue = def->blue;
+ citem->flags = def->flags; /* do_red, do_green, do_blue */
+
+#ifdef MUSTCOPY
+ dpy->bufptr -= SIZEOF(xColorItem); /* adjust for GetReqExtra */
+ Data (dpy, (char *) citem, len);
+#endif /* MUSTCOPY */
+
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return 1;
+}
diff --git a/libX11/src/StColors.c b/libX11/src/StColors.c
index d281f6965..17a215cc0 100644
--- a/libX11/src/StColors.c
+++ b/libX11/src/StColors.c
@@ -1,65 +1,65 @@
-/*
-
-Copyright 1986, 1998 The Open Group
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall not be
-used in advertising or otherwise to promote the sale, use or other dealings
-in this Software without prior written authorization from The Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-
-int
-XStoreColors(
- register Display *dpy,
- Colormap cmap,
- XColor *defs,
- int ncolors)
-{
- register int i;
- xColorItem citem;
- register xStoreColorsReq *req;
-
- LockDisplay(dpy);
- GetReq(StoreColors, req);
-
- req->cmap = cmap;
-
- req->length += (ncolors * SIZEOF(xColorItem)) >> 2; /* assume size is 4*n */
-
- for (i = 0; i < ncolors; i++) {
- citem.pixel = defs[i].pixel;
- citem.red = defs[i].red;
- citem.green = defs[i].green;
- citem.blue = defs[i].blue;
- citem.flags = defs[i].flags;
-
- /* note that xColorItem doesn't contain all 16-bit quantities, so
- we can't use Data16 */
- Data(dpy, (char *)&citem, (long) SIZEOF(xColorItem));
- /* assume size is 4*n */
- }
- UnlockDisplay(dpy);
- SyncHandle();
- return 1;
-}
+/*
+
+Copyright 1986, 1998 The Open Group
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group shall not be
+used in advertising or otherwise to promote the sale, use or other dealings
+in this Software without prior written authorization from The Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+
+int
+XStoreColors(
+ register Display *dpy,
+ Colormap cmap,
+ XColor *defs,
+ int ncolors)
+{
+ register int i;
+ xColorItem citem;
+ register xStoreColorsReq *req;
+
+ LockDisplay(dpy);
+ GetReq(StoreColors, req);
+
+ req->cmap = cmap;
+
+ req->length += (ncolors * SIZEOF(xColorItem)) >> 2; /* assume size is 4*n */
+
+ for (i = 0; i < ncolors; i++) {
+ citem.pixel = defs[i].pixel;
+ citem.red = defs[i].red;
+ citem.green = defs[i].green;
+ citem.blue = defs[i].blue;
+ citem.flags = defs[i].flags;
+
+ /* note that xColorItem doesn't contain all 16-bit quantities, so
+ we can't use Data16 */
+ Data(dpy, (char *)&citem, (long) SIZEOF(xColorItem));
+ /* assume size is 4*n */
+ }
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return 1;
+}
diff --git a/libX11/src/StNColor.c b/libX11/src/StNColor.c
index 77a385e7f..8b821c3ef 100644
--- a/libX11/src/StNColor.c
+++ b/libX11/src/StNColor.c
@@ -1,87 +1,87 @@
-/*
-
-Copyright 1986, 1998 The Open Group
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall not be
-used in advertising or otherwise to promote the sale, use or other dealings
-in this Software without prior written authorization from The Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include <stdio.h>
-#include "Xlibint.h"
-#include "Xcmsint.h"
-
-
-int
-XStoreNamedColor(
-register Display *dpy,
-Colormap cmap,
-_Xconst char *name, /* STRING8 */
-unsigned long pixel, /* CARD32 */
-int flags) /* DoRed, DoGreen, DoBlue */
-{
- unsigned int nbytes;
- register xStoreNamedColorReq *req;
- XcmsCCC ccc;
- XcmsColor cmsColor_exact;
- XColor scr_def;
-
-#ifdef XCMS
- /*
- * Let's Attempt to use Xcms approach to Parse Color
- */
- if ((ccc = XcmsCCCOfColormap(dpy, cmap)) != (XcmsCCC)NULL) {
- if (_XcmsResolveColorString(ccc, &name, &cmsColor_exact,
- XcmsRGBFormat) >= XcmsSuccess) {
- _XcmsRGB_to_XColor(&cmsColor_exact, &scr_def, 1);
- scr_def.pixel = pixel;
- scr_def.flags = flags;
- return XStoreColor(dpy, cmap, &scr_def);
- }
- /*
- * Otherwise we failed; or name was changed with yet another
- * name. Thus pass name to the X Server.
- */
- }
-#endif
-
- /*
- * The Xcms and i18n methods failed, so lets pass it to the server
- * for parsing.
- */
-
- LockDisplay(dpy);
- GetReq(StoreNamedColor, req);
-
- req->cmap = cmap;
- req->flags = flags;
- req->pixel = pixel;
- req->nbytes = nbytes = strlen(name);
- req->length += (nbytes + 3) >> 2; /* round up to multiple of 4 */
- Data(dpy, name, (long)nbytes);
- UnlockDisplay(dpy);
- SyncHandle();
- return 0;
-}
-
-
+/*
+
+Copyright 1986, 1998 The Open Group
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group shall not be
+used in advertising or otherwise to promote the sale, use or other dealings
+in this Software without prior written authorization from The Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include <stdio.h>
+#include "Xlibint.h"
+#include "Xcmsint.h"
+
+
+int
+XStoreNamedColor(
+register Display *dpy,
+Colormap cmap,
+_Xconst char *name, /* STRING8 */
+unsigned long pixel, /* CARD32 */
+int flags) /* DoRed, DoGreen, DoBlue */
+{
+ unsigned int nbytes;
+ register xStoreNamedColorReq *req;
+ XcmsCCC ccc;
+ XcmsColor cmsColor_exact;
+ XColor scr_def;
+
+#ifdef XCMS
+ /*
+ * Let's Attempt to use Xcms approach to Parse Color
+ */
+ if ((ccc = XcmsCCCOfColormap(dpy, cmap)) != (XcmsCCC)NULL) {
+ if (_XcmsResolveColorString(ccc, &name, &cmsColor_exact,
+ XcmsRGBFormat) >= XcmsSuccess) {
+ _XcmsRGB_to_XColor(&cmsColor_exact, &scr_def, 1);
+ scr_def.pixel = pixel;
+ scr_def.flags = flags;
+ return XStoreColor(dpy, cmap, &scr_def);
+ }
+ /*
+ * Otherwise we failed; or name was changed with yet another
+ * name. Thus pass name to the X Server.
+ */
+ }
+#endif
+
+ /*
+ * The Xcms and i18n methods failed, so lets pass it to the server
+ * for parsing.
+ */
+
+ LockDisplay(dpy);
+ GetReq(StoreNamedColor, req);
+
+ req->cmap = cmap;
+ req->flags = flags;
+ req->pixel = pixel;
+ req->nbytes = nbytes = strlen(name);
+ req->length += (nbytes + 3) >> 2; /* round up to multiple of 4 */
+ Data(dpy, name, (long)nbytes);
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return 0;
+}
+
+
diff --git a/libX11/src/StName.c b/libX11/src/StName.c
index 624868ebb..fb1e6f5e1 100644
--- a/libX11/src/StName.c
+++ b/libX11/src/StName.c
@@ -1,53 +1,53 @@
-/*
-
-Copyright 1986, 1998 The Open Group
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall not be
-used in advertising or otherwise to promote the sale, use or other dealings
-in this Software without prior written authorization from The Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include <X11/Xlibint.h>
-#include <X11/Xatom.h>
-
-int
-XStoreName (
- register Display *dpy,
- Window w,
- _Xconst char *name)
-{
- return XChangeProperty(dpy, w, XA_WM_NAME, XA_STRING,
- 8, PropModeReplace, (unsigned char *)name,
- name ? strlen(name) : 0);
-}
-
-int
-XSetIconName (
- register Display *dpy,
- Window w,
- _Xconst char *icon_name)
-{
- return XChangeProperty(dpy, w, XA_WM_ICON_NAME, XA_STRING,
- 8, PropModeReplace, (unsigned char *)icon_name,
- icon_name ? strlen(icon_name) : 0);
-}
+/*
+
+Copyright 1986, 1998 The Open Group
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group shall not be
+used in advertising or otherwise to promote the sale, use or other dealings
+in this Software without prior written authorization from The Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include <X11/Xlibint.h>
+#include <X11/Xatom.h>
+
+int
+XStoreName (
+ register Display *dpy,
+ Window w,
+ _Xconst char *name)
+{
+ return XChangeProperty(dpy, w, XA_WM_NAME, XA_STRING,
+ 8, PropModeReplace, (unsigned char *)name,
+ name ? strlen(name) : 0);
+}
+
+int
+XSetIconName (
+ register Display *dpy,
+ Window w,
+ _Xconst char *icon_name)
+{
+ return XChangeProperty(dpy, w, XA_WM_ICON_NAME, XA_STRING,
+ 8, PropModeReplace, (unsigned char *)icon_name,
+ icon_name ? strlen(icon_name) : 0);
+}
diff --git a/libX11/src/StrKeysym.c b/libX11/src/StrKeysym.c
index 907db507b..2ac9076e4 100644
--- a/libX11/src/StrKeysym.c
+++ b/libX11/src/StrKeysym.c
@@ -1,183 +1,183 @@
-/*
-
-Copyright 1985, 1987, 1990, 1998 The Open Group
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall not be
-used in advertising or otherwise to promote the sale, use or other dealings
-in this Software without prior written authorization from The Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include <limits.h>
-#include "Xlibint.h"
-#include <X11/Xresource.h>
-#include <X11/keysymdef.h>
-#include "Xresinternal.h"
-
-#define NEEDKTABLE
-#include "ks_tables.h"
-#include "Key.h"
-
-#ifndef KEYSYMDB
-#ifndef XKEYSYMDB
-#define KEYSYMDB "XKeysymDB"
-#else
-#define KEYSYMDB XKEYSYMDB
-#endif
-#endif
-
-#include <unistd.h>
-
-static Bool initialized;
-static XrmDatabase keysymdb;
-static XrmQuark Qkeysym[2];
-
-XrmDatabase
-_XInitKeysymDB(void)
-{
- if (!initialized)
- {
- const char *dbname;
-
- XrmInitialize();
- /* use and name of this env var is not part of the standard */
- /* implementation-dependent feature */
- dbname = getenv("XKEYSYMDB");
- if (!dbname)
- dbname = KEYSYMDB;
- keysymdb = XrmGetFileDatabase(dbname);
- if (keysymdb)
- Qkeysym[0] = XrmStringToQuark("Keysym");
- initialized = True;
- }
- return keysymdb;
-}
-
-KeySym
-XStringToKeysym(_Xconst char *s)
-{
- register int i, n;
- int h;
- register Signature sig = 0;
- register const char *p = s;
- register int c;
- register int idx;
- const unsigned char *entry;
- unsigned char sig1, sig2;
- KeySym val;
-
- while ((c = *p++))
- sig = (sig << 1) + c;
- i = sig % KTABLESIZE;
- h = i + 1;
- sig1 = (sig >> 8) & 0xff;
- sig2 = sig & 0xff;
- n = KMAXHASH;
- while ((idx = hashString[i]))
- {
- entry = &_XkeyTable[idx];
- if ((entry[0] == sig1) && (entry[1] == sig2) &&
- !strcmp(s, (char *)entry + 6))
- {
- val = (entry[2] << 24) | (entry[3] << 16) |
- (entry[4] << 8) | entry[5];
- if (!val)
- val = XK_VoidSymbol;
- return val;
- }
- if (!--n)
- break;
- i += h;
- if (i >= KTABLESIZE)
- i -= KTABLESIZE;
- }
-
- if (!initialized)
- (void)_XInitKeysymDB();
- if (keysymdb)
- {
- XrmValue result;
- XrmRepresentation from_type;
- char c;
- XrmQuark names[2];
-
- names[0] = _XrmInternalStringToQuark(s, p - s - 1, sig, False);
- names[1] = NULLQUARK;
- (void)XrmQGetResource(keysymdb, names, Qkeysym, &from_type, &result);
- if (result.addr && (result.size > 1))
- {
- val = 0;
- for (i = 0; i < result.size - 1; i++)
- {
- c = ((char *)result.addr)[i];
- if ('0' <= c && c <= '9') val = (val<<4)+c-'0';
- else if ('a' <= c && c <= 'f') val = (val<<4)+c-'a'+10;
- else if ('A' <= c && c <= 'F') val = (val<<4)+c-'A'+10;
- else return NoSymbol;
- }
- return val;
- }
- }
-
- if (*s == 'U') {
- val = 0;
- for (p = &s[1]; *p; p++) {
- c = *p;
- if ('0' <= c && c <= '9') val = (val<<4)+c-'0';
- else if ('a' <= c && c <= 'f') val = (val<<4)+c-'a'+10;
- else if ('A' <= c && c <= 'F') val = (val<<4)+c-'A'+10;
- else return NoSymbol;
- if (val > 0x10ffff)
- return NoSymbol;
- }
- if (val < 0x20 || (val > 0x7e && val < 0xa0))
- return NoSymbol;
- if (val < 0x100)
- return val;
- return val | 0x01000000;
- }
-
- if (strlen(s) > 2 && s[0] == '0' && s[1] == 'x') {
- char *tmp = NULL;
- val = strtoul(s, &tmp, 16);
- if (val == ULONG_MAX || (tmp && *tmp != '\0'))
- return NoSymbol;
- else
- return val;
- }
-
- /* Stupid inconsistency between the headers and XKeysymDB: the former has
- * no separating underscore, while some XF86* syms in the latter did.
- * As a last ditch effort, try without. */
- if (strncmp(s, "XF86_", 5) == 0) {
- KeySym ret;
- char *tmp = strdup(s);
- if (!tmp)
- return NoSymbol;
- memmove(&tmp[4], &tmp[5], strlen(s) - 5 + 1);
- ret = XStringToKeysym(tmp);
- free(tmp);
- return ret;
- }
-
- return NoSymbol;
-}
+/*
+
+Copyright 1985, 1987, 1990, 1998 The Open Group
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group shall not be
+used in advertising or otherwise to promote the sale, use or other dealings
+in this Software without prior written authorization from The Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include <limits.h>
+#include "Xlibint.h"
+#include <X11/Xresource.h>
+#include <X11/keysymdef.h>
+#include "Xresinternal.h"
+
+#define NEEDKTABLE
+#include "ks_tables.h"
+#include "Key.h"
+
+#ifndef KEYSYMDB
+#ifndef XKEYSYMDB
+#define KEYSYMDB "XKeysymDB"
+#else
+#define KEYSYMDB XKEYSYMDB
+#endif
+#endif
+
+#include <unistd.h>
+
+static Bool initialized;
+static XrmDatabase keysymdb;
+static XrmQuark Qkeysym[2];
+
+XrmDatabase
+_XInitKeysymDB(void)
+{
+ if (!initialized)
+ {
+ const char *dbname;
+
+ XrmInitialize();
+ /* use and name of this env var is not part of the standard */
+ /* implementation-dependent feature */
+ dbname = getenv("XKEYSYMDB");
+ if (!dbname)
+ dbname = KEYSYMDB;
+ keysymdb = XrmGetFileDatabase(dbname);
+ if (keysymdb)
+ Qkeysym[0] = XrmStringToQuark("Keysym");
+ initialized = True;
+ }
+ return keysymdb;
+}
+
+KeySym
+XStringToKeysym(_Xconst char *s)
+{
+ register int i, n;
+ int h;
+ register Signature sig = 0;
+ register const char *p = s;
+ register int c;
+ register int idx;
+ const unsigned char *entry;
+ unsigned char sig1, sig2;
+ KeySym val;
+
+ while ((c = *p++))
+ sig = (sig << 1) + c;
+ i = sig % KTABLESIZE;
+ h = i + 1;
+ sig1 = (sig >> 8) & 0xff;
+ sig2 = sig & 0xff;
+ n = KMAXHASH;
+ while ((idx = hashString[i]))
+ {
+ entry = &_XkeyTable[idx];
+ if ((entry[0] == sig1) && (entry[1] == sig2) &&
+ !strcmp(s, (char *)entry + 6))
+ {
+ val = (entry[2] << 24) | (entry[3] << 16) |
+ (entry[4] << 8) | entry[5];
+ if (!val)
+ val = XK_VoidSymbol;
+ return val;
+ }
+ if (!--n)
+ break;
+ i += h;
+ if (i >= KTABLESIZE)
+ i -= KTABLESIZE;
+ }
+
+ if (!initialized)
+ (void)_XInitKeysymDB();
+ if (keysymdb)
+ {
+ XrmValue result;
+ XrmRepresentation from_type;
+ char c;
+ XrmQuark names[2];
+
+ names[0] = _XrmInternalStringToQuark(s, p - s - 1, sig, False);
+ names[1] = NULLQUARK;
+ (void)XrmQGetResource(keysymdb, names, Qkeysym, &from_type, &result);
+ if (result.addr && (result.size > 1))
+ {
+ val = 0;
+ for (i = 0; i < result.size - 1; i++)
+ {
+ c = ((char *)result.addr)[i];
+ if ('0' <= c && c <= '9') val = (val<<4)+c-'0';
+ else if ('a' <= c && c <= 'f') val = (val<<4)+c-'a'+10;
+ else if ('A' <= c && c <= 'F') val = (val<<4)+c-'A'+10;
+ else return NoSymbol;
+ }
+ return val;
+ }
+ }
+
+ if (*s == 'U') {
+ val = 0;
+ for (p = &s[1]; *p; p++) {
+ c = *p;
+ if ('0' <= c && c <= '9') val = (val<<4)+c-'0';
+ else if ('a' <= c && c <= 'f') val = (val<<4)+c-'a'+10;
+ else if ('A' <= c && c <= 'F') val = (val<<4)+c-'A'+10;
+ else return NoSymbol;
+ if (val > 0x10ffff)
+ return NoSymbol;
+ }
+ if (val < 0x20 || (val > 0x7e && val < 0xa0))
+ return NoSymbol;
+ if (val < 0x100)
+ return val;
+ return val | 0x01000000;
+ }
+
+ if (strlen(s) > 2 && s[0] == '0' && s[1] == 'x') {
+ char *tmp = NULL;
+ val = strtoul(s, &tmp, 16);
+ if (val == ULONG_MAX || (tmp && *tmp != '\0'))
+ return NoSymbol;
+ else
+ return val;
+ }
+
+ /* Stupid inconsistency between the headers and XKeysymDB: the former has
+ * no separating underscore, while some XF86* syms in the latter did.
+ * As a last ditch effort, try without. */
+ if (strncmp(s, "XF86_", 5) == 0) {
+ KeySym ret;
+ char *tmp = strdup(s);
+ if (!tmp)
+ return NoSymbol;
+ memmove(&tmp[4], &tmp[5], strlen(s) - 5 + 1);
+ ret = XStringToKeysym(tmp);
+ free(tmp);
+ return ret;
+ }
+
+ return NoSymbol;
+}
diff --git a/libX11/src/StrToText.c b/libX11/src/StrToText.c
index c65f96e95..b5327e8fc 100644
--- a/libX11/src/StrToText.c
+++ b/libX11/src/StrToText.c
@@ -1,90 +1,90 @@
-/*
-
-Copyright 1989, 1998 The Open Group
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall not be
-used in advertising or otherwise to promote the sale, use or other dealings
-in this Software without prior written authorization from The Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include <X11/Xlibint.h>
-#include <X11/Xatom.h>
-#include <X11/Xutil.h>
-
-/*
- * XStringListToTextProperty - fill in TextProperty structure with
- * concatenated list of null-separated strings. Return True if successful
- * else False. Allocate room on end for trailing NULL, but don't include in
- * count.
- */
-
-Status XStringListToTextProperty (
- char **argv,
- int argc,
- XTextProperty *textprop)
-{
- register int i;
- register unsigned int nbytes;
- XTextProperty proto;
-
- /* figure out how much space we'll need for this list */
- for (i = 0, nbytes = 0; i < argc; i++) {
- nbytes += (unsigned) ((argv[i] ? strlen (argv[i]) : 0) + 1);
- }
-
- /* fill in a prototype containing results so far */
- proto.encoding = XA_STRING;
- proto.format = 8;
- if (nbytes)
- proto.nitems = nbytes - 1; /* subtract one for trailing <NUL> */
- else
- proto.nitems = 0;
- proto.value = NULL;
-
- /* build concatenated list of strings */
- if (nbytes > 0) {
- register char *buf = Xmalloc (nbytes);
- if (!buf) return False;
-
- proto.value = (unsigned char *) buf;
- for (i = 0; i < argc; i++) {
- char *arg = argv[i];
-
- if (arg) {
- (void) strcpy (buf, arg);
- buf += (strlen (arg) + 1);
- } else {
- *buf++ = '\0';
- }
- }
- } else {
- proto.value = (unsigned char *) Xmalloc (1); /* easier for client */
- if (!proto.value) return False;
-
- proto.value[0] = '\0';
- }
-
- /* we were successful, so set return value */
- *textprop = proto;
- return True;
-}
+/*
+
+Copyright 1989, 1998 The Open Group
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group shall not be
+used in advertising or otherwise to promote the sale, use or other dealings
+in this Software without prior written authorization from The Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include <X11/Xlibint.h>
+#include <X11/Xatom.h>
+#include <X11/Xutil.h>
+
+/*
+ * XStringListToTextProperty - fill in TextProperty structure with
+ * concatenated list of null-separated strings. Return True if successful
+ * else False. Allocate room on end for trailing NULL, but don't include in
+ * count.
+ */
+
+Status XStringListToTextProperty (
+ char **argv,
+ int argc,
+ XTextProperty *textprop)
+{
+ register int i;
+ register unsigned int nbytes;
+ XTextProperty proto;
+
+ /* figure out how much space we'll need for this list */
+ for (i = 0, nbytes = 0; i < argc; i++) {
+ nbytes += (unsigned) ((argv[i] ? strlen (argv[i]) : 0) + 1);
+ }
+
+ /* fill in a prototype containing results so far */
+ proto.encoding = XA_STRING;
+ proto.format = 8;
+ if (nbytes)
+ proto.nitems = nbytes - 1; /* subtract one for trailing <NUL> */
+ else
+ proto.nitems = 0;
+ proto.value = NULL;
+
+ /* build concatenated list of strings */
+ if (nbytes > 0) {
+ register char *buf = Xmalloc (nbytes);
+ if (!buf) return False;
+
+ proto.value = (unsigned char *) buf;
+ for (i = 0; i < argc; i++) {
+ char *arg = argv[i];
+
+ if (arg) {
+ (void) strcpy (buf, arg);
+ buf += (strlen (arg) + 1);
+ } else {
+ *buf++ = '\0';
+ }
+ }
+ } else {
+ proto.value = (unsigned char *) Xmalloc (1); /* easier for client */
+ if (!proto.value) return False;
+
+ proto.value[0] = '\0';
+ }
+
+ /* we were successful, so set return value */
+ *textprop = proto;
+ return True;
+}
diff --git a/libX11/src/Sync.c b/libX11/src/Sync.c
index fdc455961..6326de768 100644
--- a/libX11/src/Sync.c
+++ b/libX11/src/Sync.c
@@ -1,60 +1,60 @@
-/*
-
-Copyright 1986, 1998 The Open Group
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall not be
-used in advertising or otherwise to promote the sale, use or other dealings
-in this Software without prior written authorization from The Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-
-/* Synchronize with errors and events, optionally discarding pending events */
-
-int
-XSync (
- register Display *dpy,
- Bool discard)
-{
- xGetInputFocusReply rep;
- register xReq *req;
-
- LockDisplay(dpy);
- GetEmptyReq(GetInputFocus, req);
- (void) _XReply (dpy, (xReply *)&rep, 0, xTrue);
-
- if (discard && dpy->head) {
- _XQEvent *qelt;
-
- for (qelt=dpy->head; qelt; qelt=qelt->next)
- qelt->qserial_num = 0;
-
- ((_XQEvent *)dpy->tail)->next = dpy->qfree;
- dpy->qfree = (_XQEvent *)dpy->head;
- dpy->head = dpy->tail = NULL;
- dpy->qlen = 0;
- }
- UnlockDisplay(dpy);
- return 1;
-}
-
+/*
+
+Copyright 1986, 1998 The Open Group
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group shall not be
+used in advertising or otherwise to promote the sale, use or other dealings
+in this Software without prior written authorization from The Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+
+/* Synchronize with errors and events, optionally discarding pending events */
+
+int
+XSync (
+ register Display *dpy,
+ Bool discard)
+{
+ xGetInputFocusReply rep;
+ register xReq *req;
+
+ LockDisplay(dpy);
+ GetEmptyReq(GetInputFocus, req);
+ (void) _XReply (dpy, (xReply *)&rep, 0, xTrue);
+
+ if (discard && dpy->head) {
+ _XQEvent *qelt;
+
+ for (qelt=dpy->head; qelt; qelt=qelt->next)
+ qelt->qserial_num = 0;
+
+ ((_XQEvent *)dpy->tail)->next = dpy->qfree;
+ dpy->qfree = (_XQEvent *)dpy->head;
+ dpy->head = dpy->tail = NULL;
+ dpy->qlen = 0;
+ }
+ UnlockDisplay(dpy);
+ return 1;
+}
+
diff --git a/libX11/src/Synchro.c b/libX11/src/Synchro.c
index 7b5ab8331..930448ee9 100644
--- a/libX11/src/Synchro.c
+++ b/libX11/src/Synchro.c
@@ -1,79 +1,79 @@
-/*
-
-Copyright 1986, 1998 The Open Group
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall not be
-used in advertising or otherwise to promote the sale, use or other dealings
-in this Software without prior written authorization from The Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-
-
-static int _XSyncFunction(register Display *dpy)
-{
- XSync(dpy,0);
- return 0;
-}
-
-int (*XSynchronize(Display *dpy, int onoff))(Display *)
-{
- int (*temp)(Display *);
- int (*func)(Display *) = NULL;
-
- if (onoff)
- func = _XSyncFunction;
-
- LockDisplay(dpy);
- if (dpy->flags & XlibDisplayPrivSync) {
- temp = dpy->savedsynchandler;
- dpy->savedsynchandler = func;
- } else {
- temp = dpy->synchandler;
- dpy->synchandler = func;
- }
- UnlockDisplay(dpy);
- return (temp);
-}
-
-int (*XSetAfterFunction(
- Display *dpy,
- int (*func)(
- Display*
- )
- ))(Display *)
-{
- int (*temp)(Display *);
-
- LockDisplay(dpy);
- if (dpy->flags & XlibDisplayPrivSync) {
- temp = dpy->savedsynchandler;
- dpy->savedsynchandler = func;
- } else {
- temp = dpy->synchandler;
- dpy->synchandler = func;
- }
- UnlockDisplay(dpy);
- return (temp);
-}
-
+/*
+
+Copyright 1986, 1998 The Open Group
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group shall not be
+used in advertising or otherwise to promote the sale, use or other dealings
+in this Software without prior written authorization from The Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+
+
+static int _XSyncFunction(register Display *dpy)
+{
+ XSync(dpy,0);
+ return 0;
+}
+
+int (*XSynchronize(Display *dpy, int onoff))(Display *)
+{
+ int (*temp)(Display *);
+ int (*func)(Display *) = NULL;
+
+ if (onoff)
+ func = _XSyncFunction;
+
+ LockDisplay(dpy);
+ if (dpy->flags & XlibDisplayPrivSync) {
+ temp = dpy->savedsynchandler;
+ dpy->savedsynchandler = func;
+ } else {
+ temp = dpy->synchandler;
+ dpy->synchandler = func;
+ }
+ UnlockDisplay(dpy);
+ return (temp);
+}
+
+int (*XSetAfterFunction(
+ Display *dpy,
+ int (*func)(
+ Display*
+ )
+ ))(Display *)
+{
+ int (*temp)(Display *);
+
+ LockDisplay(dpy);
+ if (dpy->flags & XlibDisplayPrivSync) {
+ temp = dpy->savedsynchandler;
+ dpy->savedsynchandler = func;
+ } else {
+ temp = dpy->synchandler;
+ dpy->synchandler = func;
+ }
+ UnlockDisplay(dpy);
+ return (temp);
+}
+
diff --git a/libX11/src/Text.c b/libX11/src/Text.c
index 6a4479ee5..223b1cf8b 100644
--- a/libX11/src/Text.c
+++ b/libX11/src/Text.c
@@ -1,139 +1,139 @@
-/*
-
-Copyright 1986, 1998 The Open Group
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall not be
-used in advertising or otherwise to promote the sale, use or other dealings
-in this Software without prior written authorization from The Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-
-int
-XDrawString(
- register Display *dpy,
- Drawable d,
- GC gc,
- int x,
- int y,
- _Xconst char *string,
- int length)
-{
- int Datalength = 0;
- register xPolyText8Req *req;
-
- if (length <= 0)
- return 0;
-
- LockDisplay(dpy);
- FlushGC(dpy, gc);
- GetReq (PolyText8, req);
- req->drawable = d;
- req->gc = gc->gid;
- req->x = x;
- req->y = y;
-
-
- Datalength += SIZEOF(xTextElt) * ((length + 253) / 254) + length;
-
-
- req->length += (Datalength + 3)>>2; /* convert to number of 32-bit words */
-
-
- /*
- * If the entire request does not fit into the remaining space in the
- * buffer, flush the buffer first. If the request does fit into the
- * empty buffer, then we won't have to flush it at the end to keep
- * the buffer 32-bit aligned.
- */
-
- if (dpy->bufptr + Datalength > dpy->bufmax)
- _XFlush (dpy);
-
- {
- int nbytes;
- int PartialNChars = length;
- /* register xTextElt *elt; */
- char *CharacterOffset = (char *)string;
- unsigned char *tbuf;
-
- while(PartialNChars > 254)
- {
- nbytes = 254 + SIZEOF(xTextElt);
- BufAlloc (unsigned char *, tbuf, nbytes);
-/* elt->delta = 0;
- * elt->len = 254;
- */
- *(unsigned char *)tbuf = 254;
- *(tbuf+1) = 0;
-/* memcpy ((char *) (elt + 1), CharacterOffset, 254);
- */
- memcpy ((char *)tbuf+2, CharacterOffset, 254);
- PartialNChars = PartialNChars - 254;
- CharacterOffset += 254;
- }
-
- if (PartialNChars)
- {
- nbytes = PartialNChars + SIZEOF(xTextElt);
- BufAlloc (unsigned char *, tbuf, nbytes);
-/* elt->delta = 0;
- * elt->len = PartialNChars;
- */
- *(unsigned char *)tbuf = PartialNChars;
- *(tbuf+1) = 0;
-/* memcpy ((char *) (elt + 1), CharacterOffset, PartialNChars);
- */
- memcpy ((char *)tbuf+2, CharacterOffset, PartialNChars);
- }
- }
-
- /* Pad request out to a 32-bit boundary */
-
- if (Datalength &= 3) {
- char *pad;
- /*
- * BufAlloc is a macro that uses its last argument more than
- * once, otherwise I'd write "BufAlloc (char *, pad, 4-length)"
- */
- length = 4 - Datalength;
- BufAlloc (char *, pad, length);
- /*
- * if there are 3 bytes of padding, the first byte MUST be 0
- * so the pad bytes aren't mistaken for a final xTextElt
- */
- *pad = 0;
- }
-
- /*
- * If the buffer pointer is not now pointing to a 32-bit boundary,
- * we must flush the buffer so that it does point to a 32-bit boundary
- * at the end of this routine.
- */
-
- if ((dpy->bufptr - dpy->buffer) & 3)
- _XFlush (dpy);
- UnlockDisplay(dpy);
- SyncHandle();
- return 0;
-}
+/*
+
+Copyright 1986, 1998 The Open Group
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group shall not be
+used in advertising or otherwise to promote the sale, use or other dealings
+in this Software without prior written authorization from The Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+
+int
+XDrawString(
+ register Display *dpy,
+ Drawable d,
+ GC gc,
+ int x,
+ int y,
+ _Xconst char *string,
+ int length)
+{
+ int Datalength = 0;
+ register xPolyText8Req *req;
+
+ if (length <= 0)
+ return 0;
+
+ LockDisplay(dpy);
+ FlushGC(dpy, gc);
+ GetReq (PolyText8, req);
+ req->drawable = d;
+ req->gc = gc->gid;
+ req->x = x;
+ req->y = y;
+
+
+ Datalength += SIZEOF(xTextElt) * ((length + 253) / 254) + length;
+
+
+ req->length += (Datalength + 3)>>2; /* convert to number of 32-bit words */
+
+
+ /*
+ * If the entire request does not fit into the remaining space in the
+ * buffer, flush the buffer first. If the request does fit into the
+ * empty buffer, then we won't have to flush it at the end to keep
+ * the buffer 32-bit aligned.
+ */
+
+ if (dpy->bufptr + Datalength > dpy->bufmax)
+ _XFlush (dpy);
+
+ {
+ int nbytes;
+ int PartialNChars = length;
+ /* register xTextElt *elt; */
+ char *CharacterOffset = (char *)string;
+ unsigned char *tbuf;
+
+ while(PartialNChars > 254)
+ {
+ nbytes = 254 + SIZEOF(xTextElt);
+ BufAlloc (unsigned char *, tbuf, nbytes);
+/* elt->delta = 0;
+ * elt->len = 254;
+ */
+ *(unsigned char *)tbuf = 254;
+ *(tbuf+1) = 0;
+/* memcpy ((char *) (elt + 1), CharacterOffset, 254);
+ */
+ memcpy ((char *)tbuf+2, CharacterOffset, 254);
+ PartialNChars = PartialNChars - 254;
+ CharacterOffset += 254;
+ }
+
+ if (PartialNChars)
+ {
+ nbytes = PartialNChars + SIZEOF(xTextElt);
+ BufAlloc (unsigned char *, tbuf, nbytes);
+/* elt->delta = 0;
+ * elt->len = PartialNChars;
+ */
+ *(unsigned char *)tbuf = PartialNChars;
+ *(tbuf+1) = 0;
+/* memcpy ((char *) (elt + 1), CharacterOffset, PartialNChars);
+ */
+ memcpy ((char *)tbuf+2, CharacterOffset, PartialNChars);
+ }
+ }
+
+ /* Pad request out to a 32-bit boundary */
+
+ if (Datalength &= 3) {
+ char *pad;
+ /*
+ * BufAlloc is a macro that uses its last argument more than
+ * once, otherwise I'd write "BufAlloc (char *, pad, 4-length)"
+ */
+ length = 4 - Datalength;
+ BufAlloc (char *, pad, length);
+ /*
+ * if there are 3 bytes of padding, the first byte MUST be 0
+ * so the pad bytes aren't mistaken for a final xTextElt
+ */
+ *pad = 0;
+ }
+
+ /*
+ * If the buffer pointer is not now pointing to a 32-bit boundary,
+ * we must flush the buffer so that it does point to a 32-bit boundary
+ * at the end of this routine.
+ */
+
+ if ((dpy->bufptr - dpy->buffer) & 3)
+ _XFlush (dpy);
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return 0;
+}
diff --git a/libX11/src/Text16.c b/libX11/src/Text16.c
index f25e0ce27..5a66a2bf6 100644
--- a/libX11/src/Text16.c
+++ b/libX11/src/Text16.c
@@ -1,152 +1,152 @@
-/*
-
-Copyright 1986, 1998 The Open Group
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall not be
-used in advertising or otherwise to promote the sale, use or other dealings
-in this Software without prior written authorization from The Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-
-int
-XDrawString16(
- register Display *dpy,
- Drawable d,
- GC gc,
- int x,
- int y,
- _Xconst XChar2b *string,
- int length)
-{
- int Datalength = 0;
- register xPolyText16Req *req;
-
- if (length <= 0)
- return 0;
-
- LockDisplay(dpy);
- FlushGC(dpy, gc);
- GetReq (PolyText16, req);
- req->drawable = d;
- req->gc = gc->gid;
- req->x = x;
- req->y = y;
-
-
- Datalength += SIZEOF(xTextElt) * ((length + 253) / 254) + (length << 1);
-
-
- req->length += (Datalength + 3)>>2; /* convert to number of 32-bit words */
-
-
- /*
- * If the entire request does not fit into the remaining space in the
- * buffer, flush the buffer first. If the request does fit into the
- * empty buffer, then we won't have to flush it at the end to keep
- * the buffer 32-bit aligned.
- */
-
- if (dpy->bufptr + Datalength > dpy->bufmax)
- _XFlush (dpy);
-
- {
- int nbytes;
- int PartialNChars = length;
- register xTextElt *elt;
- XChar2b *CharacterOffset = (XChar2b *)string;
-
- while(PartialNChars > 254)
- {
- nbytes = 254 * 2 + SIZEOF(xTextElt);
- BufAlloc (xTextElt *, elt, nbytes);
- elt->delta = 0;
- elt->len = 254;
-#if defined(MUSTCOPY) || defined(MUSTCOPY2B)
- {
- register int i;
- register unsigned char *cp;
- for (i = 0, cp = ((unsigned char *)elt) + 2; i < 254; i++) {
- *cp++ = CharacterOffset[i].byte1;
- *cp++ = CharacterOffset[i].byte2;
- }
- }
-#else
- memcpy (((char *) elt) + 2, (char *)CharacterOffset, 254 * 2);
-#endif
- PartialNChars = PartialNChars - 254;
- CharacterOffset += 254;
- }
-
- if (PartialNChars)
- {
- nbytes = PartialNChars * 2 + SIZEOF(xTextElt);
- BufAlloc (xTextElt *, elt, nbytes);
- elt->delta = 0;
- elt->len = PartialNChars;
-#if defined(MUSTCOPY) || defined(MUSTCOPY2B)
- {
- register int i;
- register unsigned char *cp;
- for (i = 0, cp = ((unsigned char *)elt) + 2; i < PartialNChars;
- i++) {
- *cp++ = CharacterOffset[i].byte1;
- *cp++ = CharacterOffset[i].byte2;
- }
- }
-#else
- memcpy(((char *)elt) + 2, (char *)CharacterOffset, PartialNChars * 2);
-#endif
- }
- }
-
- /* Pad request out to a 32-bit boundary */
-
- if (Datalength &= 3) {
- char *pad;
- /*
- * BufAlloc is a macro that uses its last argument more than
- * once, otherwise I'd write "BufAlloc (char *, pad, 4-length)"
- */
- length = 4 - Datalength;
- BufAlloc (char *, pad, length);
- /*
- * if there are 3 bytes of padding, the first byte MUST be 0
- * so the pad bytes aren't mistaken for a final xTextElt
- */
- *pad = 0;
- }
-
- /*
- * If the buffer pointer is not now pointing to a 32-bit boundary,
- * we must flush the buffer so that it does point to a 32-bit boundary
- * at the end of this routine.
- */
-
- if ((dpy->bufptr - dpy->buffer) & 3)
- _XFlush (dpy);
- UnlockDisplay(dpy);
- SyncHandle();
- return 0;
-}
-
+/*
+
+Copyright 1986, 1998 The Open Group
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group shall not be
+used in advertising or otherwise to promote the sale, use or other dealings
+in this Software without prior written authorization from The Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+
+int
+XDrawString16(
+ register Display *dpy,
+ Drawable d,
+ GC gc,
+ int x,
+ int y,
+ _Xconst XChar2b *string,
+ int length)
+{
+ int Datalength = 0;
+ register xPolyText16Req *req;
+
+ if (length <= 0)
+ return 0;
+
+ LockDisplay(dpy);
+ FlushGC(dpy, gc);
+ GetReq (PolyText16, req);
+ req->drawable = d;
+ req->gc = gc->gid;
+ req->x = x;
+ req->y = y;
+
+
+ Datalength += SIZEOF(xTextElt) * ((length + 253) / 254) + (length << 1);
+
+
+ req->length += (Datalength + 3)>>2; /* convert to number of 32-bit words */
+
+
+ /*
+ * If the entire request does not fit into the remaining space in the
+ * buffer, flush the buffer first. If the request does fit into the
+ * empty buffer, then we won't have to flush it at the end to keep
+ * the buffer 32-bit aligned.
+ */
+
+ if (dpy->bufptr + Datalength > dpy->bufmax)
+ _XFlush (dpy);
+
+ {
+ int nbytes;
+ int PartialNChars = length;
+ register xTextElt *elt;
+ XChar2b *CharacterOffset = (XChar2b *)string;
+
+ while(PartialNChars > 254)
+ {
+ nbytes = 254 * 2 + SIZEOF(xTextElt);
+ BufAlloc (xTextElt *, elt, nbytes);
+ elt->delta = 0;
+ elt->len = 254;
+#if defined(MUSTCOPY) || defined(MUSTCOPY2B)
+ {
+ register int i;
+ register unsigned char *cp;
+ for (i = 0, cp = ((unsigned char *)elt) + 2; i < 254; i++) {
+ *cp++ = CharacterOffset[i].byte1;
+ *cp++ = CharacterOffset[i].byte2;
+ }
+ }
+#else
+ memcpy (((char *) elt) + 2, (char *)CharacterOffset, 254 * 2);
+#endif
+ PartialNChars = PartialNChars - 254;
+ CharacterOffset += 254;
+ }
+
+ if (PartialNChars)
+ {
+ nbytes = PartialNChars * 2 + SIZEOF(xTextElt);
+ BufAlloc (xTextElt *, elt, nbytes);
+ elt->delta = 0;
+ elt->len = PartialNChars;
+#if defined(MUSTCOPY) || defined(MUSTCOPY2B)
+ {
+ register int i;
+ register unsigned char *cp;
+ for (i = 0, cp = ((unsigned char *)elt) + 2; i < PartialNChars;
+ i++) {
+ *cp++ = CharacterOffset[i].byte1;
+ *cp++ = CharacterOffset[i].byte2;
+ }
+ }
+#else
+ memcpy(((char *)elt) + 2, (char *)CharacterOffset, PartialNChars * 2);
+#endif
+ }
+ }
+
+ /* Pad request out to a 32-bit boundary */
+
+ if (Datalength &= 3) {
+ char *pad;
+ /*
+ * BufAlloc is a macro that uses its last argument more than
+ * once, otherwise I'd write "BufAlloc (char *, pad, 4-length)"
+ */
+ length = 4 - Datalength;
+ BufAlloc (char *, pad, length);
+ /*
+ * if there are 3 bytes of padding, the first byte MUST be 0
+ * so the pad bytes aren't mistaken for a final xTextElt
+ */
+ *pad = 0;
+ }
+
+ /*
+ * If the buffer pointer is not now pointing to a 32-bit boundary,
+ * we must flush the buffer so that it does point to a 32-bit boundary
+ * at the end of this routine.
+ */
+
+ if ((dpy->bufptr - dpy->buffer) & 3)
+ _XFlush (dpy);
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return 0;
+}
+
diff --git a/libX11/src/TextExt.c b/libX11/src/TextExt.c
index 686814a77..b883b01b4 100644
--- a/libX11/src/TextExt.c
+++ b/libX11/src/TextExt.c
@@ -1,234 +1,234 @@
-/*
-
-Copyright 1989, 1998 The Open Group
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
-
-The above copyright notice and this permission notice shall be included
-in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
-IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR
-OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
-ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall
-not be used in advertising or otherwise to promote the sale, use or
-other dealings in this Software without prior written authorization
-from The Open Group.
-
-*/
-/*
- * Copyright 1995 by FUJITSU LIMITED
- * This is source code modified by FUJITSU LIMITED under the Joint
- * Development Agreement for the CDE/Motif PST.
- */
-
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-
-#define min_byte2 min_char_or_byte2
-#define max_byte2 max_char_or_byte2
-
-
-/*
- * CI_GET_ROWZERO_CHAR_INFO_2D - do the same thing as CI_GET_CHAR_INFO_1D,
- * except that the font has more than one row. This is special case of more
- * general version used in XTextExt16.c since row == 0. This is used when
- * max_byte2 is not zero. A further optimization would do the check for
- * min_byte1 being zero ahead of time.
- */
-
-#define CI_GET_ROWZERO_CHAR_INFO_2D(fs,col,def,cs) \
-{ \
- cs = def; \
- if (fs->min_byte1 == 0 && \
- col >= fs->min_byte2 && col <= fs->max_byte2) { \
- if (fs->per_char == NULL) { \
- cs = &fs->min_bounds; \
- } else { \
- cs = &fs->per_char[(col - fs->min_byte2)]; \
- if (CI_NONEXISTCHAR(cs)) cs = def; \
- } \
- } \
-}
-
-
-/*
- * XTextExtents - compute the extents of string given as a sequences of eight
- * bit bytes. Since we know that the input characters will always be from the
- * first row of the font (i.e. byte1 == 0), we can do some optimizations beyond
- * what is done in XTextExtents16.
- */
-int
-XTextExtents (
- XFontStruct *fs,
- _Xconst char *string,
- int nchars,
- int *dir, /* RETURN font information */
- int *font_ascent, /* RETURN font information */
- int *font_descent, /* RETURN font information */
- register XCharStruct *overall) /* RETURN character information */
-{
- int i; /* iterator */
- Bool singlerow = (fs->max_byte1 == 0); /* optimization */
- int nfound = 0; /* number of characters found */
- XCharStruct *def; /* info about default char */
- unsigned char *us; /* be 8bit clean */
-
- if (singlerow) { /* optimization */
- CI_GET_DEFAULT_INFO_1D (fs, def);
- } else {
- CI_GET_DEFAULT_INFO_2D (fs, def);
- }
-
- *dir = fs->direction;
- *font_ascent = fs->ascent;
- *font_descent = fs->descent;
-
- /*
- * Iterate over the input string getting the appropriate * char struct.
- * The default (which may be null if there is no def_char) will be returned
- * if the character doesn't exist. On the first time * through the loop,
- * assign the values to overall; otherwise, compute * the new values.
- */
-
- for (i = 0, us = (unsigned char *) string; i < nchars; i++, us++) {
- register unsigned uc = (unsigned) *us; /* since about to do macro */
- register XCharStruct *cs;
-
- if (singlerow) { /* optimization */
- CI_GET_CHAR_INFO_1D (fs, uc, def, cs);
- } else {
- CI_GET_ROWZERO_CHAR_INFO_2D (fs, uc, def, cs);
- }
-
- if (cs) {
- if (nfound++ == 0) {
- *overall = *cs;
- } else {
- overall->ascent = max (overall->ascent, cs->ascent);
- overall->descent = max (overall->descent, cs->descent);
- overall->lbearing = min (overall->lbearing,
- overall->width + cs->lbearing);
- overall->rbearing = max (overall->rbearing,
- overall->width + cs->rbearing);
- overall->width += cs->width;
- }
- }
- }
-
- /*
- * if there were no characters, then set everything to 0
- */
- if (nfound == 0) {
- overall->width = overall->ascent = overall->descent =
- overall->lbearing = overall->rbearing = 0;
- }
-
- return 0;
-}
-
-
-/*
- * XTextWidth - compute the width of a string of eightbit bytes. This is a
- * subset of XTextExtents.
- */
-int
-XTextWidth (
- XFontStruct *fs,
- _Xconst char *string,
- int count)
-{
- int i; /* iterator */
- Bool singlerow = (fs->max_byte1 == 0); /* optimization */
- XCharStruct *def; /* info about default char */
- unsigned char *us; /* be 8bit clean */
- int width = 0; /* RETURN value */
-
- if (singlerow) { /* optimization */
- CI_GET_DEFAULT_INFO_1D (fs, def);
- } else {
- CI_GET_DEFAULT_INFO_2D (fs, def);
- }
-
- if (def && fs->min_bounds.width == fs->max_bounds.width)
- return (fs->min_bounds.width * count);
-
- /*
- * Iterate over all character in the input string; only consider characters
- * that exist.
- */
- for (i = 0, us = (unsigned char *) string; i < count; i++, us++) {
- register unsigned uc = (unsigned) *us; /* since about to do macro */
- register XCharStruct *cs;
-
- if (singlerow) { /* optimization */
- CI_GET_CHAR_INFO_1D (fs, uc, def, cs);
- } else {
- CI_GET_ROWZERO_CHAR_INFO_2D (fs, uc, def, cs);
- }
-
- if (cs) width += cs->width;
- }
-
- return width;
-}
-
-
-
-/*
- * _XTextHeight - compute the height of a string of eightbit bytes.
- */
-int
-_XTextHeight (
- XFontStruct *fs,
- _Xconst char *string,
- int count)
-{
- int i; /* iterator */
- Bool singlerow = (fs->max_byte1 == 0); /* optimization */
- XCharStruct *def; /* info about default char */
- unsigned char *us; /* be 8bit clean */
- int height = 0; /* RETURN value */
-
- if (singlerow) { /* optimization */
- CI_GET_DEFAULT_INFO_1D (fs, def);
- } else {
- CI_GET_DEFAULT_INFO_2D (fs, def);
- }
-
- if (def && (fs->min_bounds.ascent == fs->max_bounds.ascent)
- && (fs->min_bounds.descent == fs->max_bounds.descent))
- return ((fs->min_bounds.ascent + fs->min_bounds.descent) * count);
-
- /*
- * Iterate over all character in the input string; only consider characters
- * that exist.
- */
- for (i = 0, us = (unsigned char *) string; i < count; i++, us++) {
- register unsigned uc = (unsigned) *us; /* since about to do macro */
- register XCharStruct *cs;
-
- if (singlerow) { /* optimization */
- CI_GET_CHAR_INFO_1D (fs, uc, def, cs);
- } else {
- CI_GET_ROWZERO_CHAR_INFO_2D (fs, uc, def, cs);
- }
-
- if (cs) height += (cs->ascent + cs->descent);
- }
-
- return height;
-}
-
+/*
+
+Copyright 1989, 1998 The Open Group
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
+
+The above copyright notice and this permission notice shall be included
+in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR
+OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
+ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group shall
+not be used in advertising or otherwise to promote the sale, use or
+other dealings in this Software without prior written authorization
+from The Open Group.
+
+*/
+/*
+ * Copyright 1995 by FUJITSU LIMITED
+ * This is source code modified by FUJITSU LIMITED under the Joint
+ * Development Agreement for the CDE/Motif PST.
+ */
+
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+
+#define min_byte2 min_char_or_byte2
+#define max_byte2 max_char_or_byte2
+
+
+/*
+ * CI_GET_ROWZERO_CHAR_INFO_2D - do the same thing as CI_GET_CHAR_INFO_1D,
+ * except that the font has more than one row. This is special case of more
+ * general version used in XTextExt16.c since row == 0. This is used when
+ * max_byte2 is not zero. A further optimization would do the check for
+ * min_byte1 being zero ahead of time.
+ */
+
+#define CI_GET_ROWZERO_CHAR_INFO_2D(fs,col,def,cs) \
+{ \
+ cs = def; \
+ if (fs->min_byte1 == 0 && \
+ col >= fs->min_byte2 && col <= fs->max_byte2) { \
+ if (fs->per_char == NULL) { \
+ cs = &fs->min_bounds; \
+ } else { \
+ cs = &fs->per_char[(col - fs->min_byte2)]; \
+ if (CI_NONEXISTCHAR(cs)) cs = def; \
+ } \
+ } \
+}
+
+
+/*
+ * XTextExtents - compute the extents of string given as a sequences of eight
+ * bit bytes. Since we know that the input characters will always be from the
+ * first row of the font (i.e. byte1 == 0), we can do some optimizations beyond
+ * what is done in XTextExtents16.
+ */
+int
+XTextExtents (
+ XFontStruct *fs,
+ _Xconst char *string,
+ int nchars,
+ int *dir, /* RETURN font information */
+ int *font_ascent, /* RETURN font information */
+ int *font_descent, /* RETURN font information */
+ register XCharStruct *overall) /* RETURN character information */
+{
+ int i; /* iterator */
+ Bool singlerow = (fs->max_byte1 == 0); /* optimization */
+ int nfound = 0; /* number of characters found */
+ XCharStruct *def; /* info about default char */
+ unsigned char *us; /* be 8bit clean */
+
+ if (singlerow) { /* optimization */
+ CI_GET_DEFAULT_INFO_1D (fs, def);
+ } else {
+ CI_GET_DEFAULT_INFO_2D (fs, def);
+ }
+
+ *dir = fs->direction;
+ *font_ascent = fs->ascent;
+ *font_descent = fs->descent;
+
+ /*
+ * Iterate over the input string getting the appropriate * char struct.
+ * The default (which may be null if there is no def_char) will be returned
+ * if the character doesn't exist. On the first time * through the loop,
+ * assign the values to overall; otherwise, compute * the new values.
+ */
+
+ for (i = 0, us = (unsigned char *) string; i < nchars; i++, us++) {
+ register unsigned uc = (unsigned) *us; /* since about to do macro */
+ register XCharStruct *cs;
+
+ if (singlerow) { /* optimization */
+ CI_GET_CHAR_INFO_1D (fs, uc, def, cs);
+ } else {
+ CI_GET_ROWZERO_CHAR_INFO_2D (fs, uc, def, cs);
+ }
+
+ if (cs) {
+ if (nfound++ == 0) {
+ *overall = *cs;
+ } else {
+ overall->ascent = max (overall->ascent, cs->ascent);
+ overall->descent = max (overall->descent, cs->descent);
+ overall->lbearing = min (overall->lbearing,
+ overall->width + cs->lbearing);
+ overall->rbearing = max (overall->rbearing,
+ overall->width + cs->rbearing);
+ overall->width += cs->width;
+ }
+ }
+ }
+
+ /*
+ * if there were no characters, then set everything to 0
+ */
+ if (nfound == 0) {
+ overall->width = overall->ascent = overall->descent =
+ overall->lbearing = overall->rbearing = 0;
+ }
+
+ return 0;
+}
+
+
+/*
+ * XTextWidth - compute the width of a string of eightbit bytes. This is a
+ * subset of XTextExtents.
+ */
+int
+XTextWidth (
+ XFontStruct *fs,
+ _Xconst char *string,
+ int count)
+{
+ int i; /* iterator */
+ Bool singlerow = (fs->max_byte1 == 0); /* optimization */
+ XCharStruct *def; /* info about default char */
+ unsigned char *us; /* be 8bit clean */
+ int width = 0; /* RETURN value */
+
+ if (singlerow) { /* optimization */
+ CI_GET_DEFAULT_INFO_1D (fs, def);
+ } else {
+ CI_GET_DEFAULT_INFO_2D (fs, def);
+ }
+
+ if (def && fs->min_bounds.width == fs->max_bounds.width)
+ return (fs->min_bounds.width * count);
+
+ /*
+ * Iterate over all character in the input string; only consider characters
+ * that exist.
+ */
+ for (i = 0, us = (unsigned char *) string; i < count; i++, us++) {
+ register unsigned uc = (unsigned) *us; /* since about to do macro */
+ register XCharStruct *cs;
+
+ if (singlerow) { /* optimization */
+ CI_GET_CHAR_INFO_1D (fs, uc, def, cs);
+ } else {
+ CI_GET_ROWZERO_CHAR_INFO_2D (fs, uc, def, cs);
+ }
+
+ if (cs) width += cs->width;
+ }
+
+ return width;
+}
+
+
+
+/*
+ * _XTextHeight - compute the height of a string of eightbit bytes.
+ */
+int
+_XTextHeight (
+ XFontStruct *fs,
+ _Xconst char *string,
+ int count)
+{
+ int i; /* iterator */
+ Bool singlerow = (fs->max_byte1 == 0); /* optimization */
+ XCharStruct *def; /* info about default char */
+ unsigned char *us; /* be 8bit clean */
+ int height = 0; /* RETURN value */
+
+ if (singlerow) { /* optimization */
+ CI_GET_DEFAULT_INFO_1D (fs, def);
+ } else {
+ CI_GET_DEFAULT_INFO_2D (fs, def);
+ }
+
+ if (def && (fs->min_bounds.ascent == fs->max_bounds.ascent)
+ && (fs->min_bounds.descent == fs->max_bounds.descent))
+ return ((fs->min_bounds.ascent + fs->min_bounds.descent) * count);
+
+ /*
+ * Iterate over all character in the input string; only consider characters
+ * that exist.
+ */
+ for (i = 0, us = (unsigned char *) string; i < count; i++, us++) {
+ register unsigned uc = (unsigned) *us; /* since about to do macro */
+ register XCharStruct *cs;
+
+ if (singlerow) { /* optimization */
+ CI_GET_CHAR_INFO_1D (fs, uc, def, cs);
+ } else {
+ CI_GET_ROWZERO_CHAR_INFO_2D (fs, uc, def, cs);
+ }
+
+ if (cs) height += (cs->ascent + cs->descent);
+ }
+
+ return height;
+}
+
diff --git a/libX11/src/TextExt16.c b/libX11/src/TextExt16.c
index eb108a107..01a0f32e4 100644
--- a/libX11/src/TextExt16.c
+++ b/libX11/src/TextExt16.c
@@ -1,210 +1,210 @@
-/*
-
-Copyright 1989, 1998 The Open Group
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
-
-The above copyright notice and this permission notice shall be included
-in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
-IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR
-OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
-ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall
-not be used in advertising or otherwise to promote the sale, use or
-other dealings in this Software without prior written authorization
-from The Open Group.
-
-*/
-/*
- * Copyright 1995 by FUJITSU LIMITED
- * This is source code modified by FUJITSU LIMITED under the Joint
- * Development Agreement for the CDE/Motif PST.
- */
-
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-
-#define min_byte2 min_char_or_byte2
-#define max_byte2 max_char_or_byte2
-
-/*
- * XTextExtents16 - compute the extents of string given as a sequence of
- * XChar2bs.
- */
-int
-XTextExtents16 (
- XFontStruct *fs,
- _Xconst XChar2b *string,
- int nchars,
- int *dir, /* RETURN font information */
- int *font_ascent, /* RETURN font information */
- int *font_descent, /* RETURN font information */
- register XCharStruct *overall) /* RETURN character information */
-{
- int i; /* iterator */
- Bool singlerow = (fs->max_byte1 == 0); /* optimization */
- int nfound = 0; /* number of characters found */
- XCharStruct *def; /* info about default char */
-
- if (singlerow) {
- CI_GET_DEFAULT_INFO_1D (fs, def);
- } else {
- CI_GET_DEFAULT_INFO_2D (fs, def);
- }
-
- *dir = fs->direction;
- *font_ascent = fs->ascent;
- *font_descent = fs->descent;
-
- /*
- * Iterate over the input string getting the appropriate * char struct.
- * The default (which may be null if there is no def_char) will be returned
- * if the character doesn't exist. On the first time * through the loop,
- * assign the values to overall; otherwise, compute * the new values.
- */
-
- for (i = 0; i < nchars; i++, string++) {
- register XCharStruct *cs;
- unsigned int r = (unsigned int) string->byte1; /* watch for macros */
- unsigned int c = (unsigned int) string->byte2; /* watch for macros */
-
- if (singlerow) {
- unsigned int ind = ((r << 8) | c); /* watch for macros */
- CI_GET_CHAR_INFO_1D (fs, ind, def, cs);
- } else {
- CI_GET_CHAR_INFO_2D (fs, r, c, def, cs);
- }
-
- if (cs) {
- if (nfound++ == 0) {
- *overall = *cs;
- } else {
- overall->ascent = max (overall->ascent, cs->ascent);
- overall->descent = max (overall->descent, cs->descent);
- overall->lbearing = min (overall->lbearing,
- overall->width + cs->lbearing);
- overall->rbearing = max (overall->rbearing,
- overall->width + cs->rbearing);
- overall->width += cs->width;
- }
- }
- }
-
- /*
- * if there were no characters, then set everything to 0
- */
- if (nfound == 0) {
- overall->width = overall->ascent = overall->descent =
- overall->lbearing = overall->rbearing = 0;
- }
-
- return 0;
-}
-
-
-/*
- * XTextWidth16 - compute the width of sequence of XChar2bs. This is a
- * subset of XTextExtents16.
- */
-int
-XTextWidth16 (
- XFontStruct *fs,
- _Xconst XChar2b *string,
- int count)
-{
- int i; /* iterator */
- Bool singlerow = (fs->max_byte1 == 0); /* optimization */
- XCharStruct *def; /* info about default char */
- int width = 0; /* RETURN value */
-
- if (singlerow) {
- CI_GET_DEFAULT_INFO_1D (fs, def);
- } else {
- CI_GET_DEFAULT_INFO_2D (fs, def);
- }
-
- if (def && fs->min_bounds.width == fs->max_bounds.width)
- return (fs->min_bounds.width * count);
-
- /*
- * Iterate over all character in the input string; only consider characters
- * that exist.
- */
- for (i = 0; i < count; i++, string++) {
- register XCharStruct *cs;
- unsigned int r = (unsigned int) string->byte1; /* watch for macros */
- unsigned int c = (unsigned int) string->byte2; /* watch for macros */
-
- if (singlerow) {
- unsigned int ind = ((r << 8) | c); /* watch for macros */
- CI_GET_CHAR_INFO_1D (fs, ind, def, cs);
- } else {
- CI_GET_CHAR_INFO_2D (fs, r, c, def, cs);
- }
-
- if (cs) width += cs->width;
- }
-
- return width;
-}
-
-
-/*
- * _XTextHeight16 - compute the height of sequence of XChar2bs.
- */
-int
-_XTextHeight16 (
- XFontStruct *fs,
- _Xconst XChar2b *string,
- int count)
-{
- int i; /* iterator */
- Bool singlerow = (fs->max_byte1 == 0); /* optimization */
- XCharStruct *def; /* info about default char */
- int height = 0; /* RETURN value */
-
- if (singlerow) {
- CI_GET_DEFAULT_INFO_1D (fs, def);
- } else {
- CI_GET_DEFAULT_INFO_2D (fs, def);
- }
-
- if (def && (fs->min_bounds.ascent == fs->max_bounds.ascent)
- && (fs->min_bounds.descent == fs->max_bounds.descent))
- return ((fs->min_bounds.ascent + fs->min_bounds.descent) * count);
-
- /*
- * Iterate over all character in the input string; only consider characters
- * that exist.
- */
- for (i = 0; i < count; i++, string++) {
- register XCharStruct *cs;
- unsigned int r = (unsigned int) string->byte1; /* watch for macros */
- unsigned int c = (unsigned int) string->byte2; /* watch for macros */
-
- if (singlerow) {
- unsigned int ind = ((r << 8) | c); /* watch for macros */
- CI_GET_CHAR_INFO_1D (fs, ind, def, cs);
- } else {
- CI_GET_CHAR_INFO_2D (fs, r, c, def, cs);
- }
-
- if (cs) height += (cs->ascent + cs->descent);
- }
-
- return height;
-}
-
+/*
+
+Copyright 1989, 1998 The Open Group
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
+
+The above copyright notice and this permission notice shall be included
+in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR
+OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
+ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group shall
+not be used in advertising or otherwise to promote the sale, use or
+other dealings in this Software without prior written authorization
+from The Open Group.
+
+*/
+/*
+ * Copyright 1995 by FUJITSU LIMITED
+ * This is source code modified by FUJITSU LIMITED under the Joint
+ * Development Agreement for the CDE/Motif PST.
+ */
+
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+
+#define min_byte2 min_char_or_byte2
+#define max_byte2 max_char_or_byte2
+
+/*
+ * XTextExtents16 - compute the extents of string given as a sequence of
+ * XChar2bs.
+ */
+int
+XTextExtents16 (
+ XFontStruct *fs,
+ _Xconst XChar2b *string,
+ int nchars,
+ int *dir, /* RETURN font information */
+ int *font_ascent, /* RETURN font information */
+ int *font_descent, /* RETURN font information */
+ register XCharStruct *overall) /* RETURN character information */
+{
+ int i; /* iterator */
+ Bool singlerow = (fs->max_byte1 == 0); /* optimization */
+ int nfound = 0; /* number of characters found */
+ XCharStruct *def; /* info about default char */
+
+ if (singlerow) {
+ CI_GET_DEFAULT_INFO_1D (fs, def);
+ } else {
+ CI_GET_DEFAULT_INFO_2D (fs, def);
+ }
+
+ *dir = fs->direction;
+ *font_ascent = fs->ascent;
+ *font_descent = fs->descent;
+
+ /*
+ * Iterate over the input string getting the appropriate * char struct.
+ * The default (which may be null if there is no def_char) will be returned
+ * if the character doesn't exist. On the first time * through the loop,
+ * assign the values to overall; otherwise, compute * the new values.
+ */
+
+ for (i = 0; i < nchars; i++, string++) {
+ register XCharStruct *cs;
+ unsigned int r = (unsigned int) string->byte1; /* watch for macros */
+ unsigned int c = (unsigned int) string->byte2; /* watch for macros */
+
+ if (singlerow) {
+ unsigned int ind = ((r << 8) | c); /* watch for macros */
+ CI_GET_CHAR_INFO_1D (fs, ind, def, cs);
+ } else {
+ CI_GET_CHAR_INFO_2D (fs, r, c, def, cs);
+ }
+
+ if (cs) {
+ if (nfound++ == 0) {
+ *overall = *cs;
+ } else {
+ overall->ascent = max (overall->ascent, cs->ascent);
+ overall->descent = max (overall->descent, cs->descent);
+ overall->lbearing = min (overall->lbearing,
+ overall->width + cs->lbearing);
+ overall->rbearing = max (overall->rbearing,
+ overall->width + cs->rbearing);
+ overall->width += cs->width;
+ }
+ }
+ }
+
+ /*
+ * if there were no characters, then set everything to 0
+ */
+ if (nfound == 0) {
+ overall->width = overall->ascent = overall->descent =
+ overall->lbearing = overall->rbearing = 0;
+ }
+
+ return 0;
+}
+
+
+/*
+ * XTextWidth16 - compute the width of sequence of XChar2bs. This is a
+ * subset of XTextExtents16.
+ */
+int
+XTextWidth16 (
+ XFontStruct *fs,
+ _Xconst XChar2b *string,
+ int count)
+{
+ int i; /* iterator */
+ Bool singlerow = (fs->max_byte1 == 0); /* optimization */
+ XCharStruct *def; /* info about default char */
+ int width = 0; /* RETURN value */
+
+ if (singlerow) {
+ CI_GET_DEFAULT_INFO_1D (fs, def);
+ } else {
+ CI_GET_DEFAULT_INFO_2D (fs, def);
+ }
+
+ if (def && fs->min_bounds.width == fs->max_bounds.width)
+ return (fs->min_bounds.width * count);
+
+ /*
+ * Iterate over all character in the input string; only consider characters
+ * that exist.
+ */
+ for (i = 0; i < count; i++, string++) {
+ register XCharStruct *cs;
+ unsigned int r = (unsigned int) string->byte1; /* watch for macros */
+ unsigned int c = (unsigned int) string->byte2; /* watch for macros */
+
+ if (singlerow) {
+ unsigned int ind = ((r << 8) | c); /* watch for macros */
+ CI_GET_CHAR_INFO_1D (fs, ind, def, cs);
+ } else {
+ CI_GET_CHAR_INFO_2D (fs, r, c, def, cs);
+ }
+
+ if (cs) width += cs->width;
+ }
+
+ return width;
+}
+
+
+/*
+ * _XTextHeight16 - compute the height of sequence of XChar2bs.
+ */
+int
+_XTextHeight16 (
+ XFontStruct *fs,
+ _Xconst XChar2b *string,
+ int count)
+{
+ int i; /* iterator */
+ Bool singlerow = (fs->max_byte1 == 0); /* optimization */
+ XCharStruct *def; /* info about default char */
+ int height = 0; /* RETURN value */
+
+ if (singlerow) {
+ CI_GET_DEFAULT_INFO_1D (fs, def);
+ } else {
+ CI_GET_DEFAULT_INFO_2D (fs, def);
+ }
+
+ if (def && (fs->min_bounds.ascent == fs->max_bounds.ascent)
+ && (fs->min_bounds.descent == fs->max_bounds.descent))
+ return ((fs->min_bounds.ascent + fs->min_bounds.descent) * count);
+
+ /*
+ * Iterate over all character in the input string; only consider characters
+ * that exist.
+ */
+ for (i = 0; i < count; i++, string++) {
+ register XCharStruct *cs;
+ unsigned int r = (unsigned int) string->byte1; /* watch for macros */
+ unsigned int c = (unsigned int) string->byte2; /* watch for macros */
+
+ if (singlerow) {
+ unsigned int ind = ((r << 8) | c); /* watch for macros */
+ CI_GET_CHAR_INFO_1D (fs, ind, def, cs);
+ } else {
+ CI_GET_CHAR_INFO_2D (fs, r, c, def, cs);
+ }
+
+ if (cs) height += (cs->ascent + cs->descent);
+ }
+
+ return height;
+}
+
diff --git a/libX11/src/TextToStr.c b/libX11/src/TextToStr.c
index 87c66564b..216391c2e 100644
--- a/libX11/src/TextToStr.c
+++ b/libX11/src/TextToStr.c
@@ -1,118 +1,118 @@
-/*
-
-Copyright 1989, 1998 The Open Group
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall not be
-used in advertising or otherwise to promote the sale, use or other dealings
-in this Software without prior written authorization from The Open Group.
-
-*/
-
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include <X11/Xlibint.h>
-#include <X11/Xatom.h>
-#include <X11/Xutil.h>
-
-
-/*
- * XTextPropertyToStringList - set list and count to contain data stored in
- * null-separated STRING property.
- */
-
-Status XTextPropertyToStringList (
- XTextProperty *tp,
- char ***list_return,
- int *count_return)
-{
- char **list; /* return value */
- int nelements; /* return value */
- register char *cp; /* temp variable */
- char *start; /* start of thing to copy */
- int i, j; /* iterator variables */
- int datalen = (int) tp->nitems; /* for convenience */
-
- /*
- * make sure we understand how to do it
- */
- if (tp->encoding != XA_STRING || tp->format != 8) return False;
-
- if (datalen == 0) {
- *list_return = NULL;
- *count_return = 0;
- return True;
- }
-
- /*
- * walk the list to figure out how many elements there are
- */
- nelements = 1; /* since null-separated */
- for (cp = (char *) tp->value, i = datalen; i > 0; cp++, i--) {
- if (*cp == '\0') nelements++;
- }
-
- /*
- * allocate list and duplicate
- */
- list = (char **) Xmalloc (nelements * sizeof (char *));
- if (!list) return False;
-
- start = (char *) Xmalloc ((datalen + 1) * sizeof (char)); /* for <NUL> */
- if (!start) {
- Xfree ((char *) list);
- return False;
- }
-
- /*
- * copy data
- */
- memcpy (start, (char *) tp->value, tp->nitems);
- start[datalen] = '\0';
-
- /*
- * walk down list setting value
- */
- for (cp = start, i = datalen + 1, j = 0; i > 0; cp++, i--) {
- if (*cp == '\0') {
- list[j] = start;
- start = (cp + 1);
- j++;
- }
- }
-
- /*
- * append final null pointer and then return data
- */
- *list_return = list;
- *count_return = nelements;
- return True;
-}
-
-
-void XFreeStringList (char **list)
-{
- if (list) {
- if (list[0]) Xfree (list[0]);
- Xfree ((char *) list);
- list = NULL;
- }
-}
-
+/*
+
+Copyright 1989, 1998 The Open Group
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group shall not be
+used in advertising or otherwise to promote the sale, use or other dealings
+in this Software without prior written authorization from The Open Group.
+
+*/
+
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include <X11/Xlibint.h>
+#include <X11/Xatom.h>
+#include <X11/Xutil.h>
+
+
+/*
+ * XTextPropertyToStringList - set list and count to contain data stored in
+ * null-separated STRING property.
+ */
+
+Status XTextPropertyToStringList (
+ XTextProperty *tp,
+ char ***list_return,
+ int *count_return)
+{
+ char **list; /* return value */
+ int nelements; /* return value */
+ register char *cp; /* temp variable */
+ char *start; /* start of thing to copy */
+ int i, j; /* iterator variables */
+ int datalen = (int) tp->nitems; /* for convenience */
+
+ /*
+ * make sure we understand how to do it
+ */
+ if (tp->encoding != XA_STRING || tp->format != 8) return False;
+
+ if (datalen == 0) {
+ *list_return = NULL;
+ *count_return = 0;
+ return True;
+ }
+
+ /*
+ * walk the list to figure out how many elements there are
+ */
+ nelements = 1; /* since null-separated */
+ for (cp = (char *) tp->value, i = datalen; i > 0; cp++, i--) {
+ if (*cp == '\0') nelements++;
+ }
+
+ /*
+ * allocate list and duplicate
+ */
+ list = (char **) Xmalloc (nelements * sizeof (char *));
+ if (!list) return False;
+
+ start = (char *) Xmalloc ((datalen + 1) * sizeof (char)); /* for <NUL> */
+ if (!start) {
+ Xfree ((char *) list);
+ return False;
+ }
+
+ /*
+ * copy data
+ */
+ memcpy (start, (char *) tp->value, tp->nitems);
+ start[datalen] = '\0';
+
+ /*
+ * walk down list setting value
+ */
+ for (cp = start, i = datalen + 1, j = 0; i > 0; cp++, i--) {
+ if (*cp == '\0') {
+ list[j] = start;
+ start = (cp + 1);
+ j++;
+ }
+ }
+
+ /*
+ * append final null pointer and then return data
+ */
+ *list_return = list;
+ *count_return = nelements;
+ return True;
+}
+
+
+void XFreeStringList (char **list)
+{
+ if (list) {
+ if (list[0]) Xfree (list[0]);
+ Xfree ((char *) list);
+ list = NULL;
+ }
+}
+
diff --git a/libX11/src/TrCoords.c b/libX11/src/TrCoords.c
index 0e231614c..77c1f0672 100644
--- a/libX11/src/TrCoords.c
+++ b/libX11/src/TrCoords.c
@@ -1,64 +1,64 @@
-/*
-
-Copyright 1986, 1998 The Open Group
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall not be
-used in advertising or otherwise to promote the sale, use or other dealings
-in this Software without prior written authorization from The Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-
-Bool XTranslateCoordinates(
- register Display *dpy,
- Window src_win,
- Window dest_win,
- int src_x,
- int src_y,
- int *dst_x,
- int *dst_y,
- Window *child)
-{
- register xTranslateCoordsReq *req;
- xTranslateCoordsReply rep;
-
- LockDisplay(dpy);
- GetReq(TranslateCoords, req);
- req->srcWid = src_win;
- req->dstWid = dest_win;
- req->srcX = src_x;
- req->srcY = src_y;
- if (_XReply (dpy, (xReply *)&rep, 0, xTrue) == 0) {
- UnlockDisplay(dpy);
- SyncHandle();
- return(False);
- }
-
- *child = rep.child;
- *dst_x = cvtINT16toInt (rep.dstX);
- *dst_y = cvtINT16toInt (rep.dstY);
- UnlockDisplay(dpy);
- SyncHandle();
- return ((int)rep.sameScreen);
-}
-
+/*
+
+Copyright 1986, 1998 The Open Group
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group shall not be
+used in advertising or otherwise to promote the sale, use or other dealings
+in this Software without prior written authorization from The Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+
+Bool XTranslateCoordinates(
+ register Display *dpy,
+ Window src_win,
+ Window dest_win,
+ int src_x,
+ int src_y,
+ int *dst_x,
+ int *dst_y,
+ Window *child)
+{
+ register xTranslateCoordsReq *req;
+ xTranslateCoordsReply rep;
+
+ LockDisplay(dpy);
+ GetReq(TranslateCoords, req);
+ req->srcWid = src_win;
+ req->dstWid = dest_win;
+ req->srcX = src_x;
+ req->srcY = src_y;
+ if (_XReply (dpy, (xReply *)&rep, 0, xTrue) == 0) {
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return(False);
+ }
+
+ *child = rep.child;
+ *dst_x = cvtINT16toInt (rep.dstX);
+ *dst_y = cvtINT16toInt (rep.dstY);
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return ((int)rep.sameScreen);
+}
+
diff --git a/libX11/src/UndefCurs.c b/libX11/src/UndefCurs.c
index c7116c940..1d46ff946 100644
--- a/libX11/src/UndefCurs.c
+++ b/libX11/src/UndefCurs.c
@@ -1,49 +1,49 @@
-/*
-
-Copyright 1986, 1998 The Open Group
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall not be
-used in advertising or otherwise to promote the sale, use or other dealings
-in this Software without prior written authorization from The Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-
-int
-XUndefineCursor (
- register Display *dpy,
- Window w)
-{
- register xChangeWindowAttributesReq *req;
- unsigned long defcurs = None;
-
- LockDisplay(dpy);
- GetReqExtra (ChangeWindowAttributes, 4, req);
- req->window = w;
- req->valueMask = CWCursor;
- OneDataCard32 (dpy, NEXTPTR(req,xChangeWindowAttributesReq), defcurs);
- UnlockDisplay(dpy);
- SyncHandle();
- return 1;
-}
-
+/*
+
+Copyright 1986, 1998 The Open Group
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group shall not be
+used in advertising or otherwise to promote the sale, use or other dealings
+in this Software without prior written authorization from The Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+
+int
+XUndefineCursor (
+ register Display *dpy,
+ Window w)
+{
+ register xChangeWindowAttributesReq *req;
+ unsigned long defcurs = None;
+
+ LockDisplay(dpy);
+ GetReqExtra (ChangeWindowAttributes, 4, req);
+ req->window = w;
+ req->valueMask = CWCursor;
+ OneDataCard32 (dpy, NEXTPTR(req,xChangeWindowAttributesReq), defcurs);
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return 1;
+}
+
diff --git a/libX11/src/UngrabBut.c b/libX11/src/UngrabBut.c
index ad7a0c06a..13545ed98 100644
--- a/libX11/src/UngrabBut.c
+++ b/libX11/src/UngrabBut.c
@@ -1,49 +1,49 @@
-/*
-
-Copyright 1986, 1998 The Open Group
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall not be
-used in advertising or otherwise to promote the sale, use or other dealings
-in this Software without prior written authorization from The Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-
-int
-XUngrabButton(
- register Display *dpy,
- unsigned int button, /* CARD8 */
- unsigned int modifiers, /* CARD16 */
- Window grab_window)
-{
- register xUngrabButtonReq *req;
-
- LockDisplay(dpy);
- GetReq(UngrabButton, req);
- req->button = button;
- req->modifiers = modifiers;
- req->grabWindow = grab_window;
- UnlockDisplay(dpy);
- SyncHandle();
- return 1;
-}
+/*
+
+Copyright 1986, 1998 The Open Group
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group shall not be
+used in advertising or otherwise to promote the sale, use or other dealings
+in this Software without prior written authorization from The Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+
+int
+XUngrabButton(
+ register Display *dpy,
+ unsigned int button, /* CARD8 */
+ unsigned int modifiers, /* CARD16 */
+ Window grab_window)
+{
+ register xUngrabButtonReq *req;
+
+ LockDisplay(dpy);
+ GetReq(UngrabButton, req);
+ req->button = button;
+ req->modifiers = modifiers;
+ req->grabWindow = grab_window;
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return 1;
+}
diff --git a/libX11/src/UngrabKbd.c b/libX11/src/UngrabKbd.c
index b3c86db8f..974e8a324 100644
--- a/libX11/src/UngrabKbd.c
+++ b/libX11/src/UngrabKbd.c
@@ -1,45 +1,45 @@
-/*
-
-Copyright 1986, 1998 The Open Group
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall not be
-used in advertising or otherwise to promote the sale, use or other dealings
-in this Software without prior written authorization from The Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-
-int
-XUngrabKeyboard (
- register Display *dpy,
- Time time)
-{
- register xResourceReq *req;
-
- LockDisplay(dpy);
- GetResReq(UngrabKeyboard, time, req);
- UnlockDisplay(dpy);
- SyncHandle();
- return 1;
-}
-
+/*
+
+Copyright 1986, 1998 The Open Group
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group shall not be
+used in advertising or otherwise to promote the sale, use or other dealings
+in this Software without prior written authorization from The Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+
+int
+XUngrabKeyboard (
+ register Display *dpy,
+ Time time)
+{
+ register xResourceReq *req;
+
+ LockDisplay(dpy);
+ GetResReq(UngrabKeyboard, time, req);
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return 1;
+}
+
diff --git a/libX11/src/UngrabKey.c b/libX11/src/UngrabKey.c
index f3cd4c956..919c4e76c 100644
--- a/libX11/src/UngrabKey.c
+++ b/libX11/src/UngrabKey.c
@@ -1,52 +1,52 @@
-/*
-
-Copyright 1986, 1998 The Open Group
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall not be
-used in advertising or otherwise to promote the sale, use or other dealings
-in this Software without prior written authorization from The Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-
-int
-XUngrabKey(
- register Display *dpy,
- int key,
- unsigned int modifiers,
- Window grab_window)
-{
- register xUngrabKeyReq *req;
-
- LockDisplay(dpy);
- GetReq(UngrabKey, req);
- req->grabWindow = grab_window;
- req->modifiers = modifiers;
- req->key = key;
- UnlockDisplay(dpy);
- SyncHandle();
- return 1;
-}
-
-
-
+/*
+
+Copyright 1986, 1998 The Open Group
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group shall not be
+used in advertising or otherwise to promote the sale, use or other dealings
+in this Software without prior written authorization from The Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+
+int
+XUngrabKey(
+ register Display *dpy,
+ int key,
+ unsigned int modifiers,
+ Window grab_window)
+{
+ register xUngrabKeyReq *req;
+
+ LockDisplay(dpy);
+ GetReq(UngrabKey, req);
+ req->grabWindow = grab_window;
+ req->modifiers = modifiers;
+ req->key = key;
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return 1;
+}
+
+
+
diff --git a/libX11/src/UngrabPtr.c b/libX11/src/UngrabPtr.c
index cabebf40e..16417921c 100644
--- a/libX11/src/UngrabPtr.c
+++ b/libX11/src/UngrabPtr.c
@@ -1,44 +1,44 @@
-/*
-
-Copyright 1986, 1998 The Open Group
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall not be
-used in advertising or otherwise to promote the sale, use or other dealings
-in this Software without prior written authorization from The Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-
-int
-XUngrabPointer(
- register Display *dpy,
- Time time)
-{
- register xResourceReq *req;
-
- LockDisplay(dpy);
- GetResReq(UngrabPointer, time, req);
- UnlockDisplay(dpy);
- SyncHandle();
- return 1;
-}
+/*
+
+Copyright 1986, 1998 The Open Group
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group shall not be
+used in advertising or otherwise to promote the sale, use or other dealings
+in this Software without prior written authorization from The Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+
+int
+XUngrabPointer(
+ register Display *dpy,
+ Time time)
+{
+ register xResourceReq *req;
+
+ LockDisplay(dpy);
+ GetResReq(UngrabPointer, time, req);
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return 1;
+}
diff --git a/libX11/src/UngrabSvr.c b/libX11/src/UngrabSvr.c
index 4b7aa44e8..ea0084879 100644
--- a/libX11/src/UngrabSvr.c
+++ b/libX11/src/UngrabSvr.c
@@ -1,44 +1,44 @@
-/*
-
-Copyright 1986, 1998 The Open Group
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall not be
-used in advertising or otherwise to promote the sale, use or other dealings
-in this Software without prior written authorization from The Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-
-int
-XUngrabServer (
- register Display *dpy)
-{
- register xReq *req;
-
- LockDisplay(dpy);
- GetEmptyReq(UngrabServer, req);
- UnlockDisplay(dpy);
- SyncHandle();
- return 1;
-}
-
+/*
+
+Copyright 1986, 1998 The Open Group
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group shall not be
+used in advertising or otherwise to promote the sale, use or other dealings
+in this Software without prior written authorization from The Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+
+int
+XUngrabServer (
+ register Display *dpy)
+{
+ register xReq *req;
+
+ LockDisplay(dpy);
+ GetEmptyReq(UngrabServer, req);
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return 1;
+}
+
diff --git a/libX11/src/UninsCmap.c b/libX11/src/UninsCmap.c
index b38f7c7df..db574ef7c 100644
--- a/libX11/src/UninsCmap.c
+++ b/libX11/src/UninsCmap.c
@@ -1,44 +1,44 @@
-/*
-
-Copyright 1986, 1998 The Open Group
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall not be
-used in advertising or otherwise to promote the sale, use or other dealings
-in this Software without prior written authorization from The Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-
-int
-XUninstallColormap(
- register Display *dpy,
- Colormap cmap)
-{
- register xResourceReq *req;
-
- LockDisplay(dpy);
- GetResReq(UninstallColormap, cmap, req);
- UnlockDisplay(dpy);
- SyncHandle();
- return 1;
-}
+/*
+
+Copyright 1986, 1998 The Open Group
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group shall not be
+used in advertising or otherwise to promote the sale, use or other dealings
+in this Software without prior written authorization from The Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+
+int
+XUninstallColormap(
+ register Display *dpy,
+ Colormap cmap)
+{
+ register xResourceReq *req;
+
+ LockDisplay(dpy);
+ GetResReq(UninstallColormap, cmap, req);
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return 1;
+}
diff --git a/libX11/src/UnldFont.c b/libX11/src/UnldFont.c
index bd622d4ca..a4f69fee4 100644
--- a/libX11/src/UnldFont.c
+++ b/libX11/src/UnldFont.c
@@ -1,45 +1,45 @@
-/*
-
-Copyright 1986, 1998 The Open Group
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall not be
-used in advertising or otherwise to promote the sale, use or other dealings
-in this Software without prior written authorization from The Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-
-int
-XUnloadFont(
- register Display *dpy,
- Font font)
-{
- register xResourceReq *req;
-
- LockDisplay(dpy);
- GetResReq(CloseFont, font, req);
- UnlockDisplay(dpy);
- SyncHandle();
- return 1;
-}
-
+/*
+
+Copyright 1986, 1998 The Open Group
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group shall not be
+used in advertising or otherwise to promote the sale, use or other dealings
+in this Software without prior written authorization from The Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+
+int
+XUnloadFont(
+ register Display *dpy,
+ Font font)
+{
+ register xResourceReq *req;
+
+ LockDisplay(dpy);
+ GetResReq(CloseFont, font, req);
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return 1;
+}
+
diff --git a/libX11/src/UnmapSubs.c b/libX11/src/UnmapSubs.c
index 57da27244..7490a70e9 100644
--- a/libX11/src/UnmapSubs.c
+++ b/libX11/src/UnmapSubs.c
@@ -1,44 +1,44 @@
-/*
-
-Copyright 1986, 1998 The Open Group
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall not be
-used in advertising or otherwise to promote the sale, use or other dealings
-in this Software without prior written authorization from The Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-
-int
-XUnmapSubwindows(
- register Display *dpy,
- Window win)
-{
- register xResourceReq *req;
-
- LockDisplay(dpy);
- GetResReq(UnmapSubwindows,win, req);
- UnlockDisplay(dpy);
- SyncHandle();
- return 1;
-}
+/*
+
+Copyright 1986, 1998 The Open Group
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group shall not be
+used in advertising or otherwise to promote the sale, use or other dealings
+in this Software without prior written authorization from The Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+
+int
+XUnmapSubwindows(
+ register Display *dpy,
+ Window win)
+{
+ register xResourceReq *req;
+
+ LockDisplay(dpy);
+ GetResReq(UnmapSubwindows,win, req);
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return 1;
+}
diff --git a/libX11/src/UnmapWin.c b/libX11/src/UnmapWin.c
index 5dddfcbea..51ae16319 100644
--- a/libX11/src/UnmapWin.c
+++ b/libX11/src/UnmapWin.c
@@ -1,45 +1,45 @@
-/*
-
-Copyright 1986, 1998 The Open Group
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall not be
-used in advertising or otherwise to promote the sale, use or other dealings
-in this Software without prior written authorization from The Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-
-int
-XUnmapWindow (
- register Display *dpy,
- Window w)
-{
- register xResourceReq *req;
-
- LockDisplay(dpy);
- GetResReq(UnmapWindow, w, req);
- UnlockDisplay(dpy);
- SyncHandle();
- return 1;
-}
-
+/*
+
+Copyright 1986, 1998 The Open Group
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group shall not be
+used in advertising or otherwise to promote the sale, use or other dealings
+in this Software without prior written authorization from The Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+
+int
+XUnmapWindow (
+ register Display *dpy,
+ Window w)
+{
+ register xResourceReq *req;
+
+ LockDisplay(dpy);
+ GetResReq(UnmapWindow, w, req);
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return 1;
+}
+
diff --git a/libX11/src/VisUtil.c b/libX11/src/VisUtil.c
index e44825734..3434c0161 100644
--- a/libX11/src/VisUtil.c
+++ b/libX11/src/VisUtil.c
@@ -1,254 +1,254 @@
-/*
-
-Copyright 1986, 1998 The Open Group
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall not be
-used in advertising or otherwise to promote the sale, use or other dealings
-in this Software without prior written authorization from The Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-#include "Xutil.h"
-#include <stdio.h>
-/*
- * This procedure returns a list of visual information structures
- * that match the specified attributes given in the visual information
- * template.
- *
- * If no visuals exist that match the specified attributes, a NULL is
- * returned.
- *
- * The choices for visual_info_mask are:
- *
- * VisualNoMask
- * VisualIDMask
- * VisualScreenMask
- * VisualDepthMask
- * VisualClassMask
- * VisualRedMaskMask
- * VisualGreenMaskMask
- * VisualBlueMaskMask
- * VisualColormapSizeMask
- * VisualBitsPerRGBMask
- * VisualAllMask
- */
-
-XVisualInfo *XGetVisualInfo(
- Display *dpy,
- register long visual_info_mask,
- register XVisualInfo *visual_info_template,
- int *nitems) /* RETURN */
-{
-
- register Visual *vp;
- register Depth *dp;
- Screen *sp;
- int ii,screen_s,screen_e,total,count;
- register XVisualInfo *vip,*vip_base;
-
- /* NOTE: NO HIGH PERFORMING CODE TO BE FOUND HERE */
-
- LockDisplay(dpy);
-
- /* ALLOCATE THE ORIGINAL BUFFER; REALLOCED LATER IF OVERFLOW OCCURS;
- FREED AT END IF NO VISUALS ARE FOUND */
-
- count = 0;
- total = 10;
- if (! (vip_base = vip = (XVisualInfo *)
- Xmalloc((unsigned) (sizeof(XVisualInfo) * total)))) {
- UnlockDisplay(dpy);
- return (XVisualInfo *) NULL;
- }
-
- /* DETERMINE IF WE DO ALL SCREENS OR ONLY ONE */
-
- screen_s = 0;
- screen_e = dpy->nscreens;
- if (visual_info_mask & VisualScreenMask)
- {
- screen_s = visual_info_template->screen;
- if (screen_s < 0 || screen_s >= screen_e)
- screen_e = screen_s;
- else
- screen_e = screen_s + 1;
- }
-
- /* LOOP THROUGH SCREENS */
-
- for (ii=screen_s; ii<screen_e; ii++)
- {
- sp = (Screen *)(&dpy->screens[ii]);
-
- /* LOOP THROUGH DEPTHS */
-
- for (dp=sp->depths; dp < (sp->depths + sp->ndepths); dp++)
- {
- if ((visual_info_mask & VisualDepthMask) &&
- (dp->depth != visual_info_template->depth)) continue;
-
- /* LOOP THROUGH VISUALS */
-
- if (dp->visuals) {
- for (vp=dp->visuals; vp<(dp->visuals + dp->nvisuals); vp++) {
- if ((visual_info_mask & VisualIDMask) &&
- (vp->visualid != visual_info_template->visualid)) continue;
- if ((visual_info_mask & VisualClassMask) &&
- (vp->class != visual_info_template->class)) continue;
- if ((visual_info_mask & VisualRedMaskMask) &&
- (vp->red_mask != visual_info_template->red_mask)) continue;
- if ((visual_info_mask & VisualGreenMaskMask) &&
- (vp->green_mask != visual_info_template->green_mask)) continue;
- if ((visual_info_mask & VisualBlueMaskMask) &&
- (vp->blue_mask != visual_info_template->blue_mask)) continue;
- if ((visual_info_mask & VisualColormapSizeMask) &&
- (vp->map_entries != visual_info_template->colormap_size)) continue;
- if ((visual_info_mask & VisualBitsPerRGBMask) &&
- (vp->bits_per_rgb != visual_info_template->bits_per_rgb)) continue;
-
- /* YEA!!! WE FOUND A GOOD ONE */
-
- if (count+1 > total)
- {
- XVisualInfo *old_vip_base = vip_base;
- total += 10;
- if (! (vip_base = (XVisualInfo *)
- Xrealloc((char *) vip_base,
- (unsigned) (sizeof(XVisualInfo) * total)))) {
- Xfree((char *) old_vip_base);
- UnlockDisplay(dpy);
- return (XVisualInfo *) NULL;
- }
- vip = &vip_base[count];
- }
-
- count++;
-
- vip->visual = _XVIDtoVisual(dpy, vp->visualid);
- vip->visualid = vp->visualid;
- vip->screen = ii;
- vip->depth = dp->depth;
- vip->class = vp->class;
- vip->red_mask = vp->red_mask;
- vip->green_mask = vp->green_mask;
- vip->blue_mask = vp->blue_mask;
- vip->colormap_size = vp->map_entries;
- vip->bits_per_rgb = vp->bits_per_rgb;
-
- vip++;
-
- } /* END OF LOOP ON VISUALS */
- } /* END OF IF THERE ARE ANY VISUALS AT THIS DEPTH */
-
- } /* END OF LOOP ON DEPTHS */
-
- } /* END OF LOOP ON SCREENS */
-
- UnlockDisplay(dpy);
-
- if (count)
- {
- *nitems = count;
- return vip_base;
- }
-
- Xfree((char *) vip_base);
- *nitems = 0;
- return NULL;
-}
-
-
-/*
- * This procedure will return the visual information for a visual
- * that matches the specified depth and class for a screen. Since
- * multiple visuals may exist that match the specified depth and
- * class, which visual chosen is undefined.
- *
- * If a visual is found, True is returned as the function value,
- * otherwise False is returned.
- */
-
-Status XMatchVisualInfo(
- Display *dpy,
- int screen,
- int depth,
- int class,
- XVisualInfo *visual_info) /* RETURNED */
-{
-
- Visual *vp;
- Depth *dp;
- Screen *sp;
- int ii,jj;
-
- if (screen < 0 || screen >= dpy->nscreens)
- return False;
-
- LockDisplay(dpy);
-
- sp = (Screen *)(&dpy->screens[screen]);
-
- dp = sp->depths;
-
- for (ii=0; ii < sp->ndepths; ii++)
- {
-
- /* LOOK THROUGH DEPTHS FOR THE WANTED DEPTH */
-
- if (dp->depth == depth)
- {
- vp = dp->visuals;
-
- /* LOOK THROUGH VISUALS FOR THE WANTED CLASS */
-
- /* if nvisuals == 0 then vp will be NULL */
- for (jj=0; jj<dp->nvisuals; jj++)
- {
- if (vp->class == class)
- {
- visual_info->visual = _XVIDtoVisual(dpy, vp->visualid);
- visual_info->visualid = vp->visualid;
- visual_info->screen = screen;
- visual_info->depth = depth;
- visual_info->class = vp->class;
- visual_info->red_mask = vp->red_mask;
- visual_info->green_mask = vp->green_mask;
- visual_info->blue_mask = vp->blue_mask;
- visual_info->colormap_size = vp->map_entries;
- visual_info->bits_per_rgb = vp->bits_per_rgb;
- UnlockDisplay(dpy);
- return True;
- }
- vp++;
- }
- }
-
- dp++;
-
- }
-
- UnlockDisplay(dpy);
-
- return False;
-
-}
+/*
+
+Copyright 1986, 1998 The Open Group
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group shall not be
+used in advertising or otherwise to promote the sale, use or other dealings
+in this Software without prior written authorization from The Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+#include "Xutil.h"
+#include <stdio.h>
+/*
+ * This procedure returns a list of visual information structures
+ * that match the specified attributes given in the visual information
+ * template.
+ *
+ * If no visuals exist that match the specified attributes, a NULL is
+ * returned.
+ *
+ * The choices for visual_info_mask are:
+ *
+ * VisualNoMask
+ * VisualIDMask
+ * VisualScreenMask
+ * VisualDepthMask
+ * VisualClassMask
+ * VisualRedMaskMask
+ * VisualGreenMaskMask
+ * VisualBlueMaskMask
+ * VisualColormapSizeMask
+ * VisualBitsPerRGBMask
+ * VisualAllMask
+ */
+
+XVisualInfo *XGetVisualInfo(
+ Display *dpy,
+ register long visual_info_mask,
+ register XVisualInfo *visual_info_template,
+ int *nitems) /* RETURN */
+{
+
+ register Visual *vp;
+ register Depth *dp;
+ Screen *sp;
+ int ii,screen_s,screen_e,total,count;
+ register XVisualInfo *vip,*vip_base;
+
+ /* NOTE: NO HIGH PERFORMING CODE TO BE FOUND HERE */
+
+ LockDisplay(dpy);
+
+ /* ALLOCATE THE ORIGINAL BUFFER; REALLOCED LATER IF OVERFLOW OCCURS;
+ FREED AT END IF NO VISUALS ARE FOUND */
+
+ count = 0;
+ total = 10;
+ if (! (vip_base = vip = (XVisualInfo *)
+ Xmalloc((unsigned) (sizeof(XVisualInfo) * total)))) {
+ UnlockDisplay(dpy);
+ return (XVisualInfo *) NULL;
+ }
+
+ /* DETERMINE IF WE DO ALL SCREENS OR ONLY ONE */
+
+ screen_s = 0;
+ screen_e = dpy->nscreens;
+ if (visual_info_mask & VisualScreenMask)
+ {
+ screen_s = visual_info_template->screen;
+ if (screen_s < 0 || screen_s >= screen_e)
+ screen_e = screen_s;
+ else
+ screen_e = screen_s + 1;
+ }
+
+ /* LOOP THROUGH SCREENS */
+
+ for (ii=screen_s; ii<screen_e; ii++)
+ {
+ sp = (Screen *)(&dpy->screens[ii]);
+
+ /* LOOP THROUGH DEPTHS */
+
+ for (dp=sp->depths; dp < (sp->depths + sp->ndepths); dp++)
+ {
+ if ((visual_info_mask & VisualDepthMask) &&
+ (dp->depth != visual_info_template->depth)) continue;
+
+ /* LOOP THROUGH VISUALS */
+
+ if (dp->visuals) {
+ for (vp=dp->visuals; vp<(dp->visuals + dp->nvisuals); vp++) {
+ if ((visual_info_mask & VisualIDMask) &&
+ (vp->visualid != visual_info_template->visualid)) continue;
+ if ((visual_info_mask & VisualClassMask) &&
+ (vp->class != visual_info_template->class)) continue;
+ if ((visual_info_mask & VisualRedMaskMask) &&
+ (vp->red_mask != visual_info_template->red_mask)) continue;
+ if ((visual_info_mask & VisualGreenMaskMask) &&
+ (vp->green_mask != visual_info_template->green_mask)) continue;
+ if ((visual_info_mask & VisualBlueMaskMask) &&
+ (vp->blue_mask != visual_info_template->blue_mask)) continue;
+ if ((visual_info_mask & VisualColormapSizeMask) &&
+ (vp->map_entries != visual_info_template->colormap_size)) continue;
+ if ((visual_info_mask & VisualBitsPerRGBMask) &&
+ (vp->bits_per_rgb != visual_info_template->bits_per_rgb)) continue;
+
+ /* YEA!!! WE FOUND A GOOD ONE */
+
+ if (count+1 > total)
+ {
+ XVisualInfo *old_vip_base = vip_base;
+ total += 10;
+ if (! (vip_base = (XVisualInfo *)
+ Xrealloc((char *) vip_base,
+ (unsigned) (sizeof(XVisualInfo) * total)))) {
+ Xfree((char *) old_vip_base);
+ UnlockDisplay(dpy);
+ return (XVisualInfo *) NULL;
+ }
+ vip = &vip_base[count];
+ }
+
+ count++;
+
+ vip->visual = _XVIDtoVisual(dpy, vp->visualid);
+ vip->visualid = vp->visualid;
+ vip->screen = ii;
+ vip->depth = dp->depth;
+ vip->class = vp->class;
+ vip->red_mask = vp->red_mask;
+ vip->green_mask = vp->green_mask;
+ vip->blue_mask = vp->blue_mask;
+ vip->colormap_size = vp->map_entries;
+ vip->bits_per_rgb = vp->bits_per_rgb;
+
+ vip++;
+
+ } /* END OF LOOP ON VISUALS */
+ } /* END OF IF THERE ARE ANY VISUALS AT THIS DEPTH */
+
+ } /* END OF LOOP ON DEPTHS */
+
+ } /* END OF LOOP ON SCREENS */
+
+ UnlockDisplay(dpy);
+
+ if (count)
+ {
+ *nitems = count;
+ return vip_base;
+ }
+
+ Xfree((char *) vip_base);
+ *nitems = 0;
+ return NULL;
+}
+
+
+/*
+ * This procedure will return the visual information for a visual
+ * that matches the specified depth and class for a screen. Since
+ * multiple visuals may exist that match the specified depth and
+ * class, which visual chosen is undefined.
+ *
+ * If a visual is found, True is returned as the function value,
+ * otherwise False is returned.
+ */
+
+Status XMatchVisualInfo(
+ Display *dpy,
+ int screen,
+ int depth,
+ int class,
+ XVisualInfo *visual_info) /* RETURNED */
+{
+
+ Visual *vp;
+ Depth *dp;
+ Screen *sp;
+ int ii,jj;
+
+ if (screen < 0 || screen >= dpy->nscreens)
+ return False;
+
+ LockDisplay(dpy);
+
+ sp = (Screen *)(&dpy->screens[screen]);
+
+ dp = sp->depths;
+
+ for (ii=0; ii < sp->ndepths; ii++)
+ {
+
+ /* LOOK THROUGH DEPTHS FOR THE WANTED DEPTH */
+
+ if (dp->depth == depth)
+ {
+ vp = dp->visuals;
+
+ /* LOOK THROUGH VISUALS FOR THE WANTED CLASS */
+
+ /* if nvisuals == 0 then vp will be NULL */
+ for (jj=0; jj<dp->nvisuals; jj++)
+ {
+ if (vp->class == class)
+ {
+ visual_info->visual = _XVIDtoVisual(dpy, vp->visualid);
+ visual_info->visualid = vp->visualid;
+ visual_info->screen = screen;
+ visual_info->depth = depth;
+ visual_info->class = vp->class;
+ visual_info->red_mask = vp->red_mask;
+ visual_info->green_mask = vp->green_mask;
+ visual_info->blue_mask = vp->blue_mask;
+ visual_info->colormap_size = vp->map_entries;
+ visual_info->bits_per_rgb = vp->bits_per_rgb;
+ UnlockDisplay(dpy);
+ return True;
+ }
+ vp++;
+ }
+ }
+
+ dp++;
+
+ }
+
+ UnlockDisplay(dpy);
+
+ return False;
+
+}
diff --git a/libX11/src/WMGeom.c b/libX11/src/WMGeom.c
index a7d0faf1d..7947536f5 100644
--- a/libX11/src/WMGeom.c
+++ b/libX11/src/WMGeom.c
@@ -1,183 +1,183 @@
-/*
-
-Copyright 1989, 1998 The Open Group
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall not be
-used in advertising or otherwise to promote the sale, use or other dealings
-in this Software without prior written authorization from The Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-#include "Xutil.h"
-
-static int _GeometryMaskToGravity(
- int mask);
-
-/*
- * This routine given a user supplied positional argument and a default
- * argument (fully qualified) will return the position the window should take
- * as well as the gravity to be set in the WM_NORMAL_HINTS size hints.
- * Always sets all return values and returns a mask describing which fields
- * were set by the user or'ed with whether or not the x and y values should
- * be considered "negative".
- */
-
-int
-XWMGeometry (
- Display *dpy, /* user's display connection */
- int screen, /* screen on which to do computation */
- _Xconst char *user_geom, /* user provided geometry spec */
- _Xconst char *def_geom, /* default geometry spec for window */
- unsigned int bwidth, /* border width */
- XSizeHints *hints, /* usually WM_NORMAL_HINTS */
- int *x_return, /* location of window */
- int *y_return, /* location of window */
- int *width_return, /* size of window */
- int *height_return, /* size of window */
- int *gravity_return) /* gravity of window */
-{
- int ux, uy; /* returned values from parse */
- unsigned int uwidth, uheight; /* returned values from parse */
- int umask; /* parse mask of returned values */
- int dx, dy; /* default values from parse */
- unsigned int dwidth, dheight; /* default values from parse */
- int dmask; /* parse mask of returned values */
- int base_width, base_height; /* valid amounts */
- int min_width, min_height; /* valid amounts */
- int width_inc, height_inc; /* valid amounts */
- int rx, ry, rwidth, rheight; /* return values */
- int rmask; /* return mask */
-
- /*
- * Get the base sizes and increments. Section 4.1.2.3 of the ICCCM
- * states that the base and minimum sizes are defaults for each other.
- * If neither is given, then the base sizes should be 0. These parameters
- * control the sets of sizes that window managers should allow for the
- * window according to the following formulae:
- *
- * width = base_width + (i * width_inc)
- * height = base_height + (j * height_inc)
- */
- base_width = ((hints->flags & PBaseSize) ? hints->base_width :
- ((hints->flags & PMinSize) ? hints->min_width : 0));
- base_height = ((hints->flags & PBaseSize) ? hints->base_height :
- ((hints->flags & PMinSize) ? hints->min_height : 0));
- min_width = ((hints->flags & PMinSize) ? hints->min_width : base_width);
- min_height = ((hints->flags & PMinSize) ? hints->min_height : base_height);
- width_inc = (hints->flags & PResizeInc) ? hints->width_inc : 1;
- height_inc = (hints->flags & PResizeInc) ? hints->height_inc : 1;
-
-
- /*
- * parse the two geometry masks
- */
- rmask = umask = XParseGeometry (user_geom, &ux, &uy, &uwidth, &uheight);
- dmask = XParseGeometry (def_geom, &dx, &dy, &dwidth, &dheight);
-
-
- /*
- * get the width and height:
- * 1. if user-specified, then take that value
- * 2. else, if program-specified, then take that value
- * 3. else, take 1
- * 4. multiply by the size increment
- * 5. and add to the base size
- */
- rwidth = ((((umask & WidthValue) ? uwidth :
- ((dmask & WidthValue) ? dwidth : 1)) * width_inc) +
- base_width);
- rheight = ((((umask & HeightValue) ? uheight :
- ((dmask & HeightValue) ? dheight : 1)) * height_inc) +
- base_height);
-
- /*
- * Make sure computed size is within limits. Note that we always do the
- * lower bounds check since the base size (which defaults to 0) should
- * be used if a minimum size isn't specified.
- */
- if (rwidth < min_width) rwidth = min_width;
- if (rheight < min_height) rheight = min_height;
-
- if (hints->flags & PMaxSize) {
- if (rwidth > hints->max_width) rwidth = hints->max_width;
- if (rheight > hints->max_height) rheight = hints->max_height;
- }
-
-
- /*
- * Compute the location. Set the negative flags in the return mask
- * (and watch out for borders), if necessary.
- */
- if (umask & XValue) {
- rx = ((umask & XNegative) ?
- (DisplayWidth (dpy, screen) + ux - rwidth - 2 * bwidth) : ux);
- } else if (dmask & XValue) {
- if (dmask & XNegative) {
- rx = (DisplayWidth (dpy, screen) + dx - rwidth - 2 * bwidth);
- rmask |= XNegative;
- } else
- rx = dx;
- } else {
- rx = 0; /* gotta choose something... */
- }
-
- if (umask & YValue) {
- ry = ((umask & YNegative) ?
- (DisplayHeight(dpy, screen) + uy - rheight - 2 * bwidth) : uy);
- } else if (dmask & YValue) {
- if (dmask & YNegative) {
- ry = (DisplayHeight(dpy, screen) + dy - rheight - 2 * bwidth);
- rmask |= YNegative;
- } else
- ry = dy;
- } else {
- ry = 0; /* gotta choose something... */
- }
-
-
- /*
- * All finished, so set the return variables.
- */
- *x_return = rx;
- *y_return = ry;
- *width_return = rwidth;
- *height_return = rheight;
- *gravity_return = _GeometryMaskToGravity (rmask);
- return rmask;
-}
-
-
-static int _GeometryMaskToGravity(
- int mask)
-{
- switch (mask & (XNegative|YNegative)) {
- case 0:
- return NorthWestGravity;
- case XNegative:
- return NorthEastGravity;
- case YNegative:
- return SouthWestGravity;
- default:
- return SouthEastGravity;
- }
-}
+/*
+
+Copyright 1989, 1998 The Open Group
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group shall not be
+used in advertising or otherwise to promote the sale, use or other dealings
+in this Software without prior written authorization from The Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+#include "Xutil.h"
+
+static int _GeometryMaskToGravity(
+ int mask);
+
+/*
+ * This routine given a user supplied positional argument and a default
+ * argument (fully qualified) will return the position the window should take
+ * as well as the gravity to be set in the WM_NORMAL_HINTS size hints.
+ * Always sets all return values and returns a mask describing which fields
+ * were set by the user or'ed with whether or not the x and y values should
+ * be considered "negative".
+ */
+
+int
+XWMGeometry (
+ Display *dpy, /* user's display connection */
+ int screen, /* screen on which to do computation */
+ _Xconst char *user_geom, /* user provided geometry spec */
+ _Xconst char *def_geom, /* default geometry spec for window */
+ unsigned int bwidth, /* border width */
+ XSizeHints *hints, /* usually WM_NORMAL_HINTS */
+ int *x_return, /* location of window */
+ int *y_return, /* location of window */
+ int *width_return, /* size of window */
+ int *height_return, /* size of window */
+ int *gravity_return) /* gravity of window */
+{
+ int ux, uy; /* returned values from parse */
+ unsigned int uwidth, uheight; /* returned values from parse */
+ int umask; /* parse mask of returned values */
+ int dx, dy; /* default values from parse */
+ unsigned int dwidth, dheight; /* default values from parse */
+ int dmask; /* parse mask of returned values */
+ int base_width, base_height; /* valid amounts */
+ int min_width, min_height; /* valid amounts */
+ int width_inc, height_inc; /* valid amounts */
+ int rx, ry, rwidth, rheight; /* return values */
+ int rmask; /* return mask */
+
+ /*
+ * Get the base sizes and increments. Section 4.1.2.3 of the ICCCM
+ * states that the base and minimum sizes are defaults for each other.
+ * If neither is given, then the base sizes should be 0. These parameters
+ * control the sets of sizes that window managers should allow for the
+ * window according to the following formulae:
+ *
+ * width = base_width + (i * width_inc)
+ * height = base_height + (j * height_inc)
+ */
+ base_width = ((hints->flags & PBaseSize) ? hints->base_width :
+ ((hints->flags & PMinSize) ? hints->min_width : 0));
+ base_height = ((hints->flags & PBaseSize) ? hints->base_height :
+ ((hints->flags & PMinSize) ? hints->min_height : 0));
+ min_width = ((hints->flags & PMinSize) ? hints->min_width : base_width);
+ min_height = ((hints->flags & PMinSize) ? hints->min_height : base_height);
+ width_inc = (hints->flags & PResizeInc) ? hints->width_inc : 1;
+ height_inc = (hints->flags & PResizeInc) ? hints->height_inc : 1;
+
+
+ /*
+ * parse the two geometry masks
+ */
+ rmask = umask = XParseGeometry (user_geom, &ux, &uy, &uwidth, &uheight);
+ dmask = XParseGeometry (def_geom, &dx, &dy, &dwidth, &dheight);
+
+
+ /*
+ * get the width and height:
+ * 1. if user-specified, then take that value
+ * 2. else, if program-specified, then take that value
+ * 3. else, take 1
+ * 4. multiply by the size increment
+ * 5. and add to the base size
+ */
+ rwidth = ((((umask & WidthValue) ? uwidth :
+ ((dmask & WidthValue) ? dwidth : 1)) * width_inc) +
+ base_width);
+ rheight = ((((umask & HeightValue) ? uheight :
+ ((dmask & HeightValue) ? dheight : 1)) * height_inc) +
+ base_height);
+
+ /*
+ * Make sure computed size is within limits. Note that we always do the
+ * lower bounds check since the base size (which defaults to 0) should
+ * be used if a minimum size isn't specified.
+ */
+ if (rwidth < min_width) rwidth = min_width;
+ if (rheight < min_height) rheight = min_height;
+
+ if (hints->flags & PMaxSize) {
+ if (rwidth > hints->max_width) rwidth = hints->max_width;
+ if (rheight > hints->max_height) rheight = hints->max_height;
+ }
+
+
+ /*
+ * Compute the location. Set the negative flags in the return mask
+ * (and watch out for borders), if necessary.
+ */
+ if (umask & XValue) {
+ rx = ((umask & XNegative) ?
+ (DisplayWidth (dpy, screen) + ux - rwidth - 2 * bwidth) : ux);
+ } else if (dmask & XValue) {
+ if (dmask & XNegative) {
+ rx = (DisplayWidth (dpy, screen) + dx - rwidth - 2 * bwidth);
+ rmask |= XNegative;
+ } else
+ rx = dx;
+ } else {
+ rx = 0; /* gotta choose something... */
+ }
+
+ if (umask & YValue) {
+ ry = ((umask & YNegative) ?
+ (DisplayHeight(dpy, screen) + uy - rheight - 2 * bwidth) : uy);
+ } else if (dmask & YValue) {
+ if (dmask & YNegative) {
+ ry = (DisplayHeight(dpy, screen) + dy - rheight - 2 * bwidth);
+ rmask |= YNegative;
+ } else
+ ry = dy;
+ } else {
+ ry = 0; /* gotta choose something... */
+ }
+
+
+ /*
+ * All finished, so set the return variables.
+ */
+ *x_return = rx;
+ *y_return = ry;
+ *width_return = rwidth;
+ *height_return = rheight;
+ *gravity_return = _GeometryMaskToGravity (rmask);
+ return rmask;
+}
+
+
+static int _GeometryMaskToGravity(
+ int mask)
+{
+ switch (mask & (XNegative|YNegative)) {
+ case 0:
+ return NorthWestGravity;
+ case XNegative:
+ return NorthEastGravity;
+ case YNegative:
+ return SouthWestGravity;
+ default:
+ return SouthEastGravity;
+ }
+}
diff --git a/libX11/src/WMProps.c b/libX11/src/WMProps.c
index 732a5cb3b..3ccb654fa 100644
--- a/libX11/src/WMProps.c
+++ b/libX11/src/WMProps.c
@@ -1,147 +1,147 @@
-/*
-
-Copyright 1987, 1988, 1993, 1998 The Open Group
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
-
-The above copyright notice and this permission notice shall be included
-in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
-IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR
-OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
-ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall
-not be used in advertising or otherwise to promote the sale, use or
-other dealings in this Software without prior written authorization
-from The Open Group.
-
-*/
-
-/***********************************************************
-Copyright 1988 by Wyse Technology, Inc., San Jose, Ca.,
-Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts,
-
- All Rights Reserved
-
-Permission to use, copy, modify, and distribute this software and its
-documentation for any purpose and without fee is hereby granted,
-provided that the above copyright notice appear in all copies and that
-both that copyright notice and this permission notice appear in
-supporting documentation, and that the name of Wyse not be
-used in advertising or publicity pertaining to distribution of the
-software without specific, written prior permission.
-
-WYSE DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
-ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
-DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
-ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
-WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
-ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
-SOFTWARE.
-
-******************************************************************/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include <X11/Xlibint.h>
-#include <X11/Xatom.h>
-#include <X11/Xutil.h>
-#include <X11/Xos.h>
-#include <X11/Xlocale.h>
-
-
-/*
- * XSetWMProperties sets the following properties:
- * WM_NAME type: TEXT format: varies?
- * WM_ICON_NAME type: TEXT format: varies?
- * WM_HINTS type: WM_HINTS format: 32
- * WM_COMMAND type: TEXT format: varies?
- * WM_CLIENT_MACHINE type: TEXT format: varies?
- * WM_NORMAL_HINTS type: WM_SIZE_HINTS format: 32
- * WM_CLASS type: STRING/STRING format: 8
- * WM_LOCALE_NAME type: STRING format: 8
- */
-
-void XSetWMProperties (
- Display *dpy,
- Window w, /* window to decorate */
- XTextProperty *windowName, /* name of application */
- XTextProperty *iconName, /* name string for icon */
- char **argv, /* command line */
- int argc, /* size of command line */
- XSizeHints *sizeHints, /* size hints for window in its normal state */
- XWMHints *wmHints, /* miscelaneous window manager hints */
- XClassHint *classHints) /* resource name and class */
-{
- XTextProperty textprop;
- char hostName[256];
- int len = _XGetHostname (hostName, sizeof hostName);
- char *locale;
-
- /* set names of window and icon */
- if (windowName) XSetWMName (dpy, w, windowName);
- if (iconName) XSetWMIconName (dpy, w, iconName);
-
- /* set the command if given */
- if (argv) {
- /*
- * for UNIX and other operating systems which use nul-terminated
- * arrays of STRINGs.
- */
- XSetCommand (dpy, w, argv, argc);
- }
-
- /* set the name of the machine on which this application is running */
- textprop.value = (unsigned char *) hostName;
- textprop.encoding = XA_STRING;
- textprop.format = 8;
- textprop.nitems = len;
- XSetWMClientMachine (dpy, w, &textprop);
-
- /* set hints about how geometry and window manager interaction */
- if (sizeHints) XSetWMNormalHints (dpy, w, sizeHints);
- if (wmHints) XSetWMHints (dpy, w, wmHints);
- if (classHints) {
- XClassHint tmp;
-
- if (!classHints->res_name) {
- tmp.res_name = getenv ("RESOURCE_NAME");
- if (!tmp.res_name && argv && argv[0]) {
- /*
- * UNIX uses /dir/subdir/.../basename; other operating
- * systems will have to change this.
- */
- char *cp = strrchr (argv[0], '/');
-#ifdef __UNIXOS2__
- char *os2_cp = strrchr (argv[0],'\\');
- char *dot_cp = strrchr (argv[0],'.');
- if (os2_cp && (os2_cp > cp)) {
- if(dot_cp && (dot_cp > os2_cp)) *dot_cp = '\0';
- cp=os2_cp;
- }
-#endif
- tmp.res_name = (cp ? cp + 1 : argv[0]);
- }
- tmp.res_class = classHints->res_class;
- classHints = &tmp;
- }
- XSetClassHint (dpy, w, classHints);
- }
-
- locale = setlocale(LC_CTYPE, (char *)NULL);
- if (locale)
- XChangeProperty (dpy, w, XInternAtom(dpy, "WM_LOCALE_NAME", False),
- XA_STRING, 8, PropModeReplace,
- (unsigned char *)locale, strlen(locale));
-}
-
+/*
+
+Copyright 1987, 1988, 1993, 1998 The Open Group
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
+
+The above copyright notice and this permission notice shall be included
+in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR
+OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
+ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group shall
+not be used in advertising or otherwise to promote the sale, use or
+other dealings in this Software without prior written authorization
+from The Open Group.
+
+*/
+
+/***********************************************************
+Copyright 1988 by Wyse Technology, Inc., San Jose, Ca.,
+Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts,
+
+ All Rights Reserved
+
+Permission to use, copy, modify, and distribute this software and its
+documentation for any purpose and without fee is hereby granted,
+provided that the above copyright notice appear in all copies and that
+both that copyright notice and this permission notice appear in
+supporting documentation, and that the name of Wyse not be
+used in advertising or publicity pertaining to distribution of the
+software without specific, written prior permission.
+
+WYSE DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
+ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
+DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
+ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
+WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
+ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
+SOFTWARE.
+
+******************************************************************/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include <X11/Xlibint.h>
+#include <X11/Xatom.h>
+#include <X11/Xutil.h>
+#include <X11/Xos.h>
+#include <X11/Xlocale.h>
+
+
+/*
+ * XSetWMProperties sets the following properties:
+ * WM_NAME type: TEXT format: varies?
+ * WM_ICON_NAME type: TEXT format: varies?
+ * WM_HINTS type: WM_HINTS format: 32
+ * WM_COMMAND type: TEXT format: varies?
+ * WM_CLIENT_MACHINE type: TEXT format: varies?
+ * WM_NORMAL_HINTS type: WM_SIZE_HINTS format: 32
+ * WM_CLASS type: STRING/STRING format: 8
+ * WM_LOCALE_NAME type: STRING format: 8
+ */
+
+void XSetWMProperties (
+ Display *dpy,
+ Window w, /* window to decorate */
+ XTextProperty *windowName, /* name of application */
+ XTextProperty *iconName, /* name string for icon */
+ char **argv, /* command line */
+ int argc, /* size of command line */
+ XSizeHints *sizeHints, /* size hints for window in its normal state */
+ XWMHints *wmHints, /* miscelaneous window manager hints */
+ XClassHint *classHints) /* resource name and class */
+{
+ XTextProperty textprop;
+ char hostName[256];
+ int len = _XGetHostname (hostName, sizeof hostName);
+ char *locale;
+
+ /* set names of window and icon */
+ if (windowName) XSetWMName (dpy, w, windowName);
+ if (iconName) XSetWMIconName (dpy, w, iconName);
+
+ /* set the command if given */
+ if (argv) {
+ /*
+ * for UNIX and other operating systems which use nul-terminated
+ * arrays of STRINGs.
+ */
+ XSetCommand (dpy, w, argv, argc);
+ }
+
+ /* set the name of the machine on which this application is running */
+ textprop.value = (unsigned char *) hostName;
+ textprop.encoding = XA_STRING;
+ textprop.format = 8;
+ textprop.nitems = len;
+ XSetWMClientMachine (dpy, w, &textprop);
+
+ /* set hints about how geometry and window manager interaction */
+ if (sizeHints) XSetWMNormalHints (dpy, w, sizeHints);
+ if (wmHints) XSetWMHints (dpy, w, wmHints);
+ if (classHints) {
+ XClassHint tmp;
+
+ if (!classHints->res_name) {
+ tmp.res_name = getenv ("RESOURCE_NAME");
+ if (!tmp.res_name && argv && argv[0]) {
+ /*
+ * UNIX uses /dir/subdir/.../basename; other operating
+ * systems will have to change this.
+ */
+ char *cp = strrchr (argv[0], '/');
+#ifdef __UNIXOS2__
+ char *os2_cp = strrchr (argv[0],'\\');
+ char *dot_cp = strrchr (argv[0],'.');
+ if (os2_cp && (os2_cp > cp)) {
+ if(dot_cp && (dot_cp > os2_cp)) *dot_cp = '\0';
+ cp=os2_cp;
+ }
+#endif
+ tmp.res_name = (cp ? cp + 1 : argv[0]);
+ }
+ tmp.res_class = classHints->res_class;
+ classHints = &tmp;
+ }
+ XSetClassHint (dpy, w, classHints);
+ }
+
+ locale = setlocale(LC_CTYPE, (char *)NULL);
+ if (locale)
+ XChangeProperty (dpy, w, XInternAtom(dpy, "WM_LOCALE_NAME", False),
+ XA_STRING, 8, PropModeReplace,
+ (unsigned char *)locale, strlen(locale));
+}
+
diff --git a/libX11/src/WarpPtr.c b/libX11/src/WarpPtr.c
index f3c889165..c88ca4704 100644
--- a/libX11/src/WarpPtr.c
+++ b/libX11/src/WarpPtr.c
@@ -1,60 +1,60 @@
-/*
-
-Copyright 1986, 1998 The Open Group
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall not be
-used in advertising or otherwise to promote the sale, use or other dealings
-in this Software without prior written authorization from The Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-
-int
-XWarpPointer(
- register Display *dpy,
- Window src_win,
- Window dest_win,
- int src_x,
- int src_y,
- unsigned int src_width,
- unsigned int src_height,
- int dest_x,
- int dest_y)
-{
- register xWarpPointerReq *req;
-
- LockDisplay(dpy);
- GetReq(WarpPointer, req);
- req->srcWid = src_win;
- req->dstWid = dest_win;
- req->srcX = src_x;
- req->srcY = src_y;
- req->srcWidth = src_width;
- req->srcHeight = src_height;
- req->dstX = dest_x;
- req->dstY = dest_y;
- UnlockDisplay(dpy);
- SyncHandle();
- return 1;
-}
-
+/*
+
+Copyright 1986, 1998 The Open Group
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group shall not be
+used in advertising or otherwise to promote the sale, use or other dealings
+in this Software without prior written authorization from The Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+
+int
+XWarpPointer(
+ register Display *dpy,
+ Window src_win,
+ Window dest_win,
+ int src_x,
+ int src_y,
+ unsigned int src_width,
+ unsigned int src_height,
+ int dest_x,
+ int dest_y)
+{
+ register xWarpPointerReq *req;
+
+ LockDisplay(dpy);
+ GetReq(WarpPointer, req);
+ req->srcWid = src_win;
+ req->dstWid = dest_win;
+ req->srcX = src_x;
+ req->srcY = src_y;
+ req->srcWidth = src_width;
+ req->srcHeight = src_height;
+ req->dstX = dest_x;
+ req->dstY = dest_y;
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return 1;
+}
+
diff --git a/libX11/src/WinEvent.c b/libX11/src/WinEvent.c
index d1afc38de..c88c8da72 100644
--- a/libX11/src/WinEvent.c
+++ b/libX11/src/WinEvent.c
@@ -1,84 +1,84 @@
-/*
-
-Copyright 1985, 1998 The Open Group
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall not be
-used in advertising or otherwise to promote the sale, use or other dealings
-in this Software without prior written authorization from The Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-
-extern long const _Xevent_to_mask[];
-#define AllPointers (PointerMotionMask|PointerMotionHintMask|ButtonMotionMask)
-#define AllButtons (Button1MotionMask|Button2MotionMask|Button3MotionMask|\
- Button4MotionMask|Button5MotionMask)
-
-/*
- * Return the next event in the queue
- * for the given window matching one of the events in the mask.
- * Events earlier in the queue are not discarded.
- * If none found, flush, and then wait until an event arrives which
- * matches.
- */
-
-int
-XWindowEvent (
- register Display *dpy,
- Window w, /* Selected window. */
- long mask, /* Selected event mask. */
- register XEvent *event) /* XEvent to be filled in. */
-{
- register _XQEvent *prev, *qelt;
- unsigned long qe_serial = 0;
-
- LockDisplay(dpy);
-
- /* Delete unclaimed cookies */
- _XFreeEventCookies(dpy);
-
- prev = NULL;
- while (1) {
- for (qelt = prev ? prev->next : dpy->head;
- qelt;
- prev = qelt, qelt = qelt->next) {
- if ((qelt->event.xany.window == w) &&
- (qelt->event.type < GenericEvent) &&
- (_Xevent_to_mask[qelt->event.type] & mask) &&
- ((qelt->event.type != MotionNotify) ||
- (mask & AllPointers) ||
- (mask & AllButtons & qelt->event.xmotion.state))) {
- *event = qelt->event;
- _XDeq(dpy, prev, qelt);
- UnlockDisplay(dpy);
- return 0;
- }
- }
- if (prev)
- qe_serial = prev->qserial_num;
- _XReadEvents(dpy);
- if (prev && prev->qserial_num != qe_serial)
- /* another thread has snatched this event */
- prev = NULL;
- }
-}
+/*
+
+Copyright 1985, 1998 The Open Group
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group shall not be
+used in advertising or otherwise to promote the sale, use or other dealings
+in this Software without prior written authorization from The Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+
+extern long const _Xevent_to_mask[];
+#define AllPointers (PointerMotionMask|PointerMotionHintMask|ButtonMotionMask)
+#define AllButtons (Button1MotionMask|Button2MotionMask|Button3MotionMask|\
+ Button4MotionMask|Button5MotionMask)
+
+/*
+ * Return the next event in the queue
+ * for the given window matching one of the events in the mask.
+ * Events earlier in the queue are not discarded.
+ * If none found, flush, and then wait until an event arrives which
+ * matches.
+ */
+
+int
+XWindowEvent (
+ register Display *dpy,
+ Window w, /* Selected window. */
+ long mask, /* Selected event mask. */
+ register XEvent *event) /* XEvent to be filled in. */
+{
+ register _XQEvent *prev, *qelt;
+ unsigned long qe_serial = 0;
+
+ LockDisplay(dpy);
+
+ /* Delete unclaimed cookies */
+ _XFreeEventCookies(dpy);
+
+ prev = NULL;
+ while (1) {
+ for (qelt = prev ? prev->next : dpy->head;
+ qelt;
+ prev = qelt, qelt = qelt->next) {
+ if ((qelt->event.xany.window == w) &&
+ (qelt->event.type < GenericEvent) &&
+ (_Xevent_to_mask[qelt->event.type] & mask) &&
+ ((qelt->event.type != MotionNotify) ||
+ (mask & AllPointers) ||
+ (mask & AllButtons & qelt->event.xmotion.state))) {
+ *event = qelt->event;
+ _XDeq(dpy, prev, qelt);
+ UnlockDisplay(dpy);
+ return 0;
+ }
+ }
+ if (prev)
+ qe_serial = prev->qserial_num;
+ _XReadEvents(dpy);
+ if (prev && prev->qserial_num != qe_serial)
+ /* another thread has snatched this event */
+ prev = NULL;
+ }
+}
diff --git a/libX11/src/Window.c b/libX11/src/Window.c
index 1bceef819..341efee0f 100644
--- a/libX11/src/Window.c
+++ b/libX11/src/Window.c
@@ -1,144 +1,144 @@
-/*
-
-Copyright 1986, 1998 The Open Group
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall not be
-used in advertising or otherwise to promote the sale, use or other dealings
-in this Software without prior written authorization from The Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-
-#ifdef _MSC_VER
-#undef CreateWindow
-#endif
-
-void _XProcessWindowAttributes (
- register Display *dpy,
- xChangeWindowAttributesReq *req,
- register unsigned long valuemask,
- register XSetWindowAttributes *attributes)
-{
- unsigned long values[32];
- register unsigned long *value = values;
- unsigned int nvalues;
-
- if (valuemask & CWBackPixmap)
- *value++ = attributes->background_pixmap;
-
- if (valuemask & CWBackPixel)
- *value++ = attributes->background_pixel;
-
- if (valuemask & CWBorderPixmap)
- *value++ = attributes->border_pixmap;
-
- if (valuemask & CWBorderPixel)
- *value++ = attributes->border_pixel;
-
- if (valuemask & CWBitGravity)
- *value++ = attributes->bit_gravity;
-
- if (valuemask & CWWinGravity)
- *value++ = attributes->win_gravity;
-
- if (valuemask & CWBackingStore)
- *value++ = attributes->backing_store;
-
- if (valuemask & CWBackingPlanes)
- *value++ = attributes->backing_planes;
-
- if (valuemask & CWBackingPixel)
- *value++ = attributes->backing_pixel;
-
- if (valuemask & CWOverrideRedirect)
- *value++ = attributes->override_redirect;
-
- if (valuemask & CWSaveUnder)
- *value++ = attributes->save_under;
-
- if (valuemask & CWEventMask)
- *value++ = attributes->event_mask;
-
- if (valuemask & CWDontPropagate)
- *value++ = attributes->do_not_propagate_mask;
-
- if (valuemask & CWColormap)
- *value++ = attributes->colormap;
-
- if (valuemask & CWCursor)
- *value++ = attributes->cursor;
-
- req->length += (nvalues = value - values);
-
- nvalues <<= 2; /* watch out for macros... */
- Data32 (dpy, (long *) values, (long)nvalues);
-
-}
-
-#define AllMaskBits (CWBackPixmap|CWBackPixel|CWBorderPixmap|\
- CWBorderPixel|CWBitGravity|CWWinGravity|\
- CWBackingStore|CWBackingPlanes|CWBackingPixel|\
- CWOverrideRedirect|CWSaveUnder|CWEventMask|\
- CWDontPropagate|CWColormap|CWCursor)
-
-Window XCreateWindow(
- register Display *dpy,
- Window parent,
- int x,
- int y,
- unsigned int width,
- unsigned int height,
- unsigned int borderWidth,
- int depth,
- unsigned int class,
- Visual *visual,
- unsigned long valuemask,
- XSetWindowAttributes *attributes)
-{
- Window wid;
- register xCreateWindowReq *req;
-
- LockDisplay(dpy);
- GetReq(CreateWindow, req);
- req->parent = parent;
- req->x = x;
- req->y = y;
- req->width = width;
- req->height = height;
- req->borderWidth = borderWidth;
- req->depth = depth;
- req->class = class;
- if (visual == CopyFromParent)
- req->visual = CopyFromParent;
- else
- req->visual = visual->visualid;
- wid = req->wid = XAllocID(dpy);
- valuemask &= AllMaskBits;
- if ((req->mask = valuemask))
- _XProcessWindowAttributes (dpy, (xChangeWindowAttributesReq *)req,
- valuemask, attributes);
- UnlockDisplay(dpy);
- SyncHandle();
- return (wid);
- }
-
+/*
+
+Copyright 1986, 1998 The Open Group
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group shall not be
+used in advertising or otherwise to promote the sale, use or other dealings
+in this Software without prior written authorization from The Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+
+#ifdef _MSC_VER
+#undef CreateWindow
+#endif
+
+void _XProcessWindowAttributes (
+ register Display *dpy,
+ xChangeWindowAttributesReq *req,
+ register unsigned long valuemask,
+ register XSetWindowAttributes *attributes)
+{
+ unsigned long values[32];
+ register unsigned long *value = values;
+ unsigned int nvalues;
+
+ if (valuemask & CWBackPixmap)
+ *value++ = attributes->background_pixmap;
+
+ if (valuemask & CWBackPixel)
+ *value++ = attributes->background_pixel;
+
+ if (valuemask & CWBorderPixmap)
+ *value++ = attributes->border_pixmap;
+
+ if (valuemask & CWBorderPixel)
+ *value++ = attributes->border_pixel;
+
+ if (valuemask & CWBitGravity)
+ *value++ = attributes->bit_gravity;
+
+ if (valuemask & CWWinGravity)
+ *value++ = attributes->win_gravity;
+
+ if (valuemask & CWBackingStore)
+ *value++ = attributes->backing_store;
+
+ if (valuemask & CWBackingPlanes)
+ *value++ = attributes->backing_planes;
+
+ if (valuemask & CWBackingPixel)
+ *value++ = attributes->backing_pixel;
+
+ if (valuemask & CWOverrideRedirect)
+ *value++ = attributes->override_redirect;
+
+ if (valuemask & CWSaveUnder)
+ *value++ = attributes->save_under;
+
+ if (valuemask & CWEventMask)
+ *value++ = attributes->event_mask;
+
+ if (valuemask & CWDontPropagate)
+ *value++ = attributes->do_not_propagate_mask;
+
+ if (valuemask & CWColormap)
+ *value++ = attributes->colormap;
+
+ if (valuemask & CWCursor)
+ *value++ = attributes->cursor;
+
+ req->length += (nvalues = value - values);
+
+ nvalues <<= 2; /* watch out for macros... */
+ Data32 (dpy, (long *) values, (long)nvalues);
+
+}
+
+#define AllMaskBits (CWBackPixmap|CWBackPixel|CWBorderPixmap|\
+ CWBorderPixel|CWBitGravity|CWWinGravity|\
+ CWBackingStore|CWBackingPlanes|CWBackingPixel|\
+ CWOverrideRedirect|CWSaveUnder|CWEventMask|\
+ CWDontPropagate|CWColormap|CWCursor)
+
+Window XCreateWindow(
+ register Display *dpy,
+ Window parent,
+ int x,
+ int y,
+ unsigned int width,
+ unsigned int height,
+ unsigned int borderWidth,
+ int depth,
+ unsigned int class,
+ Visual *visual,
+ unsigned long valuemask,
+ XSetWindowAttributes *attributes)
+{
+ Window wid;
+ register xCreateWindowReq *req;
+
+ LockDisplay(dpy);
+ GetReq(CreateWindow, req);
+ req->parent = parent;
+ req->x = x;
+ req->y = y;
+ req->width = width;
+ req->height = height;
+ req->borderWidth = borderWidth;
+ req->depth = depth;
+ req->class = class;
+ if (visual == CopyFromParent)
+ req->visual = CopyFromParent;
+ else
+ req->visual = visual->visualid;
+ wid = req->wid = XAllocID(dpy);
+ valuemask &= AllMaskBits;
+ if ((req->mask = valuemask))
+ _XProcessWindowAttributes (dpy, (xChangeWindowAttributesReq *)req,
+ valuemask, attributes);
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return (wid);
+ }
+
diff --git a/libX11/src/Withdraw.c b/libX11/src/Withdraw.c
index e691a6730..ac15ddc92 100644
--- a/libX11/src/Withdraw.c
+++ b/libX11/src/Withdraw.c
@@ -1,82 +1,82 @@
-
-/***********************************************************
-Copyright 1988 by Wyse Technology, Inc., San Jose, Ca.,
-
- All Rights Reserved
-
-Permission to use, copy, modify, and distribute this software and its
-documentation for any purpose and without fee is hereby granted,
-provided that the above copyright notice appear in all copies and that
-both that copyright notice and this permission notice appear in
-supporting documentation, and that the name Wyse not be
-used in advertising or publicity pertaining to distribution of the
-software without specific, written prior permission.
-
-WYSE DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
-ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
-DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
-ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
-WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
-ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
-SOFTWARE.
-
-******************************************************************/
-/*
-
-Copyright 1988, 1998 The Open Group
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
-
-The above copyright notice and this permission notice shall be included
-in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
-IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR
-OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
-ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall
-not be used in advertising or otherwise to promote the sale, use or
-other dealings in this Software without prior written authorization
-from The Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include <X11/Xlibint.h>
-#include <X11/Xatom.h>
-#include <X11/Xos.h>
-#include <X11/Xutil.h>
-#include <stdio.h>
-
-/*
- * This function instructs the window manager to change this window from
- * NormalState or IconicState to Withdrawn.
- */
-Status XWithdrawWindow (
- Display *dpy,
- Window w,
- int screen)
-{
- XUnmapEvent ev;
- Window root = RootWindow (dpy, screen);
-
- XUnmapWindow (dpy, w);
-
- ev.type = UnmapNotify;
- ev.event = root;
- ev.window = w;
- ev.from_configure = False;
- return (XSendEvent (dpy, root, False,
- SubstructureRedirectMask|SubstructureNotifyMask,
- (XEvent *)&ev));
-}
+
+/***********************************************************
+Copyright 1988 by Wyse Technology, Inc., San Jose, Ca.,
+
+ All Rights Reserved
+
+Permission to use, copy, modify, and distribute this software and its
+documentation for any purpose and without fee is hereby granted,
+provided that the above copyright notice appear in all copies and that
+both that copyright notice and this permission notice appear in
+supporting documentation, and that the name Wyse not be
+used in advertising or publicity pertaining to distribution of the
+software without specific, written prior permission.
+
+WYSE DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
+ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
+DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
+ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
+WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
+ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
+SOFTWARE.
+
+******************************************************************/
+/*
+
+Copyright 1988, 1998 The Open Group
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
+
+The above copyright notice and this permission notice shall be included
+in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR
+OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
+ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group shall
+not be used in advertising or otherwise to promote the sale, use or
+other dealings in this Software without prior written authorization
+from The Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include <X11/Xlibint.h>
+#include <X11/Xatom.h>
+#include <X11/Xos.h>
+#include <X11/Xutil.h>
+#include <stdio.h>
+
+/*
+ * This function instructs the window manager to change this window from
+ * NormalState or IconicState to Withdrawn.
+ */
+Status XWithdrawWindow (
+ Display *dpy,
+ Window w,
+ int screen)
+{
+ XUnmapEvent ev;
+ Window root = RootWindow (dpy, screen);
+
+ XUnmapWindow (dpy, w);
+
+ ev.type = UnmapNotify;
+ ev.event = root;
+ ev.window = w;
+ ev.from_configure = False;
+ return (XSendEvent (dpy, root, False,
+ SubstructureRedirectMask|SubstructureNotifyMask,
+ (XEvent *)&ev));
+}
diff --git a/libX11/src/WrBitF.c b/libX11/src/WrBitF.c
index e6d3fa0e0..1ec6280fb 100644
--- a/libX11/src/WrBitF.c
+++ b/libX11/src/WrBitF.c
@@ -1,156 +1,156 @@
-/*
-
-Copyright 1987, 1998 The Open Group
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
-
-The above copyright notice and this permission notice shall be included
-in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
-IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR
-OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
-ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall
-not be used in advertising or otherwise to promote the sale, use or
-other dealings in this Software without prior written authorization
-from The Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-#include <X11/Xos.h>
-#include "Xutil.h"
-#include <stdio.h>
-
-#define ERR_RETURN NULL
-
-static char *Format_Image(
- XImage *image,
- int *resultsize)
-{
- register int x, c, b;
- register char *ptr;
- int y;
- char *data;
- int width, height;
- int bytes_per_line;
-
- width = image->width;
- height = image->height;
-
- bytes_per_line = (width+7)/8;
- *resultsize = bytes_per_line * height; /* Calculate size of data */
-
- data = (char *) Xmalloc( *resultsize ); /* Get space for data */
- if (!data)
- return(ERR_RETURN);
-
- /*
- * The slow but robust brute force method of converting the image:
- */
- ptr = data;
- c = 0; b=1;
- for (y=0; y<height; y++) {
- for (x=0; x<width;) {
- if (XGetPixel(image, x, y))
- c |= b;
- b <<= 1;
- if (!(++x & 7)) {
- *(ptr++)=c;
- c=0; b=1;
- }
- }
- if (x & 7) {
- *(ptr++)=c;
- c=0; b=1;
- }
- }
-
- return(data);
-}
-
-#define BYTES_PER_OUTPUT_LINE 12
-
-int
-XWriteBitmapFile(
- Display *display,
- _Xconst char *filename,
- Pixmap bitmap,
- unsigned int width,
- unsigned int height,
- int x_hot,
- int y_hot)
-{
- char *data, *ptr;
- int size, byte;
- int c;
- XImage *image;
- FILE *stream;
- char *name;
-
- if (!(name = strrchr(filename, '/')))
- name = (char *)filename;
- else
- name++;
-
-#ifdef __UNIXOS2__
- filename = (char*)__XOS2RedirRoot(filename);
-#endif
- if (!(stream = fopen(filename, "w")))
- return(BitmapOpenFailed);
-
- /* Convert bitmap to an image */
- image = XGetImage(display, bitmap, 0,0,width, height, 1L, XYPixmap);
- if (!image) {
- fclose(stream);
- return(4); /* XXX spec does not say what to return */
- }
-
- /* Get standard format for data */
- data = Format_Image(image, &size);
- XDestroyImage(image);
- if (!data) {
- fclose(stream);
- return(BitmapNoMemory);
- }
-
- /* Write out standard header */
- fprintf(stream, "#define %s_width %d\n", name, width);
- fprintf(stream, "#define %s_height %d\n", name, height);
- if (x_hot != -1) {
- fprintf(stream, "#define %s_x_hot %d\n", name, x_hot);
- fprintf(stream, "#define %s_y_hot %d\n", name, y_hot);
- }
-
- /* Print out the data itself */
- fprintf(stream, "static unsigned char %s_bits[] = {", name);
- for (byte=0, ptr=data; byte<size; byte++, ptr++) {
- if (!byte)
- fprintf(stream, "\n ");
- else if (!(byte % BYTES_PER_OUTPUT_LINE))
- fprintf(stream, ",\n ");
- else
- fprintf(stream, ", ");
- c = *ptr;
- if (c<0)
- c += 256;
- fprintf(stream, "0x%02x", c);
- }
- fprintf(stream, "};\n");
-
- Xfree(data);
- fclose(stream);
- return(BitmapSuccess);
-}
+/*
+
+Copyright 1987, 1998 The Open Group
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
+
+The above copyright notice and this permission notice shall be included
+in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR
+OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
+ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group shall
+not be used in advertising or otherwise to promote the sale, use or
+other dealings in this Software without prior written authorization
+from The Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+#include <X11/Xos.h>
+#include "Xutil.h"
+#include <stdio.h>
+
+#define ERR_RETURN NULL
+
+static char *Format_Image(
+ XImage *image,
+ int *resultsize)
+{
+ register int x, c, b;
+ register char *ptr;
+ int y;
+ char *data;
+ int width, height;
+ int bytes_per_line;
+
+ width = image->width;
+ height = image->height;
+
+ bytes_per_line = (width+7)/8;
+ *resultsize = bytes_per_line * height; /* Calculate size of data */
+
+ data = (char *) Xmalloc( *resultsize ); /* Get space for data */
+ if (!data)
+ return(ERR_RETURN);
+
+ /*
+ * The slow but robust brute force method of converting the image:
+ */
+ ptr = data;
+ c = 0; b=1;
+ for (y=0; y<height; y++) {
+ for (x=0; x<width;) {
+ if (XGetPixel(image, x, y))
+ c |= b;
+ b <<= 1;
+ if (!(++x & 7)) {
+ *(ptr++)=c;
+ c=0; b=1;
+ }
+ }
+ if (x & 7) {
+ *(ptr++)=c;
+ c=0; b=1;
+ }
+ }
+
+ return(data);
+}
+
+#define BYTES_PER_OUTPUT_LINE 12
+
+int
+XWriteBitmapFile(
+ Display *display,
+ _Xconst char *filename,
+ Pixmap bitmap,
+ unsigned int width,
+ unsigned int height,
+ int x_hot,
+ int y_hot)
+{
+ char *data, *ptr;
+ int size, byte;
+ int c;
+ XImage *image;
+ FILE *stream;
+ char *name;
+
+ if (!(name = strrchr(filename, '/')))
+ name = (char *)filename;
+ else
+ name++;
+
+#ifdef __UNIXOS2__
+ filename = (char*)__XOS2RedirRoot(filename);
+#endif
+ if (!(stream = fopen(filename, "w")))
+ return(BitmapOpenFailed);
+
+ /* Convert bitmap to an image */
+ image = XGetImage(display, bitmap, 0,0,width, height, 1L, XYPixmap);
+ if (!image) {
+ fclose(stream);
+ return(4); /* XXX spec does not say what to return */
+ }
+
+ /* Get standard format for data */
+ data = Format_Image(image, &size);
+ XDestroyImage(image);
+ if (!data) {
+ fclose(stream);
+ return(BitmapNoMemory);
+ }
+
+ /* Write out standard header */
+ fprintf(stream, "#define %s_width %d\n", name, width);
+ fprintf(stream, "#define %s_height %d\n", name, height);
+ if (x_hot != -1) {
+ fprintf(stream, "#define %s_x_hot %d\n", name, x_hot);
+ fprintf(stream, "#define %s_y_hot %d\n", name, y_hot);
+ }
+
+ /* Print out the data itself */
+ fprintf(stream, "static unsigned char %s_bits[] = {", name);
+ for (byte=0, ptr=data; byte<size; byte++, ptr++) {
+ if (!byte)
+ fprintf(stream, "\n ");
+ else if (!(byte % BYTES_PER_OUTPUT_LINE))
+ fprintf(stream, ",\n ");
+ else
+ fprintf(stream, ", ");
+ c = *ptr;
+ if (c<0)
+ c += 256;
+ fprintf(stream, "0x%02x", c);
+ }
+ fprintf(stream, "};\n");
+
+ Xfree(data);
+ fclose(stream);
+ return(BitmapSuccess);
+}
diff --git a/libX11/src/Xatomtype.h b/libX11/src/Xatomtype.h
index ad4094a4b..1b2b47766 100644
--- a/libX11/src/Xatomtype.h
+++ b/libX11/src/Xatomtype.h
@@ -1,133 +1,133 @@
-
-/***********************************************************
-
-Copyright 1987, 1998 The Open Group
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall not be
-used in advertising or otherwise to promote the sale, use or other dealings
-in this Software without prior written authorization from The Open Group.
-
-
-Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts.
-
- All Rights Reserved
-
-Permission to use, copy, modify, and distribute this software and its
-documentation for any purpose and without fee is hereby granted,
-provided that the above copyright notice appear in all copies and that
-both that copyright notice and this permission notice appear in
-supporting documentation, and that the name of Digital not be
-used in advertising or publicity pertaining to distribution of the
-software without specific, written prior permission.
-
-DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
-ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
-DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
-ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
-WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
-ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
-SOFTWARE.
-
-******************************************************************/
-
-#ifndef _XATOMTYPE_H_
-#define _XATOMTYPE_H_
-
-/*
- * This files defines crock C structures for calling XGetWindowProperty and
- * XChangeProperty. All fields must be longs as the semantics of property
- * routines will handle conversion to and from actual 32 bit objects. If your
- * compiler doesn't treat &structoflongs the same as &arrayoflongs[0], you
- * will have some work to do.
- */
-
-#define BOOL long
-#define SIGNEDINT long
-#define UNSIGNEDINT unsigned long
-#define RESOURCEID unsigned long
-
-
-/* this structure may be extended, but do not change the order */
-typedef struct {
- UNSIGNEDINT flags;
- SIGNEDINT x, y, width, height; /* need to cvt; only for pre-ICCCM */
- SIGNEDINT minWidth, minHeight; /* need to cvt */
- SIGNEDINT maxWidth, maxHeight; /* need to cvt */
- SIGNEDINT widthInc, heightInc; /* need to cvt */
- SIGNEDINT minAspectX, minAspectY; /* need to cvt */
- SIGNEDINT maxAspectX, maxAspectY; /* need to cvt */
- SIGNEDINT baseWidth,baseHeight; /* need to cvt; ICCCM version 1 */
- SIGNEDINT winGravity; /* need to cvt; ICCCM version 1 */
-} xPropSizeHints;
-#define OldNumPropSizeElements 15 /* pre-ICCCM */
-#define NumPropSizeElements 18 /* ICCCM version 1 */
-
-/* this structure may be extended, but do not change the order */
-/* RGB properties */
-typedef struct {
- RESOURCEID colormap;
- UNSIGNEDINT red_max;
- UNSIGNEDINT red_mult;
- UNSIGNEDINT green_max;
- UNSIGNEDINT green_mult;
- UNSIGNEDINT blue_max;
- UNSIGNEDINT blue_mult;
- UNSIGNEDINT base_pixel;
- RESOURCEID visualid; /* ICCCM version 1 */
- RESOURCEID killid; /* ICCCM version 1 */
-} xPropStandardColormap;
-#define OldNumPropStandardColormapElements 8 /* pre-ICCCM */
-#define NumPropStandardColormapElements 10 /* ICCCM version 1 */
-
-
-/* this structure may be extended, but do not change the order */
-typedef struct {
- UNSIGNEDINT flags;
- BOOL input; /* need to convert */
- SIGNEDINT initialState; /* need to cvt */
- RESOURCEID iconPixmap;
- RESOURCEID iconWindow;
- SIGNEDINT iconX; /* need to cvt */
- SIGNEDINT iconY; /* need to cvt */
- RESOURCEID iconMask;
- UNSIGNEDINT windowGroup;
- } xPropWMHints;
-#define NumPropWMHintsElements 9 /* number of elements in this structure */
-
-/* this structure defines the icon size hints information */
-typedef struct {
- SIGNEDINT minWidth, minHeight; /* need to cvt */
- SIGNEDINT maxWidth, maxHeight; /* need to cvt */
- SIGNEDINT widthInc, heightInc; /* need to cvt */
- } xPropIconSize;
-#define NumPropIconSizeElements 6 /* number of elements in this structure */
-
-/* this structure defines the window manager state information */
-typedef struct {
- SIGNEDINT state; /* need to cvt */
- RESOURCEID iconWindow;
-} xPropWMState;
-#define NumPropWMStateElements 2 /* number of elements in struct */
-
-#undef BOOL
-#undef SIGNEDINT
-#undef UNSIGNEDINT
-#undef RESOURCEID
-
-#endif /* _XATOMTYPE_H_ */
+
+/***********************************************************
+
+Copyright 1987, 1998 The Open Group
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group shall not be
+used in advertising or otherwise to promote the sale, use or other dealings
+in this Software without prior written authorization from The Open Group.
+
+
+Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts.
+
+ All Rights Reserved
+
+Permission to use, copy, modify, and distribute this software and its
+documentation for any purpose and without fee is hereby granted,
+provided that the above copyright notice appear in all copies and that
+both that copyright notice and this permission notice appear in
+supporting documentation, and that the name of Digital not be
+used in advertising or publicity pertaining to distribution of the
+software without specific, written prior permission.
+
+DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
+ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
+DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
+ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
+WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
+ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
+SOFTWARE.
+
+******************************************************************/
+
+#ifndef _XATOMTYPE_H_
+#define _XATOMTYPE_H_
+
+/*
+ * This files defines crock C structures for calling XGetWindowProperty and
+ * XChangeProperty. All fields must be longs as the semantics of property
+ * routines will handle conversion to and from actual 32 bit objects. If your
+ * compiler doesn't treat &structoflongs the same as &arrayoflongs[0], you
+ * will have some work to do.
+ */
+
+#define BOOL long
+#define SIGNEDINT long
+#define UNSIGNEDINT unsigned long
+#define RESOURCEID unsigned long
+
+
+/* this structure may be extended, but do not change the order */
+typedef struct {
+ UNSIGNEDINT flags;
+ SIGNEDINT x, y, width, height; /* need to cvt; only for pre-ICCCM */
+ SIGNEDINT minWidth, minHeight; /* need to cvt */
+ SIGNEDINT maxWidth, maxHeight; /* need to cvt */
+ SIGNEDINT widthInc, heightInc; /* need to cvt */
+ SIGNEDINT minAspectX, minAspectY; /* need to cvt */
+ SIGNEDINT maxAspectX, maxAspectY; /* need to cvt */
+ SIGNEDINT baseWidth,baseHeight; /* need to cvt; ICCCM version 1 */
+ SIGNEDINT winGravity; /* need to cvt; ICCCM version 1 */
+} xPropSizeHints;
+#define OldNumPropSizeElements 15 /* pre-ICCCM */
+#define NumPropSizeElements 18 /* ICCCM version 1 */
+
+/* this structure may be extended, but do not change the order */
+/* RGB properties */
+typedef struct {
+ RESOURCEID colormap;
+ UNSIGNEDINT red_max;
+ UNSIGNEDINT red_mult;
+ UNSIGNEDINT green_max;
+ UNSIGNEDINT green_mult;
+ UNSIGNEDINT blue_max;
+ UNSIGNEDINT blue_mult;
+ UNSIGNEDINT base_pixel;
+ RESOURCEID visualid; /* ICCCM version 1 */
+ RESOURCEID killid; /* ICCCM version 1 */
+} xPropStandardColormap;
+#define OldNumPropStandardColormapElements 8 /* pre-ICCCM */
+#define NumPropStandardColormapElements 10 /* ICCCM version 1 */
+
+
+/* this structure may be extended, but do not change the order */
+typedef struct {
+ UNSIGNEDINT flags;
+ BOOL input; /* need to convert */
+ SIGNEDINT initialState; /* need to cvt */
+ RESOURCEID iconPixmap;
+ RESOURCEID iconWindow;
+ SIGNEDINT iconX; /* need to cvt */
+ SIGNEDINT iconY; /* need to cvt */
+ RESOURCEID iconMask;
+ UNSIGNEDINT windowGroup;
+ } xPropWMHints;
+#define NumPropWMHintsElements 9 /* number of elements in this structure */
+
+/* this structure defines the icon size hints information */
+typedef struct {
+ SIGNEDINT minWidth, minHeight; /* need to cvt */
+ SIGNEDINT maxWidth, maxHeight; /* need to cvt */
+ SIGNEDINT widthInc, heightInc; /* need to cvt */
+ } xPropIconSize;
+#define NumPropIconSizeElements 6 /* number of elements in this structure */
+
+/* this structure defines the window manager state information */
+typedef struct {
+ SIGNEDINT state; /* need to cvt */
+ RESOURCEID iconWindow;
+} xPropWMState;
+#define NumPropWMStateElements 2 /* number of elements in struct */
+
+#undef BOOL
+#undef SIGNEDINT
+#undef UNSIGNEDINT
+#undef RESOURCEID
+
+#endif /* _XATOMTYPE_H_ */
diff --git a/libX11/src/Xintatom.h b/libX11/src/Xintatom.h
index ba344f7f9..82dba36e1 100644
--- a/libX11/src/Xintatom.h
+++ b/libX11/src/Xintatom.h
@@ -1,32 +1,32 @@
-
-#ifndef _XINTATOM_H_
-#define _XINTATOM_H_ 1
-
-#include <X11/Xfuncproto.h>
-
-/* IntAtom.c */
-
-#define TABLESIZE 64
-
-typedef struct _Entry {
- unsigned long sig;
- Atom atom;
-} EntryRec, *Entry;
-
-#define RESERVED ((Entry) 1)
-
-#define EntryName(e) ((char *)(e+1))
-
-typedef struct _XDisplayAtoms {
- Entry table[TABLESIZE];
-} AtomTable;
-
-_XFUNCPROTOBEGIN
-
-extern void _XUpdateAtomCache(Display *dpy, const char *name, Atom atom,
- unsigned long sig, int idx, int n);
-extern void _XFreeAtomTable(Display *dpy);
-
-_XFUNCPROTOEND
-
-#endif /* _XINTATOM_H_ */
+
+#ifndef _XINTATOM_H_
+#define _XINTATOM_H_ 1
+
+#include <X11/Xfuncproto.h>
+
+/* IntAtom.c */
+
+#define TABLESIZE 64
+
+typedef struct _Entry {
+ unsigned long sig;
+ Atom atom;
+} EntryRec, *Entry;
+
+#define RESERVED ((Entry) 1)
+
+#define EntryName(e) ((char *)(e+1))
+
+typedef struct _XDisplayAtoms {
+ Entry table[TABLESIZE];
+} AtomTable;
+
+_XFUNCPROTOBEGIN
+
+extern void _XUpdateAtomCache(Display *dpy, const char *name, Atom atom,
+ unsigned long sig, int idx, int n);
+extern void _XFreeAtomTable(Display *dpy);
+
+_XFUNCPROTOEND
+
+#endif /* _XINTATOM_H_ */
diff --git a/libX11/src/Xintconn.h b/libX11/src/Xintconn.h
index c51e3c721..db59061a0 100644
--- a/libX11/src/Xintconn.h
+++ b/libX11/src/Xintconn.h
@@ -1,14 +1,14 @@
-
-#ifndef _XINTCONN_H_
-#define _XINTCONN_H_ 1
-
-#include <X11/Xfuncproto.h>
-
-_XFUNCPROTOBEGIN
-
-/* OpenDis.c */
-extern void _XFreeDisplayStructure(Display *dpy);
-
-_XFUNCPROTOEND
-
-#endif /* _XINTCONN_H_ */
+
+#ifndef _XINTCONN_H_
+#define _XINTCONN_H_ 1
+
+#include <X11/Xfuncproto.h>
+
+_XFUNCPROTOBEGIN
+
+/* OpenDis.c */
+extern void _XFreeDisplayStructure(Display *dpy);
+
+_XFUNCPROTOEND
+
+#endif /* _XINTCONN_H_ */
diff --git a/libX11/src/XlibAsync.c b/libX11/src/XlibAsync.c
index db8cba807..b17135c06 100644
--- a/libX11/src/XlibAsync.c
+++ b/libX11/src/XlibAsync.c
@@ -1,154 +1,154 @@
-/*
-
-Copyright 1992, 1998 The Open Group
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
-
-The above copyright notice and this permission notice shall be included
-in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
-IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR
-OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
-ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall
-not be used in advertising or otherwise to promote the sale, use or
-other dealings in this Software without prior written authorization
-from The Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include <X11/Xlibint.h>
-#include <X11/Xos.h>
-
-/*ARGSUSED*/
-Bool
-_XAsyncErrorHandler(
- register Display *dpy,
- register xReply *rep,
- char *buf,
- int len,
- XPointer data)
-{
- register _XAsyncErrorState *state;
-
- state = (_XAsyncErrorState *)data;
- if (rep->generic.type == X_Error &&
- (!state->error_code ||
- rep->error.errorCode == state->error_code) &&
- (!state->major_opcode ||
- rep->error.majorCode == state->major_opcode) &&
- (!state->minor_opcode ||
- rep->error.minorCode == state->minor_opcode) &&
- (!state->min_sequence_number ||
- (state->min_sequence_number <= dpy->last_request_read)) &&
- (!state->max_sequence_number ||
- (state->max_sequence_number >= dpy->last_request_read))) {
- state->last_error_received = rep->error.errorCode;
- state->error_count++;
- return True;
- }
- return False;
-}
-
-void _XDeqAsyncHandler(
- Display *dpy,
- register _XAsyncHandler *handler)
-{
- register _XAsyncHandler **prev;
- register _XAsyncHandler *async;
-
- for (prev = &dpy->async_handlers;
- (async = *prev) && (async != handler);
- prev = &async->next)
- ;
- if (async)
- *prev = async->next;
-}
-
-char *
-_XGetAsyncReply(
- register Display *dpy,
- register char *replbuf, /* data is read into this buffer */
- register xReply *rep, /* value passed to calling handler */
- char *buf, /* value passed to calling handler */
- int len, /* value passed to calling handler */
- int extra, /* extra words to read, ala _XReply */
- Bool discard) /* discard after extra?, ala _XReply */
-{
- if (extra == 0) {
- if (discard && (rep->generic.length << 2) > len)
- _XEatData (dpy, (rep->generic.length << 2) - len);
- return (char *)rep;
- }
-
- if (extra <= rep->generic.length) {
- int size = SIZEOF(xReply) + (extra << 2);
- if (size > len) {
- memcpy(replbuf, buf, len);
- _XRead(dpy, replbuf + len, size - len);
- buf = replbuf;
- len = size;
-#ifdef MUSTCOPY
- } else {
- memcpy(replbuf, buf, size);
- buf = replbuf;
-#endif
- }
-
- if (discard && rep->generic.length > extra &&
- (rep->generic.length << 2) > len)
- _XEatData (dpy, (rep->generic.length << 2) - len);
-
- return buf;
- }
- /*
- *if we get here, then extra > rep->generic.length--meaning we
- * read a reply that's shorter than we expected. This is an
- * error, but we still need to figure out how to handle it...
- */
- if ((rep->generic.length << 2) > len)
- _XEatData (dpy, (rep->generic.length << 2) - len);
- _XIOError (dpy);
- return (char *)rep;
-}
-
-void
-_XGetAsyncData(
- Display *dpy,
- char *data, /* data is read into this buffer */
- char *buf, /* value passed to calling handler */
- int len, /* value passed to calling handler */
- int skip, /* number of bytes already read in previous
- _XGetAsyncReply or _XGetAsyncData calls */
- int datalen, /* size of data buffer in bytes */
- int discardtotal) /* min. bytes to consume (after skip) */
-{
- buf += skip;
- len -= skip;
- if (!data) {
- if (datalen > len)
- _XEatData(dpy, datalen - len);
- } else if (datalen <= len) {
- memcpy(data, buf, datalen);
- } else {
- memcpy(data, buf, len);
- _XRead(dpy, data + len, datalen - len);
- }
- if (discardtotal > len) {
- if (datalen > len)
- len = datalen;
- _XEatData(dpy, discardtotal - len);
- }
-}
+/*
+
+Copyright 1992, 1998 The Open Group
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
+
+The above copyright notice and this permission notice shall be included
+in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR
+OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
+ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group shall
+not be used in advertising or otherwise to promote the sale, use or
+other dealings in this Software without prior written authorization
+from The Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include <X11/Xlibint.h>
+#include <X11/Xos.h>
+
+/*ARGSUSED*/
+Bool
+_XAsyncErrorHandler(
+ register Display *dpy,
+ register xReply *rep,
+ char *buf,
+ int len,
+ XPointer data)
+{
+ register _XAsyncErrorState *state;
+
+ state = (_XAsyncErrorState *)data;
+ if (rep->generic.type == X_Error &&
+ (!state->error_code ||
+ rep->error.errorCode == state->error_code) &&
+ (!state->major_opcode ||
+ rep->error.majorCode == state->major_opcode) &&
+ (!state->minor_opcode ||
+ rep->error.minorCode == state->minor_opcode) &&
+ (!state->min_sequence_number ||
+ (state->min_sequence_number <= dpy->last_request_read)) &&
+ (!state->max_sequence_number ||
+ (state->max_sequence_number >= dpy->last_request_read))) {
+ state->last_error_received = rep->error.errorCode;
+ state->error_count++;
+ return True;
+ }
+ return False;
+}
+
+void _XDeqAsyncHandler(
+ Display *dpy,
+ register _XAsyncHandler *handler)
+{
+ register _XAsyncHandler **prev;
+ register _XAsyncHandler *async;
+
+ for (prev = &dpy->async_handlers;
+ (async = *prev) && (async != handler);
+ prev = &async->next)
+ ;
+ if (async)
+ *prev = async->next;
+}
+
+char *
+_XGetAsyncReply(
+ register Display *dpy,
+ register char *replbuf, /* data is read into this buffer */
+ register xReply *rep, /* value passed to calling handler */
+ char *buf, /* value passed to calling handler */
+ int len, /* value passed to calling handler */
+ int extra, /* extra words to read, ala _XReply */
+ Bool discard) /* discard after extra?, ala _XReply */
+{
+ if (extra == 0) {
+ if (discard && (rep->generic.length << 2) > len)
+ _XEatData (dpy, (rep->generic.length << 2) - len);
+ return (char *)rep;
+ }
+
+ if (extra <= rep->generic.length) {
+ int size = SIZEOF(xReply) + (extra << 2);
+ if (size > len) {
+ memcpy(replbuf, buf, len);
+ _XRead(dpy, replbuf + len, size - len);
+ buf = replbuf;
+ len = size;
+#ifdef MUSTCOPY
+ } else {
+ memcpy(replbuf, buf, size);
+ buf = replbuf;
+#endif
+ }
+
+ if (discard && rep->generic.length > extra &&
+ (rep->generic.length << 2) > len)
+ _XEatData (dpy, (rep->generic.length << 2) - len);
+
+ return buf;
+ }
+ /*
+ *if we get here, then extra > rep->generic.length--meaning we
+ * read a reply that's shorter than we expected. This is an
+ * error, but we still need to figure out how to handle it...
+ */
+ if ((rep->generic.length << 2) > len)
+ _XEatData (dpy, (rep->generic.length << 2) - len);
+ _XIOError (dpy);
+ return (char *)rep;
+}
+
+void
+_XGetAsyncData(
+ Display *dpy,
+ char *data, /* data is read into this buffer */
+ char *buf, /* value passed to calling handler */
+ int len, /* value passed to calling handler */
+ int skip, /* number of bytes already read in previous
+ _XGetAsyncReply or _XGetAsyncData calls */
+ int datalen, /* size of data buffer in bytes */
+ int discardtotal) /* min. bytes to consume (after skip) */
+{
+ buf += skip;
+ len -= skip;
+ if (!data) {
+ if (datalen > len)
+ _XEatData(dpy, datalen - len);
+ } else if (datalen <= len) {
+ memcpy(data, buf, datalen);
+ } else {
+ memcpy(data, buf, len);
+ _XRead(dpy, data + len, datalen - len);
+ }
+ if (discardtotal > len) {
+ if (datalen > len)
+ len = datalen;
+ _XEatData(dpy, discardtotal - len);
+ }
+}
diff --git a/libX11/src/XomGeneric.h b/libX11/src/XomGeneric.h
index ab7c7e636..d6f182d19 100644
--- a/libX11/src/XomGeneric.h
+++ b/libX11/src/XomGeneric.h
@@ -1,316 +1,316 @@
-/*
- * Copyright 1992, 1993 by TOSHIBA Corp.
- *
- * Permission to use, copy, modify, and distribute this software and its
- * documentation for any purpose and without fee is hereby granted, provided
- * that the above copyright notice appear in all copies and that both that
- * copyright notice and this permission notice appear in supporting
- * documentation, and that the name of TOSHIBA not be used in advertising
- * or publicity pertaining to distribution of the software without specific,
- * written prior permission. TOSHIBA make no representations about the
- * suitability of this software for any purpose. It is provided "as is"
- * without express or implied warranty.
- *
- * TOSHIBA DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
- * ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
- * TOSHIBA BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
- * ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
- * WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
- * ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
- * SOFTWARE.
- *
- * Author: Katsuhisa Yano TOSHIBA Corp.
- * mopi@osa.ilab.toshiba.co.jp
- */
-/*
- * Copyright 1995 by FUJITSU LIMITED
- * This is source code modified by FUJITSU LIMITED under the Joint
- * Development Agreement for the CDE/Motif PST.
- *
- * Modifier: Takanori Tateno FUJITSU LIMITED
- *
- */
-
-#ifndef _XOMGENERIC_H_
-#define _XOMGENERIC_H_
-
-#include "XlcPublic.h"
-
-#define XOM_GENERIC(om) (&((XOMGeneric) om)->gen)
-#define XOC_GENERIC(font_set) (&((XOCGeneric) font_set)->gen)
-
-/* For VW/UDC */
-typedef struct _CodeRangeRec {
- unsigned long start;
- unsigned long end;
- unsigned long dmy1;
- unsigned long dmy2;
-} CodeRangeRec, *CodeRange;
-
-typedef struct _VRotateRec {
- char *charset_name; /* Charset name */
- XlcSide side; /* Encoding side */
- int num_cr;
- CodeRange code_range;
- char *xlfd_name;
- XFontStruct *font;
-} VRotateRec, *VRotate;
-
-typedef enum {
- XOMMultiByte,
- XOMWideChar,
- XOMUtf8String
-} XOMTextType;
-
-typedef struct _FontDataRec {
- char *name;
- XlcSide side;
- /* For VW/UDC */
- int scopes_num;
- FontScope scopes;
- char *xlfd_name;
- XFontStruct *font;
-} FontDataRec, *FontData;
-
-#define VROTATE_NONE 0
-#define VROTATE_PART 1
-#define VROTATE_ALL 2
-
-typedef struct _OMDataRec {
- int charset_count;
- XlcCharSet *charset_list;
- int font_data_count;
- FontData font_data;
- /* For VW/UDC */
- int substitute_num;
- FontData substitute;
- /* Vertical Writing */
- int vmap_num;
- FontData vmap;
- int vrotate_type;
- int vrotate_num;
- CodeRange vrotate;
-} OMDataRec, *OMData;
-
-typedef struct _XOMGenericPart {
- int data_num;
- OMData data;
- Bool on_demand_loading;
- char *object_name;
-} XOMGenericPart;
-
-typedef struct _XOMGenericRec {
- XOMMethods methods;
- XOMCoreRec core;
- XOMGenericPart gen;
-} XOMGenericRec, *XOMGeneric;
-
-/*
- * XOC dependent data
- */
-
-typedef struct _FontSetRec {
- int id;
- int charset_count;
- XlcCharSet *charset_list;
- int font_data_count;
- FontData font_data;
- char *font_name;
- XFontStruct *info;
- XFontStruct *font;
- XlcSide side;
- Bool is_xchar2b;
- /* For VW/UDC */
- int substitute_num;
- FontData substitute;
- /* Vertical Writing */
- int vpart_initialize;
- int vmap_num;
- FontData vmap;
- int vrotate_num;
- VRotate vrotate;
-} FontSetRec, *FontSet;
-
-typedef struct _XOCGenericPart {
- XlcConv mbs_to_cs;
- XlcConv wcs_to_cs;
- XlcConv utf8_to_cs;
- int font_set_num;
- FontSet font_set;
-} XOCGenericPart;
-
-typedef struct _XOCGenericRec {
- XOCMethods methods;
- XOCCoreRec core;
- XOCGenericPart gen;
-} XOCGenericRec, *XOCGeneric;
-
-_XFUNCPROTOBEGIN
-
-extern XOM _XomGenericOpenOM(
- XLCd /* lcd */,
- Display* /* dpy */,
- XrmDatabase /* rdb */,
- _Xconst char* /* res_name */,
- _Xconst char* /* res_class */
-);
-
-extern XlcConv _XomInitConverter(
- XOC /* oc */,
- XOMTextType /* type */
-);
-
-extern int _XomConvert(
- XOC /* oc */,
- XlcConv /* conv */,
- XPointer* /* from */,
- int* /* from_left */,
- XPointer* /* to */,
- int* /* to_left */,
- XPointer* /* args */,
- int /* num_args */
-);
-
-extern int
-_XmbDefaultTextEscapement(XOC oc, _Xconst char *text, int length);
-extern int
-_XwcDefaultTextEscapement(XOC oc, _Xconst wchar_t *text, int length);
-extern int
-_Xutf8DefaultTextEscapement(XOC oc, _Xconst char *text, int length);
-extern int
-_XmbDefaultTextExtents(XOC oc, _Xconst char *text, int length,
- XRectangle *overall_ink, XRectangle *overall_logical);
-extern int
-_XwcDefaultTextExtents(XOC oc, _Xconst wchar_t *text, int length,
- XRectangle *overall_ink, XRectangle *overall_logical);
-extern int
-_Xutf8DefaultTextExtents(XOC oc, _Xconst char *text, int length,
- XRectangle *overall_ink, XRectangle *overall_logical);
-extern Status
-_XmbDefaultTextPerCharExtents(
- XOC oc, _Xconst char *text, int length,
- XRectangle *ink_buf, XRectangle *logical_buf,
- int buf_size, int *num_chars,
- XRectangle *overall_ink,
- XRectangle *overall_logical);
-extern Status
-_XwcDefaultTextPerCharExtents(
- XOC oc, _Xconst wchar_t *text, int length,
- XRectangle *ink_buf, XRectangle *logical_buf,
- int buf_size, int *num_chars,
- XRectangle *overall_ink,
- XRectangle *overall_logical);
-extern Status
-_Xutf8DefaultTextPerCharExtents(
- XOC oc, _Xconst char *text, int length,
- XRectangle *ink_buf, XRectangle *logical_buf,
- int buf_size, int *num_chars,
- XRectangle *overall_ink,
- XRectangle *overall_logical);
-extern int
-_XmbDefaultDrawString(Display *dpy, Drawable d, XOC oc, GC gc, int x, int y,
- _Xconst char *text, int length);
-extern int
-_XwcDefaultDrawString(Display *dpy, Drawable d, XOC oc, GC gc, int x, int y,
- _Xconst wchar_t *text, int length);
-extern int
-_Xutf8DefaultDrawString(Display *dpy, Drawable d, XOC oc, GC gc, int x, int y,
- _Xconst char *text, int length);
-extern void
-_XmbDefaultDrawImageString(Display *dpy, Drawable d, XOC oc, GC gc, int x,
- int y, _Xconst char *text, int length);
-extern void
-_XwcDefaultDrawImageString(Display *dpy, Drawable d, XOC oc, GC gc, int x,
- int y, _Xconst wchar_t *text, int length);
-extern void
-_Xutf8DefaultDrawImageString(Display *dpy, Drawable d, XOC oc, GC gc, int x,
- int y, _Xconst char *text, int length);
-
-extern int
-_XmbGenericTextEscapement(XOC oc, _Xconst char *text, int length);
-extern int
-_XmbGenericTextExtents(XOC oc, _Xconst char *text, int length,
- XRectangle *overall_ink, XRectangle *overall_logical);
-extern int
-_Xutf8GenericDrawString(Display *dpy, Drawable d, XOC oc, GC gc, int x, int y,
- _Xconst char *text, int length);
-extern void
-_Xutf8GenericDrawImageString(Display *dpy, Drawable d, XOC oc, GC gc, int x,
- int y, _Xconst char *text, int length);
-extern Status
-_Xutf8GenericTextPerCharExtents(
- XOC oc, _Xconst char *text, int length,
- XRectangle *ink_buf, XRectangle *logical_buf,
- int buf_size, int *num_chars,
- XRectangle *overall_ink,
- XRectangle *overall_logical);
-extern int
-_Xutf8GenericTextExtents(XOC oc, _Xconst char *text, int length,
- XRectangle *overall_ink, XRectangle *overall_logical);
-extern int
-_Xutf8GenericTextEscapement(XOC oc, _Xconst char *text, int length);
-extern void
-_XwcGenericDrawImageString(Display *dpy, Drawable d, XOC oc, GC gc, int x,
- int y, _Xconst wchar_t *text, int length);
-extern int
-_XwcGenericDrawString(Display *dpy, Drawable d, XOC oc, GC gc, int x, int y,
- _Xconst wchar_t *text, int length);
-extern Status
-_XwcGenericTextPerCharExtents(XOC oc, _Xconst wchar_t *text, int length,
- XRectangle *ink_buf, XRectangle *logical_buf,
- int buf_size, int *num_chars,
- XRectangle *overall_ink,
- XRectangle *overall_logical);
-extern int
-_XwcGenericTextExtents(XOC oc, _Xconst wchar_t *text, int length,
- XRectangle *overall_ink, XRectangle *overall_logical);
-extern int
-_XwcGenericTextEscapement(XOC oc, _Xconst wchar_t *text, int length);
-extern void
-_XmbGenericDrawImageString(Display *dpy, Drawable d, XOC oc, GC gc, int x,
- int y, _Xconst char *text, int length);
-extern int
-_XmbGenericDrawString(Display *dpy, Drawable d, XOC oc, GC gc, int x, int y,
- _Xconst char *text, int length);
-extern Status
-_XmbGenericTextPerCharExtents(XOC oc, _Xconst char *text, int length,
- XRectangle *ink_buf, XRectangle *logical_buf,
- int buf_size, int *num_chars,
- XRectangle *overall_ink,
- XRectangle *overall_logical);
-
-extern FontData
-read_EncodingInfo(
- int count,
- char **value);
-
-extern int
-_XomGenericDrawString(
- Display *dpy,
- Drawable d,
- XOC oc,
- GC gc,
- int x, int y,
- XOMTextType type,
- XPointer text,
- int length);
-extern int
-_XomGenericTextExtents(
- XOC oc,
- XOMTextType type,
- XPointer text,
- int length,
- XRectangle *overall_ink,
- XRectangle *overall_logical);
-extern FontData
-_XomGetFontDataFromFontSet(
- FontSet fs,
- unsigned char *str,
- int len,
- int *len_ret,
- int is2b,
- int type);
-
-_XFUNCPROTOEND
-
-#endif /* _XOMGENERIC_H_ */
+/*
+ * Copyright 1992, 1993 by TOSHIBA Corp.
+ *
+ * Permission to use, copy, modify, and distribute this software and its
+ * documentation for any purpose and without fee is hereby granted, provided
+ * that the above copyright notice appear in all copies and that both that
+ * copyright notice and this permission notice appear in supporting
+ * documentation, and that the name of TOSHIBA not be used in advertising
+ * or publicity pertaining to distribution of the software without specific,
+ * written prior permission. TOSHIBA make no representations about the
+ * suitability of this software for any purpose. It is provided "as is"
+ * without express or implied warranty.
+ *
+ * TOSHIBA DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
+ * ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
+ * TOSHIBA BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
+ * ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
+ * WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
+ * ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
+ * SOFTWARE.
+ *
+ * Author: Katsuhisa Yano TOSHIBA Corp.
+ * mopi@osa.ilab.toshiba.co.jp
+ */
+/*
+ * Copyright 1995 by FUJITSU LIMITED
+ * This is source code modified by FUJITSU LIMITED under the Joint
+ * Development Agreement for the CDE/Motif PST.
+ *
+ * Modifier: Takanori Tateno FUJITSU LIMITED
+ *
+ */
+
+#ifndef _XOMGENERIC_H_
+#define _XOMGENERIC_H_
+
+#include "XlcPublic.h"
+
+#define XOM_GENERIC(om) (&((XOMGeneric) om)->gen)
+#define XOC_GENERIC(font_set) (&((XOCGeneric) font_set)->gen)
+
+/* For VW/UDC */
+typedef struct _CodeRangeRec {
+ unsigned long start;
+ unsigned long end;
+ unsigned long dmy1;
+ unsigned long dmy2;
+} CodeRangeRec, *CodeRange;
+
+typedef struct _VRotateRec {
+ char *charset_name; /* Charset name */
+ XlcSide side; /* Encoding side */
+ int num_cr;
+ CodeRange code_range;
+ char *xlfd_name;
+ XFontStruct *font;
+} VRotateRec, *VRotate;
+
+typedef enum {
+ XOMMultiByte,
+ XOMWideChar,
+ XOMUtf8String
+} XOMTextType;
+
+typedef struct _FontDataRec {
+ char *name;
+ XlcSide side;
+ /* For VW/UDC */
+ int scopes_num;
+ FontScope scopes;
+ char *xlfd_name;
+ XFontStruct *font;
+} FontDataRec, *FontData;
+
+#define VROTATE_NONE 0
+#define VROTATE_PART 1
+#define VROTATE_ALL 2
+
+typedef struct _OMDataRec {
+ int charset_count;
+ XlcCharSet *charset_list;
+ int font_data_count;
+ FontData font_data;
+ /* For VW/UDC */
+ int substitute_num;
+ FontData substitute;
+ /* Vertical Writing */
+ int vmap_num;
+ FontData vmap;
+ int vrotate_type;
+ int vrotate_num;
+ CodeRange vrotate;
+} OMDataRec, *OMData;
+
+typedef struct _XOMGenericPart {
+ int data_num;
+ OMData data;
+ Bool on_demand_loading;
+ char *object_name;
+} XOMGenericPart;
+
+typedef struct _XOMGenericRec {
+ XOMMethods methods;
+ XOMCoreRec core;
+ XOMGenericPart gen;
+} XOMGenericRec, *XOMGeneric;
+
+/*
+ * XOC dependent data
+ */
+
+typedef struct _FontSetRec {
+ int id;
+ int charset_count;
+ XlcCharSet *charset_list;
+ int font_data_count;
+ FontData font_data;
+ char *font_name;
+ XFontStruct *info;
+ XFontStruct *font;
+ XlcSide side;
+ Bool is_xchar2b;
+ /* For VW/UDC */
+ int substitute_num;
+ FontData substitute;
+ /* Vertical Writing */
+ int vpart_initialize;
+ int vmap_num;
+ FontData vmap;
+ int vrotate_num;
+ VRotate vrotate;
+} FontSetRec, *FontSet;
+
+typedef struct _XOCGenericPart {
+ XlcConv mbs_to_cs;
+ XlcConv wcs_to_cs;
+ XlcConv utf8_to_cs;
+ int font_set_num;
+ FontSet font_set;
+} XOCGenericPart;
+
+typedef struct _XOCGenericRec {
+ XOCMethods methods;
+ XOCCoreRec core;
+ XOCGenericPart gen;
+} XOCGenericRec, *XOCGeneric;
+
+_XFUNCPROTOBEGIN
+
+extern XOM _XomGenericOpenOM(
+ XLCd /* lcd */,
+ Display* /* dpy */,
+ XrmDatabase /* rdb */,
+ _Xconst char* /* res_name */,
+ _Xconst char* /* res_class */
+);
+
+extern XlcConv _XomInitConverter(
+ XOC /* oc */,
+ XOMTextType /* type */
+);
+
+extern int _XomConvert(
+ XOC /* oc */,
+ XlcConv /* conv */,
+ XPointer* /* from */,
+ int* /* from_left */,
+ XPointer* /* to */,
+ int* /* to_left */,
+ XPointer* /* args */,
+ int /* num_args */
+);
+
+extern int
+_XmbDefaultTextEscapement(XOC oc, _Xconst char *text, int length);
+extern int
+_XwcDefaultTextEscapement(XOC oc, _Xconst wchar_t *text, int length);
+extern int
+_Xutf8DefaultTextEscapement(XOC oc, _Xconst char *text, int length);
+extern int
+_XmbDefaultTextExtents(XOC oc, _Xconst char *text, int length,
+ XRectangle *overall_ink, XRectangle *overall_logical);
+extern int
+_XwcDefaultTextExtents(XOC oc, _Xconst wchar_t *text, int length,
+ XRectangle *overall_ink, XRectangle *overall_logical);
+extern int
+_Xutf8DefaultTextExtents(XOC oc, _Xconst char *text, int length,
+ XRectangle *overall_ink, XRectangle *overall_logical);
+extern Status
+_XmbDefaultTextPerCharExtents(
+ XOC oc, _Xconst char *text, int length,
+ XRectangle *ink_buf, XRectangle *logical_buf,
+ int buf_size, int *num_chars,
+ XRectangle *overall_ink,
+ XRectangle *overall_logical);
+extern Status
+_XwcDefaultTextPerCharExtents(
+ XOC oc, _Xconst wchar_t *text, int length,
+ XRectangle *ink_buf, XRectangle *logical_buf,
+ int buf_size, int *num_chars,
+ XRectangle *overall_ink,
+ XRectangle *overall_logical);
+extern Status
+_Xutf8DefaultTextPerCharExtents(
+ XOC oc, _Xconst char *text, int length,
+ XRectangle *ink_buf, XRectangle *logical_buf,
+ int buf_size, int *num_chars,
+ XRectangle *overall_ink,
+ XRectangle *overall_logical);
+extern int
+_XmbDefaultDrawString(Display *dpy, Drawable d, XOC oc, GC gc, int x, int y,
+ _Xconst char *text, int length);
+extern int
+_XwcDefaultDrawString(Display *dpy, Drawable d, XOC oc, GC gc, int x, int y,
+ _Xconst wchar_t *text, int length);
+extern int
+_Xutf8DefaultDrawString(Display *dpy, Drawable d, XOC oc, GC gc, int x, int y,
+ _Xconst char *text, int length);
+extern void
+_XmbDefaultDrawImageString(Display *dpy, Drawable d, XOC oc, GC gc, int x,
+ int y, _Xconst char *text, int length);
+extern void
+_XwcDefaultDrawImageString(Display *dpy, Drawable d, XOC oc, GC gc, int x,
+ int y, _Xconst wchar_t *text, int length);
+extern void
+_Xutf8DefaultDrawImageString(Display *dpy, Drawable d, XOC oc, GC gc, int x,
+ int y, _Xconst char *text, int length);
+
+extern int
+_XmbGenericTextEscapement(XOC oc, _Xconst char *text, int length);
+extern int
+_XmbGenericTextExtents(XOC oc, _Xconst char *text, int length,
+ XRectangle *overall_ink, XRectangle *overall_logical);
+extern int
+_Xutf8GenericDrawString(Display *dpy, Drawable d, XOC oc, GC gc, int x, int y,
+ _Xconst char *text, int length);
+extern void
+_Xutf8GenericDrawImageString(Display *dpy, Drawable d, XOC oc, GC gc, int x,
+ int y, _Xconst char *text, int length);
+extern Status
+_Xutf8GenericTextPerCharExtents(
+ XOC oc, _Xconst char *text, int length,
+ XRectangle *ink_buf, XRectangle *logical_buf,
+ int buf_size, int *num_chars,
+ XRectangle *overall_ink,
+ XRectangle *overall_logical);
+extern int
+_Xutf8GenericTextExtents(XOC oc, _Xconst char *text, int length,
+ XRectangle *overall_ink, XRectangle *overall_logical);
+extern int
+_Xutf8GenericTextEscapement(XOC oc, _Xconst char *text, int length);
+extern void
+_XwcGenericDrawImageString(Display *dpy, Drawable d, XOC oc, GC gc, int x,
+ int y, _Xconst wchar_t *text, int length);
+extern int
+_XwcGenericDrawString(Display *dpy, Drawable d, XOC oc, GC gc, int x, int y,
+ _Xconst wchar_t *text, int length);
+extern Status
+_XwcGenericTextPerCharExtents(XOC oc, _Xconst wchar_t *text, int length,
+ XRectangle *ink_buf, XRectangle *logical_buf,
+ int buf_size, int *num_chars,
+ XRectangle *overall_ink,
+ XRectangle *overall_logical);
+extern int
+_XwcGenericTextExtents(XOC oc, _Xconst wchar_t *text, int length,
+ XRectangle *overall_ink, XRectangle *overall_logical);
+extern int
+_XwcGenericTextEscapement(XOC oc, _Xconst wchar_t *text, int length);
+extern void
+_XmbGenericDrawImageString(Display *dpy, Drawable d, XOC oc, GC gc, int x,
+ int y, _Xconst char *text, int length);
+extern int
+_XmbGenericDrawString(Display *dpy, Drawable d, XOC oc, GC gc, int x, int y,
+ _Xconst char *text, int length);
+extern Status
+_XmbGenericTextPerCharExtents(XOC oc, _Xconst char *text, int length,
+ XRectangle *ink_buf, XRectangle *logical_buf,
+ int buf_size, int *num_chars,
+ XRectangle *overall_ink,
+ XRectangle *overall_logical);
+
+extern FontData
+read_EncodingInfo(
+ int count,
+ char **value);
+
+extern int
+_XomGenericDrawString(
+ Display *dpy,
+ Drawable d,
+ XOC oc,
+ GC gc,
+ int x, int y,
+ XOMTextType type,
+ XPointer text,
+ int length);
+extern int
+_XomGenericTextExtents(
+ XOC oc,
+ XOMTextType type,
+ XPointer text,
+ int length,
+ XRectangle *overall_ink,
+ XRectangle *overall_logical);
+extern FontData
+_XomGetFontDataFromFontSet(
+ FontSet fs,
+ unsigned char *str,
+ int len,
+ int *len_ret,
+ int is2b,
+ int type);
+
+_XFUNCPROTOEND
+
+#endif /* _XOMGENERIC_H_ */
diff --git a/libX11/src/Xprivate.h b/libX11/src/Xprivate.h
index 5e31befcc..006b1705e 100644
--- a/libX11/src/Xprivate.h
+++ b/libX11/src/Xprivate.h
@@ -1,28 +1,28 @@
-/* Copyright (C) 2008 Jamey Sharp, Josh Triplett
- * This file is licensed under the MIT license. See the file COPYING.
- *
- * As Xlibint.h has long become effectively public API, this header exists
- * for new private functions that nothing outside of libX11 should call.
- */
-
-#ifndef XPRIVATE_H
-#define XPRIVATE_H
-
-extern _X_HIDDEN void _XIDHandler(Display *dpy);
-extern _X_HIDDEN void _XSeqSyncFunction(Display *dpy);
-extern _X_HIDDEN void _XSetPrivSyncFunction(Display *dpy);
-extern _X_HIDDEN void _XSetSeqSyncFunction(Display *dpy);
-
-#ifdef XTHREADS
-#if defined(XTHREADS_WARN) || defined(XTHREADS_FILE_LINE)
-#define InternalLockDisplay(d,wskip) if ((d)->lock) \
- (*(d)->lock->internal_lock_display)(d,wskip,__FILE__,__LINE__)
-#else
-#define InternalLockDisplay(d,wskip) if ((d)->lock) \
- (*(d)->lock->internal_lock_display)(d,wskip)
-#endif
-#else /* XTHREADS else */
-#define InternalLockDisplay(d,wskip)
-#endif /* XTHREADS else */
-
-#endif /* XPRIVATE_H */
+/* Copyright (C) 2008 Jamey Sharp, Josh Triplett
+ * This file is licensed under the MIT license. See the file COPYING.
+ *
+ * As Xlibint.h has long become effectively public API, this header exists
+ * for new private functions that nothing outside of libX11 should call.
+ */
+
+#ifndef XPRIVATE_H
+#define XPRIVATE_H
+
+extern _X_HIDDEN void _XIDHandler(Display *dpy);
+extern _X_HIDDEN void _XSeqSyncFunction(Display *dpy);
+extern _X_HIDDEN void _XSetPrivSyncFunction(Display *dpy);
+extern _X_HIDDEN void _XSetSeqSyncFunction(Display *dpy);
+
+#ifdef XTHREADS
+#if defined(XTHREADS_WARN) || defined(XTHREADS_FILE_LINE)
+#define InternalLockDisplay(d,wskip) if ((d)->lock) \
+ (*(d)->lock->internal_lock_display)(d,wskip,__FILE__,__LINE__)
+#else
+#define InternalLockDisplay(d,wskip) if ((d)->lock) \
+ (*(d)->lock->internal_lock_display)(d,wskip)
+#endif
+#else /* XTHREADS else */
+#define InternalLockDisplay(d,wskip)
+#endif /* XTHREADS else */
+
+#endif /* XPRIVATE_H */
diff --git a/libX11/src/evtomask.c b/libX11/src/evtomask.c
index fde80b440..b108d2a88 100644
--- a/libX11/src/evtomask.c
+++ b/libX11/src/evtomask.c
@@ -1,74 +1,74 @@
-/*
-
-Copyright 1987, 1998 The Open Group
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall not be
-used in advertising or otherwise to promote the sale, use or other dealings
-in this Software without prior written authorization from The Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include <X11/X.h>
-
-/*
- * This array can be used given an event type to determine the mask bits
- * that could have generated it.
- */
-long const _Xevent_to_mask [LASTEvent] = {
- 0, /* no event 0 */
- 0, /* no event 1 */
- KeyPressMask, /* KeyPress */
- KeyReleaseMask, /* KeyRelease */
- ButtonPressMask, /* ButtonPress */
- ButtonReleaseMask, /* ButtonRelease */
- PointerMotionMask|PointerMotionHintMask|Button1MotionMask|
- Button2MotionMask|Button3MotionMask|Button4MotionMask|
- Button5MotionMask|ButtonMotionMask, /* MotionNotify */
- EnterWindowMask, /* EnterNotify */
- LeaveWindowMask, /* LeaveNotify */
- FocusChangeMask, /* FocusIn */
- FocusChangeMask, /* FocusOut */
- KeymapStateMask, /* KeymapNotify */
- ExposureMask, /* Expose */
- ExposureMask, /* GraphicsExpose */
- ExposureMask, /* NoExpose */
- VisibilityChangeMask, /* VisibilityNotify */
- SubstructureNotifyMask, /* CreateNotify */
- StructureNotifyMask|SubstructureNotifyMask, /* DestroyNotify */
- StructureNotifyMask|SubstructureNotifyMask, /* UnmapNotify */
- StructureNotifyMask|SubstructureNotifyMask, /* MapNotify */
- SubstructureRedirectMask, /* MapRequest */
- SubstructureNotifyMask|StructureNotifyMask, /* ReparentNotify */
- StructureNotifyMask|SubstructureNotifyMask, /* ConfigureNotify */
- SubstructureRedirectMask, /* ConfigureRequest */
- SubstructureNotifyMask|StructureNotifyMask, /* GravityNotify */
- ResizeRedirectMask, /* ResizeRequest */
- SubstructureNotifyMask|StructureNotifyMask, /* CirculateNotify */
- SubstructureRedirectMask, /* CirculateRequest */
- PropertyChangeMask, /* PropertyNotify */
- 0, /* SelectionClear */
- 0, /* SelectionRequest */
- 0, /* SelectionNotify */
- ColormapChangeMask, /* ColormapNotify */
- 0, /* ClientMessage */
- 0, /* MappingNotify */
-};
+/*
+
+Copyright 1987, 1998 The Open Group
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group shall not be
+used in advertising or otherwise to promote the sale, use or other dealings
+in this Software without prior written authorization from The Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include <X11/X.h>
+
+/*
+ * This array can be used given an event type to determine the mask bits
+ * that could have generated it.
+ */
+long const _Xevent_to_mask [LASTEvent] = {
+ 0, /* no event 0 */
+ 0, /* no event 1 */
+ KeyPressMask, /* KeyPress */
+ KeyReleaseMask, /* KeyRelease */
+ ButtonPressMask, /* ButtonPress */
+ ButtonReleaseMask, /* ButtonRelease */
+ PointerMotionMask|PointerMotionHintMask|Button1MotionMask|
+ Button2MotionMask|Button3MotionMask|Button4MotionMask|
+ Button5MotionMask|ButtonMotionMask, /* MotionNotify */
+ EnterWindowMask, /* EnterNotify */
+ LeaveWindowMask, /* LeaveNotify */
+ FocusChangeMask, /* FocusIn */
+ FocusChangeMask, /* FocusOut */
+ KeymapStateMask, /* KeymapNotify */
+ ExposureMask, /* Expose */
+ ExposureMask, /* GraphicsExpose */
+ ExposureMask, /* NoExpose */
+ VisibilityChangeMask, /* VisibilityNotify */
+ SubstructureNotifyMask, /* CreateNotify */
+ StructureNotifyMask|SubstructureNotifyMask, /* DestroyNotify */
+ StructureNotifyMask|SubstructureNotifyMask, /* UnmapNotify */
+ StructureNotifyMask|SubstructureNotifyMask, /* MapNotify */
+ SubstructureRedirectMask, /* MapRequest */
+ SubstructureNotifyMask|StructureNotifyMask, /* ReparentNotify */
+ StructureNotifyMask|SubstructureNotifyMask, /* ConfigureNotify */
+ SubstructureRedirectMask, /* ConfigureRequest */
+ SubstructureNotifyMask|StructureNotifyMask, /* GravityNotify */
+ ResizeRedirectMask, /* ResizeRequest */
+ SubstructureNotifyMask|StructureNotifyMask, /* CirculateNotify */
+ SubstructureRedirectMask, /* CirculateRequest */
+ PropertyChangeMask, /* PropertyNotify */
+ 0, /* SelectionClear */
+ 0, /* SelectionRequest */
+ 0, /* SelectionNotify */
+ ColormapChangeMask, /* ColormapNotify */
+ 0, /* ClientMessage */
+ 0, /* MappingNotify */
+};
diff --git a/libX11/src/globals.c b/libX11/src/globals.c
index 661c99979..89e38a744 100644
--- a/libX11/src/globals.c
+++ b/libX11/src/globals.c
@@ -1,235 +1,235 @@
-/*
-
-Copyright 1989, 1998 The Open Group
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
-
-The above copyright notice and this permission notice shall be included
-in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
-IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR
-OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
-ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall
-not be used in advertising or otherwise to promote the sale, use or
-other dealings in this Software without prior written authorization
-from The Open Group.
-
-*/
-
-/*
- *
- * Global data
- *
- * This file should contain only those objects which must be predefined.
- */
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include <X11/Xlibint.h>
-
-
-/*
- * If possible, it is useful to have the global data default to a null value.
- * Some shared library implementations are *much* happier if there isn't any
- * global initialized data.
- */
-#ifdef NULL_NOT_ZERO /* then need to initialize */
-#define SetZero(t,var,z) t var = z
-#else
-#define SetZero(t,var,z) t var
-#endif
-
-#ifdef USL_SHAREDLIB /* then need extra variables */
-/*
- * If we need to define extra variables for each global
- */
-#if !defined(UNIXCPP) || defined(ANSICPP)
-#define ZEROINIT(t,var,val) SetZero(t,var,val); \
- SetZero (long, _libX_##var##Flag, 0); \
- SetZero (void *, _libX_##var##Ptr, NULL)
-#else /* else pcc concatenation */
-#define ZEROINIT(t,var,val) SetZero(t,var,val); \
- SetZero (long, _libX_/**/var/**/Flag, 0); \
- SetZero (void *, _libX_/**/var/**/Ptr, NULL)
-#endif /* concat ANSI C vs. pcc */
-
-#else /* else not USL_SHAREDLIB */
-/*
- * no extra crud
- */
-#define ZEROINIT(t,var,val) SetZero (t, var, val)
-
-#endif /* USL_SHAREDLIB */
-
-
-/*
- * Error handlers; used to be in XlibInt.c
- */
-ZEROINIT (XErrorHandler, _XErrorFunction, NULL);
-ZEROINIT (XIOErrorHandler, _XIOErrorFunction, NULL);
-ZEROINIT (_XQEvent *, _qfree, NULL);
-
-
-/*
- * Debugging information and display list; used to be in XOpenDis.c
- */
-ZEROINIT (int, _Xdebug, 0);
-ZEROINIT (Display *, _XHeadOfDisplayList, NULL);
-
-
-
-#if 0
-#ifdef STREAMSCONN
-
-
-/* The following are how the Xstream connections are used: */
-/* 1) Local connections over pseudo-tty ports. */
-/* 2) SVR4 local connections using named streams or SVR3.2 */
-/* local connections using streams. */
-/* 3) SVR4 stream pipe code. This code is proprietary and */
-/* the actual code is not included in the XC distribution. */
-/* 4) remote connections using tcp */
-/* 5) remote connections using StarLan */
-
-/*
- * descriptor block for streams connections
- */
-
-#include "Xstreams.h"
-
-char _XsTypeOfStream[100] = { 0 };
-
-extern int write();
-extern int close();
-#ifdef SVR4
-extern int _XsSetupSpStream();
-extern int _XsSetupNamedStream();
-#endif
-extern int _XsSetupLocalStream();
-extern int _XsConnectLocalClient();
-extern int _XsCallLocalServer();
-extern int _XsReadLocalStream();
-extern int _XsErrorCall();
-extern int _XsWriteLocalStream();
-extern int _XsCloseLocalStream();
-extern int _XsSetupTliStream();
-extern int _XsConnectTliClient();
-extern int _XsCallTliServer();
-extern int _XsReadTliStream();
-extern int _XsWriteTliStream();
-extern int _XsCloseTliStream();
-
-
-Xstream _XsStream[] = {
-
- {
- /* local connections using pseudo-ttys */
-
- _XsSetupLocalStream,
- _XsConnectLocalClient,
- _XsCallLocalServer,
- _XsReadLocalStream,
- _XsErrorCall,
- write,
- close,
- NULL
- },
- {
-#ifdef SVR4
- /* local connections using named streams */
-
- _XsSetupNamedStream,
-#else
- /* local connections using streams */
- _XsSetupLocalStream,
-#endif
- _XsConnectLocalClient,
- _XsCallLocalServer,
- _XsReadLocalStream,
- _XsErrorCall,
- write,
- close,
- NULL
- },
- /* Enhanced Application Compatibility Support */
- {
-#ifdef SVR4
- /* SVR4 stream pipe code */
- _XsSetupSpStream,
-#else
- _XsSetupLocalStream,
-#endif
- _XsConnectLocalClient,
- _XsCallLocalServer,
- _XsReadLocalStream,
- _XsErrorCall,
- write,
- close,
- NULL
- },
- /* End Enhanced Application Compatibility Support */
-
- {
- /* remote connections using tcp */
- _XsSetupTliStream,
- _XsConnectTliClient,
- _XsCallTliServer,
- _XsReadLocalStream,
- _XsErrorCall,
- write,
- close,
- NULL
- },
- {
- /* remote connections using StarLan */
- _XsSetupTliStream,
- _XsConnectTliClient,
- _XsCallTliServer,
- _XsReadLocalStream,
- _XsErrorCall,
- write,
- close,
- NULL
- }
-};
-
-
-#endif /* STREAMSCONN */
-#endif
-
-
-#ifdef XTEST1
-/*
- * Stuff for input synthesis extension:
- */
-/*
- * Holds the two event type codes for this extension. The event type codes
- * for this extension may vary depending on how many extensions are installed
- * already, so the initial values given below will be added to the base event
- * code that is aquired when this extension is installed.
- *
- * These two variables must be available to programs that use this extension.
- */
-int XTestInputActionType = 0;
-int XTestFakeAckType = 1;
-#endif
-
-/*
- * NOTE: any additional external definition NEED
- * to be inserted BELOW this point!!!
- */
-
-/*
- * NOTE: any additional external definition NEED
- * to be inserted ABOVE this point!!!
- */
+/*
+
+Copyright 1989, 1998 The Open Group
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
+
+The above copyright notice and this permission notice shall be included
+in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR
+OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
+ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group shall
+not be used in advertising or otherwise to promote the sale, use or
+other dealings in this Software without prior written authorization
+from The Open Group.
+
+*/
+
+/*
+ *
+ * Global data
+ *
+ * This file should contain only those objects which must be predefined.
+ */
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include <X11/Xlibint.h>
+
+
+/*
+ * If possible, it is useful to have the global data default to a null value.
+ * Some shared library implementations are *much* happier if there isn't any
+ * global initialized data.
+ */
+#ifdef NULL_NOT_ZERO /* then need to initialize */
+#define SetZero(t,var,z) t var = z
+#else
+#define SetZero(t,var,z) t var
+#endif
+
+#ifdef USL_SHAREDLIB /* then need extra variables */
+/*
+ * If we need to define extra variables for each global
+ */
+#if !defined(UNIXCPP) || defined(ANSICPP)
+#define ZEROINIT(t,var,val) SetZero(t,var,val); \
+ SetZero (long, _libX_##var##Flag, 0); \
+ SetZero (void *, _libX_##var##Ptr, NULL)
+#else /* else pcc concatenation */
+#define ZEROINIT(t,var,val) SetZero(t,var,val); \
+ SetZero (long, _libX_/**/var/**/Flag, 0); \
+ SetZero (void *, _libX_/**/var/**/Ptr, NULL)
+#endif /* concat ANSI C vs. pcc */
+
+#else /* else not USL_SHAREDLIB */
+/*
+ * no extra crud
+ */
+#define ZEROINIT(t,var,val) SetZero (t, var, val)
+
+#endif /* USL_SHAREDLIB */
+
+
+/*
+ * Error handlers; used to be in XlibInt.c
+ */
+ZEROINIT (XErrorHandler, _XErrorFunction, NULL);
+ZEROINIT (XIOErrorHandler, _XIOErrorFunction, NULL);
+ZEROINIT (_XQEvent *, _qfree, NULL);
+
+
+/*
+ * Debugging information and display list; used to be in XOpenDis.c
+ */
+ZEROINIT (int, _Xdebug, 0);
+ZEROINIT (Display *, _XHeadOfDisplayList, NULL);
+
+
+
+#if 0
+#ifdef STREAMSCONN
+
+
+/* The following are how the Xstream connections are used: */
+/* 1) Local connections over pseudo-tty ports. */
+/* 2) SVR4 local connections using named streams or SVR3.2 */
+/* local connections using streams. */
+/* 3) SVR4 stream pipe code. This code is proprietary and */
+/* the actual code is not included in the XC distribution. */
+/* 4) remote connections using tcp */
+/* 5) remote connections using StarLan */
+
+/*
+ * descriptor block for streams connections
+ */
+
+#include "Xstreams.h"
+
+char _XsTypeOfStream[100] = { 0 };
+
+extern int write();
+extern int close();
+#ifdef SVR4
+extern int _XsSetupSpStream();
+extern int _XsSetupNamedStream();
+#endif
+extern int _XsSetupLocalStream();
+extern int _XsConnectLocalClient();
+extern int _XsCallLocalServer();
+extern int _XsReadLocalStream();
+extern int _XsErrorCall();
+extern int _XsWriteLocalStream();
+extern int _XsCloseLocalStream();
+extern int _XsSetupTliStream();
+extern int _XsConnectTliClient();
+extern int _XsCallTliServer();
+extern int _XsReadTliStream();
+extern int _XsWriteTliStream();
+extern int _XsCloseTliStream();
+
+
+Xstream _XsStream[] = {
+
+ {
+ /* local connections using pseudo-ttys */
+
+ _XsSetupLocalStream,
+ _XsConnectLocalClient,
+ _XsCallLocalServer,
+ _XsReadLocalStream,
+ _XsErrorCall,
+ write,
+ close,
+ NULL
+ },
+ {
+#ifdef SVR4
+ /* local connections using named streams */
+
+ _XsSetupNamedStream,
+#else
+ /* local connections using streams */
+ _XsSetupLocalStream,
+#endif
+ _XsConnectLocalClient,
+ _XsCallLocalServer,
+ _XsReadLocalStream,
+ _XsErrorCall,
+ write,
+ close,
+ NULL
+ },
+ /* Enhanced Application Compatibility Support */
+ {
+#ifdef SVR4
+ /* SVR4 stream pipe code */
+ _XsSetupSpStream,
+#else
+ _XsSetupLocalStream,
+#endif
+ _XsConnectLocalClient,
+ _XsCallLocalServer,
+ _XsReadLocalStream,
+ _XsErrorCall,
+ write,
+ close,
+ NULL
+ },
+ /* End Enhanced Application Compatibility Support */
+
+ {
+ /* remote connections using tcp */
+ _XsSetupTliStream,
+ _XsConnectTliClient,
+ _XsCallTliServer,
+ _XsReadLocalStream,
+ _XsErrorCall,
+ write,
+ close,
+ NULL
+ },
+ {
+ /* remote connections using StarLan */
+ _XsSetupTliStream,
+ _XsConnectTliClient,
+ _XsCallTliServer,
+ _XsReadLocalStream,
+ _XsErrorCall,
+ write,
+ close,
+ NULL
+ }
+};
+
+
+#endif /* STREAMSCONN */
+#endif
+
+
+#ifdef XTEST1
+/*
+ * Stuff for input synthesis extension:
+ */
+/*
+ * Holds the two event type codes for this extension. The event type codes
+ * for this extension may vary depending on how many extensions are installed
+ * already, so the initial values given below will be added to the base event
+ * code that is aquired when this extension is installed.
+ *
+ * These two variables must be available to programs that use this extension.
+ */
+int XTestInputActionType = 0;
+int XTestFakeAckType = 1;
+#endif
+
+/*
+ * NOTE: any additional external definition NEED
+ * to be inserted BELOW this point!!!
+ */
+
+/*
+ * NOTE: any additional external definition NEED
+ * to be inserted ABOVE this point!!!
+ */
diff --git a/libX11/src/imConv.c b/libX11/src/imConv.c
index 7c1ed89cf..c3c1974de 100644
--- a/libX11/src/imConv.c
+++ b/libX11/src/imConv.c
@@ -1,356 +1,356 @@
-/******************************************************************
-
- Copyright 1991, 1992 by Fuji Xerox Co.,Ltd.
- Copyright 1993, 1994 by FUJITSU LIMITED
-
-Permission to use, copy, modify, distribute, and sell this software
-and its documentation for any purpose is hereby granted without fee,
-provided that the above copyright notice appear in all copies and
-that both that copyright notice and this permission notice appear
-in supporting documentation, and that the name of Fuji Xerox Co.,Ltd.
-, and that the name of FUJITSU LIMITED not be used in advertising or
-publicity pertaining to distribution of the software without specific,
- written prior permission.
-Fuji Xerox Co.,Ltd. , and FUJITSU LIMITED makes no representations about
-the suitability of this software for any purpose.
-It is provided "as is" without express or implied warranty.
-
-FUJI XEROX CO.,LTD. AND FUJITSU LIMITED DISCLAIMS ALL WARRANTIES WITH
-REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF
-MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL FUJI XEROX CO.,LTD.
-AND FUJITSU LIMITED BE LIABLE FOR ANY SPECIAL, INDIRECT
-OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
-LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
-NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH
-THE USE OR PERFORMANCE OF THIS SOFTWARE.
-
- Auther: Kazunori Nishihara, Fuji Xerox Co.,Ltd.
- kaz@ssdev.ksp.fujixerox.co.jp
- Modifier: Takashi Fujiwara FUJITSU LIMITED
- fujiwara@a80.tech.yk.fujitsu.co.jp
-
-******************************************************************/
-/* 2000 Modifier: Ivan Pascal The XFree86 Project.
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include <stdio.h>
-#include "Xlibint.h"
-#include "Xlcint.h"
-#include "Ximint.h"
-#include "XlcPubI.h"
-
-#ifdef XKB
-/*
- * rather than just call _XLookupString (i.e. the pre-XKB XLookupString)
- * do this because with XKB the event may have some funky modifiers that
- * _XLookupString doesn't grok.
- */
-#include "XKBlib.h"
-#define XLOOKUPSTRING lookup_string
-#else
-#define XLOOKUPSTRING XLookupString
-#endif
-
-typedef unsigned int ucs4_t;
-
-typedef int (*ucstocsConvProc)(
- XPointer,
- unsigned char *,
- ucs4_t,
- int
-);
-
-struct SubstRec {
- const char encoding_name[8];
- const char charset_name[12];
-};
-
-static const struct SubstRec SubstTable[] = {
- {"STRING", "ISO8859-1"},
- {"TIS620", "TIS620-0"},
- {"UTF-8", "ISO10646-1"}
-};
-#define num_substitute (sizeof SubstTable / sizeof SubstTable[0])
-
-/*
- * Given the name of a charset, returns the pointer to convertors
- * from UCS char to specified charset char.
- * This converter is needed for _XimGetCharCode subroutine.
- */
-XPointer
-_XimGetLocaleCode (
- _Xconst char* encoding_name)
-{
- XPointer cvt = _Utf8GetConvByName(encoding_name);
- if (!cvt && encoding_name) {
- int i;
- for (i = 0; i < num_substitute; i++)
- if (!strcmp(encoding_name, SubstTable[i].encoding_name))
- return _Utf8GetConvByName(SubstTable[i].charset_name);
- }
- return cvt;
-}
-
-/*
- * Returns the locale dependent representation of a keysym.
- * The locale's encoding is passed in form of pointer to UCS convertor.
- * The resulting multi-byte sequence is placed starting at buf (a buffer
- * with nbytes bytes, nbytes should be >= 8) and is NUL terminated.
- * Returns the length of the resulting multi-byte sequence, excluding the
- * terminating NUL byte. Return 0 if the keysym is not representable in the
- * locale
- */
-/*ARGSUSED*/
-int
-_XimGetCharCode (
- XPointer ucs_conv,
- KeySym keysym,
- unsigned char* buf,
- int nbytes)
-{
- int count = 0;
- ucstocsConvProc cvt = (ucstocsConvProc) ucs_conv;
- ucs4_t ucs4;
-
- if (keysym < 0x80) {
- buf[0] = (char) keysym;
- count = 1;
- } else if (cvt) {
- ucs4 = KeySymToUcs4(keysym);
- if (ucs4)
- count = (*cvt)((XPointer)NULL, buf, ucs4, nbytes);
- }
-
- if (count < 0)
- count = 0;
- if (count>nbytes)
- return nbytes;
- if (count<nbytes)
- buf[count]= '\0';
- return count;
-}
-
-#ifdef XKB
-static int lookup_string(
- XKeyEvent* event,
- char* buffer,
- int nbytes,
- KeySym* keysym,
- XComposeStatus* status)
-{
- int ret;
- unsigned ctrls = XkbGetXlibControls (event->display);
- XkbSetXlibControls (event->display,
- XkbLC_ForceLatin1Lookup, XkbLC_ForceLatin1Lookup);
- ret = XLookupString(event, (char *)buffer, nbytes, keysym, status);
- XkbSetXlibControls (event->display,
- XkbLC_ForceLatin1Lookup, ctrls);
- return ret;
-}
-#endif
-
-#define BUF_SIZE (20)
-
-int
-_XimLookupMBText(
- Xic ic,
- XKeyEvent* event,
- char* buffer,
- int nbytes,
- KeySym* keysym,
- XComposeStatus* status)
-{
- int count;
- KeySym symbol;
- Status dummy;
- Xim im = (Xim)ic->core.im;
- XimCommonPrivateRec* private = &im->private.common;
- unsigned char look[BUF_SIZE];
- ucs4_t ucs4;
-
- /* force a latin-1 lookup for compatibility */
- count = XLOOKUPSTRING(event, (char *)buffer, nbytes, &symbol, status);
- if (keysym != NULL) *keysym = symbol;
- if ((nbytes == 0) || (symbol == NoSymbol)) return count;
-
- if (count > 1) {
- memcpy(look, (char *)buffer,count);
- look[count] = '\0';
- if ((count = im->methods->ctstombs(ic->core.im,
- (char*) look, count,
- buffer, nbytes, &dummy)) < 0) {
- count = 0;
- }
- } else if ((count == 0) ||
- (count == 1 && (symbol > 0x7f && symbol < 0xff00))) {
-
- XPointer from = (XPointer) &ucs4;
- XPointer to = (XPointer) look;
- int from_len = 1;
- int to_len = BUF_SIZE;
- XPointer args[1];
- XlcCharSet charset;
- args[0] = (XPointer) &charset;
- ucs4 = (ucs4_t) KeySymToUcs4(symbol);
- if (!ucs4)
- return 0;
-
- if (_XlcConvert(private->ucstoc_conv,
- &from, &from_len, &to, &to_len,
- args, 1 ) != 0) {
- count = 0;
- } else {
- from = (XPointer) look;
- to = (XPointer) buffer;
- from_len = BUF_SIZE - to_len;
- to_len = nbytes;
- args[0] = (XPointer) charset;
- if (_XlcConvert(private->cstomb_conv,
- &from, &from_len, &to, &to_len,
- args, 1 ) != 0) {
- count = 0;
- } else {
- count = nbytes - to_len;
- }
- }
- }
- /* FIXME:
- * we should make sure that if the character is a Latin1 character
- * and it's on the right side, and we're in a non-Latin1 locale
- * that this is a valid Latin1 character for this locale.
- */
- return count;
-}
-
-int
-_XimLookupWCText(
- Xic ic,
- XKeyEvent* event,
- wchar_t* buffer,
- int nbytes,
- KeySym* keysym,
- XComposeStatus* status)
-{
- int count;
- KeySym symbol;
- Status dummy;
- Xim im = (Xim)ic->core.im;
- XimCommonPrivateRec* private = &im->private.common;
- unsigned char look[BUF_SIZE];
- ucs4_t ucs4;
-
- /* force a latin-1 lookup for compatibility */
- count = XLOOKUPSTRING(event, (char *)look, nbytes, &symbol, status);
- if (keysym != NULL) *keysym = symbol;
- if ((nbytes == 0) || (symbol == NoSymbol)) return count;
-
- if (count > 1) {
- if ((count = im->methods->ctstowcs(ic->core.im,
- (char*) look, count,
- buffer, nbytes, &dummy)) < 0) {
- count = 0;
- }
- } else if ((count == 0) ||
- (count == 1 && (symbol > 0x7f && symbol < 0xff00))) {
-
- XPointer from = (XPointer) &ucs4;
- XPointer to = (XPointer) look;
- int from_len = 1;
- int to_len = BUF_SIZE;
- XPointer args[1];
- XlcCharSet charset;
- args[0] = (XPointer) &charset;
- ucs4 = (ucs4_t) KeySymToUcs4(symbol);
- if (!ucs4)
- return 0;
-
- if (_XlcConvert(private->ucstoc_conv,
- &from, &from_len, &to, &to_len,
- args, 1 ) != 0) {
- count = 0;
- } else {
- from = (XPointer) look;
- to = (XPointer) buffer;
- from_len = BUF_SIZE - to_len;
- to_len = nbytes;
- args[0] = (XPointer) charset;
-
- if (_XlcConvert(private->cstowc_conv,
- &from, &from_len, &to, &to_len,
- args, 1 ) != 0) {
- count = 0;
- } else {
- count = nbytes - to_len;
- }
- }
- } else
- /* FIXME:
- * we should make sure that if the character is a Latin1 character
- * and it's on the right side, and we're in a non-Latin1 locale
- * that this is a valid Latin1 character for this locale.
- */
- buffer[0] = look[0];
-
- return count;
-}
-
-int
-_XimLookupUTF8Text(
- Xic ic,
- XKeyEvent* event,
- char* buffer,
- int nbytes,
- KeySym* keysym,
- XComposeStatus* status)
-{
- int count;
- KeySym symbol;
- Status dummy;
- Xim im = (Xim)ic->core.im;
- XimCommonPrivateRec* private = &im->private.common;
- unsigned char look[BUF_SIZE];
- ucs4_t ucs4;
-
- /* force a latin-1 lookup for compatibility */
- count = XLOOKUPSTRING(event, (char *)buffer, nbytes, &symbol, status);
- if (keysym != NULL) *keysym = symbol;
- if ((nbytes == 0) || (symbol == NoSymbol)) return count;
-
- if (count > 1) {
- memcpy(look, (char *)buffer,count);
- look[count] = '\0';
- if ((count = im->methods->ctstoutf8(ic->core.im,
- (char*) look, count,
- buffer, nbytes, &dummy)) < 0) {
- count = 0;
- }
- } else if ((count == 0) ||
- (count == 1 && (symbol > 0x7f && symbol < 0xff00))) {
-
- XPointer from = (XPointer) &ucs4;
- int from_len = 1;
- XPointer to = (XPointer) buffer;
- int to_len = nbytes;
-
- ucs4 = (ucs4_t) KeySymToUcs4(symbol);
- if (!ucs4)
- return 0;
-
- if (_XlcConvert(private->ucstoutf8_conv,
- &from, &from_len, &to, &to_len,
- NULL, 0) != 0) {
- count = 0;
- } else {
- count = nbytes - to_len;
- }
- }
- /* FIXME:
- * we should make sure that if the character is a Latin1 character
- * and it's on the right side, and we're in a non-Latin1 locale
- * that this is a valid Latin1 character for this locale.
- */
- return count;
-}
+/******************************************************************
+
+ Copyright 1991, 1992 by Fuji Xerox Co.,Ltd.
+ Copyright 1993, 1994 by FUJITSU LIMITED
+
+Permission to use, copy, modify, distribute, and sell this software
+and its documentation for any purpose is hereby granted without fee,
+provided that the above copyright notice appear in all copies and
+that both that copyright notice and this permission notice appear
+in supporting documentation, and that the name of Fuji Xerox Co.,Ltd.
+, and that the name of FUJITSU LIMITED not be used in advertising or
+publicity pertaining to distribution of the software without specific,
+ written prior permission.
+Fuji Xerox Co.,Ltd. , and FUJITSU LIMITED makes no representations about
+the suitability of this software for any purpose.
+It is provided "as is" without express or implied warranty.
+
+FUJI XEROX CO.,LTD. AND FUJITSU LIMITED DISCLAIMS ALL WARRANTIES WITH
+REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL FUJI XEROX CO.,LTD.
+AND FUJITSU LIMITED BE LIABLE FOR ANY SPECIAL, INDIRECT
+OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
+LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
+NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH
+THE USE OR PERFORMANCE OF THIS SOFTWARE.
+
+ Auther: Kazunori Nishihara, Fuji Xerox Co.,Ltd.
+ kaz@ssdev.ksp.fujixerox.co.jp
+ Modifier: Takashi Fujiwara FUJITSU LIMITED
+ fujiwara@a80.tech.yk.fujitsu.co.jp
+
+******************************************************************/
+/* 2000 Modifier: Ivan Pascal The XFree86 Project.
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include <stdio.h>
+#include "Xlibint.h"
+#include "Xlcint.h"
+#include "Ximint.h"
+#include "XlcPubI.h"
+
+#ifdef XKB
+/*
+ * rather than just call _XLookupString (i.e. the pre-XKB XLookupString)
+ * do this because with XKB the event may have some funky modifiers that
+ * _XLookupString doesn't grok.
+ */
+#include "XKBlib.h"
+#define XLOOKUPSTRING lookup_string
+#else
+#define XLOOKUPSTRING XLookupString
+#endif
+
+typedef unsigned int ucs4_t;
+
+typedef int (*ucstocsConvProc)(
+ XPointer,
+ unsigned char *,
+ ucs4_t,
+ int
+);
+
+struct SubstRec {
+ const char encoding_name[8];
+ const char charset_name[12];
+};
+
+static const struct SubstRec SubstTable[] = {
+ {"STRING", "ISO8859-1"},
+ {"TIS620", "TIS620-0"},
+ {"UTF-8", "ISO10646-1"}
+};
+#define num_substitute (sizeof SubstTable / sizeof SubstTable[0])
+
+/*
+ * Given the name of a charset, returns the pointer to convertors
+ * from UCS char to specified charset char.
+ * This converter is needed for _XimGetCharCode subroutine.
+ */
+XPointer
+_XimGetLocaleCode (
+ _Xconst char* encoding_name)
+{
+ XPointer cvt = _Utf8GetConvByName(encoding_name);
+ if (!cvt && encoding_name) {
+ int i;
+ for (i = 0; i < num_substitute; i++)
+ if (!strcmp(encoding_name, SubstTable[i].encoding_name))
+ return _Utf8GetConvByName(SubstTable[i].charset_name);
+ }
+ return cvt;
+}
+
+/*
+ * Returns the locale dependent representation of a keysym.
+ * The locale's encoding is passed in form of pointer to UCS convertor.
+ * The resulting multi-byte sequence is placed starting at buf (a buffer
+ * with nbytes bytes, nbytes should be >= 8) and is NUL terminated.
+ * Returns the length of the resulting multi-byte sequence, excluding the
+ * terminating NUL byte. Return 0 if the keysym is not representable in the
+ * locale
+ */
+/*ARGSUSED*/
+int
+_XimGetCharCode (
+ XPointer ucs_conv,
+ KeySym keysym,
+ unsigned char* buf,
+ int nbytes)
+{
+ int count = 0;
+ ucstocsConvProc cvt = (ucstocsConvProc) ucs_conv;
+ ucs4_t ucs4;
+
+ if (keysym < 0x80) {
+ buf[0] = (char) keysym;
+ count = 1;
+ } else if (cvt) {
+ ucs4 = KeySymToUcs4(keysym);
+ if (ucs4)
+ count = (*cvt)((XPointer)NULL, buf, ucs4, nbytes);
+ }
+
+ if (count < 0)
+ count = 0;
+ if (count>nbytes)
+ return nbytes;
+ if (count<nbytes)
+ buf[count]= '\0';
+ return count;
+}
+
+#ifdef XKB
+static int lookup_string(
+ XKeyEvent* event,
+ char* buffer,
+ int nbytes,
+ KeySym* keysym,
+ XComposeStatus* status)
+{
+ int ret;
+ unsigned ctrls = XkbGetXlibControls (event->display);
+ XkbSetXlibControls (event->display,
+ XkbLC_ForceLatin1Lookup, XkbLC_ForceLatin1Lookup);
+ ret = XLookupString(event, (char *)buffer, nbytes, keysym, status);
+ XkbSetXlibControls (event->display,
+ XkbLC_ForceLatin1Lookup, ctrls);
+ return ret;
+}
+#endif
+
+#define BUF_SIZE (20)
+
+int
+_XimLookupMBText(
+ Xic ic,
+ XKeyEvent* event,
+ char* buffer,
+ int nbytes,
+ KeySym* keysym,
+ XComposeStatus* status)
+{
+ int count;
+ KeySym symbol;
+ Status dummy;
+ Xim im = (Xim)ic->core.im;
+ XimCommonPrivateRec* private = &im->private.common;
+ unsigned char look[BUF_SIZE];
+ ucs4_t ucs4;
+
+ /* force a latin-1 lookup for compatibility */
+ count = XLOOKUPSTRING(event, (char *)buffer, nbytes, &symbol, status);
+ if (keysym != NULL) *keysym = symbol;
+ if ((nbytes == 0) || (symbol == NoSymbol)) return count;
+
+ if (count > 1) {
+ memcpy(look, (char *)buffer,count);
+ look[count] = '\0';
+ if ((count = im->methods->ctstombs(ic->core.im,
+ (char*) look, count,
+ buffer, nbytes, &dummy)) < 0) {
+ count = 0;
+ }
+ } else if ((count == 0) ||
+ (count == 1 && (symbol > 0x7f && symbol < 0xff00))) {
+
+ XPointer from = (XPointer) &ucs4;
+ XPointer to = (XPointer) look;
+ int from_len = 1;
+ int to_len = BUF_SIZE;
+ XPointer args[1];
+ XlcCharSet charset;
+ args[0] = (XPointer) &charset;
+ ucs4 = (ucs4_t) KeySymToUcs4(symbol);
+ if (!ucs4)
+ return 0;
+
+ if (_XlcConvert(private->ucstoc_conv,
+ &from, &from_len, &to, &to_len,
+ args, 1 ) != 0) {
+ count = 0;
+ } else {
+ from = (XPointer) look;
+ to = (XPointer) buffer;
+ from_len = BUF_SIZE - to_len;
+ to_len = nbytes;
+ args[0] = (XPointer) charset;
+ if (_XlcConvert(private->cstomb_conv,
+ &from, &from_len, &to, &to_len,
+ args, 1 ) != 0) {
+ count = 0;
+ } else {
+ count = nbytes - to_len;
+ }
+ }
+ }
+ /* FIXME:
+ * we should make sure that if the character is a Latin1 character
+ * and it's on the right side, and we're in a non-Latin1 locale
+ * that this is a valid Latin1 character for this locale.
+ */
+ return count;
+}
+
+int
+_XimLookupWCText(
+ Xic ic,
+ XKeyEvent* event,
+ wchar_t* buffer,
+ int nbytes,
+ KeySym* keysym,
+ XComposeStatus* status)
+{
+ int count;
+ KeySym symbol;
+ Status dummy;
+ Xim im = (Xim)ic->core.im;
+ XimCommonPrivateRec* private = &im->private.common;
+ unsigned char look[BUF_SIZE];
+ ucs4_t ucs4;
+
+ /* force a latin-1 lookup for compatibility */
+ count = XLOOKUPSTRING(event, (char *)look, nbytes, &symbol, status);
+ if (keysym != NULL) *keysym = symbol;
+ if ((nbytes == 0) || (symbol == NoSymbol)) return count;
+
+ if (count > 1) {
+ if ((count = im->methods->ctstowcs(ic->core.im,
+ (char*) look, count,
+ buffer, nbytes, &dummy)) < 0) {
+ count = 0;
+ }
+ } else if ((count == 0) ||
+ (count == 1 && (symbol > 0x7f && symbol < 0xff00))) {
+
+ XPointer from = (XPointer) &ucs4;
+ XPointer to = (XPointer) look;
+ int from_len = 1;
+ int to_len = BUF_SIZE;
+ XPointer args[1];
+ XlcCharSet charset;
+ args[0] = (XPointer) &charset;
+ ucs4 = (ucs4_t) KeySymToUcs4(symbol);
+ if (!ucs4)
+ return 0;
+
+ if (_XlcConvert(private->ucstoc_conv,
+ &from, &from_len, &to, &to_len,
+ args, 1 ) != 0) {
+ count = 0;
+ } else {
+ from = (XPointer) look;
+ to = (XPointer) buffer;
+ from_len = BUF_SIZE - to_len;
+ to_len = nbytes;
+ args[0] = (XPointer) charset;
+
+ if (_XlcConvert(private->cstowc_conv,
+ &from, &from_len, &to, &to_len,
+ args, 1 ) != 0) {
+ count = 0;
+ } else {
+ count = nbytes - to_len;
+ }
+ }
+ } else
+ /* FIXME:
+ * we should make sure that if the character is a Latin1 character
+ * and it's on the right side, and we're in a non-Latin1 locale
+ * that this is a valid Latin1 character for this locale.
+ */
+ buffer[0] = look[0];
+
+ return count;
+}
+
+int
+_XimLookupUTF8Text(
+ Xic ic,
+ XKeyEvent* event,
+ char* buffer,
+ int nbytes,
+ KeySym* keysym,
+ XComposeStatus* status)
+{
+ int count;
+ KeySym symbol;
+ Status dummy;
+ Xim im = (Xim)ic->core.im;
+ XimCommonPrivateRec* private = &im->private.common;
+ unsigned char look[BUF_SIZE];
+ ucs4_t ucs4;
+
+ /* force a latin-1 lookup for compatibility */
+ count = XLOOKUPSTRING(event, (char *)buffer, nbytes, &symbol, status);
+ if (keysym != NULL) *keysym = symbol;
+ if ((nbytes == 0) || (symbol == NoSymbol)) return count;
+
+ if (count > 1) {
+ memcpy(look, (char *)buffer,count);
+ look[count] = '\0';
+ if ((count = im->methods->ctstoutf8(ic->core.im,
+ (char*) look, count,
+ buffer, nbytes, &dummy)) < 0) {
+ count = 0;
+ }
+ } else if ((count == 0) ||
+ (count == 1 && (symbol > 0x7f && symbol < 0xff00))) {
+
+ XPointer from = (XPointer) &ucs4;
+ int from_len = 1;
+ XPointer to = (XPointer) buffer;
+ int to_len = nbytes;
+
+ ucs4 = (ucs4_t) KeySymToUcs4(symbol);
+ if (!ucs4)
+ return 0;
+
+ if (_XlcConvert(private->ucstoutf8_conv,
+ &from, &from_len, &to, &to_len,
+ NULL, 0) != 0) {
+ count = 0;
+ } else {
+ count = nbytes - to_len;
+ }
+ }
+ /* FIXME:
+ * we should make sure that if the character is a Latin1 character
+ * and it's on the right side, and we're in a non-Latin1 locale
+ * that this is a valid Latin1 character for this locale.
+ */
+ return count;
+}
diff --git a/libX11/src/locking.h b/libX11/src/locking.h
index 0dd3ebb6b..96019fc91 100644
--- a/libX11/src/locking.h
+++ b/libX11/src/locking.h
@@ -1,154 +1,154 @@
-/*
-
-Copyright 1992, 1998 The Open Group
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall not be
-used in advertising or otherwise to promote the sale, use or other dealings
-in this Software without prior written authorization from The Open Group.
-
-*/
-
-/*
- * Author: Stephen Gildea, MIT X Consortium
- *
- * locking.h - data types for C Threads locking.
- * Used by XlibInt.c, locking.c, LockDis.c
- */
-
-#ifndef _X_locking_H_
-#define _X_locking_H_
-
-#define xmalloc(s) Xmalloc(s)
-#define xfree(s) Xfree(s)
-#include <X11/Xthreads.h>
-
-struct _XCVList {
- xcondition_t cv;
- xReply *buf;
- struct _XCVList *next;
-};
-
-extern xthread_t (*_Xthread_self_fn)( /* in XlibInt.c */
- void
-);
-
-/* Display->lock is a pointer to one of these */
-
-struct _XLockInfo {
- xmutex_t mutex; /* mutex for critical sections */
- int reply_bytes_left; /* nbytes of the reply still to read */
- Bool reply_was_read; /* _XReadEvents read a reply for _XReply */
- struct _XCVList *reply_awaiters; /* list of CVs for _XReply */
- struct _XCVList **reply_awaiters_tail;
- struct _XCVList *event_awaiters; /* list of CVs for _XReadEvents */
- struct _XCVList **event_awaiters_tail;
- Bool reply_first; /* who may read, reply queue or event queue */
- /* for XLockDisplay */
- int locking_level; /* how many times into XLockDisplay we are */
- xthread_t locking_thread; /* thread that did XLockDisplay */
- xcondition_t cv; /* wait if another thread has XLockDisplay */
- xthread_t reading_thread; /* cache */
- xthread_t conni_thread; /* thread in XProcessInternalConnection */
- xcondition_t writers; /* wait for writable */
- int num_free_cvls;
- struct _XCVList *free_cvls;
- /* used only in XlibInt.c */
- void (*pop_reader)(
- Display* /* dpy */,
- struct _XCVList** /* list */,
- struct _XCVList*** /* tail */
- );
- struct _XCVList *(*push_reader)(
- Display * /* dpy */,
- struct _XCVList*** /* tail */
- );
- void (*condition_wait)(
- xcondition_t /* cv */,
- xmutex_t /* mutex */
-#if defined(XTHREADS_WARN) || defined(XTHREADS_FILE_LINE)
- , char* /* file */,
- int /* line */
-#endif
- );
- void (*internal_lock_display)(
- Display* /* dpy */,
- Bool /* wskip */
-#if defined(XTHREADS_WARN) || defined(XTHREADS_FILE_LINE)
- , char* /* file */,
- int /* line */
-#endif
- );
- /* used in XlibInt.c and locking.c */
- void (*condition_signal)(
- xcondition_t /* cv */
-#if defined(XTHREADS_WARN) || defined(XTHREADS_FILE_LINE)
- , char* /* file */,
- int /* line */
-#endif
- );
- void (*condition_broadcast)(
- xcondition_t /* cv */
-#if defined(XTHREADS_WARN) || defined(XTHREADS_FILE_LINE)
- , char* /* file */,
- int /* line */
-#endif
- );
- /* used in XlibInt.c and XLockDis.c */
- void (*lock_wait)(
- Display* /* dpy */
- );
- void (*user_lock_display)(
- Display* /* dpy */
- );
- void (*user_unlock_display)(
- Display* /* dpy */
- );
- struct _XCVList *(*create_cvl)(
- Display * /* dpy */
- );
-};
-
-#define UnlockNextEventReader(d) if ((d)->lock) \
- (*(d)->lock->pop_reader)((d),&(d)->lock->event_awaiters,&(d)->lock->event_awaiters_tail)
-
-#if defined(XTHREADS_WARN) || defined(XTHREADS_FILE_LINE)
-#define ConditionWait(d,c) if ((d)->lock) \
- (*(d)->lock->condition_wait)(c, (d)->lock->mutex,__FILE__,__LINE__)
-#define ConditionSignal(d,c) if ((d)->lock) \
- (*(d)->lock->condition_signal)(c,__FILE__,__LINE__)
-#define ConditionBroadcast(d,c) if ((d)->lock) \
- (*(d)->lock->condition_broadcast)(c,__FILE__,__LINE__)
-#else
-#define ConditionWait(d,c) if ((d)->lock) \
- (*(d)->lock->condition_wait)(c, (d)->lock->mutex)
-#define ConditionSignal(d,c) if ((d)->lock) \
- (*(d)->lock->condition_signal)(c)
-#define ConditionBroadcast(d,c) if ((d)->lock) \
- (*(d)->lock->condition_broadcast)(c)
-#endif
-
-typedef struct _LockInfoRec {
- xmutex_t lock;
-} LockInfoRec;
-
-/* XOpenDis.c */
-extern int (*_XInitDisplayLock_fn)(Display *dpy);
-extern void (*_XFreeDisplayLock_fn)(Display *dpy);
-
-#endif /* _X_locking_H_ */
+/*
+
+Copyright 1992, 1998 The Open Group
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group shall not be
+used in advertising or otherwise to promote the sale, use or other dealings
+in this Software without prior written authorization from The Open Group.
+
+*/
+
+/*
+ * Author: Stephen Gildea, MIT X Consortium
+ *
+ * locking.h - data types for C Threads locking.
+ * Used by XlibInt.c, locking.c, LockDis.c
+ */
+
+#ifndef _X_locking_H_
+#define _X_locking_H_
+
+#define xmalloc(s) Xmalloc(s)
+#define xfree(s) Xfree(s)
+#include <X11/Xthreads.h>
+
+struct _XCVList {
+ xcondition_t cv;
+ xReply *buf;
+ struct _XCVList *next;
+};
+
+extern xthread_t (*_Xthread_self_fn)( /* in XlibInt.c */
+ void
+);
+
+/* Display->lock is a pointer to one of these */
+
+struct _XLockInfo {
+ xmutex_t mutex; /* mutex for critical sections */
+ int reply_bytes_left; /* nbytes of the reply still to read */
+ Bool reply_was_read; /* _XReadEvents read a reply for _XReply */
+ struct _XCVList *reply_awaiters; /* list of CVs for _XReply */
+ struct _XCVList **reply_awaiters_tail;
+ struct _XCVList *event_awaiters; /* list of CVs for _XReadEvents */
+ struct _XCVList **event_awaiters_tail;
+ Bool reply_first; /* who may read, reply queue or event queue */
+ /* for XLockDisplay */
+ int locking_level; /* how many times into XLockDisplay we are */
+ xthread_t locking_thread; /* thread that did XLockDisplay */
+ xcondition_t cv; /* wait if another thread has XLockDisplay */
+ xthread_t reading_thread; /* cache */
+ xthread_t conni_thread; /* thread in XProcessInternalConnection */
+ xcondition_t writers; /* wait for writable */
+ int num_free_cvls;
+ struct _XCVList *free_cvls;
+ /* used only in XlibInt.c */
+ void (*pop_reader)(
+ Display* /* dpy */,
+ struct _XCVList** /* list */,
+ struct _XCVList*** /* tail */
+ );
+ struct _XCVList *(*push_reader)(
+ Display * /* dpy */,
+ struct _XCVList*** /* tail */
+ );
+ void (*condition_wait)(
+ xcondition_t /* cv */,
+ xmutex_t /* mutex */
+#if defined(XTHREADS_WARN) || defined(XTHREADS_FILE_LINE)
+ , char* /* file */,
+ int /* line */
+#endif
+ );
+ void (*internal_lock_display)(
+ Display* /* dpy */,
+ Bool /* wskip */
+#if defined(XTHREADS_WARN) || defined(XTHREADS_FILE_LINE)
+ , char* /* file */,
+ int /* line */
+#endif
+ );
+ /* used in XlibInt.c and locking.c */
+ void (*condition_signal)(
+ xcondition_t /* cv */
+#if defined(XTHREADS_WARN) || defined(XTHREADS_FILE_LINE)
+ , char* /* file */,
+ int /* line */
+#endif
+ );
+ void (*condition_broadcast)(
+ xcondition_t /* cv */
+#if defined(XTHREADS_WARN) || defined(XTHREADS_FILE_LINE)
+ , char* /* file */,
+ int /* line */
+#endif
+ );
+ /* used in XlibInt.c and XLockDis.c */
+ void (*lock_wait)(
+ Display* /* dpy */
+ );
+ void (*user_lock_display)(
+ Display* /* dpy */
+ );
+ void (*user_unlock_display)(
+ Display* /* dpy */
+ );
+ struct _XCVList *(*create_cvl)(
+ Display * /* dpy */
+ );
+};
+
+#define UnlockNextEventReader(d) if ((d)->lock) \
+ (*(d)->lock->pop_reader)((d),&(d)->lock->event_awaiters,&(d)->lock->event_awaiters_tail)
+
+#if defined(XTHREADS_WARN) || defined(XTHREADS_FILE_LINE)
+#define ConditionWait(d,c) if ((d)->lock) \
+ (*(d)->lock->condition_wait)(c, (d)->lock->mutex,__FILE__,__LINE__)
+#define ConditionSignal(d,c) if ((d)->lock) \
+ (*(d)->lock->condition_signal)(c,__FILE__,__LINE__)
+#define ConditionBroadcast(d,c) if ((d)->lock) \
+ (*(d)->lock->condition_broadcast)(c,__FILE__,__LINE__)
+#else
+#define ConditionWait(d,c) if ((d)->lock) \
+ (*(d)->lock->condition_wait)(c, (d)->lock->mutex)
+#define ConditionSignal(d,c) if ((d)->lock) \
+ (*(d)->lock->condition_signal)(c)
+#define ConditionBroadcast(d,c) if ((d)->lock) \
+ (*(d)->lock->condition_broadcast)(c)
+#endif
+
+typedef struct _LockInfoRec {
+ xmutex_t lock;
+} LockInfoRec;
+
+/* XOpenDis.c */
+extern int (*_XInitDisplayLock_fn)(Display *dpy);
+extern void (*_XFreeDisplayLock_fn)(Display *dpy);
+
+#endif /* _X_locking_H_ */
diff --git a/libX11/src/os2Stubs.c b/libX11/src/os2Stubs.c
index f1408095c..ee09cb5fe 100644
--- a/libX11/src/os2Stubs.c
+++ b/libX11/src/os2Stubs.c
@@ -1,428 +1,428 @@
-/*
- * (c) Copyright 1996 by Sebastien Marineau and Holger Veit
- * <marineau@genie.uottawa.ca>
- * <Holger.Veit@gmd.de>
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * HOLGER VEIT BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
- * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF
- * OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- *
- * Except as contained in this notice, the name of Sebastien Marineau or Holger Veit
- * shall not be used in advertising or otherwise to promote the sale, use or other
- * dealings in this Software without prior written authorization from Holger Veit or
- * Sebastien Marineau.
- *
- */
-
-
-/* A few OS/2 functions needed in the X11 lib. Mainly, the file path redirection
- * functions and the "optimized" select() for the clients */
-
-#define I_NEED_OS2_H
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include <X11/Xpoll.h>
-#include <stdio.h>
-#include <sys/errno.h>
-#define INCL_DOSSEMAPHORES
-#define INCL_DOSNPIPES
-#define INCL_DOSMISC
-#define INCL_DOSMODULEMGR
-#undef BOOL
-#undef BYTE
-#include <os2.h>
-#include <sys/select.h>
-#include <sys/time.h>
-
-char *__XOS2RedirRoot(char *fname)
-{
- /* This adds a further redirection by allowing the ProjectRoot
- * to be prepended by the content of the envvar X11ROOT.
- * This is for the purpose to move the whole X11 stuff to a different
- * disk drive.
- * The feature was added despite various environment variables
- * because not all file opens respect them.
- */
- static char redirname[300]; /* enough for long filenames */
- char *root;
-
- /* if name does not start with /, assume it is not root-based */
- if (fname==0 || !(fname[0]=='/' || fname[0]=='\\'))
- return fname;
-
- root = (char*)getenv("X11ROOT");
- if (root==0 ||
- (fname[1]==':' && isalpha(fname[0])) ||
- (strlen(fname)+strlen(root)+2) > 300)
- return fname;
- sprintf(redirname,"%s%s",root,fname);
- return redirname;
-}
-
-char *__XOS2RedirRoot1(char *format, char *arg1, char *arg2, char *arg3)
-{
- /* this first constructs a name from a format and up to three
- * components, then adds a path
- */
- char buf[300];
- sprintf(buf,format,arg1,arg2,arg3);
- return __XOS2RedirRoot(buf);
-}
-
-/* This below implements select() for the calls in this file. It has been */
-/* somewhat optimized for improved performance, but assumes a few */
-/* things so it cannot be used as a general select. If both pipes and */
-/* sockets are present, this may call the emx select */
-
-
-HEV hPipeSem;
-HMODULE hmod_so32dll;
-static int (*os2_tcp_select)(int*,int,int,int,long);
-ULONG os2_get_sys_millis();
-extern int _files[];
-
-#define MAX_TCP 256
-/* These lifted from sys/emx.h. Change if that changes there! */
-#define F_SOCKET 0x10000000
-#define F_PIPE 0x20000000
-
-struct select_data
-{
- fd_set read_copy;
- fd_set write_copy;
- BOOL have_read;
- BOOL have_write;
- int tcp_select_mask[MAX_TCP];
- int tcp_emx_handles[MAX_TCP];
- int tcp_select_copy[MAX_TCP];
- int socket_nread;
- int socket_nwrite;
- int socket_ntotal;
- int pipe_ntotal;
- int pipe_have_write;
- int max_fds;
-};
-
-int os2ClientSelect(int nfds, fd_set *readfds, fd_set *writefds,
- fd_set *exceptfds, struct timeval *timeout)
-{
-static BOOL FirstTime=TRUE;
-static haveTCPIP=TRUE;
-ULONG timeout_ms;
-ULONG postCount, start_millis,now_millis;
-char faildata[16];
-struct select_data sd;
-BOOL any_ready;
-int np,ns, i,ready_handles,n;
-APIRET rc;
-
-sd.have_read=FALSE; sd.have_write=FALSE;
-sd.socket_nread=0; sd.socket_nwrite=0; sd.socket_ntotal=0;
-sd.max_fds=31; ready_handles=0; any_ready=FALSE;
-sd.pipe_ntotal=0; sd.pipe_have_write=FALSE;
-
-if(FirstTime){
- /* First load the so32dll.dll module and get a pointer to the SELECT fn */
-
- if((rc=DosLoadModule(faildata,sizeof(faildata),"SO32DLL",&hmod_so32dll))!=0){
- fprintf(stderr, "Could not load module so32dll.dll, rc = %d. Error note %s\n",rc,faildata);
- haveTCPIP=FALSE;
- }
- if((rc = DosQueryProcAddr(hmod_so32dll, 0, "SELECT", (PPFN)&os2_tcp_select))!=0){
- fprintf(stderr, "Could not query address of SELECT, rc = %d.\n",rc);
- haveTCPIP=FALSE;
- }
- /* Call these a first time to set the semaphore */
- rc = DosCreateEventSem(NULL, &hPipeSem, DC_SEM_SHARED, FALSE);
- if(rc) {
- fprintf(stderr, "Could not create event semaphore, rc=%d\n",rc);
- return(-1);
- }
- rc = DosResetEventSem(hPipeSem, &postCount);
- FirstTime = FALSE;
-}
-
-/* Set up the time delay structs */
-
- if(timeout!=NULL) {
- timeout_ms=timeout->tv_sec*1000+timeout->tv_usec/1000;
- }
- else { timeout_ms=1000000; } /* This should be large enough... */
- if(timeout_ms>0) start_millis=os2_get_sys_millis();
-
-/* Copy the masks */
- {FD_ZERO(&sd.read_copy);}
- {FD_ZERO(&sd.write_copy);}
- if(readfds!=NULL){ XFD_COPYSET(readfds,&sd.read_copy); sd.have_read=TRUE;}
- if(writefds!=NULL) {XFD_COPYSET(writefds,&sd.write_copy);sd.have_write=TRUE;}
-
-/* And zero the original masks */
- if(sd.have_read){ FD_ZERO(readfds);}
- if(sd.have_write) {FD_ZERO(writefds);}
- if(exceptfds != NULL) {FD_ZERO(exceptfds);}
-
-/* Now we parse the fd_sets passed to select and separate pipe/sockets */
- n = os2_parse_select(&sd,nfds);
- if(n == -1) {
- errno = EBADF;
- return (-1);
- }
-
-/* Now we have three cases: either we have sockets, pipes, or both */
-/* We handle all three cases differently to optimize things */
-
-/* Case 1: only pipes! */
- if((sd.pipe_ntotal >0) && (!sd.socket_ntotal)){
- np = os2_check_pipes(&sd,readfds,writefds);
- if(np > 0){
- return (np);
- }
- else if (np == -1) { return(-1); }
- while(!any_ready){
- rc = DosWaitEventSem(hPipeSem, timeout_ms);
- if(rc == 640) {
- return(0);
- }
- if((rc != 0) && (rc != 95)) {errno= EBADF; return(-1);}
- np = os2_check_pipes(&sd,readfds,writefds);
- if (np > 0){
- return(np);
- }
- else if (np < 0){ return(-1); }
- }
- }
-
-/* Case 2: only sockets. Just let the os/2 tcp select do the work */
- if((sd.socket_ntotal > 0) && (!sd.pipe_ntotal)){
- ns = os2_check_sockets(&sd, readfds, writefds, timeout_ms);
- return (ns);
- }
-
-/* Case 3: combination of both */
- if((sd.socket_ntotal > 0) && (sd.pipe_ntotal)){
- np = os2_check_pipes(&sd,readfds,writefds);
- if(np > 0){
- any_ready=TRUE;
- ready_handles += np;
- }
- else if (np == -1) { return(-1); }
-
- ns = os2_check_sockets(&sd,readfds,writefds, 0);
- if(ns>0){
- ready_handles+=ns;
- any_ready = TRUE;
- }
- else if (ns == -1) {return(-1);}
-
- while (!any_ready && timeout_ms){
-
- rc = DosWaitEventSem(hPipeSem, 10L);
- if(rc == 0){
- np = os2_check_pipes(&sd,readfds,writefds);
- if(np > 0){
- ready_handles+=np;
- any_ready = TRUE;
- }
- else if (np == -1) {
- return(-1); }
- }
-
- ns = os2_check_sockets(&sd,readfds,writefds,exceptfds, 0);
- if(ns>0){
- ready_handles+=ns;
- any_ready = TRUE;
- }
- else if (ns == -1) {return(-1);}
-
- if (i%8 == 0) {
- now_millis = os2_get_sys_millis();
- if((now_millis-start_millis) > timeout_ms) timeout_ms = 0;
- }
- i++;
- }
- }
-
-return(ready_handles);
-}
-
-
-ULONG os2_get_sys_millis()
-{
- APIRET rc;
- ULONG milli;
-
- rc = DosQuerySysInfo(14, 14, &milli, sizeof(milli));
- if(rc) {
- fprintf(stderr,"Bad return code querying the millisecond counter! rc=%d\n",rc);
- return(0);
- }
- return(milli);
-}
-
-int os2_parse_select(sd,nfds)
-struct select_data *sd;
-int nfds;
-{
- int i;
- APIRET rc;
-/* First we determine up to which descriptor we need to check. */
-/* No need to check up to 256 if we don't have to (and usually we dont...)*/
-/* Note: stuff here is hardcoded for fd_sets which are int[8] as in EMX!!! */
-
- if(nfds > sd->max_fds){
- for(i=0;i<((FD_SETSIZE+31)/32);i++){
- if(sd->read_copy.fds_bits[i] ||
- sd->write_copy.fds_bits[i])
- sd->max_fds=(i*32) +32;
- }
- }
- else { sd->max_fds = nfds; }
-/* Check if result is greater than specified in select() call */
- if(sd->max_fds > nfds) sd->max_fds = nfds;
-
- if (sd->have_read)
- {
- for (i = 0; i < sd->max_fds; ++i) {
- if (FD_ISSET (i, &sd->read_copy)){
- if(_files[i] & F_SOCKET)
- {
- sd->tcp_select_mask[sd->socket_ntotal]=_getsockhandle(i);
- sd->tcp_emx_handles[sd->socket_ntotal]=i;
- sd->socket_ntotal++; sd->socket_nread++;
- }
- else if (_files[i] & F_PIPE)
- {
- sd -> pipe_ntotal++;
- rc = DosSetNPipeSem((HPIPE)i, (HSEM) hPipeSem, i);
- if(rc) { fprintf(stderr,"Error SETNPIPE rc = %d\n",rc); return -1;}
- }
- }
- }
- }
-
- if (sd->have_write)
- {
- for (i = 0; i < sd->max_fds; ++i) {
- if (FD_ISSET (i, &sd->write_copy)){
- if(_files[i] & F_SOCKET)
- {
- sd->tcp_select_mask[sd->socket_ntotal]=_getsockhandle(i);
- sd->tcp_emx_handles[sd->socket_ntotal]=i;
- sd->socket_ntotal++; sd->socket_nwrite++;
- }
- else if (_files[i] & F_PIPE)
- {
- sd -> pipe_ntotal++;
- rc = DosSetNPipeSem((HPIPE)i, (HSEM) hPipeSem, i);
- if(rc) { fprintf(stderr,"Error SETNPIPE rc = %d\n",rc); return -1;}
- sd -> pipe_have_write=TRUE;
- }
- }
- }
- }
-
-
-return(sd->socket_ntotal);
-}
-
-
-int os2_check_sockets(sd,readfds,writefds)
-struct select_data *sd;
-fd_set *readfds,*writefds;
-{
- int e,i;
- int j,n;
- memcpy(sd->tcp_select_copy,sd->tcp_select_mask,
- sd->socket_ntotal*sizeof(int));
-
- e = os2_tcp_select(sd->tcp_select_copy,sd->socket_nread,
- sd->socket_nwrite, 0, 0);
-
- if(e == 0) return(e);
-/* We have something ready? */
- if(e>0){
- j = 0; n = 0;
- for (i = 0; i < sd->socket_nread; ++i, ++j)
- if (sd->tcp_select_copy[j] != -1)
- {
- FD_SET (sd->tcp_emx_handles[j], readfds);
- n ++;
- }
- for (i = 0; i < sd->socket_nwrite; ++i, ++j)
- if (sd->tcp_select_copy[j] != -1)
- {
- FD_SET (sd->tcp_emx_handles[j], writefds);
- n ++;
- }
- errno = 0;
-
- return n;
- }
- if(e<0){
- /*Error -- TODO */
- fprintf(stderr,"Error in server select! e=%d\n",e);
- errno = EBADF;
- return (-1);
- }
- }
-
-/* Check to see if anything is ready on pipes */
-
-int os2_check_pipes(sd,readfds,writefds)
-struct select_data *sd;
-fd_set *readfds,*writefds;
-{
-int i,e;
-ULONG ulPostCount;
-PIPESEMSTATE pipeSemState[128];
-APIRET rc;
- e = 0;
- rc = DosResetEventSem(hPipeSem,&ulPostCount);
- rc = DosQueryNPipeSemState((HSEM) hPipeSem, (PPIPESEMSTATE)&pipeSemState,
- sizeof(pipeSemState));
- if(rc) fprintf(stderr,"SELECT: rc from QueryNPipeSem: %d\n",rc);
- i=0;
- while (pipeSemState[i].fStatus != 0) {
- /*fprintf(stderr,"SELECT: sem entry, stat=%d, flag=%d, key=%d,avail=%d\n",
- pipeSemState[i].fStatus,pipeSemState[i].fFlag,pipeSemState[i].usKey,
- pipeSemState[i].usAvail); */
- if((pipeSemState[i].fStatus == 1) &&
- (FD_ISSET(pipeSemState[i].usKey,&sd->read_copy))){
- FD_SET(pipeSemState[i].usKey,readfds);
- e++;
- }
- else if((pipeSemState[i].fStatus == 2) &&
- (FD_ISSET(pipeSemState[i].usKey,&sd->write_copy))){
- FD_SET(pipeSemState[i].usKey,writefds);
- e++;
- }
- else if( (pipeSemState[i].fStatus == 3) &&
- ( (FD_ISSET(pipeSemState[i].usKey,&sd->read_copy)) ||
- (FD_ISSET(pipeSemState[i].usKey,&sd->write_copy)) )){
- errno = EBADF;
- return (-1);
- }
- i++;
- } /* endwhile */
- /*fprintf(stderr,"Done listing pipe sem entries, total %d entries, total ready entries %d\n",i,e);*/
-errno = 0;
-return(e);
-}
-
-
-
+/*
+ * (c) Copyright 1996 by Sebastien Marineau and Holger Veit
+ * <marineau@genie.uottawa.ca>
+ * <Holger.Veit@gmd.de>
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+ * HOLGER VEIT BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+ * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF
+ * OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ *
+ * Except as contained in this notice, the name of Sebastien Marineau or Holger Veit
+ * shall not be used in advertising or otherwise to promote the sale, use or other
+ * dealings in this Software without prior written authorization from Holger Veit or
+ * Sebastien Marineau.
+ *
+ */
+
+
+/* A few OS/2 functions needed in the X11 lib. Mainly, the file path redirection
+ * functions and the "optimized" select() for the clients */
+
+#define I_NEED_OS2_H
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include <X11/Xpoll.h>
+#include <stdio.h>
+#include <sys/errno.h>
+#define INCL_DOSSEMAPHORES
+#define INCL_DOSNPIPES
+#define INCL_DOSMISC
+#define INCL_DOSMODULEMGR
+#undef BOOL
+#undef BYTE
+#include <os2.h>
+#include <sys/select.h>
+#include <sys/time.h>
+
+char *__XOS2RedirRoot(char *fname)
+{
+ /* This adds a further redirection by allowing the ProjectRoot
+ * to be prepended by the content of the envvar X11ROOT.
+ * This is for the purpose to move the whole X11 stuff to a different
+ * disk drive.
+ * The feature was added despite various environment variables
+ * because not all file opens respect them.
+ */
+ static char redirname[300]; /* enough for long filenames */
+ char *root;
+
+ /* if name does not start with /, assume it is not root-based */
+ if (fname==0 || !(fname[0]=='/' || fname[0]=='\\'))
+ return fname;
+
+ root = (char*)getenv("X11ROOT");
+ if (root==0 ||
+ (fname[1]==':' && isalpha(fname[0])) ||
+ (strlen(fname)+strlen(root)+2) > 300)
+ return fname;
+ sprintf(redirname,"%s%s",root,fname);
+ return redirname;
+}
+
+char *__XOS2RedirRoot1(char *format, char *arg1, char *arg2, char *arg3)
+{
+ /* this first constructs a name from a format and up to three
+ * components, then adds a path
+ */
+ char buf[300];
+ sprintf(buf,format,arg1,arg2,arg3);
+ return __XOS2RedirRoot(buf);
+}
+
+/* This below implements select() for the calls in this file. It has been */
+/* somewhat optimized for improved performance, but assumes a few */
+/* things so it cannot be used as a general select. If both pipes and */
+/* sockets are present, this may call the emx select */
+
+
+HEV hPipeSem;
+HMODULE hmod_so32dll;
+static int (*os2_tcp_select)(int*,int,int,int,long);
+ULONG os2_get_sys_millis();
+extern int _files[];
+
+#define MAX_TCP 256
+/* These lifted from sys/emx.h. Change if that changes there! */
+#define F_SOCKET 0x10000000
+#define F_PIPE 0x20000000
+
+struct select_data
+{
+ fd_set read_copy;
+ fd_set write_copy;
+ BOOL have_read;
+ BOOL have_write;
+ int tcp_select_mask[MAX_TCP];
+ int tcp_emx_handles[MAX_TCP];
+ int tcp_select_copy[MAX_TCP];
+ int socket_nread;
+ int socket_nwrite;
+ int socket_ntotal;
+ int pipe_ntotal;
+ int pipe_have_write;
+ int max_fds;
+};
+
+int os2ClientSelect(int nfds, fd_set *readfds, fd_set *writefds,
+ fd_set *exceptfds, struct timeval *timeout)
+{
+static BOOL FirstTime=TRUE;
+static haveTCPIP=TRUE;
+ULONG timeout_ms;
+ULONG postCount, start_millis,now_millis;
+char faildata[16];
+struct select_data sd;
+BOOL any_ready;
+int np,ns, i,ready_handles,n;
+APIRET rc;
+
+sd.have_read=FALSE; sd.have_write=FALSE;
+sd.socket_nread=0; sd.socket_nwrite=0; sd.socket_ntotal=0;
+sd.max_fds=31; ready_handles=0; any_ready=FALSE;
+sd.pipe_ntotal=0; sd.pipe_have_write=FALSE;
+
+if(FirstTime){
+ /* First load the so32dll.dll module and get a pointer to the SELECT fn */
+
+ if((rc=DosLoadModule(faildata,sizeof(faildata),"SO32DLL",&hmod_so32dll))!=0){
+ fprintf(stderr, "Could not load module so32dll.dll, rc = %d. Error note %s\n",rc,faildata);
+ haveTCPIP=FALSE;
+ }
+ if((rc = DosQueryProcAddr(hmod_so32dll, 0, "SELECT", (PPFN)&os2_tcp_select))!=0){
+ fprintf(stderr, "Could not query address of SELECT, rc = %d.\n",rc);
+ haveTCPIP=FALSE;
+ }
+ /* Call these a first time to set the semaphore */
+ rc = DosCreateEventSem(NULL, &hPipeSem, DC_SEM_SHARED, FALSE);
+ if(rc) {
+ fprintf(stderr, "Could not create event semaphore, rc=%d\n",rc);
+ return(-1);
+ }
+ rc = DosResetEventSem(hPipeSem, &postCount);
+ FirstTime = FALSE;
+}
+
+/* Set up the time delay structs */
+
+ if(timeout!=NULL) {
+ timeout_ms=timeout->tv_sec*1000+timeout->tv_usec/1000;
+ }
+ else { timeout_ms=1000000; } /* This should be large enough... */
+ if(timeout_ms>0) start_millis=os2_get_sys_millis();
+
+/* Copy the masks */
+ {FD_ZERO(&sd.read_copy);}
+ {FD_ZERO(&sd.write_copy);}
+ if(readfds!=NULL){ XFD_COPYSET(readfds,&sd.read_copy); sd.have_read=TRUE;}
+ if(writefds!=NULL) {XFD_COPYSET(writefds,&sd.write_copy);sd.have_write=TRUE;}
+
+/* And zero the original masks */
+ if(sd.have_read){ FD_ZERO(readfds);}
+ if(sd.have_write) {FD_ZERO(writefds);}
+ if(exceptfds != NULL) {FD_ZERO(exceptfds);}
+
+/* Now we parse the fd_sets passed to select and separate pipe/sockets */
+ n = os2_parse_select(&sd,nfds);
+ if(n == -1) {
+ errno = EBADF;
+ return (-1);
+ }
+
+/* Now we have three cases: either we have sockets, pipes, or both */
+/* We handle all three cases differently to optimize things */
+
+/* Case 1: only pipes! */
+ if((sd.pipe_ntotal >0) && (!sd.socket_ntotal)){
+ np = os2_check_pipes(&sd,readfds,writefds);
+ if(np > 0){
+ return (np);
+ }
+ else if (np == -1) { return(-1); }
+ while(!any_ready){
+ rc = DosWaitEventSem(hPipeSem, timeout_ms);
+ if(rc == 640) {
+ return(0);
+ }
+ if((rc != 0) && (rc != 95)) {errno= EBADF; return(-1);}
+ np = os2_check_pipes(&sd,readfds,writefds);
+ if (np > 0){
+ return(np);
+ }
+ else if (np < 0){ return(-1); }
+ }
+ }
+
+/* Case 2: only sockets. Just let the os/2 tcp select do the work */
+ if((sd.socket_ntotal > 0) && (!sd.pipe_ntotal)){
+ ns = os2_check_sockets(&sd, readfds, writefds, timeout_ms);
+ return (ns);
+ }
+
+/* Case 3: combination of both */
+ if((sd.socket_ntotal > 0) && (sd.pipe_ntotal)){
+ np = os2_check_pipes(&sd,readfds,writefds);
+ if(np > 0){
+ any_ready=TRUE;
+ ready_handles += np;
+ }
+ else if (np == -1) { return(-1); }
+
+ ns = os2_check_sockets(&sd,readfds,writefds, 0);
+ if(ns>0){
+ ready_handles+=ns;
+ any_ready = TRUE;
+ }
+ else if (ns == -1) {return(-1);}
+
+ while (!any_ready && timeout_ms){
+
+ rc = DosWaitEventSem(hPipeSem, 10L);
+ if(rc == 0){
+ np = os2_check_pipes(&sd,readfds,writefds);
+ if(np > 0){
+ ready_handles+=np;
+ any_ready = TRUE;
+ }
+ else if (np == -1) {
+ return(-1); }
+ }
+
+ ns = os2_check_sockets(&sd,readfds,writefds,exceptfds, 0);
+ if(ns>0){
+ ready_handles+=ns;
+ any_ready = TRUE;
+ }
+ else if (ns == -1) {return(-1);}
+
+ if (i%8 == 0) {
+ now_millis = os2_get_sys_millis();
+ if((now_millis-start_millis) > timeout_ms) timeout_ms = 0;
+ }
+ i++;
+ }
+ }
+
+return(ready_handles);
+}
+
+
+ULONG os2_get_sys_millis()
+{
+ APIRET rc;
+ ULONG milli;
+
+ rc = DosQuerySysInfo(14, 14, &milli, sizeof(milli));
+ if(rc) {
+ fprintf(stderr,"Bad return code querying the millisecond counter! rc=%d\n",rc);
+ return(0);
+ }
+ return(milli);
+}
+
+int os2_parse_select(sd,nfds)
+struct select_data *sd;
+int nfds;
+{
+ int i;
+ APIRET rc;
+/* First we determine up to which descriptor we need to check. */
+/* No need to check up to 256 if we don't have to (and usually we dont...)*/
+/* Note: stuff here is hardcoded for fd_sets which are int[8] as in EMX!!! */
+
+ if(nfds > sd->max_fds){
+ for(i=0;i<((FD_SETSIZE+31)/32);i++){
+ if(sd->read_copy.fds_bits[i] ||
+ sd->write_copy.fds_bits[i])
+ sd->max_fds=(i*32) +32;
+ }
+ }
+ else { sd->max_fds = nfds; }
+/* Check if result is greater than specified in select() call */
+ if(sd->max_fds > nfds) sd->max_fds = nfds;
+
+ if (sd->have_read)
+ {
+ for (i = 0; i < sd->max_fds; ++i) {
+ if (FD_ISSET (i, &sd->read_copy)){
+ if(_files[i] & F_SOCKET)
+ {
+ sd->tcp_select_mask[sd->socket_ntotal]=_getsockhandle(i);
+ sd->tcp_emx_handles[sd->socket_ntotal]=i;
+ sd->socket_ntotal++; sd->socket_nread++;
+ }
+ else if (_files[i] & F_PIPE)
+ {
+ sd -> pipe_ntotal++;
+ rc = DosSetNPipeSem((HPIPE)i, (HSEM) hPipeSem, i);
+ if(rc) { fprintf(stderr,"Error SETNPIPE rc = %d\n",rc); return -1;}
+ }
+ }
+ }
+ }
+
+ if (sd->have_write)
+ {
+ for (i = 0; i < sd->max_fds; ++i) {
+ if (FD_ISSET (i, &sd->write_copy)){
+ if(_files[i] & F_SOCKET)
+ {
+ sd->tcp_select_mask[sd->socket_ntotal]=_getsockhandle(i);
+ sd->tcp_emx_handles[sd->socket_ntotal]=i;
+ sd->socket_ntotal++; sd->socket_nwrite++;
+ }
+ else if (_files[i] & F_PIPE)
+ {
+ sd -> pipe_ntotal++;
+ rc = DosSetNPipeSem((HPIPE)i, (HSEM) hPipeSem, i);
+ if(rc) { fprintf(stderr,"Error SETNPIPE rc = %d\n",rc); return -1;}
+ sd -> pipe_have_write=TRUE;
+ }
+ }
+ }
+ }
+
+
+return(sd->socket_ntotal);
+}
+
+
+int os2_check_sockets(sd,readfds,writefds)
+struct select_data *sd;
+fd_set *readfds,*writefds;
+{
+ int e,i;
+ int j,n;
+ memcpy(sd->tcp_select_copy,sd->tcp_select_mask,
+ sd->socket_ntotal*sizeof(int));
+
+ e = os2_tcp_select(sd->tcp_select_copy,sd->socket_nread,
+ sd->socket_nwrite, 0, 0);
+
+ if(e == 0) return(e);
+/* We have something ready? */
+ if(e>0){
+ j = 0; n = 0;
+ for (i = 0; i < sd->socket_nread; ++i, ++j)
+ if (sd->tcp_select_copy[j] != -1)
+ {
+ FD_SET (sd->tcp_emx_handles[j], readfds);
+ n ++;
+ }
+ for (i = 0; i < sd->socket_nwrite; ++i, ++j)
+ if (sd->tcp_select_copy[j] != -1)
+ {
+ FD_SET (sd->tcp_emx_handles[j], writefds);
+ n ++;
+ }
+ errno = 0;
+
+ return n;
+ }
+ if(e<0){
+ /*Error -- TODO */
+ fprintf(stderr,"Error in server select! e=%d\n",e);
+ errno = EBADF;
+ return (-1);
+ }
+ }
+
+/* Check to see if anything is ready on pipes */
+
+int os2_check_pipes(sd,readfds,writefds)
+struct select_data *sd;
+fd_set *readfds,*writefds;
+{
+int i,e;
+ULONG ulPostCount;
+PIPESEMSTATE pipeSemState[128];
+APIRET rc;
+ e = 0;
+ rc = DosResetEventSem(hPipeSem,&ulPostCount);
+ rc = DosQueryNPipeSemState((HSEM) hPipeSem, (PPIPESEMSTATE)&pipeSemState,
+ sizeof(pipeSemState));
+ if(rc) fprintf(stderr,"SELECT: rc from QueryNPipeSem: %d\n",rc);
+ i=0;
+ while (pipeSemState[i].fStatus != 0) {
+ /*fprintf(stderr,"SELECT: sem entry, stat=%d, flag=%d, key=%d,avail=%d\n",
+ pipeSemState[i].fStatus,pipeSemState[i].fFlag,pipeSemState[i].usKey,
+ pipeSemState[i].usAvail); */
+ if((pipeSemState[i].fStatus == 1) &&
+ (FD_ISSET(pipeSemState[i].usKey,&sd->read_copy))){
+ FD_SET(pipeSemState[i].usKey,readfds);
+ e++;
+ }
+ else if((pipeSemState[i].fStatus == 2) &&
+ (FD_ISSET(pipeSemState[i].usKey,&sd->write_copy))){
+ FD_SET(pipeSemState[i].usKey,writefds);
+ e++;
+ }
+ else if( (pipeSemState[i].fStatus == 3) &&
+ ( (FD_ISSET(pipeSemState[i].usKey,&sd->read_copy)) ||
+ (FD_ISSET(pipeSemState[i].usKey,&sd->write_copy)) )){
+ errno = EBADF;
+ return (-1);
+ }
+ i++;
+ } /* endwhile */
+ /*fprintf(stderr,"Done listing pipe sem entries, total %d entries, total ready entries %d\n",i,e);*/
+errno = 0;
+return(e);
+}
+
+
+
diff --git a/libX11/src/poly.h b/libX11/src/poly.h
index 1a5163d48..e064783d7 100644
--- a/libX11/src/poly.h
+++ b/libX11/src/poly.h
@@ -1,294 +1,294 @@
-/************************************************************************
-
-Copyright 1987, 1998 The Open Group
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall not be
-used in advertising or otherwise to promote the sale, use or other dealings
-in this Software without prior written authorization from The Open Group.
-
-
-Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts.
-
- All Rights Reserved
-
-Permission to use, copy, modify, and distribute this software and its
-documentation for any purpose and without fee is hereby granted,
-provided that the above copyright notice appear in all copies and that
-both that copyright notice and this permission notice appear in
-supporting documentation, and that the name of Digital not be
-used in advertising or publicity pertaining to distribution of the
-software without specific, written prior permission.
-
-DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
-ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
-DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
-ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
-WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
-ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
-SOFTWARE.
-
-************************************************************************/
-
-/*
- * This file contains a few macros to help track
- * the edge of a filled object. The object is assumed
- * to be filled in scanline order, and thus the
- * algorithm used is an extension of Bresenham's line
- * drawing algorithm which assumes that y is always the
- * major axis.
- * Since these pieces of code are the same for any filled shape,
- * it is more convenient to gather the library in one
- * place, but since these pieces of code are also in
- * the inner loops of output primitives, procedure call
- * overhead is out of the question.
- * See the author for a derivation if needed.
- */
-
-
-/*
- * In scan converting polygons, we want to choose those pixels
- * which are inside the polygon. Thus, we add .5 to the starting
- * x coordinate for both left and right edges. Now we choose the
- * first pixel which is inside the pgon for the left edge and the
- * first pixel which is outside the pgon for the right edge.
- * Draw the left pixel, but not the right.
- *
- * How to add .5 to the starting x coordinate:
- * If the edge is moving to the right, then subtract dy from the
- * error term from the general form of the algorithm.
- * If the edge is moving to the left, then add dy to the error term.
- *
- * The reason for the difference between edges moving to the left
- * and edges moving to the right is simple: If an edge is moving
- * to the right, then we want the algorithm to flip immediately.
- * If it is moving to the left, then we don't want it to flip until
- * we traverse an entire pixel.
- */
-#define BRESINITPGON(dy, x1, x2, xStart, d, m, m1, incr1, incr2) { \
- int dx; /* local storage */ \
-\
- /* \
- * if the edge is horizontal, then it is ignored \
- * and assumed not to be processed. Otherwise, do this stuff. \
- */ \
- if ((dy) != 0) { \
- xStart = (x1); \
- dx = (x2) - xStart; \
- if (dx < 0) { \
- m = dx / (dy); \
- m1 = m - 1; \
- incr1 = -2 * dx + 2 * (dy) * m1; \
- incr2 = -2 * dx + 2 * (dy) * m; \
- d = 2 * m * (dy) - 2 * dx - 2 * (dy); \
- } else { \
- m = dx / (dy); \
- m1 = m + 1; \
- incr1 = 2 * dx - 2 * (dy) * m1; \
- incr2 = 2 * dx - 2 * (dy) * m; \
- d = -2 * m * (dy) + 2 * dx; \
- } \
- } \
-}
-
-#define BRESINCRPGON(d, minval, m, m1, incr1, incr2) { \
- if (m1 > 0) { \
- if (d > 0) { \
- minval += m1; \
- d += incr1; \
- } \
- else { \
- minval += m; \
- d += incr2; \
- } \
- } else {\
- if (d >= 0) { \
- minval += m1; \
- d += incr1; \
- } \
- else { \
- minval += m; \
- d += incr2; \
- } \
- } \
-}
-
-
-/*
- * This structure contains all of the information needed
- * to run the bresenham algorithm.
- * The variables may be hardcoded into the declarations
- * instead of using this structure to make use of
- * register declarations.
- */
-typedef struct {
- int minor_axis; /* minor axis */
- int d; /* decision variable */
- int m, m1; /* slope and slope+1 */
- int incr1, incr2; /* error increments */
-} BRESINFO;
-
-
-#define BRESINITPGONSTRUCT(dmaj, min1, min2, bres) \
- BRESINITPGON(dmaj, min1, min2, bres.minor_axis, bres.d, \
- bres.m, bres.m1, bres.incr1, bres.incr2)
-
-#define BRESINCRPGONSTRUCT(bres) \
- BRESINCRPGON(bres.d, bres.minor_axis, bres.m, bres.m1, bres.incr1, bres.incr2)
-
-
-
-/*
- * These are the data structures needed to scan
- * convert regions. Two different scan conversion
- * methods are available -- the even-odd method, and
- * the winding number method.
- * The even-odd rule states that a point is inside
- * the polygon if a ray drawn from that point in any
- * direction will pass through an odd number of
- * path segments.
- * By the winding number rule, a point is decided
- * to be inside the polygon if a ray drawn from that
- * point in any direction passes through a different
- * number of clockwise and counter-clockwise path
- * segments.
- *
- * These data structures are adapted somewhat from
- * the algorithm in (Foley/Van Dam) for scan converting
- * polygons.
- * The basic algorithm is to start at the top (smallest y)
- * of the polygon, stepping down to the bottom of
- * the polygon by incrementing the y coordinate. We
- * keep a list of edges which the current scanline crosses,
- * sorted by x. This list is called the Active Edge Table (AET)
- * As we change the y-coordinate, we update each entry in
- * in the active edge table to reflect the edges new xcoord.
- * This list must be sorted at each scanline in case
- * two edges intersect.
- * We also keep a data structure known as the Edge Table (ET),
- * which keeps track of all the edges which the current
- * scanline has not yet reached. The ET is basically a
- * list of ScanLineList structures containing a list of
- * edges which are entered at a given scanline. There is one
- * ScanLineList per scanline at which an edge is entered.
- * When we enter a new edge, we move it from the ET to the AET.
- *
- * From the AET, we can implement the even-odd rule as in
- * (Foley/Van Dam).
- * The winding number rule is a little trickier. We also
- * keep the EdgeTableEntries in the AET linked by the
- * nextWETE (winding EdgeTableEntry) link. This allows
- * the edges to be linked just as before for updating
- * purposes, but only uses the edges linked by the nextWETE
- * link as edges representing spans of the polygon to
- * drawn (as with the even-odd rule).
- */
-
-/*
- * for the winding number rule
- */
-#define CLOCKWISE 1
-#define COUNTERCLOCKWISE -1
-
-typedef struct _EdgeTableEntry {
- int ymax; /* ycoord at which we exit this edge. */
- BRESINFO bres; /* Bresenham info to run the edge */
- struct _EdgeTableEntry *next; /* next in the list */
- struct _EdgeTableEntry *back; /* for insertion sort */
- struct _EdgeTableEntry *nextWETE; /* for winding num rule */
- int ClockWise; /* flag for winding number rule */
-} EdgeTableEntry;
-
-
-typedef struct _ScanLineList{
- int scanline; /* the scanline represented */
- EdgeTableEntry *edgelist; /* header node */
- struct _ScanLineList *next; /* next in the list */
-} ScanLineList;
-
-
-typedef struct {
- int ymax; /* ymax for the polygon */
- int ymin; /* ymin for the polygon */
- ScanLineList scanlines; /* header node */
-} EdgeTable;
-
-
-/*
- * Here is a struct to help with storage allocation
- * so we can allocate a big chunk at a time, and then take
- * pieces from this heap when we need to.
- */
-#define SLLSPERBLOCK 25
-
-typedef struct _ScanLineListBlock {
- ScanLineList SLLs[SLLSPERBLOCK];
- struct _ScanLineListBlock *next;
-} ScanLineListBlock;
-
-
-
-/*
- *
- * a few macros for the inner loops of the fill code where
- * performance considerations don't allow a procedure call.
- *
- * Evaluate the given edge at the given scanline.
- * If the edge has expired, then we leave it and fix up
- * the active edge table; otherwise, we increment the
- * x value to be ready for the next scanline.
- * The winding number rule is in effect, so we must notify
- * the caller when the edge has been removed so he
- * can reorder the Winding Active Edge Table.
- */
-#define EVALUATEEDGEWINDING(pAET, pPrevAET, y, fixWAET) { \
- if (pAET->ymax == y) { /* leaving this edge */ \
- pPrevAET->next = pAET->next; \
- pAET = pPrevAET->next; \
- fixWAET = 1; \
- if (pAET) \
- pAET->back = pPrevAET; \
- } \
- else { \
- BRESINCRPGONSTRUCT(pAET->bres); \
- pPrevAET = pAET; \
- pAET = pAET->next; \
- } \
-}
-
-
-/*
- * Evaluate the given edge at the given scanline.
- * If the edge has expired, then we leave it and fix up
- * the active edge table; otherwise, we increment the
- * x value to be ready for the next scanline.
- * The even-odd rule is in effect.
- */
-#define EVALUATEEDGEEVENODD(pAET, pPrevAET, y) { \
- if (pAET->ymax == y) { /* leaving this edge */ \
- pPrevAET->next = pAET->next; \
- pAET = pPrevAET->next; \
- if (pAET) \
- pAET->back = pPrevAET; \
- } \
- else { \
- BRESINCRPGONSTRUCT(pAET->bres); \
- pPrevAET = pAET; \
- pAET = pAET->next; \
- } \
-}
+/************************************************************************
+
+Copyright 1987, 1998 The Open Group
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group shall not be
+used in advertising or otherwise to promote the sale, use or other dealings
+in this Software without prior written authorization from The Open Group.
+
+
+Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts.
+
+ All Rights Reserved
+
+Permission to use, copy, modify, and distribute this software and its
+documentation for any purpose and without fee is hereby granted,
+provided that the above copyright notice appear in all copies and that
+both that copyright notice and this permission notice appear in
+supporting documentation, and that the name of Digital not be
+used in advertising or publicity pertaining to distribution of the
+software without specific, written prior permission.
+
+DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
+ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
+DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
+ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
+WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
+ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
+SOFTWARE.
+
+************************************************************************/
+
+/*
+ * This file contains a few macros to help track
+ * the edge of a filled object. The object is assumed
+ * to be filled in scanline order, and thus the
+ * algorithm used is an extension of Bresenham's line
+ * drawing algorithm which assumes that y is always the
+ * major axis.
+ * Since these pieces of code are the same for any filled shape,
+ * it is more convenient to gather the library in one
+ * place, but since these pieces of code are also in
+ * the inner loops of output primitives, procedure call
+ * overhead is out of the question.
+ * See the author for a derivation if needed.
+ */
+
+
+/*
+ * In scan converting polygons, we want to choose those pixels
+ * which are inside the polygon. Thus, we add .5 to the starting
+ * x coordinate for both left and right edges. Now we choose the
+ * first pixel which is inside the pgon for the left edge and the
+ * first pixel which is outside the pgon for the right edge.
+ * Draw the left pixel, but not the right.
+ *
+ * How to add .5 to the starting x coordinate:
+ * If the edge is moving to the right, then subtract dy from the
+ * error term from the general form of the algorithm.
+ * If the edge is moving to the left, then add dy to the error term.
+ *
+ * The reason for the difference between edges moving to the left
+ * and edges moving to the right is simple: If an edge is moving
+ * to the right, then we want the algorithm to flip immediately.
+ * If it is moving to the left, then we don't want it to flip until
+ * we traverse an entire pixel.
+ */
+#define BRESINITPGON(dy, x1, x2, xStart, d, m, m1, incr1, incr2) { \
+ int dx; /* local storage */ \
+\
+ /* \
+ * if the edge is horizontal, then it is ignored \
+ * and assumed not to be processed. Otherwise, do this stuff. \
+ */ \
+ if ((dy) != 0) { \
+ xStart = (x1); \
+ dx = (x2) - xStart; \
+ if (dx < 0) { \
+ m = dx / (dy); \
+ m1 = m - 1; \
+ incr1 = -2 * dx + 2 * (dy) * m1; \
+ incr2 = -2 * dx + 2 * (dy) * m; \
+ d = 2 * m * (dy) - 2 * dx - 2 * (dy); \
+ } else { \
+ m = dx / (dy); \
+ m1 = m + 1; \
+ incr1 = 2 * dx - 2 * (dy) * m1; \
+ incr2 = 2 * dx - 2 * (dy) * m; \
+ d = -2 * m * (dy) + 2 * dx; \
+ } \
+ } \
+}
+
+#define BRESINCRPGON(d, minval, m, m1, incr1, incr2) { \
+ if (m1 > 0) { \
+ if (d > 0) { \
+ minval += m1; \
+ d += incr1; \
+ } \
+ else { \
+ minval += m; \
+ d += incr2; \
+ } \
+ } else {\
+ if (d >= 0) { \
+ minval += m1; \
+ d += incr1; \
+ } \
+ else { \
+ minval += m; \
+ d += incr2; \
+ } \
+ } \
+}
+
+
+/*
+ * This structure contains all of the information needed
+ * to run the bresenham algorithm.
+ * The variables may be hardcoded into the declarations
+ * instead of using this structure to make use of
+ * register declarations.
+ */
+typedef struct {
+ int minor_axis; /* minor axis */
+ int d; /* decision variable */
+ int m, m1; /* slope and slope+1 */
+ int incr1, incr2; /* error increments */
+} BRESINFO;
+
+
+#define BRESINITPGONSTRUCT(dmaj, min1, min2, bres) \
+ BRESINITPGON(dmaj, min1, min2, bres.minor_axis, bres.d, \
+ bres.m, bres.m1, bres.incr1, bres.incr2)
+
+#define BRESINCRPGONSTRUCT(bres) \
+ BRESINCRPGON(bres.d, bres.minor_axis, bres.m, bres.m1, bres.incr1, bres.incr2)
+
+
+
+/*
+ * These are the data structures needed to scan
+ * convert regions. Two different scan conversion
+ * methods are available -- the even-odd method, and
+ * the winding number method.
+ * The even-odd rule states that a point is inside
+ * the polygon if a ray drawn from that point in any
+ * direction will pass through an odd number of
+ * path segments.
+ * By the winding number rule, a point is decided
+ * to be inside the polygon if a ray drawn from that
+ * point in any direction passes through a different
+ * number of clockwise and counter-clockwise path
+ * segments.
+ *
+ * These data structures are adapted somewhat from
+ * the algorithm in (Foley/Van Dam) for scan converting
+ * polygons.
+ * The basic algorithm is to start at the top (smallest y)
+ * of the polygon, stepping down to the bottom of
+ * the polygon by incrementing the y coordinate. We
+ * keep a list of edges which the current scanline crosses,
+ * sorted by x. This list is called the Active Edge Table (AET)
+ * As we change the y-coordinate, we update each entry in
+ * in the active edge table to reflect the edges new xcoord.
+ * This list must be sorted at each scanline in case
+ * two edges intersect.
+ * We also keep a data structure known as the Edge Table (ET),
+ * which keeps track of all the edges which the current
+ * scanline has not yet reached. The ET is basically a
+ * list of ScanLineList structures containing a list of
+ * edges which are entered at a given scanline. There is one
+ * ScanLineList per scanline at which an edge is entered.
+ * When we enter a new edge, we move it from the ET to the AET.
+ *
+ * From the AET, we can implement the even-odd rule as in
+ * (Foley/Van Dam).
+ * The winding number rule is a little trickier. We also
+ * keep the EdgeTableEntries in the AET linked by the
+ * nextWETE (winding EdgeTableEntry) link. This allows
+ * the edges to be linked just as before for updating
+ * purposes, but only uses the edges linked by the nextWETE
+ * link as edges representing spans of the polygon to
+ * drawn (as with the even-odd rule).
+ */
+
+/*
+ * for the winding number rule
+ */
+#define CLOCKWISE 1
+#define COUNTERCLOCKWISE -1
+
+typedef struct _EdgeTableEntry {
+ int ymax; /* ycoord at which we exit this edge. */
+ BRESINFO bres; /* Bresenham info to run the edge */
+ struct _EdgeTableEntry *next; /* next in the list */
+ struct _EdgeTableEntry *back; /* for insertion sort */
+ struct _EdgeTableEntry *nextWETE; /* for winding num rule */
+ int ClockWise; /* flag for winding number rule */
+} EdgeTableEntry;
+
+
+typedef struct _ScanLineList{
+ int scanline; /* the scanline represented */
+ EdgeTableEntry *edgelist; /* header node */
+ struct _ScanLineList *next; /* next in the list */
+} ScanLineList;
+
+
+typedef struct {
+ int ymax; /* ymax for the polygon */
+ int ymin; /* ymin for the polygon */
+ ScanLineList scanlines; /* header node */
+} EdgeTable;
+
+
+/*
+ * Here is a struct to help with storage allocation
+ * so we can allocate a big chunk at a time, and then take
+ * pieces from this heap when we need to.
+ */
+#define SLLSPERBLOCK 25
+
+typedef struct _ScanLineListBlock {
+ ScanLineList SLLs[SLLSPERBLOCK];
+ struct _ScanLineListBlock *next;
+} ScanLineListBlock;
+
+
+
+/*
+ *
+ * a few macros for the inner loops of the fill code where
+ * performance considerations don't allow a procedure call.
+ *
+ * Evaluate the given edge at the given scanline.
+ * If the edge has expired, then we leave it and fix up
+ * the active edge table; otherwise, we increment the
+ * x value to be ready for the next scanline.
+ * The winding number rule is in effect, so we must notify
+ * the caller when the edge has been removed so he
+ * can reorder the Winding Active Edge Table.
+ */
+#define EVALUATEEDGEWINDING(pAET, pPrevAET, y, fixWAET) { \
+ if (pAET->ymax == y) { /* leaving this edge */ \
+ pPrevAET->next = pAET->next; \
+ pAET = pPrevAET->next; \
+ fixWAET = 1; \
+ if (pAET) \
+ pAET->back = pPrevAET; \
+ } \
+ else { \
+ BRESINCRPGONSTRUCT(pAET->bres); \
+ pPrevAET = pAET; \
+ pAET = pAET->next; \
+ } \
+}
+
+
+/*
+ * Evaluate the given edge at the given scanline.
+ * If the edge has expired, then we leave it and fix up
+ * the active edge table; otherwise, we increment the
+ * x value to be ready for the next scanline.
+ * The even-odd rule is in effect.
+ */
+#define EVALUATEEDGEEVENODD(pAET, pPrevAET, y) { \
+ if (pAET->ymax == y) { /* leaving this edge */ \
+ pPrevAET->next = pAET->next; \
+ pAET = pPrevAET->next; \
+ if (pAET) \
+ pAET->back = pPrevAET; \
+ } \
+ else { \
+ BRESINCRPGONSTRUCT(pAET->bres); \
+ pPrevAET = pAET; \
+ pAET = pAET->next; \
+ } \
+}
diff --git a/libX11/src/udcInf.c b/libX11/src/udcInf.c
index 7eb18ea7e..db7ad10f3 100644
--- a/libX11/src/udcInf.c
+++ b/libX11/src/udcInf.c
@@ -1,716 +1,716 @@
-/*
-Copyright 1996, 1998 The Open Group
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
-
-The above copyright notice and this permission notice shall be included
-in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
-IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR
-OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
-ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall
-not be used in advertising or otherwise to promote the sale, use or
-other dealings in this Software without prior written authorization
-from The Open Group.
-*/
-/*
- * Copyright 1995 by FUJITSU LIMITED
- * This is source code modified by FUJITSU LIMITED under the Joint
- * Development Agreement for the CDE/Motif PST.
- *
- * Modifier: Takanori Tateno FUJITSU LIMITED
- *
- */
-
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include <stdio.h>
-#include <locale.h>
-#include <Xlib.h>
-#include <Xlibint.h>
-#include <Xlcint.h>
-#include <XlcPubI.h>
-#include <XlcGeneric.h>
-#include <XomGeneric.h>
-
-/*
- external symbols
-*/
-extern FontData read_EncodingInfo();
-extern int _xudc_get_codeset();
-
-extern int _xudc_utyderror ;
-extern int _xudc_utyerror ;
-
-extern unsigned long _xudc_utyerrno ;
-
-#define _XUDC_ERROR -1
-
-
-/*
- UDC structure define
-*/
-typedef struct __XUDCGlyphRegion {
- unsigned long start;
- unsigned long end;
-} _XUDCGlyphRegion ;
-
-/*
- * "code" no jyoui "i" byte me wo "unsigned char" toshite kaesu.
- */
-static unsigned char getbyte(code,i)
-unsigned long code;
-int i;
-{
- unsigned long byteL;
- unsigned char byte;
- byteL = code >> (8*(3-i));
- byte = (unsigned char)(0x000000ff & byteL);
- return(byte);
-}
-/*
- get codeset which described by charset_str and locale.
- for examples ...
- locale : ja_JP
- charset_str : JISX0208.1983-0
-*/
-
-_xudc_get_codeset(locale,charset_str,codeset,num_codeset)
-char *locale;
-char *charset_str;
-int **codeset;
-int *num_codeset;
-{
- XLCdRec lcdrec;
- XLCd lcd;
- XLCdPublicRec xlcdp;
- XPointer rdb;
- int num = 0,count,num_ret=0,i,*ret;
- char **value,buf[128],*ptr;
-
-
- _xudc_utyderror = 0;
- _xudc_utyerror = 0;
-
- if((locale == NULL) || (charset_str == NULL)){
- _xudc_utyerror = 5;
- _xudc_utyderror = 1;
- _xudc_utyerrno = 0x04 ;
- return(_XUDC_ERROR);
- }
- if(codeset == NULL){
- _xudc_utyerror = 5;
- _xudc_utyderror = 2;
- _xudc_utyerrno = 0x04 ;
- return(_XUDC_ERROR);
- }
-
- /* create XLCd */
- xlcdp.pub.siname = locale;
- lcdrec.core = (XLCdCore)&xlcdp;
- lcd = &lcdrec;
- /* create X RDB (X NLS DB) */
- rdb = _XlcCreateLocaleDataBase(lcd);
- if(rdb == NULL){
- _xudc_utyerror = 1;
- _xudc_utyerrno = 0x15 ;
- return(_XUDC_ERROR);
- }
-
- for(num=0;;num++){
- /* XLC_FONTSET */
- sprintf(buf, "fs%d.font.primary", num);
- _XlcGetLocaleDataBase(lcd, "XLC_FONTSET", buf, &value, &count);
- if(count < 1){
- break ;
- }
- for(i=0;i<count;i++){
- if (strlen(value[i]) >= sizeof(buf))
- continue;
- strcpy(buf,value[i]);
- ptr = (char *)strchr(buf,(int)':');
- *ptr = 0;
- if(!_XlcCompareISOLatin1(charset_str,buf)){
- num_ret += 1;
- if(num_ret == 1){
- ret = (int *)Xmalloc(sizeof(int));
- } else {
- int *prev_ret = ret;
-
- ret =
- (int *)Xrealloc(ret,num_ret*sizeof(int));
- if (ret == NULL){
- Xfree(prev_ret);
- }
- }
- if(ret == NULL){
- _xudc_utyerrno = 0x03 ;
- return(_XUDC_ERROR);
- }
- ret[num_ret-1]=num;
- break ;
- }
- }
- }
- if(num_ret == 0){
- *num_codeset = 0;
- *codeset = NULL;
- return (0xff);
- }
-
- *num_codeset = num_ret;
- *codeset = ret;
- return 0;
-}
-
-static Bool gi_to_vgi(gi,vgi,scope)
-unsigned long gi,*vgi;
-FontScope scope;
-{
- if(scope->shift_direction == (unsigned long)'+'){
- gi -= scope->shift;
- } else {
- gi += scope->shift;
- }
- if(gi >= scope->start && gi <= scope->end){
- *vgi = gi;
- return(True);
- }
- return(False);
-}
-
-static void shift_area(udc,scope)
-_XUDCGlyphRegion *udc;
-FontScope scope;
-{
- if(scope->shift_direction == (unsigned long)'+'){
- udc->start += scope->shift;
- udc->end += scope->shift;
- } else {
- udc->start -= scope->shift;
- udc->end -= scope->shift;
- }
-}
-
-/*
- get UDC area with glyph index.
- for examples ...
- locale : ja_JP
- charset_str : JISX0208.1983-0
-*/
-_XUDCGetUDCGIArea(locale,codeset,charset_str,gr,num_gr)
-char *locale;
-int codeset;
-char *charset_str;
-_XUDCGlyphRegion **gr;
-int *num_gr;
-{
- XLCdRec lcdrec;
- XLCd lcd;
- XLCdPublicRec xlcdp;
- XPointer rdb;
- _XUDCGlyphRegion *udc;
- int num = 0,count,num_ret=0;
- int i,j,k;
- char **value,buf[128],ptr;
- FontData font_data;
-
-
- _xudc_utyderror = 0;
- _xudc_utyerror = 0;
- _xudc_utyerrno = 0x00 ;
-
- if((locale == NULL) || (charset_str == NULL)){
- _xudc_utyerror = 5;
- _xudc_utyderror = 1;
- _xudc_utyerrno = 0x04;
- _xudc_utyerrno |= (0x0b<<8) ;
- return(_XUDC_ERROR);
- }
- if(gr == NULL){
- _xudc_utyerror = 5;
- _xudc_utyderror = 1;
- _xudc_utyerrno = 0x04;
- _xudc_utyerrno |= (0x0b<<8) ;
- return(_XUDC_ERROR);
- }
- if(num_gr == NULL){
- _xudc_utyerror = 5;
- _xudc_utyderror = 2;
- _xudc_utyerrno = 0x04;
- _xudc_utyerrno |= (0x0b<<8) ;
- return(_XUDC_ERROR);
- }
-
- /* create XLCd */
- xlcdp.pub.siname = locale;
- lcdrec.core = (XLCdCore)&xlcdp;
- lcd = &lcdrec;
- /* create X RDB (X NLS DB) */
- rdb = _XlcCreateLocaleDataBase(lcd);
- if(rdb == NULL){
- _xudc_utyerror = 1;
- _xudc_utyerrno = 0x15 ;
- _xudc_utyerrno |= (0x0b<<8) ;
- return(_XUDC_ERROR);
- }
- udc = NULL;
-
- /* XLC_FONTSET */
- sprintf(buf, "fs%d.charset.udc_area", codeset-1);
- _XlcGetLocaleDataBase(lcd, "XLC_FONTSET", buf, &value, &count);
- if(count > 0){
- udc = (_XUDCGlyphRegion *)Xmalloc(count * sizeof(_XUDCGlyphRegion));
- if(udc == NULL){
- _xudc_utyerrno = 0x03 ;
- _xudc_utyerrno |= (0x0b<<8) ;
- return(_XUDC_ERROR);
- }
- for(i=0;i<count;i++){
- sscanf(value[i],"\\x%lx,\\x%lx", &(udc[i].start), &(udc[i].end));
- }
- }
-
- *num_gr = count;
-
- sprintf(buf, "fs%d.font.primary", codeset-1);
- _XlcGetLocaleDataBase(lcd, "XLC_FONTSET", buf, &value, &count);
- if(count > 0){
- font_data = read_EncodingInfo(count,value);
- for(i=0;i<count;i++){
- if( !_XlcCompareISOLatin1(font_data[i].name,charset_str)){
- for(j=0;j<(*num_gr);j++){
- for(k=0;k<font_data[i].scopes_num;k++){
- if(udc[j].start == font_data[i].scopes[k].start
- && font_data[i].scopes[k].shift){
- shift_area(&udc[j],&(font_data[i].scopes[k]));
- }
- }
- }
- }
- }
- }
-
- *gr = udc;
- return 0;
-}
-
-/*
- * Code convert wo tomonau UDC area no kakutoku
- * GetUDCCPArea() / glyph_to_code()
- *
- */
-
-static int
-_xudc_gi_to_vgi(lcd,locale,charset_str,codeset,gi,vgi,charsetname,size)
-XLCd lcd;
-char *locale;
-char *charset_str;
-int codeset;
-unsigned long gi;
-unsigned long *vgi;
-char *charsetname;
-int size;
-{
- _XUDCGlyphRegion *udc;
- int num = 0,count,num_ret=0;
- int i,j,k;
- char **value,buf[128],ptr;
- FontData font_data;
-
-
- sprintf(buf, "fs%d.charset.name", codeset-1);
- _XlcGetLocaleDataBase(lcd, "XLC_FONTSET", buf, &value, &count);
- if(count > 0){
- strcpy(charsetname,value[0]);
- }
- if (count >= size)
- return False;
- sprintf(buf, "fs%d.font.primary", codeset-1);
- _XlcGetLocaleDataBase(lcd, "XLC_FONTSET", buf, &value, &count);
- if(count > 0){
- font_data = read_EncodingInfo(count,value);
- for(i=0;i<count;i++){
- if( !_XlcCompareISOLatin1(font_data[i].name,charset_str)){
- for(k=0;k<font_data[i].scopes_num;k++){
- if( gi_to_vgi(gi,vgi,&(font_data[i].scopes[k])) == True){
- return(True);
- }
- }
- }
- }
- }
-/*
- free_fontdata(font_data);
-*/
- *vgi = gi;
- return(True);
-}
-
-Bool non_standard(lcd,charset)
-XLCd lcd;
-XlcCharSet charset;
-{
- char buf[256];
- int count,i;
- char **value;
- if(charset->ct_sequence == NULL){
- return(False);
- }
- for(i=0;;i++){
- sprintf(buf, "csd%d.charset_name", i);
- _XlcGetLocaleDataBase(lcd, "XLC_CHARSET_DEFINE", buf, &value, &count);
- if(count > 0){
- if(!_XlcNCompareISOLatin1(value[0],
- charset->name,strlen(value[0])) ){
- return(True);
- }
- } else {
- return(False);
- }
- }
-}
-
-static Bool
-make_none_standard(from,charset,src,size)
-char *from;
-XlcCharSet charset;
-char *src;
-int size;
-{
- int name_len,seq_len,rest_len,i;
- name_len = 2 + strlen(charset->encoding_name) + 1;
- seq_len = strlen(charset->ct_sequence);
- rest_len = strlen(charset->encoding_name) + 1 + strlen(src);
- if (name_len + seq_len + strlen(src) >= size || rest_len >= 0x4000)
- return False;
- strcpy(from,charset->ct_sequence);
- from[seq_len] = (rest_len >> 7) + 128;
- from[seq_len+1] = (rest_len & 0x7f) + 128;
- strcpy(&from[seq_len + 2],charset->encoding_name);
- from[seq_len+name_len-1] = 0x02; /* STX */
- strcpy(&from[seq_len + name_len],src);
- return True;
-}
-int
-_xudc_glyph_to_code(locale,charset_str,codeset,glyph_index,codepoint)
-char *locale;
-char *charset_str;
-int codeset;
-unsigned long glyph_index;
-unsigned long *codepoint;
-{
- XLCd lcd;
- unsigned char *from; int from_left;
- unsigned char *to ; int to_left = 10;
- unsigned char *dst;
- unsigned char byte;
- unsigned long from32[25];
- unsigned long to32[25];
- int i,j;
- char charsetname[256],src[10];
- XlcConv conv;
- XlcCharSet charset;
- XPointer args[2];
-
- from = (unsigned char *)from32;
- to = (unsigned char *)to32;
- dst = (unsigned char *)to32;
-
- memset(dst,0,25);
-
- lcd = (XLCd)_XlcGenericLoader(locale);
-
- if (!_xudc_gi_to_vgi(lcd,locale,charset_str,codeset,
- glyph_index,&glyph_index,charsetname,sizeof(charsetname)))
- return(_XUDC_ERROR);
-
- for(i=0,j=0;i<4;i++){
- byte = getbyte(glyph_index,i);
- if(byte){
- src[j] = byte;
- j ++;
- }
- }
- src[j] = 0;
-
-
- /* get charset */
-/*
- sprintf(tmp,"%s%s",charset_str,":GL");
- charset_name = strdup(tmp);
-*/
- charset = _XlcGetCharSet(charsetname);
- if(charset == NULL){
- _xudc_utyerrno = 0x16 ;
- return(_XUDC_ERROR);
- }
- /* make ct */
- if( non_standard(lcd,charset)) {
- if (!make_none_standard(from,charset,src,sizeof(from32)))
- return(_XUDC_ERROR);
- } else if(charset->ct_sequence){
- if (strlen(charset->ct_sequence) + strlen(src) >= sizeof(from32))
- return(_XUDC_ERROR);
- sprintf((char *)from,"%s%s",charset->ct_sequence,src);
- } else {
- sprintf((char *)from,"%s\0",src);
- }
- /* compound text -> multi byte */
- conv = _XlcOpenConverter(lcd, XlcNCompoundText, lcd, XlcNMultiByte);
- from_left = strlen((char *)from);
- _XlcConvert(conv,(XPointer *)&from,&from_left,
- (XPointer *)&to, &to_left,args,0);
- _XlcCloseConverter(conv);
- _XlcDestroyLC(lcd);
-
- *codepoint = 0;
- for(i=0;dst[i];i++){
- *codepoint = ((*codepoint << 8) | dst[i]) ;
- }
- return(0);
-}
-
-typedef struct __XUDCCodeRegion {
- unsigned long start,end;
-} _XUDCCodeRegion ;
-
-int
-_XUDCGetUDCCPArea(locale,codeset,charset_str,cr,num_cr)
-char *locale;
-int codeset;
-char *charset_str;
-_XUDCCodeRegion **cr;
-int *num_cr;
-{
- int i,num_gr,ret;
- _XUDCGlyphRegion *gr;
- _XUDCCodeRegion *crr;
-
- _xudc_utyerror = 0;
- _xudc_utyderror = 0;
-
- if(cr == NULL){
- _xudc_utyerror = 5;
- _xudc_utyderror = 1;
- _xudc_utyerrno = 0x04 ;
- _xudc_utyerrno |= (0x0a<<8) ;
- return(_XUDC_ERROR);
- }
- if(num_cr == NULL){
- _xudc_utyerror = 5;
- _xudc_utyderror = 2;
- _xudc_utyerrno = 0x04 ;
- _xudc_utyerrno |= (0x0a<<8) ;
- return(_XUDC_ERROR);
- }
-
- ret = _XUDCGetUDCGIArea(locale,codeset,charset_str,&gr,&num_gr);
- if(ret == _XUDC_ERROR){
- _xudc_utyerrno &= 0xff ;
- _xudc_utyerrno |= (0x0a<<8) ;
- return(ret);
- }
-
- crr = (_XUDCCodeRegion *)Xmalloc(num_gr*sizeof(_XUDCCodeRegion));
- if(crr == NULL){
- Xfree(gr);
- _xudc_utyerrno = 0x03 ;
- _xudc_utyerrno |= (0x0a<<8) ;
- return(_XUDC_ERROR);
- }
-
- for(i=0;i<num_gr;i++){
- ret = _xudc_glyph_to_code(locale,charset_str,codeset,
- gr[i].start, &(crr[i].start));
- if(ret == _XUDC_ERROR){
- _xudc_utyerrno |= (0x0a<<8) ;
- Xfree(gr);
- Xfree(crr);
- return(ret);
- }
- ret = _xudc_glyph_to_code(locale,charset_str,codeset,
- gr[i].end, &(crr[i].end));
- if(ret == _XUDC_ERROR){
- _xudc_utyerrno |= (0x0a<<8) ;
- Xfree(gr);
- Xfree(crr);
- return(ret);
- }
- }
- Xfree(gr);
- *cr = crr;
- *num_cr = num_gr;
- return(0);
-}
-
-/*
- * code_to_glyph()
- *
- */
-typedef struct __XUDCGIInf {
- char *charset_str;
- unsigned long glyph_index;
-} _XUDCGIInf ;
-
-/*
- *
- *
- */
-static Bool vgi_to_gi(gi,vgi,scope)
-unsigned long *gi,vgi;
-FontScope scope;
-{
- if(vgi >= scope->start && vgi <= scope->end){
- if(scope->shift_direction == (unsigned long)'+'){
- *gi = vgi + scope->shift;
- } else {
- *gi = vgi - scope->shift;
- }
- return(True);
- }
- return(False);
-}
-/*
- *
- *
- */
-static Bool
-_xudc_vgi_to_gi(lcd,locale,vglyph,glyph,charset,charsetname,size)
-XLCd lcd;
-char *locale;
-unsigned long vglyph;
-unsigned long *glyph;
-XlcCharSet charset;
-char *charsetname;
-int size;
-{
- int num = 0,count,num_ret=0;
- int i,j,k;
- char **value,buf[128],ptr;
- FontData font_data;
- CodeSet cs;
-
-
- for(i=0;;i++){
- sprintf(buf, "fs%d.charset.name",i);
- _XlcGetLocaleDataBase(lcd, "XLC_FONTSET", buf, &value, &count);
- if(count > 0){
- if(!_XlcNCompareISOLatin1(charset->name,value[0],
- strlen(charset->name))){
- break;
- }
- } else {
- _xudc_utyerrno = 0x17 ;
- return(False);
- }
- }
-/*
- sprintf(buf, "fs%d.charset.name", codeset-1);
- _XlcGetLocaleDataBase(lcd, "XLC_FONTSET", buf, &value, &count);
- if(count > 0){
- strcpy(charsetname,value[0]);
- }
-*/
- sprintf(buf, "fs%d.font.primary", i);
- _XlcGetLocaleDataBase(lcd, "XLC_FONTSET", buf, &value, &count);
- if(count > 0){
- font_data = read_EncodingInfo(count,value);
- for(i=0;i<count;i++){
- for(k=0;k<font_data[i].scopes_num;k++){
- if( vgi_to_gi(glyph,vglyph,&(font_data[i].scopes[k])) == True){
- if (strlen(font_data[i].name) >= size)
- return(False);
- strcpy(charsetname,font_data[i].name);
- return(True);
- }
- }
- }
- }
- *glyph = vglyph;
- return(True);
-}
-int
-_xudc_code_to_glyph(locale,codepoint,gi,num_gi)
-char *locale;
-unsigned long codepoint;
-_XUDCGIInf **gi;
-int *num_gi;
-{
- XLCd lcd;
- unsigned char *from; int from_left;
- unsigned char *to ; int to_left = 10;
- unsigned char *dst;
- unsigned char byte;
- unsigned int from32[25];
- unsigned int to32[25];
- int i,j;
- char charsetname[256],src[10];
- XlcConv conv;
- XlcCharSet charset;
- XPointer args[2];
- unsigned long glyph,vglyph;
-
- from = (unsigned char *)from32;
- to = (unsigned char *)to32;
- dst = (unsigned char *)to32;
- memset(dst,0,25);
-
- lcd = (XLCd)_XlcGenericLoader(locale);
-
- for(i=0,j=0;i<4;i++){
- byte = getbyte(codepoint,i);
- if(byte){
- src[j] = byte;
- j ++;
- }
- }
- src[j] = 0;
- sprintf((char *)from,"%s\0",src);
- /* multi byte -> vgi */
- conv = _XlcOpenConverter(lcd, XlcNMultiByte, lcd, XlcNCharSet);
- from_left = strlen((char *)from);
- args[0] = (XPointer) &charset;
- _XlcConvert(conv,(XPointer *)&from,&from_left,
- (XPointer *)&to, &to_left,args,1);
-
- /* vgi -> gi */
- vglyph = 0;
- for(i=0;dst[i];i++){
- vglyph = ((vglyph << 8) | dst[i]) ;
- }
- if(_xudc_vgi_to_gi(lcd,locale,vglyph,&glyph,charset,charsetname,
- sizeof(charsetname))==False){
- _XlcCloseConverter(conv);
- _XlcDestroyLC(lcd);
- *num_gi = 0;
- return(0);
- }
-
- _XlcCloseConverter(conv);
- _XlcDestroyLC(lcd);
-
- *gi = (_XUDCGIInf *)Xmalloc(sizeof(_XUDCGIInf));
- (*gi)->charset_str = (char *)Xmalloc(strlen(charsetname)+1);
- strcpy((*gi)->charset_str,charsetname);
- (*gi)->glyph_index = glyph;
- if(*gi == NULL){
- _xudc_utyerrno = 0x03 ;
- return(_XUDC_ERROR);
- }
- *num_gi = 1;
- return(0);
-}
-
+/*
+Copyright 1996, 1998 The Open Group
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
+
+The above copyright notice and this permission notice shall be included
+in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR
+OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
+ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group shall
+not be used in advertising or otherwise to promote the sale, use or
+other dealings in this Software without prior written authorization
+from The Open Group.
+*/
+/*
+ * Copyright 1995 by FUJITSU LIMITED
+ * This is source code modified by FUJITSU LIMITED under the Joint
+ * Development Agreement for the CDE/Motif PST.
+ *
+ * Modifier: Takanori Tateno FUJITSU LIMITED
+ *
+ */
+
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include <stdio.h>
+#include <locale.h>
+#include <Xlib.h>
+#include <Xlibint.h>
+#include <Xlcint.h>
+#include <XlcPubI.h>
+#include <XlcGeneric.h>
+#include <XomGeneric.h>
+
+/*
+ external symbols
+*/
+extern FontData read_EncodingInfo();
+extern int _xudc_get_codeset();
+
+extern int _xudc_utyderror ;
+extern int _xudc_utyerror ;
+
+extern unsigned long _xudc_utyerrno ;
+
+#define _XUDC_ERROR -1
+
+
+/*
+ UDC structure define
+*/
+typedef struct __XUDCGlyphRegion {
+ unsigned long start;
+ unsigned long end;
+} _XUDCGlyphRegion ;
+
+/*
+ * "code" no jyoui "i" byte me wo "unsigned char" toshite kaesu.
+ */
+static unsigned char getbyte(code,i)
+unsigned long code;
+int i;
+{
+ unsigned long byteL;
+ unsigned char byte;
+ byteL = code >> (8*(3-i));
+ byte = (unsigned char)(0x000000ff & byteL);
+ return(byte);
+}
+/*
+ get codeset which described by charset_str and locale.
+ for examples ...
+ locale : ja_JP
+ charset_str : JISX0208.1983-0
+*/
+
+_xudc_get_codeset(locale,charset_str,codeset,num_codeset)
+char *locale;
+char *charset_str;
+int **codeset;
+int *num_codeset;
+{
+ XLCdRec lcdrec;
+ XLCd lcd;
+ XLCdPublicRec xlcdp;
+ XPointer rdb;
+ int num = 0,count,num_ret=0,i,*ret;
+ char **value,buf[128],*ptr;
+
+
+ _xudc_utyderror = 0;
+ _xudc_utyerror = 0;
+
+ if((locale == NULL) || (charset_str == NULL)){
+ _xudc_utyerror = 5;
+ _xudc_utyderror = 1;
+ _xudc_utyerrno = 0x04 ;
+ return(_XUDC_ERROR);
+ }
+ if(codeset == NULL){
+ _xudc_utyerror = 5;
+ _xudc_utyderror = 2;
+ _xudc_utyerrno = 0x04 ;
+ return(_XUDC_ERROR);
+ }
+
+ /* create XLCd */
+ xlcdp.pub.siname = locale;
+ lcdrec.core = (XLCdCore)&xlcdp;
+ lcd = &lcdrec;
+ /* create X RDB (X NLS DB) */
+ rdb = _XlcCreateLocaleDataBase(lcd);
+ if(rdb == NULL){
+ _xudc_utyerror = 1;
+ _xudc_utyerrno = 0x15 ;
+ return(_XUDC_ERROR);
+ }
+
+ for(num=0;;num++){
+ /* XLC_FONTSET */
+ sprintf(buf, "fs%d.font.primary", num);
+ _XlcGetLocaleDataBase(lcd, "XLC_FONTSET", buf, &value, &count);
+ if(count < 1){
+ break ;
+ }
+ for(i=0;i<count;i++){
+ if (strlen(value[i]) >= sizeof(buf))
+ continue;
+ strcpy(buf,value[i]);
+ ptr = (char *)strchr(buf,(int)':');
+ *ptr = 0;
+ if(!_XlcCompareISOLatin1(charset_str,buf)){
+ num_ret += 1;
+ if(num_ret == 1){
+ ret = (int *)Xmalloc(sizeof(int));
+ } else {
+ int *prev_ret = ret;
+
+ ret =
+ (int *)Xrealloc(ret,num_ret*sizeof(int));
+ if (ret == NULL){
+ Xfree(prev_ret);
+ }
+ }
+ if(ret == NULL){
+ _xudc_utyerrno = 0x03 ;
+ return(_XUDC_ERROR);
+ }
+ ret[num_ret-1]=num;
+ break ;
+ }
+ }
+ }
+ if(num_ret == 0){
+ *num_codeset = 0;
+ *codeset = NULL;
+ return (0xff);
+ }
+
+ *num_codeset = num_ret;
+ *codeset = ret;
+ return 0;
+}
+
+static Bool gi_to_vgi(gi,vgi,scope)
+unsigned long gi,*vgi;
+FontScope scope;
+{
+ if(scope->shift_direction == (unsigned long)'+'){
+ gi -= scope->shift;
+ } else {
+ gi += scope->shift;
+ }
+ if(gi >= scope->start && gi <= scope->end){
+ *vgi = gi;
+ return(True);
+ }
+ return(False);
+}
+
+static void shift_area(udc,scope)
+_XUDCGlyphRegion *udc;
+FontScope scope;
+{
+ if(scope->shift_direction == (unsigned long)'+'){
+ udc->start += scope->shift;
+ udc->end += scope->shift;
+ } else {
+ udc->start -= scope->shift;
+ udc->end -= scope->shift;
+ }
+}
+
+/*
+ get UDC area with glyph index.
+ for examples ...
+ locale : ja_JP
+ charset_str : JISX0208.1983-0
+*/
+_XUDCGetUDCGIArea(locale,codeset,charset_str,gr,num_gr)
+char *locale;
+int codeset;
+char *charset_str;
+_XUDCGlyphRegion **gr;
+int *num_gr;
+{
+ XLCdRec lcdrec;
+ XLCd lcd;
+ XLCdPublicRec xlcdp;
+ XPointer rdb;
+ _XUDCGlyphRegion *udc;
+ int num = 0,count,num_ret=0;
+ int i,j,k;
+ char **value,buf[128],ptr;
+ FontData font_data;
+
+
+ _xudc_utyderror = 0;
+ _xudc_utyerror = 0;
+ _xudc_utyerrno = 0x00 ;
+
+ if((locale == NULL) || (charset_str == NULL)){
+ _xudc_utyerror = 5;
+ _xudc_utyderror = 1;
+ _xudc_utyerrno = 0x04;
+ _xudc_utyerrno |= (0x0b<<8) ;
+ return(_XUDC_ERROR);
+ }
+ if(gr == NULL){
+ _xudc_utyerror = 5;
+ _xudc_utyderror = 1;
+ _xudc_utyerrno = 0x04;
+ _xudc_utyerrno |= (0x0b<<8) ;
+ return(_XUDC_ERROR);
+ }
+ if(num_gr == NULL){
+ _xudc_utyerror = 5;
+ _xudc_utyderror = 2;
+ _xudc_utyerrno = 0x04;
+ _xudc_utyerrno |= (0x0b<<8) ;
+ return(_XUDC_ERROR);
+ }
+
+ /* create XLCd */
+ xlcdp.pub.siname = locale;
+ lcdrec.core = (XLCdCore)&xlcdp;
+ lcd = &lcdrec;
+ /* create X RDB (X NLS DB) */
+ rdb = _XlcCreateLocaleDataBase(lcd);
+ if(rdb == NULL){
+ _xudc_utyerror = 1;
+ _xudc_utyerrno = 0x15 ;
+ _xudc_utyerrno |= (0x0b<<8) ;
+ return(_XUDC_ERROR);
+ }
+ udc = NULL;
+
+ /* XLC_FONTSET */
+ sprintf(buf, "fs%d.charset.udc_area", codeset-1);
+ _XlcGetLocaleDataBase(lcd, "XLC_FONTSET", buf, &value, &count);
+ if(count > 0){
+ udc = (_XUDCGlyphRegion *)Xmalloc(count * sizeof(_XUDCGlyphRegion));
+ if(udc == NULL){
+ _xudc_utyerrno = 0x03 ;
+ _xudc_utyerrno |= (0x0b<<8) ;
+ return(_XUDC_ERROR);
+ }
+ for(i=0;i<count;i++){
+ sscanf(value[i],"\\x%lx,\\x%lx", &(udc[i].start), &(udc[i].end));
+ }
+ }
+
+ *num_gr = count;
+
+ sprintf(buf, "fs%d.font.primary", codeset-1);
+ _XlcGetLocaleDataBase(lcd, "XLC_FONTSET", buf, &value, &count);
+ if(count > 0){
+ font_data = read_EncodingInfo(count,value);
+ for(i=0;i<count;i++){
+ if( !_XlcCompareISOLatin1(font_data[i].name,charset_str)){
+ for(j=0;j<(*num_gr);j++){
+ for(k=0;k<font_data[i].scopes_num;k++){
+ if(udc[j].start == font_data[i].scopes[k].start
+ && font_data[i].scopes[k].shift){
+ shift_area(&udc[j],&(font_data[i].scopes[k]));
+ }
+ }
+ }
+ }
+ }
+ }
+
+ *gr = udc;
+ return 0;
+}
+
+/*
+ * Code convert wo tomonau UDC area no kakutoku
+ * GetUDCCPArea() / glyph_to_code()
+ *
+ */
+
+static int
+_xudc_gi_to_vgi(lcd,locale,charset_str,codeset,gi,vgi,charsetname,size)
+XLCd lcd;
+char *locale;
+char *charset_str;
+int codeset;
+unsigned long gi;
+unsigned long *vgi;
+char *charsetname;
+int size;
+{
+ _XUDCGlyphRegion *udc;
+ int num = 0,count,num_ret=0;
+ int i,j,k;
+ char **value,buf[128],ptr;
+ FontData font_data;
+
+
+ sprintf(buf, "fs%d.charset.name", codeset-1);
+ _XlcGetLocaleDataBase(lcd, "XLC_FONTSET", buf, &value, &count);
+ if(count > 0){
+ strcpy(charsetname,value[0]);
+ }
+ if (count >= size)
+ return False;
+ sprintf(buf, "fs%d.font.primary", codeset-1);
+ _XlcGetLocaleDataBase(lcd, "XLC_FONTSET", buf, &value, &count);
+ if(count > 0){
+ font_data = read_EncodingInfo(count,value);
+ for(i=0;i<count;i++){
+ if( !_XlcCompareISOLatin1(font_data[i].name,charset_str)){
+ for(k=0;k<font_data[i].scopes_num;k++){
+ if( gi_to_vgi(gi,vgi,&(font_data[i].scopes[k])) == True){
+ return(True);
+ }
+ }
+ }
+ }
+ }
+/*
+ free_fontdata(font_data);
+*/
+ *vgi = gi;
+ return(True);
+}
+
+Bool non_standard(lcd,charset)
+XLCd lcd;
+XlcCharSet charset;
+{
+ char buf[256];
+ int count,i;
+ char **value;
+ if(charset->ct_sequence == NULL){
+ return(False);
+ }
+ for(i=0;;i++){
+ sprintf(buf, "csd%d.charset_name", i);
+ _XlcGetLocaleDataBase(lcd, "XLC_CHARSET_DEFINE", buf, &value, &count);
+ if(count > 0){
+ if(!_XlcNCompareISOLatin1(value[0],
+ charset->name,strlen(value[0])) ){
+ return(True);
+ }
+ } else {
+ return(False);
+ }
+ }
+}
+
+static Bool
+make_none_standard(from,charset,src,size)
+char *from;
+XlcCharSet charset;
+char *src;
+int size;
+{
+ int name_len,seq_len,rest_len,i;
+ name_len = 2 + strlen(charset->encoding_name) + 1;
+ seq_len = strlen(charset->ct_sequence);
+ rest_len = strlen(charset->encoding_name) + 1 + strlen(src);
+ if (name_len + seq_len + strlen(src) >= size || rest_len >= 0x4000)
+ return False;
+ strcpy(from,charset->ct_sequence);
+ from[seq_len] = (rest_len >> 7) + 128;
+ from[seq_len+1] = (rest_len & 0x7f) + 128;
+ strcpy(&from[seq_len + 2],charset->encoding_name);
+ from[seq_len+name_len-1] = 0x02; /* STX */
+ strcpy(&from[seq_len + name_len],src);
+ return True;
+}
+int
+_xudc_glyph_to_code(locale,charset_str,codeset,glyph_index,codepoint)
+char *locale;
+char *charset_str;
+int codeset;
+unsigned long glyph_index;
+unsigned long *codepoint;
+{
+ XLCd lcd;
+ unsigned char *from; int from_left;
+ unsigned char *to ; int to_left = 10;
+ unsigned char *dst;
+ unsigned char byte;
+ unsigned long from32[25];
+ unsigned long to32[25];
+ int i,j;
+ char charsetname[256],src[10];
+ XlcConv conv;
+ XlcCharSet charset;
+ XPointer args[2];
+
+ from = (unsigned char *)from32;
+ to = (unsigned char *)to32;
+ dst = (unsigned char *)to32;
+
+ memset(dst,0,25);
+
+ lcd = (XLCd)_XlcGenericLoader(locale);
+
+ if (!_xudc_gi_to_vgi(lcd,locale,charset_str,codeset,
+ glyph_index,&glyph_index,charsetname,sizeof(charsetname)))
+ return(_XUDC_ERROR);
+
+ for(i=0,j=0;i<4;i++){
+ byte = getbyte(glyph_index,i);
+ if(byte){
+ src[j] = byte;
+ j ++;
+ }
+ }
+ src[j] = 0;
+
+
+ /* get charset */
+/*
+ sprintf(tmp,"%s%s",charset_str,":GL");
+ charset_name = strdup(tmp);
+*/
+ charset = _XlcGetCharSet(charsetname);
+ if(charset == NULL){
+ _xudc_utyerrno = 0x16 ;
+ return(_XUDC_ERROR);
+ }
+ /* make ct */
+ if( non_standard(lcd,charset)) {
+ if (!make_none_standard(from,charset,src,sizeof(from32)))
+ return(_XUDC_ERROR);
+ } else if(charset->ct_sequence){
+ if (strlen(charset->ct_sequence) + strlen(src) >= sizeof(from32))
+ return(_XUDC_ERROR);
+ sprintf((char *)from,"%s%s",charset->ct_sequence,src);
+ } else {
+ sprintf((char *)from,"%s\0",src);
+ }
+ /* compound text -> multi byte */
+ conv = _XlcOpenConverter(lcd, XlcNCompoundText, lcd, XlcNMultiByte);
+ from_left = strlen((char *)from);
+ _XlcConvert(conv,(XPointer *)&from,&from_left,
+ (XPointer *)&to, &to_left,args,0);
+ _XlcCloseConverter(conv);
+ _XlcDestroyLC(lcd);
+
+ *codepoint = 0;
+ for(i=0;dst[i];i++){
+ *codepoint = ((*codepoint << 8) | dst[i]) ;
+ }
+ return(0);
+}
+
+typedef struct __XUDCCodeRegion {
+ unsigned long start,end;
+} _XUDCCodeRegion ;
+
+int
+_XUDCGetUDCCPArea(locale,codeset,charset_str,cr,num_cr)
+char *locale;
+int codeset;
+char *charset_str;
+_XUDCCodeRegion **cr;
+int *num_cr;
+{
+ int i,num_gr,ret;
+ _XUDCGlyphRegion *gr;
+ _XUDCCodeRegion *crr;
+
+ _xudc_utyerror = 0;
+ _xudc_utyderror = 0;
+
+ if(cr == NULL){
+ _xudc_utyerror = 5;
+ _xudc_utyderror = 1;
+ _xudc_utyerrno = 0x04 ;
+ _xudc_utyerrno |= (0x0a<<8) ;
+ return(_XUDC_ERROR);
+ }
+ if(num_cr == NULL){
+ _xudc_utyerror = 5;
+ _xudc_utyderror = 2;
+ _xudc_utyerrno = 0x04 ;
+ _xudc_utyerrno |= (0x0a<<8) ;
+ return(_XUDC_ERROR);
+ }
+
+ ret = _XUDCGetUDCGIArea(locale,codeset,charset_str,&gr,&num_gr);
+ if(ret == _XUDC_ERROR){
+ _xudc_utyerrno &= 0xff ;
+ _xudc_utyerrno |= (0x0a<<8) ;
+ return(ret);
+ }
+
+ crr = (_XUDCCodeRegion *)Xmalloc(num_gr*sizeof(_XUDCCodeRegion));
+ if(crr == NULL){
+ Xfree(gr);
+ _xudc_utyerrno = 0x03 ;
+ _xudc_utyerrno |= (0x0a<<8) ;
+ return(_XUDC_ERROR);
+ }
+
+ for(i=0;i<num_gr;i++){
+ ret = _xudc_glyph_to_code(locale,charset_str,codeset,
+ gr[i].start, &(crr[i].start));
+ if(ret == _XUDC_ERROR){
+ _xudc_utyerrno |= (0x0a<<8) ;
+ Xfree(gr);
+ Xfree(crr);
+ return(ret);
+ }
+ ret = _xudc_glyph_to_code(locale,charset_str,codeset,
+ gr[i].end, &(crr[i].end));
+ if(ret == _XUDC_ERROR){
+ _xudc_utyerrno |= (0x0a<<8) ;
+ Xfree(gr);
+ Xfree(crr);
+ return(ret);
+ }
+ }
+ Xfree(gr);
+ *cr = crr;
+ *num_cr = num_gr;
+ return(0);
+}
+
+/*
+ * code_to_glyph()
+ *
+ */
+typedef struct __XUDCGIInf {
+ char *charset_str;
+ unsigned long glyph_index;
+} _XUDCGIInf ;
+
+/*
+ *
+ *
+ */
+static Bool vgi_to_gi(gi,vgi,scope)
+unsigned long *gi,vgi;
+FontScope scope;
+{
+ if(vgi >= scope->start && vgi <= scope->end){
+ if(scope->shift_direction == (unsigned long)'+'){
+ *gi = vgi + scope->shift;
+ } else {
+ *gi = vgi - scope->shift;
+ }
+ return(True);
+ }
+ return(False);
+}
+/*
+ *
+ *
+ */
+static Bool
+_xudc_vgi_to_gi(lcd,locale,vglyph,glyph,charset,charsetname,size)
+XLCd lcd;
+char *locale;
+unsigned long vglyph;
+unsigned long *glyph;
+XlcCharSet charset;
+char *charsetname;
+int size;
+{
+ int num = 0,count,num_ret=0;
+ int i,j,k;
+ char **value,buf[128],ptr;
+ FontData font_data;
+ CodeSet cs;
+
+
+ for(i=0;;i++){
+ sprintf(buf, "fs%d.charset.name",i);
+ _XlcGetLocaleDataBase(lcd, "XLC_FONTSET", buf, &value, &count);
+ if(count > 0){
+ if(!_XlcNCompareISOLatin1(charset->name,value[0],
+ strlen(charset->name))){
+ break;
+ }
+ } else {
+ _xudc_utyerrno = 0x17 ;
+ return(False);
+ }
+ }
+/*
+ sprintf(buf, "fs%d.charset.name", codeset-1);
+ _XlcGetLocaleDataBase(lcd, "XLC_FONTSET", buf, &value, &count);
+ if(count > 0){
+ strcpy(charsetname,value[0]);
+ }
+*/
+ sprintf(buf, "fs%d.font.primary", i);
+ _XlcGetLocaleDataBase(lcd, "XLC_FONTSET", buf, &value, &count);
+ if(count > 0){
+ font_data = read_EncodingInfo(count,value);
+ for(i=0;i<count;i++){
+ for(k=0;k<font_data[i].scopes_num;k++){
+ if( vgi_to_gi(glyph,vglyph,&(font_data[i].scopes[k])) == True){
+ if (strlen(font_data[i].name) >= size)
+ return(False);
+ strcpy(charsetname,font_data[i].name);
+ return(True);
+ }
+ }
+ }
+ }
+ *glyph = vglyph;
+ return(True);
+}
+int
+_xudc_code_to_glyph(locale,codepoint,gi,num_gi)
+char *locale;
+unsigned long codepoint;
+_XUDCGIInf **gi;
+int *num_gi;
+{
+ XLCd lcd;
+ unsigned char *from; int from_left;
+ unsigned char *to ; int to_left = 10;
+ unsigned char *dst;
+ unsigned char byte;
+ unsigned int from32[25];
+ unsigned int to32[25];
+ int i,j;
+ char charsetname[256],src[10];
+ XlcConv conv;
+ XlcCharSet charset;
+ XPointer args[2];
+ unsigned long glyph,vglyph;
+
+ from = (unsigned char *)from32;
+ to = (unsigned char *)to32;
+ dst = (unsigned char *)to32;
+ memset(dst,0,25);
+
+ lcd = (XLCd)_XlcGenericLoader(locale);
+
+ for(i=0,j=0;i<4;i++){
+ byte = getbyte(codepoint,i);
+ if(byte){
+ src[j] = byte;
+ j ++;
+ }
+ }
+ src[j] = 0;
+ sprintf((char *)from,"%s\0",src);
+ /* multi byte -> vgi */
+ conv = _XlcOpenConverter(lcd, XlcNMultiByte, lcd, XlcNCharSet);
+ from_left = strlen((char *)from);
+ args[0] = (XPointer) &charset;
+ _XlcConvert(conv,(XPointer *)&from,&from_left,
+ (XPointer *)&to, &to_left,args,1);
+
+ /* vgi -> gi */
+ vglyph = 0;
+ for(i=0;dst[i];i++){
+ vglyph = ((vglyph << 8) | dst[i]) ;
+ }
+ if(_xudc_vgi_to_gi(lcd,locale,vglyph,&glyph,charset,charsetname,
+ sizeof(charsetname))==False){
+ _XlcCloseConverter(conv);
+ _XlcDestroyLC(lcd);
+ *num_gi = 0;
+ return(0);
+ }
+
+ _XlcCloseConverter(conv);
+ _XlcDestroyLC(lcd);
+
+ *gi = (_XUDCGIInf *)Xmalloc(sizeof(_XUDCGIInf));
+ (*gi)->charset_str = (char *)Xmalloc(strlen(charsetname)+1);
+ strcpy((*gi)->charset_str,charsetname);
+ (*gi)->glyph_index = glyph;
+ if(*gi == NULL){
+ _xudc_utyerrno = 0x03 ;
+ return(_XUDC_ERROR);
+ }
+ *num_gi = 1;
+ return(0);
+}
+
diff --git a/libX11/src/util/.gitignore b/libX11/src/util/.gitignore
index e744d636d..5f95924b5 100644
--- a/libX11/src/util/.gitignore
+++ b/libX11/src/util/.gitignore
@@ -1,2 +1,2 @@
-# Add & Override for this directory and it's subdirectories
-makekeys
+# Add & Override for this directory and it's subdirectories
+makekeys
diff --git a/libX11/src/util/mkks.sh b/libX11/src/util/mkks.sh
index 3e80c354b..262cc9540 100644
--- a/libX11/src/util/mkks.sh
+++ b/libX11/src/util/mkks.sh
@@ -1,11 +1,11 @@
-#!/bin/sh
-
-cat $* | awk 'BEGIN { \
- printf "/*\n * This file is generated from %s. Do not edit.\n */\n", \
- "$(INCLUDESRC)/keysymdef.h";\
-} \
-/^#define/ { \
- len = length($2)-3; \
- printf("{ \"%s\", %s },\n", substr($2,4,len), $3); \
-}'
-
+#!/bin/sh
+
+cat $* | awk 'BEGIN { \
+ printf "/*\n * This file is generated from %s. Do not edit.\n */\n", \
+ "$(INCLUDESRC)/keysymdef.h";\
+} \
+/^#define/ { \
+ len = length($2)-3; \
+ printf("{ \"%s\", %s },\n", substr($2,4,len), $3); \
+}'
+
diff --git a/libX11/src/utlist.h b/libX11/src/utlist.h
index 948eb6953..215c2c62e 100644
--- a/libX11/src/utlist.h
+++ b/libX11/src/utlist.h
@@ -1,116 +1,116 @@
-/*
-Copyright (c) 2007-2009, Troy D. Hanson
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are met:
-
- * Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
-IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
-TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
-PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
-OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
-EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
-PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
-PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
-LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-#ifndef UTLIST_H
-#define UTLIST_H
-
-#define UTLIST_VERSION 1.7
-
-/* From: http://uthash.sourceforge.net/utlist.html */
-/*
- * This file contains macros to manipulate singly and doubly-linked lists.
- *
- * 1. LL_ macros: singly-linked lists.
- * 2. DL_ macros: doubly-linked lists.
- * 3. CDL_ macros: circular doubly-linked lists.
- *
- * To use singly-linked lists, your structure must have a "next" pointer.
- * To use doubly-linked lists, your structure must "prev" and "next" pointers.
- * Either way, the pointer to the head of the list must be initialized to NULL.
- *
- * ----------------.EXAMPLE -------------------------
- * struct item {
- * int id;
- * struct item *prev, *next;
- * }
- *
- * struct item *list = NULL:
- *
- * int main() {
- * struct item *item;
- * ... allocate and populate item ...
- * DL_APPEND(list, item);
- * }
- * --------------------------------------------------
- *
- * For doubly-linked lists, the append and delete macros are O(1)
- * For singly-linked lists, append and delete are O(n) but prepend is O(1)
- * The sort macro is O(n log(n)) for all types of single/double/circular lists.
- */
-
-
-/******************************************************************************
- * doubly linked list macros (non-circular) *
- *****************************************************************************/
-#define DL_PREPEND(head,add) \
-do { \
- (add)->next = head; \
- if (head) { \
- (add)->prev = (head)->prev; \
- (head)->prev = (add); \
- } else { \
- (add)->prev = (add); \
- } \
- (head) = (add); \
-} while (0)
-
-#define DL_APPEND(head,add) \
-do { \
- if (head) { \
- (add)->prev = (head)->prev; \
- (head)->prev->next = (add); \
- (head)->prev = (add); \
- (add)->next = NULL; \
- } else { \
- (head)=(add); \
- (head)->prev = (head); \
- (head)->next = NULL; \
- } \
-} while (0);
-
-#define DL_DELETE(head,del) \
-do { \
- if ((del)->prev == (del)) { \
- (head)=NULL; \
- } else if ((del)==(head)) { \
- (del)->next->prev = (del)->prev; \
- (head) = (del)->next; \
- } else { \
- (del)->prev->next = (del)->next; \
- if ((del)->next) { \
- (del)->next->prev = (del)->prev; \
- } else { \
- (head)->prev = (del)->prev; \
- } \
- } \
-} while (0);
-
-
-#define DL_FOREACH(head,el) \
- for(el=head;el;el=el->next)
-
-#define DL_FOREACH_SAFE(head,el,tmp) \
- for(el=head,tmp=el->next;el;el=tmp,tmp=(el) ? (el->next) : NULL)
-
-#endif /* UTLIST_H */
-
+/*
+Copyright (c) 2007-2009, Troy D. Hanson
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ * Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
+IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
+TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
+OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+#ifndef UTLIST_H
+#define UTLIST_H
+
+#define UTLIST_VERSION 1.7
+
+/* From: http://uthash.sourceforge.net/utlist.html */
+/*
+ * This file contains macros to manipulate singly and doubly-linked lists.
+ *
+ * 1. LL_ macros: singly-linked lists.
+ * 2. DL_ macros: doubly-linked lists.
+ * 3. CDL_ macros: circular doubly-linked lists.
+ *
+ * To use singly-linked lists, your structure must have a "next" pointer.
+ * To use doubly-linked lists, your structure must "prev" and "next" pointers.
+ * Either way, the pointer to the head of the list must be initialized to NULL.
+ *
+ * ----------------.EXAMPLE -------------------------
+ * struct item {
+ * int id;
+ * struct item *prev, *next;
+ * }
+ *
+ * struct item *list = NULL:
+ *
+ * int main() {
+ * struct item *item;
+ * ... allocate and populate item ...
+ * DL_APPEND(list, item);
+ * }
+ * --------------------------------------------------
+ *
+ * For doubly-linked lists, the append and delete macros are O(1)
+ * For singly-linked lists, append and delete are O(n) but prepend is O(1)
+ * The sort macro is O(n log(n)) for all types of single/double/circular lists.
+ */
+
+
+/******************************************************************************
+ * doubly linked list macros (non-circular) *
+ *****************************************************************************/
+#define DL_PREPEND(head,add) \
+do { \
+ (add)->next = head; \
+ if (head) { \
+ (add)->prev = (head)->prev; \
+ (head)->prev = (add); \
+ } else { \
+ (add)->prev = (add); \
+ } \
+ (head) = (add); \
+} while (0)
+
+#define DL_APPEND(head,add) \
+do { \
+ if (head) { \
+ (add)->prev = (head)->prev; \
+ (head)->prev->next = (add); \
+ (head)->prev = (add); \
+ (add)->next = NULL; \
+ } else { \
+ (head)=(add); \
+ (head)->prev = (head); \
+ (head)->next = NULL; \
+ } \
+} while (0);
+
+#define DL_DELETE(head,del) \
+do { \
+ if ((del)->prev == (del)) { \
+ (head)=NULL; \
+ } else if ((del)==(head)) { \
+ (del)->next->prev = (del)->prev; \
+ (head) = (del)->next; \
+ } else { \
+ (del)->prev->next = (del)->next; \
+ if ((del)->next) { \
+ (del)->next->prev = (del)->prev; \
+ } else { \
+ (head)->prev = (del)->prev; \
+ } \
+ } \
+} while (0);
+
+
+#define DL_FOREACH(head,el) \
+ for(el=head;el;el=el->next)
+
+#define DL_FOREACH_SAFE(head,el,tmp) \
+ for(el=head,tmp=el->next;el;el=tmp,tmp=(el) ? (el->next) : NULL)
+
+#endif /* UTLIST_H */
+
diff --git a/libX11/src/x11_xcb.c b/libX11/src/x11_xcb.c
index a40a03e76..3ddf403b6 100644
--- a/libX11/src/x11_xcb.c
+++ b/libX11/src/x11_xcb.c
@@ -1,15 +1,15 @@
-/* Copyright (C) 2003,2006 Jamey Sharp, Josh Triplett
- * This file is licensed under the MIT license. See the file COPYING. */
-
-#include "Xlibint.h"
-#include "Xxcbint.h"
-
-xcb_connection_t *XGetXCBConnection(Display *dpy)
-{
- return dpy->xcb->connection;
-}
-
-void XSetEventQueueOwner(Display *dpy, enum XEventQueueOwner owner)
-{
- dpy->xcb->event_owner = owner;
-}
+/* Copyright (C) 2003,2006 Jamey Sharp, Josh Triplett
+ * This file is licensed under the MIT license. See the file COPYING. */
+
+#include "Xlibint.h"
+#include "Xxcbint.h"
+
+xcb_connection_t *XGetXCBConnection(Display *dpy)
+{
+ return dpy->xcb->connection;
+}
+
+void XSetEventQueueOwner(Display *dpy, enum XEventQueueOwner owner)
+{
+ dpy->xcb->event_owner = owner;
+}
diff --git a/libX11/src/xcb_disp.c b/libX11/src/xcb_disp.c
index 60d186a5e..0fa40deab 100644
--- a/libX11/src/xcb_disp.c
+++ b/libX11/src/xcb_disp.c
@@ -1,108 +1,108 @@
-/* Copyright (C) 2003-2006 Jamey Sharp, Josh Triplett
- * This file is licensed under the MIT license. See the file COPYING. */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include "Xlibint.h"
-#include "Xxcbint.h"
-#include <xcb/xcbext.h>
-#include <X11/Xatom.h>
-#include <X11/Xresource.h>
-#include <stdio.h>
-
-static xcb_auth_info_t xauth;
-
-static void *alloc_copy(const void *src, int *dstn, size_t n)
-{
- void *dst;
- if(n <= 0)
- {
- *dstn = 0;
- return NULL;
- }
- dst = Xmalloc(n);
- if(!dst)
- return NULL;
- memcpy(dst, src, n);
- *dstn = n;
- return dst;
-}
-
-void XSetAuthorization(char *name, int namelen, char *data, int datalen)
-{
- _XLockMutex(_Xglobal_lock);
- Xfree(xauth.name);
- Xfree(xauth.data);
-
- /* if either of these allocs fail, _XConnectXCB won't use this auth
- * data, so we don't need to check it here. */
- xauth.name = alloc_copy(name, &xauth.namelen, namelen);
- xauth.data = alloc_copy(data, &xauth.datalen, datalen);
-
-#if 0 /* but, for the paranoid among us: */
- if((namelen > 0 && !xauth.name) || (datalen > 0 && !xauth.data))
- {
- Xfree(xauth.name);
- Xfree(xauth.data);
- xauth.name = xauth.data = 0;
- xauth.namelen = xauth.datalen = 0;
- }
-#endif
-
- _XUnlockMutex(_Xglobal_lock);
-}
-
-int _XConnectXCB(Display *dpy, _Xconst char *display, int *screenp)
-{
- char *host;
- int n = 0;
- xcb_connection_t *c;
-
- dpy->fd = -1;
-
- dpy->xcb = Xcalloc(1, sizeof(_X11XCBPrivate));
- if(!dpy->xcb)
- return 0;
-
- if(!xcb_parse_display(display, &host, &n, screenp))
- return 0;
- /* host and n are unused, but xcb_parse_display requires them */
- free(host);
-
- _XLockMutex(_Xglobal_lock);
- if(xauth.name && xauth.data)
- c = xcb_connect_to_display_with_auth_info(display, &xauth, NULL);
- else
- c = xcb_connect(display, NULL);
- _XUnlockMutex(_Xglobal_lock);
-
- dpy->fd = xcb_get_file_descriptor(c);
-
- dpy->xcb->connection = c;
- dpy->xcb->next_xid = xcb_generate_id(dpy->xcb->connection);
-
- dpy->xcb->event_notify = xcondition_malloc();
- dpy->xcb->reply_notify = xcondition_malloc();
- if (!dpy->xcb->event_notify || !dpy->xcb->reply_notify)
- return 0;
- xcondition_init(dpy->xcb->event_notify);
- xcondition_init(dpy->xcb->reply_notify);
- return !xcb_connection_has_error(c);
-}
-
-void _XFreeX11XCBStructure(Display *dpy)
-{
- /* reply_data was allocated by system malloc, not Xmalloc */
- free(dpy->xcb->reply_data);
- while(dpy->xcb->pending_requests)
- {
- PendingRequest *tmp = dpy->xcb->pending_requests;
- dpy->xcb->pending_requests = tmp->next;
- free(tmp);
- }
- xcondition_free(dpy->xcb->event_notify);
- xcondition_free(dpy->xcb->reply_notify);
- Xfree(dpy->xcb);
-}
+/* Copyright (C) 2003-2006 Jamey Sharp, Josh Triplett
+ * This file is licensed under the MIT license. See the file COPYING. */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include "Xlibint.h"
+#include "Xxcbint.h"
+#include <xcb/xcbext.h>
+#include <X11/Xatom.h>
+#include <X11/Xresource.h>
+#include <stdio.h>
+
+static xcb_auth_info_t xauth;
+
+static void *alloc_copy(const void *src, int *dstn, size_t n)
+{
+ void *dst;
+ if(n <= 0)
+ {
+ *dstn = 0;
+ return NULL;
+ }
+ dst = Xmalloc(n);
+ if(!dst)
+ return NULL;
+ memcpy(dst, src, n);
+ *dstn = n;
+ return dst;
+}
+
+void XSetAuthorization(char *name, int namelen, char *data, int datalen)
+{
+ _XLockMutex(_Xglobal_lock);
+ Xfree(xauth.name);
+ Xfree(xauth.data);
+
+ /* if either of these allocs fail, _XConnectXCB won't use this auth
+ * data, so we don't need to check it here. */
+ xauth.name = alloc_copy(name, &xauth.namelen, namelen);
+ xauth.data = alloc_copy(data, &xauth.datalen, datalen);
+
+#if 0 /* but, for the paranoid among us: */
+ if((namelen > 0 && !xauth.name) || (datalen > 0 && !xauth.data))
+ {
+ Xfree(xauth.name);
+ Xfree(xauth.data);
+ xauth.name = xauth.data = 0;
+ xauth.namelen = xauth.datalen = 0;
+ }
+#endif
+
+ _XUnlockMutex(_Xglobal_lock);
+}
+
+int _XConnectXCB(Display *dpy, _Xconst char *display, int *screenp)
+{
+ char *host;
+ int n = 0;
+ xcb_connection_t *c;
+
+ dpy->fd = -1;
+
+ dpy->xcb = Xcalloc(1, sizeof(_X11XCBPrivate));
+ if(!dpy->xcb)
+ return 0;
+
+ if(!xcb_parse_display(display, &host, &n, screenp))
+ return 0;
+ /* host and n are unused, but xcb_parse_display requires them */
+ free(host);
+
+ _XLockMutex(_Xglobal_lock);
+ if(xauth.name && xauth.data)
+ c = xcb_connect_to_display_with_auth_info(display, &xauth, NULL);
+ else
+ c = xcb_connect(display, NULL);
+ _XUnlockMutex(_Xglobal_lock);
+
+ dpy->fd = xcb_get_file_descriptor(c);
+
+ dpy->xcb->connection = c;
+ dpy->xcb->next_xid = xcb_generate_id(dpy->xcb->connection);
+
+ dpy->xcb->event_notify = xcondition_malloc();
+ dpy->xcb->reply_notify = xcondition_malloc();
+ if (!dpy->xcb->event_notify || !dpy->xcb->reply_notify)
+ return 0;
+ xcondition_init(dpy->xcb->event_notify);
+ xcondition_init(dpy->xcb->reply_notify);
+ return !xcb_connection_has_error(c);
+}
+
+void _XFreeX11XCBStructure(Display *dpy)
+{
+ /* reply_data was allocated by system malloc, not Xmalloc */
+ free(dpy->xcb->reply_data);
+ while(dpy->xcb->pending_requests)
+ {
+ PendingRequest *tmp = dpy->xcb->pending_requests;
+ dpy->xcb->pending_requests = tmp->next;
+ free(tmp);
+ }
+ xcondition_free(dpy->xcb->event_notify);
+ xcondition_free(dpy->xcb->reply_notify);
+ Xfree(dpy->xcb);
+}
diff --git a/libX11/src/xcms/AddDIC.c b/libX11/src/xcms/AddDIC.c
index d38d905cb..ecc6650ab 100644
--- a/libX11/src/xcms/AddDIC.c
+++ b/libX11/src/xcms/AddDIC.c
@@ -1,149 +1,149 @@
-
-/*
- * Code and supporting documentation (c) Copyright 1990 1991 Tektronix, Inc.
- * All Rights Reserved
- *
- * This file is a component of an X Window System-specific implementation
- * of Xcms based on the TekColor Color Management System. Permission is
- * hereby granted to use, copy, modify, sell, and otherwise distribute this
- * software and its documentation for any purpose and without fee, provided
- * that this copyright, permission, and disclaimer notice is reproduced in
- * all copies of this software and in supporting documentation. TekColor
- * is a trademark of Tektronix, Inc.
- *
- * Tektronix makes no representation about the suitability of this software
- * for any purpose. It is provided "as is" and with all faults.
- *
- * TEKTRONIX DISCLAIMS ALL WARRANTIES APPLICABLE TO THIS SOFTWARE,
- * INCLUDING THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE. IN NO EVENT SHALL TEKTRONIX BE LIABLE FOR ANY
- * SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER
- * RESULTING FROM LOSS OF USE, DATA, OR PROFITS, WHETHER IN AN ACTION OF
- * CONTRACT, NEGLIGENCE, OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
- * CONNECTION WITH THE USE OR THE PERFORMANCE OF THIS SOFTWARE.
- *
- *
- * NAME
- * XcmsAddDIC.c
- *
- * DESCRIPTION
- * Source for XcmsAddColorSpace
- *
- *
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-#include "Xcmsint.h"
-#include "Cv.h"
-
-
-/*
- * DEFINES
- */
-#define NextUnregDiCsID(lastid) \
- (XCMS_UNREG_ID(lastid) ? ++lastid : XCMS_FIRST_UNREG_DI_ID)
-#define MAX(x,y) ((x) < (y) ? (y) : (x))
-
-
-/*
- * NAME
- * XcmsAddColorSpace - Add a Device-Independent Color Space
- *
- * SYNOPSIS
- */
-Status
-XcmsAddColorSpace(XcmsColorSpace *pCS)
-/*
- * DESCRIPTION
- * DI Color Spaces are managed on a global basis.
- * This means that with exception of the provided DI color spaces:
- * CIEXYZ, CIExyY, CIELab, CIEuvY, CIELuv, and TekHVC
- * DI color spaces may have different XcmsColorFormat IDs between
- * clients. So, you must be careful when using XcmsColor
- * structures between clients! Use the routines XcmsFormatOfPrefix()
- * and XcmsPrefixOfFormat() appropriately.
- *
- * RETURNS
- * XcmsSuccess if succeeded, otherwise XcmsFailure
- */
-{
- XcmsColorSpace **papColorSpaces;
- XcmsColorSpace *ptmpCS;
- XcmsColorFormat lastID = 0;
-
- if ((pCS->id = _XcmsRegFormatOfPrefix(pCS->prefix)) != 0) {
- if (XCMS_DD_ID(pCS->id)) {
- /* This is a Device-Dependent Color Space */
- return(XcmsFailure);
- }
- /*
- * REGISTERED DI Color Space
- * then see if the color space has already been added to the
- * system:
- * a. If the same ID/prefix and same XcmsColorSpec is found,
- * then its a duplicate, so return success.
- * b. If same ID/prefix but different XcmsColorSpec is
- * found, then add the color space to the front of the
- * list using the same ID. This allows one to override
- * an existing DI Color Space.
- * c. Otherwise none found so just add the color space.
- */
- if ((papColorSpaces = _XcmsDIColorSpaces) != NULL) {
- while ((ptmpCS = *papColorSpaces++) != NULL) {
- if (pCS->id == ptmpCS->id) {
- if (pCS == ptmpCS) {
- /* a. duplicate*/
- return(XcmsSuccess);
- }
- /* b. same ID/prefix but different XcmsColorSpace */
- break;
- }
- }
- }
- /* c. None found */
- } else {
- /*
- * UNREGISTERED DI Color Space
- * then see if the color space has already been added to the
- * system:
- * a. If same prefix and XcmsColorSpec, then
- * its a duplicate ... return success.
- * b. If same prefix but different XcmsColorSpec, then
- * add the color space to the front of the list using
- * the same ID. This allows one to override an existing
- * DI Color Space.
- * c. Otherwise none found so, add the color space using the
- * next unregistered ID for the connection.
- */
- if ((papColorSpaces = _XcmsDIColorSpaces) != NULL) {
- while ((ptmpCS = *papColorSpaces++) != NULL) {
- lastID = MAX(lastID, ptmpCS->id);
- if (strcmp(pCS->prefix, ptmpCS->prefix) == 0) {
- if (pCS == ptmpCS) {
- /* a. duplicate */
- return(XcmsSuccess);
- }
- /* b. same prefix but different XcmsColorSpec */
- pCS->id = ptmpCS->id;
- goto AddColorSpace;
- }
- }
- }
- /* c. None found */
- pCS->id = NextUnregDiCsID(lastID);
- }
-
-
-AddColorSpace:
- if ((papColorSpaces = (XcmsColorSpace **)
- _XcmsPushPointerArray((XPointer *)_XcmsDIColorSpaces,
- (XPointer)pCS,
- (XPointer *)_XcmsDIColorSpacesInit)) == NULL) {
- return(XcmsFailure);
- }
- _XcmsDIColorSpaces = papColorSpaces;
- return(XcmsSuccess);
-}
+
+/*
+ * Code and supporting documentation (c) Copyright 1990 1991 Tektronix, Inc.
+ * All Rights Reserved
+ *
+ * This file is a component of an X Window System-specific implementation
+ * of Xcms based on the TekColor Color Management System. Permission is
+ * hereby granted to use, copy, modify, sell, and otherwise distribute this
+ * software and its documentation for any purpose and without fee, provided
+ * that this copyright, permission, and disclaimer notice is reproduced in
+ * all copies of this software and in supporting documentation. TekColor
+ * is a trademark of Tektronix, Inc.
+ *
+ * Tektronix makes no representation about the suitability of this software
+ * for any purpose. It is provided "as is" and with all faults.
+ *
+ * TEKTRONIX DISCLAIMS ALL WARRANTIES APPLICABLE TO THIS SOFTWARE,
+ * INCLUDING THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+ * PARTICULAR PURPOSE. IN NO EVENT SHALL TEKTRONIX BE LIABLE FOR ANY
+ * SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER
+ * RESULTING FROM LOSS OF USE, DATA, OR PROFITS, WHETHER IN AN ACTION OF
+ * CONTRACT, NEGLIGENCE, OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
+ * CONNECTION WITH THE USE OR THE PERFORMANCE OF THIS SOFTWARE.
+ *
+ *
+ * NAME
+ * XcmsAddDIC.c
+ *
+ * DESCRIPTION
+ * Source for XcmsAddColorSpace
+ *
+ *
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+#include "Xcmsint.h"
+#include "Cv.h"
+
+
+/*
+ * DEFINES
+ */
+#define NextUnregDiCsID(lastid) \
+ (XCMS_UNREG_ID(lastid) ? ++lastid : XCMS_FIRST_UNREG_DI_ID)
+#define MAX(x,y) ((x) < (y) ? (y) : (x))
+
+
+/*
+ * NAME
+ * XcmsAddColorSpace - Add a Device-Independent Color Space
+ *
+ * SYNOPSIS
+ */
+Status
+XcmsAddColorSpace(XcmsColorSpace *pCS)
+/*
+ * DESCRIPTION
+ * DI Color Spaces are managed on a global basis.
+ * This means that with exception of the provided DI color spaces:
+ * CIEXYZ, CIExyY, CIELab, CIEuvY, CIELuv, and TekHVC
+ * DI color spaces may have different XcmsColorFormat IDs between
+ * clients. So, you must be careful when using XcmsColor
+ * structures between clients! Use the routines XcmsFormatOfPrefix()
+ * and XcmsPrefixOfFormat() appropriately.
+ *
+ * RETURNS
+ * XcmsSuccess if succeeded, otherwise XcmsFailure
+ */
+{
+ XcmsColorSpace **papColorSpaces;
+ XcmsColorSpace *ptmpCS;
+ XcmsColorFormat lastID = 0;
+
+ if ((pCS->id = _XcmsRegFormatOfPrefix(pCS->prefix)) != 0) {
+ if (XCMS_DD_ID(pCS->id)) {
+ /* This is a Device-Dependent Color Space */
+ return(XcmsFailure);
+ }
+ /*
+ * REGISTERED DI Color Space
+ * then see if the color space has already been added to the
+ * system:
+ * a. If the same ID/prefix and same XcmsColorSpec is found,
+ * then its a duplicate, so return success.
+ * b. If same ID/prefix but different XcmsColorSpec is
+ * found, then add the color space to the front of the
+ * list using the same ID. This allows one to override
+ * an existing DI Color Space.
+ * c. Otherwise none found so just add the color space.
+ */
+ if ((papColorSpaces = _XcmsDIColorSpaces) != NULL) {
+ while ((ptmpCS = *papColorSpaces++) != NULL) {
+ if (pCS->id == ptmpCS->id) {
+ if (pCS == ptmpCS) {
+ /* a. duplicate*/
+ return(XcmsSuccess);
+ }
+ /* b. same ID/prefix but different XcmsColorSpace */
+ break;
+ }
+ }
+ }
+ /* c. None found */
+ } else {
+ /*
+ * UNREGISTERED DI Color Space
+ * then see if the color space has already been added to the
+ * system:
+ * a. If same prefix and XcmsColorSpec, then
+ * its a duplicate ... return success.
+ * b. If same prefix but different XcmsColorSpec, then
+ * add the color space to the front of the list using
+ * the same ID. This allows one to override an existing
+ * DI Color Space.
+ * c. Otherwise none found so, add the color space using the
+ * next unregistered ID for the connection.
+ */
+ if ((papColorSpaces = _XcmsDIColorSpaces) != NULL) {
+ while ((ptmpCS = *papColorSpaces++) != NULL) {
+ lastID = MAX(lastID, ptmpCS->id);
+ if (strcmp(pCS->prefix, ptmpCS->prefix) == 0) {
+ if (pCS == ptmpCS) {
+ /* a. duplicate */
+ return(XcmsSuccess);
+ }
+ /* b. same prefix but different XcmsColorSpec */
+ pCS->id = ptmpCS->id;
+ goto AddColorSpace;
+ }
+ }
+ }
+ /* c. None found */
+ pCS->id = NextUnregDiCsID(lastID);
+ }
+
+
+AddColorSpace:
+ if ((papColorSpaces = (XcmsColorSpace **)
+ _XcmsPushPointerArray((XPointer *)_XcmsDIColorSpaces,
+ (XPointer)pCS,
+ (XPointer *)_XcmsDIColorSpacesInit)) == NULL) {
+ return(XcmsFailure);
+ }
+ _XcmsDIColorSpaces = papColorSpaces;
+ return(XcmsSuccess);
+}
diff --git a/libX11/src/xcms/AddSF.c b/libX11/src/xcms/AddSF.c
index 97c6e09fe..2e244e73b 100644
--- a/libX11/src/xcms/AddSF.c
+++ b/libX11/src/xcms/AddSF.c
@@ -1,145 +1,145 @@
-
-/*
- * Code and supporting documentation (c) Copyright 1990 1991 Tektronix, Inc.
- * All Rights Reserved
- *
- * This file is a component of an X Window System-specific implementation
- * of Xcms based on the TekColor Color Management System. Permission is
- * hereby granted to use, copy, modify, sell, and otherwise distribute this
- * software and its documentation for any purpose and without fee, provided
- * that this copyright, permission, and disclaimer notice is reproduced in
- * all copies of this software and in supporting documentation. TekColor
- * is a trademark of Tektronix, Inc.
- *
- * Tektronix makes no representation about the suitability of this software
- * for any purpose. It is provided "as is" and with all faults.
- *
- * TEKTRONIX DISCLAIMS ALL WARRANTIES APPLICABLE TO THIS SOFTWARE,
- * INCLUDING THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE. IN NO EVENT SHALL TEKTRONIX BE LIABLE FOR ANY
- * SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER
- * RESULTING FROM LOSS OF USE, DATA, OR PROFITS, WHETHER IN AN ACTION OF
- * CONTRACT, NEGLIGENCE, OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
- * CONNECTION WITH THE USE OR THE PERFORMANCE OF THIS SOFTWARE.
- *
- *
- * NAME
- * XcmsAddSF.c
- *
- * DESCRIPTION
- * Source for XcmsAddFunctionSet
- *
- *
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-#include "Xcmsint.h"
-#include "Cv.h"
-
-/*
- * DEFINES
- */
-#define NextUnregDdCsID(lastid) \
- (XCMS_UNREG_ID(lastid) ? ++lastid : XCMS_FIRST_UNREG_DD_ID)
-#define MIN(x,y) ((x) > (y) ? (y) : (x))
-
-
-/*
- * NAME
- * XcmsAddFunctionSet - Add an Screen Color Characterization
- * Function Set
- *
- * SYNOPSIS
- */
-Status
-XcmsAddFunctionSet(XcmsFunctionSet *pNewFS)
-/*
- * DESCRIPTION
- * Additional Screen Color Characterization Function Sets are
- * managed on a global basis. This means that with exception
- * of the provided DD color spaces:
- * RGB and RGBi
- * DD color spaces may have different XcmsColorFormat IDs between
- * clients. So, you must be careful when using XcmsColorFormat
- * across clients! Use the routines XcmsFormatOfPrefix()
- * and XcmsPrefixOfFormat() appropriately.
- *
- * RETURNS
- * XcmsSuccess if succeeded, otherwise XcmsFailure
- *
- * CAVEATS
- * Additional Screen Color Characterization Function Sets
- * should be added prior to any use of the routine
- * XcmsCreateCCC(). If not, XcmsCCC structures created
- * prior to the call of this routines will not have had
- * a chance to initialize using the added Screen Color
- * Characterization Function Set.
- */
-{
- XcmsFunctionSet **papSCCFuncSets = _XcmsSCCFuncSets;
- XcmsColorSpace **papNewCSs;
- XcmsColorSpace *pNewCS, **paptmpCS;
- XcmsColorFormat lastID = 0;
-
-
- if (papSCCFuncSets != NULL) {
- if ((papNewCSs = pNewFS->DDColorSpaces) == NULL) {
- /*
- * Error, new Screen Color Characterization Function Set
- * missing color spaces
- */
- return(XcmsFailure);
- }
- while ((pNewCS = *papNewCSs++) != NULL) {
- if ((pNewCS->id = _XcmsRegFormatOfPrefix(pNewCS->prefix)) != 0) {
- if (XCMS_DI_ID(pNewCS->id)) {
- /* This is a Device-Independent Color Space */
- return(XcmsFailure);
- }
- /*
- * REGISTERED DD Color Space
- * therefore use the registered ID.
- */
- } else {
- /*
- * UNREGISTERED DD Color Space
- * then see if the color space is already in
- * _XcmsDDColorSpaces.
- * a. If same prefix, then use the same ID.
- * b. Otherwise, use a new ID.
- */
- for (paptmpCS = _XcmsDDColorSpaces; *paptmpCS != NULL;
- paptmpCS++){
- lastID = MIN(lastID, (*paptmpCS)->id);
- if (strcmp(pNewCS->prefix, (*paptmpCS)->prefix) == 0) {
- pNewCS->id = (*paptmpCS)->id;
- break;
- }
- }
- if (pNewCS->id == 0) {
- /* still haven't found one */
- pNewCS->id = NextUnregDdCsID(lastID);
- if ((paptmpCS = (XcmsColorSpace **)_XcmsPushPointerArray(
- (XPointer *) _XcmsDDColorSpaces,
- (XPointer) pNewCS,
- (XPointer *) _XcmsDDColorSpacesInit)) == NULL) {
- return(XcmsFailure);
- }
- _XcmsDDColorSpaces = paptmpCS;
- }
- }
- }
- }
- if ((papSCCFuncSets = (XcmsFunctionSet **)
- _XcmsPushPointerArray((XPointer *) _XcmsSCCFuncSets,
- (XPointer) pNewFS,
- (XPointer *)_XcmsSCCFuncSetsInit)) == NULL) {
- return(XcmsFailure);
- }
- _XcmsSCCFuncSets = papSCCFuncSets;
-
- return(XcmsSuccess);
-}
+
+/*
+ * Code and supporting documentation (c) Copyright 1990 1991 Tektronix, Inc.
+ * All Rights Reserved
+ *
+ * This file is a component of an X Window System-specific implementation
+ * of Xcms based on the TekColor Color Management System. Permission is
+ * hereby granted to use, copy, modify, sell, and otherwise distribute this
+ * software and its documentation for any purpose and without fee, provided
+ * that this copyright, permission, and disclaimer notice is reproduced in
+ * all copies of this software and in supporting documentation. TekColor
+ * is a trademark of Tektronix, Inc.
+ *
+ * Tektronix makes no representation about the suitability of this software
+ * for any purpose. It is provided "as is" and with all faults.
+ *
+ * TEKTRONIX DISCLAIMS ALL WARRANTIES APPLICABLE TO THIS SOFTWARE,
+ * INCLUDING THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+ * PARTICULAR PURPOSE. IN NO EVENT SHALL TEKTRONIX BE LIABLE FOR ANY
+ * SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER
+ * RESULTING FROM LOSS OF USE, DATA, OR PROFITS, WHETHER IN AN ACTION OF
+ * CONTRACT, NEGLIGENCE, OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
+ * CONNECTION WITH THE USE OR THE PERFORMANCE OF THIS SOFTWARE.
+ *
+ *
+ * NAME
+ * XcmsAddSF.c
+ *
+ * DESCRIPTION
+ * Source for XcmsAddFunctionSet
+ *
+ *
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+#include "Xcmsint.h"
+#include "Cv.h"
+
+/*
+ * DEFINES
+ */
+#define NextUnregDdCsID(lastid) \
+ (XCMS_UNREG_ID(lastid) ? ++lastid : XCMS_FIRST_UNREG_DD_ID)
+#define MIN(x,y) ((x) > (y) ? (y) : (x))
+
+
+/*
+ * NAME
+ * XcmsAddFunctionSet - Add an Screen Color Characterization
+ * Function Set
+ *
+ * SYNOPSIS
+ */
+Status
+XcmsAddFunctionSet(XcmsFunctionSet *pNewFS)
+/*
+ * DESCRIPTION
+ * Additional Screen Color Characterization Function Sets are
+ * managed on a global basis. This means that with exception
+ * of the provided DD color spaces:
+ * RGB and RGBi
+ * DD color spaces may have different XcmsColorFormat IDs between
+ * clients. So, you must be careful when using XcmsColorFormat
+ * across clients! Use the routines XcmsFormatOfPrefix()
+ * and XcmsPrefixOfFormat() appropriately.
+ *
+ * RETURNS
+ * XcmsSuccess if succeeded, otherwise XcmsFailure
+ *
+ * CAVEATS
+ * Additional Screen Color Characterization Function Sets
+ * should be added prior to any use of the routine
+ * XcmsCreateCCC(). If not, XcmsCCC structures created
+ * prior to the call of this routines will not have had
+ * a chance to initialize using the added Screen Color
+ * Characterization Function Set.
+ */
+{
+ XcmsFunctionSet **papSCCFuncSets = _XcmsSCCFuncSets;
+ XcmsColorSpace **papNewCSs;
+ XcmsColorSpace *pNewCS, **paptmpCS;
+ XcmsColorFormat lastID = 0;
+
+
+ if (papSCCFuncSets != NULL) {
+ if ((papNewCSs = pNewFS->DDColorSpaces) == NULL) {
+ /*
+ * Error, new Screen Color Characterization Function Set
+ * missing color spaces
+ */
+ return(XcmsFailure);
+ }
+ while ((pNewCS = *papNewCSs++) != NULL) {
+ if ((pNewCS->id = _XcmsRegFormatOfPrefix(pNewCS->prefix)) != 0) {
+ if (XCMS_DI_ID(pNewCS->id)) {
+ /* This is a Device-Independent Color Space */
+ return(XcmsFailure);
+ }
+ /*
+ * REGISTERED DD Color Space
+ * therefore use the registered ID.
+ */
+ } else {
+ /*
+ * UNREGISTERED DD Color Space
+ * then see if the color space is already in
+ * _XcmsDDColorSpaces.
+ * a. If same prefix, then use the same ID.
+ * b. Otherwise, use a new ID.
+ */
+ for (paptmpCS = _XcmsDDColorSpaces; *paptmpCS != NULL;
+ paptmpCS++){
+ lastID = MIN(lastID, (*paptmpCS)->id);
+ if (strcmp(pNewCS->prefix, (*paptmpCS)->prefix) == 0) {
+ pNewCS->id = (*paptmpCS)->id;
+ break;
+ }
+ }
+ if (pNewCS->id == 0) {
+ /* still haven't found one */
+ pNewCS->id = NextUnregDdCsID(lastID);
+ if ((paptmpCS = (XcmsColorSpace **)_XcmsPushPointerArray(
+ (XPointer *) _XcmsDDColorSpaces,
+ (XPointer) pNewCS,
+ (XPointer *) _XcmsDDColorSpacesInit)) == NULL) {
+ return(XcmsFailure);
+ }
+ _XcmsDDColorSpaces = paptmpCS;
+ }
+ }
+ }
+ }
+ if ((papSCCFuncSets = (XcmsFunctionSet **)
+ _XcmsPushPointerArray((XPointer *) _XcmsSCCFuncSets,
+ (XPointer) pNewFS,
+ (XPointer *)_XcmsSCCFuncSetsInit)) == NULL) {
+ return(XcmsFailure);
+ }
+ _XcmsSCCFuncSets = papSCCFuncSets;
+
+ return(XcmsSuccess);
+}
diff --git a/libX11/src/xcms/CCC.c b/libX11/src/xcms/CCC.c
index d0b055b7a..090b1078c 100644
--- a/libX11/src/xcms/CCC.c
+++ b/libX11/src/xcms/CCC.c
@@ -1,286 +1,286 @@
-
-/*
- * Code and supporting documentation (c) Copyright 1990 1991 Tektronix, Inc.
- * All Rights Reserved
- *
- * This file is a component of an X Window System-specific implementation
- * of Xcms based on the TekColor Color Management System. Permission is
- * hereby granted to use, copy, modify, sell, and otherwise distribute this
- * software and its documentation for any purpose and without fee, provided
- * that this copyright, permission, and disclaimer notice is reproduced in
- * all copies of this software and in supporting documentation. TekColor
- * is a trademark of Tektronix, Inc.
- *
- * Tektronix makes no representation about the suitability of this software
- * for any purpose. It is provided "as is" and with all faults.
- *
- * TEKTRONIX DISCLAIMS ALL WARRANTIES APPLICABLE TO THIS SOFTWARE,
- * INCLUDING THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE. IN NO EVENT SHALL TEKTRONIX BE LIABLE FOR ANY
- * SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER
- * RESULTING FROM LOSS OF USE, DATA, OR PROFITS, WHETHER IN AN ACTION OF
- * CONTRACT, NEGLIGENCE, OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
- * CONNECTION WITH THE USE OR THE PERFORMANCE OF THIS SOFTWARE.
- *
- *
- * NAME
- * XcmsCCC.c - Color Conversion Context Routines
- *
- * DESCRIPTION
- * Routines to create, access, and free Color Conversion
- * Context structures.
- *
- *
- */
-
-/*
-
-Copyright 1994, 1998 The Open Group
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
-
-The above copyright notice and this permission notice shall be included
-in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
-IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR
-OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
-ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall
-not be used in advertising or otherwise to promote the sale, use or
-other dealings in this Software without prior written authorization
-from The Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include <stdio.h>
-#include "Xlibint.h"
-#include "Xcmsint.h"
-#include "Cv.h"
-
-
-
-/************************************************************************
- * *
- * PUBLIC INTERFACES *
- * *
- ************************************************************************/
-
-/*
- * NAME
- * XcmsCreateCCC
- *
- * SYNOPSIS
- */
-
-XcmsCCC
-XcmsCreateCCC(
- Display *dpy,
- int screenNumber,
- Visual *visual,
- XcmsColor *clientWhitePt,
- XcmsCompressionProc gamutCompProc,
- XPointer gamutCompClientData,
- XcmsWhiteAdjustProc whitePtAdjProc,
- XPointer whitePtAdjClientData)
-/*
- * DESCRIPTION
- * Given a Display, Screen, Visual, etc., this routine creates
- * an appropriate Color Conversion Context.
- *
- * RETURNS
- * Returns NULL if failed; otherwise address of the newly
- * created XcmsCCC.
- *
- */
-{
- XcmsCCC pDefaultCCC = XcmsDefaultCCC(dpy, screenNumber);
- XcmsCCC newccc;
- XcmsIntensityMap *pIMap;
- XcmsPerScrnInfo *pNewScrnInfo;
-
- if (pDefaultCCC == NULL ||
- !(newccc = (XcmsCCC) Xcalloc(1, (unsigned) sizeof(XcmsCCCRec)))) {
- return(NULL);
- }
-
- /*
- * Should inherit the following as result of a memmove():
- * dpy
- * screenNumber
- * pPerScrnInfo
- */
- memcpy((char *)newccc, (char *)pDefaultCCC, sizeof(XcmsCCCRec));
- if (clientWhitePt) {
- memcpy((char *)&newccc->clientWhitePt, (char *)clientWhitePt,
- sizeof(XcmsColor));
- }
- if (gamutCompProc) {
- newccc->gamutCompProc = gamutCompProc;
- }
- if (gamutCompClientData) {
- newccc->gamutCompClientData = gamutCompClientData;
- }
- if (whitePtAdjProc) {
- newccc->whitePtAdjProc = whitePtAdjProc;
- }
- if (whitePtAdjClientData) {
- newccc->whitePtAdjClientData = whitePtAdjClientData;
- }
-
- /*
- * Now check our list of per-Visual Intensity tables.
- * If one exists replace the pPerScrnInfo.
- */
- if ((pIMap = _XcmsGetIntensityMap(dpy, visual)) != NULL) {
- if (!(pNewScrnInfo = (XcmsPerScrnInfo *)
- Xcalloc(1, (unsigned) sizeof(XcmsPerScrnInfo)))) {
- Xfree(newccc);
- return(NULL);
- }
- memcpy((char *)pNewScrnInfo, (char *)newccc->pPerScrnInfo,
- sizeof(XcmsPerScrnInfo));
- pNewScrnInfo->screenData = pIMap->screenData;
- newccc->pPerScrnInfo = pNewScrnInfo;
- }
-
- /*
- * Set visual component
- */
- newccc->visual = visual;
-
- return(newccc);
-}
-
-
-/*
- * NAME
- * XcmsDefaultCCC
- *
- * SYNOPSIS
- */
-XcmsCCC
-XcmsDefaultCCC(
- Display *dpy,
- int screenNumber)
-/*
- * DESCRIPTION
- * Given a Display and Screen, this routine creates
- * returns the Screen's default Color Conversion Context.
- * Note that a Screen's default CCC is built with the
- * screen default visual.
- *
- * RETURNS
- * Returns NULL if failed; otherwise address of the
- * XcmsCCC for the Screen's default CCC.
- *
- */
-{
- XcmsCCC ccc;
-
-
- if ((screenNumber < 0) || (screenNumber >= ScreenCount(dpy))) {
- return((XcmsCCC)NULL);
- }
-
- /*
- * Check if the XcmsCCC's for each screen has been created
- */
- if ((XcmsCCC)dpy->cms.defaultCCCs == NULL) {
- if (!_XcmsInitDefaultCCCs(dpy)) {
- return((XcmsCCC)NULL);
- }
- }
-
- ccc = (XcmsCCC)dpy->cms.defaultCCCs + screenNumber;
-
- if (!ccc->pPerScrnInfo) {
- /*
- * Need to create the XcmsPerScrnInfo structure. The
- * _XcmsInitScrnInfo routine will create the XcmsPerScrnInfo
- * structure as well as initialize its functionSet and pScreenData
- * components.
- */
- if (!_XcmsInitScrnInfo(dpy, screenNumber)) {
- return((XcmsCCC)NULL);
- }
- return(ccc);
- } else {
- /*
- * If ccc->pPerScrnInfo->state == XcmsInitSuccess,
- * then the pPerScrnInfo component has already been initialized
- * therefore, just return ccc.
- * If ccc->pPerScrnInfo->state == XcmsInitFailure,
- * then this means that we already attempted to initialize
- * the pPerScrnInfo component but failed therefore stuffing
- * the pPerScrnInfo component with defaults. Just return ccc.
- * If ccc->pPerScrnInfo->state == XcmsInitNone,
- * then attempt to initialize the pPerScrnInfo component.
- */
- switch (ccc->pPerScrnInfo->state) {
- case XcmsInitFailure :
- /* fall through */
- case XcmsInitSuccess :
- return(ccc);
- case XcmsInitNone :
- /* XcmsPerScreenInfo has not been initialized */
- if (!_XcmsInitScrnInfo(dpy, screenNumber)) {
- return((XcmsCCC)NULL);
- }
- return(ccc);
- default :
- return((XcmsCCC)NULL);
- }
- }
-}
-
-
-/*
- * NAME
- * XcmsFreeCCC
- *
- * SYNOPSIS
- */
-void
-XcmsFreeCCC(XcmsCCC ccc)
-/*
- * DESCRIPTION
- * Frees memory associated with a Color Conversion Context
- * that was created with XcmsCreateCCC().
- *
- * RETURNS
- * void
- *
- */
-{
- if (ccc->dpy->cms.defaultCCCs &&
- ccc == ((XcmsCCC)ccc->dpy->cms.defaultCCCs) + ccc->screenNumber) {
- /* do not allow clients to free DefaultCCC's */
- return;
- }
-
- /*
- * Note that XcmsPerScrnInfo sub-structures are freed here only if
- * they are for visuals that have per-Visual intensity tables.
- * Otherwise the XcmsPerScrnInfo structure is being shared!
- * For the latter, there is only one allocated per Screen and it just
- * so happens * that we place its initial reference is placed in the
- * default CCC. The routine _XcmsFreeDefaultCCCs frees them.
- */
- if (_XcmsGetIntensityMap(ccc->dpy, ccc->visual) != NULL) {
- Xfree(ccc->pPerScrnInfo);
- }
-
- Xfree(ccc);
-}
+
+/*
+ * Code and supporting documentation (c) Copyright 1990 1991 Tektronix, Inc.
+ * All Rights Reserved
+ *
+ * This file is a component of an X Window System-specific implementation
+ * of Xcms based on the TekColor Color Management System. Permission is
+ * hereby granted to use, copy, modify, sell, and otherwise distribute this
+ * software and its documentation for any purpose and without fee, provided
+ * that this copyright, permission, and disclaimer notice is reproduced in
+ * all copies of this software and in supporting documentation. TekColor
+ * is a trademark of Tektronix, Inc.
+ *
+ * Tektronix makes no representation about the suitability of this software
+ * for any purpose. It is provided "as is" and with all faults.
+ *
+ * TEKTRONIX DISCLAIMS ALL WARRANTIES APPLICABLE TO THIS SOFTWARE,
+ * INCLUDING THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+ * PARTICULAR PURPOSE. IN NO EVENT SHALL TEKTRONIX BE LIABLE FOR ANY
+ * SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER
+ * RESULTING FROM LOSS OF USE, DATA, OR PROFITS, WHETHER IN AN ACTION OF
+ * CONTRACT, NEGLIGENCE, OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
+ * CONNECTION WITH THE USE OR THE PERFORMANCE OF THIS SOFTWARE.
+ *
+ *
+ * NAME
+ * XcmsCCC.c - Color Conversion Context Routines
+ *
+ * DESCRIPTION
+ * Routines to create, access, and free Color Conversion
+ * Context structures.
+ *
+ *
+ */
+
+/*
+
+Copyright 1994, 1998 The Open Group
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
+
+The above copyright notice and this permission notice shall be included
+in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR
+OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
+ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group shall
+not be used in advertising or otherwise to promote the sale, use or
+other dealings in this Software without prior written authorization
+from The Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include <stdio.h>
+#include "Xlibint.h"
+#include "Xcmsint.h"
+#include "Cv.h"
+
+
+
+/************************************************************************
+ * *
+ * PUBLIC INTERFACES *
+ * *
+ ************************************************************************/
+
+/*
+ * NAME
+ * XcmsCreateCCC
+ *
+ * SYNOPSIS
+ */
+
+XcmsCCC
+XcmsCreateCCC(
+ Display *dpy,
+ int screenNumber,
+ Visual *visual,
+ XcmsColor *clientWhitePt,
+ XcmsCompressionProc gamutCompProc,
+ XPointer gamutCompClientData,
+ XcmsWhiteAdjustProc whitePtAdjProc,
+ XPointer whitePtAdjClientData)
+/*
+ * DESCRIPTION
+ * Given a Display, Screen, Visual, etc., this routine creates
+ * an appropriate Color Conversion Context.
+ *
+ * RETURNS
+ * Returns NULL if failed; otherwise address of the newly
+ * created XcmsCCC.
+ *
+ */
+{
+ XcmsCCC pDefaultCCC = XcmsDefaultCCC(dpy, screenNumber);
+ XcmsCCC newccc;
+ XcmsIntensityMap *pIMap;
+ XcmsPerScrnInfo *pNewScrnInfo;
+
+ if (pDefaultCCC == NULL ||
+ !(newccc = (XcmsCCC) Xcalloc(1, (unsigned) sizeof(XcmsCCCRec)))) {
+ return(NULL);
+ }
+
+ /*
+ * Should inherit the following as result of a memmove():
+ * dpy
+ * screenNumber
+ * pPerScrnInfo
+ */
+ memcpy((char *)newccc, (char *)pDefaultCCC, sizeof(XcmsCCCRec));
+ if (clientWhitePt) {
+ memcpy((char *)&newccc->clientWhitePt, (char *)clientWhitePt,
+ sizeof(XcmsColor));
+ }
+ if (gamutCompProc) {
+ newccc->gamutCompProc = gamutCompProc;
+ }
+ if (gamutCompClientData) {
+ newccc->gamutCompClientData = gamutCompClientData;
+ }
+ if (whitePtAdjProc) {
+ newccc->whitePtAdjProc = whitePtAdjProc;
+ }
+ if (whitePtAdjClientData) {
+ newccc->whitePtAdjClientData = whitePtAdjClientData;
+ }
+
+ /*
+ * Now check our list of per-Visual Intensity tables.
+ * If one exists replace the pPerScrnInfo.
+ */
+ if ((pIMap = _XcmsGetIntensityMap(dpy, visual)) != NULL) {
+ if (!(pNewScrnInfo = (XcmsPerScrnInfo *)
+ Xcalloc(1, (unsigned) sizeof(XcmsPerScrnInfo)))) {
+ Xfree(newccc);
+ return(NULL);
+ }
+ memcpy((char *)pNewScrnInfo, (char *)newccc->pPerScrnInfo,
+ sizeof(XcmsPerScrnInfo));
+ pNewScrnInfo->screenData = pIMap->screenData;
+ newccc->pPerScrnInfo = pNewScrnInfo;
+ }
+
+ /*
+ * Set visual component
+ */
+ newccc->visual = visual;
+
+ return(newccc);
+}
+
+
+/*
+ * NAME
+ * XcmsDefaultCCC
+ *
+ * SYNOPSIS
+ */
+XcmsCCC
+XcmsDefaultCCC(
+ Display *dpy,
+ int screenNumber)
+/*
+ * DESCRIPTION
+ * Given a Display and Screen, this routine creates
+ * returns the Screen's default Color Conversion Context.
+ * Note that a Screen's default CCC is built with the
+ * screen default visual.
+ *
+ * RETURNS
+ * Returns NULL if failed; otherwise address of the
+ * XcmsCCC for the Screen's default CCC.
+ *
+ */
+{
+ XcmsCCC ccc;
+
+
+ if ((screenNumber < 0) || (screenNumber >= ScreenCount(dpy))) {
+ return((XcmsCCC)NULL);
+ }
+
+ /*
+ * Check if the XcmsCCC's for each screen has been created
+ */
+ if ((XcmsCCC)dpy->cms.defaultCCCs == NULL) {
+ if (!_XcmsInitDefaultCCCs(dpy)) {
+ return((XcmsCCC)NULL);
+ }
+ }
+
+ ccc = (XcmsCCC)dpy->cms.defaultCCCs + screenNumber;
+
+ if (!ccc->pPerScrnInfo) {
+ /*
+ * Need to create the XcmsPerScrnInfo structure. The
+ * _XcmsInitScrnInfo routine will create the XcmsPerScrnInfo
+ * structure as well as initialize its functionSet and pScreenData
+ * components.
+ */
+ if (!_XcmsInitScrnInfo(dpy, screenNumber)) {
+ return((XcmsCCC)NULL);
+ }
+ return(ccc);
+ } else {
+ /*
+ * If ccc->pPerScrnInfo->state == XcmsInitSuccess,
+ * then the pPerScrnInfo component has already been initialized
+ * therefore, just return ccc.
+ * If ccc->pPerScrnInfo->state == XcmsInitFailure,
+ * then this means that we already attempted to initialize
+ * the pPerScrnInfo component but failed therefore stuffing
+ * the pPerScrnInfo component with defaults. Just return ccc.
+ * If ccc->pPerScrnInfo->state == XcmsInitNone,
+ * then attempt to initialize the pPerScrnInfo component.
+ */
+ switch (ccc->pPerScrnInfo->state) {
+ case XcmsInitFailure :
+ /* fall through */
+ case XcmsInitSuccess :
+ return(ccc);
+ case XcmsInitNone :
+ /* XcmsPerScreenInfo has not been initialized */
+ if (!_XcmsInitScrnInfo(dpy, screenNumber)) {
+ return((XcmsCCC)NULL);
+ }
+ return(ccc);
+ default :
+ return((XcmsCCC)NULL);
+ }
+ }
+}
+
+
+/*
+ * NAME
+ * XcmsFreeCCC
+ *
+ * SYNOPSIS
+ */
+void
+XcmsFreeCCC(XcmsCCC ccc)
+/*
+ * DESCRIPTION
+ * Frees memory associated with a Color Conversion Context
+ * that was created with XcmsCreateCCC().
+ *
+ * RETURNS
+ * void
+ *
+ */
+{
+ if (ccc->dpy->cms.defaultCCCs &&
+ ccc == ((XcmsCCC)ccc->dpy->cms.defaultCCCs) + ccc->screenNumber) {
+ /* do not allow clients to free DefaultCCC's */
+ return;
+ }
+
+ /*
+ * Note that XcmsPerScrnInfo sub-structures are freed here only if
+ * they are for visuals that have per-Visual intensity tables.
+ * Otherwise the XcmsPerScrnInfo structure is being shared!
+ * For the latter, there is only one allocated per Screen and it just
+ * so happens * that we place its initial reference is placed in the
+ * default CCC. The routine _XcmsFreeDefaultCCCs frees them.
+ */
+ if (_XcmsGetIntensityMap(ccc->dpy, ccc->visual) != NULL) {
+ Xfree(ccc->pPerScrnInfo);
+ }
+
+ Xfree(ccc);
+}
diff --git a/libX11/src/xcms/Cv.h b/libX11/src/xcms/Cv.h
index c2a93a4aa..0b662811f 100644
--- a/libX11/src/xcms/Cv.h
+++ b/libX11/src/xcms/Cv.h
@@ -1,189 +1,189 @@
-
-#ifndef _CV_H_
-#define _CV_H_
-
-/* variables */
-extern const char _XcmsCIEXYZ_prefix[];
-extern const char _XcmsCIEuvY_prefix[];
-extern const char _XcmsCIExyY_prefix[];
-extern const char _XcmsCIELab_prefix[];
-extern const char _XcmsCIELuv_prefix[];
-extern const char _XcmsTekHVC_prefix[];
-extern const char _XcmsRGBi_prefix[];
-extern const char _XcmsRGB_prefix[];
-
-extern XcmsColorSpace XcmsUNDEFINEDColorSpace;
-extern XcmsColorSpace XcmsTekHVCColorSpace;
-extern XcmsColorSpace XcmsCIEXYZColorSpace;
-extern XcmsColorSpace XcmsCIEuvYColorSpace;
-extern XcmsColorSpace XcmsCIExyYColorSpace;
-extern XcmsColorSpace XcmsCIELabColorSpace;
-extern XcmsColorSpace XcmsCIELuvColorSpace;
-extern XcmsColorSpace XcmsRGBColorSpace;
-extern XcmsColorSpace XcmsRGBiColorSpace;
-
-extern XcmsColorSpace *_XcmsDIColorSpacesInit[];
-extern XcmsColorSpace **_XcmsDIColorSpaces;
-
-extern XcmsColorSpace *_XcmsDDColorSpacesInit[];
-extern XcmsColorSpace **_XcmsDDColorSpaces;
-
-extern XcmsFunctionSet XcmsLinearRGBFunctionSet;
-
-extern XcmsFunctionSet *_XcmsSCCFuncSetsInit[];
-extern XcmsFunctionSet **_XcmsSCCFuncSets;
-
-extern XcmsRegColorSpaceEntry _XcmsRegColorSpaces[];
-
-/* functions */
-extern XPointer *
-_XcmsCopyPointerArray(
- XPointer *pap);
-extern void
-_XcmsFreePointerArray(
- XPointer *pap);
-extern XPointer *
-_XcmsPushPointerArray(
- XPointer *pap,
- XPointer p,
- XPointer *papNoFree);
-extern Status
-_XcmsCIEXYZ_ValidSpec(
- XcmsColor *pColor);
-extern Status
-_XcmsCIEuvY_ValidSpec(
- XcmsColor *pColor);
-extern int
-_XcmsTekHVC_CheckModify(
- XcmsColor *pColor);
-
-extern Status
-_XcmsTekHVCQueryMaxVCRGB(
- XcmsCCC ccc,
- XcmsFloat hue,
- XcmsColor *pColor_return,
- XcmsRGBi *pRGB_return);
-extern Status
-_XcmsCIELabQueryMaxLCRGB(
- XcmsCCC ccc,
- XcmsFloat hue, /* hue in radians */
- XcmsColor *pColor_return,
- XcmsRGBi *pRGB_return);
-extern Status
-_XcmsConvertColorsWithWhitePt(
- XcmsCCC ccc,
- XcmsColor *pColors_in_out,
- XcmsColor *pWhitePt,
- unsigned int nColors,
- XcmsColorFormat newFormat,
- Bool *pCompressed);
-
-extern Status
-_XcmsDIConvertColors(
- XcmsCCC ccc,
- XcmsColor *pColors_in_out,
- XcmsColor *pWhitePt,
- unsigned int nColors,
- XcmsColorFormat newFormat);
-extern Status
-_XcmsDDConvertColors(
- XcmsCCC ccc,
- XcmsColor *pColors_in_out,
- unsigned int nColors,
- XcmsColorFormat newFormat,
- Bool *pCompressed);
-extern XcmsColorFormat
-_XcmsRegFormatOfPrefix(
- _Xconst char *prefix);
-extern void
-_XColor_to_XcmsRGB(
- XcmsCCC ccc,
- XColor *pXColors,
- XcmsColor *pColors,
- unsigned int nColors);
-extern Status
-_XcmsSetGetColor(
- Status (*xColorProc)(
- Display* /* display */,
- Colormap /* colormap */,
- XColor* /* screen_in_out */),
- Display *dpy,
- Colormap cmap,
- XcmsColor *pColors_in_out,
- XcmsColorFormat result_format,
- Bool *pCompressed);
-extern Status
-_XcmsSetGetColors(
- Status (*xColorProc)(
- Display* /* display */,
- Colormap /* colormap */,
- XColor* /* screen_in_out */,
- int /* nColors */),
- Display *dpy,
- Colormap cmap,
- XcmsColor *pColors_in_out,
- int nColors,
- XcmsColorFormat result_format,
- Bool *pCompressed);
-extern Status
-_XcmsCIELuvQueryMaxLCRGB(
- XcmsCCC ccc,
- XcmsFloat hue, /* hue in radians */
- XcmsColor *pColor_return,
- XcmsRGBi *pRGB_return);
-
-extern XcmsIntensityMap *
-_XcmsGetIntensityMap(
- Display *dpy,
- Visual *visual);
-extern int
-_XcmsInitDefaultCCCs(
- Display *dpy);
-extern int
-_XcmsInitScrnInfo(
- register Display *dpy,
- int screenNumber);
-extern XcmsCmapRec *
-_XcmsCopyCmapRecAndFree(
- Display *dpy,
- Colormap src_cmap,
- Colormap copy_cmap);
-extern void
-_XcmsCopyISOLatin1Lowered(
- char *dst,
- const char *src);
-extern int
-_XcmsEqualWhitePts(
- XcmsCCC ccc, XcmsColor *pWhitePt1, XcmsColor *pWhitePt2);
-extern int
-_XcmsLRGB_InitScrnDefault(
- Display *dpy,
- int screenNumber,
- XcmsPerScrnInfo *pPerScrnInfo);
-extern void
-_XcmsFreeIntensityMaps(
- Display *dpy);
-extern int
-_XcmsGetProperty(
- Display *pDpy,
- Window w,
- Atom property,
- int *pFormat,
- unsigned long *pNItems,
- unsigned long *pNBytes,
- char **pValue);
-extern unsigned long
-_XcmsGetElement(
- int format,
- char **pValue,
- unsigned long *pCount);
-extern void
-_XcmsUnresolveColor(
- XcmsCCC ccc,
- XcmsColor *pColor);
-extern void
-_XcmsResolveColor(
- XcmsCCC ccc,
- XcmsColor *pXcmsColor);
-
-#endif /* _CV_H_ */
+
+#ifndef _CV_H_
+#define _CV_H_
+
+/* variables */
+extern const char _XcmsCIEXYZ_prefix[];
+extern const char _XcmsCIEuvY_prefix[];
+extern const char _XcmsCIExyY_prefix[];
+extern const char _XcmsCIELab_prefix[];
+extern const char _XcmsCIELuv_prefix[];
+extern const char _XcmsTekHVC_prefix[];
+extern const char _XcmsRGBi_prefix[];
+extern const char _XcmsRGB_prefix[];
+
+extern XcmsColorSpace XcmsUNDEFINEDColorSpace;
+extern XcmsColorSpace XcmsTekHVCColorSpace;
+extern XcmsColorSpace XcmsCIEXYZColorSpace;
+extern XcmsColorSpace XcmsCIEuvYColorSpace;
+extern XcmsColorSpace XcmsCIExyYColorSpace;
+extern XcmsColorSpace XcmsCIELabColorSpace;
+extern XcmsColorSpace XcmsCIELuvColorSpace;
+extern XcmsColorSpace XcmsRGBColorSpace;
+extern XcmsColorSpace XcmsRGBiColorSpace;
+
+extern XcmsColorSpace *_XcmsDIColorSpacesInit[];
+extern XcmsColorSpace **_XcmsDIColorSpaces;
+
+extern XcmsColorSpace *_XcmsDDColorSpacesInit[];
+extern XcmsColorSpace **_XcmsDDColorSpaces;
+
+extern XcmsFunctionSet XcmsLinearRGBFunctionSet;
+
+extern XcmsFunctionSet *_XcmsSCCFuncSetsInit[];
+extern XcmsFunctionSet **_XcmsSCCFuncSets;
+
+extern XcmsRegColorSpaceEntry _XcmsRegColorSpaces[];
+
+/* functions */
+extern XPointer *
+_XcmsCopyPointerArray(
+ XPointer *pap);
+extern void
+_XcmsFreePointerArray(
+ XPointer *pap);
+extern XPointer *
+_XcmsPushPointerArray(
+ XPointer *pap,
+ XPointer p,
+ XPointer *papNoFree);
+extern Status
+_XcmsCIEXYZ_ValidSpec(
+ XcmsColor *pColor);
+extern Status
+_XcmsCIEuvY_ValidSpec(
+ XcmsColor *pColor);
+extern int
+_XcmsTekHVC_CheckModify(
+ XcmsColor *pColor);
+
+extern Status
+_XcmsTekHVCQueryMaxVCRGB(
+ XcmsCCC ccc,
+ XcmsFloat hue,
+ XcmsColor *pColor_return,
+ XcmsRGBi *pRGB_return);
+extern Status
+_XcmsCIELabQueryMaxLCRGB(
+ XcmsCCC ccc,
+ XcmsFloat hue, /* hue in radians */
+ XcmsColor *pColor_return,
+ XcmsRGBi *pRGB_return);
+extern Status
+_XcmsConvertColorsWithWhitePt(
+ XcmsCCC ccc,
+ XcmsColor *pColors_in_out,
+ XcmsColor *pWhitePt,
+ unsigned int nColors,
+ XcmsColorFormat newFormat,
+ Bool *pCompressed);
+
+extern Status
+_XcmsDIConvertColors(
+ XcmsCCC ccc,
+ XcmsColor *pColors_in_out,
+ XcmsColor *pWhitePt,
+ unsigned int nColors,
+ XcmsColorFormat newFormat);
+extern Status
+_XcmsDDConvertColors(
+ XcmsCCC ccc,
+ XcmsColor *pColors_in_out,
+ unsigned int nColors,
+ XcmsColorFormat newFormat,
+ Bool *pCompressed);
+extern XcmsColorFormat
+_XcmsRegFormatOfPrefix(
+ _Xconst char *prefix);
+extern void
+_XColor_to_XcmsRGB(
+ XcmsCCC ccc,
+ XColor *pXColors,
+ XcmsColor *pColors,
+ unsigned int nColors);
+extern Status
+_XcmsSetGetColor(
+ Status (*xColorProc)(
+ Display* /* display */,
+ Colormap /* colormap */,
+ XColor* /* screen_in_out */),
+ Display *dpy,
+ Colormap cmap,
+ XcmsColor *pColors_in_out,
+ XcmsColorFormat result_format,
+ Bool *pCompressed);
+extern Status
+_XcmsSetGetColors(
+ Status (*xColorProc)(
+ Display* /* display */,
+ Colormap /* colormap */,
+ XColor* /* screen_in_out */,
+ int /* nColors */),
+ Display *dpy,
+ Colormap cmap,
+ XcmsColor *pColors_in_out,
+ int nColors,
+ XcmsColorFormat result_format,
+ Bool *pCompressed);
+extern Status
+_XcmsCIELuvQueryMaxLCRGB(
+ XcmsCCC ccc,
+ XcmsFloat hue, /* hue in radians */
+ XcmsColor *pColor_return,
+ XcmsRGBi *pRGB_return);
+
+extern XcmsIntensityMap *
+_XcmsGetIntensityMap(
+ Display *dpy,
+ Visual *visual);
+extern int
+_XcmsInitDefaultCCCs(
+ Display *dpy);
+extern int
+_XcmsInitScrnInfo(
+ register Display *dpy,
+ int screenNumber);
+extern XcmsCmapRec *
+_XcmsCopyCmapRecAndFree(
+ Display *dpy,
+ Colormap src_cmap,
+ Colormap copy_cmap);
+extern void
+_XcmsCopyISOLatin1Lowered(
+ char *dst,
+ const char *src);
+extern int
+_XcmsEqualWhitePts(
+ XcmsCCC ccc, XcmsColor *pWhitePt1, XcmsColor *pWhitePt2);
+extern int
+_XcmsLRGB_InitScrnDefault(
+ Display *dpy,
+ int screenNumber,
+ XcmsPerScrnInfo *pPerScrnInfo);
+extern void
+_XcmsFreeIntensityMaps(
+ Display *dpy);
+extern int
+_XcmsGetProperty(
+ Display *pDpy,
+ Window w,
+ Atom property,
+ int *pFormat,
+ unsigned long *pNItems,
+ unsigned long *pNBytes,
+ char **pValue);
+extern unsigned long
+_XcmsGetElement(
+ int format,
+ char **pValue,
+ unsigned long *pCount);
+extern void
+_XcmsUnresolveColor(
+ XcmsCCC ccc,
+ XcmsColor *pColor);
+extern void
+_XcmsResolveColor(
+ XcmsCCC ccc,
+ XcmsColor *pXcmsColor);
+
+#endif /* _CV_H_ */
diff --git a/libX11/src/xcms/CvColW.c b/libX11/src/xcms/CvColW.c
index 2476d1c97..4aabded0d 100644
--- a/libX11/src/xcms/CvColW.c
+++ b/libX11/src/xcms/CvColW.c
@@ -1,141 +1,141 @@
-
-/*
- * Code and supporting documentation (c) Copyright 1990 1991 Tektronix, Inc.
- * All Rights Reserved
- *
- * This file is a component of an X Window System-specific implementation
- * of Xcms based on the TekColor Color Management System. Permission is
- * hereby granted to use, copy, modify, sell, and otherwise distribute this
- * software and its documentation for any purpose and without fee, provided
- * that this copyright, permission, and disclaimer notice is reproduced in
- * all copies of this software and in supporting documentation. TekColor
- * is a trademark of Tektronix, Inc.
- *
- * Tektronix makes no representation about the suitability of this software
- * for any purpose. It is provided "as is" and with all faults.
- *
- * TEKTRONIX DISCLAIMS ALL WARRANTIES APPLICABLE TO THIS SOFTWARE,
- * INCLUDING THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE. IN NO EVENT SHALL TEKTRONIX BE LIABLE FOR ANY
- * SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER
- * RESULTING FROM LOSS OF USE, DATA, OR PROFITS, WHETHER IN AN ACTION OF
- * CONTRACT, NEGLIGENCE, OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
- * CONNECTION WITH THE USE OR THE PERFORMANCE OF THIS SOFTWARE.
- *
- *
- *
- * NAME
- * XcmsCvColW.c
- *
- * DESCRIPTION
- * <overall description of what the package does>
- *
- *
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-#include "Xcmsint.h"
-#include "Cv.h"
-
-
-/************************************************************************
- * *
- * API PRIVATE ROUTINES *
- * *
- ************************************************************************/
-
-
-/*
- * NAME
- * _XcmsConvertColorsWithWhitePt - Convert XcmsColor structures
- *
- * SYNOPSIS
- */
-Status
-_XcmsConvertColorsWithWhitePt(
- XcmsCCC ccc,
- XcmsColor *pColors_in_out,
- XcmsColor *pWhitePt,
- unsigned int nColors,
- XcmsColorFormat newFormat,
- Bool *pCompressed)
-/*
- * DESCRIPTION
- * Convert XcmsColor structures between device-independent
- * and/or device-dependent formats but allowing the calling
- * routine to specify the white point to be associated
- * with the color specifications (overriding
- * ccc->clientWhitePt).
- *
- * This routine has been provided for use in white point
- * adjustment routines.
- *
- * RETURNS
- * XcmsFailure if failed,
- * XcmsSuccess if succeeded without gamut compression,
- * XcmsSuccessWithCompression if succeeded with gamut
- * compression.
- *
- */
-{
- if (ccc == NULL || pColors_in_out == NULL ||
- pColors_in_out->format == XcmsUndefinedFormat) {
- return(XcmsFailure);
- }
-
- if (nColors == 0 || pColors_in_out->format == newFormat) {
- /* do nothing */
- return(XcmsSuccess);
- }
-
- if (XCMS_DI_ID(pColors_in_out->format) && XCMS_DI_ID(newFormat)) {
- /*
- * Device-Independent to Device-Independent Conversion
- */
- return(_XcmsDIConvertColors(ccc, pColors_in_out, pWhitePt, nColors,
- newFormat));
- }
- if (XCMS_DD_ID(pColors_in_out->format) && XCMS_DD_ID(newFormat)) {
- /*
- * Device-Dependent to Device-Dependent Conversion
- */
- return(_XcmsDDConvertColors(ccc, pColors_in_out, nColors, newFormat,
- pCompressed));
- }
-
- /*
- * Otherwise we have:
- * 1. Device-Independent to Device-Dependent Conversion
- * OR
- * 2. Device-Dependent to Device-Independent Conversion
- */
-
- if (XCMS_DI_ID(pColors_in_out->format)) {
- /*
- * 1. Device-Independent to Device-Dependent Conversion
- */
- /* First convert to CIEXYZ */
- if (_XcmsDIConvertColors(ccc, pColors_in_out, pWhitePt, nColors,
- XcmsCIEXYZFormat) == XcmsFailure) {
- return(XcmsFailure);
- }
- /* Then convert to DD Format */
- return(_XcmsDDConvertColors(ccc, pColors_in_out, nColors, newFormat,
- pCompressed));
- } else {
- /*
- * 2. Device-Dependent to Device-Independent Conversion
- */
- /* First convert to CIEXYZ */
- if (_XcmsDDConvertColors(ccc, pColors_in_out, nColors,
- XcmsCIEXYZFormat, pCompressed) == XcmsFailure) {
- return(XcmsFailure);
- }
- /* Then convert to DI Format */
- return(_XcmsDIConvertColors(ccc, pColors_in_out, pWhitePt, nColors,
- newFormat));
- }
-}
+
+/*
+ * Code and supporting documentation (c) Copyright 1990 1991 Tektronix, Inc.
+ * All Rights Reserved
+ *
+ * This file is a component of an X Window System-specific implementation
+ * of Xcms based on the TekColor Color Management System. Permission is
+ * hereby granted to use, copy, modify, sell, and otherwise distribute this
+ * software and its documentation for any purpose and without fee, provided
+ * that this copyright, permission, and disclaimer notice is reproduced in
+ * all copies of this software and in supporting documentation. TekColor
+ * is a trademark of Tektronix, Inc.
+ *
+ * Tektronix makes no representation about the suitability of this software
+ * for any purpose. It is provided "as is" and with all faults.
+ *
+ * TEKTRONIX DISCLAIMS ALL WARRANTIES APPLICABLE TO THIS SOFTWARE,
+ * INCLUDING THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+ * PARTICULAR PURPOSE. IN NO EVENT SHALL TEKTRONIX BE LIABLE FOR ANY
+ * SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER
+ * RESULTING FROM LOSS OF USE, DATA, OR PROFITS, WHETHER IN AN ACTION OF
+ * CONTRACT, NEGLIGENCE, OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
+ * CONNECTION WITH THE USE OR THE PERFORMANCE OF THIS SOFTWARE.
+ *
+ *
+ *
+ * NAME
+ * XcmsCvColW.c
+ *
+ * DESCRIPTION
+ * <overall description of what the package does>
+ *
+ *
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+#include "Xcmsint.h"
+#include "Cv.h"
+
+
+/************************************************************************
+ * *
+ * API PRIVATE ROUTINES *
+ * *
+ ************************************************************************/
+
+
+/*
+ * NAME
+ * _XcmsConvertColorsWithWhitePt - Convert XcmsColor structures
+ *
+ * SYNOPSIS
+ */
+Status
+_XcmsConvertColorsWithWhitePt(
+ XcmsCCC ccc,
+ XcmsColor *pColors_in_out,
+ XcmsColor *pWhitePt,
+ unsigned int nColors,
+ XcmsColorFormat newFormat,
+ Bool *pCompressed)
+/*
+ * DESCRIPTION
+ * Convert XcmsColor structures between device-independent
+ * and/or device-dependent formats but allowing the calling
+ * routine to specify the white point to be associated
+ * with the color specifications (overriding
+ * ccc->clientWhitePt).
+ *
+ * This routine has been provided for use in white point
+ * adjustment routines.
+ *
+ * RETURNS
+ * XcmsFailure if failed,
+ * XcmsSuccess if succeeded without gamut compression,
+ * XcmsSuccessWithCompression if succeeded with gamut
+ * compression.
+ *
+ */
+{
+ if (ccc == NULL || pColors_in_out == NULL ||
+ pColors_in_out->format == XcmsUndefinedFormat) {
+ return(XcmsFailure);
+ }
+
+ if (nColors == 0 || pColors_in_out->format == newFormat) {
+ /* do nothing */
+ return(XcmsSuccess);
+ }
+
+ if (XCMS_DI_ID(pColors_in_out->format) && XCMS_DI_ID(newFormat)) {
+ /*
+ * Device-Independent to Device-Independent Conversion
+ */
+ return(_XcmsDIConvertColors(ccc, pColors_in_out, pWhitePt, nColors,
+ newFormat));
+ }
+ if (XCMS_DD_ID(pColors_in_out->format) && XCMS_DD_ID(newFormat)) {
+ /*
+ * Device-Dependent to Device-Dependent Conversion
+ */
+ return(_XcmsDDConvertColors(ccc, pColors_in_out, nColors, newFormat,
+ pCompressed));
+ }
+
+ /*
+ * Otherwise we have:
+ * 1. Device-Independent to Device-Dependent Conversion
+ * OR
+ * 2. Device-Dependent to Device-Independent Conversion
+ */
+
+ if (XCMS_DI_ID(pColors_in_out->format)) {
+ /*
+ * 1. Device-Independent to Device-Dependent Conversion
+ */
+ /* First convert to CIEXYZ */
+ if (_XcmsDIConvertColors(ccc, pColors_in_out, pWhitePt, nColors,
+ XcmsCIEXYZFormat) == XcmsFailure) {
+ return(XcmsFailure);
+ }
+ /* Then convert to DD Format */
+ return(_XcmsDDConvertColors(ccc, pColors_in_out, nColors, newFormat,
+ pCompressed));
+ } else {
+ /*
+ * 2. Device-Dependent to Device-Independent Conversion
+ */
+ /* First convert to CIEXYZ */
+ if (_XcmsDDConvertColors(ccc, pColors_in_out, nColors,
+ XcmsCIEXYZFormat, pCompressed) == XcmsFailure) {
+ return(XcmsFailure);
+ }
+ /* Then convert to DI Format */
+ return(_XcmsDIConvertColors(ccc, pColors_in_out, pWhitePt, nColors,
+ newFormat));
+ }
+}
diff --git a/libX11/src/xcms/CvCols.c b/libX11/src/xcms/CvCols.c
index f86595595..ed3582663 100644
--- a/libX11/src/xcms/CvCols.c
+++ b/libX11/src/xcms/CvCols.c
@@ -1,1030 +1,1030 @@
-
-/*
- * Code and supporting documentation (c) Copyright 1990 1991 Tektronix, Inc.
- * All Rights Reserved
- *
- * This file is a component of an X Window System-specific implementation
- * of Xcms based on the TekColor Color Management System. Permission is
- * hereby granted to use, copy, modify, sell, and otherwise distribute this
- * software and its documentation for any purpose and without fee, provided
- * that this copyright, permission, and disclaimer notice is reproduced in
- * all copies of this software and in supporting documentation. TekColor
- * is a trademark of Tektronix, Inc.
- *
- * Tektronix makes no representation about the suitability of this software
- * for any purpose. It is provided "as is" and with all faults.
- *
- * TEKTRONIX DISCLAIMS ALL WARRANTIES APPLICABLE TO THIS SOFTWARE,
- * INCLUDING THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE. IN NO EVENT SHALL TEKTRONIX BE LIABLE FOR ANY
- * SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER
- * RESULTING FROM LOSS OF USE, DATA, OR PROFITS, WHETHER IN AN ACTION OF
- * CONTRACT, NEGLIGENCE, OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
- * CONNECTION WITH THE USE OR THE PERFORMANCE OF THIS SOFTWARE.
- *
- *
- * NAME
- * XcmsCvCols.c
- *
- * DESCRIPTION
- * Xcms API routine that converts between the
- * device-independent color spaces.
- *
- *
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-#include "Xcmsint.h"
-#include "Cv.h"
-
-/*
- * LOCAL DEFINES
- */
-#define DD_FORMAT 0x01
-#define DI_FORMAT 0x02
-#define MIX_FORMAT 0x04
-#ifndef MAX
-# define MAX(x,y) ((x) > (y) ? (x) : (y))
-#endif
-
-
-/************************************************************************
- * *
- * PRIVATE ROUTINES *
- * *
- ************************************************************************/
-
-/*
- * NAME
- * EqualCIEXYZ
- *
- * SYNOPSIS
- */
-static int
-EqualCIEXYZ(
- XcmsColor *p1, XcmsColor *p2)
-/*
- * DESCRIPTION
- * Compares two XcmsColor structures that are in XcmsCIEXYZFormat
- *
- * RETURNS
- * Returns 1 if equal; 0 otherwise.
- *
- */
-{
- if (p1->format != XcmsCIEXYZFormat || p2->format != XcmsCIEXYZFormat) {
- return(0);
- }
- if ((p1->spec.CIEXYZ.X != p2->spec.CIEXYZ.X)
- || (p1->spec.CIEXYZ.Y != p2->spec.CIEXYZ.Y)
- || (p1->spec.CIEXYZ.Z != p2->spec.CIEXYZ.Z)) {
- return(0);
- }
- return(1);
-}
-
-
-/*
- * NAME
- * XcmsColorSpace
- *
- * SYNOPSIS
- */
-static XcmsColorSpace *
-ColorSpaceOfID(
- XcmsCCC ccc,
- XcmsColorFormat id)
-/*
- * DESCRIPTION
- * Returns a pointer to the color space structure
- * (XcmsColorSpace) associated with the specified color space
- * ID.
- *
- * RETURNS
- * Pointer to matching XcmsColorSpace structure if found;
- * otherwise NULL.
- */
-{
- XcmsColorSpace **papColorSpaces;
-
- if (ccc == NULL) {
- return(NULL);
- }
-
- /*
- * First try Device-Independent color spaces
- */
- papColorSpaces = _XcmsDIColorSpaces;
- if (papColorSpaces != NULL) {
- while (*papColorSpaces != NULL) {
- if ((*papColorSpaces)->id == id) {
- return(*papColorSpaces);
- }
- papColorSpaces++;
- }
- }
-
- /*
- * Next try Device-Dependent color spaces
- */
- papColorSpaces = ((XcmsFunctionSet *)ccc->pPerScrnInfo->functionSet)->DDColorSpaces;
- if (papColorSpaces != NULL) {
- while (*papColorSpaces != NULL) {
- if ((*papColorSpaces)->id == id) {
- return(*papColorSpaces);
- }
- papColorSpaces++;
- }
- }
-
- return(NULL);
-}
-
-
-/*
- * NAME
- * ValidDIColorSpaceID
- *
- * SYNOPSIS
- */
-static int
-ValidDIColorSpaceID(
- XcmsColorFormat id)
-/*
- * DESCRIPTION
- * Determines if the specified color space ID is a valid
- * Device-Independent color space in the specified Color
- * Conversion Context.
- *
- * RETURNS
- * Returns zero if not valid; otherwise non-zero.
- */
-{
- XcmsColorSpace **papRec;
- papRec = _XcmsDIColorSpaces;
- if (papRec != NULL) {
- while (*papRec != NULL) {
- if ((*papRec)->id == id) {
- return(1);
- }
- papRec++;
- }
- }
- return(0);
-}
-
-
-/*
- * NAME
- * ValidDDColorSpaceID
- *
- * SYNOPSIS
- */
-static int
-ValidDDColorSpaceID(
- XcmsCCC ccc,
- XcmsColorFormat id)
-/*
- * DESCRIPTION
- * Determines if the specified color space ID is a valid
- * Device-Dependent color space in the specified Color
- * Conversion Context.
- *
- * RETURNS
- * Returns zero if not valid; otherwise non-zero.
- */
-{
- XcmsColorSpace **papRec;
-
- if (ccc->pPerScrnInfo->state != XcmsInitNone) {
- papRec = ((XcmsFunctionSet *)ccc->pPerScrnInfo->functionSet)->DDColorSpaces;
- while (*papRec != NULL) {
- if ((*papRec)->id == id) {
- return(1);
- }
- papRec++;
- }
- }
- return(0);
-}
-
-
-/*
- * NAME
- * ConvertMixedColors - Convert XcmsColor structures
- *
- * SYNOPSIS
- */
-static Status
-ConvertMixedColors(
- XcmsCCC ccc,
- XcmsColor *pColors_in_out,
- XcmsColor *pWhitePt,
- unsigned int nColors,
- XcmsColorFormat targetFormat,
- unsigned char format_flag)
-/*
- * DESCRIPTION
- * This routine will only convert the following types of
- * batches:
- * DI to DI
- * DD to DD
- * DD to CIEXYZ
- * In other words, it will not convert the following types of
- * batches:
- * DI to DD
- * DD to DI(not CIEXYZ)
- *
- * format_flag:
- * 0x01 : convert Device-Dependent only specifications to the
- * target format.
- * 0x02 : convert Device-Independent only specifications to the
- * target format.
- * 0x03 : convert all specifications to the target format.
- *
- * RETURNS
- * XcmsFailure if failed,
- * XcmsSuccess if none of the color specifications were
- * compressed in the conversion process
- * XcmsSuccessWithCompression if at least one of the
- * color specifications were compressed in the
- * conversion process.
- *
- */
-{
- XcmsColor *pColor, *pColors_start;
- XcmsColorFormat format;
- Status retval_tmp;
- Status retval = XcmsSuccess;
- unsigned int iColors;
- unsigned int nBatch;
-
- /*
- * Convert array of mixed color specifications in batches of
- * contiguous formats to the target format
- */
- iColors = 0;
- while (iColors < nColors) {
- /*
- * Find contiguous array of color specifications with the
- * same format
- */
- pColor = pColors_start = pColors_in_out + iColors;
- format = pColors_start->format;
- nBatch = 0;
- while (iColors < nColors && pColor->format == format) {
- pColor++;
- nBatch++;
- iColors++;
- }
- if (format != targetFormat) {
- /*
- * Need to convert this batch from current format to target format.
- */
- if (XCMS_DI_ID(format) && (format_flag & DI_FORMAT) &&
- XCMS_DI_ID(targetFormat)) {
- /*
- * DI->DI
- *
- * Format of interest is Device-Independent,
- * This batch contains Device-Independent specifications, and
- * the Target format is Device-Independent.
- */
- retval_tmp = _XcmsDIConvertColors(ccc, pColors_start, pWhitePt,
- nBatch, targetFormat);
- } else if (XCMS_DD_ID(format) && (format_flag & DD_FORMAT) &&
- (targetFormat == XcmsCIEXYZFormat)) {
- /*
- * DD->CIEXYZ
- *
- * Format of interest is Device-Dependent,
- * This batch contains Device-Dependent specifications, and
- * the Target format is CIEXYZ.
- *
- * Since DD->CIEXYZ we can use NULL instead of pCompressed.
- */
- if ((ccc->whitePtAdjProc != NULL) && !_XcmsEqualWhitePts(ccc,
- pWhitePt, ScreenWhitePointOfCCC(ccc))) {
- /*
- * Need to call WhiteAdjustProc (Screen White Point to
- * White Point).
- */
- retval_tmp = (*ccc->whitePtAdjProc)(ccc,
- ScreenWhitePointOfCCC(ccc), pWhitePt,
- XcmsCIEXYZFormat, pColors_start, nBatch,
- (Bool *)NULL);
- } else {
- retval_tmp = _XcmsDDConvertColors(ccc, pColors_start,
- nBatch, XcmsCIEXYZFormat, (Bool *)NULL);
- }
- } else if (XCMS_DD_ID(format) && (format_flag & DD_FORMAT) &&
- XCMS_DD_ID(targetFormat)) {
- /*
- * DD->DD(not CIEXYZ)
- *
- * Format of interest is Device-Dependent,
- * This batch contains Device-Dependent specifications, and
- * the Target format is Device-Dependent and not CIEXYZ.
- */
- retval_tmp = _XcmsDDConvertColors(ccc, pColors_start, nBatch,
- targetFormat, (Bool *)NULL);
- } else {
- /*
- * This routine is called for the wrong reason.
- */
- return(XcmsFailure);
- }
- if (retval_tmp == XcmsFailure) {
- return(XcmsFailure);
- }
- retval = MAX(retval, retval_tmp);
- }
- }
- return(retval);
-}
-
-
-/************************************************************************
- * *
- * API PRIVATE ROUTINES *
- * *
- ************************************************************************/
-
-/*
- * NAME
- * _XcmsEqualWhitePts
- *
- * SYNOPSIS
- */
-int
-_XcmsEqualWhitePts(XcmsCCC ccc, XcmsColor *pWhitePt1, XcmsColor *pWhitePt2)
-/*
- * DESCRIPTION
- *
- * RETURNS
- * Returns 0 if not equal; otherwise 1.
- *
- */
-{
- XcmsColor tmp1, tmp2;
-
- memcpy((char *)&tmp1, (char *)pWhitePt1, sizeof(XcmsColor));
- memcpy((char *)&tmp2, (char *)pWhitePt2, sizeof(XcmsColor));
-
- if (tmp1.format != XcmsCIEXYZFormat) {
- if (_XcmsDIConvertColors(ccc, &tmp1, (XcmsColor *) NULL, 1,
- XcmsCIEXYZFormat)==0) {
- return(0);
- }
- }
-
- if (tmp2.format != XcmsCIEXYZFormat) {
- if (_XcmsDIConvertColors(ccc, &tmp2, (XcmsColor *) NULL, 1,
- XcmsCIEXYZFormat)==0) {
- return(0);
- }
- }
-
- return (EqualCIEXYZ(&tmp1, &tmp2));
-}
-
-
-/*
- * NAME
- * _XcmsDIConvertColors - Convert XcmsColor structures
- *
- * SYNOPSIS
- */
-Status
-_XcmsDIConvertColors(
- XcmsCCC ccc,
- XcmsColor *pColors_in_out,
- XcmsColor *pWhitePt,
- unsigned int nColors,
- XcmsColorFormat newFormat)
-/*
- * DESCRIPTION
- * Convert XcmsColor structures to another Device-Independent
- * form.
- *
- * Here are some assumptions that this routine makes:
- * 1. The calling routine has already checked if
- * pColors_in_out->format == newFormat, therefore
- * there is no need to check again here.
- * 2. The calling routine has already checked nColors,
- * therefore this routine assumes nColors > 0.
- * 3. The calling routine may want to convert only between
- * CIExyY <-> CIEXYZ <-> CIEuvY
- * therefore, this routine allows pWhitePt to equal NULL.
- *
- *
- * RETURNS
- * XcmsFailure if failed,
- * XcmsSuccess if succeeded.
- *
- */
-{
- XcmsColorSpace *pFrom, *pTo;
- XcmsDIConversionProc *src_to_CIEXYZ, *src_from_CIEXYZ;
- XcmsDIConversionProc *dest_to_CIEXYZ, *dest_from_CIEXYZ;
- XcmsDIConversionProc *to_CIEXYZ_stop, *from_CIEXYZ_start;
- XcmsDIConversionProc *tmp;
-
- /*
- * Allow pWhitePt to equal NULL. This appropriate when converting
- * anywhere between:
- * CIExyY <-> CIEXYZ <-> CIEuvY
- */
-
- if (pColors_in_out == NULL ||
- !ValidDIColorSpaceID(pColors_in_out->format) ||
- !ValidDIColorSpaceID(newFormat)) {
- return(XcmsFailure);
- }
-
- /*
- * Get a handle on the function list for the current specification format
- */
- if ((pFrom = ColorSpaceOfID(ccc, pColors_in_out->format))
- == NULL) {
- return(XcmsFailure);
- }
-
- /*
- * Get a handle on the function list for the new specification format
- */
- if ((pTo = ColorSpaceOfID(ccc, newFormat)) == NULL) {
- return(XcmsFailure);
- }
-
- src_to_CIEXYZ = pFrom->to_CIEXYZ;
- src_from_CIEXYZ = pFrom->from_CIEXYZ;
- dest_to_CIEXYZ = pTo->to_CIEXYZ;
- dest_from_CIEXYZ = pTo->from_CIEXYZ;
-
- if (pTo->inverse_flag && pFrom->inverse_flag) {
- /*
- * Find common function pointers
- */
- for (to_CIEXYZ_stop = src_to_CIEXYZ; *to_CIEXYZ_stop; to_CIEXYZ_stop++){
- for (tmp = dest_to_CIEXYZ; *tmp; tmp++) {
- if (*to_CIEXYZ_stop == *tmp) {
- goto Continue;
- }
- }
- }
-
-Continue:
-
- /*
- * Execute the functions to CIEXYZ, stopping short as necessary
- */
- while (src_to_CIEXYZ != to_CIEXYZ_stop) {
- if ((*src_to_CIEXYZ++)(ccc, pWhitePt, pColors_in_out,
- nColors) == XcmsFailure) {
- return(XcmsFailure);
- }
- }
-
- /*
- * Determine where to start on the from_CIEXYZ path.
- */
- from_CIEXYZ_start = dest_from_CIEXYZ;
- tmp = src_from_CIEXYZ;
- while ((*from_CIEXYZ_start == *tmp) && (*from_CIEXYZ_start != NULL)) {
- from_CIEXYZ_start++;
- tmp++;
- }
-
- } else {
- /*
- * The function in at least one of the Color Spaces are not
- * complementary, i.e.,
- * for an i, 0 <= i < n elements
- * from_CIEXYZ[i] is not the inverse of to_CIEXYZ[i]
- *
- * Execute the functions all the way to CIEXYZ
- */
- while (*src_to_CIEXYZ) {
- if ((*src_to_CIEXYZ++)(ccc, pWhitePt, pColors_in_out,
- nColors) == XcmsFailure) {
- return(XcmsFailure);
- }
- }
-
- /*
- * Determine where to start on the from_CIEXYZ path.
- */
- from_CIEXYZ_start = dest_from_CIEXYZ;
- }
-
-
- /*
- * Execute the functions from CIEXYZ.
- */
- while (*from_CIEXYZ_start) {
- if ((*from_CIEXYZ_start++)(ccc, pWhitePt, pColors_in_out,
- nColors) == XcmsFailure) {
- return(XcmsFailure);
- }
- }
-
- return(XcmsSuccess);
-}
-
-
-/*
- * NAME
- * _XcmsDDConvertColors - Convert XcmsColor structures
- *
- * SYNOPSIS
- */
-Status
-_XcmsDDConvertColors(
- XcmsCCC ccc,
- XcmsColor *pColors_in_out,
- unsigned int nColors,
- XcmsColorFormat newFormat,
- Bool *pCompressed)
-/*
- * DESCRIPTION
- * Convert XcmsColor structures:
- *
- * 1. From CIEXYZ to Device-Dependent formats (typically RGB and
- * RGBi),
- * or
- * 2. Between Device-Dependent formats (typically RGB and RGBi).
- *
- * Assumes that these specifications have already been white point
- * adjusted if necessary from Client White Point to Screen
- * White Point. Therefore, the white point now associated
- * with the specifications is the Screen White Point.
- *
- * pCompressed may be NULL. If so this indicates that the
- * calling routine is not interested in knowing exactly which
- * color was compressed, if any.
- *
- *
- * RETURNS
- * XcmsFailure if failed,
- * XcmsSuccess if none of the color specifications were
- * compressed in the conversion process
- * XcmsSuccessWithCompression if at least one of the
- * color specifications were compressed in the
- * conversion process.
- *
- */
-{
- XcmsColorSpace *pFrom, *pTo;
- XcmsDDConversionProc *src_to_CIEXYZ, *src_from_CIEXYZ;
- XcmsDDConversionProc *dest_to_CIEXYZ, *dest_from_CIEXYZ;
- XcmsDDConversionProc *from_CIEXYZ_start, *to_CIEXYZ_stop;
- XcmsDDConversionProc *tmp;
- int retval;
- int hasCompressed = 0;
-
- if (ccc == NULL || pColors_in_out == NULL) {
- return(XcmsFailure);
- }
-
- if (nColors == 0 || pColors_in_out->format == newFormat) {
- /* do nothing */
- return(XcmsSuccess);
- }
-
- if (((XcmsFunctionSet *)ccc->pPerScrnInfo->functionSet) == NULL) {
- return(XcmsFailure); /* hmm, an internal error? */
- }
-
- /*
- * Its ok if pColors_in_out->format == XcmsCIEXYZFormat
- * or
- * if newFormat == XcmsCIEXYZFormat
- */
- if ( !( ValidDDColorSpaceID(ccc, pColors_in_out->format)
- ||
- (pColors_in_out->format == XcmsCIEXYZFormat))
- ||
- !(ValidDDColorSpaceID(ccc, newFormat)
- ||
- newFormat == XcmsCIEXYZFormat)) {
- return(XcmsFailure);
- }
-
- if ((pFrom = ColorSpaceOfID(ccc, pColors_in_out->format)) == NULL){
- return(XcmsFailure);
- }
-
- if ((pTo = ColorSpaceOfID(ccc, newFormat)) == NULL) {
- return(XcmsFailure);
- }
-
- src_to_CIEXYZ = (XcmsDDConversionProc *)pFrom->to_CIEXYZ;
- src_from_CIEXYZ = (XcmsDDConversionProc *)pFrom->from_CIEXYZ;
- dest_to_CIEXYZ = (XcmsDDConversionProc *)pTo->to_CIEXYZ;
- dest_from_CIEXYZ = (XcmsDDConversionProc *)pTo->from_CIEXYZ;
-
- if (pTo->inverse_flag && pFrom->inverse_flag) {
- /*
- * Find common function pointers
- */
- for (to_CIEXYZ_stop = src_to_CIEXYZ; *to_CIEXYZ_stop; to_CIEXYZ_stop++){
- for (tmp = dest_to_CIEXYZ; *tmp; tmp++) {
- if (*to_CIEXYZ_stop == *tmp) {
- goto Continue;
- }
- }
- }
-Continue:
-
- /*
- * Execute the functions
- */
- while (src_to_CIEXYZ != to_CIEXYZ_stop) {
- retval = (*src_to_CIEXYZ++)(ccc, pColors_in_out, nColors,
- pCompressed);
- if (retval == XcmsFailure) {
- return(XcmsFailure);
- }
- hasCompressed |= (retval == XcmsSuccessWithCompression);
- }
-
- /*
- * Determine where to start on the from_CIEXYZ path.
- */
- from_CIEXYZ_start = dest_from_CIEXYZ;
- tmp = src_from_CIEXYZ;
- while ((*from_CIEXYZ_start == *tmp) && (*from_CIEXYZ_start != NULL)) {
- from_CIEXYZ_start++;
- tmp++;
- }
-
- } else {
- /*
- * The function in at least one of the Color Spaces are not
- * complementary, i.e.,
- * for an i, 0 <= i < n elements
- * from_CIEXYZ[i] is not the inverse of to_CIEXYZ[i]
- *
- * Execute the functions all the way to CIEXYZ
- */
- while (*src_to_CIEXYZ) {
- retval = (*src_to_CIEXYZ++)(ccc, pColors_in_out, nColors,
- pCompressed);
- if (retval == XcmsFailure) {
- return(XcmsFailure);
- }
- hasCompressed |= (retval == XcmsSuccessWithCompression);
- }
-
- /*
- * Determine where to start on the from_CIEXYZ path.
- */
- from_CIEXYZ_start = dest_from_CIEXYZ;
- }
-
- while (*from_CIEXYZ_start) {
- retval = (*from_CIEXYZ_start++)(ccc, pColors_in_out, nColors,
- pCompressed);
- if (retval == XcmsFailure) {
- return(XcmsFailure);
- }
- hasCompressed |= (retval == XcmsSuccessWithCompression);
- }
-
- return(hasCompressed ? XcmsSuccessWithCompression : XcmsSuccess);
-}
-
-
-/************************************************************************
- * *
- * PUBLIC ROUTINES *
- * *
- ************************************************************************/
-
-/*
- * NAME
- * XcmsConvertColors - Convert XcmsColor structures
- *
- * SYNOPSIS
- */
-Status
-XcmsConvertColors(
- XcmsCCC ccc,
- XcmsColor *pColors_in_out,
- unsigned int nColors,
- XcmsColorFormat targetFormat,
- Bool *pCompressed)
-/*
- * DESCRIPTION
- * Convert XcmsColor structures to another format
- *
- * RETURNS
- * XcmsFailure if failed,
- * XcmsSuccess if succeeded without gamut compression,
- * XcmsSuccessWithCompression if succeeded with gamut
- * compression.
- *
- */
-{
- XcmsColor clientWhitePt;
- XcmsColor Color1;
- XcmsColor *pColors_tmp;
- int callWhiteAdjustProc = 0;
- XcmsColorFormat format;
- Status retval;
- unsigned char contents_flag = 0x00;
- unsigned int iColors;
-
- if (ccc == NULL || pColors_in_out == NULL ||
- !(ValidDIColorSpaceID(targetFormat) ||
- ValidDDColorSpaceID(ccc, targetFormat))) {
- return(XcmsFailure);
- }
-
- /*
- * Check formats in color specification array
- */
- format = pColors_in_out->format;
- for (pColors_tmp = pColors_in_out, iColors = nColors; iColors; pColors_tmp++, iColors--) {
- if (!(ValidDIColorSpaceID(pColors_tmp->format) ||
- ValidDDColorSpaceID(ccc, pColors_tmp->format))) {
- return(XcmsFailure);
- }
- if (XCMS_DI_ID(pColors_tmp->format)) {
- contents_flag |= DI_FORMAT;
- } else {
- contents_flag |= DD_FORMAT;
- }
- if (pColors_tmp->format != format) {
- contents_flag |= MIX_FORMAT;
- }
- }
-
- /*
- * Check if we need the Client White Point.
- */
- if ((contents_flag & DI_FORMAT) || XCMS_DI_ID(targetFormat)) {
- /* To proceed, we need to get the Client White Point */
- memcpy((char *)&clientWhitePt, (char *)&ccc->clientWhitePt,
- sizeof(XcmsColor));
- if (clientWhitePt.format == XcmsUndefinedFormat) {
- /*
- * Client White Point is undefined, therefore set to the Screen
- * White Point.
- * Since Client White Point == Screen White Point, WhiteAdjustProc
- * is not called.
- */
- memcpy((char *)&clientWhitePt,
- (char *)&ccc->pPerScrnInfo->screenWhitePt,
- sizeof(XcmsColor));
- } else if ((ccc->whitePtAdjProc != NULL) && !_XcmsEqualWhitePts(ccc,
- &clientWhitePt, ScreenWhitePointOfCCC(ccc))) {
- /*
- * Client White Point != Screen White Point, and WhiteAdjustProc
- * is not NULL, therefore, will need to call it when
- * converting between DI and DD specifications.
- */
- callWhiteAdjustProc = 1;
- }
- }
-
- /*
- * Make copy of array of color specifications
- */
- if (nColors > 1) {
- pColors_tmp = (XcmsColor *) Xmalloc(nColors * sizeof(XcmsColor));
- } else {
- pColors_tmp = &Color1;
- }
- memcpy((char *)pColors_tmp, (char *)pColors_in_out,
- nColors * sizeof(XcmsColor));
-
- /*
- * zero out pCompressed
- */
- if (pCompressed) {
- bzero((char *)pCompressed, nColors * sizeof(Bool));
- }
-
- if (contents_flag == DD_FORMAT || contents_flag == DI_FORMAT) {
- /*
- * ENTIRE ARRAY IS IN ONE FORMAT.
- */
- if (XCMS_DI_ID(format) && XCMS_DI_ID(targetFormat)) {
- /*
- * DI-to-DI only conversion
- */
- retval = _XcmsDIConvertColors(ccc, pColors_tmp,
- &clientWhitePt, nColors, targetFormat);
- } else if (XCMS_DD_ID(format) && XCMS_DD_ID(targetFormat)) {
- /*
- * DD-to-DD only conversion
- * Since DD->DD there will be no compressed thus we can
- * pass NULL instead of pCompressed.
- */
- retval = _XcmsDDConvertColors(ccc, pColors_tmp, nColors,
- targetFormat, (Bool *)NULL);
- } else {
- /*
- * Otherwise we have:
- * 1. Device-Independent to Device-Dependent Conversion
- * OR
- * 2. Device-Dependent to Device-Independent Conversion
- *
- * We need to go from oldFormat -> CIEXYZ -> targetFormat
- * adjusting for white points as necessary.
- */
-
- if (XCMS_DI_ID(format)) {
- /*
- * 1. Device-Independent to Device-Dependent Conversion
- */
- if (callWhiteAdjustProc) {
- /*
- * White Point Adjustment
- * Client White Point to Screen White Point
- */
- retval = (*ccc->whitePtAdjProc)(ccc, &clientWhitePt,
- ScreenWhitePointOfCCC(ccc), targetFormat,
- pColors_tmp, nColors, pCompressed);
- } else {
- if (_XcmsDIConvertColors(ccc, pColors_tmp,
- &clientWhitePt, nColors, XcmsCIEXYZFormat)
- == XcmsFailure) {
- goto Failure;
- }
- retval = _XcmsDDConvertColors(ccc, pColors_tmp, nColors,
- targetFormat, pCompressed);
- }
- } else {
- /*
- * 2. Device-Dependent to Device-Independent Conversion
- */
- if (callWhiteAdjustProc) {
- /*
- * White Point Adjustment
- * Screen White Point to Client White Point
- */
- retval = (*ccc->whitePtAdjProc)(ccc,
- ScreenWhitePointOfCCC(ccc), &clientWhitePt,
- targetFormat, pColors_tmp, nColors, pCompressed);
- } else {
- /*
- * Since DD->CIEXYZ, no compression takes place therefore
- * we can pass NULL instead of pCompressed.
- */
- if (_XcmsDDConvertColors(ccc, pColors_tmp, nColors,
- XcmsCIEXYZFormat, (Bool *)NULL) == XcmsFailure) {
- goto Failure;
- }
- retval = _XcmsDIConvertColors(ccc, pColors_tmp,
- &clientWhitePt, nColors, targetFormat);
- }
- }
- }
- } else {
- /*
- * ARRAY HAS MIXED FORMATS.
- */
- if ((contents_flag == (DI_FORMAT | MIX_FORMAT)) &&
- XCMS_DI_ID(targetFormat)) {
- /*
- * Convert from DI to DI in batches of contiguous formats
- *
- * Because DI->DI, WhiteAdjustProc not called.
- */
- retval = ConvertMixedColors(ccc, pColors_tmp, &clientWhitePt,
- nColors, targetFormat, (unsigned char)DI_FORMAT);
- } else if ((contents_flag == (DD_FORMAT | MIX_FORMAT)) &&
- XCMS_DD_ID(targetFormat)) {
- /*
- * Convert from DD to DD in batches of contiguous formats
- *
- * Because DD->DD, WhiteAdjustProc not called.
- */
- retval = ConvertMixedColors(ccc, pColors_tmp,
- (XcmsColor *)NULL, nColors, targetFormat,
- (unsigned char)DD_FORMAT);
- } else if (XCMS_DI_ID(targetFormat)) {
- /*
- * We need to convert from DI-to-DI and DD-to-DI, therefore
- * 1. convert DD specifications to CIEXYZ, then
- * 2. convert all in batches to the target DI format.
- *
- * Note that ConvertMixedColors will call WhiteAdjustProc
- * as necessary.
- */
-
- /*
- * Convert only DD specifications in batches of contiguous formats
- * to CIEXYZ
- *
- * Since DD->CIEXYZ, ConvertMixedColors will apply WhiteAdjustProc
- * if required.
- */
- retval = ConvertMixedColors(ccc, pColors_tmp, &clientWhitePt,
- nColors, XcmsCIEXYZFormat, (unsigned char)DD_FORMAT);
-
- /*
- * Because at this point we may have a mix of DI formats
- * (e.g., CIEXYZ, CIELuv) we must convert the specs to the
- * target DI format in batches of contiguous source formats.
- */
- retval = ConvertMixedColors(ccc, pColors_tmp, &clientWhitePt,
- nColors, targetFormat, (unsigned char)DI_FORMAT);
- } else {
- /*
- * We need to convert from DI-to-DD and DD-to-DD, therefore
- * 1. convert DI specifications to CIEXYZ, then
- * 2. convert all to the DD target format.
- *
- * This allows white point adjustment and gamut compression
- * to be applied to all the color specifications in one
- * swoop if those functions do in fact modify the entire
- * group of color specifications.
- */
-
- /*
- * Convert in batches to CIEXYZ
- *
- * If DD->CIEXYZ, ConvertMixedColors will apply WhiteAdjustProc
- * if required.
- */
- if ((retval = ConvertMixedColors(ccc, pColors_tmp, &clientWhitePt,
- nColors, XcmsCIEXYZFormat,
- (unsigned char)(DI_FORMAT | DD_FORMAT))) == XcmsFailure) {
- goto Failure;
- }
-
- /*
- * Convert all specifications (now in CIEXYZ format) to
- * the target DD format.
- * Since CIEXYZ->DD, compression MAY take place therefore
- * we must pass pCompressed.
- * Note that WhiteAdjustProc must be used if necessary.
- */
- if (callWhiteAdjustProc) {
- /*
- * White Point Adjustment
- * Client White Point to Screen White Point
- */
- retval = (*ccc->whitePtAdjProc)(ccc,
- &clientWhitePt, ScreenWhitePointOfCCC(ccc),
- targetFormat, pColors_tmp, nColors, pCompressed);
- } else {
- retval = _XcmsDDConvertColors(ccc, pColors_tmp, nColors,
- targetFormat, pCompressed);
- }
- }
- }
-
- if (retval != XcmsFailure) {
- memcpy((char *)pColors_in_out, (char *)pColors_tmp,
- nColors * sizeof(XcmsColor));
- }
- if (nColors > 1) {
- Xfree((char *)pColors_tmp);
- }
- return(retval);
-
-Failure:
- if (nColors > 1) {
- Xfree((char *)pColors_tmp);
- }
- return(XcmsFailure);
-}
-
-
-/*
- * NAME
- * XcmsRegFormatOfPrefix
- *
- * SYNOPSIS
- */
-XcmsColorFormat
-_XcmsRegFormatOfPrefix(
- _Xconst char *prefix)
-/*
- * DESCRIPTION
- * Returns a color space ID associated with the specified
- * X Consortium registered color space prefix.
- *
- * RETURNS
- * The color space ID if found;
- * otherwise NULL.
- */
-{
- XcmsRegColorSpaceEntry *pEntry = _XcmsRegColorSpaces;
-
- while (pEntry->prefix != NULL) {
- if (strcmp(prefix, pEntry->prefix) == 0) {
- return(pEntry->id);
- }
- pEntry++;
- }
- return(XcmsUndefinedFormat);
-}
+
+/*
+ * Code and supporting documentation (c) Copyright 1990 1991 Tektronix, Inc.
+ * All Rights Reserved
+ *
+ * This file is a component of an X Window System-specific implementation
+ * of Xcms based on the TekColor Color Management System. Permission is
+ * hereby granted to use, copy, modify, sell, and otherwise distribute this
+ * software and its documentation for any purpose and without fee, provided
+ * that this copyright, permission, and disclaimer notice is reproduced in
+ * all copies of this software and in supporting documentation. TekColor
+ * is a trademark of Tektronix, Inc.
+ *
+ * Tektronix makes no representation about the suitability of this software
+ * for any purpose. It is provided "as is" and with all faults.
+ *
+ * TEKTRONIX DISCLAIMS ALL WARRANTIES APPLICABLE TO THIS SOFTWARE,
+ * INCLUDING THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+ * PARTICULAR PURPOSE. IN NO EVENT SHALL TEKTRONIX BE LIABLE FOR ANY
+ * SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER
+ * RESULTING FROM LOSS OF USE, DATA, OR PROFITS, WHETHER IN AN ACTION OF
+ * CONTRACT, NEGLIGENCE, OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
+ * CONNECTION WITH THE USE OR THE PERFORMANCE OF THIS SOFTWARE.
+ *
+ *
+ * NAME
+ * XcmsCvCols.c
+ *
+ * DESCRIPTION
+ * Xcms API routine that converts between the
+ * device-independent color spaces.
+ *
+ *
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+#include "Xcmsint.h"
+#include "Cv.h"
+
+/*
+ * LOCAL DEFINES
+ */
+#define DD_FORMAT 0x01
+#define DI_FORMAT 0x02
+#define MIX_FORMAT 0x04
+#ifndef MAX
+# define MAX(x,y) ((x) > (y) ? (x) : (y))
+#endif
+
+
+/************************************************************************
+ * *
+ * PRIVATE ROUTINES *
+ * *
+ ************************************************************************/
+
+/*
+ * NAME
+ * EqualCIEXYZ
+ *
+ * SYNOPSIS
+ */
+static int
+EqualCIEXYZ(
+ XcmsColor *p1, XcmsColor *p2)
+/*
+ * DESCRIPTION
+ * Compares two XcmsColor structures that are in XcmsCIEXYZFormat
+ *
+ * RETURNS
+ * Returns 1 if equal; 0 otherwise.
+ *
+ */
+{
+ if (p1->format != XcmsCIEXYZFormat || p2->format != XcmsCIEXYZFormat) {
+ return(0);
+ }
+ if ((p1->spec.CIEXYZ.X != p2->spec.CIEXYZ.X)
+ || (p1->spec.CIEXYZ.Y != p2->spec.CIEXYZ.Y)
+ || (p1->spec.CIEXYZ.Z != p2->spec.CIEXYZ.Z)) {
+ return(0);
+ }
+ return(1);
+}
+
+
+/*
+ * NAME
+ * XcmsColorSpace
+ *
+ * SYNOPSIS
+ */
+static XcmsColorSpace *
+ColorSpaceOfID(
+ XcmsCCC ccc,
+ XcmsColorFormat id)
+/*
+ * DESCRIPTION
+ * Returns a pointer to the color space structure
+ * (XcmsColorSpace) associated with the specified color space
+ * ID.
+ *
+ * RETURNS
+ * Pointer to matching XcmsColorSpace structure if found;
+ * otherwise NULL.
+ */
+{
+ XcmsColorSpace **papColorSpaces;
+
+ if (ccc == NULL) {
+ return(NULL);
+ }
+
+ /*
+ * First try Device-Independent color spaces
+ */
+ papColorSpaces = _XcmsDIColorSpaces;
+ if (papColorSpaces != NULL) {
+ while (*papColorSpaces != NULL) {
+ if ((*papColorSpaces)->id == id) {
+ return(*papColorSpaces);
+ }
+ papColorSpaces++;
+ }
+ }
+
+ /*
+ * Next try Device-Dependent color spaces
+ */
+ papColorSpaces = ((XcmsFunctionSet *)ccc->pPerScrnInfo->functionSet)->DDColorSpaces;
+ if (papColorSpaces != NULL) {
+ while (*papColorSpaces != NULL) {
+ if ((*papColorSpaces)->id == id) {
+ return(*papColorSpaces);
+ }
+ papColorSpaces++;
+ }
+ }
+
+ return(NULL);
+}
+
+
+/*
+ * NAME
+ * ValidDIColorSpaceID
+ *
+ * SYNOPSIS
+ */
+static int
+ValidDIColorSpaceID(
+ XcmsColorFormat id)
+/*
+ * DESCRIPTION
+ * Determines if the specified color space ID is a valid
+ * Device-Independent color space in the specified Color
+ * Conversion Context.
+ *
+ * RETURNS
+ * Returns zero if not valid; otherwise non-zero.
+ */
+{
+ XcmsColorSpace **papRec;
+ papRec = _XcmsDIColorSpaces;
+ if (papRec != NULL) {
+ while (*papRec != NULL) {
+ if ((*papRec)->id == id) {
+ return(1);
+ }
+ papRec++;
+ }
+ }
+ return(0);
+}
+
+
+/*
+ * NAME
+ * ValidDDColorSpaceID
+ *
+ * SYNOPSIS
+ */
+static int
+ValidDDColorSpaceID(
+ XcmsCCC ccc,
+ XcmsColorFormat id)
+/*
+ * DESCRIPTION
+ * Determines if the specified color space ID is a valid
+ * Device-Dependent color space in the specified Color
+ * Conversion Context.
+ *
+ * RETURNS
+ * Returns zero if not valid; otherwise non-zero.
+ */
+{
+ XcmsColorSpace **papRec;
+
+ if (ccc->pPerScrnInfo->state != XcmsInitNone) {
+ papRec = ((XcmsFunctionSet *)ccc->pPerScrnInfo->functionSet)->DDColorSpaces;
+ while (*papRec != NULL) {
+ if ((*papRec)->id == id) {
+ return(1);
+ }
+ papRec++;
+ }
+ }
+ return(0);
+}
+
+
+/*
+ * NAME
+ * ConvertMixedColors - Convert XcmsColor structures
+ *
+ * SYNOPSIS
+ */
+static Status
+ConvertMixedColors(
+ XcmsCCC ccc,
+ XcmsColor *pColors_in_out,
+ XcmsColor *pWhitePt,
+ unsigned int nColors,
+ XcmsColorFormat targetFormat,
+ unsigned char format_flag)
+/*
+ * DESCRIPTION
+ * This routine will only convert the following types of
+ * batches:
+ * DI to DI
+ * DD to DD
+ * DD to CIEXYZ
+ * In other words, it will not convert the following types of
+ * batches:
+ * DI to DD
+ * DD to DI(not CIEXYZ)
+ *
+ * format_flag:
+ * 0x01 : convert Device-Dependent only specifications to the
+ * target format.
+ * 0x02 : convert Device-Independent only specifications to the
+ * target format.
+ * 0x03 : convert all specifications to the target format.
+ *
+ * RETURNS
+ * XcmsFailure if failed,
+ * XcmsSuccess if none of the color specifications were
+ * compressed in the conversion process
+ * XcmsSuccessWithCompression if at least one of the
+ * color specifications were compressed in the
+ * conversion process.
+ *
+ */
+{
+ XcmsColor *pColor, *pColors_start;
+ XcmsColorFormat format;
+ Status retval_tmp;
+ Status retval = XcmsSuccess;
+ unsigned int iColors;
+ unsigned int nBatch;
+
+ /*
+ * Convert array of mixed color specifications in batches of
+ * contiguous formats to the target format
+ */
+ iColors = 0;
+ while (iColors < nColors) {
+ /*
+ * Find contiguous array of color specifications with the
+ * same format
+ */
+ pColor = pColors_start = pColors_in_out + iColors;
+ format = pColors_start->format;
+ nBatch = 0;
+ while (iColors < nColors && pColor->format == format) {
+ pColor++;
+ nBatch++;
+ iColors++;
+ }
+ if (format != targetFormat) {
+ /*
+ * Need to convert this batch from current format to target format.
+ */
+ if (XCMS_DI_ID(format) && (format_flag & DI_FORMAT) &&
+ XCMS_DI_ID(targetFormat)) {
+ /*
+ * DI->DI
+ *
+ * Format of interest is Device-Independent,
+ * This batch contains Device-Independent specifications, and
+ * the Target format is Device-Independent.
+ */
+ retval_tmp = _XcmsDIConvertColors(ccc, pColors_start, pWhitePt,
+ nBatch, targetFormat);
+ } else if (XCMS_DD_ID(format) && (format_flag & DD_FORMAT) &&
+ (targetFormat == XcmsCIEXYZFormat)) {
+ /*
+ * DD->CIEXYZ
+ *
+ * Format of interest is Device-Dependent,
+ * This batch contains Device-Dependent specifications, and
+ * the Target format is CIEXYZ.
+ *
+ * Since DD->CIEXYZ we can use NULL instead of pCompressed.
+ */
+ if ((ccc->whitePtAdjProc != NULL) && !_XcmsEqualWhitePts(ccc,
+ pWhitePt, ScreenWhitePointOfCCC(ccc))) {
+ /*
+ * Need to call WhiteAdjustProc (Screen White Point to
+ * White Point).
+ */
+ retval_tmp = (*ccc->whitePtAdjProc)(ccc,
+ ScreenWhitePointOfCCC(ccc), pWhitePt,
+ XcmsCIEXYZFormat, pColors_start, nBatch,
+ (Bool *)NULL);
+ } else {
+ retval_tmp = _XcmsDDConvertColors(ccc, pColors_start,
+ nBatch, XcmsCIEXYZFormat, (Bool *)NULL);
+ }
+ } else if (XCMS_DD_ID(format) && (format_flag & DD_FORMAT) &&
+ XCMS_DD_ID(targetFormat)) {
+ /*
+ * DD->DD(not CIEXYZ)
+ *
+ * Format of interest is Device-Dependent,
+ * This batch contains Device-Dependent specifications, and
+ * the Target format is Device-Dependent and not CIEXYZ.
+ */
+ retval_tmp = _XcmsDDConvertColors(ccc, pColors_start, nBatch,
+ targetFormat, (Bool *)NULL);
+ } else {
+ /*
+ * This routine is called for the wrong reason.
+ */
+ return(XcmsFailure);
+ }
+ if (retval_tmp == XcmsFailure) {
+ return(XcmsFailure);
+ }
+ retval = MAX(retval, retval_tmp);
+ }
+ }
+ return(retval);
+}
+
+
+/************************************************************************
+ * *
+ * API PRIVATE ROUTINES *
+ * *
+ ************************************************************************/
+
+/*
+ * NAME
+ * _XcmsEqualWhitePts
+ *
+ * SYNOPSIS
+ */
+int
+_XcmsEqualWhitePts(XcmsCCC ccc, XcmsColor *pWhitePt1, XcmsColor *pWhitePt2)
+/*
+ * DESCRIPTION
+ *
+ * RETURNS
+ * Returns 0 if not equal; otherwise 1.
+ *
+ */
+{
+ XcmsColor tmp1, tmp2;
+
+ memcpy((char *)&tmp1, (char *)pWhitePt1, sizeof(XcmsColor));
+ memcpy((char *)&tmp2, (char *)pWhitePt2, sizeof(XcmsColor));
+
+ if (tmp1.format != XcmsCIEXYZFormat) {
+ if (_XcmsDIConvertColors(ccc, &tmp1, (XcmsColor *) NULL, 1,
+ XcmsCIEXYZFormat)==0) {
+ return(0);
+ }
+ }
+
+ if (tmp2.format != XcmsCIEXYZFormat) {
+ if (_XcmsDIConvertColors(ccc, &tmp2, (XcmsColor *) NULL, 1,
+ XcmsCIEXYZFormat)==0) {
+ return(0);
+ }
+ }
+
+ return (EqualCIEXYZ(&tmp1, &tmp2));
+}
+
+
+/*
+ * NAME
+ * _XcmsDIConvertColors - Convert XcmsColor structures
+ *
+ * SYNOPSIS
+ */
+Status
+_XcmsDIConvertColors(
+ XcmsCCC ccc,
+ XcmsColor *pColors_in_out,
+ XcmsColor *pWhitePt,
+ unsigned int nColors,
+ XcmsColorFormat newFormat)
+/*
+ * DESCRIPTION
+ * Convert XcmsColor structures to another Device-Independent
+ * form.
+ *
+ * Here are some assumptions that this routine makes:
+ * 1. The calling routine has already checked if
+ * pColors_in_out->format == newFormat, therefore
+ * there is no need to check again here.
+ * 2. The calling routine has already checked nColors,
+ * therefore this routine assumes nColors > 0.
+ * 3. The calling routine may want to convert only between
+ * CIExyY <-> CIEXYZ <-> CIEuvY
+ * therefore, this routine allows pWhitePt to equal NULL.
+ *
+ *
+ * RETURNS
+ * XcmsFailure if failed,
+ * XcmsSuccess if succeeded.
+ *
+ */
+{
+ XcmsColorSpace *pFrom, *pTo;
+ XcmsDIConversionProc *src_to_CIEXYZ, *src_from_CIEXYZ;
+ XcmsDIConversionProc *dest_to_CIEXYZ, *dest_from_CIEXYZ;
+ XcmsDIConversionProc *to_CIEXYZ_stop, *from_CIEXYZ_start;
+ XcmsDIConversionProc *tmp;
+
+ /*
+ * Allow pWhitePt to equal NULL. This appropriate when converting
+ * anywhere between:
+ * CIExyY <-> CIEXYZ <-> CIEuvY
+ */
+
+ if (pColors_in_out == NULL ||
+ !ValidDIColorSpaceID(pColors_in_out->format) ||
+ !ValidDIColorSpaceID(newFormat)) {
+ return(XcmsFailure);
+ }
+
+ /*
+ * Get a handle on the function list for the current specification format
+ */
+ if ((pFrom = ColorSpaceOfID(ccc, pColors_in_out->format))
+ == NULL) {
+ return(XcmsFailure);
+ }
+
+ /*
+ * Get a handle on the function list for the new specification format
+ */
+ if ((pTo = ColorSpaceOfID(ccc, newFormat)) == NULL) {
+ return(XcmsFailure);
+ }
+
+ src_to_CIEXYZ = pFrom->to_CIEXYZ;
+ src_from_CIEXYZ = pFrom->from_CIEXYZ;
+ dest_to_CIEXYZ = pTo->to_CIEXYZ;
+ dest_from_CIEXYZ = pTo->from_CIEXYZ;
+
+ if (pTo->inverse_flag && pFrom->inverse_flag) {
+ /*
+ * Find common function pointers
+ */
+ for (to_CIEXYZ_stop = src_to_CIEXYZ; *to_CIEXYZ_stop; to_CIEXYZ_stop++){
+ for (tmp = dest_to_CIEXYZ; *tmp; tmp++) {
+ if (*to_CIEXYZ_stop == *tmp) {
+ goto Continue;
+ }
+ }
+ }
+
+Continue:
+
+ /*
+ * Execute the functions to CIEXYZ, stopping short as necessary
+ */
+ while (src_to_CIEXYZ != to_CIEXYZ_stop) {
+ if ((*src_to_CIEXYZ++)(ccc, pWhitePt, pColors_in_out,
+ nColors) == XcmsFailure) {
+ return(XcmsFailure);
+ }
+ }
+
+ /*
+ * Determine where to start on the from_CIEXYZ path.
+ */
+ from_CIEXYZ_start = dest_from_CIEXYZ;
+ tmp = src_from_CIEXYZ;
+ while ((*from_CIEXYZ_start == *tmp) && (*from_CIEXYZ_start != NULL)) {
+ from_CIEXYZ_start++;
+ tmp++;
+ }
+
+ } else {
+ /*
+ * The function in at least one of the Color Spaces are not
+ * complementary, i.e.,
+ * for an i, 0 <= i < n elements
+ * from_CIEXYZ[i] is not the inverse of to_CIEXYZ[i]
+ *
+ * Execute the functions all the way to CIEXYZ
+ */
+ while (*src_to_CIEXYZ) {
+ if ((*src_to_CIEXYZ++)(ccc, pWhitePt, pColors_in_out,
+ nColors) == XcmsFailure) {
+ return(XcmsFailure);
+ }
+ }
+
+ /*
+ * Determine where to start on the from_CIEXYZ path.
+ */
+ from_CIEXYZ_start = dest_from_CIEXYZ;
+ }
+
+
+ /*
+ * Execute the functions from CIEXYZ.
+ */
+ while (*from_CIEXYZ_start) {
+ if ((*from_CIEXYZ_start++)(ccc, pWhitePt, pColors_in_out,
+ nColors) == XcmsFailure) {
+ return(XcmsFailure);
+ }
+ }
+
+ return(XcmsSuccess);
+}
+
+
+/*
+ * NAME
+ * _XcmsDDConvertColors - Convert XcmsColor structures
+ *
+ * SYNOPSIS
+ */
+Status
+_XcmsDDConvertColors(
+ XcmsCCC ccc,
+ XcmsColor *pColors_in_out,
+ unsigned int nColors,
+ XcmsColorFormat newFormat,
+ Bool *pCompressed)
+/*
+ * DESCRIPTION
+ * Convert XcmsColor structures:
+ *
+ * 1. From CIEXYZ to Device-Dependent formats (typically RGB and
+ * RGBi),
+ * or
+ * 2. Between Device-Dependent formats (typically RGB and RGBi).
+ *
+ * Assumes that these specifications have already been white point
+ * adjusted if necessary from Client White Point to Screen
+ * White Point. Therefore, the white point now associated
+ * with the specifications is the Screen White Point.
+ *
+ * pCompressed may be NULL. If so this indicates that the
+ * calling routine is not interested in knowing exactly which
+ * color was compressed, if any.
+ *
+ *
+ * RETURNS
+ * XcmsFailure if failed,
+ * XcmsSuccess if none of the color specifications were
+ * compressed in the conversion process
+ * XcmsSuccessWithCompression if at least one of the
+ * color specifications were compressed in the
+ * conversion process.
+ *
+ */
+{
+ XcmsColorSpace *pFrom, *pTo;
+ XcmsDDConversionProc *src_to_CIEXYZ, *src_from_CIEXYZ;
+ XcmsDDConversionProc *dest_to_CIEXYZ, *dest_from_CIEXYZ;
+ XcmsDDConversionProc *from_CIEXYZ_start, *to_CIEXYZ_stop;
+ XcmsDDConversionProc *tmp;
+ int retval;
+ int hasCompressed = 0;
+
+ if (ccc == NULL || pColors_in_out == NULL) {
+ return(XcmsFailure);
+ }
+
+ if (nColors == 0 || pColors_in_out->format == newFormat) {
+ /* do nothing */
+ return(XcmsSuccess);
+ }
+
+ if (((XcmsFunctionSet *)ccc->pPerScrnInfo->functionSet) == NULL) {
+ return(XcmsFailure); /* hmm, an internal error? */
+ }
+
+ /*
+ * Its ok if pColors_in_out->format == XcmsCIEXYZFormat
+ * or
+ * if newFormat == XcmsCIEXYZFormat
+ */
+ if ( !( ValidDDColorSpaceID(ccc, pColors_in_out->format)
+ ||
+ (pColors_in_out->format == XcmsCIEXYZFormat))
+ ||
+ !(ValidDDColorSpaceID(ccc, newFormat)
+ ||
+ newFormat == XcmsCIEXYZFormat)) {
+ return(XcmsFailure);
+ }
+
+ if ((pFrom = ColorSpaceOfID(ccc, pColors_in_out->format)) == NULL){
+ return(XcmsFailure);
+ }
+
+ if ((pTo = ColorSpaceOfID(ccc, newFormat)) == NULL) {
+ return(XcmsFailure);
+ }
+
+ src_to_CIEXYZ = (XcmsDDConversionProc *)pFrom->to_CIEXYZ;
+ src_from_CIEXYZ = (XcmsDDConversionProc *)pFrom->from_CIEXYZ;
+ dest_to_CIEXYZ = (XcmsDDConversionProc *)pTo->to_CIEXYZ;
+ dest_from_CIEXYZ = (XcmsDDConversionProc *)pTo->from_CIEXYZ;
+
+ if (pTo->inverse_flag && pFrom->inverse_flag) {
+ /*
+ * Find common function pointers
+ */
+ for (to_CIEXYZ_stop = src_to_CIEXYZ; *to_CIEXYZ_stop; to_CIEXYZ_stop++){
+ for (tmp = dest_to_CIEXYZ; *tmp; tmp++) {
+ if (*to_CIEXYZ_stop == *tmp) {
+ goto Continue;
+ }
+ }
+ }
+Continue:
+
+ /*
+ * Execute the functions
+ */
+ while (src_to_CIEXYZ != to_CIEXYZ_stop) {
+ retval = (*src_to_CIEXYZ++)(ccc, pColors_in_out, nColors,
+ pCompressed);
+ if (retval == XcmsFailure) {
+ return(XcmsFailure);
+ }
+ hasCompressed |= (retval == XcmsSuccessWithCompression);
+ }
+
+ /*
+ * Determine where to start on the from_CIEXYZ path.
+ */
+ from_CIEXYZ_start = dest_from_CIEXYZ;
+ tmp = src_from_CIEXYZ;
+ while ((*from_CIEXYZ_start == *tmp) && (*from_CIEXYZ_start != NULL)) {
+ from_CIEXYZ_start++;
+ tmp++;
+ }
+
+ } else {
+ /*
+ * The function in at least one of the Color Spaces are not
+ * complementary, i.e.,
+ * for an i, 0 <= i < n elements
+ * from_CIEXYZ[i] is not the inverse of to_CIEXYZ[i]
+ *
+ * Execute the functions all the way to CIEXYZ
+ */
+ while (*src_to_CIEXYZ) {
+ retval = (*src_to_CIEXYZ++)(ccc, pColors_in_out, nColors,
+ pCompressed);
+ if (retval == XcmsFailure) {
+ return(XcmsFailure);
+ }
+ hasCompressed |= (retval == XcmsSuccessWithCompression);
+ }
+
+ /*
+ * Determine where to start on the from_CIEXYZ path.
+ */
+ from_CIEXYZ_start = dest_from_CIEXYZ;
+ }
+
+ while (*from_CIEXYZ_start) {
+ retval = (*from_CIEXYZ_start++)(ccc, pColors_in_out, nColors,
+ pCompressed);
+ if (retval == XcmsFailure) {
+ return(XcmsFailure);
+ }
+ hasCompressed |= (retval == XcmsSuccessWithCompression);
+ }
+
+ return(hasCompressed ? XcmsSuccessWithCompression : XcmsSuccess);
+}
+
+
+/************************************************************************
+ * *
+ * PUBLIC ROUTINES *
+ * *
+ ************************************************************************/
+
+/*
+ * NAME
+ * XcmsConvertColors - Convert XcmsColor structures
+ *
+ * SYNOPSIS
+ */
+Status
+XcmsConvertColors(
+ XcmsCCC ccc,
+ XcmsColor *pColors_in_out,
+ unsigned int nColors,
+ XcmsColorFormat targetFormat,
+ Bool *pCompressed)
+/*
+ * DESCRIPTION
+ * Convert XcmsColor structures to another format
+ *
+ * RETURNS
+ * XcmsFailure if failed,
+ * XcmsSuccess if succeeded without gamut compression,
+ * XcmsSuccessWithCompression if succeeded with gamut
+ * compression.
+ *
+ */
+{
+ XcmsColor clientWhitePt;
+ XcmsColor Color1;
+ XcmsColor *pColors_tmp;
+ int callWhiteAdjustProc = 0;
+ XcmsColorFormat format;
+ Status retval;
+ unsigned char contents_flag = 0x00;
+ unsigned int iColors;
+
+ if (ccc == NULL || pColors_in_out == NULL ||
+ !(ValidDIColorSpaceID(targetFormat) ||
+ ValidDDColorSpaceID(ccc, targetFormat))) {
+ return(XcmsFailure);
+ }
+
+ /*
+ * Check formats in color specification array
+ */
+ format = pColors_in_out->format;
+ for (pColors_tmp = pColors_in_out, iColors = nColors; iColors; pColors_tmp++, iColors--) {
+ if (!(ValidDIColorSpaceID(pColors_tmp->format) ||
+ ValidDDColorSpaceID(ccc, pColors_tmp->format))) {
+ return(XcmsFailure);
+ }
+ if (XCMS_DI_ID(pColors_tmp->format)) {
+ contents_flag |= DI_FORMAT;
+ } else {
+ contents_flag |= DD_FORMAT;
+ }
+ if (pColors_tmp->format != format) {
+ contents_flag |= MIX_FORMAT;
+ }
+ }
+
+ /*
+ * Check if we need the Client White Point.
+ */
+ if ((contents_flag & DI_FORMAT) || XCMS_DI_ID(targetFormat)) {
+ /* To proceed, we need to get the Client White Point */
+ memcpy((char *)&clientWhitePt, (char *)&ccc->clientWhitePt,
+ sizeof(XcmsColor));
+ if (clientWhitePt.format == XcmsUndefinedFormat) {
+ /*
+ * Client White Point is undefined, therefore set to the Screen
+ * White Point.
+ * Since Client White Point == Screen White Point, WhiteAdjustProc
+ * is not called.
+ */
+ memcpy((char *)&clientWhitePt,
+ (char *)&ccc->pPerScrnInfo->screenWhitePt,
+ sizeof(XcmsColor));
+ } else if ((ccc->whitePtAdjProc != NULL) && !_XcmsEqualWhitePts(ccc,
+ &clientWhitePt, ScreenWhitePointOfCCC(ccc))) {
+ /*
+ * Client White Point != Screen White Point, and WhiteAdjustProc
+ * is not NULL, therefore, will need to call it when
+ * converting between DI and DD specifications.
+ */
+ callWhiteAdjustProc = 1;
+ }
+ }
+
+ /*
+ * Make copy of array of color specifications
+ */
+ if (nColors > 1) {
+ pColors_tmp = (XcmsColor *) Xmalloc(nColors * sizeof(XcmsColor));
+ } else {
+ pColors_tmp = &Color1;
+ }
+ memcpy((char *)pColors_tmp, (char *)pColors_in_out,
+ nColors * sizeof(XcmsColor));
+
+ /*
+ * zero out pCompressed
+ */
+ if (pCompressed) {
+ bzero((char *)pCompressed, nColors * sizeof(Bool));
+ }
+
+ if (contents_flag == DD_FORMAT || contents_flag == DI_FORMAT) {
+ /*
+ * ENTIRE ARRAY IS IN ONE FORMAT.
+ */
+ if (XCMS_DI_ID(format) && XCMS_DI_ID(targetFormat)) {
+ /*
+ * DI-to-DI only conversion
+ */
+ retval = _XcmsDIConvertColors(ccc, pColors_tmp,
+ &clientWhitePt, nColors, targetFormat);
+ } else if (XCMS_DD_ID(format) && XCMS_DD_ID(targetFormat)) {
+ /*
+ * DD-to-DD only conversion
+ * Since DD->DD there will be no compressed thus we can
+ * pass NULL instead of pCompressed.
+ */
+ retval = _XcmsDDConvertColors(ccc, pColors_tmp, nColors,
+ targetFormat, (Bool *)NULL);
+ } else {
+ /*
+ * Otherwise we have:
+ * 1. Device-Independent to Device-Dependent Conversion
+ * OR
+ * 2. Device-Dependent to Device-Independent Conversion
+ *
+ * We need to go from oldFormat -> CIEXYZ -> targetFormat
+ * adjusting for white points as necessary.
+ */
+
+ if (XCMS_DI_ID(format)) {
+ /*
+ * 1. Device-Independent to Device-Dependent Conversion
+ */
+ if (callWhiteAdjustProc) {
+ /*
+ * White Point Adjustment
+ * Client White Point to Screen White Point
+ */
+ retval = (*ccc->whitePtAdjProc)(ccc, &clientWhitePt,
+ ScreenWhitePointOfCCC(ccc), targetFormat,
+ pColors_tmp, nColors, pCompressed);
+ } else {
+ if (_XcmsDIConvertColors(ccc, pColors_tmp,
+ &clientWhitePt, nColors, XcmsCIEXYZFormat)
+ == XcmsFailure) {
+ goto Failure;
+ }
+ retval = _XcmsDDConvertColors(ccc, pColors_tmp, nColors,
+ targetFormat, pCompressed);
+ }
+ } else {
+ /*
+ * 2. Device-Dependent to Device-Independent Conversion
+ */
+ if (callWhiteAdjustProc) {
+ /*
+ * White Point Adjustment
+ * Screen White Point to Client White Point
+ */
+ retval = (*ccc->whitePtAdjProc)(ccc,
+ ScreenWhitePointOfCCC(ccc), &clientWhitePt,
+ targetFormat, pColors_tmp, nColors, pCompressed);
+ } else {
+ /*
+ * Since DD->CIEXYZ, no compression takes place therefore
+ * we can pass NULL instead of pCompressed.
+ */
+ if (_XcmsDDConvertColors(ccc, pColors_tmp, nColors,
+ XcmsCIEXYZFormat, (Bool *)NULL) == XcmsFailure) {
+ goto Failure;
+ }
+ retval = _XcmsDIConvertColors(ccc, pColors_tmp,
+ &clientWhitePt, nColors, targetFormat);
+ }
+ }
+ }
+ } else {
+ /*
+ * ARRAY HAS MIXED FORMATS.
+ */
+ if ((contents_flag == (DI_FORMAT | MIX_FORMAT)) &&
+ XCMS_DI_ID(targetFormat)) {
+ /*
+ * Convert from DI to DI in batches of contiguous formats
+ *
+ * Because DI->DI, WhiteAdjustProc not called.
+ */
+ retval = ConvertMixedColors(ccc, pColors_tmp, &clientWhitePt,
+ nColors, targetFormat, (unsigned char)DI_FORMAT);
+ } else if ((contents_flag == (DD_FORMAT | MIX_FORMAT)) &&
+ XCMS_DD_ID(targetFormat)) {
+ /*
+ * Convert from DD to DD in batches of contiguous formats
+ *
+ * Because DD->DD, WhiteAdjustProc not called.
+ */
+ retval = ConvertMixedColors(ccc, pColors_tmp,
+ (XcmsColor *)NULL, nColors, targetFormat,
+ (unsigned char)DD_FORMAT);
+ } else if (XCMS_DI_ID(targetFormat)) {
+ /*
+ * We need to convert from DI-to-DI and DD-to-DI, therefore
+ * 1. convert DD specifications to CIEXYZ, then
+ * 2. convert all in batches to the target DI format.
+ *
+ * Note that ConvertMixedColors will call WhiteAdjustProc
+ * as necessary.
+ */
+
+ /*
+ * Convert only DD specifications in batches of contiguous formats
+ * to CIEXYZ
+ *
+ * Since DD->CIEXYZ, ConvertMixedColors will apply WhiteAdjustProc
+ * if required.
+ */
+ retval = ConvertMixedColors(ccc, pColors_tmp, &clientWhitePt,
+ nColors, XcmsCIEXYZFormat, (unsigned char)DD_FORMAT);
+
+ /*
+ * Because at this point we may have a mix of DI formats
+ * (e.g., CIEXYZ, CIELuv) we must convert the specs to the
+ * target DI format in batches of contiguous source formats.
+ */
+ retval = ConvertMixedColors(ccc, pColors_tmp, &clientWhitePt,
+ nColors, targetFormat, (unsigned char)DI_FORMAT);
+ } else {
+ /*
+ * We need to convert from DI-to-DD and DD-to-DD, therefore
+ * 1. convert DI specifications to CIEXYZ, then
+ * 2. convert all to the DD target format.
+ *
+ * This allows white point adjustment and gamut compression
+ * to be applied to all the color specifications in one
+ * swoop if those functions do in fact modify the entire
+ * group of color specifications.
+ */
+
+ /*
+ * Convert in batches to CIEXYZ
+ *
+ * If DD->CIEXYZ, ConvertMixedColors will apply WhiteAdjustProc
+ * if required.
+ */
+ if ((retval = ConvertMixedColors(ccc, pColors_tmp, &clientWhitePt,
+ nColors, XcmsCIEXYZFormat,
+ (unsigned char)(DI_FORMAT | DD_FORMAT))) == XcmsFailure) {
+ goto Failure;
+ }
+
+ /*
+ * Convert all specifications (now in CIEXYZ format) to
+ * the target DD format.
+ * Since CIEXYZ->DD, compression MAY take place therefore
+ * we must pass pCompressed.
+ * Note that WhiteAdjustProc must be used if necessary.
+ */
+ if (callWhiteAdjustProc) {
+ /*
+ * White Point Adjustment
+ * Client White Point to Screen White Point
+ */
+ retval = (*ccc->whitePtAdjProc)(ccc,
+ &clientWhitePt, ScreenWhitePointOfCCC(ccc),
+ targetFormat, pColors_tmp, nColors, pCompressed);
+ } else {
+ retval = _XcmsDDConvertColors(ccc, pColors_tmp, nColors,
+ targetFormat, pCompressed);
+ }
+ }
+ }
+
+ if (retval != XcmsFailure) {
+ memcpy((char *)pColors_in_out, (char *)pColors_tmp,
+ nColors * sizeof(XcmsColor));
+ }
+ if (nColors > 1) {
+ Xfree((char *)pColors_tmp);
+ }
+ return(retval);
+
+Failure:
+ if (nColors > 1) {
+ Xfree((char *)pColors_tmp);
+ }
+ return(XcmsFailure);
+}
+
+
+/*
+ * NAME
+ * XcmsRegFormatOfPrefix
+ *
+ * SYNOPSIS
+ */
+XcmsColorFormat
+_XcmsRegFormatOfPrefix(
+ _Xconst char *prefix)
+/*
+ * DESCRIPTION
+ * Returns a color space ID associated with the specified
+ * X Consortium registered color space prefix.
+ *
+ * RETURNS
+ * The color space ID if found;
+ * otherwise NULL.
+ */
+{
+ XcmsRegColorSpaceEntry *pEntry = _XcmsRegColorSpaces;
+
+ while (pEntry->prefix != NULL) {
+ if (strcmp(prefix, pEntry->prefix) == 0) {
+ return(pEntry->id);
+ }
+ pEntry++;
+ }
+ return(XcmsUndefinedFormat);
+}
diff --git a/libX11/src/xcms/HVC.c b/libX11/src/xcms/HVC.c
index c5c9823e2..80f1735cf 100644
--- a/libX11/src/xcms/HVC.c
+++ b/libX11/src/xcms/HVC.c
@@ -1,625 +1,625 @@
-
-/*
- * Code and supporting documentation (c) Copyright 1990 1991 Tektronix, Inc.
- * All Rights Reserved
- *
- * This file is a component of an X Window System-specific implementation
- * of Xcms based on the TekColor Color Management System. TekColor is a
- * trademark of Tektronix, Inc. The term "TekHVC" designates a particular
- * color space that is the subject of U.S. Patent No. 4,985,853 (equivalent
- * foreign patents pending). Permission is hereby granted to use, copy,
- * modify, sell, and otherwise distribute this software and its
- * documentation for any purpose and without fee, provided that:
- *
- * 1. This copyright, permission, and disclaimer notice is reproduced in
- * all copies of this software and any modification thereof and in
- * supporting documentation;
- * 2. Any color-handling application which displays TekHVC color
- * cooordinates identifies these as TekHVC color coordinates in any
- * interface that displays these coordinates and in any associated
- * documentation;
- * 3. The term "TekHVC" is always used, and is only used, in association
- * with the mathematical derivations of the TekHVC Color Space,
- * including those provided in this file and any equivalent pathways and
- * mathematical derivations, regardless of digital (e.g., floating point
- * or integer) representation.
- *
- * Tektronix makes no representation about the suitability of this software
- * for any purpose. It is provided "as is" and with all faults.
- *
- * TEKTRONIX DISCLAIMS ALL WARRANTIES APPLICABLE TO THIS SOFTWARE,
- * INCLUDING THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE. IN NO EVENT SHALL TEKTRONIX BE LIABLE FOR ANY
- * SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER
- * RESULTING FROM LOSS OF USE, DATA, OR PROFITS, WHETHER IN AN ACTION OF
- * CONTRACT, NEGLIGENCE, OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
- * CONNECTION WITH THE USE OR THE PERFORMANCE OF THIS SOFTWARE.
- *
- * NAME
- * TekHVC.c
- *
- * DESCRIPTION
- * This file contains routines that support the TekHVC
- * color space to include conversions to and from the CIE
- * XYZ space.
- *
- * DOCUMENTATION
- * "TekColor Color Management System, System Implementor's Manual"
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-#include "Xcmsint.h"
-#include <X11/Xos.h>
-#include <math.h>
-#include "Cv.h"
-
-#include <stdio.h>
-
-/*
- * DEFINES
- */
-#define u_BR 0.7127 /* u' Best Red */
-#define v_BR 0.4931 /* v' Best Red */
-#define EPS 0.001
-#define CHROMA_SCALE_FACTOR 7.50725
-#ifndef PI
-# ifdef M_PI
-# define PI M_PI
-# else
-# define PI 3.14159265358979323846264338327950
-# endif
-#endif
-#ifndef degrees
-# define degrees(r) ((XcmsFloat)(r) * 180.0 / PI)
-#endif /* degrees */
-#ifndef radians
-# define radians(d) ((XcmsFloat)(d) * PI / 180.0)
-#endif /* radians */
-
-/*************************************************************************
- * Note: The DBL_EPSILON for ANSI is 1e-5 so my checks need to take
- * this into account. If your DBL_EPSILON is different then
- * adjust this define.
- *
- * Also note that EPS is the error factor in the calculations
- * This may need to be the same as XMY_DBL_EPSILON in
- * some implementations.
- **************************************************************************/
-#ifdef DBL_EPSILON
-# define XMY_DBL_EPSILON DBL_EPSILON
-#else
-# define XMY_DBL_EPSILON 0.00001
-#endif
-
-/*
- * FORWARD DECLARATIONS
- */
-static int TekHVC_ParseString(register char *spec, XcmsColor *pColor);
-static Status XcmsTekHVC_ValidSpec(XcmsColor *pColor);
-
-/*
- * LOCAL VARIABLES
- */
-
- /*
- * NULL terminated list of functions applied to get from TekHVC to CIEXYZ
- */
-static XcmsConversionProc Fl_TekHVC_to_CIEXYZ[] = {
- XcmsTekHVCToCIEuvY,
- XcmsCIEuvYToCIEXYZ,
- NULL
-};
-
- /*
- * NULL terminated list of functions applied to get from CIEXYZ to TekHVC
- */
-static XcmsConversionProc Fl_CIEXYZ_to_TekHVC[] = {
- XcmsCIEXYZToCIEuvY,
- XcmsCIEuvYToTekHVC,
- NULL
-};
-
-/*
- * GLOBALS
- */
-
- /*
- * TekHVC Color Space
- */
-XcmsColorSpace XcmsTekHVCColorSpace =
- {
- _XcmsTekHVC_prefix, /* prefix */
- XcmsTekHVCFormat, /* id */
- TekHVC_ParseString, /* parseString */
- Fl_TekHVC_to_CIEXYZ, /* to_CIEXYZ */
- Fl_CIEXYZ_to_TekHVC, /* from_CIEXYZ */
- 1
- };
-
-
-
-
-/************************************************************************
- * *
- * PRIVATE ROUTINES *
- * *
- ************************************************************************/
-
-/*
- * NAME
- * TekHVC_ParseString
- *
- * SYNOPSIS
- */
-static int
-TekHVC_ParseString(
- register char *spec,
- XcmsColor *pColor)
-/*
- * DESCRIPTION
- * This routines takes a string and attempts to convert
- * it into a XcmsColor structure with XcmsTekHVCFormat.
- * The assumed TekHVC string syntax is:
- * TekHVC:<H>/<V>/<C>
- * Where H, V, and C are in string input format for floats
- * consisting of:
- * a. an optional sign
- * b. a string of numbers possibly containing a decimal point,
- * c. an optional exponent field containing an 'E' or 'e'
- * followed by a possibly signed integer string.
- *
- * RETURNS
- * XcmsFailure if invalid;
- * XcmsSuccess if valid.
- */
-{
- int n;
- char *pchar;
-
- if ((pchar = strchr(spec, ':')) == NULL) {
- return(XcmsFailure);
- }
- n = (int)(pchar - spec);
-
- /*
- * Check for proper prefix.
- */
- if (strncmp(spec, _XcmsTekHVC_prefix, n) != 0) {
- return(XcmsFailure);
- }
-
- /*
- * Attempt to parse the value portion.
- */
- if (sscanf(spec + n + 1, "%lf/%lf/%lf",
- &pColor->spec.TekHVC.H,
- &pColor->spec.TekHVC.V,
- &pColor->spec.TekHVC.C) != 3) {
- char *s; /* Maybe failed due to locale */
- int f;
- if ((s = strdup(spec))) {
- for (f = 0; s[f]; ++f)
- if (s[f] == '.')
- s[f] = ',';
- else if (s[f] == ',')
- s[f] = '.';
- if (sscanf(s + n + 1, "%lf/%lf/%lf",
- &pColor->spec.TekHVC.H,
- &pColor->spec.TekHVC.V,
- &pColor->spec.TekHVC.C) != 3) {
- free(s);
- return(XcmsFailure);
- }
- free(s);
- } else
- return(XcmsFailure);
- }
- pColor->format = XcmsTekHVCFormat;
- pColor->pixel = 0;
- return(XcmsTekHVC_ValidSpec(pColor));
-}
-
-
-/*
- * NAME
- * ThetaOffset -- compute thetaOffset
- *
- * SYNOPSIS
- */
-static int
-ThetaOffset(
- XcmsColor *pWhitePt,
- XcmsFloat *pThetaOffset)
-/*
- * DESCRIPTION
- * This routine computes the theta offset of a given
- * white point, i.e. XcmsColor. It is used in both this
- * conversion and the printer conversions.
- *
- * RETURNS
- * 0 if failed.
- * 1 if succeeded with no modifications.
- *
- * ASSUMPTIONS
- * Assumes:
- * pWhitePt != NULL
- * pWhitePt->format == XcmsCIEuvYFormat
- *
- */
-{
- double div, slopeuv;
-
- if (pWhitePt == NULL || pWhitePt->format != XcmsCIEuvYFormat) {
- return(0);
- }
-
- if ((div = u_BR - pWhitePt->spec.CIEuvY.u_prime) == 0.0) {
- return(0);
- }
- slopeuv = (v_BR - pWhitePt->spec.CIEuvY.v_prime) / div;
- *pThetaOffset = degrees(XCMS_ATAN(slopeuv));
- return(1);
-}
-
-
-
-/************************************************************************
- * *
- * PUBLIC ROUTINES *
- * *
- ************************************************************************/
-
-/*
- * NAME
- * XcmsTekHVC_ValidSpec()
- *
- * SYNOPSIS
- */
-static int
-XcmsTekHVC_ValidSpec(
- XcmsColor *pColor)
-/*
- * DESCRIPTION
- * Checks if values in the color specification are valid.
- * Also brings hue into the range 0.0 <= Hue < 360.0
- *
- * RETURNS
- * 0 if not valid.
- * 1 if valid.
- *
- */
-{
- if (pColor->format != XcmsTekHVCFormat) {
- return(XcmsFailure);
- }
- if (pColor->spec.TekHVC.V < (0.0 - XMY_DBL_EPSILON)
- || pColor->spec.TekHVC.V > (100.0 + XMY_DBL_EPSILON)
- || (pColor->spec.TekHVC.C < 0.0 - XMY_DBL_EPSILON)) {
- return(XcmsFailure);
- }
-
- if (pColor->spec.TekHVC.V < 0.0) {
- pColor->spec.TekHVC.V = 0.0 + XMY_DBL_EPSILON;
- } else if (pColor->spec.TekHVC.V > 100.0) {
- pColor->spec.TekHVC.V = 100.0 - XMY_DBL_EPSILON;
- }
-
- if (pColor->spec.TekHVC.C < 0.0) {
- pColor->spec.TekHVC.C = 0.0 - XMY_DBL_EPSILON;
- }
-
- while (pColor->spec.TekHVC.H < 0.0) {
- pColor->spec.TekHVC.H += 360.0;
- }
- while (pColor->spec.TekHVC.H >= 360.0) {
- pColor->spec.TekHVC.H -= 360.0;
- }
- return(XcmsSuccess);
-}
-
-/*
- * NAME
- * XcmsTekHVCToCIEuvY - convert TekHVC to CIEuvY
- *
- * SYNOPSIS
- */
-Status
-XcmsTekHVCToCIEuvY(
- XcmsCCC ccc,
- XcmsColor *pHVC_WhitePt,
- XcmsColor *pColors_in_out,
- unsigned int nColors)
-/*
- * DESCRIPTION
- * Transforms an array of TekHVC color specifications, given
- * their associated white point, to CIECIEuvY.color
- * specifications.
- *
- * RETURNS
- * XcmsFailure if failed, XcmsSuccess otherwise.
- *
- */
-{
- XcmsFloat thetaOffset;
- XcmsColor *pColor = pColors_in_out;
- XcmsColor whitePt;
- XcmsCIEuvY uvY_return;
- XcmsFloat tempHue, u, v;
- XcmsFloat tmpVal;
- register int i;
-
- /*
- * Check arguments
- */
- if (pHVC_WhitePt == NULL || pColors_in_out == NULL) {
- return(XcmsFailure);
- }
-
- /*
- * Make sure white point is in CIEuvY form
- */
- if (pHVC_WhitePt->format != XcmsCIEuvYFormat) {
- /* Make copy of the white point because we're going to modify it */
- memcpy((char *)&whitePt, (char *)pHVC_WhitePt, sizeof(XcmsColor));
- if (!_XcmsDIConvertColors(ccc, &whitePt, (XcmsColor *)NULL, 1,
- XcmsCIEuvYFormat)) {
- return(XcmsFailure);
- }
- pHVC_WhitePt = &whitePt;
- }
- /* Make sure it is a white point, i.e., Y == 1.0 */
- if (pHVC_WhitePt->spec.CIEuvY.Y != 1.0) {
- return(XcmsFailure);
- }
-
- /* Get the thetaOffset */
- if (!ThetaOffset(pHVC_WhitePt, &thetaOffset)) {
- return(XcmsFailure);
- }
-
- /*
- * Now convert each XcmsColor structure to CIEXYZ form
- */
- for (i = 0; i < nColors; i++, pColor++) {
-
- /* Make sure original format is TekHVC and is valid */
- if (!XcmsTekHVC_ValidSpec(pColor)) {
- return(XcmsFailure);
- }
-
- if (pColor->spec.TekHVC.V == 0.0 || pColor->spec.TekHVC.V == 100.0) {
- if (pColor->spec.TekHVC.V == 100.0) {
- uvY_return.Y = 1.0;
- } else { /* pColor->spec.TekHVC.V == 0.0 */
- uvY_return.Y = 0.0;
- }
- uvY_return.u_prime = pHVC_WhitePt->spec.CIEuvY.u_prime;
- uvY_return.v_prime = pHVC_WhitePt->spec.CIEuvY.v_prime;
- } else {
-
- /* Find the hue based on the white point offset */
- tempHue = pColor->spec.TekHVC.H + thetaOffset;
-
- while (tempHue < 0.0) {
- tempHue += 360.0;
- }
- while (tempHue >= 360.0) {
- tempHue -= 360.0;
- }
-
- tempHue = radians(tempHue);
-
- /* Calculate u'v' for the obtained hue */
- u = (XcmsFloat) ((XCMS_COS(tempHue) * pColor->spec.TekHVC.C) /
- (pColor->spec.TekHVC.V * (double)CHROMA_SCALE_FACTOR));
- v = (XcmsFloat) ((XCMS_SIN(tempHue) * pColor->spec.TekHVC.C) /
- (pColor->spec.TekHVC.V * (double)CHROMA_SCALE_FACTOR));
-
- /* Based on the white point get the offset from best red */
- uvY_return.u_prime = u + pHVC_WhitePt->spec.CIEuvY.u_prime;
- uvY_return.v_prime = v + pHVC_WhitePt->spec.CIEuvY.v_prime;
-
- /* Calculate the Y value based on the L* = V. */
- if (pColor->spec.TekHVC.V < 7.99953624) {
- uvY_return.Y = pColor->spec.TekHVC.V / 903.29;
- } else {
- tmpVal = (pColor->spec.TekHVC.V + 16.0) / 116.0;
- uvY_return.Y = tmpVal * tmpVal * tmpVal; /* tmpVal ** 3 */
- }
- }
-
- /* Copy result to pColor */
- memcpy((char *)&pColor->spec, (char *)&uvY_return, sizeof(XcmsCIEuvY));
-
- /* Identify that the format is now CIEuvY */
- pColor->format = XcmsCIEuvYFormat;
- }
- return(XcmsSuccess);
-}
-
-
-/*
- * NAME
- * XcmsCIEuvYToTekHVC - convert CIEuvY to TekHVC
- *
- * SYNOPSIS
- */
-Status
-XcmsCIEuvYToTekHVC(
- XcmsCCC ccc,
- XcmsColor *pHVC_WhitePt,
- XcmsColor *pColors_in_out,
- unsigned int nColors)
-/*
- * DESCRIPTION
- * Transforms an array of CIECIEuvY.color specifications, given
- * their assiciated white point, to TekHVC specifications.
- *
- * RETURNS
- * XcmsFailure if failed, XcmsSuccess otherwise.
- *
- */
-{
- XcmsFloat theta, L2, u, v, nThetaLow, nThetaHigh;
- XcmsFloat thetaOffset;
- XcmsColor *pColor = pColors_in_out;
- XcmsColor whitePt;
- XcmsTekHVC HVC_return;
- register int i;
-
- /*
- * Check arguments
- */
- if (pHVC_WhitePt == NULL || pColors_in_out == NULL) {
- return(XcmsFailure);
- }
-
- /*
- * Make sure white point is in CIEuvY form
- */
- if (pHVC_WhitePt->format != XcmsCIEuvYFormat) {
- /* Make copy of the white point because we're going to modify it */
- memcpy((char *)&whitePt, (char *)pHVC_WhitePt, sizeof(XcmsColor));
- if (!_XcmsDIConvertColors(ccc, &whitePt, (XcmsColor *)NULL, 1,
- XcmsCIEuvYFormat)) {
- return(XcmsFailure);
- }
- pHVC_WhitePt = &whitePt;
- }
- /* Make sure it is a white point, i.e., Y == 1.0 */
- if (pHVC_WhitePt->spec.CIEuvY.Y != 1.0) {
- return(XcmsFailure);
- }
- if (!ThetaOffset(pHVC_WhitePt, &thetaOffset)) {
- return(XcmsFailure);
- }
-
- /*
- * Now convert each XcmsColor structure to CIEXYZ form
- */
- for (i = 0; i < nColors; i++, pColor++) {
- if (!_XcmsCIEuvY_ValidSpec(pColor)) {
- return(XcmsFailure);
- }
-
- /* Use the white point offset to determine HVC */
- u = pColor->spec.CIEuvY.u_prime - pHVC_WhitePt->spec.CIEuvY.u_prime;
- v = pColor->spec.CIEuvY.v_prime - pHVC_WhitePt->spec.CIEuvY.v_prime;
-
- /* Calculate the offset */
- if (u == 0.0) {
- theta = 0.0;
- } else {
- theta = v / u;
- theta = (XcmsFloat) XCMS_ATAN((double)theta);
- theta = degrees(theta);
- }
-
- nThetaLow = 0.0;
- nThetaHigh = 360.0;
- if (u > 0.0 && v > 0.0) {
- nThetaLow = 0.0;
- nThetaHigh = 90.0;
- } else if (u < 0.0 && v > 0.0) {
- nThetaLow = 90.0;
- nThetaHigh = 180.0;
- } else if (u < 0.0 && v < 0.0) {
- nThetaLow = 180.0;
- nThetaHigh = 270.0;
- } else if (u > 0.0 && v < 0.0) {
- nThetaLow = 270.0;
- nThetaHigh = 360.0;
- }
- while (theta < nThetaLow) {
- theta += 90.0;
- }
- while (theta >= nThetaHigh) {
- theta -= 90.0;
- }
-
- /* calculate the L value from the given Y */
- L2 = (pColor->spec.CIEuvY.Y < 0.008856)
- ?
- (pColor->spec.CIEuvY.Y * 903.29)
- :
- ((XcmsFloat)(XCMS_CUBEROOT(pColor->spec.CIEuvY.Y) * 116.0) - 16.0);
- HVC_return.C = L2 * CHROMA_SCALE_FACTOR * XCMS_SQRT((double) ((u * u) + (v * v)));
- if (HVC_return.C < 0.0) {
- theta = 0.0;
- }
- HVC_return.V = L2;
- HVC_return.H = theta - thetaOffset;
-
- /*
- * If this is within the error margin let some other routine later
- * in the chain worry about the slop in the calculations.
- */
- while (HVC_return.H < -EPS) {
- HVC_return.H += 360.0;
- }
- while (HVC_return.H >= 360.0 + EPS) {
- HVC_return.H -= 360.0;
- }
-
- /* Copy result to pColor */
- memcpy((char *)&pColor->spec, (char *)&HVC_return, sizeof(XcmsTekHVC));
-
- /* Identify that the format is now CIEuvY */
- pColor->format = XcmsTekHVCFormat;
- }
- return(XcmsSuccess);
-}
-
-
-/*
- * NAME
- * _XcmsTekHVC_CheckModify
- *
- * SYNOPSIS
- */
-int
-_XcmsTekHVC_CheckModify(
- XcmsColor *pColor)
-/*
- * DESCRIPTION
- * Checks if values in the color specification are valid.
- * If they are not it modifies the values.
- * Also brings hue into the range 0.0 <= Hue < 360.0
- *
- * RETURNS
- * 0 if not valid.
- * 1 if valid.
- *
- */
-{
- int n;
-
- /* For now only use the TekHVC numbers as inputs */
- if (pColor->format != XcmsTekHVCFormat) {
- return(0);
- }
-
- if (pColor->spec.TekHVC.V < 0.0) {
- pColor->spec.TekHVC.V = 0.0 + XMY_DBL_EPSILON;
- } else if (pColor->spec.TekHVC.V > 100.0) {
- pColor->spec.TekHVC.V = 100.0 - XMY_DBL_EPSILON;
- }
-
- if (pColor->spec.TekHVC.C < 0.0) {
- pColor->spec.TekHVC.C = 0.0 - XMY_DBL_EPSILON;
- }
-
- if (pColor->spec.TekHVC.H < 0.0) {
- n = -pColor->spec.TekHVC.H / 360.0;
- pColor->spec.TekHVC.H += (n + 1) * 360.0;
- if (pColor->spec.TekHVC.H >= 360.0)
- pColor->spec.TekHVC.H -= 360.0;
- } else if (pColor->spec.TekHVC.H >= 360.0) {
- n = pColor->spec.TekHVC.H / 360.0;
- pColor->spec.TekHVC.H -= n * 360.0;
- }
- return(1);
-}
+
+/*
+ * Code and supporting documentation (c) Copyright 1990 1991 Tektronix, Inc.
+ * All Rights Reserved
+ *
+ * This file is a component of an X Window System-specific implementation
+ * of Xcms based on the TekColor Color Management System. TekColor is a
+ * trademark of Tektronix, Inc. The term "TekHVC" designates a particular
+ * color space that is the subject of U.S. Patent No. 4,985,853 (equivalent
+ * foreign patents pending). Permission is hereby granted to use, copy,
+ * modify, sell, and otherwise distribute this software and its
+ * documentation for any purpose and without fee, provided that:
+ *
+ * 1. This copyright, permission, and disclaimer notice is reproduced in
+ * all copies of this software and any modification thereof and in
+ * supporting documentation;
+ * 2. Any color-handling application which displays TekHVC color
+ * cooordinates identifies these as TekHVC color coordinates in any
+ * interface that displays these coordinates and in any associated
+ * documentation;
+ * 3. The term "TekHVC" is always used, and is only used, in association
+ * with the mathematical derivations of the TekHVC Color Space,
+ * including those provided in this file and any equivalent pathways and
+ * mathematical derivations, regardless of digital (e.g., floating point
+ * or integer) representation.
+ *
+ * Tektronix makes no representation about the suitability of this software
+ * for any purpose. It is provided "as is" and with all faults.
+ *
+ * TEKTRONIX DISCLAIMS ALL WARRANTIES APPLICABLE TO THIS SOFTWARE,
+ * INCLUDING THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+ * PARTICULAR PURPOSE. IN NO EVENT SHALL TEKTRONIX BE LIABLE FOR ANY
+ * SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER
+ * RESULTING FROM LOSS OF USE, DATA, OR PROFITS, WHETHER IN AN ACTION OF
+ * CONTRACT, NEGLIGENCE, OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
+ * CONNECTION WITH THE USE OR THE PERFORMANCE OF THIS SOFTWARE.
+ *
+ * NAME
+ * TekHVC.c
+ *
+ * DESCRIPTION
+ * This file contains routines that support the TekHVC
+ * color space to include conversions to and from the CIE
+ * XYZ space.
+ *
+ * DOCUMENTATION
+ * "TekColor Color Management System, System Implementor's Manual"
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+#include "Xcmsint.h"
+#include <X11/Xos.h>
+#include <math.h>
+#include "Cv.h"
+
+#include <stdio.h>
+
+/*
+ * DEFINES
+ */
+#define u_BR 0.7127 /* u' Best Red */
+#define v_BR 0.4931 /* v' Best Red */
+#define EPS 0.001
+#define CHROMA_SCALE_FACTOR 7.50725
+#ifndef PI
+# ifdef M_PI
+# define PI M_PI
+# else
+# define PI 3.14159265358979323846264338327950
+# endif
+#endif
+#ifndef degrees
+# define degrees(r) ((XcmsFloat)(r) * 180.0 / PI)
+#endif /* degrees */
+#ifndef radians
+# define radians(d) ((XcmsFloat)(d) * PI / 180.0)
+#endif /* radians */
+
+/*************************************************************************
+ * Note: The DBL_EPSILON for ANSI is 1e-5 so my checks need to take
+ * this into account. If your DBL_EPSILON is different then
+ * adjust this define.
+ *
+ * Also note that EPS is the error factor in the calculations
+ * This may need to be the same as XMY_DBL_EPSILON in
+ * some implementations.
+ **************************************************************************/
+#ifdef DBL_EPSILON
+# define XMY_DBL_EPSILON DBL_EPSILON
+#else
+# define XMY_DBL_EPSILON 0.00001
+#endif
+
+/*
+ * FORWARD DECLARATIONS
+ */
+static int TekHVC_ParseString(register char *spec, XcmsColor *pColor);
+static Status XcmsTekHVC_ValidSpec(XcmsColor *pColor);
+
+/*
+ * LOCAL VARIABLES
+ */
+
+ /*
+ * NULL terminated list of functions applied to get from TekHVC to CIEXYZ
+ */
+static XcmsConversionProc Fl_TekHVC_to_CIEXYZ[] = {
+ XcmsTekHVCToCIEuvY,
+ XcmsCIEuvYToCIEXYZ,
+ NULL
+};
+
+ /*
+ * NULL terminated list of functions applied to get from CIEXYZ to TekHVC
+ */
+static XcmsConversionProc Fl_CIEXYZ_to_TekHVC[] = {
+ XcmsCIEXYZToCIEuvY,
+ XcmsCIEuvYToTekHVC,
+ NULL
+};
+
+/*
+ * GLOBALS
+ */
+
+ /*
+ * TekHVC Color Space
+ */
+XcmsColorSpace XcmsTekHVCColorSpace =
+ {
+ _XcmsTekHVC_prefix, /* prefix */
+ XcmsTekHVCFormat, /* id */
+ TekHVC_ParseString, /* parseString */
+ Fl_TekHVC_to_CIEXYZ, /* to_CIEXYZ */
+ Fl_CIEXYZ_to_TekHVC, /* from_CIEXYZ */
+ 1
+ };
+
+
+
+
+/************************************************************************
+ * *
+ * PRIVATE ROUTINES *
+ * *
+ ************************************************************************/
+
+/*
+ * NAME
+ * TekHVC_ParseString
+ *
+ * SYNOPSIS
+ */
+static int
+TekHVC_ParseString(
+ register char *spec,
+ XcmsColor *pColor)
+/*
+ * DESCRIPTION
+ * This routines takes a string and attempts to convert
+ * it into a XcmsColor structure with XcmsTekHVCFormat.
+ * The assumed TekHVC string syntax is:
+ * TekHVC:<H>/<V>/<C>
+ * Where H, V, and C are in string input format for floats
+ * consisting of:
+ * a. an optional sign
+ * b. a string of numbers possibly containing a decimal point,
+ * c. an optional exponent field containing an 'E' or 'e'
+ * followed by a possibly signed integer string.
+ *
+ * RETURNS
+ * XcmsFailure if invalid;
+ * XcmsSuccess if valid.
+ */
+{
+ int n;
+ char *pchar;
+
+ if ((pchar = strchr(spec, ':')) == NULL) {
+ return(XcmsFailure);
+ }
+ n = (int)(pchar - spec);
+
+ /*
+ * Check for proper prefix.
+ */
+ if (strncmp(spec, _XcmsTekHVC_prefix, n) != 0) {
+ return(XcmsFailure);
+ }
+
+ /*
+ * Attempt to parse the value portion.
+ */
+ if (sscanf(spec + n + 1, "%lf/%lf/%lf",
+ &pColor->spec.TekHVC.H,
+ &pColor->spec.TekHVC.V,
+ &pColor->spec.TekHVC.C) != 3) {
+ char *s; /* Maybe failed due to locale */
+ int f;
+ if ((s = strdup(spec))) {
+ for (f = 0; s[f]; ++f)
+ if (s[f] == '.')
+ s[f] = ',';
+ else if (s[f] == ',')
+ s[f] = '.';
+ if (sscanf(s + n + 1, "%lf/%lf/%lf",
+ &pColor->spec.TekHVC.H,
+ &pColor->spec.TekHVC.V,
+ &pColor->spec.TekHVC.C) != 3) {
+ free(s);
+ return(XcmsFailure);
+ }
+ free(s);
+ } else
+ return(XcmsFailure);
+ }
+ pColor->format = XcmsTekHVCFormat;
+ pColor->pixel = 0;
+ return(XcmsTekHVC_ValidSpec(pColor));
+}
+
+
+/*
+ * NAME
+ * ThetaOffset -- compute thetaOffset
+ *
+ * SYNOPSIS
+ */
+static int
+ThetaOffset(
+ XcmsColor *pWhitePt,
+ XcmsFloat *pThetaOffset)
+/*
+ * DESCRIPTION
+ * This routine computes the theta offset of a given
+ * white point, i.e. XcmsColor. It is used in both this
+ * conversion and the printer conversions.
+ *
+ * RETURNS
+ * 0 if failed.
+ * 1 if succeeded with no modifications.
+ *
+ * ASSUMPTIONS
+ * Assumes:
+ * pWhitePt != NULL
+ * pWhitePt->format == XcmsCIEuvYFormat
+ *
+ */
+{
+ double div, slopeuv;
+
+ if (pWhitePt == NULL || pWhitePt->format != XcmsCIEuvYFormat) {
+ return(0);
+ }
+
+ if ((div = u_BR - pWhitePt->spec.CIEuvY.u_prime) == 0.0) {
+ return(0);
+ }
+ slopeuv = (v_BR - pWhitePt->spec.CIEuvY.v_prime) / div;
+ *pThetaOffset = degrees(XCMS_ATAN(slopeuv));
+ return(1);
+}
+
+
+
+/************************************************************************
+ * *
+ * PUBLIC ROUTINES *
+ * *
+ ************************************************************************/
+
+/*
+ * NAME
+ * XcmsTekHVC_ValidSpec()
+ *
+ * SYNOPSIS
+ */
+static int
+XcmsTekHVC_ValidSpec(
+ XcmsColor *pColor)
+/*
+ * DESCRIPTION
+ * Checks if values in the color specification are valid.
+ * Also brings hue into the range 0.0 <= Hue < 360.0
+ *
+ * RETURNS
+ * 0 if not valid.
+ * 1 if valid.
+ *
+ */
+{
+ if (pColor->format != XcmsTekHVCFormat) {
+ return(XcmsFailure);
+ }
+ if (pColor->spec.TekHVC.V < (0.0 - XMY_DBL_EPSILON)
+ || pColor->spec.TekHVC.V > (100.0 + XMY_DBL_EPSILON)
+ || (pColor->spec.TekHVC.C < 0.0 - XMY_DBL_EPSILON)) {
+ return(XcmsFailure);
+ }
+
+ if (pColor->spec.TekHVC.V < 0.0) {
+ pColor->spec.TekHVC.V = 0.0 + XMY_DBL_EPSILON;
+ } else if (pColor->spec.TekHVC.V > 100.0) {
+ pColor->spec.TekHVC.V = 100.0 - XMY_DBL_EPSILON;
+ }
+
+ if (pColor->spec.TekHVC.C < 0.0) {
+ pColor->spec.TekHVC.C = 0.0 - XMY_DBL_EPSILON;
+ }
+
+ while (pColor->spec.TekHVC.H < 0.0) {
+ pColor->spec.TekHVC.H += 360.0;
+ }
+ while (pColor->spec.TekHVC.H >= 360.0) {
+ pColor->spec.TekHVC.H -= 360.0;
+ }
+ return(XcmsSuccess);
+}
+
+/*
+ * NAME
+ * XcmsTekHVCToCIEuvY - convert TekHVC to CIEuvY
+ *
+ * SYNOPSIS
+ */
+Status
+XcmsTekHVCToCIEuvY(
+ XcmsCCC ccc,
+ XcmsColor *pHVC_WhitePt,
+ XcmsColor *pColors_in_out,
+ unsigned int nColors)
+/*
+ * DESCRIPTION
+ * Transforms an array of TekHVC color specifications, given
+ * their associated white point, to CIECIEuvY.color
+ * specifications.
+ *
+ * RETURNS
+ * XcmsFailure if failed, XcmsSuccess otherwise.
+ *
+ */
+{
+ XcmsFloat thetaOffset;
+ XcmsColor *pColor = pColors_in_out;
+ XcmsColor whitePt;
+ XcmsCIEuvY uvY_return;
+ XcmsFloat tempHue, u, v;
+ XcmsFloat tmpVal;
+ register int i;
+
+ /*
+ * Check arguments
+ */
+ if (pHVC_WhitePt == NULL || pColors_in_out == NULL) {
+ return(XcmsFailure);
+ }
+
+ /*
+ * Make sure white point is in CIEuvY form
+ */
+ if (pHVC_WhitePt->format != XcmsCIEuvYFormat) {
+ /* Make copy of the white point because we're going to modify it */
+ memcpy((char *)&whitePt, (char *)pHVC_WhitePt, sizeof(XcmsColor));
+ if (!_XcmsDIConvertColors(ccc, &whitePt, (XcmsColor *)NULL, 1,
+ XcmsCIEuvYFormat)) {
+ return(XcmsFailure);
+ }
+ pHVC_WhitePt = &whitePt;
+ }
+ /* Make sure it is a white point, i.e., Y == 1.0 */
+ if (pHVC_WhitePt->spec.CIEuvY.Y != 1.0) {
+ return(XcmsFailure);
+ }
+
+ /* Get the thetaOffset */
+ if (!ThetaOffset(pHVC_WhitePt, &thetaOffset)) {
+ return(XcmsFailure);
+ }
+
+ /*
+ * Now convert each XcmsColor structure to CIEXYZ form
+ */
+ for (i = 0; i < nColors; i++, pColor++) {
+
+ /* Make sure original format is TekHVC and is valid */
+ if (!XcmsTekHVC_ValidSpec(pColor)) {
+ return(XcmsFailure);
+ }
+
+ if (pColor->spec.TekHVC.V == 0.0 || pColor->spec.TekHVC.V == 100.0) {
+ if (pColor->spec.TekHVC.V == 100.0) {
+ uvY_return.Y = 1.0;
+ } else { /* pColor->spec.TekHVC.V == 0.0 */
+ uvY_return.Y = 0.0;
+ }
+ uvY_return.u_prime = pHVC_WhitePt->spec.CIEuvY.u_prime;
+ uvY_return.v_prime = pHVC_WhitePt->spec.CIEuvY.v_prime;
+ } else {
+
+ /* Find the hue based on the white point offset */
+ tempHue = pColor->spec.TekHVC.H + thetaOffset;
+
+ while (tempHue < 0.0) {
+ tempHue += 360.0;
+ }
+ while (tempHue >= 360.0) {
+ tempHue -= 360.0;
+ }
+
+ tempHue = radians(tempHue);
+
+ /* Calculate u'v' for the obtained hue */
+ u = (XcmsFloat) ((XCMS_COS(tempHue) * pColor->spec.TekHVC.C) /
+ (pColor->spec.TekHVC.V * (double)CHROMA_SCALE_FACTOR));
+ v = (XcmsFloat) ((XCMS_SIN(tempHue) * pColor->spec.TekHVC.C) /
+ (pColor->spec.TekHVC.V * (double)CHROMA_SCALE_FACTOR));
+
+ /* Based on the white point get the offset from best red */
+ uvY_return.u_prime = u + pHVC_WhitePt->spec.CIEuvY.u_prime;
+ uvY_return.v_prime = v + pHVC_WhitePt->spec.CIEuvY.v_prime;
+
+ /* Calculate the Y value based on the L* = V. */
+ if (pColor->spec.TekHVC.V < 7.99953624) {
+ uvY_return.Y = pColor->spec.TekHVC.V / 903.29;
+ } else {
+ tmpVal = (pColor->spec.TekHVC.V + 16.0) / 116.0;
+ uvY_return.Y = tmpVal * tmpVal * tmpVal; /* tmpVal ** 3 */
+ }
+ }
+
+ /* Copy result to pColor */
+ memcpy((char *)&pColor->spec, (char *)&uvY_return, sizeof(XcmsCIEuvY));
+
+ /* Identify that the format is now CIEuvY */
+ pColor->format = XcmsCIEuvYFormat;
+ }
+ return(XcmsSuccess);
+}
+
+
+/*
+ * NAME
+ * XcmsCIEuvYToTekHVC - convert CIEuvY to TekHVC
+ *
+ * SYNOPSIS
+ */
+Status
+XcmsCIEuvYToTekHVC(
+ XcmsCCC ccc,
+ XcmsColor *pHVC_WhitePt,
+ XcmsColor *pColors_in_out,
+ unsigned int nColors)
+/*
+ * DESCRIPTION
+ * Transforms an array of CIECIEuvY.color specifications, given
+ * their assiciated white point, to TekHVC specifications.
+ *
+ * RETURNS
+ * XcmsFailure if failed, XcmsSuccess otherwise.
+ *
+ */
+{
+ XcmsFloat theta, L2, u, v, nThetaLow, nThetaHigh;
+ XcmsFloat thetaOffset;
+ XcmsColor *pColor = pColors_in_out;
+ XcmsColor whitePt;
+ XcmsTekHVC HVC_return;
+ register int i;
+
+ /*
+ * Check arguments
+ */
+ if (pHVC_WhitePt == NULL || pColors_in_out == NULL) {
+ return(XcmsFailure);
+ }
+
+ /*
+ * Make sure white point is in CIEuvY form
+ */
+ if (pHVC_WhitePt->format != XcmsCIEuvYFormat) {
+ /* Make copy of the white point because we're going to modify it */
+ memcpy((char *)&whitePt, (char *)pHVC_WhitePt, sizeof(XcmsColor));
+ if (!_XcmsDIConvertColors(ccc, &whitePt, (XcmsColor *)NULL, 1,
+ XcmsCIEuvYFormat)) {
+ return(XcmsFailure);
+ }
+ pHVC_WhitePt = &whitePt;
+ }
+ /* Make sure it is a white point, i.e., Y == 1.0 */
+ if (pHVC_WhitePt->spec.CIEuvY.Y != 1.0) {
+ return(XcmsFailure);
+ }
+ if (!ThetaOffset(pHVC_WhitePt, &thetaOffset)) {
+ return(XcmsFailure);
+ }
+
+ /*
+ * Now convert each XcmsColor structure to CIEXYZ form
+ */
+ for (i = 0; i < nColors; i++, pColor++) {
+ if (!_XcmsCIEuvY_ValidSpec(pColor)) {
+ return(XcmsFailure);
+ }
+
+ /* Use the white point offset to determine HVC */
+ u = pColor->spec.CIEuvY.u_prime - pHVC_WhitePt->spec.CIEuvY.u_prime;
+ v = pColor->spec.CIEuvY.v_prime - pHVC_WhitePt->spec.CIEuvY.v_prime;
+
+ /* Calculate the offset */
+ if (u == 0.0) {
+ theta = 0.0;
+ } else {
+ theta = v / u;
+ theta = (XcmsFloat) XCMS_ATAN((double)theta);
+ theta = degrees(theta);
+ }
+
+ nThetaLow = 0.0;
+ nThetaHigh = 360.0;
+ if (u > 0.0 && v > 0.0) {
+ nThetaLow = 0.0;
+ nThetaHigh = 90.0;
+ } else if (u < 0.0 && v > 0.0) {
+ nThetaLow = 90.0;
+ nThetaHigh = 180.0;
+ } else if (u < 0.0 && v < 0.0) {
+ nThetaLow = 180.0;
+ nThetaHigh = 270.0;
+ } else if (u > 0.0 && v < 0.0) {
+ nThetaLow = 270.0;
+ nThetaHigh = 360.0;
+ }
+ while (theta < nThetaLow) {
+ theta += 90.0;
+ }
+ while (theta >= nThetaHigh) {
+ theta -= 90.0;
+ }
+
+ /* calculate the L value from the given Y */
+ L2 = (pColor->spec.CIEuvY.Y < 0.008856)
+ ?
+ (pColor->spec.CIEuvY.Y * 903.29)
+ :
+ ((XcmsFloat)(XCMS_CUBEROOT(pColor->spec.CIEuvY.Y) * 116.0) - 16.0);
+ HVC_return.C = L2 * CHROMA_SCALE_FACTOR * XCMS_SQRT((double) ((u * u) + (v * v)));
+ if (HVC_return.C < 0.0) {
+ theta = 0.0;
+ }
+ HVC_return.V = L2;
+ HVC_return.H = theta - thetaOffset;
+
+ /*
+ * If this is within the error margin let some other routine later
+ * in the chain worry about the slop in the calculations.
+ */
+ while (HVC_return.H < -EPS) {
+ HVC_return.H += 360.0;
+ }
+ while (HVC_return.H >= 360.0 + EPS) {
+ HVC_return.H -= 360.0;
+ }
+
+ /* Copy result to pColor */
+ memcpy((char *)&pColor->spec, (char *)&HVC_return, sizeof(XcmsTekHVC));
+
+ /* Identify that the format is now CIEuvY */
+ pColor->format = XcmsTekHVCFormat;
+ }
+ return(XcmsSuccess);
+}
+
+
+/*
+ * NAME
+ * _XcmsTekHVC_CheckModify
+ *
+ * SYNOPSIS
+ */
+int
+_XcmsTekHVC_CheckModify(
+ XcmsColor *pColor)
+/*
+ * DESCRIPTION
+ * Checks if values in the color specification are valid.
+ * If they are not it modifies the values.
+ * Also brings hue into the range 0.0 <= Hue < 360.0
+ *
+ * RETURNS
+ * 0 if not valid.
+ * 1 if valid.
+ *
+ */
+{
+ int n;
+
+ /* For now only use the TekHVC numbers as inputs */
+ if (pColor->format != XcmsTekHVCFormat) {
+ return(0);
+ }
+
+ if (pColor->spec.TekHVC.V < 0.0) {
+ pColor->spec.TekHVC.V = 0.0 + XMY_DBL_EPSILON;
+ } else if (pColor->spec.TekHVC.V > 100.0) {
+ pColor->spec.TekHVC.V = 100.0 - XMY_DBL_EPSILON;
+ }
+
+ if (pColor->spec.TekHVC.C < 0.0) {
+ pColor->spec.TekHVC.C = 0.0 - XMY_DBL_EPSILON;
+ }
+
+ if (pColor->spec.TekHVC.H < 0.0) {
+ n = -pColor->spec.TekHVC.H / 360.0;
+ pColor->spec.TekHVC.H += (n + 1) * 360.0;
+ if (pColor->spec.TekHVC.H >= 360.0)
+ pColor->spec.TekHVC.H -= 360.0;
+ } else if (pColor->spec.TekHVC.H >= 360.0) {
+ n = pColor->spec.TekHVC.H / 360.0;
+ pColor->spec.TekHVC.H -= n * 360.0;
+ }
+ return(1);
+}
diff --git a/libX11/src/xcms/HVCGcC.c b/libX11/src/xcms/HVCGcC.c
index 33743dc34..6d52eac63 100644
--- a/libX11/src/xcms/HVCGcC.c
+++ b/libX11/src/xcms/HVCGcC.c
@@ -1,149 +1,149 @@
-
-/*
- * Code and supporting documentation (c) Copyright 1990 1991 Tektronix, Inc.
- * All Rights Reserved
- *
- * This file is a component of an X Window System-specific implementation
- * of Xcms based on the TekColor Color Management System. TekColor is a
- * trademark of Tektronix, Inc. The term "TekHVC" designates a particular
- * color space that is the subject of U.S. Patent No. 4,985,853 (equivalent
- * foreign patents pending). Permission is hereby granted to use, copy,
- * modify, sell, and otherwise distribute this software and its
- * documentation for any purpose and without fee, provided that:
- *
- * 1. This copyright, permission, and disclaimer notice is reproduced in
- * all copies of this software and any modification thereof and in
- * supporting documentation;
- * 2. Any color-handling application which displays TekHVC color
- * cooordinates identifies these as TekHVC color coordinates in any
- * interface that displays these coordinates and in any associated
- * documentation;
- * 3. The term "TekHVC" is always used, and is only used, in association
- * with the mathematical derivations of the TekHVC Color Space,
- * including those provided in this file and any equivalent pathways and
- * mathematical derivations, regardless of digital (e.g., floating point
- * or integer) representation.
- *
- * Tektronix makes no representation about the suitability of this software
- * for any purpose. It is provided "as is" and with all faults.
- *
- * TEKTRONIX DISCLAIMS ALL WARRANTIES APPLICABLE TO THIS SOFTWARE,
- * INCLUDING THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE. IN NO EVENT SHALL TEKTRONIX BE LIABLE FOR ANY
- * SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER
- * RESULTING FROM LOSS OF USE, DATA, OR PROFITS, WHETHER IN AN ACTION OF
- * CONTRACT, NEGLIGENCE, OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
- * CONNECTION WITH THE USE OR THE PERFORMANCE OF THIS SOFTWARE.
- *
- * NAME
- * TekHVCGcC.c
- *
- * DESCRIPTION
- * Source for XcmsTekHVCClipC() gamut compression routine.
- *
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-#include "Xcmsint.h"
-#include "Cv.h"
-
-
-/************************************************************************
- * *
- * PUBLIC ROUTINES *
- * *
- ************************************************************************/
-
-/*
- * NAME
- * XcmsTekHVCClipC - Reduce the chroma for a hue and value
- *
- * SYNOPSIS
- */
-/* ARGSUSED */
-Status
-XcmsTekHVCClipC (
- XcmsCCC ccc,
- XcmsColor *pColors_in_out,
- unsigned int nColors,
- unsigned int i,
- Bool *pCompressed)
-/*
- * DESCRIPTION
- * Reduce the Chroma for a specific hue and value to
- * to bring the given color into the gamut of the
- * specified device. As required of gamut compression
- * functions in Xcms, this routine returns pColor_in_out
- * in XcmsCIEXYZFormat on successful completion.
- *
- * Since this routine works with the value within
- * pColor_in_out intermediate results may be returned
- * even though it may be invalid.
- *
- * RETURNS
- * XcmsFailure - Failure
- * XcmsSuccess - Succeeded
- *
- */
-{
- Status retval;
- XcmsColor *pColor;
-
- /*
- * Color specification passed as input can be assumed to:
- * 1. Be in XcmsCIEXYZFormat
- * 2. Already be white point adjusted for the Screen White Point.
- * This means that the white point now associated with this
- * color spec is the Screen White Point (even if the
- * ccc->clientWhitePt differs).
- */
-
- /*
- * Insure TekHVC installed
- */
- if (XcmsAddColorSpace(&XcmsTekHVCColorSpace) == XcmsFailure) {
- return(XcmsFailure);
- }
-
- pColor = pColors_in_out + i;
-
- if (ccc->visual->class < StaticColor &&
- FunctionSetOfCCC(ccc) != (XPointer) &XcmsLinearRGBFunctionSet) {
- /*
- * GRAY !
- */
- _XcmsDIConvertColors(ccc, pColor, &ccc->pPerScrnInfo->screenWhitePt,
- 1, XcmsTekHVCFormat);
- pColor->spec.TekHVC.H = pColor->spec.TekHVC.C = 0.0;
- _XcmsDIConvertColors(ccc, pColor, &ccc->pPerScrnInfo->screenWhitePt,
- 1, XcmsCIEXYZFormat);
- if (pCompressed) {
- *(pCompressed + i) = True;
- }
- return(XcmsSuccess);
- } else {
- if (pColor->format != XcmsTekHVCFormat) {
- if (_XcmsDIConvertColors(ccc, pColor,
- &ccc->pPerScrnInfo->screenWhitePt, 1, XcmsTekHVCFormat)
- == XcmsFailure) {
- return(XcmsFailure);
- }
- }
- if (XcmsTekHVCQueryMaxC(ccc,
- pColor->spec.TekHVC.H,
- pColor->spec.TekHVC.V,
- pColor)
- == XcmsFailure) {
- return(XcmsFailure);
- }
- retval = _XcmsDIConvertColors(ccc, pColor,
- &ccc->pPerScrnInfo->screenWhitePt, 1, XcmsCIEXYZFormat);
- if (retval != XcmsFailure && pCompressed != NULL) {
- *(pCompressed + i) = True;
- }
- return(retval);
- }
-}
+
+/*
+ * Code and supporting documentation (c) Copyright 1990 1991 Tektronix, Inc.
+ * All Rights Reserved
+ *
+ * This file is a component of an X Window System-specific implementation
+ * of Xcms based on the TekColor Color Management System. TekColor is a
+ * trademark of Tektronix, Inc. The term "TekHVC" designates a particular
+ * color space that is the subject of U.S. Patent No. 4,985,853 (equivalent
+ * foreign patents pending). Permission is hereby granted to use, copy,
+ * modify, sell, and otherwise distribute this software and its
+ * documentation for any purpose and without fee, provided that:
+ *
+ * 1. This copyright, permission, and disclaimer notice is reproduced in
+ * all copies of this software and any modification thereof and in
+ * supporting documentation;
+ * 2. Any color-handling application which displays TekHVC color
+ * cooordinates identifies these as TekHVC color coordinates in any
+ * interface that displays these coordinates and in any associated
+ * documentation;
+ * 3. The term "TekHVC" is always used, and is only used, in association
+ * with the mathematical derivations of the TekHVC Color Space,
+ * including those provided in this file and any equivalent pathways and
+ * mathematical derivations, regardless of digital (e.g., floating point
+ * or integer) representation.
+ *
+ * Tektronix makes no representation about the suitability of this software
+ * for any purpose. It is provided "as is" and with all faults.
+ *
+ * TEKTRONIX DISCLAIMS ALL WARRANTIES APPLICABLE TO THIS SOFTWARE,
+ * INCLUDING THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+ * PARTICULAR PURPOSE. IN NO EVENT SHALL TEKTRONIX BE LIABLE FOR ANY
+ * SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER
+ * RESULTING FROM LOSS OF USE, DATA, OR PROFITS, WHETHER IN AN ACTION OF
+ * CONTRACT, NEGLIGENCE, OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
+ * CONNECTION WITH THE USE OR THE PERFORMANCE OF THIS SOFTWARE.
+ *
+ * NAME
+ * TekHVCGcC.c
+ *
+ * DESCRIPTION
+ * Source for XcmsTekHVCClipC() gamut compression routine.
+ *
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+#include "Xcmsint.h"
+#include "Cv.h"
+
+
+/************************************************************************
+ * *
+ * PUBLIC ROUTINES *
+ * *
+ ************************************************************************/
+
+/*
+ * NAME
+ * XcmsTekHVCClipC - Reduce the chroma for a hue and value
+ *
+ * SYNOPSIS
+ */
+/* ARGSUSED */
+Status
+XcmsTekHVCClipC (
+ XcmsCCC ccc,
+ XcmsColor *pColors_in_out,
+ unsigned int nColors,
+ unsigned int i,
+ Bool *pCompressed)
+/*
+ * DESCRIPTION
+ * Reduce the Chroma for a specific hue and value to
+ * to bring the given color into the gamut of the
+ * specified device. As required of gamut compression
+ * functions in Xcms, this routine returns pColor_in_out
+ * in XcmsCIEXYZFormat on successful completion.
+ *
+ * Since this routine works with the value within
+ * pColor_in_out intermediate results may be returned
+ * even though it may be invalid.
+ *
+ * RETURNS
+ * XcmsFailure - Failure
+ * XcmsSuccess - Succeeded
+ *
+ */
+{
+ Status retval;
+ XcmsColor *pColor;
+
+ /*
+ * Color specification passed as input can be assumed to:
+ * 1. Be in XcmsCIEXYZFormat
+ * 2. Already be white point adjusted for the Screen White Point.
+ * This means that the white point now associated with this
+ * color spec is the Screen White Point (even if the
+ * ccc->clientWhitePt differs).
+ */
+
+ /*
+ * Insure TekHVC installed
+ */
+ if (XcmsAddColorSpace(&XcmsTekHVCColorSpace) == XcmsFailure) {
+ return(XcmsFailure);
+ }
+
+ pColor = pColors_in_out + i;
+
+ if (ccc->visual->class < StaticColor &&
+ FunctionSetOfCCC(ccc) != (XPointer) &XcmsLinearRGBFunctionSet) {
+ /*
+ * GRAY !
+ */
+ _XcmsDIConvertColors(ccc, pColor, &ccc->pPerScrnInfo->screenWhitePt,
+ 1, XcmsTekHVCFormat);
+ pColor->spec.TekHVC.H = pColor->spec.TekHVC.C = 0.0;
+ _XcmsDIConvertColors(ccc, pColor, &ccc->pPerScrnInfo->screenWhitePt,
+ 1, XcmsCIEXYZFormat);
+ if (pCompressed) {
+ *(pCompressed + i) = True;
+ }
+ return(XcmsSuccess);
+ } else {
+ if (pColor->format != XcmsTekHVCFormat) {
+ if (_XcmsDIConvertColors(ccc, pColor,
+ &ccc->pPerScrnInfo->screenWhitePt, 1, XcmsTekHVCFormat)
+ == XcmsFailure) {
+ return(XcmsFailure);
+ }
+ }
+ if (XcmsTekHVCQueryMaxC(ccc,
+ pColor->spec.TekHVC.H,
+ pColor->spec.TekHVC.V,
+ pColor)
+ == XcmsFailure) {
+ return(XcmsFailure);
+ }
+ retval = _XcmsDIConvertColors(ccc, pColor,
+ &ccc->pPerScrnInfo->screenWhitePt, 1, XcmsCIEXYZFormat);
+ if (retval != XcmsFailure && pCompressed != NULL) {
+ *(pCompressed + i) = True;
+ }
+ return(retval);
+ }
+}
diff --git a/libX11/src/xcms/HVCGcV.c b/libX11/src/xcms/HVCGcV.c
index 9998cc43d..0752a0724 100644
--- a/libX11/src/xcms/HVCGcV.c
+++ b/libX11/src/xcms/HVCGcV.c
@@ -1,201 +1,201 @@
-
-/*
- * Code and supporting documentation (c) Copyright 1990 1991 Tektronix, Inc.
- * All Rights Reserved
- *
- * This file is a component of an X Window System-specific implementation
- * of Xcms based on the TekColor Color Management System. TekColor is a
- * trademark of Tektronix, Inc. The term "TekHVC" designates a particular
- * color space that is the subject of U.S. Patent No. 4,985,853 (equivalent
- * foreign patents pending). Permission is hereby granted to use, copy,
- * modify, sell, and otherwise distribute this software and its
- * documentation for any purpose and without fee, provided that:
- *
- * 1. This copyright, permission, and disclaimer notice is reproduced in
- * all copies of this software and any modification thereof and in
- * supporting documentation;
- * 2. Any color-handling application which displays TekHVC color
- * cooordinates identifies these as TekHVC color coordinates in any
- * interface that displays these coordinates and in any associated
- * documentation;
- * 3. The term "TekHVC" is always used, and is only used, in association
- * with the mathematical derivations of the TekHVC Color Space,
- * including those provided in this file and any equivalent pathways and
- * mathematical derivations, regardless of digital (e.g., floating point
- * or integer) representation.
- *
- * Tektronix makes no representation about the suitability of this software
- * for any purpose. It is provided "as is" and with all faults.
- *
- * TEKTRONIX DISCLAIMS ALL WARRANTIES APPLICABLE TO THIS SOFTWARE,
- * INCLUDING THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE. IN NO EVENT SHALL TEKTRONIX BE LIABLE FOR ANY
- * SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER
- * RESULTING FROM LOSS OF USE, DATA, OR PROFITS, WHETHER IN AN ACTION OF
- * CONTRACT, NEGLIGENCE, OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
- * CONNECTION WITH THE USE OR THE PERFORMANCE OF THIS SOFTWARE.
- *
- * NAME
- * TekHVCGcV.c
- *
- * DESCRIPTION
- * Source for XcmsTekHVCClipV() gamut compression routine.
- *
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-#include "Xcmsint.h"
-#include "Cv.h"
-
-
-/************************************************************************
- * *
- * PUBLIC ROUTINES *
- * *
- ************************************************************************/
-
-/*
- * NAME
- * XcmsTekHVCClipV - Return the closest value
- *
- * SYNOPSIS
- */
-/* ARGSUSED */
-Status
-XcmsTekHVCClipV (
- XcmsCCC ccc,
- XcmsColor *pColors_in_out,
- unsigned int nColors,
- unsigned int i,
- Bool *pCompressed)
-/*
- * DESCRIPTION
- * Return the closest value for a specific hue and chroma.
- * This routine takes any color as input and outputs
- * a CIE XYZ color.
- *
- * Since this routine works with the value within
- * pColor_in_out intermediate results may be returned
- * even though it may be invalid.
- *
- * RETURNS
- * XcmsFailure - Failure
- * XcmsSuccess - Succeeded
- *
- */
-{
- XcmsColor *pColor;
- XcmsColor hvc_max;
- XcmsCCCRec myCCC;
- Status retval;
-
- /*
- * Insure TekHVC installed
- */
- if (XcmsAddColorSpace(&XcmsTekHVCColorSpace) == XcmsFailure) {
- return(XcmsFailure);
- }
-
- /* Use my own CCC */
- memcpy ((char *)&myCCC, (char *)ccc, sizeof(XcmsCCCRec));
- myCCC.clientWhitePt.format = XcmsUndefinedFormat;/* Inherit Screen WP */
- myCCC.gamutCompProc = (XcmsCompressionProc)NULL;/* no gamut compression */
-
- /*
- * Color specification passed as input can be assumed to:
- * 1. Be in XcmsCIEXYZFormat
- * 2. Already be white point adjusted for the Screen White Point.
- * This means that the white point now associated with this
- * color spec is the Screen White Point (even if the
- * ccc->clientWhitePt differs).
- */
-
- pColor = pColors_in_out + i;
-
- if (ccc->visual->class < StaticColor &&
- FunctionSetOfCCC(ccc) != (XPointer) &XcmsLinearRGBFunctionSet) {
- /*
- * GRAY !
- */
- return(XcmsFailure);
- } else {
- /* Convert from CIEXYZ to TekHVC format */
- if (_XcmsDIConvertColors(&myCCC, pColor,
- &myCCC.pPerScrnInfo->screenWhitePt, 1, XcmsTekHVCFormat)
- == XcmsFailure) {
- return(XcmsFailure);
- }
-
- /* check to make sure we have a valid TekHVC number */
- if (!_XcmsTekHVC_CheckModify (pColor)) {
- return (XcmsFailure);
- }
-
- /* Step 1: compute the maximum value and chroma for this hue. */
- /* This copy may be overkill but it preserves the pixel etc. */
- memcpy((char *)&hvc_max, (char *)pColor, sizeof(XcmsColor));
- if (_XcmsTekHVCQueryMaxVCRGB (&myCCC, hvc_max.spec.TekHVC.H, &hvc_max,
- (XcmsRGBi *)NULL) == XcmsFailure) {
- return (XcmsFailure);
- }
-
- /* Now check and return the appropriate value */
- if (pColor->spec.TekHVC.C == hvc_max.spec.TekHVC.C) {
- /* When the chroma input is equal to the maximum chroma */
- /* merely return the value for that chroma. */
- pColor->spec.TekHVC.V = hvc_max.spec.TekHVC.V;
- if (!_XcmsTekHVC_CheckModify (pColor)) {
- return (XcmsFailure);
- }
- retval = _XcmsDIConvertColors(&myCCC, pColor,
- &myCCC.pPerScrnInfo->screenWhitePt, 1, XcmsCIEXYZFormat);
- } else if (pColor->spec.TekHVC.C > hvc_max.spec.TekHVC.C) {
- /* When the chroma input is greater than the maximum chroma */
- /* merely return the value and chroma for the given hue. */
- pColor->spec.TekHVC.C = hvc_max.spec.TekHVC.C;
- pColor->spec.TekHVC.V = hvc_max.spec.TekHVC.V;
- return (XcmsFailure);
- } else if (pColor->spec.TekHVC.V < hvc_max.spec.TekHVC.V) {
- /* When the value input is less than the maximum value point */
- /* compute the intersection of the line from 0,0 to max_V, max_C */
- /* using the chroma input. */
- pColor->spec.TekHVC.V = pColor->spec.TekHVC.C *
- hvc_max.spec.TekHVC.V / hvc_max.spec.TekHVC.C;
- if (pColor->spec.TekHVC.V >= hvc_max.spec.TekHVC.V) {
- pColor->spec.TekHVC.C = hvc_max.spec.TekHVC.C;
- pColor->spec.TekHVC.V = hvc_max.spec.TekHVC.V;
- }
- if (!_XcmsTekHVC_CheckModify (pColor)) {
- return (XcmsFailure);
- }
- retval = _XcmsDIConvertColors(&myCCC, pColor,
- &myCCC.pPerScrnInfo->screenWhitePt, 1, XcmsCIEXYZFormat);
- } else {
- /* When the value input is greater than the maximum value point */
- /* use HvcMaxValue to find the maximum value for the given chroma. */
- if (pColor->format != XcmsTekHVCFormat) {
- if (_XcmsDIConvertColors(ccc, pColor,
- &ccc->pPerScrnInfo->screenWhitePt, 1, XcmsCIEXYZFormat)
- == XcmsFailure) {
- return(XcmsFailure);
- }
- }
- if (XcmsTekHVCQueryMaxV(&myCCC,
- pColor->spec.TekHVC.H,
- pColor->spec.TekHVC.C,
- pColor)
- == XcmsFailure) {
- return (XcmsFailure);
- }
- retval = _XcmsDIConvertColors(&myCCC, pColor,
- &myCCC.pPerScrnInfo->screenWhitePt, 1, XcmsCIEXYZFormat);
- }
- if (retval != XcmsFailure && pCompressed != NULL) {
- *(pCompressed + i) = True;
- }
- return(retval);
- }
-}
+
+/*
+ * Code and supporting documentation (c) Copyright 1990 1991 Tektronix, Inc.
+ * All Rights Reserved
+ *
+ * This file is a component of an X Window System-specific implementation
+ * of Xcms based on the TekColor Color Management System. TekColor is a
+ * trademark of Tektronix, Inc. The term "TekHVC" designates a particular
+ * color space that is the subject of U.S. Patent No. 4,985,853 (equivalent
+ * foreign patents pending). Permission is hereby granted to use, copy,
+ * modify, sell, and otherwise distribute this software and its
+ * documentation for any purpose and without fee, provided that:
+ *
+ * 1. This copyright, permission, and disclaimer notice is reproduced in
+ * all copies of this software and any modification thereof and in
+ * supporting documentation;
+ * 2. Any color-handling application which displays TekHVC color
+ * cooordinates identifies these as TekHVC color coordinates in any
+ * interface that displays these coordinates and in any associated
+ * documentation;
+ * 3. The term "TekHVC" is always used, and is only used, in association
+ * with the mathematical derivations of the TekHVC Color Space,
+ * including those provided in this file and any equivalent pathways and
+ * mathematical derivations, regardless of digital (e.g., floating point
+ * or integer) representation.
+ *
+ * Tektronix makes no representation about the suitability of this software
+ * for any purpose. It is provided "as is" and with all faults.
+ *
+ * TEKTRONIX DISCLAIMS ALL WARRANTIES APPLICABLE TO THIS SOFTWARE,
+ * INCLUDING THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+ * PARTICULAR PURPOSE. IN NO EVENT SHALL TEKTRONIX BE LIABLE FOR ANY
+ * SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER
+ * RESULTING FROM LOSS OF USE, DATA, OR PROFITS, WHETHER IN AN ACTION OF
+ * CONTRACT, NEGLIGENCE, OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
+ * CONNECTION WITH THE USE OR THE PERFORMANCE OF THIS SOFTWARE.
+ *
+ * NAME
+ * TekHVCGcV.c
+ *
+ * DESCRIPTION
+ * Source for XcmsTekHVCClipV() gamut compression routine.
+ *
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+#include "Xcmsint.h"
+#include "Cv.h"
+
+
+/************************************************************************
+ * *
+ * PUBLIC ROUTINES *
+ * *
+ ************************************************************************/
+
+/*
+ * NAME
+ * XcmsTekHVCClipV - Return the closest value
+ *
+ * SYNOPSIS
+ */
+/* ARGSUSED */
+Status
+XcmsTekHVCClipV (
+ XcmsCCC ccc,
+ XcmsColor *pColors_in_out,
+ unsigned int nColors,
+ unsigned int i,
+ Bool *pCompressed)
+/*
+ * DESCRIPTION
+ * Return the closest value for a specific hue and chroma.
+ * This routine takes any color as input and outputs
+ * a CIE XYZ color.
+ *
+ * Since this routine works with the value within
+ * pColor_in_out intermediate results may be returned
+ * even though it may be invalid.
+ *
+ * RETURNS
+ * XcmsFailure - Failure
+ * XcmsSuccess - Succeeded
+ *
+ */
+{
+ XcmsColor *pColor;
+ XcmsColor hvc_max;
+ XcmsCCCRec myCCC;
+ Status retval;
+
+ /*
+ * Insure TekHVC installed
+ */
+ if (XcmsAddColorSpace(&XcmsTekHVCColorSpace) == XcmsFailure) {
+ return(XcmsFailure);
+ }
+
+ /* Use my own CCC */
+ memcpy ((char *)&myCCC, (char *)ccc, sizeof(XcmsCCCRec));
+ myCCC.clientWhitePt.format = XcmsUndefinedFormat;/* Inherit Screen WP */
+ myCCC.gamutCompProc = (XcmsCompressionProc)NULL;/* no gamut compression */
+
+ /*
+ * Color specification passed as input can be assumed to:
+ * 1. Be in XcmsCIEXYZFormat
+ * 2. Already be white point adjusted for the Screen White Point.
+ * This means that the white point now associated with this
+ * color spec is the Screen White Point (even if the
+ * ccc->clientWhitePt differs).
+ */
+
+ pColor = pColors_in_out + i;
+
+ if (ccc->visual->class < StaticColor &&
+ FunctionSetOfCCC(ccc) != (XPointer) &XcmsLinearRGBFunctionSet) {
+ /*
+ * GRAY !
+ */
+ return(XcmsFailure);
+ } else {
+ /* Convert from CIEXYZ to TekHVC format */
+ if (_XcmsDIConvertColors(&myCCC, pColor,
+ &myCCC.pPerScrnInfo->screenWhitePt, 1, XcmsTekHVCFormat)
+ == XcmsFailure) {
+ return(XcmsFailure);
+ }
+
+ /* check to make sure we have a valid TekHVC number */
+ if (!_XcmsTekHVC_CheckModify (pColor)) {
+ return (XcmsFailure);
+ }
+
+ /* Step 1: compute the maximum value and chroma for this hue. */
+ /* This copy may be overkill but it preserves the pixel etc. */
+ memcpy((char *)&hvc_max, (char *)pColor, sizeof(XcmsColor));
+ if (_XcmsTekHVCQueryMaxVCRGB (&myCCC, hvc_max.spec.TekHVC.H, &hvc_max,
+ (XcmsRGBi *)NULL) == XcmsFailure) {
+ return (XcmsFailure);
+ }
+
+ /* Now check and return the appropriate value */
+ if (pColor->spec.TekHVC.C == hvc_max.spec.TekHVC.C) {
+ /* When the chroma input is equal to the maximum chroma */
+ /* merely return the value for that chroma. */
+ pColor->spec.TekHVC.V = hvc_max.spec.TekHVC.V;
+ if (!_XcmsTekHVC_CheckModify (pColor)) {
+ return (XcmsFailure);
+ }
+ retval = _XcmsDIConvertColors(&myCCC, pColor,
+ &myCCC.pPerScrnInfo->screenWhitePt, 1, XcmsCIEXYZFormat);
+ } else if (pColor->spec.TekHVC.C > hvc_max.spec.TekHVC.C) {
+ /* When the chroma input is greater than the maximum chroma */
+ /* merely return the value and chroma for the given hue. */
+ pColor->spec.TekHVC.C = hvc_max.spec.TekHVC.C;
+ pColor->spec.TekHVC.V = hvc_max.spec.TekHVC.V;
+ return (XcmsFailure);
+ } else if (pColor->spec.TekHVC.V < hvc_max.spec.TekHVC.V) {
+ /* When the value input is less than the maximum value point */
+ /* compute the intersection of the line from 0,0 to max_V, max_C */
+ /* using the chroma input. */
+ pColor->spec.TekHVC.V = pColor->spec.TekHVC.C *
+ hvc_max.spec.TekHVC.V / hvc_max.spec.TekHVC.C;
+ if (pColor->spec.TekHVC.V >= hvc_max.spec.TekHVC.V) {
+ pColor->spec.TekHVC.C = hvc_max.spec.TekHVC.C;
+ pColor->spec.TekHVC.V = hvc_max.spec.TekHVC.V;
+ }
+ if (!_XcmsTekHVC_CheckModify (pColor)) {
+ return (XcmsFailure);
+ }
+ retval = _XcmsDIConvertColors(&myCCC, pColor,
+ &myCCC.pPerScrnInfo->screenWhitePt, 1, XcmsCIEXYZFormat);
+ } else {
+ /* When the value input is greater than the maximum value point */
+ /* use HvcMaxValue to find the maximum value for the given chroma. */
+ if (pColor->format != XcmsTekHVCFormat) {
+ if (_XcmsDIConvertColors(ccc, pColor,
+ &ccc->pPerScrnInfo->screenWhitePt, 1, XcmsCIEXYZFormat)
+ == XcmsFailure) {
+ return(XcmsFailure);
+ }
+ }
+ if (XcmsTekHVCQueryMaxV(&myCCC,
+ pColor->spec.TekHVC.H,
+ pColor->spec.TekHVC.C,
+ pColor)
+ == XcmsFailure) {
+ return (XcmsFailure);
+ }
+ retval = _XcmsDIConvertColors(&myCCC, pColor,
+ &myCCC.pPerScrnInfo->screenWhitePt, 1, XcmsCIEXYZFormat);
+ }
+ if (retval != XcmsFailure && pCompressed != NULL) {
+ *(pCompressed + i) = True;
+ }
+ return(retval);
+ }
+}
diff --git a/libX11/src/xcms/HVCGcVC.c b/libX11/src/xcms/HVCGcVC.c
index 9c6b598f8..7ace5f13f 100644
--- a/libX11/src/xcms/HVCGcVC.c
+++ b/libX11/src/xcms/HVCGcVC.c
@@ -1,262 +1,262 @@
-
-/*
- * Code and supporting documentation (c) Copyright 1990 1991 Tektronix, Inc.
- * All Rights Reserved
- *
- * This file is a component of an X Window System-specific implementation
- * of Xcms based on the TekColor Color Management System. TekColor is a
- * trademark of Tektronix, Inc. The term "TekHVC" designates a particular
- * color space that is the subject of U.S. Patent No. 4,985,853 (equivalent
- * foreign patents pending). Permission is hereby granted to use, copy,
- * modify, sell, and otherwise distribute this software and its
- * documentation for any purpose and without fee, provided that:
- *
- * 1. This copyright, permission, and disclaimer notice is reproduced in
- * all copies of this software and any modification thereof and in
- * supporting documentation;
- * 2. Any color-handling application which displays TekHVC color
- * cooordinates identifies these as TekHVC color coordinates in any
- * interface that displays these coordinates and in any associated
- * documentation;
- * 3. The term "TekHVC" is always used, and is only used, in association
- * with the mathematical derivations of the TekHVC Color Space,
- * including those provided in this file and any equivalent pathways and
- * mathematical derivations, regardless of digital (e.g., floating point
- * or integer) representation.
- *
- * Tektronix makes no representation about the suitability of this software
- * for any purpose. It is provided "as is" and with all faults.
- *
- * TEKTRONIX DISCLAIMS ALL WARRANTIES APPLICABLE TO THIS SOFTWARE,
- * INCLUDING THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE. IN NO EVENT SHALL TEKTRONIX BE LIABLE FOR ANY
- * SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER
- * RESULTING FROM LOSS OF USE, DATA, OR PROFITS, WHETHER IN AN ACTION OF
- * CONTRACT, NEGLIGENCE, OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
- * CONNECTION WITH THE USE OR THE PERFORMANCE OF THIS SOFTWARE.
- *
- * NAME
- * TekHVCGcVC.c
- *
- * DESCRIPTION
- * Source for XcmsTekHVCClipVC() gamut
- * compression function.
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-#include "Xcmsint.h"
-#include <math.h>
-#include "Cv.h"
-
-/*
- * INTERNALS
- * Internal defines that need NOT be exported to any package or
- * program using this package.
- */
-#define MAXBISECTCOUNT 100
-
-
-/************************************************************************
- * *
- * PUBLIC ROUTINES *
- * *
- ************************************************************************/
-
-/*
- * NAME
- * XcmsTekHVCClipVC - Return the closest value and chroma
- *
- * SYNOPSIS
- */
-/* ARGSUSED */
-Status
-XcmsTekHVCClipVC (
- XcmsCCC ccc,
- XcmsColor *pColors_in_out,
- unsigned int nColors,
- unsigned int i,
- Bool *pCompressed)
-/*
- * DESCRIPTION
- * This routine will find the closest value and chroma
- * for a specific hue. The color input is converted to
- * HVC format and returned as CIE XYZ format.
- *
- * Since this routine works with the value within
- * pColor_in_out intermediate results may be returned
- * even though it may be invalid.
- *
- * RETURNS
- * XcmsFailure - Failure
- * XcmsSuccess - Succeeded
- *
- */
-{
- Status retval;
- XcmsCCCRec myCCC;
- XcmsColor *pColor;
- XcmsColor hvc_max;
- XcmsRGBi rgb_max;
- int nCount, nMaxCount, nI, nILast;
- XcmsFloat Chroma, Value, bestChroma, bestValue, nT, saveDist, tmpDist;
-
- /*
- * Insure TekHVC installed
- */
- if (XcmsAddColorSpace(&XcmsTekHVCColorSpace) == XcmsFailure) {
- return(XcmsFailure);
- }
-
- /* Use my own CCC */
- memcpy ((char *)&myCCC, (char *)ccc, sizeof(XcmsCCCRec));
- myCCC.clientWhitePt.format = XcmsUndefinedFormat;/* inherit screen white pt */
- myCCC.gamutCompProc = (XcmsCompressionProc)NULL;/* no gamut compression func */
-
- /*
- * Color specification passed as input can be assumed to:
- * 1. Be in XcmsCIEXYZFormat
- * 2. Already be white point adjusted for the Screen White Point.
- * This means that the white point now associated with this
- * color spec is the Screen White Point (even if the
- * ccc->clientWhitePt differs).
- */
-
- pColor = pColors_in_out + i;
-
- if (ccc->visual->class < StaticColor &&
- FunctionSetOfCCC(ccc) != (XPointer) &XcmsLinearRGBFunctionSet) {
- /*
- * GRAY !
- */
- _XcmsDIConvertColors(ccc, pColor, &ccc->pPerScrnInfo->screenWhitePt,
- 1, XcmsTekHVCFormat);
- pColor->spec.TekHVC.H = pColor->spec.TekHVC.C = 0.0;
- _XcmsDIConvertColors(ccc, pColor, &ccc->pPerScrnInfo->screenWhitePt,
- 1, XcmsCIEXYZFormat);
- if (pCompressed) {
- *(pCompressed + i) = True;
- }
- return(XcmsSuccess);
- } else {
- /* Convert from CIEXYZ to TekHVC format */
- if (_XcmsDIConvertColors(&myCCC, pColor,
- &myCCC.pPerScrnInfo->screenWhitePt, 1, XcmsTekHVCFormat)
- == XcmsFailure) {
- return(XcmsFailure);
- }
-
- if (!_XcmsTekHVC_CheckModify(pColor)) {
- return (XcmsFailure);
- }
-
- /* Step 1: compute the maximum value and chroma for this hue. */
- /* This copy may be overkill but it preserves the pixel etc. */
- memcpy((char *)&hvc_max, (char *)pColor, sizeof(XcmsColor));
- if (_XcmsTekHVCQueryMaxVCRGB (&myCCC, hvc_max.spec.TekHVC.H, &hvc_max,
- &rgb_max) == XcmsFailure) {
- return (XcmsFailure);
- }
-
- /* Now check and return the appropriate value */
- if (pColor->spec.TekHVC.V == hvc_max.spec.TekHVC.V) {
- /* When the value input is equal to the maximum value */
- /* merely return the chroma for that value. */
- pColor->spec.TekHVC.C = hvc_max.spec.TekHVC.C;
- retval = _XcmsDIConvertColors(&myCCC, pColor,
- &myCCC.pPerScrnInfo->screenWhitePt, 1, XcmsCIEXYZFormat);
- }
-
- if (pColor->spec.TekHVC.V < hvc_max.spec.TekHVC.V) {
- /* return the intersection of the perpindicular line through */
- /* the value and chroma given and the line from 0,0 and hvc_max. */
- Chroma = pColor->spec.TekHVC.C;
- Value = pColor->spec.TekHVC.V;
- pColor->spec.TekHVC.C =
- (Value + (hvc_max.spec.TekHVC.C / hvc_max.spec.TekHVC.V * Chroma)) /
- ((hvc_max.spec.TekHVC.V / hvc_max.spec.TekHVC.C) +
- (hvc_max.spec.TekHVC.C / hvc_max.spec.TekHVC.V));
- if (pColor->spec.TekHVC.C >= hvc_max.spec.TekHVC.C) {
- pColor->spec.TekHVC.C = hvc_max.spec.TekHVC.C;
- pColor->spec.TekHVC.V = hvc_max.spec.TekHVC.V;
- } else {
- pColor->spec.TekHVC.V = pColor->spec.TekHVC.C *
- hvc_max.spec.TekHVC.V / hvc_max.spec.TekHVC.C;
- }
- retval = _XcmsDIConvertColors(&myCCC, pColor,
- &myCCC.pPerScrnInfo->screenWhitePt, 1, XcmsCIEXYZFormat);
-
- if (retval != XcmsFailure && pCompressed != NULL) {
- *(pCompressed + i) = True;
- }
- return (retval);
- }
-
- /* return the closest point on the upper part of the hue leaf. */
- /* must do a bisection here to compute the delta e. */
- nMaxCount = MAXBISECTCOUNT;
- nI = nMaxCount / 2;
- bestValue = Value = pColor->spec.TekHVC.V;
- bestChroma = Chroma = pColor->spec.TekHVC.C;
- saveDist = (XcmsFloat) XCMS_SQRT ((double) (((Chroma - hvc_max.spec.TekHVC.C) *
- (Chroma - hvc_max.spec.TekHVC.C)) +
- ((Value - hvc_max.spec.TekHVC.V) *
- (Value - hvc_max.spec.TekHVC.V))));
- for (nCount = 0; nCount < nMaxCount; nCount++) {
- nT = (XcmsFloat) nI / (XcmsFloat) nMaxCount;
- pColor->spec.RGBi.red = rgb_max.red * (1.0 - nT) + nT;
- pColor->spec.RGBi.green = rgb_max.green * (1.0 - nT) + nT;
- pColor->spec.RGBi.blue = rgb_max.blue * (1.0 - nT) + nT;
- pColor->format = XcmsRGBiFormat;
-
- /* Convert from RGBi to HVC */
- if (_XcmsConvertColorsWithWhitePt(&myCCC, pColor,
- &myCCC.pPerScrnInfo->screenWhitePt, 1, XcmsTekHVCFormat,
- (Bool *) NULL)
- == XcmsFailure) {
- return (XcmsFailure);
- }
- if (!_XcmsTekHVC_CheckModify(pColor)) {
- return (XcmsFailure);
- }
- tmpDist = (XcmsFloat) XCMS_SQRT ((double)
- (((Chroma - pColor->spec.TekHVC.C) *
- (Chroma - pColor->spec.TekHVC.C)) +
- ((Value - pColor->spec.TekHVC.V) *
- (Value - pColor->spec.TekHVC.V))));
- nILast = nI;
- if (tmpDist > saveDist) {
- nI /= 2;
- } else {
- nI = (nMaxCount + nI) / 2;
- saveDist = tmpDist;
- bestValue = pColor->spec.TekHVC.V;
- bestChroma = pColor->spec.TekHVC.C;
- }
- if (nI == nILast || nI == 0) {
- break;
- }
-
- }
-
- if (bestChroma >= hvc_max.spec.TekHVC.C) {
- pColor->spec.TekHVC.C = hvc_max.spec.TekHVC.C;
- pColor->spec.TekHVC.V = hvc_max.spec.TekHVC.V;
- } else {
- pColor->spec.TekHVC.C = bestChroma;
- pColor->spec.TekHVC.V = bestValue;
- }
- if (!_XcmsTekHVC_CheckModify(pColor)) {
- return (XcmsFailure);
- }
- retval = _XcmsDIConvertColors(&myCCC, pColor,
- &myCCC.pPerScrnInfo->screenWhitePt, 1, XcmsCIEXYZFormat);
-
- if (retval != XcmsFailure && pCompressed != NULL) {
- *(pCompressed + i) = True;
- }
- return(retval);
- }
-}
+
+/*
+ * Code and supporting documentation (c) Copyright 1990 1991 Tektronix, Inc.
+ * All Rights Reserved
+ *
+ * This file is a component of an X Window System-specific implementation
+ * of Xcms based on the TekColor Color Management System. TekColor is a
+ * trademark of Tektronix, Inc. The term "TekHVC" designates a particular
+ * color space that is the subject of U.S. Patent No. 4,985,853 (equivalent
+ * foreign patents pending). Permission is hereby granted to use, copy,
+ * modify, sell, and otherwise distribute this software and its
+ * documentation for any purpose and without fee, provided that:
+ *
+ * 1. This copyright, permission, and disclaimer notice is reproduced in
+ * all copies of this software and any modification thereof and in
+ * supporting documentation;
+ * 2. Any color-handling application which displays TekHVC color
+ * cooordinates identifies these as TekHVC color coordinates in any
+ * interface that displays these coordinates and in any associated
+ * documentation;
+ * 3. The term "TekHVC" is always used, and is only used, in association
+ * with the mathematical derivations of the TekHVC Color Space,
+ * including those provided in this file and any equivalent pathways and
+ * mathematical derivations, regardless of digital (e.g., floating point
+ * or integer) representation.
+ *
+ * Tektronix makes no representation about the suitability of this software
+ * for any purpose. It is provided "as is" and with all faults.
+ *
+ * TEKTRONIX DISCLAIMS ALL WARRANTIES APPLICABLE TO THIS SOFTWARE,
+ * INCLUDING THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+ * PARTICULAR PURPOSE. IN NO EVENT SHALL TEKTRONIX BE LIABLE FOR ANY
+ * SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER
+ * RESULTING FROM LOSS OF USE, DATA, OR PROFITS, WHETHER IN AN ACTION OF
+ * CONTRACT, NEGLIGENCE, OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
+ * CONNECTION WITH THE USE OR THE PERFORMANCE OF THIS SOFTWARE.
+ *
+ * NAME
+ * TekHVCGcVC.c
+ *
+ * DESCRIPTION
+ * Source for XcmsTekHVCClipVC() gamut
+ * compression function.
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+#include "Xcmsint.h"
+#include <math.h>
+#include "Cv.h"
+
+/*
+ * INTERNALS
+ * Internal defines that need NOT be exported to any package or
+ * program using this package.
+ */
+#define MAXBISECTCOUNT 100
+
+
+/************************************************************************
+ * *
+ * PUBLIC ROUTINES *
+ * *
+ ************************************************************************/
+
+/*
+ * NAME
+ * XcmsTekHVCClipVC - Return the closest value and chroma
+ *
+ * SYNOPSIS
+ */
+/* ARGSUSED */
+Status
+XcmsTekHVCClipVC (
+ XcmsCCC ccc,
+ XcmsColor *pColors_in_out,
+ unsigned int nColors,
+ unsigned int i,
+ Bool *pCompressed)
+/*
+ * DESCRIPTION
+ * This routine will find the closest value and chroma
+ * for a specific hue. The color input is converted to
+ * HVC format and returned as CIE XYZ format.
+ *
+ * Since this routine works with the value within
+ * pColor_in_out intermediate results may be returned
+ * even though it may be invalid.
+ *
+ * RETURNS
+ * XcmsFailure - Failure
+ * XcmsSuccess - Succeeded
+ *
+ */
+{
+ Status retval;
+ XcmsCCCRec myCCC;
+ XcmsColor *pColor;
+ XcmsColor hvc_max;
+ XcmsRGBi rgb_max;
+ int nCount, nMaxCount, nI, nILast;
+ XcmsFloat Chroma, Value, bestChroma, bestValue, nT, saveDist, tmpDist;
+
+ /*
+ * Insure TekHVC installed
+ */
+ if (XcmsAddColorSpace(&XcmsTekHVCColorSpace) == XcmsFailure) {
+ return(XcmsFailure);
+ }
+
+ /* Use my own CCC */
+ memcpy ((char *)&myCCC, (char *)ccc, sizeof(XcmsCCCRec));
+ myCCC.clientWhitePt.format = XcmsUndefinedFormat;/* inherit screen white pt */
+ myCCC.gamutCompProc = (XcmsCompressionProc)NULL;/* no gamut compression func */
+
+ /*
+ * Color specification passed as input can be assumed to:
+ * 1. Be in XcmsCIEXYZFormat
+ * 2. Already be white point adjusted for the Screen White Point.
+ * This means that the white point now associated with this
+ * color spec is the Screen White Point (even if the
+ * ccc->clientWhitePt differs).
+ */
+
+ pColor = pColors_in_out + i;
+
+ if (ccc->visual->class < StaticColor &&
+ FunctionSetOfCCC(ccc) != (XPointer) &XcmsLinearRGBFunctionSet) {
+ /*
+ * GRAY !
+ */
+ _XcmsDIConvertColors(ccc, pColor, &ccc->pPerScrnInfo->screenWhitePt,
+ 1, XcmsTekHVCFormat);
+ pColor->spec.TekHVC.H = pColor->spec.TekHVC.C = 0.0;
+ _XcmsDIConvertColors(ccc, pColor, &ccc->pPerScrnInfo->screenWhitePt,
+ 1, XcmsCIEXYZFormat);
+ if (pCompressed) {
+ *(pCompressed + i) = True;
+ }
+ return(XcmsSuccess);
+ } else {
+ /* Convert from CIEXYZ to TekHVC format */
+ if (_XcmsDIConvertColors(&myCCC, pColor,
+ &myCCC.pPerScrnInfo->screenWhitePt, 1, XcmsTekHVCFormat)
+ == XcmsFailure) {
+ return(XcmsFailure);
+ }
+
+ if (!_XcmsTekHVC_CheckModify(pColor)) {
+ return (XcmsFailure);
+ }
+
+ /* Step 1: compute the maximum value and chroma for this hue. */
+ /* This copy may be overkill but it preserves the pixel etc. */
+ memcpy((char *)&hvc_max, (char *)pColor, sizeof(XcmsColor));
+ if (_XcmsTekHVCQueryMaxVCRGB (&myCCC, hvc_max.spec.TekHVC.H, &hvc_max,
+ &rgb_max) == XcmsFailure) {
+ return (XcmsFailure);
+ }
+
+ /* Now check and return the appropriate value */
+ if (pColor->spec.TekHVC.V == hvc_max.spec.TekHVC.V) {
+ /* When the value input is equal to the maximum value */
+ /* merely return the chroma for that value. */
+ pColor->spec.TekHVC.C = hvc_max.spec.TekHVC.C;
+ retval = _XcmsDIConvertColors(&myCCC, pColor,
+ &myCCC.pPerScrnInfo->screenWhitePt, 1, XcmsCIEXYZFormat);
+ }
+
+ if (pColor->spec.TekHVC.V < hvc_max.spec.TekHVC.V) {
+ /* return the intersection of the perpindicular line through */
+ /* the value and chroma given and the line from 0,0 and hvc_max. */
+ Chroma = pColor->spec.TekHVC.C;
+ Value = pColor->spec.TekHVC.V;
+ pColor->spec.TekHVC.C =
+ (Value + (hvc_max.spec.TekHVC.C / hvc_max.spec.TekHVC.V * Chroma)) /
+ ((hvc_max.spec.TekHVC.V / hvc_max.spec.TekHVC.C) +
+ (hvc_max.spec.TekHVC.C / hvc_max.spec.TekHVC.V));
+ if (pColor->spec.TekHVC.C >= hvc_max.spec.TekHVC.C) {
+ pColor->spec.TekHVC.C = hvc_max.spec.TekHVC.C;
+ pColor->spec.TekHVC.V = hvc_max.spec.TekHVC.V;
+ } else {
+ pColor->spec.TekHVC.V = pColor->spec.TekHVC.C *
+ hvc_max.spec.TekHVC.V / hvc_max.spec.TekHVC.C;
+ }
+ retval = _XcmsDIConvertColors(&myCCC, pColor,
+ &myCCC.pPerScrnInfo->screenWhitePt, 1, XcmsCIEXYZFormat);
+
+ if (retval != XcmsFailure && pCompressed != NULL) {
+ *(pCompressed + i) = True;
+ }
+ return (retval);
+ }
+
+ /* return the closest point on the upper part of the hue leaf. */
+ /* must do a bisection here to compute the delta e. */
+ nMaxCount = MAXBISECTCOUNT;
+ nI = nMaxCount / 2;
+ bestValue = Value = pColor->spec.TekHVC.V;
+ bestChroma = Chroma = pColor->spec.TekHVC.C;
+ saveDist = (XcmsFloat) XCMS_SQRT ((double) (((Chroma - hvc_max.spec.TekHVC.C) *
+ (Chroma - hvc_max.spec.TekHVC.C)) +
+ ((Value - hvc_max.spec.TekHVC.V) *
+ (Value - hvc_max.spec.TekHVC.V))));
+ for (nCount = 0; nCount < nMaxCount; nCount++) {
+ nT = (XcmsFloat) nI / (XcmsFloat) nMaxCount;
+ pColor->spec.RGBi.red = rgb_max.red * (1.0 - nT) + nT;
+ pColor->spec.RGBi.green = rgb_max.green * (1.0 - nT) + nT;
+ pColor->spec.RGBi.blue = rgb_max.blue * (1.0 - nT) + nT;
+ pColor->format = XcmsRGBiFormat;
+
+ /* Convert from RGBi to HVC */
+ if (_XcmsConvertColorsWithWhitePt(&myCCC, pColor,
+ &myCCC.pPerScrnInfo->screenWhitePt, 1, XcmsTekHVCFormat,
+ (Bool *) NULL)
+ == XcmsFailure) {
+ return (XcmsFailure);
+ }
+ if (!_XcmsTekHVC_CheckModify(pColor)) {
+ return (XcmsFailure);
+ }
+ tmpDist = (XcmsFloat) XCMS_SQRT ((double)
+ (((Chroma - pColor->spec.TekHVC.C) *
+ (Chroma - pColor->spec.TekHVC.C)) +
+ ((Value - pColor->spec.TekHVC.V) *
+ (Value - pColor->spec.TekHVC.V))));
+ nILast = nI;
+ if (tmpDist > saveDist) {
+ nI /= 2;
+ } else {
+ nI = (nMaxCount + nI) / 2;
+ saveDist = tmpDist;
+ bestValue = pColor->spec.TekHVC.V;
+ bestChroma = pColor->spec.TekHVC.C;
+ }
+ if (nI == nILast || nI == 0) {
+ break;
+ }
+
+ }
+
+ if (bestChroma >= hvc_max.spec.TekHVC.C) {
+ pColor->spec.TekHVC.C = hvc_max.spec.TekHVC.C;
+ pColor->spec.TekHVC.V = hvc_max.spec.TekHVC.V;
+ } else {
+ pColor->spec.TekHVC.C = bestChroma;
+ pColor->spec.TekHVC.V = bestValue;
+ }
+ if (!_XcmsTekHVC_CheckModify(pColor)) {
+ return (XcmsFailure);
+ }
+ retval = _XcmsDIConvertColors(&myCCC, pColor,
+ &myCCC.pPerScrnInfo->screenWhitePt, 1, XcmsCIEXYZFormat);
+
+ if (retval != XcmsFailure && pCompressed != NULL) {
+ *(pCompressed + i) = True;
+ }
+ return(retval);
+ }
+}
diff --git a/libX11/src/xcms/HVCMnV.c b/libX11/src/xcms/HVCMnV.c
index 14e569932..10a9f857a 100644
--- a/libX11/src/xcms/HVCMnV.c
+++ b/libX11/src/xcms/HVCMnV.c
@@ -1,163 +1,163 @@
-
-/*
- * Code and supporting documentation (c) Copyright 1990 1991 Tektronix, Inc.
- * All Rights Reserved
- *
- * This file is a component of an X Window System-specific implementation
- * of Xcms based on the TekColor Color Management System. TekColor is a
- * trademark of Tektronix, Inc. The term "TekHVC" designates a particular
- * color space that is the subject of U.S. Patent No. 4,985,853 (equivalent
- * foreign patents pending). Permission is hereby granted to use, copy,
- * modify, sell, and otherwise distribute this software and its
- * documentation for any purpose and without fee, provided that:
- *
- * 1. This copyright, permission, and disclaimer notice is reproduced in
- * all copies of this software and any modification thereof and in
- * supporting documentation;
- * 2. Any color-handling application which displays TekHVC color
- * cooordinates identifies these as TekHVC color coordinates in any
- * interface that displays these coordinates and in any associated
- * documentation;
- * 3. The term "TekHVC" is always used, and is only used, in association
- * with the mathematical derivations of the TekHVC Color Space,
- * including those provided in this file and any equivalent pathways and
- * mathematical derivations, regardless of digital (e.g., floating point
- * or integer) representation.
- *
- * Tektronix makes no representation about the suitability of this software
- * for any purpose. It is provided "as is" and with all faults.
- *
- * TEKTRONIX DISCLAIMS ALL WARRANTIES APPLICABLE TO THIS SOFTWARE,
- * INCLUDING THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE. IN NO EVENT SHALL TEKTRONIX BE LIABLE FOR ANY
- * SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER
- * RESULTING FROM LOSS OF USE, DATA, OR PROFITS, WHETHER IN AN ACTION OF
- * CONTRACT, NEGLIGENCE, OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
- * CONNECTION WITH THE USE OR THE PERFORMANCE OF THIS SOFTWARE.
- *
- * NAME
- * TekHVCMnV.c
- *
- * DESCRIPTION
- * Source for XcmsTekHVCQueryMinV gamut boundary querying routine.
- *
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-#include "Xcmsint.h"
-#include "Cv.h"
-
-/*
- * DEFINES
- */
-#define EPS 0.001
-
-
-/************************************************************************
- * *
- * PUBLIC ROUTINES *
- * *
- ************************************************************************/
-
-/*
- * NAME
- * XcmsTekHVCQueryMinV - Compute minimum value for hue and chroma
- *
- * SYNOPSIS
- */
-Status
-XcmsTekHVCQueryMinV (
- XcmsCCC ccc,
- XcmsFloat hue,
- XcmsFloat chroma,
- XcmsColor *pColor_return)
-
-/*
- * DESCRIPTION
- * Return the minimum value for a specific hue, and the
- * corresponding chroma. The input color specification
- * may be in any format, however output is in XcmsTekHVCFormat.
- *
- * Since this routine works with the value within
- * pColor_return intermediate results may be returned
- * even though it may be invalid.
- *
- * ASSUMPTIONS
- * This routine assumes that the white point associated with
- * the color specification is the Screen White Point. The
- * Screen White Point will also be associated with the
- * returned color specification.
- *
- * RETURNS
- * XcmsFailure - Failure
- * XcmsSuccess - Succeeded with no modifications
- *
- */
-{
- XcmsCCCRec myCCC;
- XcmsColor tmp;
- XcmsColor max_vc;
-
- /*
- * Check Arguments
- */
- if (ccc == NULL || pColor_return == NULL) {
- return(XcmsFailure);
- }
-
- /*
- * Insure TekHVC installed
- */
- if (XcmsAddColorSpace(&XcmsTekHVCColorSpace) == XcmsFailure) {
- return(XcmsFailure);
- }
-
- /* Use my own CCC */
- memcpy ((char *)&myCCC, (char *)ccc, sizeof(XcmsCCCRec));
- myCCC.clientWhitePt.format = XcmsUndefinedFormat;/* inherit screen white pt */
- myCCC.gamutCompProc = (XcmsCompressionProc)NULL;/* no gamut comp func */
-
- tmp.spec.TekHVC.H = hue;
- tmp.spec.TekHVC.V = 100.0;
- tmp.spec.TekHVC.C = chroma;
- tmp.pixel = pColor_return->pixel;
- tmp.format = XcmsTekHVCFormat;
-
-
- /* Check for a valid HVC */
- if (!_XcmsTekHVC_CheckModify (&tmp)) {
- return(XcmsFailure);
- }
-
- /* Step 1: compute the maximum value and chroma for this hue. */
- /* This copy may be overkill but it preserves the pixel etc. */
- memcpy((char *)&max_vc, (char *)&tmp, sizeof(XcmsColor));
- if (_XcmsTekHVCQueryMaxVCRGB (&myCCC, max_vc.spec.TekHVC.H, &max_vc,
- (XcmsRGBi *)NULL) == XcmsFailure) {
- return(XcmsFailure);
- }
-
- /* Step 2: find the intersection with the maximum hvc and chroma line. */
- if (tmp.spec.TekHVC.C > max_vc.spec.TekHVC.C + EPS) {
- /* If the chroma is to large then return maximum hvc. */
- tmp.spec.TekHVC.C = max_vc.spec.TekHVC.C;
- tmp.spec.TekHVC.V = max_vc.spec.TekHVC.V;
- } else {
- tmp.spec.TekHVC.V = tmp.spec.TekHVC.C *
- max_vc.spec.TekHVC.V / max_vc.spec.TekHVC.C;
- if (tmp.spec.TekHVC.V > max_vc.spec.TekHVC.V) {
- tmp.spec.TekHVC.V = max_vc.spec.TekHVC.V;
- } else if (tmp.spec.TekHVC.V < 0.0) {
- tmp.spec.TekHVC.V = tmp.spec.TekHVC.C = 0.0;
- }
- }
- if (_XcmsTekHVC_CheckModify (&tmp)) {
- memcpy ((char *) pColor_return, (char *) &tmp, sizeof (XcmsColor));
- return(XcmsSuccess);
- } else {
- return(XcmsFailure);
- }
-}
+
+/*
+ * Code and supporting documentation (c) Copyright 1990 1991 Tektronix, Inc.
+ * All Rights Reserved
+ *
+ * This file is a component of an X Window System-specific implementation
+ * of Xcms based on the TekColor Color Management System. TekColor is a
+ * trademark of Tektronix, Inc. The term "TekHVC" designates a particular
+ * color space that is the subject of U.S. Patent No. 4,985,853 (equivalent
+ * foreign patents pending). Permission is hereby granted to use, copy,
+ * modify, sell, and otherwise distribute this software and its
+ * documentation for any purpose and without fee, provided that:
+ *
+ * 1. This copyright, permission, and disclaimer notice is reproduced in
+ * all copies of this software and any modification thereof and in
+ * supporting documentation;
+ * 2. Any color-handling application which displays TekHVC color
+ * cooordinates identifies these as TekHVC color coordinates in any
+ * interface that displays these coordinates and in any associated
+ * documentation;
+ * 3. The term "TekHVC" is always used, and is only used, in association
+ * with the mathematical derivations of the TekHVC Color Space,
+ * including those provided in this file and any equivalent pathways and
+ * mathematical derivations, regardless of digital (e.g., floating point
+ * or integer) representation.
+ *
+ * Tektronix makes no representation about the suitability of this software
+ * for any purpose. It is provided "as is" and with all faults.
+ *
+ * TEKTRONIX DISCLAIMS ALL WARRANTIES APPLICABLE TO THIS SOFTWARE,
+ * INCLUDING THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+ * PARTICULAR PURPOSE. IN NO EVENT SHALL TEKTRONIX BE LIABLE FOR ANY
+ * SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER
+ * RESULTING FROM LOSS OF USE, DATA, OR PROFITS, WHETHER IN AN ACTION OF
+ * CONTRACT, NEGLIGENCE, OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
+ * CONNECTION WITH THE USE OR THE PERFORMANCE OF THIS SOFTWARE.
+ *
+ * NAME
+ * TekHVCMnV.c
+ *
+ * DESCRIPTION
+ * Source for XcmsTekHVCQueryMinV gamut boundary querying routine.
+ *
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+#include "Xcmsint.h"
+#include "Cv.h"
+
+/*
+ * DEFINES
+ */
+#define EPS 0.001
+
+
+/************************************************************************
+ * *
+ * PUBLIC ROUTINES *
+ * *
+ ************************************************************************/
+
+/*
+ * NAME
+ * XcmsTekHVCQueryMinV - Compute minimum value for hue and chroma
+ *
+ * SYNOPSIS
+ */
+Status
+XcmsTekHVCQueryMinV (
+ XcmsCCC ccc,
+ XcmsFloat hue,
+ XcmsFloat chroma,
+ XcmsColor *pColor_return)
+
+/*
+ * DESCRIPTION
+ * Return the minimum value for a specific hue, and the
+ * corresponding chroma. The input color specification
+ * may be in any format, however output is in XcmsTekHVCFormat.
+ *
+ * Since this routine works with the value within
+ * pColor_return intermediate results may be returned
+ * even though it may be invalid.
+ *
+ * ASSUMPTIONS
+ * This routine assumes that the white point associated with
+ * the color specification is the Screen White Point. The
+ * Screen White Point will also be associated with the
+ * returned color specification.
+ *
+ * RETURNS
+ * XcmsFailure - Failure
+ * XcmsSuccess - Succeeded with no modifications
+ *
+ */
+{
+ XcmsCCCRec myCCC;
+ XcmsColor tmp;
+ XcmsColor max_vc;
+
+ /*
+ * Check Arguments
+ */
+ if (ccc == NULL || pColor_return == NULL) {
+ return(XcmsFailure);
+ }
+
+ /*
+ * Insure TekHVC installed
+ */
+ if (XcmsAddColorSpace(&XcmsTekHVCColorSpace) == XcmsFailure) {
+ return(XcmsFailure);
+ }
+
+ /* Use my own CCC */
+ memcpy ((char *)&myCCC, (char *)ccc, sizeof(XcmsCCCRec));
+ myCCC.clientWhitePt.format = XcmsUndefinedFormat;/* inherit screen white pt */
+ myCCC.gamutCompProc = (XcmsCompressionProc)NULL;/* no gamut comp func */
+
+ tmp.spec.TekHVC.H = hue;
+ tmp.spec.TekHVC.V = 100.0;
+ tmp.spec.TekHVC.C = chroma;
+ tmp.pixel = pColor_return->pixel;
+ tmp.format = XcmsTekHVCFormat;
+
+
+ /* Check for a valid HVC */
+ if (!_XcmsTekHVC_CheckModify (&tmp)) {
+ return(XcmsFailure);
+ }
+
+ /* Step 1: compute the maximum value and chroma for this hue. */
+ /* This copy may be overkill but it preserves the pixel etc. */
+ memcpy((char *)&max_vc, (char *)&tmp, sizeof(XcmsColor));
+ if (_XcmsTekHVCQueryMaxVCRGB (&myCCC, max_vc.spec.TekHVC.H, &max_vc,
+ (XcmsRGBi *)NULL) == XcmsFailure) {
+ return(XcmsFailure);
+ }
+
+ /* Step 2: find the intersection with the maximum hvc and chroma line. */
+ if (tmp.spec.TekHVC.C > max_vc.spec.TekHVC.C + EPS) {
+ /* If the chroma is to large then return maximum hvc. */
+ tmp.spec.TekHVC.C = max_vc.spec.TekHVC.C;
+ tmp.spec.TekHVC.V = max_vc.spec.TekHVC.V;
+ } else {
+ tmp.spec.TekHVC.V = tmp.spec.TekHVC.C *
+ max_vc.spec.TekHVC.V / max_vc.spec.TekHVC.C;
+ if (tmp.spec.TekHVC.V > max_vc.spec.TekHVC.V) {
+ tmp.spec.TekHVC.V = max_vc.spec.TekHVC.V;
+ } else if (tmp.spec.TekHVC.V < 0.0) {
+ tmp.spec.TekHVC.V = tmp.spec.TekHVC.C = 0.0;
+ }
+ }
+ if (_XcmsTekHVC_CheckModify (&tmp)) {
+ memcpy ((char *) pColor_return, (char *) &tmp, sizeof (XcmsColor));
+ return(XcmsSuccess);
+ } else {
+ return(XcmsFailure);
+ }
+}
diff --git a/libX11/src/xcms/HVCMxC.c b/libX11/src/xcms/HVCMxC.c
index cded0e8a5..074844ccc 100644
--- a/libX11/src/xcms/HVCMxC.c
+++ b/libX11/src/xcms/HVCMxC.c
@@ -1,243 +1,243 @@
-
-/*
- * Code and supporting documentation (c) Copyright 1990 1991 Tektronix, Inc.
- * All Rights Reserved
- *
- * This file is a component of an X Window System-specific implementation
- * of Xcms based on the TekColor Color Management System. TekColor is a
- * trademark of Tektronix, Inc. The term "TekHVC" designates a particular
- * color space that is the subject of U.S. Patent No. 4,985,853 (equivalent
- * foreign patents pending). Permission is hereby granted to use, copy,
- * modify, sell, and otherwise distribute this software and its
- * documentation for any purpose and without fee, provided that:
- *
- * 1. This copyright, permission, and disclaimer notice is reproduced in
- * all copies of this software and any modification thereof and in
- * supporting documentation;
- * 2. Any color-handling application which displays TekHVC color
- * cooordinates identifies these as TekHVC color coordinates in any
- * interface that displays these coordinates and in any associated
- * documentation;
- * 3. The term "TekHVC" is always used, and is only used, in association
- * with the mathematical derivations of the TekHVC Color Space,
- * including those provided in this file and any equivalent pathways and
- * mathematical derivations, regardless of digital (e.g., floating point
- * or integer) representation.
- *
- * Tektronix makes no representation about the suitability of this software
- * for any purpose. It is provided "as is" and with all faults.
- *
- * TEKTRONIX DISCLAIMS ALL WARRANTIES APPLICABLE TO THIS SOFTWARE,
- * INCLUDING THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE. IN NO EVENT SHALL TEKTRONIX BE LIABLE FOR ANY
- * SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER
- * RESULTING FROM LOSS OF USE, DATA, OR PROFITS, WHETHER IN AN ACTION OF
- * CONTRACT, NEGLIGENCE, OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
- * CONNECTION WITH THE USE OR THE PERFORMANCE OF THIS SOFTWARE.
- *
- * NAME
- * TekHVCMxC.c
- *
- * DESCRIPTION
- * Source for the XcmsTekHVCQueryMaxC() gamut boudary
- * querying routine.
- *
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-#include "Xcmsint.h"
-#include <math.h>
-#include "Cv.h"
-
-/*
- * DEFINES
- */
-#define MAXBISECTCOUNT 100
-#define EPS 0.001
-
-
-/************************************************************************
- * *
- * PUBLIC ROUTINES *
- * *
- ************************************************************************/
-
-/*
- * NAME
- * XcmsTekHVCQueryMaxC - Compute the maximum chroma for a hue and value
- *
- * SYNOPSIS
- */
-Status
-XcmsTekHVCQueryMaxC(
- XcmsCCC ccc,
- XcmsFloat hue,
- XcmsFloat value,
- XcmsColor *pColor_return)
-/*
- * DESCRIPTION
- * Return the maximum chroma for a specific hue and value.
- * The returned format is in XcmsTekHVCFormat.
- *
- *
- * ASSUMPTIONS
- * This routine assumes that the white point associated with
- * the color specification is the Screen White Point. The
- * Screen White Point will also be associated with the
- * returned color specification.
- *
- * RETURNS
- * XcmsFailure - Failure
- * XcmsSuccess - Succeeded
- *
- */
-{
- XcmsCCCRec myCCC;
- XcmsColor tmp;
- XcmsColor max_vc;
- XcmsRGBi rgb_saved;
- int nCount, nMaxCount;
- XcmsFloat nValue, savedValue, lastValue, lastChroma, prevValue;
- XcmsFloat maxDist, nT, rFactor;
- XcmsFloat ftmp1, ftmp2;
-
- /*
- * Check Arguments
- */
- if (ccc == NULL || pColor_return == NULL) {
- return(XcmsFailure);
- }
-
- /*
- * Insure TekHVC installed
- */
- if (XcmsAddColorSpace(&XcmsTekHVCColorSpace) == XcmsFailure) {
- return(XcmsFailure);
- }
-
- /* Use my own CCC */
- memcpy ((char *)&myCCC, (char *)ccc, sizeof(XcmsCCCRec));
- myCCC.clientWhitePt.format = XcmsUndefinedFormat; /* inherit screen white Pt */
- myCCC.gamutCompProc = (XcmsCompressionProc)NULL;/* no gamut comp func */
-
- tmp.spec.TekHVC.H = hue;
- tmp.spec.TekHVC.V = value;
- tmp.spec.TekHVC.C = 100.0;
- tmp.pixel = pColor_return->pixel;
- tmp.format = XcmsTekHVCFormat;
-
- /* check to make sure we have a valid TekHVC number */
- if (!_XcmsTekHVC_CheckModify(&tmp)) {
- return(XcmsFailure);
- }
-
- /* Step 1: compute the maximum value and chroma for this hue. */
- memcpy((char *)&max_vc, (char *)&tmp, sizeof(XcmsColor));
- if (_XcmsTekHVCQueryMaxVCRGB(&myCCC, hue, &max_vc, &rgb_saved)
- == XcmsFailure) {
- return(XcmsFailure);
- }
-
- /* Step 2: If the value is less than the value for the maximum */
- /* value, chroma point then the chroma is on the line */
- /* from max_vc to 0,0. */
- if (value <= max_vc.spec.TekHVC.V) {
- tmp.spec.TekHVC.C = value
- * max_vc.spec.TekHVC.C / max_vc.spec.TekHVC.V;
- if (_XcmsTekHVC_CheckModify (&tmp)) {
- memcpy((char *)pColor_return, (char *)&tmp, sizeof(XcmsColor));
- return(XcmsSuccess);
- } else {
- return(XcmsFailure);
- }
- } else {
- /* must do a bisection here to compute the maximum chroma */
- /* save the structure input so that any elements that */
- /* are not touched are recopied later in the routine. */
- nValue = savedValue = value;
- lastChroma = -1.0;
- lastValue = -1.0;
- nMaxCount = MAXBISECTCOUNT;
- maxDist = 100.0 - max_vc.spec.TekHVC.V;
- rFactor = 1.0;
-
- for (nCount = 0; nCount < nMaxCount; nCount++) {
- prevValue = lastValue;
- lastValue = tmp.spec.TekHVC.V;
- lastChroma = tmp.spec.TekHVC.C;
- nT = (nValue - max_vc.spec.TekHVC.V) / maxDist * rFactor;
- tmp.spec.RGBi.red = rgb_saved.red * (1.0 - nT) + nT;
- tmp.spec.RGBi.green = rgb_saved.green * (1.0 - nT) + nT;
- tmp.spec.RGBi.blue = rgb_saved.blue * (1.0 - nT) + nT;
- tmp.format = XcmsRGBiFormat;
-
- /* convert from RGB to HVC */
- if (_XcmsConvertColorsWithWhitePt(&myCCC, &tmp,
- &myCCC.pPerScrnInfo->screenWhitePt, 1, XcmsTekHVCFormat,
- (Bool *) NULL) == XcmsFailure) {
- return(XcmsFailure);
- }
-
- /* Now check the return against what is expected */
- if (tmp.spec.TekHVC.V <= savedValue + EPS &&
- tmp.spec.TekHVC.V >= savedValue - EPS) {
- /* make sure to return the input hue */
- tmp.spec.TekHVC.H = hue;
- if (_XcmsTekHVC_CheckModify (&tmp)) {
- memcpy((char *)pColor_return, (char *)&tmp, sizeof(XcmsColor));
- return(XcmsSuccess);
- } else {
- return(XcmsFailure);
- }
- }
- nValue += savedValue - tmp.spec.TekHVC.V;
- if (nValue < max_vc.spec.TekHVC.V) {
- nValue = max_vc.spec.TekHVC.V;
- rFactor *= 0.5; /* selective relaxation employed */
- } else if (nValue > 100.0) {
- /* make sure to return the input hue */
- tmp.spec.TekHVC.H = hue;
- /* avoid using fabs */
- ftmp1 = lastValue - savedValue;
- if (ftmp1 < 0.0)
- ftmp1 = -ftmp1;
- ftmp2 = tmp.spec.TekHVC.V - savedValue;
- if (ftmp2 < 0.0)
- ftmp2 = -ftmp2;
- if (ftmp1 < ftmp2) {
- tmp.spec.TekHVC.V = lastValue;
- tmp.spec.TekHVC.C = lastChroma;
- }
- if (_XcmsTekHVC_CheckModify (&tmp)) {
- memcpy((char *)pColor_return, (char *)&tmp, sizeof(XcmsColor));
- return(XcmsSuccess);
- } else {
- return(XcmsFailure);
- }
- } else if (tmp.spec.TekHVC.V <= prevValue + EPS &&
- tmp.spec.TekHVC.V >= prevValue - EPS) {
- rFactor *= 0.5; /* selective relaxation employed */
- }
- }
- if (nCount >= nMaxCount) {
- /* avoid using fabs */
- ftmp1 = lastValue - savedValue;
- if (ftmp1 < 0.0)
- ftmp1 = -ftmp1;
- ftmp2 = tmp.spec.TekHVC.V - savedValue;
- if (ftmp2 < 0.0)
- ftmp2 = -ftmp2;
- if (ftmp1 < ftmp2) {
- tmp.spec.TekHVC.V = lastValue;
- tmp.spec.TekHVC.C = lastChroma;
- }
- }
- }
- /* make sure to return the input hue */
- tmp.spec.TekHVC.H = hue;
- memcpy((char *)pColor_return, (char *)&tmp, sizeof(XcmsColor));
- return(XcmsSuccess);
-}
+
+/*
+ * Code and supporting documentation (c) Copyright 1990 1991 Tektronix, Inc.
+ * All Rights Reserved
+ *
+ * This file is a component of an X Window System-specific implementation
+ * of Xcms based on the TekColor Color Management System. TekColor is a
+ * trademark of Tektronix, Inc. The term "TekHVC" designates a particular
+ * color space that is the subject of U.S. Patent No. 4,985,853 (equivalent
+ * foreign patents pending). Permission is hereby granted to use, copy,
+ * modify, sell, and otherwise distribute this software and its
+ * documentation for any purpose and without fee, provided that:
+ *
+ * 1. This copyright, permission, and disclaimer notice is reproduced in
+ * all copies of this software and any modification thereof and in
+ * supporting documentation;
+ * 2. Any color-handling application which displays TekHVC color
+ * cooordinates identifies these as TekHVC color coordinates in any
+ * interface that displays these coordinates and in any associated
+ * documentation;
+ * 3. The term "TekHVC" is always used, and is only used, in association
+ * with the mathematical derivations of the TekHVC Color Space,
+ * including those provided in this file and any equivalent pathways and
+ * mathematical derivations, regardless of digital (e.g., floating point
+ * or integer) representation.
+ *
+ * Tektronix makes no representation about the suitability of this software
+ * for any purpose. It is provided "as is" and with all faults.
+ *
+ * TEKTRONIX DISCLAIMS ALL WARRANTIES APPLICABLE TO THIS SOFTWARE,
+ * INCLUDING THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+ * PARTICULAR PURPOSE. IN NO EVENT SHALL TEKTRONIX BE LIABLE FOR ANY
+ * SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER
+ * RESULTING FROM LOSS OF USE, DATA, OR PROFITS, WHETHER IN AN ACTION OF
+ * CONTRACT, NEGLIGENCE, OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
+ * CONNECTION WITH THE USE OR THE PERFORMANCE OF THIS SOFTWARE.
+ *
+ * NAME
+ * TekHVCMxC.c
+ *
+ * DESCRIPTION
+ * Source for the XcmsTekHVCQueryMaxC() gamut boudary
+ * querying routine.
+ *
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+#include "Xcmsint.h"
+#include <math.h>
+#include "Cv.h"
+
+/*
+ * DEFINES
+ */
+#define MAXBISECTCOUNT 100
+#define EPS 0.001
+
+
+/************************************************************************
+ * *
+ * PUBLIC ROUTINES *
+ * *
+ ************************************************************************/
+
+/*
+ * NAME
+ * XcmsTekHVCQueryMaxC - Compute the maximum chroma for a hue and value
+ *
+ * SYNOPSIS
+ */
+Status
+XcmsTekHVCQueryMaxC(
+ XcmsCCC ccc,
+ XcmsFloat hue,
+ XcmsFloat value,
+ XcmsColor *pColor_return)
+/*
+ * DESCRIPTION
+ * Return the maximum chroma for a specific hue and value.
+ * The returned format is in XcmsTekHVCFormat.
+ *
+ *
+ * ASSUMPTIONS
+ * This routine assumes that the white point associated with
+ * the color specification is the Screen White Point. The
+ * Screen White Point will also be associated with the
+ * returned color specification.
+ *
+ * RETURNS
+ * XcmsFailure - Failure
+ * XcmsSuccess - Succeeded
+ *
+ */
+{
+ XcmsCCCRec myCCC;
+ XcmsColor tmp;
+ XcmsColor max_vc;
+ XcmsRGBi rgb_saved;
+ int nCount, nMaxCount;
+ XcmsFloat nValue, savedValue, lastValue, lastChroma, prevValue;
+ XcmsFloat maxDist, nT, rFactor;
+ XcmsFloat ftmp1, ftmp2;
+
+ /*
+ * Check Arguments
+ */
+ if (ccc == NULL || pColor_return == NULL) {
+ return(XcmsFailure);
+ }
+
+ /*
+ * Insure TekHVC installed
+ */
+ if (XcmsAddColorSpace(&XcmsTekHVCColorSpace) == XcmsFailure) {
+ return(XcmsFailure);
+ }
+
+ /* Use my own CCC */
+ memcpy ((char *)&myCCC, (char *)ccc, sizeof(XcmsCCCRec));
+ myCCC.clientWhitePt.format = XcmsUndefinedFormat; /* inherit screen white Pt */
+ myCCC.gamutCompProc = (XcmsCompressionProc)NULL;/* no gamut comp func */
+
+ tmp.spec.TekHVC.H = hue;
+ tmp.spec.TekHVC.V = value;
+ tmp.spec.TekHVC.C = 100.0;
+ tmp.pixel = pColor_return->pixel;
+ tmp.format = XcmsTekHVCFormat;
+
+ /* check to make sure we have a valid TekHVC number */
+ if (!_XcmsTekHVC_CheckModify(&tmp)) {
+ return(XcmsFailure);
+ }
+
+ /* Step 1: compute the maximum value and chroma for this hue. */
+ memcpy((char *)&max_vc, (char *)&tmp, sizeof(XcmsColor));
+ if (_XcmsTekHVCQueryMaxVCRGB(&myCCC, hue, &max_vc, &rgb_saved)
+ == XcmsFailure) {
+ return(XcmsFailure);
+ }
+
+ /* Step 2: If the value is less than the value for the maximum */
+ /* value, chroma point then the chroma is on the line */
+ /* from max_vc to 0,0. */
+ if (value <= max_vc.spec.TekHVC.V) {
+ tmp.spec.TekHVC.C = value
+ * max_vc.spec.TekHVC.C / max_vc.spec.TekHVC.V;
+ if (_XcmsTekHVC_CheckModify (&tmp)) {
+ memcpy((char *)pColor_return, (char *)&tmp, sizeof(XcmsColor));
+ return(XcmsSuccess);
+ } else {
+ return(XcmsFailure);
+ }
+ } else {
+ /* must do a bisection here to compute the maximum chroma */
+ /* save the structure input so that any elements that */
+ /* are not touched are recopied later in the routine. */
+ nValue = savedValue = value;
+ lastChroma = -1.0;
+ lastValue = -1.0;
+ nMaxCount = MAXBISECTCOUNT;
+ maxDist = 100.0 - max_vc.spec.TekHVC.V;
+ rFactor = 1.0;
+
+ for (nCount = 0; nCount < nMaxCount; nCount++) {
+ prevValue = lastValue;
+ lastValue = tmp.spec.TekHVC.V;
+ lastChroma = tmp.spec.TekHVC.C;
+ nT = (nValue - max_vc.spec.TekHVC.V) / maxDist * rFactor;
+ tmp.spec.RGBi.red = rgb_saved.red * (1.0 - nT) + nT;
+ tmp.spec.RGBi.green = rgb_saved.green * (1.0 - nT) + nT;
+ tmp.spec.RGBi.blue = rgb_saved.blue * (1.0 - nT) + nT;
+ tmp.format = XcmsRGBiFormat;
+
+ /* convert from RGB to HVC */
+ if (_XcmsConvertColorsWithWhitePt(&myCCC, &tmp,
+ &myCCC.pPerScrnInfo->screenWhitePt, 1, XcmsTekHVCFormat,
+ (Bool *) NULL) == XcmsFailure) {
+ return(XcmsFailure);
+ }
+
+ /* Now check the return against what is expected */
+ if (tmp.spec.TekHVC.V <= savedValue + EPS &&
+ tmp.spec.TekHVC.V >= savedValue - EPS) {
+ /* make sure to return the input hue */
+ tmp.spec.TekHVC.H = hue;
+ if (_XcmsTekHVC_CheckModify (&tmp)) {
+ memcpy((char *)pColor_return, (char *)&tmp, sizeof(XcmsColor));
+ return(XcmsSuccess);
+ } else {
+ return(XcmsFailure);
+ }
+ }
+ nValue += savedValue - tmp.spec.TekHVC.V;
+ if (nValue < max_vc.spec.TekHVC.V) {
+ nValue = max_vc.spec.TekHVC.V;
+ rFactor *= 0.5; /* selective relaxation employed */
+ } else if (nValue > 100.0) {
+ /* make sure to return the input hue */
+ tmp.spec.TekHVC.H = hue;
+ /* avoid using fabs */
+ ftmp1 = lastValue - savedValue;
+ if (ftmp1 < 0.0)
+ ftmp1 = -ftmp1;
+ ftmp2 = tmp.spec.TekHVC.V - savedValue;
+ if (ftmp2 < 0.0)
+ ftmp2 = -ftmp2;
+ if (ftmp1 < ftmp2) {
+ tmp.spec.TekHVC.V = lastValue;
+ tmp.spec.TekHVC.C = lastChroma;
+ }
+ if (_XcmsTekHVC_CheckModify (&tmp)) {
+ memcpy((char *)pColor_return, (char *)&tmp, sizeof(XcmsColor));
+ return(XcmsSuccess);
+ } else {
+ return(XcmsFailure);
+ }
+ } else if (tmp.spec.TekHVC.V <= prevValue + EPS &&
+ tmp.spec.TekHVC.V >= prevValue - EPS) {
+ rFactor *= 0.5; /* selective relaxation employed */
+ }
+ }
+ if (nCount >= nMaxCount) {
+ /* avoid using fabs */
+ ftmp1 = lastValue - savedValue;
+ if (ftmp1 < 0.0)
+ ftmp1 = -ftmp1;
+ ftmp2 = tmp.spec.TekHVC.V - savedValue;
+ if (ftmp2 < 0.0)
+ ftmp2 = -ftmp2;
+ if (ftmp1 < ftmp2) {
+ tmp.spec.TekHVC.V = lastValue;
+ tmp.spec.TekHVC.C = lastChroma;
+ }
+ }
+ }
+ /* make sure to return the input hue */
+ tmp.spec.TekHVC.H = hue;
+ memcpy((char *)pColor_return, (char *)&tmp, sizeof(XcmsColor));
+ return(XcmsSuccess);
+}
diff --git a/libX11/src/xcms/HVCMxV.c b/libX11/src/xcms/HVCMxV.c
index a0da9fa50..d5ef94ec5 100644
--- a/libX11/src/xcms/HVCMxV.c
+++ b/libX11/src/xcms/HVCMxV.c
@@ -1,247 +1,247 @@
-
-/*
- * Code and supporting documentation (c) Copyright 1990 1991 Tektronix, Inc.
- * All Rights Reserved
- *
- * This file is a component of an X Window System-specific implementation
- * of Xcms based on the TekColor Color Management System. TekColor is a
- * trademark of Tektronix, Inc. The term "TekHVC" designates a particular
- * color space that is the subject of U.S. Patent No. 4,985,853 (equivalent
- * foreign patents pending). Permission is hereby granted to use, copy,
- * modify, sell, and otherwise distribute this software and its
- * documentation for any purpose and without fee, provided that:
- *
- * 1. This copyright, permission, and disclaimer notice is reproduced in
- * all copies of this software and any modification thereof and in
- * supporting documentation;
- * 2. Any color-handling application which displays TekHVC color
- * cooordinates identifies these as TekHVC color coordinates in any
- * interface that displays these coordinates and in any associated
- * documentation;
- * 3. The term "TekHVC" is always used, and is only used, in association
- * with the mathematical derivations of the TekHVC Color Space,
- * including those provided in this file and any equivalent pathways and
- * mathematical derivations, regardless of digital (e.g., floating point
- * or integer) representation.
- *
- * Tektronix makes no representation about the suitability of this software
- * for any purpose. It is provided "as is" and with all faults.
- *
- * TEKTRONIX DISCLAIMS ALL WARRANTIES APPLICABLE TO THIS SOFTWARE,
- * INCLUDING THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE. IN NO EVENT SHALL TEKTRONIX BE LIABLE FOR ANY
- * SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER
- * RESULTING FROM LOSS OF USE, DATA, OR PROFITS, WHETHER IN AN ACTION OF
- * CONTRACT, NEGLIGENCE, OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
- * CONNECTION WITH THE USE OR THE PERFORMANCE OF THIS SOFTWARE.
- *
- * NAME
- * TekHVCMxV.c
- *
- * DESCRIPTION
- * Source for the XcmsTekHVCQueryMaxV() gamut boundary
- * querying routine.
- *
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-#include "Xcmsint.h"
-#include <math.h>
-#include "Cv.h"
-
-/*
- * DEFINES
- */
-#define MAXBISECTCOUNT 100
-#define EPS 0.001
-
-
-/************************************************************************
- * *
- * PUBLIC ROUTINES *
- * *
- ************************************************************************/
-
-/*
- * NAME
- * XcmsTekHVCQueryMaxV - Compute maximum value for a hue and chroma
- *
- * SYNOPSIS
- */
-Status
-XcmsTekHVCQueryMaxV(
- XcmsCCC ccc,
- XcmsFloat hue,
- XcmsFloat chroma,
- XcmsColor *pColor_return)
-/*
- * DESCRIPTION
- * Return the maximum value for a specified hue and chroma.
- *
- * ASSUMPTIONS
- * This routine assumes that the white point associated with
- * the color specification is the Screen White Point. The
- * Screen White Point will also be associated with the
- * returned color specification.
- *
- * RETURNS
- * XcmsFailure - Failure
- * XcmsSuccess - Succeeded with no modifications
- *
- */
-{
- XcmsCCCRec myCCC;
- XcmsColor tmp;
- XcmsColor max_vc;
- XcmsRGBi rgb_saved;
- int nCount, nMaxCount;
- XcmsFloat nT, nChroma, savedChroma, lastValue, lastChroma, prevChroma;
- XcmsFloat rFactor;
- XcmsFloat ftmp1, ftmp2;
-
- /*
- * Check Arguments
- */
- if (ccc == NULL || pColor_return == NULL) {
- return(XcmsFailure);
- }
-
- /*
- * Insure TekHVC installed
- */
- if (XcmsAddColorSpace(&XcmsTekHVCColorSpace) == XcmsFailure) {
- return(XcmsFailure);
- }
-
- /* setup the CCC to use for the conversions. */
- memcpy ((char *) &myCCC, (char *) ccc, sizeof(XcmsCCCRec));
- myCCC.clientWhitePt.format = XcmsUndefinedFormat;
- myCCC.gamutCompProc = (XcmsCompressionProc) NULL;
-
- tmp.spec.TekHVC.H = hue;
- tmp.spec.TekHVC.V = 0.0;
- tmp.spec.TekHVC.C = chroma;
- tmp.pixel = pColor_return->pixel;
- tmp.format = XcmsTekHVCFormat;
-
- if (!_XcmsTekHVC_CheckModify (&tmp)) {
- return(XcmsFailure);
- }
-
- /* Step 1: compute the maximum value and chroma for this hue. */
- /* This copy may be overkill but it preserves the pixel etc. */
- memcpy((char *)&max_vc, (char *)&tmp, sizeof(XcmsColor));
- hue = max_vc.spec.TekHVC.H;
- if (_XcmsTekHVCQueryMaxVCRGB(&myCCC, max_vc.spec.TekHVC.H, &max_vc, &rgb_saved)
- == XcmsFailure) {
- return(XcmsFailure);
- }
-
- if (max_vc.spec.TekHVC.C < tmp.spec.TekHVC.C) {
- /*
- * If the chroma is greater than the chroma for the
- * maximum value/chroma point then the value is the
- * the value for the maximum value, chroma point.
- * This is an error but it I return the best approximation I can.
- * Thus the inconsistency.
- */
- tmp.spec.TekHVC.C = max_vc.spec.TekHVC.C;
- tmp.spec.TekHVC.V = max_vc.spec.TekHVC.V;
- memcpy ((char *) pColor_return, (char *) &tmp, sizeof (XcmsColor));
- return(XcmsSuccess);
- } else if (max_vc.spec.TekHVC.C == tmp.spec.TekHVC.C) {
- /*
- * If the chroma is equal to the chroma for the
- * maximum value/chroma point then the value is the
- * the value for the maximum value, chroma point.
- */
- tmp.spec.TekHVC.V = max_vc.spec.TekHVC.V;
- memcpy ((char *) pColor_return, (char *) &tmp, sizeof (XcmsColor));
- return(XcmsSuccess);
- } else {
- /* must do a bisection here to compute the maximum value */
- /* save the structure input so that any elements that */
- /* are not touched are recopied later in the routine. */
- nChroma = savedChroma = tmp.spec.TekHVC.C;
- tmp.spec.TekHVC.C = max_vc.spec.TekHVC.C;
- tmp.spec.TekHVC.V = max_vc.spec.TekHVC.V;
- lastChroma = -1.0;
- lastValue = -1.0;
- nMaxCount = MAXBISECTCOUNT;
- rFactor = 1.0;
-
- for (nCount = 0; nCount < nMaxCount; nCount++) {
- prevChroma = lastChroma;
- lastValue = tmp.spec.TekHVC.V;
- lastChroma = tmp.spec.TekHVC.C;
- nT = (1.0 - (nChroma / max_vc.spec.TekHVC.C)) * rFactor;
- tmp.spec.RGBi.red = rgb_saved.red * (1.0 - nT) + nT;
- tmp.spec.RGBi.green = rgb_saved.green * (1.0 - nT) + nT;
- tmp.spec.RGBi.blue = rgb_saved.blue * (1.0 - nT) + nT;
- tmp.format = XcmsRGBiFormat;
-
- /* convert from RGB to HVC */
- if (_XcmsConvertColorsWithWhitePt(&myCCC, &tmp,
- &myCCC.pPerScrnInfo->screenWhitePt, 1, XcmsTekHVCFormat,
- (Bool *) NULL) == XcmsFailure) {
- return(XcmsFailure);
- }
-
- /* Now check the return against what is expected */
- if (tmp.spec.TekHVC.C <= savedChroma + EPS &&
- tmp.spec.TekHVC.C >= savedChroma - EPS) {
- tmp.spec.TekHVC.H = hue; /* use the saved hue */
- memcpy ((char *) pColor_return, (char *) &tmp, sizeof (XcmsColor));
- return(XcmsSuccess);
- }
- nChroma += savedChroma - tmp.spec.TekHVC.C;
- if (nChroma > max_vc.spec.TekHVC.C) {
- nChroma = max_vc.spec.TekHVC.C;
- rFactor *= 0.5; /* selective relaxation employed */
- } else if (nChroma < 0.0) {
- /* avoid using fabs */
- ftmp1 = lastChroma - savedChroma;
- if (ftmp1 < 0.0)
- ftmp1 = -ftmp1;
- ftmp2 = tmp.spec.TekHVC.C - savedChroma;
- if (ftmp2 < 0.0)
- ftmp2 = -ftmp2;
- if (ftmp1 < ftmp2) {
- tmp.spec.TekHVC.V = lastValue;
- tmp.spec.TekHVC.C = lastChroma;
- }
- /* make sure to return the input hue */
- tmp.spec.TekHVC.H = hue;
- if (!_XcmsTekHVC_CheckModify(&tmp)) {
- return(XcmsFailure);
- }
- memcpy ((char *) pColor_return, (char *) &tmp, sizeof (XcmsColor));
- return(XcmsSuccess);
- } else if (tmp.spec.TekHVC.C <= prevChroma + EPS &&
- tmp.spec.TekHVC.C >= prevChroma - EPS) {
- rFactor *= 0.5; /* selective relaxation employed */
- }
- }
- if (nCount >= nMaxCount) {
- /* avoid using fabs */
- ftmp1 = lastChroma - savedChroma;
- if (ftmp1 < 0.0)
- ftmp1 = -ftmp1;
- ftmp2 = tmp.spec.TekHVC.C - savedChroma;
- if (ftmp2 < 0.0)
- ftmp2 = -ftmp2;
- if (ftmp1 < ftmp2) {
- tmp.spec.TekHVC.V = lastValue;
- tmp.spec.TekHVC.C = lastChroma;
- }
- }
- }
-
- /* make sure to return the input hue */
- tmp.spec.TekHVC.H = hue;
- memcpy ((char *) pColor_return, (char *) &tmp, sizeof (XcmsColor));
- return(XcmsSuccess);
-}
+
+/*
+ * Code and supporting documentation (c) Copyright 1990 1991 Tektronix, Inc.
+ * All Rights Reserved
+ *
+ * This file is a component of an X Window System-specific implementation
+ * of Xcms based on the TekColor Color Management System. TekColor is a
+ * trademark of Tektronix, Inc. The term "TekHVC" designates a particular
+ * color space that is the subject of U.S. Patent No. 4,985,853 (equivalent
+ * foreign patents pending). Permission is hereby granted to use, copy,
+ * modify, sell, and otherwise distribute this software and its
+ * documentation for any purpose and without fee, provided that:
+ *
+ * 1. This copyright, permission, and disclaimer notice is reproduced in
+ * all copies of this software and any modification thereof and in
+ * supporting documentation;
+ * 2. Any color-handling application which displays TekHVC color
+ * cooordinates identifies these as TekHVC color coordinates in any
+ * interface that displays these coordinates and in any associated
+ * documentation;
+ * 3. The term "TekHVC" is always used, and is only used, in association
+ * with the mathematical derivations of the TekHVC Color Space,
+ * including those provided in this file and any equivalent pathways and
+ * mathematical derivations, regardless of digital (e.g., floating point
+ * or integer) representation.
+ *
+ * Tektronix makes no representation about the suitability of this software
+ * for any purpose. It is provided "as is" and with all faults.
+ *
+ * TEKTRONIX DISCLAIMS ALL WARRANTIES APPLICABLE TO THIS SOFTWARE,
+ * INCLUDING THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+ * PARTICULAR PURPOSE. IN NO EVENT SHALL TEKTRONIX BE LIABLE FOR ANY
+ * SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER
+ * RESULTING FROM LOSS OF USE, DATA, OR PROFITS, WHETHER IN AN ACTION OF
+ * CONTRACT, NEGLIGENCE, OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
+ * CONNECTION WITH THE USE OR THE PERFORMANCE OF THIS SOFTWARE.
+ *
+ * NAME
+ * TekHVCMxV.c
+ *
+ * DESCRIPTION
+ * Source for the XcmsTekHVCQueryMaxV() gamut boundary
+ * querying routine.
+ *
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+#include "Xcmsint.h"
+#include <math.h>
+#include "Cv.h"
+
+/*
+ * DEFINES
+ */
+#define MAXBISECTCOUNT 100
+#define EPS 0.001
+
+
+/************************************************************************
+ * *
+ * PUBLIC ROUTINES *
+ * *
+ ************************************************************************/
+
+/*
+ * NAME
+ * XcmsTekHVCQueryMaxV - Compute maximum value for a hue and chroma
+ *
+ * SYNOPSIS
+ */
+Status
+XcmsTekHVCQueryMaxV(
+ XcmsCCC ccc,
+ XcmsFloat hue,
+ XcmsFloat chroma,
+ XcmsColor *pColor_return)
+/*
+ * DESCRIPTION
+ * Return the maximum value for a specified hue and chroma.
+ *
+ * ASSUMPTIONS
+ * This routine assumes that the white point associated with
+ * the color specification is the Screen White Point. The
+ * Screen White Point will also be associated with the
+ * returned color specification.
+ *
+ * RETURNS
+ * XcmsFailure - Failure
+ * XcmsSuccess - Succeeded with no modifications
+ *
+ */
+{
+ XcmsCCCRec myCCC;
+ XcmsColor tmp;
+ XcmsColor max_vc;
+ XcmsRGBi rgb_saved;
+ int nCount, nMaxCount;
+ XcmsFloat nT, nChroma, savedChroma, lastValue, lastChroma, prevChroma;
+ XcmsFloat rFactor;
+ XcmsFloat ftmp1, ftmp2;
+
+ /*
+ * Check Arguments
+ */
+ if (ccc == NULL || pColor_return == NULL) {
+ return(XcmsFailure);
+ }
+
+ /*
+ * Insure TekHVC installed
+ */
+ if (XcmsAddColorSpace(&XcmsTekHVCColorSpace) == XcmsFailure) {
+ return(XcmsFailure);
+ }
+
+ /* setup the CCC to use for the conversions. */
+ memcpy ((char *) &myCCC, (char *) ccc, sizeof(XcmsCCCRec));
+ myCCC.clientWhitePt.format = XcmsUndefinedFormat;
+ myCCC.gamutCompProc = (XcmsCompressionProc) NULL;
+
+ tmp.spec.TekHVC.H = hue;
+ tmp.spec.TekHVC.V = 0.0;
+ tmp.spec.TekHVC.C = chroma;
+ tmp.pixel = pColor_return->pixel;
+ tmp.format = XcmsTekHVCFormat;
+
+ if (!_XcmsTekHVC_CheckModify (&tmp)) {
+ return(XcmsFailure);
+ }
+
+ /* Step 1: compute the maximum value and chroma for this hue. */
+ /* This copy may be overkill but it preserves the pixel etc. */
+ memcpy((char *)&max_vc, (char *)&tmp, sizeof(XcmsColor));
+ hue = max_vc.spec.TekHVC.H;
+ if (_XcmsTekHVCQueryMaxVCRGB(&myCCC, max_vc.spec.TekHVC.H, &max_vc, &rgb_saved)
+ == XcmsFailure) {
+ return(XcmsFailure);
+ }
+
+ if (max_vc.spec.TekHVC.C < tmp.spec.TekHVC.C) {
+ /*
+ * If the chroma is greater than the chroma for the
+ * maximum value/chroma point then the value is the
+ * the value for the maximum value, chroma point.
+ * This is an error but it I return the best approximation I can.
+ * Thus the inconsistency.
+ */
+ tmp.spec.TekHVC.C = max_vc.spec.TekHVC.C;
+ tmp.spec.TekHVC.V = max_vc.spec.TekHVC.V;
+ memcpy ((char *) pColor_return, (char *) &tmp, sizeof (XcmsColor));
+ return(XcmsSuccess);
+ } else if (max_vc.spec.TekHVC.C == tmp.spec.TekHVC.C) {
+ /*
+ * If the chroma is equal to the chroma for the
+ * maximum value/chroma point then the value is the
+ * the value for the maximum value, chroma point.
+ */
+ tmp.spec.TekHVC.V = max_vc.spec.TekHVC.V;
+ memcpy ((char *) pColor_return, (char *) &tmp, sizeof (XcmsColor));
+ return(XcmsSuccess);
+ } else {
+ /* must do a bisection here to compute the maximum value */
+ /* save the structure input so that any elements that */
+ /* are not touched are recopied later in the routine. */
+ nChroma = savedChroma = tmp.spec.TekHVC.C;
+ tmp.spec.TekHVC.C = max_vc.spec.TekHVC.C;
+ tmp.spec.TekHVC.V = max_vc.spec.TekHVC.V;
+ lastChroma = -1.0;
+ lastValue = -1.0;
+ nMaxCount = MAXBISECTCOUNT;
+ rFactor = 1.0;
+
+ for (nCount = 0; nCount < nMaxCount; nCount++) {
+ prevChroma = lastChroma;
+ lastValue = tmp.spec.TekHVC.V;
+ lastChroma = tmp.spec.TekHVC.C;
+ nT = (1.0 - (nChroma / max_vc.spec.TekHVC.C)) * rFactor;
+ tmp.spec.RGBi.red = rgb_saved.red * (1.0 - nT) + nT;
+ tmp.spec.RGBi.green = rgb_saved.green * (1.0 - nT) + nT;
+ tmp.spec.RGBi.blue = rgb_saved.blue * (1.0 - nT) + nT;
+ tmp.format = XcmsRGBiFormat;
+
+ /* convert from RGB to HVC */
+ if (_XcmsConvertColorsWithWhitePt(&myCCC, &tmp,
+ &myCCC.pPerScrnInfo->screenWhitePt, 1, XcmsTekHVCFormat,
+ (Bool *) NULL) == XcmsFailure) {
+ return(XcmsFailure);
+ }
+
+ /* Now check the return against what is expected */
+ if (tmp.spec.TekHVC.C <= savedChroma + EPS &&
+ tmp.spec.TekHVC.C >= savedChroma - EPS) {
+ tmp.spec.TekHVC.H = hue; /* use the saved hue */
+ memcpy ((char *) pColor_return, (char *) &tmp, sizeof (XcmsColor));
+ return(XcmsSuccess);
+ }
+ nChroma += savedChroma - tmp.spec.TekHVC.C;
+ if (nChroma > max_vc.spec.TekHVC.C) {
+ nChroma = max_vc.spec.TekHVC.C;
+ rFactor *= 0.5; /* selective relaxation employed */
+ } else if (nChroma < 0.0) {
+ /* avoid using fabs */
+ ftmp1 = lastChroma - savedChroma;
+ if (ftmp1 < 0.0)
+ ftmp1 = -ftmp1;
+ ftmp2 = tmp.spec.TekHVC.C - savedChroma;
+ if (ftmp2 < 0.0)
+ ftmp2 = -ftmp2;
+ if (ftmp1 < ftmp2) {
+ tmp.spec.TekHVC.V = lastValue;
+ tmp.spec.TekHVC.C = lastChroma;
+ }
+ /* make sure to return the input hue */
+ tmp.spec.TekHVC.H = hue;
+ if (!_XcmsTekHVC_CheckModify(&tmp)) {
+ return(XcmsFailure);
+ }
+ memcpy ((char *) pColor_return, (char *) &tmp, sizeof (XcmsColor));
+ return(XcmsSuccess);
+ } else if (tmp.spec.TekHVC.C <= prevChroma + EPS &&
+ tmp.spec.TekHVC.C >= prevChroma - EPS) {
+ rFactor *= 0.5; /* selective relaxation employed */
+ }
+ }
+ if (nCount >= nMaxCount) {
+ /* avoid using fabs */
+ ftmp1 = lastChroma - savedChroma;
+ if (ftmp1 < 0.0)
+ ftmp1 = -ftmp1;
+ ftmp2 = tmp.spec.TekHVC.C - savedChroma;
+ if (ftmp2 < 0.0)
+ ftmp2 = -ftmp2;
+ if (ftmp1 < ftmp2) {
+ tmp.spec.TekHVC.V = lastValue;
+ tmp.spec.TekHVC.C = lastChroma;
+ }
+ }
+ }
+
+ /* make sure to return the input hue */
+ tmp.spec.TekHVC.H = hue;
+ memcpy ((char *) pColor_return, (char *) &tmp, sizeof (XcmsColor));
+ return(XcmsSuccess);
+}
diff --git a/libX11/src/xcms/HVCMxVC.c b/libX11/src/xcms/HVCMxVC.c
index 729ee12bf..c7e087866 100644
--- a/libX11/src/xcms/HVCMxVC.c
+++ b/libX11/src/xcms/HVCMxVC.c
@@ -1,235 +1,235 @@
-
-/*
- * Code and supporting documentation (c) Copyright 1990 1991 Tektronix, Inc.
- * All Rights Reserved
- *
- * This file is a component of an X Window System-specific implementation
- * of Xcms based on the TekColor Color Management System. TekColor is a
- * trademark of Tektronix, Inc. The term "TekHVC" designates a particular
- * color space that is the subject of U.S. Patent No. 4,985,853 (equivalent
- * foreign patents pending). Permission is hereby granted to use, copy,
- * modify, sell, and otherwise distribute this software and its
- * documentation for any purpose and without fee, provided that:
- *
- * 1. This copyright, permission, and disclaimer notice is reproduced in
- * all copies of this software and any modification thereof and in
- * supporting documentation;
- * 2. Any color-handling application which displays TekHVC color
- * cooordinates identifies these as TekHVC color coordinates in any
- * interface that displays these coordinates and in any associated
- * documentation;
- * 3. The term "TekHVC" is always used, and is only used, in association
- * with the mathematical derivations of the TekHVC Color Space,
- * including those provided in this file and any equivalent pathways and
- * mathematical derivations, regardless of digital (e.g., floating point
- * or integer) representation.
- *
- * Tektronix makes no representation about the suitability of this software
- * for any purpose. It is provided "as is" and with all faults.
- *
- * TEKTRONIX DISCLAIMS ALL WARRANTIES APPLICABLE TO THIS SOFTWARE,
- * INCLUDING THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE. IN NO EVENT SHALL TEKTRONIX BE LIABLE FOR ANY
- * SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER
- * RESULTING FROM LOSS OF USE, DATA, OR PROFITS, WHETHER IN AN ACTION OF
- * CONTRACT, NEGLIGENCE, OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
- * CONNECTION WITH THE USE OR THE PERFORMANCE OF THIS SOFTWARE.
- *
- * NAME
- * TekHVCMxVC.c
- *
- * DESCRIPTION
- * Source for the XcmsTekHVCQueryMaxVC() gamut boundary
- * querying routine.
- *
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-#include "Xcmsint.h"
-#include "Cv.h"
-
-/*
- * DEFINES
- */
-#define MIN(x,y) ((x) > (y) ? (y) : (x))
-#define MIN3(x,y,z) ((x) > (MIN((y), (z))) ? (MIN((y), (z))) : (x))
-#define MAX(x,y) ((x) > (y) ? (x) : (y))
-#define MAX3(x,y,z) ((x) > (MAX((y), (z))) ? (x) : (MAX((y), (z))))
-#define START_V 40.0
-#define START_C 120.0
-
-
-/************************************************************************
- * *
- * API PRIVATE ROUTINES *
- * *
- ************************************************************************/
-
-/*
- * NAME
- * _XcmsTekHVCQueryMaxVCRGB - Compute maximum value/chroma.
- *
- * SYNOPSIS
- */
-Status
-_XcmsTekHVCQueryMaxVCRGB(
- XcmsCCC ccc,
- XcmsFloat hue,
- XcmsColor *pColor_return,
- XcmsRGBi *pRGB_return)
-
-/*
- * DESCRIPTION
- * Return the maximum chroma for a specified hue, and the
- * corresponding value. This is computed by a binary search of
- * all possible chromas. An assumption is made that there are
- * no local maxima. Use the unrounded Max Chroma because
- * the difference check can be small.
- *
- * NOTE: No local CCC is used because this is a private
- * routine and all routines that call it are expected
- * to behave properly, i.e. send a local CCC with
- * no white adjust function and no gamut compression
- * function.
- *
- * This routine only accepts hue as input and outputs
- * HVC's and RGBi's.
- *
- * RETURNS
- * XcmsFailure - Failure
- * XCMS_SUCCUSS - Succeeded
- *
- */
-{
- XcmsFloat nSmall, nLarge;
- XcmsColor tmp;
-
- tmp.format = XcmsTekHVCFormat;
- tmp.spec.TekHVC.H = hue;
- /* Use some unreachable color on the given hue */
- tmp.spec.TekHVC.V = START_V;
- tmp.spec.TekHVC.C = START_C;
-
-
- /*
- * Convert from HVC to RGB
- *
- * Note that the CIEXYZ to RGBi conversion routine must stuff the
- * out of bounds RGBi values in tmp when the ccc->gamutCompProc
- * is NULL.
- */
- if ((_XcmsConvertColorsWithWhitePt(ccc, &tmp,
- &ccc->pPerScrnInfo->screenWhitePt, 1, XcmsRGBiFormat, (Bool *) NULL)
- == XcmsFailure) && tmp.format != XcmsRGBiFormat) {
- return (XcmsFailure);
- }
-
- /* Now pick the smallest RGB */
- nSmall = MIN3(tmp.spec.RGBi.red,
- tmp.spec.RGBi.green,
- tmp.spec.RGBi.blue);
- /* Make the smallest RGB equal to zero */
- tmp.spec.RGBi.red -= nSmall;
- tmp.spec.RGBi.green -= nSmall;
- tmp.spec.RGBi.blue -= nSmall;
-
- /* Now pick the largest RGB */
- nLarge = MAX3(tmp.spec.RGBi.red,
- tmp.spec.RGBi.green,
- tmp.spec.RGBi.blue);
- /* Scale the RGB values based on the largest one */
- tmp.spec.RGBi.red /= nLarge;
- tmp.spec.RGBi.green /= nLarge;
- tmp.spec.RGBi.blue /= nLarge;
- tmp.format = XcmsRGBiFormat;
-
- /* If the calling routine wants RGB value give them the ones used. */
- if (pRGB_return) {
- pRGB_return->red = tmp.spec.RGBi.red;
- pRGB_return->green = tmp.spec.RGBi.green;
- pRGB_return->blue = tmp.spec.RGBi.blue;
- }
-
- /* Convert from RGBi to HVC */
- if (_XcmsConvertColorsWithWhitePt(ccc, &tmp,
- &ccc->pPerScrnInfo->screenWhitePt, 1, XcmsTekHVCFormat, (Bool *) NULL)
- == XcmsFailure) {
- return (XcmsFailure);
- }
-
- /* make sure to return the input hue */
- tmp.spec.TekHVC.H = hue;
- memcpy((char *)pColor_return, (char *)&tmp, sizeof(XcmsColor));
- return (XcmsSuccess);
-}
-
-
-/************************************************************************
- * *
- * PUBLIC ROUTINES *
- * *
- ************************************************************************/
-
-/*
- * NAME
- * XcmsTekHVCQueryMaxVC - Compute maximum value and chroma.
- *
- * SYNOPSIS
- */
-Status
-XcmsTekHVCQueryMaxVC (
- XcmsCCC ccc,
- XcmsFloat hue,
- XcmsColor *pColor_return)
-
-/*
- * DESCRIPTION
- * Return the maximum chroma for the specified hue, and the
- * corresponding value.
- *
- * ASSUMPTIONS
- * This routine assumes that the white point associated with
- * the color specification is the Screen White Point. The
- * Screen White Point will also be associated with the
- * returned color specification.
- *
- * RETURNS
- * XcmsFailure - Failure
- * XcmsSuccess - Succeeded
- *
- */
-{
- XcmsCCCRec myCCC;
-
- /*
- * Check Arguments
- */
- if (ccc == NULL || pColor_return == NULL) {
- return(XcmsFailure);
- }
-
- /*
- * Insure TekHVC installed
- */
- if (XcmsAddColorSpace(&XcmsTekHVCColorSpace) == XcmsFailure) {
- return(XcmsFailure);
- }
-
- /* Use my own CCC */
- memcpy ((char *)&myCCC, (char *)ccc, sizeof(XcmsCCCRec));
- myCCC.clientWhitePt.format = XcmsUndefinedFormat;
- myCCC.gamutCompProc = (XcmsCompressionProc)NULL;
-
- while (hue < 0.0) {
- hue += 360.0;
- }
- while (hue >= 360.0) {
- hue -= 360.0;
- }
-
- return(_XcmsTekHVCQueryMaxVCRGB (&myCCC, hue, pColor_return,
- (XcmsRGBi *)NULL));
-}
+
+/*
+ * Code and supporting documentation (c) Copyright 1990 1991 Tektronix, Inc.
+ * All Rights Reserved
+ *
+ * This file is a component of an X Window System-specific implementation
+ * of Xcms based on the TekColor Color Management System. TekColor is a
+ * trademark of Tektronix, Inc. The term "TekHVC" designates a particular
+ * color space that is the subject of U.S. Patent No. 4,985,853 (equivalent
+ * foreign patents pending). Permission is hereby granted to use, copy,
+ * modify, sell, and otherwise distribute this software and its
+ * documentation for any purpose and without fee, provided that:
+ *
+ * 1. This copyright, permission, and disclaimer notice is reproduced in
+ * all copies of this software and any modification thereof and in
+ * supporting documentation;
+ * 2. Any color-handling application which displays TekHVC color
+ * cooordinates identifies these as TekHVC color coordinates in any
+ * interface that displays these coordinates and in any associated
+ * documentation;
+ * 3. The term "TekHVC" is always used, and is only used, in association
+ * with the mathematical derivations of the TekHVC Color Space,
+ * including those provided in this file and any equivalent pathways and
+ * mathematical derivations, regardless of digital (e.g., floating point
+ * or integer) representation.
+ *
+ * Tektronix makes no representation about the suitability of this software
+ * for any purpose. It is provided "as is" and with all faults.
+ *
+ * TEKTRONIX DISCLAIMS ALL WARRANTIES APPLICABLE TO THIS SOFTWARE,
+ * INCLUDING THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+ * PARTICULAR PURPOSE. IN NO EVENT SHALL TEKTRONIX BE LIABLE FOR ANY
+ * SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER
+ * RESULTING FROM LOSS OF USE, DATA, OR PROFITS, WHETHER IN AN ACTION OF
+ * CONTRACT, NEGLIGENCE, OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
+ * CONNECTION WITH THE USE OR THE PERFORMANCE OF THIS SOFTWARE.
+ *
+ * NAME
+ * TekHVCMxVC.c
+ *
+ * DESCRIPTION
+ * Source for the XcmsTekHVCQueryMaxVC() gamut boundary
+ * querying routine.
+ *
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+#include "Xcmsint.h"
+#include "Cv.h"
+
+/*
+ * DEFINES
+ */
+#define MIN(x,y) ((x) > (y) ? (y) : (x))
+#define MIN3(x,y,z) ((x) > (MIN((y), (z))) ? (MIN((y), (z))) : (x))
+#define MAX(x,y) ((x) > (y) ? (x) : (y))
+#define MAX3(x,y,z) ((x) > (MAX((y), (z))) ? (x) : (MAX((y), (z))))
+#define START_V 40.0
+#define START_C 120.0
+
+
+/************************************************************************
+ * *
+ * API PRIVATE ROUTINES *
+ * *
+ ************************************************************************/
+
+/*
+ * NAME
+ * _XcmsTekHVCQueryMaxVCRGB - Compute maximum value/chroma.
+ *
+ * SYNOPSIS
+ */
+Status
+_XcmsTekHVCQueryMaxVCRGB(
+ XcmsCCC ccc,
+ XcmsFloat hue,
+ XcmsColor *pColor_return,
+ XcmsRGBi *pRGB_return)
+
+/*
+ * DESCRIPTION
+ * Return the maximum chroma for a specified hue, and the
+ * corresponding value. This is computed by a binary search of
+ * all possible chromas. An assumption is made that there are
+ * no local maxima. Use the unrounded Max Chroma because
+ * the difference check can be small.
+ *
+ * NOTE: No local CCC is used because this is a private
+ * routine and all routines that call it are expected
+ * to behave properly, i.e. send a local CCC with
+ * no white adjust function and no gamut compression
+ * function.
+ *
+ * This routine only accepts hue as input and outputs
+ * HVC's and RGBi's.
+ *
+ * RETURNS
+ * XcmsFailure - Failure
+ * XCMS_SUCCUSS - Succeeded
+ *
+ */
+{
+ XcmsFloat nSmall, nLarge;
+ XcmsColor tmp;
+
+ tmp.format = XcmsTekHVCFormat;
+ tmp.spec.TekHVC.H = hue;
+ /* Use some unreachable color on the given hue */
+ tmp.spec.TekHVC.V = START_V;
+ tmp.spec.TekHVC.C = START_C;
+
+
+ /*
+ * Convert from HVC to RGB
+ *
+ * Note that the CIEXYZ to RGBi conversion routine must stuff the
+ * out of bounds RGBi values in tmp when the ccc->gamutCompProc
+ * is NULL.
+ */
+ if ((_XcmsConvertColorsWithWhitePt(ccc, &tmp,
+ &ccc->pPerScrnInfo->screenWhitePt, 1, XcmsRGBiFormat, (Bool *) NULL)
+ == XcmsFailure) && tmp.format != XcmsRGBiFormat) {
+ return (XcmsFailure);
+ }
+
+ /* Now pick the smallest RGB */
+ nSmall = MIN3(tmp.spec.RGBi.red,
+ tmp.spec.RGBi.green,
+ tmp.spec.RGBi.blue);
+ /* Make the smallest RGB equal to zero */
+ tmp.spec.RGBi.red -= nSmall;
+ tmp.spec.RGBi.green -= nSmall;
+ tmp.spec.RGBi.blue -= nSmall;
+
+ /* Now pick the largest RGB */
+ nLarge = MAX3(tmp.spec.RGBi.red,
+ tmp.spec.RGBi.green,
+ tmp.spec.RGBi.blue);
+ /* Scale the RGB values based on the largest one */
+ tmp.spec.RGBi.red /= nLarge;
+ tmp.spec.RGBi.green /= nLarge;
+ tmp.spec.RGBi.blue /= nLarge;
+ tmp.format = XcmsRGBiFormat;
+
+ /* If the calling routine wants RGB value give them the ones used. */
+ if (pRGB_return) {
+ pRGB_return->red = tmp.spec.RGBi.red;
+ pRGB_return->green = tmp.spec.RGBi.green;
+ pRGB_return->blue = tmp.spec.RGBi.blue;
+ }
+
+ /* Convert from RGBi to HVC */
+ if (_XcmsConvertColorsWithWhitePt(ccc, &tmp,
+ &ccc->pPerScrnInfo->screenWhitePt, 1, XcmsTekHVCFormat, (Bool *) NULL)
+ == XcmsFailure) {
+ return (XcmsFailure);
+ }
+
+ /* make sure to return the input hue */
+ tmp.spec.TekHVC.H = hue;
+ memcpy((char *)pColor_return, (char *)&tmp, sizeof(XcmsColor));
+ return (XcmsSuccess);
+}
+
+
+/************************************************************************
+ * *
+ * PUBLIC ROUTINES *
+ * *
+ ************************************************************************/
+
+/*
+ * NAME
+ * XcmsTekHVCQueryMaxVC - Compute maximum value and chroma.
+ *
+ * SYNOPSIS
+ */
+Status
+XcmsTekHVCQueryMaxVC (
+ XcmsCCC ccc,
+ XcmsFloat hue,
+ XcmsColor *pColor_return)
+
+/*
+ * DESCRIPTION
+ * Return the maximum chroma for the specified hue, and the
+ * corresponding value.
+ *
+ * ASSUMPTIONS
+ * This routine assumes that the white point associated with
+ * the color specification is the Screen White Point. The
+ * Screen White Point will also be associated with the
+ * returned color specification.
+ *
+ * RETURNS
+ * XcmsFailure - Failure
+ * XcmsSuccess - Succeeded
+ *
+ */
+{
+ XcmsCCCRec myCCC;
+
+ /*
+ * Check Arguments
+ */
+ if (ccc == NULL || pColor_return == NULL) {
+ return(XcmsFailure);
+ }
+
+ /*
+ * Insure TekHVC installed
+ */
+ if (XcmsAddColorSpace(&XcmsTekHVCColorSpace) == XcmsFailure) {
+ return(XcmsFailure);
+ }
+
+ /* Use my own CCC */
+ memcpy ((char *)&myCCC, (char *)ccc, sizeof(XcmsCCCRec));
+ myCCC.clientWhitePt.format = XcmsUndefinedFormat;
+ myCCC.gamutCompProc = (XcmsCompressionProc)NULL;
+
+ while (hue < 0.0) {
+ hue += 360.0;
+ }
+ while (hue >= 360.0) {
+ hue -= 360.0;
+ }
+
+ return(_XcmsTekHVCQueryMaxVCRGB (&myCCC, hue, pColor_return,
+ (XcmsRGBi *)NULL));
+}
diff --git a/libX11/src/xcms/HVCMxVs.c b/libX11/src/xcms/HVCMxVs.c
index 2bd2bfacc..540e5c2f4 100644
--- a/libX11/src/xcms/HVCMxVs.c
+++ b/libX11/src/xcms/HVCMxVs.c
@@ -1,161 +1,161 @@
-
-/*
- * Code and supporting documentation (c) Copyright 1990 1991 Tektronix, Inc.
- * All Rights Reserved
- *
- * This file is a component of an X Window System-specific implementation
- * of Xcms based on the TekColor Color Management System. TekColor is a
- * trademark of Tektronix, Inc. The term "TekHVC" designates a particular
- * color space that is the subject of U.S. Patent No. 4,985,853 (equivalent
- * foreign patents pending). Permission is hereby granted to use, copy,
- * modify, sell, and otherwise distribute this software and its
- * documentation for any purpose and without fee, provided that:
- *
- * 1. This copyright, permission, and disclaimer notice is reproduced in
- * all copies of this software and any modification thereof and in
- * supporting documentation;
- * 2. Any color-handling application which displays TekHVC color
- * cooordinates identifies these as TekHVC color coordinates in any
- * interface that displays these coordinates and in any associated
- * documentation;
- * 3. The term "TekHVC" is always used, and is only used, in association
- * with the mathematical derivations of the TekHVC Color Space,
- * including those provided in this file and any equivalent pathways and
- * mathematical derivations, regardless of digital (e.g., floating point
- * or integer) representation.
- *
- * Tektronix makes no representation about the suitability of this software
- * for any purpose. It is provided "as is" and with all faults.
- *
- * TEKTRONIX DISCLAIMS ALL WARRANTIES APPLICABLE TO THIS SOFTWARE,
- * INCLUDING THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE. IN NO EVENT SHALL TEKTRONIX BE LIABLE FOR ANY
- * SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER
- * RESULTING FROM LOSS OF USE, DATA, OR PROFITS, WHETHER IN AN ACTION OF
- * CONTRACT, NEGLIGENCE, OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
- * CONNECTION WITH THE USE OR THE PERFORMANCE OF THIS SOFTWARE.
- *
- * NAME
- * TekHVCMxVs.c
- *
- * DESCRIPTION
- * Source for the XcmsTekHVCQueryMaxVSamples() gamut boundary
- * querying routine.
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-#include "Xcmsint.h"
-#include "Cv.h"
-
-
-/************************************************************************
- * *
- * PUBLIC ROUTINES *
- * *
- ************************************************************************/
-
-/*
- * NAME
- * XcmsTekHVCQueryMaxVSamples - Compute a set of value/chroma
- * pairs.
- *
- * SYNOPSIS
- */
-Status
-XcmsTekHVCQueryMaxVSamples(
- XcmsCCC ccc,
- XcmsFloat hue,
- XcmsColor *pColor_in_out,
- unsigned int nSamples)
-
-/*
- * DESCRIPTION
- * Return a set of values and chromas for the input Hue.
- * This routine will take any color as input.
- * It returns TekHVC colors.
- *
- * Since this routine works with the value within
- * pColor_in_out intermediate results may be returned
- * even though it may be invalid.
- *
- * ASSUMPTIONS
- * This routine assumes that the white point associated with
- * the color specification is the Screen White Point. The
- * Screen White Point will also be associated with the
- * returned color specification.
- *
- * RETURNS
- * XcmsFailure - Failure
- * XcmsSuccess - Succeeded
- *
- */
-{
- XcmsCCCRec myCCC;
- XcmsColor *pHVC;
- XcmsRGBi rgb_saved;
- unsigned short nI;
- XcmsFloat nT;
-
- /*
- * Check Arguments
- */
- if (ccc == NULL || pColor_in_out == NULL || nSamples == 0) {
- return(XcmsFailure);
- }
-
- /*
- * Insure TekHVC installed
- */
- if (XcmsAddColorSpace(&XcmsTekHVCColorSpace) == XcmsFailure) {
- return(XcmsFailure);
- }
-
- /* setup the CCC to use for the conversions. */
- memcpy ((char *) &myCCC, (char *) ccc, sizeof(XcmsCCCRec));
- myCCC.clientWhitePt.format = XcmsUndefinedFormat;
- myCCC.gamutCompProc = (XcmsCompressionProc) NULL;
-
- /* Step 1: compute the maximum value and chroma for this hue. */
-
-
- /* save the Hue for use later. */
- while (hue < 0.0) {
- hue += 360.0;
- }
- while (hue > 360.0) {
- hue -= 360.0;
- }
- pColor_in_out->spec.TekHVC.H = hue;
- pColor_in_out->format = XcmsTekHVCFormat;
-
- /* Get the maximum value and chroma point for this hue */
- if (_XcmsTekHVCQueryMaxVCRGB(&myCCC, pColor_in_out->spec.TekHVC.H,
- pColor_in_out, (XcmsRGBi *)&rgb_saved) == XcmsFailure) {
- return (XcmsFailure);
- }
-
- /* Step 2: Convert each of the RGBi's to HVC's */
- pHVC = pColor_in_out;
- for (nI = 0; nI < nSamples; nI++, pHVC++) {
- nT = (XcmsFloat) nI / (XcmsFloat) nSamples;
- pHVC->spec.RGBi.red = rgb_saved.red * (1.0 - nT) + nT;
- pHVC->spec.RGBi.green = rgb_saved.green * (1.0 - nT) + nT;
- pHVC->spec.RGBi.blue = rgb_saved.blue * (1.0 - nT) + nT;
- pHVC->format = XcmsRGBiFormat;
- pHVC->pixel = pColor_in_out->pixel;
- /* convert from RGB to HVC */
- if (_XcmsConvertColorsWithWhitePt(&myCCC, pHVC,
- &myCCC.pPerScrnInfo->screenWhitePt, 1, XcmsTekHVCFormat,
- (Bool *) NULL) == XcmsFailure) {
- return(XcmsFailure);
- }
-
- /* make sure to return the input hue */
- pHVC->spec.TekHVC.H = hue;
- }
-
- return(XcmsSuccess);
-}
+
+/*
+ * Code and supporting documentation (c) Copyright 1990 1991 Tektronix, Inc.
+ * All Rights Reserved
+ *
+ * This file is a component of an X Window System-specific implementation
+ * of Xcms based on the TekColor Color Management System. TekColor is a
+ * trademark of Tektronix, Inc. The term "TekHVC" designates a particular
+ * color space that is the subject of U.S. Patent No. 4,985,853 (equivalent
+ * foreign patents pending). Permission is hereby granted to use, copy,
+ * modify, sell, and otherwise distribute this software and its
+ * documentation for any purpose and without fee, provided that:
+ *
+ * 1. This copyright, permission, and disclaimer notice is reproduced in
+ * all copies of this software and any modification thereof and in
+ * supporting documentation;
+ * 2. Any color-handling application which displays TekHVC color
+ * cooordinates identifies these as TekHVC color coordinates in any
+ * interface that displays these coordinates and in any associated
+ * documentation;
+ * 3. The term "TekHVC" is always used, and is only used, in association
+ * with the mathematical derivations of the TekHVC Color Space,
+ * including those provided in this file and any equivalent pathways and
+ * mathematical derivations, regardless of digital (e.g., floating point
+ * or integer) representation.
+ *
+ * Tektronix makes no representation about the suitability of this software
+ * for any purpose. It is provided "as is" and with all faults.
+ *
+ * TEKTRONIX DISCLAIMS ALL WARRANTIES APPLICABLE TO THIS SOFTWARE,
+ * INCLUDING THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+ * PARTICULAR PURPOSE. IN NO EVENT SHALL TEKTRONIX BE LIABLE FOR ANY
+ * SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER
+ * RESULTING FROM LOSS OF USE, DATA, OR PROFITS, WHETHER IN AN ACTION OF
+ * CONTRACT, NEGLIGENCE, OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
+ * CONNECTION WITH THE USE OR THE PERFORMANCE OF THIS SOFTWARE.
+ *
+ * NAME
+ * TekHVCMxVs.c
+ *
+ * DESCRIPTION
+ * Source for the XcmsTekHVCQueryMaxVSamples() gamut boundary
+ * querying routine.
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+#include "Xcmsint.h"
+#include "Cv.h"
+
+
+/************************************************************************
+ * *
+ * PUBLIC ROUTINES *
+ * *
+ ************************************************************************/
+
+/*
+ * NAME
+ * XcmsTekHVCQueryMaxVSamples - Compute a set of value/chroma
+ * pairs.
+ *
+ * SYNOPSIS
+ */
+Status
+XcmsTekHVCQueryMaxVSamples(
+ XcmsCCC ccc,
+ XcmsFloat hue,
+ XcmsColor *pColor_in_out,
+ unsigned int nSamples)
+
+/*
+ * DESCRIPTION
+ * Return a set of values and chromas for the input Hue.
+ * This routine will take any color as input.
+ * It returns TekHVC colors.
+ *
+ * Since this routine works with the value within
+ * pColor_in_out intermediate results may be returned
+ * even though it may be invalid.
+ *
+ * ASSUMPTIONS
+ * This routine assumes that the white point associated with
+ * the color specification is the Screen White Point. The
+ * Screen White Point will also be associated with the
+ * returned color specification.
+ *
+ * RETURNS
+ * XcmsFailure - Failure
+ * XcmsSuccess - Succeeded
+ *
+ */
+{
+ XcmsCCCRec myCCC;
+ XcmsColor *pHVC;
+ XcmsRGBi rgb_saved;
+ unsigned short nI;
+ XcmsFloat nT;
+
+ /*
+ * Check Arguments
+ */
+ if (ccc == NULL || pColor_in_out == NULL || nSamples == 0) {
+ return(XcmsFailure);
+ }
+
+ /*
+ * Insure TekHVC installed
+ */
+ if (XcmsAddColorSpace(&XcmsTekHVCColorSpace) == XcmsFailure) {
+ return(XcmsFailure);
+ }
+
+ /* setup the CCC to use for the conversions. */
+ memcpy ((char *) &myCCC, (char *) ccc, sizeof(XcmsCCCRec));
+ myCCC.clientWhitePt.format = XcmsUndefinedFormat;
+ myCCC.gamutCompProc = (XcmsCompressionProc) NULL;
+
+ /* Step 1: compute the maximum value and chroma for this hue. */
+
+
+ /* save the Hue for use later. */
+ while (hue < 0.0) {
+ hue += 360.0;
+ }
+ while (hue > 360.0) {
+ hue -= 360.0;
+ }
+ pColor_in_out->spec.TekHVC.H = hue;
+ pColor_in_out->format = XcmsTekHVCFormat;
+
+ /* Get the maximum value and chroma point for this hue */
+ if (_XcmsTekHVCQueryMaxVCRGB(&myCCC, pColor_in_out->spec.TekHVC.H,
+ pColor_in_out, (XcmsRGBi *)&rgb_saved) == XcmsFailure) {
+ return (XcmsFailure);
+ }
+
+ /* Step 2: Convert each of the RGBi's to HVC's */
+ pHVC = pColor_in_out;
+ for (nI = 0; nI < nSamples; nI++, pHVC++) {
+ nT = (XcmsFloat) nI / (XcmsFloat) nSamples;
+ pHVC->spec.RGBi.red = rgb_saved.red * (1.0 - nT) + nT;
+ pHVC->spec.RGBi.green = rgb_saved.green * (1.0 - nT) + nT;
+ pHVC->spec.RGBi.blue = rgb_saved.blue * (1.0 - nT) + nT;
+ pHVC->format = XcmsRGBiFormat;
+ pHVC->pixel = pColor_in_out->pixel;
+ /* convert from RGB to HVC */
+ if (_XcmsConvertColorsWithWhitePt(&myCCC, pHVC,
+ &myCCC.pPerScrnInfo->screenWhitePt, 1, XcmsTekHVCFormat,
+ (Bool *) NULL) == XcmsFailure) {
+ return(XcmsFailure);
+ }
+
+ /* make sure to return the input hue */
+ pHVC->spec.TekHVC.H = hue;
+ }
+
+ return(XcmsSuccess);
+}
diff --git a/libX11/src/xcms/HVCWpAj.c b/libX11/src/xcms/HVCWpAj.c
index d77b2b0ef..dcefe7535 100644
--- a/libX11/src/xcms/HVCWpAj.c
+++ b/libX11/src/xcms/HVCWpAj.c
@@ -1,114 +1,114 @@
-
-/*
- * Code and supporting documentation (c) Copyright 1990 1991 Tektronix, Inc.
- * All Rights Reserved
- *
- * This file is a component of an X Window System-specific implementation
- * of Xcms based on the TekColor Color Management System. TekColor is a
- * trademark of Tektronix, Inc. The term "TekHVC" designates a particular
- * color space that is the subject of U.S. Patent No. 4,985,853 (equivalent
- * foreign patents pending). Permission is hereby granted to use, copy,
- * modify, sell, and otherwise distribute this software and its
- * documentation for any purpose and without fee, provided that:
- *
- * 1. This copyright, permission, and disclaimer notice is reproduced in
- * all copies of this software and any modification thereof and in
- * supporting documentation;
- * 2. Any color-handling application which displays TekHVC color
- * cooordinates identifies these as TekHVC color coordinates in any
- * interface that displays these coordinates and in any associated
- * documentation;
- * 3. The term "TekHVC" is always used, and is only used, in association
- * with the mathematical derivations of the TekHVC Color Space,
- * including those provided in this file and any equivalent pathways and
- * mathematical derivations, regardless of digital (e.g., floating point
- * or integer) representation.
- *
- * Tektronix makes no representation about the suitability of this software
- * for any purpose. It is provided "as is" and with all faults.
- *
- * TEKTRONIX DISCLAIMS ALL WARRANTIES APPLICABLE TO THIS SOFTWARE,
- * INCLUDING THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE. IN NO EVENT SHALL TEKTRONIX BE LIABLE FOR ANY
- * SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER
- * RESULTING FROM LOSS OF USE, DATA, OR PROFITS, WHETHER IN AN ACTION OF
- * CONTRACT, NEGLIGENCE, OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
- * CONNECTION WITH THE USE OR THE PERFORMANCE OF THIS SOFTWARE.
- *
- * DESCRIPTION
- * TekHVCWpAj.c
- *
- * DESCRIPTION
- * This file contains routine(s) that support white point
- * adjustment of color specifications in the TekHVC color
- * space.
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-#include "Xcmsint.h"
-#include "Cv.h"
-
-
-/************************************************************************
- * *
- * PUBLIC ROUTINES *
- * *
- ************************************************************************/
-
-/*
- * NAME
- * XcmsTekHVCWhiteShiftColors
- *
- * SYNOPSIS
- */
-Status
-XcmsTekHVCWhiteShiftColors(
- XcmsCCC ccc,
- XcmsColor *pWhitePtFrom,
- XcmsColor *pWhitePtTo,
- XcmsColorFormat destSpecFmt,
- XcmsColor *pColors_in_out,
- unsigned int nColors,
- Bool *pCompressed)
-/*
- * DESCRIPTION
- * Convert color specifications in an array of XcmsColor structures
- * for differences in white points.
- *
- * RETURNS
- * XcmsFailure if failed,
- * XcmsSuccess if succeeded without gamut compression,
- * XcmsSuccessWithCompression if succeeded with
- * gamut compression.
- */
-{
- if (pWhitePtFrom == NULL || pWhitePtTo == NULL || pColors_in_out == NULL) {
- return(XcmsFailure);
- }
-
- /*
- * Insure TekHVC installed
- */
- if (XcmsAddColorSpace(&XcmsTekHVCColorSpace) == XcmsFailure) {
- return(XcmsFailure);
- }
-
- /*
- * Convert to TekHVC using pWhitePtFrom
- * We can ignore return value for compression because we are converting
- * to XcmsTekHVCFormat which is device-independent, not device-dependent.
- */
- if (_XcmsConvertColorsWithWhitePt(ccc, pColors_in_out, pWhitePtFrom,
- nColors, XcmsTekHVCFormat, pCompressed) == XcmsFailure) {
- return(XcmsFailure);
- }
-
- /*
- * Convert from TekHVC to destSpecFmt using pWhitePtTo
- */
- return(_XcmsConvertColorsWithWhitePt(ccc, pColors_in_out, pWhitePtTo,
- nColors, destSpecFmt, pCompressed));
-}
+
+/*
+ * Code and supporting documentation (c) Copyright 1990 1991 Tektronix, Inc.
+ * All Rights Reserved
+ *
+ * This file is a component of an X Window System-specific implementation
+ * of Xcms based on the TekColor Color Management System. TekColor is a
+ * trademark of Tektronix, Inc. The term "TekHVC" designates a particular
+ * color space that is the subject of U.S. Patent No. 4,985,853 (equivalent
+ * foreign patents pending). Permission is hereby granted to use, copy,
+ * modify, sell, and otherwise distribute this software and its
+ * documentation for any purpose and without fee, provided that:
+ *
+ * 1. This copyright, permission, and disclaimer notice is reproduced in
+ * all copies of this software and any modification thereof and in
+ * supporting documentation;
+ * 2. Any color-handling application which displays TekHVC color
+ * cooordinates identifies these as TekHVC color coordinates in any
+ * interface that displays these coordinates and in any associated
+ * documentation;
+ * 3. The term "TekHVC" is always used, and is only used, in association
+ * with the mathematical derivations of the TekHVC Color Space,
+ * including those provided in this file and any equivalent pathways and
+ * mathematical derivations, regardless of digital (e.g., floating point
+ * or integer) representation.
+ *
+ * Tektronix makes no representation about the suitability of this software
+ * for any purpose. It is provided "as is" and with all faults.
+ *
+ * TEKTRONIX DISCLAIMS ALL WARRANTIES APPLICABLE TO THIS SOFTWARE,
+ * INCLUDING THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+ * PARTICULAR PURPOSE. IN NO EVENT SHALL TEKTRONIX BE LIABLE FOR ANY
+ * SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER
+ * RESULTING FROM LOSS OF USE, DATA, OR PROFITS, WHETHER IN AN ACTION OF
+ * CONTRACT, NEGLIGENCE, OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
+ * CONNECTION WITH THE USE OR THE PERFORMANCE OF THIS SOFTWARE.
+ *
+ * DESCRIPTION
+ * TekHVCWpAj.c
+ *
+ * DESCRIPTION
+ * This file contains routine(s) that support white point
+ * adjustment of color specifications in the TekHVC color
+ * space.
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+#include "Xcmsint.h"
+#include "Cv.h"
+
+
+/************************************************************************
+ * *
+ * PUBLIC ROUTINES *
+ * *
+ ************************************************************************/
+
+/*
+ * NAME
+ * XcmsTekHVCWhiteShiftColors
+ *
+ * SYNOPSIS
+ */
+Status
+XcmsTekHVCWhiteShiftColors(
+ XcmsCCC ccc,
+ XcmsColor *pWhitePtFrom,
+ XcmsColor *pWhitePtTo,
+ XcmsColorFormat destSpecFmt,
+ XcmsColor *pColors_in_out,
+ unsigned int nColors,
+ Bool *pCompressed)
+/*
+ * DESCRIPTION
+ * Convert color specifications in an array of XcmsColor structures
+ * for differences in white points.
+ *
+ * RETURNS
+ * XcmsFailure if failed,
+ * XcmsSuccess if succeeded without gamut compression,
+ * XcmsSuccessWithCompression if succeeded with
+ * gamut compression.
+ */
+{
+ if (pWhitePtFrom == NULL || pWhitePtTo == NULL || pColors_in_out == NULL) {
+ return(XcmsFailure);
+ }
+
+ /*
+ * Insure TekHVC installed
+ */
+ if (XcmsAddColorSpace(&XcmsTekHVCColorSpace) == XcmsFailure) {
+ return(XcmsFailure);
+ }
+
+ /*
+ * Convert to TekHVC using pWhitePtFrom
+ * We can ignore return value for compression because we are converting
+ * to XcmsTekHVCFormat which is device-independent, not device-dependent.
+ */
+ if (_XcmsConvertColorsWithWhitePt(ccc, pColors_in_out, pWhitePtFrom,
+ nColors, XcmsTekHVCFormat, pCompressed) == XcmsFailure) {
+ return(XcmsFailure);
+ }
+
+ /*
+ * Convert from TekHVC to destSpecFmt using pWhitePtTo
+ */
+ return(_XcmsConvertColorsWithWhitePt(ccc, pColors_in_out, pWhitePtTo,
+ nColors, destSpecFmt, pCompressed));
+}
diff --git a/libX11/src/xcms/IdOfPr.c b/libX11/src/xcms/IdOfPr.c
index 9da2d3bd2..3a92e0a11 100644
--- a/libX11/src/xcms/IdOfPr.c
+++ b/libX11/src/xcms/IdOfPr.c
@@ -1,106 +1,106 @@
-
-/*
- * Code and supporting documentation (c) Copyright 1990 1991 Tektronix, Inc.
- * All Rights Reserved
- *
- * This file is a component of an X Window System-specific implementation
- * of Xcms based on the TekColor Color Management System. Permission is
- * hereby granted to use, copy, modify, sell, and otherwise distribute this
- * software and its documentation for any purpose and without fee, provided
- * that this copyright, permission, and disclaimer notice is reproduced in
- * all copies of this software and in supporting documentation. TekColor
- * is a trademark of Tektronix, Inc.
- *
- * Tektronix makes no representation about the suitability of this software
- * for any purpose. It is provided "as is" and with all faults.
- *
- * TEKTRONIX DISCLAIMS ALL WARRANTIES APPLICABLE TO THIS SOFTWARE,
- * INCLUDING THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE. IN NO EVENT SHALL TEKTRONIX BE LIABLE FOR ANY
- * SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER
- * RESULTING FROM LOSS OF USE, DATA, OR PROFITS, WHETHER IN AN ACTION OF
- * CONTRACT, NEGLIGENCE, OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
- * CONNECTION WITH THE USE OR THE PERFORMANCE OF THIS SOFTWARE.
- *
- *
- * NAME
- * XcmsIdOfPr.c
- *
- * DESCRIPTION
- * Source for XcmsFormatOfPrefix()
- *
- *
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-#include "Xcmsint.h"
-#include "Cv.h"
-
-
-/*
- * NAME
- * XcmsFormatOfPrefix
- *
- * SYNOPSIS
- */
-XcmsColorFormat
-XcmsFormatOfPrefix(char *prefix)
-/*
- * DESCRIPTION
- * Returns the Color Space ID for the specified prefix
- * if the color space is found in the Color Conversion
- * Context.
- *
- * RETURNS
- * Color Space ID if found; zero otherwise.
- */
-{
- XcmsColorSpace **papColorSpaces;
- char string_buf[64];
- char *string_lowered;
- int len;
-
- /*
- * While copying prefix to string_lowered, convert to lowercase
- */
- if ((len = strlen(prefix)) >= sizeof(string_buf)) {
- string_lowered = (char *) Xmalloc(len+1);
- } else {
- string_lowered = string_buf;
- }
- _XcmsCopyISOLatin1Lowered(string_lowered, prefix);
-
- /*
- * First try Device-Independent color spaces
- */
- papColorSpaces = _XcmsDIColorSpaces;
- if (papColorSpaces != NULL) {
- while (*papColorSpaces != NULL) {
- if (strcmp((*papColorSpaces)->prefix, string_lowered) == 0) {
- if (len >= sizeof(string_buf)) Xfree(string_lowered);
- return((*papColorSpaces)->id);
- }
- papColorSpaces++;
- }
- }
-
- /*
- * Next try Device-Dependent color spaces
- */
- papColorSpaces = _XcmsDDColorSpaces;
- if (papColorSpaces != NULL) {
- while (*papColorSpaces != NULL) {
- if (strcmp((*papColorSpaces)->prefix, string_lowered) == 0) {
- if (len >= sizeof(string_buf)) Xfree(string_lowered);
- return((*papColorSpaces)->id);
- }
- papColorSpaces++;
- }
- }
-
- if (len >= sizeof(string_buf)) Xfree(string_lowered);
- return(XcmsUndefinedFormat);
-}
+
+/*
+ * Code and supporting documentation (c) Copyright 1990 1991 Tektronix, Inc.
+ * All Rights Reserved
+ *
+ * This file is a component of an X Window System-specific implementation
+ * of Xcms based on the TekColor Color Management System. Permission is
+ * hereby granted to use, copy, modify, sell, and otherwise distribute this
+ * software and its documentation for any purpose and without fee, provided
+ * that this copyright, permission, and disclaimer notice is reproduced in
+ * all copies of this software and in supporting documentation. TekColor
+ * is a trademark of Tektronix, Inc.
+ *
+ * Tektronix makes no representation about the suitability of this software
+ * for any purpose. It is provided "as is" and with all faults.
+ *
+ * TEKTRONIX DISCLAIMS ALL WARRANTIES APPLICABLE TO THIS SOFTWARE,
+ * INCLUDING THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+ * PARTICULAR PURPOSE. IN NO EVENT SHALL TEKTRONIX BE LIABLE FOR ANY
+ * SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER
+ * RESULTING FROM LOSS OF USE, DATA, OR PROFITS, WHETHER IN AN ACTION OF
+ * CONTRACT, NEGLIGENCE, OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
+ * CONNECTION WITH THE USE OR THE PERFORMANCE OF THIS SOFTWARE.
+ *
+ *
+ * NAME
+ * XcmsIdOfPr.c
+ *
+ * DESCRIPTION
+ * Source for XcmsFormatOfPrefix()
+ *
+ *
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+#include "Xcmsint.h"
+#include "Cv.h"
+
+
+/*
+ * NAME
+ * XcmsFormatOfPrefix
+ *
+ * SYNOPSIS
+ */
+XcmsColorFormat
+XcmsFormatOfPrefix(char *prefix)
+/*
+ * DESCRIPTION
+ * Returns the Color Space ID for the specified prefix
+ * if the color space is found in the Color Conversion
+ * Context.
+ *
+ * RETURNS
+ * Color Space ID if found; zero otherwise.
+ */
+{
+ XcmsColorSpace **papColorSpaces;
+ char string_buf[64];
+ char *string_lowered;
+ int len;
+
+ /*
+ * While copying prefix to string_lowered, convert to lowercase
+ */
+ if ((len = strlen(prefix)) >= sizeof(string_buf)) {
+ string_lowered = (char *) Xmalloc(len+1);
+ } else {
+ string_lowered = string_buf;
+ }
+ _XcmsCopyISOLatin1Lowered(string_lowered, prefix);
+
+ /*
+ * First try Device-Independent color spaces
+ */
+ papColorSpaces = _XcmsDIColorSpaces;
+ if (papColorSpaces != NULL) {
+ while (*papColorSpaces != NULL) {
+ if (strcmp((*papColorSpaces)->prefix, string_lowered) == 0) {
+ if (len >= sizeof(string_buf)) Xfree(string_lowered);
+ return((*papColorSpaces)->id);
+ }
+ papColorSpaces++;
+ }
+ }
+
+ /*
+ * Next try Device-Dependent color spaces
+ */
+ papColorSpaces = _XcmsDDColorSpaces;
+ if (papColorSpaces != NULL) {
+ while (*papColorSpaces != NULL) {
+ if (strcmp((*papColorSpaces)->prefix, string_lowered) == 0) {
+ if (len >= sizeof(string_buf)) Xfree(string_lowered);
+ return((*papColorSpaces)->id);
+ }
+ papColorSpaces++;
+ }
+ }
+
+ if (len >= sizeof(string_buf)) Xfree(string_lowered);
+ return(XcmsUndefinedFormat);
+}
diff --git a/libX11/src/xcms/Lab.c b/libX11/src/xcms/Lab.c
index 1101754d4..02c8d3b7c 100644
--- a/libX11/src/xcms/Lab.c
+++ b/libX11/src/xcms/Lab.c
@@ -1,431 +1,431 @@
-
-/*
- * Code and supporting documentation (c) Copyright 1990 1991 Tektronix, Inc.
- * All Rights Reserved
- *
- * This file is a component of an X Window System-specific implementation
- * of XCMS based on the TekColor Color Management System. Permission is
- * hereby granted to use, copy, modify, sell, and otherwise distribute this
- * software and its documentation for any purpose and without fee, provided
- * that this copyright, permission, and disclaimer notice is reproduced in
- * all copies of this software and in supporting documentation. TekColor
- * is a trademark of Tektronix, Inc.
- *
- * Tektronix makes no representation about the suitability of this software
- * for any purpose. It is provided "as is" and with all faults.
- *
- * TEKTRONIX DISCLAIMS ALL WARRANTIES APPLICABLE TO THIS SOFTWARE,
- * INCLUDING THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE. IN NO EVENT SHALL TEKTRONIX BE LIABLE FOR ANY
- * SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER
- * RESULTING FROM LOSS OF USE, DATA, OR PROFITS, WHETHER IN AN ACTION OF
- * CONTRACT, NEGLIGENCE, OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
- * CONNECTION WITH THE USE OR THE PERFORMANCE OF THIS SOFTWARE.
- *
- *
- * NAME
- * CIELab.c
- *
- * DESCRIPTION
- * This file contains routines that support the CIE L*a*b*
- * color space to include conversions to and from the CIE
- * XYZ space. These conversions are from Principles of
- * Color Technology Second Edition, Fred W. Billmeyer, Jr.
- * and Max Saltzman, John Wiley & Sons, Inc., 1981.
- *
- * Note that the range for L* is 0 to 1.
- */
-
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include <X11/Xos.h>
-#include <stdio.h> /* sscanf */
-#include "Xlibint.h"
-#include "Xcmsint.h"
-#include "Cv.h"
-
-/*
- * DEFINES
- * Internal definitions that need NOT be exported to any package
- * or program using this package.
- */
-#ifdef DBL_EPSILON
-# define XMY_DBL_EPSILON DBL_EPSILON
-#else
-# define XMY_DBL_EPSILON 0.00001
-#endif
-#define DIV16BY116 0.137931
-
-/*
- * FORWARD DECLARATIONS
- */
-
-static int CIELab_ParseString(register char *spec, XcmsColor *pColor);
-static Status XcmsCIELab_ValidSpec(XcmsColor *pColor);
-
-
-/*
- * LOCAL VARIABLES
- */
-
-
- /*
- * NULL terminated list of functions applied to get from CIELab to CIEXYZ
- */
-static XcmsConversionProc Fl_CIELab_to_CIEXYZ[] = {
- XcmsCIELabToCIEXYZ,
- NULL
-};
-
- /*
- * NULL terminated list of functions applied to get from CIEXYZ to CIELab
- */
-static XcmsConversionProc Fl_CIEXYZ_to_CIELab[] = {
- XcmsCIEXYZToCIELab,
- NULL
-};
-
-
-/*
- * GLOBALS
- */
- /*
- * CIE Lab Color Space
- */
-XcmsColorSpace XcmsCIELabColorSpace =
- {
- _XcmsCIELab_prefix, /* prefix */
- XcmsCIELabFormat, /* id */
- CIELab_ParseString, /* parseString */
- Fl_CIELab_to_CIEXYZ, /* to_CIEXYZ */
- Fl_CIEXYZ_to_CIELab, /* from_CIEXYZ */
- 1
- };
-
-
-/************************************************************************
- * *
- * PRIVATE ROUTINES *
- * *
- ************************************************************************/
-
-/*
- * NAME
- * CIELab_ParseString
- *
- * SYNOPSIS
- */
-static int
-CIELab_ParseString(
- register char *spec,
- XcmsColor *pColor)
-/*
- * DESCRIPTION
- * This routines takes a string and attempts to convert
- * it into a XcmsColor structure with XcmsCIELabFormat.
- * The assumed CIELab string syntax is:
- * CIELab:<L>/<a>/<b>
- * Where L, a, and b are in string input format for floats
- * consisting of:
- * a. an optional sign
- * b. a string of numbers possibly containing a decimal point,
- * c. an optional exponent field containing an 'E' or 'e'
- * followed by a possibly signed integer string.
- *
- * RETURNS
- * 0 if failed, non-zero otherwise.
- */
-{
- int n;
- char *pchar;
-
- if ((pchar = strchr(spec, ':')) == NULL) {
- return(XcmsFailure);
- }
- n = (int)(pchar - spec);
-
- /*
- * Check for proper prefix.
- */
- if (strncmp(spec, _XcmsCIELab_prefix, n) != 0) {
- return(XcmsFailure);
- }
-
- /*
- * Attempt to parse the value portion.
- */
- if (sscanf(spec + n + 1, "%lf/%lf/%lf",
- &pColor->spec.CIELab.L_star,
- &pColor->spec.CIELab.a_star,
- &pColor->spec.CIELab.b_star) != 3) {
- char *s; /* Maybe failed due to locale */
- int f;
- if ((s = strdup(spec))) {
- for (f = 0; s[f]; ++f)
- if (s[f] == '.')
- s[f] = ',';
- else if (s[f] == ',')
- s[f] = '.';
- if (sscanf(s + n + 1, "%lf/%lf/%lf",
- &pColor->spec.CIELab.L_star,
- &pColor->spec.CIELab.a_star,
- &pColor->spec.CIELab.b_star) != 3) {
- free(s);
- return(XcmsFailure);
- }
- free(s);
- } else
- return(XcmsFailure);
- }
- pColor->format = XcmsCIELabFormat;
- pColor->pixel = 0;
-
- return(XcmsCIELab_ValidSpec(pColor));
-}
-
-
-
-/************************************************************************
- * *
- * PUBLIC ROUTINES *
- * *
- ************************************************************************/
-
-/*
- * NAME
- * XcmsCIELab_ValidSpec
- *
- * SYNOPSIS
- */
-static Status
-XcmsCIELab_ValidSpec(
- XcmsColor *pColor)
-/*
- * DESCRIPTION
- * Checks if color specification valid for CIE L*a*b*.
- *
- * RETURNS
- * XcmsFailure if invalid,
- * XcmsSuccess if valid.
- *
- */
-{
- if (pColor->format != XcmsCIELabFormat
- ||
- (pColor->spec.CIELab.L_star < 0.0 - XMY_DBL_EPSILON)
- ||
- (pColor->spec.CIELab.L_star > 100.0 + XMY_DBL_EPSILON)) {
- return(XcmsFailure);
- }
- return(XcmsSuccess);
-}
-
-
-/*
- * NAME
- * XcmsCIELabToCIEXYZ - convert CIELab to CIEXYZ
- *
- * SYNOPSIS
- */
-Status
-XcmsCIELabToCIEXYZ(
- XcmsCCC ccc,
- XcmsColor *pLab_WhitePt,
- XcmsColor *pColors_in_out,
- unsigned int nColors)
-/*
- * DESCRIPTION
- * Converts color specifications in an array of XcmsColor
- * structures from CIELab format to CIEXYZ format.
- *
- * WARNING: This routine assumes that Yn = 1.0;
- *
- * RETURNS
- * XcmsFailure if failed,
- * XcmsSuccess if succeeded.
- *
- */
-{
- XcmsCIEXYZ XYZ_return;
- XcmsFloat tmpFloat, tmpL;
- XcmsColor whitePt;
- int i;
- XcmsColor *pColor = pColors_in_out;
-
- /*
- * Check arguments
- */
- if (pLab_WhitePt == NULL || pColors_in_out == NULL) {
- return(XcmsFailure);
- }
-
- /*
- * Make sure white point is in CIEXYZ form, if not, convert it.
- */
- if (pLab_WhitePt->format != XcmsCIEXYZFormat) {
- /* Make a copy of the white point because we're going to modify it */
- memcpy((char *)&whitePt, (char *)pLab_WhitePt, sizeof(XcmsColor));
- if (!_XcmsDIConvertColors(ccc, &whitePt,
- (XcmsColor *)NULL, 1, XcmsCIEXYZFormat)) {
- return(XcmsFailure);
- }
- pLab_WhitePt = &whitePt;
- }
-
- /*
- * Make sure it is a white point, i.e., Y == 1.0
- */
- if (pLab_WhitePt->spec.CIEXYZ.Y != 1.0) {
- return (0);
- }
-
- /*
- * Now convert each XcmsColor structure to CIEXYZ form
- */
- for (i = 0; i < nColors; i++, pColor++) {
-
- /* Make sure original format is CIELab */
- if (!XcmsCIELab_ValidSpec(pColor)) {
- return(XcmsFailure);
- }
-
- /* Calculate Y: assume that Yn = 1.0 */
- tmpL = (pColor->spec.CIELab.L_star + 16.0) / 116.0;
- XYZ_return.Y = tmpL * tmpL * tmpL;
-
- if (XYZ_return.Y < 0.008856) {
- /* Calculate Y: assume that Yn = 1.0 */
- tmpL = pColor->spec.CIELab.L_star / 9.03292;
-
- /* Calculate X */
- XYZ_return.X = pLab_WhitePt->spec.CIEXYZ.X *
- ((pColor->spec.CIELab.a_star / 3893.5) + tmpL);
- /* Calculate Y */
- XYZ_return.Y = tmpL;
- /* Calculate Z */
- XYZ_return.Z = pLab_WhitePt->spec.CIEXYZ.Z *
- (tmpL - (pColor->spec.CIELab.b_star / 1557.4));
- } else {
- /* Calculate X */
- tmpFloat = tmpL + (pColor->spec.CIELab.a_star / 5.0);
- XYZ_return.X = pLab_WhitePt->spec.CIEXYZ.X * tmpFloat * tmpFloat * tmpFloat;
-
- /* Calculate Z */
- tmpFloat = tmpL - (pColor->spec.CIELab.b_star / 2.0);
- XYZ_return.Z = pLab_WhitePt->spec.CIEXYZ.Z * tmpFloat * tmpFloat * tmpFloat;
- }
-
- memcpy((char *)&pColor->spec.CIEXYZ, (char *)&XYZ_return,
- sizeof(XcmsCIEXYZ));
- pColor->format = XcmsCIEXYZFormat;
- }
-
- return (1);
-}
-
-
-/*
- * NAME
- * XcmsCIEXYZToCIELab - convert CIEXYZ to CIELab
- *
- * SYNOPSIS
- */
-Status
-XcmsCIEXYZToCIELab(
- XcmsCCC ccc,
- XcmsColor *pLab_WhitePt,
- XcmsColor *pColors_in_out,
- unsigned int nColors)
-/*
- * DESCRIPTION
- * Converts color specifications in an array of XcmsColor
- * structures from CIEXYZ format to CIELab format.
- *
- * WARNING: This routine assumes that Yn = 1.0;
- *
- * RETURNS
- * XcmsFailure if failed,
- * XcmsSuccess if succeeded.
- *
- */
-{
- XcmsCIELab Lab_return;
- XcmsFloat fX_Xn, fY_Yn, fZ_Zn;
- XcmsColor whitePt;
- int i;
- XcmsColor *pColor = pColors_in_out;
-
- /*
- * Check arguments
- */
- if (pLab_WhitePt == NULL || pColors_in_out == NULL) {
- return(XcmsFailure);
- }
-
- /*
- * Make sure white point is in CIEXYZ form, if not, convert it.
- */
- if (pLab_WhitePt->format != XcmsCIEXYZFormat) {
- /* Make a copy of the white point because we're going to modify it */
- memcpy((char *)&whitePt, (char *)pLab_WhitePt, sizeof(XcmsColor));
- if (!_XcmsDIConvertColors(ccc, &whitePt, (XcmsColor *)NULL,
- 1, XcmsCIEXYZFormat)) {
- return(XcmsFailure);
- }
- pLab_WhitePt = &whitePt;
- }
-
- /*
- * Make sure it is a white point, i.e., Y == 1.0
- */
- if (pLab_WhitePt->spec.CIEXYZ.Y != 1.0) {
- return(XcmsFailure);
- }
-
- /*
- * Now convert each XcmsColor structure to CIEXYZ form
- */
- for (i = 0; i < nColors; i++, pColor++) {
-
- /* Make sure original format is CIELab */
- if (!_XcmsCIEXYZ_ValidSpec(pColor)) {
- return(XcmsFailure);
- }
-
- /* Calculate L*: assume Yn = 1.0 */
- if (pColor->spec.CIEXYZ.Y < 0.008856) {
- fY_Yn = (0.07787 * pColor->spec.CIEXYZ.Y) + DIV16BY116;
- /* note fY_Yn used to compute Lab_return.a below */
- Lab_return.L_star = 116.0 * (fY_Yn - DIV16BY116);
- } else {
- fY_Yn = (XcmsFloat)XCMS_CUBEROOT(pColor->spec.CIEXYZ.Y);
- /* note fY_Yn used to compute Lab_return.a_star below */
- Lab_return.L_star = (116.0 * fY_Yn) - 16.0;
- }
-
- /* Calculate f(X/Xn) */
- if ((fX_Xn = pColor->spec.CIEXYZ.X / pLab_WhitePt->spec.CIEXYZ.X) < 0.008856) {
- fX_Xn = (0.07787 * fX_Xn) + DIV16BY116;
- } else {
- fX_Xn = (XcmsFloat) XCMS_CUBEROOT(fX_Xn);
- }
-
- /* Calculate f(Z/Zn) */
- if ((fZ_Zn = pColor->spec.CIEXYZ.Z / pLab_WhitePt->spec.CIEXYZ.Z) < 0.008856) {
- fZ_Zn = (0.07787 * fZ_Zn) + DIV16BY116;
- } else {
- fZ_Zn = (XcmsFloat) XCMS_CUBEROOT(fZ_Zn);
- }
-
- Lab_return.a_star = 5.0 * (fX_Xn - fY_Yn);
- Lab_return.b_star = 2.0 * (fY_Yn - fZ_Zn);
-
- memcpy((char *)&pColor->spec.CIELab, (char *)&Lab_return,
- sizeof(XcmsCIELab));
- pColor->format = XcmsCIELabFormat;
- }
-
- return(XcmsSuccess);
-}
+
+/*
+ * Code and supporting documentation (c) Copyright 1990 1991 Tektronix, Inc.
+ * All Rights Reserved
+ *
+ * This file is a component of an X Window System-specific implementation
+ * of XCMS based on the TekColor Color Management System. Permission is
+ * hereby granted to use, copy, modify, sell, and otherwise distribute this
+ * software and its documentation for any purpose and without fee, provided
+ * that this copyright, permission, and disclaimer notice is reproduced in
+ * all copies of this software and in supporting documentation. TekColor
+ * is a trademark of Tektronix, Inc.
+ *
+ * Tektronix makes no representation about the suitability of this software
+ * for any purpose. It is provided "as is" and with all faults.
+ *
+ * TEKTRONIX DISCLAIMS ALL WARRANTIES APPLICABLE TO THIS SOFTWARE,
+ * INCLUDING THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+ * PARTICULAR PURPOSE. IN NO EVENT SHALL TEKTRONIX BE LIABLE FOR ANY
+ * SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER
+ * RESULTING FROM LOSS OF USE, DATA, OR PROFITS, WHETHER IN AN ACTION OF
+ * CONTRACT, NEGLIGENCE, OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
+ * CONNECTION WITH THE USE OR THE PERFORMANCE OF THIS SOFTWARE.
+ *
+ *
+ * NAME
+ * CIELab.c
+ *
+ * DESCRIPTION
+ * This file contains routines that support the CIE L*a*b*
+ * color space to include conversions to and from the CIE
+ * XYZ space. These conversions are from Principles of
+ * Color Technology Second Edition, Fred W. Billmeyer, Jr.
+ * and Max Saltzman, John Wiley & Sons, Inc., 1981.
+ *
+ * Note that the range for L* is 0 to 1.
+ */
+
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include <X11/Xos.h>
+#include <stdio.h> /* sscanf */
+#include "Xlibint.h"
+#include "Xcmsint.h"
+#include "Cv.h"
+
+/*
+ * DEFINES
+ * Internal definitions that need NOT be exported to any package
+ * or program using this package.
+ */
+#ifdef DBL_EPSILON
+# define XMY_DBL_EPSILON DBL_EPSILON
+#else
+# define XMY_DBL_EPSILON 0.00001
+#endif
+#define DIV16BY116 0.137931
+
+/*
+ * FORWARD DECLARATIONS
+ */
+
+static int CIELab_ParseString(register char *spec, XcmsColor *pColor);
+static Status XcmsCIELab_ValidSpec(XcmsColor *pColor);
+
+
+/*
+ * LOCAL VARIABLES
+ */
+
+
+ /*
+ * NULL terminated list of functions applied to get from CIELab to CIEXYZ
+ */
+static XcmsConversionProc Fl_CIELab_to_CIEXYZ[] = {
+ XcmsCIELabToCIEXYZ,
+ NULL
+};
+
+ /*
+ * NULL terminated list of functions applied to get from CIEXYZ to CIELab
+ */
+static XcmsConversionProc Fl_CIEXYZ_to_CIELab[] = {
+ XcmsCIEXYZToCIELab,
+ NULL
+};
+
+
+/*
+ * GLOBALS
+ */
+ /*
+ * CIE Lab Color Space
+ */
+XcmsColorSpace XcmsCIELabColorSpace =
+ {
+ _XcmsCIELab_prefix, /* prefix */
+ XcmsCIELabFormat, /* id */
+ CIELab_ParseString, /* parseString */
+ Fl_CIELab_to_CIEXYZ, /* to_CIEXYZ */
+ Fl_CIEXYZ_to_CIELab, /* from_CIEXYZ */
+ 1
+ };
+
+
+/************************************************************************
+ * *
+ * PRIVATE ROUTINES *
+ * *
+ ************************************************************************/
+
+/*
+ * NAME
+ * CIELab_ParseString
+ *
+ * SYNOPSIS
+ */
+static int
+CIELab_ParseString(
+ register char *spec,
+ XcmsColor *pColor)
+/*
+ * DESCRIPTION
+ * This routines takes a string and attempts to convert
+ * it into a XcmsColor structure with XcmsCIELabFormat.
+ * The assumed CIELab string syntax is:
+ * CIELab:<L>/<a>/<b>
+ * Where L, a, and b are in string input format for floats
+ * consisting of:
+ * a. an optional sign
+ * b. a string of numbers possibly containing a decimal point,
+ * c. an optional exponent field containing an 'E' or 'e'
+ * followed by a possibly signed integer string.
+ *
+ * RETURNS
+ * 0 if failed, non-zero otherwise.
+ */
+{
+ int n;
+ char *pchar;
+
+ if ((pchar = strchr(spec, ':')) == NULL) {
+ return(XcmsFailure);
+ }
+ n = (int)(pchar - spec);
+
+ /*
+ * Check for proper prefix.
+ */
+ if (strncmp(spec, _XcmsCIELab_prefix, n) != 0) {
+ return(XcmsFailure);
+ }
+
+ /*
+ * Attempt to parse the value portion.
+ */
+ if (sscanf(spec + n + 1, "%lf/%lf/%lf",
+ &pColor->spec.CIELab.L_star,
+ &pColor->spec.CIELab.a_star,
+ &pColor->spec.CIELab.b_star) != 3) {
+ char *s; /* Maybe failed due to locale */
+ int f;
+ if ((s = strdup(spec))) {
+ for (f = 0; s[f]; ++f)
+ if (s[f] == '.')
+ s[f] = ',';
+ else if (s[f] == ',')
+ s[f] = '.';
+ if (sscanf(s + n + 1, "%lf/%lf/%lf",
+ &pColor->spec.CIELab.L_star,
+ &pColor->spec.CIELab.a_star,
+ &pColor->spec.CIELab.b_star) != 3) {
+ free(s);
+ return(XcmsFailure);
+ }
+ free(s);
+ } else
+ return(XcmsFailure);
+ }
+ pColor->format = XcmsCIELabFormat;
+ pColor->pixel = 0;
+
+ return(XcmsCIELab_ValidSpec(pColor));
+}
+
+
+
+/************************************************************************
+ * *
+ * PUBLIC ROUTINES *
+ * *
+ ************************************************************************/
+
+/*
+ * NAME
+ * XcmsCIELab_ValidSpec
+ *
+ * SYNOPSIS
+ */
+static Status
+XcmsCIELab_ValidSpec(
+ XcmsColor *pColor)
+/*
+ * DESCRIPTION
+ * Checks if color specification valid for CIE L*a*b*.
+ *
+ * RETURNS
+ * XcmsFailure if invalid,
+ * XcmsSuccess if valid.
+ *
+ */
+{
+ if (pColor->format != XcmsCIELabFormat
+ ||
+ (pColor->spec.CIELab.L_star < 0.0 - XMY_DBL_EPSILON)
+ ||
+ (pColor->spec.CIELab.L_star > 100.0 + XMY_DBL_EPSILON)) {
+ return(XcmsFailure);
+ }
+ return(XcmsSuccess);
+}
+
+
+/*
+ * NAME
+ * XcmsCIELabToCIEXYZ - convert CIELab to CIEXYZ
+ *
+ * SYNOPSIS
+ */
+Status
+XcmsCIELabToCIEXYZ(
+ XcmsCCC ccc,
+ XcmsColor *pLab_WhitePt,
+ XcmsColor *pColors_in_out,
+ unsigned int nColors)
+/*
+ * DESCRIPTION
+ * Converts color specifications in an array of XcmsColor
+ * structures from CIELab format to CIEXYZ format.
+ *
+ * WARNING: This routine assumes that Yn = 1.0;
+ *
+ * RETURNS
+ * XcmsFailure if failed,
+ * XcmsSuccess if succeeded.
+ *
+ */
+{
+ XcmsCIEXYZ XYZ_return;
+ XcmsFloat tmpFloat, tmpL;
+ XcmsColor whitePt;
+ int i;
+ XcmsColor *pColor = pColors_in_out;
+
+ /*
+ * Check arguments
+ */
+ if (pLab_WhitePt == NULL || pColors_in_out == NULL) {
+ return(XcmsFailure);
+ }
+
+ /*
+ * Make sure white point is in CIEXYZ form, if not, convert it.
+ */
+ if (pLab_WhitePt->format != XcmsCIEXYZFormat) {
+ /* Make a copy of the white point because we're going to modify it */
+ memcpy((char *)&whitePt, (char *)pLab_WhitePt, sizeof(XcmsColor));
+ if (!_XcmsDIConvertColors(ccc, &whitePt,
+ (XcmsColor *)NULL, 1, XcmsCIEXYZFormat)) {
+ return(XcmsFailure);
+ }
+ pLab_WhitePt = &whitePt;
+ }
+
+ /*
+ * Make sure it is a white point, i.e., Y == 1.0
+ */
+ if (pLab_WhitePt->spec.CIEXYZ.Y != 1.0) {
+ return (0);
+ }
+
+ /*
+ * Now convert each XcmsColor structure to CIEXYZ form
+ */
+ for (i = 0; i < nColors; i++, pColor++) {
+
+ /* Make sure original format is CIELab */
+ if (!XcmsCIELab_ValidSpec(pColor)) {
+ return(XcmsFailure);
+ }
+
+ /* Calculate Y: assume that Yn = 1.0 */
+ tmpL = (pColor->spec.CIELab.L_star + 16.0) / 116.0;
+ XYZ_return.Y = tmpL * tmpL * tmpL;
+
+ if (XYZ_return.Y < 0.008856) {
+ /* Calculate Y: assume that Yn = 1.0 */
+ tmpL = pColor->spec.CIELab.L_star / 9.03292;
+
+ /* Calculate X */
+ XYZ_return.X = pLab_WhitePt->spec.CIEXYZ.X *
+ ((pColor->spec.CIELab.a_star / 3893.5) + tmpL);
+ /* Calculate Y */
+ XYZ_return.Y = tmpL;
+ /* Calculate Z */
+ XYZ_return.Z = pLab_WhitePt->spec.CIEXYZ.Z *
+ (tmpL - (pColor->spec.CIELab.b_star / 1557.4));
+ } else {
+ /* Calculate X */
+ tmpFloat = tmpL + (pColor->spec.CIELab.a_star / 5.0);
+ XYZ_return.X = pLab_WhitePt->spec.CIEXYZ.X * tmpFloat * tmpFloat * tmpFloat;
+
+ /* Calculate Z */
+ tmpFloat = tmpL - (pColor->spec.CIELab.b_star / 2.0);
+ XYZ_return.Z = pLab_WhitePt->spec.CIEXYZ.Z * tmpFloat * tmpFloat * tmpFloat;
+ }
+
+ memcpy((char *)&pColor->spec.CIEXYZ, (char *)&XYZ_return,
+ sizeof(XcmsCIEXYZ));
+ pColor->format = XcmsCIEXYZFormat;
+ }
+
+ return (1);
+}
+
+
+/*
+ * NAME
+ * XcmsCIEXYZToCIELab - convert CIEXYZ to CIELab
+ *
+ * SYNOPSIS
+ */
+Status
+XcmsCIEXYZToCIELab(
+ XcmsCCC ccc,
+ XcmsColor *pLab_WhitePt,
+ XcmsColor *pColors_in_out,
+ unsigned int nColors)
+/*
+ * DESCRIPTION
+ * Converts color specifications in an array of XcmsColor
+ * structures from CIEXYZ format to CIELab format.
+ *
+ * WARNING: This routine assumes that Yn = 1.0;
+ *
+ * RETURNS
+ * XcmsFailure if failed,
+ * XcmsSuccess if succeeded.
+ *
+ */
+{
+ XcmsCIELab Lab_return;
+ XcmsFloat fX_Xn, fY_Yn, fZ_Zn;
+ XcmsColor whitePt;
+ int i;
+ XcmsColor *pColor = pColors_in_out;
+
+ /*
+ * Check arguments
+ */
+ if (pLab_WhitePt == NULL || pColors_in_out == NULL) {
+ return(XcmsFailure);
+ }
+
+ /*
+ * Make sure white point is in CIEXYZ form, if not, convert it.
+ */
+ if (pLab_WhitePt->format != XcmsCIEXYZFormat) {
+ /* Make a copy of the white point because we're going to modify it */
+ memcpy((char *)&whitePt, (char *)pLab_WhitePt, sizeof(XcmsColor));
+ if (!_XcmsDIConvertColors(ccc, &whitePt, (XcmsColor *)NULL,
+ 1, XcmsCIEXYZFormat)) {
+ return(XcmsFailure);
+ }
+ pLab_WhitePt = &whitePt;
+ }
+
+ /*
+ * Make sure it is a white point, i.e., Y == 1.0
+ */
+ if (pLab_WhitePt->spec.CIEXYZ.Y != 1.0) {
+ return(XcmsFailure);
+ }
+
+ /*
+ * Now convert each XcmsColor structure to CIEXYZ form
+ */
+ for (i = 0; i < nColors; i++, pColor++) {
+
+ /* Make sure original format is CIELab */
+ if (!_XcmsCIEXYZ_ValidSpec(pColor)) {
+ return(XcmsFailure);
+ }
+
+ /* Calculate L*: assume Yn = 1.0 */
+ if (pColor->spec.CIEXYZ.Y < 0.008856) {
+ fY_Yn = (0.07787 * pColor->spec.CIEXYZ.Y) + DIV16BY116;
+ /* note fY_Yn used to compute Lab_return.a below */
+ Lab_return.L_star = 116.0 * (fY_Yn - DIV16BY116);
+ } else {
+ fY_Yn = (XcmsFloat)XCMS_CUBEROOT(pColor->spec.CIEXYZ.Y);
+ /* note fY_Yn used to compute Lab_return.a_star below */
+ Lab_return.L_star = (116.0 * fY_Yn) - 16.0;
+ }
+
+ /* Calculate f(X/Xn) */
+ if ((fX_Xn = pColor->spec.CIEXYZ.X / pLab_WhitePt->spec.CIEXYZ.X) < 0.008856) {
+ fX_Xn = (0.07787 * fX_Xn) + DIV16BY116;
+ } else {
+ fX_Xn = (XcmsFloat) XCMS_CUBEROOT(fX_Xn);
+ }
+
+ /* Calculate f(Z/Zn) */
+ if ((fZ_Zn = pColor->spec.CIEXYZ.Z / pLab_WhitePt->spec.CIEXYZ.Z) < 0.008856) {
+ fZ_Zn = (0.07787 * fZ_Zn) + DIV16BY116;
+ } else {
+ fZ_Zn = (XcmsFloat) XCMS_CUBEROOT(fZ_Zn);
+ }
+
+ Lab_return.a_star = 5.0 * (fX_Xn - fY_Yn);
+ Lab_return.b_star = 2.0 * (fY_Yn - fZ_Zn);
+
+ memcpy((char *)&pColor->spec.CIELab, (char *)&Lab_return,
+ sizeof(XcmsCIELab));
+ pColor->format = XcmsCIELabFormat;
+ }
+
+ return(XcmsSuccess);
+}
diff --git a/libX11/src/xcms/LabGcC.c b/libX11/src/xcms/LabGcC.c
index 84a20cc83..a5ec9f457 100644
--- a/libX11/src/xcms/LabGcC.c
+++ b/libX11/src/xcms/LabGcC.c
@@ -1,127 +1,127 @@
-
-/*
- * Code and supporting documentation (c) Copyright 1990 1991 Tektronix, Inc.
- * All Rights Reserved
- *
- * This file is a component of an X Window System-specific implementation
- * of XCMS based on the TekColor Color Management System. Permission is
- * hereby granted to use, copy, modify, sell, and otherwise distribute this
- * software and its documentation for any purpose and without fee, provided
- * that this copyright, permission, and disclaimer notice is reproduced in
- * all copies of this software and in supporting documentation. TekColor
- * is a trademark of Tektronix, Inc.
- *
- * Tektronix makes no representation about the suitability of this software
- * for any purpose. It is provided "as is" and with all faults.
- *
- * TEKTRONIX DISCLAIMS ALL WARRANTIES APPLICABLE TO THIS SOFTWARE,
- * INCLUDING THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE. IN NO EVENT SHALL TEKTRONIX BE LIABLE FOR ANY
- * SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER
- * RESULTING FROM LOSS OF USE, DATA, OR PROFITS, WHETHER IN AN ACTION OF
- * CONTRACT, NEGLIGENCE, OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
- * CONNECTION WITH THE USE OR THE PERFORMANCE OF THIS SOFTWARE.
- *
- * NAME
- * CIELabGcC.c
- *
- * DESCRIPTION
- * Source for XcmsCIELabClipuv() gamut compression routine.
- *
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-#include "Xcmsint.h"
-#include "Cv.h"
-
-
-/************************************************************************
- * *
- * PUBLIC ROUTINES *
- * *
- ************************************************************************/
-
-/*
- * NAME
- * XcmsCIELabClipab - Reduce the chroma for a hue and L*
- *
- * SYNOPSIS
- */
-/* ARGSUSED */
-Status
-XcmsCIELabClipab (
- XcmsCCC ccc,
- XcmsColor *pColors_in_out,
- unsigned int nColors,
- unsigned int i,
- Bool *pCompressed)
-/*
- * DESCRIPTION
- * Reduce the Chroma for a specific hue and chroma to
- * to bring the given color into the gamut of the
- * specified device. As required of gamut compression
- * functions, this routine returns pColor_in_out
- * in XcmsCIEXYZFormat on successful completion.
- *
- * Since this routine works with the L* within
- * pColor_in_out intermediate results may be returned
- * even though it may be invalid.
- *
- * RETURNS
- * XcmsFailure - Failure
- * XcmsSuccess - Succeeded
- *
- */
-{
- Status retval;
- XcmsColor *pColor;
-
- /*
- * Color specification passed as input can be assumed to:
- * 1. Be in XcmsCIEXYZFormat
- * 2. Already be white point adjusted for the Screen White Point.
- * This means that the white point now associated with this
- * color spec is the Screen White Point (even if the
- * ccc->clientWhitePt differs).
- */
-
- pColor = pColors_in_out + i;
-
- if (ccc->visual->class < PseudoColor) {
- /*
- * GRAY !
- */
- _XcmsDIConvertColors(ccc, pColor, ScreenWhitePointOfCCC(ccc),
- 1, XcmsCIELabFormat);
- _XcmsDIConvertColors(ccc, pColor, ScreenWhitePointOfCCC(ccc),
- 1, XcmsCIEXYZFormat);
- if (pCompressed) {
- *(pCompressed + i) = True;
- }
- return(XcmsSuccess);
- } else {
- if (pColor->format != XcmsCIELabFormat) {
- if (_XcmsDIConvertColors(ccc, pColor,
- &ccc->pPerScrnInfo->screenWhitePt, 1, XcmsCIELabFormat)
- == XcmsFailure) {
- return(XcmsFailure);
- }
- }
- if (XcmsCIELabQueryMaxC(ccc,
- degrees(XCMS_CIELAB_PMETRIC_HUE(pColor->spec.CIELab.a_star,
- pColor->spec.CIELab.b_star)),
- pColor->spec.CIELab.L_star,
- pColor) == XcmsFailure) {
- return(XcmsFailure);
- }
- retval = _XcmsDIConvertColors(ccc, pColor,
- &ccc->pPerScrnInfo->screenWhitePt, 1, XcmsCIEXYZFormat);
- if (retval != XcmsFailure && pCompressed != NULL) {
- *(pCompressed + i) = True;
- }
- return(retval);
- }
-}
+
+/*
+ * Code and supporting documentation (c) Copyright 1990 1991 Tektronix, Inc.
+ * All Rights Reserved
+ *
+ * This file is a component of an X Window System-specific implementation
+ * of XCMS based on the TekColor Color Management System. Permission is
+ * hereby granted to use, copy, modify, sell, and otherwise distribute this
+ * software and its documentation for any purpose and without fee, provided
+ * that this copyright, permission, and disclaimer notice is reproduced in
+ * all copies of this software and in supporting documentation. TekColor
+ * is a trademark of Tektronix, Inc.
+ *
+ * Tektronix makes no representation about the suitability of this software
+ * for any purpose. It is provided "as is" and with all faults.
+ *
+ * TEKTRONIX DISCLAIMS ALL WARRANTIES APPLICABLE TO THIS SOFTWARE,
+ * INCLUDING THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+ * PARTICULAR PURPOSE. IN NO EVENT SHALL TEKTRONIX BE LIABLE FOR ANY
+ * SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER
+ * RESULTING FROM LOSS OF USE, DATA, OR PROFITS, WHETHER IN AN ACTION OF
+ * CONTRACT, NEGLIGENCE, OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
+ * CONNECTION WITH THE USE OR THE PERFORMANCE OF THIS SOFTWARE.
+ *
+ * NAME
+ * CIELabGcC.c
+ *
+ * DESCRIPTION
+ * Source for XcmsCIELabClipuv() gamut compression routine.
+ *
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+#include "Xcmsint.h"
+#include "Cv.h"
+
+
+/************************************************************************
+ * *
+ * PUBLIC ROUTINES *
+ * *
+ ************************************************************************/
+
+/*
+ * NAME
+ * XcmsCIELabClipab - Reduce the chroma for a hue and L*
+ *
+ * SYNOPSIS
+ */
+/* ARGSUSED */
+Status
+XcmsCIELabClipab (
+ XcmsCCC ccc,
+ XcmsColor *pColors_in_out,
+ unsigned int nColors,
+ unsigned int i,
+ Bool *pCompressed)
+/*
+ * DESCRIPTION
+ * Reduce the Chroma for a specific hue and chroma to
+ * to bring the given color into the gamut of the
+ * specified device. As required of gamut compression
+ * functions, this routine returns pColor_in_out
+ * in XcmsCIEXYZFormat on successful completion.
+ *
+ * Since this routine works with the L* within
+ * pColor_in_out intermediate results may be returned
+ * even though it may be invalid.
+ *
+ * RETURNS
+ * XcmsFailure - Failure
+ * XcmsSuccess - Succeeded
+ *
+ */
+{
+ Status retval;
+ XcmsColor *pColor;
+
+ /*
+ * Color specification passed as input can be assumed to:
+ * 1. Be in XcmsCIEXYZFormat
+ * 2. Already be white point adjusted for the Screen White Point.
+ * This means that the white point now associated with this
+ * color spec is the Screen White Point (even if the
+ * ccc->clientWhitePt differs).
+ */
+
+ pColor = pColors_in_out + i;
+
+ if (ccc->visual->class < PseudoColor) {
+ /*
+ * GRAY !
+ */
+ _XcmsDIConvertColors(ccc, pColor, ScreenWhitePointOfCCC(ccc),
+ 1, XcmsCIELabFormat);
+ _XcmsDIConvertColors(ccc, pColor, ScreenWhitePointOfCCC(ccc),
+ 1, XcmsCIEXYZFormat);
+ if (pCompressed) {
+ *(pCompressed + i) = True;
+ }
+ return(XcmsSuccess);
+ } else {
+ if (pColor->format != XcmsCIELabFormat) {
+ if (_XcmsDIConvertColors(ccc, pColor,
+ &ccc->pPerScrnInfo->screenWhitePt, 1, XcmsCIELabFormat)
+ == XcmsFailure) {
+ return(XcmsFailure);
+ }
+ }
+ if (XcmsCIELabQueryMaxC(ccc,
+ degrees(XCMS_CIELAB_PMETRIC_HUE(pColor->spec.CIELab.a_star,
+ pColor->spec.CIELab.b_star)),
+ pColor->spec.CIELab.L_star,
+ pColor) == XcmsFailure) {
+ return(XcmsFailure);
+ }
+ retval = _XcmsDIConvertColors(ccc, pColor,
+ &ccc->pPerScrnInfo->screenWhitePt, 1, XcmsCIEXYZFormat);
+ if (retval != XcmsFailure && pCompressed != NULL) {
+ *(pCompressed + i) = True;
+ }
+ return(retval);
+ }
+}
diff --git a/libX11/src/xcms/LabGcL.c b/libX11/src/xcms/LabGcL.c
index 169e7ce9f..3038b18a8 100644
--- a/libX11/src/xcms/LabGcL.c
+++ b/libX11/src/xcms/LabGcL.c
@@ -1,174 +1,174 @@
-
-/*
- * Code and supporting documentation (c) Copyright 1990 1991 Tektronix, Inc.
- * All Rights Reserved
- *
- * This file is a component of an X Window System-specific implementation
- * of XCMS based on the TekColor Color Management System. Permission is
- * hereby granted to use, copy, modify, sell, and otherwise distribute this
- * software and its documentation for any purpose and without fee, provided
- * that this copyright, permission, and disclaimer notice is reproduced in
- * all copies of this software and in supporting documentation. TekColor
- * is a trademark of Tektronix, Inc.
- *
- * Tektronix makes no representation about the suitability of this software
- * for any purpose. It is provided "as is" and with all faults.
- *
- * TEKTRONIX DISCLAIMS ALL WARRANTIES APPLICABLE TO THIS SOFTWARE,
- * INCLUDING THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE. IN NO EVENT SHALL TEKTRONIX BE LIABLE FOR ANY
- * SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER
- * RESULTING FROM LOSS OF USE, DATA, OR PROFITS, WHETHER IN AN ACTION OF
- * CONTRACT, NEGLIGENCE, OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
- * CONNECTION WITH THE USE OR THE PERFORMANCE OF THIS SOFTWARE.
- *
- * NAME
- * CIELabGcL.c
- *
- * DESCRIPTION
- * Source for XcmsCIELabClipL() gamut compression routine.
- *
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-#include "Xcmsint.h"
-#include "Cv.h"
-
-
-/************************************************************************
- * *
- * PUBLIC ROUTINES *
- * *
- ************************************************************************/
-
-/*
- * NAME
- * XcmsCIELabClipL - Return the closest L*
- *
- * SYNOPSIS
- */
-/* ARGSUSED */
-Status
-XcmsCIELabClipL (
- XcmsCCC ccc,
- XcmsColor *pColors_in_out,
- unsigned int nColors,
- unsigned int i,
- Bool *pCompressed)
-/*
- * DESCRIPTION
- * Return the closest L* for a specific hue and chroma.
- * This routine takes any color as input and outputs
- * a CIE XYZ color.
- *
- * Since this routine works with the L* within
- * pColor_in_out intermediate results may be returned
- * even though it may be invalid.
- *
- * RETURNS
- * XcmsFailure - Failure
- * XcmsSuccess - Succeeded
- *
- */
-{
- XcmsCCCRec myCCC;
- XcmsColor *pColor;
- XcmsColor Lab_max;
- XcmsFloat hue, chroma, maxChroma;
- Status retval;
-
- /* Use my own CCC */
- memcpy ((char *)&myCCC, (char *)ccc, sizeof(XcmsCCCRec));
- myCCC.clientWhitePt.format = XcmsUndefinedFormat;/* Inherit Screen WP */
- myCCC.gamutCompProc = (XcmsCompressionProc)NULL;/* no gamut compression */
-
- /*
- * Color specification passed as input can be assumed to:
- * 1. Be in XcmsCIEXYZFormat
- * 2. Already be white point adjusted for the Screen White Point.
- * This means that the white point now associated with this
- * color spec is the Screen White Point (even if the
- * ccc->clientWhitePt differs).
- */
-
- pColor = pColors_in_out + i;
-
- if (ccc->visual->class < StaticColor) {
- /*
- * GRAY !
- */
- return(XcmsFailure);
- } else {
- /* Convert from CIEXYZ to CIE L*u*v* format */
- if (_XcmsDIConvertColors(&myCCC, pColor,
- ScreenWhitePointOfCCC(&myCCC), 1, XcmsCIELabFormat)
- == XcmsFailure) {
- return(XcmsFailure);
- }
-
- hue = XCMS_CIELAB_PMETRIC_HUE(pColor->spec.CIELab.a_star,
- pColor->spec.CIELab.b_star);
- chroma = XCMS_CIELAB_PMETRIC_CHROMA(pColor->spec.CIELab.a_star,
- pColor->spec.CIELab.b_star);
- /* Step 1: compute the maximum L* and chroma for this hue. */
- /* This copy may be overkill but it preserves the pixel etc. */
- memcpy((char *)&Lab_max, (char *)pColor, sizeof(XcmsColor));
- if (_XcmsCIELabQueryMaxLCRGB (&myCCC, hue, &Lab_max,
- (XcmsRGBi *)NULL) == XcmsFailure) {
- return (XcmsFailure);
- }
- maxChroma = XCMS_CIELAB_PMETRIC_CHROMA(Lab_max.spec.CIELab.a_star,
- Lab_max.spec.CIELab.b_star);
-
- /* Now check and return the appropriate L* */
- if (chroma == maxChroma) {
- /* When the chroma input is equal to the maximum chroma */
- /* merely return the L* for that chroma. */
- memcpy((char *)pColor, (char *)&Lab_max, sizeof(XcmsColor));
- retval = _XcmsDIConvertColors(&myCCC, pColor,
- ScreenWhitePointOfCCC(&myCCC), 1, XcmsCIEXYZFormat);
- } else if (chroma > maxChroma) {
- /* When the chroma input is greater than the maximum chroma */
- /* merely return the L* and chroma for the given hue. */
- memcpy((char *)pColor, (char *)&Lab_max, sizeof(XcmsColor));
- return (XcmsFailure);
- } else if (pColor->spec.CIELab.L_star < Lab_max.spec.CIELab.L_star) {
- /* Find the minimum lightness for the given chroma. */
- if (pColor->format != XcmsCIELabFormat) {
- if (_XcmsDIConvertColors(ccc, pColor,
- ScreenWhitePointOfCCC(ccc), 1, XcmsCIELabFormat)
- == XcmsFailure) {
- return(XcmsFailure);
- }
- }
- if (XcmsCIELabQueryMinL(&myCCC, degrees(hue), chroma, pColor)
- == XcmsFailure) {
- return (XcmsFailure);
- }
- retval = _XcmsDIConvertColors(&myCCC, pColor,
- ScreenWhitePointOfCCC(&myCCC), 1, XcmsCIEXYZFormat);
- } else {
- /* Find the maximum lightness for the given chroma. */
- if (pColor->format != XcmsCIELabFormat) {
- if (_XcmsDIConvertColors(ccc, pColor,
- ScreenWhitePointOfCCC(ccc), 1, XcmsCIELabFormat)
- == XcmsFailure) {
- return(XcmsFailure);
- }
- }
- if (XcmsCIELabQueryMaxL(&myCCC, degrees(hue), chroma, pColor)
- == XcmsFailure) {
- return (XcmsFailure);
- }
- retval = _XcmsDIConvertColors(&myCCC, pColor,
- ScreenWhitePointOfCCC(&myCCC), 1, XcmsCIEXYZFormat);
- }
- if (retval != XcmsFailure && pCompressed != NULL) {
- *(pCompressed + i) = True;
- }
- return(retval);
- }
-}
+
+/*
+ * Code and supporting documentation (c) Copyright 1990 1991 Tektronix, Inc.
+ * All Rights Reserved
+ *
+ * This file is a component of an X Window System-specific implementation
+ * of XCMS based on the TekColor Color Management System. Permission is
+ * hereby granted to use, copy, modify, sell, and otherwise distribute this
+ * software and its documentation for any purpose and without fee, provided
+ * that this copyright, permission, and disclaimer notice is reproduced in
+ * all copies of this software and in supporting documentation. TekColor
+ * is a trademark of Tektronix, Inc.
+ *
+ * Tektronix makes no representation about the suitability of this software
+ * for any purpose. It is provided "as is" and with all faults.
+ *
+ * TEKTRONIX DISCLAIMS ALL WARRANTIES APPLICABLE TO THIS SOFTWARE,
+ * INCLUDING THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+ * PARTICULAR PURPOSE. IN NO EVENT SHALL TEKTRONIX BE LIABLE FOR ANY
+ * SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER
+ * RESULTING FROM LOSS OF USE, DATA, OR PROFITS, WHETHER IN AN ACTION OF
+ * CONTRACT, NEGLIGENCE, OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
+ * CONNECTION WITH THE USE OR THE PERFORMANCE OF THIS SOFTWARE.
+ *
+ * NAME
+ * CIELabGcL.c
+ *
+ * DESCRIPTION
+ * Source for XcmsCIELabClipL() gamut compression routine.
+ *
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+#include "Xcmsint.h"
+#include "Cv.h"
+
+
+/************************************************************************
+ * *
+ * PUBLIC ROUTINES *
+ * *
+ ************************************************************************/
+
+/*
+ * NAME
+ * XcmsCIELabClipL - Return the closest L*
+ *
+ * SYNOPSIS
+ */
+/* ARGSUSED */
+Status
+XcmsCIELabClipL (
+ XcmsCCC ccc,
+ XcmsColor *pColors_in_out,
+ unsigned int nColors,
+ unsigned int i,
+ Bool *pCompressed)
+/*
+ * DESCRIPTION
+ * Return the closest L* for a specific hue and chroma.
+ * This routine takes any color as input and outputs
+ * a CIE XYZ color.
+ *
+ * Since this routine works with the L* within
+ * pColor_in_out intermediate results may be returned
+ * even though it may be invalid.
+ *
+ * RETURNS
+ * XcmsFailure - Failure
+ * XcmsSuccess - Succeeded
+ *
+ */
+{
+ XcmsCCCRec myCCC;
+ XcmsColor *pColor;
+ XcmsColor Lab_max;
+ XcmsFloat hue, chroma, maxChroma;
+ Status retval;
+
+ /* Use my own CCC */
+ memcpy ((char *)&myCCC, (char *)ccc, sizeof(XcmsCCCRec));
+ myCCC.clientWhitePt.format = XcmsUndefinedFormat;/* Inherit Screen WP */
+ myCCC.gamutCompProc = (XcmsCompressionProc)NULL;/* no gamut compression */
+
+ /*
+ * Color specification passed as input can be assumed to:
+ * 1. Be in XcmsCIEXYZFormat
+ * 2. Already be white point adjusted for the Screen White Point.
+ * This means that the white point now associated with this
+ * color spec is the Screen White Point (even if the
+ * ccc->clientWhitePt differs).
+ */
+
+ pColor = pColors_in_out + i;
+
+ if (ccc->visual->class < StaticColor) {
+ /*
+ * GRAY !
+ */
+ return(XcmsFailure);
+ } else {
+ /* Convert from CIEXYZ to CIE L*u*v* format */
+ if (_XcmsDIConvertColors(&myCCC, pColor,
+ ScreenWhitePointOfCCC(&myCCC), 1, XcmsCIELabFormat)
+ == XcmsFailure) {
+ return(XcmsFailure);
+ }
+
+ hue = XCMS_CIELAB_PMETRIC_HUE(pColor->spec.CIELab.a_star,
+ pColor->spec.CIELab.b_star);
+ chroma = XCMS_CIELAB_PMETRIC_CHROMA(pColor->spec.CIELab.a_star,
+ pColor->spec.CIELab.b_star);
+ /* Step 1: compute the maximum L* and chroma for this hue. */
+ /* This copy may be overkill but it preserves the pixel etc. */
+ memcpy((char *)&Lab_max, (char *)pColor, sizeof(XcmsColor));
+ if (_XcmsCIELabQueryMaxLCRGB (&myCCC, hue, &Lab_max,
+ (XcmsRGBi *)NULL) == XcmsFailure) {
+ return (XcmsFailure);
+ }
+ maxChroma = XCMS_CIELAB_PMETRIC_CHROMA(Lab_max.spec.CIELab.a_star,
+ Lab_max.spec.CIELab.b_star);
+
+ /* Now check and return the appropriate L* */
+ if (chroma == maxChroma) {
+ /* When the chroma input is equal to the maximum chroma */
+ /* merely return the L* for that chroma. */
+ memcpy((char *)pColor, (char *)&Lab_max, sizeof(XcmsColor));
+ retval = _XcmsDIConvertColors(&myCCC, pColor,
+ ScreenWhitePointOfCCC(&myCCC), 1, XcmsCIEXYZFormat);
+ } else if (chroma > maxChroma) {
+ /* When the chroma input is greater than the maximum chroma */
+ /* merely return the L* and chroma for the given hue. */
+ memcpy((char *)pColor, (char *)&Lab_max, sizeof(XcmsColor));
+ return (XcmsFailure);
+ } else if (pColor->spec.CIELab.L_star < Lab_max.spec.CIELab.L_star) {
+ /* Find the minimum lightness for the given chroma. */
+ if (pColor->format != XcmsCIELabFormat) {
+ if (_XcmsDIConvertColors(ccc, pColor,
+ ScreenWhitePointOfCCC(ccc), 1, XcmsCIELabFormat)
+ == XcmsFailure) {
+ return(XcmsFailure);
+ }
+ }
+ if (XcmsCIELabQueryMinL(&myCCC, degrees(hue), chroma, pColor)
+ == XcmsFailure) {
+ return (XcmsFailure);
+ }
+ retval = _XcmsDIConvertColors(&myCCC, pColor,
+ ScreenWhitePointOfCCC(&myCCC), 1, XcmsCIEXYZFormat);
+ } else {
+ /* Find the maximum lightness for the given chroma. */
+ if (pColor->format != XcmsCIELabFormat) {
+ if (_XcmsDIConvertColors(ccc, pColor,
+ ScreenWhitePointOfCCC(ccc), 1, XcmsCIELabFormat)
+ == XcmsFailure) {
+ return(XcmsFailure);
+ }
+ }
+ if (XcmsCIELabQueryMaxL(&myCCC, degrees(hue), chroma, pColor)
+ == XcmsFailure) {
+ return (XcmsFailure);
+ }
+ retval = _XcmsDIConvertColors(&myCCC, pColor,
+ ScreenWhitePointOfCCC(&myCCC), 1, XcmsCIEXYZFormat);
+ }
+ if (retval != XcmsFailure && pCompressed != NULL) {
+ *(pCompressed + i) = True;
+ }
+ return(retval);
+ }
+}
diff --git a/libX11/src/xcms/LabGcLC.c b/libX11/src/xcms/LabGcLC.c
index cedaf1229..494d34e57 100644
--- a/libX11/src/xcms/LabGcLC.c
+++ b/libX11/src/xcms/LabGcLC.c
@@ -1,223 +1,223 @@
-
-/*
- * Code and supporting documentation (c) Copyright 1990 1991 Tektronix, Inc.
- * All Rights Reserved
- *
- * This file is a component of an X Window System-specific implementation
- * of XCMS based on the TekColor Color Management System. Permission is
- * hereby granted to use, copy, modify, sell, and otherwise distribute this
- * software and its documentation for any purpose and without fee, provided
- * that this copyright, permission, and disclaimer notice is reproduced in
- * all copies of this software and in supporting documentation. TekColor
- * is a trademark of Tektronix, Inc.
- *
- * Tektronix makes no representation about the suitability of this software
- * for any purpose. It is provided "as is" and with all faults.
- *
- * TEKTRONIX DISCLAIMS ALL WARRANTIES APPLICABLE TO THIS SOFTWARE,
- * INCLUDING THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE. IN NO EVENT SHALL TEKTRONIX BE LIABLE FOR ANY
- * SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER
- * RESULTING FROM LOSS OF USE, DATA, OR PROFITS, WHETHER IN AN ACTION OF
- * CONTRACT, NEGLIGENCE, OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
- * CONNECTION WITH THE USE OR THE PERFORMANCE OF THIS SOFTWARE.
- *
- * NAME
- * CIELabGcLC.c
- *
- * DESCRIPTION
- * Source for XcmsCIELabClipLab() gamut
- * compression function.
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-#include "Xcmsint.h"
-#include <math.h>
-#include "Cv.h"
-
-/*
- * INTERNALS
- * Internal defines that need NOT be exported to any package or
- * program using this package.
- */
-#define MAXBISECTCOUNT 100
-
-
-/************************************************************************
- * *
- * PUBLIC ROUTINES *
- * *
- ************************************************************************/
-
-/*
- * NAME
- * XcmsCIELabClipLab - Return the closest L* and chroma
- *
- * SYNOPSIS
- */
-/* ARGSUSED */
-Status
-XcmsCIELabClipLab (
- XcmsCCC ccc,
- XcmsColor *pColors_in_out,
- unsigned int nColors,
- unsigned int i,
- Bool *pCompressed)
-/*
- * DESCRIPTION
- * This routine will find the closest L* and chroma
- * for a specific hue. The color input is converted to
- * CIE L*u*v* format and returned as CIE XYZ format.
- *
- * Since this routine works with the L* within
- * pColor_in_out intermediate results may be returned
- * even though it may be invalid.
- *
- * RETURNS
- * XcmsFailure - Failure
- * XcmsSuccess - Succeeded
- *
- */
-{
- Status retval;
- XcmsCCCRec myCCC;
- XcmsColor *pColor;
- XcmsColor Lab_max;
- XcmsFloat hue, chroma, maxChroma;
- XcmsFloat Chroma, bestChroma, Lstar, maxLstar, saveLstar;
- XcmsFloat bestLstar, bestastar, bestbstar;
- XcmsFloat nT, saveDist, tmpDist;
- XcmsRGBi rgb_max;
- int nCount, nMaxCount, nI, nILast;
-
- /* Use my own CCC */
- memcpy ((char *)&myCCC, (char *)ccc, sizeof(XcmsCCCRec));
- myCCC.clientWhitePt.format = XcmsUndefinedFormat;/* inherit screen white */
- myCCC.gamutCompProc = (XcmsCompressionProc)NULL;/* no gamut compression func */
-
- /*
- * Color specification passed as input can be assumed to:
- * 1. Be in XcmsCIEXYZFormat
- * 2. Already be white point adjusted for the Screen White Point.
- * This means that the white point now associated with this
- * color spec is the Screen White Point (even if the
- * ccc->clientWhitePt differs).
- */
-
- pColor = pColors_in_out + i;
-
- if (ccc->visual->class < StaticColor) {
- /*
- * GRAY !
- */
- _XcmsDIConvertColors(ccc, pColor, ScreenWhitePointOfCCC(ccc),
- 1, XcmsCIELabFormat);
- _XcmsDIConvertColors(ccc, pColor, ScreenWhitePointOfCCC(ccc),
- 1, XcmsCIEXYZFormat);
- if (pCompressed) {
- *(pCompressed + i) = True;
- }
- return(XcmsSuccess);
- }
-
- /* Convert from CIEXYZ to CIELab format */
- if (_XcmsDIConvertColors(&myCCC, pColor,
- ScreenWhitePointOfCCC(&myCCC), 1, XcmsCIELabFormat)
- == XcmsFailure) {
- return(XcmsFailure);
- }
-
- /* Step 1: compute the maximum L* and chroma for this hue. */
- /* This copy may be overkill but it preserves the pixel etc. */
- saveLstar = pColor->spec.CIELab.L_star;
- hue = XCMS_CIELAB_PMETRIC_HUE(pColor->spec.CIELab.a_star,
- pColor->spec.CIELab.b_star);
- chroma = XCMS_CIELAB_PMETRIC_CHROMA(pColor->spec.CIELab.a_star,
- pColor->spec.CIELab.b_star);
- memcpy((char *)&Lab_max, (char *)pColor, sizeof(XcmsColor));
- if (_XcmsCIELabQueryMaxLCRGB (&myCCC, hue, &Lab_max, &rgb_max)
- == XcmsFailure) {
- return (XcmsFailure);
- }
- maxLstar = Lab_max.spec.CIELab.L_star;
-
- /* Now check and return the appropriate L* */
- if (saveLstar == maxLstar) {
- /* When the L* input is equal to the maximum L* */
- /* merely return the maximum Lab point. */
- memcpy((char *)pColor, (char *)&Lab_max, sizeof(XcmsColor));
- retval = _XcmsDIConvertColors(&myCCC, pColor,
- ScreenWhitePointOfCCC(&myCCC), 1, XcmsCIEXYZFormat);
- } else {
- /* return the closest point on the hue leaf. */
- /* must do a bisection here to compute the delta e. */
- maxChroma = XCMS_CIELAB_PMETRIC_CHROMA(Lab_max.spec.CIELab.a_star,
- Lab_max.spec.CIELab.b_star);
- nMaxCount = MAXBISECTCOUNT;
- nI = nMaxCount / 2;
- bestLstar = Lstar = pColor->spec.CIELab.L_star;
- bestastar = pColor->spec.CIELab.a_star;
- bestbstar = pColor->spec.CIELab.b_star;
- bestChroma = Chroma = chroma;
- saveDist = XCMS_SQRT(((Chroma - maxChroma) * (Chroma - maxChroma)) +
- ((Lstar - maxLstar) * (Lstar - maxLstar)));
- for (nCount = 0; nCount < nMaxCount; nCount++) {
- nT = (XcmsFloat) nI / (XcmsFloat) nMaxCount;
- if (saveLstar > maxLstar) {
- pColor->spec.RGBi.red = rgb_max.red * (1.0 - nT) + nT;
- pColor->spec.RGBi.green = rgb_max.green * (1.0 - nT) + nT;
- pColor->spec.RGBi.blue = rgb_max.blue * (1.0 - nT) + nT;
- } else {
- pColor->spec.RGBi.red = rgb_max.red - (rgb_max.red * nT);
- pColor->spec.RGBi.green = rgb_max.green - (rgb_max.green * nT);
- pColor->spec.RGBi.blue = rgb_max.blue - (rgb_max.blue * nT);
- }
- pColor->format = XcmsRGBiFormat;
-
- /* Convert from RGBi to CIE Lab */
- if (_XcmsConvertColorsWithWhitePt(&myCCC, pColor,
- ScreenWhitePointOfCCC(&myCCC), 1, XcmsCIELabFormat,
- (Bool *) NULL) == XcmsFailure) {
- return (XcmsFailure);
- }
- chroma = XCMS_CIELAB_PMETRIC_CHROMA(pColor->spec.CIELab.a_star,
- pColor->spec.CIELab.b_star);
- tmpDist = XCMS_SQRT(((Chroma - chroma) * (Chroma - chroma)) +
- ((Lstar - pColor->spec.CIELab.L_star) *
- (Lstar - pColor->spec.CIELab.L_star)));
- nILast = nI;
- if (tmpDist > saveDist) {
- nI /= 2;
- } else {
- nI = (nMaxCount + nI) / 2;
- saveDist = tmpDist;
- bestLstar = pColor->spec.CIELab.L_star;
- bestastar = pColor->spec.CIELab.a_star;
- bestbstar = pColor->spec.CIELab.b_star;
- bestChroma = chroma;
- }
- if (nI == nILast || nI == 0) {
- break;
- }
- }
- if (bestChroma >= maxChroma) {
- pColor->spec.CIELab.L_star = maxLstar;
- pColor->spec.CIELab.a_star = Lab_max.spec.CIELab.a_star;
- pColor->spec.CIELab.b_star = Lab_max.spec.CIELab.b_star;
- } else {
- pColor->spec.CIELab.L_star = bestLstar;
- pColor->spec.CIELab.a_star = bestastar;
- pColor->spec.CIELab.b_star = bestbstar;
- }
- retval = _XcmsDIConvertColors(&myCCC, pColor,
- ScreenWhitePointOfCCC(&myCCC), 1, XcmsCIEXYZFormat);
-
- if (retval != XcmsFailure && pCompressed != NULL) {
- *(pCompressed + i) = True;
- }
- }
- return(retval);
-}
+
+/*
+ * Code and supporting documentation (c) Copyright 1990 1991 Tektronix, Inc.
+ * All Rights Reserved
+ *
+ * This file is a component of an X Window System-specific implementation
+ * of XCMS based on the TekColor Color Management System. Permission is
+ * hereby granted to use, copy, modify, sell, and otherwise distribute this
+ * software and its documentation for any purpose and without fee, provided
+ * that this copyright, permission, and disclaimer notice is reproduced in
+ * all copies of this software and in supporting documentation. TekColor
+ * is a trademark of Tektronix, Inc.
+ *
+ * Tektronix makes no representation about the suitability of this software
+ * for any purpose. It is provided "as is" and with all faults.
+ *
+ * TEKTRONIX DISCLAIMS ALL WARRANTIES APPLICABLE TO THIS SOFTWARE,
+ * INCLUDING THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+ * PARTICULAR PURPOSE. IN NO EVENT SHALL TEKTRONIX BE LIABLE FOR ANY
+ * SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER
+ * RESULTING FROM LOSS OF USE, DATA, OR PROFITS, WHETHER IN AN ACTION OF
+ * CONTRACT, NEGLIGENCE, OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
+ * CONNECTION WITH THE USE OR THE PERFORMANCE OF THIS SOFTWARE.
+ *
+ * NAME
+ * CIELabGcLC.c
+ *
+ * DESCRIPTION
+ * Source for XcmsCIELabClipLab() gamut
+ * compression function.
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+#include "Xcmsint.h"
+#include <math.h>
+#include "Cv.h"
+
+/*
+ * INTERNALS
+ * Internal defines that need NOT be exported to any package or
+ * program using this package.
+ */
+#define MAXBISECTCOUNT 100
+
+
+/************************************************************************
+ * *
+ * PUBLIC ROUTINES *
+ * *
+ ************************************************************************/
+
+/*
+ * NAME
+ * XcmsCIELabClipLab - Return the closest L* and chroma
+ *
+ * SYNOPSIS
+ */
+/* ARGSUSED */
+Status
+XcmsCIELabClipLab (
+ XcmsCCC ccc,
+ XcmsColor *pColors_in_out,
+ unsigned int nColors,
+ unsigned int i,
+ Bool *pCompressed)
+/*
+ * DESCRIPTION
+ * This routine will find the closest L* and chroma
+ * for a specific hue. The color input is converted to
+ * CIE L*u*v* format and returned as CIE XYZ format.
+ *
+ * Since this routine works with the L* within
+ * pColor_in_out intermediate results may be returned
+ * even though it may be invalid.
+ *
+ * RETURNS
+ * XcmsFailure - Failure
+ * XcmsSuccess - Succeeded
+ *
+ */
+{
+ Status retval;
+ XcmsCCCRec myCCC;
+ XcmsColor *pColor;
+ XcmsColor Lab_max;
+ XcmsFloat hue, chroma, maxChroma;
+ XcmsFloat Chroma, bestChroma, Lstar, maxLstar, saveLstar;
+ XcmsFloat bestLstar, bestastar, bestbstar;
+ XcmsFloat nT, saveDist, tmpDist;
+ XcmsRGBi rgb_max;
+ int nCount, nMaxCount, nI, nILast;
+
+ /* Use my own CCC */
+ memcpy ((char *)&myCCC, (char *)ccc, sizeof(XcmsCCCRec));
+ myCCC.clientWhitePt.format = XcmsUndefinedFormat;/* inherit screen white */
+ myCCC.gamutCompProc = (XcmsCompressionProc)NULL;/* no gamut compression func */
+
+ /*
+ * Color specification passed as input can be assumed to:
+ * 1. Be in XcmsCIEXYZFormat
+ * 2. Already be white point adjusted for the Screen White Point.
+ * This means that the white point now associated with this
+ * color spec is the Screen White Point (even if the
+ * ccc->clientWhitePt differs).
+ */
+
+ pColor = pColors_in_out + i;
+
+ if (ccc->visual->class < StaticColor) {
+ /*
+ * GRAY !
+ */
+ _XcmsDIConvertColors(ccc, pColor, ScreenWhitePointOfCCC(ccc),
+ 1, XcmsCIELabFormat);
+ _XcmsDIConvertColors(ccc, pColor, ScreenWhitePointOfCCC(ccc),
+ 1, XcmsCIEXYZFormat);
+ if (pCompressed) {
+ *(pCompressed + i) = True;
+ }
+ return(XcmsSuccess);
+ }
+
+ /* Convert from CIEXYZ to CIELab format */
+ if (_XcmsDIConvertColors(&myCCC, pColor,
+ ScreenWhitePointOfCCC(&myCCC), 1, XcmsCIELabFormat)
+ == XcmsFailure) {
+ return(XcmsFailure);
+ }
+
+ /* Step 1: compute the maximum L* and chroma for this hue. */
+ /* This copy may be overkill but it preserves the pixel etc. */
+ saveLstar = pColor->spec.CIELab.L_star;
+ hue = XCMS_CIELAB_PMETRIC_HUE(pColor->spec.CIELab.a_star,
+ pColor->spec.CIELab.b_star);
+ chroma = XCMS_CIELAB_PMETRIC_CHROMA(pColor->spec.CIELab.a_star,
+ pColor->spec.CIELab.b_star);
+ memcpy((char *)&Lab_max, (char *)pColor, sizeof(XcmsColor));
+ if (_XcmsCIELabQueryMaxLCRGB (&myCCC, hue, &Lab_max, &rgb_max)
+ == XcmsFailure) {
+ return (XcmsFailure);
+ }
+ maxLstar = Lab_max.spec.CIELab.L_star;
+
+ /* Now check and return the appropriate L* */
+ if (saveLstar == maxLstar) {
+ /* When the L* input is equal to the maximum L* */
+ /* merely return the maximum Lab point. */
+ memcpy((char *)pColor, (char *)&Lab_max, sizeof(XcmsColor));
+ retval = _XcmsDIConvertColors(&myCCC, pColor,
+ ScreenWhitePointOfCCC(&myCCC), 1, XcmsCIEXYZFormat);
+ } else {
+ /* return the closest point on the hue leaf. */
+ /* must do a bisection here to compute the delta e. */
+ maxChroma = XCMS_CIELAB_PMETRIC_CHROMA(Lab_max.spec.CIELab.a_star,
+ Lab_max.spec.CIELab.b_star);
+ nMaxCount = MAXBISECTCOUNT;
+ nI = nMaxCount / 2;
+ bestLstar = Lstar = pColor->spec.CIELab.L_star;
+ bestastar = pColor->spec.CIELab.a_star;
+ bestbstar = pColor->spec.CIELab.b_star;
+ bestChroma = Chroma = chroma;
+ saveDist = XCMS_SQRT(((Chroma - maxChroma) * (Chroma - maxChroma)) +
+ ((Lstar - maxLstar) * (Lstar - maxLstar)));
+ for (nCount = 0; nCount < nMaxCount; nCount++) {
+ nT = (XcmsFloat) nI / (XcmsFloat) nMaxCount;
+ if (saveLstar > maxLstar) {
+ pColor->spec.RGBi.red = rgb_max.red * (1.0 - nT) + nT;
+ pColor->spec.RGBi.green = rgb_max.green * (1.0 - nT) + nT;
+ pColor->spec.RGBi.blue = rgb_max.blue * (1.0 - nT) + nT;
+ } else {
+ pColor->spec.RGBi.red = rgb_max.red - (rgb_max.red * nT);
+ pColor->spec.RGBi.green = rgb_max.green - (rgb_max.green * nT);
+ pColor->spec.RGBi.blue = rgb_max.blue - (rgb_max.blue * nT);
+ }
+ pColor->format = XcmsRGBiFormat;
+
+ /* Convert from RGBi to CIE Lab */
+ if (_XcmsConvertColorsWithWhitePt(&myCCC, pColor,
+ ScreenWhitePointOfCCC(&myCCC), 1, XcmsCIELabFormat,
+ (Bool *) NULL) == XcmsFailure) {
+ return (XcmsFailure);
+ }
+ chroma = XCMS_CIELAB_PMETRIC_CHROMA(pColor->spec.CIELab.a_star,
+ pColor->spec.CIELab.b_star);
+ tmpDist = XCMS_SQRT(((Chroma - chroma) * (Chroma - chroma)) +
+ ((Lstar - pColor->spec.CIELab.L_star) *
+ (Lstar - pColor->spec.CIELab.L_star)));
+ nILast = nI;
+ if (tmpDist > saveDist) {
+ nI /= 2;
+ } else {
+ nI = (nMaxCount + nI) / 2;
+ saveDist = tmpDist;
+ bestLstar = pColor->spec.CIELab.L_star;
+ bestastar = pColor->spec.CIELab.a_star;
+ bestbstar = pColor->spec.CIELab.b_star;
+ bestChroma = chroma;
+ }
+ if (nI == nILast || nI == 0) {
+ break;
+ }
+ }
+ if (bestChroma >= maxChroma) {
+ pColor->spec.CIELab.L_star = maxLstar;
+ pColor->spec.CIELab.a_star = Lab_max.spec.CIELab.a_star;
+ pColor->spec.CIELab.b_star = Lab_max.spec.CIELab.b_star;
+ } else {
+ pColor->spec.CIELab.L_star = bestLstar;
+ pColor->spec.CIELab.a_star = bestastar;
+ pColor->spec.CIELab.b_star = bestbstar;
+ }
+ retval = _XcmsDIConvertColors(&myCCC, pColor,
+ ScreenWhitePointOfCCC(&myCCC), 1, XcmsCIEXYZFormat);
+
+ if (retval != XcmsFailure && pCompressed != NULL) {
+ *(pCompressed + i) = True;
+ }
+ }
+ return(retval);
+}
diff --git a/libX11/src/xcms/LabMnL.c b/libX11/src/xcms/LabMnL.c
index 2495ba8fb..18ff04cd1 100644
--- a/libX11/src/xcms/LabMnL.c
+++ b/libX11/src/xcms/LabMnL.c
@@ -1,216 +1,216 @@
-
-/*
- * Code and supporting documentation (c) Copyright 1990 1991 Tektronix, Inc.
- * All Rights Reserved
- *
- * This file is a component of an X Window System-specific implementation
- * of XCMS based on the TekColor Color Management System. Permission is
- * hereby granted to use, copy, modify, sell, and otherwise distribute this
- * software and its documentation for any purpose and without fee, provided
- * that this copyright, permission, and disclaimer notice is reproduced in
- * all copies of this software and in supporting documentation. TekColor
- * is a trademark of Tektronix, Inc.
- *
- * Tektronix makes no representation about the suitability of this software
- * for any purpose. It is provided "as is" and with all faults.
- *
- * TEKTRONIX DISCLAIMS ALL WARRANTIES APPLICABLE TO THIS SOFTWARE,
- * INCLUDING THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE. IN NO EVENT SHALL TEKTRONIX BE LIABLE FOR ANY
- * SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER
- * RESULTING FROM LOSS OF USE, DATA, OR PROFITS, WHETHER IN AN ACTION OF
- * CONTRACT, NEGLIGENCE, OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
- * CONNECTION WITH THE USE OR THE PERFORMANCE OF THIS SOFTWARE.
- *
- * NAME
- * CIELabMnL.c
- *
- * DESCRIPTION
- * Source for the XcmsCIELabQueryMinL() gamut boundary
- * querying routine.
- *
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-#include "Xcmsint.h"
-#include <math.h>
-#include "Cv.h"
-
-/*
- * DEFINES
- */
-#define MAXBISECTCOUNT 100
-#define EPS (XcmsFloat)0.001
-#define START_L_STAR (XcmsFloat)40.0
-
-
-/************************************************************************
- * *
- * PUBLIC ROUTINES *
- * *
- ************************************************************************/
-
-/*
- * NAME
- * XcmsCIELabQueryMinL - Compute max Lstar for a hue and chroma
- *
- * SYNOPSIS
- */
-Status
-XcmsCIELabQueryMinL(
- XcmsCCC ccc,
- XcmsFloat hue_angle, /* hue angle in degrees */
- XcmsFloat chroma,
- XcmsColor *pColor_return)
-/*
- * DESCRIPTION
- * Return the maximum Lstar for a specified hue_angle and chroma.
- *
- * ASSUMPTIONS
- * This routine assumes that the white point associated with
- * the color specification is the Screen White Point. The
- * Screen White Point will also be associated with the
- * returned color specification.
- *
- * RETURNS
- * XcmsFailure - Failure
- * XcmsSuccess - Succeeded with no modifications
- *
- */
-{
- XcmsCCCRec myCCC;
- XcmsColor max_lc, tmp, prev;
- XcmsFloat max_chroma, tmp_chroma;
- XcmsFloat hue, nT, nChroma, lastChroma, prevChroma;
- XcmsFloat rFactor;
- XcmsRGBi rgb_saved;
- int nCount, nMaxCount;
-
- /*
- * Check Arguments
- */
- if (ccc == NULL || pColor_return == NULL) {
- return(XcmsFailure);
- }
-
- /* setup the CCC to use for the conversions. */
- memcpy ((char *) &myCCC, (char *) ccc, sizeof(XcmsCCCRec));
- myCCC.clientWhitePt.format = XcmsUndefinedFormat;
- myCCC.gamutCompProc = (XcmsCompressionProc) NULL;
-
- while (hue_angle < 0.0) {
- hue_angle += 360.0;
- }
- while (hue_angle >= 360.0) {
- hue_angle -= 360.0;
- }
-
- hue = radians(hue_angle);
- tmp.spec.CIELab.L_star = START_L_STAR;
- tmp.spec.CIELab.a_star = XCMS_CIEASTAROFHUE(hue, chroma);
- tmp.spec.CIELab.b_star = XCMS_CIEBSTAROFHUE(hue, chroma);
- tmp.pixel = pColor_return->pixel;
- tmp.format = XcmsCIELabFormat;
-
- /* Step 1: Obtain the maximum L_star and chroma for this hue. */
- if (_XcmsCIELabQueryMaxLCRGB(&myCCC, hue, &max_lc, &rgb_saved)
- == XcmsFailure) {
- return(XcmsFailure);
- }
-
- max_chroma = XCMS_CIELAB_PMETRIC_CHROMA(max_lc.spec.CIELab.a_star,
- max_lc.spec.CIELab.b_star);
-
- if (max_chroma <= chroma) {
- /*
- * If the chroma is greater than the chroma for the
- * maximum L/chroma point then the L_star is the
- * the L_star for the maximum L_star/chroma point.
- * This is an error but I return the best approximation I can.
- * Thus the inconsistency.
- */
- memcpy ((char *) pColor_return, (char *) &max_lc, sizeof (XcmsColor));
- return(XcmsSuccess);
- }
-
- /*
- * If the chroma is equal to the chroma for the
- * maximum L_star/chroma point then the L_star is the
- * the L_star for the maximum L* and chroma point.
- */
- /* if (max_chroma == chroma) {
- * memcpy ((char *) pColor_return, (char *) &max_lc, sizeof (XcmsColor));
- * return(XcmsSuccess);
- * }
- */
-
- /* must do a bisection here to compute the maximum L* */
- /* save the structure input so that any elements that */
- /* are not touched are recopied later in the routine. */
- nChroma = chroma;
- tmp_chroma = max_chroma;
- lastChroma = -1.0;
- nMaxCount = MAXBISECTCOUNT;
- rFactor = 1.0;
-
- for (nCount = 0; nCount < nMaxCount; nCount++) {
- prevChroma = lastChroma;
- lastChroma = tmp_chroma;
- nT = (nChroma - max_chroma) / max_chroma * rFactor;
- memcpy ((char *)&prev, (char *)&tmp, sizeof(XcmsColor));
- tmp.spec.RGBi.red = rgb_saved.red + (rgb_saved.red * nT);
- tmp.spec.RGBi.green = rgb_saved.green + (rgb_saved.green * nT);
- tmp.spec.RGBi.blue = rgb_saved.blue + (rgb_saved.blue * nT);
- tmp.format = XcmsRGBiFormat;
-
- /* convert from RGB to CIELab */
- if (_XcmsConvertColorsWithWhitePt(&myCCC, &tmp,
- ScreenWhitePointOfCCC(&myCCC), 1, XcmsCIELabFormat,
- (Bool *) NULL) == XcmsFailure) {
- return(XcmsFailure);
- }
-
- /* Now check the return against what is expected */
- tmp_chroma = XCMS_CIELAB_PMETRIC_CHROMA(tmp.spec.CIELab.a_star,
- tmp.spec.CIELab.b_star);
- if (tmp_chroma <= chroma + EPS && tmp_chroma >= chroma - EPS) {
- /* Found It! */
- memcpy ((char *) pColor_return, (char *) &tmp, sizeof (XcmsColor));
- return(XcmsSuccess);
- }
- nChroma += chroma - tmp_chroma;
- if (nChroma > max_chroma) {
- nChroma = max_chroma;
- rFactor *= 0.5; /* selective relaxation employed */
- } else if (nChroma < 0.0) {
- if (XCMS_FABS(lastChroma - chroma) <
- XCMS_FABS(tmp_chroma - chroma)) {
- memcpy ((char *)pColor_return, (char *)&prev,
- sizeof(XcmsColor));
- } else {
- memcpy ((char *)pColor_return, (char *)&tmp,
- sizeof(XcmsColor));
- }
- return(XcmsSuccess);
- } else if (tmp_chroma <= prevChroma + EPS &&
- tmp_chroma >= prevChroma - EPS) {
- rFactor *= 0.5; /* selective relaxation employed */
- }
- }
-
- if (nCount >= nMaxCount) {
- if (XCMS_FABS(lastChroma - chroma) <
- XCMS_FABS(tmp_chroma - chroma)) {
- memcpy ((char *)pColor_return, (char *)&prev,
- sizeof(XcmsColor));
- } else {
- memcpy ((char *)pColor_return, (char *)&tmp,
- sizeof(XcmsColor));
- }
- }
- memcpy ((char *) pColor_return, (char *) &tmp, sizeof (XcmsColor));
- return(XcmsSuccess);
-}
+
+/*
+ * Code and supporting documentation (c) Copyright 1990 1991 Tektronix, Inc.
+ * All Rights Reserved
+ *
+ * This file is a component of an X Window System-specific implementation
+ * of XCMS based on the TekColor Color Management System. Permission is
+ * hereby granted to use, copy, modify, sell, and otherwise distribute this
+ * software and its documentation for any purpose and without fee, provided
+ * that this copyright, permission, and disclaimer notice is reproduced in
+ * all copies of this software and in supporting documentation. TekColor
+ * is a trademark of Tektronix, Inc.
+ *
+ * Tektronix makes no representation about the suitability of this software
+ * for any purpose. It is provided "as is" and with all faults.
+ *
+ * TEKTRONIX DISCLAIMS ALL WARRANTIES APPLICABLE TO THIS SOFTWARE,
+ * INCLUDING THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+ * PARTICULAR PURPOSE. IN NO EVENT SHALL TEKTRONIX BE LIABLE FOR ANY
+ * SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER
+ * RESULTING FROM LOSS OF USE, DATA, OR PROFITS, WHETHER IN AN ACTION OF
+ * CONTRACT, NEGLIGENCE, OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
+ * CONNECTION WITH THE USE OR THE PERFORMANCE OF THIS SOFTWARE.
+ *
+ * NAME
+ * CIELabMnL.c
+ *
+ * DESCRIPTION
+ * Source for the XcmsCIELabQueryMinL() gamut boundary
+ * querying routine.
+ *
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+#include "Xcmsint.h"
+#include <math.h>
+#include "Cv.h"
+
+/*
+ * DEFINES
+ */
+#define MAXBISECTCOUNT 100
+#define EPS (XcmsFloat)0.001
+#define START_L_STAR (XcmsFloat)40.0
+
+
+/************************************************************************
+ * *
+ * PUBLIC ROUTINES *
+ * *
+ ************************************************************************/
+
+/*
+ * NAME
+ * XcmsCIELabQueryMinL - Compute max Lstar for a hue and chroma
+ *
+ * SYNOPSIS
+ */
+Status
+XcmsCIELabQueryMinL(
+ XcmsCCC ccc,
+ XcmsFloat hue_angle, /* hue angle in degrees */
+ XcmsFloat chroma,
+ XcmsColor *pColor_return)
+/*
+ * DESCRIPTION
+ * Return the maximum Lstar for a specified hue_angle and chroma.
+ *
+ * ASSUMPTIONS
+ * This routine assumes that the white point associated with
+ * the color specification is the Screen White Point. The
+ * Screen White Point will also be associated with the
+ * returned color specification.
+ *
+ * RETURNS
+ * XcmsFailure - Failure
+ * XcmsSuccess - Succeeded with no modifications
+ *
+ */
+{
+ XcmsCCCRec myCCC;
+ XcmsColor max_lc, tmp, prev;
+ XcmsFloat max_chroma, tmp_chroma;
+ XcmsFloat hue, nT, nChroma, lastChroma, prevChroma;
+ XcmsFloat rFactor;
+ XcmsRGBi rgb_saved;
+ int nCount, nMaxCount;
+
+ /*
+ * Check Arguments
+ */
+ if (ccc == NULL || pColor_return == NULL) {
+ return(XcmsFailure);
+ }
+
+ /* setup the CCC to use for the conversions. */
+ memcpy ((char *) &myCCC, (char *) ccc, sizeof(XcmsCCCRec));
+ myCCC.clientWhitePt.format = XcmsUndefinedFormat;
+ myCCC.gamutCompProc = (XcmsCompressionProc) NULL;
+
+ while (hue_angle < 0.0) {
+ hue_angle += 360.0;
+ }
+ while (hue_angle >= 360.0) {
+ hue_angle -= 360.0;
+ }
+
+ hue = radians(hue_angle);
+ tmp.spec.CIELab.L_star = START_L_STAR;
+ tmp.spec.CIELab.a_star = XCMS_CIEASTAROFHUE(hue, chroma);
+ tmp.spec.CIELab.b_star = XCMS_CIEBSTAROFHUE(hue, chroma);
+ tmp.pixel = pColor_return->pixel;
+ tmp.format = XcmsCIELabFormat;
+
+ /* Step 1: Obtain the maximum L_star and chroma for this hue. */
+ if (_XcmsCIELabQueryMaxLCRGB(&myCCC, hue, &max_lc, &rgb_saved)
+ == XcmsFailure) {
+ return(XcmsFailure);
+ }
+
+ max_chroma = XCMS_CIELAB_PMETRIC_CHROMA(max_lc.spec.CIELab.a_star,
+ max_lc.spec.CIELab.b_star);
+
+ if (max_chroma <= chroma) {
+ /*
+ * If the chroma is greater than the chroma for the
+ * maximum L/chroma point then the L_star is the
+ * the L_star for the maximum L_star/chroma point.
+ * This is an error but I return the best approximation I can.
+ * Thus the inconsistency.
+ */
+ memcpy ((char *) pColor_return, (char *) &max_lc, sizeof (XcmsColor));
+ return(XcmsSuccess);
+ }
+
+ /*
+ * If the chroma is equal to the chroma for the
+ * maximum L_star/chroma point then the L_star is the
+ * the L_star for the maximum L* and chroma point.
+ */
+ /* if (max_chroma == chroma) {
+ * memcpy ((char *) pColor_return, (char *) &max_lc, sizeof (XcmsColor));
+ * return(XcmsSuccess);
+ * }
+ */
+
+ /* must do a bisection here to compute the maximum L* */
+ /* save the structure input so that any elements that */
+ /* are not touched are recopied later in the routine. */
+ nChroma = chroma;
+ tmp_chroma = max_chroma;
+ lastChroma = -1.0;
+ nMaxCount = MAXBISECTCOUNT;
+ rFactor = 1.0;
+
+ for (nCount = 0; nCount < nMaxCount; nCount++) {
+ prevChroma = lastChroma;
+ lastChroma = tmp_chroma;
+ nT = (nChroma - max_chroma) / max_chroma * rFactor;
+ memcpy ((char *)&prev, (char *)&tmp, sizeof(XcmsColor));
+ tmp.spec.RGBi.red = rgb_saved.red + (rgb_saved.red * nT);
+ tmp.spec.RGBi.green = rgb_saved.green + (rgb_saved.green * nT);
+ tmp.spec.RGBi.blue = rgb_saved.blue + (rgb_saved.blue * nT);
+ tmp.format = XcmsRGBiFormat;
+
+ /* convert from RGB to CIELab */
+ if (_XcmsConvertColorsWithWhitePt(&myCCC, &tmp,
+ ScreenWhitePointOfCCC(&myCCC), 1, XcmsCIELabFormat,
+ (Bool *) NULL) == XcmsFailure) {
+ return(XcmsFailure);
+ }
+
+ /* Now check the return against what is expected */
+ tmp_chroma = XCMS_CIELAB_PMETRIC_CHROMA(tmp.spec.CIELab.a_star,
+ tmp.spec.CIELab.b_star);
+ if (tmp_chroma <= chroma + EPS && tmp_chroma >= chroma - EPS) {
+ /* Found It! */
+ memcpy ((char *) pColor_return, (char *) &tmp, sizeof (XcmsColor));
+ return(XcmsSuccess);
+ }
+ nChroma += chroma - tmp_chroma;
+ if (nChroma > max_chroma) {
+ nChroma = max_chroma;
+ rFactor *= 0.5; /* selective relaxation employed */
+ } else if (nChroma < 0.0) {
+ if (XCMS_FABS(lastChroma - chroma) <
+ XCMS_FABS(tmp_chroma - chroma)) {
+ memcpy ((char *)pColor_return, (char *)&prev,
+ sizeof(XcmsColor));
+ } else {
+ memcpy ((char *)pColor_return, (char *)&tmp,
+ sizeof(XcmsColor));
+ }
+ return(XcmsSuccess);
+ } else if (tmp_chroma <= prevChroma + EPS &&
+ tmp_chroma >= prevChroma - EPS) {
+ rFactor *= 0.5; /* selective relaxation employed */
+ }
+ }
+
+ if (nCount >= nMaxCount) {
+ if (XCMS_FABS(lastChroma - chroma) <
+ XCMS_FABS(tmp_chroma - chroma)) {
+ memcpy ((char *)pColor_return, (char *)&prev,
+ sizeof(XcmsColor));
+ } else {
+ memcpy ((char *)pColor_return, (char *)&tmp,
+ sizeof(XcmsColor));
+ }
+ }
+ memcpy ((char *) pColor_return, (char *) &tmp, sizeof (XcmsColor));
+ return(XcmsSuccess);
+}
diff --git a/libX11/src/xcms/LabMxC.c b/libX11/src/xcms/LabMxC.c
index 83226783a..fcadd236a 100644
--- a/libX11/src/xcms/LabMxC.c
+++ b/libX11/src/xcms/LabMxC.c
@@ -1,203 +1,203 @@
-
-/*
- * Code and supporting documentation (c) Copyright 1990 1991 Tektronix, Inc.
- * All Rights Reserved
- *
- * This file is a component of an X Window System-specific implementation
- * of XCMS based on the TekColor Color Management System. Permission is
- * hereby granted to use, copy, modify, sell, and otherwise distribute this
- * software and its documentation for any purpose and without fee, provided
- * that this copyright, permission, and disclaimer notice is reproduced in
- * all copies of this software and in supporting documentation. TekColor
- * is a trademark of Tektronix, Inc.
- *
- * Tektronix makes no representation about the suitability of this software
- * for any purpose. It is provided "as is" and with all faults.
- *
- * TEKTRONIX DISCLAIMS ALL WARRANTIES APPLICABLE TO THIS SOFTWARE,
- * INCLUDING THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE. IN NO EVENT SHALL TEKTRONIX BE LIABLE FOR ANY
- * SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER
- * RESULTING FROM LOSS OF USE, DATA, OR PROFITS, WHETHER IN AN ACTION OF
- * CONTRACT, NEGLIGENCE, OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
- * CONNECTION WITH THE USE OR THE PERFORMANCE OF THIS SOFTWARE.
- *
- *
- *
- * NAME
- * CIELabMxC.c
- *
- * DESCRIPTION
- * Source for the XcmsCIELabQueryMaxC() gamut boundary
- * querying routine.
- *
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-#include "Xcmsint.h"
-#include <math.h>
-#include "Cv.h"
-
-/*
- * DEFINES
- */
-#define MAXBISECTCOUNT 100
-#define EPS (XcmsFloat)0.001
-#define START_CHROMA (XcmsFloat)3.6
-#define TOPL (XcmsFloat)100.0
-
-
-/************************************************************************
- * *
- * PUBLIC ROUTINES *
- * *
- ************************************************************************/
-
-/*
- * NAME
- * XcmsCIELabQueryMaxC - max chroma for a hue_angle and L_star
- *
- * SYNOPSIS
- */
-Status
-XcmsCIELabQueryMaxC(
- XcmsCCC ccc,
- XcmsFloat hue_angle, /* hue angle in degrees */
- XcmsFloat L_star,
- XcmsColor *pColor_return)
-/*
- * DESCRIPTION
- * Return the maximum chroma for a specific hue_angle and L_star.
- * The returned format is in XcmsCIELabFormat.
- *
- *
- * ASSUMPTIONS
- * This routine assumes that the white point associated with
- * the color specification is the Screen White Point. The
- * Screen White Point will also be associated with the
- * returned color specification.
- *
- * RETURNS
- * XcmsFailure - Failure
- * XcmsSuccess - Succeeded
- *
- */
-{
- XcmsCCCRec myCCC;
- XcmsColor tmp;
- XcmsColor max_lc;
- XcmsFloat n_L_star, last_L_star, prev_L_star;
- XcmsFloat hue, lastaStar, lastbStar, /*lastChroma,*/ maxDist, nT, rFactor;
- XcmsRGBi rgb_saved;
- int nCount, nMaxCount;
-
- /*
- * Check Arguments
- */
- if (ccc == NULL || pColor_return == NULL) {
- return(XcmsFailure);
- }
-
- /* Use my own CCC and inherit screen white Pt */
- memcpy ((char *)&myCCC, (char *)ccc, sizeof(XcmsCCCRec));
- myCCC.clientWhitePt.format = XcmsUndefinedFormat;
- myCCC.gamutCompProc = (XcmsCompressionProc)NULL;/* no gamut comp func */
-
- while (hue_angle < 0.0) {
- hue_angle += 360.0;
- }
- while (hue_angle >= 360.0) {
- hue_angle -= 360.0;
- }
-
- hue = radians(hue_angle);
- tmp.spec.CIELab.L_star = L_star;
- tmp.spec.CIELab.a_star = XCMS_CIEASTAROFHUE(hue, START_CHROMA);
- tmp.spec.CIELab.b_star = XCMS_CIEBSTAROFHUE(hue, START_CHROMA);
- tmp.pixel = pColor_return->pixel;
- tmp.format = XcmsCIELabFormat;
-
- /* Step 1: compute the maximum L_star and chroma for this hue. */
- memcpy((char *)&max_lc, (char *)&tmp, sizeof(XcmsColor));
- if (_XcmsCIELabQueryMaxLCRGB(&myCCC, hue, &max_lc, &rgb_saved)
- == XcmsFailure) {
- return(XcmsFailure);
- }
-
- /*
- * Step 2: Do a bisection here to compute the maximum chroma
- * Note the differences between when the point to be found
- * is above the maximum LC point and when it is below.
- */
- if (L_star <= max_lc.spec.CIELab.L_star) {
- maxDist = max_lc.spec.CIELab.L_star;
- } else {
- maxDist = TOPL - max_lc.spec.CIELab.L_star;
- }
-
- n_L_star = L_star;
- last_L_star = -1.0;
- nMaxCount = MAXBISECTCOUNT;
- rFactor = 1.0;
-
- for (nCount = 0; nCount < nMaxCount; nCount++) {
- prev_L_star = last_L_star;
- last_L_star = tmp.spec.CIELab.L_star;
-/* lastChroma = XCMS_CIELAB_PMETRIC_CHROMA(tmp.spec.CIELab.a_star, */
-/* tmp.spec.CIELab.b_star); */
- lastaStar = tmp.spec.CIELab.a_star;
- lastbStar = tmp.spec.CIELab.b_star;
- nT = (n_L_star - max_lc.spec.CIELab.L_star) / maxDist * rFactor;
- if (nT > 0) {
- tmp.spec.RGBi.red = rgb_saved.red * (1.0 - nT) + nT;
- tmp.spec.RGBi.green = rgb_saved.green * (1.0 - nT) + nT;
- tmp.spec.RGBi.blue = rgb_saved.blue * (1.0 - nT) + nT;
- } else {
- tmp.spec.RGBi.red = rgb_saved.red + (rgb_saved.red * nT);
- tmp.spec.RGBi.green = rgb_saved.green + (rgb_saved.green * nT);
- tmp.spec.RGBi.blue = rgb_saved.blue + (rgb_saved.blue * nT);
- }
- tmp.format = XcmsRGBiFormat;
-
- /* convert from RGB to CIELab */
- if (_XcmsConvertColorsWithWhitePt(&myCCC, &tmp,
- ScreenWhitePointOfCCC(&myCCC), 1, XcmsCIELabFormat,
- (Bool *) NULL) == XcmsFailure) {
- return(XcmsFailure);
- }
-
- /*
- * Now check if we've reached the target L_star
- */
- /* printf("result Lstar = %lf\n", tmp.spec.CIELab.L_star); */
- if (tmp.spec.CIELab.L_star <= L_star + EPS &&
- tmp.spec.CIELab.L_star >= L_star - EPS) {
- memcpy((char *)pColor_return, (char *)&tmp, sizeof(XcmsColor));
- return(XcmsSuccess);
- }
- if (nT > 0) {
- n_L_star += ((TOPL - n_L_star) *
- (L_star - tmp.spec.CIELab.L_star)) / (TOPL - L_star);
- } else {
- n_L_star *= L_star / tmp.spec.CIELuv.L_star;
- }
- if (tmp.spec.CIELab.L_star <= prev_L_star + EPS &&
- tmp.spec.CIELab.L_star >= prev_L_star - EPS) {
- rFactor *= 0.5; /* selective relaxation employed */
- /* printf("rFactor = %lf\n", rFactor); */
- }
- }
- if (XCMS_FABS(last_L_star - L_star) <
- XCMS_FABS(tmp.spec.CIELab.L_star - L_star)) {
- tmp.spec.CIELab.a_star = lastaStar;
- tmp.spec.CIELab.b_star = lastbStar;
-/* tmp.spec.CIELab.a_star = XCMS_CIEASTAROFHUE(hue, lastChroma); */
-/* tmp.spec.CIELab.b_star = XCMS_CIEBSTAROFHUE(hue, lastChroma); */
- }
- tmp.spec.CIELab.L_star = L_star;
- memcpy((char *)pColor_return, (char *)&tmp, sizeof(XcmsColor));
- return(XcmsSuccess);
-}
+
+/*
+ * Code and supporting documentation (c) Copyright 1990 1991 Tektronix, Inc.
+ * All Rights Reserved
+ *
+ * This file is a component of an X Window System-specific implementation
+ * of XCMS based on the TekColor Color Management System. Permission is
+ * hereby granted to use, copy, modify, sell, and otherwise distribute this
+ * software and its documentation for any purpose and without fee, provided
+ * that this copyright, permission, and disclaimer notice is reproduced in
+ * all copies of this software and in supporting documentation. TekColor
+ * is a trademark of Tektronix, Inc.
+ *
+ * Tektronix makes no representation about the suitability of this software
+ * for any purpose. It is provided "as is" and with all faults.
+ *
+ * TEKTRONIX DISCLAIMS ALL WARRANTIES APPLICABLE TO THIS SOFTWARE,
+ * INCLUDING THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+ * PARTICULAR PURPOSE. IN NO EVENT SHALL TEKTRONIX BE LIABLE FOR ANY
+ * SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER
+ * RESULTING FROM LOSS OF USE, DATA, OR PROFITS, WHETHER IN AN ACTION OF
+ * CONTRACT, NEGLIGENCE, OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
+ * CONNECTION WITH THE USE OR THE PERFORMANCE OF THIS SOFTWARE.
+ *
+ *
+ *
+ * NAME
+ * CIELabMxC.c
+ *
+ * DESCRIPTION
+ * Source for the XcmsCIELabQueryMaxC() gamut boundary
+ * querying routine.
+ *
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+#include "Xcmsint.h"
+#include <math.h>
+#include "Cv.h"
+
+/*
+ * DEFINES
+ */
+#define MAXBISECTCOUNT 100
+#define EPS (XcmsFloat)0.001
+#define START_CHROMA (XcmsFloat)3.6
+#define TOPL (XcmsFloat)100.0
+
+
+/************************************************************************
+ * *
+ * PUBLIC ROUTINES *
+ * *
+ ************************************************************************/
+
+/*
+ * NAME
+ * XcmsCIELabQueryMaxC - max chroma for a hue_angle and L_star
+ *
+ * SYNOPSIS
+ */
+Status
+XcmsCIELabQueryMaxC(
+ XcmsCCC ccc,
+ XcmsFloat hue_angle, /* hue angle in degrees */
+ XcmsFloat L_star,
+ XcmsColor *pColor_return)
+/*
+ * DESCRIPTION
+ * Return the maximum chroma for a specific hue_angle and L_star.
+ * The returned format is in XcmsCIELabFormat.
+ *
+ *
+ * ASSUMPTIONS
+ * This routine assumes that the white point associated with
+ * the color specification is the Screen White Point. The
+ * Screen White Point will also be associated with the
+ * returned color specification.
+ *
+ * RETURNS
+ * XcmsFailure - Failure
+ * XcmsSuccess - Succeeded
+ *
+ */
+{
+ XcmsCCCRec myCCC;
+ XcmsColor tmp;
+ XcmsColor max_lc;
+ XcmsFloat n_L_star, last_L_star, prev_L_star;
+ XcmsFloat hue, lastaStar, lastbStar, /*lastChroma,*/ maxDist, nT, rFactor;
+ XcmsRGBi rgb_saved;
+ int nCount, nMaxCount;
+
+ /*
+ * Check Arguments
+ */
+ if (ccc == NULL || pColor_return == NULL) {
+ return(XcmsFailure);
+ }
+
+ /* Use my own CCC and inherit screen white Pt */
+ memcpy ((char *)&myCCC, (char *)ccc, sizeof(XcmsCCCRec));
+ myCCC.clientWhitePt.format = XcmsUndefinedFormat;
+ myCCC.gamutCompProc = (XcmsCompressionProc)NULL;/* no gamut comp func */
+
+ while (hue_angle < 0.0) {
+ hue_angle += 360.0;
+ }
+ while (hue_angle >= 360.0) {
+ hue_angle -= 360.0;
+ }
+
+ hue = radians(hue_angle);
+ tmp.spec.CIELab.L_star = L_star;
+ tmp.spec.CIELab.a_star = XCMS_CIEASTAROFHUE(hue, START_CHROMA);
+ tmp.spec.CIELab.b_star = XCMS_CIEBSTAROFHUE(hue, START_CHROMA);
+ tmp.pixel = pColor_return->pixel;
+ tmp.format = XcmsCIELabFormat;
+
+ /* Step 1: compute the maximum L_star and chroma for this hue. */
+ memcpy((char *)&max_lc, (char *)&tmp, sizeof(XcmsColor));
+ if (_XcmsCIELabQueryMaxLCRGB(&myCCC, hue, &max_lc, &rgb_saved)
+ == XcmsFailure) {
+ return(XcmsFailure);
+ }
+
+ /*
+ * Step 2: Do a bisection here to compute the maximum chroma
+ * Note the differences between when the point to be found
+ * is above the maximum LC point and when it is below.
+ */
+ if (L_star <= max_lc.spec.CIELab.L_star) {
+ maxDist = max_lc.spec.CIELab.L_star;
+ } else {
+ maxDist = TOPL - max_lc.spec.CIELab.L_star;
+ }
+
+ n_L_star = L_star;
+ last_L_star = -1.0;
+ nMaxCount = MAXBISECTCOUNT;
+ rFactor = 1.0;
+
+ for (nCount = 0; nCount < nMaxCount; nCount++) {
+ prev_L_star = last_L_star;
+ last_L_star = tmp.spec.CIELab.L_star;
+/* lastChroma = XCMS_CIELAB_PMETRIC_CHROMA(tmp.spec.CIELab.a_star, */
+/* tmp.spec.CIELab.b_star); */
+ lastaStar = tmp.spec.CIELab.a_star;
+ lastbStar = tmp.spec.CIELab.b_star;
+ nT = (n_L_star - max_lc.spec.CIELab.L_star) / maxDist * rFactor;
+ if (nT > 0) {
+ tmp.spec.RGBi.red = rgb_saved.red * (1.0 - nT) + nT;
+ tmp.spec.RGBi.green = rgb_saved.green * (1.0 - nT) + nT;
+ tmp.spec.RGBi.blue = rgb_saved.blue * (1.0 - nT) + nT;
+ } else {
+ tmp.spec.RGBi.red = rgb_saved.red + (rgb_saved.red * nT);
+ tmp.spec.RGBi.green = rgb_saved.green + (rgb_saved.green * nT);
+ tmp.spec.RGBi.blue = rgb_saved.blue + (rgb_saved.blue * nT);
+ }
+ tmp.format = XcmsRGBiFormat;
+
+ /* convert from RGB to CIELab */
+ if (_XcmsConvertColorsWithWhitePt(&myCCC, &tmp,
+ ScreenWhitePointOfCCC(&myCCC), 1, XcmsCIELabFormat,
+ (Bool *) NULL) == XcmsFailure) {
+ return(XcmsFailure);
+ }
+
+ /*
+ * Now check if we've reached the target L_star
+ */
+ /* printf("result Lstar = %lf\n", tmp.spec.CIELab.L_star); */
+ if (tmp.spec.CIELab.L_star <= L_star + EPS &&
+ tmp.spec.CIELab.L_star >= L_star - EPS) {
+ memcpy((char *)pColor_return, (char *)&tmp, sizeof(XcmsColor));
+ return(XcmsSuccess);
+ }
+ if (nT > 0) {
+ n_L_star += ((TOPL - n_L_star) *
+ (L_star - tmp.spec.CIELab.L_star)) / (TOPL - L_star);
+ } else {
+ n_L_star *= L_star / tmp.spec.CIELuv.L_star;
+ }
+ if (tmp.spec.CIELab.L_star <= prev_L_star + EPS &&
+ tmp.spec.CIELab.L_star >= prev_L_star - EPS) {
+ rFactor *= 0.5; /* selective relaxation employed */
+ /* printf("rFactor = %lf\n", rFactor); */
+ }
+ }
+ if (XCMS_FABS(last_L_star - L_star) <
+ XCMS_FABS(tmp.spec.CIELab.L_star - L_star)) {
+ tmp.spec.CIELab.a_star = lastaStar;
+ tmp.spec.CIELab.b_star = lastbStar;
+/* tmp.spec.CIELab.a_star = XCMS_CIEASTAROFHUE(hue, lastChroma); */
+/* tmp.spec.CIELab.b_star = XCMS_CIEBSTAROFHUE(hue, lastChroma); */
+ }
+ tmp.spec.CIELab.L_star = L_star;
+ memcpy((char *)pColor_return, (char *)&tmp, sizeof(XcmsColor));
+ return(XcmsSuccess);
+}
diff --git a/libX11/src/xcms/LabMxL.c b/libX11/src/xcms/LabMxL.c
index 34a6499a4..66ef48481 100644
--- a/libX11/src/xcms/LabMxL.c
+++ b/libX11/src/xcms/LabMxL.c
@@ -1,216 +1,216 @@
-
-/*
- * Code and supporting documentation (c) Copyright 1990 1991 Tektronix, Inc.
- * All Rights Reserved
- *
- * This file is a component of an X Window System-specific implementation
- * of XCMS based on the TekColor Color Management System. Permission is
- * hereby granted to use, copy, modify, sell, and otherwise distribute this
- * software and its documentation for any purpose and without fee, provided
- * that this copyright, permission, and disclaimer notice is reproduced in
- * all copies of this software and in supporting documentation. TekColor
- * is a trademark of Tektronix, Inc.
- *
- * Tektronix makes no representation about the suitability of this software
- * for any purpose. It is provided "as is" and with all faults.
- *
- * TEKTRONIX DISCLAIMS ALL WARRANTIES APPLICABLE TO THIS SOFTWARE,
- * INCLUDING THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE. IN NO EVENT SHALL TEKTRONIX BE LIABLE FOR ANY
- * SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER
- * RESULTING FROM LOSS OF USE, DATA, OR PROFITS, WHETHER IN AN ACTION OF
- * CONTRACT, NEGLIGENCE, OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
- * CONNECTION WITH THE USE OR THE PERFORMANCE OF THIS SOFTWARE.
- *
- * NAME
- * CIELabMxL.c
- *
- * DESCRIPTION
- * Source for the XcmsCIELabQueryMaxL() gamut boundary
- * querying routine.
- *
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-#include "Xcmsint.h"
-#include <math.h>
-#include "Cv.h"
-
-/*
- * DEFINES
- */
-#define MAXBISECTCOUNT 100
-#define EPS (XcmsFloat)0.001
-#define START_L_STAR (XcmsFloat)40
-
-
-/************************************************************************
- * *
- * PUBLIC ROUTINES *
- * *
- ************************************************************************/
-
-/*
- * NAME
- * XcmsCIELabQueryMaxL - Compute max Lstar for a hue and chroma
- *
- * SYNOPSIS
- */
-Status
-XcmsCIELabQueryMaxL(
- XcmsCCC ccc,
- XcmsFloat hue_angle, /* hue in degrees */
- XcmsFloat chroma,
- XcmsColor *pColor_return)
-/*
- * DESCRIPTION
- * Return the maximum Lstar for a specified hue_angle and chroma.
- *
- * ASSUMPTIONS
- * This routine assumes that the white point associated with
- * the color specification is the Screen White Point. The
- * Screen White Point will also be associated with the
- * returned color specification.
- *
- * RETURNS
- * XcmsFailure - Failure
- * XcmsSuccess - Succeeded with no modifications
- *
- */
-{
- XcmsCCCRec myCCC;
- XcmsColor max_lc, tmp, prev;
- XcmsFloat max_chroma, tmp_chroma;
- XcmsFloat hue, nT, nChroma, lastChroma, prevChroma;
- XcmsFloat rFactor;
- XcmsRGBi rgb_saved;
- int nCount, nMaxCount;
-
- /*
- * Check Arguments
- */
- if (ccc == NULL || pColor_return == NULL) {
- return(XcmsFailure);
- }
-
- /* setup the CCC to use for the conversions. */
- memcpy ((char *) &myCCC, (char *) ccc, sizeof(XcmsCCCRec));
- myCCC.clientWhitePt.format = XcmsUndefinedFormat;
- myCCC.gamutCompProc = (XcmsCompressionProc) NULL;
-
- while (hue_angle < 0.0) {
- hue_angle += 360.0;
- }
- while (hue_angle >= 360.0) {
- hue_angle -= 360.0;
- }
-
- hue = radians(hue_angle);
- tmp.spec.CIELab.L_star = START_L_STAR;
- tmp.spec.CIELab.a_star = XCMS_CIEASTAROFHUE(hue, chroma);
- tmp.spec.CIELab.b_star = XCMS_CIEBSTAROFHUE(hue, chroma);
- tmp.pixel = pColor_return->pixel;
- tmp.format = XcmsCIELabFormat;
-
- /* Step 1: Obtain the maximum L_star and chroma for this hue. */
- if (_XcmsCIELabQueryMaxLCRGB(&myCCC, hue, &max_lc, &rgb_saved)
- == XcmsFailure) {
- return(XcmsFailure);
- }
-
- max_chroma = XCMS_CIELAB_PMETRIC_CHROMA(max_lc.spec.CIELab.a_star,
- max_lc.spec.CIELab.b_star);
-
- if (max_chroma <= chroma) {
- /*
- * If the chroma is greater than the chroma for the
- * maximum L/chroma point then the L_star is the
- * the L_star for the maximum L_star/chroma point.
- * This is an error but I return the best approximation I can.
- * Thus the inconsistency.
- */
- memcpy ((char *) pColor_return, (char *) &max_lc, sizeof (XcmsColor));
- return(XcmsSuccess);
- }
-
- /*
- * If the chroma is equal to the chroma for the
- * maximum L_star/chroma point then the L_star is the
- * the L_star for the maximum L* and chroma point.
- */
- /* if (max_chroma == chroma) {
- * memcpy ((char *) pColor_return, (char *) &max_lc, sizeof (XcmsColor));
- * return(XcmsSuccess);
- * }
- */
-
- /* must do a bisection here to compute the maximum L* */
- /* save the structure input so that any elements that */
- /* are not touched are recopied later in the routine. */
- nChroma = chroma;
- tmp_chroma = max_chroma;
- lastChroma = -1.0;
- nMaxCount = MAXBISECTCOUNT;
- rFactor = 1.0;
-
- for (nCount = 0; nCount < nMaxCount; nCount++) {
- prevChroma = lastChroma;
- lastChroma = tmp_chroma;
- nT = (1.0 - (nChroma / max_chroma)) * rFactor;
- memcpy ((char *)&prev, (char *)&tmp, sizeof(XcmsColor));
- tmp.spec.RGBi.red = rgb_saved.red * (1.0 - nT) + nT;
- tmp.spec.RGBi.green = rgb_saved.green * (1.0 - nT) + nT;
- tmp.spec.RGBi.blue = rgb_saved.blue * (1.0 - nT) + nT;
- tmp.format = XcmsRGBiFormat;
-
- /* convert from RGB to CIELab */
- if (_XcmsConvertColorsWithWhitePt(&myCCC, &tmp,
- ScreenWhitePointOfCCC(&myCCC), 1, XcmsCIELabFormat,
- (Bool *) NULL) == XcmsFailure) {
- return(XcmsFailure);
- }
-
- /* Now check the return against what is expected */
- tmp_chroma = XCMS_CIELAB_PMETRIC_CHROMA(tmp.spec.CIELab.a_star,
- tmp.spec.CIELab.b_star);
- if (tmp_chroma <= chroma + EPS && tmp_chroma >= chroma - EPS) {
- /* Found It! */
- memcpy ((char *) pColor_return, (char *) &tmp, sizeof (XcmsColor));
- return(XcmsSuccess);
- }
- nChroma += chroma - tmp_chroma;
- if (nChroma > max_chroma) {
- nChroma = max_chroma;
- rFactor *= 0.5; /* selective relaxation employed */
- } else if (nChroma < 0.0) {
- if (XCMS_FABS(lastChroma - chroma) <
- XCMS_FABS(tmp_chroma - chroma)) {
- memcpy ((char *)pColor_return, (char *)&prev,
- sizeof(XcmsColor));
- } else {
- memcpy ((char *)pColor_return, (char *)&tmp,
- sizeof(XcmsColor));
- }
- return(XcmsSuccess);
- } else if (tmp_chroma <= prevChroma + EPS &&
- tmp_chroma >= prevChroma - EPS) {
- rFactor *= 0.5; /* selective relaxation employed */
- }
- }
-
- if (nCount >= nMaxCount) {
- if (XCMS_FABS(lastChroma - chroma) <
- XCMS_FABS(tmp_chroma - chroma)) {
- memcpy ((char *)pColor_return, (char *)&prev,
- sizeof(XcmsColor));
- } else {
- memcpy ((char *)pColor_return, (char *)&tmp,
- sizeof(XcmsColor));
- }
- }
- memcpy ((char *) pColor_return, (char *) &tmp, sizeof (XcmsColor));
- return(XcmsSuccess);
-}
+
+/*
+ * Code and supporting documentation (c) Copyright 1990 1991 Tektronix, Inc.
+ * All Rights Reserved
+ *
+ * This file is a component of an X Window System-specific implementation
+ * of XCMS based on the TekColor Color Management System. Permission is
+ * hereby granted to use, copy, modify, sell, and otherwise distribute this
+ * software and its documentation for any purpose and without fee, provided
+ * that this copyright, permission, and disclaimer notice is reproduced in
+ * all copies of this software and in supporting documentation. TekColor
+ * is a trademark of Tektronix, Inc.
+ *
+ * Tektronix makes no representation about the suitability of this software
+ * for any purpose. It is provided "as is" and with all faults.
+ *
+ * TEKTRONIX DISCLAIMS ALL WARRANTIES APPLICABLE TO THIS SOFTWARE,
+ * INCLUDING THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+ * PARTICULAR PURPOSE. IN NO EVENT SHALL TEKTRONIX BE LIABLE FOR ANY
+ * SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER
+ * RESULTING FROM LOSS OF USE, DATA, OR PROFITS, WHETHER IN AN ACTION OF
+ * CONTRACT, NEGLIGENCE, OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
+ * CONNECTION WITH THE USE OR THE PERFORMANCE OF THIS SOFTWARE.
+ *
+ * NAME
+ * CIELabMxL.c
+ *
+ * DESCRIPTION
+ * Source for the XcmsCIELabQueryMaxL() gamut boundary
+ * querying routine.
+ *
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+#include "Xcmsint.h"
+#include <math.h>
+#include "Cv.h"
+
+/*
+ * DEFINES
+ */
+#define MAXBISECTCOUNT 100
+#define EPS (XcmsFloat)0.001
+#define START_L_STAR (XcmsFloat)40
+
+
+/************************************************************************
+ * *
+ * PUBLIC ROUTINES *
+ * *
+ ************************************************************************/
+
+/*
+ * NAME
+ * XcmsCIELabQueryMaxL - Compute max Lstar for a hue and chroma
+ *
+ * SYNOPSIS
+ */
+Status
+XcmsCIELabQueryMaxL(
+ XcmsCCC ccc,
+ XcmsFloat hue_angle, /* hue in degrees */
+ XcmsFloat chroma,
+ XcmsColor *pColor_return)
+/*
+ * DESCRIPTION
+ * Return the maximum Lstar for a specified hue_angle and chroma.
+ *
+ * ASSUMPTIONS
+ * This routine assumes that the white point associated with
+ * the color specification is the Screen White Point. The
+ * Screen White Point will also be associated with the
+ * returned color specification.
+ *
+ * RETURNS
+ * XcmsFailure - Failure
+ * XcmsSuccess - Succeeded with no modifications
+ *
+ */
+{
+ XcmsCCCRec myCCC;
+ XcmsColor max_lc, tmp, prev;
+ XcmsFloat max_chroma, tmp_chroma;
+ XcmsFloat hue, nT, nChroma, lastChroma, prevChroma;
+ XcmsFloat rFactor;
+ XcmsRGBi rgb_saved;
+ int nCount, nMaxCount;
+
+ /*
+ * Check Arguments
+ */
+ if (ccc == NULL || pColor_return == NULL) {
+ return(XcmsFailure);
+ }
+
+ /* setup the CCC to use for the conversions. */
+ memcpy ((char *) &myCCC, (char *) ccc, sizeof(XcmsCCCRec));
+ myCCC.clientWhitePt.format = XcmsUndefinedFormat;
+ myCCC.gamutCompProc = (XcmsCompressionProc) NULL;
+
+ while (hue_angle < 0.0) {
+ hue_angle += 360.0;
+ }
+ while (hue_angle >= 360.0) {
+ hue_angle -= 360.0;
+ }
+
+ hue = radians(hue_angle);
+ tmp.spec.CIELab.L_star = START_L_STAR;
+ tmp.spec.CIELab.a_star = XCMS_CIEASTAROFHUE(hue, chroma);
+ tmp.spec.CIELab.b_star = XCMS_CIEBSTAROFHUE(hue, chroma);
+ tmp.pixel = pColor_return->pixel;
+ tmp.format = XcmsCIELabFormat;
+
+ /* Step 1: Obtain the maximum L_star and chroma for this hue. */
+ if (_XcmsCIELabQueryMaxLCRGB(&myCCC, hue, &max_lc, &rgb_saved)
+ == XcmsFailure) {
+ return(XcmsFailure);
+ }
+
+ max_chroma = XCMS_CIELAB_PMETRIC_CHROMA(max_lc.spec.CIELab.a_star,
+ max_lc.spec.CIELab.b_star);
+
+ if (max_chroma <= chroma) {
+ /*
+ * If the chroma is greater than the chroma for the
+ * maximum L/chroma point then the L_star is the
+ * the L_star for the maximum L_star/chroma point.
+ * This is an error but I return the best approximation I can.
+ * Thus the inconsistency.
+ */
+ memcpy ((char *) pColor_return, (char *) &max_lc, sizeof (XcmsColor));
+ return(XcmsSuccess);
+ }
+
+ /*
+ * If the chroma is equal to the chroma for the
+ * maximum L_star/chroma point then the L_star is the
+ * the L_star for the maximum L* and chroma point.
+ */
+ /* if (max_chroma == chroma) {
+ * memcpy ((char *) pColor_return, (char *) &max_lc, sizeof (XcmsColor));
+ * return(XcmsSuccess);
+ * }
+ */
+
+ /* must do a bisection here to compute the maximum L* */
+ /* save the structure input so that any elements that */
+ /* are not touched are recopied later in the routine. */
+ nChroma = chroma;
+ tmp_chroma = max_chroma;
+ lastChroma = -1.0;
+ nMaxCount = MAXBISECTCOUNT;
+ rFactor = 1.0;
+
+ for (nCount = 0; nCount < nMaxCount; nCount++) {
+ prevChroma = lastChroma;
+ lastChroma = tmp_chroma;
+ nT = (1.0 - (nChroma / max_chroma)) * rFactor;
+ memcpy ((char *)&prev, (char *)&tmp, sizeof(XcmsColor));
+ tmp.spec.RGBi.red = rgb_saved.red * (1.0 - nT) + nT;
+ tmp.spec.RGBi.green = rgb_saved.green * (1.0 - nT) + nT;
+ tmp.spec.RGBi.blue = rgb_saved.blue * (1.0 - nT) + nT;
+ tmp.format = XcmsRGBiFormat;
+
+ /* convert from RGB to CIELab */
+ if (_XcmsConvertColorsWithWhitePt(&myCCC, &tmp,
+ ScreenWhitePointOfCCC(&myCCC), 1, XcmsCIELabFormat,
+ (Bool *) NULL) == XcmsFailure) {
+ return(XcmsFailure);
+ }
+
+ /* Now check the return against what is expected */
+ tmp_chroma = XCMS_CIELAB_PMETRIC_CHROMA(tmp.spec.CIELab.a_star,
+ tmp.spec.CIELab.b_star);
+ if (tmp_chroma <= chroma + EPS && tmp_chroma >= chroma - EPS) {
+ /* Found It! */
+ memcpy ((char *) pColor_return, (char *) &tmp, sizeof (XcmsColor));
+ return(XcmsSuccess);
+ }
+ nChroma += chroma - tmp_chroma;
+ if (nChroma > max_chroma) {
+ nChroma = max_chroma;
+ rFactor *= 0.5; /* selective relaxation employed */
+ } else if (nChroma < 0.0) {
+ if (XCMS_FABS(lastChroma - chroma) <
+ XCMS_FABS(tmp_chroma - chroma)) {
+ memcpy ((char *)pColor_return, (char *)&prev,
+ sizeof(XcmsColor));
+ } else {
+ memcpy ((char *)pColor_return, (char *)&tmp,
+ sizeof(XcmsColor));
+ }
+ return(XcmsSuccess);
+ } else if (tmp_chroma <= prevChroma + EPS &&
+ tmp_chroma >= prevChroma - EPS) {
+ rFactor *= 0.5; /* selective relaxation employed */
+ }
+ }
+
+ if (nCount >= nMaxCount) {
+ if (XCMS_FABS(lastChroma - chroma) <
+ XCMS_FABS(tmp_chroma - chroma)) {
+ memcpy ((char *)pColor_return, (char *)&prev,
+ sizeof(XcmsColor));
+ } else {
+ memcpy ((char *)pColor_return, (char *)&tmp,
+ sizeof(XcmsColor));
+ }
+ }
+ memcpy ((char *) pColor_return, (char *) &tmp, sizeof (XcmsColor));
+ return(XcmsSuccess);
+}
diff --git a/libX11/src/xcms/LabMxLC.c b/libX11/src/xcms/LabMxLC.c
index a81c7cfbf..8cc089a22 100644
--- a/libX11/src/xcms/LabMxLC.c
+++ b/libX11/src/xcms/LabMxLC.c
@@ -1,218 +1,218 @@
-
-/*
- * Code and supporting documentation (c) Copyright 1990 1991 Tektronix, Inc.
- * All Rights Reserved
- *
- * This file is a component of an X Window System-specific implementation
- * of XCMS based on the TekColor Color Management System. Permission is
- * hereby granted to use, copy, modify, sell, and otherwise distribute this
- * software and its documentation for any purpose and without fee, provided
- * that this copyright, permission, and disclaimer notice is reproduced in
- * all copies of this software and in supporting documentation. TekColor
- * is a trademark of Tektronix, Inc.
- *
- * Tektronix makes no representation about the suitability of this software
- * for any purpose. It is provided "as is" and with all faults.
- *
- * TEKTRONIX DISCLAIMS ALL WARRANTIES APPLICABLE TO THIS SOFTWARE,
- * INCLUDING THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE. IN NO EVENT SHALL TEKTRONIX BE LIABLE FOR ANY
- * SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER
- * RESULTING FROM LOSS OF USE, DATA, OR PROFITS, WHETHER IN AN ACTION OF
- * CONTRACT, NEGLIGENCE, OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
- * CONNECTION WITH THE USE OR THE PERFORMANCE OF THIS SOFTWARE.
- *
- *
- *
- * NAME
- * CIELabMxVC.c
- *
- * DESCRIPTION
- * Source for the XcmsCIELabQueryMaxLC() gamut boundary
- * querying routine.
- *
- * DOCUMENTATION
- * "TekColor Color Management System, System Implementor's Manual"
- * and
- * Fred W. Billmeyer & Max Saltzman, "Principles of Color
- * Technology", John Wily & Sons, Inc, 1981.
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-#include "Xcmsint.h"
-#include "Cv.h"
-
-/*
- * DEFINES
- */
-#define MIN(x,y) ((x) > (y) ? (y) : (x))
-#define MIN3(x,y,z) ((x) > (MIN((y), (z))) ? (MIN((y), (z))) : (x))
-#define MAX(x,y) ((x) > (y) ? (x) : (y))
-#define MAX3(x,y,z) ((x) > (MAX((y), (z))) ? (x) : (MAX((y), (z))))
-#define START_LSTAR (XcmsFloat)40.0
-#define START_CHROMA (XcmsFloat)3.6
-
-
-/************************************************************************
- * *
- * API PRIVATE ROUTINES *
- * *
- ************************************************************************/
-
-/*
- * NAME
- * _XcmsCIELabQueryMaxLCRGB - Compute maximum L* and chroma.
- *
- * SYNOPSIS
- */
-Status
-_XcmsCIELabQueryMaxLCRGB(
- XcmsCCC ccc,
- XcmsFloat hue, /* hue in radians */
- XcmsColor *pColor_return,
- XcmsRGBi *pRGB_return)
-/*
- * DESCRIPTION
- * Return the maximum psychometric chroma for a specified
- * hue, and the corresponding L*. This is computed
- * by a binary search of all possible chromas. An assumption
- * is made that there are no local maxima. Use the unrounded
- * Max psychometric chroma because the difference check can be
- * small.
- *
- * NOTE: No local CCC is used because this is a private
- * routine and all routines that call it are expected
- * to behave properly, i.e. send a local CCC with
- * no white adjust function and no gamut compression
- * function.
- *
- * This routine only accepts hue in radians as input and outputs
- * Lab and RGBi.
- *
- * RETURNS
- * XcmsFailure - Failure
- * XcmsSuccess - Succeeded
- *
- */
-{
- XcmsFloat nSmall, nLarge;
- XcmsColor tmp;
-
- tmp.format = XcmsCIELabFormat;
- /* Use some unreachable color on the given hue */
- tmp.spec.CIELab.L_star = START_LSTAR;
- tmp.spec.CIELab.a_star = XCMS_CIEASTAROFHUE(hue, START_CHROMA);
- tmp.spec.CIELab.b_star = XCMS_CIEBSTAROFHUE(hue, START_CHROMA);
- /*
- * Convert from Lab to RGB
- *
- * Note that the CIEXYZ to RGBi conversion routine must stuff the
- * out of bounds RGBi values in tmp when the ccc->gamutCompProc
- * is NULL.
- */
- if ((_XcmsConvertColorsWithWhitePt(ccc, &tmp, ScreenWhitePointOfCCC(ccc),
- (unsigned int)1, XcmsRGBiFormat, (Bool *) NULL)
- == XcmsFailure) && tmp.format != XcmsRGBiFormat) {
- return (XcmsFailure);
- }
-
- /* Now pick the smallest RGB */
- nSmall = MIN3(tmp.spec.RGBi.red,
- tmp.spec.RGBi.green,
- tmp.spec.RGBi.blue);
- /* Make the smallest RGB equal to zero */
- tmp.spec.RGBi.red -= nSmall;
- tmp.spec.RGBi.green -= nSmall;
- tmp.spec.RGBi.blue -= nSmall;
-
- /* Now pick the largest RGB */
- nLarge = MAX3(tmp.spec.RGBi.red,
- tmp.spec.RGBi.green,
- tmp.spec.RGBi.blue);
- /* Scale the RGB values based on the largest one */
- tmp.spec.RGBi.red /= nLarge;
- tmp.spec.RGBi.green /= nLarge;
- tmp.spec.RGBi.blue /= nLarge;
- tmp.format = XcmsRGBiFormat;
-
- /* If the calling routine wants RGB value give them the ones used. */
- if (pRGB_return) {
- pRGB_return->red = tmp.spec.RGBi.red;
- pRGB_return->green = tmp.spec.RGBi.green;
- pRGB_return->blue = tmp.spec.RGBi.blue;
- }
-
- /* Convert from RGBi to Lab */
- if (_XcmsConvertColorsWithWhitePt(ccc, &tmp,
- ScreenWhitePointOfCCC(ccc), 1, XcmsCIELabFormat, (Bool *) NULL)
- == XcmsFailure) {
- return (XcmsFailure);
- }
-
- memcpy((char *)pColor_return, (char *)&tmp, sizeof(XcmsColor));
- return (XcmsSuccess);
-}
-
-
-/************************************************************************
- * *
- * PUBLIC ROUTINES *
- * *
- ************************************************************************/
-
-/*
- * NAME
- * XcmsCIELabQueryMaxLC - Compute maximum L* and chroma.
- *
- * SYNOPSIS
- */
-Status
-XcmsCIELabQueryMaxLC (
- XcmsCCC ccc,
- XcmsFloat hue_angle, /* hue_angle in degrees */
- XcmsColor *pColor_return)
-
-/*
- * DESCRIPTION
- * Return the point of maximum chroma for the specified
- * hue_angle.
- *
- * ASSUMPTIONS
- * This routine assumes that the white point associated with
- * the color specification is the Screen White Point. The
- * Screen White Point will also be associated with the
- * returned color specification.
- *
- * RETURNS
- * XcmsFailure - Failure
- * XcmsSuccess - Succeeded
- *
- */
-{
- XcmsCCCRec myCCC;
-
- /*
- * Check Arguments
- */
- if (ccc == NULL || pColor_return == NULL) {
- return(XcmsFailure);
- }
-
- /* Use my own CCC */
- memcpy ((char *)&myCCC, (char *)ccc, sizeof(XcmsCCCRec));
- myCCC.clientWhitePt.format = XcmsUndefinedFormat;
- myCCC.gamutCompProc = (XcmsCompressionProc)NULL;
-
- while (hue_angle < 0.0) {
- hue_angle += 360.0;
- }
- while (hue_angle >= 360.0) {
- hue_angle -= 360.0;
- }
-
- return(_XcmsCIELabQueryMaxLCRGB (&myCCC, radians(hue_angle), pColor_return,
- (XcmsRGBi *)NULL));
-}
+
+/*
+ * Code and supporting documentation (c) Copyright 1990 1991 Tektronix, Inc.
+ * All Rights Reserved
+ *
+ * This file is a component of an X Window System-specific implementation
+ * of XCMS based on the TekColor Color Management System. Permission is
+ * hereby granted to use, copy, modify, sell, and otherwise distribute this
+ * software and its documentation for any purpose and without fee, provided
+ * that this copyright, permission, and disclaimer notice is reproduced in
+ * all copies of this software and in supporting documentation. TekColor
+ * is a trademark of Tektronix, Inc.
+ *
+ * Tektronix makes no representation about the suitability of this software
+ * for any purpose. It is provided "as is" and with all faults.
+ *
+ * TEKTRONIX DISCLAIMS ALL WARRANTIES APPLICABLE TO THIS SOFTWARE,
+ * INCLUDING THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+ * PARTICULAR PURPOSE. IN NO EVENT SHALL TEKTRONIX BE LIABLE FOR ANY
+ * SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER
+ * RESULTING FROM LOSS OF USE, DATA, OR PROFITS, WHETHER IN AN ACTION OF
+ * CONTRACT, NEGLIGENCE, OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
+ * CONNECTION WITH THE USE OR THE PERFORMANCE OF THIS SOFTWARE.
+ *
+ *
+ *
+ * NAME
+ * CIELabMxVC.c
+ *
+ * DESCRIPTION
+ * Source for the XcmsCIELabQueryMaxLC() gamut boundary
+ * querying routine.
+ *
+ * DOCUMENTATION
+ * "TekColor Color Management System, System Implementor's Manual"
+ * and
+ * Fred W. Billmeyer & Max Saltzman, "Principles of Color
+ * Technology", John Wily & Sons, Inc, 1981.
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+#include "Xcmsint.h"
+#include "Cv.h"
+
+/*
+ * DEFINES
+ */
+#define MIN(x,y) ((x) > (y) ? (y) : (x))
+#define MIN3(x,y,z) ((x) > (MIN((y), (z))) ? (MIN((y), (z))) : (x))
+#define MAX(x,y) ((x) > (y) ? (x) : (y))
+#define MAX3(x,y,z) ((x) > (MAX((y), (z))) ? (x) : (MAX((y), (z))))
+#define START_LSTAR (XcmsFloat)40.0
+#define START_CHROMA (XcmsFloat)3.6
+
+
+/************************************************************************
+ * *
+ * API PRIVATE ROUTINES *
+ * *
+ ************************************************************************/
+
+/*
+ * NAME
+ * _XcmsCIELabQueryMaxLCRGB - Compute maximum L* and chroma.
+ *
+ * SYNOPSIS
+ */
+Status
+_XcmsCIELabQueryMaxLCRGB(
+ XcmsCCC ccc,
+ XcmsFloat hue, /* hue in radians */
+ XcmsColor *pColor_return,
+ XcmsRGBi *pRGB_return)
+/*
+ * DESCRIPTION
+ * Return the maximum psychometric chroma for a specified
+ * hue, and the corresponding L*. This is computed
+ * by a binary search of all possible chromas. An assumption
+ * is made that there are no local maxima. Use the unrounded
+ * Max psychometric chroma because the difference check can be
+ * small.
+ *
+ * NOTE: No local CCC is used because this is a private
+ * routine and all routines that call it are expected
+ * to behave properly, i.e. send a local CCC with
+ * no white adjust function and no gamut compression
+ * function.
+ *
+ * This routine only accepts hue in radians as input and outputs
+ * Lab and RGBi.
+ *
+ * RETURNS
+ * XcmsFailure - Failure
+ * XcmsSuccess - Succeeded
+ *
+ */
+{
+ XcmsFloat nSmall, nLarge;
+ XcmsColor tmp;
+
+ tmp.format = XcmsCIELabFormat;
+ /* Use some unreachable color on the given hue */
+ tmp.spec.CIELab.L_star = START_LSTAR;
+ tmp.spec.CIELab.a_star = XCMS_CIEASTAROFHUE(hue, START_CHROMA);
+ tmp.spec.CIELab.b_star = XCMS_CIEBSTAROFHUE(hue, START_CHROMA);
+ /*
+ * Convert from Lab to RGB
+ *
+ * Note that the CIEXYZ to RGBi conversion routine must stuff the
+ * out of bounds RGBi values in tmp when the ccc->gamutCompProc
+ * is NULL.
+ */
+ if ((_XcmsConvertColorsWithWhitePt(ccc, &tmp, ScreenWhitePointOfCCC(ccc),
+ (unsigned int)1, XcmsRGBiFormat, (Bool *) NULL)
+ == XcmsFailure) && tmp.format != XcmsRGBiFormat) {
+ return (XcmsFailure);
+ }
+
+ /* Now pick the smallest RGB */
+ nSmall = MIN3(tmp.spec.RGBi.red,
+ tmp.spec.RGBi.green,
+ tmp.spec.RGBi.blue);
+ /* Make the smallest RGB equal to zero */
+ tmp.spec.RGBi.red -= nSmall;
+ tmp.spec.RGBi.green -= nSmall;
+ tmp.spec.RGBi.blue -= nSmall;
+
+ /* Now pick the largest RGB */
+ nLarge = MAX3(tmp.spec.RGBi.red,
+ tmp.spec.RGBi.green,
+ tmp.spec.RGBi.blue);
+ /* Scale the RGB values based on the largest one */
+ tmp.spec.RGBi.red /= nLarge;
+ tmp.spec.RGBi.green /= nLarge;
+ tmp.spec.RGBi.blue /= nLarge;
+ tmp.format = XcmsRGBiFormat;
+
+ /* If the calling routine wants RGB value give them the ones used. */
+ if (pRGB_return) {
+ pRGB_return->red = tmp.spec.RGBi.red;
+ pRGB_return->green = tmp.spec.RGBi.green;
+ pRGB_return->blue = tmp.spec.RGBi.blue;
+ }
+
+ /* Convert from RGBi to Lab */
+ if (_XcmsConvertColorsWithWhitePt(ccc, &tmp,
+ ScreenWhitePointOfCCC(ccc), 1, XcmsCIELabFormat, (Bool *) NULL)
+ == XcmsFailure) {
+ return (XcmsFailure);
+ }
+
+ memcpy((char *)pColor_return, (char *)&tmp, sizeof(XcmsColor));
+ return (XcmsSuccess);
+}
+
+
+/************************************************************************
+ * *
+ * PUBLIC ROUTINES *
+ * *
+ ************************************************************************/
+
+/*
+ * NAME
+ * XcmsCIELabQueryMaxLC - Compute maximum L* and chroma.
+ *
+ * SYNOPSIS
+ */
+Status
+XcmsCIELabQueryMaxLC (
+ XcmsCCC ccc,
+ XcmsFloat hue_angle, /* hue_angle in degrees */
+ XcmsColor *pColor_return)
+
+/*
+ * DESCRIPTION
+ * Return the point of maximum chroma for the specified
+ * hue_angle.
+ *
+ * ASSUMPTIONS
+ * This routine assumes that the white point associated with
+ * the color specification is the Screen White Point. The
+ * Screen White Point will also be associated with the
+ * returned color specification.
+ *
+ * RETURNS
+ * XcmsFailure - Failure
+ * XcmsSuccess - Succeeded
+ *
+ */
+{
+ XcmsCCCRec myCCC;
+
+ /*
+ * Check Arguments
+ */
+ if (ccc == NULL || pColor_return == NULL) {
+ return(XcmsFailure);
+ }
+
+ /* Use my own CCC */
+ memcpy ((char *)&myCCC, (char *)ccc, sizeof(XcmsCCCRec));
+ myCCC.clientWhitePt.format = XcmsUndefinedFormat;
+ myCCC.gamutCompProc = (XcmsCompressionProc)NULL;
+
+ while (hue_angle < 0.0) {
+ hue_angle += 360.0;
+ }
+ while (hue_angle >= 360.0) {
+ hue_angle -= 360.0;
+ }
+
+ return(_XcmsCIELabQueryMaxLCRGB (&myCCC, radians(hue_angle), pColor_return,
+ (XcmsRGBi *)NULL));
+}
diff --git a/libX11/src/xcms/LabWpAj.c b/libX11/src/xcms/LabWpAj.c
index 6ec7fff8e..0559fdee3 100644
--- a/libX11/src/xcms/LabWpAj.c
+++ b/libX11/src/xcms/LabWpAj.c
@@ -1,97 +1,97 @@
-
-/*
- * Code and supporting documentation (c) Copyright 1990 1991 Tektronix, Inc.
- * All Rights Reserved
- *
- * This file is a component of an X Window System-specific implementation
- * of XCMS based on the TekColor Color Management System. Permission is
- * hereby granted to use, copy, modify, sell, and otherwise distribute this
- * software and its documentation for any purpose and without fee, provided
- * that this copyright, permission, and disclaimer notice is reproduced in
- * all copies of this software and in supporting documentation. TekColor
- * is a trademark of Tektronix, Inc.
- *
- * Tektronix makes no representation about the suitability of this software
- * for any purpose. It is provided "as is" and with all faults.
- *
- * TEKTRONIX DISCLAIMS ALL WARRANTIES APPLICABLE TO THIS SOFTWARE,
- * INCLUDING THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE. IN NO EVENT SHALL TEKTRONIX BE LIABLE FOR ANY
- * SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER
- * RESULTING FROM LOSS OF USE, DATA, OR PROFITS, WHETHER IN AN ACTION OF
- * CONTRACT, NEGLIGENCE, OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
- * CONNECTION WITH THE USE OR THE PERFORMANCE OF THIS SOFTWARE.
- *
- *
- * NAME
- * CIELabWpAj.c
- *
- * DESCRIPTION
- * This file contains routine(s) that support white point
- * adjustment of color specifications in the CIE L*a*b* color
- * space.
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-#include "Xcmsint.h"
-#include "Cv.h"
-
-/*
- * EXTERNS
- */
-
-
-/************************************************************************
- * *
- * PUBLIC ROUTINES *
- * *
- ************************************************************************/
-
-/*
- * NAME
- * XcmsCIELabWhiteShiftColors
- *
- * SYNOPSIS
- */
-Status
-XcmsCIELabWhiteShiftColors(
- XcmsCCC ccc,
- XcmsColor *pWhitePtFrom,
- XcmsColor *pWhitePtTo,
- XcmsColorFormat destSpecFmt,
- XcmsColor *pColors_in_out,
- unsigned int nColors,
- Bool *pCompressed)
-/*
- * DESCRIPTION
- * Adjust color specifications in XcmsColor structures for
- * differences in white points.
- *
- * RETURNS
- * XcmsFailure if failed,
- * XcmsSuccess if succeeded without gamut compression,
- * XcmsSuccessWithCompression if succeeded with gamut
- * compression.
- */
-{
- if (pWhitePtFrom == NULL || pWhitePtTo == NULL || pColors_in_out == NULL) {
- return(0);
- }
-
- /*
- * Convert to CIELab using pWhitePtFrom
- */
- if (_XcmsConvertColorsWithWhitePt(ccc, pColors_in_out, pWhitePtFrom,
- nColors, XcmsCIELabFormat, pCompressed) == XcmsFailure) {
- return(XcmsFailure);
- }
-
- /*
- * Convert from CIELab to destSpecFmt using pWhitePtTo
- */
- return(_XcmsConvertColorsWithWhitePt(ccc, pColors_in_out,
- pWhitePtTo, nColors, destSpecFmt, pCompressed));
-}
+
+/*
+ * Code and supporting documentation (c) Copyright 1990 1991 Tektronix, Inc.
+ * All Rights Reserved
+ *
+ * This file is a component of an X Window System-specific implementation
+ * of XCMS based on the TekColor Color Management System. Permission is
+ * hereby granted to use, copy, modify, sell, and otherwise distribute this
+ * software and its documentation for any purpose and without fee, provided
+ * that this copyright, permission, and disclaimer notice is reproduced in
+ * all copies of this software and in supporting documentation. TekColor
+ * is a trademark of Tektronix, Inc.
+ *
+ * Tektronix makes no representation about the suitability of this software
+ * for any purpose. It is provided "as is" and with all faults.
+ *
+ * TEKTRONIX DISCLAIMS ALL WARRANTIES APPLICABLE TO THIS SOFTWARE,
+ * INCLUDING THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+ * PARTICULAR PURPOSE. IN NO EVENT SHALL TEKTRONIX BE LIABLE FOR ANY
+ * SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER
+ * RESULTING FROM LOSS OF USE, DATA, OR PROFITS, WHETHER IN AN ACTION OF
+ * CONTRACT, NEGLIGENCE, OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
+ * CONNECTION WITH THE USE OR THE PERFORMANCE OF THIS SOFTWARE.
+ *
+ *
+ * NAME
+ * CIELabWpAj.c
+ *
+ * DESCRIPTION
+ * This file contains routine(s) that support white point
+ * adjustment of color specifications in the CIE L*a*b* color
+ * space.
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+#include "Xcmsint.h"
+#include "Cv.h"
+
+/*
+ * EXTERNS
+ */
+
+
+/************************************************************************
+ * *
+ * PUBLIC ROUTINES *
+ * *
+ ************************************************************************/
+
+/*
+ * NAME
+ * XcmsCIELabWhiteShiftColors
+ *
+ * SYNOPSIS
+ */
+Status
+XcmsCIELabWhiteShiftColors(
+ XcmsCCC ccc,
+ XcmsColor *pWhitePtFrom,
+ XcmsColor *pWhitePtTo,
+ XcmsColorFormat destSpecFmt,
+ XcmsColor *pColors_in_out,
+ unsigned int nColors,
+ Bool *pCompressed)
+/*
+ * DESCRIPTION
+ * Adjust color specifications in XcmsColor structures for
+ * differences in white points.
+ *
+ * RETURNS
+ * XcmsFailure if failed,
+ * XcmsSuccess if succeeded without gamut compression,
+ * XcmsSuccessWithCompression if succeeded with gamut
+ * compression.
+ */
+{
+ if (pWhitePtFrom == NULL || pWhitePtTo == NULL || pColors_in_out == NULL) {
+ return(0);
+ }
+
+ /*
+ * Convert to CIELab using pWhitePtFrom
+ */
+ if (_XcmsConvertColorsWithWhitePt(ccc, pColors_in_out, pWhitePtFrom,
+ nColors, XcmsCIELabFormat, pCompressed) == XcmsFailure) {
+ return(XcmsFailure);
+ }
+
+ /*
+ * Convert from CIELab to destSpecFmt using pWhitePtTo
+ */
+ return(_XcmsConvertColorsWithWhitePt(ccc, pColors_in_out,
+ pWhitePtTo, nColors, destSpecFmt, pCompressed));
+}
diff --git a/libX11/src/xcms/Luv.c b/libX11/src/xcms/Luv.c
index 0b1325252..82bc2946a 100644
--- a/libX11/src/xcms/Luv.c
+++ b/libX11/src/xcms/Luv.c
@@ -1,401 +1,401 @@
-
-/*
- * Code and supporting documentation (c) Copyright 1990 1991 Tektronix, Inc.
- * All Rights Reserved
- *
- * This file is a component of an X Window System-specific implementation
- * of XCMS based on the TekColor Color Management System. Permission is
- * hereby granted to use, copy, modify, sell, and otherwise distribute this
- * software and its documentation for any purpose and without fee, provided
- * that this copyright, permission, and disclaimer notice is reproduced in
- * all copies of this software and in supporting documentation. TekColor
- * is a trademark of Tektronix, Inc.
- *
- * Tektronix makes no representation about the suitability of this software
- * for any purpose. It is provided "as is" and with all faults.
- *
- * TEKTRONIX DISCLAIMS ALL WARRANTIES APPLICABLE TO THIS SOFTWARE,
- * INCLUDING THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE. IN NO EVENT SHALL TEKTRONIX BE LIABLE FOR ANY
- * SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER
- * RESULTING FROM LOSS OF USE, DATA, OR PROFITS, WHETHER IN AN ACTION OF
- * CONTRACT, NEGLIGENCE, OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
- * CONNECTION WITH THE USE OR THE PERFORMANCE OF THIS SOFTWARE.
- *
- *
- * NAME
- * CIELuv.c
- *
- * DESCRIPTION
- * This file contains routines that support the CIE L*u*v*
- * color space to include conversions to and from the CIE
- * XYZ space.
- *
- * DOCUMENTATION
- * "TekColor Color Management System, System Implementor's Manual"
- * and
- * Fred W. Billmeyer & Max Saltzman, "Principles of Color
- * Technology", John Wily & Sons, Inc, 1981.
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include <X11/Xos.h>
-#include "Xlibint.h"
-#include "Xcmsint.h"
-#include "Cv.h"
-
-#include <stdio.h> /* sscanf */
-
-
-/*
- * FORWARD DECLARATIONS
- */
-
-static int CIELuv_ParseString(register char *spec, XcmsColor *pColor);
-static Status XcmsCIELuv_ValidSpec(XcmsColor *pColor);
-
-/*
- * DEFINES
- * Internal definitions that need NOT be exported to any package
- * or program using this package.
- */
-#ifdef DBL_EPSILON
-# define XMY_DBL_EPSILON DBL_EPSILON
-#else
-# define XMY_DBL_EPSILON 0.00001
-#endif
-
-
-/*
- * LOCAL VARIABLES
- */
-
- /*
- * NULL terminated list of functions applied to get from CIELuv to CIEXYZ
- */
-static XcmsConversionProc Fl_CIELuv_to_CIEXYZ[] = {
- XcmsCIELuvToCIEuvY,
- XcmsCIEuvYToCIEXYZ,
- NULL
-};
-
- /*
- * NULL terminated list of functions applied to get from CIEXYZ to CIELuv
- */
-static XcmsConversionProc Fl_CIEXYZ_to_CIELuv[] = {
- XcmsCIEXYZToCIEuvY,
- XcmsCIEuvYToCIELuv,
- NULL
-};
-
-/*
- * GLOBALS
- */
-
- /*
- * CIE Luv Color Space
- */
-XcmsColorSpace XcmsCIELuvColorSpace =
- {
- _XcmsCIELuv_prefix, /* prefix */
- XcmsCIELuvFormat, /* id */
- CIELuv_ParseString, /* parseString */
- Fl_CIELuv_to_CIEXYZ, /* to_CIEXYZ */
- Fl_CIEXYZ_to_CIELuv, /* from_CIEXYZ */
- 1
- };
-
-
-/************************************************************************
- * *
- * PRIVATE ROUTINES *
- * *
- ************************************************************************/
-
-/*
- * NAME
- * CIELuv_ParseString
- *
- * SYNOPSIS
- */
-static int
-CIELuv_ParseString(
- register char *spec,
- XcmsColor *pColor)
-/*
- * DESCRIPTION
- * This routines takes a string and attempts to convert
- * it into a XcmsColor structure with XcmsCIELuvFormat.
- * The assumed CIELuv string syntax is:
- * CIELuv:<L>/<u>/<v>
- * Where L, u, and v are in string input format for floats
- * consisting of:
- * a. an optional sign
- * b. a string of numbers possibly containing a decimal point,
- * c. an optional exponent field containing an 'E' or 'e'
- * followed by a possibly signed integer string.
- *
- * RETURNS
- * 0 if failed, non-zero otherwise.
- */
-{
- int n;
- char *pchar;
-
- if ((pchar = strchr(spec, ':')) == NULL) {
- return(XcmsFailure);
- }
- n = (int)(pchar - spec);
-
- /*
- * Check for proper prefix.
- */
- if (strncmp(spec, _XcmsCIELuv_prefix, n) != 0) {
- return(XcmsFailure);
- }
-
- /*
- * Attempt to parse the value portion.
- */
- if (sscanf(spec + n + 1, "%lf/%lf/%lf",
- &pColor->spec.CIELuv.L_star,
- &pColor->spec.CIELuv.u_star,
- &pColor->spec.CIELuv.v_star) != 3) {
- char *s; /* Maybe failed due to locale */
- int f;
- if ((s = strdup(spec))) {
- for (f = 0; s[f]; ++f)
- if (s[f] == '.')
- s[f] = ',';
- else if (s[f] == ',')
- s[f] = '.';
- if (sscanf(s + n + 1, "%lf/%lf/%lf",
- &pColor->spec.CIELuv.L_star,
- &pColor->spec.CIELuv.u_star,
- &pColor->spec.CIELuv.v_star) != 3) {
- free(s);
- return(XcmsFailure);
- }
- free(s);
- } else
- return(XcmsFailure);
- }
- pColor->format = XcmsCIELuvFormat;
- pColor->pixel = 0;
- return(XcmsCIELuv_ValidSpec(pColor));
-}
-
-
-/************************************************************************
- * *
- * PUBLIC ROUTINES *
- * *
- ************************************************************************/
-
-/*
- * NAME
- * XcmsCIELuv_ValidSpec
- *
- * SYNOPSIS
- */
-static Status
-XcmsCIELuv_ValidSpec(
- XcmsColor *pColor)
-/*
- * DESCRIPTION
- * Checks if color specification valid for CIE L*u*v*.
- *
- * RETURNS
- * XcmsFailure if invalid,
- * XcmsSuccess if valid.
- *
- */
-{
- if (pColor->format != XcmsCIELuvFormat
- ||
- (pColor->spec.CIELuv.L_star < 0.0 - XMY_DBL_EPSILON)
- ||
- (pColor->spec.CIELuv.L_star > 100.0 + XMY_DBL_EPSILON)) {
- return(XcmsFailure);
- }
- return(XcmsSuccess);
-}
-
-
-/*
- * NAME
- * XcmsCIELuvToCIEuvY - convert CIELuv to CIEuvY
- *
- * SYNOPSIS
- */
-Status
-XcmsCIELuvToCIEuvY(
- XcmsCCC ccc,
- XcmsColor *pLuv_WhitePt,
- XcmsColor *pColors_in_out,
- unsigned int nColors)
-/*
- * DESCRIPTION
- * Converts color specifications in an array of XcmsColor
- * structures from CIELuv format to CIEuvY format.
- *
- * RETURNS
- * XcmsFailure if failed,
- * XcmsSuccess if succeeded.
- *
- */
-{
- XcmsColor *pColor = pColors_in_out;
- XcmsColor whitePt;
- XcmsCIEuvY uvY_return;
- XcmsFloat tmpVal;
- register int i;
-
- /*
- * Check arguments
- */
- if (pLuv_WhitePt == NULL || pColors_in_out == NULL) {
- return(XcmsFailure);
- }
-
- /*
- * Make sure white point is in CIEuvY form
- */
- if (pLuv_WhitePt->format != XcmsCIEuvYFormat) {
- /* Make copy of the white point because we're going to modify it */
- memcpy((char *)&whitePt, (char *)pLuv_WhitePt, sizeof(XcmsColor));
- if (!_XcmsDIConvertColors(ccc, &whitePt, (XcmsColor *)NULL,
- 1, XcmsCIEuvYFormat)) {
- return(XcmsFailure);
- }
- pLuv_WhitePt = &whitePt;
- }
- /* Make sure it is a white point, i.e., Y == 1.0 */
- if (pLuv_WhitePt->spec.CIEuvY.Y != 1.0) {
- return(XcmsFailure);
- }
-
- /*
- * Now convert each XcmsColor structure to CIEXYZ form
- */
- for (i = 0; i < nColors; i++, pColor++) {
-
- /* Make sure original format is CIELuv and is valid */
- if (!XcmsCIELuv_ValidSpec(pColor)) {
- return(XcmsFailure);
- }
-
- if (pColor->spec.CIELuv.L_star < 7.99953624) {
- uvY_return.Y = pColor->spec.CIELuv.L_star / 903.29;
- } else {
- tmpVal = (pColor->spec.CIELuv.L_star + 16.0) / 116.0;
- uvY_return.Y = tmpVal * tmpVal * tmpVal; /* tmpVal ** 3 */
- }
-
-
-
- if (pColor->spec.CIELuv.L_star == 0.0) {
- uvY_return.u_prime = pLuv_WhitePt->spec.CIEuvY.u_prime;
- uvY_return.v_prime = pLuv_WhitePt->spec.CIEuvY.v_prime;
- } else {
- tmpVal = 13.0 * (pColor->spec.CIELuv.L_star / 100.0);
- uvY_return.u_prime = pColor->spec.CIELuv.u_star/tmpVal +
- pLuv_WhitePt->spec.CIEuvY.u_prime;
- uvY_return.v_prime = pColor->spec.CIELuv.v_star/tmpVal +
- pLuv_WhitePt->spec.CIEuvY.v_prime;
- }
- /* Copy result to pColor */
- memcpy((char *)&pColor->spec, (char *)&uvY_return, sizeof(XcmsCIEuvY));
-
- /* Identify that the format is now CIEuvY */
- pColor->format = XcmsCIEuvYFormat;
- }
- return(XcmsSuccess);
-}
-
-
-/*
- * NAME
- * XcmsCIEuvYToCIELuv - convert CIEuvY to CIELuv
- *
- * SYNOPSIS
- */
-Status
-XcmsCIEuvYToCIELuv(
- XcmsCCC ccc,
- XcmsColor *pLuv_WhitePt,
- XcmsColor *pColors_in_out,
- unsigned int nColors)
-/*
- * DESCRIPTION
- * Converts color specifications in an array of XcmsColor
- * structures from CIEuvY format to CIELab format.
- *
- * RETURNS
- * XcmsFailure if failed,
- * XcmsSuccess if succeeded.
- *
- */
-{
- XcmsColor *pColor = pColors_in_out;
- XcmsColor whitePt;
- XcmsCIELuv Luv_return;
- XcmsFloat tmpVal;
- register int i;
-
- /*
- * Check arguments
- */
- if (pLuv_WhitePt == NULL || pColors_in_out == NULL) {
- return(XcmsFailure);
- }
-
- /*
- * Make sure white point is in CIEuvY form
- */
- if (pLuv_WhitePt->format != XcmsCIEuvYFormat) {
- /* Make copy of the white point because we're going to modify it */
- memcpy((char *)&whitePt, (char *)pLuv_WhitePt, sizeof(XcmsColor));
- if (!_XcmsDIConvertColors(ccc, &whitePt,
- (XcmsColor *)NULL, 1, XcmsCIEuvYFormat)) {
- return(XcmsFailure);
- }
- pLuv_WhitePt = &whitePt;
- }
- /* Make sure it is a white point, i.e., Y == 1.0 */
- if (pLuv_WhitePt->spec.CIEuvY.Y != 1.0) {
- return(XcmsFailure);
- }
-
- /*
- * Now convert each XcmsColor structure to CIEXYZ form
- */
- for (i = 0; i < nColors; i++, pColor++) {
-
- if (!_XcmsCIEuvY_ValidSpec(pColor)) {
- return(XcmsFailure);
- }
-
- /* Now convert the uvY to Luv */
- Luv_return.L_star =
- (pColor->spec.CIEuvY.Y < 0.008856)
- ?
- (pColor->spec.CIEuvY.Y * 903.29)
- :
- ((XcmsFloat)(XCMS_CUBEROOT(pColor->spec.CIEuvY.Y) * 116.0) - 16.0);
- tmpVal = 13.0 * (Luv_return.L_star / 100.0);
- Luv_return.u_star = tmpVal *
- (pColor->spec.CIEuvY.u_prime - pLuv_WhitePt->spec.CIEuvY.u_prime);
- Luv_return.v_star = tmpVal *
- (pColor->spec.CIEuvY.v_prime - pLuv_WhitePt->spec.CIEuvY.v_prime);
-
- /* Copy result to pColor */
- memcpy((char *)&pColor->spec, (char *)&Luv_return, sizeof(XcmsCIELuv));
-
- /* Identify that the format is now CIEuvY */
- pColor->format = XcmsCIELuvFormat;
- }
- return(XcmsSuccess);
-}
+
+/*
+ * Code and supporting documentation (c) Copyright 1990 1991 Tektronix, Inc.
+ * All Rights Reserved
+ *
+ * This file is a component of an X Window System-specific implementation
+ * of XCMS based on the TekColor Color Management System. Permission is
+ * hereby granted to use, copy, modify, sell, and otherwise distribute this
+ * software and its documentation for any purpose and without fee, provided
+ * that this copyright, permission, and disclaimer notice is reproduced in
+ * all copies of this software and in supporting documentation. TekColor
+ * is a trademark of Tektronix, Inc.
+ *
+ * Tektronix makes no representation about the suitability of this software
+ * for any purpose. It is provided "as is" and with all faults.
+ *
+ * TEKTRONIX DISCLAIMS ALL WARRANTIES APPLICABLE TO THIS SOFTWARE,
+ * INCLUDING THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+ * PARTICULAR PURPOSE. IN NO EVENT SHALL TEKTRONIX BE LIABLE FOR ANY
+ * SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER
+ * RESULTING FROM LOSS OF USE, DATA, OR PROFITS, WHETHER IN AN ACTION OF
+ * CONTRACT, NEGLIGENCE, OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
+ * CONNECTION WITH THE USE OR THE PERFORMANCE OF THIS SOFTWARE.
+ *
+ *
+ * NAME
+ * CIELuv.c
+ *
+ * DESCRIPTION
+ * This file contains routines that support the CIE L*u*v*
+ * color space to include conversions to and from the CIE
+ * XYZ space.
+ *
+ * DOCUMENTATION
+ * "TekColor Color Management System, System Implementor's Manual"
+ * and
+ * Fred W. Billmeyer & Max Saltzman, "Principles of Color
+ * Technology", John Wily & Sons, Inc, 1981.
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include <X11/Xos.h>
+#include "Xlibint.h"
+#include "Xcmsint.h"
+#include "Cv.h"
+
+#include <stdio.h> /* sscanf */
+
+
+/*
+ * FORWARD DECLARATIONS
+ */
+
+static int CIELuv_ParseString(register char *spec, XcmsColor *pColor);
+static Status XcmsCIELuv_ValidSpec(XcmsColor *pColor);
+
+/*
+ * DEFINES
+ * Internal definitions that need NOT be exported to any package
+ * or program using this package.
+ */
+#ifdef DBL_EPSILON
+# define XMY_DBL_EPSILON DBL_EPSILON
+#else
+# define XMY_DBL_EPSILON 0.00001
+#endif
+
+
+/*
+ * LOCAL VARIABLES
+ */
+
+ /*
+ * NULL terminated list of functions applied to get from CIELuv to CIEXYZ
+ */
+static XcmsConversionProc Fl_CIELuv_to_CIEXYZ[] = {
+ XcmsCIELuvToCIEuvY,
+ XcmsCIEuvYToCIEXYZ,
+ NULL
+};
+
+ /*
+ * NULL terminated list of functions applied to get from CIEXYZ to CIELuv
+ */
+static XcmsConversionProc Fl_CIEXYZ_to_CIELuv[] = {
+ XcmsCIEXYZToCIEuvY,
+ XcmsCIEuvYToCIELuv,
+ NULL
+};
+
+/*
+ * GLOBALS
+ */
+
+ /*
+ * CIE Luv Color Space
+ */
+XcmsColorSpace XcmsCIELuvColorSpace =
+ {
+ _XcmsCIELuv_prefix, /* prefix */
+ XcmsCIELuvFormat, /* id */
+ CIELuv_ParseString, /* parseString */
+ Fl_CIELuv_to_CIEXYZ, /* to_CIEXYZ */
+ Fl_CIEXYZ_to_CIELuv, /* from_CIEXYZ */
+ 1
+ };
+
+
+/************************************************************************
+ * *
+ * PRIVATE ROUTINES *
+ * *
+ ************************************************************************/
+
+/*
+ * NAME
+ * CIELuv_ParseString
+ *
+ * SYNOPSIS
+ */
+static int
+CIELuv_ParseString(
+ register char *spec,
+ XcmsColor *pColor)
+/*
+ * DESCRIPTION
+ * This routines takes a string and attempts to convert
+ * it into a XcmsColor structure with XcmsCIELuvFormat.
+ * The assumed CIELuv string syntax is:
+ * CIELuv:<L>/<u>/<v>
+ * Where L, u, and v are in string input format for floats
+ * consisting of:
+ * a. an optional sign
+ * b. a string of numbers possibly containing a decimal point,
+ * c. an optional exponent field containing an 'E' or 'e'
+ * followed by a possibly signed integer string.
+ *
+ * RETURNS
+ * 0 if failed, non-zero otherwise.
+ */
+{
+ int n;
+ char *pchar;
+
+ if ((pchar = strchr(spec, ':')) == NULL) {
+ return(XcmsFailure);
+ }
+ n = (int)(pchar - spec);
+
+ /*
+ * Check for proper prefix.
+ */
+ if (strncmp(spec, _XcmsCIELuv_prefix, n) != 0) {
+ return(XcmsFailure);
+ }
+
+ /*
+ * Attempt to parse the value portion.
+ */
+ if (sscanf(spec + n + 1, "%lf/%lf/%lf",
+ &pColor->spec.CIELuv.L_star,
+ &pColor->spec.CIELuv.u_star,
+ &pColor->spec.CIELuv.v_star) != 3) {
+ char *s; /* Maybe failed due to locale */
+ int f;
+ if ((s = strdup(spec))) {
+ for (f = 0; s[f]; ++f)
+ if (s[f] == '.')
+ s[f] = ',';
+ else if (s[f] == ',')
+ s[f] = '.';
+ if (sscanf(s + n + 1, "%lf/%lf/%lf",
+ &pColor->spec.CIELuv.L_star,
+ &pColor->spec.CIELuv.u_star,
+ &pColor->spec.CIELuv.v_star) != 3) {
+ free(s);
+ return(XcmsFailure);
+ }
+ free(s);
+ } else
+ return(XcmsFailure);
+ }
+ pColor->format = XcmsCIELuvFormat;
+ pColor->pixel = 0;
+ return(XcmsCIELuv_ValidSpec(pColor));
+}
+
+
+/************************************************************************
+ * *
+ * PUBLIC ROUTINES *
+ * *
+ ************************************************************************/
+
+/*
+ * NAME
+ * XcmsCIELuv_ValidSpec
+ *
+ * SYNOPSIS
+ */
+static Status
+XcmsCIELuv_ValidSpec(
+ XcmsColor *pColor)
+/*
+ * DESCRIPTION
+ * Checks if color specification valid for CIE L*u*v*.
+ *
+ * RETURNS
+ * XcmsFailure if invalid,
+ * XcmsSuccess if valid.
+ *
+ */
+{
+ if (pColor->format != XcmsCIELuvFormat
+ ||
+ (pColor->spec.CIELuv.L_star < 0.0 - XMY_DBL_EPSILON)
+ ||
+ (pColor->spec.CIELuv.L_star > 100.0 + XMY_DBL_EPSILON)) {
+ return(XcmsFailure);
+ }
+ return(XcmsSuccess);
+}
+
+
+/*
+ * NAME
+ * XcmsCIELuvToCIEuvY - convert CIELuv to CIEuvY
+ *
+ * SYNOPSIS
+ */
+Status
+XcmsCIELuvToCIEuvY(
+ XcmsCCC ccc,
+ XcmsColor *pLuv_WhitePt,
+ XcmsColor *pColors_in_out,
+ unsigned int nColors)
+/*
+ * DESCRIPTION
+ * Converts color specifications in an array of XcmsColor
+ * structures from CIELuv format to CIEuvY format.
+ *
+ * RETURNS
+ * XcmsFailure if failed,
+ * XcmsSuccess if succeeded.
+ *
+ */
+{
+ XcmsColor *pColor = pColors_in_out;
+ XcmsColor whitePt;
+ XcmsCIEuvY uvY_return;
+ XcmsFloat tmpVal;
+ register int i;
+
+ /*
+ * Check arguments
+ */
+ if (pLuv_WhitePt == NULL || pColors_in_out == NULL) {
+ return(XcmsFailure);
+ }
+
+ /*
+ * Make sure white point is in CIEuvY form
+ */
+ if (pLuv_WhitePt->format != XcmsCIEuvYFormat) {
+ /* Make copy of the white point because we're going to modify it */
+ memcpy((char *)&whitePt, (char *)pLuv_WhitePt, sizeof(XcmsColor));
+ if (!_XcmsDIConvertColors(ccc, &whitePt, (XcmsColor *)NULL,
+ 1, XcmsCIEuvYFormat)) {
+ return(XcmsFailure);
+ }
+ pLuv_WhitePt = &whitePt;
+ }
+ /* Make sure it is a white point, i.e., Y == 1.0 */
+ if (pLuv_WhitePt->spec.CIEuvY.Y != 1.0) {
+ return(XcmsFailure);
+ }
+
+ /*
+ * Now convert each XcmsColor structure to CIEXYZ form
+ */
+ for (i = 0; i < nColors; i++, pColor++) {
+
+ /* Make sure original format is CIELuv and is valid */
+ if (!XcmsCIELuv_ValidSpec(pColor)) {
+ return(XcmsFailure);
+ }
+
+ if (pColor->spec.CIELuv.L_star < 7.99953624) {
+ uvY_return.Y = pColor->spec.CIELuv.L_star / 903.29;
+ } else {
+ tmpVal = (pColor->spec.CIELuv.L_star + 16.0) / 116.0;
+ uvY_return.Y = tmpVal * tmpVal * tmpVal; /* tmpVal ** 3 */
+ }
+
+
+
+ if (pColor->spec.CIELuv.L_star == 0.0) {
+ uvY_return.u_prime = pLuv_WhitePt->spec.CIEuvY.u_prime;
+ uvY_return.v_prime = pLuv_WhitePt->spec.CIEuvY.v_prime;
+ } else {
+ tmpVal = 13.0 * (pColor->spec.CIELuv.L_star / 100.0);
+ uvY_return.u_prime = pColor->spec.CIELuv.u_star/tmpVal +
+ pLuv_WhitePt->spec.CIEuvY.u_prime;
+ uvY_return.v_prime = pColor->spec.CIELuv.v_star/tmpVal +
+ pLuv_WhitePt->spec.CIEuvY.v_prime;
+ }
+ /* Copy result to pColor */
+ memcpy((char *)&pColor->spec, (char *)&uvY_return, sizeof(XcmsCIEuvY));
+
+ /* Identify that the format is now CIEuvY */
+ pColor->format = XcmsCIEuvYFormat;
+ }
+ return(XcmsSuccess);
+}
+
+
+/*
+ * NAME
+ * XcmsCIEuvYToCIELuv - convert CIEuvY to CIELuv
+ *
+ * SYNOPSIS
+ */
+Status
+XcmsCIEuvYToCIELuv(
+ XcmsCCC ccc,
+ XcmsColor *pLuv_WhitePt,
+ XcmsColor *pColors_in_out,
+ unsigned int nColors)
+/*
+ * DESCRIPTION
+ * Converts color specifications in an array of XcmsColor
+ * structures from CIEuvY format to CIELab format.
+ *
+ * RETURNS
+ * XcmsFailure if failed,
+ * XcmsSuccess if succeeded.
+ *
+ */
+{
+ XcmsColor *pColor = pColors_in_out;
+ XcmsColor whitePt;
+ XcmsCIELuv Luv_return;
+ XcmsFloat tmpVal;
+ register int i;
+
+ /*
+ * Check arguments
+ */
+ if (pLuv_WhitePt == NULL || pColors_in_out == NULL) {
+ return(XcmsFailure);
+ }
+
+ /*
+ * Make sure white point is in CIEuvY form
+ */
+ if (pLuv_WhitePt->format != XcmsCIEuvYFormat) {
+ /* Make copy of the white point because we're going to modify it */
+ memcpy((char *)&whitePt, (char *)pLuv_WhitePt, sizeof(XcmsColor));
+ if (!_XcmsDIConvertColors(ccc, &whitePt,
+ (XcmsColor *)NULL, 1, XcmsCIEuvYFormat)) {
+ return(XcmsFailure);
+ }
+ pLuv_WhitePt = &whitePt;
+ }
+ /* Make sure it is a white point, i.e., Y == 1.0 */
+ if (pLuv_WhitePt->spec.CIEuvY.Y != 1.0) {
+ return(XcmsFailure);
+ }
+
+ /*
+ * Now convert each XcmsColor structure to CIEXYZ form
+ */
+ for (i = 0; i < nColors; i++, pColor++) {
+
+ if (!_XcmsCIEuvY_ValidSpec(pColor)) {
+ return(XcmsFailure);
+ }
+
+ /* Now convert the uvY to Luv */
+ Luv_return.L_star =
+ (pColor->spec.CIEuvY.Y < 0.008856)
+ ?
+ (pColor->spec.CIEuvY.Y * 903.29)
+ :
+ ((XcmsFloat)(XCMS_CUBEROOT(pColor->spec.CIEuvY.Y) * 116.0) - 16.0);
+ tmpVal = 13.0 * (Luv_return.L_star / 100.0);
+ Luv_return.u_star = tmpVal *
+ (pColor->spec.CIEuvY.u_prime - pLuv_WhitePt->spec.CIEuvY.u_prime);
+ Luv_return.v_star = tmpVal *
+ (pColor->spec.CIEuvY.v_prime - pLuv_WhitePt->spec.CIEuvY.v_prime);
+
+ /* Copy result to pColor */
+ memcpy((char *)&pColor->spec, (char *)&Luv_return, sizeof(XcmsCIELuv));
+
+ /* Identify that the format is now CIEuvY */
+ pColor->format = XcmsCIELuvFormat;
+ }
+ return(XcmsSuccess);
+}
diff --git a/libX11/src/xcms/LuvGcC.c b/libX11/src/xcms/LuvGcC.c
index c760f0fbb..cadf4a8b2 100644
--- a/libX11/src/xcms/LuvGcC.c
+++ b/libX11/src/xcms/LuvGcC.c
@@ -1,127 +1,127 @@
-
-/*
- * Code and supporting documentation (c) Copyright 1990 1991 Tektronix, Inc.
- * All Rights Reserved
- *
- * This file is a component of an X Window System-specific implementation
- * of XCMS based on the TekColor Color Management System. Permission is
- * hereby granted to use, copy, modify, sell, and otherwise distribute this
- * software and its documentation for any purpose and without fee, provided
- * that this copyright, permission, and disclaimer notice is reproduced in
- * all copies of this software and in supporting documentation. TekColor
- * is a trademark of Tektronix, Inc.
- *
- * Tektronix makes no representation about the suitability of this software
- * for any purpose. It is provided "as is" and with all faults.
- *
- * TEKTRONIX DISCLAIMS ALL WARRANTIES APPLICABLE TO THIS SOFTWARE,
- * INCLUDING THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE. IN NO EVENT SHALL TEKTRONIX BE LIABLE FOR ANY
- * SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER
- * RESULTING FROM LOSS OF USE, DATA, OR PROFITS, WHETHER IN AN ACTION OF
- * CONTRACT, NEGLIGENCE, OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
- * CONNECTION WITH THE USE OR THE PERFORMANCE OF THIS SOFTWARE.
- *
- * NAME
- * CIELuvGcC.c
- *
- * DESCRIPTION
- * Source for XcmsCIELuvClipuv() gamut compression routine.
- *
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-#include "Xcmsint.h"
-#include "Cv.h"
-
-
-/************************************************************************
- * *
- * PUBLIC ROUTINES *
- * *
- ************************************************************************/
-
-/*
- * NAME
- * XcmsCIELuvClipuv - Reduce the chroma for a hue and L*
- *
- * SYNOPSIS
- */
-/* ARGSUSED */
-Status
-XcmsCIELuvClipuv (
- XcmsCCC ccc,
- XcmsColor *pColors_in_out,
- unsigned int nColors,
- unsigned int i,
- Bool *pCompressed)
-/*
- * DESCRIPTION
- * Reduce the Chroma for a specific hue and chroma to
- * to bring the given color into the gamut of the
- * specified device. As required of gamut compression
- * functions, this routine returns pColor_in_out
- * in XcmsCIEXYZFormat on successful completion.
- *
- * Since this routine works with the L* within
- * pColor_in_out intermediate results may be returned
- * even though it may be invalid.
- *
- * RETURNS
- * XcmsFailure - Failure
- * XcmsSuccess - Succeeded
- *
- */
-{
- Status retval;
- XcmsColor *pColor;
-
- /*
- * Color specification passed as input can be assumed to:
- * 1. Be in XcmsCIEXYZFormat
- * 2. Already be white point adjusted for the Screen White Point.
- * This means that the white point now associated with this
- * color spec is the Screen White Point (even if the
- * ccc->clientWhitePt differs).
- */
-
- pColor = pColors_in_out + i;
-
- if (ccc->visual->class < PseudoColor) {
- /*
- * GRAY !
- */
- _XcmsDIConvertColors(ccc, pColor, ScreenWhitePointOfCCC(ccc),
- 1, XcmsCIELuvFormat);
- _XcmsDIConvertColors(ccc, pColor, ScreenWhitePointOfCCC(ccc),
- 1, XcmsCIEXYZFormat);
- if (pCompressed) {
- *(pCompressed + i) = True;
- }
- return(XcmsSuccess);
- } else {
- if (pColor->format != XcmsCIELuvFormat) {
- if (_XcmsDIConvertColors(ccc, pColor,
- &ccc->pPerScrnInfo->screenWhitePt, 1, XcmsCIELuvFormat)
- == XcmsFailure) {
- return(XcmsFailure);
- }
- }
- if (XcmsCIELuvQueryMaxC(ccc,
- degrees(XCMS_CIELUV_PMETRIC_HUE(pColor->spec.CIELuv.u_star,
- pColor->spec.CIELuv.v_star)),
- pColor->spec.CIELuv.L_star,
- pColor) == XcmsFailure) {
- return(XcmsFailure);
- }
- retval = _XcmsDIConvertColors(ccc, pColor,
- &ccc->pPerScrnInfo->screenWhitePt, 1, XcmsCIEXYZFormat);
- if (retval != XcmsFailure && pCompressed != NULL) {
- *(pCompressed + i) = True;
- }
- return(retval);
- }
-}
+
+/*
+ * Code and supporting documentation (c) Copyright 1990 1991 Tektronix, Inc.
+ * All Rights Reserved
+ *
+ * This file is a component of an X Window System-specific implementation
+ * of XCMS based on the TekColor Color Management System. Permission is
+ * hereby granted to use, copy, modify, sell, and otherwise distribute this
+ * software and its documentation for any purpose and without fee, provided
+ * that this copyright, permission, and disclaimer notice is reproduced in
+ * all copies of this software and in supporting documentation. TekColor
+ * is a trademark of Tektronix, Inc.
+ *
+ * Tektronix makes no representation about the suitability of this software
+ * for any purpose. It is provided "as is" and with all faults.
+ *
+ * TEKTRONIX DISCLAIMS ALL WARRANTIES APPLICABLE TO THIS SOFTWARE,
+ * INCLUDING THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+ * PARTICULAR PURPOSE. IN NO EVENT SHALL TEKTRONIX BE LIABLE FOR ANY
+ * SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER
+ * RESULTING FROM LOSS OF USE, DATA, OR PROFITS, WHETHER IN AN ACTION OF
+ * CONTRACT, NEGLIGENCE, OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
+ * CONNECTION WITH THE USE OR THE PERFORMANCE OF THIS SOFTWARE.
+ *
+ * NAME
+ * CIELuvGcC.c
+ *
+ * DESCRIPTION
+ * Source for XcmsCIELuvClipuv() gamut compression routine.
+ *
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+#include "Xcmsint.h"
+#include "Cv.h"
+
+
+/************************************************************************
+ * *
+ * PUBLIC ROUTINES *
+ * *
+ ************************************************************************/
+
+/*
+ * NAME
+ * XcmsCIELuvClipuv - Reduce the chroma for a hue and L*
+ *
+ * SYNOPSIS
+ */
+/* ARGSUSED */
+Status
+XcmsCIELuvClipuv (
+ XcmsCCC ccc,
+ XcmsColor *pColors_in_out,
+ unsigned int nColors,
+ unsigned int i,
+ Bool *pCompressed)
+/*
+ * DESCRIPTION
+ * Reduce the Chroma for a specific hue and chroma to
+ * to bring the given color into the gamut of the
+ * specified device. As required of gamut compression
+ * functions, this routine returns pColor_in_out
+ * in XcmsCIEXYZFormat on successful completion.
+ *
+ * Since this routine works with the L* within
+ * pColor_in_out intermediate results may be returned
+ * even though it may be invalid.
+ *
+ * RETURNS
+ * XcmsFailure - Failure
+ * XcmsSuccess - Succeeded
+ *
+ */
+{
+ Status retval;
+ XcmsColor *pColor;
+
+ /*
+ * Color specification passed as input can be assumed to:
+ * 1. Be in XcmsCIEXYZFormat
+ * 2. Already be white point adjusted for the Screen White Point.
+ * This means that the white point now associated with this
+ * color spec is the Screen White Point (even if the
+ * ccc->clientWhitePt differs).
+ */
+
+ pColor = pColors_in_out + i;
+
+ if (ccc->visual->class < PseudoColor) {
+ /*
+ * GRAY !
+ */
+ _XcmsDIConvertColors(ccc, pColor, ScreenWhitePointOfCCC(ccc),
+ 1, XcmsCIELuvFormat);
+ _XcmsDIConvertColors(ccc, pColor, ScreenWhitePointOfCCC(ccc),
+ 1, XcmsCIEXYZFormat);
+ if (pCompressed) {
+ *(pCompressed + i) = True;
+ }
+ return(XcmsSuccess);
+ } else {
+ if (pColor->format != XcmsCIELuvFormat) {
+ if (_XcmsDIConvertColors(ccc, pColor,
+ &ccc->pPerScrnInfo->screenWhitePt, 1, XcmsCIELuvFormat)
+ == XcmsFailure) {
+ return(XcmsFailure);
+ }
+ }
+ if (XcmsCIELuvQueryMaxC(ccc,
+ degrees(XCMS_CIELUV_PMETRIC_HUE(pColor->spec.CIELuv.u_star,
+ pColor->spec.CIELuv.v_star)),
+ pColor->spec.CIELuv.L_star,
+ pColor) == XcmsFailure) {
+ return(XcmsFailure);
+ }
+ retval = _XcmsDIConvertColors(ccc, pColor,
+ &ccc->pPerScrnInfo->screenWhitePt, 1, XcmsCIEXYZFormat);
+ if (retval != XcmsFailure && pCompressed != NULL) {
+ *(pCompressed + i) = True;
+ }
+ return(retval);
+ }
+}
diff --git a/libX11/src/xcms/LuvGcL.c b/libX11/src/xcms/LuvGcL.c
index b6305eae1..f5b6d99e4 100644
--- a/libX11/src/xcms/LuvGcL.c
+++ b/libX11/src/xcms/LuvGcL.c
@@ -1,174 +1,174 @@
-
-/*
- * Code and supporting documentation (c) Copyright 1990 1991 Tektronix, Inc.
- * All Rights Reserved
- *
- * This file is a component of an X Window System-specific implementation
- * of XCMS based on the TekColor Color Management System. Permission is
- * hereby granted to use, copy, modify, sell, and otherwise distribute this
- * software and its documentation for any purpose and without fee, provided
- * that this copyright, permission, and disclaimer notice is reproduced in
- * all copies of this software and in supporting documentation. TekColor
- * is a trademark of Tektronix, Inc.
- *
- * Tektronix makes no representation about the suitability of this software
- * for any purpose. It is provided "as is" and with all faults.
- *
- * TEKTRONIX DISCLAIMS ALL WARRANTIES APPLICABLE TO THIS SOFTWARE,
- * INCLUDING THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE. IN NO EVENT SHALL TEKTRONIX BE LIABLE FOR ANY
- * SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER
- * RESULTING FROM LOSS OF USE, DATA, OR PROFITS, WHETHER IN AN ACTION OF
- * CONTRACT, NEGLIGENCE, OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
- * CONNECTION WITH THE USE OR THE PERFORMANCE OF THIS SOFTWARE.
- *
- * NAME
- * CIELuvGcL.c
- *
- * DESCRIPTION
- * Source for XcmsCIELuvClipL() gamut compression routine.
- *
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-#include "Xcmsint.h"
-#include "Cv.h"
-
-
-/************************************************************************
- * *
- * PUBLIC ROUTINES *
- * *
- ************************************************************************/
-
-/*
- * NAME
- * XcmsCIELuvClipL - Return the closest L*
- *
- * SYNOPSIS
- */
-/* ARGSUSED */
-Status
-XcmsCIELuvClipL (
- XcmsCCC ccc,
- XcmsColor *pColors_in_out,
- unsigned int nColors,
- unsigned int i,
- Bool *pCompressed)
-/*
- * DESCRIPTION
- * Return the closest L* for a specific hue and chroma.
- * This routine takes any color as input and outputs
- * a CIE XYZ color.
- *
- * Since this routine works with the L* within
- * pColor_in_out intermediate results may be returned
- * even though it may be invalid.
- *
- * RETURNS
- * XcmsFailure - Failure
- * XcmsSuccess - Succeeded
- *
- */
-{
- XcmsCCCRec myCCC;
- XcmsColor *pColor;
- XcmsColor Luv_max;
- XcmsFloat hue, chroma, maxChroma;
- Status retval;
-
- /* Use my own CCC */
- memcpy ((char *)&myCCC, (char *)ccc, sizeof(XcmsCCCRec));
- myCCC.clientWhitePt.format = XcmsUndefinedFormat;/* Inherit Screen WP */
- myCCC.gamutCompProc = (XcmsCompressionProc)NULL;/* no gamut compression */
-
- /*
- * Color specification passed as input can be assumed to:
- * 1. Be in XcmsCIEXYZFormat
- * 2. Already be white point adjusted for the Screen White Point.
- * This means that the white point now associated with this
- * color spec is the Screen White Point (even if the
- * ccc->clientWhitePt differs).
- */
-
- pColor = pColors_in_out + i;
-
- if (ccc->visual->class < StaticColor) {
- /*
- * GRAY !
- */
- return(XcmsFailure);
- } else {
- /* Convert from CIEXYZ to CIE L*u*v* format */
- if (_XcmsDIConvertColors(&myCCC, pColor,
- ScreenWhitePointOfCCC(&myCCC), 1, XcmsCIELuvFormat)
- == XcmsFailure) {
- return(XcmsFailure);
- }
-
- hue = XCMS_CIELUV_PMETRIC_HUE(pColor->spec.CIELuv.u_star,
- pColor->spec.CIELuv.v_star);
- chroma = XCMS_CIELUV_PMETRIC_CHROMA(pColor->spec.CIELuv.u_star,
- pColor->spec.CIELuv.v_star);
- /* Step 1: compute the maximum L* and chroma for this hue. */
- /* This copy may be overkill but it preserves the pixel etc. */
- memcpy((char *)&Luv_max, (char *)pColor, sizeof(XcmsColor));
- if (_XcmsCIELuvQueryMaxLCRGB (&myCCC, hue, &Luv_max,
- (XcmsRGBi *)NULL) == XcmsFailure) {
- return (XcmsFailure);
- }
- maxChroma = XCMS_CIELUV_PMETRIC_CHROMA(Luv_max.spec.CIELuv.u_star,
- Luv_max.spec.CIELuv.v_star);
-
- /* Now check and return the appropriate L* */
- if (chroma == maxChroma) {
- /* When the chroma input is equal to the maximum chroma */
- /* merely return the L* for that chroma. */
- memcpy((char *)pColor, (char *)&Luv_max, sizeof(XcmsColor));
- retval = _XcmsDIConvertColors(&myCCC, pColor,
- ScreenWhitePointOfCCC(&myCCC), 1, XcmsCIEXYZFormat);
- } else if (chroma > maxChroma) {
- /* When the chroma input is greater than the maximum chroma */
- /* merely return the L* and chroma for the given hue. */
- memcpy((char *)pColor, (char *)&Luv_max, sizeof(XcmsColor));
- return (XcmsFailure);
- } else if (pColor->spec.CIELuv.L_star < Luv_max.spec.CIELuv.L_star) {
- /* Find the minimum lightness for the given chroma. */
- if (pColor->format != XcmsCIELuvFormat) {
- if (_XcmsDIConvertColors(ccc, pColor,
- ScreenWhitePointOfCCC(ccc), 1, XcmsCIELuvFormat)
- == XcmsFailure) {
- return(XcmsFailure);
- }
- }
- if (XcmsCIELuvQueryMinL(&myCCC, degrees(hue), chroma, pColor)
- == XcmsFailure) {
- return (XcmsFailure);
- }
- retval = _XcmsDIConvertColors(&myCCC, pColor,
- ScreenWhitePointOfCCC(&myCCC), 1, XcmsCIEXYZFormat);
- } else {
- /* Find the maximum lightness for the given chroma. */
- if (pColor->format != XcmsCIELuvFormat) {
- if (_XcmsDIConvertColors(ccc, pColor,
- ScreenWhitePointOfCCC(ccc), 1, XcmsCIELuvFormat)
- == XcmsFailure) {
- return(XcmsFailure);
- }
- }
- if (XcmsCIELuvQueryMaxL(&myCCC, degrees(hue), chroma, pColor)
- == XcmsFailure) {
- return (XcmsFailure);
- }
- retval = _XcmsDIConvertColors(&myCCC, pColor,
- ScreenWhitePointOfCCC(&myCCC), 1, XcmsCIEXYZFormat);
- }
- if (retval != XcmsFailure && pCompressed != NULL) {
- *(pCompressed + i) = True;
- }
- return(retval);
- }
-}
+
+/*
+ * Code and supporting documentation (c) Copyright 1990 1991 Tektronix, Inc.
+ * All Rights Reserved
+ *
+ * This file is a component of an X Window System-specific implementation
+ * of XCMS based on the TekColor Color Management System. Permission is
+ * hereby granted to use, copy, modify, sell, and otherwise distribute this
+ * software and its documentation for any purpose and without fee, provided
+ * that this copyright, permission, and disclaimer notice is reproduced in
+ * all copies of this software and in supporting documentation. TekColor
+ * is a trademark of Tektronix, Inc.
+ *
+ * Tektronix makes no representation about the suitability of this software
+ * for any purpose. It is provided "as is" and with all faults.
+ *
+ * TEKTRONIX DISCLAIMS ALL WARRANTIES APPLICABLE TO THIS SOFTWARE,
+ * INCLUDING THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+ * PARTICULAR PURPOSE. IN NO EVENT SHALL TEKTRONIX BE LIABLE FOR ANY
+ * SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER
+ * RESULTING FROM LOSS OF USE, DATA, OR PROFITS, WHETHER IN AN ACTION OF
+ * CONTRACT, NEGLIGENCE, OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
+ * CONNECTION WITH THE USE OR THE PERFORMANCE OF THIS SOFTWARE.
+ *
+ * NAME
+ * CIELuvGcL.c
+ *
+ * DESCRIPTION
+ * Source for XcmsCIELuvClipL() gamut compression routine.
+ *
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+#include "Xcmsint.h"
+#include "Cv.h"
+
+
+/************************************************************************
+ * *
+ * PUBLIC ROUTINES *
+ * *
+ ************************************************************************/
+
+/*
+ * NAME
+ * XcmsCIELuvClipL - Return the closest L*
+ *
+ * SYNOPSIS
+ */
+/* ARGSUSED */
+Status
+XcmsCIELuvClipL (
+ XcmsCCC ccc,
+ XcmsColor *pColors_in_out,
+ unsigned int nColors,
+ unsigned int i,
+ Bool *pCompressed)
+/*
+ * DESCRIPTION
+ * Return the closest L* for a specific hue and chroma.
+ * This routine takes any color as input and outputs
+ * a CIE XYZ color.
+ *
+ * Since this routine works with the L* within
+ * pColor_in_out intermediate results may be returned
+ * even though it may be invalid.
+ *
+ * RETURNS
+ * XcmsFailure - Failure
+ * XcmsSuccess - Succeeded
+ *
+ */
+{
+ XcmsCCCRec myCCC;
+ XcmsColor *pColor;
+ XcmsColor Luv_max;
+ XcmsFloat hue, chroma, maxChroma;
+ Status retval;
+
+ /* Use my own CCC */
+ memcpy ((char *)&myCCC, (char *)ccc, sizeof(XcmsCCCRec));
+ myCCC.clientWhitePt.format = XcmsUndefinedFormat;/* Inherit Screen WP */
+ myCCC.gamutCompProc = (XcmsCompressionProc)NULL;/* no gamut compression */
+
+ /*
+ * Color specification passed as input can be assumed to:
+ * 1. Be in XcmsCIEXYZFormat
+ * 2. Already be white point adjusted for the Screen White Point.
+ * This means that the white point now associated with this
+ * color spec is the Screen White Point (even if the
+ * ccc->clientWhitePt differs).
+ */
+
+ pColor = pColors_in_out + i;
+
+ if (ccc->visual->class < StaticColor) {
+ /*
+ * GRAY !
+ */
+ return(XcmsFailure);
+ } else {
+ /* Convert from CIEXYZ to CIE L*u*v* format */
+ if (_XcmsDIConvertColors(&myCCC, pColor,
+ ScreenWhitePointOfCCC(&myCCC), 1, XcmsCIELuvFormat)
+ == XcmsFailure) {
+ return(XcmsFailure);
+ }
+
+ hue = XCMS_CIELUV_PMETRIC_HUE(pColor->spec.CIELuv.u_star,
+ pColor->spec.CIELuv.v_star);
+ chroma = XCMS_CIELUV_PMETRIC_CHROMA(pColor->spec.CIELuv.u_star,
+ pColor->spec.CIELuv.v_star);
+ /* Step 1: compute the maximum L* and chroma for this hue. */
+ /* This copy may be overkill but it preserves the pixel etc. */
+ memcpy((char *)&Luv_max, (char *)pColor, sizeof(XcmsColor));
+ if (_XcmsCIELuvQueryMaxLCRGB (&myCCC, hue, &Luv_max,
+ (XcmsRGBi *)NULL) == XcmsFailure) {
+ return (XcmsFailure);
+ }
+ maxChroma = XCMS_CIELUV_PMETRIC_CHROMA(Luv_max.spec.CIELuv.u_star,
+ Luv_max.spec.CIELuv.v_star);
+
+ /* Now check and return the appropriate L* */
+ if (chroma == maxChroma) {
+ /* When the chroma input is equal to the maximum chroma */
+ /* merely return the L* for that chroma. */
+ memcpy((char *)pColor, (char *)&Luv_max, sizeof(XcmsColor));
+ retval = _XcmsDIConvertColors(&myCCC, pColor,
+ ScreenWhitePointOfCCC(&myCCC), 1, XcmsCIEXYZFormat);
+ } else if (chroma > maxChroma) {
+ /* When the chroma input is greater than the maximum chroma */
+ /* merely return the L* and chroma for the given hue. */
+ memcpy((char *)pColor, (char *)&Luv_max, sizeof(XcmsColor));
+ return (XcmsFailure);
+ } else if (pColor->spec.CIELuv.L_star < Luv_max.spec.CIELuv.L_star) {
+ /* Find the minimum lightness for the given chroma. */
+ if (pColor->format != XcmsCIELuvFormat) {
+ if (_XcmsDIConvertColors(ccc, pColor,
+ ScreenWhitePointOfCCC(ccc), 1, XcmsCIELuvFormat)
+ == XcmsFailure) {
+ return(XcmsFailure);
+ }
+ }
+ if (XcmsCIELuvQueryMinL(&myCCC, degrees(hue), chroma, pColor)
+ == XcmsFailure) {
+ return (XcmsFailure);
+ }
+ retval = _XcmsDIConvertColors(&myCCC, pColor,
+ ScreenWhitePointOfCCC(&myCCC), 1, XcmsCIEXYZFormat);
+ } else {
+ /* Find the maximum lightness for the given chroma. */
+ if (pColor->format != XcmsCIELuvFormat) {
+ if (_XcmsDIConvertColors(ccc, pColor,
+ ScreenWhitePointOfCCC(ccc), 1, XcmsCIELuvFormat)
+ == XcmsFailure) {
+ return(XcmsFailure);
+ }
+ }
+ if (XcmsCIELuvQueryMaxL(&myCCC, degrees(hue), chroma, pColor)
+ == XcmsFailure) {
+ return (XcmsFailure);
+ }
+ retval = _XcmsDIConvertColors(&myCCC, pColor,
+ ScreenWhitePointOfCCC(&myCCC), 1, XcmsCIEXYZFormat);
+ }
+ if (retval != XcmsFailure && pCompressed != NULL) {
+ *(pCompressed + i) = True;
+ }
+ return(retval);
+ }
+}
diff --git a/libX11/src/xcms/LuvGcLC.c b/libX11/src/xcms/LuvGcLC.c
index 03da90ff4..a9f8cbaf1 100644
--- a/libX11/src/xcms/LuvGcLC.c
+++ b/libX11/src/xcms/LuvGcLC.c
@@ -1,223 +1,223 @@
-
-/*
- * Code and supporting documentation (c) Copyright 1990 1991 Tektronix, Inc.
- * All Rights Reserved
- *
- * This file is a component of an X Window System-specific implementation
- * of XCMS based on the TekColor Color Management System. Permission is
- * hereby granted to use, copy, modify, sell, and otherwise distribute this
- * software and its documentation for any purpose and without fee, provided
- * that this copyright, permission, and disclaimer notice is reproduced in
- * all copies of this software and in supporting documentation. TekColor
- * is a trademark of Tektronix, Inc.
- *
- * Tektronix makes no representation about the suitability of this software
- * for any purpose. It is provided "as is" and with all faults.
- *
- * TEKTRONIX DISCLAIMS ALL WARRANTIES APPLICABLE TO THIS SOFTWARE,
- * INCLUDING THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE. IN NO EVENT SHALL TEKTRONIX BE LIABLE FOR ANY
- * SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER
- * RESULTING FROM LOSS OF USE, DATA, OR PROFITS, WHETHER IN AN ACTION OF
- * CONTRACT, NEGLIGENCE, OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
- * CONNECTION WITH THE USE OR THE PERFORMANCE OF THIS SOFTWARE.
- *
- * NAME
- * CIELuvGcLC.c
- *
- * DESCRIPTION
- * Source for XcmsCIELuvClipLuv() gamut
- * compression function.
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-#include "Xcmsint.h"
-#include <math.h>
-#include "Cv.h"
-
-/*
- * INTERNALS
- * Internal defines that need NOT be exported to any package or
- * program using this package.
- */
-#define MAXBISECTCOUNT 100
-
-
-/************************************************************************
- * *
- * PUBLIC ROUTINES *
- * *
- ************************************************************************/
-
-/*
- * NAME
- * XcmsCIELuvClipLuv - Return the closest L* and chroma
- *
- * SYNOPSIS
- */
-/* ARGSUSED */
-Status
-XcmsCIELuvClipLuv (
- XcmsCCC ccc,
- XcmsColor *pColors_in_out,
- unsigned int nColors,
- unsigned int i,
- Bool *pCompressed)
-/*
- * DESCRIPTION
- * This routine will find the closest L* and chroma
- * for a specific hue. The color input is converted to
- * CIE L*u*v* format and returned as CIE XYZ format.
- *
- * Since this routine works with the L* within
- * pColor_in_out intermediate results may be returned
- * even though it may be invalid.
- *
- * RETURNS
- * XcmsFailure - Failure
- * XcmsSuccess - Succeeded
- *
- */
-{
- Status retval;
- XcmsCCCRec myCCC;
- XcmsColor *pColor;
- XcmsColor Luv_max;
- XcmsFloat hue, chroma, maxChroma;
- XcmsFloat Chroma, bestChroma, Lstar, maxLstar, saveLstar;
- XcmsFloat bestLstar, bestustar, bestvstar;
- XcmsFloat nT, saveDist, tmpDist;
- XcmsRGBi rgb_max;
- int nCount, nMaxCount, nI, nILast;
-
- /* Use my own CCC */
- memcpy ((char *)&myCCC, (char *)ccc, sizeof(XcmsCCCRec));
- myCCC.clientWhitePt.format = XcmsUndefinedFormat;/* inherit screen white */
- myCCC.gamutCompProc = (XcmsCompressionProc)NULL;/* no gamut compression func */
-
- /*
- * Color specification passed as input can be assumed to:
- * 1. Be in XcmsCIEXYZFormat
- * 2. Already be white point adjusted for the Screen White Point.
- * This means that the white point now associated with this
- * color spec is the Screen White Point (even if the
- * ccc->clientWhitePt differs).
- */
-
- pColor = pColors_in_out + i;
-
- if (ccc->visual->class < StaticColor) {
- /*
- * GRAY !
- */
- _XcmsDIConvertColors(ccc, pColor, ScreenWhitePointOfCCC(ccc),
- 1, XcmsCIELuvFormat);
- _XcmsDIConvertColors(ccc, pColor, ScreenWhitePointOfCCC(ccc),
- 1, XcmsCIEXYZFormat);
- if (pCompressed) {
- *(pCompressed + i) = True;
- }
- return(XcmsSuccess);
- }
-
- /* Convert from CIEXYZ to CIELuv format */
- if (_XcmsDIConvertColors(&myCCC, pColor,
- ScreenWhitePointOfCCC(&myCCC), 1, XcmsCIELuvFormat)
- == XcmsFailure) {
- return(XcmsFailure);
- }
-
- /* Step 1: compute the maximum L* and chroma for this hue. */
- /* This copy may be overkill but it preserves the pixel etc. */
- saveLstar = pColor->spec.CIELuv.L_star;
- hue = XCMS_CIELUV_PMETRIC_HUE(pColor->spec.CIELuv.u_star,
- pColor->spec.CIELuv.v_star);
- chroma = XCMS_CIELUV_PMETRIC_CHROMA(pColor->spec.CIELuv.u_star,
- pColor->spec.CIELuv.v_star);
- memcpy((char *)&Luv_max, (char *)pColor, sizeof(XcmsColor));
- if (_XcmsCIELuvQueryMaxLCRGB (&myCCC, hue, &Luv_max, &rgb_max)
- == XcmsFailure) {
- return (XcmsFailure);
- }
- maxLstar = Luv_max.spec.CIELuv.L_star;
-
- /* Now check and return the appropriate L* */
- if (saveLstar == maxLstar) {
- /* When the L* input is equal to the maximum L* */
- /* merely return the maximum Luv point. */
- memcpy((char *)pColor, (char *)&Luv_max, sizeof(XcmsColor));
- retval = _XcmsDIConvertColors(&myCCC, pColor,
- ScreenWhitePointOfCCC(&myCCC), 1, XcmsCIEXYZFormat);
- } else {
- /* return the closest point on the hue leaf. */
- /* must do a bisection here to compute the delta e. */
- maxChroma = XCMS_CIELUV_PMETRIC_CHROMA(Luv_max.spec.CIELuv.u_star,
- Luv_max.spec.CIELuv.v_star);
- nMaxCount = MAXBISECTCOUNT;
- nI = nMaxCount / 2;
- bestLstar = Lstar = pColor->spec.CIELuv.L_star;
- bestustar = pColor->spec.CIELuv.u_star;
- bestvstar = pColor->spec.CIELuv.v_star;
- bestChroma = Chroma = chroma;
- saveDist = XCMS_SQRT(((Chroma - maxChroma) * (Chroma - maxChroma)) +
- ((Lstar - maxLstar) * (Lstar - maxLstar)));
- for (nCount = 0; nCount < nMaxCount; nCount++) {
- nT = (XcmsFloat) nI / (XcmsFloat) nMaxCount;
- if (saveLstar > maxLstar) {
- pColor->spec.RGBi.red = rgb_max.red * (1.0 - nT) + nT;
- pColor->spec.RGBi.green = rgb_max.green * (1.0 - nT) + nT;
- pColor->spec.RGBi.blue = rgb_max.blue * (1.0 - nT) + nT;
- } else {
- pColor->spec.RGBi.red = rgb_max.red - (rgb_max.red * nT);
- pColor->spec.RGBi.green = rgb_max.green - (rgb_max.green * nT);
- pColor->spec.RGBi.blue = rgb_max.blue - (rgb_max.blue * nT);
- }
- pColor->format = XcmsRGBiFormat;
-
- /* Convert from RGBi to CIE Luv */
- if (_XcmsConvertColorsWithWhitePt(&myCCC, pColor,
- ScreenWhitePointOfCCC(&myCCC), 1, XcmsCIELuvFormat,
- (Bool *) NULL) == XcmsFailure) {
- return (XcmsFailure);
- }
- chroma = XCMS_CIELUV_PMETRIC_CHROMA(pColor->spec.CIELuv.u_star,
- pColor->spec.CIELuv.v_star);
- tmpDist = XCMS_SQRT(((Chroma - chroma) * (Chroma - chroma)) +
- ((Lstar - pColor->spec.CIELuv.L_star) *
- (Lstar - pColor->spec.CIELuv.L_star)));
- nILast = nI;
- if (tmpDist > saveDist) {
- nI /= 2;
- } else {
- nI = (nMaxCount + nI) / 2;
- saveDist = tmpDist;
- bestLstar = pColor->spec.CIELuv.L_star;
- bestustar = pColor->spec.CIELuv.u_star;
- bestvstar = pColor->spec.CIELuv.v_star;
- bestChroma = chroma;
- }
- if (nI == nILast || nI == 0) {
- break;
- }
- }
- if (bestChroma >= maxChroma) {
- pColor->spec.CIELuv.L_star = maxLstar;
- pColor->spec.CIELuv.u_star = Luv_max.spec.CIELuv.u_star;
- pColor->spec.CIELuv.v_star = Luv_max.spec.CIELuv.v_star;
- } else {
- pColor->spec.CIELuv.L_star = bestLstar;
- pColor->spec.CIELuv.u_star = bestustar;
- pColor->spec.CIELuv.v_star = bestvstar;
- }
- retval = _XcmsDIConvertColors(&myCCC, pColor,
- ScreenWhitePointOfCCC(&myCCC), 1, XcmsCIEXYZFormat);
-
- if (retval != XcmsFailure && pCompressed != NULL) {
- *(pCompressed + i) = True;
- }
- }
- return(retval);
-}
+
+/*
+ * Code and supporting documentation (c) Copyright 1990 1991 Tektronix, Inc.
+ * All Rights Reserved
+ *
+ * This file is a component of an X Window System-specific implementation
+ * of XCMS based on the TekColor Color Management System. Permission is
+ * hereby granted to use, copy, modify, sell, and otherwise distribute this
+ * software and its documentation for any purpose and without fee, provided
+ * that this copyright, permission, and disclaimer notice is reproduced in
+ * all copies of this software and in supporting documentation. TekColor
+ * is a trademark of Tektronix, Inc.
+ *
+ * Tektronix makes no representation about the suitability of this software
+ * for any purpose. It is provided "as is" and with all faults.
+ *
+ * TEKTRONIX DISCLAIMS ALL WARRANTIES APPLICABLE TO THIS SOFTWARE,
+ * INCLUDING THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+ * PARTICULAR PURPOSE. IN NO EVENT SHALL TEKTRONIX BE LIABLE FOR ANY
+ * SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER
+ * RESULTING FROM LOSS OF USE, DATA, OR PROFITS, WHETHER IN AN ACTION OF
+ * CONTRACT, NEGLIGENCE, OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
+ * CONNECTION WITH THE USE OR THE PERFORMANCE OF THIS SOFTWARE.
+ *
+ * NAME
+ * CIELuvGcLC.c
+ *
+ * DESCRIPTION
+ * Source for XcmsCIELuvClipLuv() gamut
+ * compression function.
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+#include "Xcmsint.h"
+#include <math.h>
+#include "Cv.h"
+
+/*
+ * INTERNALS
+ * Internal defines that need NOT be exported to any package or
+ * program using this package.
+ */
+#define MAXBISECTCOUNT 100
+
+
+/************************************************************************
+ * *
+ * PUBLIC ROUTINES *
+ * *
+ ************************************************************************/
+
+/*
+ * NAME
+ * XcmsCIELuvClipLuv - Return the closest L* and chroma
+ *
+ * SYNOPSIS
+ */
+/* ARGSUSED */
+Status
+XcmsCIELuvClipLuv (
+ XcmsCCC ccc,
+ XcmsColor *pColors_in_out,
+ unsigned int nColors,
+ unsigned int i,
+ Bool *pCompressed)
+/*
+ * DESCRIPTION
+ * This routine will find the closest L* and chroma
+ * for a specific hue. The color input is converted to
+ * CIE L*u*v* format and returned as CIE XYZ format.
+ *
+ * Since this routine works with the L* within
+ * pColor_in_out intermediate results may be returned
+ * even though it may be invalid.
+ *
+ * RETURNS
+ * XcmsFailure - Failure
+ * XcmsSuccess - Succeeded
+ *
+ */
+{
+ Status retval;
+ XcmsCCCRec myCCC;
+ XcmsColor *pColor;
+ XcmsColor Luv_max;
+ XcmsFloat hue, chroma, maxChroma;
+ XcmsFloat Chroma, bestChroma, Lstar, maxLstar, saveLstar;
+ XcmsFloat bestLstar, bestustar, bestvstar;
+ XcmsFloat nT, saveDist, tmpDist;
+ XcmsRGBi rgb_max;
+ int nCount, nMaxCount, nI, nILast;
+
+ /* Use my own CCC */
+ memcpy ((char *)&myCCC, (char *)ccc, sizeof(XcmsCCCRec));
+ myCCC.clientWhitePt.format = XcmsUndefinedFormat;/* inherit screen white */
+ myCCC.gamutCompProc = (XcmsCompressionProc)NULL;/* no gamut compression func */
+
+ /*
+ * Color specification passed as input can be assumed to:
+ * 1. Be in XcmsCIEXYZFormat
+ * 2. Already be white point adjusted for the Screen White Point.
+ * This means that the white point now associated with this
+ * color spec is the Screen White Point (even if the
+ * ccc->clientWhitePt differs).
+ */
+
+ pColor = pColors_in_out + i;
+
+ if (ccc->visual->class < StaticColor) {
+ /*
+ * GRAY !
+ */
+ _XcmsDIConvertColors(ccc, pColor, ScreenWhitePointOfCCC(ccc),
+ 1, XcmsCIELuvFormat);
+ _XcmsDIConvertColors(ccc, pColor, ScreenWhitePointOfCCC(ccc),
+ 1, XcmsCIEXYZFormat);
+ if (pCompressed) {
+ *(pCompressed + i) = True;
+ }
+ return(XcmsSuccess);
+ }
+
+ /* Convert from CIEXYZ to CIELuv format */
+ if (_XcmsDIConvertColors(&myCCC, pColor,
+ ScreenWhitePointOfCCC(&myCCC), 1, XcmsCIELuvFormat)
+ == XcmsFailure) {
+ return(XcmsFailure);
+ }
+
+ /* Step 1: compute the maximum L* and chroma for this hue. */
+ /* This copy may be overkill but it preserves the pixel etc. */
+ saveLstar = pColor->spec.CIELuv.L_star;
+ hue = XCMS_CIELUV_PMETRIC_HUE(pColor->spec.CIELuv.u_star,
+ pColor->spec.CIELuv.v_star);
+ chroma = XCMS_CIELUV_PMETRIC_CHROMA(pColor->spec.CIELuv.u_star,
+ pColor->spec.CIELuv.v_star);
+ memcpy((char *)&Luv_max, (char *)pColor, sizeof(XcmsColor));
+ if (_XcmsCIELuvQueryMaxLCRGB (&myCCC, hue, &Luv_max, &rgb_max)
+ == XcmsFailure) {
+ return (XcmsFailure);
+ }
+ maxLstar = Luv_max.spec.CIELuv.L_star;
+
+ /* Now check and return the appropriate L* */
+ if (saveLstar == maxLstar) {
+ /* When the L* input is equal to the maximum L* */
+ /* merely return the maximum Luv point. */
+ memcpy((char *)pColor, (char *)&Luv_max, sizeof(XcmsColor));
+ retval = _XcmsDIConvertColors(&myCCC, pColor,
+ ScreenWhitePointOfCCC(&myCCC), 1, XcmsCIEXYZFormat);
+ } else {
+ /* return the closest point on the hue leaf. */
+ /* must do a bisection here to compute the delta e. */
+ maxChroma = XCMS_CIELUV_PMETRIC_CHROMA(Luv_max.spec.CIELuv.u_star,
+ Luv_max.spec.CIELuv.v_star);
+ nMaxCount = MAXBISECTCOUNT;
+ nI = nMaxCount / 2;
+ bestLstar = Lstar = pColor->spec.CIELuv.L_star;
+ bestustar = pColor->spec.CIELuv.u_star;
+ bestvstar = pColor->spec.CIELuv.v_star;
+ bestChroma = Chroma = chroma;
+ saveDist = XCMS_SQRT(((Chroma - maxChroma) * (Chroma - maxChroma)) +
+ ((Lstar - maxLstar) * (Lstar - maxLstar)));
+ for (nCount = 0; nCount < nMaxCount; nCount++) {
+ nT = (XcmsFloat) nI / (XcmsFloat) nMaxCount;
+ if (saveLstar > maxLstar) {
+ pColor->spec.RGBi.red = rgb_max.red * (1.0 - nT) + nT;
+ pColor->spec.RGBi.green = rgb_max.green * (1.0 - nT) + nT;
+ pColor->spec.RGBi.blue = rgb_max.blue * (1.0 - nT) + nT;
+ } else {
+ pColor->spec.RGBi.red = rgb_max.red - (rgb_max.red * nT);
+ pColor->spec.RGBi.green = rgb_max.green - (rgb_max.green * nT);
+ pColor->spec.RGBi.blue = rgb_max.blue - (rgb_max.blue * nT);
+ }
+ pColor->format = XcmsRGBiFormat;
+
+ /* Convert from RGBi to CIE Luv */
+ if (_XcmsConvertColorsWithWhitePt(&myCCC, pColor,
+ ScreenWhitePointOfCCC(&myCCC), 1, XcmsCIELuvFormat,
+ (Bool *) NULL) == XcmsFailure) {
+ return (XcmsFailure);
+ }
+ chroma = XCMS_CIELUV_PMETRIC_CHROMA(pColor->spec.CIELuv.u_star,
+ pColor->spec.CIELuv.v_star);
+ tmpDist = XCMS_SQRT(((Chroma - chroma) * (Chroma - chroma)) +
+ ((Lstar - pColor->spec.CIELuv.L_star) *
+ (Lstar - pColor->spec.CIELuv.L_star)));
+ nILast = nI;
+ if (tmpDist > saveDist) {
+ nI /= 2;
+ } else {
+ nI = (nMaxCount + nI) / 2;
+ saveDist = tmpDist;
+ bestLstar = pColor->spec.CIELuv.L_star;
+ bestustar = pColor->spec.CIELuv.u_star;
+ bestvstar = pColor->spec.CIELuv.v_star;
+ bestChroma = chroma;
+ }
+ if (nI == nILast || nI == 0) {
+ break;
+ }
+ }
+ if (bestChroma >= maxChroma) {
+ pColor->spec.CIELuv.L_star = maxLstar;
+ pColor->spec.CIELuv.u_star = Luv_max.spec.CIELuv.u_star;
+ pColor->spec.CIELuv.v_star = Luv_max.spec.CIELuv.v_star;
+ } else {
+ pColor->spec.CIELuv.L_star = bestLstar;
+ pColor->spec.CIELuv.u_star = bestustar;
+ pColor->spec.CIELuv.v_star = bestvstar;
+ }
+ retval = _XcmsDIConvertColors(&myCCC, pColor,
+ ScreenWhitePointOfCCC(&myCCC), 1, XcmsCIEXYZFormat);
+
+ if (retval != XcmsFailure && pCompressed != NULL) {
+ *(pCompressed + i) = True;
+ }
+ }
+ return(retval);
+}
diff --git a/libX11/src/xcms/LuvMnL.c b/libX11/src/xcms/LuvMnL.c
index d463c4da5..b873fa652 100644
--- a/libX11/src/xcms/LuvMnL.c
+++ b/libX11/src/xcms/LuvMnL.c
@@ -1,216 +1,216 @@
-
-/*
- * Code and supporting documentation (c) Copyright 1990 1991 Tektronix, Inc.
- * All Rights Reserved
- *
- * This file is a component of an X Window System-specific implementation
- * of XCMS based on the TekColor Color Management System. Permission is
- * hereby granted to use, copy, modify, sell, and otherwise distribute this
- * software and its documentation for any purpose and without fee, provided
- * that this copyright, permission, and disclaimer notice is reproduced in
- * all copies of this software and in supporting documentation. TekColor
- * is a trademark of Tektronix, Inc.
- *
- * Tektronix makes no representation about the suitability of this software
- * for any purpose. It is provided "as is" and with all faults.
- *
- * TEKTRONIX DISCLAIMS ALL WARRANTIES APPLICABLE TO THIS SOFTWARE,
- * INCLUDING THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE. IN NO EVENT SHALL TEKTRONIX BE LIABLE FOR ANY
- * SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER
- * RESULTING FROM LOSS OF USE, DATA, OR PROFITS, WHETHER IN AN ACTION OF
- * CONTRACT, NEGLIGENCE, OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
- * CONNECTION WITH THE USE OR THE PERFORMANCE OF THIS SOFTWARE.
- *
- * NAME
- * CIELuvMnL.c
- *
- * DESCRIPTION
- * Source for the XcmsCIELuvQueryMinL() gamut boundary
- * querying routine.
- *
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-#include "Xcmsint.h"
-#include <math.h>
-#include "Cv.h"
-
-/*
- * DEFINES
- */
-#define MAXBISECTCOUNT 100
-#define EPS (XcmsFloat)0.001
-#define START_L_STAR (XcmsFloat)40.0
-
-
-/************************************************************************
- * *
- * PUBLIC ROUTINES *
- * *
- ************************************************************************/
-
-/*
- * NAME
- * XcmsCIELuvQueryMinL - Compute max Lstar for a hue and chroma
- *
- * SYNOPSIS
- */
-Status
-XcmsCIELuvQueryMinL(
- XcmsCCC ccc,
- XcmsFloat hue_angle, /* hue angle in degrees */
- XcmsFloat chroma,
- XcmsColor *pColor_return)
-/*
- * DESCRIPTION
- * Return the maximum Lstar for a specified hue_angle and chroma.
- *
- * ASSUMPTIONS
- * This routine assumes that the white point associated with
- * the color specification is the Screen White Point. The
- * Screen White Point will also be associated with the
- * returned color specification.
- *
- * RETURNS
- * XcmsFailure - Failure
- * XcmsSuccess - Succeeded with no modifications
- *
- */
-{
- XcmsCCCRec myCCC;
- XcmsColor max_lc, tmp, prev;
- XcmsFloat max_chroma, tmp_chroma;
- XcmsFloat hue, nT, nChroma, lastChroma, prevChroma;
- XcmsFloat rFactor;
- XcmsRGBi rgb_saved;
- int nCount, nMaxCount;
-
- /*
- * Check Arguments
- */
- if (ccc == NULL || pColor_return == NULL) {
- return(XcmsFailure);
- }
-
- /* setup the CCC to use for the conversions. */
- memcpy ((char *) &myCCC, (char *) ccc, sizeof(XcmsCCCRec));
- myCCC.clientWhitePt.format = XcmsUndefinedFormat;
- myCCC.gamutCompProc = (XcmsCompressionProc) NULL;
-
- while (hue_angle < 0.0) {
- hue_angle += 360.0;
- }
- while (hue_angle >= 360.0) {
- hue_angle -= 360.0;
- }
-
- hue = radians(hue_angle);
- tmp.spec.CIELuv.L_star = START_L_STAR;
- tmp.spec.CIELuv.u_star = XCMS_CIEUSTAROFHUE(hue, chroma);
- tmp.spec.CIELuv.v_star = XCMS_CIEVSTAROFHUE(hue, chroma);
- tmp.pixel = pColor_return->pixel;
- tmp.format = XcmsCIELuvFormat;
-
- /* Step 1: Obtain the maximum L_star and chroma for this hue. */
- if (_XcmsCIELuvQueryMaxLCRGB(&myCCC, hue, &max_lc, &rgb_saved)
- == XcmsFailure) {
- return(XcmsFailure);
- }
-
- max_chroma = XCMS_CIELUV_PMETRIC_CHROMA(max_lc.spec.CIELuv.u_star,
- max_lc.spec.CIELuv.v_star);
-
- if (max_chroma <= chroma) {
- /*
- * If the chroma is greater than the chroma for the
- * maximum L/chroma point then the L_star is the
- * the L_star for the maximum L_star/chroma point.
- * This is an error but I return the best approximation I can.
- * Thus the inconsistency.
- */
- memcpy ((char *) pColor_return, (char *) &max_lc, sizeof (XcmsColor));
- return(XcmsSuccess);
- }
-
- /*
- * If the chroma is equal to the chroma for the
- * maximum L_star/chroma point then the L_star is the
- * the L_star for the maximum L* and chroma point.
- */
- /* if (max_chroma == chroma) {
- * memcpy ((char *) pColor_return, (char *) &max_lc, sizeof (XcmsColor));
- * return(XcmsSuccess);
- * }
- */
-
- /* must do a bisection here to compute the maximum L* */
- /* save the structure input so that any elements that */
- /* are not touched are recopied later in the routine. */
- nChroma = chroma;
- tmp_chroma = max_chroma;
- lastChroma = -1.0;
- nMaxCount = MAXBISECTCOUNT;
- rFactor = 1.0;
-
- for (nCount = 0; nCount < nMaxCount; nCount++) {
- prevChroma = lastChroma;
- lastChroma = tmp_chroma;
- nT = (nChroma - max_chroma) / max_chroma * rFactor;
- memcpy ((char *)&prev, (char *)&tmp, sizeof(XcmsColor));
- tmp.spec.RGBi.red = rgb_saved.red + (rgb_saved.red * nT);
- tmp.spec.RGBi.green = rgb_saved.green + (rgb_saved.green * nT);
- tmp.spec.RGBi.blue = rgb_saved.blue + (rgb_saved.blue * nT);
- tmp.format = XcmsRGBiFormat;
-
- /* convert from RGB to CIELuv */
- if (_XcmsConvertColorsWithWhitePt(&myCCC, &tmp,
- ScreenWhitePointOfCCC(&myCCC), 1, XcmsCIELuvFormat,
- (Bool *) NULL) == XcmsFailure) {
- return(XcmsFailure);
- }
-
- /* Now check the return against what is expected */
- tmp_chroma = XCMS_CIELUV_PMETRIC_CHROMA(tmp.spec.CIELuv.u_star,
- tmp.spec.CIELuv.v_star);
- if (tmp_chroma <= chroma + EPS && tmp_chroma >= chroma - EPS) {
- /* Found It! */
- memcpy ((char *) pColor_return, (char *) &tmp, sizeof (XcmsColor));
- return(XcmsSuccess);
- }
- nChroma += chroma - tmp_chroma;
- if (nChroma > max_chroma) {
- nChroma = max_chroma;
- rFactor *= 0.5; /* selective relaxation employed */
- } else if (nChroma < 0.0) {
- if (XCMS_FABS(lastChroma - chroma) <
- XCMS_FABS(tmp_chroma - chroma)) {
- memcpy ((char *)pColor_return, (char *)&prev,
- sizeof(XcmsColor));
- } else {
- memcpy ((char *)pColor_return, (char *)&tmp,
- sizeof(XcmsColor));
- }
- return(XcmsSuccess);
- } else if (tmp_chroma <= prevChroma + EPS &&
- tmp_chroma >= prevChroma - EPS) {
- rFactor *= 0.5; /* selective relaxation employed */
- }
- }
-
- if (nCount >= nMaxCount) {
- if (XCMS_FABS(lastChroma - chroma) <
- XCMS_FABS(tmp_chroma - chroma)) {
- memcpy ((char *)pColor_return, (char *)&prev,
- sizeof(XcmsColor));
- } else {
- memcpy ((char *)pColor_return, (char *)&tmp,
- sizeof(XcmsColor));
- }
- }
- memcpy ((char *) pColor_return, (char *) &tmp, sizeof (XcmsColor));
- return(XcmsSuccess);
-}
+
+/*
+ * Code and supporting documentation (c) Copyright 1990 1991 Tektronix, Inc.
+ * All Rights Reserved
+ *
+ * This file is a component of an X Window System-specific implementation
+ * of XCMS based on the TekColor Color Management System. Permission is
+ * hereby granted to use, copy, modify, sell, and otherwise distribute this
+ * software and its documentation for any purpose and without fee, provided
+ * that this copyright, permission, and disclaimer notice is reproduced in
+ * all copies of this software and in supporting documentation. TekColor
+ * is a trademark of Tektronix, Inc.
+ *
+ * Tektronix makes no representation about the suitability of this software
+ * for any purpose. It is provided "as is" and with all faults.
+ *
+ * TEKTRONIX DISCLAIMS ALL WARRANTIES APPLICABLE TO THIS SOFTWARE,
+ * INCLUDING THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+ * PARTICULAR PURPOSE. IN NO EVENT SHALL TEKTRONIX BE LIABLE FOR ANY
+ * SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER
+ * RESULTING FROM LOSS OF USE, DATA, OR PROFITS, WHETHER IN AN ACTION OF
+ * CONTRACT, NEGLIGENCE, OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
+ * CONNECTION WITH THE USE OR THE PERFORMANCE OF THIS SOFTWARE.
+ *
+ * NAME
+ * CIELuvMnL.c
+ *
+ * DESCRIPTION
+ * Source for the XcmsCIELuvQueryMinL() gamut boundary
+ * querying routine.
+ *
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+#include "Xcmsint.h"
+#include <math.h>
+#include "Cv.h"
+
+/*
+ * DEFINES
+ */
+#define MAXBISECTCOUNT 100
+#define EPS (XcmsFloat)0.001
+#define START_L_STAR (XcmsFloat)40.0
+
+
+/************************************************************************
+ * *
+ * PUBLIC ROUTINES *
+ * *
+ ************************************************************************/
+
+/*
+ * NAME
+ * XcmsCIELuvQueryMinL - Compute max Lstar for a hue and chroma
+ *
+ * SYNOPSIS
+ */
+Status
+XcmsCIELuvQueryMinL(
+ XcmsCCC ccc,
+ XcmsFloat hue_angle, /* hue angle in degrees */
+ XcmsFloat chroma,
+ XcmsColor *pColor_return)
+/*
+ * DESCRIPTION
+ * Return the maximum Lstar for a specified hue_angle and chroma.
+ *
+ * ASSUMPTIONS
+ * This routine assumes that the white point associated with
+ * the color specification is the Screen White Point. The
+ * Screen White Point will also be associated with the
+ * returned color specification.
+ *
+ * RETURNS
+ * XcmsFailure - Failure
+ * XcmsSuccess - Succeeded with no modifications
+ *
+ */
+{
+ XcmsCCCRec myCCC;
+ XcmsColor max_lc, tmp, prev;
+ XcmsFloat max_chroma, tmp_chroma;
+ XcmsFloat hue, nT, nChroma, lastChroma, prevChroma;
+ XcmsFloat rFactor;
+ XcmsRGBi rgb_saved;
+ int nCount, nMaxCount;
+
+ /*
+ * Check Arguments
+ */
+ if (ccc == NULL || pColor_return == NULL) {
+ return(XcmsFailure);
+ }
+
+ /* setup the CCC to use for the conversions. */
+ memcpy ((char *) &myCCC, (char *) ccc, sizeof(XcmsCCCRec));
+ myCCC.clientWhitePt.format = XcmsUndefinedFormat;
+ myCCC.gamutCompProc = (XcmsCompressionProc) NULL;
+
+ while (hue_angle < 0.0) {
+ hue_angle += 360.0;
+ }
+ while (hue_angle >= 360.0) {
+ hue_angle -= 360.0;
+ }
+
+ hue = radians(hue_angle);
+ tmp.spec.CIELuv.L_star = START_L_STAR;
+ tmp.spec.CIELuv.u_star = XCMS_CIEUSTAROFHUE(hue, chroma);
+ tmp.spec.CIELuv.v_star = XCMS_CIEVSTAROFHUE(hue, chroma);
+ tmp.pixel = pColor_return->pixel;
+ tmp.format = XcmsCIELuvFormat;
+
+ /* Step 1: Obtain the maximum L_star and chroma for this hue. */
+ if (_XcmsCIELuvQueryMaxLCRGB(&myCCC, hue, &max_lc, &rgb_saved)
+ == XcmsFailure) {
+ return(XcmsFailure);
+ }
+
+ max_chroma = XCMS_CIELUV_PMETRIC_CHROMA(max_lc.spec.CIELuv.u_star,
+ max_lc.spec.CIELuv.v_star);
+
+ if (max_chroma <= chroma) {
+ /*
+ * If the chroma is greater than the chroma for the
+ * maximum L/chroma point then the L_star is the
+ * the L_star for the maximum L_star/chroma point.
+ * This is an error but I return the best approximation I can.
+ * Thus the inconsistency.
+ */
+ memcpy ((char *) pColor_return, (char *) &max_lc, sizeof (XcmsColor));
+ return(XcmsSuccess);
+ }
+
+ /*
+ * If the chroma is equal to the chroma for the
+ * maximum L_star/chroma point then the L_star is the
+ * the L_star for the maximum L* and chroma point.
+ */
+ /* if (max_chroma == chroma) {
+ * memcpy ((char *) pColor_return, (char *) &max_lc, sizeof (XcmsColor));
+ * return(XcmsSuccess);
+ * }
+ */
+
+ /* must do a bisection here to compute the maximum L* */
+ /* save the structure input so that any elements that */
+ /* are not touched are recopied later in the routine. */
+ nChroma = chroma;
+ tmp_chroma = max_chroma;
+ lastChroma = -1.0;
+ nMaxCount = MAXBISECTCOUNT;
+ rFactor = 1.0;
+
+ for (nCount = 0; nCount < nMaxCount; nCount++) {
+ prevChroma = lastChroma;
+ lastChroma = tmp_chroma;
+ nT = (nChroma - max_chroma) / max_chroma * rFactor;
+ memcpy ((char *)&prev, (char *)&tmp, sizeof(XcmsColor));
+ tmp.spec.RGBi.red = rgb_saved.red + (rgb_saved.red * nT);
+ tmp.spec.RGBi.green = rgb_saved.green + (rgb_saved.green * nT);
+ tmp.spec.RGBi.blue = rgb_saved.blue + (rgb_saved.blue * nT);
+ tmp.format = XcmsRGBiFormat;
+
+ /* convert from RGB to CIELuv */
+ if (_XcmsConvertColorsWithWhitePt(&myCCC, &tmp,
+ ScreenWhitePointOfCCC(&myCCC), 1, XcmsCIELuvFormat,
+ (Bool *) NULL) == XcmsFailure) {
+ return(XcmsFailure);
+ }
+
+ /* Now check the return against what is expected */
+ tmp_chroma = XCMS_CIELUV_PMETRIC_CHROMA(tmp.spec.CIELuv.u_star,
+ tmp.spec.CIELuv.v_star);
+ if (tmp_chroma <= chroma + EPS && tmp_chroma >= chroma - EPS) {
+ /* Found It! */
+ memcpy ((char *) pColor_return, (char *) &tmp, sizeof (XcmsColor));
+ return(XcmsSuccess);
+ }
+ nChroma += chroma - tmp_chroma;
+ if (nChroma > max_chroma) {
+ nChroma = max_chroma;
+ rFactor *= 0.5; /* selective relaxation employed */
+ } else if (nChroma < 0.0) {
+ if (XCMS_FABS(lastChroma - chroma) <
+ XCMS_FABS(tmp_chroma - chroma)) {
+ memcpy ((char *)pColor_return, (char *)&prev,
+ sizeof(XcmsColor));
+ } else {
+ memcpy ((char *)pColor_return, (char *)&tmp,
+ sizeof(XcmsColor));
+ }
+ return(XcmsSuccess);
+ } else if (tmp_chroma <= prevChroma + EPS &&
+ tmp_chroma >= prevChroma - EPS) {
+ rFactor *= 0.5; /* selective relaxation employed */
+ }
+ }
+
+ if (nCount >= nMaxCount) {
+ if (XCMS_FABS(lastChroma - chroma) <
+ XCMS_FABS(tmp_chroma - chroma)) {
+ memcpy ((char *)pColor_return, (char *)&prev,
+ sizeof(XcmsColor));
+ } else {
+ memcpy ((char *)pColor_return, (char *)&tmp,
+ sizeof(XcmsColor));
+ }
+ }
+ memcpy ((char *) pColor_return, (char *) &tmp, sizeof (XcmsColor));
+ return(XcmsSuccess);
+}
diff --git a/libX11/src/xcms/LuvMxC.c b/libX11/src/xcms/LuvMxC.c
index be8bc4f70..a67251477 100644
--- a/libX11/src/xcms/LuvMxC.c
+++ b/libX11/src/xcms/LuvMxC.c
@@ -1,204 +1,204 @@
-
-/*
- * Code and supporting documentation (c) Copyright 1990 1991 Tektronix, Inc.
- * All Rights Reserved
- *
- * This file is a component of an X Window System-specific implementation
- * of XCMS based on the TekColor Color Management System. Permission is
- * hereby granted to use, copy, modify, sell, and otherwise distribute this
- * software and its documentation for any purpose and without fee, provided
- * that this copyright, permission, and disclaimer notice is reproduced in
- * all copies of this software and in supporting documentation. TekColor
- * is a trademark of Tektronix, Inc.
- *
- * Tektronix makes no representation about the suitability of this software
- * for any purpose. It is provided "as is" and with all faults.
- *
- * TEKTRONIX DISCLAIMS ALL WARRANTIES APPLICABLE TO THIS SOFTWARE,
- * INCLUDING THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE. IN NO EVENT SHALL TEKTRONIX BE LIABLE FOR ANY
- * SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER
- * RESULTING FROM LOSS OF USE, DATA, OR PROFITS, WHETHER IN AN ACTION OF
- * CONTRACT, NEGLIGENCE, OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
- * CONNECTION WITH THE USE OR THE PERFORMANCE OF THIS SOFTWARE.
- *
- *
- *
- * NAME
- * CIELuvMxC.c
- *
- * DESCRIPTION
- * Source for the XcmsCIELuvQueryMaxC() gamut boundary
- * querying routine.
- *
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-#include "Xcmsint.h"
-#include <math.h>
-#include "Cv.h"
-
-/*
- * DEFINES
- */
-#define MAXBISECTCOUNT 100
-#define EPS (XcmsFloat)0.001
-#define START_CHROMA (XcmsFloat)2.2
-#define TOPL (XcmsFloat)100.0
-
-
-/************************************************************************
- * *
- * PUBLIC ROUTINES *
- * *
- ************************************************************************/
-
-/*
- * NAME
- * XcmsCIELuvQueryMaxC - max chroma for a hue_angle and L_star
- *
- * SYNOPSIS
- */
-Status
-XcmsCIELuvQueryMaxC(
- XcmsCCC ccc,
- XcmsFloat hue_angle, /* hue angle in degrees */
- XcmsFloat L_star,
- XcmsColor *pColor_return)
-/*
- * DESCRIPTION
- * Return the maximum chroma for a specific hue_angle and L_star.
- * The returned format is in XcmsCIELuvFormat.
- *
- *
- * ASSUMPTIONS
- * This routine assumes that the white point associated with
- * the color specification is the Screen White Point. The
- * Screen White Point will also be associated with the
- * returned color specification.
- *
- * RETURNS
- * XcmsFailure - Failure
- * XcmsSuccess - Succeeded
- *
- */
-{
- XcmsCCCRec myCCC;
- XcmsColor tmp;
- XcmsColor max_lc;
- XcmsFloat n_L_star, last_L_star, prev_L_star;
- XcmsFloat hue, lastuStar, lastvStar, /*lastChroma,*/ maxDist, nT, rFactor;
- XcmsRGBi rgb_saved;
- int nCount, nMaxCount;
-
- /*
- * Check Arguments
- */
- if (ccc == NULL || pColor_return == NULL) {
- return(XcmsFailure);
- }
-
- /* Use my own CCC and inherit screen white Pt */
- memcpy ((char *)&myCCC, (char *)ccc, sizeof(XcmsCCCRec));
- myCCC.clientWhitePt.format = XcmsUndefinedFormat;
- myCCC.gamutCompProc = (XcmsCompressionProc)NULL;/* no gamut comp func */
-
- while (hue_angle < 0.0) {
- hue_angle += 360.0;
- }
- while (hue_angle >= 360.0) {
- hue_angle -= 360.0;
- }
-
- hue = radians(hue_angle);
- tmp.spec.CIELuv.L_star = L_star;
- tmp.spec.CIELuv.u_star = XCMS_CIEUSTAROFHUE(hue, START_CHROMA);
- tmp.spec.CIELuv.v_star = XCMS_CIEVSTAROFHUE(hue, START_CHROMA);
- tmp.pixel = pColor_return->pixel;
- tmp.format = XcmsCIELuvFormat;
-
- /* Step 1: compute the maximum L_star and chroma for this hue. */
- memcpy((char *)&max_lc, (char *)&tmp, sizeof(XcmsColor));
- if (_XcmsCIELuvQueryMaxLCRGB(&myCCC, hue, &max_lc, &rgb_saved)
- == XcmsFailure) {
- return(XcmsFailure);
- }
-
- /*
- * Step 2: Do a bisection here to compute the maximum chroma
- * Note the differences between when the point to be found
- * is above the maximum LC point and when it is below.
- */
- if (L_star <= max_lc.spec.CIELuv.L_star) {
- maxDist = max_lc.spec.CIELuv.L_star;
- } else {
- maxDist = TOPL - max_lc.spec.CIELuv.L_star;
- }
-
- n_L_star = L_star;
- last_L_star = -1.0;
- nMaxCount = MAXBISECTCOUNT;
- rFactor = 1.0;
-
- for (nCount = 0; nCount < nMaxCount; nCount++) {
- prev_L_star = last_L_star;
- last_L_star = tmp.spec.CIELuv.L_star;
-/* lastChroma = XCMS_CIELUV_PMETRIC_CHROMA(tmp.spec.CIELuv.u_star, */
-/* tmp.spec.CIELuv.v_star); */
- lastuStar = tmp.spec.CIELuv.u_star;
- lastvStar = tmp.spec.CIELuv.v_star;
- nT = (n_L_star - max_lc.spec.CIELuv.L_star) / maxDist * rFactor;
- /* printf("(n_L_star, nT) = %lf %lf ", n_L_star, nT); */
- if (nT > 0) {
- tmp.spec.RGBi.red = rgb_saved.red * (1.0 - nT) + nT;
- tmp.spec.RGBi.green = rgb_saved.green * (1.0 - nT) + nT;
- tmp.spec.RGBi.blue = rgb_saved.blue * (1.0 - nT) + nT;
- } else {
- tmp.spec.RGBi.red = rgb_saved.red + (rgb_saved.red * nT);
- tmp.spec.RGBi.green = rgb_saved.green + (rgb_saved.green * nT);
- tmp.spec.RGBi.blue = rgb_saved.blue + (rgb_saved.blue * nT);
- }
- tmp.format = XcmsRGBiFormat;
-
- /* convert from RGB to CIELuv */
- if (_XcmsConvertColorsWithWhitePt(&myCCC, &tmp,
- ScreenWhitePointOfCCC(&myCCC), 1, XcmsCIELuvFormat,
- (Bool *) NULL) == XcmsFailure) {
- return(XcmsFailure);
- }
-
- /*
- * Now check if we've reached the target L_star
- */
- /* printf("result Lstar = %lf\n", tmp.spec.CIELuv.L_star); */
- if (tmp.spec.CIELuv.L_star <= L_star + EPS &&
- tmp.spec.CIELuv.L_star >= L_star - EPS) {
- memcpy((char *)pColor_return, (char *)&tmp, sizeof(XcmsColor));
- return(XcmsSuccess);
- }
- if (nT > 0) {
- n_L_star += ((TOPL - n_L_star) *
- (L_star - tmp.spec.CIELuv.L_star)) / (TOPL - L_star);
- } else {
- n_L_star *= L_star / tmp.spec.CIELuv.L_star;
- }
- if (tmp.spec.CIELuv.L_star <= prev_L_star + EPS &&
- tmp.spec.CIELuv.L_star >= prev_L_star - EPS) {
- rFactor *= 0.5; /* selective relaxation employed */
- /* printf("rFactor = %lf\n", rFactor); */
- }
- }
- if (XCMS_FABS(last_L_star - L_star) <
- XCMS_FABS(tmp.spec.CIELuv.L_star - L_star)) {
- tmp.spec.CIELuv.u_star = lastuStar;
- tmp.spec.CIELuv.v_star = lastvStar;
-/* tmp.spec.CIELuv.u_star = XCMS_CIEUSTAROFHUE(hue, lastChroma); */
-/* tmp.spec.CIELuv.v_star = XCMS_CIEVSTAROFHUE(hue, lastChroma); */
- }
- tmp.spec.CIELuv.L_star = L_star;
- memcpy((char *)pColor_return, (char *)&tmp, sizeof(XcmsColor));
- return(XcmsSuccess);
-}
+
+/*
+ * Code and supporting documentation (c) Copyright 1990 1991 Tektronix, Inc.
+ * All Rights Reserved
+ *
+ * This file is a component of an X Window System-specific implementation
+ * of XCMS based on the TekColor Color Management System. Permission is
+ * hereby granted to use, copy, modify, sell, and otherwise distribute this
+ * software and its documentation for any purpose and without fee, provided
+ * that this copyright, permission, and disclaimer notice is reproduced in
+ * all copies of this software and in supporting documentation. TekColor
+ * is a trademark of Tektronix, Inc.
+ *
+ * Tektronix makes no representation about the suitability of this software
+ * for any purpose. It is provided "as is" and with all faults.
+ *
+ * TEKTRONIX DISCLAIMS ALL WARRANTIES APPLICABLE TO THIS SOFTWARE,
+ * INCLUDING THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+ * PARTICULAR PURPOSE. IN NO EVENT SHALL TEKTRONIX BE LIABLE FOR ANY
+ * SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER
+ * RESULTING FROM LOSS OF USE, DATA, OR PROFITS, WHETHER IN AN ACTION OF
+ * CONTRACT, NEGLIGENCE, OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
+ * CONNECTION WITH THE USE OR THE PERFORMANCE OF THIS SOFTWARE.
+ *
+ *
+ *
+ * NAME
+ * CIELuvMxC.c
+ *
+ * DESCRIPTION
+ * Source for the XcmsCIELuvQueryMaxC() gamut boundary
+ * querying routine.
+ *
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+#include "Xcmsint.h"
+#include <math.h>
+#include "Cv.h"
+
+/*
+ * DEFINES
+ */
+#define MAXBISECTCOUNT 100
+#define EPS (XcmsFloat)0.001
+#define START_CHROMA (XcmsFloat)2.2
+#define TOPL (XcmsFloat)100.0
+
+
+/************************************************************************
+ * *
+ * PUBLIC ROUTINES *
+ * *
+ ************************************************************************/
+
+/*
+ * NAME
+ * XcmsCIELuvQueryMaxC - max chroma for a hue_angle and L_star
+ *
+ * SYNOPSIS
+ */
+Status
+XcmsCIELuvQueryMaxC(
+ XcmsCCC ccc,
+ XcmsFloat hue_angle, /* hue angle in degrees */
+ XcmsFloat L_star,
+ XcmsColor *pColor_return)
+/*
+ * DESCRIPTION
+ * Return the maximum chroma for a specific hue_angle and L_star.
+ * The returned format is in XcmsCIELuvFormat.
+ *
+ *
+ * ASSUMPTIONS
+ * This routine assumes that the white point associated with
+ * the color specification is the Screen White Point. The
+ * Screen White Point will also be associated with the
+ * returned color specification.
+ *
+ * RETURNS
+ * XcmsFailure - Failure
+ * XcmsSuccess - Succeeded
+ *
+ */
+{
+ XcmsCCCRec myCCC;
+ XcmsColor tmp;
+ XcmsColor max_lc;
+ XcmsFloat n_L_star, last_L_star, prev_L_star;
+ XcmsFloat hue, lastuStar, lastvStar, /*lastChroma,*/ maxDist, nT, rFactor;
+ XcmsRGBi rgb_saved;
+ int nCount, nMaxCount;
+
+ /*
+ * Check Arguments
+ */
+ if (ccc == NULL || pColor_return == NULL) {
+ return(XcmsFailure);
+ }
+
+ /* Use my own CCC and inherit screen white Pt */
+ memcpy ((char *)&myCCC, (char *)ccc, sizeof(XcmsCCCRec));
+ myCCC.clientWhitePt.format = XcmsUndefinedFormat;
+ myCCC.gamutCompProc = (XcmsCompressionProc)NULL;/* no gamut comp func */
+
+ while (hue_angle < 0.0) {
+ hue_angle += 360.0;
+ }
+ while (hue_angle >= 360.0) {
+ hue_angle -= 360.0;
+ }
+
+ hue = radians(hue_angle);
+ tmp.spec.CIELuv.L_star = L_star;
+ tmp.spec.CIELuv.u_star = XCMS_CIEUSTAROFHUE(hue, START_CHROMA);
+ tmp.spec.CIELuv.v_star = XCMS_CIEVSTAROFHUE(hue, START_CHROMA);
+ tmp.pixel = pColor_return->pixel;
+ tmp.format = XcmsCIELuvFormat;
+
+ /* Step 1: compute the maximum L_star and chroma for this hue. */
+ memcpy((char *)&max_lc, (char *)&tmp, sizeof(XcmsColor));
+ if (_XcmsCIELuvQueryMaxLCRGB(&myCCC, hue, &max_lc, &rgb_saved)
+ == XcmsFailure) {
+ return(XcmsFailure);
+ }
+
+ /*
+ * Step 2: Do a bisection here to compute the maximum chroma
+ * Note the differences between when the point to be found
+ * is above the maximum LC point and when it is below.
+ */
+ if (L_star <= max_lc.spec.CIELuv.L_star) {
+ maxDist = max_lc.spec.CIELuv.L_star;
+ } else {
+ maxDist = TOPL - max_lc.spec.CIELuv.L_star;
+ }
+
+ n_L_star = L_star;
+ last_L_star = -1.0;
+ nMaxCount = MAXBISECTCOUNT;
+ rFactor = 1.0;
+
+ for (nCount = 0; nCount < nMaxCount; nCount++) {
+ prev_L_star = last_L_star;
+ last_L_star = tmp.spec.CIELuv.L_star;
+/* lastChroma = XCMS_CIELUV_PMETRIC_CHROMA(tmp.spec.CIELuv.u_star, */
+/* tmp.spec.CIELuv.v_star); */
+ lastuStar = tmp.spec.CIELuv.u_star;
+ lastvStar = tmp.spec.CIELuv.v_star;
+ nT = (n_L_star - max_lc.spec.CIELuv.L_star) / maxDist * rFactor;
+ /* printf("(n_L_star, nT) = %lf %lf ", n_L_star, nT); */
+ if (nT > 0) {
+ tmp.spec.RGBi.red = rgb_saved.red * (1.0 - nT) + nT;
+ tmp.spec.RGBi.green = rgb_saved.green * (1.0 - nT) + nT;
+ tmp.spec.RGBi.blue = rgb_saved.blue * (1.0 - nT) + nT;
+ } else {
+ tmp.spec.RGBi.red = rgb_saved.red + (rgb_saved.red * nT);
+ tmp.spec.RGBi.green = rgb_saved.green + (rgb_saved.green * nT);
+ tmp.spec.RGBi.blue = rgb_saved.blue + (rgb_saved.blue * nT);
+ }
+ tmp.format = XcmsRGBiFormat;
+
+ /* convert from RGB to CIELuv */
+ if (_XcmsConvertColorsWithWhitePt(&myCCC, &tmp,
+ ScreenWhitePointOfCCC(&myCCC), 1, XcmsCIELuvFormat,
+ (Bool *) NULL) == XcmsFailure) {
+ return(XcmsFailure);
+ }
+
+ /*
+ * Now check if we've reached the target L_star
+ */
+ /* printf("result Lstar = %lf\n", tmp.spec.CIELuv.L_star); */
+ if (tmp.spec.CIELuv.L_star <= L_star + EPS &&
+ tmp.spec.CIELuv.L_star >= L_star - EPS) {
+ memcpy((char *)pColor_return, (char *)&tmp, sizeof(XcmsColor));
+ return(XcmsSuccess);
+ }
+ if (nT > 0) {
+ n_L_star += ((TOPL - n_L_star) *
+ (L_star - tmp.spec.CIELuv.L_star)) / (TOPL - L_star);
+ } else {
+ n_L_star *= L_star / tmp.spec.CIELuv.L_star;
+ }
+ if (tmp.spec.CIELuv.L_star <= prev_L_star + EPS &&
+ tmp.spec.CIELuv.L_star >= prev_L_star - EPS) {
+ rFactor *= 0.5; /* selective relaxation employed */
+ /* printf("rFactor = %lf\n", rFactor); */
+ }
+ }
+ if (XCMS_FABS(last_L_star - L_star) <
+ XCMS_FABS(tmp.spec.CIELuv.L_star - L_star)) {
+ tmp.spec.CIELuv.u_star = lastuStar;
+ tmp.spec.CIELuv.v_star = lastvStar;
+/* tmp.spec.CIELuv.u_star = XCMS_CIEUSTAROFHUE(hue, lastChroma); */
+/* tmp.spec.CIELuv.v_star = XCMS_CIEVSTAROFHUE(hue, lastChroma); */
+ }
+ tmp.spec.CIELuv.L_star = L_star;
+ memcpy((char *)pColor_return, (char *)&tmp, sizeof(XcmsColor));
+ return(XcmsSuccess);
+}
diff --git a/libX11/src/xcms/LuvMxL.c b/libX11/src/xcms/LuvMxL.c
index 71ef0fffe..d1d495b08 100644
--- a/libX11/src/xcms/LuvMxL.c
+++ b/libX11/src/xcms/LuvMxL.c
@@ -1,216 +1,216 @@
-
-/*
- * Code and supporting documentation (c) Copyright 1990 1991 Tektronix, Inc.
- * All Rights Reserved
- *
- * This file is a component of an X Window System-specific implementation
- * of XCMS based on the TekColor Color Management System. Permission is
- * hereby granted to use, copy, modify, sell, and otherwise distribute this
- * software and its documentation for any purpose and without fee, provided
- * that this copyright, permission, and disclaimer notice is reproduced in
- * all copies of this software and in supporting documentation. TekColor
- * is a trademark of Tektronix, Inc.
- *
- * Tektronix makes no representation about the suitability of this software
- * for any purpose. It is provided "as is" and with all faults.
- *
- * TEKTRONIX DISCLAIMS ALL WARRANTIES APPLICABLE TO THIS SOFTWARE,
- * INCLUDING THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE. IN NO EVENT SHALL TEKTRONIX BE LIABLE FOR ANY
- * SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER
- * RESULTING FROM LOSS OF USE, DATA, OR PROFITS, WHETHER IN AN ACTION OF
- * CONTRACT, NEGLIGENCE, OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
- * CONNECTION WITH THE USE OR THE PERFORMANCE OF THIS SOFTWARE.
- *
- * NAME
- * CIELuvMxL.c
- *
- * DESCRIPTION
- * Source for the XcmsCIELuvQueryMaxL() gamut boundary
- * querying routine.
- *
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-#include "Xcmsint.h"
-#include <math.h>
-#include "Cv.h"
-
-/*
- * DEFINES
- */
-#define MAXBISECTCOUNT 100
-#define EPS (XcmsFloat)0.001
-#define START_L_STAR (XcmsFloat)40.0
-
-
-/************************************************************************
- * *
- * PUBLIC ROUTINES *
- * *
- ************************************************************************/
-
-/*
- * NAME
- * XcmsCIELuvQueryMaxL - Compute max Lstar for a hue and chroma
- *
- * SYNOPSIS
- */
-Status
-XcmsCIELuvQueryMaxL(
- XcmsCCC ccc,
- XcmsFloat hue_angle, /* hue angle in degrees */
- XcmsFloat chroma,
- XcmsColor *pColor_return)
-/*
- * DESCRIPTION
- * Return the maximum Lstar for a specified hue_angle and chroma.
- *
- * ASSUMPTIONS
- * This routine assumes that the white point associated with
- * the color specification is the Screen White Point. The
- * Screen White Point will also be associated with the
- * returned color specification.
- *
- * RETURNS
- * XcmsFailure - Failure
- * XcmsSuccess - Succeeded with no modifications
- *
- */
-{
- XcmsCCCRec myCCC;
- XcmsColor max_lc, tmp, prev;
- XcmsFloat max_chroma, tmp_chroma;
- XcmsFloat hue, nT, nChroma, lastChroma, prevChroma;
- XcmsFloat rFactor;
- XcmsRGBi rgb_saved;
- int nCount, nMaxCount;
-
- /*
- * Check Arguments
- */
- if (ccc == NULL || pColor_return == NULL) {
- return(XcmsFailure);
- }
-
- /* setup the CCC to use for the conversions. */
- memcpy ((char *) &myCCC, (char *) ccc, sizeof(XcmsCCCRec));
- myCCC.clientWhitePt.format = XcmsUndefinedFormat;
- myCCC.gamutCompProc = (XcmsCompressionProc) NULL;
-
- while (hue_angle < 0.0) {
- hue_angle += 360.0;
- }
- while (hue_angle >= 360.0) {
- hue_angle -= 360.0;
- }
-
- hue = radians(hue_angle);
- tmp.spec.CIELuv.L_star = START_L_STAR;
- tmp.spec.CIELuv.u_star = XCMS_CIEUSTAROFHUE(hue, chroma);
- tmp.spec.CIELuv.v_star = XCMS_CIEVSTAROFHUE(hue, chroma);
- tmp.pixel = pColor_return->pixel;
- tmp.format = XcmsCIELuvFormat;
-
- /* Step 1: Obtain the maximum L_star and chroma for this hue. */
- if (_XcmsCIELuvQueryMaxLCRGB(&myCCC, hue, &max_lc, &rgb_saved)
- == XcmsFailure) {
- return(XcmsFailure);
- }
-
- max_chroma = XCMS_CIELUV_PMETRIC_CHROMA(max_lc.spec.CIELuv.u_star,
- max_lc.spec.CIELuv.v_star);
-
- if (max_chroma <= chroma) {
- /*
- * If the chroma is greater than the chroma for the
- * maximum L/chroma point then the L_star is the
- * the L_star for the maximum L_star/chroma point.
- * This is an error but I return the best approximation I can.
- * Thus the inconsistency.
- */
- memcpy ((char *) pColor_return, (char *) &max_lc, sizeof (XcmsColor));
- return(XcmsSuccess);
- }
-
- /*
- * If the chroma is equal to the chroma for the
- * maximum L_star/chroma point then the L_star is the
- * the L_star for the maximum L* and chroma point.
- */
- /* if (max_chroma == chroma) {
- * memcpy ((char *) pColor_return, (char *) &max_lc, sizeof (XcmsColor));
- * return(XcmsSuccess);
- * }
- */
-
- /* must do a bisection here to compute the maximum L* */
- /* save the structure input so that any elements that */
- /* are not touched are recopied later in the routine. */
- nChroma = chroma;
- tmp_chroma = max_chroma;
- lastChroma = -1.0;
- nMaxCount = MAXBISECTCOUNT;
- rFactor = 1.0;
-
- for (nCount = 0; nCount < nMaxCount; nCount++) {
- prevChroma = lastChroma;
- lastChroma = tmp_chroma;
- nT = (1.0 - (nChroma / max_chroma)) * rFactor;
- memcpy ((char *)&prev, (char *)&tmp, sizeof(XcmsColor));
- tmp.spec.RGBi.red = rgb_saved.red * (1.0 - nT) + nT;
- tmp.spec.RGBi.green = rgb_saved.green * (1.0 - nT) + nT;
- tmp.spec.RGBi.blue = rgb_saved.blue * (1.0 - nT) + nT;
- tmp.format = XcmsRGBiFormat;
-
- /* convert from RGB to CIELuv */
- if (_XcmsConvertColorsWithWhitePt(&myCCC, &tmp,
- ScreenWhitePointOfCCC(&myCCC), 1, XcmsCIELuvFormat,
- (Bool *) NULL) == XcmsFailure) {
- return(XcmsFailure);
- }
-
- /* Now check the return against what is expected */
- tmp_chroma = XCMS_CIELUV_PMETRIC_CHROMA(tmp.spec.CIELuv.u_star,
- tmp.spec.CIELuv.v_star);
- if (tmp_chroma <= chroma + EPS && tmp_chroma >= chroma - EPS) {
- /* Found It! */
- memcpy ((char *) pColor_return, (char *) &tmp, sizeof (XcmsColor));
- return(XcmsSuccess);
- }
- nChroma += chroma - tmp_chroma;
- if (nChroma > max_chroma) {
- nChroma = max_chroma;
- rFactor *= 0.5; /* selective relaxation employed */
- } else if (nChroma < 0.0) {
- if (XCMS_FABS(lastChroma - chroma) <
- XCMS_FABS(tmp_chroma - chroma)) {
- memcpy ((char *)pColor_return, (char *)&prev,
- sizeof(XcmsColor));
- } else {
- memcpy ((char *)pColor_return, (char *)&tmp,
- sizeof(XcmsColor));
- }
- return(XcmsSuccess);
- } else if (tmp_chroma <= prevChroma + EPS &&
- tmp_chroma >= prevChroma - EPS) {
- rFactor *= 0.5; /* selective relaxation employed */
- }
- }
-
- if (nCount >= nMaxCount) {
- if (XCMS_FABS(lastChroma - chroma) <
- XCMS_FABS(tmp_chroma - chroma)) {
- memcpy ((char *)pColor_return, (char *)&prev,
- sizeof(XcmsColor));
- } else {
- memcpy ((char *)pColor_return, (char *)&tmp,
- sizeof(XcmsColor));
- }
- }
- memcpy ((char *) pColor_return, (char *) &tmp, sizeof (XcmsColor));
- return(XcmsSuccess);
-}
+
+/*
+ * Code and supporting documentation (c) Copyright 1990 1991 Tektronix, Inc.
+ * All Rights Reserved
+ *
+ * This file is a component of an X Window System-specific implementation
+ * of XCMS based on the TekColor Color Management System. Permission is
+ * hereby granted to use, copy, modify, sell, and otherwise distribute this
+ * software and its documentation for any purpose and without fee, provided
+ * that this copyright, permission, and disclaimer notice is reproduced in
+ * all copies of this software and in supporting documentation. TekColor
+ * is a trademark of Tektronix, Inc.
+ *
+ * Tektronix makes no representation about the suitability of this software
+ * for any purpose. It is provided "as is" and with all faults.
+ *
+ * TEKTRONIX DISCLAIMS ALL WARRANTIES APPLICABLE TO THIS SOFTWARE,
+ * INCLUDING THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+ * PARTICULAR PURPOSE. IN NO EVENT SHALL TEKTRONIX BE LIABLE FOR ANY
+ * SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER
+ * RESULTING FROM LOSS OF USE, DATA, OR PROFITS, WHETHER IN AN ACTION OF
+ * CONTRACT, NEGLIGENCE, OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
+ * CONNECTION WITH THE USE OR THE PERFORMANCE OF THIS SOFTWARE.
+ *
+ * NAME
+ * CIELuvMxL.c
+ *
+ * DESCRIPTION
+ * Source for the XcmsCIELuvQueryMaxL() gamut boundary
+ * querying routine.
+ *
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+#include "Xcmsint.h"
+#include <math.h>
+#include "Cv.h"
+
+/*
+ * DEFINES
+ */
+#define MAXBISECTCOUNT 100
+#define EPS (XcmsFloat)0.001
+#define START_L_STAR (XcmsFloat)40.0
+
+
+/************************************************************************
+ * *
+ * PUBLIC ROUTINES *
+ * *
+ ************************************************************************/
+
+/*
+ * NAME
+ * XcmsCIELuvQueryMaxL - Compute max Lstar for a hue and chroma
+ *
+ * SYNOPSIS
+ */
+Status
+XcmsCIELuvQueryMaxL(
+ XcmsCCC ccc,
+ XcmsFloat hue_angle, /* hue angle in degrees */
+ XcmsFloat chroma,
+ XcmsColor *pColor_return)
+/*
+ * DESCRIPTION
+ * Return the maximum Lstar for a specified hue_angle and chroma.
+ *
+ * ASSUMPTIONS
+ * This routine assumes that the white point associated with
+ * the color specification is the Screen White Point. The
+ * Screen White Point will also be associated with the
+ * returned color specification.
+ *
+ * RETURNS
+ * XcmsFailure - Failure
+ * XcmsSuccess - Succeeded with no modifications
+ *
+ */
+{
+ XcmsCCCRec myCCC;
+ XcmsColor max_lc, tmp, prev;
+ XcmsFloat max_chroma, tmp_chroma;
+ XcmsFloat hue, nT, nChroma, lastChroma, prevChroma;
+ XcmsFloat rFactor;
+ XcmsRGBi rgb_saved;
+ int nCount, nMaxCount;
+
+ /*
+ * Check Arguments
+ */
+ if (ccc == NULL || pColor_return == NULL) {
+ return(XcmsFailure);
+ }
+
+ /* setup the CCC to use for the conversions. */
+ memcpy ((char *) &myCCC, (char *) ccc, sizeof(XcmsCCCRec));
+ myCCC.clientWhitePt.format = XcmsUndefinedFormat;
+ myCCC.gamutCompProc = (XcmsCompressionProc) NULL;
+
+ while (hue_angle < 0.0) {
+ hue_angle += 360.0;
+ }
+ while (hue_angle >= 360.0) {
+ hue_angle -= 360.0;
+ }
+
+ hue = radians(hue_angle);
+ tmp.spec.CIELuv.L_star = START_L_STAR;
+ tmp.spec.CIELuv.u_star = XCMS_CIEUSTAROFHUE(hue, chroma);
+ tmp.spec.CIELuv.v_star = XCMS_CIEVSTAROFHUE(hue, chroma);
+ tmp.pixel = pColor_return->pixel;
+ tmp.format = XcmsCIELuvFormat;
+
+ /* Step 1: Obtain the maximum L_star and chroma for this hue. */
+ if (_XcmsCIELuvQueryMaxLCRGB(&myCCC, hue, &max_lc, &rgb_saved)
+ == XcmsFailure) {
+ return(XcmsFailure);
+ }
+
+ max_chroma = XCMS_CIELUV_PMETRIC_CHROMA(max_lc.spec.CIELuv.u_star,
+ max_lc.spec.CIELuv.v_star);
+
+ if (max_chroma <= chroma) {
+ /*
+ * If the chroma is greater than the chroma for the
+ * maximum L/chroma point then the L_star is the
+ * the L_star for the maximum L_star/chroma point.
+ * This is an error but I return the best approximation I can.
+ * Thus the inconsistency.
+ */
+ memcpy ((char *) pColor_return, (char *) &max_lc, sizeof (XcmsColor));
+ return(XcmsSuccess);
+ }
+
+ /*
+ * If the chroma is equal to the chroma for the
+ * maximum L_star/chroma point then the L_star is the
+ * the L_star for the maximum L* and chroma point.
+ */
+ /* if (max_chroma == chroma) {
+ * memcpy ((char *) pColor_return, (char *) &max_lc, sizeof (XcmsColor));
+ * return(XcmsSuccess);
+ * }
+ */
+
+ /* must do a bisection here to compute the maximum L* */
+ /* save the structure input so that any elements that */
+ /* are not touched are recopied later in the routine. */
+ nChroma = chroma;
+ tmp_chroma = max_chroma;
+ lastChroma = -1.0;
+ nMaxCount = MAXBISECTCOUNT;
+ rFactor = 1.0;
+
+ for (nCount = 0; nCount < nMaxCount; nCount++) {
+ prevChroma = lastChroma;
+ lastChroma = tmp_chroma;
+ nT = (1.0 - (nChroma / max_chroma)) * rFactor;
+ memcpy ((char *)&prev, (char *)&tmp, sizeof(XcmsColor));
+ tmp.spec.RGBi.red = rgb_saved.red * (1.0 - nT) + nT;
+ tmp.spec.RGBi.green = rgb_saved.green * (1.0 - nT) + nT;
+ tmp.spec.RGBi.blue = rgb_saved.blue * (1.0 - nT) + nT;
+ tmp.format = XcmsRGBiFormat;
+
+ /* convert from RGB to CIELuv */
+ if (_XcmsConvertColorsWithWhitePt(&myCCC, &tmp,
+ ScreenWhitePointOfCCC(&myCCC), 1, XcmsCIELuvFormat,
+ (Bool *) NULL) == XcmsFailure) {
+ return(XcmsFailure);
+ }
+
+ /* Now check the return against what is expected */
+ tmp_chroma = XCMS_CIELUV_PMETRIC_CHROMA(tmp.spec.CIELuv.u_star,
+ tmp.spec.CIELuv.v_star);
+ if (tmp_chroma <= chroma + EPS && tmp_chroma >= chroma - EPS) {
+ /* Found It! */
+ memcpy ((char *) pColor_return, (char *) &tmp, sizeof (XcmsColor));
+ return(XcmsSuccess);
+ }
+ nChroma += chroma - tmp_chroma;
+ if (nChroma > max_chroma) {
+ nChroma = max_chroma;
+ rFactor *= 0.5; /* selective relaxation employed */
+ } else if (nChroma < 0.0) {
+ if (XCMS_FABS(lastChroma - chroma) <
+ XCMS_FABS(tmp_chroma - chroma)) {
+ memcpy ((char *)pColor_return, (char *)&prev,
+ sizeof(XcmsColor));
+ } else {
+ memcpy ((char *)pColor_return, (char *)&tmp,
+ sizeof(XcmsColor));
+ }
+ return(XcmsSuccess);
+ } else if (tmp_chroma <= prevChroma + EPS &&
+ tmp_chroma >= prevChroma - EPS) {
+ rFactor *= 0.5; /* selective relaxation employed */
+ }
+ }
+
+ if (nCount >= nMaxCount) {
+ if (XCMS_FABS(lastChroma - chroma) <
+ XCMS_FABS(tmp_chroma - chroma)) {
+ memcpy ((char *)pColor_return, (char *)&prev,
+ sizeof(XcmsColor));
+ } else {
+ memcpy ((char *)pColor_return, (char *)&tmp,
+ sizeof(XcmsColor));
+ }
+ }
+ memcpy ((char *) pColor_return, (char *) &tmp, sizeof (XcmsColor));
+ return(XcmsSuccess);
+}
diff --git a/libX11/src/xcms/LuvMxLC.c b/libX11/src/xcms/LuvMxLC.c
index f63e1528f..60b954916 100644
--- a/libX11/src/xcms/LuvMxLC.c
+++ b/libX11/src/xcms/LuvMxLC.c
@@ -1,218 +1,218 @@
-
-/*
- * Code and supporting documentation (c) Copyright 1990 1991 Tektronix, Inc.
- * All Rights Reserved
- *
- * This file is a component of an X Window System-specific implementation
- * of XCMS based on the TekColor Color Management System. Permission is
- * hereby granted to use, copy, modify, sell, and otherwise distribute this
- * software and its documentation for any purpose and without fee, provided
- * that this copyright, permission, and disclaimer notice is reproduced in
- * all copies of this software and in supporting documentation. TekColor
- * is a trademark of Tektronix, Inc.
- *
- * Tektronix makes no representation about the suitability of this software
- * for any purpose. It is provided "as is" and with all faults.
- *
- * TEKTRONIX DISCLAIMS ALL WARRANTIES APPLICABLE TO THIS SOFTWARE,
- * INCLUDING THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE. IN NO EVENT SHALL TEKTRONIX BE LIABLE FOR ANY
- * SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER
- * RESULTING FROM LOSS OF USE, DATA, OR PROFITS, WHETHER IN AN ACTION OF
- * CONTRACT, NEGLIGENCE, OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
- * CONNECTION WITH THE USE OR THE PERFORMANCE OF THIS SOFTWARE.
- *
- *
- *
- * NAME
- * CIELuvMxVC.c
- *
- * DESCRIPTION
- * Source for the XcmsCIELuvQueryMaxLC() gamut boundary
- * querying routine.
- *
- * DOCUMENTATION
- * "TekColor Color Management System, System Implementor's Manual"
- * and
- * Fred W. Billmeyer & Max Saltzman, "Principles of Color
- * Technology", John Wily & Sons, Inc, 1981.
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-#include "Xcmsint.h"
-#include "Cv.h"
-
-/*
- * DEFINES
- */
-#define MIN(x,y) ((x) > (y) ? (y) : (x))
-#define MIN3(x,y,z) ((x) > (MIN((y), (z))) ? (MIN((y), (z))) : (x))
-#define MAX(x,y) ((x) > (y) ? (x) : (y))
-#define MAX3(x,y,z) ((x) > (MAX((y), (z))) ? (x) : (MAX((y), (z))))
-#define START_LSTAR (XcmsFloat)40.0
-#define START_CHROMA (XcmsFloat)2.2
-
-
-/************************************************************************
- * *
- * API PRIVATE ROUTINES *
- * *
- ************************************************************************/
-
-/*
- * NAME
- * _XcmsCIELuvQueryMaxLCRGB - Compute maximum L* and chroma.
- *
- * SYNOPSIS
- */
-Status
-_XcmsCIELuvQueryMaxLCRGB(
- XcmsCCC ccc,
- XcmsFloat hue, /* hue in radians */
- XcmsColor *pColor_return,
- XcmsRGBi *pRGB_return)
-/*
- * DESCRIPTION
- * Return the maximum psychometric chroma for a specified
- * hue angle(radians), and the corresponding L*. This is computed
- * by a binary search of all possible chromas. An assumption
- * is made that there are no local maxima. Use the unrounded
- * Max psychometric chroma because the difference check can be
- * small.
- *
- * NOTE: No local CCC is used because this is a private
- * routine and all routines that call it are expected
- * to behave properly, i.e. send a local CCC with
- * no white adjust function and no gamut compression
- * function.
- *
- * This routine only accepts hue as input and outputs
- * Luv and RGBi.
- *
- * RETURNS
- * XcmsFailure - Failure
- * XcmsSuccess - Succeeded
- *
- */
-{
- XcmsFloat nSmall, nLarge;
- XcmsColor tmp;
-
- tmp.format = XcmsCIELuvFormat;
- /* Use some unreachable color on the given hue angle */
- tmp.spec.CIELuv.L_star = START_LSTAR;
- tmp.spec.CIELuv.u_star = XCMS_CIEUSTAROFHUE(hue, START_CHROMA);
- tmp.spec.CIELuv.v_star = XCMS_CIEVSTAROFHUE(hue, START_CHROMA);
- /*
- * Convert from Luv to RGB
- *
- * Note that the CIEXYZ to RGBi conversion routine must stuff the
- * out of bounds RGBi values in tmp when the ccc->gamutCompProc
- * is NULL.
- */
- if ((_XcmsConvertColorsWithWhitePt(ccc, &tmp, ScreenWhitePointOfCCC(ccc),
- (unsigned int)1, XcmsRGBiFormat, (Bool *) NULL)
- == XcmsFailure) && tmp.format != XcmsRGBiFormat) {
- return (XcmsFailure);
- }
-
- /* Now pick the smallest RGB */
- nSmall = MIN3(tmp.spec.RGBi.red,
- tmp.spec.RGBi.green,
- tmp.spec.RGBi.blue);
- /* Make the smallest RGB equal to zero */
- tmp.spec.RGBi.red -= nSmall;
- tmp.spec.RGBi.green -= nSmall;
- tmp.spec.RGBi.blue -= nSmall;
-
- /* Now pick the largest RGB */
- nLarge = MAX3(tmp.spec.RGBi.red,
- tmp.spec.RGBi.green,
- tmp.spec.RGBi.blue);
- /* Scale the RGB values based on the largest one */
- tmp.spec.RGBi.red /= nLarge;
- tmp.spec.RGBi.green /= nLarge;
- tmp.spec.RGBi.blue /= nLarge;
- tmp.format = XcmsRGBiFormat;
-
- /* If the calling routine wants RGB value give them the ones used. */
- if (pRGB_return) {
- pRGB_return->red = tmp.spec.RGBi.red;
- pRGB_return->green = tmp.spec.RGBi.green;
- pRGB_return->blue = tmp.spec.RGBi.blue;
- }
-
- /* Convert from RGBi to Luv */
- if (_XcmsConvertColorsWithWhitePt(ccc, &tmp,
- ScreenWhitePointOfCCC(ccc), 1, XcmsCIELuvFormat, (Bool *) NULL)
- == XcmsFailure) {
- return (XcmsFailure);
- }
-
- memcpy((char *)pColor_return, (char *)&tmp, sizeof(XcmsColor));
- return (XcmsSuccess);
-}
-
-
-/************************************************************************
- * *
- * PUBLIC ROUTINES *
- * *
- ************************************************************************/
-
-/*
- * NAME
- * XcmsCIELuvQueryMaxLC - Compute maximum L* and chroma.
- *
- * SYNOPSIS
- */
-Status
-XcmsCIELuvQueryMaxLC (
- XcmsCCC ccc,
- XcmsFloat hue_angle, /* hue angle in degrees */
- XcmsColor *pColor_return)
-
-/*
- * DESCRIPTION
- * Return the point of maximum chroma for the specified
- * hue angle.
- *
- * ASSUMPTIONS
- * This routine assumes that the white point associated with
- * the color specification is the Screen White Point. The
- * Screen White Point will also be associated with the
- * returned color specification.
- *
- * RETURNS
- * XcmsFailure - Failure
- * XcmsSuccess - Succeeded
- *
- */
-{
- XcmsCCCRec myCCC;
-
- /*
- * Check Arguments
- */
- if (ccc == NULL || pColor_return == NULL) {
- return(XcmsFailure);
- }
-
- /* Use my own CCC */
- memcpy ((char *)&myCCC, (char *)ccc, sizeof(XcmsCCCRec));
- myCCC.clientWhitePt.format = XcmsUndefinedFormat;
- myCCC.gamutCompProc = (XcmsCompressionProc)NULL;
-
- while (hue_angle < 0.0) {
- hue_angle += 360.0;
- }
- while (hue_angle >= 360.0) {
- hue_angle -= 360.0;
- }
-
- return(_XcmsCIELuvQueryMaxLCRGB (&myCCC, radians(hue_angle), pColor_return,
- (XcmsRGBi *)NULL));
-}
+
+/*
+ * Code and supporting documentation (c) Copyright 1990 1991 Tektronix, Inc.
+ * All Rights Reserved
+ *
+ * This file is a component of an X Window System-specific implementation
+ * of XCMS based on the TekColor Color Management System. Permission is
+ * hereby granted to use, copy, modify, sell, and otherwise distribute this
+ * software and its documentation for any purpose and without fee, provided
+ * that this copyright, permission, and disclaimer notice is reproduced in
+ * all copies of this software and in supporting documentation. TekColor
+ * is a trademark of Tektronix, Inc.
+ *
+ * Tektronix makes no representation about the suitability of this software
+ * for any purpose. It is provided "as is" and with all faults.
+ *
+ * TEKTRONIX DISCLAIMS ALL WARRANTIES APPLICABLE TO THIS SOFTWARE,
+ * INCLUDING THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+ * PARTICULAR PURPOSE. IN NO EVENT SHALL TEKTRONIX BE LIABLE FOR ANY
+ * SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER
+ * RESULTING FROM LOSS OF USE, DATA, OR PROFITS, WHETHER IN AN ACTION OF
+ * CONTRACT, NEGLIGENCE, OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
+ * CONNECTION WITH THE USE OR THE PERFORMANCE OF THIS SOFTWARE.
+ *
+ *
+ *
+ * NAME
+ * CIELuvMxVC.c
+ *
+ * DESCRIPTION
+ * Source for the XcmsCIELuvQueryMaxLC() gamut boundary
+ * querying routine.
+ *
+ * DOCUMENTATION
+ * "TekColor Color Management System, System Implementor's Manual"
+ * and
+ * Fred W. Billmeyer & Max Saltzman, "Principles of Color
+ * Technology", John Wily & Sons, Inc, 1981.
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+#include "Xcmsint.h"
+#include "Cv.h"
+
+/*
+ * DEFINES
+ */
+#define MIN(x,y) ((x) > (y) ? (y) : (x))
+#define MIN3(x,y,z) ((x) > (MIN((y), (z))) ? (MIN((y), (z))) : (x))
+#define MAX(x,y) ((x) > (y) ? (x) : (y))
+#define MAX3(x,y,z) ((x) > (MAX((y), (z))) ? (x) : (MAX((y), (z))))
+#define START_LSTAR (XcmsFloat)40.0
+#define START_CHROMA (XcmsFloat)2.2
+
+
+/************************************************************************
+ * *
+ * API PRIVATE ROUTINES *
+ * *
+ ************************************************************************/
+
+/*
+ * NAME
+ * _XcmsCIELuvQueryMaxLCRGB - Compute maximum L* and chroma.
+ *
+ * SYNOPSIS
+ */
+Status
+_XcmsCIELuvQueryMaxLCRGB(
+ XcmsCCC ccc,
+ XcmsFloat hue, /* hue in radians */
+ XcmsColor *pColor_return,
+ XcmsRGBi *pRGB_return)
+/*
+ * DESCRIPTION
+ * Return the maximum psychometric chroma for a specified
+ * hue angle(radians), and the corresponding L*. This is computed
+ * by a binary search of all possible chromas. An assumption
+ * is made that there are no local maxima. Use the unrounded
+ * Max psychometric chroma because the difference check can be
+ * small.
+ *
+ * NOTE: No local CCC is used because this is a private
+ * routine and all routines that call it are expected
+ * to behave properly, i.e. send a local CCC with
+ * no white adjust function and no gamut compression
+ * function.
+ *
+ * This routine only accepts hue as input and outputs
+ * Luv and RGBi.
+ *
+ * RETURNS
+ * XcmsFailure - Failure
+ * XcmsSuccess - Succeeded
+ *
+ */
+{
+ XcmsFloat nSmall, nLarge;
+ XcmsColor tmp;
+
+ tmp.format = XcmsCIELuvFormat;
+ /* Use some unreachable color on the given hue angle */
+ tmp.spec.CIELuv.L_star = START_LSTAR;
+ tmp.spec.CIELuv.u_star = XCMS_CIEUSTAROFHUE(hue, START_CHROMA);
+ tmp.spec.CIELuv.v_star = XCMS_CIEVSTAROFHUE(hue, START_CHROMA);
+ /*
+ * Convert from Luv to RGB
+ *
+ * Note that the CIEXYZ to RGBi conversion routine must stuff the
+ * out of bounds RGBi values in tmp when the ccc->gamutCompProc
+ * is NULL.
+ */
+ if ((_XcmsConvertColorsWithWhitePt(ccc, &tmp, ScreenWhitePointOfCCC(ccc),
+ (unsigned int)1, XcmsRGBiFormat, (Bool *) NULL)
+ == XcmsFailure) && tmp.format != XcmsRGBiFormat) {
+ return (XcmsFailure);
+ }
+
+ /* Now pick the smallest RGB */
+ nSmall = MIN3(tmp.spec.RGBi.red,
+ tmp.spec.RGBi.green,
+ tmp.spec.RGBi.blue);
+ /* Make the smallest RGB equal to zero */
+ tmp.spec.RGBi.red -= nSmall;
+ tmp.spec.RGBi.green -= nSmall;
+ tmp.spec.RGBi.blue -= nSmall;
+
+ /* Now pick the largest RGB */
+ nLarge = MAX3(tmp.spec.RGBi.red,
+ tmp.spec.RGBi.green,
+ tmp.spec.RGBi.blue);
+ /* Scale the RGB values based on the largest one */
+ tmp.spec.RGBi.red /= nLarge;
+ tmp.spec.RGBi.green /= nLarge;
+ tmp.spec.RGBi.blue /= nLarge;
+ tmp.format = XcmsRGBiFormat;
+
+ /* If the calling routine wants RGB value give them the ones used. */
+ if (pRGB_return) {
+ pRGB_return->red = tmp.spec.RGBi.red;
+ pRGB_return->green = tmp.spec.RGBi.green;
+ pRGB_return->blue = tmp.spec.RGBi.blue;
+ }
+
+ /* Convert from RGBi to Luv */
+ if (_XcmsConvertColorsWithWhitePt(ccc, &tmp,
+ ScreenWhitePointOfCCC(ccc), 1, XcmsCIELuvFormat, (Bool *) NULL)
+ == XcmsFailure) {
+ return (XcmsFailure);
+ }
+
+ memcpy((char *)pColor_return, (char *)&tmp, sizeof(XcmsColor));
+ return (XcmsSuccess);
+}
+
+
+/************************************************************************
+ * *
+ * PUBLIC ROUTINES *
+ * *
+ ************************************************************************/
+
+/*
+ * NAME
+ * XcmsCIELuvQueryMaxLC - Compute maximum L* and chroma.
+ *
+ * SYNOPSIS
+ */
+Status
+XcmsCIELuvQueryMaxLC (
+ XcmsCCC ccc,
+ XcmsFloat hue_angle, /* hue angle in degrees */
+ XcmsColor *pColor_return)
+
+/*
+ * DESCRIPTION
+ * Return the point of maximum chroma for the specified
+ * hue angle.
+ *
+ * ASSUMPTIONS
+ * This routine assumes that the white point associated with
+ * the color specification is the Screen White Point. The
+ * Screen White Point will also be associated with the
+ * returned color specification.
+ *
+ * RETURNS
+ * XcmsFailure - Failure
+ * XcmsSuccess - Succeeded
+ *
+ */
+{
+ XcmsCCCRec myCCC;
+
+ /*
+ * Check Arguments
+ */
+ if (ccc == NULL || pColor_return == NULL) {
+ return(XcmsFailure);
+ }
+
+ /* Use my own CCC */
+ memcpy ((char *)&myCCC, (char *)ccc, sizeof(XcmsCCCRec));
+ myCCC.clientWhitePt.format = XcmsUndefinedFormat;
+ myCCC.gamutCompProc = (XcmsCompressionProc)NULL;
+
+ while (hue_angle < 0.0) {
+ hue_angle += 360.0;
+ }
+ while (hue_angle >= 360.0) {
+ hue_angle -= 360.0;
+ }
+
+ return(_XcmsCIELuvQueryMaxLCRGB (&myCCC, radians(hue_angle), pColor_return,
+ (XcmsRGBi *)NULL));
+}
diff --git a/libX11/src/xcms/LuvWpAj.c b/libX11/src/xcms/LuvWpAj.c
index 9f811d27e..aa2a3f462 100644
--- a/libX11/src/xcms/LuvWpAj.c
+++ b/libX11/src/xcms/LuvWpAj.c
@@ -1,96 +1,96 @@
-
-/*
- * Code and supporting documentation (c) Copyright 1990 1991 Tektronix, Inc.
- * All Rights Reserved
- *
- * This file is a component of an X Window System-specific implementation
- * of XCMS based on the TekColor Color Management System. Permission is
- * hereby granted to use, copy, modify, sell, and otherwise distribute this
- * software and its documentation for any purpose and without fee, provided
- * that this copyright, permission, and disclaimer notice is reproduced in
- * all copies of this software and in supporting documentation. TekColor
- * is a trademark of Tektronix, Inc.
- *
- * Tektronix makes no representation about the suitability of this software
- * for any purpose. It is provided "as is" and with all faults.
- *
- * TEKTRONIX DISCLAIMS ALL WARRANTIES APPLICABLE TO THIS SOFTWARE,
- * INCLUDING THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE. IN NO EVENT SHALL TEKTRONIX BE LIABLE FOR ANY
- * SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER
- * RESULTING FROM LOSS OF USE, DATA, OR PROFITS, WHETHER IN AN ACTION OF
- * CONTRACT, NEGLIGENCE, OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
- * CONNECTION WITH THE USE OR THE PERFORMANCE OF THIS SOFTWARE.
- *
- *
- * NAME
- * CIELuvWpAj.c
- *
- * DESCRIPTION
- * This file contains routine(s) that support white point
- * adjustment of color specifications in the CIE CIELuv.color
- * space.
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-#include "Xcmsint.h"
-#include "Cv.h"
-
-
-
-/************************************************************************
- * *
- * PUBLIC ROUTINES *
- * *
- ************************************************************************/
-
-/*
- * NAME
- * XcmsCIELuvWhiteShiftColors
- *
- * SYNOPSIS
- */
-Status
-XcmsCIELuvWhiteShiftColors(
- XcmsCCC ccc,
- XcmsColor *pWhitePtFrom,
- XcmsColor *pWhitePtTo,
- XcmsColorFormat destSpecFmt,
- XcmsColor *pColors_in_out,
- unsigned int nColors,
- Bool *pCompressed)
-/*
- * DESCRIPTION
- * Adjusts color specifications in an array of XcmsColor
- * structures for white point differences.
- *
- * RETURNS
- * XcmsFailure if failed,
- * XcmsSuccess if succeeded without gamut compression,
- * XcmsSuccessWithCompression if succeeded with
- * gamut compression.
- */
-{
- if (pWhitePtFrom == NULL || pWhitePtTo == NULL || pColors_in_out == NULL) {
- return(XcmsFailure);
- }
-
- /*
- * Convert to CIELuv using pWhitePtFrom
- * We can ignore return value for compression because we are converting
- * to XcmsCIELuvFormat which is device-independent, not device-dependent.
- */
- if (_XcmsConvertColorsWithWhitePt(ccc, pColors_in_out, pWhitePtFrom,
- nColors, XcmsCIELuvFormat, pCompressed) == XcmsFailure) {
- return(XcmsFailure);
- }
-
- /*
- * Convert from CIELuv to destSpecFmt using pWhitePtTo
- */
- return(_XcmsConvertColorsWithWhitePt(ccc, pColors_in_out, pWhitePtTo,
- nColors, destSpecFmt, pCompressed));
-}
+
+/*
+ * Code and supporting documentation (c) Copyright 1990 1991 Tektronix, Inc.
+ * All Rights Reserved
+ *
+ * This file is a component of an X Window System-specific implementation
+ * of XCMS based on the TekColor Color Management System. Permission is
+ * hereby granted to use, copy, modify, sell, and otherwise distribute this
+ * software and its documentation for any purpose and without fee, provided
+ * that this copyright, permission, and disclaimer notice is reproduced in
+ * all copies of this software and in supporting documentation. TekColor
+ * is a trademark of Tektronix, Inc.
+ *
+ * Tektronix makes no representation about the suitability of this software
+ * for any purpose. It is provided "as is" and with all faults.
+ *
+ * TEKTRONIX DISCLAIMS ALL WARRANTIES APPLICABLE TO THIS SOFTWARE,
+ * INCLUDING THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+ * PARTICULAR PURPOSE. IN NO EVENT SHALL TEKTRONIX BE LIABLE FOR ANY
+ * SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER
+ * RESULTING FROM LOSS OF USE, DATA, OR PROFITS, WHETHER IN AN ACTION OF
+ * CONTRACT, NEGLIGENCE, OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
+ * CONNECTION WITH THE USE OR THE PERFORMANCE OF THIS SOFTWARE.
+ *
+ *
+ * NAME
+ * CIELuvWpAj.c
+ *
+ * DESCRIPTION
+ * This file contains routine(s) that support white point
+ * adjustment of color specifications in the CIE CIELuv.color
+ * space.
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+#include "Xcmsint.h"
+#include "Cv.h"
+
+
+
+/************************************************************************
+ * *
+ * PUBLIC ROUTINES *
+ * *
+ ************************************************************************/
+
+/*
+ * NAME
+ * XcmsCIELuvWhiteShiftColors
+ *
+ * SYNOPSIS
+ */
+Status
+XcmsCIELuvWhiteShiftColors(
+ XcmsCCC ccc,
+ XcmsColor *pWhitePtFrom,
+ XcmsColor *pWhitePtTo,
+ XcmsColorFormat destSpecFmt,
+ XcmsColor *pColors_in_out,
+ unsigned int nColors,
+ Bool *pCompressed)
+/*
+ * DESCRIPTION
+ * Adjusts color specifications in an array of XcmsColor
+ * structures for white point differences.
+ *
+ * RETURNS
+ * XcmsFailure if failed,
+ * XcmsSuccess if succeeded without gamut compression,
+ * XcmsSuccessWithCompression if succeeded with
+ * gamut compression.
+ */
+{
+ if (pWhitePtFrom == NULL || pWhitePtTo == NULL || pColors_in_out == NULL) {
+ return(XcmsFailure);
+ }
+
+ /*
+ * Convert to CIELuv using pWhitePtFrom
+ * We can ignore return value for compression because we are converting
+ * to XcmsCIELuvFormat which is device-independent, not device-dependent.
+ */
+ if (_XcmsConvertColorsWithWhitePt(ccc, pColors_in_out, pWhitePtFrom,
+ nColors, XcmsCIELuvFormat, pCompressed) == XcmsFailure) {
+ return(XcmsFailure);
+ }
+
+ /*
+ * Convert from CIELuv to destSpecFmt using pWhitePtTo
+ */
+ return(_XcmsConvertColorsWithWhitePt(ccc, pColors_in_out, pWhitePtTo,
+ nColors, destSpecFmt, pCompressed));
+}
diff --git a/libX11/src/xcms/Makefile.am b/libX11/src/xcms/Makefile.am
index 3097fe7e4..40212c01b 100644
--- a/libX11/src/xcms/Makefile.am
+++ b/libX11/src/xcms/Makefile.am
@@ -1,100 +1,100 @@
-noinst_LTLIBRARIES = libxcms.la
-
-AM_CPPFLAGS= \
- -I$(top_srcdir)/include \
- -I$(top_srcdir)/include/X11 \
- -I$(top_builddir)/include \
- -I$(top_builddir)/include/X11 \
- -I$(top_srcdir)/src/xcms \
- -I$(top_srcdir)/src/xkb \
- -I$(top_srcdir)/src/xlibi18n \
- -I$(top_srcdir)/src \
- -D_BSD_SOURCE
-
-AM_CFLAGS= \
- $(X11_CFLAGS) \
- $(BIGFONT_CFLAGS) \
- $(XMALLOC_ZERO_CFLAGS) \
- $(CWARNFLAGS)
-
-libxcms_la_SOURCES = \
- AddDIC.c \
- AddSF.c \
- CCC.c \
- CvColW.c \
- CvCols.c \
- Cv.h \
- HVC.c \
- HVCGcC.c \
- HVCGcV.c \
- HVCGcVC.c \
- HVCMnV.c \
- HVCMxC.c \
- HVCMxV.c \
- HVCMxVC.c \
- HVCMxVs.c \
- HVCWpAj.c \
- IdOfPr.c \
- LRGB.c \
- Lab.c \
- LabGcC.c \
- LabGcL.c \
- LabGcLC.c \
- LabMnL.c \
- LabMxC.c \
- LabMxL.c \
- LabMxLC.c \
- LabWpAj.c \
- Luv.c \
- LuvGcC.c \
- LuvGcL.c \
- LuvGcLC.c \
- LuvMnL.c \
- LuvMxC.c \
- LuvMxL.c \
- LuvMxLC.c \
- LuvWpAj.c \
- OfCCC.c \
- PrOfId.c \
- QBlack.c \
- QBlue.c \
- QGreen.c \
- QRed.c \
- QWhite.c \
- QuCol.c \
- QuCols.c \
- SetCCC.c \
- SetGetCols.c \
- StCol.c \
- StCols.c \
- UNDEFINED.c \
- XRGB.c \
- XYZ.c \
- cmsAllCol.c \
- cmsAllNCol.c \
- cmsCmap.c \
- cmsColNm.c \
- cmsGlobls.c \
- cmsInt.c \
- cmsLkCol.c \
- cmsMath.c \
- cmsProp.c \
- cmsTrig.c \
- uvY.c \
- xyY.c \
- Xcmsint.h
-
-X11dir = $(libdir)/X11
-dist_X11_DATA = Xcms.txt
-
-
-if LINT
-# Check source code with tools like lint & sparse
-
-ALL_LINT_FLAGS=$(LINT_FLAGS) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
- $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS)
-
-lint:
- $(LINT) $(ALL_LINT_FLAGS) $(libxcms_la_SOURCES) -lm
-
-endif LINT
+noinst_LTLIBRARIES = libxcms.la
+
+AM_CPPFLAGS= \
+ -I$(top_srcdir)/include \
+ -I$(top_srcdir)/include/X11 \
+ -I$(top_builddir)/include \
+ -I$(top_builddir)/include/X11 \
+ -I$(top_srcdir)/src/xcms \
+ -I$(top_srcdir)/src/xkb \
+ -I$(top_srcdir)/src/xlibi18n \
+ -I$(top_srcdir)/src \
+ -D_BSD_SOURCE
+
+AM_CFLAGS= \
+ $(X11_CFLAGS) \
+ $(BIGFONT_CFLAGS) \
+ $(XMALLOC_ZERO_CFLAGS) \
+ $(CWARNFLAGS)
+
+libxcms_la_SOURCES = \
+ AddDIC.c \
+ AddSF.c \
+ CCC.c \
+ CvColW.c \
+ CvCols.c \
+ Cv.h \
+ HVC.c \
+ HVCGcC.c \
+ HVCGcV.c \
+ HVCGcVC.c \
+ HVCMnV.c \
+ HVCMxC.c \
+ HVCMxV.c \
+ HVCMxVC.c \
+ HVCMxVs.c \
+ HVCWpAj.c \
+ IdOfPr.c \
+ LRGB.c \
+ Lab.c \
+ LabGcC.c \
+ LabGcL.c \
+ LabGcLC.c \
+ LabMnL.c \
+ LabMxC.c \
+ LabMxL.c \
+ LabMxLC.c \
+ LabWpAj.c \
+ Luv.c \
+ LuvGcC.c \
+ LuvGcL.c \
+ LuvGcLC.c \
+ LuvMnL.c \
+ LuvMxC.c \
+ LuvMxL.c \
+ LuvMxLC.c \
+ LuvWpAj.c \
+ OfCCC.c \
+ PrOfId.c \
+ QBlack.c \
+ QBlue.c \
+ QGreen.c \
+ QRed.c \
+ QWhite.c \
+ QuCol.c \
+ QuCols.c \
+ SetCCC.c \
+ SetGetCols.c \
+ StCol.c \
+ StCols.c \
+ UNDEFINED.c \
+ XRGB.c \
+ XYZ.c \
+ cmsAllCol.c \
+ cmsAllNCol.c \
+ cmsCmap.c \
+ cmsColNm.c \
+ cmsGlobls.c \
+ cmsInt.c \
+ cmsLkCol.c \
+ cmsMath.c \
+ cmsProp.c \
+ cmsTrig.c \
+ uvY.c \
+ xyY.c \
+ Xcmsint.h
+
+X11dir = $(libdir)/X11
+dist_X11_DATA = Xcms.txt
+
+
+if LINT
+# Check source code with tools like lint & sparse
+
+ALL_LINT_FLAGS=$(LINT_FLAGS) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
+ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS)
+
+lint:
+ $(LINT) $(ALL_LINT_FLAGS) $(libxcms_la_SOURCES) -lm
+
+endif LINT
diff --git a/libX11/src/xcms/OfCCC.c b/libX11/src/xcms/OfCCC.c
index 1d8e0b436..06fc3d7a1 100644
--- a/libX11/src/xcms/OfCCC.c
+++ b/libX11/src/xcms/OfCCC.c
@@ -1,162 +1,162 @@
-
-/*
- * Code and supporting documentation (c) Copyright 1990 1991 Tektronix, Inc.
- * All Rights Reserved
- *
- * This file is a component of an X Window System-specific implementation
- * of Xcms based on the TekColor Color Management System. Permission is
- * hereby granted to use, copy, modify, sell, and otherwise distribute this
- * software and its documentation for any purpose and without fee, provided
- * that this copyright, permission, and disclaimer notice is reproduced in
- * all copies of this software and in supporting documentation. TekColor
- * is a trademark of Tektronix, Inc.
- *
- * Tektronix makes no representation about the suitability of this software
- * for any purpose. It is provided "as is" and with all faults.
- *
- * TEKTRONIX DISCLAIMS ALL WARRANTIES APPLICABLE TO THIS SOFTWARE,
- * INCLUDING THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE. IN NO EVENT SHALL TEKTRONIX BE LIABLE FOR ANY
- * SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER
- * RESULTING FROM LOSS OF USE, DATA, OR PROFITS, WHETHER IN AN ACTION OF
- * CONTRACT, NEGLIGENCE, OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
- * CONNECTION WITH THE USE OR THE PERFORMANCE OF THIS SOFTWARE.
- *
- *
- * NAME
- * XcmsOfCCC.c - Color Conversion Context Querying Routines
- *
- * DESCRIPTION
- * Routines to query components of a Color Conversion
- * Context structure.
- *
- *
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlib.h"
-#include "Xcms.h"
-
-
-
-/************************************************************************
- * *
- * PUBLIC INTERFACES *
- * *
- ************************************************************************/
-
-/*
- * NAME
- * XcmsDisplayOfCCC
- *
- * SYNOPSIS
- */
-
-Display *
-XcmsDisplayOfCCC(
- XcmsCCC ccc)
-/*
- * DESCRIPTION
- * Queries the Display of the specified CCC.
- *
- * RETURNS
- * Pointer to the Display.
- *
- */
-{
- return(ccc->dpy);
-}
-
-
-/*
- * NAME
- * XcmsVisualOfCCC
- *
- * SYNOPSIS
- */
-
-Visual *
-XcmsVisualOfCCC(
- XcmsCCC ccc)
-/*
- * DESCRIPTION
- * Queries the Visual of the specified CCC.
- *
- * RETURNS
- * Pointer to the Visual.
- *
- */
-{
- return(ccc->visual);
-}
-
-
-/*
- * NAME
- * XcmsScreenNumberOfCCC
- *
- * SYNOPSIS
- */
-
-int
-XcmsScreenNumberOfCCC(
- XcmsCCC ccc)
-/*
- * DESCRIPTION
- * Queries the screen number of the specified CCC.
- *
- * RETURNS
- * screen number.
- *
- */
-{
- return(ccc->screenNumber);
-}
-
-
-/*
- * NAME
- * XcmsScreenWhitePointOfCCC
- *
- * SYNOPSIS
- */
-
-XcmsColor *
-XcmsScreenWhitePointOfCCC(
- XcmsCCC ccc)
-/*
- * DESCRIPTION
- * Queries the screen white point of the specified CCC.
- *
- * RETURNS
- * Pointer to the XcmsColor containing the screen white point.
- *
- */
-{
- return(&ccc->pPerScrnInfo->screenWhitePt);
-}
-
-
-/*
- * NAME
- * XcmsClientWhitePointOfCCC
- *
- * SYNOPSIS
- */
-
-XcmsColor *
-XcmsClientWhitePointOfCCC(
- XcmsCCC ccc)
-/*
- * DESCRIPTION
- * Queries the client white point of the specified CCC.
- *
- * RETURNS
- * Pointer to the XcmsColor containing the client white point.
- *
- */
-{
- return(&ccc->clientWhitePt);
-}
+
+/*
+ * Code and supporting documentation (c) Copyright 1990 1991 Tektronix, Inc.
+ * All Rights Reserved
+ *
+ * This file is a component of an X Window System-specific implementation
+ * of Xcms based on the TekColor Color Management System. Permission is
+ * hereby granted to use, copy, modify, sell, and otherwise distribute this
+ * software and its documentation for any purpose and without fee, provided
+ * that this copyright, permission, and disclaimer notice is reproduced in
+ * all copies of this software and in supporting documentation. TekColor
+ * is a trademark of Tektronix, Inc.
+ *
+ * Tektronix makes no representation about the suitability of this software
+ * for any purpose. It is provided "as is" and with all faults.
+ *
+ * TEKTRONIX DISCLAIMS ALL WARRANTIES APPLICABLE TO THIS SOFTWARE,
+ * INCLUDING THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+ * PARTICULAR PURPOSE. IN NO EVENT SHALL TEKTRONIX BE LIABLE FOR ANY
+ * SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER
+ * RESULTING FROM LOSS OF USE, DATA, OR PROFITS, WHETHER IN AN ACTION OF
+ * CONTRACT, NEGLIGENCE, OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
+ * CONNECTION WITH THE USE OR THE PERFORMANCE OF THIS SOFTWARE.
+ *
+ *
+ * NAME
+ * XcmsOfCCC.c - Color Conversion Context Querying Routines
+ *
+ * DESCRIPTION
+ * Routines to query components of a Color Conversion
+ * Context structure.
+ *
+ *
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlib.h"
+#include "Xcms.h"
+
+
+
+/************************************************************************
+ * *
+ * PUBLIC INTERFACES *
+ * *
+ ************************************************************************/
+
+/*
+ * NAME
+ * XcmsDisplayOfCCC
+ *
+ * SYNOPSIS
+ */
+
+Display *
+XcmsDisplayOfCCC(
+ XcmsCCC ccc)
+/*
+ * DESCRIPTION
+ * Queries the Display of the specified CCC.
+ *
+ * RETURNS
+ * Pointer to the Display.
+ *
+ */
+{
+ return(ccc->dpy);
+}
+
+
+/*
+ * NAME
+ * XcmsVisualOfCCC
+ *
+ * SYNOPSIS
+ */
+
+Visual *
+XcmsVisualOfCCC(
+ XcmsCCC ccc)
+/*
+ * DESCRIPTION
+ * Queries the Visual of the specified CCC.
+ *
+ * RETURNS
+ * Pointer to the Visual.
+ *
+ */
+{
+ return(ccc->visual);
+}
+
+
+/*
+ * NAME
+ * XcmsScreenNumberOfCCC
+ *
+ * SYNOPSIS
+ */
+
+int
+XcmsScreenNumberOfCCC(
+ XcmsCCC ccc)
+/*
+ * DESCRIPTION
+ * Queries the screen number of the specified CCC.
+ *
+ * RETURNS
+ * screen number.
+ *
+ */
+{
+ return(ccc->screenNumber);
+}
+
+
+/*
+ * NAME
+ * XcmsScreenWhitePointOfCCC
+ *
+ * SYNOPSIS
+ */
+
+XcmsColor *
+XcmsScreenWhitePointOfCCC(
+ XcmsCCC ccc)
+/*
+ * DESCRIPTION
+ * Queries the screen white point of the specified CCC.
+ *
+ * RETURNS
+ * Pointer to the XcmsColor containing the screen white point.
+ *
+ */
+{
+ return(&ccc->pPerScrnInfo->screenWhitePt);
+}
+
+
+/*
+ * NAME
+ * XcmsClientWhitePointOfCCC
+ *
+ * SYNOPSIS
+ */
+
+XcmsColor *
+XcmsClientWhitePointOfCCC(
+ XcmsCCC ccc)
+/*
+ * DESCRIPTION
+ * Queries the client white point of the specified CCC.
+ *
+ * RETURNS
+ * Pointer to the XcmsColor containing the client white point.
+ *
+ */
+{
+ return(&ccc->clientWhitePt);
+}
diff --git a/libX11/src/xcms/QBlack.c b/libX11/src/xcms/QBlack.c
index fc28e16be..d7a69d399 100644
--- a/libX11/src/xcms/QBlack.c
+++ b/libX11/src/xcms/QBlack.c
@@ -1,84 +1,84 @@
-
-/*
- * Code and supporting documentation (c) Copyright 1990 1991 Tektronix, Inc.
- * All Rights Reserved
- *
- * This file is a component of an X Window System-specific implementation
- * of Xcms based on the TekColor Color Management System. Permission is
- * hereby granted to use, copy, modify, sell, and otherwise distribute this
- * software and its documentation for any purpose and without fee, provided
- * that this copyright, permission, and disclaimer notice is reproduced in
- * all copies of this software and in supporting documentation. TekColor
- * is a trademark of Tektronix, Inc.
- *
- * Tektronix makes no representation about the suitability of this software
- * for any purpose. It is provided "as is" and with all faults.
- *
- * TEKTRONIX DISCLAIMS ALL WARRANTIES APPLICABLE TO THIS SOFTWARE,
- * INCLUDING THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE. IN NO EVENT SHALL TEKTRONIX BE LIABLE FOR ANY
- * SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER
- * RESULTING FROM LOSS OF USE, DATA, OR PROFITS, WHETHER IN AN ACTION OF
- * CONTRACT, NEGLIGENCE, OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
- * CONNECTION WITH THE USE OR THE PERFORMANCE OF THIS SOFTWARE.
- *
- *
- * NAME
- * XcmsQBlack.c - Query Black
- *
- * DESCRIPTION
- * Routine to obtain a color specification for zero
- * red, green, and blue intensities.
- *
- *
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-#include "Xcms.h"
-
-
-
-/************************************************************************
- * *
- * PUBLIC INTERFACES *
- * *
- ************************************************************************/
-
-/*
- * NAME
- * XcmsQueryBlack
- *
- * SYNOPSIS
- */
-
-Status
-XcmsQueryBlack(
- XcmsCCC ccc,
- XcmsColorFormat target_format,
- XcmsColor *pColor_ret)
-/*
- * DESCRIPTION
- * Returns the color specification in the target format for
- * zero intensity red, green, and blue.
- *
- * RETURNS
- * Returns XcmsSuccess, if failed; otherwise XcmsFailure
- *
- */
-{
- XcmsColor tmp;
-
- tmp.format = XcmsRGBiFormat;
- tmp.pixel = 0;
- tmp.spec.RGBi.red = 0.0;
- tmp.spec.RGBi.green = 0.0;
- tmp.spec.RGBi.blue = 0.0;
- if (XcmsConvertColors(ccc, &tmp, 1, target_format, NULL) != XcmsSuccess) {
- return(XcmsFailure);
- }
- memcpy((char *)pColor_ret, (char *)&tmp, sizeof(XcmsColor));
- return(XcmsSuccess);
-}
+
+/*
+ * Code and supporting documentation (c) Copyright 1990 1991 Tektronix, Inc.
+ * All Rights Reserved
+ *
+ * This file is a component of an X Window System-specific implementation
+ * of Xcms based on the TekColor Color Management System. Permission is
+ * hereby granted to use, copy, modify, sell, and otherwise distribute this
+ * software and its documentation for any purpose and without fee, provided
+ * that this copyright, permission, and disclaimer notice is reproduced in
+ * all copies of this software and in supporting documentation. TekColor
+ * is a trademark of Tektronix, Inc.
+ *
+ * Tektronix makes no representation about the suitability of this software
+ * for any purpose. It is provided "as is" and with all faults.
+ *
+ * TEKTRONIX DISCLAIMS ALL WARRANTIES APPLICABLE TO THIS SOFTWARE,
+ * INCLUDING THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+ * PARTICULAR PURPOSE. IN NO EVENT SHALL TEKTRONIX BE LIABLE FOR ANY
+ * SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER
+ * RESULTING FROM LOSS OF USE, DATA, OR PROFITS, WHETHER IN AN ACTION OF
+ * CONTRACT, NEGLIGENCE, OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
+ * CONNECTION WITH THE USE OR THE PERFORMANCE OF THIS SOFTWARE.
+ *
+ *
+ * NAME
+ * XcmsQBlack.c - Query Black
+ *
+ * DESCRIPTION
+ * Routine to obtain a color specification for zero
+ * red, green, and blue intensities.
+ *
+ *
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+#include "Xcms.h"
+
+
+
+/************************************************************************
+ * *
+ * PUBLIC INTERFACES *
+ * *
+ ************************************************************************/
+
+/*
+ * NAME
+ * XcmsQueryBlack
+ *
+ * SYNOPSIS
+ */
+
+Status
+XcmsQueryBlack(
+ XcmsCCC ccc,
+ XcmsColorFormat target_format,
+ XcmsColor *pColor_ret)
+/*
+ * DESCRIPTION
+ * Returns the color specification in the target format for
+ * zero intensity red, green, and blue.
+ *
+ * RETURNS
+ * Returns XcmsSuccess, if failed; otherwise XcmsFailure
+ *
+ */
+{
+ XcmsColor tmp;
+
+ tmp.format = XcmsRGBiFormat;
+ tmp.pixel = 0;
+ tmp.spec.RGBi.red = 0.0;
+ tmp.spec.RGBi.green = 0.0;
+ tmp.spec.RGBi.blue = 0.0;
+ if (XcmsConvertColors(ccc, &tmp, 1, target_format, NULL) != XcmsSuccess) {
+ return(XcmsFailure);
+ }
+ memcpy((char *)pColor_ret, (char *)&tmp, sizeof(XcmsColor));
+ return(XcmsSuccess);
+}
diff --git a/libX11/src/xcms/QBlue.c b/libX11/src/xcms/QBlue.c
index ac79dc2e9..4555344e6 100644
--- a/libX11/src/xcms/QBlue.c
+++ b/libX11/src/xcms/QBlue.c
@@ -1,84 +1,84 @@
-
-/*
- * Code and supporting documentation (c) Copyright 1990 1991 Tektronix, Inc.
- * All Rights Reserved
- *
- * This file is a component of an X Window System-specific implementation
- * of Xcms based on the TekColor Color Management System. Permission is
- * hereby granted to use, copy, modify, sell, and otherwise distribute this
- * software and its documentation for any purpose and without fee, provided
- * that this copyright, permission, and disclaimer notice is reproduced in
- * all copies of this software and in supporting documentation. TekColor
- * is a trademark of Tektronix, Inc.
- *
- * Tektronix makes no representation about the suitability of this software
- * for any purpose. It is provided "as is" and with all faults.
- *
- * TEKTRONIX DISCLAIMS ALL WARRANTIES APPLICABLE TO THIS SOFTWARE,
- * INCLUDING THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE. IN NO EVENT SHALL TEKTRONIX BE LIABLE FOR ANY
- * SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER
- * RESULTING FROM LOSS OF USE, DATA, OR PROFITS, WHETHER IN AN ACTION OF
- * CONTRACT, NEGLIGENCE, OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
- * CONNECTION WITH THE USE OR THE PERFORMANCE OF THIS SOFTWARE.
- *
- *
- * NAME
- * XcmsQBlue.c - Query Blue
- *
- * DESCRIPTION
- * Routine to obtain a color specification for full
- * blue intensity and zero red and green intensities.
- *
- *
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-#include "Xcms.h"
-
-
-
-/************************************************************************
- * *
- * PUBLIC INTERFACES *
- * *
- ************************************************************************/
-
-/*
- * NAME
- * XcmsQueryBlue
- *
- * SYNOPSIS
- */
-
-Status
-XcmsQueryBlue(
- XcmsCCC ccc,
- XcmsColorFormat target_format,
- XcmsColor *pColor_ret)
-/*
- * DESCRIPTION
- * Returns the color specification in the target format for
- * full intensity blue and zero intensity red and green.
- *
- * RETURNS
- * Returns XcmsSuccess, if failed; otherwise XcmsFailure
- *
- */
-{
- XcmsColor tmp;
-
- tmp.format = XcmsRGBiFormat;
- tmp.pixel = 0;
- tmp.spec.RGBi.red = 0.0;
- tmp.spec.RGBi.green = 0.0;
- tmp.spec.RGBi.blue = 1.0;
- if (XcmsConvertColors(ccc, &tmp, 1, target_format, NULL) != XcmsSuccess) {
- return(XcmsFailure);
- }
- memcpy((char *)pColor_ret, (char *)&tmp, sizeof(XcmsColor));
- return(XcmsSuccess);
-}
+
+/*
+ * Code and supporting documentation (c) Copyright 1990 1991 Tektronix, Inc.
+ * All Rights Reserved
+ *
+ * This file is a component of an X Window System-specific implementation
+ * of Xcms based on the TekColor Color Management System. Permission is
+ * hereby granted to use, copy, modify, sell, and otherwise distribute this
+ * software and its documentation for any purpose and without fee, provided
+ * that this copyright, permission, and disclaimer notice is reproduced in
+ * all copies of this software and in supporting documentation. TekColor
+ * is a trademark of Tektronix, Inc.
+ *
+ * Tektronix makes no representation about the suitability of this software
+ * for any purpose. It is provided "as is" and with all faults.
+ *
+ * TEKTRONIX DISCLAIMS ALL WARRANTIES APPLICABLE TO THIS SOFTWARE,
+ * INCLUDING THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+ * PARTICULAR PURPOSE. IN NO EVENT SHALL TEKTRONIX BE LIABLE FOR ANY
+ * SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER
+ * RESULTING FROM LOSS OF USE, DATA, OR PROFITS, WHETHER IN AN ACTION OF
+ * CONTRACT, NEGLIGENCE, OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
+ * CONNECTION WITH THE USE OR THE PERFORMANCE OF THIS SOFTWARE.
+ *
+ *
+ * NAME
+ * XcmsQBlue.c - Query Blue
+ *
+ * DESCRIPTION
+ * Routine to obtain a color specification for full
+ * blue intensity and zero red and green intensities.
+ *
+ *
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+#include "Xcms.h"
+
+
+
+/************************************************************************
+ * *
+ * PUBLIC INTERFACES *
+ * *
+ ************************************************************************/
+
+/*
+ * NAME
+ * XcmsQueryBlue
+ *
+ * SYNOPSIS
+ */
+
+Status
+XcmsQueryBlue(
+ XcmsCCC ccc,
+ XcmsColorFormat target_format,
+ XcmsColor *pColor_ret)
+/*
+ * DESCRIPTION
+ * Returns the color specification in the target format for
+ * full intensity blue and zero intensity red and green.
+ *
+ * RETURNS
+ * Returns XcmsSuccess, if failed; otherwise XcmsFailure
+ *
+ */
+{
+ XcmsColor tmp;
+
+ tmp.format = XcmsRGBiFormat;
+ tmp.pixel = 0;
+ tmp.spec.RGBi.red = 0.0;
+ tmp.spec.RGBi.green = 0.0;
+ tmp.spec.RGBi.blue = 1.0;
+ if (XcmsConvertColors(ccc, &tmp, 1, target_format, NULL) != XcmsSuccess) {
+ return(XcmsFailure);
+ }
+ memcpy((char *)pColor_ret, (char *)&tmp, sizeof(XcmsColor));
+ return(XcmsSuccess);
+}
diff --git a/libX11/src/xcms/QGreen.c b/libX11/src/xcms/QGreen.c
index bc6b7bb7a..0c888358a 100644
--- a/libX11/src/xcms/QGreen.c
+++ b/libX11/src/xcms/QGreen.c
@@ -1,84 +1,84 @@
-
-/*
- * Code and supporting documentation (c) Copyright 1990 1991 Tektronix, Inc.
- * All Rights Reserved
- *
- * This file is a component of an X Window System-specific implementation
- * of Xcms based on the TekColor Color Management System. Permission is
- * hereby granted to use, copy, modify, sell, and otherwise distribute this
- * software and its documentation for any purpose and without fee, provided
- * that this copyright, permission, and disclaimer notice is reproduced in
- * all copies of this software and in supporting documentation. TekColor
- * is a trademark of Tektronix, Inc.
- *
- * Tektronix makes no representation about the suitability of this software
- * for any purpose. It is provided "as is" and with all faults.
- *
- * TEKTRONIX DISCLAIMS ALL WARRANTIES APPLICABLE TO THIS SOFTWARE,
- * INCLUDING THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE. IN NO EVENT SHALL TEKTRONIX BE LIABLE FOR ANY
- * SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER
- * RESULTING FROM LOSS OF USE, DATA, OR PROFITS, WHETHER IN AN ACTION OF
- * CONTRACT, NEGLIGENCE, OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
- * CONNECTION WITH THE USE OR THE PERFORMANCE OF THIS SOFTWARE.
- *
- *
- * NAME
- * XcmsQGreen.c - Query Green
- *
- * DESCRIPTION
- * Routine to obtain a color specification for full
- * green intensity and zero red and blue intensities.
- *
- *
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-#include "Xcms.h"
-
-
-
-/************************************************************************
- * *
- * PUBLIC INTERFACES *
- * *
- ************************************************************************/
-
-/*
- * NAME
- * XcmsQueryGreen
- *
- * SYNOPSIS
- */
-
-Status
-XcmsQueryGreen(
- XcmsCCC ccc,
- XcmsColorFormat target_format,
- XcmsColor *pColor_ret)
-/*
- * DESCRIPTION
- * Returns the color specification in the target format for
- * full intensity green and zero intensity red and blue.
- *
- * RETURNS
- * Returns XcmsSuccess, if failed; otherwise XcmsFailure
- *
- */
-{
- XcmsColor tmp;
-
- tmp.format = XcmsRGBiFormat;
- tmp.pixel = 0;
- tmp.spec.RGBi.red = 0.0;
- tmp.spec.RGBi.green = 1.0;
- tmp.spec.RGBi.blue = 0.0;
- if (XcmsConvertColors(ccc, &tmp, 1, target_format, NULL) != XcmsSuccess) {
- return(XcmsFailure);
- }
- memcpy((char *)pColor_ret, (char *)&tmp, sizeof(XcmsColor));
- return(XcmsSuccess);
-}
+
+/*
+ * Code and supporting documentation (c) Copyright 1990 1991 Tektronix, Inc.
+ * All Rights Reserved
+ *
+ * This file is a component of an X Window System-specific implementation
+ * of Xcms based on the TekColor Color Management System. Permission is
+ * hereby granted to use, copy, modify, sell, and otherwise distribute this
+ * software and its documentation for any purpose and without fee, provided
+ * that this copyright, permission, and disclaimer notice is reproduced in
+ * all copies of this software and in supporting documentation. TekColor
+ * is a trademark of Tektronix, Inc.
+ *
+ * Tektronix makes no representation about the suitability of this software
+ * for any purpose. It is provided "as is" and with all faults.
+ *
+ * TEKTRONIX DISCLAIMS ALL WARRANTIES APPLICABLE TO THIS SOFTWARE,
+ * INCLUDING THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+ * PARTICULAR PURPOSE. IN NO EVENT SHALL TEKTRONIX BE LIABLE FOR ANY
+ * SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER
+ * RESULTING FROM LOSS OF USE, DATA, OR PROFITS, WHETHER IN AN ACTION OF
+ * CONTRACT, NEGLIGENCE, OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
+ * CONNECTION WITH THE USE OR THE PERFORMANCE OF THIS SOFTWARE.
+ *
+ *
+ * NAME
+ * XcmsQGreen.c - Query Green
+ *
+ * DESCRIPTION
+ * Routine to obtain a color specification for full
+ * green intensity and zero red and blue intensities.
+ *
+ *
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+#include "Xcms.h"
+
+
+
+/************************************************************************
+ * *
+ * PUBLIC INTERFACES *
+ * *
+ ************************************************************************/
+
+/*
+ * NAME
+ * XcmsQueryGreen
+ *
+ * SYNOPSIS
+ */
+
+Status
+XcmsQueryGreen(
+ XcmsCCC ccc,
+ XcmsColorFormat target_format,
+ XcmsColor *pColor_ret)
+/*
+ * DESCRIPTION
+ * Returns the color specification in the target format for
+ * full intensity green and zero intensity red and blue.
+ *
+ * RETURNS
+ * Returns XcmsSuccess, if failed; otherwise XcmsFailure
+ *
+ */
+{
+ XcmsColor tmp;
+
+ tmp.format = XcmsRGBiFormat;
+ tmp.pixel = 0;
+ tmp.spec.RGBi.red = 0.0;
+ tmp.spec.RGBi.green = 1.0;
+ tmp.spec.RGBi.blue = 0.0;
+ if (XcmsConvertColors(ccc, &tmp, 1, target_format, NULL) != XcmsSuccess) {
+ return(XcmsFailure);
+ }
+ memcpy((char *)pColor_ret, (char *)&tmp, sizeof(XcmsColor));
+ return(XcmsSuccess);
+}
diff --git a/libX11/src/xcms/QRed.c b/libX11/src/xcms/QRed.c
index 32cde9e9c..357380d60 100644
--- a/libX11/src/xcms/QRed.c
+++ b/libX11/src/xcms/QRed.c
@@ -1,84 +1,84 @@
-
-/*
- * Code and supporting documentation (c) Copyright 1990 1991 Tektronix, Inc.
- * All Rights Reserved
- *
- * This file is a component of an X Window System-specific implementation
- * of Xcms based on the TekColor Color Management System. Permission is
- * hereby granted to use, copy, modify, sell, and otherwise distribute this
- * software and its documentation for any purpose and without fee, provided
- * that this copyright, permission, and disclaimer notice is reproduced in
- * all copies of this software and in supporting documentation. TekColor
- * is a trademark of Tektronix, Inc.
- *
- * Tektronix makes no representation about the suitability of this software
- * for any purpose. It is provided "as is" and with all faults.
- *
- * TEKTRONIX DISCLAIMS ALL WARRANTIES APPLICABLE TO THIS SOFTWARE,
- * INCLUDING THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE. IN NO EVENT SHALL TEKTRONIX BE LIABLE FOR ANY
- * SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER
- * RESULTING FROM LOSS OF USE, DATA, OR PROFITS, WHETHER IN AN ACTION OF
- * CONTRACT, NEGLIGENCE, OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
- * CONNECTION WITH THE USE OR THE PERFORMANCE OF THIS SOFTWARE.
- *
- *
- * NAME
- * XcmsQRed.c - Query Red
- *
- * DESCRIPTION
- * Routine to obtain a color specification for full
- * red intensity and zero green and blue intensities.
- *
- *
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-#include "Xcms.h"
-
-
-
-/************************************************************************
- * *
- * PUBLIC INTERFACES *
- * *
- ************************************************************************/
-
-/*
- * NAME
- * XcmsQueryRed
- *
- * SYNOPSIS
- */
-
-Status
-XcmsQueryRed(
- XcmsCCC ccc,
- XcmsColorFormat target_format,
- XcmsColor *pColor_ret)
-/*
- * DESCRIPTION
- * Returns the color specification in the target format for
- * full intensity red and zero intensity green and blue.
- *
- * RETURNS
- * Returns XcmsSuccess, if failed; otherwise XcmsFailure
- *
- */
-{
- XcmsColor tmp;
-
- tmp.format = XcmsRGBiFormat;
- tmp.pixel = 0;
- tmp.spec.RGBi.red = 1.0;
- tmp.spec.RGBi.green = 0.0;
- tmp.spec.RGBi.blue = 0.0;
- if (XcmsConvertColors(ccc, &tmp, 1, target_format, NULL) != XcmsSuccess) {
- return(XcmsFailure);
- }
- memcpy((char *)pColor_ret, (char *)&tmp, sizeof(XcmsColor));
- return(XcmsSuccess);
-}
+
+/*
+ * Code and supporting documentation (c) Copyright 1990 1991 Tektronix, Inc.
+ * All Rights Reserved
+ *
+ * This file is a component of an X Window System-specific implementation
+ * of Xcms based on the TekColor Color Management System. Permission is
+ * hereby granted to use, copy, modify, sell, and otherwise distribute this
+ * software and its documentation for any purpose and without fee, provided
+ * that this copyright, permission, and disclaimer notice is reproduced in
+ * all copies of this software and in supporting documentation. TekColor
+ * is a trademark of Tektronix, Inc.
+ *
+ * Tektronix makes no representation about the suitability of this software
+ * for any purpose. It is provided "as is" and with all faults.
+ *
+ * TEKTRONIX DISCLAIMS ALL WARRANTIES APPLICABLE TO THIS SOFTWARE,
+ * INCLUDING THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+ * PARTICULAR PURPOSE. IN NO EVENT SHALL TEKTRONIX BE LIABLE FOR ANY
+ * SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER
+ * RESULTING FROM LOSS OF USE, DATA, OR PROFITS, WHETHER IN AN ACTION OF
+ * CONTRACT, NEGLIGENCE, OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
+ * CONNECTION WITH THE USE OR THE PERFORMANCE OF THIS SOFTWARE.
+ *
+ *
+ * NAME
+ * XcmsQRed.c - Query Red
+ *
+ * DESCRIPTION
+ * Routine to obtain a color specification for full
+ * red intensity and zero green and blue intensities.
+ *
+ *
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+#include "Xcms.h"
+
+
+
+/************************************************************************
+ * *
+ * PUBLIC INTERFACES *
+ * *
+ ************************************************************************/
+
+/*
+ * NAME
+ * XcmsQueryRed
+ *
+ * SYNOPSIS
+ */
+
+Status
+XcmsQueryRed(
+ XcmsCCC ccc,
+ XcmsColorFormat target_format,
+ XcmsColor *pColor_ret)
+/*
+ * DESCRIPTION
+ * Returns the color specification in the target format for
+ * full intensity red and zero intensity green and blue.
+ *
+ * RETURNS
+ * Returns XcmsSuccess, if failed; otherwise XcmsFailure
+ *
+ */
+{
+ XcmsColor tmp;
+
+ tmp.format = XcmsRGBiFormat;
+ tmp.pixel = 0;
+ tmp.spec.RGBi.red = 1.0;
+ tmp.spec.RGBi.green = 0.0;
+ tmp.spec.RGBi.blue = 0.0;
+ if (XcmsConvertColors(ccc, &tmp, 1, target_format, NULL) != XcmsSuccess) {
+ return(XcmsFailure);
+ }
+ memcpy((char *)pColor_ret, (char *)&tmp, sizeof(XcmsColor));
+ return(XcmsSuccess);
+}
diff --git a/libX11/src/xcms/QWhite.c b/libX11/src/xcms/QWhite.c
index 1f89f2e20..36b764c9d 100644
--- a/libX11/src/xcms/QWhite.c
+++ b/libX11/src/xcms/QWhite.c
@@ -1,84 +1,84 @@
-
-/*
- * Code and supporting documentation (c) Copyright 1990 1991 Tektronix, Inc.
- * All Rights Reserved
- *
- * This file is a component of an X Window System-specific implementation
- * of Xcms based on the TekColor Color Management System. Permission is
- * hereby granted to use, copy, modify, sell, and otherwise distribute this
- * software and its documentation for any purpose and without fee, provided
- * that this copyright, permission, and disclaimer notice is reproduced in
- * all copies of this software and in supporting documentation. TekColor
- * is a trademark of Tektronix, Inc.
- *
- * Tektronix makes no representation about the suitability of this software
- * for any purpose. It is provided "as is" and with all faults.
- *
- * TEKTRONIX DISCLAIMS ALL WARRANTIES APPLICABLE TO THIS SOFTWARE,
- * INCLUDING THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE. IN NO EVENT SHALL TEKTRONIX BE LIABLE FOR ANY
- * SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER
- * RESULTING FROM LOSS OF USE, DATA, OR PROFITS, WHETHER IN AN ACTION OF
- * CONTRACT, NEGLIGENCE, OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
- * CONNECTION WITH THE USE OR THE PERFORMANCE OF THIS SOFTWARE.
- *
- *
- * NAME
- * XcmsQWhite.c - Query White
- *
- * DESCRIPTION
- * Routine to obtain a color specification for full
- * red, green, and blue intensities.
- *
- *
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-#include "Xcms.h"
-
-
-
-/************************************************************************
- * *
- * PUBLIC INTERFACES *
- * *
- ************************************************************************/
-
-/*
- * NAME
- * XcmsQueryWhite
- *
- * SYNOPSIS
- */
-
-Status
-XcmsQueryWhite(
- XcmsCCC ccc,
- XcmsColorFormat target_format,
- XcmsColor *pColor_ret)
-/*
- * DESCRIPTION
- * Returns the color specification in the target format for
- * full intensity red, green, and blue.
- *
- * RETURNS
- * Returns XcmsSuccess, if failed; otherwise XcmsFailure
- *
- */
-{
- XcmsColor tmp;
-
- tmp.format = XcmsRGBiFormat;
- tmp.pixel = 0;
- tmp.spec.RGBi.red = 1.0;
- tmp.spec.RGBi.green = 1.0;
- tmp.spec.RGBi.blue = 1.0;
- if (XcmsConvertColors(ccc, &tmp, 1, target_format, NULL) != XcmsSuccess) {
- return(XcmsFailure);
- }
- memcpy((char *)pColor_ret, (char *)&tmp, sizeof(XcmsColor));
- return(XcmsSuccess);
-}
+
+/*
+ * Code and supporting documentation (c) Copyright 1990 1991 Tektronix, Inc.
+ * All Rights Reserved
+ *
+ * This file is a component of an X Window System-specific implementation
+ * of Xcms based on the TekColor Color Management System. Permission is
+ * hereby granted to use, copy, modify, sell, and otherwise distribute this
+ * software and its documentation for any purpose and without fee, provided
+ * that this copyright, permission, and disclaimer notice is reproduced in
+ * all copies of this software and in supporting documentation. TekColor
+ * is a trademark of Tektronix, Inc.
+ *
+ * Tektronix makes no representation about the suitability of this software
+ * for any purpose. It is provided "as is" and with all faults.
+ *
+ * TEKTRONIX DISCLAIMS ALL WARRANTIES APPLICABLE TO THIS SOFTWARE,
+ * INCLUDING THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+ * PARTICULAR PURPOSE. IN NO EVENT SHALL TEKTRONIX BE LIABLE FOR ANY
+ * SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER
+ * RESULTING FROM LOSS OF USE, DATA, OR PROFITS, WHETHER IN AN ACTION OF
+ * CONTRACT, NEGLIGENCE, OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
+ * CONNECTION WITH THE USE OR THE PERFORMANCE OF THIS SOFTWARE.
+ *
+ *
+ * NAME
+ * XcmsQWhite.c - Query White
+ *
+ * DESCRIPTION
+ * Routine to obtain a color specification for full
+ * red, green, and blue intensities.
+ *
+ *
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+#include "Xcms.h"
+
+
+
+/************************************************************************
+ * *
+ * PUBLIC INTERFACES *
+ * *
+ ************************************************************************/
+
+/*
+ * NAME
+ * XcmsQueryWhite
+ *
+ * SYNOPSIS
+ */
+
+Status
+XcmsQueryWhite(
+ XcmsCCC ccc,
+ XcmsColorFormat target_format,
+ XcmsColor *pColor_ret)
+/*
+ * DESCRIPTION
+ * Returns the color specification in the target format for
+ * full intensity red, green, and blue.
+ *
+ * RETURNS
+ * Returns XcmsSuccess, if failed; otherwise XcmsFailure
+ *
+ */
+{
+ XcmsColor tmp;
+
+ tmp.format = XcmsRGBiFormat;
+ tmp.pixel = 0;
+ tmp.spec.RGBi.red = 1.0;
+ tmp.spec.RGBi.green = 1.0;
+ tmp.spec.RGBi.blue = 1.0;
+ if (XcmsConvertColors(ccc, &tmp, 1, target_format, NULL) != XcmsSuccess) {
+ return(XcmsFailure);
+ }
+ memcpy((char *)pColor_ret, (char *)&tmp, sizeof(XcmsColor));
+ return(XcmsSuccess);
+}
diff --git a/libX11/src/xcms/QuCol.c b/libX11/src/xcms/QuCol.c
index d70d29431..b4c1cd33a 100644
--- a/libX11/src/xcms/QuCol.c
+++ b/libX11/src/xcms/QuCol.c
@@ -1,78 +1,78 @@
-
-/*
- * Code and supporting documentation (c) Copyright 1990 1991 Tektronix, Inc.
- * All Rights Reserved
- *
- * This file is a component of an X Window System-specific implementation
- * of Xcms based on the TekColor Color Management System. Permission is
- * hereby granted to use, copy, modify, sell, and otherwise distribute this
- * software and its documentation for any purpose and without fee, provided
- * that this copyright, permission, and disclaimer notice is reproduced in
- * all copies of this software and in supporting documentation. TekColor
- * is a trademark of Tektronix, Inc.
- *
- * Tektronix makes no representation about the suitability of this software
- * for any purpose. It is provided "as is" and with all faults.
- *
- * TEKTRONIX DISCLAIMS ALL WARRANTIES APPLICABLE TO THIS SOFTWARE,
- * INCLUDING THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE. IN NO EVENT SHALL TEKTRONIX BE LIABLE FOR ANY
- * SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER
- * RESULTING FROM LOSS OF USE, DATA, OR PROFITS, WHETHER IN AN ACTION OF
- * CONTRACT, NEGLIGENCE, OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
- * CONNECTION WITH THE USE OR THE PERFORMANCE OF THIS SOFTWARE.
- *
- *
- * NAME
- * XcmsQuCol.c
- *
- * DESCRIPTION
- * Source for XcmsQueryColors
- *
- *
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-#include "Xcmsint.h"
-#include "Cv.h"
-
-
-/************************************************************************
- * *
- * PUBLIC ROUTINES *
- * *
- ************************************************************************/
-
-/*
- * NAME
- * XcmsQueryColor - Query Color
- *
- * SYNOPSIS
- */
-Status
-XcmsQueryColor(
- Display *dpy,
- Colormap colormap,
- XcmsColor *pXcmsColor_in_out,
- XcmsColorFormat result_format)
-/*
- * DESCRIPTION
- * This routine uses XQueryColor to obtain the X RGB values
- * stored in the specified colormap for the specified pixel.
- * The X RGB values are then converted to the target format as
- * specified by the format component of the XcmsColor structure.
- *
- * RETURNS
- * XcmsFailure if failed;
- * XcmsSuccess if it succeeded.
- *
- * Returns a color specification of the color stored in the
- * specified pixel.
- */
-{
- return(_XcmsSetGetColor(XQueryColor, dpy, colormap,
- pXcmsColor_in_out, result_format, (Bool *) NULL));
-}
+
+/*
+ * Code and supporting documentation (c) Copyright 1990 1991 Tektronix, Inc.
+ * All Rights Reserved
+ *
+ * This file is a component of an X Window System-specific implementation
+ * of Xcms based on the TekColor Color Management System. Permission is
+ * hereby granted to use, copy, modify, sell, and otherwise distribute this
+ * software and its documentation for any purpose and without fee, provided
+ * that this copyright, permission, and disclaimer notice is reproduced in
+ * all copies of this software and in supporting documentation. TekColor
+ * is a trademark of Tektronix, Inc.
+ *
+ * Tektronix makes no representation about the suitability of this software
+ * for any purpose. It is provided "as is" and with all faults.
+ *
+ * TEKTRONIX DISCLAIMS ALL WARRANTIES APPLICABLE TO THIS SOFTWARE,
+ * INCLUDING THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+ * PARTICULAR PURPOSE. IN NO EVENT SHALL TEKTRONIX BE LIABLE FOR ANY
+ * SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER
+ * RESULTING FROM LOSS OF USE, DATA, OR PROFITS, WHETHER IN AN ACTION OF
+ * CONTRACT, NEGLIGENCE, OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
+ * CONNECTION WITH THE USE OR THE PERFORMANCE OF THIS SOFTWARE.
+ *
+ *
+ * NAME
+ * XcmsQuCol.c
+ *
+ * DESCRIPTION
+ * Source for XcmsQueryColors
+ *
+ *
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+#include "Xcmsint.h"
+#include "Cv.h"
+
+
+/************************************************************************
+ * *
+ * PUBLIC ROUTINES *
+ * *
+ ************************************************************************/
+
+/*
+ * NAME
+ * XcmsQueryColor - Query Color
+ *
+ * SYNOPSIS
+ */
+Status
+XcmsQueryColor(
+ Display *dpy,
+ Colormap colormap,
+ XcmsColor *pXcmsColor_in_out,
+ XcmsColorFormat result_format)
+/*
+ * DESCRIPTION
+ * This routine uses XQueryColor to obtain the X RGB values
+ * stored in the specified colormap for the specified pixel.
+ * The X RGB values are then converted to the target format as
+ * specified by the format component of the XcmsColor structure.
+ *
+ * RETURNS
+ * XcmsFailure if failed;
+ * XcmsSuccess if it succeeded.
+ *
+ * Returns a color specification of the color stored in the
+ * specified pixel.
+ */
+{
+ return(_XcmsSetGetColor(XQueryColor, dpy, colormap,
+ pXcmsColor_in_out, result_format, (Bool *) NULL));
+}
diff --git a/libX11/src/xcms/QuCols.c b/libX11/src/xcms/QuCols.c
index b286935d8..25a38b818 100644
--- a/libX11/src/xcms/QuCols.c
+++ b/libX11/src/xcms/QuCols.c
@@ -1,78 +1,78 @@
-
-/*
- * Code and supporting documentation (c) Copyright 1990 1991 Tektronix, Inc.
- * All Rights Reserved
- *
- * This file is a component of an X Window System-specific implementation
- * of Xcms based on the TekColor Color Management System. Permission is
- * hereby granted to use, copy, modify, sell, and otherwise distribute this
- * software and its documentation for any purpose and without fee, provided
- * that this copyright, permission, and disclaimer notice is reproduced in
- * all copies of this software and in supporting documentation. TekColor
- * is a trademark of Tektronix, Inc.
- *
- * Tektronix makes no representation about the suitability of this software
- * for any purpose. It is provided "as is" and with all faults.
- *
- * TEKTRONIX DISCLAIMS ALL WARRANTIES APPLICABLE TO THIS SOFTWARE,
- * INCLUDING THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE. IN NO EVENT SHALL TEKTRONIX BE LIABLE FOR ANY
- * SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER
- * RESULTING FROM LOSS OF USE, DATA, OR PROFITS, WHETHER IN AN ACTION OF
- * CONTRACT, NEGLIGENCE, OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
- * CONNECTION WITH THE USE OR THE PERFORMANCE OF THIS SOFTWARE.
- *
- *
- * NAME
- * XcmsQuCol.c
- *
- * DESCRIPTION
- * Source for XcmsQueryColors
- *
- *
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-#include "Xcmsint.h"
-#include "Cv.h"
-
-
-/************************************************************************
- * *
- * PUBLIC ROUTINES *
- * *
- ************************************************************************/
-/*
- * NAME
- * XcmsQueryColors - Query Colors
- *
- * SYNOPSIS
- */
-Status
-XcmsQueryColors(
- Display *dpy,
- Colormap colormap,
- XcmsColor *pXcmsColors_in_out,
- unsigned int nColors,
- XcmsColorFormat result_format)
-/*
- * DESCRIPTION
- * This routine uses XQueryColors to obtain the X RGB values
- * stored in the specified colormap for the specified pixels.
- * The X RGB values are then converted to the target format as
- * specified by the format component of the XcmsColor structure.
- *
- * RETURNS
- * XcmsFailure if failed;
- * XcmsSuccess if it succeeded.
- *
- * Returns the color specifications of the colors stored in the
- * specified pixels.
- */
-{
- return(_XcmsSetGetColors(XQueryColors, dpy, colormap,
- pXcmsColors_in_out, nColors, result_format, (Bool *) NULL));
-}
+
+/*
+ * Code and supporting documentation (c) Copyright 1990 1991 Tektronix, Inc.
+ * All Rights Reserved
+ *
+ * This file is a component of an X Window System-specific implementation
+ * of Xcms based on the TekColor Color Management System. Permission is
+ * hereby granted to use, copy, modify, sell, and otherwise distribute this
+ * software and its documentation for any purpose and without fee, provided
+ * that this copyright, permission, and disclaimer notice is reproduced in
+ * all copies of this software and in supporting documentation. TekColor
+ * is a trademark of Tektronix, Inc.
+ *
+ * Tektronix makes no representation about the suitability of this software
+ * for any purpose. It is provided "as is" and with all faults.
+ *
+ * TEKTRONIX DISCLAIMS ALL WARRANTIES APPLICABLE TO THIS SOFTWARE,
+ * INCLUDING THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+ * PARTICULAR PURPOSE. IN NO EVENT SHALL TEKTRONIX BE LIABLE FOR ANY
+ * SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER
+ * RESULTING FROM LOSS OF USE, DATA, OR PROFITS, WHETHER IN AN ACTION OF
+ * CONTRACT, NEGLIGENCE, OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
+ * CONNECTION WITH THE USE OR THE PERFORMANCE OF THIS SOFTWARE.
+ *
+ *
+ * NAME
+ * XcmsQuCol.c
+ *
+ * DESCRIPTION
+ * Source for XcmsQueryColors
+ *
+ *
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+#include "Xcmsint.h"
+#include "Cv.h"
+
+
+/************************************************************************
+ * *
+ * PUBLIC ROUTINES *
+ * *
+ ************************************************************************/
+/*
+ * NAME
+ * XcmsQueryColors - Query Colors
+ *
+ * SYNOPSIS
+ */
+Status
+XcmsQueryColors(
+ Display *dpy,
+ Colormap colormap,
+ XcmsColor *pXcmsColors_in_out,
+ unsigned int nColors,
+ XcmsColorFormat result_format)
+/*
+ * DESCRIPTION
+ * This routine uses XQueryColors to obtain the X RGB values
+ * stored in the specified colormap for the specified pixels.
+ * The X RGB values are then converted to the target format as
+ * specified by the format component of the XcmsColor structure.
+ *
+ * RETURNS
+ * XcmsFailure if failed;
+ * XcmsSuccess if it succeeded.
+ *
+ * Returns the color specifications of the colors stored in the
+ * specified pixels.
+ */
+{
+ return(_XcmsSetGetColors(XQueryColors, dpy, colormap,
+ pXcmsColors_in_out, nColors, result_format, (Bool *) NULL));
+}
diff --git a/libX11/src/xcms/SetCCC.c b/libX11/src/xcms/SetCCC.c
index 8ae6278f8..e8171b4ea 100644
--- a/libX11/src/xcms/SetCCC.c
+++ b/libX11/src/xcms/SetCCC.c
@@ -1,138 +1,138 @@
-
-/*
- * Code and supporting documentation (c) Copyright 1990 1991 Tektronix, Inc.
- * All Rights Reserved
- *
- * This file is a component of an X Window System-specific implementation
- * of Xcms based on the TekColor Color Management System. Permission is
- * hereby granted to use, copy, modify, sell, and otherwise distribute this
- * software and its documentation for any purpose and without fee, provided
- * that this copyright, permission, and disclaimer notice is reproduced in
- * all copies of this software and in supporting documentation. TekColor
- * is a trademark of Tektronix, Inc.
- *
- * Tektronix makes no representation about the suitability of this software
- * for any purpose. It is provided "as is" and with all faults.
- *
- * TEKTRONIX DISCLAIMS ALL WARRANTIES APPLICABLE TO THIS SOFTWARE,
- * INCLUDING THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE. IN NO EVENT SHALL TEKTRONIX BE LIABLE FOR ANY
- * SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER
- * RESULTING FROM LOSS OF USE, DATA, OR PROFITS, WHETHER IN AN ACTION OF
- * CONTRACT, NEGLIGENCE, OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
- * CONNECTION WITH THE USE OR THE PERFORMANCE OF THIS SOFTWARE.
- *
- *
- * NAME
- * XcmsSetCCC.c - Color Conversion Context Setting Routines
- *
- * DESCRIPTION
- * Routines to set components of a Color Conversion
- * Context structure.
- *
- *
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-#include "Xcms.h"
-
-
-
-/************************************************************************
- * *
- * PUBLIC INTERFACES *
- * *
- ************************************************************************/
-
-/*
- * NAME
- * XcmsSetWhitePoint
- *
- * SYNOPSIS
- */
-
-Status
-XcmsSetWhitePoint(
- XcmsCCC ccc,
- XcmsColor *pColor)
-/*
- * DESCRIPTION
- * Sets the Client White Point in the specified CCC.
- *
- * RETURNS
- * Returns XcmsSuccess if succeeded; otherwise XcmsFailure.
- *
- */
-{
- if (pColor == NULL || pColor->format == XcmsUndefinedFormat) {
- ccc->clientWhitePt.format = XcmsUndefinedFormat;
- } else if (pColor->format != XcmsCIEXYZFormat &&
- pColor->format != XcmsCIEuvYFormat &&
- pColor->format != XcmsCIExyYFormat) {
- return(XcmsFailure);
- } else {
- memcpy((char *)&ccc->clientWhitePt, (char *)pColor, sizeof(XcmsColor));
- }
- return(XcmsSuccess);
-}
-
-
-/*
- * NAME
- * XcmsSetCompressionProc
- *
- * SYNOPSIS
- */
-
-XcmsCompressionProc
-XcmsSetCompressionProc(
- XcmsCCC ccc,
- XcmsCompressionProc compression_proc,
- XPointer client_data)
-/*
- * DESCRIPTION
- * Set the specified CCC's compression function and client data.
- *
- * RETURNS
- * Returns the old compression function.
- *
- */
-{
- XcmsCompressionProc old = ccc->gamutCompProc;
-
- ccc->gamutCompProc = compression_proc;
- ccc->gamutCompClientData = client_data;
- return(old);
-}
-
-
-/*
- * NAME
- * XcmsSetWhiteAdjustProc
- *
- * SYNOPSIS
- */
-
-XcmsWhiteAdjustProc
-XcmsSetWhiteAdjustProc(
- XcmsCCC ccc,
- XcmsWhiteAdjustProc white_adjust_proc,
- XPointer client_data )
-/*
- * DESCRIPTION
- * Set the specified CCC's white_adjust function and client data.
- *
- * RETURNS
- * Returns the old white_adjust function.
- *
- */
-{
- XcmsWhiteAdjustProc old = ccc->whitePtAdjProc;
-
- ccc->whitePtAdjProc = white_adjust_proc;
- ccc->whitePtAdjClientData = client_data;
- return(old);
-}
+
+/*
+ * Code and supporting documentation (c) Copyright 1990 1991 Tektronix, Inc.
+ * All Rights Reserved
+ *
+ * This file is a component of an X Window System-specific implementation
+ * of Xcms based on the TekColor Color Management System. Permission is
+ * hereby granted to use, copy, modify, sell, and otherwise distribute this
+ * software and its documentation for any purpose and without fee, provided
+ * that this copyright, permission, and disclaimer notice is reproduced in
+ * all copies of this software and in supporting documentation. TekColor
+ * is a trademark of Tektronix, Inc.
+ *
+ * Tektronix makes no representation about the suitability of this software
+ * for any purpose. It is provided "as is" and with all faults.
+ *
+ * TEKTRONIX DISCLAIMS ALL WARRANTIES APPLICABLE TO THIS SOFTWARE,
+ * INCLUDING THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+ * PARTICULAR PURPOSE. IN NO EVENT SHALL TEKTRONIX BE LIABLE FOR ANY
+ * SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER
+ * RESULTING FROM LOSS OF USE, DATA, OR PROFITS, WHETHER IN AN ACTION OF
+ * CONTRACT, NEGLIGENCE, OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
+ * CONNECTION WITH THE USE OR THE PERFORMANCE OF THIS SOFTWARE.
+ *
+ *
+ * NAME
+ * XcmsSetCCC.c - Color Conversion Context Setting Routines
+ *
+ * DESCRIPTION
+ * Routines to set components of a Color Conversion
+ * Context structure.
+ *
+ *
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+#include "Xcms.h"
+
+
+
+/************************************************************************
+ * *
+ * PUBLIC INTERFACES *
+ * *
+ ************************************************************************/
+
+/*
+ * NAME
+ * XcmsSetWhitePoint
+ *
+ * SYNOPSIS
+ */
+
+Status
+XcmsSetWhitePoint(
+ XcmsCCC ccc,
+ XcmsColor *pColor)
+/*
+ * DESCRIPTION
+ * Sets the Client White Point in the specified CCC.
+ *
+ * RETURNS
+ * Returns XcmsSuccess if succeeded; otherwise XcmsFailure.
+ *
+ */
+{
+ if (pColor == NULL || pColor->format == XcmsUndefinedFormat) {
+ ccc->clientWhitePt.format = XcmsUndefinedFormat;
+ } else if (pColor->format != XcmsCIEXYZFormat &&
+ pColor->format != XcmsCIEuvYFormat &&
+ pColor->format != XcmsCIExyYFormat) {
+ return(XcmsFailure);
+ } else {
+ memcpy((char *)&ccc->clientWhitePt, (char *)pColor, sizeof(XcmsColor));
+ }
+ return(XcmsSuccess);
+}
+
+
+/*
+ * NAME
+ * XcmsSetCompressionProc
+ *
+ * SYNOPSIS
+ */
+
+XcmsCompressionProc
+XcmsSetCompressionProc(
+ XcmsCCC ccc,
+ XcmsCompressionProc compression_proc,
+ XPointer client_data)
+/*
+ * DESCRIPTION
+ * Set the specified CCC's compression function and client data.
+ *
+ * RETURNS
+ * Returns the old compression function.
+ *
+ */
+{
+ XcmsCompressionProc old = ccc->gamutCompProc;
+
+ ccc->gamutCompProc = compression_proc;
+ ccc->gamutCompClientData = client_data;
+ return(old);
+}
+
+
+/*
+ * NAME
+ * XcmsSetWhiteAdjustProc
+ *
+ * SYNOPSIS
+ */
+
+XcmsWhiteAdjustProc
+XcmsSetWhiteAdjustProc(
+ XcmsCCC ccc,
+ XcmsWhiteAdjustProc white_adjust_proc,
+ XPointer client_data )
+/*
+ * DESCRIPTION
+ * Set the specified CCC's white_adjust function and client data.
+ *
+ * RETURNS
+ * Returns the old white_adjust function.
+ *
+ */
+{
+ XcmsWhiteAdjustProc old = ccc->whitePtAdjProc;
+
+ ccc->whitePtAdjProc = white_adjust_proc;
+ ccc->whitePtAdjClientData = client_data;
+ return(old);
+}
diff --git a/libX11/src/xcms/SetGetCols.c b/libX11/src/xcms/SetGetCols.c
index 763e6dda4..9b548dbb2 100644
--- a/libX11/src/xcms/SetGetCols.c
+++ b/libX11/src/xcms/SetGetCols.c
@@ -1,301 +1,301 @@
-
-/*
- * Code and supporting documentation (c) Copyright 1990 1991 Tektronix, Inc.
- * All Rights Reserved
- *
- * This file is a component of an X Window System-specific implementation
- * of Xcms based on the TekColor Color Management System. Permission is
- * hereby granted to use, copy, modify, sell, and otherwise distribute this
- * software and its documentation for any purpose and without fee, provided
- * that this copyright, permission, and disclaimer notice is reproduced in
- * all copies of this software and in supporting documentation. TekColor
- * is a trademark of Tektronix, Inc.
- *
- * Tektronix makes no representation about the suitability of this software
- * for any purpose. It is provided "as is" and with all faults.
- *
- * TEKTRONIX DISCLAIMS ALL WARRANTIES APPLICABLE TO THIS SOFTWARE,
- * INCLUDING THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE. IN NO EVENT SHALL TEKTRONIX BE LIABLE FOR ANY
- * SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER
- * RESULTING FROM LOSS OF USE, DATA, OR PROFITS, WHETHER IN AN ACTION OF
- * CONTRACT, NEGLIGENCE, OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
- * CONNECTION WITH THE USE OR THE PERFORMANCE OF THIS SOFTWARE.
- *
- *
- * NAME
- * XcmsSetGet.c
- *
- * DESCRIPTION
- * Source for _XcmsSetGetColors()
- *
- *
- */
-
-/*
- * EXTERNAL INCLUDES
- * Include files that must be exported to any package or
- * program using this package.
- */
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-#include "Xcmsint.h"
-#include "Cv.h"
-
-
-/************************************************************************
- * *
- * API PRIVATE ROUTINES *
- * *
- ************************************************************************/
-
-/*
- * NAME
- * XcmsSetColor -
- *
- * SYNOPSIS
- */
-Status
-_XcmsSetGetColor(
- Status (*xColorProc)(
- Display* /* display */,
- Colormap /* colormap */,
- XColor* /* screen_in_out */),
- Display *dpy,
- Colormap cmap,
- XcmsColor *pColors_in_out,
- XcmsColorFormat result_format,
- Bool *pCompressed)
-/*
- * DESCRIPTION
- * Routine containing code common to:
- * XcmsAllocColor
- * XcmsQueryColor
- * XcmsStoreColor
- *
- * RETURNS
- * XcmsFailure if failed;
- * XcmsSuccess if it succeeded without gamut compression;
- * XcmsSuccessWithCompression if it succeeded with gamut
- * compression;
- */
-{
- XcmsCCC ccc;
- XColor XColors_in_out;
- Status retval = XcmsSuccess;
-
- /*
- * Argument Checking
- * 1. Assume xColorProc is correct
- * 2. Insure ccc not NULL
- * 3. Assume cmap correct (should be checked by Server)
- * 4. Insure pColors_in_out valid
- * 5. Assume method_in is valid (should be checked by Server)
- */
-
- if (dpy == NULL) {
- return(XcmsFailure);
- }
-
- if (result_format == XcmsUndefinedFormat) {
- return(XcmsFailure);
- }
-
- if ( !((*xColorProc == XAllocColor) || (*xColorProc == XStoreColor)
- || (*xColorProc == XQueryColor)) ) {
- return(XcmsFailure);
- }
-
- if ((ccc = XcmsCCCOfColormap(dpy, cmap)) == (XcmsCCC)NULL) {
- return(XcmsFailure);
- }
-
- if (*xColorProc == XQueryColor) {
- goto Query;
- }
-
- /*
- * Convert to RGB, adjusting for white point differences if necessary.
- */
- if ((retval = XcmsConvertColors(ccc, pColors_in_out, 1, XcmsRGBFormat,
- pCompressed)) == XcmsFailure) {
- return(XcmsFailure);
- }
-
-Query:
- /*
- * Convert XcmsColor to XColor structures
- */
- _XcmsRGB_to_XColor(pColors_in_out, &XColors_in_out, 1);
-
- /*
- * Now make appropriate X Call
- */
- if (*xColorProc == XAllocColor) {
- if ((*xColorProc)(ccc->dpy, cmap, &XColors_in_out) == 0) {
- return(XcmsFailure);
- }
- } else if ((*xColorProc == XQueryColor) || (*xColorProc == XStoreColor)) {
- /* Note: XQueryColor and XStoreColor do not return any Status */
- (*xColorProc)(ccc->dpy, cmap, &XColors_in_out);
- } else {
- return(XcmsFailure);
- }
-
- if ((*xColorProc == XStoreColor)) {
- return(retval);
- }
-
- /*
- * Now, convert the returned XColor (i.e., rgb) to XcmsColor structures
- */
- _XColor_to_XcmsRGB(ccc, &XColors_in_out, pColors_in_out, 1);
-
- /*
- * Then, convert XcmsColor structures to the original specification
- * format. Note that we must use NULL instead of passing
- * pCompressed.
- */
-
- if (result_format != XcmsRGBFormat) {
- if (XcmsConvertColors(ccc, pColors_in_out, 1, result_format,
- (Bool *) NULL) == XcmsFailure) {
- return(XcmsFailure);
- }
- }
- return(retval);
-}
-
-/*
- * NAME
- * XcmsSetColors -
- *
- * SYNOPSIS
- */
-Status
-_XcmsSetGetColors(
- Status (*xColorProc)(
- Display* /* display */,
- Colormap /* colormap */,
- XColor* /* screen_in_out */,
- int /* nColors */),
- Display *dpy,
- Colormap cmap,
- XcmsColor *pColors_in_out,
- int nColors,
- XcmsColorFormat result_format,
- Bool *pCompressed)
-/*
- * DESCRIPTION
- * Routine containing code common to:
- * XcmsQueryColors
- * XcmsStoreColors
- *
- * RETURNS
- * XcmsFailure if failed;
- * XcmsSuccess if it succeeded without gamut compression;
- * XcmsSuccessWithCompression if it succeeded with gamut
- * compression;
- */
-{
- XcmsCCC ccc;
- XColor *pXColors_in_out;
- Status retval = XcmsSuccess;
-
- /*
- * Argument Checking
- * 1. Assume xColorProc is correct
- * 2. Insure ccc not NULL
- * 3. Assume cmap correct (should be checked by Server)
- * 4. Insure pColors_in_out valid
- * 5. Assume method_in is valid (should be checked by Server)
- * 6. Insure nColors > 0
- */
-
- if (dpy == NULL) {
- return(XcmsFailure);
- }
-
- if (nColors == 0) {
- return(XcmsSuccess);
- }
-
- if (result_format == XcmsUndefinedFormat) {
- return(XcmsFailure);
- }
-
- if ( !((*xColorProc == XStoreColors) || (*xColorProc == XQueryColors)) ) {
- return(XcmsFailure);
- }
-
- if ((ccc = XcmsCCCOfColormap(dpy, cmap)) == (XcmsCCC)NULL) {
- return(XcmsFailure);
- }
-
- /*
- * Allocate space for XColors
- */
- if ((pXColors_in_out = (XColor *)Xcalloc(nColors, sizeof(XColor))) ==
- NULL) {
- return(XcmsFailure);
- }
-
- if (*xColorProc == XQueryColors) {
- goto Query;
- }
-
- /*
- * Convert to RGB, adjusting for white point differences if necessary.
- */
- if ((retval = XcmsConvertColors(ccc, pColors_in_out, nColors, XcmsRGBFormat,
- pCompressed)) == XcmsFailure) {
- Xfree((char *)pXColors_in_out);
- return(XcmsFailure);
- }
-
-Query:
- /*
- * Convert XcmsColor to XColor structures
- */
- _XcmsRGB_to_XColor(pColors_in_out, pXColors_in_out, nColors);
-
- /*
- * Now make appropriate X Call
- */
- if ((*xColorProc == XQueryColors) || (*xColorProc == XStoreColors)){
- /* Note: XQueryColors and XStoreColors do not return any Status */
- (*xColorProc)(ccc->dpy, cmap, pXColors_in_out, nColors);
- } else {
- Xfree((char *)pXColors_in_out);
- return(XcmsFailure);
- }
-
- if (*xColorProc == XStoreColors) {
- Xfree((char *)pXColors_in_out);
- return(retval);
- }
-
- /*
- * Now, convert the returned XColor (i.e., rgb) to XcmsColor structures
- */
- _XColor_to_XcmsRGB(ccc, pXColors_in_out, pColors_in_out, nColors);
- Xfree((char *)pXColors_in_out);
-
- /*
- * Then, convert XcmsColor structures to the original specification
- * format. Note that we must use NULL instead of passing
- * pCompressed.
- */
- if (result_format != XcmsRGBFormat) {
- if (XcmsConvertColors(ccc, pColors_in_out, nColors, result_format,
- (Bool *) NULL) == XcmsFailure) {
- return(XcmsFailure);
- }
- }
-
- return(retval);
-}
-
-/* ### EOF ### */
+
+/*
+ * Code and supporting documentation (c) Copyright 1990 1991 Tektronix, Inc.
+ * All Rights Reserved
+ *
+ * This file is a component of an X Window System-specific implementation
+ * of Xcms based on the TekColor Color Management System. Permission is
+ * hereby granted to use, copy, modify, sell, and otherwise distribute this
+ * software and its documentation for any purpose and without fee, provided
+ * that this copyright, permission, and disclaimer notice is reproduced in
+ * all copies of this software and in supporting documentation. TekColor
+ * is a trademark of Tektronix, Inc.
+ *
+ * Tektronix makes no representation about the suitability of this software
+ * for any purpose. It is provided "as is" and with all faults.
+ *
+ * TEKTRONIX DISCLAIMS ALL WARRANTIES APPLICABLE TO THIS SOFTWARE,
+ * INCLUDING THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+ * PARTICULAR PURPOSE. IN NO EVENT SHALL TEKTRONIX BE LIABLE FOR ANY
+ * SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER
+ * RESULTING FROM LOSS OF USE, DATA, OR PROFITS, WHETHER IN AN ACTION OF
+ * CONTRACT, NEGLIGENCE, OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
+ * CONNECTION WITH THE USE OR THE PERFORMANCE OF THIS SOFTWARE.
+ *
+ *
+ * NAME
+ * XcmsSetGet.c
+ *
+ * DESCRIPTION
+ * Source for _XcmsSetGetColors()
+ *
+ *
+ */
+
+/*
+ * EXTERNAL INCLUDES
+ * Include files that must be exported to any package or
+ * program using this package.
+ */
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+#include "Xcmsint.h"
+#include "Cv.h"
+
+
+/************************************************************************
+ * *
+ * API PRIVATE ROUTINES *
+ * *
+ ************************************************************************/
+
+/*
+ * NAME
+ * XcmsSetColor -
+ *
+ * SYNOPSIS
+ */
+Status
+_XcmsSetGetColor(
+ Status (*xColorProc)(
+ Display* /* display */,
+ Colormap /* colormap */,
+ XColor* /* screen_in_out */),
+ Display *dpy,
+ Colormap cmap,
+ XcmsColor *pColors_in_out,
+ XcmsColorFormat result_format,
+ Bool *pCompressed)
+/*
+ * DESCRIPTION
+ * Routine containing code common to:
+ * XcmsAllocColor
+ * XcmsQueryColor
+ * XcmsStoreColor
+ *
+ * RETURNS
+ * XcmsFailure if failed;
+ * XcmsSuccess if it succeeded without gamut compression;
+ * XcmsSuccessWithCompression if it succeeded with gamut
+ * compression;
+ */
+{
+ XcmsCCC ccc;
+ XColor XColors_in_out;
+ Status retval = XcmsSuccess;
+
+ /*
+ * Argument Checking
+ * 1. Assume xColorProc is correct
+ * 2. Insure ccc not NULL
+ * 3. Assume cmap correct (should be checked by Server)
+ * 4. Insure pColors_in_out valid
+ * 5. Assume method_in is valid (should be checked by Server)
+ */
+
+ if (dpy == NULL) {
+ return(XcmsFailure);
+ }
+
+ if (result_format == XcmsUndefinedFormat) {
+ return(XcmsFailure);
+ }
+
+ if ( !((*xColorProc == XAllocColor) || (*xColorProc == XStoreColor)
+ || (*xColorProc == XQueryColor)) ) {
+ return(XcmsFailure);
+ }
+
+ if ((ccc = XcmsCCCOfColormap(dpy, cmap)) == (XcmsCCC)NULL) {
+ return(XcmsFailure);
+ }
+
+ if (*xColorProc == XQueryColor) {
+ goto Query;
+ }
+
+ /*
+ * Convert to RGB, adjusting for white point differences if necessary.
+ */
+ if ((retval = XcmsConvertColors(ccc, pColors_in_out, 1, XcmsRGBFormat,
+ pCompressed)) == XcmsFailure) {
+ return(XcmsFailure);
+ }
+
+Query:
+ /*
+ * Convert XcmsColor to XColor structures
+ */
+ _XcmsRGB_to_XColor(pColors_in_out, &XColors_in_out, 1);
+
+ /*
+ * Now make appropriate X Call
+ */
+ if (*xColorProc == XAllocColor) {
+ if ((*xColorProc)(ccc->dpy, cmap, &XColors_in_out) == 0) {
+ return(XcmsFailure);
+ }
+ } else if ((*xColorProc == XQueryColor) || (*xColorProc == XStoreColor)) {
+ /* Note: XQueryColor and XStoreColor do not return any Status */
+ (*xColorProc)(ccc->dpy, cmap, &XColors_in_out);
+ } else {
+ return(XcmsFailure);
+ }
+
+ if ((*xColorProc == XStoreColor)) {
+ return(retval);
+ }
+
+ /*
+ * Now, convert the returned XColor (i.e., rgb) to XcmsColor structures
+ */
+ _XColor_to_XcmsRGB(ccc, &XColors_in_out, pColors_in_out, 1);
+
+ /*
+ * Then, convert XcmsColor structures to the original specification
+ * format. Note that we must use NULL instead of passing
+ * pCompressed.
+ */
+
+ if (result_format != XcmsRGBFormat) {
+ if (XcmsConvertColors(ccc, pColors_in_out, 1, result_format,
+ (Bool *) NULL) == XcmsFailure) {
+ return(XcmsFailure);
+ }
+ }
+ return(retval);
+}
+
+/*
+ * NAME
+ * XcmsSetColors -
+ *
+ * SYNOPSIS
+ */
+Status
+_XcmsSetGetColors(
+ Status (*xColorProc)(
+ Display* /* display */,
+ Colormap /* colormap */,
+ XColor* /* screen_in_out */,
+ int /* nColors */),
+ Display *dpy,
+ Colormap cmap,
+ XcmsColor *pColors_in_out,
+ int nColors,
+ XcmsColorFormat result_format,
+ Bool *pCompressed)
+/*
+ * DESCRIPTION
+ * Routine containing code common to:
+ * XcmsQueryColors
+ * XcmsStoreColors
+ *
+ * RETURNS
+ * XcmsFailure if failed;
+ * XcmsSuccess if it succeeded without gamut compression;
+ * XcmsSuccessWithCompression if it succeeded with gamut
+ * compression;
+ */
+{
+ XcmsCCC ccc;
+ XColor *pXColors_in_out;
+ Status retval = XcmsSuccess;
+
+ /*
+ * Argument Checking
+ * 1. Assume xColorProc is correct
+ * 2. Insure ccc not NULL
+ * 3. Assume cmap correct (should be checked by Server)
+ * 4. Insure pColors_in_out valid
+ * 5. Assume method_in is valid (should be checked by Server)
+ * 6. Insure nColors > 0
+ */
+
+ if (dpy == NULL) {
+ return(XcmsFailure);
+ }
+
+ if (nColors == 0) {
+ return(XcmsSuccess);
+ }
+
+ if (result_format == XcmsUndefinedFormat) {
+ return(XcmsFailure);
+ }
+
+ if ( !((*xColorProc == XStoreColors) || (*xColorProc == XQueryColors)) ) {
+ return(XcmsFailure);
+ }
+
+ if ((ccc = XcmsCCCOfColormap(dpy, cmap)) == (XcmsCCC)NULL) {
+ return(XcmsFailure);
+ }
+
+ /*
+ * Allocate space for XColors
+ */
+ if ((pXColors_in_out = (XColor *)Xcalloc(nColors, sizeof(XColor))) ==
+ NULL) {
+ return(XcmsFailure);
+ }
+
+ if (*xColorProc == XQueryColors) {
+ goto Query;
+ }
+
+ /*
+ * Convert to RGB, adjusting for white point differences if necessary.
+ */
+ if ((retval = XcmsConvertColors(ccc, pColors_in_out, nColors, XcmsRGBFormat,
+ pCompressed)) == XcmsFailure) {
+ Xfree((char *)pXColors_in_out);
+ return(XcmsFailure);
+ }
+
+Query:
+ /*
+ * Convert XcmsColor to XColor structures
+ */
+ _XcmsRGB_to_XColor(pColors_in_out, pXColors_in_out, nColors);
+
+ /*
+ * Now make appropriate X Call
+ */
+ if ((*xColorProc == XQueryColors) || (*xColorProc == XStoreColors)){
+ /* Note: XQueryColors and XStoreColors do not return any Status */
+ (*xColorProc)(ccc->dpy, cmap, pXColors_in_out, nColors);
+ } else {
+ Xfree((char *)pXColors_in_out);
+ return(XcmsFailure);
+ }
+
+ if (*xColorProc == XStoreColors) {
+ Xfree((char *)pXColors_in_out);
+ return(retval);
+ }
+
+ /*
+ * Now, convert the returned XColor (i.e., rgb) to XcmsColor structures
+ */
+ _XColor_to_XcmsRGB(ccc, pXColors_in_out, pColors_in_out, nColors);
+ Xfree((char *)pXColors_in_out);
+
+ /*
+ * Then, convert XcmsColor structures to the original specification
+ * format. Note that we must use NULL instead of passing
+ * pCompressed.
+ */
+ if (result_format != XcmsRGBFormat) {
+ if (XcmsConvertColors(ccc, pColors_in_out, nColors, result_format,
+ (Bool *) NULL) == XcmsFailure) {
+ return(XcmsFailure);
+ }
+ }
+
+ return(retval);
+}
+
+/* ### EOF ### */
diff --git a/libX11/src/xcms/StCol.c b/libX11/src/xcms/StCol.c
index b882ff706..941ad0743 100644
--- a/libX11/src/xcms/StCol.c
+++ b/libX11/src/xcms/StCol.c
@@ -1,82 +1,82 @@
-
-/*
- * Code and supporting documentation (c) Copyright 1990 1991 Tektronix, Inc.
- * All Rights Reserved
- *
- * This file is a component of an X Window System-specific implementation
- * of Xcms based on the TekColor Color Management System. Permission is
- * hereby granted to use, copy, modify, sell, and otherwise distribute this
- * software and its documentation for any purpose and without fee, provided
- * that this copyright, permission, and disclaimer notice is reproduced in
- * all copies of this software and in supporting documentation. TekColor
- * is a trademark of Tektronix, Inc.
- *
- * Tektronix makes no representation about the suitability of this software
- * for any purpose. It is provided "as is" and with all faults.
- *
- * TEKTRONIX DISCLAIMS ALL WARRANTIES APPLICABLE TO THIS SOFTWARE,
- * INCLUDING THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE. IN NO EVENT SHALL TEKTRONIX BE LIABLE FOR ANY
- * SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER
- * RESULTING FROM LOSS OF USE, DATA, OR PROFITS, WHETHER IN AN ACTION OF
- * CONTRACT, NEGLIGENCE, OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
- * CONNECTION WITH THE USE OR THE PERFORMANCE OF THIS SOFTWARE.
- *
- *
- * NAME
- * XcmsStCol.c
- *
- * DESCRIPTION
- * Source for XcmsStoreColor
- *
- *
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-#include "Xcmsint.h"
-#include "Cv.h"
-
-
-/************************************************************************
- * *
- * PUBLIC ROUTINES *
- * *
- ************************************************************************/
-
-/*
- * NAME
- * XcmsStoreColor - Store Color
- *
- * SYNOPSIS
- */
-Status
-XcmsStoreColor(
- Display *dpy,
- Colormap colormap,
- XcmsColor *pColor_in)
-/*
- * DESCRIPTION
- * Given a device-dependent or device-independent color
- * specification, this routine will convert it to X RGB
- * values then use it in a call to XStoreColor.
- *
- * RETURNS
- * XcmsFailure if failed;
- * XcmsSuccess if it succeeded without gamut compression;
- * XcmsSuccessWithCompression if it succeeded with gamut
- * compression;
- *
- * Since XStoreColor has no return value this routine
- * does not return the color specification of the color actually
- * stored.
- */
-{
- XcmsColor tmpColor;
-
- tmpColor = *pColor_in;
- return(_XcmsSetGetColor(XStoreColor, dpy, colormap,
- &tmpColor, XcmsRGBFormat, (Bool *) NULL));
-}
+
+/*
+ * Code and supporting documentation (c) Copyright 1990 1991 Tektronix, Inc.
+ * All Rights Reserved
+ *
+ * This file is a component of an X Window System-specific implementation
+ * of Xcms based on the TekColor Color Management System. Permission is
+ * hereby granted to use, copy, modify, sell, and otherwise distribute this
+ * software and its documentation for any purpose and without fee, provided
+ * that this copyright, permission, and disclaimer notice is reproduced in
+ * all copies of this software and in supporting documentation. TekColor
+ * is a trademark of Tektronix, Inc.
+ *
+ * Tektronix makes no representation about the suitability of this software
+ * for any purpose. It is provided "as is" and with all faults.
+ *
+ * TEKTRONIX DISCLAIMS ALL WARRANTIES APPLICABLE TO THIS SOFTWARE,
+ * INCLUDING THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+ * PARTICULAR PURPOSE. IN NO EVENT SHALL TEKTRONIX BE LIABLE FOR ANY
+ * SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER
+ * RESULTING FROM LOSS OF USE, DATA, OR PROFITS, WHETHER IN AN ACTION OF
+ * CONTRACT, NEGLIGENCE, OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
+ * CONNECTION WITH THE USE OR THE PERFORMANCE OF THIS SOFTWARE.
+ *
+ *
+ * NAME
+ * XcmsStCol.c
+ *
+ * DESCRIPTION
+ * Source for XcmsStoreColor
+ *
+ *
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+#include "Xcmsint.h"
+#include "Cv.h"
+
+
+/************************************************************************
+ * *
+ * PUBLIC ROUTINES *
+ * *
+ ************************************************************************/
+
+/*
+ * NAME
+ * XcmsStoreColor - Store Color
+ *
+ * SYNOPSIS
+ */
+Status
+XcmsStoreColor(
+ Display *dpy,
+ Colormap colormap,
+ XcmsColor *pColor_in)
+/*
+ * DESCRIPTION
+ * Given a device-dependent or device-independent color
+ * specification, this routine will convert it to X RGB
+ * values then use it in a call to XStoreColor.
+ *
+ * RETURNS
+ * XcmsFailure if failed;
+ * XcmsSuccess if it succeeded without gamut compression;
+ * XcmsSuccessWithCompression if it succeeded with gamut
+ * compression;
+ *
+ * Since XStoreColor has no return value this routine
+ * does not return the color specification of the color actually
+ * stored.
+ */
+{
+ XcmsColor tmpColor;
+
+ tmpColor = *pColor_in;
+ return(_XcmsSetGetColor(XStoreColor, dpy, colormap,
+ &tmpColor, XcmsRGBFormat, (Bool *) NULL));
+}
diff --git a/libX11/src/xcms/StCols.c b/libX11/src/xcms/StCols.c
index 01ad78115..24ccd386f 100644
--- a/libX11/src/xcms/StCols.c
+++ b/libX11/src/xcms/StCols.c
@@ -1,112 +1,112 @@
-
-/*
- * Code and supporting documentation (c) Copyright 1990 1991 Tektronix, Inc.
- * All Rights Reserved
- *
- * This file is a component of an X Window System-specific implementation
- * of Xcms based on the TekColor Color Management System. Permission is
- * hereby granted to use, copy, modify, sell, and otherwise distribute this
- * software and its documentation for any purpose and without fee, provided
- * that this copyright, permission, and disclaimer notice is reproduced in
- * all copies of this software and in supporting documentation. TekColor
- * is a trademark of Tektronix, Inc.
- *
- * Tektronix makes no representation about the suitability of this software
- * for any purpose. It is provided "as is" and with all faults.
- *
- * TEKTRONIX DISCLAIMS ALL WARRANTIES APPLICABLE TO THIS SOFTWARE,
- * INCLUDING THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE. IN NO EVENT SHALL TEKTRONIX BE LIABLE FOR ANY
- * SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER
- * RESULTING FROM LOSS OF USE, DATA, OR PROFITS, WHETHER IN AN ACTION OF
- * CONTRACT, NEGLIGENCE, OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
- * CONNECTION WITH THE USE OR THE PERFORMANCE OF THIS SOFTWARE.
- *
- *
- * NAME
- * XcmsStCols.c
- *
- * DESCRIPTION
- * Source for XcmsStoreColors
- *
- *
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-#include "Xcmsint.h"
-#include "Cv.h"
-
-
-/************************************************************************
- * *
- * PUBLIC ROUTINES *
- * *
- ************************************************************************/
-
-/*
- * NAME
- * XcmsStoreColors - Store Colors
- *
- * SYNOPSIS
- */
-Status
-XcmsStoreColors(
- Display *dpy,
- Colormap colormap,
- XcmsColor *pColors_in,
- unsigned int nColors,
- Bool *pCompressed)
-/*
- * DESCRIPTION
- * Given device-dependent or device-independent color
- * specifications, this routine will convert them to X RGB
- * values then use it in a call to XStoreColors.
- *
- * RETURNS
- * XcmsFailure if failed;
- * XcmsSuccess if it succeeded without gamut compression;
- * XcmsSuccessWithCompression if it succeeded with gamut
- * compression;
- *
- * Since XStoreColors has no return value, this routine
- * does not return color specifications of the colors actually
- * stored.
- */
-{
- XcmsColor Color1;
- XcmsColor *pColors_tmp;
- Status retval;
-
- /*
- * Make copy of array of color specifications so we don't
- * overwrite the contents.
- */
- if (nColors > 1) {
- pColors_tmp = (XcmsColor *) Xmalloc(nColors * sizeof(XcmsColor));
- } else {
- pColors_tmp = &Color1;
- }
- memcpy((char *)pColors_tmp, (char *)pColors_in,
- nColors * sizeof(XcmsColor));
-
- /*
- * Call routine to store colors using the copied color structures
- */
- retval = _XcmsSetGetColors (XStoreColors, dpy, colormap,
- pColors_tmp, nColors, XcmsRGBFormat, pCompressed);
-
- /*
- * Free copies as needed.
- */
- if (nColors > 1) {
- Xfree((char *)pColors_tmp);
- }
-
- /*
- * Ah, finally return.
- */
- return(retval);
-}
+
+/*
+ * Code and supporting documentation (c) Copyright 1990 1991 Tektronix, Inc.
+ * All Rights Reserved
+ *
+ * This file is a component of an X Window System-specific implementation
+ * of Xcms based on the TekColor Color Management System. Permission is
+ * hereby granted to use, copy, modify, sell, and otherwise distribute this
+ * software and its documentation for any purpose and without fee, provided
+ * that this copyright, permission, and disclaimer notice is reproduced in
+ * all copies of this software and in supporting documentation. TekColor
+ * is a trademark of Tektronix, Inc.
+ *
+ * Tektronix makes no representation about the suitability of this software
+ * for any purpose. It is provided "as is" and with all faults.
+ *
+ * TEKTRONIX DISCLAIMS ALL WARRANTIES APPLICABLE TO THIS SOFTWARE,
+ * INCLUDING THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+ * PARTICULAR PURPOSE. IN NO EVENT SHALL TEKTRONIX BE LIABLE FOR ANY
+ * SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER
+ * RESULTING FROM LOSS OF USE, DATA, OR PROFITS, WHETHER IN AN ACTION OF
+ * CONTRACT, NEGLIGENCE, OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
+ * CONNECTION WITH THE USE OR THE PERFORMANCE OF THIS SOFTWARE.
+ *
+ *
+ * NAME
+ * XcmsStCols.c
+ *
+ * DESCRIPTION
+ * Source for XcmsStoreColors
+ *
+ *
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+#include "Xcmsint.h"
+#include "Cv.h"
+
+
+/************************************************************************
+ * *
+ * PUBLIC ROUTINES *
+ * *
+ ************************************************************************/
+
+/*
+ * NAME
+ * XcmsStoreColors - Store Colors
+ *
+ * SYNOPSIS
+ */
+Status
+XcmsStoreColors(
+ Display *dpy,
+ Colormap colormap,
+ XcmsColor *pColors_in,
+ unsigned int nColors,
+ Bool *pCompressed)
+/*
+ * DESCRIPTION
+ * Given device-dependent or device-independent color
+ * specifications, this routine will convert them to X RGB
+ * values then use it in a call to XStoreColors.
+ *
+ * RETURNS
+ * XcmsFailure if failed;
+ * XcmsSuccess if it succeeded without gamut compression;
+ * XcmsSuccessWithCompression if it succeeded with gamut
+ * compression;
+ *
+ * Since XStoreColors has no return value, this routine
+ * does not return color specifications of the colors actually
+ * stored.
+ */
+{
+ XcmsColor Color1;
+ XcmsColor *pColors_tmp;
+ Status retval;
+
+ /*
+ * Make copy of array of color specifications so we don't
+ * overwrite the contents.
+ */
+ if (nColors > 1) {
+ pColors_tmp = (XcmsColor *) Xmalloc(nColors * sizeof(XcmsColor));
+ } else {
+ pColors_tmp = &Color1;
+ }
+ memcpy((char *)pColors_tmp, (char *)pColors_in,
+ nColors * sizeof(XcmsColor));
+
+ /*
+ * Call routine to store colors using the copied color structures
+ */
+ retval = _XcmsSetGetColors (XStoreColors, dpy, colormap,
+ pColors_tmp, nColors, XcmsRGBFormat, pCompressed);
+
+ /*
+ * Free copies as needed.
+ */
+ if (nColors > 1) {
+ Xfree((char *)pColors_tmp);
+ }
+
+ /*
+ * Ah, finally return.
+ */
+ return(retval);
+}
diff --git a/libX11/src/xcms/UNDEFINED.c b/libX11/src/xcms/UNDEFINED.c
index d7a3631fc..7b1bdb68c 100644
--- a/libX11/src/xcms/UNDEFINED.c
+++ b/libX11/src/xcms/UNDEFINED.c
@@ -1,131 +1,131 @@
-
-/*
- * Code and supporting documentation (c) Copyright 1990 1991 Tektronix, Inc.
- * All Rights Reserved
- *
- * This file is a component of an X Window System-specific implementation
- * of Xcms based on the TekColor Color Management System. Permission is
- * hereby granted to use, copy, modify, sell, and otherwise distribute this
- * software and its documentation for any purpose and without fee, provided
- * that this copyright, permission, and disclaimer notice is reproduced in
- * all copies of this software and in supporting documentation. TekColor
- * is a trademark of Tektronix, Inc.
- *
- * Tektronix makes no representation about the suitability of this software
- * for any purpose. It is provided "as is" and with all faults.
- *
- * TEKTRONIX DISCLAIMS ALL WARRANTIES APPLICABLE TO THIS SOFTWARE,
- * INCLUDING THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE. IN NO EVENT SHALL TEKTRONIX BE LIABLE FOR ANY
- * SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER
- * RESULTING FROM LOSS OF USE, DATA, OR PROFITS, WHETHER IN AN ACTION OF
- * CONTRACT, NEGLIGENCE, OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
- * CONNECTION WITH THE USE OR THE PERFORMANCE OF THIS SOFTWARE.
- *
- *
- *
- * NAME
- * UNDEFINED.c
- *
- * DESCRIPTION
- * UNDEFINED Color Space
- *
- *
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-#include "Xcmsint.h"
-
-/*
- * FORWARD DECLARATIONS
- */
-static int DummyParseStringProc(
- char* /* color_string */,
- XcmsColor* /* color_return */
- );
-static Status ReturnZero(
- XcmsCCC /* ccc */,
- XcmsColor* /* white_point */,
- XcmsColor* /* colors */,
- unsigned int /* ncolors */
- );
-
-
-/*
- * LOCALS VARIABLES
- */
-
-static Status (*(Fl_ReturnZero[]))(
- XcmsCCC /* ccc */,
- XcmsColor* /* white_point */,
- XcmsColor* /* colors */,
- unsigned int /* ncolors */
- ) = {
- ReturnZero,
- NULL
-};
-
-
-/*
- * GLOBALS
- * Variables declared in this package that are allowed
- * to be used globally.
- */
- /*
- * UNDEFINED Color Space
- */
-XcmsColorSpace XcmsUNDEFINEDColorSpace =
- {
- "undefined", /* prefix */
- XcmsUndefinedFormat, /* id */
- &DummyParseStringProc, /* parseString */
- Fl_ReturnZero, /* to_CIEXYZ */
- Fl_ReturnZero /* from_CIEXYZ */
- };
-
-
-
-/************************************************************************
- * *
- * PRIVATE ROUTINES *
- * *
- ************************************************************************/
-
-/*
- * NAME
- * ReturnZero
- *
- * SYNOPSIS
- */
-/* ARGSUSED */
-static Status
-ReturnZero(
- XcmsCCC ccc /* ccc */,
- XcmsColor* white /* white_point */,
- XcmsColor* colors /* colors */,
- unsigned int ncolors /* ncolors */
- )
-/*
- * DESCRIPTION
- * Does nothing.
- *
- * RETURNS
- * 0
- *
- */
-{
- return(0);
-}
-
-static int DummyParseStringProc(
- char* color_string /* color_string */,
- XcmsColor* color_return /* color_return */
- )
-{
- return(0);
-}
-
-/* ### EOF ### */
+
+/*
+ * Code and supporting documentation (c) Copyright 1990 1991 Tektronix, Inc.
+ * All Rights Reserved
+ *
+ * This file is a component of an X Window System-specific implementation
+ * of Xcms based on the TekColor Color Management System. Permission is
+ * hereby granted to use, copy, modify, sell, and otherwise distribute this
+ * software and its documentation for any purpose and without fee, provided
+ * that this copyright, permission, and disclaimer notice is reproduced in
+ * all copies of this software and in supporting documentation. TekColor
+ * is a trademark of Tektronix, Inc.
+ *
+ * Tektronix makes no representation about the suitability of this software
+ * for any purpose. It is provided "as is" and with all faults.
+ *
+ * TEKTRONIX DISCLAIMS ALL WARRANTIES APPLICABLE TO THIS SOFTWARE,
+ * INCLUDING THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+ * PARTICULAR PURPOSE. IN NO EVENT SHALL TEKTRONIX BE LIABLE FOR ANY
+ * SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER
+ * RESULTING FROM LOSS OF USE, DATA, OR PROFITS, WHETHER IN AN ACTION OF
+ * CONTRACT, NEGLIGENCE, OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
+ * CONNECTION WITH THE USE OR THE PERFORMANCE OF THIS SOFTWARE.
+ *
+ *
+ *
+ * NAME
+ * UNDEFINED.c
+ *
+ * DESCRIPTION
+ * UNDEFINED Color Space
+ *
+ *
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+#include "Xcmsint.h"
+
+/*
+ * FORWARD DECLARATIONS
+ */
+static int DummyParseStringProc(
+ char* /* color_string */,
+ XcmsColor* /* color_return */
+ );
+static Status ReturnZero(
+ XcmsCCC /* ccc */,
+ XcmsColor* /* white_point */,
+ XcmsColor* /* colors */,
+ unsigned int /* ncolors */
+ );
+
+
+/*
+ * LOCALS VARIABLES
+ */
+
+static Status (*(Fl_ReturnZero[]))(
+ XcmsCCC /* ccc */,
+ XcmsColor* /* white_point */,
+ XcmsColor* /* colors */,
+ unsigned int /* ncolors */
+ ) = {
+ ReturnZero,
+ NULL
+};
+
+
+/*
+ * GLOBALS
+ * Variables declared in this package that are allowed
+ * to be used globally.
+ */
+ /*
+ * UNDEFINED Color Space
+ */
+XcmsColorSpace XcmsUNDEFINEDColorSpace =
+ {
+ "undefined", /* prefix */
+ XcmsUndefinedFormat, /* id */
+ &DummyParseStringProc, /* parseString */
+ Fl_ReturnZero, /* to_CIEXYZ */
+ Fl_ReturnZero /* from_CIEXYZ */
+ };
+
+
+
+/************************************************************************
+ * *
+ * PRIVATE ROUTINES *
+ * *
+ ************************************************************************/
+
+/*
+ * NAME
+ * ReturnZero
+ *
+ * SYNOPSIS
+ */
+/* ARGSUSED */
+static Status
+ReturnZero(
+ XcmsCCC ccc /* ccc */,
+ XcmsColor* white /* white_point */,
+ XcmsColor* colors /* colors */,
+ unsigned int ncolors /* ncolors */
+ )
+/*
+ * DESCRIPTION
+ * Does nothing.
+ *
+ * RETURNS
+ * 0
+ *
+ */
+{
+ return(0);
+}
+
+static int DummyParseStringProc(
+ char* color_string /* color_string */,
+ XcmsColor* color_return /* color_return */
+ )
+{
+ return(0);
+}
+
+/* ### EOF ### */
diff --git a/libX11/src/xcms/XRGB.c b/libX11/src/xcms/XRGB.c
index d9db8c074..03f980e99 100644
--- a/libX11/src/xcms/XRGB.c
+++ b/libX11/src/xcms/XRGB.c
@@ -1,242 +1,242 @@
-
-/*
- * Code and supporting documentation (c) Copyright 1990 1991 Tektronix, Inc.
- * All Rights Reserved
- *
- * This file is a component of an X Window System-specific implementation
- * of Xcms based on the TekColor Color Management System. Permission is
- * hereby granted to use, copy, modify, sell, and otherwise distribute this
- * software and its documentation for any purpose and without fee, provided
- * that this copyright, permission, and disclaimer notice is reproduced in
- * all copies of this software and in supporting documentation. TekColor
- * is a trademark of Tektronix, Inc.
- *
- * Tektronix makes no representation about the suitability of this software
- * for any purpose. It is provided "as is" and with all faults.
- *
- * TEKTRONIX DISCLAIMS ALL WARRANTIES APPLICABLE TO THIS SOFTWARE,
- * INCLUDING THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE. IN NO EVENT SHALL TEKTRONIX BE LIABLE FOR ANY
- * SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER
- * RESULTING FROM LOSS OF USE, DATA, OR PROFITS, WHETHER IN AN ACTION OF
- * CONTRACT, NEGLIGENCE, OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
- * CONNECTION WITH THE USE OR THE PERFORMANCE OF THIS SOFTWARE.
- *
- *
- * NAME
- * XcmsRtoX.c
- *
- * DESCRIPTION
- * Convert color specifications in XcmsRGB format in one array of
- * XcmsColor structures to RGB in an array of XColor structures.
- *
- *
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-#include "Xcmsint.h"
-#include "Cv.h"
-
-/*
- * LOCAL VARIABLES
- */
-
-static unsigned short const MASK[17] = {
- 0x0000, /* 0 bitsPerRGB */
- 0x8000, /* 1 bitsPerRGB */
- 0xc000, /* 2 bitsPerRGB */
- 0xe000, /* 3 bitsPerRGB */
- 0xf000, /* 4 bitsPerRGB */
- 0xf800, /* 5 bitsPerRGB */
- 0xfc00, /* 6 bitsPerRGB */
- 0xfe00, /* 7 bitsPerRGB */
- 0xff00, /* 8 bitsPerRGB */
- 0xff80, /* 9 bitsPerRGB */
- 0xffc0, /* 10 bitsPerRGB */
- 0xffe0, /* 11 bitsPerRGB */
- 0xfff0, /* 12 bitsPerRGB */
- 0xfff8, /* 13 bitsPerRGB */
- 0xfffc, /* 14 bitsPerRGB */
- 0xfffe, /* 15 bitsPerRGB */
- 0xffff /* 16 bitsPerRGB */
-};
-
-
-
-/************************************************************************
- * *
- * API PRIVATE ROUTINES *
- * *
- ************************************************************************/
-
-/*
- * NAME
- * _XcmsRGB_to_XColor -
- *
- * SYNOPSIS
- */
-void
-_XcmsRGB_to_XColor(
- XcmsColor *pColors,
- XColor *pXColors,
- unsigned int nColors)
-/*
- * DESCRIPTION
- * Translates a color specification in XcmsRGBFormat in a XcmsColor
- * structure to an XColor structure.
- *
- * RETURNS
- * void.
- */
-{
- for (; nColors--; pXColors++, pColors++) {
- pXColors->pixel = pColors->pixel;
- pXColors->red = pColors->spec.RGB.red;
- pXColors->green = pColors->spec.RGB.green;
- pXColors->blue = pColors->spec.RGB.blue;
- pXColors->flags = (DoRed | DoGreen | DoBlue);
- }
-}
-
-
-/*
- * NAME
- * _XColor_to_XcmsRGB
- *
- * SYNOPSIS
- */
-void
-_XColor_to_XcmsRGB(
- XcmsCCC ccc,
- XColor *pXColors,
- XcmsColor *pColors,
- unsigned int nColors)
-/*
- * DESCRIPTION
- * Translates an RGB color specification in an XColor
- * structure to an XcmsRGB structure.
- *
- * IMPORTANT NOTE: Bit replication that may have been caused
- * with ResolveColor() routine in the X Server is undone
- * here if requested! For example, if red = 0xcaca and the
- * bits_per_rgb is 8, then spec.RGB.red will be 0xca00.
- *
- * RETURNS
- * void
- */
-{
- int bits_per_rgb = ccc->visual->bits_per_rgb;
-
- for (; nColors--; pXColors++, pColors++) {
- pColors->spec.RGB.red = (pXColors->red & MASK[bits_per_rgb]);
- pColors->spec.RGB.green = (pXColors->green & MASK[bits_per_rgb]);
- pColors->spec.RGB.blue = (pXColors->blue & MASK[bits_per_rgb]);
- pColors->format = XcmsRGBFormat;
- pColors->pixel = pXColors->pixel;
- }
-}
-
-
-/*
- * NAME
- * _XcmsResolveColor
- *
- * SYNOPSIS
- */
-void
-_XcmsResolveColor(
- XcmsCCC ccc,
- XcmsColor *pXcmsColor)
-/*
- * DESCRIPTION
- * Uses the X Server ResolveColor() algorithm to
- * modify values to closest values supported by hardware.
- * Old algorithm simply masked low-order bits. The new algorithm
- * has the effect of replicating significant bits into lower order
- * bits in order to stretch the hardware value into all 16 bits.
- *
- * On a display with N-bit DACs, the "hardware" color is computed as:
- *
- * ((unsignedlong)(ClientValue >> (16-N)) * 0xFFFF) / ((1 << N) - 1)
- *
- *
- * RETURNS
- * void.
- */
-{
- int shift;
- int max_color;
-
- shift = 16 - ccc->visual->bits_per_rgb;
- max_color = (1 << ccc->visual->bits_per_rgb) - 1;
-
-
- pXcmsColor->spec.RGB.red =
- ((unsigned long)(pXcmsColor->spec.RGB.red >> shift) * 0xFFFF)
- / max_color;
- pXcmsColor->spec.RGB.green =
- ((unsigned long)(pXcmsColor->spec.RGB.green >> shift) * 0xFFFF)
- / max_color;
- pXcmsColor->spec.RGB.blue =
- ((unsigned long)(pXcmsColor->spec.RGB.blue >> shift) * 0xFFFF)
- / max_color;
-}
-
-
-/*
- * NAME
- * _XcmsUnresolveColor
- *
- * SYNOPSIS
- */
-void
-_XcmsUnresolveColor(
- XcmsCCC ccc,
- XcmsColor *pColor)
-/*
- * DESCRIPTION
- * Masks out insignificant bits.
- *
- * RETURNS
- * void.
- *
- * ASSUMPTIONS
- * format == XcmsRGBFormat
- */
-{
- int bits_per_rgb = ccc->visual->bits_per_rgb;
-
- pColor->spec.RGB.red &= MASK[bits_per_rgb];
- pColor->spec.RGB.green &= MASK[bits_per_rgb];
- pColor->spec.RGB.blue &= MASK[bits_per_rgb];
-}
-
-
-/*
- * NAME
- * _XUnresolveColor
- *
- * SYNOPSIS
- */
-void
-_XUnresolveColor(
- XcmsCCC ccc,
- XColor *pXColor)
-/*
- * DESCRIPTION
- * Masks out insignificant bits.
- *
- * RETURNS
- * void.
- */
-{
- int bits_per_rgb = ccc->visual->bits_per_rgb;
-
- pXColor->red &= MASK[bits_per_rgb];
- pXColor->green &= MASK[bits_per_rgb];
- pXColor->blue &= MASK[bits_per_rgb];
-}
-
+
+/*
+ * Code and supporting documentation (c) Copyright 1990 1991 Tektronix, Inc.
+ * All Rights Reserved
+ *
+ * This file is a component of an X Window System-specific implementation
+ * of Xcms based on the TekColor Color Management System. Permission is
+ * hereby granted to use, copy, modify, sell, and otherwise distribute this
+ * software and its documentation for any purpose and without fee, provided
+ * that this copyright, permission, and disclaimer notice is reproduced in
+ * all copies of this software and in supporting documentation. TekColor
+ * is a trademark of Tektronix, Inc.
+ *
+ * Tektronix makes no representation about the suitability of this software
+ * for any purpose. It is provided "as is" and with all faults.
+ *
+ * TEKTRONIX DISCLAIMS ALL WARRANTIES APPLICABLE TO THIS SOFTWARE,
+ * INCLUDING THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+ * PARTICULAR PURPOSE. IN NO EVENT SHALL TEKTRONIX BE LIABLE FOR ANY
+ * SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER
+ * RESULTING FROM LOSS OF USE, DATA, OR PROFITS, WHETHER IN AN ACTION OF
+ * CONTRACT, NEGLIGENCE, OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
+ * CONNECTION WITH THE USE OR THE PERFORMANCE OF THIS SOFTWARE.
+ *
+ *
+ * NAME
+ * XcmsRtoX.c
+ *
+ * DESCRIPTION
+ * Convert color specifications in XcmsRGB format in one array of
+ * XcmsColor structures to RGB in an array of XColor structures.
+ *
+ *
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+#include "Xcmsint.h"
+#include "Cv.h"
+
+/*
+ * LOCAL VARIABLES
+ */
+
+static unsigned short const MASK[17] = {
+ 0x0000, /* 0 bitsPerRGB */
+ 0x8000, /* 1 bitsPerRGB */
+ 0xc000, /* 2 bitsPerRGB */
+ 0xe000, /* 3 bitsPerRGB */
+ 0xf000, /* 4 bitsPerRGB */
+ 0xf800, /* 5 bitsPerRGB */
+ 0xfc00, /* 6 bitsPerRGB */
+ 0xfe00, /* 7 bitsPerRGB */
+ 0xff00, /* 8 bitsPerRGB */
+ 0xff80, /* 9 bitsPerRGB */
+ 0xffc0, /* 10 bitsPerRGB */
+ 0xffe0, /* 11 bitsPerRGB */
+ 0xfff0, /* 12 bitsPerRGB */
+ 0xfff8, /* 13 bitsPerRGB */
+ 0xfffc, /* 14 bitsPerRGB */
+ 0xfffe, /* 15 bitsPerRGB */
+ 0xffff /* 16 bitsPerRGB */
+};
+
+
+
+/************************************************************************
+ * *
+ * API PRIVATE ROUTINES *
+ * *
+ ************************************************************************/
+
+/*
+ * NAME
+ * _XcmsRGB_to_XColor -
+ *
+ * SYNOPSIS
+ */
+void
+_XcmsRGB_to_XColor(
+ XcmsColor *pColors,
+ XColor *pXColors,
+ unsigned int nColors)
+/*
+ * DESCRIPTION
+ * Translates a color specification in XcmsRGBFormat in a XcmsColor
+ * structure to an XColor structure.
+ *
+ * RETURNS
+ * void.
+ */
+{
+ for (; nColors--; pXColors++, pColors++) {
+ pXColors->pixel = pColors->pixel;
+ pXColors->red = pColors->spec.RGB.red;
+ pXColors->green = pColors->spec.RGB.green;
+ pXColors->blue = pColors->spec.RGB.blue;
+ pXColors->flags = (DoRed | DoGreen | DoBlue);
+ }
+}
+
+
+/*
+ * NAME
+ * _XColor_to_XcmsRGB
+ *
+ * SYNOPSIS
+ */
+void
+_XColor_to_XcmsRGB(
+ XcmsCCC ccc,
+ XColor *pXColors,
+ XcmsColor *pColors,
+ unsigned int nColors)
+/*
+ * DESCRIPTION
+ * Translates an RGB color specification in an XColor
+ * structure to an XcmsRGB structure.
+ *
+ * IMPORTANT NOTE: Bit replication that may have been caused
+ * with ResolveColor() routine in the X Server is undone
+ * here if requested! For example, if red = 0xcaca and the
+ * bits_per_rgb is 8, then spec.RGB.red will be 0xca00.
+ *
+ * RETURNS
+ * void
+ */
+{
+ int bits_per_rgb = ccc->visual->bits_per_rgb;
+
+ for (; nColors--; pXColors++, pColors++) {
+ pColors->spec.RGB.red = (pXColors->red & MASK[bits_per_rgb]);
+ pColors->spec.RGB.green = (pXColors->green & MASK[bits_per_rgb]);
+ pColors->spec.RGB.blue = (pXColors->blue & MASK[bits_per_rgb]);
+ pColors->format = XcmsRGBFormat;
+ pColors->pixel = pXColors->pixel;
+ }
+}
+
+
+/*
+ * NAME
+ * _XcmsResolveColor
+ *
+ * SYNOPSIS
+ */
+void
+_XcmsResolveColor(
+ XcmsCCC ccc,
+ XcmsColor *pXcmsColor)
+/*
+ * DESCRIPTION
+ * Uses the X Server ResolveColor() algorithm to
+ * modify values to closest values supported by hardware.
+ * Old algorithm simply masked low-order bits. The new algorithm
+ * has the effect of replicating significant bits into lower order
+ * bits in order to stretch the hardware value into all 16 bits.
+ *
+ * On a display with N-bit DACs, the "hardware" color is computed as:
+ *
+ * ((unsignedlong)(ClientValue >> (16-N)) * 0xFFFF) / ((1 << N) - 1)
+ *
+ *
+ * RETURNS
+ * void.
+ */
+{
+ int shift;
+ int max_color;
+
+ shift = 16 - ccc->visual->bits_per_rgb;
+ max_color = (1 << ccc->visual->bits_per_rgb) - 1;
+
+
+ pXcmsColor->spec.RGB.red =
+ ((unsigned long)(pXcmsColor->spec.RGB.red >> shift) * 0xFFFF)
+ / max_color;
+ pXcmsColor->spec.RGB.green =
+ ((unsigned long)(pXcmsColor->spec.RGB.green >> shift) * 0xFFFF)
+ / max_color;
+ pXcmsColor->spec.RGB.blue =
+ ((unsigned long)(pXcmsColor->spec.RGB.blue >> shift) * 0xFFFF)
+ / max_color;
+}
+
+
+/*
+ * NAME
+ * _XcmsUnresolveColor
+ *
+ * SYNOPSIS
+ */
+void
+_XcmsUnresolveColor(
+ XcmsCCC ccc,
+ XcmsColor *pColor)
+/*
+ * DESCRIPTION
+ * Masks out insignificant bits.
+ *
+ * RETURNS
+ * void.
+ *
+ * ASSUMPTIONS
+ * format == XcmsRGBFormat
+ */
+{
+ int bits_per_rgb = ccc->visual->bits_per_rgb;
+
+ pColor->spec.RGB.red &= MASK[bits_per_rgb];
+ pColor->spec.RGB.green &= MASK[bits_per_rgb];
+ pColor->spec.RGB.blue &= MASK[bits_per_rgb];
+}
+
+
+/*
+ * NAME
+ * _XUnresolveColor
+ *
+ * SYNOPSIS
+ */
+void
+_XUnresolveColor(
+ XcmsCCC ccc,
+ XColor *pXColor)
+/*
+ * DESCRIPTION
+ * Masks out insignificant bits.
+ *
+ * RETURNS
+ * void.
+ */
+{
+ int bits_per_rgb = ccc->visual->bits_per_rgb;
+
+ pXColor->red &= MASK[bits_per_rgb];
+ pXColor->green &= MASK[bits_per_rgb];
+ pXColor->blue &= MASK[bits_per_rgb];
+}
+
diff --git a/libX11/src/xcms/XYZ.c b/libX11/src/xcms/XYZ.c
index 82215478b..40d6ed3bb 100644
--- a/libX11/src/xcms/XYZ.c
+++ b/libX11/src/xcms/XYZ.c
@@ -1,203 +1,203 @@
-
-/*
- * Code and supporting documentation (c) Copyright 1990 1991 Tektronix, Inc.
- * All Rights Reserved
- *
- * This file is a component of an X Window System-specific implementation
- * of XCMS based on the TekColor Color Management System. Permission is
- * hereby granted to use, copy, modify, sell, and otherwise distribute this
- * software and its documentation for any purpose and without fee, provided
- * that this copyright, permission, and disclaimer notice is reproduced in
- * all copies of this software and in supporting documentation. TekColor
- * is a trademark of Tektronix, Inc.
- *
- * Tektronix makes no representation about the suitability of this software
- * for any purpose. It is provided "as is" and with all faults.
- *
- * TEKTRONIX DISCLAIMS ALL WARRANTIES APPLICABLE TO THIS SOFTWARE,
- * INCLUDING THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE. IN NO EVENT SHALL TEKTRONIX BE LIABLE FOR ANY
- * SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER
- * RESULTING FROM LOSS OF USE, DATA, OR PROFITS, WHETHER IN AN ACTION OF
- * CONTRACT, NEGLIGENCE, OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
- * CONNECTION WITH THE USE OR THE PERFORMANCE OF THIS SOFTWARE.
- *
- *
- *
- * NAME
- * CIEXYZ.c
- *
- * DESCRIPTION
- * CIE XYZ Color Space
- *
- *
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include <X11/Xos.h>
-#include "Xlibint.h"
-#include "Xcmsint.h"
-#include "Cv.h"
-
-#include <stdio.h> /* sscanf */
-
-/*
- * DEFINES
- * Internal definitions that need NOT be exported to any package
- * or program using this package.
- */
-#ifdef DBL_EPSILON
-# define XMY_DBL_EPSILON DBL_EPSILON
-#else
-# define XMY_DBL_EPSILON 0.00001
-#endif
-
-/*
- * FORWARD DECLARATIONS
- */
-static int CIEXYZ_ParseString(register char *spec, XcmsColor *pColor);
-
-/*
- * LOCALS VARIABLES
- */
-
-static XcmsConversionProc Fl_CIEXYZ_to_CIEXYZ[] = {
- NULL
-};
-
-
-
-/*
- * GLOBALS
- * Variables declared in this package that are allowed
- * to be used globally.
- */
- /*
- * CIE XYZ Color Space
- */
-XcmsColorSpace XcmsCIEXYZColorSpace =
- {
- _XcmsCIEXYZ_prefix, /* prefix */
- XcmsCIEXYZFormat, /* id */
- CIEXYZ_ParseString, /* parseString */
- Fl_CIEXYZ_to_CIEXYZ, /* to_CIEXYZ */
- Fl_CIEXYZ_to_CIEXYZ, /* from_CIEXYZ */
- 1
- };
-
-
-/************************************************************************
- * *
- * PRIVATE ROUTINES *
- * *
- ************************************************************************/
-
-/*
- * NAME
- * CIEXYZ_ParseString
- *
- * SYNOPSIS
- */
-static int
-CIEXYZ_ParseString(
- register char *spec,
- XcmsColor *pColor)
-/*
- * DESCRIPTION
- * This routines takes a string and attempts to convert
- * it into a XcmsColor structure with XcmsCIEXYZFormat.
- * The assumed CIEXYZ string syntax is:
- * CIEXYZ:<X>/<Y>/<Z>
- * Where X, Y, and Z are in string input format for floats
- * consisting of:
- * a. an optional sign
- * b. a string of numbers possibly containing a decimal point,
- * c. an optional exponent field containing an 'E' or 'e'
- * followed by a possibly signed integer string.
- *
- * RETURNS
- */
-{
- int n;
- char *pchar;
-
- if ((pchar = strchr(spec, ':')) == NULL) {
- return(XcmsFailure);
- }
- n = (int)(pchar - spec);
-
- /*
- * Check for proper prefix.
- */
- if (strncmp(spec, _XcmsCIEXYZ_prefix, n) != 0) {
- return(XcmsFailure);
- }
-
- /*
- * Attempt to parse the value portion.
- */
- if (sscanf(spec + n + 1, "%lf/%lf/%lf",
- &pColor->spec.CIEXYZ.X,
- &pColor->spec.CIEXYZ.Y,
- &pColor->spec.CIEXYZ.Z) != 3) {
- char *s; /* Maybe failed due to locale */
- int f;
- if ((s = strdup(spec))) {
- for (f = 0; s[f]; ++f)
- if (s[f] == '.')
- s[f] = ',';
- else if (s[f] == ',')
- s[f] = '.';
- if (sscanf(s + n + 1, "%lf/%lf/%lf",
- &pColor->spec.CIEXYZ.X,
- &pColor->spec.CIEXYZ.Y,
- &pColor->spec.CIEXYZ.Z) != 3) {
- free(s);
- return(XcmsFailure);
- }
- free(s);
- } else
- return(XcmsFailure);
- }
- pColor->format = XcmsCIEXYZFormat;
- pColor->pixel = 0;
- return(_XcmsCIEXYZ_ValidSpec(pColor));
-}
-
-
-/************************************************************************
- * *
- * PUBLIC ROUTINES *
- * *
- ************************************************************************/
-
-/*
- * NAME
- * XcmsCIELab_ValidSpec
- *
- * SYNOPSIS
- */
-Status
-_XcmsCIEXYZ_ValidSpec(
- XcmsColor *pColor)
-/*
- * DESCRIPTION
- * Checks if color specification valid for CIE XYZ
- *
- * RETURNS
- * XcmsFailure if invalid,
- * XcmsSuccess if valid.
- *
- */
-{
- if (pColor->format != XcmsCIEXYZFormat
- ||
- (pColor->spec.CIEXYZ.Y < 0.0 - XMY_DBL_EPSILON)
- ||
- (pColor->spec.CIEXYZ.Y > 1.0 + XMY_DBL_EPSILON)) {
- return(XcmsFailure);
- }
- return(XcmsSuccess);
-}
+
+/*
+ * Code and supporting documentation (c) Copyright 1990 1991 Tektronix, Inc.
+ * All Rights Reserved
+ *
+ * This file is a component of an X Window System-specific implementation
+ * of XCMS based on the TekColor Color Management System. Permission is
+ * hereby granted to use, copy, modify, sell, and otherwise distribute this
+ * software and its documentation for any purpose and without fee, provided
+ * that this copyright, permission, and disclaimer notice is reproduced in
+ * all copies of this software and in supporting documentation. TekColor
+ * is a trademark of Tektronix, Inc.
+ *
+ * Tektronix makes no representation about the suitability of this software
+ * for any purpose. It is provided "as is" and with all faults.
+ *
+ * TEKTRONIX DISCLAIMS ALL WARRANTIES APPLICABLE TO THIS SOFTWARE,
+ * INCLUDING THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+ * PARTICULAR PURPOSE. IN NO EVENT SHALL TEKTRONIX BE LIABLE FOR ANY
+ * SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER
+ * RESULTING FROM LOSS OF USE, DATA, OR PROFITS, WHETHER IN AN ACTION OF
+ * CONTRACT, NEGLIGENCE, OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
+ * CONNECTION WITH THE USE OR THE PERFORMANCE OF THIS SOFTWARE.
+ *
+ *
+ *
+ * NAME
+ * CIEXYZ.c
+ *
+ * DESCRIPTION
+ * CIE XYZ Color Space
+ *
+ *
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include <X11/Xos.h>
+#include "Xlibint.h"
+#include "Xcmsint.h"
+#include "Cv.h"
+
+#include <stdio.h> /* sscanf */
+
+/*
+ * DEFINES
+ * Internal definitions that need NOT be exported to any package
+ * or program using this package.
+ */
+#ifdef DBL_EPSILON
+# define XMY_DBL_EPSILON DBL_EPSILON
+#else
+# define XMY_DBL_EPSILON 0.00001
+#endif
+
+/*
+ * FORWARD DECLARATIONS
+ */
+static int CIEXYZ_ParseString(register char *spec, XcmsColor *pColor);
+
+/*
+ * LOCALS VARIABLES
+ */
+
+static XcmsConversionProc Fl_CIEXYZ_to_CIEXYZ[] = {
+ NULL
+};
+
+
+
+/*
+ * GLOBALS
+ * Variables declared in this package that are allowed
+ * to be used globally.
+ */
+ /*
+ * CIE XYZ Color Space
+ */
+XcmsColorSpace XcmsCIEXYZColorSpace =
+ {
+ _XcmsCIEXYZ_prefix, /* prefix */
+ XcmsCIEXYZFormat, /* id */
+ CIEXYZ_ParseString, /* parseString */
+ Fl_CIEXYZ_to_CIEXYZ, /* to_CIEXYZ */
+ Fl_CIEXYZ_to_CIEXYZ, /* from_CIEXYZ */
+ 1
+ };
+
+
+/************************************************************************
+ * *
+ * PRIVATE ROUTINES *
+ * *
+ ************************************************************************/
+
+/*
+ * NAME
+ * CIEXYZ_ParseString
+ *
+ * SYNOPSIS
+ */
+static int
+CIEXYZ_ParseString(
+ register char *spec,
+ XcmsColor *pColor)
+/*
+ * DESCRIPTION
+ * This routines takes a string and attempts to convert
+ * it into a XcmsColor structure with XcmsCIEXYZFormat.
+ * The assumed CIEXYZ string syntax is:
+ * CIEXYZ:<X>/<Y>/<Z>
+ * Where X, Y, and Z are in string input format for floats
+ * consisting of:
+ * a. an optional sign
+ * b. a string of numbers possibly containing a decimal point,
+ * c. an optional exponent field containing an 'E' or 'e'
+ * followed by a possibly signed integer string.
+ *
+ * RETURNS
+ */
+{
+ int n;
+ char *pchar;
+
+ if ((pchar = strchr(spec, ':')) == NULL) {
+ return(XcmsFailure);
+ }
+ n = (int)(pchar - spec);
+
+ /*
+ * Check for proper prefix.
+ */
+ if (strncmp(spec, _XcmsCIEXYZ_prefix, n) != 0) {
+ return(XcmsFailure);
+ }
+
+ /*
+ * Attempt to parse the value portion.
+ */
+ if (sscanf(spec + n + 1, "%lf/%lf/%lf",
+ &pColor->spec.CIEXYZ.X,
+ &pColor->spec.CIEXYZ.Y,
+ &pColor->spec.CIEXYZ.Z) != 3) {
+ char *s; /* Maybe failed due to locale */
+ int f;
+ if ((s = strdup(spec))) {
+ for (f = 0; s[f]; ++f)
+ if (s[f] == '.')
+ s[f] = ',';
+ else if (s[f] == ',')
+ s[f] = '.';
+ if (sscanf(s + n + 1, "%lf/%lf/%lf",
+ &pColor->spec.CIEXYZ.X,
+ &pColor->spec.CIEXYZ.Y,
+ &pColor->spec.CIEXYZ.Z) != 3) {
+ free(s);
+ return(XcmsFailure);
+ }
+ free(s);
+ } else
+ return(XcmsFailure);
+ }
+ pColor->format = XcmsCIEXYZFormat;
+ pColor->pixel = 0;
+ return(_XcmsCIEXYZ_ValidSpec(pColor));
+}
+
+
+/************************************************************************
+ * *
+ * PUBLIC ROUTINES *
+ * *
+ ************************************************************************/
+
+/*
+ * NAME
+ * XcmsCIELab_ValidSpec
+ *
+ * SYNOPSIS
+ */
+Status
+_XcmsCIEXYZ_ValidSpec(
+ XcmsColor *pColor)
+/*
+ * DESCRIPTION
+ * Checks if color specification valid for CIE XYZ
+ *
+ * RETURNS
+ * XcmsFailure if invalid,
+ * XcmsSuccess if valid.
+ *
+ */
+{
+ if (pColor->format != XcmsCIEXYZFormat
+ ||
+ (pColor->spec.CIEXYZ.Y < 0.0 - XMY_DBL_EPSILON)
+ ||
+ (pColor->spec.CIEXYZ.Y > 1.0 + XMY_DBL_EPSILON)) {
+ return(XcmsFailure);
+ }
+ return(XcmsSuccess);
+}
diff --git a/libX11/src/xcms/Xcms.txt b/libX11/src/xcms/Xcms.txt
index bf302d17f..1c5b1adec 100644
--- a/libX11/src/xcms/Xcms.txt
+++ b/libX11/src/xcms/Xcms.txt
@@ -1,44 +1,44 @@
-/*
- * (c) Copyright 1990 1991 Tektronix Inc.
- * All Rights Reserved
- *
- * Permission to use, copy, modify, and distribute this software and its
- * documentation for any purpose and without fee is hereby granted,
- * provided that the above copyright notice appear in all copies and that
- * both that copyright notice and this permission notice appear in
- * supporting documentation, and that the name of Tektronix not be used
- * in advertising or publicity pertaining to distribution of the software
- * without specific, written prior permission.
- *
- * Tektronix disclaims all warranties with regard to this software, including
- * all implied warranties of merchantability and fitness, in no event shall
- * Tektronix be liable for any special, indirect or consequential damages or
- * any damages whatsoever resulting from loss of use, data or profits,
- * whether in an action of contract, negligence or other tortious action,
- * arising out of or in connection with the use or performance of this
- * software.
- *
- *
- * NAME
- * Xcms.txt
- *
- * DESCRIPTION
- * Sample Color Name Database
- *
- */
-
-
-This device-independent color name database is provided just as an example.
-There are no claims that these color specifications are or should be bound
-to the corresponding color name.
-
-As you can see, the start of the database is indicated by "XCMS_COLORDB_START".
-Anything before this is assumed to be comments. The "0.1" indicates the
-version number of the format/syntax used in this file. The color name is
-delimited from the color specification by one or more tabs.
-
-XCMS_COLORDB_START 0.1
-cms red CIEXYZ:0.3811/0.2073/0.0213
-cms green CIEXYZ:0.3203/0.6805/0.1430
-cms blue CIEXYZ:0.2483/0.1122/1.2417
-XCMS_COLORDB_END
+/*
+ * (c) Copyright 1990 1991 Tektronix Inc.
+ * All Rights Reserved
+ *
+ * Permission to use, copy, modify, and distribute this software and its
+ * documentation for any purpose and without fee is hereby granted,
+ * provided that the above copyright notice appear in all copies and that
+ * both that copyright notice and this permission notice appear in
+ * supporting documentation, and that the name of Tektronix not be used
+ * in advertising or publicity pertaining to distribution of the software
+ * without specific, written prior permission.
+ *
+ * Tektronix disclaims all warranties with regard to this software, including
+ * all implied warranties of merchantability and fitness, in no event shall
+ * Tektronix be liable for any special, indirect or consequential damages or
+ * any damages whatsoever resulting from loss of use, data or profits,
+ * whether in an action of contract, negligence or other tortious action,
+ * arising out of or in connection with the use or performance of this
+ * software.
+ *
+ *
+ * NAME
+ * Xcms.txt
+ *
+ * DESCRIPTION
+ * Sample Color Name Database
+ *
+ */
+
+
+This device-independent color name database is provided just as an example.
+There are no claims that these color specifications are or should be bound
+to the corresponding color name.
+
+As you can see, the start of the database is indicated by "XCMS_COLORDB_START".
+Anything before this is assumed to be comments. The "0.1" indicates the
+version number of the format/syntax used in this file. The color name is
+delimited from the color specification by one or more tabs.
+
+XCMS_COLORDB_START 0.1
+cms red CIEXYZ:0.3811/0.2073/0.0213
+cms green CIEXYZ:0.3203/0.6805/0.1430
+cms blue CIEXYZ:0.2483/0.1122/1.2417
+XCMS_COLORDB_END
diff --git a/libX11/src/xcms/Xcmsint.h b/libX11/src/xcms/Xcmsint.h
index a28a2ff60..75d947184 100644
--- a/libX11/src/xcms/Xcmsint.h
+++ b/libX11/src/xcms/Xcmsint.h
@@ -1,260 +1,260 @@
-
-/*
- * Code and supporting documentation (c) Copyright 1990 1991 Tektronix, Inc.
- * All Rights Reserved
- *
- * This file is a component of an X Window System-specific implementation
- * of Xcms based on the TekColor Color Management System. Permission is
- * hereby granted to use, copy, modify, sell, and otherwise distribute this
- * software and its documentation for any purpose and without fee, provided
- * that this copyright, permission, and disclaimer notice is reproduced in
- * all copies of this software and in supporting documentation. TekColor
- * is a trademark of Tektronix, Inc.
- *
- * Tektronix makes no representation about the suitability of this software
- * for any purpose. It is provided "as is" and with all faults.
- *
- * TEKTRONIX DISCLAIMS ALL WARRANTIES APPLICABLE TO THIS SOFTWARE,
- * INCLUDING THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE. IN NO EVENT SHALL TEKTRONIX BE LIABLE FOR ANY
- * SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER
- * RESULTING FROM LOSS OF USE, DATA, OR PROFITS, WHETHER IN AN ACTION OF
- * CONTRACT, NEGLIGENCE, OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
- * CONNECTION WITH THE USE OR THE PERFORMANCE OF THIS SOFTWARE.
- *
- *
- * DESCRIPTION
- * Private include file for Color Management System.
- * (i.e., for API internal use only)
- *
- */
-
-#ifndef _XCMSINT_H_
-#define _XCMSINT_H_
-
-#include <X11/Xcms.h>
-
-/*
- * DEFINES
- */
-
- /*
- * Private Status Value
- */
-#define _XCMS_NEWNAME -1
-
- /*
- * Color Space ID's are of XcmsColorFormat type.
- *
- * bit 31
- * 0 == Device-Independent
- * 1 == Device-Dependent
- *
- * bit 30:
- * 0 == Registered with X Consortium
- * 1 == Unregistered
- */
-#define XCMS_DD_ID(id) ((id) & (XcmsColorFormat)0x80000000)
-#define XCMS_DI_ID(id) (!((id) & (XcmsColorFormat)0x80000000))
-#define XCMS_UNREG_ID(id) ((id) & (XcmsColorFormat)0x40000000)
-#define XCMS_REG_ID(id) (!((id) & (XcmsColorFormat)0x40000000))
-#define XCMS_FIRST_REG_DI_ID (XcmsColorFormat)0x00000001
-#define XCMS_FIRST_UNREG_DI_ID (XcmsColorFormat)0x40000000
-#define XCMS_FIRST_REG_DD_ID (XcmsColorFormat)0x80000000
-#define XCMS_FIRST_UNREG_DD_ID (XcmsColorFormat)0xc0000000
-
-/*
- * TYPEDEFS
- */
-
- /*
- * Structure for caching Colormap info.
- * This is provided for the Xlib modifications to:
- * XAllocNamedColor()
- * XLookupColor()
- * XParseColor()
- * XStoreNamedColor()
- */
-typedef struct _XcmsCmapRec {
- Colormap cmapID;
- Display *dpy;
- Window windowID;
- Visual *visual;
- struct _XcmsCCC *ccc;
- struct _XcmsCmapRec *pNext;
-} XcmsCmapRec;
-
- /*
- * Intensity Record (i.e., value / intensity tuple)
- */
-typedef struct _IntensityRec {
- unsigned short value;
- XcmsFloat intensity;
-} IntensityRec;
-
- /*
- * Intensity Table
- */
-typedef struct _IntensityTbl {
- IntensityRec *pBase;
- unsigned int nEntries;
-} IntensityTbl;
-
- /*
- * Structure for storing per-Visual Intensity Tables (aka gamma maps).
- */
-typedef struct _XcmsIntensityMap {
- VisualID visualID;
- XPointer screenData; /* pointer to corresponding Screen Color*/
- /* Characterization Data */
- void (*pFreeScreenData)(XPointer pScreenDataTemp); /* Function that frees a Screen */
- /* structure. */
- struct _XcmsIntensityMap *pNext;
-} XcmsIntensityMap;
-
-
- /*
- * Structure for storing "registered" color space prefix/ID
- */
-typedef struct _XcmsRegColorSpaceEntry {
- const char *prefix; /* Color Space prefix (e.g., "CIEXYZ:") */
- XcmsColorFormat id; /* Color Space ID (e.g., XcmsCIEXYZFormat) */
-} XcmsRegColorSpaceEntry;
-
-
- /*
- * Xcms Per Display (i.e. connection) related data
- */
-typedef struct _XcmsPerDpyInfo {
-
- XcmsCCC paDefaultCCC; /* based on default visual of screen */
- /*
- * Pointer to an array of XcmsCCC structures, one for
- * each screen.
- */
- XcmsCmapRec *pClientCmaps; /* Pointer to linked list of XcmsCmapRec's */
-
-} XcmsPerDpyInfo, *XcmsPerDpyInfoPtr;
-
-/*
- * DEFINES
- */
-
-#define XDCCC_NUMBER 0x8000000L /* 2**27 per XDCCC */
-
-#ifdef GRAY
-#define XDCCC_SCREENWHITEPT_ATOM_NAME "XDCCC_GRAY_SCREENWHITEPOINT"
-#define XDCCC_GRAY_CORRECT_ATOM_NAME "XDCCC_GRAY_CORRECTION"
-#endif /* GRAY */
-
-#ifndef _ConversionValues
-typedef struct _ConversionValues {
- IntensityTbl IntensityTbl;
-} ConversionValues;
-#endif
-
-#ifdef GRAY
-typedef struct {
- IntensityTbl *IntensityTbl;
-} GRAY_SCCData;
-#endif /* GRAY */
-
-/*
- * DEFINES
- */
-
-#define XDCCC_MATRIX_ATOM_NAME "XDCCC_LINEAR_RGB_MATRICES"
-#define XDCCC_CORRECT_ATOM_NAME "XDCCC_LINEAR_RGB_CORRECTION"
-
-typedef struct {
- XcmsFloat XYZtoRGBmatrix[3][3];
- XcmsFloat RGBtoXYZmatrix[3][3];
- IntensityTbl *pRedTbl;
- IntensityTbl *pGreenTbl;
- IntensityTbl *pBlueTbl;
-} LINEAR_RGB_SCCData;
-
-/* function prototypes */
-extern XcmsCmapRec *
-_XcmsAddCmapRec(
- Display *dpy,
- Colormap cmap,
- Window windowID,
- Visual *visual);
-extern void
-_XcmsRGB_to_XColor(
- XcmsColor *pColors,
- XColor *pXColors,
- unsigned int nColors);
-extern Status
-_XcmsResolveColorString (
- XcmsCCC ccc,
- const char **color_string,
- XcmsColor *pColor_exact_return,
- XcmsColorFormat result_format);
-extern void
-_XUnresolveColor(
- XcmsCCC ccc,
- XColor *pXColor);
-/*
- * DESCRIPTION
- * Include file for defining the math macros used in the
- * XCMS source. Instead of using math library routines
- * directly, XCMS uses macros so that based on the
- * definitions here, vendors and sites can specify exactly
- * what routine will be called (those from libm.a or their
- * custom routines). If not defined to math library routines
- * (e.g., sqrt in libm.a), then the client is not forced to
- * be linked with -lm.
- */
-
-#define XCMS_ATAN(x) _XcmsArcTangent(x)
-#define XCMS_COS(x) _XcmsCosine(x)
-#define XCMS_CUBEROOT(x) _XcmsCubeRoot(x)
-#define XCMS_FABS(x) ((x) < 0.0 ? -(x) : (x))
-#define XCMS_SIN(x) _XcmsSine(x)
-#define XCMS_SQRT(x) _XcmsSquareRoot(x)
-#define XCMS_TAN(x) (XCMS_SIN(x) / XCMS_COS(x))
-
-double _XcmsArcTangent(double a);
-double _XcmsCosine(double a);
-double _XcmsCubeRoot(double a);
-double _XcmsSine(double a);
-double _XcmsSquareRoot(double a);
-
-/*
- * DEFINES FOR GAMUT COMPRESSION AND QUERY ROUTINES
- */
-#ifndef PI
-# ifdef M_PI
-# define PI M_PI
-# else
-# define PI 3.14159265358979323846264338327950
-# endif /* M_PI */
-#endif /* PI */
-#ifndef degrees
-# define degrees(r) ((XcmsFloat)(r) * 180.0 / PI)
-#endif /* degrees */
-#ifndef radians
-# define radians(d) ((XcmsFloat)(d) * PI / 180.0)
-#endif /* radians */
-
-#define XCMS_CIEUSTAROFHUE(h,c) \
-((XCMS_COS((h)) == 0.0) ? (XcmsFloat)0.0 : (XcmsFloat) \
-((XcmsFloat)(c) / (XcmsFloat)XCMS_SQRT((XCMS_TAN(h) * XCMS_TAN(h)) + \
-(XcmsFloat)1.0)))
-#define XCMS_CIEVSTAROFHUE(h,c) \
-((XCMS_COS((h)) == 0.0) ? (XcmsFloat)0.0 : (XcmsFloat) \
-((XcmsFloat)(c) / (XcmsFloat)XCMS_SQRT(((XcmsFloat)1.0 / \
-(XcmsFloat)(XCMS_TAN(h) * XCMS_TAN(h))) + (XcmsFloat)1.0)))
-/* this hue is returned in radians */
-#define XCMS_CIELUV_PMETRIC_HUE(u,v) \
-(((u) != 0.0) ? XCMS_ATAN( (v) / (u)) : ((v >= 0.0) ? PI / 2 : -(PI / 2)))
-#define XCMS_CIELUV_PMETRIC_CHROMA(u,v) XCMS_SQRT(((u)*(u)) + ((v)*(v)))
-
-#define XCMS_CIEASTAROFHUE(h,c) XCMS_CIEUSTAROFHUE((h), (c))
-#define XCMS_CIEBSTAROFHUE(h,c) XCMS_CIEVSTAROFHUE((h), (c))
-#define XCMS_CIELAB_PMETRIC_HUE(a,b) XCMS_CIELUV_PMETRIC_HUE((a), (b))
-#define XCMS_CIELAB_PMETRIC_CHROMA(a,b) XCMS_CIELUV_PMETRIC_CHROMA((a), (b))
-
-#endif /* _XCMSINT_H_ */
+
+/*
+ * Code and supporting documentation (c) Copyright 1990 1991 Tektronix, Inc.
+ * All Rights Reserved
+ *
+ * This file is a component of an X Window System-specific implementation
+ * of Xcms based on the TekColor Color Management System. Permission is
+ * hereby granted to use, copy, modify, sell, and otherwise distribute this
+ * software and its documentation for any purpose and without fee, provided
+ * that this copyright, permission, and disclaimer notice is reproduced in
+ * all copies of this software and in supporting documentation. TekColor
+ * is a trademark of Tektronix, Inc.
+ *
+ * Tektronix makes no representation about the suitability of this software
+ * for any purpose. It is provided "as is" and with all faults.
+ *
+ * TEKTRONIX DISCLAIMS ALL WARRANTIES APPLICABLE TO THIS SOFTWARE,
+ * INCLUDING THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+ * PARTICULAR PURPOSE. IN NO EVENT SHALL TEKTRONIX BE LIABLE FOR ANY
+ * SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER
+ * RESULTING FROM LOSS OF USE, DATA, OR PROFITS, WHETHER IN AN ACTION OF
+ * CONTRACT, NEGLIGENCE, OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
+ * CONNECTION WITH THE USE OR THE PERFORMANCE OF THIS SOFTWARE.
+ *
+ *
+ * DESCRIPTION
+ * Private include file for Color Management System.
+ * (i.e., for API internal use only)
+ *
+ */
+
+#ifndef _XCMSINT_H_
+#define _XCMSINT_H_
+
+#include <X11/Xcms.h>
+
+/*
+ * DEFINES
+ */
+
+ /*
+ * Private Status Value
+ */
+#define _XCMS_NEWNAME -1
+
+ /*
+ * Color Space ID's are of XcmsColorFormat type.
+ *
+ * bit 31
+ * 0 == Device-Independent
+ * 1 == Device-Dependent
+ *
+ * bit 30:
+ * 0 == Registered with X Consortium
+ * 1 == Unregistered
+ */
+#define XCMS_DD_ID(id) ((id) & (XcmsColorFormat)0x80000000)
+#define XCMS_DI_ID(id) (!((id) & (XcmsColorFormat)0x80000000))
+#define XCMS_UNREG_ID(id) ((id) & (XcmsColorFormat)0x40000000)
+#define XCMS_REG_ID(id) (!((id) & (XcmsColorFormat)0x40000000))
+#define XCMS_FIRST_REG_DI_ID (XcmsColorFormat)0x00000001
+#define XCMS_FIRST_UNREG_DI_ID (XcmsColorFormat)0x40000000
+#define XCMS_FIRST_REG_DD_ID (XcmsColorFormat)0x80000000
+#define XCMS_FIRST_UNREG_DD_ID (XcmsColorFormat)0xc0000000
+
+/*
+ * TYPEDEFS
+ */
+
+ /*
+ * Structure for caching Colormap info.
+ * This is provided for the Xlib modifications to:
+ * XAllocNamedColor()
+ * XLookupColor()
+ * XParseColor()
+ * XStoreNamedColor()
+ */
+typedef struct _XcmsCmapRec {
+ Colormap cmapID;
+ Display *dpy;
+ Window windowID;
+ Visual *visual;
+ struct _XcmsCCC *ccc;
+ struct _XcmsCmapRec *pNext;
+} XcmsCmapRec;
+
+ /*
+ * Intensity Record (i.e., value / intensity tuple)
+ */
+typedef struct _IntensityRec {
+ unsigned short value;
+ XcmsFloat intensity;
+} IntensityRec;
+
+ /*
+ * Intensity Table
+ */
+typedef struct _IntensityTbl {
+ IntensityRec *pBase;
+ unsigned int nEntries;
+} IntensityTbl;
+
+ /*
+ * Structure for storing per-Visual Intensity Tables (aka gamma maps).
+ */
+typedef struct _XcmsIntensityMap {
+ VisualID visualID;
+ XPointer screenData; /* pointer to corresponding Screen Color*/
+ /* Characterization Data */
+ void (*pFreeScreenData)(XPointer pScreenDataTemp); /* Function that frees a Screen */
+ /* structure. */
+ struct _XcmsIntensityMap *pNext;
+} XcmsIntensityMap;
+
+
+ /*
+ * Structure for storing "registered" color space prefix/ID
+ */
+typedef struct _XcmsRegColorSpaceEntry {
+ const char *prefix; /* Color Space prefix (e.g., "CIEXYZ:") */
+ XcmsColorFormat id; /* Color Space ID (e.g., XcmsCIEXYZFormat) */
+} XcmsRegColorSpaceEntry;
+
+
+ /*
+ * Xcms Per Display (i.e. connection) related data
+ */
+typedef struct _XcmsPerDpyInfo {
+
+ XcmsCCC paDefaultCCC; /* based on default visual of screen */
+ /*
+ * Pointer to an array of XcmsCCC structures, one for
+ * each screen.
+ */
+ XcmsCmapRec *pClientCmaps; /* Pointer to linked list of XcmsCmapRec's */
+
+} XcmsPerDpyInfo, *XcmsPerDpyInfoPtr;
+
+/*
+ * DEFINES
+ */
+
+#define XDCCC_NUMBER 0x8000000L /* 2**27 per XDCCC */
+
+#ifdef GRAY
+#define XDCCC_SCREENWHITEPT_ATOM_NAME "XDCCC_GRAY_SCREENWHITEPOINT"
+#define XDCCC_GRAY_CORRECT_ATOM_NAME "XDCCC_GRAY_CORRECTION"
+#endif /* GRAY */
+
+#ifndef _ConversionValues
+typedef struct _ConversionValues {
+ IntensityTbl IntensityTbl;
+} ConversionValues;
+#endif
+
+#ifdef GRAY
+typedef struct {
+ IntensityTbl *IntensityTbl;
+} GRAY_SCCData;
+#endif /* GRAY */
+
+/*
+ * DEFINES
+ */
+
+#define XDCCC_MATRIX_ATOM_NAME "XDCCC_LINEAR_RGB_MATRICES"
+#define XDCCC_CORRECT_ATOM_NAME "XDCCC_LINEAR_RGB_CORRECTION"
+
+typedef struct {
+ XcmsFloat XYZtoRGBmatrix[3][3];
+ XcmsFloat RGBtoXYZmatrix[3][3];
+ IntensityTbl *pRedTbl;
+ IntensityTbl *pGreenTbl;
+ IntensityTbl *pBlueTbl;
+} LINEAR_RGB_SCCData;
+
+/* function prototypes */
+extern XcmsCmapRec *
+_XcmsAddCmapRec(
+ Display *dpy,
+ Colormap cmap,
+ Window windowID,
+ Visual *visual);
+extern void
+_XcmsRGB_to_XColor(
+ XcmsColor *pColors,
+ XColor *pXColors,
+ unsigned int nColors);
+extern Status
+_XcmsResolveColorString (
+ XcmsCCC ccc,
+ const char **color_string,
+ XcmsColor *pColor_exact_return,
+ XcmsColorFormat result_format);
+extern void
+_XUnresolveColor(
+ XcmsCCC ccc,
+ XColor *pXColor);
+/*
+ * DESCRIPTION
+ * Include file for defining the math macros used in the
+ * XCMS source. Instead of using math library routines
+ * directly, XCMS uses macros so that based on the
+ * definitions here, vendors and sites can specify exactly
+ * what routine will be called (those from libm.a or their
+ * custom routines). If not defined to math library routines
+ * (e.g., sqrt in libm.a), then the client is not forced to
+ * be linked with -lm.
+ */
+
+#define XCMS_ATAN(x) _XcmsArcTangent(x)
+#define XCMS_COS(x) _XcmsCosine(x)
+#define XCMS_CUBEROOT(x) _XcmsCubeRoot(x)
+#define XCMS_FABS(x) ((x) < 0.0 ? -(x) : (x))
+#define XCMS_SIN(x) _XcmsSine(x)
+#define XCMS_SQRT(x) _XcmsSquareRoot(x)
+#define XCMS_TAN(x) (XCMS_SIN(x) / XCMS_COS(x))
+
+double _XcmsArcTangent(double a);
+double _XcmsCosine(double a);
+double _XcmsCubeRoot(double a);
+double _XcmsSine(double a);
+double _XcmsSquareRoot(double a);
+
+/*
+ * DEFINES FOR GAMUT COMPRESSION AND QUERY ROUTINES
+ */
+#ifndef PI
+# ifdef M_PI
+# define PI M_PI
+# else
+# define PI 3.14159265358979323846264338327950
+# endif /* M_PI */
+#endif /* PI */
+#ifndef degrees
+# define degrees(r) ((XcmsFloat)(r) * 180.0 / PI)
+#endif /* degrees */
+#ifndef radians
+# define radians(d) ((XcmsFloat)(d) * PI / 180.0)
+#endif /* radians */
+
+#define XCMS_CIEUSTAROFHUE(h,c) \
+((XCMS_COS((h)) == 0.0) ? (XcmsFloat)0.0 : (XcmsFloat) \
+((XcmsFloat)(c) / (XcmsFloat)XCMS_SQRT((XCMS_TAN(h) * XCMS_TAN(h)) + \
+(XcmsFloat)1.0)))
+#define XCMS_CIEVSTAROFHUE(h,c) \
+((XCMS_COS((h)) == 0.0) ? (XcmsFloat)0.0 : (XcmsFloat) \
+((XcmsFloat)(c) / (XcmsFloat)XCMS_SQRT(((XcmsFloat)1.0 / \
+(XcmsFloat)(XCMS_TAN(h) * XCMS_TAN(h))) + (XcmsFloat)1.0)))
+/* this hue is returned in radians */
+#define XCMS_CIELUV_PMETRIC_HUE(u,v) \
+(((u) != 0.0) ? XCMS_ATAN( (v) / (u)) : ((v >= 0.0) ? PI / 2 : -(PI / 2)))
+#define XCMS_CIELUV_PMETRIC_CHROMA(u,v) XCMS_SQRT(((u)*(u)) + ((v)*(v)))
+
+#define XCMS_CIEASTAROFHUE(h,c) XCMS_CIEUSTAROFHUE((h), (c))
+#define XCMS_CIEBSTAROFHUE(h,c) XCMS_CIEVSTAROFHUE((h), (c))
+#define XCMS_CIELAB_PMETRIC_HUE(a,b) XCMS_CIELUV_PMETRIC_HUE((a), (b))
+#define XCMS_CIELAB_PMETRIC_CHROMA(a,b) XCMS_CIELUV_PMETRIC_CHROMA((a), (b))
+
+#endif /* _XCMSINT_H_ */
diff --git a/libX11/src/xcms/cmsAllCol.c b/libX11/src/xcms/cmsAllCol.c
index 1ada07c1b..aeea46461 100644
--- a/libX11/src/xcms/cmsAllCol.c
+++ b/libX11/src/xcms/cmsAllCol.c
@@ -1,74 +1,74 @@
-
-/*
- * Code and supporting documentation (c) Copyright 1990 1991 Tektronix, Inc.
- * All Rights Reserved
- *
- * This file is a component of an X Window System-specific implementation
- * of Xcms based on the TekColor Color Management System. Permission is
- * hereby granted to use, copy, modify, sell, and otherwise distribute this
- * software and its documentation for any purpose and without fee, provided
- * that this copyright, permission, and disclaimer notice is reproduced in
- * all copies of this software and in supporting documentation. TekColor
- * is a trademark of Tektronix, Inc.
- *
- * Tektronix makes no representation about the suitability of this software
- * for any purpose. It is provided "as is" and with all faults.
- *
- * TEKTRONIX DISCLAIMS ALL WARRANTIES APPLICABLE TO THIS SOFTWARE,
- * INCLUDING THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE. IN NO EVENT SHALL TEKTRONIX BE LIABLE FOR ANY
- * SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER
- * RESULTING FROM LOSS OF USE, DATA, OR PROFITS, WHETHER IN AN ACTION OF
- * CONTRACT, NEGLIGENCE, OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
- * CONNECTION WITH THE USE OR THE PERFORMANCE OF THIS SOFTWARE.
- *
- *
- * NAME
- * XcmsAllCol.c
- *
- * DESCRIPTION
- * Source for XcmsAllocColor
- *
- *
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-#include "Xcmsint.h"
-#include "Cv.h"
-
-
-/*
- * NAME
- * XcmsAllocColor - Allocate Color
- *
- * SYNOPSIS
- */
-Status
-XcmsAllocColor(
- Display *dpy,
- Colormap colormap,
- XcmsColor *pXcmsColor_in_out,
- XcmsColorFormat result_format)
-/*
- * DESCRIPTION
- * Given a device-dependent or device-independent color
- * specification, XcmsAllocColor will convert it to X RGB
- * values then use it in a call to XAllocColor.
- *
- * RETURNS
- * XcmsFailure if failed;
- * XcmsSuccess if it succeeded without gamut compression;
- * XcmsSuccessWithCompression if it succeeded with gamut
- * compression;
- *
- * Also returns the pixel value of the color cell and a color
- * specification of the color actually stored.
- *
- */
-{
- return(_XcmsSetGetColor(XAllocColor, dpy, colormap, pXcmsColor_in_out,
- result_format, (Bool *)NULL));
-}
+
+/*
+ * Code and supporting documentation (c) Copyright 1990 1991 Tektronix, Inc.
+ * All Rights Reserved
+ *
+ * This file is a component of an X Window System-specific implementation
+ * of Xcms based on the TekColor Color Management System. Permission is
+ * hereby granted to use, copy, modify, sell, and otherwise distribute this
+ * software and its documentation for any purpose and without fee, provided
+ * that this copyright, permission, and disclaimer notice is reproduced in
+ * all copies of this software and in supporting documentation. TekColor
+ * is a trademark of Tektronix, Inc.
+ *
+ * Tektronix makes no representation about the suitability of this software
+ * for any purpose. It is provided "as is" and with all faults.
+ *
+ * TEKTRONIX DISCLAIMS ALL WARRANTIES APPLICABLE TO THIS SOFTWARE,
+ * INCLUDING THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+ * PARTICULAR PURPOSE. IN NO EVENT SHALL TEKTRONIX BE LIABLE FOR ANY
+ * SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER
+ * RESULTING FROM LOSS OF USE, DATA, OR PROFITS, WHETHER IN AN ACTION OF
+ * CONTRACT, NEGLIGENCE, OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
+ * CONNECTION WITH THE USE OR THE PERFORMANCE OF THIS SOFTWARE.
+ *
+ *
+ * NAME
+ * XcmsAllCol.c
+ *
+ * DESCRIPTION
+ * Source for XcmsAllocColor
+ *
+ *
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+#include "Xcmsint.h"
+#include "Cv.h"
+
+
+/*
+ * NAME
+ * XcmsAllocColor - Allocate Color
+ *
+ * SYNOPSIS
+ */
+Status
+XcmsAllocColor(
+ Display *dpy,
+ Colormap colormap,
+ XcmsColor *pXcmsColor_in_out,
+ XcmsColorFormat result_format)
+/*
+ * DESCRIPTION
+ * Given a device-dependent or device-independent color
+ * specification, XcmsAllocColor will convert it to X RGB
+ * values then use it in a call to XAllocColor.
+ *
+ * RETURNS
+ * XcmsFailure if failed;
+ * XcmsSuccess if it succeeded without gamut compression;
+ * XcmsSuccessWithCompression if it succeeded with gamut
+ * compression;
+ *
+ * Also returns the pixel value of the color cell and a color
+ * specification of the color actually stored.
+ *
+ */
+{
+ return(_XcmsSetGetColor(XAllocColor, dpy, colormap, pXcmsColor_in_out,
+ result_format, (Bool *)NULL));
+}
diff --git a/libX11/src/xcms/cmsAllNCol.c b/libX11/src/xcms/cmsAllNCol.c
index 79e1bfe7f..d39de6cbd 100644
--- a/libX11/src/xcms/cmsAllNCol.c
+++ b/libX11/src/xcms/cmsAllNCol.c
@@ -1,198 +1,198 @@
-
-/*
- * Code and supporting documentation (c) Copyright 1990 1991 Tektronix, Inc.
- * All Rights Reserved
- *
- * This file is a component of an X Window System-specific implementation
- * of Xcms based on the TekColor Color Management System. Permission is
- * hereby granted to use, copy, modify, sell, and otherwise distribute this
- * software and its documentation for any purpose and without fee, provided
- * that this copyright, permission, and disclaimer notice is reproduced in
- * all copies of this software and in supporting documentation. TekColor
- * is a trademark of Tektronix, Inc.
- *
- * Tektronix makes no representation about the suitability of this software
- * for any purpose. It is provided "as is" and with all faults.
- *
- * TEKTRONIX DISCLAIMS ALL WARRANTIES APPLICABLE TO THIS SOFTWARE,
- * INCLUDING THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE. IN NO EVENT SHALL TEKTRONIX BE LIABLE FOR ANY
- * SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER
- * RESULTING FROM LOSS OF USE, DATA, OR PROFITS, WHETHER IN AN ACTION OF
- * CONTRACT, NEGLIGENCE, OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
- * CONNECTION WITH THE USE OR THE PERFORMANCE OF THIS SOFTWARE.
- *
- *
- * NAME
- * XcmsAlNCol.c
- *
- * DESCRIPTION
- * Source for XcmsAllocNamedColor
- *
- *
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include <stdio.h>
-#include "Xlibint.h"
-#include "Xcmsint.h"
-#include "Cv.h"
-
-
-/*
- * NAME
- * XcmsAllocNamedColor -
- *
- * SYNOPSIS
- */
-Status
-XcmsAllocNamedColor (
- Display *dpy,
- Colormap cmap,
- _Xconst char *colorname,
- XcmsColor *pColor_scrn_return,
- XcmsColor *pColor_exact_return,
- XcmsColorFormat result_format)
-/*
- * DESCRIPTION
- * Finds the color specification associated with the color
- * name in the Device-Independent Color Name Database, then
- * converts that color specification to an RGB format. This
- * RGB value is then used in a call to XAllocColor to allocate
- * a read-only color cell.
- *
- * RETURNS
- * 0 if failed to parse string or find any entry in the database.
- * 1 if succeeded in converting color name to XcmsColor.
- * 2 if succeeded in converting color name to another color name.
- *
- */
-{
- long nbytes;
- xAllocNamedColorReply rep;
- xAllocNamedColorReq *req;
- XColor hard_def;
- XColor exact_def;
- Status retval1 = 1;
- Status retval2 = XcmsSuccess;
- XcmsColor tmpColor;
- XColor XColor_in_out;
- XcmsCCC ccc;
-
- /*
- * 0. Check for invalid arguments.
- */
- if (dpy == NULL || colorname[0] == '\0' || pColor_scrn_return == 0
- || pColor_exact_return == NULL) {
- return(XcmsFailure);
- }
-
- if ((ccc = XcmsCCCOfColormap(dpy, cmap)) == (XcmsCCC)NULL) {
- return(XcmsFailure);
- }
-
- /*
- * 1. Convert string to a XcmsColor using Xcms and i18n mechanism
- */
- if ((retval1 = _XcmsResolveColorString(ccc, &colorname,
- &tmpColor, result_format)) == XcmsFailure) {
- return(XcmsFailure);
- }
- if (retval1 == _XCMS_NEWNAME) {
- goto PassToServer;
- }
- memcpy((char *)pColor_exact_return, (char *)&tmpColor, sizeof(XcmsColor));
-
- /*
- * 2. Convert tmpColor to RGB
- * Assume pColor_exact_return is now adjusted to Client White Point
- */
- if ((retval2 = XcmsConvertColors(ccc, &tmpColor,
- 1, XcmsRGBFormat, (Bool *) NULL)) == XcmsFailure) {
- return(XcmsFailure);
- }
-
- /*
- * 3. Convert to XColor and call XAllocColor
- */
- _XcmsRGB_to_XColor(&tmpColor, &XColor_in_out, 1);
- if (XAllocColor(ccc->dpy, cmap, &XColor_in_out) == 0) {
- return(XcmsFailure);
- }
-
- /*
- * 4. pColor_scrn_return
- *
- * Now convert to the target format.
- * We can ignore the return value because we're already in a
- * device-dependent format.
- */
- _XColor_to_XcmsRGB(ccc, &XColor_in_out, pColor_scrn_return, 1);
- if (result_format != XcmsRGBFormat) {
- if (result_format == XcmsUndefinedFormat) {
- result_format = pColor_exact_return->format;
- }
- if (XcmsConvertColors(ccc, pColor_scrn_return, 1, result_format,
- (Bool *) NULL) == XcmsFailure) {
- return(XcmsFailure);
- }
- }
-
- return(retval1 > retval2 ? retval1 : retval2);
-
-PassToServer:
- /*
- * All previous methods failed, so lets pass it to the server
- * for parsing.
- */
- dpy = ccc->dpy;
- LockDisplay(dpy);
- GetReq(AllocNamedColor, req);
-
- req->cmap = cmap;
- nbytes = req->nbytes = strlen(colorname);
- req->length += (nbytes + 3) >> 2; /* round up to mult of 4 */
-
- _XSend(dpy, colorname, nbytes);
- /* _XSend is more efficient that Data, since _XReply follows */
-
- if (!_XReply (dpy, (xReply *) &rep, 0, xTrue)) {
- UnlockDisplay(dpy);
- SyncHandle();
- return (0);
- }
-
- exact_def.red = rep.exactRed;
- exact_def.green = rep.exactGreen;
- exact_def.blue = rep.exactBlue;
-
- hard_def.red = rep.screenRed;
- hard_def.green = rep.screenGreen;
- hard_def.blue = rep.screenBlue;
-
- exact_def.pixel = hard_def.pixel = rep.pixel;
-
- UnlockDisplay(dpy);
- SyncHandle();
-
- /*
- * Now convert to the target format.
- */
- _XColor_to_XcmsRGB(ccc, &exact_def, pColor_exact_return, 1);
- _XColor_to_XcmsRGB(ccc, &hard_def, pColor_scrn_return, 1);
- if (result_format != XcmsRGBFormat
- && result_format != XcmsUndefinedFormat) {
- if (XcmsConvertColors(ccc, pColor_exact_return, 1, result_format,
- (Bool *) NULL) == XcmsFailure) {
- return(XcmsFailure);
- }
- if (XcmsConvertColors(ccc, pColor_scrn_return, 1, result_format,
- (Bool *) NULL) == XcmsFailure) {
- return(XcmsFailure);
- }
- }
-
- return(XcmsSuccess);
-}
+
+/*
+ * Code and supporting documentation (c) Copyright 1990 1991 Tektronix, Inc.
+ * All Rights Reserved
+ *
+ * This file is a component of an X Window System-specific implementation
+ * of Xcms based on the TekColor Color Management System. Permission is
+ * hereby granted to use, copy, modify, sell, and otherwise distribute this
+ * software and its documentation for any purpose and without fee, provided
+ * that this copyright, permission, and disclaimer notice is reproduced in
+ * all copies of this software and in supporting documentation. TekColor
+ * is a trademark of Tektronix, Inc.
+ *
+ * Tektronix makes no representation about the suitability of this software
+ * for any purpose. It is provided "as is" and with all faults.
+ *
+ * TEKTRONIX DISCLAIMS ALL WARRANTIES APPLICABLE TO THIS SOFTWARE,
+ * INCLUDING THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+ * PARTICULAR PURPOSE. IN NO EVENT SHALL TEKTRONIX BE LIABLE FOR ANY
+ * SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER
+ * RESULTING FROM LOSS OF USE, DATA, OR PROFITS, WHETHER IN AN ACTION OF
+ * CONTRACT, NEGLIGENCE, OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
+ * CONNECTION WITH THE USE OR THE PERFORMANCE OF THIS SOFTWARE.
+ *
+ *
+ * NAME
+ * XcmsAlNCol.c
+ *
+ * DESCRIPTION
+ * Source for XcmsAllocNamedColor
+ *
+ *
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include <stdio.h>
+#include "Xlibint.h"
+#include "Xcmsint.h"
+#include "Cv.h"
+
+
+/*
+ * NAME
+ * XcmsAllocNamedColor -
+ *
+ * SYNOPSIS
+ */
+Status
+XcmsAllocNamedColor (
+ Display *dpy,
+ Colormap cmap,
+ _Xconst char *colorname,
+ XcmsColor *pColor_scrn_return,
+ XcmsColor *pColor_exact_return,
+ XcmsColorFormat result_format)
+/*
+ * DESCRIPTION
+ * Finds the color specification associated with the color
+ * name in the Device-Independent Color Name Database, then
+ * converts that color specification to an RGB format. This
+ * RGB value is then used in a call to XAllocColor to allocate
+ * a read-only color cell.
+ *
+ * RETURNS
+ * 0 if failed to parse string or find any entry in the database.
+ * 1 if succeeded in converting color name to XcmsColor.
+ * 2 if succeeded in converting color name to another color name.
+ *
+ */
+{
+ long nbytes;
+ xAllocNamedColorReply rep;
+ xAllocNamedColorReq *req;
+ XColor hard_def;
+ XColor exact_def;
+ Status retval1 = 1;
+ Status retval2 = XcmsSuccess;
+ XcmsColor tmpColor;
+ XColor XColor_in_out;
+ XcmsCCC ccc;
+
+ /*
+ * 0. Check for invalid arguments.
+ */
+ if (dpy == NULL || colorname[0] == '\0' || pColor_scrn_return == 0
+ || pColor_exact_return == NULL) {
+ return(XcmsFailure);
+ }
+
+ if ((ccc = XcmsCCCOfColormap(dpy, cmap)) == (XcmsCCC)NULL) {
+ return(XcmsFailure);
+ }
+
+ /*
+ * 1. Convert string to a XcmsColor using Xcms and i18n mechanism
+ */
+ if ((retval1 = _XcmsResolveColorString(ccc, &colorname,
+ &tmpColor, result_format)) == XcmsFailure) {
+ return(XcmsFailure);
+ }
+ if (retval1 == _XCMS_NEWNAME) {
+ goto PassToServer;
+ }
+ memcpy((char *)pColor_exact_return, (char *)&tmpColor, sizeof(XcmsColor));
+
+ /*
+ * 2. Convert tmpColor to RGB
+ * Assume pColor_exact_return is now adjusted to Client White Point
+ */
+ if ((retval2 = XcmsConvertColors(ccc, &tmpColor,
+ 1, XcmsRGBFormat, (Bool *) NULL)) == XcmsFailure) {
+ return(XcmsFailure);
+ }
+
+ /*
+ * 3. Convert to XColor and call XAllocColor
+ */
+ _XcmsRGB_to_XColor(&tmpColor, &XColor_in_out, 1);
+ if (XAllocColor(ccc->dpy, cmap, &XColor_in_out) == 0) {
+ return(XcmsFailure);
+ }
+
+ /*
+ * 4. pColor_scrn_return
+ *
+ * Now convert to the target format.
+ * We can ignore the return value because we're already in a
+ * device-dependent format.
+ */
+ _XColor_to_XcmsRGB(ccc, &XColor_in_out, pColor_scrn_return, 1);
+ if (result_format != XcmsRGBFormat) {
+ if (result_format == XcmsUndefinedFormat) {
+ result_format = pColor_exact_return->format;
+ }
+ if (XcmsConvertColors(ccc, pColor_scrn_return, 1, result_format,
+ (Bool *) NULL) == XcmsFailure) {
+ return(XcmsFailure);
+ }
+ }
+
+ return(retval1 > retval2 ? retval1 : retval2);
+
+PassToServer:
+ /*
+ * All previous methods failed, so lets pass it to the server
+ * for parsing.
+ */
+ dpy = ccc->dpy;
+ LockDisplay(dpy);
+ GetReq(AllocNamedColor, req);
+
+ req->cmap = cmap;
+ nbytes = req->nbytes = strlen(colorname);
+ req->length += (nbytes + 3) >> 2; /* round up to mult of 4 */
+
+ _XSend(dpy, colorname, nbytes);
+ /* _XSend is more efficient that Data, since _XReply follows */
+
+ if (!_XReply (dpy, (xReply *) &rep, 0, xTrue)) {
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return (0);
+ }
+
+ exact_def.red = rep.exactRed;
+ exact_def.green = rep.exactGreen;
+ exact_def.blue = rep.exactBlue;
+
+ hard_def.red = rep.screenRed;
+ hard_def.green = rep.screenGreen;
+ hard_def.blue = rep.screenBlue;
+
+ exact_def.pixel = hard_def.pixel = rep.pixel;
+
+ UnlockDisplay(dpy);
+ SyncHandle();
+
+ /*
+ * Now convert to the target format.
+ */
+ _XColor_to_XcmsRGB(ccc, &exact_def, pColor_exact_return, 1);
+ _XColor_to_XcmsRGB(ccc, &hard_def, pColor_scrn_return, 1);
+ if (result_format != XcmsRGBFormat
+ && result_format != XcmsUndefinedFormat) {
+ if (XcmsConvertColors(ccc, pColor_exact_return, 1, result_format,
+ (Bool *) NULL) == XcmsFailure) {
+ return(XcmsFailure);
+ }
+ if (XcmsConvertColors(ccc, pColor_scrn_return, 1, result_format,
+ (Bool *) NULL) == XcmsFailure) {
+ return(XcmsFailure);
+ }
+ }
+
+ return(XcmsSuccess);
+}
diff --git a/libX11/src/xcms/cmsCmap.c b/libX11/src/xcms/cmsCmap.c
index 2f14cdb25..00816ce03 100644
--- a/libX11/src/xcms/cmsCmap.c
+++ b/libX11/src/xcms/cmsCmap.c
@@ -1,493 +1,493 @@
-
-/*
- * Code and supporting documentation (c) Copyright 1990 1991 Tektronix, Inc.
- * All Rights Reserved
- *
- * This file is a component of an X Window System-specific implementation
- * of Xcms based on the TekColor Color Management System. Permission is
- * hereby granted to use, copy, modify, sell, and otherwise distribute this
- * software and its documentation for any purpose and without fee, provided
- * that this copyright, permission, and disclaimer notice is reproduced in
- * all copies of this software and in supporting documentation. TekColor
- * is a trademark of Tektronix, Inc.
- *
- * Tektronix makes no representation about the suitability of this software
- * for any purpose. It is provided "as is" and with all faults.
- *
- * TEKTRONIX DISCLAIMS ALL WARRANTIES APPLICABLE TO THIS SOFTWARE,
- * INCLUDING THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE. IN NO EVENT SHALL TEKTRONIX BE LIABLE FOR ANY
- * SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER
- * RESULTING FROM LOSS OF USE, DATA, OR PROFITS, WHETHER IN AN ACTION OF
- * CONTRACT, NEGLIGENCE, OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
- * CONNECTION WITH THE USE OR THE PERFORMANCE OF THIS SOFTWARE.
- *
- *
- * NAME
- * XcmsCmap.c - Client Colormap Management Routines
- *
- * DESCRIPTION
- * Routines that store additional information about
- * colormaps being used by the X Client.
- *
- *
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-#include "Xcmsint.h"
-#include "Xutil.h"
-#include "Cmap.h"
-#include "Cv.h"
-
-/*
- * FORWARD DECLARATIONS
- */
-static void _XcmsFreeClientCmaps(Display *dpy);
-
-
-/************************************************************************
- * *
- * PRIVATE INTERFACES *
- * *
- ************************************************************************/
-
-/*
- * NAME
- * CmapRecForColormap
- *
- * SYNOPSIS
- */
-static XcmsCmapRec *
-CmapRecForColormap(
- Display *dpy,
- Colormap cmap)
-/*
- * DESCRIPTION
- * Find the corresponding XcmsCmapRec for cmap. In not found
- * this routines attempts to create one.
- *
- * RETURNS
- * Returns NULL if failed; otherwise the address to
- * the corresponding XcmsCmapRec.
- *
- */
-{
- XcmsCmapRec *pRec;
- int nScrn;
- int i, j;
- XVisualInfo visualTemplate; /* Template of the visual we want */
- XVisualInfo *visualList; /* List for visuals that match */
- int nVisualsMatched; /* Number of visuals that match */
- Window tmpWindow;
- Visual *vp;
- unsigned long border = 0;
- _XAsyncHandler async;
- _XAsyncErrorState async_state;
-
- for (pRec = (XcmsCmapRec *)dpy->cms.clientCmaps; pRec != NULL;
- pRec = pRec->pNext) {
- if (pRec->cmapID == cmap) {
- return(pRec);
- }
- }
-
- /*
- * Can't find an XcmsCmapRec associated with cmap in our records.
- * Let's try to see if its a default colormap
- */
- nScrn = ScreenCount(dpy);
- for (i = 0; i < nScrn; i++) {
- if (cmap == DefaultColormap(dpy, i)) {
- /* It is ... lets go ahead and store that info */
- if ((pRec = _XcmsAddCmapRec(dpy, cmap, RootWindow(dpy, i),
- DefaultVisual(dpy, i))) == NULL) {
- return((XcmsCmapRec *)NULL);
- }
- pRec->ccc = XcmsCreateCCC(
- dpy,
- i, /* screenNumber */
- DefaultVisual(dpy, i),
- (XcmsColor *)NULL, /* clientWhitePt */
- (XcmsCompressionProc)NULL, /* gamutCompProc */
- (XPointer)NULL, /* gamutCompClientData */
- (XcmsWhiteAdjustProc)NULL, /* whitePtAdjProc */
- (XPointer)NULL /* whitePtAdjClientData */
- );
- return(pRec);
- }
- }
-
- /*
- * Nope, its not a default colormap, so it's probably a foreign color map
- * of which we have no specific details. Let's go through the
- * rigorous process of finding this colormap:
- * for each screen
- * for each screen's visual types
- * create a window with cmap specified as the colormap
- * if successful
- * Add a CmapRec
- * Create an XcmsCCC
- * return the CmapRec
- * else
- * continue
- */
-
- async_state.error_code = 0; /* don't care */
- async_state.major_opcode = X_CreateWindow;
- async_state.minor_opcode = 0;
- for (i = 0; i < nScrn; i++) {
- visualTemplate.screen = i;
- visualList = XGetVisualInfo(dpy, VisualScreenMask, &visualTemplate,
- &nVisualsMatched);
- if (visualList == NULL) {
- continue;
- }
-
- /*
- * Attempt to create a window with cmap
- */
- j = 0;
- do {
- vp = (visualList+j)->visual;
- LockDisplay(dpy);
- {
- register xCreateWindowReq *req;
-
- GetReq(CreateWindow, req);
- async_state.min_sequence_number = dpy->request;
- async_state.max_sequence_number = dpy->request;
- async_state.error_count = 0;
- async.next = dpy->async_handlers;
- async.handler = _XAsyncErrorHandler;
- async.data = (XPointer)&async_state;
- dpy->async_handlers = &async;
- req->parent = RootWindow(dpy, i);
- req->x = 0;
- req->y = 0;
- req->width = 1;
- req->height = 1;
- req->borderWidth = 0;
- req->depth = (visualList+j)->depth;
- req->class = CopyFromParent;
- req->visual = vp->visualid;
- tmpWindow = req->wid = XAllocID(dpy);
- req->mask = CWBorderPixel | CWColormap;
- req->length += 2;
- Data32 (dpy, (long *) &border, 4);
- Data32 (dpy, (long *) &cmap, 4);
- }
- {
- xGetInputFocusReply rep;
- register xReq *req;
-
- GetEmptyReq(GetInputFocus, req);
- (void) _XReply (dpy, (xReply *)&rep, 0, xTrue);
- }
- DeqAsyncHandler(dpy, &async);
- UnlockDisplay(dpy);
- SyncHandle();
- } while (async_state.error_count > 0 && ++j < nVisualsMatched);
-
- Xfree((char *)visualList);
-
- /*
- * if successful
- */
- if (j < nVisualsMatched) {
- if ((pRec = _XcmsAddCmapRec(dpy, cmap, tmpWindow, vp)) == NULL)
- return((XcmsCmapRec *)NULL);
- pRec->ccc = XcmsCreateCCC(
- dpy,
- i, /* screenNumber */
- vp,
- (XcmsColor *)NULL, /* clientWhitePt */
- (XcmsCompressionProc)NULL, /* gamutCompProc */
- (XPointer)NULL, /* gamutCompClientData */
- (XcmsWhiteAdjustProc)NULL, /* whitePtAdjProc */
- (XPointer)NULL /* whitePtAdjClientData */
- );
- XDestroyWindow(dpy, tmpWindow);
- return(pRec);
- }
- }
-
- return(NULL);
-}
-
-
-
-/************************************************************************
- * *
- * API PRIVATE INTERFACES *
- * *
- ************************************************************************/
-
-/*
- * NAME
- * _XcmsAddCmapRec
- *
- * SYNOPSIS
- */
-XcmsCmapRec *
-_XcmsAddCmapRec(
- Display *dpy,
- Colormap cmap,
- Window windowID,
- Visual *visual)
-/*
- * DESCRIPTION
- * Create an XcmsCmapRec for the specified cmap, windowID,
- * and visual, then adds it to its list of CmapRec's.
- *
- * RETURNS
- * Returns NULL if failed; otherwise the address to
- * the added XcmsCmapRec.
- *
- */
-{
- XcmsCmapRec *pNew;
-
- if ((pNew = (XcmsCmapRec *) Xcalloc(1, (unsigned) sizeof(XcmsCmapRec)))
- == NULL) {
- return((XcmsCmapRec *)NULL);
- }
-
- pNew->cmapID = cmap;
- pNew->dpy = dpy;
- pNew->windowID = windowID;
- pNew->visual = visual;
- pNew->pNext = (XcmsCmapRec *)dpy->cms.clientCmaps;
- dpy->cms.clientCmaps = (XPointer)pNew;
- dpy->free_funcs->clientCmaps = _XcmsFreeClientCmaps;
-
- /*
- * Note, we don't create the XcmsCCC for pNew->ccc here because
- * it may require the use of XGetWindowAttributes (a round trip request)
- * to determine the screen.
- */
- return(pNew);
-}
-
-
-/*
- * NAME
- * _XcmsCopyCmapRecAndFree
- *
- * SYNOPSIS
- */
-XcmsCmapRec *
-_XcmsCopyCmapRecAndFree(
- Display *dpy,
- Colormap src_cmap,
- Colormap copy_cmap)
-/*
- * DESCRIPTION
- * Augments Xlib's XCopyColormapAndFree() to copy
- * XcmsCmapRecs.
- *
- * RETURNS
- * Returns NULL if failed; otherwise the address to
- * the copy XcmsCmapRec.
- *
- */
-{
- XcmsCmapRec *pRec_src;
- XcmsCmapRec *pRec_copy;
-
- if ((pRec_src = CmapRecForColormap(dpy, src_cmap)) != NULL) {
- pRec_copy =_XcmsAddCmapRec(dpy, copy_cmap, pRec_src->windowID,
- pRec_src->visual);
- if (pRec_copy != NULL && pRec_src->ccc) {
- pRec_copy->ccc = (XcmsCCC)Xcalloc(1, (unsigned) sizeof(XcmsCCCRec));
- memcpy((char *)pRec_copy->ccc, (char *)pRec_src->ccc,
- sizeof(XcmsCCCRec));
- }
- return(pRec_copy);
- }
- return((XcmsCmapRec *)NULL);
-}
-
-
-/*
- * NAME
- * _XcmsDeleteCmapRec
- *
- * SYNOPSIS
- */
-void
-_XcmsDeleteCmapRec(
- Display *dpy,
- Colormap cmap)
-/*
- * DESCRIPTION
- * Removes and frees the specified XcmsCmapRec structure
- * from the linked list of structures.
- *
- * RETURNS
- * void
- *
- */
-{
- XcmsCmapRec **pPrevPtr;
- XcmsCmapRec *pRec;
- int scr;
-
- /* If it is the default cmap for a screen, do not delete it,
- * because the server will not actually free it */
- for (scr = ScreenCount(dpy); --scr >= 0; ) {
- if (cmap == DefaultColormap(dpy, scr))
- return;
- }
-
- /* search for it in the list */
- pPrevPtr = (XcmsCmapRec **)&dpy->cms.clientCmaps;
- while ((pRec = *pPrevPtr) && (pRec->cmapID != cmap)) {
- pPrevPtr = &pRec->pNext;
- }
-
- if (pRec) {
- if (pRec->ccc) {
- XcmsFreeCCC(pRec->ccc);
- }
- *pPrevPtr = pRec->pNext;
- Xfree((char *)pRec);
- }
-}
-
-
-/*
- * NAME
- * _XcmsFreeClientCmaps
- *
- * SYNOPSIS
- */
-static void
-_XcmsFreeClientCmaps(
- Display *dpy)
-/*
- * DESCRIPTION
- * Frees all XcmsCmapRec structures in the linked list
- * and sets dpy->cms.clientCmaps to NULL.
- *
- * RETURNS
- * void
- *
- */
-{
- XcmsCmapRec *pRecNext, *pRecFree;
-
- pRecNext = (XcmsCmapRec *)dpy->cms.clientCmaps;
- while (pRecNext != NULL) {
- pRecFree = pRecNext;
- pRecNext = pRecNext->pNext;
- if (pRecFree->ccc) {
- /* Free the XcmsCCC structure */
- XcmsFreeCCC(pRecFree->ccc);
- }
- /* Now free the XcmsCmapRec structure */
- Xfree((char *)pRecFree);
- }
- dpy->cms.clientCmaps = (XPointer)NULL;
-}
-
-
-
-/************************************************************************
- * *
- * PUBLIC INTERFACES *
- * *
- ************************************************************************/
-
-/*
- * NAME
- * XcmsCCCOfColormap
- *
- * SYNOPSIS
- */
-XcmsCCC
-XcmsCCCOfColormap(
- Display *dpy,
- Colormap cmap)
-/*
- * DESCRIPTION
- * Finds the XcmsCCC associated with the specified colormap.
- *
- * RETURNS
- * Returns NULL if failed; otherwise the address to
- * the associated XcmsCCC structure.
- *
- */
-{
- XWindowAttributes windowAttr;
- XcmsCmapRec *pRec;
- int nScrn = ScreenCount(dpy);
- int i;
-
- if ((pRec = CmapRecForColormap(dpy, cmap)) != NULL) {
- if (pRec->ccc) {
- /* XcmsCmapRec already has a XcmsCCC */
- return(pRec->ccc);
- }
-
- /*
- * The XcmsCmapRec does not have a XcmsCCC yet, so let's create
- * one. But first, we need to know the screen associated with
- * cmap, so use XGetWindowAttributes() to extract that
- * information. Unless, of course there is only one screen!!
- */
- if (nScrn == 1) {
- /* Assume screenNumber == 0 */
- return(pRec->ccc = XcmsCreateCCC(
- dpy,
- 0, /* screenNumber */
- pRec->visual,
- (XcmsColor *)NULL, /* clientWhitePt */
- (XcmsCompressionProc)NULL, /* gamutCompProc */
- (XPointer)NULL, /* gamutCompClientData */
- (XcmsWhiteAdjustProc)NULL, /* whitePtAdjProc */
- (XPointer)NULL /* whitePtAdjClientData */
- ));
- } else {
- if (XGetWindowAttributes(dpy, pRec->windowID, &windowAttr)) {
- for (i = 0; i < nScrn; i++) {
- if (ScreenOfDisplay(dpy, i) == windowAttr.screen) {
- return(pRec->ccc = XcmsCreateCCC(
- dpy,
- i, /* screenNumber */
- pRec->visual,
- (XcmsColor *)NULL, /* clientWhitePt */
- (XcmsCompressionProc)NULL, /* gamutCompProc */
- (XPointer)NULL, /* gamutCompClientData */
- (XcmsWhiteAdjustProc)NULL, /* whitePtAdjProc */
- (XPointer)NULL /* whitePtAdjClientData */
- ));
- }
- }
- }
- }
- }
-
- /*
- * No such cmap
- */
- return(NULL);
-}
-
-XcmsCCC XcmsSetCCCOfColormap(
- Display *dpy,
- Colormap cmap,
- XcmsCCC ccc)
-{
- XcmsCCC prev_ccc = NULL;
- XcmsCmapRec *pRec;
-
- pRec = CmapRecForColormap(dpy, cmap);
- if (pRec) {
- prev_ccc = pRec->ccc;
- pRec->ccc = ccc;
- }
- return prev_ccc;
-}
+
+/*
+ * Code and supporting documentation (c) Copyright 1990 1991 Tektronix, Inc.
+ * All Rights Reserved
+ *
+ * This file is a component of an X Window System-specific implementation
+ * of Xcms based on the TekColor Color Management System. Permission is
+ * hereby granted to use, copy, modify, sell, and otherwise distribute this
+ * software and its documentation for any purpose and without fee, provided
+ * that this copyright, permission, and disclaimer notice is reproduced in
+ * all copies of this software and in supporting documentation. TekColor
+ * is a trademark of Tektronix, Inc.
+ *
+ * Tektronix makes no representation about the suitability of this software
+ * for any purpose. It is provided "as is" and with all faults.
+ *
+ * TEKTRONIX DISCLAIMS ALL WARRANTIES APPLICABLE TO THIS SOFTWARE,
+ * INCLUDING THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+ * PARTICULAR PURPOSE. IN NO EVENT SHALL TEKTRONIX BE LIABLE FOR ANY
+ * SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER
+ * RESULTING FROM LOSS OF USE, DATA, OR PROFITS, WHETHER IN AN ACTION OF
+ * CONTRACT, NEGLIGENCE, OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
+ * CONNECTION WITH THE USE OR THE PERFORMANCE OF THIS SOFTWARE.
+ *
+ *
+ * NAME
+ * XcmsCmap.c - Client Colormap Management Routines
+ *
+ * DESCRIPTION
+ * Routines that store additional information about
+ * colormaps being used by the X Client.
+ *
+ *
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+#include "Xcmsint.h"
+#include "Xutil.h"
+#include "Cmap.h"
+#include "Cv.h"
+
+/*
+ * FORWARD DECLARATIONS
+ */
+static void _XcmsFreeClientCmaps(Display *dpy);
+
+
+/************************************************************************
+ * *
+ * PRIVATE INTERFACES *
+ * *
+ ************************************************************************/
+
+/*
+ * NAME
+ * CmapRecForColormap
+ *
+ * SYNOPSIS
+ */
+static XcmsCmapRec *
+CmapRecForColormap(
+ Display *dpy,
+ Colormap cmap)
+/*
+ * DESCRIPTION
+ * Find the corresponding XcmsCmapRec for cmap. In not found
+ * this routines attempts to create one.
+ *
+ * RETURNS
+ * Returns NULL if failed; otherwise the address to
+ * the corresponding XcmsCmapRec.
+ *
+ */
+{
+ XcmsCmapRec *pRec;
+ int nScrn;
+ int i, j;
+ XVisualInfo visualTemplate; /* Template of the visual we want */
+ XVisualInfo *visualList; /* List for visuals that match */
+ int nVisualsMatched; /* Number of visuals that match */
+ Window tmpWindow;
+ Visual *vp;
+ unsigned long border = 0;
+ _XAsyncHandler async;
+ _XAsyncErrorState async_state;
+
+ for (pRec = (XcmsCmapRec *)dpy->cms.clientCmaps; pRec != NULL;
+ pRec = pRec->pNext) {
+ if (pRec->cmapID == cmap) {
+ return(pRec);
+ }
+ }
+
+ /*
+ * Can't find an XcmsCmapRec associated with cmap in our records.
+ * Let's try to see if its a default colormap
+ */
+ nScrn = ScreenCount(dpy);
+ for (i = 0; i < nScrn; i++) {
+ if (cmap == DefaultColormap(dpy, i)) {
+ /* It is ... lets go ahead and store that info */
+ if ((pRec = _XcmsAddCmapRec(dpy, cmap, RootWindow(dpy, i),
+ DefaultVisual(dpy, i))) == NULL) {
+ return((XcmsCmapRec *)NULL);
+ }
+ pRec->ccc = XcmsCreateCCC(
+ dpy,
+ i, /* screenNumber */
+ DefaultVisual(dpy, i),
+ (XcmsColor *)NULL, /* clientWhitePt */
+ (XcmsCompressionProc)NULL, /* gamutCompProc */
+ (XPointer)NULL, /* gamutCompClientData */
+ (XcmsWhiteAdjustProc)NULL, /* whitePtAdjProc */
+ (XPointer)NULL /* whitePtAdjClientData */
+ );
+ return(pRec);
+ }
+ }
+
+ /*
+ * Nope, its not a default colormap, so it's probably a foreign color map
+ * of which we have no specific details. Let's go through the
+ * rigorous process of finding this colormap:
+ * for each screen
+ * for each screen's visual types
+ * create a window with cmap specified as the colormap
+ * if successful
+ * Add a CmapRec
+ * Create an XcmsCCC
+ * return the CmapRec
+ * else
+ * continue
+ */
+
+ async_state.error_code = 0; /* don't care */
+ async_state.major_opcode = X_CreateWindow;
+ async_state.minor_opcode = 0;
+ for (i = 0; i < nScrn; i++) {
+ visualTemplate.screen = i;
+ visualList = XGetVisualInfo(dpy, VisualScreenMask, &visualTemplate,
+ &nVisualsMatched);
+ if (visualList == NULL) {
+ continue;
+ }
+
+ /*
+ * Attempt to create a window with cmap
+ */
+ j = 0;
+ do {
+ vp = (visualList+j)->visual;
+ LockDisplay(dpy);
+ {
+ register xCreateWindowReq *req;
+
+ GetReq(CreateWindow, req);
+ async_state.min_sequence_number = dpy->request;
+ async_state.max_sequence_number = dpy->request;
+ async_state.error_count = 0;
+ async.next = dpy->async_handlers;
+ async.handler = _XAsyncErrorHandler;
+ async.data = (XPointer)&async_state;
+ dpy->async_handlers = &async;
+ req->parent = RootWindow(dpy, i);
+ req->x = 0;
+ req->y = 0;
+ req->width = 1;
+ req->height = 1;
+ req->borderWidth = 0;
+ req->depth = (visualList+j)->depth;
+ req->class = CopyFromParent;
+ req->visual = vp->visualid;
+ tmpWindow = req->wid = XAllocID(dpy);
+ req->mask = CWBorderPixel | CWColormap;
+ req->length += 2;
+ Data32 (dpy, (long *) &border, 4);
+ Data32 (dpy, (long *) &cmap, 4);
+ }
+ {
+ xGetInputFocusReply rep;
+ register xReq *req;
+
+ GetEmptyReq(GetInputFocus, req);
+ (void) _XReply (dpy, (xReply *)&rep, 0, xTrue);
+ }
+ DeqAsyncHandler(dpy, &async);
+ UnlockDisplay(dpy);
+ SyncHandle();
+ } while (async_state.error_count > 0 && ++j < nVisualsMatched);
+
+ Xfree((char *)visualList);
+
+ /*
+ * if successful
+ */
+ if (j < nVisualsMatched) {
+ if ((pRec = _XcmsAddCmapRec(dpy, cmap, tmpWindow, vp)) == NULL)
+ return((XcmsCmapRec *)NULL);
+ pRec->ccc = XcmsCreateCCC(
+ dpy,
+ i, /* screenNumber */
+ vp,
+ (XcmsColor *)NULL, /* clientWhitePt */
+ (XcmsCompressionProc)NULL, /* gamutCompProc */
+ (XPointer)NULL, /* gamutCompClientData */
+ (XcmsWhiteAdjustProc)NULL, /* whitePtAdjProc */
+ (XPointer)NULL /* whitePtAdjClientData */
+ );
+ XDestroyWindow(dpy, tmpWindow);
+ return(pRec);
+ }
+ }
+
+ return(NULL);
+}
+
+
+
+/************************************************************************
+ * *
+ * API PRIVATE INTERFACES *
+ * *
+ ************************************************************************/
+
+/*
+ * NAME
+ * _XcmsAddCmapRec
+ *
+ * SYNOPSIS
+ */
+XcmsCmapRec *
+_XcmsAddCmapRec(
+ Display *dpy,
+ Colormap cmap,
+ Window windowID,
+ Visual *visual)
+/*
+ * DESCRIPTION
+ * Create an XcmsCmapRec for the specified cmap, windowID,
+ * and visual, then adds it to its list of CmapRec's.
+ *
+ * RETURNS
+ * Returns NULL if failed; otherwise the address to
+ * the added XcmsCmapRec.
+ *
+ */
+{
+ XcmsCmapRec *pNew;
+
+ if ((pNew = (XcmsCmapRec *) Xcalloc(1, (unsigned) sizeof(XcmsCmapRec)))
+ == NULL) {
+ return((XcmsCmapRec *)NULL);
+ }
+
+ pNew->cmapID = cmap;
+ pNew->dpy = dpy;
+ pNew->windowID = windowID;
+ pNew->visual = visual;
+ pNew->pNext = (XcmsCmapRec *)dpy->cms.clientCmaps;
+ dpy->cms.clientCmaps = (XPointer)pNew;
+ dpy->free_funcs->clientCmaps = _XcmsFreeClientCmaps;
+
+ /*
+ * Note, we don't create the XcmsCCC for pNew->ccc here because
+ * it may require the use of XGetWindowAttributes (a round trip request)
+ * to determine the screen.
+ */
+ return(pNew);
+}
+
+
+/*
+ * NAME
+ * _XcmsCopyCmapRecAndFree
+ *
+ * SYNOPSIS
+ */
+XcmsCmapRec *
+_XcmsCopyCmapRecAndFree(
+ Display *dpy,
+ Colormap src_cmap,
+ Colormap copy_cmap)
+/*
+ * DESCRIPTION
+ * Augments Xlib's XCopyColormapAndFree() to copy
+ * XcmsCmapRecs.
+ *
+ * RETURNS
+ * Returns NULL if failed; otherwise the address to
+ * the copy XcmsCmapRec.
+ *
+ */
+{
+ XcmsCmapRec *pRec_src;
+ XcmsCmapRec *pRec_copy;
+
+ if ((pRec_src = CmapRecForColormap(dpy, src_cmap)) != NULL) {
+ pRec_copy =_XcmsAddCmapRec(dpy, copy_cmap, pRec_src->windowID,
+ pRec_src->visual);
+ if (pRec_copy != NULL && pRec_src->ccc) {
+ pRec_copy->ccc = (XcmsCCC)Xcalloc(1, (unsigned) sizeof(XcmsCCCRec));
+ memcpy((char *)pRec_copy->ccc, (char *)pRec_src->ccc,
+ sizeof(XcmsCCCRec));
+ }
+ return(pRec_copy);
+ }
+ return((XcmsCmapRec *)NULL);
+}
+
+
+/*
+ * NAME
+ * _XcmsDeleteCmapRec
+ *
+ * SYNOPSIS
+ */
+void
+_XcmsDeleteCmapRec(
+ Display *dpy,
+ Colormap cmap)
+/*
+ * DESCRIPTION
+ * Removes and frees the specified XcmsCmapRec structure
+ * from the linked list of structures.
+ *
+ * RETURNS
+ * void
+ *
+ */
+{
+ XcmsCmapRec **pPrevPtr;
+ XcmsCmapRec *pRec;
+ int scr;
+
+ /* If it is the default cmap for a screen, do not delete it,
+ * because the server will not actually free it */
+ for (scr = ScreenCount(dpy); --scr >= 0; ) {
+ if (cmap == DefaultColormap(dpy, scr))
+ return;
+ }
+
+ /* search for it in the list */
+ pPrevPtr = (XcmsCmapRec **)&dpy->cms.clientCmaps;
+ while ((pRec = *pPrevPtr) && (pRec->cmapID != cmap)) {
+ pPrevPtr = &pRec->pNext;
+ }
+
+ if (pRec) {
+ if (pRec->ccc) {
+ XcmsFreeCCC(pRec->ccc);
+ }
+ *pPrevPtr = pRec->pNext;
+ Xfree((char *)pRec);
+ }
+}
+
+
+/*
+ * NAME
+ * _XcmsFreeClientCmaps
+ *
+ * SYNOPSIS
+ */
+static void
+_XcmsFreeClientCmaps(
+ Display *dpy)
+/*
+ * DESCRIPTION
+ * Frees all XcmsCmapRec structures in the linked list
+ * and sets dpy->cms.clientCmaps to NULL.
+ *
+ * RETURNS
+ * void
+ *
+ */
+{
+ XcmsCmapRec *pRecNext, *pRecFree;
+
+ pRecNext = (XcmsCmapRec *)dpy->cms.clientCmaps;
+ while (pRecNext != NULL) {
+ pRecFree = pRecNext;
+ pRecNext = pRecNext->pNext;
+ if (pRecFree->ccc) {
+ /* Free the XcmsCCC structure */
+ XcmsFreeCCC(pRecFree->ccc);
+ }
+ /* Now free the XcmsCmapRec structure */
+ Xfree((char *)pRecFree);
+ }
+ dpy->cms.clientCmaps = (XPointer)NULL;
+}
+
+
+
+/************************************************************************
+ * *
+ * PUBLIC INTERFACES *
+ * *
+ ************************************************************************/
+
+/*
+ * NAME
+ * XcmsCCCOfColormap
+ *
+ * SYNOPSIS
+ */
+XcmsCCC
+XcmsCCCOfColormap(
+ Display *dpy,
+ Colormap cmap)
+/*
+ * DESCRIPTION
+ * Finds the XcmsCCC associated with the specified colormap.
+ *
+ * RETURNS
+ * Returns NULL if failed; otherwise the address to
+ * the associated XcmsCCC structure.
+ *
+ */
+{
+ XWindowAttributes windowAttr;
+ XcmsCmapRec *pRec;
+ int nScrn = ScreenCount(dpy);
+ int i;
+
+ if ((pRec = CmapRecForColormap(dpy, cmap)) != NULL) {
+ if (pRec->ccc) {
+ /* XcmsCmapRec already has a XcmsCCC */
+ return(pRec->ccc);
+ }
+
+ /*
+ * The XcmsCmapRec does not have a XcmsCCC yet, so let's create
+ * one. But first, we need to know the screen associated with
+ * cmap, so use XGetWindowAttributes() to extract that
+ * information. Unless, of course there is only one screen!!
+ */
+ if (nScrn == 1) {
+ /* Assume screenNumber == 0 */
+ return(pRec->ccc = XcmsCreateCCC(
+ dpy,
+ 0, /* screenNumber */
+ pRec->visual,
+ (XcmsColor *)NULL, /* clientWhitePt */
+ (XcmsCompressionProc)NULL, /* gamutCompProc */
+ (XPointer)NULL, /* gamutCompClientData */
+ (XcmsWhiteAdjustProc)NULL, /* whitePtAdjProc */
+ (XPointer)NULL /* whitePtAdjClientData */
+ ));
+ } else {
+ if (XGetWindowAttributes(dpy, pRec->windowID, &windowAttr)) {
+ for (i = 0; i < nScrn; i++) {
+ if (ScreenOfDisplay(dpy, i) == windowAttr.screen) {
+ return(pRec->ccc = XcmsCreateCCC(
+ dpy,
+ i, /* screenNumber */
+ pRec->visual,
+ (XcmsColor *)NULL, /* clientWhitePt */
+ (XcmsCompressionProc)NULL, /* gamutCompProc */
+ (XPointer)NULL, /* gamutCompClientData */
+ (XcmsWhiteAdjustProc)NULL, /* whitePtAdjProc */
+ (XPointer)NULL /* whitePtAdjClientData */
+ ));
+ }
+ }
+ }
+ }
+ }
+
+ /*
+ * No such cmap
+ */
+ return(NULL);
+}
+
+XcmsCCC XcmsSetCCCOfColormap(
+ Display *dpy,
+ Colormap cmap,
+ XcmsCCC ccc)
+{
+ XcmsCCC prev_ccc = NULL;
+ XcmsCmapRec *pRec;
+
+ pRec = CmapRecForColormap(dpy, cmap);
+ if (pRec) {
+ prev_ccc = pRec->ccc;
+ pRec->ccc = ccc;
+ }
+ return prev_ccc;
+}
diff --git a/libX11/src/xcms/cmsGlobls.c b/libX11/src/xcms/cmsGlobls.c
index 13f351841..c9e82f242 100644
--- a/libX11/src/xcms/cmsGlobls.c
+++ b/libX11/src/xcms/cmsGlobls.c
@@ -1,126 +1,126 @@
-
-/*
- * Code and supporting documentation (c) Copyright 1990 1991 Tektronix, Inc.
- * All Rights Reserved
- *
- * This file is a component of an X Window System-specific implementation
- * of Xcms based on the TekColor Color Management System. Permission is
- * hereby granted to use, copy, modify, sell, and otherwise distribute this
- * software and its documentation for any purpose and without fee, provided
- * that this copyright, permission, and disclaimer notice is reproduced in
- * all copies of this software and in supporting documentation. TekColor
- * is a trademark of Tektronix, Inc.
- *
- * Tektronix makes no representation about the suitability of this software
- * for any purpose. It is provided "as is" and with all faults.
- *
- * TEKTRONIX DISCLAIMS ALL WARRANTIES APPLICABLE TO THIS SOFTWARE,
- * INCLUDING THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE. IN NO EVENT SHALL TEKTRONIX BE LIABLE FOR ANY
- * SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER
- * RESULTING FROM LOSS OF USE, DATA, OR PROFITS, WHETHER IN AN ACTION OF
- * CONTRACT, NEGLIGENCE, OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
- * CONNECTION WITH THE USE OR THE PERFORMANCE OF THIS SOFTWARE.
- *
- *
- * NAME
- * XcmsGlobls.c
- *
- * DESCRIPTION
- * Source file containing Xcms globals
- *
- *
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-#include "Xcmsint.h"
-#include "Cv.h"
-
-/*
- * GLOBALS
- * Variables declared in this package that are allowed
- * to be used globally.
- */
-
- /*
- * Initial array of Device Independent Color Spaces
- */
-XcmsColorSpace *_XcmsDIColorSpacesInit[] = {
- &XcmsCIEXYZColorSpace,
- &XcmsCIEuvYColorSpace,
- &XcmsCIExyYColorSpace,
- &XcmsCIELabColorSpace,
- &XcmsCIELuvColorSpace,
- &XcmsTekHVCColorSpace,
- &XcmsUNDEFINEDColorSpace,
- NULL
-};
- /*
- * Pointer to the array of pointers to XcmsColorSpace structures for
- * Device-Independent Color Spaces that are currently accessible by
- * the color management system. End of list is indicated by a NULL pointer.
- */
-XcmsColorSpace **_XcmsDIColorSpaces = _XcmsDIColorSpacesInit;
-
- /*
- * Initial array of Device Dependent Color Spaces
- */
-XcmsColorSpace *_XcmsDDColorSpacesInit[] = {
- &XcmsRGBColorSpace,
- &XcmsRGBiColorSpace,
- NULL
-};
- /*
- * Pointer to the array of pointers to XcmsColorSpace structures for
- * Device-Dependent Color Spaces that are currently accessible by
- * the color management system. End of list is indicated by a NULL pointer.
- */
-XcmsColorSpace **_XcmsDDColorSpaces = &_XcmsDDColorSpacesInit[0];
-
- /*
- * Initial array of Screen Color Characterization Function Sets
- */
-XcmsFunctionSet *_XcmsSCCFuncSetsInit[] = {
- &XcmsLinearRGBFunctionSet,
-#ifdef GRAY
- &XcmsGrayFunctionSet,
-#endif /* GRAY */
- NULL};
- /*
- * Pointer to the array of pointers to XcmsSCCFuncSet structures
- * (Screen Color Characterization Function Sets) that are currently
- * accessible by the color management system. End of list is
- * indicated by a NULL pointer.
- */
-XcmsFunctionSet **_XcmsSCCFuncSets = _XcmsSCCFuncSetsInit;
-
- /*
- * X Consortium Registered Device-Independent Color Spaces
- * Note that prefix must be in lowercase.
- */
-const char _XcmsCIEXYZ_prefix[] = "ciexyz";
-const char _XcmsCIEuvY_prefix[] = "cieuvy";
-const char _XcmsCIExyY_prefix[] = "ciexyy";
-const char _XcmsCIELab_prefix[] = "cielab";
-const char _XcmsCIELuv_prefix[] = "cieluv";
-const char _XcmsTekHVC_prefix[] = "tekhvc";
- /*
- * Registered Device-Dependent Color Spaces
- */
-const char _XcmsRGBi_prefix[] = "rgbi";
-const char _XcmsRGB_prefix[] = "rgb";
-
-XcmsRegColorSpaceEntry _XcmsRegColorSpaces[] = {
- { _XcmsCIEXYZ_prefix, XcmsCIEXYZFormat },
- { _XcmsCIEuvY_prefix, XcmsCIEuvYFormat },
- { _XcmsCIExyY_prefix, XcmsCIExyYFormat },
- { _XcmsCIELab_prefix, XcmsCIELabFormat },
- { _XcmsCIELuv_prefix, XcmsCIELuvFormat },
- { _XcmsTekHVC_prefix, XcmsTekHVCFormat },
- { _XcmsRGB_prefix, XcmsRGBFormat },
- { _XcmsRGBi_prefix, XcmsRGBiFormat },
- { NULL, 0 }
-};
+
+/*
+ * Code and supporting documentation (c) Copyright 1990 1991 Tektronix, Inc.
+ * All Rights Reserved
+ *
+ * This file is a component of an X Window System-specific implementation
+ * of Xcms based on the TekColor Color Management System. Permission is
+ * hereby granted to use, copy, modify, sell, and otherwise distribute this
+ * software and its documentation for any purpose and without fee, provided
+ * that this copyright, permission, and disclaimer notice is reproduced in
+ * all copies of this software and in supporting documentation. TekColor
+ * is a trademark of Tektronix, Inc.
+ *
+ * Tektronix makes no representation about the suitability of this software
+ * for any purpose. It is provided "as is" and with all faults.
+ *
+ * TEKTRONIX DISCLAIMS ALL WARRANTIES APPLICABLE TO THIS SOFTWARE,
+ * INCLUDING THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+ * PARTICULAR PURPOSE. IN NO EVENT SHALL TEKTRONIX BE LIABLE FOR ANY
+ * SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER
+ * RESULTING FROM LOSS OF USE, DATA, OR PROFITS, WHETHER IN AN ACTION OF
+ * CONTRACT, NEGLIGENCE, OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
+ * CONNECTION WITH THE USE OR THE PERFORMANCE OF THIS SOFTWARE.
+ *
+ *
+ * NAME
+ * XcmsGlobls.c
+ *
+ * DESCRIPTION
+ * Source file containing Xcms globals
+ *
+ *
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+#include "Xcmsint.h"
+#include "Cv.h"
+
+/*
+ * GLOBALS
+ * Variables declared in this package that are allowed
+ * to be used globally.
+ */
+
+ /*
+ * Initial array of Device Independent Color Spaces
+ */
+XcmsColorSpace *_XcmsDIColorSpacesInit[] = {
+ &XcmsCIEXYZColorSpace,
+ &XcmsCIEuvYColorSpace,
+ &XcmsCIExyYColorSpace,
+ &XcmsCIELabColorSpace,
+ &XcmsCIELuvColorSpace,
+ &XcmsTekHVCColorSpace,
+ &XcmsUNDEFINEDColorSpace,
+ NULL
+};
+ /*
+ * Pointer to the array of pointers to XcmsColorSpace structures for
+ * Device-Independent Color Spaces that are currently accessible by
+ * the color management system. End of list is indicated by a NULL pointer.
+ */
+XcmsColorSpace **_XcmsDIColorSpaces = _XcmsDIColorSpacesInit;
+
+ /*
+ * Initial array of Device Dependent Color Spaces
+ */
+XcmsColorSpace *_XcmsDDColorSpacesInit[] = {
+ &XcmsRGBColorSpace,
+ &XcmsRGBiColorSpace,
+ NULL
+};
+ /*
+ * Pointer to the array of pointers to XcmsColorSpace structures for
+ * Device-Dependent Color Spaces that are currently accessible by
+ * the color management system. End of list is indicated by a NULL pointer.
+ */
+XcmsColorSpace **_XcmsDDColorSpaces = &_XcmsDDColorSpacesInit[0];
+
+ /*
+ * Initial array of Screen Color Characterization Function Sets
+ */
+XcmsFunctionSet *_XcmsSCCFuncSetsInit[] = {
+ &XcmsLinearRGBFunctionSet,
+#ifdef GRAY
+ &XcmsGrayFunctionSet,
+#endif /* GRAY */
+ NULL};
+ /*
+ * Pointer to the array of pointers to XcmsSCCFuncSet structures
+ * (Screen Color Characterization Function Sets) that are currently
+ * accessible by the color management system. End of list is
+ * indicated by a NULL pointer.
+ */
+XcmsFunctionSet **_XcmsSCCFuncSets = _XcmsSCCFuncSetsInit;
+
+ /*
+ * X Consortium Registered Device-Independent Color Spaces
+ * Note that prefix must be in lowercase.
+ */
+const char _XcmsCIEXYZ_prefix[] = "ciexyz";
+const char _XcmsCIEuvY_prefix[] = "cieuvy";
+const char _XcmsCIExyY_prefix[] = "ciexyy";
+const char _XcmsCIELab_prefix[] = "cielab";
+const char _XcmsCIELuv_prefix[] = "cieluv";
+const char _XcmsTekHVC_prefix[] = "tekhvc";
+ /*
+ * Registered Device-Dependent Color Spaces
+ */
+const char _XcmsRGBi_prefix[] = "rgbi";
+const char _XcmsRGB_prefix[] = "rgb";
+
+XcmsRegColorSpaceEntry _XcmsRegColorSpaces[] = {
+ { _XcmsCIEXYZ_prefix, XcmsCIEXYZFormat },
+ { _XcmsCIEuvY_prefix, XcmsCIEuvYFormat },
+ { _XcmsCIExyY_prefix, XcmsCIExyYFormat },
+ { _XcmsCIELab_prefix, XcmsCIELabFormat },
+ { _XcmsCIELuv_prefix, XcmsCIELuvFormat },
+ { _XcmsTekHVC_prefix, XcmsTekHVCFormat },
+ { _XcmsRGB_prefix, XcmsRGBFormat },
+ { _XcmsRGBi_prefix, XcmsRGBiFormat },
+ { NULL, 0 }
+};
diff --git a/libX11/src/xcms/cmsInt.c b/libX11/src/xcms/cmsInt.c
index 47c54a701..b7c321472 100644
--- a/libX11/src/xcms/cmsInt.c
+++ b/libX11/src/xcms/cmsInt.c
@@ -1,412 +1,412 @@
-
-/*
- * Code and supporting documentation (c) Copyright 1990 1991 Tektronix, Inc.
- * All Rights Reserved
- *
- * This file is a component of an X Window System-specific implementation
- * of Xcms based on the TekColor Color Management System. Permission is
- * hereby granted to use, copy, modify, sell, and otherwise distribute this
- * software and its documentation for any purpose and without fee, provided
- * that this copyright, permission, and disclaimer notice is reproduced in
- * all copies of this software and in supporting documentation. TekColor
- * is a trademark of Tektronix, Inc.
- *
- * Tektronix makes no representation about the suitability of this software
- * for any purpose. It is provided "as is" and with all faults.
- *
- * TEKTRONIX DISCLAIMS ALL WARRANTIES APPLICABLE TO THIS SOFTWARE,
- * INCLUDING THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE. IN NO EVENT SHALL TEKTRONIX BE LIABLE FOR ANY
- * SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER
- * RESULTING FROM LOSS OF USE, DATA, OR PROFITS, WHETHER IN AN ACTION OF
- * CONTRACT, NEGLIGENCE, OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
- * CONNECTION WITH THE USE OR THE PERFORMANCE OF THIS SOFTWARE.
- *
- *
- * NAME
- * XcmsInt.c - Xcms API utility routines
- *
- * DESCRIPTION
- * Xcms Application Program Interface (API) utility
- * routines for hanging information directly onto
- * the Display structure.
- *
- *
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include <stdio.h>
-#include "Xlibint.h"
-#include "Xcmsint.h"
-#include "Cv.h"
-
-#ifndef XCMSCOMPPROC
-# define XCMSCOMPPROC XcmsTekHVCClipC
-#endif
-
-/* forward/static */
-static void _XcmsFreeDefaultCCCs(Display *dpy);
-
-
-/************************************************************************
- * *
- * API PRIVATE ROUTINES *
- * *
- ************************************************************************/
-
-/*
- * NAME
- * _XcmsCopyPointerArray
- *
- * SYNOPSIS
- */
-XPointer *
-_XcmsCopyPointerArray(
- XPointer *pap)
-/*
- * DESCRIPTION
- * Copies an array of NULL terminated pointers.
- *
- * RETURNS
- * Returns NULL if failed; otherwise the address to
- * the copy.
- *
- */
-{
- XPointer *newArray;
- char **tmp;
- int n;
-
- for (tmp = pap, n = 0; *tmp != NULL; tmp++, n++);
- n++; /* add 1 to include the NULL pointer */
-
- if ((newArray = (XPointer *)Xmalloc(n * sizeof(XPointer)))) {
- memcpy((char *)newArray, (char *)pap,
- (unsigned)(n * sizeof(XPointer)));
- }
- return((XPointer *)newArray);
-}
-
-/*
- * NAME
- * _XcmsFreePointerArray
- *
- * SYNOPSIS
- */
-void
-_XcmsFreePointerArray(
- XPointer *pap)
-/*
- * DESCRIPTION
- * Frees an array of NULL terminated pointers.
- *
- * RETURNS
- * void
- *
- */
-{
- Xfree(pap);
-}
-
-/*
- * NAME
- * _XcmsPushPointerArray
- *
- * SYNOPSIS
- */
-XPointer *
-_XcmsPushPointerArray(
- XPointer *pap,
- XPointer p,
- XPointer *papNoFree)
-/*
- * DESCRIPTION
- * Places the specified pointer at the head of an array of NULL
- * terminated pointers.
- *
- * RETURNS
- * Returns NULL if failed; otherwise the address to
- * the head of the array.
- *
- */
-{
- XPointer *newArray;
- char **tmp;
- int n;
-
- for (tmp = pap, n = 0; *tmp != NULL; tmp++, n++);
-
- /* add 2: 1 for the new pointer and another for the NULL pointer */
- n += 2;
-
- if ((newArray = (XPointer *)Xmalloc(n * sizeof(XPointer)))) {
- memcpy((char *)(newArray+1),(char *)pap,
- (unsigned)((n-1) * sizeof(XPointer)));
- *newArray = p;
- }
- if (pap != papNoFree) {
- _XcmsFreePointerArray(pap);
- }
- return((XPointer *)newArray);
-}
-
-/*
- * NAME
- * _XcmsInitDefaultCCCs
- *
- * SYNOPSIS
- */
-int
-_XcmsInitDefaultCCCs(
- Display *dpy)
-/*
- * DESCRIPTION
- * Initializes the Xcms per Display Info structure
- * (XcmsPerDpyInfo).
- *
- * RETURNS
- * Returns 0 if failed; otherwise non-zero.
- *
- */
-{
- int nScrn = ScreenCount(dpy);
- int i;
- XcmsCCC ccc;
-
- if (nScrn <= 0) {
- return(0);
- }
-
- /*
- * Create an array of XcmsCCC structures, one for each screen.
- * They serve as the screen's default CCC.
- */
- if (!(ccc = (XcmsCCC)
- Xcalloc((unsigned)nScrn, (unsigned) sizeof(XcmsCCCRec)))) {
- return(0);
- }
- dpy->cms.defaultCCCs = (XPointer)ccc;
- dpy->free_funcs->defaultCCCs = _XcmsFreeDefaultCCCs;
-
- for (i = 0; i < nScrn; i++, ccc++) {
- ccc->dpy = dpy;
- ccc->screenNumber = i;
- ccc->visual = DefaultVisual(dpy, i);
- /*
- * Used calloc to allocate memory so:
- * ccc->clientWhitePt->format == XcmsUndefinedFormat
- * ccc->gamutCompProc == NULL
- * ccc->whitePtAdjProc == NULL
- * ccc->pPerScrnInfo = NULL
- *
- * Don't need to create XcmsPerScrnInfo and its functionSet and
- * pScreenData components until the default CCC is accessed.
- * Note that the XcmsDefaultCCC routine calls _XcmsInitScrnInto
- * to do this.
- */
- ccc->gamutCompProc = XCMSCOMPPROC;
- }
-
- return(1);
-}
-
-
-/*
- * NAME
- * _XcmsFreeDefaultCCCs - Free Default CCCs and its PerScrnInfo
- *
- * SYNOPSIS
- */
-static void
-_XcmsFreeDefaultCCCs(
- Display *dpy)
-/*
- * DESCRIPTION
- * This routine frees the default XcmsCCC's associated with
- * each screen and its associated substructures as neccessary.
- *
- * RETURNS
- * void
- *
- *
- */
-{
- int nScrn = ScreenCount(dpy);
- XcmsCCC ccc;
- int i;
-
- /*
- * Free Screen data in each DefaultCCC
- * Do not use XcmsFreeCCC here because it will not free
- * DefaultCCC's.
- */
- ccc = (XcmsCCC)dpy->cms.defaultCCCs;
- for (i = nScrn; i--; ccc++) {
- /*
- * Check if XcmsPerScrnInfo exists.
- *
- * This is the only place where XcmsPerScrnInfo structures
- * are freed since there is only one allocated per Screen.
- * It just so happens that we place its reference in the
- * default CCC.
- */
- if (ccc->pPerScrnInfo) {
- /* Check if SCCData exists */
- if (ccc->pPerScrnInfo->state != XcmsInitNone
- && ccc->pPerScrnInfo->screenData) {
- (*((XcmsFunctionSet *)ccc->pPerScrnInfo->functionSet)->screenFreeProc)
- (ccc->pPerScrnInfo->screenData);
- }
- Xfree(ccc->pPerScrnInfo);
- }
- }
-
- /*
- * Free the array of XcmsCCC structures
- */
- Xfree(dpy->cms.defaultCCCs);
- dpy->cms.defaultCCCs = (XPointer)NULL;
-}
-
-
-
-/*
- * NAME
- * _XcmsInitScrnInfo
- *
- * SYNOPSIS
- */
-int
-_XcmsInitScrnInfo(
- register Display *dpy,
- int screenNumber)
-/*
- * DESCRIPTION
- * Given a display and screen number, this routine attempts
- * to initialize the Xcms per Screen Info structure
- * (XcmsPerScrnInfo).
- *
- * RETURNS
- * Returns zero if initialization failed; non-zero otherwise.
- */
-{
- XcmsFunctionSet **papSCCFuncSet = _XcmsSCCFuncSets;
- XcmsCCC defaultccc;
-
- /*
- * Check if the XcmsCCC's for each screen has been created.
- * Really dont need to be created until some routine uses the Xcms
- * API routines.
- */
- if ((XcmsCCC)dpy->cms.defaultCCCs == NULL) {
- if (!_XcmsInitDefaultCCCs(dpy)) {
- return(0);
- }
- }
-
- defaultccc = (XcmsCCC)dpy->cms.defaultCCCs + screenNumber;
-
- /*
- * For each SCCFuncSet, try its pInitScrnFunc.
- * If the function succeeds, then we got it!
- */
-
- if (!defaultccc->pPerScrnInfo) {
- /*
- * This is one of two places where XcmsPerScrnInfo structures
- * are allocated. There is one allocated per Screen that is
- * shared among visuals that do not have specific intensity
- * tables. Other XcmsPerScrnInfo structures are created
- * for the latter (see XcmsCreateCCC). The ones created
- * here are referenced by the default CCC.
- */
- if (!(defaultccc->pPerScrnInfo = (XcmsPerScrnInfo *)
- Xcalloc(1, (unsigned) sizeof(XcmsPerScrnInfo)))) {
- return(0);
- }
- defaultccc->pPerScrnInfo->state = XcmsInitNone;
- }
-
- while (*papSCCFuncSet != NULL) {
- if ((*(*papSCCFuncSet)->screenInitProc)(dpy, screenNumber,
- defaultccc->pPerScrnInfo)) {
- defaultccc->pPerScrnInfo->state = XcmsInitSuccess;
- return(1);
- }
- papSCCFuncSet++;
- }
-
- /*
- * Use Default SCCData
- */
- return(_XcmsLRGB_InitScrnDefault(dpy, screenNumber, defaultccc->pPerScrnInfo));
-}
-
-
-/*
- * NAME
- * _XcmsFreeIntensityMaps
- *
- * SYNOPSIS
- */
-void
-_XcmsFreeIntensityMaps(
- Display *dpy)
-/*
- * DESCRIPTION
- * Frees all XcmsIntensityMap structures in the linked list
- * and sets dpy->cms.perVisualIntensityMaps to NULL.
- *
- * RETURNS
- * void
- *
- */
-{
- XcmsIntensityMap *pNext, *pFree;
-
- pNext = (XcmsIntensityMap *)dpy->cms.perVisualIntensityMaps;
- while (pNext != NULL) {
- pFree = pNext;
- pNext = pNext->pNext;
- (*pFree->pFreeScreenData)(pFree->screenData);
- /* Now free the XcmsIntensityMap structure */
- Xfree(pFree);
- }
- dpy->cms.perVisualIntensityMaps = (XPointer)NULL;
-}
-
-
-/*
- * NAME
- * _XcmsGetIntensityMap
- *
- * SYNOPSIS
- */
-XcmsIntensityMap *
-_XcmsGetIntensityMap(
- Display *dpy,
- Visual *visual)
-/*
- * DESCRIPTION
- * Attempts to return a per-Visual intensity map.
- *
- * RETURNS
- * Pointer to the XcmsIntensityMap structure if found;
- * otherwise NULL
- *
- */
-{
- VisualID targetID = visual->visualid;
- XcmsIntensityMap *pNext;
-
- pNext = (XcmsIntensityMap *)dpy->cms.perVisualIntensityMaps;
- while (pNext != NULL) {
- if (targetID == pNext->visualID) {
- return(pNext);
- }
- pNext = pNext->pNext;
- }
- return((XcmsIntensityMap *)NULL);
-}
+
+/*
+ * Code and supporting documentation (c) Copyright 1990 1991 Tektronix, Inc.
+ * All Rights Reserved
+ *
+ * This file is a component of an X Window System-specific implementation
+ * of Xcms based on the TekColor Color Management System. Permission is
+ * hereby granted to use, copy, modify, sell, and otherwise distribute this
+ * software and its documentation for any purpose and without fee, provided
+ * that this copyright, permission, and disclaimer notice is reproduced in
+ * all copies of this software and in supporting documentation. TekColor
+ * is a trademark of Tektronix, Inc.
+ *
+ * Tektronix makes no representation about the suitability of this software
+ * for any purpose. It is provided "as is" and with all faults.
+ *
+ * TEKTRONIX DISCLAIMS ALL WARRANTIES APPLICABLE TO THIS SOFTWARE,
+ * INCLUDING THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+ * PARTICULAR PURPOSE. IN NO EVENT SHALL TEKTRONIX BE LIABLE FOR ANY
+ * SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER
+ * RESULTING FROM LOSS OF USE, DATA, OR PROFITS, WHETHER IN AN ACTION OF
+ * CONTRACT, NEGLIGENCE, OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
+ * CONNECTION WITH THE USE OR THE PERFORMANCE OF THIS SOFTWARE.
+ *
+ *
+ * NAME
+ * XcmsInt.c - Xcms API utility routines
+ *
+ * DESCRIPTION
+ * Xcms Application Program Interface (API) utility
+ * routines for hanging information directly onto
+ * the Display structure.
+ *
+ *
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include <stdio.h>
+#include "Xlibint.h"
+#include "Xcmsint.h"
+#include "Cv.h"
+
+#ifndef XCMSCOMPPROC
+# define XCMSCOMPPROC XcmsTekHVCClipC
+#endif
+
+/* forward/static */
+static void _XcmsFreeDefaultCCCs(Display *dpy);
+
+
+/************************************************************************
+ * *
+ * API PRIVATE ROUTINES *
+ * *
+ ************************************************************************/
+
+/*
+ * NAME
+ * _XcmsCopyPointerArray
+ *
+ * SYNOPSIS
+ */
+XPointer *
+_XcmsCopyPointerArray(
+ XPointer *pap)
+/*
+ * DESCRIPTION
+ * Copies an array of NULL terminated pointers.
+ *
+ * RETURNS
+ * Returns NULL if failed; otherwise the address to
+ * the copy.
+ *
+ */
+{
+ XPointer *newArray;
+ char **tmp;
+ int n;
+
+ for (tmp = pap, n = 0; *tmp != NULL; tmp++, n++);
+ n++; /* add 1 to include the NULL pointer */
+
+ if ((newArray = (XPointer *)Xmalloc(n * sizeof(XPointer)))) {
+ memcpy((char *)newArray, (char *)pap,
+ (unsigned)(n * sizeof(XPointer)));
+ }
+ return((XPointer *)newArray);
+}
+
+/*
+ * NAME
+ * _XcmsFreePointerArray
+ *
+ * SYNOPSIS
+ */
+void
+_XcmsFreePointerArray(
+ XPointer *pap)
+/*
+ * DESCRIPTION
+ * Frees an array of NULL terminated pointers.
+ *
+ * RETURNS
+ * void
+ *
+ */
+{
+ Xfree(pap);
+}
+
+/*
+ * NAME
+ * _XcmsPushPointerArray
+ *
+ * SYNOPSIS
+ */
+XPointer *
+_XcmsPushPointerArray(
+ XPointer *pap,
+ XPointer p,
+ XPointer *papNoFree)
+/*
+ * DESCRIPTION
+ * Places the specified pointer at the head of an array of NULL
+ * terminated pointers.
+ *
+ * RETURNS
+ * Returns NULL if failed; otherwise the address to
+ * the head of the array.
+ *
+ */
+{
+ XPointer *newArray;
+ char **tmp;
+ int n;
+
+ for (tmp = pap, n = 0; *tmp != NULL; tmp++, n++);
+
+ /* add 2: 1 for the new pointer and another for the NULL pointer */
+ n += 2;
+
+ if ((newArray = (XPointer *)Xmalloc(n * sizeof(XPointer)))) {
+ memcpy((char *)(newArray+1),(char *)pap,
+ (unsigned)((n-1) * sizeof(XPointer)));
+ *newArray = p;
+ }
+ if (pap != papNoFree) {
+ _XcmsFreePointerArray(pap);
+ }
+ return((XPointer *)newArray);
+}
+
+/*
+ * NAME
+ * _XcmsInitDefaultCCCs
+ *
+ * SYNOPSIS
+ */
+int
+_XcmsInitDefaultCCCs(
+ Display *dpy)
+/*
+ * DESCRIPTION
+ * Initializes the Xcms per Display Info structure
+ * (XcmsPerDpyInfo).
+ *
+ * RETURNS
+ * Returns 0 if failed; otherwise non-zero.
+ *
+ */
+{
+ int nScrn = ScreenCount(dpy);
+ int i;
+ XcmsCCC ccc;
+
+ if (nScrn <= 0) {
+ return(0);
+ }
+
+ /*
+ * Create an array of XcmsCCC structures, one for each screen.
+ * They serve as the screen's default CCC.
+ */
+ if (!(ccc = (XcmsCCC)
+ Xcalloc((unsigned)nScrn, (unsigned) sizeof(XcmsCCCRec)))) {
+ return(0);
+ }
+ dpy->cms.defaultCCCs = (XPointer)ccc;
+ dpy->free_funcs->defaultCCCs = _XcmsFreeDefaultCCCs;
+
+ for (i = 0; i < nScrn; i++, ccc++) {
+ ccc->dpy = dpy;
+ ccc->screenNumber = i;
+ ccc->visual = DefaultVisual(dpy, i);
+ /*
+ * Used calloc to allocate memory so:
+ * ccc->clientWhitePt->format == XcmsUndefinedFormat
+ * ccc->gamutCompProc == NULL
+ * ccc->whitePtAdjProc == NULL
+ * ccc->pPerScrnInfo = NULL
+ *
+ * Don't need to create XcmsPerScrnInfo and its functionSet and
+ * pScreenData components until the default CCC is accessed.
+ * Note that the XcmsDefaultCCC routine calls _XcmsInitScrnInto
+ * to do this.
+ */
+ ccc->gamutCompProc = XCMSCOMPPROC;
+ }
+
+ return(1);
+}
+
+
+/*
+ * NAME
+ * _XcmsFreeDefaultCCCs - Free Default CCCs and its PerScrnInfo
+ *
+ * SYNOPSIS
+ */
+static void
+_XcmsFreeDefaultCCCs(
+ Display *dpy)
+/*
+ * DESCRIPTION
+ * This routine frees the default XcmsCCC's associated with
+ * each screen and its associated substructures as neccessary.
+ *
+ * RETURNS
+ * void
+ *
+ *
+ */
+{
+ int nScrn = ScreenCount(dpy);
+ XcmsCCC ccc;
+ int i;
+
+ /*
+ * Free Screen data in each DefaultCCC
+ * Do not use XcmsFreeCCC here because it will not free
+ * DefaultCCC's.
+ */
+ ccc = (XcmsCCC)dpy->cms.defaultCCCs;
+ for (i = nScrn; i--; ccc++) {
+ /*
+ * Check if XcmsPerScrnInfo exists.
+ *
+ * This is the only place where XcmsPerScrnInfo structures
+ * are freed since there is only one allocated per Screen.
+ * It just so happens that we place its reference in the
+ * default CCC.
+ */
+ if (ccc->pPerScrnInfo) {
+ /* Check if SCCData exists */
+ if (ccc->pPerScrnInfo->state != XcmsInitNone
+ && ccc->pPerScrnInfo->screenData) {
+ (*((XcmsFunctionSet *)ccc->pPerScrnInfo->functionSet)->screenFreeProc)
+ (ccc->pPerScrnInfo->screenData);
+ }
+ Xfree(ccc->pPerScrnInfo);
+ }
+ }
+
+ /*
+ * Free the array of XcmsCCC structures
+ */
+ Xfree(dpy->cms.defaultCCCs);
+ dpy->cms.defaultCCCs = (XPointer)NULL;
+}
+
+
+
+/*
+ * NAME
+ * _XcmsInitScrnInfo
+ *
+ * SYNOPSIS
+ */
+int
+_XcmsInitScrnInfo(
+ register Display *dpy,
+ int screenNumber)
+/*
+ * DESCRIPTION
+ * Given a display and screen number, this routine attempts
+ * to initialize the Xcms per Screen Info structure
+ * (XcmsPerScrnInfo).
+ *
+ * RETURNS
+ * Returns zero if initialization failed; non-zero otherwise.
+ */
+{
+ XcmsFunctionSet **papSCCFuncSet = _XcmsSCCFuncSets;
+ XcmsCCC defaultccc;
+
+ /*
+ * Check if the XcmsCCC's for each screen has been created.
+ * Really dont need to be created until some routine uses the Xcms
+ * API routines.
+ */
+ if ((XcmsCCC)dpy->cms.defaultCCCs == NULL) {
+ if (!_XcmsInitDefaultCCCs(dpy)) {
+ return(0);
+ }
+ }
+
+ defaultccc = (XcmsCCC)dpy->cms.defaultCCCs + screenNumber;
+
+ /*
+ * For each SCCFuncSet, try its pInitScrnFunc.
+ * If the function succeeds, then we got it!
+ */
+
+ if (!defaultccc->pPerScrnInfo) {
+ /*
+ * This is one of two places where XcmsPerScrnInfo structures
+ * are allocated. There is one allocated per Screen that is
+ * shared among visuals that do not have specific intensity
+ * tables. Other XcmsPerScrnInfo structures are created
+ * for the latter (see XcmsCreateCCC). The ones created
+ * here are referenced by the default CCC.
+ */
+ if (!(defaultccc->pPerScrnInfo = (XcmsPerScrnInfo *)
+ Xcalloc(1, (unsigned) sizeof(XcmsPerScrnInfo)))) {
+ return(0);
+ }
+ defaultccc->pPerScrnInfo->state = XcmsInitNone;
+ }
+
+ while (*papSCCFuncSet != NULL) {
+ if ((*(*papSCCFuncSet)->screenInitProc)(dpy, screenNumber,
+ defaultccc->pPerScrnInfo)) {
+ defaultccc->pPerScrnInfo->state = XcmsInitSuccess;
+ return(1);
+ }
+ papSCCFuncSet++;
+ }
+
+ /*
+ * Use Default SCCData
+ */
+ return(_XcmsLRGB_InitScrnDefault(dpy, screenNumber, defaultccc->pPerScrnInfo));
+}
+
+
+/*
+ * NAME
+ * _XcmsFreeIntensityMaps
+ *
+ * SYNOPSIS
+ */
+void
+_XcmsFreeIntensityMaps(
+ Display *dpy)
+/*
+ * DESCRIPTION
+ * Frees all XcmsIntensityMap structures in the linked list
+ * and sets dpy->cms.perVisualIntensityMaps to NULL.
+ *
+ * RETURNS
+ * void
+ *
+ */
+{
+ XcmsIntensityMap *pNext, *pFree;
+
+ pNext = (XcmsIntensityMap *)dpy->cms.perVisualIntensityMaps;
+ while (pNext != NULL) {
+ pFree = pNext;
+ pNext = pNext->pNext;
+ (*pFree->pFreeScreenData)(pFree->screenData);
+ /* Now free the XcmsIntensityMap structure */
+ Xfree(pFree);
+ }
+ dpy->cms.perVisualIntensityMaps = (XPointer)NULL;
+}
+
+
+/*
+ * NAME
+ * _XcmsGetIntensityMap
+ *
+ * SYNOPSIS
+ */
+XcmsIntensityMap *
+_XcmsGetIntensityMap(
+ Display *dpy,
+ Visual *visual)
+/*
+ * DESCRIPTION
+ * Attempts to return a per-Visual intensity map.
+ *
+ * RETURNS
+ * Pointer to the XcmsIntensityMap structure if found;
+ * otherwise NULL
+ *
+ */
+{
+ VisualID targetID = visual->visualid;
+ XcmsIntensityMap *pNext;
+
+ pNext = (XcmsIntensityMap *)dpy->cms.perVisualIntensityMaps;
+ while (pNext != NULL) {
+ if (targetID == pNext->visualID) {
+ return(pNext);
+ }
+ pNext = pNext->pNext;
+ }
+ return((XcmsIntensityMap *)NULL);
+}
diff --git a/libX11/src/xcms/cmsLkCol.c b/libX11/src/xcms/cmsLkCol.c
index 02e48462e..15e987424 100644
--- a/libX11/src/xcms/cmsLkCol.c
+++ b/libX11/src/xcms/cmsLkCol.c
@@ -1,193 +1,193 @@
-
-/*
- * Code and supporting documentation (c) Copyright 1990 1991 Tektronix, Inc.
- * All Rights Reserved
- *
- * This file is a component of an X Window System-specific implementation
- * of Xcms based on the TekColor Color Management System. Permission is
- * hereby granted to use, copy, modify, sell, and otherwise distribute this
- * software and its documentation for any purpose and without fee, provided
- * that this copyright, permission, and disclaimer notice is reproduced in
- * all copies of this software and in supporting documentation. TekColor
- * is a trademark of Tektronix, Inc.
- *
- * Tektronix makes no representation about the suitability of this software
- * for any purpose. It is provided "as is" and with all faults.
- *
- * TEKTRONIX DISCLAIMS ALL WARRANTIES APPLICABLE TO THIS SOFTWARE,
- * INCLUDING THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE. IN NO EVENT SHALL TEKTRONIX BE LIABLE FOR ANY
- * SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER
- * RESULTING FROM LOSS OF USE, DATA, OR PROFITS, WHETHER IN AN ACTION OF
- * CONTRACT, NEGLIGENCE, OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
- * CONNECTION WITH THE USE OR THE PERFORMANCE OF THIS SOFTWARE.
- *
- *
- * NAME
- * XcmsLkCol.c
- *
- * DESCRIPTION
- * Source for XcmsLookupColor
- *
- *
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include <stdio.h>
-#include "Xlibint.h"
-#include "Xcmsint.h"
-#include "Cv.h"
-
-
-/*
- * NAME
- * XcmsLookupColor -
- *
- * SYNOPSIS
- */
-Status
-XcmsLookupColor (
- Display *dpy,
- Colormap cmap,
- _Xconst char *colorname,
- XcmsColor *pColor_exact_return,
- XcmsColor *pColor_scrn_return,
- XcmsColorFormat result_format)
-/*
- * DESCRIPTION
- * The XcmsLookupColor function finds the color specification
- * associated with a color name in the Device-Independent Color
- * Name Database.
- * RETURNS
- * This function returns both the color specification found in the
- * database (db specification) and the color specification for the
- * color displayable by the specified screen (screen
- * specification). The calling routine sets the format for these
- * returned specifications in the XcmsColor format component.
- * If XcmsUndefinedFormat, the specification is returned in the
- * format used to store the color in the database.
- */
-{
- Status retval1 = XcmsSuccess;
- Status retval2 = XcmsSuccess;
- XcmsCCC ccc;
- register int n;
- xLookupColorReply reply;
- register xLookupColorReq *req;
- XColor def, scr;
-
-/*
- * 0. Check for invalid arguments.
- */
- if (dpy == NULL || colorname[0] == '\0' || pColor_scrn_return == 0
- || pColor_exact_return == NULL) {
- return(XcmsFailure);
- }
-
- if ((ccc = XcmsCCCOfColormap(dpy, cmap)) == (XcmsCCC)NULL) {
- return(XcmsFailure);
- }
-
-/*
- * 1. Convert string to a XcmsColor
- */
- if ((retval1 = _XcmsResolveColorString(ccc, &colorname,
- pColor_exact_return, result_format)) == XcmsFailure) {
- return(XcmsFailure);
- }
- if (retval1 == _XCMS_NEWNAME) {
- goto PassToServer;
- }
-
-/*
- * 2. pColor_scrn_return
- * Assume the pColor_exact_return has already been adjusted to
- * the Client White Point.
- *
- */
- /*
- * Convert to RGB, adjusting for white point differences if necessary.
- */
- memcpy((char *)pColor_scrn_return, (char *)pColor_exact_return,
- sizeof(XcmsColor));
- if (pColor_scrn_return->format == XcmsRGBFormat) {
- retval2 = XcmsSuccess;
- } else if ((retval2 = XcmsConvertColors(ccc, pColor_scrn_return, 1,
- XcmsRGBFormat, (Bool *)NULL)) == XcmsFailure) {
- return(XcmsFailure);
- }
-
- /*
- * Then, convert XcmsColor structure to the target specification
- * format. Note that we must use NULL instead of passing
- * pCompressed.
- */
-
- if (result_format == XcmsUndefinedFormat) {
- result_format = pColor_exact_return->format;
- }
- if (result_format == XcmsRGBFormat) {
- _XcmsUnresolveColor(ccc, pColor_scrn_return);
- } else {
- _XcmsResolveColor(ccc, pColor_scrn_return);
- if (XcmsConvertColors(ccc, pColor_scrn_return, 1, result_format,
- (Bool *) NULL) == XcmsFailure) {
- return(XcmsFailure);
- }
- }
-
- return(retval1 > retval2 ? retval1 : retval2);
-
-PassToServer:
- /*
- * Xcms and i18n methods failed, so lets pass it to the server
- * for parsing.
- */
-
- LockDisplay(dpy);
- GetReq (LookupColor, req);
- req->cmap = cmap;
- req->nbytes = n = strlen(colorname);
- req->length += (n + 3) >> 2;
- Data (dpy, colorname, (long)n);
- if (!_XReply (dpy, (xReply *) &reply, 0, xTrue)) {
- UnlockDisplay(dpy);
- SyncHandle();
- return (XcmsFailure);
- }
- def.red = reply.exactRed;
- def.green = reply.exactGreen;
- def.blue = reply.exactBlue;
-
- scr.red = reply.screenRed;
- scr.green = reply.screenGreen;
- scr.blue = reply.screenBlue;
-
- UnlockDisplay(dpy);
- SyncHandle();
-
- _XColor_to_XcmsRGB(ccc, &def, pColor_exact_return, 1);
- _XColor_to_XcmsRGB(ccc, &scr, pColor_scrn_return, 1);
-
- /*
- * Then, convert XcmsColor structure to the target specification
- * format. Note that we must use NULL instead of passing
- * pCompressed.
- */
-
- if (result_format != XcmsRGBFormat
- && result_format != XcmsUndefinedFormat) {
- if (XcmsConvertColors(ccc, pColor_exact_return, 1, result_format,
- (Bool *) NULL) == XcmsFailure) {
- return(XcmsFailure);
- }
- if (XcmsConvertColors(ccc, pColor_scrn_return, 1, result_format,
- (Bool *) NULL) == XcmsFailure) {
- return(XcmsFailure);
- }
- }
-
- return(XcmsSuccess);
-}
+
+/*
+ * Code and supporting documentation (c) Copyright 1990 1991 Tektronix, Inc.
+ * All Rights Reserved
+ *
+ * This file is a component of an X Window System-specific implementation
+ * of Xcms based on the TekColor Color Management System. Permission is
+ * hereby granted to use, copy, modify, sell, and otherwise distribute this
+ * software and its documentation for any purpose and without fee, provided
+ * that this copyright, permission, and disclaimer notice is reproduced in
+ * all copies of this software and in supporting documentation. TekColor
+ * is a trademark of Tektronix, Inc.
+ *
+ * Tektronix makes no representation about the suitability of this software
+ * for any purpose. It is provided "as is" and with all faults.
+ *
+ * TEKTRONIX DISCLAIMS ALL WARRANTIES APPLICABLE TO THIS SOFTWARE,
+ * INCLUDING THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+ * PARTICULAR PURPOSE. IN NO EVENT SHALL TEKTRONIX BE LIABLE FOR ANY
+ * SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER
+ * RESULTING FROM LOSS OF USE, DATA, OR PROFITS, WHETHER IN AN ACTION OF
+ * CONTRACT, NEGLIGENCE, OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
+ * CONNECTION WITH THE USE OR THE PERFORMANCE OF THIS SOFTWARE.
+ *
+ *
+ * NAME
+ * XcmsLkCol.c
+ *
+ * DESCRIPTION
+ * Source for XcmsLookupColor
+ *
+ *
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include <stdio.h>
+#include "Xlibint.h"
+#include "Xcmsint.h"
+#include "Cv.h"
+
+
+/*
+ * NAME
+ * XcmsLookupColor -
+ *
+ * SYNOPSIS
+ */
+Status
+XcmsLookupColor (
+ Display *dpy,
+ Colormap cmap,
+ _Xconst char *colorname,
+ XcmsColor *pColor_exact_return,
+ XcmsColor *pColor_scrn_return,
+ XcmsColorFormat result_format)
+/*
+ * DESCRIPTION
+ * The XcmsLookupColor function finds the color specification
+ * associated with a color name in the Device-Independent Color
+ * Name Database.
+ * RETURNS
+ * This function returns both the color specification found in the
+ * database (db specification) and the color specification for the
+ * color displayable by the specified screen (screen
+ * specification). The calling routine sets the format for these
+ * returned specifications in the XcmsColor format component.
+ * If XcmsUndefinedFormat, the specification is returned in the
+ * format used to store the color in the database.
+ */
+{
+ Status retval1 = XcmsSuccess;
+ Status retval2 = XcmsSuccess;
+ XcmsCCC ccc;
+ register int n;
+ xLookupColorReply reply;
+ register xLookupColorReq *req;
+ XColor def, scr;
+
+/*
+ * 0. Check for invalid arguments.
+ */
+ if (dpy == NULL || colorname[0] == '\0' || pColor_scrn_return == 0
+ || pColor_exact_return == NULL) {
+ return(XcmsFailure);
+ }
+
+ if ((ccc = XcmsCCCOfColormap(dpy, cmap)) == (XcmsCCC)NULL) {
+ return(XcmsFailure);
+ }
+
+/*
+ * 1. Convert string to a XcmsColor
+ */
+ if ((retval1 = _XcmsResolveColorString(ccc, &colorname,
+ pColor_exact_return, result_format)) == XcmsFailure) {
+ return(XcmsFailure);
+ }
+ if (retval1 == _XCMS_NEWNAME) {
+ goto PassToServer;
+ }
+
+/*
+ * 2. pColor_scrn_return
+ * Assume the pColor_exact_return has already been adjusted to
+ * the Client White Point.
+ *
+ */
+ /*
+ * Convert to RGB, adjusting for white point differences if necessary.
+ */
+ memcpy((char *)pColor_scrn_return, (char *)pColor_exact_return,
+ sizeof(XcmsColor));
+ if (pColor_scrn_return->format == XcmsRGBFormat) {
+ retval2 = XcmsSuccess;
+ } else if ((retval2 = XcmsConvertColors(ccc, pColor_scrn_return, 1,
+ XcmsRGBFormat, (Bool *)NULL)) == XcmsFailure) {
+ return(XcmsFailure);
+ }
+
+ /*
+ * Then, convert XcmsColor structure to the target specification
+ * format. Note that we must use NULL instead of passing
+ * pCompressed.
+ */
+
+ if (result_format == XcmsUndefinedFormat) {
+ result_format = pColor_exact_return->format;
+ }
+ if (result_format == XcmsRGBFormat) {
+ _XcmsUnresolveColor(ccc, pColor_scrn_return);
+ } else {
+ _XcmsResolveColor(ccc, pColor_scrn_return);
+ if (XcmsConvertColors(ccc, pColor_scrn_return, 1, result_format,
+ (Bool *) NULL) == XcmsFailure) {
+ return(XcmsFailure);
+ }
+ }
+
+ return(retval1 > retval2 ? retval1 : retval2);
+
+PassToServer:
+ /*
+ * Xcms and i18n methods failed, so lets pass it to the server
+ * for parsing.
+ */
+
+ LockDisplay(dpy);
+ GetReq (LookupColor, req);
+ req->cmap = cmap;
+ req->nbytes = n = strlen(colorname);
+ req->length += (n + 3) >> 2;
+ Data (dpy, colorname, (long)n);
+ if (!_XReply (dpy, (xReply *) &reply, 0, xTrue)) {
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return (XcmsFailure);
+ }
+ def.red = reply.exactRed;
+ def.green = reply.exactGreen;
+ def.blue = reply.exactBlue;
+
+ scr.red = reply.screenRed;
+ scr.green = reply.screenGreen;
+ scr.blue = reply.screenBlue;
+
+ UnlockDisplay(dpy);
+ SyncHandle();
+
+ _XColor_to_XcmsRGB(ccc, &def, pColor_exact_return, 1);
+ _XColor_to_XcmsRGB(ccc, &scr, pColor_scrn_return, 1);
+
+ /*
+ * Then, convert XcmsColor structure to the target specification
+ * format. Note that we must use NULL instead of passing
+ * pCompressed.
+ */
+
+ if (result_format != XcmsRGBFormat
+ && result_format != XcmsUndefinedFormat) {
+ if (XcmsConvertColors(ccc, pColor_exact_return, 1, result_format,
+ (Bool *) NULL) == XcmsFailure) {
+ return(XcmsFailure);
+ }
+ if (XcmsConvertColors(ccc, pColor_scrn_return, 1, result_format,
+ (Bool *) NULL) == XcmsFailure) {
+ return(XcmsFailure);
+ }
+ }
+
+ return(XcmsSuccess);
+}
diff --git a/libX11/src/xcms/cmsMath.c b/libX11/src/xcms/cmsMath.c
index 009a623b4..70b067587 100644
--- a/libX11/src/xcms/cmsMath.c
+++ b/libX11/src/xcms/cmsMath.c
@@ -1,136 +1,136 @@
-
-/*
-
-Copyright 1990, 1998 The Open Group
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall not be
-used in advertising or otherwise to promote the sale, use or other dealings
-in this Software without prior written authorization from The Open Group.
-
-*/
-
-/*
- * Stephen Gildea, MIT X Consortium, January 1991
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-#include "Xcmsint.h"
-
-#include <float.h>
-#ifndef DBL_EPSILON
-#define DBL_EPSILON 1e-6
-#endif
-
-#ifdef _X_ROOT_STATS
-int cbrt_loopcount;
-int sqrt_loopcount;
-#endif
-
-/* Newton's Method: x_n+1 = x_n - ( f(x_n) / f'(x_n) ) */
-
-
-/* for cube roots, x^3 - a = 0, x_new = x - 1/3 (x - a/x^2) */
-
-double
-_XcmsCubeRoot(double a)
-{
- register double abs_a, cur_guess, delta;
-
-#ifdef DEBUG
- printf("_XcmsCubeRoot passed in %g\n", a);
-#endif
-#ifdef _X_ROOT_STATS
- cbrt_loopcount = 0;
-#endif
- if (a == 0.)
- return 0.;
-
- abs_a = a<0. ? -a : a; /* convert to positive to speed loop tests */
-
- /* arbitrary first guess */
- if (abs_a > 1.)
- cur_guess = abs_a/8.;
- else
- cur_guess = abs_a*8.;
-
- do {
-#ifdef _X_ROOT_STATS
- cbrt_loopcount++;
-#endif
- delta = (cur_guess - abs_a/(cur_guess*cur_guess))/3.;
- cur_guess -= delta;
- if (delta < 0.) delta = -delta;
- } while (delta >= cur_guess*DBL_EPSILON);
-
- if (a < 0.)
- cur_guess = -cur_guess;
-
-#ifdef DEBUG
- printf("_XcmsCubeRoot returning %g\n", cur_guess);
-#endif
- return cur_guess;
-}
-
-
-
-/* for square roots, x^2 - a = 0, x_new = x - 1/2 (x - a/x) */
-
-double
-_XcmsSquareRoot(double a)
-{
- register double cur_guess, delta;
-
-#ifdef DEBUG
- printf("_XcmsSquareRoot passed in %g\n", a);
-#endif
-#ifdef _X_ROOT_STATS
- sqrt_loopcount = 0;
-#endif
- if (a == 0.)
- return 0.;
-
- if (a < 0.) {
- /* errno = EDOM; */
- return 0.;
- }
-
- /* arbitrary first guess */
- if (a > 1.)
- cur_guess = a/4.;
- else
- cur_guess = a*4.;
-
- do {
-#ifdef _X_ROOT_STATS
- sqrt_loopcount++;
-#endif
- delta = (cur_guess - a/cur_guess)/2.;
- cur_guess -= delta;
- if (delta < 0.) delta = -delta;
- } while (delta >= cur_guess*DBL_EPSILON);
-
-#ifdef DEBUG
- printf("_XcmsSquareRoot returning %g\n", cur_guess);
-#endif
- return cur_guess;
-}
-
+
+/*
+
+Copyright 1990, 1998 The Open Group
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group shall not be
+used in advertising or otherwise to promote the sale, use or other dealings
+in this Software without prior written authorization from The Open Group.
+
+*/
+
+/*
+ * Stephen Gildea, MIT X Consortium, January 1991
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+#include "Xcmsint.h"
+
+#include <float.h>
+#ifndef DBL_EPSILON
+#define DBL_EPSILON 1e-6
+#endif
+
+#ifdef _X_ROOT_STATS
+int cbrt_loopcount;
+int sqrt_loopcount;
+#endif
+
+/* Newton's Method: x_n+1 = x_n - ( f(x_n) / f'(x_n) ) */
+
+
+/* for cube roots, x^3 - a = 0, x_new = x - 1/3 (x - a/x^2) */
+
+double
+_XcmsCubeRoot(double a)
+{
+ register double abs_a, cur_guess, delta;
+
+#ifdef DEBUG
+ printf("_XcmsCubeRoot passed in %g\n", a);
+#endif
+#ifdef _X_ROOT_STATS
+ cbrt_loopcount = 0;
+#endif
+ if (a == 0.)
+ return 0.;
+
+ abs_a = a<0. ? -a : a; /* convert to positive to speed loop tests */
+
+ /* arbitrary first guess */
+ if (abs_a > 1.)
+ cur_guess = abs_a/8.;
+ else
+ cur_guess = abs_a*8.;
+
+ do {
+#ifdef _X_ROOT_STATS
+ cbrt_loopcount++;
+#endif
+ delta = (cur_guess - abs_a/(cur_guess*cur_guess))/3.;
+ cur_guess -= delta;
+ if (delta < 0.) delta = -delta;
+ } while (delta >= cur_guess*DBL_EPSILON);
+
+ if (a < 0.)
+ cur_guess = -cur_guess;
+
+#ifdef DEBUG
+ printf("_XcmsCubeRoot returning %g\n", cur_guess);
+#endif
+ return cur_guess;
+}
+
+
+
+/* for square roots, x^2 - a = 0, x_new = x - 1/2 (x - a/x) */
+
+double
+_XcmsSquareRoot(double a)
+{
+ register double cur_guess, delta;
+
+#ifdef DEBUG
+ printf("_XcmsSquareRoot passed in %g\n", a);
+#endif
+#ifdef _X_ROOT_STATS
+ sqrt_loopcount = 0;
+#endif
+ if (a == 0.)
+ return 0.;
+
+ if (a < 0.) {
+ /* errno = EDOM; */
+ return 0.;
+ }
+
+ /* arbitrary first guess */
+ if (a > 1.)
+ cur_guess = a/4.;
+ else
+ cur_guess = a*4.;
+
+ do {
+#ifdef _X_ROOT_STATS
+ sqrt_loopcount++;
+#endif
+ delta = (cur_guess - a/cur_guess)/2.;
+ cur_guess -= delta;
+ if (delta < 0.) delta = -delta;
+ } while (delta >= cur_guess*DBL_EPSILON);
+
+#ifdef DEBUG
+ printf("_XcmsSquareRoot returning %g\n", cur_guess);
+#endif
+ return cur_guess;
+}
+
diff --git a/libX11/src/xcms/cmsTrig.c b/libX11/src/xcms/cmsTrig.c
index 26ae05f75..5a01a56c8 100644
--- a/libX11/src/xcms/cmsTrig.c
+++ b/libX11/src/xcms/cmsTrig.c
@@ -1,593 +1,593 @@
-
-/*
- * Code and supporting documentation (c) Copyright 1990 1991 Tektronix, Inc.
- * All Rights Reserved
- *
- * This file is a component of an X Window System-specific implementation
- * of Xcms based on the TekColor Color Management System. Permission is
- * hereby granted to use, copy, modify, sell, and otherwise distribute this
- * software and its documentation for any purpose and without fee, provided
- * that this copyright, permission, and disclaimer notice is reproduced in
- * all copies of this software and in supporting documentation. TekColor
- * is a trademark of Tektronix, Inc.
- *
- * Tektronix makes no representation about the suitability of this software
- * for any purpose. It is provided "as is" and with all faults.
- *
- * TEKTRONIX DISCLAIMS ALL WARRANTIES APPLICABLE TO THIS SOFTWARE,
- * INCLUDING THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE. IN NO EVENT SHALL TEKTRONIX BE LIABLE FOR ANY
- * SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER
- * RESULTING FROM LOSS OF USE, DATA, OR PROFITS, WHETHER IN AN ACTION OF
- * CONTRACT, NEGLIGENCE, OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
- * CONNECTION WITH THE USE OR THE PERFORMANCE OF THIS SOFTWARE.
- */
-
-/*
- * It should be pointed out that for simplicity's sake, the
- * environment parameters are defined as floating point constants,
- * rather than octal or hexadecimal initializations of allocated
- * storage areas. This means that the range of allowed numbers
- * may not exactly match the hardware's capabilities. For example,
- * if the maximum positive double precision floating point number
- * is EXACTLY 1.11...E100 and the constant "MAXDOUBLE is
- * defined to be 1.11E100 then the numbers between 1.11E100 and
- * 1.11...E100 are considered to be undefined. For most
- * applications, this will cause no problems.
- *
- * An alternate method is to allocate a global static "double" variable,
- * say "maxdouble", and use a union declaration and initialization
- * to initialize it with the proper bits for the EXACT maximum value.
- * This was not done because the only compilers available to the
- * author did not fully support union initialization features.
- *
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xcmsint.h"
-
-/* forward/static */
-static double _XcmsModulo(double value, double base);
-static double _XcmsPolynomial(
- register int order,
- double const *coeffs,
- double x);
-static double
-_XcmsModuloF(
- double val,
- register double *dp);
-
-/*
- * DEFINES
- */
-#define XCMS_MAXERROR 0.000001
-#define XCMS_MAXITER 10000
-#define XCMS_PI 3.14159265358979323846264338327950
-#define XCMS_TWOPI 6.28318530717958620
-#define XCMS_HALFPI 1.57079632679489660
-#define XCMS_FOURTHPI 0.785398163397448280
-#define XCMS_SIXTHPI 0.523598775598298820
-#define XCMS_RADIANS(d) ((d) * XCMS_PI / 180.0)
-#define XCMS_DEGREES(r) ((r) * 180.0 / XCMS_PI)
-#define XCMS_X6_UNDERFLOWS (4.209340e-52) /* X**6 almost underflows */
-#define XCMS_X16_UNDERFLOWS (5.421010e-20) /* X**16 almost underflows*/
-#define XCMS_CHAR_BIT 8
-#define XCMS_LONG_MAX 0x7FFFFFFF
-#define XCMS_DEXPLEN 11
-#define XCMS_NBITS(type) (XCMS_CHAR_BIT * (int)sizeof(type))
-#define XCMS_FABS(x) ((x) < 0.0 ? -(x) : (x))
-
-/* XCMS_DMAXPOWTWO - largest power of two exactly representable as a double */
-#ifdef _CRAY
-#define XCMS_DMAXPOWTWO ((double)(1 < 47))
-#else
-#define XCMS_DMAXPOWTWO ((double)(XCMS_LONG_MAX) * \
- (1L << ((XCMS_NBITS(double)-XCMS_DEXPLEN) - XCMS_NBITS(int) + 1)))
-#endif
-
-/*
- * LOCAL VARIABLES
- */
-
-static double const cos_pcoeffs[] = {
- 0.12905394659037374438e7,
- -0.37456703915723204710e6,
- 0.13432300986539084285e5,
- -0.11231450823340933092e3
-};
-
-static double const cos_qcoeffs[] = {
- 0.12905394659037373590e7,
- 0.23467773107245835052e5,
- 0.20969518196726306286e3,
- 1.0
-};
-
-static double const sin_pcoeffs[] = {
- 0.20664343336995858240e7,
- -0.18160398797407332550e6,
- 0.35999306949636188317e4,
- -0.20107483294588615719e2
-};
-
-static double const sin_qcoeffs[] = {
- 0.26310659102647698963e7,
- 0.39270242774649000308e5,
- 0.27811919481083844087e3,
- 1.0
-};
-
-/*
- *
- * FUNCTION
- *
- * _XcmsCosine double precision cosine
- *
- * KEY WORDS
- *
- * cos
- * machine independent routines
- * trigonometric functions
- * math libraries
- *
- * DESCRIPTION
- *
- * Returns double precision cosine of double precision
- * floating point argument.
- *
- * USAGE
- *
- * double _XcmsCosine (x)
- * double x;
- *
- * REFERENCES
- *
- * Computer Approximations, J.F. Hart et al, John Wiley & Sons,
- * 1968, pp. 112-120.
- *
- * RESTRICTIONS
- *
- * The sin and cos routines are interactive in the sense that
- * in the process of reducing the argument to the range -PI/4
- * to PI/4, each may call the other. Ultimately one or the
- * other uses a polynomial approximation on the reduced
- * argument. The sin approximation has a maximum relative error
- * of 10**(-17.59) and the cos approximation has a maximum
- * relative error of 10**(-16.18).
- *
- * These error bounds assume exact arithmetic
- * in the polynomial evaluation. Additional rounding and
- * truncation errors may occur as the argument is reduced
- * to the range over which the polynomial approximation
- * is valid, and as the polynomial is evaluated using
- * finite-precision arithmetic.
- *
- * PROGRAMMER
- *
- * Fred Fish
- *
- * INTERNALS
- *
- * Computes cos(x) from:
- *
- * (1) Reduce argument x to range -PI to PI.
- *
- * (2) If x > PI/2 then call cos recursively
- * using relation cos(x) = -cos(x - PI).
- *
- * (3) If x < -PI/2 then call cos recursively
- * using relation cos(x) = -cos(x + PI).
- *
- * (4) If x > PI/4 then call sin using
- * relation cos(x) = sin(PI/2 - x).
- *
- * (5) If x < -PI/4 then call cos using
- * relation cos(x) = sin(PI/2 + x).
- *
- * (6) If x would cause underflow in approx
- * evaluation arithmetic then return
- * sqrt(1.0 - x**2).
- *
- * (7) By now x has been reduced to range
- * -PI/4 to PI/4 and the approximation
- * from HART pg. 119 can be used:
- *
- * cos(x) = ( p(y) / q(y) )
- * Where:
- *
- * y = x * (4/PI)
- *
- * p(y) = SUM [ Pj * (y**(2*j)) ]
- * over j = {0,1,2,3}
- *
- * q(y) = SUM [ Qj * (y**(2*j)) ]
- * over j = {0,1,2,3}
- *
- * P0 = 0.12905394659037374438571854e+7
- * P1 = -0.3745670391572320471032359e+6
- * P2 = 0.134323009865390842853673e+5
- * P3 = -0.112314508233409330923e+3
- * Q0 = 0.12905394659037373590295914e+7
- * Q1 = 0.234677731072458350524124e+5
- * Q2 = 0.2096951819672630628621e+3
- * Q3 = 1.0000...
- * (coefficients from HART table #3843 pg 244)
- *
- *
- * **** NOTE **** The range reduction relations used in
- * this routine depend on the final approximation being valid
- * over the negative argument range in addition to the positive
- * argument range. The particular approximation chosen from
- * HART satisfies this requirement, although not explicitly
- * stated in the text. This may not be true of other
- * approximations given in the reference.
- *
- */
-
-double _XcmsCosine(double x)
-{
- auto double y;
- auto double yt2;
- double retval;
-
- if (x < -XCMS_PI || x > XCMS_PI) {
- x = _XcmsModulo (x, XCMS_TWOPI);
- if (x > XCMS_PI) {
- x = x - XCMS_TWOPI;
- } else if (x < -XCMS_PI) {
- x = x + XCMS_TWOPI;
- }
- }
- if (x > XCMS_HALFPI) {
- retval = -(_XcmsCosine (x - XCMS_PI));
- } else if (x < -XCMS_HALFPI) {
- retval = -(_XcmsCosine (x + XCMS_PI));
- } else if (x > XCMS_FOURTHPI) {
- retval = _XcmsSine (XCMS_HALFPI - x);
- } else if (x < -XCMS_FOURTHPI) {
- retval = _XcmsSine (XCMS_HALFPI + x);
- } else if (x < XCMS_X6_UNDERFLOWS && x > -XCMS_X6_UNDERFLOWS) {
- retval = _XcmsSquareRoot (1.0 - (x * x));
- } else {
- y = x / XCMS_FOURTHPI;
- yt2 = y * y;
- retval = _XcmsPolynomial (3, cos_pcoeffs, yt2) / _XcmsPolynomial (3, cos_qcoeffs, yt2);
- }
- return (retval);
-}
-
-
-/*
- * FUNCTION
- *
- * _XcmsModulo double precision modulo
- *
- * KEY WORDS
- *
- * _XcmsModulo
- * machine independent routines
- * math libraries
- *
- * DESCRIPTION
- *
- * Returns double precision modulo of two double
- * precision arguments.
- *
- * USAGE
- *
- * double _XcmsModulo (value, base)
- * double value;
- * double base;
- *
- * PROGRAMMER
- *
- * Fred Fish
- *
- */
-static double _XcmsModulo(double value, double base)
-{
- auto double intpart;
-
- value /= base;
- value = _XcmsModuloF (value, &intpart);
- value *= base;
- return(value);
-}
-
-
-/*
- * frac = (double) _XcmsModuloF(double val, double *dp)
- * return fractional part of 'val'
- * set *dp to integer part of 'val'
- *
- * Note -> only compiled for the CA or KA. For the KB/MC,
- * "math.c" instantiates a copy of the inline function
- * defined in "math.h".
- */
-static double
-_XcmsModuloF(
- double val,
- register double *dp)
-{
- register double abs;
- /*
- * Don't use a register for this. The extra precision this results
- * in on some systems causes problems.
- */
- double ip;
-
- /* should check for illegal values here - nan, inf, etc */
- abs = XCMS_FABS(val);
- if (abs >= XCMS_DMAXPOWTWO) {
- ip = val;
- } else {
- ip = abs + XCMS_DMAXPOWTWO; /* dump fraction */
- ip -= XCMS_DMAXPOWTWO; /* restore w/o frac */
- if (ip > abs) /* if it rounds up */
- ip -= 1.0; /* fix it */
- ip = XCMS_FABS(ip);
- }
- *dp = ip;
- return (val - ip); /* signed fractional part */
-}
-
-
-/*
- * FUNCTION
- *
- * _XcmsPolynomial double precision polynomial evaluation
- *
- * KEY WORDS
- *
- * poly
- * machine independent routines
- * math libraries
- *
- * DESCRIPTION
- *
- * Evaluates a polynomial and returns double precision
- * result. Is passed a the order of the polynomial,
- * a pointer to an array of double precision polynomial
- * coefficients (in ascending order), and the independent
- * variable.
- *
- * USAGE
- *
- * double _XcmsPolynomial (order, coeffs, x)
- * int order;
- * double *coeffs;
- * double x;
- *
- * PROGRAMMER
- *
- * Fred Fish
- *
- * INTERNALS
- *
- * Evalates the polynomial using recursion and the form:
- *
- * P(x) = P0 + x(P1 + x(P2 +...x(Pn)))
- *
- */
-
-static double _XcmsPolynomial(
- register int order,
- double const *coeffs,
- double x)
-{
- auto double rtn_value;
-
-#if 0
- auto double curr_coeff;
- if (order <= 0) {
- rtn_value = *coeffs;
- } else {
- curr_coeff = *coeffs; /* Bug in Unisoft's compiler. Does not */
- coeffs++; /* generate good code for *coeffs++ */
- rtn_value = curr_coeff + x * _XcmsPolynomial (--order, coeffs, x);
- }
-#else /* ++jrb -- removed tail recursion */
- coeffs += order;
- rtn_value = *coeffs--;
- while(order-- > 0)
- rtn_value = *coeffs-- + (x * rtn_value);
-#endif
-
- return(rtn_value);
-}
-
-
-/*
- * FUNCTION
- *
- * _XcmsSine double precision sine
- *
- * KEY WORDS
- *
- * sin
- * machine independent routines
- * trigonometric functions
- * math libraries
- *
- * DESCRIPTION
- *
- * Returns double precision sine of double precision
- * floating point argument.
- *
- * USAGE
- *
- * double _XcmsSine (x)
- * double x;
- *
- * REFERENCES
- *
- * Computer Approximations, J.F. Hart et al, John Wiley & Sons,
- * 1968, pp. 112-120.
- *
- * RESTRICTIONS
- *
- * The sin and cos routines are interactive in the sense that
- * in the process of reducing the argument to the range -PI/4
- * to PI/4, each may call the other. Ultimately one or the
- * other uses a polynomial approximation on the reduced
- * argument. The sin approximation has a maximum relative error
- * of 10**(-17.59) and the cos approximation has a maximum
- * relative error of 10**(-16.18).
- *
- * These error bounds assume exact arithmetic
- * in the polynomial evaluation. Additional rounding and
- * truncation errors may occur as the argument is reduced
- * to the range over which the polynomial approximation
- * is valid, and as the polynomial is evaluated using
- * finite-precision arithmetic.
- *
- * PROGRAMMER
- *
- * Fred Fish
- *
- * INTERNALS
- *
- * Computes sin(x) from:
- *
- * (1) Reduce argument x to range -PI to PI.
- *
- * (2) If x > PI/2 then call sin recursively
- * using relation sin(x) = -sin(x - PI).
- *
- * (3) If x < -PI/2 then call sin recursively
- * using relation sin(x) = -sin(x + PI).
- *
- * (4) If x > PI/4 then call cos using
- * relation sin(x) = cos(PI/2 - x).
- *
- * (5) If x < -PI/4 then call cos using
- * relation sin(x) = -cos(PI/2 + x).
- *
- * (6) If x is small enough that polynomial
- * evaluation would cause underflow
- * then return x, since sin(x)
- * approaches x as x approaches zero.
- *
- * (7) By now x has been reduced to range
- * -PI/4 to PI/4 and the approximation
- * from HART pg. 118 can be used:
- *
- * sin(x) = y * ( p(y) / q(y) )
- * Where:
- *
- * y = x * (4/PI)
- *
- * p(y) = SUM [ Pj * (y**(2*j)) ]
- * over j = {0,1,2,3}
- *
- * q(y) = SUM [ Qj * (y**(2*j)) ]
- * over j = {0,1,2,3}
- *
- * P0 = 0.206643433369958582409167054e+7
- * P1 = -0.18160398797407332550219213e+6
- * P2 = 0.359993069496361883172836e+4
- * P3 = -0.2010748329458861571949e+2
- * Q0 = 0.263106591026476989637710307e+7
- * Q1 = 0.3927024277464900030883986e+5
- * Q2 = 0.27811919481083844087953e+3
- * Q3 = 1.0000...
- * (coefficients from HART table #3063 pg 234)
- *
- *
- * **** NOTE **** The range reduction relations used in
- * this routine depend on the final approximation being valid
- * over the negative argument range in addition to the positive
- * argument range. The particular approximation chosen from
- * HART satisfies this requirement, although not explicitly
- * stated in the text. This may not be true of other
- * approximations given in the reference.
- *
- */
-
-double
-_XcmsSine (double x)
-{
- double y;
- double yt2;
- double retval;
-
- if (x < -XCMS_PI || x > XCMS_PI) {
- x = _XcmsModulo (x, XCMS_TWOPI);
- if (x > XCMS_PI) {
- x = x - XCMS_TWOPI;
- } else if (x < -XCMS_PI) {
- x = x + XCMS_TWOPI;
- }
- }
- if (x > XCMS_HALFPI) {
- retval = -(_XcmsSine (x - XCMS_PI));
- } else if (x < -XCMS_HALFPI) {
- retval = -(_XcmsSine (x + XCMS_PI));
- } else if (x > XCMS_FOURTHPI) {
- retval = _XcmsCosine (XCMS_HALFPI - x);
- } else if (x < -XCMS_FOURTHPI) {
- retval = -(_XcmsCosine (XCMS_HALFPI + x));
- } else if (x < XCMS_X6_UNDERFLOWS && x > -XCMS_X6_UNDERFLOWS) {
- retval = x;
- } else {
- y = x / XCMS_FOURTHPI;
- yt2 = y * y;
- retval = y * (_XcmsPolynomial (3, sin_pcoeffs, yt2) / _XcmsPolynomial(3, sin_qcoeffs, yt2));
- }
- return(retval);
-}
-
-
-/*
- * NAME
- * _XcmsArcTangent
- *
- * SYNOPSIS
- */
-double
-_XcmsArcTangent(double x)
-/*
- * DESCRIPTION
- * Computes the arctangent.
- * This is an implementation of the Gauss algorithm as
- * described in:
- * Forman S. Acton, Numerical Methods That Work,
- * New York, NY, Harper & Row, 1970.
- *
- * RETURNS
- * Returns the arctangent
- */
-{
- double ai, a1 = 0.0, bi, b1 = 0.0, l, d;
- double maxerror;
- int i;
-
- if (x == 0.0) {
- return (0.0);
- }
- if (x < 1.0) {
- maxerror = x * XCMS_MAXERROR;
- } else {
- maxerror = XCMS_MAXERROR;
- }
- ai = _XcmsSquareRoot( 1.0 / (1.0 + (x * x)) );
- bi = 1.0;
- for (i = 0; i < XCMS_MAXITER; i++) {
- a1 = (ai + bi) / 2.0;
- b1 = _XcmsSquareRoot((a1 * bi));
- if (a1 == b1)
- break;
- d = XCMS_FABS(a1 - b1);
- if (d < maxerror)
- break;
- ai = a1;
- bi = b1;
- }
-
- l = ((a1 > b1) ? b1 : a1);
-
- a1 = _XcmsSquareRoot(1 + (x * x));
- return (x / (a1 * l));
-}
+
+/*
+ * Code and supporting documentation (c) Copyright 1990 1991 Tektronix, Inc.
+ * All Rights Reserved
+ *
+ * This file is a component of an X Window System-specific implementation
+ * of Xcms based on the TekColor Color Management System. Permission is
+ * hereby granted to use, copy, modify, sell, and otherwise distribute this
+ * software and its documentation for any purpose and without fee, provided
+ * that this copyright, permission, and disclaimer notice is reproduced in
+ * all copies of this software and in supporting documentation. TekColor
+ * is a trademark of Tektronix, Inc.
+ *
+ * Tektronix makes no representation about the suitability of this software
+ * for any purpose. It is provided "as is" and with all faults.
+ *
+ * TEKTRONIX DISCLAIMS ALL WARRANTIES APPLICABLE TO THIS SOFTWARE,
+ * INCLUDING THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+ * PARTICULAR PURPOSE. IN NO EVENT SHALL TEKTRONIX BE LIABLE FOR ANY
+ * SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER
+ * RESULTING FROM LOSS OF USE, DATA, OR PROFITS, WHETHER IN AN ACTION OF
+ * CONTRACT, NEGLIGENCE, OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
+ * CONNECTION WITH THE USE OR THE PERFORMANCE OF THIS SOFTWARE.
+ */
+
+/*
+ * It should be pointed out that for simplicity's sake, the
+ * environment parameters are defined as floating point constants,
+ * rather than octal or hexadecimal initializations of allocated
+ * storage areas. This means that the range of allowed numbers
+ * may not exactly match the hardware's capabilities. For example,
+ * if the maximum positive double precision floating point number
+ * is EXACTLY 1.11...E100 and the constant "MAXDOUBLE is
+ * defined to be 1.11E100 then the numbers between 1.11E100 and
+ * 1.11...E100 are considered to be undefined. For most
+ * applications, this will cause no problems.
+ *
+ * An alternate method is to allocate a global static "double" variable,
+ * say "maxdouble", and use a union declaration and initialization
+ * to initialize it with the proper bits for the EXACT maximum value.
+ * This was not done because the only compilers available to the
+ * author did not fully support union initialization features.
+ *
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xcmsint.h"
+
+/* forward/static */
+static double _XcmsModulo(double value, double base);
+static double _XcmsPolynomial(
+ register int order,
+ double const *coeffs,
+ double x);
+static double
+_XcmsModuloF(
+ double val,
+ register double *dp);
+
+/*
+ * DEFINES
+ */
+#define XCMS_MAXERROR 0.000001
+#define XCMS_MAXITER 10000
+#define XCMS_PI 3.14159265358979323846264338327950
+#define XCMS_TWOPI 6.28318530717958620
+#define XCMS_HALFPI 1.57079632679489660
+#define XCMS_FOURTHPI 0.785398163397448280
+#define XCMS_SIXTHPI 0.523598775598298820
+#define XCMS_RADIANS(d) ((d) * XCMS_PI / 180.0)
+#define XCMS_DEGREES(r) ((r) * 180.0 / XCMS_PI)
+#define XCMS_X6_UNDERFLOWS (4.209340e-52) /* X**6 almost underflows */
+#define XCMS_X16_UNDERFLOWS (5.421010e-20) /* X**16 almost underflows*/
+#define XCMS_CHAR_BIT 8
+#define XCMS_LONG_MAX 0x7FFFFFFF
+#define XCMS_DEXPLEN 11
+#define XCMS_NBITS(type) (XCMS_CHAR_BIT * (int)sizeof(type))
+#define XCMS_FABS(x) ((x) < 0.0 ? -(x) : (x))
+
+/* XCMS_DMAXPOWTWO - largest power of two exactly representable as a double */
+#ifdef _CRAY
+#define XCMS_DMAXPOWTWO ((double)(1 < 47))
+#else
+#define XCMS_DMAXPOWTWO ((double)(XCMS_LONG_MAX) * \
+ (1L << ((XCMS_NBITS(double)-XCMS_DEXPLEN) - XCMS_NBITS(int) + 1)))
+#endif
+
+/*
+ * LOCAL VARIABLES
+ */
+
+static double const cos_pcoeffs[] = {
+ 0.12905394659037374438e7,
+ -0.37456703915723204710e6,
+ 0.13432300986539084285e5,
+ -0.11231450823340933092e3
+};
+
+static double const cos_qcoeffs[] = {
+ 0.12905394659037373590e7,
+ 0.23467773107245835052e5,
+ 0.20969518196726306286e3,
+ 1.0
+};
+
+static double const sin_pcoeffs[] = {
+ 0.20664343336995858240e7,
+ -0.18160398797407332550e6,
+ 0.35999306949636188317e4,
+ -0.20107483294588615719e2
+};
+
+static double const sin_qcoeffs[] = {
+ 0.26310659102647698963e7,
+ 0.39270242774649000308e5,
+ 0.27811919481083844087e3,
+ 1.0
+};
+
+/*
+ *
+ * FUNCTION
+ *
+ * _XcmsCosine double precision cosine
+ *
+ * KEY WORDS
+ *
+ * cos
+ * machine independent routines
+ * trigonometric functions
+ * math libraries
+ *
+ * DESCRIPTION
+ *
+ * Returns double precision cosine of double precision
+ * floating point argument.
+ *
+ * USAGE
+ *
+ * double _XcmsCosine (x)
+ * double x;
+ *
+ * REFERENCES
+ *
+ * Computer Approximations, J.F. Hart et al, John Wiley & Sons,
+ * 1968, pp. 112-120.
+ *
+ * RESTRICTIONS
+ *
+ * The sin and cos routines are interactive in the sense that
+ * in the process of reducing the argument to the range -PI/4
+ * to PI/4, each may call the other. Ultimately one or the
+ * other uses a polynomial approximation on the reduced
+ * argument. The sin approximation has a maximum relative error
+ * of 10**(-17.59) and the cos approximation has a maximum
+ * relative error of 10**(-16.18).
+ *
+ * These error bounds assume exact arithmetic
+ * in the polynomial evaluation. Additional rounding and
+ * truncation errors may occur as the argument is reduced
+ * to the range over which the polynomial approximation
+ * is valid, and as the polynomial is evaluated using
+ * finite-precision arithmetic.
+ *
+ * PROGRAMMER
+ *
+ * Fred Fish
+ *
+ * INTERNALS
+ *
+ * Computes cos(x) from:
+ *
+ * (1) Reduce argument x to range -PI to PI.
+ *
+ * (2) If x > PI/2 then call cos recursively
+ * using relation cos(x) = -cos(x - PI).
+ *
+ * (3) If x < -PI/2 then call cos recursively
+ * using relation cos(x) = -cos(x + PI).
+ *
+ * (4) If x > PI/4 then call sin using
+ * relation cos(x) = sin(PI/2 - x).
+ *
+ * (5) If x < -PI/4 then call cos using
+ * relation cos(x) = sin(PI/2 + x).
+ *
+ * (6) If x would cause underflow in approx
+ * evaluation arithmetic then return
+ * sqrt(1.0 - x**2).
+ *
+ * (7) By now x has been reduced to range
+ * -PI/4 to PI/4 and the approximation
+ * from HART pg. 119 can be used:
+ *
+ * cos(x) = ( p(y) / q(y) )
+ * Where:
+ *
+ * y = x * (4/PI)
+ *
+ * p(y) = SUM [ Pj * (y**(2*j)) ]
+ * over j = {0,1,2,3}
+ *
+ * q(y) = SUM [ Qj * (y**(2*j)) ]
+ * over j = {0,1,2,3}
+ *
+ * P0 = 0.12905394659037374438571854e+7
+ * P1 = -0.3745670391572320471032359e+6
+ * P2 = 0.134323009865390842853673e+5
+ * P3 = -0.112314508233409330923e+3
+ * Q0 = 0.12905394659037373590295914e+7
+ * Q1 = 0.234677731072458350524124e+5
+ * Q2 = 0.2096951819672630628621e+3
+ * Q3 = 1.0000...
+ * (coefficients from HART table #3843 pg 244)
+ *
+ *
+ * **** NOTE **** The range reduction relations used in
+ * this routine depend on the final approximation being valid
+ * over the negative argument range in addition to the positive
+ * argument range. The particular approximation chosen from
+ * HART satisfies this requirement, although not explicitly
+ * stated in the text. This may not be true of other
+ * approximations given in the reference.
+ *
+ */
+
+double _XcmsCosine(double x)
+{
+ auto double y;
+ auto double yt2;
+ double retval;
+
+ if (x < -XCMS_PI || x > XCMS_PI) {
+ x = _XcmsModulo (x, XCMS_TWOPI);
+ if (x > XCMS_PI) {
+ x = x - XCMS_TWOPI;
+ } else if (x < -XCMS_PI) {
+ x = x + XCMS_TWOPI;
+ }
+ }
+ if (x > XCMS_HALFPI) {
+ retval = -(_XcmsCosine (x - XCMS_PI));
+ } else if (x < -XCMS_HALFPI) {
+ retval = -(_XcmsCosine (x + XCMS_PI));
+ } else if (x > XCMS_FOURTHPI) {
+ retval = _XcmsSine (XCMS_HALFPI - x);
+ } else if (x < -XCMS_FOURTHPI) {
+ retval = _XcmsSine (XCMS_HALFPI + x);
+ } else if (x < XCMS_X6_UNDERFLOWS && x > -XCMS_X6_UNDERFLOWS) {
+ retval = _XcmsSquareRoot (1.0 - (x * x));
+ } else {
+ y = x / XCMS_FOURTHPI;
+ yt2 = y * y;
+ retval = _XcmsPolynomial (3, cos_pcoeffs, yt2) / _XcmsPolynomial (3, cos_qcoeffs, yt2);
+ }
+ return (retval);
+}
+
+
+/*
+ * FUNCTION
+ *
+ * _XcmsModulo double precision modulo
+ *
+ * KEY WORDS
+ *
+ * _XcmsModulo
+ * machine independent routines
+ * math libraries
+ *
+ * DESCRIPTION
+ *
+ * Returns double precision modulo of two double
+ * precision arguments.
+ *
+ * USAGE
+ *
+ * double _XcmsModulo (value, base)
+ * double value;
+ * double base;
+ *
+ * PROGRAMMER
+ *
+ * Fred Fish
+ *
+ */
+static double _XcmsModulo(double value, double base)
+{
+ auto double intpart;
+
+ value /= base;
+ value = _XcmsModuloF (value, &intpart);
+ value *= base;
+ return(value);
+}
+
+
+/*
+ * frac = (double) _XcmsModuloF(double val, double *dp)
+ * return fractional part of 'val'
+ * set *dp to integer part of 'val'
+ *
+ * Note -> only compiled for the CA or KA. For the KB/MC,
+ * "math.c" instantiates a copy of the inline function
+ * defined in "math.h".
+ */
+static double
+_XcmsModuloF(
+ double val,
+ register double *dp)
+{
+ register double abs;
+ /*
+ * Don't use a register for this. The extra precision this results
+ * in on some systems causes problems.
+ */
+ double ip;
+
+ /* should check for illegal values here - nan, inf, etc */
+ abs = XCMS_FABS(val);
+ if (abs >= XCMS_DMAXPOWTWO) {
+ ip = val;
+ } else {
+ ip = abs + XCMS_DMAXPOWTWO; /* dump fraction */
+ ip -= XCMS_DMAXPOWTWO; /* restore w/o frac */
+ if (ip > abs) /* if it rounds up */
+ ip -= 1.0; /* fix it */
+ ip = XCMS_FABS(ip);
+ }
+ *dp = ip;
+ return (val - ip); /* signed fractional part */
+}
+
+
+/*
+ * FUNCTION
+ *
+ * _XcmsPolynomial double precision polynomial evaluation
+ *
+ * KEY WORDS
+ *
+ * poly
+ * machine independent routines
+ * math libraries
+ *
+ * DESCRIPTION
+ *
+ * Evaluates a polynomial and returns double precision
+ * result. Is passed a the order of the polynomial,
+ * a pointer to an array of double precision polynomial
+ * coefficients (in ascending order), and the independent
+ * variable.
+ *
+ * USAGE
+ *
+ * double _XcmsPolynomial (order, coeffs, x)
+ * int order;
+ * double *coeffs;
+ * double x;
+ *
+ * PROGRAMMER
+ *
+ * Fred Fish
+ *
+ * INTERNALS
+ *
+ * Evalates the polynomial using recursion and the form:
+ *
+ * P(x) = P0 + x(P1 + x(P2 +...x(Pn)))
+ *
+ */
+
+static double _XcmsPolynomial(
+ register int order,
+ double const *coeffs,
+ double x)
+{
+ auto double rtn_value;
+
+#if 0
+ auto double curr_coeff;
+ if (order <= 0) {
+ rtn_value = *coeffs;
+ } else {
+ curr_coeff = *coeffs; /* Bug in Unisoft's compiler. Does not */
+ coeffs++; /* generate good code for *coeffs++ */
+ rtn_value = curr_coeff + x * _XcmsPolynomial (--order, coeffs, x);
+ }
+#else /* ++jrb -- removed tail recursion */
+ coeffs += order;
+ rtn_value = *coeffs--;
+ while(order-- > 0)
+ rtn_value = *coeffs-- + (x * rtn_value);
+#endif
+
+ return(rtn_value);
+}
+
+
+/*
+ * FUNCTION
+ *
+ * _XcmsSine double precision sine
+ *
+ * KEY WORDS
+ *
+ * sin
+ * machine independent routines
+ * trigonometric functions
+ * math libraries
+ *
+ * DESCRIPTION
+ *
+ * Returns double precision sine of double precision
+ * floating point argument.
+ *
+ * USAGE
+ *
+ * double _XcmsSine (x)
+ * double x;
+ *
+ * REFERENCES
+ *
+ * Computer Approximations, J.F. Hart et al, John Wiley & Sons,
+ * 1968, pp. 112-120.
+ *
+ * RESTRICTIONS
+ *
+ * The sin and cos routines are interactive in the sense that
+ * in the process of reducing the argument to the range -PI/4
+ * to PI/4, each may call the other. Ultimately one or the
+ * other uses a polynomial approximation on the reduced
+ * argument. The sin approximation has a maximum relative error
+ * of 10**(-17.59) and the cos approximation has a maximum
+ * relative error of 10**(-16.18).
+ *
+ * These error bounds assume exact arithmetic
+ * in the polynomial evaluation. Additional rounding and
+ * truncation errors may occur as the argument is reduced
+ * to the range over which the polynomial approximation
+ * is valid, and as the polynomial is evaluated using
+ * finite-precision arithmetic.
+ *
+ * PROGRAMMER
+ *
+ * Fred Fish
+ *
+ * INTERNALS
+ *
+ * Computes sin(x) from:
+ *
+ * (1) Reduce argument x to range -PI to PI.
+ *
+ * (2) If x > PI/2 then call sin recursively
+ * using relation sin(x) = -sin(x - PI).
+ *
+ * (3) If x < -PI/2 then call sin recursively
+ * using relation sin(x) = -sin(x + PI).
+ *
+ * (4) If x > PI/4 then call cos using
+ * relation sin(x) = cos(PI/2 - x).
+ *
+ * (5) If x < -PI/4 then call cos using
+ * relation sin(x) = -cos(PI/2 + x).
+ *
+ * (6) If x is small enough that polynomial
+ * evaluation would cause underflow
+ * then return x, since sin(x)
+ * approaches x as x approaches zero.
+ *
+ * (7) By now x has been reduced to range
+ * -PI/4 to PI/4 and the approximation
+ * from HART pg. 118 can be used:
+ *
+ * sin(x) = y * ( p(y) / q(y) )
+ * Where:
+ *
+ * y = x * (4/PI)
+ *
+ * p(y) = SUM [ Pj * (y**(2*j)) ]
+ * over j = {0,1,2,3}
+ *
+ * q(y) = SUM [ Qj * (y**(2*j)) ]
+ * over j = {0,1,2,3}
+ *
+ * P0 = 0.206643433369958582409167054e+7
+ * P1 = -0.18160398797407332550219213e+6
+ * P2 = 0.359993069496361883172836e+4
+ * P3 = -0.2010748329458861571949e+2
+ * Q0 = 0.263106591026476989637710307e+7
+ * Q1 = 0.3927024277464900030883986e+5
+ * Q2 = 0.27811919481083844087953e+3
+ * Q3 = 1.0000...
+ * (coefficients from HART table #3063 pg 234)
+ *
+ *
+ * **** NOTE **** The range reduction relations used in
+ * this routine depend on the final approximation being valid
+ * over the negative argument range in addition to the positive
+ * argument range. The particular approximation chosen from
+ * HART satisfies this requirement, although not explicitly
+ * stated in the text. This may not be true of other
+ * approximations given in the reference.
+ *
+ */
+
+double
+_XcmsSine (double x)
+{
+ double y;
+ double yt2;
+ double retval;
+
+ if (x < -XCMS_PI || x > XCMS_PI) {
+ x = _XcmsModulo (x, XCMS_TWOPI);
+ if (x > XCMS_PI) {
+ x = x - XCMS_TWOPI;
+ } else if (x < -XCMS_PI) {
+ x = x + XCMS_TWOPI;
+ }
+ }
+ if (x > XCMS_HALFPI) {
+ retval = -(_XcmsSine (x - XCMS_PI));
+ } else if (x < -XCMS_HALFPI) {
+ retval = -(_XcmsSine (x + XCMS_PI));
+ } else if (x > XCMS_FOURTHPI) {
+ retval = _XcmsCosine (XCMS_HALFPI - x);
+ } else if (x < -XCMS_FOURTHPI) {
+ retval = -(_XcmsCosine (XCMS_HALFPI + x));
+ } else if (x < XCMS_X6_UNDERFLOWS && x > -XCMS_X6_UNDERFLOWS) {
+ retval = x;
+ } else {
+ y = x / XCMS_FOURTHPI;
+ yt2 = y * y;
+ retval = y * (_XcmsPolynomial (3, sin_pcoeffs, yt2) / _XcmsPolynomial(3, sin_qcoeffs, yt2));
+ }
+ return(retval);
+}
+
+
+/*
+ * NAME
+ * _XcmsArcTangent
+ *
+ * SYNOPSIS
+ */
+double
+_XcmsArcTangent(double x)
+/*
+ * DESCRIPTION
+ * Computes the arctangent.
+ * This is an implementation of the Gauss algorithm as
+ * described in:
+ * Forman S. Acton, Numerical Methods That Work,
+ * New York, NY, Harper & Row, 1970.
+ *
+ * RETURNS
+ * Returns the arctangent
+ */
+{
+ double ai, a1 = 0.0, bi, b1 = 0.0, l, d;
+ double maxerror;
+ int i;
+
+ if (x == 0.0) {
+ return (0.0);
+ }
+ if (x < 1.0) {
+ maxerror = x * XCMS_MAXERROR;
+ } else {
+ maxerror = XCMS_MAXERROR;
+ }
+ ai = _XcmsSquareRoot( 1.0 / (1.0 + (x * x)) );
+ bi = 1.0;
+ for (i = 0; i < XCMS_MAXITER; i++) {
+ a1 = (ai + bi) / 2.0;
+ b1 = _XcmsSquareRoot((a1 * bi));
+ if (a1 == b1)
+ break;
+ d = XCMS_FABS(a1 - b1);
+ if (d < maxerror)
+ break;
+ ai = a1;
+ bi = b1;
+ }
+
+ l = ((a1 > b1) ? b1 : a1);
+
+ a1 = _XcmsSquareRoot(1 + (x * x));
+ return (x / (a1 * l));
+}
diff --git a/libX11/src/xcms/uvY.c b/libX11/src/xcms/uvY.c
index a4abc66cd..5344fb17c 100644
--- a/libX11/src/xcms/uvY.c
+++ b/libX11/src/xcms/uvY.c
@@ -1,423 +1,423 @@
-
-/*
- * Code and supporting documentation (c) Copyright 1990 1991 Tektronix, Inc.
- * All Rights Reserved
- *
- * This file is a component of an X Window System-specific implementation
- * of XCMS based on the TekColor Color Management System. Permission is
- * hereby granted to use, copy, modify, sell, and otherwise distribute this
- * software and its documentation for any purpose and without fee, provided
- * that this copyright, permission, and disclaimer notice is reproduced in
- * all copies of this software and in supporting documentation. TekColor
- * is a trademark of Tektronix, Inc.
- *
- * Tektronix makes no representation about the suitability of this software
- * for any purpose. It is provided "as is" and with all faults.
- *
- * TEKTRONIX DISCLAIMS ALL WARRANTIES APPLICABLE TO THIS SOFTWARE,
- * INCLUDING THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE. IN NO EVENT SHALL TEKTRONIX BE LIABLE FOR ANY
- * SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER
- * RESULTING FROM LOSS OF USE, DATA, OR PROFITS, WHETHER IN AN ACTION OF
- * CONTRACT, NEGLIGENCE, OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
- * CONNECTION WITH THE USE OR THE PERFORMANCE OF THIS SOFTWARE.
- *
- *
- * NAME
- * CIEuvy.c
- *
- * DESCRIPTION
- * This file contains routines that support the CIE u'v'Y
- * color space to include conversions to and from the CIE
- * XYZ space.
- *
- * DOCUMENTATION
- * "TekColor Color Management System, System Implementor's Manual"
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include <X11/Xos.h>
-#include "Xlibint.h"
-#include "Xcmsint.h"
-#include "Cv.h"
-
-#include <stdio.h>
-
-/*
- * FORWARD DECLARATIONS
- */
-static int CIEuvY_ParseString(register char *spec, XcmsColor *pColor);
-
-/*
- * DEFINES
- * Internal definitions that need NOT be exported to any package
- * or program using this package.
- */
-#ifdef DBL_EPSILON
-# define XMY_DBL_EPSILON DBL_EPSILON
-#else
-# define XMY_DBL_EPSILON 0.00001
-#endif
-
-
-/*
- * LOCAL VARIABLES
- */
-
- /*
- * NULL terminated list of functions applied to get from CIEuvY to CIEXYZ
- */
-static XcmsConversionProc Fl_CIEuvY_to_CIEXYZ[] = {
- XcmsCIEuvYToCIEXYZ,
- NULL
-};
-
- /*
- * NULL terminated list of functions applied to get from CIEXYZ to CIEuvY
- */
-static XcmsConversionProc Fl_CIEXYZ_to_CIEuvY[] = {
- XcmsCIEXYZToCIEuvY,
- NULL
-};
-
-
-/*
- * GLOBALS
- */
-
- /*
- * CIE uvY Color Space
- */
-XcmsColorSpace XcmsCIEuvYColorSpace =
- {
- _XcmsCIEuvY_prefix, /* prefix */
- XcmsCIEuvYFormat, /* id */
- CIEuvY_ParseString, /* parseString */
- Fl_CIEuvY_to_CIEXYZ, /* to_CIEXYZ */
- Fl_CIEXYZ_to_CIEuvY, /* from_CIEXYZ */
- 1
- };
-
-
-
-/************************************************************************
- * *
- * PRIVATE ROUTINES *
- * *
- ************************************************************************/
-
-/*
- * NAME
- * CIEuvY_ParseString
- *
- * SYNOPSIS
- */
-static int
-CIEuvY_ParseString(
- register char *spec,
- XcmsColor *pColor)
-/*
- * DESCRIPTION
- * This routines takes a string and attempts to convert
- * it into a XcmsColor structure with XcmsCIEuvYFormat.
- * The assumed CIEuvY string syntax is:
- * CIEuvY:<u>/<v>/<Y>
- * Where u, v, and Y are in string input format for floats
- * consisting of:
- * a. an optional sign
- * b. a string of numbers possibly containing a decimal point,
- * c. an optional exponent field containing an 'E' or 'e'
- * followed by a possibly signed integer string.
- *
- * RETURNS
- * 0 if failed, non-zero otherwise.
- */
-{
- int n;
- char *pchar;
-
- if ((pchar = strchr(spec, ':')) == NULL) {
- return(XcmsFailure);
- }
- n = (int)(pchar - spec);
-
- /*
- * Check for proper prefix.
- */
- if (strncmp(spec, _XcmsCIEuvY_prefix, n) != 0) {
- return(XcmsFailure);
- }
-
- /*
- * Attempt to parse the value portion.
- */
- if (sscanf(spec + n + 1, "%lf/%lf/%lf",
- &pColor->spec.CIEuvY.u_prime,
- &pColor->spec.CIEuvY.v_prime,
- &pColor->spec.CIEuvY.Y) != 3) {
- char *s; /* Maybe failed due to locale */
- int f;
- if ((s = strdup(spec))) {
- for (f = 0; s[f]; ++f)
- if (s[f] == '.')
- s[f] = ',';
- else if (s[f] == ',')
- s[f] = '.';
- if (sscanf(s + n + 1, "%lf/%lf/%lf",
- &pColor->spec.CIEuvY.u_prime,
- &pColor->spec.CIEuvY.v_prime,
- &pColor->spec.CIEuvY.Y) != 3) {
- free(s);
- return(XcmsFailure);
- }
- free(s);
- } else
- return(XcmsFailure);
- }
- pColor->format = XcmsCIEuvYFormat;
- pColor->pixel = 0;
- return(_XcmsCIEuvY_ValidSpec(pColor));
-}
-
-
-/************************************************************************
- * *
- * PUBLIC ROUTINES *
- * *
- ************************************************************************/
-
-/*
- * NAME
- * XcmsCIEuvY_ValidSpec
- *
- * SYNOPSIS
- */
-Status
-_XcmsCIEuvY_ValidSpec(
- XcmsColor *pColor)
-/*
- * DESCRIPTION
- * Checks if color specification valid for CIE u'v'Y.
- *
- * RETURNS
- * XcmsFailure if invalid,
- * XcmsSuccess if valid.
- *
- */
-{
- if (pColor->format != XcmsCIEuvYFormat
- ||
- (pColor->spec.CIEuvY.Y < 0.0 - XMY_DBL_EPSILON)
- ||
- (pColor->spec.CIEuvY.Y > 1.0 + XMY_DBL_EPSILON)) {
- return(XcmsFailure);
- }
- return(XcmsSuccess);
-}
-
-
-/*
- * NAME
- * XcmsCIEuvYToCIEXYZ - convert CIEuvY to CIEXYZ
- *
- * SYNOPSIS
- */
-Status
-XcmsCIEuvYToCIEXYZ(
- XcmsCCC ccc,
- XcmsColor *puvY_WhitePt,
- XcmsColor *pColors_in_out,
- unsigned int nColors)
-/*
- * DESCRIPTION
- * Converts color specifications in an array of XcmsColor
- * structures from CIEuvY format to CIEXYZ format.
- *
- * RETURNS
- * XcmsFailure if failed,
- * XcmsSuccess if succeeded.
- *
- */
-{
- XcmsCIEXYZ XYZ_return;
- XcmsColor whitePt;
- int i;
- XcmsColor *pColor = pColors_in_out;
- XcmsFloat div, x, y, z, Y;
-
- /*
- * Check arguments
- * Postpone checking puvY_WhitePt until it is actually needed
- * otherwise converting between XYZ and uvY will fail.
- */
- if (pColors_in_out == NULL) {
- return(XcmsFailure);
- }
-
-
- /*
- * Now convert each XcmsColor structure to CIEXYZ form
- */
- for (i = 0; i < nColors; i++, pColor++) {
-
- /* Make sure original format is CIEuvY */
- if (!_XcmsCIEuvY_ValidSpec(pColor)) {
- return(XcmsFailure);
- }
-
- /*
- * Convert to CIEXYZ
- */
-
- Y = pColor->spec.CIEuvY.Y;
-
- /* Convert color u'v' to xyz space */
- div = (6.0 * pColor->spec.CIEuvY.u_prime) - (16.0 * pColor->spec.CIEuvY.v_prime) + 12.0;
- if (div == 0.0) {
- /* use white point since div == 0 */
- if (puvY_WhitePt == NULL ) {
- return(XcmsFailure);
- }
- /*
- * Make sure white point is in CIEuvY form
- */
- if (puvY_WhitePt->format != XcmsCIEuvYFormat) {
- /* Make copy of the white point because we're going to modify it */
- memcpy((char *)&whitePt, (char *)puvY_WhitePt, sizeof(XcmsColor));
- if (!_XcmsDIConvertColors(ccc, &whitePt, (XcmsColor *)NULL, 1,
- XcmsCIEuvYFormat)) {
- return(XcmsFailure);
- }
- puvY_WhitePt = &whitePt;
- }
- /* Make sure it is a white point, i.e., Y == 1.0 */
- if (puvY_WhitePt->spec.CIEuvY.Y != 1.0) {
- return(XcmsFailure);
- }
- div = (6.0 * puvY_WhitePt->spec.CIEuvY.u_prime) -
- (16.0 * puvY_WhitePt->spec.CIEuvY.v_prime) + 12.0;
- if (div == 0) {
- /* internal error */
- return(XcmsFailure);
- }
- x = 9.0 * puvY_WhitePt->spec.CIEuvY.u_prime / div;
- y = 4.0 * puvY_WhitePt->spec.CIEuvY.v_prime / div;
- } else {
- x = 9.0 * pColor->spec.CIEuvY.u_prime / div;
- y = 4.0 * pColor->spec.CIEuvY.v_prime / div;
- }
- z = 1.0 - x - y;
-
- /* Convert from xyz to XYZ */
- /* Conversion uses color normalized lightness based on Y */
- if (y != 0.0) {
- XYZ_return.X = x * Y / y;
- } else {
- XYZ_return.X = x;
- }
- XYZ_return.Y = Y;
- if (y != 0.0) {
- XYZ_return.Z = z * Y / y;
- } else {
- XYZ_return.Z = z;
- }
-
- memcpy((char *)&pColor->spec.CIEXYZ, (char *)&XYZ_return, sizeof(XcmsCIEXYZ));
- /* Identify that format is now CIEXYZ */
- pColor->format = XcmsCIEXYZFormat;
- }
-
- return(XcmsSuccess);
-}
-
-
-/*
- * NAME
- * XcmsCIEXYZToCIEuvY - convert CIEXYZ to CIEuvY
- *
- * SYNOPSIS
- */
-Status
-XcmsCIEXYZToCIEuvY(
- XcmsCCC ccc,
- XcmsColor *puvY_WhitePt,
- XcmsColor *pColors_in_out,
- unsigned int nColors)
-/*
- * DESCRIPTION
- * Converts color specifications in an array of XcmsColor
- * structures from CIEXYZ format to CIEuvY format.
- *
- * RETURNS
- * XcmsFailure if failed,
- * XcmsSuccess if succeeded.
- *
- */
-{
- XcmsCIEuvY uvY_return;
- XcmsColor whitePt;
- int i;
- XcmsColor *pColor = pColors_in_out;
- XcmsFloat div;
-
- /*
- * Check arguments
- * Postpone checking puvY_WhitePt until it is actually needed
- * otherwise converting between XYZ and uvY will fail.
- */
- if (pColors_in_out == NULL) {
- return(XcmsFailure);
- }
-
- /*
- * Now convert each XcmsColor structure to CIEuvY form
- */
- for (i = 0; i < nColors; i++, pColor++) {
-
- /* Make sure original format is CIEXYZ */
- if (!_XcmsCIEXYZ_ValidSpec(pColor)) {
- return(XcmsFailure);
- }
-
- /* Convert to CIEuvY */
- div = pColor->spec.CIEXYZ.X + (15.0 * pColor->spec.CIEXYZ.Y) +
- (3.0 * pColor->spec.CIEXYZ.Z);
- if (div == 0.0) {
- /* Use white point since div == 0.0 */
- if (puvY_WhitePt == NULL ) {
- return(XcmsFailure);
- }
- /*
- * Make sure white point is in CIEuvY form
- */
- if (puvY_WhitePt->format != XcmsCIEuvYFormat) {
- /* Make copy of the white point because we're going to modify it */
- memcpy((char *)&whitePt, (char *)puvY_WhitePt, sizeof(XcmsColor));
- if (!_XcmsDIConvertColors(ccc, &whitePt, (XcmsColor *)NULL, 1,
- XcmsCIEuvYFormat)) {
- return(XcmsFailure);
- }
- puvY_WhitePt = &whitePt;
- }
- /* Make sure it is a white point, i.e., Y == 1.0 */
- if (puvY_WhitePt->spec.CIEuvY.Y != 1.0) {
- return(XcmsFailure);
- }
- uvY_return.Y = pColor->spec.CIEXYZ.Y;
- uvY_return.u_prime = puvY_WhitePt->spec.CIEuvY.u_prime;
- uvY_return.v_prime = puvY_WhitePt->spec.CIEuvY.v_prime;
- } else {
- uvY_return.u_prime = 4.0 * pColor->spec.CIEXYZ.X / div;
- uvY_return.v_prime = 9.0 * pColor->spec.CIEXYZ.Y / div;
- uvY_return.Y = pColor->spec.CIEXYZ.Y;
- }
-
- memcpy((char *)&pColor->spec.CIEuvY, (char *)&uvY_return, sizeof(XcmsCIEuvY));
- /* Identify that format is now CIEuvY */
- pColor->format = XcmsCIEuvYFormat;
- }
-
- return(XcmsSuccess);
-}
+
+/*
+ * Code and supporting documentation (c) Copyright 1990 1991 Tektronix, Inc.
+ * All Rights Reserved
+ *
+ * This file is a component of an X Window System-specific implementation
+ * of XCMS based on the TekColor Color Management System. Permission is
+ * hereby granted to use, copy, modify, sell, and otherwise distribute this
+ * software and its documentation for any purpose and without fee, provided
+ * that this copyright, permission, and disclaimer notice is reproduced in
+ * all copies of this software and in supporting documentation. TekColor
+ * is a trademark of Tektronix, Inc.
+ *
+ * Tektronix makes no representation about the suitability of this software
+ * for any purpose. It is provided "as is" and with all faults.
+ *
+ * TEKTRONIX DISCLAIMS ALL WARRANTIES APPLICABLE TO THIS SOFTWARE,
+ * INCLUDING THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+ * PARTICULAR PURPOSE. IN NO EVENT SHALL TEKTRONIX BE LIABLE FOR ANY
+ * SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER
+ * RESULTING FROM LOSS OF USE, DATA, OR PROFITS, WHETHER IN AN ACTION OF
+ * CONTRACT, NEGLIGENCE, OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
+ * CONNECTION WITH THE USE OR THE PERFORMANCE OF THIS SOFTWARE.
+ *
+ *
+ * NAME
+ * CIEuvy.c
+ *
+ * DESCRIPTION
+ * This file contains routines that support the CIE u'v'Y
+ * color space to include conversions to and from the CIE
+ * XYZ space.
+ *
+ * DOCUMENTATION
+ * "TekColor Color Management System, System Implementor's Manual"
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include <X11/Xos.h>
+#include "Xlibint.h"
+#include "Xcmsint.h"
+#include "Cv.h"
+
+#include <stdio.h>
+
+/*
+ * FORWARD DECLARATIONS
+ */
+static int CIEuvY_ParseString(register char *spec, XcmsColor *pColor);
+
+/*
+ * DEFINES
+ * Internal definitions that need NOT be exported to any package
+ * or program using this package.
+ */
+#ifdef DBL_EPSILON
+# define XMY_DBL_EPSILON DBL_EPSILON
+#else
+# define XMY_DBL_EPSILON 0.00001
+#endif
+
+
+/*
+ * LOCAL VARIABLES
+ */
+
+ /*
+ * NULL terminated list of functions applied to get from CIEuvY to CIEXYZ
+ */
+static XcmsConversionProc Fl_CIEuvY_to_CIEXYZ[] = {
+ XcmsCIEuvYToCIEXYZ,
+ NULL
+};
+
+ /*
+ * NULL terminated list of functions applied to get from CIEXYZ to CIEuvY
+ */
+static XcmsConversionProc Fl_CIEXYZ_to_CIEuvY[] = {
+ XcmsCIEXYZToCIEuvY,
+ NULL
+};
+
+
+/*
+ * GLOBALS
+ */
+
+ /*
+ * CIE uvY Color Space
+ */
+XcmsColorSpace XcmsCIEuvYColorSpace =
+ {
+ _XcmsCIEuvY_prefix, /* prefix */
+ XcmsCIEuvYFormat, /* id */
+ CIEuvY_ParseString, /* parseString */
+ Fl_CIEuvY_to_CIEXYZ, /* to_CIEXYZ */
+ Fl_CIEXYZ_to_CIEuvY, /* from_CIEXYZ */
+ 1
+ };
+
+
+
+/************************************************************************
+ * *
+ * PRIVATE ROUTINES *
+ * *
+ ************************************************************************/
+
+/*
+ * NAME
+ * CIEuvY_ParseString
+ *
+ * SYNOPSIS
+ */
+static int
+CIEuvY_ParseString(
+ register char *spec,
+ XcmsColor *pColor)
+/*
+ * DESCRIPTION
+ * This routines takes a string and attempts to convert
+ * it into a XcmsColor structure with XcmsCIEuvYFormat.
+ * The assumed CIEuvY string syntax is:
+ * CIEuvY:<u>/<v>/<Y>
+ * Where u, v, and Y are in string input format for floats
+ * consisting of:
+ * a. an optional sign
+ * b. a string of numbers possibly containing a decimal point,
+ * c. an optional exponent field containing an 'E' or 'e'
+ * followed by a possibly signed integer string.
+ *
+ * RETURNS
+ * 0 if failed, non-zero otherwise.
+ */
+{
+ int n;
+ char *pchar;
+
+ if ((pchar = strchr(spec, ':')) == NULL) {
+ return(XcmsFailure);
+ }
+ n = (int)(pchar - spec);
+
+ /*
+ * Check for proper prefix.
+ */
+ if (strncmp(spec, _XcmsCIEuvY_prefix, n) != 0) {
+ return(XcmsFailure);
+ }
+
+ /*
+ * Attempt to parse the value portion.
+ */
+ if (sscanf(spec + n + 1, "%lf/%lf/%lf",
+ &pColor->spec.CIEuvY.u_prime,
+ &pColor->spec.CIEuvY.v_prime,
+ &pColor->spec.CIEuvY.Y) != 3) {
+ char *s; /* Maybe failed due to locale */
+ int f;
+ if ((s = strdup(spec))) {
+ for (f = 0; s[f]; ++f)
+ if (s[f] == '.')
+ s[f] = ',';
+ else if (s[f] == ',')
+ s[f] = '.';
+ if (sscanf(s + n + 1, "%lf/%lf/%lf",
+ &pColor->spec.CIEuvY.u_prime,
+ &pColor->spec.CIEuvY.v_prime,
+ &pColor->spec.CIEuvY.Y) != 3) {
+ free(s);
+ return(XcmsFailure);
+ }
+ free(s);
+ } else
+ return(XcmsFailure);
+ }
+ pColor->format = XcmsCIEuvYFormat;
+ pColor->pixel = 0;
+ return(_XcmsCIEuvY_ValidSpec(pColor));
+}
+
+
+/************************************************************************
+ * *
+ * PUBLIC ROUTINES *
+ * *
+ ************************************************************************/
+
+/*
+ * NAME
+ * XcmsCIEuvY_ValidSpec
+ *
+ * SYNOPSIS
+ */
+Status
+_XcmsCIEuvY_ValidSpec(
+ XcmsColor *pColor)
+/*
+ * DESCRIPTION
+ * Checks if color specification valid for CIE u'v'Y.
+ *
+ * RETURNS
+ * XcmsFailure if invalid,
+ * XcmsSuccess if valid.
+ *
+ */
+{
+ if (pColor->format != XcmsCIEuvYFormat
+ ||
+ (pColor->spec.CIEuvY.Y < 0.0 - XMY_DBL_EPSILON)
+ ||
+ (pColor->spec.CIEuvY.Y > 1.0 + XMY_DBL_EPSILON)) {
+ return(XcmsFailure);
+ }
+ return(XcmsSuccess);
+}
+
+
+/*
+ * NAME
+ * XcmsCIEuvYToCIEXYZ - convert CIEuvY to CIEXYZ
+ *
+ * SYNOPSIS
+ */
+Status
+XcmsCIEuvYToCIEXYZ(
+ XcmsCCC ccc,
+ XcmsColor *puvY_WhitePt,
+ XcmsColor *pColors_in_out,
+ unsigned int nColors)
+/*
+ * DESCRIPTION
+ * Converts color specifications in an array of XcmsColor
+ * structures from CIEuvY format to CIEXYZ format.
+ *
+ * RETURNS
+ * XcmsFailure if failed,
+ * XcmsSuccess if succeeded.
+ *
+ */
+{
+ XcmsCIEXYZ XYZ_return;
+ XcmsColor whitePt;
+ int i;
+ XcmsColor *pColor = pColors_in_out;
+ XcmsFloat div, x, y, z, Y;
+
+ /*
+ * Check arguments
+ * Postpone checking puvY_WhitePt until it is actually needed
+ * otherwise converting between XYZ and uvY will fail.
+ */
+ if (pColors_in_out == NULL) {
+ return(XcmsFailure);
+ }
+
+
+ /*
+ * Now convert each XcmsColor structure to CIEXYZ form
+ */
+ for (i = 0; i < nColors; i++, pColor++) {
+
+ /* Make sure original format is CIEuvY */
+ if (!_XcmsCIEuvY_ValidSpec(pColor)) {
+ return(XcmsFailure);
+ }
+
+ /*
+ * Convert to CIEXYZ
+ */
+
+ Y = pColor->spec.CIEuvY.Y;
+
+ /* Convert color u'v' to xyz space */
+ div = (6.0 * pColor->spec.CIEuvY.u_prime) - (16.0 * pColor->spec.CIEuvY.v_prime) + 12.0;
+ if (div == 0.0) {
+ /* use white point since div == 0 */
+ if (puvY_WhitePt == NULL ) {
+ return(XcmsFailure);
+ }
+ /*
+ * Make sure white point is in CIEuvY form
+ */
+ if (puvY_WhitePt->format != XcmsCIEuvYFormat) {
+ /* Make copy of the white point because we're going to modify it */
+ memcpy((char *)&whitePt, (char *)puvY_WhitePt, sizeof(XcmsColor));
+ if (!_XcmsDIConvertColors(ccc, &whitePt, (XcmsColor *)NULL, 1,
+ XcmsCIEuvYFormat)) {
+ return(XcmsFailure);
+ }
+ puvY_WhitePt = &whitePt;
+ }
+ /* Make sure it is a white point, i.e., Y == 1.0 */
+ if (puvY_WhitePt->spec.CIEuvY.Y != 1.0) {
+ return(XcmsFailure);
+ }
+ div = (6.0 * puvY_WhitePt->spec.CIEuvY.u_prime) -
+ (16.0 * puvY_WhitePt->spec.CIEuvY.v_prime) + 12.0;
+ if (div == 0) {
+ /* internal error */
+ return(XcmsFailure);
+ }
+ x = 9.0 * puvY_WhitePt->spec.CIEuvY.u_prime / div;
+ y = 4.0 * puvY_WhitePt->spec.CIEuvY.v_prime / div;
+ } else {
+ x = 9.0 * pColor->spec.CIEuvY.u_prime / div;
+ y = 4.0 * pColor->spec.CIEuvY.v_prime / div;
+ }
+ z = 1.0 - x - y;
+
+ /* Convert from xyz to XYZ */
+ /* Conversion uses color normalized lightness based on Y */
+ if (y != 0.0) {
+ XYZ_return.X = x * Y / y;
+ } else {
+ XYZ_return.X = x;
+ }
+ XYZ_return.Y = Y;
+ if (y != 0.0) {
+ XYZ_return.Z = z * Y / y;
+ } else {
+ XYZ_return.Z = z;
+ }
+
+ memcpy((char *)&pColor->spec.CIEXYZ, (char *)&XYZ_return, sizeof(XcmsCIEXYZ));
+ /* Identify that format is now CIEXYZ */
+ pColor->format = XcmsCIEXYZFormat;
+ }
+
+ return(XcmsSuccess);
+}
+
+
+/*
+ * NAME
+ * XcmsCIEXYZToCIEuvY - convert CIEXYZ to CIEuvY
+ *
+ * SYNOPSIS
+ */
+Status
+XcmsCIEXYZToCIEuvY(
+ XcmsCCC ccc,
+ XcmsColor *puvY_WhitePt,
+ XcmsColor *pColors_in_out,
+ unsigned int nColors)
+/*
+ * DESCRIPTION
+ * Converts color specifications in an array of XcmsColor
+ * structures from CIEXYZ format to CIEuvY format.
+ *
+ * RETURNS
+ * XcmsFailure if failed,
+ * XcmsSuccess if succeeded.
+ *
+ */
+{
+ XcmsCIEuvY uvY_return;
+ XcmsColor whitePt;
+ int i;
+ XcmsColor *pColor = pColors_in_out;
+ XcmsFloat div;
+
+ /*
+ * Check arguments
+ * Postpone checking puvY_WhitePt until it is actually needed
+ * otherwise converting between XYZ and uvY will fail.
+ */
+ if (pColors_in_out == NULL) {
+ return(XcmsFailure);
+ }
+
+ /*
+ * Now convert each XcmsColor structure to CIEuvY form
+ */
+ for (i = 0; i < nColors; i++, pColor++) {
+
+ /* Make sure original format is CIEXYZ */
+ if (!_XcmsCIEXYZ_ValidSpec(pColor)) {
+ return(XcmsFailure);
+ }
+
+ /* Convert to CIEuvY */
+ div = pColor->spec.CIEXYZ.X + (15.0 * pColor->spec.CIEXYZ.Y) +
+ (3.0 * pColor->spec.CIEXYZ.Z);
+ if (div == 0.0) {
+ /* Use white point since div == 0.0 */
+ if (puvY_WhitePt == NULL ) {
+ return(XcmsFailure);
+ }
+ /*
+ * Make sure white point is in CIEuvY form
+ */
+ if (puvY_WhitePt->format != XcmsCIEuvYFormat) {
+ /* Make copy of the white point because we're going to modify it */
+ memcpy((char *)&whitePt, (char *)puvY_WhitePt, sizeof(XcmsColor));
+ if (!_XcmsDIConvertColors(ccc, &whitePt, (XcmsColor *)NULL, 1,
+ XcmsCIEuvYFormat)) {
+ return(XcmsFailure);
+ }
+ puvY_WhitePt = &whitePt;
+ }
+ /* Make sure it is a white point, i.e., Y == 1.0 */
+ if (puvY_WhitePt->spec.CIEuvY.Y != 1.0) {
+ return(XcmsFailure);
+ }
+ uvY_return.Y = pColor->spec.CIEXYZ.Y;
+ uvY_return.u_prime = puvY_WhitePt->spec.CIEuvY.u_prime;
+ uvY_return.v_prime = puvY_WhitePt->spec.CIEuvY.v_prime;
+ } else {
+ uvY_return.u_prime = 4.0 * pColor->spec.CIEXYZ.X / div;
+ uvY_return.v_prime = 9.0 * pColor->spec.CIEXYZ.Y / div;
+ uvY_return.Y = pColor->spec.CIEXYZ.Y;
+ }
+
+ memcpy((char *)&pColor->spec.CIEuvY, (char *)&uvY_return, sizeof(XcmsCIEuvY));
+ /* Identify that format is now CIEuvY */
+ pColor->format = XcmsCIEuvYFormat;
+ }
+
+ return(XcmsSuccess);
+}
diff --git a/libX11/src/xcms/xyY.c b/libX11/src/xcms/xyY.c
index 6f6562621..6f9457496 100644
--- a/libX11/src/xcms/xyY.c
+++ b/libX11/src/xcms/xyY.c
@@ -1,395 +1,395 @@
-
-/*
- * Code and supporting documentation (c) Copyright 1990 1991 Tektronix, Inc.
- * All Rights Reserved
- *
- * This file is a component of an X Window System-specific implementation
- * of Xcms based on the TekColor Color Management System. Permission is
- * hereby granted to use, copy, modify, sell, and otherwise distribute this
- * software and its documentation for any purpose and without fee, provided
- * that this copyright, permission, and disclaimer notice is reproduced in
- * all copies of this software and in supporting documentation. TekColor
- * is a trademark of Tektronix, Inc.
- *
- * Tektronix makes no representation about the suitability of this software
- * for any purpose. It is provided "as is" and with all faults.
- *
- * TEKTRONIX DISCLAIMS ALL WARRANTIES APPLICABLE TO THIS SOFTWARE,
- * INCLUDING THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
- * PARTICULAR PURPOSE. IN NO EVENT SHALL TEKTRONIX BE LIABLE FOR ANY
- * SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER
- * RESULTING FROM LOSS OF USE, DATA, OR PROFITS, WHETHER IN AN ACTION OF
- * CONTRACT, NEGLIGENCE, OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
- * CONNECTION WITH THE USE OR THE PERFORMANCE OF THIS SOFTWARE.
- *
- * NAME
- * CIExyY.c
- *
- * DESCRIPTION
- * This file contains routines that support the CIE xyY
- * color space to include conversions to and from the CIE
- * XYZ space.
- *
- * DOCUMENTATION
- * "TekColor Color Management System, System Implementor's Manual"
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include <stdio.h>
-#include <X11/Xos.h>
-#include "Xlibint.h"
-#include "Xcmsint.h"
-#include "Cv.h"
-
-/*
- * DEFINES
- */
-#define EPS 0.00001 /* some extremely small number */
-#ifdef DBL_EPSILON
-# define XMY_DBL_EPSILON DBL_EPSILON
-#else
-# define XMY_DBL_EPSILON 0.00001
-#endif
-
-/*
- * FORWARD DECLARATIONS
- */
-
-static int CIExyY_ParseString(register char *spec, XcmsColor *pColor);
-static Status XcmsCIExyY_ValidSpec(XcmsColor *pColor);
-
-
-/*
- * LOCAL VARIABLES
- */
-
- /*
- * NULL terminated list of functions applied to get from CIExyY to CIEXYZ
- */
-static XcmsConversionProc Fl_CIExyY_to_CIEXYZ[] = {
- XcmsCIExyYToCIEXYZ,
- NULL
-};
-
- /*
- * NULL terminated list of functions applied to get from CIEXYZ to CIExyY
- */
-static XcmsConversionProc Fl_CIEXYZ_to_CIExyY[] = {
- XcmsCIEXYZToCIExyY,
- NULL
-};
-
-
-/*
- * GLOBALS
- */
-
- /*
- * CIE xyY Color Space
- */
-XcmsColorSpace XcmsCIExyYColorSpace =
- {
- _XcmsCIExyY_prefix, /* prefix */
- XcmsCIExyYFormat, /* id */
- CIExyY_ParseString, /* parseString */
- Fl_CIExyY_to_CIEXYZ, /* to_CIEXYZ */
- Fl_CIEXYZ_to_CIExyY, /* from_CIEXYZ */
- 1
- };
-
-
-
-/************************************************************************
- * *
- * PRIVATE ROUTINES *
- * *
- ************************************************************************/
-
-/*
- * NAME
- * CIExyY_ParseString
- *
- * SYNOPSIS
- */
-static int
-CIExyY_ParseString(
- register char *spec,
- XcmsColor *pColor)
-/*
- * DESCRIPTION
- * This routines takes a string and attempts to convert
- * it into a XcmsColor structure with XcmsCIExyYFormat.
- * The assumed CIExyY string syntax is:
- * CIExyY:<x>/<y>/<Y>
- * Where x, y, and Y are in string input format for floats
- * consisting of:
- * a. an optional sign
- * b. a string of numbers possibly containing a decimal point,
- * c. an optional exponent field containing an 'E' or 'e'
- * followed by a possibly signed integer string.
- *
- * RETURNS
- * 0 if failed, non-zero otherwise.
- */
-{
- int n;
- char *pchar;
-
- if ((pchar = strchr(spec, ':')) == NULL) {
- return(XcmsFailure);
- }
- n = (int)(pchar - spec);
-
- /*
- * Check for proper prefix.
- */
- if (strncmp(spec, _XcmsCIExyY_prefix, n) != 0) {
- return(XcmsFailure);
- }
-
- /*
- * Attempt to parse the value portion.
- */
- if (sscanf(spec + n + 1, "%lf/%lf/%lf",
- &pColor->spec.CIExyY.x,
- &pColor->spec.CIExyY.y,
- &pColor->spec.CIExyY.Y) != 3) {
- char *s; /* Maybe failed due to locale */
- int f;
- if ((s = strdup(spec))) {
- for (f = 0; s[f]; ++f)
- if (s[f] == '.')
- s[f] = ',';
- else if (s[f] == ',')
- s[f] = '.';
- if (sscanf(s + n + 1, "%lf/%lf/%lf",
- &pColor->spec.CIExyY.x,
- &pColor->spec.CIExyY.y,
- &pColor->spec.CIExyY.Y) != 3) {
- free(s);
- return(XcmsFailure);
- }
- free(s);
- } else
- return(XcmsFailure);
- }
- pColor->format = XcmsCIExyYFormat;
- pColor->pixel = 0;
- return(XcmsCIExyY_ValidSpec(pColor));
-}
-
-
-
-/************************************************************************
- * *
- * PUBLIC ROUTINES *
- * *
- ************************************************************************/
-
-/*
- * NAME
- * CIExyY_ValidSpec()
- *
- * SYNOPSIS
- */
-static Status
-XcmsCIExyY_ValidSpec(
- XcmsColor *pColor)
-/*
- * DESCRIPTION
- * Checks a valid CIExyY color specification.
- *
- * RETURNS
- * XcmsFailure if invalid.
- * XcmsSuccess if valid.
- *
- */
-{
- if (pColor->format != XcmsCIExyYFormat
- ||
- (pColor->spec.CIExyY.x < 0.0 - XMY_DBL_EPSILON)
- ||
- (pColor->spec.CIExyY.x > 1.0 + XMY_DBL_EPSILON)
- ||
- (pColor->spec.CIExyY.y < 0.0 - XMY_DBL_EPSILON)
- ||
- (pColor->spec.CIExyY.y > 1.0 + XMY_DBL_EPSILON)
- ||
- (pColor->spec.CIExyY.Y < 0.0 - XMY_DBL_EPSILON)
- ||
- (pColor->spec.CIExyY.Y > 1.0 + XMY_DBL_EPSILON)) {
- return(XcmsFailure);
- }
- return(XcmsSuccess);
-}
-
-
-/*
- * NAME
- * XcmsCIExyYToCIEXYZ - convert CIExyY to CIEXYZ
- *
- * SYNOPSIS
- */
-Status
-XcmsCIExyYToCIEXYZ(
- XcmsCCC ccc,
- XcmsColor *pxyY_WhitePt,
- XcmsColor *pColors_in_out,
- unsigned int nColors)
-/*
- * DESCRIPTION
- * Converts color specifications in an array of XcmsColor
- * structures from CIExyY format to CIEXYZ format.
- *
- * RETURNS
- * XcmsFailure if failed,
- * XcmsSuccess if succeeded.
- */
-{
- XcmsColor *pColor = pColors_in_out;
- XcmsColor whitePt;
- XcmsCIEXYZ XYZ_return;
- XcmsFloat div; /* temporary storage in case divisor is zero */
- XcmsFloat u, v, x, y, z; /* temporary storage */
- register int i;
-
- /*
- * Check arguments
- */
- if (pxyY_WhitePt == NULL || pColors_in_out == NULL) {
- return(XcmsFailure);
- }
-
-
- /*
- * Now convert each XcmsColor structure to CIEXYZ form
- */
- for (i = 0; i < nColors; i++, pColor++) {
- /* Make sure original format is CIExyY and valid */
- if (!XcmsCIExyY_ValidSpec(pColor)) {
- return(XcmsFailure);
- }
-
- if ((div = (-2 * pColor->spec.CIExyY.x) + (12 * pColor->spec.CIExyY.y) + 3) == 0.0) {
- /* Note that the divisor is zero */
- /* This return is abitrary. */
- XYZ_return.X = 0;
- XYZ_return.Y = 0;
- XYZ_return.Z = 0;
- } else {
- /*
- * Make sure white point is in CIEXYZ form
- */
- if (pxyY_WhitePt->format != XcmsCIEXYZFormat) {
- /* Make copy of the white point because we're going to modify it */
- memcpy((char *)&whitePt, (char *)pxyY_WhitePt, sizeof(XcmsColor));
- if (!_XcmsDIConvertColors(ccc, &whitePt, (XcmsColor *)NULL, 1,
- XcmsCIEXYZFormat)) {
- return(XcmsFailure);
- }
- pxyY_WhitePt = &whitePt;
- }
-
- /* Make sure it is a white point, i.e., Y == 1.0 */
- if (pxyY_WhitePt->spec.CIEXYZ.Y != 1.0) {
- return(XcmsFailure);
- }
-
- /* Convert from xyY to uvY to XYZ */
- u = (4 * pColor->spec.CIExyY.x) / div;
- v = (9 * pColor->spec.CIExyY.y) / div;
- div = (6.0 * u) - (16.0 * v) + 12.0;
- if (div == 0.0) {
- /* Note that the divisor is zero */
- /* This return is abitrary. */
- if ((div = (6.0 * whitePt.spec.CIEuvY.u_prime) -
- (16.0 * whitePt.spec.CIEuvY.v_prime) + 12.0) == 0.0) {
- div = EPS;
- }
- x = 9.0 * whitePt.spec.CIEuvY.u_prime / div;
- y = 4.0 * whitePt.spec.CIEuvY.u_prime / div;
- } else {
- /* convert u, v to small xyz */
- x = 9.0 * u / div;
- y = 4.0 * v / div;
- }
- z = 1.0 - x - y;
- if (y == 0.0) y = EPS; /* Have to worry about divide by 0 */
- XYZ_return.Y = pColor->spec.CIExyY.Y;
- XYZ_return.X = x * XYZ_return.Y / y;
- XYZ_return.Z = z * XYZ_return.Y / y;
- }
-
- /* Copy result to pColor */
- memcpy ((char *)&pColor->spec, (char *)&XYZ_return, sizeof(XcmsCIEXYZ));
-
- /* Identify that the format is now CIEXYZ */
- pColor->format = XcmsCIEXYZFormat;
- }
- return(XcmsSuccess);
-}
-
-
-/*
- * NAME
- * XcmsCIEXYZToCIExyY - convert CIEXYZ to CIExyY
- *
- * SYNOPSIS
- */
-/* ARGSUSED */
-Status
-XcmsCIEXYZToCIExyY(
- XcmsCCC ccc,
- XcmsColor *pxyY_WhitePt,
- XcmsColor *pColors_in_out,
- unsigned int nColors)
-/*
- * DESCRIPTION
- * Converts color specifications in an array of XcmsColor
- * structures from CIEXYZ format to CIExyY format.
- *
- * RETURNS
- * XcmsFailure if failed,
- * XcmsSuccess if succeeded.
- *
- */
-{
- XcmsColor *pColor = pColors_in_out;
- XcmsCIExyY xyY_return;
- XcmsFloat div; /* temporary storage in case divisor is zero */
- register int i;
-
- /*
- * Check arguments
- * pxyY_WhitePt ignored
- */
- if (pColors_in_out == NULL) {
- return(XcmsFailure);
- }
-
- /*
- * Now convert each XcmsColor structure to CIEXYZ form
- */
- for (i = 0; i < nColors; i++, pColor++) {
-
- if (!_XcmsCIEXYZ_ValidSpec(pColor)) {
- return(XcmsFailure);
- }
- /* Now convert for XYZ to xyY */
- if ((div = pColor->spec.CIEXYZ.X + pColor->spec.CIEXYZ.Y + pColor->spec.CIEXYZ.Z) == 0.0) {
- div = EPS;
- }
- xyY_return.x = pColor->spec.CIEXYZ.X / div;
- xyY_return.y = pColor->spec.CIEXYZ.Y / div;
- xyY_return.Y = pColor->spec.CIEXYZ.Y;
-
- /* Copy result to pColor */
- memcpy ((char *)&pColor->spec, (char *)&xyY_return, sizeof(XcmsCIExyY));
-
- /* Identify that the format is now CIEXYZ */
- pColor->format = XcmsCIExyYFormat;
- }
- return(XcmsSuccess);
-}
+
+/*
+ * Code and supporting documentation (c) Copyright 1990 1991 Tektronix, Inc.
+ * All Rights Reserved
+ *
+ * This file is a component of an X Window System-specific implementation
+ * of Xcms based on the TekColor Color Management System. Permission is
+ * hereby granted to use, copy, modify, sell, and otherwise distribute this
+ * software and its documentation for any purpose and without fee, provided
+ * that this copyright, permission, and disclaimer notice is reproduced in
+ * all copies of this software and in supporting documentation. TekColor
+ * is a trademark of Tektronix, Inc.
+ *
+ * Tektronix makes no representation about the suitability of this software
+ * for any purpose. It is provided "as is" and with all faults.
+ *
+ * TEKTRONIX DISCLAIMS ALL WARRANTIES APPLICABLE TO THIS SOFTWARE,
+ * INCLUDING THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+ * PARTICULAR PURPOSE. IN NO EVENT SHALL TEKTRONIX BE LIABLE FOR ANY
+ * SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER
+ * RESULTING FROM LOSS OF USE, DATA, OR PROFITS, WHETHER IN AN ACTION OF
+ * CONTRACT, NEGLIGENCE, OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
+ * CONNECTION WITH THE USE OR THE PERFORMANCE OF THIS SOFTWARE.
+ *
+ * NAME
+ * CIExyY.c
+ *
+ * DESCRIPTION
+ * This file contains routines that support the CIE xyY
+ * color space to include conversions to and from the CIE
+ * XYZ space.
+ *
+ * DOCUMENTATION
+ * "TekColor Color Management System, System Implementor's Manual"
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include <stdio.h>
+#include <X11/Xos.h>
+#include "Xlibint.h"
+#include "Xcmsint.h"
+#include "Cv.h"
+
+/*
+ * DEFINES
+ */
+#define EPS 0.00001 /* some extremely small number */
+#ifdef DBL_EPSILON
+# define XMY_DBL_EPSILON DBL_EPSILON
+#else
+# define XMY_DBL_EPSILON 0.00001
+#endif
+
+/*
+ * FORWARD DECLARATIONS
+ */
+
+static int CIExyY_ParseString(register char *spec, XcmsColor *pColor);
+static Status XcmsCIExyY_ValidSpec(XcmsColor *pColor);
+
+
+/*
+ * LOCAL VARIABLES
+ */
+
+ /*
+ * NULL terminated list of functions applied to get from CIExyY to CIEXYZ
+ */
+static XcmsConversionProc Fl_CIExyY_to_CIEXYZ[] = {
+ XcmsCIExyYToCIEXYZ,
+ NULL
+};
+
+ /*
+ * NULL terminated list of functions applied to get from CIEXYZ to CIExyY
+ */
+static XcmsConversionProc Fl_CIEXYZ_to_CIExyY[] = {
+ XcmsCIEXYZToCIExyY,
+ NULL
+};
+
+
+/*
+ * GLOBALS
+ */
+
+ /*
+ * CIE xyY Color Space
+ */
+XcmsColorSpace XcmsCIExyYColorSpace =
+ {
+ _XcmsCIExyY_prefix, /* prefix */
+ XcmsCIExyYFormat, /* id */
+ CIExyY_ParseString, /* parseString */
+ Fl_CIExyY_to_CIEXYZ, /* to_CIEXYZ */
+ Fl_CIEXYZ_to_CIExyY, /* from_CIEXYZ */
+ 1
+ };
+
+
+
+/************************************************************************
+ * *
+ * PRIVATE ROUTINES *
+ * *
+ ************************************************************************/
+
+/*
+ * NAME
+ * CIExyY_ParseString
+ *
+ * SYNOPSIS
+ */
+static int
+CIExyY_ParseString(
+ register char *spec,
+ XcmsColor *pColor)
+/*
+ * DESCRIPTION
+ * This routines takes a string and attempts to convert
+ * it into a XcmsColor structure with XcmsCIExyYFormat.
+ * The assumed CIExyY string syntax is:
+ * CIExyY:<x>/<y>/<Y>
+ * Where x, y, and Y are in string input format for floats
+ * consisting of:
+ * a. an optional sign
+ * b. a string of numbers possibly containing a decimal point,
+ * c. an optional exponent field containing an 'E' or 'e'
+ * followed by a possibly signed integer string.
+ *
+ * RETURNS
+ * 0 if failed, non-zero otherwise.
+ */
+{
+ int n;
+ char *pchar;
+
+ if ((pchar = strchr(spec, ':')) == NULL) {
+ return(XcmsFailure);
+ }
+ n = (int)(pchar - spec);
+
+ /*
+ * Check for proper prefix.
+ */
+ if (strncmp(spec, _XcmsCIExyY_prefix, n) != 0) {
+ return(XcmsFailure);
+ }
+
+ /*
+ * Attempt to parse the value portion.
+ */
+ if (sscanf(spec + n + 1, "%lf/%lf/%lf",
+ &pColor->spec.CIExyY.x,
+ &pColor->spec.CIExyY.y,
+ &pColor->spec.CIExyY.Y) != 3) {
+ char *s; /* Maybe failed due to locale */
+ int f;
+ if ((s = strdup(spec))) {
+ for (f = 0; s[f]; ++f)
+ if (s[f] == '.')
+ s[f] = ',';
+ else if (s[f] == ',')
+ s[f] = '.';
+ if (sscanf(s + n + 1, "%lf/%lf/%lf",
+ &pColor->spec.CIExyY.x,
+ &pColor->spec.CIExyY.y,
+ &pColor->spec.CIExyY.Y) != 3) {
+ free(s);
+ return(XcmsFailure);
+ }
+ free(s);
+ } else
+ return(XcmsFailure);
+ }
+ pColor->format = XcmsCIExyYFormat;
+ pColor->pixel = 0;
+ return(XcmsCIExyY_ValidSpec(pColor));
+}
+
+
+
+/************************************************************************
+ * *
+ * PUBLIC ROUTINES *
+ * *
+ ************************************************************************/
+
+/*
+ * NAME
+ * CIExyY_ValidSpec()
+ *
+ * SYNOPSIS
+ */
+static Status
+XcmsCIExyY_ValidSpec(
+ XcmsColor *pColor)
+/*
+ * DESCRIPTION
+ * Checks a valid CIExyY color specification.
+ *
+ * RETURNS
+ * XcmsFailure if invalid.
+ * XcmsSuccess if valid.
+ *
+ */
+{
+ if (pColor->format != XcmsCIExyYFormat
+ ||
+ (pColor->spec.CIExyY.x < 0.0 - XMY_DBL_EPSILON)
+ ||
+ (pColor->spec.CIExyY.x > 1.0 + XMY_DBL_EPSILON)
+ ||
+ (pColor->spec.CIExyY.y < 0.0 - XMY_DBL_EPSILON)
+ ||
+ (pColor->spec.CIExyY.y > 1.0 + XMY_DBL_EPSILON)
+ ||
+ (pColor->spec.CIExyY.Y < 0.0 - XMY_DBL_EPSILON)
+ ||
+ (pColor->spec.CIExyY.Y > 1.0 + XMY_DBL_EPSILON)) {
+ return(XcmsFailure);
+ }
+ return(XcmsSuccess);
+}
+
+
+/*
+ * NAME
+ * XcmsCIExyYToCIEXYZ - convert CIExyY to CIEXYZ
+ *
+ * SYNOPSIS
+ */
+Status
+XcmsCIExyYToCIEXYZ(
+ XcmsCCC ccc,
+ XcmsColor *pxyY_WhitePt,
+ XcmsColor *pColors_in_out,
+ unsigned int nColors)
+/*
+ * DESCRIPTION
+ * Converts color specifications in an array of XcmsColor
+ * structures from CIExyY format to CIEXYZ format.
+ *
+ * RETURNS
+ * XcmsFailure if failed,
+ * XcmsSuccess if succeeded.
+ */
+{
+ XcmsColor *pColor = pColors_in_out;
+ XcmsColor whitePt;
+ XcmsCIEXYZ XYZ_return;
+ XcmsFloat div; /* temporary storage in case divisor is zero */
+ XcmsFloat u, v, x, y, z; /* temporary storage */
+ register int i;
+
+ /*
+ * Check arguments
+ */
+ if (pxyY_WhitePt == NULL || pColors_in_out == NULL) {
+ return(XcmsFailure);
+ }
+
+
+ /*
+ * Now convert each XcmsColor structure to CIEXYZ form
+ */
+ for (i = 0; i < nColors; i++, pColor++) {
+ /* Make sure original format is CIExyY and valid */
+ if (!XcmsCIExyY_ValidSpec(pColor)) {
+ return(XcmsFailure);
+ }
+
+ if ((div = (-2 * pColor->spec.CIExyY.x) + (12 * pColor->spec.CIExyY.y) + 3) == 0.0) {
+ /* Note that the divisor is zero */
+ /* This return is abitrary. */
+ XYZ_return.X = 0;
+ XYZ_return.Y = 0;
+ XYZ_return.Z = 0;
+ } else {
+ /*
+ * Make sure white point is in CIEXYZ form
+ */
+ if (pxyY_WhitePt->format != XcmsCIEXYZFormat) {
+ /* Make copy of the white point because we're going to modify it */
+ memcpy((char *)&whitePt, (char *)pxyY_WhitePt, sizeof(XcmsColor));
+ if (!_XcmsDIConvertColors(ccc, &whitePt, (XcmsColor *)NULL, 1,
+ XcmsCIEXYZFormat)) {
+ return(XcmsFailure);
+ }
+ pxyY_WhitePt = &whitePt;
+ }
+
+ /* Make sure it is a white point, i.e., Y == 1.0 */
+ if (pxyY_WhitePt->spec.CIEXYZ.Y != 1.0) {
+ return(XcmsFailure);
+ }
+
+ /* Convert from xyY to uvY to XYZ */
+ u = (4 * pColor->spec.CIExyY.x) / div;
+ v = (9 * pColor->spec.CIExyY.y) / div;
+ div = (6.0 * u) - (16.0 * v) + 12.0;
+ if (div == 0.0) {
+ /* Note that the divisor is zero */
+ /* This return is abitrary. */
+ if ((div = (6.0 * whitePt.spec.CIEuvY.u_prime) -
+ (16.0 * whitePt.spec.CIEuvY.v_prime) + 12.0) == 0.0) {
+ div = EPS;
+ }
+ x = 9.0 * whitePt.spec.CIEuvY.u_prime / div;
+ y = 4.0 * whitePt.spec.CIEuvY.u_prime / div;
+ } else {
+ /* convert u, v to small xyz */
+ x = 9.0 * u / div;
+ y = 4.0 * v / div;
+ }
+ z = 1.0 - x - y;
+ if (y == 0.0) y = EPS; /* Have to worry about divide by 0 */
+ XYZ_return.Y = pColor->spec.CIExyY.Y;
+ XYZ_return.X = x * XYZ_return.Y / y;
+ XYZ_return.Z = z * XYZ_return.Y / y;
+ }
+
+ /* Copy result to pColor */
+ memcpy ((char *)&pColor->spec, (char *)&XYZ_return, sizeof(XcmsCIEXYZ));
+
+ /* Identify that the format is now CIEXYZ */
+ pColor->format = XcmsCIEXYZFormat;
+ }
+ return(XcmsSuccess);
+}
+
+
+/*
+ * NAME
+ * XcmsCIEXYZToCIExyY - convert CIEXYZ to CIExyY
+ *
+ * SYNOPSIS
+ */
+/* ARGSUSED */
+Status
+XcmsCIEXYZToCIExyY(
+ XcmsCCC ccc,
+ XcmsColor *pxyY_WhitePt,
+ XcmsColor *pColors_in_out,
+ unsigned int nColors)
+/*
+ * DESCRIPTION
+ * Converts color specifications in an array of XcmsColor
+ * structures from CIEXYZ format to CIExyY format.
+ *
+ * RETURNS
+ * XcmsFailure if failed,
+ * XcmsSuccess if succeeded.
+ *
+ */
+{
+ XcmsColor *pColor = pColors_in_out;
+ XcmsCIExyY xyY_return;
+ XcmsFloat div; /* temporary storage in case divisor is zero */
+ register int i;
+
+ /*
+ * Check arguments
+ * pxyY_WhitePt ignored
+ */
+ if (pColors_in_out == NULL) {
+ return(XcmsFailure);
+ }
+
+ /*
+ * Now convert each XcmsColor structure to CIEXYZ form
+ */
+ for (i = 0; i < nColors; i++, pColor++) {
+
+ if (!_XcmsCIEXYZ_ValidSpec(pColor)) {
+ return(XcmsFailure);
+ }
+ /* Now convert for XYZ to xyY */
+ if ((div = pColor->spec.CIEXYZ.X + pColor->spec.CIEXYZ.Y + pColor->spec.CIEXYZ.Z) == 0.0) {
+ div = EPS;
+ }
+ xyY_return.x = pColor->spec.CIEXYZ.X / div;
+ xyY_return.y = pColor->spec.CIEXYZ.Y / div;
+ xyY_return.Y = pColor->spec.CIEXYZ.Y;
+
+ /* Copy result to pColor */
+ memcpy ((char *)&pColor->spec, (char *)&xyY_return, sizeof(XcmsCIExyY));
+
+ /* Identify that the format is now CIEXYZ */
+ pColor->format = XcmsCIExyYFormat;
+ }
+ return(XcmsSuccess);
+}
diff --git a/libX11/src/xkb/Makefile.am b/libX11/src/xkb/Makefile.am
index ba21bbc7b..cde2afbf9 100644
--- a/libX11/src/xkb/Makefile.am
+++ b/libX11/src/xkb/Makefile.am
@@ -1,52 +1,52 @@
-AM_CPPFLAGS= \
- -I$(top_srcdir)/include \
- -I$(top_srcdir)/include/X11 \
- -I$(top_builddir)/include \
- -I$(top_builddir)/include/X11 \
- -I$(top_srcdir)/src/xcms \
- -I$(top_srcdir)/src/xkb \
- -I$(top_srcdir)/src/xlibi18n \
- -D_BSD_SOURCE
-
-AM_CFLAGS= \
- $(X11_CFLAGS) \
- $(BIGFONT_CFLAGS) \
- $(XMALLOC_ZERO_CFLAGS) \
- $(CWARNFLAGS)
-
-noinst_LTLIBRARIES = libxkb.la
-
-libxkb_la_SOURCES = \
- XKB.c \
- XKBBind.c \
- XKBCompat.c \
- XKBCtrls.c \
- XKBCvt.c \
- XKBGetMap.c \
- XKBGetByName.c \
- XKBNames.c \
- XKBRdBuf.c \
- XKBSetMap.c \
- XKBUse.c \
- XKBleds.c \
- XKBBell.c \
- XKBGeom.c \
- XKBSetGeom.c \
- XKBExtDev.c \
- XKBList.c \
- XKBMisc.c \
- XKBMAlloc.c \
- XKBGAlloc.c \
- XKBAlloc.c \
- XKBlibint.h
-
-if LINT
-# Check source code with tools like lint & sparse
-
-ALL_LINT_FLAGS=$(LINT_FLAGS) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
- $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS)
-
-lint:
- $(LINT) $(ALL_LINT_FLAGS) $(libxkb_la_SOURCES) -lm
-
-endif LINT
+AM_CPPFLAGS= \
+ -I$(top_srcdir)/include \
+ -I$(top_srcdir)/include/X11 \
+ -I$(top_builddir)/include \
+ -I$(top_builddir)/include/X11 \
+ -I$(top_srcdir)/src/xcms \
+ -I$(top_srcdir)/src/xkb \
+ -I$(top_srcdir)/src/xlibi18n \
+ -D_BSD_SOURCE
+
+AM_CFLAGS= \
+ $(X11_CFLAGS) \
+ $(BIGFONT_CFLAGS) \
+ $(XMALLOC_ZERO_CFLAGS) \
+ $(CWARNFLAGS)
+
+noinst_LTLIBRARIES = libxkb.la
+
+libxkb_la_SOURCES = \
+ XKB.c \
+ XKBBind.c \
+ XKBCompat.c \
+ XKBCtrls.c \
+ XKBCvt.c \
+ XKBGetMap.c \
+ XKBGetByName.c \
+ XKBNames.c \
+ XKBRdBuf.c \
+ XKBSetMap.c \
+ XKBUse.c \
+ XKBleds.c \
+ XKBBell.c \
+ XKBGeom.c \
+ XKBSetGeom.c \
+ XKBExtDev.c \
+ XKBList.c \
+ XKBMisc.c \
+ XKBMAlloc.c \
+ XKBGAlloc.c \
+ XKBAlloc.c \
+ XKBlibint.h
+
+if LINT
+# Check source code with tools like lint & sparse
+
+ALL_LINT_FLAGS=$(LINT_FLAGS) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
+ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS)
+
+lint:
+ $(LINT) $(ALL_LINT_FLAGS) $(libxkb_la_SOURCES) -lm
+
+endif LINT
diff --git a/libX11/src/xkb/XKBAlloc.c b/libX11/src/xkb/XKBAlloc.c
index 7a46ef2b9..05e9f7315 100644
--- a/libX11/src/xkb/XKBAlloc.c
+++ b/libX11/src/xkb/XKBAlloc.c
@@ -1,498 +1,498 @@
-/************************************************************
-Copyright (c) 1993 by Silicon Graphics Computer Systems, Inc.
-
-Permission to use, copy, modify, and distribute this
-software and its documentation for any purpose and without
-fee is hereby granted, provided that the above copyright
-notice appear in all copies and that both that copyright
-notice and this permission notice appear in supporting
-documentation, and that the name of Silicon Graphics not be
-used in advertising or publicity pertaining to distribution
-of the software without specific prior written permission.
-Silicon Graphics makes no representation about the suitability
-of this software for any purpose. It is provided "as is"
-without any express or implied warranty.
-
-SILICON GRAPHICS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS
-SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
-AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON
-GRAPHICS BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL
-DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
-DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
-OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH
-THE USE OR PERFORMANCE OF THIS SOFTWARE.
-
-********************************************************/
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#elif defined(HAVE_CONFIG_H)
-#include <config.h>
-#endif
-
-#ifndef XKB_IN_SERVER
-
-#include <stdio.h>
-#include "Xlibint.h"
-#include "XKBlibint.h"
-#include <X11/extensions/XKBgeom.h>
-#include <X11/extensions/XKBproto.h>
-#include "XKBlibint.h"
-
-#else
-
-#include <stdio.h>
-#include <X11/X.h>
-#include <X11/Xproto.h>
-#include "misc.h"
-#include "inputstr.h"
-#include <X11/extensions/XKBsrv.h>
-#include <X11/extensions/XKBgeom.h>
-
-#endif /* XKB_IN_SERVER */
-
-/***===================================================================***/
-
-/*ARGSUSED*/
-Status
-XkbAllocCompatMap(XkbDescPtr xkb,unsigned which,unsigned nSI)
-{
-XkbCompatMapPtr compat;
-XkbSymInterpretRec *prev_interpret;
-
- if (!xkb)
- return BadMatch;
- if (xkb->compat) {
- if (xkb->compat->size_si>=nSI)
- return Success;
- compat= xkb->compat;
- compat->size_si= nSI;
- if (compat->sym_interpret==NULL)
- compat->num_si= 0;
- prev_interpret = compat->sym_interpret;
- compat->sym_interpret= _XkbTypedRealloc(compat->sym_interpret,
- nSI,XkbSymInterpretRec);
- if (compat->sym_interpret==NULL) {
- _XkbFree(prev_interpret);
- compat->size_si= compat->num_si= 0;
- return BadAlloc;
- }
- if (compat->num_si!=0) {
- _XkbClearElems(compat->sym_interpret,compat->num_si,
- compat->size_si-1,XkbSymInterpretRec);
- }
- return Success;
- }
- compat= _XkbTypedCalloc(1,XkbCompatMapRec);
- if (compat==NULL)
- return BadAlloc;
- if (nSI>0) {
- compat->sym_interpret= _XkbTypedCalloc(nSI,XkbSymInterpretRec);
- if (!compat->sym_interpret) {
- _XkbFree(compat);
- return BadAlloc;
- }
- }
- compat->size_si= nSI;
- compat->num_si= 0;
- bzero((char *)&compat->groups[0],XkbNumKbdGroups*sizeof(XkbModsRec));
- xkb->compat= compat;
- return Success;
-}
-
-
-void
-XkbFreeCompatMap(XkbDescPtr xkb,unsigned which,Bool freeMap)
-{
-register XkbCompatMapPtr compat;
-
- if ((xkb==NULL)||(xkb->compat==NULL))
- return;
- compat= xkb->compat;
- if (freeMap)
- which= XkbAllCompatMask;
- if (which&XkbGroupCompatMask)
- bzero((char *)&compat->groups[0],XkbNumKbdGroups*sizeof(XkbModsRec));
- if (which&XkbSymInterpMask) {
- if ((compat->sym_interpret)&&(compat->size_si>0))
- _XkbFree(compat->sym_interpret);
- compat->size_si= compat->num_si= 0;
- compat->sym_interpret= NULL;
- }
- if (freeMap) {
- _XkbFree(compat);
- xkb->compat= NULL;
- }
- return;
-}
-
-/***===================================================================***/
-
-Status
-XkbAllocNames(XkbDescPtr xkb,unsigned which,int nTotalRG,int nTotalAliases)
-{
-XkbNamesPtr names;
-
- if (xkb==NULL)
- return BadMatch;
- if (xkb->names==NULL) {
- xkb->names = _XkbTypedCalloc(1,XkbNamesRec);
- if (xkb->names==NULL)
- return BadAlloc;
- }
- names= xkb->names;
- if ((which&XkbKTLevelNamesMask)&&(xkb->map!=NULL)&&(xkb->map->types!=NULL)){
- register int i;
- XkbKeyTypePtr type;
-
- type= xkb->map->types;
- for (i=0;i<xkb->map->num_types;i++,type++) {
- if (type->level_names==NULL) {
- type->level_names= _XkbTypedCalloc(type->num_levels,Atom);
- if (type->level_names==NULL)
- return BadAlloc;
- }
- }
- }
- if ((which&XkbKeyNamesMask)&&(names->keys==NULL)) {
- if ((!XkbIsLegalKeycode(xkb->min_key_code))||
- (!XkbIsLegalKeycode(xkb->max_key_code))||
- (xkb->max_key_code<xkb->min_key_code))
- return BadValue;
- names->keys= _XkbTypedCalloc((xkb->max_key_code+1),XkbKeyNameRec);
- if (names->keys==NULL)
- return BadAlloc;
- }
- if ((which&XkbKeyAliasesMask)&&(nTotalAliases>0)) {
- if (names->key_aliases==NULL) {
- names->key_aliases= _XkbTypedCalloc(nTotalAliases,XkbKeyAliasRec);
- }
- else if (nTotalAliases>names->num_key_aliases) {
- XkbKeyAliasRec *prev_aliases = names->key_aliases;
-
- names->key_aliases= _XkbTypedRealloc(names->key_aliases,
- nTotalAliases,XkbKeyAliasRec);
- if (names->key_aliases!=NULL) {
- _XkbClearElems(names->key_aliases,names->num_key_aliases,
- nTotalAliases-1,XkbKeyAliasRec);
- } else {
- _XkbFree(prev_aliases);
- }
- }
- if (names->key_aliases==NULL) {
- names->num_key_aliases= 0;
- return BadAlloc;
- }
- names->num_key_aliases= nTotalAliases;
- }
- if ((which&XkbRGNamesMask)&&(nTotalRG>0)) {
- if (names->radio_groups==NULL) {
- names->radio_groups= _XkbTypedCalloc(nTotalRG,Atom);
- }
- else if (nTotalRG>names->num_rg) {
- Atom *prev_radio_groups = names->radio_groups;
-
- names->radio_groups= _XkbTypedRealloc(names->radio_groups,nTotalRG,
- Atom);
- if (names->radio_groups!=NULL) {
- _XkbClearElems(names->radio_groups,names->num_rg,nTotalRG-1,
- Atom);
- } else {
- _XkbFree(prev_radio_groups);
- }
- }
- if (names->radio_groups==NULL)
- return BadAlloc;
- names->num_rg= nTotalRG;
- }
- return Success;
-}
-
-void
-XkbFreeNames(XkbDescPtr xkb,unsigned which,Bool freeMap)
-{
-XkbNamesPtr names;
-
- if ((xkb==NULL)||(xkb->names==NULL))
- return;
- names= xkb->names;
- if (freeMap)
- which= XkbAllNamesMask;
- if (which&XkbKTLevelNamesMask) {
- XkbClientMapPtr map= xkb->map;
- if ((map!=NULL)&&(map->types!=NULL)) {
- register int i;
- register XkbKeyTypePtr type;
- type= map->types;
- for (i=0;i<map->num_types;i++,type++) {
- if (type->level_names!=NULL) {
- _XkbFree(type->level_names);
- type->level_names= NULL;
- }
- }
- }
- }
- if ((which&XkbKeyNamesMask)&&(names->keys!=NULL)) {
- _XkbFree(names->keys);
- names->keys= NULL;
- names->num_keys= 0;
- }
- if ((which&XkbKeyAliasesMask)&&(names->key_aliases)){
- _XkbFree(names->key_aliases);
- names->key_aliases=NULL;
- names->num_key_aliases=0;
- }
- if ((which&XkbRGNamesMask)&&(names->radio_groups)) {
- _XkbFree(names->radio_groups);
- names->radio_groups= NULL;
- names->num_rg= 0;
- }
- if (freeMap) {
- _XkbFree(names);
- xkb->names= NULL;
- }
- return;
-}
-
-/***===================================================================***/
-
-/*ARGSUSED*/
-Status
-XkbAllocControls(XkbDescPtr xkb,unsigned which)
-{
- if (xkb==NULL)
- return BadMatch;
-
- if (xkb->ctrls==NULL) {
- xkb->ctrls= _XkbTypedCalloc(1,XkbControlsRec);
- if (!xkb->ctrls)
- return BadAlloc;
- }
- return Success;
-}
-
-/*ARGSUSED*/
-void
-XkbFreeControls(XkbDescPtr xkb,unsigned which,Bool freeMap)
-{
- if (freeMap && (xkb!=NULL) && (xkb->ctrls!=NULL)) {
- _XkbFree(xkb->ctrls);
- xkb->ctrls= NULL;
- }
- return;
-}
-
-/***===================================================================***/
-
-Status
-XkbAllocIndicatorMaps(XkbDescPtr xkb)
-{
- if (xkb==NULL)
- return BadMatch;
- if (xkb->indicators==NULL) {
- xkb->indicators= _XkbTypedCalloc(1,XkbIndicatorRec);
- if (!xkb->indicators)
- return BadAlloc;
- }
- return Success;
-}
-
-void
-XkbFreeIndicatorMaps(XkbDescPtr xkb)
-{
- if ((xkb!=NULL)&&(xkb->indicators!=NULL)) {
- _XkbFree(xkb->indicators);
- xkb->indicators= NULL;
- }
- return;
-}
-
-/***====================================================================***/
-
-XkbDescRec *
-XkbAllocKeyboard(void)
-{
-XkbDescRec *xkb;
-
- xkb = _XkbTypedCalloc(1,XkbDescRec);
- if (xkb)
- xkb->device_spec= XkbUseCoreKbd;
- return xkb;
-}
-
-void
-XkbFreeKeyboard(XkbDescPtr xkb,unsigned which,Bool freeAll)
-{
- if (xkb==NULL)
- return;
- if (freeAll)
- which= XkbAllComponentsMask;
- if (which&XkbClientMapMask)
- XkbFreeClientMap(xkb,XkbAllClientInfoMask,True);
- if (which&XkbServerMapMask)
- XkbFreeServerMap(xkb,XkbAllServerInfoMask,True);
- if (which&XkbCompatMapMask)
- XkbFreeCompatMap(xkb,XkbAllCompatMask,True);
- if (which&XkbIndicatorMapMask)
- XkbFreeIndicatorMaps(xkb);
- if (which&XkbNamesMask)
- XkbFreeNames(xkb,XkbAllNamesMask,True);
- if ((which&XkbGeometryMask) && (xkb->geom!=NULL))
- XkbFreeGeometry(xkb->geom,XkbGeomAllMask,True);
- if (which&XkbControlsMask)
- XkbFreeControls(xkb,XkbAllControlsMask,True);
- if (freeAll)
- _XkbFree(xkb);
- return;
-}
-
-/***====================================================================***/
-
-XkbDeviceLedInfoPtr
-XkbAddDeviceLedInfo(XkbDeviceInfoPtr devi,unsigned ledClass,unsigned ledId)
-{
-XkbDeviceLedInfoPtr devli;
-register int i;
-
- if ((!devi)||(!XkbSingleXIClass(ledClass))||(!XkbSingleXIId(ledId)))
- return NULL;
- for (i=0,devli=devi->leds;i<devi->num_leds;i++,devli++) {
- if ((devli->led_class==ledClass)&&(devli->led_id==ledId))
- return devli;
- }
- if (devi->num_leds>=devi->sz_leds) {
- XkbDeviceLedInfoRec *prev_leds = devi->leds;
-
- if (devi->sz_leds>0) devi->sz_leds*= 2;
- else devi->sz_leds= 1;
- devi->leds= _XkbTypedRealloc(devi->leds,devi->sz_leds,
- XkbDeviceLedInfoRec);
- if (!devi->leds) {
- _XkbFree(prev_leds);
- devi->sz_leds= devi->num_leds= 0;
- return NULL;
- }
- i= devi->num_leds;
- for (devli=&devi->leds[i];i<devi->sz_leds;i++,devli++) {
- bzero(devli,sizeof(XkbDeviceLedInfoRec));
- devli->led_class= XkbXINone;
- devli->led_id= XkbXINone;
- }
- }
- devli= &devi->leds[devi->num_leds++];
- bzero(devli,sizeof(XkbDeviceLedInfoRec));
- devli->led_class= ledClass;
- devli->led_id= ledId;
- return devli;
-}
-
-Status
-XkbResizeDeviceButtonActions(XkbDeviceInfoPtr devi,unsigned newTotal)
-{
- XkbAction *prev_btn_acts;
-
- if ((!devi)||(newTotal>255))
- return BadValue;
- if ((devi->btn_acts!=NULL)&&(newTotal==devi->num_btns))
- return Success;
- if (newTotal==0) {
- if (devi->btn_acts!=NULL) {
- _XkbFree(devi->btn_acts);
- devi->btn_acts= NULL;
- }
- devi->num_btns= 0;
- return Success;
- }
- prev_btn_acts = devi->btn_acts;
- devi->btn_acts= _XkbTypedRealloc(devi->btn_acts,newTotal,XkbAction);
- if (devi->btn_acts==NULL) {
- _XkbFree(prev_btn_acts);
- devi->num_btns= 0;
- return BadAlloc;
- }
- if (newTotal>devi->num_btns) {
- XkbAction *act;
- act= &devi->btn_acts[devi->num_btns];
- bzero((char *)act,(newTotal-devi->num_btns)*sizeof(XkbAction));
- }
- devi->num_btns= newTotal;
- return Success;
-}
-
-/*ARGSUSED*/
-XkbDeviceInfoPtr
-XkbAllocDeviceInfo(unsigned deviceSpec,unsigned nButtons,unsigned szLeds)
-{
-XkbDeviceInfoPtr devi;
-
- devi= _XkbTypedCalloc(1,XkbDeviceInfoRec);
- if (devi!=NULL) {
- devi->device_spec= deviceSpec;
- devi->has_own_state= False;
- devi->num_btns= 0;
- devi->btn_acts= NULL;
- if (nButtons>0) {
- devi->num_btns= nButtons;
- devi->btn_acts= _XkbTypedCalloc(nButtons,XkbAction);
- if (!devi->btn_acts) {
- _XkbFree(devi);
- return NULL;
- }
- }
- devi->dflt_kbd_fb= XkbXINone;
- devi->dflt_led_fb= XkbXINone;
- devi->num_leds= 0;
- devi->sz_leds= 0;
- devi->leds= NULL;
- if (szLeds>0) {
- devi->sz_leds= szLeds;
- devi->leds= _XkbTypedCalloc(szLeds,XkbDeviceLedInfoRec);
- if (!devi->leds) {
- if (devi->btn_acts)
- _XkbFree(devi->btn_acts);
- _XkbFree(devi);
- return NULL;
- }
- }
- }
- return devi;
-}
-
-
-void
-XkbFreeDeviceInfo(XkbDeviceInfoPtr devi,unsigned which,Bool freeDevI)
-{
- if (devi) {
- if (freeDevI) {
- which= XkbXI_AllDeviceFeaturesMask;
- if (devi->name) {
- _XkbFree(devi->name);
- devi->name= NULL;
- }
- }
- if ((which&XkbXI_ButtonActionsMask)&&(devi->btn_acts)) {
- _XkbFree(devi->btn_acts);
- devi->num_btns= 0;
- devi->btn_acts= NULL;
- }
- if ((which&XkbXI_IndicatorsMask)&&(devi->leds)) {
- register int i;
- if ((which&XkbXI_IndicatorsMask)==XkbXI_IndicatorsMask) {
- _XkbFree(devi->leds);
- devi->sz_leds= devi->num_leds= 0;
- devi->leds= NULL;
- }
- else {
- XkbDeviceLedInfoPtr devli;
- for (i=0,devli=devi->leds;i<devi->num_leds;i++,devli++) {
- if (which&XkbXI_IndicatorMapsMask)
- bzero((char *)&devli->maps[0],sizeof(devli->maps));
- else bzero((char *)&devli->names[0],sizeof(devli->names));
- }
- }
- }
- if (freeDevI)
- _XkbFree(devi);
- }
- return;
-}
+/************************************************************
+Copyright (c) 1993 by Silicon Graphics Computer Systems, Inc.
+
+Permission to use, copy, modify, and distribute this
+software and its documentation for any purpose and without
+fee is hereby granted, provided that the above copyright
+notice appear in all copies and that both that copyright
+notice and this permission notice appear in supporting
+documentation, and that the name of Silicon Graphics not be
+used in advertising or publicity pertaining to distribution
+of the software without specific prior written permission.
+Silicon Graphics makes no representation about the suitability
+of this software for any purpose. It is provided "as is"
+without any express or implied warranty.
+
+SILICON GRAPHICS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS
+SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
+AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON
+GRAPHICS BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL
+DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
+DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
+OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH
+THE USE OR PERFORMANCE OF THIS SOFTWARE.
+
+********************************************************/
+
+#ifdef HAVE_DIX_CONFIG_H
+#include <dix-config.h>
+#elif defined(HAVE_CONFIG_H)
+#include <config.h>
+#endif
+
+#ifndef XKB_IN_SERVER
+
+#include <stdio.h>
+#include "Xlibint.h"
+#include "XKBlibint.h"
+#include <X11/extensions/XKBgeom.h>
+#include <X11/extensions/XKBproto.h>
+#include "XKBlibint.h"
+
+#else
+
+#include <stdio.h>
+#include <X11/X.h>
+#include <X11/Xproto.h>
+#include "misc.h"
+#include "inputstr.h"
+#include <X11/extensions/XKBsrv.h>
+#include <X11/extensions/XKBgeom.h>
+
+#endif /* XKB_IN_SERVER */
+
+/***===================================================================***/
+
+/*ARGSUSED*/
+Status
+XkbAllocCompatMap(XkbDescPtr xkb,unsigned which,unsigned nSI)
+{
+XkbCompatMapPtr compat;
+XkbSymInterpretRec *prev_interpret;
+
+ if (!xkb)
+ return BadMatch;
+ if (xkb->compat) {
+ if (xkb->compat->size_si>=nSI)
+ return Success;
+ compat= xkb->compat;
+ compat->size_si= nSI;
+ if (compat->sym_interpret==NULL)
+ compat->num_si= 0;
+ prev_interpret = compat->sym_interpret;
+ compat->sym_interpret= _XkbTypedRealloc(compat->sym_interpret,
+ nSI,XkbSymInterpretRec);
+ if (compat->sym_interpret==NULL) {
+ _XkbFree(prev_interpret);
+ compat->size_si= compat->num_si= 0;
+ return BadAlloc;
+ }
+ if (compat->num_si!=0) {
+ _XkbClearElems(compat->sym_interpret,compat->num_si,
+ compat->size_si-1,XkbSymInterpretRec);
+ }
+ return Success;
+ }
+ compat= _XkbTypedCalloc(1,XkbCompatMapRec);
+ if (compat==NULL)
+ return BadAlloc;
+ if (nSI>0) {
+ compat->sym_interpret= _XkbTypedCalloc(nSI,XkbSymInterpretRec);
+ if (!compat->sym_interpret) {
+ _XkbFree(compat);
+ return BadAlloc;
+ }
+ }
+ compat->size_si= nSI;
+ compat->num_si= 0;
+ bzero((char *)&compat->groups[0],XkbNumKbdGroups*sizeof(XkbModsRec));
+ xkb->compat= compat;
+ return Success;
+}
+
+
+void
+XkbFreeCompatMap(XkbDescPtr xkb,unsigned which,Bool freeMap)
+{
+register XkbCompatMapPtr compat;
+
+ if ((xkb==NULL)||(xkb->compat==NULL))
+ return;
+ compat= xkb->compat;
+ if (freeMap)
+ which= XkbAllCompatMask;
+ if (which&XkbGroupCompatMask)
+ bzero((char *)&compat->groups[0],XkbNumKbdGroups*sizeof(XkbModsRec));
+ if (which&XkbSymInterpMask) {
+ if ((compat->sym_interpret)&&(compat->size_si>0))
+ _XkbFree(compat->sym_interpret);
+ compat->size_si= compat->num_si= 0;
+ compat->sym_interpret= NULL;
+ }
+ if (freeMap) {
+ _XkbFree(compat);
+ xkb->compat= NULL;
+ }
+ return;
+}
+
+/***===================================================================***/
+
+Status
+XkbAllocNames(XkbDescPtr xkb,unsigned which,int nTotalRG,int nTotalAliases)
+{
+XkbNamesPtr names;
+
+ if (xkb==NULL)
+ return BadMatch;
+ if (xkb->names==NULL) {
+ xkb->names = _XkbTypedCalloc(1,XkbNamesRec);
+ if (xkb->names==NULL)
+ return BadAlloc;
+ }
+ names= xkb->names;
+ if ((which&XkbKTLevelNamesMask)&&(xkb->map!=NULL)&&(xkb->map->types!=NULL)){
+ register int i;
+ XkbKeyTypePtr type;
+
+ type= xkb->map->types;
+ for (i=0;i<xkb->map->num_types;i++,type++) {
+ if (type->level_names==NULL) {
+ type->level_names= _XkbTypedCalloc(type->num_levels,Atom);
+ if (type->level_names==NULL)
+ return BadAlloc;
+ }
+ }
+ }
+ if ((which&XkbKeyNamesMask)&&(names->keys==NULL)) {
+ if ((!XkbIsLegalKeycode(xkb->min_key_code))||
+ (!XkbIsLegalKeycode(xkb->max_key_code))||
+ (xkb->max_key_code<xkb->min_key_code))
+ return BadValue;
+ names->keys= _XkbTypedCalloc((xkb->max_key_code+1),XkbKeyNameRec);
+ if (names->keys==NULL)
+ return BadAlloc;
+ }
+ if ((which&XkbKeyAliasesMask)&&(nTotalAliases>0)) {
+ if (names->key_aliases==NULL) {
+ names->key_aliases= _XkbTypedCalloc(nTotalAliases,XkbKeyAliasRec);
+ }
+ else if (nTotalAliases>names->num_key_aliases) {
+ XkbKeyAliasRec *prev_aliases = names->key_aliases;
+
+ names->key_aliases= _XkbTypedRealloc(names->key_aliases,
+ nTotalAliases,XkbKeyAliasRec);
+ if (names->key_aliases!=NULL) {
+ _XkbClearElems(names->key_aliases,names->num_key_aliases,
+ nTotalAliases-1,XkbKeyAliasRec);
+ } else {
+ _XkbFree(prev_aliases);
+ }
+ }
+ if (names->key_aliases==NULL) {
+ names->num_key_aliases= 0;
+ return BadAlloc;
+ }
+ names->num_key_aliases= nTotalAliases;
+ }
+ if ((which&XkbRGNamesMask)&&(nTotalRG>0)) {
+ if (names->radio_groups==NULL) {
+ names->radio_groups= _XkbTypedCalloc(nTotalRG,Atom);
+ }
+ else if (nTotalRG>names->num_rg) {
+ Atom *prev_radio_groups = names->radio_groups;
+
+ names->radio_groups= _XkbTypedRealloc(names->radio_groups,nTotalRG,
+ Atom);
+ if (names->radio_groups!=NULL) {
+ _XkbClearElems(names->radio_groups,names->num_rg,nTotalRG-1,
+ Atom);
+ } else {
+ _XkbFree(prev_radio_groups);
+ }
+ }
+ if (names->radio_groups==NULL)
+ return BadAlloc;
+ names->num_rg= nTotalRG;
+ }
+ return Success;
+}
+
+void
+XkbFreeNames(XkbDescPtr xkb,unsigned which,Bool freeMap)
+{
+XkbNamesPtr names;
+
+ if ((xkb==NULL)||(xkb->names==NULL))
+ return;
+ names= xkb->names;
+ if (freeMap)
+ which= XkbAllNamesMask;
+ if (which&XkbKTLevelNamesMask) {
+ XkbClientMapPtr map= xkb->map;
+ if ((map!=NULL)&&(map->types!=NULL)) {
+ register int i;
+ register XkbKeyTypePtr type;
+ type= map->types;
+ for (i=0;i<map->num_types;i++,type++) {
+ if (type->level_names!=NULL) {
+ _XkbFree(type->level_names);
+ type->level_names= NULL;
+ }
+ }
+ }
+ }
+ if ((which&XkbKeyNamesMask)&&(names->keys!=NULL)) {
+ _XkbFree(names->keys);
+ names->keys= NULL;
+ names->num_keys= 0;
+ }
+ if ((which&XkbKeyAliasesMask)&&(names->key_aliases)){
+ _XkbFree(names->key_aliases);
+ names->key_aliases=NULL;
+ names->num_key_aliases=0;
+ }
+ if ((which&XkbRGNamesMask)&&(names->radio_groups)) {
+ _XkbFree(names->radio_groups);
+ names->radio_groups= NULL;
+ names->num_rg= 0;
+ }
+ if (freeMap) {
+ _XkbFree(names);
+ xkb->names= NULL;
+ }
+ return;
+}
+
+/***===================================================================***/
+
+/*ARGSUSED*/
+Status
+XkbAllocControls(XkbDescPtr xkb,unsigned which)
+{
+ if (xkb==NULL)
+ return BadMatch;
+
+ if (xkb->ctrls==NULL) {
+ xkb->ctrls= _XkbTypedCalloc(1,XkbControlsRec);
+ if (!xkb->ctrls)
+ return BadAlloc;
+ }
+ return Success;
+}
+
+/*ARGSUSED*/
+void
+XkbFreeControls(XkbDescPtr xkb,unsigned which,Bool freeMap)
+{
+ if (freeMap && (xkb!=NULL) && (xkb->ctrls!=NULL)) {
+ _XkbFree(xkb->ctrls);
+ xkb->ctrls= NULL;
+ }
+ return;
+}
+
+/***===================================================================***/
+
+Status
+XkbAllocIndicatorMaps(XkbDescPtr xkb)
+{
+ if (xkb==NULL)
+ return BadMatch;
+ if (xkb->indicators==NULL) {
+ xkb->indicators= _XkbTypedCalloc(1,XkbIndicatorRec);
+ if (!xkb->indicators)
+ return BadAlloc;
+ }
+ return Success;
+}
+
+void
+XkbFreeIndicatorMaps(XkbDescPtr xkb)
+{
+ if ((xkb!=NULL)&&(xkb->indicators!=NULL)) {
+ _XkbFree(xkb->indicators);
+ xkb->indicators= NULL;
+ }
+ return;
+}
+
+/***====================================================================***/
+
+XkbDescRec *
+XkbAllocKeyboard(void)
+{
+XkbDescRec *xkb;
+
+ xkb = _XkbTypedCalloc(1,XkbDescRec);
+ if (xkb)
+ xkb->device_spec= XkbUseCoreKbd;
+ return xkb;
+}
+
+void
+XkbFreeKeyboard(XkbDescPtr xkb,unsigned which,Bool freeAll)
+{
+ if (xkb==NULL)
+ return;
+ if (freeAll)
+ which= XkbAllComponentsMask;
+ if (which&XkbClientMapMask)
+ XkbFreeClientMap(xkb,XkbAllClientInfoMask,True);
+ if (which&XkbServerMapMask)
+ XkbFreeServerMap(xkb,XkbAllServerInfoMask,True);
+ if (which&XkbCompatMapMask)
+ XkbFreeCompatMap(xkb,XkbAllCompatMask,True);
+ if (which&XkbIndicatorMapMask)
+ XkbFreeIndicatorMaps(xkb);
+ if (which&XkbNamesMask)
+ XkbFreeNames(xkb,XkbAllNamesMask,True);
+ if ((which&XkbGeometryMask) && (xkb->geom!=NULL))
+ XkbFreeGeometry(xkb->geom,XkbGeomAllMask,True);
+ if (which&XkbControlsMask)
+ XkbFreeControls(xkb,XkbAllControlsMask,True);
+ if (freeAll)
+ _XkbFree(xkb);
+ return;
+}
+
+/***====================================================================***/
+
+XkbDeviceLedInfoPtr
+XkbAddDeviceLedInfo(XkbDeviceInfoPtr devi,unsigned ledClass,unsigned ledId)
+{
+XkbDeviceLedInfoPtr devli;
+register int i;
+
+ if ((!devi)||(!XkbSingleXIClass(ledClass))||(!XkbSingleXIId(ledId)))
+ return NULL;
+ for (i=0,devli=devi->leds;i<devi->num_leds;i++,devli++) {
+ if ((devli->led_class==ledClass)&&(devli->led_id==ledId))
+ return devli;
+ }
+ if (devi->num_leds>=devi->sz_leds) {
+ XkbDeviceLedInfoRec *prev_leds = devi->leds;
+
+ if (devi->sz_leds>0) devi->sz_leds*= 2;
+ else devi->sz_leds= 1;
+ devi->leds= _XkbTypedRealloc(devi->leds,devi->sz_leds,
+ XkbDeviceLedInfoRec);
+ if (!devi->leds) {
+ _XkbFree(prev_leds);
+ devi->sz_leds= devi->num_leds= 0;
+ return NULL;
+ }
+ i= devi->num_leds;
+ for (devli=&devi->leds[i];i<devi->sz_leds;i++,devli++) {
+ bzero(devli,sizeof(XkbDeviceLedInfoRec));
+ devli->led_class= XkbXINone;
+ devli->led_id= XkbXINone;
+ }
+ }
+ devli= &devi->leds[devi->num_leds++];
+ bzero(devli,sizeof(XkbDeviceLedInfoRec));
+ devli->led_class= ledClass;
+ devli->led_id= ledId;
+ return devli;
+}
+
+Status
+XkbResizeDeviceButtonActions(XkbDeviceInfoPtr devi,unsigned newTotal)
+{
+ XkbAction *prev_btn_acts;
+
+ if ((!devi)||(newTotal>255))
+ return BadValue;
+ if ((devi->btn_acts!=NULL)&&(newTotal==devi->num_btns))
+ return Success;
+ if (newTotal==0) {
+ if (devi->btn_acts!=NULL) {
+ _XkbFree(devi->btn_acts);
+ devi->btn_acts= NULL;
+ }
+ devi->num_btns= 0;
+ return Success;
+ }
+ prev_btn_acts = devi->btn_acts;
+ devi->btn_acts= _XkbTypedRealloc(devi->btn_acts,newTotal,XkbAction);
+ if (devi->btn_acts==NULL) {
+ _XkbFree(prev_btn_acts);
+ devi->num_btns= 0;
+ return BadAlloc;
+ }
+ if (newTotal>devi->num_btns) {
+ XkbAction *act;
+ act= &devi->btn_acts[devi->num_btns];
+ bzero((char *)act,(newTotal-devi->num_btns)*sizeof(XkbAction));
+ }
+ devi->num_btns= newTotal;
+ return Success;
+}
+
+/*ARGSUSED*/
+XkbDeviceInfoPtr
+XkbAllocDeviceInfo(unsigned deviceSpec,unsigned nButtons,unsigned szLeds)
+{
+XkbDeviceInfoPtr devi;
+
+ devi= _XkbTypedCalloc(1,XkbDeviceInfoRec);
+ if (devi!=NULL) {
+ devi->device_spec= deviceSpec;
+ devi->has_own_state= False;
+ devi->num_btns= 0;
+ devi->btn_acts= NULL;
+ if (nButtons>0) {
+ devi->num_btns= nButtons;
+ devi->btn_acts= _XkbTypedCalloc(nButtons,XkbAction);
+ if (!devi->btn_acts) {
+ _XkbFree(devi);
+ return NULL;
+ }
+ }
+ devi->dflt_kbd_fb= XkbXINone;
+ devi->dflt_led_fb= XkbXINone;
+ devi->num_leds= 0;
+ devi->sz_leds= 0;
+ devi->leds= NULL;
+ if (szLeds>0) {
+ devi->sz_leds= szLeds;
+ devi->leds= _XkbTypedCalloc(szLeds,XkbDeviceLedInfoRec);
+ if (!devi->leds) {
+ if (devi->btn_acts)
+ _XkbFree(devi->btn_acts);
+ _XkbFree(devi);
+ return NULL;
+ }
+ }
+ }
+ return devi;
+}
+
+
+void
+XkbFreeDeviceInfo(XkbDeviceInfoPtr devi,unsigned which,Bool freeDevI)
+{
+ if (devi) {
+ if (freeDevI) {
+ which= XkbXI_AllDeviceFeaturesMask;
+ if (devi->name) {
+ _XkbFree(devi->name);
+ devi->name= NULL;
+ }
+ }
+ if ((which&XkbXI_ButtonActionsMask)&&(devi->btn_acts)) {
+ _XkbFree(devi->btn_acts);
+ devi->num_btns= 0;
+ devi->btn_acts= NULL;
+ }
+ if ((which&XkbXI_IndicatorsMask)&&(devi->leds)) {
+ register int i;
+ if ((which&XkbXI_IndicatorsMask)==XkbXI_IndicatorsMask) {
+ _XkbFree(devi->leds);
+ devi->sz_leds= devi->num_leds= 0;
+ devi->leds= NULL;
+ }
+ else {
+ XkbDeviceLedInfoPtr devli;
+ for (i=0,devli=devi->leds;i<devi->num_leds;i++,devli++) {
+ if (which&XkbXI_IndicatorMapsMask)
+ bzero((char *)&devli->maps[0],sizeof(devli->maps));
+ else bzero((char *)&devli->names[0],sizeof(devli->names));
+ }
+ }
+ }
+ if (freeDevI)
+ _XkbFree(devi);
+ }
+ return;
+}
diff --git a/libX11/src/xkb/XKBBell.c b/libX11/src/xkb/XKBBell.c
index 13937c9cd..cf93ea79a 100644
--- a/libX11/src/xkb/XKBBell.c
+++ b/libX11/src/xkb/XKBBell.c
@@ -1,178 +1,178 @@
-/************************************************************
-Copyright (c) 1993 by Silicon Graphics Computer Systems, Inc.
-
-Permission to use, copy, modify, and distribute this
-software and its documentation for any purpose and without
-fee is hereby granted, provided that the above copyright
-notice appear in all copies and that both that copyright
-notice and this permission notice appear in supporting
-documentation, and that the name of Silicon Graphics not be
-used in advertising or publicity pertaining to distribution
-of the software without specific prior written permission.
-Silicon Graphics makes no representation about the suitability
-of this software for any purpose. It is provided "as is"
-without any express or implied warranty.
-
-SILICON GRAPHICS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS
-SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
-AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON
-GRAPHICS BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL
-DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
-DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
-OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH
-THE USE OR PERFORMANCE OF THIS SOFTWARE.
-
-********************************************************/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include <stdio.h>
-#include "Xlibint.h"
-#include <X11/extensions/XKBproto.h>
-#include "XKBlibint.h"
-
-
-Bool
-XkbDeviceBell( Display * dpy,
- Window window,
- int deviceID,
- int bellClass,
- int bellID,
- int percent,
- Atom name)
-{
- register xkbBellReq *req;
- XkbInfoPtr xkbi;
-
- if ((dpy->flags & XlibDisplayNoXkb) ||
- (!dpy->xkb_info && !XkbUseExtension(dpy,NULL,NULL)))
- return False;
- LockDisplay(dpy);
- xkbi = dpy->xkb_info;
- GetReq(kbBell,req);
- req->reqType = xkbi->codes->major_opcode;
- req->xkbReqType = X_kbBell;
- req->deviceSpec = deviceID;
- req->window = (CARD32)window;
- req->bellClass = (CARD16)bellClass;
- req->bellID = (CARD16)bellID;
- req->percent = percent;
- req->forceSound = False;
- req->eventOnly = False;
- req->pitch = 0;
- req->duration = 0;
- req->name = (CARD32)name;
- req->pad1= 0; req->pad2= 0;
- UnlockDisplay(dpy);
- SyncHandle();
- return True;
-}
-
-Bool
-XkbForceDeviceBell( Display * dpy,
- int deviceID,
- int bellClass,
- int bellID,
- int percent)
-{
- register xkbBellReq *req;
- XkbInfoPtr xkbi;
-
- if ((dpy->flags & XlibDisplayNoXkb) ||
- (!dpy->xkb_info && !XkbUseExtension(dpy,NULL,NULL)))
- return False;
- LockDisplay(dpy);
- xkbi = dpy->xkb_info;
- GetReq(kbBell,req);
- req->reqType = xkbi->codes->major_opcode;
- req->xkbReqType = X_kbBell;
- req->deviceSpec = deviceID;
- req->window = (CARD32)None;
- req->bellClass = (CARD16)bellClass;
- req->bellID = (CARD16)bellID;
- req->percent = percent;
- req->forceSound = True;
- req->eventOnly = False;
- req->pitch = 0;
- req->duration = 0;
- req->name = None;
- req->pad1= 0; req->pad2= 0;
- UnlockDisplay(dpy);
- SyncHandle();
- return True;
-}
-
-Bool
-XkbDeviceBellEvent( Display * dpy,
- Window window,
- int deviceID,
- int bellClass,
- int bellID,
- int percent,
- Atom name)
-{
- register xkbBellReq *req;
- XkbInfoPtr xkbi;
-
- if ((dpy->flags & XlibDisplayNoXkb) ||
- (!dpy->xkb_info && !XkbUseExtension(dpy,NULL,NULL)))
- return False;
- LockDisplay(dpy);
- xkbi = dpy->xkb_info;
- GetReq(kbBell,req);
- req->reqType = xkbi->codes->major_opcode;
- req->xkbReqType = X_kbBell;
- req->deviceSpec = deviceID;
- req->window = (CARD32)window;
- req->bellClass = (CARD16)bellClass;
- req->bellID = (CARD16)bellID;
- req->percent = percent;
- req->forceSound = False;
- req->eventOnly = True;
- req->pitch = 0;
- req->duration = 0;
- req->name = (CARD32)name;
- req->pad1= 0; req->pad2= 0;
- UnlockDisplay(dpy);
- SyncHandle();
- return True;
-}
-
-Bool
-XkbBell(Display *dpy,Window window,int percent,Atom name)
-{
- if ((dpy->flags & XlibDisplayNoXkb) ||
- (!dpy->xkb_info && !XkbUseExtension(dpy,NULL,NULL))) {
- XBell(dpy,percent);
- return False;
- }
- return XkbDeviceBell(dpy,window,XkbUseCoreKbd,XkbDfltXIClass,XkbDfltXIId,
- percent,name);
-}
-
-Bool
-XkbForceBell(Display *dpy,int percent)
-{
- if ((dpy->flags & XlibDisplayNoXkb) ||
- (!dpy->xkb_info && !XkbUseExtension(dpy,NULL,NULL))) {
- XBell(dpy,percent);
- return False;
- }
- return XkbForceDeviceBell(dpy,XkbUseCoreKbd,XkbDfltXIClass,XkbDfltXIId,
- percent);
-}
-
-Bool
-XkbBellEvent(Display *dpy,Window window,int percent,Atom name)
-{
- if ((dpy->flags & XlibDisplayNoXkb) ||
- (!dpy->xkb_info && !XkbUseExtension(dpy,NULL,NULL))) {
- return False;
- }
- /* class 0 = KbdFeedbackClass (X Input Extension) */
- return XkbDeviceBellEvent(dpy,window,XkbUseCoreKbd,
- XkbDfltXIClass,XkbDfltXIId,
- percent,name);
-}
-
+/************************************************************
+Copyright (c) 1993 by Silicon Graphics Computer Systems, Inc.
+
+Permission to use, copy, modify, and distribute this
+software and its documentation for any purpose and without
+fee is hereby granted, provided that the above copyright
+notice appear in all copies and that both that copyright
+notice and this permission notice appear in supporting
+documentation, and that the name of Silicon Graphics not be
+used in advertising or publicity pertaining to distribution
+of the software without specific prior written permission.
+Silicon Graphics makes no representation about the suitability
+of this software for any purpose. It is provided "as is"
+without any express or implied warranty.
+
+SILICON GRAPHICS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS
+SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
+AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON
+GRAPHICS BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL
+DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
+DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
+OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH
+THE USE OR PERFORMANCE OF THIS SOFTWARE.
+
+********************************************************/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include <stdio.h>
+#include "Xlibint.h"
+#include <X11/extensions/XKBproto.h>
+#include "XKBlibint.h"
+
+
+Bool
+XkbDeviceBell( Display * dpy,
+ Window window,
+ int deviceID,
+ int bellClass,
+ int bellID,
+ int percent,
+ Atom name)
+{
+ register xkbBellReq *req;
+ XkbInfoPtr xkbi;
+
+ if ((dpy->flags & XlibDisplayNoXkb) ||
+ (!dpy->xkb_info && !XkbUseExtension(dpy,NULL,NULL)))
+ return False;
+ LockDisplay(dpy);
+ xkbi = dpy->xkb_info;
+ GetReq(kbBell,req);
+ req->reqType = xkbi->codes->major_opcode;
+ req->xkbReqType = X_kbBell;
+ req->deviceSpec = deviceID;
+ req->window = (CARD32)window;
+ req->bellClass = (CARD16)bellClass;
+ req->bellID = (CARD16)bellID;
+ req->percent = percent;
+ req->forceSound = False;
+ req->eventOnly = False;
+ req->pitch = 0;
+ req->duration = 0;
+ req->name = (CARD32)name;
+ req->pad1= 0; req->pad2= 0;
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return True;
+}
+
+Bool
+XkbForceDeviceBell( Display * dpy,
+ int deviceID,
+ int bellClass,
+ int bellID,
+ int percent)
+{
+ register xkbBellReq *req;
+ XkbInfoPtr xkbi;
+
+ if ((dpy->flags & XlibDisplayNoXkb) ||
+ (!dpy->xkb_info && !XkbUseExtension(dpy,NULL,NULL)))
+ return False;
+ LockDisplay(dpy);
+ xkbi = dpy->xkb_info;
+ GetReq(kbBell,req);
+ req->reqType = xkbi->codes->major_opcode;
+ req->xkbReqType = X_kbBell;
+ req->deviceSpec = deviceID;
+ req->window = (CARD32)None;
+ req->bellClass = (CARD16)bellClass;
+ req->bellID = (CARD16)bellID;
+ req->percent = percent;
+ req->forceSound = True;
+ req->eventOnly = False;
+ req->pitch = 0;
+ req->duration = 0;
+ req->name = None;
+ req->pad1= 0; req->pad2= 0;
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return True;
+}
+
+Bool
+XkbDeviceBellEvent( Display * dpy,
+ Window window,
+ int deviceID,
+ int bellClass,
+ int bellID,
+ int percent,
+ Atom name)
+{
+ register xkbBellReq *req;
+ XkbInfoPtr xkbi;
+
+ if ((dpy->flags & XlibDisplayNoXkb) ||
+ (!dpy->xkb_info && !XkbUseExtension(dpy,NULL,NULL)))
+ return False;
+ LockDisplay(dpy);
+ xkbi = dpy->xkb_info;
+ GetReq(kbBell,req);
+ req->reqType = xkbi->codes->major_opcode;
+ req->xkbReqType = X_kbBell;
+ req->deviceSpec = deviceID;
+ req->window = (CARD32)window;
+ req->bellClass = (CARD16)bellClass;
+ req->bellID = (CARD16)bellID;
+ req->percent = percent;
+ req->forceSound = False;
+ req->eventOnly = True;
+ req->pitch = 0;
+ req->duration = 0;
+ req->name = (CARD32)name;
+ req->pad1= 0; req->pad2= 0;
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return True;
+}
+
+Bool
+XkbBell(Display *dpy,Window window,int percent,Atom name)
+{
+ if ((dpy->flags & XlibDisplayNoXkb) ||
+ (!dpy->xkb_info && !XkbUseExtension(dpy,NULL,NULL))) {
+ XBell(dpy,percent);
+ return False;
+ }
+ return XkbDeviceBell(dpy,window,XkbUseCoreKbd,XkbDfltXIClass,XkbDfltXIId,
+ percent,name);
+}
+
+Bool
+XkbForceBell(Display *dpy,int percent)
+{
+ if ((dpy->flags & XlibDisplayNoXkb) ||
+ (!dpy->xkb_info && !XkbUseExtension(dpy,NULL,NULL))) {
+ XBell(dpy,percent);
+ return False;
+ }
+ return XkbForceDeviceBell(dpy,XkbUseCoreKbd,XkbDfltXIClass,XkbDfltXIId,
+ percent);
+}
+
+Bool
+XkbBellEvent(Display *dpy,Window window,int percent,Atom name)
+{
+ if ((dpy->flags & XlibDisplayNoXkb) ||
+ (!dpy->xkb_info && !XkbUseExtension(dpy,NULL,NULL))) {
+ return False;
+ }
+ /* class 0 = KbdFeedbackClass (X Input Extension) */
+ return XkbDeviceBellEvent(dpy,window,XkbUseCoreKbd,
+ XkbDfltXIClass,XkbDfltXIId,
+ percent,name);
+}
+
diff --git a/libX11/src/xkb/XKBBind.c b/libX11/src/xkb/XKBBind.c
index 4904b461f..c2305c57c 100644
--- a/libX11/src/xkb/XKBBind.c
+++ b/libX11/src/xkb/XKBBind.c
@@ -1,876 +1,876 @@
-/*
-
-Copyright 1985, 1987, 1994, 1998 The Open Group
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
-
-The above copyright notice and this permission notice shall be included
-in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
-IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR
-OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
-ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall
-not be used in advertising or otherwise to promote the sale, use or
-other dealings in this Software without prior written authorization
-from The Open Group.
-
-*/
-
- /* the new monsters ate the old ones */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#ifdef XKB_IN_SERVER
-#define XkbAllocClientMap SrvXkbAllocClientMap
-#define XkbAllocServerMap SrvXkbAllocServerMap
-#define XkbChangeTypesOfKey SrvXkbChangeTypesOfKey
-#define XkbCopyKeyTypes SrvXkbCopyKeyTypes
-#define XkbFreeClientMap SrvXkbFreeClientMap
-#define XkbFreeServerMap SrvXkbFreeServerMap
-#define XkbKeyTypesForCoreSymbols SrvXkbKeyTypesForCoreSymbols
-#define XkbApplyCompatMapToKey SrvXkbApplyCompatMapToKey
-#define XkbResizeKeyActions SrvXkbResizeKeyActions
-#define XkbResizeKeySyms SrvXkbResizeKeySyms
-#define XkbResizeKeyType SrvXkbResizeKeyType
-#define XkbAllocCompatMap SrvXkbAllocCompatMap
-#define XkbAllocControls SrvXkbAllocControls
-#define XkbAllocIndicatorMaps SrvXkbAllocIndicatorMaps
-#define XkbAllocKeyboard SrvXkbAllocKeyboard
-#define XkbAllocNames SrvXkbAllocNames
-#define XkbFreeCompatMap SrvXkbFreeCompatMap
-#define XkbFreeKeyboard SrvXkbFreeKeyboard
-#define XkbFreeNames SrvXkbFreeNames
-#define XkbLatchModifiers SrvXkbLatchModifiers
-#define XkbLatchGroup SrvXkbLatchGroup
-#define XkbVirtualModsToReal SrvXkbVirtualModsToReal
-#define XkbChangeKeycodeRange SrvXkbChangeKeycodeRange
-#define XkbApplyVirtualModChanges SrvXkbApplyVirtualModChanges
-#endif
-
-#include "XKBlib.h"
-#include <X11/Xlibint.h>
-#include <X11/Xutil.h>
-#include <X11/keysym.h>
-#include <stdio.h>
-#include <ctype.h>
-
-#include <X11/extensions/XKBproto.h>
-#include "XKBlibint.h"
-
-#ifdef USE_OWN_COMPOSE
-#define COMPOSE_NO_CONST_MEMBERS
-#include "imComp.h"
-#endif
-
-#define AllMods (ShiftMask|LockMask|ControlMask| \
- Mod1Mask|Mod2Mask|Mod3Mask|Mod4Mask|Mod5Mask)
-
-static int _XkbLoadDpy(
- Display *dpy
-);
-
-struct _XKeytrans {
- struct _XKeytrans *next;/* next on list */
- char *string; /* string to return when the time comes */
- int len; /* length of string (since NULL is legit)*/
- KeySym key; /* keysym rebound */
- unsigned int state; /* modifier state */
- KeySym *modifiers; /* modifier keysyms you want */
- int mlen; /* length of modifier list */
-};
-
-KeySym
-XkbKeycodeToKeysym(Display *dpy,
-#if NeedWidePrototypes
- unsigned int kc,
-#else
- KeyCode kc,
-#endif
- int group,
- int level)
-{
- XkbDescRec *xkb;
-
- if (_XkbUnavailable(dpy))
- return NoSymbol;
-
- _XkbCheckPendingRefresh(dpy,dpy->xkb_info);
-
- xkb = dpy->xkb_info->desc;
- if ((kc<xkb->min_key_code)||(kc>xkb->max_key_code))
- return NoSymbol;
-
- if ((group<0)||(level<0)||(group>=XkbKeyNumGroups(xkb,kc)))
- return NoSymbol;
- if (level>=XkbKeyGroupWidth(xkb,kc,group)) {
- /* for compatibility with the core protocol, _always_ allow */
- /* two symbols in the first two groups. If either of the */
- /* two is of type ONE_LEVEL, just replicate the first symbol */
- if ((group>XkbGroup2Index)||(XkbKeyGroupWidth(xkb,kc,group)!=1)||
- (level!=1)) {
- return NoSymbol;
- }
- level= 0;
- }
- return XkbKeySymEntry(xkb,kc,level,group);
-}
-
-KeySym
-XKeycodeToKeysym(Display *dpy,
-#if NeedWidePrototypes
- unsigned int kc,
-#else
- KeyCode kc,
-#endif
- int col)
-{
- XkbDescRec *xkb;
-
- if (_XkbUnavailable(dpy))
- return _XKeycodeToKeysym(dpy, kc, col);
-
- _XkbCheckPendingRefresh(dpy,dpy->xkb_info);
-
- xkb = dpy->xkb_info->desc;
- if ((kc<xkb->min_key_code)||(kc>xkb->max_key_code))
- return NoSymbol;
-
- if (col>3) {
- int lastSym,tmp,nGrp;
-
- lastSym= 3;
- nGrp= XkbKeyNumGroups(xkb,kc);
- if ((nGrp>0)&&((tmp=XkbKeyGroupWidth(xkb,kc,XkbGroup1Index))>2)) {
- if (col<=(lastSym+tmp-2))
- return XkbKeycodeToKeysym(dpy,kc,XkbGroup1Index,col-lastSym+2);
- lastSym+= tmp-2;
- }
- if ((nGrp>1)&&((tmp=XkbKeyGroupWidth(xkb,kc,XkbGroup2Index))>2)) {
- if (col<=(lastSym+tmp-2))
- return XkbKeycodeToKeysym(dpy,kc,XkbGroup2Index,col-lastSym+2);
- lastSym+= tmp-2;
- }
- if (nGrp>2) {
- tmp= XkbKeyGroupWidth(xkb,kc,XkbGroup3Index);
- if (col<=lastSym+tmp)
- return XkbKeycodeToKeysym(dpy,kc,XkbGroup3Index,col-lastSym);
- lastSym+= tmp;
- }
- if (nGrp>3) {
- tmp= XkbKeyGroupWidth(xkb,kc,XkbGroup4Index);
- if (col<=lastSym+tmp)
- return XkbKeycodeToKeysym(dpy,kc,XkbGroup4Index,col-lastSym);
- }
- return NoSymbol;
- }
- return XkbKeycodeToKeysym(dpy,kc,(col>>1),(col&1));
-}
-
-KeyCode
-XKeysymToKeycode(Display *dpy, KeySym ks)
-{
- register int i, j, gotOne;
-
- if (_XkbUnavailable(dpy))
- return _XKeysymToKeycode(dpy,ks);
- _XkbCheckPendingRefresh(dpy,dpy->xkb_info);
-
- j= 0;
- do {
- register XkbDescRec *xkb = dpy->xkb_info->desc;
- gotOne= 0;
- for (i = dpy->min_keycode; i <= dpy->max_keycode; i++) {
- if ( j<(int)XkbKeyNumSyms(xkb,i) ) {
- gotOne = 1;
- if ((XkbKeySym(xkb,i,j)==ks))
- return i;
- }
- }
- j++;
- } while (gotOne);
- return 0;
-}
-
-static int
-_XkbComputeModmap(Display *dpy)
-{
-register XkbDescPtr xkb;
-
- xkb= dpy->xkb_info->desc;
- if (XkbGetUpdatedMap(dpy,XkbModifierMapMask,xkb)==Success)
- return 1;
- return 0;
-}
-
-unsigned
-XkbKeysymToModifiers(Display *dpy,KeySym ks)
-{
- XkbDescRec *xkb;
- register int i,j;
- register KeySym *pSyms;
- CARD8 mods;
-
- if (_XkbUnavailable(dpy))
- return _XKeysymToModifiers(dpy,ks);
- _XkbCheckPendingRefresh(dpy,dpy->xkb_info);
-
- if (_XkbNeedModmap(dpy->xkb_info)&&(!_XkbComputeModmap(dpy)))
- return _XKeysymToModifiers(dpy,ks);
-
- xkb= dpy->xkb_info->desc;
- mods= 0;
- for (i = xkb->min_key_code; i <= (int)xkb->max_key_code; i++) {
- pSyms= XkbKeySymsPtr(xkb,i);
- for (j=XkbKeyNumSyms(xkb,i)-1;j>=0;j--) {
- if (pSyms[j]==ks) {
- mods|= xkb->map->modmap[i];
- break;
- }
- }
- }
- return mods;
-}
-
-KeySym
-XLookupKeysym(register XKeyEvent *event, int col)
-{
- Display *dpy = event->display;
- if (_XkbUnavailable(dpy))
- return _XLookupKeysym(event, col);
- _XkbCheckPendingRefresh(dpy,dpy->xkb_info);
- return XKeycodeToKeysym(dpy, event->keycode, col);
-}
-
- /*
- * Not a public entry point -- XkbTranslateKey is an obsolete name
- * that is preserved here so that functions linked against the old
- * version will continue to work in a shared library environment.
- */
-int
-XkbTranslateKey( register Display * dpy,
- KeyCode key,
- register unsigned int mods,
- unsigned int * mods_rtrn,
- KeySym * keysym_rtrn);
-int
-XkbTranslateKey( register Display * dpy,
- KeyCode key,
- register unsigned int mods,
- unsigned int * mods_rtrn,
- KeySym * keysym_rtrn)
-{
- return XkbLookupKeySym(dpy,key,mods,mods_rtrn,keysym_rtrn);
-}
-
-Bool
-XkbLookupKeySym( register Display * dpy,
- KeyCode key,
- register unsigned int mods,
- unsigned int * mods_rtrn,
- KeySym * keysym_rtrn)
-{
- if (_XkbUnavailable(dpy))
- return _XTranslateKey(dpy, key, mods, mods_rtrn, keysym_rtrn);
- _XkbCheckPendingRefresh(dpy,dpy->xkb_info);
- return XkbTranslateKeyCode(dpy->xkb_info->desc,key,mods,mods_rtrn,
- keysym_rtrn);
-}
-
-Bool
-XkbTranslateKeyCode( register XkbDescPtr xkb,
- KeyCode key,
- register unsigned int mods,
- unsigned int * mods_rtrn,
- KeySym * keysym_rtrn)
-{
- XkbKeyTypeRec *type;
- int col,nKeyGroups;
- unsigned preserve,effectiveGroup;
- KeySym *syms;
-
- if (mods_rtrn!=NULL)
- *mods_rtrn = 0;
-
- nKeyGroups= XkbKeyNumGroups(xkb,key);
- if ((!XkbKeycodeInRange(xkb,key))||(nKeyGroups==0)) {
- if (keysym_rtrn!=NULL)
- *keysym_rtrn = NoSymbol;
- return False;
- }
-
- syms = XkbKeySymsPtr(xkb,key);
-
- /* find the offset of the effective group */
- col = 0;
- effectiveGroup= XkbGroupForCoreState(mods);
- if ( effectiveGroup>=nKeyGroups ) {
- unsigned groupInfo= XkbKeyGroupInfo(xkb,key);
- switch (XkbOutOfRangeGroupAction(groupInfo)) {
- default:
- effectiveGroup %= nKeyGroups;
- break;
- case XkbClampIntoRange:
- effectiveGroup = nKeyGroups-1;
- break;
- case XkbRedirectIntoRange:
- effectiveGroup = XkbOutOfRangeGroupNumber(groupInfo);
- if (effectiveGroup>=nKeyGroups)
- effectiveGroup= 0;
- break;
- }
- }
- col= effectiveGroup*XkbKeyGroupsWidth(xkb,key);
- type = XkbKeyKeyType(xkb,key,effectiveGroup);
-
- preserve= 0;
- if (type->map) { /* find the column (shift level) within the group */
- register int i;
- register XkbKTMapEntryPtr entry;
- for (i=0,entry=type->map;i<type->map_count;i++,entry++) {
- if ((entry->active)&&((mods&type->mods.mask)==entry->mods.mask)) {
- col+= entry->level;
- if (type->preserve)
- preserve= type->preserve[i].mask;
- break;
- }
- }
- }
-
- if (keysym_rtrn!=NULL)
- *keysym_rtrn= syms[col];
- if (mods_rtrn) {
- *mods_rtrn= type->mods.mask&(~preserve);
- /* The Motif VTS doesn't get the help callback called if help
- * is bound to Shift+<whatever>, and it appears as though it
- * is XkbTranslateKeyCode that is causing the problem. The
- * core X version of XTranslateKey always OR's in ShiftMask
- * and LockMask for mods_rtrn, so this "fix" keeps this behavior
- * and solves the VTS problem.
- */
- if ((xkb->dpy)&&(xkb->dpy->xkb_info)&&
- (xkb->dpy->xkb_info->xlib_ctrls&XkbLC_AlwaysConsumeShiftAndLock)) {
- *mods_rtrn|= (ShiftMask|LockMask);
- }
- }
- return (syms[col]!=NoSymbol);
-}
-
-Status
-XkbRefreshKeyboardMapping(register XkbMapNotifyEvent *event)
-{
- Display *dpy = event->display;
- XkbInfoPtr xkbi;
-
- if (_XkbUnavailable(dpy)) {
- _XRefreshKeyboardMapping((XMappingEvent *)event);
- return Success;
- }
- xkbi= dpy->xkb_info;
-
- if (((event->type&0x7f)-xkbi->codes->first_event)!=XkbEventCode)
- return BadMatch;
- if (event->xkb_type==XkbNewKeyboardNotify) {
- _XkbReloadDpy(dpy);
- return Success;
- }
- if (event->xkb_type==XkbMapNotify) {
- XkbMapChangesRec changes;
- Status rtrn;
-
- if (xkbi->flags&XkbMapPending)
- changes= xkbi->changes;
- else bzero(&changes,sizeof(changes));
- XkbNoteMapChanges(&changes,event,XKB_XLIB_MAP_MASK);
- if ((rtrn=XkbGetMapChanges(dpy,xkbi->desc,&changes))!=Success) {
-#ifdef DEBUG
- fprintf(stderr,"Internal Error! XkbGetMapChanges failed:\n");
-#endif
- xkbi->changes= changes;
- }
- else if (xkbi->flags&XkbMapPending) {
- xkbi->flags&= ~XkbMapPending;
- bzero(&xkbi->changes,sizeof(XkbMapChangesRec));
- }
- return rtrn;
- }
- return BadMatch;
-}
-
-int
-XRefreshKeyboardMapping(register XMappingEvent *event)
-{
- XkbEvent *xkbevent = (XkbEvent *)event;
- Display *dpy = event->display;
- XkbMapChangesRec changes;
- XkbInfoPtr xkbi;
-
- /* always do this for input methods, which still use the old keymap */
- (void) _XRefreshKeyboardMapping(event);
-
- if (_XkbUnavailable(dpy))
- return 1;
-
- xkbi = dpy->xkb_info;
-
- if (((event->type&0x7f)-xkbi->codes->first_event)==XkbEventCode)
- return XkbRefreshKeyboardMapping(&xkbevent->map);
-
- if (xkbi->flags&XkbXlibNewKeyboard) {
- _XkbReloadDpy(dpy);
- return 1;
- }
-
- if ((xkbi->flags&XkbMapPending)||(event->request==MappingKeyboard)) {
- if (xkbi->flags&XkbMapPending) {
- changes= xkbi->changes;
- _XkbNoteCoreMapChanges(&changes,event,XKB_XLIB_MAP_MASK);
- }
- else {
- bzero(&changes,sizeof(changes));
- changes.changed= XkbKeySymsMask;
- if (xkbi->desc->min_key_code<xkbi->desc->max_key_code) {
- changes.first_key_sym= xkbi->desc->min_key_code;
- changes.num_key_syms= xkbi->desc->max_key_code-
- xkbi->desc->min_key_code+1;
- }
- else {
- changes.first_key_sym= event->first_keycode;
- changes.num_key_syms= event->count;
- }
- }
-
- if (XkbGetMapChanges(dpy,xkbi->desc, &changes)!=Success) {
-#ifdef DEBUG
- fprintf(stderr,"Internal Error! XkbGetMapChanges failed:\n");
- if (changes.changed&XkbKeyTypesMask) {
- int first= changes.first_type;
- int last= changes.first_type+changes.num_types-1;
- fprintf(stderr," types: %d..%d\n",first,last);
- }
- if (changes.changed&XkbKeySymsMask) {
- int first= changes.first_key_sym;
- int last= changes.first_key_sym+changes.num_key_syms-1;
- fprintf(stderr," symbols: %d..%d\n",first,last);
- }
- if (changes.changed&XkbKeyActionsMask) {
- int last,first= changes.first_key_act;
- last= changes.first_key_act+changes.num_key_acts-1;
- fprintf(stderr," acts: %d..%d\n",first,last);
- }
- if (changes.changed&XkbKeyBehaviorsMask) {
- int last,first= changes.first_key_behavior;
- last= first+changes.num_key_behaviors-1;
- fprintf(stderr," behaviors: %d..%d\n",first,last);
- }
- if (changes.changed&XkbVirtualModsMask) {
- fprintf(stderr,"virtual mods: 0x%04x\n",
- changes.vmods);
- }
- if (changes.changed&XkbExplicitComponentsMask) {
- int last,first= changes.first_key_explicit;
- last= first+changes.num_key_explicit-1;
- fprintf(stderr," explicit: %d..%d\n",first,last);
- }
-#endif
- }
- LockDisplay(dpy);
- if (xkbi->flags&XkbMapPending) {
- xkbi->flags&= ~XkbMapPending;
- bzero(&xkbi->changes,sizeof(XkbMapChangesRec));
- }
- UnlockDisplay(dpy);
- }
- if (event->request==MappingModifier) {
- LockDisplay(dpy);
- if (xkbi->desc->map->modmap) {
- _XkbFree(xkbi->desc->map->modmap);
- xkbi->desc->map->modmap= NULL;
- }
- if (dpy->key_bindings) {
- register struct _XKeytrans *p;
- for (p = dpy->key_bindings; p; p = p->next) {
- register int i;
- p->state= 0;
- if (p->mlen>0) {
- for (i = 0; i < p->mlen; i++) {
- p->state|= XkbKeysymToModifiers(dpy,p->modifiers[i]);
- }
- if (p->state) p->state &= AllMods;
- else p->state = AnyModifier;
- }
- }
- }
- UnlockDisplay(dpy);
- }
- return 1;
-}
-
-static int
-_XkbLoadDpy(Display *dpy)
-{
- XkbInfoPtr xkbi;
- unsigned query,oldEvents;
- XkbDescRec *desc;
-
- if (!XkbUseExtension(dpy,NULL,NULL))
- return 0;
-
- xkbi = dpy->xkb_info;
- query = XkbAllClientInfoMask;
- desc = XkbGetMap(dpy,query,XkbUseCoreKbd);
- if (!desc) {
-#ifdef DEBUG
- fprintf(stderr,"Warning! XkbGetMap failed!\n");
-#endif
- return 0;
- }
- LockDisplay(dpy);
- xkbi->desc = desc;
-
- UnlockDisplay(dpy);
- oldEvents= xkbi->selected_events;
- if (!(xkbi->xlib_ctrls&XkbLC_IgnoreNewKeyboards)) {
- XkbSelectEventDetails(dpy,xkbi->desc->device_spec,XkbNewKeyboardNotify,
- XkbNKN_KeycodesMask|XkbNKN_DeviceIDMask,
- XkbNKN_KeycodesMask|XkbNKN_DeviceIDMask);
- }
- XkbSelectEventDetails(dpy,xkbi->desc->device_spec,XkbMapNotify,
- XkbAllClientInfoMask,XkbAllClientInfoMask);
- LockDisplay(dpy);
- xkbi->selected_events= oldEvents;
- UnlockDisplay(dpy);
- return 1;
-}
-
-void
-_XkbReloadDpy(Display *dpy)
-{
- XkbInfoPtr xkbi;
- XkbDescRec *desc;
- unsigned oldDeviceID;
-
- if (_XkbUnavailable(dpy))
- return;
-
- xkbi = dpy->xkb_info;
- LockDisplay(dpy);
- if (xkbi->desc) {
- oldDeviceID= xkbi->desc->device_spec;
- XkbFreeKeyboard(xkbi->desc,XkbAllComponentsMask,True);
- xkbi->desc= NULL;
- xkbi->flags&= ~(XkbMapPending|XkbXlibNewKeyboard);
- xkbi->changes.changed= 0;
- }
- else oldDeviceID= XkbUseCoreKbd;
- UnlockDisplay(dpy);
- desc = XkbGetMap(dpy,XkbAllClientInfoMask,XkbUseCoreKbd);
- if (!desc)
- return;
- LockDisplay(dpy);
- xkbi->desc = desc;
- UnlockDisplay(dpy);
-
- if (desc->device_spec!=oldDeviceID) {
- /* transfer(?) event masks here */
-#ifdef NOTYET
- unsigned oldEvents;
- oldEvents= xkbi->selected_events;
- XkbSelectEventDetails(dpy,xkbi->desc->device_spec,XkbMapNotify,
- XkbAllMapComponentsMask,XkbAllClientInfoMask);
- LockDisplay(dpy);
- xkbi->selected_events= oldEvents;
- UnlockDisplay(dpy);
-#endif
- }
- return;
-}
-
-int
-XkbTranslateKeySym( register Display * dpy,
- register KeySym * sym_rtrn,
- unsigned int mods,
- char * buffer,
- int nbytes,
- int * extra_rtrn)
-{
- register XkbInfoPtr xkb;
- XkbKSToMBFunc cvtr;
- XPointer priv;
- char tmp[4];
- int n;
-
- xkb= dpy->xkb_info;
- if (!xkb->cvt.KSToMB) {
- _XkbGetConverters(_XkbGetCharset(),&xkb->cvt);
- _XkbGetConverters("ISO8859-1",&xkb->latin1cvt);
- }
-
- if (extra_rtrn)
- *extra_rtrn= 0;
-
- if ((buffer==NULL)||(nbytes==0)) {
- buffer= tmp;
- nbytes= 4;
- }
-
- /* see if symbol rebound, if so, return that string. */
- n = XkbLookupKeyBinding(dpy,*sym_rtrn,mods,buffer,nbytes,extra_rtrn);
- if (n)
- return n;
-
- if ( nbytes>0 )
- buffer[0]= '\0';
-
- if ( xkb->cvt.KSToUpper && (mods&LockMask) ) {
- *sym_rtrn = (*xkb->cvt.KSToUpper)(*sym_rtrn);
- }
- if (xkb->xlib_ctrls & XkbLC_ForceLatin1Lookup) {
- cvtr = xkb->latin1cvt.KSToMB;
- priv = xkb->latin1cvt.KSToMBPriv;
- } else {
- cvtr = xkb->cvt.KSToMB;
- priv = xkb->cvt.KSToMBPriv;
- }
-
- n = (*cvtr)(priv,*sym_rtrn,buffer,nbytes,extra_rtrn);
-
- if ((!xkb->cvt.KSToUpper)&&( mods&LockMask )) {
- register int i;
- int change;
- char ch;
- for (i=change=0;i<n;i++) {
- ch= toupper(buffer[i]);
- change= (change||(buffer[i]!=ch));
- buffer[i] = ch;
- }
- if (change) {
- if (n==1)
- *sym_rtrn=(*xkb->cvt.MBToKS)(xkb->cvt.MBToKSPriv,buffer,n,NULL);
- else *sym_rtrn= NoSymbol;
- }
- }
-
- if ( mods&ControlMask ) {
- if ( n==1 ) {
- buffer[0]= XkbToControl(buffer[0]);
- if ( nbytes>1 )
- buffer[1]= '\0';
- return 1;
- }
- if ( nbytes > 0 )
- buffer[0]= '\0';
- return 0;
- }
- return n;
-}
-
-int
-XLookupString ( register XKeyEvent * event,
- char * buffer,
- int nbytes,
- KeySym * keysym,
- XComposeStatus * status)
-{
- KeySym dummy;
- int rtrnLen;
- unsigned int new_mods;
- Display *dpy = event->display;
-
- if (keysym==NULL)
- keysym= &dummy;
- if (!XkbLookupKeySym(dpy,event->keycode,event->state, &new_mods,keysym))
- return 0;
- new_mods= (event->state&(~new_mods));
-
- /* find the group where a symbol can be converted to control one */
- if (new_mods&ControlMask && *keysym > 0x7F &&
- (dpy->xkb_info->xlib_ctrls & XkbLC_ControlFallback)) {
- XKeyEvent tmp_ev = *event;
- KeySym tmp_keysym;
- unsigned int tmp_new_mods;
- if (_XkbUnavailable(dpy)) {
- tmp_ev.state= event->state ^ dpy->mode_switch;
- if (XkbLookupKeySym(dpy, tmp_ev.keycode, tmp_ev.state,
- &tmp_new_mods, &tmp_keysym) &&
- tmp_keysym != NoSymbol && tmp_keysym < 0x80 ) {
- *keysym = tmp_keysym;
- }
- } else {
- int n = XkbKeyNumGroups(dpy->xkb_info->desc, tmp_ev.keycode);
- int i;
- for (i = 0; i < n; i++) {
- if (XkbGroupForCoreState(event->state) == i)
- continue;
- tmp_ev.state= XkbBuildCoreState(tmp_ev.state, i);
- if (XkbLookupKeySym(dpy, tmp_ev.keycode, tmp_ev.state,
- &tmp_new_mods, &tmp_keysym) &&
- tmp_keysym != NoSymbol && tmp_keysym < 0x80 ) {
- *keysym = tmp_keysym;
- new_mods= (event->state&(~tmp_new_mods));
- break;
- }
- }
- }
- }
-
-#ifdef USE_OWN_COMPOSE
- if ( status ) {
- static int been_here= 0;
- if ( !been_here ) {
- XimCompInitTables();
- been_here = 1;
- }
- if ( !XimCompLegalStatus(status) ) {
- status->compose_ptr = NULL;
- status->chars_matched = 0;
- }
- if ( ((status->chars_matched>0)&&(status->compose_ptr!=NULL)) ||
- XimCompIsComposeKey(*keysym,event->keycode,status) ) {
- XimCompRtrn rtrn;
-
- switch (XimCompProcessSym(status,*keysym,&rtrn)) {
- case XIM_COMP_IGNORE:
- break;
- case XIM_COMP_IN_PROGRESS:
- if ( keysym!=NULL )
- *keysym = NoSymbol;
-#ifndef NO_COMPOSE_LED
- if ( dpy->xkb_info->xlib_ctrls&XkbLC_ComposeLED ) {
- XkbSetNamedIndicator(dpy,dpy->xkb_info->composeLED,
- True,True,False,NULL);
- }
-#endif
- return 0;
- case XIM_COMP_FAIL:
- {
- static Atom _ComposeFail= None;
- int n = 0, len= 0;
-#ifndef NO_COMPOSE_LED
- if ( dpy->xkb_info->xlib_ctrls&XkbLC_ComposeLED ) {
- XkbSetNamedIndicator(dpy,dpy->xkb_info->composeLED,
- True,False,False,NULL);
- }
-#endif
-#ifndef NO_BELL_ON_COMPOSE_FAIL
- if (dpy->xkb_info->xlib_ctrls&XkbLC_BeepOnComposeFail) {
- if (_ComposeFail==None)
- _ComposeFail= XInternAtom(dpy,"ComposeFail",0);
- XkbBell(dpy,event->window,0,_ComposeFail);
- }
-#endif
- for (n=len=0;rtrn.sym[n]!=XK_VoidSymbol;n++) {
- if ( nbytes-len > 0 ) {
- len+= XkbTranslateKeySym(dpy,&rtrn.sym[n],new_mods,
- buffer+len,nbytes-len,
- NULL);
- }
- }
- if ( keysym!=NULL ) {
- if ( n==1 ) *keysym = rtrn.sym[0];
- else *keysym = NoSymbol;
- }
- return len;
- }
- case XIM_COMP_SUCCEED:
- {
- int len,n = 0;
-
-#ifndef NO_COMPOSE_LED
- if ( dpy->xkb_info->xlib_ctrls&XkbLC_ComposeLED ) {
- XkbSetNamedIndicator(dpy,dpy->xkb_info->composeLED,
- True,False,False,NULL);
- }
-#endif
- *keysym = rtrn.matchSym;
- if ( rtrn.str[0]!='\0' ) {
- strncpy(buffer,rtrn.str,nbytes-1);
- buffer[nbytes-1]= '\0';
- len = (int)strlen(buffer);
- }
- else {
- len = XkbTranslateKeySym(dpy,keysym,new_mods,
- buffer,nbytes,
- NULL);
- }
- for (n=0;rtrn.sym[n]!=XK_VoidSymbol;n++) {
- if ( nbytes-len > 0 ) {
- len+= XkbTranslateKeySym(dpy,&rtrn.sym[n],
- event->state,
- buffer+len,nbytes-len,
- NULL);
- }
- }
- return len;
- }
- }
- }
- }
-#endif
-
- /* We *should* use the new_mods (which does not contain any modifiers */
- /* that were used to compute the symbol here, but pre-XKB XLookupString */
- /* did not and we have to remain compatible. Sigh. */
- if (_XkbUnavailable(dpy) ||
- (dpy->xkb_info->xlib_ctrls&XkbLC_ConsumeLookupMods)==0)
- new_mods= event->state;
-
- rtrnLen= XkbLookupKeyBinding(dpy,*keysym,new_mods,buffer,nbytes,NULL);
- if (rtrnLen>0)
- return rtrnLen;
-
- return XkbTranslateKeySym(dpy,keysym,new_mods,buffer,nbytes,NULL);
-}
-
-
-int
-XkbLookupKeyBinding( Display * dpy,
- register KeySym sym,
- unsigned int mods,
- char * buffer,
- int nbytes,
- int * extra_rtrn)
-{
- register struct _XKeytrans *p;
-
- if (extra_rtrn)
- *extra_rtrn= 0;
- for (p = dpy->key_bindings; p; p = p->next) {
- if (((mods & AllMods) == p->state) && (sym == p->key)) {
- int tmp = p->len;
- if (tmp > nbytes) {
- if (extra_rtrn)
- *extra_rtrn= (tmp-nbytes);
- tmp = nbytes;
- }
- memcpy (buffer, p->string, tmp);
- if (tmp < nbytes) buffer[tmp]= '\0';
- return tmp;
- }
- }
- return 0;
-}
-
-char
-XkbToControl( char ch )
-{
- register char c = ch;
-
- if ((c >= '@' && c < '\177') || c == ' ') c &= 0x1F;
- else if (c == '2') c = '\000';
- else if (c >= '3' && c <= '7') c -= ('3' - '\033');
- else if (c == '8') c = '\177';
- else if (c == '/') c = '_' & 0x1F;
- return c;
-}
+/*
+
+Copyright 1985, 1987, 1994, 1998 The Open Group
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
+
+The above copyright notice and this permission notice shall be included
+in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR
+OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
+ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group shall
+not be used in advertising or otherwise to promote the sale, use or
+other dealings in this Software without prior written authorization
+from The Open Group.
+
+*/
+
+ /* the new monsters ate the old ones */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#ifdef XKB_IN_SERVER
+#define XkbAllocClientMap SrvXkbAllocClientMap
+#define XkbAllocServerMap SrvXkbAllocServerMap
+#define XkbChangeTypesOfKey SrvXkbChangeTypesOfKey
+#define XkbCopyKeyTypes SrvXkbCopyKeyTypes
+#define XkbFreeClientMap SrvXkbFreeClientMap
+#define XkbFreeServerMap SrvXkbFreeServerMap
+#define XkbKeyTypesForCoreSymbols SrvXkbKeyTypesForCoreSymbols
+#define XkbApplyCompatMapToKey SrvXkbApplyCompatMapToKey
+#define XkbResizeKeyActions SrvXkbResizeKeyActions
+#define XkbResizeKeySyms SrvXkbResizeKeySyms
+#define XkbResizeKeyType SrvXkbResizeKeyType
+#define XkbAllocCompatMap SrvXkbAllocCompatMap
+#define XkbAllocControls SrvXkbAllocControls
+#define XkbAllocIndicatorMaps SrvXkbAllocIndicatorMaps
+#define XkbAllocKeyboard SrvXkbAllocKeyboard
+#define XkbAllocNames SrvXkbAllocNames
+#define XkbFreeCompatMap SrvXkbFreeCompatMap
+#define XkbFreeKeyboard SrvXkbFreeKeyboard
+#define XkbFreeNames SrvXkbFreeNames
+#define XkbLatchModifiers SrvXkbLatchModifiers
+#define XkbLatchGroup SrvXkbLatchGroup
+#define XkbVirtualModsToReal SrvXkbVirtualModsToReal
+#define XkbChangeKeycodeRange SrvXkbChangeKeycodeRange
+#define XkbApplyVirtualModChanges SrvXkbApplyVirtualModChanges
+#endif
+
+#include "XKBlib.h"
+#include <X11/Xlibint.h>
+#include <X11/Xutil.h>
+#include <X11/keysym.h>
+#include <stdio.h>
+#include <ctype.h>
+
+#include <X11/extensions/XKBproto.h>
+#include "XKBlibint.h"
+
+#ifdef USE_OWN_COMPOSE
+#define COMPOSE_NO_CONST_MEMBERS
+#include "imComp.h"
+#endif
+
+#define AllMods (ShiftMask|LockMask|ControlMask| \
+ Mod1Mask|Mod2Mask|Mod3Mask|Mod4Mask|Mod5Mask)
+
+static int _XkbLoadDpy(
+ Display *dpy
+);
+
+struct _XKeytrans {
+ struct _XKeytrans *next;/* next on list */
+ char *string; /* string to return when the time comes */
+ int len; /* length of string (since NULL is legit)*/
+ KeySym key; /* keysym rebound */
+ unsigned int state; /* modifier state */
+ KeySym *modifiers; /* modifier keysyms you want */
+ int mlen; /* length of modifier list */
+};
+
+KeySym
+XkbKeycodeToKeysym(Display *dpy,
+#if NeedWidePrototypes
+ unsigned int kc,
+#else
+ KeyCode kc,
+#endif
+ int group,
+ int level)
+{
+ XkbDescRec *xkb;
+
+ if (_XkbUnavailable(dpy))
+ return NoSymbol;
+
+ _XkbCheckPendingRefresh(dpy,dpy->xkb_info);
+
+ xkb = dpy->xkb_info->desc;
+ if ((kc<xkb->min_key_code)||(kc>xkb->max_key_code))
+ return NoSymbol;
+
+ if ((group<0)||(level<0)||(group>=XkbKeyNumGroups(xkb,kc)))
+ return NoSymbol;
+ if (level>=XkbKeyGroupWidth(xkb,kc,group)) {
+ /* for compatibility with the core protocol, _always_ allow */
+ /* two symbols in the first two groups. If either of the */
+ /* two is of type ONE_LEVEL, just replicate the first symbol */
+ if ((group>XkbGroup2Index)||(XkbKeyGroupWidth(xkb,kc,group)!=1)||
+ (level!=1)) {
+ return NoSymbol;
+ }
+ level= 0;
+ }
+ return XkbKeySymEntry(xkb,kc,level,group);
+}
+
+KeySym
+XKeycodeToKeysym(Display *dpy,
+#if NeedWidePrototypes
+ unsigned int kc,
+#else
+ KeyCode kc,
+#endif
+ int col)
+{
+ XkbDescRec *xkb;
+
+ if (_XkbUnavailable(dpy))
+ return _XKeycodeToKeysym(dpy, kc, col);
+
+ _XkbCheckPendingRefresh(dpy,dpy->xkb_info);
+
+ xkb = dpy->xkb_info->desc;
+ if ((kc<xkb->min_key_code)||(kc>xkb->max_key_code))
+ return NoSymbol;
+
+ if (col>3) {
+ int lastSym,tmp,nGrp;
+
+ lastSym= 3;
+ nGrp= XkbKeyNumGroups(xkb,kc);
+ if ((nGrp>0)&&((tmp=XkbKeyGroupWidth(xkb,kc,XkbGroup1Index))>2)) {
+ if (col<=(lastSym+tmp-2))
+ return XkbKeycodeToKeysym(dpy,kc,XkbGroup1Index,col-lastSym+2);
+ lastSym+= tmp-2;
+ }
+ if ((nGrp>1)&&((tmp=XkbKeyGroupWidth(xkb,kc,XkbGroup2Index))>2)) {
+ if (col<=(lastSym+tmp-2))
+ return XkbKeycodeToKeysym(dpy,kc,XkbGroup2Index,col-lastSym+2);
+ lastSym+= tmp-2;
+ }
+ if (nGrp>2) {
+ tmp= XkbKeyGroupWidth(xkb,kc,XkbGroup3Index);
+ if (col<=lastSym+tmp)
+ return XkbKeycodeToKeysym(dpy,kc,XkbGroup3Index,col-lastSym);
+ lastSym+= tmp;
+ }
+ if (nGrp>3) {
+ tmp= XkbKeyGroupWidth(xkb,kc,XkbGroup4Index);
+ if (col<=lastSym+tmp)
+ return XkbKeycodeToKeysym(dpy,kc,XkbGroup4Index,col-lastSym);
+ }
+ return NoSymbol;
+ }
+ return XkbKeycodeToKeysym(dpy,kc,(col>>1),(col&1));
+}
+
+KeyCode
+XKeysymToKeycode(Display *dpy, KeySym ks)
+{
+ register int i, j, gotOne;
+
+ if (_XkbUnavailable(dpy))
+ return _XKeysymToKeycode(dpy,ks);
+ _XkbCheckPendingRefresh(dpy,dpy->xkb_info);
+
+ j= 0;
+ do {
+ register XkbDescRec *xkb = dpy->xkb_info->desc;
+ gotOne= 0;
+ for (i = dpy->min_keycode; i <= dpy->max_keycode; i++) {
+ if ( j<(int)XkbKeyNumSyms(xkb,i) ) {
+ gotOne = 1;
+ if ((XkbKeySym(xkb,i,j)==ks))
+ return i;
+ }
+ }
+ j++;
+ } while (gotOne);
+ return 0;
+}
+
+static int
+_XkbComputeModmap(Display *dpy)
+{
+register XkbDescPtr xkb;
+
+ xkb= dpy->xkb_info->desc;
+ if (XkbGetUpdatedMap(dpy,XkbModifierMapMask,xkb)==Success)
+ return 1;
+ return 0;
+}
+
+unsigned
+XkbKeysymToModifiers(Display *dpy,KeySym ks)
+{
+ XkbDescRec *xkb;
+ register int i,j;
+ register KeySym *pSyms;
+ CARD8 mods;
+
+ if (_XkbUnavailable(dpy))
+ return _XKeysymToModifiers(dpy,ks);
+ _XkbCheckPendingRefresh(dpy,dpy->xkb_info);
+
+ if (_XkbNeedModmap(dpy->xkb_info)&&(!_XkbComputeModmap(dpy)))
+ return _XKeysymToModifiers(dpy,ks);
+
+ xkb= dpy->xkb_info->desc;
+ mods= 0;
+ for (i = xkb->min_key_code; i <= (int)xkb->max_key_code; i++) {
+ pSyms= XkbKeySymsPtr(xkb,i);
+ for (j=XkbKeyNumSyms(xkb,i)-1;j>=0;j--) {
+ if (pSyms[j]==ks) {
+ mods|= xkb->map->modmap[i];
+ break;
+ }
+ }
+ }
+ return mods;
+}
+
+KeySym
+XLookupKeysym(register XKeyEvent *event, int col)
+{
+ Display *dpy = event->display;
+ if (_XkbUnavailable(dpy))
+ return _XLookupKeysym(event, col);
+ _XkbCheckPendingRefresh(dpy,dpy->xkb_info);
+ return XKeycodeToKeysym(dpy, event->keycode, col);
+}
+
+ /*
+ * Not a public entry point -- XkbTranslateKey is an obsolete name
+ * that is preserved here so that functions linked against the old
+ * version will continue to work in a shared library environment.
+ */
+int
+XkbTranslateKey( register Display * dpy,
+ KeyCode key,
+ register unsigned int mods,
+ unsigned int * mods_rtrn,
+ KeySym * keysym_rtrn);
+int
+XkbTranslateKey( register Display * dpy,
+ KeyCode key,
+ register unsigned int mods,
+ unsigned int * mods_rtrn,
+ KeySym * keysym_rtrn)
+{
+ return XkbLookupKeySym(dpy,key,mods,mods_rtrn,keysym_rtrn);
+}
+
+Bool
+XkbLookupKeySym( register Display * dpy,
+ KeyCode key,
+ register unsigned int mods,
+ unsigned int * mods_rtrn,
+ KeySym * keysym_rtrn)
+{
+ if (_XkbUnavailable(dpy))
+ return _XTranslateKey(dpy, key, mods, mods_rtrn, keysym_rtrn);
+ _XkbCheckPendingRefresh(dpy,dpy->xkb_info);
+ return XkbTranslateKeyCode(dpy->xkb_info->desc,key,mods,mods_rtrn,
+ keysym_rtrn);
+}
+
+Bool
+XkbTranslateKeyCode( register XkbDescPtr xkb,
+ KeyCode key,
+ register unsigned int mods,
+ unsigned int * mods_rtrn,
+ KeySym * keysym_rtrn)
+{
+ XkbKeyTypeRec *type;
+ int col,nKeyGroups;
+ unsigned preserve,effectiveGroup;
+ KeySym *syms;
+
+ if (mods_rtrn!=NULL)
+ *mods_rtrn = 0;
+
+ nKeyGroups= XkbKeyNumGroups(xkb,key);
+ if ((!XkbKeycodeInRange(xkb,key))||(nKeyGroups==0)) {
+ if (keysym_rtrn!=NULL)
+ *keysym_rtrn = NoSymbol;
+ return False;
+ }
+
+ syms = XkbKeySymsPtr(xkb,key);
+
+ /* find the offset of the effective group */
+ col = 0;
+ effectiveGroup= XkbGroupForCoreState(mods);
+ if ( effectiveGroup>=nKeyGroups ) {
+ unsigned groupInfo= XkbKeyGroupInfo(xkb,key);
+ switch (XkbOutOfRangeGroupAction(groupInfo)) {
+ default:
+ effectiveGroup %= nKeyGroups;
+ break;
+ case XkbClampIntoRange:
+ effectiveGroup = nKeyGroups-1;
+ break;
+ case XkbRedirectIntoRange:
+ effectiveGroup = XkbOutOfRangeGroupNumber(groupInfo);
+ if (effectiveGroup>=nKeyGroups)
+ effectiveGroup= 0;
+ break;
+ }
+ }
+ col= effectiveGroup*XkbKeyGroupsWidth(xkb,key);
+ type = XkbKeyKeyType(xkb,key,effectiveGroup);
+
+ preserve= 0;
+ if (type->map) { /* find the column (shift level) within the group */
+ register int i;
+ register XkbKTMapEntryPtr entry;
+ for (i=0,entry=type->map;i<type->map_count;i++,entry++) {
+ if ((entry->active)&&((mods&type->mods.mask)==entry->mods.mask)) {
+ col+= entry->level;
+ if (type->preserve)
+ preserve= type->preserve[i].mask;
+ break;
+ }
+ }
+ }
+
+ if (keysym_rtrn!=NULL)
+ *keysym_rtrn= syms[col];
+ if (mods_rtrn) {
+ *mods_rtrn= type->mods.mask&(~preserve);
+ /* The Motif VTS doesn't get the help callback called if help
+ * is bound to Shift+<whatever>, and it appears as though it
+ * is XkbTranslateKeyCode that is causing the problem. The
+ * core X version of XTranslateKey always OR's in ShiftMask
+ * and LockMask for mods_rtrn, so this "fix" keeps this behavior
+ * and solves the VTS problem.
+ */
+ if ((xkb->dpy)&&(xkb->dpy->xkb_info)&&
+ (xkb->dpy->xkb_info->xlib_ctrls&XkbLC_AlwaysConsumeShiftAndLock)) {
+ *mods_rtrn|= (ShiftMask|LockMask);
+ }
+ }
+ return (syms[col]!=NoSymbol);
+}
+
+Status
+XkbRefreshKeyboardMapping(register XkbMapNotifyEvent *event)
+{
+ Display *dpy = event->display;
+ XkbInfoPtr xkbi;
+
+ if (_XkbUnavailable(dpy)) {
+ _XRefreshKeyboardMapping((XMappingEvent *)event);
+ return Success;
+ }
+ xkbi= dpy->xkb_info;
+
+ if (((event->type&0x7f)-xkbi->codes->first_event)!=XkbEventCode)
+ return BadMatch;
+ if (event->xkb_type==XkbNewKeyboardNotify) {
+ _XkbReloadDpy(dpy);
+ return Success;
+ }
+ if (event->xkb_type==XkbMapNotify) {
+ XkbMapChangesRec changes;
+ Status rtrn;
+
+ if (xkbi->flags&XkbMapPending)
+ changes= xkbi->changes;
+ else bzero(&changes,sizeof(changes));
+ XkbNoteMapChanges(&changes,event,XKB_XLIB_MAP_MASK);
+ if ((rtrn=XkbGetMapChanges(dpy,xkbi->desc,&changes))!=Success) {
+#ifdef DEBUG
+ fprintf(stderr,"Internal Error! XkbGetMapChanges failed:\n");
+#endif
+ xkbi->changes= changes;
+ }
+ else if (xkbi->flags&XkbMapPending) {
+ xkbi->flags&= ~XkbMapPending;
+ bzero(&xkbi->changes,sizeof(XkbMapChangesRec));
+ }
+ return rtrn;
+ }
+ return BadMatch;
+}
+
+int
+XRefreshKeyboardMapping(register XMappingEvent *event)
+{
+ XkbEvent *xkbevent = (XkbEvent *)event;
+ Display *dpy = event->display;
+ XkbMapChangesRec changes;
+ XkbInfoPtr xkbi;
+
+ /* always do this for input methods, which still use the old keymap */
+ (void) _XRefreshKeyboardMapping(event);
+
+ if (_XkbUnavailable(dpy))
+ return 1;
+
+ xkbi = dpy->xkb_info;
+
+ if (((event->type&0x7f)-xkbi->codes->first_event)==XkbEventCode)
+ return XkbRefreshKeyboardMapping(&xkbevent->map);
+
+ if (xkbi->flags&XkbXlibNewKeyboard) {
+ _XkbReloadDpy(dpy);
+ return 1;
+ }
+
+ if ((xkbi->flags&XkbMapPending)||(event->request==MappingKeyboard)) {
+ if (xkbi->flags&XkbMapPending) {
+ changes= xkbi->changes;
+ _XkbNoteCoreMapChanges(&changes,event,XKB_XLIB_MAP_MASK);
+ }
+ else {
+ bzero(&changes,sizeof(changes));
+ changes.changed= XkbKeySymsMask;
+ if (xkbi->desc->min_key_code<xkbi->desc->max_key_code) {
+ changes.first_key_sym= xkbi->desc->min_key_code;
+ changes.num_key_syms= xkbi->desc->max_key_code-
+ xkbi->desc->min_key_code+1;
+ }
+ else {
+ changes.first_key_sym= event->first_keycode;
+ changes.num_key_syms= event->count;
+ }
+ }
+
+ if (XkbGetMapChanges(dpy,xkbi->desc, &changes)!=Success) {
+#ifdef DEBUG
+ fprintf(stderr,"Internal Error! XkbGetMapChanges failed:\n");
+ if (changes.changed&XkbKeyTypesMask) {
+ int first= changes.first_type;
+ int last= changes.first_type+changes.num_types-1;
+ fprintf(stderr," types: %d..%d\n",first,last);
+ }
+ if (changes.changed&XkbKeySymsMask) {
+ int first= changes.first_key_sym;
+ int last= changes.first_key_sym+changes.num_key_syms-1;
+ fprintf(stderr," symbols: %d..%d\n",first,last);
+ }
+ if (changes.changed&XkbKeyActionsMask) {
+ int last,first= changes.first_key_act;
+ last= changes.first_key_act+changes.num_key_acts-1;
+ fprintf(stderr," acts: %d..%d\n",first,last);
+ }
+ if (changes.changed&XkbKeyBehaviorsMask) {
+ int last,first= changes.first_key_behavior;
+ last= first+changes.num_key_behaviors-1;
+ fprintf(stderr," behaviors: %d..%d\n",first,last);
+ }
+ if (changes.changed&XkbVirtualModsMask) {
+ fprintf(stderr,"virtual mods: 0x%04x\n",
+ changes.vmods);
+ }
+ if (changes.changed&XkbExplicitComponentsMask) {
+ int last,first= changes.first_key_explicit;
+ last= first+changes.num_key_explicit-1;
+ fprintf(stderr," explicit: %d..%d\n",first,last);
+ }
+#endif
+ }
+ LockDisplay(dpy);
+ if (xkbi->flags&XkbMapPending) {
+ xkbi->flags&= ~XkbMapPending;
+ bzero(&xkbi->changes,sizeof(XkbMapChangesRec));
+ }
+ UnlockDisplay(dpy);
+ }
+ if (event->request==MappingModifier) {
+ LockDisplay(dpy);
+ if (xkbi->desc->map->modmap) {
+ _XkbFree(xkbi->desc->map->modmap);
+ xkbi->desc->map->modmap= NULL;
+ }
+ if (dpy->key_bindings) {
+ register struct _XKeytrans *p;
+ for (p = dpy->key_bindings; p; p = p->next) {
+ register int i;
+ p->state= 0;
+ if (p->mlen>0) {
+ for (i = 0; i < p->mlen; i++) {
+ p->state|= XkbKeysymToModifiers(dpy,p->modifiers[i]);
+ }
+ if (p->state) p->state &= AllMods;
+ else p->state = AnyModifier;
+ }
+ }
+ }
+ UnlockDisplay(dpy);
+ }
+ return 1;
+}
+
+static int
+_XkbLoadDpy(Display *dpy)
+{
+ XkbInfoPtr xkbi;
+ unsigned query,oldEvents;
+ XkbDescRec *desc;
+
+ if (!XkbUseExtension(dpy,NULL,NULL))
+ return 0;
+
+ xkbi = dpy->xkb_info;
+ query = XkbAllClientInfoMask;
+ desc = XkbGetMap(dpy,query,XkbUseCoreKbd);
+ if (!desc) {
+#ifdef DEBUG
+ fprintf(stderr,"Warning! XkbGetMap failed!\n");
+#endif
+ return 0;
+ }
+ LockDisplay(dpy);
+ xkbi->desc = desc;
+
+ UnlockDisplay(dpy);
+ oldEvents= xkbi->selected_events;
+ if (!(xkbi->xlib_ctrls&XkbLC_IgnoreNewKeyboards)) {
+ XkbSelectEventDetails(dpy,xkbi->desc->device_spec,XkbNewKeyboardNotify,
+ XkbNKN_KeycodesMask|XkbNKN_DeviceIDMask,
+ XkbNKN_KeycodesMask|XkbNKN_DeviceIDMask);
+ }
+ XkbSelectEventDetails(dpy,xkbi->desc->device_spec,XkbMapNotify,
+ XkbAllClientInfoMask,XkbAllClientInfoMask);
+ LockDisplay(dpy);
+ xkbi->selected_events= oldEvents;
+ UnlockDisplay(dpy);
+ return 1;
+}
+
+void
+_XkbReloadDpy(Display *dpy)
+{
+ XkbInfoPtr xkbi;
+ XkbDescRec *desc;
+ unsigned oldDeviceID;
+
+ if (_XkbUnavailable(dpy))
+ return;
+
+ xkbi = dpy->xkb_info;
+ LockDisplay(dpy);
+ if (xkbi->desc) {
+ oldDeviceID= xkbi->desc->device_spec;
+ XkbFreeKeyboard(xkbi->desc,XkbAllComponentsMask,True);
+ xkbi->desc= NULL;
+ xkbi->flags&= ~(XkbMapPending|XkbXlibNewKeyboard);
+ xkbi->changes.changed= 0;
+ }
+ else oldDeviceID= XkbUseCoreKbd;
+ UnlockDisplay(dpy);
+ desc = XkbGetMap(dpy,XkbAllClientInfoMask,XkbUseCoreKbd);
+ if (!desc)
+ return;
+ LockDisplay(dpy);
+ xkbi->desc = desc;
+ UnlockDisplay(dpy);
+
+ if (desc->device_spec!=oldDeviceID) {
+ /* transfer(?) event masks here */
+#ifdef NOTYET
+ unsigned oldEvents;
+ oldEvents= xkbi->selected_events;
+ XkbSelectEventDetails(dpy,xkbi->desc->device_spec,XkbMapNotify,
+ XkbAllMapComponentsMask,XkbAllClientInfoMask);
+ LockDisplay(dpy);
+ xkbi->selected_events= oldEvents;
+ UnlockDisplay(dpy);
+#endif
+ }
+ return;
+}
+
+int
+XkbTranslateKeySym( register Display * dpy,
+ register KeySym * sym_rtrn,
+ unsigned int mods,
+ char * buffer,
+ int nbytes,
+ int * extra_rtrn)
+{
+ register XkbInfoPtr xkb;
+ XkbKSToMBFunc cvtr;
+ XPointer priv;
+ char tmp[4];
+ int n;
+
+ xkb= dpy->xkb_info;
+ if (!xkb->cvt.KSToMB) {
+ _XkbGetConverters(_XkbGetCharset(),&xkb->cvt);
+ _XkbGetConverters("ISO8859-1",&xkb->latin1cvt);
+ }
+
+ if (extra_rtrn)
+ *extra_rtrn= 0;
+
+ if ((buffer==NULL)||(nbytes==0)) {
+ buffer= tmp;
+ nbytes= 4;
+ }
+
+ /* see if symbol rebound, if so, return that string. */
+ n = XkbLookupKeyBinding(dpy,*sym_rtrn,mods,buffer,nbytes,extra_rtrn);
+ if (n)
+ return n;
+
+ if ( nbytes>0 )
+ buffer[0]= '\0';
+
+ if ( xkb->cvt.KSToUpper && (mods&LockMask) ) {
+ *sym_rtrn = (*xkb->cvt.KSToUpper)(*sym_rtrn);
+ }
+ if (xkb->xlib_ctrls & XkbLC_ForceLatin1Lookup) {
+ cvtr = xkb->latin1cvt.KSToMB;
+ priv = xkb->latin1cvt.KSToMBPriv;
+ } else {
+ cvtr = xkb->cvt.KSToMB;
+ priv = xkb->cvt.KSToMBPriv;
+ }
+
+ n = (*cvtr)(priv,*sym_rtrn,buffer,nbytes,extra_rtrn);
+
+ if ((!xkb->cvt.KSToUpper)&&( mods&LockMask )) {
+ register int i;
+ int change;
+ char ch;
+ for (i=change=0;i<n;i++) {
+ ch= toupper(buffer[i]);
+ change= (change||(buffer[i]!=ch));
+ buffer[i] = ch;
+ }
+ if (change) {
+ if (n==1)
+ *sym_rtrn=(*xkb->cvt.MBToKS)(xkb->cvt.MBToKSPriv,buffer,n,NULL);
+ else *sym_rtrn= NoSymbol;
+ }
+ }
+
+ if ( mods&ControlMask ) {
+ if ( n==1 ) {
+ buffer[0]= XkbToControl(buffer[0]);
+ if ( nbytes>1 )
+ buffer[1]= '\0';
+ return 1;
+ }
+ if ( nbytes > 0 )
+ buffer[0]= '\0';
+ return 0;
+ }
+ return n;
+}
+
+int
+XLookupString ( register XKeyEvent * event,
+ char * buffer,
+ int nbytes,
+ KeySym * keysym,
+ XComposeStatus * status)
+{
+ KeySym dummy;
+ int rtrnLen;
+ unsigned int new_mods;
+ Display *dpy = event->display;
+
+ if (keysym==NULL)
+ keysym= &dummy;
+ if (!XkbLookupKeySym(dpy,event->keycode,event->state, &new_mods,keysym))
+ return 0;
+ new_mods= (event->state&(~new_mods));
+
+ /* find the group where a symbol can be converted to control one */
+ if (new_mods&ControlMask && *keysym > 0x7F &&
+ (dpy->xkb_info->xlib_ctrls & XkbLC_ControlFallback)) {
+ XKeyEvent tmp_ev = *event;
+ KeySym tmp_keysym;
+ unsigned int tmp_new_mods;
+ if (_XkbUnavailable(dpy)) {
+ tmp_ev.state= event->state ^ dpy->mode_switch;
+ if (XkbLookupKeySym(dpy, tmp_ev.keycode, tmp_ev.state,
+ &tmp_new_mods, &tmp_keysym) &&
+ tmp_keysym != NoSymbol && tmp_keysym < 0x80 ) {
+ *keysym = tmp_keysym;
+ }
+ } else {
+ int n = XkbKeyNumGroups(dpy->xkb_info->desc, tmp_ev.keycode);
+ int i;
+ for (i = 0; i < n; i++) {
+ if (XkbGroupForCoreState(event->state) == i)
+ continue;
+ tmp_ev.state= XkbBuildCoreState(tmp_ev.state, i);
+ if (XkbLookupKeySym(dpy, tmp_ev.keycode, tmp_ev.state,
+ &tmp_new_mods, &tmp_keysym) &&
+ tmp_keysym != NoSymbol && tmp_keysym < 0x80 ) {
+ *keysym = tmp_keysym;
+ new_mods= (event->state&(~tmp_new_mods));
+ break;
+ }
+ }
+ }
+ }
+
+#ifdef USE_OWN_COMPOSE
+ if ( status ) {
+ static int been_here= 0;
+ if ( !been_here ) {
+ XimCompInitTables();
+ been_here = 1;
+ }
+ if ( !XimCompLegalStatus(status) ) {
+ status->compose_ptr = NULL;
+ status->chars_matched = 0;
+ }
+ if ( ((status->chars_matched>0)&&(status->compose_ptr!=NULL)) ||
+ XimCompIsComposeKey(*keysym,event->keycode,status) ) {
+ XimCompRtrn rtrn;
+
+ switch (XimCompProcessSym(status,*keysym,&rtrn)) {
+ case XIM_COMP_IGNORE:
+ break;
+ case XIM_COMP_IN_PROGRESS:
+ if ( keysym!=NULL )
+ *keysym = NoSymbol;
+#ifndef NO_COMPOSE_LED
+ if ( dpy->xkb_info->xlib_ctrls&XkbLC_ComposeLED ) {
+ XkbSetNamedIndicator(dpy,dpy->xkb_info->composeLED,
+ True,True,False,NULL);
+ }
+#endif
+ return 0;
+ case XIM_COMP_FAIL:
+ {
+ static Atom _ComposeFail= None;
+ int n = 0, len= 0;
+#ifndef NO_COMPOSE_LED
+ if ( dpy->xkb_info->xlib_ctrls&XkbLC_ComposeLED ) {
+ XkbSetNamedIndicator(dpy,dpy->xkb_info->composeLED,
+ True,False,False,NULL);
+ }
+#endif
+#ifndef NO_BELL_ON_COMPOSE_FAIL
+ if (dpy->xkb_info->xlib_ctrls&XkbLC_BeepOnComposeFail) {
+ if (_ComposeFail==None)
+ _ComposeFail= XInternAtom(dpy,"ComposeFail",0);
+ XkbBell(dpy,event->window,0,_ComposeFail);
+ }
+#endif
+ for (n=len=0;rtrn.sym[n]!=XK_VoidSymbol;n++) {
+ if ( nbytes-len > 0 ) {
+ len+= XkbTranslateKeySym(dpy,&rtrn.sym[n],new_mods,
+ buffer+len,nbytes-len,
+ NULL);
+ }
+ }
+ if ( keysym!=NULL ) {
+ if ( n==1 ) *keysym = rtrn.sym[0];
+ else *keysym = NoSymbol;
+ }
+ return len;
+ }
+ case XIM_COMP_SUCCEED:
+ {
+ int len,n = 0;
+
+#ifndef NO_COMPOSE_LED
+ if ( dpy->xkb_info->xlib_ctrls&XkbLC_ComposeLED ) {
+ XkbSetNamedIndicator(dpy,dpy->xkb_info->composeLED,
+ True,False,False,NULL);
+ }
+#endif
+ *keysym = rtrn.matchSym;
+ if ( rtrn.str[0]!='\0' ) {
+ strncpy(buffer,rtrn.str,nbytes-1);
+ buffer[nbytes-1]= '\0';
+ len = (int)strlen(buffer);
+ }
+ else {
+ len = XkbTranslateKeySym(dpy,keysym,new_mods,
+ buffer,nbytes,
+ NULL);
+ }
+ for (n=0;rtrn.sym[n]!=XK_VoidSymbol;n++) {
+ if ( nbytes-len > 0 ) {
+ len+= XkbTranslateKeySym(dpy,&rtrn.sym[n],
+ event->state,
+ buffer+len,nbytes-len,
+ NULL);
+ }
+ }
+ return len;
+ }
+ }
+ }
+ }
+#endif
+
+ /* We *should* use the new_mods (which does not contain any modifiers */
+ /* that were used to compute the symbol here, but pre-XKB XLookupString */
+ /* did not and we have to remain compatible. Sigh. */
+ if (_XkbUnavailable(dpy) ||
+ (dpy->xkb_info->xlib_ctrls&XkbLC_ConsumeLookupMods)==0)
+ new_mods= event->state;
+
+ rtrnLen= XkbLookupKeyBinding(dpy,*keysym,new_mods,buffer,nbytes,NULL);
+ if (rtrnLen>0)
+ return rtrnLen;
+
+ return XkbTranslateKeySym(dpy,keysym,new_mods,buffer,nbytes,NULL);
+}
+
+
+int
+XkbLookupKeyBinding( Display * dpy,
+ register KeySym sym,
+ unsigned int mods,
+ char * buffer,
+ int nbytes,
+ int * extra_rtrn)
+{
+ register struct _XKeytrans *p;
+
+ if (extra_rtrn)
+ *extra_rtrn= 0;
+ for (p = dpy->key_bindings; p; p = p->next) {
+ if (((mods & AllMods) == p->state) && (sym == p->key)) {
+ int tmp = p->len;
+ if (tmp > nbytes) {
+ if (extra_rtrn)
+ *extra_rtrn= (tmp-nbytes);
+ tmp = nbytes;
+ }
+ memcpy (buffer, p->string, tmp);
+ if (tmp < nbytes) buffer[tmp]= '\0';
+ return tmp;
+ }
+ }
+ return 0;
+}
+
+char
+XkbToControl( char ch )
+{
+ register char c = ch;
+
+ if ((c >= '@' && c < '\177') || c == ' ') c &= 0x1F;
+ else if (c == '2') c = '\000';
+ else if (c >= '3' && c <= '7') c -= ('3' - '\033');
+ else if (c == '8') c = '\177';
+ else if (c == '/') c = '_' & 0x1F;
+ return c;
+}
diff --git a/libX11/src/xkb/XKBCompat.c b/libX11/src/xkb/XKBCompat.c
index 6d110b167..206b0c90f 100644
--- a/libX11/src/xkb/XKBCompat.c
+++ b/libX11/src/xkb/XKBCompat.c
@@ -1,247 +1,247 @@
-/************************************************************
-Copyright (c) 1993 by Silicon Graphics Computer Systems, Inc.
-
-Permission to use, copy, modify, and distribute this
-software and its documentation for any purpose and without
-fee is hereby granted, provided that the above copyright
-notice appear in all copies and that both that copyright
-notice and this permission notice appear in supporting
-documentation, and that the name of Silicon Graphics not be
-used in advertising or publicity pertaining to distribution
-of the software without specific prior written permission.
-Silicon Graphics makes no representation about the suitability
-of this software for any purpose. It is provided "as is"
-without any express or implied warranty.
-
-SILICON GRAPHICS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS
-SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
-AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON
-GRAPHICS BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL
-DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
-DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
-OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH
-THE USE OR PERFORMANCE OF THIS SOFTWARE.
-
-********************************************************/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include <stdio.h>
-#define NEED_MAP_READERS
-#include "Xlibint.h"
-#include <X11/extensions/XKBproto.h>
-#include "XKBlibint.h"
-
-Status
-_XkbReadGetCompatMapReply( Display * dpy,
- xkbGetCompatMapReply * rep,
- XkbDescPtr xkb,
- int * nread_rtrn)
-{
-register int i;
-XkbReadBufferRec buf;
-
- if (!_XkbInitReadBuffer(dpy,&buf,(int)rep->length*4))
- return BadAlloc;
-
- if (nread_rtrn)
- *nread_rtrn= (int)rep->length*4;
-
- i= rep->firstSI+rep->nSI;
- if ((!xkb->compat)&&
- (XkbAllocCompatMap(xkb,XkbAllCompatMask,i)!=Success))
- return BadAlloc;
-
- if (rep->nSI!=0) {
- XkbSymInterpretRec *syms;
- xkbSymInterpretWireDesc *wire;
-
- wire= (xkbSymInterpretWireDesc *)_XkbGetReadBufferPtr(&buf,
- rep->nSI*SIZEOF(xkbSymInterpretWireDesc));
- if (wire==NULL)
- goto BAILOUT;
- syms= &xkb->compat->sym_interpret[rep->firstSI];
-
- for (i=0;i<rep->nSI;i++,syms++,wire++) {
- syms->sym= wire->sym;
- syms->mods= wire->mods;
- syms->match= wire->match;
- syms->virtual_mod= wire->virtualMod;
- syms->flags= wire->flags;
- syms->act= *((XkbAnyAction *)&wire->act);
- }
- xkb->compat->num_si+= rep->nSI;
- }
-
- if (rep->groups&XkbAllGroupsMask) {
- register unsigned bit,nGroups;
- xkbModsWireDesc * wire;
- for (i=0,nGroups=0,bit=1;i<XkbNumKbdGroups;i++,bit<<=1) {
- if (rep->groups&bit)
- nGroups++;
- }
- wire= (xkbModsWireDesc *)_XkbGetReadBufferPtr(&buf,
- nGroups*SIZEOF(xkbModsWireDesc));
- if (wire==NULL)
- goto BAILOUT;
- for (i=0,bit=1;i<XkbNumKbdGroups;i++,bit<<=1) {
- if ((rep->groups&bit)==0)
- continue;
- xkb->compat->groups[i].mask= wire->mask;
- xkb->compat->groups[i].real_mods= wire->realMods;
- xkb->compat->groups[i].vmods= wire->virtualMods;
- wire++;
- }
- }
- i= _XkbFreeReadBuffer(&buf);
- if (i)
- fprintf(stderr,"CompatMapReply! Bad length (%d extra bytes)\n",i);
- if (i || buf.error)
- return BadLength;
- return Success;
-BAILOUT:
- _XkbFreeReadBuffer(&buf);
- return BadLength;
-}
-
-Status
-XkbGetCompatMap(Display *dpy,unsigned which,XkbDescPtr xkb)
-{
- register xkbGetCompatMapReq *req;
- xkbGetCompatMapReply rep;
- Status status;
- XkbInfoPtr xkbi;
-
- if ( (!dpy) || (!xkb) || (dpy->flags & XlibDisplayNoXkb) ||
- ((xkb->dpy!=NULL)&&(xkb->dpy!=dpy)) ||
- (!dpy->xkb_info && (!XkbUseExtension(dpy,NULL,NULL))))
- return BadAccess;
- LockDisplay(dpy);
- xkbi = dpy->xkb_info;
- GetReq(kbGetCompatMap, req);
- req->reqType = xkbi->codes->major_opcode;
- req->xkbReqType = X_kbGetCompatMap;
- req->deviceSpec = xkb->device_spec;
- if (which&XkbSymInterpMask)
- req->getAllSI= True;
- else req->getAllSI= False;
- req->firstSI= req->nSI= 0;
-
- if (which&XkbGroupCompatMask)
- req->groups= XkbAllGroupsMask;
- else req->groups= 0;
-
- if (!_XReply(dpy, (xReply *)&rep, 0, xFalse)) {
- UnlockDisplay(dpy);
- SyncHandle();
- return BadLength;
- }
- if (xkb->dpy==NULL)
- xkb->dpy= dpy;
- if (xkb->device_spec==XkbUseCoreKbd)
- xkb->device_spec= rep.deviceID;
-
- status = _XkbReadGetCompatMapReply(dpy,&rep,xkb,NULL);
- UnlockDisplay(dpy);
- SyncHandle();
- return status;
-}
-
-static Bool
-_XkbWriteSetCompatMap(Display *dpy,xkbSetCompatMapReq *req,XkbDescPtr xkb)
-{
-CARD16 firstSI;
-CARD16 nSI;
-int size;
-register int i,nGroups;
-register unsigned bit;
-unsigned groups;
-char * buf;
-
- firstSI = req->firstSI;
- nSI = req->nSI;
- size= nSI*SIZEOF(xkbSymInterpretWireDesc);
- nGroups= 0;
- groups= req->groups;
- if (groups&XkbAllGroupsMask) {
- for (i=0,bit=1;i<XkbNumKbdGroups;i++,bit<<=1) {
- if (groups&bit)
- nGroups++;
- }
- size+= SIZEOF(xkbModsWireDesc)*nGroups;
- }
- req->length+= size/4;
- BufAlloc(char *,buf,size);
- if (!buf)
- return False;
-
- if (nSI) {
- XkbSymInterpretPtr sym= &xkb->compat->sym_interpret[firstSI];
- xkbSymInterpretWireDesc *wire= (xkbSymInterpretWireDesc *)buf;
- for (i=0;i<nSI;i++,wire++,sym++) {
- wire->sym= (CARD32)sym->sym;
- wire->mods= sym->mods;
- wire->match= sym->match;
- wire->flags= sym->flags;
- wire->virtualMod= sym->virtual_mod;
- memcpy(&wire->act,&sym->act,sz_xkbActionWireDesc);
- }
- buf+= nSI*SIZEOF(xkbSymInterpretWireDesc);
- }
- if (groups&XkbAllGroupsMask) {
- xkbModsWireDesc * out;
-
- out= (xkbModsWireDesc *)buf;
- for (i=0,bit=1;i<XkbNumKbdGroups;i++,bit<<=1) {
- if ((groups&bit)!=0) {
- out->mask= xkb->compat->groups[i].mask;
- out->realMods= xkb->compat->groups[i].real_mods;
- out->virtualMods= xkb->compat->groups[i].vmods;
- out++;
- }
- }
- buf+= nGroups*SIZEOF(xkbModsWireDesc);
- }
- return True;
-}
-
-Bool
-XkbSetCompatMap(Display *dpy,unsigned which,XkbDescPtr xkb,Bool updateActions)
-{
- register xkbSetCompatMapReq *req;
- Status ok;
- XkbInfoPtr xkbi;
-
- if ((dpy->flags & XlibDisplayNoXkb) || (dpy!=xkb->dpy) ||
- (!dpy->xkb_info && !XkbUseExtension(dpy,NULL,NULL)))
- return False;
- if ((!xkb->compat) ||
- ((which&XkbSymInterpMask)&&(!xkb->compat->sym_interpret)))
- return False;
- LockDisplay(dpy);
- xkbi = dpy->xkb_info;
- GetReq(kbSetCompatMap, req);
- req->reqType = xkbi->codes->major_opcode;
- req->xkbReqType = X_kbSetCompatMap;
- req->deviceSpec = xkb->device_spec;
- req->recomputeActions = updateActions;
- if (which&XkbSymInterpMask) {
- req->truncateSI = True;
- req->firstSI= 0;
- req->nSI= xkb->compat->num_si;
- }
- else {
- req->truncateSI = False;
- req->firstSI= 0;
- req->nSI= 0;
- }
- if (which&XkbGroupCompatMask)
- req->groups= XkbAllGroupsMask;
- else req->groups= 0;
- ok= _XkbWriteSetCompatMap(dpy,req,xkb);
- UnlockDisplay(dpy);
- SyncHandle();
- return ok;
-}
-
+/************************************************************
+Copyright (c) 1993 by Silicon Graphics Computer Systems, Inc.
+
+Permission to use, copy, modify, and distribute this
+software and its documentation for any purpose and without
+fee is hereby granted, provided that the above copyright
+notice appear in all copies and that both that copyright
+notice and this permission notice appear in supporting
+documentation, and that the name of Silicon Graphics not be
+used in advertising or publicity pertaining to distribution
+of the software without specific prior written permission.
+Silicon Graphics makes no representation about the suitability
+of this software for any purpose. It is provided "as is"
+without any express or implied warranty.
+
+SILICON GRAPHICS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS
+SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
+AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON
+GRAPHICS BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL
+DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
+DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
+OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH
+THE USE OR PERFORMANCE OF THIS SOFTWARE.
+
+********************************************************/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include <stdio.h>
+#define NEED_MAP_READERS
+#include "Xlibint.h"
+#include <X11/extensions/XKBproto.h>
+#include "XKBlibint.h"
+
+Status
+_XkbReadGetCompatMapReply( Display * dpy,
+ xkbGetCompatMapReply * rep,
+ XkbDescPtr xkb,
+ int * nread_rtrn)
+{
+register int i;
+XkbReadBufferRec buf;
+
+ if (!_XkbInitReadBuffer(dpy,&buf,(int)rep->length*4))
+ return BadAlloc;
+
+ if (nread_rtrn)
+ *nread_rtrn= (int)rep->length*4;
+
+ i= rep->firstSI+rep->nSI;
+ if ((!xkb->compat)&&
+ (XkbAllocCompatMap(xkb,XkbAllCompatMask,i)!=Success))
+ return BadAlloc;
+
+ if (rep->nSI!=0) {
+ XkbSymInterpretRec *syms;
+ xkbSymInterpretWireDesc *wire;
+
+ wire= (xkbSymInterpretWireDesc *)_XkbGetReadBufferPtr(&buf,
+ rep->nSI*SIZEOF(xkbSymInterpretWireDesc));
+ if (wire==NULL)
+ goto BAILOUT;
+ syms= &xkb->compat->sym_interpret[rep->firstSI];
+
+ for (i=0;i<rep->nSI;i++,syms++,wire++) {
+ syms->sym= wire->sym;
+ syms->mods= wire->mods;
+ syms->match= wire->match;
+ syms->virtual_mod= wire->virtualMod;
+ syms->flags= wire->flags;
+ syms->act= *((XkbAnyAction *)&wire->act);
+ }
+ xkb->compat->num_si+= rep->nSI;
+ }
+
+ if (rep->groups&XkbAllGroupsMask) {
+ register unsigned bit,nGroups;
+ xkbModsWireDesc * wire;
+ for (i=0,nGroups=0,bit=1;i<XkbNumKbdGroups;i++,bit<<=1) {
+ if (rep->groups&bit)
+ nGroups++;
+ }
+ wire= (xkbModsWireDesc *)_XkbGetReadBufferPtr(&buf,
+ nGroups*SIZEOF(xkbModsWireDesc));
+ if (wire==NULL)
+ goto BAILOUT;
+ for (i=0,bit=1;i<XkbNumKbdGroups;i++,bit<<=1) {
+ if ((rep->groups&bit)==0)
+ continue;
+ xkb->compat->groups[i].mask= wire->mask;
+ xkb->compat->groups[i].real_mods= wire->realMods;
+ xkb->compat->groups[i].vmods= wire->virtualMods;
+ wire++;
+ }
+ }
+ i= _XkbFreeReadBuffer(&buf);
+ if (i)
+ fprintf(stderr,"CompatMapReply! Bad length (%d extra bytes)\n",i);
+ if (i || buf.error)
+ return BadLength;
+ return Success;
+BAILOUT:
+ _XkbFreeReadBuffer(&buf);
+ return BadLength;
+}
+
+Status
+XkbGetCompatMap(Display *dpy,unsigned which,XkbDescPtr xkb)
+{
+ register xkbGetCompatMapReq *req;
+ xkbGetCompatMapReply rep;
+ Status status;
+ XkbInfoPtr xkbi;
+
+ if ( (!dpy) || (!xkb) || (dpy->flags & XlibDisplayNoXkb) ||
+ ((xkb->dpy!=NULL)&&(xkb->dpy!=dpy)) ||
+ (!dpy->xkb_info && (!XkbUseExtension(dpy,NULL,NULL))))
+ return BadAccess;
+ LockDisplay(dpy);
+ xkbi = dpy->xkb_info;
+ GetReq(kbGetCompatMap, req);
+ req->reqType = xkbi->codes->major_opcode;
+ req->xkbReqType = X_kbGetCompatMap;
+ req->deviceSpec = xkb->device_spec;
+ if (which&XkbSymInterpMask)
+ req->getAllSI= True;
+ else req->getAllSI= False;
+ req->firstSI= req->nSI= 0;
+
+ if (which&XkbGroupCompatMask)
+ req->groups= XkbAllGroupsMask;
+ else req->groups= 0;
+
+ if (!_XReply(dpy, (xReply *)&rep, 0, xFalse)) {
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return BadLength;
+ }
+ if (xkb->dpy==NULL)
+ xkb->dpy= dpy;
+ if (xkb->device_spec==XkbUseCoreKbd)
+ xkb->device_spec= rep.deviceID;
+
+ status = _XkbReadGetCompatMapReply(dpy,&rep,xkb,NULL);
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return status;
+}
+
+static Bool
+_XkbWriteSetCompatMap(Display *dpy,xkbSetCompatMapReq *req,XkbDescPtr xkb)
+{
+CARD16 firstSI;
+CARD16 nSI;
+int size;
+register int i,nGroups;
+register unsigned bit;
+unsigned groups;
+char * buf;
+
+ firstSI = req->firstSI;
+ nSI = req->nSI;
+ size= nSI*SIZEOF(xkbSymInterpretWireDesc);
+ nGroups= 0;
+ groups= req->groups;
+ if (groups&XkbAllGroupsMask) {
+ for (i=0,bit=1;i<XkbNumKbdGroups;i++,bit<<=1) {
+ if (groups&bit)
+ nGroups++;
+ }
+ size+= SIZEOF(xkbModsWireDesc)*nGroups;
+ }
+ req->length+= size/4;
+ BufAlloc(char *,buf,size);
+ if (!buf)
+ return False;
+
+ if (nSI) {
+ XkbSymInterpretPtr sym= &xkb->compat->sym_interpret[firstSI];
+ xkbSymInterpretWireDesc *wire= (xkbSymInterpretWireDesc *)buf;
+ for (i=0;i<nSI;i++,wire++,sym++) {
+ wire->sym= (CARD32)sym->sym;
+ wire->mods= sym->mods;
+ wire->match= sym->match;
+ wire->flags= sym->flags;
+ wire->virtualMod= sym->virtual_mod;
+ memcpy(&wire->act,&sym->act,sz_xkbActionWireDesc);
+ }
+ buf+= nSI*SIZEOF(xkbSymInterpretWireDesc);
+ }
+ if (groups&XkbAllGroupsMask) {
+ xkbModsWireDesc * out;
+
+ out= (xkbModsWireDesc *)buf;
+ for (i=0,bit=1;i<XkbNumKbdGroups;i++,bit<<=1) {
+ if ((groups&bit)!=0) {
+ out->mask= xkb->compat->groups[i].mask;
+ out->realMods= xkb->compat->groups[i].real_mods;
+ out->virtualMods= xkb->compat->groups[i].vmods;
+ out++;
+ }
+ }
+ buf+= nGroups*SIZEOF(xkbModsWireDesc);
+ }
+ return True;
+}
+
+Bool
+XkbSetCompatMap(Display *dpy,unsigned which,XkbDescPtr xkb,Bool updateActions)
+{
+ register xkbSetCompatMapReq *req;
+ Status ok;
+ XkbInfoPtr xkbi;
+
+ if ((dpy->flags & XlibDisplayNoXkb) || (dpy!=xkb->dpy) ||
+ (!dpy->xkb_info && !XkbUseExtension(dpy,NULL,NULL)))
+ return False;
+ if ((!xkb->compat) ||
+ ((which&XkbSymInterpMask)&&(!xkb->compat->sym_interpret)))
+ return False;
+ LockDisplay(dpy);
+ xkbi = dpy->xkb_info;
+ GetReq(kbSetCompatMap, req);
+ req->reqType = xkbi->codes->major_opcode;
+ req->xkbReqType = X_kbSetCompatMap;
+ req->deviceSpec = xkb->device_spec;
+ req->recomputeActions = updateActions;
+ if (which&XkbSymInterpMask) {
+ req->truncateSI = True;
+ req->firstSI= 0;
+ req->nSI= xkb->compat->num_si;
+ }
+ else {
+ req->truncateSI = False;
+ req->firstSI= 0;
+ req->nSI= 0;
+ }
+ if (which&XkbGroupCompatMask)
+ req->groups= XkbAllGroupsMask;
+ else req->groups= 0;
+ ok= _XkbWriteSetCompatMap(dpy,req,xkb);
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return ok;
+}
+
diff --git a/libX11/src/xkb/XKBCtrls.c b/libX11/src/xkb/XKBCtrls.c
index abb470be9..2b33b3059 100644
--- a/libX11/src/xkb/XKBCtrls.c
+++ b/libX11/src/xkb/XKBCtrls.c
@@ -1,352 +1,352 @@
-/************************************************************
-Copyright (c) 1993 by Silicon Graphics Computer Systems, Inc.
-
-Permission to use, copy, modify, and distribute this
-software and its documentation for any purpose and without
-fee is hereby granted, provided that the above copyright
-notice appear in all copies and that both that copyright
-notice and this permission notice appear in supporting
-documentation, and that the name of Silicon Graphics not be
-used in advertising or publicity pertaining to distribution
-of the software without specific prior written permission.
-Silicon Graphics makes no representation about the suitability
-of this software for any purpose. It is provided "as is"
-without any express or implied warranty.
-
-SILICON GRAPHICS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS
-SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
-AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON
-GRAPHICS BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL
-DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
-DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
-OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH
-THE USE OR PERFORMANCE OF THIS SOFTWARE.
-
-********************************************************/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include <stdio.h>
-#include "Xlibint.h"
-#include <X11/extensions/XKBproto.h>
-#include "XKBlibint.h"
-
-
-static xkbSetControlsReq *
-_XkbGetSetControlsReq(Display *dpy,XkbInfoPtr xkbi,unsigned int deviceSpec)
-{
-xkbSetControlsReq *req;
-
- GetReq(kbSetControls,req);
- bzero(req,SIZEOF(xkbSetControlsReq));
- req->reqType = xkbi->codes->major_opcode;
- req->length = (SIZEOF(xkbSetControlsReq)>>2);
- req->xkbReqType = X_kbSetControls;
- req->deviceSpec = deviceSpec;
- return req;
-}
-
-Bool
-XkbSetAutoRepeatRate( Display *dpy,
- unsigned int deviceSpec,
- unsigned int timeout,
- unsigned int interval)
-{
- register xkbSetControlsReq *req;
-
- if ((dpy->flags & XlibDisplayNoXkb) ||
- (!dpy->xkb_info && !XkbUseExtension(dpy,NULL,NULL)))
- return False;
- LockDisplay(dpy);
- req= _XkbGetSetControlsReq(dpy,dpy->xkb_info,deviceSpec);
- req->changeCtrls = XkbRepeatKeysMask;
- req->repeatDelay = timeout;
- req->repeatInterval = interval;
- UnlockDisplay(dpy);
- SyncHandle();
- return True;
-}
-
-Bool
-XkbGetAutoRepeatRate( Display * dpy,
- unsigned int deviceSpec,
- unsigned int * timeoutp,
- unsigned int * intervalp)
-{
- register xkbGetControlsReq *req;
- xkbGetControlsReply rep;
- XkbInfoPtr xkbi;
-
- if ((dpy->flags & XlibDisplayNoXkb) ||
- (!dpy->xkb_info && !XkbUseExtension(dpy,NULL,NULL)))
- return False;
- LockDisplay(dpy);
- xkbi = dpy->xkb_info;
- GetReq(kbGetControls, req);
- req->reqType = xkbi->codes->major_opcode;
- req->xkbReqType = X_kbGetControls;
- req->deviceSpec = deviceSpec;
- if (!_XReply(dpy, (xReply *)&rep,
- (SIZEOF(xkbGetControlsReply)-SIZEOF(xReply))>>2, xFalse)) {
- UnlockDisplay(dpy);
- SyncHandle();
- return False;
- }
- UnlockDisplay(dpy);
- SyncHandle();
- *timeoutp = rep.repeatDelay;
- *intervalp = rep.repeatInterval;
- return True;
-}
-
-Bool
-XkbSetServerInternalMods( Display * dpy,
- unsigned deviceSpec,
- unsigned affectReal,
- unsigned realValues,
- unsigned affectVirtual,
- unsigned virtualValues)
-{
- register xkbSetControlsReq *req;
-
- if ((dpy->flags & XlibDisplayNoXkb) ||
- (!dpy->xkb_info && !XkbUseExtension(dpy,NULL,NULL)))
- return False;
- LockDisplay(dpy);
- req= _XkbGetSetControlsReq(dpy,dpy->xkb_info,deviceSpec);
- req->affectInternalMods = affectReal;
- req->internalMods = realValues;
- req->affectInternalVMods= affectVirtual;
- req->internalVMods= virtualValues;
- req->changeCtrls = XkbInternalModsMask;
- UnlockDisplay(dpy);
- SyncHandle();
- return True;
-}
-
-Bool
-XkbSetIgnoreLockMods( Display * dpy,
- unsigned int deviceSpec,
- unsigned affectReal,
- unsigned realValues,
- unsigned affectVirtual,
- unsigned virtualValues)
-{
- register xkbSetControlsReq *req;
-
- if ((dpy->flags & XlibDisplayNoXkb) ||
- (!dpy->xkb_info && !XkbUseExtension(dpy,NULL,NULL)))
- return False;
- LockDisplay(dpy);
- req= _XkbGetSetControlsReq(dpy,dpy->xkb_info,deviceSpec);
- req->affectIgnoreLockMods= affectReal;
- req->ignoreLockMods = realValues;
- req->affectIgnoreLockVMods= affectVirtual;
- req->ignoreLockVMods= virtualValues;
- req->changeCtrls = XkbIgnoreLockModsMask;
- UnlockDisplay(dpy);
- SyncHandle();
- return True;
-}
-
-Bool
-XkbChangeEnabledControls( Display * dpy,
- unsigned deviceSpec,
- unsigned affect,
- unsigned values)
-{
- register xkbSetControlsReq *req;
-
- if ((dpy->flags & XlibDisplayNoXkb) ||
- (!dpy->xkb_info && !XkbUseExtension(dpy,NULL,NULL)))
- return False;
- LockDisplay(dpy);
- req= _XkbGetSetControlsReq(dpy,dpy->xkb_info,deviceSpec);
- req->affectEnabledCtrls= affect;
- req->enabledCtrls= (affect&values);
- req->changeCtrls = XkbControlsEnabledMask;
- UnlockDisplay(dpy);
- SyncHandle();
- return True;
-}
-
-Status
-XkbGetControls(Display *dpy, unsigned long which, XkbDescPtr xkb)
-{
- register xkbGetControlsReq *req;
- xkbGetControlsReply rep;
- XkbControlsPtr ctrls;
- XkbInfoPtr xkbi;
-
- if ((dpy->flags & XlibDisplayNoXkb) ||
- (!dpy->xkb_info && !XkbUseExtension(dpy,NULL,NULL)))
- return BadAccess;
- if ((!xkb) || (!which))
- return BadMatch;
-
- LockDisplay(dpy);
- xkbi = dpy->xkb_info;
- GetReq(kbGetControls, req);
- if (!xkb->ctrls) {
- xkb->ctrls = _XkbTypedCalloc(1,XkbControlsRec);
- if (!xkb->ctrls) {
- UnlockDisplay(dpy);
- SyncHandle();
- return BadAlloc;
- }
- }
- req->reqType = xkbi->codes->major_opcode;
- req->xkbReqType = X_kbGetControls;
- req->deviceSpec = xkb->device_spec;
- if (!_XReply(dpy, (xReply *)&rep,
- (SIZEOF(xkbGetControlsReply)-SIZEOF(xReply))>>2, xFalse)) {
- UnlockDisplay(dpy);
- SyncHandle();
- return BadImplementation;
- }
- if (xkb->device_spec==XkbUseCoreKbd)
- xkb->device_spec= rep.deviceID;
- ctrls= xkb->ctrls;
- if (which&XkbControlsEnabledMask)
- ctrls->enabled_ctrls = rep.enabledCtrls;
- ctrls->num_groups= rep.numGroups;
- if (which&XkbGroupsWrapMask)
- ctrls->groups_wrap= rep.groupsWrap;
- if (which&XkbInternalModsMask) {
- ctrls->internal.mask = rep.internalMods;
- ctrls->internal.real_mods = rep.internalRealMods;
- ctrls->internal.vmods = rep.internalVMods;
- }
- if (which&XkbIgnoreLockModsMask) {
- ctrls->ignore_lock.mask = rep.ignoreLockMods;
- ctrls->ignore_lock.real_mods = rep.ignoreLockRealMods;
- ctrls->ignore_lock.vmods = rep.ignoreLockVMods;
- }
- if (which&XkbRepeatKeysMask) {
- ctrls->repeat_delay = rep.repeatDelay;
- ctrls->repeat_interval = rep.repeatInterval;
- }
- if (which&XkbSlowKeysMask)
- ctrls->slow_keys_delay = rep.slowKeysDelay;
- if (which&XkbBounceKeysMask)
- ctrls->debounce_delay = rep.debounceDelay;
- if (which&XkbMouseKeysMask) {
- ctrls->mk_dflt_btn = rep.mkDfltBtn;
- }
- if (which&XkbMouseKeysAccelMask) {
- ctrls->mk_delay = rep.mkDelay;
- ctrls->mk_interval = rep.mkInterval;
- ctrls->mk_time_to_max = rep.mkTimeToMax;
- ctrls->mk_max_speed = rep.mkMaxSpeed;
- ctrls->mk_curve = rep.mkCurve;
- }
- if (which&XkbAccessXKeysMask)
- ctrls->ax_options= rep.axOptions;
- if (which&XkbStickyKeysMask) {
- ctrls->ax_options &= ~XkbAX_SKOptionsMask;
- ctrls->ax_options |= rep.axOptions & XkbAX_SKOptionsMask;
- }
- if (which&XkbAccessXFeedbackMask) {
- ctrls->ax_options &= ~XkbAX_FBOptionsMask;
- ctrls->ax_options |= rep.axOptions & XkbAX_FBOptionsMask;
- }
- if (which&XkbAccessXTimeoutMask) {
- ctrls->ax_timeout = rep.axTimeout;
- ctrls->axt_ctrls_mask = rep.axtCtrlsMask;
- ctrls->axt_ctrls_values = rep.axtCtrlsValues;
- ctrls->axt_opts_mask = rep.axtOptsMask;
- ctrls->axt_opts_values= rep.axtOptsValues;
- }
- if (which&XkbPerKeyRepeatMask) {
- memcpy(ctrls->per_key_repeat,rep.perKeyRepeat,
- XkbPerKeyBitArraySize);
- }
- UnlockDisplay(dpy);
- SyncHandle();
- return Success;
-}
-
-Bool
-XkbSetControls(Display *dpy, unsigned long which, XkbDescPtr xkb)
-{
- register xkbSetControlsReq *req;
- XkbControlsPtr ctrls;
-
- if ((dpy->flags & XlibDisplayNoXkb) ||
- (!dpy->xkb_info && !XkbUseExtension(dpy,NULL,NULL)))
- return False;
- if ((!xkb)||(!xkb->ctrls))
- return False;
-
- ctrls= xkb->ctrls;
- LockDisplay(dpy);
- req= _XkbGetSetControlsReq(dpy,dpy->xkb_info,xkb->device_spec);
- req->changeCtrls = (CARD32)which;
- if (which&XkbInternalModsMask) {
- req->affectInternalMods= ~0;
- req->internalMods= ctrls->internal.real_mods;
- req->affectInternalVMods = ~0;
- req->internalVMods= ctrls->internal.vmods;
- }
- if (which&XkbIgnoreLockModsMask) {
- req->affectIgnoreLockMods= ~0;
- req->ignoreLockMods= ctrls->ignore_lock.real_mods;
- req->affectIgnoreLockVMods= ~0;
- req->ignoreLockVMods= ctrls->ignore_lock.vmods;
- }
- if (which&XkbControlsEnabledMask) {
- req->affectEnabledCtrls= XkbAllBooleanCtrlsMask;
- req->enabledCtrls= ctrls->enabled_ctrls;
- }
- if (which&XkbRepeatKeysMask) {
- req->repeatDelay = ctrls->repeat_delay;
- req->repeatInterval = ctrls->repeat_interval;
- }
- if (which&XkbSlowKeysMask)
- req->slowKeysDelay = ctrls->slow_keys_delay;
- if (which&XkbBounceKeysMask)
- req->debounceDelay = ctrls->debounce_delay;
- if (which&XkbMouseKeysMask) {
- req->mkDfltBtn = ctrls->mk_dflt_btn;
- }
- if (which&XkbGroupsWrapMask)
- req->groupsWrap= ctrls->groups_wrap;
- if (which&(XkbAccessXKeysMask|XkbStickyKeysMask|XkbAccessXFeedbackMask))
- req->axOptions= ctrls->ax_options;
- if (which&XkbMouseKeysAccelMask) {
- req->mkDelay = ctrls->mk_delay;
- req->mkInterval = ctrls->mk_interval;
- req->mkTimeToMax = ctrls->mk_time_to_max;
- req->mkMaxSpeed = ctrls->mk_max_speed;
- req->mkCurve = ctrls->mk_curve;
- }
- if (which&XkbAccessXTimeoutMask) {
- req->axTimeout = ctrls->ax_timeout;
- req->axtCtrlsMask = ctrls->axt_ctrls_mask;
- req->axtCtrlsValues = ctrls->axt_ctrls_values;
- req->axtOptsMask = ctrls->axt_opts_mask;
- req->axtOptsValues=ctrls->axt_opts_values;
- }
- if (which&XkbPerKeyRepeatMask) {
- memcpy(req->perKeyRepeat,ctrls->per_key_repeat,
- XkbPerKeyBitArraySize);
- }
- UnlockDisplay(dpy);
- SyncHandle();
- return True;
-}
-
-/***====================================================================***/
-
-void
-XkbNoteControlsChanges( XkbControlsChangesPtr old,
- XkbControlsNotifyEvent * new,
- unsigned int wanted)
-{
- old->changed_ctrls|= (new->changed_ctrls&wanted);
- if (new->changed_ctrls&XkbControlsEnabledMask&wanted)
- old->enabled_ctrls_changes^= new->enabled_ctrl_changes;
- /* num_groups_changed?? */
- return;
-}
+/************************************************************
+Copyright (c) 1993 by Silicon Graphics Computer Systems, Inc.
+
+Permission to use, copy, modify, and distribute this
+software and its documentation for any purpose and without
+fee is hereby granted, provided that the above copyright
+notice appear in all copies and that both that copyright
+notice and this permission notice appear in supporting
+documentation, and that the name of Silicon Graphics not be
+used in advertising or publicity pertaining to distribution
+of the software without specific prior written permission.
+Silicon Graphics makes no representation about the suitability
+of this software for any purpose. It is provided "as is"
+without any express or implied warranty.
+
+SILICON GRAPHICS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS
+SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
+AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON
+GRAPHICS BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL
+DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
+DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
+OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH
+THE USE OR PERFORMANCE OF THIS SOFTWARE.
+
+********************************************************/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include <stdio.h>
+#include "Xlibint.h"
+#include <X11/extensions/XKBproto.h>
+#include "XKBlibint.h"
+
+
+static xkbSetControlsReq *
+_XkbGetSetControlsReq(Display *dpy,XkbInfoPtr xkbi,unsigned int deviceSpec)
+{
+xkbSetControlsReq *req;
+
+ GetReq(kbSetControls,req);
+ bzero(req,SIZEOF(xkbSetControlsReq));
+ req->reqType = xkbi->codes->major_opcode;
+ req->length = (SIZEOF(xkbSetControlsReq)>>2);
+ req->xkbReqType = X_kbSetControls;
+ req->deviceSpec = deviceSpec;
+ return req;
+}
+
+Bool
+XkbSetAutoRepeatRate( Display *dpy,
+ unsigned int deviceSpec,
+ unsigned int timeout,
+ unsigned int interval)
+{
+ register xkbSetControlsReq *req;
+
+ if ((dpy->flags & XlibDisplayNoXkb) ||
+ (!dpy->xkb_info && !XkbUseExtension(dpy,NULL,NULL)))
+ return False;
+ LockDisplay(dpy);
+ req= _XkbGetSetControlsReq(dpy,dpy->xkb_info,deviceSpec);
+ req->changeCtrls = XkbRepeatKeysMask;
+ req->repeatDelay = timeout;
+ req->repeatInterval = interval;
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return True;
+}
+
+Bool
+XkbGetAutoRepeatRate( Display * dpy,
+ unsigned int deviceSpec,
+ unsigned int * timeoutp,
+ unsigned int * intervalp)
+{
+ register xkbGetControlsReq *req;
+ xkbGetControlsReply rep;
+ XkbInfoPtr xkbi;
+
+ if ((dpy->flags & XlibDisplayNoXkb) ||
+ (!dpy->xkb_info && !XkbUseExtension(dpy,NULL,NULL)))
+ return False;
+ LockDisplay(dpy);
+ xkbi = dpy->xkb_info;
+ GetReq(kbGetControls, req);
+ req->reqType = xkbi->codes->major_opcode;
+ req->xkbReqType = X_kbGetControls;
+ req->deviceSpec = deviceSpec;
+ if (!_XReply(dpy, (xReply *)&rep,
+ (SIZEOF(xkbGetControlsReply)-SIZEOF(xReply))>>2, xFalse)) {
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return False;
+ }
+ UnlockDisplay(dpy);
+ SyncHandle();
+ *timeoutp = rep.repeatDelay;
+ *intervalp = rep.repeatInterval;
+ return True;
+}
+
+Bool
+XkbSetServerInternalMods( Display * dpy,
+ unsigned deviceSpec,
+ unsigned affectReal,
+ unsigned realValues,
+ unsigned affectVirtual,
+ unsigned virtualValues)
+{
+ register xkbSetControlsReq *req;
+
+ if ((dpy->flags & XlibDisplayNoXkb) ||
+ (!dpy->xkb_info && !XkbUseExtension(dpy,NULL,NULL)))
+ return False;
+ LockDisplay(dpy);
+ req= _XkbGetSetControlsReq(dpy,dpy->xkb_info,deviceSpec);
+ req->affectInternalMods = affectReal;
+ req->internalMods = realValues;
+ req->affectInternalVMods= affectVirtual;
+ req->internalVMods= virtualValues;
+ req->changeCtrls = XkbInternalModsMask;
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return True;
+}
+
+Bool
+XkbSetIgnoreLockMods( Display * dpy,
+ unsigned int deviceSpec,
+ unsigned affectReal,
+ unsigned realValues,
+ unsigned affectVirtual,
+ unsigned virtualValues)
+{
+ register xkbSetControlsReq *req;
+
+ if ((dpy->flags & XlibDisplayNoXkb) ||
+ (!dpy->xkb_info && !XkbUseExtension(dpy,NULL,NULL)))
+ return False;
+ LockDisplay(dpy);
+ req= _XkbGetSetControlsReq(dpy,dpy->xkb_info,deviceSpec);
+ req->affectIgnoreLockMods= affectReal;
+ req->ignoreLockMods = realValues;
+ req->affectIgnoreLockVMods= affectVirtual;
+ req->ignoreLockVMods= virtualValues;
+ req->changeCtrls = XkbIgnoreLockModsMask;
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return True;
+}
+
+Bool
+XkbChangeEnabledControls( Display * dpy,
+ unsigned deviceSpec,
+ unsigned affect,
+ unsigned values)
+{
+ register xkbSetControlsReq *req;
+
+ if ((dpy->flags & XlibDisplayNoXkb) ||
+ (!dpy->xkb_info && !XkbUseExtension(dpy,NULL,NULL)))
+ return False;
+ LockDisplay(dpy);
+ req= _XkbGetSetControlsReq(dpy,dpy->xkb_info,deviceSpec);
+ req->affectEnabledCtrls= affect;
+ req->enabledCtrls= (affect&values);
+ req->changeCtrls = XkbControlsEnabledMask;
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return True;
+}
+
+Status
+XkbGetControls(Display *dpy, unsigned long which, XkbDescPtr xkb)
+{
+ register xkbGetControlsReq *req;
+ xkbGetControlsReply rep;
+ XkbControlsPtr ctrls;
+ XkbInfoPtr xkbi;
+
+ if ((dpy->flags & XlibDisplayNoXkb) ||
+ (!dpy->xkb_info && !XkbUseExtension(dpy,NULL,NULL)))
+ return BadAccess;
+ if ((!xkb) || (!which))
+ return BadMatch;
+
+ LockDisplay(dpy);
+ xkbi = dpy->xkb_info;
+ GetReq(kbGetControls, req);
+ if (!xkb->ctrls) {
+ xkb->ctrls = _XkbTypedCalloc(1,XkbControlsRec);
+ if (!xkb->ctrls) {
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return BadAlloc;
+ }
+ }
+ req->reqType = xkbi->codes->major_opcode;
+ req->xkbReqType = X_kbGetControls;
+ req->deviceSpec = xkb->device_spec;
+ if (!_XReply(dpy, (xReply *)&rep,
+ (SIZEOF(xkbGetControlsReply)-SIZEOF(xReply))>>2, xFalse)) {
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return BadImplementation;
+ }
+ if (xkb->device_spec==XkbUseCoreKbd)
+ xkb->device_spec= rep.deviceID;
+ ctrls= xkb->ctrls;
+ if (which&XkbControlsEnabledMask)
+ ctrls->enabled_ctrls = rep.enabledCtrls;
+ ctrls->num_groups= rep.numGroups;
+ if (which&XkbGroupsWrapMask)
+ ctrls->groups_wrap= rep.groupsWrap;
+ if (which&XkbInternalModsMask) {
+ ctrls->internal.mask = rep.internalMods;
+ ctrls->internal.real_mods = rep.internalRealMods;
+ ctrls->internal.vmods = rep.internalVMods;
+ }
+ if (which&XkbIgnoreLockModsMask) {
+ ctrls->ignore_lock.mask = rep.ignoreLockMods;
+ ctrls->ignore_lock.real_mods = rep.ignoreLockRealMods;
+ ctrls->ignore_lock.vmods = rep.ignoreLockVMods;
+ }
+ if (which&XkbRepeatKeysMask) {
+ ctrls->repeat_delay = rep.repeatDelay;
+ ctrls->repeat_interval = rep.repeatInterval;
+ }
+ if (which&XkbSlowKeysMask)
+ ctrls->slow_keys_delay = rep.slowKeysDelay;
+ if (which&XkbBounceKeysMask)
+ ctrls->debounce_delay = rep.debounceDelay;
+ if (which&XkbMouseKeysMask) {
+ ctrls->mk_dflt_btn = rep.mkDfltBtn;
+ }
+ if (which&XkbMouseKeysAccelMask) {
+ ctrls->mk_delay = rep.mkDelay;
+ ctrls->mk_interval = rep.mkInterval;
+ ctrls->mk_time_to_max = rep.mkTimeToMax;
+ ctrls->mk_max_speed = rep.mkMaxSpeed;
+ ctrls->mk_curve = rep.mkCurve;
+ }
+ if (which&XkbAccessXKeysMask)
+ ctrls->ax_options= rep.axOptions;
+ if (which&XkbStickyKeysMask) {
+ ctrls->ax_options &= ~XkbAX_SKOptionsMask;
+ ctrls->ax_options |= rep.axOptions & XkbAX_SKOptionsMask;
+ }
+ if (which&XkbAccessXFeedbackMask) {
+ ctrls->ax_options &= ~XkbAX_FBOptionsMask;
+ ctrls->ax_options |= rep.axOptions & XkbAX_FBOptionsMask;
+ }
+ if (which&XkbAccessXTimeoutMask) {
+ ctrls->ax_timeout = rep.axTimeout;
+ ctrls->axt_ctrls_mask = rep.axtCtrlsMask;
+ ctrls->axt_ctrls_values = rep.axtCtrlsValues;
+ ctrls->axt_opts_mask = rep.axtOptsMask;
+ ctrls->axt_opts_values= rep.axtOptsValues;
+ }
+ if (which&XkbPerKeyRepeatMask) {
+ memcpy(ctrls->per_key_repeat,rep.perKeyRepeat,
+ XkbPerKeyBitArraySize);
+ }
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return Success;
+}
+
+Bool
+XkbSetControls(Display *dpy, unsigned long which, XkbDescPtr xkb)
+{
+ register xkbSetControlsReq *req;
+ XkbControlsPtr ctrls;
+
+ if ((dpy->flags & XlibDisplayNoXkb) ||
+ (!dpy->xkb_info && !XkbUseExtension(dpy,NULL,NULL)))
+ return False;
+ if ((!xkb)||(!xkb->ctrls))
+ return False;
+
+ ctrls= xkb->ctrls;
+ LockDisplay(dpy);
+ req= _XkbGetSetControlsReq(dpy,dpy->xkb_info,xkb->device_spec);
+ req->changeCtrls = (CARD32)which;
+ if (which&XkbInternalModsMask) {
+ req->affectInternalMods= ~0;
+ req->internalMods= ctrls->internal.real_mods;
+ req->affectInternalVMods = ~0;
+ req->internalVMods= ctrls->internal.vmods;
+ }
+ if (which&XkbIgnoreLockModsMask) {
+ req->affectIgnoreLockMods= ~0;
+ req->ignoreLockMods= ctrls->ignore_lock.real_mods;
+ req->affectIgnoreLockVMods= ~0;
+ req->ignoreLockVMods= ctrls->ignore_lock.vmods;
+ }
+ if (which&XkbControlsEnabledMask) {
+ req->affectEnabledCtrls= XkbAllBooleanCtrlsMask;
+ req->enabledCtrls= ctrls->enabled_ctrls;
+ }
+ if (which&XkbRepeatKeysMask) {
+ req->repeatDelay = ctrls->repeat_delay;
+ req->repeatInterval = ctrls->repeat_interval;
+ }
+ if (which&XkbSlowKeysMask)
+ req->slowKeysDelay = ctrls->slow_keys_delay;
+ if (which&XkbBounceKeysMask)
+ req->debounceDelay = ctrls->debounce_delay;
+ if (which&XkbMouseKeysMask) {
+ req->mkDfltBtn = ctrls->mk_dflt_btn;
+ }
+ if (which&XkbGroupsWrapMask)
+ req->groupsWrap= ctrls->groups_wrap;
+ if (which&(XkbAccessXKeysMask|XkbStickyKeysMask|XkbAccessXFeedbackMask))
+ req->axOptions= ctrls->ax_options;
+ if (which&XkbMouseKeysAccelMask) {
+ req->mkDelay = ctrls->mk_delay;
+ req->mkInterval = ctrls->mk_interval;
+ req->mkTimeToMax = ctrls->mk_time_to_max;
+ req->mkMaxSpeed = ctrls->mk_max_speed;
+ req->mkCurve = ctrls->mk_curve;
+ }
+ if (which&XkbAccessXTimeoutMask) {
+ req->axTimeout = ctrls->ax_timeout;
+ req->axtCtrlsMask = ctrls->axt_ctrls_mask;
+ req->axtCtrlsValues = ctrls->axt_ctrls_values;
+ req->axtOptsMask = ctrls->axt_opts_mask;
+ req->axtOptsValues=ctrls->axt_opts_values;
+ }
+ if (which&XkbPerKeyRepeatMask) {
+ memcpy(req->perKeyRepeat,ctrls->per_key_repeat,
+ XkbPerKeyBitArraySize);
+ }
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return True;
+}
+
+/***====================================================================***/
+
+void
+XkbNoteControlsChanges( XkbControlsChangesPtr old,
+ XkbControlsNotifyEvent * new,
+ unsigned int wanted)
+{
+ old->changed_ctrls|= (new->changed_ctrls&wanted);
+ if (new->changed_ctrls&XkbControlsEnabledMask&wanted)
+ old->enabled_ctrls_changes^= new->enabled_ctrl_changes;
+ /* num_groups_changed?? */
+ return;
+}
diff --git a/libX11/src/xkb/XKBCvt.c b/libX11/src/xkb/XKBCvt.c
index a68778223..da74fc047 100644
--- a/libX11/src/xkb/XKBCvt.c
+++ b/libX11/src/xkb/XKBCvt.c
@@ -1,337 +1,337 @@
-/*
-
-Copyright 1988, 1989, 1998 The Open Group
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
-
-The above copyright notice and this permission notice shall be included
-in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
-IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR
-OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
-ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall
-not be used in advertising or otherwise to promote the sale, use or
-other dealings in this Software without prior written authorization
-from The Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include <stdio.h>
-#include <sys/types.h>
-#include <sys/stat.h>
-
-#include <X11/X.h>
-#include <X11/Xlib.h>
-#include "Xlibint.h"
-#include "Xlcint.h"
-#include "XlcPubI.h"
-#include "Ximint.h"
-#include <X11/Xutil.h>
-#include <X11/Xmd.h>
-#define XK_LATIN1
-#define XK_PUBLISHING
-#include <X11/keysym.h>
-#include <X11/extensions/XKBproto.h>
-#include "XKBlibint.h"
-#include <X11/Xlocale.h>
-#include <ctype.h>
-#include <X11/Xos.h>
-
-#ifdef __sgi_not_xconsortium
-#define XKB_EXTEND_LOOKUP_STRING
-#endif
-
-static int
-_XkbHandleSpecialSym(KeySym keysym, char *buffer, int nbytes, int *extra_rtrn)
-{
-
- /* try to convert to Latin-1, handling ctrl */
- if (!(((keysym >= XK_BackSpace) && (keysym <= XK_Clear)) ||
- (keysym == XK_Return) || (keysym == XK_Escape) ||
- (keysym == XK_KP_Space) || (keysym == XK_KP_Tab) ||
- (keysym == XK_KP_Enter) ||
- ((keysym >= XK_KP_Multiply) && (keysym <= XK_KP_9)) ||
- (keysym == XK_KP_Equal) ||
- (keysym == XK_Delete)))
- return 0;
-
- if (nbytes<1) {
- if (extra_rtrn)
- *extra_rtrn= 1;
- return 0;
- }
- /* if X keysym, convert to ascii by grabbing low 7 bits */
- if (keysym == XK_KP_Space)
- buffer[0] = XK_space & 0x7F; /* patch encoding botch */
- else if (keysym == XK_hyphen)
- buffer[0] = (char)(XK_minus & 0xFF); /* map to equiv character */
- else buffer[0] = (char)(keysym & 0x7F);
- return 1;
-}
-
-/*ARGSUSED*/
-static int
-_XkbKSToKnownSet ( XPointer priv,
- KeySym keysym,
- char * buffer,
- int nbytes,
- int * extra_rtrn)
-{
- char tbuf[8],*buf;
-
- if (extra_rtrn)
- *extra_rtrn= 0;
-
- /* convert "dead" diacriticals for dumb applications */
- if ( (keysym&0xffffff00)== 0xfe00 ) {
- switch ( keysym ) {
- case XK_dead_grave: keysym = XK_grave; break;
- case XK_dead_acute: keysym = XK_acute; break;
- case XK_dead_circumflex: keysym = XK_asciicircum; break;
- case XK_dead_tilde: keysym = XK_asciitilde; break;
- case XK_dead_macron: keysym = XK_macron; break;
- case XK_dead_breve: keysym = XK_breve; break;
- case XK_dead_abovedot: keysym = XK_abovedot; break;
- case XK_dead_diaeresis: keysym = XK_diaeresis; break;
- case XK_dead_abovering: keysym = XK_degree; break;
- case XK_dead_doubleacute: keysym = XK_doubleacute; break;
- case XK_dead_caron: keysym = XK_caron; break;
- case XK_dead_cedilla: keysym = XK_cedilla; break;
- case XK_dead_ogonek : keysym = XK_ogonek; break;
- case XK_dead_iota: keysym = XK_Greek_iota; break;
-#ifdef XK_KATAKANA
- case XK_dead_voiced_sound: keysym = XK_voicedsound; break;
- case XK_dead_semivoiced_sound:keysym = XK_semivoicedsound; break;
-#endif
- }
- }
-
- if (nbytes<1) buf= tbuf;
- else buf= buffer;
-
- if ((keysym&0xffffff00)==0xff00) {
- return _XkbHandleSpecialSym(keysym, buf, nbytes, extra_rtrn);
- }
- return _XimGetCharCode (priv, keysym, (unsigned char *)buf, nbytes);
-}
-
-typedef struct _XkbToKS {
- unsigned prefix;
- char *map;
-} XkbToKS;
-
-/*ARGSUSED*/
-static KeySym
-_XkbKnownSetToKS(XPointer priv,char *buffer,int nbytes,Status *status)
-{
- if (nbytes!=1)
- return NoSymbol;
- if (((buffer[0]&0x80)==0)&&(buffer[0]>=32))
- return buffer[0];
- else if ((buffer[0]&0x7f)>=32) {
- XkbToKS *map= (XkbToKS *)priv;
- if ( map ) {
- if ( map->map ) return map->prefix|map->map[buffer[0]&0x7f];
- else return map->prefix|buffer[0];
- }
- return buffer[0];
- }
- return NoSymbol;
-}
-
-static KeySym
-__XkbDefaultToUpper(KeySym sym)
-{
- KeySym lower,upper;
-
- XConvertCase(sym, &lower, &upper);
- return upper;
-}
-
-#ifdef XKB_EXTEND_LOOKUP_STRING
-static int
-Strcmp(char *str1, char *str2)
-{
- char str[256];
- char c, *s;
-
- /*
- * unchecked strings from the environment can end up here, so check
- * the length before copying.
- */
- if (strlen(str1) >= sizeof(str)) /* almost certain it's a mismatch */
- return 1;
-
- for (s = str; (c = *str1++); ) {
- if (isupper(c))
- c = tolower(c);
- *s++ = c;
- }
- *s = '\0';
- return (strcmp(str, str2));
-}
-#endif
-
-int
-_XkbGetConverters(const char *encoding_name, XkbConverters *cvt_rtrn)
-{
- if ( !cvt_rtrn ) return 0;
-
- cvt_rtrn->KSToMB = _XkbKSToKnownSet;
- cvt_rtrn->KSToMBPriv = _XimGetLocaleCode(encoding_name);
- cvt_rtrn->MBToKS = _XkbKnownSetToKS;
- cvt_rtrn->MBToKSPriv = NULL;
- cvt_rtrn->KSToUpper = __XkbDefaultToUpper;
- return 1;
-}
-
-/***====================================================================***/
-
-/*
- * The function _XkbGetCharset seems to be missnamed as what it seems to
- * be used for is to determine the encoding-name for the locale. ???
- */
-
-#ifdef XKB_EXTEND_LOOKUP_STRING
-
-/*
- * XKB_EXTEND_LOOKUP_STRING is not used by the SI. It is used by various
- * X Consortium/X Project Team members, so we leave it in the source as
- * an simplify integration by these companies.
- */
-
-#define CHARSET_FILE "/usr/lib/X11/input/charsets"
-static char *_XkbKnownLanguages = "c=ascii:da,de,en,es,fr,is,it,nl,no,pt,sv=iso8859-1:hu,pl,cs=iso8859-2:eo=iso8859-3:sp=iso8859-5:ar,ara=iso8859-6:el=iso8859-7:he=iso8859-8:tr=iso8859-9:lt,lv=iso8859-13:et,fi=iso8859-15:ru=koi8-r:uk=koi8-u:th,th_TH,th_TH.iso8859-11=iso8859-11:th_TH.TIS620=tis620:hy=armscii-8:vi=tcvn-5712:ka=georgian-academy:be,bg=microsoft-cp1251";
-
-char *
-_XkbGetCharset(void)
-{
- /*
- * PAGE USAGE TUNING: explicitly initialize to move these to data
- * instead of bss
- */
- static char buf[100] = { 0 };
- char lang[256];
- char *start,*tmp,*end,*next,*set;
- char *country,*charset;
- char *locale;
-
- tmp = getenv( "_XKB_CHARSET" );
- if ( tmp )
- return tmp;
- locale = setlocale(LC_CTYPE,NULL);
-
- if ( locale == NULL )
- return NULL;
-
- if (strlen(locale) >= sizeof(lang))
- return NULL;
-
- for (tmp = lang; *tmp = *locale++; tmp++) {
- if (isupper(*tmp))
- *tmp = tolower(*tmp);
- }
- country = strchr( lang, '_');
- if ( country ) {
- *country++ = '\0';
- charset = strchr( country, '.' );
- if ( charset ) *charset++ = '\0';
- if ( charset ) {
- strncpy(buf,charset,99);
- buf[99] = '\0';
- return buf;
- }
- }
- else {
- charset = NULL;
- }
-
- if ((tmp = getenv("_XKB_LOCALE_CHARSETS"))!=NULL) {
- start = _XkbAlloc(strlen(tmp) + 1);
- strcpy(start, tmp);
- tmp = start;
- } else {
- struct stat sbuf;
- FILE *file;
-#ifndef __UNIXOS2__
- char *cf = CHARSET_FILE;
-#else
- char *cf = __XOS2RedirRoot(CHARSET_FILE);
-#endif
-
-#ifndef S_ISREG
-# define S_ISREG(mode) (((mode) & S_IFMT) == S_IFREG)
-#endif
-
- if ( (stat(cf,&sbuf)==0) && S_ISREG(sbuf.st_mode) &&
- (file = fopen(cf,"r")) ) {
- tmp = _XkbAlloc(sbuf.st_size+1);
- if (tmp!=NULL) {
- sbuf.st_size = (long)fread(tmp,1,sbuf.st_size,file);
- tmp[sbuf.st_size] = '\0';
- }
- fclose(file);
- }
- }
-
- if ( tmp == NULL ) {
- tmp = _XkbAlloc(strlen(_XkbKnownLanguages) + 1);
- if (!tmp)
- return NULL;
- strcpy(tmp, _XkbKnownLanguages);
- }
- start = tmp;
- do {
- if ( (set=strchr(tmp,'=')) == NULL )
- break;
- *set++ = '\0';
- if ( (next=strchr(set,':')) != NULL )
- *next++ = '\0';
- while ( tmp && *tmp ) {
- if ( (end=strchr(tmp,',')) != NULL )
- *end++ = '\0';
- if ( Strcmp( tmp, lang ) == 0 ) {
- strncpy(buf,set,100);
- buf[99] = '\0';
- Xfree(start);
- return buf;
- }
- tmp = end;
- }
- tmp = next;
- } while ( tmp && *tmp );
- Xfree(start);
- return NULL;
-}
-#else
-char *
-_XkbGetCharset(void)
-{
- char *tmp;
- XLCd lcd;
-
- tmp = getenv( "_XKB_CHARSET" );
- if ( tmp )
- return tmp;
-
- lcd = _XlcCurrentLC();
- if ( lcd )
- return XLC_PUBLIC(lcd,encoding_name);
-
- return NULL;
-}
-#endif
-
+/*
+
+Copyright 1988, 1989, 1998 The Open Group
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
+
+The above copyright notice and this permission notice shall be included
+in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR
+OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
+ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group shall
+not be used in advertising or otherwise to promote the sale, use or
+other dealings in this Software without prior written authorization
+from The Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include <stdio.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+
+#include <X11/X.h>
+#include <X11/Xlib.h>
+#include "Xlibint.h"
+#include "Xlcint.h"
+#include "XlcPubI.h"
+#include "Ximint.h"
+#include <X11/Xutil.h>
+#include <X11/Xmd.h>
+#define XK_LATIN1
+#define XK_PUBLISHING
+#include <X11/keysym.h>
+#include <X11/extensions/XKBproto.h>
+#include "XKBlibint.h"
+#include <X11/Xlocale.h>
+#include <ctype.h>
+#include <X11/Xos.h>
+
+#ifdef __sgi_not_xconsortium
+#define XKB_EXTEND_LOOKUP_STRING
+#endif
+
+static int
+_XkbHandleSpecialSym(KeySym keysym, char *buffer, int nbytes, int *extra_rtrn)
+{
+
+ /* try to convert to Latin-1, handling ctrl */
+ if (!(((keysym >= XK_BackSpace) && (keysym <= XK_Clear)) ||
+ (keysym == XK_Return) || (keysym == XK_Escape) ||
+ (keysym == XK_KP_Space) || (keysym == XK_KP_Tab) ||
+ (keysym == XK_KP_Enter) ||
+ ((keysym >= XK_KP_Multiply) && (keysym <= XK_KP_9)) ||
+ (keysym == XK_KP_Equal) ||
+ (keysym == XK_Delete)))
+ return 0;
+
+ if (nbytes<1) {
+ if (extra_rtrn)
+ *extra_rtrn= 1;
+ return 0;
+ }
+ /* if X keysym, convert to ascii by grabbing low 7 bits */
+ if (keysym == XK_KP_Space)
+ buffer[0] = XK_space & 0x7F; /* patch encoding botch */
+ else if (keysym == XK_hyphen)
+ buffer[0] = (char)(XK_minus & 0xFF); /* map to equiv character */
+ else buffer[0] = (char)(keysym & 0x7F);
+ return 1;
+}
+
+/*ARGSUSED*/
+static int
+_XkbKSToKnownSet ( XPointer priv,
+ KeySym keysym,
+ char * buffer,
+ int nbytes,
+ int * extra_rtrn)
+{
+ char tbuf[8],*buf;
+
+ if (extra_rtrn)
+ *extra_rtrn= 0;
+
+ /* convert "dead" diacriticals for dumb applications */
+ if ( (keysym&0xffffff00)== 0xfe00 ) {
+ switch ( keysym ) {
+ case XK_dead_grave: keysym = XK_grave; break;
+ case XK_dead_acute: keysym = XK_acute; break;
+ case XK_dead_circumflex: keysym = XK_asciicircum; break;
+ case XK_dead_tilde: keysym = XK_asciitilde; break;
+ case XK_dead_macron: keysym = XK_macron; break;
+ case XK_dead_breve: keysym = XK_breve; break;
+ case XK_dead_abovedot: keysym = XK_abovedot; break;
+ case XK_dead_diaeresis: keysym = XK_diaeresis; break;
+ case XK_dead_abovering: keysym = XK_degree; break;
+ case XK_dead_doubleacute: keysym = XK_doubleacute; break;
+ case XK_dead_caron: keysym = XK_caron; break;
+ case XK_dead_cedilla: keysym = XK_cedilla; break;
+ case XK_dead_ogonek : keysym = XK_ogonek; break;
+ case XK_dead_iota: keysym = XK_Greek_iota; break;
+#ifdef XK_KATAKANA
+ case XK_dead_voiced_sound: keysym = XK_voicedsound; break;
+ case XK_dead_semivoiced_sound:keysym = XK_semivoicedsound; break;
+#endif
+ }
+ }
+
+ if (nbytes<1) buf= tbuf;
+ else buf= buffer;
+
+ if ((keysym&0xffffff00)==0xff00) {
+ return _XkbHandleSpecialSym(keysym, buf, nbytes, extra_rtrn);
+ }
+ return _XimGetCharCode (priv, keysym, (unsigned char *)buf, nbytes);
+}
+
+typedef struct _XkbToKS {
+ unsigned prefix;
+ char *map;
+} XkbToKS;
+
+/*ARGSUSED*/
+static KeySym
+_XkbKnownSetToKS(XPointer priv,char *buffer,int nbytes,Status *status)
+{
+ if (nbytes!=1)
+ return NoSymbol;
+ if (((buffer[0]&0x80)==0)&&(buffer[0]>=32))
+ return buffer[0];
+ else if ((buffer[0]&0x7f)>=32) {
+ XkbToKS *map= (XkbToKS *)priv;
+ if ( map ) {
+ if ( map->map ) return map->prefix|map->map[buffer[0]&0x7f];
+ else return map->prefix|buffer[0];
+ }
+ return buffer[0];
+ }
+ return NoSymbol;
+}
+
+static KeySym
+__XkbDefaultToUpper(KeySym sym)
+{
+ KeySym lower,upper;
+
+ XConvertCase(sym, &lower, &upper);
+ return upper;
+}
+
+#ifdef XKB_EXTEND_LOOKUP_STRING
+static int
+Strcmp(char *str1, char *str2)
+{
+ char str[256];
+ char c, *s;
+
+ /*
+ * unchecked strings from the environment can end up here, so check
+ * the length before copying.
+ */
+ if (strlen(str1) >= sizeof(str)) /* almost certain it's a mismatch */
+ return 1;
+
+ for (s = str; (c = *str1++); ) {
+ if (isupper(c))
+ c = tolower(c);
+ *s++ = c;
+ }
+ *s = '\0';
+ return (strcmp(str, str2));
+}
+#endif
+
+int
+_XkbGetConverters(const char *encoding_name, XkbConverters *cvt_rtrn)
+{
+ if ( !cvt_rtrn ) return 0;
+
+ cvt_rtrn->KSToMB = _XkbKSToKnownSet;
+ cvt_rtrn->KSToMBPriv = _XimGetLocaleCode(encoding_name);
+ cvt_rtrn->MBToKS = _XkbKnownSetToKS;
+ cvt_rtrn->MBToKSPriv = NULL;
+ cvt_rtrn->KSToUpper = __XkbDefaultToUpper;
+ return 1;
+}
+
+/***====================================================================***/
+
+/*
+ * The function _XkbGetCharset seems to be missnamed as what it seems to
+ * be used for is to determine the encoding-name for the locale. ???
+ */
+
+#ifdef XKB_EXTEND_LOOKUP_STRING
+
+/*
+ * XKB_EXTEND_LOOKUP_STRING is not used by the SI. It is used by various
+ * X Consortium/X Project Team members, so we leave it in the source as
+ * an simplify integration by these companies.
+ */
+
+#define CHARSET_FILE "/usr/lib/X11/input/charsets"
+static char *_XkbKnownLanguages = "c=ascii:da,de,en,es,fr,is,it,nl,no,pt,sv=iso8859-1:hu,pl,cs=iso8859-2:eo=iso8859-3:sp=iso8859-5:ar,ara=iso8859-6:el=iso8859-7:he=iso8859-8:tr=iso8859-9:lt,lv=iso8859-13:et,fi=iso8859-15:ru=koi8-r:uk=koi8-u:th,th_TH,th_TH.iso8859-11=iso8859-11:th_TH.TIS620=tis620:hy=armscii-8:vi=tcvn-5712:ka=georgian-academy:be,bg=microsoft-cp1251";
+
+char *
+_XkbGetCharset(void)
+{
+ /*
+ * PAGE USAGE TUNING: explicitly initialize to move these to data
+ * instead of bss
+ */
+ static char buf[100] = { 0 };
+ char lang[256];
+ char *start,*tmp,*end,*next,*set;
+ char *country,*charset;
+ char *locale;
+
+ tmp = getenv( "_XKB_CHARSET" );
+ if ( tmp )
+ return tmp;
+ locale = setlocale(LC_CTYPE,NULL);
+
+ if ( locale == NULL )
+ return NULL;
+
+ if (strlen(locale) >= sizeof(lang))
+ return NULL;
+
+ for (tmp = lang; *tmp = *locale++; tmp++) {
+ if (isupper(*tmp))
+ *tmp = tolower(*tmp);
+ }
+ country = strchr( lang, '_');
+ if ( country ) {
+ *country++ = '\0';
+ charset = strchr( country, '.' );
+ if ( charset ) *charset++ = '\0';
+ if ( charset ) {
+ strncpy(buf,charset,99);
+ buf[99] = '\0';
+ return buf;
+ }
+ }
+ else {
+ charset = NULL;
+ }
+
+ if ((tmp = getenv("_XKB_LOCALE_CHARSETS"))!=NULL) {
+ start = _XkbAlloc(strlen(tmp) + 1);
+ strcpy(start, tmp);
+ tmp = start;
+ } else {
+ struct stat sbuf;
+ FILE *file;
+#ifndef __UNIXOS2__
+ char *cf = CHARSET_FILE;
+#else
+ char *cf = __XOS2RedirRoot(CHARSET_FILE);
+#endif
+
+#ifndef S_ISREG
+# define S_ISREG(mode) (((mode) & S_IFMT) == S_IFREG)
+#endif
+
+ if ( (stat(cf,&sbuf)==0) && S_ISREG(sbuf.st_mode) &&
+ (file = fopen(cf,"r")) ) {
+ tmp = _XkbAlloc(sbuf.st_size+1);
+ if (tmp!=NULL) {
+ sbuf.st_size = (long)fread(tmp,1,sbuf.st_size,file);
+ tmp[sbuf.st_size] = '\0';
+ }
+ fclose(file);
+ }
+ }
+
+ if ( tmp == NULL ) {
+ tmp = _XkbAlloc(strlen(_XkbKnownLanguages) + 1);
+ if (!tmp)
+ return NULL;
+ strcpy(tmp, _XkbKnownLanguages);
+ }
+ start = tmp;
+ do {
+ if ( (set=strchr(tmp,'=')) == NULL )
+ break;
+ *set++ = '\0';
+ if ( (next=strchr(set,':')) != NULL )
+ *next++ = '\0';
+ while ( tmp && *tmp ) {
+ if ( (end=strchr(tmp,',')) != NULL )
+ *end++ = '\0';
+ if ( Strcmp( tmp, lang ) == 0 ) {
+ strncpy(buf,set,100);
+ buf[99] = '\0';
+ Xfree(start);
+ return buf;
+ }
+ tmp = end;
+ }
+ tmp = next;
+ } while ( tmp && *tmp );
+ Xfree(start);
+ return NULL;
+}
+#else
+char *
+_XkbGetCharset(void)
+{
+ char *tmp;
+ XLCd lcd;
+
+ tmp = getenv( "_XKB_CHARSET" );
+ if ( tmp )
+ return tmp;
+
+ lcd = _XlcCurrentLC();
+ if ( lcd )
+ return XLC_PUBLIC(lcd,encoding_name);
+
+ return NULL;
+}
+#endif
+
diff --git a/libX11/src/xkb/XKBExtDev.c b/libX11/src/xkb/XKBExtDev.c
index b762747e6..353e769bf 100644
--- a/libX11/src/xkb/XKBExtDev.c
+++ b/libX11/src/xkb/XKBExtDev.c
@@ -1,819 +1,819 @@
-/************************************************************
-Copyright (c) 1995 by Silicon Graphics Computer Systems, Inc.
-
-Permission to use, copy, modify, and distribute this
-software and its documentation for any purpose and without
-fee is hereby granted, provided that the above copyright
-notice appear in all copies and that both that copyright
-notice and this permission notice appear in supporting
-documentation, and that the name of Silicon Graphics not be
-used in advertising or publicity pertaining to distribution
-of the software without specific prior written permission.
-Silicon Graphics makes no representation about the suitability
-of this software for any purpose. It is provided "as is"
-without any express or implied warranty.
-
-SILICON GRAPHICS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS
-SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
-AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON
-GRAPHICS BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL
-DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
-DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
-OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH
-THE USE OR PERFORMANCE OF THIS SOFTWARE.
-
-********************************************************/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include <stdio.h>
-#define NEED_MAP_READERS
-#include "Xlibint.h"
-#include <X11/extensions/XKBproto.h>
-#include "XKBlibint.h"
-#include <X11/extensions/XI.h>
-
-/***====================================================================***/
-
-extern void
-XkbNoteDeviceChanges( XkbDeviceChangesPtr old,
- XkbExtensionDeviceNotifyEvent * new,
- unsigned int wanted)
-{
- if ((!old)||(!new)||(!wanted)||((new->reason&wanted)==0))
- return;
- if ((wanted&new->reason)&XkbXI_ButtonActionsMask) {
- if (old->changed&XkbXI_ButtonActionsMask) {
- int first,last,newLast;
- if (new->first_btn<old->first_btn)
- first= new->first_btn;
- else first= old->first_btn;
- last= old->first_btn+old->num_btns-1;
- newLast= new->first_btn+new->num_btns-1;
- if (newLast>last)
- last= newLast;
- old->first_btn= first;
- old->num_btns= (last-first)+1;
- }
- else {
- old->changed|= XkbXI_ButtonActionsMask;
- old->first_btn= new->first_btn;
- old->num_btns= new->num_btns;
- }
- }
- if ((wanted&new->reason)&XkbXI_IndicatorsMask) {
- XkbDeviceLedChangesPtr this;
- if (old->changed&XkbXI_IndicatorsMask) {
- XkbDeviceLedChangesPtr found;
- found= NULL;
- for (this= &old->leds;this&&(!found);this=this->next) {
- if ((this->led_class==new->led_class)&&
- (this->led_id==new->led_id)) {
- found= this;
- }
- }
- if (!found) {
- found= _XkbTypedCalloc(1,XkbDeviceLedChangesRec);
- if (!found)
- return;
- found->next= old->leds.next;
- found->led_class= new->led_class;
- found->led_id= new->led_id;
- old->leds.next= found;
- }
- if ((wanted&new->reason)&XkbXI_IndicatorNamesMask)
- found->defined= new->leds_defined;
- }
- else {
- old->changed|= ((wanted&new->reason)&XkbXI_IndicatorsMask);
- old->leds.led_class= new->led_class;
- old->leds.led_id= new->led_id;
- old->leds.defined= new->leds_defined;
- if (old->leds.next) {
- XkbDeviceLedChangesPtr next;
- for (this=old->leds.next;this;this=next) {
- next= this->next;
- _XkbFree(this);
- }
- old->leds.next= NULL;
- }
- }
- }
- return;
-}
-
-/***====================================================================***/
-
-static Status
-_XkbReadDeviceLedInfo( XkbReadBufferPtr buf,
- unsigned present,
- XkbDeviceInfoPtr devi)
-{
-register unsigned i,bit;
-XkbDeviceLedInfoPtr devli;
-xkbDeviceLedsWireDesc * wireli;
-
- wireli= _XkbGetTypedRdBufPtr(buf,1,xkbDeviceLedsWireDesc);
- if (!wireli)
- return BadLength;
- devli= XkbAddDeviceLedInfo(devi,wireli->ledClass,wireli->ledID);
- if (!devli)
- return BadAlloc;
- devli->phys_indicators= wireli->physIndicators;
-
- if (present&XkbXI_IndicatorStateMask)
- devli->state= wireli->state;
-
- if (present&XkbXI_IndicatorNamesMask) {
- devli->names_present= wireli->namesPresent;
- if (devli->names_present) {
- for (i=0,bit=1;i<XkbNumIndicators;i++,bit<<=1) {
- if (wireli->namesPresent&bit) {
- if (!_XkbCopyFromReadBuffer(buf,(char *)&devli->names[i],4))
- return BadLength;
- }
- }
- }
- }
-
- if (present&XkbXI_IndicatorMapsMask) {
- devli->maps_present= wireli->mapsPresent;
- if (devli->maps_present) {
- XkbIndicatorMapPtr im;
- xkbIndicatorMapWireDesc * wireim;
- for (i=0,bit=1;i<XkbNumIndicators;i++,bit<<=1) {
- if (wireli->mapsPresent&bit) {
- wireim= _XkbGetTypedRdBufPtr(buf,1,xkbIndicatorMapWireDesc);
- if (!wireim)
- return BadAlloc;
- im= &devli->maps[i];
- im->flags= wireim->flags;
- im->which_groups= wireim->whichGroups;
- im->groups= wireim->groups;
- im->which_mods= wireim->whichMods;
- im->mods.mask= wireim->mods;
- im->mods.real_mods= wireim->realMods;
- im->mods.vmods= wireim->virtualMods;
- im->ctrls= wireim->ctrls;
- }
- }
- }
- }
- return Success;
-}
-
-static Status
-_XkbReadGetDeviceInfoReply( Display * dpy,
- xkbGetDeviceInfoReply * rep,
- XkbDeviceInfoPtr devi)
-{
-XkbReadBufferRec buf;
-XkbAction * act;
-int tmp;
-
- if (!_XkbInitReadBuffer(dpy,&buf,(int)rep->length*4))
- return BadAlloc;
-
- if ((rep->totalBtns>0)&&(rep->totalBtns!=devi->num_btns)) {
- tmp= XkbResizeDeviceButtonActions(devi,rep->totalBtns);
- if (tmp!=Success)
- return tmp;
- }
- if (rep->nBtnsWanted>0) {
- act= &devi->btn_acts[rep->firstBtnWanted];
- bzero((char *)act,(rep->nBtnsWanted*sizeof(XkbAction)));
- }
- if (devi->name!=NULL)
- _XkbFree(devi->name);
- if (!_XkbGetReadBufferCountedString(&buf,&devi->name))
- goto BAILOUT;
- if (rep->nBtnsRtrn>0) {
- int size;
- act= &devi->btn_acts[rep->firstBtnRtrn];
- size= rep->nBtnsRtrn*SIZEOF(xkbActionWireDesc);
- if (!_XkbCopyFromReadBuffer(&buf,(char *)act,size))
- goto BAILOUT;
- }
- if (rep->nDeviceLedFBs>0) {
- register int i;
- for (i=0;i<rep->nDeviceLedFBs;i++) {
- if ((tmp= _XkbReadDeviceLedInfo(&buf,rep->present,devi))!=Success)
- return tmp;
- }
- }
- tmp= _XkbFreeReadBuffer(&buf);
- if (tmp)
- fprintf(stderr,"GetDeviceInfo! Bad length (%d extra bytes)\n",tmp);
- if (tmp || buf.error)
- return BadLength;
- return Success;
-BAILOUT:
- _XkbFreeReadBuffer(&buf);
- return BadLength;
-}
-
-XkbDeviceInfoPtr
-XkbGetDeviceInfo( Display * dpy,
- unsigned which,
- unsigned deviceSpec,
- unsigned class,
- unsigned id)
-{
- register xkbGetDeviceInfoReq * req;
- xkbGetDeviceInfoReply rep;
- Status status;
- XkbDeviceInfoPtr devi;
-
- if ((dpy->flags & XlibDisplayNoXkb) ||
- (!dpy->xkb_info && !XkbUseExtension(dpy,NULL,NULL)))
- return NULL;
- LockDisplay(dpy);
- GetReq(kbGetDeviceInfo, req);
- req->reqType = dpy->xkb_info->codes->major_opcode;
- req->xkbReqType = X_kbGetDeviceInfo;
- req->deviceSpec = deviceSpec;
- req->wanted= which;
- req->allBtns= ((which&XkbXI_ButtonActionsMask)!=0);
- req->firstBtn= req->nBtns= 0;
- req->ledClass= class;
- req->ledID= id;
- if (!_XReply(dpy, (xReply *)&rep, 0, xFalse)) {
- UnlockDisplay(dpy);
- SyncHandle();
- return NULL;
- }
- devi= XkbAllocDeviceInfo(rep.deviceID,rep.totalBtns,rep.nDeviceLedFBs);
- if (devi) {
- devi->supported= rep.supported;
- devi->unsupported= rep.unsupported;
- devi->type= rep.devType;
- devi->has_own_state= rep.hasOwnState;
- devi->dflt_kbd_fb = rep.dfltKbdFB;
- devi->dflt_led_fb = rep.dfltLedFB;
- status= _XkbReadGetDeviceInfoReply(dpy,&rep,devi);
- if (status!=Success) {
- XkbFreeDeviceInfo(devi,XkbXI_AllDeviceFeaturesMask,True);
- devi= NULL;
- }
- }
- UnlockDisplay(dpy);
- SyncHandle();
- return devi;
-}
-
-Status
-XkbGetDeviceInfoChanges( Display * dpy,
- XkbDeviceInfoPtr devi,
- XkbDeviceChangesPtr changes)
-{
- register xkbGetDeviceInfoReq * req;
- xkbGetDeviceInfoReply rep;
- Status status;
-
- if ((dpy->flags & XlibDisplayNoXkb) ||
- (!dpy->xkb_info && !XkbUseExtension(dpy,NULL,NULL)))
- return BadMatch;
- if ((changes->changed&XkbXI_AllDeviceFeaturesMask)==0)
- return Success;
- changes->changed&= ~XkbXI_AllDeviceFeaturesMask;
- status= Success;
- LockDisplay(dpy);
- while ((changes->changed)&&(status==Success)) {
- GetReq(kbGetDeviceInfo, req);
- req->reqType = dpy->xkb_info->codes->major_opcode;
- req->xkbReqType = X_kbGetDeviceInfo;
- req->deviceSpec = devi->device_spec;
- req->wanted= changes->changed;
- req->allBtns= False;
- if (changes->changed&XkbXI_ButtonActionsMask) {
- req->firstBtn= changes->first_btn;
- req->nBtns= changes->num_btns;
- changes->changed&= ~XkbXI_ButtonActionsMask;
- }
- else req->firstBtn= req->nBtns= 0;
- if (changes->changed&XkbXI_IndicatorsMask) {
- req->ledClass= changes->leds.led_class;
- req->ledID= changes->leds.led_id;
- if (changes->leds.next==NULL)
- changes->changed&= ~XkbXI_IndicatorsMask;
- else {
- XkbDeviceLedChangesPtr next;
- next= changes->leds.next;
- changes->leds= *next;
- _XkbFree(next);
- }
- }
- else {
- req->ledClass= XkbDfltXIClass;
- req->ledID= XkbDfltXIId;
- }
- if (!_XReply(dpy, (xReply *)&rep, 0, xFalse)) {
- status= BadLength;
- break;
- }
- devi->supported|= rep.supported;
- devi->unsupported|= rep.unsupported;
- devi->type= rep.devType;
- status= _XkbReadGetDeviceInfoReply(dpy,&rep,devi);
- }
- UnlockDisplay(dpy);
- SyncHandle();
- return status;
-}
-
-Status
-XkbGetDeviceButtonActions( Display * dpy,
- XkbDeviceInfoPtr devi,
- Bool all,
- unsigned int first,
- unsigned int num)
-{
- register xkbGetDeviceInfoReq * req;
- xkbGetDeviceInfoReply rep;
- Status status;
-
- if ((dpy->flags & XlibDisplayNoXkb) ||
- (!dpy->xkb_info && !XkbUseExtension(dpy,NULL,NULL)))
- return BadMatch;
- if (!devi)
- return BadValue;
- LockDisplay(dpy);
- GetReq(kbGetDeviceInfo, req);
- req->reqType = dpy->xkb_info->codes->major_opcode;
- req->xkbReqType = X_kbGetDeviceInfo;
- req->deviceSpec = devi->device_spec;
- req->wanted= XkbXI_ButtonActionsMask;
- req->allBtns= all;
- req->firstBtn= first;
- req->nBtns= num;
- req->ledClass= XkbDfltXIClass;
- req->ledID= XkbDfltXIId;
- if (!_XReply(dpy, (xReply *)&rep, 0, xFalse)) {
- UnlockDisplay(dpy);
- SyncHandle();
- return BadLength;
- }
- devi->type= rep.devType;
- devi->supported= rep.supported;
- devi->unsupported= rep.unsupported;
- status= _XkbReadGetDeviceInfoReply(dpy,&rep,devi);
- UnlockDisplay(dpy);
- SyncHandle();
- return status;
-}
-
-Status
-XkbGetDeviceLedInfo( Display * dpy,
- XkbDeviceInfoPtr devi,
- unsigned int ledClass,
- unsigned int ledId,
- unsigned int which)
-{
- register xkbGetDeviceInfoReq * req;
- xkbGetDeviceInfoReply rep;
- Status status;
-
- if ((dpy->flags & XlibDisplayNoXkb) ||
- (!dpy->xkb_info && !XkbUseExtension(dpy,NULL,NULL)))
- return BadMatch;
- if (((which&XkbXI_IndicatorsMask)==0)||(which&(~XkbXI_IndicatorsMask)))
- return BadMatch;
- if (!devi)
- return BadValue;
- LockDisplay(dpy);
- GetReq(kbGetDeviceInfo, req);
- req->reqType = dpy->xkb_info->codes->major_opcode;
- req->xkbReqType = X_kbGetDeviceInfo;
- req->deviceSpec = devi->device_spec;
- req->wanted= which;
- req->allBtns= False;
- req->firstBtn= req->nBtns= 0;
- req->ledClass= ledClass;
- req->ledID= ledId;
- if (!_XReply(dpy, (xReply *)&rep, 0, xFalse)) {
- UnlockDisplay(dpy);
- SyncHandle();
- return BadLength;
- }
- devi->type= rep.devType;
- devi->supported= rep.supported;
- devi->unsupported= rep.unsupported;
- status= _XkbReadGetDeviceInfoReply(dpy,&rep,devi);
- UnlockDisplay(dpy);
- SyncHandle();
- return status;
-}
-
-/***====================================================================***/
-
-typedef struct _LedInfoStuff {
- Bool used;
- XkbDeviceLedInfoPtr devli;
-} LedInfoStuff;
-
-typedef struct _SetLedStuff {
- unsigned wanted;
- int num_info;
- int dflt_class;
- LedInfoStuff * dflt_kbd_fb;
- LedInfoStuff * dflt_led_fb;
- LedInfoStuff * info;
-} SetLedStuff;
-
-static void
-_InitLedStuff(SetLedStuff *stuff,unsigned wanted,XkbDeviceInfoPtr devi)
-{
-int i;
-register XkbDeviceLedInfoPtr devli;
-
- bzero(stuff,sizeof(SetLedStuff));
- stuff->wanted= wanted;
- stuff->dflt_class= XkbXINone;
- if ((devi->num_leds<1)||((wanted&XkbXI_IndicatorsMask)==0))
- return;
- stuff->info= _XkbTypedCalloc(devi->num_leds,LedInfoStuff);
- if (!stuff->info)
- return;
- stuff->num_info= devi->num_leds;
- for (devli=&devi->leds[0],i=0;i<devi->num_leds;i++,devli++) {
- stuff->info[i].devli= devli;
- if (devli->led_class==KbdFeedbackClass) {
- stuff->dflt_class= KbdFeedbackClass;
- if (stuff->dflt_kbd_fb==NULL)
- stuff->dflt_kbd_fb= &stuff->info[i];
- }
- else if (devli->led_class==LedFeedbackClass) {
- if (stuff->dflt_class==XkbXINone)
- stuff->dflt_class= LedFeedbackClass;
- if (stuff->dflt_led_fb==NULL)
- stuff->dflt_led_fb= &stuff->info[i];
- }
- }
- return;
-}
-
-static void
-_FreeLedStuff(SetLedStuff *stuff)
-{
- if ((stuff->num_info>0)&&(stuff->info!=NULL))
- _XkbFree(stuff->info);
- bzero(stuff,sizeof(SetLedStuff));
- return;
-}
-
-static int
-_XkbSizeLedInfo(unsigned changed,XkbDeviceLedInfoPtr devli)
-{
-register int i,size;
-register unsigned bit,namesNeeded,mapsNeeded;
-
- size= SIZEOF(xkbDeviceLedsWireDesc);
- namesNeeded= mapsNeeded= 0;
- if (changed&XkbXI_IndicatorNamesMask)
- namesNeeded= devli->names_present;
- if (changed&XkbXI_IndicatorMapsMask)
- mapsNeeded= devli->maps_present;
- if ((namesNeeded)||(mapsNeeded)) {
- for (i=0,bit=1;i<XkbNumIndicators;i++,bit<<=1) {
- if (namesNeeded&bit)
- size+= 4; /* atoms are 4 bytes on the wire */
- if (mapsNeeded&bit)
- size+= SIZEOF(xkbIndicatorMapWireDesc);
- }
- }
- return size;
-}
-
-static Bool
-_SizeMatches( SetLedStuff * stuff,
- XkbDeviceLedChangesPtr changes,
- int * sz_rtrn,
- int * nleds_rtrn)
-{
-int i,nMatch,class,id;
-LedInfoStuff * linfo;
-Bool match;
-
- nMatch= 0;
- class= changes->led_class;
- id= changes->led_id;
- if (class==XkbDfltXIClass)
- class= stuff->dflt_class;
- for (i=0,linfo=&stuff->info[0];i<stuff->num_info;i++,linfo++) {
- XkbDeviceLedInfoPtr devli;
- LedInfoStuff * dflt;
-
- devli= linfo->devli;
- match= ((class==devli->led_class)||(class==XkbAllXIClasses));
- if (devli->led_class==KbdFeedbackClass) dflt= stuff->dflt_kbd_fb;
- else dflt= stuff->dflt_led_fb;
- match = (match && (id == devli->led_id)) ||
- (id == XkbAllXIIds) ||
- ((id == XkbDfltXIId) &&
- (linfo == dflt));
- if (match) {
- if (!linfo->used) {
- *sz_rtrn+= _XkbSizeLedInfo(stuff->wanted,devli);
- *nleds_rtrn+= 1;
- linfo->used= True;
- if ((class!=XkbAllXIClasses)&&(id!=XkbAllXIIds))
- return True;
- }
- nMatch++;
- linfo->used= True;
- }
- }
- return (nMatch>0);
-}
-
-/***====================================================================***/
-
-
-static Status
-_XkbSetDeviceInfoSize( XkbDeviceInfoPtr devi,
- XkbDeviceChangesPtr changes,
- SetLedStuff * stuff,
- int * sz_rtrn,
- int * num_leds_rtrn)
-{
- *sz_rtrn= 0;
- if ((changes->changed&XkbXI_ButtonActionsMask)&&(changes->num_btns>0)) {
- if (!XkbXI_LegalDevBtn(devi,(changes->first_btn+changes->num_btns-1)))
- return BadMatch;
- *sz_rtrn+= changes->num_btns*SIZEOF(xkbActionWireDesc);
- }
- else {
- changes->changed&= ~XkbXI_ButtonActionsMask;
- changes->first_btn= changes->num_btns= 0;
- }
- if ((changes->changed&XkbXI_IndicatorsMask)&&
- XkbLegalXILedClass(changes->leds.led_class)) {
- XkbDeviceLedChangesPtr leds;
-
- for (leds=&changes->leds;leds!=NULL;leds= leds->next) {
- if (!_SizeMatches(stuff,leds,sz_rtrn,num_leds_rtrn))
- return BadMatch;
- }
- }
- else {
- changes->changed&= ~XkbXI_IndicatorsMask;
- *num_leds_rtrn= 0;
- }
- return Success;
-}
-
-static char *
-_XkbWriteLedInfo(char *wire,unsigned changed,XkbDeviceLedInfoPtr devli)
-{
-register int i;
-register unsigned bit,namesNeeded,mapsNeeded;
-xkbDeviceLedsWireDesc * lwire;
-
- namesNeeded= mapsNeeded= 0;
- if (changed&XkbXI_IndicatorNamesMask)
- namesNeeded= devli->names_present;
- if (changed&XkbXI_IndicatorMapsMask)
- mapsNeeded= devli->maps_present;
-
- lwire= (xkbDeviceLedsWireDesc *)wire;
- lwire->ledClass= devli->led_class;
- lwire->ledID= devli->led_id;
- lwire->namesPresent= namesNeeded;
- lwire->mapsPresent= mapsNeeded;
- lwire->physIndicators= devli->phys_indicators;
- lwire->state= devli->state;
- wire= (char *)&lwire[1];
- if (namesNeeded) {
- CARD32 *awire;
- awire= (CARD32 *)wire;
- for (i=0,bit=1;i<XkbNumIndicators;i++,bit<<=1) {
- if (namesNeeded&bit) {
- *awire= (CARD32)devli->names[i];
- awire++;
- }
- }
- wire= (char *)awire;
- }
- if (mapsNeeded) {
- xkbIndicatorMapWireDesc *mwire;
-
- mwire= (xkbIndicatorMapWireDesc *)wire;
- for (i=0,bit=1;i<XkbNumIndicators;i++,bit<<=1) {
- if (mapsNeeded&bit) {
- XkbIndicatorMapPtr map;
- map= &devli->maps[i];
- mwire->flags= map->flags;
- mwire->whichGroups= map->which_groups;
- mwire->groups= map->groups;
- mwire->whichMods= map->which_mods;
- mwire->mods= map->mods.mask;
- mwire->realMods= map->mods.real_mods;
- mwire->virtualMods= map->mods.vmods;
- mwire->ctrls= map->ctrls;
- mwire++;
- }
- }
- wire= (char *)mwire;
- }
- return wire;
-}
-
-
-static int
-_XkbWriteSetDeviceInfo( char * wire,
- XkbDeviceChangesPtr changes,
- SetLedStuff * stuff,
- XkbDeviceInfoPtr devi)
-{
-char *start;
-
- start= wire;
- if (changes->changed&XkbXI_ButtonActionsMask) {
- int size;
- size= changes->num_btns*SIZEOF(xkbActionWireDesc);
- memcpy(wire,(char *)&devi->btn_acts[changes->first_btn],size);
- wire+= size;
- }
- if (changes->changed&XkbXI_IndicatorsMask) {
- register int i;
- register LedInfoStuff *linfo;
-
- for (i=0,linfo=&stuff->info[0];i<stuff->num_info;i++,linfo++) {
- if (linfo->used) {
- register char *new_wire;
- new_wire= _XkbWriteLedInfo(wire,stuff->wanted,linfo->devli);
- if (!new_wire)
- return wire-start;
- wire= new_wire;
- }
- }
- }
- return wire-start;
-}
-
-Bool
-XkbSetDeviceInfo( Display * dpy,
- unsigned which,
- XkbDeviceInfoPtr devi)
-{
- register xkbSetDeviceInfoReq *req;
- Status ok = 0;
- int size,nLeds;
- XkbInfoPtr xkbi;
- XkbDeviceChangesRec changes;
- SetLedStuff lstuff;
-
- if ((dpy->flags & XlibDisplayNoXkb) ||
- (!dpy->xkb_info && !XkbUseExtension(dpy,NULL,NULL)))
- return False;
- if ((!devi) || (which&(~XkbXI_AllDeviceFeaturesMask)) ||
- ((which&XkbXI_ButtonActionsMask)&&(!XkbXI_DevHasBtnActs(devi)))||
- ((which&XkbXI_IndicatorsMask)&&(!XkbXI_DevHasLeds(devi))))
- return False;
-
- bzero((char *)&changes,sizeof(XkbDeviceChangesRec));
- changes.changed= which;
- changes.first_btn= 0;
- changes.num_btns= devi->num_btns;
- changes.leds.led_class= XkbAllXIClasses;
- changes.leds.led_id= XkbAllXIIds;
- changes.leds.defined= 0;
- size= nLeds= 0;
- _InitLedStuff(&lstuff,changes.changed,devi);
- if (_XkbSetDeviceInfoSize(devi,&changes,&lstuff,&size,&nLeds)!=Success)
- return False;
- LockDisplay(dpy);
- xkbi = dpy->xkb_info;
- GetReq(kbSetDeviceInfo, req);
- req->length+= size/4;
- req->reqType= xkbi->codes->major_opcode;
- req->xkbReqType= X_kbSetDeviceInfo;
- req->deviceSpec= devi->device_spec;
- req->firstBtn= changes.first_btn;
- req->nBtns= changes.num_btns;
- req->change= changes.changed;
- req->nDeviceLedFBs= nLeds;
- if (size>0) {
- char * wire;
- BufAlloc(char *,wire,size);
- ok= (wire!=NULL)&&
- (_XkbWriteSetDeviceInfo(wire,&changes,&lstuff,devi)==size);
- }
- UnlockDisplay(dpy);
- SyncHandle();
- _FreeLedStuff(&lstuff);
- /* 12/11/95 (ef) -- XXX!! should clear changes here */
- return ok;
-}
-
-Bool
-XkbChangeDeviceInfo( Display * dpy,
- XkbDeviceInfoPtr devi,
- XkbDeviceChangesPtr changes)
-{
- register xkbSetDeviceInfoReq *req;
- Status ok = 0;
- int size,nLeds;
- XkbInfoPtr xkbi;
- SetLedStuff lstuff;
-
- if ((dpy->flags & XlibDisplayNoXkb) ||
- (!dpy->xkb_info && !XkbUseExtension(dpy,NULL,NULL)))
- return False;
- if ((!devi) || (changes->changed&(~XkbXI_AllDeviceFeaturesMask)) ||
- ((changes->changed&XkbXI_ButtonActionsMask)&&
- (!XkbXI_DevHasBtnActs(devi)))||
- ((changes->changed&XkbXI_IndicatorsMask)&&(!XkbXI_DevHasLeds(devi))))
- return False;
-
- size= nLeds= 0;
- _InitLedStuff(&lstuff,changes->changed,devi);
- if (_XkbSetDeviceInfoSize(devi,changes,&lstuff,&size,&nLeds)!=Success)
- return False;
- LockDisplay(dpy);
- xkbi = dpy->xkb_info;
- GetReq(kbSetDeviceInfo, req);
- req->length+= size/4;
- req->reqType= xkbi->codes->major_opcode;
- req->xkbReqType= X_kbSetDeviceInfo;
- req->deviceSpec= devi->device_spec;
- req->firstBtn= changes->first_btn;
- req->nBtns= changes->num_btns;
- req->change= changes->changed;
- req->nDeviceLedFBs= nLeds;
- if (size>0) {
- char * wire;
- BufAlloc(char *,wire,size);
- ok= (wire!=NULL)&&
- (_XkbWriteSetDeviceInfo(wire,changes,&lstuff,devi)==size);
- }
- UnlockDisplay(dpy);
- SyncHandle();
- _FreeLedStuff(&lstuff);
- /* 12/11/95 (ef) -- XXX!! should clear changes here */
- return ok;
-}
-
-Bool
-XkbSetDeviceLedInfo( Display * dpy,
- XkbDeviceInfoPtr devi,
- unsigned ledClass,
- unsigned ledID,
- unsigned which)
-{
- return False;
-}
-
-Bool
-XkbSetDeviceButtonActions( Display * dpy,
- XkbDeviceInfoPtr devi,
- unsigned int first,
- unsigned int nBtns)
-{
- register xkbSetDeviceInfoReq *req;
- Status ok = 0;
- int size,nLeds;
- XkbInfoPtr xkbi;
- XkbDeviceChangesRec changes;
- SetLedStuff lstuff;
-
- if ((dpy->flags & XlibDisplayNoXkb) ||
- (!dpy->xkb_info && !XkbUseExtension(dpy,NULL,NULL)))
- return False;
- if ((!devi)||(!XkbXI_DevHasBtnActs(devi))||(first+nBtns>devi->num_btns))
- return False;
- if (nBtns==0)
- return True;
-
- bzero((char *)&changes,sizeof(XkbDeviceChangesRec));
- changes.changed= XkbXI_ButtonActionsMask;
- changes.first_btn= first;
- changes.num_btns= nBtns;
- changes.leds.led_class= XkbXINone;
- changes.leds.led_id= XkbXINone;
- changes.leds.defined= 0;
- size= nLeds= 0;
- if (_XkbSetDeviceInfoSize(devi,&changes,NULL,&size,&nLeds)!=Success)
- return False;
- LockDisplay(dpy);
- xkbi = dpy->xkb_info;
- GetReq(kbSetDeviceInfo, req);
- req->length+= size/4;
- req->reqType= xkbi->codes->major_opcode;
- req->xkbReqType= X_kbSetDeviceInfo;
- req->deviceSpec= devi->device_spec;
- req->firstBtn= changes.first_btn;
- req->nBtns= changes.num_btns;
- req->change= changes.changed;
- req->nDeviceLedFBs= nLeds;
- if (size>0) {
- char * wire;
- BufAlloc(char *,wire,size);
- ok= (wire!=NULL)&&
- (_XkbWriteSetDeviceInfo(wire,&changes,&lstuff,devi)==size);
- }
- UnlockDisplay(dpy);
- SyncHandle();
- return ok;
-}
+/************************************************************
+Copyright (c) 1995 by Silicon Graphics Computer Systems, Inc.
+
+Permission to use, copy, modify, and distribute this
+software and its documentation for any purpose and without
+fee is hereby granted, provided that the above copyright
+notice appear in all copies and that both that copyright
+notice and this permission notice appear in supporting
+documentation, and that the name of Silicon Graphics not be
+used in advertising or publicity pertaining to distribution
+of the software without specific prior written permission.
+Silicon Graphics makes no representation about the suitability
+of this software for any purpose. It is provided "as is"
+without any express or implied warranty.
+
+SILICON GRAPHICS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS
+SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
+AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON
+GRAPHICS BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL
+DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
+DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
+OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH
+THE USE OR PERFORMANCE OF THIS SOFTWARE.
+
+********************************************************/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include <stdio.h>
+#define NEED_MAP_READERS
+#include "Xlibint.h"
+#include <X11/extensions/XKBproto.h>
+#include "XKBlibint.h"
+#include <X11/extensions/XI.h>
+
+/***====================================================================***/
+
+extern void
+XkbNoteDeviceChanges( XkbDeviceChangesPtr old,
+ XkbExtensionDeviceNotifyEvent * new,
+ unsigned int wanted)
+{
+ if ((!old)||(!new)||(!wanted)||((new->reason&wanted)==0))
+ return;
+ if ((wanted&new->reason)&XkbXI_ButtonActionsMask) {
+ if (old->changed&XkbXI_ButtonActionsMask) {
+ int first,last,newLast;
+ if (new->first_btn<old->first_btn)
+ first= new->first_btn;
+ else first= old->first_btn;
+ last= old->first_btn+old->num_btns-1;
+ newLast= new->first_btn+new->num_btns-1;
+ if (newLast>last)
+ last= newLast;
+ old->first_btn= first;
+ old->num_btns= (last-first)+1;
+ }
+ else {
+ old->changed|= XkbXI_ButtonActionsMask;
+ old->first_btn= new->first_btn;
+ old->num_btns= new->num_btns;
+ }
+ }
+ if ((wanted&new->reason)&XkbXI_IndicatorsMask) {
+ XkbDeviceLedChangesPtr this;
+ if (old->changed&XkbXI_IndicatorsMask) {
+ XkbDeviceLedChangesPtr found;
+ found= NULL;
+ for (this= &old->leds;this&&(!found);this=this->next) {
+ if ((this->led_class==new->led_class)&&
+ (this->led_id==new->led_id)) {
+ found= this;
+ }
+ }
+ if (!found) {
+ found= _XkbTypedCalloc(1,XkbDeviceLedChangesRec);
+ if (!found)
+ return;
+ found->next= old->leds.next;
+ found->led_class= new->led_class;
+ found->led_id= new->led_id;
+ old->leds.next= found;
+ }
+ if ((wanted&new->reason)&XkbXI_IndicatorNamesMask)
+ found->defined= new->leds_defined;
+ }
+ else {
+ old->changed|= ((wanted&new->reason)&XkbXI_IndicatorsMask);
+ old->leds.led_class= new->led_class;
+ old->leds.led_id= new->led_id;
+ old->leds.defined= new->leds_defined;
+ if (old->leds.next) {
+ XkbDeviceLedChangesPtr next;
+ for (this=old->leds.next;this;this=next) {
+ next= this->next;
+ _XkbFree(this);
+ }
+ old->leds.next= NULL;
+ }
+ }
+ }
+ return;
+}
+
+/***====================================================================***/
+
+static Status
+_XkbReadDeviceLedInfo( XkbReadBufferPtr buf,
+ unsigned present,
+ XkbDeviceInfoPtr devi)
+{
+register unsigned i,bit;
+XkbDeviceLedInfoPtr devli;
+xkbDeviceLedsWireDesc * wireli;
+
+ wireli= _XkbGetTypedRdBufPtr(buf,1,xkbDeviceLedsWireDesc);
+ if (!wireli)
+ return BadLength;
+ devli= XkbAddDeviceLedInfo(devi,wireli->ledClass,wireli->ledID);
+ if (!devli)
+ return BadAlloc;
+ devli->phys_indicators= wireli->physIndicators;
+
+ if (present&XkbXI_IndicatorStateMask)
+ devli->state= wireli->state;
+
+ if (present&XkbXI_IndicatorNamesMask) {
+ devli->names_present= wireli->namesPresent;
+ if (devli->names_present) {
+ for (i=0,bit=1;i<XkbNumIndicators;i++,bit<<=1) {
+ if (wireli->namesPresent&bit) {
+ if (!_XkbCopyFromReadBuffer(buf,(char *)&devli->names[i],4))
+ return BadLength;
+ }
+ }
+ }
+ }
+
+ if (present&XkbXI_IndicatorMapsMask) {
+ devli->maps_present= wireli->mapsPresent;
+ if (devli->maps_present) {
+ XkbIndicatorMapPtr im;
+ xkbIndicatorMapWireDesc * wireim;
+ for (i=0,bit=1;i<XkbNumIndicators;i++,bit<<=1) {
+ if (wireli->mapsPresent&bit) {
+ wireim= _XkbGetTypedRdBufPtr(buf,1,xkbIndicatorMapWireDesc);
+ if (!wireim)
+ return BadAlloc;
+ im= &devli->maps[i];
+ im->flags= wireim->flags;
+ im->which_groups= wireim->whichGroups;
+ im->groups= wireim->groups;
+ im->which_mods= wireim->whichMods;
+ im->mods.mask= wireim->mods;
+ im->mods.real_mods= wireim->realMods;
+ im->mods.vmods= wireim->virtualMods;
+ im->ctrls= wireim->ctrls;
+ }
+ }
+ }
+ }
+ return Success;
+}
+
+static Status
+_XkbReadGetDeviceInfoReply( Display * dpy,
+ xkbGetDeviceInfoReply * rep,
+ XkbDeviceInfoPtr devi)
+{
+XkbReadBufferRec buf;
+XkbAction * act;
+int tmp;
+
+ if (!_XkbInitReadBuffer(dpy,&buf,(int)rep->length*4))
+ return BadAlloc;
+
+ if ((rep->totalBtns>0)&&(rep->totalBtns!=devi->num_btns)) {
+ tmp= XkbResizeDeviceButtonActions(devi,rep->totalBtns);
+ if (tmp!=Success)
+ return tmp;
+ }
+ if (rep->nBtnsWanted>0) {
+ act= &devi->btn_acts[rep->firstBtnWanted];
+ bzero((char *)act,(rep->nBtnsWanted*sizeof(XkbAction)));
+ }
+ if (devi->name!=NULL)
+ _XkbFree(devi->name);
+ if (!_XkbGetReadBufferCountedString(&buf,&devi->name))
+ goto BAILOUT;
+ if (rep->nBtnsRtrn>0) {
+ int size;
+ act= &devi->btn_acts[rep->firstBtnRtrn];
+ size= rep->nBtnsRtrn*SIZEOF(xkbActionWireDesc);
+ if (!_XkbCopyFromReadBuffer(&buf,(char *)act,size))
+ goto BAILOUT;
+ }
+ if (rep->nDeviceLedFBs>0) {
+ register int i;
+ for (i=0;i<rep->nDeviceLedFBs;i++) {
+ if ((tmp= _XkbReadDeviceLedInfo(&buf,rep->present,devi))!=Success)
+ return tmp;
+ }
+ }
+ tmp= _XkbFreeReadBuffer(&buf);
+ if (tmp)
+ fprintf(stderr,"GetDeviceInfo! Bad length (%d extra bytes)\n",tmp);
+ if (tmp || buf.error)
+ return BadLength;
+ return Success;
+BAILOUT:
+ _XkbFreeReadBuffer(&buf);
+ return BadLength;
+}
+
+XkbDeviceInfoPtr
+XkbGetDeviceInfo( Display * dpy,
+ unsigned which,
+ unsigned deviceSpec,
+ unsigned class,
+ unsigned id)
+{
+ register xkbGetDeviceInfoReq * req;
+ xkbGetDeviceInfoReply rep;
+ Status status;
+ XkbDeviceInfoPtr devi;
+
+ if ((dpy->flags & XlibDisplayNoXkb) ||
+ (!dpy->xkb_info && !XkbUseExtension(dpy,NULL,NULL)))
+ return NULL;
+ LockDisplay(dpy);
+ GetReq(kbGetDeviceInfo, req);
+ req->reqType = dpy->xkb_info->codes->major_opcode;
+ req->xkbReqType = X_kbGetDeviceInfo;
+ req->deviceSpec = deviceSpec;
+ req->wanted= which;
+ req->allBtns= ((which&XkbXI_ButtonActionsMask)!=0);
+ req->firstBtn= req->nBtns= 0;
+ req->ledClass= class;
+ req->ledID= id;
+ if (!_XReply(dpy, (xReply *)&rep, 0, xFalse)) {
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return NULL;
+ }
+ devi= XkbAllocDeviceInfo(rep.deviceID,rep.totalBtns,rep.nDeviceLedFBs);
+ if (devi) {
+ devi->supported= rep.supported;
+ devi->unsupported= rep.unsupported;
+ devi->type= rep.devType;
+ devi->has_own_state= rep.hasOwnState;
+ devi->dflt_kbd_fb = rep.dfltKbdFB;
+ devi->dflt_led_fb = rep.dfltLedFB;
+ status= _XkbReadGetDeviceInfoReply(dpy,&rep,devi);
+ if (status!=Success) {
+ XkbFreeDeviceInfo(devi,XkbXI_AllDeviceFeaturesMask,True);
+ devi= NULL;
+ }
+ }
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return devi;
+}
+
+Status
+XkbGetDeviceInfoChanges( Display * dpy,
+ XkbDeviceInfoPtr devi,
+ XkbDeviceChangesPtr changes)
+{
+ register xkbGetDeviceInfoReq * req;
+ xkbGetDeviceInfoReply rep;
+ Status status;
+
+ if ((dpy->flags & XlibDisplayNoXkb) ||
+ (!dpy->xkb_info && !XkbUseExtension(dpy,NULL,NULL)))
+ return BadMatch;
+ if ((changes->changed&XkbXI_AllDeviceFeaturesMask)==0)
+ return Success;
+ changes->changed&= ~XkbXI_AllDeviceFeaturesMask;
+ status= Success;
+ LockDisplay(dpy);
+ while ((changes->changed)&&(status==Success)) {
+ GetReq(kbGetDeviceInfo, req);
+ req->reqType = dpy->xkb_info->codes->major_opcode;
+ req->xkbReqType = X_kbGetDeviceInfo;
+ req->deviceSpec = devi->device_spec;
+ req->wanted= changes->changed;
+ req->allBtns= False;
+ if (changes->changed&XkbXI_ButtonActionsMask) {
+ req->firstBtn= changes->first_btn;
+ req->nBtns= changes->num_btns;
+ changes->changed&= ~XkbXI_ButtonActionsMask;
+ }
+ else req->firstBtn= req->nBtns= 0;
+ if (changes->changed&XkbXI_IndicatorsMask) {
+ req->ledClass= changes->leds.led_class;
+ req->ledID= changes->leds.led_id;
+ if (changes->leds.next==NULL)
+ changes->changed&= ~XkbXI_IndicatorsMask;
+ else {
+ XkbDeviceLedChangesPtr next;
+ next= changes->leds.next;
+ changes->leds= *next;
+ _XkbFree(next);
+ }
+ }
+ else {
+ req->ledClass= XkbDfltXIClass;
+ req->ledID= XkbDfltXIId;
+ }
+ if (!_XReply(dpy, (xReply *)&rep, 0, xFalse)) {
+ status= BadLength;
+ break;
+ }
+ devi->supported|= rep.supported;
+ devi->unsupported|= rep.unsupported;
+ devi->type= rep.devType;
+ status= _XkbReadGetDeviceInfoReply(dpy,&rep,devi);
+ }
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return status;
+}
+
+Status
+XkbGetDeviceButtonActions( Display * dpy,
+ XkbDeviceInfoPtr devi,
+ Bool all,
+ unsigned int first,
+ unsigned int num)
+{
+ register xkbGetDeviceInfoReq * req;
+ xkbGetDeviceInfoReply rep;
+ Status status;
+
+ if ((dpy->flags & XlibDisplayNoXkb) ||
+ (!dpy->xkb_info && !XkbUseExtension(dpy,NULL,NULL)))
+ return BadMatch;
+ if (!devi)
+ return BadValue;
+ LockDisplay(dpy);
+ GetReq(kbGetDeviceInfo, req);
+ req->reqType = dpy->xkb_info->codes->major_opcode;
+ req->xkbReqType = X_kbGetDeviceInfo;
+ req->deviceSpec = devi->device_spec;
+ req->wanted= XkbXI_ButtonActionsMask;
+ req->allBtns= all;
+ req->firstBtn= first;
+ req->nBtns= num;
+ req->ledClass= XkbDfltXIClass;
+ req->ledID= XkbDfltXIId;
+ if (!_XReply(dpy, (xReply *)&rep, 0, xFalse)) {
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return BadLength;
+ }
+ devi->type= rep.devType;
+ devi->supported= rep.supported;
+ devi->unsupported= rep.unsupported;
+ status= _XkbReadGetDeviceInfoReply(dpy,&rep,devi);
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return status;
+}
+
+Status
+XkbGetDeviceLedInfo( Display * dpy,
+ XkbDeviceInfoPtr devi,
+ unsigned int ledClass,
+ unsigned int ledId,
+ unsigned int which)
+{
+ register xkbGetDeviceInfoReq * req;
+ xkbGetDeviceInfoReply rep;
+ Status status;
+
+ if ((dpy->flags & XlibDisplayNoXkb) ||
+ (!dpy->xkb_info && !XkbUseExtension(dpy,NULL,NULL)))
+ return BadMatch;
+ if (((which&XkbXI_IndicatorsMask)==0)||(which&(~XkbXI_IndicatorsMask)))
+ return BadMatch;
+ if (!devi)
+ return BadValue;
+ LockDisplay(dpy);
+ GetReq(kbGetDeviceInfo, req);
+ req->reqType = dpy->xkb_info->codes->major_opcode;
+ req->xkbReqType = X_kbGetDeviceInfo;
+ req->deviceSpec = devi->device_spec;
+ req->wanted= which;
+ req->allBtns= False;
+ req->firstBtn= req->nBtns= 0;
+ req->ledClass= ledClass;
+ req->ledID= ledId;
+ if (!_XReply(dpy, (xReply *)&rep, 0, xFalse)) {
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return BadLength;
+ }
+ devi->type= rep.devType;
+ devi->supported= rep.supported;
+ devi->unsupported= rep.unsupported;
+ status= _XkbReadGetDeviceInfoReply(dpy,&rep,devi);
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return status;
+}
+
+/***====================================================================***/
+
+typedef struct _LedInfoStuff {
+ Bool used;
+ XkbDeviceLedInfoPtr devli;
+} LedInfoStuff;
+
+typedef struct _SetLedStuff {
+ unsigned wanted;
+ int num_info;
+ int dflt_class;
+ LedInfoStuff * dflt_kbd_fb;
+ LedInfoStuff * dflt_led_fb;
+ LedInfoStuff * info;
+} SetLedStuff;
+
+static void
+_InitLedStuff(SetLedStuff *stuff,unsigned wanted,XkbDeviceInfoPtr devi)
+{
+int i;
+register XkbDeviceLedInfoPtr devli;
+
+ bzero(stuff,sizeof(SetLedStuff));
+ stuff->wanted= wanted;
+ stuff->dflt_class= XkbXINone;
+ if ((devi->num_leds<1)||((wanted&XkbXI_IndicatorsMask)==0))
+ return;
+ stuff->info= _XkbTypedCalloc(devi->num_leds,LedInfoStuff);
+ if (!stuff->info)
+ return;
+ stuff->num_info= devi->num_leds;
+ for (devli=&devi->leds[0],i=0;i<devi->num_leds;i++,devli++) {
+ stuff->info[i].devli= devli;
+ if (devli->led_class==KbdFeedbackClass) {
+ stuff->dflt_class= KbdFeedbackClass;
+ if (stuff->dflt_kbd_fb==NULL)
+ stuff->dflt_kbd_fb= &stuff->info[i];
+ }
+ else if (devli->led_class==LedFeedbackClass) {
+ if (stuff->dflt_class==XkbXINone)
+ stuff->dflt_class= LedFeedbackClass;
+ if (stuff->dflt_led_fb==NULL)
+ stuff->dflt_led_fb= &stuff->info[i];
+ }
+ }
+ return;
+}
+
+static void
+_FreeLedStuff(SetLedStuff *stuff)
+{
+ if ((stuff->num_info>0)&&(stuff->info!=NULL))
+ _XkbFree(stuff->info);
+ bzero(stuff,sizeof(SetLedStuff));
+ return;
+}
+
+static int
+_XkbSizeLedInfo(unsigned changed,XkbDeviceLedInfoPtr devli)
+{
+register int i,size;
+register unsigned bit,namesNeeded,mapsNeeded;
+
+ size= SIZEOF(xkbDeviceLedsWireDesc);
+ namesNeeded= mapsNeeded= 0;
+ if (changed&XkbXI_IndicatorNamesMask)
+ namesNeeded= devli->names_present;
+ if (changed&XkbXI_IndicatorMapsMask)
+ mapsNeeded= devli->maps_present;
+ if ((namesNeeded)||(mapsNeeded)) {
+ for (i=0,bit=1;i<XkbNumIndicators;i++,bit<<=1) {
+ if (namesNeeded&bit)
+ size+= 4; /* atoms are 4 bytes on the wire */
+ if (mapsNeeded&bit)
+ size+= SIZEOF(xkbIndicatorMapWireDesc);
+ }
+ }
+ return size;
+}
+
+static Bool
+_SizeMatches( SetLedStuff * stuff,
+ XkbDeviceLedChangesPtr changes,
+ int * sz_rtrn,
+ int * nleds_rtrn)
+{
+int i,nMatch,class,id;
+LedInfoStuff * linfo;
+Bool match;
+
+ nMatch= 0;
+ class= changes->led_class;
+ id= changes->led_id;
+ if (class==XkbDfltXIClass)
+ class= stuff->dflt_class;
+ for (i=0,linfo=&stuff->info[0];i<stuff->num_info;i++,linfo++) {
+ XkbDeviceLedInfoPtr devli;
+ LedInfoStuff * dflt;
+
+ devli= linfo->devli;
+ match= ((class==devli->led_class)||(class==XkbAllXIClasses));
+ if (devli->led_class==KbdFeedbackClass) dflt= stuff->dflt_kbd_fb;
+ else dflt= stuff->dflt_led_fb;
+ match = (match && (id == devli->led_id)) ||
+ (id == XkbAllXIIds) ||
+ ((id == XkbDfltXIId) &&
+ (linfo == dflt));
+ if (match) {
+ if (!linfo->used) {
+ *sz_rtrn+= _XkbSizeLedInfo(stuff->wanted,devli);
+ *nleds_rtrn+= 1;
+ linfo->used= True;
+ if ((class!=XkbAllXIClasses)&&(id!=XkbAllXIIds))
+ return True;
+ }
+ nMatch++;
+ linfo->used= True;
+ }
+ }
+ return (nMatch>0);
+}
+
+/***====================================================================***/
+
+
+static Status
+_XkbSetDeviceInfoSize( XkbDeviceInfoPtr devi,
+ XkbDeviceChangesPtr changes,
+ SetLedStuff * stuff,
+ int * sz_rtrn,
+ int * num_leds_rtrn)
+{
+ *sz_rtrn= 0;
+ if ((changes->changed&XkbXI_ButtonActionsMask)&&(changes->num_btns>0)) {
+ if (!XkbXI_LegalDevBtn(devi,(changes->first_btn+changes->num_btns-1)))
+ return BadMatch;
+ *sz_rtrn+= changes->num_btns*SIZEOF(xkbActionWireDesc);
+ }
+ else {
+ changes->changed&= ~XkbXI_ButtonActionsMask;
+ changes->first_btn= changes->num_btns= 0;
+ }
+ if ((changes->changed&XkbXI_IndicatorsMask)&&
+ XkbLegalXILedClass(changes->leds.led_class)) {
+ XkbDeviceLedChangesPtr leds;
+
+ for (leds=&changes->leds;leds!=NULL;leds= leds->next) {
+ if (!_SizeMatches(stuff,leds,sz_rtrn,num_leds_rtrn))
+ return BadMatch;
+ }
+ }
+ else {
+ changes->changed&= ~XkbXI_IndicatorsMask;
+ *num_leds_rtrn= 0;
+ }
+ return Success;
+}
+
+static char *
+_XkbWriteLedInfo(char *wire,unsigned changed,XkbDeviceLedInfoPtr devli)
+{
+register int i;
+register unsigned bit,namesNeeded,mapsNeeded;
+xkbDeviceLedsWireDesc * lwire;
+
+ namesNeeded= mapsNeeded= 0;
+ if (changed&XkbXI_IndicatorNamesMask)
+ namesNeeded= devli->names_present;
+ if (changed&XkbXI_IndicatorMapsMask)
+ mapsNeeded= devli->maps_present;
+
+ lwire= (xkbDeviceLedsWireDesc *)wire;
+ lwire->ledClass= devli->led_class;
+ lwire->ledID= devli->led_id;
+ lwire->namesPresent= namesNeeded;
+ lwire->mapsPresent= mapsNeeded;
+ lwire->physIndicators= devli->phys_indicators;
+ lwire->state= devli->state;
+ wire= (char *)&lwire[1];
+ if (namesNeeded) {
+ CARD32 *awire;
+ awire= (CARD32 *)wire;
+ for (i=0,bit=1;i<XkbNumIndicators;i++,bit<<=1) {
+ if (namesNeeded&bit) {
+ *awire= (CARD32)devli->names[i];
+ awire++;
+ }
+ }
+ wire= (char *)awire;
+ }
+ if (mapsNeeded) {
+ xkbIndicatorMapWireDesc *mwire;
+
+ mwire= (xkbIndicatorMapWireDesc *)wire;
+ for (i=0,bit=1;i<XkbNumIndicators;i++,bit<<=1) {
+ if (mapsNeeded&bit) {
+ XkbIndicatorMapPtr map;
+ map= &devli->maps[i];
+ mwire->flags= map->flags;
+ mwire->whichGroups= map->which_groups;
+ mwire->groups= map->groups;
+ mwire->whichMods= map->which_mods;
+ mwire->mods= map->mods.mask;
+ mwire->realMods= map->mods.real_mods;
+ mwire->virtualMods= map->mods.vmods;
+ mwire->ctrls= map->ctrls;
+ mwire++;
+ }
+ }
+ wire= (char *)mwire;
+ }
+ return wire;
+}
+
+
+static int
+_XkbWriteSetDeviceInfo( char * wire,
+ XkbDeviceChangesPtr changes,
+ SetLedStuff * stuff,
+ XkbDeviceInfoPtr devi)
+{
+char *start;
+
+ start= wire;
+ if (changes->changed&XkbXI_ButtonActionsMask) {
+ int size;
+ size= changes->num_btns*SIZEOF(xkbActionWireDesc);
+ memcpy(wire,(char *)&devi->btn_acts[changes->first_btn],size);
+ wire+= size;
+ }
+ if (changes->changed&XkbXI_IndicatorsMask) {
+ register int i;
+ register LedInfoStuff *linfo;
+
+ for (i=0,linfo=&stuff->info[0];i<stuff->num_info;i++,linfo++) {
+ if (linfo->used) {
+ register char *new_wire;
+ new_wire= _XkbWriteLedInfo(wire,stuff->wanted,linfo->devli);
+ if (!new_wire)
+ return wire-start;
+ wire= new_wire;
+ }
+ }
+ }
+ return wire-start;
+}
+
+Bool
+XkbSetDeviceInfo( Display * dpy,
+ unsigned which,
+ XkbDeviceInfoPtr devi)
+{
+ register xkbSetDeviceInfoReq *req;
+ Status ok = 0;
+ int size,nLeds;
+ XkbInfoPtr xkbi;
+ XkbDeviceChangesRec changes;
+ SetLedStuff lstuff;
+
+ if ((dpy->flags & XlibDisplayNoXkb) ||
+ (!dpy->xkb_info && !XkbUseExtension(dpy,NULL,NULL)))
+ return False;
+ if ((!devi) || (which&(~XkbXI_AllDeviceFeaturesMask)) ||
+ ((which&XkbXI_ButtonActionsMask)&&(!XkbXI_DevHasBtnActs(devi)))||
+ ((which&XkbXI_IndicatorsMask)&&(!XkbXI_DevHasLeds(devi))))
+ return False;
+
+ bzero((char *)&changes,sizeof(XkbDeviceChangesRec));
+ changes.changed= which;
+ changes.first_btn= 0;
+ changes.num_btns= devi->num_btns;
+ changes.leds.led_class= XkbAllXIClasses;
+ changes.leds.led_id= XkbAllXIIds;
+ changes.leds.defined= 0;
+ size= nLeds= 0;
+ _InitLedStuff(&lstuff,changes.changed,devi);
+ if (_XkbSetDeviceInfoSize(devi,&changes,&lstuff,&size,&nLeds)!=Success)
+ return False;
+ LockDisplay(dpy);
+ xkbi = dpy->xkb_info;
+ GetReq(kbSetDeviceInfo, req);
+ req->length+= size/4;
+ req->reqType= xkbi->codes->major_opcode;
+ req->xkbReqType= X_kbSetDeviceInfo;
+ req->deviceSpec= devi->device_spec;
+ req->firstBtn= changes.first_btn;
+ req->nBtns= changes.num_btns;
+ req->change= changes.changed;
+ req->nDeviceLedFBs= nLeds;
+ if (size>0) {
+ char * wire;
+ BufAlloc(char *,wire,size);
+ ok= (wire!=NULL)&&
+ (_XkbWriteSetDeviceInfo(wire,&changes,&lstuff,devi)==size);
+ }
+ UnlockDisplay(dpy);
+ SyncHandle();
+ _FreeLedStuff(&lstuff);
+ /* 12/11/95 (ef) -- XXX!! should clear changes here */
+ return ok;
+}
+
+Bool
+XkbChangeDeviceInfo( Display * dpy,
+ XkbDeviceInfoPtr devi,
+ XkbDeviceChangesPtr changes)
+{
+ register xkbSetDeviceInfoReq *req;
+ Status ok = 0;
+ int size,nLeds;
+ XkbInfoPtr xkbi;
+ SetLedStuff lstuff;
+
+ if ((dpy->flags & XlibDisplayNoXkb) ||
+ (!dpy->xkb_info && !XkbUseExtension(dpy,NULL,NULL)))
+ return False;
+ if ((!devi) || (changes->changed&(~XkbXI_AllDeviceFeaturesMask)) ||
+ ((changes->changed&XkbXI_ButtonActionsMask)&&
+ (!XkbXI_DevHasBtnActs(devi)))||
+ ((changes->changed&XkbXI_IndicatorsMask)&&(!XkbXI_DevHasLeds(devi))))
+ return False;
+
+ size= nLeds= 0;
+ _InitLedStuff(&lstuff,changes->changed,devi);
+ if (_XkbSetDeviceInfoSize(devi,changes,&lstuff,&size,&nLeds)!=Success)
+ return False;
+ LockDisplay(dpy);
+ xkbi = dpy->xkb_info;
+ GetReq(kbSetDeviceInfo, req);
+ req->length+= size/4;
+ req->reqType= xkbi->codes->major_opcode;
+ req->xkbReqType= X_kbSetDeviceInfo;
+ req->deviceSpec= devi->device_spec;
+ req->firstBtn= changes->first_btn;
+ req->nBtns= changes->num_btns;
+ req->change= changes->changed;
+ req->nDeviceLedFBs= nLeds;
+ if (size>0) {
+ char * wire;
+ BufAlloc(char *,wire,size);
+ ok= (wire!=NULL)&&
+ (_XkbWriteSetDeviceInfo(wire,changes,&lstuff,devi)==size);
+ }
+ UnlockDisplay(dpy);
+ SyncHandle();
+ _FreeLedStuff(&lstuff);
+ /* 12/11/95 (ef) -- XXX!! should clear changes here */
+ return ok;
+}
+
+Bool
+XkbSetDeviceLedInfo( Display * dpy,
+ XkbDeviceInfoPtr devi,
+ unsigned ledClass,
+ unsigned ledID,
+ unsigned which)
+{
+ return False;
+}
+
+Bool
+XkbSetDeviceButtonActions( Display * dpy,
+ XkbDeviceInfoPtr devi,
+ unsigned int first,
+ unsigned int nBtns)
+{
+ register xkbSetDeviceInfoReq *req;
+ Status ok = 0;
+ int size,nLeds;
+ XkbInfoPtr xkbi;
+ XkbDeviceChangesRec changes;
+ SetLedStuff lstuff;
+
+ if ((dpy->flags & XlibDisplayNoXkb) ||
+ (!dpy->xkb_info && !XkbUseExtension(dpy,NULL,NULL)))
+ return False;
+ if ((!devi)||(!XkbXI_DevHasBtnActs(devi))||(first+nBtns>devi->num_btns))
+ return False;
+ if (nBtns==0)
+ return True;
+
+ bzero((char *)&changes,sizeof(XkbDeviceChangesRec));
+ changes.changed= XkbXI_ButtonActionsMask;
+ changes.first_btn= first;
+ changes.num_btns= nBtns;
+ changes.leds.led_class= XkbXINone;
+ changes.leds.led_id= XkbXINone;
+ changes.leds.defined= 0;
+ size= nLeds= 0;
+ if (_XkbSetDeviceInfoSize(devi,&changes,NULL,&size,&nLeds)!=Success)
+ return False;
+ LockDisplay(dpy);
+ xkbi = dpy->xkb_info;
+ GetReq(kbSetDeviceInfo, req);
+ req->length+= size/4;
+ req->reqType= xkbi->codes->major_opcode;
+ req->xkbReqType= X_kbSetDeviceInfo;
+ req->deviceSpec= devi->device_spec;
+ req->firstBtn= changes.first_btn;
+ req->nBtns= changes.num_btns;
+ req->change= changes.changed;
+ req->nDeviceLedFBs= nLeds;
+ if (size>0) {
+ char * wire;
+ BufAlloc(char *,wire,size);
+ ok= (wire!=NULL)&&
+ (_XkbWriteSetDeviceInfo(wire,&changes,&lstuff,devi)==size);
+ }
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return ok;
+}
diff --git a/libX11/src/xkb/XKBGetByName.c b/libX11/src/xkb/XKBGetByName.c
index 9417238ce..8e4f55458 100644
--- a/libX11/src/xkb/XKBGetByName.c
+++ b/libX11/src/xkb/XKBGetByName.c
@@ -1,214 +1,214 @@
-/************************************************************
-Copyright (c) 1993 by Silicon Graphics Computer Systems, Inc.
-
-Permission to use, copy, modify, and distribute this
-software and its documentation for any purpose and without
-fee is hereby granted, provided that the above copyright
-notice appear in all copies and that both that copyright
-notice and this permission notice appear in supporting
-documentation, and that the name of Silicon Graphics not be
-used in advertising or publicity pertaining to distribution
-of the software without specific prior written permission.
-Silicon Graphics makes no representation about the suitability
-of this software for any purpose. It is provided "as is"
-without any express or implied warranty.
-
-SILICON GRAPHICS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS
-SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
-AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON
-GRAPHICS BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL
-DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
-DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
-OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH
-THE USE OR PERFORMANCE OF THIS SOFTWARE.
-
-********************************************************/
-
-#define NEED_MAP_READERS
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-#include <X11/extensions/XKBproto.h>
-#include "XKBlibint.h"
-
-/***====================================================================***/
-
-XkbDescPtr
-XkbGetKeyboardByName( Display * dpy,
- unsigned deviceSpec,
- XkbComponentNamesPtr names,
- unsigned want,
- unsigned need,
- Bool load)
-{
- register xkbGetKbdByNameReq * req;
- xkbGetKbdByNameReply rep;
- int len,extraLen;
- char * str;
- XkbDescPtr xkb;
- int mapLen,codesLen,typesLen,compatLen;
- int symsLen,geomLen;
- XkbInfoPtr xkbi;
-
- if ( (dpy==NULL) || (dpy->flags & XlibDisplayNoXkb) ||
- (!dpy->xkb_info && !XkbUseExtension(dpy,NULL,NULL)) )
- return NULL;
-
- xkbi= dpy->xkb_info;
- xkb = (XkbDescRec *)_XkbCalloc(1,sizeof(XkbDescRec));
- if (!xkb)
- return NULL;
- xkb->device_spec = deviceSpec;
- xkb->map = (XkbClientMapRec *)_XkbCalloc(1,sizeof(XkbClientMapRec));
- xkb->dpy = dpy;
-
- LockDisplay(dpy);
- GetReq(kbGetKbdByName, req);
- req->reqType = xkbi->codes->major_opcode;
- req->xkbReqType = X_kbGetKbdByName;
- req->deviceSpec = xkb->device_spec;
- req->want= want;
- req->need= need;
- req->load= load;
-
- mapLen= codesLen= typesLen= compatLen= symsLen= geomLen= 0;
- if (names) {
- if (names->keymap)
- mapLen= (int)strlen(names->keymap);
- if (names->keycodes)
- codesLen= (int)strlen(names->keycodes);
- if (names->types)
- typesLen= (int)strlen(names->types);
- if (names->compat)
- compatLen= (int)strlen(names->compat);
- if (names->symbols)
- symsLen= (int)strlen(names->symbols);
- if (names->geometry)
- geomLen= (int)strlen(names->geometry);
- if (mapLen>255) mapLen= 255;
- if (codesLen>255) codesLen= 255;
- if (typesLen>255) typesLen= 255;
- if (compatLen>255) compatLen= 255;
- if (symsLen>255) symsLen= 255;
- if (geomLen>255) geomLen= 255;
- }
- else mapLen= codesLen= typesLen= compatLen= symsLen= geomLen= 0;
-
- len= mapLen+codesLen+typesLen+compatLen+symsLen+geomLen+6;
- len= XkbPaddedSize(len);
- req->length+= len/4;
- BufAlloc(char *,str,len);
- *str++= mapLen;
- if (mapLen>0) {
- memcpy(str,names->keymap,mapLen);
- str+= mapLen;
- }
- *str++= codesLen;
- if (codesLen>0) {
- memcpy(str,names->keycodes,codesLen);
- str+= codesLen;
- }
- *str++= typesLen;
- if (typesLen>0) {
- memcpy(str,names->types,typesLen);
- str+= typesLen;
- }
- *str++= compatLen;
- if (compatLen>0) {
- memcpy(str,names->compat,compatLen);
- str+= compatLen;
- }
- *str++= symsLen;
- if (symsLen>0) {
- memcpy(str,names->symbols,symsLen);
- str+= symsLen;
- }
- *str++= geomLen;
- if (geomLen>0) {
- memcpy(str,names->geometry,geomLen);
- str+= geomLen;
- }
- if ((!_XReply(dpy, (xReply *)&rep, 0, xFalse))||(!rep.reported))
- goto BAILOUT;
- extraLen= (int)rep.length*4;
-
- xkb->device_spec= rep.deviceID;
- xkb->min_key_code = rep.minKeyCode;
- xkb->max_key_code = rep.maxKeyCode;
- if (rep.reported&(XkbGBN_SymbolsMask|XkbGBN_TypesMask)) {
- xkbGetMapReply mrep;
- Status status;
- int nread= 0;
-
- _XRead(dpy, (char *)&mrep, SIZEOF(xkbGetMapReply));
- extraLen-= SIZEOF(xkbGetMapReply);
- status= _XkbReadGetMapReply(dpy,&mrep,xkb,&nread);
- extraLen-= nread;
- if (status!=Success)
- goto BAILOUT;
- }
- if (rep.reported&XkbGBN_CompatMapMask) {
- xkbGetCompatMapReply crep;
- Status status;
- int nread= 0;
-
- _XRead(dpy, (char *)&crep, SIZEOF(xkbGetCompatMapReply));
- extraLen-= SIZEOF(xkbGetCompatMapReply);
- status= _XkbReadGetCompatMapReply(dpy,&crep,xkb,&nread);
- extraLen-= nread;
- if (status!=Success)
- goto BAILOUT;
- }
- if (rep.reported&XkbGBN_IndicatorMapMask) {
- xkbGetIndicatorMapReply irep;
- Status status;
- int nread= 0;
-
- _XRead(dpy, (char *)&irep, SIZEOF(xkbGetIndicatorMapReply));
- extraLen-= SIZEOF(xkbGetIndicatorMapReply);
- status= _XkbReadGetIndicatorMapReply(dpy,&irep,xkb,&nread);
- extraLen-= nread;
- if (status!=Success)
- goto BAILOUT;
- }
- if (rep.reported&(XkbGBN_KeyNamesMask|XkbGBN_OtherNamesMask)) {
- xkbGetNamesReply nrep;
- Status status;
- int nread= 0;
-
- _XRead(dpy, (char *)&nrep, SIZEOF(xkbGetNamesReply));
- extraLen-= SIZEOF(xkbGetNamesReply);
- status= _XkbReadGetNamesReply(dpy,&nrep,xkb,&nread);
- extraLen-= nread;
- if (status!=Success)
- goto BAILOUT;
- }
- if (rep.reported&XkbGBN_GeometryMask) {
- xkbGetGeometryReply grep;
- Status status;
- int nread= 0;
-
- _XRead(dpy, (char *)&grep, SIZEOF(xkbGetGeometryReply));
- extraLen-= SIZEOF(xkbGetGeometryReply);
- status= _XkbReadGetGeometryReply(dpy,&grep,xkb,&nread);
- extraLen-= nread;
- if (status!=Success)
- goto BAILOUT;
- }
- UnlockDisplay(dpy);
- SyncHandle();
- return xkb;
-BAILOUT:
- if (xkb!=NULL)
- XkbFreeKeyboard(xkb,XkbAllComponentsMask,xTrue);
- UnlockDisplay(dpy);
- SyncHandle();
- return NULL;
-}
-
-XkbDescPtr
-XkbGetKeyboard(Display *dpy,unsigned which,unsigned deviceSpec)
-{
- return XkbGetKeyboardByName(dpy,deviceSpec,NULL,which,which,False);
-}
+/************************************************************
+Copyright (c) 1993 by Silicon Graphics Computer Systems, Inc.
+
+Permission to use, copy, modify, and distribute this
+software and its documentation for any purpose and without
+fee is hereby granted, provided that the above copyright
+notice appear in all copies and that both that copyright
+notice and this permission notice appear in supporting
+documentation, and that the name of Silicon Graphics not be
+used in advertising or publicity pertaining to distribution
+of the software without specific prior written permission.
+Silicon Graphics makes no representation about the suitability
+of this software for any purpose. It is provided "as is"
+without any express or implied warranty.
+
+SILICON GRAPHICS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS
+SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
+AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON
+GRAPHICS BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL
+DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
+DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
+OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH
+THE USE OR PERFORMANCE OF THIS SOFTWARE.
+
+********************************************************/
+
+#define NEED_MAP_READERS
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+#include <X11/extensions/XKBproto.h>
+#include "XKBlibint.h"
+
+/***====================================================================***/
+
+XkbDescPtr
+XkbGetKeyboardByName( Display * dpy,
+ unsigned deviceSpec,
+ XkbComponentNamesPtr names,
+ unsigned want,
+ unsigned need,
+ Bool load)
+{
+ register xkbGetKbdByNameReq * req;
+ xkbGetKbdByNameReply rep;
+ int len,extraLen;
+ char * str;
+ XkbDescPtr xkb;
+ int mapLen,codesLen,typesLen,compatLen;
+ int symsLen,geomLen;
+ XkbInfoPtr xkbi;
+
+ if ( (dpy==NULL) || (dpy->flags & XlibDisplayNoXkb) ||
+ (!dpy->xkb_info && !XkbUseExtension(dpy,NULL,NULL)) )
+ return NULL;
+
+ xkbi= dpy->xkb_info;
+ xkb = (XkbDescRec *)_XkbCalloc(1,sizeof(XkbDescRec));
+ if (!xkb)
+ return NULL;
+ xkb->device_spec = deviceSpec;
+ xkb->map = (XkbClientMapRec *)_XkbCalloc(1,sizeof(XkbClientMapRec));
+ xkb->dpy = dpy;
+
+ LockDisplay(dpy);
+ GetReq(kbGetKbdByName, req);
+ req->reqType = xkbi->codes->major_opcode;
+ req->xkbReqType = X_kbGetKbdByName;
+ req->deviceSpec = xkb->device_spec;
+ req->want= want;
+ req->need= need;
+ req->load= load;
+
+ mapLen= codesLen= typesLen= compatLen= symsLen= geomLen= 0;
+ if (names) {
+ if (names->keymap)
+ mapLen= (int)strlen(names->keymap);
+ if (names->keycodes)
+ codesLen= (int)strlen(names->keycodes);
+ if (names->types)
+ typesLen= (int)strlen(names->types);
+ if (names->compat)
+ compatLen= (int)strlen(names->compat);
+ if (names->symbols)
+ symsLen= (int)strlen(names->symbols);
+ if (names->geometry)
+ geomLen= (int)strlen(names->geometry);
+ if (mapLen>255) mapLen= 255;
+ if (codesLen>255) codesLen= 255;
+ if (typesLen>255) typesLen= 255;
+ if (compatLen>255) compatLen= 255;
+ if (symsLen>255) symsLen= 255;
+ if (geomLen>255) geomLen= 255;
+ }
+ else mapLen= codesLen= typesLen= compatLen= symsLen= geomLen= 0;
+
+ len= mapLen+codesLen+typesLen+compatLen+symsLen+geomLen+6;
+ len= XkbPaddedSize(len);
+ req->length+= len/4;
+ BufAlloc(char *,str,len);
+ *str++= mapLen;
+ if (mapLen>0) {
+ memcpy(str,names->keymap,mapLen);
+ str+= mapLen;
+ }
+ *str++= codesLen;
+ if (codesLen>0) {
+ memcpy(str,names->keycodes,codesLen);
+ str+= codesLen;
+ }
+ *str++= typesLen;
+ if (typesLen>0) {
+ memcpy(str,names->types,typesLen);
+ str+= typesLen;
+ }
+ *str++= compatLen;
+ if (compatLen>0) {
+ memcpy(str,names->compat,compatLen);
+ str+= compatLen;
+ }
+ *str++= symsLen;
+ if (symsLen>0) {
+ memcpy(str,names->symbols,symsLen);
+ str+= symsLen;
+ }
+ *str++= geomLen;
+ if (geomLen>0) {
+ memcpy(str,names->geometry,geomLen);
+ str+= geomLen;
+ }
+ if ((!_XReply(dpy, (xReply *)&rep, 0, xFalse))||(!rep.reported))
+ goto BAILOUT;
+ extraLen= (int)rep.length*4;
+
+ xkb->device_spec= rep.deviceID;
+ xkb->min_key_code = rep.minKeyCode;
+ xkb->max_key_code = rep.maxKeyCode;
+ if (rep.reported&(XkbGBN_SymbolsMask|XkbGBN_TypesMask)) {
+ xkbGetMapReply mrep;
+ Status status;
+ int nread= 0;
+
+ _XRead(dpy, (char *)&mrep, SIZEOF(xkbGetMapReply));
+ extraLen-= SIZEOF(xkbGetMapReply);
+ status= _XkbReadGetMapReply(dpy,&mrep,xkb,&nread);
+ extraLen-= nread;
+ if (status!=Success)
+ goto BAILOUT;
+ }
+ if (rep.reported&XkbGBN_CompatMapMask) {
+ xkbGetCompatMapReply crep;
+ Status status;
+ int nread= 0;
+
+ _XRead(dpy, (char *)&crep, SIZEOF(xkbGetCompatMapReply));
+ extraLen-= SIZEOF(xkbGetCompatMapReply);
+ status= _XkbReadGetCompatMapReply(dpy,&crep,xkb,&nread);
+ extraLen-= nread;
+ if (status!=Success)
+ goto BAILOUT;
+ }
+ if (rep.reported&XkbGBN_IndicatorMapMask) {
+ xkbGetIndicatorMapReply irep;
+ Status status;
+ int nread= 0;
+
+ _XRead(dpy, (char *)&irep, SIZEOF(xkbGetIndicatorMapReply));
+ extraLen-= SIZEOF(xkbGetIndicatorMapReply);
+ status= _XkbReadGetIndicatorMapReply(dpy,&irep,xkb,&nread);
+ extraLen-= nread;
+ if (status!=Success)
+ goto BAILOUT;
+ }
+ if (rep.reported&(XkbGBN_KeyNamesMask|XkbGBN_OtherNamesMask)) {
+ xkbGetNamesReply nrep;
+ Status status;
+ int nread= 0;
+
+ _XRead(dpy, (char *)&nrep, SIZEOF(xkbGetNamesReply));
+ extraLen-= SIZEOF(xkbGetNamesReply);
+ status= _XkbReadGetNamesReply(dpy,&nrep,xkb,&nread);
+ extraLen-= nread;
+ if (status!=Success)
+ goto BAILOUT;
+ }
+ if (rep.reported&XkbGBN_GeometryMask) {
+ xkbGetGeometryReply grep;
+ Status status;
+ int nread= 0;
+
+ _XRead(dpy, (char *)&grep, SIZEOF(xkbGetGeometryReply));
+ extraLen-= SIZEOF(xkbGetGeometryReply);
+ status= _XkbReadGetGeometryReply(dpy,&grep,xkb,&nread);
+ extraLen-= nread;
+ if (status!=Success)
+ goto BAILOUT;
+ }
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return xkb;
+BAILOUT:
+ if (xkb!=NULL)
+ XkbFreeKeyboard(xkb,XkbAllComponentsMask,xTrue);
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return NULL;
+}
+
+XkbDescPtr
+XkbGetKeyboard(Display *dpy,unsigned which,unsigned deviceSpec)
+{
+ return XkbGetKeyboardByName(dpy,deviceSpec,NULL,which,which,False);
+}
diff --git a/libX11/src/xkb/XKBGetMap.c b/libX11/src/xkb/XKBGetMap.c
index 96370c6d3..82ae0219e 100644
--- a/libX11/src/xkb/XKBGetMap.c
+++ b/libX11/src/xkb/XKBGetMap.c
@@ -1,856 +1,856 @@
-/************************************************************
-Copyright (c) 1993 by Silicon Graphics Computer Systems, Inc.
-
-Permission to use, copy, modify, and distribute this
-software and its documentation for any purpose and without
-fee is hereby granted, provided that the above copyright
-notice appear in all copies and that both that copyright
-notice and this permission notice appear in supporting
-documentation, and that the name of Silicon Graphics not be
-used in advertising or publicity pertaining to distribution
-of the software without specific prior written permission.
-Silicon Graphics makes no representation about the suitability
-of this software for any purpose. It is provided "as is"
-without any express or implied warranty.
-
-SILICON GRAPHICS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS
-SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
-AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON
-GRAPHICS BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL
-DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
-DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
-OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH
-THE USE OR PERFORMANCE OF THIS SOFTWARE.
-
-********************************************************/
-
-#define NEED_MAP_READERS
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#ifdef XKB_IN_SERVER
-#define XkbAllocClientMap SrvXkbAllocClientMap
-#define XkbAllocServerMap SrvXkbAllocServerMap
-#define XkbChangeTypesOfKey SrvXkbChangeTypesOfKey
-#define XkbCopyKeyTypes SrvXkbCopyKeyTypes
-#define XkbFreeClientMap SrvXkbFreeClientMap
-#define XkbFreeServerMap SrvXkbFreeServerMap
-#define XkbKeyTypesForCoreSymbols SrvXkbKeyTypesForCoreSymbols
-#define XkbApplyCompatMapToKey SrvXkbApplyCompatMapToKey
-#define XkbResizeKeyActions SrvXkbResizeKeyActions
-#define XkbResizeKeySyms SrvXkbResizeKeySyms
-#define XkbResizeKeyType SrvXkbResizeKeyType
-#define XkbAllocCompatMap SrvXkbAllocCompatMap
-#define XkbAllocControls SrvXkbAllocControls
-#define XkbAllocIndicatorMaps SrvXkbAllocIndicatorMaps
-#define XkbAllocKeyboard SrvXkbAllocKeyboard
-#define XkbAllocNames SrvXkbAllocNames
-#define XkbFreeCompatMap SrvXkbFreeCompatMap
-#define XkbFreeKeyboard SrvXkbFreeKeyboard
-#define XkbFreeNames SrvXkbFreeNames
-#define XkbLatchModifiers SrvXkbLatchModifiers
-#define XkbLatchGroup SrvXkbLatchGroup
-#define XkbVirtualModsToReal SrvXkbVirtualModsToReal
-#define XkbChangeKeycodeRange SrvXkbChangeKeycodeRange
-#define XkbApplyVirtualModChanges SrvXkbApplyVirtualModChanges
-#endif
-
-#include "Xlibint.h"
-#include <X11/extensions/XKBproto.h>
-#include "XKBlibint.h"
-
-static Status
-_XkbReadKeyTypes(XkbReadBufferPtr buf,XkbDescPtr xkb,xkbGetMapReply *rep)
-{
-int i,n,lastMapCount;
-XkbKeyTypePtr type;
-
- if ( rep->nTypes>0 ) {
- n = rep->firstType+rep->nTypes;
- if (xkb->map->num_types>=n)
- n= xkb->map->num_types;
- else if (XkbAllocClientMap(xkb,XkbKeyTypesMask,n)!=Success)
- return BadAlloc;
-
- type = &xkb->map->types[rep->firstType];
- for (i=0;i<(int)rep->nTypes;i++,type++) {
- xkbKeyTypeWireDesc *desc;
- register int ndx;
-
- ndx= i+rep->firstType;
- if (ndx>=xkb->map->num_types)
- xkb->map->num_types= ndx+1;
-
- desc= (xkbKeyTypeWireDesc *)_XkbGetReadBufferPtr(buf,
- SIZEOF(xkbKeyTypeWireDesc));
- if (desc==NULL)
- return BadLength;
-
- lastMapCount= type->map_count;
- if ( desc->nMapEntries>0 ) {
- if ((type->map==NULL)||(desc->nMapEntries>type->map_count)) {
- XkbKTMapEntryRec *prev_map = type->map;
-
- type->map= _XkbTypedRealloc(type->map,desc->nMapEntries,
- XkbKTMapEntryRec);
- if (type->map==NULL) {
- _XkbFree(prev_map);
- return BadAlloc;
- }
- }
- }
- else if (type->map!=NULL) {
- Xfree(type->map);
- type->map_count= 0;
- type->map= NULL;
- }
-
- if ( desc->preserve && (desc->nMapEntries>0) ) {
- if ((!type->preserve)||
- (desc->nMapEntries>lastMapCount)) {
- XkbModsRec *prev_preserve = type->preserve;
-
- type->preserve= _XkbTypedRealloc(type->preserve,
- desc->nMapEntries,
- XkbModsRec);
- if (type->preserve==NULL) {
- _XkbFree(prev_preserve);
- return BadAlloc;
- }
- }
- }
- else if (type->preserve!=NULL) {
- Xfree(type->preserve);
- type->preserve= NULL;
- }
-
- type->mods.mask = desc->mask;
- type->mods.real_mods = desc->realMods;
- type->mods.vmods = desc->virtualMods;
- type->num_levels = desc->numLevels;
- type->map_count = desc->nMapEntries;
- if (desc->nMapEntries>0) {
- register xkbKTMapEntryWireDesc *wire;
- register XkbKTMapEntryPtr entry;
- register int size;
-
- size= type->map_count*SIZEOF(xkbKTMapEntryWireDesc);
- wire= (xkbKTMapEntryWireDesc *)_XkbGetReadBufferPtr(buf,size);
- if (wire==NULL)
- return BadLength;
- entry= type->map;
- for (n=0;n<type->map_count;n++,wire++,entry++) {
- entry->active= wire->active;
- entry->level= wire->level;
- entry->mods.mask= wire->mask;
- entry->mods.real_mods= wire->realMods;
- entry->mods.vmods= wire->virtualMods;
- }
-
- if (desc->preserve) {
- register xkbModsWireDesc * pwire;
- register XkbModsPtr preserve;
- register int sz;
-
- sz= desc->nMapEntries*SIZEOF(xkbModsWireDesc);
- pwire=(xkbModsWireDesc *)_XkbGetReadBufferPtr(buf,sz);
- if (pwire==NULL)
- return BadLength;
- preserve= type->preserve;
- for (n=0;n<desc->nMapEntries;n++,pwire++,preserve++) {
- preserve->mask= pwire->mask;
- preserve->vmods= pwire->virtualMods;
- preserve->real_mods= pwire->realMods;
- }
- }
- }
- }
- }
- return Success;
-}
-
-static Status
-_XkbReadKeySyms(XkbReadBufferPtr buf,XkbDescPtr xkb,xkbGetMapReply *rep)
-{
-register int i;
-XkbClientMapPtr map;
-
- map= xkb->map;
- if (map->key_sym_map==NULL) {
- register int offset;
- XkbSymMapPtr oldMap;
- xkbSymMapWireDesc *newMap;
- map->key_sym_map= _XkbTypedCalloc((xkb->max_key_code+1),XkbSymMapRec);
- if (map->key_sym_map==NULL)
- return BadAlloc;
- if (map->syms==NULL) {
- int sz;
- sz= (rep->totalSyms*12)/10;
- sz= ((sz+(unsigned)128)/128)*128;
- map->syms = _XkbTypedCalloc(sz,KeySym);
- if (map->syms==NULL)
- return BadAlloc;
- map->size_syms = sz;
- }
- offset = 1;
- oldMap = &map->key_sym_map[rep->firstKeySym];
- for (i=0;i<(int)rep->nKeySyms;i++,oldMap++) {
- newMap= (xkbSymMapWireDesc *)
- _XkbGetReadBufferPtr(buf,SIZEOF(xkbSymMapWireDesc));
- if (newMap==NULL)
- return BadLength;
- oldMap->kt_index[0]= newMap->ktIndex[0];
- oldMap->kt_index[1]= newMap->ktIndex[1];
- oldMap->kt_index[2]= newMap->ktIndex[2];
- oldMap->kt_index[3]= newMap->ktIndex[3];
- oldMap->group_info= newMap->groupInfo;
- oldMap->width= newMap->width;
- oldMap->offset= offset;
- if (offset+newMap->nSyms>=map->size_syms) {
- register int sz;
- KeySym *prev_syms = map->syms;
-
- sz= map->size_syms+128;
- map->syms= _XkbTypedRealloc(map->syms,sz,KeySym);
- if (map->syms==NULL) {
- _XkbFree(prev_syms);
- map->size_syms= 0;
- return BadAlloc;
- }
- map->size_syms= sz;
- }
- if (newMap->nSyms>0) {
- _XkbReadBufferCopyKeySyms(buf,(KeySym *)&map->syms[offset],
- newMap->nSyms);
- offset+= newMap->nSyms;
- }
- else {
- map->syms[offset]= 0;
- }
- }
- map->num_syms= offset;
- }
- else {
- xkbSymMapWireDesc * newMap;
- XkbSymMapPtr oldMap;
- KeySym * newSyms;
- int tmp;
-
- oldMap = &map->key_sym_map[rep->firstKeySym];
- for (i=0;i<(int)rep->nKeySyms;i++,oldMap++) {
- newMap= (xkbSymMapWireDesc *)
- _XkbGetReadBufferPtr(buf,SIZEOF(xkbSymMapWireDesc));
- if (newMap==NULL)
- return BadLength;
-
- if (newMap->nSyms>0)
- tmp= newMap->nSyms;
- else tmp= 0;
-
- newSyms = XkbResizeKeySyms(xkb,i+rep->firstKeySym,tmp);
- if (newSyms==NULL)
- return BadAlloc;
- if (newMap->nSyms>0)
- _XkbReadBufferCopyKeySyms(buf,newSyms,newMap->nSyms);
- else newSyms[0]= NoSymbol;
- oldMap->kt_index[0] = newMap->ktIndex[0];
- oldMap->kt_index[1] = newMap->ktIndex[1];
- oldMap->kt_index[2] = newMap->ktIndex[2];
- oldMap->kt_index[3] = newMap->ktIndex[3];
- oldMap->group_info = newMap->groupInfo;
- oldMap->width = newMap->width;
- }
- }
- return Success;
-}
-
-static Status
-_XkbReadKeyActions(XkbReadBufferPtr buf,XkbDescPtr info,xkbGetMapReply *rep)
-{
-int i;
-CARD8 numDescBuf[248];
-CARD8* numDesc = NULL;
-register int nKeyActs;
-Status ret = Success;
-
- if ( (nKeyActs=rep->nKeyActs)>0 ) {
- XkbSymMapPtr symMap;
-
- if (nKeyActs < sizeof numDescBuf) numDesc = numDescBuf;
- else numDesc = Xmalloc (nKeyActs * sizeof(CARD8));
-
- if (!_XkbCopyFromReadBuffer(buf, (char *)numDesc, nKeyActs)) {
- ret = BadLength;
- goto done;
- }
- i= XkbPaddedSize(nKeyActs)-nKeyActs;
- if ((i>0)&&(!_XkbSkipReadBufferData(buf,i))) {
- ret = BadLength;
- goto done;
- }
- symMap = &info->map->key_sym_map[rep->firstKeyAct];
- for (i=0;i<(int)rep->nKeyActs;i++,symMap++) {
- if (numDesc[i]==0) {
- info->server->key_acts[i+rep->firstKeyAct]= 0;
- }
- else {
- XkbAction *newActs;
- /* 8/16/93 (ef) -- XXX! Verify size here (numdesc must be */
- /* either zero or XkbKeyNumSyms(info,key) */
- newActs=XkbResizeKeyActions(info,i+rep->firstKeyAct,
- numDesc[i]);
- if (newActs==NULL) {
- ret = BadAlloc;
- goto done;
- }
- if (!_XkbCopyFromReadBuffer(buf,(char *)newActs,
- (int)(numDesc[i]*sizeof(XkbAction)))) {
- ret = BadLength;
- goto done;
- }
- }
- }
- }
-done:
- if (numDesc != NULL && numDesc != numDescBuf) Xfree (numDesc);
- return ret;
-}
-
-static Status
-_XkbReadKeyBehaviors(XkbReadBufferPtr buf,XkbDescPtr xkb,xkbGetMapReply *rep)
-{
-register int i;
-xkbBehaviorWireDesc *wire;
-
- if ( rep->totalKeyBehaviors>0 ) {
- if ( xkb->server->behaviors == NULL ) {
- int size = xkb->max_key_code+1;
- xkb->server->behaviors = _XkbTypedCalloc(size,XkbBehavior);
- if (xkb->server->behaviors==NULL)
- return BadAlloc;
- }
- else {
- bzero(&xkb->server->behaviors[rep->firstKeyBehavior],
- (rep->nKeyBehaviors*sizeof(XkbBehavior)));
- }
- for (i=0;i<rep->totalKeyBehaviors;i++) {
- wire= (xkbBehaviorWireDesc *)_XkbGetReadBufferPtr(buf,
- SIZEOF(xkbBehaviorWireDesc));
- if (wire==NULL)
- return BadLength;
- xkb->server->behaviors[wire->key].type= wire->type;
- xkb->server->behaviors[wire->key].data= wire->data;
- }
- }
- return Success;
-}
-
-static Status
-_XkbReadVirtualMods(XkbReadBufferPtr buf,XkbDescPtr xkb,xkbGetMapReply *rep)
-{
- if ( rep->virtualMods ) {
- register int i,bit,nVMods;
- register char *data;
-
- for (i=nVMods=0,bit=1;i<XkbNumVirtualMods;i++,bit<<=1) {
- if (rep->virtualMods&bit)
- nVMods++;
- }
- data= _XkbGetReadBufferPtr(buf,XkbPaddedSize(nVMods));
- if (data==NULL)
- return BadLength;
- for (i=0,bit=1;(i<XkbNumVirtualMods)&&(nVMods>0);i++,bit<<=1) {
- if (rep->virtualMods&bit) {
- xkb->server->vmods[i]= *data++;
- nVMods--;
- }
- }
- }
- return Success;
-}
-
-static Status
-_XkbReadExplicitComponents( XkbReadBufferPtr buf,
- XkbDescPtr xkb,
- xkbGetMapReply * rep)
-{
-register int i;
-unsigned char *wire;
-
- if ( rep->totalKeyExplicit>0 ) {
- if ( xkb->server->explicit == NULL ) {
- int size = xkb->max_key_code+1;
- xkb->server->explicit = _XkbTypedCalloc(size,unsigned char);
- if (xkb->server->explicit==NULL)
- return BadAlloc;
- }
- else {
- bzero(&xkb->server->explicit[rep->firstKeyExplicit],
- rep->nKeyExplicit);
- }
- i= XkbPaddedSize(2*rep->totalKeyExplicit);
- wire=(unsigned char *)_XkbGetReadBufferPtr(buf,i);
- if (!wire)
- return BadLength;
- for (i=0;i<rep->totalKeyExplicit;i++,wire+=2) {
- xkb->server->explicit[wire[0]]= wire[1];
- }
- }
- return Success;
-}
-
-static Status
-_XkbReadModifierMap(XkbReadBufferPtr buf,XkbDescPtr xkb,xkbGetMapReply *rep)
-{
-register int i;
-unsigned char *wire;
-
- if ( rep->totalModMapKeys>0 ) {
- if ((xkb->map->modmap==NULL)&&
- (XkbAllocClientMap(xkb,XkbModifierMapMask,0)!=Success)) {
- return BadAlloc;
- }
- else {
- bzero(&xkb->map->modmap[rep->firstModMapKey],rep->nModMapKeys);
- }
- i= XkbPaddedSize(2*rep->totalModMapKeys);
- wire=(unsigned char *)_XkbGetReadBufferPtr(buf,i);
- if (!wire)
- return BadLength;
- for (i=0;i<rep->totalModMapKeys;i++,wire+=2) {
- xkb->map->modmap[wire[0]]= wire[1];
- }
- }
- return Success;
-}
-
-static Status
-_XkbReadVirtualModMap(XkbReadBufferPtr buf,XkbDescPtr xkb,xkbGetMapReply *rep)
-{
-register int i;
-xkbVModMapWireDesc * wire;
-XkbServerMapPtr srv;
-
- if ( rep->totalVModMapKeys>0 ) {
- if (((xkb->server==NULL)||(xkb->server->vmodmap==NULL))&&
- (XkbAllocServerMap(xkb,XkbVirtualModMapMask,0)!=Success)) {
- return BadAlloc;
- }
- else {
- srv= xkb->server;
- if (rep->nVModMapKeys > rep->firstVModMapKey)
- bzero((char *)&srv->vmodmap[rep->firstVModMapKey],
- (rep->nVModMapKeys - rep->firstVModMapKey) *
- sizeof(unsigned short));
- }
- srv= xkb->server;
- i= rep->totalVModMapKeys*SIZEOF(xkbVModMapWireDesc);
- wire=(xkbVModMapWireDesc *)_XkbGetReadBufferPtr(buf,i);
- if (!wire)
- return BadLength;
- for (i=0;i<rep->totalVModMapKeys;i++,wire++) {
- if ((wire->key>=xkb->min_key_code)&&(wire->key<=xkb->max_key_code))
- srv->vmodmap[wire->key]= wire->vmods;
- }
- }
- return Success;
-}
-
-static xkbGetMapReq *
-_XkbGetGetMapReq(Display *dpy,XkbDescPtr xkb)
-{
-xkbGetMapReq *req;
-
- GetReq(kbGetMap, req);
- req->reqType = dpy->xkb_info->codes->major_opcode;
- req->xkbReqType = X_kbGetMap;
- req->deviceSpec = xkb->device_spec;
- req->full = req->partial = 0;
- req->firstType = req->nTypes = 0;
- req->firstKeySym = req->nKeySyms = 0;
- req->firstKeyAct = req->nKeyActs = 0;
- req->firstKeyBehavior = req->nKeyBehaviors = 0;
- req->virtualMods = 0;
- req->firstKeyExplicit = req->nKeyExplicit = 0;
- req->firstModMapKey = req->nModMapKeys = 0;
- req->firstVModMapKey = req->nVModMapKeys = 0;
- return req;
-}
-
-Status
-_XkbReadGetMapReply( Display * dpy,
- xkbGetMapReply *rep,
- XkbDescPtr xkb,
- int * nread_rtrn)
-{
-int extraData;
-unsigned mask;
-
- if ( xkb->device_spec == XkbUseCoreKbd )
- xkb->device_spec= rep->deviceID;
- xkb->min_key_code = rep->minKeyCode;
- xkb->max_key_code = rep->maxKeyCode;
-
- if (!xkb->map) {
- mask= rep->present&XkbAllClientInfoMask;
- if (mask&&(XkbAllocClientMap(xkb,mask,rep->nTypes)!=Success))
- return BadAlloc;
- }
- if (!xkb->server) {
- mask= rep->present&XkbAllServerInfoMask;
- if (mask&&(XkbAllocServerMap(xkb,mask,rep->totalActs)!=Success))
- return BadAlloc;
- }
- extraData= (int)(rep->length*4);
- extraData-= (SIZEOF(xkbGetMapReply)-SIZEOF(xGenericReply));
- if (rep->length) {
- XkbReadBufferRec buf;
- int left;
- if (_XkbInitReadBuffer(dpy,&buf,extraData)) {
- Status status= Success;
- if (nread_rtrn!=NULL)
- *nread_rtrn= extraData;
- if (status==Success)
- status= _XkbReadKeyTypes(&buf,xkb,rep);
- if (status==Success)
- status= _XkbReadKeySyms(&buf,xkb,rep);
- if (status==Success)
- status= _XkbReadKeyActions(&buf,xkb,rep);
- if (status==Success)
- status= _XkbReadKeyBehaviors(&buf,xkb,rep);
- if (status==Success)
- status= _XkbReadVirtualMods(&buf,xkb,rep);
- if (status==Success)
- status= _XkbReadExplicitComponents(&buf,xkb,rep);
- if (status==Success)
- status= _XkbReadModifierMap(&buf,xkb,rep);
- if (status==Success)
- status= _XkbReadVirtualModMap(&buf,xkb,rep);
- left= _XkbFreeReadBuffer(&buf);
- if (status!=Success) return status;
- else if ( left || buf.error ) return BadLength;
- }
- else return BadAlloc;
- }
- return Success;
-}
-
-static Status
-_XkbHandleGetMapReply(Display *dpy,XkbDescPtr xkb)
-{
-xkbGetMapReply rep;
-
- if (!_XReply(dpy, (xReply *)&rep,
- ( (SIZEOF(xkbGetMapReply)-SIZEOF(xGenericReply)) >> 2 ),
- xFalse)) {
- return BadImplementation;
- }
- return _XkbReadGetMapReply(dpy,&rep,xkb,NULL);
-}
-
-Status
-XkbGetUpdatedMap(Display *dpy,unsigned which,XkbDescPtr xkb)
-{
- if ((dpy->flags & XlibDisplayNoXkb) ||
- (!dpy->xkb_info && !XkbUseExtension(dpy,NULL,NULL)))
- return BadAccess;
- if (which) {
- register xkbGetMapReq *req;
- Status status;
-
- LockDisplay(dpy);
-
- req = _XkbGetGetMapReq(dpy, xkb);
- req->full = which;
- status= _XkbHandleGetMapReply(dpy, xkb);
-
- UnlockDisplay(dpy);
- SyncHandle();
- return status;
- }
- return Success;
-}
-
-XkbDescPtr
-XkbGetMap(Display *dpy,unsigned which,unsigned deviceSpec)
-{
-XkbDescPtr xkb;
-
- xkb = _XkbTypedCalloc(1,XkbDescRec);
- if (xkb) {
- xkb->device_spec = deviceSpec;
- xkb->map = _XkbTypedCalloc(1,XkbClientMapRec);
- if ((xkb->map==NULL)||
- ((which)&&(XkbGetUpdatedMap(dpy,which,xkb)!=Success))) {
- if (xkb->map) {
- Xfree(xkb->map);
- xkb->map= NULL;
- }
- Xfree(xkb);
- return NULL;
- }
- xkb->dpy= dpy;
- }
- return xkb;
-}
-
-Status
-XkbGetKeyTypes(Display *dpy,unsigned first,unsigned num,XkbDescPtr xkb)
-{
- register xkbGetMapReq *req;
- Status status;
-
- if ((dpy->flags & XlibDisplayNoXkb) ||
- (!dpy->xkb_info && !XkbUseExtension(dpy,NULL,NULL)))
- return BadAccess;
- if ((num<1)||(num>XkbMaxKeyTypes))
- return BadValue;
-
- LockDisplay(dpy);
-
- req = _XkbGetGetMapReq(dpy, xkb);
- req->firstType = first;
- req->nTypes = num;
- status= _XkbHandleGetMapReply(dpy, xkb);
-
- UnlockDisplay(dpy);
- SyncHandle();
- return status;
-}
-
-Status
-XkbGetKeyActions(Display *dpy,unsigned first,unsigned num,XkbDescPtr xkb)
-{
- register xkbGetMapReq *req;
- Status status;
-
- if ((dpy->flags & XlibDisplayNoXkb) ||
- (!dpy->xkb_info && !XkbUseExtension(dpy,NULL,NULL)))
- return BadAccess;
-
- if ((num<1)||(num>XkbMaxKeyCount))
- return BadValue;
-
- LockDisplay(dpy);
-
- req = _XkbGetGetMapReq(dpy, xkb);
- req->firstKeyAct = first;
- req->nKeyActs = num;
- status= _XkbHandleGetMapReply(dpy, xkb);
-
- UnlockDisplay(dpy);
- SyncHandle();
- return status;
-}
-
-Status
-XkbGetKeySyms(Display *dpy,unsigned first,unsigned num,XkbDescPtr xkb)
-{
- register xkbGetMapReq *req;
- Status status;
-
- if ((dpy->flags & XlibDisplayNoXkb) ||
- (!dpy->xkb_info && !XkbUseExtension(dpy,NULL,NULL)))
- return BadAccess;
-
- if ((num<1)||(num>XkbMaxKeyCount))
- return BadValue;
-
- LockDisplay(dpy);
-
- req = _XkbGetGetMapReq(dpy, xkb);
- req->firstKeySym = first;
- req->nKeySyms = num;
- status= _XkbHandleGetMapReply(dpy, xkb);
-
- UnlockDisplay(dpy);
- SyncHandle();
-
- return status;
-}
-
-Status
-XkbGetKeyBehaviors(Display *dpy,unsigned first,unsigned num,XkbDescPtr xkb)
-{
- register xkbGetMapReq *req;
- Status status;
-
- if ((dpy->flags & XlibDisplayNoXkb) ||
- (!dpy->xkb_info && !XkbUseExtension(dpy,NULL,NULL)))
- return BadAccess;
-
- if ((num<1)||(num>XkbMaxKeyCount))
- return BadValue;
-
- LockDisplay(dpy);
-
- req = _XkbGetGetMapReq(dpy, xkb);
- req->firstKeyBehavior = first;
- req->nKeyBehaviors = num;
- status= _XkbHandleGetMapReply(dpy, xkb);
-
- UnlockDisplay(dpy);
- SyncHandle();
- return status;
-}
-
-Status
-XkbGetVirtualMods(Display *dpy,unsigned which,XkbDescPtr xkb)
-{
- register xkbGetMapReq *req;
- Status status;
-
- if ((dpy->flags & XlibDisplayNoXkb) ||
- (!dpy->xkb_info && !XkbUseExtension(dpy,NULL,NULL)))
- return BadAccess;
-
- LockDisplay(dpy);
-
- req = _XkbGetGetMapReq(dpy, xkb);
- req->virtualMods = which;
- status= _XkbHandleGetMapReply(dpy, xkb);
-
- UnlockDisplay(dpy);
- SyncHandle();
- return status;
-}
-
-Status
-XkbGetKeyExplicitComponents( Display * dpy,
- unsigned first,
- unsigned num,
- XkbDescPtr xkb)
-{
- register xkbGetMapReq *req;
- Status status;
-
- if ((dpy->flags & XlibDisplayNoXkb) ||
- (!dpy->xkb_info && !XkbUseExtension(dpy,NULL,NULL)))
- return BadAccess;
-
- if ((num<1)||(num>XkbMaxKeyCount))
- return BadValue;
-
- LockDisplay(dpy);
-
- req = _XkbGetGetMapReq(dpy, xkb);
- req->firstKeyExplicit = first;
- req->nKeyExplicit = num;
- if ((xkb!=NULL) && (xkb->server!=NULL) && (xkb->server->explicit!=NULL)) {
- if ((num>0)&&(first>=xkb->min_key_code)&&(first+num<=xkb->max_key_code))
- bzero(&xkb->server->explicit[first],num);
- }
- if (xkb)
- status= _XkbHandleGetMapReply(dpy, xkb);
- else
- status = BadMatch;
-
- UnlockDisplay(dpy);
- SyncHandle();
- return status;
-}
-
-Status
-XkbGetKeyModifierMap(Display *dpy,unsigned first,unsigned num,XkbDescPtr xkb)
-{
- register xkbGetMapReq *req;
- Status status;
-
- if ((dpy->flags & XlibDisplayNoXkb) ||
- (!dpy->xkb_info && !XkbUseExtension(dpy,NULL,NULL)))
- return BadAccess;
-
- if ((num<1)||(num>XkbMaxKeyCount))
- return BadValue;
-
- LockDisplay(dpy);
-
- req = _XkbGetGetMapReq(dpy, xkb);
- req->firstModMapKey = first;
- req->nModMapKeys = num;
- if ((xkb!=NULL) && (xkb->map!=NULL) && (xkb->map->modmap!=NULL)) {
- if ((num>0)&&(first>=xkb->min_key_code)&&(first+num<=xkb->max_key_code))
- bzero(&xkb->map->modmap[first],num);
- }
- if (xkb)
- status= _XkbHandleGetMapReply(dpy, xkb);
- else
- status = BadMatch;
-
- UnlockDisplay(dpy);
- SyncHandle();
- return status;
-}
-
-Status
-XkbGetKeyVirtualModMap(Display *dpy,unsigned first,unsigned num,XkbDescPtr xkb)
-{
- register xkbGetMapReq *req;
- Status status;
-
- if ((dpy->flags & XlibDisplayNoXkb) ||
- (!dpy->xkb_info && !XkbUseExtension(dpy,NULL,NULL)))
- return BadAccess;
-
- if ((num<1)||(num>XkbMaxKeyCount))
- return BadValue;
-
- LockDisplay(dpy);
-
- req = _XkbGetGetMapReq(dpy, xkb);
- req->firstVModMapKey = first;
- req->nVModMapKeys = num;
- if ((xkb!=NULL) && (xkb->map!=NULL) && (xkb->map->modmap!=NULL)) {
- if ((num>0)&&(first>=xkb->min_key_code)&&(first+num<=xkb->max_key_code))
- bzero(&xkb->server->vmodmap[first],num*sizeof(unsigned short));
- }
-
- if (xkb)
- status= _XkbHandleGetMapReply(dpy, xkb);
- else
- status = BadMatch;
-
- UnlockDisplay(dpy);
- SyncHandle();
- return status;
-}
-
-Status
-XkbGetMapChanges(Display *dpy,XkbDescPtr xkb,XkbMapChangesPtr changes)
-{
- xkbGetMapReq *req;
-
- if ((dpy->flags & XlibDisplayNoXkb) ||
- (!dpy->xkb_info && !XkbUseExtension(dpy,NULL,NULL)))
- return BadAccess;
- LockDisplay(dpy);
- if (changes->changed) {
- Status status= Success;
- req = _XkbGetGetMapReq(dpy, xkb);
- req->full = 0;
- req->partial = changes->changed;
- req->firstType = changes->first_type;
- req->nTypes = changes->num_types;
- req->firstKeySym = changes->first_key_sym;
- req->nKeySyms = changes->num_key_syms;
- req->firstKeyAct = changes->first_key_act;
- req->nKeyActs = changes->num_key_acts;
- req->firstKeyBehavior = changes->first_key_behavior;
- req->nKeyBehaviors = changes->num_key_behaviors;
- req->virtualMods = changes->vmods;
- req->firstKeyExplicit = changes->first_key_explicit;
- req->nKeyExplicit = changes->num_key_explicit;
- req->firstModMapKey = changes->first_modmap_key;
- req->nModMapKeys = changes->num_modmap_keys;
- req->firstVModMapKey = changes->first_vmodmap_key;
- req->nVModMapKeys = changes->num_vmodmap_keys;
- status= _XkbHandleGetMapReply(dpy, xkb);
- UnlockDisplay(dpy);
- SyncHandle();
- return status;
- }
- UnlockDisplay(dpy);
- return Success;
-}
-
+/************************************************************
+Copyright (c) 1993 by Silicon Graphics Computer Systems, Inc.
+
+Permission to use, copy, modify, and distribute this
+software and its documentation for any purpose and without
+fee is hereby granted, provided that the above copyright
+notice appear in all copies and that both that copyright
+notice and this permission notice appear in supporting
+documentation, and that the name of Silicon Graphics not be
+used in advertising or publicity pertaining to distribution
+of the software without specific prior written permission.
+Silicon Graphics makes no representation about the suitability
+of this software for any purpose. It is provided "as is"
+without any express or implied warranty.
+
+SILICON GRAPHICS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS
+SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
+AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON
+GRAPHICS BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL
+DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
+DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
+OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH
+THE USE OR PERFORMANCE OF THIS SOFTWARE.
+
+********************************************************/
+
+#define NEED_MAP_READERS
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#ifdef XKB_IN_SERVER
+#define XkbAllocClientMap SrvXkbAllocClientMap
+#define XkbAllocServerMap SrvXkbAllocServerMap
+#define XkbChangeTypesOfKey SrvXkbChangeTypesOfKey
+#define XkbCopyKeyTypes SrvXkbCopyKeyTypes
+#define XkbFreeClientMap SrvXkbFreeClientMap
+#define XkbFreeServerMap SrvXkbFreeServerMap
+#define XkbKeyTypesForCoreSymbols SrvXkbKeyTypesForCoreSymbols
+#define XkbApplyCompatMapToKey SrvXkbApplyCompatMapToKey
+#define XkbResizeKeyActions SrvXkbResizeKeyActions
+#define XkbResizeKeySyms SrvXkbResizeKeySyms
+#define XkbResizeKeyType SrvXkbResizeKeyType
+#define XkbAllocCompatMap SrvXkbAllocCompatMap
+#define XkbAllocControls SrvXkbAllocControls
+#define XkbAllocIndicatorMaps SrvXkbAllocIndicatorMaps
+#define XkbAllocKeyboard SrvXkbAllocKeyboard
+#define XkbAllocNames SrvXkbAllocNames
+#define XkbFreeCompatMap SrvXkbFreeCompatMap
+#define XkbFreeKeyboard SrvXkbFreeKeyboard
+#define XkbFreeNames SrvXkbFreeNames
+#define XkbLatchModifiers SrvXkbLatchModifiers
+#define XkbLatchGroup SrvXkbLatchGroup
+#define XkbVirtualModsToReal SrvXkbVirtualModsToReal
+#define XkbChangeKeycodeRange SrvXkbChangeKeycodeRange
+#define XkbApplyVirtualModChanges SrvXkbApplyVirtualModChanges
+#endif
+
+#include "Xlibint.h"
+#include <X11/extensions/XKBproto.h>
+#include "XKBlibint.h"
+
+static Status
+_XkbReadKeyTypes(XkbReadBufferPtr buf,XkbDescPtr xkb,xkbGetMapReply *rep)
+{
+int i,n,lastMapCount;
+XkbKeyTypePtr type;
+
+ if ( rep->nTypes>0 ) {
+ n = rep->firstType+rep->nTypes;
+ if (xkb->map->num_types>=n)
+ n= xkb->map->num_types;
+ else if (XkbAllocClientMap(xkb,XkbKeyTypesMask,n)!=Success)
+ return BadAlloc;
+
+ type = &xkb->map->types[rep->firstType];
+ for (i=0;i<(int)rep->nTypes;i++,type++) {
+ xkbKeyTypeWireDesc *desc;
+ register int ndx;
+
+ ndx= i+rep->firstType;
+ if (ndx>=xkb->map->num_types)
+ xkb->map->num_types= ndx+1;
+
+ desc= (xkbKeyTypeWireDesc *)_XkbGetReadBufferPtr(buf,
+ SIZEOF(xkbKeyTypeWireDesc));
+ if (desc==NULL)
+ return BadLength;
+
+ lastMapCount= type->map_count;
+ if ( desc->nMapEntries>0 ) {
+ if ((type->map==NULL)||(desc->nMapEntries>type->map_count)) {
+ XkbKTMapEntryRec *prev_map = type->map;
+
+ type->map= _XkbTypedRealloc(type->map,desc->nMapEntries,
+ XkbKTMapEntryRec);
+ if (type->map==NULL) {
+ _XkbFree(prev_map);
+ return BadAlloc;
+ }
+ }
+ }
+ else if (type->map!=NULL) {
+ Xfree(type->map);
+ type->map_count= 0;
+ type->map= NULL;
+ }
+
+ if ( desc->preserve && (desc->nMapEntries>0) ) {
+ if ((!type->preserve)||
+ (desc->nMapEntries>lastMapCount)) {
+ XkbModsRec *prev_preserve = type->preserve;
+
+ type->preserve= _XkbTypedRealloc(type->preserve,
+ desc->nMapEntries,
+ XkbModsRec);
+ if (type->preserve==NULL) {
+ _XkbFree(prev_preserve);
+ return BadAlloc;
+ }
+ }
+ }
+ else if (type->preserve!=NULL) {
+ Xfree(type->preserve);
+ type->preserve= NULL;
+ }
+
+ type->mods.mask = desc->mask;
+ type->mods.real_mods = desc->realMods;
+ type->mods.vmods = desc->virtualMods;
+ type->num_levels = desc->numLevels;
+ type->map_count = desc->nMapEntries;
+ if (desc->nMapEntries>0) {
+ register xkbKTMapEntryWireDesc *wire;
+ register XkbKTMapEntryPtr entry;
+ register int size;
+
+ size= type->map_count*SIZEOF(xkbKTMapEntryWireDesc);
+ wire= (xkbKTMapEntryWireDesc *)_XkbGetReadBufferPtr(buf,size);
+ if (wire==NULL)
+ return BadLength;
+ entry= type->map;
+ for (n=0;n<type->map_count;n++,wire++,entry++) {
+ entry->active= wire->active;
+ entry->level= wire->level;
+ entry->mods.mask= wire->mask;
+ entry->mods.real_mods= wire->realMods;
+ entry->mods.vmods= wire->virtualMods;
+ }
+
+ if (desc->preserve) {
+ register xkbModsWireDesc * pwire;
+ register XkbModsPtr preserve;
+ register int sz;
+
+ sz= desc->nMapEntries*SIZEOF(xkbModsWireDesc);
+ pwire=(xkbModsWireDesc *)_XkbGetReadBufferPtr(buf,sz);
+ if (pwire==NULL)
+ return BadLength;
+ preserve= type->preserve;
+ for (n=0;n<desc->nMapEntries;n++,pwire++,preserve++) {
+ preserve->mask= pwire->mask;
+ preserve->vmods= pwire->virtualMods;
+ preserve->real_mods= pwire->realMods;
+ }
+ }
+ }
+ }
+ }
+ return Success;
+}
+
+static Status
+_XkbReadKeySyms(XkbReadBufferPtr buf,XkbDescPtr xkb,xkbGetMapReply *rep)
+{
+register int i;
+XkbClientMapPtr map;
+
+ map= xkb->map;
+ if (map->key_sym_map==NULL) {
+ register int offset;
+ XkbSymMapPtr oldMap;
+ xkbSymMapWireDesc *newMap;
+ map->key_sym_map= _XkbTypedCalloc((xkb->max_key_code+1),XkbSymMapRec);
+ if (map->key_sym_map==NULL)
+ return BadAlloc;
+ if (map->syms==NULL) {
+ int sz;
+ sz= (rep->totalSyms*12)/10;
+ sz= ((sz+(unsigned)128)/128)*128;
+ map->syms = _XkbTypedCalloc(sz,KeySym);
+ if (map->syms==NULL)
+ return BadAlloc;
+ map->size_syms = sz;
+ }
+ offset = 1;
+ oldMap = &map->key_sym_map[rep->firstKeySym];
+ for (i=0;i<(int)rep->nKeySyms;i++,oldMap++) {
+ newMap= (xkbSymMapWireDesc *)
+ _XkbGetReadBufferPtr(buf,SIZEOF(xkbSymMapWireDesc));
+ if (newMap==NULL)
+ return BadLength;
+ oldMap->kt_index[0]= newMap->ktIndex[0];
+ oldMap->kt_index[1]= newMap->ktIndex[1];
+ oldMap->kt_index[2]= newMap->ktIndex[2];
+ oldMap->kt_index[3]= newMap->ktIndex[3];
+ oldMap->group_info= newMap->groupInfo;
+ oldMap->width= newMap->width;
+ oldMap->offset= offset;
+ if (offset+newMap->nSyms>=map->size_syms) {
+ register int sz;
+ KeySym *prev_syms = map->syms;
+
+ sz= map->size_syms+128;
+ map->syms= _XkbTypedRealloc(map->syms,sz,KeySym);
+ if (map->syms==NULL) {
+ _XkbFree(prev_syms);
+ map->size_syms= 0;
+ return BadAlloc;
+ }
+ map->size_syms= sz;
+ }
+ if (newMap->nSyms>0) {
+ _XkbReadBufferCopyKeySyms(buf,(KeySym *)&map->syms[offset],
+ newMap->nSyms);
+ offset+= newMap->nSyms;
+ }
+ else {
+ map->syms[offset]= 0;
+ }
+ }
+ map->num_syms= offset;
+ }
+ else {
+ xkbSymMapWireDesc * newMap;
+ XkbSymMapPtr oldMap;
+ KeySym * newSyms;
+ int tmp;
+
+ oldMap = &map->key_sym_map[rep->firstKeySym];
+ for (i=0;i<(int)rep->nKeySyms;i++,oldMap++) {
+ newMap= (xkbSymMapWireDesc *)
+ _XkbGetReadBufferPtr(buf,SIZEOF(xkbSymMapWireDesc));
+ if (newMap==NULL)
+ return BadLength;
+
+ if (newMap->nSyms>0)
+ tmp= newMap->nSyms;
+ else tmp= 0;
+
+ newSyms = XkbResizeKeySyms(xkb,i+rep->firstKeySym,tmp);
+ if (newSyms==NULL)
+ return BadAlloc;
+ if (newMap->nSyms>0)
+ _XkbReadBufferCopyKeySyms(buf,newSyms,newMap->nSyms);
+ else newSyms[0]= NoSymbol;
+ oldMap->kt_index[0] = newMap->ktIndex[0];
+ oldMap->kt_index[1] = newMap->ktIndex[1];
+ oldMap->kt_index[2] = newMap->ktIndex[2];
+ oldMap->kt_index[3] = newMap->ktIndex[3];
+ oldMap->group_info = newMap->groupInfo;
+ oldMap->width = newMap->width;
+ }
+ }
+ return Success;
+}
+
+static Status
+_XkbReadKeyActions(XkbReadBufferPtr buf,XkbDescPtr info,xkbGetMapReply *rep)
+{
+int i;
+CARD8 numDescBuf[248];
+CARD8* numDesc = NULL;
+register int nKeyActs;
+Status ret = Success;
+
+ if ( (nKeyActs=rep->nKeyActs)>0 ) {
+ XkbSymMapPtr symMap;
+
+ if (nKeyActs < sizeof numDescBuf) numDesc = numDescBuf;
+ else numDesc = Xmalloc (nKeyActs * sizeof(CARD8));
+
+ if (!_XkbCopyFromReadBuffer(buf, (char *)numDesc, nKeyActs)) {
+ ret = BadLength;
+ goto done;
+ }
+ i= XkbPaddedSize(nKeyActs)-nKeyActs;
+ if ((i>0)&&(!_XkbSkipReadBufferData(buf,i))) {
+ ret = BadLength;
+ goto done;
+ }
+ symMap = &info->map->key_sym_map[rep->firstKeyAct];
+ for (i=0;i<(int)rep->nKeyActs;i++,symMap++) {
+ if (numDesc[i]==0) {
+ info->server->key_acts[i+rep->firstKeyAct]= 0;
+ }
+ else {
+ XkbAction *newActs;
+ /* 8/16/93 (ef) -- XXX! Verify size here (numdesc must be */
+ /* either zero or XkbKeyNumSyms(info,key) */
+ newActs=XkbResizeKeyActions(info,i+rep->firstKeyAct,
+ numDesc[i]);
+ if (newActs==NULL) {
+ ret = BadAlloc;
+ goto done;
+ }
+ if (!_XkbCopyFromReadBuffer(buf,(char *)newActs,
+ (int)(numDesc[i]*sizeof(XkbAction)))) {
+ ret = BadLength;
+ goto done;
+ }
+ }
+ }
+ }
+done:
+ if (numDesc != NULL && numDesc != numDescBuf) Xfree (numDesc);
+ return ret;
+}
+
+static Status
+_XkbReadKeyBehaviors(XkbReadBufferPtr buf,XkbDescPtr xkb,xkbGetMapReply *rep)
+{
+register int i;
+xkbBehaviorWireDesc *wire;
+
+ if ( rep->totalKeyBehaviors>0 ) {
+ if ( xkb->server->behaviors == NULL ) {
+ int size = xkb->max_key_code+1;
+ xkb->server->behaviors = _XkbTypedCalloc(size,XkbBehavior);
+ if (xkb->server->behaviors==NULL)
+ return BadAlloc;
+ }
+ else {
+ bzero(&xkb->server->behaviors[rep->firstKeyBehavior],
+ (rep->nKeyBehaviors*sizeof(XkbBehavior)));
+ }
+ for (i=0;i<rep->totalKeyBehaviors;i++) {
+ wire= (xkbBehaviorWireDesc *)_XkbGetReadBufferPtr(buf,
+ SIZEOF(xkbBehaviorWireDesc));
+ if (wire==NULL)
+ return BadLength;
+ xkb->server->behaviors[wire->key].type= wire->type;
+ xkb->server->behaviors[wire->key].data= wire->data;
+ }
+ }
+ return Success;
+}
+
+static Status
+_XkbReadVirtualMods(XkbReadBufferPtr buf,XkbDescPtr xkb,xkbGetMapReply *rep)
+{
+ if ( rep->virtualMods ) {
+ register int i,bit,nVMods;
+ register char *data;
+
+ for (i=nVMods=0,bit=1;i<XkbNumVirtualMods;i++,bit<<=1) {
+ if (rep->virtualMods&bit)
+ nVMods++;
+ }
+ data= _XkbGetReadBufferPtr(buf,XkbPaddedSize(nVMods));
+ if (data==NULL)
+ return BadLength;
+ for (i=0,bit=1;(i<XkbNumVirtualMods)&&(nVMods>0);i++,bit<<=1) {
+ if (rep->virtualMods&bit) {
+ xkb->server->vmods[i]= *data++;
+ nVMods--;
+ }
+ }
+ }
+ return Success;
+}
+
+static Status
+_XkbReadExplicitComponents( XkbReadBufferPtr buf,
+ XkbDescPtr xkb,
+ xkbGetMapReply * rep)
+{
+register int i;
+unsigned char *wire;
+
+ if ( rep->totalKeyExplicit>0 ) {
+ if ( xkb->server->explicit == NULL ) {
+ int size = xkb->max_key_code+1;
+ xkb->server->explicit = _XkbTypedCalloc(size,unsigned char);
+ if (xkb->server->explicit==NULL)
+ return BadAlloc;
+ }
+ else {
+ bzero(&xkb->server->explicit[rep->firstKeyExplicit],
+ rep->nKeyExplicit);
+ }
+ i= XkbPaddedSize(2*rep->totalKeyExplicit);
+ wire=(unsigned char *)_XkbGetReadBufferPtr(buf,i);
+ if (!wire)
+ return BadLength;
+ for (i=0;i<rep->totalKeyExplicit;i++,wire+=2) {
+ xkb->server->explicit[wire[0]]= wire[1];
+ }
+ }
+ return Success;
+}
+
+static Status
+_XkbReadModifierMap(XkbReadBufferPtr buf,XkbDescPtr xkb,xkbGetMapReply *rep)
+{
+register int i;
+unsigned char *wire;
+
+ if ( rep->totalModMapKeys>0 ) {
+ if ((xkb->map->modmap==NULL)&&
+ (XkbAllocClientMap(xkb,XkbModifierMapMask,0)!=Success)) {
+ return BadAlloc;
+ }
+ else {
+ bzero(&xkb->map->modmap[rep->firstModMapKey],rep->nModMapKeys);
+ }
+ i= XkbPaddedSize(2*rep->totalModMapKeys);
+ wire=(unsigned char *)_XkbGetReadBufferPtr(buf,i);
+ if (!wire)
+ return BadLength;
+ for (i=0;i<rep->totalModMapKeys;i++,wire+=2) {
+ xkb->map->modmap[wire[0]]= wire[1];
+ }
+ }
+ return Success;
+}
+
+static Status
+_XkbReadVirtualModMap(XkbReadBufferPtr buf,XkbDescPtr xkb,xkbGetMapReply *rep)
+{
+register int i;
+xkbVModMapWireDesc * wire;
+XkbServerMapPtr srv;
+
+ if ( rep->totalVModMapKeys>0 ) {
+ if (((xkb->server==NULL)||(xkb->server->vmodmap==NULL))&&
+ (XkbAllocServerMap(xkb,XkbVirtualModMapMask,0)!=Success)) {
+ return BadAlloc;
+ }
+ else {
+ srv= xkb->server;
+ if (rep->nVModMapKeys > rep->firstVModMapKey)
+ bzero((char *)&srv->vmodmap[rep->firstVModMapKey],
+ (rep->nVModMapKeys - rep->firstVModMapKey) *
+ sizeof(unsigned short));
+ }
+ srv= xkb->server;
+ i= rep->totalVModMapKeys*SIZEOF(xkbVModMapWireDesc);
+ wire=(xkbVModMapWireDesc *)_XkbGetReadBufferPtr(buf,i);
+ if (!wire)
+ return BadLength;
+ for (i=0;i<rep->totalVModMapKeys;i++,wire++) {
+ if ((wire->key>=xkb->min_key_code)&&(wire->key<=xkb->max_key_code))
+ srv->vmodmap[wire->key]= wire->vmods;
+ }
+ }
+ return Success;
+}
+
+static xkbGetMapReq *
+_XkbGetGetMapReq(Display *dpy,XkbDescPtr xkb)
+{
+xkbGetMapReq *req;
+
+ GetReq(kbGetMap, req);
+ req->reqType = dpy->xkb_info->codes->major_opcode;
+ req->xkbReqType = X_kbGetMap;
+ req->deviceSpec = xkb->device_spec;
+ req->full = req->partial = 0;
+ req->firstType = req->nTypes = 0;
+ req->firstKeySym = req->nKeySyms = 0;
+ req->firstKeyAct = req->nKeyActs = 0;
+ req->firstKeyBehavior = req->nKeyBehaviors = 0;
+ req->virtualMods = 0;
+ req->firstKeyExplicit = req->nKeyExplicit = 0;
+ req->firstModMapKey = req->nModMapKeys = 0;
+ req->firstVModMapKey = req->nVModMapKeys = 0;
+ return req;
+}
+
+Status
+_XkbReadGetMapReply( Display * dpy,
+ xkbGetMapReply *rep,
+ XkbDescPtr xkb,
+ int * nread_rtrn)
+{
+int extraData;
+unsigned mask;
+
+ if ( xkb->device_spec == XkbUseCoreKbd )
+ xkb->device_spec= rep->deviceID;
+ xkb->min_key_code = rep->minKeyCode;
+ xkb->max_key_code = rep->maxKeyCode;
+
+ if (!xkb->map) {
+ mask= rep->present&XkbAllClientInfoMask;
+ if (mask&&(XkbAllocClientMap(xkb,mask,rep->nTypes)!=Success))
+ return BadAlloc;
+ }
+ if (!xkb->server) {
+ mask= rep->present&XkbAllServerInfoMask;
+ if (mask&&(XkbAllocServerMap(xkb,mask,rep->totalActs)!=Success))
+ return BadAlloc;
+ }
+ extraData= (int)(rep->length*4);
+ extraData-= (SIZEOF(xkbGetMapReply)-SIZEOF(xGenericReply));
+ if (rep->length) {
+ XkbReadBufferRec buf;
+ int left;
+ if (_XkbInitReadBuffer(dpy,&buf,extraData)) {
+ Status status= Success;
+ if (nread_rtrn!=NULL)
+ *nread_rtrn= extraData;
+ if (status==Success)
+ status= _XkbReadKeyTypes(&buf,xkb,rep);
+ if (status==Success)
+ status= _XkbReadKeySyms(&buf,xkb,rep);
+ if (status==Success)
+ status= _XkbReadKeyActions(&buf,xkb,rep);
+ if (status==Success)
+ status= _XkbReadKeyBehaviors(&buf,xkb,rep);
+ if (status==Success)
+ status= _XkbReadVirtualMods(&buf,xkb,rep);
+ if (status==Success)
+ status= _XkbReadExplicitComponents(&buf,xkb,rep);
+ if (status==Success)
+ status= _XkbReadModifierMap(&buf,xkb,rep);
+ if (status==Success)
+ status= _XkbReadVirtualModMap(&buf,xkb,rep);
+ left= _XkbFreeReadBuffer(&buf);
+ if (status!=Success) return status;
+ else if ( left || buf.error ) return BadLength;
+ }
+ else return BadAlloc;
+ }
+ return Success;
+}
+
+static Status
+_XkbHandleGetMapReply(Display *dpy,XkbDescPtr xkb)
+{
+xkbGetMapReply rep;
+
+ if (!_XReply(dpy, (xReply *)&rep,
+ ( (SIZEOF(xkbGetMapReply)-SIZEOF(xGenericReply)) >> 2 ),
+ xFalse)) {
+ return BadImplementation;
+ }
+ return _XkbReadGetMapReply(dpy,&rep,xkb,NULL);
+}
+
+Status
+XkbGetUpdatedMap(Display *dpy,unsigned which,XkbDescPtr xkb)
+{
+ if ((dpy->flags & XlibDisplayNoXkb) ||
+ (!dpy->xkb_info && !XkbUseExtension(dpy,NULL,NULL)))
+ return BadAccess;
+ if (which) {
+ register xkbGetMapReq *req;
+ Status status;
+
+ LockDisplay(dpy);
+
+ req = _XkbGetGetMapReq(dpy, xkb);
+ req->full = which;
+ status= _XkbHandleGetMapReply(dpy, xkb);
+
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return status;
+ }
+ return Success;
+}
+
+XkbDescPtr
+XkbGetMap(Display *dpy,unsigned which,unsigned deviceSpec)
+{
+XkbDescPtr xkb;
+
+ xkb = _XkbTypedCalloc(1,XkbDescRec);
+ if (xkb) {
+ xkb->device_spec = deviceSpec;
+ xkb->map = _XkbTypedCalloc(1,XkbClientMapRec);
+ if ((xkb->map==NULL)||
+ ((which)&&(XkbGetUpdatedMap(dpy,which,xkb)!=Success))) {
+ if (xkb->map) {
+ Xfree(xkb->map);
+ xkb->map= NULL;
+ }
+ Xfree(xkb);
+ return NULL;
+ }
+ xkb->dpy= dpy;
+ }
+ return xkb;
+}
+
+Status
+XkbGetKeyTypes(Display *dpy,unsigned first,unsigned num,XkbDescPtr xkb)
+{
+ register xkbGetMapReq *req;
+ Status status;
+
+ if ((dpy->flags & XlibDisplayNoXkb) ||
+ (!dpy->xkb_info && !XkbUseExtension(dpy,NULL,NULL)))
+ return BadAccess;
+ if ((num<1)||(num>XkbMaxKeyTypes))
+ return BadValue;
+
+ LockDisplay(dpy);
+
+ req = _XkbGetGetMapReq(dpy, xkb);
+ req->firstType = first;
+ req->nTypes = num;
+ status= _XkbHandleGetMapReply(dpy, xkb);
+
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return status;
+}
+
+Status
+XkbGetKeyActions(Display *dpy,unsigned first,unsigned num,XkbDescPtr xkb)
+{
+ register xkbGetMapReq *req;
+ Status status;
+
+ if ((dpy->flags & XlibDisplayNoXkb) ||
+ (!dpy->xkb_info && !XkbUseExtension(dpy,NULL,NULL)))
+ return BadAccess;
+
+ if ((num<1)||(num>XkbMaxKeyCount))
+ return BadValue;
+
+ LockDisplay(dpy);
+
+ req = _XkbGetGetMapReq(dpy, xkb);
+ req->firstKeyAct = first;
+ req->nKeyActs = num;
+ status= _XkbHandleGetMapReply(dpy, xkb);
+
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return status;
+}
+
+Status
+XkbGetKeySyms(Display *dpy,unsigned first,unsigned num,XkbDescPtr xkb)
+{
+ register xkbGetMapReq *req;
+ Status status;
+
+ if ((dpy->flags & XlibDisplayNoXkb) ||
+ (!dpy->xkb_info && !XkbUseExtension(dpy,NULL,NULL)))
+ return BadAccess;
+
+ if ((num<1)||(num>XkbMaxKeyCount))
+ return BadValue;
+
+ LockDisplay(dpy);
+
+ req = _XkbGetGetMapReq(dpy, xkb);
+ req->firstKeySym = first;
+ req->nKeySyms = num;
+ status= _XkbHandleGetMapReply(dpy, xkb);
+
+ UnlockDisplay(dpy);
+ SyncHandle();
+
+ return status;
+}
+
+Status
+XkbGetKeyBehaviors(Display *dpy,unsigned first,unsigned num,XkbDescPtr xkb)
+{
+ register xkbGetMapReq *req;
+ Status status;
+
+ if ((dpy->flags & XlibDisplayNoXkb) ||
+ (!dpy->xkb_info && !XkbUseExtension(dpy,NULL,NULL)))
+ return BadAccess;
+
+ if ((num<1)||(num>XkbMaxKeyCount))
+ return BadValue;
+
+ LockDisplay(dpy);
+
+ req = _XkbGetGetMapReq(dpy, xkb);
+ req->firstKeyBehavior = first;
+ req->nKeyBehaviors = num;
+ status= _XkbHandleGetMapReply(dpy, xkb);
+
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return status;
+}
+
+Status
+XkbGetVirtualMods(Display *dpy,unsigned which,XkbDescPtr xkb)
+{
+ register xkbGetMapReq *req;
+ Status status;
+
+ if ((dpy->flags & XlibDisplayNoXkb) ||
+ (!dpy->xkb_info && !XkbUseExtension(dpy,NULL,NULL)))
+ return BadAccess;
+
+ LockDisplay(dpy);
+
+ req = _XkbGetGetMapReq(dpy, xkb);
+ req->virtualMods = which;
+ status= _XkbHandleGetMapReply(dpy, xkb);
+
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return status;
+}
+
+Status
+XkbGetKeyExplicitComponents( Display * dpy,
+ unsigned first,
+ unsigned num,
+ XkbDescPtr xkb)
+{
+ register xkbGetMapReq *req;
+ Status status;
+
+ if ((dpy->flags & XlibDisplayNoXkb) ||
+ (!dpy->xkb_info && !XkbUseExtension(dpy,NULL,NULL)))
+ return BadAccess;
+
+ if ((num<1)||(num>XkbMaxKeyCount))
+ return BadValue;
+
+ LockDisplay(dpy);
+
+ req = _XkbGetGetMapReq(dpy, xkb);
+ req->firstKeyExplicit = first;
+ req->nKeyExplicit = num;
+ if ((xkb!=NULL) && (xkb->server!=NULL) && (xkb->server->explicit!=NULL)) {
+ if ((num>0)&&(first>=xkb->min_key_code)&&(first+num<=xkb->max_key_code))
+ bzero(&xkb->server->explicit[first],num);
+ }
+ if (xkb)
+ status= _XkbHandleGetMapReply(dpy, xkb);
+ else
+ status = BadMatch;
+
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return status;
+}
+
+Status
+XkbGetKeyModifierMap(Display *dpy,unsigned first,unsigned num,XkbDescPtr xkb)
+{
+ register xkbGetMapReq *req;
+ Status status;
+
+ if ((dpy->flags & XlibDisplayNoXkb) ||
+ (!dpy->xkb_info && !XkbUseExtension(dpy,NULL,NULL)))
+ return BadAccess;
+
+ if ((num<1)||(num>XkbMaxKeyCount))
+ return BadValue;
+
+ LockDisplay(dpy);
+
+ req = _XkbGetGetMapReq(dpy, xkb);
+ req->firstModMapKey = first;
+ req->nModMapKeys = num;
+ if ((xkb!=NULL) && (xkb->map!=NULL) && (xkb->map->modmap!=NULL)) {
+ if ((num>0)&&(first>=xkb->min_key_code)&&(first+num<=xkb->max_key_code))
+ bzero(&xkb->map->modmap[first],num);
+ }
+ if (xkb)
+ status= _XkbHandleGetMapReply(dpy, xkb);
+ else
+ status = BadMatch;
+
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return status;
+}
+
+Status
+XkbGetKeyVirtualModMap(Display *dpy,unsigned first,unsigned num,XkbDescPtr xkb)
+{
+ register xkbGetMapReq *req;
+ Status status;
+
+ if ((dpy->flags & XlibDisplayNoXkb) ||
+ (!dpy->xkb_info && !XkbUseExtension(dpy,NULL,NULL)))
+ return BadAccess;
+
+ if ((num<1)||(num>XkbMaxKeyCount))
+ return BadValue;
+
+ LockDisplay(dpy);
+
+ req = _XkbGetGetMapReq(dpy, xkb);
+ req->firstVModMapKey = first;
+ req->nVModMapKeys = num;
+ if ((xkb!=NULL) && (xkb->map!=NULL) && (xkb->map->modmap!=NULL)) {
+ if ((num>0)&&(first>=xkb->min_key_code)&&(first+num<=xkb->max_key_code))
+ bzero(&xkb->server->vmodmap[first],num*sizeof(unsigned short));
+ }
+
+ if (xkb)
+ status= _XkbHandleGetMapReply(dpy, xkb);
+ else
+ status = BadMatch;
+
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return status;
+}
+
+Status
+XkbGetMapChanges(Display *dpy,XkbDescPtr xkb,XkbMapChangesPtr changes)
+{
+ xkbGetMapReq *req;
+
+ if ((dpy->flags & XlibDisplayNoXkb) ||
+ (!dpy->xkb_info && !XkbUseExtension(dpy,NULL,NULL)))
+ return BadAccess;
+ LockDisplay(dpy);
+ if (changes->changed) {
+ Status status= Success;
+ req = _XkbGetGetMapReq(dpy, xkb);
+ req->full = 0;
+ req->partial = changes->changed;
+ req->firstType = changes->first_type;
+ req->nTypes = changes->num_types;
+ req->firstKeySym = changes->first_key_sym;
+ req->nKeySyms = changes->num_key_syms;
+ req->firstKeyAct = changes->first_key_act;
+ req->nKeyActs = changes->num_key_acts;
+ req->firstKeyBehavior = changes->first_key_behavior;
+ req->nKeyBehaviors = changes->num_key_behaviors;
+ req->virtualMods = changes->vmods;
+ req->firstKeyExplicit = changes->first_key_explicit;
+ req->nKeyExplicit = changes->num_key_explicit;
+ req->firstModMapKey = changes->first_modmap_key;
+ req->nModMapKeys = changes->num_modmap_keys;
+ req->firstVModMapKey = changes->first_vmodmap_key;
+ req->nVModMapKeys = changes->num_vmodmap_keys;
+ status= _XkbHandleGetMapReply(dpy, xkb);
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return status;
+ }
+ UnlockDisplay(dpy);
+ return Success;
+}
+
diff --git a/libX11/src/xkb/XKBMAlloc.c b/libX11/src/xkb/XKBMAlloc.c
index f65e4e914..a6b392168 100644
--- a/libX11/src/xkb/XKBMAlloc.c
+++ b/libX11/src/xkb/XKBMAlloc.c
@@ -1,990 +1,990 @@
-/************************************************************
-Copyright (c) 1993 by Silicon Graphics Computer Systems, Inc.
-
-Permission to use, copy, modify, and distribute this
-software and its documentation for any purpose and without
-fee is hereby granted, provided that the above copyright
-notice appear in all copies and that both that copyright
-notice and this permission notice appear in supporting
-documentation, and that the name of Silicon Graphics not be
-used in advertising or publicity pertaining to distribution
-of the software without specific prior written permission.
-Silicon Graphics makes no representation about the suitability
-of this software for any purpose. It is provided "as is"
-without any express or implied warranty.
-
-SILICON GRAPHICS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS
-SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
-AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON
-GRAPHICS BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL
-DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
-DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
-OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH
-THE USE OR PERFORMANCE OF THIS SOFTWARE.
-
-********************************************************/
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#elif defined(HAVE_CONFIG_H)
-#include <config.h>
-#endif
-
-#ifndef XKB_IN_SERVER
-
-#include <stdio.h>
-#include "Xlibint.h"
-#include <X11/extensions/XKBproto.h>
-#include <X11/keysym.h>
-#include "XKBlibint.h"
-
-#else
-
-#include <stdio.h>
-#include <X11/X.h>
-#include <X11/Xproto.h>
-#include "misc.h"
-#include "inputstr.h"
-#include <X11/keysym.h>
-#define XKBSRV_NEED_FILE_FUNCS
-#include <X11/extensions/XKBsrv.h>
-
-#endif /* XKB_IN_SERVER */
-
-/***====================================================================***/
-
-Status
-XkbAllocClientMap(XkbDescPtr xkb,unsigned which,unsigned nTotalTypes)
-{
-register int i;
-XkbClientMapPtr map;
-
- if ((xkb==NULL)||((nTotalTypes>0)&&(nTotalTypes<XkbNumRequiredTypes)))
- return BadValue;
- if ((which&XkbKeySymsMask)&&
- ((!XkbIsLegalKeycode(xkb->min_key_code))||
- (!XkbIsLegalKeycode(xkb->max_key_code))||
- (xkb->max_key_code<xkb->min_key_code))) {
-#ifdef DEBUG
-fprintf(stderr,"bad keycode (%d,%d) in XkbAllocClientMap\n",
- xkb->min_key_code,xkb->max_key_code);
-#endif
- return BadValue;
- }
-
- if (xkb->map==NULL) {
- map= _XkbTypedCalloc(1,XkbClientMapRec);
- if (map==NULL)
- return BadAlloc;
- xkb->map= map;
- }
- else map= xkb->map;
-
- if ((which&XkbKeyTypesMask)&&(nTotalTypes>0)) {
- if (map->types==NULL) {
- map->types= _XkbTypedCalloc(nTotalTypes,XkbKeyTypeRec);
- if (map->types==NULL)
- return BadAlloc;
- map->num_types= 0;
- map->size_types= nTotalTypes;
- }
- else if (map->size_types<nTotalTypes) {
- XkbKeyTypeRec *prev_types = map->types;
-
- map->types= _XkbTypedRealloc(map->types,nTotalTypes,XkbKeyTypeRec);
- if (map->types==NULL) {
- _XkbFree(prev_types);
- map->num_types= map->size_types= 0;
- return BadAlloc;
- }
- map->size_types= nTotalTypes;
- bzero(&map->types[map->num_types],
- ((map->size_types-map->num_types)*sizeof(XkbKeyTypeRec)));
- }
- }
- if (which&XkbKeySymsMask) {
- int nKeys= XkbNumKeys(xkb);
- if (map->syms==NULL) {
- map->size_syms= (nKeys*15)/10;
- map->syms= _XkbTypedCalloc(map->size_syms,KeySym);
- if (!map->syms) {
- map->size_syms= 0;
- return BadAlloc;
- }
- map->num_syms= 1;
- map->syms[0]= NoSymbol;
- }
- if (map->key_sym_map==NULL) {
- i= xkb->max_key_code+1;
- map->key_sym_map= _XkbTypedCalloc(i,XkbSymMapRec);
- if (map->key_sym_map==NULL)
- return BadAlloc;
- }
- }
- if (which&XkbModifierMapMask) {
- if ((!XkbIsLegalKeycode(xkb->min_key_code))||
- (!XkbIsLegalKeycode(xkb->max_key_code))||
- (xkb->max_key_code<xkb->min_key_code))
- return BadMatch;
- if (map->modmap==NULL) {
- i= xkb->max_key_code+1;
- map->modmap= _XkbTypedCalloc(i,unsigned char);
- if (map->modmap==NULL)
- return BadAlloc;
- }
- }
- return Success;
-}
-
-Status
-XkbAllocServerMap(XkbDescPtr xkb,unsigned which,unsigned nNewActions)
-{
-register int i;
-XkbServerMapPtr map;
-
- if (xkb==NULL)
- return BadMatch;
- if (xkb->server==NULL) {
- map= _XkbTypedCalloc(1,XkbServerMapRec);
- if (map==NULL)
- return BadAlloc;
- for (i=0;i<XkbNumVirtualMods;i++) {
- map->vmods[i]= XkbNoModifierMask;
- }
- xkb->server= map;
- }
- else map= xkb->server;
- if (which&XkbExplicitComponentsMask) {
- if ((!XkbIsLegalKeycode(xkb->min_key_code))||
- (!XkbIsLegalKeycode(xkb->max_key_code))||
- (xkb->max_key_code<xkb->min_key_code))
- return BadMatch;
- if (map->explicit==NULL) {
- i= xkb->max_key_code+1;
- map->explicit= _XkbTypedCalloc(i,unsigned char);
- if (map->explicit==NULL)
- return BadAlloc;
- }
- }
- if (which&XkbKeyActionsMask) {
- if ((!XkbIsLegalKeycode(xkb->min_key_code))||
- (!XkbIsLegalKeycode(xkb->max_key_code))||
- (xkb->max_key_code<xkb->min_key_code))
- return BadMatch;
- if (nNewActions<1)
- nNewActions= 1;
- if (map->acts==NULL) {
- map->acts= _XkbTypedCalloc((nNewActions+1),XkbAction);
- if (map->acts==NULL)
- return BadAlloc;
- map->num_acts= 1;
- map->size_acts= nNewActions+1;
- }
- else if ((map->size_acts-map->num_acts)<nNewActions) {
- unsigned need;
- XkbAction *prev_acts = map->acts;
- need= map->num_acts+nNewActions;
- map->acts= _XkbTypedRealloc(map->acts,need,XkbAction);
- if (map->acts==NULL) {
- _XkbFree(prev_acts);
- map->num_acts= map->size_acts= 0;
- return BadAlloc;
- }
- map->size_acts= need;
- bzero(&map->acts[map->num_acts],
- ((map->size_acts-map->num_acts)*sizeof(XkbAction)));
- }
- if (map->key_acts==NULL) {
- i= xkb->max_key_code+1;
- map->key_acts= _XkbTypedCalloc(i,unsigned short);
- if (map->key_acts==NULL)
- return BadAlloc;
- }
- }
- if (which&XkbKeyBehaviorsMask) {
- if ((!XkbIsLegalKeycode(xkb->min_key_code))||
- (!XkbIsLegalKeycode(xkb->max_key_code))||
- (xkb->max_key_code<xkb->min_key_code))
- return BadMatch;
- if (map->behaviors==NULL) {
- i= xkb->max_key_code+1;
- map->behaviors= _XkbTypedCalloc(i,XkbBehavior);
- if (map->behaviors==NULL)
- return BadAlloc;
- }
- }
- if (which&XkbVirtualModMapMask) {
- if ((!XkbIsLegalKeycode(xkb->min_key_code))||
- (!XkbIsLegalKeycode(xkb->max_key_code))||
- (xkb->max_key_code<xkb->min_key_code))
- return BadMatch;
- if (map->vmodmap==NULL) {
- i= xkb->max_key_code+1;
- map->vmodmap= _XkbTypedCalloc(i,unsigned short);
- if (map->vmodmap==NULL)
- return BadAlloc;
- }
- }
- return Success;
-}
-
-/***====================================================================***/
-
-Status
-XkbCopyKeyType(XkbKeyTypePtr from,XkbKeyTypePtr into)
-{
- if ((!from)||(!into))
- return BadMatch;
- if (into->map) {
- _XkbFree(into->map);
- into->map= NULL;
- }
- if (into->preserve) {
- _XkbFree(into->preserve);
- into->preserve= NULL;
- }
- if (into->level_names) {
- _XkbFree(into->level_names);
- into->level_names= NULL;
- }
- *into= *from;
- if ((from->map)&&(into->map_count>0)) {
- into->map= _XkbTypedCalloc(into->map_count,XkbKTMapEntryRec);
- if (!into->map)
- return BadAlloc;
- memcpy(into->map,from->map,into->map_count*sizeof(XkbKTMapEntryRec));
- }
- if ((from->preserve)&&(into->map_count>0)) {
- into->preserve= _XkbTypedCalloc(into->map_count,XkbModsRec);
- if (!into->preserve)
- return BadAlloc;
- memcpy(into->preserve,from->preserve,
- into->map_count*sizeof(XkbModsRec));
- }
- if ((from->level_names)&&(into->num_levels>0)) {
- into->level_names= _XkbTypedCalloc(into->num_levels,Atom);
- if (!into->level_names)
- return BadAlloc;
- memcpy(into->level_names,from->level_names,
- into->num_levels*sizeof(Atom));
- }
- return Success;
-}
-
-Status
-XkbCopyKeyTypes(XkbKeyTypePtr from,XkbKeyTypePtr into,int num_types)
-{
-register int i,rtrn;
-
- if ((!from)||(!into)||(num_types<0))
- return BadMatch;
- for (i=0;i<num_types;i++) {
- if ((rtrn= XkbCopyKeyType(from++,into++))!=Success)
- return rtrn;
- }
- return Success;
-}
-
-XkbKeyTypePtr
-XkbAddKeyType( XkbDescPtr xkb,
- Atom name,
- int map_count,
- Bool want_preserve,
- int num_lvls)
-{
-register int i;
-unsigned tmp;
-XkbKeyTypePtr type;
-XkbClientMapPtr map;
-
- if ((!xkb)||(num_lvls<1))
- return NULL;
- map= xkb->map;
- if ((map)&&(map->types)) {
- for (i=0;i<map->num_types;i++) {
- if (map->types[i].name==name) {
- Status status;
- status=XkbResizeKeyType(xkb,i,map_count,want_preserve,num_lvls);
- return (status==Success?&map->types[i]:NULL);
- }
- }
- }
- if ((!map)||(!map->types)||(!map->num_types<XkbNumRequiredTypes)) {
- tmp= XkbNumRequiredTypes+1;
- if (XkbAllocClientMap(xkb,XkbKeyTypesMask,tmp)!=Success)
- return NULL;
- if (!map)
- map = xkb->map;
- tmp= 0;
- if (map->num_types<=XkbKeypadIndex)
- tmp|= XkbKeypadMask;
- if (map->num_types<=XkbAlphabeticIndex)
- tmp|= XkbAlphabeticMask;
- if (map->num_types<=XkbTwoLevelIndex)
- tmp|= XkbTwoLevelMask;
- if (map->num_types<=XkbOneLevelIndex)
- tmp|= XkbOneLevelMask;
- if (XkbInitCanonicalKeyTypes(xkb,tmp,XkbNoModifier)==Success) {
- for (i=0;i<map->num_types;i++) {
- Status status;
- if (map->types[i].name!=name)
- continue;
- status=XkbResizeKeyType(xkb,i,map_count,want_preserve,num_lvls);
- return (status==Success?&map->types[i]:NULL);
- }
- }
- }
- if ((map->num_types<=map->size_types)&&
- (XkbAllocClientMap(xkb,XkbKeyTypesMask,map->num_types+1)!=Success)) {
- return NULL;
- }
- type= &map->types[map->num_types];
- map->num_types++;
- bzero((char *)type,sizeof(XkbKeyTypeRec));
- type->num_levels= num_lvls;
- type->map_count= map_count;
- type->name= name;
- if (map_count>0) {
- type->map= _XkbTypedCalloc(map_count,XkbKTMapEntryRec);
- if (!type->map) {
- map->num_types--;
- return NULL;
- }
- if (want_preserve) {
- type->preserve= _XkbTypedCalloc(map_count,XkbModsRec);
- if (!type->preserve) {
- _XkbFree(type->map);
- map->num_types--;
- return NULL;
- }
- }
- }
- return type;
-}
-
-Status
-XkbResizeKeyType( XkbDescPtr xkb,
- int type_ndx,
- int map_count,
- Bool want_preserve,
- int new_num_lvls)
-{
-XkbKeyTypePtr type;
-KeyCode matchingKeys[XkbMaxKeyCount],nMatchingKeys;
-
- if ((type_ndx<0)||(type_ndx>=xkb->map->num_types)||(map_count<0)||
- (new_num_lvls<1))
- return BadValue;
- switch (type_ndx) {
- case XkbOneLevelIndex:
- if (new_num_lvls!=1)
- return BadMatch;
- break;
- case XkbTwoLevelIndex:
- case XkbAlphabeticIndex:
- case XkbKeypadIndex:
- if (new_num_lvls!=2)
- return BadMatch;
- break;
- }
- type= &xkb->map->types[type_ndx];
- if (map_count==0) {
- if (type->map!=NULL)
- _XkbFree(type->map);
- type->map= NULL;
- if (type->preserve!=NULL)
- _XkbFree(type->preserve);
- type->preserve= NULL;
- type->map_count= 0;
- }
- else {
- XkbKTMapEntryRec *prev_map = type->map;
-
- if ((map_count>type->map_count)||(type->map==NULL))
- type->map=_XkbTypedRealloc(type->map,map_count,XkbKTMapEntryRec);
- if (!type->map) {
- if (prev_map)
- _XkbFree(prev_map);
- return BadAlloc;
- }
- if (want_preserve) {
- XkbModsRec *prev_preserve = type->preserve;
-
- if ((map_count>type->map_count)||(type->preserve==NULL)) {
- type->preserve= _XkbTypedRealloc(type->preserve,map_count,
- XkbModsRec);
- }
- if (!type->preserve) {
- if (prev_preserve)
- _XkbFree(prev_preserve);
- return BadAlloc;
- }
- }
- else if (type->preserve!=NULL) {
- _XkbFree(type->preserve);
- type->preserve= NULL;
- }
- type->map_count= map_count;
- }
-
- if ((new_num_lvls>type->num_levels)||(type->level_names==NULL)) {
- Atom * prev_level_names = type->level_names;
-
- type->level_names=_XkbTypedRealloc(type->level_names,new_num_lvls,Atom);
- if (!type->level_names) {
- if (prev_level_names)
- _XkbFree(prev_level_names);
- return BadAlloc;
- }
- }
- /*
- * Here's the theory:
- * If the width of the type changed, we might have to resize the symbol
- * maps for any keys that use the type for one or more groups. This is
- * expensive, so we'll try to cull out any keys that are obviously okay:
- * In any case:
- * - keys that have a group width <= the old width are okay (because
- * they could not possibly have been associated with the old type)
- * If the key type increased in size:
- * - keys that already have a group width >= to the new width are okay
- * + keys that have a group width >= the old width but < the new width
- * might have to be enlarged.
- * If the key type decreased in size:
- * - keys that have a group width > the old width don't have to be
- * resized (because they must have some other wider type associated
- * with some group).
- * + keys that have a group width == the old width might have to be
- * shrunk.
- * The possibilities marked with '+' require us to examine the key types
- * associated with each group for the key.
- */
- bzero(matchingKeys,XkbMaxKeyCount*sizeof(KeyCode));
- nMatchingKeys= 0;
- if (new_num_lvls>type->num_levels) {
- int nTotal;
- KeySym * newSyms;
- int width,match,nResize;
- register int i,g,nSyms;
-
- nResize= 0;
- for (nTotal=1,i=xkb->min_key_code;i<=xkb->max_key_code;i++) {
- width= XkbKeyGroupsWidth(xkb,i);
- if (width<type->num_levels)
- continue;
- for (match=0,g=XkbKeyNumGroups(xkb,i)-1;(g>=0)&&(!match);g--) {
- if (XkbKeyKeyTypeIndex(xkb,i,g)==type_ndx) {
- matchingKeys[nMatchingKeys++]= i;
- match= 1;
- }
- }
- if ((!match)||(width>=new_num_lvls))
- nTotal+= XkbKeyNumSyms(xkb,i);
- else {
- nTotal+= XkbKeyNumGroups(xkb,i)*new_num_lvls;
- nResize++;
- }
- }
- if (nResize>0) {
- int nextMatch;
- xkb->map->size_syms= (nTotal*12)/10;
- newSyms = _XkbTypedCalloc(xkb->map->size_syms,KeySym);
- if (newSyms==NULL)
- return BadAlloc;
- nextMatch= 0;
- nSyms= 1;
- for (i=xkb->min_key_code;i<=xkb->max_key_code;i++) {
- if (matchingKeys[nextMatch]==i) {
- KeySym *pOld;
- nextMatch++;
- width= XkbKeyGroupsWidth(xkb,i);
- pOld= XkbKeySymsPtr(xkb,i);
- for (g=XkbKeyNumGroups(xkb,i)-1;g>=0;g--) {
- memcpy(&newSyms[nSyms+(new_num_lvls*g)],&pOld[width*g],
- width*sizeof(KeySym));
- }
- xkb->map->key_sym_map[i].offset= nSyms;
- nSyms+= XkbKeyNumGroups(xkb,i)*new_num_lvls;
- }
- else {
- memcpy(&newSyms[nSyms],XkbKeySymsPtr(xkb,i),
- XkbKeyNumSyms(xkb,i)*sizeof(KeySym));
- xkb->map->key_sym_map[i].offset= nSyms;
- nSyms+= XkbKeyNumSyms(xkb,i);
- }
- }
- type->num_levels= new_num_lvls;
- _XkbFree(xkb->map->syms);
- xkb->map->syms= newSyms;
- xkb->map->num_syms= nSyms;
- return Success;
- }
- }
- else if (new_num_lvls<type->num_levels) {
- int width,match;
- register int g,i;
- for (i=xkb->min_key_code;i<=xkb->max_key_code;i++) {
- width= XkbKeyGroupsWidth(xkb,i);
- if (width<type->num_levels)
- continue;
- for (match=0,g=XkbKeyNumGroups(xkb,i)-1;(g>=0)&&(!match);g--) {
- if (XkbKeyKeyTypeIndex(xkb,i,g)==type_ndx) {
- matchingKeys[nMatchingKeys++]= i;
- match= 1;
- }
- }
- }
- }
- if (nMatchingKeys>0) {
- int key,firstClear;
- register int i,g;
- if (new_num_lvls>type->num_levels)
- firstClear= type->num_levels;
- else firstClear= new_num_lvls;
- for (i=0;i<nMatchingKeys;i++) {
- KeySym * pSyms;
- int width,nClear;
-
- key= matchingKeys[i];
- width= XkbKeyGroupsWidth(xkb,key);
- nClear= width-firstClear;
- pSyms= XkbKeySymsPtr(xkb,key);
- for (g=XkbKeyNumGroups(xkb,key)-1;g>=0;g--) {
- if (XkbKeyKeyTypeIndex(xkb,key,g)==type_ndx) {
- if (nClear>0)
- bzero(&pSyms[g*width+firstClear],nClear*sizeof(KeySym));
- }
- }
- }
- }
- type->num_levels= new_num_lvls;
- return Success;
-}
-
-KeySym *
-XkbResizeKeySyms(XkbDescPtr xkb,int key,int needed)
-{
-register int i,nSyms,nKeySyms;
-unsigned nOldSyms;
-KeySym *newSyms;
-
- if (needed==0) {
- xkb->map->key_sym_map[key].offset= 0;
- return xkb->map->syms;
- }
- nOldSyms= XkbKeyNumSyms(xkb,key);
- if (nOldSyms>=(unsigned)needed) {
- return XkbKeySymsPtr(xkb,key);
- }
- if (xkb->map->size_syms-xkb->map->num_syms>=(unsigned)needed) {
- if (nOldSyms>0) {
- memcpy(&xkb->map->syms[xkb->map->num_syms],XkbKeySymsPtr(xkb,key),
- nOldSyms*sizeof(KeySym));
- }
- if ((needed-nOldSyms)>0) {
- bzero(&xkb->map->syms[xkb->map->num_syms+XkbKeyNumSyms(xkb,key)],
- (needed-nOldSyms)*sizeof(KeySym));
- }
- xkb->map->key_sym_map[key].offset = xkb->map->num_syms;
- xkb->map->num_syms+= needed;
- return &xkb->map->syms[xkb->map->key_sym_map[key].offset];
- }
- xkb->map->size_syms+= (needed>32?needed:32);
- newSyms = _XkbTypedCalloc(xkb->map->size_syms,KeySym);
- if (newSyms==NULL)
- return NULL;
- newSyms[0]= NoSymbol;
- nSyms = 1;
- for (i=xkb->min_key_code;i<=(int)xkb->max_key_code;i++) {
- int nCopy;
-
- nCopy= nKeySyms= XkbKeyNumSyms(xkb,i);
- if ((nKeySyms==0)&&(i!=key))
- continue;
- if (i==key)
- nKeySyms= needed;
- if (nCopy!=0)
- memcpy(&newSyms[nSyms],XkbKeySymsPtr(xkb,i),nCopy*sizeof(KeySym));
- if (nKeySyms>nCopy)
- bzero(&newSyms[nSyms+nCopy],(nKeySyms-nCopy)*sizeof(KeySym));
- xkb->map->key_sym_map[i].offset = nSyms;
- nSyms+= nKeySyms;
- }
- _XkbFree(xkb->map->syms);
- xkb->map->syms = newSyms;
- xkb->map->num_syms = nSyms;
- return &xkb->map->syms[xkb->map->key_sym_map[key].offset];
-}
-
-static unsigned
-_ExtendRange( unsigned int old_flags,
- unsigned int flag,
- KeyCode newKC,
- KeyCode * old_min,
- unsigned char * old_num)
-{
- if ((old_flags&flag)==0) {
- old_flags|= flag;
- *old_min= newKC;
- *old_num= 1;
- }
- else {
- int last= (*old_min)+(*old_num)-1;
- if (newKC<*old_min) {
- *old_min= newKC;
- *old_num= (last-newKC)+1;
- }
- else if (newKC>last) {
- *old_num= (newKC-(*old_min))+1;
- }
- }
- return old_flags;
-}
-
-Status
-XkbChangeKeycodeRange( XkbDescPtr xkb,
- int minKC,
- int maxKC,
- XkbChangesPtr changes)
-{
-int tmp;
-
- if ((!xkb)||(minKC<XkbMinLegalKeyCode)||(maxKC>XkbMaxLegalKeyCode))
- return BadValue;
- if (minKC>maxKC)
- return BadMatch;
- if (minKC<xkb->min_key_code) {
- if (changes)
- changes->map.min_key_code= minKC;
- tmp= xkb->min_key_code-minKC;
- if (xkb->map) {
- if (xkb->map->key_sym_map) {
- bzero((char *)&xkb->map->key_sym_map[minKC],
- tmp*sizeof(XkbSymMapRec));
- if (changes) {
- changes->map.changed= _ExtendRange(changes->map.changed,
- XkbKeySymsMask,minKC,
- &changes->map.first_key_sym,
- &changes->map.num_key_syms);
- }
- }
- if (xkb->map->modmap) {
- bzero((char *)&xkb->map->modmap[minKC],tmp);
- if (changes) {
- changes->map.changed= _ExtendRange(changes->map.changed,
- XkbModifierMapMask,minKC,
- &changes->map.first_modmap_key,
- &changes->map.num_modmap_keys);
- }
- }
- }
- if (xkb->server) {
- if (xkb->server->behaviors) {
- bzero((char *)&xkb->server->behaviors[minKC],
- tmp*sizeof(XkbBehavior));
- if (changes) {
- changes->map.changed= _ExtendRange(changes->map.changed,
- XkbKeyBehaviorsMask,minKC,
- &changes->map.first_key_behavior,
- &changes->map.num_key_behaviors);
- }
- }
- if (xkb->server->key_acts) {
- bzero((char *)&xkb->server->key_acts[minKC],
- tmp*sizeof(unsigned short));
- if (changes) {
- changes->map.changed= _ExtendRange(changes->map.changed,
- XkbKeyActionsMask,minKC,
- &changes->map.first_key_act,
- &changes->map.num_key_acts);
- }
- }
- if (xkb->server->vmodmap) {
- bzero((char *)&xkb->server->vmodmap[minKC],
- tmp*sizeof(unsigned short));
- if (changes) {
- changes->map.changed= _ExtendRange(changes->map.changed,
- XkbVirtualModMapMask,minKC,
- &changes->map.first_modmap_key,
- &changes->map.num_vmodmap_keys);
- }
- }
- }
- if ((xkb->names)&&(xkb->names->keys)) {
- bzero((char *)&xkb->names->keys[minKC],tmp*sizeof(XkbKeyNameRec));
- if (changes) {
- changes->names.changed= _ExtendRange(changes->names.changed,
- XkbKeyNamesMask,minKC,
- &changes->names.first_key,
- &changes->names.num_keys);
- }
- }
- xkb->min_key_code= minKC;
- }
- if (maxKC>xkb->max_key_code) {
- if (changes)
- changes->map.max_key_code= maxKC;
- tmp= maxKC-xkb->max_key_code;
- if (xkb->map) {
- if (xkb->map->key_sym_map) {
- XkbSymMapRec *prev_key_sym_map = xkb->map->key_sym_map;
-
- xkb->map->key_sym_map= _XkbTypedRealloc(xkb->map->key_sym_map,
- (maxKC+1),XkbSymMapRec);
- if (!xkb->map->key_sym_map) {
- _XkbFree(prev_key_sym_map);
- return BadAlloc;
- }
- bzero((char *)&xkb->map->key_sym_map[xkb->max_key_code],
- tmp*sizeof(XkbSymMapRec));
- if (changes) {
- changes->map.changed= _ExtendRange(changes->map.changed,
- XkbKeySymsMask,maxKC,
- &changes->map.first_key_sym,
- &changes->map.num_key_syms);
- }
- }
- if (xkb->map->modmap) {
- unsigned char *prev_modmap = xkb->map->modmap;
-
- xkb->map->modmap= _XkbTypedRealloc(xkb->map->modmap,
- (maxKC+1),unsigned char);
- if (!xkb->map->modmap) {
- _XkbFree(prev_modmap);
- return BadAlloc;
- }
- bzero((char *)&xkb->map->modmap[xkb->max_key_code],tmp);
- if (changes) {
- changes->map.changed= _ExtendRange(changes->map.changed,
- XkbModifierMapMask,maxKC,
- &changes->map.first_modmap_key,
- &changes->map.num_modmap_keys);
- }
- }
- }
- if (xkb->server) {
- if (xkb->server->behaviors) {
- XkbBehavior *prev_behaviors = xkb->server->behaviors;
-
- xkb->server->behaviors=_XkbTypedRealloc(xkb->server->behaviors,
- (maxKC+1),XkbBehavior);
- if (!xkb->server->behaviors) {
- _XkbFree(prev_behaviors);
- return BadAlloc;
- }
- bzero((char *)&xkb->server->behaviors[xkb->max_key_code],
- tmp*sizeof(XkbBehavior));
- if (changes) {
- changes->map.changed= _ExtendRange(changes->map.changed,
- XkbKeyBehaviorsMask,maxKC,
- &changes->map.first_key_behavior,
- &changes->map.num_key_behaviors);
- }
- }
- if (xkb->server->key_acts) {
- unsigned short *prev_key_acts = xkb->server->key_acts;
-
- xkb->server->key_acts= _XkbTypedRealloc(xkb->server->key_acts,
- (maxKC+1),unsigned short);
- if (!xkb->server->key_acts) {
- _XkbFree(prev_key_acts);
- return BadAlloc;
- }
- bzero((char *)&xkb->server->key_acts[xkb->max_key_code],
- tmp*sizeof(unsigned short));
- if (changes) {
- changes->map.changed= _ExtendRange(changes->map.changed,
- XkbKeyActionsMask,maxKC,
- &changes->map.first_key_act,
- &changes->map.num_key_acts);
- }
- }
- if (xkb->server->vmodmap) {
- unsigned short *prev_vmodmap = xkb->server->vmodmap;
-
- xkb->server->vmodmap= _XkbTypedRealloc(xkb->server->vmodmap,
- (maxKC+1),unsigned short);
- if (!xkb->server->vmodmap) {
- _XkbFree(prev_vmodmap);
- return BadAlloc;
- }
- bzero((char *)&xkb->server->vmodmap[xkb->max_key_code],
- tmp*sizeof(unsigned short));
- if (changes) {
- changes->map.changed= _ExtendRange(changes->map.changed,
- XkbVirtualModMapMask,maxKC,
- &changes->map.first_modmap_key,
- &changes->map.num_vmodmap_keys);
- }
- }
- }
- if ((xkb->names)&&(xkb->names->keys)) {
- XkbKeyNameRec *prev_keys = xkb->names->keys;
-
- xkb->names->keys= _XkbTypedRealloc(xkb->names->keys,
- (maxKC+1),XkbKeyNameRec);
- if (!xkb->names->keys) {
- _XkbFree(prev_keys);
- return BadAlloc;
- }
- bzero((char *)&xkb->names->keys[xkb->max_key_code],
- tmp*sizeof(XkbKeyNameRec));
- if (changes) {
- changes->names.changed= _ExtendRange(changes->names.changed,
- XkbKeyNamesMask,maxKC,
- &changes->names.first_key,
- &changes->names.num_keys);
- }
- }
- xkb->max_key_code= maxKC;
- }
- return Success;
-}
-
-XkbAction *
-XkbResizeKeyActions(XkbDescPtr xkb,int key,int needed)
-{
-register int i,nActs;
-XkbAction *newActs;
-
- if (needed==0) {
- xkb->server->key_acts[key]= 0;
- return NULL;
- }
- if (XkbKeyHasActions(xkb,key)&&(XkbKeyNumSyms(xkb,key)>=(unsigned)needed))
- return XkbKeyActionsPtr(xkb,key);
- if (xkb->server->size_acts-xkb->server->num_acts>=(unsigned)needed) {
- xkb->server->key_acts[key]= xkb->server->num_acts;
- xkb->server->num_acts+= needed;
- return &xkb->server->acts[xkb->server->key_acts[key]];
- }
- xkb->server->size_acts= xkb->server->num_acts+needed+8;
- newActs = _XkbTypedCalloc(xkb->server->size_acts,XkbAction);
- if (newActs==NULL)
- return NULL;
- newActs[0].type = XkbSA_NoAction;
- nActs = 1;
- for (i=xkb->min_key_code;i<=(int)xkb->max_key_code;i++) {
- int nKeyActs,nCopy;
-
- if ((xkb->server->key_acts[i]==0)&&(i!=key))
- continue;
-
- nCopy= nKeyActs= XkbKeyNumActions(xkb,i);
- if (i==key) {
- nKeyActs= needed;
- if (needed<nCopy)
- nCopy= needed;
- }
-
- if (nCopy>0)
- memcpy(&newActs[nActs],XkbKeyActionsPtr(xkb,i),
- nCopy*sizeof(XkbAction));
- if (nCopy<nKeyActs)
- bzero(&newActs[nActs+nCopy],(nKeyActs-nCopy)*sizeof(XkbAction));
- xkb->server->key_acts[i]= nActs;
- nActs+= nKeyActs;
- }
- _XkbFree(xkb->server->acts);
- xkb->server->acts = newActs;
- xkb->server->num_acts= nActs;
- return &xkb->server->acts[xkb->server->key_acts[key]];
-}
-
-void
-XkbFreeClientMap(XkbDescPtr xkb,unsigned what,Bool freeMap)
-{
-XkbClientMapPtr map;
-
- if ((xkb==NULL)||(xkb->map==NULL))
- return;
- if (freeMap)
- what= XkbAllClientInfoMask;
- map= xkb->map;
- if (what&XkbKeyTypesMask) {
- if (map->types!=NULL) {
- if (map->num_types>0) {
- register int i;
- XkbKeyTypePtr type;
- for (i=0,type=map->types;i<map->num_types;i++,type++) {
- if (type->map!=NULL) {
- _XkbFree(type->map);
- type->map= NULL;
- }
- if (type->preserve!=NULL) {
- _XkbFree(type->preserve);
- type->preserve= NULL;
- }
- type->map_count= 0;
- if (type->level_names!=NULL) {
- _XkbFree(type->level_names);
- type->level_names= NULL;
- }
- }
- }
- _XkbFree(map->types);
- map->num_types= map->size_types= 0;
- map->types= NULL;
- }
- }
- if (what&XkbKeySymsMask) {
- if (map->key_sym_map!=NULL) {
- _XkbFree(map->key_sym_map);
- map->key_sym_map= NULL;
- }
- if (map->syms!=NULL) {
- _XkbFree(map->syms);
- map->size_syms= map->num_syms= 0;
- map->syms= NULL;
- }
- }
- if ((what&XkbModifierMapMask)&&(map->modmap!=NULL)) {
- _XkbFree(map->modmap);
- map->modmap= NULL;
- }
- if (freeMap) {
- _XkbFree(xkb->map);
- xkb->map= NULL;
- }
- return;
-}
-
-void
-XkbFreeServerMap(XkbDescPtr xkb,unsigned what,Bool freeMap)
-{
-XkbServerMapPtr map;
-
- if ((xkb==NULL)||(xkb->server==NULL))
- return;
- if (freeMap)
- what= XkbAllServerInfoMask;
- map= xkb->server;
- if ((what&XkbExplicitComponentsMask)&&(map->explicit!=NULL)) {
- _XkbFree(map->explicit);
- map->explicit= NULL;
- }
- if (what&XkbKeyActionsMask) {
- if (map->key_acts!=NULL) {
- _XkbFree(map->key_acts);
- map->key_acts= NULL;
- }
- if (map->acts!=NULL) {
- _XkbFree(map->acts);
- map->num_acts= map->size_acts= 0;
- map->acts= NULL;
- }
- }
- if ((what&XkbKeyBehaviorsMask)&&(map->behaviors!=NULL)) {
- _XkbFree(map->behaviors);
- map->behaviors= NULL;
- }
- if ((what&XkbVirtualModMapMask)&&(map->vmodmap!=NULL)) {
- _XkbFree(map->vmodmap);
- map->vmodmap= NULL;
- }
-
- if (freeMap) {
- _XkbFree(xkb->server);
- xkb->server= NULL;
- }
- return;
-}
+/************************************************************
+Copyright (c) 1993 by Silicon Graphics Computer Systems, Inc.
+
+Permission to use, copy, modify, and distribute this
+software and its documentation for any purpose and without
+fee is hereby granted, provided that the above copyright
+notice appear in all copies and that both that copyright
+notice and this permission notice appear in supporting
+documentation, and that the name of Silicon Graphics not be
+used in advertising or publicity pertaining to distribution
+of the software without specific prior written permission.
+Silicon Graphics makes no representation about the suitability
+of this software for any purpose. It is provided "as is"
+without any express or implied warranty.
+
+SILICON GRAPHICS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS
+SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
+AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON
+GRAPHICS BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL
+DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
+DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
+OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH
+THE USE OR PERFORMANCE OF THIS SOFTWARE.
+
+********************************************************/
+
+#ifdef HAVE_DIX_CONFIG_H
+#include <dix-config.h>
+#elif defined(HAVE_CONFIG_H)
+#include <config.h>
+#endif
+
+#ifndef XKB_IN_SERVER
+
+#include <stdio.h>
+#include "Xlibint.h"
+#include <X11/extensions/XKBproto.h>
+#include <X11/keysym.h>
+#include "XKBlibint.h"
+
+#else
+
+#include <stdio.h>
+#include <X11/X.h>
+#include <X11/Xproto.h>
+#include "misc.h"
+#include "inputstr.h"
+#include <X11/keysym.h>
+#define XKBSRV_NEED_FILE_FUNCS
+#include <X11/extensions/XKBsrv.h>
+
+#endif /* XKB_IN_SERVER */
+
+/***====================================================================***/
+
+Status
+XkbAllocClientMap(XkbDescPtr xkb,unsigned which,unsigned nTotalTypes)
+{
+register int i;
+XkbClientMapPtr map;
+
+ if ((xkb==NULL)||((nTotalTypes>0)&&(nTotalTypes<XkbNumRequiredTypes)))
+ return BadValue;
+ if ((which&XkbKeySymsMask)&&
+ ((!XkbIsLegalKeycode(xkb->min_key_code))||
+ (!XkbIsLegalKeycode(xkb->max_key_code))||
+ (xkb->max_key_code<xkb->min_key_code))) {
+#ifdef DEBUG
+fprintf(stderr,"bad keycode (%d,%d) in XkbAllocClientMap\n",
+ xkb->min_key_code,xkb->max_key_code);
+#endif
+ return BadValue;
+ }
+
+ if (xkb->map==NULL) {
+ map= _XkbTypedCalloc(1,XkbClientMapRec);
+ if (map==NULL)
+ return BadAlloc;
+ xkb->map= map;
+ }
+ else map= xkb->map;
+
+ if ((which&XkbKeyTypesMask)&&(nTotalTypes>0)) {
+ if (map->types==NULL) {
+ map->types= _XkbTypedCalloc(nTotalTypes,XkbKeyTypeRec);
+ if (map->types==NULL)
+ return BadAlloc;
+ map->num_types= 0;
+ map->size_types= nTotalTypes;
+ }
+ else if (map->size_types<nTotalTypes) {
+ XkbKeyTypeRec *prev_types = map->types;
+
+ map->types= _XkbTypedRealloc(map->types,nTotalTypes,XkbKeyTypeRec);
+ if (map->types==NULL) {
+ _XkbFree(prev_types);
+ map->num_types= map->size_types= 0;
+ return BadAlloc;
+ }
+ map->size_types= nTotalTypes;
+ bzero(&map->types[map->num_types],
+ ((map->size_types-map->num_types)*sizeof(XkbKeyTypeRec)));
+ }
+ }
+ if (which&XkbKeySymsMask) {
+ int nKeys= XkbNumKeys(xkb);
+ if (map->syms==NULL) {
+ map->size_syms= (nKeys*15)/10;
+ map->syms= _XkbTypedCalloc(map->size_syms,KeySym);
+ if (!map->syms) {
+ map->size_syms= 0;
+ return BadAlloc;
+ }
+ map->num_syms= 1;
+ map->syms[0]= NoSymbol;
+ }
+ if (map->key_sym_map==NULL) {
+ i= xkb->max_key_code+1;
+ map->key_sym_map= _XkbTypedCalloc(i,XkbSymMapRec);
+ if (map->key_sym_map==NULL)
+ return BadAlloc;
+ }
+ }
+ if (which&XkbModifierMapMask) {
+ if ((!XkbIsLegalKeycode(xkb->min_key_code))||
+ (!XkbIsLegalKeycode(xkb->max_key_code))||
+ (xkb->max_key_code<xkb->min_key_code))
+ return BadMatch;
+ if (map->modmap==NULL) {
+ i= xkb->max_key_code+1;
+ map->modmap= _XkbTypedCalloc(i,unsigned char);
+ if (map->modmap==NULL)
+ return BadAlloc;
+ }
+ }
+ return Success;
+}
+
+Status
+XkbAllocServerMap(XkbDescPtr xkb,unsigned which,unsigned nNewActions)
+{
+register int i;
+XkbServerMapPtr map;
+
+ if (xkb==NULL)
+ return BadMatch;
+ if (xkb->server==NULL) {
+ map= _XkbTypedCalloc(1,XkbServerMapRec);
+ if (map==NULL)
+ return BadAlloc;
+ for (i=0;i<XkbNumVirtualMods;i++) {
+ map->vmods[i]= XkbNoModifierMask;
+ }
+ xkb->server= map;
+ }
+ else map= xkb->server;
+ if (which&XkbExplicitComponentsMask) {
+ if ((!XkbIsLegalKeycode(xkb->min_key_code))||
+ (!XkbIsLegalKeycode(xkb->max_key_code))||
+ (xkb->max_key_code<xkb->min_key_code))
+ return BadMatch;
+ if (map->explicit==NULL) {
+ i= xkb->max_key_code+1;
+ map->explicit= _XkbTypedCalloc(i,unsigned char);
+ if (map->explicit==NULL)
+ return BadAlloc;
+ }
+ }
+ if (which&XkbKeyActionsMask) {
+ if ((!XkbIsLegalKeycode(xkb->min_key_code))||
+ (!XkbIsLegalKeycode(xkb->max_key_code))||
+ (xkb->max_key_code<xkb->min_key_code))
+ return BadMatch;
+ if (nNewActions<1)
+ nNewActions= 1;
+ if (map->acts==NULL) {
+ map->acts= _XkbTypedCalloc((nNewActions+1),XkbAction);
+ if (map->acts==NULL)
+ return BadAlloc;
+ map->num_acts= 1;
+ map->size_acts= nNewActions+1;
+ }
+ else if ((map->size_acts-map->num_acts)<nNewActions) {
+ unsigned need;
+ XkbAction *prev_acts = map->acts;
+ need= map->num_acts+nNewActions;
+ map->acts= _XkbTypedRealloc(map->acts,need,XkbAction);
+ if (map->acts==NULL) {
+ _XkbFree(prev_acts);
+ map->num_acts= map->size_acts= 0;
+ return BadAlloc;
+ }
+ map->size_acts= need;
+ bzero(&map->acts[map->num_acts],
+ ((map->size_acts-map->num_acts)*sizeof(XkbAction)));
+ }
+ if (map->key_acts==NULL) {
+ i= xkb->max_key_code+1;
+ map->key_acts= _XkbTypedCalloc(i,unsigned short);
+ if (map->key_acts==NULL)
+ return BadAlloc;
+ }
+ }
+ if (which&XkbKeyBehaviorsMask) {
+ if ((!XkbIsLegalKeycode(xkb->min_key_code))||
+ (!XkbIsLegalKeycode(xkb->max_key_code))||
+ (xkb->max_key_code<xkb->min_key_code))
+ return BadMatch;
+ if (map->behaviors==NULL) {
+ i= xkb->max_key_code+1;
+ map->behaviors= _XkbTypedCalloc(i,XkbBehavior);
+ if (map->behaviors==NULL)
+ return BadAlloc;
+ }
+ }
+ if (which&XkbVirtualModMapMask) {
+ if ((!XkbIsLegalKeycode(xkb->min_key_code))||
+ (!XkbIsLegalKeycode(xkb->max_key_code))||
+ (xkb->max_key_code<xkb->min_key_code))
+ return BadMatch;
+ if (map->vmodmap==NULL) {
+ i= xkb->max_key_code+1;
+ map->vmodmap= _XkbTypedCalloc(i,unsigned short);
+ if (map->vmodmap==NULL)
+ return BadAlloc;
+ }
+ }
+ return Success;
+}
+
+/***====================================================================***/
+
+Status
+XkbCopyKeyType(XkbKeyTypePtr from,XkbKeyTypePtr into)
+{
+ if ((!from)||(!into))
+ return BadMatch;
+ if (into->map) {
+ _XkbFree(into->map);
+ into->map= NULL;
+ }
+ if (into->preserve) {
+ _XkbFree(into->preserve);
+ into->preserve= NULL;
+ }
+ if (into->level_names) {
+ _XkbFree(into->level_names);
+ into->level_names= NULL;
+ }
+ *into= *from;
+ if ((from->map)&&(into->map_count>0)) {
+ into->map= _XkbTypedCalloc(into->map_count,XkbKTMapEntryRec);
+ if (!into->map)
+ return BadAlloc;
+ memcpy(into->map,from->map,into->map_count*sizeof(XkbKTMapEntryRec));
+ }
+ if ((from->preserve)&&(into->map_count>0)) {
+ into->preserve= _XkbTypedCalloc(into->map_count,XkbModsRec);
+ if (!into->preserve)
+ return BadAlloc;
+ memcpy(into->preserve,from->preserve,
+ into->map_count*sizeof(XkbModsRec));
+ }
+ if ((from->level_names)&&(into->num_levels>0)) {
+ into->level_names= _XkbTypedCalloc(into->num_levels,Atom);
+ if (!into->level_names)
+ return BadAlloc;
+ memcpy(into->level_names,from->level_names,
+ into->num_levels*sizeof(Atom));
+ }
+ return Success;
+}
+
+Status
+XkbCopyKeyTypes(XkbKeyTypePtr from,XkbKeyTypePtr into,int num_types)
+{
+register int i,rtrn;
+
+ if ((!from)||(!into)||(num_types<0))
+ return BadMatch;
+ for (i=0;i<num_types;i++) {
+ if ((rtrn= XkbCopyKeyType(from++,into++))!=Success)
+ return rtrn;
+ }
+ return Success;
+}
+
+XkbKeyTypePtr
+XkbAddKeyType( XkbDescPtr xkb,
+ Atom name,
+ int map_count,
+ Bool want_preserve,
+ int num_lvls)
+{
+register int i;
+unsigned tmp;
+XkbKeyTypePtr type;
+XkbClientMapPtr map;
+
+ if ((!xkb)||(num_lvls<1))
+ return NULL;
+ map= xkb->map;
+ if ((map)&&(map->types)) {
+ for (i=0;i<map->num_types;i++) {
+ if (map->types[i].name==name) {
+ Status status;
+ status=XkbResizeKeyType(xkb,i,map_count,want_preserve,num_lvls);
+ return (status==Success?&map->types[i]:NULL);
+ }
+ }
+ }
+ if ((!map)||(!map->types)||(!map->num_types<XkbNumRequiredTypes)) {
+ tmp= XkbNumRequiredTypes+1;
+ if (XkbAllocClientMap(xkb,XkbKeyTypesMask,tmp)!=Success)
+ return NULL;
+ if (!map)
+ map = xkb->map;
+ tmp= 0;
+ if (map->num_types<=XkbKeypadIndex)
+ tmp|= XkbKeypadMask;
+ if (map->num_types<=XkbAlphabeticIndex)
+ tmp|= XkbAlphabeticMask;
+ if (map->num_types<=XkbTwoLevelIndex)
+ tmp|= XkbTwoLevelMask;
+ if (map->num_types<=XkbOneLevelIndex)
+ tmp|= XkbOneLevelMask;
+ if (XkbInitCanonicalKeyTypes(xkb,tmp,XkbNoModifier)==Success) {
+ for (i=0;i<map->num_types;i++) {
+ Status status;
+ if (map->types[i].name!=name)
+ continue;
+ status=XkbResizeKeyType(xkb,i,map_count,want_preserve,num_lvls);
+ return (status==Success?&map->types[i]:NULL);
+ }
+ }
+ }
+ if ((map->num_types<=map->size_types)&&
+ (XkbAllocClientMap(xkb,XkbKeyTypesMask,map->num_types+1)!=Success)) {
+ return NULL;
+ }
+ type= &map->types[map->num_types];
+ map->num_types++;
+ bzero((char *)type,sizeof(XkbKeyTypeRec));
+ type->num_levels= num_lvls;
+ type->map_count= map_count;
+ type->name= name;
+ if (map_count>0) {
+ type->map= _XkbTypedCalloc(map_count,XkbKTMapEntryRec);
+ if (!type->map) {
+ map->num_types--;
+ return NULL;
+ }
+ if (want_preserve) {
+ type->preserve= _XkbTypedCalloc(map_count,XkbModsRec);
+ if (!type->preserve) {
+ _XkbFree(type->map);
+ map->num_types--;
+ return NULL;
+ }
+ }
+ }
+ return type;
+}
+
+Status
+XkbResizeKeyType( XkbDescPtr xkb,
+ int type_ndx,
+ int map_count,
+ Bool want_preserve,
+ int new_num_lvls)
+{
+XkbKeyTypePtr type;
+KeyCode matchingKeys[XkbMaxKeyCount],nMatchingKeys;
+
+ if ((type_ndx<0)||(type_ndx>=xkb->map->num_types)||(map_count<0)||
+ (new_num_lvls<1))
+ return BadValue;
+ switch (type_ndx) {
+ case XkbOneLevelIndex:
+ if (new_num_lvls!=1)
+ return BadMatch;
+ break;
+ case XkbTwoLevelIndex:
+ case XkbAlphabeticIndex:
+ case XkbKeypadIndex:
+ if (new_num_lvls!=2)
+ return BadMatch;
+ break;
+ }
+ type= &xkb->map->types[type_ndx];
+ if (map_count==0) {
+ if (type->map!=NULL)
+ _XkbFree(type->map);
+ type->map= NULL;
+ if (type->preserve!=NULL)
+ _XkbFree(type->preserve);
+ type->preserve= NULL;
+ type->map_count= 0;
+ }
+ else {
+ XkbKTMapEntryRec *prev_map = type->map;
+
+ if ((map_count>type->map_count)||(type->map==NULL))
+ type->map=_XkbTypedRealloc(type->map,map_count,XkbKTMapEntryRec);
+ if (!type->map) {
+ if (prev_map)
+ _XkbFree(prev_map);
+ return BadAlloc;
+ }
+ if (want_preserve) {
+ XkbModsRec *prev_preserve = type->preserve;
+
+ if ((map_count>type->map_count)||(type->preserve==NULL)) {
+ type->preserve= _XkbTypedRealloc(type->preserve,map_count,
+ XkbModsRec);
+ }
+ if (!type->preserve) {
+ if (prev_preserve)
+ _XkbFree(prev_preserve);
+ return BadAlloc;
+ }
+ }
+ else if (type->preserve!=NULL) {
+ _XkbFree(type->preserve);
+ type->preserve= NULL;
+ }
+ type->map_count= map_count;
+ }
+
+ if ((new_num_lvls>type->num_levels)||(type->level_names==NULL)) {
+ Atom * prev_level_names = type->level_names;
+
+ type->level_names=_XkbTypedRealloc(type->level_names,new_num_lvls,Atom);
+ if (!type->level_names) {
+ if (prev_level_names)
+ _XkbFree(prev_level_names);
+ return BadAlloc;
+ }
+ }
+ /*
+ * Here's the theory:
+ * If the width of the type changed, we might have to resize the symbol
+ * maps for any keys that use the type for one or more groups. This is
+ * expensive, so we'll try to cull out any keys that are obviously okay:
+ * In any case:
+ * - keys that have a group width <= the old width are okay (because
+ * they could not possibly have been associated with the old type)
+ * If the key type increased in size:
+ * - keys that already have a group width >= to the new width are okay
+ * + keys that have a group width >= the old width but < the new width
+ * might have to be enlarged.
+ * If the key type decreased in size:
+ * - keys that have a group width > the old width don't have to be
+ * resized (because they must have some other wider type associated
+ * with some group).
+ * + keys that have a group width == the old width might have to be
+ * shrunk.
+ * The possibilities marked with '+' require us to examine the key types
+ * associated with each group for the key.
+ */
+ bzero(matchingKeys,XkbMaxKeyCount*sizeof(KeyCode));
+ nMatchingKeys= 0;
+ if (new_num_lvls>type->num_levels) {
+ int nTotal;
+ KeySym * newSyms;
+ int width,match,nResize;
+ register int i,g,nSyms;
+
+ nResize= 0;
+ for (nTotal=1,i=xkb->min_key_code;i<=xkb->max_key_code;i++) {
+ width= XkbKeyGroupsWidth(xkb,i);
+ if (width<type->num_levels)
+ continue;
+ for (match=0,g=XkbKeyNumGroups(xkb,i)-1;(g>=0)&&(!match);g--) {
+ if (XkbKeyKeyTypeIndex(xkb,i,g)==type_ndx) {
+ matchingKeys[nMatchingKeys++]= i;
+ match= 1;
+ }
+ }
+ if ((!match)||(width>=new_num_lvls))
+ nTotal+= XkbKeyNumSyms(xkb,i);
+ else {
+ nTotal+= XkbKeyNumGroups(xkb,i)*new_num_lvls;
+ nResize++;
+ }
+ }
+ if (nResize>0) {
+ int nextMatch;
+ xkb->map->size_syms= (nTotal*12)/10;
+ newSyms = _XkbTypedCalloc(xkb->map->size_syms,KeySym);
+ if (newSyms==NULL)
+ return BadAlloc;
+ nextMatch= 0;
+ nSyms= 1;
+ for (i=xkb->min_key_code;i<=xkb->max_key_code;i++) {
+ if (matchingKeys[nextMatch]==i) {
+ KeySym *pOld;
+ nextMatch++;
+ width= XkbKeyGroupsWidth(xkb,i);
+ pOld= XkbKeySymsPtr(xkb,i);
+ for (g=XkbKeyNumGroups(xkb,i)-1;g>=0;g--) {
+ memcpy(&newSyms[nSyms+(new_num_lvls*g)],&pOld[width*g],
+ width*sizeof(KeySym));
+ }
+ xkb->map->key_sym_map[i].offset= nSyms;
+ nSyms+= XkbKeyNumGroups(xkb,i)*new_num_lvls;
+ }
+ else {
+ memcpy(&newSyms[nSyms],XkbKeySymsPtr(xkb,i),
+ XkbKeyNumSyms(xkb,i)*sizeof(KeySym));
+ xkb->map->key_sym_map[i].offset= nSyms;
+ nSyms+= XkbKeyNumSyms(xkb,i);
+ }
+ }
+ type->num_levels= new_num_lvls;
+ _XkbFree(xkb->map->syms);
+ xkb->map->syms= newSyms;
+ xkb->map->num_syms= nSyms;
+ return Success;
+ }
+ }
+ else if (new_num_lvls<type->num_levels) {
+ int width,match;
+ register int g,i;
+ for (i=xkb->min_key_code;i<=xkb->max_key_code;i++) {
+ width= XkbKeyGroupsWidth(xkb,i);
+ if (width<type->num_levels)
+ continue;
+ for (match=0,g=XkbKeyNumGroups(xkb,i)-1;(g>=0)&&(!match);g--) {
+ if (XkbKeyKeyTypeIndex(xkb,i,g)==type_ndx) {
+ matchingKeys[nMatchingKeys++]= i;
+ match= 1;
+ }
+ }
+ }
+ }
+ if (nMatchingKeys>0) {
+ int key,firstClear;
+ register int i,g;
+ if (new_num_lvls>type->num_levels)
+ firstClear= type->num_levels;
+ else firstClear= new_num_lvls;
+ for (i=0;i<nMatchingKeys;i++) {
+ KeySym * pSyms;
+ int width,nClear;
+
+ key= matchingKeys[i];
+ width= XkbKeyGroupsWidth(xkb,key);
+ nClear= width-firstClear;
+ pSyms= XkbKeySymsPtr(xkb,key);
+ for (g=XkbKeyNumGroups(xkb,key)-1;g>=0;g--) {
+ if (XkbKeyKeyTypeIndex(xkb,key,g)==type_ndx) {
+ if (nClear>0)
+ bzero(&pSyms[g*width+firstClear],nClear*sizeof(KeySym));
+ }
+ }
+ }
+ }
+ type->num_levels= new_num_lvls;
+ return Success;
+}
+
+KeySym *
+XkbResizeKeySyms(XkbDescPtr xkb,int key,int needed)
+{
+register int i,nSyms,nKeySyms;
+unsigned nOldSyms;
+KeySym *newSyms;
+
+ if (needed==0) {
+ xkb->map->key_sym_map[key].offset= 0;
+ return xkb->map->syms;
+ }
+ nOldSyms= XkbKeyNumSyms(xkb,key);
+ if (nOldSyms>=(unsigned)needed) {
+ return XkbKeySymsPtr(xkb,key);
+ }
+ if (xkb->map->size_syms-xkb->map->num_syms>=(unsigned)needed) {
+ if (nOldSyms>0) {
+ memcpy(&xkb->map->syms[xkb->map->num_syms],XkbKeySymsPtr(xkb,key),
+ nOldSyms*sizeof(KeySym));
+ }
+ if ((needed-nOldSyms)>0) {
+ bzero(&xkb->map->syms[xkb->map->num_syms+XkbKeyNumSyms(xkb,key)],
+ (needed-nOldSyms)*sizeof(KeySym));
+ }
+ xkb->map->key_sym_map[key].offset = xkb->map->num_syms;
+ xkb->map->num_syms+= needed;
+ return &xkb->map->syms[xkb->map->key_sym_map[key].offset];
+ }
+ xkb->map->size_syms+= (needed>32?needed:32);
+ newSyms = _XkbTypedCalloc(xkb->map->size_syms,KeySym);
+ if (newSyms==NULL)
+ return NULL;
+ newSyms[0]= NoSymbol;
+ nSyms = 1;
+ for (i=xkb->min_key_code;i<=(int)xkb->max_key_code;i++) {
+ int nCopy;
+
+ nCopy= nKeySyms= XkbKeyNumSyms(xkb,i);
+ if ((nKeySyms==0)&&(i!=key))
+ continue;
+ if (i==key)
+ nKeySyms= needed;
+ if (nCopy!=0)
+ memcpy(&newSyms[nSyms],XkbKeySymsPtr(xkb,i),nCopy*sizeof(KeySym));
+ if (nKeySyms>nCopy)
+ bzero(&newSyms[nSyms+nCopy],(nKeySyms-nCopy)*sizeof(KeySym));
+ xkb->map->key_sym_map[i].offset = nSyms;
+ nSyms+= nKeySyms;
+ }
+ _XkbFree(xkb->map->syms);
+ xkb->map->syms = newSyms;
+ xkb->map->num_syms = nSyms;
+ return &xkb->map->syms[xkb->map->key_sym_map[key].offset];
+}
+
+static unsigned
+_ExtendRange( unsigned int old_flags,
+ unsigned int flag,
+ KeyCode newKC,
+ KeyCode * old_min,
+ unsigned char * old_num)
+{
+ if ((old_flags&flag)==0) {
+ old_flags|= flag;
+ *old_min= newKC;
+ *old_num= 1;
+ }
+ else {
+ int last= (*old_min)+(*old_num)-1;
+ if (newKC<*old_min) {
+ *old_min= newKC;
+ *old_num= (last-newKC)+1;
+ }
+ else if (newKC>last) {
+ *old_num= (newKC-(*old_min))+1;
+ }
+ }
+ return old_flags;
+}
+
+Status
+XkbChangeKeycodeRange( XkbDescPtr xkb,
+ int minKC,
+ int maxKC,
+ XkbChangesPtr changes)
+{
+int tmp;
+
+ if ((!xkb)||(minKC<XkbMinLegalKeyCode)||(maxKC>XkbMaxLegalKeyCode))
+ return BadValue;
+ if (minKC>maxKC)
+ return BadMatch;
+ if (minKC<xkb->min_key_code) {
+ if (changes)
+ changes->map.min_key_code= minKC;
+ tmp= xkb->min_key_code-minKC;
+ if (xkb->map) {
+ if (xkb->map->key_sym_map) {
+ bzero((char *)&xkb->map->key_sym_map[minKC],
+ tmp*sizeof(XkbSymMapRec));
+ if (changes) {
+ changes->map.changed= _ExtendRange(changes->map.changed,
+ XkbKeySymsMask,minKC,
+ &changes->map.first_key_sym,
+ &changes->map.num_key_syms);
+ }
+ }
+ if (xkb->map->modmap) {
+ bzero((char *)&xkb->map->modmap[minKC],tmp);
+ if (changes) {
+ changes->map.changed= _ExtendRange(changes->map.changed,
+ XkbModifierMapMask,minKC,
+ &changes->map.first_modmap_key,
+ &changes->map.num_modmap_keys);
+ }
+ }
+ }
+ if (xkb->server) {
+ if (xkb->server->behaviors) {
+ bzero((char *)&xkb->server->behaviors[minKC],
+ tmp*sizeof(XkbBehavior));
+ if (changes) {
+ changes->map.changed= _ExtendRange(changes->map.changed,
+ XkbKeyBehaviorsMask,minKC,
+ &changes->map.first_key_behavior,
+ &changes->map.num_key_behaviors);
+ }
+ }
+ if (xkb->server->key_acts) {
+ bzero((char *)&xkb->server->key_acts[minKC],
+ tmp*sizeof(unsigned short));
+ if (changes) {
+ changes->map.changed= _ExtendRange(changes->map.changed,
+ XkbKeyActionsMask,minKC,
+ &changes->map.first_key_act,
+ &changes->map.num_key_acts);
+ }
+ }
+ if (xkb->server->vmodmap) {
+ bzero((char *)&xkb->server->vmodmap[minKC],
+ tmp*sizeof(unsigned short));
+ if (changes) {
+ changes->map.changed= _ExtendRange(changes->map.changed,
+ XkbVirtualModMapMask,minKC,
+ &changes->map.first_modmap_key,
+ &changes->map.num_vmodmap_keys);
+ }
+ }
+ }
+ if ((xkb->names)&&(xkb->names->keys)) {
+ bzero((char *)&xkb->names->keys[minKC],tmp*sizeof(XkbKeyNameRec));
+ if (changes) {
+ changes->names.changed= _ExtendRange(changes->names.changed,
+ XkbKeyNamesMask,minKC,
+ &changes->names.first_key,
+ &changes->names.num_keys);
+ }
+ }
+ xkb->min_key_code= minKC;
+ }
+ if (maxKC>xkb->max_key_code) {
+ if (changes)
+ changes->map.max_key_code= maxKC;
+ tmp= maxKC-xkb->max_key_code;
+ if (xkb->map) {
+ if (xkb->map->key_sym_map) {
+ XkbSymMapRec *prev_key_sym_map = xkb->map->key_sym_map;
+
+ xkb->map->key_sym_map= _XkbTypedRealloc(xkb->map->key_sym_map,
+ (maxKC+1),XkbSymMapRec);
+ if (!xkb->map->key_sym_map) {
+ _XkbFree(prev_key_sym_map);
+ return BadAlloc;
+ }
+ bzero((char *)&xkb->map->key_sym_map[xkb->max_key_code],
+ tmp*sizeof(XkbSymMapRec));
+ if (changes) {
+ changes->map.changed= _ExtendRange(changes->map.changed,
+ XkbKeySymsMask,maxKC,
+ &changes->map.first_key_sym,
+ &changes->map.num_key_syms);
+ }
+ }
+ if (xkb->map->modmap) {
+ unsigned char *prev_modmap = xkb->map->modmap;
+
+ xkb->map->modmap= _XkbTypedRealloc(xkb->map->modmap,
+ (maxKC+1),unsigned char);
+ if (!xkb->map->modmap) {
+ _XkbFree(prev_modmap);
+ return BadAlloc;
+ }
+ bzero((char *)&xkb->map->modmap[xkb->max_key_code],tmp);
+ if (changes) {
+ changes->map.changed= _ExtendRange(changes->map.changed,
+ XkbModifierMapMask,maxKC,
+ &changes->map.first_modmap_key,
+ &changes->map.num_modmap_keys);
+ }
+ }
+ }
+ if (xkb->server) {
+ if (xkb->server->behaviors) {
+ XkbBehavior *prev_behaviors = xkb->server->behaviors;
+
+ xkb->server->behaviors=_XkbTypedRealloc(xkb->server->behaviors,
+ (maxKC+1),XkbBehavior);
+ if (!xkb->server->behaviors) {
+ _XkbFree(prev_behaviors);
+ return BadAlloc;
+ }
+ bzero((char *)&xkb->server->behaviors[xkb->max_key_code],
+ tmp*sizeof(XkbBehavior));
+ if (changes) {
+ changes->map.changed= _ExtendRange(changes->map.changed,
+ XkbKeyBehaviorsMask,maxKC,
+ &changes->map.first_key_behavior,
+ &changes->map.num_key_behaviors);
+ }
+ }
+ if (xkb->server->key_acts) {
+ unsigned short *prev_key_acts = xkb->server->key_acts;
+
+ xkb->server->key_acts= _XkbTypedRealloc(xkb->server->key_acts,
+ (maxKC+1),unsigned short);
+ if (!xkb->server->key_acts) {
+ _XkbFree(prev_key_acts);
+ return BadAlloc;
+ }
+ bzero((char *)&xkb->server->key_acts[xkb->max_key_code],
+ tmp*sizeof(unsigned short));
+ if (changes) {
+ changes->map.changed= _ExtendRange(changes->map.changed,
+ XkbKeyActionsMask,maxKC,
+ &changes->map.first_key_act,
+ &changes->map.num_key_acts);
+ }
+ }
+ if (xkb->server->vmodmap) {
+ unsigned short *prev_vmodmap = xkb->server->vmodmap;
+
+ xkb->server->vmodmap= _XkbTypedRealloc(xkb->server->vmodmap,
+ (maxKC+1),unsigned short);
+ if (!xkb->server->vmodmap) {
+ _XkbFree(prev_vmodmap);
+ return BadAlloc;
+ }
+ bzero((char *)&xkb->server->vmodmap[xkb->max_key_code],
+ tmp*sizeof(unsigned short));
+ if (changes) {
+ changes->map.changed= _ExtendRange(changes->map.changed,
+ XkbVirtualModMapMask,maxKC,
+ &changes->map.first_modmap_key,
+ &changes->map.num_vmodmap_keys);
+ }
+ }
+ }
+ if ((xkb->names)&&(xkb->names->keys)) {
+ XkbKeyNameRec *prev_keys = xkb->names->keys;
+
+ xkb->names->keys= _XkbTypedRealloc(xkb->names->keys,
+ (maxKC+1),XkbKeyNameRec);
+ if (!xkb->names->keys) {
+ _XkbFree(prev_keys);
+ return BadAlloc;
+ }
+ bzero((char *)&xkb->names->keys[xkb->max_key_code],
+ tmp*sizeof(XkbKeyNameRec));
+ if (changes) {
+ changes->names.changed= _ExtendRange(changes->names.changed,
+ XkbKeyNamesMask,maxKC,
+ &changes->names.first_key,
+ &changes->names.num_keys);
+ }
+ }
+ xkb->max_key_code= maxKC;
+ }
+ return Success;
+}
+
+XkbAction *
+XkbResizeKeyActions(XkbDescPtr xkb,int key,int needed)
+{
+register int i,nActs;
+XkbAction *newActs;
+
+ if (needed==0) {
+ xkb->server->key_acts[key]= 0;
+ return NULL;
+ }
+ if (XkbKeyHasActions(xkb,key)&&(XkbKeyNumSyms(xkb,key)>=(unsigned)needed))
+ return XkbKeyActionsPtr(xkb,key);
+ if (xkb->server->size_acts-xkb->server->num_acts>=(unsigned)needed) {
+ xkb->server->key_acts[key]= xkb->server->num_acts;
+ xkb->server->num_acts+= needed;
+ return &xkb->server->acts[xkb->server->key_acts[key]];
+ }
+ xkb->server->size_acts= xkb->server->num_acts+needed+8;
+ newActs = _XkbTypedCalloc(xkb->server->size_acts,XkbAction);
+ if (newActs==NULL)
+ return NULL;
+ newActs[0].type = XkbSA_NoAction;
+ nActs = 1;
+ for (i=xkb->min_key_code;i<=(int)xkb->max_key_code;i++) {
+ int nKeyActs,nCopy;
+
+ if ((xkb->server->key_acts[i]==0)&&(i!=key))
+ continue;
+
+ nCopy= nKeyActs= XkbKeyNumActions(xkb,i);
+ if (i==key) {
+ nKeyActs= needed;
+ if (needed<nCopy)
+ nCopy= needed;
+ }
+
+ if (nCopy>0)
+ memcpy(&newActs[nActs],XkbKeyActionsPtr(xkb,i),
+ nCopy*sizeof(XkbAction));
+ if (nCopy<nKeyActs)
+ bzero(&newActs[nActs+nCopy],(nKeyActs-nCopy)*sizeof(XkbAction));
+ xkb->server->key_acts[i]= nActs;
+ nActs+= nKeyActs;
+ }
+ _XkbFree(xkb->server->acts);
+ xkb->server->acts = newActs;
+ xkb->server->num_acts= nActs;
+ return &xkb->server->acts[xkb->server->key_acts[key]];
+}
+
+void
+XkbFreeClientMap(XkbDescPtr xkb,unsigned what,Bool freeMap)
+{
+XkbClientMapPtr map;
+
+ if ((xkb==NULL)||(xkb->map==NULL))
+ return;
+ if (freeMap)
+ what= XkbAllClientInfoMask;
+ map= xkb->map;
+ if (what&XkbKeyTypesMask) {
+ if (map->types!=NULL) {
+ if (map->num_types>0) {
+ register int i;
+ XkbKeyTypePtr type;
+ for (i=0,type=map->types;i<map->num_types;i++,type++) {
+ if (type->map!=NULL) {
+ _XkbFree(type->map);
+ type->map= NULL;
+ }
+ if (type->preserve!=NULL) {
+ _XkbFree(type->preserve);
+ type->preserve= NULL;
+ }
+ type->map_count= 0;
+ if (type->level_names!=NULL) {
+ _XkbFree(type->level_names);
+ type->level_names= NULL;
+ }
+ }
+ }
+ _XkbFree(map->types);
+ map->num_types= map->size_types= 0;
+ map->types= NULL;
+ }
+ }
+ if (what&XkbKeySymsMask) {
+ if (map->key_sym_map!=NULL) {
+ _XkbFree(map->key_sym_map);
+ map->key_sym_map= NULL;
+ }
+ if (map->syms!=NULL) {
+ _XkbFree(map->syms);
+ map->size_syms= map->num_syms= 0;
+ map->syms= NULL;
+ }
+ }
+ if ((what&XkbModifierMapMask)&&(map->modmap!=NULL)) {
+ _XkbFree(map->modmap);
+ map->modmap= NULL;
+ }
+ if (freeMap) {
+ _XkbFree(xkb->map);
+ xkb->map= NULL;
+ }
+ return;
+}
+
+void
+XkbFreeServerMap(XkbDescPtr xkb,unsigned what,Bool freeMap)
+{
+XkbServerMapPtr map;
+
+ if ((xkb==NULL)||(xkb->server==NULL))
+ return;
+ if (freeMap)
+ what= XkbAllServerInfoMask;
+ map= xkb->server;
+ if ((what&XkbExplicitComponentsMask)&&(map->explicit!=NULL)) {
+ _XkbFree(map->explicit);
+ map->explicit= NULL;
+ }
+ if (what&XkbKeyActionsMask) {
+ if (map->key_acts!=NULL) {
+ _XkbFree(map->key_acts);
+ map->key_acts= NULL;
+ }
+ if (map->acts!=NULL) {
+ _XkbFree(map->acts);
+ map->num_acts= map->size_acts= 0;
+ map->acts= NULL;
+ }
+ }
+ if ((what&XkbKeyBehaviorsMask)&&(map->behaviors!=NULL)) {
+ _XkbFree(map->behaviors);
+ map->behaviors= NULL;
+ }
+ if ((what&XkbVirtualModMapMask)&&(map->vmodmap!=NULL)) {
+ _XkbFree(map->vmodmap);
+ map->vmodmap= NULL;
+ }
+
+ if (freeMap) {
+ _XkbFree(xkb->server);
+ xkb->server= NULL;
+ }
+ return;
+}
diff --git a/libX11/src/xkb/XKBNames.c b/libX11/src/xkb/XKBNames.c
index 3cc1f60ed..cf2382cca 100644
--- a/libX11/src/xkb/XKBNames.c
+++ b/libX11/src/xkb/XKBNames.c
@@ -1,887 +1,887 @@
-/************************************************************
-Copyright (c) 1993 by Silicon Graphics Computer Systems, Inc.
-
-Permission to use, copy, modify, and distribute this
-software and its documentation for any purpose and without
-fee is hereby granted, provided that the above copyright
-notice appear in all copies and that both that copyright
-notice and this permission notice appear in supporting
-documentation, and that the name of Silicon Graphics not be
-used in advertising or publicity pertaining to distribution
-of the software without specific prior written permission.
-Silicon Graphics makes no representation about the suitability
-of this software for any purpose. It is provided "as is"
-without any express or implied warranty.
-
-SILICON GRAPHICS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS
-SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
-AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON
-GRAPHICS BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL
-DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
-DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
-OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH
-THE USE OR PERFORMANCE OF THIS SOFTWARE.
-
-********************************************************/
-
-#define NEED_MAP_READERS
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-#include <X11/extensions/XKBproto.h>
-#include "XKBlibint.h"
-
-
-static Status
-_XkbReadAtoms( XkbReadBufferPtr buf,
- Atom * atoms,
- int maxAtoms,
- CARD32 present)
-{
-register int i,bit;
-
- for (i=0,bit=1;(i<maxAtoms)&&(present);i++,bit<<=1) {
- if (present&bit) {
- if (!_XkbReadBufferCopy32(buf,(long *)&atoms[i],1))
- return BadLength;
- present&= ~bit;
- }
- }
- return Success;
-}
-
-Status
-_XkbReadGetNamesReply( Display * dpy,
- xkbGetNamesReply * rep,
- XkbDescPtr xkb,
- int * nread_rtrn)
-{
- int i,len;
- XkbReadBufferRec buf;
- register XkbNamesPtr names;
-
- if ( xkb->device_spec == XkbUseCoreKbd )
- xkb->device_spec = rep->deviceID;
-
- if ((xkb->names==NULL)&&
- (XkbAllocNames(xkb,rep->which,
- rep->nRadioGroups,rep->nKeyAliases)!=Success)) {
- return BadAlloc;
- }
- names= xkb->names;
- if (rep->length==0)
- return Success;
-
- if (!_XkbInitReadBuffer(dpy,&buf,(int)rep->length*4))
- return BadAlloc;
- if (nread_rtrn)
- *nread_rtrn= (int)rep->length*4;
-
- if ((rep->which&XkbKeycodesNameMask)&&
- (!_XkbReadBufferCopy32(&buf,(long *)&names->keycodes,1)))
- goto BAILOUT;
- if ((rep->which&XkbGeometryNameMask)&&
- (!_XkbReadBufferCopy32(&buf,(long *)&names->geometry,1)))
- goto BAILOUT;
- if ((rep->which&XkbSymbolsNameMask)&&
- (!_XkbReadBufferCopy32(&buf,(long *)&names->symbols,1)))
- goto BAILOUT;
- if ((rep->which&XkbPhysSymbolsNameMask)&&
- (!_XkbReadBufferCopy32(&buf,(long *)&names->phys_symbols,1)))
- goto BAILOUT;
- if ((rep->which&XkbTypesNameMask)&&
- (!_XkbReadBufferCopy32(&buf,(long *)&names->types,1)))
- goto BAILOUT;
- if ((rep->which&XkbCompatNameMask)&&
- (!_XkbReadBufferCopy32(&buf,(long *)&names->compat,1)))
- goto BAILOUT;
-
- if ( rep->which & XkbKeyTypeNamesMask ) {
- XkbClientMapPtr map= xkb->map;
- XkbKeyTypePtr type;
-
- len= rep->nTypes*4;
- if (map!=NULL) {
- type= map->types;
- for (i=0;(i<map->num_types)&&(i<rep->nTypes);i++,type++) {
- if (!_XkbReadBufferCopy32(&buf,(long *)&type->name,1))
- goto BAILOUT;
- len-= 4;
- }
- }
- if ((len>0)&&(!_XkbSkipReadBufferData(&buf,len)))
- goto BAILOUT;
- }
- if ( rep->which&XkbKTLevelNamesMask ) {
- CARD8 *nLevels;
- XkbClientMapPtr map= xkb->map;
- XkbKeyTypePtr type;
-
- nLevels=(CARD8*)_XkbGetReadBufferPtr(&buf,XkbPaddedSize(rep->nTypes));
- if (nLevels==NULL)
- goto BAILOUT;
- if (map!=NULL) {
- type= map->types;
- for (i=0;i<(int)rep->nTypes;i++,type++) {
- if (i>=map->num_types) {
- if (!_XkbSkipReadBufferData(&buf,nLevels[i]*4))
- goto BAILOUT;
- continue;
- }
- if ((nLevels[i]>0)&&(nLevels[i]!=type->num_levels)) {
- goto BAILOUT;
- }
- if (type->level_names!=NULL)
- Xfree(type->level_names);
- if (nLevels[i]==0) {
- type->level_names= NULL;
- continue;
- }
- type->level_names= _XkbTypedCalloc(nLevels[i],Atom);
- if (type->level_names!=NULL) {
- if (!_XkbReadBufferCopy32(&buf,(long *)type->level_names,
- nLevels[i]))
- goto BAILOUT;
- }
- else {
- _XkbSkipReadBufferData(&buf,nLevels[i]*4);
- }
- }
- }
- else {
- for (i=0;i<(int)rep->nTypes;i++) {
- _XkbSkipReadBufferData(&buf,nLevels[i]*4);
- }
- }
- }
- if (rep->which & XkbIndicatorNamesMask) {
- if (_XkbReadAtoms(&buf,names->indicators,XkbNumIndicators,
- rep->indicators)!=Success)
- goto BAILOUT;
- }
- if ( rep->which&XkbVirtualModNamesMask ) {
- if (_XkbReadAtoms(&buf,names->vmods,XkbNumVirtualMods,
- (CARD32)rep->virtualMods)!=Success)
- goto BAILOUT;
- }
- if ( rep->which&XkbGroupNamesMask ) {
- if (_XkbReadAtoms(&buf,names->groups,XkbNumKbdGroups,
- (CARD32)rep->groupNames)!=Success)
- goto BAILOUT;
- }
- if ( rep->which&XkbKeyNamesMask ) {
- if (names->keys==NULL) {
- int nKeys;
- if (xkb->max_key_code==0) {
- xkb->min_key_code= rep->minKeyCode;
- xkb->max_key_code= rep->maxKeyCode;
- }
- nKeys= xkb->max_key_code+1;
- names->keys= _XkbTypedCalloc(nKeys,XkbKeyNameRec);
- }
- if (names->keys!=NULL) {
- if (!_XkbCopyFromReadBuffer(&buf,
- (char *)&names->keys[rep->firstKey],
- rep->nKeys*XkbKeyNameLength))
- goto BAILOUT;
- }
- else _XkbSkipReadBufferData(&buf,rep->nKeys*XkbKeyNameLength);
- }
- if ( rep->which&XkbKeyAliasesMask && (rep->nKeyAliases>0) ) {
- if (XkbAllocNames(xkb,XkbKeyAliasesMask,0,rep->nKeyAliases)!=Success)
- goto BAILOUT;
- if (!_XkbCopyFromReadBuffer(&buf,(char *)names->key_aliases,
- rep->nKeyAliases*XkbKeyNameLength*2))
- goto BAILOUT;
- }
- if ( rep->which&XkbRGNamesMask ) {
- if (rep->nRadioGroups>0) {
- Atom *rgNames;
-
- if (names->radio_groups==NULL)
- names->radio_groups = _XkbTypedCalloc(rep->nRadioGroups,Atom);
- else if (names->num_rg<rep->nRadioGroups) {
- names->radio_groups = _XkbTypedRealloc(names->radio_groups,
- rep->nRadioGroups,
- Atom);
- }
- rgNames= names->radio_groups;
- if (!rgNames) {
- goto BAILOUT;
- }
- if (!_XkbReadBufferCopy32(&buf,(long *)rgNames,rep->nRadioGroups))
- goto BAILOUT;
- names->num_rg= rep->nRadioGroups;
- }
- else if (names->num_rg>0) {
- names->num_rg= 0;
- Xfree(names->radio_groups);
- }
- }
- len= _XkbFreeReadBuffer(&buf);
- if (len!=0) return BadLength;
- else return Success;
-BAILOUT:
- _XkbFreeReadBuffer(&buf);
- return BadLength;
-}
-
-Status
-XkbGetNames(Display *dpy,unsigned which,XkbDescPtr xkb)
-{
- register xkbGetNamesReq *req;
- xkbGetNamesReply rep;
- Status status;
- XkbInfoPtr xkbi;
-
- if ((dpy->flags & XlibDisplayNoXkb) ||
- (!dpy->xkb_info && !XkbUseExtension(dpy,NULL,NULL)))
- return BadAccess;
- LockDisplay(dpy);
- xkbi = dpy->xkb_info;
- if (!xkb->names) {
- xkb->names = _XkbTypedCalloc(1,XkbNamesRec);
- if (!xkb->names) {
- UnlockDisplay(dpy);
- SyncHandle();
- return BadAlloc;
- }
- }
- GetReq(kbGetNames, req);
- req->reqType = xkbi->codes->major_opcode;
- req->xkbReqType = X_kbGetNames;
- req->deviceSpec = xkb->device_spec;
- req->which = which;
- if (!_XReply(dpy, (xReply *)&rep, 0, xFalse)) {
- UnlockDisplay(dpy);
- SyncHandle();
- return BadImplementation;
- }
-
- status = _XkbReadGetNamesReply(dpy,&rep,xkb,NULL);
- UnlockDisplay(dpy);
- SyncHandle();
- return status;
-}
-
-/***====================================================================***/
-
-static int
-_XkbCountBits(int nBitsMax,unsigned long mask)
-{
-register unsigned long y, nBits;
-
- y = (mask >> 1) &033333333333;
- y = mask - y - ((y >>1) & 033333333333);
- nBits = ((unsigned int) (((y + (y >> 3)) & 030707070707) % 077));
-
- /* nBitsMax really means max+1 */
- return (nBits < nBitsMax) ? nBits : (nBitsMax - 1);
-}
-
-static CARD32
-_XkbCountAtoms(Atom *atoms,int maxAtoms,int *count)
-{
-register unsigned int i,bit,nAtoms;
-register CARD32 atomsPresent;
-
- for (i=nAtoms=atomsPresent=0,bit=1;i<maxAtoms;i++,bit<<=1) {
- if (atoms[i]!=None) {
- atomsPresent|= bit;
- nAtoms++;
- }
- }
- if (count)
- *count= nAtoms;
- return atomsPresent;
-}
-
-static void
-_XkbCopyAtoms(Display *dpy,Atom *atoms,CARD32 mask,int maxAtoms)
-{
-register unsigned int i,bit;
-
- for (i=0,bit=1;i<maxAtoms;i++,bit<<=1) {
- if (mask&bit)
- Data32(dpy,&atoms[i],4);
- }
- return;
-}
-
-Bool
-XkbSetNames( Display * dpy,
- unsigned int which,
- unsigned int firstType,
- unsigned int nTypes,
- XkbDescPtr xkb)
-{
- register xkbSetNamesReq *req;
- int nLvlNames = 0;
- XkbInfoPtr xkbi;
- XkbNamesPtr names;
- unsigned firstLvlType,nLvlTypes;
- int nVMods,nLEDs,nRG,nKA,nGroups;
- int nKeys=0,firstKey=0,nAtoms;
- CARD32 leds,vmods,groups;
-
- if ((dpy->flags & XlibDisplayNoXkb) ||
- (!dpy->xkb_info && !XkbUseExtension(dpy,NULL,NULL)))
- return False;
- if ((!xkb)||(!xkb->names))
- return False;
- firstLvlType= firstType;
- nLvlTypes= nTypes;
- if (nTypes<1)
- which&= ~(XkbKTLevelNamesMask|XkbKeyTypeNamesMask);
- else if (firstType<=XkbLastRequiredType) {
- int adjust;
- adjust= XkbLastRequiredType-firstType+1;
- firstType+= adjust;
- nTypes-= adjust;
- if (nTypes<1)
- which&= ~XkbKeyTypeNamesMask;
- }
- names= xkb->names;
- if (which&(XkbKTLevelNamesMask|XkbKeyTypeNamesMask)) {
- register int i;
- XkbKeyTypePtr type;
- if((xkb->map==NULL)||(xkb->map->types==NULL)||(nTypes==0)||
- (firstType+nTypes>xkb->map->num_types)||
- (firstLvlType+nLvlTypes>xkb->map->num_types))
- return False;
- if (which&XkbKTLevelNamesMask) {
- type= &xkb->map->types[firstLvlType];
- for (i=nLvlNames=0;i<nLvlTypes;i++,type++) {
- if (type->level_names!=NULL)
- nLvlNames+= type->num_levels;
- }
- }
- }
-
- nVMods= nLEDs= nRG= nKA= nAtoms= nGroups= 0;
- LockDisplay(dpy);
- xkbi = dpy->xkb_info;
- GetReq(kbSetNames, req);
- req->reqType = xkbi->codes->major_opcode;
- req->xkbReqType = X_kbSetNames;
- req->deviceSpec = xkb->device_spec;
- req->firstType = firstType;
- req->nTypes = nTypes;
- req->firstKey = xkb->min_key_code;
- req->nKeys = xkb->max_key_code-xkb->min_key_code+1;
-
- if (which&XkbKeycodesNameMask)
- nAtoms++;
- if (which&XkbGeometryNameMask)
- nAtoms++;
- if (which&XkbSymbolsNameMask)
- nAtoms++;
- if (which&XkbPhysSymbolsNameMask)
- nAtoms++;
- if (which&XkbTypesNameMask)
- nAtoms++;
- if (which&XkbCompatNameMask)
- nAtoms++;
- if (which&XkbKeyTypeNamesMask)
- nAtoms+= nTypes;
- if (which&XkbKTLevelNamesMask) {
- req->firstKTLevel= firstLvlType;
- req->nKTLevels= nLvlTypes;
- req->length+= XkbPaddedSize(nLvlTypes)/4; /* room for group widths */
- nAtoms+= nLvlNames;
- }
- else req->firstKTLevel= req->nKTLevels= 0;
-
- if (which&XkbIndicatorNamesMask) {
- req->indicators= leds=
- _XkbCountAtoms(names->indicators,XkbNumIndicators,&nLEDs);
- if (nLEDs>0)
- nAtoms+= nLEDs;
- else which&= ~XkbIndicatorNamesMask;
- }
- else req->indicators= leds= 0;
-
- if (which&XkbVirtualModNamesMask) {
- vmods= req->virtualMods= (CARD16)
- _XkbCountAtoms(names->vmods,XkbNumVirtualMods,&nVMods);
- if (nVMods>0)
- nAtoms+= nVMods;
- else which&= ~XkbVirtualModNamesMask;
- }
- else vmods= req->virtualMods= 0;
-
- if (which&XkbGroupNamesMask) {
- groups= req->groupNames= (CARD8)
- _XkbCountAtoms(names->groups,XkbNumKbdGroups,&nGroups);
- if (nGroups>0)
- nAtoms+= nGroups;
- else which&= ~XkbGroupNamesMask;
- }
- else groups= req->groupNames= 0;
-
- if ((which&XkbKeyNamesMask)&&(names->keys!=NULL)) {
- firstKey= req->firstKey;
- nKeys= req->nKeys;
- nAtoms+= nKeys; /* technically not atoms, but 4 bytes wide */
- }
- else which&= ~XkbKeyNamesMask;
-
- if (which&XkbKeyAliasesMask) {
- nKA= ((names->key_aliases!=NULL)?names->num_key_aliases:0);
- if (nKA>0) {
- req->nKeyAliases= nKA;
- nAtoms+= nKA*2; /* not atoms, but 8 bytes on the wire */
- }
- else {
- which&= ~XkbKeyAliasesMask;
- req->nKeyAliases = 0;
- }
- }
- else req->nKeyAliases= 0;
-
- if (which&XkbRGNamesMask) {
- nRG= names->num_rg;
- if (nRG>0)
- nAtoms+= nRG;
- else which&= ~XkbRGNamesMask;
- }
-
- req->which= which;
- req->nRadioGroups= nRG;
- req->length+= (nAtoms*4)/4;
-
- if (which&XkbKeycodesNameMask)
- Data32(dpy,(long *)&names->keycodes,4);
- if (which&XkbGeometryNameMask)
- Data32(dpy,(long *)&names->geometry,4);
- if (which&XkbSymbolsNameMask)
- Data32(dpy,(long *)&names->symbols,4);
- if (which&XkbPhysSymbolsNameMask)
- Data32(dpy,(long *)&names->phys_symbols,4);
- if (which&XkbTypesNameMask)
- Data32(dpy,(long *)&names->types,4);
- if (which&XkbCompatNameMask)
- Data32(dpy,(long *)&names->compat,4);
- if (which&XkbKeyTypeNamesMask) {
- register int i;
- register XkbKeyTypePtr type;
- type= &xkb->map->types[firstType];
- for (i=0;i<nTypes;i++,type++) {
- Data32(dpy,(long *)&type->name,4);
- }
- }
- if (which&XkbKTLevelNamesMask) {
- XkbKeyTypePtr type;
- int i;
- char *tmp;
-
- BufAlloc(char *,tmp,XkbPaddedSize(nLvlTypes));
- type = &xkb->map->types[firstLvlType];
- for (i=0;i<nLvlTypes;i++,type++) {
- *tmp++ = type->num_levels;
- }
- type = &xkb->map->types[firstLvlType];
- for (i=0;i<nLvlTypes;i++,type++) {
- if (type->level_names!=NULL)
- Data32(dpy,(long *)type->level_names,type->num_levels*4);
- }
- }
- if (which&XkbIndicatorNamesMask)
- _XkbCopyAtoms(dpy,names->indicators,leds,XkbNumIndicators);
- if (which&XkbVirtualModNamesMask)
- _XkbCopyAtoms(dpy,names->vmods,vmods,XkbNumVirtualMods);
- if (which&XkbGroupNamesMask)
- _XkbCopyAtoms(dpy,names->groups,groups,XkbNumKbdGroups);
- if (which&XkbKeyNamesMask) {
-#ifdef WORD64
- char *tmp;
- register int i;
- BufAlloc(char *,tmp,nKeys*XkbKeyNameLength);
- for (i=0;i<nKeys;i++,tmp+= XkbKeyNameLength) {
- tmp[0]= names->keys[firstKey+i].name[0];
- tmp[1]= names->keys[firstKey+i].name[1];
- tmp[2]= names->keys[firstKey+i].name[2];
- tmp[3]= names->keys[firstKey+i].name[3];
- }
-#else
- Data(dpy,(char *)&names->keys[firstKey],nKeys*XkbKeyNameLength);
-#endif
- }
- if (which&XkbKeyAliasesMask) {
-#ifdef WORD64
- char *tmp;
- register int i;
- BufAlloc(char *,tmp,nKA*XkbKeyNameLength*2);
- for (i=0;i<nKeys;i++,tmp+= 2*XkbKeyNameLength) {
- tmp[0]= names->key_aliases[i].real[0];
- tmp[1]= names->key_aliases[i].real[1];
- tmp[2]= names->key_aliases[i].real[2];
- tmp[3]= names->key_aliases[i].real[3];
- tmp[4]= names->key_aliases[i].alias[0];
- tmp[5]= names->key_aliases[i].alias[1];
- tmp[6]= names->key_aliases[i].alias[2];
- tmp[7]= names->key_aliases[i].alias[3];
- }
-#else
- Data(dpy,(char *)names->key_aliases,nKA*XkbKeyNameLength*2);
-#endif
- }
- if (which&XkbRGNamesMask) {
- Data32(dpy,(long *)names->radio_groups,nRG*4);
- }
- UnlockDisplay(dpy);
- SyncHandle();
- return True;
-}
-
-Bool
-XkbChangeNames(Display *dpy,XkbDescPtr xkb,XkbNameChangesPtr changes)
-{
- register xkbSetNamesReq *req;
- int nLvlNames = 0;
- XkbInfoPtr xkbi;
- XkbNamesPtr names;
- unsigned which,firstType,nTypes;
- unsigned firstLvlType,nLvlTypes;
- int nVMods,nLEDs,nRG,nKA,nGroups;
- int nKeys=0,firstKey=0,nAtoms;
- CARD32 leds=0,vmods=0,groups=0;
-
- if ((dpy->flags & XlibDisplayNoXkb) ||
- (!dpy->xkb_info && !XkbUseExtension(dpy,NULL,NULL)))
- return False;
- if ((!xkb)||(!xkb->names)||(!changes))
- return False;
- which= changes->changed;
- firstType= changes->first_type;
- nTypes= changes->num_types;
- firstLvlType= changes->first_lvl;;
- nLvlTypes= changes->num_lvls;
- if (which&XkbKeyTypeNamesMask) {
- if (nTypes<1)
- which&= ~XkbKeyTypeNamesMask;
- else if (firstType<=XkbLastRequiredType) {
- int adjust;
- adjust= XkbLastRequiredType-firstType+1;
- firstType+= adjust;
- nTypes-= adjust;
- if (nTypes<1)
- which&= ~XkbKeyTypeNamesMask;
- }
- }
- else firstType= nTypes= 0;
-
- if (which&XkbKTLevelNamesMask) {
- if (nLvlTypes<1)
- which&= ~XkbKTLevelNamesMask;
- }
- else firstLvlType= nLvlTypes= 0;
-
- names= xkb->names;
- if (which&(XkbKTLevelNamesMask|XkbKeyTypeNamesMask)) {
- register int i;
- XkbKeyTypePtr type;
- if((xkb->map==NULL)||(xkb->map->types==NULL)||(nTypes==0)||
- (firstType+nTypes>xkb->map->num_types)||
- (firstLvlType+nLvlTypes>xkb->map->num_types))
- return False;
- if (which&XkbKTLevelNamesMask) {
- type= &xkb->map->types[firstLvlType];
- for (i=nLvlNames=0;i<nLvlTypes;i++,type++) {
- if (type->level_names!=NULL)
- nLvlNames+= type->num_levels;
- }
- }
- }
-
- if (changes->num_keys<1)
- which&= ~XkbKeyNamesMask;
- if ((which&XkbKeyNamesMask)==0)
- changes->first_key= changes->num_keys= 0;
- else if ((changes->first_key<xkb->min_key_code)||
- (changes->first_key+changes->num_keys>xkb->max_key_code)) {
- return False;
- }
-
- if ((which&XkbVirtualModNamesMask)==0)
- changes->changed_vmods= 0;
- else if (changes->changed_vmods==0)
- which&= ~XkbVirtualModNamesMask;
-
- if ((which&XkbIndicatorNamesMask)==0)
- changes->changed_indicators= 0;
- else if (changes->changed_indicators==0)
- which&= ~XkbIndicatorNamesMask;
-
- if ((which&XkbGroupNamesMask)==0)
- changes->changed_groups= 0;
- else if (changes->changed_groups==0)
- which&= ~XkbGroupNamesMask;
-
- nVMods= nLEDs= nRG= nKA= nAtoms= nGroups= 0;
- LockDisplay(dpy);
- xkbi = dpy->xkb_info;
- GetReq(kbSetNames, req);
- req->reqType = xkbi->codes->major_opcode;
- req->xkbReqType = X_kbSetNames;
- req->deviceSpec = xkb->device_spec;
- req->firstType = firstType;
- req->nTypes = nTypes;
- req->firstKey = changes->first_key;
- req->nKeys = changes->num_keys;
-
- if (which&XkbKeycodesNameMask)
- nAtoms++;
- if (which&XkbGeometryNameMask)
- nAtoms++;
- if (which&XkbSymbolsNameMask)
- nAtoms++;
- if (which&XkbPhysSymbolsNameMask)
- nAtoms++;
- if (which&XkbTypesNameMask)
- nAtoms++;
- if (which&XkbCompatNameMask)
- nAtoms++;
- if (which&XkbKeyTypeNamesMask)
- nAtoms+= nTypes;
- if (which&XkbKTLevelNamesMask) {
- req->firstKTLevel= firstLvlType;
- req->nKTLevels= nLvlTypes;
- req->length+= XkbPaddedSize(nLvlTypes)/4; /* room for group widths */
- nAtoms+= nLvlNames;
- }
- else req->firstKTLevel= req->nKTLevels= 0;
-
- if (which&XkbIndicatorNamesMask) {
- leds= req->indicators= (CARD32)changes->changed_indicators;
- nLEDs= _XkbCountBits(XkbNumIndicators,changes->changed_indicators);
- if (nLEDs>0)
- nAtoms+= nLEDs;
- else which&= ~XkbIndicatorNamesMask;
- }
- else req->indicators= 0;
-
- if (which&XkbVirtualModNamesMask) {
- vmods= req->virtualMods= changes->changed_vmods;
- nVMods= _XkbCountBits(XkbNumVirtualMods,
- (unsigned long)changes->changed_vmods);
- if (nVMods>0)
- nAtoms+= nVMods;
- else which&= ~XkbVirtualModNamesMask;
- }
- else req->virtualMods= 0;
-
- if (which&XkbGroupNamesMask) {
- groups= req->groupNames= changes->changed_groups;
- nGroups= _XkbCountBits(XkbNumKbdGroups,
- (unsigned long)changes->changed_groups);
- if (nGroups>0)
- nAtoms+= nGroups;
- else which&= ~XkbGroupNamesMask;
- }
- else req->groupNames= 0;
-
- if ((which&XkbKeyNamesMask)&&(names->keys!=NULL)) {
- firstKey= req->firstKey;
- nKeys= req->nKeys;
- nAtoms+= nKeys; /* technically not atoms, but 4 bytes wide */
- }
- else which&= ~XkbKeyNamesMask;
-
- if (which&XkbKeyAliasesMask) {
- nKA= ((names->key_aliases!=NULL)?names->num_key_aliases:0);
- if (nKA>0)
- nAtoms+= nKA*2; /* not atoms, but 8 bytes on the wire */
- else which&= ~XkbKeyAliasesMask;
- }
-
- if (which&XkbRGNamesMask) {
- nRG= names->num_rg;
- if (nRG>0)
- nAtoms+= nRG;
- else which&= ~XkbRGNamesMask;
- }
-
- req->which= which;
- req->nRadioGroups= nRG;
- req->length+= (nAtoms*4)/4;
-
- if (which&XkbKeycodesNameMask)
- Data32(dpy,(long *)&names->keycodes,4);
- if (which&XkbGeometryNameMask)
- Data32(dpy,(long *)&names->geometry,4);
- if (which&XkbSymbolsNameMask)
- Data32(dpy,(long *)&names->symbols,4);
- if (which&XkbPhysSymbolsNameMask)
- Data32(dpy,(long *)&names->phys_symbols,4);
- if (which&XkbTypesNameMask)
- Data32(dpy,(long *)&names->types,4);
- if (which&XkbCompatNameMask)
- Data32(dpy,(long *)&names->compat,4);
- if (which&XkbKeyTypeNamesMask) {
- register int i;
- register XkbKeyTypePtr type;
- type= &xkb->map->types[firstType];
- for (i=0;i<nTypes;i++,type++) {
- Data32(dpy,(long *)&type->name,4);
- }
- }
- if (which&XkbKTLevelNamesMask) {
- XkbKeyTypePtr type;
- int i;
- char *tmp;
-
- BufAlloc(char *,tmp,XkbPaddedSize(nLvlTypes));
- type = &xkb->map->types[firstLvlType];
- for (i=0;i<nLvlTypes;i++,type++) {
- *tmp++ = type->num_levels;
- }
- type = &xkb->map->types[firstLvlType];
- for (i=0;i<nLvlTypes;i++,type++) {
- if (type->level_names!=NULL)
- Data32(dpy,(long *)type->level_names,type->num_levels*4);
- }
- }
- if (which&XkbIndicatorNamesMask)
- _XkbCopyAtoms(dpy,names->indicators,leds,XkbNumIndicators);
- if (which&XkbVirtualModNamesMask)
- _XkbCopyAtoms(dpy,names->vmods,vmods,XkbNumVirtualMods);
- if (which&XkbGroupNamesMask)
- _XkbCopyAtoms(dpy,names->groups,groups,XkbNumKbdGroups);
- if (which&XkbKeyNamesMask) {
-#ifdef WORD64
- char *tmp;
- register int i;
- BufAlloc(char *,tmp,nKeys*4);
- for (i=0;i<nKeys;i++,tmp+= 4) {
- tmp[0]= names->keys[firstKey+i].name[0];
- tmp[1]= names->keys[firstKey+i].name[1];
- tmp[2]= names->keys[firstKey+i].name[2];
- tmp[3]= names->keys[firstKey+i].name[3];
- }
-#else
- Data(dpy,(char *)&names->keys[firstKey],nKeys*XkbKeyNameLength);
-#endif
- }
- if (which&XkbKeyAliasesMask) {
-#ifdef WORD64
- char *tmp;
- register int i;
- BufAlloc(char *,tmp,nKA*XkbKeyNameLength*2);
- for (i=0;i<nKeys;i++,tmp+= 2*XkbKeyNameLength) {
- tmp[0]= names->key_aliases[i].real[0];
- tmp[1]= names->key_aliases[i].real[1];
- tmp[2]= names->key_aliases[i].real[2];
- tmp[3]= names->key_aliases[i].real[3];
- tmp[4]= names->key_aliases[i].alias[0];
- tmp[5]= names->key_aliases[i].alias[1];
- tmp[6]= names->key_aliases[i].alias[2];
- tmp[7]= names->key_aliases[i].alias[3];
- }
-#else
- Data(dpy,(char *)names->key_aliases,nKA*XkbKeyNameLength*2);
-#endif
- }
- if (which&XkbRGNamesMask) {
- Data32(dpy,(long *)names->radio_groups,nRG*4);
- }
- UnlockDisplay(dpy);
- SyncHandle();
- return True;
-}
-
-void
-XkbNoteNameChanges( XkbNameChangesPtr old,
- XkbNamesNotifyEvent * new,
- unsigned int wanted)
-{
-int first,last,old_last,new_last;
-
- wanted&= new->changed;
- if ((old==NULL)||(new==NULL)||(wanted==0))
- return;
- if (wanted&XkbKeyTypeNamesMask) {
- if (old->changed&XkbKeyTypeNamesMask) {
- new_last= (new->first_type+new->num_types-1);
- old_last= (old->first_type+old->num_types-1);
-
- if (new->first_type<old->first_type)
- first= new->first_type;
- else first= old->first_type;
-
- if (old_last>new_last)
- last= old_last;
- else last= new_last;
-
- old->first_type= first;
- old->num_types= (last-first)+1;
- }
- else {
- old->first_type= new->first_type;
- old->num_types= new->num_types;
- }
- }
- if (wanted&XkbKTLevelNamesMask) {
- if (old->changed&XkbKTLevelNamesMask) {
- new_last= (new->first_lvl+new->num_lvls-1);
- old_last= (old->first_lvl+old->num_lvls-1);
-
- if (new->first_lvl<old->first_lvl)
- first= new->first_lvl;
- else first= old->first_lvl;
-
- if (old_last>new_last)
- last= old_last;
- else last= new_last;
-
- old->first_lvl= first;
- old->num_lvls= (last-first)+1;
- }
- else {
- old->first_lvl= new->first_lvl;
- old->num_lvls= new->num_lvls;
- }
- }
- if (wanted&XkbIndicatorNamesMask) {
- if (old->changed&XkbIndicatorNamesMask)
- old->changed_indicators|= new->changed_indicators;
- else old->changed_indicators= new->changed_indicators;
- }
- if (wanted&XkbKeyNamesMask) {
- if (old->changed&XkbKeyNamesMask) {
- new_last= (new->first_key+new->num_keys-1);
- old_last= (old->first_key+old->num_keys-1);
-
- first= old->first_key;
-
- if (new->first_key<old->first_key)
- first= new->first_key;
- if (old_last>new_last)
- new_last= old_last;
-
- old->first_key= first;
- old->num_keys= (new_last-first)+1;
- }
- else {
- old->first_key= new->first_key;
- old->num_keys= new->num_keys;
- }
- }
- if (wanted&XkbVirtualModNamesMask) {
- if (old->changed&XkbVirtualModNamesMask)
- old->changed_vmods|= new->changed_vmods;
- else old->changed_vmods= new->changed_vmods;
- }
- if (wanted&XkbGroupNamesMask) {
- if (old->changed&XkbGroupNamesMask)
- old->changed_groups|= new->changed_groups;
- else old->changed_groups= new->changed_groups;
- }
- if (wanted&XkbRGNamesMask)
- old->num_rg= new->num_radio_groups;
- if (wanted&XkbKeyAliasesMask)
- old->num_aliases= new->num_aliases;
- old->changed|= wanted;
- return;
-}
+/************************************************************
+Copyright (c) 1993 by Silicon Graphics Computer Systems, Inc.
+
+Permission to use, copy, modify, and distribute this
+software and its documentation for any purpose and without
+fee is hereby granted, provided that the above copyright
+notice appear in all copies and that both that copyright
+notice and this permission notice appear in supporting
+documentation, and that the name of Silicon Graphics not be
+used in advertising or publicity pertaining to distribution
+of the software without specific prior written permission.
+Silicon Graphics makes no representation about the suitability
+of this software for any purpose. It is provided "as is"
+without any express or implied warranty.
+
+SILICON GRAPHICS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS
+SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
+AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON
+GRAPHICS BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL
+DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
+DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
+OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH
+THE USE OR PERFORMANCE OF THIS SOFTWARE.
+
+********************************************************/
+
+#define NEED_MAP_READERS
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+#include <X11/extensions/XKBproto.h>
+#include "XKBlibint.h"
+
+
+static Status
+_XkbReadAtoms( XkbReadBufferPtr buf,
+ Atom * atoms,
+ int maxAtoms,
+ CARD32 present)
+{
+register int i,bit;
+
+ for (i=0,bit=1;(i<maxAtoms)&&(present);i++,bit<<=1) {
+ if (present&bit) {
+ if (!_XkbReadBufferCopy32(buf,(long *)&atoms[i],1))
+ return BadLength;
+ present&= ~bit;
+ }
+ }
+ return Success;
+}
+
+Status
+_XkbReadGetNamesReply( Display * dpy,
+ xkbGetNamesReply * rep,
+ XkbDescPtr xkb,
+ int * nread_rtrn)
+{
+ int i,len;
+ XkbReadBufferRec buf;
+ register XkbNamesPtr names;
+
+ if ( xkb->device_spec == XkbUseCoreKbd )
+ xkb->device_spec = rep->deviceID;
+
+ if ((xkb->names==NULL)&&
+ (XkbAllocNames(xkb,rep->which,
+ rep->nRadioGroups,rep->nKeyAliases)!=Success)) {
+ return BadAlloc;
+ }
+ names= xkb->names;
+ if (rep->length==0)
+ return Success;
+
+ if (!_XkbInitReadBuffer(dpy,&buf,(int)rep->length*4))
+ return BadAlloc;
+ if (nread_rtrn)
+ *nread_rtrn= (int)rep->length*4;
+
+ if ((rep->which&XkbKeycodesNameMask)&&
+ (!_XkbReadBufferCopy32(&buf,(long *)&names->keycodes,1)))
+ goto BAILOUT;
+ if ((rep->which&XkbGeometryNameMask)&&
+ (!_XkbReadBufferCopy32(&buf,(long *)&names->geometry,1)))
+ goto BAILOUT;
+ if ((rep->which&XkbSymbolsNameMask)&&
+ (!_XkbReadBufferCopy32(&buf,(long *)&names->symbols,1)))
+ goto BAILOUT;
+ if ((rep->which&XkbPhysSymbolsNameMask)&&
+ (!_XkbReadBufferCopy32(&buf,(long *)&names->phys_symbols,1)))
+ goto BAILOUT;
+ if ((rep->which&XkbTypesNameMask)&&
+ (!_XkbReadBufferCopy32(&buf,(long *)&names->types,1)))
+ goto BAILOUT;
+ if ((rep->which&XkbCompatNameMask)&&
+ (!_XkbReadBufferCopy32(&buf,(long *)&names->compat,1)))
+ goto BAILOUT;
+
+ if ( rep->which & XkbKeyTypeNamesMask ) {
+ XkbClientMapPtr map= xkb->map;
+ XkbKeyTypePtr type;
+
+ len= rep->nTypes*4;
+ if (map!=NULL) {
+ type= map->types;
+ for (i=0;(i<map->num_types)&&(i<rep->nTypes);i++,type++) {
+ if (!_XkbReadBufferCopy32(&buf,(long *)&type->name,1))
+ goto BAILOUT;
+ len-= 4;
+ }
+ }
+ if ((len>0)&&(!_XkbSkipReadBufferData(&buf,len)))
+ goto BAILOUT;
+ }
+ if ( rep->which&XkbKTLevelNamesMask ) {
+ CARD8 *nLevels;
+ XkbClientMapPtr map= xkb->map;
+ XkbKeyTypePtr type;
+
+ nLevels=(CARD8*)_XkbGetReadBufferPtr(&buf,XkbPaddedSize(rep->nTypes));
+ if (nLevels==NULL)
+ goto BAILOUT;
+ if (map!=NULL) {
+ type= map->types;
+ for (i=0;i<(int)rep->nTypes;i++,type++) {
+ if (i>=map->num_types) {
+ if (!_XkbSkipReadBufferData(&buf,nLevels[i]*4))
+ goto BAILOUT;
+ continue;
+ }
+ if ((nLevels[i]>0)&&(nLevels[i]!=type->num_levels)) {
+ goto BAILOUT;
+ }
+ if (type->level_names!=NULL)
+ Xfree(type->level_names);
+ if (nLevels[i]==0) {
+ type->level_names= NULL;
+ continue;
+ }
+ type->level_names= _XkbTypedCalloc(nLevels[i],Atom);
+ if (type->level_names!=NULL) {
+ if (!_XkbReadBufferCopy32(&buf,(long *)type->level_names,
+ nLevels[i]))
+ goto BAILOUT;
+ }
+ else {
+ _XkbSkipReadBufferData(&buf,nLevels[i]*4);
+ }
+ }
+ }
+ else {
+ for (i=0;i<(int)rep->nTypes;i++) {
+ _XkbSkipReadBufferData(&buf,nLevels[i]*4);
+ }
+ }
+ }
+ if (rep->which & XkbIndicatorNamesMask) {
+ if (_XkbReadAtoms(&buf,names->indicators,XkbNumIndicators,
+ rep->indicators)!=Success)
+ goto BAILOUT;
+ }
+ if ( rep->which&XkbVirtualModNamesMask ) {
+ if (_XkbReadAtoms(&buf,names->vmods,XkbNumVirtualMods,
+ (CARD32)rep->virtualMods)!=Success)
+ goto BAILOUT;
+ }
+ if ( rep->which&XkbGroupNamesMask ) {
+ if (_XkbReadAtoms(&buf,names->groups,XkbNumKbdGroups,
+ (CARD32)rep->groupNames)!=Success)
+ goto BAILOUT;
+ }
+ if ( rep->which&XkbKeyNamesMask ) {
+ if (names->keys==NULL) {
+ int nKeys;
+ if (xkb->max_key_code==0) {
+ xkb->min_key_code= rep->minKeyCode;
+ xkb->max_key_code= rep->maxKeyCode;
+ }
+ nKeys= xkb->max_key_code+1;
+ names->keys= _XkbTypedCalloc(nKeys,XkbKeyNameRec);
+ }
+ if (names->keys!=NULL) {
+ if (!_XkbCopyFromReadBuffer(&buf,
+ (char *)&names->keys[rep->firstKey],
+ rep->nKeys*XkbKeyNameLength))
+ goto BAILOUT;
+ }
+ else _XkbSkipReadBufferData(&buf,rep->nKeys*XkbKeyNameLength);
+ }
+ if ( rep->which&XkbKeyAliasesMask && (rep->nKeyAliases>0) ) {
+ if (XkbAllocNames(xkb,XkbKeyAliasesMask,0,rep->nKeyAliases)!=Success)
+ goto BAILOUT;
+ if (!_XkbCopyFromReadBuffer(&buf,(char *)names->key_aliases,
+ rep->nKeyAliases*XkbKeyNameLength*2))
+ goto BAILOUT;
+ }
+ if ( rep->which&XkbRGNamesMask ) {
+ if (rep->nRadioGroups>0) {
+ Atom *rgNames;
+
+ if (names->radio_groups==NULL)
+ names->radio_groups = _XkbTypedCalloc(rep->nRadioGroups,Atom);
+ else if (names->num_rg<rep->nRadioGroups) {
+ names->radio_groups = _XkbTypedRealloc(names->radio_groups,
+ rep->nRadioGroups,
+ Atom);
+ }
+ rgNames= names->radio_groups;
+ if (!rgNames) {
+ goto BAILOUT;
+ }
+ if (!_XkbReadBufferCopy32(&buf,(long *)rgNames,rep->nRadioGroups))
+ goto BAILOUT;
+ names->num_rg= rep->nRadioGroups;
+ }
+ else if (names->num_rg>0) {
+ names->num_rg= 0;
+ Xfree(names->radio_groups);
+ }
+ }
+ len= _XkbFreeReadBuffer(&buf);
+ if (len!=0) return BadLength;
+ else return Success;
+BAILOUT:
+ _XkbFreeReadBuffer(&buf);
+ return BadLength;
+}
+
+Status
+XkbGetNames(Display *dpy,unsigned which,XkbDescPtr xkb)
+{
+ register xkbGetNamesReq *req;
+ xkbGetNamesReply rep;
+ Status status;
+ XkbInfoPtr xkbi;
+
+ if ((dpy->flags & XlibDisplayNoXkb) ||
+ (!dpy->xkb_info && !XkbUseExtension(dpy,NULL,NULL)))
+ return BadAccess;
+ LockDisplay(dpy);
+ xkbi = dpy->xkb_info;
+ if (!xkb->names) {
+ xkb->names = _XkbTypedCalloc(1,XkbNamesRec);
+ if (!xkb->names) {
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return BadAlloc;
+ }
+ }
+ GetReq(kbGetNames, req);
+ req->reqType = xkbi->codes->major_opcode;
+ req->xkbReqType = X_kbGetNames;
+ req->deviceSpec = xkb->device_spec;
+ req->which = which;
+ if (!_XReply(dpy, (xReply *)&rep, 0, xFalse)) {
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return BadImplementation;
+ }
+
+ status = _XkbReadGetNamesReply(dpy,&rep,xkb,NULL);
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return status;
+}
+
+/***====================================================================***/
+
+static int
+_XkbCountBits(int nBitsMax,unsigned long mask)
+{
+register unsigned long y, nBits;
+
+ y = (mask >> 1) &033333333333;
+ y = mask - y - ((y >>1) & 033333333333);
+ nBits = ((unsigned int) (((y + (y >> 3)) & 030707070707) % 077));
+
+ /* nBitsMax really means max+1 */
+ return (nBits < nBitsMax) ? nBits : (nBitsMax - 1);
+}
+
+static CARD32
+_XkbCountAtoms(Atom *atoms,int maxAtoms,int *count)
+{
+register unsigned int i,bit,nAtoms;
+register CARD32 atomsPresent;
+
+ for (i=nAtoms=atomsPresent=0,bit=1;i<maxAtoms;i++,bit<<=1) {
+ if (atoms[i]!=None) {
+ atomsPresent|= bit;
+ nAtoms++;
+ }
+ }
+ if (count)
+ *count= nAtoms;
+ return atomsPresent;
+}
+
+static void
+_XkbCopyAtoms(Display *dpy,Atom *atoms,CARD32 mask,int maxAtoms)
+{
+register unsigned int i,bit;
+
+ for (i=0,bit=1;i<maxAtoms;i++,bit<<=1) {
+ if (mask&bit)
+ Data32(dpy,&atoms[i],4);
+ }
+ return;
+}
+
+Bool
+XkbSetNames( Display * dpy,
+ unsigned int which,
+ unsigned int firstType,
+ unsigned int nTypes,
+ XkbDescPtr xkb)
+{
+ register xkbSetNamesReq *req;
+ int nLvlNames = 0;
+ XkbInfoPtr xkbi;
+ XkbNamesPtr names;
+ unsigned firstLvlType,nLvlTypes;
+ int nVMods,nLEDs,nRG,nKA,nGroups;
+ int nKeys=0,firstKey=0,nAtoms;
+ CARD32 leds,vmods,groups;
+
+ if ((dpy->flags & XlibDisplayNoXkb) ||
+ (!dpy->xkb_info && !XkbUseExtension(dpy,NULL,NULL)))
+ return False;
+ if ((!xkb)||(!xkb->names))
+ return False;
+ firstLvlType= firstType;
+ nLvlTypes= nTypes;
+ if (nTypes<1)
+ which&= ~(XkbKTLevelNamesMask|XkbKeyTypeNamesMask);
+ else if (firstType<=XkbLastRequiredType) {
+ int adjust;
+ adjust= XkbLastRequiredType-firstType+1;
+ firstType+= adjust;
+ nTypes-= adjust;
+ if (nTypes<1)
+ which&= ~XkbKeyTypeNamesMask;
+ }
+ names= xkb->names;
+ if (which&(XkbKTLevelNamesMask|XkbKeyTypeNamesMask)) {
+ register int i;
+ XkbKeyTypePtr type;
+ if((xkb->map==NULL)||(xkb->map->types==NULL)||(nTypes==0)||
+ (firstType+nTypes>xkb->map->num_types)||
+ (firstLvlType+nLvlTypes>xkb->map->num_types))
+ return False;
+ if (which&XkbKTLevelNamesMask) {
+ type= &xkb->map->types[firstLvlType];
+ for (i=nLvlNames=0;i<nLvlTypes;i++,type++) {
+ if (type->level_names!=NULL)
+ nLvlNames+= type->num_levels;
+ }
+ }
+ }
+
+ nVMods= nLEDs= nRG= nKA= nAtoms= nGroups= 0;
+ LockDisplay(dpy);
+ xkbi = dpy->xkb_info;
+ GetReq(kbSetNames, req);
+ req->reqType = xkbi->codes->major_opcode;
+ req->xkbReqType = X_kbSetNames;
+ req->deviceSpec = xkb->device_spec;
+ req->firstType = firstType;
+ req->nTypes = nTypes;
+ req->firstKey = xkb->min_key_code;
+ req->nKeys = xkb->max_key_code-xkb->min_key_code+1;
+
+ if (which&XkbKeycodesNameMask)
+ nAtoms++;
+ if (which&XkbGeometryNameMask)
+ nAtoms++;
+ if (which&XkbSymbolsNameMask)
+ nAtoms++;
+ if (which&XkbPhysSymbolsNameMask)
+ nAtoms++;
+ if (which&XkbTypesNameMask)
+ nAtoms++;
+ if (which&XkbCompatNameMask)
+ nAtoms++;
+ if (which&XkbKeyTypeNamesMask)
+ nAtoms+= nTypes;
+ if (which&XkbKTLevelNamesMask) {
+ req->firstKTLevel= firstLvlType;
+ req->nKTLevels= nLvlTypes;
+ req->length+= XkbPaddedSize(nLvlTypes)/4; /* room for group widths */
+ nAtoms+= nLvlNames;
+ }
+ else req->firstKTLevel= req->nKTLevels= 0;
+
+ if (which&XkbIndicatorNamesMask) {
+ req->indicators= leds=
+ _XkbCountAtoms(names->indicators,XkbNumIndicators,&nLEDs);
+ if (nLEDs>0)
+ nAtoms+= nLEDs;
+ else which&= ~XkbIndicatorNamesMask;
+ }
+ else req->indicators= leds= 0;
+
+ if (which&XkbVirtualModNamesMask) {
+ vmods= req->virtualMods= (CARD16)
+ _XkbCountAtoms(names->vmods,XkbNumVirtualMods,&nVMods);
+ if (nVMods>0)
+ nAtoms+= nVMods;
+ else which&= ~XkbVirtualModNamesMask;
+ }
+ else vmods= req->virtualMods= 0;
+
+ if (which&XkbGroupNamesMask) {
+ groups= req->groupNames= (CARD8)
+ _XkbCountAtoms(names->groups,XkbNumKbdGroups,&nGroups);
+ if (nGroups>0)
+ nAtoms+= nGroups;
+ else which&= ~XkbGroupNamesMask;
+ }
+ else groups= req->groupNames= 0;
+
+ if ((which&XkbKeyNamesMask)&&(names->keys!=NULL)) {
+ firstKey= req->firstKey;
+ nKeys= req->nKeys;
+ nAtoms+= nKeys; /* technically not atoms, but 4 bytes wide */
+ }
+ else which&= ~XkbKeyNamesMask;
+
+ if (which&XkbKeyAliasesMask) {
+ nKA= ((names->key_aliases!=NULL)?names->num_key_aliases:0);
+ if (nKA>0) {
+ req->nKeyAliases= nKA;
+ nAtoms+= nKA*2; /* not atoms, but 8 bytes on the wire */
+ }
+ else {
+ which&= ~XkbKeyAliasesMask;
+ req->nKeyAliases = 0;
+ }
+ }
+ else req->nKeyAliases= 0;
+
+ if (which&XkbRGNamesMask) {
+ nRG= names->num_rg;
+ if (nRG>0)
+ nAtoms+= nRG;
+ else which&= ~XkbRGNamesMask;
+ }
+
+ req->which= which;
+ req->nRadioGroups= nRG;
+ req->length+= (nAtoms*4)/4;
+
+ if (which&XkbKeycodesNameMask)
+ Data32(dpy,(long *)&names->keycodes,4);
+ if (which&XkbGeometryNameMask)
+ Data32(dpy,(long *)&names->geometry,4);
+ if (which&XkbSymbolsNameMask)
+ Data32(dpy,(long *)&names->symbols,4);
+ if (which&XkbPhysSymbolsNameMask)
+ Data32(dpy,(long *)&names->phys_symbols,4);
+ if (which&XkbTypesNameMask)
+ Data32(dpy,(long *)&names->types,4);
+ if (which&XkbCompatNameMask)
+ Data32(dpy,(long *)&names->compat,4);
+ if (which&XkbKeyTypeNamesMask) {
+ register int i;
+ register XkbKeyTypePtr type;
+ type= &xkb->map->types[firstType];
+ for (i=0;i<nTypes;i++,type++) {
+ Data32(dpy,(long *)&type->name,4);
+ }
+ }
+ if (which&XkbKTLevelNamesMask) {
+ XkbKeyTypePtr type;
+ int i;
+ char *tmp;
+
+ BufAlloc(char *,tmp,XkbPaddedSize(nLvlTypes));
+ type = &xkb->map->types[firstLvlType];
+ for (i=0;i<nLvlTypes;i++,type++) {
+ *tmp++ = type->num_levels;
+ }
+ type = &xkb->map->types[firstLvlType];
+ for (i=0;i<nLvlTypes;i++,type++) {
+ if (type->level_names!=NULL)
+ Data32(dpy,(long *)type->level_names,type->num_levels*4);
+ }
+ }
+ if (which&XkbIndicatorNamesMask)
+ _XkbCopyAtoms(dpy,names->indicators,leds,XkbNumIndicators);
+ if (which&XkbVirtualModNamesMask)
+ _XkbCopyAtoms(dpy,names->vmods,vmods,XkbNumVirtualMods);
+ if (which&XkbGroupNamesMask)
+ _XkbCopyAtoms(dpy,names->groups,groups,XkbNumKbdGroups);
+ if (which&XkbKeyNamesMask) {
+#ifdef WORD64
+ char *tmp;
+ register int i;
+ BufAlloc(char *,tmp,nKeys*XkbKeyNameLength);
+ for (i=0;i<nKeys;i++,tmp+= XkbKeyNameLength) {
+ tmp[0]= names->keys[firstKey+i].name[0];
+ tmp[1]= names->keys[firstKey+i].name[1];
+ tmp[2]= names->keys[firstKey+i].name[2];
+ tmp[3]= names->keys[firstKey+i].name[3];
+ }
+#else
+ Data(dpy,(char *)&names->keys[firstKey],nKeys*XkbKeyNameLength);
+#endif
+ }
+ if (which&XkbKeyAliasesMask) {
+#ifdef WORD64
+ char *tmp;
+ register int i;
+ BufAlloc(char *,tmp,nKA*XkbKeyNameLength*2);
+ for (i=0;i<nKeys;i++,tmp+= 2*XkbKeyNameLength) {
+ tmp[0]= names->key_aliases[i].real[0];
+ tmp[1]= names->key_aliases[i].real[1];
+ tmp[2]= names->key_aliases[i].real[2];
+ tmp[3]= names->key_aliases[i].real[3];
+ tmp[4]= names->key_aliases[i].alias[0];
+ tmp[5]= names->key_aliases[i].alias[1];
+ tmp[6]= names->key_aliases[i].alias[2];
+ tmp[7]= names->key_aliases[i].alias[3];
+ }
+#else
+ Data(dpy,(char *)names->key_aliases,nKA*XkbKeyNameLength*2);
+#endif
+ }
+ if (which&XkbRGNamesMask) {
+ Data32(dpy,(long *)names->radio_groups,nRG*4);
+ }
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return True;
+}
+
+Bool
+XkbChangeNames(Display *dpy,XkbDescPtr xkb,XkbNameChangesPtr changes)
+{
+ register xkbSetNamesReq *req;
+ int nLvlNames = 0;
+ XkbInfoPtr xkbi;
+ XkbNamesPtr names;
+ unsigned which,firstType,nTypes;
+ unsigned firstLvlType,nLvlTypes;
+ int nVMods,nLEDs,nRG,nKA,nGroups;
+ int nKeys=0,firstKey=0,nAtoms;
+ CARD32 leds=0,vmods=0,groups=0;
+
+ if ((dpy->flags & XlibDisplayNoXkb) ||
+ (!dpy->xkb_info && !XkbUseExtension(dpy,NULL,NULL)))
+ return False;
+ if ((!xkb)||(!xkb->names)||(!changes))
+ return False;
+ which= changes->changed;
+ firstType= changes->first_type;
+ nTypes= changes->num_types;
+ firstLvlType= changes->first_lvl;;
+ nLvlTypes= changes->num_lvls;
+ if (which&XkbKeyTypeNamesMask) {
+ if (nTypes<1)
+ which&= ~XkbKeyTypeNamesMask;
+ else if (firstType<=XkbLastRequiredType) {
+ int adjust;
+ adjust= XkbLastRequiredType-firstType+1;
+ firstType+= adjust;
+ nTypes-= adjust;
+ if (nTypes<1)
+ which&= ~XkbKeyTypeNamesMask;
+ }
+ }
+ else firstType= nTypes= 0;
+
+ if (which&XkbKTLevelNamesMask) {
+ if (nLvlTypes<1)
+ which&= ~XkbKTLevelNamesMask;
+ }
+ else firstLvlType= nLvlTypes= 0;
+
+ names= xkb->names;
+ if (which&(XkbKTLevelNamesMask|XkbKeyTypeNamesMask)) {
+ register int i;
+ XkbKeyTypePtr type;
+ if((xkb->map==NULL)||(xkb->map->types==NULL)||(nTypes==0)||
+ (firstType+nTypes>xkb->map->num_types)||
+ (firstLvlType+nLvlTypes>xkb->map->num_types))
+ return False;
+ if (which&XkbKTLevelNamesMask) {
+ type= &xkb->map->types[firstLvlType];
+ for (i=nLvlNames=0;i<nLvlTypes;i++,type++) {
+ if (type->level_names!=NULL)
+ nLvlNames+= type->num_levels;
+ }
+ }
+ }
+
+ if (changes->num_keys<1)
+ which&= ~XkbKeyNamesMask;
+ if ((which&XkbKeyNamesMask)==0)
+ changes->first_key= changes->num_keys= 0;
+ else if ((changes->first_key<xkb->min_key_code)||
+ (changes->first_key+changes->num_keys>xkb->max_key_code)) {
+ return False;
+ }
+
+ if ((which&XkbVirtualModNamesMask)==0)
+ changes->changed_vmods= 0;
+ else if (changes->changed_vmods==0)
+ which&= ~XkbVirtualModNamesMask;
+
+ if ((which&XkbIndicatorNamesMask)==0)
+ changes->changed_indicators= 0;
+ else if (changes->changed_indicators==0)
+ which&= ~XkbIndicatorNamesMask;
+
+ if ((which&XkbGroupNamesMask)==0)
+ changes->changed_groups= 0;
+ else if (changes->changed_groups==0)
+ which&= ~XkbGroupNamesMask;
+
+ nVMods= nLEDs= nRG= nKA= nAtoms= nGroups= 0;
+ LockDisplay(dpy);
+ xkbi = dpy->xkb_info;
+ GetReq(kbSetNames, req);
+ req->reqType = xkbi->codes->major_opcode;
+ req->xkbReqType = X_kbSetNames;
+ req->deviceSpec = xkb->device_spec;
+ req->firstType = firstType;
+ req->nTypes = nTypes;
+ req->firstKey = changes->first_key;
+ req->nKeys = changes->num_keys;
+
+ if (which&XkbKeycodesNameMask)
+ nAtoms++;
+ if (which&XkbGeometryNameMask)
+ nAtoms++;
+ if (which&XkbSymbolsNameMask)
+ nAtoms++;
+ if (which&XkbPhysSymbolsNameMask)
+ nAtoms++;
+ if (which&XkbTypesNameMask)
+ nAtoms++;
+ if (which&XkbCompatNameMask)
+ nAtoms++;
+ if (which&XkbKeyTypeNamesMask)
+ nAtoms+= nTypes;
+ if (which&XkbKTLevelNamesMask) {
+ req->firstKTLevel= firstLvlType;
+ req->nKTLevels= nLvlTypes;
+ req->length+= XkbPaddedSize(nLvlTypes)/4; /* room for group widths */
+ nAtoms+= nLvlNames;
+ }
+ else req->firstKTLevel= req->nKTLevels= 0;
+
+ if (which&XkbIndicatorNamesMask) {
+ leds= req->indicators= (CARD32)changes->changed_indicators;
+ nLEDs= _XkbCountBits(XkbNumIndicators,changes->changed_indicators);
+ if (nLEDs>0)
+ nAtoms+= nLEDs;
+ else which&= ~XkbIndicatorNamesMask;
+ }
+ else req->indicators= 0;
+
+ if (which&XkbVirtualModNamesMask) {
+ vmods= req->virtualMods= changes->changed_vmods;
+ nVMods= _XkbCountBits(XkbNumVirtualMods,
+ (unsigned long)changes->changed_vmods);
+ if (nVMods>0)
+ nAtoms+= nVMods;
+ else which&= ~XkbVirtualModNamesMask;
+ }
+ else req->virtualMods= 0;
+
+ if (which&XkbGroupNamesMask) {
+ groups= req->groupNames= changes->changed_groups;
+ nGroups= _XkbCountBits(XkbNumKbdGroups,
+ (unsigned long)changes->changed_groups);
+ if (nGroups>0)
+ nAtoms+= nGroups;
+ else which&= ~XkbGroupNamesMask;
+ }
+ else req->groupNames= 0;
+
+ if ((which&XkbKeyNamesMask)&&(names->keys!=NULL)) {
+ firstKey= req->firstKey;
+ nKeys= req->nKeys;
+ nAtoms+= nKeys; /* technically not atoms, but 4 bytes wide */
+ }
+ else which&= ~XkbKeyNamesMask;
+
+ if (which&XkbKeyAliasesMask) {
+ nKA= ((names->key_aliases!=NULL)?names->num_key_aliases:0);
+ if (nKA>0)
+ nAtoms+= nKA*2; /* not atoms, but 8 bytes on the wire */
+ else which&= ~XkbKeyAliasesMask;
+ }
+
+ if (which&XkbRGNamesMask) {
+ nRG= names->num_rg;
+ if (nRG>0)
+ nAtoms+= nRG;
+ else which&= ~XkbRGNamesMask;
+ }
+
+ req->which= which;
+ req->nRadioGroups= nRG;
+ req->length+= (nAtoms*4)/4;
+
+ if (which&XkbKeycodesNameMask)
+ Data32(dpy,(long *)&names->keycodes,4);
+ if (which&XkbGeometryNameMask)
+ Data32(dpy,(long *)&names->geometry,4);
+ if (which&XkbSymbolsNameMask)
+ Data32(dpy,(long *)&names->symbols,4);
+ if (which&XkbPhysSymbolsNameMask)
+ Data32(dpy,(long *)&names->phys_symbols,4);
+ if (which&XkbTypesNameMask)
+ Data32(dpy,(long *)&names->types,4);
+ if (which&XkbCompatNameMask)
+ Data32(dpy,(long *)&names->compat,4);
+ if (which&XkbKeyTypeNamesMask) {
+ register int i;
+ register XkbKeyTypePtr type;
+ type= &xkb->map->types[firstType];
+ for (i=0;i<nTypes;i++,type++) {
+ Data32(dpy,(long *)&type->name,4);
+ }
+ }
+ if (which&XkbKTLevelNamesMask) {
+ XkbKeyTypePtr type;
+ int i;
+ char *tmp;
+
+ BufAlloc(char *,tmp,XkbPaddedSize(nLvlTypes));
+ type = &xkb->map->types[firstLvlType];
+ for (i=0;i<nLvlTypes;i++,type++) {
+ *tmp++ = type->num_levels;
+ }
+ type = &xkb->map->types[firstLvlType];
+ for (i=0;i<nLvlTypes;i++,type++) {
+ if (type->level_names!=NULL)
+ Data32(dpy,(long *)type->level_names,type->num_levels*4);
+ }
+ }
+ if (which&XkbIndicatorNamesMask)
+ _XkbCopyAtoms(dpy,names->indicators,leds,XkbNumIndicators);
+ if (which&XkbVirtualModNamesMask)
+ _XkbCopyAtoms(dpy,names->vmods,vmods,XkbNumVirtualMods);
+ if (which&XkbGroupNamesMask)
+ _XkbCopyAtoms(dpy,names->groups,groups,XkbNumKbdGroups);
+ if (which&XkbKeyNamesMask) {
+#ifdef WORD64
+ char *tmp;
+ register int i;
+ BufAlloc(char *,tmp,nKeys*4);
+ for (i=0;i<nKeys;i++,tmp+= 4) {
+ tmp[0]= names->keys[firstKey+i].name[0];
+ tmp[1]= names->keys[firstKey+i].name[1];
+ tmp[2]= names->keys[firstKey+i].name[2];
+ tmp[3]= names->keys[firstKey+i].name[3];
+ }
+#else
+ Data(dpy,(char *)&names->keys[firstKey],nKeys*XkbKeyNameLength);
+#endif
+ }
+ if (which&XkbKeyAliasesMask) {
+#ifdef WORD64
+ char *tmp;
+ register int i;
+ BufAlloc(char *,tmp,nKA*XkbKeyNameLength*2);
+ for (i=0;i<nKeys;i++,tmp+= 2*XkbKeyNameLength) {
+ tmp[0]= names->key_aliases[i].real[0];
+ tmp[1]= names->key_aliases[i].real[1];
+ tmp[2]= names->key_aliases[i].real[2];
+ tmp[3]= names->key_aliases[i].real[3];
+ tmp[4]= names->key_aliases[i].alias[0];
+ tmp[5]= names->key_aliases[i].alias[1];
+ tmp[6]= names->key_aliases[i].alias[2];
+ tmp[7]= names->key_aliases[i].alias[3];
+ }
+#else
+ Data(dpy,(char *)names->key_aliases,nKA*XkbKeyNameLength*2);
+#endif
+ }
+ if (which&XkbRGNamesMask) {
+ Data32(dpy,(long *)names->radio_groups,nRG*4);
+ }
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return True;
+}
+
+void
+XkbNoteNameChanges( XkbNameChangesPtr old,
+ XkbNamesNotifyEvent * new,
+ unsigned int wanted)
+{
+int first,last,old_last,new_last;
+
+ wanted&= new->changed;
+ if ((old==NULL)||(new==NULL)||(wanted==0))
+ return;
+ if (wanted&XkbKeyTypeNamesMask) {
+ if (old->changed&XkbKeyTypeNamesMask) {
+ new_last= (new->first_type+new->num_types-1);
+ old_last= (old->first_type+old->num_types-1);
+
+ if (new->first_type<old->first_type)
+ first= new->first_type;
+ else first= old->first_type;
+
+ if (old_last>new_last)
+ last= old_last;
+ else last= new_last;
+
+ old->first_type= first;
+ old->num_types= (last-first)+1;
+ }
+ else {
+ old->first_type= new->first_type;
+ old->num_types= new->num_types;
+ }
+ }
+ if (wanted&XkbKTLevelNamesMask) {
+ if (old->changed&XkbKTLevelNamesMask) {
+ new_last= (new->first_lvl+new->num_lvls-1);
+ old_last= (old->first_lvl+old->num_lvls-1);
+
+ if (new->first_lvl<old->first_lvl)
+ first= new->first_lvl;
+ else first= old->first_lvl;
+
+ if (old_last>new_last)
+ last= old_last;
+ else last= new_last;
+
+ old->first_lvl= first;
+ old->num_lvls= (last-first)+1;
+ }
+ else {
+ old->first_lvl= new->first_lvl;
+ old->num_lvls= new->num_lvls;
+ }
+ }
+ if (wanted&XkbIndicatorNamesMask) {
+ if (old->changed&XkbIndicatorNamesMask)
+ old->changed_indicators|= new->changed_indicators;
+ else old->changed_indicators= new->changed_indicators;
+ }
+ if (wanted&XkbKeyNamesMask) {
+ if (old->changed&XkbKeyNamesMask) {
+ new_last= (new->first_key+new->num_keys-1);
+ old_last= (old->first_key+old->num_keys-1);
+
+ first= old->first_key;
+
+ if (new->first_key<old->first_key)
+ first= new->first_key;
+ if (old_last>new_last)
+ new_last= old_last;
+
+ old->first_key= first;
+ old->num_keys= (new_last-first)+1;
+ }
+ else {
+ old->first_key= new->first_key;
+ old->num_keys= new->num_keys;
+ }
+ }
+ if (wanted&XkbVirtualModNamesMask) {
+ if (old->changed&XkbVirtualModNamesMask)
+ old->changed_vmods|= new->changed_vmods;
+ else old->changed_vmods= new->changed_vmods;
+ }
+ if (wanted&XkbGroupNamesMask) {
+ if (old->changed&XkbGroupNamesMask)
+ old->changed_groups|= new->changed_groups;
+ else old->changed_groups= new->changed_groups;
+ }
+ if (wanted&XkbRGNamesMask)
+ old->num_rg= new->num_radio_groups;
+ if (wanted&XkbKeyAliasesMask)
+ old->num_aliases= new->num_aliases;
+ old->changed|= wanted;
+ return;
+}
diff --git a/libX11/src/xkb/XKBRdBuf.c b/libX11/src/xkb/XKBRdBuf.c
index fa7fa3af8..3023a32ed 100644
--- a/libX11/src/xkb/XKBRdBuf.c
+++ b/libX11/src/xkb/XKBRdBuf.c
@@ -1,230 +1,230 @@
-/************************************************************
-Copyright (c) 1993 by Silicon Graphics Computer Systems, Inc.
-
-Permission to use, copy, modify, and distribute this
-software and its documentation for any purpose and without
-fee is hereby granted, provided that the above copyright
-notice appear in all copies and that both that copyright
-notice and this permission notice appear in supporting
-documentation, and that the name of Silicon Graphics not be
-used in advertising or publicity pertaining to distribution
-of the software without specific prior written permission.
-Silicon Graphics makes no representation about the suitability
-of this software for any purpose. It is provided "as is"
-without any express or implied warranty.
-
-SILICON GRAPHICS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS
-SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
-AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON
-GRAPHICS BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL
-DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
-DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
-OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH
-THE USE OR PERFORMANCE OF THIS SOFTWARE.
-
-********************************************************/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include <stdio.h>
-#include "Xlibint.h"
-#include "XKBlibint.h"
-#include <X11/extensions/XKBproto.h>
-
-/***====================================================================***/
-
-int
-_XkbInitReadBuffer(Display *dpy,XkbReadBufferPtr buf,int size)
-{
- if ((dpy!=NULL) && (buf!=NULL) && (size>0)) {
- buf->error= 0;
- buf->size= size;
- buf->start= buf->data= _XkbAlloc(size);
- if (buf->start) {
- _XRead(dpy, buf->start, size);
- return 1;
- }
- }
- return 0;
-}
-
-#define _XkbReadBufferDataLeft(b) (((b)->size)-((b)->data-(b)->start))
-
-int
-_XkbSkipReadBufferData(XkbReadBufferPtr from,int size)
-{
- if (size==0)
- return 1;
- if ((from==NULL)||(from->error)||(size<1)||
- (_XkbReadBufferDataLeft(from)<size))
- return 0;
- from->data+= size;
- return 1;
-}
-
-int
-_XkbCopyFromReadBuffer(XkbReadBufferPtr from,char *to,int size)
-{
- if (size==0)
- return 1;
- if ((from==NULL)||(from->error)||(to==NULL)||(size<1)||
- (_XkbReadBufferDataLeft(from)<size))
- return 0;
- memcpy(to,from->data,size);
- from->data+= size;
- return 1;
-}
-
-#ifdef XKB_FORCE_INT_KEYSYM
-int
-_XkbReadCopyKeySyms(int *wire,KeySym *to,int num_words)
-{
- while (num_words-->0) {
- *to++= *wire++;
- }
- return 1;
-}
-
-int
-_XkbReadBufferCopyKeySyms(XkbReadBufferPtr from,KeySym *to,int num_words)
-{
- if ((unsigned)(num_words*4)>_XkbReadBufferDataLeft(from))
- return 0;
- _XkbReadCopyKeySyms((int *)from->data,to,num_words);
- from->data+= (4*num_words);
- return True;
-}
-
-int
-_XkbWriteCopyKeySyms (register KeySym *from,CARD32 *to,int len)
-{
-
- while (len-->0) {
- *to++= (CARD32)*from++;
- }
- return True;
-}
-#endif
-
-#ifdef LONG64
-int
-_XkbReadCopyData32(int *wire,long *to,int num_words)
-{
- while (num_words-->0) {
- *to++= *wire++;
- }
- return 1;
-}
-#endif
-#ifdef WORD64
-int
-_XkbReadCopyData32(int *from,long *lp,int num_words)
-{
-long *lpack;
-long mask32 = 0x00000000ffffffff;
-long maskw, i, bits;
-
- lpack = (long *)from;
- bits = 32;
-
- for (i=0;i<num_words;i++) {
- maskw = mask32 << bits;
- *lp++ = (*lpack & maskw) >> bits;
- bits = bits ^ 32;
- if (bits)
- lpack++;
- }
- return 1;
-}
-#endif
-
-#if defined(LONG64) || defined(WORD64)
-int
-_XkbReadBufferCopy32(XkbReadBufferPtr from,long *to,int num_words)
-{
- if ((unsigned)(num_words*4)>_XkbReadBufferDataLeft(from))
- return 0;
- _XkbReadCopyData32((int *)from->data,to,num_words);
- from->data+= (4*num_words);
- return True;
-}
-#endif
-
-#ifdef LONG64
-int
-_XkbWriteCopyData32 (register unsigned long *from,CARD32 *to,int len)
-{
-
- while (len-->0) {
- *to++= (CARD32)*from++;
- }
- return True;
-}
-#endif /* LONG64 */
-
-#ifdef WORD64
-_XkbWriteCopyData32 Not Implemented Yet for sizeof(int)==8
-#endif
-
-char *
-_XkbPeekAtReadBuffer(XkbReadBufferPtr from,int size)
-{
- if ((from==NULL)||(from->error)||(size<1)||
- (_XkbReadBufferDataLeft(from)<size))
- return NULL;
- return from->data;
-}
-
-char *
-_XkbGetReadBufferPtr(XkbReadBufferPtr from,int size)
-{
-char *ptr;
- if ((from==NULL)||(from->error)||(size<1)||
- (_XkbReadBufferDataLeft(from)<size))
- return NULL;
- ptr= from->data;
- from->data+= size;
- return ptr;
-}
-
-
-int
-_XkbFreeReadBuffer(XkbReadBufferPtr buf)
-{
- if ((buf!=NULL) && (buf->start!=NULL)) {
- int left;
- left= (int)_XkbReadBufferDataLeft(buf);
- if (buf->start!=NULL)
- Xfree(buf->start);
- buf->size= 0;
- buf->start= buf->data= NULL;
- return left;
- }
- return 0;
-}
-
-Bool
-_XkbGetReadBufferCountedString(XkbReadBufferPtr buf,char **rtrn)
-{
-CARD16 len,*pLen;
-int left;
-char * str = NULL;
-
- if ((buf==NULL)||(buf->error)||((left=(int)_XkbReadBufferDataLeft(buf))<4))
- return False;
- pLen= (CARD16 *)buf->data;
- len= *pLen;
- if (len>0) {
- if (XkbPaddedSize(len+2)>left)
- return False;
- str= _XkbAlloc(len+1);
- if (str) {
- memcpy(str,&buf->data[2],len);
- str[len]= '\0';
- }
- }
- buf->data+= XkbPaddedSize(len+2);
- *rtrn= str;
- return True;
-}
+/************************************************************
+Copyright (c) 1993 by Silicon Graphics Computer Systems, Inc.
+
+Permission to use, copy, modify, and distribute this
+software and its documentation for any purpose and without
+fee is hereby granted, provided that the above copyright
+notice appear in all copies and that both that copyright
+notice and this permission notice appear in supporting
+documentation, and that the name of Silicon Graphics not be
+used in advertising or publicity pertaining to distribution
+of the software without specific prior written permission.
+Silicon Graphics makes no representation about the suitability
+of this software for any purpose. It is provided "as is"
+without any express or implied warranty.
+
+SILICON GRAPHICS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS
+SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
+AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON
+GRAPHICS BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL
+DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
+DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
+OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH
+THE USE OR PERFORMANCE OF THIS SOFTWARE.
+
+********************************************************/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include <stdio.h>
+#include "Xlibint.h"
+#include "XKBlibint.h"
+#include <X11/extensions/XKBproto.h>
+
+/***====================================================================***/
+
+int
+_XkbInitReadBuffer(Display *dpy,XkbReadBufferPtr buf,int size)
+{
+ if ((dpy!=NULL) && (buf!=NULL) && (size>0)) {
+ buf->error= 0;
+ buf->size= size;
+ buf->start= buf->data= _XkbAlloc(size);
+ if (buf->start) {
+ _XRead(dpy, buf->start, size);
+ return 1;
+ }
+ }
+ return 0;
+}
+
+#define _XkbReadBufferDataLeft(b) (((b)->size)-((b)->data-(b)->start))
+
+int
+_XkbSkipReadBufferData(XkbReadBufferPtr from,int size)
+{
+ if (size==0)
+ return 1;
+ if ((from==NULL)||(from->error)||(size<1)||
+ (_XkbReadBufferDataLeft(from)<size))
+ return 0;
+ from->data+= size;
+ return 1;
+}
+
+int
+_XkbCopyFromReadBuffer(XkbReadBufferPtr from,char *to,int size)
+{
+ if (size==0)
+ return 1;
+ if ((from==NULL)||(from->error)||(to==NULL)||(size<1)||
+ (_XkbReadBufferDataLeft(from)<size))
+ return 0;
+ memcpy(to,from->data,size);
+ from->data+= size;
+ return 1;
+}
+
+#ifdef XKB_FORCE_INT_KEYSYM
+int
+_XkbReadCopyKeySyms(int *wire,KeySym *to,int num_words)
+{
+ while (num_words-->0) {
+ *to++= *wire++;
+ }
+ return 1;
+}
+
+int
+_XkbReadBufferCopyKeySyms(XkbReadBufferPtr from,KeySym *to,int num_words)
+{
+ if ((unsigned)(num_words*4)>_XkbReadBufferDataLeft(from))
+ return 0;
+ _XkbReadCopyKeySyms((int *)from->data,to,num_words);
+ from->data+= (4*num_words);
+ return True;
+}
+
+int
+_XkbWriteCopyKeySyms (register KeySym *from,CARD32 *to,int len)
+{
+
+ while (len-->0) {
+ *to++= (CARD32)*from++;
+ }
+ return True;
+}
+#endif
+
+#ifdef LONG64
+int
+_XkbReadCopyData32(int *wire,long *to,int num_words)
+{
+ while (num_words-->0) {
+ *to++= *wire++;
+ }
+ return 1;
+}
+#endif
+#ifdef WORD64
+int
+_XkbReadCopyData32(int *from,long *lp,int num_words)
+{
+long *lpack;
+long mask32 = 0x00000000ffffffff;
+long maskw, i, bits;
+
+ lpack = (long *)from;
+ bits = 32;
+
+ for (i=0;i<num_words;i++) {
+ maskw = mask32 << bits;
+ *lp++ = (*lpack & maskw) >> bits;
+ bits = bits ^ 32;
+ if (bits)
+ lpack++;
+ }
+ return 1;
+}
+#endif
+
+#if defined(LONG64) || defined(WORD64)
+int
+_XkbReadBufferCopy32(XkbReadBufferPtr from,long *to,int num_words)
+{
+ if ((unsigned)(num_words*4)>_XkbReadBufferDataLeft(from))
+ return 0;
+ _XkbReadCopyData32((int *)from->data,to,num_words);
+ from->data+= (4*num_words);
+ return True;
+}
+#endif
+
+#ifdef LONG64
+int
+_XkbWriteCopyData32 (register unsigned long *from,CARD32 *to,int len)
+{
+
+ while (len-->0) {
+ *to++= (CARD32)*from++;
+ }
+ return True;
+}
+#endif /* LONG64 */
+
+#ifdef WORD64
+_XkbWriteCopyData32 Not Implemented Yet for sizeof(int)==8
+#endif
+
+char *
+_XkbPeekAtReadBuffer(XkbReadBufferPtr from,int size)
+{
+ if ((from==NULL)||(from->error)||(size<1)||
+ (_XkbReadBufferDataLeft(from)<size))
+ return NULL;
+ return from->data;
+}
+
+char *
+_XkbGetReadBufferPtr(XkbReadBufferPtr from,int size)
+{
+char *ptr;
+ if ((from==NULL)||(from->error)||(size<1)||
+ (_XkbReadBufferDataLeft(from)<size))
+ return NULL;
+ ptr= from->data;
+ from->data+= size;
+ return ptr;
+}
+
+
+int
+_XkbFreeReadBuffer(XkbReadBufferPtr buf)
+{
+ if ((buf!=NULL) && (buf->start!=NULL)) {
+ int left;
+ left= (int)_XkbReadBufferDataLeft(buf);
+ if (buf->start!=NULL)
+ Xfree(buf->start);
+ buf->size= 0;
+ buf->start= buf->data= NULL;
+ return left;
+ }
+ return 0;
+}
+
+Bool
+_XkbGetReadBufferCountedString(XkbReadBufferPtr buf,char **rtrn)
+{
+CARD16 len,*pLen;
+int left;
+char * str = NULL;
+
+ if ((buf==NULL)||(buf->error)||((left=(int)_XkbReadBufferDataLeft(buf))<4))
+ return False;
+ pLen= (CARD16 *)buf->data;
+ len= *pLen;
+ if (len>0) {
+ if (XkbPaddedSize(len+2)>left)
+ return False;
+ str= _XkbAlloc(len+1);
+ if (str) {
+ memcpy(str,&buf->data[2],len);
+ str[len]= '\0';
+ }
+ }
+ buf->data+= XkbPaddedSize(len+2);
+ *rtrn= str;
+ return True;
+}
diff --git a/libX11/src/xkb/XKBSetGeom.c b/libX11/src/xkb/XKBSetGeom.c
index 5b9f5887c..1854fd8bf 100644
--- a/libX11/src/xkb/XKBSetGeom.c
+++ b/libX11/src/xkb/XKBSetGeom.c
@@ -1,462 +1,462 @@
-/************************************************************
-Copyright (c) 1993 by Silicon Graphics Computer Systems, Inc.
-
-Permission to use, copy, modify, and distribute this
-software and its documentation for any purpose and without
-fee is hereby granted, provided that the above copyright
-notice appear in all copies and that both that copyright
-notice and this permission notice appear in supporting
-documentation, and that the name of Silicon Graphics not be
-used in advertising or publicity pertaining to distribution
-of the software without specific prior written permission.
-Silicon Graphics makes no representation about the suitability
-of this software for any purpose. It is provided "as is"
-without any express or implied warranty.
-
-SILICON GRAPHICS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS
-SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
-AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON
-GRAPHICS BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL
-DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
-DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
-OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH
-THE USE OR PERFORMANCE OF THIS SOFTWARE.
-
-********************************************************/
-
-#ifdef DEBUG
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include <stdio.h>
-#endif
-
-#include "Xlibint.h"
-#include "XKBlibint.h"
-#include <X11/extensions/XKBgeom.h>
-#include <X11/extensions/XKBproto.h>
-
-#define MINSHORT -32768
-#define MAXSHORT 32767
-
-/***====================================================================***/
-
-#define _SizeCountedString(s) ((s)?XkbPaddedSize(2+strlen(s)):4)
-
-static char *
-_WriteCountedString(char *wire,char *str)
-{
-CARD16 len,*pLen;
-
- len= (str?strlen(str):0);
- pLen= (CARD16 *)wire;
- *pLen= len;
- if (len && str)
- memcpy(&wire[2],str,len);
- wire+= XkbPaddedSize(len+2);
- return wire;
-}
-
-static int
-_SizeGeomProperties(XkbGeometryPtr geom)
-{
-register int i,size;
-XkbPropertyPtr prop;
-
- for (size=i=0,prop=geom->properties;i<geom->num_properties;i++,prop++) {
- size+= _SizeCountedString(prop->name);
- size+= _SizeCountedString(prop->value);
- }
- return size;
-}
-
-static int
-_SizeGeomColors(XkbGeometryPtr geom)
-{
-register int i,size;
-register XkbColorPtr color;
-
- for (i=size=0,color=geom->colors;i<geom->num_colors;i++,color++) {
- size+= _SizeCountedString(color->spec);
- }
- return size;
-}
-
-static int
-_SizeGeomShapes(XkbGeometryPtr geom)
-{
-register int i,size;
-register XkbShapePtr shape;
-
- for (i=size=0,shape=geom->shapes;i<geom->num_shapes;i++,shape++) {
- register int n;
- register XkbOutlinePtr ol;
- size+= SIZEOF(xkbShapeWireDesc);
- for (n=0,ol=shape->outlines;n<shape->num_outlines;n++,ol++) {
- size+= SIZEOF(xkbOutlineWireDesc);
- size+= ol->num_points*SIZEOF(xkbPointWireDesc);
- }
- }
- return size;
-}
-
-static int
-_SizeGeomDoodads(int num_doodads,XkbDoodadPtr doodad)
-{
-register int i,size;
-
- for (i=size=0;i<num_doodads;i++,doodad++) {
- size+= SIZEOF(xkbAnyDoodadWireDesc);
- if (doodad->any.type==XkbTextDoodad) {
- size+= _SizeCountedString(doodad->text.text);
- size+= _SizeCountedString(doodad->text.font);
- }
- else if (doodad->any.type==XkbLogoDoodad) {
- size+= _SizeCountedString(doodad->logo.logo_name);
- }
- }
- return size;
-}
-
-static int
-_SizeGeomSections(XkbGeometryPtr geom)
-{
-register int i,size;
-XkbSectionPtr section;
-
- for (i=size=0,section=geom->sections;i<geom->num_sections;i++,section++) {
- size+= SIZEOF(xkbSectionWireDesc);
- if (section->rows) {
- int r;
- XkbRowPtr row;
- for (r=0,row=section->rows;r<section->num_rows;row++,r++) {
- size+= SIZEOF(xkbRowWireDesc);
- size+= row->num_keys*SIZEOF(xkbKeyWireDesc);
- }
- }
- if (section->doodads)
- size+= _SizeGeomDoodads(section->num_doodads,section->doodads);
- if (section->overlays) {
- int o;
- XkbOverlayPtr ol;
- for (o=0,ol=section->overlays;o<section->num_overlays;o++,ol++) {
- int r;
- XkbOverlayRowPtr row;
- size+= SIZEOF(xkbOverlayWireDesc);
- for (r=0,row=ol->rows;r<ol->num_rows;r++,row++) {
- size+= SIZEOF(xkbOverlayRowWireDesc);
- size+= row->num_keys*SIZEOF(xkbOverlayKeyWireDesc);
- }
- }
- }
- }
- return size;
-}
-
-static int
-_SizeGeomKeyAliases(XkbGeometryPtr geom)
-{
- return geom->num_key_aliases*(2*XkbKeyNameLength);
-}
-
-/***====================================================================***/
-
-static char *
-_WriteGeomProperties(char *wire,XkbGeometryPtr geom)
-{
-register int i;
-register XkbPropertyPtr prop;
-
- for (i=0,prop=geom->properties;i<geom->num_properties;i++,prop++) {
- wire= _WriteCountedString(wire,prop->name);
- wire= _WriteCountedString(wire,prop->value);
- }
- return wire;
-}
-
-static char *
-_WriteGeomColors(char *wire,XkbGeometryPtr geom)
-{
-register int i;
-register XkbColorPtr color;
-
- for (i=0,color=geom->colors;i<geom->num_colors;i++,color++) {
- wire= _WriteCountedString(wire,color->spec);
- }
- return wire;
-}
-
-static char *
-_WriteGeomShapes(char *wire,XkbGeometryPtr geom)
-{
-int i;
-XkbShapePtr shape;
-xkbShapeWireDesc * shapeWire;
-
- for (i=0,shape=geom->shapes;i<geom->num_shapes;i++,shape++) {
- register int o;
- XkbOutlinePtr ol;
- xkbOutlineWireDesc * olWire;
- shapeWire= (xkbShapeWireDesc *)wire;
- shapeWire->name= shape->name;
- shapeWire->nOutlines= shape->num_outlines;
- if (shape->primary!=NULL)
- shapeWire->primaryNdx= XkbOutlineIndex(shape,shape->primary);
- else shapeWire->primaryNdx= XkbNoShape;
- if (shape->approx!=NULL)
- shapeWire->approxNdx= XkbOutlineIndex(shape,shape->approx);
- else shapeWire->approxNdx= XkbNoShape;
- wire= (char *)&shapeWire[1];
- for (o=0,ol=shape->outlines;o<shape->num_outlines;o++,ol++) {
- register int p;
- XkbPointPtr pt;
- xkbPointWireDesc * ptWire;
- olWire= (xkbOutlineWireDesc *)wire;
- olWire->nPoints= ol->num_points;
- olWire->cornerRadius= ol->corner_radius;
- wire= (char *)&olWire[1];
- ptWire= (xkbPointWireDesc *)wire;
- for (p=0,pt=ol->points;p<ol->num_points;p++,pt++) {
- ptWire[p].x= pt->x;
- ptWire[p].y= pt->y;
- }
- wire= (char *)&ptWire[ol->num_points];
- }
- }
- return wire;
-}
-
-static char *
-_WriteGeomDoodads(char *wire,int num_doodads,XkbDoodadPtr doodad)
-{
-register int i;
-xkbDoodadWireDesc * doodadWire;
-
- for (i=0;i<num_doodads;i++,doodad++) {
- doodadWire= (xkbDoodadWireDesc *)wire;
- wire= (char *)&doodadWire[1];
- bzero(doodadWire,SIZEOF(xkbDoodadWireDesc));
- doodadWire->any.name= doodad->any.name;
- doodadWire->any.type= doodad->any.type;
- doodadWire->any.priority= doodad->any.priority;
- doodadWire->any.top= doodad->any.top;
- doodadWire->any.left= doodad->any.left;
- doodadWire->any.angle= doodad->any.angle;
- switch (doodad->any.type) {
- case XkbOutlineDoodad:
- case XkbSolidDoodad:
- doodadWire->shape.colorNdx= doodad->shape.color_ndx;
- doodadWire->shape.shapeNdx= doodad->shape.shape_ndx;
- break;
- case XkbTextDoodad:
- doodadWire->text.width= doodad->text.width;
- doodadWire->text.height= doodad->text.height;
- doodadWire->text.colorNdx= doodad->text.color_ndx;
- wire= _WriteCountedString(wire,doodad->text.text);
- wire= _WriteCountedString(wire,doodad->text.font);
- break;
- case XkbIndicatorDoodad:
- doodadWire->indicator.shapeNdx= doodad->indicator.shape_ndx;
- doodadWire->indicator.onColorNdx=doodad->indicator.on_color_ndx;
- doodadWire->indicator.offColorNdx=
- doodad->indicator.off_color_ndx;
- break;
- case XkbLogoDoodad:
- doodadWire->logo.colorNdx= doodad->logo.color_ndx;
- doodadWire->logo.shapeNdx= doodad->logo.shape_ndx;
- wire= _WriteCountedString(wire,doodad->logo.logo_name);
- break;
- default:
- break;
- }
- }
- return wire;
-}
-
-static char *
-_WriteGeomOverlay(char *wire,XkbOverlayPtr ol)
-{
-register int r;
-XkbOverlayRowPtr row;
-xkbOverlayWireDesc * olWire;
-
- olWire= (xkbOverlayWireDesc *)wire;
- olWire->name= ol->name;
- olWire->nRows= ol->num_rows;
- wire= (char *)&olWire[1];
- for (r=0,row=ol->rows;r<ol->num_rows;r++,row++) {
- unsigned int k;
- XkbOverlayKeyPtr key;
- xkbOverlayRowWireDesc * rowWire;
- rowWire= (xkbOverlayRowWireDesc *)wire;
- rowWire->rowUnder= row->row_under;
- rowWire->nKeys= row->num_keys;
- wire= (char *)&rowWire[1];
- for (k=0,key=row->keys;k<row->num_keys;k++,key++) {
- xkbOverlayKeyWireDesc * keyWire;
- keyWire= (xkbOverlayKeyWireDesc *)wire;
- memcpy(keyWire->over,key->over.name,XkbKeyNameLength);
- memcpy(keyWire->under,key->under.name,XkbKeyNameLength);
- wire= (char *)&keyWire[1];
- }
- }
- return wire;
-}
-
-static char *
-_WriteGeomSections(char *wire,XkbGeometryPtr geom)
-{
-register int i;
-XkbSectionPtr section;
-xkbSectionWireDesc * sectionWire;
-
- for (i=0,section=geom->sections;i<geom->num_sections;i++,section++) {
- sectionWire= (xkbSectionWireDesc *)wire;
- sectionWire->name= section->name;
- sectionWire->top= section->top;
- sectionWire->left= section->left;
- sectionWire->width= section->width;
- sectionWire->height= section->height;
- sectionWire->angle= section->angle;
- sectionWire->priority= section->priority;
- sectionWire->nRows= section->num_rows;
- sectionWire->nDoodads= section->num_doodads;
- sectionWire->nOverlays= section->num_overlays;
- sectionWire->pad= 0;
- wire= (char *)&sectionWire[1];
- if (section->rows) {
- int r;
- XkbRowPtr row;
- xkbRowWireDesc * rowWire;
- for (r=0,row=section->rows;r<section->num_rows;r++,row++) {
- rowWire= (xkbRowWireDesc *)wire;
- rowWire->top= row->top;
- rowWire->left= row->left;
- rowWire->nKeys= row->num_keys;
- rowWire->vertical= row->vertical;
- rowWire->pad= 0;
- wire= (char *)&rowWire[1];
- if (row->keys) {
- int k;
- XkbKeyPtr key;
- xkbKeyWireDesc * keyWire;
- keyWire= (xkbKeyWireDesc *)wire;
- for (k=0,key=row->keys;k<row->num_keys;k++,key++) {
- memcpy(keyWire[k].name,key->name.name,XkbKeyNameLength);
- keyWire[k].gap= key->gap;
- keyWire[k].shapeNdx= key->shape_ndx;
- keyWire[k].colorNdx= key->color_ndx;
- }
- wire= (char *)&keyWire[row->num_keys];
- }
- }
- }
- if (section->doodads) {
- wire= _WriteGeomDoodads(wire,
- section->num_doodads,section->doodads);
- }
- if (section->overlays) {
- register int o;
- for (o=0;o<section->num_overlays;o++) {
- wire= _WriteGeomOverlay(wire,&section->overlays[o]);
- }
- }
- }
- return wire;
-}
-
-static char *
-_WriteGeomKeyAliases(char *wire,XkbGeometryPtr geom)
-{
-register int sz;
-
- sz= geom->num_key_aliases*(XkbKeyNameLength*2);
- if (sz>0) {
- memcpy(wire,(char *)geom->key_aliases,sz);
- wire+= sz;
- }
- return wire;
-}
-
-/***====================================================================***/
-
-static Status
-_SendSetGeometry(Display *dpy,XkbGeometryPtr geom,xkbSetGeometryReq *req)
-{
-int sz;
-char * wire,*tbuf;
-
- sz= 0;
- sz+= _SizeCountedString(geom->label_font);
- sz+= _SizeGeomProperties(geom);
- sz+= _SizeGeomColors(geom);
- sz+= _SizeGeomShapes(geom);
- sz+= _SizeGeomSections(geom);
- sz+= _SizeGeomDoodads(geom->num_doodads,geom->doodads);
- sz+= _SizeGeomKeyAliases(geom);
- req->length+= (sz/4);
- if (sz < (dpy->bufmax - dpy->buffer)) {
- BufAlloc(char *,wire,sz);
- tbuf= NULL;
- }
- else {
- tbuf= _XAllocTemp(dpy,sz);
- if (!tbuf)
- return BadAlloc;
- wire= tbuf;
- }
- wire= _WriteCountedString(wire,geom->label_font);
- if (geom->num_properties>0)
- wire= _WriteGeomProperties(wire,geom);
- if (geom->num_colors>0)
- wire= _WriteGeomColors(wire,geom);
- if (geom->num_shapes>0)
- wire= _WriteGeomShapes(wire,geom);
- if (geom->num_sections>0)
- wire= _WriteGeomSections(wire,geom);
- if (geom->num_doodads>0)
- wire= _WriteGeomDoodads(wire,geom->num_doodads,geom->doodads);
- if (geom->num_key_aliases>0)
- wire= _WriteGeomKeyAliases(wire,geom);
- if (tbuf!=NULL) {
- Data(dpy,tbuf,sz);
- _XFreeTemp(dpy,tbuf,sz);
- }
- return Success;
-}
-
-/***====================================================================***/
-
-Status
-XkbSetGeometry(Display *dpy,unsigned deviceSpec,XkbGeometryPtr geom)
-{
-xkbSetGeometryReq *req;
-Status ret;
-
- if ( (!geom) || (dpy->flags & XlibDisplayNoXkb) ||
- (!dpy->xkb_info && !XkbUseExtension(dpy,NULL,NULL)))
- return BadAccess;
-
- LockDisplay(dpy);
- GetReq(kbSetGeometry, req);
- req->reqType = dpy->xkb_info->codes->major_opcode;
- req->xkbReqType = X_kbSetGeometry;
- req->deviceSpec = deviceSpec;
- req->nShapes= geom->num_shapes;
- req->nSections= geom->num_sections;
- req->name= geom->name;
- req->widthMM= geom->width_mm;
- req->heightMM= geom->height_mm;
- req->nProperties= geom->num_properties;
- req->nColors= geom->num_colors;
- req->nDoodads= geom->num_doodads;
- req->nKeyAliases= geom->num_key_aliases;
- req->baseColorNdx= (geom->base_color-geom->colors);
- req->labelColorNdx= (geom->label_color-geom->colors);
-
- ret = _SendSetGeometry(dpy,geom,req);
- UnlockDisplay(dpy);
- SyncHandle();
- return ret;
-}
-
+/************************************************************
+Copyright (c) 1993 by Silicon Graphics Computer Systems, Inc.
+
+Permission to use, copy, modify, and distribute this
+software and its documentation for any purpose and without
+fee is hereby granted, provided that the above copyright
+notice appear in all copies and that both that copyright
+notice and this permission notice appear in supporting
+documentation, and that the name of Silicon Graphics not be
+used in advertising or publicity pertaining to distribution
+of the software without specific prior written permission.
+Silicon Graphics makes no representation about the suitability
+of this software for any purpose. It is provided "as is"
+without any express or implied warranty.
+
+SILICON GRAPHICS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS
+SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
+AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON
+GRAPHICS BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL
+DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
+DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
+OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH
+THE USE OR PERFORMANCE OF THIS SOFTWARE.
+
+********************************************************/
+
+#ifdef DEBUG
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include <stdio.h>
+#endif
+
+#include "Xlibint.h"
+#include "XKBlibint.h"
+#include <X11/extensions/XKBgeom.h>
+#include <X11/extensions/XKBproto.h>
+
+#define MINSHORT -32768
+#define MAXSHORT 32767
+
+/***====================================================================***/
+
+#define _SizeCountedString(s) ((s)?XkbPaddedSize(2+strlen(s)):4)
+
+static char *
+_WriteCountedString(char *wire,char *str)
+{
+CARD16 len,*pLen;
+
+ len= (str?strlen(str):0);
+ pLen= (CARD16 *)wire;
+ *pLen= len;
+ if (len && str)
+ memcpy(&wire[2],str,len);
+ wire+= XkbPaddedSize(len+2);
+ return wire;
+}
+
+static int
+_SizeGeomProperties(XkbGeometryPtr geom)
+{
+register int i,size;
+XkbPropertyPtr prop;
+
+ for (size=i=0,prop=geom->properties;i<geom->num_properties;i++,prop++) {
+ size+= _SizeCountedString(prop->name);
+ size+= _SizeCountedString(prop->value);
+ }
+ return size;
+}
+
+static int
+_SizeGeomColors(XkbGeometryPtr geom)
+{
+register int i,size;
+register XkbColorPtr color;
+
+ for (i=size=0,color=geom->colors;i<geom->num_colors;i++,color++) {
+ size+= _SizeCountedString(color->spec);
+ }
+ return size;
+}
+
+static int
+_SizeGeomShapes(XkbGeometryPtr geom)
+{
+register int i,size;
+register XkbShapePtr shape;
+
+ for (i=size=0,shape=geom->shapes;i<geom->num_shapes;i++,shape++) {
+ register int n;
+ register XkbOutlinePtr ol;
+ size+= SIZEOF(xkbShapeWireDesc);
+ for (n=0,ol=shape->outlines;n<shape->num_outlines;n++,ol++) {
+ size+= SIZEOF(xkbOutlineWireDesc);
+ size+= ol->num_points*SIZEOF(xkbPointWireDesc);
+ }
+ }
+ return size;
+}
+
+static int
+_SizeGeomDoodads(int num_doodads,XkbDoodadPtr doodad)
+{
+register int i,size;
+
+ for (i=size=0;i<num_doodads;i++,doodad++) {
+ size+= SIZEOF(xkbAnyDoodadWireDesc);
+ if (doodad->any.type==XkbTextDoodad) {
+ size+= _SizeCountedString(doodad->text.text);
+ size+= _SizeCountedString(doodad->text.font);
+ }
+ else if (doodad->any.type==XkbLogoDoodad) {
+ size+= _SizeCountedString(doodad->logo.logo_name);
+ }
+ }
+ return size;
+}
+
+static int
+_SizeGeomSections(XkbGeometryPtr geom)
+{
+register int i,size;
+XkbSectionPtr section;
+
+ for (i=size=0,section=geom->sections;i<geom->num_sections;i++,section++) {
+ size+= SIZEOF(xkbSectionWireDesc);
+ if (section->rows) {
+ int r;
+ XkbRowPtr row;
+ for (r=0,row=section->rows;r<section->num_rows;row++,r++) {
+ size+= SIZEOF(xkbRowWireDesc);
+ size+= row->num_keys*SIZEOF(xkbKeyWireDesc);
+ }
+ }
+ if (section->doodads)
+ size+= _SizeGeomDoodads(section->num_doodads,section->doodads);
+ if (section->overlays) {
+ int o;
+ XkbOverlayPtr ol;
+ for (o=0,ol=section->overlays;o<section->num_overlays;o++,ol++) {
+ int r;
+ XkbOverlayRowPtr row;
+ size+= SIZEOF(xkbOverlayWireDesc);
+ for (r=0,row=ol->rows;r<ol->num_rows;r++,row++) {
+ size+= SIZEOF(xkbOverlayRowWireDesc);
+ size+= row->num_keys*SIZEOF(xkbOverlayKeyWireDesc);
+ }
+ }
+ }
+ }
+ return size;
+}
+
+static int
+_SizeGeomKeyAliases(XkbGeometryPtr geom)
+{
+ return geom->num_key_aliases*(2*XkbKeyNameLength);
+}
+
+/***====================================================================***/
+
+static char *
+_WriteGeomProperties(char *wire,XkbGeometryPtr geom)
+{
+register int i;
+register XkbPropertyPtr prop;
+
+ for (i=0,prop=geom->properties;i<geom->num_properties;i++,prop++) {
+ wire= _WriteCountedString(wire,prop->name);
+ wire= _WriteCountedString(wire,prop->value);
+ }
+ return wire;
+}
+
+static char *
+_WriteGeomColors(char *wire,XkbGeometryPtr geom)
+{
+register int i;
+register XkbColorPtr color;
+
+ for (i=0,color=geom->colors;i<geom->num_colors;i++,color++) {
+ wire= _WriteCountedString(wire,color->spec);
+ }
+ return wire;
+}
+
+static char *
+_WriteGeomShapes(char *wire,XkbGeometryPtr geom)
+{
+int i;
+XkbShapePtr shape;
+xkbShapeWireDesc * shapeWire;
+
+ for (i=0,shape=geom->shapes;i<geom->num_shapes;i++,shape++) {
+ register int o;
+ XkbOutlinePtr ol;
+ xkbOutlineWireDesc * olWire;
+ shapeWire= (xkbShapeWireDesc *)wire;
+ shapeWire->name= shape->name;
+ shapeWire->nOutlines= shape->num_outlines;
+ if (shape->primary!=NULL)
+ shapeWire->primaryNdx= XkbOutlineIndex(shape,shape->primary);
+ else shapeWire->primaryNdx= XkbNoShape;
+ if (shape->approx!=NULL)
+ shapeWire->approxNdx= XkbOutlineIndex(shape,shape->approx);
+ else shapeWire->approxNdx= XkbNoShape;
+ wire= (char *)&shapeWire[1];
+ for (o=0,ol=shape->outlines;o<shape->num_outlines;o++,ol++) {
+ register int p;
+ XkbPointPtr pt;
+ xkbPointWireDesc * ptWire;
+ olWire= (xkbOutlineWireDesc *)wire;
+ olWire->nPoints= ol->num_points;
+ olWire->cornerRadius= ol->corner_radius;
+ wire= (char *)&olWire[1];
+ ptWire= (xkbPointWireDesc *)wire;
+ for (p=0,pt=ol->points;p<ol->num_points;p++,pt++) {
+ ptWire[p].x= pt->x;
+ ptWire[p].y= pt->y;
+ }
+ wire= (char *)&ptWire[ol->num_points];
+ }
+ }
+ return wire;
+}
+
+static char *
+_WriteGeomDoodads(char *wire,int num_doodads,XkbDoodadPtr doodad)
+{
+register int i;
+xkbDoodadWireDesc * doodadWire;
+
+ for (i=0;i<num_doodads;i++,doodad++) {
+ doodadWire= (xkbDoodadWireDesc *)wire;
+ wire= (char *)&doodadWire[1];
+ bzero(doodadWire,SIZEOF(xkbDoodadWireDesc));
+ doodadWire->any.name= doodad->any.name;
+ doodadWire->any.type= doodad->any.type;
+ doodadWire->any.priority= doodad->any.priority;
+ doodadWire->any.top= doodad->any.top;
+ doodadWire->any.left= doodad->any.left;
+ doodadWire->any.angle= doodad->any.angle;
+ switch (doodad->any.type) {
+ case XkbOutlineDoodad:
+ case XkbSolidDoodad:
+ doodadWire->shape.colorNdx= doodad->shape.color_ndx;
+ doodadWire->shape.shapeNdx= doodad->shape.shape_ndx;
+ break;
+ case XkbTextDoodad:
+ doodadWire->text.width= doodad->text.width;
+ doodadWire->text.height= doodad->text.height;
+ doodadWire->text.colorNdx= doodad->text.color_ndx;
+ wire= _WriteCountedString(wire,doodad->text.text);
+ wire= _WriteCountedString(wire,doodad->text.font);
+ break;
+ case XkbIndicatorDoodad:
+ doodadWire->indicator.shapeNdx= doodad->indicator.shape_ndx;
+ doodadWire->indicator.onColorNdx=doodad->indicator.on_color_ndx;
+ doodadWire->indicator.offColorNdx=
+ doodad->indicator.off_color_ndx;
+ break;
+ case XkbLogoDoodad:
+ doodadWire->logo.colorNdx= doodad->logo.color_ndx;
+ doodadWire->logo.shapeNdx= doodad->logo.shape_ndx;
+ wire= _WriteCountedString(wire,doodad->logo.logo_name);
+ break;
+ default:
+ break;
+ }
+ }
+ return wire;
+}
+
+static char *
+_WriteGeomOverlay(char *wire,XkbOverlayPtr ol)
+{
+register int r;
+XkbOverlayRowPtr row;
+xkbOverlayWireDesc * olWire;
+
+ olWire= (xkbOverlayWireDesc *)wire;
+ olWire->name= ol->name;
+ olWire->nRows= ol->num_rows;
+ wire= (char *)&olWire[1];
+ for (r=0,row=ol->rows;r<ol->num_rows;r++,row++) {
+ unsigned int k;
+ XkbOverlayKeyPtr key;
+ xkbOverlayRowWireDesc * rowWire;
+ rowWire= (xkbOverlayRowWireDesc *)wire;
+ rowWire->rowUnder= row->row_under;
+ rowWire->nKeys= row->num_keys;
+ wire= (char *)&rowWire[1];
+ for (k=0,key=row->keys;k<row->num_keys;k++,key++) {
+ xkbOverlayKeyWireDesc * keyWire;
+ keyWire= (xkbOverlayKeyWireDesc *)wire;
+ memcpy(keyWire->over,key->over.name,XkbKeyNameLength);
+ memcpy(keyWire->under,key->under.name,XkbKeyNameLength);
+ wire= (char *)&keyWire[1];
+ }
+ }
+ return wire;
+}
+
+static char *
+_WriteGeomSections(char *wire,XkbGeometryPtr geom)
+{
+register int i;
+XkbSectionPtr section;
+xkbSectionWireDesc * sectionWire;
+
+ for (i=0,section=geom->sections;i<geom->num_sections;i++,section++) {
+ sectionWire= (xkbSectionWireDesc *)wire;
+ sectionWire->name= section->name;
+ sectionWire->top= section->top;
+ sectionWire->left= section->left;
+ sectionWire->width= section->width;
+ sectionWire->height= section->height;
+ sectionWire->angle= section->angle;
+ sectionWire->priority= section->priority;
+ sectionWire->nRows= section->num_rows;
+ sectionWire->nDoodads= section->num_doodads;
+ sectionWire->nOverlays= section->num_overlays;
+ sectionWire->pad= 0;
+ wire= (char *)&sectionWire[1];
+ if (section->rows) {
+ int r;
+ XkbRowPtr row;
+ xkbRowWireDesc * rowWire;
+ for (r=0,row=section->rows;r<section->num_rows;r++,row++) {
+ rowWire= (xkbRowWireDesc *)wire;
+ rowWire->top= row->top;
+ rowWire->left= row->left;
+ rowWire->nKeys= row->num_keys;
+ rowWire->vertical= row->vertical;
+ rowWire->pad= 0;
+ wire= (char *)&rowWire[1];
+ if (row->keys) {
+ int k;
+ XkbKeyPtr key;
+ xkbKeyWireDesc * keyWire;
+ keyWire= (xkbKeyWireDesc *)wire;
+ for (k=0,key=row->keys;k<row->num_keys;k++,key++) {
+ memcpy(keyWire[k].name,key->name.name,XkbKeyNameLength);
+ keyWire[k].gap= key->gap;
+ keyWire[k].shapeNdx= key->shape_ndx;
+ keyWire[k].colorNdx= key->color_ndx;
+ }
+ wire= (char *)&keyWire[row->num_keys];
+ }
+ }
+ }
+ if (section->doodads) {
+ wire= _WriteGeomDoodads(wire,
+ section->num_doodads,section->doodads);
+ }
+ if (section->overlays) {
+ register int o;
+ for (o=0;o<section->num_overlays;o++) {
+ wire= _WriteGeomOverlay(wire,&section->overlays[o]);
+ }
+ }
+ }
+ return wire;
+}
+
+static char *
+_WriteGeomKeyAliases(char *wire,XkbGeometryPtr geom)
+{
+register int sz;
+
+ sz= geom->num_key_aliases*(XkbKeyNameLength*2);
+ if (sz>0) {
+ memcpy(wire,(char *)geom->key_aliases,sz);
+ wire+= sz;
+ }
+ return wire;
+}
+
+/***====================================================================***/
+
+static Status
+_SendSetGeometry(Display *dpy,XkbGeometryPtr geom,xkbSetGeometryReq *req)
+{
+int sz;
+char * wire,*tbuf;
+
+ sz= 0;
+ sz+= _SizeCountedString(geom->label_font);
+ sz+= _SizeGeomProperties(geom);
+ sz+= _SizeGeomColors(geom);
+ sz+= _SizeGeomShapes(geom);
+ sz+= _SizeGeomSections(geom);
+ sz+= _SizeGeomDoodads(geom->num_doodads,geom->doodads);
+ sz+= _SizeGeomKeyAliases(geom);
+ req->length+= (sz/4);
+ if (sz < (dpy->bufmax - dpy->buffer)) {
+ BufAlloc(char *,wire,sz);
+ tbuf= NULL;
+ }
+ else {
+ tbuf= _XAllocTemp(dpy,sz);
+ if (!tbuf)
+ return BadAlloc;
+ wire= tbuf;
+ }
+ wire= _WriteCountedString(wire,geom->label_font);
+ if (geom->num_properties>0)
+ wire= _WriteGeomProperties(wire,geom);
+ if (geom->num_colors>0)
+ wire= _WriteGeomColors(wire,geom);
+ if (geom->num_shapes>0)
+ wire= _WriteGeomShapes(wire,geom);
+ if (geom->num_sections>0)
+ wire= _WriteGeomSections(wire,geom);
+ if (geom->num_doodads>0)
+ wire= _WriteGeomDoodads(wire,geom->num_doodads,geom->doodads);
+ if (geom->num_key_aliases>0)
+ wire= _WriteGeomKeyAliases(wire,geom);
+ if (tbuf!=NULL) {
+ Data(dpy,tbuf,sz);
+ _XFreeTemp(dpy,tbuf,sz);
+ }
+ return Success;
+}
+
+/***====================================================================***/
+
+Status
+XkbSetGeometry(Display *dpy,unsigned deviceSpec,XkbGeometryPtr geom)
+{
+xkbSetGeometryReq *req;
+Status ret;
+
+ if ( (!geom) || (dpy->flags & XlibDisplayNoXkb) ||
+ (!dpy->xkb_info && !XkbUseExtension(dpy,NULL,NULL)))
+ return BadAccess;
+
+ LockDisplay(dpy);
+ GetReq(kbSetGeometry, req);
+ req->reqType = dpy->xkb_info->codes->major_opcode;
+ req->xkbReqType = X_kbSetGeometry;
+ req->deviceSpec = deviceSpec;
+ req->nShapes= geom->num_shapes;
+ req->nSections= geom->num_sections;
+ req->name= geom->name;
+ req->widthMM= geom->width_mm;
+ req->heightMM= geom->height_mm;
+ req->nProperties= geom->num_properties;
+ req->nColors= geom->num_colors;
+ req->nDoodads= geom->num_doodads;
+ req->nKeyAliases= geom->num_key_aliases;
+ req->baseColorNdx= (geom->base_color-geom->colors);
+ req->labelColorNdx= (geom->label_color-geom->colors);
+
+ ret = _SendSetGeometry(dpy,geom,req);
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return ret;
+}
+
diff --git a/libX11/src/xkb/XKBSetMap.c b/libX11/src/xkb/XKBSetMap.c
index 8adfe5446..cad9364b7 100644
--- a/libX11/src/xkb/XKBSetMap.c
+++ b/libX11/src/xkb/XKBSetMap.c
@@ -1,591 +1,591 @@
-/************************************************************
-Copyright (c) 1993 by Silicon Graphics Computer Systems, Inc.
-
-Permission to use, copy, modify, and distribute this
-software and its documentation for any purpose and without
-fee is hereby granted, provided that the above copyright
-notice appear in all copies and that both that copyright
-notice and this permission notice appear in supporting
-documentation, and that the name of Silicon Graphics not be
-used in advertising or publicity pertaining to distribution
-of the software without specific prior written permission.
-Silicon Graphics makes no representation about the suitability
-of this software for any purpose. It is provided "as is"
-without any express or implied warranty.
-
-SILICON GRAPHICS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS
-SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
-AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON
-GRAPHICS BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL
-DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
-DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
-OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH
-THE USE OR PERFORMANCE OF THIS SOFTWARE.
-
-********************************************************/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include <stdio.h>
-#include "Xlibint.h"
-#include <X11/extensions/XKBproto.h>
-#include "XKBlibint.h"
-
-static int
-_XkbSizeKeyTypes(XkbDescPtr xkb,xkbSetMapReq *req)
-{
- XkbKeyTypePtr map;
- int i,len;
-
- if (((req->present&XkbKeyTypesMask)==0)||(req->nTypes==0)) {
- req->present&= ~XkbKeyTypesMask;
- req->firstType= req->nTypes= 0;
- return 0;
- }
- len= 0;
- map= &xkb->map->types[req->firstType];
- for (i=0;i<req->nTypes;i++,map++){
- len+= SIZEOF(xkbKeyTypeWireDesc);
- len+= map->map_count*SIZEOF(xkbKTSetMapEntryWireDesc);
- if (map->preserve)
- len+= map->map_count*SIZEOF(xkbModsWireDesc);
- }
- return len;
-}
-
-static void
-_XkbWriteKeyTypes(Display *dpy,XkbDescPtr xkb,xkbSetMapReq *req)
-{
- char * buf;
- XkbKeyTypePtr type;
- int i,n,sz;
- xkbKeyTypeWireDesc *desc;
-
- if ((req->present&XkbKeyTypesMask)==0)
- return;
- type= &xkb->map->types[req->firstType];
- for (i=0;i<req->nTypes;i++,type++) {
- sz= SIZEOF(xkbKeyTypeWireDesc);
- sz+= type->map_count*SIZEOF(xkbKTSetMapEntryWireDesc);
- if (type->preserve)
- sz+= type->map_count*SIZEOF(xkbModsWireDesc);
- BufAlloc(xkbKeyTypeWireDesc *,desc,sz);
- desc->mask = type->mods.mask;
- desc->realMods = type->mods.real_mods;
- desc->virtualMods = type->mods.vmods;
- desc->numLevels = type->num_levels;
- desc->nMapEntries = type->map_count;
- desc->preserve = (type->preserve!=NULL);
- buf= (char *)&desc[1];
- if (desc->nMapEntries>0) {
- xkbKTSetMapEntryWireDesc *wire;
- wire= (xkbKTSetMapEntryWireDesc *)buf;
- for (n=0;n<type->map_count;n++,wire++) {
- wire->level= type->map[n].level;
- wire->realMods= type->map[n].mods.real_mods;
- wire->virtualMods= type->map[n].mods.vmods;
- }
- buf= (char *)wire;
- if (type->preserve) {
- xkbModsWireDesc *pwire;
- pwire= (xkbModsWireDesc *)buf;
- for (n=0;n<type->map_count;n++,pwire++) {
- pwire->realMods= type->preserve[n].real_mods;
- pwire->virtualMods= type->preserve[n].vmods;
- }
- }
- }
- }
- return;
-}
-
-static int
-_XkbSizeKeySyms(XkbDescPtr xkb,xkbSetMapReq *req)
-{
- int i,len;
- unsigned nSyms;
-
- if (((req->present&XkbKeySymsMask)==0)||(req->nKeySyms==0)) {
- req->present&= ~XkbKeySymsMask;
- req->firstKeySym= req->nKeySyms= 0;
- req->totalSyms= 0;
- return 0;
- }
- len= (int)(req->nKeySyms*sizeof(XkbSymMapRec));
- for (i=nSyms=0;i<req->nKeySyms;i++) {
- nSyms+= XkbKeyNumSyms(xkb,i+req->firstKeySym);
- }
- len+= nSyms*sizeof(CARD32);
- req->totalSyms= nSyms;
- return len;
-}
-
-static void
-_XkbWriteKeySyms(Display *dpy,XkbDescPtr xkb,xkbSetMapReq *req)
-{
-register KeySym * pSym;
-CARD32 * outSym;
-XkbSymMapPtr symMap;
-xkbSymMapWireDesc *desc;
-register int i;
-
- if ((req->present&XkbKeySymsMask)==0)
- return;
- symMap = &xkb->map->key_sym_map[req->firstKeySym];
- for (i=0;i<req->nKeySyms;i++,symMap++) {
- BufAlloc(xkbSymMapWireDesc *,desc,
- SIZEOF(xkbSymMapWireDesc)+
- (XkbKeyNumSyms(xkb,i+req->firstKeySym)*sizeof(CARD32)));
- desc->ktIndex[0] = symMap->kt_index[0];
- desc->ktIndex[1] = symMap->kt_index[1];
- desc->ktIndex[2] = symMap->kt_index[2];
- desc->ktIndex[3] = symMap->kt_index[3];
- desc->groupInfo = symMap->group_info;
- desc->width = symMap->width;
- desc->nSyms = XkbKeyNumSyms(xkb,i+req->firstKeySym);
- outSym = (CARD32 *)&desc[1];
- if (desc->nSyms>0) {
- pSym = XkbKeySymsPtr(xkb,i+req->firstKeySym);
- _XkbWriteCopyKeySyms(pSym,outSym,desc->nSyms);
- }
- }
- return;
-}
-
-static int
-_XkbSizeKeyActions(XkbDescPtr xkb,xkbSetMapReq *req)
-{
- int i,len,nActs;
-
- if (((req->present&XkbKeyActionsMask)==0)||(req->nKeyActs==0)) {
- req->present&= ~XkbKeyActionsMask;
- req->firstKeyAct= req->nKeyActs= 0;
- req->totalActs= 0;
- return 0;
- }
- for (nActs=i=0;i<req->nKeyActs;i++) {
- if (xkb->server->key_acts[i+req->firstKeyAct]!=0)
- nActs+= XkbKeyNumActions(xkb,i+req->firstKeyAct);
- }
- len= XkbPaddedSize(req->nKeyActs)+(nActs*SIZEOF(xkbActionWireDesc));
- req->totalActs= nActs;
- return len;
-}
-
-static void
-_XkbWriteKeyActions(Display *dpy,XkbDescPtr xkb,xkbSetMapReq *req)
-{
- register int i;
- int n;
- CARD8 *numDesc;
- XkbAction *actDesc;
-
- if ((req->present&XkbKeyActionsMask)==0)
- return;
- n = XkbPaddedSize(req->nKeyActs);
- n+= (req->totalActs*SIZEOF(xkbActionWireDesc));
-
- BufAlloc(CARD8 *,numDesc,n);
- for (i=0;i<req->nKeyActs;i++) {
- if (xkb->server->key_acts[i+req->firstKeyAct]==0)
- numDesc[i] = 0;
- else numDesc[i] = XkbKeyNumActions(xkb,(i+req->firstKeyAct));
- }
- actDesc = (XkbAction *)&numDesc[XkbPaddedSize(req->nKeyActs)];
- for (i=0;i<req->nKeyActs;i++) {
- if (xkb->server->key_acts[i+req->firstKeyAct]!=0) {
- n = XkbKeyNumActions(xkb,(i+req->firstKeyAct));
- memcpy(actDesc,XkbKeyActionsPtr(xkb,(i+req->firstKeyAct)),
- n*SIZEOF(xkbActionWireDesc));
- actDesc+= n;
- }
- }
- return;
-}
-
-static int
-_XkbSizeKeyBehaviors(XkbDescPtr xkb,xkbSetMapReq *req)
-{
-register int i,first,last,nFound;
-
- if (((req->present&XkbKeyBehaviorsMask)==0)||(req->nKeyBehaviors<1)) {
- req->present&= ~XkbKeyBehaviorsMask;
- req->firstKeyBehavior= req->nKeyBehaviors= 0;
- req->totalKeyBehaviors= 0;
- return 0;
- }
- first= req->firstKeyBehavior;
- last= first+req->nKeyBehaviors-1;
- for (i=first,nFound=0;i<=last;i++) {
- if (xkb->server->behaviors[i].type!=XkbKB_Default)
- nFound++;
- }
- req->totalKeyBehaviors= nFound;
- return (nFound*SIZEOF(xkbBehaviorWireDesc));
-}
-
-static void
-_XkbWriteKeyBehaviors(Display *dpy,XkbDescPtr xkb,xkbSetMapReq *req)
-{
-register int i,first,last;
-xkbBehaviorWireDesc * wire;
-char * buf;
-
- if ((req->present&XkbKeyBehaviorsMask)==0)
- return;
- first= req->firstKeyBehavior;
- last= first+req->nKeyBehaviors-1;
-
- i= req->totalKeyBehaviors*SIZEOF(xkbBehaviorWireDesc);
- BufAlloc(char *,buf,i);
- wire= (xkbBehaviorWireDesc *)buf;
- for (i=first;i<=last;i++) {
- if (xkb->server->behaviors[i].type!=XkbKB_Default) {
- wire->key= i;
- wire->type= xkb->server->behaviors[i].type;
- wire->data= xkb->server->behaviors[i].data;
- buf+= SIZEOF(xkbBehaviorWireDesc);
- wire= (xkbBehaviorWireDesc *)buf;
- }
- }
- return;
-}
-
-static unsigned
-_XkbSizeVirtualMods(xkbSetMapReq *req)
-{
-register int i,bit,nMods;
-
- if (((req->present&XkbVirtualModsMask)==0)||(req->virtualMods==0)) {
- req->present&= ~XkbVirtualModsMask;
- req->virtualMods= 0;
- return 0;
- }
- for (i=nMods=0,bit=1;i<XkbNumVirtualMods;i++,bit<<=1) {
- if (req->virtualMods&bit)
- nMods++;
- }
- return XkbPaddedSize(nMods);
-}
-
-static void
-_XkbWriteVirtualMods( Display * dpy,
- XkbDescPtr xkb,
- xkbSetMapReq * req,
- unsigned size)
-{
- register int i,bit;
- CARD8 *vmods;
-
- /* This was req->present&XkbVirtualModsMask==0, and '==' beats '&' */
- if (((req->present & XkbVirtualModsMask) == 0) || (size < 1))
- return;
- BufAlloc(CARD8 *,vmods,size);
- for (i=0,bit=1;i<XkbNumVirtualMods;i++,bit<<=1) {
- if (req->virtualMods&bit)
- *vmods++= xkb->server->vmods[i];
- }
- return;
-}
-
-static int
-_XkbSizeKeyExplicit(XkbDescPtr xkb,xkbSetMapReq *req)
-{
-register int i,first,last,nFound;
-
- if (((req->present&XkbExplicitComponentsMask)==0)||(req->nKeyExplicit==0)) {
- req->present&= ~XkbExplicitComponentsMask;
- req->firstKeyExplicit= req->nKeyExplicit= 0;
- req->totalKeyExplicit= 0;
- return 0;
- }
- first= req->firstKeyExplicit;
- last= first+req->nKeyExplicit-1;
-
- for (i=first,nFound=0;i<=last;i++) {
- if (xkb->server->explicit[i]!=0)
- nFound++;
- }
- req->totalKeyExplicit= nFound;
- return XkbPaddedSize((nFound*2));
-}
-
-static void
-_XkbWriteKeyExplicit(Display *dpy,XkbDescPtr xkb,xkbSetMapReq *req)
-{
-register int i,first,last;
-CARD8 * wire;
-
- if ((req->present&XkbExplicitComponentsMask)==0)
- return;
- first= req->firstKeyExplicit;
- last= first+req->nKeyExplicit - 1;
- i= XkbPaddedSize((req->totalKeyExplicit*2));
- BufAlloc(CARD8 *,wire,i);
- for (i=first;i<=last;i++) {
- if (xkb->server->explicit[i]!=0) {
- wire[0]= i;
- wire[1]= xkb->server->explicit[i];
- wire+= 2;
- }
- }
- return;
-}
-
-static int
-_XkbSizeModifierMap(XkbDescPtr xkb,xkbSetMapReq *req)
-{
-register int i,first,last,nFound;
-
- if (((req->present&XkbModifierMapMask)==0)||(req->nModMapKeys==0)) {
- req->present&= ~XkbModifierMapMask;
- req->firstModMapKey= req->nModMapKeys= 0;
- req->totalModMapKeys= 0;
- return 0;
- }
- first= req->firstModMapKey;
- last= first+req->nModMapKeys-1;
-
- for (i=first,nFound=0;i<=last;i++) {
- if (xkb->map->modmap[i]!=0)
- nFound++;
- }
- req->totalModMapKeys= nFound;
- return XkbPaddedSize((nFound*2));
-}
-
-static void
-_XkbWriteModifierMap(Display *dpy,XkbDescPtr xkb,xkbSetMapReq *req)
-{
-register int i,first,last;
-CARD8 * wire;
-
- if ((req->present&XkbModifierMapMask)==0)
- return;
- first= req->firstModMapKey;
- last= first+req->nModMapKeys-1;
- if (req->totalModMapKeys>0) {
- i= XkbPaddedSize((req->totalModMapKeys*2));
- BufAlloc(CARD8 *,wire,i);
- for (i=first;i<=last;i++) {
- if (xkb->map->modmap[i]!=0) {
- wire[0]= i;
- wire[1]= xkb->map->modmap[i];
- wire+= 2;
- }
- }
- }
- return;
-}
-
-static int
-_XkbSizeVirtualModMap(XkbDescPtr xkb,xkbSetMapReq *req)
-{
-register int i,first,last,nFound;
-
- if (((req->present&XkbVirtualModMapMask)==0)||(req->nVModMapKeys==0)) {
- req->present&= ~XkbVirtualModMapMask;
- req->firstVModMapKey= req->nVModMapKeys= 0;
- req->totalVModMapKeys= 0;
- return 0;
- }
- first= req->firstVModMapKey;
- last= first+req->nVModMapKeys-1;
-
- for (i=first,nFound=0;i<=last;i++) {
- if (xkb->server->vmodmap[i]!=0)
- nFound++;
- }
- req->totalVModMapKeys= nFound;
- return nFound*SIZEOF(xkbVModMapWireDesc);
-}
-
-static void
-_XkbWriteVirtualModMap(Display *dpy,XkbDescPtr xkb,xkbSetMapReq *req)
-{
-register int i,first,last;
-xkbVModMapWireDesc * wire;
-
- if ((req->present&XkbVirtualModMapMask)==0)
- return;
- first= req->firstVModMapKey;
- last= first+req->nVModMapKeys-1;
- if (req->totalVModMapKeys>0) {
- i= req->totalVModMapKeys*SIZEOF(xkbVModMapWireDesc);
- BufAlloc(xkbVModMapWireDesc *,wire,i);
- for (i=first;i<=last;i++) {
- if (xkb->server->vmodmap[i]!=0) {
- wire->key= i;
- wire->vmods= xkb->server->vmodmap[i];
- wire++;
- }
- }
- }
- return;
-}
-
-static void
-SendSetMap(Display *dpy,XkbDescPtr xkb,xkbSetMapReq *req)
-{
-xkbSetMapReq tmp;
-unsigned szMods;
-
- req->length+= _XkbSizeKeyTypes(xkb,req)/4;
- req->length+= _XkbSizeKeySyms(xkb,req)/4;
- req->length+= _XkbSizeKeyActions(xkb,req)/4;
- req->length+= _XkbSizeKeyBehaviors(xkb,req)/4;
- szMods= _XkbSizeVirtualMods(req);
- req->length+= szMods/4;
- req->length+= _XkbSizeKeyExplicit(xkb,req)/4;
- req->length+= _XkbSizeModifierMap(xkb,req)/4;
- req->length+= _XkbSizeVirtualModMap(xkb,req)/4;
-
- tmp= *req;
- if ( tmp.nTypes>0 )
- _XkbWriteKeyTypes(dpy,xkb,&tmp);
- if ( tmp.nKeySyms>0 )
- _XkbWriteKeySyms(dpy,xkb,&tmp);
- if ( tmp.nKeyActs )
- _XkbWriteKeyActions(dpy,xkb,&tmp);
- if ( tmp.totalKeyBehaviors>0 )
- _XkbWriteKeyBehaviors(dpy,xkb,&tmp);
- if ( tmp.virtualMods )
- _XkbWriteVirtualMods(dpy,xkb,&tmp,szMods);
- if ( tmp.totalKeyExplicit>0)
- _XkbWriteKeyExplicit(dpy,xkb,&tmp);
- if ( tmp.totalModMapKeys>0)
- _XkbWriteModifierMap(dpy,xkb,&tmp);
- if ( tmp.totalVModMapKeys>0)
- _XkbWriteVirtualModMap(dpy,xkb,&tmp);
- return;
-}
-
-Bool
-XkbSetMap(Display *dpy,unsigned which,XkbDescPtr xkb)
-{
-register xkbSetMapReq * req;
-XkbInfoPtr xkbi;
-XkbServerMapPtr srv;
-XkbClientMapPtr map;
-
- if ((dpy->flags & XlibDisplayNoXkb) ||
- (!dpy->xkb_info && !XkbUseExtension(dpy,NULL,NULL))||
- (!xkb))
- return False;
- map= xkb->map;
- srv= xkb->server;
-
- if (((which&XkbKeyTypesMask)&&((!map)||(!map->types)))||
- ((which&XkbKeySymsMask)&&((!map)||(!map->syms)||(!map->key_sym_map)))||
- ((which&XkbKeyActionsMask)&&((!srv)||(!srv->key_acts)))||
- ((which&XkbKeyBehaviorsMask)&&((!srv)||(!srv->behaviors)))||
- ((which&XkbVirtualModsMask)&&(!srv))||
- ((which&XkbExplicitComponentsMask)&&((!srv)||(!srv->explicit)))||
- ((which&XkbModifierMapMask)&&((!map)||(!map->modmap)))||
- ((which&XkbVirtualModMapMask)&&((!srv)||(!srv->vmodmap))))
- return False;
-
- LockDisplay(dpy);
- xkbi = dpy->xkb_info;
- GetReq(kbSetMap, req);
- req->reqType = xkbi->codes->major_opcode;
- req->xkbReqType = X_kbSetMap;
- req->deviceSpec = xkb->device_spec;
- req->present = which;
- req->flags = XkbSetMapAllFlags;
- req->minKeyCode= xkb->min_key_code;
- req->maxKeyCode= xkb->max_key_code;
- req->firstType = 0;
- if (which&XkbKeyTypesMask) req->nTypes = map->num_types;
- else req->nTypes = 0;
- if (which&XkbKeySymsMask) {
- req->firstKeySym = xkb->min_key_code;
- req->nKeySyms = XkbNumKeys(xkb);
- }
- if (which&XkbKeyActionsMask) {
- req->firstKeyAct = xkb->min_key_code;
- req->nKeyActs = XkbNumKeys(xkb);
- }
- if (which&XkbKeyBehaviorsMask) {
- req->firstKeyBehavior = xkb->min_key_code;
- req->nKeyBehaviors = XkbNumKeys(xkb);
- }
- if (which&XkbVirtualModsMask)
- req->virtualMods= ~0;
- if (which&XkbExplicitComponentsMask) {
- req->firstKeyExplicit= xkb->min_key_code;
- req->nKeyExplicit = XkbNumKeys(xkb);
- }
- if (which&XkbModifierMapMask) {
- req->firstModMapKey= xkb->min_key_code;
- req->nModMapKeys = XkbNumKeys(xkb);
- }
- if (which&XkbVirtualModMapMask) {
- req->firstVModMapKey= xkb->min_key_code;
- req->nVModMapKeys = XkbNumKeys(xkb);
- }
- SendSetMap(dpy,xkb,req);
- UnlockDisplay(dpy);
- SyncHandle();
- return True;
-}
-
-Bool
-XkbChangeMap(Display *dpy,XkbDescPtr xkb,XkbMapChangesPtr changes)
-{
-register xkbSetMapReq * req;
-XkbInfoPtr xkbi;
-XkbServerMapPtr srv;
-XkbClientMapPtr map;
-
- if ((dpy->flags & XlibDisplayNoXkb) ||
- (!dpy->xkb_info && !XkbUseExtension(dpy,NULL,NULL))||
- (!xkb)||(!changes))
- return False;
- srv= xkb->server;
- map= xkb->map;
-
- if (((changes->changed&XkbKeyTypesMask)&&((!map)||(!map->types)))||
- ((changes->changed&XkbKeySymsMask)&&((!map)||(!map->syms)||
- (!map->key_sym_map)))||
- ((changes->changed&XkbKeyActionsMask)&&((!srv)||(!srv->key_acts)))||
- ((changes->changed&XkbKeyBehaviorsMask)&&((!srv)||(!srv->behaviors)))||
- ((changes->changed&XkbVirtualModsMask)&&(!srv))||
- ((changes->changed&XkbExplicitComponentsMask)&&
- ((!srv)||(!srv->explicit)))||
- ((changes->changed&XkbModifierMapMask)&&((!map)||(!map->modmap)))||
- ((changes->changed&XkbVirtualModMapMask)&&((!srv)||(!srv->vmodmap))))
- return False;
-
- LockDisplay(dpy);
- xkbi = dpy->xkb_info;
- GetReq(kbSetMap, req);
- req->reqType = xkbi->codes->major_opcode;
- req->xkbReqType = X_kbSetMap;
- req->deviceSpec = xkb->device_spec;
- req->present = changes->changed;
- req->flags = XkbSetMapRecomputeActions;
- req->minKeyCode= xkb->min_key_code;
- req->maxKeyCode= xkb->max_key_code;
- req->firstType = changes->first_type;
- req->nTypes = changes->num_types;
- req->firstKeySym = changes->first_key_sym;
- req->nKeySyms = changes->num_key_syms;
- req->firstKeyAct = changes->first_key_act;
- req->nKeyActs = changes->num_key_acts;
- req->firstKeyBehavior = changes->first_key_behavior;
- req->nKeyBehaviors = changes->num_key_behaviors;
- req->virtualMods = changes->vmods;
- req->firstKeyExplicit = changes->first_key_explicit;
- req->nKeyExplicit = changes->num_key_explicit;
- req->firstModMapKey = changes->first_modmap_key;
- req->nModMapKeys = changes->num_modmap_keys;
- req->firstVModMapKey = changes->first_vmodmap_key;
- req->nVModMapKeys = changes->num_vmodmap_keys;
- SendSetMap(dpy,xkb,req);
- UnlockDisplay(dpy);
- SyncHandle();
- return True;
-}
-
+/************************************************************
+Copyright (c) 1993 by Silicon Graphics Computer Systems, Inc.
+
+Permission to use, copy, modify, and distribute this
+software and its documentation for any purpose and without
+fee is hereby granted, provided that the above copyright
+notice appear in all copies and that both that copyright
+notice and this permission notice appear in supporting
+documentation, and that the name of Silicon Graphics not be
+used in advertising or publicity pertaining to distribution
+of the software without specific prior written permission.
+Silicon Graphics makes no representation about the suitability
+of this software for any purpose. It is provided "as is"
+without any express or implied warranty.
+
+SILICON GRAPHICS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS
+SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
+AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON
+GRAPHICS BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL
+DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
+DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
+OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH
+THE USE OR PERFORMANCE OF THIS SOFTWARE.
+
+********************************************************/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include <stdio.h>
+#include "Xlibint.h"
+#include <X11/extensions/XKBproto.h>
+#include "XKBlibint.h"
+
+static int
+_XkbSizeKeyTypes(XkbDescPtr xkb,xkbSetMapReq *req)
+{
+ XkbKeyTypePtr map;
+ int i,len;
+
+ if (((req->present&XkbKeyTypesMask)==0)||(req->nTypes==0)) {
+ req->present&= ~XkbKeyTypesMask;
+ req->firstType= req->nTypes= 0;
+ return 0;
+ }
+ len= 0;
+ map= &xkb->map->types[req->firstType];
+ for (i=0;i<req->nTypes;i++,map++){
+ len+= SIZEOF(xkbKeyTypeWireDesc);
+ len+= map->map_count*SIZEOF(xkbKTSetMapEntryWireDesc);
+ if (map->preserve)
+ len+= map->map_count*SIZEOF(xkbModsWireDesc);
+ }
+ return len;
+}
+
+static void
+_XkbWriteKeyTypes(Display *dpy,XkbDescPtr xkb,xkbSetMapReq *req)
+{
+ char * buf;
+ XkbKeyTypePtr type;
+ int i,n,sz;
+ xkbKeyTypeWireDesc *desc;
+
+ if ((req->present&XkbKeyTypesMask)==0)
+ return;
+ type= &xkb->map->types[req->firstType];
+ for (i=0;i<req->nTypes;i++,type++) {
+ sz= SIZEOF(xkbKeyTypeWireDesc);
+ sz+= type->map_count*SIZEOF(xkbKTSetMapEntryWireDesc);
+ if (type->preserve)
+ sz+= type->map_count*SIZEOF(xkbModsWireDesc);
+ BufAlloc(xkbKeyTypeWireDesc *,desc,sz);
+ desc->mask = type->mods.mask;
+ desc->realMods = type->mods.real_mods;
+ desc->virtualMods = type->mods.vmods;
+ desc->numLevels = type->num_levels;
+ desc->nMapEntries = type->map_count;
+ desc->preserve = (type->preserve!=NULL);
+ buf= (char *)&desc[1];
+ if (desc->nMapEntries>0) {
+ xkbKTSetMapEntryWireDesc *wire;
+ wire= (xkbKTSetMapEntryWireDesc *)buf;
+ for (n=0;n<type->map_count;n++,wire++) {
+ wire->level= type->map[n].level;
+ wire->realMods= type->map[n].mods.real_mods;
+ wire->virtualMods= type->map[n].mods.vmods;
+ }
+ buf= (char *)wire;
+ if (type->preserve) {
+ xkbModsWireDesc *pwire;
+ pwire= (xkbModsWireDesc *)buf;
+ for (n=0;n<type->map_count;n++,pwire++) {
+ pwire->realMods= type->preserve[n].real_mods;
+ pwire->virtualMods= type->preserve[n].vmods;
+ }
+ }
+ }
+ }
+ return;
+}
+
+static int
+_XkbSizeKeySyms(XkbDescPtr xkb,xkbSetMapReq *req)
+{
+ int i,len;
+ unsigned nSyms;
+
+ if (((req->present&XkbKeySymsMask)==0)||(req->nKeySyms==0)) {
+ req->present&= ~XkbKeySymsMask;
+ req->firstKeySym= req->nKeySyms= 0;
+ req->totalSyms= 0;
+ return 0;
+ }
+ len= (int)(req->nKeySyms*sizeof(XkbSymMapRec));
+ for (i=nSyms=0;i<req->nKeySyms;i++) {
+ nSyms+= XkbKeyNumSyms(xkb,i+req->firstKeySym);
+ }
+ len+= nSyms*sizeof(CARD32);
+ req->totalSyms= nSyms;
+ return len;
+}
+
+static void
+_XkbWriteKeySyms(Display *dpy,XkbDescPtr xkb,xkbSetMapReq *req)
+{
+register KeySym * pSym;
+CARD32 * outSym;
+XkbSymMapPtr symMap;
+xkbSymMapWireDesc *desc;
+register int i;
+
+ if ((req->present&XkbKeySymsMask)==0)
+ return;
+ symMap = &xkb->map->key_sym_map[req->firstKeySym];
+ for (i=0;i<req->nKeySyms;i++,symMap++) {
+ BufAlloc(xkbSymMapWireDesc *,desc,
+ SIZEOF(xkbSymMapWireDesc)+
+ (XkbKeyNumSyms(xkb,i+req->firstKeySym)*sizeof(CARD32)));
+ desc->ktIndex[0] = symMap->kt_index[0];
+ desc->ktIndex[1] = symMap->kt_index[1];
+ desc->ktIndex[2] = symMap->kt_index[2];
+ desc->ktIndex[3] = symMap->kt_index[3];
+ desc->groupInfo = symMap->group_info;
+ desc->width = symMap->width;
+ desc->nSyms = XkbKeyNumSyms(xkb,i+req->firstKeySym);
+ outSym = (CARD32 *)&desc[1];
+ if (desc->nSyms>0) {
+ pSym = XkbKeySymsPtr(xkb,i+req->firstKeySym);
+ _XkbWriteCopyKeySyms(pSym,outSym,desc->nSyms);
+ }
+ }
+ return;
+}
+
+static int
+_XkbSizeKeyActions(XkbDescPtr xkb,xkbSetMapReq *req)
+{
+ int i,len,nActs;
+
+ if (((req->present&XkbKeyActionsMask)==0)||(req->nKeyActs==0)) {
+ req->present&= ~XkbKeyActionsMask;
+ req->firstKeyAct= req->nKeyActs= 0;
+ req->totalActs= 0;
+ return 0;
+ }
+ for (nActs=i=0;i<req->nKeyActs;i++) {
+ if (xkb->server->key_acts[i+req->firstKeyAct]!=0)
+ nActs+= XkbKeyNumActions(xkb,i+req->firstKeyAct);
+ }
+ len= XkbPaddedSize(req->nKeyActs)+(nActs*SIZEOF(xkbActionWireDesc));
+ req->totalActs= nActs;
+ return len;
+}
+
+static void
+_XkbWriteKeyActions(Display *dpy,XkbDescPtr xkb,xkbSetMapReq *req)
+{
+ register int i;
+ int n;
+ CARD8 *numDesc;
+ XkbAction *actDesc;
+
+ if ((req->present&XkbKeyActionsMask)==0)
+ return;
+ n = XkbPaddedSize(req->nKeyActs);
+ n+= (req->totalActs*SIZEOF(xkbActionWireDesc));
+
+ BufAlloc(CARD8 *,numDesc,n);
+ for (i=0;i<req->nKeyActs;i++) {
+ if (xkb->server->key_acts[i+req->firstKeyAct]==0)
+ numDesc[i] = 0;
+ else numDesc[i] = XkbKeyNumActions(xkb,(i+req->firstKeyAct));
+ }
+ actDesc = (XkbAction *)&numDesc[XkbPaddedSize(req->nKeyActs)];
+ for (i=0;i<req->nKeyActs;i++) {
+ if (xkb->server->key_acts[i+req->firstKeyAct]!=0) {
+ n = XkbKeyNumActions(xkb,(i+req->firstKeyAct));
+ memcpy(actDesc,XkbKeyActionsPtr(xkb,(i+req->firstKeyAct)),
+ n*SIZEOF(xkbActionWireDesc));
+ actDesc+= n;
+ }
+ }
+ return;
+}
+
+static int
+_XkbSizeKeyBehaviors(XkbDescPtr xkb,xkbSetMapReq *req)
+{
+register int i,first,last,nFound;
+
+ if (((req->present&XkbKeyBehaviorsMask)==0)||(req->nKeyBehaviors<1)) {
+ req->present&= ~XkbKeyBehaviorsMask;
+ req->firstKeyBehavior= req->nKeyBehaviors= 0;
+ req->totalKeyBehaviors= 0;
+ return 0;
+ }
+ first= req->firstKeyBehavior;
+ last= first+req->nKeyBehaviors-1;
+ for (i=first,nFound=0;i<=last;i++) {
+ if (xkb->server->behaviors[i].type!=XkbKB_Default)
+ nFound++;
+ }
+ req->totalKeyBehaviors= nFound;
+ return (nFound*SIZEOF(xkbBehaviorWireDesc));
+}
+
+static void
+_XkbWriteKeyBehaviors(Display *dpy,XkbDescPtr xkb,xkbSetMapReq *req)
+{
+register int i,first,last;
+xkbBehaviorWireDesc * wire;
+char * buf;
+
+ if ((req->present&XkbKeyBehaviorsMask)==0)
+ return;
+ first= req->firstKeyBehavior;
+ last= first+req->nKeyBehaviors-1;
+
+ i= req->totalKeyBehaviors*SIZEOF(xkbBehaviorWireDesc);
+ BufAlloc(char *,buf,i);
+ wire= (xkbBehaviorWireDesc *)buf;
+ for (i=first;i<=last;i++) {
+ if (xkb->server->behaviors[i].type!=XkbKB_Default) {
+ wire->key= i;
+ wire->type= xkb->server->behaviors[i].type;
+ wire->data= xkb->server->behaviors[i].data;
+ buf+= SIZEOF(xkbBehaviorWireDesc);
+ wire= (xkbBehaviorWireDesc *)buf;
+ }
+ }
+ return;
+}
+
+static unsigned
+_XkbSizeVirtualMods(xkbSetMapReq *req)
+{
+register int i,bit,nMods;
+
+ if (((req->present&XkbVirtualModsMask)==0)||(req->virtualMods==0)) {
+ req->present&= ~XkbVirtualModsMask;
+ req->virtualMods= 0;
+ return 0;
+ }
+ for (i=nMods=0,bit=1;i<XkbNumVirtualMods;i++,bit<<=1) {
+ if (req->virtualMods&bit)
+ nMods++;
+ }
+ return XkbPaddedSize(nMods);
+}
+
+static void
+_XkbWriteVirtualMods( Display * dpy,
+ XkbDescPtr xkb,
+ xkbSetMapReq * req,
+ unsigned size)
+{
+ register int i,bit;
+ CARD8 *vmods;
+
+ /* This was req->present&XkbVirtualModsMask==0, and '==' beats '&' */
+ if (((req->present & XkbVirtualModsMask) == 0) || (size < 1))
+ return;
+ BufAlloc(CARD8 *,vmods,size);
+ for (i=0,bit=1;i<XkbNumVirtualMods;i++,bit<<=1) {
+ if (req->virtualMods&bit)
+ *vmods++= xkb->server->vmods[i];
+ }
+ return;
+}
+
+static int
+_XkbSizeKeyExplicit(XkbDescPtr xkb,xkbSetMapReq *req)
+{
+register int i,first,last,nFound;
+
+ if (((req->present&XkbExplicitComponentsMask)==0)||(req->nKeyExplicit==0)) {
+ req->present&= ~XkbExplicitComponentsMask;
+ req->firstKeyExplicit= req->nKeyExplicit= 0;
+ req->totalKeyExplicit= 0;
+ return 0;
+ }
+ first= req->firstKeyExplicit;
+ last= first+req->nKeyExplicit-1;
+
+ for (i=first,nFound=0;i<=last;i++) {
+ if (xkb->server->explicit[i]!=0)
+ nFound++;
+ }
+ req->totalKeyExplicit= nFound;
+ return XkbPaddedSize((nFound*2));
+}
+
+static void
+_XkbWriteKeyExplicit(Display *dpy,XkbDescPtr xkb,xkbSetMapReq *req)
+{
+register int i,first,last;
+CARD8 * wire;
+
+ if ((req->present&XkbExplicitComponentsMask)==0)
+ return;
+ first= req->firstKeyExplicit;
+ last= first+req->nKeyExplicit - 1;
+ i= XkbPaddedSize((req->totalKeyExplicit*2));
+ BufAlloc(CARD8 *,wire,i);
+ for (i=first;i<=last;i++) {
+ if (xkb->server->explicit[i]!=0) {
+ wire[0]= i;
+ wire[1]= xkb->server->explicit[i];
+ wire+= 2;
+ }
+ }
+ return;
+}
+
+static int
+_XkbSizeModifierMap(XkbDescPtr xkb,xkbSetMapReq *req)
+{
+register int i,first,last,nFound;
+
+ if (((req->present&XkbModifierMapMask)==0)||(req->nModMapKeys==0)) {
+ req->present&= ~XkbModifierMapMask;
+ req->firstModMapKey= req->nModMapKeys= 0;
+ req->totalModMapKeys= 0;
+ return 0;
+ }
+ first= req->firstModMapKey;
+ last= first+req->nModMapKeys-1;
+
+ for (i=first,nFound=0;i<=last;i++) {
+ if (xkb->map->modmap[i]!=0)
+ nFound++;
+ }
+ req->totalModMapKeys= nFound;
+ return XkbPaddedSize((nFound*2));
+}
+
+static void
+_XkbWriteModifierMap(Display *dpy,XkbDescPtr xkb,xkbSetMapReq *req)
+{
+register int i,first,last;
+CARD8 * wire;
+
+ if ((req->present&XkbModifierMapMask)==0)
+ return;
+ first= req->firstModMapKey;
+ last= first+req->nModMapKeys-1;
+ if (req->totalModMapKeys>0) {
+ i= XkbPaddedSize((req->totalModMapKeys*2));
+ BufAlloc(CARD8 *,wire,i);
+ for (i=first;i<=last;i++) {
+ if (xkb->map->modmap[i]!=0) {
+ wire[0]= i;
+ wire[1]= xkb->map->modmap[i];
+ wire+= 2;
+ }
+ }
+ }
+ return;
+}
+
+static int
+_XkbSizeVirtualModMap(XkbDescPtr xkb,xkbSetMapReq *req)
+{
+register int i,first,last,nFound;
+
+ if (((req->present&XkbVirtualModMapMask)==0)||(req->nVModMapKeys==0)) {
+ req->present&= ~XkbVirtualModMapMask;
+ req->firstVModMapKey= req->nVModMapKeys= 0;
+ req->totalVModMapKeys= 0;
+ return 0;
+ }
+ first= req->firstVModMapKey;
+ last= first+req->nVModMapKeys-1;
+
+ for (i=first,nFound=0;i<=last;i++) {
+ if (xkb->server->vmodmap[i]!=0)
+ nFound++;
+ }
+ req->totalVModMapKeys= nFound;
+ return nFound*SIZEOF(xkbVModMapWireDesc);
+}
+
+static void
+_XkbWriteVirtualModMap(Display *dpy,XkbDescPtr xkb,xkbSetMapReq *req)
+{
+register int i,first,last;
+xkbVModMapWireDesc * wire;
+
+ if ((req->present&XkbVirtualModMapMask)==0)
+ return;
+ first= req->firstVModMapKey;
+ last= first+req->nVModMapKeys-1;
+ if (req->totalVModMapKeys>0) {
+ i= req->totalVModMapKeys*SIZEOF(xkbVModMapWireDesc);
+ BufAlloc(xkbVModMapWireDesc *,wire,i);
+ for (i=first;i<=last;i++) {
+ if (xkb->server->vmodmap[i]!=0) {
+ wire->key= i;
+ wire->vmods= xkb->server->vmodmap[i];
+ wire++;
+ }
+ }
+ }
+ return;
+}
+
+static void
+SendSetMap(Display *dpy,XkbDescPtr xkb,xkbSetMapReq *req)
+{
+xkbSetMapReq tmp;
+unsigned szMods;
+
+ req->length+= _XkbSizeKeyTypes(xkb,req)/4;
+ req->length+= _XkbSizeKeySyms(xkb,req)/4;
+ req->length+= _XkbSizeKeyActions(xkb,req)/4;
+ req->length+= _XkbSizeKeyBehaviors(xkb,req)/4;
+ szMods= _XkbSizeVirtualMods(req);
+ req->length+= szMods/4;
+ req->length+= _XkbSizeKeyExplicit(xkb,req)/4;
+ req->length+= _XkbSizeModifierMap(xkb,req)/4;
+ req->length+= _XkbSizeVirtualModMap(xkb,req)/4;
+
+ tmp= *req;
+ if ( tmp.nTypes>0 )
+ _XkbWriteKeyTypes(dpy,xkb,&tmp);
+ if ( tmp.nKeySyms>0 )
+ _XkbWriteKeySyms(dpy,xkb,&tmp);
+ if ( tmp.nKeyActs )
+ _XkbWriteKeyActions(dpy,xkb,&tmp);
+ if ( tmp.totalKeyBehaviors>0 )
+ _XkbWriteKeyBehaviors(dpy,xkb,&tmp);
+ if ( tmp.virtualMods )
+ _XkbWriteVirtualMods(dpy,xkb,&tmp,szMods);
+ if ( tmp.totalKeyExplicit>0)
+ _XkbWriteKeyExplicit(dpy,xkb,&tmp);
+ if ( tmp.totalModMapKeys>0)
+ _XkbWriteModifierMap(dpy,xkb,&tmp);
+ if ( tmp.totalVModMapKeys>0)
+ _XkbWriteVirtualModMap(dpy,xkb,&tmp);
+ return;
+}
+
+Bool
+XkbSetMap(Display *dpy,unsigned which,XkbDescPtr xkb)
+{
+register xkbSetMapReq * req;
+XkbInfoPtr xkbi;
+XkbServerMapPtr srv;
+XkbClientMapPtr map;
+
+ if ((dpy->flags & XlibDisplayNoXkb) ||
+ (!dpy->xkb_info && !XkbUseExtension(dpy,NULL,NULL))||
+ (!xkb))
+ return False;
+ map= xkb->map;
+ srv= xkb->server;
+
+ if (((which&XkbKeyTypesMask)&&((!map)||(!map->types)))||
+ ((which&XkbKeySymsMask)&&((!map)||(!map->syms)||(!map->key_sym_map)))||
+ ((which&XkbKeyActionsMask)&&((!srv)||(!srv->key_acts)))||
+ ((which&XkbKeyBehaviorsMask)&&((!srv)||(!srv->behaviors)))||
+ ((which&XkbVirtualModsMask)&&(!srv))||
+ ((which&XkbExplicitComponentsMask)&&((!srv)||(!srv->explicit)))||
+ ((which&XkbModifierMapMask)&&((!map)||(!map->modmap)))||
+ ((which&XkbVirtualModMapMask)&&((!srv)||(!srv->vmodmap))))
+ return False;
+
+ LockDisplay(dpy);
+ xkbi = dpy->xkb_info;
+ GetReq(kbSetMap, req);
+ req->reqType = xkbi->codes->major_opcode;
+ req->xkbReqType = X_kbSetMap;
+ req->deviceSpec = xkb->device_spec;
+ req->present = which;
+ req->flags = XkbSetMapAllFlags;
+ req->minKeyCode= xkb->min_key_code;
+ req->maxKeyCode= xkb->max_key_code;
+ req->firstType = 0;
+ if (which&XkbKeyTypesMask) req->nTypes = map->num_types;
+ else req->nTypes = 0;
+ if (which&XkbKeySymsMask) {
+ req->firstKeySym = xkb->min_key_code;
+ req->nKeySyms = XkbNumKeys(xkb);
+ }
+ if (which&XkbKeyActionsMask) {
+ req->firstKeyAct = xkb->min_key_code;
+ req->nKeyActs = XkbNumKeys(xkb);
+ }
+ if (which&XkbKeyBehaviorsMask) {
+ req->firstKeyBehavior = xkb->min_key_code;
+ req->nKeyBehaviors = XkbNumKeys(xkb);
+ }
+ if (which&XkbVirtualModsMask)
+ req->virtualMods= ~0;
+ if (which&XkbExplicitComponentsMask) {
+ req->firstKeyExplicit= xkb->min_key_code;
+ req->nKeyExplicit = XkbNumKeys(xkb);
+ }
+ if (which&XkbModifierMapMask) {
+ req->firstModMapKey= xkb->min_key_code;
+ req->nModMapKeys = XkbNumKeys(xkb);
+ }
+ if (which&XkbVirtualModMapMask) {
+ req->firstVModMapKey= xkb->min_key_code;
+ req->nVModMapKeys = XkbNumKeys(xkb);
+ }
+ SendSetMap(dpy,xkb,req);
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return True;
+}
+
+Bool
+XkbChangeMap(Display *dpy,XkbDescPtr xkb,XkbMapChangesPtr changes)
+{
+register xkbSetMapReq * req;
+XkbInfoPtr xkbi;
+XkbServerMapPtr srv;
+XkbClientMapPtr map;
+
+ if ((dpy->flags & XlibDisplayNoXkb) ||
+ (!dpy->xkb_info && !XkbUseExtension(dpy,NULL,NULL))||
+ (!xkb)||(!changes))
+ return False;
+ srv= xkb->server;
+ map= xkb->map;
+
+ if (((changes->changed&XkbKeyTypesMask)&&((!map)||(!map->types)))||
+ ((changes->changed&XkbKeySymsMask)&&((!map)||(!map->syms)||
+ (!map->key_sym_map)))||
+ ((changes->changed&XkbKeyActionsMask)&&((!srv)||(!srv->key_acts)))||
+ ((changes->changed&XkbKeyBehaviorsMask)&&((!srv)||(!srv->behaviors)))||
+ ((changes->changed&XkbVirtualModsMask)&&(!srv))||
+ ((changes->changed&XkbExplicitComponentsMask)&&
+ ((!srv)||(!srv->explicit)))||
+ ((changes->changed&XkbModifierMapMask)&&((!map)||(!map->modmap)))||
+ ((changes->changed&XkbVirtualModMapMask)&&((!srv)||(!srv->vmodmap))))
+ return False;
+
+ LockDisplay(dpy);
+ xkbi = dpy->xkb_info;
+ GetReq(kbSetMap, req);
+ req->reqType = xkbi->codes->major_opcode;
+ req->xkbReqType = X_kbSetMap;
+ req->deviceSpec = xkb->device_spec;
+ req->present = changes->changed;
+ req->flags = XkbSetMapRecomputeActions;
+ req->minKeyCode= xkb->min_key_code;
+ req->maxKeyCode= xkb->max_key_code;
+ req->firstType = changes->first_type;
+ req->nTypes = changes->num_types;
+ req->firstKeySym = changes->first_key_sym;
+ req->nKeySyms = changes->num_key_syms;
+ req->firstKeyAct = changes->first_key_act;
+ req->nKeyActs = changes->num_key_acts;
+ req->firstKeyBehavior = changes->first_key_behavior;
+ req->nKeyBehaviors = changes->num_key_behaviors;
+ req->virtualMods = changes->vmods;
+ req->firstKeyExplicit = changes->first_key_explicit;
+ req->nKeyExplicit = changes->num_key_explicit;
+ req->firstModMapKey = changes->first_modmap_key;
+ req->nModMapKeys = changes->num_modmap_keys;
+ req->firstVModMapKey = changes->first_vmodmap_key;
+ req->nVModMapKeys = changes->num_vmodmap_keys;
+ SendSetMap(dpy,xkb,req);
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return True;
+}
+
diff --git a/libX11/src/xkb/XKBUse.c b/libX11/src/xkb/XKBUse.c
index a16d6963a..ec2e08d54 100644
--- a/libX11/src/xkb/XKBUse.c
+++ b/libX11/src/xkb/XKBUse.c
@@ -1,825 +1,825 @@
-/************************************************************
-Copyright (c) 1993 by Silicon Graphics Computer Systems, Inc.
-
-Permission to use, copy, modify, and distribute this
-software and its documentation for any purpose and without
-fee is hereby granted, provided that the above copyright
-notice appear in all copies and that both that copyright
-notice and this permission notice appear in supporting
-documentation, and that the name of Silicon Graphics not be
-used in advertising or publicity pertaining to distribution
-of the software without specific prior written permission.
-Silicon Graphics makes no representation about the suitability
-of this software for any purpose. It is provided "as is"
-without any express or implied warranty.
-
-SILICON GRAPHICS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS
-SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
-AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON
-GRAPHICS BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL
-DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
-DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
-OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH
-THE USE OR PERFORMANCE OF THIS SOFTWARE.
-
-********************************************************/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include <stdio.h>
-#include <ctype.h>
-
-#ifdef XKB_IN_SERVER
-#define XkbAllocClientMap SrvXkbAllocClientMap
-#define XkbAllocServerMap SrvXkbAllocServerMap
-#define XkbChangeTypesOfKey SrvXkbChangeTypesOfKey
-#define XkbCopyKeyTypes SrvXkbCopyKeyTypes
-#define XkbFreeClientMap SrvXkbFreeClientMap
-#define XkbFreeServerMap SrvXkbFreeServerMap
-#define XkbKeyTypesForCoreSymbols SrvXkbKeyTypesForCoreSymbols
-#define XkbApplyCompatMapToKey SrvXkbApplyCompatMapToKey
-#define XkbResizeKeyActions SrvXkbResizeKeyActions
-#define XkbResizeKeySyms SrvXkbResizeKeySyms
-#define XkbResizeKeyType SrvXkbResizeKeyType
-#define XkbAllocCompatMap SrvXkbAllocCompatMap
-#define XkbAllocControls SrvXkbAllocControls
-#define XkbAllocIndicatorMaps SrvXkbAllocIndicatorMaps
-#define XkbAllocKeyboard SrvXkbAllocKeyboard
-#define XkbAllocNames SrvXkbAllocNames
-#define XkbFreeCompatMap SrvXkbFreeCompatMap
-#define XkbFreeKeyboard SrvXkbFreeKeyboard
-#define XkbFreeNames SrvXkbFreeNames
-#define XkbLatchModifiers SrvXkbLatchModifiers
-#define XkbLatchGroup SrvXkbLatchGroup
-#define XkbVirtualModsToReal SrvXkbVirtualModsToReal
-#define XkbChangeKeycodeRange SrvXkbChangeKeycodeRange
-#define XkbApplyVirtualModChanges SrvXkbApplyVirtualModChanges
-#endif
-
-#include "Xlibint.h"
-#include <X11/extensions/XKBproto.h>
-#include "XKBlibint.h"
-
-static Bool _XkbIgnoreExtension = False;
-
-void
-XkbNoteMapChanges(XkbMapChangesPtr old,XkbMapNotifyEvent *new,unsigned wanted)
-{
- int first,oldLast,newLast;
- wanted&= new->changed;
-
- if (wanted&XkbKeyTypesMask) {
- if (old->changed&XkbKeyTypesMask) {
- first = old->first_type;
- oldLast = old->first_type+old->num_types-1;
- newLast = new->first_type+new->num_types-1;
-
- if (new->first_type<first)
- first = new->first_type;
- if (oldLast>newLast)
- newLast= oldLast;
- old->first_type = first;
- old->num_types = newLast-first+1;
- }
- else {
- old->first_type= new->first_type;
- old->num_types = new->num_types;
- }
- }
- if (wanted&XkbKeySymsMask) {
- if (old->changed&XkbKeySymsMask) {
- first = old->first_key_sym;
- oldLast = old->first_key_sym+old->num_key_syms-1;
- newLast = new->first_key_sym+new->num_key_syms-1;
-
- if (new->first_key_sym<first)
- first = new->first_key_sym;
- if (oldLast>newLast)
- newLast= oldLast;
- old->first_key_sym = first;
- old->num_key_syms = newLast-first+1;
- }
- else {
- old->first_key_sym = new->first_key_sym;
- old->num_key_syms = new->num_key_syms;
- }
- }
- if (wanted&XkbKeyActionsMask) {
- if (old->changed&XkbKeyActionsMask) {
- first = old->first_key_act;
- oldLast = old->first_key_act+old->num_key_acts-1;
- newLast = new->first_key_act+new->num_key_acts-1;
-
- if (new->first_key_act<first)
- first = new->first_key_act;
- if (oldLast>newLast)
- newLast= oldLast;
- old->first_key_act = first;
- old->num_key_acts = newLast-first+1;
- }
- else {
- old->first_key_act = new->first_key_act;
- old->num_key_acts = new->num_key_acts;
- }
- }
- if (wanted&XkbKeyBehaviorsMask) {
- if (old->changed&XkbKeyBehaviorsMask) {
- first = old->first_key_behavior;
- oldLast = old->first_key_behavior+old->num_key_behaviors-1;
- newLast = new->first_key_behavior+new->num_key_behaviors-1;
-
- if (new->first_key_behavior<first)
- first = new->first_key_behavior;
- if (oldLast>newLast)
- newLast= oldLast;
- old->first_key_behavior = first;
- old->num_key_behaviors = newLast-first+1;
- }
- else {
- old->first_key_behavior = new->first_key_behavior;
- old->num_key_behaviors = new->num_key_behaviors;
- }
- }
- if (wanted&XkbVirtualModsMask) {
- old->vmods|= new->vmods;
- }
- if (wanted&XkbExplicitComponentsMask) {
- if (old->changed&XkbExplicitComponentsMask) {
- first = old->first_key_explicit;
- oldLast = old->first_key_explicit+old->num_key_explicit-1;
- newLast = new->first_key_explicit+new->num_key_explicit-1;
-
- if (new->first_key_explicit<first)
- first = new->first_key_explicit;
- if (oldLast>newLast)
- newLast= oldLast;
- old->first_key_explicit = first;
- old->num_key_explicit = newLast-first+1;
- }
- else {
- old->first_key_explicit = new->first_key_explicit;
- old->num_key_explicit = new->num_key_explicit;
- }
- }
- if (wanted&XkbModifierMapMask) {
- if (old->changed&XkbModifierMapMask) {
- first = old->first_modmap_key;
- oldLast = old->first_modmap_key+old->num_modmap_keys-1;
- newLast = new->first_modmap_key+new->num_modmap_keys-1;
-
- if (new->first_modmap_key<first)
- first = new->first_modmap_key;
- if (oldLast>newLast)
- newLast= oldLast;
- old->first_modmap_key = first;
- old->num_modmap_keys = newLast-first+1;
- }
- else {
- old->first_modmap_key = new->first_modmap_key;
- old->num_modmap_keys = new->num_modmap_keys;
- }
- }
- if (wanted&XkbVirtualModMapMask) {
- if (old->changed&XkbVirtualModMapMask) {
- first = old->first_vmodmap_key;
- oldLast = old->first_vmodmap_key+old->num_vmodmap_keys-1;
- newLast = new->first_vmodmap_key+new->num_vmodmap_keys-1;
-
- if (new->first_vmodmap_key<first)
- first = new->first_vmodmap_key;
- if (oldLast>newLast)
- newLast= oldLast;
- old->first_vmodmap_key = first;
- old->num_vmodmap_keys = newLast-first+1;
- }
- else {
- old->first_vmodmap_key = new->first_vmodmap_key;
- old->num_vmodmap_keys = new->num_vmodmap_keys;
- }
- }
- old->changed|= wanted;
- return;
-}
-
-void
-_XkbNoteCoreMapChanges( XkbMapChangesPtr old,
- XMappingEvent * new,
- unsigned int wanted)
-{
- int first,oldLast,newLast;
-
- if ((new->request==MappingKeyboard)&&(wanted&XkbKeySymsMask)) {
- if (old->changed&XkbKeySymsMask) {
- first = old->first_key_sym;
- oldLast = old->first_key_sym+old->num_key_syms-1;
- newLast = new->first_keycode+new->count-1;
-
- if (new->first_keycode<first)
- first = new->first_keycode;
- if (oldLast>newLast)
- newLast= oldLast;
- old->first_key_sym = first;
- old->num_key_syms = newLast-first+1;
- }
- else {
- old->changed|= XkbKeySymsMask;
- old->first_key_sym = new->first_keycode;
- old->num_key_syms = new->count;
- }
- }
- return;
-}
-
-static Bool
-wire_to_event(Display *dpy,XEvent *re,xEvent *event)
-{
- xkbEvent *xkbevent= (xkbEvent *)event;
- XkbInfoPtr xkbi;
-
- if ((dpy->flags & XlibDisplayNoXkb) ||
- (!dpy->xkb_info && !XkbUseExtension(dpy,NULL,NULL)))
- return False;
- xkbi = dpy->xkb_info;
- if (((event->u.u.type&0x7f)-xkbi->codes->first_event)!=XkbEventCode)
- return False;
-
- switch (xkbevent->u.any.xkbType) {
- case XkbStateNotify:
- {
- xkbStateNotify *sn = (xkbStateNotify *)event;
- if ( xkbi->selected_events&XkbStateNotifyMask ) {
- XkbStateNotifyEvent *sev=(XkbStateNotifyEvent *)re;
- sev->type = XkbEventCode+xkbi->codes->first_event;
- sev->xkb_type = XkbStateNotify;
- sev->serial = _XSetLastRequestRead(dpy,
- (xGenericReply *)event);
- sev->send_event = ((event->u.u.type & 0x80) != 0);
- sev->display = dpy;
- sev->time = sn->time;
- sev->device = sn->deviceID;
- sev->keycode = sn->keycode;
- sev->event_type = sn->eventType;
- sev->req_major = sn->requestMajor;
- sev->req_minor = sn->requestMinor;
- sev->changed = sn->changed;
- sev->group = sn->group;
- sev->base_group = sn->baseGroup;
- sev->latched_group = sn->latchedGroup;
- sev->locked_group = sn->lockedGroup;
- sev->mods = sn->mods;
- sev->base_mods = sn->baseMods;
- sev->latched_mods = sn->latchedMods;
- sev->locked_mods = sn->lockedMods;
- sev->compat_state = sn->compatState;
- sev->grab_mods = sn->grabMods;
- sev->compat_grab_mods = sn->compatGrabMods;
- sev->lookup_mods = sn->lookupMods;
- sev->compat_lookup_mods = sn->compatLookupMods;
- sev->ptr_buttons = sn->ptrBtnState;
- return True;
- }
- }
- break;
- case XkbMapNotify:
- {
- xkbMapNotify *mn = (xkbMapNotify *)event;
- if ((xkbi->selected_events&XkbMapNotifyMask)&&
- (xkbi->selected_map_details&mn->changed)) {
- XkbMapNotifyEvent *mev;
- mev =(XkbMapNotifyEvent *)re;
- mev->type = XkbEventCode+xkbi->codes->first_event;
- mev->xkb_type = XkbMapNotify;
- mev->serial = _XSetLastRequestRead(dpy,
- (xGenericReply *)event);
- mev->send_event = ((event->u.u.type&0x80)!=0);
- mev->display = dpy;
- mev->time = mn->time;
- mev->device = mn->deviceID;
- mev->changed = mn->changed;
- mev->min_key_code = mn->minKeyCode;
- mev->max_key_code = mn->maxKeyCode;
- mev->first_type = mn->firstType;
- mev->num_types = mn->nTypes;
- mev->first_key_sym = mn->firstKeySym;
- mev->num_key_syms = mn->nKeySyms;
- mev->first_key_act = mn->firstKeyAct;
- mev->num_key_acts = mn->nKeyActs;
- mev->first_key_behavior = mn->firstKeyBehavior;
- mev->num_key_behaviors = mn->nKeyBehaviors;
- mev->vmods = mn->virtualMods;
- mev->first_key_explicit = mn->firstKeyExplicit;
- mev->num_key_explicit = mn->nKeyExplicit;
- mev->first_modmap_key = mn->firstModMapKey;
- mev->num_modmap_keys = mn->nModMapKeys;
- mev->first_vmodmap_key = mn->firstVModMapKey;
- mev->num_vmodmap_keys = mn->nVModMapKeys;
- XkbNoteMapChanges(&xkbi->changes,mev,XKB_XLIB_MAP_MASK);
- if (xkbi->changes.changed)
- xkbi->flags|= XkbMapPending;
- return True;
- }
- else if (mn->nKeySyms>0) {
- register XMappingEvent *ev = (XMappingEvent *)re;
- ev->type = MappingNotify;
- ev->serial = _XSetLastRequestRead(dpy,
- (xGenericReply *)event);
- ev->send_event = ((event->u.u.type&0x80)!=0);
- ev->display = dpy;
- ev->window = 0;
- ev->first_keycode = mn->firstKeySym;
- ev->request = MappingKeyboard;
- ev->count = mn->nKeySyms;
- _XkbNoteCoreMapChanges(&xkbi->changes,ev,XKB_XLIB_MAP_MASK);
- if (xkbi->changes.changed)
- xkbi->flags|= XkbMapPending;
- return True;
- }
- }
- break;
- case XkbControlsNotify:
- {
- if (xkbi->selected_events&XkbControlsNotifyMask) {
- xkbControlsNotify *cn =(xkbControlsNotify *)event;
- XkbControlsNotifyEvent *cev;
- cev =(XkbControlsNotifyEvent *)re;
- cev->type = XkbEventCode+xkbi->codes->first_event;
- cev->xkb_type = XkbControlsNotify;
- cev->serial = _XSetLastRequestRead(dpy,
- (xGenericReply *)event);
- cev->send_event = ((event->u.u.type&0x80)!=0);
- cev->display = dpy;
- cev->time = cn->time;
- cev->device = cn->deviceID;
- cev->changed_ctrls = cn->changedControls;
- cev->enabled_ctrls = cn->enabledControls;
- cev->enabled_ctrl_changes = cn->enabledControlChanges;
- cev->keycode = cn->keycode;
- cev->num_groups = cn->numGroups;
- cev->event_type = cn->eventType;
- cev->req_major = cn->requestMajor;
- cev->req_minor = cn->requestMinor;
- return True;
- }
- }
- break;
- case XkbIndicatorMapNotify:
- {
- if (xkbi->selected_events&XkbIndicatorMapNotifyMask) {
- xkbIndicatorNotify *in =(xkbIndicatorNotify *)event;
- XkbIndicatorNotifyEvent *iev;
- iev =(XkbIndicatorNotifyEvent *)re;
- iev->type = XkbEventCode+xkbi->codes->first_event;
- iev->xkb_type = XkbIndicatorMapNotify;
- iev->serial = _XSetLastRequestRead(dpy,
- (xGenericReply *)event);
- iev->send_event = ((event->u.u.type&0x80)!=0);
- iev->display = dpy;
- iev->time = in->time;
- iev->device = in->deviceID;
- iev->changed = in->changed;
- iev->state= in->state;
- return True;
- }
- }
- break;
- case XkbIndicatorStateNotify:
- {
- if (xkbi->selected_events&XkbIndicatorStateNotifyMask) {
- xkbIndicatorNotify *in =(xkbIndicatorNotify *)event;
- XkbIndicatorNotifyEvent *iev;
- iev =(XkbIndicatorNotifyEvent *)re;
- iev->type = XkbEventCode+xkbi->codes->first_event;
- iev->xkb_type = XkbIndicatorStateNotify;
- iev->serial = _XSetLastRequestRead(dpy,
- (xGenericReply *)event);
- iev->send_event = ((event->u.u.type&0x80)!=0);
- iev->display = dpy;
- iev->time = in->time;
- iev->device = in->deviceID;
- iev->changed = in->changed;
- iev->state= in->state;
- return True;
- }
- }
- break;
- case XkbBellNotify:
- {
- if (xkbi->selected_events&XkbBellNotifyMask) {
- xkbBellNotify *bn =(xkbBellNotify *)event;
- XkbBellNotifyEvent *bev;
- bev =(XkbBellNotifyEvent *)re;
- bev->type = XkbEventCode+xkbi->codes->first_event;
- bev->xkb_type = XkbBellNotify;
- bev->serial = _XSetLastRequestRead(dpy,
- (xGenericReply *)event);
- bev->send_event = ((event->u.u.type&0x80)!=0);
- bev->display = dpy;
- bev->time = bn->time;
- bev->device = bn->deviceID;
- bev->percent = bn->percent;
- bev->pitch = bn->pitch;
- bev->duration = bn->duration;
- bev->bell_class = bn->bellClass;
- bev->bell_id = bn->bellID;
- bev->name = bn->name;
- bev->window = bn->window;
- bev->event_only = bn->eventOnly;
- return True;
- }
- }
- break;
- case XkbAccessXNotify:
- {
- if (xkbi->selected_events&XkbAccessXNotifyMask) {
- xkbAccessXNotify *axn =(xkbAccessXNotify *)event;
- XkbAccessXNotifyEvent *axev;
- axev =(XkbAccessXNotifyEvent *)re;
- axev->type = XkbEventCode+xkbi->codes->first_event;
- axev->xkb_type = XkbAccessXNotify;
- axev->serial = _XSetLastRequestRead(dpy,
- (xGenericReply *)event);
- axev->send_event = ((event->u.u.type&0x80)!=0);
- axev->display = dpy;
- axev->time = axn->time;
- axev->device = axn->deviceID;
- axev->detail = axn->detail;
- axev->keycode = axn->keycode;
- axev->sk_delay = axn->slowKeysDelay;
- axev->debounce_delay = axn->debounceDelay;
- return True;
- }
- }
- break;
- case XkbNamesNotify:
- {
- if (xkbi->selected_events&XkbNamesNotifyMask) {
- xkbNamesNotify *nn =(xkbNamesNotify *)event;
- XkbNamesNotifyEvent *nev;
- nev =(XkbNamesNotifyEvent *)re;
- nev->type = XkbEventCode+xkbi->codes->first_event;
- nev->xkb_type = XkbNamesNotify;
- nev->serial = _XSetLastRequestRead(dpy,
- (xGenericReply *)event);
- nev->send_event = ((event->u.u.type&0x80)!=0);
- nev->display = dpy;
- nev->time = nn->time;
- nev->device = nn->deviceID;
- nev->changed = nn->changed;
- nev->first_type = nn->firstType;
- nev->num_types = nn->nTypes;
- nev->first_lvl = nn->firstLevelName;
- nev->num_lvls = nn->nLevelNames;
- nev->num_aliases = nn->nAliases;
- nev->num_radio_groups = nn->nRadioGroups;
- nev->changed_vmods = nn->changedVirtualMods;
- nev->changed_groups = nn->changedGroupNames;
- nev->changed_indicators = nn->changedIndicators;
- nev->first_key = nn->firstKey;
- nev->num_keys = nn->nKeys;
- return True;
- }
- }
- break;
- case XkbCompatMapNotify:
- {
- if (xkbi->selected_events&XkbCompatMapNotifyMask) {
- xkbCompatMapNotify *cmn =(xkbCompatMapNotify *)event;
- XkbCompatMapNotifyEvent *cmev;
- cmev =(XkbCompatMapNotifyEvent *)re;
- cmev->type = XkbEventCode+xkbi->codes->first_event;
- cmev->xkb_type = XkbCompatMapNotify;
- cmev->serial = _XSetLastRequestRead(dpy,
- (xGenericReply *)event);
- cmev->send_event = ((event->u.u.type&0x80)!=0);
- cmev->display = dpy;
- cmev->time = cmn->time;
- cmev->device = cmn->deviceID;
- cmev->changed_groups = cmn->changedGroups;
- cmev->first_si = cmn->firstSI;
- cmev->num_si = cmn->nSI;
- cmev->num_total_si = cmn->nTotalSI;
- return True;
- }
- }
- break;
- case XkbActionMessage:
- {
- if (xkbi->selected_events&XkbActionMessageMask) {
- xkbActionMessage *am= (xkbActionMessage *)event;
- XkbActionMessageEvent *amev;
- amev= (XkbActionMessageEvent *)re;
- amev->type = XkbEventCode+xkbi->codes->first_event;
- amev->xkb_type = XkbActionMessage;
- amev->serial = _XSetLastRequestRead(dpy,
- (xGenericReply *)event);
- amev->send_event = ((event->u.u.type&0x80)!=0);
- amev->display = dpy;
- amev->time = am->time;
- amev->device = am->deviceID;
- amev->keycode = am->keycode;
- amev->press = am->press;
- amev->key_event_follows = am->keyEventFollows;
- amev->group = am->group;
- amev->mods = am->mods;
- memcpy(amev->message,am->message,XkbActionMessageLength);
- amev->message[XkbActionMessageLength]= '\0';
- return True;
- }
- }
- break;
- case XkbExtensionDeviceNotify:
- {
- if (xkbi->selected_events&XkbExtensionDeviceNotifyMask) {
- xkbExtensionDeviceNotify *ed=
- (xkbExtensionDeviceNotify *)event;
- XkbExtensionDeviceNotifyEvent *edev;
- edev= (XkbExtensionDeviceNotifyEvent *)re;
- edev->type= XkbEventCode+xkbi->codes->first_event;
- edev->xkb_type= XkbExtensionDeviceNotify;
- edev->serial= _XSetLastRequestRead(dpy,
- (xGenericReply *)event);
- edev->send_event= ((event->u.u.type&0x80)!=0);
- edev->display= dpy;
- edev->time= ed->time;
- edev->device= ed->deviceID;
- edev->led_class= ed->ledClass;
- edev->led_id= ed->ledID;
- edev->reason= ed->reason;
- edev->supported= ed->supported;
- edev->leds_defined= ed->ledsDefined;
- edev->led_state= ed->ledState;
- edev->first_btn= ed->firstBtn;
- edev->num_btns= ed->nBtns;
- edev->unsupported= ed->unsupported;
- return True;
- }
- }
- break;
- case XkbNewKeyboardNotify:
- {
- xkbNewKeyboardNotify *nkn = (xkbNewKeyboardNotify *)event;
- if ((xkbi->selected_events&XkbNewKeyboardNotifyMask)&&
- (xkbi->selected_nkn_details&nkn->changed)) {
- XkbNewKeyboardNotifyEvent *nkev;
- nkev =(XkbNewKeyboardNotifyEvent *)re;
- nkev->type = XkbEventCode+xkbi->codes->first_event;
- nkev->xkb_type = XkbNewKeyboardNotify;
- nkev->serial = _XSetLastRequestRead(dpy,
- (xGenericReply *)event);
- nkev->send_event = ((event->u.u.type&0x80)!=0);
- nkev->display = dpy;
- nkev->time = nkn->time;
- nkev->device = nkn->deviceID;
- nkev->old_device = nkn->oldDeviceID;
- nkev->min_key_code = nkn->minKeyCode;
- nkev->max_key_code = nkn->maxKeyCode;
- nkev->old_min_key_code = nkn->oldMinKeyCode;
- nkev->old_max_key_code = nkn->oldMaxKeyCode;
- nkev->req_major = nkn->requestMajor;
- nkev->req_minor = nkn->requestMinor;
- nkev->changed = nkn->changed;
- if ((xkbi->desc)&&(nkev->send_event==0)&&
- ((xkbi->desc->device_spec==nkev->old_device)||
- (nkev->device!=nkev->old_device))) {
- xkbi->flags= XkbMapPending|XkbXlibNewKeyboard;
- }
- return True;
- }
- else if(nkn->changed&(XkbNKN_KeycodesMask|XkbNKN_DeviceIDMask)){
- register XMappingEvent *ev = (XMappingEvent *)re;
- ev->type = MappingNotify;
- ev->serial = _XSetLastRequestRead(dpy,
- (xGenericReply *)event);
- ev->send_event = ((event->u.u.type&0x80)!=0);
- ev->display = dpy;
- ev->window = 0;
- ev->first_keycode = dpy->min_keycode;
- ev->request = MappingKeyboard;
- ev->count = (dpy->max_keycode-dpy->min_keycode)+1;
- if ((xkbi->desc)&&(ev->send_event==0)&&
- ((xkbi->desc->device_spec==nkn->oldDeviceID)||
- (nkn->deviceID!=nkn->oldDeviceID))) {
- xkbi->flags|= XkbMapPending|XkbXlibNewKeyboard;
- }
- return True;
- }
- }
- break;
- default:
-#ifdef DEBUG
- fprintf(stderr,"Got unknown XKEYBOARD event (%d, base=%d)\n",
- re->type,
- xkbi->codes->first_event);
-#endif
- break;
- }
- return False;
-}
-
-Bool
-XkbIgnoreExtension(Bool ignore)
-{
- if (getenv("XKB_FORCE")!=NULL) {
-#ifdef DEBUG
- fprintf(stderr,"Forcing use of XKEYBOARD (overriding an IgnoreExtensions)\n");
-#endif
- return False;
- }
-#ifdef DEBUG
- else if (getenv("XKB_DEBUG")!=NULL) {
- fprintf(stderr,"Explicitly %signoring XKEYBOARD\n",ignore?"":"not ");
- }
-#endif
- _XkbIgnoreExtension = ignore;
- return True;
-}
-
-static void
-_XkbFreeInfo(Display *dpy)
-{
- XkbInfoPtr xkbi = dpy->xkb_info;
- if (xkbi) {
- if (xkbi->desc)
- XkbFreeKeyboard(xkbi->desc,XkbAllComponentsMask,True);
- Xfree(xkbi);
- }
-}
-
-Bool
-XkbUseExtension(Display *dpy,int *major_rtrn,int *minor_rtrn)
-{
- xkbUseExtensionReply rep;
- register xkbUseExtensionReq *req;
- XExtCodes *codes;
- int ev_base,forceIgnore;
- XkbInfoPtr xkbi;
- char * str;
- static int debugMsg;
- static int been_here= 0;
-
- if ( dpy->xkb_info && !(dpy->flags & XlibDisplayNoXkb)) {
- if (major_rtrn) *major_rtrn= dpy->xkb_info->srv_major;
- if (minor_rtrn) *minor_rtrn= dpy->xkb_info->srv_minor;
- return True;
- }
- if (!been_here) {
- debugMsg= (getenv("XKB_DEBUG")!=NULL);
- been_here= 1;
- }
-
- if (major_rtrn) *major_rtrn= 0;
- if (minor_rtrn) *minor_rtrn= 0;
-
- if (!dpy->xkb_info) {
- xkbi = _XkbTypedCalloc(1, XkbInfoRec);
- if ( !xkbi )
- return False;
- dpy->xkb_info = xkbi;
- dpy->free_funcs->xkb = _XkbFreeInfo;
-
- xkbi->xlib_ctrls|= (XkbLC_ControlFallback|XkbLC_ConsumeLookupMods);
- if ((str=getenv("_XKB_OPTIONS_ENABLE"))!=NULL) {
- if ((str=getenv("_XKB_LATIN1_LOOKUP"))!=NULL) {
- if ((strcmp(str,"off")==0)||(strcmp(str,"0")==0))
- xkbi->xlib_ctrls&= ~XkbLC_ForceLatin1Lookup;
- else xkbi->xlib_ctrls|= XkbLC_ForceLatin1Lookup;
- }
- if ((str=getenv("_XKB_CONSUME_LOOKUP_MODS"))!=NULL) {
- if ((strcmp(str,"off")==0)||(strcmp(str,"0")==0))
- xkbi->xlib_ctrls&= ~XkbLC_ConsumeLookupMods;
- else xkbi->xlib_ctrls|= XkbLC_ConsumeLookupMods;
- }
- if ((str=getenv("_XKB_CONSUME_SHIFT_AND_LOCK"))!=NULL) {
- if ((strcmp(str,"off")==0)||(strcmp(str,"0")==0))
- xkbi->xlib_ctrls&= ~XkbLC_AlwaysConsumeShiftAndLock;
- else xkbi->xlib_ctrls|= XkbLC_AlwaysConsumeShiftAndLock;
- }
- if ((str=getenv("_XKB_IGNORE_NEW_KEYBOARDS"))!=NULL) {
- if ((strcmp(str,"off")==0)||(strcmp(str,"0")==0))
- xkbi->xlib_ctrls&= ~XkbLC_IgnoreNewKeyboards;
- else xkbi->xlib_ctrls|= XkbLC_IgnoreNewKeyboards;
- }
- if ((str=getenv("_XKB_CONTROL_FALLBACK"))!=NULL) {
- if ((strcmp(str,"off")==0)||(strcmp(str,"0")==0))
- xkbi->xlib_ctrls&= ~XkbLC_ControlFallback;
- else xkbi->xlib_ctrls|= XkbLC_ControlFallback;
- }
- if ((str=getenv("_XKB_COMP_LED"))!=NULL) {
- if ((strcmp(str,"off")==0)||(strcmp(str,"0")==0))
- xkbi->xlib_ctrls&= ~XkbLC_ComposeLED;
- else {
- xkbi->xlib_ctrls|= XkbLC_ComposeLED;
- if (strlen(str)>0)
- xkbi->composeLED= XInternAtom(dpy,str,False);
- }
- }
- if ((str=getenv("_XKB_COMP_FAIL_BEEP"))!=NULL) {
- if ((strcmp(str,"off")==0)||(strcmp(str,"0")==0))
- xkbi->xlib_ctrls&= ~XkbLC_BeepOnComposeFail;
- else xkbi->xlib_ctrls|= XkbLC_BeepOnComposeFail;
- }
- }
- if ((xkbi->composeLED==None)&&((xkbi->xlib_ctrls&XkbLC_ComposeLED)!=0))
- xkbi->composeLED= XInternAtom(dpy,"Compose",False);
-#ifdef DEBUG
- if (debugMsg) {
- register unsigned c= xkbi->xlib_ctrls;
- fprintf(stderr,"XKEYBOARD compose: beep on failure is %s, LED is %s\n",
- ((c&XkbLC_BeepOnComposeFail)?"on":"off"),
- ((c&XkbLC_ComposeLED)?"on":"off"));
- fprintf(stderr,"XKEYBOARD XLookupString: %slatin-1, %s lookup modifiers\n",
- ((c&XkbLC_ForceLatin1Lookup)?"allow non-":"force "),
- ((c&XkbLC_ConsumeLookupMods)?"consume":"re-use"));
- fprintf(stderr,
- "XKEYBOARD XLookupString: %sconsume shift and lock, %scontrol fallback\n",
- ((c&XkbLC_AlwaysConsumeShiftAndLock)?"always ":"don't "),
- ((c&XkbLC_ControlFallback)?"":"no "));
-
- }
-#endif
- } else
- xkbi = dpy->xkb_info;
-
- forceIgnore= (dpy->flags&XlibDisplayNoXkb)||dpy->keysyms;
- forceIgnore= forceIgnore&&(major_rtrn==NULL)&&(minor_rtrn==NULL);
- if ( forceIgnore || _XkbIgnoreExtension || getenv("XKB_DISABLE")) {
- LockDisplay(dpy);
- dpy->flags |= XlibDisplayNoXkb;
- UnlockDisplay(dpy);
- if (debugMsg)
- fprintf(stderr,"XKEYBOARD extension disabled or missing\n");
- return False;
- }
-
- if ( (codes=XInitExtension(dpy,XkbName))==NULL ) {
- LockDisplay(dpy);
- dpy->flags |= XlibDisplayNoXkb;
- UnlockDisplay(dpy);
- if (debugMsg)
- fprintf(stderr,"XKEYBOARD extension not present\n");
- return False;
- }
- xkbi->codes = codes;
- LockDisplay(dpy);
-
- GetReq(kbUseExtension, req);
- req->reqType = xkbi->codes->major_opcode;
- req->xkbReqType = X_kbUseExtension;
- req->wantedMajor = XkbMajorVersion;
- req->wantedMinor = XkbMinorVersion;
- if (!_XReply(dpy, (xReply *)&rep, 0, xFalse) || !rep.supported ) {
- Bool fail;
- fail= True;
- if (debugMsg)
- fprintf(stderr,
- "XKEYBOARD version mismatch (want %d.%02d, got %d.%02d)\n",
- XkbMajorVersion,XkbMinorVersion,
- rep.serverMajor, rep.serverMinor);
-
- /* pre-release 0.65 is very close to 1.00 */
- if ((rep.serverMajor==0)&&(rep.serverMinor==65)) {
- if (debugMsg)
- fprintf(stderr,"Trying to fall back to version 0.65...");
- GetReq(kbUseExtension, req);
- req->reqType = xkbi->codes->major_opcode;
- req->xkbReqType = X_kbUseExtension;
- req->wantedMajor = 0;
- req->wantedMinor = 65;
- if ( _XReply(dpy, (xReply *)&rep, 0, xFalse) && rep.supported ) {
- if (debugMsg)
- fprintf(stderr,"succeeded\n");
- fail= False;
- }
- else if (debugMsg) fprintf(stderr,"failed\n");
- }
- if (fail) {
- dpy->flags |= XlibDisplayNoXkb;
- UnlockDisplay(dpy);
- SyncHandle();
- if (major_rtrn) *major_rtrn= rep.serverMajor;
- if (minor_rtrn) *minor_rtrn= rep.serverMinor;
- return False;
- }
- }
-#ifdef DEBUG
- else if ( forceIgnore ) {
- fprintf(stderr,"Internal Error! XkbUseExtension succeeded with forceIgnore set\n");
- }
-#endif
- UnlockDisplay(dpy);
- xkbi->srv_major= rep.serverMajor;
- xkbi->srv_minor= rep.serverMinor;
- if (major_rtrn) *major_rtrn= rep.serverMajor;
- if (minor_rtrn) *minor_rtrn= rep.serverMinor;
- if (debugMsg)
- fprintf(stderr,"XKEYBOARD (version %d.%02d/%d.%02d) OK!\n",
- XkbMajorVersion,XkbMinorVersion,
- rep.serverMajor,rep.serverMinor);
-
- ev_base = codes->first_event;
- XESetWireToEvent(dpy,ev_base+XkbEventCode,wire_to_event);
- SyncHandle();
- return True;
-}
-
+/************************************************************
+Copyright (c) 1993 by Silicon Graphics Computer Systems, Inc.
+
+Permission to use, copy, modify, and distribute this
+software and its documentation for any purpose and without
+fee is hereby granted, provided that the above copyright
+notice appear in all copies and that both that copyright
+notice and this permission notice appear in supporting
+documentation, and that the name of Silicon Graphics not be
+used in advertising or publicity pertaining to distribution
+of the software without specific prior written permission.
+Silicon Graphics makes no representation about the suitability
+of this software for any purpose. It is provided "as is"
+without any express or implied warranty.
+
+SILICON GRAPHICS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS
+SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
+AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON
+GRAPHICS BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL
+DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
+DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
+OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH
+THE USE OR PERFORMANCE OF THIS SOFTWARE.
+
+********************************************************/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include <stdio.h>
+#include <ctype.h>
+
+#ifdef XKB_IN_SERVER
+#define XkbAllocClientMap SrvXkbAllocClientMap
+#define XkbAllocServerMap SrvXkbAllocServerMap
+#define XkbChangeTypesOfKey SrvXkbChangeTypesOfKey
+#define XkbCopyKeyTypes SrvXkbCopyKeyTypes
+#define XkbFreeClientMap SrvXkbFreeClientMap
+#define XkbFreeServerMap SrvXkbFreeServerMap
+#define XkbKeyTypesForCoreSymbols SrvXkbKeyTypesForCoreSymbols
+#define XkbApplyCompatMapToKey SrvXkbApplyCompatMapToKey
+#define XkbResizeKeyActions SrvXkbResizeKeyActions
+#define XkbResizeKeySyms SrvXkbResizeKeySyms
+#define XkbResizeKeyType SrvXkbResizeKeyType
+#define XkbAllocCompatMap SrvXkbAllocCompatMap
+#define XkbAllocControls SrvXkbAllocControls
+#define XkbAllocIndicatorMaps SrvXkbAllocIndicatorMaps
+#define XkbAllocKeyboard SrvXkbAllocKeyboard
+#define XkbAllocNames SrvXkbAllocNames
+#define XkbFreeCompatMap SrvXkbFreeCompatMap
+#define XkbFreeKeyboard SrvXkbFreeKeyboard
+#define XkbFreeNames SrvXkbFreeNames
+#define XkbLatchModifiers SrvXkbLatchModifiers
+#define XkbLatchGroup SrvXkbLatchGroup
+#define XkbVirtualModsToReal SrvXkbVirtualModsToReal
+#define XkbChangeKeycodeRange SrvXkbChangeKeycodeRange
+#define XkbApplyVirtualModChanges SrvXkbApplyVirtualModChanges
+#endif
+
+#include "Xlibint.h"
+#include <X11/extensions/XKBproto.h>
+#include "XKBlibint.h"
+
+static Bool _XkbIgnoreExtension = False;
+
+void
+XkbNoteMapChanges(XkbMapChangesPtr old,XkbMapNotifyEvent *new,unsigned wanted)
+{
+ int first,oldLast,newLast;
+ wanted&= new->changed;
+
+ if (wanted&XkbKeyTypesMask) {
+ if (old->changed&XkbKeyTypesMask) {
+ first = old->first_type;
+ oldLast = old->first_type+old->num_types-1;
+ newLast = new->first_type+new->num_types-1;
+
+ if (new->first_type<first)
+ first = new->first_type;
+ if (oldLast>newLast)
+ newLast= oldLast;
+ old->first_type = first;
+ old->num_types = newLast-first+1;
+ }
+ else {
+ old->first_type= new->first_type;
+ old->num_types = new->num_types;
+ }
+ }
+ if (wanted&XkbKeySymsMask) {
+ if (old->changed&XkbKeySymsMask) {
+ first = old->first_key_sym;
+ oldLast = old->first_key_sym+old->num_key_syms-1;
+ newLast = new->first_key_sym+new->num_key_syms-1;
+
+ if (new->first_key_sym<first)
+ first = new->first_key_sym;
+ if (oldLast>newLast)
+ newLast= oldLast;
+ old->first_key_sym = first;
+ old->num_key_syms = newLast-first+1;
+ }
+ else {
+ old->first_key_sym = new->first_key_sym;
+ old->num_key_syms = new->num_key_syms;
+ }
+ }
+ if (wanted&XkbKeyActionsMask) {
+ if (old->changed&XkbKeyActionsMask) {
+ first = old->first_key_act;
+ oldLast = old->first_key_act+old->num_key_acts-1;
+ newLast = new->first_key_act+new->num_key_acts-1;
+
+ if (new->first_key_act<first)
+ first = new->first_key_act;
+ if (oldLast>newLast)
+ newLast= oldLast;
+ old->first_key_act = first;
+ old->num_key_acts = newLast-first+1;
+ }
+ else {
+ old->first_key_act = new->first_key_act;
+ old->num_key_acts = new->num_key_acts;
+ }
+ }
+ if (wanted&XkbKeyBehaviorsMask) {
+ if (old->changed&XkbKeyBehaviorsMask) {
+ first = old->first_key_behavior;
+ oldLast = old->first_key_behavior+old->num_key_behaviors-1;
+ newLast = new->first_key_behavior+new->num_key_behaviors-1;
+
+ if (new->first_key_behavior<first)
+ first = new->first_key_behavior;
+ if (oldLast>newLast)
+ newLast= oldLast;
+ old->first_key_behavior = first;
+ old->num_key_behaviors = newLast-first+1;
+ }
+ else {
+ old->first_key_behavior = new->first_key_behavior;
+ old->num_key_behaviors = new->num_key_behaviors;
+ }
+ }
+ if (wanted&XkbVirtualModsMask) {
+ old->vmods|= new->vmods;
+ }
+ if (wanted&XkbExplicitComponentsMask) {
+ if (old->changed&XkbExplicitComponentsMask) {
+ first = old->first_key_explicit;
+ oldLast = old->first_key_explicit+old->num_key_explicit-1;
+ newLast = new->first_key_explicit+new->num_key_explicit-1;
+
+ if (new->first_key_explicit<first)
+ first = new->first_key_explicit;
+ if (oldLast>newLast)
+ newLast= oldLast;
+ old->first_key_explicit = first;
+ old->num_key_explicit = newLast-first+1;
+ }
+ else {
+ old->first_key_explicit = new->first_key_explicit;
+ old->num_key_explicit = new->num_key_explicit;
+ }
+ }
+ if (wanted&XkbModifierMapMask) {
+ if (old->changed&XkbModifierMapMask) {
+ first = old->first_modmap_key;
+ oldLast = old->first_modmap_key+old->num_modmap_keys-1;
+ newLast = new->first_modmap_key+new->num_modmap_keys-1;
+
+ if (new->first_modmap_key<first)
+ first = new->first_modmap_key;
+ if (oldLast>newLast)
+ newLast= oldLast;
+ old->first_modmap_key = first;
+ old->num_modmap_keys = newLast-first+1;
+ }
+ else {
+ old->first_modmap_key = new->first_modmap_key;
+ old->num_modmap_keys = new->num_modmap_keys;
+ }
+ }
+ if (wanted&XkbVirtualModMapMask) {
+ if (old->changed&XkbVirtualModMapMask) {
+ first = old->first_vmodmap_key;
+ oldLast = old->first_vmodmap_key+old->num_vmodmap_keys-1;
+ newLast = new->first_vmodmap_key+new->num_vmodmap_keys-1;
+
+ if (new->first_vmodmap_key<first)
+ first = new->first_vmodmap_key;
+ if (oldLast>newLast)
+ newLast= oldLast;
+ old->first_vmodmap_key = first;
+ old->num_vmodmap_keys = newLast-first+1;
+ }
+ else {
+ old->first_vmodmap_key = new->first_vmodmap_key;
+ old->num_vmodmap_keys = new->num_vmodmap_keys;
+ }
+ }
+ old->changed|= wanted;
+ return;
+}
+
+void
+_XkbNoteCoreMapChanges( XkbMapChangesPtr old,
+ XMappingEvent * new,
+ unsigned int wanted)
+{
+ int first,oldLast,newLast;
+
+ if ((new->request==MappingKeyboard)&&(wanted&XkbKeySymsMask)) {
+ if (old->changed&XkbKeySymsMask) {
+ first = old->first_key_sym;
+ oldLast = old->first_key_sym+old->num_key_syms-1;
+ newLast = new->first_keycode+new->count-1;
+
+ if (new->first_keycode<first)
+ first = new->first_keycode;
+ if (oldLast>newLast)
+ newLast= oldLast;
+ old->first_key_sym = first;
+ old->num_key_syms = newLast-first+1;
+ }
+ else {
+ old->changed|= XkbKeySymsMask;
+ old->first_key_sym = new->first_keycode;
+ old->num_key_syms = new->count;
+ }
+ }
+ return;
+}
+
+static Bool
+wire_to_event(Display *dpy,XEvent *re,xEvent *event)
+{
+ xkbEvent *xkbevent= (xkbEvent *)event;
+ XkbInfoPtr xkbi;
+
+ if ((dpy->flags & XlibDisplayNoXkb) ||
+ (!dpy->xkb_info && !XkbUseExtension(dpy,NULL,NULL)))
+ return False;
+ xkbi = dpy->xkb_info;
+ if (((event->u.u.type&0x7f)-xkbi->codes->first_event)!=XkbEventCode)
+ return False;
+
+ switch (xkbevent->u.any.xkbType) {
+ case XkbStateNotify:
+ {
+ xkbStateNotify *sn = (xkbStateNotify *)event;
+ if ( xkbi->selected_events&XkbStateNotifyMask ) {
+ XkbStateNotifyEvent *sev=(XkbStateNotifyEvent *)re;
+ sev->type = XkbEventCode+xkbi->codes->first_event;
+ sev->xkb_type = XkbStateNotify;
+ sev->serial = _XSetLastRequestRead(dpy,
+ (xGenericReply *)event);
+ sev->send_event = ((event->u.u.type & 0x80) != 0);
+ sev->display = dpy;
+ sev->time = sn->time;
+ sev->device = sn->deviceID;
+ sev->keycode = sn->keycode;
+ sev->event_type = sn->eventType;
+ sev->req_major = sn->requestMajor;
+ sev->req_minor = sn->requestMinor;
+ sev->changed = sn->changed;
+ sev->group = sn->group;
+ sev->base_group = sn->baseGroup;
+ sev->latched_group = sn->latchedGroup;
+ sev->locked_group = sn->lockedGroup;
+ sev->mods = sn->mods;
+ sev->base_mods = sn->baseMods;
+ sev->latched_mods = sn->latchedMods;
+ sev->locked_mods = sn->lockedMods;
+ sev->compat_state = sn->compatState;
+ sev->grab_mods = sn->grabMods;
+ sev->compat_grab_mods = sn->compatGrabMods;
+ sev->lookup_mods = sn->lookupMods;
+ sev->compat_lookup_mods = sn->compatLookupMods;
+ sev->ptr_buttons = sn->ptrBtnState;
+ return True;
+ }
+ }
+ break;
+ case XkbMapNotify:
+ {
+ xkbMapNotify *mn = (xkbMapNotify *)event;
+ if ((xkbi->selected_events&XkbMapNotifyMask)&&
+ (xkbi->selected_map_details&mn->changed)) {
+ XkbMapNotifyEvent *mev;
+ mev =(XkbMapNotifyEvent *)re;
+ mev->type = XkbEventCode+xkbi->codes->first_event;
+ mev->xkb_type = XkbMapNotify;
+ mev->serial = _XSetLastRequestRead(dpy,
+ (xGenericReply *)event);
+ mev->send_event = ((event->u.u.type&0x80)!=0);
+ mev->display = dpy;
+ mev->time = mn->time;
+ mev->device = mn->deviceID;
+ mev->changed = mn->changed;
+ mev->min_key_code = mn->minKeyCode;
+ mev->max_key_code = mn->maxKeyCode;
+ mev->first_type = mn->firstType;
+ mev->num_types = mn->nTypes;
+ mev->first_key_sym = mn->firstKeySym;
+ mev->num_key_syms = mn->nKeySyms;
+ mev->first_key_act = mn->firstKeyAct;
+ mev->num_key_acts = mn->nKeyActs;
+ mev->first_key_behavior = mn->firstKeyBehavior;
+ mev->num_key_behaviors = mn->nKeyBehaviors;
+ mev->vmods = mn->virtualMods;
+ mev->first_key_explicit = mn->firstKeyExplicit;
+ mev->num_key_explicit = mn->nKeyExplicit;
+ mev->first_modmap_key = mn->firstModMapKey;
+ mev->num_modmap_keys = mn->nModMapKeys;
+ mev->first_vmodmap_key = mn->firstVModMapKey;
+ mev->num_vmodmap_keys = mn->nVModMapKeys;
+ XkbNoteMapChanges(&xkbi->changes,mev,XKB_XLIB_MAP_MASK);
+ if (xkbi->changes.changed)
+ xkbi->flags|= XkbMapPending;
+ return True;
+ }
+ else if (mn->nKeySyms>0) {
+ register XMappingEvent *ev = (XMappingEvent *)re;
+ ev->type = MappingNotify;
+ ev->serial = _XSetLastRequestRead(dpy,
+ (xGenericReply *)event);
+ ev->send_event = ((event->u.u.type&0x80)!=0);
+ ev->display = dpy;
+ ev->window = 0;
+ ev->first_keycode = mn->firstKeySym;
+ ev->request = MappingKeyboard;
+ ev->count = mn->nKeySyms;
+ _XkbNoteCoreMapChanges(&xkbi->changes,ev,XKB_XLIB_MAP_MASK);
+ if (xkbi->changes.changed)
+ xkbi->flags|= XkbMapPending;
+ return True;
+ }
+ }
+ break;
+ case XkbControlsNotify:
+ {
+ if (xkbi->selected_events&XkbControlsNotifyMask) {
+ xkbControlsNotify *cn =(xkbControlsNotify *)event;
+ XkbControlsNotifyEvent *cev;
+ cev =(XkbControlsNotifyEvent *)re;
+ cev->type = XkbEventCode+xkbi->codes->first_event;
+ cev->xkb_type = XkbControlsNotify;
+ cev->serial = _XSetLastRequestRead(dpy,
+ (xGenericReply *)event);
+ cev->send_event = ((event->u.u.type&0x80)!=0);
+ cev->display = dpy;
+ cev->time = cn->time;
+ cev->device = cn->deviceID;
+ cev->changed_ctrls = cn->changedControls;
+ cev->enabled_ctrls = cn->enabledControls;
+ cev->enabled_ctrl_changes = cn->enabledControlChanges;
+ cev->keycode = cn->keycode;
+ cev->num_groups = cn->numGroups;
+ cev->event_type = cn->eventType;
+ cev->req_major = cn->requestMajor;
+ cev->req_minor = cn->requestMinor;
+ return True;
+ }
+ }
+ break;
+ case XkbIndicatorMapNotify:
+ {
+ if (xkbi->selected_events&XkbIndicatorMapNotifyMask) {
+ xkbIndicatorNotify *in =(xkbIndicatorNotify *)event;
+ XkbIndicatorNotifyEvent *iev;
+ iev =(XkbIndicatorNotifyEvent *)re;
+ iev->type = XkbEventCode+xkbi->codes->first_event;
+ iev->xkb_type = XkbIndicatorMapNotify;
+ iev->serial = _XSetLastRequestRead(dpy,
+ (xGenericReply *)event);
+ iev->send_event = ((event->u.u.type&0x80)!=0);
+ iev->display = dpy;
+ iev->time = in->time;
+ iev->device = in->deviceID;
+ iev->changed = in->changed;
+ iev->state= in->state;
+ return True;
+ }
+ }
+ break;
+ case XkbIndicatorStateNotify:
+ {
+ if (xkbi->selected_events&XkbIndicatorStateNotifyMask) {
+ xkbIndicatorNotify *in =(xkbIndicatorNotify *)event;
+ XkbIndicatorNotifyEvent *iev;
+ iev =(XkbIndicatorNotifyEvent *)re;
+ iev->type = XkbEventCode+xkbi->codes->first_event;
+ iev->xkb_type = XkbIndicatorStateNotify;
+ iev->serial = _XSetLastRequestRead(dpy,
+ (xGenericReply *)event);
+ iev->send_event = ((event->u.u.type&0x80)!=0);
+ iev->display = dpy;
+ iev->time = in->time;
+ iev->device = in->deviceID;
+ iev->changed = in->changed;
+ iev->state= in->state;
+ return True;
+ }
+ }
+ break;
+ case XkbBellNotify:
+ {
+ if (xkbi->selected_events&XkbBellNotifyMask) {
+ xkbBellNotify *bn =(xkbBellNotify *)event;
+ XkbBellNotifyEvent *bev;
+ bev =(XkbBellNotifyEvent *)re;
+ bev->type = XkbEventCode+xkbi->codes->first_event;
+ bev->xkb_type = XkbBellNotify;
+ bev->serial = _XSetLastRequestRead(dpy,
+ (xGenericReply *)event);
+ bev->send_event = ((event->u.u.type&0x80)!=0);
+ bev->display = dpy;
+ bev->time = bn->time;
+ bev->device = bn->deviceID;
+ bev->percent = bn->percent;
+ bev->pitch = bn->pitch;
+ bev->duration = bn->duration;
+ bev->bell_class = bn->bellClass;
+ bev->bell_id = bn->bellID;
+ bev->name = bn->name;
+ bev->window = bn->window;
+ bev->event_only = bn->eventOnly;
+ return True;
+ }
+ }
+ break;
+ case XkbAccessXNotify:
+ {
+ if (xkbi->selected_events&XkbAccessXNotifyMask) {
+ xkbAccessXNotify *axn =(xkbAccessXNotify *)event;
+ XkbAccessXNotifyEvent *axev;
+ axev =(XkbAccessXNotifyEvent *)re;
+ axev->type = XkbEventCode+xkbi->codes->first_event;
+ axev->xkb_type = XkbAccessXNotify;
+ axev->serial = _XSetLastRequestRead(dpy,
+ (xGenericReply *)event);
+ axev->send_event = ((event->u.u.type&0x80)!=0);
+ axev->display = dpy;
+ axev->time = axn->time;
+ axev->device = axn->deviceID;
+ axev->detail = axn->detail;
+ axev->keycode = axn->keycode;
+ axev->sk_delay = axn->slowKeysDelay;
+ axev->debounce_delay = axn->debounceDelay;
+ return True;
+ }
+ }
+ break;
+ case XkbNamesNotify:
+ {
+ if (xkbi->selected_events&XkbNamesNotifyMask) {
+ xkbNamesNotify *nn =(xkbNamesNotify *)event;
+ XkbNamesNotifyEvent *nev;
+ nev =(XkbNamesNotifyEvent *)re;
+ nev->type = XkbEventCode+xkbi->codes->first_event;
+ nev->xkb_type = XkbNamesNotify;
+ nev->serial = _XSetLastRequestRead(dpy,
+ (xGenericReply *)event);
+ nev->send_event = ((event->u.u.type&0x80)!=0);
+ nev->display = dpy;
+ nev->time = nn->time;
+ nev->device = nn->deviceID;
+ nev->changed = nn->changed;
+ nev->first_type = nn->firstType;
+ nev->num_types = nn->nTypes;
+ nev->first_lvl = nn->firstLevelName;
+ nev->num_lvls = nn->nLevelNames;
+ nev->num_aliases = nn->nAliases;
+ nev->num_radio_groups = nn->nRadioGroups;
+ nev->changed_vmods = nn->changedVirtualMods;
+ nev->changed_groups = nn->changedGroupNames;
+ nev->changed_indicators = nn->changedIndicators;
+ nev->first_key = nn->firstKey;
+ nev->num_keys = nn->nKeys;
+ return True;
+ }
+ }
+ break;
+ case XkbCompatMapNotify:
+ {
+ if (xkbi->selected_events&XkbCompatMapNotifyMask) {
+ xkbCompatMapNotify *cmn =(xkbCompatMapNotify *)event;
+ XkbCompatMapNotifyEvent *cmev;
+ cmev =(XkbCompatMapNotifyEvent *)re;
+ cmev->type = XkbEventCode+xkbi->codes->first_event;
+ cmev->xkb_type = XkbCompatMapNotify;
+ cmev->serial = _XSetLastRequestRead(dpy,
+ (xGenericReply *)event);
+ cmev->send_event = ((event->u.u.type&0x80)!=0);
+ cmev->display = dpy;
+ cmev->time = cmn->time;
+ cmev->device = cmn->deviceID;
+ cmev->changed_groups = cmn->changedGroups;
+ cmev->first_si = cmn->firstSI;
+ cmev->num_si = cmn->nSI;
+ cmev->num_total_si = cmn->nTotalSI;
+ return True;
+ }
+ }
+ break;
+ case XkbActionMessage:
+ {
+ if (xkbi->selected_events&XkbActionMessageMask) {
+ xkbActionMessage *am= (xkbActionMessage *)event;
+ XkbActionMessageEvent *amev;
+ amev= (XkbActionMessageEvent *)re;
+ amev->type = XkbEventCode+xkbi->codes->first_event;
+ amev->xkb_type = XkbActionMessage;
+ amev->serial = _XSetLastRequestRead(dpy,
+ (xGenericReply *)event);
+ amev->send_event = ((event->u.u.type&0x80)!=0);
+ amev->display = dpy;
+ amev->time = am->time;
+ amev->device = am->deviceID;
+ amev->keycode = am->keycode;
+ amev->press = am->press;
+ amev->key_event_follows = am->keyEventFollows;
+ amev->group = am->group;
+ amev->mods = am->mods;
+ memcpy(amev->message,am->message,XkbActionMessageLength);
+ amev->message[XkbActionMessageLength]= '\0';
+ return True;
+ }
+ }
+ break;
+ case XkbExtensionDeviceNotify:
+ {
+ if (xkbi->selected_events&XkbExtensionDeviceNotifyMask) {
+ xkbExtensionDeviceNotify *ed=
+ (xkbExtensionDeviceNotify *)event;
+ XkbExtensionDeviceNotifyEvent *edev;
+ edev= (XkbExtensionDeviceNotifyEvent *)re;
+ edev->type= XkbEventCode+xkbi->codes->first_event;
+ edev->xkb_type= XkbExtensionDeviceNotify;
+ edev->serial= _XSetLastRequestRead(dpy,
+ (xGenericReply *)event);
+ edev->send_event= ((event->u.u.type&0x80)!=0);
+ edev->display= dpy;
+ edev->time= ed->time;
+ edev->device= ed->deviceID;
+ edev->led_class= ed->ledClass;
+ edev->led_id= ed->ledID;
+ edev->reason= ed->reason;
+ edev->supported= ed->supported;
+ edev->leds_defined= ed->ledsDefined;
+ edev->led_state= ed->ledState;
+ edev->first_btn= ed->firstBtn;
+ edev->num_btns= ed->nBtns;
+ edev->unsupported= ed->unsupported;
+ return True;
+ }
+ }
+ break;
+ case XkbNewKeyboardNotify:
+ {
+ xkbNewKeyboardNotify *nkn = (xkbNewKeyboardNotify *)event;
+ if ((xkbi->selected_events&XkbNewKeyboardNotifyMask)&&
+ (xkbi->selected_nkn_details&nkn->changed)) {
+ XkbNewKeyboardNotifyEvent *nkev;
+ nkev =(XkbNewKeyboardNotifyEvent *)re;
+ nkev->type = XkbEventCode+xkbi->codes->first_event;
+ nkev->xkb_type = XkbNewKeyboardNotify;
+ nkev->serial = _XSetLastRequestRead(dpy,
+ (xGenericReply *)event);
+ nkev->send_event = ((event->u.u.type&0x80)!=0);
+ nkev->display = dpy;
+ nkev->time = nkn->time;
+ nkev->device = nkn->deviceID;
+ nkev->old_device = nkn->oldDeviceID;
+ nkev->min_key_code = nkn->minKeyCode;
+ nkev->max_key_code = nkn->maxKeyCode;
+ nkev->old_min_key_code = nkn->oldMinKeyCode;
+ nkev->old_max_key_code = nkn->oldMaxKeyCode;
+ nkev->req_major = nkn->requestMajor;
+ nkev->req_minor = nkn->requestMinor;
+ nkev->changed = nkn->changed;
+ if ((xkbi->desc)&&(nkev->send_event==0)&&
+ ((xkbi->desc->device_spec==nkev->old_device)||
+ (nkev->device!=nkev->old_device))) {
+ xkbi->flags= XkbMapPending|XkbXlibNewKeyboard;
+ }
+ return True;
+ }
+ else if(nkn->changed&(XkbNKN_KeycodesMask|XkbNKN_DeviceIDMask)){
+ register XMappingEvent *ev = (XMappingEvent *)re;
+ ev->type = MappingNotify;
+ ev->serial = _XSetLastRequestRead(dpy,
+ (xGenericReply *)event);
+ ev->send_event = ((event->u.u.type&0x80)!=0);
+ ev->display = dpy;
+ ev->window = 0;
+ ev->first_keycode = dpy->min_keycode;
+ ev->request = MappingKeyboard;
+ ev->count = (dpy->max_keycode-dpy->min_keycode)+1;
+ if ((xkbi->desc)&&(ev->send_event==0)&&
+ ((xkbi->desc->device_spec==nkn->oldDeviceID)||
+ (nkn->deviceID!=nkn->oldDeviceID))) {
+ xkbi->flags|= XkbMapPending|XkbXlibNewKeyboard;
+ }
+ return True;
+ }
+ }
+ break;
+ default:
+#ifdef DEBUG
+ fprintf(stderr,"Got unknown XKEYBOARD event (%d, base=%d)\n",
+ re->type,
+ xkbi->codes->first_event);
+#endif
+ break;
+ }
+ return False;
+}
+
+Bool
+XkbIgnoreExtension(Bool ignore)
+{
+ if (getenv("XKB_FORCE")!=NULL) {
+#ifdef DEBUG
+ fprintf(stderr,"Forcing use of XKEYBOARD (overriding an IgnoreExtensions)\n");
+#endif
+ return False;
+ }
+#ifdef DEBUG
+ else if (getenv("XKB_DEBUG")!=NULL) {
+ fprintf(stderr,"Explicitly %signoring XKEYBOARD\n",ignore?"":"not ");
+ }
+#endif
+ _XkbIgnoreExtension = ignore;
+ return True;
+}
+
+static void
+_XkbFreeInfo(Display *dpy)
+{
+ XkbInfoPtr xkbi = dpy->xkb_info;
+ if (xkbi) {
+ if (xkbi->desc)
+ XkbFreeKeyboard(xkbi->desc,XkbAllComponentsMask,True);
+ Xfree(xkbi);
+ }
+}
+
+Bool
+XkbUseExtension(Display *dpy,int *major_rtrn,int *minor_rtrn)
+{
+ xkbUseExtensionReply rep;
+ register xkbUseExtensionReq *req;
+ XExtCodes *codes;
+ int ev_base,forceIgnore;
+ XkbInfoPtr xkbi;
+ char * str;
+ static int debugMsg;
+ static int been_here= 0;
+
+ if ( dpy->xkb_info && !(dpy->flags & XlibDisplayNoXkb)) {
+ if (major_rtrn) *major_rtrn= dpy->xkb_info->srv_major;
+ if (minor_rtrn) *minor_rtrn= dpy->xkb_info->srv_minor;
+ return True;
+ }
+ if (!been_here) {
+ debugMsg= (getenv("XKB_DEBUG")!=NULL);
+ been_here= 1;
+ }
+
+ if (major_rtrn) *major_rtrn= 0;
+ if (minor_rtrn) *minor_rtrn= 0;
+
+ if (!dpy->xkb_info) {
+ xkbi = _XkbTypedCalloc(1, XkbInfoRec);
+ if ( !xkbi )
+ return False;
+ dpy->xkb_info = xkbi;
+ dpy->free_funcs->xkb = _XkbFreeInfo;
+
+ xkbi->xlib_ctrls|= (XkbLC_ControlFallback|XkbLC_ConsumeLookupMods);
+ if ((str=getenv("_XKB_OPTIONS_ENABLE"))!=NULL) {
+ if ((str=getenv("_XKB_LATIN1_LOOKUP"))!=NULL) {
+ if ((strcmp(str,"off")==0)||(strcmp(str,"0")==0))
+ xkbi->xlib_ctrls&= ~XkbLC_ForceLatin1Lookup;
+ else xkbi->xlib_ctrls|= XkbLC_ForceLatin1Lookup;
+ }
+ if ((str=getenv("_XKB_CONSUME_LOOKUP_MODS"))!=NULL) {
+ if ((strcmp(str,"off")==0)||(strcmp(str,"0")==0))
+ xkbi->xlib_ctrls&= ~XkbLC_ConsumeLookupMods;
+ else xkbi->xlib_ctrls|= XkbLC_ConsumeLookupMods;
+ }
+ if ((str=getenv("_XKB_CONSUME_SHIFT_AND_LOCK"))!=NULL) {
+ if ((strcmp(str,"off")==0)||(strcmp(str,"0")==0))
+ xkbi->xlib_ctrls&= ~XkbLC_AlwaysConsumeShiftAndLock;
+ else xkbi->xlib_ctrls|= XkbLC_AlwaysConsumeShiftAndLock;
+ }
+ if ((str=getenv("_XKB_IGNORE_NEW_KEYBOARDS"))!=NULL) {
+ if ((strcmp(str,"off")==0)||(strcmp(str,"0")==0))
+ xkbi->xlib_ctrls&= ~XkbLC_IgnoreNewKeyboards;
+ else xkbi->xlib_ctrls|= XkbLC_IgnoreNewKeyboards;
+ }
+ if ((str=getenv("_XKB_CONTROL_FALLBACK"))!=NULL) {
+ if ((strcmp(str,"off")==0)||(strcmp(str,"0")==0))
+ xkbi->xlib_ctrls&= ~XkbLC_ControlFallback;
+ else xkbi->xlib_ctrls|= XkbLC_ControlFallback;
+ }
+ if ((str=getenv("_XKB_COMP_LED"))!=NULL) {
+ if ((strcmp(str,"off")==0)||(strcmp(str,"0")==0))
+ xkbi->xlib_ctrls&= ~XkbLC_ComposeLED;
+ else {
+ xkbi->xlib_ctrls|= XkbLC_ComposeLED;
+ if (strlen(str)>0)
+ xkbi->composeLED= XInternAtom(dpy,str,False);
+ }
+ }
+ if ((str=getenv("_XKB_COMP_FAIL_BEEP"))!=NULL) {
+ if ((strcmp(str,"off")==0)||(strcmp(str,"0")==0))
+ xkbi->xlib_ctrls&= ~XkbLC_BeepOnComposeFail;
+ else xkbi->xlib_ctrls|= XkbLC_BeepOnComposeFail;
+ }
+ }
+ if ((xkbi->composeLED==None)&&((xkbi->xlib_ctrls&XkbLC_ComposeLED)!=0))
+ xkbi->composeLED= XInternAtom(dpy,"Compose",False);
+#ifdef DEBUG
+ if (debugMsg) {
+ register unsigned c= xkbi->xlib_ctrls;
+ fprintf(stderr,"XKEYBOARD compose: beep on failure is %s, LED is %s\n",
+ ((c&XkbLC_BeepOnComposeFail)?"on":"off"),
+ ((c&XkbLC_ComposeLED)?"on":"off"));
+ fprintf(stderr,"XKEYBOARD XLookupString: %slatin-1, %s lookup modifiers\n",
+ ((c&XkbLC_ForceLatin1Lookup)?"allow non-":"force "),
+ ((c&XkbLC_ConsumeLookupMods)?"consume":"re-use"));
+ fprintf(stderr,
+ "XKEYBOARD XLookupString: %sconsume shift and lock, %scontrol fallback\n",
+ ((c&XkbLC_AlwaysConsumeShiftAndLock)?"always ":"don't "),
+ ((c&XkbLC_ControlFallback)?"":"no "));
+
+ }
+#endif
+ } else
+ xkbi = dpy->xkb_info;
+
+ forceIgnore= (dpy->flags&XlibDisplayNoXkb)||dpy->keysyms;
+ forceIgnore= forceIgnore&&(major_rtrn==NULL)&&(minor_rtrn==NULL);
+ if ( forceIgnore || _XkbIgnoreExtension || getenv("XKB_DISABLE")) {
+ LockDisplay(dpy);
+ dpy->flags |= XlibDisplayNoXkb;
+ UnlockDisplay(dpy);
+ if (debugMsg)
+ fprintf(stderr,"XKEYBOARD extension disabled or missing\n");
+ return False;
+ }
+
+ if ( (codes=XInitExtension(dpy,XkbName))==NULL ) {
+ LockDisplay(dpy);
+ dpy->flags |= XlibDisplayNoXkb;
+ UnlockDisplay(dpy);
+ if (debugMsg)
+ fprintf(stderr,"XKEYBOARD extension not present\n");
+ return False;
+ }
+ xkbi->codes = codes;
+ LockDisplay(dpy);
+
+ GetReq(kbUseExtension, req);
+ req->reqType = xkbi->codes->major_opcode;
+ req->xkbReqType = X_kbUseExtension;
+ req->wantedMajor = XkbMajorVersion;
+ req->wantedMinor = XkbMinorVersion;
+ if (!_XReply(dpy, (xReply *)&rep, 0, xFalse) || !rep.supported ) {
+ Bool fail;
+ fail= True;
+ if (debugMsg)
+ fprintf(stderr,
+ "XKEYBOARD version mismatch (want %d.%02d, got %d.%02d)\n",
+ XkbMajorVersion,XkbMinorVersion,
+ rep.serverMajor, rep.serverMinor);
+
+ /* pre-release 0.65 is very close to 1.00 */
+ if ((rep.serverMajor==0)&&(rep.serverMinor==65)) {
+ if (debugMsg)
+ fprintf(stderr,"Trying to fall back to version 0.65...");
+ GetReq(kbUseExtension, req);
+ req->reqType = xkbi->codes->major_opcode;
+ req->xkbReqType = X_kbUseExtension;
+ req->wantedMajor = 0;
+ req->wantedMinor = 65;
+ if ( _XReply(dpy, (xReply *)&rep, 0, xFalse) && rep.supported ) {
+ if (debugMsg)
+ fprintf(stderr,"succeeded\n");
+ fail= False;
+ }
+ else if (debugMsg) fprintf(stderr,"failed\n");
+ }
+ if (fail) {
+ dpy->flags |= XlibDisplayNoXkb;
+ UnlockDisplay(dpy);
+ SyncHandle();
+ if (major_rtrn) *major_rtrn= rep.serverMajor;
+ if (minor_rtrn) *minor_rtrn= rep.serverMinor;
+ return False;
+ }
+ }
+#ifdef DEBUG
+ else if ( forceIgnore ) {
+ fprintf(stderr,"Internal Error! XkbUseExtension succeeded with forceIgnore set\n");
+ }
+#endif
+ UnlockDisplay(dpy);
+ xkbi->srv_major= rep.serverMajor;
+ xkbi->srv_minor= rep.serverMinor;
+ if (major_rtrn) *major_rtrn= rep.serverMajor;
+ if (minor_rtrn) *minor_rtrn= rep.serverMinor;
+ if (debugMsg)
+ fprintf(stderr,"XKEYBOARD (version %d.%02d/%d.%02d) OK!\n",
+ XkbMajorVersion,XkbMinorVersion,
+ rep.serverMajor,rep.serverMinor);
+
+ ev_base = codes->first_event;
+ XESetWireToEvent(dpy,ev_base+XkbEventCode,wire_to_event);
+ SyncHandle();
+ return True;
+}
+
diff --git a/libX11/src/xkb/XKBleds.c b/libX11/src/xkb/XKBleds.c
index 47811a5c7..d9b743c6f 100644
--- a/libX11/src/xkb/XKBleds.c
+++ b/libX11/src/xkb/XKBleds.c
@@ -1,333 +1,333 @@
-/************************************************************
-Copyright (c) 1993 by Silicon Graphics Computer Systems, Inc.
-
-Permission to use, copy, modify, and distribute this
-software and its documentation for any purpose and without
-fee is hereby granted, provided that the above copyright
-notice appear in all copies and that both that copyright
-notice and this permission notice appear in supporting
-documentation, and that the name of Silicon Graphics not be
-used in advertising or publicity pertaining to distribution
-of the software without specific prior written permission.
-Silicon Graphics makes no representation about the suitability
-of this software for any purpose. It is provided "as is"
-without any express or implied warranty.
-
-SILICON GRAPHICS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS
-SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
-AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON
-GRAPHICS BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL
-DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
-DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
-OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH
-THE USE OR PERFORMANCE OF THIS SOFTWARE.
-
-********************************************************/
-
-#define NEED_MAP_READERS
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-#include <X11/extensions/XKBproto.h>
-#include "XKBlibint.h"
-
-Status
-XkbGetIndicatorState(Display *dpy,unsigned deviceSpec,unsigned *pStateRtrn)
-{
- register xkbGetIndicatorStateReq *req;
- xkbGetIndicatorStateReply rep;
- XkbInfoPtr xkbi;
- Bool ok;
-
- if ((dpy->flags & XlibDisplayNoXkb) ||
- (!dpy->xkb_info && !XkbUseExtension(dpy,NULL,NULL)))
- return BadAccess;
- LockDisplay(dpy);
- xkbi = dpy->xkb_info;
- GetReq(kbGetIndicatorState, req);
- req->reqType = xkbi->codes->major_opcode;
- req->xkbReqType = X_kbGetIndicatorState;
- req->deviceSpec = deviceSpec;
- ok=_XReply(dpy, (xReply *)&rep, 0, xFalse);
- if (ok && (pStateRtrn!=NULL))
- *pStateRtrn= rep.state;
- UnlockDisplay(dpy);
- SyncHandle();
- return (ok?Success:BadImplementation);
-}
-
-Status
-_XkbReadGetIndicatorMapReply( Display * dpy,
- xkbGetIndicatorMapReply * rep,
- XkbDescPtr xkb,
- int * nread_rtrn)
-{
-XkbIndicatorPtr leds;
-XkbReadBufferRec buf;
-
- if ((!xkb->indicators)&&(XkbAllocIndicatorMaps(xkb)!=Success))
- return BadAlloc;
- leds= xkb->indicators;
-
- leds->phys_indicators = rep->realIndicators;
- if (rep->length>0) {
- register int left;
- if (!_XkbInitReadBuffer(dpy,&buf,(int)rep->length*4))
- return BadAlloc;
- if (nread_rtrn)
- *nread_rtrn= (int)rep->length*4;
- if (rep->which) {
- register int i,bit;
- left= (int)rep->which;
- for (i=0,bit=1;(i<XkbNumIndicators)&&(left);i++,bit<<=1) {
- if (left&bit) {
- xkbIndicatorMapWireDesc *wire;
- wire= (xkbIndicatorMapWireDesc *)
- _XkbGetReadBufferPtr(&buf,
- SIZEOF(xkbIndicatorMapWireDesc));
- if (wire==NULL) {
- _XkbFreeReadBuffer(&buf);
- return BadAlloc;
- }
- leds->maps[i].flags= wire->flags;
- leds->maps[i].which_groups= wire->whichGroups;
- leds->maps[i].groups= wire->groups;
- leds->maps[i].which_mods= wire->whichMods;
- leds->maps[i].mods.mask= wire->mods;
- leds->maps[i].mods.real_mods= wire->realMods;
- leds->maps[i].mods.vmods= wire->virtualMods;
- leds->maps[i].ctrls= wire->ctrls;
- left&= ~bit;
- }
- }
- }
- left= _XkbFreeReadBuffer(&buf);
- }
- return Success;
-}
-
-Bool
-XkbGetIndicatorMap(Display *dpy,unsigned long which,XkbDescPtr xkb)
-{
- register xkbGetIndicatorMapReq * req;
- xkbGetIndicatorMapReply rep;
- XkbInfoPtr xkbi;
- Status status;
-
- if ((dpy->flags & XlibDisplayNoXkb) ||
- (!dpy->xkb_info && !XkbUseExtension(dpy,NULL,NULL)))
- return BadAccess;
- if ((!which)||(!xkb))
- return BadValue;
-
- LockDisplay(dpy);
- xkbi = dpy->xkb_info;
- if (!xkb->indicators) {
- xkb->indicators = _XkbTypedCalloc(1,XkbIndicatorRec);
- if (!xkb->indicators) {
- UnlockDisplay(dpy);
- SyncHandle();
- return BadAlloc;
- }
- }
- GetReq(kbGetIndicatorMap, req);
- req->reqType = xkbi->codes->major_opcode;
- req->xkbReqType = X_kbGetIndicatorMap;
- req->deviceSpec = xkb->device_spec;
- req->which = (CARD32)which;
- if (!_XReply(dpy, (xReply *)&rep, 0, xFalse)) {
- UnlockDisplay(dpy);
- SyncHandle();
- return BadValue;
- }
- status= _XkbReadGetIndicatorMapReply(dpy,&rep,xkb,NULL);
- UnlockDisplay(dpy);
- SyncHandle();
- return status;
-}
-
-Bool
-XkbSetIndicatorMap(Display *dpy,unsigned long which,XkbDescPtr xkb)
-{
- register xkbSetIndicatorMapReq *req;
- register int i,bit;
- int nMaps;
- xkbIndicatorMapWireDesc *wire;
- XkbInfoPtr xkbi;
-
- if ((dpy->flags & XlibDisplayNoXkb) ||
- (!dpy->xkb_info && !XkbUseExtension(dpy,NULL,NULL)))
- return False;
- if ((!xkb)||(!which)||(!xkb->indicators))
- return False;
- LockDisplay(dpy);
- xkbi = dpy->xkb_info;
- GetReq(kbSetIndicatorMap, req);
- req->reqType = xkbi->codes->major_opcode;
- req->xkbReqType = X_kbSetIndicatorMap;
- req->deviceSpec = xkb->device_spec;
- req->which = (CARD32)which;
- for (i=nMaps=0,bit=1;i<32;i++,bit<<=1) {
- if (which&bit)
- nMaps++;
- }
- req->length+= (nMaps*sizeof(XkbIndicatorMapRec))/4;
- BufAlloc(xkbIndicatorMapWireDesc *,wire,
- (nMaps*SIZEOF(xkbIndicatorMapWireDesc)));
- for (i=0,bit=1;i<32;i++,bit<<=1) {
- if (which&bit) {
- wire->flags= xkb->indicators->maps[i].flags;
- wire->whichGroups= xkb->indicators->maps[i].which_groups;
- wire->groups= xkb->indicators->maps[i].groups;
- wire->whichMods= xkb->indicators->maps[i].which_mods;
- wire->mods= xkb->indicators->maps[i].mods.real_mods;
- wire->virtualMods= xkb->indicators->maps[i].mods.vmods;
- wire->ctrls= xkb->indicators->maps[i].ctrls;
- wire++;
- }
- }
- UnlockDisplay(dpy);
- SyncHandle();
- return True;
-}
-
-Bool
-XkbGetNamedDeviceIndicator( Display * dpy,
- unsigned device,
- unsigned class,
- unsigned id,
- Atom name,
- int * pNdxRtrn,
- Bool * pStateRtrn,
- XkbIndicatorMapPtr pMapRtrn,
- Bool * pRealRtrn)
-{
- register xkbGetNamedIndicatorReq *req;
- xkbGetNamedIndicatorReply rep;
- XkbInfoPtr xkbi;
-
- if ((dpy->flags & XlibDisplayNoXkb) || (name==None) ||
- (!dpy->xkb_info && !XkbUseExtension(dpy,NULL,NULL)))
- return False;
- LockDisplay(dpy);
- xkbi = dpy->xkb_info;
- GetReq(kbGetNamedIndicator, req);
- req->reqType = xkbi->codes->major_opcode;
- req->xkbReqType = X_kbGetNamedIndicator;
- req->deviceSpec = device;
- req->ledClass = class;
- req->ledID = id;
- req->indicator = (CARD32)name;
- if (!_XReply(dpy, (xReply *)&rep, 0, xFalse)) {
- UnlockDisplay(dpy);
- SyncHandle();
- return False;
- }
- UnlockDisplay(dpy);
- SyncHandle();
- if ((!rep.found)||(!rep.supported))
- return False;
- if (pNdxRtrn!=NULL)
- *pNdxRtrn= rep.ndx;
- if (pStateRtrn!=NULL)
- *pStateRtrn= rep.on;
- if (pMapRtrn!=NULL) {
- pMapRtrn->flags= rep.flags;
- pMapRtrn->which_groups= rep.whichGroups;
- pMapRtrn->groups= rep.groups;
- pMapRtrn->which_mods= rep.whichMods;
- pMapRtrn->mods.mask= rep.mods;
- pMapRtrn->mods.real_mods= rep.realMods;
- pMapRtrn->mods.vmods= rep.virtualMods;
- pMapRtrn->ctrls= rep.ctrls;
- }
- if (pRealRtrn!=NULL)
- *pRealRtrn= rep.realIndicator;
- return True;
-}
-
-Bool
-XkbGetNamedIndicator( Display * dpy,
- Atom name,
- int * pNdxRtrn,
- Bool * pStateRtrn,
- XkbIndicatorMapPtr pMapRtrn,
- Bool * pRealRtrn)
-{
- return XkbGetNamedDeviceIndicator(dpy,XkbUseCoreKbd,
- XkbDfltXIClass,XkbDfltXIId,
- name,pNdxRtrn,pStateRtrn,
- pMapRtrn,pRealRtrn);
-}
-
-Bool
-XkbSetNamedDeviceIndicator( Display * dpy,
- unsigned device,
- unsigned class,
- unsigned id,
- Atom name,
- Bool changeState,
- Bool state,
- Bool createNewMap,
- XkbIndicatorMapPtr pMap)
-{
- register xkbSetNamedIndicatorReq *req;
- XkbInfoPtr xkbi;
-
- if ((dpy->flags & XlibDisplayNoXkb) || (name==None) ||
- (!dpy->xkb_info && !XkbUseExtension(dpy,NULL,NULL)))
- return False;
- LockDisplay(dpy);
- xkbi = dpy->xkb_info;
- GetReq(kbSetNamedIndicator, req);
- req->reqType = xkbi->codes->major_opcode;
- req->xkbReqType = X_kbSetNamedIndicator;
- req->deviceSpec = device;
- req->ledClass = class;
- req->ledID = id;
- req->indicator= (CARD32)name;
- req->setState= changeState;
- if (req->setState)
- req->on= state;
- else req->on= False;
- if (pMap!=NULL) {
- req->setMap= True;
- req->createMap= createNewMap;
- req->flags= pMap->flags;
- req->whichGroups= pMap->which_groups;
- req->groups= pMap->groups;
- req->whichMods= pMap->which_mods;
- req->realMods= pMap->mods.real_mods;
- req->virtualMods= pMap->mods.vmods;
- req->ctrls= pMap->ctrls;
- }
- else {
- req->setMap= False;
- req->createMap= False;
- req->flags= 0;
- req->whichGroups= 0;
- req->groups= 0;
- req->whichMods= 0;
- req->realMods= 0;
- req->virtualMods= 0;
- req->ctrls= 0;
- }
- UnlockDisplay(dpy);
- SyncHandle();
- return True;
-}
-
-Bool
-XkbSetNamedIndicator( Display * dpy,
- Atom name,
- Bool changeState,
- Bool state,
- Bool createNewMap,
- XkbIndicatorMapPtr pMap)
-{
- return XkbSetNamedDeviceIndicator(dpy,XkbUseCoreKbd,
- XkbDfltXIClass,XkbDfltXIId,
- name,changeState,state,
- createNewMap,pMap);
-}
+/************************************************************
+Copyright (c) 1993 by Silicon Graphics Computer Systems, Inc.
+
+Permission to use, copy, modify, and distribute this
+software and its documentation for any purpose and without
+fee is hereby granted, provided that the above copyright
+notice appear in all copies and that both that copyright
+notice and this permission notice appear in supporting
+documentation, and that the name of Silicon Graphics not be
+used in advertising or publicity pertaining to distribution
+of the software without specific prior written permission.
+Silicon Graphics makes no representation about the suitability
+of this software for any purpose. It is provided "as is"
+without any express or implied warranty.
+
+SILICON GRAPHICS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS
+SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
+AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON
+GRAPHICS BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL
+DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
+DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
+OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH
+THE USE OR PERFORMANCE OF THIS SOFTWARE.
+
+********************************************************/
+
+#define NEED_MAP_READERS
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+#include <X11/extensions/XKBproto.h>
+#include "XKBlibint.h"
+
+Status
+XkbGetIndicatorState(Display *dpy,unsigned deviceSpec,unsigned *pStateRtrn)
+{
+ register xkbGetIndicatorStateReq *req;
+ xkbGetIndicatorStateReply rep;
+ XkbInfoPtr xkbi;
+ Bool ok;
+
+ if ((dpy->flags & XlibDisplayNoXkb) ||
+ (!dpy->xkb_info && !XkbUseExtension(dpy,NULL,NULL)))
+ return BadAccess;
+ LockDisplay(dpy);
+ xkbi = dpy->xkb_info;
+ GetReq(kbGetIndicatorState, req);
+ req->reqType = xkbi->codes->major_opcode;
+ req->xkbReqType = X_kbGetIndicatorState;
+ req->deviceSpec = deviceSpec;
+ ok=_XReply(dpy, (xReply *)&rep, 0, xFalse);
+ if (ok && (pStateRtrn!=NULL))
+ *pStateRtrn= rep.state;
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return (ok?Success:BadImplementation);
+}
+
+Status
+_XkbReadGetIndicatorMapReply( Display * dpy,
+ xkbGetIndicatorMapReply * rep,
+ XkbDescPtr xkb,
+ int * nread_rtrn)
+{
+XkbIndicatorPtr leds;
+XkbReadBufferRec buf;
+
+ if ((!xkb->indicators)&&(XkbAllocIndicatorMaps(xkb)!=Success))
+ return BadAlloc;
+ leds= xkb->indicators;
+
+ leds->phys_indicators = rep->realIndicators;
+ if (rep->length>0) {
+ register int left;
+ if (!_XkbInitReadBuffer(dpy,&buf,(int)rep->length*4))
+ return BadAlloc;
+ if (nread_rtrn)
+ *nread_rtrn= (int)rep->length*4;
+ if (rep->which) {
+ register int i,bit;
+ left= (int)rep->which;
+ for (i=0,bit=1;(i<XkbNumIndicators)&&(left);i++,bit<<=1) {
+ if (left&bit) {
+ xkbIndicatorMapWireDesc *wire;
+ wire= (xkbIndicatorMapWireDesc *)
+ _XkbGetReadBufferPtr(&buf,
+ SIZEOF(xkbIndicatorMapWireDesc));
+ if (wire==NULL) {
+ _XkbFreeReadBuffer(&buf);
+ return BadAlloc;
+ }
+ leds->maps[i].flags= wire->flags;
+ leds->maps[i].which_groups= wire->whichGroups;
+ leds->maps[i].groups= wire->groups;
+ leds->maps[i].which_mods= wire->whichMods;
+ leds->maps[i].mods.mask= wire->mods;
+ leds->maps[i].mods.real_mods= wire->realMods;
+ leds->maps[i].mods.vmods= wire->virtualMods;
+ leds->maps[i].ctrls= wire->ctrls;
+ left&= ~bit;
+ }
+ }
+ }
+ left= _XkbFreeReadBuffer(&buf);
+ }
+ return Success;
+}
+
+Bool
+XkbGetIndicatorMap(Display *dpy,unsigned long which,XkbDescPtr xkb)
+{
+ register xkbGetIndicatorMapReq * req;
+ xkbGetIndicatorMapReply rep;
+ XkbInfoPtr xkbi;
+ Status status;
+
+ if ((dpy->flags & XlibDisplayNoXkb) ||
+ (!dpy->xkb_info && !XkbUseExtension(dpy,NULL,NULL)))
+ return BadAccess;
+ if ((!which)||(!xkb))
+ return BadValue;
+
+ LockDisplay(dpy);
+ xkbi = dpy->xkb_info;
+ if (!xkb->indicators) {
+ xkb->indicators = _XkbTypedCalloc(1,XkbIndicatorRec);
+ if (!xkb->indicators) {
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return BadAlloc;
+ }
+ }
+ GetReq(kbGetIndicatorMap, req);
+ req->reqType = xkbi->codes->major_opcode;
+ req->xkbReqType = X_kbGetIndicatorMap;
+ req->deviceSpec = xkb->device_spec;
+ req->which = (CARD32)which;
+ if (!_XReply(dpy, (xReply *)&rep, 0, xFalse)) {
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return BadValue;
+ }
+ status= _XkbReadGetIndicatorMapReply(dpy,&rep,xkb,NULL);
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return status;
+}
+
+Bool
+XkbSetIndicatorMap(Display *dpy,unsigned long which,XkbDescPtr xkb)
+{
+ register xkbSetIndicatorMapReq *req;
+ register int i,bit;
+ int nMaps;
+ xkbIndicatorMapWireDesc *wire;
+ XkbInfoPtr xkbi;
+
+ if ((dpy->flags & XlibDisplayNoXkb) ||
+ (!dpy->xkb_info && !XkbUseExtension(dpy,NULL,NULL)))
+ return False;
+ if ((!xkb)||(!which)||(!xkb->indicators))
+ return False;
+ LockDisplay(dpy);
+ xkbi = dpy->xkb_info;
+ GetReq(kbSetIndicatorMap, req);
+ req->reqType = xkbi->codes->major_opcode;
+ req->xkbReqType = X_kbSetIndicatorMap;
+ req->deviceSpec = xkb->device_spec;
+ req->which = (CARD32)which;
+ for (i=nMaps=0,bit=1;i<32;i++,bit<<=1) {
+ if (which&bit)
+ nMaps++;
+ }
+ req->length+= (nMaps*sizeof(XkbIndicatorMapRec))/4;
+ BufAlloc(xkbIndicatorMapWireDesc *,wire,
+ (nMaps*SIZEOF(xkbIndicatorMapWireDesc)));
+ for (i=0,bit=1;i<32;i++,bit<<=1) {
+ if (which&bit) {
+ wire->flags= xkb->indicators->maps[i].flags;
+ wire->whichGroups= xkb->indicators->maps[i].which_groups;
+ wire->groups= xkb->indicators->maps[i].groups;
+ wire->whichMods= xkb->indicators->maps[i].which_mods;
+ wire->mods= xkb->indicators->maps[i].mods.real_mods;
+ wire->virtualMods= xkb->indicators->maps[i].mods.vmods;
+ wire->ctrls= xkb->indicators->maps[i].ctrls;
+ wire++;
+ }
+ }
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return True;
+}
+
+Bool
+XkbGetNamedDeviceIndicator( Display * dpy,
+ unsigned device,
+ unsigned class,
+ unsigned id,
+ Atom name,
+ int * pNdxRtrn,
+ Bool * pStateRtrn,
+ XkbIndicatorMapPtr pMapRtrn,
+ Bool * pRealRtrn)
+{
+ register xkbGetNamedIndicatorReq *req;
+ xkbGetNamedIndicatorReply rep;
+ XkbInfoPtr xkbi;
+
+ if ((dpy->flags & XlibDisplayNoXkb) || (name==None) ||
+ (!dpy->xkb_info && !XkbUseExtension(dpy,NULL,NULL)))
+ return False;
+ LockDisplay(dpy);
+ xkbi = dpy->xkb_info;
+ GetReq(kbGetNamedIndicator, req);
+ req->reqType = xkbi->codes->major_opcode;
+ req->xkbReqType = X_kbGetNamedIndicator;
+ req->deviceSpec = device;
+ req->ledClass = class;
+ req->ledID = id;
+ req->indicator = (CARD32)name;
+ if (!_XReply(dpy, (xReply *)&rep, 0, xFalse)) {
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return False;
+ }
+ UnlockDisplay(dpy);
+ SyncHandle();
+ if ((!rep.found)||(!rep.supported))
+ return False;
+ if (pNdxRtrn!=NULL)
+ *pNdxRtrn= rep.ndx;
+ if (pStateRtrn!=NULL)
+ *pStateRtrn= rep.on;
+ if (pMapRtrn!=NULL) {
+ pMapRtrn->flags= rep.flags;
+ pMapRtrn->which_groups= rep.whichGroups;
+ pMapRtrn->groups= rep.groups;
+ pMapRtrn->which_mods= rep.whichMods;
+ pMapRtrn->mods.mask= rep.mods;
+ pMapRtrn->mods.real_mods= rep.realMods;
+ pMapRtrn->mods.vmods= rep.virtualMods;
+ pMapRtrn->ctrls= rep.ctrls;
+ }
+ if (pRealRtrn!=NULL)
+ *pRealRtrn= rep.realIndicator;
+ return True;
+}
+
+Bool
+XkbGetNamedIndicator( Display * dpy,
+ Atom name,
+ int * pNdxRtrn,
+ Bool * pStateRtrn,
+ XkbIndicatorMapPtr pMapRtrn,
+ Bool * pRealRtrn)
+{
+ return XkbGetNamedDeviceIndicator(dpy,XkbUseCoreKbd,
+ XkbDfltXIClass,XkbDfltXIId,
+ name,pNdxRtrn,pStateRtrn,
+ pMapRtrn,pRealRtrn);
+}
+
+Bool
+XkbSetNamedDeviceIndicator( Display * dpy,
+ unsigned device,
+ unsigned class,
+ unsigned id,
+ Atom name,
+ Bool changeState,
+ Bool state,
+ Bool createNewMap,
+ XkbIndicatorMapPtr pMap)
+{
+ register xkbSetNamedIndicatorReq *req;
+ XkbInfoPtr xkbi;
+
+ if ((dpy->flags & XlibDisplayNoXkb) || (name==None) ||
+ (!dpy->xkb_info && !XkbUseExtension(dpy,NULL,NULL)))
+ return False;
+ LockDisplay(dpy);
+ xkbi = dpy->xkb_info;
+ GetReq(kbSetNamedIndicator, req);
+ req->reqType = xkbi->codes->major_opcode;
+ req->xkbReqType = X_kbSetNamedIndicator;
+ req->deviceSpec = device;
+ req->ledClass = class;
+ req->ledID = id;
+ req->indicator= (CARD32)name;
+ req->setState= changeState;
+ if (req->setState)
+ req->on= state;
+ else req->on= False;
+ if (pMap!=NULL) {
+ req->setMap= True;
+ req->createMap= createNewMap;
+ req->flags= pMap->flags;
+ req->whichGroups= pMap->which_groups;
+ req->groups= pMap->groups;
+ req->whichMods= pMap->which_mods;
+ req->realMods= pMap->mods.real_mods;
+ req->virtualMods= pMap->mods.vmods;
+ req->ctrls= pMap->ctrls;
+ }
+ else {
+ req->setMap= False;
+ req->createMap= False;
+ req->flags= 0;
+ req->whichGroups= 0;
+ req->groups= 0;
+ req->whichMods= 0;
+ req->realMods= 0;
+ req->virtualMods= 0;
+ req->ctrls= 0;
+ }
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return True;
+}
+
+Bool
+XkbSetNamedIndicator( Display * dpy,
+ Atom name,
+ Bool changeState,
+ Bool state,
+ Bool createNewMap,
+ XkbIndicatorMapPtr pMap)
+{
+ return XkbSetNamedDeviceIndicator(dpy,XkbUseCoreKbd,
+ XkbDfltXIClass,XkbDfltXIId,
+ name,changeState,state,
+ createNewMap,pMap);
+}
diff --git a/libX11/src/xkb/XKBlibint.h b/libX11/src/xkb/XKBlibint.h
index bb39f7a22..ce145276c 100644
--- a/libX11/src/xkb/XKBlibint.h
+++ b/libX11/src/xkb/XKBlibint.h
@@ -1,343 +1,343 @@
-/************************************************************
-Copyright (c) 1993 by Silicon Graphics Computer Systems, Inc.
-
-Permission to use, copy, modify, and distribute this
-software and its documentation for any purpose and without
-fee is hereby granted, provided that the above copyright
-notice appear in all copies and that both that copyright
-notice and this permission notice appear in supporting
-documentation, and that the name of Silicon Graphics not be
-used in advertising or publicity pertaining to distribution
-of the software without specific prior written permission.
-Silicon Graphics makes no representation about the suitability
-of this software for any purpose. It is provided "as is"
-without any express or implied warranty.
-
-SILICON GRAPHICS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS
-SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
-AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON
-GRAPHICS BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL
-DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
-DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
-OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH
-THE USE OR PERFORMANCE OF THIS SOFTWARE.
-
-********************************************************/
-
-#ifndef _XKBLIBINT_H_
-#define _XKBLIBINT_H_
-
-#include <X11/Xutil.h>
-#include <X11/XKBlib.h>
-
-#define XkbMapPending (1<<0)
-#define XkbXlibNewKeyboard (1<<1)
-
-typedef int (*XkbKSToMBFunc)(
- XPointer /* priv */,
- KeySym /* sym */,
- char * /* buf */,
- int /* len */,
- int * /* extra_rtrn */
-);
-
-typedef KeySym (*XkbMBToKSFunc)(
- XPointer /* priv */,
- char * /* buf */,
- int /* len */,
- Status * /* status */
-);
-
-typedef KeySym (*XkbToUpperFunc)(
- KeySym /* sym */
-);
-
-typedef struct _XkbConverters {
- XkbKSToMBFunc KSToMB;
- XPointer KSToMBPriv;
- XkbMBToKSFunc MBToKS;
- XPointer MBToKSPriv;
- XkbToUpperFunc KSToUpper;
-} XkbConverters;
-
-extern XkbInternAtomFunc _XkbInternAtomFunc;
-extern XkbGetAtomNameFunc _XkbGetAtomNameFunc;
-
-typedef struct _XkbInfoRec {
- unsigned flags;
- unsigned xlib_ctrls;
- XExtCodes *codes;
- int srv_major;
- int srv_minor;
- unsigned selected_events;
- unsigned short selected_nkn_details;
- unsigned short selected_map_details;
- XkbDescRec *desc;
- XkbMapChangesRec changes;
- Atom composeLED;
- XkbConverters cvt;
- XkbConverters latin1cvt;
-} XkbInfoRec, *XkbInfoPtr;
-
-
-#define _XkbUnavailable(d) \
- (((d)->flags&XlibDisplayNoXkb) ||\
- ((!(d)->xkb_info || (!(d)->xkb_info->desc)) && !_XkbLoadDpy(d)))
-
-#define _XkbCheckPendingRefresh(d,xi) {\
- if ((xi)->flags&XkbXlibNewKeyboard)\
- _XkbReloadDpy((d));\
- else if ((xi)->flags&XkbMapPending) {\
- if (XkbGetMapChanges((d),(xi)->desc, &(xi)->changes)==Success) {\
- LockDisplay((d));\
- (xi)->changes.changed= 0;\
- UnlockDisplay((d));\
- }\
- }\
-}
-
-#define _XkbNeedModmap(i) ((!(i)->desc->map)||(!(i)->desc->map->modmap))
-
- /*
- * mask of the events that the "invisible" XKB support in Xlib needs
- */
-#define XKB_XLIB_MAP_MASK (XkbAllClientInfoMask)
-
- /*
- * Handy helper macros
- */
-#define XKB_INSURE_SIZE(f,t,nNum,oNum) {\
- if ((f)==NULL) \
- (f)=(t *)Xmalloc(sizeof(t)*(nNum));\
- else if ((nNum)<(oNum))\
- (f)=(t *)Xrealloc((f),sizeof(t)*(nNum));\
- }
-
-typedef struct _XkbReadBuffer {
- int error;
- int size;
- char *start;
- char *data;
-} XkbReadBufferRec,*XkbReadBufferPtr;
-
-#define _XkbAlloc(s) Xmalloc((s))
-#define _XkbCalloc(n,s) Xcalloc((n),(s))
-#define _XkbRealloc(o,s) Xrealloc((o),(s))
-#define _XkbTypedAlloc(t) ((t *)Xmalloc(sizeof(t)))
-#define _XkbTypedCalloc(n,t) ((t *)Xcalloc((n),sizeof(t)))
-#define _XkbTypedRealloc(o,n,t) \
- ((o)?(t *)Xrealloc((o),(n)*sizeof(t)):_XkbTypedCalloc(n,t))
-#define _XkbClearElems(a,f,l,t) bzero(&(a)[f],((l)-(f)+1)*sizeof(t))
-#define _XkbFree(p) Xfree(p)
-
-_XFUNCPROTOBEGIN
-
-extern void _XkbReloadDpy(
- Display * /* dpy */
-);
-
-extern KeySym _XKeycodeToKeysym(
- Display* /* display */,
-#if NeedWidePrototypes
- unsigned int /* keycode */,
-#else
- KeyCode /* keycode */,
-#endif
- int /* index */
-);
-
-extern KeyCode _XKeysymToKeycode(
- Display* /* display */,
- KeySym /* keysym */
-);
-
-extern KeySym _XLookupKeysym(
- XKeyEvent* /* key_event */,
- int /* index */
-);
-
-extern int _XRefreshKeyboardMapping(
- XMappingEvent* /* event_map */
-);
-
-extern unsigned _XKeysymToModifiers(
- Display * /* dpy */,
- KeySym /* ks */
-);
-
-extern int _XTranslateKey(
- register Display * /* dpy */,
- KeyCode /* keycode */,
- register unsigned int /* modifiers */,
- unsigned int * /* modifiers_return */,
- KeySym * /* keysym_return */
-);
-
-extern int _XTranslateKeySym(
- Display * /* dpy */,
- register KeySym /* symbol */,
- unsigned int /* modifiers */,
- char * /* buffer */,
- int /* nbytes */
-);
-
-extern int _XLookupString(
- register XKeyEvent * /* event */,
- char * /* buffer */,
- int /* nbytes */,
- KeySym * /* keysym */,
- XComposeStatus * /* status */
-);
-
-extern void _XkbNoteCoreMapChanges(
- XkbMapChangesRec * /* old */,
- XMappingEvent * /* new */,
- unsigned int /* wanted */
-);
-
-extern int _XkbInitReadBuffer(
- Display * /* dpy */,
- XkbReadBufferPtr /* buf */,
- int /* size */
-);
-
-extern int _XkbSkipReadBufferData(
- XkbReadBufferPtr /* from */,
- int /* size */
-);
-
-extern int _XkbCopyFromReadBuffer(
- XkbReadBufferPtr /* from */,
- char * /* to */,
- int /* size */
-);
-
-
-#if defined(WORD64) || defined(LONG64)
-extern int _XkbReadCopyData32(
- int * /* from */,
- long * /* to */,
- int /* num_words */
-);
-
-extern int _XkbWriteCopyData32(
- unsigned long * /* from */,
- CARD32 * /* to */,
- int /* num_words */
-);
-
-extern int _XkbReadBufferCopy32(
- XkbReadBufferPtr /* from */,
- long * /* to */,
- int /* size */
-);
-#else
-#define _XkbReadCopyData32(f,t,s) memcpy((char *)(t),(char *)(f),(s)*4)
-#define _XkbWriteCopyData32(f,t,s) memcpy((char *)(t),(char *)(f),(s)*4)
-#define _XkbReadBufferCopy32(f,t,s) _XkbCopyFromReadBuffer(f,(char *)t,(s)*4)
-#endif
-
-#ifndef NO_DEC_BINARY_COMPATIBILITY
-#define XKB_FORCE_INT_KEYSYM 1
-#endif
-
-#ifdef XKB_FORCE_INT_KEYSYM
-extern int _XkbReadCopyKeySyms(
- int * /* from */,
- KeySym * /* to */,
- int /* num_words */
-);
-
-extern int _XkbWriteCopyKeySyms(
- KeySym * /* from */,
- CARD32 * /* to */,
- int /* num_words */
-);
-
-extern int _XkbReadBufferCopyKeySyms(
- XkbReadBufferPtr /* from */,
-#ifndef NO_DEC_BUG_FIX
- KeySym * /* to */,
-#else
- long * /* to */,
-#endif
- int /* size */
-);
-#else
-#define _XkbReadCopyKeySyms(f,t,n) _XkbReadCopyData32(f,t,n)
-#define _XkbWriteCopyKeySyms(f,t,n) _XkbWriteCopyData32(f,t,n)
-#define _XkbReadBufferCopyKeySyms(f,t,s) _XkbReadBufferCopy32(f,t,s)
-#endif
-
-extern char *_XkbPeekAtReadBuffer(
- XkbReadBufferPtr /* from */,
- int /* size */
-);
-
-extern char *_XkbGetReadBufferPtr(
- XkbReadBufferPtr /* from */,
- int /* size */
-);
-#define _XkbGetTypedRdBufPtr(b,n,t) ((t *)_XkbGetReadBufferPtr(b,(n)*SIZEOF(t)))
-
-extern int _XkbFreeReadBuffer(
- XkbReadBufferPtr /* buf */
-);
-
-extern Bool
-_XkbGetReadBufferCountedString(
- XkbReadBufferPtr /* buf */,
- char ** /* rtrn */
-);
-
-extern char *_XkbGetCharset(
- void
-);
-
-extern int _XkbGetConverters(
- const char * /* encoding_name */,
- XkbConverters * /* cvt_rtrn */
-);
-
-#ifdef NEED_MAP_READERS
-
-extern Status _XkbReadGetMapReply(
- Display * /* dpy */,
- xkbGetMapReply * /* rep */,
- XkbDescRec * /* xkb */,
- int * /* nread_rtrn */
-);
-
-extern Status _XkbReadGetCompatMapReply(
- Display * /* dpy */,
- xkbGetCompatMapReply * /* rep */,
- XkbDescPtr /* xkb */,
- int * /* nread_rtrn */
-);
-
-extern Status _XkbReadGetIndicatorMapReply(
- Display * /* dpy */,
- xkbGetIndicatorMapReply * /* rep */,
- XkbDescPtr /* xkb */,
- int * /* nread_rtrn */
-);
-
-extern Status _XkbReadGetNamesReply(
- Display * /* dpy */,
- xkbGetNamesReply * /* rep */,
- XkbDescPtr /* xkb */,
- int * /* nread_rtrn */
-);
-
-extern Status _XkbReadGetGeometryReply(
- Display * /* dpy */,
- xkbGetGeometryReply * /* rep */,
- XkbDescPtr /* xkb */,
- int * /* nread_rtrn */
-);
-
-#endif
-
-_XFUNCPROTOEND
-
-#endif /* _XKBLIBINT_H_ */
+/************************************************************
+Copyright (c) 1993 by Silicon Graphics Computer Systems, Inc.
+
+Permission to use, copy, modify, and distribute this
+software and its documentation for any purpose and without
+fee is hereby granted, provided that the above copyright
+notice appear in all copies and that both that copyright
+notice and this permission notice appear in supporting
+documentation, and that the name of Silicon Graphics not be
+used in advertising or publicity pertaining to distribution
+of the software without specific prior written permission.
+Silicon Graphics makes no representation about the suitability
+of this software for any purpose. It is provided "as is"
+without any express or implied warranty.
+
+SILICON GRAPHICS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS
+SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
+AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON
+GRAPHICS BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL
+DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
+DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
+OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH
+THE USE OR PERFORMANCE OF THIS SOFTWARE.
+
+********************************************************/
+
+#ifndef _XKBLIBINT_H_
+#define _XKBLIBINT_H_
+
+#include <X11/Xutil.h>
+#include <X11/XKBlib.h>
+
+#define XkbMapPending (1<<0)
+#define XkbXlibNewKeyboard (1<<1)
+
+typedef int (*XkbKSToMBFunc)(
+ XPointer /* priv */,
+ KeySym /* sym */,
+ char * /* buf */,
+ int /* len */,
+ int * /* extra_rtrn */
+);
+
+typedef KeySym (*XkbMBToKSFunc)(
+ XPointer /* priv */,
+ char * /* buf */,
+ int /* len */,
+ Status * /* status */
+);
+
+typedef KeySym (*XkbToUpperFunc)(
+ KeySym /* sym */
+);
+
+typedef struct _XkbConverters {
+ XkbKSToMBFunc KSToMB;
+ XPointer KSToMBPriv;
+ XkbMBToKSFunc MBToKS;
+ XPointer MBToKSPriv;
+ XkbToUpperFunc KSToUpper;
+} XkbConverters;
+
+extern XkbInternAtomFunc _XkbInternAtomFunc;
+extern XkbGetAtomNameFunc _XkbGetAtomNameFunc;
+
+typedef struct _XkbInfoRec {
+ unsigned flags;
+ unsigned xlib_ctrls;
+ XExtCodes *codes;
+ int srv_major;
+ int srv_minor;
+ unsigned selected_events;
+ unsigned short selected_nkn_details;
+ unsigned short selected_map_details;
+ XkbDescRec *desc;
+ XkbMapChangesRec changes;
+ Atom composeLED;
+ XkbConverters cvt;
+ XkbConverters latin1cvt;
+} XkbInfoRec, *XkbInfoPtr;
+
+
+#define _XkbUnavailable(d) \
+ (((d)->flags&XlibDisplayNoXkb) ||\
+ ((!(d)->xkb_info || (!(d)->xkb_info->desc)) && !_XkbLoadDpy(d)))
+
+#define _XkbCheckPendingRefresh(d,xi) {\
+ if ((xi)->flags&XkbXlibNewKeyboard)\
+ _XkbReloadDpy((d));\
+ else if ((xi)->flags&XkbMapPending) {\
+ if (XkbGetMapChanges((d),(xi)->desc, &(xi)->changes)==Success) {\
+ LockDisplay((d));\
+ (xi)->changes.changed= 0;\
+ UnlockDisplay((d));\
+ }\
+ }\
+}
+
+#define _XkbNeedModmap(i) ((!(i)->desc->map)||(!(i)->desc->map->modmap))
+
+ /*
+ * mask of the events that the "invisible" XKB support in Xlib needs
+ */
+#define XKB_XLIB_MAP_MASK (XkbAllClientInfoMask)
+
+ /*
+ * Handy helper macros
+ */
+#define XKB_INSURE_SIZE(f,t,nNum,oNum) {\
+ if ((f)==NULL) \
+ (f)=(t *)Xmalloc(sizeof(t)*(nNum));\
+ else if ((nNum)<(oNum))\
+ (f)=(t *)Xrealloc((f),sizeof(t)*(nNum));\
+ }
+
+typedef struct _XkbReadBuffer {
+ int error;
+ int size;
+ char *start;
+ char *data;
+} XkbReadBufferRec,*XkbReadBufferPtr;
+
+#define _XkbAlloc(s) Xmalloc((s))
+#define _XkbCalloc(n,s) Xcalloc((n),(s))
+#define _XkbRealloc(o,s) Xrealloc((o),(s))
+#define _XkbTypedAlloc(t) ((t *)Xmalloc(sizeof(t)))
+#define _XkbTypedCalloc(n,t) ((t *)Xcalloc((n),sizeof(t)))
+#define _XkbTypedRealloc(o,n,t) \
+ ((o)?(t *)Xrealloc((o),(n)*sizeof(t)):_XkbTypedCalloc(n,t))
+#define _XkbClearElems(a,f,l,t) bzero(&(a)[f],((l)-(f)+1)*sizeof(t))
+#define _XkbFree(p) Xfree(p)
+
+_XFUNCPROTOBEGIN
+
+extern void _XkbReloadDpy(
+ Display * /* dpy */
+);
+
+extern KeySym _XKeycodeToKeysym(
+ Display* /* display */,
+#if NeedWidePrototypes
+ unsigned int /* keycode */,
+#else
+ KeyCode /* keycode */,
+#endif
+ int /* index */
+);
+
+extern KeyCode _XKeysymToKeycode(
+ Display* /* display */,
+ KeySym /* keysym */
+);
+
+extern KeySym _XLookupKeysym(
+ XKeyEvent* /* key_event */,
+ int /* index */
+);
+
+extern int _XRefreshKeyboardMapping(
+ XMappingEvent* /* event_map */
+);
+
+extern unsigned _XKeysymToModifiers(
+ Display * /* dpy */,
+ KeySym /* ks */
+);
+
+extern int _XTranslateKey(
+ register Display * /* dpy */,
+ KeyCode /* keycode */,
+ register unsigned int /* modifiers */,
+ unsigned int * /* modifiers_return */,
+ KeySym * /* keysym_return */
+);
+
+extern int _XTranslateKeySym(
+ Display * /* dpy */,
+ register KeySym /* symbol */,
+ unsigned int /* modifiers */,
+ char * /* buffer */,
+ int /* nbytes */
+);
+
+extern int _XLookupString(
+ register XKeyEvent * /* event */,
+ char * /* buffer */,
+ int /* nbytes */,
+ KeySym * /* keysym */,
+ XComposeStatus * /* status */
+);
+
+extern void _XkbNoteCoreMapChanges(
+ XkbMapChangesRec * /* old */,
+ XMappingEvent * /* new */,
+ unsigned int /* wanted */
+);
+
+extern int _XkbInitReadBuffer(
+ Display * /* dpy */,
+ XkbReadBufferPtr /* buf */,
+ int /* size */
+);
+
+extern int _XkbSkipReadBufferData(
+ XkbReadBufferPtr /* from */,
+ int /* size */
+);
+
+extern int _XkbCopyFromReadBuffer(
+ XkbReadBufferPtr /* from */,
+ char * /* to */,
+ int /* size */
+);
+
+
+#if defined(WORD64) || defined(LONG64)
+extern int _XkbReadCopyData32(
+ int * /* from */,
+ long * /* to */,
+ int /* num_words */
+);
+
+extern int _XkbWriteCopyData32(
+ unsigned long * /* from */,
+ CARD32 * /* to */,
+ int /* num_words */
+);
+
+extern int _XkbReadBufferCopy32(
+ XkbReadBufferPtr /* from */,
+ long * /* to */,
+ int /* size */
+);
+#else
+#define _XkbReadCopyData32(f,t,s) memcpy((char *)(t),(char *)(f),(s)*4)
+#define _XkbWriteCopyData32(f,t,s) memcpy((char *)(t),(char *)(f),(s)*4)
+#define _XkbReadBufferCopy32(f,t,s) _XkbCopyFromReadBuffer(f,(char *)t,(s)*4)
+#endif
+
+#ifndef NO_DEC_BINARY_COMPATIBILITY
+#define XKB_FORCE_INT_KEYSYM 1
+#endif
+
+#ifdef XKB_FORCE_INT_KEYSYM
+extern int _XkbReadCopyKeySyms(
+ int * /* from */,
+ KeySym * /* to */,
+ int /* num_words */
+);
+
+extern int _XkbWriteCopyKeySyms(
+ KeySym * /* from */,
+ CARD32 * /* to */,
+ int /* num_words */
+);
+
+extern int _XkbReadBufferCopyKeySyms(
+ XkbReadBufferPtr /* from */,
+#ifndef NO_DEC_BUG_FIX
+ KeySym * /* to */,
+#else
+ long * /* to */,
+#endif
+ int /* size */
+);
+#else
+#define _XkbReadCopyKeySyms(f,t,n) _XkbReadCopyData32(f,t,n)
+#define _XkbWriteCopyKeySyms(f,t,n) _XkbWriteCopyData32(f,t,n)
+#define _XkbReadBufferCopyKeySyms(f,t,s) _XkbReadBufferCopy32(f,t,s)
+#endif
+
+extern char *_XkbPeekAtReadBuffer(
+ XkbReadBufferPtr /* from */,
+ int /* size */
+);
+
+extern char *_XkbGetReadBufferPtr(
+ XkbReadBufferPtr /* from */,
+ int /* size */
+);
+#define _XkbGetTypedRdBufPtr(b,n,t) ((t *)_XkbGetReadBufferPtr(b,(n)*SIZEOF(t)))
+
+extern int _XkbFreeReadBuffer(
+ XkbReadBufferPtr /* buf */
+);
+
+extern Bool
+_XkbGetReadBufferCountedString(
+ XkbReadBufferPtr /* buf */,
+ char ** /* rtrn */
+);
+
+extern char *_XkbGetCharset(
+ void
+);
+
+extern int _XkbGetConverters(
+ const char * /* encoding_name */,
+ XkbConverters * /* cvt_rtrn */
+);
+
+#ifdef NEED_MAP_READERS
+
+extern Status _XkbReadGetMapReply(
+ Display * /* dpy */,
+ xkbGetMapReply * /* rep */,
+ XkbDescRec * /* xkb */,
+ int * /* nread_rtrn */
+);
+
+extern Status _XkbReadGetCompatMapReply(
+ Display * /* dpy */,
+ xkbGetCompatMapReply * /* rep */,
+ XkbDescPtr /* xkb */,
+ int * /* nread_rtrn */
+);
+
+extern Status _XkbReadGetIndicatorMapReply(
+ Display * /* dpy */,
+ xkbGetIndicatorMapReply * /* rep */,
+ XkbDescPtr /* xkb */,
+ int * /* nread_rtrn */
+);
+
+extern Status _XkbReadGetNamesReply(
+ Display * /* dpy */,
+ xkbGetNamesReply * /* rep */,
+ XkbDescPtr /* xkb */,
+ int * /* nread_rtrn */
+);
+
+extern Status _XkbReadGetGeometryReply(
+ Display * /* dpy */,
+ xkbGetGeometryReply * /* rep */,
+ XkbDescPtr /* xkb */,
+ int * /* nread_rtrn */
+);
+
+#endif
+
+_XFUNCPROTOEND
+
+#endif /* _XKBLIBINT_H_ */
diff --git a/libX11/src/xlibi18n/ICWrap.c b/libX11/src/xlibi18n/ICWrap.c
index d0161d2eb..1eacfa5f1 100644
--- a/libX11/src/xlibi18n/ICWrap.c
+++ b/libX11/src/xlibi18n/ICWrap.c
@@ -1,429 +1,429 @@
-/*
- * Copyright 1990, 1991 by OMRON Corporation, NTT Software Corporation,
- * and Nippon Telegraph and Telephone Corporation
- * Copyright 1991 by the Open Software Foundation
- * Copyright 1993 by the FUJITSU LIMITED
- *
- * Permission to use, copy, modify, distribute, and sell this software and its
- * documentation for any purpose is hereby granted without fee, provided that
- * the above copyright notice appear in all copies and that both that
- * copyright notice and this permission notice appear in supporting
- * documentation, and that the names of OMRON, NTT Software, NTT, and
- * Open Software Foundation not be used in advertising or publicity
- * pertaining to distribution of the software without specific,
- * written prior permission. OMRON, NTT Software, NTT, and Open Software
- * Foundation make no representations about the suitability of this
- * software for any purpose. It is provided "as is" without express or
- * implied warranty.
- *
- * OMRON, NTT SOFTWARE, NTT, AND OPEN SOFTWARE FOUNDATION
- * DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
- * ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT
- * SHALL OMRON, NTT SOFTWARE, NTT, OR OPEN SOFTWARE FOUNDATION BE
- * LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
- * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
- * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
- * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
- *
- * Authors: Li Yuhong OMRON Corporation
- * Tatsuya Kato NTT Software Corporation
- * Hiroshi Kuribayashi OMRON Coproration
- * Muneiyoshi Suzuki Nippon Telegraph and Telephone Co.
- *
- * M. Collins OSF
- * Takashi Fujiwara FUJITSU LIMITED
- */
-/*
-
-Copyright 1991, 1998 The Open Group
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
-
-The above copyright notice and this permission notice shall be included
-in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
-IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR
-OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
-ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall
-not be used in advertising or otherwise to promote the sale, use or
-other dealings in this Software without prior written authorization
-from The Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-#include "Xlcint.h"
-
-static int
-_XIMNestedListToNestedList(
- XIMArg *nlist, /* This is the new list */
- XIMArg *list) /* The original list */
-{
- register XIMArg *ptr = list;
-
- while (ptr->name) {
- if (!strcmp(ptr->name, XNVaNestedList)) {
- nlist += _XIMNestedListToNestedList(nlist, (XIMArg *)ptr->value);
- } else {
- nlist->name = ptr->name;
- nlist->value = ptr->value;
- ptr++;
- nlist++;
- }
- }
- return ptr - list;
-}
-
-static void
-_XIMCountNestedList(
- XIMArg *args,
- int *total_count)
-{
- for (; args->name; args++) {
- if (!strcmp(args->name, XNVaNestedList))
- _XIMCountNestedList((XIMArg *)args->value, total_count);
- else
- ++(*total_count);
- }
-}
-
-static void
-_XIMCountVaList(va_list var, int *total_count)
-{
- char *attr;
-
- *total_count = 0;
-
- for (attr = va_arg(var, char*); attr; attr = va_arg(var, char*)) {
- if (!strcmp(attr, XNVaNestedList)) {
- _XIMCountNestedList(va_arg(var, XIMArg*), total_count);
- } else {
- (void)va_arg(var, XIMArg*);
- ++(*total_count);
- }
- }
-}
-
-static void
-_XIMVaToNestedList(va_list var, int max_count, XIMArg **args_return)
-{
- XIMArg *args;
- char *attr;
-
- if (max_count <= 0) {
- *args_return = (XIMArg *)NULL;
- return;
- }
-
- args = (XIMArg *)Xmalloc((unsigned)(max_count + 1) * sizeof(XIMArg));
- *args_return = args;
- if (!args) return;
-
- for (attr = va_arg(var, char*); attr; attr = va_arg(var, char*)) {
- if (!strcmp(attr, XNVaNestedList)) {
- args += _XIMNestedListToNestedList(args, va_arg(var, XIMArg*));
- } else {
- args->name = attr;
- args->value = va_arg(var, XPointer);
- args++;
- }
- }
- args->name = (char*)NULL;
-}
-
-/*ARGSUSED*/
-XVaNestedList
-XVaCreateNestedList(int dummy, ...)
-{
- va_list var;
- XIMArg *args = NULL;
- int total_count;
-
- va_start(var, dummy);
- _XIMCountVaList(var, &total_count);
- va_end(var);
-
- va_start(var, dummy);
- _XIMVaToNestedList(var, total_count, &args);
- va_end(var);
-
- return (XVaNestedList)args;
-}
-
-char *
-XSetIMValues(XIM im, ...)
-{
- va_list var;
- int total_count;
- XIMArg *args;
- char *ret;
-
- /*
- * so count the stuff dangling here
- */
- va_start(var, im);
- _XIMCountVaList(var, &total_count);
- va_end(var);
-
- /*
- * now package it up so we can send it along
- */
- va_start(var, im);
- _XIMVaToNestedList(var, total_count, &args);
- va_end(var);
-
- ret = (*im->methods->set_values) (im, args);
- if (args) Xfree((char *)args);
- return ret;
-}
-
-char *
-XGetIMValues(XIM im, ...)
-{
- va_list var;
- int total_count;
- XIMArg *args;
- char *ret;
-
- /*
- * so count the stuff dangling here
- */
- va_start(var, im);
- _XIMCountVaList(var, &total_count);
- va_end(var);
-
- /*
- * now package it up so we can send it along
- */
- va_start(var, im);
- _XIMVaToNestedList(var, total_count, &args);
- va_end(var);
-
- ret = (*im->methods->get_values) (im, args);
- if (args) Xfree((char *)args);
- return ret;
-}
-
-/*
- * Create an input context within the input method,
- * and return a pointer to the input context.
- */
-
-XIC
-XCreateIC(XIM im, ...)
-{
- va_list var;
- int total_count;
- XIMArg *args;
- XIC ic;
-
- /*
- * so count the stuff dangling here
- */
- va_start(var, im);
- _XIMCountVaList(var, &total_count);
- va_end(var);
-
- /*
- * now package it up so we can send it along
- */
- va_start(var, im);
- _XIMVaToNestedList(var, total_count, &args);
- va_end(var);
-
- ic = (XIC) (*im->methods->create_ic) (im, args);
- if (args) Xfree((char *)args);
- if (ic) {
- ic->core.next = im->core.ic_chain;
- im->core.ic_chain = ic;
- }
- return ic;
-}
-
-/*
- * Free the input context.
- */
-void
-XDestroyIC(XIC ic)
-{
- XIM im = ic->core.im;
- XIC *prev;
-
- (*ic->methods->destroy) (ic);
- if (im) {
- for (prev = &im->core.ic_chain; *prev; prev = &(*prev)->core.next) {
- if (*prev == ic) {
- *prev = ic->core.next;
- break;
- }
- }
- }
- Xfree ((char *) ic);
-}
-
-char *
-XGetICValues(XIC ic, ...)
-{
- va_list var;
- int total_count;
- XIMArg *args;
- char *ret;
-
- if (!ic->core.im)
- return (char *) NULL;
-
- /*
- * so count the stuff dangling here
- */
- va_start(var, ic);
- _XIMCountVaList(var, &total_count);
- va_end(var);
-
- /*
- * now package it up so we can send it along
- */
- va_start(var, ic);
- _XIMVaToNestedList(var, total_count, &args);
- va_end(var);
-
- ret = (*ic->methods->get_values) (ic, args);
- if (args) Xfree((char *)args);
- return ret;
-}
-
-char *
-XSetICValues(XIC ic, ...)
-{
- va_list var;
- int total_count;
- XIMArg *args;
- char *ret;
-
- if (!ic->core.im)
- return (char *) NULL;
-
- /*
- * so count the stuff dangling here
- */
- va_start(var, ic);
- _XIMCountVaList(var, &total_count);
- va_end(var);
-
- /*
- * now package it up so we can send it along
- */
- va_start(var, ic);
- _XIMVaToNestedList(var, total_count, &args);
- va_end(var);
-
- ret = (*ic->methods->set_values) (ic, args);
- if (args) Xfree((char *)args);
- return ret;
-}
-
-/*
- * Require the input manager to focus the focus window attached to the ic
- * argument.
- */
-void
-XSetICFocus(XIC ic)
-{
- if (ic && ic->core.im)
- (*ic->methods->set_focus) (ic);
-}
-
-/*
- * Require the input manager to unfocus the focus window attached to the ic
- * argument.
- */
-void
-XUnsetICFocus(XIC ic)
-{
- if (ic->core.im)
- (*ic->methods->unset_focus) (ic);
-}
-
-/*
- * Return the XIM associated with the input context.
- */
-XIM
-XIMOfIC(XIC ic)
-{
- return ic->core.im;
-}
-
-char *
-XmbResetIC(XIC ic)
-{
- if (ic->core.im)
- return (*ic->methods->mb_reset)(ic);
- return (char *)NULL;
-}
-
-wchar_t *
-XwcResetIC(XIC ic)
-{
- if (ic->core.im)
- return (*ic->methods->wc_reset)(ic);
- return (wchar_t *)NULL;
-}
-
-char *
-Xutf8ResetIC(XIC ic)
-{
- if (ic->core.im) {
- if (ic->methods->utf8_reset)
- return (*ic->methods->utf8_reset)(ic);
- else if (ic->methods->mb_reset)
- return (*ic->methods->mb_reset)(ic);
- }
- return (char *)NULL;
-}
-
-int
-XmbLookupString(XIC ic, XKeyEvent *ev, char *buffer, int nbytes,
- KeySym *keysym, Status *status)
-{
- if (ic->core.im)
- return (*ic->methods->mb_lookup_string) (ic, ev, buffer, nbytes,
- keysym, status);
- return XLookupNone;
-}
-
-int
-XwcLookupString(XIC ic, XKeyEvent *ev, wchar_t *buffer, int nchars,
- KeySym *keysym, Status *status)
-{
- if (ic->core.im)
- return (*ic->methods->wc_lookup_string) (ic, ev, buffer, nchars,
- keysym, status);
- return XLookupNone;
-}
-
-int
-Xutf8LookupString(XIC ic, XKeyEvent *ev, char *buffer, int nbytes,
- KeySym *keysym, Status *status)
-{
- if (ic->core.im) {
- if (ic->methods->utf8_lookup_string)
- return (*ic->methods->utf8_lookup_string) (ic, ev, buffer, nbytes,
- keysym, status);
- else if (ic->methods->mb_lookup_string)
- return (*ic->methods->mb_lookup_string) (ic, ev, buffer, nbytes,
- keysym, status);
- }
- return XLookupNone;
-}
+/*
+ * Copyright 1990, 1991 by OMRON Corporation, NTT Software Corporation,
+ * and Nippon Telegraph and Telephone Corporation
+ * Copyright 1991 by the Open Software Foundation
+ * Copyright 1993 by the FUJITSU LIMITED
+ *
+ * Permission to use, copy, modify, distribute, and sell this software and its
+ * documentation for any purpose is hereby granted without fee, provided that
+ * the above copyright notice appear in all copies and that both that
+ * copyright notice and this permission notice appear in supporting
+ * documentation, and that the names of OMRON, NTT Software, NTT, and
+ * Open Software Foundation not be used in advertising or publicity
+ * pertaining to distribution of the software without specific,
+ * written prior permission. OMRON, NTT Software, NTT, and Open Software
+ * Foundation make no representations about the suitability of this
+ * software for any purpose. It is provided "as is" without express or
+ * implied warranty.
+ *
+ * OMRON, NTT SOFTWARE, NTT, AND OPEN SOFTWARE FOUNDATION
+ * DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
+ * ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT
+ * SHALL OMRON, NTT SOFTWARE, NTT, OR OPEN SOFTWARE FOUNDATION BE
+ * LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+ * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+ *
+ * Authors: Li Yuhong OMRON Corporation
+ * Tatsuya Kato NTT Software Corporation
+ * Hiroshi Kuribayashi OMRON Coproration
+ * Muneiyoshi Suzuki Nippon Telegraph and Telephone Co.
+ *
+ * M. Collins OSF
+ * Takashi Fujiwara FUJITSU LIMITED
+ */
+/*
+
+Copyright 1991, 1998 The Open Group
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
+
+The above copyright notice and this permission notice shall be included
+in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR
+OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
+ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group shall
+not be used in advertising or otherwise to promote the sale, use or
+other dealings in this Software without prior written authorization
+from The Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+#include "Xlcint.h"
+
+static int
+_XIMNestedListToNestedList(
+ XIMArg *nlist, /* This is the new list */
+ XIMArg *list) /* The original list */
+{
+ register XIMArg *ptr = list;
+
+ while (ptr->name) {
+ if (!strcmp(ptr->name, XNVaNestedList)) {
+ nlist += _XIMNestedListToNestedList(nlist, (XIMArg *)ptr->value);
+ } else {
+ nlist->name = ptr->name;
+ nlist->value = ptr->value;
+ ptr++;
+ nlist++;
+ }
+ }
+ return ptr - list;
+}
+
+static void
+_XIMCountNestedList(
+ XIMArg *args,
+ int *total_count)
+{
+ for (; args->name; args++) {
+ if (!strcmp(args->name, XNVaNestedList))
+ _XIMCountNestedList((XIMArg *)args->value, total_count);
+ else
+ ++(*total_count);
+ }
+}
+
+static void
+_XIMCountVaList(va_list var, int *total_count)
+{
+ char *attr;
+
+ *total_count = 0;
+
+ for (attr = va_arg(var, char*); attr; attr = va_arg(var, char*)) {
+ if (!strcmp(attr, XNVaNestedList)) {
+ _XIMCountNestedList(va_arg(var, XIMArg*), total_count);
+ } else {
+ (void)va_arg(var, XIMArg*);
+ ++(*total_count);
+ }
+ }
+}
+
+static void
+_XIMVaToNestedList(va_list var, int max_count, XIMArg **args_return)
+{
+ XIMArg *args;
+ char *attr;
+
+ if (max_count <= 0) {
+ *args_return = (XIMArg *)NULL;
+ return;
+ }
+
+ args = (XIMArg *)Xmalloc((unsigned)(max_count + 1) * sizeof(XIMArg));
+ *args_return = args;
+ if (!args) return;
+
+ for (attr = va_arg(var, char*); attr; attr = va_arg(var, char*)) {
+ if (!strcmp(attr, XNVaNestedList)) {
+ args += _XIMNestedListToNestedList(args, va_arg(var, XIMArg*));
+ } else {
+ args->name = attr;
+ args->value = va_arg(var, XPointer);
+ args++;
+ }
+ }
+ args->name = (char*)NULL;
+}
+
+/*ARGSUSED*/
+XVaNestedList
+XVaCreateNestedList(int dummy, ...)
+{
+ va_list var;
+ XIMArg *args = NULL;
+ int total_count;
+
+ va_start(var, dummy);
+ _XIMCountVaList(var, &total_count);
+ va_end(var);
+
+ va_start(var, dummy);
+ _XIMVaToNestedList(var, total_count, &args);
+ va_end(var);
+
+ return (XVaNestedList)args;
+}
+
+char *
+XSetIMValues(XIM im, ...)
+{
+ va_list var;
+ int total_count;
+ XIMArg *args;
+ char *ret;
+
+ /*
+ * so count the stuff dangling here
+ */
+ va_start(var, im);
+ _XIMCountVaList(var, &total_count);
+ va_end(var);
+
+ /*
+ * now package it up so we can send it along
+ */
+ va_start(var, im);
+ _XIMVaToNestedList(var, total_count, &args);
+ va_end(var);
+
+ ret = (*im->methods->set_values) (im, args);
+ if (args) Xfree((char *)args);
+ return ret;
+}
+
+char *
+XGetIMValues(XIM im, ...)
+{
+ va_list var;
+ int total_count;
+ XIMArg *args;
+ char *ret;
+
+ /*
+ * so count the stuff dangling here
+ */
+ va_start(var, im);
+ _XIMCountVaList(var, &total_count);
+ va_end(var);
+
+ /*
+ * now package it up so we can send it along
+ */
+ va_start(var, im);
+ _XIMVaToNestedList(var, total_count, &args);
+ va_end(var);
+
+ ret = (*im->methods->get_values) (im, args);
+ if (args) Xfree((char *)args);
+ return ret;
+}
+
+/*
+ * Create an input context within the input method,
+ * and return a pointer to the input context.
+ */
+
+XIC
+XCreateIC(XIM im, ...)
+{
+ va_list var;
+ int total_count;
+ XIMArg *args;
+ XIC ic;
+
+ /*
+ * so count the stuff dangling here
+ */
+ va_start(var, im);
+ _XIMCountVaList(var, &total_count);
+ va_end(var);
+
+ /*
+ * now package it up so we can send it along
+ */
+ va_start(var, im);
+ _XIMVaToNestedList(var, total_count, &args);
+ va_end(var);
+
+ ic = (XIC) (*im->methods->create_ic) (im, args);
+ if (args) Xfree((char *)args);
+ if (ic) {
+ ic->core.next = im->core.ic_chain;
+ im->core.ic_chain = ic;
+ }
+ return ic;
+}
+
+/*
+ * Free the input context.
+ */
+void
+XDestroyIC(XIC ic)
+{
+ XIM im = ic->core.im;
+ XIC *prev;
+
+ (*ic->methods->destroy) (ic);
+ if (im) {
+ for (prev = &im->core.ic_chain; *prev; prev = &(*prev)->core.next) {
+ if (*prev == ic) {
+ *prev = ic->core.next;
+ break;
+ }
+ }
+ }
+ Xfree ((char *) ic);
+}
+
+char *
+XGetICValues(XIC ic, ...)
+{
+ va_list var;
+ int total_count;
+ XIMArg *args;
+ char *ret;
+
+ if (!ic->core.im)
+ return (char *) NULL;
+
+ /*
+ * so count the stuff dangling here
+ */
+ va_start(var, ic);
+ _XIMCountVaList(var, &total_count);
+ va_end(var);
+
+ /*
+ * now package it up so we can send it along
+ */
+ va_start(var, ic);
+ _XIMVaToNestedList(var, total_count, &args);
+ va_end(var);
+
+ ret = (*ic->methods->get_values) (ic, args);
+ if (args) Xfree((char *)args);
+ return ret;
+}
+
+char *
+XSetICValues(XIC ic, ...)
+{
+ va_list var;
+ int total_count;
+ XIMArg *args;
+ char *ret;
+
+ if (!ic->core.im)
+ return (char *) NULL;
+
+ /*
+ * so count the stuff dangling here
+ */
+ va_start(var, ic);
+ _XIMCountVaList(var, &total_count);
+ va_end(var);
+
+ /*
+ * now package it up so we can send it along
+ */
+ va_start(var, ic);
+ _XIMVaToNestedList(var, total_count, &args);
+ va_end(var);
+
+ ret = (*ic->methods->set_values) (ic, args);
+ if (args) Xfree((char *)args);
+ return ret;
+}
+
+/*
+ * Require the input manager to focus the focus window attached to the ic
+ * argument.
+ */
+void
+XSetICFocus(XIC ic)
+{
+ if (ic && ic->core.im)
+ (*ic->methods->set_focus) (ic);
+}
+
+/*
+ * Require the input manager to unfocus the focus window attached to the ic
+ * argument.
+ */
+void
+XUnsetICFocus(XIC ic)
+{
+ if (ic->core.im)
+ (*ic->methods->unset_focus) (ic);
+}
+
+/*
+ * Return the XIM associated with the input context.
+ */
+XIM
+XIMOfIC(XIC ic)
+{
+ return ic->core.im;
+}
+
+char *
+XmbResetIC(XIC ic)
+{
+ if (ic->core.im)
+ return (*ic->methods->mb_reset)(ic);
+ return (char *)NULL;
+}
+
+wchar_t *
+XwcResetIC(XIC ic)
+{
+ if (ic->core.im)
+ return (*ic->methods->wc_reset)(ic);
+ return (wchar_t *)NULL;
+}
+
+char *
+Xutf8ResetIC(XIC ic)
+{
+ if (ic->core.im) {
+ if (ic->methods->utf8_reset)
+ return (*ic->methods->utf8_reset)(ic);
+ else if (ic->methods->mb_reset)
+ return (*ic->methods->mb_reset)(ic);
+ }
+ return (char *)NULL;
+}
+
+int
+XmbLookupString(XIC ic, XKeyEvent *ev, char *buffer, int nbytes,
+ KeySym *keysym, Status *status)
+{
+ if (ic->core.im)
+ return (*ic->methods->mb_lookup_string) (ic, ev, buffer, nbytes,
+ keysym, status);
+ return XLookupNone;
+}
+
+int
+XwcLookupString(XIC ic, XKeyEvent *ev, wchar_t *buffer, int nchars,
+ KeySym *keysym, Status *status)
+{
+ if (ic->core.im)
+ return (*ic->methods->wc_lookup_string) (ic, ev, buffer, nchars,
+ keysym, status);
+ return XLookupNone;
+}
+
+int
+Xutf8LookupString(XIC ic, XKeyEvent *ev, char *buffer, int nbytes,
+ KeySym *keysym, Status *status)
+{
+ if (ic->core.im) {
+ if (ic->methods->utf8_lookup_string)
+ return (*ic->methods->utf8_lookup_string) (ic, ev, buffer, nbytes,
+ keysym, status);
+ else if (ic->methods->mb_lookup_string)
+ return (*ic->methods->mb_lookup_string) (ic, ev, buffer, nbytes,
+ keysym, status);
+ }
+ return XLookupNone;
+}
diff --git a/libX11/src/xlibi18n/IMWrap.c b/libX11/src/xlibi18n/IMWrap.c
index ef63a6208..0f6ed5593 100644
--- a/libX11/src/xlibi18n/IMWrap.c
+++ b/libX11/src/xlibi18n/IMWrap.c
@@ -1,204 +1,204 @@
-/*
- * Copyright 1991 by the Open Software Foundation
- * Copyright 1993, 1994 by the Sony Corporation
- *
- * Permission to use, copy, modify, distribute, and sell this software and its
- * documentation for any purpose is hereby granted without fee, provided that
- * the above copyright notice appear in all copies and that both that
- * copyright notice and this permission notice appear in supporting
- * documentation, and that the names of Open Software Foundation and
- * Sony Corporation not be used in advertising or publicity pertaining to
- * distribution of the software without specific, written prior permission.
- * Open Software Foundation and Sony Corporation make no
- * representations about the suitability of this software for any purpose.
- * It is provided "as is" without express or implied warranty.
- *
- * OPEN SOFTWARE FOUNDATION AND SONY CORPORATION DISCLAIM ALL
- * WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL OPEN
- * SOFTWARE FOUNDATIONN OR SONY CORPORATION BE LIABLE FOR ANY SPECIAL,
- * INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
- * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
- * OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
- * PERFORMANCE OF THIS SOFTWARE.
- *
- * M. Collins OSF
- * Makoto Wakamatsu Sony Corporation
- */
-/*
-
-Copyright 1991, 1998 The Open Group
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
-
-The above copyright notice and this permission notice shall be included
-in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
-IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR
-OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
-ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall
-not be used in advertising or otherwise to promote the sale, use or
-other dealings in this Software without prior written authorization
-from The Open Group.
-
-*/
-
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-#include "Xlcint.h"
-
-/*
- * Compile the resource name. (resource_name ---> xrm_name)
- */
-void
-_XIMCompileResourceList(XIMResourceList res, unsigned int num_res)
-{
- register unsigned int count;
-
- for (count = 0; count < num_res; res++, count++) {
- res->xrm_name = XrmStringToQuark(res->resource_name);
- }
-}
-
-void
-_XCopyToArg(XPointer src, XPointer *dst, unsigned int size)
-{
- if (!*dst) {
- union {
- long longval;
-#ifdef LONG64
- int intval;
-#endif
- short shortval;
- char charval;
- char* charptr;
- XPointer ptr;
- } u;
- if (size <= sizeof(XPointer)) {
- memcpy((char *)&u, (char *)src, (int)size);
- if (size == sizeof(long)) *dst = (XPointer)u.longval;
-#ifdef LONG64
- else if (size == sizeof(int)) *dst = (XPointer)(long)u.intval;
-#endif
- else if (size == sizeof(short)) *dst = (XPointer)(long)u.shortval;
- else if (size == sizeof(char)) *dst = (XPointer)(long)u.charval;
- else if (size == sizeof(char*)) *dst = (XPointer)u.charptr;
- else if (size == sizeof(XPointer)) *dst = (XPointer)u.ptr;
- else memcpy( (char*)dst, (char*)src, (int)size );
- } else {
- memcpy( (char*)dst, (char*)src, (int)size );
- }
- } else {
- memcpy( (char*)*dst, (char*)src, (int)size );
- }
-}
-
-/*
- * Connects to an input method matching current locale specification, creates
- * a XIM object and return a pointer the newly created XIM back to the caller.
- */
-
-XIM
-XOpenIM(Display *display, XrmDatabase rdb, char *res_name, char *res_class)
-{
- XLCd lcd = _XOpenLC( (char *)NULL );
-
- if( !lcd )
- return( (XIM)NULL );
- return (*lcd->methods->open_im) (lcd, display, rdb, res_name, res_class);
-}
-
-/*
- * Close the connection to the input manager, and free the XIM structure
- */
-Status
-XCloseIM(XIM im)
-{
- Status s;
- XIC ic;
- XLCd lcd = im->core.lcd;
-
- s = (im->methods->close) (im);
- for (ic = im->core.ic_chain; ic; ic = ic->core.next)
- ic->core.im = (XIM)NULL;
- Xfree ((char *) im);
- _XCloseLC (lcd);
- return (s);
-}
-
-/*
- * Return the Display associated with the input method.
- */
-Display *
-XDisplayOfIM(XIM im)
-{
- return im->core.display;
-}
-
-/*
- * Return the Locale associated with the input method.
- */
-char *
-XLocaleOfIM(XIM im)
-{
- return im->core.lcd->core->name;
-}
-
-/*
- * Register to a input method instantiation callback to prepare the
- * on-demand input method instantiation.
- */
-Bool
-XRegisterIMInstantiateCallback(
- Display *display,
- XrmDatabase rdb,
- char *res_name,
- char *res_class,
- XIDProc callback,
- XPointer client_data)
-{
- XLCd lcd = _XOpenLC( (char *)NULL );
-
- if( !lcd )
- return( False );
- return( (*lcd->methods->register_callback)( lcd, display, rdb, res_name,
- res_class, callback,
- client_data ) );
-}
-
-/*
- * Unregister to a input method instantiation callback.
- */
-Bool
-XUnregisterIMInstantiateCallback(
- Display *display,
- XrmDatabase rdb,
- char *res_name,
- char *res_class,
- XIDProc callback,
- XPointer client_data)
-{
- XLCd lcd = _XlcCurrentLC();
-
- if( !lcd )
- return( False );
- if( lcd->methods->unregister_callback == NULL )
- return( False );
- return( (*lcd->methods->unregister_callback)( lcd, display, rdb, res_name,
- res_class, callback,
- client_data ) );
-}
-
+/*
+ * Copyright 1991 by the Open Software Foundation
+ * Copyright 1993, 1994 by the Sony Corporation
+ *
+ * Permission to use, copy, modify, distribute, and sell this software and its
+ * documentation for any purpose is hereby granted without fee, provided that
+ * the above copyright notice appear in all copies and that both that
+ * copyright notice and this permission notice appear in supporting
+ * documentation, and that the names of Open Software Foundation and
+ * Sony Corporation not be used in advertising or publicity pertaining to
+ * distribution of the software without specific, written prior permission.
+ * Open Software Foundation and Sony Corporation make no
+ * representations about the suitability of this software for any purpose.
+ * It is provided "as is" without express or implied warranty.
+ *
+ * OPEN SOFTWARE FOUNDATION AND SONY CORPORATION DISCLAIM ALL
+ * WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL OPEN
+ * SOFTWARE FOUNDATIONN OR SONY CORPORATION BE LIABLE FOR ANY SPECIAL,
+ * INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
+ * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
+ * OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+ * PERFORMANCE OF THIS SOFTWARE.
+ *
+ * M. Collins OSF
+ * Makoto Wakamatsu Sony Corporation
+ */
+/*
+
+Copyright 1991, 1998 The Open Group
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
+
+The above copyright notice and this permission notice shall be included
+in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR
+OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
+ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group shall
+not be used in advertising or otherwise to promote the sale, use or
+other dealings in this Software without prior written authorization
+from The Open Group.
+
+*/
+
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+#include "Xlcint.h"
+
+/*
+ * Compile the resource name. (resource_name ---> xrm_name)
+ */
+void
+_XIMCompileResourceList(XIMResourceList res, unsigned int num_res)
+{
+ register unsigned int count;
+
+ for (count = 0; count < num_res; res++, count++) {
+ res->xrm_name = XrmStringToQuark(res->resource_name);
+ }
+}
+
+void
+_XCopyToArg(XPointer src, XPointer *dst, unsigned int size)
+{
+ if (!*dst) {
+ union {
+ long longval;
+#ifdef LONG64
+ int intval;
+#endif
+ short shortval;
+ char charval;
+ char* charptr;
+ XPointer ptr;
+ } u;
+ if (size <= sizeof(XPointer)) {
+ memcpy((char *)&u, (char *)src, (int)size);
+ if (size == sizeof(long)) *dst = (XPointer)u.longval;
+#ifdef LONG64
+ else if (size == sizeof(int)) *dst = (XPointer)(long)u.intval;
+#endif
+ else if (size == sizeof(short)) *dst = (XPointer)(long)u.shortval;
+ else if (size == sizeof(char)) *dst = (XPointer)(long)u.charval;
+ else if (size == sizeof(char*)) *dst = (XPointer)u.charptr;
+ else if (size == sizeof(XPointer)) *dst = (XPointer)u.ptr;
+ else memcpy( (char*)dst, (char*)src, (int)size );
+ } else {
+ memcpy( (char*)dst, (char*)src, (int)size );
+ }
+ } else {
+ memcpy( (char*)*dst, (char*)src, (int)size );
+ }
+}
+
+/*
+ * Connects to an input method matching current locale specification, creates
+ * a XIM object and return a pointer the newly created XIM back to the caller.
+ */
+
+XIM
+XOpenIM(Display *display, XrmDatabase rdb, char *res_name, char *res_class)
+{
+ XLCd lcd = _XOpenLC( (char *)NULL );
+
+ if( !lcd )
+ return( (XIM)NULL );
+ return (*lcd->methods->open_im) (lcd, display, rdb, res_name, res_class);
+}
+
+/*
+ * Close the connection to the input manager, and free the XIM structure
+ */
+Status
+XCloseIM(XIM im)
+{
+ Status s;
+ XIC ic;
+ XLCd lcd = im->core.lcd;
+
+ s = (im->methods->close) (im);
+ for (ic = im->core.ic_chain; ic; ic = ic->core.next)
+ ic->core.im = (XIM)NULL;
+ Xfree ((char *) im);
+ _XCloseLC (lcd);
+ return (s);
+}
+
+/*
+ * Return the Display associated with the input method.
+ */
+Display *
+XDisplayOfIM(XIM im)
+{
+ return im->core.display;
+}
+
+/*
+ * Return the Locale associated with the input method.
+ */
+char *
+XLocaleOfIM(XIM im)
+{
+ return im->core.lcd->core->name;
+}
+
+/*
+ * Register to a input method instantiation callback to prepare the
+ * on-demand input method instantiation.
+ */
+Bool
+XRegisterIMInstantiateCallback(
+ Display *display,
+ XrmDatabase rdb,
+ char *res_name,
+ char *res_class,
+ XIDProc callback,
+ XPointer client_data)
+{
+ XLCd lcd = _XOpenLC( (char *)NULL );
+
+ if( !lcd )
+ return( False );
+ return( (*lcd->methods->register_callback)( lcd, display, rdb, res_name,
+ res_class, callback,
+ client_data ) );
+}
+
+/*
+ * Unregister to a input method instantiation callback.
+ */
+Bool
+XUnregisterIMInstantiateCallback(
+ Display *display,
+ XrmDatabase rdb,
+ char *res_name,
+ char *res_class,
+ XIDProc callback,
+ XPointer client_data)
+{
+ XLCd lcd = _XlcCurrentLC();
+
+ if( !lcd )
+ return( False );
+ if( lcd->methods->unregister_callback == NULL )
+ return( False );
+ return( (*lcd->methods->unregister_callback)( lcd, display, rdb, res_name,
+ res_class, callback,
+ client_data ) );
+}
+
diff --git a/libX11/src/xlibi18n/Makefile.am b/libX11/src/xlibi18n/Makefile.am
index 1cdae3e39..853953adc 100644
--- a/libX11/src/xlibi18n/Makefile.am
+++ b/libX11/src/xlibi18n/Makefile.am
@@ -1,151 +1,151 @@
-AM_CPPFLAGS= \
- -I$(top_srcdir)/include \
- -I$(top_srcdir)/include/X11 \
- -I$(top_builddir)/include \
- -I$(top_builddir)/include/X11 \
- -I$(top_srcdir)/src/xcms \
- -I$(top_srcdir)/src/xkb \
- -I$(top_srcdir)/src/xlibi18n \
- -I$(top_srcdir)/src \
- -D_BSD_SOURCE
-
-AM_CFLAGS= \
- $(X11_CFLAGS) \
- $(BIGFONT_CFLAGS) \
- $(XMALLOC_ZERO_CFLAGS) \
- $(CWARNFLAGS)
-
-noinst_LTLIBRARIES = libi18n.la
-
-
-#
-# Dynamic loading code for i18n modules
-#
-if XLIB_LOADABLE_I18N
-XI18N_DL_SOURCES = \
- XlcDL.c \
- XlcSL.c
-else
-#
-# Static interfaces to input/output methods
-#
-IM_LIBS = \
- ${top_builddir}/modules/im/ximcp/libximcp.la
-
-LC_LIBS = \
- ${top_builddir}/modules/lc/def/libxlcDef.la \
- ${top_builddir}/modules/lc/gen/libxlibi18n.la \
- ${top_builddir}/modules/lc/Utf8/libxlcUTF8Load.la \
- ${top_builddir}/modules/lc/xlocale/libxlocale.la
-
-OM_LIBS = \
- ${top_builddir}/modules/om/generic/libxomGeneric.la
-endif
-
-libi18n_la_LIBADD = \
- $(IM_LIBS) $(LC_LIBS) $(OM_LIBS)
-
-libi18n_la_SOURCES = \
- $(XI18N_DL_SOURCES) \
- XDefaultIMIF.c \
- XDefaultOMIF.c \
- xim_trans.c\
- ICWrap.c\
- IMWrap.c\
- imKStoUCS.c\
- lcCT.c\
- lcCharSet.c\
- lcConv.c\
- lcDB.c\
- lcDynamic.c\
- lcFile.c\
- lcGeneric.c\
- lcInit.c\
- lcPrTxt.c\
- lcPubWrap.c\
- lcPublic.c\
- lcRM.c\
- lcStd.c\
- lcTxtPr.c\
- lcUTF8.c\
- lcUtil.c\
- lcWrap.c\
- mbWMProps.c\
- mbWrap.c\
- utf8WMProps.c\
- utf8Wrap.c\
- wcWrap.c\
- Xaixlcint.h\
- XimImSw.h\
- XimProto.h\
- XimThai.h\
- XimTrInt.h\
- XimTrX.h\
- XimTrans.h\
- Ximint.h\
- XimintL.h\
- XimintP.h\
- XlcGeneric.h\
- XlcPubI.h\
- XlcPublic.h\
- Xlcint.h\
- lcUniConv/armscii_8.h\
- lcUniConv/ascii.h\
- lcUniConv/big5.h\
- lcUniConv/big5_emacs.h\
- lcUniConv/big5hkscs.h\
- lcUniConv/cp1133.h\
- lcUniConv/cp1251.h\
- lcUniConv/cp1255.h\
- lcUniConv/cp1256.h\
- lcUniConv/gb2312.h\
- lcUniConv/gbk.h\
- lcUniConv/georgian_academy.h\
- lcUniConv/georgian_ps.h\
- lcUniConv/iso8859_1.h\
- lcUniConv/iso8859_10.h\
- lcUniConv/iso8859_11.h\
- lcUniConv/iso8859_13.h\
- lcUniConv/iso8859_14.h\
- lcUniConv/iso8859_15.h\
- lcUniConv/iso8859_16.h\
- lcUniConv/iso8859_2.h\
- lcUniConv/iso8859_3.h\
- lcUniConv/iso8859_4.h\
- lcUniConv/iso8859_5.h\
- lcUniConv/iso8859_6.h\
- lcUniConv/iso8859_7.h\
- lcUniConv/iso8859_8.h\
- lcUniConv/iso8859_9.h\
- lcUniConv/iso8859_9e.h\
- lcUniConv/jisx0201.h\
- lcUniConv/jisx0208.h\
- lcUniConv/jisx0212.h\
- lcUniConv/koi8_c.h\
- lcUniConv/koi8_r.h\
- lcUniConv/koi8_u.h\
- lcUniConv/ksc5601.h\
- lcUniConv/mulelao.h\
- lcUniConv/tatar_cyr.h\
- lcUniConv/tcvn.h\
- lcUniConv/tis620.h\
- lcUniConv/ucs2be.h\
- lcUniConv/utf8.h\
- lcUniConv/viscii.h
-
-EXTRA_DIST = \
- lcUniConv/README \
- lcUniConv/COPYRIGHT \
- lcUniConv/8bit_tab_to_h.c \
- lcUniConv/cjk_tab_to_h.c
-
-if LINT
-# Check source code with tools like lint & sparse
-
-ALL_LINT_FLAGS=$(LINT_FLAGS) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
- $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS)
-
-lint:
- $(LINT) $(ALL_LINT_FLAGS) $(libi18n_la_SOURCES)
-
-endif LINT
+AM_CPPFLAGS= \
+ -I$(top_srcdir)/include \
+ -I$(top_srcdir)/include/X11 \
+ -I$(top_builddir)/include \
+ -I$(top_builddir)/include/X11 \
+ -I$(top_srcdir)/src/xcms \
+ -I$(top_srcdir)/src/xkb \
+ -I$(top_srcdir)/src/xlibi18n \
+ -I$(top_srcdir)/src \
+ -D_BSD_SOURCE
+
+AM_CFLAGS= \
+ $(X11_CFLAGS) \
+ $(BIGFONT_CFLAGS) \
+ $(XMALLOC_ZERO_CFLAGS) \
+ $(CWARNFLAGS)
+
+noinst_LTLIBRARIES = libi18n.la
+
+
+#
+# Dynamic loading code for i18n modules
+#
+if XLIB_LOADABLE_I18N
+XI18N_DL_SOURCES = \
+ XlcDL.c \
+ XlcSL.c
+else
+#
+# Static interfaces to input/output methods
+#
+IM_LIBS = \
+ ${top_builddir}/modules/im/ximcp/libximcp.la
+
+LC_LIBS = \
+ ${top_builddir}/modules/lc/def/libxlcDef.la \
+ ${top_builddir}/modules/lc/gen/libxlibi18n.la \
+ ${top_builddir}/modules/lc/Utf8/libxlcUTF8Load.la \
+ ${top_builddir}/modules/lc/xlocale/libxlocale.la
+
+OM_LIBS = \
+ ${top_builddir}/modules/om/generic/libxomGeneric.la
+endif
+
+libi18n_la_LIBADD = \
+ $(IM_LIBS) $(LC_LIBS) $(OM_LIBS)
+
+libi18n_la_SOURCES = \
+ $(XI18N_DL_SOURCES) \
+ XDefaultIMIF.c \
+ XDefaultOMIF.c \
+ xim_trans.c\
+ ICWrap.c\
+ IMWrap.c\
+ imKStoUCS.c\
+ lcCT.c\
+ lcCharSet.c\
+ lcConv.c\
+ lcDB.c\
+ lcDynamic.c\
+ lcFile.c\
+ lcGeneric.c\
+ lcInit.c\
+ lcPrTxt.c\
+ lcPubWrap.c\
+ lcPublic.c\
+ lcRM.c\
+ lcStd.c\
+ lcTxtPr.c\
+ lcUTF8.c\
+ lcUtil.c\
+ lcWrap.c\
+ mbWMProps.c\
+ mbWrap.c\
+ utf8WMProps.c\
+ utf8Wrap.c\
+ wcWrap.c\
+ Xaixlcint.h\
+ XimImSw.h\
+ XimProto.h\
+ XimThai.h\
+ XimTrInt.h\
+ XimTrX.h\
+ XimTrans.h\
+ Ximint.h\
+ XimintL.h\
+ XimintP.h\
+ XlcGeneric.h\
+ XlcPubI.h\
+ XlcPublic.h\
+ Xlcint.h\
+ lcUniConv/armscii_8.h\
+ lcUniConv/ascii.h\
+ lcUniConv/big5.h\
+ lcUniConv/big5_emacs.h\
+ lcUniConv/big5hkscs.h\
+ lcUniConv/cp1133.h\
+ lcUniConv/cp1251.h\
+ lcUniConv/cp1255.h\
+ lcUniConv/cp1256.h\
+ lcUniConv/gb2312.h\
+ lcUniConv/gbk.h\
+ lcUniConv/georgian_academy.h\
+ lcUniConv/georgian_ps.h\
+ lcUniConv/iso8859_1.h\
+ lcUniConv/iso8859_10.h\
+ lcUniConv/iso8859_11.h\
+ lcUniConv/iso8859_13.h\
+ lcUniConv/iso8859_14.h\
+ lcUniConv/iso8859_15.h\
+ lcUniConv/iso8859_16.h\
+ lcUniConv/iso8859_2.h\
+ lcUniConv/iso8859_3.h\
+ lcUniConv/iso8859_4.h\
+ lcUniConv/iso8859_5.h\
+ lcUniConv/iso8859_6.h\
+ lcUniConv/iso8859_7.h\
+ lcUniConv/iso8859_8.h\
+ lcUniConv/iso8859_9.h\
+ lcUniConv/iso8859_9e.h\
+ lcUniConv/jisx0201.h\
+ lcUniConv/jisx0208.h\
+ lcUniConv/jisx0212.h\
+ lcUniConv/koi8_c.h\
+ lcUniConv/koi8_r.h\
+ lcUniConv/koi8_u.h\
+ lcUniConv/ksc5601.h\
+ lcUniConv/mulelao.h\
+ lcUniConv/tatar_cyr.h\
+ lcUniConv/tcvn.h\
+ lcUniConv/tis620.h\
+ lcUniConv/ucs2be.h\
+ lcUniConv/utf8.h\
+ lcUniConv/viscii.h
+
+EXTRA_DIST = \
+ lcUniConv/README \
+ lcUniConv/COPYRIGHT \
+ lcUniConv/8bit_tab_to_h.c \
+ lcUniConv/cjk_tab_to_h.c
+
+if LINT
+# Check source code with tools like lint & sparse
+
+ALL_LINT_FLAGS=$(LINT_FLAGS) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
+ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS)
+
+lint:
+ $(LINT) $(ALL_LINT_FLAGS) $(libi18n_la_SOURCES)
+
+endif LINT
diff --git a/libX11/src/xlibi18n/Xaixlcint.h b/libX11/src/xlibi18n/Xaixlcint.h
index 9b455f6bb..446ba2581 100644
--- a/libX11/src/xlibi18n/Xaixlcint.h
+++ b/libX11/src/xlibi18n/Xaixlcint.h
@@ -1,53 +1,53 @@
-/*
- *
- * Copyright IBM Corporation 1993
- *
- * All Rights Reserved
- *
- * License to use, copy, modify, and distribute this software and its
- * documentation for any purpose and without fee is hereby granted,
- * provided that the above copyright notice appear in all copies and that
- * both that copyright notice and this permission notice appear in
- * supporting documentation, and that the name of IBM not be
- * used in advertising or publicity pertaining to distribution of the
- * software without specific, written prior permission.
- *
- * IBM DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
- * ALL IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS, AND
- * NONINFRINGEMENT OF THIRD PARTY RIGHTS, IN NO EVENT SHALL
- * IBM BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
- * ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
- * WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
- * ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
- * SOFTWARE.
- *
-*/
-/************************************************************************/
-/* Xaixlcint.h */
-/*----------------------------------------------------------------------*/
-/* This file contains Xlcint.h extension for AIX. */
-/************************************************************************/
-#ifndef _Xaixlcint_h
-#define _Xaixlcint_h
-
-#include "Xlcint.h"
-#include <sys/lc_core.h>
-
-#define _LC_LDX 11
-#define _LC_LDX_R6 (_LC_LDX+1)
-#define _LC_VERSION_R5 5
-#define _LC_VERSION_R6 6
-
-typedef struct _LC_core_ldx_t {
- _LC_object_t lc_object_header;
- XLCd (*default_loader)();
- Bool sticky;
-} _XlcCoreObjRec, *_XlcCoreObj;
-
-#if _LC_VERSION < 0x40000000
-#define __type_id type_id
-#define __magic magic
-#define __version version
-#endif
-
-#endif /*_Xaixlcint_h*/
+/*
+ *
+ * Copyright IBM Corporation 1993
+ *
+ * All Rights Reserved
+ *
+ * License to use, copy, modify, and distribute this software and its
+ * documentation for any purpose and without fee is hereby granted,
+ * provided that the above copyright notice appear in all copies and that
+ * both that copyright notice and this permission notice appear in
+ * supporting documentation, and that the name of IBM not be
+ * used in advertising or publicity pertaining to distribution of the
+ * software without specific, written prior permission.
+ *
+ * IBM DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
+ * ALL IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS, AND
+ * NONINFRINGEMENT OF THIRD PARTY RIGHTS, IN NO EVENT SHALL
+ * IBM BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
+ * ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
+ * WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
+ * ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
+ * SOFTWARE.
+ *
+*/
+/************************************************************************/
+/* Xaixlcint.h */
+/*----------------------------------------------------------------------*/
+/* This file contains Xlcint.h extension for AIX. */
+/************************************************************************/
+#ifndef _Xaixlcint_h
+#define _Xaixlcint_h
+
+#include "Xlcint.h"
+#include <sys/lc_core.h>
+
+#define _LC_LDX 11
+#define _LC_LDX_R6 (_LC_LDX+1)
+#define _LC_VERSION_R5 5
+#define _LC_VERSION_R6 6
+
+typedef struct _LC_core_ldx_t {
+ _LC_object_t lc_object_header;
+ XLCd (*default_loader)();
+ Bool sticky;
+} _XlcCoreObjRec, *_XlcCoreObj;
+
+#if _LC_VERSION < 0x40000000
+#define __type_id type_id
+#define __magic magic
+#define __version version
+#endif
+
+#endif /*_Xaixlcint_h*/
diff --git a/libX11/src/xlibi18n/XimImSw.h b/libX11/src/xlibi18n/XimImSw.h
index 3883e3eee..e3a962552 100644
--- a/libX11/src/xlibi18n/XimImSw.h
+++ b/libX11/src/xlibi18n/XimImSw.h
@@ -1,46 +1,46 @@
-/******************************************************************
-
- Copyright 1992, 1993 by FUJITSU LIMITED
-
-Permission to use, copy, modify, distribute, and sell this software
-and its documentation for any purpose is hereby granted without fee,
-provided that the above copyright notice appear in all copies and
-that both that copyright notice and this permission notice appear
-in supporting documentation, and that the name of FUJITSU LIMITED
-not be used in advertising or publicity pertaining to distribution
-of the software without specific, written prior permission.
-FUJITSU LIMITED makes no representations about the suitability of
-this software for any purpose.
-It is provided "as is" without express or implied warranty.
-
-FUJITSU LIMITED DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
-INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
-EVENT SHALL FUJITSU LIMITED BE LIABLE FOR ANY SPECIAL, INDIRECT OR
-CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF
-USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
-OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
-PERFORMANCE OF THIS SOFTWARE.
-
- Author: Takashi Fujiwara FUJITSU LIMITED
- fujiwara@a80.tech.yk.fujitsu.co.jp
-
-******************************************************************/
-
-#ifndef _XIMIMSW_H
-#define _XIMIMSW_H
-
-typedef struct {
- Bool (*checkprocessing)(
- Xim im
- );
- Bool (*im_open)(
- Xim im
- );
- void (*im_free)(
- Xim im
- );
-} XimImsportSW;
-
-extern XimImsportSW _XimImSportRec[];
-
-#endif /* _XIMIMSW_H */
+/******************************************************************
+
+ Copyright 1992, 1993 by FUJITSU LIMITED
+
+Permission to use, copy, modify, distribute, and sell this software
+and its documentation for any purpose is hereby granted without fee,
+provided that the above copyright notice appear in all copies and
+that both that copyright notice and this permission notice appear
+in supporting documentation, and that the name of FUJITSU LIMITED
+not be used in advertising or publicity pertaining to distribution
+of the software without specific, written prior permission.
+FUJITSU LIMITED makes no representations about the suitability of
+this software for any purpose.
+It is provided "as is" without express or implied warranty.
+
+FUJITSU LIMITED DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
+INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
+EVENT SHALL FUJITSU LIMITED BE LIABLE FOR ANY SPECIAL, INDIRECT OR
+CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF
+USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
+OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+PERFORMANCE OF THIS SOFTWARE.
+
+ Author: Takashi Fujiwara FUJITSU LIMITED
+ fujiwara@a80.tech.yk.fujitsu.co.jp
+
+******************************************************************/
+
+#ifndef _XIMIMSW_H
+#define _XIMIMSW_H
+
+typedef struct {
+ Bool (*checkprocessing)(
+ Xim im
+ );
+ Bool (*im_open)(
+ Xim im
+ );
+ void (*im_free)(
+ Xim im
+ );
+} XimImsportSW;
+
+extern XimImsportSW _XimImSportRec[];
+
+#endif /* _XIMIMSW_H */
diff --git a/libX11/src/xlibi18n/XimProto.h b/libX11/src/xlibi18n/XimProto.h
index 5d91b210b..9551301a2 100644
--- a/libX11/src/xlibi18n/XimProto.h
+++ b/libX11/src/xlibi18n/XimProto.h
@@ -1,233 +1,233 @@
-/******************************************************************
-
- Copyright 1992, 1993 by FUJITSU LIMITED
-
-Permission to use, copy, modify, distribute, and sell this software
-and its documentation for any purpose is hereby granted without fee,
-provided that the above copyright notice appear in all copies and
-that both that copyright notice and this permission notice appear
-in supporting documentation, and that the name of FUJITSU LIMITED
-not be used in advertising or publicity pertaining to distribution
-of the software without specific, written prior permission.
-FUJITSU LIMITED makes no representations about the suitability of
-this software for any purpose.
-It is provided "as is" without express or implied warranty.
-
-FUJITSU LIMITED DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
-INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
-EVENT SHALL FUJITSU LIMITED BE LIABLE FOR ANY SPECIAL, INDIRECT OR
-CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF
-USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
-OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
-PERFORMANCE OF THIS SOFTWARE.
-
- Author: Takashi Fujiwara FUJITSU LIMITED
- fujiwara@a80.tech.yk.fujitsu.co.jp
-
-******************************************************************/
-
-#ifndef _XIMPROTO_H
-#define _XIMPROTO_H
-
-/*
- * Default Preconnection selection target
- */
-#define XIM_SERVERS "XIM_SERVERS"
-#define XIM_LOCALES "LOCALES"
-#define XIM_TRANSPORT "TRANSPORT"
-
-/*
- * categories in XIM_SERVERS
- */
-#define XIM_SERVER_CATEGORY "@server="
-#define XIM_LOCAL_CATEGORY "@locale="
-#define XIM_TRANSPORT_CATEGORY "@transport="
-
-/*
- * Xim implementation revision
- */
-#define PROTOCOLMAJORVERSION 1
-#define PROTOCOLMINORVERSION 0
-
-/*
- * Major Protocol number
- */
-#define XIM_CONNECT 1
-#define XIM_CONNECT_REPLY 2
-#define XIM_DISCONNECT 3
-#define XIM_DISCONNECT_REPLY 4
-
-#define XIM_AUTH_REQUIRED 10
-#define XIM_AUTH_REPLY 11
-#define XIM_AUTH_NEXT 12
-#define XIM_AUTH_SETUP 13
-#define XIM_AUTH_NG 14
-
-#define XIM_ERROR 20
-
-#define XIM_OPEN 30
-#define XIM_OPEN_REPLY 31
-#define XIM_CLOSE 32
-#define XIM_CLOSE_REPLY 33
-#define XIM_REGISTER_TRIGGERKEYS 34
-#define XIM_TRIGGER_NOTIFY 35
-#define XIM_TRIGGER_NOTIFY_REPLY 36
-#define XIM_SET_EVENT_MASK 37
-#define XIM_ENCODING_NEGOTIATION 38
-#define XIM_ENCODING_NEGOTIATION_REPLY 39
-#define XIM_QUERY_EXTENSION 40
-#define XIM_QUERY_EXTENSION_REPLY 41
-#define XIM_SET_IM_VALUES 42
-#define XIM_SET_IM_VALUES_REPLY 43
-#define XIM_GET_IM_VALUES 44
-#define XIM_GET_IM_VALUES_REPLY 45
-
-#define XIM_CREATE_IC 50
-#define XIM_CREATE_IC_REPLY 51
-#define XIM_DESTROY_IC 52
-#define XIM_DESTROY_IC_REPLY 53
-#define XIM_SET_IC_VALUES 54
-#define XIM_SET_IC_VALUES_REPLY 55
-#define XIM_GET_IC_VALUES 56
-#define XIM_GET_IC_VALUES_REPLY 57
-#define XIM_SET_IC_FOCUS 58
-#define XIM_UNSET_IC_FOCUS 59
-#define XIM_FORWARD_EVENT 60
-#define XIM_SYNC 61
-#define XIM_SYNC_REPLY 62
-#define XIM_COMMIT 63
-#define XIM_RESET_IC 64
-#define XIM_RESET_IC_REPLY 65
-
-#define XIM_GEOMETRY 70
-#define XIM_STR_CONVERSION 71
-#define XIM_STR_CONVERSION_REPLY 72
-#define XIM_PREEDIT_START 73
-#define XIM_PREEDIT_START_REPLY 74
-#define XIM_PREEDIT_DRAW 75
-#define XIM_PREEDIT_CARET 76
-#define XIM_PREEDIT_CARET_REPLY 77
-#define XIM_PREEDIT_DONE 78
-#define XIM_STATUS_START 79
-#define XIM_STATUS_DRAW 80
-#define XIM_STATUS_DONE 81
-#define XIM_PREEDITSTATE 82
-
-/*
- * values for the flag of XIM_ERROR
- */
-#define XIM_IMID_VALID 0x0001
-#define XIM_ICID_VALID 0x0002
-
-/*
- * XIM Error Code
- */
-#define XIM_BadAlloc 1
-#define XIM_BadStyle 2
-#define XIM_BadClientWindow 3
-#define XIM_BadFocusWindow 4
-#define XIM_BadArea 5
-#define XIM_BadSpotLocation 6
-#define XIM_BadColormap 7
-#define XIM_BadAtom 8
-#define XIM_BadPixel 9
-#define XIM_BadPixmap 10
-#define XIM_BadName 11
-#define XIM_BadCursor 12
-#define XIM_BadProtocol 13
-#define XIM_BadForeground 14
-#define XIM_BadBackground 15
-#define XIM_LocaleNotSupported 16
-#define XIM_BadSomething 999
-
-/*
- * byte order
- */
-#ifdef BIGENDIAN
-#undef BIGENDIAN
-#endif
-#ifdef LITTLEENDIAN
-#undef LITTLEENDIAN
-#endif
-
-#define BIGENDIAN (CARD8)0x42 /* MSB first */
-#define LITTLEENDIAN (CARD8)0x6c /* LSB first */
-
-/*
- * values for the type of XIMATTR & XICATTR
- */
-#define XimType_SeparatorOfNestedList 0
-#define XimType_CARD8 1
-#define XimType_CARD16 2
-#define XimType_CARD32 3
-#define XimType_STRING8 4
-#define XimType_Window 5
-#define XimType_XIMStyles 10
-#define XimType_XRectangle 11
-#define XimType_XPoint 12
-#define XimType_XFontSet 13
-#define XimType_XIMOptions 14
-#define XimType_XIMHotKeyTriggers 15
-#define XimType_XIMHotKeyState 16
-#define XimType_XIMStringConversion 17
-#define XimType_NEST 0x7fff
-
-/*
- * values for the category of XIM_ENCODING_NEGITIATON_REPLY
- */
-#define XIM_Encoding_NameCategory 0
-#define XIM_Encoding_DetailCategory 1
-
-/*
- * value for the index of XIM_ENCODING_NEGITIATON_REPLY
- */
-#define XIM_Default_Encoding_IDX -1
-
-/*
- * value for the flag of XIM_FORWARD_EVENT, XIM_COMMIT
- */
-#define XimSYNCHRONUS 0x0001
-#define XimLookupChars 0x0002
-#define XimLookupKeySym 0x0004
-#define XimLookupBoth 0x0006
-
-/*
- * request packet header size
- */
-#define XIM_HEADER_SIZE \
- sizeof(CARD8) /* sizeof mejor-opcode */ \
- + sizeof(CARD8) /* sizeof minor-opcode */ \
- + sizeof(INT16) /* sizeof length */
-
-/*
- * Client Message data size
- */
-#define XIM_CM_DATA_SIZE 20
-
-/*
- * XIM data structure
- */
-typedef CARD16 BITMASK16;
-typedef CARD32 BITMASK32;
-typedef CARD32 EVENTMASK;
-
-typedef CARD16 XIMID; /* Input Method ID */
-typedef CARD16 XICID; /* Input Context ID */
-
-/*
- * Padding macro
- */
-#define XIM_PAD(length) ((4 - ((length) % 4)) % 4)
-
-#define XIM_SET_PAD(ptr, length) \
- { \
- register int Counter = XIM_PAD((int)length); \
- if (Counter) { \
- register char *Ptr = (char *)(ptr) + (length); \
- length += Counter; \
- for (; Counter; --Counter, ++Ptr) \
- *Ptr = '\0'; \
- } \
- }
-
-#endif /* _XIMPROTO_H */
+/******************************************************************
+
+ Copyright 1992, 1993 by FUJITSU LIMITED
+
+Permission to use, copy, modify, distribute, and sell this software
+and its documentation for any purpose is hereby granted without fee,
+provided that the above copyright notice appear in all copies and
+that both that copyright notice and this permission notice appear
+in supporting documentation, and that the name of FUJITSU LIMITED
+not be used in advertising or publicity pertaining to distribution
+of the software without specific, written prior permission.
+FUJITSU LIMITED makes no representations about the suitability of
+this software for any purpose.
+It is provided "as is" without express or implied warranty.
+
+FUJITSU LIMITED DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
+INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
+EVENT SHALL FUJITSU LIMITED BE LIABLE FOR ANY SPECIAL, INDIRECT OR
+CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF
+USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
+OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+PERFORMANCE OF THIS SOFTWARE.
+
+ Author: Takashi Fujiwara FUJITSU LIMITED
+ fujiwara@a80.tech.yk.fujitsu.co.jp
+
+******************************************************************/
+
+#ifndef _XIMPROTO_H
+#define _XIMPROTO_H
+
+/*
+ * Default Preconnection selection target
+ */
+#define XIM_SERVERS "XIM_SERVERS"
+#define XIM_LOCALES "LOCALES"
+#define XIM_TRANSPORT "TRANSPORT"
+
+/*
+ * categories in XIM_SERVERS
+ */
+#define XIM_SERVER_CATEGORY "@server="
+#define XIM_LOCAL_CATEGORY "@locale="
+#define XIM_TRANSPORT_CATEGORY "@transport="
+
+/*
+ * Xim implementation revision
+ */
+#define PROTOCOLMAJORVERSION 1
+#define PROTOCOLMINORVERSION 0
+
+/*
+ * Major Protocol number
+ */
+#define XIM_CONNECT 1
+#define XIM_CONNECT_REPLY 2
+#define XIM_DISCONNECT 3
+#define XIM_DISCONNECT_REPLY 4
+
+#define XIM_AUTH_REQUIRED 10
+#define XIM_AUTH_REPLY 11
+#define XIM_AUTH_NEXT 12
+#define XIM_AUTH_SETUP 13
+#define XIM_AUTH_NG 14
+
+#define XIM_ERROR 20
+
+#define XIM_OPEN 30
+#define XIM_OPEN_REPLY 31
+#define XIM_CLOSE 32
+#define XIM_CLOSE_REPLY 33
+#define XIM_REGISTER_TRIGGERKEYS 34
+#define XIM_TRIGGER_NOTIFY 35
+#define XIM_TRIGGER_NOTIFY_REPLY 36
+#define XIM_SET_EVENT_MASK 37
+#define XIM_ENCODING_NEGOTIATION 38
+#define XIM_ENCODING_NEGOTIATION_REPLY 39
+#define XIM_QUERY_EXTENSION 40
+#define XIM_QUERY_EXTENSION_REPLY 41
+#define XIM_SET_IM_VALUES 42
+#define XIM_SET_IM_VALUES_REPLY 43
+#define XIM_GET_IM_VALUES 44
+#define XIM_GET_IM_VALUES_REPLY 45
+
+#define XIM_CREATE_IC 50
+#define XIM_CREATE_IC_REPLY 51
+#define XIM_DESTROY_IC 52
+#define XIM_DESTROY_IC_REPLY 53
+#define XIM_SET_IC_VALUES 54
+#define XIM_SET_IC_VALUES_REPLY 55
+#define XIM_GET_IC_VALUES 56
+#define XIM_GET_IC_VALUES_REPLY 57
+#define XIM_SET_IC_FOCUS 58
+#define XIM_UNSET_IC_FOCUS 59
+#define XIM_FORWARD_EVENT 60
+#define XIM_SYNC 61
+#define XIM_SYNC_REPLY 62
+#define XIM_COMMIT 63
+#define XIM_RESET_IC 64
+#define XIM_RESET_IC_REPLY 65
+
+#define XIM_GEOMETRY 70
+#define XIM_STR_CONVERSION 71
+#define XIM_STR_CONVERSION_REPLY 72
+#define XIM_PREEDIT_START 73
+#define XIM_PREEDIT_START_REPLY 74
+#define XIM_PREEDIT_DRAW 75
+#define XIM_PREEDIT_CARET 76
+#define XIM_PREEDIT_CARET_REPLY 77
+#define XIM_PREEDIT_DONE 78
+#define XIM_STATUS_START 79
+#define XIM_STATUS_DRAW 80
+#define XIM_STATUS_DONE 81
+#define XIM_PREEDITSTATE 82
+
+/*
+ * values for the flag of XIM_ERROR
+ */
+#define XIM_IMID_VALID 0x0001
+#define XIM_ICID_VALID 0x0002
+
+/*
+ * XIM Error Code
+ */
+#define XIM_BadAlloc 1
+#define XIM_BadStyle 2
+#define XIM_BadClientWindow 3
+#define XIM_BadFocusWindow 4
+#define XIM_BadArea 5
+#define XIM_BadSpotLocation 6
+#define XIM_BadColormap 7
+#define XIM_BadAtom 8
+#define XIM_BadPixel 9
+#define XIM_BadPixmap 10
+#define XIM_BadName 11
+#define XIM_BadCursor 12
+#define XIM_BadProtocol 13
+#define XIM_BadForeground 14
+#define XIM_BadBackground 15
+#define XIM_LocaleNotSupported 16
+#define XIM_BadSomething 999
+
+/*
+ * byte order
+ */
+#ifdef BIGENDIAN
+#undef BIGENDIAN
+#endif
+#ifdef LITTLEENDIAN
+#undef LITTLEENDIAN
+#endif
+
+#define BIGENDIAN (CARD8)0x42 /* MSB first */
+#define LITTLEENDIAN (CARD8)0x6c /* LSB first */
+
+/*
+ * values for the type of XIMATTR & XICATTR
+ */
+#define XimType_SeparatorOfNestedList 0
+#define XimType_CARD8 1
+#define XimType_CARD16 2
+#define XimType_CARD32 3
+#define XimType_STRING8 4
+#define XimType_Window 5
+#define XimType_XIMStyles 10
+#define XimType_XRectangle 11
+#define XimType_XPoint 12
+#define XimType_XFontSet 13
+#define XimType_XIMOptions 14
+#define XimType_XIMHotKeyTriggers 15
+#define XimType_XIMHotKeyState 16
+#define XimType_XIMStringConversion 17
+#define XimType_NEST 0x7fff
+
+/*
+ * values for the category of XIM_ENCODING_NEGITIATON_REPLY
+ */
+#define XIM_Encoding_NameCategory 0
+#define XIM_Encoding_DetailCategory 1
+
+/*
+ * value for the index of XIM_ENCODING_NEGITIATON_REPLY
+ */
+#define XIM_Default_Encoding_IDX -1
+
+/*
+ * value for the flag of XIM_FORWARD_EVENT, XIM_COMMIT
+ */
+#define XimSYNCHRONUS 0x0001
+#define XimLookupChars 0x0002
+#define XimLookupKeySym 0x0004
+#define XimLookupBoth 0x0006
+
+/*
+ * request packet header size
+ */
+#define XIM_HEADER_SIZE \
+ sizeof(CARD8) /* sizeof mejor-opcode */ \
+ + sizeof(CARD8) /* sizeof minor-opcode */ \
+ + sizeof(INT16) /* sizeof length */
+
+/*
+ * Client Message data size
+ */
+#define XIM_CM_DATA_SIZE 20
+
+/*
+ * XIM data structure
+ */
+typedef CARD16 BITMASK16;
+typedef CARD32 BITMASK32;
+typedef CARD32 EVENTMASK;
+
+typedef CARD16 XIMID; /* Input Method ID */
+typedef CARD16 XICID; /* Input Context ID */
+
+/*
+ * Padding macro
+ */
+#define XIM_PAD(length) ((4 - ((length) % 4)) % 4)
+
+#define XIM_SET_PAD(ptr, length) \
+ { \
+ register int Counter = XIM_PAD((int)length); \
+ if (Counter) { \
+ register char *Ptr = (char *)(ptr) + (length); \
+ length += Counter; \
+ for (; Counter; --Counter, ++Ptr) \
+ *Ptr = '\0'; \
+ } \
+ }
+
+#endif /* _XIMPROTO_H */
diff --git a/libX11/src/xlibi18n/XimThai.h b/libX11/src/xlibi18n/XimThai.h
index f0d3be762..e4c476cf6 100644
--- a/libX11/src/xlibi18n/XimThai.h
+++ b/libX11/src/xlibi18n/XimThai.h
@@ -1,110 +1,110 @@
-/***********************************************************
-
-Copyright 1993, 1998 The Open Group
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall not be
-used in advertising or otherwise to promote the sale, use or other dealings
-in this Software without prior written authorization from The Open Group.
-
-
-Copyright 1993 by Digital Equipment Corporation, Maynard, Massachusetts.
-
- All Rights Reserved
-
-Permission to use, copy, modify, and distribute this software and its
-documentation for any purpose and without fee is hereby granted,
-provided that the above copyright notice appear in all copies and that
-both that copyright notice and this permission notice appear in
-supporting documentation, and that the name of Digital not be
-used in advertising or publicity pertaining to distribution of the
-software without specific, written prior permission.
-
-DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
-ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
-DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
-ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
-WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
-ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
-SOFTWARE.
-
-******************************************************************/
-
-/*
-**++
-** FACILITY:
-**
-** Xlib
-**
-** ABSTRACT:
-**
-** Definition file for Thai specific functions.
-**
-** MODIFICATION HISTORY:
-**
-**/
-
-#ifndef _XIMTHAI_H_
-#define _XIMTHAI_H_
-
-#include <X11/Xlib.h>
-
-/* Classification of characters in TIS620 according to WTT */
-
-#define CTRL 0 /* control chars */
-#define NON 1 /* non composibles */
-#define CONS 2 /* consonants */
-#define LV 3 /* leading vowels */
-#define FV1 4 /* following vowels */
-#define FV2 5
-#define FV3 6
-#define BV1 7 /* below vowels */
-#define BV2 8
-#define BD 9 /* below diacritics */
-#define TONE 10 /* tonemarks */
-#define AD1 11 /* above diacritics */
-#define AD2 12
-#define AD3 13
-#define AV1 14 /* above vowels */
-#define AV2 15
-#define AV3 16
-
-
-/* extended classification */
-
-#define DEAD 17 /* group of non-spacing characters */
-
-
-/* display levels in display cell */
-
-#define NONDISP 0 /* non displayable */
-#define TOP 1
-#define ABOVE 2
-#define BASE 3
-#define BELOW 4
-
-
-/* Input Sequence Check modes */
-
-#define WTT_ISC1 1 /* WTT default ISC mode */
-#define WTT_ISC2 2 /* WTT strict ISC mode */
-#define THAICAT_ISC 3 /* THAICAT ISC mode */
-#define NOISC 255 /* No ISC */
-
-
-#endif /* _XIMTHAI_H_ */
+/***********************************************************
+
+Copyright 1993, 1998 The Open Group
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group shall not be
+used in advertising or otherwise to promote the sale, use or other dealings
+in this Software without prior written authorization from The Open Group.
+
+
+Copyright 1993 by Digital Equipment Corporation, Maynard, Massachusetts.
+
+ All Rights Reserved
+
+Permission to use, copy, modify, and distribute this software and its
+documentation for any purpose and without fee is hereby granted,
+provided that the above copyright notice appear in all copies and that
+both that copyright notice and this permission notice appear in
+supporting documentation, and that the name of Digital not be
+used in advertising or publicity pertaining to distribution of the
+software without specific, written prior permission.
+
+DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
+ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
+DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
+ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
+WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
+ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
+SOFTWARE.
+
+******************************************************************/
+
+/*
+**++
+** FACILITY:
+**
+** Xlib
+**
+** ABSTRACT:
+**
+** Definition file for Thai specific functions.
+**
+** MODIFICATION HISTORY:
+**
+**/
+
+#ifndef _XIMTHAI_H_
+#define _XIMTHAI_H_
+
+#include <X11/Xlib.h>
+
+/* Classification of characters in TIS620 according to WTT */
+
+#define CTRL 0 /* control chars */
+#define NON 1 /* non composibles */
+#define CONS 2 /* consonants */
+#define LV 3 /* leading vowels */
+#define FV1 4 /* following vowels */
+#define FV2 5
+#define FV3 6
+#define BV1 7 /* below vowels */
+#define BV2 8
+#define BD 9 /* below diacritics */
+#define TONE 10 /* tonemarks */
+#define AD1 11 /* above diacritics */
+#define AD2 12
+#define AD3 13
+#define AV1 14 /* above vowels */
+#define AV2 15
+#define AV3 16
+
+
+/* extended classification */
+
+#define DEAD 17 /* group of non-spacing characters */
+
+
+/* display levels in display cell */
+
+#define NONDISP 0 /* non displayable */
+#define TOP 1
+#define ABOVE 2
+#define BASE 3
+#define BELOW 4
+
+
+/* Input Sequence Check modes */
+
+#define WTT_ISC1 1 /* WTT default ISC mode */
+#define WTT_ISC2 2 /* WTT strict ISC mode */
+#define THAICAT_ISC 3 /* THAICAT ISC mode */
+#define NOISC 255 /* No ISC */
+
+
+#endif /* _XIMTHAI_H_ */
diff --git a/libX11/src/xlibi18n/XimTrInt.h b/libX11/src/xlibi18n/XimTrInt.h
index 83919ddfa..a08ac0308 100644
--- a/libX11/src/xlibi18n/XimTrInt.h
+++ b/libX11/src/xlibi18n/XimTrInt.h
@@ -1,85 +1,85 @@
-/*
- * Copyright 1992 Oracle and/or its affiliates. All rights reserved.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice (including the next
- * paragraph) shall be included in all copies or substantial portions of the
- * Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
- * DEALINGS IN THE SOFTWARE.
- */
-/******************************************************************
-
- Copyright 1993, 1994 by FUJITSU LIMITED
-
-Permission to use, copy, modify, distribute, and sell this software
-and its documentation for any purpose is hereby granted without fee,
-provided that the above copyright notice appear in all copies and
-that both that copyright notice and this permission notice appear
-in supporting documentation, and that the name of FUJITSU LIMITED
-not be used in advertising or publicity pertaining to distribution
-of the software without specific, written prior permission.
-FUJITSU LIMITED makes no representations about the suitability of
-this software for any purpose.
-It is provided "as is" without express or implied warranty.
-
-FUJITSU LIMITED DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
-INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
-EVENT SHALL FUJITSU LIMITED BE LIABLE FOR ANY SPECIAL, INDIRECT OR
-CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF
-USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
-OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
-PERFORMANCE OF THIS SOFTWARE.
-
- Author: Hideki Hiura (hhiura@Sun.COM) Sun Microsystems, Inc.
- Takashi Fujiwara FUJITSU LIMITED
- fujiwara@a80.tech.yk.fujitsu.co.jp
-
-******************************************************************/
-
-#ifndef _XIMTRINT_H
-#define _XIMTRINT_H
-
-#include "Ximint.h"
-
-typedef struct {
- const char *transportname;
- Bool (*config)(
- Xim,
- char *
- );
-} TransportSW;
-
-extern TransportSW _XimTransportRec[];
-
-/*
- * Global symbols
- */
-
-extern Bool _XimXConf(
- Xim im,
- char *address
-);
-
-#if defined(TCPCONN) || defined(UNIXCONN) || defined(DNETCONN) || defined(STREAMSCONN)
-
-extern Bool _XimTransConf(
- Xim im,
- char *address
-);
-
-#endif
-
-#endif /* _XIMTRINT_H */
+/*
+ * Copyright 1992 Oracle and/or its affiliates. All rights reserved.
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice (including the next
+ * paragraph) shall be included in all copies or substantial portions of the
+ * Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+ * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+ * DEALINGS IN THE SOFTWARE.
+ */
+/******************************************************************
+
+ Copyright 1993, 1994 by FUJITSU LIMITED
+
+Permission to use, copy, modify, distribute, and sell this software
+and its documentation for any purpose is hereby granted without fee,
+provided that the above copyright notice appear in all copies and
+that both that copyright notice and this permission notice appear
+in supporting documentation, and that the name of FUJITSU LIMITED
+not be used in advertising or publicity pertaining to distribution
+of the software without specific, written prior permission.
+FUJITSU LIMITED makes no representations about the suitability of
+this software for any purpose.
+It is provided "as is" without express or implied warranty.
+
+FUJITSU LIMITED DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
+INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
+EVENT SHALL FUJITSU LIMITED BE LIABLE FOR ANY SPECIAL, INDIRECT OR
+CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF
+USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
+OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+PERFORMANCE OF THIS SOFTWARE.
+
+ Author: Hideki Hiura (hhiura@Sun.COM) Sun Microsystems, Inc.
+ Takashi Fujiwara FUJITSU LIMITED
+ fujiwara@a80.tech.yk.fujitsu.co.jp
+
+******************************************************************/
+
+#ifndef _XIMTRINT_H
+#define _XIMTRINT_H
+
+#include "Ximint.h"
+
+typedef struct {
+ const char *transportname;
+ Bool (*config)(
+ Xim,
+ char *
+ );
+} TransportSW;
+
+extern TransportSW _XimTransportRec[];
+
+/*
+ * Global symbols
+ */
+
+extern Bool _XimXConf(
+ Xim im,
+ char *address
+);
+
+#if defined(TCPCONN) || defined(UNIXCONN) || defined(DNETCONN) || defined(STREAMSCONN)
+
+extern Bool _XimTransConf(
+ Xim im,
+ char *address
+);
+
+#endif
+
+#endif /* _XIMTRINT_H */
diff --git a/libX11/src/xlibi18n/XimTrX.h b/libX11/src/xlibi18n/XimTrX.h
index c4c3be769..198d5fa5f 100644
--- a/libX11/src/xlibi18n/XimTrX.h
+++ b/libX11/src/xlibi18n/XimTrX.h
@@ -1,85 +1,85 @@
-/*
- * Copyright 1992 Oracle and/or its affiliates. All rights reserved.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice (including the next
- * paragraph) shall be included in all copies or substantial portions of the
- * Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
- * DEALINGS IN THE SOFTWARE.
- */
-/******************************************************************
-
- Copyright 1992, 1993, 1994 by FUJITSU LIMITED
-
-Permission to use, copy, modify, distribute, and sell this software
-and its documentation for any purpose is hereby granted without fee,
-provided that the above copyright notice appear in all copies and
-that both that copyright notice and this permission notice appear
-in supporting documentation, and that the name of FUJITSU LIMITED
-not be used in advertising or publicity pertaining to distribution
-of the software without specific, written prior permission.
-FUJITSU LIMITED makes no representations about the suitability of
-this software for any purpose.
-It is provided "as is" without express or implied warranty.
-
-FUJITSU LIMITED DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
-INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
-EVENT SHALL FUJITSU LIMITED BE LIABLE FOR ANY SPECIAL, INDIRECT OR
-CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF
-USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
-OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
-PERFORMANCE OF THIS SOFTWARE.
-
- Author: Hideki Hiura (hhiura@Sun.COM) Sun Microsystems, Inc.
- Takashi Fujiwara FUJITSU LIMITED
- fujiwara@a80.tech.yk.fujitsu.co.jp
-
-******************************************************************/
-
-#ifndef _XIMTRX_H
-#define _XIMTRX_H
-
-typedef struct _XIntrCallbackRec *XIntrCallbackPtr;
-
-typedef struct _XIntrCallbackRec {
- Bool (*func)(
- Xim, INT16, XPointer, XPointer
-);
- XPointer call_data;
- XIntrCallbackPtr next;
-} XIntrCallbackRec ;
-
-typedef struct _XSpecRec {
- XIntrCallbackPtr intr_cb;
- Atom imconnectid;
- Atom improtocolid;
- Atom immoredataid;
- Window lib_connect_wid;
- Window ims_connect_wid;
- XPointer ev;
- CARD32 major_code;
- CARD32 minor_code;
- CARD32 BoundarySize;
-} XSpecRec;
-
-#define _XIM_PROTOCOL "_XIM_PROTOCOL"
-#define _XIM_XCONNECT "_XIM_XCONNECT"
-#define _XIM_MOREDATA "_XIM_MOREDATA"
-
-#define MAJOR_TRANSPORT_VERSION 0
-#define MINOR_TRANSPORT_VERSION 0
-
-#endif /* _XIMTRX_H */
+/*
+ * Copyright 1992 Oracle and/or its affiliates. All rights reserved.
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice (including the next
+ * paragraph) shall be included in all copies or substantial portions of the
+ * Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+ * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+ * DEALINGS IN THE SOFTWARE.
+ */
+/******************************************************************
+
+ Copyright 1992, 1993, 1994 by FUJITSU LIMITED
+
+Permission to use, copy, modify, distribute, and sell this software
+and its documentation for any purpose is hereby granted without fee,
+provided that the above copyright notice appear in all copies and
+that both that copyright notice and this permission notice appear
+in supporting documentation, and that the name of FUJITSU LIMITED
+not be used in advertising or publicity pertaining to distribution
+of the software without specific, written prior permission.
+FUJITSU LIMITED makes no representations about the suitability of
+this software for any purpose.
+It is provided "as is" without express or implied warranty.
+
+FUJITSU LIMITED DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
+INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
+EVENT SHALL FUJITSU LIMITED BE LIABLE FOR ANY SPECIAL, INDIRECT OR
+CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF
+USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
+OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+PERFORMANCE OF THIS SOFTWARE.
+
+ Author: Hideki Hiura (hhiura@Sun.COM) Sun Microsystems, Inc.
+ Takashi Fujiwara FUJITSU LIMITED
+ fujiwara@a80.tech.yk.fujitsu.co.jp
+
+******************************************************************/
+
+#ifndef _XIMTRX_H
+#define _XIMTRX_H
+
+typedef struct _XIntrCallbackRec *XIntrCallbackPtr;
+
+typedef struct _XIntrCallbackRec {
+ Bool (*func)(
+ Xim, INT16, XPointer, XPointer
+);
+ XPointer call_data;
+ XIntrCallbackPtr next;
+} XIntrCallbackRec ;
+
+typedef struct _XSpecRec {
+ XIntrCallbackPtr intr_cb;
+ Atom imconnectid;
+ Atom improtocolid;
+ Atom immoredataid;
+ Window lib_connect_wid;
+ Window ims_connect_wid;
+ XPointer ev;
+ CARD32 major_code;
+ CARD32 minor_code;
+ CARD32 BoundarySize;
+} XSpecRec;
+
+#define _XIM_PROTOCOL "_XIM_PROTOCOL"
+#define _XIM_XCONNECT "_XIM_XCONNECT"
+#define _XIM_MOREDATA "_XIM_MOREDATA"
+
+#define MAJOR_TRANSPORT_VERSION 0
+#define MINOR_TRANSPORT_VERSION 0
+
+#endif /* _XIMTRX_H */
diff --git a/libX11/src/xlibi18n/XimTrans.h b/libX11/src/xlibi18n/XimTrans.h
index 8de1465aa..8c3aa829a 100644
--- a/libX11/src/xlibi18n/XimTrans.h
+++ b/libX11/src/xlibi18n/XimTrans.h
@@ -1,136 +1,136 @@
-/*
- * Copyright 1992 Oracle and/or its affiliates. All rights reserved.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice (including the next
- * paragraph) shall be included in all copies or substantial portions of the
- * Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
- * DEALINGS IN THE SOFTWARE.
- */
-/******************************************************************
-
- Copyright 1992, 1993, 1994 by FUJITSU LIMITED
-
-Permission to use, copy, modify, distribute, and sell this software
-and its documentation for any purpose is hereby granted without fee,
-provided that the above copyright notice appear in all copies and
-that both that copyright notice and this permission notice appear
-in supporting documentation, and that the name of FUJITSU LIMITED
-not be used in advertising or publicity pertaining to distribution
-of the software without specific, written prior permission.
-FUJITSU LIMITED makes no representations about the suitability of
-this software for any purpose.
-It is provided "as is" without express or implied warranty.
-
-FUJITSU LIMITED DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
-INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
-EVENT SHALL FUJITSU LIMITED BE LIABLE FOR ANY SPECIAL, INDIRECT OR
-CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF
-USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
-OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
-PERFORMANCE OF THIS SOFTWARE.
-
- Author: Hideki Hiura (hhiura@Sun.COM) Sun Microsystems, Inc.
- Takashi Fujiwara FUJITSU LIMITED
- fujiwara@a80.tech.yk.fujitsu.co.jp
-
-******************************************************************/
-
-#ifndef _XIMTRANS_H
-#define _XIMTRANS_H
-
-typedef struct _TransIntrCallbackRec *TransIntrCallbackPtr;
-
-typedef struct _TransIntrCallbackRec {
- Bool (*func)(
- Xim, INT16, XPointer, XPointer
- );
- XPointer call_data;
- TransIntrCallbackPtr next;
-} TransIntrCallbackRec ;
-
-typedef struct {
- TransIntrCallbackPtr intr_cb;
- struct _XtransConnInfo *trans_conn; /* transport connection object */
- int fd;
- char *address;
- Window window;
- Bool is_putback;
-} TransSpecRec;
-
-
-/*
- * Prototypes
- */
-
-extern Bool _XimTransRegisterDispatcher(
- Xim im,
- Bool (*callback)(
- Xim, INT16, XPointer, XPointer
- ),
- XPointer call_data
-);
-
-
-extern Bool _XimTransIntrCallback(
- Xim im,
- Bool (*callback)(
- Xim, INT16, XPointer, XPointer
- ),
- XPointer call_data
-);
-
-extern Bool _XimTransCallDispatcher(
- Xim im,
- INT16 len,
- XPointer data
-);
-
-extern void _XimFreeTransIntrCallback(
- Xim im
-);
-
-extern Bool _XimTransFilterWaitEvent(
- Display *d,
- Window w,
- XEvent *ev,
- XPointer arg
-);
-
-extern void _XimTransInternalConnection(
- Display *d,
- int fd,
- XPointer arg
-);
-
-extern Bool _XimTransWrite(
- Xim im,
- INT16 len,
- XPointer data
-);
-
-extern Bool _XimTransRead(
- Xim im,
- XPointer recv_buf,
- int buf_len,
- int *ret_len
-);
-
-extern void _XimTransFlush(
- Xim im
-);
-
-#endif /* _XIMTRANS__H */
+/*
+ * Copyright 1992 Oracle and/or its affiliates. All rights reserved.
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice (including the next
+ * paragraph) shall be included in all copies or substantial portions of the
+ * Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+ * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+ * DEALINGS IN THE SOFTWARE.
+ */
+/******************************************************************
+
+ Copyright 1992, 1993, 1994 by FUJITSU LIMITED
+
+Permission to use, copy, modify, distribute, and sell this software
+and its documentation for any purpose is hereby granted without fee,
+provided that the above copyright notice appear in all copies and
+that both that copyright notice and this permission notice appear
+in supporting documentation, and that the name of FUJITSU LIMITED
+not be used in advertising or publicity pertaining to distribution
+of the software without specific, written prior permission.
+FUJITSU LIMITED makes no representations about the suitability of
+this software for any purpose.
+It is provided "as is" without express or implied warranty.
+
+FUJITSU LIMITED DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
+INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
+EVENT SHALL FUJITSU LIMITED BE LIABLE FOR ANY SPECIAL, INDIRECT OR
+CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF
+USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
+OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+PERFORMANCE OF THIS SOFTWARE.
+
+ Author: Hideki Hiura (hhiura@Sun.COM) Sun Microsystems, Inc.
+ Takashi Fujiwara FUJITSU LIMITED
+ fujiwara@a80.tech.yk.fujitsu.co.jp
+
+******************************************************************/
+
+#ifndef _XIMTRANS_H
+#define _XIMTRANS_H
+
+typedef struct _TransIntrCallbackRec *TransIntrCallbackPtr;
+
+typedef struct _TransIntrCallbackRec {
+ Bool (*func)(
+ Xim, INT16, XPointer, XPointer
+ );
+ XPointer call_data;
+ TransIntrCallbackPtr next;
+} TransIntrCallbackRec ;
+
+typedef struct {
+ TransIntrCallbackPtr intr_cb;
+ struct _XtransConnInfo *trans_conn; /* transport connection object */
+ int fd;
+ char *address;
+ Window window;
+ Bool is_putback;
+} TransSpecRec;
+
+
+/*
+ * Prototypes
+ */
+
+extern Bool _XimTransRegisterDispatcher(
+ Xim im,
+ Bool (*callback)(
+ Xim, INT16, XPointer, XPointer
+ ),
+ XPointer call_data
+);
+
+
+extern Bool _XimTransIntrCallback(
+ Xim im,
+ Bool (*callback)(
+ Xim, INT16, XPointer, XPointer
+ ),
+ XPointer call_data
+);
+
+extern Bool _XimTransCallDispatcher(
+ Xim im,
+ INT16 len,
+ XPointer data
+);
+
+extern void _XimFreeTransIntrCallback(
+ Xim im
+);
+
+extern Bool _XimTransFilterWaitEvent(
+ Display *d,
+ Window w,
+ XEvent *ev,
+ XPointer arg
+);
+
+extern void _XimTransInternalConnection(
+ Display *d,
+ int fd,
+ XPointer arg
+);
+
+extern Bool _XimTransWrite(
+ Xim im,
+ INT16 len,
+ XPointer data
+);
+
+extern Bool _XimTransRead(
+ Xim im,
+ XPointer recv_buf,
+ int buf_len,
+ int *ret_len
+);
+
+extern void _XimTransFlush(
+ Xim im
+);
+
+#endif /* _XIMTRANS__H */
diff --git a/libX11/src/xlibi18n/XimintL.h b/libX11/src/xlibi18n/XimintL.h
index cb67cf624..d2d92387f 100644
--- a/libX11/src/xlibi18n/XimintL.h
+++ b/libX11/src/xlibi18n/XimintL.h
@@ -1,106 +1,106 @@
-/******************************************************************
-
- Copyright 1991, 1992, 1993, 1994 by FUJITSU LIMITED
- Copyright 1993 by Digital Equipment Corporation
-
-Permission to use, copy, modify, distribute, and sell this software
-and its documentation for any purpose is hereby granted without fee,
-provided that the above copyright notice appear in all copies and that
-both that copyright notice and this permission notice appear in
-supporting documentation, and that the name of FUJITSU LIMITED and
-Digital Equipment Corporation not be used in advertising or publicity
-pertaining to distribution of the software without specific, written
-prior permission. FUJITSU LIMITED and Digital Equipment Corporation
-makes no representations about the suitability of this software for
-any purpose. It is provided "as is" without express or implied
-warranty.
-
-FUJITSU LIMITED AND DIGITAL EQUIPMENT CORPORATION DISCLAIM ALL
-WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED
-WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
-FUJITSU LIMITED AND DIGITAL EQUIPMENT CORPORATION BE LIABLE FOR
-ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
-WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER
-IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
-ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF
-THIS SOFTWARE.
-
- Author: Takashi Fujiwara FUJITSU LIMITED
- fujiwara@a80.tech.yk.fujitsu.co.jp
- Modifier: Franky Ling Digital Equipment Corporation
- frankyling@hgrd01.enet.dec.com
-
-******************************************************************/
-
-#ifndef _XIMINTL_H
-#define _XIMINTL_H
-
-#define COMPOSE_FILE "Compose"
-
-/*
- * Data Structures for Local Processing
- */
-typedef INT32 DTIndex;
-typedef INT32 DTCharIndex;
-typedef BITS32 DTModifier;
-
-typedef struct _DefTree {
- DTIndex next;
- DTIndex succession; /* successive Key Sequence */
- /* Key definitions */
- DTModifier modifier_mask;
- DTModifier modifier;
- KeySym keysym; /* leaf only */
- DTCharIndex mb;
- DTCharIndex wc; /* make from mb */
- DTCharIndex utf8; /* make from mb */
- KeySym ks;
-} DefTree;
-
-typedef struct _DefTreeBase {
- DefTree *tree;
- char *mb;
- wchar_t *wc;
- char *utf8;
- DTIndex treeused, treesize;
- DTCharIndex mbused, mbsize;
- DTCharIndex wcused, wcsize;
- DTCharIndex utf8used, utf8size;
-} DefTreeBase;
-
-typedef struct _XimLocalPrivateRec {
- /* The first fields are identical with XimCommonPrivateRec. */
- XlcConv ctom_conv;
- XlcConv ctow_conv;
- XlcConv ctoutf8_conv;
- XlcConv cstomb_conv;
- XlcConv cstowc_conv;
- XlcConv cstoutf8_conv;
- XlcConv ucstoc_conv;
- XlcConv ucstoutf8_conv;
-
- XIC current_ic;
- DefTreeBase base;
- DTIndex top;
-} XimLocalPrivateRec;
-
-typedef struct _XicThaiPart {
- int comp_state;
- KeySym keysym;
- int input_mode;
-} XicThaiPart;
-
-typedef struct _XicLocalPrivateRec {
- long value_mask;
- DefTreeBase base;
- DTIndex context;
- DTIndex composed;
- XicThaiPart thai;
-
- XIMResourceList ic_resources;
- unsigned int ic_num_resources;
-
- unsigned char brl_pressed, brl_committing, brl_committed;
- Time brl_release_start;
-} XicLocalPrivateRec;
-#endif /* _XIMINTL_H */
+/******************************************************************
+
+ Copyright 1991, 1992, 1993, 1994 by FUJITSU LIMITED
+ Copyright 1993 by Digital Equipment Corporation
+
+Permission to use, copy, modify, distribute, and sell this software
+and its documentation for any purpose is hereby granted without fee,
+provided that the above copyright notice appear in all copies and that
+both that copyright notice and this permission notice appear in
+supporting documentation, and that the name of FUJITSU LIMITED and
+Digital Equipment Corporation not be used in advertising or publicity
+pertaining to distribution of the software without specific, written
+prior permission. FUJITSU LIMITED and Digital Equipment Corporation
+makes no representations about the suitability of this software for
+any purpose. It is provided "as is" without express or implied
+warranty.
+
+FUJITSU LIMITED AND DIGITAL EQUIPMENT CORPORATION DISCLAIM ALL
+WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
+FUJITSU LIMITED AND DIGITAL EQUIPMENT CORPORATION BE LIABLE FOR
+ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER
+IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
+ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF
+THIS SOFTWARE.
+
+ Author: Takashi Fujiwara FUJITSU LIMITED
+ fujiwara@a80.tech.yk.fujitsu.co.jp
+ Modifier: Franky Ling Digital Equipment Corporation
+ frankyling@hgrd01.enet.dec.com
+
+******************************************************************/
+
+#ifndef _XIMINTL_H
+#define _XIMINTL_H
+
+#define COMPOSE_FILE "Compose"
+
+/*
+ * Data Structures for Local Processing
+ */
+typedef INT32 DTIndex;
+typedef INT32 DTCharIndex;
+typedef BITS32 DTModifier;
+
+typedef struct _DefTree {
+ DTIndex next;
+ DTIndex succession; /* successive Key Sequence */
+ /* Key definitions */
+ DTModifier modifier_mask;
+ DTModifier modifier;
+ KeySym keysym; /* leaf only */
+ DTCharIndex mb;
+ DTCharIndex wc; /* make from mb */
+ DTCharIndex utf8; /* make from mb */
+ KeySym ks;
+} DefTree;
+
+typedef struct _DefTreeBase {
+ DefTree *tree;
+ char *mb;
+ wchar_t *wc;
+ char *utf8;
+ DTIndex treeused, treesize;
+ DTCharIndex mbused, mbsize;
+ DTCharIndex wcused, wcsize;
+ DTCharIndex utf8used, utf8size;
+} DefTreeBase;
+
+typedef struct _XimLocalPrivateRec {
+ /* The first fields are identical with XimCommonPrivateRec. */
+ XlcConv ctom_conv;
+ XlcConv ctow_conv;
+ XlcConv ctoutf8_conv;
+ XlcConv cstomb_conv;
+ XlcConv cstowc_conv;
+ XlcConv cstoutf8_conv;
+ XlcConv ucstoc_conv;
+ XlcConv ucstoutf8_conv;
+
+ XIC current_ic;
+ DefTreeBase base;
+ DTIndex top;
+} XimLocalPrivateRec;
+
+typedef struct _XicThaiPart {
+ int comp_state;
+ KeySym keysym;
+ int input_mode;
+} XicThaiPart;
+
+typedef struct _XicLocalPrivateRec {
+ long value_mask;
+ DefTreeBase base;
+ DTIndex context;
+ DTIndex composed;
+ XicThaiPart thai;
+
+ XIMResourceList ic_resources;
+ unsigned int ic_num_resources;
+
+ unsigned char brl_pressed, brl_committing, brl_committed;
+ Time brl_release_start;
+} XicLocalPrivateRec;
+#endif /* _XIMINTL_H */
diff --git a/libX11/src/xlibi18n/XlcGeneric.h b/libX11/src/xlibi18n/XlcGeneric.h
index 99bbb7f8f..0c008fdaa 100644
--- a/libX11/src/xlibi18n/XlcGeneric.h
+++ b/libX11/src/xlibi18n/XlcGeneric.h
@@ -1,162 +1,162 @@
-/*
- * Copyright 1992, 1993 by TOSHIBA Corp.
- *
- * Permission to use, copy, modify, and distribute this software and its
- * documentation for any purpose and without fee is hereby granted, provided
- * that the above copyright notice appear in all copies and that both that
- * copyright notice and this permission notice appear in supporting
- * documentation, and that the name of TOSHIBA not be used in advertising
- * or publicity pertaining to distribution of the software without specific,
- * written prior permission. TOSHIBA make no representations about the
- * suitability of this software for any purpose. It is provided "as is"
- * without express or implied warranty.
- *
- * TOSHIBA DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
- * ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
- * TOSHIBA BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
- * ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
- * WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
- * ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
- * SOFTWARE.
- *
- * Author: Katsuhisa Yano TOSHIBA Corp.
- * mopi@osa.ilab.toshiba.co.jp
- */
-/*
- * Copyright 1995 by FUJITSU LIMITED
- * This is source code modified by FUJITSU LIMITED under the Joint
- * Development Agreement for the CDE/Motif PST.
- *
- * Modifier: Takanori Tateno FUJITSU LIMITED
- *
- */
-
-#ifndef _XLCGENERIC_H_
-#define _XLCGENERIC_H_
-
-#include "XlcPubI.h"
-
-typedef struct _ByteInfo {
- unsigned char start,end;
-} ByteInfoRec, *ByteInfo;
-
-typedef struct _ByteInfoList {
- int M; /* 1 <= M <= length */
- int byteinfo_num;
- ByteInfo byteinfo;
-} ByteInfoListRec, *ByteInfoList;
-
-/* conversion_type values */
-#define LOCALCONV 1
-#define FILECONV 2
-#define FUNCTIONCONV 4
-
-typedef struct _Conversion {
- unsigned long conversion_type;
- int conv_num;
- FontScope convlist;
- char *cnv_file;
- XlcConv cnvfunc;
-} ConversionRec, *Conversion;
-
-typedef struct _ExtdSegment {
- char *name;
- XlcSide side;
- FontScope area;
- int area_num;
- XlcCharSet charset;
-} ExtdSegmentRec, *ExtdSegment;
-
-typedef struct _SegConvRec {
- int length;
- char *source_encoding;
- XlcCharSet source;
- char *destination_encoding;
- XlcCharSet dest;
- FontScopeRec range;
- int conv_num;
- FontScope conv;
-} SegConvRec, *SegConv;
-
-typedef struct _ParseInfoRec *ParseInfo;
-
-typedef struct _CodeSetRec {
- XlcCharSet *charset_list;
- int num_charsets;
- int cs_num;
- XlcSide side;
- int length;
- ByteInfoList byteM;
- Conversion mbconv;
- Conversion ctconv;
- ExtdSegment ctextseg;
- ParseInfo parse_info;
- unsigned long wc_encoding;
- Bool string_encoding;
-} CodeSetRec, *CodeSet;
-
-typedef enum {
- E_GL, /* GL encoding */
- E_GR, /* GR encoding */
- E_SS, /* single shift */
- E_LSL, /* locking shift left */
- E_LSR, /* locking shift right */
- E_LAST
-} EncodingType;
-
-typedef struct _ParseInfoRec {
- EncodingType type;
- char *encoding;
- CodeSet codeset;
-} ParseInfoRec;
-
-/*
- * XLCd private data
- */
-
-#define XLC_GENERIC(lcd, x) (((XLCdGeneric) lcd->core)->gen.x)
-#define XLC_GENERIC_PART(lcd) (&(((XLCdGeneric) lcd->core)->gen))
-
-typedef struct _XLCdGenericPart {
- int codeset_num;
- CodeSet *codeset_list;
- unsigned char *mb_parse_table;
- int mb_parse_list_num;
- ParseInfo *mb_parse_list;
- unsigned long wc_encode_mask;
- unsigned long wc_shift_bits;
- CodeSet initial_state_GL;
- CodeSet initial_state_GR;
- int segment_conv_num; /* UDC */
- SegConv segment_conv; /* UDC */
- Bool use_stdc_env;
- Bool force_convert_to_mb;
-} XLCdGenericPart;
-
-typedef struct _XLCdGenericRec {
- XLCdCoreRec core;
- XLCdPublicPart pub;
- XLCdGenericPart gen;
-} XLCdGenericRec, *XLCdGeneric;
-
-extern XLCdMethods _XlcGenericMethods;
-
-extern FontScope
-_XlcParse_scopemaps(
- const char *str,
- int *size);
-extern void
-_XlcDbg_printValue(
- const char *str,
- char **value,
- int num);
-
-extern XIM
-_XDefaultOpenIM(
- XLCd lcd,
- Display *dpy,
- XrmDatabase rdb,
- char *res_name,
- char *res_class);
-
-#endif /* _XLCGENERIC_H_ */
+/*
+ * Copyright 1992, 1993 by TOSHIBA Corp.
+ *
+ * Permission to use, copy, modify, and distribute this software and its
+ * documentation for any purpose and without fee is hereby granted, provided
+ * that the above copyright notice appear in all copies and that both that
+ * copyright notice and this permission notice appear in supporting
+ * documentation, and that the name of TOSHIBA not be used in advertising
+ * or publicity pertaining to distribution of the software without specific,
+ * written prior permission. TOSHIBA make no representations about the
+ * suitability of this software for any purpose. It is provided "as is"
+ * without express or implied warranty.
+ *
+ * TOSHIBA DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
+ * ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
+ * TOSHIBA BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
+ * ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
+ * WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
+ * ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
+ * SOFTWARE.
+ *
+ * Author: Katsuhisa Yano TOSHIBA Corp.
+ * mopi@osa.ilab.toshiba.co.jp
+ */
+/*
+ * Copyright 1995 by FUJITSU LIMITED
+ * This is source code modified by FUJITSU LIMITED under the Joint
+ * Development Agreement for the CDE/Motif PST.
+ *
+ * Modifier: Takanori Tateno FUJITSU LIMITED
+ *
+ */
+
+#ifndef _XLCGENERIC_H_
+#define _XLCGENERIC_H_
+
+#include "XlcPubI.h"
+
+typedef struct _ByteInfo {
+ unsigned char start,end;
+} ByteInfoRec, *ByteInfo;
+
+typedef struct _ByteInfoList {
+ int M; /* 1 <= M <= length */
+ int byteinfo_num;
+ ByteInfo byteinfo;
+} ByteInfoListRec, *ByteInfoList;
+
+/* conversion_type values */
+#define LOCALCONV 1
+#define FILECONV 2
+#define FUNCTIONCONV 4
+
+typedef struct _Conversion {
+ unsigned long conversion_type;
+ int conv_num;
+ FontScope convlist;
+ char *cnv_file;
+ XlcConv cnvfunc;
+} ConversionRec, *Conversion;
+
+typedef struct _ExtdSegment {
+ char *name;
+ XlcSide side;
+ FontScope area;
+ int area_num;
+ XlcCharSet charset;
+} ExtdSegmentRec, *ExtdSegment;
+
+typedef struct _SegConvRec {
+ int length;
+ char *source_encoding;
+ XlcCharSet source;
+ char *destination_encoding;
+ XlcCharSet dest;
+ FontScopeRec range;
+ int conv_num;
+ FontScope conv;
+} SegConvRec, *SegConv;
+
+typedef struct _ParseInfoRec *ParseInfo;
+
+typedef struct _CodeSetRec {
+ XlcCharSet *charset_list;
+ int num_charsets;
+ int cs_num;
+ XlcSide side;
+ int length;
+ ByteInfoList byteM;
+ Conversion mbconv;
+ Conversion ctconv;
+ ExtdSegment ctextseg;
+ ParseInfo parse_info;
+ unsigned long wc_encoding;
+ Bool string_encoding;
+} CodeSetRec, *CodeSet;
+
+typedef enum {
+ E_GL, /* GL encoding */
+ E_GR, /* GR encoding */
+ E_SS, /* single shift */
+ E_LSL, /* locking shift left */
+ E_LSR, /* locking shift right */
+ E_LAST
+} EncodingType;
+
+typedef struct _ParseInfoRec {
+ EncodingType type;
+ char *encoding;
+ CodeSet codeset;
+} ParseInfoRec;
+
+/*
+ * XLCd private data
+ */
+
+#define XLC_GENERIC(lcd, x) (((XLCdGeneric) lcd->core)->gen.x)
+#define XLC_GENERIC_PART(lcd) (&(((XLCdGeneric) lcd->core)->gen))
+
+typedef struct _XLCdGenericPart {
+ int codeset_num;
+ CodeSet *codeset_list;
+ unsigned char *mb_parse_table;
+ int mb_parse_list_num;
+ ParseInfo *mb_parse_list;
+ unsigned long wc_encode_mask;
+ unsigned long wc_shift_bits;
+ CodeSet initial_state_GL;
+ CodeSet initial_state_GR;
+ int segment_conv_num; /* UDC */
+ SegConv segment_conv; /* UDC */
+ Bool use_stdc_env;
+ Bool force_convert_to_mb;
+} XLCdGenericPart;
+
+typedef struct _XLCdGenericRec {
+ XLCdCoreRec core;
+ XLCdPublicPart pub;
+ XLCdGenericPart gen;
+} XLCdGenericRec, *XLCdGeneric;
+
+extern XLCdMethods _XlcGenericMethods;
+
+extern FontScope
+_XlcParse_scopemaps(
+ const char *str,
+ int *size);
+extern void
+_XlcDbg_printValue(
+ const char *str,
+ char **value,
+ int num);
+
+extern XIM
+_XDefaultOpenIM(
+ XLCd lcd,
+ Display *dpy,
+ XrmDatabase rdb,
+ char *res_name,
+ char *res_class);
+
+#endif /* _XLCGENERIC_H_ */
diff --git a/libX11/src/xlibi18n/XlcPubI.h b/libX11/src/xlibi18n/XlcPubI.h
index 997ac0b75..22ac2bdf0 100644
--- a/libX11/src/xlibi18n/XlcPubI.h
+++ b/libX11/src/xlibi18n/XlcPubI.h
@@ -1,305 +1,305 @@
-/*
- * Copyright 1992, 1993 by TOSHIBA Corp.
- *
- * Permission to use, copy, modify, and distribute this software and its
- * documentation for any purpose and without fee is hereby granted, provided
- * that the above copyright notice appear in all copies and that both that
- * copyright notice and this permission notice appear in supporting
- * documentation, and that the name of TOSHIBA not be used in advertising
- * or publicity pertaining to distribution of the software without specific,
- * written prior permission. TOSHIBA make no representations about the
- * suitability of this software for any purpose. It is provided "as is"
- * without express or implied warranty.
- *
- * TOSHIBA DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
- * ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
- * TOSHIBA BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
- * ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
- * WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
- * ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
- * SOFTWARE.
- *
- * Author: Katsuhisa Yano TOSHIBA Corp.
- * mopi@osa.ilab.toshiba.co.jp
- */
-
-#ifndef _XLCPUBLICI_H_
-#define _XLCPUBLICI_H_
-
-#include "XlcPublic.h"
-
-#define XLC_PUBLIC(lcd, x) (((XLCdPublic) lcd->core)->pub.x)
-#define XLC_PUBLIC_PART(lcd) (&(((XLCdPublic) lcd->core)->pub))
-#define XLC_PUBLIC_METHODS(lcd) (&(((XLCdPublicMethods) lcd->methods)->pub))
-
-/*
- * XLCd public methods
- */
-
-typedef struct _XLCdPublicMethodsRec *XLCdPublicMethods;
-
-typedef XLCd (*XlcPubCreateProc)(
- const char* name,
- XLCdMethods methods
-);
-
-typedef Bool (*XlcPubInitializeProc)(
- XLCd lcd
-);
-
-typedef void (*XlcPubDestroyProc)(
- XLCd lcd
-);
-
-typedef char* (*XlcPubGetValuesProc)(
- XLCd lcd,
- XlcArgList args,
- int num_args
-);
-
-typedef void (*XlcPubGetResourceProc)(
- XLCd lcd,
- const char* category,
- const char* _class,
- char*** value,
- int* count
-);
-
-typedef struct _XLCdPublicMethodsPart {
- XLCdPublicMethods superclass;
- XlcPubCreateProc create;
- XlcPubInitializeProc initialize;
- XlcPubDestroyProc destroy;
- XlcPubGetValuesProc get_values;
- XlcPubGetResourceProc get_resource;
-} XLCdPublicMethodsPart;
-
-typedef struct _XLCdPublicMethodsRec {
- XLCdMethodsRec core;
- XLCdPublicMethodsPart pub;
-} XLCdPublicMethodsRec;
-
-/*
- * XLCd public data
- */
-
-typedef struct _XLCdPublicPart {
- char *siname; /* for _XlcMapOSLocaleName() */
- char *language; /* language part of locale name */
- char *territory; /* territory part of locale name */
- char *codeset; /* codeset part of locale name */
- char *encoding_name; /* encoding name */
- int mb_cur_max; /* ANSI C MB_CUR_MAX */
- Bool is_state_depend; /* state-depend encoding */
- const char *default_string; /* for XDefaultString() */
- XPointer xlocale_db;
-} XLCdPublicPart;
-
-typedef struct _XLCdPublicRec {
- XLCdCoreRec core;
- XLCdPublicPart pub;
-} XLCdPublicRec, *XLCdPublic;
-
-extern XLCdMethods _XlcPublicMethods;
-
-_XFUNCPROTOBEGIN
-
-extern XLCd _XlcCreateLC(
- const char* name,
- XLCdMethods methods
-);
-
-extern void _XlcDestroyLC(
- XLCd lcd
-);
-
-/* Fills into a freshly created XlcCharSet the fields that can be inferred
- from the ESC sequence. These are side, char_size, set_size. */
-extern Bool _XlcParseCharSet(
- XlcCharSet charset
-);
-
-/* Creates a new XlcCharSet, given its name (including side suffix) and
- Compound Text ESC sequence (normally at most 4 bytes). */
-extern XlcCharSet _XlcCreateDefaultCharSet(
- const char* name,
- const char* ct_sequence
-);
-
-extern XlcCharSet _XlcAddCT(
- const char* name,
- const char* ct_sequence
-);
-
-extern Bool _XlcInitCTInfo (void);
-
-extern XrmMethods _XrmDefaultInitParseInfo(
- XLCd lcd,
- XPointer* state
-);
-
-extern int _XmbTextPropertyToTextList(
- XLCd lcd,
- Display* dpy,
- const XTextProperty* text_prop,
- char*** list_ret,
- int* count_ret
-);
-
-extern int _XwcTextPropertyToTextList(
- XLCd lcd,
- Display* dpy,
- const XTextProperty* text_prop,
- wchar_t*** list_ret,
- int* count_ret
-);
-
-extern int _Xutf8TextPropertyToTextList(
- XLCd lcd,
- Display* dpy,
- const XTextProperty* text_prop,
- char*** list_ret,
- int* count_ret
-);
-
-extern int _XmbTextListToTextProperty(
- XLCd /* lcd */,
- Display* /* dpy */,
- char** /* list */,
- int /* count */,
- XICCEncodingStyle /* style */,
- XTextProperty* /* text_prop */
-);
-
-extern int _XwcTextListToTextProperty(
- XLCd /* lcd */,
- Display* /* dpy */,
- wchar_t** /* list */,
- int /* count */,
- XICCEncodingStyle /* style */,
- XTextProperty* /* text_prop */
-);
-
-extern int _Xutf8TextListToTextProperty(
- XLCd /* lcd */,
- Display* /* dpy */,
- char** /* list */,
- int /* count */,
- XICCEncodingStyle /* style */,
- XTextProperty* /* text_prop */
-);
-
-extern void _XwcFreeStringList(
- XLCd /* lcd */,
- wchar_t** /* list */
-);
-
-extern int _XlcResolveLocaleName(
- const char* lc_name,
- XLCdPublicPart* pub
-);
-
-extern int _XlcResolveI18NPath(
- char* buf,
- int buf_len
-);
-
-extern char *_XlcLocaleLibDirName(
- char* /* dir_name */,
- size_t, /* dir_len */
- char* /* lc_name */
-);
-
-extern char *_XlcLocaleDirName(
- char* /* dir_name */,
- size_t, /* dir_len */
- char* /* lc_name */
-);
-
-extern XPointer _XlcCreateLocaleDataBase(
- XLCd lcd
-);
-
-extern void _XlcDestroyLocaleDataBase(
- XLCd lcd
-);
-
-extern void _XlcGetLocaleDataBase(
- XLCd /* lcd */,
- const char* /* category */,
- const char* /* name */,
- char*** /* value */,
- int* /* count */
-);
-
-#ifdef X_LOCALE
-extern char *
-_Xsetlocale(
- int category,
- _Xconst char *name);
-#else
-#ifdef __APPLE__
-extern char *
-_Xsetlocale(
- int category,
- _Xconst char *name);
-#endif
-extern char *_XlcMapOSLocaleName(
- char *osname,
- char *siname);
-#endif
-
-extern int
-_Xmbstoutf8(
- char *ustr,
- const char *str,
- int len);
-extern int
-_Xlcmbstoutf8(
- XLCd lcd,
- char *ustr,
- const char *str,
- int len);
-extern int
-_Xmbstowcs(
- wchar_t *wstr,
- char *str,
- int len);
-extern int
-_Xlcwcstombs(
- XLCd lcd,
- char *str,
- wchar_t *wstr,
- int len);
-extern int
-_Xlcmbstowcs(
- XLCd lcd,
- wchar_t *wstr,
- char *str,
- int len);
-extern int
-_Xwcstombs(
- char *str,
- wchar_t *wstr,
- int len);
-extern int
-_Xlcmbtowc(
- XLCd lcd,
- wchar_t *wstr,
- char *str,
- int len);
-extern int
-_Xlcwctomb(
- XLCd lcd,
- char *str,
- wchar_t wc);
-
-
-
-extern XPointer
-_Utf8GetConvByName(
- const char *name);
-
-_XFUNCPROTOEND
-
-#endif /* _XLCPUBLICI_H_ */
+/*
+ * Copyright 1992, 1993 by TOSHIBA Corp.
+ *
+ * Permission to use, copy, modify, and distribute this software and its
+ * documentation for any purpose and without fee is hereby granted, provided
+ * that the above copyright notice appear in all copies and that both that
+ * copyright notice and this permission notice appear in supporting
+ * documentation, and that the name of TOSHIBA not be used in advertising
+ * or publicity pertaining to distribution of the software without specific,
+ * written prior permission. TOSHIBA make no representations about the
+ * suitability of this software for any purpose. It is provided "as is"
+ * without express or implied warranty.
+ *
+ * TOSHIBA DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
+ * ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
+ * TOSHIBA BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
+ * ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
+ * WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
+ * ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
+ * SOFTWARE.
+ *
+ * Author: Katsuhisa Yano TOSHIBA Corp.
+ * mopi@osa.ilab.toshiba.co.jp
+ */
+
+#ifndef _XLCPUBLICI_H_
+#define _XLCPUBLICI_H_
+
+#include "XlcPublic.h"
+
+#define XLC_PUBLIC(lcd, x) (((XLCdPublic) lcd->core)->pub.x)
+#define XLC_PUBLIC_PART(lcd) (&(((XLCdPublic) lcd->core)->pub))
+#define XLC_PUBLIC_METHODS(lcd) (&(((XLCdPublicMethods) lcd->methods)->pub))
+
+/*
+ * XLCd public methods
+ */
+
+typedef struct _XLCdPublicMethodsRec *XLCdPublicMethods;
+
+typedef XLCd (*XlcPubCreateProc)(
+ const char* name,
+ XLCdMethods methods
+);
+
+typedef Bool (*XlcPubInitializeProc)(
+ XLCd lcd
+);
+
+typedef void (*XlcPubDestroyProc)(
+ XLCd lcd
+);
+
+typedef char* (*XlcPubGetValuesProc)(
+ XLCd lcd,
+ XlcArgList args,
+ int num_args
+);
+
+typedef void (*XlcPubGetResourceProc)(
+ XLCd lcd,
+ const char* category,
+ const char* _class,
+ char*** value,
+ int* count
+);
+
+typedef struct _XLCdPublicMethodsPart {
+ XLCdPublicMethods superclass;
+ XlcPubCreateProc create;
+ XlcPubInitializeProc initialize;
+ XlcPubDestroyProc destroy;
+ XlcPubGetValuesProc get_values;
+ XlcPubGetResourceProc get_resource;
+} XLCdPublicMethodsPart;
+
+typedef struct _XLCdPublicMethodsRec {
+ XLCdMethodsRec core;
+ XLCdPublicMethodsPart pub;
+} XLCdPublicMethodsRec;
+
+/*
+ * XLCd public data
+ */
+
+typedef struct _XLCdPublicPart {
+ char *siname; /* for _XlcMapOSLocaleName() */
+ char *language; /* language part of locale name */
+ char *territory; /* territory part of locale name */
+ char *codeset; /* codeset part of locale name */
+ char *encoding_name; /* encoding name */
+ int mb_cur_max; /* ANSI C MB_CUR_MAX */
+ Bool is_state_depend; /* state-depend encoding */
+ const char *default_string; /* for XDefaultString() */
+ XPointer xlocale_db;
+} XLCdPublicPart;
+
+typedef struct _XLCdPublicRec {
+ XLCdCoreRec core;
+ XLCdPublicPart pub;
+} XLCdPublicRec, *XLCdPublic;
+
+extern XLCdMethods _XlcPublicMethods;
+
+_XFUNCPROTOBEGIN
+
+extern XLCd _XlcCreateLC(
+ const char* name,
+ XLCdMethods methods
+);
+
+extern void _XlcDestroyLC(
+ XLCd lcd
+);
+
+/* Fills into a freshly created XlcCharSet the fields that can be inferred
+ from the ESC sequence. These are side, char_size, set_size. */
+extern Bool _XlcParseCharSet(
+ XlcCharSet charset
+);
+
+/* Creates a new XlcCharSet, given its name (including side suffix) and
+ Compound Text ESC sequence (normally at most 4 bytes). */
+extern XlcCharSet _XlcCreateDefaultCharSet(
+ const char* name,
+ const char* ct_sequence
+);
+
+extern XlcCharSet _XlcAddCT(
+ const char* name,
+ const char* ct_sequence
+);
+
+extern Bool _XlcInitCTInfo (void);
+
+extern XrmMethods _XrmDefaultInitParseInfo(
+ XLCd lcd,
+ XPointer* state
+);
+
+extern int _XmbTextPropertyToTextList(
+ XLCd lcd,
+ Display* dpy,
+ const XTextProperty* text_prop,
+ char*** list_ret,
+ int* count_ret
+);
+
+extern int _XwcTextPropertyToTextList(
+ XLCd lcd,
+ Display* dpy,
+ const XTextProperty* text_prop,
+ wchar_t*** list_ret,
+ int* count_ret
+);
+
+extern int _Xutf8TextPropertyToTextList(
+ XLCd lcd,
+ Display* dpy,
+ const XTextProperty* text_prop,
+ char*** list_ret,
+ int* count_ret
+);
+
+extern int _XmbTextListToTextProperty(
+ XLCd /* lcd */,
+ Display* /* dpy */,
+ char** /* list */,
+ int /* count */,
+ XICCEncodingStyle /* style */,
+ XTextProperty* /* text_prop */
+);
+
+extern int _XwcTextListToTextProperty(
+ XLCd /* lcd */,
+ Display* /* dpy */,
+ wchar_t** /* list */,
+ int /* count */,
+ XICCEncodingStyle /* style */,
+ XTextProperty* /* text_prop */
+);
+
+extern int _Xutf8TextListToTextProperty(
+ XLCd /* lcd */,
+ Display* /* dpy */,
+ char** /* list */,
+ int /* count */,
+ XICCEncodingStyle /* style */,
+ XTextProperty* /* text_prop */
+);
+
+extern void _XwcFreeStringList(
+ XLCd /* lcd */,
+ wchar_t** /* list */
+);
+
+extern int _XlcResolveLocaleName(
+ const char* lc_name,
+ XLCdPublicPart* pub
+);
+
+extern int _XlcResolveI18NPath(
+ char* buf,
+ int buf_len
+);
+
+extern char *_XlcLocaleLibDirName(
+ char* /* dir_name */,
+ size_t, /* dir_len */
+ char* /* lc_name */
+);
+
+extern char *_XlcLocaleDirName(
+ char* /* dir_name */,
+ size_t, /* dir_len */
+ char* /* lc_name */
+);
+
+extern XPointer _XlcCreateLocaleDataBase(
+ XLCd lcd
+);
+
+extern void _XlcDestroyLocaleDataBase(
+ XLCd lcd
+);
+
+extern void _XlcGetLocaleDataBase(
+ XLCd /* lcd */,
+ const char* /* category */,
+ const char* /* name */,
+ char*** /* value */,
+ int* /* count */
+);
+
+#ifdef X_LOCALE
+extern char *
+_Xsetlocale(
+ int category,
+ _Xconst char *name);
+#else
+#ifdef __APPLE__
+extern char *
+_Xsetlocale(
+ int category,
+ _Xconst char *name);
+#endif
+extern char *_XlcMapOSLocaleName(
+ char *osname,
+ char *siname);
+#endif
+
+extern int
+_Xmbstoutf8(
+ char *ustr,
+ const char *str,
+ int len);
+extern int
+_Xlcmbstoutf8(
+ XLCd lcd,
+ char *ustr,
+ const char *str,
+ int len);
+extern int
+_Xmbstowcs(
+ wchar_t *wstr,
+ char *str,
+ int len);
+extern int
+_Xlcwcstombs(
+ XLCd lcd,
+ char *str,
+ wchar_t *wstr,
+ int len);
+extern int
+_Xlcmbstowcs(
+ XLCd lcd,
+ wchar_t *wstr,
+ char *str,
+ int len);
+extern int
+_Xwcstombs(
+ char *str,
+ wchar_t *wstr,
+ int len);
+extern int
+_Xlcmbtowc(
+ XLCd lcd,
+ wchar_t *wstr,
+ char *str,
+ int len);
+extern int
+_Xlcwctomb(
+ XLCd lcd,
+ char *str,
+ wchar_t wc);
+
+
+
+extern XPointer
+_Utf8GetConvByName(
+ const char *name);
+
+_XFUNCPROTOEND
+
+#endif /* _XLCPUBLICI_H_ */
diff --git a/libX11/src/xlibi18n/XlcPublic.h b/libX11/src/xlibi18n/XlcPublic.h
index 1d2bd3842..3d94ef37d 100644
--- a/libX11/src/xlibi18n/XlcPublic.h
+++ b/libX11/src/xlibi18n/XlcPublic.h
@@ -1,324 +1,324 @@
-/*
- * Copyright 1992, 1993 by TOSHIBA Corp.
- *
- * Permission to use, copy, modify, and distribute this software and its
- * documentation for any purpose and without fee is hereby granted, provided
- * that the above copyright notice appear in all copies and that both that
- * copyright notice and this permission notice appear in supporting
- * documentation, and that the name of TOSHIBA not be used in advertising
- * or publicity pertaining to distribution of the software without specific,
- * written prior permission. TOSHIBA make no representations about the
- * suitability of this software for any purpose. It is provided "as is"
- * without express or implied warranty.
- *
- * TOSHIBA DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
- * ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
- * TOSHIBA BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
- * ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
- * WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
- * ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
- * SOFTWARE.
- *
- * Author: Katsuhisa Yano TOSHIBA Corp.
- * mopi@osa.ilab.toshiba.co.jp
- */
-/*
- * Copyright 1995 by FUJITSU LIMITED
- * This is source code modified by FUJITSU LIMITED under the Joint
- * Development Agreement for the CDE/Motif PST.
- *
- * Modifier: Takanori Tateno FUJITSU LIMITED
- *
- */
-/*
- * Most of this API is documented in i18n/Framework.PS
- */
-
-#ifndef _XLCPUBLIC_H_
-#define _XLCPUBLIC_H_
-
-#include "Xlcint.h"
-
-
-/*
- * Character sets.
- */
-
-/* Every character set has a "side". It denotes the range of byte values for
- which the character set is responsible. This means that the character
- set's encoded characters will only assumes bytes within the range, and
- that the character set can be used simultaneously with another character
- set responsible for a disjoint range. */
-typedef enum {
- XlcUnknown,
- XlcC0, /* responsible for values 0x00..0x1F */
- XlcGL, /* responsible for values 0x00..0x7F or 0x20..0x7F */
- XlcC1, /* responsible for values 0x80..0x9F */
- XlcGR, /* responsible for values 0x80..0xFF or 0xA0..0xFF */
- XlcGLGR, /* responsible for values 0x00..0xFF */
- XlcOther, /* unused */
- XlcNONE
-} XlcSide;
-
-/* Data read from XLC_LOCALE files.
- XXX Apparently superseded by _XUDCGlyphRegion. */
-typedef struct _UDCArea {
- unsigned long start;
- unsigned long end;
-} UDCAreaRec, *UDCArea;
-
-/* Where the character set comes from. */
-typedef enum {
- CSsrcUndef, /* unused */
- CSsrcStd, /* defined in libX11 */
- CSsrcXLC /* defined in an XLC_LOCALE file */
-} CSSrc;
-
-/* These are the supported properties of XlcCharSet. */
-#define XlcNCharSize "charSize"
-#define XlcNControlSequence "controlSequence"
-#define XlcNEncodingName "encodingName"
-#define XlcNName "name"
-#define XlcNSetSize "setSize"
-#define XlcNSide "side"
-
-/* This is the structure of an XlcCharSet.
- Once allocated, they are never freed. */
-typedef struct _XlcCharSetRec {
- /* Character set name, including side suffix */
- const char *name;
- XrmQuark xrm_name;
-
- /* XLFD encoding name, no side suffix */
- const char *encoding_name;
- XrmQuark xrm_encoding_name;
-
- /* Range for which the charset is responsible: XlcGL, XlcGR or XlcGLGR */
- XlcSide side;
-
- /* Number of bytes per character. 0 means a varying number (e.g. UTF-8) */
- int char_size;
- /* Classification of the character set according to ISO-2022 */
- int set_size; /* e.g. 94 or 96 */
- const char *ct_sequence; /* control sequence of CT */
- /* (normally at most 4 bytes) */
-
- /* for UDC */
- Bool string_encoding;
- UDCArea udc_area;
- int udc_area_num;
-
- /* Description source */
- CSSrc source;
-} XlcCharSetRec, *XlcCharSet;
-
-_XFUNCPROTOBEGIN
-
-/* Returns the charset with the given name (including side suffix).
- Returns NULL if not found. */
-extern XlcCharSet _XlcGetCharSet(
- const char* name
-);
-
-/* Returns the charset with the given encoding (no side suffix) and
- responsible for at least the given side (XlcGL or XlcGR).
- Returns NULL if not found. */
-extern XlcCharSet _XlcGetCharSetWithSide(
- const char* encoding_name,
- XlcSide side
-);
-
-/* Registers an XlcCharSet in the list of character sets.
- Returns True if successful. */
-extern Bool _XlcAddCharSet(
- XlcCharSet charset
-);
-
-/* Retrieves a number of attributes of an XlcCharSet.
- Return NULL if successful, otherwise the name of the first argument
- specifiying a nonexistent attribute. */
-extern char *_XlcGetCSValues(
- XlcCharSet charset,
- ...
-);
-
-_XFUNCPROTOEND
-
-
-#define XlcNCodeset "codeset"
-#define XlcNDefaultString "defaultString"
-#define XlcNLanguage "language"
-#define XlcNMbCurMax "mbCurMax"
-#define XlcNStateDependentEncoding "stateDependentEncoding"
-#define XlcNTerritory "territory"
-
-typedef struct _FontScope {
- unsigned long start;
- unsigned long end;
- unsigned long shift;
- unsigned long shift_direction;
-} FontScopeRec, *FontScope;
-
-/*
- * conversion methods
- */
-
-typedef struct _XlcConvRec *XlcConv;
-
-typedef XlcConv (*XlcOpenConverterProc)(
- XLCd from_lcd,
- const char* from_type,
- XLCd to_lcd,
- const char* to_type
-);
-
-typedef void (*XlcCloseConverterProc)(
- XlcConv /* conv */
-);
-
-typedef int (*XlcConvertProc)(
- XlcConv /* conv */,
- XPointer* /* from */,
- int* /* from_left */,
- XPointer* /* to */,
- int* /* to_left */,
- XPointer* /* args */,
- int /* num_args */
-);
-
-typedef void (*XlcResetConverterProc)(
- XlcConv /* conv */
-);
-
-typedef struct _XlcConvMethodsRec{
- XlcCloseConverterProc close;
- XlcConvertProc convert;
- XlcResetConverterProc reset;
-} XlcConvMethodsRec, *XlcConvMethods;
-
-/*
- * conversion data
- */
-
-#define XlcNMultiByte "multiByte"
-#define XlcNWideChar "wideChar"
-#define XlcNCompoundText "compoundText"
-#define XlcNString "string"
-#define XlcNUtf8String "utf8String"
-#define XlcNCharSet "charSet"
-#define XlcNCTCharSet "CTcharSet"
-#define XlcNFontCharSet "FontCharSet"
-#define XlcNChar "char"
-#define XlcNUcsChar "UCSchar"
-
-typedef struct _XlcConvRec {
- XlcConvMethods methods;
- XPointer state;
-} XlcConvRec;
-
-
-_XFUNCPROTOBEGIN
-
-extern Bool _XInitOM(
- XLCd /* lcd */
-);
-
-extern Bool _XInitIM(
- XLCd /* lcd */
-);
-
-extern XIM _XimOpenIM(
- XLCd /* lcd */,
- Display * /* dpy */,
- XrmDatabase /* rdb */,
- char * /* res_name */,
- char * /* res_class */
-);
-
-extern char *_XGetLCValues(
- XLCd /* lcd */,
- ...
-);
-
-extern XlcConv _XlcOpenConverter(
- XLCd from_lcd,
- const char* from_type,
- XLCd to_lcd,
- const char* to_type
-);
-
-extern void _XlcCloseConverter(
- XlcConv conv
-);
-
-extern int _XlcConvert(
- XlcConv conv,
- XPointer* from,
- int* from_left,
- XPointer* to,
- int* to_left,
- XPointer* args,
- int num_args
-);
-
-extern void _XlcResetConverter(
- XlcConv conv
-);
-
-extern Bool _XlcSetConverter(
- XLCd from_lcd,
- const char* from_type,
- XLCd to_lcd,
- const char* to_type,
- XlcOpenConverterProc open_converter
-);
-
-extern void _XlcGetResource(
- XLCd lcd,
- const char* category,
- const char* _class,
- char*** value,
- int* count
-);
-
-extern char *_XlcFileName(
- XLCd lcd,
- const char* category
-);
-
-extern int _Xwcslen(
- wchar_t* /* wstr */
-);
-
-extern wchar_t *_Xwcscpy(
- wchar_t* /* wstr1 */,
- wchar_t* /* wstr2 */
-);
-
-extern wchar_t *_Xwcsncpy(wchar_t *wstr1, wchar_t *wstr2, int len);
-extern int _Xwcscmp(wchar_t *wstr1, wchar_t *wstr2);
-extern int _Xwcsncmp(wchar_t *wstr1, wchar_t *wstr2, int len);
-
-/* Compares two ISO 8859-1 strings, ignoring case of ASCII letters.
- Like strcasecmp in an ASCII locale. */
-extern int _XlcCompareISOLatin1(
- const char* str1,
- const char* str2
-);
-
-/* Compares two ISO 8859-1 strings, at most len bytes of each, ignoring
- case of ASCII letters. Like strncasecmp in an ASCII locale. */
-extern int _XlcNCompareISOLatin1(
- const char* str1,
- const char* str2,
- int len
-);
-
-extern XOM
-_XDefaultOpenOM(
- XLCd lcd, Display *dpy, XrmDatabase rdb,
- _Xconst char *res_name, _Xconst char *res_class);
-
-_XFUNCPROTOEND
-
-#endif /* _XLCPUBLIC_H_ */
+/*
+ * Copyright 1992, 1993 by TOSHIBA Corp.
+ *
+ * Permission to use, copy, modify, and distribute this software and its
+ * documentation for any purpose and without fee is hereby granted, provided
+ * that the above copyright notice appear in all copies and that both that
+ * copyright notice and this permission notice appear in supporting
+ * documentation, and that the name of TOSHIBA not be used in advertising
+ * or publicity pertaining to distribution of the software without specific,
+ * written prior permission. TOSHIBA make no representations about the
+ * suitability of this software for any purpose. It is provided "as is"
+ * without express or implied warranty.
+ *
+ * TOSHIBA DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
+ * ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
+ * TOSHIBA BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
+ * ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
+ * WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
+ * ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
+ * SOFTWARE.
+ *
+ * Author: Katsuhisa Yano TOSHIBA Corp.
+ * mopi@osa.ilab.toshiba.co.jp
+ */
+/*
+ * Copyright 1995 by FUJITSU LIMITED
+ * This is source code modified by FUJITSU LIMITED under the Joint
+ * Development Agreement for the CDE/Motif PST.
+ *
+ * Modifier: Takanori Tateno FUJITSU LIMITED
+ *
+ */
+/*
+ * Most of this API is documented in i18n/Framework.PS
+ */
+
+#ifndef _XLCPUBLIC_H_
+#define _XLCPUBLIC_H_
+
+#include "Xlcint.h"
+
+
+/*
+ * Character sets.
+ */
+
+/* Every character set has a "side". It denotes the range of byte values for
+ which the character set is responsible. This means that the character
+ set's encoded characters will only assumes bytes within the range, and
+ that the character set can be used simultaneously with another character
+ set responsible for a disjoint range. */
+typedef enum {
+ XlcUnknown,
+ XlcC0, /* responsible for values 0x00..0x1F */
+ XlcGL, /* responsible for values 0x00..0x7F or 0x20..0x7F */
+ XlcC1, /* responsible for values 0x80..0x9F */
+ XlcGR, /* responsible for values 0x80..0xFF or 0xA0..0xFF */
+ XlcGLGR, /* responsible for values 0x00..0xFF */
+ XlcOther, /* unused */
+ XlcNONE
+} XlcSide;
+
+/* Data read from XLC_LOCALE files.
+ XXX Apparently superseded by _XUDCGlyphRegion. */
+typedef struct _UDCArea {
+ unsigned long start;
+ unsigned long end;
+} UDCAreaRec, *UDCArea;
+
+/* Where the character set comes from. */
+typedef enum {
+ CSsrcUndef, /* unused */
+ CSsrcStd, /* defined in libX11 */
+ CSsrcXLC /* defined in an XLC_LOCALE file */
+} CSSrc;
+
+/* These are the supported properties of XlcCharSet. */
+#define XlcNCharSize "charSize"
+#define XlcNControlSequence "controlSequence"
+#define XlcNEncodingName "encodingName"
+#define XlcNName "name"
+#define XlcNSetSize "setSize"
+#define XlcNSide "side"
+
+/* This is the structure of an XlcCharSet.
+ Once allocated, they are never freed. */
+typedef struct _XlcCharSetRec {
+ /* Character set name, including side suffix */
+ const char *name;
+ XrmQuark xrm_name;
+
+ /* XLFD encoding name, no side suffix */
+ const char *encoding_name;
+ XrmQuark xrm_encoding_name;
+
+ /* Range for which the charset is responsible: XlcGL, XlcGR or XlcGLGR */
+ XlcSide side;
+
+ /* Number of bytes per character. 0 means a varying number (e.g. UTF-8) */
+ int char_size;
+ /* Classification of the character set according to ISO-2022 */
+ int set_size; /* e.g. 94 or 96 */
+ const char *ct_sequence; /* control sequence of CT */
+ /* (normally at most 4 bytes) */
+
+ /* for UDC */
+ Bool string_encoding;
+ UDCArea udc_area;
+ int udc_area_num;
+
+ /* Description source */
+ CSSrc source;
+} XlcCharSetRec, *XlcCharSet;
+
+_XFUNCPROTOBEGIN
+
+/* Returns the charset with the given name (including side suffix).
+ Returns NULL if not found. */
+extern XlcCharSet _XlcGetCharSet(
+ const char* name
+);
+
+/* Returns the charset with the given encoding (no side suffix) and
+ responsible for at least the given side (XlcGL or XlcGR).
+ Returns NULL if not found. */
+extern XlcCharSet _XlcGetCharSetWithSide(
+ const char* encoding_name,
+ XlcSide side
+);
+
+/* Registers an XlcCharSet in the list of character sets.
+ Returns True if successful. */
+extern Bool _XlcAddCharSet(
+ XlcCharSet charset
+);
+
+/* Retrieves a number of attributes of an XlcCharSet.
+ Return NULL if successful, otherwise the name of the first argument
+ specifiying a nonexistent attribute. */
+extern char *_XlcGetCSValues(
+ XlcCharSet charset,
+ ...
+);
+
+_XFUNCPROTOEND
+
+
+#define XlcNCodeset "codeset"
+#define XlcNDefaultString "defaultString"
+#define XlcNLanguage "language"
+#define XlcNMbCurMax "mbCurMax"
+#define XlcNStateDependentEncoding "stateDependentEncoding"
+#define XlcNTerritory "territory"
+
+typedef struct _FontScope {
+ unsigned long start;
+ unsigned long end;
+ unsigned long shift;
+ unsigned long shift_direction;
+} FontScopeRec, *FontScope;
+
+/*
+ * conversion methods
+ */
+
+typedef struct _XlcConvRec *XlcConv;
+
+typedef XlcConv (*XlcOpenConverterProc)(
+ XLCd from_lcd,
+ const char* from_type,
+ XLCd to_lcd,
+ const char* to_type
+);
+
+typedef void (*XlcCloseConverterProc)(
+ XlcConv /* conv */
+);
+
+typedef int (*XlcConvertProc)(
+ XlcConv /* conv */,
+ XPointer* /* from */,
+ int* /* from_left */,
+ XPointer* /* to */,
+ int* /* to_left */,
+ XPointer* /* args */,
+ int /* num_args */
+);
+
+typedef void (*XlcResetConverterProc)(
+ XlcConv /* conv */
+);
+
+typedef struct _XlcConvMethodsRec{
+ XlcCloseConverterProc close;
+ XlcConvertProc convert;
+ XlcResetConverterProc reset;
+} XlcConvMethodsRec, *XlcConvMethods;
+
+/*
+ * conversion data
+ */
+
+#define XlcNMultiByte "multiByte"
+#define XlcNWideChar "wideChar"
+#define XlcNCompoundText "compoundText"
+#define XlcNString "string"
+#define XlcNUtf8String "utf8String"
+#define XlcNCharSet "charSet"
+#define XlcNCTCharSet "CTcharSet"
+#define XlcNFontCharSet "FontCharSet"
+#define XlcNChar "char"
+#define XlcNUcsChar "UCSchar"
+
+typedef struct _XlcConvRec {
+ XlcConvMethods methods;
+ XPointer state;
+} XlcConvRec;
+
+
+_XFUNCPROTOBEGIN
+
+extern Bool _XInitOM(
+ XLCd /* lcd */
+);
+
+extern Bool _XInitIM(
+ XLCd /* lcd */
+);
+
+extern XIM _XimOpenIM(
+ XLCd /* lcd */,
+ Display * /* dpy */,
+ XrmDatabase /* rdb */,
+ char * /* res_name */,
+ char * /* res_class */
+);
+
+extern char *_XGetLCValues(
+ XLCd /* lcd */,
+ ...
+);
+
+extern XlcConv _XlcOpenConverter(
+ XLCd from_lcd,
+ const char* from_type,
+ XLCd to_lcd,
+ const char* to_type
+);
+
+extern void _XlcCloseConverter(
+ XlcConv conv
+);
+
+extern int _XlcConvert(
+ XlcConv conv,
+ XPointer* from,
+ int* from_left,
+ XPointer* to,
+ int* to_left,
+ XPointer* args,
+ int num_args
+);
+
+extern void _XlcResetConverter(
+ XlcConv conv
+);
+
+extern Bool _XlcSetConverter(
+ XLCd from_lcd,
+ const char* from_type,
+ XLCd to_lcd,
+ const char* to_type,
+ XlcOpenConverterProc open_converter
+);
+
+extern void _XlcGetResource(
+ XLCd lcd,
+ const char* category,
+ const char* _class,
+ char*** value,
+ int* count
+);
+
+extern char *_XlcFileName(
+ XLCd lcd,
+ const char* category
+);
+
+extern int _Xwcslen(
+ wchar_t* /* wstr */
+);
+
+extern wchar_t *_Xwcscpy(
+ wchar_t* /* wstr1 */,
+ wchar_t* /* wstr2 */
+);
+
+extern wchar_t *_Xwcsncpy(wchar_t *wstr1, wchar_t *wstr2, int len);
+extern int _Xwcscmp(wchar_t *wstr1, wchar_t *wstr2);
+extern int _Xwcsncmp(wchar_t *wstr1, wchar_t *wstr2, int len);
+
+/* Compares two ISO 8859-1 strings, ignoring case of ASCII letters.
+ Like strcasecmp in an ASCII locale. */
+extern int _XlcCompareISOLatin1(
+ const char* str1,
+ const char* str2
+);
+
+/* Compares two ISO 8859-1 strings, at most len bytes of each, ignoring
+ case of ASCII letters. Like strncasecmp in an ASCII locale. */
+extern int _XlcNCompareISOLatin1(
+ const char* str1,
+ const char* str2,
+ int len
+);
+
+extern XOM
+_XDefaultOpenOM(
+ XLCd lcd, Display *dpy, XrmDatabase rdb,
+ _Xconst char *res_name, _Xconst char *res_class);
+
+_XFUNCPROTOEND
+
+#endif /* _XLCPUBLIC_H_ */
diff --git a/libX11/src/xlibi18n/Xlcint.h b/libX11/src/xlibi18n/Xlcint.h
index 534ea8252..95d1f5d5c 100644
--- a/libX11/src/xlibi18n/Xlcint.h
+++ b/libX11/src/xlibi18n/Xlcint.h
@@ -1,979 +1,979 @@
-/*
-
-Copyright 1991, 1998 The Open Group
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
-
-The above copyright notice and this permission notice shall be included
-in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
-IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR
-OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
-ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall
-not be used in advertising or otherwise to promote the sale, use or
-other dealings in this Software without prior written authorization
-from The Open Group.
-
-*/
-
-/*
- * Copyright 1990, 1991 by OMRON Corporation, NTT Software Corporation,
- * and Nippon Telegraph and Telephone Corporation
- * Copyright 1991 by the Open Software Foundation
- * Copyright 1993 by the TOSHIBA Corp.
- * Copyright 1993, 1994 by Sony Corporation
- * Copyright 1993, 1994 by the FUJITSU LIMITED
- *
- * Permission to use, copy, modify, distribute, and sell this software and its
- * documentation for any purpose is hereby granted without fee, provided that
- * the above copyright notice appear in all copies and that both that
- * copyright notice and this permission notice appear in supporting
- * documentation, and that the names of OMRON, NTT Software, NTT, Open
- * Software Foundation, and Sony Corporation not be used in advertising
- * or publicity pertaining to distribution of the software without specific,
- * written prior permission. OMRON, NTT Software, NTT, Open Software
- * Foundation, and Sony Corporation make no representations about the
- * suitability of this software for any purpose. It is provided "as is"
- * without express or implied warranty.
- *
- * OMRON, NTT SOFTWARE, NTT, OPEN SOFTWARE FOUNDATION, AND SONY
- * CORPORATION DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
- * ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT
- * SHALL OMRON, NTT SOFTWARE, NTT, OPEN SOFTWARE FOUNDATION, OR SONY
- * CORPORATION BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
- * ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER
- * IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT
- * OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
- *
- * Authors: Li Yuhong OMRON Corporation
- * Tatsuya Kato NTT Software Corporation
- * Hiroshi Kuribayashi OMRON Coproration
- * Muneiyoshi Suzuki Nippon Telegraph and Telephone Co.
- *
- * M. Collins OSF
- * Katsuhisa Yano TOSHIBA Corp.
- * Makoto Wakamatsu Sony Corporation
- * Takashi Fujiwara FUJITSU LIMITED
- */
-
-
-#ifndef _XLCINT_H_
-#define _XLCINT_H_
-
-#ifndef _XP_PRINT_SERVER_
-
-#include <X11/Xresource.h>
-#include <X11/Xutil.h>
-#include <stdarg.h>
-
-typedef Bool (*XFilterEventProc)(
- Display* /* display */,
- Window /* window */,
- XEvent* /* event */,
- XPointer /* client_data */
-);
-
-typedef struct _XIMFilter {
- struct _XIMFilter *next;
- Window window;
- unsigned long event_mask;
- int start_type, end_type;
- XFilterEventProc filter;
- XPointer client_data;
-} XFilterEventRec, *XFilterEventList;
-
-typedef struct {
- char *name;
- XPointer value;
-} XIMArg;
-
-#ifdef offsetof
-#define XOffsetOf(s_type,field) offsetof(s_type,field)
-#else
-#define XOffsetOf(s_type,field) ((unsigned int)&(((s_type*)NULL)->field))
-#endif
-
-#define XIMNumber(arr) ((unsigned int) (sizeof(arr) / sizeof(arr[0])))
-
-/*
- * define secondary data structs which are part of Input Methods
- * and Input Context
- */
-typedef struct {
- const char *resource_name; /* Resource string */
- XrmQuark xrm_name; /* Resource name quark */
- int resource_size; /* Size in bytes of data */
- long resource_offset; /* Offset from base */
- unsigned short mode; /* Read Write Permission */
- unsigned short id; /* Input Method Protocol */
-} XIMResource, *XIMResourceList;
-
-/*
- * data block describing the visual attributes associated with
- * an input context
- */
-typedef struct {
- XRectangle area;
- XRectangle area_needed;
- XPoint spot_location;
- Colormap colormap;
- Atom std_colormap;
- unsigned long foreground;
- unsigned long background;
- Pixmap background_pixmap;
- XFontSet fontset;
- int line_spacing;
- Cursor cursor;
- XICCallback start_callback;
- XICCallback done_callback;
- XICCallback draw_callback;
- XICCallback caret_callback;
- XIMPreeditState preedit_state;
- XICCallback state_notify_callback;
-} ICPreeditAttributes, *ICPreeditAttributesPtr;
-
-typedef struct {
- XRectangle area;
- XRectangle area_needed;
- Colormap colormap;
- Atom std_colormap;
- unsigned long foreground;
- unsigned long background;
- Pixmap background_pixmap;
- XFontSet fontset;
- int line_spacing;
- Cursor cursor;
- XICCallback start_callback;
- XICCallback done_callback;
- XICCallback draw_callback;
-} ICStatusAttributes, *ICStatusAttributesPtr;
-
-#endif /* !_XP_PRINT_SERVER_ */
-
-/*
- * Methods for Xrm parsing
- */
-
-/* The state is a pointer to an object created by the locale's
- init_parse_info function (default: _XrmDefaultInitParseInfo). */
-
-/* Sets the state to the initial state.
- Initiates a sequence of calls to the XmbCharProc. */
-typedef void (*XmbInitProc)(
- XPointer state
-);
-
-/* Transforms one multibyte character, starting at str, and return a 'char'
- in the same parsing class (not a wide character!). Returns the number of
- consumed bytes in *lenp. */
-typedef char (*XmbCharProc)(
- XPointer state,
- const char * str,
- int* lenp
-);
-
-/* Terminates a sequence of calls to the XmbCharProc. */
-typedef void (*XmbFinishProc)(
- XPointer state
-);
-
-/* Returns the name of the state's locale, as a static string. */
-typedef const char* (*XlcNameProc)(
- XPointer state
-);
-
-/* Frees the state, which was allocated by the locale's init_parse_info
- function. */
-typedef void (*XrmDestroyProc)(
- XPointer state
-);
-
-/* Set of methods for Xrm parsing. */
-typedef struct {
- XmbInitProc mbinit;
- XmbCharProc mbchar;
- XmbFinishProc mbfinish;
- XlcNameProc lcname;
- XrmDestroyProc destroy;
-} XrmMethodsRec;
-typedef const XrmMethodsRec *XrmMethods;
-
-#ifndef _XP_PRINT_SERVER_
-
-typedef struct _XLCd *XLCd; /* need forward reference */
-
-/*
- * define an LC, it's methods, and data.
- */
-
-typedef void (*XCloseLCProc)(
- XLCd /* lcd */
-);
-
-typedef char* (*XlcMapModifiersProc)(
- XLCd /* lcd */,
- _Xconst char* /* user_mods */,
- _Xconst char* /* prog_mods */
-);
-
-typedef XOM (*XOpenOMProc)(
- XLCd /* lcd */,
- Display* /* display */,
- XrmDatabase /* rdb */,
- _Xconst char* /* res_name */,
- _Xconst char* /* res_class */
-);
-
-typedef XIM (*XOpenIMProc)(
- XLCd /* lcd */,
- Display* /* display */,
- XrmDatabase /* rdb */,
- char* /* res_name */,
- char* /* res_class */
-);
-
-typedef Bool (*XRegisterIMInstantiateCBProc)(
- XLCd /* lcd */,
- Display* /* display */,
- XrmDatabase /* rdb */,
- char* /* res_name */,
- char* /* res_class */,
- XIDProc /* callback */,
- XPointer /* client_data */
-);
-
-typedef Bool (*XUnregisterIMInstantiateCBProc)(
- XLCd /* lcd */,
- Display* /* display */,
- XrmDatabase /* rdb */,
- char* /* res_name */,
- char* /* res_class */,
- XIDProc /* callback */,
- XPointer /* client_data */
-);
-
-typedef XrmMethods (*XrmInitParseInfoProc)(
- XLCd /* lcd */,
- XPointer* /* state */
-);
-
-typedef int (*XmbTextPropertyToTextListProc)(
- XLCd lcd,
- Display* display,
- const XTextProperty* text_prop,
- char*** list_return,
- int* count_return
-);
-
-typedef int (*XwcTextPropertyToTextListProc)(
- XLCd lcd,
- Display* display,
- const XTextProperty* text_prop,
- wchar_t*** list_return,
- int* count_return
-);
-
-typedef int (*XmbTextListToTextPropertyProc)(
- XLCd lcd,
- Display* display,
- char** list,
- int count,
- XICCEncodingStyle style,
- XTextProperty* text_prop_return
-);
-
-typedef int (*XwcTextListToTextPropertyProc)(
- XLCd lcd,
- Display* display,
- wchar_t** list,
- int count,
- XICCEncodingStyle style,
- XTextProperty* text_prop_return
-);
-
-typedef void (*XwcFreeStringListProc)(
- XLCd lcd,
- wchar_t** list
-);
-
-typedef const char* (*XDefaultStringProc)(
- XLCd lcd
-);
-
-typedef struct {
- XCloseLCProc close;
- XlcMapModifiersProc map_modifiers;
- XOpenOMProc open_om;
- XOpenIMProc open_im;
- XrmInitParseInfoProc init_parse_info;
- XmbTextPropertyToTextListProc mb_text_prop_to_list;
- XwcTextPropertyToTextListProc wc_text_prop_to_list;
- XmbTextPropertyToTextListProc utf8_text_prop_to_list;
- XmbTextListToTextPropertyProc mb_text_list_to_prop;
- XwcTextListToTextPropertyProc wc_text_list_to_prop;
- XmbTextListToTextPropertyProc utf8_text_list_to_prop;
- XwcFreeStringListProc wc_free_string_list;
- XDefaultStringProc default_string;
- XRegisterIMInstantiateCBProc register_callback;
- XUnregisterIMInstantiateCBProc unregister_callback;
-} XLCdMethodsRec, *XLCdMethods;
-
-
-typedef struct {
- char* name; /* name of this LC */
- char* modifiers; /* modifiers of locale */
-} XLCdCoreRec, *XLCdCore;
-
-
-typedef struct _XLCd {
- XLCdMethods methods; /* methods of this LC */
- XLCdCore core; /* data of this LC */
- XPointer opaque; /* LDX specific data */
-} XLCdRec;
-
-typedef int XlcPosition;
-
-#define XlcHead 0
-#define XlcTail -1
-
-typedef struct {
- char *name;
- XPointer value;
-} XlcArg, *XlcArgList;
-
-typedef struct _XlcResource {
- const char *name;
- XrmQuark xrm_name;
- int size;
- int offset;
- unsigned long mask;
-} XlcResource, *XlcResourceList;
-
-#define XlcCreateMask (1L<<0)
-#define XlcDefaultMask (1L<<1)
-#define XlcGetMask (1L<<2)
-#define XlcSetMask (1L<<3)
-#define XlcIgnoreMask (1L<<4)
-
-#define XlcNumber(arr) (sizeof(arr) / sizeof(arr[0]))
-
-typedef Status (*XCloseOMProc)(
- XOM /* om */
-);
-
-typedef char* (*XSetOMValuesProc)(
- XOM /* om */,
- XlcArgList /* args */,
- int /* num_args */
-);
-
-typedef char* (*XGetOMValuesProc)(
- XOM /* om */,
- XlcArgList /* args */,
- int /* num_args */
-);
-
-typedef XOC (*XCreateOCProc)(
- XOM /* om */,
- XlcArgList /* args */,
- int /* num_args */
-);
-
-typedef struct _XOMMethodsRec {
- XCloseOMProc close;
- XSetOMValuesProc set_values;
- XGetOMValuesProc get_values;
- XCreateOCProc create_oc;
-} XOMMethodsRec, *XOMMethods;
-
-typedef struct _XOMCoreRec {
- XLCd lcd; /* lcd */
- Display *display; /* display */
- XrmDatabase rdb; /* database */
- char *res_name; /* resource name */
- char *res_class; /* resource class */
- XOC oc_list; /* xoc list */
- XlcResourceList resources; /* xom resources */
- int num_resources; /* number of xom resources */
- XOMCharSetList required_charset; /* required charset list */
- XOMOrientation orientation_list; /* orientation list */
- Bool directional_dependent; /* directional-dependent */
- Bool contextual_drawing; /* contextual drawing */
- Bool context_dependent; /* context-dependent drawing */
-} XOMCoreRec, *XOMCore;
-
-typedef struct _XOM {
- XOMMethods methods;
- XOMCoreRec core;
-} XOMRec;
-
-typedef void (*XDestroyOCProc)(
- XOC /* oc */
-);
-
-typedef char* (*XSetOCValuesProc)(
- XOC /* oc */,
- XlcArgList /* args */,
- int /* num_args */
-);
-
-typedef char* (*XGetOCValuesProc)(
- XOC /* oc */,
- XlcArgList /* args */,
- int /* num_args */
-);
-
-/*
- * X Font Sets are an instantiable object, so we define it, the
- * object itself, a method list and data
- */
-
-/*
- * XFontSet object method list
- */
-
-typedef int (*XmbTextEscapementProc)(
- XFontSet /* font_set */,
- _Xconst char* /* text */,
- int /* text_len */
-);
-
-typedef int (*XmbTextExtentsProc)(
- XFontSet /* font_set */,
- _Xconst char* /* text */,
- int /* text_len */,
- XRectangle* /* overall_ink_extents */,
- XRectangle* /* overall_logical_extents */
-);
-
-typedef Status (*XmbTextPerCharExtentsProc)(
- XFontSet /* font_set */,
- _Xconst char* /* text */,
- int /* text_len */,
- XRectangle* /* ink_extents_buffer */,
- XRectangle* /* logical_extents_buffer */,
- int /* buffer_size */,
- int* /* num_chars */,
- XRectangle* /* max_ink_extents */,
- XRectangle* /* max_logical_extents */
-);
-
-typedef int (*XmbDrawStringProc)(
- Display* /* display */,
- Drawable /* drawable */,
- XFontSet /* font_set */,
- GC /* gc */,
- int /* x */,
- int /* y */,
- _Xconst char* /* text */,
- int /* text_len */
-);
-
-typedef void (*XmbDrawImageStringProc)(
- Display* /* display */,
- Drawable /* drawable */,
- XFontSet /* font_set */,
- GC /* gc */,
- int /* x */,
- int /* y */,
- _Xconst char* /* text */,
- int /* text_len */
-);
-
-typedef int (*XwcTextEscapementProc)(
- XFontSet /* font_set */,
- _Xconst wchar_t* /* text */,
- int /* text_len */
-);
-
-typedef int (*XwcTextExtentsProc)(
- XFontSet /* font_set */,
- _Xconst wchar_t* /* text */,
- int /* text_len */,
- XRectangle* /* overall_ink_extents */,
- XRectangle* /* overall_logical_extents */
-);
-
-typedef Status (*XwcTextPerCharExtentsProc)(
- XFontSet /* font_set */,
- _Xconst wchar_t* /* text */,
- int /* text_len */,
- XRectangle* /* ink_extents_buffer */,
- XRectangle* /* logical_extents_buffer */,
- int /* buffer_size */,
- int* /* num_chars */,
- XRectangle* /* max_ink_extents */,
- XRectangle* /* max_logical_extents */
-);
-
-typedef int (*XwcDrawStringProc)(
- Display* /* display */,
- Drawable /* drawable */,
- XFontSet /* font_set */,
- GC /* gc */,
- int /* x */,
- int /* y */,
- _Xconst wchar_t* /* text */,
- int /* text_len */
-);
-
-typedef void (*XwcDrawImageStringProc)(
- Display* /* display */,
- Drawable /* drawable */,
- XFontSet /* font_set */,
- GC /* gc */,
- int /* x */,
- int /* y */,
- _Xconst wchar_t* /* text */,
- int /* text_len */
-);
-
-typedef struct {
- XDestroyOCProc destroy;
- XSetOCValuesProc set_values;
- XGetOCValuesProc get_values;
-
- /* multi-byte text drawing methods */
-
- XmbTextEscapementProc mb_escapement;
- XmbTextExtentsProc mb_extents;
- XmbTextPerCharExtentsProc mb_extents_per_char;
- XmbDrawStringProc mb_draw_string;
- XmbDrawImageStringProc mb_draw_image_string;
-
- /* wide character text drawing methods */
-
- XwcTextEscapementProc wc_escapement;
- XwcTextExtentsProc wc_extents;
- XwcTextPerCharExtentsProc wc_extents_per_char;
- XwcDrawStringProc wc_draw_string;
- XwcDrawImageStringProc wc_draw_image_string;
-
- /* UTF-8 text drawing methods */
-
- XmbTextEscapementProc utf8_escapement;
- XmbTextExtentsProc utf8_extents;
- XmbTextPerCharExtentsProc utf8_extents_per_char;
- XmbDrawStringProc utf8_draw_string;
- XmbDrawImageStringProc utf8_draw_image_string;
-} XOCMethodsRec, *XOCMethods;
-
-
-/*
- * XOC independent data
- */
-
-typedef struct {
- XOM om; /* XOM */
- XOC next; /* next XOC */
- XlcResourceList resources; /* xoc resources */
- int num_resources; /* number of xoc resources */
- char *base_name_list; /* base font name list */
- Bool om_automatic; /* OM Automatic */
- XOMFontInfo font_info; /* font info */
- XFontSetExtents font_set_extents; /* font set extents */
- char *default_string; /* default string */
- XOMCharSetList missing_list; /* missing charset list */
- XOrientation orientation; /* orientation */
- char *res_name; /* resource name */
- char *res_class; /* resource class */
-} XOCCoreRec, *XOCCore;
-
-typedef struct _XOC {
- XOCMethods methods;
- XOCCoreRec core;
-} XOCRec;
-
-
-/*
- * X Input Managers are an instantiable object, so we define it, the
- * object itself, a method list and data.
- */
-
-/*
- * an Input Manager object method list
- */
-typedef struct {
- Status (*close)(
- XIM
- );
- char* (*set_values)(
- XIM, XIMArg*
- );
- char* (*get_values)(
- XIM, XIMArg*
- );
- XIC (*create_ic)(
- XIM, XIMArg*
- );
- int (*ctstombs)(
- XIM, char*, int, char*, int, Status *
- );
- int (*ctstowcs)(
- XIM, char*, int, wchar_t*, int, Status *
- );
- int (*ctstoutf8)(
- XIM, char*, int, char*, int, Status *
- );
-} XIMMethodsRec, *XIMMethods;
-
-/*
- * Input Manager LC independent data
- */
-typedef struct {
- XLCd lcd; /* LC of this input method */
- XIC ic_chain; /* list of ICs for this IM */
-
- Display * display; /* display */
- XrmDatabase rdb;
- char * res_name;
- char * res_class;
-
- XIMValuesList *im_values_list;
- XIMValuesList *ic_values_list;
- XIMStyles *styles;
- XIMCallback destroy_callback;
- char * im_name; /* XIMMODIFIER name */
- XIMResourceList im_resources; /* compiled IM resource list */
- unsigned int im_num_resources;
- XIMResourceList ic_resources; /* compiled IC resource list */
- unsigned int ic_num_resources;
- Bool visible_position;
-} XIMCoreRec, *XIMCore;
-
-
-
-/*
- * An X Input Manager (IM). Implementations may need to extend this data
- * structure to accomodate additional data, state information etc.
- */
-typedef struct _XIM {
- XIMMethods methods; /* method list of this IM */
- XIMCoreRec core; /* data of this IM */
-} XIMRec;
-
-
-
-/*
- * X Input Contexts (IC) are an instantiable object, so we define it, the
- * object itself, a method list and data for this object
- */
-
-/*
- * Input Context method list
- */
-typedef struct {
- void (*destroy)(
- XIC
- );
- void (*set_focus)(
- XIC
- );
- void (*unset_focus)(
- XIC
- );
- char* (*set_values)(
- XIC, XIMArg*
- );
- char* (*get_values)(
- XIC, XIMArg*
- );
- char* (*mb_reset)(
- XIC
- );
- wchar_t* (*wc_reset)(
- XIC
- );
- char* (*utf8_reset)(
- XIC
- );
- int (*mb_lookup_string)(
- XIC, XKeyEvent*, char*, int, KeySym*, Status*
- );
- int (*wc_lookup_string)(
- XIC, XKeyEvent*, wchar_t*, int, KeySym*, Status*
- );
- int (*utf8_lookup_string)(
- XIC, XKeyEvent*, char*, int, KeySym*, Status*
- );
-} XICMethodsRec, *XICMethods;
-
-
-/*
- * Input Context LC independent data
- */
-typedef struct {
- XIM im; /* XIM this IC belongs too */
- XIC next; /* linked list of ICs for IM */
-
- Window client_window; /* window IM can use for */
- /* display or subwindows */
- XIMStyle input_style; /* IM's input style */
- Window focus_window; /* where key events go */
- unsigned long filter_events; /* event mask from IM */
- XICCallback geometry_callback; /* client callback */
- char * res_name;
- char * res_class;
-
- XICCallback destroy_callback;
- XICCallback string_conversion_callback;
- XIMStringConversionText string_conversion;
- XIMResetState reset_state;
- XIMHotKeyTriggers *hotkey;
- XIMHotKeyState hotkey_state;
-
- ICPreeditAttributes preedit_attr; /* visuals of preedit area */
- ICStatusAttributes status_attr; /* visuals of status area */
-} XICCoreRec, *XICCore;
-
-
-/*
- * an Input Context. Implementations may need to extend this data
- * structure to accomodate additional data, state information etc.
- */
-typedef struct _XIC {
- XICMethods methods; /* method list of this IC */
- XICCoreRec core; /* data of this IC */
-} XICRec;
-
-
-/* If the argument 'name' is appropriate for this loader, it instantiates an
- XLCd object with appropriate locale methods and returns it. May return
- NULL; in this case, the remaining loaders are tried. */
-typedef XLCd (*XLCdLoadProc)(
- const char* name
-);
-
-_XFUNCPROTOBEGIN
-
-extern XLCd _XOpenLC(
- char* name
-);
-
-extern void _XCloseLC(
- XLCd lcd
-);
-
-extern XLCd _XlcCurrentLC (void);
-
-extern Bool _XlcValidModSyntax(
- const char* mods,
- const char* const * valid
-);
-
-extern char *_XlcDefaultMapModifiers(
- XLCd lcd,
- _Xconst char* user_mods,
- _Xconst char* prog_mods
-);
-
-extern void _XIMCompileResourceList(
- XIMResourceList /* res */,
- unsigned int /* num_res */
-);
-
-extern void _XCopyToArg(
- XPointer /* src */,
- XPointer* /* dst */,
- unsigned int /* size */
-);
-
-extern char ** _XParseBaseFontNameList(
- char* /* str */,
- int* /* num */
-);
-
-extern XrmMethods _XrmInitParseInfo(
- XPointer* statep
-);
-
-extern void _XRegisterFilterByMask(
- Display* /* dpy */,
- Window /* window */,
- unsigned long /* event_mask */,
- Bool (*)(
- Display* /* display */,
- Window /* window */,
- XEvent* /* event */,
- XPointer /* client_data */
- ) /* filter */,
- XPointer /* client_data */
-);
-
-extern void _XRegisterFilterByType(
- Display* /* dpy */,
- Window /* window */,
- int /* start_type */,
- int /* end_type */,
- Bool (*)(
- Display* /* display */,
- Window /* window */,
- XEvent* /* event */,
- XPointer /* client_data */
- ) /* filter */,
- XPointer /* client_data */
-);
-
-extern void _XUnregisterFilter(
- Display* /* dpy */,
- Window /* window */,
- Bool (*)(
- Display* /* display */,
- Window /* window */,
- XEvent* /* event */,
- XPointer /* client_data */
- ) /* filter */,
- XPointer /* client_data */
-);
-
-extern void _XlcCountVaList(
- va_list var,
- int* count_return
-);
-
-extern void _XlcVaToArgList(
- va_list var,
- int count,
- XlcArgList* args_return
-);
-
-
-extern void _XlcCopyFromArg(
- char * src,
- char * dst,
- int size
-);
-
-extern void _XlcCopyToArg(
- char * src,
- char ** dst,
- int size
-);
-
-extern void _XlcCompileResourceList(
- XlcResourceList resources,
- int num_resources
-);
-
-extern char *_XlcGetValues(
- XPointer base,
- XlcResourceList resources,
- int num_resources,
- XlcArgList args,
- int num_args,
- unsigned long mask
-);
-
-extern char *_XlcSetValues(
- XPointer base,
- XlcResourceList resources,
- int num_resources,
- XlcArgList args,
- int num_args,
- unsigned long mask
-);
-
-/* documented in i18n/Framework.PS */
-extern void _XlcInitLoader (void);
-
-extern void _XlcDeInitLoader (void);
-
-/* documented in i18n/Framework.PS */
-/* Returns True on success, False on failure. */
-extern Bool _XlcAddLoader(
- XLCdLoadProc proc,
- XlcPosition position
-);
-
-/* documented in i18n/Framework.PS */
-extern void _XlcRemoveLoader(
- XLCdLoadProc proc
-);
-
-/* Registers UTF-8 converters for a non-UTF-8 locale. */
-extern void _XlcAddUtf8Converters(
- XLCd lcd
-);
-
-/* Registers UTF-8 converters for a UTF-8 locale. */
-extern void _XlcAddUtf8LocaleConverters(
- XLCd lcd
-);
-
-/* Registers GB18030 converters for a GB18030 locale. */
-extern void _XlcAddGB18030LocaleConverters(
- XLCd lcd
-);
-
-/* The default locale loader. Assumes an ASCII encoding. */
-extern XLCd _XlcDefaultLoader(
- const char* name
-);
-
-/* The generic locale loader. Suitable for all encodings except UTF-8.
- Uses an XLC_LOCALE configuration file. */
-extern XLCd _XlcGenericLoader(
- const char* name
-);
-
-/* The UTF-8 locale loader. Suitable for UTF-8 encoding.
- Uses an XLC_LOCALE configuration file. */
-extern XLCd _XlcUtf8Loader(
- const char* name
-);
-
-/* The old EUC locale loader. */
-extern XLCd _XlcEucLoader(
- const char* name
-);
-
-/* The old SJIS locale loader. */
-extern XLCd _XlcSjisLoader(
- const char* name
-);
-
-/* The old ISO-2022-JP locale loader. */
-extern XLCd _XlcJisLoader(
- const char* name
-);
-
-extern XLCd _XlcDynamicLoad(
- const char* name
-);
-
-/* The old dynamic loader. */
-extern XLCd _XlcDynamicLoader(
- const char* name
-);
-
-extern Bool _XInitDefaultIM(
- XLCd lcd
-);
-
-extern Bool _XInitDefaultOM(
- XLCd lcd
-);
-
-extern Bool _XInitDynamicIM(
- XLCd lcd
-);
-
-extern Bool _XInitDynamicOM(
- XLCd lcd
-);
-
-_XFUNCPROTOEND
-
-#endif /* !_XP_PRINT_SERVER_ */
-
-#endif /* _XLCINT_H_ */
+/*
+
+Copyright 1991, 1998 The Open Group
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
+
+The above copyright notice and this permission notice shall be included
+in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR
+OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
+ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group shall
+not be used in advertising or otherwise to promote the sale, use or
+other dealings in this Software without prior written authorization
+from The Open Group.
+
+*/
+
+/*
+ * Copyright 1990, 1991 by OMRON Corporation, NTT Software Corporation,
+ * and Nippon Telegraph and Telephone Corporation
+ * Copyright 1991 by the Open Software Foundation
+ * Copyright 1993 by the TOSHIBA Corp.
+ * Copyright 1993, 1994 by Sony Corporation
+ * Copyright 1993, 1994 by the FUJITSU LIMITED
+ *
+ * Permission to use, copy, modify, distribute, and sell this software and its
+ * documentation for any purpose is hereby granted without fee, provided that
+ * the above copyright notice appear in all copies and that both that
+ * copyright notice and this permission notice appear in supporting
+ * documentation, and that the names of OMRON, NTT Software, NTT, Open
+ * Software Foundation, and Sony Corporation not be used in advertising
+ * or publicity pertaining to distribution of the software without specific,
+ * written prior permission. OMRON, NTT Software, NTT, Open Software
+ * Foundation, and Sony Corporation make no representations about the
+ * suitability of this software for any purpose. It is provided "as is"
+ * without express or implied warranty.
+ *
+ * OMRON, NTT SOFTWARE, NTT, OPEN SOFTWARE FOUNDATION, AND SONY
+ * CORPORATION DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
+ * ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT
+ * SHALL OMRON, NTT SOFTWARE, NTT, OPEN SOFTWARE FOUNDATION, OR SONY
+ * CORPORATION BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
+ * ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER
+ * IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT
+ * OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+ *
+ * Authors: Li Yuhong OMRON Corporation
+ * Tatsuya Kato NTT Software Corporation
+ * Hiroshi Kuribayashi OMRON Coproration
+ * Muneiyoshi Suzuki Nippon Telegraph and Telephone Co.
+ *
+ * M. Collins OSF
+ * Katsuhisa Yano TOSHIBA Corp.
+ * Makoto Wakamatsu Sony Corporation
+ * Takashi Fujiwara FUJITSU LIMITED
+ */
+
+
+#ifndef _XLCINT_H_
+#define _XLCINT_H_
+
+#ifndef _XP_PRINT_SERVER_
+
+#include <X11/Xresource.h>
+#include <X11/Xutil.h>
+#include <stdarg.h>
+
+typedef Bool (*XFilterEventProc)(
+ Display* /* display */,
+ Window /* window */,
+ XEvent* /* event */,
+ XPointer /* client_data */
+);
+
+typedef struct _XIMFilter {
+ struct _XIMFilter *next;
+ Window window;
+ unsigned long event_mask;
+ int start_type, end_type;
+ XFilterEventProc filter;
+ XPointer client_data;
+} XFilterEventRec, *XFilterEventList;
+
+typedef struct {
+ char *name;
+ XPointer value;
+} XIMArg;
+
+#ifdef offsetof
+#define XOffsetOf(s_type,field) offsetof(s_type,field)
+#else
+#define XOffsetOf(s_type,field) ((unsigned int)&(((s_type*)NULL)->field))
+#endif
+
+#define XIMNumber(arr) ((unsigned int) (sizeof(arr) / sizeof(arr[0])))
+
+/*
+ * define secondary data structs which are part of Input Methods
+ * and Input Context
+ */
+typedef struct {
+ const char *resource_name; /* Resource string */
+ XrmQuark xrm_name; /* Resource name quark */
+ int resource_size; /* Size in bytes of data */
+ long resource_offset; /* Offset from base */
+ unsigned short mode; /* Read Write Permission */
+ unsigned short id; /* Input Method Protocol */
+} XIMResource, *XIMResourceList;
+
+/*
+ * data block describing the visual attributes associated with
+ * an input context
+ */
+typedef struct {
+ XRectangle area;
+ XRectangle area_needed;
+ XPoint spot_location;
+ Colormap colormap;
+ Atom std_colormap;
+ unsigned long foreground;
+ unsigned long background;
+ Pixmap background_pixmap;
+ XFontSet fontset;
+ int line_spacing;
+ Cursor cursor;
+ XICCallback start_callback;
+ XICCallback done_callback;
+ XICCallback draw_callback;
+ XICCallback caret_callback;
+ XIMPreeditState preedit_state;
+ XICCallback state_notify_callback;
+} ICPreeditAttributes, *ICPreeditAttributesPtr;
+
+typedef struct {
+ XRectangle area;
+ XRectangle area_needed;
+ Colormap colormap;
+ Atom std_colormap;
+ unsigned long foreground;
+ unsigned long background;
+ Pixmap background_pixmap;
+ XFontSet fontset;
+ int line_spacing;
+ Cursor cursor;
+ XICCallback start_callback;
+ XICCallback done_callback;
+ XICCallback draw_callback;
+} ICStatusAttributes, *ICStatusAttributesPtr;
+
+#endif /* !_XP_PRINT_SERVER_ */
+
+/*
+ * Methods for Xrm parsing
+ */
+
+/* The state is a pointer to an object created by the locale's
+ init_parse_info function (default: _XrmDefaultInitParseInfo). */
+
+/* Sets the state to the initial state.
+ Initiates a sequence of calls to the XmbCharProc. */
+typedef void (*XmbInitProc)(
+ XPointer state
+);
+
+/* Transforms one multibyte character, starting at str, and return a 'char'
+ in the same parsing class (not a wide character!). Returns the number of
+ consumed bytes in *lenp. */
+typedef char (*XmbCharProc)(
+ XPointer state,
+ const char * str,
+ int* lenp
+);
+
+/* Terminates a sequence of calls to the XmbCharProc. */
+typedef void (*XmbFinishProc)(
+ XPointer state
+);
+
+/* Returns the name of the state's locale, as a static string. */
+typedef const char* (*XlcNameProc)(
+ XPointer state
+);
+
+/* Frees the state, which was allocated by the locale's init_parse_info
+ function. */
+typedef void (*XrmDestroyProc)(
+ XPointer state
+);
+
+/* Set of methods for Xrm parsing. */
+typedef struct {
+ XmbInitProc mbinit;
+ XmbCharProc mbchar;
+ XmbFinishProc mbfinish;
+ XlcNameProc lcname;
+ XrmDestroyProc destroy;
+} XrmMethodsRec;
+typedef const XrmMethodsRec *XrmMethods;
+
+#ifndef _XP_PRINT_SERVER_
+
+typedef struct _XLCd *XLCd; /* need forward reference */
+
+/*
+ * define an LC, it's methods, and data.
+ */
+
+typedef void (*XCloseLCProc)(
+ XLCd /* lcd */
+);
+
+typedef char* (*XlcMapModifiersProc)(
+ XLCd /* lcd */,
+ _Xconst char* /* user_mods */,
+ _Xconst char* /* prog_mods */
+);
+
+typedef XOM (*XOpenOMProc)(
+ XLCd /* lcd */,
+ Display* /* display */,
+ XrmDatabase /* rdb */,
+ _Xconst char* /* res_name */,
+ _Xconst char* /* res_class */
+);
+
+typedef XIM (*XOpenIMProc)(
+ XLCd /* lcd */,
+ Display* /* display */,
+ XrmDatabase /* rdb */,
+ char* /* res_name */,
+ char* /* res_class */
+);
+
+typedef Bool (*XRegisterIMInstantiateCBProc)(
+ XLCd /* lcd */,
+ Display* /* display */,
+ XrmDatabase /* rdb */,
+ char* /* res_name */,
+ char* /* res_class */,
+ XIDProc /* callback */,
+ XPointer /* client_data */
+);
+
+typedef Bool (*XUnregisterIMInstantiateCBProc)(
+ XLCd /* lcd */,
+ Display* /* display */,
+ XrmDatabase /* rdb */,
+ char* /* res_name */,
+ char* /* res_class */,
+ XIDProc /* callback */,
+ XPointer /* client_data */
+);
+
+typedef XrmMethods (*XrmInitParseInfoProc)(
+ XLCd /* lcd */,
+ XPointer* /* state */
+);
+
+typedef int (*XmbTextPropertyToTextListProc)(
+ XLCd lcd,
+ Display* display,
+ const XTextProperty* text_prop,
+ char*** list_return,
+ int* count_return
+);
+
+typedef int (*XwcTextPropertyToTextListProc)(
+ XLCd lcd,
+ Display* display,
+ const XTextProperty* text_prop,
+ wchar_t*** list_return,
+ int* count_return
+);
+
+typedef int (*XmbTextListToTextPropertyProc)(
+ XLCd lcd,
+ Display* display,
+ char** list,
+ int count,
+ XICCEncodingStyle style,
+ XTextProperty* text_prop_return
+);
+
+typedef int (*XwcTextListToTextPropertyProc)(
+ XLCd lcd,
+ Display* display,
+ wchar_t** list,
+ int count,
+ XICCEncodingStyle style,
+ XTextProperty* text_prop_return
+);
+
+typedef void (*XwcFreeStringListProc)(
+ XLCd lcd,
+ wchar_t** list
+);
+
+typedef const char* (*XDefaultStringProc)(
+ XLCd lcd
+);
+
+typedef struct {
+ XCloseLCProc close;
+ XlcMapModifiersProc map_modifiers;
+ XOpenOMProc open_om;
+ XOpenIMProc open_im;
+ XrmInitParseInfoProc init_parse_info;
+ XmbTextPropertyToTextListProc mb_text_prop_to_list;
+ XwcTextPropertyToTextListProc wc_text_prop_to_list;
+ XmbTextPropertyToTextListProc utf8_text_prop_to_list;
+ XmbTextListToTextPropertyProc mb_text_list_to_prop;
+ XwcTextListToTextPropertyProc wc_text_list_to_prop;
+ XmbTextListToTextPropertyProc utf8_text_list_to_prop;
+ XwcFreeStringListProc wc_free_string_list;
+ XDefaultStringProc default_string;
+ XRegisterIMInstantiateCBProc register_callback;
+ XUnregisterIMInstantiateCBProc unregister_callback;
+} XLCdMethodsRec, *XLCdMethods;
+
+
+typedef struct {
+ char* name; /* name of this LC */
+ char* modifiers; /* modifiers of locale */
+} XLCdCoreRec, *XLCdCore;
+
+
+typedef struct _XLCd {
+ XLCdMethods methods; /* methods of this LC */
+ XLCdCore core; /* data of this LC */
+ XPointer opaque; /* LDX specific data */
+} XLCdRec;
+
+typedef int XlcPosition;
+
+#define XlcHead 0
+#define XlcTail -1
+
+typedef struct {
+ char *name;
+ XPointer value;
+} XlcArg, *XlcArgList;
+
+typedef struct _XlcResource {
+ const char *name;
+ XrmQuark xrm_name;
+ int size;
+ int offset;
+ unsigned long mask;
+} XlcResource, *XlcResourceList;
+
+#define XlcCreateMask (1L<<0)
+#define XlcDefaultMask (1L<<1)
+#define XlcGetMask (1L<<2)
+#define XlcSetMask (1L<<3)
+#define XlcIgnoreMask (1L<<4)
+
+#define XlcNumber(arr) (sizeof(arr) / sizeof(arr[0]))
+
+typedef Status (*XCloseOMProc)(
+ XOM /* om */
+);
+
+typedef char* (*XSetOMValuesProc)(
+ XOM /* om */,
+ XlcArgList /* args */,
+ int /* num_args */
+);
+
+typedef char* (*XGetOMValuesProc)(
+ XOM /* om */,
+ XlcArgList /* args */,
+ int /* num_args */
+);
+
+typedef XOC (*XCreateOCProc)(
+ XOM /* om */,
+ XlcArgList /* args */,
+ int /* num_args */
+);
+
+typedef struct _XOMMethodsRec {
+ XCloseOMProc close;
+ XSetOMValuesProc set_values;
+ XGetOMValuesProc get_values;
+ XCreateOCProc create_oc;
+} XOMMethodsRec, *XOMMethods;
+
+typedef struct _XOMCoreRec {
+ XLCd lcd; /* lcd */
+ Display *display; /* display */
+ XrmDatabase rdb; /* database */
+ char *res_name; /* resource name */
+ char *res_class; /* resource class */
+ XOC oc_list; /* xoc list */
+ XlcResourceList resources; /* xom resources */
+ int num_resources; /* number of xom resources */
+ XOMCharSetList required_charset; /* required charset list */
+ XOMOrientation orientation_list; /* orientation list */
+ Bool directional_dependent; /* directional-dependent */
+ Bool contextual_drawing; /* contextual drawing */
+ Bool context_dependent; /* context-dependent drawing */
+} XOMCoreRec, *XOMCore;
+
+typedef struct _XOM {
+ XOMMethods methods;
+ XOMCoreRec core;
+} XOMRec;
+
+typedef void (*XDestroyOCProc)(
+ XOC /* oc */
+);
+
+typedef char* (*XSetOCValuesProc)(
+ XOC /* oc */,
+ XlcArgList /* args */,
+ int /* num_args */
+);
+
+typedef char* (*XGetOCValuesProc)(
+ XOC /* oc */,
+ XlcArgList /* args */,
+ int /* num_args */
+);
+
+/*
+ * X Font Sets are an instantiable object, so we define it, the
+ * object itself, a method list and data
+ */
+
+/*
+ * XFontSet object method list
+ */
+
+typedef int (*XmbTextEscapementProc)(
+ XFontSet /* font_set */,
+ _Xconst char* /* text */,
+ int /* text_len */
+);
+
+typedef int (*XmbTextExtentsProc)(
+ XFontSet /* font_set */,
+ _Xconst char* /* text */,
+ int /* text_len */,
+ XRectangle* /* overall_ink_extents */,
+ XRectangle* /* overall_logical_extents */
+);
+
+typedef Status (*XmbTextPerCharExtentsProc)(
+ XFontSet /* font_set */,
+ _Xconst char* /* text */,
+ int /* text_len */,
+ XRectangle* /* ink_extents_buffer */,
+ XRectangle* /* logical_extents_buffer */,
+ int /* buffer_size */,
+ int* /* num_chars */,
+ XRectangle* /* max_ink_extents */,
+ XRectangle* /* max_logical_extents */
+);
+
+typedef int (*XmbDrawStringProc)(
+ Display* /* display */,
+ Drawable /* drawable */,
+ XFontSet /* font_set */,
+ GC /* gc */,
+ int /* x */,
+ int /* y */,
+ _Xconst char* /* text */,
+ int /* text_len */
+);
+
+typedef void (*XmbDrawImageStringProc)(
+ Display* /* display */,
+ Drawable /* drawable */,
+ XFontSet /* font_set */,
+ GC /* gc */,
+ int /* x */,
+ int /* y */,
+ _Xconst char* /* text */,
+ int /* text_len */
+);
+
+typedef int (*XwcTextEscapementProc)(
+ XFontSet /* font_set */,
+ _Xconst wchar_t* /* text */,
+ int /* text_len */
+);
+
+typedef int (*XwcTextExtentsProc)(
+ XFontSet /* font_set */,
+ _Xconst wchar_t* /* text */,
+ int /* text_len */,
+ XRectangle* /* overall_ink_extents */,
+ XRectangle* /* overall_logical_extents */
+);
+
+typedef Status (*XwcTextPerCharExtentsProc)(
+ XFontSet /* font_set */,
+ _Xconst wchar_t* /* text */,
+ int /* text_len */,
+ XRectangle* /* ink_extents_buffer */,
+ XRectangle* /* logical_extents_buffer */,
+ int /* buffer_size */,
+ int* /* num_chars */,
+ XRectangle* /* max_ink_extents */,
+ XRectangle* /* max_logical_extents */
+);
+
+typedef int (*XwcDrawStringProc)(
+ Display* /* display */,
+ Drawable /* drawable */,
+ XFontSet /* font_set */,
+ GC /* gc */,
+ int /* x */,
+ int /* y */,
+ _Xconst wchar_t* /* text */,
+ int /* text_len */
+);
+
+typedef void (*XwcDrawImageStringProc)(
+ Display* /* display */,
+ Drawable /* drawable */,
+ XFontSet /* font_set */,
+ GC /* gc */,
+ int /* x */,
+ int /* y */,
+ _Xconst wchar_t* /* text */,
+ int /* text_len */
+);
+
+typedef struct {
+ XDestroyOCProc destroy;
+ XSetOCValuesProc set_values;
+ XGetOCValuesProc get_values;
+
+ /* multi-byte text drawing methods */
+
+ XmbTextEscapementProc mb_escapement;
+ XmbTextExtentsProc mb_extents;
+ XmbTextPerCharExtentsProc mb_extents_per_char;
+ XmbDrawStringProc mb_draw_string;
+ XmbDrawImageStringProc mb_draw_image_string;
+
+ /* wide character text drawing methods */
+
+ XwcTextEscapementProc wc_escapement;
+ XwcTextExtentsProc wc_extents;
+ XwcTextPerCharExtentsProc wc_extents_per_char;
+ XwcDrawStringProc wc_draw_string;
+ XwcDrawImageStringProc wc_draw_image_string;
+
+ /* UTF-8 text drawing methods */
+
+ XmbTextEscapementProc utf8_escapement;
+ XmbTextExtentsProc utf8_extents;
+ XmbTextPerCharExtentsProc utf8_extents_per_char;
+ XmbDrawStringProc utf8_draw_string;
+ XmbDrawImageStringProc utf8_draw_image_string;
+} XOCMethodsRec, *XOCMethods;
+
+
+/*
+ * XOC independent data
+ */
+
+typedef struct {
+ XOM om; /* XOM */
+ XOC next; /* next XOC */
+ XlcResourceList resources; /* xoc resources */
+ int num_resources; /* number of xoc resources */
+ char *base_name_list; /* base font name list */
+ Bool om_automatic; /* OM Automatic */
+ XOMFontInfo font_info; /* font info */
+ XFontSetExtents font_set_extents; /* font set extents */
+ char *default_string; /* default string */
+ XOMCharSetList missing_list; /* missing charset list */
+ XOrientation orientation; /* orientation */
+ char *res_name; /* resource name */
+ char *res_class; /* resource class */
+} XOCCoreRec, *XOCCore;
+
+typedef struct _XOC {
+ XOCMethods methods;
+ XOCCoreRec core;
+} XOCRec;
+
+
+/*
+ * X Input Managers are an instantiable object, so we define it, the
+ * object itself, a method list and data.
+ */
+
+/*
+ * an Input Manager object method list
+ */
+typedef struct {
+ Status (*close)(
+ XIM
+ );
+ char* (*set_values)(
+ XIM, XIMArg*
+ );
+ char* (*get_values)(
+ XIM, XIMArg*
+ );
+ XIC (*create_ic)(
+ XIM, XIMArg*
+ );
+ int (*ctstombs)(
+ XIM, char*, int, char*, int, Status *
+ );
+ int (*ctstowcs)(
+ XIM, char*, int, wchar_t*, int, Status *
+ );
+ int (*ctstoutf8)(
+ XIM, char*, int, char*, int, Status *
+ );
+} XIMMethodsRec, *XIMMethods;
+
+/*
+ * Input Manager LC independent data
+ */
+typedef struct {
+ XLCd lcd; /* LC of this input method */
+ XIC ic_chain; /* list of ICs for this IM */
+
+ Display * display; /* display */
+ XrmDatabase rdb;
+ char * res_name;
+ char * res_class;
+
+ XIMValuesList *im_values_list;
+ XIMValuesList *ic_values_list;
+ XIMStyles *styles;
+ XIMCallback destroy_callback;
+ char * im_name; /* XIMMODIFIER name */
+ XIMResourceList im_resources; /* compiled IM resource list */
+ unsigned int im_num_resources;
+ XIMResourceList ic_resources; /* compiled IC resource list */
+ unsigned int ic_num_resources;
+ Bool visible_position;
+} XIMCoreRec, *XIMCore;
+
+
+
+/*
+ * An X Input Manager (IM). Implementations may need to extend this data
+ * structure to accomodate additional data, state information etc.
+ */
+typedef struct _XIM {
+ XIMMethods methods; /* method list of this IM */
+ XIMCoreRec core; /* data of this IM */
+} XIMRec;
+
+
+
+/*
+ * X Input Contexts (IC) are an instantiable object, so we define it, the
+ * object itself, a method list and data for this object
+ */
+
+/*
+ * Input Context method list
+ */
+typedef struct {
+ void (*destroy)(
+ XIC
+ );
+ void (*set_focus)(
+ XIC
+ );
+ void (*unset_focus)(
+ XIC
+ );
+ char* (*set_values)(
+ XIC, XIMArg*
+ );
+ char* (*get_values)(
+ XIC, XIMArg*
+ );
+ char* (*mb_reset)(
+ XIC
+ );
+ wchar_t* (*wc_reset)(
+ XIC
+ );
+ char* (*utf8_reset)(
+ XIC
+ );
+ int (*mb_lookup_string)(
+ XIC, XKeyEvent*, char*, int, KeySym*, Status*
+ );
+ int (*wc_lookup_string)(
+ XIC, XKeyEvent*, wchar_t*, int, KeySym*, Status*
+ );
+ int (*utf8_lookup_string)(
+ XIC, XKeyEvent*, char*, int, KeySym*, Status*
+ );
+} XICMethodsRec, *XICMethods;
+
+
+/*
+ * Input Context LC independent data
+ */
+typedef struct {
+ XIM im; /* XIM this IC belongs too */
+ XIC next; /* linked list of ICs for IM */
+
+ Window client_window; /* window IM can use for */
+ /* display or subwindows */
+ XIMStyle input_style; /* IM's input style */
+ Window focus_window; /* where key events go */
+ unsigned long filter_events; /* event mask from IM */
+ XICCallback geometry_callback; /* client callback */
+ char * res_name;
+ char * res_class;
+
+ XICCallback destroy_callback;
+ XICCallback string_conversion_callback;
+ XIMStringConversionText string_conversion;
+ XIMResetState reset_state;
+ XIMHotKeyTriggers *hotkey;
+ XIMHotKeyState hotkey_state;
+
+ ICPreeditAttributes preedit_attr; /* visuals of preedit area */
+ ICStatusAttributes status_attr; /* visuals of status area */
+} XICCoreRec, *XICCore;
+
+
+/*
+ * an Input Context. Implementations may need to extend this data
+ * structure to accomodate additional data, state information etc.
+ */
+typedef struct _XIC {
+ XICMethods methods; /* method list of this IC */
+ XICCoreRec core; /* data of this IC */
+} XICRec;
+
+
+/* If the argument 'name' is appropriate for this loader, it instantiates an
+ XLCd object with appropriate locale methods and returns it. May return
+ NULL; in this case, the remaining loaders are tried. */
+typedef XLCd (*XLCdLoadProc)(
+ const char* name
+);
+
+_XFUNCPROTOBEGIN
+
+extern XLCd _XOpenLC(
+ char* name
+);
+
+extern void _XCloseLC(
+ XLCd lcd
+);
+
+extern XLCd _XlcCurrentLC (void);
+
+extern Bool _XlcValidModSyntax(
+ const char* mods,
+ const char* const * valid
+);
+
+extern char *_XlcDefaultMapModifiers(
+ XLCd lcd,
+ _Xconst char* user_mods,
+ _Xconst char* prog_mods
+);
+
+extern void _XIMCompileResourceList(
+ XIMResourceList /* res */,
+ unsigned int /* num_res */
+);
+
+extern void _XCopyToArg(
+ XPointer /* src */,
+ XPointer* /* dst */,
+ unsigned int /* size */
+);
+
+extern char ** _XParseBaseFontNameList(
+ char* /* str */,
+ int* /* num */
+);
+
+extern XrmMethods _XrmInitParseInfo(
+ XPointer* statep
+);
+
+extern void _XRegisterFilterByMask(
+ Display* /* dpy */,
+ Window /* window */,
+ unsigned long /* event_mask */,
+ Bool (*)(
+ Display* /* display */,
+ Window /* window */,
+ XEvent* /* event */,
+ XPointer /* client_data */
+ ) /* filter */,
+ XPointer /* client_data */
+);
+
+extern void _XRegisterFilterByType(
+ Display* /* dpy */,
+ Window /* window */,
+ int /* start_type */,
+ int /* end_type */,
+ Bool (*)(
+ Display* /* display */,
+ Window /* window */,
+ XEvent* /* event */,
+ XPointer /* client_data */
+ ) /* filter */,
+ XPointer /* client_data */
+);
+
+extern void _XUnregisterFilter(
+ Display* /* dpy */,
+ Window /* window */,
+ Bool (*)(
+ Display* /* display */,
+ Window /* window */,
+ XEvent* /* event */,
+ XPointer /* client_data */
+ ) /* filter */,
+ XPointer /* client_data */
+);
+
+extern void _XlcCountVaList(
+ va_list var,
+ int* count_return
+);
+
+extern void _XlcVaToArgList(
+ va_list var,
+ int count,
+ XlcArgList* args_return
+);
+
+
+extern void _XlcCopyFromArg(
+ char * src,
+ char * dst,
+ int size
+);
+
+extern void _XlcCopyToArg(
+ char * src,
+ char ** dst,
+ int size
+);
+
+extern void _XlcCompileResourceList(
+ XlcResourceList resources,
+ int num_resources
+);
+
+extern char *_XlcGetValues(
+ XPointer base,
+ XlcResourceList resources,
+ int num_resources,
+ XlcArgList args,
+ int num_args,
+ unsigned long mask
+);
+
+extern char *_XlcSetValues(
+ XPointer base,
+ XlcResourceList resources,
+ int num_resources,
+ XlcArgList args,
+ int num_args,
+ unsigned long mask
+);
+
+/* documented in i18n/Framework.PS */
+extern void _XlcInitLoader (void);
+
+extern void _XlcDeInitLoader (void);
+
+/* documented in i18n/Framework.PS */
+/* Returns True on success, False on failure. */
+extern Bool _XlcAddLoader(
+ XLCdLoadProc proc,
+ XlcPosition position
+);
+
+/* documented in i18n/Framework.PS */
+extern void _XlcRemoveLoader(
+ XLCdLoadProc proc
+);
+
+/* Registers UTF-8 converters for a non-UTF-8 locale. */
+extern void _XlcAddUtf8Converters(
+ XLCd lcd
+);
+
+/* Registers UTF-8 converters for a UTF-8 locale. */
+extern void _XlcAddUtf8LocaleConverters(
+ XLCd lcd
+);
+
+/* Registers GB18030 converters for a GB18030 locale. */
+extern void _XlcAddGB18030LocaleConverters(
+ XLCd lcd
+);
+
+/* The default locale loader. Assumes an ASCII encoding. */
+extern XLCd _XlcDefaultLoader(
+ const char* name
+);
+
+/* The generic locale loader. Suitable for all encodings except UTF-8.
+ Uses an XLC_LOCALE configuration file. */
+extern XLCd _XlcGenericLoader(
+ const char* name
+);
+
+/* The UTF-8 locale loader. Suitable for UTF-8 encoding.
+ Uses an XLC_LOCALE configuration file. */
+extern XLCd _XlcUtf8Loader(
+ const char* name
+);
+
+/* The old EUC locale loader. */
+extern XLCd _XlcEucLoader(
+ const char* name
+);
+
+/* The old SJIS locale loader. */
+extern XLCd _XlcSjisLoader(
+ const char* name
+);
+
+/* The old ISO-2022-JP locale loader. */
+extern XLCd _XlcJisLoader(
+ const char* name
+);
+
+extern XLCd _XlcDynamicLoad(
+ const char* name
+);
+
+/* The old dynamic loader. */
+extern XLCd _XlcDynamicLoader(
+ const char* name
+);
+
+extern Bool _XInitDefaultIM(
+ XLCd lcd
+);
+
+extern Bool _XInitDefaultOM(
+ XLCd lcd
+);
+
+extern Bool _XInitDynamicIM(
+ XLCd lcd
+);
+
+extern Bool _XInitDynamicOM(
+ XLCd lcd
+);
+
+_XFUNCPROTOEND
+
+#endif /* !_XP_PRINT_SERVER_ */
+
+#endif /* _XLCINT_H_ */
diff --git a/libX11/src/xlibi18n/lcCT.c b/libX11/src/xlibi18n/lcCT.c
index a230567f9..2fbe8aa88 100644
--- a/libX11/src/xlibi18n/lcCT.c
+++ b/libX11/src/xlibi18n/lcCT.c
@@ -1,1303 +1,1303 @@
-/*
- * Copyright 1992, 1993 by TOSHIBA Corp.
- *
- * Permission to use, copy, modify, and distribute this software and its
- * documentation for any purpose and without fee is hereby granted, provided
- * that the above copyright notice appear in all copies and that both that
- * copyright notice and this permission notice appear in supporting
- * documentation, and that the name of TOSHIBA not be used in advertising
- * or publicity pertaining to distribution of the software without specific,
- * written prior permission. TOSHIBA make no representations about the
- * suitability of this software for any purpose. It is provided "as is"
- * without express or implied warranty.
- *
- * TOSHIBA DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
- * ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
- * TOSHIBA BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
- * ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
- * WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
- * ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
- * SOFTWARE.
- *
- * Author: Katsuhisa Yano TOSHIBA Corp.
- * mopi@osa.ilab.toshiba.co.jp
- */
-/*
- * Copyright 1995 by FUJITSU LIMITED
- * This is source code modified by FUJITSU LIMITED under the Joint
- * Development Agreement for the CDE/Motif PST.
- *
- * Modifier: Takanori Tateno FUJITSU LIMITED
- *
- */
-/*
- * 2000
- * Modifier: Ivan Pascal The XFree86 Project
- * Modifier: Bruno Haible The XFree86 Project
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-#include "XlcPubI.h"
-#include <X11/Xos.h>
-#include <stdio.h>
-
-
-/* ====================== Built-in Character Sets ====================== */
-
-/*
- * Static representation of a character set that can be used in Compound Text.
- */
-typedef struct _CTDataRec {
- const char name[19];
- const char ct_sequence[5]; /* Compound Text encoding, ESC sequence */
-} CTDataRec, *CTData;
-
-static const CTDataRec default_ct_data[] =
-{
- /* */
- /* X11 registry name MIME name ISO-IR ESC sequence */
- /* */
-
- /* Registered character sets with one byte per character */
- { "ISO8859-1:GL", /* US-ASCII 6 */ "\033(B" },
- { "ISO8859-1:GR", /* ISO-8859-1 100 */ "\033-A" },
- { "ISO8859-2:GR", /* ISO-8859-2 101 */ "\033-B" },
- { "ISO8859-3:GR", /* ISO-8859-3 109 */ "\033-C" },
- { "ISO8859-4:GR", /* ISO-8859-4 110 */ "\033-D" },
- { "ISO8859-5:GR", /* ISO-8859-5 144 */ "\033-L" },
- { "ISO8859-6:GR", /* ISO-8859-6 127 */ "\033-G" },
- { "ISO8859-7:GR", /* ISO-8859-7 126 */ "\033-F" },
- { "ISO8859-8:GR", /* ISO-8859-8 138 */ "\033-H" },
- { "ISO8859-9:GR", /* ISO-8859-9 148 */ "\033-M" },
- { "ISO8859-10:GR", /* ISO-8859-10 157 */ "\033-V" },
- { "ISO8859-11:GR", /* ISO-8859-11 166 */ "\033-T" },
- { "ISO8859-13:GR", /* ISO-8859-13 179 */ "\033-Y" },
- { "ISO8859-14:GR", /* ISO-8859-14 199 */ "\033-_" },
- { "ISO8859-15:GR", /* ISO-8859-15 203 */ "\033-b" },
- { "ISO8859-16:GR", /* ISO-8859-16 226 */ "\033-f" },
- { "JISX0201.1976-0:GL", /* ISO-646-JP 14 */ "\033(J" },
- { "JISX0201.1976-0:GR", "\033)I" },
-#if 0
- { "TIS620-0:GR", /* TIS-620 166 */ "\033-T" },
-#endif
-
- /* Registered character sets with two byte per character */
- { "GB2312.1980-0:GL", /* GB_2312-80 58 */ "\033$(A" },
- { "GB2312.1980-0:GR", /* GB_2312-80 58 */ "\033$)A" },
- { "JISX0208.1983-0:GL", /* JIS_X0208-1983 87 */ "\033$(B" },
- { "JISX0208.1983-0:GR", /* JIS_X0208-1983 87 */ "\033$)B" },
- { "JISX0208.1990-0:GL", /* JIS_X0208-1990 168 */ "\033$(B" },
- { "JISX0208.1990-0:GR", /* JIS_X0208-1990 168 */ "\033$)B" },
- { "JISX0212.1990-0:GL", /* JIS_X0212-1990 159 */ "\033$(D" },
- { "JISX0212.1990-0:GR", /* JIS_X0212-1990 159 */ "\033$)D" },
- { "KSC5601.1987-0:GL", /* KS_C_5601-1987 149 */ "\033$(C" },
- { "KSC5601.1987-0:GR", /* KS_C_5601-1987 149 */ "\033$)C" },
- { "CNS11643.1986-1:GL", /* CNS 11643-1992 pl.1 171 */ "\033$(G" },
- { "CNS11643.1986-1:GR", /* CNS 11643-1992 pl.1 171 */ "\033$)G" },
- { "CNS11643.1986-2:GL", /* CNS 11643-1992 pl.2 172 */ "\033$(H" },
- { "CNS11643.1986-2:GR", /* CNS 11643-1992 pl.2 172 */ "\033$)H" },
- { "CNS11643.1992-3:GL", /* CNS 11643-1992 pl.3 183 */ "\033$(I" },
- { "CNS11643.1992-3:GR", /* CNS 11643-1992 pl.3 183 */ "\033$)I" },
- { "CNS11643.1992-4:GL", /* CNS 11643-1992 pl.4 184 */ "\033$(J" },
- { "CNS11643.1992-4:GR", /* CNS 11643-1992 pl.4 184 */ "\033$)J" },
- { "CNS11643.1992-5:GL", /* CNS 11643-1992 pl.5 185 */ "\033$(K" },
- { "CNS11643.1992-5:GR", /* CNS 11643-1992 pl.5 185 */ "\033$)K" },
- { "CNS11643.1992-6:GL", /* CNS 11643-1992 pl.6 186 */ "\033$(L" },
- { "CNS11643.1992-6:GR", /* CNS 11643-1992 pl.6 186 */ "\033$)L" },
- { "CNS11643.1992-7:GL", /* CNS 11643-1992 pl.7 187 */ "\033$(M" },
- { "CNS11643.1992-7:GR", /* CNS 11643-1992 pl.7 187 */ "\033$)M" },
-
- /* Registered encodings with a varying number of bytes per character */
- { "ISO10646-1", /* UTF-8 196 */ "\033%G" },
-
- /* Encodings without ISO-IR assigned escape sequence must be
- defined in XLC_LOCALE files, using "\033%/1" or "\033%/2". */
-
- /* Backward compatibility with XFree86 3.x */
-#if 1
- { "ISO8859-14:GR", "\033%/1" },
- { "ISO8859-15:GR", "\033%/1" },
-#endif
- /* For use by utf8 -> ctext */
- { "BIG5-0:GLGR", "\033%/2"},
- { "BIG5HKSCS-0:GLGR", "\033%/2"},
- { "GBK-0:GLGR", "\033%/2"},
- /* used by Emacs, but not backed by ISO-IR */
- { "BIG5-E0:GL", "\033$(0" },
- { "BIG5-E0:GR", "\033$)0" },
- { "BIG5-E1:GL", "\033$(1" },
- { "BIG5-E1:GR", "\033$)1" },
-
-};
-
-/* We represent UTF-8 as an XlcGLGR charset, not in extended segments. */
-#define UTF8_IN_EXTSEQ 0
-
-/* ======================= Parsing ESC Sequences ======================= */
-
-#define XctC0 0x0000
-#define XctHT 0x0009
-#define XctNL 0x000a
-#define XctESC 0x001b
-#define XctGL 0x0020
-#define XctC1 0x0080
-#define XctCSI 0x009b
-#define XctGR 0x00a0
-#define XctSTX 0x0002
-
-#define XctCntrlFunc 0x0023
-#define XctMB 0x0024
-#define XctOtherCoding 0x0025
-#define XctGL94 0x0028
-#define XctGR94 0x0029
-#define XctGR96 0x002d
-#define XctNonStandard 0x002f
-#define XctIgnoreExt 0x0030
-#define XctNotIgnoreExt 0x0031
-#define XctLeftToRight 0x0031
-#define XctRightToLeft 0x0032
-#define XctDirection 0x005d
-#define XctDirectionEnd 0x005d
-
-#define XctGL94MB 0x2428
-#define XctGR94MB 0x2429
-#define XctExtSeg 0x252f
-#define XctReturn 0x2540
-
-/*
- * Parses the header of a Compound Text segment, i.e. the charset designator.
- * The string starts at *text and has *length bytes.
- * Return value is one of:
- * 0 (no valid charset designator),
- * XctGL94, XctGR94, XctGR96, XctGL94MB, XctGR94MB,
- * XctLeftToRight, XctRightToLeft, XctDirectionEnd,
- * XctExtSeg, XctOtherCoding, XctReturn, XctIgnoreExt, XctNotIgnoreExt.
- * If the return value is not 0, *text is incremented and *length decremented,
- * to point past the charset designator. If the return value is one of
- * XctGL94, XctGR94, XctGR96, XctGL94MB, XctGR94MB,
- * XctExtSeg, XctOtherCoding, XctIgnoreExt, XctNotIgnoreExt,
- * *final_byte is set to the "final byte" of the charset designator.
- */
-static unsigned int
-_XlcParseCT(
- const char **text,
- int *length,
- unsigned char *final_byte)
-{
- unsigned int ret = 0;
- unsigned char ch;
- const unsigned char *str = (const unsigned char *) *text;
-
- *final_byte = 0;
-
- if (*length < 1)
- return 0;
- switch (ch = *str++) {
- case XctESC:
- if (*length < 2)
- return 0;
- switch (ch = *str++) {
- case XctOtherCoding: /* % */
- if (*length < 3)
- return 0;
- ch = *str++;
- if (ch == XctNonStandard) { /* / */
- if (*length < 4)
- return 0;
- ret = XctExtSeg;
- ch = *str++;
- } else if (ch == '@') {
- ret = XctReturn;
- } else {
- ret = XctOtherCoding;
- }
- *final_byte = ch;
- break;
-
- case XctCntrlFunc: /* # */
- if (*length < 4)
- return 0;
- *final_byte = *str++;
- switch (*str++) {
- case XctIgnoreExt: /* 0 */
- ret = XctIgnoreExt;
- break;
- case XctNotIgnoreExt: /* 1 */
- ret = XctNotIgnoreExt;
- break;
- default:
- ret = 0;
- break;
- }
- break;
-
- case XctMB: /* $ */
- if (*length < 4)
- return 0;
- ch = *str++;
- switch (ch) {
- case XctGL94: /* ( */
- ret = XctGL94MB;
- break;
- case XctGR94: /* ) */
- ret = XctGR94MB;
- break;
- default:
- ret = 0;
- break;
- }
- *final_byte = *str++;
- break;
-
- case XctGL94: /* ( */
- if (*length < 3)
- return 0;
- ret = XctGL94;
- *final_byte = *str++;
- break;
- case XctGR94: /* ) */
- if (*length < 3)
- return 0;
- ret = XctGR94;
- *final_byte = *str++;
- break;
- case XctGR96: /* - */
- if (*length < 3)
- return 0;
- ret = XctGR96;
- *final_byte = *str++;
- break;
- }
- break;
- case XctCSI:
- /* direction */
- if (*length < 2)
- return 0;
- switch (*str++) {
- case XctLeftToRight:
- if (*length < 3)
- return 0;
- if (*str++ == XctDirection)
- ret = XctLeftToRight;
- break;
- case XctRightToLeft:
- if (*length < 3)
- return 0;
- if (*str++ == XctDirection)
- ret = XctRightToLeft;
- break;
- case XctDirectionEnd:
- ret = XctDirectionEnd;
- break;
- }
- break;
- }
-
- if (ret) {
- *length -= (const char *) str - *text;
- *text = (const char *) str;
- }
- return ret;
-}
-
-/*
- * Fills into a freshly created XlcCharSet the fields that can be inferred
- * from the ESC sequence. These are side, char_size, set_size.
- * Returns True if the charset can be used with Compound Text.
- *
- * Used by _XlcCreateDefaultCharSet.
- */
-Bool
-_XlcParseCharSet(
- XlcCharSet charset)
-{
- unsigned int type;
- unsigned char final_byte;
- const char *ptr = charset->ct_sequence;
- int length;
- int char_size;
-
- if (*ptr == '\0')
- return False;
-
- length = strlen(ptr);
-
- type = _XlcParseCT(&ptr, &length, &final_byte);
-
- /* Check for validity and determine char_size.
- char_size = 0 means varying number of bytes per character. */
- switch (type) {
- case XctGL94:
- case XctGR94:
- case XctGR96:
- char_size = 1;
- break;
- case XctGL94MB:
- case XctGR94MB:
- char_size = (final_byte < 0x60 ? 2 : final_byte < 0x70 ? 3 : 4);
- break;
- case XctExtSeg:
- char_size = final_byte - '0';
- if (!(char_size >= 0 && char_size <= 4))
- return False;
- break;
- case XctOtherCoding:
- char_size = 0;
- break;
- default:
- return False;
- }
-
- charset->char_size = char_size;
-
- /* Fill in other values. */
- switch (type) {
- case XctGL94:
- case XctGL94MB:
- charset->side = XlcGL;
- charset->set_size = 94;
- break;
- case XctGR94:
- case XctGR94MB:
- charset->side = XlcGR;
- charset->set_size = 94;
- break;
- case XctGR96:
- charset->side = XlcGR;
- charset->set_size = 96;
- break;
- case XctExtSeg:
- case XctOtherCoding:
- charset->side = XlcGLGR;
- charset->set_size = 0;
- break;
- }
- return True;
-}
-
-
-/* =============== Management of the List of Character Sets =============== */
-
-/*
- * Representation of a character set that can be used for Compound Text,
- * at run time.
- * Note: This information is not contained in the XlcCharSet, because
- * multiple ESC sequences may be used for the same XlcCharSet.
- */
-typedef struct _CTInfoRec {
- XlcCharSet charset;
- const char *ct_sequence; /* Compound Text ESC sequence */
- unsigned int type;
- unsigned char final_byte;
- /* If type == XctExtSeg: */
- const char *ext_segment; /* extended segment name, then '\002' */
- int ext_segment_len; /* length of above, including final '\002' */
-
- struct _CTInfoRec *next;
-} CTInfoRec, *CTInfo;
-
-/*
- * List of character sets that can be used for Compound Text,
- * Includes all that are listed in default_ct_data, but more can be added
- * at runtime through _XlcAddCT.
- */
-static CTInfo ct_list = NULL;
-static CTInfo ct_list_end = NULL;
-
-/*
- * Returns a Compound Text info record for an ESC sequence.
- * The first part of the ESC sequence has already been parsed into 'type'
- * and 'final_byte'. The remainder starts at 'text', at least 'text_len'
- * bytes (only used if type == XctExtSeg).
- */
-static CTInfo
-_XlcGetCTInfo(
- unsigned int type,
- unsigned char final_byte,
- const char *text,
- int text_len)
-{
- CTInfo ct_info;
-
- for (ct_info = ct_list; ct_info; ct_info = ct_info->next)
- if (ct_info->type == type
- && ct_info->final_byte == final_byte
- && (type != XctExtSeg
- || (text_len >= ct_info->ext_segment_len
- && memcmp(text, ct_info->ext_segment,
- ct_info->ext_segment_len) == 0)))
- return ct_info;
-
- return (CTInfo) NULL;
-}
-
-/* Returns the Compound Text info for a given XlcCharSet.
- Returns NULL if none is found. */
-static CTInfo
-_XlcGetCTInfoFromCharSet(
- XlcCharSet charset)
-{
- CTInfo ct_info;
-
- for (ct_info = ct_list; ct_info; ct_info = ct_info->next)
- if (ct_info->charset == charset)
- return ct_info;
-
- return (CTInfo) NULL;
-}
-
-/* Creates a new XlcCharSet, given its name (including side suffix) and
- Compound Text ESC sequence (normally at most 4 bytes), and makes it
- eligible for Compound Text processing. */
-XlcCharSet
-_XlcAddCT(
- const char *name,
- const char *ct_sequence)
-{
- CTInfo ct_info, existing_info;
- XlcCharSet charset;
- const char *ct_ptr;
- int length;
- unsigned int type;
- unsigned char final_byte;
-
- charset = _XlcGetCharSet(name);
- if (charset != NULL) {
- /* Even if the charset already exists, it is OK to register a second
- Compound Text sequence for it. */
- } else {
- /* Attempt to create the charset. */
- charset = _XlcCreateDefaultCharSet(name, ct_sequence);
- if (charset == NULL)
- return (XlcCharSet) NULL;
- _XlcAddCharSet(charset);
- }
-
- /* Allocate a CTinfo record. */
- length = strlen(ct_sequence);
- ct_info = (CTInfo) Xmalloc(sizeof(CTInfoRec) + length+1);
- if (ct_info == NULL)
- return charset;
-
- ct_info->charset = charset;
- ct_info->ct_sequence = strcpy((char *) (ct_info + 1), ct_sequence);
-
- /* Parse the Compound Text sequence. */
- ct_ptr = ct_sequence;
- type = _XlcParseCT(&ct_ptr, &length, &final_byte);
-
- ct_info->type = type;
- ct_info->final_byte = final_byte;
-
- switch (type) {
- case XctGL94:
- case XctGR94:
- case XctGR96:
- case XctGL94MB:
- case XctGR94MB:
- case XctOtherCoding:
- ct_info->ext_segment = NULL;
- ct_info->ext_segment_len = 0;
- break;
- case XctExtSeg: {
- /* By convention, the extended segment name is the encoding_name
- in lowercase. */
- const char *q = charset->encoding_name;
- int n = strlen(q);
- char *p;
-
- /* Ensure ct_info->ext_segment_len <= 0x3fff - 6. */
- if (n > 0x3fff - 6 - 1) {
- Xfree(ct_info);
- return charset;
- }
- p = (char *) Xmalloc(n+1);
- if (p == NULL) {
- Xfree(ct_info);
- return charset;
- }
- ct_info->ext_segment = p;
- ct_info->ext_segment_len = n+1;
- for ( ; n > 0; p++, q++, n--)
- *p = (*q >= 'A' && *q <= 'Z' ? *q - 'A' + 'a' : *q);
- *p = XctSTX;
- break;
- }
- default:
- Xfree(ct_info);
- return (XlcCharSet) NULL;
- }
-
- /* Insert it into the list, if not already present. */
- existing_info =
- _XlcGetCTInfo(type, ct_info->final_byte,
- ct_info->ext_segment, ct_info->ext_segment_len);
- if (existing_info == NULL) {
- /* Insert it at the end. If there are duplicates CTinfo entries
- for the same XlcCharSet, we want the first (standard) one to
- override the second (user defined) one. */
- ct_info->next = NULL;
- if (ct_list_end)
- ct_list_end->next = ct_info;
- else
- ct_list = ct_info;
- ct_list_end = ct_info;
- } else {
- if (existing_info->charset != charset
- /* We have a conflict, with one exception: JISX0208.1983-0 and
- JISX0208.1990-0 are the same for all practical purposes. */
- && !(strncmp(existing_info->charset->name, "JISX0208", 8) == 0
- && strncmp(charset->name, "JISX0208", 8) == 0)) {
- fprintf(stderr,
- "Xlib: charsets %s and %s have the same CT sequence\n",
- charset->name, existing_info->charset->name);
- if (strcmp(charset->ct_sequence, ct_sequence) == 0)
- charset->ct_sequence = "";
- }
- Xfree(ct_info);
- }
-
- return charset;
-}
-
-
-/* ========== Converters String <--> CharSet <--> Compound Text ========== */
-
-/*
- * Structure representing the parse state of a Compound Text string.
- */
-typedef struct _StateRec {
- XlcCharSet charset; /* The charset of the current segment */
- XlcCharSet GL_charset; /* The charset responsible for 0x00..0x7F */
- XlcCharSet GR_charset; /* The charset responsible for 0x80..0xFF */
- XlcCharSet Other_charset; /* != NULL if currently in an other segment */
- int ext_seg_left; /* > 0 if currently in an extended segment */
-} StateRec, *State;
-
-
-/* Subroutine for parsing an ESC sequence. */
-
-typedef enum {
- resOK, /* Charset saved in 'state', sequence skipped */
- resNotInList, /* Charset not found, sequence skipped */
- resNotCTSeq /* EscSeq not recognized, pointers not changed */
-} CheckResult;
-
-static CheckResult
-_XlcCheckCTSequence(
- State state,
- const char **ctext,
- int *ctext_len)
-{
- XlcCharSet charset;
- CTInfo ct_info;
- const char *tmp_ctext = *ctext;
- int tmp_ctext_len = *ctext_len;
- unsigned int type;
- unsigned char final_byte;
- int ext_seg_left = 0;
-
- /* Check for validity. */
- type = _XlcParseCT(&tmp_ctext, &tmp_ctext_len, &final_byte);
-
- switch (type) {
- case XctGL94:
- case XctGR94:
- case XctGR96:
- case XctGL94MB:
- case XctGR94MB:
- case XctOtherCoding:
- *ctext = tmp_ctext;
- *ctext_len = tmp_ctext_len;
- break;
- case XctReturn:
- *ctext = tmp_ctext;
- *ctext_len = tmp_ctext_len;
- state->Other_charset = NULL;
- return resOK;
- case XctExtSeg:
- if (tmp_ctext_len > 2
- && (tmp_ctext[0] & 0x80) && (tmp_ctext[0] & 0x80)) {
- unsigned int msb = tmp_ctext[0] & 0x7f;
- unsigned int lsb = tmp_ctext[1] & 0x7f;
- ext_seg_left = (msb << 7) + lsb;
- if (ext_seg_left <= tmp_ctext_len - 2) {
- *ctext = tmp_ctext + 2;
- *ctext_len = tmp_ctext_len - 2;
- break;
- }
- }
- return resNotCTSeq;
- default:
- return resNotCTSeq;
- }
-
- ct_info = _XlcGetCTInfo(type, final_byte, *ctext, ext_seg_left);
-
- if (ct_info) {
- charset = ct_info->charset;
- state->ext_seg_left = ext_seg_left;
- if (type == XctExtSeg) {
- state->charset = charset;
- /* Skip past the extended segment name and the separator. */
- *ctext += ct_info->ext_segment_len;
- *ctext_len -= ct_info->ext_segment_len;
- state->ext_seg_left -= ct_info->ext_segment_len;
- } else if (type == XctOtherCoding) {
- state->Other_charset = charset;
- } else {
- if (charset->side == XlcGL) {
- state->GL_charset = charset;
- } else if (charset->side == XlcGR) {
- state->GR_charset = charset;
- } else {
- state->GL_charset = charset;
- state->GR_charset = charset;
- }
- }
- return resOK;
- } else {
- state->ext_seg_left = 0;
- if (type == XctExtSeg) {
- /* Skip the entire extended segment. */
- *ctext += ext_seg_left;
- *ctext_len -= ext_seg_left;
- }
- return resNotInList;
- }
-}
-
-static void
-init_state(
- XlcConv conv)
-{
- State state = (State) conv->state;
- static XlcCharSet default_GL_charset = NULL;
- static XlcCharSet default_GR_charset = NULL;
-
- if (default_GL_charset == NULL) {
- default_GL_charset = _XlcGetCharSet("ISO8859-1:GL");
- default_GR_charset = _XlcGetCharSet("ISO8859-1:GR");
- }
-
- /* The initial state is ISO-8859-1 on both sides. */
- state->GL_charset = state->charset = default_GL_charset;
- state->GR_charset = default_GR_charset;
-
- state->Other_charset = NULL;
-
- state->ext_seg_left = 0;
-}
-
-/* from XlcNCompoundText to XlcNCharSet */
-
-static int
-cttocs(
- XlcConv conv,
- XPointer *from,
- int *from_left,
- XPointer *to,
- int *to_left,
- XPointer *args,
- int num_args)
-{
- State state = (State) conv->state;
- XlcCharSet charset = NULL;
- const char *ctptr;
- char *bufptr;
- int ctext_len, buf_len;
- int unconv_num = 0;
-
- ctptr = (const char *) *from;
- bufptr = (char *) *to;
- ctext_len = *from_left;
- buf_len = *to_left;
-
- while (ctext_len > 0 && buf_len > 0) {
- if (state->ext_seg_left == 0) {
- /* Not in the middle of an extended segment; look at next byte. */
- unsigned char ch = *ctptr;
- XlcCharSet ch_charset;
-
- if (ch == XctESC) {
- CheckResult ret =
- _XlcCheckCTSequence(state, &ctptr, &ctext_len);
- if (ret == resOK)
- /* state has been modified. */
- continue;
- if (ret == resNotInList) {
- /* XXX Just continue with previous charset. */
- unconv_num++;
- continue;
- }
- } else if (ch == XctCSI) {
- /* XXX Simply ignore the XctLeftToRight, XctRightToLeft,
- XctDirectionEnd sequences for the moment. */
- unsigned char dummy;
- if (_XlcParseCT(&ctptr, &ctext_len, &dummy)) {
- unconv_num++;
- continue;
- }
- }
-
- /* Find the charset which is responsible for this byte. */
- ch_charset = (state->Other_charset != NULL ? state->Other_charset :
- (ch & 0x80 ? state->GR_charset : state->GL_charset));
-
- /* Set the charset of this run, or continue the current run,
- or stop the current run. */
- if (charset) {
- if (charset != ch_charset)
- break;
- } else {
- state->charset = charset = ch_charset;
- }
-
- /* We don't want to split a character into multiple pieces. */
- if (buf_len < 6) {
- if (charset->char_size > 0) {
- if (buf_len < charset->char_size)
- break;
- } else {
- /* char_size == 0 is tricky. The code here is good only
- for valid UTF-8 input. */
- if (charset->ct_sequence[0] == XctESC
- && charset->ct_sequence[1] == XctOtherCoding
- && charset->ct_sequence[2] == 'G') {
- int char_size = (ch < 0xc0 ? 1 :
- ch < 0xe0 ? 2 :
- ch < 0xf0 ? 3 :
- ch < 0xf8 ? 4 :
- ch < 0xfc ? 5 :
- 6);
- if (buf_len < char_size)
- break;
- }
- }
- }
-
- *bufptr++ = *ctptr++;
- ctext_len--;
- buf_len--;
- } else {
- /* Copy as much as possible from the current extended segment
- to the buffer. */
- int char_size;
-
- /* Set the charset of this run, or continue the current run,
- or stop the current run. */
- if (charset) {
- if (charset != state->charset)
- break;
- } else {
- charset = state->charset;
- }
-
- char_size = charset->char_size;
-
- if (state->ext_seg_left <= buf_len || char_size > 0) {
- int n = (state->ext_seg_left <= buf_len
- ? state->ext_seg_left
- : (buf_len / char_size) * char_size);
- memcpy(bufptr, ctptr, n);
- ctptr += n; ctext_len -= n;
- bufptr += n; buf_len -= n;
- state->ext_seg_left -= n;
- } else {
-#if UTF8_IN_EXTSEQ
- /* char_size == 0 is tricky. The code here is good only
- for valid UTF-8 input. */
- if (strcmp(charset->name, "ISO10646-1") == 0) {
- unsigned char ch = *ctptr;
- int char_size = (ch < 0xc0 ? 1 :
- ch < 0xe0 ? 2 :
- ch < 0xf0 ? 3 :
- ch < 0xf8 ? 4 :
- ch < 0xfc ? 5 :
- 6);
- int i;
- if (buf_len < char_size)
- break;
- /* A small loop is faster than calling memcpy. */
- for (i = char_size; i > 0; i--)
- *bufptr++ = *ctptr++;
- ctext_len -= char_size;
- buf_len -= char_size;
- state->ext_seg_left -= char_size;
- } else
-#endif
- {
- /* Here ctext_len >= state->ext_seg_left > buf_len.
- We may be splitting a character into multiple pieces.
- Oh well. */
- int n = buf_len;
- memcpy(bufptr, ctptr, n);
- ctptr += n; ctext_len -= n;
- bufptr += n; buf_len -= n;
- state->ext_seg_left -= n;
- }
- }
- }
- }
-
- /* 'charset' is the charset for the current run. In some cases,
- 'state->charset' contains the charset for the next run. Therefore,
- return 'charset'.
- 'charset' may still be NULL only if no output was produced. */
- if (num_args > 0)
- *((XlcCharSet *) args[0]) = charset;
-
- *from_left -= ctptr - *((const char **) from);
- *from = (XPointer) ctptr;
-
- *to_left -= bufptr - *((char **) to);
- *to = (XPointer) bufptr;
-
- return unconv_num;
-}
-
-/* from XlcNCharSet to XlcNCompoundText */
-
-static int
-cstoct(
- XlcConv conv,
- XPointer *from,
- int *from_left,
- XPointer *to,
- int *to_left,
- XPointer *args,
- int num_args)
-{
- State state = (State) conv->state;
- XlcSide side;
- unsigned char min_ch = 0, max_ch = 0;
- int length, unconv_num;
- CTInfo ct_info;
- XlcCharSet charset;
- const char *csptr;
- char *ctptr;
- int csstr_len, ct_len;
- char *ext_segment_start;
- int char_size;
-
- /* One argument is required, of type XlcCharSet. */
- if (num_args < 1)
- return -1;
-
- csptr = *((const char **) from);
- ctptr = *((char **) to);
- csstr_len = *from_left;
- ct_len = *to_left;
-
- charset = (XlcCharSet) args[0];
-
- ct_info = _XlcGetCTInfoFromCharSet(charset);
- if (ct_info == NULL)
- return -1;
-
- side = charset->side;
- length = strlen(ct_info->ct_sequence);
-
- ext_segment_start = NULL;
-
- if (ct_info->type == XctOtherCoding) {
- /* Output the Escape sequence for switching to the charset, and
- reserve room now for the XctReturn sequence at the end. */
- if (ct_len < length + 3)
- return -1;
-
- memcpy(ctptr, ct_info->ct_sequence, length);
- ctptr += length;
- ct_len -= length + 3;
- } else
- /* Test whether the charset is already active. */
- if (((side == XlcGR || side == XlcGLGR)
- && charset != state->GR_charset)
- || ((side == XlcGL || side == XlcGLGR)
- && charset != state->GL_charset)) {
-
- /* Output the Escape sequence for switching to the charset. */
- if (ct_info->type == XctExtSeg) {
- if (ct_len < length + 2 + ct_info->ext_segment_len)
- return -1;
-
- memcpy(ctptr, ct_info->ct_sequence, length);
- ctptr += length;
- ct_len -= length;
-
- ctptr += 2;
- ct_len -= 2;
- ext_segment_start = ctptr;
-
- /* The size of an extended segment must fit in 14 bits. */
- if (ct_len > 0x3fff)
- ct_len = 0x3fff;
-
- memcpy(ctptr, ct_info->ext_segment, ct_info->ext_segment_len);
- ctptr += ct_info->ext_segment_len;
- ct_len -= ct_info->ext_segment_len;
- } else {
- if (ct_len < length)
- return -1;
-
- memcpy(ctptr, ct_info->ct_sequence, length);
- ctptr += length;
- ct_len -= length;
- }
- }
-
- /* If the charset has side GL or GR, prepare remapping the characters
- to the correct side. */
- if (charset->set_size) {
- min_ch = 0x20;
- max_ch = 0x7f;
- if (charset->set_size == 94) {
- max_ch--;
- if (charset->char_size > 1 || side == XlcGR)
- min_ch++;
- }
- }
-
- /* Actually copy the contents. */
- unconv_num = 0;
- char_size = charset->char_size;
- if (char_size == 1) {
- while (csstr_len > 0 && ct_len > 0) {
- if (charset->set_size) {
- /* The CompoundText specification says that the only
- control characters allowed are 0x09, 0x0a, 0x1b, 0x9b.
- Therefore here we eliminate other control characters. */
- unsigned char ch = *((unsigned char *) csptr) & 0x7f;
- if (!((ch >= min_ch && ch <= max_ch)
- || (side == XlcGL
- && (ch == 0x00 || ch == 0x09 || ch == 0x0a))
- || ((side == XlcGL || side == XlcGR)
- && (ch == 0x1b)))) {
- csptr++;
- csstr_len--;
- unconv_num++;
- continue;
- }
- }
-
- if (side == XlcGL)
- *ctptr++ = *csptr++ & 0x7f;
- else if (side == XlcGR)
- *ctptr++ = *csptr++ | 0x80;
- else
- *ctptr++ = *csptr++;
- csstr_len--;
- ct_len--;
- }
- } else if (char_size > 1) {
- while (csstr_len >= char_size && ct_len >= char_size) {
- if (side == XlcGL) {
- int i;
- for (i = char_size; i > 0; i--)
- *ctptr++ = *csptr++ & 0x7f;
- } else if (side == XlcGR) {
- int i;
- for (i = char_size; i > 0; i--)
- *ctptr++ = *csptr++ | 0x80;
- } else {
- int i;
- for (i = char_size; i > 0; i--)
- *ctptr++ = *csptr++;
- }
- csstr_len -= char_size;
- ct_len -= char_size;
- }
- } else {
- /* char_size = 0. The code here is good only for valid UTF-8 input. */
- if ((charset->ct_sequence[0] == XctESC
- && charset->ct_sequence[1] == XctOtherCoding
- && charset->ct_sequence[2] == 'G')
-#if UTF8_IN_EXTSEQ
- || strcmp(charset->name, "ISO10646-1") == 0
-#endif
- ) {
- while (csstr_len > 0 && ct_len > 0) {
- unsigned char ch = * (unsigned char *) csptr;
- int char_size = (ch < 0xc0 ? 1 :
- ch < 0xe0 ? 2 :
- ch < 0xf0 ? 3 :
- ch < 0xf8 ? 4 :
- ch < 0xfc ? 5 :
- 6);
- int i;
- if (!(csstr_len >= char_size && ct_len >= char_size))
- break;
- for (i = char_size; i > 0; i--)
- *ctptr++ = *csptr++;
- csstr_len -= char_size;
- ct_len -= char_size;
- }
- } else {
- while (csstr_len > 0 && ct_len > 0) {
- *ctptr++ = *csptr++;
- csstr_len--;
- ct_len--;
- }
- }
- }
-
- if (ct_info->type == XctOtherCoding) {
- /* Terminate with an XctReturn sequence. */
- ctptr[0] = XctESC;
- ctptr[1] = XctOtherCoding;
- ctptr[2] = '@';
- ctptr += 3;
- } else if (ext_segment_start != NULL) {
- /* Backpatch the extended segment's length. */
- int ext_segment_length = ctptr - ext_segment_start;
- *(ext_segment_start - 2) = (ext_segment_length >> 7) | 0x80;
- *(ext_segment_start - 1) = (ext_segment_length & 0x7f) | 0x80;
- } else {
- if (side == XlcGR || side == XlcGLGR)
- state->GR_charset = charset;
- if (side == XlcGL || side == XlcGLGR)
- state->GL_charset = charset;
- }
-
- *from_left -= csptr - *((const char **) from);
- *from = (XPointer) csptr;
-
- *to_left -= ctptr - *((char **) to);
- *to = (XPointer) ctptr;
-
- return 0;
-}
-
-/* from XlcNString to XlcNCharSet */
-
-static int
-strtocs(
- XlcConv conv,
- XPointer *from,
- int *from_left,
- XPointer *to,
- int *to_left,
- XPointer *args,
- int num_args)
-{
- State state = (State) conv->state;
- const char *src;
- char *dst;
- unsigned char side;
- int length;
-
- src = (const char *) *from;
- dst = (char *) *to;
-
- length = min(*from_left, *to_left);
- side = *((unsigned char *) src) & 0x80;
-
- while (side == (*((unsigned char *) src) & 0x80) && length-- > 0)
- *dst++ = *src++;
-
- *from_left -= src - (const char *) *from;
- *from = (XPointer) src;
- *to_left -= dst - (char *) *to;
- *to = (XPointer) dst;
-
- if (num_args > 0)
- *((XlcCharSet *)args[0]) = (side ? state->GR_charset : state->GL_charset);
-
- return 0;
-}
-
-/* from XlcNCharSet to XlcNString */
-
-static int
-cstostr(
- XlcConv conv,
- XPointer *from,
- int *from_left,
- XPointer *to,
- int *to_left,
- XPointer *args,
- int num_args)
-{
- State state = (State) conv->state;
- const char *csptr;
- char *string_ptr;
- int csstr_len, str_len;
- unsigned char ch;
- int unconv_num = 0;
-
- /* This converter can only convert from ISO8859-1:GL and ISO8859-1:GR. */
- if (num_args < 1
- || !((XlcCharSet) args[0] == state->GL_charset
- || (XlcCharSet) args[0] == state->GR_charset))
- return -1;
-
- csptr = *((const char **) from);
- string_ptr = *((char **) to);
- csstr_len = *from_left;
- str_len = *to_left;
-
- while (csstr_len > 0 && str_len > 0) {
- ch = *((unsigned char *) csptr++);
- csstr_len--;
- /* Citing ICCCM: "STRING as a type specifies the ISO Latin-1 character
- set plus the control characters TAB and NEWLINE." */
- if ((ch < 0x20 && ch != 0x00 && ch != 0x09 && ch != 0x0a)
- || (ch >= 0x7f && ch < 0xa0)) {
- unconv_num++;
- continue;
- }
- *((unsigned char *) string_ptr++) = ch;
- str_len--;
- }
-
- *from_left -= csptr - *((const char **) from);
- *from = (XPointer) csptr;
-
- *to_left -= string_ptr - *((char **) to);
- *to = (XPointer) string_ptr;
-
- return unconv_num;
-}
-
-
-static XlcConv
-create_conv(
- XlcConvMethods methods)
-{
- XlcConv conv;
-
- conv = (XlcConv) Xmalloc(sizeof(XlcConvRec) + sizeof(StateRec));
- if (conv == NULL)
- return (XlcConv) NULL;
-
- conv->state = (XPointer) &conv[1];
-
- conv->methods = methods;
-
- init_state(conv);
-
- return conv;
-}
-
-static void
-close_converter(
- XlcConv conv)
-{
- /* conv->state is allocated together with conv, free both at once. */
- Xfree((char *) conv);
-}
-
-
-static XlcConvMethodsRec cttocs_methods = {
- close_converter,
- cttocs,
- init_state
-};
-
-static XlcConv
-open_cttocs(
- XLCd from_lcd,
- const char *from_type,
- XLCd to_lcd,
- const char *to_type)
-{
- return create_conv(&cttocs_methods);
-}
-
-
-static XlcConvMethodsRec cstoct_methods = {
- close_converter,
- cstoct,
- init_state
-};
-
-static XlcConv
-open_cstoct(
- XLCd from_lcd,
- const char *from_type,
- XLCd to_lcd,
- const char *to_type)
-{
- return create_conv(&cstoct_methods);
-}
-
-
-static XlcConvMethodsRec strtocs_methods = {
- close_converter,
- strtocs,
- init_state
-};
-
-static XlcConv
-open_strtocs(
- XLCd from_lcd,
- const char *from_type,
- XLCd to_lcd,
- const char *to_type)
-{
- return create_conv(&strtocs_methods);
-}
-
-
-static XlcConvMethodsRec cstostr_methods = {
- close_converter,
- cstostr,
- init_state
-};
-
-static XlcConv
-open_cstostr(
- XLCd from_lcd,
- const char *from_type,
- XLCd to_lcd,
- const char *to_type)
-{
- return create_conv(&cstostr_methods);
-}
-
-
-/* =========================== Initialization =========================== */
-
-Bool
-_XlcInitCTInfo(void)
-{
- if (ct_list == NULL) {
- const CTDataRec *ct_data;
- int num;
- XlcCharSet charset;
-
- /* Initialize ct_list. */
-
- num = sizeof(default_ct_data) / sizeof(CTDataRec);
- for (ct_data = default_ct_data; num > 0; ct_data++, num--) {
- charset = _XlcAddCT(ct_data->name, ct_data->ct_sequence);
- if (charset == NULL)
- continue;
- if (strncmp(charset->ct_sequence, "\x1b\x25\x2f", 3) != 0)
- charset->source = CSsrcStd;
- else
- charset->source = CSsrcXLC;
- }
-
- /* Register CompoundText and CharSet converters. */
-
- _XlcSetConverter((XLCd) NULL, XlcNCompoundText,
- (XLCd) NULL, XlcNCharSet,
- open_cttocs);
- _XlcSetConverter((XLCd) NULL, XlcNString,
- (XLCd) NULL, XlcNCharSet,
- open_strtocs);
-
- _XlcSetConverter((XLCd) NULL, XlcNCharSet,
- (XLCd) NULL, XlcNCompoundText,
- open_cstoct);
- _XlcSetConverter((XLCd) NULL, XlcNCharSet,
- (XLCd) NULL, XlcNString,
- open_cstostr);
- }
-
- return True;
-}
+/*
+ * Copyright 1992, 1993 by TOSHIBA Corp.
+ *
+ * Permission to use, copy, modify, and distribute this software and its
+ * documentation for any purpose and without fee is hereby granted, provided
+ * that the above copyright notice appear in all copies and that both that
+ * copyright notice and this permission notice appear in supporting
+ * documentation, and that the name of TOSHIBA not be used in advertising
+ * or publicity pertaining to distribution of the software without specific,
+ * written prior permission. TOSHIBA make no representations about the
+ * suitability of this software for any purpose. It is provided "as is"
+ * without express or implied warranty.
+ *
+ * TOSHIBA DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
+ * ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
+ * TOSHIBA BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
+ * ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
+ * WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
+ * ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
+ * SOFTWARE.
+ *
+ * Author: Katsuhisa Yano TOSHIBA Corp.
+ * mopi@osa.ilab.toshiba.co.jp
+ */
+/*
+ * Copyright 1995 by FUJITSU LIMITED
+ * This is source code modified by FUJITSU LIMITED under the Joint
+ * Development Agreement for the CDE/Motif PST.
+ *
+ * Modifier: Takanori Tateno FUJITSU LIMITED
+ *
+ */
+/*
+ * 2000
+ * Modifier: Ivan Pascal The XFree86 Project
+ * Modifier: Bruno Haible The XFree86 Project
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+#include "XlcPubI.h"
+#include <X11/Xos.h>
+#include <stdio.h>
+
+
+/* ====================== Built-in Character Sets ====================== */
+
+/*
+ * Static representation of a character set that can be used in Compound Text.
+ */
+typedef struct _CTDataRec {
+ const char name[19];
+ const char ct_sequence[5]; /* Compound Text encoding, ESC sequence */
+} CTDataRec, *CTData;
+
+static const CTDataRec default_ct_data[] =
+{
+ /* */
+ /* X11 registry name MIME name ISO-IR ESC sequence */
+ /* */
+
+ /* Registered character sets with one byte per character */
+ { "ISO8859-1:GL", /* US-ASCII 6 */ "\033(B" },
+ { "ISO8859-1:GR", /* ISO-8859-1 100 */ "\033-A" },
+ { "ISO8859-2:GR", /* ISO-8859-2 101 */ "\033-B" },
+ { "ISO8859-3:GR", /* ISO-8859-3 109 */ "\033-C" },
+ { "ISO8859-4:GR", /* ISO-8859-4 110 */ "\033-D" },
+ { "ISO8859-5:GR", /* ISO-8859-5 144 */ "\033-L" },
+ { "ISO8859-6:GR", /* ISO-8859-6 127 */ "\033-G" },
+ { "ISO8859-7:GR", /* ISO-8859-7 126 */ "\033-F" },
+ { "ISO8859-8:GR", /* ISO-8859-8 138 */ "\033-H" },
+ { "ISO8859-9:GR", /* ISO-8859-9 148 */ "\033-M" },
+ { "ISO8859-10:GR", /* ISO-8859-10 157 */ "\033-V" },
+ { "ISO8859-11:GR", /* ISO-8859-11 166 */ "\033-T" },
+ { "ISO8859-13:GR", /* ISO-8859-13 179 */ "\033-Y" },
+ { "ISO8859-14:GR", /* ISO-8859-14 199 */ "\033-_" },
+ { "ISO8859-15:GR", /* ISO-8859-15 203 */ "\033-b" },
+ { "ISO8859-16:GR", /* ISO-8859-16 226 */ "\033-f" },
+ { "JISX0201.1976-0:GL", /* ISO-646-JP 14 */ "\033(J" },
+ { "JISX0201.1976-0:GR", "\033)I" },
+#if 0
+ { "TIS620-0:GR", /* TIS-620 166 */ "\033-T" },
+#endif
+
+ /* Registered character sets with two byte per character */
+ { "GB2312.1980-0:GL", /* GB_2312-80 58 */ "\033$(A" },
+ { "GB2312.1980-0:GR", /* GB_2312-80 58 */ "\033$)A" },
+ { "JISX0208.1983-0:GL", /* JIS_X0208-1983 87 */ "\033$(B" },
+ { "JISX0208.1983-0:GR", /* JIS_X0208-1983 87 */ "\033$)B" },
+ { "JISX0208.1990-0:GL", /* JIS_X0208-1990 168 */ "\033$(B" },
+ { "JISX0208.1990-0:GR", /* JIS_X0208-1990 168 */ "\033$)B" },
+ { "JISX0212.1990-0:GL", /* JIS_X0212-1990 159 */ "\033$(D" },
+ { "JISX0212.1990-0:GR", /* JIS_X0212-1990 159 */ "\033$)D" },
+ { "KSC5601.1987-0:GL", /* KS_C_5601-1987 149 */ "\033$(C" },
+ { "KSC5601.1987-0:GR", /* KS_C_5601-1987 149 */ "\033$)C" },
+ { "CNS11643.1986-1:GL", /* CNS 11643-1992 pl.1 171 */ "\033$(G" },
+ { "CNS11643.1986-1:GR", /* CNS 11643-1992 pl.1 171 */ "\033$)G" },
+ { "CNS11643.1986-2:GL", /* CNS 11643-1992 pl.2 172 */ "\033$(H" },
+ { "CNS11643.1986-2:GR", /* CNS 11643-1992 pl.2 172 */ "\033$)H" },
+ { "CNS11643.1992-3:GL", /* CNS 11643-1992 pl.3 183 */ "\033$(I" },
+ { "CNS11643.1992-3:GR", /* CNS 11643-1992 pl.3 183 */ "\033$)I" },
+ { "CNS11643.1992-4:GL", /* CNS 11643-1992 pl.4 184 */ "\033$(J" },
+ { "CNS11643.1992-4:GR", /* CNS 11643-1992 pl.4 184 */ "\033$)J" },
+ { "CNS11643.1992-5:GL", /* CNS 11643-1992 pl.5 185 */ "\033$(K" },
+ { "CNS11643.1992-5:GR", /* CNS 11643-1992 pl.5 185 */ "\033$)K" },
+ { "CNS11643.1992-6:GL", /* CNS 11643-1992 pl.6 186 */ "\033$(L" },
+ { "CNS11643.1992-6:GR", /* CNS 11643-1992 pl.6 186 */ "\033$)L" },
+ { "CNS11643.1992-7:GL", /* CNS 11643-1992 pl.7 187 */ "\033$(M" },
+ { "CNS11643.1992-7:GR", /* CNS 11643-1992 pl.7 187 */ "\033$)M" },
+
+ /* Registered encodings with a varying number of bytes per character */
+ { "ISO10646-1", /* UTF-8 196 */ "\033%G" },
+
+ /* Encodings without ISO-IR assigned escape sequence must be
+ defined in XLC_LOCALE files, using "\033%/1" or "\033%/2". */
+
+ /* Backward compatibility with XFree86 3.x */
+#if 1
+ { "ISO8859-14:GR", "\033%/1" },
+ { "ISO8859-15:GR", "\033%/1" },
+#endif
+ /* For use by utf8 -> ctext */
+ { "BIG5-0:GLGR", "\033%/2"},
+ { "BIG5HKSCS-0:GLGR", "\033%/2"},
+ { "GBK-0:GLGR", "\033%/2"},
+ /* used by Emacs, but not backed by ISO-IR */
+ { "BIG5-E0:GL", "\033$(0" },
+ { "BIG5-E0:GR", "\033$)0" },
+ { "BIG5-E1:GL", "\033$(1" },
+ { "BIG5-E1:GR", "\033$)1" },
+
+};
+
+/* We represent UTF-8 as an XlcGLGR charset, not in extended segments. */
+#define UTF8_IN_EXTSEQ 0
+
+/* ======================= Parsing ESC Sequences ======================= */
+
+#define XctC0 0x0000
+#define XctHT 0x0009
+#define XctNL 0x000a
+#define XctESC 0x001b
+#define XctGL 0x0020
+#define XctC1 0x0080
+#define XctCSI 0x009b
+#define XctGR 0x00a0
+#define XctSTX 0x0002
+
+#define XctCntrlFunc 0x0023
+#define XctMB 0x0024
+#define XctOtherCoding 0x0025
+#define XctGL94 0x0028
+#define XctGR94 0x0029
+#define XctGR96 0x002d
+#define XctNonStandard 0x002f
+#define XctIgnoreExt 0x0030
+#define XctNotIgnoreExt 0x0031
+#define XctLeftToRight 0x0031
+#define XctRightToLeft 0x0032
+#define XctDirection 0x005d
+#define XctDirectionEnd 0x005d
+
+#define XctGL94MB 0x2428
+#define XctGR94MB 0x2429
+#define XctExtSeg 0x252f
+#define XctReturn 0x2540
+
+/*
+ * Parses the header of a Compound Text segment, i.e. the charset designator.
+ * The string starts at *text and has *length bytes.
+ * Return value is one of:
+ * 0 (no valid charset designator),
+ * XctGL94, XctGR94, XctGR96, XctGL94MB, XctGR94MB,
+ * XctLeftToRight, XctRightToLeft, XctDirectionEnd,
+ * XctExtSeg, XctOtherCoding, XctReturn, XctIgnoreExt, XctNotIgnoreExt.
+ * If the return value is not 0, *text is incremented and *length decremented,
+ * to point past the charset designator. If the return value is one of
+ * XctGL94, XctGR94, XctGR96, XctGL94MB, XctGR94MB,
+ * XctExtSeg, XctOtherCoding, XctIgnoreExt, XctNotIgnoreExt,
+ * *final_byte is set to the "final byte" of the charset designator.
+ */
+static unsigned int
+_XlcParseCT(
+ const char **text,
+ int *length,
+ unsigned char *final_byte)
+{
+ unsigned int ret = 0;
+ unsigned char ch;
+ const unsigned char *str = (const unsigned char *) *text;
+
+ *final_byte = 0;
+
+ if (*length < 1)
+ return 0;
+ switch (ch = *str++) {
+ case XctESC:
+ if (*length < 2)
+ return 0;
+ switch (ch = *str++) {
+ case XctOtherCoding: /* % */
+ if (*length < 3)
+ return 0;
+ ch = *str++;
+ if (ch == XctNonStandard) { /* / */
+ if (*length < 4)
+ return 0;
+ ret = XctExtSeg;
+ ch = *str++;
+ } else if (ch == '@') {
+ ret = XctReturn;
+ } else {
+ ret = XctOtherCoding;
+ }
+ *final_byte = ch;
+ break;
+
+ case XctCntrlFunc: /* # */
+ if (*length < 4)
+ return 0;
+ *final_byte = *str++;
+ switch (*str++) {
+ case XctIgnoreExt: /* 0 */
+ ret = XctIgnoreExt;
+ break;
+ case XctNotIgnoreExt: /* 1 */
+ ret = XctNotIgnoreExt;
+ break;
+ default:
+ ret = 0;
+ break;
+ }
+ break;
+
+ case XctMB: /* $ */
+ if (*length < 4)
+ return 0;
+ ch = *str++;
+ switch (ch) {
+ case XctGL94: /* ( */
+ ret = XctGL94MB;
+ break;
+ case XctGR94: /* ) */
+ ret = XctGR94MB;
+ break;
+ default:
+ ret = 0;
+ break;
+ }
+ *final_byte = *str++;
+ break;
+
+ case XctGL94: /* ( */
+ if (*length < 3)
+ return 0;
+ ret = XctGL94;
+ *final_byte = *str++;
+ break;
+ case XctGR94: /* ) */
+ if (*length < 3)
+ return 0;
+ ret = XctGR94;
+ *final_byte = *str++;
+ break;
+ case XctGR96: /* - */
+ if (*length < 3)
+ return 0;
+ ret = XctGR96;
+ *final_byte = *str++;
+ break;
+ }
+ break;
+ case XctCSI:
+ /* direction */
+ if (*length < 2)
+ return 0;
+ switch (*str++) {
+ case XctLeftToRight:
+ if (*length < 3)
+ return 0;
+ if (*str++ == XctDirection)
+ ret = XctLeftToRight;
+ break;
+ case XctRightToLeft:
+ if (*length < 3)
+ return 0;
+ if (*str++ == XctDirection)
+ ret = XctRightToLeft;
+ break;
+ case XctDirectionEnd:
+ ret = XctDirectionEnd;
+ break;
+ }
+ break;
+ }
+
+ if (ret) {
+ *length -= (const char *) str - *text;
+ *text = (const char *) str;
+ }
+ return ret;
+}
+
+/*
+ * Fills into a freshly created XlcCharSet the fields that can be inferred
+ * from the ESC sequence. These are side, char_size, set_size.
+ * Returns True if the charset can be used with Compound Text.
+ *
+ * Used by _XlcCreateDefaultCharSet.
+ */
+Bool
+_XlcParseCharSet(
+ XlcCharSet charset)
+{
+ unsigned int type;
+ unsigned char final_byte;
+ const char *ptr = charset->ct_sequence;
+ int length;
+ int char_size;
+
+ if (*ptr == '\0')
+ return False;
+
+ length = strlen(ptr);
+
+ type = _XlcParseCT(&ptr, &length, &final_byte);
+
+ /* Check for validity and determine char_size.
+ char_size = 0 means varying number of bytes per character. */
+ switch (type) {
+ case XctGL94:
+ case XctGR94:
+ case XctGR96:
+ char_size = 1;
+ break;
+ case XctGL94MB:
+ case XctGR94MB:
+ char_size = (final_byte < 0x60 ? 2 : final_byte < 0x70 ? 3 : 4);
+ break;
+ case XctExtSeg:
+ char_size = final_byte - '0';
+ if (!(char_size >= 0 && char_size <= 4))
+ return False;
+ break;
+ case XctOtherCoding:
+ char_size = 0;
+ break;
+ default:
+ return False;
+ }
+
+ charset->char_size = char_size;
+
+ /* Fill in other values. */
+ switch (type) {
+ case XctGL94:
+ case XctGL94MB:
+ charset->side = XlcGL;
+ charset->set_size = 94;
+ break;
+ case XctGR94:
+ case XctGR94MB:
+ charset->side = XlcGR;
+ charset->set_size = 94;
+ break;
+ case XctGR96:
+ charset->side = XlcGR;
+ charset->set_size = 96;
+ break;
+ case XctExtSeg:
+ case XctOtherCoding:
+ charset->side = XlcGLGR;
+ charset->set_size = 0;
+ break;
+ }
+ return True;
+}
+
+
+/* =============== Management of the List of Character Sets =============== */
+
+/*
+ * Representation of a character set that can be used for Compound Text,
+ * at run time.
+ * Note: This information is not contained in the XlcCharSet, because
+ * multiple ESC sequences may be used for the same XlcCharSet.
+ */
+typedef struct _CTInfoRec {
+ XlcCharSet charset;
+ const char *ct_sequence; /* Compound Text ESC sequence */
+ unsigned int type;
+ unsigned char final_byte;
+ /* If type == XctExtSeg: */
+ const char *ext_segment; /* extended segment name, then '\002' */
+ int ext_segment_len; /* length of above, including final '\002' */
+
+ struct _CTInfoRec *next;
+} CTInfoRec, *CTInfo;
+
+/*
+ * List of character sets that can be used for Compound Text,
+ * Includes all that are listed in default_ct_data, but more can be added
+ * at runtime through _XlcAddCT.
+ */
+static CTInfo ct_list = NULL;
+static CTInfo ct_list_end = NULL;
+
+/*
+ * Returns a Compound Text info record for an ESC sequence.
+ * The first part of the ESC sequence has already been parsed into 'type'
+ * and 'final_byte'. The remainder starts at 'text', at least 'text_len'
+ * bytes (only used if type == XctExtSeg).
+ */
+static CTInfo
+_XlcGetCTInfo(
+ unsigned int type,
+ unsigned char final_byte,
+ const char *text,
+ int text_len)
+{
+ CTInfo ct_info;
+
+ for (ct_info = ct_list; ct_info; ct_info = ct_info->next)
+ if (ct_info->type == type
+ && ct_info->final_byte == final_byte
+ && (type != XctExtSeg
+ || (text_len >= ct_info->ext_segment_len
+ && memcmp(text, ct_info->ext_segment,
+ ct_info->ext_segment_len) == 0)))
+ return ct_info;
+
+ return (CTInfo) NULL;
+}
+
+/* Returns the Compound Text info for a given XlcCharSet.
+ Returns NULL if none is found. */
+static CTInfo
+_XlcGetCTInfoFromCharSet(
+ XlcCharSet charset)
+{
+ CTInfo ct_info;
+
+ for (ct_info = ct_list; ct_info; ct_info = ct_info->next)
+ if (ct_info->charset == charset)
+ return ct_info;
+
+ return (CTInfo) NULL;
+}
+
+/* Creates a new XlcCharSet, given its name (including side suffix) and
+ Compound Text ESC sequence (normally at most 4 bytes), and makes it
+ eligible for Compound Text processing. */
+XlcCharSet
+_XlcAddCT(
+ const char *name,
+ const char *ct_sequence)
+{
+ CTInfo ct_info, existing_info;
+ XlcCharSet charset;
+ const char *ct_ptr;
+ int length;
+ unsigned int type;
+ unsigned char final_byte;
+
+ charset = _XlcGetCharSet(name);
+ if (charset != NULL) {
+ /* Even if the charset already exists, it is OK to register a second
+ Compound Text sequence for it. */
+ } else {
+ /* Attempt to create the charset. */
+ charset = _XlcCreateDefaultCharSet(name, ct_sequence);
+ if (charset == NULL)
+ return (XlcCharSet) NULL;
+ _XlcAddCharSet(charset);
+ }
+
+ /* Allocate a CTinfo record. */
+ length = strlen(ct_sequence);
+ ct_info = (CTInfo) Xmalloc(sizeof(CTInfoRec) + length+1);
+ if (ct_info == NULL)
+ return charset;
+
+ ct_info->charset = charset;
+ ct_info->ct_sequence = strcpy((char *) (ct_info + 1), ct_sequence);
+
+ /* Parse the Compound Text sequence. */
+ ct_ptr = ct_sequence;
+ type = _XlcParseCT(&ct_ptr, &length, &final_byte);
+
+ ct_info->type = type;
+ ct_info->final_byte = final_byte;
+
+ switch (type) {
+ case XctGL94:
+ case XctGR94:
+ case XctGR96:
+ case XctGL94MB:
+ case XctGR94MB:
+ case XctOtherCoding:
+ ct_info->ext_segment = NULL;
+ ct_info->ext_segment_len = 0;
+ break;
+ case XctExtSeg: {
+ /* By convention, the extended segment name is the encoding_name
+ in lowercase. */
+ const char *q = charset->encoding_name;
+ int n = strlen(q);
+ char *p;
+
+ /* Ensure ct_info->ext_segment_len <= 0x3fff - 6. */
+ if (n > 0x3fff - 6 - 1) {
+ Xfree(ct_info);
+ return charset;
+ }
+ p = (char *) Xmalloc(n+1);
+ if (p == NULL) {
+ Xfree(ct_info);
+ return charset;
+ }
+ ct_info->ext_segment = p;
+ ct_info->ext_segment_len = n+1;
+ for ( ; n > 0; p++, q++, n--)
+ *p = (*q >= 'A' && *q <= 'Z' ? *q - 'A' + 'a' : *q);
+ *p = XctSTX;
+ break;
+ }
+ default:
+ Xfree(ct_info);
+ return (XlcCharSet) NULL;
+ }
+
+ /* Insert it into the list, if not already present. */
+ existing_info =
+ _XlcGetCTInfo(type, ct_info->final_byte,
+ ct_info->ext_segment, ct_info->ext_segment_len);
+ if (existing_info == NULL) {
+ /* Insert it at the end. If there are duplicates CTinfo entries
+ for the same XlcCharSet, we want the first (standard) one to
+ override the second (user defined) one. */
+ ct_info->next = NULL;
+ if (ct_list_end)
+ ct_list_end->next = ct_info;
+ else
+ ct_list = ct_info;
+ ct_list_end = ct_info;
+ } else {
+ if (existing_info->charset != charset
+ /* We have a conflict, with one exception: JISX0208.1983-0 and
+ JISX0208.1990-0 are the same for all practical purposes. */
+ && !(strncmp(existing_info->charset->name, "JISX0208", 8) == 0
+ && strncmp(charset->name, "JISX0208", 8) == 0)) {
+ fprintf(stderr,
+ "Xlib: charsets %s and %s have the same CT sequence\n",
+ charset->name, existing_info->charset->name);
+ if (strcmp(charset->ct_sequence, ct_sequence) == 0)
+ charset->ct_sequence = "";
+ }
+ Xfree(ct_info);
+ }
+
+ return charset;
+}
+
+
+/* ========== Converters String <--> CharSet <--> Compound Text ========== */
+
+/*
+ * Structure representing the parse state of a Compound Text string.
+ */
+typedef struct _StateRec {
+ XlcCharSet charset; /* The charset of the current segment */
+ XlcCharSet GL_charset; /* The charset responsible for 0x00..0x7F */
+ XlcCharSet GR_charset; /* The charset responsible for 0x80..0xFF */
+ XlcCharSet Other_charset; /* != NULL if currently in an other segment */
+ int ext_seg_left; /* > 0 if currently in an extended segment */
+} StateRec, *State;
+
+
+/* Subroutine for parsing an ESC sequence. */
+
+typedef enum {
+ resOK, /* Charset saved in 'state', sequence skipped */
+ resNotInList, /* Charset not found, sequence skipped */
+ resNotCTSeq /* EscSeq not recognized, pointers not changed */
+} CheckResult;
+
+static CheckResult
+_XlcCheckCTSequence(
+ State state,
+ const char **ctext,
+ int *ctext_len)
+{
+ XlcCharSet charset;
+ CTInfo ct_info;
+ const char *tmp_ctext = *ctext;
+ int tmp_ctext_len = *ctext_len;
+ unsigned int type;
+ unsigned char final_byte;
+ int ext_seg_left = 0;
+
+ /* Check for validity. */
+ type = _XlcParseCT(&tmp_ctext, &tmp_ctext_len, &final_byte);
+
+ switch (type) {
+ case XctGL94:
+ case XctGR94:
+ case XctGR96:
+ case XctGL94MB:
+ case XctGR94MB:
+ case XctOtherCoding:
+ *ctext = tmp_ctext;
+ *ctext_len = tmp_ctext_len;
+ break;
+ case XctReturn:
+ *ctext = tmp_ctext;
+ *ctext_len = tmp_ctext_len;
+ state->Other_charset = NULL;
+ return resOK;
+ case XctExtSeg:
+ if (tmp_ctext_len > 2
+ && (tmp_ctext[0] & 0x80) && (tmp_ctext[0] & 0x80)) {
+ unsigned int msb = tmp_ctext[0] & 0x7f;
+ unsigned int lsb = tmp_ctext[1] & 0x7f;
+ ext_seg_left = (msb << 7) + lsb;
+ if (ext_seg_left <= tmp_ctext_len - 2) {
+ *ctext = tmp_ctext + 2;
+ *ctext_len = tmp_ctext_len - 2;
+ break;
+ }
+ }
+ return resNotCTSeq;
+ default:
+ return resNotCTSeq;
+ }
+
+ ct_info = _XlcGetCTInfo(type, final_byte, *ctext, ext_seg_left);
+
+ if (ct_info) {
+ charset = ct_info->charset;
+ state->ext_seg_left = ext_seg_left;
+ if (type == XctExtSeg) {
+ state->charset = charset;
+ /* Skip past the extended segment name and the separator. */
+ *ctext += ct_info->ext_segment_len;
+ *ctext_len -= ct_info->ext_segment_len;
+ state->ext_seg_left -= ct_info->ext_segment_len;
+ } else if (type == XctOtherCoding) {
+ state->Other_charset = charset;
+ } else {
+ if (charset->side == XlcGL) {
+ state->GL_charset = charset;
+ } else if (charset->side == XlcGR) {
+ state->GR_charset = charset;
+ } else {
+ state->GL_charset = charset;
+ state->GR_charset = charset;
+ }
+ }
+ return resOK;
+ } else {
+ state->ext_seg_left = 0;
+ if (type == XctExtSeg) {
+ /* Skip the entire extended segment. */
+ *ctext += ext_seg_left;
+ *ctext_len -= ext_seg_left;
+ }
+ return resNotInList;
+ }
+}
+
+static void
+init_state(
+ XlcConv conv)
+{
+ State state = (State) conv->state;
+ static XlcCharSet default_GL_charset = NULL;
+ static XlcCharSet default_GR_charset = NULL;
+
+ if (default_GL_charset == NULL) {
+ default_GL_charset = _XlcGetCharSet("ISO8859-1:GL");
+ default_GR_charset = _XlcGetCharSet("ISO8859-1:GR");
+ }
+
+ /* The initial state is ISO-8859-1 on both sides. */
+ state->GL_charset = state->charset = default_GL_charset;
+ state->GR_charset = default_GR_charset;
+
+ state->Other_charset = NULL;
+
+ state->ext_seg_left = 0;
+}
+
+/* from XlcNCompoundText to XlcNCharSet */
+
+static int
+cttocs(
+ XlcConv conv,
+ XPointer *from,
+ int *from_left,
+ XPointer *to,
+ int *to_left,
+ XPointer *args,
+ int num_args)
+{
+ State state = (State) conv->state;
+ XlcCharSet charset = NULL;
+ const char *ctptr;
+ char *bufptr;
+ int ctext_len, buf_len;
+ int unconv_num = 0;
+
+ ctptr = (const char *) *from;
+ bufptr = (char *) *to;
+ ctext_len = *from_left;
+ buf_len = *to_left;
+
+ while (ctext_len > 0 && buf_len > 0) {
+ if (state->ext_seg_left == 0) {
+ /* Not in the middle of an extended segment; look at next byte. */
+ unsigned char ch = *ctptr;
+ XlcCharSet ch_charset;
+
+ if (ch == XctESC) {
+ CheckResult ret =
+ _XlcCheckCTSequence(state, &ctptr, &ctext_len);
+ if (ret == resOK)
+ /* state has been modified. */
+ continue;
+ if (ret == resNotInList) {
+ /* XXX Just continue with previous charset. */
+ unconv_num++;
+ continue;
+ }
+ } else if (ch == XctCSI) {
+ /* XXX Simply ignore the XctLeftToRight, XctRightToLeft,
+ XctDirectionEnd sequences for the moment. */
+ unsigned char dummy;
+ if (_XlcParseCT(&ctptr, &ctext_len, &dummy)) {
+ unconv_num++;
+ continue;
+ }
+ }
+
+ /* Find the charset which is responsible for this byte. */
+ ch_charset = (state->Other_charset != NULL ? state->Other_charset :
+ (ch & 0x80 ? state->GR_charset : state->GL_charset));
+
+ /* Set the charset of this run, or continue the current run,
+ or stop the current run. */
+ if (charset) {
+ if (charset != ch_charset)
+ break;
+ } else {
+ state->charset = charset = ch_charset;
+ }
+
+ /* We don't want to split a character into multiple pieces. */
+ if (buf_len < 6) {
+ if (charset->char_size > 0) {
+ if (buf_len < charset->char_size)
+ break;
+ } else {
+ /* char_size == 0 is tricky. The code here is good only
+ for valid UTF-8 input. */
+ if (charset->ct_sequence[0] == XctESC
+ && charset->ct_sequence[1] == XctOtherCoding
+ && charset->ct_sequence[2] == 'G') {
+ int char_size = (ch < 0xc0 ? 1 :
+ ch < 0xe0 ? 2 :
+ ch < 0xf0 ? 3 :
+ ch < 0xf8 ? 4 :
+ ch < 0xfc ? 5 :
+ 6);
+ if (buf_len < char_size)
+ break;
+ }
+ }
+ }
+
+ *bufptr++ = *ctptr++;
+ ctext_len--;
+ buf_len--;
+ } else {
+ /* Copy as much as possible from the current extended segment
+ to the buffer. */
+ int char_size;
+
+ /* Set the charset of this run, or continue the current run,
+ or stop the current run. */
+ if (charset) {
+ if (charset != state->charset)
+ break;
+ } else {
+ charset = state->charset;
+ }
+
+ char_size = charset->char_size;
+
+ if (state->ext_seg_left <= buf_len || char_size > 0) {
+ int n = (state->ext_seg_left <= buf_len
+ ? state->ext_seg_left
+ : (buf_len / char_size) * char_size);
+ memcpy(bufptr, ctptr, n);
+ ctptr += n; ctext_len -= n;
+ bufptr += n; buf_len -= n;
+ state->ext_seg_left -= n;
+ } else {
+#if UTF8_IN_EXTSEQ
+ /* char_size == 0 is tricky. The code here is good only
+ for valid UTF-8 input. */
+ if (strcmp(charset->name, "ISO10646-1") == 0) {
+ unsigned char ch = *ctptr;
+ int char_size = (ch < 0xc0 ? 1 :
+ ch < 0xe0 ? 2 :
+ ch < 0xf0 ? 3 :
+ ch < 0xf8 ? 4 :
+ ch < 0xfc ? 5 :
+ 6);
+ int i;
+ if (buf_len < char_size)
+ break;
+ /* A small loop is faster than calling memcpy. */
+ for (i = char_size; i > 0; i--)
+ *bufptr++ = *ctptr++;
+ ctext_len -= char_size;
+ buf_len -= char_size;
+ state->ext_seg_left -= char_size;
+ } else
+#endif
+ {
+ /* Here ctext_len >= state->ext_seg_left > buf_len.
+ We may be splitting a character into multiple pieces.
+ Oh well. */
+ int n = buf_len;
+ memcpy(bufptr, ctptr, n);
+ ctptr += n; ctext_len -= n;
+ bufptr += n; buf_len -= n;
+ state->ext_seg_left -= n;
+ }
+ }
+ }
+ }
+
+ /* 'charset' is the charset for the current run. In some cases,
+ 'state->charset' contains the charset for the next run. Therefore,
+ return 'charset'.
+ 'charset' may still be NULL only if no output was produced. */
+ if (num_args > 0)
+ *((XlcCharSet *) args[0]) = charset;
+
+ *from_left -= ctptr - *((const char **) from);
+ *from = (XPointer) ctptr;
+
+ *to_left -= bufptr - *((char **) to);
+ *to = (XPointer) bufptr;
+
+ return unconv_num;
+}
+
+/* from XlcNCharSet to XlcNCompoundText */
+
+static int
+cstoct(
+ XlcConv conv,
+ XPointer *from,
+ int *from_left,
+ XPointer *to,
+ int *to_left,
+ XPointer *args,
+ int num_args)
+{
+ State state = (State) conv->state;
+ XlcSide side;
+ unsigned char min_ch = 0, max_ch = 0;
+ int length, unconv_num;
+ CTInfo ct_info;
+ XlcCharSet charset;
+ const char *csptr;
+ char *ctptr;
+ int csstr_len, ct_len;
+ char *ext_segment_start;
+ int char_size;
+
+ /* One argument is required, of type XlcCharSet. */
+ if (num_args < 1)
+ return -1;
+
+ csptr = *((const char **) from);
+ ctptr = *((char **) to);
+ csstr_len = *from_left;
+ ct_len = *to_left;
+
+ charset = (XlcCharSet) args[0];
+
+ ct_info = _XlcGetCTInfoFromCharSet(charset);
+ if (ct_info == NULL)
+ return -1;
+
+ side = charset->side;
+ length = strlen(ct_info->ct_sequence);
+
+ ext_segment_start = NULL;
+
+ if (ct_info->type == XctOtherCoding) {
+ /* Output the Escape sequence for switching to the charset, and
+ reserve room now for the XctReturn sequence at the end. */
+ if (ct_len < length + 3)
+ return -1;
+
+ memcpy(ctptr, ct_info->ct_sequence, length);
+ ctptr += length;
+ ct_len -= length + 3;
+ } else
+ /* Test whether the charset is already active. */
+ if (((side == XlcGR || side == XlcGLGR)
+ && charset != state->GR_charset)
+ || ((side == XlcGL || side == XlcGLGR)
+ && charset != state->GL_charset)) {
+
+ /* Output the Escape sequence for switching to the charset. */
+ if (ct_info->type == XctExtSeg) {
+ if (ct_len < length + 2 + ct_info->ext_segment_len)
+ return -1;
+
+ memcpy(ctptr, ct_info->ct_sequence, length);
+ ctptr += length;
+ ct_len -= length;
+
+ ctptr += 2;
+ ct_len -= 2;
+ ext_segment_start = ctptr;
+
+ /* The size of an extended segment must fit in 14 bits. */
+ if (ct_len > 0x3fff)
+ ct_len = 0x3fff;
+
+ memcpy(ctptr, ct_info->ext_segment, ct_info->ext_segment_len);
+ ctptr += ct_info->ext_segment_len;
+ ct_len -= ct_info->ext_segment_len;
+ } else {
+ if (ct_len < length)
+ return -1;
+
+ memcpy(ctptr, ct_info->ct_sequence, length);
+ ctptr += length;
+ ct_len -= length;
+ }
+ }
+
+ /* If the charset has side GL or GR, prepare remapping the characters
+ to the correct side. */
+ if (charset->set_size) {
+ min_ch = 0x20;
+ max_ch = 0x7f;
+ if (charset->set_size == 94) {
+ max_ch--;
+ if (charset->char_size > 1 || side == XlcGR)
+ min_ch++;
+ }
+ }
+
+ /* Actually copy the contents. */
+ unconv_num = 0;
+ char_size = charset->char_size;
+ if (char_size == 1) {
+ while (csstr_len > 0 && ct_len > 0) {
+ if (charset->set_size) {
+ /* The CompoundText specification says that the only
+ control characters allowed are 0x09, 0x0a, 0x1b, 0x9b.
+ Therefore here we eliminate other control characters. */
+ unsigned char ch = *((unsigned char *) csptr) & 0x7f;
+ if (!((ch >= min_ch && ch <= max_ch)
+ || (side == XlcGL
+ && (ch == 0x00 || ch == 0x09 || ch == 0x0a))
+ || ((side == XlcGL || side == XlcGR)
+ && (ch == 0x1b)))) {
+ csptr++;
+ csstr_len--;
+ unconv_num++;
+ continue;
+ }
+ }
+
+ if (side == XlcGL)
+ *ctptr++ = *csptr++ & 0x7f;
+ else if (side == XlcGR)
+ *ctptr++ = *csptr++ | 0x80;
+ else
+ *ctptr++ = *csptr++;
+ csstr_len--;
+ ct_len--;
+ }
+ } else if (char_size > 1) {
+ while (csstr_len >= char_size && ct_len >= char_size) {
+ if (side == XlcGL) {
+ int i;
+ for (i = char_size; i > 0; i--)
+ *ctptr++ = *csptr++ & 0x7f;
+ } else if (side == XlcGR) {
+ int i;
+ for (i = char_size; i > 0; i--)
+ *ctptr++ = *csptr++ | 0x80;
+ } else {
+ int i;
+ for (i = char_size; i > 0; i--)
+ *ctptr++ = *csptr++;
+ }
+ csstr_len -= char_size;
+ ct_len -= char_size;
+ }
+ } else {
+ /* char_size = 0. The code here is good only for valid UTF-8 input. */
+ if ((charset->ct_sequence[0] == XctESC
+ && charset->ct_sequence[1] == XctOtherCoding
+ && charset->ct_sequence[2] == 'G')
+#if UTF8_IN_EXTSEQ
+ || strcmp(charset->name, "ISO10646-1") == 0
+#endif
+ ) {
+ while (csstr_len > 0 && ct_len > 0) {
+ unsigned char ch = * (unsigned char *) csptr;
+ int char_size = (ch < 0xc0 ? 1 :
+ ch < 0xe0 ? 2 :
+ ch < 0xf0 ? 3 :
+ ch < 0xf8 ? 4 :
+ ch < 0xfc ? 5 :
+ 6);
+ int i;
+ if (!(csstr_len >= char_size && ct_len >= char_size))
+ break;
+ for (i = char_size; i > 0; i--)
+ *ctptr++ = *csptr++;
+ csstr_len -= char_size;
+ ct_len -= char_size;
+ }
+ } else {
+ while (csstr_len > 0 && ct_len > 0) {
+ *ctptr++ = *csptr++;
+ csstr_len--;
+ ct_len--;
+ }
+ }
+ }
+
+ if (ct_info->type == XctOtherCoding) {
+ /* Terminate with an XctReturn sequence. */
+ ctptr[0] = XctESC;
+ ctptr[1] = XctOtherCoding;
+ ctptr[2] = '@';
+ ctptr += 3;
+ } else if (ext_segment_start != NULL) {
+ /* Backpatch the extended segment's length. */
+ int ext_segment_length = ctptr - ext_segment_start;
+ *(ext_segment_start - 2) = (ext_segment_length >> 7) | 0x80;
+ *(ext_segment_start - 1) = (ext_segment_length & 0x7f) | 0x80;
+ } else {
+ if (side == XlcGR || side == XlcGLGR)
+ state->GR_charset = charset;
+ if (side == XlcGL || side == XlcGLGR)
+ state->GL_charset = charset;
+ }
+
+ *from_left -= csptr - *((const char **) from);
+ *from = (XPointer) csptr;
+
+ *to_left -= ctptr - *((char **) to);
+ *to = (XPointer) ctptr;
+
+ return 0;
+}
+
+/* from XlcNString to XlcNCharSet */
+
+static int
+strtocs(
+ XlcConv conv,
+ XPointer *from,
+ int *from_left,
+ XPointer *to,
+ int *to_left,
+ XPointer *args,
+ int num_args)
+{
+ State state = (State) conv->state;
+ const char *src;
+ char *dst;
+ unsigned char side;
+ int length;
+
+ src = (const char *) *from;
+ dst = (char *) *to;
+
+ length = min(*from_left, *to_left);
+ side = *((unsigned char *) src) & 0x80;
+
+ while (side == (*((unsigned char *) src) & 0x80) && length-- > 0)
+ *dst++ = *src++;
+
+ *from_left -= src - (const char *) *from;
+ *from = (XPointer) src;
+ *to_left -= dst - (char *) *to;
+ *to = (XPointer) dst;
+
+ if (num_args > 0)
+ *((XlcCharSet *)args[0]) = (side ? state->GR_charset : state->GL_charset);
+
+ return 0;
+}
+
+/* from XlcNCharSet to XlcNString */
+
+static int
+cstostr(
+ XlcConv conv,
+ XPointer *from,
+ int *from_left,
+ XPointer *to,
+ int *to_left,
+ XPointer *args,
+ int num_args)
+{
+ State state = (State) conv->state;
+ const char *csptr;
+ char *string_ptr;
+ int csstr_len, str_len;
+ unsigned char ch;
+ int unconv_num = 0;
+
+ /* This converter can only convert from ISO8859-1:GL and ISO8859-1:GR. */
+ if (num_args < 1
+ || !((XlcCharSet) args[0] == state->GL_charset
+ || (XlcCharSet) args[0] == state->GR_charset))
+ return -1;
+
+ csptr = *((const char **) from);
+ string_ptr = *((char **) to);
+ csstr_len = *from_left;
+ str_len = *to_left;
+
+ while (csstr_len > 0 && str_len > 0) {
+ ch = *((unsigned char *) csptr++);
+ csstr_len--;
+ /* Citing ICCCM: "STRING as a type specifies the ISO Latin-1 character
+ set plus the control characters TAB and NEWLINE." */
+ if ((ch < 0x20 && ch != 0x00 && ch != 0x09 && ch != 0x0a)
+ || (ch >= 0x7f && ch < 0xa0)) {
+ unconv_num++;
+ continue;
+ }
+ *((unsigned char *) string_ptr++) = ch;
+ str_len--;
+ }
+
+ *from_left -= csptr - *((const char **) from);
+ *from = (XPointer) csptr;
+
+ *to_left -= string_ptr - *((char **) to);
+ *to = (XPointer) string_ptr;
+
+ return unconv_num;
+}
+
+
+static XlcConv
+create_conv(
+ XlcConvMethods methods)
+{
+ XlcConv conv;
+
+ conv = (XlcConv) Xmalloc(sizeof(XlcConvRec) + sizeof(StateRec));
+ if (conv == NULL)
+ return (XlcConv) NULL;
+
+ conv->state = (XPointer) &conv[1];
+
+ conv->methods = methods;
+
+ init_state(conv);
+
+ return conv;
+}
+
+static void
+close_converter(
+ XlcConv conv)
+{
+ /* conv->state is allocated together with conv, free both at once. */
+ Xfree((char *) conv);
+}
+
+
+static XlcConvMethodsRec cttocs_methods = {
+ close_converter,
+ cttocs,
+ init_state
+};
+
+static XlcConv
+open_cttocs(
+ XLCd from_lcd,
+ const char *from_type,
+ XLCd to_lcd,
+ const char *to_type)
+{
+ return create_conv(&cttocs_methods);
+}
+
+
+static XlcConvMethodsRec cstoct_methods = {
+ close_converter,
+ cstoct,
+ init_state
+};
+
+static XlcConv
+open_cstoct(
+ XLCd from_lcd,
+ const char *from_type,
+ XLCd to_lcd,
+ const char *to_type)
+{
+ return create_conv(&cstoct_methods);
+}
+
+
+static XlcConvMethodsRec strtocs_methods = {
+ close_converter,
+ strtocs,
+ init_state
+};
+
+static XlcConv
+open_strtocs(
+ XLCd from_lcd,
+ const char *from_type,
+ XLCd to_lcd,
+ const char *to_type)
+{
+ return create_conv(&strtocs_methods);
+}
+
+
+static XlcConvMethodsRec cstostr_methods = {
+ close_converter,
+ cstostr,
+ init_state
+};
+
+static XlcConv
+open_cstostr(
+ XLCd from_lcd,
+ const char *from_type,
+ XLCd to_lcd,
+ const char *to_type)
+{
+ return create_conv(&cstostr_methods);
+}
+
+
+/* =========================== Initialization =========================== */
+
+Bool
+_XlcInitCTInfo(void)
+{
+ if (ct_list == NULL) {
+ const CTDataRec *ct_data;
+ int num;
+ XlcCharSet charset;
+
+ /* Initialize ct_list. */
+
+ num = sizeof(default_ct_data) / sizeof(CTDataRec);
+ for (ct_data = default_ct_data; num > 0; ct_data++, num--) {
+ charset = _XlcAddCT(ct_data->name, ct_data->ct_sequence);
+ if (charset == NULL)
+ continue;
+ if (strncmp(charset->ct_sequence, "\x1b\x25\x2f", 3) != 0)
+ charset->source = CSsrcStd;
+ else
+ charset->source = CSsrcXLC;
+ }
+
+ /* Register CompoundText and CharSet converters. */
+
+ _XlcSetConverter((XLCd) NULL, XlcNCompoundText,
+ (XLCd) NULL, XlcNCharSet,
+ open_cttocs);
+ _XlcSetConverter((XLCd) NULL, XlcNString,
+ (XLCd) NULL, XlcNCharSet,
+ open_strtocs);
+
+ _XlcSetConverter((XLCd) NULL, XlcNCharSet,
+ (XLCd) NULL, XlcNCompoundText,
+ open_cstoct);
+ _XlcSetConverter((XLCd) NULL, XlcNCharSet,
+ (XLCd) NULL, XlcNString,
+ open_cstostr);
+ }
+
+ return True;
+}
diff --git a/libX11/src/xlibi18n/lcConv.c b/libX11/src/xlibi18n/lcConv.c
index 1b997f5f1..9797e7ed3 100644
--- a/libX11/src/xlibi18n/lcConv.c
+++ b/libX11/src/xlibi18n/lcConv.c
@@ -1,339 +1,339 @@
-/*
- * Copyright 1992, 1993 by TOSHIBA Corp.
- *
- * Permission to use, copy, modify, and distribute this software and its
- * documentation for any purpose and without fee is hereby granted, provided
- * that the above copyright notice appear in all copies and that both that
- * copyright notice and this permission notice appear in supporting
- * documentation, and that the name of TOSHIBA not be used in advertising
- * or publicity pertaining to distribution of the software without specific,
- * written prior permission. TOSHIBA make no representations about the
- * suitability of this software for any purpose. It is provided "as is"
- * without express or implied warranty.
- *
- * TOSHIBA DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
- * ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
- * TOSHIBA BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
- * ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
- * WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
- * ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
- * SOFTWARE.
- *
- * Author: Katsuhisa Yano TOSHIBA Corp.
- * mopi@osa.ilab.toshiba.co.jp
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-#include "XlcPubI.h"
-#include <stdio.h>
-
-typedef struct _XlcConverterListRec {
- XLCd from_lcd;
- const char *from;
- XrmQuark from_type;
- XLCd to_lcd;
- const char *to;
- XrmQuark to_type;
- XlcOpenConverterProc converter;
- struct _XlcConverterListRec *next;
-} XlcConverterListRec, *XlcConverterList;
-
-static XlcConverterList conv_list = NULL;
-
-static void
-close_converter(
- XlcConv conv)
-{
- (*conv->methods->close)(conv);
-}
-
-static XlcConv
-get_converter(
- XLCd from_lcd,
- XrmQuark from_type,
- XLCd to_lcd,
- XrmQuark to_type)
-{
- XlcConverterList list, prev = NULL;
-
- for (list = conv_list; list; list = list->next) {
- if (list->from_lcd == from_lcd && list->to_lcd == to_lcd
- && list->from_type == from_type && list->to_type == to_type) {
-
- if (prev && prev != conv_list) { /* XXX */
- prev->next = list->next;
- list->next = conv_list;
- conv_list = list;
- }
-
- return (*list->converter)(from_lcd, list->from, to_lcd, list->to);
- }
-
- prev = list;
- }
-
- return (XlcConv) NULL;
-}
-
-Bool
-_XlcSetConverter(
- XLCd from_lcd,
- const char *from,
- XLCd to_lcd,
- const char *to,
- XlcOpenConverterProc converter)
-{
- XlcConverterList list;
- XrmQuark from_type, to_type;
-
- from_type = XrmStringToQuark(from);
- to_type = XrmStringToQuark(to);
-
- for (list = conv_list; list; list = list->next) {
- if (list->from_lcd == from_lcd && list->to_lcd == to_lcd
- && list->from_type == from_type && list->to_type == to_type) {
-
- list->converter = converter;
- return True;
- }
- }
-
- list = (XlcConverterList) Xmalloc(sizeof(XlcConverterListRec));
- if (list == NULL)
- return False;
-
- list->from_lcd = from_lcd;
- list->from = from;
- list->from_type = from_type;
- list->to_lcd = to_lcd;
- list->to = to;
- list->to_type = to_type;
- list->converter = converter;
- list->next = conv_list;
- conv_list = list;
-
- return True;
-}
-
-typedef struct _ConvRec {
- XlcConv from_conv;
- XlcConv to_conv;
-} ConvRec, *Conv;
-
-static int
-indirect_convert(
- XlcConv lc_conv,
- XPointer *from,
- int *from_left,
- XPointer *to,
- int *to_left,
- XPointer *args,
- int num_args)
-{
- Conv conv = (Conv) lc_conv->state;
- XlcConv from_conv = conv->from_conv;
- XlcConv to_conv = conv->to_conv;
- XlcCharSet charset;
- char buf[BUFSIZ], *cs;
- XPointer tmp_args[1];
- int cs_left, ret, length, unconv_num = 0;
-
- if (from == NULL || *from == NULL) {
- if (from_conv->methods->reset)
- (*from_conv->methods->reset)(from_conv);
-
- if (to_conv->methods->reset)
- (*to_conv->methods->reset)(to_conv);
-
- return 0;
- }
-
- while (*from_left > 0) {
- cs = buf;
- cs_left = BUFSIZ;
- tmp_args[0] = (XPointer) &charset;
-
- ret = (*from_conv->methods->convert)(from_conv, from, from_left, &cs,
- &cs_left, tmp_args, 1);
- if (ret < 0)
- break;
-
- unconv_num += ret;
-
- length = cs - buf;
- if (length > 0) {
- cs_left = length;
- cs = buf;
-
- tmp_args[0] = (XPointer) charset;
-
- ret = (*to_conv->methods->convert)(to_conv, &cs, &cs_left, to, to_left,
- tmp_args, 1);
- if (ret < 0) {
- unconv_num += length / (charset->char_size > 0 ? charset->char_size : 1);
- continue;
- }
-
- unconv_num += ret;
-
- if (*to_left < 1)
- break;
- }
- }
-
- return unconv_num;
-}
-
-static void
-close_indirect_converter(
- XlcConv lc_conv)
-{
- Conv conv = (Conv) lc_conv->state;
-
- if (conv) {
- if (conv->from_conv)
- close_converter(conv->from_conv);
- if (conv->to_conv)
- close_converter(conv->to_conv);
-
- Xfree((char *) conv);
- }
-
- Xfree((char *) lc_conv);
-}
-
-static void
-reset_indirect_converter(
- XlcConv lc_conv)
-{
- Conv conv = (Conv) lc_conv->state;
-
- if (conv) {
- if (conv->from_conv && conv->from_conv->methods->reset)
- (*conv->from_conv->methods->reset)(conv->from_conv);
- if (conv->to_conv && conv->to_conv->methods->reset)
- (*conv->to_conv->methods->reset)(conv->to_conv);
- }
-}
-
-static XlcConvMethodsRec conv_methods = {
- close_indirect_converter,
- indirect_convert,
- reset_indirect_converter
-} ;
-
-static XlcConv
-open_indirect_converter(
- XLCd from_lcd,
- const char *from,
- XLCd to_lcd,
- const char *to)
-{
- XlcConv lc_conv, from_conv, to_conv;
- Conv conv;
- XrmQuark from_type, to_type;
- static XrmQuark QChar, QCharSet, QCTCharSet = (XrmQuark) 0;
-
- if (QCTCharSet == (XrmQuark) 0) {
- QCTCharSet = XrmStringToQuark(XlcNCTCharSet);
- QCharSet = XrmStringToQuark(XlcNCharSet);
- QChar = XrmStringToQuark(XlcNChar);
- }
-
- from_type = XrmStringToQuark(from);
- to_type = XrmStringToQuark(to);
-
- if (from_type == QCharSet || from_type == QChar || to_type == QCharSet ||
- to_type == QChar)
- return (XlcConv) NULL;
-
- lc_conv = (XlcConv) Xmalloc(sizeof(XlcConvRec));
- if (lc_conv == NULL)
- return (XlcConv) NULL;
-
- lc_conv->methods = &conv_methods;
-
- lc_conv->state = (XPointer) Xcalloc(1, sizeof(ConvRec));
- if (lc_conv->state == NULL)
- goto err;
-
- conv = (Conv) lc_conv->state;
-
- from_conv = get_converter(from_lcd, from_type, from_lcd, QCTCharSet);
- if (from_conv == NULL)
- from_conv = get_converter(from_lcd, from_type, from_lcd, QCharSet);
- if (from_conv == NULL)
- from_conv = get_converter((XLCd)NULL, from_type, (XLCd)NULL, QCharSet);
- if (from_conv == NULL)
- from_conv = get_converter(from_lcd, from_type, from_lcd, QChar);
- if (from_conv == NULL)
- goto err;
- conv->from_conv = from_conv;
-
- to_conv = get_converter(to_lcd, QCTCharSet, to_lcd, to_type);
- if (to_conv == NULL)
- to_conv = get_converter(to_lcd, QCharSet, to_lcd, to_type);
- if (to_conv == NULL)
- to_conv = get_converter((XLCd) NULL, QCharSet, (XLCd) NULL, to_type);
- if (to_conv == NULL)
- goto err;
- conv->to_conv = to_conv;
-
- return lc_conv;
-
-err:
- close_indirect_converter(lc_conv);
-
- return (XlcConv) NULL;
-}
-
-XlcConv
-_XlcOpenConverter(
- XLCd from_lcd,
- const char *from,
- XLCd to_lcd,
- const char *to)
-{
- XlcConv conv;
- XrmQuark from_type, to_type;
-
- from_type = XrmStringToQuark(from);
- to_type = XrmStringToQuark(to);
-
- if ((conv = get_converter(from_lcd, from_type, to_lcd, to_type)))
- return conv;
-
- return open_indirect_converter(from_lcd, from, to_lcd, to);
-}
-
-void
-_XlcCloseConverter(
- XlcConv conv)
-{
- close_converter(conv);
-}
-
-int
-_XlcConvert(
- XlcConv conv,
- XPointer *from,
- int *from_left,
- XPointer *to,
- int *to_left,
- XPointer *args,
- int num_args)
-{
- return (*conv->methods->convert)(conv, from, from_left, to, to_left, args,
- num_args);
-}
-
-void
-_XlcResetConverter(
- XlcConv conv)
-{
- if (conv->methods->reset)
- (*conv->methods->reset)(conv);
-}
+/*
+ * Copyright 1992, 1993 by TOSHIBA Corp.
+ *
+ * Permission to use, copy, modify, and distribute this software and its
+ * documentation for any purpose and without fee is hereby granted, provided
+ * that the above copyright notice appear in all copies and that both that
+ * copyright notice and this permission notice appear in supporting
+ * documentation, and that the name of TOSHIBA not be used in advertising
+ * or publicity pertaining to distribution of the software without specific,
+ * written prior permission. TOSHIBA make no representations about the
+ * suitability of this software for any purpose. It is provided "as is"
+ * without express or implied warranty.
+ *
+ * TOSHIBA DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
+ * ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
+ * TOSHIBA BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
+ * ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
+ * WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
+ * ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
+ * SOFTWARE.
+ *
+ * Author: Katsuhisa Yano TOSHIBA Corp.
+ * mopi@osa.ilab.toshiba.co.jp
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+#include "XlcPubI.h"
+#include <stdio.h>
+
+typedef struct _XlcConverterListRec {
+ XLCd from_lcd;
+ const char *from;
+ XrmQuark from_type;
+ XLCd to_lcd;
+ const char *to;
+ XrmQuark to_type;
+ XlcOpenConverterProc converter;
+ struct _XlcConverterListRec *next;
+} XlcConverterListRec, *XlcConverterList;
+
+static XlcConverterList conv_list = NULL;
+
+static void
+close_converter(
+ XlcConv conv)
+{
+ (*conv->methods->close)(conv);
+}
+
+static XlcConv
+get_converter(
+ XLCd from_lcd,
+ XrmQuark from_type,
+ XLCd to_lcd,
+ XrmQuark to_type)
+{
+ XlcConverterList list, prev = NULL;
+
+ for (list = conv_list; list; list = list->next) {
+ if (list->from_lcd == from_lcd && list->to_lcd == to_lcd
+ && list->from_type == from_type && list->to_type == to_type) {
+
+ if (prev && prev != conv_list) { /* XXX */
+ prev->next = list->next;
+ list->next = conv_list;
+ conv_list = list;
+ }
+
+ return (*list->converter)(from_lcd, list->from, to_lcd, list->to);
+ }
+
+ prev = list;
+ }
+
+ return (XlcConv) NULL;
+}
+
+Bool
+_XlcSetConverter(
+ XLCd from_lcd,
+ const char *from,
+ XLCd to_lcd,
+ const char *to,
+ XlcOpenConverterProc converter)
+{
+ XlcConverterList list;
+ XrmQuark from_type, to_type;
+
+ from_type = XrmStringToQuark(from);
+ to_type = XrmStringToQuark(to);
+
+ for (list = conv_list; list; list = list->next) {
+ if (list->from_lcd == from_lcd && list->to_lcd == to_lcd
+ && list->from_type == from_type && list->to_type == to_type) {
+
+ list->converter = converter;
+ return True;
+ }
+ }
+
+ list = (XlcConverterList) Xmalloc(sizeof(XlcConverterListRec));
+ if (list == NULL)
+ return False;
+
+ list->from_lcd = from_lcd;
+ list->from = from;
+ list->from_type = from_type;
+ list->to_lcd = to_lcd;
+ list->to = to;
+ list->to_type = to_type;
+ list->converter = converter;
+ list->next = conv_list;
+ conv_list = list;
+
+ return True;
+}
+
+typedef struct _ConvRec {
+ XlcConv from_conv;
+ XlcConv to_conv;
+} ConvRec, *Conv;
+
+static int
+indirect_convert(
+ XlcConv lc_conv,
+ XPointer *from,
+ int *from_left,
+ XPointer *to,
+ int *to_left,
+ XPointer *args,
+ int num_args)
+{
+ Conv conv = (Conv) lc_conv->state;
+ XlcConv from_conv = conv->from_conv;
+ XlcConv to_conv = conv->to_conv;
+ XlcCharSet charset;
+ char buf[BUFSIZ], *cs;
+ XPointer tmp_args[1];
+ int cs_left, ret, length, unconv_num = 0;
+
+ if (from == NULL || *from == NULL) {
+ if (from_conv->methods->reset)
+ (*from_conv->methods->reset)(from_conv);
+
+ if (to_conv->methods->reset)
+ (*to_conv->methods->reset)(to_conv);
+
+ return 0;
+ }
+
+ while (*from_left > 0) {
+ cs = buf;
+ cs_left = BUFSIZ;
+ tmp_args[0] = (XPointer) &charset;
+
+ ret = (*from_conv->methods->convert)(from_conv, from, from_left, &cs,
+ &cs_left, tmp_args, 1);
+ if (ret < 0)
+ break;
+
+ unconv_num += ret;
+
+ length = cs - buf;
+ if (length > 0) {
+ cs_left = length;
+ cs = buf;
+
+ tmp_args[0] = (XPointer) charset;
+
+ ret = (*to_conv->methods->convert)(to_conv, &cs, &cs_left, to, to_left,
+ tmp_args, 1);
+ if (ret < 0) {
+ unconv_num += length / (charset->char_size > 0 ? charset->char_size : 1);
+ continue;
+ }
+
+ unconv_num += ret;
+
+ if (*to_left < 1)
+ break;
+ }
+ }
+
+ return unconv_num;
+}
+
+static void
+close_indirect_converter(
+ XlcConv lc_conv)
+{
+ Conv conv = (Conv) lc_conv->state;
+
+ if (conv) {
+ if (conv->from_conv)
+ close_converter(conv->from_conv);
+ if (conv->to_conv)
+ close_converter(conv->to_conv);
+
+ Xfree((char *) conv);
+ }
+
+ Xfree((char *) lc_conv);
+}
+
+static void
+reset_indirect_converter(
+ XlcConv lc_conv)
+{
+ Conv conv = (Conv) lc_conv->state;
+
+ if (conv) {
+ if (conv->from_conv && conv->from_conv->methods->reset)
+ (*conv->from_conv->methods->reset)(conv->from_conv);
+ if (conv->to_conv && conv->to_conv->methods->reset)
+ (*conv->to_conv->methods->reset)(conv->to_conv);
+ }
+}
+
+static XlcConvMethodsRec conv_methods = {
+ close_indirect_converter,
+ indirect_convert,
+ reset_indirect_converter
+} ;
+
+static XlcConv
+open_indirect_converter(
+ XLCd from_lcd,
+ const char *from,
+ XLCd to_lcd,
+ const char *to)
+{
+ XlcConv lc_conv, from_conv, to_conv;
+ Conv conv;
+ XrmQuark from_type, to_type;
+ static XrmQuark QChar, QCharSet, QCTCharSet = (XrmQuark) 0;
+
+ if (QCTCharSet == (XrmQuark) 0) {
+ QCTCharSet = XrmStringToQuark(XlcNCTCharSet);
+ QCharSet = XrmStringToQuark(XlcNCharSet);
+ QChar = XrmStringToQuark(XlcNChar);
+ }
+
+ from_type = XrmStringToQuark(from);
+ to_type = XrmStringToQuark(to);
+
+ if (from_type == QCharSet || from_type == QChar || to_type == QCharSet ||
+ to_type == QChar)
+ return (XlcConv) NULL;
+
+ lc_conv = (XlcConv) Xmalloc(sizeof(XlcConvRec));
+ if (lc_conv == NULL)
+ return (XlcConv) NULL;
+
+ lc_conv->methods = &conv_methods;
+
+ lc_conv->state = (XPointer) Xcalloc(1, sizeof(ConvRec));
+ if (lc_conv->state == NULL)
+ goto err;
+
+ conv = (Conv) lc_conv->state;
+
+ from_conv = get_converter(from_lcd, from_type, from_lcd, QCTCharSet);
+ if (from_conv == NULL)
+ from_conv = get_converter(from_lcd, from_type, from_lcd, QCharSet);
+ if (from_conv == NULL)
+ from_conv = get_converter((XLCd)NULL, from_type, (XLCd)NULL, QCharSet);
+ if (from_conv == NULL)
+ from_conv = get_converter(from_lcd, from_type, from_lcd, QChar);
+ if (from_conv == NULL)
+ goto err;
+ conv->from_conv = from_conv;
+
+ to_conv = get_converter(to_lcd, QCTCharSet, to_lcd, to_type);
+ if (to_conv == NULL)
+ to_conv = get_converter(to_lcd, QCharSet, to_lcd, to_type);
+ if (to_conv == NULL)
+ to_conv = get_converter((XLCd) NULL, QCharSet, (XLCd) NULL, to_type);
+ if (to_conv == NULL)
+ goto err;
+ conv->to_conv = to_conv;
+
+ return lc_conv;
+
+err:
+ close_indirect_converter(lc_conv);
+
+ return (XlcConv) NULL;
+}
+
+XlcConv
+_XlcOpenConverter(
+ XLCd from_lcd,
+ const char *from,
+ XLCd to_lcd,
+ const char *to)
+{
+ XlcConv conv;
+ XrmQuark from_type, to_type;
+
+ from_type = XrmStringToQuark(from);
+ to_type = XrmStringToQuark(to);
+
+ if ((conv = get_converter(from_lcd, from_type, to_lcd, to_type)))
+ return conv;
+
+ return open_indirect_converter(from_lcd, from, to_lcd, to);
+}
+
+void
+_XlcCloseConverter(
+ XlcConv conv)
+{
+ close_converter(conv);
+}
+
+int
+_XlcConvert(
+ XlcConv conv,
+ XPointer *from,
+ int *from_left,
+ XPointer *to,
+ int *to_left,
+ XPointer *args,
+ int num_args)
+{
+ return (*conv->methods->convert)(conv, from, from_left, to, to_left, args,
+ num_args);
+}
+
+void
+_XlcResetConverter(
+ XlcConv conv)
+{
+ if (conv->methods->reset)
+ (*conv->methods->reset)(conv);
+}
diff --git a/libX11/src/xlibi18n/lcDynamic.c b/libX11/src/xlibi18n/lcDynamic.c
index 09665853e..8d022d885 100644
--- a/libX11/src/xlibi18n/lcDynamic.c
+++ b/libX11/src/xlibi18n/lcDynamic.c
@@ -1,78 +1,78 @@
-/*
-Copyright 1996, 1998 The Open Group
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
-
-The above copyright notice and this permission notice shall be included
-in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
-IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR
-OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
-ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall
-not be used in advertising or otherwise to promote the sale, use or
-other dealings in this Software without prior written authorization
-from The Open Group.
-*/
-/*
- * Copyright 1995 by FUJITSU LIMITED
- * This is source code modified by FUJITSU LIMITED under the Joint
- * Development Agreement for the CDE/Motif PST.
- *
- * Modifier: Takanori Tateno FUJITSU LIMITED
- *
- */
-
-/*
- * A dynamically loaded locale.
- * Supports: All locale names.
- * How: Loads $(XLOCALEDIR)/xi18n.so and forwards the request to that library.
- * Platforms: Only those defining USE_DYNAMIC_LOADER (none known).
- */
-
-#ifdef USE_DYNAMIC_LOADER
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include <stdio.h>
-#include <string.h>
-#include <dlfcn.h>
-
-#include "Xlibint.h"
-#include "Xlcint.h"
-
-#ifndef XLOCALEDIR
-#define XLOCALEDIR "locale"
-#endif
-
-#define LCLIBNAME "xi18n.so"
-
-XLCd
-_XlcDynamicLoader(
- const char *name)
-{
- char libpath[1024];
- XLCdMethods _XlcGenericMethods;
- XLCd lcd;
- void *nlshandler;
-
- sprintf(libpath,"%s/%s/%s",
- XLOCALEDIR,name,LCLIBNAME);
- nlshandler = dlopen(libpath,LAZY);
- _XlcGenericMethods = (XLCdMethods)dlsym(nlshandler,"genericMethods");
- lcd = _XlcCreateLC(name,_XlcGenericMethods);
-
- return lcd;
-}
-#else
-typedef int dummy;
-#endif /* USE_DYNAMIC_LOADER */
+/*
+Copyright 1996, 1998 The Open Group
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
+
+The above copyright notice and this permission notice shall be included
+in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR
+OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
+ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group shall
+not be used in advertising or otherwise to promote the sale, use or
+other dealings in this Software without prior written authorization
+from The Open Group.
+*/
+/*
+ * Copyright 1995 by FUJITSU LIMITED
+ * This is source code modified by FUJITSU LIMITED under the Joint
+ * Development Agreement for the CDE/Motif PST.
+ *
+ * Modifier: Takanori Tateno FUJITSU LIMITED
+ *
+ */
+
+/*
+ * A dynamically loaded locale.
+ * Supports: All locale names.
+ * How: Loads $(XLOCALEDIR)/xi18n.so and forwards the request to that library.
+ * Platforms: Only those defining USE_DYNAMIC_LOADER (none known).
+ */
+
+#ifdef USE_DYNAMIC_LOADER
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include <stdio.h>
+#include <string.h>
+#include <dlfcn.h>
+
+#include "Xlibint.h"
+#include "Xlcint.h"
+
+#ifndef XLOCALEDIR
+#define XLOCALEDIR "locale"
+#endif
+
+#define LCLIBNAME "xi18n.so"
+
+XLCd
+_XlcDynamicLoader(
+ const char *name)
+{
+ char libpath[1024];
+ XLCdMethods _XlcGenericMethods;
+ XLCd lcd;
+ void *nlshandler;
+
+ sprintf(libpath,"%s/%s/%s",
+ XLOCALEDIR,name,LCLIBNAME);
+ nlshandler = dlopen(libpath,LAZY);
+ _XlcGenericMethods = (XLCdMethods)dlsym(nlshandler,"genericMethods");
+ lcd = _XlcCreateLC(name,_XlcGenericMethods);
+
+ return lcd;
+}
+#else
+typedef int dummy;
+#endif /* USE_DYNAMIC_LOADER */
diff --git a/libX11/src/xlibi18n/lcInit.c b/libX11/src/xlibi18n/lcInit.c
index b9a602b4b..5aaf1832b 100644
--- a/libX11/src/xlibi18n/lcInit.c
+++ b/libX11/src/xlibi18n/lcInit.c
@@ -1,197 +1,197 @@
-/*
-Copyright 1985, 1986, 1987, 1991, 1998 The Open Group
-
-Permission is hereby granted, free of charge, to any person obtaining a
-copy of this software and associated documentation files (the
-"Software"), to deal in the Software without restriction, including
-without limitation the rights to use, copy, modify, merge, publish,
-distribute, sublicense, and/or sell copies of the Software, and to
-permit persons to whom the Software is furnished to do so, subject to
-the following conditions: The above copyright notice and this
-permission notice shall be included in all copies or substantial
-portions of the Software.
-
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE
-EVEN IF ADVISED IN ADVANCE OF THE POSSIBILITY OF SUCH DAMAGES.
-
-
-Except as contained in this notice, the name of The Open Group shall not be
-used in advertising or otherwise to promote the sale, use or other dealings
-in this Software without prior written authorization from The Open Group.
-
-
-X Window System is a trademark of The Open Group
-
-OSF/1, OSF/Motif and Motif are registered trademarks, and OSF, the OSF
-logo, LBX, X Window System, and Xinerama are trademarks of the Open
-Group. All other trademarks and registered trademarks mentioned herein
-are the property of their respective owners. No right, title or
-interest in or to any trademark, service mark, logo or trade name of
-Sun Microsystems, Inc. or its licensors is granted.
-
-*/
-/*
- * Copyright 2000 Oracle and/or its affiliates. All rights reserved.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice (including the next
- * paragraph) shall be included in all copies or substantial portions of the
- * Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
- * DEALINGS IN THE SOFTWARE.
- */
-
-/*
- * Copyright 1992, 1993 by TOSHIBA Corp.
- *
- * Permission to use, copy, modify, and distribute this software and its
- * documentation for any purpose and without fee is hereby granted, provided
- * that the above copyright notice appear in all copies and that both that
- * copyright notice and this permission notice appear in supporting
- * documentation, and that the name of TOSHIBA not be used in advertising
- * or publicity pertaining to distribution of the software without specific,
- * written prior permission. TOSHIBA make no representations about the
- * suitability of this software for any purpose. It is provided "as is"
- * without express or implied warranty.
- *
- * TOSHIBA DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
- * ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
- * TOSHIBA BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
- * ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
- * WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
- * ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
- * SOFTWARE.
- *
- * Author: Katsuhisa Yano TOSHIBA Corp.
- * mopi@osa.ilab.toshiba.co.jp
- */
-/*
- * (c) Copyright 1995 FUJITSU LIMITED
- * This is source code modified by FUJITSU LIMITED under the Joint
- * Development Agreement for the CDE/Motif PST.
- *
- * Modifier: Masayoshi Shimamura FUJITSU LIMITED
- *
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-#include "Xlcint.h"
-
-#ifdef USE_DYNAMIC_LC
-#undef USE_DEFAULT_LOADER
-#undef USE_GENERIC_LOADER
-#undef USE_UTF8_LOADER
-#else
-#define USE_GENERIC_LOADER
-#define USE_DEFAULT_LOADER
-#define USE_UTF8_LOADER
-#ifdef X_LOCALE
-# define USE_EUC_LOADER
-# define USE_SJIS_LOADER
-# define USE_JIS_LOADER
-#endif
-#endif
-
-/*
- * The _XlcInitLoader function initializes the locale object loader list
- * with vendor specific manner.
- */
-
-void
-_XlcInitLoader(void)
-{
-
-#ifdef USE_DYNAMIC_LC
- _XlcAddLoader(_XlcDynamicLoad, XlcHead);
-#else /* USE_DYNAMIC_LC */
-
-#ifdef USE_GENERIC_LOADER
- _XlcAddLoader(_XlcGenericLoader, XlcHead);
-#endif
-
-#ifdef USE_DEFAULT_LOADER
- _XlcAddLoader(_XlcDefaultLoader, XlcHead);
-#endif
-
-#ifdef USE_UTF8_LOADER
- _XlcAddLoader(_XlcUtf8Loader, XlcHead);
-#endif
-
-#ifdef USE_EUC_LOADER
- _XlcAddLoader(_XlcEucLoader, XlcHead);
-#endif
-
-#ifdef USE_SJIS_LOADER
- _XlcAddLoader(_XlcSjisLoader, XlcHead);
-#endif
-
-#ifdef USE_JIS_LOADER
- _XlcAddLoader(_XlcJisLoader, XlcHead);
-#endif
-
-#ifdef USE_DYNAMIC_LOADER
- _XlcAddLoader(_XlcDynamicLoader, XlcHead);
-#endif
-
-#endif /* USE_DYNAMIC_LC */
-}
-
-void
-_XlcDeInitLoader(void)
-{
-
-#ifdef USE_DYNAMIC_LC
- _XlcRemoveLoader(_XlcDynamicLoad);
-#else /* USE_DYNAMIC_LC */
-
-#ifdef USE_GENERIC_LOADER
- _XlcRemoveLoader(_XlcGenericLoader);
-#endif
-
-#ifdef USE_DEFAULT_LOADER
- _XlcRemoveLoader(_XlcDefaultLoader);
-#endif
-
-#ifdef USE_UTF8_LOADER
- _XlcRemoveLoader(_XlcUtf8Loader);
-#endif
-
-#ifdef USE_EUC_LOADER
- _XlcRemoveLoader(_XlcEucLoader);
-#endif
-
-#ifdef USE_SJIS_LOADER
- _XlcRemoveLoader(_XlcSjisLoader);
-#endif
-
-#ifdef USE_JIS_LOADER
- _XlcRemoveLoader(_XlcJisLoader);
-#endif
-
-#ifdef USE_DYNAMIC_LOADER
- _XlcRemoveLoader(_XlcDynamicLoader);
-#endif
-
-#endif /* USE_DYNAMIC_LC */
-}
+/*
+Copyright 1985, 1986, 1987, 1991, 1998 The Open Group
+
+Permission is hereby granted, free of charge, to any person obtaining a
+copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions: The above copyright notice and this
+permission notice shall be included in all copies or substantial
+portions of the Software.
+
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE
+EVEN IF ADVISED IN ADVANCE OF THE POSSIBILITY OF SUCH DAMAGES.
+
+
+Except as contained in this notice, the name of The Open Group shall not be
+used in advertising or otherwise to promote the sale, use or other dealings
+in this Software without prior written authorization from The Open Group.
+
+
+X Window System is a trademark of The Open Group
+
+OSF/1, OSF/Motif and Motif are registered trademarks, and OSF, the OSF
+logo, LBX, X Window System, and Xinerama are trademarks of the Open
+Group. All other trademarks and registered trademarks mentioned herein
+are the property of their respective owners. No right, title or
+interest in or to any trademark, service mark, logo or trade name of
+Sun Microsystems, Inc. or its licensors is granted.
+
+*/
+/*
+ * Copyright 2000 Oracle and/or its affiliates. All rights reserved.
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice (including the next
+ * paragraph) shall be included in all copies or substantial portions of the
+ * Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+ * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+ * DEALINGS IN THE SOFTWARE.
+ */
+
+/*
+ * Copyright 1992, 1993 by TOSHIBA Corp.
+ *
+ * Permission to use, copy, modify, and distribute this software and its
+ * documentation for any purpose and without fee is hereby granted, provided
+ * that the above copyright notice appear in all copies and that both that
+ * copyright notice and this permission notice appear in supporting
+ * documentation, and that the name of TOSHIBA not be used in advertising
+ * or publicity pertaining to distribution of the software without specific,
+ * written prior permission. TOSHIBA make no representations about the
+ * suitability of this software for any purpose. It is provided "as is"
+ * without express or implied warranty.
+ *
+ * TOSHIBA DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
+ * ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
+ * TOSHIBA BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
+ * ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
+ * WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
+ * ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
+ * SOFTWARE.
+ *
+ * Author: Katsuhisa Yano TOSHIBA Corp.
+ * mopi@osa.ilab.toshiba.co.jp
+ */
+/*
+ * (c) Copyright 1995 FUJITSU LIMITED
+ * This is source code modified by FUJITSU LIMITED under the Joint
+ * Development Agreement for the CDE/Motif PST.
+ *
+ * Modifier: Masayoshi Shimamura FUJITSU LIMITED
+ *
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+#include "Xlcint.h"
+
+#ifdef USE_DYNAMIC_LC
+#undef USE_DEFAULT_LOADER
+#undef USE_GENERIC_LOADER
+#undef USE_UTF8_LOADER
+#else
+#define USE_GENERIC_LOADER
+#define USE_DEFAULT_LOADER
+#define USE_UTF8_LOADER
+#ifdef X_LOCALE
+# define USE_EUC_LOADER
+# define USE_SJIS_LOADER
+# define USE_JIS_LOADER
+#endif
+#endif
+
+/*
+ * The _XlcInitLoader function initializes the locale object loader list
+ * with vendor specific manner.
+ */
+
+void
+_XlcInitLoader(void)
+{
+
+#ifdef USE_DYNAMIC_LC
+ _XlcAddLoader(_XlcDynamicLoad, XlcHead);
+#else /* USE_DYNAMIC_LC */
+
+#ifdef USE_GENERIC_LOADER
+ _XlcAddLoader(_XlcGenericLoader, XlcHead);
+#endif
+
+#ifdef USE_DEFAULT_LOADER
+ _XlcAddLoader(_XlcDefaultLoader, XlcHead);
+#endif
+
+#ifdef USE_UTF8_LOADER
+ _XlcAddLoader(_XlcUtf8Loader, XlcHead);
+#endif
+
+#ifdef USE_EUC_LOADER
+ _XlcAddLoader(_XlcEucLoader, XlcHead);
+#endif
+
+#ifdef USE_SJIS_LOADER
+ _XlcAddLoader(_XlcSjisLoader, XlcHead);
+#endif
+
+#ifdef USE_JIS_LOADER
+ _XlcAddLoader(_XlcJisLoader, XlcHead);
+#endif
+
+#ifdef USE_DYNAMIC_LOADER
+ _XlcAddLoader(_XlcDynamicLoader, XlcHead);
+#endif
+
+#endif /* USE_DYNAMIC_LC */
+}
+
+void
+_XlcDeInitLoader(void)
+{
+
+#ifdef USE_DYNAMIC_LC
+ _XlcRemoveLoader(_XlcDynamicLoad);
+#else /* USE_DYNAMIC_LC */
+
+#ifdef USE_GENERIC_LOADER
+ _XlcRemoveLoader(_XlcGenericLoader);
+#endif
+
+#ifdef USE_DEFAULT_LOADER
+ _XlcRemoveLoader(_XlcDefaultLoader);
+#endif
+
+#ifdef USE_UTF8_LOADER
+ _XlcRemoveLoader(_XlcUtf8Loader);
+#endif
+
+#ifdef USE_EUC_LOADER
+ _XlcRemoveLoader(_XlcEucLoader);
+#endif
+
+#ifdef USE_SJIS_LOADER
+ _XlcRemoveLoader(_XlcSjisLoader);
+#endif
+
+#ifdef USE_JIS_LOADER
+ _XlcRemoveLoader(_XlcJisLoader);
+#endif
+
+#ifdef USE_DYNAMIC_LOADER
+ _XlcRemoveLoader(_XlcDynamicLoader);
+#endif
+
+#endif /* USE_DYNAMIC_LC */
+}
diff --git a/libX11/src/xlibi18n/lcPrTxt.c b/libX11/src/xlibi18n/lcPrTxt.c
index ae8f258c9..1b7627cf8 100644
--- a/libX11/src/xlibi18n/lcPrTxt.c
+++ b/libX11/src/xlibi18n/lcPrTxt.c
@@ -1,290 +1,290 @@
-/*
- * Copyright 1992, 1993 by TOSHIBA Corp.
- *
- * Permission to use, copy, modify, and distribute this software and its
- * documentation for any purpose and without fee is hereby granted, provided
- * that the above copyright notice appear in all copies and that both that
- * copyright notice and this permission notice appear in supporting
- * documentation, and that the name of TOSHIBA not be used in advertising
- * or publicity pertaining to distribution of the software without specific,
- * written prior permission. TOSHIBA make no representations about the
- * suitability of this software for any purpose. It is provided "as is"
- * without express or implied warranty.
- *
- * TOSHIBA DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
- * ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
- * TOSHIBA BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
- * ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
- * WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
- * ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
- * SOFTWARE.
- *
- * Author: Katsuhisa Yano TOSHIBA Corp.
- * mopi@osa.ilab.toshiba.co.jp
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-#include "XlcPubI.h"
-#include <X11/Xutil.h>
-#include <X11/Xatom.h>
-
-static XPointer *
-alloc_list(
- Bool is_wide_char,
- int count,
- int nitems)
-{
- if (is_wide_char) {
- wchar_t **wstr_list;
-
- wstr_list = (wchar_t **) Xmalloc(count * sizeof(wchar_t *));
- if (wstr_list == NULL)
- return (XPointer *) NULL;
-
- *wstr_list = (wchar_t *) Xmalloc(nitems * sizeof(wchar_t));
- if (*wstr_list == NULL) {
- Xfree(wstr_list);
- return (XPointer *) NULL;
- }
-
- return (XPointer *) wstr_list;
- } else {
- char **str_list;
-
- str_list = (char **) Xmalloc(count * sizeof(char *));
- if (str_list == NULL)
- return (XPointer *) NULL;
-
- *str_list = (char *) Xmalloc(nitems);
- if (*str_list == NULL) {
- Xfree(str_list);
- return (XPointer *) NULL;
- }
-
- return (XPointer *) str_list;
- }
-}
-
-static void
-copy_list(
- Bool is_wide_char,
- XPointer text,
- XPointer *list,
- int count)
-{
- int length;
-
- if (is_wide_char) {
- wchar_t *wc_text, *wstr, **wstr_list;
-
- wc_text = (wchar_t *) text;
- wstr_list = (wchar_t **) list;
-
- for (wstr = *wstr_list; count > 0; count--, wstr_list++) {
- _Xwcscpy(wstr, wc_text);
- *wstr_list = wstr;
- length = _Xwcslen(wstr) + 1;
- wstr += length;
- wc_text += length;
- }
- } else {
- char *mb_text, *str, **str_list;
-
- mb_text = (char *) text;
- str_list = (char **) list;
-
- for (str = *str_list; count > 0; count--, str_list++) {
- strcpy(str, mb_text);
- *str_list = str;
- length = strlen(str) + 1;
- str += length;
- mb_text += length;
- }
- }
-}
-
-static int
-_XTextPropertyToTextList(
- XLCd lcd,
- Display *dpy,
- const XTextProperty *text_prop,
- const char *to_type,
- XPointer **list_ret,
- int *count_ret)
-{
- XlcConv conv = NULL;
- const char *from_type;
- XPointer from, to, buf;
- char *str_ptr, *last_ptr;
- Atom encoding;
- int from_left, to_left, buf_len, ret, len;
- int unconv_num, nitems = text_prop->nitems;
- Bool is_wide_char = False, do_strcpy = False;
-
- if (strcmp(XlcNWideChar, to_type) == 0)
- is_wide_char = True;
-
- if (nitems <= 0) {
- *list_ret = NULL;
- *count_ret = 0;
- return Success;
- }
-
- if (text_prop->format != 8)
- return XConverterNotFound;
-
- encoding = text_prop->encoding;
- if (encoding == XA_STRING)
- from_type = XlcNString;
- else if (encoding == XInternAtom(dpy, "UTF8_STRING", False))
- from_type = XlcNUtf8String;
- else if (encoding == XInternAtom(dpy, "COMPOUND_TEXT", False))
- from_type = XlcNCompoundText;
- else if (encoding == XInternAtom(dpy, XLC_PUBLIC(lcd, encoding_name), False))
- from_type = XlcNMultiByte;
- else
- return XConverterNotFound;
-
- if (is_wide_char) {
- buf_len = (text_prop->nitems + 1) * sizeof(wchar_t);;
- } else {
- if (strcmp(to_type, XlcNUtf8String) == 0)
- buf_len = text_prop->nitems * 6 + 1;
- else
- buf_len = text_prop->nitems * XLC_PUBLIC(lcd, mb_cur_max) + 1;
- }
- buf = (XPointer) Xmalloc(buf_len);
- if (buf == NULL)
- return XNoMemory;
- to = buf;
- to_left = buf_len;
-
- /* can be XlcNMultiByte to XlcNMultiByte,
- or XlcNUtf8String to XlcNUtf8String */
- if (!strcmp(from_type, to_type)) {
- do_strcpy = True;
- } else {
- conv = _XlcOpenConverter(lcd, from_type, lcd, to_type);
- if (conv == NULL) {
- Xfree(buf);
- return XConverterNotFound;
- }
- }
-
- last_ptr = str_ptr = (char *) text_prop->value;
- unconv_num = *count_ret = 0;
-
- while (1) {
- if (nitems == 0 || *str_ptr == 0) {
- from = (XPointer) last_ptr;
- from_left = str_ptr - last_ptr;
- last_ptr = str_ptr;
-
- if (do_strcpy) {
- len = min(from_left, to_left);
- strncpy(to, from, len);
- from += len;
- to += len;
- from_left -= len;
- to_left -= len;
- ret = 0;
- } else {
- ret = _XlcConvert(conv, &from, &from_left, &to, &to_left, NULL, 0);
- }
-
- if (ret < 0)
- continue;
-
- unconv_num += ret;
- (*count_ret)++;
-
- if (nitems == 0)
- break;
- last_ptr = ++str_ptr;
- if (is_wide_char) {
- *((wchar_t *)to) = (wchar_t) 0;
- to += sizeof(wchar_t);
- to_left -= sizeof(wchar_t);
- } else {
- *((char *)to) = '\0';
- to++;
- to_left--;
- }
- if (! do_strcpy)
- _XlcResetConverter(conv);
- } else
- str_ptr++;
-
- nitems--;
- }
-
- if (! do_strcpy)
- _XlcCloseConverter(conv);
-
- if (is_wide_char) {
- *((wchar_t *) to) = (wchar_t) 0;
- to_left -= sizeof(wchar_t);
- } else {
- *((char *) to) = '\0';
- to_left--;
- }
-
- *list_ret = alloc_list(is_wide_char, *count_ret, buf_len - to_left);
- if (*list_ret)
- copy_list(is_wide_char, buf, *list_ret, *count_ret);
-
- Xfree(buf);
-
- return unconv_num;
-}
-
-int
-_XmbTextPropertyToTextList(
- XLCd lcd,
- Display *dpy,
- const XTextProperty *text_prop,
- char ***list_ret,
- int *count_ret)
-{
- return _XTextPropertyToTextList(lcd, dpy, text_prop, XlcNMultiByte,
- (XPointer **) list_ret, count_ret);
-}
-
-int
-_XwcTextPropertyToTextList(
- XLCd lcd,
- Display *dpy,
- const XTextProperty *text_prop,
- wchar_t ***list_ret,
- int *count_ret)
-{
- return _XTextPropertyToTextList(lcd, dpy, text_prop, XlcNWideChar,
- (XPointer **) list_ret, count_ret);
-}
-
-int
-_Xutf8TextPropertyToTextList(
- XLCd lcd,
- Display *dpy,
- const XTextProperty *text_prop,
- char ***list_ret,
- int *count_ret)
-{
- return _XTextPropertyToTextList(lcd, dpy, text_prop, XlcNUtf8String,
- (XPointer **) list_ret, count_ret);
-}
-
-void
-_XwcFreeStringList(
- XLCd lcd,
- wchar_t **list)
-{
- if (list) {
- if (*list)
- Xfree(*list);
- Xfree(list);
- }
-}
+/*
+ * Copyright 1992, 1993 by TOSHIBA Corp.
+ *
+ * Permission to use, copy, modify, and distribute this software and its
+ * documentation for any purpose and without fee is hereby granted, provided
+ * that the above copyright notice appear in all copies and that both that
+ * copyright notice and this permission notice appear in supporting
+ * documentation, and that the name of TOSHIBA not be used in advertising
+ * or publicity pertaining to distribution of the software without specific,
+ * written prior permission. TOSHIBA make no representations about the
+ * suitability of this software for any purpose. It is provided "as is"
+ * without express or implied warranty.
+ *
+ * TOSHIBA DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
+ * ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
+ * TOSHIBA BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
+ * ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
+ * WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
+ * ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
+ * SOFTWARE.
+ *
+ * Author: Katsuhisa Yano TOSHIBA Corp.
+ * mopi@osa.ilab.toshiba.co.jp
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+#include "XlcPubI.h"
+#include <X11/Xutil.h>
+#include <X11/Xatom.h>
+
+static XPointer *
+alloc_list(
+ Bool is_wide_char,
+ int count,
+ int nitems)
+{
+ if (is_wide_char) {
+ wchar_t **wstr_list;
+
+ wstr_list = (wchar_t **) Xmalloc(count * sizeof(wchar_t *));
+ if (wstr_list == NULL)
+ return (XPointer *) NULL;
+
+ *wstr_list = (wchar_t *) Xmalloc(nitems * sizeof(wchar_t));
+ if (*wstr_list == NULL) {
+ Xfree(wstr_list);
+ return (XPointer *) NULL;
+ }
+
+ return (XPointer *) wstr_list;
+ } else {
+ char **str_list;
+
+ str_list = (char **) Xmalloc(count * sizeof(char *));
+ if (str_list == NULL)
+ return (XPointer *) NULL;
+
+ *str_list = (char *) Xmalloc(nitems);
+ if (*str_list == NULL) {
+ Xfree(str_list);
+ return (XPointer *) NULL;
+ }
+
+ return (XPointer *) str_list;
+ }
+}
+
+static void
+copy_list(
+ Bool is_wide_char,
+ XPointer text,
+ XPointer *list,
+ int count)
+{
+ int length;
+
+ if (is_wide_char) {
+ wchar_t *wc_text, *wstr, **wstr_list;
+
+ wc_text = (wchar_t *) text;
+ wstr_list = (wchar_t **) list;
+
+ for (wstr = *wstr_list; count > 0; count--, wstr_list++) {
+ _Xwcscpy(wstr, wc_text);
+ *wstr_list = wstr;
+ length = _Xwcslen(wstr) + 1;
+ wstr += length;
+ wc_text += length;
+ }
+ } else {
+ char *mb_text, *str, **str_list;
+
+ mb_text = (char *) text;
+ str_list = (char **) list;
+
+ for (str = *str_list; count > 0; count--, str_list++) {
+ strcpy(str, mb_text);
+ *str_list = str;
+ length = strlen(str) + 1;
+ str += length;
+ mb_text += length;
+ }
+ }
+}
+
+static int
+_XTextPropertyToTextList(
+ XLCd lcd,
+ Display *dpy,
+ const XTextProperty *text_prop,
+ const char *to_type,
+ XPointer **list_ret,
+ int *count_ret)
+{
+ XlcConv conv = NULL;
+ const char *from_type;
+ XPointer from, to, buf;
+ char *str_ptr, *last_ptr;
+ Atom encoding;
+ int from_left, to_left, buf_len, ret, len;
+ int unconv_num, nitems = text_prop->nitems;
+ Bool is_wide_char = False, do_strcpy = False;
+
+ if (strcmp(XlcNWideChar, to_type) == 0)
+ is_wide_char = True;
+
+ if (nitems <= 0) {
+ *list_ret = NULL;
+ *count_ret = 0;
+ return Success;
+ }
+
+ if (text_prop->format != 8)
+ return XConverterNotFound;
+
+ encoding = text_prop->encoding;
+ if (encoding == XA_STRING)
+ from_type = XlcNString;
+ else if (encoding == XInternAtom(dpy, "UTF8_STRING", False))
+ from_type = XlcNUtf8String;
+ else if (encoding == XInternAtom(dpy, "COMPOUND_TEXT", False))
+ from_type = XlcNCompoundText;
+ else if (encoding == XInternAtom(dpy, XLC_PUBLIC(lcd, encoding_name), False))
+ from_type = XlcNMultiByte;
+ else
+ return XConverterNotFound;
+
+ if (is_wide_char) {
+ buf_len = (text_prop->nitems + 1) * sizeof(wchar_t);;
+ } else {
+ if (strcmp(to_type, XlcNUtf8String) == 0)
+ buf_len = text_prop->nitems * 6 + 1;
+ else
+ buf_len = text_prop->nitems * XLC_PUBLIC(lcd, mb_cur_max) + 1;
+ }
+ buf = (XPointer) Xmalloc(buf_len);
+ if (buf == NULL)
+ return XNoMemory;
+ to = buf;
+ to_left = buf_len;
+
+ /* can be XlcNMultiByte to XlcNMultiByte,
+ or XlcNUtf8String to XlcNUtf8String */
+ if (!strcmp(from_type, to_type)) {
+ do_strcpy = True;
+ } else {
+ conv = _XlcOpenConverter(lcd, from_type, lcd, to_type);
+ if (conv == NULL) {
+ Xfree(buf);
+ return XConverterNotFound;
+ }
+ }
+
+ last_ptr = str_ptr = (char *) text_prop->value;
+ unconv_num = *count_ret = 0;
+
+ while (1) {
+ if (nitems == 0 || *str_ptr == 0) {
+ from = (XPointer) last_ptr;
+ from_left = str_ptr - last_ptr;
+ last_ptr = str_ptr;
+
+ if (do_strcpy) {
+ len = min(from_left, to_left);
+ strncpy(to, from, len);
+ from += len;
+ to += len;
+ from_left -= len;
+ to_left -= len;
+ ret = 0;
+ } else {
+ ret = _XlcConvert(conv, &from, &from_left, &to, &to_left, NULL, 0);
+ }
+
+ if (ret < 0)
+ continue;
+
+ unconv_num += ret;
+ (*count_ret)++;
+
+ if (nitems == 0)
+ break;
+ last_ptr = ++str_ptr;
+ if (is_wide_char) {
+ *((wchar_t *)to) = (wchar_t) 0;
+ to += sizeof(wchar_t);
+ to_left -= sizeof(wchar_t);
+ } else {
+ *((char *)to) = '\0';
+ to++;
+ to_left--;
+ }
+ if (! do_strcpy)
+ _XlcResetConverter(conv);
+ } else
+ str_ptr++;
+
+ nitems--;
+ }
+
+ if (! do_strcpy)
+ _XlcCloseConverter(conv);
+
+ if (is_wide_char) {
+ *((wchar_t *) to) = (wchar_t) 0;
+ to_left -= sizeof(wchar_t);
+ } else {
+ *((char *) to) = '\0';
+ to_left--;
+ }
+
+ *list_ret = alloc_list(is_wide_char, *count_ret, buf_len - to_left);
+ if (*list_ret)
+ copy_list(is_wide_char, buf, *list_ret, *count_ret);
+
+ Xfree(buf);
+
+ return unconv_num;
+}
+
+int
+_XmbTextPropertyToTextList(
+ XLCd lcd,
+ Display *dpy,
+ const XTextProperty *text_prop,
+ char ***list_ret,
+ int *count_ret)
+{
+ return _XTextPropertyToTextList(lcd, dpy, text_prop, XlcNMultiByte,
+ (XPointer **) list_ret, count_ret);
+}
+
+int
+_XwcTextPropertyToTextList(
+ XLCd lcd,
+ Display *dpy,
+ const XTextProperty *text_prop,
+ wchar_t ***list_ret,
+ int *count_ret)
+{
+ return _XTextPropertyToTextList(lcd, dpy, text_prop, XlcNWideChar,
+ (XPointer **) list_ret, count_ret);
+}
+
+int
+_Xutf8TextPropertyToTextList(
+ XLCd lcd,
+ Display *dpy,
+ const XTextProperty *text_prop,
+ char ***list_ret,
+ int *count_ret)
+{
+ return _XTextPropertyToTextList(lcd, dpy, text_prop, XlcNUtf8String,
+ (XPointer **) list_ret, count_ret);
+}
+
+void
+_XwcFreeStringList(
+ XLCd lcd,
+ wchar_t **list)
+{
+ if (list) {
+ if (*list)
+ Xfree(*list);
+ Xfree(list);
+ }
+}
diff --git a/libX11/src/xlibi18n/lcPubWrap.c b/libX11/src/xlibi18n/lcPubWrap.c
index bf4fa4b7a..2a5ac08d8 100644
--- a/libX11/src/xlibi18n/lcPubWrap.c
+++ b/libX11/src/xlibi18n/lcPubWrap.c
@@ -1,99 +1,99 @@
-/*
- * Copyright 1992, 1993 by TOSHIBA Corp.
- *
- * Permission to use, copy, modify, and distribute this software and its
- * documentation for any purpose and without fee is hereby granted, provided
- * that the above copyright notice appear in all copies and that both that
- * copyright notice and this permission notice appear in supporting
- * documentation, and that the name of TOSHIBA not be used in advertising
- * or publicity pertaining to distribution of the software without specific,
- * written prior permission. TOSHIBA make no representations about the
- * suitability of this software for any purpose. It is provided "as is"
- * without express or implied warranty.
- *
- * TOSHIBA DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
- * ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
- * TOSHIBA BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
- * ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
- * WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
- * ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
- * SOFTWARE.
- *
- * Author: Katsuhisa Yano TOSHIBA Corp.
- * mopi@osa.ilab.toshiba.co.jp
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-#include "XlcPubI.h"
-
-char *
-_XGetLCValues(XLCd lcd, ...)
-{
- va_list var;
- XlcArgList args;
- char *ret;
- int num_args;
- XLCdPublicMethodsPart *methods = XLC_PUBLIC_METHODS(lcd);
-
- va_start(var, lcd);
- _XlcCountVaList(var, &num_args);
- va_end(var);
-
- va_start(var, lcd);
- _XlcVaToArgList(var, num_args, &args);
- va_end(var);
-
- if (args == (XlcArgList) NULL)
- return (char *) NULL;
-
- ret = (*methods->get_values)(lcd, args, num_args);
-
- Xfree(args);
-
- return ret;
-}
-
-void
-_XlcDestroyLC(
- XLCd lcd)
-{
- XLCdPublicMethods methods = (XLCdPublicMethods) lcd->methods;
-
- (*methods->pub.destroy)(lcd);
-}
-
-XLCd
-_XlcCreateLC(
- const char *name,
- XLCdMethods methods)
-{
- XLCdPublicMethods pub_methods = (XLCdPublicMethods) methods;
- XLCd lcd;
-
- lcd = (*pub_methods->pub.create)(name, methods);
- if (lcd == NULL)
- return (XLCd) NULL;
-
- if (lcd->core->name == NULL) {
- lcd->core->name = (char*) Xmalloc(strlen(name) + 1);
- if (lcd->core->name == NULL)
- goto err;
- strcpy(lcd->core->name, name);
- }
-
- if (lcd->methods == NULL)
- lcd->methods = methods;
-
- if ((*pub_methods->pub.initialize)(lcd) == False)
- goto err;
-
- return lcd;
-
-err:
- _XlcDestroyLC(lcd);
-
- return (XLCd) NULL;
-}
+/*
+ * Copyright 1992, 1993 by TOSHIBA Corp.
+ *
+ * Permission to use, copy, modify, and distribute this software and its
+ * documentation for any purpose and without fee is hereby granted, provided
+ * that the above copyright notice appear in all copies and that both that
+ * copyright notice and this permission notice appear in supporting
+ * documentation, and that the name of TOSHIBA not be used in advertising
+ * or publicity pertaining to distribution of the software without specific,
+ * written prior permission. TOSHIBA make no representations about the
+ * suitability of this software for any purpose. It is provided "as is"
+ * without express or implied warranty.
+ *
+ * TOSHIBA DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
+ * ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
+ * TOSHIBA BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
+ * ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
+ * WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
+ * ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
+ * SOFTWARE.
+ *
+ * Author: Katsuhisa Yano TOSHIBA Corp.
+ * mopi@osa.ilab.toshiba.co.jp
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+#include "XlcPubI.h"
+
+char *
+_XGetLCValues(XLCd lcd, ...)
+{
+ va_list var;
+ XlcArgList args;
+ char *ret;
+ int num_args;
+ XLCdPublicMethodsPart *methods = XLC_PUBLIC_METHODS(lcd);
+
+ va_start(var, lcd);
+ _XlcCountVaList(var, &num_args);
+ va_end(var);
+
+ va_start(var, lcd);
+ _XlcVaToArgList(var, num_args, &args);
+ va_end(var);
+
+ if (args == (XlcArgList) NULL)
+ return (char *) NULL;
+
+ ret = (*methods->get_values)(lcd, args, num_args);
+
+ Xfree(args);
+
+ return ret;
+}
+
+void
+_XlcDestroyLC(
+ XLCd lcd)
+{
+ XLCdPublicMethods methods = (XLCdPublicMethods) lcd->methods;
+
+ (*methods->pub.destroy)(lcd);
+}
+
+XLCd
+_XlcCreateLC(
+ const char *name,
+ XLCdMethods methods)
+{
+ XLCdPublicMethods pub_methods = (XLCdPublicMethods) methods;
+ XLCd lcd;
+
+ lcd = (*pub_methods->pub.create)(name, methods);
+ if (lcd == NULL)
+ return (XLCd) NULL;
+
+ if (lcd->core->name == NULL) {
+ lcd->core->name = (char*) Xmalloc(strlen(name) + 1);
+ if (lcd->core->name == NULL)
+ goto err;
+ strcpy(lcd->core->name, name);
+ }
+
+ if (lcd->methods == NULL)
+ lcd->methods = methods;
+
+ if ((*pub_methods->pub.initialize)(lcd) == False)
+ goto err;
+
+ return lcd;
+
+err:
+ _XlcDestroyLC(lcd);
+
+ return (XLCd) NULL;
+}
diff --git a/libX11/src/xlibi18n/lcRM.c b/libX11/src/xlibi18n/lcRM.c
index b83d0cb62..9f72504ee 100644
--- a/libX11/src/xlibi18n/lcRM.c
+++ b/libX11/src/xlibi18n/lcRM.c
@@ -1,224 +1,224 @@
-/*
- * Copyright 1992, 1993 by TOSHIBA Corp.
- *
- * Permission to use, copy, modify, and distribute this software and its
- * documentation for any purpose and without fee is hereby granted, provided
- * that the above copyright notice appear in all copies and that both that
- * copyright notice and this permission notice appear in supporting
- * documentation, and that the name of TOSHIBA not be used in advertising
- * or publicity pertaining to distribution of the software without specific,
- * written prior permission. TOSHIBA make no representations about the
- * suitability of this software for any purpose. It is provided "as is"
- * without express or implied warranty.
- *
- * TOSHIBA DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
- * ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
- * TOSHIBA BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
- * ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
- * WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
- * ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
- * SOFTWARE.
- *
- * Author: Katsuhisa Yano TOSHIBA Corp.
- * mopi@osa.ilab.toshiba.co.jp
- * Bug fixes: Bruno Haible XFree86 Inc.
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-#include "XlcPubI.h"
-#include <stdio.h>
-
-/*
- * Default implementation of methods for Xrm parsing.
- */
-
-/* ======================= Unibyte implementation ======================= */
-
-/* Only for efficiency, to speed up things. */
-
-/* This implementation must keep the locale, for lcname. */
-typedef struct _UbStateRec {
- XLCd lcd;
-} UbStateRec, *UbState;
-
-/* Sets the state to the initial state.
- Initiates a sequence of calls to mbchar. */
-static void
-ub_mbinit(
- XPointer state)
-{
-}
-
-/* Transforms one multibyte character, and return a 'char' in the same
- parsing class. Returns the number of consumed bytes in *lenp. */
-static char
-ub_mbchar(
- XPointer state,
- const char *str,
- int *lenp)
-{
- *lenp = 1;
- return *str;
-}
-
-/* Terminates a sequence of calls to mbchar. */
-static void
-ub_mbfinish(
- XPointer state)
-{
-}
-
-/* Returns the name of the state's locale, as a static string. */
-static const char *
-ub_lcname(
- XPointer state)
-{
- return ((UbState) state)->lcd->core->name;
-}
-
-/* Frees the state, which was allocated by _XrmDefaultInitParseInfo. */
-static void
-ub_destroy(
- XPointer state)
-{
- _XCloseLC(((UbState) state)->lcd);
- Xfree((char *) state);
-}
-
-static const XrmMethodsRec ub_methods = {
- ub_mbinit,
- ub_mbchar,
- ub_mbfinish,
- ub_lcname,
- ub_destroy
-};
-
-/* ======================= Multibyte implementation ======================= */
-
-/* This implementation uses an XlcConv from XlcNMultiByte to XlcNWideChar. */
-typedef struct _MbStateRec {
- XLCd lcd;
- XlcConv conv;
-} MbStateRec, *MbState;
-
-/* Sets the state to the initial state.
- Initiates a sequence of calls to mbchar. */
-static void
-mb_mbinit(
- XPointer state)
-{
- _XlcResetConverter(((MbState) state)->conv);
-}
-
-/* Transforms one multibyte character, and return a 'char' in the same
- parsing class. Returns the number of consumed bytes in *lenp. */
-static char
-mb_mbchar(
- XPointer state,
- const char *str,
- int *lenp)
-{
- XlcConv conv = ((MbState) state)->conv;
- const char *from;
- wchar_t *to, wc;
- int cur_max, i, from_left, to_left, ret;
-
- cur_max = XLC_PUBLIC(((MbState) state)->lcd, mb_cur_max);
-
- from = str;
- /* Determine from_left. Avoid overrun error which could occur if
- from_left > strlen(str). */
- from_left = cur_max;
- for (i = 0; i < cur_max; i++)
- if (str[i] == '\0') {
- from_left = i;
- break;
- }
- *lenp = from_left;
-
- to = &wc;
- to_left = 1;
-
- ret = _XlcConvert(conv, (XPointer *) &from, &from_left,
- (XPointer *) &to, &to_left, NULL, 0);
- *lenp -= from_left;
-
- if (ret < 0 || to_left > 0) {
- /* Invalid or incomplete multibyte character seen. */
- *lenp = 1;
- return 0x7f;
- }
- /* Return a 'char' equivalent to wc. */
- return (wc >= 0 && wc <= 0x7f ? wc : 0x7f);
-}
-
-/* Terminates a sequence of calls to mbchar. */
-static void
-mb_mbfinish(
- XPointer state)
-{
-}
-
-/* Returns the name of the state's locale, as a static string. */
-static const char *
-mb_lcname(
- XPointer state)
-{
- return ((MbState) state)->lcd->core->name;
-}
-
-/* Frees the state, which was allocated by _XrmDefaultInitParseInfo. */
-static void
-mb_destroy(
- XPointer state)
-{
- _XlcCloseConverter(((MbState) state)->conv);
- _XCloseLC(((MbState) state)->lcd);
- Xfree((char *) state);
-}
-
-static const XrmMethodsRec mb_methods = {
- mb_mbinit,
- mb_mbchar,
- mb_mbfinish,
- mb_lcname,
- mb_destroy
-};
-
-/* ======================= Exported function ======================= */
-
-XrmMethods
-_XrmDefaultInitParseInfo(
- XLCd lcd,
- XPointer *rm_state)
-{
- if (XLC_PUBLIC(lcd, mb_cur_max) == 1) {
- /* Unibyte case. */
- UbState state = (UbState) Xmalloc(sizeof(UbStateRec));
- if (state == NULL)
- return (XrmMethods) NULL;
-
- state->lcd = lcd;
-
- *rm_state = (XPointer) state;
- return &ub_methods;
- } else {
- /* Multibyte case. */
- MbState state = (MbState) Xmalloc(sizeof(MbStateRec));
- if (state == NULL)
- return (XrmMethods) NULL;
-
- state->lcd = lcd;
- state->conv = _XlcOpenConverter(lcd, XlcNMultiByte, lcd, XlcNWideChar);
- if (state->conv == NULL) {
- Xfree((char *) state);
- return (XrmMethods) NULL;
- }
-
- *rm_state = (XPointer) state;
- return &mb_methods;
- }
-}
+/*
+ * Copyright 1992, 1993 by TOSHIBA Corp.
+ *
+ * Permission to use, copy, modify, and distribute this software and its
+ * documentation for any purpose and without fee is hereby granted, provided
+ * that the above copyright notice appear in all copies and that both that
+ * copyright notice and this permission notice appear in supporting
+ * documentation, and that the name of TOSHIBA not be used in advertising
+ * or publicity pertaining to distribution of the software without specific,
+ * written prior permission. TOSHIBA make no representations about the
+ * suitability of this software for any purpose. It is provided "as is"
+ * without express or implied warranty.
+ *
+ * TOSHIBA DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
+ * ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
+ * TOSHIBA BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
+ * ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
+ * WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
+ * ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
+ * SOFTWARE.
+ *
+ * Author: Katsuhisa Yano TOSHIBA Corp.
+ * mopi@osa.ilab.toshiba.co.jp
+ * Bug fixes: Bruno Haible XFree86 Inc.
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+#include "XlcPubI.h"
+#include <stdio.h>
+
+/*
+ * Default implementation of methods for Xrm parsing.
+ */
+
+/* ======================= Unibyte implementation ======================= */
+
+/* Only for efficiency, to speed up things. */
+
+/* This implementation must keep the locale, for lcname. */
+typedef struct _UbStateRec {
+ XLCd lcd;
+} UbStateRec, *UbState;
+
+/* Sets the state to the initial state.
+ Initiates a sequence of calls to mbchar. */
+static void
+ub_mbinit(
+ XPointer state)
+{
+}
+
+/* Transforms one multibyte character, and return a 'char' in the same
+ parsing class. Returns the number of consumed bytes in *lenp. */
+static char
+ub_mbchar(
+ XPointer state,
+ const char *str,
+ int *lenp)
+{
+ *lenp = 1;
+ return *str;
+}
+
+/* Terminates a sequence of calls to mbchar. */
+static void
+ub_mbfinish(
+ XPointer state)
+{
+}
+
+/* Returns the name of the state's locale, as a static string. */
+static const char *
+ub_lcname(
+ XPointer state)
+{
+ return ((UbState) state)->lcd->core->name;
+}
+
+/* Frees the state, which was allocated by _XrmDefaultInitParseInfo. */
+static void
+ub_destroy(
+ XPointer state)
+{
+ _XCloseLC(((UbState) state)->lcd);
+ Xfree((char *) state);
+}
+
+static const XrmMethodsRec ub_methods = {
+ ub_mbinit,
+ ub_mbchar,
+ ub_mbfinish,
+ ub_lcname,
+ ub_destroy
+};
+
+/* ======================= Multibyte implementation ======================= */
+
+/* This implementation uses an XlcConv from XlcNMultiByte to XlcNWideChar. */
+typedef struct _MbStateRec {
+ XLCd lcd;
+ XlcConv conv;
+} MbStateRec, *MbState;
+
+/* Sets the state to the initial state.
+ Initiates a sequence of calls to mbchar. */
+static void
+mb_mbinit(
+ XPointer state)
+{
+ _XlcResetConverter(((MbState) state)->conv);
+}
+
+/* Transforms one multibyte character, and return a 'char' in the same
+ parsing class. Returns the number of consumed bytes in *lenp. */
+static char
+mb_mbchar(
+ XPointer state,
+ const char *str,
+ int *lenp)
+{
+ XlcConv conv = ((MbState) state)->conv;
+ const char *from;
+ wchar_t *to, wc;
+ int cur_max, i, from_left, to_left, ret;
+
+ cur_max = XLC_PUBLIC(((MbState) state)->lcd, mb_cur_max);
+
+ from = str;
+ /* Determine from_left. Avoid overrun error which could occur if
+ from_left > strlen(str). */
+ from_left = cur_max;
+ for (i = 0; i < cur_max; i++)
+ if (str[i] == '\0') {
+ from_left = i;
+ break;
+ }
+ *lenp = from_left;
+
+ to = &wc;
+ to_left = 1;
+
+ ret = _XlcConvert(conv, (XPointer *) &from, &from_left,
+ (XPointer *) &to, &to_left, NULL, 0);
+ *lenp -= from_left;
+
+ if (ret < 0 || to_left > 0) {
+ /* Invalid or incomplete multibyte character seen. */
+ *lenp = 1;
+ return 0x7f;
+ }
+ /* Return a 'char' equivalent to wc. */
+ return (wc >= 0 && wc <= 0x7f ? wc : 0x7f);
+}
+
+/* Terminates a sequence of calls to mbchar. */
+static void
+mb_mbfinish(
+ XPointer state)
+{
+}
+
+/* Returns the name of the state's locale, as a static string. */
+static const char *
+mb_lcname(
+ XPointer state)
+{
+ return ((MbState) state)->lcd->core->name;
+}
+
+/* Frees the state, which was allocated by _XrmDefaultInitParseInfo. */
+static void
+mb_destroy(
+ XPointer state)
+{
+ _XlcCloseConverter(((MbState) state)->conv);
+ _XCloseLC(((MbState) state)->lcd);
+ Xfree((char *) state);
+}
+
+static const XrmMethodsRec mb_methods = {
+ mb_mbinit,
+ mb_mbchar,
+ mb_mbfinish,
+ mb_lcname,
+ mb_destroy
+};
+
+/* ======================= Exported function ======================= */
+
+XrmMethods
+_XrmDefaultInitParseInfo(
+ XLCd lcd,
+ XPointer *rm_state)
+{
+ if (XLC_PUBLIC(lcd, mb_cur_max) == 1) {
+ /* Unibyte case. */
+ UbState state = (UbState) Xmalloc(sizeof(UbStateRec));
+ if (state == NULL)
+ return (XrmMethods) NULL;
+
+ state->lcd = lcd;
+
+ *rm_state = (XPointer) state;
+ return &ub_methods;
+ } else {
+ /* Multibyte case. */
+ MbState state = (MbState) Xmalloc(sizeof(MbStateRec));
+ if (state == NULL)
+ return (XrmMethods) NULL;
+
+ state->lcd = lcd;
+ state->conv = _XlcOpenConverter(lcd, XlcNMultiByte, lcd, XlcNWideChar);
+ if (state->conv == NULL) {
+ Xfree((char *) state);
+ return (XrmMethods) NULL;
+ }
+
+ *rm_state = (XPointer) state;
+ return &mb_methods;
+ }
+}
diff --git a/libX11/src/xlibi18n/lcStd.c b/libX11/src/xlibi18n/lcStd.c
index 08ed57a1a..87f6b60b3 100644
--- a/libX11/src/xlibi18n/lcStd.c
+++ b/libX11/src/xlibi18n/lcStd.c
@@ -1,368 +1,368 @@
-/*
- * Copyright 1992, 1993 by TOSHIBA Corp.
- *
- * Permission to use, copy, modify, and distribute this software and its
- * documentation for any purpose and without fee is hereby granted, provided
- * that the above copyright notice appear in all copies and that both that
- * copyright notice and this permission notice appear in supporting
- * documentation, and that the name of TOSHIBA not be used in advertising
- * or publicity pertaining to distribution of the software without specific,
- * written prior permission. TOSHIBA make no representations about the
- * suitability of this software for any purpose. It is provided "as is"
- * without express or implied warranty.
- *
- * TOSHIBA DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
- * ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
- * TOSHIBA BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
- * ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
- * WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
- * ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
- * SOFTWARE.
- *
- * Author: Katsuhisa Yano TOSHIBA Corp.
- * mopi@osa.ilab.toshiba.co.jp
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-#include "XlcPubI.h"
-
-int
-_Xlcmbtowc(
- XLCd lcd,
- wchar_t *wstr,
- char *str,
- int len)
-{
- static XLCd last_lcd = NULL;
- static XlcConv conv = NULL;
- XPointer from, to;
- int from_left, to_left;
- wchar_t tmp_wc;
-
- if (lcd == NULL) {
- lcd = _XlcCurrentLC();
- if (lcd == NULL)
- return -1;
- }
- if (str == NULL)
- return XLC_PUBLIC(lcd, is_state_depend);
-
- if (conv && lcd != last_lcd) {
- _XlcCloseConverter(conv);
- conv = NULL;
- }
-
- last_lcd = lcd;
-
- if (conv == NULL) {
- conv = _XlcOpenConverter(lcd, XlcNMultiByte, lcd, XlcNWideChar);
- if (conv == NULL)
- return -1;
- }
-
- from = (XPointer) str;
- from_left = len;
- to = (XPointer) (wstr ? wstr : &tmp_wc);
- to_left = 1;
-
- if (_XlcConvert(conv, &from, &from_left, &to, &to_left, NULL, 0) < 0)
- return -1;
-
- return (len - from_left);
-}
-
-int
-_Xlcwctomb(
- XLCd lcd,
- char *str,
- wchar_t wc)
-{
- static XLCd last_lcd = NULL;
- static XlcConv conv = NULL;
- XPointer from, to;
- int from_left, to_left, length;
-
- if (lcd == NULL) {
- lcd = _XlcCurrentLC();
- if (lcd == NULL)
- return -1;
- }
- if (str == NULL)
- return XLC_PUBLIC(lcd, is_state_depend);
-
- if (conv && lcd != last_lcd) {
- _XlcCloseConverter(conv);
- conv = NULL;
- }
-
- last_lcd = lcd;
-
- if (conv == NULL) {
- conv = _XlcOpenConverter(lcd, XlcNWideChar, lcd, XlcNMultiByte);
- if (conv == NULL)
- return -1;
- }
-
- from = (XPointer) &wc;
- from_left = 1;
- to = (XPointer) str;
- length = to_left = XLC_PUBLIC(lcd, mb_cur_max);
-
- if (_XlcConvert(conv, &from, &from_left, &to, &to_left, NULL, 0) < 0)
- return -1;
-
- return (length - to_left);
-}
-
-int
-_Xlcmbstowcs(
- XLCd lcd,
- wchar_t *wstr,
- char *str,
- int len)
-{
- XlcConv conv;
- XPointer from, to;
- int from_left, to_left, ret;
-
- if (lcd == NULL) {
- lcd = _XlcCurrentLC();
- if (lcd == NULL)
- return -1;
- }
-
- conv = _XlcOpenConverter(lcd, XlcNMultiByte, lcd, XlcNWideChar);
- if (conv == NULL)
- return -1;
-
- from = (XPointer) str;
- from_left = strlen(str);
- to = (XPointer) wstr;
- to_left = len;
-
- if (_XlcConvert(conv, &from, &from_left, &to, &to_left, NULL, 0) < 0)
- ret = -1;
- else {
- ret = len - to_left;
- if (wstr && to_left > 0)
- wstr[ret] = (wchar_t) 0;
- }
-
- _XlcCloseConverter(conv);
-
- return ret;
-}
-
-int
-_Xlcwcstombs(
- XLCd lcd,
- char *str,
- wchar_t *wstr,
- int len)
-{
- XlcConv conv;
- XPointer from, to;
- int from_left, to_left, ret;
-
- if (lcd == NULL) {
- lcd = _XlcCurrentLC();
- if (lcd == NULL)
- return -1;
- }
-
- conv = _XlcOpenConverter(lcd, XlcNWideChar, lcd, XlcNMultiByte);
- if (conv == NULL)
- return -1;
-
- from = (XPointer) wstr;
- from_left = _Xwcslen(wstr);
- to = (XPointer) str;
- to_left = len;
-
- if (_XlcConvert(conv, &from, &from_left, &to, &to_left, NULL, 0) < 0)
- ret = -1;
- else {
- ret = len - to_left;
- if (str && to_left > 0)
- str[ret] = '\0';
- }
-
- _XlcCloseConverter(conv);
-
- return ret;
-}
-
-
-int
-_Xmbtowc(
- wchar_t *wstr,
-#ifdef ISC
- char const *str,
- size_t len
-#else
- char *str,
- int len
-#endif
- )
-{
- return _Xlcmbtowc((XLCd) NULL, wstr, str, len);
-}
-
-int
-_Xmblen(
-#ifdef ISC
- char const *str,
- size_t len
-#else
- char *str,
- int len
-#endif
- )
-{
- return _Xmbtowc((wchar_t *) NULL, str, len);
-}
-
-int
-_Xwctomb(
- char *str,
- wchar_t wc)
-{
- return _Xlcwctomb((XLCd) NULL, str, wc);
-}
-
-int
-_Xmbstowcs(
- wchar_t *wstr,
- char *str,
- int len)
-{
- return _Xlcmbstowcs((XLCd) NULL, wstr, str, len);
-}
-
-int
-_Xwcstombs(
- char *str,
- wchar_t *wstr,
- int len)
-{
- return _Xlcwcstombs((XLCd) NULL, str, wstr, len);
-}
-
-wchar_t *
-_Xwcscpy(
- register wchar_t *wstr1, register wchar_t *wstr2)
-{
- wchar_t *wstr_tmp = wstr1;
-
- while ((*wstr1++ = *wstr2++))
- ;
-
- return wstr_tmp;
-}
-
-wchar_t *
-_Xwcsncpy(
- register wchar_t *wstr1, register wchar_t *wstr2,
- register int len)
-{
- wchar_t *wstr_tmp = wstr1;
-
- while (len-- > 0)
- if (!(*wstr1++ = *wstr2++))
- break;
-
- while (len-- > 0)
- *wstr1++ = (wchar_t) 0;
-
- return wstr_tmp;
-}
-
-int
-_Xwcslen(
- register wchar_t *wstr)
-{
- register wchar_t *wstr_ptr = wstr;
-
- while (*wstr_ptr)
- wstr_ptr++;
-
- return wstr_ptr - wstr;
-}
-
-int
-_Xwcscmp(
- register wchar_t *wstr1, register wchar_t *wstr2)
-{
- for ( ; *wstr1 && *wstr2; wstr1++, wstr2++)
- if (*wstr1 != *wstr2)
- break;
-
- return *wstr1 - *wstr2;
-}
-
-int
-_Xwcsncmp(
- register wchar_t *wstr1, register wchar_t *wstr2,
- register int len)
-{
- for ( ; *wstr1 && *wstr2 && len > 0; wstr1++, wstr2++, len--)
- if (*wstr1 != *wstr2)
- break;
-
- if (len <= 0)
- return 0;
-
- return *wstr1 - *wstr2;
-}
-
-
-int
-_Xlcmbstoutf8(
- XLCd lcd,
- char *ustr,
- const char *str,
- int len)
-{
- XlcConv conv;
- XPointer from, to;
- int from_left, to_left, ret;
-
- if (lcd == NULL) {
- lcd = _XlcCurrentLC();
- if (lcd == NULL)
- return -1;
- }
-
- conv = _XlcOpenConverter(lcd, XlcNMultiByte, lcd, XlcNUtf8String);
- if (conv == NULL)
- return -1;
-
- from = (XPointer) str;
- from_left = strlen(str);
- to = (XPointer) ustr;
- to_left = len;
-
- if (_XlcConvert(conv, &from, &from_left, &to, &to_left, NULL, 0) < 0)
- ret = -1;
- else {
- ret = len - to_left;
- if (ustr && to_left > 0)
- ustr[ret] = '\0';
- }
-
- _XlcCloseConverter(conv);
-
- return ret;
-}
-
-int
-_Xmbstoutf8(
- char *ustr,
- const char *str,
- int len)
-{
- return _Xlcmbstoutf8((XLCd) NULL, ustr, str, len);
-}
+/*
+ * Copyright 1992, 1993 by TOSHIBA Corp.
+ *
+ * Permission to use, copy, modify, and distribute this software and its
+ * documentation for any purpose and without fee is hereby granted, provided
+ * that the above copyright notice appear in all copies and that both that
+ * copyright notice and this permission notice appear in supporting
+ * documentation, and that the name of TOSHIBA not be used in advertising
+ * or publicity pertaining to distribution of the software without specific,
+ * written prior permission. TOSHIBA make no representations about the
+ * suitability of this software for any purpose. It is provided "as is"
+ * without express or implied warranty.
+ *
+ * TOSHIBA DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
+ * ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
+ * TOSHIBA BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
+ * ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
+ * WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
+ * ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
+ * SOFTWARE.
+ *
+ * Author: Katsuhisa Yano TOSHIBA Corp.
+ * mopi@osa.ilab.toshiba.co.jp
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+#include "XlcPubI.h"
+
+int
+_Xlcmbtowc(
+ XLCd lcd,
+ wchar_t *wstr,
+ char *str,
+ int len)
+{
+ static XLCd last_lcd = NULL;
+ static XlcConv conv = NULL;
+ XPointer from, to;
+ int from_left, to_left;
+ wchar_t tmp_wc;
+
+ if (lcd == NULL) {
+ lcd = _XlcCurrentLC();
+ if (lcd == NULL)
+ return -1;
+ }
+ if (str == NULL)
+ return XLC_PUBLIC(lcd, is_state_depend);
+
+ if (conv && lcd != last_lcd) {
+ _XlcCloseConverter(conv);
+ conv = NULL;
+ }
+
+ last_lcd = lcd;
+
+ if (conv == NULL) {
+ conv = _XlcOpenConverter(lcd, XlcNMultiByte, lcd, XlcNWideChar);
+ if (conv == NULL)
+ return -1;
+ }
+
+ from = (XPointer) str;
+ from_left = len;
+ to = (XPointer) (wstr ? wstr : &tmp_wc);
+ to_left = 1;
+
+ if (_XlcConvert(conv, &from, &from_left, &to, &to_left, NULL, 0) < 0)
+ return -1;
+
+ return (len - from_left);
+}
+
+int
+_Xlcwctomb(
+ XLCd lcd,
+ char *str,
+ wchar_t wc)
+{
+ static XLCd last_lcd = NULL;
+ static XlcConv conv = NULL;
+ XPointer from, to;
+ int from_left, to_left, length;
+
+ if (lcd == NULL) {
+ lcd = _XlcCurrentLC();
+ if (lcd == NULL)
+ return -1;
+ }
+ if (str == NULL)
+ return XLC_PUBLIC(lcd, is_state_depend);
+
+ if (conv && lcd != last_lcd) {
+ _XlcCloseConverter(conv);
+ conv = NULL;
+ }
+
+ last_lcd = lcd;
+
+ if (conv == NULL) {
+ conv = _XlcOpenConverter(lcd, XlcNWideChar, lcd, XlcNMultiByte);
+ if (conv == NULL)
+ return -1;
+ }
+
+ from = (XPointer) &wc;
+ from_left = 1;
+ to = (XPointer) str;
+ length = to_left = XLC_PUBLIC(lcd, mb_cur_max);
+
+ if (_XlcConvert(conv, &from, &from_left, &to, &to_left, NULL, 0) < 0)
+ return -1;
+
+ return (length - to_left);
+}
+
+int
+_Xlcmbstowcs(
+ XLCd lcd,
+ wchar_t *wstr,
+ char *str,
+ int len)
+{
+ XlcConv conv;
+ XPointer from, to;
+ int from_left, to_left, ret;
+
+ if (lcd == NULL) {
+ lcd = _XlcCurrentLC();
+ if (lcd == NULL)
+ return -1;
+ }
+
+ conv = _XlcOpenConverter(lcd, XlcNMultiByte, lcd, XlcNWideChar);
+ if (conv == NULL)
+ return -1;
+
+ from = (XPointer) str;
+ from_left = strlen(str);
+ to = (XPointer) wstr;
+ to_left = len;
+
+ if (_XlcConvert(conv, &from, &from_left, &to, &to_left, NULL, 0) < 0)
+ ret = -1;
+ else {
+ ret = len - to_left;
+ if (wstr && to_left > 0)
+ wstr[ret] = (wchar_t) 0;
+ }
+
+ _XlcCloseConverter(conv);
+
+ return ret;
+}
+
+int
+_Xlcwcstombs(
+ XLCd lcd,
+ char *str,
+ wchar_t *wstr,
+ int len)
+{
+ XlcConv conv;
+ XPointer from, to;
+ int from_left, to_left, ret;
+
+ if (lcd == NULL) {
+ lcd = _XlcCurrentLC();
+ if (lcd == NULL)
+ return -1;
+ }
+
+ conv = _XlcOpenConverter(lcd, XlcNWideChar, lcd, XlcNMultiByte);
+ if (conv == NULL)
+ return -1;
+
+ from = (XPointer) wstr;
+ from_left = _Xwcslen(wstr);
+ to = (XPointer) str;
+ to_left = len;
+
+ if (_XlcConvert(conv, &from, &from_left, &to, &to_left, NULL, 0) < 0)
+ ret = -1;
+ else {
+ ret = len - to_left;
+ if (str && to_left > 0)
+ str[ret] = '\0';
+ }
+
+ _XlcCloseConverter(conv);
+
+ return ret;
+}
+
+
+int
+_Xmbtowc(
+ wchar_t *wstr,
+#ifdef ISC
+ char const *str,
+ size_t len
+#else
+ char *str,
+ int len
+#endif
+ )
+{
+ return _Xlcmbtowc((XLCd) NULL, wstr, str, len);
+}
+
+int
+_Xmblen(
+#ifdef ISC
+ char const *str,
+ size_t len
+#else
+ char *str,
+ int len
+#endif
+ )
+{
+ return _Xmbtowc((wchar_t *) NULL, str, len);
+}
+
+int
+_Xwctomb(
+ char *str,
+ wchar_t wc)
+{
+ return _Xlcwctomb((XLCd) NULL, str, wc);
+}
+
+int
+_Xmbstowcs(
+ wchar_t *wstr,
+ char *str,
+ int len)
+{
+ return _Xlcmbstowcs((XLCd) NULL, wstr, str, len);
+}
+
+int
+_Xwcstombs(
+ char *str,
+ wchar_t *wstr,
+ int len)
+{
+ return _Xlcwcstombs((XLCd) NULL, str, wstr, len);
+}
+
+wchar_t *
+_Xwcscpy(
+ register wchar_t *wstr1, register wchar_t *wstr2)
+{
+ wchar_t *wstr_tmp = wstr1;
+
+ while ((*wstr1++ = *wstr2++))
+ ;
+
+ return wstr_tmp;
+}
+
+wchar_t *
+_Xwcsncpy(
+ register wchar_t *wstr1, register wchar_t *wstr2,
+ register int len)
+{
+ wchar_t *wstr_tmp = wstr1;
+
+ while (len-- > 0)
+ if (!(*wstr1++ = *wstr2++))
+ break;
+
+ while (len-- > 0)
+ *wstr1++ = (wchar_t) 0;
+
+ return wstr_tmp;
+}
+
+int
+_Xwcslen(
+ register wchar_t *wstr)
+{
+ register wchar_t *wstr_ptr = wstr;
+
+ while (*wstr_ptr)
+ wstr_ptr++;
+
+ return wstr_ptr - wstr;
+}
+
+int
+_Xwcscmp(
+ register wchar_t *wstr1, register wchar_t *wstr2)
+{
+ for ( ; *wstr1 && *wstr2; wstr1++, wstr2++)
+ if (*wstr1 != *wstr2)
+ break;
+
+ return *wstr1 - *wstr2;
+}
+
+int
+_Xwcsncmp(
+ register wchar_t *wstr1, register wchar_t *wstr2,
+ register int len)
+{
+ for ( ; *wstr1 && *wstr2 && len > 0; wstr1++, wstr2++, len--)
+ if (*wstr1 != *wstr2)
+ break;
+
+ if (len <= 0)
+ return 0;
+
+ return *wstr1 - *wstr2;
+}
+
+
+int
+_Xlcmbstoutf8(
+ XLCd lcd,
+ char *ustr,
+ const char *str,
+ int len)
+{
+ XlcConv conv;
+ XPointer from, to;
+ int from_left, to_left, ret;
+
+ if (lcd == NULL) {
+ lcd = _XlcCurrentLC();
+ if (lcd == NULL)
+ return -1;
+ }
+
+ conv = _XlcOpenConverter(lcd, XlcNMultiByte, lcd, XlcNUtf8String);
+ if (conv == NULL)
+ return -1;
+
+ from = (XPointer) str;
+ from_left = strlen(str);
+ to = (XPointer) ustr;
+ to_left = len;
+
+ if (_XlcConvert(conv, &from, &from_left, &to, &to_left, NULL, 0) < 0)
+ ret = -1;
+ else {
+ ret = len - to_left;
+ if (ustr && to_left > 0)
+ ustr[ret] = '\0';
+ }
+
+ _XlcCloseConverter(conv);
+
+ return ret;
+}
+
+int
+_Xmbstoutf8(
+ char *ustr,
+ const char *str,
+ int len)
+{
+ return _Xlcmbstoutf8((XLCd) NULL, ustr, str, len);
+}
diff --git a/libX11/src/xlibi18n/lcTxtPr.c b/libX11/src/xlibi18n/lcTxtPr.c
index 59ca262d1..4dfafe018 100644
--- a/libX11/src/xlibi18n/lcTxtPr.c
+++ b/libX11/src/xlibi18n/lcTxtPr.c
@@ -1,254 +1,254 @@
-/*
- * Copyright 1992, 1993 by TOSHIBA Corp.
- *
- * Permission to use, copy, modify, and distribute this software and its
- * documentation for any purpose and without fee is hereby granted, provided
- * that the above copyright notice appear in all copies and that both that
- * copyright notice and this permission notice appear in supporting
- * documentation, and that the name of TOSHIBA not be used in advertising
- * or publicity pertaining to distribution of the software without specific,
- * written prior permission. TOSHIBA make no representations about the
- * suitability of this software for any purpose. It is provided "as is"
- * without express or implied warranty.
- *
- * TOSHIBA DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
- * ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
- * TOSHIBA BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
- * ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
- * WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
- * ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
- * SOFTWARE.
- *
- * Author: Katsuhisa Yano TOSHIBA Corp.
- * mopi@osa.ilab.toshiba.co.jp
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-#include "XlcPubI.h"
-#include <X11/Xutil.h>
-#include <X11/Xatom.h>
-#include <stdio.h>
-
-static int
-get_buf_size(
- Bool is_wide_char,
- XPointer list,
- int count)
-{
- int length = 0;
- char **mb_list;
- wchar_t **wc_list;
-
- if (list == NULL)
- return 0;
-
- if (is_wide_char) {
- wc_list = (wchar_t **) list;
- for ( ; count-- > 0; wc_list++) {
- if (*wc_list)
- length += _Xwcslen(*wc_list) + 1;
- }
- length *= 5; /* XXX */
- } else {
- mb_list = (char **) list;
- for ( ; count-- > 0; mb_list++) {
- if (*mb_list)
- length += strlen(*mb_list) + 1;
- }
- length *= 3; /* XXX */
- }
- length = (length / BUFSIZ + 1) * BUFSIZ; /* XXX */
-
- return length;
-}
-
-static int
-_XTextListToTextProperty(
- XLCd lcd,
- Display *dpy,
- const char *from_type,
- XPointer list,
- int count,
- XICCEncodingStyle style,
- XTextProperty *text_prop)
-{
- Atom encoding;
- XlcConv conv;
- const char *to_type;
- char **mb_list = NULL;
- wchar_t **wc_list = NULL;
- XPointer from;
- char *to, *buf, *value;
- int from_left, to_left, buf_len, nitems, unconv_num = 0, ret, i;
- Bool is_wide_char = False;
-
- if (strcmp(XlcNWideChar, from_type) == 0)
- is_wide_char = True;
-
- buf_len = get_buf_size(is_wide_char, list, count);
- if ((buf = (char *) Xmalloc(buf_len)) == NULL)
- return XNoMemory;
-
- switch (style) {
- case XStringStyle:
- case XStdICCTextStyle:
- encoding = XA_STRING;
- to_type = XlcNString;
- break;
- case XUTF8StringStyle:
- encoding = XInternAtom(dpy, "UTF8_STRING", False);
- to_type = XlcNUtf8String;
- break;
- case XCompoundTextStyle:
- encoding = XInternAtom(dpy, "COMPOUND_TEXT", False);
- to_type = XlcNCompoundText;
- break;
- case XTextStyle:
- encoding = XInternAtom(dpy, XLC_PUBLIC(lcd, encoding_name), False);
- to_type = XlcNMultiByte;
- if (is_wide_char == False) {
- nitems = 0;
- mb_list = (char **) list;
- to = buf;
- for (i = 0; i < count && buf_len > 0; i++) {
- if (*mb_list)
- strcpy(to, *mb_list);
- else
- *to = '\0';
- from_left = (*mb_list ? strlen(*mb_list) : 0) + 1;
- nitems += from_left;
- to += from_left;
- mb_list++;
- }
- unconv_num = 0;
- goto done;
- }
- break;
- default:
- Xfree(buf);
- return XConverterNotFound;
- }
-
- if (count < 1) {
- nitems = 0;
- goto done;
- }
-
-retry:
- conv = _XlcOpenConverter(lcd, from_type, lcd, to_type);
- if (conv == NULL) {
- Xfree(buf);
- return XConverterNotFound;
- }
-
- if (is_wide_char)
- wc_list = (wchar_t **) list;
- else
- mb_list = (char **) list;
-
- to = buf;
- to_left = buf_len;
-
- unconv_num = 0;
-
- for (i = 1; to_left > 0; i++) {
- if (is_wide_char) {
- from = (XPointer) *wc_list;
- from_left = _Xwcslen(*wc_list);
- wc_list++;
- } else {
- from = (XPointer) *mb_list;
- from_left = (*mb_list ? strlen(*mb_list) : 0);
- mb_list++;
- }
-
- ret = _XlcConvert(conv, &from, &from_left, (XPointer *) &to, &to_left,
- NULL, 0);
-
- if (ret < 0)
- continue;
-
- if (ret > 0 && style == XStdICCTextStyle && encoding == XA_STRING) {
- _XlcCloseConverter(conv);
- encoding = XInternAtom(dpy, "COMPOUND_TEXT", False);
- to_type = XlcNCompoundText;
- goto retry;
- }
-
- unconv_num += ret;
- *to++ = '\0';
- to_left--;
-
- if (i >= count)
- break;
-
- _XlcResetConverter(conv);
- }
-
- _XlcCloseConverter(conv);
-
- nitems = to - buf;
-done:
- if (nitems <= 0)
- nitems = 1;
- value = (char *) Xmalloc(nitems);
- if (value == NULL) {
- Xfree(buf);
- return XNoMemory;
- }
- if (nitems == 1)
- *value = 0;
- else
- memcpy(value, buf, nitems);
- nitems--;
- Xfree(buf);
-
- text_prop->value = (unsigned char *) value;
- text_prop->encoding = encoding;
- text_prop->format = 8;
- text_prop->nitems = nitems;
-
- return unconv_num;
-}
-
-int
-_XmbTextListToTextProperty(
- XLCd lcd,
- Display *dpy,
- char **list,
- int count,
- XICCEncodingStyle style,
- XTextProperty *text_prop)
-{
- return _XTextListToTextProperty(lcd, dpy, XlcNMultiByte, (XPointer) list,
- count, style, text_prop);
-}
-
-int
-_XwcTextListToTextProperty(
- XLCd lcd,
- Display *dpy,
- wchar_t **list,
- int count,
- XICCEncodingStyle style,
- XTextProperty *text_prop)
-{
- return _XTextListToTextProperty(lcd, dpy, XlcNWideChar, (XPointer) list,
- count, style, text_prop);
-}
-
-int
-_Xutf8TextListToTextProperty(
- XLCd lcd,
- Display *dpy,
- char **list,
- int count,
- XICCEncodingStyle style,
- XTextProperty *text_prop)
-{
- return _XTextListToTextProperty(lcd, dpy, XlcNUtf8String, (XPointer) list,
- count, style, text_prop);
-}
+/*
+ * Copyright 1992, 1993 by TOSHIBA Corp.
+ *
+ * Permission to use, copy, modify, and distribute this software and its
+ * documentation for any purpose and without fee is hereby granted, provided
+ * that the above copyright notice appear in all copies and that both that
+ * copyright notice and this permission notice appear in supporting
+ * documentation, and that the name of TOSHIBA not be used in advertising
+ * or publicity pertaining to distribution of the software without specific,
+ * written prior permission. TOSHIBA make no representations about the
+ * suitability of this software for any purpose. It is provided "as is"
+ * without express or implied warranty.
+ *
+ * TOSHIBA DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
+ * ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
+ * TOSHIBA BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
+ * ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
+ * WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
+ * ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
+ * SOFTWARE.
+ *
+ * Author: Katsuhisa Yano TOSHIBA Corp.
+ * mopi@osa.ilab.toshiba.co.jp
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+#include "XlcPubI.h"
+#include <X11/Xutil.h>
+#include <X11/Xatom.h>
+#include <stdio.h>
+
+static int
+get_buf_size(
+ Bool is_wide_char,
+ XPointer list,
+ int count)
+{
+ int length = 0;
+ char **mb_list;
+ wchar_t **wc_list;
+
+ if (list == NULL)
+ return 0;
+
+ if (is_wide_char) {
+ wc_list = (wchar_t **) list;
+ for ( ; count-- > 0; wc_list++) {
+ if (*wc_list)
+ length += _Xwcslen(*wc_list) + 1;
+ }
+ length *= 5; /* XXX */
+ } else {
+ mb_list = (char **) list;
+ for ( ; count-- > 0; mb_list++) {
+ if (*mb_list)
+ length += strlen(*mb_list) + 1;
+ }
+ length *= 3; /* XXX */
+ }
+ length = (length / BUFSIZ + 1) * BUFSIZ; /* XXX */
+
+ return length;
+}
+
+static int
+_XTextListToTextProperty(
+ XLCd lcd,
+ Display *dpy,
+ const char *from_type,
+ XPointer list,
+ int count,
+ XICCEncodingStyle style,
+ XTextProperty *text_prop)
+{
+ Atom encoding;
+ XlcConv conv;
+ const char *to_type;
+ char **mb_list = NULL;
+ wchar_t **wc_list = NULL;
+ XPointer from;
+ char *to, *buf, *value;
+ int from_left, to_left, buf_len, nitems, unconv_num = 0, ret, i;
+ Bool is_wide_char = False;
+
+ if (strcmp(XlcNWideChar, from_type) == 0)
+ is_wide_char = True;
+
+ buf_len = get_buf_size(is_wide_char, list, count);
+ if ((buf = (char *) Xmalloc(buf_len)) == NULL)
+ return XNoMemory;
+
+ switch (style) {
+ case XStringStyle:
+ case XStdICCTextStyle:
+ encoding = XA_STRING;
+ to_type = XlcNString;
+ break;
+ case XUTF8StringStyle:
+ encoding = XInternAtom(dpy, "UTF8_STRING", False);
+ to_type = XlcNUtf8String;
+ break;
+ case XCompoundTextStyle:
+ encoding = XInternAtom(dpy, "COMPOUND_TEXT", False);
+ to_type = XlcNCompoundText;
+ break;
+ case XTextStyle:
+ encoding = XInternAtom(dpy, XLC_PUBLIC(lcd, encoding_name), False);
+ to_type = XlcNMultiByte;
+ if (is_wide_char == False) {
+ nitems = 0;
+ mb_list = (char **) list;
+ to = buf;
+ for (i = 0; i < count && buf_len > 0; i++) {
+ if (*mb_list)
+ strcpy(to, *mb_list);
+ else
+ *to = '\0';
+ from_left = (*mb_list ? strlen(*mb_list) : 0) + 1;
+ nitems += from_left;
+ to += from_left;
+ mb_list++;
+ }
+ unconv_num = 0;
+ goto done;
+ }
+ break;
+ default:
+ Xfree(buf);
+ return XConverterNotFound;
+ }
+
+ if (count < 1) {
+ nitems = 0;
+ goto done;
+ }
+
+retry:
+ conv = _XlcOpenConverter(lcd, from_type, lcd, to_type);
+ if (conv == NULL) {
+ Xfree(buf);
+ return XConverterNotFound;
+ }
+
+ if (is_wide_char)
+ wc_list = (wchar_t **) list;
+ else
+ mb_list = (char **) list;
+
+ to = buf;
+ to_left = buf_len;
+
+ unconv_num = 0;
+
+ for (i = 1; to_left > 0; i++) {
+ if (is_wide_char) {
+ from = (XPointer) *wc_list;
+ from_left = _Xwcslen(*wc_list);
+ wc_list++;
+ } else {
+ from = (XPointer) *mb_list;
+ from_left = (*mb_list ? strlen(*mb_list) : 0);
+ mb_list++;
+ }
+
+ ret = _XlcConvert(conv, &from, &from_left, (XPointer *) &to, &to_left,
+ NULL, 0);
+
+ if (ret < 0)
+ continue;
+
+ if (ret > 0 && style == XStdICCTextStyle && encoding == XA_STRING) {
+ _XlcCloseConverter(conv);
+ encoding = XInternAtom(dpy, "COMPOUND_TEXT", False);
+ to_type = XlcNCompoundText;
+ goto retry;
+ }
+
+ unconv_num += ret;
+ *to++ = '\0';
+ to_left--;
+
+ if (i >= count)
+ break;
+
+ _XlcResetConverter(conv);
+ }
+
+ _XlcCloseConverter(conv);
+
+ nitems = to - buf;
+done:
+ if (nitems <= 0)
+ nitems = 1;
+ value = (char *) Xmalloc(nitems);
+ if (value == NULL) {
+ Xfree(buf);
+ return XNoMemory;
+ }
+ if (nitems == 1)
+ *value = 0;
+ else
+ memcpy(value, buf, nitems);
+ nitems--;
+ Xfree(buf);
+
+ text_prop->value = (unsigned char *) value;
+ text_prop->encoding = encoding;
+ text_prop->format = 8;
+ text_prop->nitems = nitems;
+
+ return unconv_num;
+}
+
+int
+_XmbTextListToTextProperty(
+ XLCd lcd,
+ Display *dpy,
+ char **list,
+ int count,
+ XICCEncodingStyle style,
+ XTextProperty *text_prop)
+{
+ return _XTextListToTextProperty(lcd, dpy, XlcNMultiByte, (XPointer) list,
+ count, style, text_prop);
+}
+
+int
+_XwcTextListToTextProperty(
+ XLCd lcd,
+ Display *dpy,
+ wchar_t **list,
+ int count,
+ XICCEncodingStyle style,
+ XTextProperty *text_prop)
+{
+ return _XTextListToTextProperty(lcd, dpy, XlcNWideChar, (XPointer) list,
+ count, style, text_prop);
+}
+
+int
+_Xutf8TextListToTextProperty(
+ XLCd lcd,
+ Display *dpy,
+ char **list,
+ int count,
+ XICCEncodingStyle style,
+ XTextProperty *text_prop)
+{
+ return _XTextListToTextProperty(lcd, dpy, XlcNUtf8String, (XPointer) list,
+ count, style, text_prop);
+}
diff --git a/libX11/src/xlibi18n/lcUTF8.c b/libX11/src/xlibi18n/lcUTF8.c
index 5e47f23bb..3e934b713 100644
--- a/libX11/src/xlibi18n/lcUTF8.c
+++ b/libX11/src/xlibi18n/lcUTF8.c
@@ -1,2390 +1,2390 @@
-/******************************************************************
-
- Copyright 1993 by SunSoft, Inc.
- Copyright 1999-2000 by Bruno Haible
-
-Permission to use, copy, modify, distribute, and sell this software
-and its documentation for any purpose is hereby granted without fee,
-provided that the above copyright notice appear in all copies and
-that both that copyright notice and this permission notice appear
-in supporting documentation, and that the names of SunSoft, Inc. and
-Bruno Haible not be used in advertising or publicity pertaining to
-distribution of the software without specific, written prior
-permission. SunSoft, Inc. and Bruno Haible make no representations
-about the suitability of this software for any purpose. It is
-provided "as is" without express or implied warranty.
-
-SunSoft Inc. AND Bruno Haible DISCLAIM ALL WARRANTIES WITH REGARD
-TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
-AND FITNESS, IN NO EVENT SHALL SunSoft, Inc. OR Bruno Haible BE LIABLE
-FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
-WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
-ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT
-OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
-
-******************************************************************/
-
-/*
- * This file contains:
- *
- * I. Conversion routines CompoundText/CharSet <--> Unicode/UTF-8.
- *
- * Used for three purposes:
- * 1. The UTF-8 locales, see below.
- * 2. Unicode aware applications for which the use of 8-bit character
- * sets is an anachronism.
- * 3. For conversion from keysym to locale encoding.
- *
- * II. Conversion files for an UTF-8 locale loader.
- * Supports: all locales with codeset UTF-8.
- * How: Provides converters for UTF-8.
- * Platforms: all systems.
- *
- * The loader itself is located in lcUTF8.c.
- */
-
-/*
- * The conversion from UTF-8 to CompoundText is realized in a very
- * conservative way. Recall that CompoundText data is used for inter-client
- * communication purposes. We distinguish three classes of clients:
- * - Clients which accept only those pieces of CompoundText which belong to
- * the character set understood by the current locale.
- * (Example: clients which are linked to an older X11 library.)
- * - Clients which accept CompoundText with multiple character sets and parse
- * it themselves.
- * (Example: emacs, xemacs.)
- * - Clients which rely entirely on the X{mb,wc}TextPropertyToTextList
- * functions for the conversion of CompoundText to their current locale's
- * multi-byte/wide-character format.
- * For best interoperation, the UTF-8 to CompoundText conversion proceeds as
- * follows. For every character, it first tests whether the character is
- * representable in the current locale's original (non-UTF-8) character set.
- * If not, it goes through the list of predefined character sets for
- * CompoundText and tests if the character is representable in that character
- * set. If so, it encodes the character using its code within that character
- * set. If not, it uses an UTF-8-in-CompoundText encapsulation. Since
- * clients of the first and second kind ignore such encapsulated text,
- * this encapsulation is kept to a minimum and terminated as early as possible.
- *
- * In a distant future, when clients of the first and second kind will have
- * disappeared, we will be able to stuff UTF-8 data directly in CompoundText
- * without first going through the list of predefined character sets.
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include <stdio.h>
-#include "Xlibint.h"
-#include "XlcPubI.h"
-#include "XlcGeneric.h"
-
-static XlcConv
-create_conv(
- XLCd lcd,
- XlcConvMethods methods)
-{
- XlcConv conv;
-
- conv = (XlcConv) Xmalloc(sizeof(XlcConvRec));
- if (conv == (XlcConv) NULL)
- return (XlcConv) NULL;
-
- conv->methods = methods;
- conv->state = NULL;
-
- return conv;
-}
-
-static void
-close_converter(
- XlcConv conv)
-{
- Xfree((char *) conv);
-}
-
-/* Replacement character for invalid multibyte sequence or wide character. */
-#define BAD_WCHAR ((ucs4_t) 0xfffd)
-#define BAD_CHAR '?'
-
-/***************************************************************************/
-/* Part I: Conversion routines CompoundText/CharSet <--> Unicode/UTF-8.
- *
- * Note that this code works in any locale. We store Unicode values in
- * `ucs4_t' variables, but don't pass them to the user.
- *
- * This code has to support all character sets that are used for CompoundText,
- * nothing more, nothing less. See the table in lcCT.c.
- * Since the conversion _to_ CompoundText is likely to need the tables for all
- * character sets at once, we don't use dynamic loading (of tables or shared
- * libraries through iconv()). Use a fixed set of tables instead.
- *
- * We use statically computed tables, not dynamically allocated arrays,
- * because it's more memory efficient: Different processes using the same
- * libX11 shared library share the "text" and read-only "data" sections.
- */
-
-typedef unsigned int ucs4_t;
-#define conv_t XlcConv
-
-typedef struct _Utf8ConvRec {
- const char *name;
- XrmQuark xrm_name;
- int (* cstowc) (XlcConv, ucs4_t *, unsigned char const *, int);
- int (* wctocs) (XlcConv, unsigned char *, ucs4_t, int);
-} Utf8ConvRec, *Utf8Conv;
-
-/*
- * int xxx_cstowc (XlcConv conv, ucs4_t *pwc, unsigned char const *s, int n)
- * converts the byte sequence starting at s to a wide character. Up to n bytes
- * are available at s. n is >= 1.
- * Result is number of bytes consumed (if a wide character was read),
- * or 0 if invalid, or -1 if n too small.
- *
- * int xxx_wctocs (XlcConv conv, unsigned char *r, ucs4_t wc, int n)
- * converts the wide character wc to the character set xxx, and stores the
- * result beginning at r. Up to n bytes may be written at r. n is >= 1.
- * Result is number of bytes written, or 0 if invalid, or -1 if n too small.
- */
-
-/* Return code if invalid. (xxx_mbtowc, xxx_wctomb) */
-#define RET_ILSEQ 0
-/* Return code if only a shift sequence of n bytes was read. (xxx_mbtowc) */
-#define RET_TOOFEW(n) (-1-(n))
-/* Return code if output buffer is too small. (xxx_wctomb, xxx_reset) */
-#define RET_TOOSMALL -1
-
-/*
- * The tables below are bijective. It would be possible to extend the
- * xxx_wctocs tables to do some transliteration (e.g. U+201C,U+201D -> 0x22)
- * but *only* with characters not contained in any other table, and *only*
- * when the current locale is not an UTF-8 locale.
- */
-
-#include "lcUniConv/utf8.h"
-#include "lcUniConv/ucs2be.h"
-#ifdef notused
-#include "lcUniConv/ascii.h"
-#endif
-#include "lcUniConv/iso8859_1.h"
-#include "lcUniConv/iso8859_2.h"
-#include "lcUniConv/iso8859_3.h"
-#include "lcUniConv/iso8859_4.h"
-#include "lcUniConv/iso8859_5.h"
-#include "lcUniConv/iso8859_6.h"
-#include "lcUniConv/iso8859_7.h"
-#include "lcUniConv/iso8859_8.h"
-#include "lcUniConv/iso8859_9.h"
-#include "lcUniConv/iso8859_10.h"
-#include "lcUniConv/iso8859_11.h"
-#include "lcUniConv/iso8859_13.h"
-#include "lcUniConv/iso8859_14.h"
-#include "lcUniConv/iso8859_15.h"
-#include "lcUniConv/iso8859_16.h"
-#include "lcUniConv/iso8859_9e.h"
-#include "lcUniConv/jisx0201.h"
-#include "lcUniConv/tis620.h"
-#include "lcUniConv/koi8_r.h"
-#include "lcUniConv/koi8_u.h"
-#include "lcUniConv/koi8_c.h"
-#include "lcUniConv/armscii_8.h"
-#include "lcUniConv/cp1133.h"
-#include "lcUniConv/mulelao.h"
-#include "lcUniConv/viscii.h"
-#include "lcUniConv/tcvn.h"
-#include "lcUniConv/georgian_academy.h"
-#include "lcUniConv/georgian_ps.h"
-#include "lcUniConv/cp1251.h"
-#include "lcUniConv/cp1255.h"
-#include "lcUniConv/cp1256.h"
-#include "lcUniConv/tatar_cyr.h"
-
-typedef struct {
- unsigned short indx; /* index into big table */
- unsigned short used; /* bitmask of used entries */
-} Summary16;
-
-#include "lcUniConv/gb2312.h"
-#include "lcUniConv/jisx0208.h"
-#include "lcUniConv/jisx0212.h"
-#include "lcUniConv/ksc5601.h"
-#include "lcUniConv/big5.h"
-#include "lcUniConv/big5_emacs.h"
-#include "lcUniConv/big5hkscs.h"
-#include "lcUniConv/gbk.h"
-
-static Utf8ConvRec all_charsets[] = {
- /* The ISO10646-1/UTF-8 entry occurs twice, once at the beginning
- (for lookup speed), once at the end (as a fallback). */
- { "ISO10646-1", NULLQUARK,
- utf8_mbtowc, utf8_wctomb
- },
-
- { "ISO8859-1", NULLQUARK,
- iso8859_1_mbtowc, iso8859_1_wctomb
- },
- { "ISO8859-2", NULLQUARK,
- iso8859_2_mbtowc, iso8859_2_wctomb
- },
- { "ISO8859-3", NULLQUARK,
- iso8859_3_mbtowc, iso8859_3_wctomb
- },
- { "ISO8859-4", NULLQUARK,
- iso8859_4_mbtowc, iso8859_4_wctomb
- },
- { "ISO8859-5", NULLQUARK,
- iso8859_5_mbtowc, iso8859_5_wctomb
- },
- { "ISO8859-6", NULLQUARK,
- iso8859_6_mbtowc, iso8859_6_wctomb
- },
- { "ISO8859-7", NULLQUARK,
- iso8859_7_mbtowc, iso8859_7_wctomb
- },
- { "ISO8859-8", NULLQUARK,
- iso8859_8_mbtowc, iso8859_8_wctomb
- },
- { "ISO8859-9", NULLQUARK,
- iso8859_9_mbtowc, iso8859_9_wctomb
- },
- { "ISO8859-10", NULLQUARK,
- iso8859_10_mbtowc, iso8859_10_wctomb
- },
- { "ISO8859-11", NULLQUARK,
- iso8859_11_mbtowc, iso8859_11_wctomb
- },
- { "ISO8859-13", NULLQUARK,
- iso8859_13_mbtowc, iso8859_13_wctomb
- },
- { "ISO8859-14", NULLQUARK,
- iso8859_14_mbtowc, iso8859_14_wctomb
- },
- { "ISO8859-15", NULLQUARK,
- iso8859_15_mbtowc, iso8859_15_wctomb
- },
- { "ISO8859-16", NULLQUARK,
- iso8859_16_mbtowc, iso8859_16_wctomb
- },
- { "JISX0201.1976-0", NULLQUARK,
- jisx0201_mbtowc, jisx0201_wctomb
- },
- { "TIS620-0", NULLQUARK,
- tis620_mbtowc, tis620_wctomb
- },
- { "GB2312.1980-0", NULLQUARK,
- gb2312_mbtowc, gb2312_wctomb
- },
- { "JISX0208.1983-0", NULLQUARK,
- jisx0208_mbtowc, jisx0208_wctomb
- },
- { "JISX0208.1990-0", NULLQUARK,
- jisx0208_mbtowc, jisx0208_wctomb
- },
- { "JISX0212.1990-0", NULLQUARK,
- jisx0212_mbtowc, jisx0212_wctomb
- },
- { "KSC5601.1987-0", NULLQUARK,
- ksc5601_mbtowc, ksc5601_wctomb
- },
- { "KOI8-R", NULLQUARK,
- koi8_r_mbtowc, koi8_r_wctomb
- },
- { "KOI8-U", NULLQUARK,
- koi8_u_mbtowc, koi8_u_wctomb
- },
- { "KOI8-C", NULLQUARK,
- koi8_c_mbtowc, koi8_c_wctomb
- },
- { "TATAR-CYR", NULLQUARK,
- tatar_cyr_mbtowc, tatar_cyr_wctomb
- },
- { "ARMSCII-8", NULLQUARK,
- armscii_8_mbtowc, armscii_8_wctomb
- },
- { "IBM-CP1133", NULLQUARK,
- cp1133_mbtowc, cp1133_wctomb
- },
- { "MULELAO-1", NULLQUARK,
- mulelao_mbtowc, mulelao_wctomb
- },
- { "VISCII1.1-1", NULLQUARK,
- viscii_mbtowc, viscii_wctomb
- },
- { "TCVN-5712", NULLQUARK,
- tcvn_mbtowc, tcvn_wctomb
- },
- { "GEORGIAN-ACADEMY", NULLQUARK,
- georgian_academy_mbtowc, georgian_academy_wctomb
- },
- { "GEORGIAN-PS", NULLQUARK,
- georgian_ps_mbtowc, georgian_ps_wctomb
- },
- { "ISO8859-9E", NULLQUARK,
- iso8859_9e_mbtowc, iso8859_9e_wctomb
- },
- { "MICROSOFT-CP1251", NULLQUARK,
- cp1251_mbtowc, cp1251_wctomb
- },
- { "MICROSOFT-CP1255", NULLQUARK,
- cp1255_mbtowc, cp1255_wctomb
- },
- { "MICROSOFT-CP1256", NULLQUARK,
- cp1256_mbtowc, cp1256_wctomb
- },
- { "BIG5-0", NULLQUARK,
- big5_mbtowc, big5_wctomb
- },
- { "BIG5-E0", NULLQUARK,
- big5_0_mbtowc, big5_0_wctomb
- },
- { "BIG5-E1", NULLQUARK,
- big5_1_mbtowc, big5_1_wctomb
- },
- { "GBK-0", NULLQUARK,
- gbk_mbtowc, gbk_wctomb
- },
- { "BIG5HKSCS-0", NULLQUARK,
- big5hkscs_mbtowc, big5hkscs_wctomb
- },
-
- /* The ISO10646-1/UTF-8 entry occurs twice, once at the beginning
- (for lookup speed), once at the end (as a fallback). */
- { "ISO10646-1", NULLQUARK,
- utf8_mbtowc, utf8_wctomb
- },
-
- /* Encoding ISO10646-1 for fonts means UCS2-like encoding
- so for conversion to FontCharSet we need this record */
- { "ISO10646-1", NULLQUARK,
- ucs2be_mbtowc, ucs2be_wctomb
- }
-};
-
-#define charsets_table_size (sizeof(all_charsets)/sizeof(all_charsets[0]))
-#define all_charsets_count (charsets_table_size - 1)
-#define ucs2_conv_index (charsets_table_size - 1)
-
-static void
-init_all_charsets (void)
-{
- Utf8Conv convptr;
- int i;
-
- for (convptr = all_charsets, i = charsets_table_size; i > 0; convptr++, i--)
- convptr->xrm_name = XrmStringToQuark(convptr->name);
-}
-
-#define lazy_init_all_charsets() \
- do { \
- if (all_charsets[0].xrm_name == NULLQUARK) \
- init_all_charsets(); \
- } while (0)
-
-/* from XlcNCharSet to XlcNUtf8String */
-
-static int
-cstoutf8(
- XlcConv conv,
- XPointer *from,
- int *from_left,
- XPointer *to,
- int *to_left,
- XPointer *args,
- int num_args)
-{
- XlcCharSet charset;
- const char *name;
- Utf8Conv convptr;
- int i;
- unsigned char const *src;
- unsigned char const *srcend;
- unsigned char *dst;
- unsigned char *dstend;
- int unconv_num;
-
- if (from == NULL || *from == NULL)
- return 0;
-
- if (num_args < 1)
- return -1;
-
- charset = (XlcCharSet) args[0];
- name = charset->encoding_name;
- /* not charset->name because the latter has a ":GL"/":GR" suffix */
-
- for (convptr = all_charsets, i = all_charsets_count-1; i > 0; convptr++, i--)
- if (!strcmp(convptr->name, name))
- break;
- if (i == 0)
- return -1;
-
- src = (unsigned char const *) *from;
- srcend = src + *from_left;
- dst = (unsigned char *) *to;
- dstend = dst + *to_left;
- unconv_num = 0;
-
- while (src < srcend) {
- ucs4_t wc;
- int consumed;
- int count;
-
- consumed = convptr->cstowc(conv, &wc, src, srcend-src);
- if (consumed == RET_ILSEQ)
- return -1;
- if (consumed == RET_TOOFEW(0))
- break;
-
- count = utf8_wctomb(NULL, dst, wc, dstend-dst);
- if (count == RET_TOOSMALL)
- break;
- if (count == RET_ILSEQ) {
- count = utf8_wctomb(NULL, dst, BAD_WCHAR, dstend-dst);
- if (count == RET_TOOSMALL)
- break;
- unconv_num++;
- }
- src += consumed;
- dst += count;
- }
-
- *from = (XPointer) src;
- *from_left = srcend - src;
- *to = (XPointer) dst;
- *to_left = dstend - dst;
-
- return unconv_num;
-}
-
-static XlcConvMethodsRec methods_cstoutf8 = {
- close_converter,
- cstoutf8,
- NULL
-};
-
-static XlcConv
-open_cstoutf8(
- XLCd from_lcd,
- const char *from_type,
- XLCd to_lcd,
- const char *to_type)
-{
- lazy_init_all_charsets();
- return create_conv(from_lcd, &methods_cstoutf8);
-}
-
-/* from XlcNUtf8String to XlcNCharSet */
-
-static XlcConv
-create_tocs_conv(
- XLCd lcd,
- XlcConvMethods methods)
-{
- XlcConv conv;
- CodeSet *codeset_list;
- int codeset_num;
- int charset_num;
- int i, j, k;
- Utf8Conv *preferred;
-
- lazy_init_all_charsets();
-
- codeset_list = XLC_GENERIC(lcd, codeset_list);
- codeset_num = XLC_GENERIC(lcd, codeset_num);
-
- charset_num = 0;
- for (i = 0; i < codeset_num; i++)
- charset_num += codeset_list[i]->num_charsets;
- if (charset_num > all_charsets_count-1)
- charset_num = all_charsets_count-1;
-
- conv = (XlcConv) Xmalloc(sizeof(XlcConvRec)
- + (charset_num + 1) * sizeof(Utf8Conv));
- if (conv == (XlcConv) NULL)
- return (XlcConv) NULL;
- preferred = (Utf8Conv *) ((char *) conv + sizeof(XlcConvRec));
-
- /* Loop through all codesets mentioned in the locale. */
- charset_num = 0;
- for (i = 0; i < codeset_num; i++) {
- XlcCharSet *charsets = codeset_list[i]->charset_list;
- int num_charsets = codeset_list[i]->num_charsets;
- for (j = 0; j < num_charsets; j++) {
- const char *name = charsets[j]->encoding_name;
- /* If it wasn't already encountered... */
- for (k = charset_num-1; k >= 0; k--)
- if (!strcmp(preferred[k]->name, name))
- break;
- if (k < 0) {
- /* Look it up in all_charsets[]. */
- for (k = 0; k < all_charsets_count-1; k++)
- if (!strcmp(all_charsets[k].name, name)) {
- /* Add it to the preferred set. */
- preferred[charset_num++] = &all_charsets[k];
- break;
- }
- }
- }
- }
- preferred[charset_num] = (Utf8Conv) NULL;
-
- conv->methods = methods;
- conv->state = (XPointer) preferred;
-
- return conv;
-}
-
-static void
-close_tocs_converter(
- XlcConv conv)
-{
- /* conv->state is allocated together with conv, free both at once. */
- Xfree((char *) conv);
-}
-
-/*
- * Converts a Unicode character to an appropriate character set. The NULL
- * terminated array of preferred character sets is passed as first argument.
- * If successful, *charsetp is set to the character set that was used, and
- * *sidep is set to the character set side (XlcGL or XlcGR).
- */
-static int
-charset_wctocs(
- Utf8Conv *preferred,
- Utf8Conv *charsetp,
- XlcSide *sidep,
- XlcConv conv,
- unsigned char *r,
- ucs4_t wc,
- int n)
-{
- int count;
- Utf8Conv convptr;
- int i;
-
- for (; *preferred != (Utf8Conv) NULL; preferred++) {
- convptr = *preferred;
- count = convptr->wctocs(conv, r, wc, n);
- if (count == RET_TOOSMALL)
- return RET_TOOSMALL;
- if (count != RET_ILSEQ) {
- *charsetp = convptr;
- *sidep = (*r < 0x80 ? XlcGL : XlcGR);
- return count;
- }
- }
- for (convptr = all_charsets+1, i = all_charsets_count-1; i > 0; convptr++, i--) {
- count = convptr->wctocs(conv, r, wc, n);
- if (count == RET_TOOSMALL)
- return RET_TOOSMALL;
- if (count != RET_ILSEQ) {
- *charsetp = convptr;
- *sidep = (*r < 0x80 ? XlcGL : XlcGR);
- return count;
- }
- }
- return RET_ILSEQ;
-}
-
-static int
-utf8tocs(
- XlcConv conv,
- XPointer *from,
- int *from_left,
- XPointer *to,
- int *to_left,
- XPointer *args,
- int num_args)
-{
- Utf8Conv *preferred_charsets;
- XlcCharSet last_charset = NULL;
- unsigned char const *src;
- unsigned char const *srcend;
- unsigned char *dst;
- unsigned char *dstend;
- int unconv_num;
-
- if (from == NULL || *from == NULL)
- return 0;
-
- preferred_charsets = (Utf8Conv *) conv->state;
- src = (unsigned char const *) *from;
- srcend = src + *from_left;
- dst = (unsigned char *) *to;
- dstend = dst + *to_left;
- unconv_num = 0;
-
- while (src < srcend && dst < dstend) {
- Utf8Conv chosen_charset = NULL;
- XlcSide chosen_side = XlcNONE;
- ucs4_t wc;
- int consumed;
- int count;
-
- consumed = utf8_mbtowc(NULL, &wc, src, srcend-src);
- if (consumed == RET_TOOFEW(0))
- break;
- if (consumed == RET_ILSEQ) {
- src++;
- unconv_num++;
- continue;
- }
-
- count = charset_wctocs(preferred_charsets, &chosen_charset, &chosen_side, conv, dst, wc, dstend-dst);
- if (count == RET_TOOSMALL)
- break;
- if (count == RET_ILSEQ) {
- src += consumed;
- unconv_num++;
- continue;
- }
-
- if (last_charset == NULL) {
- last_charset =
- _XlcGetCharSetWithSide(chosen_charset->name, chosen_side);
- if (last_charset == NULL) {
- src += consumed;
- unconv_num++;
- continue;
- }
- } else {
- if (!(last_charset->xrm_encoding_name == chosen_charset->xrm_name
- && (last_charset->side == XlcGLGR
- || last_charset->side == chosen_side)))
- break;
- }
- src += consumed;
- dst += count;
- }
-
- if (last_charset == NULL)
- return -1;
-
- *from = (XPointer) src;
- *from_left = srcend - src;
- *to = (XPointer) dst;
- *to_left = dstend - dst;
-
- if (num_args >= 1)
- *((XlcCharSet *)args[0]) = last_charset;
-
- return unconv_num;
-}
-
-static XlcConvMethodsRec methods_utf8tocs = {
- close_tocs_converter,
- utf8tocs,
- NULL
-};
-
-static XlcConv
-open_utf8tocs(
- XLCd from_lcd,
- const char *from_type,
- XLCd to_lcd,
- const char *to_type)
-{
- return create_tocs_conv(from_lcd, &methods_utf8tocs);
-}
-
-/* from XlcNUtf8String to XlcNChar */
-
-static int
-utf8tocs1(
- XlcConv conv,
- XPointer *from,
- int *from_left,
- XPointer *to,
- int *to_left,
- XPointer *args,
- int num_args)
-{
- Utf8Conv *preferred_charsets;
- XlcCharSet last_charset = NULL;
- unsigned char const *src;
- unsigned char const *srcend;
- unsigned char *dst;
- unsigned char *dstend;
- int unconv_num;
-
- if (from == NULL || *from == NULL)
- return 0;
-
- preferred_charsets = (Utf8Conv *) conv->state;
- src = (unsigned char const *) *from;
- srcend = src + *from_left;
- dst = (unsigned char *) *to;
- dstend = dst + *to_left;
- unconv_num = 0;
-
- while (src < srcend && dst < dstend) {
- Utf8Conv chosen_charset = NULL;
- XlcSide chosen_side = XlcNONE;
- ucs4_t wc;
- int consumed;
- int count;
-
- consumed = utf8_mbtowc(NULL, &wc, src, srcend-src);
- if (consumed == RET_TOOFEW(0))
- break;
- if (consumed == RET_ILSEQ) {
- src++;
- unconv_num++;
- continue;
- }
-
- count = charset_wctocs(preferred_charsets, &chosen_charset, &chosen_side, conv, dst, wc, dstend-dst);
- if (count == RET_TOOSMALL)
- break;
- if (count == RET_ILSEQ) {
- src += consumed;
- unconv_num++;
- continue;
- }
-
- if (last_charset == NULL) {
- last_charset =
- _XlcGetCharSetWithSide(chosen_charset->name, chosen_side);
- if (last_charset == NULL) {
- src += consumed;
- unconv_num++;
- continue;
- }
- } else {
- if (!(last_charset->xrm_encoding_name == chosen_charset->xrm_name
- && (last_charset->side == XlcGLGR
- || last_charset->side == chosen_side)))
- break;
- }
- src += consumed;
- dst += count;
- break;
- }
-
- if (last_charset == NULL)
- return -1;
-
- *from = (XPointer) src;
- *from_left = srcend - src;
- *to = (XPointer) dst;
- *to_left = dstend - dst;
-
- if (num_args >= 1)
- *((XlcCharSet *)args[0]) = last_charset;
-
- return unconv_num;
-}
-
-static XlcConvMethodsRec methods_utf8tocs1 = {
- close_tocs_converter,
- utf8tocs1,
- NULL
-};
-
-static XlcConv
-open_utf8tocs1(
- XLCd from_lcd,
- const char *from_type,
- XLCd to_lcd,
- const char *to_type)
-{
- return create_tocs_conv(from_lcd, &methods_utf8tocs1);
-}
-
-/* from XlcNUtf8String to XlcNString */
-
-static int
-utf8tostr(
- XlcConv conv,
- XPointer *from,
- int *from_left,
- XPointer *to,
- int *to_left,
- XPointer *args,
- int num_args)
-{
- unsigned char const *src;
- unsigned char const *srcend;
- unsigned char *dst;
- unsigned char *dstend;
- int unconv_num;
-
- if (from == NULL || *from == NULL)
- return 0;
-
- src = (unsigned char const *) *from;
- srcend = src + *from_left;
- dst = (unsigned char *) *to;
- dstend = dst + *to_left;
- unconv_num = 0;
-
- while (src < srcend) {
- unsigned char c;
- ucs4_t wc;
- int consumed;
-
- consumed = utf8_mbtowc(NULL, &wc, src, srcend-src);
- if (consumed == RET_TOOFEW(0))
- break;
- if (dst == dstend)
- break;
- if (consumed == RET_ILSEQ) {
- consumed = 1;
- c = BAD_CHAR;
- unconv_num++;
- } else {
- if ((wc & ~(ucs4_t)0xff) != 0) {
- c = BAD_CHAR;
- unconv_num++;
- } else
- c = (unsigned char) wc;
- }
- *dst++ = c;
- src += consumed;
- }
-
- *from = (XPointer) src;
- *from_left = srcend - src;
- *to = (XPointer) dst;
- *to_left = dstend - dst;
-
- return unconv_num;
-}
-
-static XlcConvMethodsRec methods_utf8tostr = {
- close_converter,
- utf8tostr,
- NULL
-};
-
-static XlcConv
-open_utf8tostr(
- XLCd from_lcd,
- const char *from_type,
- XLCd to_lcd,
- const char *to_type)
-{
- return create_conv(from_lcd, &methods_utf8tostr);
-}
-
-/* from XlcNString to XlcNUtf8String */
-
-static int
-strtoutf8(
- XlcConv conv,
- XPointer *from,
- int *from_left,
- XPointer *to,
- int *to_left,
- XPointer *args,
- int num_args)
-{
- unsigned char const *src;
- unsigned char const *srcend;
- unsigned char *dst;
- unsigned char *dstend;
-
- if (from == NULL || *from == NULL)
- return 0;
-
- src = (unsigned char const *) *from;
- srcend = src + *from_left;
- dst = (unsigned char *) *to;
- dstend = dst + *to_left;
-
- while (src < srcend) {
- int count = utf8_wctomb(NULL, dst, *src, dstend-dst);
- if (count == RET_TOOSMALL)
- break;
- dst += count;
- src++;
- }
-
- *from = (XPointer) src;
- *from_left = srcend - src;
- *to = (XPointer) dst;
- *to_left = dstend - dst;
-
- return 0;
-}
-
-static XlcConvMethodsRec methods_strtoutf8 = {
- close_converter,
- strtoutf8,
- NULL
-};
-
-static XlcConv
-open_strtoutf8(
- XLCd from_lcd,
- const char *from_type,
- XLCd to_lcd,
- const char *to_type)
-{
- return create_conv(from_lcd, &methods_strtoutf8);
-}
-
-/* Support for the input methods. */
-
-XPointer
-_Utf8GetConvByName(
- const char *name)
-{
- XrmQuark xrm_name;
- Utf8Conv convptr;
- int i;
-
- if (name == NULL)
- return (XPointer) NULL;
-
- lazy_init_all_charsets();
- xrm_name = XrmStringToQuark(name);
-
- for (convptr = all_charsets, i = all_charsets_count-1; i > 0; convptr++, i--)
- if (convptr->xrm_name == xrm_name)
- return (XPointer) convptr->wctocs;
- return (XPointer) NULL;
-}
-
-/* from XlcNUcsChar to XlcNChar, needed for input methods */
-
-static XlcConv
-create_ucstocs_conv(
- XLCd lcd,
- XlcConvMethods methods)
-{
-
- if (XLC_PUBLIC_PART(lcd)->codeset
- && _XlcCompareISOLatin1(XLC_PUBLIC_PART(lcd)->codeset, "UTF-8") == 0) {
- XlcConv conv;
- Utf8Conv *preferred;
-
- lazy_init_all_charsets();
-
- conv = (XlcConv) Xmalloc(sizeof(XlcConvRec) + 2 * sizeof(Utf8Conv));
- if (conv == (XlcConv) NULL)
- return (XlcConv) NULL;
- preferred = (Utf8Conv *) ((char *) conv + sizeof(XlcConvRec));
-
- preferred[0] = &all_charsets[0]; /* ISO10646 */
- preferred[1] = (Utf8Conv) NULL;
-
- conv->methods = methods;
- conv->state = (XPointer) preferred;
-
- return conv;
- } else {
- return create_tocs_conv(lcd, methods);
- }
-}
-
-static int
-charset_wctocs_exactly(
- Utf8Conv *preferred,
- Utf8Conv *charsetp,
- XlcSide *sidep,
- XlcConv conv,
- unsigned char *r,
- ucs4_t wc,
- int n)
-{
- int count;
- Utf8Conv convptr;
-
- for (; *preferred != (Utf8Conv) NULL; preferred++) {
- convptr = *preferred;
- count = convptr->wctocs(conv, r, wc, n);
- if (count == RET_TOOSMALL)
- return RET_TOOSMALL;
- if (count != RET_ILSEQ) {
- *charsetp = convptr;
- *sidep = (*r < 0x80 ? XlcGL : XlcGR);
- return count;
- }
- }
- return RET_ILSEQ;
-}
-
-static int
-ucstocs1(
- XlcConv conv,
- XPointer *from,
- int *from_left,
- XPointer *to,
- int *to_left,
- XPointer *args,
- int num_args)
-{
- ucs4_t const *src = (ucs4_t const *) *from;
- unsigned char *dst = (unsigned char *) *to;
- int unconv_num = 0;
- Utf8Conv *preferred_charsets = (Utf8Conv *) conv->state;
- Utf8Conv chosen_charset = NULL;
- XlcSide chosen_side = XlcNONE;
- XlcCharSet charset = NULL;
- int count;
-
- if (from == NULL || *from == NULL)
- return 0;
-
- count = charset_wctocs_exactly(preferred_charsets, &chosen_charset,
- &chosen_side, conv, dst, *src, *to_left);
- if (count < 1) {
- unconv_num++;
- count = 0;
- } else {
- charset = _XlcGetCharSetWithSide(chosen_charset->name, chosen_side);
- }
- if (charset == NULL)
- return -1;
-
- *from = (XPointer) ++src;
- (*from_left)--;
- *to = (XPointer) dst;
- *to_left -= count;
-
- if (num_args >= 1)
- *((XlcCharSet *)args[0]) = charset;
-
- return unconv_num;
-}
-
-static XlcConvMethodsRec methods_ucstocs1 = {
- close_tocs_converter,
- ucstocs1,
- NULL
-};
-
-static XlcConv
-open_ucstocs1(
- XLCd from_lcd,
- const char *from_type,
- XLCd to_lcd,
- const char *to_type)
-{
- return create_ucstocs_conv(from_lcd, &methods_ucstocs1);
-}
-
-/* from XlcNUcsChar to XlcNUtf8String, needed for input methods */
-
-static int
-ucstoutf8(
- XlcConv conv,
- XPointer *from,
- int *from_left,
- XPointer *to,
- int *to_left,
- XPointer *args,
- int num_args)
-{
- const ucs4_t *src;
- const ucs4_t *srcend;
- unsigned char *dst;
- unsigned char *dstend;
- int unconv_num;
-
- if (from == NULL || *from == NULL)
- return 0;
-
- src = (const ucs4_t *) *from;
- srcend = src + *from_left;
- dst = (unsigned char *) *to;
- dstend = dst + *to_left;
- unconv_num = 0;
-
- while (src < srcend) {
- int count = utf8_wctomb(NULL, dst, *src, dstend-dst);
- if (count == RET_TOOSMALL)
- break;
- if (count == RET_ILSEQ)
- unconv_num++;
- src++;
- dst += count;
- }
-
- *from = (XPointer) src;
- *from_left = srcend - src;
- *to = (XPointer) dst;
- *to_left = dstend - dst;
-
- return unconv_num;
-}
-
-static XlcConvMethodsRec methods_ucstoutf8 = {
- close_converter,
- ucstoutf8,
- NULL
-};
-
-static XlcConv
-open_ucstoutf8(
- XLCd from_lcd,
- const char *from_type,
- XLCd to_lcd,
- const char *to_type)
-{
- return create_conv(from_lcd, &methods_ucstoutf8);
-}
-
-/* Registers UTF-8 converters for a non-UTF-8 locale. */
-void
-_XlcAddUtf8Converters(
- XLCd lcd)
-{
- _XlcSetConverter(lcd, XlcNCharSet, lcd, XlcNUtf8String, open_cstoutf8);
- _XlcSetConverter(lcd, XlcNUtf8String, lcd, XlcNCharSet, open_utf8tocs);
- _XlcSetConverter(lcd, XlcNUtf8String, lcd, XlcNChar, open_utf8tocs1);
- _XlcSetConverter(lcd, XlcNString, lcd, XlcNUtf8String, open_strtoutf8);
- _XlcSetConverter(lcd, XlcNUtf8String, lcd, XlcNString, open_utf8tostr);
- _XlcSetConverter(lcd, XlcNUcsChar, lcd, XlcNChar, open_ucstocs1);
- _XlcSetConverter(lcd, XlcNUcsChar, lcd, XlcNUtf8String, open_ucstoutf8);
-}
-
-/***************************************************************************/
-/* Part II: UTF-8 locale loader conversion files
- *
- * Here we can assume that "multi-byte" is UTF-8 and that `wchar_t' is Unicode.
- */
-
-/* from XlcNMultiByte to XlcNWideChar */
-
-static int
-utf8towcs(
- XlcConv conv,
- XPointer *from,
- int *from_left,
- XPointer *to,
- int *to_left,
- XPointer *args,
- int num_args)
-{
- unsigned char const *src;
- unsigned char const *srcend;
- wchar_t *dst;
- wchar_t *dstend;
- int unconv_num;
-
- if (from == NULL || *from == NULL)
- return 0;
-
- src = (unsigned char const *) *from;
- srcend = src + *from_left;
- dst = (wchar_t *) *to;
- dstend = dst + *to_left;
- unconv_num = 0;
-
- while (src < srcend && dst < dstend) {
- ucs4_t wc;
- int consumed = utf8_mbtowc(NULL, &wc, src, srcend-src);
- if (consumed == RET_TOOFEW(0))
- break;
- if (consumed == RET_ILSEQ) {
- src++;
- *dst = BAD_WCHAR;
- unconv_num++;
- } else {
- src += consumed;
- *dst = wc;
- }
- dst++;
- }
-
- *from = (XPointer) src;
- *from_left = srcend - src;
- *to = (XPointer) dst;
- *to_left = dstend - dst;
-
- return unconv_num;
-}
-
-static XlcConvMethodsRec methods_utf8towcs = {
- close_converter,
- utf8towcs,
- NULL
-};
-
-static XlcConv
-open_utf8towcs(
- XLCd from_lcd,
- const char *from_type,
- XLCd to_lcd,
- const char *to_type)
-{
- return create_conv(from_lcd, &methods_utf8towcs);
-}
-
-/* from XlcNWideChar to XlcNMultiByte */
-
-static int
-wcstoutf8(
- XlcConv conv,
- XPointer *from,
- int *from_left,
- XPointer *to,
- int *to_left,
- XPointer *args,
- int num_args)
-{
- wchar_t const *src;
- wchar_t const *srcend;
- unsigned char *dst;
- unsigned char *dstend;
- int unconv_num;
-
- if (from == NULL || *from == NULL)
- return 0;
-
- src = (wchar_t const *) *from;
- srcend = src + *from_left;
- dst = (unsigned char *) *to;
- dstend = dst + *to_left;
- unconv_num = 0;
-
- while (src < srcend) {
- int count = utf8_wctomb(NULL, dst, *src, dstend-dst);
- if (count == RET_TOOSMALL)
- break;
- if (count == RET_ILSEQ) {
- count = utf8_wctomb(NULL, dst, BAD_WCHAR, dstend-dst);
- if (count == RET_TOOSMALL)
- break;
- unconv_num++;
- }
- dst += count;
- src++;
- }
-
- *from = (XPointer) src;
- *from_left = srcend - src;
- *to = (XPointer) dst;
- *to_left = dstend - dst;
-
- return unconv_num;
-}
-
-static XlcConvMethodsRec methods_wcstoutf8 = {
- close_converter,
- wcstoutf8,
- NULL
-};
-
-static XlcConv
-open_wcstoutf8(
- XLCd from_lcd,
- const char *from_type,
- XLCd to_lcd,
- const char *to_type)
-{
- return create_conv(from_lcd, &methods_wcstoutf8);
-}
-
-/* from XlcNString to XlcNWideChar */
-
-static int
-our_strtowcs(
- XlcConv conv,
- XPointer *from,
- int *from_left,
- XPointer *to,
- int *to_left,
- XPointer *args,
- int num_args)
-{
- unsigned char const *src;
- unsigned char const *srcend;
- wchar_t *dst;
- wchar_t *dstend;
-
- if (from == NULL || *from == NULL)
- return 0;
-
- src = (unsigned char const *) *from;
- srcend = src + *from_left;
- dst = (wchar_t *) *to;
- dstend = dst + *to_left;
-
- while (src < srcend && dst < dstend)
- *dst++ = (wchar_t) *src++;
-
- *from = (XPointer) src;
- *from_left = srcend - src;
- *to = (XPointer) dst;
- *to_left = dstend - dst;
-
- return 0;
-}
-
-static XlcConvMethodsRec methods_strtowcs = {
- close_converter,
- our_strtowcs,
- NULL
-};
-
-static XlcConv
-open_strtowcs(
- XLCd from_lcd,
- const char *from_type,
- XLCd to_lcd,
- const char *to_type)
-{
- return create_conv(from_lcd, &methods_strtowcs);
-}
-
-/* from XlcNWideChar to XlcNString */
-
-static int
-our_wcstostr(
- XlcConv conv,
- XPointer *from,
- int *from_left,
- XPointer *to,
- int *to_left,
- XPointer *args,
- int num_args)
-{
- wchar_t const *src;
- wchar_t const *srcend;
- unsigned char *dst;
- unsigned char *dstend;
- int unconv_num;
-
- if (from == NULL || *from == NULL)
- return 0;
-
- src = (wchar_t const *) *from;
- srcend = src + *from_left;
- dst = (unsigned char *) *to;
- dstend = dst + *to_left;
- unconv_num = 0;
-
- while (src < srcend && dst < dstend) {
- unsigned int wc = *src++;
- if (wc < 0x80)
- *dst = wc;
- else {
- *dst = BAD_CHAR;
- unconv_num++;
- }
- dst++;
- }
-
- *from = (XPointer) src;
- *from_left = srcend - src;
- *to = (XPointer) dst;
- *to_left = dstend - dst;
-
- return unconv_num;
-}
-
-static XlcConvMethodsRec methods_wcstostr = {
- close_converter,
- our_wcstostr,
- NULL
-};
-
-static XlcConv
-open_wcstostr(
- XLCd from_lcd,
- const char *from_type,
- XLCd to_lcd,
- const char *to_type)
-{
- return create_conv(from_lcd, &methods_wcstostr);
-}
-
-/* from XlcNCharSet to XlcNWideChar */
-
-static int
-cstowcs(
- XlcConv conv,
- XPointer *from,
- int *from_left,
- XPointer *to,
- int *to_left,
- XPointer *args,
- int num_args)
-{
- XlcCharSet charset;
- const char *name;
- Utf8Conv convptr;
- int i;
- unsigned char const *src;
- unsigned char const *srcend;
- wchar_t *dst;
- wchar_t *dstend;
- int unconv_num;
-
- if (from == NULL || *from == NULL)
- return 0;
-
- if (num_args < 1)
- return -1;
-
- charset = (XlcCharSet) args[0];
- name = charset->encoding_name;
- /* not charset->name because the latter has a ":GL"/":GR" suffix */
-
- for (convptr = all_charsets, i = all_charsets_count-1; i > 0; convptr++, i--)
- if (!strcmp(convptr->name, name))
- break;
- if (i == 0)
- return -1;
-
- src = (unsigned char const *) *from;
- srcend = src + *from_left;
- dst = (wchar_t *) *to;
- dstend = dst + *to_left;
- unconv_num = 0;
-
- while (src < srcend && dst < dstend) {
- unsigned int wc;
- int consumed;
-
- consumed = convptr->cstowc(conv, &wc, src, srcend-src);
- if (consumed == RET_ILSEQ)
- return -1;
- if (consumed == RET_TOOFEW(0))
- break;
-
- *dst++ = wc;
- src += consumed;
- }
-
- *from = (XPointer) src;
- *from_left = srcend - src;
- *to = (XPointer) dst;
- *to_left = dstend - dst;
-
- return unconv_num;
-}
-
-static XlcConvMethodsRec methods_cstowcs = {
- close_converter,
- cstowcs,
- NULL
-};
-
-static XlcConv
-open_cstowcs(
- XLCd from_lcd,
- const char *from_type,
- XLCd to_lcd,
- const char *to_type)
-{
- lazy_init_all_charsets();
- return create_conv(from_lcd, &methods_cstowcs);
-}
-
-/* from XlcNWideChar to XlcNCharSet */
-
-static int
-wcstocs(
- XlcConv conv,
- XPointer *from,
- int *from_left,
- XPointer *to,
- int *to_left,
- XPointer *args,
- int num_args)
-{
- Utf8Conv *preferred_charsets;
- XlcCharSet last_charset = NULL;
- wchar_t const *src;
- wchar_t const *srcend;
- unsigned char *dst;
- unsigned char *dstend;
- int unconv_num;
-
- if (from == NULL || *from == NULL)
- return 0;
-
- preferred_charsets = (Utf8Conv *) conv->state;
- src = (wchar_t const *) *from;
- srcend = src + *from_left;
- dst = (unsigned char *) *to;
- dstend = dst + *to_left;
- unconv_num = 0;
-
- while (src < srcend && dst < dstend) {
- Utf8Conv chosen_charset = NULL;
- XlcSide chosen_side = XlcNONE;
- wchar_t wc = *src;
- int count;
-
- count = charset_wctocs(preferred_charsets, &chosen_charset, &chosen_side, conv, dst, wc, dstend-dst);
- if (count == RET_TOOSMALL)
- break;
- if (count == RET_ILSEQ) {
- src++;
- unconv_num++;
- continue;
- }
-
- if (last_charset == NULL) {
- last_charset =
- _XlcGetCharSetWithSide(chosen_charset->name, chosen_side);
- if (last_charset == NULL) {
- src++;
- unconv_num++;
- continue;
- }
- } else {
- if (!(last_charset->xrm_encoding_name == chosen_charset->xrm_name
- && (last_charset->side == XlcGLGR
- || last_charset->side == chosen_side)))
- break;
- }
- src++;
- dst += count;
- }
-
- if (last_charset == NULL)
- return -1;
-
- *from = (XPointer) src;
- *from_left = srcend - src;
- *to = (XPointer) dst;
- *to_left = dstend - dst;
-
- if (num_args >= 1)
- *((XlcCharSet *)args[0]) = last_charset;
-
- return unconv_num;
-}
-
-static XlcConvMethodsRec methods_wcstocs = {
- close_tocs_converter,
- wcstocs,
- NULL
-};
-
-static XlcConv
-open_wcstocs(
- XLCd from_lcd,
- const char *from_type,
- XLCd to_lcd,
- const char *to_type)
-{
- return create_tocs_conv(from_lcd, &methods_wcstocs);
-}
-
-/* from XlcNWideChar to XlcNChar */
-
-static int
-wcstocs1(
- XlcConv conv,
- XPointer *from,
- int *from_left,
- XPointer *to,
- int *to_left,
- XPointer *args,
- int num_args)
-{
- Utf8Conv *preferred_charsets;
- XlcCharSet last_charset = NULL;
- wchar_t const *src;
- wchar_t const *srcend;
- unsigned char *dst;
- unsigned char *dstend;
- int unconv_num;
-
- if (from == NULL || *from == NULL)
- return 0;
-
- preferred_charsets = (Utf8Conv *) conv->state;
- src = (wchar_t const *) *from;
- srcend = src + *from_left;
- dst = (unsigned char *) *to;
- dstend = dst + *to_left;
- unconv_num = 0;
-
- while (src < srcend && dst < dstend) {
- Utf8Conv chosen_charset = NULL;
- XlcSide chosen_side = XlcNONE;
- wchar_t wc = *src;
- int count;
-
- count = charset_wctocs(preferred_charsets, &chosen_charset, &chosen_side, conv, dst, wc, dstend-dst);
- if (count == RET_TOOSMALL)
- break;
- if (count == RET_ILSEQ) {
- src++;
- unconv_num++;
- continue;
- }
-
- if (last_charset == NULL) {
- last_charset =
- _XlcGetCharSetWithSide(chosen_charset->name, chosen_side);
- if (last_charset == NULL) {
- src++;
- unconv_num++;
- continue;
- }
- } else {
- if (!(last_charset->xrm_encoding_name == chosen_charset->xrm_name
- && (last_charset->side == XlcGLGR
- || last_charset->side == chosen_side)))
- break;
- }
- src++;
- dst += count;
- break;
- }
-
- if (last_charset == NULL)
- return -1;
-
- *from = (XPointer) src;
- *from_left = srcend - src;
- *to = (XPointer) dst;
- *to_left = dstend - dst;
-
- if (num_args >= 1)
- *((XlcCharSet *)args[0]) = last_charset;
-
- return unconv_num;
-}
-
-static XlcConvMethodsRec methods_wcstocs1 = {
- close_tocs_converter,
- wcstocs1,
- NULL
-};
-
-static XlcConv
-open_wcstocs1(
- XLCd from_lcd,
- const char *from_type,
- XLCd to_lcd,
- const char *to_type)
-{
- return create_tocs_conv(from_lcd, &methods_wcstocs1);
-}
-
-/* trivial, no conversion */
-
-static int
-identity(
- XlcConv conv,
- XPointer *from,
- int *from_left,
- XPointer *to,
- int *to_left,
- XPointer *args,
- int num_args)
-{
- unsigned char const *src;
- unsigned char const *srcend;
- unsigned char *dst;
- unsigned char *dstend;
-
- if (from == NULL || *from == NULL)
- return 0;
-
- src = (unsigned char const *) *from;
- srcend = src + *from_left;
- dst = (unsigned char *) *to;
- dstend = dst + *to_left;
-
- while (src < srcend && dst < dstend)
- *dst++ = *src++;
-
- *from = (XPointer) src;
- *from_left = srcend - src;
- *to = (XPointer) dst;
- *to_left = dstend - dst;
-
- return 0;
-}
-
-static XlcConvMethodsRec methods_identity = {
- close_converter,
- identity,
- NULL
-};
-
-static XlcConv
-open_identity(
- XLCd from_lcd,
- const char *from_type,
- XLCd to_lcd,
- const char *to_type)
-{
- return create_conv(from_lcd, &methods_identity);
-}
-
-/* from MultiByte/WideChar to FontCharSet. */
-/* They really use converters to CharSet
- * but with different create_conv procedure. */
-
-static XlcConv
-create_tofontcs_conv(
- XLCd lcd,
- XlcConvMethods methods)
-{
- XlcConv conv;
- int i, num, k, count;
- char **value, buf[20];
- Utf8Conv *preferred;
-
- lazy_init_all_charsets();
-
- for (i = 0, num = 0;; i++) {
- sprintf(buf, "fs%d.charset.name", i);
- _XlcGetResource(lcd, "XLC_FONTSET", buf, &value, &count);
- if (count < 1) {
- sprintf(buf, "fs%d.charset", i);
- _XlcGetResource(lcd, "XLC_FONTSET", buf, &value, &count);
- if (count < 1)
- break;
- }
- num += count;
- }
-
- conv = (XlcConv) Xmalloc(sizeof(XlcConvRec) + (num + 1) * sizeof(Utf8Conv));
- if (conv == (XlcConv) NULL)
- return (XlcConv) NULL;
- preferred = (Utf8Conv *) ((char *) conv + sizeof(XlcConvRec));
-
- /* Loop through all fontsets mentioned in the locale. */
- for (i = 0, num = 0;; i++) {
- sprintf(buf, "fs%d.charset.name", i);
- _XlcGetResource(lcd, "XLC_FONTSET", buf, &value, &count);
- if (count < 1) {
- sprintf(buf, "fs%d.charset", i);
- _XlcGetResource(lcd, "XLC_FONTSET", buf, &value, &count);
- if (count < 1)
- break;
- }
- while (count-- > 0) {
- XlcCharSet charset = _XlcGetCharSet(*value++);
- const char *name;
-
- if (charset == (XlcCharSet) NULL)
- continue;
-
- name = charset->encoding_name;
- /* If it wasn't already encountered... */
- for (k = num - 1; k >= 0; k--)
- if (!strcmp(preferred[k]->name, name))
- break;
- if (k < 0) {
- /* For fonts "ISO10646-1" means ucs2, not utf8.*/
- if (!strcmp("ISO10646-1", name)) {
- preferred[num++] = &all_charsets[ucs2_conv_index];
- continue;
- }
- /* Look it up in all_charsets[]. */
- for (k = 0; k < all_charsets_count-1; k++)
- if (!strcmp(all_charsets[k].name, name)) {
- /* Add it to the preferred set. */
- preferred[num++] = &all_charsets[k];
- break;
- }
- }
- }
- }
- preferred[num] = (Utf8Conv) NULL;
-
- conv->methods = methods;
- conv->state = (XPointer) preferred;
-
- return conv;
-}
-
-static XlcConv
-open_wcstofcs(
- XLCd from_lcd,
- const char *from_type,
- XLCd to_lcd,
- const char *to_type)
-{
- return create_tofontcs_conv(from_lcd, &methods_wcstocs);
-}
-
-static XlcConv
-open_utf8tofcs(
- XLCd from_lcd,
- const char *from_type,
- XLCd to_lcd,
- const char *to_type)
-{
- return create_tofontcs_conv(from_lcd, &methods_utf8tocs);
-}
-
-/* ========================== iconv Stuff ================================ */
-
-/* from XlcNCharSet to XlcNMultiByte */
-
-static int
-iconv_cstombs(XlcConv conv, XPointer *from, int *from_left,
- XPointer *to, int *to_left, XPointer *args, int num_args)
-{
- XlcCharSet charset;
- char const *name;
- Utf8Conv convptr;
- int i;
- unsigned char const *src;
- unsigned char const *srcend;
- unsigned char *dst;
- unsigned char *dstend;
- int unconv_num;
-
- if (from == NULL || *from == NULL)
- return 0;
-
- if (num_args < 1)
- return -1;
-
- charset = (XlcCharSet) args[0];
- name = charset->encoding_name;
- /* not charset->name because the latter has a ":GL"/":GR" suffix */
-
- for (convptr = all_charsets, i = all_charsets_count-1; i > 0; convptr++, i--)
- if (!strcmp(convptr->name, name))
- break;
- if (i == 0)
- return -1;
-
- src = (unsigned char const *) *from;
- srcend = src + *from_left;
- dst = (unsigned char *) *to;
- dstend = dst + *to_left;
- unconv_num = 0;
-
- while (src < srcend) {
- ucs4_t wc;
- int consumed;
- int count;
-
- consumed = convptr->cstowc(conv, &wc, src, srcend-src);
- if (consumed == RET_ILSEQ)
- return -1;
- if (consumed == RET_TOOFEW(0))
- break;
-
- /* Use stdc iconv to convert widechar -> multibyte */
-
- count = wctomb((char *)dst, wc);
- if (count == 0)
- break;
- if (count == -1) {
- count = wctomb((char *)dst, BAD_WCHAR);
- if (count == 0)
- break;
- unconv_num++;
- }
- src += consumed;
- dst += count;
- }
-
- *from = (XPointer) src;
- *from_left = srcend - src;
- *to = (XPointer) dst;
- *to_left = dstend - dst;
-
- return unconv_num;
-
-}
-
-static XlcConvMethodsRec iconv_cstombs_methods = {
- close_converter,
- iconv_cstombs,
- NULL
-};
-
-static XlcConv
-open_iconv_cstombs(XLCd from_lcd, const char *from_type, XLCd to_lcd, const char *to_type)
-{
- lazy_init_all_charsets();
- return create_conv(from_lcd, &iconv_cstombs_methods);
-}
-
-static int
-iconv_mbstocs(XlcConv conv, XPointer *from, int *from_left,
- XPointer *to, int *to_left, XPointer *args, int num_args)
-{
- Utf8Conv *preferred_charsets;
- XlcCharSet last_charset = NULL;
- unsigned char const *src;
- unsigned char const *srcend;
- unsigned char *dst;
- unsigned char *dstend;
- int unconv_num;
-
- if (from == NULL || *from == NULL)
- return 0;
-
- preferred_charsets = (Utf8Conv *) conv->state;
- src = (unsigned char const *) *from;
- srcend = src + *from_left;
- dst = (unsigned char *) *to;
- dstend = dst + *to_left;
- unconv_num = 0;
-
- while (src < srcend && dst < dstend) {
- Utf8Conv chosen_charset = NULL;
- XlcSide chosen_side = XlcNONE;
- wchar_t wc;
- int consumed;
- int count;
-
- /* Uses stdc iconv to convert multibyte -> widechar */
-
- consumed = mbtowc(&wc, (const char *)src, srcend-src);
- if (consumed == 0)
- break;
- if (consumed == -1) {
- src++;
- unconv_num++;
- continue;
- }
-
- count = charset_wctocs(preferred_charsets, &chosen_charset, &chosen_side, conv, dst, wc, dstend-dst);
-
- if (count == RET_TOOSMALL)
- break;
- if (count == RET_ILSEQ) {
- src += consumed;
- unconv_num++;
- continue;
- }
-
- if (last_charset == NULL) {
- last_charset =
- _XlcGetCharSetWithSide(chosen_charset->name, chosen_side);
- if (last_charset == NULL) {
- src += consumed;
- unconv_num++;
- continue;
- }
- } else {
- if (!(last_charset->xrm_encoding_name == chosen_charset->xrm_name
- && (last_charset->side == XlcGLGR
- || last_charset->side == chosen_side)))
- break;
- }
- src += consumed;
- dst += count;
- }
-
- if (last_charset == NULL)
- return -1;
-
- *from = (XPointer) src;
- *from_left = srcend - src;
- *to = (XPointer) dst;
- *to_left = dstend - dst;
-
- if (num_args >= 1)
- *((XlcCharSet *)args[0]) = last_charset;
-
- return unconv_num;
-}
-
-static XlcConvMethodsRec iconv_mbstocs_methods = {
- close_tocs_converter,
- iconv_mbstocs,
- NULL
-};
-
-static XlcConv
-open_iconv_mbstocs(XLCd from_lcd, const char *from_type, XLCd to_lcd, const char *to_type)
-{
- return create_tocs_conv(from_lcd, &iconv_mbstocs_methods);
-}
-
-/* from XlcNMultiByte to XlcNChar */
-
-static int
-iconv_mbtocs(XlcConv conv, XPointer *from, int *from_left,
- XPointer *to, int *to_left, XPointer *args, int num_args)
-{
- Utf8Conv *preferred_charsets;
- XlcCharSet last_charset = NULL;
- unsigned char const *src;
- unsigned char const *srcend;
- unsigned char *dst;
- unsigned char *dstend;
- int unconv_num;
-
- if (from == NULL || *from == NULL)
- return 0;
-
- preferred_charsets = (Utf8Conv *) conv->state;
- src = (unsigned char const *) *from;
- srcend = src + *from_left;
- dst = (unsigned char *) *to;
- dstend = dst + *to_left;
- unconv_num = 0;
-
- while (src < srcend && dst < dstend) {
- Utf8Conv chosen_charset = NULL;
- XlcSide chosen_side = XlcNONE;
- wchar_t wc;
- int consumed;
- int count;
-
- /* Uses stdc iconv to convert multibyte -> widechar */
-
- consumed = mbtowc(&wc, (const char *)src, srcend-src);
- if (consumed == 0)
- break;
- if (consumed == -1) {
- src++;
- unconv_num++;
- continue;
- }
-
- count = charset_wctocs(preferred_charsets, &chosen_charset, &chosen_side, conv, dst, wc, dstend-dst);
- if (count == RET_TOOSMALL)
- break;
- if (count == RET_ILSEQ) {
- src += consumed;
- unconv_num++;
- continue;
- }
-
- if (last_charset == NULL) {
- last_charset =
- _XlcGetCharSetWithSide(chosen_charset->name, chosen_side);
- if (last_charset == NULL) {
- src += consumed;
- unconv_num++;
- continue;
- }
- } else {
- if (!(last_charset->xrm_encoding_name == chosen_charset->xrm_name
- && (last_charset->side == XlcGLGR
- || last_charset->side == chosen_side)))
- break;
- }
- src += consumed;
- dst += count;
- }
-
- if (last_charset == NULL)
- return -1;
-
- *from = (XPointer) src;
- *from_left = srcend - src;
- *to = (XPointer) dst;
- *to_left = dstend - dst;
-
- if (num_args >= 1)
- *((XlcCharSet *)args[0]) = last_charset;
-
- return unconv_num;
-}
-
-static XlcConvMethodsRec iconv_mbtocs_methods = {
- close_tocs_converter,
- iconv_mbtocs,
- NULL
-};
-
-static XlcConv
-open_iconv_mbtocs(XLCd from_lcd, const char *from_type, XLCd to_lcd, const char *to_type)
-{
- return create_tocs_conv(from_lcd, &iconv_mbtocs_methods );
-}
-
-/* from XlcNMultiByte to XlcNString */
-
-static int
-iconv_mbstostr(XlcConv conv, XPointer *from, int *from_left,
- XPointer *to, int *to_left, XPointer *args, int num_args)
-{
- unsigned char const *src;
- unsigned char const *srcend;
- unsigned char *dst;
- unsigned char *dstend;
- int unconv_num;
-
- if (from == NULL || *from == NULL)
- return 0;
-
- src = (unsigned char const *) *from;
- srcend = src + *from_left;
- dst = (unsigned char *) *to;
- dstend = dst + *to_left;
- unconv_num = 0;
-
- while (src < srcend) {
- unsigned char c;
- wchar_t wc;
- int consumed;
-
- /* Uses stdc iconv to convert multibyte -> widechar */
-
- consumed = mbtowc(&wc, (const char *)src, srcend-src);
- if (consumed == 0)
- break;
- if (dst == dstend)
- break;
- if (consumed == -1) {
- consumed = 1;
- c = BAD_CHAR;
- unconv_num++;
- } else {
- if ((wc & ~(wchar_t)0xff) != 0) {
- c = BAD_CHAR;
- unconv_num++;
- } else
- c = (unsigned char) wc;
- }
- *dst++ = c;
- src += consumed;
- }
-
- *from = (XPointer) src;
- *from_left = srcend - src;
- *to = (XPointer) dst;
- *to_left = dstend - dst;
-
- return unconv_num;
-}
-
-static XlcConvMethodsRec iconv_mbstostr_methods = {
- close_converter,
- iconv_mbstostr,
- NULL
-};
-
-static XlcConv
-open_iconv_mbstostr(XLCd from_lcd, const char *from_type, XLCd to_lcd, const char *to_type)
-{
- return create_conv(from_lcd, &iconv_mbstostr_methods);
-}
-
-/* from XlcNString to XlcNMultiByte */
-static int
-iconv_strtombs(XlcConv conv, XPointer *from, int *from_left,
- XPointer *to, int *to_left, XPointer *args, int num_args)
-{
- unsigned char const *src;
- unsigned char const *srcend;
- unsigned char *dst;
- unsigned char *dstend;
-
- if (from == NULL || *from == NULL)
- return 0;
-
- src = (unsigned char const *) *from;
- srcend = src + *from_left;
- dst = (unsigned char *) *to;
- dstend = dst + *to_left;
-
- while (src < srcend) {
- int count = wctomb((char *)dst, *src);
- if (count < 0)
- break;
- dst += count;
- src++;
- }
-
- *from = (XPointer) src;
- *from_left = srcend - src;
- *to = (XPointer) dst;
- *to_left = dstend - dst;
-
- return 0;
-}
-
-static XlcConvMethodsRec iconv_strtombs_methods= {
- close_converter,
- iconv_strtombs,
- NULL
-};
-
-static XlcConv
-open_iconv_strtombs(XLCd from_lcd, const char *from_type, XLCd to_lcd, const char *to_type)
-{
- return create_conv(from_lcd, &iconv_strtombs_methods);
-}
-
-/***************************************************************************/
-/* Part II: An iconv locale loader.
- *
- *Here we can assume that "multi-byte" is iconv and that `wchar_t' is Unicode.
- */
-
-/* from XlcNMultiByte to XlcNWideChar */
-static int
-iconv_mbstowcs(XlcConv conv, XPointer *from, int *from_left,
- XPointer *to, int *to_left, XPointer *args, int num_args)
-{
- char *src = *((char **) from);
- wchar_t *dst = *((wchar_t **) to);
- int src_left = *from_left;
- int dst_left = *to_left;
- int length, unconv_num = 0;
-
- while (src_left > 0 && dst_left > 0) {
- length = mbtowc(dst, src, src_left);
-
- if (length > 0) {
- src += length;
- src_left -= length;
- if (dst)
- dst++;
- dst_left--;
- } else if (length < 0) {
- src++;
- src_left--;
- unconv_num++;
- } else {
- /* null ? */
- src++;
- src_left--;
- if (dst)
- *dst++ = L'\0';
- dst_left--;
- }
- }
-
- *from = (XPointer) src;
- if (dst)
- *to = (XPointer) dst;
- *from_left = src_left;
- *to_left = dst_left;
-
- return unconv_num;
-}
-
-static XlcConvMethodsRec iconv_mbstowcs_methods = {
- close_converter,
- iconv_mbstowcs,
- NULL
-} ;
-
-static XlcConv
-open_iconv_mbstowcs(XLCd from_lcd, const char *from_type, XLCd to_lcd, const char *to_type)
-{
- return create_conv(from_lcd, &iconv_mbstowcs_methods);
-}
-
-static int
-iconv_wcstombs(XlcConv conv, XPointer *from, int *from_left,
- XPointer *to, int *to_left, XPointer *args, int num_args)
-{
- wchar_t *src = *((wchar_t **) from);
- char *dst = *((char **) to);
- int src_left = *from_left;
- int dst_left = *to_left;
- int length, unconv_num = 0;
-
- while (src_left > 0 && dst_left >= MB_CUR_MAX) {
- length = wctomb(dst, *src); /* XXX */
-
- if (length > 0) {
- src++;
- src_left--;
- if (dst)
- dst += length;
- dst_left -= length;
- } else if (length < 0) {
- src++;
- src_left--;
- unconv_num++;
- }
- }
-
- *from = (XPointer) src;
- if (dst)
- *to = (XPointer) dst;
- *from_left = src_left;
- *to_left = dst_left;
-
- return unconv_num;
-}
-
-static XlcConvMethodsRec iconv_wcstombs_methods = {
- close_converter,
- iconv_wcstombs,
- NULL
-} ;
-
-static XlcConv
-open_iconv_wcstombs(XLCd from_lcd, const char *from_type, XLCd to_lcd, const char *to_type)
-{
- return create_conv(from_lcd, &iconv_wcstombs_methods);
-}
-
-static XlcConv
-open_iconv_mbstofcs(
- XLCd from_lcd,
- const char *from_type,
- XLCd to_lcd,
- const char *to_type)
-{
- return create_tofontcs_conv(from_lcd, &iconv_mbstocs_methods);
-}
-
-/* Registers UTF-8 converters for a UTF-8 locale. */
-
-void
-_XlcAddUtf8LocaleConverters(
- XLCd lcd)
-{
- /* Register elementary converters. */
-
- _XlcSetConverter(lcd, XlcNMultiByte, lcd, XlcNWideChar, open_utf8towcs);
-
- _XlcSetConverter(lcd, XlcNWideChar, lcd, XlcNMultiByte, open_wcstoutf8);
- _XlcSetConverter(lcd, XlcNWideChar, lcd, XlcNString, open_wcstostr);
-
- _XlcSetConverter(lcd, XlcNString, lcd, XlcNWideChar, open_strtowcs);
-
- /* Register converters for XlcNCharSet. This implicitly provides
- * converters from and to XlcNCompoundText. */
-
- _XlcSetConverter(lcd, XlcNCharSet, lcd, XlcNMultiByte, open_cstoutf8);
- _XlcSetConverter(lcd, XlcNMultiByte, lcd, XlcNCharSet, open_utf8tocs);
- _XlcSetConverter(lcd, XlcNMultiByte, lcd, XlcNChar, open_utf8tocs1);
-
- _XlcSetConverter(lcd, XlcNCharSet, lcd, XlcNWideChar, open_cstowcs);
- _XlcSetConverter(lcd, XlcNWideChar, lcd, XlcNCharSet, open_wcstocs);
- _XlcSetConverter(lcd, XlcNWideChar, lcd, XlcNChar, open_wcstocs1);
-
- _XlcSetConverter(lcd, XlcNString, lcd, XlcNMultiByte, open_strtoutf8);
- _XlcSetConverter(lcd, XlcNMultiByte, lcd, XlcNString, open_utf8tostr);
- _XlcSetConverter(lcd, XlcNUtf8String, lcd, XlcNMultiByte, open_identity);
- _XlcSetConverter(lcd, XlcNMultiByte, lcd, XlcNUtf8String, open_identity);
-
- /* Register converters for XlcNFontCharSet */
- _XlcSetConverter(lcd, XlcNMultiByte, lcd, XlcNFontCharSet, open_utf8tofcs);
- _XlcSetConverter(lcd, XlcNWideChar, lcd, XlcNFontCharSet, open_wcstofcs);
-}
-
-void
-_XlcAddGB18030LocaleConverters(
- XLCd lcd)
-{
-
- /* Register elementary converters. */
- _XlcSetConverter(lcd, XlcNMultiByte, lcd, XlcNWideChar, open_iconv_mbstowcs);
- _XlcSetConverter(lcd, XlcNWideChar, lcd, XlcNMultiByte, open_iconv_wcstombs);
-
- /* Register converters for XlcNCharSet. This implicitly provides
- * converters from and to XlcNCompoundText. */
-
- _XlcSetConverter(lcd, XlcNCharSet, lcd, XlcNMultiByte, open_iconv_cstombs);
- _XlcSetConverter(lcd, XlcNMultiByte, lcd, XlcNCharSet, open_iconv_mbstocs);
- _XlcSetConverter(lcd, XlcNMultiByte, lcd, XlcNChar, open_iconv_mbtocs);
- _XlcSetConverter(lcd, XlcNString, lcd, XlcNMultiByte, open_iconv_strtombs);
- _XlcSetConverter(lcd, XlcNMultiByte, lcd, XlcNString, open_iconv_mbstostr);
-
- /* Register converters for XlcNFontCharSet */
- _XlcSetConverter(lcd, XlcNMultiByte, lcd, XlcNFontCharSet, open_iconv_mbstofcs);
-
- _XlcSetConverter(lcd, XlcNWideChar, lcd, XlcNString, open_wcstostr);
- _XlcSetConverter(lcd, XlcNString, lcd, XlcNWideChar, open_strtowcs);
- _XlcSetConverter(lcd, XlcNCharSet, lcd, XlcNWideChar, open_cstowcs);
- _XlcSetConverter(lcd, XlcNWideChar, lcd, XlcNCharSet, open_wcstocs);
- _XlcSetConverter(lcd, XlcNWideChar, lcd, XlcNChar, open_wcstocs1);
-
- /* Register converters for XlcNFontCharSet */
- _XlcSetConverter(lcd, XlcNWideChar, lcd, XlcNFontCharSet, open_wcstofcs);
-}
+/******************************************************************
+
+ Copyright 1993 by SunSoft, Inc.
+ Copyright 1999-2000 by Bruno Haible
+
+Permission to use, copy, modify, distribute, and sell this software
+and its documentation for any purpose is hereby granted without fee,
+provided that the above copyright notice appear in all copies and
+that both that copyright notice and this permission notice appear
+in supporting documentation, and that the names of SunSoft, Inc. and
+Bruno Haible not be used in advertising or publicity pertaining to
+distribution of the software without specific, written prior
+permission. SunSoft, Inc. and Bruno Haible make no representations
+about the suitability of this software for any purpose. It is
+provided "as is" without express or implied warranty.
+
+SunSoft Inc. AND Bruno Haible DISCLAIM ALL WARRANTIES WITH REGARD
+TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
+AND FITNESS, IN NO EVENT SHALL SunSoft, Inc. OR Bruno Haible BE LIABLE
+FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT
+OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+
+******************************************************************/
+
+/*
+ * This file contains:
+ *
+ * I. Conversion routines CompoundText/CharSet <--> Unicode/UTF-8.
+ *
+ * Used for three purposes:
+ * 1. The UTF-8 locales, see below.
+ * 2. Unicode aware applications for which the use of 8-bit character
+ * sets is an anachronism.
+ * 3. For conversion from keysym to locale encoding.
+ *
+ * II. Conversion files for an UTF-8 locale loader.
+ * Supports: all locales with codeset UTF-8.
+ * How: Provides converters for UTF-8.
+ * Platforms: all systems.
+ *
+ * The loader itself is located in lcUTF8.c.
+ */
+
+/*
+ * The conversion from UTF-8 to CompoundText is realized in a very
+ * conservative way. Recall that CompoundText data is used for inter-client
+ * communication purposes. We distinguish three classes of clients:
+ * - Clients which accept only those pieces of CompoundText which belong to
+ * the character set understood by the current locale.
+ * (Example: clients which are linked to an older X11 library.)
+ * - Clients which accept CompoundText with multiple character sets and parse
+ * it themselves.
+ * (Example: emacs, xemacs.)
+ * - Clients which rely entirely on the X{mb,wc}TextPropertyToTextList
+ * functions for the conversion of CompoundText to their current locale's
+ * multi-byte/wide-character format.
+ * For best interoperation, the UTF-8 to CompoundText conversion proceeds as
+ * follows. For every character, it first tests whether the character is
+ * representable in the current locale's original (non-UTF-8) character set.
+ * If not, it goes through the list of predefined character sets for
+ * CompoundText and tests if the character is representable in that character
+ * set. If so, it encodes the character using its code within that character
+ * set. If not, it uses an UTF-8-in-CompoundText encapsulation. Since
+ * clients of the first and second kind ignore such encapsulated text,
+ * this encapsulation is kept to a minimum and terminated as early as possible.
+ *
+ * In a distant future, when clients of the first and second kind will have
+ * disappeared, we will be able to stuff UTF-8 data directly in CompoundText
+ * without first going through the list of predefined character sets.
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include <stdio.h>
+#include "Xlibint.h"
+#include "XlcPubI.h"
+#include "XlcGeneric.h"
+
+static XlcConv
+create_conv(
+ XLCd lcd,
+ XlcConvMethods methods)
+{
+ XlcConv conv;
+
+ conv = (XlcConv) Xmalloc(sizeof(XlcConvRec));
+ if (conv == (XlcConv) NULL)
+ return (XlcConv) NULL;
+
+ conv->methods = methods;
+ conv->state = NULL;
+
+ return conv;
+}
+
+static void
+close_converter(
+ XlcConv conv)
+{
+ Xfree((char *) conv);
+}
+
+/* Replacement character for invalid multibyte sequence or wide character. */
+#define BAD_WCHAR ((ucs4_t) 0xfffd)
+#define BAD_CHAR '?'
+
+/***************************************************************************/
+/* Part I: Conversion routines CompoundText/CharSet <--> Unicode/UTF-8.
+ *
+ * Note that this code works in any locale. We store Unicode values in
+ * `ucs4_t' variables, but don't pass them to the user.
+ *
+ * This code has to support all character sets that are used for CompoundText,
+ * nothing more, nothing less. See the table in lcCT.c.
+ * Since the conversion _to_ CompoundText is likely to need the tables for all
+ * character sets at once, we don't use dynamic loading (of tables or shared
+ * libraries through iconv()). Use a fixed set of tables instead.
+ *
+ * We use statically computed tables, not dynamically allocated arrays,
+ * because it's more memory efficient: Different processes using the same
+ * libX11 shared library share the "text" and read-only "data" sections.
+ */
+
+typedef unsigned int ucs4_t;
+#define conv_t XlcConv
+
+typedef struct _Utf8ConvRec {
+ const char *name;
+ XrmQuark xrm_name;
+ int (* cstowc) (XlcConv, ucs4_t *, unsigned char const *, int);
+ int (* wctocs) (XlcConv, unsigned char *, ucs4_t, int);
+} Utf8ConvRec, *Utf8Conv;
+
+/*
+ * int xxx_cstowc (XlcConv conv, ucs4_t *pwc, unsigned char const *s, int n)
+ * converts the byte sequence starting at s to a wide character. Up to n bytes
+ * are available at s. n is >= 1.
+ * Result is number of bytes consumed (if a wide character was read),
+ * or 0 if invalid, or -1 if n too small.
+ *
+ * int xxx_wctocs (XlcConv conv, unsigned char *r, ucs4_t wc, int n)
+ * converts the wide character wc to the character set xxx, and stores the
+ * result beginning at r. Up to n bytes may be written at r. n is >= 1.
+ * Result is number of bytes written, or 0 if invalid, or -1 if n too small.
+ */
+
+/* Return code if invalid. (xxx_mbtowc, xxx_wctomb) */
+#define RET_ILSEQ 0
+/* Return code if only a shift sequence of n bytes was read. (xxx_mbtowc) */
+#define RET_TOOFEW(n) (-1-(n))
+/* Return code if output buffer is too small. (xxx_wctomb, xxx_reset) */
+#define RET_TOOSMALL -1
+
+/*
+ * The tables below are bijective. It would be possible to extend the
+ * xxx_wctocs tables to do some transliteration (e.g. U+201C,U+201D -> 0x22)
+ * but *only* with characters not contained in any other table, and *only*
+ * when the current locale is not an UTF-8 locale.
+ */
+
+#include "lcUniConv/utf8.h"
+#include "lcUniConv/ucs2be.h"
+#ifdef notused
+#include "lcUniConv/ascii.h"
+#endif
+#include "lcUniConv/iso8859_1.h"
+#include "lcUniConv/iso8859_2.h"
+#include "lcUniConv/iso8859_3.h"
+#include "lcUniConv/iso8859_4.h"
+#include "lcUniConv/iso8859_5.h"
+#include "lcUniConv/iso8859_6.h"
+#include "lcUniConv/iso8859_7.h"
+#include "lcUniConv/iso8859_8.h"
+#include "lcUniConv/iso8859_9.h"
+#include "lcUniConv/iso8859_10.h"
+#include "lcUniConv/iso8859_11.h"
+#include "lcUniConv/iso8859_13.h"
+#include "lcUniConv/iso8859_14.h"
+#include "lcUniConv/iso8859_15.h"
+#include "lcUniConv/iso8859_16.h"
+#include "lcUniConv/iso8859_9e.h"
+#include "lcUniConv/jisx0201.h"
+#include "lcUniConv/tis620.h"
+#include "lcUniConv/koi8_r.h"
+#include "lcUniConv/koi8_u.h"
+#include "lcUniConv/koi8_c.h"
+#include "lcUniConv/armscii_8.h"
+#include "lcUniConv/cp1133.h"
+#include "lcUniConv/mulelao.h"
+#include "lcUniConv/viscii.h"
+#include "lcUniConv/tcvn.h"
+#include "lcUniConv/georgian_academy.h"
+#include "lcUniConv/georgian_ps.h"
+#include "lcUniConv/cp1251.h"
+#include "lcUniConv/cp1255.h"
+#include "lcUniConv/cp1256.h"
+#include "lcUniConv/tatar_cyr.h"
+
+typedef struct {
+ unsigned short indx; /* index into big table */
+ unsigned short used; /* bitmask of used entries */
+} Summary16;
+
+#include "lcUniConv/gb2312.h"
+#include "lcUniConv/jisx0208.h"
+#include "lcUniConv/jisx0212.h"
+#include "lcUniConv/ksc5601.h"
+#include "lcUniConv/big5.h"
+#include "lcUniConv/big5_emacs.h"
+#include "lcUniConv/big5hkscs.h"
+#include "lcUniConv/gbk.h"
+
+static Utf8ConvRec all_charsets[] = {
+ /* The ISO10646-1/UTF-8 entry occurs twice, once at the beginning
+ (for lookup speed), once at the end (as a fallback). */
+ { "ISO10646-1", NULLQUARK,
+ utf8_mbtowc, utf8_wctomb
+ },
+
+ { "ISO8859-1", NULLQUARK,
+ iso8859_1_mbtowc, iso8859_1_wctomb
+ },
+ { "ISO8859-2", NULLQUARK,
+ iso8859_2_mbtowc, iso8859_2_wctomb
+ },
+ { "ISO8859-3", NULLQUARK,
+ iso8859_3_mbtowc, iso8859_3_wctomb
+ },
+ { "ISO8859-4", NULLQUARK,
+ iso8859_4_mbtowc, iso8859_4_wctomb
+ },
+ { "ISO8859-5", NULLQUARK,
+ iso8859_5_mbtowc, iso8859_5_wctomb
+ },
+ { "ISO8859-6", NULLQUARK,
+ iso8859_6_mbtowc, iso8859_6_wctomb
+ },
+ { "ISO8859-7", NULLQUARK,
+ iso8859_7_mbtowc, iso8859_7_wctomb
+ },
+ { "ISO8859-8", NULLQUARK,
+ iso8859_8_mbtowc, iso8859_8_wctomb
+ },
+ { "ISO8859-9", NULLQUARK,
+ iso8859_9_mbtowc, iso8859_9_wctomb
+ },
+ { "ISO8859-10", NULLQUARK,
+ iso8859_10_mbtowc, iso8859_10_wctomb
+ },
+ { "ISO8859-11", NULLQUARK,
+ iso8859_11_mbtowc, iso8859_11_wctomb
+ },
+ { "ISO8859-13", NULLQUARK,
+ iso8859_13_mbtowc, iso8859_13_wctomb
+ },
+ { "ISO8859-14", NULLQUARK,
+ iso8859_14_mbtowc, iso8859_14_wctomb
+ },
+ { "ISO8859-15", NULLQUARK,
+ iso8859_15_mbtowc, iso8859_15_wctomb
+ },
+ { "ISO8859-16", NULLQUARK,
+ iso8859_16_mbtowc, iso8859_16_wctomb
+ },
+ { "JISX0201.1976-0", NULLQUARK,
+ jisx0201_mbtowc, jisx0201_wctomb
+ },
+ { "TIS620-0", NULLQUARK,
+ tis620_mbtowc, tis620_wctomb
+ },
+ { "GB2312.1980-0", NULLQUARK,
+ gb2312_mbtowc, gb2312_wctomb
+ },
+ { "JISX0208.1983-0", NULLQUARK,
+ jisx0208_mbtowc, jisx0208_wctomb
+ },
+ { "JISX0208.1990-0", NULLQUARK,
+ jisx0208_mbtowc, jisx0208_wctomb
+ },
+ { "JISX0212.1990-0", NULLQUARK,
+ jisx0212_mbtowc, jisx0212_wctomb
+ },
+ { "KSC5601.1987-0", NULLQUARK,
+ ksc5601_mbtowc, ksc5601_wctomb
+ },
+ { "KOI8-R", NULLQUARK,
+ koi8_r_mbtowc, koi8_r_wctomb
+ },
+ { "KOI8-U", NULLQUARK,
+ koi8_u_mbtowc, koi8_u_wctomb
+ },
+ { "KOI8-C", NULLQUARK,
+ koi8_c_mbtowc, koi8_c_wctomb
+ },
+ { "TATAR-CYR", NULLQUARK,
+ tatar_cyr_mbtowc, tatar_cyr_wctomb
+ },
+ { "ARMSCII-8", NULLQUARK,
+ armscii_8_mbtowc, armscii_8_wctomb
+ },
+ { "IBM-CP1133", NULLQUARK,
+ cp1133_mbtowc, cp1133_wctomb
+ },
+ { "MULELAO-1", NULLQUARK,
+ mulelao_mbtowc, mulelao_wctomb
+ },
+ { "VISCII1.1-1", NULLQUARK,
+ viscii_mbtowc, viscii_wctomb
+ },
+ { "TCVN-5712", NULLQUARK,
+ tcvn_mbtowc, tcvn_wctomb
+ },
+ { "GEORGIAN-ACADEMY", NULLQUARK,
+ georgian_academy_mbtowc, georgian_academy_wctomb
+ },
+ { "GEORGIAN-PS", NULLQUARK,
+ georgian_ps_mbtowc, georgian_ps_wctomb
+ },
+ { "ISO8859-9E", NULLQUARK,
+ iso8859_9e_mbtowc, iso8859_9e_wctomb
+ },
+ { "MICROSOFT-CP1251", NULLQUARK,
+ cp1251_mbtowc, cp1251_wctomb
+ },
+ { "MICROSOFT-CP1255", NULLQUARK,
+ cp1255_mbtowc, cp1255_wctomb
+ },
+ { "MICROSOFT-CP1256", NULLQUARK,
+ cp1256_mbtowc, cp1256_wctomb
+ },
+ { "BIG5-0", NULLQUARK,
+ big5_mbtowc, big5_wctomb
+ },
+ { "BIG5-E0", NULLQUARK,
+ big5_0_mbtowc, big5_0_wctomb
+ },
+ { "BIG5-E1", NULLQUARK,
+ big5_1_mbtowc, big5_1_wctomb
+ },
+ { "GBK-0", NULLQUARK,
+ gbk_mbtowc, gbk_wctomb
+ },
+ { "BIG5HKSCS-0", NULLQUARK,
+ big5hkscs_mbtowc, big5hkscs_wctomb
+ },
+
+ /* The ISO10646-1/UTF-8 entry occurs twice, once at the beginning
+ (for lookup speed), once at the end (as a fallback). */
+ { "ISO10646-1", NULLQUARK,
+ utf8_mbtowc, utf8_wctomb
+ },
+
+ /* Encoding ISO10646-1 for fonts means UCS2-like encoding
+ so for conversion to FontCharSet we need this record */
+ { "ISO10646-1", NULLQUARK,
+ ucs2be_mbtowc, ucs2be_wctomb
+ }
+};
+
+#define charsets_table_size (sizeof(all_charsets)/sizeof(all_charsets[0]))
+#define all_charsets_count (charsets_table_size - 1)
+#define ucs2_conv_index (charsets_table_size - 1)
+
+static void
+init_all_charsets (void)
+{
+ Utf8Conv convptr;
+ int i;
+
+ for (convptr = all_charsets, i = charsets_table_size; i > 0; convptr++, i--)
+ convptr->xrm_name = XrmStringToQuark(convptr->name);
+}
+
+#define lazy_init_all_charsets() \
+ do { \
+ if (all_charsets[0].xrm_name == NULLQUARK) \
+ init_all_charsets(); \
+ } while (0)
+
+/* from XlcNCharSet to XlcNUtf8String */
+
+static int
+cstoutf8(
+ XlcConv conv,
+ XPointer *from,
+ int *from_left,
+ XPointer *to,
+ int *to_left,
+ XPointer *args,
+ int num_args)
+{
+ XlcCharSet charset;
+ const char *name;
+ Utf8Conv convptr;
+ int i;
+ unsigned char const *src;
+ unsigned char const *srcend;
+ unsigned char *dst;
+ unsigned char *dstend;
+ int unconv_num;
+
+ if (from == NULL || *from == NULL)
+ return 0;
+
+ if (num_args < 1)
+ return -1;
+
+ charset = (XlcCharSet) args[0];
+ name = charset->encoding_name;
+ /* not charset->name because the latter has a ":GL"/":GR" suffix */
+
+ for (convptr = all_charsets, i = all_charsets_count-1; i > 0; convptr++, i--)
+ if (!strcmp(convptr->name, name))
+ break;
+ if (i == 0)
+ return -1;
+
+ src = (unsigned char const *) *from;
+ srcend = src + *from_left;
+ dst = (unsigned char *) *to;
+ dstend = dst + *to_left;
+ unconv_num = 0;
+
+ while (src < srcend) {
+ ucs4_t wc;
+ int consumed;
+ int count;
+
+ consumed = convptr->cstowc(conv, &wc, src, srcend-src);
+ if (consumed == RET_ILSEQ)
+ return -1;
+ if (consumed == RET_TOOFEW(0))
+ break;
+
+ count = utf8_wctomb(NULL, dst, wc, dstend-dst);
+ if (count == RET_TOOSMALL)
+ break;
+ if (count == RET_ILSEQ) {
+ count = utf8_wctomb(NULL, dst, BAD_WCHAR, dstend-dst);
+ if (count == RET_TOOSMALL)
+ break;
+ unconv_num++;
+ }
+ src += consumed;
+ dst += count;
+ }
+
+ *from = (XPointer) src;
+ *from_left = srcend - src;
+ *to = (XPointer) dst;
+ *to_left = dstend - dst;
+
+ return unconv_num;
+}
+
+static XlcConvMethodsRec methods_cstoutf8 = {
+ close_converter,
+ cstoutf8,
+ NULL
+};
+
+static XlcConv
+open_cstoutf8(
+ XLCd from_lcd,
+ const char *from_type,
+ XLCd to_lcd,
+ const char *to_type)
+{
+ lazy_init_all_charsets();
+ return create_conv(from_lcd, &methods_cstoutf8);
+}
+
+/* from XlcNUtf8String to XlcNCharSet */
+
+static XlcConv
+create_tocs_conv(
+ XLCd lcd,
+ XlcConvMethods methods)
+{
+ XlcConv conv;
+ CodeSet *codeset_list;
+ int codeset_num;
+ int charset_num;
+ int i, j, k;
+ Utf8Conv *preferred;
+
+ lazy_init_all_charsets();
+
+ codeset_list = XLC_GENERIC(lcd, codeset_list);
+ codeset_num = XLC_GENERIC(lcd, codeset_num);
+
+ charset_num = 0;
+ for (i = 0; i < codeset_num; i++)
+ charset_num += codeset_list[i]->num_charsets;
+ if (charset_num > all_charsets_count-1)
+ charset_num = all_charsets_count-1;
+
+ conv = (XlcConv) Xmalloc(sizeof(XlcConvRec)
+ + (charset_num + 1) * sizeof(Utf8Conv));
+ if (conv == (XlcConv) NULL)
+ return (XlcConv) NULL;
+ preferred = (Utf8Conv *) ((char *) conv + sizeof(XlcConvRec));
+
+ /* Loop through all codesets mentioned in the locale. */
+ charset_num = 0;
+ for (i = 0; i < codeset_num; i++) {
+ XlcCharSet *charsets = codeset_list[i]->charset_list;
+ int num_charsets = codeset_list[i]->num_charsets;
+ for (j = 0; j < num_charsets; j++) {
+ const char *name = charsets[j]->encoding_name;
+ /* If it wasn't already encountered... */
+ for (k = charset_num-1; k >= 0; k--)
+ if (!strcmp(preferred[k]->name, name))
+ break;
+ if (k < 0) {
+ /* Look it up in all_charsets[]. */
+ for (k = 0; k < all_charsets_count-1; k++)
+ if (!strcmp(all_charsets[k].name, name)) {
+ /* Add it to the preferred set. */
+ preferred[charset_num++] = &all_charsets[k];
+ break;
+ }
+ }
+ }
+ }
+ preferred[charset_num] = (Utf8Conv) NULL;
+
+ conv->methods = methods;
+ conv->state = (XPointer) preferred;
+
+ return conv;
+}
+
+static void
+close_tocs_converter(
+ XlcConv conv)
+{
+ /* conv->state is allocated together with conv, free both at once. */
+ Xfree((char *) conv);
+}
+
+/*
+ * Converts a Unicode character to an appropriate character set. The NULL
+ * terminated array of preferred character sets is passed as first argument.
+ * If successful, *charsetp is set to the character set that was used, and
+ * *sidep is set to the character set side (XlcGL or XlcGR).
+ */
+static int
+charset_wctocs(
+ Utf8Conv *preferred,
+ Utf8Conv *charsetp,
+ XlcSide *sidep,
+ XlcConv conv,
+ unsigned char *r,
+ ucs4_t wc,
+ int n)
+{
+ int count;
+ Utf8Conv convptr;
+ int i;
+
+ for (; *preferred != (Utf8Conv) NULL; preferred++) {
+ convptr = *preferred;
+ count = convptr->wctocs(conv, r, wc, n);
+ if (count == RET_TOOSMALL)
+ return RET_TOOSMALL;
+ if (count != RET_ILSEQ) {
+ *charsetp = convptr;
+ *sidep = (*r < 0x80 ? XlcGL : XlcGR);
+ return count;
+ }
+ }
+ for (convptr = all_charsets+1, i = all_charsets_count-1; i > 0; convptr++, i--) {
+ count = convptr->wctocs(conv, r, wc, n);
+ if (count == RET_TOOSMALL)
+ return RET_TOOSMALL;
+ if (count != RET_ILSEQ) {
+ *charsetp = convptr;
+ *sidep = (*r < 0x80 ? XlcGL : XlcGR);
+ return count;
+ }
+ }
+ return RET_ILSEQ;
+}
+
+static int
+utf8tocs(
+ XlcConv conv,
+ XPointer *from,
+ int *from_left,
+ XPointer *to,
+ int *to_left,
+ XPointer *args,
+ int num_args)
+{
+ Utf8Conv *preferred_charsets;
+ XlcCharSet last_charset = NULL;
+ unsigned char const *src;
+ unsigned char const *srcend;
+ unsigned char *dst;
+ unsigned char *dstend;
+ int unconv_num;
+
+ if (from == NULL || *from == NULL)
+ return 0;
+
+ preferred_charsets = (Utf8Conv *) conv->state;
+ src = (unsigned char const *) *from;
+ srcend = src + *from_left;
+ dst = (unsigned char *) *to;
+ dstend = dst + *to_left;
+ unconv_num = 0;
+
+ while (src < srcend && dst < dstend) {
+ Utf8Conv chosen_charset = NULL;
+ XlcSide chosen_side = XlcNONE;
+ ucs4_t wc;
+ int consumed;
+ int count;
+
+ consumed = utf8_mbtowc(NULL, &wc, src, srcend-src);
+ if (consumed == RET_TOOFEW(0))
+ break;
+ if (consumed == RET_ILSEQ) {
+ src++;
+ unconv_num++;
+ continue;
+ }
+
+ count = charset_wctocs(preferred_charsets, &chosen_charset, &chosen_side, conv, dst, wc, dstend-dst);
+ if (count == RET_TOOSMALL)
+ break;
+ if (count == RET_ILSEQ) {
+ src += consumed;
+ unconv_num++;
+ continue;
+ }
+
+ if (last_charset == NULL) {
+ last_charset =
+ _XlcGetCharSetWithSide(chosen_charset->name, chosen_side);
+ if (last_charset == NULL) {
+ src += consumed;
+ unconv_num++;
+ continue;
+ }
+ } else {
+ if (!(last_charset->xrm_encoding_name == chosen_charset->xrm_name
+ && (last_charset->side == XlcGLGR
+ || last_charset->side == chosen_side)))
+ break;
+ }
+ src += consumed;
+ dst += count;
+ }
+
+ if (last_charset == NULL)
+ return -1;
+
+ *from = (XPointer) src;
+ *from_left = srcend - src;
+ *to = (XPointer) dst;
+ *to_left = dstend - dst;
+
+ if (num_args >= 1)
+ *((XlcCharSet *)args[0]) = last_charset;
+
+ return unconv_num;
+}
+
+static XlcConvMethodsRec methods_utf8tocs = {
+ close_tocs_converter,
+ utf8tocs,
+ NULL
+};
+
+static XlcConv
+open_utf8tocs(
+ XLCd from_lcd,
+ const char *from_type,
+ XLCd to_lcd,
+ const char *to_type)
+{
+ return create_tocs_conv(from_lcd, &methods_utf8tocs);
+}
+
+/* from XlcNUtf8String to XlcNChar */
+
+static int
+utf8tocs1(
+ XlcConv conv,
+ XPointer *from,
+ int *from_left,
+ XPointer *to,
+ int *to_left,
+ XPointer *args,
+ int num_args)
+{
+ Utf8Conv *preferred_charsets;
+ XlcCharSet last_charset = NULL;
+ unsigned char const *src;
+ unsigned char const *srcend;
+ unsigned char *dst;
+ unsigned char *dstend;
+ int unconv_num;
+
+ if (from == NULL || *from == NULL)
+ return 0;
+
+ preferred_charsets = (Utf8Conv *) conv->state;
+ src = (unsigned char const *) *from;
+ srcend = src + *from_left;
+ dst = (unsigned char *) *to;
+ dstend = dst + *to_left;
+ unconv_num = 0;
+
+ while (src < srcend && dst < dstend) {
+ Utf8Conv chosen_charset = NULL;
+ XlcSide chosen_side = XlcNONE;
+ ucs4_t wc;
+ int consumed;
+ int count;
+
+ consumed = utf8_mbtowc(NULL, &wc, src, srcend-src);
+ if (consumed == RET_TOOFEW(0))
+ break;
+ if (consumed == RET_ILSEQ) {
+ src++;
+ unconv_num++;
+ continue;
+ }
+
+ count = charset_wctocs(preferred_charsets, &chosen_charset, &chosen_side, conv, dst, wc, dstend-dst);
+ if (count == RET_TOOSMALL)
+ break;
+ if (count == RET_ILSEQ) {
+ src += consumed;
+ unconv_num++;
+ continue;
+ }
+
+ if (last_charset == NULL) {
+ last_charset =
+ _XlcGetCharSetWithSide(chosen_charset->name, chosen_side);
+ if (last_charset == NULL) {
+ src += consumed;
+ unconv_num++;
+ continue;
+ }
+ } else {
+ if (!(last_charset->xrm_encoding_name == chosen_charset->xrm_name
+ && (last_charset->side == XlcGLGR
+ || last_charset->side == chosen_side)))
+ break;
+ }
+ src += consumed;
+ dst += count;
+ break;
+ }
+
+ if (last_charset == NULL)
+ return -1;
+
+ *from = (XPointer) src;
+ *from_left = srcend - src;
+ *to = (XPointer) dst;
+ *to_left = dstend - dst;
+
+ if (num_args >= 1)
+ *((XlcCharSet *)args[0]) = last_charset;
+
+ return unconv_num;
+}
+
+static XlcConvMethodsRec methods_utf8tocs1 = {
+ close_tocs_converter,
+ utf8tocs1,
+ NULL
+};
+
+static XlcConv
+open_utf8tocs1(
+ XLCd from_lcd,
+ const char *from_type,
+ XLCd to_lcd,
+ const char *to_type)
+{
+ return create_tocs_conv(from_lcd, &methods_utf8tocs1);
+}
+
+/* from XlcNUtf8String to XlcNString */
+
+static int
+utf8tostr(
+ XlcConv conv,
+ XPointer *from,
+ int *from_left,
+ XPointer *to,
+ int *to_left,
+ XPointer *args,
+ int num_args)
+{
+ unsigned char const *src;
+ unsigned char const *srcend;
+ unsigned char *dst;
+ unsigned char *dstend;
+ int unconv_num;
+
+ if (from == NULL || *from == NULL)
+ return 0;
+
+ src = (unsigned char const *) *from;
+ srcend = src + *from_left;
+ dst = (unsigned char *) *to;
+ dstend = dst + *to_left;
+ unconv_num = 0;
+
+ while (src < srcend) {
+ unsigned char c;
+ ucs4_t wc;
+ int consumed;
+
+ consumed = utf8_mbtowc(NULL, &wc, src, srcend-src);
+ if (consumed == RET_TOOFEW(0))
+ break;
+ if (dst == dstend)
+ break;
+ if (consumed == RET_ILSEQ) {
+ consumed = 1;
+ c = BAD_CHAR;
+ unconv_num++;
+ } else {
+ if ((wc & ~(ucs4_t)0xff) != 0) {
+ c = BAD_CHAR;
+ unconv_num++;
+ } else
+ c = (unsigned char) wc;
+ }
+ *dst++ = c;
+ src += consumed;
+ }
+
+ *from = (XPointer) src;
+ *from_left = srcend - src;
+ *to = (XPointer) dst;
+ *to_left = dstend - dst;
+
+ return unconv_num;
+}
+
+static XlcConvMethodsRec methods_utf8tostr = {
+ close_converter,
+ utf8tostr,
+ NULL
+};
+
+static XlcConv
+open_utf8tostr(
+ XLCd from_lcd,
+ const char *from_type,
+ XLCd to_lcd,
+ const char *to_type)
+{
+ return create_conv(from_lcd, &methods_utf8tostr);
+}
+
+/* from XlcNString to XlcNUtf8String */
+
+static int
+strtoutf8(
+ XlcConv conv,
+ XPointer *from,
+ int *from_left,
+ XPointer *to,
+ int *to_left,
+ XPointer *args,
+ int num_args)
+{
+ unsigned char const *src;
+ unsigned char const *srcend;
+ unsigned char *dst;
+ unsigned char *dstend;
+
+ if (from == NULL || *from == NULL)
+ return 0;
+
+ src = (unsigned char const *) *from;
+ srcend = src + *from_left;
+ dst = (unsigned char *) *to;
+ dstend = dst + *to_left;
+
+ while (src < srcend) {
+ int count = utf8_wctomb(NULL, dst, *src, dstend-dst);
+ if (count == RET_TOOSMALL)
+ break;
+ dst += count;
+ src++;
+ }
+
+ *from = (XPointer) src;
+ *from_left = srcend - src;
+ *to = (XPointer) dst;
+ *to_left = dstend - dst;
+
+ return 0;
+}
+
+static XlcConvMethodsRec methods_strtoutf8 = {
+ close_converter,
+ strtoutf8,
+ NULL
+};
+
+static XlcConv
+open_strtoutf8(
+ XLCd from_lcd,
+ const char *from_type,
+ XLCd to_lcd,
+ const char *to_type)
+{
+ return create_conv(from_lcd, &methods_strtoutf8);
+}
+
+/* Support for the input methods. */
+
+XPointer
+_Utf8GetConvByName(
+ const char *name)
+{
+ XrmQuark xrm_name;
+ Utf8Conv convptr;
+ int i;
+
+ if (name == NULL)
+ return (XPointer) NULL;
+
+ lazy_init_all_charsets();
+ xrm_name = XrmStringToQuark(name);
+
+ for (convptr = all_charsets, i = all_charsets_count-1; i > 0; convptr++, i--)
+ if (convptr->xrm_name == xrm_name)
+ return (XPointer) convptr->wctocs;
+ return (XPointer) NULL;
+}
+
+/* from XlcNUcsChar to XlcNChar, needed for input methods */
+
+static XlcConv
+create_ucstocs_conv(
+ XLCd lcd,
+ XlcConvMethods methods)
+{
+
+ if (XLC_PUBLIC_PART(lcd)->codeset
+ && _XlcCompareISOLatin1(XLC_PUBLIC_PART(lcd)->codeset, "UTF-8") == 0) {
+ XlcConv conv;
+ Utf8Conv *preferred;
+
+ lazy_init_all_charsets();
+
+ conv = (XlcConv) Xmalloc(sizeof(XlcConvRec) + 2 * sizeof(Utf8Conv));
+ if (conv == (XlcConv) NULL)
+ return (XlcConv) NULL;
+ preferred = (Utf8Conv *) ((char *) conv + sizeof(XlcConvRec));
+
+ preferred[0] = &all_charsets[0]; /* ISO10646 */
+ preferred[1] = (Utf8Conv) NULL;
+
+ conv->methods = methods;
+ conv->state = (XPointer) preferred;
+
+ return conv;
+ } else {
+ return create_tocs_conv(lcd, methods);
+ }
+}
+
+static int
+charset_wctocs_exactly(
+ Utf8Conv *preferred,
+ Utf8Conv *charsetp,
+ XlcSide *sidep,
+ XlcConv conv,
+ unsigned char *r,
+ ucs4_t wc,
+ int n)
+{
+ int count;
+ Utf8Conv convptr;
+
+ for (; *preferred != (Utf8Conv) NULL; preferred++) {
+ convptr = *preferred;
+ count = convptr->wctocs(conv, r, wc, n);
+ if (count == RET_TOOSMALL)
+ return RET_TOOSMALL;
+ if (count != RET_ILSEQ) {
+ *charsetp = convptr;
+ *sidep = (*r < 0x80 ? XlcGL : XlcGR);
+ return count;
+ }
+ }
+ return RET_ILSEQ;
+}
+
+static int
+ucstocs1(
+ XlcConv conv,
+ XPointer *from,
+ int *from_left,
+ XPointer *to,
+ int *to_left,
+ XPointer *args,
+ int num_args)
+{
+ ucs4_t const *src = (ucs4_t const *) *from;
+ unsigned char *dst = (unsigned char *) *to;
+ int unconv_num = 0;
+ Utf8Conv *preferred_charsets = (Utf8Conv *) conv->state;
+ Utf8Conv chosen_charset = NULL;
+ XlcSide chosen_side = XlcNONE;
+ XlcCharSet charset = NULL;
+ int count;
+
+ if (from == NULL || *from == NULL)
+ return 0;
+
+ count = charset_wctocs_exactly(preferred_charsets, &chosen_charset,
+ &chosen_side, conv, dst, *src, *to_left);
+ if (count < 1) {
+ unconv_num++;
+ count = 0;
+ } else {
+ charset = _XlcGetCharSetWithSide(chosen_charset->name, chosen_side);
+ }
+ if (charset == NULL)
+ return -1;
+
+ *from = (XPointer) ++src;
+ (*from_left)--;
+ *to = (XPointer) dst;
+ *to_left -= count;
+
+ if (num_args >= 1)
+ *((XlcCharSet *)args[0]) = charset;
+
+ return unconv_num;
+}
+
+static XlcConvMethodsRec methods_ucstocs1 = {
+ close_tocs_converter,
+ ucstocs1,
+ NULL
+};
+
+static XlcConv
+open_ucstocs1(
+ XLCd from_lcd,
+ const char *from_type,
+ XLCd to_lcd,
+ const char *to_type)
+{
+ return create_ucstocs_conv(from_lcd, &methods_ucstocs1);
+}
+
+/* from XlcNUcsChar to XlcNUtf8String, needed for input methods */
+
+static int
+ucstoutf8(
+ XlcConv conv,
+ XPointer *from,
+ int *from_left,
+ XPointer *to,
+ int *to_left,
+ XPointer *args,
+ int num_args)
+{
+ const ucs4_t *src;
+ const ucs4_t *srcend;
+ unsigned char *dst;
+ unsigned char *dstend;
+ int unconv_num;
+
+ if (from == NULL || *from == NULL)
+ return 0;
+
+ src = (const ucs4_t *) *from;
+ srcend = src + *from_left;
+ dst = (unsigned char *) *to;
+ dstend = dst + *to_left;
+ unconv_num = 0;
+
+ while (src < srcend) {
+ int count = utf8_wctomb(NULL, dst, *src, dstend-dst);
+ if (count == RET_TOOSMALL)
+ break;
+ if (count == RET_ILSEQ)
+ unconv_num++;
+ src++;
+ dst += count;
+ }
+
+ *from = (XPointer) src;
+ *from_left = srcend - src;
+ *to = (XPointer) dst;
+ *to_left = dstend - dst;
+
+ return unconv_num;
+}
+
+static XlcConvMethodsRec methods_ucstoutf8 = {
+ close_converter,
+ ucstoutf8,
+ NULL
+};
+
+static XlcConv
+open_ucstoutf8(
+ XLCd from_lcd,
+ const char *from_type,
+ XLCd to_lcd,
+ const char *to_type)
+{
+ return create_conv(from_lcd, &methods_ucstoutf8);
+}
+
+/* Registers UTF-8 converters for a non-UTF-8 locale. */
+void
+_XlcAddUtf8Converters(
+ XLCd lcd)
+{
+ _XlcSetConverter(lcd, XlcNCharSet, lcd, XlcNUtf8String, open_cstoutf8);
+ _XlcSetConverter(lcd, XlcNUtf8String, lcd, XlcNCharSet, open_utf8tocs);
+ _XlcSetConverter(lcd, XlcNUtf8String, lcd, XlcNChar, open_utf8tocs1);
+ _XlcSetConverter(lcd, XlcNString, lcd, XlcNUtf8String, open_strtoutf8);
+ _XlcSetConverter(lcd, XlcNUtf8String, lcd, XlcNString, open_utf8tostr);
+ _XlcSetConverter(lcd, XlcNUcsChar, lcd, XlcNChar, open_ucstocs1);
+ _XlcSetConverter(lcd, XlcNUcsChar, lcd, XlcNUtf8String, open_ucstoutf8);
+}
+
+/***************************************************************************/
+/* Part II: UTF-8 locale loader conversion files
+ *
+ * Here we can assume that "multi-byte" is UTF-8 and that `wchar_t' is Unicode.
+ */
+
+/* from XlcNMultiByte to XlcNWideChar */
+
+static int
+utf8towcs(
+ XlcConv conv,
+ XPointer *from,
+ int *from_left,
+ XPointer *to,
+ int *to_left,
+ XPointer *args,
+ int num_args)
+{
+ unsigned char const *src;
+ unsigned char const *srcend;
+ wchar_t *dst;
+ wchar_t *dstend;
+ int unconv_num;
+
+ if (from == NULL || *from == NULL)
+ return 0;
+
+ src = (unsigned char const *) *from;
+ srcend = src + *from_left;
+ dst = (wchar_t *) *to;
+ dstend = dst + *to_left;
+ unconv_num = 0;
+
+ while (src < srcend && dst < dstend) {
+ ucs4_t wc;
+ int consumed = utf8_mbtowc(NULL, &wc, src, srcend-src);
+ if (consumed == RET_TOOFEW(0))
+ break;
+ if (consumed == RET_ILSEQ) {
+ src++;
+ *dst = BAD_WCHAR;
+ unconv_num++;
+ } else {
+ src += consumed;
+ *dst = wc;
+ }
+ dst++;
+ }
+
+ *from = (XPointer) src;
+ *from_left = srcend - src;
+ *to = (XPointer) dst;
+ *to_left = dstend - dst;
+
+ return unconv_num;
+}
+
+static XlcConvMethodsRec methods_utf8towcs = {
+ close_converter,
+ utf8towcs,
+ NULL
+};
+
+static XlcConv
+open_utf8towcs(
+ XLCd from_lcd,
+ const char *from_type,
+ XLCd to_lcd,
+ const char *to_type)
+{
+ return create_conv(from_lcd, &methods_utf8towcs);
+}
+
+/* from XlcNWideChar to XlcNMultiByte */
+
+static int
+wcstoutf8(
+ XlcConv conv,
+ XPointer *from,
+ int *from_left,
+ XPointer *to,
+ int *to_left,
+ XPointer *args,
+ int num_args)
+{
+ wchar_t const *src;
+ wchar_t const *srcend;
+ unsigned char *dst;
+ unsigned char *dstend;
+ int unconv_num;
+
+ if (from == NULL || *from == NULL)
+ return 0;
+
+ src = (wchar_t const *) *from;
+ srcend = src + *from_left;
+ dst = (unsigned char *) *to;
+ dstend = dst + *to_left;
+ unconv_num = 0;
+
+ while (src < srcend) {
+ int count = utf8_wctomb(NULL, dst, *src, dstend-dst);
+ if (count == RET_TOOSMALL)
+ break;
+ if (count == RET_ILSEQ) {
+ count = utf8_wctomb(NULL, dst, BAD_WCHAR, dstend-dst);
+ if (count == RET_TOOSMALL)
+ break;
+ unconv_num++;
+ }
+ dst += count;
+ src++;
+ }
+
+ *from = (XPointer) src;
+ *from_left = srcend - src;
+ *to = (XPointer) dst;
+ *to_left = dstend - dst;
+
+ return unconv_num;
+}
+
+static XlcConvMethodsRec methods_wcstoutf8 = {
+ close_converter,
+ wcstoutf8,
+ NULL
+};
+
+static XlcConv
+open_wcstoutf8(
+ XLCd from_lcd,
+ const char *from_type,
+ XLCd to_lcd,
+ const char *to_type)
+{
+ return create_conv(from_lcd, &methods_wcstoutf8);
+}
+
+/* from XlcNString to XlcNWideChar */
+
+static int
+our_strtowcs(
+ XlcConv conv,
+ XPointer *from,
+ int *from_left,
+ XPointer *to,
+ int *to_left,
+ XPointer *args,
+ int num_args)
+{
+ unsigned char const *src;
+ unsigned char const *srcend;
+ wchar_t *dst;
+ wchar_t *dstend;
+
+ if (from == NULL || *from == NULL)
+ return 0;
+
+ src = (unsigned char const *) *from;
+ srcend = src + *from_left;
+ dst = (wchar_t *) *to;
+ dstend = dst + *to_left;
+
+ while (src < srcend && dst < dstend)
+ *dst++ = (wchar_t) *src++;
+
+ *from = (XPointer) src;
+ *from_left = srcend - src;
+ *to = (XPointer) dst;
+ *to_left = dstend - dst;
+
+ return 0;
+}
+
+static XlcConvMethodsRec methods_strtowcs = {
+ close_converter,
+ our_strtowcs,
+ NULL
+};
+
+static XlcConv
+open_strtowcs(
+ XLCd from_lcd,
+ const char *from_type,
+ XLCd to_lcd,
+ const char *to_type)
+{
+ return create_conv(from_lcd, &methods_strtowcs);
+}
+
+/* from XlcNWideChar to XlcNString */
+
+static int
+our_wcstostr(
+ XlcConv conv,
+ XPointer *from,
+ int *from_left,
+ XPointer *to,
+ int *to_left,
+ XPointer *args,
+ int num_args)
+{
+ wchar_t const *src;
+ wchar_t const *srcend;
+ unsigned char *dst;
+ unsigned char *dstend;
+ int unconv_num;
+
+ if (from == NULL || *from == NULL)
+ return 0;
+
+ src = (wchar_t const *) *from;
+ srcend = src + *from_left;
+ dst = (unsigned char *) *to;
+ dstend = dst + *to_left;
+ unconv_num = 0;
+
+ while (src < srcend && dst < dstend) {
+ unsigned int wc = *src++;
+ if (wc < 0x80)
+ *dst = wc;
+ else {
+ *dst = BAD_CHAR;
+ unconv_num++;
+ }
+ dst++;
+ }
+
+ *from = (XPointer) src;
+ *from_left = srcend - src;
+ *to = (XPointer) dst;
+ *to_left = dstend - dst;
+
+ return unconv_num;
+}
+
+static XlcConvMethodsRec methods_wcstostr = {
+ close_converter,
+ our_wcstostr,
+ NULL
+};
+
+static XlcConv
+open_wcstostr(
+ XLCd from_lcd,
+ const char *from_type,
+ XLCd to_lcd,
+ const char *to_type)
+{
+ return create_conv(from_lcd, &methods_wcstostr);
+}
+
+/* from XlcNCharSet to XlcNWideChar */
+
+static int
+cstowcs(
+ XlcConv conv,
+ XPointer *from,
+ int *from_left,
+ XPointer *to,
+ int *to_left,
+ XPointer *args,
+ int num_args)
+{
+ XlcCharSet charset;
+ const char *name;
+ Utf8Conv convptr;
+ int i;
+ unsigned char const *src;
+ unsigned char const *srcend;
+ wchar_t *dst;
+ wchar_t *dstend;
+ int unconv_num;
+
+ if (from == NULL || *from == NULL)
+ return 0;
+
+ if (num_args < 1)
+ return -1;
+
+ charset = (XlcCharSet) args[0];
+ name = charset->encoding_name;
+ /* not charset->name because the latter has a ":GL"/":GR" suffix */
+
+ for (convptr = all_charsets, i = all_charsets_count-1; i > 0; convptr++, i--)
+ if (!strcmp(convptr->name, name))
+ break;
+ if (i == 0)
+ return -1;
+
+ src = (unsigned char const *) *from;
+ srcend = src + *from_left;
+ dst = (wchar_t *) *to;
+ dstend = dst + *to_left;
+ unconv_num = 0;
+
+ while (src < srcend && dst < dstend) {
+ unsigned int wc;
+ int consumed;
+
+ consumed = convptr->cstowc(conv, &wc, src, srcend-src);
+ if (consumed == RET_ILSEQ)
+ return -1;
+ if (consumed == RET_TOOFEW(0))
+ break;
+
+ *dst++ = wc;
+ src += consumed;
+ }
+
+ *from = (XPointer) src;
+ *from_left = srcend - src;
+ *to = (XPointer) dst;
+ *to_left = dstend - dst;
+
+ return unconv_num;
+}
+
+static XlcConvMethodsRec methods_cstowcs = {
+ close_converter,
+ cstowcs,
+ NULL
+};
+
+static XlcConv
+open_cstowcs(
+ XLCd from_lcd,
+ const char *from_type,
+ XLCd to_lcd,
+ const char *to_type)
+{
+ lazy_init_all_charsets();
+ return create_conv(from_lcd, &methods_cstowcs);
+}
+
+/* from XlcNWideChar to XlcNCharSet */
+
+static int
+wcstocs(
+ XlcConv conv,
+ XPointer *from,
+ int *from_left,
+ XPointer *to,
+ int *to_left,
+ XPointer *args,
+ int num_args)
+{
+ Utf8Conv *preferred_charsets;
+ XlcCharSet last_charset = NULL;
+ wchar_t const *src;
+ wchar_t const *srcend;
+ unsigned char *dst;
+ unsigned char *dstend;
+ int unconv_num;
+
+ if (from == NULL || *from == NULL)
+ return 0;
+
+ preferred_charsets = (Utf8Conv *) conv->state;
+ src = (wchar_t const *) *from;
+ srcend = src + *from_left;
+ dst = (unsigned char *) *to;
+ dstend = dst + *to_left;
+ unconv_num = 0;
+
+ while (src < srcend && dst < dstend) {
+ Utf8Conv chosen_charset = NULL;
+ XlcSide chosen_side = XlcNONE;
+ wchar_t wc = *src;
+ int count;
+
+ count = charset_wctocs(preferred_charsets, &chosen_charset, &chosen_side, conv, dst, wc, dstend-dst);
+ if (count == RET_TOOSMALL)
+ break;
+ if (count == RET_ILSEQ) {
+ src++;
+ unconv_num++;
+ continue;
+ }
+
+ if (last_charset == NULL) {
+ last_charset =
+ _XlcGetCharSetWithSide(chosen_charset->name, chosen_side);
+ if (last_charset == NULL) {
+ src++;
+ unconv_num++;
+ continue;
+ }
+ } else {
+ if (!(last_charset->xrm_encoding_name == chosen_charset->xrm_name
+ && (last_charset->side == XlcGLGR
+ || last_charset->side == chosen_side)))
+ break;
+ }
+ src++;
+ dst += count;
+ }
+
+ if (last_charset == NULL)
+ return -1;
+
+ *from = (XPointer) src;
+ *from_left = srcend - src;
+ *to = (XPointer) dst;
+ *to_left = dstend - dst;
+
+ if (num_args >= 1)
+ *((XlcCharSet *)args[0]) = last_charset;
+
+ return unconv_num;
+}
+
+static XlcConvMethodsRec methods_wcstocs = {
+ close_tocs_converter,
+ wcstocs,
+ NULL
+};
+
+static XlcConv
+open_wcstocs(
+ XLCd from_lcd,
+ const char *from_type,
+ XLCd to_lcd,
+ const char *to_type)
+{
+ return create_tocs_conv(from_lcd, &methods_wcstocs);
+}
+
+/* from XlcNWideChar to XlcNChar */
+
+static int
+wcstocs1(
+ XlcConv conv,
+ XPointer *from,
+ int *from_left,
+ XPointer *to,
+ int *to_left,
+ XPointer *args,
+ int num_args)
+{
+ Utf8Conv *preferred_charsets;
+ XlcCharSet last_charset = NULL;
+ wchar_t const *src;
+ wchar_t const *srcend;
+ unsigned char *dst;
+ unsigned char *dstend;
+ int unconv_num;
+
+ if (from == NULL || *from == NULL)
+ return 0;
+
+ preferred_charsets = (Utf8Conv *) conv->state;
+ src = (wchar_t const *) *from;
+ srcend = src + *from_left;
+ dst = (unsigned char *) *to;
+ dstend = dst + *to_left;
+ unconv_num = 0;
+
+ while (src < srcend && dst < dstend) {
+ Utf8Conv chosen_charset = NULL;
+ XlcSide chosen_side = XlcNONE;
+ wchar_t wc = *src;
+ int count;
+
+ count = charset_wctocs(preferred_charsets, &chosen_charset, &chosen_side, conv, dst, wc, dstend-dst);
+ if (count == RET_TOOSMALL)
+ break;
+ if (count == RET_ILSEQ) {
+ src++;
+ unconv_num++;
+ continue;
+ }
+
+ if (last_charset == NULL) {
+ last_charset =
+ _XlcGetCharSetWithSide(chosen_charset->name, chosen_side);
+ if (last_charset == NULL) {
+ src++;
+ unconv_num++;
+ continue;
+ }
+ } else {
+ if (!(last_charset->xrm_encoding_name == chosen_charset->xrm_name
+ && (last_charset->side == XlcGLGR
+ || last_charset->side == chosen_side)))
+ break;
+ }
+ src++;
+ dst += count;
+ break;
+ }
+
+ if (last_charset == NULL)
+ return -1;
+
+ *from = (XPointer) src;
+ *from_left = srcend - src;
+ *to = (XPointer) dst;
+ *to_left = dstend - dst;
+
+ if (num_args >= 1)
+ *((XlcCharSet *)args[0]) = last_charset;
+
+ return unconv_num;
+}
+
+static XlcConvMethodsRec methods_wcstocs1 = {
+ close_tocs_converter,
+ wcstocs1,
+ NULL
+};
+
+static XlcConv
+open_wcstocs1(
+ XLCd from_lcd,
+ const char *from_type,
+ XLCd to_lcd,
+ const char *to_type)
+{
+ return create_tocs_conv(from_lcd, &methods_wcstocs1);
+}
+
+/* trivial, no conversion */
+
+static int
+identity(
+ XlcConv conv,
+ XPointer *from,
+ int *from_left,
+ XPointer *to,
+ int *to_left,
+ XPointer *args,
+ int num_args)
+{
+ unsigned char const *src;
+ unsigned char const *srcend;
+ unsigned char *dst;
+ unsigned char *dstend;
+
+ if (from == NULL || *from == NULL)
+ return 0;
+
+ src = (unsigned char const *) *from;
+ srcend = src + *from_left;
+ dst = (unsigned char *) *to;
+ dstend = dst + *to_left;
+
+ while (src < srcend && dst < dstend)
+ *dst++ = *src++;
+
+ *from = (XPointer) src;
+ *from_left = srcend - src;
+ *to = (XPointer) dst;
+ *to_left = dstend - dst;
+
+ return 0;
+}
+
+static XlcConvMethodsRec methods_identity = {
+ close_converter,
+ identity,
+ NULL
+};
+
+static XlcConv
+open_identity(
+ XLCd from_lcd,
+ const char *from_type,
+ XLCd to_lcd,
+ const char *to_type)
+{
+ return create_conv(from_lcd, &methods_identity);
+}
+
+/* from MultiByte/WideChar to FontCharSet. */
+/* They really use converters to CharSet
+ * but with different create_conv procedure. */
+
+static XlcConv
+create_tofontcs_conv(
+ XLCd lcd,
+ XlcConvMethods methods)
+{
+ XlcConv conv;
+ int i, num, k, count;
+ char **value, buf[20];
+ Utf8Conv *preferred;
+
+ lazy_init_all_charsets();
+
+ for (i = 0, num = 0;; i++) {
+ sprintf(buf, "fs%d.charset.name", i);
+ _XlcGetResource(lcd, "XLC_FONTSET", buf, &value, &count);
+ if (count < 1) {
+ sprintf(buf, "fs%d.charset", i);
+ _XlcGetResource(lcd, "XLC_FONTSET", buf, &value, &count);
+ if (count < 1)
+ break;
+ }
+ num += count;
+ }
+
+ conv = (XlcConv) Xmalloc(sizeof(XlcConvRec) + (num + 1) * sizeof(Utf8Conv));
+ if (conv == (XlcConv) NULL)
+ return (XlcConv) NULL;
+ preferred = (Utf8Conv *) ((char *) conv + sizeof(XlcConvRec));
+
+ /* Loop through all fontsets mentioned in the locale. */
+ for (i = 0, num = 0;; i++) {
+ sprintf(buf, "fs%d.charset.name", i);
+ _XlcGetResource(lcd, "XLC_FONTSET", buf, &value, &count);
+ if (count < 1) {
+ sprintf(buf, "fs%d.charset", i);
+ _XlcGetResource(lcd, "XLC_FONTSET", buf, &value, &count);
+ if (count < 1)
+ break;
+ }
+ while (count-- > 0) {
+ XlcCharSet charset = _XlcGetCharSet(*value++);
+ const char *name;
+
+ if (charset == (XlcCharSet) NULL)
+ continue;
+
+ name = charset->encoding_name;
+ /* If it wasn't already encountered... */
+ for (k = num - 1; k >= 0; k--)
+ if (!strcmp(preferred[k]->name, name))
+ break;
+ if (k < 0) {
+ /* For fonts "ISO10646-1" means ucs2, not utf8.*/
+ if (!strcmp("ISO10646-1", name)) {
+ preferred[num++] = &all_charsets[ucs2_conv_index];
+ continue;
+ }
+ /* Look it up in all_charsets[]. */
+ for (k = 0; k < all_charsets_count-1; k++)
+ if (!strcmp(all_charsets[k].name, name)) {
+ /* Add it to the preferred set. */
+ preferred[num++] = &all_charsets[k];
+ break;
+ }
+ }
+ }
+ }
+ preferred[num] = (Utf8Conv) NULL;
+
+ conv->methods = methods;
+ conv->state = (XPointer) preferred;
+
+ return conv;
+}
+
+static XlcConv
+open_wcstofcs(
+ XLCd from_lcd,
+ const char *from_type,
+ XLCd to_lcd,
+ const char *to_type)
+{
+ return create_tofontcs_conv(from_lcd, &methods_wcstocs);
+}
+
+static XlcConv
+open_utf8tofcs(
+ XLCd from_lcd,
+ const char *from_type,
+ XLCd to_lcd,
+ const char *to_type)
+{
+ return create_tofontcs_conv(from_lcd, &methods_utf8tocs);
+}
+
+/* ========================== iconv Stuff ================================ */
+
+/* from XlcNCharSet to XlcNMultiByte */
+
+static int
+iconv_cstombs(XlcConv conv, XPointer *from, int *from_left,
+ XPointer *to, int *to_left, XPointer *args, int num_args)
+{
+ XlcCharSet charset;
+ char const *name;
+ Utf8Conv convptr;
+ int i;
+ unsigned char const *src;
+ unsigned char const *srcend;
+ unsigned char *dst;
+ unsigned char *dstend;
+ int unconv_num;
+
+ if (from == NULL || *from == NULL)
+ return 0;
+
+ if (num_args < 1)
+ return -1;
+
+ charset = (XlcCharSet) args[0];
+ name = charset->encoding_name;
+ /* not charset->name because the latter has a ":GL"/":GR" suffix */
+
+ for (convptr = all_charsets, i = all_charsets_count-1; i > 0; convptr++, i--)
+ if (!strcmp(convptr->name, name))
+ break;
+ if (i == 0)
+ return -1;
+
+ src = (unsigned char const *) *from;
+ srcend = src + *from_left;
+ dst = (unsigned char *) *to;
+ dstend = dst + *to_left;
+ unconv_num = 0;
+
+ while (src < srcend) {
+ ucs4_t wc;
+ int consumed;
+ int count;
+
+ consumed = convptr->cstowc(conv, &wc, src, srcend-src);
+ if (consumed == RET_ILSEQ)
+ return -1;
+ if (consumed == RET_TOOFEW(0))
+ break;
+
+ /* Use stdc iconv to convert widechar -> multibyte */
+
+ count = wctomb((char *)dst, wc);
+ if (count == 0)
+ break;
+ if (count == -1) {
+ count = wctomb((char *)dst, BAD_WCHAR);
+ if (count == 0)
+ break;
+ unconv_num++;
+ }
+ src += consumed;
+ dst += count;
+ }
+
+ *from = (XPointer) src;
+ *from_left = srcend - src;
+ *to = (XPointer) dst;
+ *to_left = dstend - dst;
+
+ return unconv_num;
+
+}
+
+static XlcConvMethodsRec iconv_cstombs_methods = {
+ close_converter,
+ iconv_cstombs,
+ NULL
+};
+
+static XlcConv
+open_iconv_cstombs(XLCd from_lcd, const char *from_type, XLCd to_lcd, const char *to_type)
+{
+ lazy_init_all_charsets();
+ return create_conv(from_lcd, &iconv_cstombs_methods);
+}
+
+static int
+iconv_mbstocs(XlcConv conv, XPointer *from, int *from_left,
+ XPointer *to, int *to_left, XPointer *args, int num_args)
+{
+ Utf8Conv *preferred_charsets;
+ XlcCharSet last_charset = NULL;
+ unsigned char const *src;
+ unsigned char const *srcend;
+ unsigned char *dst;
+ unsigned char *dstend;
+ int unconv_num;
+
+ if (from == NULL || *from == NULL)
+ return 0;
+
+ preferred_charsets = (Utf8Conv *) conv->state;
+ src = (unsigned char const *) *from;
+ srcend = src + *from_left;
+ dst = (unsigned char *) *to;
+ dstend = dst + *to_left;
+ unconv_num = 0;
+
+ while (src < srcend && dst < dstend) {
+ Utf8Conv chosen_charset = NULL;
+ XlcSide chosen_side = XlcNONE;
+ wchar_t wc;
+ int consumed;
+ int count;
+
+ /* Uses stdc iconv to convert multibyte -> widechar */
+
+ consumed = mbtowc(&wc, (const char *)src, srcend-src);
+ if (consumed == 0)
+ break;
+ if (consumed == -1) {
+ src++;
+ unconv_num++;
+ continue;
+ }
+
+ count = charset_wctocs(preferred_charsets, &chosen_charset, &chosen_side, conv, dst, wc, dstend-dst);
+
+ if (count == RET_TOOSMALL)
+ break;
+ if (count == RET_ILSEQ) {
+ src += consumed;
+ unconv_num++;
+ continue;
+ }
+
+ if (last_charset == NULL) {
+ last_charset =
+ _XlcGetCharSetWithSide(chosen_charset->name, chosen_side);
+ if (last_charset == NULL) {
+ src += consumed;
+ unconv_num++;
+ continue;
+ }
+ } else {
+ if (!(last_charset->xrm_encoding_name == chosen_charset->xrm_name
+ && (last_charset->side == XlcGLGR
+ || last_charset->side == chosen_side)))
+ break;
+ }
+ src += consumed;
+ dst += count;
+ }
+
+ if (last_charset == NULL)
+ return -1;
+
+ *from = (XPointer) src;
+ *from_left = srcend - src;
+ *to = (XPointer) dst;
+ *to_left = dstend - dst;
+
+ if (num_args >= 1)
+ *((XlcCharSet *)args[0]) = last_charset;
+
+ return unconv_num;
+}
+
+static XlcConvMethodsRec iconv_mbstocs_methods = {
+ close_tocs_converter,
+ iconv_mbstocs,
+ NULL
+};
+
+static XlcConv
+open_iconv_mbstocs(XLCd from_lcd, const char *from_type, XLCd to_lcd, const char *to_type)
+{
+ return create_tocs_conv(from_lcd, &iconv_mbstocs_methods);
+}
+
+/* from XlcNMultiByte to XlcNChar */
+
+static int
+iconv_mbtocs(XlcConv conv, XPointer *from, int *from_left,
+ XPointer *to, int *to_left, XPointer *args, int num_args)
+{
+ Utf8Conv *preferred_charsets;
+ XlcCharSet last_charset = NULL;
+ unsigned char const *src;
+ unsigned char const *srcend;
+ unsigned char *dst;
+ unsigned char *dstend;
+ int unconv_num;
+
+ if (from == NULL || *from == NULL)
+ return 0;
+
+ preferred_charsets = (Utf8Conv *) conv->state;
+ src = (unsigned char const *) *from;
+ srcend = src + *from_left;
+ dst = (unsigned char *) *to;
+ dstend = dst + *to_left;
+ unconv_num = 0;
+
+ while (src < srcend && dst < dstend) {
+ Utf8Conv chosen_charset = NULL;
+ XlcSide chosen_side = XlcNONE;
+ wchar_t wc;
+ int consumed;
+ int count;
+
+ /* Uses stdc iconv to convert multibyte -> widechar */
+
+ consumed = mbtowc(&wc, (const char *)src, srcend-src);
+ if (consumed == 0)
+ break;
+ if (consumed == -1) {
+ src++;
+ unconv_num++;
+ continue;
+ }
+
+ count = charset_wctocs(preferred_charsets, &chosen_charset, &chosen_side, conv, dst, wc, dstend-dst);
+ if (count == RET_TOOSMALL)
+ break;
+ if (count == RET_ILSEQ) {
+ src += consumed;
+ unconv_num++;
+ continue;
+ }
+
+ if (last_charset == NULL) {
+ last_charset =
+ _XlcGetCharSetWithSide(chosen_charset->name, chosen_side);
+ if (last_charset == NULL) {
+ src += consumed;
+ unconv_num++;
+ continue;
+ }
+ } else {
+ if (!(last_charset->xrm_encoding_name == chosen_charset->xrm_name
+ && (last_charset->side == XlcGLGR
+ || last_charset->side == chosen_side)))
+ break;
+ }
+ src += consumed;
+ dst += count;
+ }
+
+ if (last_charset == NULL)
+ return -1;
+
+ *from = (XPointer) src;
+ *from_left = srcend - src;
+ *to = (XPointer) dst;
+ *to_left = dstend - dst;
+
+ if (num_args >= 1)
+ *((XlcCharSet *)args[0]) = last_charset;
+
+ return unconv_num;
+}
+
+static XlcConvMethodsRec iconv_mbtocs_methods = {
+ close_tocs_converter,
+ iconv_mbtocs,
+ NULL
+};
+
+static XlcConv
+open_iconv_mbtocs(XLCd from_lcd, const char *from_type, XLCd to_lcd, const char *to_type)
+{
+ return create_tocs_conv(from_lcd, &iconv_mbtocs_methods );
+}
+
+/* from XlcNMultiByte to XlcNString */
+
+static int
+iconv_mbstostr(XlcConv conv, XPointer *from, int *from_left,
+ XPointer *to, int *to_left, XPointer *args, int num_args)
+{
+ unsigned char const *src;
+ unsigned char const *srcend;
+ unsigned char *dst;
+ unsigned char *dstend;
+ int unconv_num;
+
+ if (from == NULL || *from == NULL)
+ return 0;
+
+ src = (unsigned char const *) *from;
+ srcend = src + *from_left;
+ dst = (unsigned char *) *to;
+ dstend = dst + *to_left;
+ unconv_num = 0;
+
+ while (src < srcend) {
+ unsigned char c;
+ wchar_t wc;
+ int consumed;
+
+ /* Uses stdc iconv to convert multibyte -> widechar */
+
+ consumed = mbtowc(&wc, (const char *)src, srcend-src);
+ if (consumed == 0)
+ break;
+ if (dst == dstend)
+ break;
+ if (consumed == -1) {
+ consumed = 1;
+ c = BAD_CHAR;
+ unconv_num++;
+ } else {
+ if ((wc & ~(wchar_t)0xff) != 0) {
+ c = BAD_CHAR;
+ unconv_num++;
+ } else
+ c = (unsigned char) wc;
+ }
+ *dst++ = c;
+ src += consumed;
+ }
+
+ *from = (XPointer) src;
+ *from_left = srcend - src;
+ *to = (XPointer) dst;
+ *to_left = dstend - dst;
+
+ return unconv_num;
+}
+
+static XlcConvMethodsRec iconv_mbstostr_methods = {
+ close_converter,
+ iconv_mbstostr,
+ NULL
+};
+
+static XlcConv
+open_iconv_mbstostr(XLCd from_lcd, const char *from_type, XLCd to_lcd, const char *to_type)
+{
+ return create_conv(from_lcd, &iconv_mbstostr_methods);
+}
+
+/* from XlcNString to XlcNMultiByte */
+static int
+iconv_strtombs(XlcConv conv, XPointer *from, int *from_left,
+ XPointer *to, int *to_left, XPointer *args, int num_args)
+{
+ unsigned char const *src;
+ unsigned char const *srcend;
+ unsigned char *dst;
+ unsigned char *dstend;
+
+ if (from == NULL || *from == NULL)
+ return 0;
+
+ src = (unsigned char const *) *from;
+ srcend = src + *from_left;
+ dst = (unsigned char *) *to;
+ dstend = dst + *to_left;
+
+ while (src < srcend) {
+ int count = wctomb((char *)dst, *src);
+ if (count < 0)
+ break;
+ dst += count;
+ src++;
+ }
+
+ *from = (XPointer) src;
+ *from_left = srcend - src;
+ *to = (XPointer) dst;
+ *to_left = dstend - dst;
+
+ return 0;
+}
+
+static XlcConvMethodsRec iconv_strtombs_methods= {
+ close_converter,
+ iconv_strtombs,
+ NULL
+};
+
+static XlcConv
+open_iconv_strtombs(XLCd from_lcd, const char *from_type, XLCd to_lcd, const char *to_type)
+{
+ return create_conv(from_lcd, &iconv_strtombs_methods);
+}
+
+/***************************************************************************/
+/* Part II: An iconv locale loader.
+ *
+ *Here we can assume that "multi-byte" is iconv and that `wchar_t' is Unicode.
+ */
+
+/* from XlcNMultiByte to XlcNWideChar */
+static int
+iconv_mbstowcs(XlcConv conv, XPointer *from, int *from_left,
+ XPointer *to, int *to_left, XPointer *args, int num_args)
+{
+ char *src = *((char **) from);
+ wchar_t *dst = *((wchar_t **) to);
+ int src_left = *from_left;
+ int dst_left = *to_left;
+ int length, unconv_num = 0;
+
+ while (src_left > 0 && dst_left > 0) {
+ length = mbtowc(dst, src, src_left);
+
+ if (length > 0) {
+ src += length;
+ src_left -= length;
+ if (dst)
+ dst++;
+ dst_left--;
+ } else if (length < 0) {
+ src++;
+ src_left--;
+ unconv_num++;
+ } else {
+ /* null ? */
+ src++;
+ src_left--;
+ if (dst)
+ *dst++ = L'\0';
+ dst_left--;
+ }
+ }
+
+ *from = (XPointer) src;
+ if (dst)
+ *to = (XPointer) dst;
+ *from_left = src_left;
+ *to_left = dst_left;
+
+ return unconv_num;
+}
+
+static XlcConvMethodsRec iconv_mbstowcs_methods = {
+ close_converter,
+ iconv_mbstowcs,
+ NULL
+} ;
+
+static XlcConv
+open_iconv_mbstowcs(XLCd from_lcd, const char *from_type, XLCd to_lcd, const char *to_type)
+{
+ return create_conv(from_lcd, &iconv_mbstowcs_methods);
+}
+
+static int
+iconv_wcstombs(XlcConv conv, XPointer *from, int *from_left,
+ XPointer *to, int *to_left, XPointer *args, int num_args)
+{
+ wchar_t *src = *((wchar_t **) from);
+ char *dst = *((char **) to);
+ int src_left = *from_left;
+ int dst_left = *to_left;
+ int length, unconv_num = 0;
+
+ while (src_left > 0 && dst_left >= MB_CUR_MAX) {
+ length = wctomb(dst, *src); /* XXX */
+
+ if (length > 0) {
+ src++;
+ src_left--;
+ if (dst)
+ dst += length;
+ dst_left -= length;
+ } else if (length < 0) {
+ src++;
+ src_left--;
+ unconv_num++;
+ }
+ }
+
+ *from = (XPointer) src;
+ if (dst)
+ *to = (XPointer) dst;
+ *from_left = src_left;
+ *to_left = dst_left;
+
+ return unconv_num;
+}
+
+static XlcConvMethodsRec iconv_wcstombs_methods = {
+ close_converter,
+ iconv_wcstombs,
+ NULL
+} ;
+
+static XlcConv
+open_iconv_wcstombs(XLCd from_lcd, const char *from_type, XLCd to_lcd, const char *to_type)
+{
+ return create_conv(from_lcd, &iconv_wcstombs_methods);
+}
+
+static XlcConv
+open_iconv_mbstofcs(
+ XLCd from_lcd,
+ const char *from_type,
+ XLCd to_lcd,
+ const char *to_type)
+{
+ return create_tofontcs_conv(from_lcd, &iconv_mbstocs_methods);
+}
+
+/* Registers UTF-8 converters for a UTF-8 locale. */
+
+void
+_XlcAddUtf8LocaleConverters(
+ XLCd lcd)
+{
+ /* Register elementary converters. */
+
+ _XlcSetConverter(lcd, XlcNMultiByte, lcd, XlcNWideChar, open_utf8towcs);
+
+ _XlcSetConverter(lcd, XlcNWideChar, lcd, XlcNMultiByte, open_wcstoutf8);
+ _XlcSetConverter(lcd, XlcNWideChar, lcd, XlcNString, open_wcstostr);
+
+ _XlcSetConverter(lcd, XlcNString, lcd, XlcNWideChar, open_strtowcs);
+
+ /* Register converters for XlcNCharSet. This implicitly provides
+ * converters from and to XlcNCompoundText. */
+
+ _XlcSetConverter(lcd, XlcNCharSet, lcd, XlcNMultiByte, open_cstoutf8);
+ _XlcSetConverter(lcd, XlcNMultiByte, lcd, XlcNCharSet, open_utf8tocs);
+ _XlcSetConverter(lcd, XlcNMultiByte, lcd, XlcNChar, open_utf8tocs1);
+
+ _XlcSetConverter(lcd, XlcNCharSet, lcd, XlcNWideChar, open_cstowcs);
+ _XlcSetConverter(lcd, XlcNWideChar, lcd, XlcNCharSet, open_wcstocs);
+ _XlcSetConverter(lcd, XlcNWideChar, lcd, XlcNChar, open_wcstocs1);
+
+ _XlcSetConverter(lcd, XlcNString, lcd, XlcNMultiByte, open_strtoutf8);
+ _XlcSetConverter(lcd, XlcNMultiByte, lcd, XlcNString, open_utf8tostr);
+ _XlcSetConverter(lcd, XlcNUtf8String, lcd, XlcNMultiByte, open_identity);
+ _XlcSetConverter(lcd, XlcNMultiByte, lcd, XlcNUtf8String, open_identity);
+
+ /* Register converters for XlcNFontCharSet */
+ _XlcSetConverter(lcd, XlcNMultiByte, lcd, XlcNFontCharSet, open_utf8tofcs);
+ _XlcSetConverter(lcd, XlcNWideChar, lcd, XlcNFontCharSet, open_wcstofcs);
+}
+
+void
+_XlcAddGB18030LocaleConverters(
+ XLCd lcd)
+{
+
+ /* Register elementary converters. */
+ _XlcSetConverter(lcd, XlcNMultiByte, lcd, XlcNWideChar, open_iconv_mbstowcs);
+ _XlcSetConverter(lcd, XlcNWideChar, lcd, XlcNMultiByte, open_iconv_wcstombs);
+
+ /* Register converters for XlcNCharSet. This implicitly provides
+ * converters from and to XlcNCompoundText. */
+
+ _XlcSetConverter(lcd, XlcNCharSet, lcd, XlcNMultiByte, open_iconv_cstombs);
+ _XlcSetConverter(lcd, XlcNMultiByte, lcd, XlcNCharSet, open_iconv_mbstocs);
+ _XlcSetConverter(lcd, XlcNMultiByte, lcd, XlcNChar, open_iconv_mbtocs);
+ _XlcSetConverter(lcd, XlcNString, lcd, XlcNMultiByte, open_iconv_strtombs);
+ _XlcSetConverter(lcd, XlcNMultiByte, lcd, XlcNString, open_iconv_mbstostr);
+
+ /* Register converters for XlcNFontCharSet */
+ _XlcSetConverter(lcd, XlcNMultiByte, lcd, XlcNFontCharSet, open_iconv_mbstofcs);
+
+ _XlcSetConverter(lcd, XlcNWideChar, lcd, XlcNString, open_wcstostr);
+ _XlcSetConverter(lcd, XlcNString, lcd, XlcNWideChar, open_strtowcs);
+ _XlcSetConverter(lcd, XlcNCharSet, lcd, XlcNWideChar, open_cstowcs);
+ _XlcSetConverter(lcd, XlcNWideChar, lcd, XlcNCharSet, open_wcstocs);
+ _XlcSetConverter(lcd, XlcNWideChar, lcd, XlcNChar, open_wcstocs1);
+
+ /* Register converters for XlcNFontCharSet */
+ _XlcSetConverter(lcd, XlcNWideChar, lcd, XlcNFontCharSet, open_wcstofcs);
+}
diff --git a/libX11/src/xlibi18n/lcUniConv/8bit_tab_to_h.c b/libX11/src/xlibi18n/lcUniConv/8bit_tab_to_h.c
index 22ac969b2..1caa28a21 100644
--- a/libX11/src/xlibi18n/lcUniConv/8bit_tab_to_h.c
+++ b/libX11/src/xlibi18n/lcUniConv/8bit_tab_to_h.c
@@ -1,535 +1,535 @@
-
-/*
- * Generates an 8-bit character set table from a .TXT table as found on
- * ftp.unicode.org or from a table containing the 256 Unicode values as
- * hexadecimal integers.
- * Examples:
- *
- * ./8bit_tab_to_h ISO-8859-1 iso8859_1 < tab8859_1
- * ./8bit_tab_to_h ISO-8859-2 iso8859_2 < tab8859_2
- * ./8bit_tab_to_h ISO-8859-3 iso8859_3 < tab8859_3
- * ./8bit_tab_to_h ISO-8859-4 iso8859_4 < tab8859_4
- * ./8bit_tab_to_h ISO-8859-5 iso8859_5 < tab8859_5
- * ./8bit_tab_to_h ISO-8859-6 iso8859_6 < tab8859_6
- * ./8bit_tab_to_h ISO-8859-7 iso8859_7 < tab8859_7
- * ./8bit_tab_to_h ISO-8859-8 iso8859_8 < tab8859_8
- * ./8bit_tab_to_h ISO-8859-9 iso8859_9 < tab8859_9
- * ./8bit_tab_to_h ISO-8859-10 iso8859_10 < tab8859_10
- * ./8bit_tab_to_h ISO-8859-14 iso8859_14 < tab8859_14
- * ./8bit_tab_to_h ISO-8859-15 iso8859_15 < tab8859_15
- * ./8bit_tab_to_h JISX0201.1976-0 jisx0201 < jis0201
- * ./8bit_tab_to_h TIS620-0 tis620 < tabtis620
- * ./8bit_tab_to_h KOI8-R koi8_r < tabkoi8_r
- * ./8bit_tab_to_h KOI8-U koi8_u < tabkoi8_u
- * ./8bit_tab_to_h ARMSCII-8 armscii_8 < tabarmscii_8
- * ./8bit_tab_to_h CP1133 cp1133 < tabibm_cp1133
- * ./8bit_tab_to_h MULELAO-1 mulelao < tabmulelao_1
- * ./8bit_tab_to_h VISCII1.1-1 viscii1 < tabviscii
- * ./8bit_tab_to_h TCVN-5712 tcvn < tabtcvn
- * ./8bit_tab_to_h GEORGIAN-ACADEMY georgian_ac < tabgeorgian_academy
- * ./8bit_tab_to_h GEORGIAN-PS georgian_ps < tabgeorgian_ps
- *
- * ./8bit_tab_to_h ISO-8859-1 iso8859_1 < 8859-1.TXT
- * ./8bit_tab_to_h ISO-8859-2 iso8859_2 < 8859-2.TXT
- * ./8bit_tab_to_h ISO-8859-3 iso8859_3 < 8859-3.TXT
- * ./8bit_tab_to_h ISO-8859-4 iso8859_4 < 8859-4.TXT
- * ./8bit_tab_to_h ISO-8859-5 iso8859_5 < 8859-5.TXT
- * ./8bit_tab_to_h ISO-8859-6 iso8859_6 < 8859-6.TXT
- * ./8bit_tab_to_h ISO-8859-7 iso8859_7 < 8859-7.TXT
- * ./8bit_tab_to_h ISO-8859-8 iso8859_8 < 8859-8.TXT
- * ./8bit_tab_to_h ISO-8859-9 iso8859_9 < 8859-9.TXT
- * ./8bit_tab_to_h ISO-8859-10 iso8859_10 < 8859-10.TXT
- * ./8bit_tab_to_h ISO-8859-14 iso8859_14 < 8859-14.TXT
- * ./8bit_tab_to_h ISO-8859-15 iso8859_15 < 8859-15.TXT
- * ./8bit_tab_to_h JISX0201.1976-0 jisx0201 < JIS0201.TXT
- * ./8bit_tab_to_h KOI8-R koi8_r < KOI8-R.TXT
- */
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <stdbool.h>
-#include <string.h>
-
-int main (int argc, char *argv[])
-{
- const char* charsetname;
- const char* c_charsetname;
- const char* filename;
- const char* directory;
- int charset2uni[0x100];
-
- if (argc != 3 && argc != 4 && argc != 5)
- exit(1);
- charsetname = argv[1];
- c_charsetname = argv[2];
- if (argc > 3) {
- filename = argv[3];
- } else {
- char* s = (char*) malloc(strlen(c_charsetname)+strlen(".h")+1);
- strcpy(s,c_charsetname); strcat(s,".h");
- filename = s;
- }
- directory = (argc > 4 ? argv[4] : "");
-
- fprintf(stderr, "Creating %s%s\n", directory, filename);
-
- {
- int i, c;
- c = getc(stdin);
- ungetc(c,stdin);
- if (c == '#') {
- /* Read a unicode.org style .TXT file. */
- for (i = 0; i < 0x100; i++)
- charset2uni[i] = 0xfffd;
- for (;;) {
- c = getc(stdin);
- if (c == EOF)
- break;
- if (c == '\n' || c == ' ' || c == '\t')
- continue;
- if (c == '#') {
- do { c = getc(stdin); } while (!(c == EOF || c == '\n'));
- continue;
- }
- ungetc(c,stdin);
- if (scanf("0x%x", &i) != 1 || !(i >= 0 && i < 0x100))
- exit(1);
- do { c = getc(stdin); } while (c == ' ' || c == '\t');
- if (c != EOF)
- ungetc(c,stdin);
- if (c == '\n' || c == '#')
- continue;
- if (scanf("0x%x", &charset2uni[i]) != 1)
- exit(1);
- }
- } else {
- /* Read a table of hexadecimal Unicode values. */
- for (i = 0; i < 0x100; i++) {
- if (scanf("%x", &charset2uni[i]) != 1)
- exit(1);
- if (charset2uni[i] < 0 || charset2uni[i] == 0xffff)
- charset2uni[i] = 0xfffd;
- }
- if (scanf("%x", &i) != EOF)
- exit(1);
- }
- }
-
- /* Write the output file. */
- {
- FILE* f;
-
- {
- char* fname = malloc(strlen(directory)+strlen(filename)+1);
- strcpy(fname,directory); strcat(fname,filename);
- f = fopen(fname,"w");
- if (f == NULL)
- exit(1);
- }
-
- fprintf(f, "\n");
- fprintf(f, "/*\n");
- fprintf(f, " * %s\n", charsetname);
- fprintf(f, " */\n");
- fprintf(f, "\n");
-
- {
- int i, i1, i2, i3;
- int line[16];
- int tableno;
- struct { int minline; int maxline; } tables[16];
- bool some_invalid;
- bool final_ret_reached;
-
- for (i1 = 0; i1 < 16; i1++) {
- bool all_invalid = true;
- bool all_identity = true;
- for (i2 = 0; i2 < 16; i2++) {
- i = 16*i1+i2;
- if (charset2uni[i] != 0xfffd)
- all_invalid = false;
- if (charset2uni[i] != i)
- all_identity = false;
- }
- if (all_invalid)
- line[i1] = -2;
- else if (all_identity)
- line[i1] = -1;
- else
- line[i1] = 0;
- }
- tableno = 0;
- for (i1 = 0; i1 < 16; i1++) {
- if (line[i1] >= 0) {
- if (i1 > 0 && tableno > 0 && line[i1-1] == tableno-1) {
- line[i1] = tableno-1;
- tables[tableno-1].maxline = i1;
- } else {
- tableno++;
- line[i1] = tableno-1;
- tables[tableno-1].minline = tables[tableno-1].maxline = i1;
- }
- }
- }
- some_invalid = false;
- for (i = 0; i < 0x100; i++)
- if (charset2uni[i] == 0xfffd)
- some_invalid = true;
- if (tableno > 0) {
- int t;
- for (t = 0; t < tableno; t++) {
- fprintf(f, "static const unsigned short %s_2uni", c_charsetname);
- if (tableno > 1)
- fprintf(f, "_%d", t+1);
- fprintf(f, "[%d] = {\n", 16*(tables[t].maxline-tables[t].minline+1));
- for (i1 = tables[t].minline; i1 <= tables[t].maxline; i1++) {
- fprintf(f, " /* 0x%02x */\n", 16*i1);
- for (i2 = 0; i2 < 2; i2++) {
- fprintf(f, " ");
- for (i3 = 0; i3 < 8; i3++) {
- i = 16*i1+8*i2+i3;
- fprintf(f, " 0x%04x,", charset2uni[i]);
- }
- fprintf(f, "\n");
- }
- }
- fprintf(f, "};\n");
- }
- fprintf(f, "\n");
- }
- final_ret_reached = false;
- fprintf(f, "static int\n%s_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n)\n", c_charsetname);
- fprintf(f, "{\n");
- fprintf(f, " unsigned char c = *s;\n");
- if (some_invalid) {
- for (i1 = 0; i1 < 16;) {
- int t = line[i1];
- const char* indent;
- for (i2 = i1; i2 < 16 && line[i2] == t; i2++);
- indent = (i1 == 0 && i2 == 16 ? " " : " ");
- if (i1 == 0) {
- if (i2 == 16) {
- } else {
- fprintf(f, " if (c < 0x%02x) {\n", 16*i2);
- }
- } else {
- if (i2 == 16) {
- fprintf(f, " else {\n");
- } else {
- fprintf(f, " else if (c < 0x%02x) {\n", 16*i2);
- }
- }
- if (t == -2) {
- final_ret_reached = true;
- } else if (t == -1) {
- fprintf(f, "%s*pwc = (ucs4_t) c;\n", indent);
- fprintf(f, "%sreturn 1;\n", indent);
- } else {
- fprintf(f, "%s", indent);
- some_invalid = false;
- for (i = 16*i1; i < 16*i2; i++)
- if (charset2uni[i] == 0xfffd)
- some_invalid = true;
- if (some_invalid)
- fprintf(f, "unsigned short wc = ");
- else
- fprintf(f, "*pwc = (ucs4_t) ");
- fprintf(f, "%s_2uni", c_charsetname);
- if (tableno > 1)
- fprintf(f, "_%d", t+1);
- fprintf(f, "[c");
- if (tables[t].minline > 0)
- fprintf(f, "-0x%02x", 16*tables[t].minline);
- fprintf(f, "];\n");
- if (some_invalid) {
- fprintf(f, "%sif (wc != 0xfffd) {\n", indent);
- fprintf(f, "%s *pwc = (ucs4_t) wc;\n", indent);
- fprintf(f, "%s return 1;\n", indent);
- fprintf(f, "%s}\n", indent);
- final_ret_reached = true;
- } else {
- fprintf(f, "%sreturn 1;\n", indent);
- }
- }
- if (!(i1 == 0 && i2 == 16))
- fprintf(f, " }\n");
- i1 = i2;
- }
- if (final_ret_reached)
- fprintf(f, " return RET_ILSEQ;\n");
- } else {
- for (i1 = 0; i1 < 16;) {
- int t = line[i1];
- for (i2 = i1; i2 < 16 && line[i2] == t; i2++);
- if (i1 == 0) {
- if (i2 == 16) {
- fprintf(f, " ");
- } else {
- fprintf(f, " if (c < 0x%02x)\n ", 16*i2);
- }
- } else {
- if (i2 == 16) {
- fprintf(f, " else\n ");
- } else {
- fprintf(f, " else if (c < 0x%02x)\n ", 16*i2);
- }
- }
- if (t == -1)
- fprintf(f, "*pwc = (ucs4_t) c;\n");
- else {
- fprintf(f, "*pwc = (ucs4_t) %s_2uni", c_charsetname);
- if (tableno > 1)
- fprintf(f, "_%d", t+1);
- fprintf(f, "[c");
- if (tables[t].minline > 0)
- fprintf(f, "-0x%02x", 16*tables[t].minline);
- fprintf(f, "];\n");
- }
- i1 = i2;
- }
- fprintf(f, " return 1;\n");
- }
- fprintf(f, "}\n");
-
- }
-
- fprintf(f, "\n");
-
- {
- int uni2charset[0x10000];
- bool pages[0x100];
- int line[0x2000];
- int tableno;
- struct { int minline; int maxline; int usecount; const char* suffix; } tables[0x2000];
- bool need_c;
- bool fix_0000;
- int i, j, p, j1, j2, t;
-
- for (j = 0; j < 0x10000; j++)
- uni2charset[j] = 0;
- for (p = 0; p < 0x100; p++)
- pages[p] = false;
- for (i = 0; i < 0x100; i++) {
- j = charset2uni[i];
- if (j != 0xfffd) {
- uni2charset[j] = i;
- pages[j>>8] = true;
- }
- }
- for (j1 = 0; j1 < 0x2000; j1++) {
- bool all_invalid = true;
- bool all_identity = true;
- for (j2 = 0; j2 < 8; j2++) {
- j = 8*j1+j2;
- if (uni2charset[j] != 0)
- all_invalid = false;
- if (uni2charset[j] != j)
- all_identity = false;
- }
- if (all_invalid)
- line[j1] = -2;
- else if (all_identity)
- line[j1] = -1;
- else
- line[j1] = 0;
- }
- tableno = 0;
- for (j1 = 0; j1 < 0x2000; j1++) {
- if (line[j1] >= 0) {
- if (tableno > 0
- && ((j1 > 0 && line[j1-1] == tableno-1)
- || ((tables[tableno-1].maxline >> 5) == (j1 >> 5)
- && j1 - tables[tableno-1].maxline <= 8))) {
- line[j1] = tableno-1;
- tables[tableno-1].maxline = j1;
- } else {
- tableno++;
- line[j1] = tableno-1;
- tables[tableno-1].minline = tables[tableno-1].maxline = j1;
- }
- }
- }
- for (t = 0; t < tableno; t++) {
- tables[t].usecount = 0;
- j1 = 8*tables[t].minline;
- j2 = 8*(tables[t].maxline+1);
- for (j = j1; j < j2; j++)
- if (uni2charset[j] != 0)
- tables[t].usecount++;
- }
- for (t = 0, p = -1, i = 0; t < tableno; t++) {
- if (tables[t].usecount > 1) {
- char* s;
- if (p == tables[t].minline >> 5) {
- s = (char*) malloc(5+1);
- sprintf(s, "%02x_%d", p, ++i);
- } else {
- p = tables[t].minline >> 5;
- s = (char*) malloc(2+1);
- sprintf(s, "%02x", p);
- }
- tables[t].suffix = s;
- } else
- tables[t].suffix = NULL;
- }
- {
- p = -1;
- for (t = 0; t < tableno; t++)
- if (tables[t].usecount > 1) {
- p = 0;
- fprintf(f, "static const unsigned char %s_page%s[%d] = {\n", c_charsetname, tables[t].suffix, 8*(tables[t].maxline-tables[t].minline+1));
- for (j1 = tables[t].minline; j1 <= tables[t].maxline; j1++) {
- if ((j1 % 0x20) == 0 && j1 > tables[t].minline)
- fprintf(f, " /* 0x%04x */\n", 8*j1);
- fprintf(f, " ");
- for (j2 = 0; j2 < 8; j2++) {
- j = 8*j1+j2;
- fprintf(f, " 0x%02x,", uni2charset[j]);
- }
- fprintf(f, " /* 0x%02x-0x%02x */\n", 8*(j1 % 0x20), 8*(j1 % 0x20)+7);
- }
- fprintf(f, "};\n");
- }
- if (p >= 0)
- fprintf(f, "\n");
- }
- need_c = false;
- for (j1 = 0; j1 < 0x2000;) {
- t = line[j1];
- for (j2 = j1; j2 < 0x2000 && line[j2] == t; j2++);
- if (t >= 0)
- j2 = tables[t].maxline+1;
- if (!(t == -2 || (t == -1 && j1 == 0)))
- need_c = true;
- j1 = j2;
- }
- fix_0000 = false;
- fprintf(f, "static int\n%s_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n)\n", c_charsetname);
- fprintf(f, "{\n");
- if (need_c)
- fprintf(f, " unsigned char c = 0;\n");
- for (j1 = 0; j1 < 0x2000;) {
- t = line[j1];
- for (j2 = j1; j2 < 0x2000 && line[j2] == t; j2++);
- if (t >= 0) {
- if (j1 != tables[t].minline) abort();
- if (j2 > tables[t].maxline+1) abort();
- j2 = tables[t].maxline+1;
- }
- if (t == -2) {
- } else {
- if (j1 == 0)
- fprintf(f, " ");
- else
- fprintf(f, " else ");
- if (t >= 0 && tables[t].usecount == 0) abort();
- if (t >= 0 && tables[t].usecount == 1) {
- if (j2 != j1+1) abort();
- for (j = 8*j1; j < 8*j2; j++)
- if (uni2charset[j] != 0) {
- fprintf(f, "if (wc == 0x%04x)\n c = 0x%02x;\n", j, uni2charset[j]);
- break;
- }
- } else {
- if (j1 == 0) {
- fprintf(f, "if (wc < 0x%04x)", 8*j2);
- } else {
- fprintf(f, "if (wc >= 0x%04x && wc < 0x%04x)", 8*j1, 8*j2);
- }
- if (t == -1) {
- if (j1 == 0)
- /* If wc == 0, the function must return 1, not -1. */
- fprintf(f, " {\n *r = wc;\n return 1;\n }\n");
- else
- fprintf(f, "\n c = wc;\n");
- } else {
- fprintf(f, "\n c = %s_page%s[wc", c_charsetname, tables[t].suffix);
- if (tables[t].minline > 0)
- fprintf(f, "-0x%04x", 8*j1);
- fprintf(f, "];\n");
- if (j1 == 0 && uni2charset[0] == 0)
- /* If wc == 0, the function must return 1, not -1. */
- fix_0000 = true;
- }
- }
- }
- j1 = j2;
- }
- if (need_c) {
- if (fix_0000)
- fprintf(f, " if (c != 0 || wc == 0) {\n");
- else
- fprintf(f, " if (c != 0) {\n");
- fprintf(f, " *r = c;\n");
- fprintf(f, " return 1;\n");
- fprintf(f, " }\n");
- }
- fprintf(f, " return RET_ILSEQ;\n");
- fprintf(f, "}\n");
-
- }
-
- if (ferror(f) || fclose(f))
- exit(1);
- }
-
-#if 0
-
- int i1, i2, i3, i1_min, i1_max, j1, j2;
-
- i1_min = 16;
- i1_max = -1;
- for (i1 = 0; i1 < 16; i1++)
- for (i2 = 0; i2 < 16; i2++)
- if (charset2uni[16*i1+i2] != 0xfffd) {
- if (i1_min > i1) i1_min = i1;
- if (i1_max < i1) i1_max = i1;
- }
- printf("static const unsigned short %s_2uni[%d] = {\n",
- name, 16*(i1_max-i1_min+1));
- for (i1 = i1_min; i1 <= i1_max; i1++) {
- printf(" /""* 0x%02x *""/\n", 16*i1);
- for (i2 = 0; i2 < 2; i2++) {
- printf(" ");
- for (i3 = 0; i3 < 8; i3++) {
- if (i3 > 0) printf(" ");
- printf("0x%04x,", charset2uni[16*i1+8*i2+i3]);
- }
- printf("\n");
- }
- }
- printf("};\n");
- printf("\n");
-
- for (p = 0; p < 0x100; p++)
- pages[p] = 0;
- for (i = 0; i < 0x100; i++)
- if (charset2uni[i] != 0xfffd)
- pages[charset2uni[i]>>8] = 1;
- for (p = 0; p < 0x100; p++)
- if (pages[p]) {
- int j1_min = 32;
- int j1_max = -1;
- for (j1 = 0; j1 < 32; j1++)
- for (j2 = 0; j2 < 8; j2++)
- if (uni2charset[256*p+8*j1+j2] != 0) {
- if (j1_min > j1) j1_min = j1;
- if (j1_max < j1) j1_max = j1;
- }
- printf("static const unsigned char %s_page%02x[%d] = {\n",
- name, p, 8*(j1_max-j1_min+1));
- for (j1 = j1_min; j1 <= j1_max; j1++) {
- printf(" ");
- for (j2 = 0; j2 < 8; j2++)
- printf("0x%02x, ", uni2charset[256*p+8*j1+j2]);
- printf("/""* 0x%02x-0x%02x *""/\n", 8*j1, 8*j1+7);
- }
- printf("};\n");
- }
- printf("\n");
-
-}
-#endif
-
- exit(0);
-}
+
+/*
+ * Generates an 8-bit character set table from a .TXT table as found on
+ * ftp.unicode.org or from a table containing the 256 Unicode values as
+ * hexadecimal integers.
+ * Examples:
+ *
+ * ./8bit_tab_to_h ISO-8859-1 iso8859_1 < tab8859_1
+ * ./8bit_tab_to_h ISO-8859-2 iso8859_2 < tab8859_2
+ * ./8bit_tab_to_h ISO-8859-3 iso8859_3 < tab8859_3
+ * ./8bit_tab_to_h ISO-8859-4 iso8859_4 < tab8859_4
+ * ./8bit_tab_to_h ISO-8859-5 iso8859_5 < tab8859_5
+ * ./8bit_tab_to_h ISO-8859-6 iso8859_6 < tab8859_6
+ * ./8bit_tab_to_h ISO-8859-7 iso8859_7 < tab8859_7
+ * ./8bit_tab_to_h ISO-8859-8 iso8859_8 < tab8859_8
+ * ./8bit_tab_to_h ISO-8859-9 iso8859_9 < tab8859_9
+ * ./8bit_tab_to_h ISO-8859-10 iso8859_10 < tab8859_10
+ * ./8bit_tab_to_h ISO-8859-14 iso8859_14 < tab8859_14
+ * ./8bit_tab_to_h ISO-8859-15 iso8859_15 < tab8859_15
+ * ./8bit_tab_to_h JISX0201.1976-0 jisx0201 < jis0201
+ * ./8bit_tab_to_h TIS620-0 tis620 < tabtis620
+ * ./8bit_tab_to_h KOI8-R koi8_r < tabkoi8_r
+ * ./8bit_tab_to_h KOI8-U koi8_u < tabkoi8_u
+ * ./8bit_tab_to_h ARMSCII-8 armscii_8 < tabarmscii_8
+ * ./8bit_tab_to_h CP1133 cp1133 < tabibm_cp1133
+ * ./8bit_tab_to_h MULELAO-1 mulelao < tabmulelao_1
+ * ./8bit_tab_to_h VISCII1.1-1 viscii1 < tabviscii
+ * ./8bit_tab_to_h TCVN-5712 tcvn < tabtcvn
+ * ./8bit_tab_to_h GEORGIAN-ACADEMY georgian_ac < tabgeorgian_academy
+ * ./8bit_tab_to_h GEORGIAN-PS georgian_ps < tabgeorgian_ps
+ *
+ * ./8bit_tab_to_h ISO-8859-1 iso8859_1 < 8859-1.TXT
+ * ./8bit_tab_to_h ISO-8859-2 iso8859_2 < 8859-2.TXT
+ * ./8bit_tab_to_h ISO-8859-3 iso8859_3 < 8859-3.TXT
+ * ./8bit_tab_to_h ISO-8859-4 iso8859_4 < 8859-4.TXT
+ * ./8bit_tab_to_h ISO-8859-5 iso8859_5 < 8859-5.TXT
+ * ./8bit_tab_to_h ISO-8859-6 iso8859_6 < 8859-6.TXT
+ * ./8bit_tab_to_h ISO-8859-7 iso8859_7 < 8859-7.TXT
+ * ./8bit_tab_to_h ISO-8859-8 iso8859_8 < 8859-8.TXT
+ * ./8bit_tab_to_h ISO-8859-9 iso8859_9 < 8859-9.TXT
+ * ./8bit_tab_to_h ISO-8859-10 iso8859_10 < 8859-10.TXT
+ * ./8bit_tab_to_h ISO-8859-14 iso8859_14 < 8859-14.TXT
+ * ./8bit_tab_to_h ISO-8859-15 iso8859_15 < 8859-15.TXT
+ * ./8bit_tab_to_h JISX0201.1976-0 jisx0201 < JIS0201.TXT
+ * ./8bit_tab_to_h KOI8-R koi8_r < KOI8-R.TXT
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <stdbool.h>
+#include <string.h>
+
+int main (int argc, char *argv[])
+{
+ const char* charsetname;
+ const char* c_charsetname;
+ const char* filename;
+ const char* directory;
+ int charset2uni[0x100];
+
+ if (argc != 3 && argc != 4 && argc != 5)
+ exit(1);
+ charsetname = argv[1];
+ c_charsetname = argv[2];
+ if (argc > 3) {
+ filename = argv[3];
+ } else {
+ char* s = (char*) malloc(strlen(c_charsetname)+strlen(".h")+1);
+ strcpy(s,c_charsetname); strcat(s,".h");
+ filename = s;
+ }
+ directory = (argc > 4 ? argv[4] : "");
+
+ fprintf(stderr, "Creating %s%s\n", directory, filename);
+
+ {
+ int i, c;
+ c = getc(stdin);
+ ungetc(c,stdin);
+ if (c == '#') {
+ /* Read a unicode.org style .TXT file. */
+ for (i = 0; i < 0x100; i++)
+ charset2uni[i] = 0xfffd;
+ for (;;) {
+ c = getc(stdin);
+ if (c == EOF)
+ break;
+ if (c == '\n' || c == ' ' || c == '\t')
+ continue;
+ if (c == '#') {
+ do { c = getc(stdin); } while (!(c == EOF || c == '\n'));
+ continue;
+ }
+ ungetc(c,stdin);
+ if (scanf("0x%x", &i) != 1 || !(i >= 0 && i < 0x100))
+ exit(1);
+ do { c = getc(stdin); } while (c == ' ' || c == '\t');
+ if (c != EOF)
+ ungetc(c,stdin);
+ if (c == '\n' || c == '#')
+ continue;
+ if (scanf("0x%x", &charset2uni[i]) != 1)
+ exit(1);
+ }
+ } else {
+ /* Read a table of hexadecimal Unicode values. */
+ for (i = 0; i < 0x100; i++) {
+ if (scanf("%x", &charset2uni[i]) != 1)
+ exit(1);
+ if (charset2uni[i] < 0 || charset2uni[i] == 0xffff)
+ charset2uni[i] = 0xfffd;
+ }
+ if (scanf("%x", &i) != EOF)
+ exit(1);
+ }
+ }
+
+ /* Write the output file. */
+ {
+ FILE* f;
+
+ {
+ char* fname = malloc(strlen(directory)+strlen(filename)+1);
+ strcpy(fname,directory); strcat(fname,filename);
+ f = fopen(fname,"w");
+ if (f == NULL)
+ exit(1);
+ }
+
+ fprintf(f, "\n");
+ fprintf(f, "/*\n");
+ fprintf(f, " * %s\n", charsetname);
+ fprintf(f, " */\n");
+ fprintf(f, "\n");
+
+ {
+ int i, i1, i2, i3;
+ int line[16];
+ int tableno;
+ struct { int minline; int maxline; } tables[16];
+ bool some_invalid;
+ bool final_ret_reached;
+
+ for (i1 = 0; i1 < 16; i1++) {
+ bool all_invalid = true;
+ bool all_identity = true;
+ for (i2 = 0; i2 < 16; i2++) {
+ i = 16*i1+i2;
+ if (charset2uni[i] != 0xfffd)
+ all_invalid = false;
+ if (charset2uni[i] != i)
+ all_identity = false;
+ }
+ if (all_invalid)
+ line[i1] = -2;
+ else if (all_identity)
+ line[i1] = -1;
+ else
+ line[i1] = 0;
+ }
+ tableno = 0;
+ for (i1 = 0; i1 < 16; i1++) {
+ if (line[i1] >= 0) {
+ if (i1 > 0 && tableno > 0 && line[i1-1] == tableno-1) {
+ line[i1] = tableno-1;
+ tables[tableno-1].maxline = i1;
+ } else {
+ tableno++;
+ line[i1] = tableno-1;
+ tables[tableno-1].minline = tables[tableno-1].maxline = i1;
+ }
+ }
+ }
+ some_invalid = false;
+ for (i = 0; i < 0x100; i++)
+ if (charset2uni[i] == 0xfffd)
+ some_invalid = true;
+ if (tableno > 0) {
+ int t;
+ for (t = 0; t < tableno; t++) {
+ fprintf(f, "static const unsigned short %s_2uni", c_charsetname);
+ if (tableno > 1)
+ fprintf(f, "_%d", t+1);
+ fprintf(f, "[%d] = {\n", 16*(tables[t].maxline-tables[t].minline+1));
+ for (i1 = tables[t].minline; i1 <= tables[t].maxline; i1++) {
+ fprintf(f, " /* 0x%02x */\n", 16*i1);
+ for (i2 = 0; i2 < 2; i2++) {
+ fprintf(f, " ");
+ for (i3 = 0; i3 < 8; i3++) {
+ i = 16*i1+8*i2+i3;
+ fprintf(f, " 0x%04x,", charset2uni[i]);
+ }
+ fprintf(f, "\n");
+ }
+ }
+ fprintf(f, "};\n");
+ }
+ fprintf(f, "\n");
+ }
+ final_ret_reached = false;
+ fprintf(f, "static int\n%s_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n)\n", c_charsetname);
+ fprintf(f, "{\n");
+ fprintf(f, " unsigned char c = *s;\n");
+ if (some_invalid) {
+ for (i1 = 0; i1 < 16;) {
+ int t = line[i1];
+ const char* indent;
+ for (i2 = i1; i2 < 16 && line[i2] == t; i2++);
+ indent = (i1 == 0 && i2 == 16 ? " " : " ");
+ if (i1 == 0) {
+ if (i2 == 16) {
+ } else {
+ fprintf(f, " if (c < 0x%02x) {\n", 16*i2);
+ }
+ } else {
+ if (i2 == 16) {
+ fprintf(f, " else {\n");
+ } else {
+ fprintf(f, " else if (c < 0x%02x) {\n", 16*i2);
+ }
+ }
+ if (t == -2) {
+ final_ret_reached = true;
+ } else if (t == -1) {
+ fprintf(f, "%s*pwc = (ucs4_t) c;\n", indent);
+ fprintf(f, "%sreturn 1;\n", indent);
+ } else {
+ fprintf(f, "%s", indent);
+ some_invalid = false;
+ for (i = 16*i1; i < 16*i2; i++)
+ if (charset2uni[i] == 0xfffd)
+ some_invalid = true;
+ if (some_invalid)
+ fprintf(f, "unsigned short wc = ");
+ else
+ fprintf(f, "*pwc = (ucs4_t) ");
+ fprintf(f, "%s_2uni", c_charsetname);
+ if (tableno > 1)
+ fprintf(f, "_%d", t+1);
+ fprintf(f, "[c");
+ if (tables[t].minline > 0)
+ fprintf(f, "-0x%02x", 16*tables[t].minline);
+ fprintf(f, "];\n");
+ if (some_invalid) {
+ fprintf(f, "%sif (wc != 0xfffd) {\n", indent);
+ fprintf(f, "%s *pwc = (ucs4_t) wc;\n", indent);
+ fprintf(f, "%s return 1;\n", indent);
+ fprintf(f, "%s}\n", indent);
+ final_ret_reached = true;
+ } else {
+ fprintf(f, "%sreturn 1;\n", indent);
+ }
+ }
+ if (!(i1 == 0 && i2 == 16))
+ fprintf(f, " }\n");
+ i1 = i2;
+ }
+ if (final_ret_reached)
+ fprintf(f, " return RET_ILSEQ;\n");
+ } else {
+ for (i1 = 0; i1 < 16;) {
+ int t = line[i1];
+ for (i2 = i1; i2 < 16 && line[i2] == t; i2++);
+ if (i1 == 0) {
+ if (i2 == 16) {
+ fprintf(f, " ");
+ } else {
+ fprintf(f, " if (c < 0x%02x)\n ", 16*i2);
+ }
+ } else {
+ if (i2 == 16) {
+ fprintf(f, " else\n ");
+ } else {
+ fprintf(f, " else if (c < 0x%02x)\n ", 16*i2);
+ }
+ }
+ if (t == -1)
+ fprintf(f, "*pwc = (ucs4_t) c;\n");
+ else {
+ fprintf(f, "*pwc = (ucs4_t) %s_2uni", c_charsetname);
+ if (tableno > 1)
+ fprintf(f, "_%d", t+1);
+ fprintf(f, "[c");
+ if (tables[t].minline > 0)
+ fprintf(f, "-0x%02x", 16*tables[t].minline);
+ fprintf(f, "];\n");
+ }
+ i1 = i2;
+ }
+ fprintf(f, " return 1;\n");
+ }
+ fprintf(f, "}\n");
+
+ }
+
+ fprintf(f, "\n");
+
+ {
+ int uni2charset[0x10000];
+ bool pages[0x100];
+ int line[0x2000];
+ int tableno;
+ struct { int minline; int maxline; int usecount; const char* suffix; } tables[0x2000];
+ bool need_c;
+ bool fix_0000;
+ int i, j, p, j1, j2, t;
+
+ for (j = 0; j < 0x10000; j++)
+ uni2charset[j] = 0;
+ for (p = 0; p < 0x100; p++)
+ pages[p] = false;
+ for (i = 0; i < 0x100; i++) {
+ j = charset2uni[i];
+ if (j != 0xfffd) {
+ uni2charset[j] = i;
+ pages[j>>8] = true;
+ }
+ }
+ for (j1 = 0; j1 < 0x2000; j1++) {
+ bool all_invalid = true;
+ bool all_identity = true;
+ for (j2 = 0; j2 < 8; j2++) {
+ j = 8*j1+j2;
+ if (uni2charset[j] != 0)
+ all_invalid = false;
+ if (uni2charset[j] != j)
+ all_identity = false;
+ }
+ if (all_invalid)
+ line[j1] = -2;
+ else if (all_identity)
+ line[j1] = -1;
+ else
+ line[j1] = 0;
+ }
+ tableno = 0;
+ for (j1 = 0; j1 < 0x2000; j1++) {
+ if (line[j1] >= 0) {
+ if (tableno > 0
+ && ((j1 > 0 && line[j1-1] == tableno-1)
+ || ((tables[tableno-1].maxline >> 5) == (j1 >> 5)
+ && j1 - tables[tableno-1].maxline <= 8))) {
+ line[j1] = tableno-1;
+ tables[tableno-1].maxline = j1;
+ } else {
+ tableno++;
+ line[j1] = tableno-1;
+ tables[tableno-1].minline = tables[tableno-1].maxline = j1;
+ }
+ }
+ }
+ for (t = 0; t < tableno; t++) {
+ tables[t].usecount = 0;
+ j1 = 8*tables[t].minline;
+ j2 = 8*(tables[t].maxline+1);
+ for (j = j1; j < j2; j++)
+ if (uni2charset[j] != 0)
+ tables[t].usecount++;
+ }
+ for (t = 0, p = -1, i = 0; t < tableno; t++) {
+ if (tables[t].usecount > 1) {
+ char* s;
+ if (p == tables[t].minline >> 5) {
+ s = (char*) malloc(5+1);
+ sprintf(s, "%02x_%d", p, ++i);
+ } else {
+ p = tables[t].minline >> 5;
+ s = (char*) malloc(2+1);
+ sprintf(s, "%02x", p);
+ }
+ tables[t].suffix = s;
+ } else
+ tables[t].suffix = NULL;
+ }
+ {
+ p = -1;
+ for (t = 0; t < tableno; t++)
+ if (tables[t].usecount > 1) {
+ p = 0;
+ fprintf(f, "static const unsigned char %s_page%s[%d] = {\n", c_charsetname, tables[t].suffix, 8*(tables[t].maxline-tables[t].minline+1));
+ for (j1 = tables[t].minline; j1 <= tables[t].maxline; j1++) {
+ if ((j1 % 0x20) == 0 && j1 > tables[t].minline)
+ fprintf(f, " /* 0x%04x */\n", 8*j1);
+ fprintf(f, " ");
+ for (j2 = 0; j2 < 8; j2++) {
+ j = 8*j1+j2;
+ fprintf(f, " 0x%02x,", uni2charset[j]);
+ }
+ fprintf(f, " /* 0x%02x-0x%02x */\n", 8*(j1 % 0x20), 8*(j1 % 0x20)+7);
+ }
+ fprintf(f, "};\n");
+ }
+ if (p >= 0)
+ fprintf(f, "\n");
+ }
+ need_c = false;
+ for (j1 = 0; j1 < 0x2000;) {
+ t = line[j1];
+ for (j2 = j1; j2 < 0x2000 && line[j2] == t; j2++);
+ if (t >= 0)
+ j2 = tables[t].maxline+1;
+ if (!(t == -2 || (t == -1 && j1 == 0)))
+ need_c = true;
+ j1 = j2;
+ }
+ fix_0000 = false;
+ fprintf(f, "static int\n%s_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n)\n", c_charsetname);
+ fprintf(f, "{\n");
+ if (need_c)
+ fprintf(f, " unsigned char c = 0;\n");
+ for (j1 = 0; j1 < 0x2000;) {
+ t = line[j1];
+ for (j2 = j1; j2 < 0x2000 && line[j2] == t; j2++);
+ if (t >= 0) {
+ if (j1 != tables[t].minline) abort();
+ if (j2 > tables[t].maxline+1) abort();
+ j2 = tables[t].maxline+1;
+ }
+ if (t == -2) {
+ } else {
+ if (j1 == 0)
+ fprintf(f, " ");
+ else
+ fprintf(f, " else ");
+ if (t >= 0 && tables[t].usecount == 0) abort();
+ if (t >= 0 && tables[t].usecount == 1) {
+ if (j2 != j1+1) abort();
+ for (j = 8*j1; j < 8*j2; j++)
+ if (uni2charset[j] != 0) {
+ fprintf(f, "if (wc == 0x%04x)\n c = 0x%02x;\n", j, uni2charset[j]);
+ break;
+ }
+ } else {
+ if (j1 == 0) {
+ fprintf(f, "if (wc < 0x%04x)", 8*j2);
+ } else {
+ fprintf(f, "if (wc >= 0x%04x && wc < 0x%04x)", 8*j1, 8*j2);
+ }
+ if (t == -1) {
+ if (j1 == 0)
+ /* If wc == 0, the function must return 1, not -1. */
+ fprintf(f, " {\n *r = wc;\n return 1;\n }\n");
+ else
+ fprintf(f, "\n c = wc;\n");
+ } else {
+ fprintf(f, "\n c = %s_page%s[wc", c_charsetname, tables[t].suffix);
+ if (tables[t].minline > 0)
+ fprintf(f, "-0x%04x", 8*j1);
+ fprintf(f, "];\n");
+ if (j1 == 0 && uni2charset[0] == 0)
+ /* If wc == 0, the function must return 1, not -1. */
+ fix_0000 = true;
+ }
+ }
+ }
+ j1 = j2;
+ }
+ if (need_c) {
+ if (fix_0000)
+ fprintf(f, " if (c != 0 || wc == 0) {\n");
+ else
+ fprintf(f, " if (c != 0) {\n");
+ fprintf(f, " *r = c;\n");
+ fprintf(f, " return 1;\n");
+ fprintf(f, " }\n");
+ }
+ fprintf(f, " return RET_ILSEQ;\n");
+ fprintf(f, "}\n");
+
+ }
+
+ if (ferror(f) || fclose(f))
+ exit(1);
+ }
+
+#if 0
+
+ int i1, i2, i3, i1_min, i1_max, j1, j2;
+
+ i1_min = 16;
+ i1_max = -1;
+ for (i1 = 0; i1 < 16; i1++)
+ for (i2 = 0; i2 < 16; i2++)
+ if (charset2uni[16*i1+i2] != 0xfffd) {
+ if (i1_min > i1) i1_min = i1;
+ if (i1_max < i1) i1_max = i1;
+ }
+ printf("static const unsigned short %s_2uni[%d] = {\n",
+ name, 16*(i1_max-i1_min+1));
+ for (i1 = i1_min; i1 <= i1_max; i1++) {
+ printf(" /""* 0x%02x *""/\n", 16*i1);
+ for (i2 = 0; i2 < 2; i2++) {
+ printf(" ");
+ for (i3 = 0; i3 < 8; i3++) {
+ if (i3 > 0) printf(" ");
+ printf("0x%04x,", charset2uni[16*i1+8*i2+i3]);
+ }
+ printf("\n");
+ }
+ }
+ printf("};\n");
+ printf("\n");
+
+ for (p = 0; p < 0x100; p++)
+ pages[p] = 0;
+ for (i = 0; i < 0x100; i++)
+ if (charset2uni[i] != 0xfffd)
+ pages[charset2uni[i]>>8] = 1;
+ for (p = 0; p < 0x100; p++)
+ if (pages[p]) {
+ int j1_min = 32;
+ int j1_max = -1;
+ for (j1 = 0; j1 < 32; j1++)
+ for (j2 = 0; j2 < 8; j2++)
+ if (uni2charset[256*p+8*j1+j2] != 0) {
+ if (j1_min > j1) j1_min = j1;
+ if (j1_max < j1) j1_max = j1;
+ }
+ printf("static const unsigned char %s_page%02x[%d] = {\n",
+ name, p, 8*(j1_max-j1_min+1));
+ for (j1 = j1_min; j1 <= j1_max; j1++) {
+ printf(" ");
+ for (j2 = 0; j2 < 8; j2++)
+ printf("0x%02x, ", uni2charset[256*p+8*j1+j2]);
+ printf("/""* 0x%02x-0x%02x *""/\n", 8*j1, 8*j1+7);
+ }
+ printf("};\n");
+ }
+ printf("\n");
+
+}
+#endif
+
+ exit(0);
+}
diff --git a/libX11/src/xlibi18n/lcUniConv/COPYRIGHT b/libX11/src/xlibi18n/lcUniConv/COPYRIGHT
index b3d6f83f1..ccc162664 100644
--- a/libX11/src/xlibi18n/lcUniConv/COPYRIGHT
+++ b/libX11/src/xlibi18n/lcUniConv/COPYRIGHT
@@ -1,39 +1,39 @@
-This notice applies to the files in this directory. They are taken from
-the libiconv-1.1 package, which is covered by the LGPL license. The files
-in this directory have been placed under the following copyright, with
-permission from the Free Software Foundation.
-
-
-Copyright (c) 1999-2000 Free Software Foundation, Inc.
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-FREE SOFTWARE FOUNDATION BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR
-IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of the Free Software Foundation
-shall not be used in advertising or otherwise to promote the sale, use or
-other dealings in this Software without prior written authorization from the
-Free Software Foundation.
-
-
-Notes:
-
-1. This copyright applies only to the files in this directory, and not to
-the remaining files in libiconv.
-
-2. The Free Software Foundation does not encourage the use of the above
-license for newly written software.
-
+This notice applies to the files in this directory. They are taken from
+the libiconv-1.1 package, which is covered by the LGPL license. The files
+in this directory have been placed under the following copyright, with
+permission from the Free Software Foundation.
+
+
+Copyright (c) 1999-2000 Free Software Foundation, Inc.
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+FREE SOFTWARE FOUNDATION BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR
+IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of the Free Software Foundation
+shall not be used in advertising or otherwise to promote the sale, use or
+other dealings in this Software without prior written authorization from the
+Free Software Foundation.
+
+
+Notes:
+
+1. This copyright applies only to the files in this directory, and not to
+the remaining files in libiconv.
+
+2. The Free Software Foundation does not encourage the use of the above
+license for newly written software.
+
diff --git a/libX11/src/xlibi18n/lcUniConv/README b/libX11/src/xlibi18n/lcUniConv/README
index 5a5668291..53f39f2f4 100644
--- a/libX11/src/xlibi18n/lcUniConv/README
+++ b/libX11/src/xlibi18n/lcUniConv/README
@@ -1,11 +1,11 @@
-
-The files in this directory are taken from the libiconv-1.1 package.
-
-The *.h files were generated from tables (mostly from ftp.unicode.org) using
-the programs '8bit_tab_to_h.c' and 'cjk_tab_to_h.c'. On some of them, further
-optimizations were applied by hand.
-
-If you find a bug in these files, instead of modifying them in XFree86
-and let it diverge from libiconv, please notify the libiconv maintainer
-(currently <bruno@clisp.org>) so he can fix both in synch.
-
+
+The files in this directory are taken from the libiconv-1.1 package.
+
+The *.h files were generated from tables (mostly from ftp.unicode.org) using
+the programs '8bit_tab_to_h.c' and 'cjk_tab_to_h.c'. On some of them, further
+optimizations were applied by hand.
+
+If you find a bug in these files, instead of modifying them in XFree86
+and let it diverge from libiconv, please notify the libiconv maintainer
+(currently <bruno@clisp.org>) so he can fix both in synch.
+
diff --git a/libX11/src/xlibi18n/lcUniConv/armscii_8.h b/libX11/src/xlibi18n/lcUniConv/armscii_8.h
index 96fd80946..567bfeac2 100644
--- a/libX11/src/xlibi18n/lcUniConv/armscii_8.h
+++ b/libX11/src/xlibi18n/lcUniConv/armscii_8.h
@@ -1,97 +1,97 @@
-
-/*
- * ARMSCII-8
- */
-
-static const unsigned short armscii_8_2uni[96] = {
- /* 0xa0 */
- 0x00a0, 0xfffd, 0x0587, 0x0589, 0x0029, 0x0028, 0x00bb, 0x00ab,
- 0x2014, 0x002e, 0x055d, 0x002c, 0x002d, 0x058a, 0x2026, 0x055c,
- /* 0xb0 */
- 0x055b, 0x055e, 0x0531, 0x0561, 0x0532, 0x0562, 0x0533, 0x0563,
- 0x0534, 0x0564, 0x0535, 0x0565, 0x0536, 0x0566, 0x0537, 0x0567,
- /* 0xc0 */
- 0x0538, 0x0568, 0x0539, 0x0569, 0x053a, 0x056a, 0x053b, 0x056b,
- 0x053c, 0x056c, 0x053d, 0x056d, 0x053e, 0x056e, 0x053f, 0x056f,
- /* 0xd0 */
- 0x0540, 0x0570, 0x0541, 0x0571, 0x0542, 0x0572, 0x0543, 0x0573,
- 0x0544, 0x0574, 0x0545, 0x0575, 0x0546, 0x0576, 0x0547, 0x0577,
- /* 0xe0 */
- 0x0548, 0x0578, 0x0549, 0x0579, 0x054a, 0x057a, 0x054b, 0x057b,
- 0x054c, 0x057c, 0x054d, 0x057d, 0x054e, 0x057e, 0x054f, 0x057f,
- /* 0xf0 */
- 0x0550, 0x0580, 0x0551, 0x0581, 0x0552, 0x0582, 0x0553, 0x0583,
- 0x0554, 0x0584, 0x0555, 0x0585, 0x0556, 0x0586, 0x055a, 0xfffd,
-};
-
-static int
-armscii_8_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n)
-{
- unsigned char c = *s;
- if (c < 0xa0) {
- *pwc = (ucs4_t) c;
- return 1;
- }
- else {
- unsigned short wc = armscii_8_2uni[c-0xa0];
- if (wc != 0xfffd) {
- *pwc = (ucs4_t) wc;
- return 1;
- }
- }
- return RET_ILSEQ;
-}
-
-static const unsigned char armscii_8_page00[8] = {
- 0xa5, 0xa4, 0x2a, 0x2b, 0xab, 0xac, 0xa9, 0x2f, /* 0x28-0x2f */
-};
-static const unsigned char armscii_8_page00_1[32] = {
- 0xa0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xa0-0xa7 */
- 0x00, 0x00, 0x00, 0xa7, 0x00, 0x00, 0x00, 0x00, /* 0xa8-0xaf */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xb0-0xb7 */
- 0x00, 0x00, 0x00, 0xa6, 0x00, 0x00, 0x00, 0x00, /* 0xb8-0xbf */
-};
-static const unsigned char armscii_8_page05[96] = {
- 0x00, 0xb2, 0xb4, 0xb6, 0xb8, 0xba, 0xbc, 0xbe, /* 0x30-0x37 */
- 0xc0, 0xc2, 0xc4, 0xc6, 0xc8, 0xca, 0xcc, 0xce, /* 0x38-0x3f */
- 0xd0, 0xd2, 0xd4, 0xd6, 0xd8, 0xda, 0xdc, 0xde, /* 0x40-0x47 */
- 0xe0, 0xe2, 0xe4, 0xe6, 0xe8, 0xea, 0xec, 0xee, /* 0x48-0x4f */
- 0xf0, 0xf2, 0xf4, 0xf6, 0xf8, 0xfa, 0xfc, 0x00, /* 0x50-0x57 */
- 0x00, 0x00, 0xfe, 0xb0, 0xaf, 0xaa, 0xb1, 0x00, /* 0x58-0x5f */
- 0x00, 0xb3, 0xb5, 0xb7, 0xb9, 0xbb, 0xbd, 0xbf, /* 0x60-0x67 */
- 0xc1, 0xc3, 0xc5, 0xc7, 0xc9, 0xcb, 0xcd, 0xcf, /* 0x68-0x6f */
- 0xd1, 0xd3, 0xd5, 0xd7, 0xd9, 0xdb, 0xdd, 0xdf, /* 0x70-0x77 */
- 0xe1, 0xe3, 0xe5, 0xe7, 0xe9, 0xeb, 0xed, 0xef, /* 0x78-0x7f */
- 0xf1, 0xf3, 0xf5, 0xf7, 0xf9, 0xfb, 0xfd, 0xa2, /* 0x80-0x87 */
- 0x00, 0xa3, 0xad, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x88-0x8f */
-};
-static const unsigned char armscii_8_page20[24] = {
- 0x00, 0x00, 0x00, 0x00, 0xa8, 0x00, 0x00, 0x00, /* 0x10-0x17 */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x18-0x1f */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xae, 0x00, /* 0x20-0x27 */
-};
-
-static int
-armscii_8_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n)
-{
- unsigned char c = 0;
- if (wc < 0x0028) {
- *r = wc;
- return 1;
- }
- else if (wc >= 0x0028 && wc < 0x0030)
- c = armscii_8_page00[wc-0x0028];
- else if (wc >= 0x0030 && wc < 0x00a0)
- c = wc;
- else if (wc >= 0x00a0 && wc < 0x00c0)
- c = armscii_8_page00_1[wc-0x00a0];
- else if (wc >= 0x0530 && wc < 0x0590)
- c = armscii_8_page05[wc-0x0530];
- else if (wc >= 0x2010 && wc < 0x2028)
- c = armscii_8_page20[wc-0x2010];
- if (c != 0) {
- *r = c;
- return 1;
- }
- return RET_ILSEQ;
-}
+
+/*
+ * ARMSCII-8
+ */
+
+static const unsigned short armscii_8_2uni[96] = {
+ /* 0xa0 */
+ 0x00a0, 0xfffd, 0x0587, 0x0589, 0x0029, 0x0028, 0x00bb, 0x00ab,
+ 0x2014, 0x002e, 0x055d, 0x002c, 0x002d, 0x058a, 0x2026, 0x055c,
+ /* 0xb0 */
+ 0x055b, 0x055e, 0x0531, 0x0561, 0x0532, 0x0562, 0x0533, 0x0563,
+ 0x0534, 0x0564, 0x0535, 0x0565, 0x0536, 0x0566, 0x0537, 0x0567,
+ /* 0xc0 */
+ 0x0538, 0x0568, 0x0539, 0x0569, 0x053a, 0x056a, 0x053b, 0x056b,
+ 0x053c, 0x056c, 0x053d, 0x056d, 0x053e, 0x056e, 0x053f, 0x056f,
+ /* 0xd0 */
+ 0x0540, 0x0570, 0x0541, 0x0571, 0x0542, 0x0572, 0x0543, 0x0573,
+ 0x0544, 0x0574, 0x0545, 0x0575, 0x0546, 0x0576, 0x0547, 0x0577,
+ /* 0xe0 */
+ 0x0548, 0x0578, 0x0549, 0x0579, 0x054a, 0x057a, 0x054b, 0x057b,
+ 0x054c, 0x057c, 0x054d, 0x057d, 0x054e, 0x057e, 0x054f, 0x057f,
+ /* 0xf0 */
+ 0x0550, 0x0580, 0x0551, 0x0581, 0x0552, 0x0582, 0x0553, 0x0583,
+ 0x0554, 0x0584, 0x0555, 0x0585, 0x0556, 0x0586, 0x055a, 0xfffd,
+};
+
+static int
+armscii_8_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n)
+{
+ unsigned char c = *s;
+ if (c < 0xa0) {
+ *pwc = (ucs4_t) c;
+ return 1;
+ }
+ else {
+ unsigned short wc = armscii_8_2uni[c-0xa0];
+ if (wc != 0xfffd) {
+ *pwc = (ucs4_t) wc;
+ return 1;
+ }
+ }
+ return RET_ILSEQ;
+}
+
+static const unsigned char armscii_8_page00[8] = {
+ 0xa5, 0xa4, 0x2a, 0x2b, 0xab, 0xac, 0xa9, 0x2f, /* 0x28-0x2f */
+};
+static const unsigned char armscii_8_page00_1[32] = {
+ 0xa0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xa0-0xa7 */
+ 0x00, 0x00, 0x00, 0xa7, 0x00, 0x00, 0x00, 0x00, /* 0xa8-0xaf */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xb0-0xb7 */
+ 0x00, 0x00, 0x00, 0xa6, 0x00, 0x00, 0x00, 0x00, /* 0xb8-0xbf */
+};
+static const unsigned char armscii_8_page05[96] = {
+ 0x00, 0xb2, 0xb4, 0xb6, 0xb8, 0xba, 0xbc, 0xbe, /* 0x30-0x37 */
+ 0xc0, 0xc2, 0xc4, 0xc6, 0xc8, 0xca, 0xcc, 0xce, /* 0x38-0x3f */
+ 0xd0, 0xd2, 0xd4, 0xd6, 0xd8, 0xda, 0xdc, 0xde, /* 0x40-0x47 */
+ 0xe0, 0xe2, 0xe4, 0xe6, 0xe8, 0xea, 0xec, 0xee, /* 0x48-0x4f */
+ 0xf0, 0xf2, 0xf4, 0xf6, 0xf8, 0xfa, 0xfc, 0x00, /* 0x50-0x57 */
+ 0x00, 0x00, 0xfe, 0xb0, 0xaf, 0xaa, 0xb1, 0x00, /* 0x58-0x5f */
+ 0x00, 0xb3, 0xb5, 0xb7, 0xb9, 0xbb, 0xbd, 0xbf, /* 0x60-0x67 */
+ 0xc1, 0xc3, 0xc5, 0xc7, 0xc9, 0xcb, 0xcd, 0xcf, /* 0x68-0x6f */
+ 0xd1, 0xd3, 0xd5, 0xd7, 0xd9, 0xdb, 0xdd, 0xdf, /* 0x70-0x77 */
+ 0xe1, 0xe3, 0xe5, 0xe7, 0xe9, 0xeb, 0xed, 0xef, /* 0x78-0x7f */
+ 0xf1, 0xf3, 0xf5, 0xf7, 0xf9, 0xfb, 0xfd, 0xa2, /* 0x80-0x87 */
+ 0x00, 0xa3, 0xad, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x88-0x8f */
+};
+static const unsigned char armscii_8_page20[24] = {
+ 0x00, 0x00, 0x00, 0x00, 0xa8, 0x00, 0x00, 0x00, /* 0x10-0x17 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x18-0x1f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xae, 0x00, /* 0x20-0x27 */
+};
+
+static int
+armscii_8_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n)
+{
+ unsigned char c = 0;
+ if (wc < 0x0028) {
+ *r = wc;
+ return 1;
+ }
+ else if (wc >= 0x0028 && wc < 0x0030)
+ c = armscii_8_page00[wc-0x0028];
+ else if (wc >= 0x0030 && wc < 0x00a0)
+ c = wc;
+ else if (wc >= 0x00a0 && wc < 0x00c0)
+ c = armscii_8_page00_1[wc-0x00a0];
+ else if (wc >= 0x0530 && wc < 0x0590)
+ c = armscii_8_page05[wc-0x0530];
+ else if (wc >= 0x2010 && wc < 0x2028)
+ c = armscii_8_page20[wc-0x2010];
+ if (c != 0) {
+ *r = c;
+ return 1;
+ }
+ return RET_ILSEQ;
+}
diff --git a/libX11/src/xlibi18n/lcUniConv/ascii.h b/libX11/src/xlibi18n/lcUniConv/ascii.h
index 9f98f3dcb..e32cf417e 100644
--- a/libX11/src/xlibi18n/lcUniConv/ascii.h
+++ b/libX11/src/xlibi18n/lcUniConv/ascii.h
@@ -1,25 +1,25 @@
-
-/*
- * ASCII
- */
-
-static int
-ascii_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n)
-{
- unsigned char c = *s;
- if (c < 0x80) {
- *pwc = (ucs4_t) c;
- return 1;
- }
- return RET_ILSEQ;
-}
-
-static int
-ascii_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n)
-{
- if (wc < 0x0080) {
- *r = wc;
- return 1;
- }
- return RET_ILSEQ;
-}
+
+/*
+ * ASCII
+ */
+
+static int
+ascii_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n)
+{
+ unsigned char c = *s;
+ if (c < 0x80) {
+ *pwc = (ucs4_t) c;
+ return 1;
+ }
+ return RET_ILSEQ;
+}
+
+static int
+ascii_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n)
+{
+ if (wc < 0x0080) {
+ *r = wc;
+ return 1;
+ }
+ return RET_ILSEQ;
+}
diff --git a/libX11/src/xlibi18n/lcUniConv/big5.h b/libX11/src/xlibi18n/lcUniConv/big5.h
index ce81ff307..db439088b 100644
--- a/libX11/src/xlibi18n/lcUniConv/big5.h
+++ b/libX11/src/xlibi18n/lcUniConv/big5.h
@@ -1,4141 +1,4141 @@
-
-/*
- * BIG5
- */
-
-static const unsigned short big5_2uni_pagea1[6121] = {
- /* 0xa1 */
- 0x3000, 0xff0c, 0x3001, 0x3002, 0xff0e, 0x2022, 0xff1b, 0xff1a,
- 0xff1f, 0xff01, 0xfe30, 0x2026, 0x2025, 0xfe50, 0xff64, 0xfe52,
- 0x00b7, 0xfe54, 0xfe55, 0xfe56, 0xfe57, 0xff5c, 0x2013, 0xfe31,
- 0x2014, 0xfe33, 0xfffd, 0xfe34, 0xfe4f, 0xff08, 0xff09, 0xfe35,
- 0xfe36, 0xff5b, 0xff5d, 0xfe37, 0xfe38, 0x3014, 0x3015, 0xfe39,
- 0xfe3a, 0x3010, 0x3011, 0xfe3b, 0xfe3c, 0x300a, 0x300b, 0xfe3d,
- 0xfe3e, 0x3008, 0x3009, 0xfe3f, 0xfe40, 0x300c, 0x300d, 0xfe41,
- 0xfe42, 0x300e, 0x300f, 0xfe43, 0xfe44, 0xfe59, 0xfe5a, 0xfe5b,
- 0xfe5c, 0xfe5d, 0xfe5e, 0x2018, 0x2019, 0x201c, 0x201d, 0x301d,
- 0x301e, 0x2035, 0x2032, 0xff03, 0xff06, 0xff0a, 0x203b, 0x00a7,
- 0x3003, 0x25cb, 0x25cf, 0x25b3, 0x25b2, 0x25ce, 0x2606, 0x2605,
- 0x25c7, 0x25c6, 0x25a1, 0x25a0, 0x25bd, 0x25bc, 0x32a3, 0x2105,
- 0x203e, 0xfffd, 0xff3f, 0xfffd, 0xfe49, 0xfe4a, 0xfe4d, 0xfe4e,
- 0xfe4b, 0xfe4c, 0xfe5f, 0xfe60, 0xfe61, 0xff0b, 0xff0d, 0x00d7,
- 0x00f7, 0x00b1, 0x221a, 0xff1c, 0xff1e, 0xff1d, 0x2266, 0x2267,
- 0x2260, 0x221e, 0x2252, 0x2261, 0xfe62, 0xfe63, 0xfe64, 0xfe65,
- 0xfe66, 0x223c, 0x2229, 0x222a, 0x22a5, 0x2220, 0x221f, 0x22bf,
- 0x33d2, 0x33d1, 0x222b, 0x222e, 0x2235, 0x2234, 0x2640, 0x2642,
- 0x2641, 0x2609, 0x2191, 0x2193, 0x2190, 0x2192, 0x2196, 0x2197,
- 0x2199, 0x2198, 0x2225, 0x2223, 0xfffd,
- /* 0xa2 */
- 0xfffd, 0xff0f, 0xff3c, 0xff04, 0x00a5, 0x3012, 0x00a2, 0x00a3,
- 0xff05, 0xff20, 0x2103, 0x2109, 0xfe69, 0xfe6a, 0xfe6b, 0x33d5,
- 0x339c, 0x339d, 0x339e, 0x33ce, 0x33a1, 0x338e, 0x338f, 0x33c4,
- 0x00b0, 0x5159, 0x515b, 0x515e, 0x515d, 0x5161, 0x5163, 0x55e7,
- 0x74e9, 0x7cce, 0x2581, 0x2582, 0x2583, 0x2584, 0x2585, 0x2586,
- 0x2587, 0x2588, 0x258f, 0x258e, 0x258d, 0x258c, 0x258b, 0x258a,
- 0x2589, 0x253c, 0x2534, 0x252c, 0x2524, 0x251c, 0x2594, 0x2500,
- 0x2502, 0x2595, 0x250c, 0x2510, 0x2514, 0x2518, 0x256d, 0x256e,
- 0x2570, 0x256f, 0x2550, 0x255e, 0x256a, 0x2561, 0x25e2, 0x25e3,
- 0x25e5, 0x25e4, 0x2571, 0x2572, 0x2573, 0xff10, 0xff11, 0xff12,
- 0xff13, 0xff14, 0xff15, 0xff16, 0xff17, 0xff18, 0xff19, 0x2160,
- 0x2161, 0x2162, 0x2163, 0x2164, 0x2165, 0x2166, 0x2167, 0x2168,
- 0x2169, 0x3021, 0x3022, 0x3023, 0x3024, 0x3025, 0x3026, 0x3027,
- 0x3028, 0x3029, 0xfffd, 0x5344, 0xfffd, 0xff21, 0xff22, 0xff23,
- 0xff24, 0xff25, 0xff26, 0xff27, 0xff28, 0xff29, 0xff2a, 0xff2b,
- 0xff2c, 0xff2d, 0xff2e, 0xff2f, 0xff30, 0xff31, 0xff32, 0xff33,
- 0xff34, 0xff35, 0xff36, 0xff37, 0xff38, 0xff39, 0xff3a, 0xff41,
- 0xff42, 0xff43, 0xff44, 0xff45, 0xff46, 0xff47, 0xff48, 0xff49,
- 0xff4a, 0xff4b, 0xff4c, 0xff4d, 0xff4e, 0xff4f, 0xff50, 0xff51,
- 0xff52, 0xff53, 0xff54, 0xff55, 0xff56,
- /* 0xa3 */
- 0xff57, 0xff58, 0xff59, 0xff5a, 0x0391, 0x0392, 0x0393, 0x0394,
- 0x0395, 0x0396, 0x0397, 0x0398, 0x0399, 0x039a, 0x039b, 0x039c,
- 0x039d, 0x039e, 0x039f, 0x03a0, 0x03a1, 0x03a3, 0x03a4, 0x03a5,
- 0x03a6, 0x03a7, 0x03a8, 0x03a9, 0x03b1, 0x03b2, 0x03b3, 0x03b4,
- 0x03b5, 0x03b6, 0x03b7, 0x03b8, 0x03b9, 0x03ba, 0x03bb, 0x03bc,
- 0x03bd, 0x03be, 0x03bf, 0x03c0, 0x03c1, 0x03c3, 0x03c4, 0x03c5,
- 0x03c6, 0x03c7, 0x03c8, 0x03c9, 0x3105, 0x3106, 0x3107, 0x3108,
- 0x3109, 0x310a, 0x310b, 0x310c, 0x310d, 0x310e, 0x310f, 0x3110,
- 0x3111, 0x3112, 0x3113, 0x3114, 0x3115, 0x3116, 0x3117, 0x3118,
- 0x3119, 0x311a, 0x311b, 0x311c, 0x311d, 0x311e, 0x311f, 0x3120,
- 0x3121, 0x3122, 0x3123, 0x3124, 0x3125, 0x3126, 0x3127, 0x3128,
- 0x3129, 0x02d9, 0x02c9, 0x02ca, 0x02c7, 0x02cb, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- /* 0xa4 */
- 0x4e00, 0x4e59, 0x4e01, 0x4e03, 0x4e43, 0x4e5d, 0x4e86, 0x4e8c,
- 0x4eba, 0x513f, 0x5165, 0x516b, 0x51e0, 0x5200, 0x5201, 0x529b,
- 0x5315, 0x5341, 0x535c, 0x53c8, 0x4e09, 0x4e0b, 0x4e08, 0x4e0a,
- 0x4e2b, 0x4e38, 0x51e1, 0x4e45, 0x4e48, 0x4e5f, 0x4e5e, 0x4e8e,
- 0x4ea1, 0x5140, 0x5203, 0x52fa, 0x5343, 0x53c9, 0x53e3, 0x571f,
- 0x58eb, 0x5915, 0x5927, 0x5973, 0x5b50, 0x5b51, 0x5b53, 0x5bf8,
- 0x5c0f, 0x5c22, 0x5c38, 0x5c71, 0x5ddd, 0x5de5, 0x5df1, 0x5df2,
- 0x5df3, 0x5dfe, 0x5e72, 0x5efe, 0x5f0b, 0x5f13, 0x624d, 0x4e11,
- 0x4e10, 0x4e0d, 0x4e2d, 0x4e30, 0x4e39, 0x4e4b, 0x5c39, 0x4e88,
- 0x4e91, 0x4e95, 0x4e92, 0x4e94, 0x4ea2, 0x4ec1, 0x4ec0, 0x4ec3,
- 0x4ec6, 0x4ec7, 0x4ecd, 0x4eca, 0x4ecb, 0x4ec4, 0x5143, 0x5141,
- 0x5167, 0x516d, 0x516e, 0x516c, 0x5197, 0x51f6, 0x5206, 0x5207,
- 0x5208, 0x52fb, 0x52fe, 0x52ff, 0x5316, 0x5339, 0x5348, 0x5347,
- 0x5345, 0x535e, 0x5384, 0x53cb, 0x53ca, 0x53cd, 0x58ec, 0x5929,
- 0x592b, 0x592a, 0x592d, 0x5b54, 0x5c11, 0x5c24, 0x5c3a, 0x5c6f,
- 0x5df4, 0x5e7b, 0x5eff, 0x5f14, 0x5f15, 0x5fc3, 0x6208, 0x6236,
- 0x624b, 0x624e, 0x652f, 0x6587, 0x6597, 0x65a4, 0x65b9, 0x65e5,
- 0x66f0, 0x6708, 0x6728, 0x6b20, 0x6b62, 0x6b79, 0x6bcb, 0x6bd4,
- 0x6bdb, 0x6c0f, 0x6c34, 0x706b, 0x722a, 0x7236, 0x723b, 0x7247,
- 0x7259, 0x725b, 0x72ac, 0x738b, 0x4e19,
- /* 0xa5 */
- 0x4e16, 0x4e15, 0x4e14, 0x4e18, 0x4e3b, 0x4e4d, 0x4e4f, 0x4e4e,
- 0x4ee5, 0x4ed8, 0x4ed4, 0x4ed5, 0x4ed6, 0x4ed7, 0x4ee3, 0x4ee4,
- 0x4ed9, 0x4ede, 0x5145, 0x5144, 0x5189, 0x518a, 0x51ac, 0x51f9,
- 0x51fa, 0x51f8, 0x520a, 0x52a0, 0x529f, 0x5305, 0x5306, 0x5317,
- 0x531d, 0x4edf, 0x534a, 0x5349, 0x5361, 0x5360, 0x536f, 0x536e,
- 0x53bb, 0x53ef, 0x53e4, 0x53f3, 0x53ec, 0x53ee, 0x53e9, 0x53e8,
- 0x53fc, 0x53f8, 0x53f5, 0x53eb, 0x53e6, 0x53ea, 0x53f2, 0x53f1,
- 0x53f0, 0x53e5, 0x53ed, 0x53fb, 0x56db, 0x56da, 0x5916, 0x592e,
- 0x5931, 0x5974, 0x5976, 0x5b55, 0x5b83, 0x5c3c, 0x5de8, 0x5de7,
- 0x5de6, 0x5e02, 0x5e03, 0x5e73, 0x5e7c, 0x5f01, 0x5f18, 0x5f17,
- 0x5fc5, 0x620a, 0x6253, 0x6254, 0x6252, 0x6251, 0x65a5, 0x65e6,
- 0x672e, 0x672c, 0x672a, 0x672b, 0x672d, 0x6b63, 0x6bcd, 0x6c11,
- 0x6c10, 0x6c38, 0x6c41, 0x6c40, 0x6c3e, 0x72af, 0x7384, 0x7389,
- 0x74dc, 0x74e6, 0x7518, 0x751f, 0x7528, 0x7529, 0x7530, 0x7531,
- 0x7532, 0x7533, 0x758b, 0x767d, 0x76ae, 0x76bf, 0x76ee, 0x77db,
- 0x77e2, 0x77f3, 0x793a, 0x79be, 0x7a74, 0x7acb, 0x4e1e, 0x4e1f,
- 0x4e52, 0x4e53, 0x4e69, 0x4e99, 0x4ea4, 0x4ea6, 0x4ea5, 0x4eff,
- 0x4f09, 0x4f19, 0x4f0a, 0x4f15, 0x4f0d, 0x4f10, 0x4f11, 0x4f0f,
- 0x4ef2, 0x4ef6, 0x4efb, 0x4ef0, 0x4ef3, 0x4efd, 0x4f01, 0x4f0b,
- 0x5149, 0x5147, 0x5146, 0x5148, 0x5168,
- /* 0xa6 */
- 0x5171, 0x518d, 0x51b0, 0x5217, 0x5211, 0x5212, 0x520e, 0x5216,
- 0x52a3, 0x5308, 0x5321, 0x5320, 0x5370, 0x5371, 0x5409, 0x540f,
- 0x540c, 0x540a, 0x5410, 0x5401, 0x540b, 0x5404, 0x5411, 0x540d,
- 0x5408, 0x5403, 0x540e, 0x5406, 0x5412, 0x56e0, 0x56de, 0x56dd,
- 0x5733, 0x5730, 0x5728, 0x572d, 0x572c, 0x572f, 0x5729, 0x5919,
- 0x591a, 0x5937, 0x5938, 0x5984, 0x5978, 0x5983, 0x597d, 0x5979,
- 0x5982, 0x5981, 0x5b57, 0x5b58, 0x5b87, 0x5b88, 0x5b85, 0x5b89,
- 0x5bfa, 0x5c16, 0x5c79, 0x5dde, 0x5e06, 0x5e76, 0x5e74, 0x5f0f,
- 0x5f1b, 0x5fd9, 0x5fd6, 0x620e, 0x620c, 0x620d, 0x6210, 0x6263,
- 0x625b, 0x6258, 0x6536, 0x65e9, 0x65e8, 0x65ec, 0x65ed, 0x66f2,
- 0x66f3, 0x6709, 0x673d, 0x6734, 0x6731, 0x6735, 0x6b21, 0x6b64,
- 0x6b7b, 0x6c16, 0x6c5d, 0x6c57, 0x6c59, 0x6c5f, 0x6c60, 0x6c50,
- 0x6c55, 0x6c61, 0x6c5b, 0x6c4d, 0x6c4e, 0x7070, 0x725f, 0x725d,
- 0x767e, 0x7af9, 0x7c73, 0x7cf8, 0x7f36, 0x7f8a, 0x7fbd, 0x8001,
- 0x8003, 0x800c, 0x8012, 0x8033, 0x807f, 0x8089, 0x808b, 0x808c,
- 0x81e3, 0x81ea, 0x81f3, 0x81fc, 0x820c, 0x821b, 0x821f, 0x826e,
- 0x8272, 0x827e, 0x866b, 0x8840, 0x884c, 0x8863, 0x897f, 0x9621,
- 0x4e32, 0x4ea8, 0x4f4d, 0x4f4f, 0x4f47, 0x4f57, 0x4f5e, 0x4f34,
- 0x4f5b, 0x4f55, 0x4f30, 0x4f50, 0x4f51, 0x4f3d, 0x4f3a, 0x4f38,
- 0x4f43, 0x4f54, 0x4f3c, 0x4f46, 0x4f63,
- /* 0xa7 */
- 0x4f5c, 0x4f60, 0x4f2f, 0x4f4e, 0x4f36, 0x4f59, 0x4f5d, 0x4f48,
- 0x4f5a, 0x514c, 0x514b, 0x514d, 0x5175, 0x51b6, 0x51b7, 0x5225,
- 0x5224, 0x5229, 0x522a, 0x5228, 0x52ab, 0x52a9, 0x52aa, 0x52ac,
- 0x5323, 0x5373, 0x5375, 0x541d, 0x542d, 0x541e, 0x543e, 0x5426,
- 0x544e, 0x5427, 0x5446, 0x5443, 0x5433, 0x5448, 0x5442, 0x541b,
- 0x5429, 0x544a, 0x5439, 0x543b, 0x5438, 0x542e, 0x5435, 0x5436,
- 0x5420, 0x543c, 0x5440, 0x5431, 0x542b, 0x541f, 0x542c, 0x56ea,
- 0x56f0, 0x56e4, 0x56eb, 0x574a, 0x5751, 0x5740, 0x574d, 0x5747,
- 0x574e, 0x573e, 0x5750, 0x574f, 0x573b, 0x58ef, 0x593e, 0x599d,
- 0x5992, 0x59a8, 0x599e, 0x59a3, 0x5999, 0x5996, 0x598d, 0x59a4,
- 0x5993, 0x598a, 0x59a5, 0x5b5d, 0x5b5c, 0x5b5a, 0x5b5b, 0x5b8c,
- 0x5b8b, 0x5b8f, 0x5c2c, 0x5c40, 0x5c41, 0x5c3f, 0x5c3e, 0x5c90,
- 0x5c91, 0x5c94, 0x5c8c, 0x5deb, 0x5e0c, 0x5e8f, 0x5e87, 0x5e8a,
- 0x5ef7, 0x5f04, 0x5f1f, 0x5f64, 0x5f62, 0x5f77, 0x5f79, 0x5fd8,
- 0x5fcc, 0x5fd7, 0x5fcd, 0x5ff1, 0x5feb, 0x5ff8, 0x5fea, 0x6212,
- 0x6211, 0x6284, 0x6297, 0x6296, 0x6280, 0x6276, 0x6289, 0x626d,
- 0x628a, 0x627c, 0x627e, 0x6279, 0x6273, 0x6292, 0x626f, 0x6298,
- 0x626e, 0x6295, 0x6293, 0x6291, 0x6286, 0x6539, 0x653b, 0x6538,
- 0x65f1, 0x66f4, 0x675f, 0x674e, 0x674f, 0x6750, 0x6751, 0x675c,
- 0x6756, 0x675e, 0x6749, 0x6746, 0x6760,
- /* 0xa8 */
- 0x6753, 0x6757, 0x6b65, 0x6bcf, 0x6c42, 0x6c5e, 0x6c99, 0x6c81,
- 0x6c88, 0x6c89, 0x6c85, 0x6c9b, 0x6c6a, 0x6c7a, 0x6c90, 0x6c70,
- 0x6c8c, 0x6c68, 0x6c96, 0x6c92, 0x6c7d, 0x6c83, 0x6c72, 0x6c7e,
- 0x6c74, 0x6c86, 0x6c76, 0x6c8d, 0x6c94, 0x6c98, 0x6c82, 0x7076,
- 0x707c, 0x707d, 0x7078, 0x7262, 0x7261, 0x7260, 0x72c4, 0x72c2,
- 0x7396, 0x752c, 0x752b, 0x7537, 0x7538, 0x7682, 0x76ef, 0x77e3,
- 0x79c1, 0x79c0, 0x79bf, 0x7a76, 0x7cfb, 0x7f55, 0x8096, 0x8093,
- 0x809d, 0x8098, 0x809b, 0x809a, 0x80b2, 0x826f, 0x8292, 0x828b,
- 0x828d, 0x898b, 0x89d2, 0x8a00, 0x8c37, 0x8c46, 0x8c55, 0x8c9d,
- 0x8d64, 0x8d70, 0x8db3, 0x8eab, 0x8eca, 0x8f9b, 0x8fb0, 0x8fc2,
- 0x8fc6, 0x8fc5, 0x8fc4, 0x5de1, 0x9091, 0x90a2, 0x90aa, 0x90a6,
- 0x90a3, 0x9149, 0x91c6, 0x91cc, 0x9632, 0x962e, 0x9631, 0x962a,
- 0x962c, 0x4e26, 0x4e56, 0x4e73, 0x4e8b, 0x4e9b, 0x4e9e, 0x4eab,
- 0x4eac, 0x4f6f, 0x4f9d, 0x4f8d, 0x4f73, 0x4f7f, 0x4f6c, 0x4f9b,
- 0x4f8b, 0x4f86, 0x4f83, 0x4f70, 0x4f75, 0x4f88, 0x4f69, 0x4f7b,
- 0x4f96, 0x4f7e, 0x4f8f, 0x4f91, 0x4f7a, 0x5154, 0x5152, 0x5155,
- 0x5169, 0x5177, 0x5176, 0x5178, 0x51bd, 0x51fd, 0x523b, 0x5238,
- 0x5237, 0x523a, 0x5230, 0x522e, 0x5236, 0x5241, 0x52be, 0x52bb,
- 0x5352, 0x5354, 0x5353, 0x5351, 0x5366, 0x5377, 0x5378, 0x5379,
- 0x53d6, 0x53d4, 0x53d7, 0x5473, 0x5475,
- /* 0xa9 */
- 0x5496, 0x5478, 0x5495, 0x5480, 0x547b, 0x5477, 0x5484, 0x5492,
- 0x5486, 0x547c, 0x5490, 0x5471, 0x5476, 0x548c, 0x549a, 0x5462,
- 0x5468, 0x548b, 0x547d, 0x548e, 0x56fa, 0x5783, 0x5777, 0x576a,
- 0x5769, 0x5761, 0x5766, 0x5764, 0x577c, 0x591c, 0x5949, 0x5947,
- 0x5948, 0x5944, 0x5954, 0x59be, 0x59bb, 0x59d4, 0x59b9, 0x59ae,
- 0x59d1, 0x59c6, 0x59d0, 0x59cd, 0x59cb, 0x59d3, 0x59ca, 0x59af,
- 0x59b3, 0x59d2, 0x59c5, 0x5b5f, 0x5b64, 0x5b63, 0x5b97, 0x5b9a,
- 0x5b98, 0x5b9c, 0x5b99, 0x5b9b, 0x5c1a, 0x5c48, 0x5c45, 0x5c46,
- 0x5cb7, 0x5ca1, 0x5cb8, 0x5ca9, 0x5cab, 0x5cb1, 0x5cb3, 0x5e18,
- 0x5e1a, 0x5e16, 0x5e15, 0x5e1b, 0x5e11, 0x5e78, 0x5e9a, 0x5e97,
- 0x5e9c, 0x5e95, 0x5e96, 0x5ef6, 0x5f26, 0x5f27, 0x5f29, 0x5f80,
- 0x5f81, 0x5f7f, 0x5f7c, 0x5fdd, 0x5fe0, 0x5ffd, 0x5ff5, 0x5fff,
- 0x600f, 0x6014, 0x602f, 0x6035, 0x6016, 0x602a, 0x6015, 0x6021,
- 0x6027, 0x6029, 0x602b, 0x601b, 0x6216, 0x6215, 0x623f, 0x623e,
- 0x6240, 0x627f, 0x62c9, 0x62cc, 0x62c4, 0x62bf, 0x62c2, 0x62b9,
- 0x62d2, 0x62db, 0x62ab, 0x62d3, 0x62d4, 0x62cb, 0x62c8, 0x62a8,
- 0x62bd, 0x62bc, 0x62d0, 0x62d9, 0x62c7, 0x62cd, 0x62b5, 0x62da,
- 0x62b1, 0x62d8, 0x62d6, 0x62d7, 0x62c6, 0x62ac, 0x62ce, 0x653e,
- 0x65a7, 0x65bc, 0x65fa, 0x6614, 0x6613, 0x660c, 0x6606, 0x6602,
- 0x660e, 0x6600, 0x660f, 0x6615, 0x660a,
- /* 0xaa */
- 0x6607, 0x670d, 0x670b, 0x676d, 0x678b, 0x6795, 0x6771, 0x679c,
- 0x6773, 0x6777, 0x6787, 0x679d, 0x6797, 0x676f, 0x6770, 0x677f,
- 0x6789, 0x677e, 0x6790, 0x6775, 0x679a, 0x6793, 0x677c, 0x676a,
- 0x6772, 0x6b23, 0x6b66, 0x6b67, 0x6b7f, 0x6c13, 0x6c1b, 0x6ce3,
- 0x6ce8, 0x6cf3, 0x6cb1, 0x6ccc, 0x6ce5, 0x6cb3, 0x6cbd, 0x6cbe,
- 0x6cbc, 0x6ce2, 0x6cab, 0x6cd5, 0x6cd3, 0x6cb8, 0x6cc4, 0x6cb9,
- 0x6cc1, 0x6cae, 0x6cd7, 0x6cc5, 0x6cf1, 0x6cbf, 0x6cbb, 0x6ce1,
- 0x6cdb, 0x6cca, 0x6cac, 0x6cef, 0x6cdc, 0x6cd6, 0x6ce0, 0x7095,
- 0x708e, 0x7092, 0x708a, 0x7099, 0x722c, 0x722d, 0x7238, 0x7248,
- 0x7267, 0x7269, 0x72c0, 0x72ce, 0x72d9, 0x72d7, 0x72d0, 0x73a9,
- 0x73a8, 0x739f, 0x73ab, 0x73a5, 0x753d, 0x759d, 0x7599, 0x759a,
- 0x7684, 0x76c2, 0x76f2, 0x76f4, 0x77e5, 0x77fd, 0x793e, 0x7940,
- 0x7941, 0x79c9, 0x79c8, 0x7a7a, 0x7a79, 0x7afa, 0x7cfe, 0x7f54,
- 0x7f8c, 0x7f8b, 0x8005, 0x80ba, 0x80a5, 0x80a2, 0x80b1, 0x80a1,
- 0x80ab, 0x80a9, 0x80b4, 0x80aa, 0x80af, 0x81e5, 0x81fe, 0x820d,
- 0x82b3, 0x829d, 0x8299, 0x82ad, 0x82bd, 0x829f, 0x82b9, 0x82b1,
- 0x82ac, 0x82a5, 0x82af, 0x82b8, 0x82a3, 0x82b0, 0x82be, 0x82b7,
- 0x864e, 0x8671, 0x521d, 0x8868, 0x8ecb, 0x8fce, 0x8fd4, 0x8fd1,
- 0x90b5, 0x90b8, 0x90b1, 0x90b6, 0x91c7, 0x91d1, 0x9577, 0x9580,
- 0x961c, 0x9640, 0x963f, 0x963b, 0x9644,
- /* 0xab */
- 0x9642, 0x96b9, 0x96e8, 0x9752, 0x975e, 0x4e9f, 0x4ead, 0x4eae,
- 0x4fe1, 0x4fb5, 0x4faf, 0x4fbf, 0x4fe0, 0x4fd1, 0x4fcf, 0x4fdd,
- 0x4fc3, 0x4fb6, 0x4fd8, 0x4fdf, 0x4fca, 0x4fd7, 0x4fae, 0x4fd0,
- 0x4fc4, 0x4fc2, 0x4fda, 0x4fce, 0x4fde, 0x4fb7, 0x5157, 0x5192,
- 0x5191, 0x51a0, 0x524e, 0x5243, 0x524a, 0x524d, 0x524c, 0x524b,
- 0x5247, 0x52c7, 0x52c9, 0x52c3, 0x52c1, 0x530d, 0x5357, 0x537b,
- 0x539a, 0x53db, 0x54ac, 0x54c0, 0x54a8, 0x54ce, 0x54c9, 0x54b8,
- 0x54a6, 0x54b3, 0x54c7, 0x54c2, 0x54bd, 0x54aa, 0x54c1, 0x54c4,
- 0x54c8, 0x54af, 0x54ab, 0x54b1, 0x54bb, 0x54a9, 0x54a7, 0x54bf,
- 0x56ff, 0x5782, 0x578b, 0x57a0, 0x57a3, 0x57a2, 0x57ce, 0x57ae,
- 0x5793, 0x5955, 0x5951, 0x594f, 0x594e, 0x5950, 0x59dc, 0x59d8,
- 0x59ff, 0x59e3, 0x59e8, 0x5a03, 0x59e5, 0x59ea, 0x59da, 0x59e6,
- 0x5a01, 0x59fb, 0x5b69, 0x5ba3, 0x5ba6, 0x5ba4, 0x5ba2, 0x5ba5,
- 0x5c01, 0x5c4e, 0x5c4f, 0x5c4d, 0x5c4b, 0x5cd9, 0x5cd2, 0x5df7,
- 0x5e1d, 0x5e25, 0x5e1f, 0x5e7d, 0x5ea0, 0x5ea6, 0x5efa, 0x5f08,
- 0x5f2d, 0x5f65, 0x5f88, 0x5f85, 0x5f8a, 0x5f8b, 0x5f87, 0x5f8c,
- 0x5f89, 0x6012, 0x601d, 0x6020, 0x6025, 0x600e, 0x6028, 0x604d,
- 0x6070, 0x6068, 0x6062, 0x6046, 0x6043, 0x606c, 0x606b, 0x606a,
- 0x6064, 0x6241, 0x62dc, 0x6316, 0x6309, 0x62fc, 0x62ed, 0x6301,
- 0x62ee, 0x62fd, 0x6307, 0x62f1, 0x62f7,
- /* 0xac */
- 0x62ef, 0x62ec, 0x62fe, 0x62f4, 0x6311, 0x6302, 0x653f, 0x6545,
- 0x65ab, 0x65bd, 0x65e2, 0x6625, 0x662d, 0x6620, 0x6627, 0x662f,
- 0x661f, 0x6628, 0x6631, 0x6624, 0x66f7, 0x67ff, 0x67d3, 0x67f1,
- 0x67d4, 0x67d0, 0x67ec, 0x67b6, 0x67af, 0x67f5, 0x67e9, 0x67ef,
- 0x67c4, 0x67d1, 0x67b4, 0x67da, 0x67e5, 0x67b8, 0x67cf, 0x67de,
- 0x67f3, 0x67b0, 0x67d9, 0x67e2, 0x67dd, 0x67d2, 0x6b6a, 0x6b83,
- 0x6b86, 0x6bb5, 0x6bd2, 0x6bd7, 0x6c1f, 0x6cc9, 0x6d0b, 0x6d32,
- 0x6d2a, 0x6d41, 0x6d25, 0x6d0c, 0x6d31, 0x6d1e, 0x6d17, 0x6d3b,
- 0x6d3d, 0x6d3e, 0x6d36, 0x6d1b, 0x6cf5, 0x6d39, 0x6d27, 0x6d38,
- 0x6d29, 0x6d2e, 0x6d35, 0x6d0e, 0x6d2b, 0x70ab, 0x70ba, 0x70b3,
- 0x70ac, 0x70af, 0x70ad, 0x70b8, 0x70ae, 0x70a4, 0x7230, 0x7272,
- 0x726f, 0x7274, 0x72e9, 0x72e0, 0x72e1, 0x73b7, 0x73ca, 0x73bb,
- 0x73b2, 0x73cd, 0x73c0, 0x73b3, 0x751a, 0x752d, 0x754f, 0x754c,
- 0x754e, 0x754b, 0x75ab, 0x75a4, 0x75a5, 0x75a2, 0x75a3, 0x7678,
- 0x7686, 0x7687, 0x7688, 0x76c8, 0x76c6, 0x76c3, 0x76c5, 0x7701,
- 0x76f9, 0x76f8, 0x7709, 0x770b, 0x76fe, 0x76fc, 0x7707, 0x77dc,
- 0x7802, 0x7814, 0x780c, 0x780d, 0x7946, 0x7949, 0x7948, 0x7947,
- 0x79b9, 0x79ba, 0x79d1, 0x79d2, 0x79cb, 0x7a7f, 0x7a81, 0x7aff,
- 0x7afd, 0x7c7d, 0x7d02, 0x7d05, 0x7d00, 0x7d09, 0x7d07, 0x7d04,
- 0x7d06, 0x7f38, 0x7f8e, 0x7fbf, 0x8004,
- /* 0xad */
- 0x8010, 0x800d, 0x8011, 0x8036, 0x80d6, 0x80e5, 0x80da, 0x80c3,
- 0x80c4, 0x80cc, 0x80e1, 0x80db, 0x80ce, 0x80de, 0x80e4, 0x80dd,
- 0x81f4, 0x8222, 0x82e7, 0x8303, 0x8305, 0x82e3, 0x82db, 0x82e6,
- 0x8304, 0x82e5, 0x8302, 0x8309, 0x82d2, 0x82d7, 0x82f1, 0x8301,
- 0x82dc, 0x82d4, 0x82d1, 0x82de, 0x82d3, 0x82df, 0x82ef, 0x8306,
- 0x8650, 0x8679, 0x867b, 0x867a, 0x884d, 0x886b, 0x8981, 0x89d4,
- 0x8a08, 0x8a02, 0x8a03, 0x8c9e, 0x8ca0, 0x8d74, 0x8d73, 0x8db4,
- 0x8ecd, 0x8ecc, 0x8ff0, 0x8fe6, 0x8fe2, 0x8fea, 0x8fe5, 0x8fed,
- 0x8feb, 0x8fe4, 0x8fe8, 0x90ca, 0x90ce, 0x90c1, 0x90c3, 0x914b,
- 0x914a, 0x91cd, 0x9582, 0x9650, 0x964b, 0x964c, 0x964d, 0x9762,
- 0x9769, 0x97cb, 0x97ed, 0x97f3, 0x9801, 0x98a8, 0x98db, 0x98df,
- 0x9996, 0x9999, 0x4e58, 0x4eb3, 0x500c, 0x500d, 0x5023, 0x4fef,
- 0x5026, 0x5025, 0x4ff8, 0x5029, 0x5016, 0x5006, 0x503c, 0x501f,
- 0x501a, 0x5012, 0x5011, 0x4ffa, 0x5000, 0x5014, 0x5028, 0x4ff1,
- 0x5021, 0x500b, 0x5019, 0x5018, 0x4ff3, 0x4fee, 0x502d, 0x502a,
- 0x4ffe, 0x502b, 0x5009, 0x517c, 0x51a4, 0x51a5, 0x51a2, 0x51cd,
- 0x51cc, 0x51c6, 0x51cb, 0x5256, 0x525c, 0x5254, 0x525b, 0x525d,
- 0x532a, 0x537f, 0x539f, 0x539d, 0x53df, 0x54e8, 0x5510, 0x5501,
- 0x5537, 0x54fc, 0x54e5, 0x54f2, 0x5506, 0x54fa, 0x5514, 0x54e9,
- 0x54ed, 0x54e1, 0x5509, 0x54ee, 0x54ea,
- /* 0xae */
- 0x54e6, 0x5527, 0x5507, 0x54fd, 0x550f, 0x5703, 0x5704, 0x57c2,
- 0x57d4, 0x57cb, 0x57c3, 0x5809, 0x590f, 0x5957, 0x5958, 0x595a,
- 0x5a11, 0x5a18, 0x5a1c, 0x5a1f, 0x5a1b, 0x5a13, 0x59ec, 0x5a20,
- 0x5a23, 0x5a29, 0x5a25, 0x5a0c, 0x5a09, 0x5b6b, 0x5c58, 0x5bb0,
- 0x5bb3, 0x5bb6, 0x5bb4, 0x5bae, 0x5bb5, 0x5bb9, 0x5bb8, 0x5c04,
- 0x5c51, 0x5c55, 0x5c50, 0x5ced, 0x5cfd, 0x5cfb, 0x5cea, 0x5ce8,
- 0x5cf0, 0x5cf6, 0x5d01, 0x5cf4, 0x5dee, 0x5e2d, 0x5e2b, 0x5eab,
- 0x5ead, 0x5ea7, 0x5f31, 0x5f92, 0x5f91, 0x5f90, 0x6059, 0x6063,
- 0x6065, 0x6050, 0x6055, 0x606d, 0x6069, 0x606f, 0x6084, 0x609f,
- 0x609a, 0x608d, 0x6094, 0x608c, 0x6085, 0x6096, 0x6247, 0x62f3,
- 0x6308, 0x62ff, 0x634e, 0x633e, 0x632f, 0x6355, 0x6342, 0x6346,
- 0x634f, 0x6349, 0x633a, 0x6350, 0x633d, 0x632a, 0x632b, 0x6328,
- 0x634d, 0x634c, 0x6548, 0x6549, 0x6599, 0x65c1, 0x65c5, 0x6642,
- 0x6649, 0x664f, 0x6643, 0x6652, 0x664c, 0x6645, 0x6641, 0x66f8,
- 0x6714, 0x6715, 0x6717, 0x6821, 0x6838, 0x6848, 0x6846, 0x6853,
- 0x6839, 0x6842, 0x6854, 0x6829, 0x68b3, 0x6817, 0x684c, 0x6851,
- 0x683d, 0x67f4, 0x6850, 0x6840, 0x683c, 0x6843, 0x682a, 0x6845,
- 0x6813, 0x6818, 0x6841, 0x6b8a, 0x6b89, 0x6bb7, 0x6c23, 0x6c27,
- 0x6c28, 0x6c26, 0x6c24, 0x6cf0, 0x6d6a, 0x6d95, 0x6d88, 0x6d87,
- 0x6d66, 0x6d78, 0x6d77, 0x6d59, 0x6d93,
- /* 0xaf */
- 0x6d6c, 0x6d89, 0x6d6e, 0x6d5a, 0x6d74, 0x6d69, 0x6d8c, 0x6d8a,
- 0x6d79, 0x6d85, 0x6d65, 0x6d94, 0x70ca, 0x70d8, 0x70e4, 0x70d9,
- 0x70c8, 0x70cf, 0x7239, 0x7279, 0x72fc, 0x72f9, 0x72fd, 0x72f8,
- 0x72f7, 0x7386, 0x73ed, 0x7409, 0x73ee, 0x73e0, 0x73ea, 0x73de,
- 0x7554, 0x755d, 0x755c, 0x755a, 0x7559, 0x75be, 0x75c5, 0x75c7,
- 0x75b2, 0x75b3, 0x75bd, 0x75bc, 0x75b9, 0x75c2, 0x75b8, 0x768b,
- 0x76b0, 0x76ca, 0x76cd, 0x76ce, 0x7729, 0x771f, 0x7720, 0x7728,
- 0x77e9, 0x7830, 0x7827, 0x7838, 0x781d, 0x7834, 0x7837, 0x7825,
- 0x782d, 0x7820, 0x781f, 0x7832, 0x7955, 0x7950, 0x7960, 0x795f,
- 0x7956, 0x795e, 0x795d, 0x7957, 0x795a, 0x79e4, 0x79e3, 0x79e7,
- 0x79df, 0x79e6, 0x79e9, 0x79d8, 0x7a84, 0x7a88, 0x7ad9, 0x7b06,
- 0x7b11, 0x7c89, 0x7d21, 0x7d17, 0x7d0b, 0x7d0a, 0x7d20, 0x7d22,
- 0x7d14, 0x7d10, 0x7d15, 0x7d1a, 0x7d1c, 0x7d0d, 0x7d19, 0x7d1b,
- 0x7f3a, 0x7f5f, 0x7f94, 0x7fc5, 0x7fc1, 0x8006, 0x8018, 0x8015,
- 0x8019, 0x8017, 0x803d, 0x803f, 0x80f1, 0x8102, 0x80f0, 0x8105,
- 0x80ed, 0x80f4, 0x8106, 0x80f8, 0x80f3, 0x8108, 0x80fd, 0x810a,
- 0x80fc, 0x80ef, 0x81ed, 0x81ec, 0x8200, 0x8210, 0x822a, 0x822b,
- 0x8228, 0x822c, 0x82bb, 0x832b, 0x8352, 0x8354, 0x834a, 0x8338,
- 0x8350, 0x8349, 0x8335, 0x8334, 0x834f, 0x8332, 0x8339, 0x8336,
- 0x8317, 0x8340, 0x8331, 0x8328, 0x8343,
- /* 0xb0 */
- 0x8654, 0x868a, 0x86aa, 0x8693, 0x86a4, 0x86a9, 0x868c, 0x86a3,
- 0x869c, 0x8870, 0x8877, 0x8881, 0x8882, 0x887d, 0x8879, 0x8a18,
- 0x8a10, 0x8a0e, 0x8a0c, 0x8a15, 0x8a0a, 0x8a17, 0x8a13, 0x8a16,
- 0x8a0f, 0x8a11, 0x8c48, 0x8c7a, 0x8c79, 0x8ca1, 0x8ca2, 0x8d77,
- 0x8eac, 0x8ed2, 0x8ed4, 0x8ecf, 0x8fb1, 0x9001, 0x9006, 0x8ff7,
- 0x9000, 0x8ffa, 0x8ff4, 0x9003, 0x8ffd, 0x9005, 0x8ff8, 0x9095,
- 0x90e1, 0x90dd, 0x90e2, 0x9152, 0x914d, 0x914c, 0x91d8, 0x91dd,
- 0x91d7, 0x91dc, 0x91d9, 0x9583, 0x9662, 0x9663, 0x9661, 0x965b,
- 0x965d, 0x9664, 0x9658, 0x965e, 0x96bb, 0x98e2, 0x99ac, 0x9aa8,
- 0x9ad8, 0x9b25, 0x9b32, 0x9b3c, 0x4e7e, 0x507a, 0x507d, 0x505c,
- 0x5047, 0x5043, 0x504c, 0x505a, 0x5049, 0x5065, 0x5076, 0x504e,
- 0x5055, 0x5075, 0x5074, 0x5077, 0x504f, 0x500f, 0x506f, 0x506d,
- 0x515c, 0x5195, 0x51f0, 0x526a, 0x526f, 0x52d2, 0x52d9, 0x52d8,
- 0x52d5, 0x5310, 0x530f, 0x5319, 0x533f, 0x5340, 0x533e, 0x53c3,
- 0x66fc, 0x5546, 0x556a, 0x5566, 0x5544, 0x555e, 0x5561, 0x5543,
- 0x554a, 0x5531, 0x5556, 0x554f, 0x5555, 0x552f, 0x5564, 0x5538,
- 0x552e, 0x555c, 0x552c, 0x5563, 0x5533, 0x5541, 0x5557, 0x5708,
- 0x570b, 0x5709, 0x57df, 0x5805, 0x580a, 0x5806, 0x57e0, 0x57e4,
- 0x57fa, 0x5802, 0x5835, 0x57f7, 0x57f9, 0x5920, 0x5962, 0x5a36,
- 0x5a41, 0x5a49, 0x5a66, 0x5a6a, 0x5a40,
- /* 0xb1 */
- 0x5a3c, 0x5a62, 0x5a5a, 0x5a46, 0x5a4a, 0x5b70, 0x5bc7, 0x5bc5,
- 0x5bc4, 0x5bc2, 0x5bbf, 0x5bc6, 0x5c09, 0x5c08, 0x5c07, 0x5c60,
- 0x5c5c, 0x5c5d, 0x5d07, 0x5d06, 0x5d0e, 0x5d1b, 0x5d16, 0x5d22,
- 0x5d11, 0x5d29, 0x5d14, 0x5d19, 0x5d24, 0x5d27, 0x5d17, 0x5de2,
- 0x5e38, 0x5e36, 0x5e33, 0x5e37, 0x5eb7, 0x5eb8, 0x5eb6, 0x5eb5,
- 0x5ebe, 0x5f35, 0x5f37, 0x5f57, 0x5f6c, 0x5f69, 0x5f6b, 0x5f97,
- 0x5f99, 0x5f9e, 0x5f98, 0x5fa1, 0x5fa0, 0x5f9c, 0x607f, 0x60a3,
- 0x6089, 0x60a0, 0x60a8, 0x60cb, 0x60b4, 0x60e6, 0x60bd, 0x60c5,
- 0x60bb, 0x60b5, 0x60dc, 0x60bc, 0x60d8, 0x60d5, 0x60c6, 0x60df,
- 0x60b8, 0x60da, 0x60c7, 0x621a, 0x621b, 0x6248, 0x63a0, 0x63a7,
- 0x6372, 0x6396, 0x63a2, 0x63a5, 0x6377, 0x6367, 0x6398, 0x63aa,
- 0x6371, 0x63a9, 0x6389, 0x6383, 0x639b, 0x636b, 0x63a8, 0x6384,
- 0x6388, 0x6399, 0x63a1, 0x63ac, 0x6392, 0x638f, 0x6380, 0x637b,
- 0x6369, 0x6368, 0x637a, 0x655d, 0x6556, 0x6551, 0x6559, 0x6557,
- 0x555f, 0x654f, 0x6558, 0x6555, 0x6554, 0x659c, 0x659b, 0x65ac,
- 0x65cf, 0x65cb, 0x65cc, 0x65ce, 0x665d, 0x665a, 0x6664, 0x6668,
- 0x6666, 0x665e, 0x66f9, 0x52d7, 0x671b, 0x6881, 0x68af, 0x68a2,
- 0x6893, 0x68b5, 0x687f, 0x6876, 0x68b1, 0x68a7, 0x6897, 0x68b0,
- 0x6883, 0x68c4, 0x68ad, 0x6886, 0x6885, 0x6894, 0x689d, 0x68a8,
- 0x689f, 0x68a1, 0x6882, 0x6b32, 0x6bba,
- /* 0xb2 */
- 0x6beb, 0x6bec, 0x6c2b, 0x6d8e, 0x6dbc, 0x6df3, 0x6dd9, 0x6db2,
- 0x6de1, 0x6dcc, 0x6de4, 0x6dfb, 0x6dfa, 0x6e05, 0x6dc7, 0x6dcb,
- 0x6daf, 0x6dd1, 0x6dae, 0x6dde, 0x6df9, 0x6db8, 0x6df7, 0x6df5,
- 0x6dc5, 0x6dd2, 0x6e1a, 0x6db5, 0x6dda, 0x6deb, 0x6dd8, 0x6dea,
- 0x6df1, 0x6dee, 0x6de8, 0x6dc6, 0x6dc4, 0x6daa, 0x6dec, 0x6dbf,
- 0x6de6, 0x70f9, 0x7109, 0x710a, 0x70fd, 0x70ef, 0x723d, 0x727d,
- 0x7281, 0x731c, 0x731b, 0x7316, 0x7313, 0x7319, 0x7387, 0x7405,
- 0x740a, 0x7403, 0x7406, 0x73fe, 0x740d, 0x74e0, 0x74f6, 0x74f7,
- 0x751c, 0x7522, 0x7565, 0x7566, 0x7562, 0x7570, 0x758f, 0x75d4,
- 0x75d5, 0x75b5, 0x75ca, 0x75cd, 0x768e, 0x76d4, 0x76d2, 0x76db,
- 0x7737, 0x773e, 0x773c, 0x7736, 0x7738, 0x773a, 0x786b, 0x7843,
- 0x784e, 0x7965, 0x7968, 0x796d, 0x79fb, 0x7a92, 0x7a95, 0x7b20,
- 0x7b28, 0x7b1b, 0x7b2c, 0x7b26, 0x7b19, 0x7b1e, 0x7b2e, 0x7c92,
- 0x7c97, 0x7c95, 0x7d46, 0x7d43, 0x7d71, 0x7d2e, 0x7d39, 0x7d3c,
- 0x7d40, 0x7d30, 0x7d33, 0x7d44, 0x7d2f, 0x7d42, 0x7d32, 0x7d31,
- 0x7f3d, 0x7f9e, 0x7f9a, 0x7fcc, 0x7fce, 0x7fd2, 0x801c, 0x804a,
- 0x8046, 0x812f, 0x8116, 0x8123, 0x812b, 0x8129, 0x8130, 0x8124,
- 0x8202, 0x8235, 0x8237, 0x8236, 0x8239, 0x838e, 0x839e, 0x8398,
- 0x8378, 0x83a2, 0x8396, 0x83bd, 0x83ab, 0x8392, 0x838a, 0x8393,
- 0x8389, 0x83a0, 0x8377, 0x837b, 0x837c,
- /* 0xb3 */
- 0x8386, 0x83a7, 0x8655, 0x5f6a, 0x86c7, 0x86c0, 0x86b6, 0x86c4,
- 0x86b5, 0x86c6, 0x86cb, 0x86b1, 0x86af, 0x86c9, 0x8853, 0x889e,
- 0x8888, 0x88ab, 0x8892, 0x8896, 0x888d, 0x888b, 0x8993, 0x898f,
- 0x8a2a, 0x8a1d, 0x8a23, 0x8a25, 0x8a31, 0x8a2d, 0x8a1f, 0x8a1b,
- 0x8a22, 0x8c49, 0x8c5a, 0x8ca9, 0x8cac, 0x8cab, 0x8ca8, 0x8caa,
- 0x8ca7, 0x8d67, 0x8d66, 0x8dbe, 0x8dba, 0x8edb, 0x8edf, 0x9019,
- 0x900d, 0x901a, 0x9017, 0x9023, 0x901f, 0x901d, 0x9010, 0x9015,
- 0x901e, 0x9020, 0x900f, 0x9022, 0x9016, 0x901b, 0x9014, 0x90e8,
- 0x90ed, 0x90fd, 0x9157, 0x91ce, 0x91f5, 0x91e6, 0x91e3, 0x91e7,
- 0x91ed, 0x91e9, 0x9589, 0x966a, 0x9675, 0x9673, 0x9678, 0x9670,
- 0x9674, 0x9676, 0x9677, 0x966c, 0x96c0, 0x96ea, 0x96e9, 0x7ae0,
- 0x7adf, 0x9802, 0x9803, 0x9b5a, 0x9ce5, 0x9e75, 0x9e7f, 0x9ea5,
- 0x9ebb, 0x50a2, 0x508d, 0x5085, 0x5099, 0x5091, 0x5080, 0x5096,
- 0x5098, 0x509a, 0x6700, 0x51f1, 0x5272, 0x5274, 0x5275, 0x5269,
- 0x52de, 0x52dd, 0x52db, 0x535a, 0x53a5, 0x557b, 0x5580, 0x55a7,
- 0x557c, 0x558a, 0x559d, 0x5598, 0x5582, 0x559c, 0x55aa, 0x5594,
- 0x5587, 0x558b, 0x5583, 0x55b3, 0x55ae, 0x559f, 0x553e, 0x55b2,
- 0x559a, 0x55bb, 0x55ac, 0x55b1, 0x557e, 0x5589, 0x55ab, 0x5599,
- 0x570d, 0x582f, 0x582a, 0x5834, 0x5824, 0x5830, 0x5831, 0x5821,
- 0x581d, 0x5820, 0x58f9, 0x58fa, 0x5960,
- /* 0xb4 */
- 0x5a77, 0x5a9a, 0x5a7f, 0x5a92, 0x5a9b, 0x5aa7, 0x5b73, 0x5b71,
- 0x5bd2, 0x5bcc, 0x5bd3, 0x5bd0, 0x5c0a, 0x5c0b, 0x5c31, 0x5d4c,
- 0x5d50, 0x5d34, 0x5d47, 0x5dfd, 0x5e45, 0x5e3d, 0x5e40, 0x5e43,
- 0x5e7e, 0x5eca, 0x5ec1, 0x5ec2, 0x5ec4, 0x5f3c, 0x5f6d, 0x5fa9,
- 0x5faa, 0x5fa8, 0x60d1, 0x60e1, 0x60b2, 0x60b6, 0x60e0, 0x611c,
- 0x6123, 0x60fa, 0x6115, 0x60f0, 0x60fb, 0x60f4, 0x6168, 0x60f1,
- 0x610e, 0x60f6, 0x6109, 0x6100, 0x6112, 0x621f, 0x6249, 0x63a3,
- 0x638c, 0x63cf, 0x63c0, 0x63e9, 0x63c9, 0x63c6, 0x63cd, 0x63d2,
- 0x63e3, 0x63d0, 0x63e1, 0x63d6, 0x63ed, 0x63ee, 0x6376, 0x63f4,
- 0x63ea, 0x63db, 0x6452, 0x63da, 0x63f9, 0x655e, 0x6566, 0x6562,
- 0x6563, 0x6591, 0x6590, 0x65af, 0x666e, 0x6670, 0x6674, 0x6676,
- 0x666f, 0x6691, 0x667a, 0x667e, 0x6677, 0x66fe, 0x66ff, 0x671f,
- 0x671d, 0x68fa, 0x68d5, 0x68e0, 0x68d8, 0x68d7, 0x6905, 0x68df,
- 0x68f5, 0x68ee, 0x68e7, 0x68f9, 0x68d2, 0x68f2, 0x68e3, 0x68cb,
- 0x68cd, 0x690d, 0x6912, 0x690e, 0x68c9, 0x68da, 0x696e, 0x68fb,
- 0x6b3e, 0x6b3a, 0x6b3d, 0x6b98, 0x6b96, 0x6bbc, 0x6bef, 0x6c2e,
- 0x6c2f, 0x6c2c, 0x6e2f, 0x6e38, 0x6e54, 0x6e21, 0x6e32, 0x6e67,
- 0x6e4a, 0x6e20, 0x6e25, 0x6e23, 0x6e1b, 0x6e5b, 0x6e58, 0x6e24,
- 0x6e56, 0x6e6e, 0x6e2d, 0x6e26, 0x6e6f, 0x6e34, 0x6e4d, 0x6e3a,
- 0x6e2c, 0x6e43, 0x6e1d, 0x6e3e, 0x6ecb,
- /* 0xb5 */
- 0x6e89, 0x6e19, 0x6e4e, 0x6e63, 0x6e44, 0x6e72, 0x6e69, 0x6e5f,
- 0x7119, 0x711a, 0x7126, 0x7130, 0x7121, 0x7136, 0x716e, 0x711c,
- 0x724c, 0x7284, 0x7280, 0x7336, 0x7325, 0x7334, 0x7329, 0x743a,
- 0x742a, 0x7433, 0x7422, 0x7425, 0x7435, 0x7436, 0x7434, 0x742f,
- 0x741b, 0x7426, 0x7428, 0x7525, 0x7526, 0x756b, 0x756a, 0x75e2,
- 0x75db, 0x75e3, 0x75d9, 0x75d8, 0x75de, 0x75e0, 0x767b, 0x767c,
- 0x7696, 0x7693, 0x76b4, 0x76dc, 0x774f, 0x77ed, 0x785d, 0x786c,
- 0x786f, 0x7a0d, 0x7a08, 0x7a0b, 0x7a05, 0x7a00, 0x7a98, 0x7a97,
- 0x7a96, 0x7ae5, 0x7ae3, 0x7b49, 0x7b56, 0x7b46, 0x7b50, 0x7b52,
- 0x7b54, 0x7b4d, 0x7b4b, 0x7b4f, 0x7b51, 0x7c9f, 0x7ca5, 0x7d5e,
- 0x7d50, 0x7d68, 0x7d55, 0x7d2b, 0x7d6e, 0x7d72, 0x7d61, 0x7d66,
- 0x7d62, 0x7d70, 0x7d73, 0x5584, 0x7fd4, 0x7fd5, 0x800b, 0x8052,
- 0x8085, 0x8155, 0x8154, 0x814b, 0x8151, 0x814e, 0x8139, 0x8146,
- 0x813e, 0x814c, 0x8153, 0x8174, 0x8212, 0x821c, 0x83e9, 0x8403,
- 0x83f8, 0x840d, 0x83e0, 0x83c5, 0x840b, 0x83c1, 0x83ef, 0x83f1,
- 0x83f4, 0x8457, 0x840a, 0x83f0, 0x840c, 0x83cc, 0x83fd, 0x83f2,
- 0x83ca, 0x8438, 0x840e, 0x8404, 0x83dc, 0x8407, 0x83d4, 0x83df,
- 0x865b, 0x86df, 0x86d9, 0x86ed, 0x86d4, 0x86db, 0x86e4, 0x86d0,
- 0x86de, 0x8857, 0x88c1, 0x88c2, 0x88b1, 0x8983, 0x8996, 0x8a3b,
- 0x8a60, 0x8a55, 0x8a5e, 0x8a3c, 0x8a41,
- /* 0xb6 */
- 0x8a54, 0x8a5b, 0x8a50, 0x8a46, 0x8a34, 0x8a3a, 0x8a36, 0x8a56,
- 0x8c61, 0x8c82, 0x8caf, 0x8cbc, 0x8cb3, 0x8cbd, 0x8cc1, 0x8cbb,
- 0x8cc0, 0x8cb4, 0x8cb7, 0x8cb6, 0x8cbf, 0x8cb8, 0x8d8a, 0x8d85,
- 0x8d81, 0x8dce, 0x8ddd, 0x8dcb, 0x8dda, 0x8dd1, 0x8dcc, 0x8ddb,
- 0x8dc6, 0x8efb, 0x8ef8, 0x8efc, 0x8f9c, 0x902e, 0x9035, 0x9031,
- 0x9038, 0x9032, 0x9036, 0x9102, 0x90f5, 0x9109, 0x90fe, 0x9163,
- 0x9165, 0x91cf, 0x9214, 0x9215, 0x9223, 0x9209, 0x921e, 0x920d,
- 0x9210, 0x9207, 0x9211, 0x9594, 0x958f, 0x958b, 0x9591, 0x9593,
- 0x9592, 0x958e, 0x968a, 0x968e, 0x968b, 0x967d, 0x9685, 0x9686,
- 0x968d, 0x9672, 0x9684, 0x96c1, 0x96c5, 0x96c4, 0x96c6, 0x96c7,
- 0x96ef, 0x96f2, 0x97cc, 0x9805, 0x9806, 0x9808, 0x98e7, 0x98ea,
- 0x98ef, 0x98e9, 0x98f2, 0x98ed, 0x99ae, 0x99ad, 0x9ec3, 0x9ecd,
- 0x9ed1, 0x4e82, 0x50ad, 0x50b5, 0x50b2, 0x50b3, 0x50c5, 0x50be,
- 0x50ac, 0x50b7, 0x50bb, 0x50af, 0x50c7, 0x527f, 0x5277, 0x527d,
- 0x52df, 0x52e6, 0x52e4, 0x52e2, 0x52e3, 0x532f, 0x55df, 0x55e8,
- 0x55d3, 0x55e6, 0x55ce, 0x55dc, 0x55c7, 0x55d1, 0x55e3, 0x55e4,
- 0x55ef, 0x55da, 0x55e1, 0x55c5, 0x55c6, 0x55e5, 0x55c9, 0x5712,
- 0x5713, 0x585e, 0x5851, 0x5858, 0x5857, 0x585a, 0x5854, 0x586b,
- 0x584c, 0x586d, 0x584a, 0x5862, 0x5852, 0x584b, 0x5967, 0x5ac1,
- 0x5ac9, 0x5acc, 0x5abe, 0x5abd, 0x5abc,
- /* 0xb7 */
- 0x5ab3, 0x5ac2, 0x5ab2, 0x5d69, 0x5d6f, 0x5e4c, 0x5e79, 0x5ec9,
- 0x5ec8, 0x5f12, 0x5f59, 0x5fac, 0x5fae, 0x611a, 0x610f, 0x6148,
- 0x611f, 0x60f3, 0x611b, 0x60f9, 0x6101, 0x6108, 0x614e, 0x614c,
- 0x6144, 0x614d, 0x613e, 0x6134, 0x6127, 0x610d, 0x6106, 0x6137,
- 0x6221, 0x6222, 0x6413, 0x643e, 0x641e, 0x642a, 0x642d, 0x643d,
- 0x642c, 0x640f, 0x641c, 0x6414, 0x640d, 0x6436, 0x6416, 0x6417,
- 0x6406, 0x656c, 0x659f, 0x65b0, 0x6697, 0x6689, 0x6687, 0x6688,
- 0x6696, 0x6684, 0x6698, 0x668d, 0x6703, 0x6994, 0x696d, 0x695a,
- 0x6977, 0x6960, 0x6954, 0x6975, 0x6930, 0x6982, 0x694a, 0x6968,
- 0x696b, 0x695e, 0x6953, 0x6979, 0x6986, 0x695d, 0x6963, 0x695b,
- 0x6b47, 0x6b72, 0x6bc0, 0x6bbf, 0x6bd3, 0x6bfd, 0x6ea2, 0x6eaf,
- 0x6ed3, 0x6eb6, 0x6ec2, 0x6e90, 0x6e9d, 0x6ec7, 0x6ec5, 0x6ea5,
- 0x6e98, 0x6ebc, 0x6eba, 0x6eab, 0x6ed1, 0x6e96, 0x6e9c, 0x6ec4,
- 0x6ed4, 0x6eaa, 0x6ea7, 0x6eb4, 0x714e, 0x7159, 0x7169, 0x7164,
- 0x7149, 0x7167, 0x715c, 0x716c, 0x7166, 0x714c, 0x7165, 0x715e,
- 0x7146, 0x7168, 0x7156, 0x723a, 0x7252, 0x7337, 0x7345, 0x733f,
- 0x733e, 0x746f, 0x745a, 0x7455, 0x745f, 0x745e, 0x7441, 0x743f,
- 0x7459, 0x745b, 0x745c, 0x7576, 0x7578, 0x7600, 0x75f0, 0x7601,
- 0x75f2, 0x75f1, 0x75fa, 0x75ff, 0x75f4, 0x75f3, 0x76de, 0x76df,
- 0x775b, 0x776b, 0x7766, 0x775e, 0x7763,
- /* 0xb8 */
- 0x7779, 0x776a, 0x776c, 0x775c, 0x7765, 0x7768, 0x7762, 0x77ee,
- 0x788e, 0x78b0, 0x7897, 0x7898, 0x788c, 0x7889, 0x787c, 0x7891,
- 0x7893, 0x787f, 0x797a, 0x797f, 0x7981, 0x842c, 0x79bd, 0x7a1c,
- 0x7a1a, 0x7a20, 0x7a14, 0x7a1f, 0x7a1e, 0x7a9f, 0x7aa0, 0x7b77,
- 0x7bc0, 0x7b60, 0x7b6e, 0x7b67, 0x7cb1, 0x7cb3, 0x7cb5, 0x7d93,
- 0x7d79, 0x7d91, 0x7d81, 0x7d8f, 0x7d5b, 0x7f6e, 0x7f69, 0x7f6a,
- 0x7f72, 0x7fa9, 0x7fa8, 0x7fa4, 0x8056, 0x8058, 0x8086, 0x8084,
- 0x8171, 0x8170, 0x8178, 0x8165, 0x816e, 0x8173, 0x816b, 0x8179,
- 0x817a, 0x8166, 0x8205, 0x8247, 0x8482, 0x8477, 0x843d, 0x8431,
- 0x8475, 0x8466, 0x846b, 0x8449, 0x846c, 0x845b, 0x843c, 0x8435,
- 0x8461, 0x8463, 0x8469, 0x846d, 0x8446, 0x865e, 0x865c, 0x865f,
- 0x86f9, 0x8713, 0x8708, 0x8707, 0x8700, 0x86fe, 0x86fb, 0x8702,
- 0x8703, 0x8706, 0x870a, 0x8859, 0x88df, 0x88d4, 0x88d9, 0x88dc,
- 0x88d8, 0x88dd, 0x88e1, 0x88ca, 0x88d5, 0x88d2, 0x899c, 0x89e3,
- 0x8a6b, 0x8a72, 0x8a73, 0x8a66, 0x8a69, 0x8a70, 0x8a87, 0x8a7c,
- 0x8a63, 0x8aa0, 0x8a71, 0x8a85, 0x8a6d, 0x8a62, 0x8a6e, 0x8a6c,
- 0x8a79, 0x8a7b, 0x8a3e, 0x8a68, 0x8c62, 0x8c8a, 0x8c89, 0x8cca,
- 0x8cc7, 0x8cc8, 0x8cc4, 0x8cb2, 0x8cc3, 0x8cc2, 0x8cc5, 0x8de1,
- 0x8ddf, 0x8de8, 0x8def, 0x8df3, 0x8dfa, 0x8dea, 0x8de4, 0x8de6,
- 0x8eb2, 0x8f03, 0x8f09, 0x8efe, 0x8f0a,
- /* 0xb9 */
- 0x8f9f, 0x8fb2, 0x904b, 0x904a, 0x9053, 0x9042, 0x9054, 0x903c,
- 0x9055, 0x9050, 0x9047, 0x904f, 0x904e, 0x904d, 0x9051, 0x903e,
- 0x9041, 0x9112, 0x9117, 0x916c, 0x916a, 0x9169, 0x91c9, 0x9237,
- 0x9257, 0x9238, 0x923d, 0x9240, 0x923e, 0x925b, 0x924b, 0x9264,
- 0x9251, 0x9234, 0x9249, 0x924d, 0x9245, 0x9239, 0x923f, 0x925a,
- 0x9598, 0x9698, 0x9694, 0x9695, 0x96cd, 0x96cb, 0x96c9, 0x96ca,
- 0x96f7, 0x96fb, 0x96f9, 0x96f6, 0x9756, 0x9774, 0x9776, 0x9810,
- 0x9811, 0x9813, 0x980a, 0x9812, 0x980c, 0x98fc, 0x98f4, 0x98fd,
- 0x98fe, 0x99b3, 0x99b1, 0x99b4, 0x9ae1, 0x9ce9, 0x9e82, 0x9f0e,
- 0x9f13, 0x9f20, 0x50e7, 0x50ee, 0x50e5, 0x50d6, 0x50ed, 0x50da,
- 0x50d5, 0x50cf, 0x50d1, 0x50f1, 0x50ce, 0x50e9, 0x5162, 0x51f3,
- 0x5283, 0x5282, 0x5331, 0x53ad, 0x55fe, 0x5600, 0x561b, 0x5617,
- 0x55fd, 0x5614, 0x5606, 0x5609, 0x560d, 0x560e, 0x55f7, 0x5616,
- 0x561f, 0x5608, 0x5610, 0x55f6, 0x5718, 0x5716, 0x5875, 0x587e,
- 0x5883, 0x5893, 0x588a, 0x5879, 0x5885, 0x587d, 0x58fd, 0x5925,
- 0x5922, 0x5924, 0x596a, 0x5969, 0x5ae1, 0x5ae6, 0x5ae9, 0x5ad7,
- 0x5ad6, 0x5ad8, 0x5ae3, 0x5b75, 0x5bde, 0x5be7, 0x5be1, 0x5be5,
- 0x5be6, 0x5be8, 0x5be2, 0x5be4, 0x5bdf, 0x5c0d, 0x5c62, 0x5d84,
- 0x5d87, 0x5e5b, 0x5e63, 0x5e55, 0x5e57, 0x5e54, 0x5ed3, 0x5ed6,
- 0x5f0a, 0x5f46, 0x5f70, 0x5fb9, 0x6147,
- /* 0xba */
- 0x613f, 0x614b, 0x6177, 0x6162, 0x6163, 0x615f, 0x615a, 0x6158,
- 0x6175, 0x622a, 0x6487, 0x6458, 0x6454, 0x64a4, 0x6478, 0x645f,
- 0x647a, 0x6451, 0x6467, 0x6434, 0x646d, 0x647b, 0x6572, 0x65a1,
- 0x65d7, 0x65d6, 0x66a2, 0x66a8, 0x669d, 0x699c, 0x69a8, 0x6995,
- 0x69c1, 0x69ae, 0x69d3, 0x69cb, 0x699b, 0x69b7, 0x69bb, 0x69ab,
- 0x69b4, 0x69d0, 0x69cd, 0x69ad, 0x69cc, 0x69a6, 0x69c3, 0x69a3,
- 0x6b49, 0x6b4c, 0x6c33, 0x6f33, 0x6f14, 0x6efe, 0x6f13, 0x6ef4,
- 0x6f29, 0x6f3e, 0x6f20, 0x6f2c, 0x6f0f, 0x6f02, 0x6f22, 0x6eff,
- 0x6eef, 0x6f06, 0x6f31, 0x6f38, 0x6f32, 0x6f23, 0x6f15, 0x6f2b,
- 0x6f2f, 0x6f88, 0x6f2a, 0x6eec, 0x6f01, 0x6ef2, 0x6ecc, 0x6ef7,
- 0x7194, 0x7199, 0x717d, 0x718a, 0x7184, 0x7192, 0x723e, 0x7292,
- 0x7296, 0x7344, 0x7350, 0x7464, 0x7463, 0x746a, 0x7470, 0x746d,
- 0x7504, 0x7591, 0x7627, 0x760d, 0x760b, 0x7609, 0x7613, 0x76e1,
- 0x76e3, 0x7784, 0x777d, 0x777f, 0x7761, 0x78c1, 0x789f, 0x78a7,
- 0x78b3, 0x78a9, 0x78a3, 0x798e, 0x798f, 0x798d, 0x7a2e, 0x7a31,
- 0x7aaa, 0x7aa9, 0x7aed, 0x7aef, 0x7ba1, 0x7b95, 0x7b8b, 0x7b75,
- 0x7b97, 0x7b9d, 0x7b94, 0x7b8f, 0x7bb8, 0x7b87, 0x7b84, 0x7cb9,
- 0x7cbd, 0x7cbe, 0x7dbb, 0x7db0, 0x7d9c, 0x7dbd, 0x7dbe, 0x7da0,
- 0x7dca, 0x7db4, 0x7db2, 0x7db1, 0x7dba, 0x7da2, 0x7dbf, 0x7db5,
- 0x7db8, 0x7dad, 0x7dd2, 0x7dc7, 0x7dac,
- /* 0xbb */
- 0x7f70, 0x7fe0, 0x7fe1, 0x7fdf, 0x805e, 0x805a, 0x8087, 0x8150,
- 0x8180, 0x818f, 0x8188, 0x818a, 0x817f, 0x8182, 0x81e7, 0x81fa,
- 0x8207, 0x8214, 0x821e, 0x824b, 0x84c9, 0x84bf, 0x84c6, 0x84c4,
- 0x8499, 0x849e, 0x84b2, 0x849c, 0x84cb, 0x84b8, 0x84c0, 0x84d3,
- 0x8490, 0x84bc, 0x84d1, 0x84ca, 0x873f, 0x871c, 0x873b, 0x8722,
- 0x8725, 0x8734, 0x8718, 0x8755, 0x8737, 0x8729, 0x88f3, 0x8902,
- 0x88f4, 0x88f9, 0x88f8, 0x88fd, 0x88e8, 0x891a, 0x88ef, 0x8aa6,
- 0x8a8c, 0x8a9e, 0x8aa3, 0x8a8d, 0x8aa1, 0x8a93, 0x8aa4, 0x8aaa,
- 0x8aa5, 0x8aa8, 0x8a98, 0x8a91, 0x8a9a, 0x8aa7, 0x8c6a, 0x8c8d,
- 0x8c8c, 0x8cd3, 0x8cd1, 0x8cd2, 0x8d6b, 0x8d99, 0x8d95, 0x8dfc,
- 0x8f14, 0x8f12, 0x8f15, 0x8f13, 0x8fa3, 0x9060, 0x9058, 0x905c,
- 0x9063, 0x9059, 0x905e, 0x9062, 0x905d, 0x905b, 0x9119, 0x9118,
- 0x911e, 0x9175, 0x9178, 0x9177, 0x9174, 0x9278, 0x9280, 0x9285,
- 0x9298, 0x9296, 0x927b, 0x9293, 0x929c, 0x92a8, 0x927c, 0x9291,
- 0x95a1, 0x95a8, 0x95a9, 0x95a3, 0x95a5, 0x95a4, 0x9699, 0x969c,
- 0x969b, 0x96cc, 0x96d2, 0x9700, 0x977c, 0x9785, 0x97f6, 0x9817,
- 0x9818, 0x98af, 0x98b1, 0x9903, 0x9905, 0x990c, 0x9909, 0x99c1,
- 0x9aaf, 0x9ab0, 0x9ae6, 0x9b41, 0x9b42, 0x9cf4, 0x9cf6, 0x9cf3,
- 0x9ebc, 0x9f3b, 0x9f4a, 0x5104, 0x5100, 0x50fb, 0x50f5, 0x50f9,
- 0x5102, 0x5108, 0x5109, 0x5105, 0x51dc,
- /* 0xbc */
- 0x5287, 0x5288, 0x5289, 0x528d, 0x528a, 0x52f0, 0x53b2, 0x562e,
- 0x563b, 0x5639, 0x5632, 0x563f, 0x5634, 0x5629, 0x5653, 0x564e,
- 0x5657, 0x5674, 0x5636, 0x562f, 0x5630, 0x5880, 0x589f, 0x589e,
- 0x58b3, 0x589c, 0x58ae, 0x58a9, 0x58a6, 0x596d, 0x5b09, 0x5afb,
- 0x5b0b, 0x5af5, 0x5b0c, 0x5b08, 0x5bee, 0x5bec, 0x5be9, 0x5beb,
- 0x5c64, 0x5c65, 0x5d9d, 0x5d94, 0x5e62, 0x5e5f, 0x5e61, 0x5ee2,
- 0x5eda, 0x5edf, 0x5edd, 0x5ee3, 0x5ee0, 0x5f48, 0x5f71, 0x5fb7,
- 0x5fb5, 0x6176, 0x6167, 0x616e, 0x615d, 0x6155, 0x6182, 0x617c,
- 0x6170, 0x616b, 0x617e, 0x61a7, 0x6190, 0x61ab, 0x618e, 0x61ac,
- 0x619a, 0x61a4, 0x6194, 0x61ae, 0x622e, 0x6469, 0x646f, 0x6479,
- 0x649e, 0x64b2, 0x6488, 0x6490, 0x64b0, 0x64a5, 0x6493, 0x6495,
- 0x64a9, 0x6492, 0x64ae, 0x64ad, 0x64ab, 0x649a, 0x64ac, 0x6499,
- 0x64a2, 0x64b3, 0x6575, 0x6577, 0x6578, 0x66ae, 0x66ab, 0x66b4,
- 0x66b1, 0x6a23, 0x6a1f, 0x69e8, 0x6a01, 0x6a1e, 0x6a19, 0x69fd,
- 0x6a21, 0x6a13, 0x6a0a, 0x69f3, 0x6a02, 0x6a05, 0x69ed, 0x6a11,
- 0x6b50, 0x6b4e, 0x6ba4, 0x6bc5, 0x6bc6, 0x6f3f, 0x6f7c, 0x6f84,
- 0x6f51, 0x6f66, 0x6f54, 0x6f86, 0x6f6d, 0x6f5b, 0x6f78, 0x6f6e,
- 0x6f8e, 0x6f7a, 0x6f70, 0x6f64, 0x6f97, 0x6f58, 0x6ed5, 0x6f6f,
- 0x6f60, 0x6f5f, 0x719f, 0x71ac, 0x71b1, 0x71a8, 0x7256, 0x729b,
- 0x734e, 0x7357, 0x7469, 0x748b, 0x7483,
- /* 0xbd */
- 0x747e, 0x7480, 0x757f, 0x7620, 0x7629, 0x761f, 0x7624, 0x7626,
- 0x7621, 0x7622, 0x769a, 0x76ba, 0x76e4, 0x778e, 0x7787, 0x778c,
- 0x7791, 0x778b, 0x78cb, 0x78c5, 0x78ba, 0x78ca, 0x78be, 0x78d5,
- 0x78bc, 0x78d0, 0x7a3f, 0x7a3c, 0x7a40, 0x7a3d, 0x7a37, 0x7a3b,
- 0x7aaf, 0x7aae, 0x7bad, 0x7bb1, 0x7bc4, 0x7bb4, 0x7bc6, 0x7bc7,
- 0x7bc1, 0x7ba0, 0x7bcc, 0x7cca, 0x7de0, 0x7df4, 0x7def, 0x7dfb,
- 0x7dd8, 0x7dec, 0x7ddd, 0x7de8, 0x7de3, 0x7dda, 0x7dde, 0x7de9,
- 0x7d9e, 0x7dd9, 0x7df2, 0x7df9, 0x7f75, 0x7f77, 0x7faf, 0x7fe9,
- 0x8026, 0x819b, 0x819c, 0x819d, 0x81a0, 0x819a, 0x8198, 0x8517,
- 0x853d, 0x851a, 0x84ee, 0x852c, 0x852d, 0x8513, 0x8511, 0x8523,
- 0x8521, 0x8514, 0x84ec, 0x8525, 0x84ff, 0x8506, 0x8782, 0x8774,
- 0x8776, 0x8760, 0x8766, 0x8778, 0x8768, 0x8759, 0x8757, 0x874c,
- 0x8753, 0x885b, 0x885d, 0x8910, 0x8907, 0x8912, 0x8913, 0x8915,
- 0x890a, 0x8abc, 0x8ad2, 0x8ac7, 0x8ac4, 0x8a95, 0x8acb, 0x8af8,
- 0x8ab2, 0x8ac9, 0x8ac2, 0x8abf, 0x8ab0, 0x8ad6, 0x8acd, 0x8ab6,
- 0x8ab9, 0x8adb, 0x8c4c, 0x8c4e, 0x8c6c, 0x8ce0, 0x8cde, 0x8ce6,
- 0x8ce4, 0x8cec, 0x8ced, 0x8ce2, 0x8ce3, 0x8cdc, 0x8cea, 0x8ce1,
- 0x8d6d, 0x8d9f, 0x8da3, 0x8e2b, 0x8e10, 0x8e1d, 0x8e22, 0x8e0f,
- 0x8e29, 0x8e1f, 0x8e21, 0x8e1e, 0x8eba, 0x8f1d, 0x8f1b, 0x8f1f,
- 0x8f29, 0x8f26, 0x8f2a, 0x8f1c, 0x8f1e,
- /* 0xbe */
- 0x8f25, 0x9069, 0x906e, 0x9068, 0x906d, 0x9077, 0x9130, 0x912d,
- 0x9127, 0x9131, 0x9187, 0x9189, 0x918b, 0x9183, 0x92c5, 0x92bb,
- 0x92b7, 0x92ea, 0x92ac, 0x92e4, 0x92c1, 0x92b3, 0x92bc, 0x92d2,
- 0x92c7, 0x92f0, 0x92b2, 0x95ad, 0x95b1, 0x9704, 0x9706, 0x9707,
- 0x9709, 0x9760, 0x978d, 0x978b, 0x978f, 0x9821, 0x982b, 0x981c,
- 0x98b3, 0x990a, 0x9913, 0x9912, 0x9918, 0x99dd, 0x99d0, 0x99df,
- 0x99db, 0x99d1, 0x99d5, 0x99d2, 0x99d9, 0x9ab7, 0x9aee, 0x9aef,
- 0x9b27, 0x9b45, 0x9b44, 0x9b77, 0x9b6f, 0x9d06, 0x9d09, 0x9d03,
- 0x9ea9, 0x9ebe, 0x9ece, 0x58a8, 0x9f52, 0x5112, 0x5118, 0x5114,
- 0x5110, 0x5115, 0x5180, 0x51aa, 0x51dd, 0x5291, 0x5293, 0x52f3,
- 0x5659, 0x566b, 0x5679, 0x5669, 0x5664, 0x5678, 0x566a, 0x5668,
- 0x5665, 0x5671, 0x566f, 0x566c, 0x5662, 0x5676, 0x58c1, 0x58be,
- 0x58c7, 0x58c5, 0x596e, 0x5b1d, 0x5b34, 0x5b78, 0x5bf0, 0x5c0e,
- 0x5f4a, 0x61b2, 0x6191, 0x61a9, 0x618a, 0x61cd, 0x61b6, 0x61be,
- 0x61ca, 0x61c8, 0x6230, 0x64c5, 0x64c1, 0x64cb, 0x64bb, 0x64bc,
- 0x64da, 0x64c4, 0x64c7, 0x64c2, 0x64cd, 0x64bf, 0x64d2, 0x64d4,
- 0x64be, 0x6574, 0x66c6, 0x66c9, 0x66b9, 0x66c4, 0x66c7, 0x66b8,
- 0x6a3d, 0x6a38, 0x6a3a, 0x6a59, 0x6a6b, 0x6a58, 0x6a39, 0x6a44,
- 0x6a62, 0x6a61, 0x6a4b, 0x6a47, 0x6a35, 0x6a5f, 0x6a48, 0x6b59,
- 0x6b77, 0x6c05, 0x6fc2, 0x6fb1, 0x6fa1,
- /* 0xbf */
- 0x6fc3, 0x6fa4, 0x6fc1, 0x6fa7, 0x6fb3, 0x6fc0, 0x6fb9, 0x6fb6,
- 0x6fa6, 0x6fa0, 0x6fb4, 0x71be, 0x71c9, 0x71d0, 0x71d2, 0x71c8,
- 0x71d5, 0x71b9, 0x71ce, 0x71d9, 0x71dc, 0x71c3, 0x71c4, 0x7368,
- 0x749c, 0x74a3, 0x7498, 0x749f, 0x749e, 0x74e2, 0x750c, 0x750d,
- 0x7634, 0x7638, 0x763a, 0x76e7, 0x76e5, 0x77a0, 0x779e, 0x779f,
- 0x77a5, 0x78e8, 0x78da, 0x78ec, 0x78e7, 0x79a6, 0x7a4d, 0x7a4e,
- 0x7a46, 0x7a4c, 0x7a4b, 0x7aba, 0x7bd9, 0x7c11, 0x7bc9, 0x7be4,
- 0x7bdb, 0x7be1, 0x7be9, 0x7be6, 0x7cd5, 0x7cd6, 0x7e0a, 0x7e11,
- 0x7e08, 0x7e1b, 0x7e23, 0x7e1e, 0x7e1d, 0x7e09, 0x7e10, 0x7f79,
- 0x7fb2, 0x7ff0, 0x7ff1, 0x7fee, 0x8028, 0x81b3, 0x81a9, 0x81a8,
- 0x81fb, 0x8208, 0x8258, 0x8259, 0x854a, 0x8559, 0x8548, 0x8568,
- 0x8569, 0x8543, 0x8549, 0x856d, 0x856a, 0x855e, 0x8783, 0x879f,
- 0x879e, 0x87a2, 0x878d, 0x8861, 0x892a, 0x8932, 0x8925, 0x892b,
- 0x8921, 0x89aa, 0x89a6, 0x8ae6, 0x8afa, 0x8aeb, 0x8af1, 0x8b00,
- 0x8adc, 0x8ae7, 0x8aee, 0x8afe, 0x8b01, 0x8b02, 0x8af7, 0x8aed,
- 0x8af3, 0x8af6, 0x8afc, 0x8c6b, 0x8c6d, 0x8c93, 0x8cf4, 0x8e44,
- 0x8e31, 0x8e34, 0x8e42, 0x8e39, 0x8e35, 0x8f3b, 0x8f2f, 0x8f38,
- 0x8f33, 0x8fa8, 0x8fa6, 0x9075, 0x9074, 0x9078, 0x9072, 0x907c,
- 0x907a, 0x9134, 0x9192, 0x9320, 0x9336, 0x92f8, 0x9333, 0x932f,
- 0x9322, 0x92fc, 0x932b, 0x9304, 0x931a,
- /* 0xc0 */
- 0x9310, 0x9326, 0x9321, 0x9315, 0x932e, 0x9319, 0x95bb, 0x96a7,
- 0x96a8, 0x96aa, 0x96d5, 0x970e, 0x9711, 0x9716, 0x970d, 0x9713,
- 0x970f, 0x975b, 0x975c, 0x9766, 0x9798, 0x9830, 0x9838, 0x983b,
- 0x9837, 0x982d, 0x9839, 0x9824, 0x9910, 0x9928, 0x991e, 0x991b,
- 0x9921, 0x991a, 0x99ed, 0x99e2, 0x99f1, 0x9ab8, 0x9abc, 0x9afb,
- 0x9aed, 0x9b28, 0x9b91, 0x9d15, 0x9d23, 0x9d26, 0x9d28, 0x9d12,
- 0x9d1b, 0x9ed8, 0x9ed4, 0x9f8d, 0x9f9c, 0x512a, 0x511f, 0x5121,
- 0x5132, 0x52f5, 0x568e, 0x5680, 0x5690, 0x5685, 0x5687, 0x568f,
- 0x58d5, 0x58d3, 0x58d1, 0x58ce, 0x5b30, 0x5b2a, 0x5b24, 0x5b7a,
- 0x5c37, 0x5c68, 0x5dbc, 0x5dba, 0x5dbd, 0x5db8, 0x5e6b, 0x5f4c,
- 0x5fbd, 0x61c9, 0x61c2, 0x61c7, 0x61e6, 0x61cb, 0x6232, 0x6234,
- 0x64ce, 0x64ca, 0x64d8, 0x64e0, 0x64f0, 0x64e6, 0x64ec, 0x64f1,
- 0x64e2, 0x64ed, 0x6582, 0x6583, 0x66d9, 0x66d6, 0x6a80, 0x6a94,
- 0x6a84, 0x6aa2, 0x6a9c, 0x6adb, 0x6aa3, 0x6a7e, 0x6a97, 0x6a90,
- 0x6aa0, 0x6b5c, 0x6bae, 0x6bda, 0x6c08, 0x6fd8, 0x6ff1, 0x6fdf,
- 0x6fe0, 0x6fdb, 0x6fe4, 0x6feb, 0x6fef, 0x6f80, 0x6fec, 0x6fe1,
- 0x6fe9, 0x6fd5, 0x6fee, 0x6ff0, 0x71e7, 0x71df, 0x71ee, 0x71e6,
- 0x71e5, 0x71ed, 0x71ec, 0x71f4, 0x71e0, 0x7235, 0x7246, 0x7370,
- 0x7372, 0x74a9, 0x74b0, 0x74a6, 0x74a8, 0x7646, 0x7642, 0x764c,
- 0x76ea, 0x77b3, 0x77aa, 0x77b0, 0x77ac,
- /* 0xc1 */
- 0x77a7, 0x77ad, 0x77ef, 0x78f7, 0x78fa, 0x78f4, 0x78ef, 0x7901,
- 0x79a7, 0x79aa, 0x7a57, 0x7abf, 0x7c07, 0x7c0d, 0x7bfe, 0x7bf7,
- 0x7c0c, 0x7be0, 0x7ce0, 0x7cdc, 0x7cde, 0x7ce2, 0x7cdf, 0x7cd9,
- 0x7cdd, 0x7e2e, 0x7e3e, 0x7e46, 0x7e37, 0x7e32, 0x7e43, 0x7e2b,
- 0x7e3d, 0x7e31, 0x7e45, 0x7e41, 0x7e34, 0x7e39, 0x7e48, 0x7e35,
- 0x7e3f, 0x7e2f, 0x7f44, 0x7ff3, 0x7ffc, 0x8071, 0x8072, 0x8070,
- 0x806f, 0x8073, 0x81c6, 0x81c3, 0x81ba, 0x81c2, 0x81c0, 0x81bf,
- 0x81bd, 0x81c9, 0x81be, 0x81e8, 0x8209, 0x8271, 0x85aa, 0x8584,
- 0x857e, 0x859c, 0x8591, 0x8594, 0x85af, 0x859b, 0x8587, 0x85a8,
- 0x858a, 0x8667, 0x87c0, 0x87d1, 0x87b3, 0x87d2, 0x87c6, 0x87ab,
- 0x87bb, 0x87ba, 0x87c8, 0x87cb, 0x893b, 0x8936, 0x8944, 0x8938,
- 0x893d, 0x89ac, 0x8b0e, 0x8b17, 0x8b19, 0x8b1b, 0x8b0a, 0x8b20,
- 0x8b1d, 0x8b04, 0x8b10, 0x8c41, 0x8c3f, 0x8c73, 0x8cfa, 0x8cfd,
- 0x8cfc, 0x8cf8, 0x8cfb, 0x8da8, 0x8e49, 0x8e4b, 0x8e48, 0x8e4a,
- 0x8f44, 0x8f3e, 0x8f42, 0x8f45, 0x8f3f, 0x907f, 0x907d, 0x9084,
- 0x9081, 0x9082, 0x9080, 0x9139, 0x91a3, 0x919e, 0x919c, 0x934d,
- 0x9382, 0x9328, 0x9375, 0x934a, 0x9365, 0x934b, 0x9318, 0x937e,
- 0x936c, 0x935b, 0x9370, 0x935a, 0x9354, 0x95ca, 0x95cb, 0x95cc,
- 0x95c8, 0x95c6, 0x96b1, 0x96b8, 0x96d6, 0x971c, 0x971e, 0x97a0,
- 0x97d3, 0x9846, 0x98b6, 0x9935, 0x9a01,
- /* 0xc2 */
- 0x99ff, 0x9bae, 0x9bab, 0x9baa, 0x9bad, 0x9d3b, 0x9d3f, 0x9e8b,
- 0x9ecf, 0x9ede, 0x9edc, 0x9edd, 0x9edb, 0x9f3e, 0x9f4b, 0x53e2,
- 0x5695, 0x56ae, 0x58d9, 0x58d8, 0x5b38, 0x5f5d, 0x61e3, 0x6233,
- 0x64f4, 0x64f2, 0x64fe, 0x6506, 0x64fa, 0x64fb, 0x64f7, 0x65b7,
- 0x66dc, 0x6726, 0x6ab3, 0x6aac, 0x6ac3, 0x6abb, 0x6ab8, 0x6ac2,
- 0x6aae, 0x6aaf, 0x6b5f, 0x6b78, 0x6baf, 0x7009, 0x700b, 0x6ffe,
- 0x7006, 0x6ffa, 0x7011, 0x700f, 0x71fb, 0x71fc, 0x71fe, 0x71f8,
- 0x7377, 0x7375, 0x74a7, 0x74bf, 0x7515, 0x7656, 0x7658, 0x7652,
- 0x77bd, 0x77bf, 0x77bb, 0x77bc, 0x790e, 0x79ae, 0x7a61, 0x7a62,
- 0x7a60, 0x7ac4, 0x7ac5, 0x7c2b, 0x7c27, 0x7c2a, 0x7c1e, 0x7c23,
- 0x7c21, 0x7ce7, 0x7e54, 0x7e55, 0x7e5e, 0x7e5a, 0x7e61, 0x7e52,
- 0x7e59, 0x7f48, 0x7ff9, 0x7ffb, 0x8077, 0x8076, 0x81cd, 0x81cf,
- 0x820a, 0x85cf, 0x85a9, 0x85cd, 0x85d0, 0x85c9, 0x85b0, 0x85ba,
- 0x85b9, 0x85a6, 0x87ef, 0x87ec, 0x87f2, 0x87e0, 0x8986, 0x89b2,
- 0x89f4, 0x8b28, 0x8b39, 0x8b2c, 0x8b2b, 0x8c50, 0x8d05, 0x8e59,
- 0x8e63, 0x8e66, 0x8e64, 0x8e5f, 0x8e55, 0x8ec0, 0x8f49, 0x8f4d,
- 0x9087, 0x9083, 0x9088, 0x91ab, 0x91ac, 0x91d0, 0x9394, 0x938a,
- 0x9396, 0x93a2, 0x93b3, 0x93ae, 0x93ac, 0x93b0, 0x9398, 0x939a,
- 0x9397, 0x95d4, 0x95d6, 0x95d0, 0x95d5, 0x96e2, 0x96dc, 0x96d9,
- 0x96db, 0x96de, 0x9724, 0x97a3, 0x97a6,
- /* 0xc3 */
- 0x97ad, 0x97f9, 0x984d, 0x984f, 0x984c, 0x984e, 0x9853, 0x98ba,
- 0x993e, 0x993f, 0x993d, 0x992e, 0x99a5, 0x9a0e, 0x9ac1, 0x9b03,
- 0x9b06, 0x9b4f, 0x9b4e, 0x9b4d, 0x9bca, 0x9bc9, 0x9bfd, 0x9bc8,
- 0x9bc0, 0x9d51, 0x9d5d, 0x9d60, 0x9ee0, 0x9f15, 0x9f2c, 0x5133,
- 0x56a5, 0x58de, 0x58df, 0x58e2, 0x5bf5, 0x9f90, 0x5eec, 0x61f2,
- 0x61f7, 0x61f6, 0x61f5, 0x6500, 0x650f, 0x66e0, 0x66dd, 0x6ae5,
- 0x6add, 0x6ada, 0x6ad3, 0x701b, 0x701f, 0x7028, 0x701a, 0x701d,
- 0x7015, 0x7018, 0x7206, 0x720d, 0x7258, 0x72a2, 0x7378, 0x737a,
- 0x74bd, 0x74ca, 0x74e3, 0x7587, 0x7586, 0x765f, 0x7661, 0x77c7,
- 0x7919, 0x79b1, 0x7a6b, 0x7a69, 0x7c3e, 0x7c3f, 0x7c38, 0x7c3d,
- 0x7c37, 0x7c40, 0x7e6b, 0x7e6d, 0x7e79, 0x7e69, 0x7e6a, 0x7f85,
- 0x7e73, 0x7fb6, 0x7fb9, 0x7fb8, 0x81d8, 0x85e9, 0x85dd, 0x85ea,
- 0x85d5, 0x85e4, 0x85e5, 0x85f7, 0x87fb, 0x8805, 0x880d, 0x87f9,
- 0x87fe, 0x8960, 0x895f, 0x8956, 0x895e, 0x8b41, 0x8b5c, 0x8b58,
- 0x8b49, 0x8b5a, 0x8b4e, 0x8b4f, 0x8b46, 0x8b59, 0x8d08, 0x8d0a,
- 0x8e7c, 0x8e72, 0x8e87, 0x8e76, 0x8e6c, 0x8e7a, 0x8e74, 0x8f54,
- 0x8f4e, 0x8fad, 0x908a, 0x908b, 0x91b1, 0x91ae, 0x93e1, 0x93d1,
- 0x93df, 0x93c3, 0x93c8, 0x93dc, 0x93dd, 0x93d6, 0x93e2, 0x93cd,
- 0x93d8, 0x93e4, 0x93d7, 0x93e8, 0x95dc, 0x96b4, 0x96e3, 0x972a,
- 0x9727, 0x9761, 0x97dc, 0x97fb, 0x985e,
- /* 0xc4 */
- 0x9858, 0x985b, 0x98bc, 0x9945, 0x9949, 0x9a16, 0x9a19, 0x9b0d,
- 0x9be8, 0x9be7, 0x9bd6, 0x9bdb, 0x9d89, 0x9d61, 0x9d72, 0x9d6a,
- 0x9d6c, 0x9e92, 0x9e97, 0x9e93, 0x9eb4, 0x52f8, 0x56a8, 0x56b7,
- 0x56b6, 0x56b4, 0x56bc, 0x58e4, 0x5b40, 0x5b43, 0x5b7d, 0x5bf6,
- 0x5dc9, 0x61f8, 0x61fa, 0x6518, 0x6514, 0x6519, 0x66e6, 0x6727,
- 0x6aec, 0x703e, 0x7030, 0x7032, 0x7210, 0x737b, 0x74cf, 0x7662,
- 0x7665, 0x7926, 0x792a, 0x792c, 0x792b, 0x7ac7, 0x7af6, 0x7c4c,
- 0x7c43, 0x7c4d, 0x7cef, 0x7cf0, 0x8fae, 0x7e7d, 0x7e7c, 0x7e82,
- 0x7f4c, 0x8000, 0x81da, 0x8266, 0x85fb, 0x85f9, 0x8611, 0x85fa,
- 0x8606, 0x860b, 0x8607, 0x860a, 0x8814, 0x8815, 0x8964, 0x89ba,
- 0x89f8, 0x8b70, 0x8b6c, 0x8b66, 0x8b6f, 0x8b5f, 0x8b6b, 0x8d0f,
- 0x8d0d, 0x8e89, 0x8e81, 0x8e85, 0x8e82, 0x91b4, 0x91cb, 0x9418,
- 0x9403, 0x93fd, 0x95e1, 0x9730, 0x98c4, 0x9952, 0x9951, 0x99a8,
- 0x9a2b, 0x9a30, 0x9a37, 0x9a35, 0x9c13, 0x9c0d, 0x9e79, 0x9eb5,
- 0x9ee8, 0x9f2f, 0x9f5f, 0x9f63, 0x9f61, 0x5137, 0x5138, 0x56c1,
- 0x56c0, 0x56c2, 0x5914, 0x5c6c, 0x5dcd, 0x61fc, 0x61fe, 0x651d,
- 0x651c, 0x6595, 0x66e9, 0x6afb, 0x6b04, 0x6afa, 0x6bb2, 0x704c,
- 0x721b, 0x72a7, 0x74d6, 0x74d4, 0x7669, 0x77d3, 0x7c50, 0x7e8f,
- 0x7e8c, 0x7fbc, 0x8617, 0x862d, 0x861a, 0x8823, 0x8822, 0x8821,
- 0x881f, 0x896a, 0x896c, 0x89bd, 0x8b74,
- /* 0xc5 */
- 0x8b77, 0x8b7d, 0x8d13, 0x8e8a, 0x8e8d, 0x8e8b, 0x8f5f, 0x8faf,
- 0x91ba, 0x942e, 0x9433, 0x9435, 0x943a, 0x9438, 0x9432, 0x942b,
- 0x95e2, 0x9738, 0x9739, 0x9732, 0x97ff, 0x9867, 0x9865, 0x9957,
- 0x9a45, 0x9a43, 0x9a40, 0x9a3e, 0x9acf, 0x9b54, 0x9b51, 0x9c2d,
- 0x9c25, 0x9daf, 0x9db4, 0x9dc2, 0x9db8, 0x9e9d, 0x9eef, 0x9f19,
- 0x9f5c, 0x9f66, 0x9f67, 0x513c, 0x513b, 0x56c8, 0x56ca, 0x56c9,
- 0x5b7f, 0x5dd4, 0x5dd2, 0x5f4e, 0x61ff, 0x6524, 0x6b0a, 0x6b61,
- 0x7051, 0x7058, 0x7380, 0x74e4, 0x758a, 0x766e, 0x766c, 0x79b3,
- 0x7c60, 0x7c5f, 0x807e, 0x807d, 0x81df, 0x8972, 0x896f, 0x89fc,
- 0x8b80, 0x8d16, 0x8d17, 0x8e91, 0x8e93, 0x8f61, 0x9148, 0x9444,
- 0x9451, 0x9452, 0x973d, 0x973e, 0x97c3, 0x97c1, 0x986b, 0x9955,
- 0x9a55, 0x9a4d, 0x9ad2, 0x9b1a, 0x9c49, 0x9c31, 0x9c3e, 0x9c3b,
- 0x9dd3, 0x9dd7, 0x9f34, 0x9f6c, 0x9f6a, 0x9f94, 0x56cc, 0x5dd6,
- 0x6200, 0x6523, 0x652b, 0x652a, 0x66ec, 0x6b10, 0x74da, 0x7aca,
- 0x7c64, 0x7c63, 0x7c65, 0x7e93, 0x7e96, 0x7e94, 0x81e2, 0x8638,
- 0x863f, 0x8831, 0x8b8a, 0x9090, 0x908f, 0x9463, 0x9460, 0x9464,
- 0x9768, 0x986f, 0x995c, 0x9a5a, 0x9a5b, 0x9a57, 0x9ad3, 0x9ad4,
- 0x9ad1, 0x9c54, 0x9c57, 0x9c56, 0x9de5, 0x9e9f, 0x9ef4, 0x56d1,
- 0x58e9, 0x652c, 0x705e, 0x7671, 0x7672, 0x77d7, 0x7f50, 0x7f88,
- 0x8836, 0x8839, 0x8862, 0x8b93, 0x8b92,
- /* 0xc6 */
- 0x8b96, 0x8277, 0x8d1b, 0x91c0, 0x946a, 0x9742, 0x9748, 0x9744,
- 0x97c6, 0x9870, 0x9a5f, 0x9b22, 0x9b58, 0x9c5f, 0x9df9, 0x9dfa,
- 0x9e7c, 0x9e7d, 0x9f07, 0x9f77, 0x9f72, 0x5ef3, 0x6b16, 0x7063,
- 0x7c6c, 0x7c6e, 0x883b, 0x89c0, 0x8ea1, 0x91c1, 0x9472, 0x9470,
- 0x9871, 0x995e, 0x9ad6, 0x9b23, 0x9ecc, 0x7064, 0x77da, 0x8b9a,
- 0x9477, 0x97c9, 0x9a62, 0x9a65, 0x7e9c, 0x8b9c, 0x8eaa, 0x91c5,
- 0x947d, 0x947e, 0x947c, 0x9c77, 0x9c78, 0x9ef7, 0x8c54, 0x947f,
- 0x9e1a, 0x7228, 0x9a6a, 0x9b31, 0x9e1b, 0x9e1e, 0x7c72, 0x30fe,
- 0x309d, 0x309e, 0x3005, 0x3041, 0x3042, 0x3043, 0x3044, 0x3045,
- 0x3046, 0x3047, 0x3048, 0x3049, 0x304a, 0x304b, 0x304c, 0x304d,
- 0x304e, 0x304f, 0x3050, 0x3051, 0x3052, 0x3053, 0x3054, 0x3055,
- 0x3056, 0x3057, 0x3058, 0x3059, 0x305a, 0x305b, 0x305c, 0x305d,
- 0x305e, 0x305f, 0x3060, 0x3061, 0x3062, 0x3063, 0x3064, 0x3065,
- 0x3066, 0x3067, 0x3068, 0x3069, 0x306a, 0x306b, 0x306c, 0x306d,
- 0x306e, 0x306f, 0x3070, 0x3071, 0x3072, 0x3073, 0x3074, 0x3075,
- 0x3076, 0x3077, 0x3078, 0x3079, 0x307a, 0x307b, 0x307c, 0x307d,
- 0x307e, 0x307f, 0x3080, 0x3081, 0x3082, 0x3083, 0x3084, 0x3085,
- 0x3086, 0x3087, 0x3088, 0x3089, 0x308a, 0x308b, 0x308c, 0x308d,
- 0x308e, 0x308f, 0x3090, 0x3091, 0x3092, 0x3093, 0x30a1, 0x30a2,
- 0x30a3, 0x30a4, 0x30a5, 0x30a6, 0x30a7,
- /* 0xc7 */
- 0x30a8, 0x30a9, 0x30aa, 0x30ab, 0x30ac, 0x30ad, 0x30ae, 0x30af,
- 0x30b0, 0x30b1, 0x30b2, 0x30b3, 0x30b4, 0x30b5, 0x30b6, 0x30b7,
- 0x30b8, 0x30b9, 0x30ba, 0x30bb, 0x30bc, 0x30bd, 0x30be, 0x30bf,
- 0x30c0, 0x30c1, 0x30c2, 0x30c3, 0x30c4, 0x30c5, 0x30c6, 0x30c7,
- 0x30c8, 0x30c9, 0x30ca, 0x30cb, 0x30cc, 0x30cd, 0x30ce, 0x30cf,
- 0x30d0, 0x30d1, 0x30d2, 0x30d3, 0x30d4, 0x30d5, 0x30d6, 0x30d7,
- 0x30d8, 0x30d9, 0x30da, 0x30db, 0x30dc, 0x30dd, 0x30de, 0x30df,
- 0x30e0, 0x30e1, 0x30e2, 0x30e3, 0x30e4, 0x30e5, 0x30e6, 0x30e7,
- 0x30e8, 0x30e9, 0x30ea, 0x30eb, 0x30ec, 0x30ed, 0x30ee, 0x30ef,
- 0x30f0, 0x30f1, 0x30f2, 0x30f3, 0x30f4, 0x30f5, 0x30f6, 0x0414,
- 0x0415, 0x0401, 0x0416, 0x0417, 0x0418, 0x0419, 0x041a, 0x041b,
- 0x041c, 0x0423, 0x0424, 0x0425, 0x0426, 0x0427, 0x0428, 0x0429,
- 0x042a, 0x042b, 0x042c, 0x042d, 0x042e, 0x042f, 0x0430, 0x0431,
- 0x0432, 0x0433, 0x0434, 0x0435, 0x0451, 0x0436, 0x0437, 0x0438,
- 0x0439, 0x043a, 0x043b, 0x043c, 0x043d, 0x043e, 0x043f, 0x0440,
- 0x0441, 0x0442, 0x0443, 0x0444, 0x0445, 0x0446, 0x0447, 0x0448,
- 0x0449, 0x044a, 0x044b, 0x044c, 0x044d, 0x044e, 0x044f, 0x2460,
- 0x2461, 0x2462, 0x2463, 0x2464, 0x2465, 0x2466, 0x2467, 0x2468,
- 0x2469, 0x2474, 0x2475, 0x2476, 0x2477, 0x2478, 0x2479, 0x247a,
- 0x247b, 0x247c, 0x247d,
-};
-static const unsigned short big5_2uni_pagec9[7652] = {
- /* 0xc9 */
- 0x4e42, 0x4e5c, 0x51f5, 0x531a, 0x5382, 0x4e07, 0x4e0c, 0x4e47,
- 0x4e8d, 0x56d7, 0xfa0c, 0x5c6e, 0x5f73, 0x4e0f, 0x5187, 0x4e0e,
- 0x4e2e, 0x4e93, 0x4ec2, 0x4ec9, 0x4ec8, 0x5198, 0x52fc, 0x536c,
- 0x53b9, 0x5720, 0x5903, 0x592c, 0x5c10, 0x5dff, 0x65e1, 0x6bb3,
- 0x6bcc, 0x6c14, 0x723f, 0x4e31, 0x4e3c, 0x4ee8, 0x4edc, 0x4ee9,
- 0x4ee1, 0x4edd, 0x4eda, 0x520c, 0x531c, 0x534c, 0x5722, 0x5723,
- 0x5917, 0x592f, 0x5b81, 0x5b84, 0x5c12, 0x5c3b, 0x5c74, 0x5c73,
- 0x5e04, 0x5e80, 0x5e82, 0x5fc9, 0x6209, 0x6250, 0x6c15, 0x6c36,
- 0x6c43, 0x6c3f, 0x6c3b, 0x72ae, 0x72b0, 0x738a, 0x79b8, 0x808a,
- 0x961e, 0x4f0e, 0x4f18, 0x4f2c, 0x4ef5, 0x4f14, 0x4ef1, 0x4f00,
- 0x4ef7, 0x4f08, 0x4f1d, 0x4f02, 0x4f05, 0x4f22, 0x4f13, 0x4f04,
- 0x4ef4, 0x4f12, 0x51b1, 0x5213, 0x5209, 0x5210, 0x52a6, 0x5322,
- 0x531f, 0x534d, 0x538a, 0x5407, 0x56e1, 0x56df, 0x572e, 0x572a,
- 0x5734, 0x593c, 0x5980, 0x597c, 0x5985, 0x597b, 0x597e, 0x5977,
- 0x597f, 0x5b56, 0x5c15, 0x5c25, 0x5c7c, 0x5c7a, 0x5c7b, 0x5c7e,
- 0x5ddf, 0x5e75, 0x5e84, 0x5f02, 0x5f1a, 0x5f74, 0x5fd5, 0x5fd4,
- 0x5fcf, 0x625c, 0x625e, 0x6264, 0x6261, 0x6266, 0x6262, 0x6259,
- 0x6260, 0x625a, 0x6265, 0x65ef, 0x65ee, 0x673e, 0x6739, 0x6738,
- 0x673b, 0x673a, 0x673f, 0x673c, 0x6733, 0x6c18, 0x6c46, 0x6c52,
- 0x6c5c, 0x6c4f, 0x6c4a, 0x6c54, 0x6c4b,
- /* 0xca */
- 0x6c4c, 0x7071, 0x725e, 0x72b4, 0x72b5, 0x738e, 0x752a, 0x767f,
- 0x7a75, 0x7f51, 0x8278, 0x827c, 0x8280, 0x827d, 0x827f, 0x864d,
- 0x897e, 0x9099, 0x9097, 0x9098, 0x909b, 0x9094, 0x9622, 0x9624,
- 0x9620, 0x9623, 0x4f56, 0x4f3b, 0x4f62, 0x4f49, 0x4f53, 0x4f64,
- 0x4f3e, 0x4f67, 0x4f52, 0x4f5f, 0x4f41, 0x4f58, 0x4f2d, 0x4f33,
- 0x4f3f, 0x4f61, 0x518f, 0x51b9, 0x521c, 0x521e, 0x5221, 0x52ad,
- 0x52ae, 0x5309, 0x5363, 0x5372, 0x538e, 0x538f, 0x5430, 0x5437,
- 0x542a, 0x5454, 0x5445, 0x5419, 0x541c, 0x5425, 0x5418, 0x543d,
- 0x544f, 0x5441, 0x5428, 0x5424, 0x5447, 0x56ee, 0x56e7, 0x56e5,
- 0x5741, 0x5745, 0x574c, 0x5749, 0x574b, 0x5752, 0x5906, 0x5940,
- 0x59a6, 0x5998, 0x59a0, 0x5997, 0x598e, 0x59a2, 0x5990, 0x598f,
- 0x59a7, 0x59a1, 0x5b8e, 0x5b92, 0x5c28, 0x5c2a, 0x5c8d, 0x5c8f,
- 0x5c88, 0x5c8b, 0x5c89, 0x5c92, 0x5c8a, 0x5c86, 0x5c93, 0x5c95,
- 0x5de0, 0x5e0a, 0x5e0e, 0x5e8b, 0x5e89, 0x5e8c, 0x5e88, 0x5e8d,
- 0x5f05, 0x5f1d, 0x5f78, 0x5f76, 0x5fd2, 0x5fd1, 0x5fd0, 0x5fed,
- 0x5fe8, 0x5fee, 0x5ff3, 0x5fe1, 0x5fe4, 0x5fe3, 0x5ffa, 0x5fef,
- 0x5ff7, 0x5ffb, 0x6000, 0x5ff4, 0x623a, 0x6283, 0x628c, 0x628e,
- 0x628f, 0x6294, 0x6287, 0x6271, 0x627b, 0x627a, 0x6270, 0x6281,
- 0x6288, 0x6277, 0x627d, 0x6272, 0x6274, 0x6537, 0x65f0, 0x65f4,
- 0x65f3, 0x65f2, 0x65f5, 0x6745, 0x6747,
- /* 0xcb */
- 0x6759, 0x6755, 0x674c, 0x6748, 0x675d, 0x674d, 0x675a, 0x674b,
- 0x6bd0, 0x6c19, 0x6c1a, 0x6c78, 0x6c67, 0x6c6b, 0x6c84, 0x6c8b,
- 0x6c8f, 0x6c71, 0x6c6f, 0x6c69, 0x6c9a, 0x6c6d, 0x6c87, 0x6c95,
- 0x6c9c, 0x6c66, 0x6c73, 0x6c65, 0x6c7b, 0x6c8e, 0x7074, 0x707a,
- 0x7263, 0x72bf, 0x72bd, 0x72c3, 0x72c6, 0x72c1, 0x72ba, 0x72c5,
- 0x7395, 0x7397, 0x7393, 0x7394, 0x7392, 0x753a, 0x7539, 0x7594,
- 0x7595, 0x7681, 0x793d, 0x8034, 0x8095, 0x8099, 0x8090, 0x8092,
- 0x809c, 0x8290, 0x828f, 0x8285, 0x828e, 0x8291, 0x8293, 0x828a,
- 0x8283, 0x8284, 0x8c78, 0x8fc9, 0x8fbf, 0x909f, 0x90a1, 0x90a5,
- 0x909e, 0x90a7, 0x90a0, 0x9630, 0x9628, 0x962f, 0x962d, 0x4e33,
- 0x4f98, 0x4f7c, 0x4f85, 0x4f7d, 0x4f80, 0x4f87, 0x4f76, 0x4f74,
- 0x4f89, 0x4f84, 0x4f77, 0x4f4c, 0x4f97, 0x4f6a, 0x4f9a, 0x4f79,
- 0x4f81, 0x4f78, 0x4f90, 0x4f9c, 0x4f94, 0x4f9e, 0x4f92, 0x4f82,
- 0x4f95, 0x4f6b, 0x4f6e, 0x519e, 0x51bc, 0x51be, 0x5235, 0x5232,
- 0x5233, 0x5246, 0x5231, 0x52bc, 0x530a, 0x530b, 0x533c, 0x5392,
- 0x5394, 0x5487, 0x547f, 0x5481, 0x5491, 0x5482, 0x5488, 0x546b,
- 0x547a, 0x547e, 0x5465, 0x546c, 0x5474, 0x5466, 0x548d, 0x546f,
- 0x5461, 0x5460, 0x5498, 0x5463, 0x5467, 0x5464, 0x56f7, 0x56f9,
- 0x576f, 0x5772, 0x576d, 0x576b, 0x5771, 0x5770, 0x5776, 0x5780,
- 0x5775, 0x577b, 0x5773, 0x5774, 0x5762,
- /* 0xcc */
- 0x5768, 0x577d, 0x590c, 0x5945, 0x59b5, 0x59ba, 0x59cf, 0x59ce,
- 0x59b2, 0x59cc, 0x59c1, 0x59b6, 0x59bc, 0x59c3, 0x59d6, 0x59b1,
- 0x59bd, 0x59c0, 0x59c8, 0x59b4, 0x59c7, 0x5b62, 0x5b65, 0x5b93,
- 0x5b95, 0x5c44, 0x5c47, 0x5cae, 0x5ca4, 0x5ca0, 0x5cb5, 0x5caf,
- 0x5ca8, 0x5cac, 0x5c9f, 0x5ca3, 0x5cad, 0x5ca2, 0x5caa, 0x5ca7,
- 0x5c9d, 0x5ca5, 0x5cb6, 0x5cb0, 0x5ca6, 0x5e17, 0x5e14, 0x5e19,
- 0x5f28, 0x5f22, 0x5f23, 0x5f24, 0x5f54, 0x5f82, 0x5f7e, 0x5f7d,
- 0x5fde, 0x5fe5, 0x602d, 0x6026, 0x6019, 0x6032, 0x600b, 0x6034,
- 0x600a, 0x6017, 0x6033, 0x601a, 0x601e, 0x602c, 0x6022, 0x600d,
- 0x6010, 0x602e, 0x6013, 0x6011, 0x600c, 0x6009, 0x601c, 0x6214,
- 0x623d, 0x62ad, 0x62b4, 0x62d1, 0x62be, 0x62aa, 0x62b6, 0x62ca,
- 0x62ae, 0x62b3, 0x62af, 0x62bb, 0x62a9, 0x62b0, 0x62b8, 0x653d,
- 0x65a8, 0x65bb, 0x6609, 0x65fc, 0x6604, 0x6612, 0x6608, 0x65fb,
- 0x6603, 0x660b, 0x660d, 0x6605, 0x65fd, 0x6611, 0x6610, 0x66f6,
- 0x670a, 0x6785, 0x676c, 0x678e, 0x6792, 0x6776, 0x677b, 0x6798,
- 0x6786, 0x6784, 0x6774, 0x678d, 0x678c, 0x677a, 0x679f, 0x6791,
- 0x6799, 0x6783, 0x677d, 0x6781, 0x6778, 0x6779, 0x6794, 0x6b25,
- 0x6b80, 0x6b7e, 0x6bde, 0x6c1d, 0x6c93, 0x6cec, 0x6ceb, 0x6cee,
- 0x6cd9, 0x6cb6, 0x6cd4, 0x6cad, 0x6ce7, 0x6cb7, 0x6cd0, 0x6cc2,
- 0x6cba, 0x6cc3, 0x6cc6, 0x6ced, 0x6cf2,
- /* 0xcd */
- 0x6cd2, 0x6cdd, 0x6cb4, 0x6c8a, 0x6c9d, 0x6c80, 0x6cde, 0x6cc0,
- 0x6d30, 0x6ccd, 0x6cc7, 0x6cb0, 0x6cf9, 0x6ccf, 0x6ce9, 0x6cd1,
- 0x7094, 0x7098, 0x7085, 0x7093, 0x7086, 0x7084, 0x7091, 0x7096,
- 0x7082, 0x709a, 0x7083, 0x726a, 0x72d6, 0x72cb, 0x72d8, 0x72c9,
- 0x72dc, 0x72d2, 0x72d4, 0x72da, 0x72cc, 0x72d1, 0x73a4, 0x73a1,
- 0x73ad, 0x73a6, 0x73a2, 0x73a0, 0x73ac, 0x739d, 0x74dd, 0x74e8,
- 0x753f, 0x7540, 0x753e, 0x758c, 0x7598, 0x76af, 0x76f3, 0x76f1,
- 0x76f0, 0x76f5, 0x77f8, 0x77fc, 0x77f9, 0x77fb, 0x77fa, 0x77f7,
- 0x7942, 0x793f, 0x79c5, 0x7a78, 0x7a7b, 0x7afb, 0x7c75, 0x7cfd,
- 0x8035, 0x808f, 0x80ae, 0x80a3, 0x80b8, 0x80b5, 0x80ad, 0x8220,
- 0x82a0, 0x82c0, 0x82ab, 0x829a, 0x8298, 0x829b, 0x82b5, 0x82a7,
- 0x82ae, 0x82bc, 0x829e, 0x82ba, 0x82b4, 0x82a8, 0x82a1, 0x82a9,
- 0x82c2, 0x82a4, 0x82c3, 0x82b6, 0x82a2, 0x8670, 0x866f, 0x866d,
- 0x866e, 0x8c56, 0x8fd2, 0x8fcb, 0x8fd3, 0x8fcd, 0x8fd6, 0x8fd5,
- 0x8fd7, 0x90b2, 0x90b4, 0x90af, 0x90b3, 0x90b0, 0x9639, 0x963d,
- 0x963c, 0x963a, 0x9643, 0x4fcd, 0x4fc5, 0x4fd3, 0x4fb2, 0x4fc9,
- 0x4fcb, 0x4fc1, 0x4fd4, 0x4fdc, 0x4fd9, 0x4fbb, 0x4fb3, 0x4fdb,
- 0x4fc7, 0x4fd6, 0x4fba, 0x4fc0, 0x4fb9, 0x4fec, 0x5244, 0x5249,
- 0x52c0, 0x52c2, 0x533d, 0x537c, 0x5397, 0x5396, 0x5399, 0x5398,
- 0x54ba, 0x54a1, 0x54ad, 0x54a5, 0x54cf,
- /* 0xce */
- 0x54c3, 0x830d, 0x54b7, 0x54ae, 0x54d6, 0x54b6, 0x54c5, 0x54c6,
- 0x54a0, 0x5470, 0x54bc, 0x54a2, 0x54be, 0x5472, 0x54de, 0x54b0,
- 0x57b5, 0x579e, 0x579f, 0x57a4, 0x578c, 0x5797, 0x579d, 0x579b,
- 0x5794, 0x5798, 0x578f, 0x5799, 0x57a5, 0x579a, 0x5795, 0x58f4,
- 0x590d, 0x5953, 0x59e1, 0x59de, 0x59ee, 0x5a00, 0x59f1, 0x59dd,
- 0x59fa, 0x59fd, 0x59fc, 0x59f6, 0x59e4, 0x59f2, 0x59f7, 0x59db,
- 0x59e9, 0x59f3, 0x59f5, 0x59e0, 0x59fe, 0x59f4, 0x59ed, 0x5ba8,
- 0x5c4c, 0x5cd0, 0x5cd8, 0x5ccc, 0x5cd7, 0x5ccb, 0x5cdb, 0x5cde,
- 0x5cda, 0x5cc9, 0x5cc7, 0x5cca, 0x5cd6, 0x5cd3, 0x5cd4, 0x5ccf,
- 0x5cc8, 0x5cc6, 0x5cce, 0x5cdf, 0x5cf8, 0x5df9, 0x5e21, 0x5e22,
- 0x5e23, 0x5e20, 0x5e24, 0x5eb0, 0x5ea4, 0x5ea2, 0x5e9b, 0x5ea3,
- 0x5ea5, 0x5f07, 0x5f2e, 0x5f56, 0x5f86, 0x6037, 0x6039, 0x6054,
- 0x6072, 0x605e, 0x6045, 0x6053, 0x6047, 0x6049, 0x605b, 0x604c,
- 0x6040, 0x6042, 0x605f, 0x6024, 0x6044, 0x6058, 0x6066, 0x606e,
- 0x6242, 0x6243, 0x62cf, 0x630d, 0x630b, 0x62f5, 0x630e, 0x6303,
- 0x62eb, 0x62f9, 0x630f, 0x630c, 0x62f8, 0x62f6, 0x6300, 0x6313,
- 0x6314, 0x62fa, 0x6315, 0x62fb, 0x62f0, 0x6541, 0x6543, 0x65aa,
- 0x65bf, 0x6636, 0x6621, 0x6632, 0x6635, 0x661c, 0x6626, 0x6622,
- 0x6633, 0x662b, 0x663a, 0x661d, 0x6634, 0x6639, 0x662e, 0x670f,
- 0x6710, 0x67c1, 0x67f2, 0x67c8, 0x67ba,
- /* 0xcf */
- 0x67dc, 0x67bb, 0x67f8, 0x67d8, 0x67c0, 0x67b7, 0x67c5, 0x67eb,
- 0x67e4, 0x67df, 0x67b5, 0x67cd, 0x67b3, 0x67f7, 0x67f6, 0x67ee,
- 0x67e3, 0x67c2, 0x67b9, 0x67ce, 0x67e7, 0x67f0, 0x67b2, 0x67fc,
- 0x67c6, 0x67ed, 0x67cc, 0x67ae, 0x67e6, 0x67db, 0x67fa, 0x67c9,
- 0x67ca, 0x67c3, 0x67ea, 0x67cb, 0x6b28, 0x6b82, 0x6b84, 0x6bb6,
- 0x6bd6, 0x6bd8, 0x6be0, 0x6c20, 0x6c21, 0x6d28, 0x6d34, 0x6d2d,
- 0x6d1f, 0x6d3c, 0x6d3f, 0x6d12, 0x6d0a, 0x6cda, 0x6d33, 0x6d04,
- 0x6d19, 0x6d3a, 0x6d1a, 0x6d11, 0x6d00, 0x6d1d, 0x6d42, 0x6d01,
- 0x6d18, 0x6d37, 0x6d03, 0x6d0f, 0x6d40, 0x6d07, 0x6d20, 0x6d2c,
- 0x6d08, 0x6d22, 0x6d09, 0x6d10, 0x70b7, 0x709f, 0x70be, 0x70b1,
- 0x70b0, 0x70a1, 0x70b4, 0x70b5, 0x70a9, 0x7241, 0x7249, 0x724a,
- 0x726c, 0x7270, 0x7273, 0x726e, 0x72ca, 0x72e4, 0x72e8, 0x72eb,
- 0x72df, 0x72ea, 0x72e6, 0x72e3, 0x7385, 0x73cc, 0x73c2, 0x73c8,
- 0x73c5, 0x73b9, 0x73b6, 0x73b5, 0x73b4, 0x73eb, 0x73bf, 0x73c7,
- 0x73be, 0x73c3, 0x73c6, 0x73b8, 0x73cb, 0x74ec, 0x74ee, 0x752e,
- 0x7547, 0x7548, 0x75a7, 0x75aa, 0x7679, 0x76c4, 0x7708, 0x7703,
- 0x7704, 0x7705, 0x770a, 0x76f7, 0x76fb, 0x76fa, 0x77e7, 0x77e8,
- 0x7806, 0x7811, 0x7812, 0x7805, 0x7810, 0x780f, 0x780e, 0x7809,
- 0x7803, 0x7813, 0x794a, 0x794c, 0x794b, 0x7945, 0x7944, 0x79d5,
- 0x79cd, 0x79cf, 0x79d6, 0x79ce, 0x7a80,
- /* 0xd0 */
- 0x7a7e, 0x7ad1, 0x7b00, 0x7b01, 0x7c7a, 0x7c78, 0x7c79, 0x7c7f,
- 0x7c80, 0x7c81, 0x7d03, 0x7d08, 0x7d01, 0x7f58, 0x7f91, 0x7f8d,
- 0x7fbe, 0x8007, 0x800e, 0x800f, 0x8014, 0x8037, 0x80d8, 0x80c7,
- 0x80e0, 0x80d1, 0x80c8, 0x80c2, 0x80d0, 0x80c5, 0x80e3, 0x80d9,
- 0x80dc, 0x80ca, 0x80d5, 0x80c9, 0x80cf, 0x80d7, 0x80e6, 0x80cd,
- 0x81ff, 0x8221, 0x8294, 0x82d9, 0x82fe, 0x82f9, 0x8307, 0x82e8,
- 0x8300, 0x82d5, 0x833a, 0x82eb, 0x82d6, 0x82f4, 0x82ec, 0x82e1,
- 0x82f2, 0x82f5, 0x830c, 0x82fb, 0x82f6, 0x82f0, 0x82ea, 0x82e4,
- 0x82e0, 0x82fa, 0x82f3, 0x82ed, 0x8677, 0x8674, 0x867c, 0x8673,
- 0x8841, 0x884e, 0x8867, 0x886a, 0x8869, 0x89d3, 0x8a04, 0x8a07,
- 0x8d72, 0x8fe3, 0x8fe1, 0x8fee, 0x8fe0, 0x90f1, 0x90bd, 0x90bf,
- 0x90d5, 0x90c5, 0x90be, 0x90c7, 0x90cb, 0x90c8, 0x91d4, 0x91d3,
- 0x9654, 0x964f, 0x9651, 0x9653, 0x964a, 0x964e, 0x501e, 0x5005,
- 0x5007, 0x5013, 0x5022, 0x5030, 0x501b, 0x4ff5, 0x4ff4, 0x5033,
- 0x5037, 0x502c, 0x4ff6, 0x4ff7, 0x5017, 0x501c, 0x5020, 0x5027,
- 0x5035, 0x502f, 0x5031, 0x500e, 0x515a, 0x5194, 0x5193, 0x51ca,
- 0x51c4, 0x51c5, 0x51c8, 0x51ce, 0x5261, 0x525a, 0x5252, 0x525e,
- 0x525f, 0x5255, 0x5262, 0x52cd, 0x530e, 0x539e, 0x5526, 0x54e2,
- 0x5517, 0x5512, 0x54e7, 0x54f3, 0x54e4, 0x551a, 0x54ff, 0x5504,
- 0x5508, 0x54eb, 0x5511, 0x5505, 0x54f1,
- /* 0xd1 */
- 0x550a, 0x54fb, 0x54f7, 0x54f8, 0x54e0, 0x550e, 0x5503, 0x550b,
- 0x5701, 0x5702, 0x57cc, 0x5832, 0x57d5, 0x57d2, 0x57ba, 0x57c6,
- 0x57bd, 0x57bc, 0x57b8, 0x57b6, 0x57bf, 0x57c7, 0x57d0, 0x57b9,
- 0x57c1, 0x590e, 0x594a, 0x5a19, 0x5a16, 0x5a2d, 0x5a2e, 0x5a15,
- 0x5a0f, 0x5a17, 0x5a0a, 0x5a1e, 0x5a33, 0x5b6c, 0x5ba7, 0x5bad,
- 0x5bac, 0x5c03, 0x5c56, 0x5c54, 0x5cec, 0x5cff, 0x5cee, 0x5cf1,
- 0x5cf7, 0x5d00, 0x5cf9, 0x5e29, 0x5e28, 0x5ea8, 0x5eae, 0x5eaa,
- 0x5eac, 0x5f33, 0x5f30, 0x5f67, 0x605d, 0x605a, 0x6067, 0x6041,
- 0x60a2, 0x6088, 0x6080, 0x6092, 0x6081, 0x609d, 0x6083, 0x6095,
- 0x609b, 0x6097, 0x6087, 0x609c, 0x608e, 0x6219, 0x6246, 0x62f2,
- 0x6310, 0x6356, 0x632c, 0x6344, 0x6345, 0x6336, 0x6343, 0x63e4,
- 0x6339, 0x634b, 0x634a, 0x633c, 0x6329, 0x6341, 0x6334, 0x6358,
- 0x6354, 0x6359, 0x632d, 0x6347, 0x6333, 0x635a, 0x6351, 0x6338,
- 0x6357, 0x6340, 0x6348, 0x654a, 0x6546, 0x65c6, 0x65c3, 0x65c4,
- 0x65c2, 0x664a, 0x665f, 0x6647, 0x6651, 0x6712, 0x6713, 0x681f,
- 0x681a, 0x6849, 0x6832, 0x6833, 0x683b, 0x684b, 0x684f, 0x6816,
- 0x6831, 0x681c, 0x6835, 0x682b, 0x682d, 0x682f, 0x684e, 0x6844,
- 0x6834, 0x681d, 0x6812, 0x6814, 0x6826, 0x6828, 0x682e, 0x684d,
- 0x683a, 0x6825, 0x6820, 0x6b2c, 0x6b2f, 0x6b2d, 0x6b31, 0x6b34,
- 0x6b6d, 0x8082, 0x6b88, 0x6be6, 0x6be4,
- /* 0xd2 */
- 0x6be8, 0x6be3, 0x6be2, 0x6be7, 0x6c25, 0x6d7a, 0x6d63, 0x6d64,
- 0x6d76, 0x6d0d, 0x6d61, 0x6d92, 0x6d58, 0x6d62, 0x6d6d, 0x6d6f,
- 0x6d91, 0x6d8d, 0x6def, 0x6d7f, 0x6d86, 0x6d5e, 0x6d67, 0x6d60,
- 0x6d97, 0x6d70, 0x6d7c, 0x6d5f, 0x6d82, 0x6d98, 0x6d2f, 0x6d68,
- 0x6d8b, 0x6d7e, 0x6d80, 0x6d84, 0x6d16, 0x6d83, 0x6d7b, 0x6d7d,
- 0x6d75, 0x6d90, 0x70dc, 0x70d3, 0x70d1, 0x70dd, 0x70cb, 0x7f39,
- 0x70e2, 0x70d7, 0x70d2, 0x70de, 0x70e0, 0x70d4, 0x70cd, 0x70c5,
- 0x70c6, 0x70c7, 0x70da, 0x70ce, 0x70e1, 0x7242, 0x7278, 0x7277,
- 0x7276, 0x7300, 0x72fa, 0x72f4, 0x72fe, 0x72f6, 0x72f3, 0x72fb,
- 0x7301, 0x73d3, 0x73d9, 0x73e5, 0x73d6, 0x73bc, 0x73e7, 0x73e3,
- 0x73e9, 0x73dc, 0x73d2, 0x73db, 0x73d4, 0x73dd, 0x73da, 0x73d7,
- 0x73d8, 0x73e8, 0x74de, 0x74df, 0x74f4, 0x74f5, 0x7521, 0x755b,
- 0x755f, 0x75b0, 0x75c1, 0x75bb, 0x75c4, 0x75c0, 0x75bf, 0x75b6,
- 0x75ba, 0x768a, 0x76c9, 0x771d, 0x771b, 0x7710, 0x7713, 0x7712,
- 0x7723, 0x7711, 0x7715, 0x7719, 0x771a, 0x7722, 0x7727, 0x7823,
- 0x782c, 0x7822, 0x7835, 0x782f, 0x7828, 0x782e, 0x782b, 0x7821,
- 0x7829, 0x7833, 0x782a, 0x7831, 0x7954, 0x795b, 0x794f, 0x795c,
- 0x7953, 0x7952, 0x7951, 0x79eb, 0x79ec, 0x79e0, 0x79ee, 0x79ed,
- 0x79ea, 0x79dc, 0x79de, 0x79dd, 0x7a86, 0x7a89, 0x7a85, 0x7a8b,
- 0x7a8c, 0x7a8a, 0x7a87, 0x7ad8, 0x7b10,
- /* 0xd3 */
- 0x7b04, 0x7b13, 0x7b05, 0x7b0f, 0x7b08, 0x7b0a, 0x7b0e, 0x7b09,
- 0x7b12, 0x7c84, 0x7c91, 0x7c8a, 0x7c8c, 0x7c88, 0x7c8d, 0x7c85,
- 0x7d1e, 0x7d1d, 0x7d11, 0x7d0e, 0x7d18, 0x7d16, 0x7d13, 0x7d1f,
- 0x7d12, 0x7d0f, 0x7d0c, 0x7f5c, 0x7f61, 0x7f5e, 0x7f60, 0x7f5d,
- 0x7f5b, 0x7f96, 0x7f92, 0x7fc3, 0x7fc2, 0x7fc0, 0x8016, 0x803e,
- 0x8039, 0x80fa, 0x80f2, 0x80f9, 0x80f5, 0x8101, 0x80fb, 0x8100,
- 0x8201, 0x822f, 0x8225, 0x8333, 0x832d, 0x8344, 0x8319, 0x8351,
- 0x8325, 0x8356, 0x833f, 0x8341, 0x8326, 0x831c, 0x8322, 0x8342,
- 0x834e, 0x831b, 0x832a, 0x8308, 0x833c, 0x834d, 0x8316, 0x8324,
- 0x8320, 0x8337, 0x832f, 0x8329, 0x8347, 0x8345, 0x834c, 0x8353,
- 0x831e, 0x832c, 0x834b, 0x8327, 0x8348, 0x8653, 0x8652, 0x86a2,
- 0x86a8, 0x8696, 0x868d, 0x8691, 0x869e, 0x8687, 0x8697, 0x8686,
- 0x868b, 0x869a, 0x8685, 0x86a5, 0x8699, 0x86a1, 0x86a7, 0x8695,
- 0x8698, 0x868e, 0x869d, 0x8690, 0x8694, 0x8843, 0x8844, 0x886d,
- 0x8875, 0x8876, 0x8872, 0x8880, 0x8871, 0x887f, 0x886f, 0x8883,
- 0x887e, 0x8874, 0x887c, 0x8a12, 0x8c47, 0x8c57, 0x8c7b, 0x8ca4,
- 0x8ca3, 0x8d76, 0x8d78, 0x8db5, 0x8db7, 0x8db6, 0x8ed1, 0x8ed3,
- 0x8ffe, 0x8ff5, 0x9002, 0x8fff, 0x8ffb, 0x9004, 0x8ffc, 0x8ff6,
- 0x90d6, 0x90e0, 0x90d9, 0x90da, 0x90e3, 0x90df, 0x90e5, 0x90d8,
- 0x90db, 0x90d7, 0x90dc, 0x90e4, 0x9150,
- /* 0xd4 */
- 0x914e, 0x914f, 0x91d5, 0x91e2, 0x91da, 0x965c, 0x965f, 0x96bc,
- 0x98e3, 0x9adf, 0x9b2f, 0x4e7f, 0x5070, 0x506a, 0x5061, 0x505e,
- 0x5060, 0x5053, 0x504b, 0x505d, 0x5072, 0x5048, 0x504d, 0x5041,
- 0x505b, 0x504a, 0x5062, 0x5015, 0x5045, 0x505f, 0x5069, 0x506b,
- 0x5063, 0x5064, 0x5046, 0x5040, 0x506e, 0x5073, 0x5057, 0x5051,
- 0x51d0, 0x526b, 0x526d, 0x526c, 0x526e, 0x52d6, 0x52d3, 0x532d,
- 0x539c, 0x5575, 0x5576, 0x553c, 0x554d, 0x5550, 0x5534, 0x552a,
- 0x5551, 0x5562, 0x5536, 0x5535, 0x5530, 0x5552, 0x5545, 0x550c,
- 0x5532, 0x5565, 0x554e, 0x5539, 0x5548, 0x552d, 0x553b, 0x5540,
- 0x554b, 0x570a, 0x5707, 0x57fb, 0x5814, 0x57e2, 0x57f6, 0x57dc,
- 0x57f4, 0x5800, 0x57ed, 0x57fd, 0x5808, 0x57f8, 0x580b, 0x57f3,
- 0x57cf, 0x5807, 0x57ee, 0x57e3, 0x57f2, 0x57e5, 0x57ec, 0x57e1,
- 0x580e, 0x57fc, 0x5810, 0x57e7, 0x5801, 0x580c, 0x57f1, 0x57e9,
- 0x57f0, 0x580d, 0x5804, 0x595c, 0x5a60, 0x5a58, 0x5a55, 0x5a67,
- 0x5a5e, 0x5a38, 0x5a35, 0x5a6d, 0x5a50, 0x5a5f, 0x5a65, 0x5a6c,
- 0x5a53, 0x5a64, 0x5a57, 0x5a43, 0x5a5d, 0x5a52, 0x5a44, 0x5a5b,
- 0x5a48, 0x5a8e, 0x5a3e, 0x5a4d, 0x5a39, 0x5a4c, 0x5a70, 0x5a69,
- 0x5a47, 0x5a51, 0x5a56, 0x5a42, 0x5a5c, 0x5b72, 0x5b6e, 0x5bc1,
- 0x5bc0, 0x5c59, 0x5d1e, 0x5d0b, 0x5d1d, 0x5d1a, 0x5d20, 0x5d0c,
- 0x5d28, 0x5d0d, 0x5d26, 0x5d25, 0x5d0f,
- /* 0xd5 */
- 0x5d30, 0x5d12, 0x5d23, 0x5d1f, 0x5d2e, 0x5e3e, 0x5e34, 0x5eb1,
- 0x5eb4, 0x5eb9, 0x5eb2, 0x5eb3, 0x5f36, 0x5f38, 0x5f9b, 0x5f96,
- 0x5f9f, 0x608a, 0x6090, 0x6086, 0x60be, 0x60b0, 0x60ba, 0x60d3,
- 0x60d4, 0x60cf, 0x60e4, 0x60d9, 0x60dd, 0x60c8, 0x60b1, 0x60db,
- 0x60b7, 0x60ca, 0x60bf, 0x60c3, 0x60cd, 0x60c0, 0x6332, 0x6365,
- 0x638a, 0x6382, 0x637d, 0x63bd, 0x639e, 0x63ad, 0x639d, 0x6397,
- 0x63ab, 0x638e, 0x636f, 0x6387, 0x6390, 0x636e, 0x63af, 0x6375,
- 0x639c, 0x636d, 0x63ae, 0x637c, 0x63a4, 0x633b, 0x639f, 0x6378,
- 0x6385, 0x6381, 0x6391, 0x638d, 0x6370, 0x6553, 0x65cd, 0x6665,
- 0x6661, 0x665b, 0x6659, 0x665c, 0x6662, 0x6718, 0x6879, 0x6887,
- 0x6890, 0x689c, 0x686d, 0x686e, 0x68ae, 0x68ab, 0x6956, 0x686f,
- 0x68a3, 0x68ac, 0x68a9, 0x6875, 0x6874, 0x68b2, 0x688f, 0x6877,
- 0x6892, 0x687c, 0x686b, 0x6872, 0x68aa, 0x6880, 0x6871, 0x687e,
- 0x689b, 0x6896, 0x688b, 0x68a0, 0x6889, 0x68a4, 0x6878, 0x687b,
- 0x6891, 0x688c, 0x688a, 0x687d, 0x6b36, 0x6b33, 0x6b37, 0x6b38,
- 0x6b91, 0x6b8f, 0x6b8d, 0x6b8e, 0x6b8c, 0x6c2a, 0x6dc0, 0x6dab,
- 0x6db4, 0x6db3, 0x6e74, 0x6dac, 0x6de9, 0x6de2, 0x6db7, 0x6df6,
- 0x6dd4, 0x6e00, 0x6dc8, 0x6de0, 0x6ddf, 0x6dd6, 0x6dbe, 0x6de5,
- 0x6ddc, 0x6ddd, 0x6ddb, 0x6df4, 0x6dca, 0x6dbd, 0x6ded, 0x6df0,
- 0x6dba, 0x6dd5, 0x6dc2, 0x6dcf, 0x6dc9,
- /* 0xd6 */
- 0x6dd0, 0x6df2, 0x6dd3, 0x6dfd, 0x6dd7, 0x6dcd, 0x6de3, 0x6dbb,
- 0x70fa, 0x710d, 0x70f7, 0x7117, 0x70f4, 0x710c, 0x70f0, 0x7104,
- 0x70f3, 0x7110, 0x70fc, 0x70ff, 0x7106, 0x7113, 0x7100, 0x70f8,
- 0x70f6, 0x710b, 0x7102, 0x710e, 0x727e, 0x727b, 0x727c, 0x727f,
- 0x731d, 0x7317, 0x7307, 0x7311, 0x7318, 0x730a, 0x7308, 0x72ff,
- 0x730f, 0x731e, 0x7388, 0x73f6, 0x73f8, 0x73f5, 0x7404, 0x7401,
- 0x73fd, 0x7407, 0x7400, 0x73fa, 0x73fc, 0x73ff, 0x740c, 0x740b,
- 0x73f4, 0x7408, 0x7564, 0x7563, 0x75ce, 0x75d2, 0x75cf, 0x75cb,
- 0x75cc, 0x75d1, 0x75d0, 0x768f, 0x7689, 0x76d3, 0x7739, 0x772f,
- 0x772d, 0x7731, 0x7732, 0x7734, 0x7733, 0x773d, 0x7725, 0x773b,
- 0x7735, 0x7848, 0x7852, 0x7849, 0x784d, 0x784a, 0x784c, 0x7826,
- 0x7845, 0x7850, 0x7964, 0x7967, 0x7969, 0x796a, 0x7963, 0x796b,
- 0x7961, 0x79bb, 0x79fa, 0x79f8, 0x79f6, 0x79f7, 0x7a8f, 0x7a94,
- 0x7a90, 0x7b35, 0x7b47, 0x7b34, 0x7b25, 0x7b30, 0x7b22, 0x7b24,
- 0x7b33, 0x7b18, 0x7b2a, 0x7b1d, 0x7b31, 0x7b2b, 0x7b2d, 0x7b2f,
- 0x7b32, 0x7b38, 0x7b1a, 0x7b23, 0x7c94, 0x7c98, 0x7c96, 0x7ca3,
- 0x7d35, 0x7d3d, 0x7d38, 0x7d36, 0x7d3a, 0x7d45, 0x7d2c, 0x7d29,
- 0x7d41, 0x7d47, 0x7d3e, 0x7d3f, 0x7d4a, 0x7d3b, 0x7d28, 0x7f63,
- 0x7f95, 0x7f9c, 0x7f9d, 0x7f9b, 0x7fca, 0x7fcb, 0x7fcd, 0x7fd0,
- 0x7fd1, 0x7fc7, 0x7fcf, 0x7fc9, 0x801f,
- /* 0xd7 */
- 0x801e, 0x801b, 0x8047, 0x8043, 0x8048, 0x8118, 0x8125, 0x8119,
- 0x811b, 0x812d, 0x811f, 0x812c, 0x811e, 0x8121, 0x8115, 0x8127,
- 0x811d, 0x8122, 0x8211, 0x8238, 0x8233, 0x823a, 0x8234, 0x8232,
- 0x8274, 0x8390, 0x83a3, 0x83a8, 0x838d, 0x837a, 0x8373, 0x83a4,
- 0x8374, 0x838f, 0x8381, 0x8395, 0x8399, 0x8375, 0x8394, 0x83a9,
- 0x837d, 0x8383, 0x838c, 0x839d, 0x839b, 0x83aa, 0x838b, 0x837e,
- 0x83a5, 0x83af, 0x8388, 0x8397, 0x83b0, 0x837f, 0x83a6, 0x8387,
- 0x83ae, 0x8376, 0x839a, 0x8659, 0x8656, 0x86bf, 0x86b7, 0x86c2,
- 0x86c1, 0x86c5, 0x86ba, 0x86b0, 0x86c8, 0x86b9, 0x86b3, 0x86b8,
- 0x86cc, 0x86b4, 0x86bb, 0x86bc, 0x86c3, 0x86bd, 0x86be, 0x8852,
- 0x8889, 0x8895, 0x88a8, 0x88a2, 0x88aa, 0x889a, 0x8891, 0x88a1,
- 0x889f, 0x8898, 0x88a7, 0x8899, 0x889b, 0x8897, 0x88a4, 0x88ac,
- 0x888c, 0x8893, 0x888e, 0x8982, 0x89d6, 0x89d9, 0x89d5, 0x8a30,
- 0x8a27, 0x8a2c, 0x8a1e, 0x8c39, 0x8c3b, 0x8c5c, 0x8c5d, 0x8c7d,
- 0x8ca5, 0x8d7d, 0x8d7b, 0x8d79, 0x8dbc, 0x8dc2, 0x8db9, 0x8dbf,
- 0x8dc1, 0x8ed8, 0x8ede, 0x8edd, 0x8edc, 0x8ed7, 0x8ee0, 0x8ee1,
- 0x9024, 0x900b, 0x9011, 0x901c, 0x900c, 0x9021, 0x90ef, 0x90ea,
- 0x90f0, 0x90f4, 0x90f2, 0x90f3, 0x90d4, 0x90eb, 0x90ec, 0x90e9,
- 0x9156, 0x9158, 0x915a, 0x9153, 0x9155, 0x91ec, 0x91f4, 0x91f1,
- 0x91f3, 0x91f8, 0x91e4, 0x91f9, 0x91ea,
- /* 0xd8 */
- 0x91eb, 0x91f7, 0x91e8, 0x91ee, 0x957a, 0x9586, 0x9588, 0x967c,
- 0x966d, 0x966b, 0x9671, 0x966f, 0x96bf, 0x976a, 0x9804, 0x98e5,
- 0x9997, 0x509b, 0x5095, 0x5094, 0x509e, 0x508b, 0x50a3, 0x5083,
- 0x508c, 0x508e, 0x509d, 0x5068, 0x509c, 0x5092, 0x5082, 0x5087,
- 0x515f, 0x51d4, 0x5312, 0x5311, 0x53a4, 0x53a7, 0x5591, 0x55a8,
- 0x55a5, 0x55ad, 0x5577, 0x5645, 0x55a2, 0x5593, 0x5588, 0x558f,
- 0x55b5, 0x5581, 0x55a3, 0x5592, 0x55a4, 0x557d, 0x558c, 0x55a6,
- 0x557f, 0x5595, 0x55a1, 0x558e, 0x570c, 0x5829, 0x5837, 0x5819,
- 0x581e, 0x5827, 0x5823, 0x5828, 0x57f5, 0x5848, 0x5825, 0x581c,
- 0x581b, 0x5833, 0x583f, 0x5836, 0x582e, 0x5839, 0x5838, 0x582d,
- 0x582c, 0x583b, 0x5961, 0x5aaf, 0x5a94, 0x5a9f, 0x5a7a, 0x5aa2,
- 0x5a9e, 0x5a78, 0x5aa6, 0x5a7c, 0x5aa5, 0x5aac, 0x5a95, 0x5aae,
- 0x5a37, 0x5a84, 0x5a8a, 0x5a97, 0x5a83, 0x5a8b, 0x5aa9, 0x5a7b,
- 0x5a7d, 0x5a8c, 0x5a9c, 0x5a8f, 0x5a93, 0x5a9d, 0x5bea, 0x5bcd,
- 0x5bcb, 0x5bd4, 0x5bd1, 0x5bca, 0x5bce, 0x5c0c, 0x5c30, 0x5d37,
- 0x5d43, 0x5d6b, 0x5d41, 0x5d4b, 0x5d3f, 0x5d35, 0x5d51, 0x5d4e,
- 0x5d55, 0x5d33, 0x5d3a, 0x5d52, 0x5d3d, 0x5d31, 0x5d59, 0x5d42,
- 0x5d39, 0x5d49, 0x5d38, 0x5d3c, 0x5d32, 0x5d36, 0x5d40, 0x5d45,
- 0x5e44, 0x5e41, 0x5f58, 0x5fa6, 0x5fa5, 0x5fab, 0x60c9, 0x60b9,
- 0x60cc, 0x60e2, 0x60ce, 0x60c4, 0x6114,
- /* 0xd9 */
- 0x60f2, 0x610a, 0x6116, 0x6105, 0x60f5, 0x6113, 0x60f8, 0x60fc,
- 0x60fe, 0x60c1, 0x6103, 0x6118, 0x611d, 0x6110, 0x60ff, 0x6104,
- 0x610b, 0x624a, 0x6394, 0x63b1, 0x63b0, 0x63ce, 0x63e5, 0x63e8,
- 0x63ef, 0x63c3, 0x649d, 0x63f3, 0x63ca, 0x63e0, 0x63f6, 0x63d5,
- 0x63f2, 0x63f5, 0x6461, 0x63df, 0x63be, 0x63dd, 0x63dc, 0x63c4,
- 0x63d8, 0x63d3, 0x63c2, 0x63c7, 0x63cc, 0x63cb, 0x63c8, 0x63f0,
- 0x63d7, 0x63d9, 0x6532, 0x6567, 0x656a, 0x6564, 0x655c, 0x6568,
- 0x6565, 0x658c, 0x659d, 0x659e, 0x65ae, 0x65d0, 0x65d2, 0x667c,
- 0x666c, 0x667b, 0x6680, 0x6671, 0x6679, 0x666a, 0x6672, 0x6701,
- 0x690c, 0x68d3, 0x6904, 0x68dc, 0x692a, 0x68ec, 0x68ea, 0x68f1,
- 0x690f, 0x68d6, 0x68f7, 0x68eb, 0x68e4, 0x68f6, 0x6913, 0x6910,
- 0x68f3, 0x68e1, 0x6907, 0x68cc, 0x6908, 0x6970, 0x68b4, 0x6911,
- 0x68ef, 0x68c6, 0x6914, 0x68f8, 0x68d0, 0x68fd, 0x68fc, 0x68e8,
- 0x690b, 0x690a, 0x6917, 0x68ce, 0x68c8, 0x68dd, 0x68de, 0x68e6,
- 0x68f4, 0x68d1, 0x6906, 0x68d4, 0x68e9, 0x6915, 0x6925, 0x68c7,
- 0x6b39, 0x6b3b, 0x6b3f, 0x6b3c, 0x6b94, 0x6b97, 0x6b99, 0x6b95,
- 0x6bbd, 0x6bf0, 0x6bf2, 0x6bf3, 0x6c30, 0x6dfc, 0x6e46, 0x6e47,
- 0x6e1f, 0x6e49, 0x6e88, 0x6e3c, 0x6e3d, 0x6e45, 0x6e62, 0x6e2b,
- 0x6e3f, 0x6e41, 0x6e5d, 0x6e73, 0x6e1c, 0x6e33, 0x6e4b, 0x6e40,
- 0x6e51, 0x6e3b, 0x6e03, 0x6e2e, 0x6e5e,
- /* 0xda */
- 0x6e68, 0x6e5c, 0x6e61, 0x6e31, 0x6e28, 0x6e60, 0x6e71, 0x6e6b,
- 0x6e39, 0x6e22, 0x6e30, 0x6e53, 0x6e65, 0x6e27, 0x6e78, 0x6e64,
- 0x6e77, 0x6e55, 0x6e79, 0x6e52, 0x6e66, 0x6e35, 0x6e36, 0x6e5a,
- 0x7120, 0x711e, 0x712f, 0x70fb, 0x712e, 0x7131, 0x7123, 0x7125,
- 0x7122, 0x7132, 0x711f, 0x7128, 0x713a, 0x711b, 0x724b, 0x725a,
- 0x7288, 0x7289, 0x7286, 0x7285, 0x728b, 0x7312, 0x730b, 0x7330,
- 0x7322, 0x7331, 0x7333, 0x7327, 0x7332, 0x732d, 0x7326, 0x7323,
- 0x7335, 0x730c, 0x742e, 0x742c, 0x7430, 0x742b, 0x7416, 0x741a,
- 0x7421, 0x742d, 0x7431, 0x7424, 0x7423, 0x741d, 0x7429, 0x7420,
- 0x7432, 0x74fb, 0x752f, 0x756f, 0x756c, 0x75e7, 0x75da, 0x75e1,
- 0x75e6, 0x75dd, 0x75df, 0x75e4, 0x75d7, 0x7695, 0x7692, 0x76da,
- 0x7746, 0x7747, 0x7744, 0x774d, 0x7745, 0x774a, 0x774e, 0x774b,
- 0x774c, 0x77de, 0x77ec, 0x7860, 0x7864, 0x7865, 0x785c, 0x786d,
- 0x7871, 0x786a, 0x786e, 0x7870, 0x7869, 0x7868, 0x785e, 0x7862,
- 0x7974, 0x7973, 0x7972, 0x7970, 0x7a02, 0x7a0a, 0x7a03, 0x7a0c,
- 0x7a04, 0x7a99, 0x7ae6, 0x7ae4, 0x7b4a, 0x7b3b, 0x7b44, 0x7b48,
- 0x7b4c, 0x7b4e, 0x7b40, 0x7b58, 0x7b45, 0x7ca2, 0x7c9e, 0x7ca8,
- 0x7ca1, 0x7d58, 0x7d6f, 0x7d63, 0x7d53, 0x7d56, 0x7d67, 0x7d6a,
- 0x7d4f, 0x7d6d, 0x7d5c, 0x7d6b, 0x7d52, 0x7d54, 0x7d69, 0x7d51,
- 0x7d5f, 0x7d4e, 0x7f3e, 0x7f3f, 0x7f65,
- /* 0xdb */
- 0x7f66, 0x7fa2, 0x7fa0, 0x7fa1, 0x7fd7, 0x8051, 0x804f, 0x8050,
- 0x80fe, 0x80d4, 0x8143, 0x814a, 0x8152, 0x814f, 0x8147, 0x813d,
- 0x814d, 0x813a, 0x81e6, 0x81ee, 0x81f7, 0x81f8, 0x81f9, 0x8204,
- 0x823c, 0x823d, 0x823f, 0x8275, 0x833b, 0x83cf, 0x83f9, 0x8423,
- 0x83c0, 0x83e8, 0x8412, 0x83e7, 0x83e4, 0x83fc, 0x83f6, 0x8410,
- 0x83c6, 0x83c8, 0x83eb, 0x83e3, 0x83bf, 0x8401, 0x83dd, 0x83e5,
- 0x83d8, 0x83ff, 0x83e1, 0x83cb, 0x83ce, 0x83d6, 0x83f5, 0x83c9,
- 0x8409, 0x840f, 0x83de, 0x8411, 0x8406, 0x83c2, 0x83f3, 0x83d5,
- 0x83fa, 0x83c7, 0x83d1, 0x83ea, 0x8413, 0x83c3, 0x83ec, 0x83ee,
- 0x83c4, 0x83fb, 0x83d7, 0x83e2, 0x841b, 0x83db, 0x83fe, 0x86d8,
- 0x86e2, 0x86e6, 0x86d3, 0x86e3, 0x86da, 0x86ea, 0x86dd, 0x86eb,
- 0x86dc, 0x86ec, 0x86e9, 0x86d7, 0x86e8, 0x86d1, 0x8848, 0x8856,
- 0x8855, 0x88ba, 0x88d7, 0x88b9, 0x88b8, 0x88c0, 0x88be, 0x88b6,
- 0x88bc, 0x88b7, 0x88bd, 0x88b2, 0x8901, 0x88c9, 0x8995, 0x8998,
- 0x8997, 0x89dd, 0x89da, 0x89db, 0x8a4e, 0x8a4d, 0x8a39, 0x8a59,
- 0x8a40, 0x8a57, 0x8a58, 0x8a44, 0x8a45, 0x8a52, 0x8a48, 0x8a51,
- 0x8a4a, 0x8a4c, 0x8a4f, 0x8c5f, 0x8c81, 0x8c80, 0x8cba, 0x8cbe,
- 0x8cb0, 0x8cb9, 0x8cb5, 0x8d84, 0x8d80, 0x8d89, 0x8dd8, 0x8dd3,
- 0x8dcd, 0x8dc7, 0x8dd6, 0x8ddc, 0x8dcf, 0x8dd5, 0x8dd9, 0x8dc8,
- 0x8dd7, 0x8dc5, 0x8eef, 0x8ef7, 0x8efa,
- /* 0xdc */
- 0x8ef9, 0x8ee6, 0x8eee, 0x8ee5, 0x8ef5, 0x8ee7, 0x8ee8, 0x8ef6,
- 0x8eeb, 0x8ef1, 0x8eec, 0x8ef4, 0x8ee9, 0x902d, 0x9034, 0x902f,
- 0x9106, 0x912c, 0x9104, 0x90ff, 0x90fc, 0x9108, 0x90f9, 0x90fb,
- 0x9101, 0x9100, 0x9107, 0x9105, 0x9103, 0x9161, 0x9164, 0x915f,
- 0x9162, 0x9160, 0x9201, 0x920a, 0x9225, 0x9203, 0x921a, 0x9226,
- 0x920f, 0x920c, 0x9200, 0x9212, 0x91ff, 0x91fd, 0x9206, 0x9204,
- 0x9227, 0x9202, 0x921c, 0x9224, 0x9219, 0x9217, 0x9205, 0x9216,
- 0x957b, 0x958d, 0x958c, 0x9590, 0x9687, 0x967e, 0x9688, 0x9689,
- 0x9683, 0x9680, 0x96c2, 0x96c8, 0x96c3, 0x96f1, 0x96f0, 0x976c,
- 0x9770, 0x976e, 0x9807, 0x98a9, 0x98eb, 0x9ce6, 0x9ef9, 0x4e83,
- 0x4e84, 0x4eb6, 0x50bd, 0x50bf, 0x50c6, 0x50ae, 0x50c4, 0x50ca,
- 0x50b4, 0x50c8, 0x50c2, 0x50b0, 0x50c1, 0x50ba, 0x50b1, 0x50cb,
- 0x50c9, 0x50b6, 0x50b8, 0x51d7, 0x527a, 0x5278, 0x527b, 0x527c,
- 0x55c3, 0x55db, 0x55cc, 0x55d0, 0x55cb, 0x55ca, 0x55dd, 0x55c0,
- 0x55d4, 0x55c4, 0x55e9, 0x55bf, 0x55d2, 0x558d, 0x55cf, 0x55d5,
- 0x55e2, 0x55d6, 0x55c8, 0x55f2, 0x55cd, 0x55d9, 0x55c2, 0x5714,
- 0x5853, 0x5868, 0x5864, 0x584f, 0x584d, 0x5849, 0x586f, 0x5855,
- 0x584e, 0x585d, 0x5859, 0x5865, 0x585b, 0x583d, 0x5863, 0x5871,
- 0x58fc, 0x5ac7, 0x5ac4, 0x5acb, 0x5aba, 0x5ab8, 0x5ab1, 0x5ab5,
- 0x5ab0, 0x5abf, 0x5ac8, 0x5abb, 0x5ac6,
- /* 0xdd */
- 0x5ab7, 0x5ac0, 0x5aca, 0x5ab4, 0x5ab6, 0x5acd, 0x5ab9, 0x5a90,
- 0x5bd6, 0x5bd8, 0x5bd9, 0x5c1f, 0x5c33, 0x5d71, 0x5d63, 0x5d4a,
- 0x5d65, 0x5d72, 0x5d6c, 0x5d5e, 0x5d68, 0x5d67, 0x5d62, 0x5df0,
- 0x5e4f, 0x5e4e, 0x5e4a, 0x5e4d, 0x5e4b, 0x5ec5, 0x5ecc, 0x5ec6,
- 0x5ecb, 0x5ec7, 0x5f40, 0x5faf, 0x5fad, 0x60f7, 0x6149, 0x614a,
- 0x612b, 0x6145, 0x6136, 0x6132, 0x612e, 0x6146, 0x612f, 0x614f,
- 0x6129, 0x6140, 0x6220, 0x9168, 0x6223, 0x6225, 0x6224, 0x63c5,
- 0x63f1, 0x63eb, 0x6410, 0x6412, 0x6409, 0x6420, 0x6424, 0x6433,
- 0x6443, 0x641f, 0x6415, 0x6418, 0x6439, 0x6437, 0x6422, 0x6423,
- 0x640c, 0x6426, 0x6430, 0x6428, 0x6441, 0x6435, 0x642f, 0x640a,
- 0x641a, 0x6440, 0x6425, 0x6427, 0x640b, 0x63e7, 0x641b, 0x642e,
- 0x6421, 0x640e, 0x656f, 0x6592, 0x65d3, 0x6686, 0x668c, 0x6695,
- 0x6690, 0x668b, 0x668a, 0x6699, 0x6694, 0x6678, 0x6720, 0x6966,
- 0x695f, 0x6938, 0x694e, 0x6962, 0x6971, 0x693f, 0x6945, 0x696a,
- 0x6939, 0x6942, 0x6957, 0x6959, 0x697a, 0x6948, 0x6949, 0x6935,
- 0x696c, 0x6933, 0x693d, 0x6965, 0x68f0, 0x6978, 0x6934, 0x6969,
- 0x6940, 0x696f, 0x6944, 0x6976, 0x6958, 0x6941, 0x6974, 0x694c,
- 0x693b, 0x694b, 0x6937, 0x695c, 0x694f, 0x6951, 0x6932, 0x6952,
- 0x692f, 0x697b, 0x693c, 0x6b46, 0x6b45, 0x6b43, 0x6b42, 0x6b48,
- 0x6b41, 0x6b9b, 0xfa0d, 0x6bfb, 0x6bfc,
- /* 0xde */
- 0x6bf9, 0x6bf7, 0x6bf8, 0x6e9b, 0x6ed6, 0x6ec8, 0x6e8f, 0x6ec0,
- 0x6e9f, 0x6e93, 0x6e94, 0x6ea0, 0x6eb1, 0x6eb9, 0x6ec6, 0x6ed2,
- 0x6ebd, 0x6ec1, 0x6e9e, 0x6ec9, 0x6eb7, 0x6eb0, 0x6ecd, 0x6ea6,
- 0x6ecf, 0x6eb2, 0x6ebe, 0x6ec3, 0x6edc, 0x6ed8, 0x6e99, 0x6e92,
- 0x6e8e, 0x6e8d, 0x6ea4, 0x6ea1, 0x6ebf, 0x6eb3, 0x6ed0, 0x6eca,
- 0x6e97, 0x6eae, 0x6ea3, 0x7147, 0x7154, 0x7152, 0x7163, 0x7160,
- 0x7141, 0x715d, 0x7162, 0x7172, 0x7178, 0x716a, 0x7161, 0x7142,
- 0x7158, 0x7143, 0x714b, 0x7170, 0x715f, 0x7150, 0x7153, 0x7144,
- 0x714d, 0x715a, 0x724f, 0x728d, 0x728c, 0x7291, 0x7290, 0x728e,
- 0x733c, 0x7342, 0x733b, 0x733a, 0x7340, 0x734a, 0x7349, 0x7444,
- 0x744a, 0x744b, 0x7452, 0x7451, 0x7457, 0x7440, 0x744f, 0x7450,
- 0x744e, 0x7442, 0x7446, 0x744d, 0x7454, 0x74e1, 0x74ff, 0x74fe,
- 0x74fd, 0x751d, 0x7579, 0x7577, 0x6983, 0x75ef, 0x760f, 0x7603,
- 0x75f7, 0x75fe, 0x75fc, 0x75f9, 0x75f8, 0x7610, 0x75fb, 0x75f6,
- 0x75ed, 0x75f5, 0x75fd, 0x7699, 0x76b5, 0x76dd, 0x7755, 0x775f,
- 0x7760, 0x7752, 0x7756, 0x775a, 0x7769, 0x7767, 0x7754, 0x7759,
- 0x776d, 0x77e0, 0x7887, 0x789a, 0x7894, 0x788f, 0x7884, 0x7895,
- 0x7885, 0x7886, 0x78a1, 0x7883, 0x7879, 0x7899, 0x7880, 0x7896,
- 0x787b, 0x797c, 0x7982, 0x797d, 0x7979, 0x7a11, 0x7a18, 0x7a19,
- 0x7a12, 0x7a17, 0x7a15, 0x7a22, 0x7a13,
- /* 0xdf */
- 0x7a1b, 0x7a10, 0x7aa3, 0x7aa2, 0x7a9e, 0x7aeb, 0x7b66, 0x7b64,
- 0x7b6d, 0x7b74, 0x7b69, 0x7b72, 0x7b65, 0x7b73, 0x7b71, 0x7b70,
- 0x7b61, 0x7b78, 0x7b76, 0x7b63, 0x7cb2, 0x7cb4, 0x7caf, 0x7d88,
- 0x7d86, 0x7d80, 0x7d8d, 0x7d7f, 0x7d85, 0x7d7a, 0x7d8e, 0x7d7b,
- 0x7d83, 0x7d7c, 0x7d8c, 0x7d94, 0x7d84, 0x7d7d, 0x7d92, 0x7f6d,
- 0x7f6b, 0x7f67, 0x7f68, 0x7f6c, 0x7fa6, 0x7fa5, 0x7fa7, 0x7fdb,
- 0x7fdc, 0x8021, 0x8164, 0x8160, 0x8177, 0x815c, 0x8169, 0x815b,
- 0x8162, 0x8172, 0x6721, 0x815e, 0x8176, 0x8167, 0x816f, 0x8144,
- 0x8161, 0x821d, 0x8249, 0x8244, 0x8240, 0x8242, 0x8245, 0x84f1,
- 0x843f, 0x8456, 0x8476, 0x8479, 0x848f, 0x848d, 0x8465, 0x8451,
- 0x8440, 0x8486, 0x8467, 0x8430, 0x844d, 0x847d, 0x845a, 0x8459,
- 0x8474, 0x8473, 0x845d, 0x8507, 0x845e, 0x8437, 0x843a, 0x8434,
- 0x847a, 0x8443, 0x8478, 0x8432, 0x8445, 0x8429, 0x83d9, 0x844b,
- 0x842f, 0x8442, 0x842d, 0x845f, 0x8470, 0x8439, 0x844e, 0x844c,
- 0x8452, 0x846f, 0x84c5, 0x848e, 0x843b, 0x8447, 0x8436, 0x8433,
- 0x8468, 0x847e, 0x8444, 0x842b, 0x8460, 0x8454, 0x846e, 0x8450,
- 0x870b, 0x8704, 0x86f7, 0x870c, 0x86fa, 0x86d6, 0x86f5, 0x874d,
- 0x86f8, 0x870e, 0x8709, 0x8701, 0x86f6, 0x870d, 0x8705, 0x88d6,
- 0x88cb, 0x88cd, 0x88ce, 0x88de, 0x88db, 0x88da, 0x88cc, 0x88d0,
- 0x8985, 0x899b, 0x89df, 0x89e5, 0x89e4,
- /* 0xe0 */
- 0x89e1, 0x89e0, 0x89e2, 0x89dc, 0x89e6, 0x8a76, 0x8a86, 0x8a7f,
- 0x8a61, 0x8a3f, 0x8a77, 0x8a82, 0x8a84, 0x8a75, 0x8a83, 0x8a81,
- 0x8a74, 0x8a7a, 0x8c3c, 0x8c4b, 0x8c4a, 0x8c65, 0x8c64, 0x8c66,
- 0x8c86, 0x8c84, 0x8c85, 0x8ccc, 0x8d68, 0x8d69, 0x8d91, 0x8d8c,
- 0x8d8e, 0x8d8f, 0x8d8d, 0x8d93, 0x8d94, 0x8d90, 0x8d92, 0x8df0,
- 0x8de0, 0x8dec, 0x8df1, 0x8dee, 0x8dd0, 0x8de9, 0x8de3, 0x8de2,
- 0x8de7, 0x8df2, 0x8deb, 0x8df4, 0x8f06, 0x8eff, 0x8f01, 0x8f00,
- 0x8f05, 0x8f07, 0x8f08, 0x8f02, 0x8f0b, 0x9052, 0x903f, 0x9044,
- 0x9049, 0x903d, 0x9110, 0x910d, 0x910f, 0x9111, 0x9116, 0x9114,
- 0x910b, 0x910e, 0x916e, 0x916f, 0x9248, 0x9252, 0x9230, 0x923a,
- 0x9266, 0x9233, 0x9265, 0x925e, 0x9283, 0x922e, 0x924a, 0x9246,
- 0x926d, 0x926c, 0x924f, 0x9260, 0x9267, 0x926f, 0x9236, 0x9261,
- 0x9270, 0x9231, 0x9254, 0x9263, 0x9250, 0x9272, 0x924e, 0x9253,
- 0x924c, 0x9256, 0x9232, 0x959f, 0x959c, 0x959e, 0x959b, 0x9692,
- 0x9693, 0x9691, 0x9697, 0x96ce, 0x96fa, 0x96fd, 0x96f8, 0x96f5,
- 0x9773, 0x9777, 0x9778, 0x9772, 0x980f, 0x980d, 0x980e, 0x98ac,
- 0x98f6, 0x98f9, 0x99af, 0x99b2, 0x99b0, 0x99b5, 0x9aad, 0x9aab,
- 0x9b5b, 0x9cea, 0x9ced, 0x9ce7, 0x9e80, 0x9efd, 0x50e6, 0x50d4,
- 0x50d7, 0x50e8, 0x50f3, 0x50db, 0x50ea, 0x50dd, 0x50e4, 0x50d3,
- 0x50ec, 0x50f0, 0x50ef, 0x50e3, 0x50e0,
- /* 0xe1 */
- 0x51d8, 0x5280, 0x5281, 0x52e9, 0x52eb, 0x5330, 0x53ac, 0x5627,
- 0x5615, 0x560c, 0x5612, 0x55fc, 0x560f, 0x561c, 0x5601, 0x5613,
- 0x5602, 0x55fa, 0x561d, 0x5604, 0x55ff, 0x55f9, 0x5889, 0x587c,
- 0x5890, 0x5898, 0x5886, 0x5881, 0x587f, 0x5874, 0x588b, 0x587a,
- 0x5887, 0x5891, 0x588e, 0x5876, 0x5882, 0x5888, 0x587b, 0x5894,
- 0x588f, 0x58fe, 0x596b, 0x5adc, 0x5aee, 0x5ae5, 0x5ad5, 0x5aea,
- 0x5ada, 0x5aed, 0x5aeb, 0x5af3, 0x5ae2, 0x5ae0, 0x5adb, 0x5aec,
- 0x5ade, 0x5add, 0x5ad9, 0x5ae8, 0x5adf, 0x5b77, 0x5be0, 0x5be3,
- 0x5c63, 0x5d82, 0x5d80, 0x5d7d, 0x5d86, 0x5d7a, 0x5d81, 0x5d77,
- 0x5d8a, 0x5d89, 0x5d88, 0x5d7e, 0x5d7c, 0x5d8d, 0x5d79, 0x5d7f,
- 0x5e58, 0x5e59, 0x5e53, 0x5ed8, 0x5ed1, 0x5ed7, 0x5ece, 0x5edc,
- 0x5ed5, 0x5ed9, 0x5ed2, 0x5ed4, 0x5f44, 0x5f43, 0x5f6f, 0x5fb6,
- 0x612c, 0x6128, 0x6141, 0x615e, 0x6171, 0x6173, 0x6152, 0x6153,
- 0x6172, 0x616c, 0x6180, 0x6174, 0x6154, 0x617a, 0x615b, 0x6165,
- 0x613b, 0x616a, 0x6161, 0x6156, 0x6229, 0x6227, 0x622b, 0x642b,
- 0x644d, 0x645b, 0x645d, 0x6474, 0x6476, 0x6472, 0x6473, 0x647d,
- 0x6475, 0x6466, 0x64a6, 0x644e, 0x6482, 0x645e, 0x645c, 0x644b,
- 0x6453, 0x6460, 0x6450, 0x647f, 0x643f, 0x646c, 0x646b, 0x6459,
- 0x6465, 0x6477, 0x6573, 0x65a0, 0x66a1, 0x66a0, 0x669f, 0x6705,
- 0x6704, 0x6722, 0x69b1, 0x69b6, 0x69c9,
- /* 0xe2 */
- 0x69a0, 0x69ce, 0x6996, 0x69b0, 0x69ac, 0x69bc, 0x6991, 0x6999,
- 0x698e, 0x69a7, 0x698d, 0x69a9, 0x69be, 0x69af, 0x69bf, 0x69c4,
- 0x69bd, 0x69a4, 0x69d4, 0x69b9, 0x69ca, 0x699a, 0x69cf, 0x69b3,
- 0x6993, 0x69aa, 0x69a1, 0x699e, 0x69d9, 0x6997, 0x6990, 0x69c2,
- 0x69b5, 0x69a5, 0x69c6, 0x6b4a, 0x6b4d, 0x6b4b, 0x6b9e, 0x6b9f,
- 0x6ba0, 0x6bc3, 0x6bc4, 0x6bfe, 0x6ece, 0x6ef5, 0x6ef1, 0x6f03,
- 0x6f25, 0x6ef8, 0x6f37, 0x6efb, 0x6f2e, 0x6f09, 0x6f4e, 0x6f19,
- 0x6f1a, 0x6f27, 0x6f18, 0x6f3b, 0x6f12, 0x6eed, 0x6f0a, 0x6f36,
- 0x6f73, 0x6ef9, 0x6eee, 0x6f2d, 0x6f40, 0x6f30, 0x6f3c, 0x6f35,
- 0x6eeb, 0x6f07, 0x6f0e, 0x6f43, 0x6f05, 0x6efd, 0x6ef6, 0x6f39,
- 0x6f1c, 0x6efc, 0x6f3a, 0x6f1f, 0x6f0d, 0x6f1e, 0x6f08, 0x6f21,
- 0x7187, 0x7190, 0x7189, 0x7180, 0x7185, 0x7182, 0x718f, 0x717b,
- 0x7186, 0x7181, 0x7197, 0x7244, 0x7253, 0x7297, 0x7295, 0x7293,
- 0x7343, 0x734d, 0x7351, 0x734c, 0x7462, 0x7473, 0x7471, 0x7475,
- 0x7472, 0x7467, 0x746e, 0x7500, 0x7502, 0x7503, 0x757d, 0x7590,
- 0x7616, 0x7608, 0x760c, 0x7615, 0x7611, 0x760a, 0x7614, 0x76b8,
- 0x7781, 0x777c, 0x7785, 0x7782, 0x776e, 0x7780, 0x776f, 0x777e,
- 0x7783, 0x78b2, 0x78aa, 0x78b4, 0x78ad, 0x78a8, 0x787e, 0x78ab,
- 0x789e, 0x78a5, 0x78a0, 0x78ac, 0x78a2, 0x78a4, 0x7998, 0x798a,
- 0x798b, 0x7996, 0x7995, 0x7994, 0x7993,
- /* 0xe3 */
- 0x7997, 0x7988, 0x7992, 0x7990, 0x7a2b, 0x7a4a, 0x7a30, 0x7a2f,
- 0x7a28, 0x7a26, 0x7aa8, 0x7aab, 0x7aac, 0x7aee, 0x7b88, 0x7b9c,
- 0x7b8a, 0x7b91, 0x7b90, 0x7b96, 0x7b8d, 0x7b8c, 0x7b9b, 0x7b8e,
- 0x7b85, 0x7b98, 0x5284, 0x7b99, 0x7ba4, 0x7b82, 0x7cbb, 0x7cbf,
- 0x7cbc, 0x7cba, 0x7da7, 0x7db7, 0x7dc2, 0x7da3, 0x7daa, 0x7dc1,
- 0x7dc0, 0x7dc5, 0x7d9d, 0x7dce, 0x7dc4, 0x7dc6, 0x7dcb, 0x7dcc,
- 0x7daf, 0x7db9, 0x7d96, 0x7dbc, 0x7d9f, 0x7da6, 0x7dae, 0x7da9,
- 0x7da1, 0x7dc9, 0x7f73, 0x7fe2, 0x7fe3, 0x7fe5, 0x7fde, 0x8024,
- 0x805d, 0x805c, 0x8189, 0x8186, 0x8183, 0x8187, 0x818d, 0x818c,
- 0x818b, 0x8215, 0x8497, 0x84a4, 0x84a1, 0x849f, 0x84ba, 0x84ce,
- 0x84c2, 0x84ac, 0x84ae, 0x84ab, 0x84b9, 0x84b4, 0x84c1, 0x84cd,
- 0x84aa, 0x849a, 0x84b1, 0x84d0, 0x849d, 0x84a7, 0x84bb, 0x84a2,
- 0x8494, 0x84c7, 0x84cc, 0x849b, 0x84a9, 0x84af, 0x84a8, 0x84d6,
- 0x8498, 0x84b6, 0x84cf, 0x84a0, 0x84d7, 0x84d4, 0x84d2, 0x84db,
- 0x84b0, 0x8491, 0x8661, 0x8733, 0x8723, 0x8728, 0x876b, 0x8740,
- 0x872e, 0x871e, 0x8721, 0x8719, 0x871b, 0x8743, 0x872c, 0x8741,
- 0x873e, 0x8746, 0x8720, 0x8732, 0x872a, 0x872d, 0x873c, 0x8712,
- 0x873a, 0x8731, 0x8735, 0x8742, 0x8726, 0x8727, 0x8738, 0x8724,
- 0x871a, 0x8730, 0x8711, 0x88f7, 0x88e7, 0x88f1, 0x88f2, 0x88fa,
- 0x88fe, 0x88ee, 0x88fc, 0x88f6, 0x88fb,
- /* 0xe4 */
- 0x88f0, 0x88ec, 0x88eb, 0x899d, 0x89a1, 0x899f, 0x899e, 0x89e9,
- 0x89eb, 0x89e8, 0x8aab, 0x8a99, 0x8a8b, 0x8a92, 0x8a8f, 0x8a96,
- 0x8c3d, 0x8c68, 0x8c69, 0x8cd5, 0x8ccf, 0x8cd7, 0x8d96, 0x8e09,
- 0x8e02, 0x8dff, 0x8e0d, 0x8dfd, 0x8e0a, 0x8e03, 0x8e07, 0x8e06,
- 0x8e05, 0x8dfe, 0x8e00, 0x8e04, 0x8f10, 0x8f11, 0x8f0e, 0x8f0d,
- 0x9123, 0x911c, 0x9120, 0x9122, 0x911f, 0x911d, 0x911a, 0x9124,
- 0x9121, 0x911b, 0x917a, 0x9172, 0x9179, 0x9173, 0x92a5, 0x92a4,
- 0x9276, 0x929b, 0x927a, 0x92a0, 0x9294, 0x92aa, 0x928d, 0x92a6,
- 0x929a, 0x92ab, 0x9279, 0x9297, 0x927f, 0x92a3, 0x92ee, 0x928e,
- 0x9282, 0x9295, 0x92a2, 0x927d, 0x9288, 0x92a1, 0x928a, 0x9286,
- 0x928c, 0x9299, 0x92a7, 0x927e, 0x9287, 0x92a9, 0x929d, 0x928b,
- 0x922d, 0x969e, 0x96a1, 0x96ff, 0x9758, 0x977d, 0x977a, 0x977e,
- 0x9783, 0x9780, 0x9782, 0x977b, 0x9784, 0x9781, 0x977f, 0x97ce,
- 0x97cd, 0x9816, 0x98ad, 0x98ae, 0x9902, 0x9900, 0x9907, 0x999d,
- 0x999c, 0x99c3, 0x99b9, 0x99bb, 0x99ba, 0x99c2, 0x99bd, 0x99c7,
- 0x9ab1, 0x9ae3, 0x9ae7, 0x9b3e, 0x9b3f, 0x9b60, 0x9b61, 0x9b5f,
- 0x9cf1, 0x9cf2, 0x9cf5, 0x9ea7, 0x50ff, 0x5103, 0x5130, 0x50f8,
- 0x5106, 0x5107, 0x50f6, 0x50fe, 0x510b, 0x510c, 0x50fd, 0x510a,
- 0x528b, 0x528c, 0x52f1, 0x52ef, 0x5648, 0x5642, 0x564c, 0x5635,
- 0x5641, 0x564a, 0x5649, 0x5646, 0x5658,
- /* 0xe5 */
- 0x565a, 0x5640, 0x5633, 0x563d, 0x562c, 0x563e, 0x5638, 0x562a,
- 0x563a, 0x571a, 0x58ab, 0x589d, 0x58b1, 0x58a0, 0x58a3, 0x58af,
- 0x58ac, 0x58a5, 0x58a1, 0x58ff, 0x5aff, 0x5af4, 0x5afd, 0x5af7,
- 0x5af6, 0x5b03, 0x5af8, 0x5b02, 0x5af9, 0x5b01, 0x5b07, 0x5b05,
- 0x5b0f, 0x5c67, 0x5d99, 0x5d97, 0x5d9f, 0x5d92, 0x5da2, 0x5d93,
- 0x5d95, 0x5da0, 0x5d9c, 0x5da1, 0x5d9a, 0x5d9e, 0x5e69, 0x5e5d,
- 0x5e60, 0x5e5c, 0x7df3, 0x5edb, 0x5ede, 0x5ee1, 0x5f49, 0x5fb2,
- 0x618b, 0x6183, 0x6179, 0x61b1, 0x61b0, 0x61a2, 0x6189, 0x619b,
- 0x6193, 0x61af, 0x61ad, 0x619f, 0x6192, 0x61aa, 0x61a1, 0x618d,
- 0x6166, 0x61b3, 0x622d, 0x646e, 0x6470, 0x6496, 0x64a0, 0x6485,
- 0x6497, 0x649c, 0x648f, 0x648b, 0x648a, 0x648c, 0x64a3, 0x649f,
- 0x6468, 0x64b1, 0x6498, 0x6576, 0x657a, 0x6579, 0x657b, 0x65b2,
- 0x65b3, 0x66b5, 0x66b0, 0x66a9, 0x66b2, 0x66b7, 0x66aa, 0x66af,
- 0x6a00, 0x6a06, 0x6a17, 0x69e5, 0x69f8, 0x6a15, 0x69f1, 0x69e4,
- 0x6a20, 0x69ff, 0x69ec, 0x69e2, 0x6a1b, 0x6a1d, 0x69fe, 0x6a27,
- 0x69f2, 0x69ee, 0x6a14, 0x69f7, 0x69e7, 0x6a40, 0x6a08, 0x69e6,
- 0x69fb, 0x6a0d, 0x69fc, 0x69eb, 0x6a09, 0x6a04, 0x6a18, 0x6a25,
- 0x6a0f, 0x69f6, 0x6a26, 0x6a07, 0x69f4, 0x6a16, 0x6b51, 0x6ba5,
- 0x6ba3, 0x6ba2, 0x6ba6, 0x6c01, 0x6c00, 0x6bff, 0x6c02, 0x6f41,
- 0x6f26, 0x6f7e, 0x6f87, 0x6fc6, 0x6f92,
- /* 0xe6 */
- 0x6f8d, 0x6f89, 0x6f8c, 0x6f62, 0x6f4f, 0x6f85, 0x6f5a, 0x6f96,
- 0x6f76, 0x6f6c, 0x6f82, 0x6f55, 0x6f72, 0x6f52, 0x6f50, 0x6f57,
- 0x6f94, 0x6f93, 0x6f5d, 0x6f00, 0x6f61, 0x6f6b, 0x6f7d, 0x6f67,
- 0x6f90, 0x6f53, 0x6f8b, 0x6f69, 0x6f7f, 0x6f95, 0x6f63, 0x6f77,
- 0x6f6a, 0x6f7b, 0x71b2, 0x71af, 0x719b, 0x71b0, 0x71a0, 0x719a,
- 0x71a9, 0x71b5, 0x719d, 0x71a5, 0x719e, 0x71a4, 0x71a1, 0x71aa,
- 0x719c, 0x71a7, 0x71b3, 0x7298, 0x729a, 0x7358, 0x7352, 0x735e,
- 0x735f, 0x7360, 0x735d, 0x735b, 0x7361, 0x735a, 0x7359, 0x7362,
- 0x7487, 0x7489, 0x748a, 0x7486, 0x7481, 0x747d, 0x7485, 0x7488,
- 0x747c, 0x7479, 0x7508, 0x7507, 0x757e, 0x7625, 0x761e, 0x7619,
- 0x761d, 0x761c, 0x7623, 0x761a, 0x7628, 0x761b, 0x769c, 0x769d,
- 0x769e, 0x769b, 0x778d, 0x778f, 0x7789, 0x7788, 0x78cd, 0x78bb,
- 0x78cf, 0x78cc, 0x78d1, 0x78ce, 0x78d4, 0x78c8, 0x78c3, 0x78c4,
- 0x78c9, 0x799a, 0x79a1, 0x79a0, 0x799c, 0x79a2, 0x799b, 0x6b76,
- 0x7a39, 0x7ab2, 0x7ab4, 0x7ab3, 0x7bb7, 0x7bcb, 0x7bbe, 0x7bac,
- 0x7bce, 0x7baf, 0x7bb9, 0x7bca, 0x7bb5, 0x7cc5, 0x7cc8, 0x7ccc,
- 0x7ccb, 0x7df7, 0x7ddb, 0x7dea, 0x7de7, 0x7dd7, 0x7de1, 0x7e03,
- 0x7dfa, 0x7de6, 0x7df6, 0x7df1, 0x7df0, 0x7dee, 0x7ddf, 0x7f76,
- 0x7fac, 0x7fb0, 0x7fad, 0x7fed, 0x7feb, 0x7fea, 0x7fec, 0x7fe6,
- 0x7fe8, 0x8064, 0x8067, 0x81a3, 0x819f,
- /* 0xe7 */
- 0x819e, 0x8195, 0x81a2, 0x8199, 0x8197, 0x8216, 0x824f, 0x8253,
- 0x8252, 0x8250, 0x824e, 0x8251, 0x8524, 0x853b, 0x850f, 0x8500,
- 0x8529, 0x850e, 0x8509, 0x850d, 0x851f, 0x850a, 0x8527, 0x851c,
- 0x84fb, 0x852b, 0x84fa, 0x8508, 0x850c, 0x84f4, 0x852a, 0x84f2,
- 0x8515, 0x84f7, 0x84eb, 0x84f3, 0x84fc, 0x8512, 0x84ea, 0x84e9,
- 0x8516, 0x84fe, 0x8528, 0x851d, 0x852e, 0x8502, 0x84fd, 0x851e,
- 0x84f6, 0x8531, 0x8526, 0x84e7, 0x84e8, 0x84f0, 0x84ef, 0x84f9,
- 0x8518, 0x8520, 0x8530, 0x850b, 0x8519, 0x852f, 0x8662, 0x8756,
- 0x8763, 0x8764, 0x8777, 0x87e1, 0x8773, 0x8758, 0x8754, 0x875b,
- 0x8752, 0x8761, 0x875a, 0x8751, 0x875e, 0x876d, 0x876a, 0x8750,
- 0x874e, 0x875f, 0x875d, 0x876f, 0x876c, 0x877a, 0x876e, 0x875c,
- 0x8765, 0x874f, 0x877b, 0x8775, 0x8762, 0x8767, 0x8769, 0x885a,
- 0x8905, 0x890c, 0x8914, 0x890b, 0x8917, 0x8918, 0x8919, 0x8906,
- 0x8916, 0x8911, 0x890e, 0x8909, 0x89a2, 0x89a4, 0x89a3, 0x89ed,
- 0x89f0, 0x89ec, 0x8acf, 0x8ac6, 0x8ab8, 0x8ad3, 0x8ad1, 0x8ad4,
- 0x8ad5, 0x8abb, 0x8ad7, 0x8abe, 0x8ac0, 0x8ac5, 0x8ad8, 0x8ac3,
- 0x8aba, 0x8abd, 0x8ad9, 0x8c3e, 0x8c4d, 0x8c8f, 0x8ce5, 0x8cdf,
- 0x8cd9, 0x8ce8, 0x8cda, 0x8cdd, 0x8ce7, 0x8da0, 0x8d9c, 0x8da1,
- 0x8d9b, 0x8e20, 0x8e23, 0x8e25, 0x8e24, 0x8e2e, 0x8e15, 0x8e1b,
- 0x8e16, 0x8e11, 0x8e19, 0x8e26, 0x8e27,
- /* 0xe8 */
- 0x8e14, 0x8e12, 0x8e18, 0x8e13, 0x8e1c, 0x8e17, 0x8e1a, 0x8f2c,
- 0x8f24, 0x8f18, 0x8f1a, 0x8f20, 0x8f23, 0x8f16, 0x8f17, 0x9073,
- 0x9070, 0x906f, 0x9067, 0x906b, 0x912f, 0x912b, 0x9129, 0x912a,
- 0x9132, 0x9126, 0x912e, 0x9185, 0x9186, 0x918a, 0x9181, 0x9182,
- 0x9184, 0x9180, 0x92d0, 0x92c3, 0x92c4, 0x92c0, 0x92d9, 0x92b6,
- 0x92cf, 0x92f1, 0x92df, 0x92d8, 0x92e9, 0x92d7, 0x92dd, 0x92cc,
- 0x92ef, 0x92c2, 0x92e8, 0x92ca, 0x92c8, 0x92ce, 0x92e6, 0x92cd,
- 0x92d5, 0x92c9, 0x92e0, 0x92de, 0x92e7, 0x92d1, 0x92d3, 0x92b5,
- 0x92e1, 0x92c6, 0x92b4, 0x957c, 0x95ac, 0x95ab, 0x95ae, 0x95b0,
- 0x96a4, 0x96a2, 0x96d3, 0x9705, 0x9708, 0x9702, 0x975a, 0x978a,
- 0x978e, 0x9788, 0x97d0, 0x97cf, 0x981e, 0x981d, 0x9826, 0x9829,
- 0x9828, 0x9820, 0x981b, 0x9827, 0x98b2, 0x9908, 0x98fa, 0x9911,
- 0x9914, 0x9916, 0x9917, 0x9915, 0x99dc, 0x99cd, 0x99cf, 0x99d3,
- 0x99d4, 0x99ce, 0x99c9, 0x99d6, 0x99d8, 0x99cb, 0x99d7, 0x99cc,
- 0x9ab3, 0x9aec, 0x9aeb, 0x9af3, 0x9af2, 0x9af1, 0x9b46, 0x9b43,
- 0x9b67, 0x9b74, 0x9b71, 0x9b66, 0x9b76, 0x9b75, 0x9b70, 0x9b68,
- 0x9b64, 0x9b6c, 0x9cfc, 0x9cfa, 0x9cfd, 0x9cff, 0x9cf7, 0x9d07,
- 0x9d00, 0x9cf9, 0x9cfb, 0x9d08, 0x9d05, 0x9d04, 0x9e83, 0x9ed3,
- 0x9f0f, 0x9f10, 0x511c, 0x5113, 0x5117, 0x511a, 0x5111, 0x51de,
- 0x5334, 0x53e1, 0x5670, 0x5660, 0x566e,
- /* 0xe9 */
- 0x5673, 0x5666, 0x5663, 0x566d, 0x5672, 0x565e, 0x5677, 0x571c,
- 0x571b, 0x58c8, 0x58bd, 0x58c9, 0x58bf, 0x58ba, 0x58c2, 0x58bc,
- 0x58c6, 0x5b17, 0x5b19, 0x5b1b, 0x5b21, 0x5b14, 0x5b13, 0x5b10,
- 0x5b16, 0x5b28, 0x5b1a, 0x5b20, 0x5b1e, 0x5bef, 0x5dac, 0x5db1,
- 0x5da9, 0x5da7, 0x5db5, 0x5db0, 0x5dae, 0x5daa, 0x5da8, 0x5db2,
- 0x5dad, 0x5daf, 0x5db4, 0x5e67, 0x5e68, 0x5e66, 0x5e6f, 0x5ee9,
- 0x5ee7, 0x5ee6, 0x5ee8, 0x5ee5, 0x5f4b, 0x5fbc, 0x619d, 0x61a8,
- 0x6196, 0x61c5, 0x61b4, 0x61c6, 0x61c1, 0x61cc, 0x61ba, 0x61bf,
- 0x61b8, 0x618c, 0x64d7, 0x64d6, 0x64d0, 0x64cf, 0x64c9, 0x64bd,
- 0x6489, 0x64c3, 0x64db, 0x64f3, 0x64d9, 0x6533, 0x657f, 0x657c,
- 0x65a2, 0x66c8, 0x66be, 0x66c0, 0x66ca, 0x66cb, 0x66cf, 0x66bd,
- 0x66bb, 0x66ba, 0x66cc, 0x6723, 0x6a34, 0x6a66, 0x6a49, 0x6a67,
- 0x6a32, 0x6a68, 0x6a3e, 0x6a5d, 0x6a6d, 0x6a76, 0x6a5b, 0x6a51,
- 0x6a28, 0x6a5a, 0x6a3b, 0x6a3f, 0x6a41, 0x6a6a, 0x6a64, 0x6a50,
- 0x6a4f, 0x6a54, 0x6a6f, 0x6a69, 0x6a60, 0x6a3c, 0x6a5e, 0x6a56,
- 0x6a55, 0x6a4d, 0x6a4e, 0x6a46, 0x6b55, 0x6b54, 0x6b56, 0x6ba7,
- 0x6baa, 0x6bab, 0x6bc8, 0x6bc7, 0x6c04, 0x6c03, 0x6c06, 0x6fad,
- 0x6fcb, 0x6fa3, 0x6fc7, 0x6fbc, 0x6fce, 0x6fc8, 0x6f5e, 0x6fc4,
- 0x6fbd, 0x6f9e, 0x6fca, 0x6fa8, 0x7004, 0x6fa5, 0x6fae, 0x6fba,
- 0x6fac, 0x6faa, 0x6fcf, 0x6fbf, 0x6fb8,
- /* 0xea */
- 0x6fa2, 0x6fc9, 0x6fab, 0x6fcd, 0x6faf, 0x6fb2, 0x6fb0, 0x71c5,
- 0x71c2, 0x71bf, 0x71b8, 0x71d6, 0x71c0, 0x71c1, 0x71cb, 0x71d4,
- 0x71ca, 0x71c7, 0x71cf, 0x71bd, 0x71d8, 0x71bc, 0x71c6, 0x71da,
- 0x71db, 0x729d, 0x729e, 0x7369, 0x7366, 0x7367, 0x736c, 0x7365,
- 0x736b, 0x736a, 0x747f, 0x749a, 0x74a0, 0x7494, 0x7492, 0x7495,
- 0x74a1, 0x750b, 0x7580, 0x762f, 0x762d, 0x7631, 0x763d, 0x7633,
- 0x763c, 0x7635, 0x7632, 0x7630, 0x76bb, 0x76e6, 0x779a, 0x779d,
- 0x77a1, 0x779c, 0x779b, 0x77a2, 0x77a3, 0x7795, 0x7799, 0x7797,
- 0x78dd, 0x78e9, 0x78e5, 0x78ea, 0x78de, 0x78e3, 0x78db, 0x78e1,
- 0x78e2, 0x78ed, 0x78df, 0x78e0, 0x79a4, 0x7a44, 0x7a48, 0x7a47,
- 0x7ab6, 0x7ab8, 0x7ab5, 0x7ab1, 0x7ab7, 0x7bde, 0x7be3, 0x7be7,
- 0x7bdd, 0x7bd5, 0x7be5, 0x7bda, 0x7be8, 0x7bf9, 0x7bd4, 0x7bea,
- 0x7be2, 0x7bdc, 0x7beb, 0x7bd8, 0x7bdf, 0x7cd2, 0x7cd4, 0x7cd7,
- 0x7cd0, 0x7cd1, 0x7e12, 0x7e21, 0x7e17, 0x7e0c, 0x7e1f, 0x7e20,
- 0x7e13, 0x7e0e, 0x7e1c, 0x7e15, 0x7e1a, 0x7e22, 0x7e0b, 0x7e0f,
- 0x7e16, 0x7e0d, 0x7e14, 0x7e25, 0x7e24, 0x7f43, 0x7f7b, 0x7f7c,
- 0x7f7a, 0x7fb1, 0x7fef, 0x802a, 0x8029, 0x806c, 0x81b1, 0x81a6,
- 0x81ae, 0x81b9, 0x81b5, 0x81ab, 0x81b0, 0x81ac, 0x81b4, 0x81b2,
- 0x81b7, 0x81a7, 0x81f2, 0x8255, 0x8256, 0x8257, 0x8556, 0x8545,
- 0x856b, 0x854d, 0x8553, 0x8561, 0x8558,
- /* 0xeb */
- 0x8540, 0x8546, 0x8564, 0x8541, 0x8562, 0x8544, 0x8551, 0x8547,
- 0x8563, 0x853e, 0x855b, 0x8571, 0x854e, 0x856e, 0x8575, 0x8555,
- 0x8567, 0x8560, 0x858c, 0x8566, 0x855d, 0x8554, 0x8565, 0x856c,
- 0x8663, 0x8665, 0x8664, 0x879b, 0x878f, 0x8797, 0x8793, 0x8792,
- 0x8788, 0x8781, 0x8796, 0x8798, 0x8779, 0x8787, 0x87a3, 0x8785,
- 0x8790, 0x8791, 0x879d, 0x8784, 0x8794, 0x879c, 0x879a, 0x8789,
- 0x891e, 0x8926, 0x8930, 0x892d, 0x892e, 0x8927, 0x8931, 0x8922,
- 0x8929, 0x8923, 0x892f, 0x892c, 0x891f, 0x89f1, 0x8ae0, 0x8ae2,
- 0x8af2, 0x8af4, 0x8af5, 0x8add, 0x8b14, 0x8ae4, 0x8adf, 0x8af0,
- 0x8ac8, 0x8ade, 0x8ae1, 0x8ae8, 0x8aff, 0x8aef, 0x8afb, 0x8c91,
- 0x8c92, 0x8c90, 0x8cf5, 0x8cee, 0x8cf1, 0x8cf0, 0x8cf3, 0x8d6c,
- 0x8d6e, 0x8da5, 0x8da7, 0x8e33, 0x8e3e, 0x8e38, 0x8e40, 0x8e45,
- 0x8e36, 0x8e3c, 0x8e3d, 0x8e41, 0x8e30, 0x8e3f, 0x8ebd, 0x8f36,
- 0x8f2e, 0x8f35, 0x8f32, 0x8f39, 0x8f37, 0x8f34, 0x9076, 0x9079,
- 0x907b, 0x9086, 0x90fa, 0x9133, 0x9135, 0x9136, 0x9193, 0x9190,
- 0x9191, 0x918d, 0x918f, 0x9327, 0x931e, 0x9308, 0x931f, 0x9306,
- 0x930f, 0x937a, 0x9338, 0x933c, 0x931b, 0x9323, 0x9312, 0x9301,
- 0x9346, 0x932d, 0x930e, 0x930d, 0x92cb, 0x931d, 0x92fa, 0x9325,
- 0x9313, 0x92f9, 0x92f7, 0x9334, 0x9302, 0x9324, 0x92ff, 0x9329,
- 0x9339, 0x9335, 0x932a, 0x9314, 0x930c,
- /* 0xec */
- 0x930b, 0x92fe, 0x9309, 0x9300, 0x92fb, 0x9316, 0x95bc, 0x95cd,
- 0x95be, 0x95b9, 0x95ba, 0x95b6, 0x95bf, 0x95b5, 0x95bd, 0x96a9,
- 0x96d4, 0x970b, 0x9712, 0x9710, 0x9799, 0x9797, 0x9794, 0x97f0,
- 0x97f8, 0x9835, 0x982f, 0x9832, 0x9924, 0x991f, 0x9927, 0x9929,
- 0x999e, 0x99ee, 0x99ec, 0x99e5, 0x99e4, 0x99f0, 0x99e3, 0x99ea,
- 0x99e9, 0x99e7, 0x9ab9, 0x9abf, 0x9ab4, 0x9abb, 0x9af6, 0x9afa,
- 0x9af9, 0x9af7, 0x9b33, 0x9b80, 0x9b85, 0x9b87, 0x9b7c, 0x9b7e,
- 0x9b7b, 0x9b82, 0x9b93, 0x9b92, 0x9b90, 0x9b7a, 0x9b95, 0x9b7d,
- 0x9b88, 0x9d25, 0x9d17, 0x9d20, 0x9d1e, 0x9d14, 0x9d29, 0x9d1d,
- 0x9d18, 0x9d22, 0x9d10, 0x9d19, 0x9d1f, 0x9e88, 0x9e86, 0x9e87,
- 0x9eae, 0x9ead, 0x9ed5, 0x9ed6, 0x9efa, 0x9f12, 0x9f3d, 0x5126,
- 0x5125, 0x5122, 0x5124, 0x5120, 0x5129, 0x52f4, 0x5693, 0x568c,
- 0x568d, 0x5686, 0x5684, 0x5683, 0x567e, 0x5682, 0x567f, 0x5681,
- 0x58d6, 0x58d4, 0x58cf, 0x58d2, 0x5b2d, 0x5b25, 0x5b32, 0x5b23,
- 0x5b2c, 0x5b27, 0x5b26, 0x5b2f, 0x5b2e, 0x5b7b, 0x5bf1, 0x5bf2,
- 0x5db7, 0x5e6c, 0x5e6a, 0x5fbe, 0x5fbb, 0x61c3, 0x61b5, 0x61bc,
- 0x61e7, 0x61e0, 0x61e5, 0x61e4, 0x61e8, 0x61de, 0x64ef, 0x64e9,
- 0x64e3, 0x64eb, 0x64e4, 0x64e8, 0x6581, 0x6580, 0x65b6, 0x65da,
- 0x66d2, 0x6a8d, 0x6a96, 0x6a81, 0x6aa5, 0x6a89, 0x6a9f, 0x6a9b,
- 0x6aa1, 0x6a9e, 0x6a87, 0x6a93, 0x6a8e,
- /* 0xed */
- 0x6a95, 0x6a83, 0x6aa8, 0x6aa4, 0x6a91, 0x6a7f, 0x6aa6, 0x6a9a,
- 0x6a85, 0x6a8c, 0x6a92, 0x6b5b, 0x6bad, 0x6c09, 0x6fcc, 0x6fa9,
- 0x6ff4, 0x6fd4, 0x6fe3, 0x6fdc, 0x6fed, 0x6fe7, 0x6fe6, 0x6fde,
- 0x6ff2, 0x6fdd, 0x6fe2, 0x6fe8, 0x71e1, 0x71f1, 0x71e8, 0x71f2,
- 0x71e4, 0x71f0, 0x71e2, 0x7373, 0x736e, 0x736f, 0x7497, 0x74b2,
- 0x74ab, 0x7490, 0x74aa, 0x74ad, 0x74b1, 0x74a5, 0x74af, 0x7510,
- 0x7511, 0x7512, 0x750f, 0x7584, 0x7643, 0x7648, 0x7649, 0x7647,
- 0x76a4, 0x76e9, 0x77b5, 0x77ab, 0x77b2, 0x77b7, 0x77b6, 0x77b4,
- 0x77b1, 0x77a8, 0x77f0, 0x78f3, 0x78fd, 0x7902, 0x78fb, 0x78fc,
- 0x78f2, 0x7905, 0x78f9, 0x78fe, 0x7904, 0x79ab, 0x79a8, 0x7a5c,
- 0x7a5b, 0x7a56, 0x7a58, 0x7a54, 0x7a5a, 0x7abe, 0x7ac0, 0x7ac1,
- 0x7c05, 0x7c0f, 0x7bf2, 0x7c00, 0x7bff, 0x7bfb, 0x7c0e, 0x7bf4,
- 0x7c0b, 0x7bf3, 0x7c02, 0x7c09, 0x7c03, 0x7c01, 0x7bf8, 0x7bfd,
- 0x7c06, 0x7bf0, 0x7bf1, 0x7c10, 0x7c0a, 0x7ce8, 0x7e2d, 0x7e3c,
- 0x7e42, 0x7e33, 0x9848, 0x7e38, 0x7e2a, 0x7e49, 0x7e40, 0x7e47,
- 0x7e29, 0x7e4c, 0x7e30, 0x7e3b, 0x7e36, 0x7e44, 0x7e3a, 0x7f45,
- 0x7f7f, 0x7f7e, 0x7f7d, 0x7ff4, 0x7ff2, 0x802c, 0x81bb, 0x81c4,
- 0x81cc, 0x81ca, 0x81c5, 0x81c7, 0x81bc, 0x81e9, 0x825b, 0x825a,
- 0x825c, 0x8583, 0x8580, 0x858f, 0x85a7, 0x8595, 0x85a0, 0x858b,
- 0x85a3, 0x857b, 0x85a4, 0x859a, 0x859e,
- /* 0xee */
- 0x8577, 0x857c, 0x8589, 0x85a1, 0x857a, 0x8578, 0x8557, 0x858e,
- 0x8596, 0x8586, 0x858d, 0x8599, 0x859d, 0x8581, 0x85a2, 0x8582,
- 0x8588, 0x8585, 0x8579, 0x8576, 0x8598, 0x8590, 0x859f, 0x8668,
- 0x87be, 0x87aa, 0x87ad, 0x87c5, 0x87b0, 0x87ac, 0x87b9, 0x87b5,
- 0x87bc, 0x87ae, 0x87c9, 0x87c3, 0x87c2, 0x87cc, 0x87b7, 0x87af,
- 0x87c4, 0x87ca, 0x87b4, 0x87b6, 0x87bf, 0x87b8, 0x87bd, 0x87de,
- 0x87b2, 0x8935, 0x8933, 0x893c, 0x893e, 0x8941, 0x8952, 0x8937,
- 0x8942, 0x89ad, 0x89af, 0x89ae, 0x89f2, 0x89f3, 0x8b1e, 0x8b18,
- 0x8b16, 0x8b11, 0x8b05, 0x8b0b, 0x8b22, 0x8b0f, 0x8b12, 0x8b15,
- 0x8b07, 0x8b0d, 0x8b08, 0x8b06, 0x8b1c, 0x8b13, 0x8b1a, 0x8c4f,
- 0x8c70, 0x8c72, 0x8c71, 0x8c6f, 0x8c95, 0x8c94, 0x8cf9, 0x8d6f,
- 0x8e4e, 0x8e4d, 0x8e53, 0x8e50, 0x8e4c, 0x8e47, 0x8f43, 0x8f40,
- 0x9085, 0x907e, 0x9138, 0x919a, 0x91a2, 0x919b, 0x9199, 0x919f,
- 0x91a1, 0x919d, 0x91a0, 0x93a1, 0x9383, 0x93af, 0x9364, 0x9356,
- 0x9347, 0x937c, 0x9358, 0x935c, 0x9376, 0x9349, 0x9350, 0x9351,
- 0x9360, 0x936d, 0x938f, 0x934c, 0x936a, 0x9379, 0x9357, 0x9355,
- 0x9352, 0x934f, 0x9371, 0x9377, 0x937b, 0x9361, 0x935e, 0x9363,
- 0x9367, 0x9380, 0x934e, 0x9359, 0x95c7, 0x95c0, 0x95c9, 0x95c3,
- 0x95c5, 0x95b7, 0x96ae, 0x96b0, 0x96ac, 0x9720, 0x971f, 0x9718,
- 0x971d, 0x9719, 0x979a, 0x97a1, 0x979c,
- /* 0xef */
- 0x979e, 0x979d, 0x97d5, 0x97d4, 0x97f1, 0x9841, 0x9844, 0x984a,
- 0x9849, 0x9845, 0x9843, 0x9925, 0x992b, 0x992c, 0x992a, 0x9933,
- 0x9932, 0x992f, 0x992d, 0x9931, 0x9930, 0x9998, 0x99a3, 0x99a1,
- 0x9a02, 0x99fa, 0x99f4, 0x99f7, 0x99f9, 0x99f8, 0x99f6, 0x99fb,
- 0x99fd, 0x99fe, 0x99fc, 0x9a03, 0x9abe, 0x9afe, 0x9afd, 0x9b01,
- 0x9afc, 0x9b48, 0x9b9a, 0x9ba8, 0x9b9e, 0x9b9b, 0x9ba6, 0x9ba1,
- 0x9ba5, 0x9ba4, 0x9b86, 0x9ba2, 0x9ba0, 0x9baf, 0x9d33, 0x9d41,
- 0x9d67, 0x9d36, 0x9d2e, 0x9d2f, 0x9d31, 0x9d38, 0x9d30, 0x9d45,
- 0x9d42, 0x9d43, 0x9d3e, 0x9d37, 0x9d40, 0x9d3d, 0x7ff5, 0x9d2d,
- 0x9e8a, 0x9e89, 0x9e8d, 0x9eb0, 0x9ec8, 0x9eda, 0x9efb, 0x9eff,
- 0x9f24, 0x9f23, 0x9f22, 0x9f54, 0x9fa0, 0x5131, 0x512d, 0x512e,
- 0x5698, 0x569c, 0x5697, 0x569a, 0x569d, 0x5699, 0x5970, 0x5b3c,
- 0x5c69, 0x5c6a, 0x5dc0, 0x5e6d, 0x5e6e, 0x61d8, 0x61df, 0x61ed,
- 0x61ee, 0x61f1, 0x61ea, 0x61f0, 0x61eb, 0x61d6, 0x61e9, 0x64ff,
- 0x6504, 0x64fd, 0x64f8, 0x6501, 0x6503, 0x64fc, 0x6594, 0x65db,
- 0x66da, 0x66db, 0x66d8, 0x6ac5, 0x6ab9, 0x6abd, 0x6ae1, 0x6ac6,
- 0x6aba, 0x6ab6, 0x6ab7, 0x6ac7, 0x6ab4, 0x6aad, 0x6b5e, 0x6bc9,
- 0x6c0b, 0x7007, 0x700c, 0x700d, 0x7001, 0x7005, 0x7014, 0x700e,
- 0x6fff, 0x7000, 0x6ffb, 0x7026, 0x6ffc, 0x6ff7, 0x700a, 0x7201,
- 0x71ff, 0x71f9, 0x7203, 0x71fd, 0x7376,
- /* 0xf0 */
- 0x74b8, 0x74c0, 0x74b5, 0x74c1, 0x74be, 0x74b6, 0x74bb, 0x74c2,
- 0x7514, 0x7513, 0x765c, 0x7664, 0x7659, 0x7650, 0x7653, 0x7657,
- 0x765a, 0x76a6, 0x76bd, 0x76ec, 0x77c2, 0x77ba, 0x78ff, 0x790c,
- 0x7913, 0x7914, 0x7909, 0x7910, 0x7912, 0x7911, 0x79ad, 0x79ac,
- 0x7a5f, 0x7c1c, 0x7c29, 0x7c19, 0x7c20, 0x7c1f, 0x7c2d, 0x7c1d,
- 0x7c26, 0x7c28, 0x7c22, 0x7c25, 0x7c30, 0x7e5c, 0x7e50, 0x7e56,
- 0x7e63, 0x7e58, 0x7e62, 0x7e5f, 0x7e51, 0x7e60, 0x7e57, 0x7e53,
- 0x7fb5, 0x7fb3, 0x7ff7, 0x7ff8, 0x8075, 0x81d1, 0x81d2, 0x81d0,
- 0x825f, 0x825e, 0x85b4, 0x85c6, 0x85c0, 0x85c3, 0x85c2, 0x85b3,
- 0x85b5, 0x85bd, 0x85c7, 0x85c4, 0x85bf, 0x85cb, 0x85ce, 0x85c8,
- 0x85c5, 0x85b1, 0x85b6, 0x85d2, 0x8624, 0x85b8, 0x85b7, 0x85be,
- 0x8669, 0x87e7, 0x87e6, 0x87e2, 0x87db, 0x87eb, 0x87ea, 0x87e5,
- 0x87df, 0x87f3, 0x87e4, 0x87d4, 0x87dc, 0x87d3, 0x87ed, 0x87d8,
- 0x87e3, 0x87a4, 0x87d7, 0x87d9, 0x8801, 0x87f4, 0x87e8, 0x87dd,
- 0x8953, 0x894b, 0x894f, 0x894c, 0x8946, 0x8950, 0x8951, 0x8949,
- 0x8b2a, 0x8b27, 0x8b23, 0x8b33, 0x8b30, 0x8b35, 0x8b47, 0x8b2f,
- 0x8b3c, 0x8b3e, 0x8b31, 0x8b25, 0x8b37, 0x8b26, 0x8b36, 0x8b2e,
- 0x8b24, 0x8b3b, 0x8b3d, 0x8b3a, 0x8c42, 0x8c75, 0x8c99, 0x8c98,
- 0x8c97, 0x8cfe, 0x8d04, 0x8d02, 0x8d00, 0x8e5c, 0x8e62, 0x8e60,
- 0x8e57, 0x8e56, 0x8e5e, 0x8e65, 0x8e67,
- /* 0xf1 */
- 0x8e5b, 0x8e5a, 0x8e61, 0x8e5d, 0x8e69, 0x8e54, 0x8f46, 0x8f47,
- 0x8f48, 0x8f4b, 0x9128, 0x913a, 0x913b, 0x913e, 0x91a8, 0x91a5,
- 0x91a7, 0x91af, 0x91aa, 0x93b5, 0x938c, 0x9392, 0x93b7, 0x939b,
- 0x939d, 0x9389, 0x93a7, 0x938e, 0x93aa, 0x939e, 0x93a6, 0x9395,
- 0x9388, 0x9399, 0x939f, 0x938d, 0x93b1, 0x9391, 0x93b2, 0x93a4,
- 0x93a8, 0x93b4, 0x93a3, 0x93a5, 0x95d2, 0x95d3, 0x95d1, 0x96b3,
- 0x96d7, 0x96da, 0x5dc2, 0x96df, 0x96d8, 0x96dd, 0x9723, 0x9722,
- 0x9725, 0x97ac, 0x97ae, 0x97a8, 0x97ab, 0x97a4, 0x97aa, 0x97a2,
- 0x97a5, 0x97d7, 0x97d9, 0x97d6, 0x97d8, 0x97fa, 0x9850, 0x9851,
- 0x9852, 0x98b8, 0x9941, 0x993c, 0x993a, 0x9a0f, 0x9a0b, 0x9a09,
- 0x9a0d, 0x9a04, 0x9a11, 0x9a0a, 0x9a05, 0x9a07, 0x9a06, 0x9ac0,
- 0x9adc, 0x9b08, 0x9b04, 0x9b05, 0x9b29, 0x9b35, 0x9b4a, 0x9b4c,
- 0x9b4b, 0x9bc7, 0x9bc6, 0x9bc3, 0x9bbf, 0x9bc1, 0x9bb5, 0x9bb8,
- 0x9bd3, 0x9bb6, 0x9bc4, 0x9bb9, 0x9bbd, 0x9d5c, 0x9d53, 0x9d4f,
- 0x9d4a, 0x9d5b, 0x9d4b, 0x9d59, 0x9d56, 0x9d4c, 0x9d57, 0x9d52,
- 0x9d54, 0x9d5f, 0x9d58, 0x9d5a, 0x9e8e, 0x9e8c, 0x9edf, 0x9f01,
- 0x9f00, 0x9f16, 0x9f25, 0x9f2b, 0x9f2a, 0x9f29, 0x9f28, 0x9f4c,
- 0x9f55, 0x5134, 0x5135, 0x5296, 0x52f7, 0x53b4, 0x56ab, 0x56ad,
- 0x56a6, 0x56a7, 0x56aa, 0x56ac, 0x58da, 0x58dd, 0x58db, 0x5912,
- 0x5b3d, 0x5b3e, 0x5b3f, 0x5dc3, 0x5e70,
- /* 0xf2 */
- 0x5fbf, 0x61fb, 0x6507, 0x6510, 0x650d, 0x6509, 0x650c, 0x650e,
- 0x6584, 0x65de, 0x65dd, 0x66de, 0x6ae7, 0x6ae0, 0x6acc, 0x6ad1,
- 0x6ad9, 0x6acb, 0x6adf, 0x6adc, 0x6ad0, 0x6aeb, 0x6acf, 0x6acd,
- 0x6ade, 0x6b60, 0x6bb0, 0x6c0c, 0x7019, 0x7027, 0x7020, 0x7016,
- 0x702b, 0x7021, 0x7022, 0x7023, 0x7029, 0x7017, 0x7024, 0x701c,
- 0x702a, 0x720c, 0x720a, 0x7207, 0x7202, 0x7205, 0x72a5, 0x72a6,
- 0x72a4, 0x72a3, 0x72a1, 0x74cb, 0x74c5, 0x74b7, 0x74c3, 0x7516,
- 0x7660, 0x77c9, 0x77ca, 0x77c4, 0x77f1, 0x791d, 0x791b, 0x7921,
- 0x791c, 0x7917, 0x791e, 0x79b0, 0x7a67, 0x7a68, 0x7c33, 0x7c3c,
- 0x7c39, 0x7c2c, 0x7c3b, 0x7cec, 0x7cea, 0x7e76, 0x7e75, 0x7e78,
- 0x7e70, 0x7e77, 0x7e6f, 0x7e7a, 0x7e72, 0x7e74, 0x7e68, 0x7f4b,
- 0x7f4a, 0x7f83, 0x7f86, 0x7fb7, 0x7ffd, 0x7ffe, 0x8078, 0x81d7,
- 0x81d5, 0x8264, 0x8261, 0x8263, 0x85eb, 0x85f1, 0x85ed, 0x85d9,
- 0x85e1, 0x85e8, 0x85da, 0x85d7, 0x85ec, 0x85f2, 0x85f8, 0x85d8,
- 0x85df, 0x85e3, 0x85dc, 0x85d1, 0x85f0, 0x85e6, 0x85ef, 0x85de,
- 0x85e2, 0x8800, 0x87fa, 0x8803, 0x87f6, 0x87f7, 0x8809, 0x880c,
- 0x880b, 0x8806, 0x87fc, 0x8808, 0x87ff, 0x880a, 0x8802, 0x8962,
- 0x895a, 0x895b, 0x8957, 0x8961, 0x895c, 0x8958, 0x895d, 0x8959,
- 0x8988, 0x89b7, 0x89b6, 0x89f6, 0x8b50, 0x8b48, 0x8b4a, 0x8b40,
- 0x8b53, 0x8b56, 0x8b54, 0x8b4b, 0x8b55,
- /* 0xf3 */
- 0x8b51, 0x8b42, 0x8b52, 0x8b57, 0x8c43, 0x8c77, 0x8c76, 0x8c9a,
- 0x8d06, 0x8d07, 0x8d09, 0x8dac, 0x8daa, 0x8dad, 0x8dab, 0x8e6d,
- 0x8e78, 0x8e73, 0x8e6a, 0x8e6f, 0x8e7b, 0x8ec2, 0x8f52, 0x8f51,
- 0x8f4f, 0x8f50, 0x8f53, 0x8fb4, 0x9140, 0x913f, 0x91b0, 0x91ad,
- 0x93de, 0x93c7, 0x93cf, 0x93c2, 0x93da, 0x93d0, 0x93f9, 0x93ec,
- 0x93cc, 0x93d9, 0x93a9, 0x93e6, 0x93ca, 0x93d4, 0x93ee, 0x93e3,
- 0x93d5, 0x93c4, 0x93ce, 0x93c0, 0x93d2, 0x93e7, 0x957d, 0x95da,
- 0x95db, 0x96e1, 0x9729, 0x972b, 0x972c, 0x9728, 0x9726, 0x97b3,
- 0x97b7, 0x97b6, 0x97dd, 0x97de, 0x97df, 0x985c, 0x9859, 0x985d,
- 0x9857, 0x98bf, 0x98bd, 0x98bb, 0x98be, 0x9948, 0x9947, 0x9943,
- 0x99a6, 0x99a7, 0x9a1a, 0x9a15, 0x9a25, 0x9a1d, 0x9a24, 0x9a1b,
- 0x9a22, 0x9a20, 0x9a27, 0x9a23, 0x9a1e, 0x9a1c, 0x9a14, 0x9ac2,
- 0x9b0b, 0x9b0a, 0x9b0e, 0x9b0c, 0x9b37, 0x9bea, 0x9beb, 0x9be0,
- 0x9bde, 0x9be4, 0x9be6, 0x9be2, 0x9bf0, 0x9bd4, 0x9bd7, 0x9bec,
- 0x9bdc, 0x9bd9, 0x9be5, 0x9bd5, 0x9be1, 0x9bda, 0x9d77, 0x9d81,
- 0x9d8a, 0x9d84, 0x9d88, 0x9d71, 0x9d80, 0x9d78, 0x9d86, 0x9d8b,
- 0x9d8c, 0x9d7d, 0x9d6b, 0x9d74, 0x9d75, 0x9d70, 0x9d69, 0x9d85,
- 0x9d73, 0x9d7b, 0x9d82, 0x9d6f, 0x9d79, 0x9d7f, 0x9d87, 0x9d68,
- 0x9e94, 0x9e91, 0x9ec0, 0x9efc, 0x9f2d, 0x9f40, 0x9f41, 0x9f4d,
- 0x9f56, 0x9f57, 0x9f58, 0x5337, 0x56b2,
- /* 0xf4 */
- 0x56b5, 0x56b3, 0x58e3, 0x5b45, 0x5dc6, 0x5dc7, 0x5eee, 0x5eef,
- 0x5fc0, 0x5fc1, 0x61f9, 0x6517, 0x6516, 0x6515, 0x6513, 0x65df,
- 0x66e8, 0x66e3, 0x66e4, 0x6af3, 0x6af0, 0x6aea, 0x6ae8, 0x6af9,
- 0x6af1, 0x6aee, 0x6aef, 0x703c, 0x7035, 0x702f, 0x7037, 0x7034,
- 0x7031, 0x7042, 0x7038, 0x703f, 0x703a, 0x7039, 0x7040, 0x703b,
- 0x7033, 0x7041, 0x7213, 0x7214, 0x72a8, 0x737d, 0x737c, 0x74ba,
- 0x76ab, 0x76aa, 0x76be, 0x76ed, 0x77cc, 0x77ce, 0x77cf, 0x77cd,
- 0x77f2, 0x7925, 0x7923, 0x7927, 0x7928, 0x7924, 0x7929, 0x79b2,
- 0x7a6e, 0x7a6c, 0x7a6d, 0x7af7, 0x7c49, 0x7c48, 0x7c4a, 0x7c47,
- 0x7c45, 0x7cee, 0x7e7b, 0x7e7e, 0x7e81, 0x7e80, 0x7fba, 0x7fff,
- 0x8079, 0x81db, 0x81d9, 0x820b, 0x8268, 0x8269, 0x8622, 0x85ff,
- 0x8601, 0x85fe, 0x861b, 0x8600, 0x85f6, 0x8604, 0x8609, 0x8605,
- 0x860c, 0x85fd, 0x8819, 0x8810, 0x8811, 0x8817, 0x8813, 0x8816,
- 0x8963, 0x8966, 0x89b9, 0x89f7, 0x8b60, 0x8b6a, 0x8b5d, 0x8b68,
- 0x8b63, 0x8b65, 0x8b67, 0x8b6d, 0x8dae, 0x8e86, 0x8e88, 0x8e84,
- 0x8f59, 0x8f56, 0x8f57, 0x8f55, 0x8f58, 0x8f5a, 0x908d, 0x9143,
- 0x9141, 0x91b7, 0x91b5, 0x91b2, 0x91b3, 0x940b, 0x9413, 0x93fb,
- 0x9420, 0x940f, 0x9414, 0x93fe, 0x9415, 0x9410, 0x9428, 0x9419,
- 0x940d, 0x93f5, 0x9400, 0x93f7, 0x9407, 0x940e, 0x9416, 0x9412,
- 0x93fa, 0x9409, 0x93f8, 0x940a, 0x93ff,
- /* 0xf5 */
- 0x93fc, 0x940c, 0x93f6, 0x9411, 0x9406, 0x95de, 0x95e0, 0x95df,
- 0x972e, 0x972f, 0x97b9, 0x97bb, 0x97fd, 0x97fe, 0x9860, 0x9862,
- 0x9863, 0x985f, 0x98c1, 0x98c2, 0x9950, 0x994e, 0x9959, 0x994c,
- 0x994b, 0x9953, 0x9a32, 0x9a34, 0x9a31, 0x9a2c, 0x9a2a, 0x9a36,
- 0x9a29, 0x9a2e, 0x9a38, 0x9a2d, 0x9ac7, 0x9aca, 0x9ac6, 0x9b10,
- 0x9b12, 0x9b11, 0x9c0b, 0x9c08, 0x9bf7, 0x9c05, 0x9c12, 0x9bf8,
- 0x9c40, 0x9c07, 0x9c0e, 0x9c06, 0x9c17, 0x9c14, 0x9c09, 0x9d9f,
- 0x9d99, 0x9da4, 0x9d9d, 0x9d92, 0x9d98, 0x9d90, 0x9d9b, 0x9da0,
- 0x9d94, 0x9d9c, 0x9daa, 0x9d97, 0x9da1, 0x9d9a, 0x9da2, 0x9da8,
- 0x9d9e, 0x9da3, 0x9dbf, 0x9da9, 0x9d96, 0x9da6, 0x9da7, 0x9e99,
- 0x9e9b, 0x9e9a, 0x9ee5, 0x9ee4, 0x9ee7, 0x9ee6, 0x9f30, 0x9f2e,
- 0x9f5b, 0x9f60, 0x9f5e, 0x9f5d, 0x9f59, 0x9f91, 0x513a, 0x5139,
- 0x5298, 0x5297, 0x56c3, 0x56bd, 0x56be, 0x5b48, 0x5b47, 0x5dcb,
- 0x5dcf, 0x5ef1, 0x61fd, 0x651b, 0x6b02, 0x6afc, 0x6b03, 0x6af8,
- 0x6b00, 0x7043, 0x7044, 0x704a, 0x7048, 0x7049, 0x7045, 0x7046,
- 0x721d, 0x721a, 0x7219, 0x737e, 0x7517, 0x766a, 0x77d0, 0x792d,
- 0x7931, 0x792f, 0x7c54, 0x7c53, 0x7cf2, 0x7e8a, 0x7e87, 0x7e88,
- 0x7e8b, 0x7e86, 0x7e8d, 0x7f4d, 0x7fbb, 0x8030, 0x81dd, 0x8618,
- 0x862a, 0x8626, 0x861f, 0x8623, 0x861c, 0x8619, 0x8627, 0x862e,
- 0x8621, 0x8620, 0x8629, 0x861e, 0x8625,
- /* 0xf6 */
- 0x8829, 0x881d, 0x881b, 0x8820, 0x8824, 0x881c, 0x882b, 0x884a,
- 0x896d, 0x8969, 0x896e, 0x896b, 0x89fa, 0x8b79, 0x8b78, 0x8b45,
- 0x8b7a, 0x8b7b, 0x8d10, 0x8d14, 0x8daf, 0x8e8e, 0x8e8c, 0x8f5e,
- 0x8f5b, 0x8f5d, 0x9146, 0x9144, 0x9145, 0x91b9, 0x943f, 0x943b,
- 0x9436, 0x9429, 0x943d, 0x943c, 0x9430, 0x9439, 0x942a, 0x9437,
- 0x942c, 0x9440, 0x9431, 0x95e5, 0x95e4, 0x95e3, 0x9735, 0x973a,
- 0x97bf, 0x97e1, 0x9864, 0x98c9, 0x98c6, 0x98c0, 0x9958, 0x9956,
- 0x9a39, 0x9a3d, 0x9a46, 0x9a44, 0x9a42, 0x9a41, 0x9a3a, 0x9a3f,
- 0x9acd, 0x9b15, 0x9b17, 0x9b18, 0x9b16, 0x9b3a, 0x9b52, 0x9c2b,
- 0x9c1d, 0x9c1c, 0x9c2c, 0x9c23, 0x9c28, 0x9c29, 0x9c24, 0x9c21,
- 0x9db7, 0x9db6, 0x9dbc, 0x9dc1, 0x9dc7, 0x9dca, 0x9dcf, 0x9dbe,
- 0x9dc5, 0x9dc3, 0x9dbb, 0x9db5, 0x9dce, 0x9db9, 0x9dba, 0x9dac,
- 0x9dc8, 0x9db1, 0x9dad, 0x9dcc, 0x9db3, 0x9dcd, 0x9db2, 0x9e7a,
- 0x9e9c, 0x9eeb, 0x9eee, 0x9eed, 0x9f1b, 0x9f18, 0x9f1a, 0x9f31,
- 0x9f4e, 0x9f65, 0x9f64, 0x9f92, 0x4eb9, 0x56c6, 0x56c5, 0x56cb,
- 0x5971, 0x5b4b, 0x5b4c, 0x5dd5, 0x5dd1, 0x5ef2, 0x6521, 0x6520,
- 0x6526, 0x6522, 0x6b0b, 0x6b08, 0x6b09, 0x6c0d, 0x7055, 0x7056,
- 0x7057, 0x7052, 0x721e, 0x721f, 0x72a9, 0x737f, 0x74d8, 0x74d5,
- 0x74d9, 0x74d7, 0x766d, 0x76ad, 0x7935, 0x79b4, 0x7a70, 0x7a71,
- 0x7c57, 0x7c5c, 0x7c59, 0x7c5b, 0x7c5a,
- /* 0xf7 */
- 0x7cf4, 0x7cf1, 0x7e91, 0x7f4f, 0x7f87, 0x81de, 0x826b, 0x8634,
- 0x8635, 0x8633, 0x862c, 0x8632, 0x8636, 0x882c, 0x8828, 0x8826,
- 0x882a, 0x8825, 0x8971, 0x89bf, 0x89be, 0x89fb, 0x8b7e, 0x8b84,
- 0x8b82, 0x8b86, 0x8b85, 0x8b7f, 0x8d15, 0x8e95, 0x8e94, 0x8e9a,
- 0x8e92, 0x8e90, 0x8e96, 0x8e97, 0x8f60, 0x8f62, 0x9147, 0x944c,
- 0x9450, 0x944a, 0x944b, 0x944f, 0x9447, 0x9445, 0x9448, 0x9449,
- 0x9446, 0x973f, 0x97e3, 0x986a, 0x9869, 0x98cb, 0x9954, 0x995b,
- 0x9a4e, 0x9a53, 0x9a54, 0x9a4c, 0x9a4f, 0x9a48, 0x9a4a, 0x9a49,
- 0x9a52, 0x9a50, 0x9ad0, 0x9b19, 0x9b2b, 0x9b3b, 0x9b56, 0x9b55,
- 0x9c46, 0x9c48, 0x9c3f, 0x9c44, 0x9c39, 0x9c33, 0x9c41, 0x9c3c,
- 0x9c37, 0x9c34, 0x9c32, 0x9c3d, 0x9c36, 0x9ddb, 0x9dd2, 0x9dde,
- 0x9dda, 0x9dcb, 0x9dd0, 0x9ddc, 0x9dd1, 0x9ddf, 0x9de9, 0x9dd9,
- 0x9dd8, 0x9dd6, 0x9df5, 0x9dd5, 0x9ddd, 0x9eb6, 0x9ef0, 0x9f35,
- 0x9f33, 0x9f32, 0x9f42, 0x9f6b, 0x9f95, 0x9fa2, 0x513d, 0x5299,
- 0x58e8, 0x58e7, 0x5972, 0x5b4d, 0x5dd8, 0x882f, 0x5f4f, 0x6201,
- 0x6203, 0x6204, 0x6529, 0x6525, 0x6596, 0x66eb, 0x6b11, 0x6b12,
- 0x6b0f, 0x6bca, 0x705b, 0x705a, 0x7222, 0x7382, 0x7381, 0x7383,
- 0x7670, 0x77d4, 0x7c67, 0x7c66, 0x7e95, 0x826c, 0x863a, 0x8640,
- 0x8639, 0x863c, 0x8631, 0x863b, 0x863e, 0x8830, 0x8832, 0x882e,
- 0x8833, 0x8976, 0x8974, 0x8973, 0x89fe,
- /* 0xf8 */
- 0x8b8c, 0x8b8e, 0x8b8b, 0x8b88, 0x8c45, 0x8d19, 0x8e98, 0x8f64,
- 0x8f63, 0x91bc, 0x9462, 0x9455, 0x945d, 0x9457, 0x945e, 0x97c4,
- 0x97c5, 0x9800, 0x9a56, 0x9a59, 0x9b1e, 0x9b1f, 0x9b20, 0x9c52,
- 0x9c58, 0x9c50, 0x9c4a, 0x9c4d, 0x9c4b, 0x9c55, 0x9c59, 0x9c4c,
- 0x9c4e, 0x9dfb, 0x9df7, 0x9def, 0x9de3, 0x9deb, 0x9df8, 0x9de4,
- 0x9df6, 0x9de1, 0x9dee, 0x9de6, 0x9df2, 0x9df0, 0x9de2, 0x9dec,
- 0x9df4, 0x9df3, 0x9de8, 0x9ded, 0x9ec2, 0x9ed0, 0x9ef2, 0x9ef3,
- 0x9f06, 0x9f1c, 0x9f38, 0x9f37, 0x9f36, 0x9f43, 0x9f4f, 0x9f71,
- 0x9f70, 0x9f6e, 0x9f6f, 0x56d3, 0x56cd, 0x5b4e, 0x5c6d, 0x652d,
- 0x66ed, 0x66ee, 0x6b13, 0x705f, 0x7061, 0x705d, 0x7060, 0x7223,
- 0x74db, 0x74e5, 0x77d5, 0x7938, 0x79b7, 0x79b6, 0x7c6a, 0x7e97,
- 0x7f89, 0x826d, 0x8643, 0x8838, 0x8837, 0x8835, 0x884b, 0x8b94,
- 0x8b95, 0x8e9e, 0x8e9f, 0x8ea0, 0x8e9d, 0x91be, 0x91bd, 0x91c2,
- 0x946b, 0x9468, 0x9469, 0x96e5, 0x9746, 0x9743, 0x9747, 0x97c7,
- 0x97e5, 0x9a5e, 0x9ad5, 0x9b59, 0x9c63, 0x9c67, 0x9c66, 0x9c62,
- 0x9c5e, 0x9c60, 0x9e02, 0x9dfe, 0x9e07, 0x9e03, 0x9e06, 0x9e05,
- 0x9e00, 0x9e01, 0x9e09, 0x9dff, 0x9dfd, 0x9e04, 0x9ea0, 0x9f1e,
- 0x9f46, 0x9f74, 0x9f75, 0x9f76, 0x56d4, 0x652e, 0x65b8, 0x6b18,
- 0x6b19, 0x6b17, 0x6b1a, 0x7062, 0x7226, 0x72aa, 0x77d8, 0x77d9,
- 0x7939, 0x7c69, 0x7c6b, 0x7cf6, 0x7e9a,
- /* 0xf9 */
- 0x7e98, 0x7e9b, 0x7e99, 0x81e0, 0x81e1, 0x8646, 0x8647, 0x8648,
- 0x8979, 0x897a, 0x897c, 0x897b, 0x89ff, 0x8b98, 0x8b99, 0x8ea5,
- 0x8ea4, 0x8ea3, 0x946e, 0x946d, 0x946f, 0x9471, 0x9473, 0x9749,
- 0x9872, 0x995f, 0x9c68, 0x9c6e, 0x9c6d, 0x9e0b, 0x9e0d, 0x9e10,
- 0x9e0f, 0x9e12, 0x9e11, 0x9ea1, 0x9ef5, 0x9f09, 0x9f47, 0x9f78,
- 0x9f7b, 0x9f7a, 0x9f79, 0x571e, 0x7066, 0x7c6f, 0x883c, 0x8db2,
- 0x8ea6, 0x91c3, 0x9474, 0x9478, 0x9476, 0x9475, 0x9a60, 0x9c74,
- 0x9c73, 0x9c71, 0x9c75, 0x9e14, 0x9e13, 0x9ef6, 0x9f0a, 0x9fa4,
- 0x7068, 0x7065, 0x7cf7, 0x866a, 0x883e, 0x883d, 0x883f, 0x8b9e,
- 0x8c9c, 0x8ea9, 0x8ec9, 0x974b, 0x9873, 0x9874, 0x98cc, 0x9961,
- 0x99ab, 0x9a64, 0x9a66, 0x9a67, 0x9b24, 0x9e15, 0x9e17, 0x9f48,
- 0x6207, 0x6b1e, 0x7227, 0x864c, 0x8ea8, 0x9482, 0x9480, 0x9481,
- 0x9a69, 0x9a68, 0x9b2e, 0x9e19, 0x7229, 0x864b, 0x8b9f, 0x9483,
- 0x9c79, 0x9eb7, 0x7675, 0x9a6b, 0x9c7a, 0x9e1d, 0x7069, 0x706a,
- 0x9ea4, 0x9f7e, 0x9f49, 0x9f98,
-};
-
-static int
-big5_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n)
-{
- unsigned char c1 = s[0];
- if ((c1 >= 0xa1 && c1 <= 0xc7) || (c1 >= 0xc9 && c1 <= 0xf9)) {
- if (n >= 2) {
- unsigned char c2 = s[1];
- if ((c2 >= 0x40 && c2 < 0x7f) || (c2 >= 0xa1 && c2 < 0xff)) {
- unsigned int i = 157 * (c1 - 0xa1) + (c2 - (c2 >= 0xa1 ? 0x62 : 0x40));
- unsigned short wc = 0xfffd;
- if (i < 6280) {
- if (i < 6121)
- wc = big5_2uni_pagea1[i];
- } else {
- if (i < 13932)
- wc = big5_2uni_pagec9[i-6280];
- }
- if (wc != 0xfffd) {
- *pwc = (ucs4_t) wc;
- return 2;
- }
- }
- return RET_ILSEQ;
- }
- return RET_TOOFEW(0);
- }
- return RET_ILSEQ;
-}
-
-static const unsigned short big5_2charset[13703] = {
- 0xa246, 0xa247, 0xa244, 0xa1b1, 0xa258, 0xa1d3, 0xa150, 0xa1d1,
- 0xa1d2, 0xa3be, 0xa3bc, 0xa3bd, 0xa3bf, 0xa3bb, 0xa344, 0xa345,
- 0xa346, 0xa347, 0xa348, 0xa349, 0xa34a, 0xa34b, 0xa34c, 0xa34d,
- 0xa34e, 0xa34f, 0xa350, 0xa351, 0xa352, 0xa353, 0xa354, 0xa355,
- 0xa356, 0xa357, 0xa358, 0xa359, 0xa35a, 0xa35b, 0xa35c, 0xa35d,
- 0xa35e, 0xa35f, 0xa360, 0xa361, 0xa362, 0xa363, 0xa364, 0xa365,
- 0xa366, 0xa367, 0xa368, 0xa369, 0xa36a, 0xa36b, 0xa36c, 0xa36d,
- 0xa36e, 0xa36f, 0xa370, 0xa371, 0xa372, 0xa373, 0xc7b3, 0xc7b1,
- 0xc7b2, 0xc7b4, 0xc7b5, 0xc7b6, 0xc7b7, 0xc7b8, 0xc7b9, 0xc7ba,
- 0xc7bb, 0xc7bc, 0xc7bd, 0xc7be, 0xc7bf, 0xc7c0, 0xc7c1, 0xc7c2,
- 0xc7c3, 0xc7c4, 0xc7c5, 0xc7c6, 0xc7c7, 0xc7c8, 0xc7c9, 0xc7ca,
- 0xc7cb, 0xc7cc, 0xc7cd, 0xc7cf, 0xc7d0, 0xc7d1, 0xc7d2, 0xc7d3,
- 0xc7d4, 0xc7d5, 0xc7d6, 0xc7d7, 0xc7d8, 0xc7d9, 0xc7da, 0xc7db,
- 0xc7dc, 0xc7dd, 0xc7de, 0xc7df, 0xc7e0, 0xc7e1, 0xc7e2, 0xc7e3,
- 0xc7e4, 0xc7e5, 0xc7e6, 0xc7e7, 0xc7e8, 0xc7ce, 0xa156, 0xa158,
- 0xa1a5, 0xa1a6, 0xa1a7, 0xa1a8, 0xa145, 0xa14c, 0xa14b, 0xa1ac,
- 0xa1ab, 0xa1b0, 0xa1c2, 0xa24a, 0xa1c1, 0xa24b, 0xa2b9, 0xa2ba,
- 0xa2bb, 0xa2bc, 0xa2bd, 0xa2be, 0xa2bf, 0xa2c0, 0xa2c1, 0xa2c2,
- 0xa1f6, 0xa1f4, 0xa1f7, 0xa1f5, 0xa1f8, 0xa1f9, 0xa1fb, 0xa1fa,
- 0xa1d4, 0xa1db, 0xa1e8, 0xa1e7, 0xa1fd, 0xa1fc, 0xa1e4, 0xa1e5,
- 0xa1ec, 0xa1ed, 0xa1ef, 0xa1ee, 0xa1e3, 0xa1dc, 0xa1da, 0xa1dd,
- 0xa1d8, 0xa1d9, 0xa1e6, 0xa1e9, 0xc7e9, 0xc7ea, 0xc7eb, 0xc7ec,
- 0xc7ed, 0xc7ee, 0xc7ef, 0xc7f0, 0xc7f1, 0xc7f2, 0xc7f3, 0xc7f4,
- 0xc7f5, 0xc7f6, 0xc7f7, 0xc7f8, 0xc7f9, 0xc7fa, 0xc7fb, 0xc7fc,
- 0xa277, 0xa278, 0xa27a, 0xa27b, 0xa27c, 0xa27d, 0xa275, 0xa274,
- 0xa273, 0xa272, 0xa271, 0xa2a4, 0xa2a5, 0xa2a7, 0xa2a6, 0xa27e,
- 0xa2a1, 0xa2a3, 0xa2a2, 0xa2ac, 0xa2ad, 0xa2ae, 0xa262, 0xa263,
- 0xa264, 0xa265, 0xa266, 0xa267, 0xa268, 0xa269, 0xa270, 0xa26f,
- 0xa26e, 0xa26d, 0xa26c, 0xa26b, 0xa26a, 0xa276, 0xa279, 0xa1bd,
- 0xa1bc, 0xa1b6, 0xa1b5, 0xa1bf, 0xa1be, 0xa1bb, 0xa1ba, 0xa1b3,
- 0xa1b7, 0xa1b4, 0xa2a8, 0xa2a9, 0xa2ab, 0xa2aa, 0xa1b9, 0xa1b8,
- 0xa1f3, 0xa1f0, 0xa1f2, 0xa1f1, 0xa140, 0xa142, 0xa143, 0xa1b2,
- 0xc6a4, 0xa171, 0xa172, 0xa16d, 0xa16e, 0xa175, 0xa176, 0xa179,
- 0xa17a, 0xa169, 0xa16a, 0xa245, 0xa165, 0xa166, 0xa1a9, 0xa1aa,
- 0xa2c3, 0xa2c4, 0xa2c5, 0xa2c6, 0xa2c7, 0xa2c8, 0xa2c9, 0xa2ca,
- 0xa2cb, 0xc6a5, 0xc6a6, 0xc6a7, 0xc6a8, 0xc6a9, 0xc6aa, 0xc6ab,
- 0xc6ac, 0xc6ad, 0xc6ae, 0xc6af, 0xc6b0, 0xc6b1, 0xc6b2, 0xc6b3,
- 0xc6b4, 0xc6b5, 0xc6b6, 0xc6b7, 0xc6b8, 0xc6b9, 0xc6ba, 0xc6bb,
- 0xc6bc, 0xc6bd, 0xc6be, 0xc6bf, 0xc6c0, 0xc6c1, 0xc6c2, 0xc6c3,
- 0xc6c4, 0xc6c5, 0xc6c6, 0xc6c7, 0xc6c8, 0xc6c9, 0xc6ca, 0xc6cb,
- 0xc6cc, 0xc6cd, 0xc6ce, 0xc6cf, 0xc6d0, 0xc6d1, 0xc6d2, 0xc6d3,
- 0xc6d4, 0xc6d5, 0xc6d6, 0xc6d7, 0xc6d8, 0xc6d9, 0xc6da, 0xc6db,
- 0xc6dc, 0xc6dd, 0xc6de, 0xc6df, 0xc6e0, 0xc6e1, 0xc6e2, 0xc6e3,
- 0xc6e4, 0xc6e5, 0xc6e6, 0xc6e7, 0xc6e8, 0xc6e9, 0xc6ea, 0xc6eb,
- 0xc6ec, 0xc6ed, 0xc6ee, 0xc6ef, 0xc6f0, 0xc6f1, 0xc6f2, 0xc6f3,
- 0xc6f4, 0xc6f5, 0xc6f6, 0xc6f7, 0xc6a2, 0xc6a3, 0xc6f8, 0xc6f9,
- 0xc6fa, 0xc6fb, 0xc6fc, 0xc6fd, 0xc6fe, 0xc740, 0xc741, 0xc742,
- 0xc743, 0xc744, 0xc745, 0xc746, 0xc747, 0xc748, 0xc749, 0xc74a,
- 0xc74b, 0xc74c, 0xc74d, 0xc74e, 0xc74f, 0xc750, 0xc751, 0xc752,
- 0xc753, 0xc754, 0xc755, 0xc756, 0xc757, 0xc758, 0xc759, 0xc75a,
- 0xc75b, 0xc75c, 0xc75d, 0xc75e, 0xc75f, 0xc760, 0xc761, 0xc762,
- 0xc763, 0xc764, 0xc765, 0xc766, 0xc767, 0xc768, 0xc769, 0xc76a,
- 0xc76b, 0xc76c, 0xc76d, 0xc76e, 0xc76f, 0xc770, 0xc771, 0xc772,
- 0xc773, 0xc774, 0xc775, 0xc776, 0xc777, 0xc778, 0xc779, 0xc77a,
- 0xc77b, 0xc77c, 0xc77d, 0xc77e, 0xc7a1, 0xc7a2, 0xc7a3, 0xc7a4,
- 0xc7a5, 0xc7a6, 0xc7a7, 0xc7a8, 0xc7a9, 0xc7aa, 0xc7ab, 0xc7ac,
- 0xc7ad, 0xc7ae, 0xc7af, 0xc7b0, 0xc6a1, 0xa374, 0xa375, 0xa376,
- 0xa377, 0xa378, 0xa379, 0xa37a, 0xa37b, 0xa37c, 0xa37d, 0xa37e,
- 0xa3a1, 0xa3a2, 0xa3a3, 0xa3a4, 0xa3a5, 0xa3a6, 0xa3a7, 0xa3a8,
- 0xa3a9, 0xa3aa, 0xa3ab, 0xa3ac, 0xa3ad, 0xa3ae, 0xa3af, 0xa3b0,
- 0xa3b1, 0xa3b2, 0xa3b3, 0xa3b4, 0xa3b5, 0xa3b6, 0xa3b7, 0xa3b8,
- 0xa3b9, 0xa3ba, 0xa1c0, 0xa255, 0xa256, 0xa250, 0xa251, 0xa252,
- 0xa254, 0xa257, 0xa253, 0xa1eb, 0xa1ea, 0xa24f, 0xa440, 0xa442,
- 0xa443, 0xc945, 0xa456, 0xa454, 0xa457, 0xa455, 0xc946, 0xa4a3,
- 0xc94f, 0xc94d, 0xa4a2, 0xa4a1, 0xa542, 0xa541, 0xa540, 0xa543,
- 0xa4fe, 0xa5e0, 0xa5e1, 0xa8c3, 0xa458, 0xa4a4, 0xc950, 0xa4a5,
- 0xc963, 0xa6ea, 0xcbb1, 0xa459, 0xa4a6, 0xa544, 0xc964, 0xc940,
- 0xa444, 0xa45b, 0xc947, 0xa45c, 0xa4a7, 0xa545, 0xa547, 0xa546,
- 0xa5e2, 0xa5e3, 0xa8c4, 0xadbc, 0xa441, 0xc941, 0xa445, 0xa45e,
- 0xa45d, 0xa5e4, 0xa8c5, 0xb0ae, 0xd44b, 0xb6c3, 0xdcb1, 0xdcb2,
- 0xa446, 0xa4a9, 0xa8c6, 0xa447, 0xc948, 0xa45f, 0xa4aa, 0xa4ac,
- 0xc951, 0xa4ad, 0xa4ab, 0xa5e5, 0xa8c7, 0xa8c8, 0xab45, 0xa460,
- 0xa4ae, 0xa5e6, 0xa5e8, 0xa5e7, 0xa6eb, 0xa8c9, 0xa8ca, 0xab46,
- 0xab47, 0xadbd, 0xdcb3, 0xf6d6, 0xa448, 0xa4b0, 0xa4af, 0xc952,
- 0xa4b1, 0xa4b7, 0xa4b2, 0xa4b3, 0xc954, 0xc953, 0xa4b5, 0xa4b6,
- 0xa4b4, 0xa54a, 0xa54b, 0xa54c, 0xa54d, 0xa549, 0xa550, 0xc96a,
- 0xc966, 0xc969, 0xa551, 0xa561, 0xc968, 0xa54e, 0xa54f, 0xa548,
- 0xc965, 0xc967, 0xa5f5, 0xc9b0, 0xa5f2, 0xa5f6, 0xc9ba, 0xc9ae,
- 0xa5f3, 0xc9b2, 0xa5f4, 0xa5f7, 0xa5e9, 0xc9b1, 0xa5f8, 0xc9b5,
- 0xc9b9, 0xc9b6, 0xc9b3, 0xa5ea, 0xa5ec, 0xa5f9, 0xa5ee, 0xc9ab,
- 0xa5f1, 0xa5ef, 0xa5f0, 0xc9bb, 0xc9b8, 0xc9af, 0xa5ed, 0xc9ac,
- 0xa5eb, 0xc9b4, 0xc9b7, 0xc9ad, 0xca66, 0xa742, 0xa6f4, 0xca67,
- 0xa6f1, 0xa744, 0xa6f9, 0xa6f8, 0xca5b, 0xa6fc, 0xa6f7, 0xca60,
- 0xca68, 0xca64, 0xa6fa, 0xa6fd, 0xa6ee, 0xa747, 0xca5d, 0xcbbd,
- 0xa6ec, 0xa743, 0xa6ed, 0xa6f5, 0xa6f6, 0xca62, 0xca5e, 0xa6fb,
- 0xa6f3, 0xca5a, 0xa6ef, 0xca65, 0xa745, 0xa748, 0xa6f2, 0xa740,
- 0xa746, 0xa6f0, 0xca63, 0xa741, 0xca69, 0xca5c, 0xa6fe, 0xca5f,
- 0xca61, 0xa8d8, 0xcbbf, 0xcbcb, 0xa8d0, 0xcbcc, 0xa8cb, 0xa8d5,
- 0xa8ce, 0xcbb9, 0xa8d6, 0xcbb8, 0xcbbc, 0xcbc3, 0xcbc1, 0xa8de,
- 0xa8d9, 0xcbb3, 0xcbb5, 0xa8db, 0xa8cf, 0xcbb6, 0xcbc2, 0xcbc9,
- 0xa8d4, 0xcbbb, 0xcbb4, 0xa8d3, 0xcbb7, 0xa8d7, 0xcbba, 0xa8d2,
- 0xa8cd, 0xa8dc, 0xcbc4, 0xa8dd, 0xcbc8, 0xcbc6, 0xcbca, 0xa8da,
- 0xcbbe, 0xcbb2, 0xcbc0, 0xa8d1, 0xcbc5, 0xa8cc, 0xcbc7, 0xab56,
- 0xab4a, 0xcde0, 0xcde8, 0xab49, 0xab51, 0xab5d, 0xcdee, 0xcdec,
- 0xcde7, 0xab4b, 0xcded, 0xcde3, 0xab59, 0xab50, 0xab58, 0xcdde,
- 0xcdea, 0xcde1, 0xab54, 0xcde2, 0xcddd, 0xab5b, 0xab4e, 0xab57,
- 0xab4d, 0xcddf, 0xcde4, 0xcdeb, 0xab55, 0xab52, 0xcde6, 0xab5a,
- 0xcde9, 0xcde5, 0xab4f, 0xab5c, 0xab53, 0xab4c, 0xab48, 0xcdef,
- 0xadd7, 0xadc1, 0xadd1, 0xadd6, 0xd0d0, 0xd0cf, 0xd0d4, 0xd0d5,
- 0xadc4, 0xadcd, 0xadda, 0xadce, 0xd0c9, 0xadc7, 0xd0ca, 0xaddc,
- 0xadd3, 0xadbe, 0xadbf, 0xd0dd, 0xb0bf, 0xadcc, 0xadcb, 0xd0cb,
- 0xadcf, 0xd45b, 0xadc6, 0xd0d6, 0xadd5, 0xadd4, 0xadca, 0xd0ce,
- 0xd0d7, 0xd0c8, 0xadc9, 0xd0d8, 0xadd2, 0xd0cc, 0xadc0, 0xadc3,
- 0xadc2, 0xd0d9, 0xadd0, 0xadc5, 0xadd9, 0xaddb, 0xd0d3, 0xadd8,
- 0xd0db, 0xd0cd, 0xd0dc, 0xd0d1, 0xd0da, 0xd0d2, 0xadc8, 0xd463,
- 0xd457, 0xb0b3, 0xd45c, 0xd462, 0xb0b2, 0xd455, 0xb0b6, 0xd459,
- 0xd452, 0xb0b4, 0xd456, 0xb0b9, 0xb0be, 0xd467, 0xd451, 0xb0ba,
- 0xd466, 0xb0b5, 0xd458, 0xb0b1, 0xd453, 0xd44f, 0xd45d, 0xd450,
- 0xd44e, 0xd45a, 0xd460, 0xd461, 0xb0b7, 0xd85b, 0xd45e, 0xd44d,
- 0xd45f, 0xb0c1, 0xd464, 0xb0c0, 0xd44c, 0xd454, 0xd465, 0xb0bc,
- 0xb0bb, 0xb0b8, 0xb0bd, 0xb0af, 0xb0b0, 0xb3c8, 0xd85e, 0xd857,
- 0xb3c5, 0xd85f, 0xd855, 0xd858, 0xb3c4, 0xd859, 0xb3c7, 0xd85d,
- 0xd853, 0xd852, 0xb3c9, 0xb3ca, 0xb3c6, 0xb3cb, 0xd851, 0xd85c,
- 0xd85a, 0xd854, 0xb3c3, 0xd856, 0xb6ca, 0xb6c4, 0xdcb7, 0xb6cd,
- 0xdcbd, 0xdcc0, 0xb6c6, 0xb6c7, 0xdcba, 0xb6c5, 0xdcc3, 0xb6cb,
- 0xdcc4, 0xdcbf, 0xb6cc, 0xdcb4, 0xb6c9, 0xdcb5, 0xdcbe, 0xdcbc,
- 0xdcb8, 0xb6c8, 0xdcb6, 0xb6ce, 0xdcbb, 0xdcc2, 0xdcb9, 0xdcc1,
- 0xb9b6, 0xb9b3, 0xb9b4, 0xe0f9, 0xe0f1, 0xb9b2, 0xb9af, 0xe0f2,
- 0xb9b1, 0xe0f5, 0xe0f7, 0xe0fe, 0xe0fd, 0xe0f8, 0xb9ae, 0xe0f0,
- 0xb9ac, 0xe0f3, 0xb9b7, 0xe0f6, 0xe0fa, 0xb9b0, 0xb9ad, 0xe0fc,
- 0xe0fb, 0xb9b5, 0xe0f4, 0xbbf8, 0xe4ec, 0xe4e9, 0xbbf9, 0xbbf7,
- 0xe4f0, 0xe4ed, 0xe4e6, 0xbbf6, 0xbbfa, 0xe4e7, 0xbbf5, 0xbbfd,
- 0xe4ea, 0xe4eb, 0xbbfb, 0xbbfc, 0xe4f1, 0xe4ee, 0xe4ef, 0xbeaa,
- 0xe8f8, 0xbea7, 0xe8f5, 0xbea9, 0xbeab, 0xe8f6, 0xbea8, 0xe8f7,
- 0xe8f4, 0xc076, 0xecbd, 0xc077, 0xecbb, 0xecbc, 0xecba, 0xecb9,
- 0xecbe, 0xc075, 0xefb8, 0xefb9, 0xe4e8, 0xefb7, 0xc078, 0xc35f,
- 0xf1eb, 0xf1ec, 0xc4d7, 0xc4d8, 0xf5c1, 0xf5c0, 0xc56c, 0xc56b,
- 0xf7d0, 0xa449, 0xa461, 0xa4b9, 0xa4b8, 0xa553, 0xa552, 0xa5fc,
- 0xa5fb, 0xa5fd, 0xa5fa, 0xa74a, 0xa749, 0xa74b, 0xa8e0, 0xa8df,
- 0xa8e1, 0xab5e, 0xa259, 0xd0de, 0xa25a, 0xb0c2, 0xa25c, 0xa25b,
- 0xd860, 0xa25d, 0xb9b8, 0xa25e, 0xa44a, 0xa4ba, 0xa5fe, 0xa8e2,
- 0xa44b, 0xa4bd, 0xa4bb, 0xa4bc, 0xa640, 0xa74c, 0xa8e4, 0xa8e3,
- 0xa8e5, 0xaddd, 0xbeac, 0xc94e, 0xa554, 0xa555, 0xa641, 0xca6a,
- 0xab60, 0xab5f, 0xd0e0, 0xd0df, 0xb0c3, 0xa4be, 0xc955, 0xcbcd,
- 0xab61, 0xade0, 0xadde, 0xaddf, 0xbead, 0xa556, 0xa642, 0xc9bc,
- 0xa74d, 0xa74e, 0xca6b, 0xcbce, 0xa8e6, 0xcbcf, 0xd0e2, 0xd0e3,
- 0xade3, 0xd0e4, 0xd0e1, 0xade4, 0xade2, 0xade1, 0xd0e5, 0xd468,
- 0xd861, 0xdcc5, 0xe140, 0xbbfe, 0xbeae, 0xe8f9, 0xa44c, 0xa45a,
- 0xb0c4, 0xb3cd, 0xb9b9, 0xc942, 0xa4bf, 0xa559, 0xa557, 0xa558,
- 0xa8e7, 0xa44d, 0xa44e, 0xa462, 0xa4c0, 0xa4c1, 0xa4c2, 0xc9be,
- 0xa55a, 0xc96b, 0xa646, 0xc9bf, 0xa644, 0xa645, 0xc9bd, 0xa647,
- 0xa643, 0xca6c, 0xaaec, 0xca6d, 0xca6e, 0xa750, 0xa74f, 0xa753,
- 0xa751, 0xa752, 0xa8ed, 0xa8ec, 0xcbd4, 0xcbd1, 0xcbd2, 0xcbd0,
- 0xa8ee, 0xa8ea, 0xa8e9, 0xa8eb, 0xa8e8, 0xa8ef, 0xab63, 0xcdf0,
- 0xcbd3, 0xab68, 0xcdf1, 0xab64, 0xab67, 0xab66, 0xab65, 0xab62,
- 0xd0e8, 0xade7, 0xd0eb, 0xade5, 0xd0e7, 0xade8, 0xade6, 0xade9,
- 0xd0e9, 0xd0ea, 0xd0e6, 0xd0ec, 0xb3d1, 0xb0c5, 0xd469, 0xd46b,
- 0xd46a, 0xd46c, 0xb0c6, 0xb3ce, 0xb3cf, 0xb3d0, 0xb6d0, 0xdcc7,
- 0xdcc6, 0xdcc8, 0xdcc9, 0xb6d1, 0xb6cf, 0xe141, 0xe142, 0xb9bb,
- 0xb9ba, 0xe35a, 0xbc40, 0xbc41, 0xbc42, 0xbc44, 0xe4f2, 0xe4f3,
- 0xbc43, 0xbeaf, 0xbeb0, 0xf1ed, 0xf5c3, 0xf5c2, 0xf7d1, 0xa44f,
- 0xa55c, 0xa55b, 0xa648, 0xc9c0, 0xa755, 0xa756, 0xa754, 0xa757,
- 0xca6f, 0xca70, 0xa8f1, 0xcbd5, 0xa8f0, 0xcdf2, 0xab6c, 0xcdf3,
- 0xab6b, 0xab69, 0xab6a, 0xd0ed, 0xb0c7, 0xd46e, 0xb0ca, 0xd46d,
- 0xb1e5, 0xb0c9, 0xb0c8, 0xb3d4, 0xb3d3, 0xb3d2, 0xb6d2, 0xb6d5,
- 0xb6d6, 0xb6d4, 0xb6d3, 0xe143, 0xe144, 0xe4f5, 0xbc45, 0xe4f4,
- 0xbeb1, 0xecbf, 0xc079, 0xf1ee, 0xc455, 0xa463, 0xa4c3, 0xc956,
- 0xa4c4, 0xa4c5, 0xa55d, 0xa55e, 0xa649, 0xca71, 0xcbd6, 0xcbd7,
- 0xab6d, 0xd0ee, 0xb0cc, 0xb0cb, 0xd863, 0xd862, 0xa450, 0xa4c6,
- 0xa55f, 0xb0cd, 0xc943, 0xc96c, 0xa560, 0xc9c2, 0xa64b, 0xa64a,
- 0xc9c1, 0xa758, 0xadea, 0xd46f, 0xb6d7, 0xe145, 0xb9bc, 0xe8fa,
- 0xf3fd, 0xa4c7, 0xcbd8, 0xcdf4, 0xb0d0, 0xb0ce, 0xb0cf, 0xa451,
- 0xa464, 0xa2cd, 0xa4ca, 0xa4c9, 0xa4c8, 0xa563, 0xa562, 0xc96d,
- 0xc9c3, 0xa8f5, 0xa8f2, 0xa8f4, 0xa8f3, 0xab6e, 0xb3d5, 0xa452,
- 0xa4cb, 0xa565, 0xa564, 0xca72, 0xa8f6, 0xc957, 0xa567, 0xa566,
- 0xa64c, 0xa64d, 0xca73, 0xa759, 0xa75a, 0xa8f7, 0xa8f8, 0xa8f9,
- 0xab6f, 0xcdf5, 0xadeb, 0xc944, 0xa4cc, 0xc9c4, 0xca74, 0xca75,
- 0xcbd9, 0xcbda, 0xcdf7, 0xcdf6, 0xcdf9, 0xcdf8, 0xab70, 0xd470,
- 0xaded, 0xd0ef, 0xadec, 0xd864, 0xb3d6, 0xd865, 0xe146, 0xb9bd,
- 0xbc46, 0xf1ef, 0xc958, 0xa568, 0xb0d1, 0xa453, 0xa465, 0xa4ce,
- 0xa4cd, 0xa4cf, 0xa8fb, 0xa8fa, 0xa8fc, 0xab71, 0xadee, 0xe8fb,
- 0xc24f, 0xa466, 0xa56a, 0xa579, 0xa574, 0xa56f, 0xa56e, 0xa575,
- 0xa573, 0xa56c, 0xa57a, 0xa56d, 0xa569, 0xa578, 0xa577, 0xa576,
- 0xa56b, 0xa572, 0xa571, 0xa57b, 0xa570, 0xa653, 0xa659, 0xa655,
- 0xa65b, 0xc9c5, 0xa658, 0xa64e, 0xa651, 0xa654, 0xa650, 0xa657,
- 0xa65a, 0xa64f, 0xa652, 0xa656, 0xa65c, 0xca7e, 0xca7b, 0xa767,
- 0xca7c, 0xa75b, 0xa75d, 0xa775, 0xa770, 0xcaa5, 0xca7d, 0xa75f,
- 0xa761, 0xcaa4, 0xa768, 0xca78, 0xa774, 0xa776, 0xa75c, 0xa76d,
- 0xca76, 0xa773, 0xa764, 0xa76e, 0xa76f, 0xca77, 0xa76c, 0xa76a,
- 0xa76b, 0xa771, 0xcaa1, 0xa75e, 0xa772, 0xcaa3, 0xa766, 0xa763,
- 0xca7a, 0xa762, 0xcaa6, 0xa765, 0xa769, 0xa760, 0xcaa2, 0xca79,
- 0xcbeb, 0xcbea, 0xa94f, 0xcbed, 0xcbef, 0xcbe4, 0xcbe7, 0xcbee,
- 0xa950, 0xcbe1, 0xcbe5, 0xcbe9, 0xce49, 0xa94b, 0xce4d, 0xa8fd,
- 0xcbe6, 0xa8fe, 0xa94c, 0xa945, 0xa941, 0xcbe2, 0xa944, 0xa949,
- 0xa952, 0xcbe3, 0xcbdc, 0xa943, 0xcbdd, 0xcbdf, 0xa946, 0xa948,
- 0xcbdb, 0xcbe0, 0xa951, 0xa94d, 0xcbe8, 0xa953, 0xa94a, 0xcbde,
- 0xa947, 0xa942, 0xa940, 0xcbec, 0xa94e, 0xce48, 0xcdfb, 0xce4b,
- 0xcdfd, 0xab78, 0xaba8, 0xab74, 0xaba7, 0xab7d, 0xaba4, 0xab72,
- 0xcdfc, 0xce43, 0xaba3, 0xce4f, 0xaba5, 0xab79, 0xce45, 0xce42,
- 0xab77, 0xcdfa, 0xaba6, 0xce4a, 0xab7c, 0xce4c, 0xaba9, 0xab73,
- 0xab7e, 0xab7b, 0xce40, 0xaba1, 0xce46, 0xce47, 0xab7a, 0xaba2,
- 0xab76, 0xab75, 0xcdfe, 0xce44, 0xce4e, 0xd144, 0xadfb, 0xd0f1,
- 0xd0f6, 0xadf4, 0xae40, 0xd0f4, 0xadef, 0xadf9, 0xadfe, 0xd0fb,
- 0xadfa, 0xadfd, 0xd0fe, 0xadf5, 0xd0f5, 0xd142, 0xd143, 0xadf7,
- 0xd141, 0xadf3, 0xae43, 0xd0f8, 0xadf1, 0xd146, 0xd0f9, 0xd0fd,
- 0xadf6, 0xae42, 0xd0fa, 0xadfc, 0xd140, 0xd147, 0xd4a1, 0xd145,
- 0xae44, 0xadf0, 0xd0fc, 0xd0f3, 0xadf8, 0xd0f2, 0xd0f7, 0xd0f0,
- 0xae41, 0xd477, 0xb0e4, 0xd4a7, 0xb0e2, 0xb0df, 0xd47c, 0xb0db,
- 0xd4a2, 0xb0e6, 0xd476, 0xd47b, 0xd47a, 0xadf2, 0xb0e1, 0xd4a5,
- 0xd4a8, 0xd473, 0xb3e8, 0xd4a9, 0xb0e7, 0xb0d9, 0xb0d6, 0xd47e,
- 0xb0d3, 0xd4a6, 0xb0da, 0xd4aa, 0xd474, 0xd4a4, 0xb0dd, 0xd475,
- 0xd478, 0xd47d, 0xb0de, 0xb0dc, 0xb0e8, 0xb0e3, 0xb0d7, 0xb1d2,
- 0xb0d8, 0xd479, 0xb0e5, 0xb0e0, 0xd4a3, 0xb0d5, 0xb0d4, 0xd471,
- 0xd472, 0xd86a, 0xb3d7, 0xb3da, 0xd875, 0xb3ee, 0xd878, 0xb3d8,
- 0xd871, 0xb3de, 0xb3e4, 0xb5bd, 0xb3e2, 0xd86e, 0xb3ef, 0xb3db,
- 0xb3e3, 0xd876, 0xdcd7, 0xd87b, 0xd86f, 0xd866, 0xd873, 0xd86d,
- 0xb3e1, 0xd879, 0xb3dd, 0xb3f1, 0xb3ea, 0xb3df, 0xb3dc, 0xb3e7,
- 0xd87a, 0xd86c, 0xd872, 0xd874, 0xd868, 0xd877, 0xb3d9, 0xd867,
- 0xb3e0, 0xb3f0, 0xb3ec, 0xd869, 0xb3e6, 0xb3ed, 0xb3e9, 0xb3e5,
- 0xd870, 0xb3eb, 0xdcd5, 0xdcd1, 0xdce0, 0xdcca, 0xdcd3, 0xb6e5,
- 0xb6e6, 0xb6de, 0xdcdc, 0xb6e8, 0xdccf, 0xdcce, 0xdccc, 0xdcde,
- 0xb6dc, 0xdcd8, 0xdccd, 0xb6df, 0xdcd6, 0xb6da, 0xdcd2, 0xdcd9,
- 0xdcdb, 0xdcdf, 0xb6e3, 0xdccb, 0xb6dd, 0xdcd0, 0xb6d8, 0xb6e4,
- 0xdcda, 0xb6e0, 0xb6e1, 0xb6e7, 0xb6db, 0xa25f, 0xb6d9, 0xdcd4,
- 0xb6e2, 0xdcdd, 0xb9cd, 0xb9c8, 0xe155, 0xe151, 0xe14b, 0xb9c2,
- 0xb9be, 0xe154, 0xb9bf, 0xe14e, 0xe150, 0xe153, 0xb9c4, 0xb9cb,
- 0xb9c5, 0xe149, 0xb9c6, 0xb9c7, 0xe14c, 0xb9cc, 0xe14a, 0xe14f,
- 0xb9c3, 0xe148, 0xb9c9, 0xb9c1, 0xb9c0, 0xe14d, 0xe152, 0xb9ca,
- 0xe147, 0xbc4d, 0xe547, 0xe544, 0xbc47, 0xbc53, 0xbc54, 0xbc4a,
- 0xe542, 0xbc4c, 0xe4f9, 0xbc52, 0xe546, 0xbc49, 0xe548, 0xbc48,
- 0xe543, 0xe545, 0xbc4b, 0xe541, 0xe4fa, 0xe4f7, 0xd86b, 0xe4fd,
- 0xe4f6, 0xe4fc, 0xe4fb, 0xe4f8, 0xbc4f, 0xbc4e, 0xbc50, 0xe4fe,
- 0xbeb2, 0xe540, 0xe945, 0xe8fd, 0xbebe, 0xe942, 0xbeb6, 0xbeba,
- 0xe941, 0xbeb9, 0xbeb5, 0xbeb8, 0xbeb3, 0xbebd, 0xe943, 0xe8fe,
- 0xbebc, 0xe8fc, 0xbebb, 0xe944, 0xe940, 0xbc51, 0xbebf, 0xe946,
- 0xbeb7, 0xbeb4, 0xecc6, 0xecc8, 0xc07b, 0xecc9, 0xecc7, 0xecc5,
- 0xecc4, 0xc07d, 0xecc3, 0xc07e, 0xecc1, 0xecc2, 0xc07a, 0xc0a1,
- 0xc07c, 0xecc0, 0xc250, 0xefbc, 0xefba, 0xefbf, 0xefbd, 0xefbb,
- 0xefbe, 0xc360, 0xf1f2, 0xf1f3, 0xc456, 0xf1f4, 0xf1f0, 0xf1f5,
- 0xf1f1, 0xc251, 0xf3fe, 0xf441, 0xc459, 0xf440, 0xc458, 0xc457,
- 0xc45a, 0xf5c5, 0xf5c6, 0xc4da, 0xc4d9, 0xc4db, 0xf5c4, 0xf6d8,
- 0xf6d7, 0xc56d, 0xc56f, 0xc56e, 0xf6d9, 0xc5c8, 0xf8a6, 0xc5f1,
- 0xf8a5, 0xf8ee, 0xc949, 0xa57d, 0xa57c, 0xa65f, 0xa65e, 0xc9c7,
- 0xa65d, 0xc9c6, 0xa779, 0xcaa9, 0xcaa8, 0xa777, 0xa77a, 0xcaa7,
- 0xa778, 0xcbf0, 0xcbf1, 0xa954, 0xabaa, 0xd148, 0xd149, 0xae45,
- 0xae46, 0xd4ac, 0xb0e9, 0xb0eb, 0xd4ab, 0xb0ea, 0xd87c, 0xb3f2,
- 0xb6e9, 0xb6ea, 0xdce1, 0xb9cf, 0xb9ce, 0xe549, 0xe948, 0xe947,
- 0xf96b, 0xa467, 0xc959, 0xc96e, 0xc96f, 0xa662, 0xa666, 0xc9c9,
- 0xa664, 0xa663, 0xc9c8, 0xa665, 0xa661, 0xa660, 0xc9ca, 0xa7a6,
- 0xa7a3, 0xa77d, 0xcaaa, 0xcaab, 0xa7a1, 0xcaad, 0xa77b, 0xcaae,
- 0xcaac, 0xa77e, 0xa7a2, 0xa7a5, 0xa7a4, 0xa77c, 0xcaaf, 0xa959,
- 0xcbfe, 0xa95b, 0xa95a, 0xcc40, 0xa958, 0xa957, 0xcbf5, 0xcbf4,
- 0xcbf2, 0xcbf7, 0xcbf6, 0xcbf3, 0xcbfc, 0xcbfd, 0xcbfa, 0xcbf8,
- 0xa956, 0xcbfb, 0xa95c, 0xcc41, 0xcbf9, 0xabab, 0xa955, 0xabac,
- 0xce54, 0xce5a, 0xabb2, 0xce58, 0xce5e, 0xce55, 0xce59, 0xce5b,
- 0xce5d, 0xce57, 0xce56, 0xce51, 0xce52, 0xabad, 0xabaf, 0xabae,
- 0xce53, 0xce5c, 0xabb1, 0xce50, 0xd153, 0xd152, 0xd157, 0xd14e,
- 0xd151, 0xd150, 0xd154, 0xd158, 0xae47, 0xae4a, 0xd14f, 0xd155,
- 0xae49, 0xd14a, 0xabb0, 0xd4ba, 0xd156, 0xd14d, 0xae48, 0xd14c,
- 0xd4b1, 0xb0ec, 0xb0f0, 0xd4c1, 0xd4af, 0xd4bd, 0xb0f1, 0xd4bf,
- 0xd4c5, 0xd4c9, 0xd4c0, 0xd4b4, 0xd4bc, 0xd4ca, 0xd4c8, 0xd4be,
- 0xd4b9, 0xd4b2, 0xd8a6, 0xd4b0, 0xb0f5, 0xd4b7, 0xb0f6, 0xb0f2,
- 0xd4ad, 0xd4c3, 0xd4b5, 0xd4b3, 0xd4c6, 0xb0f3, 0xd4cc, 0xb0ed,
- 0xb0ef, 0xd4bb, 0xd4b6, 0xae4b, 0xb0ee, 0xd4b8, 0xd4c7, 0xd4cb,
- 0xd4c2, 0xd4c4, 0xd4ae, 0xd8a1, 0xd8aa, 0xd8a9, 0xb3fa, 0xd8a2,
- 0xb3fb, 0xb3f9, 0xd8a4, 0xb3f6, 0xd8a8, 0xd8a3, 0xd8a5, 0xd87d,
- 0xb3f4, 0xd8b2, 0xd8b1, 0xd8ae, 0xb3f3, 0xb3f7, 0xb3f8, 0xd14b,
- 0xd8ab, 0xb3f5, 0xb0f4, 0xd8ad, 0xd87e, 0xd8b0, 0xd8af, 0xd8b3,
- 0xdcef, 0xd8ac, 0xd8a7, 0xdce7, 0xb6f4, 0xb6f7, 0xb6f2, 0xdce6,
- 0xdcea, 0xdce5, 0xb6ec, 0xb6f6, 0xdce2, 0xb6f0, 0xdce9, 0xb6ee,
- 0xb6ed, 0xdcec, 0xb6ef, 0xdcee, 0xdceb, 0xb6eb, 0xb6f5, 0xdcf0,
- 0xdce4, 0xdced, 0xdce3, 0xb6f1, 0xb6f3, 0xdce8, 0xdcf1, 0xe15d,
- 0xb9d0, 0xe163, 0xb9d5, 0xe15f, 0xe166, 0xe157, 0xb9d7, 0xb9d1,
- 0xe15c, 0xbc55, 0xe15b, 0xe164, 0xb9d2, 0xb9d6, 0xe15a, 0xe160,
- 0xe165, 0xe156, 0xb9d4, 0xe15e, 0xe162, 0xe168, 0xe158, 0xe161,
- 0xb9d3, 0xe167, 0xe159, 0xbc59, 0xe54b, 0xbc57, 0xbc56, 0xe54d,
- 0xe552, 0xe54e, 0xe551, 0xbc5c, 0xbea5, 0xbc5b, 0xe54a, 0xe550,
- 0xbc5a, 0xe54f, 0xe54c, 0xbc58, 0xe94d, 0xe94f, 0xe94a, 0xbec1,
- 0xe94c, 0xbec0, 0xe94e, 0xbec3, 0xe950, 0xbec2, 0xe949, 0xe94b,
- 0xc0a5, 0xeccc, 0xc0a4, 0xeccd, 0xc0a3, 0xeccb, 0xc0a2, 0xecca,
- 0xc253, 0xc252, 0xf1f6, 0xf1f8, 0xf1f7, 0xc361, 0xc362, 0xc363,
- 0xf442, 0xc45b, 0xf7d3, 0xf7d2, 0xc5f2, 0xa468, 0xa4d0, 0xa7a7,
- 0xce5f, 0xb3fc, 0xb3fd, 0xdcf2, 0xb9d8, 0xe169, 0xe553, 0xc95a,
- 0xcab0, 0xcc42, 0xce60, 0xd159, 0xae4c, 0xf1f9, 0xc4dc, 0xa469,
- 0xa57e, 0xc970, 0xa667, 0xa668, 0xa95d, 0xb0f7, 0xb9da, 0xb9db,
- 0xb9d9, 0xa46a, 0xa4d1, 0xa4d3, 0xa4d2, 0xc95b, 0xa4d4, 0xa5a1,
- 0xc971, 0xa5a2, 0xa669, 0xa66a, 0xc9cb, 0xa7a8, 0xcab1, 0xa961,
- 0xcc43, 0xa95f, 0xa960, 0xa95e, 0xd15a, 0xabb6, 0xabb5, 0xabb7,
- 0xabb4, 0xce61, 0xa962, 0xabb3, 0xae4d, 0xae4e, 0xae4f, 0xd4cd,
- 0xb3fe, 0xd8b4, 0xb0f8, 0xb6f8, 0xb9dd, 0xb9dc, 0xe16a, 0xbc5d,
- 0xbec4, 0xefc0, 0xf6da, 0xf7d4, 0xa46b, 0xa5a3, 0xa5a4, 0xc9d1,
- 0xa66c, 0xa66f, 0xc9cf, 0xc9cd, 0xa66e, 0xc9d0, 0xc9d2, 0xc9cc,
- 0xa671, 0xa670, 0xa66d, 0xa66b, 0xc9ce, 0xa7b3, 0xa7b0, 0xcab6,
- 0xcab9, 0xcab8, 0xa7aa, 0xa7b2, 0xa7af, 0xcab5, 0xcab3, 0xa7ae,
- 0xa7a9, 0xa7ac, 0xcab4, 0xcabb, 0xcab7, 0xa7ad, 0xa7b1, 0xa7b4,
- 0xcab2, 0xcaba, 0xa7ab, 0xa967, 0xa96f, 0xcc4f, 0xcc48, 0xa970,
- 0xcc53, 0xcc44, 0xcc4b, 0xa966, 0xcc45, 0xa964, 0xcc4c, 0xcc50,
- 0xa963, 0xcc51, 0xcc4a, 0xcc4d, 0xa972, 0xa969, 0xcc54, 0xcc52,
- 0xa96e, 0xa96c, 0xcc49, 0xa96b, 0xcc47, 0xcc46, 0xa96a, 0xa968,
- 0xa971, 0xa96d, 0xa965, 0xcc4e, 0xabb9, 0xabc0, 0xce6f, 0xabb8,
- 0xce67, 0xce63, 0xce73, 0xce62, 0xabbb, 0xce6c, 0xabbe, 0xabc1,
- 0xabbc, 0xce70, 0xabbf, 0xae56, 0xce76, 0xce64, 0xce66, 0xce6d,
- 0xce71, 0xce75, 0xce72, 0xce6b, 0xce6e, 0xce68, 0xabc3, 0xce6a,
- 0xce69, 0xce74, 0xabba, 0xce65, 0xabc2, 0xabbd, 0xae5c, 0xd162,
- 0xae5b, 0xd160, 0xae50, 0xae55, 0xd15f, 0xd15c, 0xd161, 0xae51,
- 0xd15b, 0xae54, 0xae52, 0xd163, 0xae53, 0xae57, 0xae58, 0xae5a,
- 0xae59, 0xd15d, 0xd15e, 0xd164, 0xd4d4, 0xb0f9, 0xd8c2, 0xd4d3,
- 0xd4e6, 0xb140, 0xd4e4, 0xb0fe, 0xb0fa, 0xd4ed, 0xd4dd, 0xd4e0,
- 0xb143, 0xd4ea, 0xd4e2, 0xb0fb, 0xb144, 0xd4e7, 0xd4e5, 0xd4d6,
- 0xd4eb, 0xd4df, 0xd4da, 0xd4d0, 0xd4ec, 0xd4dc, 0xd4cf, 0xb142,
- 0xd4e1, 0xd4ee, 0xd4de, 0xd4d2, 0xd4d7, 0xd4ce, 0xb141, 0xd4db,
- 0xd4d8, 0xb0fc, 0xd4d1, 0xd4e9, 0xb0fd, 0xd4d9, 0xd4d5, 0xd4e8,
- 0xb440, 0xd8bb, 0xd8b8, 0xd8c9, 0xd8bd, 0xd8ca, 0xb442, 0xd8c6,
- 0xd8c3, 0xd8c4, 0xd8c7, 0xd8cb, 0xd4e3, 0xd8cd, 0xdd47, 0xb443,
- 0xd8ce, 0xd8b6, 0xd8c0, 0xd8c5, 0xb441, 0xb444, 0xd8cc, 0xd8cf,
- 0xd8ba, 0xd8b7, 0xd8b9, 0xd8be, 0xd8bc, 0xb445, 0xd8c8, 0xd8bf,
- 0xd8c1, 0xd8b5, 0xdcfa, 0xdcf8, 0xb742, 0xb740, 0xdd43, 0xdcf9,
- 0xdd44, 0xdd40, 0xdcf7, 0xdd46, 0xdcf6, 0xdcfd, 0xb6fe, 0xb6fd,
- 0xb6fc, 0xdcfb, 0xdd41, 0xb6f9, 0xb741, 0xdcf4, 0xdcfe, 0xdcf3,
- 0xdcfc, 0xb6fa, 0xdd42, 0xdcf5, 0xb6fb, 0xdd45, 0xe16e, 0xb9e2,
- 0xb9e1, 0xb9e3, 0xe17a, 0xe170, 0xe176, 0xe16b, 0xe179, 0xe178,
- 0xe17c, 0xe175, 0xb9de, 0xe174, 0xb9e4, 0xe16d, 0xb9df, 0xe17b,
- 0xb9e0, 0xe16f, 0xe172, 0xe177, 0xe171, 0xe16c, 0xe173, 0xe555,
- 0xbc61, 0xe558, 0xe557, 0xe55a, 0xe55c, 0xbc5f, 0xe556, 0xe554,
- 0xe55d, 0xe55b, 0xe559, 0xe55f, 0xe55e, 0xbc63, 0xbc5e, 0xbc60,
- 0xbc62, 0xe560, 0xe957, 0xe956, 0xe955, 0xe958, 0xe951, 0xe952,
- 0xe95a, 0xe953, 0xbec5, 0xe95c, 0xe95b, 0xe954, 0xecd1, 0xc0a8,
- 0xeccf, 0xecd4, 0xecd3, 0xe959, 0xc0a7, 0xecd2, 0xecce, 0xecd6,
- 0xecd5, 0xc0a6, 0xecd0, 0xbec6, 0xc254, 0xefc1, 0xf1fa, 0xf1fb,
- 0xf1fc, 0xc45c, 0xc45d, 0xf443, 0xf5c8, 0xf5c7, 0xf6db, 0xf6dc,
- 0xf7d5, 0xf8a7, 0xa46c, 0xa46d, 0xa46e, 0xa4d5, 0xa5a5, 0xc9d3,
- 0xa672, 0xa673, 0xa7b7, 0xa7b8, 0xa7b6, 0xa7b5, 0xa973, 0xcc55,
- 0xa975, 0xa974, 0xcc56, 0xabc4, 0xae5d, 0xd165, 0xd4f0, 0xb145,
- 0xb447, 0xd4ef, 0xb446, 0xb9e5, 0xe17d, 0xbec7, 0xc0a9, 0xecd7,
- 0xc45e, 0xc570, 0xc972, 0xa5a6, 0xc973, 0xa676, 0xa674, 0xa675,
- 0xa677, 0xa7ba, 0xa7b9, 0xcabc, 0xa7bb, 0xcabd, 0xcc57, 0xcc58,
- 0xa976, 0xa978, 0xa97a, 0xa977, 0xa97b, 0xa979, 0xabc8, 0xabc5,
- 0xabc7, 0xabc9, 0xabc6, 0xd166, 0xce77, 0xd168, 0xd167, 0xae63,
- 0xae5f, 0xae60, 0xae62, 0xae64, 0xae61, 0xae66, 0xae65, 0xb14a,
- 0xd4f2, 0xd4f1, 0xb149, 0xb148, 0xb147, 0xb14b, 0xb146, 0xd8d5,
- 0xd8d2, 0xb449, 0xd8d1, 0xd8d6, 0xb44b, 0xd8d4, 0xb448, 0xb44a,
- 0xd8d3, 0xdd48, 0xdd49, 0xdd4a, 0xb9e6, 0xb9ee, 0xe17e, 0xb9e8,
- 0xb9ec, 0xe1a1, 0xb9ed, 0xb9e9, 0xb9ea, 0xb9e7, 0xb9eb, 0xbc66,
- 0xd8d0, 0xbc67, 0xbc65, 0xbc64, 0xe95d, 0xbec8, 0xecd8, 0xecd9,
- 0xc364, 0xc45f, 0xa46f, 0xa678, 0xabca, 0xd169, 0xae67, 0xb14e,
- 0xb14d, 0xb14c, 0xb44c, 0xb44d, 0xd8d7, 0xb9ef, 0xbec9, 0xa470,
- 0xc95c, 0xa4d6, 0xc974, 0xc9d4, 0xa679, 0xa97c, 0xdd4b, 0xa471,
- 0xa4d7, 0xc9d5, 0xcabe, 0xcabf, 0xa7bc, 0xd8d8, 0xb44e, 0xdd4c,
- 0xc0aa, 0xa472, 0xa4a8, 0xa4d8, 0xc975, 0xa5a7, 0xa7c0, 0xa7bf,
- 0xa7bd, 0xa7be, 0xcc59, 0xa97e, 0xa9a1, 0xcc5a, 0xa97d, 0xabce,
- 0xce78, 0xabcd, 0xabcb, 0xabcc, 0xae6a, 0xae68, 0xd16b, 0xae69,
- 0xd16a, 0xae5e, 0xd4f3, 0xb150, 0xb151, 0xb14f, 0xb9f0, 0xe1a2,
- 0xbc68, 0xbc69, 0xe561, 0xc0ab, 0xefc2, 0xefc3, 0xc4dd, 0xf8a8,
- 0xc94b, 0xa4d9, 0xa473, 0xc977, 0xc976, 0xa67a, 0xc9d7, 0xc9d8,
- 0xc9d6, 0xc9d9, 0xcac7, 0xcac2, 0xcac4, 0xcac6, 0xcac3, 0xa7c4,
- 0xcac0, 0xcac1, 0xa7c1, 0xa7c2, 0xcac5, 0xcac8, 0xa7c3, 0xcac9,
- 0xcc68, 0xcc62, 0xcc5d, 0xa9a3, 0xcc65, 0xcc63, 0xcc5c, 0xcc69,
- 0xcc6c, 0xcc67, 0xcc60, 0xa9a5, 0xcc66, 0xa9a6, 0xcc61, 0xcc64,
- 0xcc5b, 0xcc5f, 0xcc6b, 0xa9a7, 0xa9a8, 0xcc5e, 0xcc6a, 0xa9a2,
- 0xa9a4, 0xceab, 0xcea4, 0xceaa, 0xcea3, 0xcea5, 0xce7d, 0xce7b,
- 0xceac, 0xcea9, 0xce79, 0xabd0, 0xcea7, 0xcea8, 0xcea6, 0xce7c,
- 0xce7a, 0xabcf, 0xcea2, 0xce7e, 0xcea1, 0xcead, 0xae6f, 0xae6e,
- 0xd16c, 0xae6b, 0xd16e, 0xae70, 0xd16f, 0xae73, 0xae71, 0xd170,
- 0xceae, 0xd172, 0xae6d, 0xae6c, 0xd16d, 0xd171, 0xae72, 0xb153,
- 0xb152, 0xd4f5, 0xd4f9, 0xd4fb, 0xb154, 0xd4fe, 0xb158, 0xd541,
- 0xb15a, 0xb156, 0xb15e, 0xb15b, 0xd4f7, 0xb155, 0xd4f6, 0xd4f4,
- 0xd543, 0xd4f8, 0xb157, 0xd542, 0xb15c, 0xd4fd, 0xd4fc, 0xb15d,
- 0xd4fa, 0xb159, 0xd544, 0xd540, 0xd8e7, 0xd8ee, 0xd8e3, 0xb451,
- 0xd8df, 0xd8ef, 0xd8d9, 0xd8ec, 0xd8ea, 0xd8e4, 0xd8ed, 0xd8e6,
- 0xd8de, 0xd8f0, 0xd8dc, 0xd8e9, 0xd8da, 0xd8f1, 0xb452, 0xd8eb,
- 0xdd4f, 0xd8dd, 0xb44f, 0xd8e1, 0xb450, 0xd8e0, 0xd8e5, 0xd8e2,
- 0xd8e8, 0xdd53, 0xdd56, 0xdd4e, 0xdd50, 0xdd55, 0xdd54, 0xb743,
- 0xd8db, 0xdd52, 0xb744, 0xdd4d, 0xdd51, 0xe1a9, 0xe1b0, 0xe1a7,
- 0xe1ae, 0xe1a5, 0xe1ad, 0xe1b1, 0xe1a4, 0xe1a8, 0xe1a3, 0xb9f1,
- 0xe1a6, 0xb9f2, 0xe1ac, 0xe1ab, 0xe1aa, 0xe1af, 0xe565, 0xe567,
- 0xbc6b, 0xe568, 0xe563, 0xe562, 0xe56c, 0xe56a, 0xbc6a, 0xe56d,
- 0xe564, 0xe569, 0xe56b, 0xe566, 0xe961, 0xe966, 0xe960, 0xe965,
- 0xe95e, 0xe968, 0xe964, 0xe969, 0xe963, 0xe95f, 0xe967, 0xe96a,
- 0xe962, 0xecda, 0xc0af, 0xc0ad, 0xc0ac, 0xc0ae, 0xefc4, 0xf172,
- 0xf1fd, 0xf444, 0xf445, 0xc460, 0xf5c9, 0xc4de, 0xf5ca, 0xf6de,
- 0xc572, 0xc571, 0xf6dd, 0xc5c9, 0xf7d6, 0xa474, 0xa67b, 0xc9da,
- 0xcaca, 0xa8b5, 0xb15f, 0xa475, 0xa5aa, 0xa5a9, 0xa5a8, 0xa7c5,
- 0xae74, 0xdd57, 0xa476, 0xa477, 0xa478, 0xa4da, 0xabd1, 0xceaf,
- 0xb453, 0xa479, 0xc95d, 0xa5ab, 0xa5ac, 0xc978, 0xa67c, 0xcacb,
- 0xa7c6, 0xcacc, 0xa9ae, 0xcc6e, 0xa9ac, 0xa9ab, 0xcc6d, 0xa9a9,
- 0xcc6f, 0xa9aa, 0xa9ad, 0xabd2, 0xabd4, 0xceb3, 0xceb0, 0xceb1,
- 0xceb2, 0xceb4, 0xabd3, 0xd174, 0xd173, 0xae76, 0xae75, 0xb162,
- 0xd546, 0xb161, 0xb163, 0xb160, 0xb455, 0xd545, 0xb456, 0xd8f3,
- 0xb457, 0xd8f2, 0xb454, 0xdd5a, 0xdd5c, 0xb745, 0xdd5b, 0xdd59,
- 0xdd58, 0xe1b4, 0xb9f7, 0xb9f5, 0xb9f6, 0xe1b2, 0xe1b3, 0xb9f3,
- 0xe571, 0xe56f, 0xbc6d, 0xe570, 0xbc6e, 0xbc6c, 0xb9f4, 0xe96d,
- 0xe96b, 0xe96c, 0xe56e, 0xecdc, 0xc0b0, 0xecdb, 0xefc5, 0xefc6,
- 0xe96e, 0xf1fe, 0xa47a, 0xa5ad, 0xa67e, 0xc9db, 0xa67d, 0xa9af,
- 0xb746, 0xa4db, 0xa5ae, 0xabd5, 0xb458, 0xc979, 0xc97a, 0xc9dc,
- 0xa7c8, 0xcad0, 0xcace, 0xa7c9, 0xcacd, 0xcacf, 0xcad1, 0xa7c7,
- 0xa9b3, 0xa9b4, 0xa9b1, 0xa9b0, 0xceb8, 0xa9b2, 0xabd6, 0xceb7,
- 0xceb9, 0xceb6, 0xceba, 0xabd7, 0xae79, 0xd175, 0xd177, 0xae77,
- 0xd178, 0xae78, 0xd176, 0xceb5, 0xd547, 0xd54a, 0xd54b, 0xd548,
- 0xb167, 0xb166, 0xb164, 0xb165, 0xd549, 0xb168, 0xb45a, 0xb45b,
- 0xb45c, 0xdd5d, 0xdd5f, 0xdd61, 0xb748, 0xb747, 0xb459, 0xdd60,
- 0xdd5e, 0xe1b8, 0xe1b6, 0xe1bc, 0xb9f8, 0xe1bd, 0xe1ba, 0xb9f9,
- 0xe1b7, 0xe1b5, 0xe1bb, 0xbc70, 0xe573, 0xe1b9, 0xbc72, 0xe574,
- 0xbc71, 0xbc74, 0xe575, 0xbc6f, 0xbc73, 0xe973, 0xe971, 0xe970,
- 0xe972, 0xe96f, 0xc366, 0xf446, 0xf447, 0xf5cb, 0xf6df, 0xc655,
- 0xa9b5, 0xa7ca, 0xabd8, 0xa47b, 0xa4dc, 0xa5af, 0xc9dd, 0xa7cb,
- 0xcad2, 0xcebb, 0xabd9, 0xb9fa, 0xa47c, 0xa6a1, 0xb749, 0xa47d,
- 0xa4dd, 0xa4de, 0xa5b1, 0xa5b0, 0xc9de, 0xa6a2, 0xcad3, 0xa7cc,
- 0xcc71, 0xcc72, 0xcc73, 0xa9b6, 0xa9b7, 0xcc70, 0xa9b8, 0xabda,
- 0xcebc, 0xd17a, 0xae7a, 0xd179, 0xb169, 0xd54c, 0xb16a, 0xd54d,
- 0xb45d, 0xdd62, 0xe1bf, 0xe1be, 0xb9fb, 0xbc75, 0xe576, 0xbeca,
- 0xe974, 0xc0b1, 0xc573, 0xf7d8, 0xcc74, 0xcebd, 0xb16b, 0xd8f4,
- 0xb74a, 0xc255, 0xa7ce, 0xa7cd, 0xabdb, 0xd17b, 0xb16d, 0xb343,
- 0xb16e, 0xb16c, 0xb45e, 0xe1c0, 0xb9fc, 0xbc76, 0xc94c, 0xc9df,
- 0xcad5, 0xa7cf, 0xcad4, 0xa7d0, 0xa9bc, 0xcc77, 0xcc76, 0xa9bb,
- 0xa9b9, 0xa9ba, 0xcc75, 0xabdd, 0xcebe, 0xabe0, 0xabdc, 0xabe2,
- 0xabde, 0xabdf, 0xabe1, 0xae7d, 0xae7c, 0xae7b, 0xd54f, 0xb16f,
- 0xb172, 0xb170, 0xd54e, 0xb175, 0xb171, 0xd550, 0xb174, 0xb173,
- 0xd8f6, 0xd8f5, 0xb461, 0xb45f, 0xb460, 0xd8f7, 0xb74b, 0xdd64,
- 0xb74c, 0xdd63, 0xe577, 0xbc78, 0xe1c1, 0xbc77, 0xb9fd, 0xecde,
- 0xe975, 0xc0b2, 0xecdd, 0xf240, 0xf448, 0xf449, 0xa4df, 0xa5b2,
- 0xc97b, 0xa7d2, 0xa7d4, 0xc9e2, 0xcad8, 0xcad7, 0xcad6, 0xc9e1,
- 0xc9e0, 0xa6a4, 0xa7d3, 0xa7d1, 0xa6a3, 0xa9bd, 0xcc78, 0xa9be,
- 0xcadd, 0xcadf, 0xcade, 0xcc79, 0xcada, 0xa7d8, 0xa7d6, 0xcad9,
- 0xcadb, 0xcae1, 0xa7d5, 0xcadc, 0xcae5, 0xa9c0, 0xcae2, 0xa7d7,
- 0xcae0, 0xcae3, 0xa9bf, 0xa9c1, 0xcae4, 0xccaf, 0xcca2, 0xcc7e,
- 0xccae, 0xcca9, 0xabe7, 0xa9c2, 0xccaa, 0xccad, 0xabe3, 0xccac,
- 0xa9c3, 0xa9c8, 0xa9c6, 0xcca3, 0xcc7c, 0xcca5, 0xa9cd, 0xccb0,
- 0xabe4, 0xcca6, 0xabe5, 0xa9c9, 0xcca8, 0xcecd, 0xabe6, 0xcc7b,
- 0xa9ca, 0xabe8, 0xa9cb, 0xa9c7, 0xa9cc, 0xcca7, 0xcc7a, 0xccab,
- 0xa9c4, 0xcc7d, 0xcca4, 0xcca1, 0xa9c5, 0xcebf, 0xcec0, 0xceca,
- 0xd1a1, 0xcecb, 0xabee, 0xcece, 0xcec4, 0xabed, 0xcec6, 0xcec7,
- 0xcec9, 0xabe9, 0xaea3, 0xcec5, 0xcec1, 0xaea4, 0xcecf, 0xae7e,
- 0xd17d, 0xcec8, 0xd17c, 0xcec3, 0xcecc, 0xabec, 0xaea1, 0xabf2,
- 0xaea2, 0xced0, 0xd17e, 0xabeb, 0xaea6, 0xabf1, 0xabf0, 0xabef,
- 0xaea5, 0xced1, 0xaea7, 0xabea, 0xcec2, 0xb176, 0xd1a4, 0xd1a6,
- 0xd1a8, 0xaea8, 0xaeae, 0xd553, 0xd1ac, 0xd1a3, 0xb178, 0xd551,
- 0xaead, 0xaeab, 0xd1ae, 0xd552, 0xd1a5, 0xaeac, 0xd1a9, 0xaeaf,
- 0xd1ab, 0xaeaa, 0xd1aa, 0xd1ad, 0xd1a7, 0xaea9, 0xb179, 0xd1a2,
- 0xb177, 0xb17a, 0xd555, 0xd55e, 0xb464, 0xb17c, 0xb1a3, 0xb465,
- 0xd560, 0xb1aa, 0xd8f9, 0xd556, 0xb1a2, 0xb1a5, 0xb17e, 0xd554,
- 0xd562, 0xd565, 0xd949, 0xd563, 0xd8fd, 0xb1a1, 0xb1a8, 0xb1ac,
- 0xd55d, 0xd8f8, 0xd561, 0xb17b, 0xd8fa, 0xd564, 0xd8fc, 0xd559,
- 0xb462, 0xd557, 0xd558, 0xb1a7, 0xb1a6, 0xd55b, 0xb1ab, 0xd55f,
- 0xb1a4, 0xd55c, 0xb1a9, 0xb466, 0xb463, 0xd8fb, 0xd55a, 0xb17d,
- 0xb46b, 0xb46f, 0xd940, 0xb751, 0xb46d, 0xd944, 0xb471, 0xdd65,
- 0xd946, 0xb753, 0xb469, 0xb46c, 0xd947, 0xd948, 0xd94e, 0xb473,
- 0xb754, 0xd94a, 0xd94f, 0xd943, 0xb75e, 0xb755, 0xb472, 0xd941,
- 0xd950, 0xb75d, 0xb470, 0xb74e, 0xd94d, 0xb474, 0xd945, 0xd8fe,
- 0xb46a, 0xd942, 0xd94b, 0xb74d, 0xb752, 0xb467, 0xd94c, 0xb750,
- 0xb468, 0xb75c, 0xe1c3, 0xdd70, 0xdd68, 0xe1c2, 0xdd6c, 0xdd6e,
- 0xdd6b, 0xb75b, 0xdd6a, 0xb75f, 0xe1d2, 0xb75a, 0xba40, 0xdd71,
- 0xe1c4, 0xb758, 0xdd69, 0xdd6d, 0xb9fe, 0xb74f, 0xdd66, 0xdd67,
- 0xba41, 0xb757, 0xb759, 0xb756, 0xdd6f, 0xe1c8, 0xe1c9, 0xe1ce,
- 0xbc7d, 0xe1d5, 0xba47, 0xba46, 0xe1d0, 0xbc7c, 0xe1c5, 0xba45,
- 0xe1d4, 0xba43, 0xba44, 0xe1d1, 0xe5aa, 0xbc7a, 0xb46e, 0xe1d3,
- 0xbca3, 0xe1cb, 0xbc7b, 0xbca2, 0xe1c6, 0xe1ca, 0xe1c7, 0xe1cd,
- 0xba48, 0xbc79, 0xba42, 0xe57a, 0xe1cf, 0xbca1, 0xbca4, 0xe1cc,
- 0xbc7e, 0xe579, 0xe57e, 0xbece, 0xe578, 0xe9a3, 0xe5a9, 0xbca8,
- 0xbca6, 0xbecc, 0xe5a6, 0xe5a2, 0xbcac, 0xe978, 0xbcaa, 0xe5a1,
- 0xe976, 0xe5a5, 0xe5a8, 0xe57d, 0xbcab, 0xbca5, 0xe977, 0xbecd,
- 0xe5a7, 0xbca7, 0xbca9, 0xe5a4, 0xbcad, 0xe5a3, 0xe57c, 0xe57b,
- 0xbecb, 0xe5ab, 0xe97a, 0xece0, 0xbed0, 0xe9a2, 0xe97e, 0xece1,
- 0xbed1, 0xe9a1, 0xe97c, 0xc0b4, 0xecdf, 0xe979, 0xe97b, 0xc0b5,
- 0xbed3, 0xc0b3, 0xbed2, 0xc0b7, 0xe97d, 0xbecf, 0xefcf, 0xefc7,
- 0xece7, 0xefc8, 0xece3, 0xc256, 0xece5, 0xece4, 0xc0b6, 0xece2,
- 0xece6, 0xefd0, 0xefcc, 0xefce, 0xefc9, 0xefca, 0xefcd, 0xefcb,
- 0xc367, 0xc36a, 0xc369, 0xc368, 0xc461, 0xf44a, 0xc462, 0xf241,
- 0xc4df, 0xf5cc, 0xc4e0, 0xc574, 0xc5ca, 0xf7d9, 0xf7da, 0xf7db,
- 0xf9ba, 0xa4e0, 0xc97c, 0xa5b3, 0xa6a6, 0xa6a7, 0xa6a5, 0xa6a8,
- 0xa7da, 0xa7d9, 0xccb1, 0xa9cf, 0xa9ce, 0xd1af, 0xb1ad, 0xb1ae,
- 0xb475, 0xdd72, 0xb760, 0xb761, 0xdd74, 0xdd76, 0xdd75, 0xe1d7,
- 0xe1d6, 0xba49, 0xe1d8, 0xe5ac, 0xbcae, 0xbed4, 0xc0b8, 0xc257,
- 0xc0b9, 0xa4e1, 0xcae6, 0xccb2, 0xa9d1, 0xa9d0, 0xa9d2, 0xabf3,
- 0xced2, 0xced3, 0xd1b0, 0xaeb0, 0xb1af, 0xb476, 0xd951, 0xa4e2,
- 0xa47e, 0xa4e3, 0xc97d, 0xa5b7, 0xa5b6, 0xa5b4, 0xa5b5, 0xa6ab,
- 0xc9e9, 0xc9eb, 0xa6aa, 0xc9e3, 0xc9e4, 0xc9ea, 0xc9e6, 0xc9e8,
- 0xa6a9, 0xc9e5, 0xc9ec, 0xc9e7, 0xa7e1, 0xa7ea, 0xa7e8, 0xcaf0,
- 0xcaed, 0xcaf5, 0xa7e6, 0xcaf6, 0xa7df, 0xcaf3, 0xa7e5, 0xcaef,
- 0xcaee, 0xa7e3, 0xcaf4, 0xa7e4, 0xa9d3, 0xa7de, 0xcaf1, 0xcae7,
- 0xa7db, 0xa7ee, 0xcaec, 0xcaf2, 0xa7e0, 0xa7e2, 0xcae8, 0xcae9,
- 0xcaea, 0xa7ed, 0xa7e7, 0xa7ec, 0xcaeb, 0xa7eb, 0xa7dd, 0xa7dc,
- 0xa7e9, 0xa9e1, 0xccbe, 0xccb7, 0xa9dc, 0xa9ef, 0xccb3, 0xccba,
- 0xccbc, 0xccbf, 0xa9ea, 0xccbb, 0xccb4, 0xa9e8, 0xccb8, 0xccc0,
- 0xa9d9, 0xccbd, 0xa9e3, 0xa9e2, 0xccb6, 0xa9d7, 0xa9d8, 0xa9d6,
- 0xa9ee, 0xa9e6, 0xa9e0, 0xa9d4, 0xccb9, 0xa9df, 0xa9d5, 0xa9e7,
- 0xa9f0, 0xced4, 0xa9e4, 0xccb5, 0xa9da, 0xa9dd, 0xa9de, 0xa9ec,
- 0xa9ed, 0xa9eb, 0xa9e5, 0xa9e9, 0xa9db, 0xabf4, 0xceda, 0xac41,
- 0xabf8, 0xabfa, 0xac40, 0xcee6, 0xabfd, 0xd1b1, 0xaeb1, 0xac43,
- 0xced7, 0xcedf, 0xabfe, 0xcede, 0xcedb, 0xcee3, 0xcee5, 0xabf7,
- 0xabfb, 0xac42, 0xaeb3, 0xcee0, 0xabf9, 0xac45, 0xced9, 0xabfc,
- 0xaeb2, 0xabf6, 0xced6, 0xcedd, 0xced5, 0xced8, 0xcedc, 0xd1b2,
- 0xac44, 0xcee1, 0xcee2, 0xcee4, 0xabf5, 0xaec1, 0xd1be, 0xaebf,
- 0xaec0, 0xd1b4, 0xd1c4, 0xaeb6, 0xd566, 0xd1c6, 0xd1c0, 0xd1b7,
- 0xd1c9, 0xd1ba, 0xaebc, 0xd57d, 0xd1bd, 0xaebe, 0xaeb5, 0xd1cb,
- 0xd1bf, 0xaeb8, 0xd1b8, 0xd1b5, 0xd1b6, 0xaeb9, 0xd1c5, 0xd1cc,
- 0xaebb, 0xd1bc, 0xd1bb, 0xaec3, 0xaec2, 0xaeb4, 0xaeba, 0xaebd,
- 0xd1c8, 0xd1c2, 0xaeb7, 0xd1b3, 0xd1ca, 0xd1c1, 0xd1c3, 0xd1c7,
- 0xd567, 0xb1b7, 0xb1cb, 0xb1ca, 0xb1bf, 0xd579, 0xd575, 0xd572,
- 0xd5a6, 0xb1ba, 0xb1b2, 0xd577, 0xb4a8, 0xb1b6, 0xd5a1, 0xb1cc,
- 0xb1c9, 0xd57b, 0xd56a, 0xb1c8, 0xd5a3, 0xd569, 0xb1bd, 0xb1c1,
- 0xd5a2, 0xd573, 0xb1c2, 0xb1bc, 0xd568, 0xb478, 0xd5a5, 0xd571,
- 0xb1c7, 0xd574, 0xd5a4, 0xb1c6, 0xd952, 0xb1b3, 0xd56f, 0xb1b8,
- 0xb1c3, 0xb1be, 0xd578, 0xd56e, 0xd56c, 0xd57e, 0xb1b0, 0xb1c4,
- 0xb1b4, 0xb477, 0xd57c, 0xb1b5, 0xb1b1, 0xb1c0, 0xb1bb, 0xb1b9,
- 0xd570, 0xb1c5, 0xd56d, 0xd57a, 0xd576, 0xd954, 0xd953, 0xd56b,
- 0xd964, 0xb47a, 0xd96a, 0xd959, 0xd967, 0xdd77, 0xb47d, 0xd96b,
- 0xd96e, 0xb47c, 0xd95c, 0xd96d, 0xd96c, 0xb47e, 0xd955, 0xb479,
- 0xb4a3, 0xb4a1, 0xd969, 0xd95f, 0xb4a5, 0xd970, 0xd968, 0xd971,
- 0xb4ad, 0xb4ab, 0xd966, 0xd965, 0xd963, 0xd95d, 0xb4a4, 0xb4a2,
- 0xd1b9, 0xd956, 0xddb7, 0xd957, 0xb47b, 0xb4aa, 0xdd79, 0xb4a6,
- 0xb4a7, 0xd958, 0xd96f, 0xdd78, 0xd960, 0xd95b, 0xb4a9, 0xd961,
- 0xd95e, 0xb4ae, 0xb770, 0xdd7c, 0xddb1, 0xddb6, 0xddaa, 0xb76c,
- 0xddbb, 0xb769, 0xdd7a, 0xdd7b, 0xb762, 0xb76b, 0xdda4, 0xb76e,
- 0xb76f, 0xdda5, 0xddb2, 0xddb8, 0xb76a, 0xb764, 0xdda3, 0xdd7d,
- 0xddba, 0xdda8, 0xdda9, 0xdd7e, 0xddb4, 0xddab, 0xddb5, 0xddad,
- 0xb765, 0xe1d9, 0xb768, 0xb766, 0xddb9, 0xddb0, 0xddac, 0xdda1,
- 0xba53, 0xddaf, 0xb76d, 0xdda7, 0xdda6, 0xb767, 0xb763, 0xe1ee,
- 0xddb3, 0xddae, 0xdda2, 0xe1e9, 0xe1da, 0xe1e5, 0xe1ec, 0xba51,
- 0xb4ac, 0xe1ea, 0xba4c, 0xba4b, 0xe1f1, 0xe1db, 0xe1e8, 0xe1dc,
- 0xe1e7, 0xba4f, 0xe1eb, 0xd962, 0xe1f2, 0xe1e3, 0xba52, 0xe5ba,
- 0xbcaf, 0xe1f0, 0xe1ef, 0xba54, 0xe5ad, 0xbcb0, 0xe5ae, 0xe1df,
- 0xe1e0, 0xe1dd, 0xe1e2, 0xe1de, 0xe1f3, 0xba4e, 0xbcb1, 0xba50,
- 0xba55, 0xe1e1, 0xe1ed, 0xe1e6, 0xe5b1, 0xba4a, 0xbcb4, 0xe9aa,
- 0xe5b6, 0xe5b5, 0xe5b7, 0xe5b4, 0xbcb5, 0xbcbb, 0xbcb8, 0xbcb9,
- 0xe5af, 0xe5b2, 0xe5bc, 0xbcc1, 0xbcbf, 0xe5b3, 0xd95a, 0xbcb2,
- 0xe5b9, 0xe5b0, 0xbcc2, 0xe5b8, 0xba4d, 0xbcb7, 0xe1e4, 0xbcba,
- 0xbcbe, 0xbcc0, 0xbcbd, 0xbcbc, 0xbcb6, 0xe5bb, 0xbcb3, 0xbcc3,
- 0xbed8, 0xbed9, 0xe9a9, 0xbee2, 0xbedf, 0xbed6, 0xbedd, 0xe9ab,
- 0xbedb, 0xbed5, 0xbedc, 0xe9a8, 0xc0bb, 0xbed7, 0xbede, 0xc0ba,
- 0xe9a7, 0xe9a6, 0xbee0, 0xbee1, 0xe9a5, 0xe9a4, 0xc0bc, 0xe9ae,
- 0xbeda, 0xe9ac, 0xc0bd, 0xc0c2, 0xecea, 0xecec, 0xc0bf, 0xeced,
- 0xece9, 0xeceb, 0xc0c0, 0xc0c3, 0xece8, 0xc0be, 0xc0c1, 0xc259,
- 0xe9ad, 0xc258, 0xc25e, 0xefd4, 0xc25c, 0xc25d, 0xefd7, 0xefd3,
- 0xc25a, 0xefd1, 0xc36b, 0xefd5, 0xefd6, 0xefd2, 0xc25b, 0xf242,
- 0xf245, 0xf246, 0xf244, 0xf247, 0xc36c, 0xf243, 0xf44e, 0xc464,
- 0xf44d, 0xf44c, 0xf44b, 0xc463, 0xc465, 0xf5cd, 0xc4e2, 0xc4e1,
- 0xf6e1, 0xf6e0, 0xf6e3, 0xc5cb, 0xc575, 0xf7dd, 0xf6e2, 0xf7dc,
- 0xc5cd, 0xc5cc, 0xc5f3, 0xf8a9, 0xf8ef, 0xa4e4, 0xd972, 0xe9af,
- 0xa6ac, 0xcaf7, 0xa7f1, 0xa7ef, 0xa7f0, 0xccc1, 0xa9f1, 0xac46,
- 0xcee7, 0xcee8, 0xac47, 0xd1ce, 0xaec4, 0xaec5, 0xd1cd, 0xb1d3,
- 0xb1cf, 0xd5a7, 0xb1d6, 0xb1d5, 0xb1ce, 0xb1d1, 0xb1d4, 0xb1d0,
- 0xd976, 0xb1cd, 0xb4af, 0xb4b1, 0xb4b2, 0xd975, 0xd978, 0xb4b0,
- 0xd973, 0xd977, 0xd974, 0xb771, 0xddbc, 0xba56, 0xe1f4, 0xbee3,
- 0xbcc4, 0xe5bd, 0xbcc5, 0xbcc6, 0xe5bf, 0xe5be, 0xe5c0, 0xe9b1,
- 0xe9b0, 0xecef, 0xecee, 0xc0c4, 0xc0c5, 0xf248, 0xa4e5, 0xd979,
- 0xb4b4, 0xb4b3, 0xddbd, 0xefd8, 0xc4e3, 0xf7de, 0xa4e6, 0xaec6,
- 0xb1d8, 0xb1d7, 0xd97a, 0xd97b, 0xb772, 0xe1f5, 0xba57, 0xe9b2,
- 0xa4e7, 0xa5b8, 0xa9f2, 0xccc2, 0xcee9, 0xac48, 0xb1d9, 0xd97c,
- 0xb4b5, 0xb773, 0xe5c1, 0xe5c2, 0xecf0, 0xc25f, 0xf8f0, 0xa4e8,
- 0xccc3, 0xa9f3, 0xac49, 0xceea, 0xaec7, 0xd1d2, 0xd1d0, 0xd1d1,
- 0xaec8, 0xd1cf, 0xb1db, 0xb1dc, 0xd5a8, 0xb1dd, 0xb1da, 0xd97d,
- 0xd97e, 0xddbe, 0xba59, 0xba58, 0xecf1, 0xefd9, 0xf24a, 0xf249,
- 0xf44f, 0xc95e, 0xac4a, 0xa4e9, 0xa5b9, 0xa6ae, 0xa6ad, 0xa6af,
- 0xa6b0, 0xc9ee, 0xc9ed, 0xcaf8, 0xa7f2, 0xcafb, 0xcafa, 0xcaf9,
- 0xcafc, 0xa9f4, 0xccc9, 0xccc5, 0xccce, 0xa9fb, 0xa9f9, 0xccca,
- 0xccc6, 0xcccd, 0xa9f8, 0xaa40, 0xccc8, 0xccc4, 0xa9fe, 0xcccb,
- 0xa9f7, 0xcccc, 0xa9fa, 0xa9fc, 0xccd0, 0xcccf, 0xccc7, 0xa9f6,
- 0xa9f5, 0xa9fd, 0xceef, 0xcef5, 0xac50, 0xac4d, 0xceec, 0xcef1,
- 0xac53, 0xac4b, 0xcef0, 0xac4e, 0xac51, 0xcef3, 0xac4c, 0xcef8,
- 0xac4f, 0xac52, 0xceed, 0xcef2, 0xcef6, 0xceee, 0xceeb, 0xcef7,
- 0xcef4, 0xaed0, 0xaec9, 0xaecc, 0xaecf, 0xd1d5, 0xaeca, 0xd1d3,
- 0xaece, 0xaecb, 0xd1d6, 0xaecd, 0xd5ac, 0xb1df, 0xd5ab, 0xd5ad,
- 0xb1de, 0xb1e3, 0xd1d4, 0xd5aa, 0xd5ae, 0xb1e0, 0xd5a9, 0xb1e2,
- 0xb1e1, 0xd9a7, 0xd9a2, 0xb4b6, 0xb4ba, 0xb4b7, 0xd9a5, 0xd9a8,
- 0xb4b8, 0xb4b9, 0xb4be, 0xddc7, 0xd9a6, 0xb4bc, 0xd9a3, 0xd9a1,
- 0xb4bd, 0xd9a4, 0xb779, 0xddbf, 0xb776, 0xb777, 0xb775, 0xddc4,
- 0xddc3, 0xddc0, 0xb77b, 0xddc2, 0xb4bb, 0xddc6, 0xddc1, 0xb778,
- 0xb774, 0xb77a, 0xddc5, 0xba5c, 0xe1f8, 0xe1f7, 0xe1f6, 0xba5a,
- 0xba5b, 0xe5c5, 0xe5c8, 0xbcc8, 0xbcc7, 0xe5c9, 0xe5c4, 0xbcca,
- 0xe5c6, 0xbcc9, 0xe5c3, 0xe5c7, 0xbee9, 0xbee6, 0xe9bb, 0xe9ba,
- 0xe9b9, 0xe9b4, 0xe9b5, 0xbee7, 0xbee4, 0xbee8, 0xe9b3, 0xbee5,
- 0xe9b6, 0xe9b7, 0xe9bc, 0xe9b8, 0xecf2, 0xc0c7, 0xefdc, 0xc0c6,
- 0xefda, 0xefdb, 0xc260, 0xc36e, 0xf24b, 0xc36d, 0xf451, 0xf452,
- 0xc466, 0xf450, 0xc4e4, 0xf7df, 0xc5ce, 0xf8aa, 0xf8ab, 0xa4ea,
- 0xa6b1, 0xa6b2, 0xa7f3, 0xccd1, 0xac54, 0xaed1, 0xb1e4, 0xb0d2,
- 0xb4bf, 0xb4c0, 0xb3cc, 0xd9a9, 0xb77c, 0xe1fa, 0xe1f9, 0xa4eb,
- 0xa6b3, 0xccd2, 0xaa42, 0xaa41, 0xcef9, 0xcefa, 0xd1d7, 0xd1d8,
- 0xaed2, 0xaed3, 0xaed4, 0xd5af, 0xb1e6, 0xb4c2, 0xb4c1, 0xddc8,
- 0xdf7a, 0xe1fb, 0xe9bd, 0xc261, 0xc467, 0xa4ec, 0xa5bc, 0xa5bd,
- 0xa5bb, 0xa5be, 0xa5ba, 0xa6b6, 0xc9f6, 0xa6b5, 0xa6b7, 0xc9f1,
- 0xc9f0, 0xc9f3, 0xc9f2, 0xc9f5, 0xa6b4, 0xc9ef, 0xc9f4, 0xcafd,
- 0xa7fd, 0xcafe, 0xcb43, 0xa7fc, 0xcb47, 0xcb42, 0xcb45, 0xa7f5,
- 0xa7f6, 0xa7f7, 0xa7f8, 0xa840, 0xcb41, 0xa7fa, 0xa841, 0xcb40,
- 0xcb46, 0xa7f9, 0xcb44, 0xa7fb, 0xa7f4, 0xa7fe, 0xaa57, 0xccd4,
- 0xaa43, 0xaa4d, 0xaa4e, 0xaa46, 0xaa58, 0xaa48, 0xccdc, 0xaa53,
- 0xccd7, 0xaa49, 0xcce6, 0xcce7, 0xccdf, 0xccd8, 0xaa56, 0xcce4,
- 0xaa51, 0xaa4f, 0xcce5, 0xcce3, 0xccdb, 0xccd3, 0xccda, 0xaa4a,
- 0xaa50, 0xaa44, 0xccde, 0xccdd, 0xccd5, 0xaa52, 0xcce1, 0xccd6,
- 0xaa55, 0xcce8, 0xaa45, 0xaa4c, 0xccd9, 0xcce2, 0xaa54, 0xaa47,
- 0xaa4b, 0xcce0, 0xcf5b, 0xac5c, 0xac69, 0xcf56, 0xcf4c, 0xac62,
- 0xcf4a, 0xac5b, 0xcf45, 0xac65, 0xcf52, 0xcefe, 0xcf41, 0xcf44,
- 0xcefb, 0xcf51, 0xcf61, 0xac60, 0xcf46, 0xcf58, 0xcefd, 0xcf5f,
- 0xcf60, 0xcf63, 0xcf5a, 0xcf4b, 0xcf53, 0xac66, 0xac59, 0xac61,
- 0xac6d, 0xac56, 0xac58, 0xcf43, 0xac6a, 0xac63, 0xcf5d, 0xcf40,
- 0xac6c, 0xac67, 0xcf49, 0xac6b, 0xcf50, 0xcf48, 0xac64, 0xcf5c,
- 0xcf54, 0xac5e, 0xcf62, 0xcf47, 0xac5a, 0xcf59, 0xcf4f, 0xac5f,
- 0xcf55, 0xac57, 0xcefc, 0xac68, 0xaee3, 0xac5d, 0xcf4e, 0xcf4d,
- 0xcf42, 0xcf5e, 0xcf57, 0xac55, 0xd1ec, 0xaeea, 0xd1ed, 0xd1e1,
- 0xaedf, 0xaeeb, 0xd1da, 0xd1e3, 0xd1eb, 0xd1d9, 0xd1f4, 0xaed5,
- 0xd1f3, 0xd1ee, 0xd1ef, 0xaedd, 0xaee8, 0xd1e5, 0xd1e6, 0xd1f0,
- 0xd1e7, 0xd1e2, 0xd1dc, 0xd1dd, 0xd1ea, 0xd1e4, 0xaed6, 0xaeda,
- 0xd1f2, 0xd1de, 0xaee6, 0xaee2, 0xaee5, 0xaeec, 0xaedb, 0xaee7,
- 0xd1e9, 0xaee9, 0xaed8, 0xaed7, 0xd1db, 0xd1df, 0xaee0, 0xd1f1,
- 0xd1e8, 0xd1e0, 0xaee4, 0xaee1, 0xaed9, 0xaedc, 0xd5c4, 0xd5b4,
- 0xd5b5, 0xd5b9, 0xd5c8, 0xd5c5, 0xd5be, 0xd5bd, 0xb1ed, 0xd5c1,
- 0xd5d0, 0xd5b0, 0xd5d1, 0xd5c3, 0xd5d5, 0xd5c9, 0xb1ec, 0xd5c7,
- 0xb1e7, 0xb1fc, 0xb1f2, 0xb1f6, 0xb1f5, 0xd5b1, 0xd5ce, 0xd5d4,
- 0xd5cc, 0xd5d3, 0xd5c0, 0xd5b2, 0xd5d2, 0xd5c2, 0xb1ea, 0xb1f7,
- 0xd5cb, 0xb1f0, 0xd5ca, 0xd5b3, 0xb1f8, 0xb1fa, 0xd5cd, 0xb1fb,
- 0xb1e9, 0xd5ba, 0xd5cf, 0xb1ef, 0xb1f9, 0xd5bc, 0xd5c6, 0xd5b7,
- 0xd5bb, 0xb1f4, 0xd5b6, 0xb1e8, 0xb1f1, 0xb1ee, 0xd5bf, 0xaede,
- 0xd9c0, 0xb1eb, 0xb1f3, 0xd9c3, 0xd9d9, 0xd9ce, 0xb4d6, 0xb4d1,
- 0xd9bd, 0xb4d2, 0xd9cd, 0xd9c6, 0xd9d3, 0xb4ce, 0xd9ab, 0xd9d5,
- 0xb4c4, 0xd9b3, 0xb4c7, 0xb4c6, 0xb4d7, 0xd9ad, 0xd9cf, 0xd9d0,
- 0xb4c9, 0xb4c5, 0xd9bb, 0xb4d0, 0xd9b6, 0xd9d1, 0xb4cc, 0xd9c9,
- 0xd9d6, 0xd9b0, 0xd9b5, 0xd9af, 0xb4cb, 0xd9c2, 0xddde, 0xd9b1,
- 0xb4cf, 0xd9ba, 0xd9d2, 0xb4ca, 0xd9b7, 0xd9b4, 0xd9c5, 0xb4cd,
- 0xb4c3, 0xb4d9, 0xd9c8, 0xd9c7, 0xd9ac, 0xb4c8, 0xd9d4, 0xd9bc,
- 0xd9be, 0xd9cb, 0xd9ca, 0xd9aa, 0xb4d3, 0xb4d5, 0xd9b2, 0xd9b9,
- 0xd9c1, 0xb4d4, 0xd9b8, 0xd9c4, 0xd9d7, 0xd9cc, 0xd9d8, 0xd9ae,
- 0xddf2, 0xb7a6, 0xddf0, 0xdddb, 0xdde0, 0xddd9, 0xddec, 0xddcb,
- 0xddd2, 0xddea, 0xddf4, 0xdddc, 0xddcf, 0xdde2, 0xdde7, 0xddd3,
- 0xdde4, 0xddd0, 0xddd7, 0xddd8, 0xb7a8, 0xddeb, 0xdde9, 0xddcc,
- 0xddee, 0xddef, 0xddf1, 0xb7ac, 0xb7a4, 0xd5b8, 0xddd4, 0xdde6,
- 0xddd5, 0xb7a1, 0xb7b1, 0xdded, 0xb7af, 0xb7ab, 0xddca, 0xb7a3,
- 0xddcd, 0xb7b0, 0xdddd, 0xddc9, 0xb7a9, 0xdde1, 0xddd1, 0xb7aa,
- 0xddda, 0xb77e, 0xb4d8, 0xdde3, 0xd9bf, 0xddce, 0xdde8, 0xb7a5,
- 0xdde5, 0xb7a2, 0xdddf, 0xb7ad, 0xddd6, 0xddf3, 0xb7a7, 0xdec6,
- 0xb7ae, 0xe24a, 0xe248, 0xe25e, 0xe246, 0xe258, 0xb77d, 0xba5f,
- 0xe242, 0xe25d, 0xe247, 0xe255, 0xba64, 0xba5d, 0xe25b, 0xe240,
- 0xe25a, 0xba6f, 0xe251, 0xe261, 0xba6d, 0xe249, 0xba5e, 0xe24b,
- 0xe259, 0xba67, 0xe244, 0xba6b, 0xba61, 0xe24d, 0xe243, 0xe1fc,
- 0xe257, 0xba68, 0xe260, 0xe1fd, 0xba65, 0xe253, 0xba66, 0xe245,
- 0xe250, 0xe24c, 0xe24e, 0xba60, 0xe25f, 0xba6e, 0xe24f, 0xe262,
- 0xe1fe, 0xe254, 0xba63, 0xba6c, 0xba6a, 0xe241, 0xe256, 0xba69,
- 0xba62, 0xe252, 0xe25c, 0xe5d5, 0xe5d1, 0xe5cd, 0xe5e1, 0xe5de,
- 0xbccd, 0xe5e5, 0xe5d4, 0xbcd8, 0xe5db, 0xe5d0, 0xe5da, 0xbcd5,
- 0xe5ee, 0xe5eb, 0xe5dd, 0xe5ce, 0xe5e2, 0xe5e4, 0xbcd1, 0xe5d8,
- 0xe5d3, 0xe5ca, 0xbcce, 0xbcd6, 0xe5e7, 0xbcd7, 0xe5cb, 0xe5ed,
- 0xe5e0, 0xe5e6, 0xbcd4, 0xe5e3, 0xe5ea, 0xbcd9, 0xbcd3, 0xe5dc,
- 0xe5cf, 0xe5ef, 0xe5cc, 0xe5e8, 0xbcd0, 0xe5d6, 0xe5d7, 0xbccf,
- 0xbccc, 0xe5d2, 0xbcd2, 0xbccb, 0xe5e9, 0xe5ec, 0xe5d9, 0xe9ca,
- 0xe9c2, 0xe9be, 0xbef6, 0xbeeb, 0xbef0, 0xbeec, 0xe9cc, 0xe9d7,
- 0xbeea, 0xe9c4, 0xe9cd, 0xe5df, 0xe9ce, 0xbef1, 0xe9dd, 0xbef5,
- 0xbef8, 0xe9c0, 0xbef4, 0xe9db, 0xe9dc, 0xe9d2, 0xe9d1, 0xe9c9,
- 0xe9d3, 0xe9da, 0xe9d9, 0xbeef, 0xbeed, 0xe9cb, 0xe9c8, 0xe9c5,
- 0xe9d8, 0xbef7, 0xe9d6, 0xbef3, 0xbef2, 0xe9d0, 0xe9bf, 0xe9c1,
- 0xe9c3, 0xe9d5, 0xe9cf, 0xbeee, 0xe9c6, 0xe9d4, 0xe9c7, 0xc0cf,
- 0xed45, 0xc0c8, 0xecf5, 0xed41, 0xc0ca, 0xed48, 0xecfc, 0xecf7,
- 0xed49, 0xecf3, 0xecfe, 0xc0d1, 0xed44, 0xed4a, 0xecfd, 0xc0c9,
- 0xed40, 0xecf4, 0xc0d0, 0xed47, 0xecf9, 0xc0cc, 0xecfb, 0xecf8,
- 0xc0d2, 0xecfa, 0xc0cb, 0xc0ce, 0xed43, 0xecf6, 0xed46, 0xed42,
- 0xc263, 0xefe7, 0xc268, 0xc269, 0xc262, 0xefe6, 0xefe3, 0xefe4,
- 0xc266, 0xefde, 0xefe2, 0xc265, 0xefdf, 0xc267, 0xc264, 0xefdd,
- 0xefe1, 0xefe5, 0xf251, 0xf24e, 0xf257, 0xf256, 0xf254, 0xf24f,
- 0xc372, 0xf250, 0xc371, 0xc0cd, 0xf253, 0xc370, 0xf258, 0xf252,
- 0xf24d, 0xefe0, 0xc36f, 0xf24c, 0xf456, 0xf455, 0xf255, 0xc468,
- 0xf459, 0xf45a, 0xf454, 0xf458, 0xf453, 0xf5d1, 0xf457, 0xc4e7,
- 0xc4e5, 0xf5cf, 0xf5d2, 0xf5ce, 0xf5d0, 0xc4e6, 0xf6e5, 0xf6e6,
- 0xc576, 0xf6e4, 0xf7e2, 0xc5cf, 0xf7e0, 0xf7e1, 0xf8ac, 0xc656,
- 0xf8f3, 0xf8f1, 0xf8f2, 0xf8f4, 0xf9bb, 0xa4ed, 0xa6b8, 0xaa59,
- 0xcce9, 0xcf64, 0xd1f5, 0xd1f7, 0xd1f6, 0xd1f8, 0xb1fd, 0xd5d7,
- 0xd1f9, 0xd5d6, 0xd5d8, 0xd5d9, 0xd9da, 0xb4db, 0xd9db, 0xd9dd,
- 0xb4dc, 0xb4da, 0xd9dc, 0xddfa, 0xddf8, 0xddf7, 0xddf6, 0xddf5,
- 0xb7b2, 0xddf9, 0xba70, 0xe263, 0xe265, 0xba71, 0xe264, 0xbcdb,
- 0xbcda, 0xe5f0, 0xe9df, 0xe9de, 0xe9e0, 0xbef9, 0xed4b, 0xc0d3,
- 0xefe8, 0xc26a, 0xf259, 0xc577, 0xa4ee, 0xa5bf, 0xa6b9, 0xa842,
- 0xaa5a, 0xaa5b, 0xac6e, 0xd1fa, 0xb7b3, 0xe6d1, 0xbefa, 0xc26b,
- 0xa4ef, 0xa6ba, 0xcceb, 0xaa5c, 0xccea, 0xcf65, 0xac6f, 0xcf66,
- 0xac70, 0xd1fc, 0xaeee, 0xaeed, 0xd5de, 0xd5dc, 0xd5dd, 0xd5db,
- 0xd5da, 0xd9de, 0xd9e1, 0xb4de, 0xd9df, 0xb4dd, 0xd9e0, 0xddfb,
- 0xe266, 0xe267, 0xe268, 0xe5f3, 0xe5f2, 0xbcdc, 0xe5f1, 0xe5f4,
- 0xe9e1, 0xe9e2, 0xe9e3, 0xed4c, 0xc0d4, 0xc26c, 0xf25a, 0xc4e8,
- 0xc95f, 0xac71, 0xcf67, 0xaeef, 0xb1fe, 0xb4df, 0xd9e2, 0xb7b5,
- 0xb7b4, 0xe269, 0xe26a, 0xbcdd, 0xbcde, 0xe9e5, 0xe9e4, 0xefe9,
- 0xf7e3, 0xa4f0, 0xc960, 0xa5c0, 0xa843, 0xcb48, 0xac72, 0xb7b6,
- 0xa4f1, 0xcf68, 0xac73, 0xcf69, 0xc0d5, 0xa4f2, 0xccec, 0xcf6a,
- 0xd242, 0xd241, 0xd1fe, 0xd1fd, 0xd243, 0xd240, 0xb240, 0xb241,
- 0xb4e0, 0xd9e3, 0xd9e4, 0xd9e5, 0xde41, 0xde42, 0xde40, 0xddfd,
- 0xddfe, 0xb7b7, 0xe26b, 0xe5f7, 0xe5f6, 0xe5f5, 0xe5f8, 0xe9e7,
- 0xe9e6, 0xbefb, 0xe9e8, 0xc0d6, 0xed4d, 0xefea, 0xf25b, 0xf6e7,
- 0xa4f3, 0xa5c2, 0xa5c1, 0xaa5d, 0xc961, 0xc97e, 0xa6bb, 0xc9f7,
- 0xcb49, 0xcb4a, 0xaa5e, 0xcced, 0xac74, 0xcf6b, 0xcf6c, 0xaef0,
- 0xaef4, 0xd244, 0xaef3, 0xaef1, 0xaef2, 0xd5df, 0xb242, 0xb4e3,
- 0xb4e1, 0xb4e2, 0xd9e6, 0xba72, 0xa4f4, 0xc9a1, 0xa5c3, 0xc9a4,
- 0xa5c6, 0xc9a3, 0xa5c5, 0xa5c4, 0xa844, 0xc9a2, 0xc9f8, 0xc9fc,
- 0xc9fe, 0xca40, 0xa6c5, 0xa6c6, 0xc9fb, 0xa6c1, 0xc9f9, 0xc9fd,
- 0xa6c2, 0xa6bd, 0xa6be, 0xa6c4, 0xc9fa, 0xa6bc, 0xa845, 0xa6bf,
- 0xa6c0, 0xa6c3, 0xcb5b, 0xcb59, 0xcb4c, 0xa851, 0xcb53, 0xa84c,
- 0xcb4d, 0xcb55, 0xcb52, 0xa84f, 0xcb51, 0xa856, 0xcb5a, 0xa858,
- 0xa85a, 0xcb4b, 0xa84d, 0xcb5c, 0xa854, 0xa857, 0xcd45, 0xa847,
- 0xa85e, 0xa855, 0xcb4e, 0xa84a, 0xa859, 0xcb56, 0xa848, 0xa849,
- 0xcd43, 0xcb4f, 0xa850, 0xa85b, 0xcb5d, 0xcb50, 0xa84e, 0xa853,
- 0xccee, 0xa85c, 0xcb57, 0xa852, 0xa85d, 0xa846, 0xcb54, 0xa84b,
- 0xcb58, 0xcd44, 0xaa6a, 0xaa7a, 0xccf5, 0xaa71, 0xcd4b, 0xaa62,
- 0xaa65, 0xcd42, 0xccf3, 0xccf7, 0xaa6d, 0xaa6f, 0xccfa, 0xaa76,
- 0xaa68, 0xaa66, 0xaa67, 0xaa75, 0xcd47, 0xaa70, 0xccf9, 0xccfb,
- 0xaa6e, 0xaa73, 0xccfc, 0xcd4a, 0xac75, 0xaa79, 0xaa63, 0xcd49,
- 0xcd4d, 0xccf8, 0xcd4f, 0xcd40, 0xaa6c, 0xccf4, 0xaa6b, 0xaa7d,
- 0xaa72, 0xccf2, 0xcf75, 0xaa78, 0xaa7c, 0xcd41, 0xcd46, 0xaa7e,
- 0xaa77, 0xaa69, 0xaa5f, 0xaa64, 0xccf6, 0xaa60, 0xcd4e, 0xccf0,
- 0xccef, 0xccfd, 0xccf1, 0xaa7b, 0xaef5, 0xaa74, 0xccfe, 0xaa61,
- 0xaca6, 0xcd4c, 0xcf7c, 0xcfa1, 0xcfa4, 0xcf77, 0xcfa7, 0xcfaa,
- 0xcfac, 0xcf74, 0xac76, 0xac7b, 0xd249, 0xacad, 0xcfa5, 0xcfad,
- 0xcf7b, 0xcf73, 0xd264, 0xac7e, 0xcfa2, 0xcf78, 0xcf7a, 0xaca5,
- 0xcf7d, 0xac7d, 0xcf70, 0xcfa8, 0xcfab, 0xac7a, 0xaca8, 0xcf6d,
- 0xacaa, 0xac78, 0xacae, 0xcfa9, 0xcf6f, 0xacab, 0xd25e, 0xcd48,
- 0xac7c, 0xac77, 0xcf76, 0xcf6e, 0xacac, 0xaca4, 0xcfa3, 0xaca9,
- 0xaca7, 0xcf79, 0xaca1, 0xcf71, 0xaca2, 0xaca3, 0xcf72, 0xcfa6,
- 0xac79, 0xcf7e, 0xd24c, 0xaefd, 0xaf43, 0xd255, 0xd25b, 0xd257,
- 0xd24a, 0xd24d, 0xd246, 0xd247, 0xaf4a, 0xaefa, 0xd256, 0xd25f,
- 0xaf45, 0xaef6, 0xaf40, 0xd24e, 0xaf42, 0xd24f, 0xd259, 0xaf44,
- 0xd268, 0xd248, 0xaefc, 0xaefb, 0xaf48, 0xd245, 0xd266, 0xd25a,
- 0xd267, 0xd261, 0xd253, 0xd262, 0xd25c, 0xd265, 0xd263, 0xaf49,
- 0xd254, 0xaef9, 0xaef8, 0xaf41, 0xaf47, 0xd260, 0xaf46, 0xd251,
- 0xb243, 0xd269, 0xd250, 0xd24b, 0xaefe, 0xaf4b, 0xaef7, 0xd258,
- 0xd25d, 0xb265, 0xd5e1, 0xd5e5, 0xb252, 0xb250, 0xb247, 0xd5e3,
- 0xd5e2, 0xb25b, 0xd5e8, 0xb255, 0xd5fa, 0xd647, 0xb244, 0xd5f7,
- 0xd5f0, 0xb267, 0xd5e0, 0xd5fc, 0xb264, 0xb258, 0xb263, 0xb24e,
- 0xd5ec, 0xd5fe, 0xd5f6, 0xb24f, 0xb249, 0xd645, 0xd5fd, 0xd640,
- 0xb251, 0xb259, 0xd642, 0xd5ea, 0xd5fb, 0xd5ef, 0xd644, 0xb25e,
- 0xb246, 0xb25c, 0xd5f4, 0xd5f2, 0xd5f3, 0xb253, 0xd5ee, 0xd5ed,
- 0xb248, 0xd5e7, 0xd646, 0xb24a, 0xd5f1, 0xb268, 0xb262, 0xd5e6,
- 0xb25f, 0xb25d, 0xb266, 0xd5f8, 0xb261, 0xd252, 0xd5f9, 0xb260,
- 0xd641, 0xb245, 0xd5f5, 0xb257, 0xd5e9, 0xb256, 0xb254, 0xb24c,
- 0xb24b, 0xd9e7, 0xd643, 0xd5eb, 0xd9fc, 0xb24d, 0xb541, 0xb25a,
- 0xb4ee, 0xd9f6, 0xb4fc, 0xd9ea, 0xb4eb, 0xb4e7, 0xda49, 0xb4ed,
- 0xb4f1, 0xb4ec, 0xb4f5, 0xda4d, 0xda44, 0xd9f1, 0xb4fa, 0xb4f4,
- 0xd9fd, 0xb4e4, 0xda4a, 0xda43, 0xb4e8, 0xd9f7, 0xb4f7, 0xda55,
- 0xda56, 0xb4e5, 0xda48, 0xb4f9, 0xd9fb, 0xd9ed, 0xd9ee, 0xb4fd,
- 0xd9f2, 0xd9f9, 0xd9f3, 0xb4fb, 0xb544, 0xd9ef, 0xd9e8, 0xd9e9,
- 0xd9eb, 0xb4ea, 0xd9f8, 0xb4f8, 0xb542, 0xd9fa, 0xda53, 0xda4b,
- 0xb4e6, 0xda51, 0xb4f2, 0xb4f0, 0xda57, 0xb4ef, 0xda41, 0xd9f4,
- 0xd9fe, 0xb547, 0xda45, 0xda42, 0xd9f0, 0xb543, 0xda4f, 0xda4c,
- 0xda54, 0xb4e9, 0xda40, 0xb546, 0xda47, 0xb4f3, 0xb4f6, 0xda46,
- 0xb545, 0xd9f5, 0xd5e4, 0xda50, 0xda4e, 0xda52, 0xd9ec, 0xb540,
- 0xde61, 0xde60, 0xde46, 0xb7bd, 0xde5f, 0xde49, 0xde4a, 0xb7c7,
- 0xde68, 0xb7c2, 0xde5e, 0xde43, 0xb7c8, 0xb7be, 0xde52, 0xde48,
- 0xde4b, 0xde63, 0xb7b8, 0xde6a, 0xde62, 0xb7c1, 0xde57, 0xb7cc,
- 0xb7cb, 0xb7c5, 0xde69, 0xb7b9, 0xde55, 0xde4c, 0xde59, 0xde65,
- 0xb7cd, 0xb7bb, 0xde54, 0xde4d, 0xb7c4, 0xb7c3, 0xde50, 0xde5a,
- 0xde64, 0xde47, 0xde51, 0xb7bc, 0xde5b, 0xb7c9, 0xb7c0, 0xde4e,
- 0xb7bf, 0xde45, 0xde53, 0xde67, 0xb4fe, 0xbab0, 0xde56, 0xe26c,
- 0xde58, 0xde66, 0xb7c6, 0xde4f, 0xb7ba, 0xb7ca, 0xbcf0, 0xde44,
- 0xde5d, 0xde5c, 0xe2aa, 0xbaad, 0xe27d, 0xe2a4, 0xbaa2, 0xe26e,
- 0xbaaf, 0xba77, 0xe26d, 0xe2b0, 0xbab1, 0xe271, 0xe2a3, 0xe273,
- 0xe2b3, 0xe2af, 0xba75, 0xbaa1, 0xe653, 0xbaae, 0xba7d, 0xe26f,
- 0xe2ae, 0xbaa3, 0xe2ab, 0xe2b8, 0xe275, 0xe27e, 0xe2b6, 0xe2ac,
- 0xba7c, 0xe27c, 0xba76, 0xba74, 0xbaa8, 0xe27a, 0xe277, 0xe278,
- 0xe2b2, 0xe2b7, 0xe2b5, 0xba7a, 0xe2b9, 0xba7e, 0xbaa7, 0xe270,
- 0xe5fa, 0xe279, 0xba78, 0xbaac, 0xbaa9, 0xba7b, 0xe2a5, 0xe274,
- 0xbaaa, 0xe2a7, 0xbaa4, 0xbaa6, 0xba73, 0xe2a9, 0xe2a1, 0xe272,
- 0xbaa5, 0xe2b1, 0xe2b4, 0xe27b, 0xe2a8, 0xba79, 0xbcdf, 0xe2a6,
- 0xe5f9, 0xe2ad, 0xe276, 0xe644, 0xe64e, 0xbce2, 0xe64d, 0xe659,
- 0xbce4, 0xe64b, 0xe64f, 0xbcef, 0xe646, 0xbce7, 0xe652, 0xe9f0,
- 0xbcf3, 0xbcf2, 0xe654, 0xe643, 0xe65e, 0xbced, 0xbce3, 0xe657,
- 0xe65b, 0xe660, 0xe655, 0xe649, 0xbce6, 0xbce9, 0xbcf1, 0xbcec,
- 0xe64c, 0xe2a2, 0xe648, 0xe65f, 0xbce8, 0xbceb, 0xe661, 0xbce0,
- 0xe656, 0xe5fb, 0xe65c, 0xc0df, 0xe64a, 0xbce1, 0xe645, 0xbce5,
- 0xe5fc, 0xbaab, 0xe641, 0xe65a, 0xe642, 0xe640, 0xbcea, 0xe658,
- 0xe5fe, 0xe651, 0xe650, 0xe65d, 0xe647, 0xbcee, 0xe9f3, 0xbf49,
- 0xbefe, 0xea40, 0xe9eb, 0xbf41, 0xe9f7, 0xbf48, 0xbf43, 0xe9f5,
- 0xed4f, 0xe9fb, 0xea42, 0xe9fa, 0xe9e9, 0xe9f8, 0xea44, 0xea46,
- 0xbefd, 0xea45, 0xbf44, 0xbf4a, 0xbf47, 0xe9fe, 0xbf46, 0xe9f9,
- 0xe9ed, 0xe9f2, 0xe9fd, 0xbf45, 0xbf42, 0xbefc, 0xbf40, 0xe9f1,
- 0xe5fd, 0xe9ec, 0xe9ef, 0xea41, 0xe9f4, 0xe9ea, 0xed4e, 0xea43,
- 0xe9ee, 0xe9fc, 0xed51, 0xc0e3, 0xc0d7, 0xc0db, 0xed53, 0xed59,
- 0xed57, 0xc0d9, 0xc0da, 0xc0e1, 0xed5a, 0xed52, 0xc0dc, 0xed56,
- 0xed55, 0xed5b, 0xc0e2, 0xc0dd, 0xc0e0, 0xed54, 0xc0e4, 0xc0de,
- 0xc0e5, 0xc0d8, 0xed58, 0xed50, 0xeff7, 0xc271, 0xeff4, 0xeff6,
- 0xc26f, 0xeff2, 0xeff3, 0xefee, 0xe9f6, 0xefef, 0xc270, 0xefeb,
- 0xc26d, 0xeff8, 0xc26e, 0xefec, 0xefed, 0xeff1, 0xc273, 0xc272,
- 0xeff0, 0xc378, 0xf25f, 0xf265, 0xc379, 0xf25c, 0xc376, 0xc373,
- 0xf267, 0xc377, 0xc374, 0xf25e, 0xf261, 0xf262, 0xf263, 0xf266,
- 0xeff5, 0xf25d, 0xc375, 0xf264, 0xf268, 0xf260, 0xf45d, 0xc46a,
- 0xf460, 0xc46b, 0xf468, 0xf45f, 0xf45c, 0xf45e, 0xf462, 0xf465,
- 0xf464, 0xf467, 0xf45b, 0xc469, 0xf463, 0xf466, 0xf469, 0xf461,
- 0xf5d3, 0xf5d4, 0xf5d8, 0xf5d9, 0xf5d6, 0xf5d7, 0xf5d5, 0xc4e9,
- 0xc578, 0xf6eb, 0xf6e8, 0xf6e9, 0xf6ea, 0xc579, 0xf7e5, 0xf7e4,
- 0xf8af, 0xc5f4, 0xf8ad, 0xf8b0, 0xf8ae, 0xf8f5, 0xc657, 0xc665,
- 0xf9a3, 0xf96c, 0xf9a2, 0xf9d0, 0xf9d1, 0xa4f5, 0xa6c7, 0xca41,
- 0xcb5e, 0xa85f, 0xa862, 0xcb5f, 0xa860, 0xa861, 0xcd58, 0xcd5a,
- 0xcd55, 0xcd52, 0xcd54, 0xaaa4, 0xaaa2, 0xcd56, 0xaaa3, 0xcd53,
- 0xcd50, 0xaaa1, 0xcd57, 0xcd51, 0xaaa5, 0xcd59, 0xcfaf, 0xcfb3,
- 0xacb7, 0xcfb6, 0xacaf, 0xacb2, 0xacb4, 0xacb6, 0xacb3, 0xcfb2,
- 0xcfb1, 0xacb1, 0xcfb4, 0xcfb5, 0xcfae, 0xacb5, 0xacb0, 0xcfb0,
- 0xd277, 0xd278, 0xd279, 0xaf50, 0xaf4c, 0xd26e, 0xd276, 0xd27b,
- 0xaf51, 0xd26c, 0xd272, 0xd26b, 0xd275, 0xd271, 0xaf4d, 0xaf4f,
- 0xd27a, 0xd26a, 0xd26d, 0xd273, 0xd274, 0xd27c, 0xd270, 0xaf4e,
- 0xb26d, 0xd64e, 0xd650, 0xd64c, 0xd658, 0xd64a, 0xd657, 0xb269,
- 0xd648, 0xda5b, 0xd652, 0xb26c, 0xd653, 0xd656, 0xd65a, 0xd64f,
- 0xd654, 0xb26a, 0xb26b, 0xd659, 0xd64d, 0xd649, 0xd65b, 0xd651,
- 0xd655, 0xd64b, 0xb548, 0xb549, 0xda65, 0xb54f, 0xda59, 0xda62,
- 0xda58, 0xb54c, 0xda60, 0xda5e, 0xda5f, 0xb54a, 0xda63, 0xda5c,
- 0xda5a, 0xb54b, 0xda5d, 0xda61, 0xb54d, 0xda64, 0xde70, 0xde77,
- 0xde79, 0xdea1, 0xb7da, 0xde6b, 0xb7d2, 0xde7a, 0xb7d7, 0xdea2,
- 0xb7ce, 0xde7d, 0xde6d, 0xde7e, 0xde6c, 0xb7dc, 0xde78, 0xb7cf,
- 0xdea3, 0xb7d4, 0xde71, 0xb7d9, 0xde7c, 0xde6f, 0xde76, 0xde72,
- 0xde6e, 0xb7d1, 0xb7d8, 0xb7d6, 0xb7d3, 0xb7db, 0xb7d0, 0xde75,
- 0xb7d5, 0xb54e, 0xde7b, 0xde73, 0xde74, 0xe2c1, 0xbab4, 0xe2bd,
- 0xe2c3, 0xe2bf, 0xbab6, 0xe2be, 0xe2c2, 0xe2ba, 0xe2bc, 0xbab5,
- 0xe2c0, 0xe2bb, 0xbab7, 0xbab2, 0xe2c4, 0xbab3, 0xe667, 0xe664,
- 0xe670, 0xe66a, 0xe66c, 0xbcf4, 0xe666, 0xe66e, 0xe66d, 0xe66b,
- 0xe671, 0xbcf7, 0xe668, 0xe66f, 0xbcf5, 0xe663, 0xe665, 0xbcf6,
- 0xe662, 0xe672, 0xe669, 0xea4a, 0xbf51, 0xea55, 0xea53, 0xbf4b,
- 0xea49, 0xea4c, 0xea4d, 0xea48, 0xbf55, 0xbf56, 0xea47, 0xea56,
- 0xea51, 0xbf4f, 0xbf4c, 0xea50, 0xea4e, 0xbf52, 0xea52, 0xbf4d,
- 0xbf4e, 0xea4f, 0xbf50, 0xea4b, 0xea54, 0xbf53, 0xea57, 0xea58,
- 0xbf54, 0xc0e7, 0xc0ee, 0xed5c, 0xed62, 0xed60, 0xc0ea, 0xc0e9,
- 0xc0e6, 0xed5e, 0xc0ec, 0xc0eb, 0xc0e8, 0xed61, 0xed5d, 0xed5f,
- 0xc0ed, 0xc277, 0xeffb, 0xc274, 0xc275, 0xeffd, 0xc276, 0xeffa,
- 0xeff9, 0xf26c, 0xeffc, 0xf26d, 0xc37a, 0xf26b, 0xf26a, 0xf269,
- 0xc37b, 0xc46c, 0xf46a, 0xf46b, 0xf5dc, 0xf5db, 0xc4ea, 0xf5da,
- 0xf6ec, 0xf6ed, 0xf7e6, 0xf8b1, 0xf8f6, 0xf9bc, 0xc679, 0xf9c6,
- 0xa4f6, 0xaaa6, 0xaaa7, 0xacb8, 0xc0ef, 0xa4f7, 0xaaa8, 0xaf52,
- 0xb7dd, 0xa4f8, 0xb26e, 0xbab8, 0xc962, 0xcfb7, 0xd27d, 0xe2c5,
- 0xc0f0, 0xa4f9, 0xaaa9, 0xcfb8, 0xcfb9, 0xda66, 0xb550, 0xdea4,
- 0xb7de, 0xe2c6, 0xbcf8, 0xc37c, 0xa4fa, 0xda67, 0xa4fb, 0xa6c9,
- 0xca42, 0xa6c8, 0xa865, 0xa864, 0xa863, 0xcb60, 0xaaaa, 0xaaab,
- 0xcd5b, 0xcfba, 0xcfbd, 0xacba, 0xcfbb, 0xacb9, 0xcfbc, 0xacbb,
- 0xd2a2, 0xd2a1, 0xd27e, 0xaf53, 0xd65d, 0xd65e, 0xb26f, 0xd65c,
- 0xd65f, 0xb552, 0xb270, 0xb551, 0xda6b, 0xda6a, 0xda68, 0xda69,
- 0xda6c, 0xdea6, 0xdea5, 0xdea9, 0xdea8, 0xdea7, 0xbab9, 0xe2c9,
- 0xe2c8, 0xbaba, 0xe2c7, 0xe673, 0xe674, 0xbcf9, 0xea59, 0xea5a,
- 0xf272, 0xc37d, 0xf271, 0xf270, 0xf26e, 0xf26f, 0xc4eb, 0xf46c,
- 0xf6ee, 0xf8f7, 0xa4fc, 0xc9a5, 0xa5c7, 0xc9a6, 0xca43, 0xca44,
- 0xcb66, 0xcb62, 0xcb61, 0xaaac, 0xcb65, 0xa867, 0xcb63, 0xa866,
- 0xcb67, 0xcb64, 0xcd5f, 0xcfbe, 0xcd5d, 0xcd64, 0xaaad, 0xaab0,
- 0xcd65, 0xcd61, 0xcd62, 0xcd5c, 0xaaaf, 0xcd5e, 0xaaae, 0xcd63,
- 0xcd60, 0xcfc2, 0xacbd, 0xacbe, 0xcfc5, 0xcfbf, 0xcfc4, 0xcfc0,
- 0xacbc, 0xcfc3, 0xcfc1, 0xd2a8, 0xd2a5, 0xd2a7, 0xaf58, 0xaf57,
- 0xaf55, 0xd2a4, 0xd2a9, 0xaf54, 0xaf56, 0xd2a6, 0xd667, 0xd2a3,
- 0xd2aa, 0xd662, 0xd666, 0xd665, 0xda6e, 0xda79, 0xd668, 0xd663,
- 0xda6d, 0xb274, 0xb273, 0xd661, 0xd664, 0xb275, 0xb272, 0xb271,
- 0xd660, 0xd669, 0xda70, 0xda77, 0xb554, 0xda76, 0xda73, 0xb556,
- 0xda75, 0xda6f, 0xda71, 0xda74, 0xda72, 0xb555, 0xda78, 0xb553,
- 0xb7df, 0xdead, 0xdeac, 0xdeaa, 0xb7e2, 0xb7e1, 0xdeae, 0xdeab,
- 0xe2ca, 0xbabb, 0xb7e0, 0xdeb0, 0xdeaf, 0xe2cd, 0xe2cb, 0xbcfa,
- 0xbabc, 0xe2cc, 0xe676, 0xbcfb, 0xe675, 0xe67e, 0xe67d, 0xe67b,
- 0xe67a, 0xe677, 0xe678, 0xe679, 0xe67c, 0xe6a1, 0xea5f, 0xea5c,
- 0xea5d, 0xbf57, 0xea5b, 0xea61, 0xea60, 0xea5e, 0xed64, 0xed65,
- 0xc0f1, 0xc0f2, 0xed63, 0xc279, 0xeffe, 0xc278, 0xc37e, 0xc3a1,
- 0xc46d, 0xf46e, 0xf46d, 0xf5dd, 0xf6ef, 0xc57a, 0xf7e8, 0xf7e7,
- 0xf7e9, 0xa5c8, 0xcfc6, 0xaf59, 0xb276, 0xd66a, 0xa5c9, 0xc9a7,
- 0xa4fd, 0xca45, 0xcb6c, 0xcb6a, 0xcb6b, 0xcb68, 0xa868, 0xcb69,
- 0xcd6d, 0xaab3, 0xcd6b, 0xcd67, 0xcd6a, 0xcd66, 0xaab5, 0xcd69,
- 0xaab2, 0xaab1, 0xaab4, 0xcd6c, 0xcd68, 0xacc2, 0xacc5, 0xcfce,
- 0xcfcd, 0xcfcc, 0xacbf, 0xcfd5, 0xcfcb, 0xacc1, 0xd2af, 0xcfd2,
- 0xcfd0, 0xacc4, 0xcfc8, 0xcfd3, 0xcfca, 0xcfd4, 0xcfd1, 0xcfc9,
- 0xacc0, 0xcfd6, 0xcfc7, 0xacc3, 0xd2b4, 0xd2ab, 0xd2b6, 0xd2ae,
- 0xd2b9, 0xd2ba, 0xd2ac, 0xd2b8, 0xd2b5, 0xd2b3, 0xd2b7, 0xaf5f,
- 0xaf5d, 0xd2b1, 0xd2ad, 0xd2b0, 0xd2bb, 0xd2b2, 0xaf5e, 0xcfcf,
- 0xaf5a, 0xaf5c, 0xd678, 0xd66d, 0xd66b, 0xd66c, 0xd673, 0xd674,
- 0xd670, 0xb27b, 0xd675, 0xd672, 0xd66f, 0xb279, 0xd66e, 0xb277,
- 0xb27a, 0xd671, 0xd679, 0xaf5b, 0xb278, 0xd677, 0xd676, 0xb27c,
- 0xda7e, 0xdaa1, 0xb560, 0xdaa7, 0xdaa9, 0xdaa2, 0xb55a, 0xdaa6,
- 0xdaa5, 0xb55b, 0xb561, 0xb562, 0xdaa8, 0xb558, 0xda7d, 0xda7b,
- 0xdaa3, 0xda7a, 0xb55f, 0xda7c, 0xdaa4, 0xdaaa, 0xb559, 0xb55e,
- 0xb55c, 0xb55d, 0xb557, 0xb7e9, 0xdeb7, 0xb7e8, 0xdebb, 0xdeb1,
- 0xdebc, 0xdeb2, 0xdeb3, 0xdebd, 0xdeba, 0xdeb8, 0xdeb9, 0xdeb5,
- 0xdeb4, 0xdebe, 0xb7e5, 0xdeb6, 0xb7ea, 0xb7e4, 0xb7eb, 0xb7ec,
- 0xb7e7, 0xb7e6, 0xe2ce, 0xbabe, 0xbabd, 0xe2d3, 0xbcfc, 0xbabf,
- 0xbac1, 0xe2d4, 0xb7e3, 0xbac0, 0xe2d0, 0xe2d2, 0xe2cf, 0xe2d1,
- 0xe6ab, 0xe6aa, 0xe6a7, 0xbd40, 0xea62, 0xbd41, 0xe6a6, 0xbcfe,
- 0xe6a8, 0xe6a5, 0xe6a2, 0xe6a9, 0xe6a3, 0xe6a4, 0xbcfd, 0xed69,
- 0xea66, 0xea65, 0xea67, 0xed66, 0xbf5a, 0xea63, 0xbf58, 0xbf5c,
- 0xbf5b, 0xea64, 0xea68, 0xbf59, 0xed6d, 0xc0f5, 0xc27a, 0xc0f6,
- 0xc0f3, 0xed6a, 0xed68, 0xed6b, 0xed6e, 0xc0f4, 0xed6c, 0xed67,
- 0xf042, 0xf045, 0xf275, 0xf040, 0xf46f, 0xf046, 0xc3a2, 0xf044,
- 0xc27b, 0xf041, 0xf043, 0xf047, 0xf276, 0xf274, 0xc3a3, 0xf273,
- 0xc46e, 0xc4ed, 0xf6f1, 0xc4ec, 0xf6f3, 0xf6f0, 0xf6f2, 0xc5d0,
- 0xf8b2, 0xa5ca, 0xcd6e, 0xd2bc, 0xd2bd, 0xb27d, 0xdebf, 0xbf5d,
- 0xc3a4, 0xc57b, 0xf8b3, 0xa5cb, 0xcd6f, 0xa260, 0xcfd7, 0xcfd8,
- 0xd2be, 0xd2bf, 0xb27e, 0xb2a1, 0xdaab, 0xdec2, 0xdec1, 0xdec0,
- 0xe2d5, 0xe2d6, 0xe2d7, 0xbac2, 0xe6ad, 0xe6ac, 0xea69, 0xbf5e,
- 0xbf5f, 0xed72, 0xed6f, 0xed70, 0xed71, 0xf049, 0xf048, 0xc27c,
- 0xf277, 0xf5de, 0xa5cc, 0xacc6, 0xb2a2, 0xdec3, 0xa5cd, 0xd2c0,
- 0xb2a3, 0xb563, 0xb564, 0xa5ce, 0xa5cf, 0xca46, 0xa86a, 0xa869,
- 0xacc7, 0xcfd9, 0xdaac, 0xa5d0, 0xa5d1, 0xa5d2, 0xa5d3, 0xa86b,
- 0xa86c, 0xcb6e, 0xcb6d, 0xaab6, 0xcd72, 0xcd70, 0xcd71, 0xcfda,
- 0xcfdb, 0xaccb, 0xacc9, 0xacca, 0xacc8, 0xaf60, 0xaf64, 0xaf63,
- 0xd2c1, 0xaf62, 0xaf61, 0xd2c2, 0xb2a6, 0xd67b, 0xd67a, 0xb2a4,
- 0xb2a5, 0xb566, 0xb565, 0xdaae, 0xdaad, 0xb2a7, 0xb7ed, 0xdec5,
- 0xb7ee, 0xdec4, 0xe2d8, 0xe6ae, 0xbd42, 0xea6a, 0xed73, 0xc3a6,
- 0xc3a5, 0xc57c, 0xa5d4, 0xcd73, 0xb2a8, 0xe2d9, 0xbac3, 0xcb6f,
- 0xcb70, 0xcd74, 0xaab8, 0xaab9, 0xaab7, 0xaccf, 0xacd0, 0xaccd,
- 0xacce, 0xcfdc, 0xcfdd, 0xaccc, 0xd2c3, 0xaf68, 0xaf69, 0xb2ab,
- 0xd2c9, 0xaf6e, 0xaf6c, 0xd2ca, 0xd2c5, 0xaf6b, 0xaf6a, 0xaf65,
- 0xd2c8, 0xd2c7, 0xd2c4, 0xaf6d, 0xd2c6, 0xaf66, 0xaf67, 0xb2ac,
- 0xd6a1, 0xd6a2, 0xb2ad, 0xd67c, 0xd67e, 0xd6a4, 0xd6a3, 0xd67d,
- 0xb2a9, 0xb2aa, 0xdab6, 0xb56b, 0xb56a, 0xdab0, 0xb568, 0xdab3,
- 0xb56c, 0xdab4, 0xb56d, 0xdab1, 0xb567, 0xb569, 0xdab5, 0xdab2,
- 0xdaaf, 0xded2, 0xdec7, 0xb7f0, 0xb7f3, 0xb7f2, 0xb7f7, 0xb7f6,
- 0xded3, 0xded1, 0xdeca, 0xdece, 0xdecd, 0xb7f4, 0xded0, 0xdecc,
- 0xded4, 0xdecb, 0xb7f5, 0xb7ef, 0xb7f1, 0xdec9, 0xe2db, 0xbac7,
- 0xe2df, 0xbac6, 0xe2dc, 0xbac5, 0xdec8, 0xdecf, 0xe2de, 0xbac8,
- 0xe2e0, 0xe2dd, 0xe2da, 0xe6b1, 0xe6b5, 0xe6b7, 0xe6b3, 0xe6b2,
- 0xe6b0, 0xbd45, 0xbd43, 0xbd48, 0xbd49, 0xe6b4, 0xbd46, 0xe6af,
- 0xbd47, 0xbac4, 0xe6b6, 0xbd44, 0xea6c, 0xea6b, 0xea73, 0xea6d,
- 0xea72, 0xea6f, 0xbf60, 0xea71, 0xbf61, 0xbf62, 0xea70, 0xea6e,
- 0xc0f8, 0xed74, 0xc0f7, 0xed77, 0xed75, 0xed76, 0xc0f9, 0xf04d,
- 0xc2a1, 0xf04e, 0xc27d, 0xf04f, 0xc27e, 0xf04c, 0xf050, 0xf04a,
- 0xc3a7, 0xf278, 0xc3a8, 0xc46f, 0xf04b, 0xc470, 0xc4ee, 0xf5df,
- 0xc57e, 0xf6f4, 0xc57d, 0xf7ea, 0xc5f5, 0xc5f6, 0xf9cc, 0xacd1,
- 0xcfde, 0xb56e, 0xb56f, 0xa5d5, 0xa6ca, 0xca47, 0xcb71, 0xa86d,
- 0xaaba, 0xacd2, 0xacd3, 0xacd4, 0xd6a6, 0xd2cb, 0xaf6f, 0xb2ae,
- 0xd6a5, 0xdab8, 0xb571, 0xdab7, 0xb570, 0xded5, 0xbd4a, 0xe6bb,
- 0xe6b8, 0xe6b9, 0xe6ba, 0xed78, 0xf051, 0xf471, 0xf470, 0xf6f5,
- 0xa5d6, 0xcd75, 0xaf70, 0xb572, 0xded6, 0xe2e1, 0xbd4b, 0xea74,
- 0xf052, 0xf472, 0xa5d7, 0xaabb, 0xacd7, 0xcfdf, 0xacd8, 0xacd6,
- 0xacd5, 0xd2cc, 0xaf71, 0xaf72, 0xaf73, 0xb2b0, 0xd6a7, 0xb2af,
- 0xdab9, 0xb2b1, 0xb573, 0xded7, 0xb7f8, 0xb7f9, 0xbac9, 0xbaca,
- 0xbd4c, 0xbf64, 0xea75, 0xbf63, 0xed79, 0xc0fa, 0xf053, 0xf473,
- 0xa5d8, 0xa86e, 0xcd78, 0xcd77, 0xaabc, 0xcd76, 0xaabd, 0xcd79,
- 0xcfe5, 0xacdb, 0xacda, 0xcfe7, 0xcfe6, 0xacdf, 0xacde, 0xacd9,
- 0xcfe1, 0xcfe2, 0xcfe3, 0xace0, 0xcfe0, 0xacdc, 0xcfe4, 0xacdd,
- 0xd2cf, 0xd2d3, 0xd2d1, 0xd2d0, 0xd2d4, 0xd2d5, 0xd2d6, 0xd2ce,
- 0xd2cd, 0xaf75, 0xaf76, 0xd2d7, 0xd2d2, 0xd6b0, 0xd2d8, 0xaf77,
- 0xaf74, 0xd6aa, 0xd6a9, 0xd6ab, 0xd6ac, 0xd6ae, 0xd6ad, 0xd6b2,
- 0xb2b5, 0xb2b2, 0xb2b6, 0xd6a8, 0xb2b7, 0xd6b1, 0xb2b4, 0xd6af,
- 0xb2b3, 0xdabc, 0xdabe, 0xdaba, 0xdabb, 0xdabf, 0xdac1, 0xdac2,
- 0xdabd, 0xdac0, 0xb574, 0xdedb, 0xdee0, 0xded8, 0xdedc, 0xdee1,
- 0xdedd, 0xb7fa, 0xb843, 0xb7fd, 0xded9, 0xdeda, 0xbace, 0xb846,
- 0xb7fe, 0xb844, 0xb7fc, 0xdedf, 0xb845, 0xdede, 0xb841, 0xb7fb,
- 0xb842, 0xdee2, 0xe2e6, 0xe2e8, 0xb840, 0xe2e3, 0xbacc, 0xe2e9,
- 0xbacd, 0xe2e7, 0xe2e2, 0xe2e5, 0xe2ea, 0xbacb, 0xe2e4, 0xbd4e,
- 0xe6bf, 0xe6be, 0xbd51, 0xbd4f, 0xe6bc, 0xbd4d, 0xe6bd, 0xbd50,
- 0xea7d, 0xeaa1, 0xea7e, 0xea76, 0xea7a, 0xea79, 0xea77, 0xbf66,
- 0xbf67, 0xbf65, 0xea78, 0xea7b, 0xea7c, 0xbf68, 0xc140, 0xeda3,
- 0xc0fc, 0xed7b, 0xc0fe, 0xc141, 0xc0fd, 0xeda2, 0xed7c, 0xc0fb,
- 0xeda1, 0xed7a, 0xed7e, 0xed7d, 0xf055, 0xc2a4, 0xc2a5, 0xc2a2,
- 0xc2a3, 0xf054, 0xf27b, 0xc3a9, 0xf279, 0xf27a, 0xf474, 0xf477,
- 0xf475, 0xf476, 0xf5e0, 0xc4ef, 0xf7eb, 0xf8b4, 0xc5f7, 0xf8f8,
- 0xf8f9, 0xc666, 0xa5d9, 0xace1, 0xdac3, 0xdee3, 0xa5da, 0xa86f,
- 0xaabe, 0xcfe8, 0xcfe9, 0xaf78, 0xdac4, 0xb575, 0xb847, 0xc142,
- 0xeda4, 0xf27c, 0xf478, 0xa5db, 0xcda1, 0xcd7a, 0xcd7c, 0xcd7e,
- 0xcd7d, 0xcd7b, 0xaabf, 0xace2, 0xcff2, 0xcfed, 0xcfea, 0xcff1,
- 0xace4, 0xace5, 0xcff0, 0xcfef, 0xcfee, 0xcfeb, 0xcfec, 0xcff3,
- 0xace3, 0xaf7c, 0xafa4, 0xafa3, 0xd2e1, 0xd2db, 0xd2d9, 0xafa1,
- 0xd6b9, 0xaf7a, 0xd2de, 0xd2e2, 0xd2e4, 0xd2e0, 0xd2da, 0xafa2,
- 0xd2df, 0xd2dd, 0xaf79, 0xd2e5, 0xafa5, 0xd2e3, 0xaf7d, 0xd2dc,
- 0xaf7e, 0xaf7b, 0xb2b9, 0xd6ba, 0xd6b3, 0xd6b5, 0xd6b7, 0xd6b8,
- 0xd6b6, 0xb2ba, 0xd6bb, 0xd6b4, 0xdac8, 0xb576, 0xdad0, 0xdac5,
- 0xdad1, 0xdac6, 0xdac7, 0xdacf, 0xdace, 0xdacb, 0xb2b8, 0xb577,
- 0xdac9, 0xdacc, 0xb578, 0xdacd, 0xdaca, 0xdeee, 0xdef2, 0xb84e,
- 0xe2f0, 0xb851, 0xdef0, 0xdeed, 0xdee8, 0xdeea, 0xdeeb, 0xdee4,
- 0xb84d, 0xb84c, 0xb848, 0xdee7, 0xb84f, 0xb850, 0xdee6, 0xdee9,
- 0xdef1, 0xb84a, 0xb84b, 0xdeef, 0xdee5, 0xe2f2, 0xbad0, 0xe2f4,
- 0xdeec, 0xe2f6, 0xbad4, 0xe2f7, 0xe2f3, 0xbad1, 0xe2ef, 0xbad3,
- 0xe2ec, 0xe2f1, 0xe2f5, 0xe2ee, 0xb849, 0xe2eb, 0xbad2, 0xe2ed,
- 0xbd54, 0xe6c1, 0xbd58, 0xbd56, 0xbacf, 0xe6c8, 0xe6c9, 0xbd53,
- 0xe6c7, 0xe6ca, 0xbd55, 0xbd52, 0xe6c3, 0xe6c0, 0xe6c5, 0xe6c2,
- 0xbd59, 0xe6c4, 0xe6c6, 0xbd57, 0xbf6a, 0xeaa8, 0xeaa2, 0xeaa6,
- 0xeaac, 0xeaad, 0xeaa9, 0xeaaa, 0xeaa7, 0xeaa4, 0xbf6c, 0xbf69,
- 0xeaa3, 0xeaa5, 0xbf6b, 0xeaab, 0xc146, 0xedaa, 0xeda5, 0xc145,
- 0xc143, 0xedac, 0xc144, 0xeda8, 0xeda9, 0xeda6, 0xedad, 0xf056,
- 0xc147, 0xeda7, 0xedae, 0xedab, 0xf05a, 0xf057, 0xc2a6, 0xf05b,
- 0xf05d, 0xf05c, 0xf058, 0xf059, 0xf2a3, 0xc3aa, 0xf27e, 0xf2a2,
- 0xf27d, 0xf2a4, 0xf2a1, 0xf47a, 0xf47d, 0xf479, 0xc471, 0xf47b,
- 0xf47c, 0xf47e, 0xc472, 0xc474, 0xc473, 0xf5e1, 0xf5e3, 0xf5e2,
- 0xf6f6, 0xf8b5, 0xf8fa, 0xa5dc, 0xcb72, 0xaac0, 0xcda3, 0xaac1,
- 0xaac2, 0xcda2, 0xcff8, 0xcff7, 0xace6, 0xace9, 0xace8, 0xace7,
- 0xcff4, 0xcff6, 0xcff5, 0xd2e8, 0xafa7, 0xd2ec, 0xd2eb, 0xd2ea,
- 0xd2e6, 0xafa6, 0xafaa, 0xafad, 0xafae, 0xd2e7, 0xd2e9, 0xafac,
- 0xafab, 0xafa9, 0xafa8, 0xd6c2, 0xd6c0, 0xd6bc, 0xb2bb, 0xd6bd,
- 0xb2bc, 0xd6be, 0xd6bf, 0xd6c1, 0xb2bd, 0xdad5, 0xdad4, 0xdad3,
- 0xdad2, 0xdef6, 0xb852, 0xdef3, 0xdef5, 0xb853, 0xb854, 0xdef4,
- 0xe341, 0xe2f9, 0xe2fa, 0xbad7, 0xbad5, 0xbad6, 0xe343, 0xe342,
- 0xe2fe, 0xe2fd, 0xe2fc, 0xe2fb, 0xe340, 0xe2f8, 0xe6cb, 0xe6d0,
- 0xe6ce, 0xe6cd, 0xe6cc, 0xe6cf, 0xeaae, 0xbf6d, 0xc148, 0xedb0,
- 0xc149, 0xedaf, 0xf05f, 0xf05e, 0xc2a7, 0xf2a5, 0xc3ab, 0xf4a1,
- 0xc5a1, 0xf6f7, 0xf8b7, 0xf8b6, 0xc9a8, 0xacea, 0xaceb, 0xd6c3,
- 0xb856, 0xa5dd, 0xa872, 0xa871, 0xa870, 0xcda4, 0xaac4, 0xaac3,
- 0xacee, 0xcffa, 0xcffd, 0xcffb, 0xacec, 0xaced, 0xcff9, 0xcffc,
- 0xafb5, 0xd2f3, 0xd2f5, 0xd2f4, 0xafb2, 0xd2ef, 0xafb0, 0xafaf,
- 0xafb3, 0xafb1, 0xafb4, 0xd2f2, 0xd2ed, 0xd2ee, 0xd2f1, 0xd2f0,
- 0xd6c6, 0xd6c7, 0xd6c5, 0xd6c4, 0xb2be, 0xb57d, 0xdad6, 0xdad8,
- 0xdada, 0xb57c, 0xb57a, 0xdad7, 0xb57b, 0xdad9, 0xb579, 0xdf41,
- 0xdef7, 0xdefa, 0xdefe, 0xb85a, 0xdefc, 0xdefb, 0xdef8, 0xdef9,
- 0xb858, 0xdf40, 0xb857, 0xb85c, 0xb85b, 0xb859, 0xdefd, 0xe349,
- 0xe348, 0xe344, 0xbad8, 0xe347, 0xe346, 0xbad9, 0xbd5e, 0xe6d2,
- 0xbd5f, 0xbd5b, 0xbd5d, 0xbd5a, 0xbd5c, 0xeaaf, 0xbf70, 0xeab1,
- 0xeab0, 0xe345, 0xbf72, 0xbf71, 0xbf6e, 0xbf6f, 0xedb5, 0xedb3,
- 0xc14a, 0xedb4, 0xedb6, 0xedb2, 0xedb1, 0xf060, 0xc2aa, 0xc2a8,
- 0xc2a9, 0xf2a6, 0xf2a7, 0xc3ad, 0xc3ac, 0xf4a3, 0xf4a4, 0xf4a2,
- 0xf6f8, 0xf6f9, 0xa5de, 0xca48, 0xa873, 0xcda5, 0xaac6, 0xaac5,
- 0xcda6, 0xd040, 0xacef, 0xcffe, 0xacf0, 0xafb6, 0xd2f8, 0xd2f6,
- 0xd2fc, 0xafb7, 0xd2f7, 0xd2fb, 0xd2f9, 0xd2fa, 0xd6c8, 0xd6ca,
- 0xb2bf, 0xd6c9, 0xb2c0, 0xb5a2, 0xb5a1, 0xb57e, 0xdadb, 0xdf44,
- 0xb85d, 0xb85e, 0xdf43, 0xdf42, 0xe34a, 0xbadb, 0xbada, 0xe34b,
- 0xe34c, 0xbd61, 0xbd60, 0xeab5, 0xe6d3, 0xe6d5, 0xe6d4, 0xeab4,
- 0xeab2, 0xeab6, 0xeab3, 0xbf73, 0xedb7, 0xc14b, 0xedb8, 0xedb9,
- 0xc2ab, 0xc2ac, 0xc475, 0xc5d1, 0xa5df, 0xd041, 0xd2fd, 0xafb8,
- 0xb3ba, 0xb3b9, 0xb5a4, 0xdadd, 0xb5a3, 0xdadc, 0xdf45, 0xbadc,
- 0xe34d, 0xbadd, 0xc476, 0xf4a5, 0xa6cb, 0xaac7, 0xcda7, 0xacf2,
- 0xacf1, 0xd042, 0xd043, 0xd340, 0xd342, 0xafb9, 0xd344, 0xd347,
- 0xd345, 0xd346, 0xd343, 0xd2fe, 0xafba, 0xd348, 0xd341, 0xd6d3,
- 0xb2c6, 0xd6dc, 0xb2c3, 0xd6d5, 0xb2c7, 0xb2c1, 0xd6d0, 0xd6dd,
- 0xd6d1, 0xd6ce, 0xb2c5, 0xb2c2, 0xd6d4, 0xd6d7, 0xb2c4, 0xd6d8,
- 0xb2c8, 0xd6d9, 0xd6cf, 0xd6d6, 0xd6da, 0xd6d2, 0xd6cd, 0xd6cb,
- 0xd6db, 0xdadf, 0xdae4, 0xdae0, 0xdae6, 0xb5a7, 0xd6cc, 0xdae1,
- 0xb5a5, 0xdade, 0xb5ac, 0xdae2, 0xb5ab, 0xdae3, 0xb5ad, 0xb5a8,
- 0xb5ae, 0xb5a9, 0xb5aa, 0xb5a6, 0xdae5, 0xb861, 0xdf50, 0xdf53,
- 0xdf47, 0xdf4c, 0xdf46, 0xb863, 0xdf4a, 0xdf48, 0xb862, 0xdf4f,
- 0xdf4e, 0xdf4b, 0xdf4d, 0xdf49, 0xbae1, 0xdf52, 0xb85f, 0xdf51,
- 0xe35d, 0xbae8, 0xe358, 0xbae7, 0xe34e, 0xe350, 0xbae0, 0xe355,
- 0xe354, 0xe357, 0xbae5, 0xe352, 0xe351, 0xbae4, 0xbadf, 0xe353,
- 0xbae2, 0xe359, 0xe35b, 0xe356, 0xe34f, 0xbae3, 0xbd69, 0xbade,
- 0xe35c, 0xe6d9, 0xbd62, 0xe6db, 0xbd63, 0xbd65, 0xe6de, 0xe6d6,
- 0xbae6, 0xe6dc, 0xe6d8, 0xb860, 0xbd68, 0xbd64, 0xbd66, 0xbd67,
- 0xbf76, 0xe6dd, 0xe6d7, 0xbd6a, 0xe6da, 0xeac0, 0xeabb, 0xeac5,
- 0xbf74, 0xeabd, 0xbf78, 0xeac3, 0xeaba, 0xeab7, 0xeac6, 0xc151,
- 0xbf79, 0xeac2, 0xeab8, 0xbf77, 0xeabc, 0xbf7b, 0xeab9, 0xeabe,
- 0xbf7a, 0xeac1, 0xeac4, 0xedcb, 0xedcc, 0xedbc, 0xedc3, 0xedc1,
- 0xc14f, 0xedc8, 0xeabf, 0xedbf, 0xedc9, 0xc14e, 0xedbe, 0xedbd,
- 0xedc7, 0xedc4, 0xedc6, 0xedba, 0xedca, 0xc14c, 0xedc5, 0xedce,
- 0xedc2, 0xc150, 0xc14d, 0xedc0, 0xedbb, 0xedcd, 0xbf75, 0xf063,
- 0xf061, 0xf067, 0xc2b0, 0xf065, 0xf064, 0xc2b2, 0xf06a, 0xc2b1,
- 0xf06b, 0xf068, 0xc2ae, 0xf069, 0xf062, 0xc2af, 0xc2ad, 0xf2ab,
- 0xf066, 0xf06c, 0xf2a8, 0xc3b2, 0xc3b0, 0xf2aa, 0xf2ac, 0xf2a9,
- 0xc3b1, 0xc3ae, 0xc3af, 0xc3b3, 0xc478, 0xf4aa, 0xf4a9, 0xf4a7,
- 0xf4a6, 0xf4a8, 0xc477, 0xc479, 0xc4f0, 0xf5e5, 0xf5e4, 0xf6fa,
- 0xf6fc, 0xf6fe, 0xf6fd, 0xf6fb, 0xc5a3, 0xc5a2, 0xc5d3, 0xc5d2,
- 0xc5d4, 0xf7ed, 0xf7ec, 0xf8fb, 0xf8b8, 0xf8fc, 0xc658, 0xc659,
- 0xf96d, 0xc67e, 0xa6cc, 0xcda8, 0xd045, 0xd046, 0xd044, 0xacf3,
- 0xd047, 0xd048, 0xd049, 0xd349, 0xd34f, 0xd34d, 0xafbb, 0xd34b,
- 0xd34c, 0xd34e, 0xd34a, 0xb2c9, 0xd6de, 0xb2cb, 0xd6e0, 0xb2ca,
- 0xd6df, 0xdae8, 0xb5af, 0xdaea, 0xdae7, 0xd6e1, 0xb5b0, 0xdae9,
- 0xdf56, 0xb864, 0xdf54, 0xb865, 0xdf55, 0xb866, 0xbae9, 0xe361,
- 0xe35e, 0xe360, 0xbaea, 0xbaeb, 0xe35f, 0xe6df, 0xe6e0, 0xbd6b,
- 0xe6e2, 0xe6e1, 0xa261, 0xeaca, 0xeacb, 0xeac7, 0xeac8, 0xbf7c,
- 0xbf7d, 0xeac9, 0xc157, 0xc153, 0xc158, 0xc154, 0xc156, 0xc152,
- 0xc155, 0xc2b3, 0xedcf, 0xf2ae, 0xf2ad, 0xf4ab, 0xc47a, 0xc47b,
- 0xf741, 0xf5e6, 0xf740, 0xf8fd, 0xf9a4, 0xa6cd, 0xa874, 0xcda9,
- 0xaac8, 0xacf6, 0xd04c, 0xacf4, 0xd04a, 0xacf9, 0xacf5, 0xacfa,
- 0xacf8, 0xd04b, 0xacf7, 0xafbf, 0xafbe, 0xd35a, 0xafc7, 0xd353,
- 0xd359, 0xafc3, 0xd352, 0xd358, 0xd356, 0xafc2, 0xafc4, 0xd355,
- 0xafbd, 0xd354, 0xafc8, 0xafc5, 0xafc9, 0xafc6, 0xd351, 0xd350,
- 0xd357, 0xafc0, 0xafbc, 0xafc1, 0xd6f0, 0xd6e9, 0xb5b5, 0xd6e8,
- 0xb2cf, 0xb2d6, 0xb2d3, 0xb2d9, 0xb2d8, 0xb2d4, 0xd6e2, 0xd6e5,
- 0xd6e4, 0xb2d0, 0xd6e6, 0xd6ef, 0xb2d1, 0xd6e3, 0xd6ec, 0xd6ed,
- 0xb2d2, 0xd6ea, 0xb2d7, 0xb2cd, 0xb2d5, 0xd6e7, 0xb2cc, 0xd6eb,
- 0xd6ee, 0xdafb, 0xdaf2, 0xb5b2, 0xdaf9, 0xdaf6, 0xdaee, 0xdaf7,
- 0xb5b4, 0xdaef, 0xdaeb, 0xb86c, 0xdaf4, 0xb5b1, 0xdafa, 0xb5b8,
- 0xb5ba, 0xdaed, 0xb5b9, 0xdaf0, 0xb5b3, 0xdaf8, 0xdaf1, 0xdaf5,
- 0xdaf3, 0xb5b6, 0xdaec, 0xb5bb, 0xb2ce, 0xb5b7, 0xb5bc, 0xb868,
- 0xdf5d, 0xdf5f, 0xdf61, 0xdf65, 0xdf5b, 0xdf59, 0xb86a, 0xdf60,
- 0xdf64, 0xdf5c, 0xdf58, 0xdf57, 0xdf62, 0xdf5a, 0xdf5e, 0xb86b,
- 0xb869, 0xdf66, 0xb867, 0xdf63, 0xe372, 0xbaee, 0xe36a, 0xbd78,
- 0xe374, 0xbaf1, 0xe378, 0xbaf7, 0xe365, 0xe375, 0xe362, 0xe377,
- 0xe366, 0xbafe, 0xbafb, 0xe376, 0xe370, 0xbaed, 0xbaf5, 0xbaf4,
- 0xbaf3, 0xbaf9, 0xe363, 0xbafa, 0xe371, 0xbaf6, 0xbaec, 0xe373,
- 0xbaef, 0xbaf0, 0xbaf8, 0xe368, 0xe367, 0xe364, 0xe36c, 0xe369,
- 0xe36d, 0xbafd, 0xe379, 0xbaf2, 0xe36e, 0xe36f, 0xe36b, 0xbafc,
- 0xe6e7, 0xbd70, 0xbd79, 0xbd75, 0xe6e4, 0xbd72, 0xbd76, 0xe6f0,
- 0xbd6c, 0xe6e8, 0xbd74, 0xe6eb, 0xe6e6, 0xbd73, 0xbd77, 0xe6e5,
- 0xbd71, 0xe6ef, 0xbd6e, 0xe6ee, 0xe6ed, 0xbd7a, 0xe572, 0xbd6d,
- 0xe6ec, 0xe6e3, 0xbd7b, 0xe6ea, 0xbd6f, 0xe6e9, 0xbfa2, 0xbfa7,
- 0xbf7e, 0xead8, 0xeacf, 0xeadb, 0xead3, 0xead9, 0xbfa8, 0xbfa1,
- 0xeacc, 0xead2, 0xeadc, 0xead5, 0xeada, 0xeace, 0xead6, 0xbfa3,
- 0xead4, 0xbfa6, 0xbfa5, 0xead0, 0xead1, 0xeacd, 0xead7, 0xbfa4,
- 0xeade, 0xeadd, 0xedda, 0xedd6, 0xc15f, 0xedd0, 0xc159, 0xc169,
- 0xeddc, 0xc161, 0xc15d, 0xedd3, 0xc164, 0xc167, 0xedde, 0xc15c,
- 0xedd5, 0xc165, 0xede0, 0xeddd, 0xedd1, 0xc160, 0xc15a, 0xc168,
- 0xedd8, 0xc163, 0xedd2, 0xc15e, 0xeddf, 0xc162, 0xc15b, 0xedd9,
- 0xc166, 0xedd7, 0xeddb, 0xf06e, 0xf074, 0xc2b9, 0xf077, 0xc2b4,
- 0xc2b5, 0xf06f, 0xf076, 0xf071, 0xc2ba, 0xc2b7, 0xf06d, 0xc2b6,
- 0xf073, 0xf075, 0xc2b8, 0xf072, 0xf070, 0xf2b8, 0xc3b7, 0xc3b8,
- 0xc3b4, 0xc3b5, 0xf2b4, 0xf2b2, 0xf2b6, 0xc3ba, 0xf2b7, 0xf2b0,
- 0xf2af, 0xf2b3, 0xf2b1, 0xc3b6, 0xf2b5, 0xf4ac, 0xc47e, 0xc47d,
- 0xf4ad, 0xf4af, 0xf4ae, 0xc4a1, 0xf5eb, 0xf5e8, 0xf5e9, 0xf5e7,
- 0xf5ea, 0xc4f2, 0xf5ec, 0xc4f1, 0xf742, 0xc5d5, 0xc5d7, 0xf7ee,
- 0xc5d6, 0xf8b9, 0xf940, 0xf942, 0xf8fe, 0xf941, 0xc66c, 0xa6ce,
- 0xacfb, 0xd26f, 0xafca, 0xb2da, 0xdafc, 0xdafd, 0xeadf, 0xc16a,
- 0xede1, 0xc2bb, 0xf2ba, 0xf2b9, 0xc4a2, 0xf5ed, 0xf743, 0xc5f8,
- 0xca49, 0xaac9, 0xa875, 0xd04d, 0xd360, 0xd35b, 0xd35f, 0xd35d,
- 0xafcb, 0xd35e, 0xd35c, 0xd6f1, 0xdafe, 0xdb40, 0xdf69, 0xdf6a,
- 0xb86e, 0xb86f, 0xdf68, 0xdf6b, 0xdf67, 0xb86d, 0xbb40, 0xb870,
- 0xe37a, 0xbd7c, 0xe6f1, 0xbd7d, 0xbfa9, 0xeae2, 0xeae0, 0xeae1,
- 0xede4, 0xede3, 0xede2, 0xf2bb, 0xc3b9, 0xf2bc, 0xf744, 0xc5f9,
- 0xf8ba, 0xa6cf, 0xaacb, 0xaaca, 0xd04f, 0xacfc, 0xd04e, 0xd362,
- 0xafcc, 0xd6f2, 0xd361, 0xb2dc, 0xd6f5, 0xd6f3, 0xd6f4, 0xb2db,
- 0xdb42, 0xdb43, 0xdb41, 0xb873, 0xdf6d, 0xdf6c, 0xdf6e, 0xb872,
- 0xb871, 0xe6f2, 0xe6f4, 0xbd7e, 0xe6f3, 0xeae3, 0xbfaa, 0xf079,
- 0xf078, 0xc3bb, 0xf2bd, 0xc3bd, 0xc3bc, 0xf4b0, 0xf5ee, 0xc4f3,
- 0xa6d0, 0xd050, 0xacfd, 0xd365, 0xafce, 0xd364, 0xd363, 0xafcd,
- 0xd6fb, 0xd6fd, 0xd6f6, 0xd6f7, 0xb2dd, 0xd6f8, 0xb2de, 0xd6fc,
- 0xd6f9, 0xd6fa, 0xb2df, 0xb5be, 0xb5bf, 0xdb44, 0xdf6f, 0xdf70,
- 0xe37e, 0xbb43, 0xbb41, 0xbb42, 0xe37b, 0xe37c, 0xe37d, 0xe6f9,
- 0xe6fa, 0xbda1, 0xe6f7, 0xe6f6, 0xe6f8, 0xe6f5, 0xbfad, 0xeae4,
- 0xbfab, 0xbfac, 0xede6, 0xc16b, 0xede5, 0xefa8, 0xf07a, 0xf07b,
- 0xc2bc, 0xc2bd, 0xc16c, 0xf2be, 0xf2bf, 0xf4b1, 0xc4a3, 0xa6d1,
- 0xa6d2, 0xacfe, 0xaacc, 0xafcf, 0xd051, 0xb5c0, 0xa6d3, 0xad41,
- 0xd052, 0xd053, 0xad40, 0xad42, 0xa6d4, 0xd054, 0xafd1, 0xd366,
- 0xafd3, 0xafd0, 0xafd2, 0xd741, 0xb2e0, 0xd740, 0xd6fe, 0xdf71,
- 0xe3a1, 0xbda2, 0xbfae, 0xeae6, 0xeae5, 0xede7, 0xf5ef, 0xa6d5,
- 0xcb73, 0xcdaa, 0xad43, 0xd055, 0xd368, 0xafd4, 0xd367, 0xafd5,
- 0xd743, 0xb2e2, 0xd742, 0xd744, 0xb2e1, 0xdb46, 0xdb47, 0xdb45,
- 0xb5c1, 0xb874, 0xb875, 0xbb45, 0xe3a3, 0xe3a2, 0xbb44, 0xe6fb,
- 0xe6fc, 0xeae7, 0xc170, 0xc16f, 0xc16d, 0xc16e, 0xc171, 0xf07c,
- 0xc2bf, 0xc2be, 0xf2c0, 0xf4b2, 0xc5a5, 0xc5a4, 0xa6d6, 0xd1fb,
- 0xb877, 0xb5c2, 0xb876, 0xbb46, 0xa6d7, 0xc9a9, 0xa6d8, 0xa6d9,
- 0xcdab, 0xcb76, 0xcb77, 0xa877, 0xcb74, 0xa876, 0xa879, 0xcb75,
- 0xa87b, 0xa87a, 0xcb78, 0xa878, 0xaad1, 0xaacf, 0xcdad, 0xaace,
- 0xaad3, 0xaad5, 0xaad2, 0xcdb0, 0xcdac, 0xaad6, 0xaad0, 0xa87c,
- 0xaad4, 0xcdaf, 0xcdae, 0xaacd, 0xd05b, 0xad47, 0xad48, 0xd05d,
- 0xd057, 0xd05a, 0xd063, 0xd061, 0xad49, 0xd067, 0xad4c, 0xd064,
- 0xd05c, 0xd059, 0xdb49, 0xd062, 0xad44, 0xd065, 0xd056, 0xd05f,
- 0xad46, 0xad4b, 0xd060, 0xad4f, 0xad4d, 0xd058, 0xad4a, 0xd05e,
- 0xad4e, 0xad45, 0xd066, 0xafda, 0xafe3, 0xafd8, 0xafd6, 0xd36a,
- 0xafde, 0xafdb, 0xd36c, 0xafdd, 0xd36b, 0xd369, 0xd36e, 0xafe2,
- 0xafe0, 0xdb48, 0xd36f, 0xd36d, 0xafd7, 0xafd9, 0xafdc, 0xafdf,
- 0xafe1, 0xd74e, 0xb2e4, 0xd745, 0xd747, 0xd748, 0xd750, 0xd74c,
- 0xd74a, 0xd74d, 0xd751, 0xb2e5, 0xb2e9, 0xd746, 0xd74f, 0xb2e7,
- 0xb2e6, 0xd74b, 0xd749, 0xb2e3, 0xb2e8, 0xb5c8, 0xdb51, 0xdb4f,
- 0xb5ca, 0xdb4a, 0xdfa1, 0xb5c9, 0xdb4e, 0xdb4b, 0xb5c5, 0xb5cb,
- 0xdb50, 0xb5c7, 0xdb4d, 0xbb47, 0xb5c6, 0xdb4c, 0xb5cc, 0xb5c4,
- 0xb5c3, 0xdf77, 0xdf75, 0xdf7b, 0xdf73, 0xdfa2, 0xdf78, 0xdf72,
- 0xb87b, 0xb8a3, 0xdf7d, 0xdf76, 0xb87e, 0xb87c, 0xdf7e, 0xb879,
- 0xb878, 0xdf79, 0xb87d, 0xb5cd, 0xdf7c, 0xdf74, 0xb87a, 0xb8a1,
- 0xb8a2, 0xbb4c, 0xbb48, 0xbb4d, 0xe3a6, 0xe3a5, 0xe3a7, 0xbb4a,
- 0xe3a4, 0xbb4b, 0xe3aa, 0xe3a9, 0xe3a8, 0xbb49, 0xe741, 0xe744,
- 0xbda8, 0xe743, 0xbda7, 0xbda3, 0xbda4, 0xbda5, 0xe740, 0xe6fe,
- 0xbda6, 0xe742, 0xe6fd, 0xeae9, 0xeaf3, 0xbfb1, 0xbfb0, 0xeaed,
- 0xeaef, 0xeaea, 0xeaee, 0xeae8, 0xeaf1, 0xbfaf, 0xeaf0, 0xeaec,
- 0xeaf2, 0xeaeb, 0xc174, 0xede8, 0xedee, 0xc178, 0xc17a, 0xc177,
- 0xc176, 0xc175, 0xc173, 0xede9, 0xedec, 0xc172, 0xeded, 0xc179,
- 0xedeb, 0xedea, 0xc2c0, 0xc2c1, 0xf0a1, 0xf07d, 0xf07e, 0xf2c2,
- 0xf2c1, 0xc3be, 0xf4b4, 0xc4a4, 0xf4b3, 0xf5f0, 0xf745, 0xc5a6,
- 0xf943, 0xf944, 0xc5d8, 0xa6da, 0xaad7, 0xdb52, 0xbb4e, 0xc17b,
- 0xedef, 0xa6db, 0xafe5, 0xafe4, 0xdb53, 0xeaf4, 0xa6dc, 0xad50,
- 0xdb54, 0xdb55, 0xdb56, 0xbb4f, 0xbfb2, 0xa6dd, 0xaad8, 0xd068,
- 0xafe6, 0xd370, 0xb2ea, 0xdb57, 0xb8a4, 0xbb50, 0xbfb3, 0xc17c,
- 0xc2c2, 0xf4b5, 0xa6de, 0xaad9, 0xafe7, 0xd752, 0xb5ce, 0xbb51,
- 0xe3ab, 0xe745, 0xa6df, 0xb5cf, 0xdfa3, 0xbb52, 0xa6e0, 0xcdb1,
- 0xd069, 0xad51, 0xd372, 0xafea, 0xafe8, 0xafe9, 0xafeb, 0xd371,
- 0xd757, 0xd754, 0xd756, 0xb2eb, 0xb2ed, 0xb2ec, 0xd753, 0xb2ee,
- 0xd755, 0xdb58, 0xdb59, 0xdb5a, 0xdfa6, 0xdfa7, 0xdfa5, 0xdfa8,
- 0xb8a5, 0xdfa4, 0xbb53, 0xe74a, 0xe746, 0xe749, 0xe74b, 0xe748,
- 0xe747, 0xeaf5, 0xeaf6, 0xeaf7, 0xbfb4, 0xbfb5, 0xedf1, 0xedf0,
- 0xedf2, 0xf0a3, 0xf0a2, 0xf2c4, 0xf2c5, 0xf2c3, 0xc4a5, 0xf4b6,
- 0xf4b7, 0xf746, 0xf7ef, 0xf8bb, 0xa6e1, 0xa87d, 0xc17d, 0xa6e2,
- 0xd758, 0xdb5b, 0xc641, 0xca4a, 0xca4b, 0xca4d, 0xa6e3, 0xca4e,
- 0xca4c, 0xcba2, 0xcba3, 0xcb7b, 0xcba1, 0xa8a1, 0xa8a2, 0xcb7c,
- 0xcb7a, 0xcb79, 0xcb7d, 0xa87e, 0xcb7e, 0xd06a, 0xcdb6, 0xaadc,
- 0xcdb5, 0xcdb7, 0xaadb, 0xcdbc, 0xaadf, 0xcdb2, 0xcdc0, 0xcdc6,
- 0xaae6, 0xcdc3, 0xaae3, 0xcdb9, 0xcdbf, 0xcdc1, 0xcdb4, 0xaae2,
- 0xaadd, 0xcdba, 0xaae4, 0xaae7, 0xaae1, 0xaada, 0xcdbe, 0xcdb8,
- 0xcdc5, 0xaae9, 0xaae5, 0xaae0, 0xcdbd, 0xafec, 0xcdbb, 0xaade,
- 0xaae8, 0xcdb3, 0xcdc2, 0xcdc4, 0xad62, 0xad5c, 0xad64, 0xad61,
- 0xd071, 0xd074, 0xad5d, 0xd06b, 0xad56, 0xad60, 0xad63, 0xad65,
- 0xd0a2, 0xd077, 0xad55, 0xd0a1, 0xad59, 0xad57, 0xad52, 0xd06f,
- 0xd07e, 0xd073, 0xd076, 0xd0a5, 0xad66, 0xd07d, 0xad5e, 0xd078,
- 0xd0a4, 0xd075, 0xd079, 0xd07c, 0xd06d, 0xd0a3, 0xd07b, 0xd06c,
- 0xd070, 0xad5f, 0xad5a, 0xad53, 0xad58, 0xad54, 0xad67, 0xd06e,
- 0xd3a5, 0xad5b, 0xd07a, 0xce41, 0xd3a8, 0xaffa, 0xd376, 0xd3a3,
- 0xd37d, 0xd3b2, 0xd3aa, 0xd37e, 0xd3a9, 0xd378, 0xd37c, 0xd3b5,
- 0xaffd, 0xd3ad, 0xd3a4, 0xafed, 0xd3b3, 0xd374, 0xd3ac, 0xaffc,
- 0xaff7, 0xd373, 0xaff5, 0xaff4, 0xaff9, 0xd3ab, 0xaff1, 0xaff8,
- 0xd072, 0xdb5c, 0xd3a6, 0xd37a, 0xaffb, 0xd37b, 0xd3a1, 0xaffe,
- 0xd375, 0xd3af, 0xd3ae, 0xd3b6, 0xaff3, 0xaff0, 0xd3b4, 0xd3b0,
- 0xd3a7, 0xd3a2, 0xaff6, 0xaff2, 0xd377, 0xafee, 0xd3b1, 0xafef,
- 0xd379, 0xd75e, 0xd760, 0xd765, 0xd779, 0xb2fc, 0xb2f2, 0xd75d,
- 0xb2fd, 0xb2fe, 0xd768, 0xd76f, 0xd775, 0xd762, 0xd769, 0xb340,
- 0xd777, 0xd772, 0xb2fa, 0xb2f8, 0xd76e, 0xd76a, 0xd75c, 0xb2ef,
- 0xd761, 0xd759, 0xb2f7, 0xb2f9, 0xd766, 0xd763, 0xb2f4, 0xd773,
- 0xb2f1, 0xd764, 0xd77a, 0xd76c, 0xd76b, 0xb2f0, 0xb2fb, 0xb2f3,
- 0xd75a, 0xd75f, 0xd770, 0xd776, 0xb341, 0xd75b, 0xd767, 0xd76d,
- 0xb2f6, 0xd778, 0xd771, 0xd774, 0xb2f5, 0xdb6c, 0xdb60, 0xb5d7,
- 0xdb7d, 0xdba7, 0xdbaa, 0xb5d5, 0xdb68, 0xdba3, 0xdb69, 0xdb77,
- 0xb5e2, 0xdb73, 0xb5df, 0xdb74, 0xdb5d, 0xdba4, 0xb5e8, 0xdba1,
- 0xdb75, 0xdbac, 0xdb70, 0xdfc8, 0xdbaf, 0xb5e6, 0xdb6e, 0xdb7a,
- 0xb5e9, 0xb5d4, 0xdb72, 0xdbad, 0xdb6b, 0xdb64, 0xdb6f, 0xdb63,
- 0xdb61, 0xb5d0, 0xdba5, 0xdb6a, 0xdba8, 0xdba9, 0xb5d8, 0xb5dd,
- 0xb5d9, 0xb5e1, 0xdb7e, 0xb5da, 0xdb76, 0xdb66, 0xb5d2, 0xdb5e,
- 0xdba2, 0xdbab, 0xdb65, 0xb5e0, 0xdbb0, 0xdb71, 0xdb6d, 0xb5d1,
- 0xb5e5, 0xdb7c, 0xb5e7, 0xdb78, 0xb5dc, 0xb5d6, 0xb5de, 0xb5d3,
- 0xb5e4, 0xdb79, 0xdb67, 0xdb7b, 0xdb62, 0xdba6, 0xdbae, 0xdb5f,
- 0xdfc7, 0xdfdd, 0xb855, 0xdfcc, 0xdfca, 0xdfb5, 0xb8a9, 0xdfc5,
- 0xdfd9, 0xdfc1, 0xb8b1, 0xdfd8, 0xdfbf, 0xb5e3, 0xdfcf, 0xdfc0,
- 0xdfd6, 0xb8b0, 0xb8a8, 0xdfaa, 0xdfb2, 0xdfcb, 0xdfc3, 0xdfdc,
- 0xdfc6, 0xb8b6, 0xdfd7, 0xb8ad, 0xdfc9, 0xdfd1, 0xdfb6, 0xdfd0,
- 0xdfe1, 0xdfb1, 0xdfd2, 0xdfdf, 0xdfab, 0xb5db, 0xdfb9, 0xdfb8,
- 0xb8af, 0xdfbc, 0xdfbe, 0xdfcd, 0xdfde, 0xb8b2, 0xb8b3, 0xdfb0,
- 0xb8ab, 0xdfb4, 0xdfda, 0xb8b4, 0xb8ac, 0xb8ae, 0xb8b5, 0xdfe0,
- 0xdfd3, 0xdfce, 0xdfbb, 0xdfba, 0xb8aa, 0xdfac, 0xb8a7, 0xdfc4,
- 0xdfad, 0xdfc2, 0xdfb7, 0xdfdb, 0xb8a6, 0xdfb3, 0xdfaf, 0xdfd5,
- 0xdfae, 0xbb60, 0xe3d3, 0xe3c2, 0xe3ac, 0xe3ca, 0xbb58, 0xe3bb,
- 0xe3c5, 0xbb5b, 0xe3be, 0xbb59, 0xe3af, 0xe3cd, 0xe3ae, 0xe3c1,
- 0xe3ad, 0xe3bf, 0xe3c8, 0xe3c6, 0xe3ba, 0xe3b5, 0xe3b3, 0xe3b4,
- 0xe3c7, 0xe3d2, 0xe3bc, 0xbb5a, 0xe3b7, 0xe3cb, 0xbb5d, 0xe3b6,
- 0xe3b0, 0xe3c0, 0xbb61, 0xbb55, 0xbb5e, 0xe3b8, 0xe3b2, 0xbb57,
- 0xdfd4, 0xbb56, 0xe3c3, 0xbb54, 0xbb63, 0xbb5c, 0xe3c4, 0xe3b9,
- 0xe3b1, 0xe3cc, 0xe3bd, 0xbb62, 0xe3d0, 0xbb5f, 0xe3cf, 0xe3c9,
- 0xe3ce, 0xe3d1, 0xe773, 0xe774, 0xe767, 0xe766, 0xe762, 0xbdb4,
- 0xbdac, 0xe776, 0xe775, 0xdfa9, 0xe75f, 0xe763, 0xe75d, 0xe770,
- 0xe761, 0xe777, 0xe75a, 0xe758, 0xe764, 0xe76e, 0xe769, 0xbdb6,
- 0xe74f, 0xe76d, 0xbdb7, 0xdfbd, 0xe75b, 0xe752, 0xe755, 0xe77b,
- 0xe75c, 0xe753, 0xe751, 0xe74e, 0xbdb0, 0xe765, 0xbdaf, 0xbdb3,
- 0xe760, 0xe768, 0xbda9, 0xe778, 0xe77c, 0xbdab, 0xe757, 0xe76b,
- 0xe76f, 0xe754, 0xe779, 0xbdb2, 0xbdb1, 0xe74c, 0xbdb5, 0xe772,
- 0xe756, 0xe76a, 0xe750, 0xe75e, 0xe759, 0xbdad, 0xbdae, 0xe76c,
- 0xe77d, 0xe77a, 0xe771, 0xe74d, 0xbdaa, 0xeb49, 0xeb40, 0xeb43,
- 0xbfbb, 0xeb45, 0xeaf9, 0xeb41, 0xeb47, 0xbfb8, 0xbfbc, 0xbfb6,
- 0xeafb, 0xeb4c, 0xeb46, 0xeafc, 0xeb55, 0xeb4f, 0xeaf8, 0xee46,
- 0xeafe, 0xbfb7, 0xeb4a, 0xeb54, 0xbfbf, 0xeb51, 0xeafd, 0xeb44,
- 0xeb48, 0xeb42, 0xeb56, 0xeb53, 0xeb50, 0xbfb9, 0xbfba, 0xbfbe,
- 0xeafa, 0xeb57, 0xbfbd, 0xeb4d, 0xeb4b, 0xeb4e, 0xee53, 0xee40,
- 0xee45, 0xee52, 0xee44, 0xedfb, 0xee41, 0xc1a2, 0xedf4, 0xee4d,
- 0xee4f, 0xedf3, 0xc1a1, 0xee51, 0xee49, 0xc1a8, 0xee50, 0xee42,
- 0xc1aa, 0xedf9, 0xeb52, 0xee4a, 0xee47, 0xedf5, 0xee55, 0xc1a4,
- 0xc1a5, 0xedf7, 0xee48, 0xee54, 0xee4b, 0xedfd, 0xc1a7, 0xc1a3,
- 0xee4c, 0xedfe, 0xee56, 0xedf8, 0xee43, 0xee4e, 0xedfa, 0xedfc,
- 0xc2cb, 0xedf6, 0xc1a9, 0xc2c4, 0xc17e, 0xc1a6, 0xc2c8, 0xf0b3,
- 0xf0a9, 0xf0a4, 0xf0aa, 0xf0b4, 0xf0b8, 0xf0b7, 0xc2ca, 0xc2c9,
- 0xf0ab, 0xf0b9, 0xf0ae, 0xf0a6, 0xf0a8, 0xf0a7, 0xf0ad, 0xf0b2,
- 0xf0a5, 0xf0ac, 0xf0b1, 0xc2c7, 0xf0af, 0xc2c5, 0xf0b0, 0xc2c3,
- 0xc2c6, 0xf2d5, 0xf0b5, 0xc3c2, 0xf2cd, 0xf2d1, 0xf2c9, 0xf2cc,
- 0xf2d4, 0xc3c0, 0xf2d9, 0xf2d2, 0xf2ca, 0xf2da, 0xf2d3, 0xc3c3,
- 0xc3c4, 0xf2d7, 0xf2cb, 0xc3bf, 0xc3c1, 0xf2c6, 0xf2ce, 0xf2c8,
- 0xf2d8, 0xf2d6, 0xf2c7, 0xf2cf, 0xf4be, 0xc3c5, 0xf2d0, 0xc4a7,
- 0xc4a9, 0xc4a6, 0xf4c3, 0xf4bb, 0xf4b9, 0xf4bd, 0xf4ba, 0xf4bf,
- 0xf4c1, 0xc4aa, 0xc4ac, 0xf4c0, 0xc4ad, 0xc4ab, 0xf4c2, 0xc4a8,
- 0xc4f4, 0xf5f1, 0xf5f7, 0xc4f6, 0xf4bc, 0xf5f6, 0xf5fd, 0xf5f4,
- 0xf5fb, 0xf5fa, 0xf4b8, 0xf5f5, 0xf0b6, 0xf5fe, 0xf5f3, 0xf5f8,
- 0xf5fc, 0xf5f2, 0xf74a, 0xc4f5, 0xf5f9, 0xf7f4, 0xf74b, 0xf749,
- 0xf747, 0xf748, 0xf74c, 0xc5d9, 0xf7f2, 0xf7f0, 0xf7f5, 0xf7f3,
- 0xf7f6, 0xc5da, 0xf7f1, 0xf8bc, 0xf945, 0xf946, 0xf947, 0xf9c7,
- 0xf9bd, 0xca4f, 0xaaea, 0xad68, 0xd3b8, 0xd3b7, 0xb040, 0xb342,
- 0xd77c, 0xd77b, 0xb5ea, 0xb8b8, 0xb8b7, 0xb8b9, 0xe3d4, 0xe77e,
- 0xeb58, 0xeb5a, 0xeb59, 0xc1ab, 0xee57, 0xf0ba, 0xf9a5, 0xa6e4,
- 0xcdc9, 0xcdca, 0xcdc8, 0xcdc7, 0xaaeb, 0xd0a9, 0xd0a7, 0xd0a6,
- 0xad69, 0xad6b, 0xad6a, 0xd0a8, 0xd3c4, 0xd3c1, 0xd3bf, 0xb041,
- 0xd3c2, 0xb046, 0xd3bc, 0xd3cb, 0xd3cd, 0xd3bd, 0xb043, 0xd3ce,
- 0xd3c9, 0xd3bb, 0xd3c0, 0xd3ca, 0xd3c6, 0xd3c3, 0xb048, 0xd3cc,
- 0xd3be, 0xd3c7, 0xd3b9, 0xb047, 0xb044, 0xd3c5, 0xd3c8, 0xd3ba,
- 0xb045, 0xb042, 0xb34c, 0xd7a5, 0xb34b, 0xd7a8, 0xd7ab, 0xb348,
- 0xb346, 0xd77e, 0xd7a9, 0xd7a7, 0xd7a4, 0xd7ac, 0xd7ad, 0xd7af,
- 0xd7b0, 0xd77d, 0xb345, 0xd7a2, 0xd7a1, 0xd7ae, 0xb347, 0xd7a3,
- 0xb349, 0xb344, 0xd7a6, 0xb34d, 0xb34a, 0xd7aa, 0xb5f1, 0xdbbf,
- 0xdbb4, 0xb5ee, 0xdfe7, 0xdbbd, 0xdbb1, 0xb5ec, 0xdbb6, 0xb5ef,
- 0xdbba, 0xdbb8, 0xb5f2, 0xb5eb, 0xdbb2, 0xdbb5, 0xb5f0, 0xdbb3,
- 0xdbbe, 0xdbbc, 0xdbb7, 0xdbb9, 0xdbbb, 0xb5ed, 0xdfe8, 0xdfee,
- 0xdfe4, 0xdfea, 0xb8ba, 0xdfe6, 0xb8c0, 0xb8bf, 0xb8be, 0xdfed,
- 0xb8c1, 0xb8c2, 0xdfe3, 0xdff0, 0xb8c3, 0xb8bd, 0xb8bc, 0xdfec,
- 0xb8c4, 0xdfe2, 0xdfe5, 0xdfef, 0xdfeb, 0xe3f4, 0xe3e9, 0xb8bb,
- 0xbb6a, 0xe3dd, 0xe3f2, 0xe3de, 0xbb65, 0xe3db, 0xe3e4, 0xe3dc,
- 0xbb67, 0xe3d6, 0xe3f1, 0xbb68, 0xe3ee, 0xe3ef, 0xe3d7, 0xbb6d,
- 0xe3e6, 0xe3e0, 0xe3e7, 0xe3da, 0xe3f3, 0xe3eb, 0xe3e5, 0xe3d5,
- 0xbb69, 0xe3ec, 0xbb6c, 0xe3f0, 0xe3ea, 0xbb66, 0xe3e8, 0xe3e2,
- 0xbb64, 0xe3d9, 0xe3e1, 0xe3ed, 0xe3df, 0xe3e3, 0xbdc1, 0xdfe9,
- 0xe7b2, 0xe7bb, 0xe7b1, 0xe7ad, 0xe7aa, 0xbdc2, 0xe7a8, 0xbb6b,
- 0xe7a1, 0xbdc0, 0xe7a7, 0xbdbf, 0xe7ac, 0xe7a9, 0xe7b9, 0xe7b4,
- 0xe7ae, 0xe7b3, 0xbdbb, 0xe7ab, 0xe7be, 0xe7a2, 0xe7a3, 0xe7ba,
- 0xbdbc, 0xe7bf, 0xbdbe, 0xe7c0, 0xe7b0, 0xe3d8, 0xe7b6, 0xe7af,
- 0xe7b8, 0xe7b5, 0xe7a6, 0xbdb9, 0xe7bd, 0xbdba, 0xe7a4, 0xbdbd,
- 0xeb64, 0xe7b7, 0xe7bc, 0xeb61, 0xbdb8, 0xbfc0, 0xeb6b, 0xeb67,
- 0xeb65, 0xeb60, 0xeb6f, 0xbfc4, 0xeb5c, 0xeb68, 0xeb69, 0xeb5f,
- 0xeb5e, 0xeb6c, 0xeb62, 0xeb5d, 0xeb63, 0xeb6e, 0xeb5b, 0xeb6d,
- 0xeb6a, 0xbfc2, 0xbfc1, 0xbfc3, 0xeb66, 0xf0cb, 0xee59, 0xc1b1,
- 0xee5d, 0xee5a, 0xee61, 0xee67, 0xee5c, 0xee70, 0xc1ae, 0xee6a,
- 0xee5f, 0xee6b, 0xee66, 0xee6d, 0xee5e, 0xc1b3, 0xc1b2, 0xee60,
- 0xee6e, 0xee58, 0xee6c, 0xc1ac, 0xee64, 0xee63, 0xee68, 0xee5b,
- 0xc1b0, 0xc1b4, 0xee62, 0xee69, 0xc1b5, 0xee65, 0xc1ad, 0xc1af,
- 0xf0c7, 0xf0c5, 0xf0cc, 0xf0c9, 0xf0cd, 0xf0be, 0xf0c6, 0xf0d1,
- 0xee6f, 0xf0c2, 0xc2cf, 0xe7a5, 0xf0bd, 0xf0ca, 0xf0c4, 0xf0c1,
- 0xf0bc, 0xf0bb, 0xf0d0, 0xf0c0, 0xf0bf, 0xc2cd, 0xf0c8, 0xc2cc,
- 0xc2ce, 0xf0c3, 0xf0cf, 0xf2de, 0xf2df, 0xc3c9, 0xf2dc, 0xc3c6,
- 0xf2e4, 0xc3ca, 0xf2e6, 0xf2db, 0xf0ce, 0xf2e8, 0xf2dd, 0xc3c7,
- 0xf2e3, 0xf2e5, 0xf2e0, 0xf2e7, 0xf2e2, 0xf2e1, 0xc3c8, 0xf4c5,
- 0xf4c6, 0xf4c8, 0xc4ae, 0xc4af, 0xf4c9, 0xf4c7, 0xf4c4, 0xf642,
- 0xf645, 0xf641, 0xc4fa, 0xf643, 0xc4f9, 0xc4f8, 0xc4f7, 0xf644,
- 0xf751, 0xf74f, 0xf74e, 0xf640, 0xf750, 0xf646, 0xf74d, 0xf7f9,
- 0xf7d7, 0xf7f7, 0xc5db, 0xf7f8, 0xf7fa, 0xf8bf, 0xc5fa, 0xf8be,
- 0xf8bd, 0xc5fb, 0xc65a, 0xf96e, 0xf9a7, 0xf9a6, 0xf9a8, 0xa6e5,
- 0xd0aa, 0xd3cf, 0xd3d0, 0xdbc0, 0xf647, 0xf8c0, 0xa6e6, 0xad6c,
- 0xd0ab, 0xd7b1, 0xb34e, 0xdbc2, 0xdbc1, 0xb5f3, 0xb8c5, 0xe7c1,
- 0xbdc3, 0xbdc4, 0xbfc5, 0xc5fc, 0xa6e7, 0xd0ac, 0xaaed, 0xd0ae,
- 0xd0ad, 0xad6d, 0xd3d1, 0xd3d8, 0xb049, 0xd3d6, 0xd3d4, 0xd3db,
- 0xd3d2, 0xd3d3, 0xb04a, 0xb04e, 0xd3dc, 0xb04d, 0xd3da, 0xd3d7,
- 0xd3d5, 0xb04b, 0xb04c, 0xd3d9, 0xb350, 0xd7b2, 0xb355, 0xd7c2,
- 0xb354, 0xd7c4, 0xd7b8, 0xb352, 0xd7c3, 0xd7b3, 0xb353, 0xd7bf,
- 0xd7bb, 0xd7bd, 0xd7b7, 0xd7be, 0xb34f, 0xd7ba, 0xd7b9, 0xd7b5,
- 0xd7c0, 0xd7bc, 0xd7b4, 0xd7b6, 0xb351, 0xd7c1, 0xb5f6, 0xdbcd,
- 0xdbc9, 0xdbcb, 0xdbc6, 0xdbc5, 0xdbc3, 0xdbca, 0xdbcc, 0xdbc8,
- 0xdbc7, 0xb5f4, 0xb5f5, 0xdbcf, 0xb8cd, 0xdff2, 0xdff8, 0xdff3,
- 0xdff4, 0xdff9, 0xb8cf, 0xb8c7, 0xb8ce, 0xdff1, 0xdbc4, 0xb8ca,
- 0xb8c8, 0xdff7, 0xdff6, 0xb8c9, 0xb8cb, 0xdff5, 0xb8c6, 0xb8cc,
- 0xe3f6, 0xbb74, 0xe442, 0xe441, 0xe3fb, 0xbb76, 0xe440, 0xe3f7,
- 0xe3f8, 0xbb6e, 0xbb70, 0xe3fd, 0xe3f5, 0xbb72, 0xbb71, 0xe3f9,
- 0xe3fe, 0xe3fc, 0xbb73, 0xe3fa, 0xdbce, 0xbb6f, 0xe7c2, 0xe7c9,
- 0xbdc6, 0xe7cd, 0xbdca, 0xe7c5, 0xe7c3, 0xe7cc, 0xbdc5, 0xe7cb,
- 0xbdc7, 0xbdc8, 0xe7c4, 0xbdc9, 0xe7ca, 0xe7c6, 0xe7c7, 0xe7c8,
- 0xbb75, 0xeb70, 0xeb7c, 0xbfca, 0xeb77, 0xeb79, 0xbfc8, 0xeb71,
- 0xeb75, 0xeb78, 0xbfc6, 0xbfc9, 0xeb7b, 0xeb73, 0xeb74, 0xeb7a,
- 0xeb72, 0xeb76, 0xbfc7, 0xee72, 0xee71, 0xc1b7, 0xee77, 0xc1b9,
- 0xc1b6, 0xee73, 0xc1ba, 0xee74, 0xee75, 0xee78, 0xc1b8, 0xf0d6,
- 0xf0d9, 0xf0d3, 0xf0d5, 0xf0d4, 0xf0d7, 0xf0d8, 0xee76, 0xf0d2,
- 0xc3cd, 0xf2ec, 0xf2ef, 0xf2f1, 0xf2ea, 0xf2eb, 0xf2ee, 0xf2f0,
- 0xc3ce, 0xc3cc, 0xc3cb, 0xf2ed, 0xf2e9, 0xf4ca, 0xc4b0, 0xf4cb,
- 0xf649, 0xc4fb, 0xf64b, 0xc4fc, 0xf648, 0xf64a, 0xc5a8, 0xf752,
- 0xc5a7, 0xf7fd, 0xf7fc, 0xf7fb, 0xf948, 0xf949, 0xf94b, 0xf94a,
- 0xca50, 0xa6e8, 0xad6e, 0xd7c5, 0xb5f7, 0xdffa, 0xc2d0, 0xf2f2,
- 0xa8a3, 0xb357, 0xb356, 0xdbd0, 0xb5f8, 0xdbd2, 0xdbd1, 0xdffb,
- 0xb8d0, 0xe443, 0xe446, 0xe445, 0xe444, 0xe7ce, 0xe7d0, 0xe7cf,
- 0xbfcc, 0xbfcb, 0xc1bb, 0xee79, 0xee7b, 0xee7a, 0xc2d1, 0xf2f4,
- 0xf2f3, 0xf4cc, 0xc4b1, 0xc4fd, 0xf754, 0xf753, 0xc65b, 0xa8a4,
- 0xd0af, 0xad6f, 0xd7c8, 0xd7c6, 0xd7c7, 0xdbd4, 0xdbd5, 0xe043,
- 0xdbd3, 0xdffc, 0xe041, 0xe040, 0xe042, 0xb8d1, 0xdffe, 0xdffd,
- 0xe044, 0xe449, 0xe447, 0xe448, 0xe7d3, 0xe7d1, 0xe7d2, 0xeb7d,
- 0xee7c, 0xee7d, 0xc2d2, 0xf2f5, 0xf4cd, 0xc4b2, 0xf64c, 0xf755,
- 0xc5a9, 0xf7fe, 0xf94c, 0xa8a5, 0xad71, 0xad72, 0xd0b0, 0xd0b1,
- 0xad70, 0xb054, 0xb052, 0xb051, 0xb058, 0xb050, 0xb059, 0xd3dd,
- 0xb056, 0xb053, 0xb057, 0xb055, 0xb04f, 0xb35f, 0xb359, 0xd7cc,
- 0xb35e, 0xb360, 0xb35a, 0xb35b, 0xd7ca, 0xb358, 0xd7cb, 0xb35d,
- 0xd7c9, 0xb35c, 0xb644, 0xb646, 0xdbd8, 0xb645, 0xb5f9, 0xb5fd,
- 0xb8e4, 0xe049, 0xdbda, 0xb5fe, 0xdbdd, 0xdbde, 0xb643, 0xdbe0,
- 0xdbe2, 0xdbe3, 0xdbd7, 0xdbd6, 0xdbe4, 0xb642, 0xdbe1, 0xdbdf,
- 0xb640, 0xb5fb, 0xb647, 0xdbdb, 0xdbdc, 0xdbd9, 0xb641, 0xb5fc,
- 0xb5fa, 0xe048, 0xb8df, 0xb8da, 0xb8d5, 0xb8e5, 0xb8d6, 0xb8d2,
- 0xb8e1, 0xb8de, 0xb8e0, 0xb8d7, 0xb8dc, 0xb8d3, 0xb8d4, 0xe050,
- 0xe04d, 0xe045, 0xe04a, 0xb8e2, 0xe051, 0xb8e3, 0xb8d9, 0xe047,
- 0xe04f, 0xe04b, 0xe04e, 0xe04c, 0xb8dd, 0xe046, 0xb8d8, 0xe44c,
- 0xbb78, 0xbb7b, 0xe44e, 0xbba5, 0xe44d, 0xbb7d, 0xbdcf, 0xe44f,
- 0xbba4, 0xe44b, 0xbba6, 0xbb79, 0xb8db, 0xbb7c, 0xbb7a, 0xbb7e,
- 0xbba2, 0xbb77, 0xbba7, 0xbba3, 0xbba1, 0xe44a, 0xbdd6, 0xbdd2,
- 0xbdd9, 0xe7d6, 0xbdda, 0xe7e2, 0xe7db, 0xbdcb, 0xe7e3, 0xe7dd,
- 0xbdd5, 0xe7de, 0xbdd4, 0xe7e1, 0xbdce, 0xe7df, 0xe7d5, 0xbdcd,
- 0xebaa, 0xbdd3, 0xbdd0, 0xbdd8, 0xe7d4, 0xe7d8, 0xbdcc, 0xe7d7,
- 0xe7d9, 0xe7da, 0xbdd7, 0xe7dc, 0xe7e0, 0xe7e4, 0xbddb, 0xbfd2,
- 0xeba5, 0xebab, 0xeba8, 0xeb7e, 0xebac, 0xeba1, 0xeba7, 0xbfcd,
- 0xbfd3, 0xebad, 0xbfcf, 0xbfd9, 0xbfd4, 0xebaf, 0xeba9, 0xbfd0,
- 0xeba2, 0xbfda, 0xeba3, 0xeba4, 0xbfdb, 0xbfd8, 0xbdd1, 0xbfce,
- 0xebb0, 0xbfdc, 0xbfd5, 0xebae, 0xbfd1, 0xbfd6, 0xbfd7, 0xc1c3,
- 0xeea4, 0xeead, 0xeeaa, 0xeeac, 0xc1c0, 0xeea5, 0xeeab, 0xc1bc,
- 0xeea7, 0xc1c4, 0xeea3, 0xeea8, 0xeeaf, 0xeba6, 0xeea9, 0xeea2,
- 0xc1bd, 0xeea1, 0xc1be, 0xeeb0, 0xc1bf, 0xeeae, 0xc1c2, 0xee7e,
- 0xc1c1, 0xeea6, 0xf0dc, 0xf0ea, 0xf0e5, 0xf0e7, 0xf0db, 0xc2d3,
- 0xf0da, 0xc2d6, 0xc2d5, 0xf0e9, 0xf0e1, 0xf0de, 0xf0e4, 0xf0dd,
- 0xf0df, 0xf0e8, 0xf0e6, 0xc2d4, 0xf0ed, 0xf0eb, 0xf0e2, 0xf0ec,
- 0xf0e3, 0xf2f9, 0xc3cf, 0xf341, 0xf64f, 0xc3d6, 0xf0e0, 0xf2f7,
- 0xc3d2, 0xf2f8, 0xf2fd, 0xc3d4, 0xc3d5, 0xf2f6, 0xf340, 0xf342,
- 0xf2fa, 0xf2fc, 0xf2fe, 0xf2fb, 0xf343, 0xc3d1, 0xc3d7, 0xc3d3,
- 0xc3d0, 0xf4d0, 0xc4b7, 0xf4ce, 0xf4d2, 0xf4d3, 0xc4b5, 0xf4d4,
- 0xf4d1, 0xf4cf, 0xc4b8, 0xc4b4, 0xf4d5, 0xc4b6, 0xc4b3, 0xc4fe,
- 0xc540, 0xf64e, 0xf64d, 0xf650, 0xf651, 0xc541, 0xf756, 0xf75b,
- 0xc5aa, 0xf758, 0xf757, 0xf75a, 0xf759, 0xf843, 0xc5dc, 0xf842,
- 0xf840, 0xf841, 0xc5fe, 0xc5fd, 0xf8c1, 0xf8c2, 0xc640, 0xf94d,
- 0xf94e, 0xc667, 0xc66d, 0xf9a9, 0xf9c8, 0xa8a6, 0xd7cd, 0xd7ce,
- 0xe052, 0xe450, 0xe7e5, 0xc1c6, 0xc1c5, 0xf0ee, 0xf344, 0xf844,
- 0xa8a7, 0xd3de, 0xb05a, 0xb361, 0xe054, 0xe053, 0xbddc, 0xe7e6,
- 0xbddd, 0xeeb1, 0xc2d7, 0xc676, 0xa8a8, 0xcdcb, 0xd3df, 0xb362,
- 0xd7cf, 0xd7d0, 0xdbe5, 0xb648, 0xb8e6, 0xe056, 0xe055, 0xe057,
- 0xe451, 0xe452, 0xbba8, 0xbfdd, 0xbdde, 0xbfde, 0xeeb5, 0xeeb2,
- 0xeeb4, 0xeeb3, 0xc1c7, 0xf0ef, 0xf346, 0xf345, 0xcba4, 0xb05c,
- 0xb05b, 0xd3e0, 0xd7d1, 0xdbe7, 0xdbe6, 0xb649, 0xe059, 0xe05a,
- 0xe058, 0xb8e8, 0xb8e7, 0xbbaa, 0xbba9, 0xe7e7, 0xebb3, 0xebb1,
- 0xebb2, 0xbfdf, 0xeeb7, 0xeeb6, 0xf0f2, 0xf0f1, 0xf0f0, 0xf347,
- 0xf9aa, 0xa8a9, 0xad73, 0xad74, 0xb05d, 0xb05e, 0xd3e2, 0xd3e1,
- 0xd7d2, 0xb368, 0xb366, 0xb363, 0xb367, 0xb365, 0xb364, 0xb64a,
- 0xdbea, 0xb8ed, 0xb64c, 0xb651, 0xdbec, 0xb653, 0xb652, 0xb655,
- 0xdbeb, 0xdbe8, 0xb64f, 0xb64b, 0xb64d, 0xdbe9, 0xb654, 0xb650,
- 0xb64e, 0xb8ef, 0xb8ee, 0xb8ec, 0xb8f0, 0xb8ea, 0xb8eb, 0xb8e9,
- 0xe05b, 0xe454, 0xbbac, 0xbbad, 0xbbab, 0xe453, 0xe455, 0xe7ea,
- 0xe7ec, 0xbde7, 0xe7ed, 0xbde0, 0xe7e9, 0xbddf, 0xbde9, 0xbde5,
- 0xbde6, 0xbde2, 0xe7e8, 0xbde1, 0xe7ee, 0xe7eb, 0xbde8, 0xbde3,
- 0xbde4, 0xebb5, 0xebb7, 0xebb6, 0xebb8, 0xbfe0, 0xebb4, 0xc1cb,
- 0xeeb8, 0xc1c8, 0xc1cc, 0xc1ca, 0xc1c9, 0xf0f3, 0xf0f6, 0xf0f5,
- 0xf0f4, 0xc2d8, 0xf348, 0xf349, 0xc3d8, 0xf34a, 0xc3d9, 0xc4ba,
- 0xc4b9, 0xf652, 0xc542, 0xf653, 0xf75c, 0xc5ab, 0xc5ac, 0xf845,
- 0xc642, 0xa8aa, 0xb36a, 0xb369, 0xe05c, 0xe05d, 0xbbae, 0xebb9,
- 0xbdea, 0xebba, 0xeeb9, 0xa8ab, 0xd0b2, 0xad76, 0xad75, 0xd3e3,
- 0xb05f, 0xd3e4, 0xd7d5, 0xd7d4, 0xd7d3, 0xdbee, 0xb658, 0xdbed,
- 0xb657, 0xdbef, 0xb656, 0xe05f, 0xe062, 0xe060, 0xe061, 0xe065,
- 0xe05e, 0xe066, 0xe063, 0xe064, 0xbbb0, 0xe456, 0xbbaf, 0xe7f2,
- 0xe7f0, 0xbdeb, 0xe7ef, 0xe7f1, 0xbdec, 0xebbb, 0xebbc, 0xc1cd,
- 0xf34c, 0xf34e, 0xf34b, 0xf34d, 0xf4d6, 0xf654, 0xf96f, 0xa8ac,
- 0xad77, 0xd3e5, 0xd3e7, 0xd3e6, 0xd7d8, 0xb36c, 0xd7d6, 0xb36b,
- 0xd7d9, 0xd7da, 0xd7d7, 0xdbfb, 0xb660, 0xdbf3, 0xdbf9, 0xb65b,
- 0xb65e, 0xdbf2, 0xb659, 0xdbf6, 0xe06c, 0xb65d, 0xdbf1, 0xdbf7,
- 0xdbf4, 0xdbfa, 0xdbf0, 0xdbf8, 0xb65c, 0xb65f, 0xdbf5, 0xb65a,
- 0xb8f2, 0xe068, 0xb8f1, 0xe06f, 0xe06e, 0xb8f8, 0xb8f9, 0xe070,
- 0xb8f3, 0xe06d, 0xb8f7, 0xe072, 0xe069, 0xe06b, 0xb8f4, 0xe067,
- 0xe06a, 0xe071, 0xb8f5, 0xe073, 0xb8f6, 0xbbb1, 0xe45b, 0xe461,
- 0xe459, 0xe462, 0xe458, 0xe45d, 0xe463, 0xe460, 0xe45f, 0xe45e,
- 0xe457, 0xe45c, 0xe45a, 0xbdf1, 0xbdee, 0xe7fb, 0xe841, 0xe843,
- 0xe840, 0xe7f8, 0xe7fa, 0xe845, 0xe842, 0xe7fc, 0xe846, 0xe7f9,
- 0xe844, 0xbdef, 0xbdf5, 0xbdf3, 0xe7f3, 0xbdf4, 0xbdf0, 0xe7f4,
- 0xe7f6, 0xe7f5, 0xe7fd, 0xe7fe, 0xbdf2, 0xbded, 0xe7f7, 0xebc6,
- 0xbfe2, 0xebbd, 0xbfe3, 0xbfe6, 0xebc2, 0xebbf, 0xbfe5, 0xebc3,
- 0xebc4, 0xebbe, 0xebc7, 0xebc0, 0xebc5, 0xbfe4, 0xbfe1, 0xebc1,
- 0xeebf, 0xc1d0, 0xc1ce, 0xc1d1, 0xc1cf, 0xeebe, 0xeebb, 0xeeba,
- 0xeebd, 0xeebc, 0xf145, 0xc2de, 0xf0fb, 0xf0fa, 0xc2d9, 0xf141,
- 0xf140, 0xf0f7, 0xf143, 0xf0fc, 0xc2dd, 0xf0f9, 0xf142, 0xf0f8,
- 0xc2da, 0xc2dc, 0xf0fd, 0xc2db, 0xf0fe, 0xf144, 0xf352, 0xc3de,
- 0xf34f, 0xf353, 0xc3db, 0xf351, 0xc3e0, 0xc3dd, 0xf350, 0xc3df,
- 0xf354, 0xc3da, 0xc4bc, 0xc4be, 0xf4d9, 0xc4bd, 0xf4d7, 0xc3dc,
- 0xf4d8, 0xc4bb, 0xc543, 0xc545, 0xf656, 0xc544, 0xf655, 0xf761,
- 0xc5ad, 0xf760, 0xc5ae, 0xf75e, 0xf75d, 0xf762, 0xf763, 0xf846,
- 0xf75f, 0xf8c6, 0xf8c3, 0xf8c4, 0xf8c5, 0xc65c, 0xf951, 0xf950,
- 0xf94f, 0xf970, 0xf9be, 0xf9ab, 0xc66e, 0xa8ad, 0xb060, 0xb8fa,
- 0xbdf6, 0xebc8, 0xc2df, 0xf355, 0xf9ac, 0xa8ae, 0xaaee, 0xad79,
- 0xad78, 0xb063, 0xd3e8, 0xb061, 0xd3e9, 0xb062, 0xd7df, 0xd7db,
- 0xb36d, 0xd7de, 0xd7dd, 0xd7dc, 0xb36e, 0xd7e0, 0xd7e1, 0xdc43,
- 0xdc41, 0xdc45, 0xdc46, 0xdc4c, 0xdc48, 0xdc4a, 0xdc42, 0xdbfc,
- 0xdc49, 0xdc4b, 0xdc44, 0xdc47, 0xdbfd, 0xb662, 0xdc40, 0xdbfe,
- 0xb661, 0xb663, 0xb8fd, 0xe075, 0xe077, 0xe076, 0xe07b, 0xb8fb,
- 0xe078, 0xe074, 0xe079, 0xe07a, 0xb8fc, 0xb8fe, 0xe07c, 0xe467,
- 0xe466, 0xe464, 0xe465, 0xbbb3, 0xbbb5, 0xbbb2, 0xbbb4, 0xe84d,
- 0xe84e, 0xe849, 0xe84a, 0xbdf8, 0xbdfd, 0xbdf7, 0xbdfe, 0xbdf9,
- 0xe84b, 0xe84c, 0xe848, 0xbe40, 0xbdfb, 0xbdfa, 0xbdfc, 0xe847,
- 0xebca, 0xbfe8, 0xebcc, 0xbfea, 0xebcf, 0xebcb, 0xebc9, 0xebce,
- 0xbfe9, 0xebcd, 0xbfe7, 0xc1d3, 0xc1d6, 0xeec1, 0xc1d4, 0xeec0,
- 0xc1d2, 0xc1d5, 0xf146, 0xf147, 0xf148, 0xc2e0, 0xf149, 0xc2e1,
- 0xc3e2, 0xf358, 0xf359, 0xf357, 0xf356, 0xf35a, 0xc3e1, 0xf4dd,
- 0xf4db, 0xf4dc, 0xf4de, 0xf4da, 0xf4df, 0xf658, 0xf659, 0xf657,
- 0xc546, 0xf764, 0xc5af, 0xf765, 0xf848, 0xf847, 0xa8af, 0xb664,
- 0xb940, 0xbbb6, 0xbfec, 0xbfeb, 0xc3e3, 0xc47c, 0xc547, 0xa8b0,
- 0xb064, 0xb941, 0xf35b, 0xcba6, 0xa8b1, 0xa8b4, 0xa8b3, 0xa8b2,
- 0xcba5, 0xcdcd, 0xcdcf, 0xaaef, 0xaaf1, 0xcdcc, 0xcdce, 0xaaf0,
- 0xcdd1, 0xcdd0, 0xcdd2, 0xd0b6, 0xd0b4, 0xad7c, 0xd0b3, 0xada3,
- 0xad7e, 0xad7b, 0xada4, 0xad7d, 0xada2, 0xada1, 0xd0b5, 0xad7a,
- 0xb06a, 0xd3eb, 0xd3f1, 0xb067, 0xb06e, 0xb069, 0xd3ee, 0xd3f0,
- 0xb06c, 0xd3ea, 0xd3ed, 0xb068, 0xb065, 0xd3ec, 0xb06b, 0xd3ef,
- 0xb06d, 0xb066, 0xd7e3, 0xd7e6, 0xb370, 0xb37a, 0xb376, 0xd7e4,
- 0xb37e, 0xb377, 0xb37c, 0xb372, 0xb36f, 0xb371, 0xb37d, 0xd7e5,
- 0xb375, 0xb378, 0xb374, 0xb379, 0xd7e7, 0xb37b, 0xb373, 0xd7e2,
- 0xdc4d, 0xb665, 0xdc4f, 0xb667, 0xb669, 0xdc4e, 0xb666, 0xb66a,
- 0xb668, 0xb947, 0xe0a3, 0xb94f, 0xe07e, 0xb950, 0xb945, 0xe0a1,
- 0xb94a, 0xe0a2, 0xb943, 0xb942, 0xb94d, 0xb94c, 0xb94b, 0xb949,
- 0xb94e, 0xe07d, 0xb944, 0xb946, 0xb948, 0xbbb8, 0xbbbb, 0xbbbf,
- 0xbbb9, 0xbbbe, 0xbbbc, 0xbbb7, 0xbbbd, 0xbbba, 0xe852, 0xbe43,
- 0xbe41, 0xe853, 0xbe44, 0xbe42, 0xe851, 0xe850, 0xbff0, 0xe84f,
- 0xbfee, 0xbfed, 0xebd0, 0xbe45, 0xbfef, 0xebd1, 0xbff2, 0xebd2,
- 0xbff1, 0xc1d8, 0xeec3, 0xc1d7, 0xc1dc, 0xc1da, 0xc1db, 0xc2e3,
- 0xc1d9, 0xeec2, 0xebd3, 0xc2e2, 0xc2e4, 0xc3e4, 0xc3e5, 0xf4e0,
- 0xc5de, 0xc5dd, 0xa8b6, 0xca55, 0xb06f, 0xca52, 0xca53, 0xca51,
- 0xca54, 0xcbaa, 0xcba7, 0xcbac, 0xcba8, 0xa8b7, 0xa8ba, 0xcba9,
- 0xa8b9, 0xcbab, 0xa8b8, 0xcdd5, 0xcdd7, 0xaaf4, 0xcdd3, 0xcdd6,
- 0xcdd4, 0xaaf2, 0xaaf5, 0xaaf3, 0xd0b8, 0xd0bc, 0xd0b9, 0xada7,
- 0xada8, 0xd0bb, 0xd0bd, 0xd0bf, 0xada5, 0xd0be, 0xada6, 0xd7ee,
- 0xd0ba, 0xd3f2, 0xd3fb, 0xd3f9, 0xd3f4, 0xd3f5, 0xd3fa, 0xd3fc,
- 0xb071, 0xd3f7, 0xd3f3, 0xb070, 0xb072, 0xd3f6, 0xd3fd, 0xd3f8,
- 0xb3a1, 0xd7f1, 0xd7e9, 0xd7ef, 0xd7f0, 0xb3a2, 0xd7e8, 0xd7ea,
- 0xd0b7, 0xd7ec, 0xd7ed, 0xd7eb, 0xb66c, 0xdc56, 0xebd4, 0xdc57,
- 0xdc54, 0xb3a3, 0xb66e, 0xdc53, 0xdc59, 0xdc58, 0xb66b, 0xdc5c,
- 0xdc52, 0xdc5b, 0xdc50, 0xdc5a, 0xdc55, 0xb66d, 0xe0aa, 0xe0a5,
- 0xe0ab, 0xe0a6, 0xe0a4, 0xe0a7, 0xb951, 0xe0a9, 0xe0a8, 0xb952,
- 0xbbc1, 0xbbc0, 0xe46e, 0xe471, 0xe469, 0xe46d, 0xbbc2, 0xe46c,
- 0xe46a, 0xe470, 0xe46b, 0xe468, 0xe46f, 0xe859, 0xbe48, 0xf14a,
- 0xe856, 0xe857, 0xe855, 0xdc51, 0xbe47, 0xe85a, 0xe854, 0xbe46,
- 0xbe49, 0xe858, 0xebd5, 0xbff3, 0xebd6, 0xebd7, 0xeec4, 0xc1dd,
- 0xf14b, 0xf14c, 0xf14d, 0xf35d, 0xf35c, 0xf4e2, 0xf4e1, 0xf65b,
- 0xf65c, 0xf65a, 0xf766, 0xc5b0, 0xa8bb, 0xadaa, 0xada9, 0xb075,
- 0xb074, 0xd440, 0xd441, 0xd3fe, 0xb073, 0xd7f5, 0xd7f6, 0xd7f2,
- 0xb3a4, 0xd7f3, 0xd7f4, 0xdc5f, 0xdc61, 0xdc5d, 0xdc60, 0xb66f,
- 0xdc5e, 0xb670, 0xdd73, 0xb955, 0xb954, 0xb953, 0xe0ac, 0xe0ad,
- 0xe473, 0xe475, 0xbbc6, 0xbbc3, 0xbbc5, 0xbbc4, 0xe474, 0xe472,
- 0xe861, 0xe85e, 0xe85f, 0xbe4d, 0xe860, 0xe85b, 0xe85c, 0xbe4a,
- 0xbe4b, 0xe85d, 0xbe4c, 0xebdb, 0xebdc, 0xebd9, 0xebda, 0xbff4,
- 0xebd8, 0xeec8, 0xeec5, 0xeec7, 0xc1e0, 0xeecb, 0xc1df, 0xeec9,
- 0xeecc, 0xeeca, 0xeec6, 0xc1de, 0xf14f, 0xf150, 0xf14e, 0xf152,
- 0xc2e5, 0xc2e6, 0xf35f, 0xc3e7, 0xf151, 0xf35e, 0xc3e6, 0xf4e5,
- 0xf4e6, 0xc4bf, 0xf4e4, 0xf4e3, 0xf65d, 0xc548, 0xf849, 0xf8c8,
- 0xf8c7, 0xc643, 0xc65d, 0xf8c9, 0xf971, 0xc66f, 0xa8bc, 0xaaf6,
- 0xb956, 0xc4c0, 0xa8bd, 0xadab, 0xb3a5, 0xb671, 0xc2e7, 0xaaf7,
- 0xd0c1, 0xd0c0, 0xd442, 0xb078, 0xb076, 0xb07a, 0xd444, 0xb079,
- 0xb077, 0xd443, 0xb3a8, 0xd7fc, 0xb3a7, 0xb3a9, 0xd842, 0xb3ab,
- 0xd7fe, 0xd840, 0xd7f7, 0xb3aa, 0xd843, 0xd7f9, 0xd7fa, 0xd7f8,
- 0xb3a6, 0xd841, 0xd7fb, 0xd7fd, 0xdc6d, 0xdc6c, 0xdc6a, 0xdc62,
- 0xdc71, 0xdc65, 0xdc6f, 0xdc76, 0xdc6e, 0xb679, 0xb675, 0xdc63,
- 0xdc69, 0xb677, 0xdc68, 0xb678, 0xb67a, 0xdc6b, 0xb672, 0xb673,
- 0xdc77, 0xdc75, 0xdc74, 0xdc66, 0xdc72, 0xb676, 0xb674, 0xdc73,
- 0xdc64, 0xdc67, 0xdc70, 0xe4ba, 0xe0b7, 0xe0b0, 0xe0c3, 0xe0cc,
- 0xe0b3, 0xb961, 0xe0c0, 0xb957, 0xb959, 0xb965, 0xe0b1, 0xb95a,
- 0xb95c, 0xb966, 0xb95b, 0xb964, 0xe0b9, 0xe0ae, 0xb962, 0xe0b8,
- 0xb95e, 0xe0ca, 0xb963, 0xe0c8, 0xe0bc, 0xe0c6, 0xb960, 0xe0af,
- 0xe0c9, 0xe0c4, 0xe0cb, 0xb958, 0xb967, 0xb95d, 0xe0b5, 0xe0bd,
- 0xe0c1, 0xe0c5, 0xb95f, 0xe0b4, 0xe0b2, 0xe0be, 0xe0bb, 0xe0ba,
- 0xe0bf, 0xe0c2, 0xe0c7, 0xe478, 0xbbc7, 0xe4a4, 0xe47a, 0xbbcc,
- 0xbbd0, 0xe4ad, 0xe4b5, 0xe4a6, 0xbbc8, 0xe4aa, 0xe0b6, 0xbbc9,
- 0xe4b1, 0xe4b6, 0xe4ae, 0xe4b0, 0xe4b9, 0xe4b2, 0xe47e, 0xe4a9,
- 0xbbd1, 0xbbcd, 0xe47c, 0xe4ab, 0xbbcb, 0xe4a5, 0xbbca, 0xe4b3,
- 0xe4a2, 0xe479, 0xbbce, 0xe4b8, 0xe47b, 0xe4af, 0xe4ac, 0xe4a7,
- 0xe477, 0xe476, 0xe4a1, 0xe4b4, 0xbbcf, 0xe4b7, 0xe47d, 0xe4a3,
- 0xbe52, 0xbe5a, 0xbe55, 0xe8a4, 0xe8a1, 0xe867, 0xbe50, 0xbe4f,
- 0xbe56, 0xe865, 0xbe54, 0xe871, 0xe863, 0xe864, 0xbe4e, 0xe8a3,
- 0xbe58, 0xe874, 0xe879, 0xe873, 0xebee, 0xe86f, 0xe877, 0xe875,
- 0xe868, 0xe862, 0xe87d, 0xbe57, 0xe87e, 0xe878, 0xe86d, 0xe86b,
- 0xe866, 0xe86e, 0xe87b, 0xe86a, 0xe87a, 0xe8a2, 0xbe53, 0xe876,
- 0xe87c, 0xe872, 0xe86c, 0xbe51, 0xe4a8, 0xe870, 0xbe59, 0xe869,
- 0xebf4, 0xbff7, 0xebf3, 0xebf0, 0xec44, 0xbffb, 0xec41, 0xebf8,
- 0xec43, 0xebe9, 0xebf6, 0xbffd, 0xebe1, 0xebdf, 0xec42, 0xec40,
- 0xebfe, 0xebed, 0xebec, 0xebe2, 0xc040, 0xebe8, 0xebf2, 0xebfd,
- 0xc043, 0xec45, 0xc1e8, 0xc045, 0xbffe, 0xebe6, 0xebef, 0xebde,
- 0xebe0, 0xbff5, 0xc042, 0xbffa, 0xebe7, 0xebf7, 0xebf1, 0xc041,
- 0xebdd, 0xc1e3, 0xebf9, 0xebfc, 0xbffc, 0xebeb, 0xc044, 0xbff9,
- 0xbff8, 0xebf5, 0xebfb, 0xbff6, 0xebe4, 0xebfa, 0xebe5, 0xebea,
- 0xeed2, 0xeed7, 0xc1e5, 0xc1e7, 0xeedd, 0xc1e1, 0xeeec, 0xeee3,
- 0xeed8, 0xeed9, 0xeee2, 0xc1ee, 0xeee1, 0xeed1, 0xeee0, 0xeed4,
- 0xeeed, 0xc1ed, 0xc1eb, 0xeed5, 0xeee8, 0xeeda, 0xeee7, 0xeee9,
- 0xeed0, 0xc1e6, 0xeeea, 0xeede, 0xc1ea, 0xeedb, 0xc1ec, 0xeee4,
- 0xc1e4, 0xeed6, 0xeee5, 0xeedf, 0xebe3, 0xeee6, 0xeed3, 0xc1e9,
- 0xeeeb, 0xc1e2, 0xeece, 0xf160, 0xf159, 0xc2e9, 0xf154, 0xf163,
- 0xf15b, 0xeedc, 0xf165, 0xf155, 0xc2e8, 0xf15f, 0xc2ea, 0xc2f2,
- 0xc2f0, 0xf161, 0xc2f1, 0xf157, 0xf158, 0xf15d, 0xf162, 0xeecd,
- 0xc2eb, 0xf16a, 0xf167, 0xf16b, 0xf15e, 0xf15a, 0xf168, 0xf36a,
- 0xf15c, 0xc2ee, 0xc2ed, 0xeecf, 0xc2ef, 0xf164, 0xf166, 0xc2ec,
- 0xf169, 0xf153, 0xf156, 0xf373, 0xf363, 0xc3eb, 0xf371, 0xf361,
- 0xc3ec, 0xf36c, 0xf368, 0xc3f1, 0xf372, 0xf362, 0xf365, 0xc3e9,
- 0xf374, 0xf36d, 0xf370, 0xc3ef, 0xc3f4, 0xc3f2, 0xf369, 0xf364,
- 0xc3ed, 0xc3ee, 0xf360, 0xc3ea, 0xc3e8, 0xc3f0, 0xf36f, 0xc3f3,
- 0xf36b, 0xf375, 0xc3f5, 0xf367, 0xf36e, 0xf4f3, 0xf542, 0xf4f5,
- 0xf4fc, 0xf366, 0xf4fa, 0xf4e9, 0xf540, 0xc4c3, 0xf4ed, 0xf4fe,
- 0xf4f4, 0xc4c2, 0xf544, 0xf4f6, 0xf4fb, 0xf4fd, 0xf4e7, 0xf541,
- 0xf4f2, 0xf4f7, 0xf4eb, 0xf4ef, 0xf543, 0xf4f9, 0xf4e8, 0xf4ec,
- 0xf4ee, 0xf4f8, 0xc4c1, 0xf4f1, 0xf4ea, 0xf4f0, 0xf661, 0xf666,
- 0xc54f, 0xf668, 0xc549, 0xf664, 0xf66a, 0xc54e, 0xc54a, 0xc54b,
- 0xf660, 0xf667, 0xc54d, 0xf665, 0xc54c, 0xf65f, 0xf663, 0xf662,
- 0xf65e, 0xf669, 0xc5b1, 0xf76d, 0xf770, 0xf76c, 0xf76e, 0xf76f,
- 0xf769, 0xf76a, 0xf767, 0xf76b, 0xf768, 0xc5b2, 0xc5b3, 0xf84b,
- 0xf84d, 0xf84c, 0xf84e, 0xc5e0, 0xf84a, 0xc5df, 0xc5e1, 0xf8cb,
- 0xf8cc, 0xc644, 0xf8ca, 0xf953, 0xf952, 0xf954, 0xc65f, 0xf955,
- 0xc65e, 0xf956, 0xf972, 0xf975, 0xf974, 0xc668, 0xf973, 0xc672,
- 0xc670, 0xc671, 0xc677, 0xf9c0, 0xf9c1, 0xf9bf, 0xf9c9, 0xaaf8,
- 0xd844, 0xdc78, 0xe8a5, 0xf376, 0xaaf9, 0xadac, 0xb07b, 0xd845,
- 0xd846, 0xb3ac, 0xb67d, 0xdc7a, 0xdc79, 0xb6a3, 0xb67c, 0xdc7b,
- 0xb67e, 0xb6a2, 0xb6a1, 0xb67b, 0xb968, 0xe0d0, 0xe0ce, 0xe0cf,
- 0xe0cd, 0xbbd2, 0xbbd5, 0xbbd7, 0xbbd6, 0xbbd3, 0xbbd4, 0xe8a7,
- 0xe8a6, 0xbe5b, 0xe8a8, 0xe8a9, 0xbe5c, 0xec4d, 0xec4b, 0xeef3,
- 0xec49, 0xec4a, 0xc046, 0xec46, 0xec4e, 0xec48, 0xec4c, 0xeeef,
- 0xeef1, 0xeef2, 0xc1f3, 0xeeee, 0xc1f2, 0xeef0, 0xc1ef, 0xc1f0,
- 0xc1f1, 0xec47, 0xc2f5, 0xf16e, 0xf16c, 0xf16d, 0xc2f3, 0xc2f6,
- 0xc2f4, 0xf377, 0xf378, 0xc3f6, 0xf545, 0xf547, 0xf546, 0xc4c4,
- 0xc550, 0xf66d, 0xf66c, 0xf66b, 0xaafa, 0xc9aa, 0xca58, 0xa6e9,
- 0xca56, 0xca59, 0xca57, 0xcbae, 0xa8c1, 0xa8c2, 0xcbb0, 0xa8bf,
- 0xcbaf, 0xcbad, 0xa8c0, 0xa8be, 0xcdd8, 0xcddb, 0xaafd, 0xcdda,
- 0xcdd9, 0xaafc, 0xaafb, 0xab40, 0xcddc, 0xaafe, 0xd0c6, 0xadae,
- 0xadaf, 0xadb0, 0xd0c7, 0xd0c3, 0xadad, 0xd0c4, 0xd0c5, 0xd0c2,
- 0xb0a4, 0xb0a1, 0xd445, 0xb0a2, 0xb0a5, 0xd446, 0xb07e, 0xb07c,
- 0xb07d, 0xb0a3, 0xb3ad, 0xd849, 0xb3b5, 0xd848, 0xd84b, 0xb3b1,
- 0xd84a, 0xb6ab, 0xb3af, 0xb3b2, 0xb3ae, 0xb3b3, 0xb3b4, 0xb3b0,
- 0xd847, 0xb6a7, 0xdc7d, 0xdca3, 0xdca2, 0xb6ac, 0xb6a8, 0xb6a9,
- 0xdc7c, 0xdc7e, 0xdca1, 0xb6a4, 0xb6a6, 0xb6aa, 0xb6a5, 0xe0d3,
- 0xe0d1, 0xe0d2, 0xb96a, 0xb96b, 0xe0d4, 0xb969, 0xbbd8, 0xbbda,
- 0xbbd9, 0xe4bb, 0xe4bc, 0xe8ab, 0xe8aa, 0xc047, 0xc048, 0xec4f,
- 0xc049, 0xeef6, 0xeef4, 0xeef5, 0xc1f4, 0xf16f, 0xc3f7, 0xc1f5,
- 0xab41, 0xb0a6, 0xd447, 0xd84c, 0xb3b6, 0xb6ad, 0xdca4, 0xdca6,
- 0xb6af, 0xb6ae, 0xb6b0, 0xb6b1, 0xdca5, 0xb96e, 0xb96f, 0xb96d,
- 0xbbdb, 0xb96c, 0xe0d5, 0xbbdc, 0xe8ac, 0xec50, 0xc04a, 0xc1f6,
- 0xf170, 0xf174, 0xc2f9, 0xf171, 0xc2fa, 0xc2f8, 0xf175, 0xc2fb,
- 0xf173, 0xf379, 0xc2f7, 0xc3f8, 0xf8cd, 0xab42, 0xb3b8, 0xb3b7,
- 0xb6b2, 0xdca8, 0xdca7, 0xb6b3, 0xe0d9, 0xb973, 0xb970, 0xe0d8,
- 0xb972, 0xe0d6, 0xb971, 0xe0d7, 0xe4bd, 0xbbdd, 0xe8af, 0xbe5d,
- 0xe8ad, 0xbe5e, 0xbe5f, 0xe8ae, 0xbe60, 0xec51, 0xc04e, 0xc04b,
- 0xc050, 0xec53, 0xc04c, 0xec52, 0xc04f, 0xc04d, 0xeef9, 0xeefb,
- 0xc1f7, 0xeefa, 0xc1f8, 0xeef8, 0xeef7, 0xf177, 0xf176, 0xc2fc,
- 0xf178, 0xf37e, 0xc3fa, 0xf37d, 0xf37a, 0xc3f9, 0xf37b, 0xf37c,
- 0xf548, 0xf549, 0xc4c5, 0xc553, 0xf66e, 0xc551, 0xc552, 0xf66f,
- 0xc5b4, 0xc5b5, 0xf771, 0xc645, 0xf8cf, 0xc647, 0xf8ce, 0xf8d0,
- 0xc646, 0xf957, 0xf9ad, 0xab43, 0xb974, 0xe4be, 0xe8b0, 0xc051,
- 0xc052, 0xab44, 0xbe61, 0xc3fb, 0xadb1, 0xc053, 0xc5e2, 0xadb2,
- 0xd84d, 0xdca9, 0xdcab, 0xdcaa, 0xe0dd, 0xe0da, 0xb975, 0xb976,
- 0xe0db, 0xe0dc, 0xe4c0, 0xe4c5, 0xbbde, 0xe4bf, 0xe4c1, 0xe4c8,
- 0xe4c3, 0xe4c7, 0xe4c4, 0xe4c2, 0xe4c6, 0xbbdf, 0xe8b3, 0xe8b1,
- 0xbe63, 0xbe62, 0xe8b2, 0xbe64, 0xec56, 0xec55, 0xc054, 0xec54,
- 0xeefc, 0xeefe, 0xef41, 0xef40, 0xc1f9, 0xeefd, 0xf1a1, 0xc2fd,
- 0xf17d, 0xf1a2, 0xc2fe, 0xf17b, 0xf17e, 0xf17c, 0xf179, 0xc340,
- 0xf17a, 0xf3a1, 0xf3a3, 0xf3a2, 0xf54a, 0xf54b, 0xf670, 0xc5b7,
- 0xc5b6, 0xf84f, 0xf850, 0xc648, 0xf8d1, 0xc669, 0xadb3, 0xb6b4,
- 0xe4ca, 0xe4c9, 0xe8b5, 0xe8b4, 0xc1fa, 0xef43, 0xef42, 0xf1a5,
- 0xf1a3, 0xf1a6, 0xf1a4, 0xc3fc, 0xf3a4, 0xf3a5, 0xf3a6, 0xf671,
- 0xf772, 0xf8d2, 0xadb4, 0xec57, 0xef44, 0xadb5, 0xbbe0, 0xec58,
- 0xc341, 0xf1a7, 0xc3fd, 0xf54c, 0xf54d, 0xc554, 0xf851, 0xadb6,
- 0xb3bb, 0xb3bc, 0xd84e, 0xb6b5, 0xb6b6, 0xdcac, 0xb6b7, 0xb97a,
- 0xb97c, 0xe0df, 0xe0e0, 0xe0de, 0xb977, 0xb978, 0xb97b, 0xb979,
- 0xe4cb, 0xbbe1, 0xbbe2, 0xe8bc, 0xbe67, 0xe8b7, 0xe8b6, 0xe8bb,
- 0xbe65, 0xc05b, 0xe8b8, 0xe8bd, 0xe8ba, 0xe8b9, 0xbe66, 0xc059,
- 0xec5a, 0xc055, 0xec5b, 0xec59, 0xc058, 0xc056, 0xc05a, 0xc057,
- 0xef45, 0xef4a, 0xef46, 0xef49, 0xc1fb, 0xedd4, 0xef48, 0xef47,
- 0xc344, 0xc342, 0xc345, 0xc343, 0xf1a8, 0xf1a9, 0xf1aa, 0xc346,
- 0xf3aa, 0xc440, 0xf3a8, 0xc441, 0xf3a7, 0xf3a9, 0xc3fe, 0xf551,
- 0xf54e, 0xf54f, 0xf550, 0xf672, 0xc556, 0xc555, 0xf774, 0xf773,
- 0xc5b8, 0xc5e3, 0xc649, 0xc660, 0xf958, 0xf9ae, 0xf9af, 0xadb7,
- 0xdcad, 0xe0e1, 0xe4cc, 0xe4cd, 0xbbe3, 0xbbe4, 0xe8be, 0xbe68,
- 0xc1fc, 0xf1ab, 0xc347, 0xf3ad, 0xc442, 0xf3ac, 0xf3ae, 0xf3ab,
- 0xf675, 0xf552, 0xf553, 0xc4c6, 0xf674, 0xf673, 0xf775, 0xf9b0,
- 0xadb8, 0xadb9, 0xb0a7, 0xd448, 0xd84f, 0xb6b8, 0xb6bb, 0xb6b9,
- 0xdcae, 0xb6bd, 0xb6ba, 0xb6bc, 0xb97e, 0xe0e2, 0xe0e3, 0xe8c0,
- 0xb97d, 0xb9a1, 0xb9a2, 0xe4cf, 0xe4ce, 0xbbe5, 0xbbe6, 0xe4d0,
- 0xe8bf, 0xbbe8, 0xbe69, 0xbbe7, 0xc05c, 0xe8c1, 0xbe6b, 0xbe6a,
- 0xe8c2, 0xe8c5, 0xe8c3, 0xe8c4, 0xbe6c, 0xc061, 0xc05f, 0xc05e,
- 0xec5d, 0xc060, 0xec5c, 0xef4b, 0xec5e, 0xc05d, 0xec5f, 0xef4e,
- 0xef4c, 0xef4d, 0xef52, 0xc34b, 0xef51, 0xef54, 0xef53, 0xef50,
- 0xef4f, 0xc1fd, 0xf1ae, 0xf1ad, 0xc34a, 0xc348, 0xc349, 0xf1ac,
- 0xf3b1, 0xc443, 0xf3b0, 0xf3af, 0xc444, 0xf558, 0xf557, 0xf555,
- 0xf554, 0xc4c8, 0xc4c7, 0xf559, 0xf776, 0xc5b9, 0xf677, 0xc557,
- 0xf676, 0xf556, 0xf777, 0xc5e4, 0xc661, 0xf959, 0xf9b1, 0xadba,
- 0xd850, 0xef55, 0xadbb, 0xe4d2, 0xe4d1, 0xec60, 0xef57, 0xef56,
- 0xc34c, 0xf3b2, 0xf3b3, 0xc4c9, 0xf9b2, 0xb0a8, 0xb6bf, 0xb6be,
- 0xe0e4, 0xe0e6, 0xb9a4, 0xe0e5, 0xb9a3, 0xb9a5, 0xe0e7, 0xe4d4,
- 0xe4d6, 0xe4d5, 0xe4d8, 0xbbe9, 0xe4d7, 0xe4d3, 0xe4d9, 0xe8cc,
- 0xe8cf, 0xe8d1, 0xe8c7, 0xe8cb, 0xe8c8, 0xbe6e, 0xbe71, 0xbe73,
- 0xe8c9, 0xe8ca, 0xbe72, 0xe8cd, 0xe8d0, 0xe8ce, 0xbe74, 0xbe70,
- 0xe8c6, 0xbe6d, 0xbe6f, 0xc063, 0xec66, 0xec64, 0xec63, 0xec69,
- 0xec68, 0xec67, 0xec62, 0xc062, 0xec61, 0xec65, 0xc064, 0xef5a,
- 0xef5e, 0xef5b, 0xef5d, 0xef5c, 0xef59, 0xef5f, 0xef62, 0xef60,
- 0xef61, 0xc240, 0xc1fe, 0xef58, 0xef63, 0xf1b3, 0xf1b6, 0xf1b8,
- 0xf1b7, 0xf1b1, 0xf1b5, 0xf1b0, 0xf1b2, 0xc34d, 0xf1af, 0xf1b4,
- 0xf3c0, 0xf3b5, 0xc445, 0xc446, 0xf3b4, 0xf3b9, 0xf3bf, 0xf3b7,
- 0xf3be, 0xf3bb, 0xf3ba, 0xf3bd, 0xf3b8, 0xf3b6, 0xf3bc, 0xf560,
- 0xf55e, 0xc4ca, 0xf55d, 0xf563, 0xf561, 0xc4cb, 0xf55c, 0xf55a,
- 0xf55b, 0xc4cd, 0xf55f, 0xc4cc, 0xf562, 0xf678, 0xf67e, 0xf679,
- 0xc55b, 0xf6a1, 0xc55a, 0xf67d, 0xf67c, 0xc559, 0xf67b, 0xc558,
- 0xf67a, 0xf77d, 0xf7a1, 0xf77e, 0xf77b, 0xc5bb, 0xf778, 0xf77c,
- 0xf7a3, 0xf7a2, 0xf779, 0xf77a, 0xc5ba, 0xf852, 0xc5e7, 0xf853,
- 0xc5e5, 0xc5e6, 0xf8d3, 0xc64a, 0xf976, 0xc66a, 0xf9b3, 0xc66b,
- 0xf9b4, 0xf9b5, 0xf9c3, 0xf9c2, 0xc67a, 0xf9cd, 0xb0a9, 0xe0e9,
- 0xe0e8, 0xbbea, 0xbbeb, 0xe4da, 0xe8d2, 0xec6c, 0xbe75, 0xc065,
- 0xec6a, 0xec6d, 0xc066, 0xef64, 0xec6b, 0xf1b9, 0xc34e, 0xf3c1,
- 0xf566, 0xf564, 0xf565, 0xf6a2, 0xc55c, 0xf7a4, 0xc5ea, 0xc5bc,
- 0xc5e8, 0xc5e9, 0xf8d4, 0xc662, 0xb0aa, 0xf1ba, 0xd449, 0xb9a6,
- 0xe4db, 0xbbec, 0xe4dc, 0xe8d4, 0xe8d3, 0xc068, 0xbe76, 0xbe77,
- 0xe8d7, 0xe8d6, 0xe8d5, 0xec6e, 0xec71, 0xec70, 0xec6f, 0xc067,
- 0xef68, 0xef66, 0xef65, 0xef67, 0xc34f, 0xf1bc, 0xf1bd, 0xc350,
- 0xf1bb, 0xf3c3, 0xf3c2, 0xf3c5, 0xc447, 0xf3c4, 0xf567, 0xf569,
- 0xf568, 0xf6a3, 0xf6a6, 0xf6a4, 0xf6a5, 0xf7a5, 0xc5bd, 0xf854,
- 0xf855, 0xf856, 0xc64b, 0xc663, 0xf9b6, 0xb0ab, 0xbe78, 0xc069,
- 0xf1be, 0xf7a6, 0xf9c4, 0xd44a, 0xc67b, 0xb0ac, 0xec72, 0xf1bf,
- 0xf3c6, 0xf6a7, 0xf7a7, 0xb0ad, 0xe4dd, 0xe4de, 0xbbed, 0xbbee,
- 0xe8d9, 0xbe7a, 0xbe79, 0xe8d8, 0xef69, 0xf1c0, 0xf1c2, 0xf1c1,
- 0xc353, 0xc352, 0xc351, 0xc55e, 0xf6a8, 0xc55d, 0xf7a9, 0xf7a8,
- 0xc64c, 0xf8d5, 0xb3bd, 0xe0ea, 0xe4e1, 0xe4df, 0xe4e0, 0xe8e2,
- 0xe8dd, 0xe8da, 0xe8e1, 0xe8e3, 0xbe7c, 0xe8e0, 0xe8dc, 0xe8db,
- 0xe8df, 0xe8de, 0xbe7b, 0xec7d, 0xec78, 0xec76, 0xeca1, 0xec77,
- 0xec73, 0xec79, 0xec74, 0xef72, 0xec75, 0xeca2, 0xec7c, 0xc06a,
- 0xec7b, 0xec7a, 0xec7e, 0xef6a, 0xef6d, 0xef6c, 0xef74, 0xef6f,
- 0xef73, 0xef71, 0xef70, 0xef6e, 0xef6b, 0xc243, 0xc242, 0xc244,
- 0xc241, 0xef75, 0xf1c8, 0xf1cb, 0xf1c9, 0xf1cd, 0xf1ce, 0xf1c6,
- 0xc358, 0xf1c7, 0xf1c5, 0xf1cc, 0xf1c4, 0xf1c3, 0xc357, 0xc355,
- 0xc354, 0xf1ca, 0xf3cf, 0xf3d5, 0xc44a, 0xf3d0, 0xf3d3, 0xf3d7,
- 0xc44b, 0xf3d2, 0xf3ca, 0xf3c9, 0xf3d6, 0xf3cd, 0xf3cb, 0xf3d4,
- 0xf3cc, 0xc449, 0xc448, 0xf3c7, 0xf3c8, 0xf3d1, 0xf3ce, 0xf56c,
- 0xf56f, 0xc356, 0xf56d, 0xf573, 0xf571, 0xf56b, 0xf576, 0xf56a,
- 0xc4cf, 0xf572, 0xf56e, 0xc4ce, 0xf575, 0xf574, 0xf6ab, 0xf6aa,
- 0xf6b1, 0xf6ad, 0xf6b0, 0xc560, 0xf6ae, 0xf6af, 0xf6a9, 0xf6ac,
- 0xc55f, 0xc5bf, 0xf7b4, 0xf7af, 0xf7b3, 0xf7b6, 0xf7b2, 0xf7ae,
- 0xc5c1, 0xf7b1, 0xf7b5, 0xc5c0, 0xf7ac, 0xf570, 0xf7b0, 0xf7ad,
- 0xf7aa, 0xf7ab, 0xc5be, 0xf85a, 0xf85c, 0xf85f, 0xf85b, 0xf860,
- 0xf859, 0xf857, 0xc5eb, 0xf85d, 0xc5ed, 0xc5ec, 0xf858, 0xf85e,
- 0xf8da, 0xc64d, 0xf8db, 0xf8d9, 0xf8d6, 0xf8d8, 0xf8d7, 0xf95a,
- 0xf95c, 0xf95b, 0xf979, 0xf978, 0xf977, 0xf97a, 0xc673, 0xc674,
- 0xf9ca, 0xf9ce, 0xb3be, 0xdcaf, 0xe0ed, 0xb9a7, 0xe0eb, 0xe0ec,
- 0xe4e2, 0xe4e3, 0xbbf1, 0xbbef, 0xe4e4, 0xbbf0, 0xe8e8, 0xe8eb,
- 0xe8e5, 0xe8ec, 0xe8e4, 0xe8e6, 0xe8e7, 0xe8ea, 0xbea1, 0xe8ef,
- 0xe8ee, 0xbe7d, 0xe8e9, 0xe8ed, 0xbe7e, 0xecac, 0xc06f, 0xeca7,
- 0xc06b, 0xeca4, 0xecaa, 0xecad, 0xc070, 0xeca9, 0xeca6, 0xecae,
- 0xeca5, 0xecab, 0xc06c, 0xeca3, 0xc06d, 0xc06e, 0xeca8, 0xefa9,
- 0xef7a, 0xef7b, 0xef7e, 0xef7c, 0xef76, 0xef79, 0xefa5, 0xef7d,
- 0xc245, 0xefa7, 0xefa4, 0xc246, 0xefa6, 0xef77, 0xefa2, 0xefa3,
- 0xefa1, 0xf1d2, 0xf1d4, 0xf1d7, 0xf1d1, 0xc359, 0xf1d9, 0xf1d0,
- 0xf1da, 0xf1d6, 0xf1d8, 0xf1dc, 0xf1d5, 0xf1dd, 0xf1d3, 0xf1cf,
- 0xc35a, 0xf1db, 0xc35b, 0xc44d, 0xef78, 0xf3f1, 0xf3e8, 0xc44f,
- 0xf3e4, 0xc450, 0xf3ed, 0xf3e7, 0xf3dd, 0xc44e, 0xf3ea, 0xf3e5,
- 0xf3e6, 0xf3d8, 0xf3df, 0xf3ee, 0xf3eb, 0xf3e3, 0xf3ef, 0xf3de,
- 0xf3d9, 0xf3ec, 0xf3db, 0xf3e9, 0xf3e0, 0xf3f0, 0xf3dc, 0xc44c,
- 0xf3da, 0xf3e1, 0xf3e2, 0xf57d, 0xf57b, 0xf5a2, 0xf5ae, 0xf5a5,
- 0xf57c, 0xf578, 0xf5a7, 0xf57e, 0xf5a3, 0xf57a, 0xf5aa, 0xf577,
- 0xf5a1, 0xf5a6, 0xf5a8, 0xf5ab, 0xf579, 0xf5af, 0xf5b0, 0xf5a9,
- 0xf5ad, 0xf5a4, 0xf6c1, 0xf6c4, 0xc561, 0xf6c3, 0xf6c8, 0xf6c6,
- 0xc562, 0xf6bd, 0xf6b3, 0xf6b2, 0xc564, 0xf6bf, 0xf6c0, 0xf6bc,
- 0xf6b4, 0xf6b9, 0xf5ac, 0xf6b5, 0xc563, 0xf6bb, 0xf6ba, 0xf6b6,
- 0xf6c2, 0xf6b7, 0xf7bb, 0xf6c5, 0xf6c7, 0xf6be, 0xf6b8, 0xf7bc,
- 0xf7be, 0xf7b8, 0xc5c2, 0xf7c5, 0xf7c3, 0xc5c3, 0xf7c2, 0xf7c1,
- 0xf7ba, 0xf7b7, 0xf7bd, 0xf7c6, 0xf7b9, 0xf7bf, 0xf869, 0xf86e,
- 0xf864, 0xf867, 0xc5ee, 0xf86b, 0xf872, 0xf7c0, 0xf865, 0xf86f,
- 0xf873, 0xf86a, 0xf863, 0xf86d, 0xf86c, 0xf871, 0xf870, 0xf7c4,
- 0xf868, 0xf862, 0xf866, 0xc64e, 0xc64f, 0xf861, 0xf8e6, 0xf8dd,
- 0xf8e5, 0xf8e2, 0xf8e3, 0xf8dc, 0xf8df, 0xf8e7, 0xf8e1, 0xf8e0,
- 0xf8de, 0xf8e4, 0xf95d, 0xf95e, 0xf960, 0xf95f, 0xf962, 0xf961,
- 0xf97c, 0xf97b, 0xf9b7, 0xf9b8, 0xf9c5, 0xc678, 0xc67c, 0xf9cf,
- 0xc67d, 0xb3bf, 0xc4d0, 0xf6c9, 0xc650, 0xc651, 0xb3c0, 0xe0ee,
- 0xb9a8, 0xe8f0, 0xecb0, 0xecb1, 0xecaf, 0xefab, 0xefaa, 0xc247,
- 0xf1df, 0xefac, 0xf1de, 0xf3f3, 0xc451, 0xc453, 0xf3f2, 0xc452,
- 0xf5b1, 0xf5b3, 0xf5b2, 0xf6ca, 0xc565, 0xc5ef, 0xf8e8, 0xf963,
- 0xf9d2, 0xb3c1, 0xe4e5, 0xbea2, 0xecb3, 0xecb2, 0xefad, 0xc454,
- 0xc4d1, 0xf7c7, 0xf9cb, 0xb3c2, 0xbbf2, 0xbea3, 0xf3f4, 0xf874,
- 0xb6c0, 0xefae, 0xc664, 0xb6c1, 0xbea4, 0xc248, 0xf875, 0xb6c2,
- 0xe8f1, 0xc072, 0xecb4, 0xecb5, 0xc071, 0xefaf, 0xc24c, 0xc24a,
- 0xc24b, 0xc249, 0xf1e0, 0xc35c, 0xf5b5, 0xf5b4, 0xf5b7, 0xf5b6,
- 0xc4d2, 0xf6cb, 0xf6cd, 0xf6cc, 0xc566, 0xf7c8, 0xf876, 0xf877,
- 0xc5f0, 0xf964, 0xf97d, 0xc675, 0xdcb0, 0xecb6, 0xefb0, 0xf3f5,
- 0xe0ef, 0xefb1, 0xf1e2, 0xf1e1, 0xf878, 0xc652, 0xf965, 0xf97e,
- 0xb9a9, 0xe8f2, 0xe8f3, 0xecb7, 0xb9aa, 0xc35d, 0xf1e3, 0xf6cf,
- 0xc567, 0xf6d0, 0xf6ce, 0xf879, 0xf8e9, 0xb9ab, 0xefb4, 0xefb3,
- 0xefb2, 0xf1e4, 0xf1e8, 0xf1e7, 0xf1e6, 0xf1e5, 0xc35e, 0xf3f6,
- 0xf5b9, 0xc4d3, 0xf5b8, 0xf6d1, 0xf7cb, 0xf7ca, 0xc5c4, 0xf7c9,
- 0xf87c, 0xf87b, 0xf87a, 0xbbf3, 0xecb8, 0xc24d, 0xf3f7, 0xf3f8,
- 0xf7cc, 0xf87d, 0xf8ea, 0xf966, 0xf9b9, 0xf9d4, 0xbbf4, 0xc24e,
- 0xf1e9, 0xf3f9, 0xf6d2, 0xf87e, 0xbea6, 0xefb5, 0xf1ea, 0xf3fa,
- 0xf3fb, 0xf3fc, 0xf5be, 0xf5ba, 0xc568, 0xf5bd, 0xf5bc, 0xc4d4,
- 0xf5bb, 0xc4d6, 0xc4d5, 0xf6d4, 0xf6d3, 0xc569, 0xc56a, 0xc5c6,
- 0xf7cd, 0xc5c5, 0xf8a3, 0xf8a4, 0xf8a2, 0xf8a1, 0xc654, 0xf8eb,
- 0xf8ec, 0xf8ed, 0xc653, 0xf967, 0xf96a, 0xf969, 0xf968, 0xf9d3,
- 0xc073, 0xc365, 0xf5bf, 0xf6d5, 0xc5c7, 0xf7ce, 0xf9d5, 0xc074,
- 0xefb6, 0xf7cf, 0xf9a1, 0xc94a, 0xddfc, 0xa14a, 0xa157, 0xa159,
- 0xa15b, 0xa15f, 0xa160, 0xa163, 0xa164, 0xa167, 0xa168, 0xa16b,
- 0xa16c, 0xa16f, 0xa170, 0xa173, 0xa174, 0xa177, 0xa178, 0xa17b,
- 0xa17c, 0xa1c6, 0xa1c7, 0xa1ca, 0xa1cb, 0xa1c8, 0xa1c9, 0xa15c,
- 0xa14d, 0xa14f, 0xa151, 0xa152, 0xa153, 0xa154, 0xa17d, 0xa17e,
- 0xa1a1, 0xa1a2, 0xa1a3, 0xa1a4, 0xa1cc, 0xa1cd, 0xa1ce, 0xa1de,
- 0xa1df, 0xa1e0, 0xa1e1, 0xa1e2, 0xa24c, 0xa24d, 0xa24e, 0xa149,
- 0xa1ad, 0xa243, 0xa248, 0xa1ae, 0xa15d, 0xa15e, 0xa1af, 0xa1cf,
- 0xa141, 0xa1d0, 0xa144, 0xa241, 0xa2af, 0xa2b0, 0xa2b1, 0xa2b2,
- 0xa2b3, 0xa2b4, 0xa2b5, 0xa2b6, 0xa2b7, 0xa2b8, 0xa147, 0xa146,
- 0xa1d5, 0xa1d7, 0xa1d6, 0xa148, 0xa249, 0xa2cf, 0xa2d0, 0xa2d1,
- 0xa2d2, 0xa2d3, 0xa2d4, 0xa2d5, 0xa2d6, 0xa2d7, 0xa2d8, 0xa2d9,
- 0xa2da, 0xa2db, 0xa2dc, 0xa2dd, 0xa2de, 0xa2df, 0xa2e0, 0xa2e1,
- 0xa2e2, 0xa2e3, 0xa2e4, 0xa2e5, 0xa2e6, 0xa2e7, 0xa2e8, 0xa242,
- 0xa1c4, 0xa2e9, 0xa2ea, 0xa2eb, 0xa2ec, 0xa2ed, 0xa2ee, 0xa2ef,
- 0xa2f0, 0xa2f1, 0xa2f2, 0xa2f3, 0xa2f4, 0xa2f5, 0xa2f6, 0xa2f7,
- 0xa2f8, 0xa2f9, 0xa2fa, 0xa2fb, 0xa2fc, 0xa2fd, 0xa2fe, 0xa340,
- 0xa341, 0xa342, 0xa343, 0xa161, 0xa155, 0xa162, 0xa14e,
-};
-
-static const Summary16 big5_uni2indx_page00[16] = {
- /* 0x0000 */
- { 0, 0x0000 }, { 0, 0x0000 }, { 0, 0x0000 }, { 0, 0x0000 },
- { 0, 0x0000 }, { 0, 0x0000 }, { 0, 0x0000 }, { 0, 0x0000 },
- { 0, 0x0000 }, { 0, 0x0000 }, { 0, 0x00ac }, { 4, 0x0083 },
- { 7, 0x0000 }, { 7, 0x0080 }, { 8, 0x0000 }, { 8, 0x0080 },
-};
-static const Summary16 big5_uni2indx_page02[38] = {
- /* 0x0200 */
- { 9, 0x0000 }, { 9, 0x0000 }, { 9, 0x0000 }, { 9, 0x0000 },
- { 9, 0x0000 }, { 9, 0x0000 }, { 9, 0x0000 }, { 9, 0x0000 },
- { 9, 0x0000 }, { 9, 0x0000 }, { 9, 0x0000 }, { 9, 0x0000 },
- { 9, 0x0e80 }, { 13, 0x0200 }, { 14, 0x0000 }, { 14, 0x0000 },
- /* 0x0300 */
- { 14, 0x0000 }, { 14, 0x0000 }, { 14, 0x0000 }, { 14, 0x0000 },
- { 14, 0x0000 }, { 14, 0x0000 }, { 14, 0x0000 }, { 14, 0x0000 },
- { 14, 0x0000 }, { 14, 0xfffe }, { 29, 0x03fb }, { 38, 0xfffe },
- { 53, 0x03fb }, { 62, 0x0000 }, { 62, 0x0000 }, { 62, 0x0000 },
- /* 0x0400 */
- { 62, 0x0002 }, { 63, 0x1ff0 }, { 72, 0xfff8 }, { 85, 0xffff },
- { 101, 0xffff }, { 117, 0x0002 },
-};
-static const Summary16 big5_uni2indx_page20[44] = {
- /* 0x2000 */
- { 118, 0x0000 }, { 118, 0x3318 }, { 124, 0x0064 }, { 127, 0x4824 },
- { 131, 0x0000 }, { 131, 0x0000 }, { 131, 0x0000 }, { 131, 0x0000 },
- { 131, 0x0000 }, { 131, 0x0000 }, { 131, 0x0000 }, { 131, 0x0000 },
- { 131, 0x0000 }, { 131, 0x0000 }, { 131, 0x0000 }, { 131, 0x0000 },
- /* 0x2100 */
- { 131, 0x0228 }, { 134, 0x0000 }, { 134, 0x0000 }, { 134, 0x0000 },
- { 134, 0x0000 }, { 134, 0x0000 }, { 134, 0x03ff }, { 144, 0x0000 },
- { 144, 0x0000 }, { 144, 0x03cf }, { 152, 0x0000 }, { 152, 0x0000 },
- { 152, 0x0000 }, { 152, 0x0000 }, { 152, 0x0000 }, { 152, 0x0000 },
- /* 0x2200 */
- { 152, 0x0000 }, { 152, 0xc400 }, { 155, 0x4e29 }, { 162, 0x1030 },
- { 165, 0x0000 }, { 165, 0x0004 }, { 166, 0x00c3 }, { 170, 0x0000 },
- { 170, 0x0000 }, { 170, 0x0000 }, { 170, 0x0020 }, { 171, 0x8000 },
-};
-static const Summary16 big5_uni2indx_page24[37] = {
- /* 0x2400 */
- { 172, 0x0000 }, { 172, 0x0000 }, { 172, 0x0000 }, { 172, 0x0000 },
- { 172, 0x0000 }, { 172, 0x0000 }, { 172, 0x03ff }, { 182, 0x3ff0 },
- { 192, 0x0000 }, { 192, 0x0000 }, { 192, 0x0000 }, { 192, 0x0000 },
- { 192, 0x0000 }, { 192, 0x0000 }, { 192, 0x0000 }, { 192, 0x0000 },
- /* 0x2500 */
- { 192, 0x1005 }, { 195, 0x1111 }, { 199, 0x1010 }, { 201, 0x1010 },
- { 203, 0x0000 }, { 203, 0x4001 }, { 205, 0xe402 }, { 210, 0x000f },
- { 214, 0xfffe }, { 229, 0x0030 }, { 231, 0x0003 }, { 233, 0x300c },
- { 237, 0xc8c0 }, { 242, 0x0000 }, { 242, 0x003c }, { 246, 0x0000 },
- /* 0x2600 */
- { 246, 0x0260 }, { 249, 0x0000 }, { 249, 0x0000 }, { 249, 0x0000 },
- { 249, 0x0007 },
-};
-static const Summary16 big5_uni2indx_page30[62] = {
- /* 0x3000 */
- { 252, 0xff2f }, { 265, 0x6037 }, { 272, 0x03fe }, { 281, 0x0000 },
- { 281, 0xfffe }, { 296, 0xffff }, { 312, 0xffff }, { 328, 0xffff },
- { 344, 0xffff }, { 360, 0x600f }, { 366, 0xfffe }, { 381, 0xffff },
- { 397, 0xffff }, { 413, 0xffff }, { 429, 0xffff }, { 445, 0x407f },
- /* 0x3100 */
- { 453, 0xffe0 }, { 464, 0xffff }, { 480, 0x03ff }, { 490, 0x0000 },
- { 490, 0x0000 }, { 490, 0x0000 }, { 490, 0x0000 }, { 490, 0x0000 },
- { 490, 0x0000 }, { 490, 0x0000 }, { 490, 0x0000 }, { 490, 0x0000 },
- { 490, 0x0000 }, { 490, 0x0000 }, { 490, 0x0000 }, { 490, 0x0000 },
- /* 0x3200 */
- { 490, 0x0000 }, { 490, 0x0000 }, { 490, 0x0000 }, { 490, 0x0000 },
- { 490, 0x0000 }, { 490, 0x0000 }, { 490, 0x0000 }, { 490, 0x0000 },
- { 490, 0x0000 }, { 490, 0x0000 }, { 490, 0x0008 }, { 491, 0x0000 },
- { 491, 0x0000 }, { 491, 0x0000 }, { 491, 0x0000 }, { 491, 0x0000 },
- /* 0x3300 */
- { 491, 0x0000 }, { 491, 0x0000 }, { 491, 0x0000 }, { 491, 0x0000 },
- { 491, 0x0000 }, { 491, 0x0000 }, { 491, 0x0000 }, { 491, 0x0000 },
- { 491, 0xc000 }, { 493, 0x7000 }, { 496, 0x0002 }, { 497, 0x0000 },
- { 497, 0x4010 }, { 499, 0x0026 },
-};
-static const Summary16 big5_uni2indx_page4e[1307] = {
- /* 0x4e00 */
- { 502, 0xff8b }, { 514, 0xc373 }, { 523, 0x6840 }, { 527, 0x1b0f },
- { 535, 0xe9ac }, { 544, 0xf34c }, { 553, 0x0200 }, { 554, 0xc008 },
- { 557, 0x795c }, { 566, 0xca3e }, { 575, 0x7976 }, { 585, 0x0648 },
- { 589, 0x2fdf }, { 601, 0xf7f0 }, { 612, 0x033a }, { 618, 0xa8ff },
- /* 0x4f00 */
- { 629, 0xef37 }, { 641, 0x233f }, { 650, 0xb004 }, { 654, 0xfd59 },
- { 665, 0xf3ca }, { 675, 0xffff }, { 691, 0xde9f }, { 703, 0xfff9 },
- { 717, 0xabff }, { 730, 0x7df7 }, { 743, 0xc000 }, { 745, 0x8eec },
- { 754, 0xeebf }, { 767, 0xffdb }, { 781, 0xd003 }, { 786, 0x45fa },
- /* 0x5000 */
- { 795, 0xfae1 }, { 805, 0xdffe }, { 819, 0xbfef }, { 833, 0x10ab },
- { 839, 0xffeb }, { 853, 0xfcaa }, { 863, 0xef3f }, { 876, 0x24fd },
- { 885, 0x78ad }, { 894, 0x7f76 }, { 906, 0xf00c }, { 912, 0xedff },
- { 926, 0xcff6 }, { 938, 0x2cfa }, { 947, 0xf7f9 }, { 960, 0xeb6b },
- /* 0x5100 */
- { 971, 0x1ffd }, { 983, 0x95bf }, { 994, 0x6677 }, { 1004, 0xbfbf },
- { 1018, 0x3bfb }, { 1030, 0xfeb4 }, { 1041, 0x7bae }, { 1052, 0x11e2 },
- { 1058, 0xa681 }, { 1064, 0x41be }, { 1072, 0x1435 }, { 1078, 0x72c3 },
- { 1086, 0x7d70 }, { 1095, 0x7191 }, { 1102, 0x0003 }, { 1104, 0x276b },
- /* 0x5200 */
- { 1113, 0x57cb }, { 1123, 0x70cf }, { 1132, 0x4732 }, { 1139, 0x0def },
- { 1149, 0x7eda }, { 1160, 0xfc74 }, { 1170, 0xfe06 }, { 1179, 0xbdb4 },
- { 1189, 0x3f9f }, { 1201, 0x8bca }, { 1209, 0x7e49 }, { 1218, 0x5800 },
- { 1221, 0x228f }, { 1228, 0xebec }, { 1239, 0x8a5c }, { 1246, 0xddbb },
- /* 0x5300 */
- { 1258, 0xef60 }, { 1267, 0xb6e7 }, { 1278, 0xa40f }, { 1285, 0xf293 },
- { 1294, 0x37bb }, { 1305, 0x549e }, { 1313, 0xd04b }, { 1320, 0x9baf },
- { 1331, 0xc414 }, { 1336, 0xf7d4 }, { 1347, 0x30b0 }, { 1352, 0x0a14 },
- { 1356, 0x2f08 }, { 1362, 0x88d0 }, { 1367, 0xff7e }, { 1381, 0x192f },
- /* 0x5400 */
- { 1389, 0xffda }, { 1402, 0xfb07 }, { 1412, 0x7ff1 }, { 1424, 0x7beb },
- { 1436, 0xc5ef }, { 1447, 0x0010 }, { 1448, 0x99ff }, { 1460, 0xfdff },
- { 1475, 0x79d7 }, { 1486, 0x0567 }, { 1493, 0xffe7 }, { 1507, 0xfdcb },
- { 1519, 0xc3ff }, { 1531, 0x4040 }, { 1533, 0x6ff7 }, { 1546, 0xbd8e },
- /* 0x5500 */
- { 1556, 0xdffa }, { 1569, 0x0497 }, { 1575, 0xf4c0 }, { 1582, 0x5bff },
- { 1595, 0xed7b }, { 1607, 0xd0e7 }, { 1616, 0x047e }, { 1623, 0xf8e0 },
- { 1631, 0xff9f }, { 1645, 0xb73e }, { 1656, 0x7dfe }, { 1669, 0x882e },
- { 1675, 0xfffd }, { 1690, 0xbe7f }, { 1703, 0x83fe }, { 1713, 0xf6c4 },
- /* 0x5600 */
- { 1722, 0xf357 }, { 1733, 0xb8fd }, { 1744, 0xd680 }, { 1750, 0xef7d },
- { 1763, 0x5767 }, { 1773, 0x4788 }, { 1779, 0xff7d }, { 1793, 0xc3df },
- { 1804, 0xf0ff }, { 1816, 0x37a9 }, { 1825, 0x7de0 }, { 1834, 0x70fc },
- { 1843, 0x3f6f }, { 1855, 0xec9a }, { 1864, 0x4cb3 }, { 1872, 0x8681 },
- /* 0x5700 */
- { 1877, 0x3f9e }, { 1888, 0xdd5c }, { 1898, 0xf70d }, { 1908, 0x4819 },
- { 1913, 0xfea3 }, { 1924, 0x0007 }, { 1927, 0xaf56 }, { 1937, 0x38ff },
- { 1948, 0x980d }, { 1954, 0xefb8 }, { 1965, 0x403d }, { 1971, 0xb760 },
- { 1979, 0xd8ce }, { 1988, 0x9035 }, { 1994, 0x72bf }, { 2005, 0x3fff },
- /* 0x5800 */
- { 2019, 0x7ff7 }, { 2033, 0x7a11 }, { 2040, 0xf7bb }, { 2053, 0xabff },
- { 2066, 0xff00 }, { 2074, 0x6fbe }, { 2086, 0xa93c }, { 2094, 0xfe72 },
- { 2105, 0xcfef }, { 2118, 0xf11b }, { 2127, 0xdb6b }, { 2138, 0xf40a },
- { 2145, 0xc3e6 }, { 2154, 0xef7e }, { 2167, 0x9b9c }, { 2176, 0xf610 },
- /* 0x5900 */
- { 2183, 0xf048 }, { 2189, 0x16f4 }, { 2197, 0xfeb5 }, { 2209, 0x5182 },
- { 2214, 0xc7b1 }, { 2223, 0x15bb }, { 2232, 0x6e87 }, { 2241, 0xfbdf },
- { 2255, 0xe43f }, { 2265, 0x63cd }, { 2274, 0xc1ff }, { 2285, 0x7e7e },
- { 2297, 0xfdeb }, { 2310, 0x7d5f }, { 2322, 0x777b }, { 2334, 0xfcfe },
- /* 0x5a00 */
- { 2347, 0x960b }, { 2354, 0xdbea }, { 2365, 0x6229 }, { 2371, 0x53e8 },
- { 2379, 0x37df }, { 2391, 0xfdef }, { 2405, 0x36f5 }, { 2415, 0xbd81 },
- { 2423, 0xdc18 }, { 2430, 0xfcbd }, { 2442, 0xd2e4 }, { 2450, 0xffff },
- { 2466, 0x3fd7 }, { 2478, 0xffe0 }, { 2489, 0x7f6f }, { 2502, 0xabf8 },
- /* 0x5b00 */
- { 2512, 0x9bae }, { 2522, 0x6ed9 }, { 2532, 0xf5fb }, { 2545, 0xf115 },
- { 2553, 0x79a9 }, { 2562, 0xbdfb }, { 2575, 0x5a3c }, { 2583, 0xadaf },
- { 2594, 0xdbba }, { 2605, 0x1fac }, { 2614, 0x71fc }, { 2624, 0x8379 },
- { 2632, 0x7cf7 }, { 2644, 0xc35f }, { 2654, 0xdfff }, { 2669, 0x0567 },
- /* 0x5c00 */
- { 2676, 0xff9a }, { 2688, 0x8467 }, { 2695, 0x1534 }, { 2701, 0xdf8b },
- { 2712, 0xf9f3 }, { 2724, 0x3373 }, { 2733, 0xf7bd }, { 2746, 0x5e1a },
- { 2754, 0xbf40 }, { 2762, 0xa03f }, { 2770, 0xffff }, { 2786, 0x01eb },
- { 2793, 0xdfc0 }, { 2802, 0xcfdd }, { 2814, 0x7500 }, { 2819, 0xabd3 },
- /* 0x5d00 */
- { 2829, 0xf8c3 }, { 2838, 0xeed6 }, { 2849, 0x43fd }, { 2859, 0xb7ff },
- { 2873, 0x5eaf }, { 2884, 0x4227 }, { 2890, 0x9bac }, { 2899, 0xf686 },
- { 2908, 0x27d7 }, { 2918, 0xf6bc }, { 2929, 0xf787 }, { 2940, 0x35b7 },
- { 2950, 0xaacd }, { 2959, 0xe176 }, { 2968, 0x49e7 }, { 2977, 0xe29f },
- /* 0x5e00 */
- { 2987, 0x545c }, { 2994, 0xaff2 }, { 3005, 0x2b3f }, { 3015, 0x61d8 },
- { 3022, 0xfc3b }, { 3033, 0xbbb8 }, { 3043, 0xffcf }, { 3057, 0x7b7d },
- { 3069, 0xbf95 }, { 3080, 0x1ce0 }, { 3086, 0x7dfd }, { 3099, 0x43ff },
- { 3110, 0x5ff6 }, { 3122, 0xfffe }, { 3137, 0xd3ef }, { 3149, 0xc4ce },
- /* 0x5f00 */
- { 3157, 0x8db6 }, { 3166, 0xadbc }, { 3176, 0x63dc }, { 3185, 0x11eb },
- { 3193, 0xdf59 }, { 3204, 0x23d0 }, { 3210, 0xbeb4 }, { 3220, 0xf3db },
- { 3232, 0x1fe7 }, { 3243, 0xdbc7 }, { 3254, 0xff63 }, { 3266, 0xfae4 },
- { 3276, 0xb22b }, { 3284, 0x63f7 }, { 3295, 0xed3b }, { 3306, 0xadba },
- /* 0x6000 */
- { 3316, 0xfe01 }, { 3324, 0x7eff }, { 3338, 0xfff7 }, { 3353, 0x02bc },
- { 3359, 0x32ff }, { 3370, 0xef39 }, { 3381, 0xfffc }, { 3395, 0x8005 },
- { 3398, 0x77fb }, { 3411, 0xbcf5 }, { 3422, 0x010d }, { 3426, 0xfff7 },
- { 3441, 0xfffb }, { 3456, 0xbf3a }, { 3467, 0x0057 }, { 3472, 0xdfff },
- /* 0x6100 */
- { 3487, 0xef7b }, { 3500, 0xbd7d }, { 3512, 0xdb88 }, { 3520, 0xc8d4 },
- { 3527, 0xfff3 }, { 3541, 0xed7c }, { 3552, 0x5dee }, { 3563, 0x56ff },
- { 3575, 0x7e0d }, { 3584, 0xac5f }, { 3594, 0xff96 }, { 3606, 0xd57f },
- { 3618, 0x3fee }, { 3630, 0xc140 }, { 3634, 0x6ff9 }, { 3646, 0xffe7 },
- /* 0x6200 */
- { 3660, 0x779b }, { 3671, 0x8e77 }, { 3681, 0x6ebf }, { 3693, 0xe45d },
- { 3702, 0x6fcf }, { 3714, 0x5f1f }, { 3725, 0xe07f }, { 3735, 0xfedf },
- { 3749, 0xd7db }, { 3761, 0x01fe }, { 3769, 0xff00 }, { 3777, 0xfb7b },
- { 3790, 0xffd4 }, { 3802, 0x1fdf }, { 3814, 0xf800 }, { 3819, 0xffff },
- /* 0x6300 */
- { 3835, 0xfb8f }, { 3847, 0x007b }, { 3853, 0xbf00 }, { 3860, 0x7f5c },
- { 3871, 0xffff }, { 3887, 0x07f3 }, { 3896, 0xeba0 }, { 3904, 0x3de7 },
- { 3915, 0xf7bf }, { 3929, 0xfbd7 }, { 3942, 0xffbf }, { 3957, 0x6003 },
- { 3961, 0xfffd }, { 3976, 0xbfed }, { 3989, 0xefbb }, { 4002, 0x027f },
- /* 0x6400 */
- { 4010, 0xfe40 }, { 4018, 0xddfd }, { 4031, 0xfdff }, { 4046, 0xe2f9 },
- { 4056, 0x680b }, { 4062, 0xfb1f }, { 4074, 0xfbe3 }, { 4086, 0xaffd },
- { 4099, 0x9fa4 }, { 4108, 0xf7ed }, { 4121, 0x7a7d }, { 4132, 0xf80f },
- { 4141, 0xeebe }, { 4153, 0x0fd5 }, { 4162, 0xbb5d }, { 4173, 0xfd9f },
- /* 0x6500 */
- { 4186, 0xf2db }, { 4197, 0x3bf9 }, { 4208, 0xfe7f }, { 4222, 0xebcc },
- { 4232, 0x876a }, { 4240, 0x73fa }, { 4251, 0x95fc }, { 4261, 0x9ffc },
- { 4273, 0x109f }, { 4280, 0xfaf7 }, { 4293, 0xddb7 }, { 4305, 0xbbcd },
- { 4316, 0xf87e }, { 4327, 0xeccd }, { 4337, 0xf366 }, { 4347, 0x3c3f },
- /* 0x6600 */
- { 4357, 0xfffd }, { 4372, 0xb03f }, { 4381, 0xe9f7 }, { 4393, 0x067e },
- { 4401, 0x96ae }, { 4410, 0xfe06 }, { 4419, 0xd576 }, { 4429, 0x5fd7 },
- { 4441, 0x3fd1 }, { 4451, 0xa3f3 }, { 4461, 0xcf07 }, { 4470, 0x6fb7 },
- { 4482, 0x9fd1 }, { 4492, 0x7f44 }, { 4501, 0x7b59 }, { 4511, 0xd3dd },
- /* 0x6700 */
- { 4522, 0xaf3b }, { 4533, 0xa9bd }, { 4543, 0x7dcf }, { 4555, 0xff3a },
- { 4567, 0xfbe0 }, { 4577, 0xf6eb }, { 4589, 0xb401 }, { 4594, 0xffff },
- { 4610, 0x7afa }, { 4621, 0xb7bf }, { 4634, 0xc000 }, { 4636, 0x0ffd },
- { 4647, 0xff7f }, { 4662, 0xff1f }, { 4675, 0xfefc }, { 4688, 0x95ff },
- /* 0x6800 */
- { 4700, 0x0000 }, { 4700, 0xb5dc }, { 4710, 0xef63 }, { 4721, 0x3f3e },
- { 4732, 0xfb7f }, { 4746, 0x001b }, { 4750, 0xe800 }, { 4754, 0xfbf6 },
- { 4767, 0x9eef }, { 4779, 0xb8df }, { 4790, 0xff9f }, { 4804, 0x003f },
- { 4810, 0x7bd0 }, { 4819, 0xf5ff }, { 4833, 0xdfdb }, { 4846, 0x3fff },
- /* 0x6900 */
- { 4860, 0xfdf0 }, { 4871, 0x00bf }, { 4878, 0x8420 }, { 4881, 0xbbbd },
- { 4893, 0xdf37 }, { 4905, 0xffde }, { 4919, 0xff6d }, { 4932, 0x0ff3 },
- { 4942, 0x604c }, { 4947, 0x5efb }, { 4959, 0xfffb }, { 4974, 0xfafb },
- { 4987, 0xfe5e }, { 4999, 0x0219 }, { 5003, 0x79f4 }, { 5013, 0xf9de },
- /* 0x6a00 */
- { 5025, 0xa7f7 }, { 5037, 0xebfa }, { 5049, 0x01eb }, { 5056, 0xff34 },
- { 5067, 0xebd3 }, { 5078, 0xef73 }, { 5090, 0xafd7 }, { 5102, 0xc040 },
- { 5105, 0x72bb }, { 5115, 0xdcff }, { 5128, 0xf17f }, { 5140, 0x2fd8 },
- { 5149, 0xb8ec }, { 5158, 0xfe0b }, { 5168, 0xdda3 }, { 5178, 0x1f0b },
- /* 0x6b00 */
- { 5186, 0x8f1d }, { 5195, 0x47cf }, { 5205, 0xb12b }, { 5213, 0xffde },
- { 5227, 0x7fee }, { 5240, 0xda73 }, { 5250, 0x24ff }, { 5260, 0xcbc4 },
- { 5268, 0xf75d }, { 5280, 0xcbf2 }, { 5290, 0xecfd }, { 5302, 0xb4ed },
- { 5312, 0xbff9 }, { 5325, 0x4ddd }, { 5335, 0x99dd }, { 5345, 0xfb8d },
- /* 0x6c00 */
- { 5356, 0xbb7f }, { 5369, 0xaf7b }, { 5381, 0xddfb }, { 5394, 0xc959 },
- { 5402, 0xfc4f }, { 5413, 0xfab5 }, { 5424, 0xafe3 }, { 5435, 0x6d5f },
- { 5446, 0xffff }, { 5462, 0x3f7d }, { 5474, 0x7800 }, { 5478, 0xffdb },
- { 5492, 0xb6ff }, { 5505, 0x7eff }, { 5519, 0xfbaf }, { 5532, 0x022f },
- /* 0x6d00 */
- { 5538, 0xff9b }, { 5551, 0xefc7 }, { 5563, 0xffa5 }, { 5575, 0xffff },
- { 5591, 0x0007 }, { 5594, 0xc700 }, { 5599, 0xf7ff }, { 5614, 0xfff1 },
- { 5627, 0x7ffd }, { 5641, 0x01bf }, { 5649, 0xdc00 }, { 5654, 0xfdbc },
- { 5666, 0xbff5 }, { 5679, 0xffff }, { 5695, 0xff7f }, { 5710, 0x3eff },
- /* 0x6e00 */
- { 5723, 0x0029 }, { 5726, 0xbe00 }, { 5732, 0xf9ff }, { 5746, 0xff7f },
- { 5761, 0x6efb }, { 5773, 0xfd7e }, { 5786, 0xcbff }, { 5799, 0x039e },
- { 5806, 0xe300 }, { 5811, 0xfbdd }, { 5824, 0xccff }, { 5836, 0xf6df },
- { 5849, 0xffff }, { 5865, 0x117f }, { 5874, 0xf800 }, { 5879, 0xfbf6 },
- /* 0x6f00 */
- { 5892, 0xe7ef }, { 5905, 0xd73c }, { 5915, 0xfeef }, { 5929, 0xdfef },
- { 5943, 0xc00b }, { 5948, 0xedbf }, { 5961, 0xfedf }, { 5975, 0xfdcd },
- { 5987, 0x7bf5 }, { 5999, 0x40fd }, { 6007, 0xffff }, { 6023, 0xb75f },
- { 6035, 0xffdf }, { 6050, 0xf930 }, { 6058, 0xfbdf }, { 6072, 0xdc97 },
- /* 0x7000 */
- { 6082, 0xfef3 }, { 6095, 0xbff2 }, { 6107, 0x8fdf }, { 6119, 0xdfbf },
- { 6133, 0x177f }, { 6144, 0xede6 }, { 6155, 0x0f7f }, { 6166, 0x3553 },
- { 6174, 0x447c }, { 6181, 0x877e }, { 6191, 0xfa12 }, { 6199, 0x45bb },
- { 6208, 0xede0 }, { 6217, 0x779e }, { 6228, 0x8017 }, { 6233, 0xbfd9 },
- /* 0x7100 */
- { 6245, 0x7e55 }, { 6255, 0xde89 }, { 6264, 0xc16f }, { 6273, 0x0447 },
- { 6278, 0x7ade }, { 6289, 0xf75d }, { 6301, 0x57ff }, { 6314, 0x2905 },
- { 6319, 0x86f7 }, { 6329, 0xfe95 }, { 6340, 0x97b3 }, { 6350, 0xf32f },
- { 6361, 0xcfff }, { 6375, 0x9f75 }, { 6386, 0x71f7 }, { 6397, 0xfb17 },
- /* 0x7200 */
- { 6408, 0x34ee }, { 6417, 0xee19 }, { 6426, 0x37cc }, { 6435, 0xef61 },
- { 6445, 0x9fd6 }, { 6456, 0xef4c }, { 6466, 0xd68f }, { 6476, 0xfbdd },
- { 6489, 0x7b73 }, { 6500, 0x6def }, { 6512, 0xd7fe }, { 6525, 0xa431 },
- { 6531, 0x5e7f }, { 6543, 0x97d7 }, { 6554, 0x0f5b }, { 6563, 0xffd8 },
- /* 0x7300 */
- { 6575, 0x9d83 }, { 6583, 0x7bce }, { 6594, 0x22ec }, { 6601, 0xdcff },
- { 6614, 0x763d }, { 6624, 0xef87 }, { 6635, 0xdfe7 }, { 6648, 0xfded },
- { 6661, 0x4fff }, { 6674, 0xa0fc }, { 6682, 0x3b77 }, { 6693, 0xdbfc },
- { 6705, 0x3ded }, { 6716, 0x7fdc }, { 6728, 0x6fa9 }, { 6738, 0xf570 },
- /* 0x7400 */
- { 6747, 0x3ffb }, { 6760, 0x2c40 }, { 6764, 0xff7f }, { 6779, 0x847f },
- { 6788, 0xec57 }, { 6798, 0xdeb7 }, { 6810, 0xe69c }, { 6819, 0xf22f },
- { 6829, 0x0feb }, { 6839, 0xd5b5 }, { 6849, 0xafeb }, { 6861, 0xede7 },
- { 6873, 0x8c2f }, { 6881, 0xfff0 }, { 6893, 0x537f }, { 6904, 0xe8f0 },
- /* 0x7500 */
- { 6912, 0xb99d }, { 6922, 0xb5ff }, { 6935, 0xff66 }, { 6947, 0xe78f },
- { 6958, 0xd981 }, { 6965, 0xbe10 }, { 6972, 0x9c7c }, { 6981, 0xe3c1 },
- { 6989, 0x9cd1 }, { 6997, 0x2733 }, { 7005, 0x0cbc }, { 7012, 0xff6d },
- { 7025, 0xfcb7 }, { 7037, 0xefb7 }, { 7050, 0xa0df }, { 7059, 0xffff },
- /* 0x7600 */
- { 7075, 0xbf0b }, { 7085, 0xfe7b }, { 7098, 0xa3ff }, { 7110, 0x353f },
- { 7120, 0x13cc }, { 7127, 0x97cd }, { 7137, 0x7637 }, { 7147, 0xfb27 },
- { 7158, 0xcfd6 }, { 7169, 0x7e6c }, { 7179, 0xec50 }, { 7186, 0xed31 },
- { 7195, 0x677c }, { 7205, 0xfc1c }, { 7214, 0xf6fa }, { 7226, 0x5fbf },
- /* 0x7700 */
- { 7239, 0x0fba }, { 7248, 0xae2f }, { 7258, 0xa3ad }, { 7267, 0x7ffe },
- { 7281, 0xfcf0 }, { 7291, 0xde74 }, { 7301, 0xffef }, { 7316, 0xf200 },
- { 7321, 0xfbbf }, { 7335, 0xfea2 }, { 7345, 0x3daf }, { 7356, 0xbcff },
- { 7369, 0xf694 }, { 7378, 0x5fb9 }, { 7389, 0xf3ad }, { 7400, 0x3f8f },
- /* 0x7800 */
- { 7411, 0xf26c }, { 7420, 0xa01f }, { 7427, 0xffef }, { 7442, 0x01bf },
- { 7450, 0x7728 }, { 7458, 0x7005 }, { 7463, 0xff35 }, { 7475, 0xda03 },
- { 7482, 0xd2f9 }, { 7492, 0xc7fa }, { 7503, 0x3fbf }, { 7516, 0x5c1d },
- { 7524, 0xff3a }, { 7536, 0xec33 }, { 7545, 0xb7af }, { 7557, 0xfe9c },
- /* 0x7900 */
- { 7568, 0x5236 }, { 7575, 0x7a9f }, { 7586, 0xbffa }, { 7599, 0xe722 },
- { 7607, 0x9ff7 }, { 7620, 0xfcff }, { 7634, 0x2fbb }, { 7645, 0xb61d },
- { 7654, 0xed06 }, { 7662, 0x1dfd }, { 7673, 0x7dd7 }, { 7685, 0xefdf },
- { 7699, 0xeb23 }, { 7708, 0xf166 }, { 7717, 0x7ed9 }, { 7728, 0x0dc0 },
- /* 0x7a00 */
- { 7733, 0x3d3d }, { 7743, 0xdfbf }, { 7757, 0xc945 }, { 7764, 0xba83 },
- { 7772, 0x7dd1 }, { 7782, 0x9dd0 }, { 7790, 0x7b87 }, { 7800, 0xcf73 },
- { 7811, 0x9ff3 }, { 7823, 0xc3f5 }, { 7833, 0xdf0d }, { 7843, 0xc5fe },
- { 7854, 0x0cb3 }, { 7861, 0x8302 }, { 7865, 0xe879 }, { 7874, 0xaec0 },
- /* 0x7b00 */
- { 7881, 0xc773 }, { 7891, 0x6f0f }, { 7901, 0xfd7d }, { 7914, 0x093f },
- { 7922, 0xfff1 }, { 7935, 0x0157 }, { 7941, 0x62fb }, { 7951, 0x01ff },
- { 7960, 0xfdb4 }, { 7971, 0x3bf3 }, { 7982, 0xb013 }, { 7988, 0x43b2 },
- { 7995, 0x5ed3 }, { 8005, 0xff30 }, { 8015, 0x0fff }, { 8027, 0xeb9f },
- /* 0x7c00 */
- { 8039, 0xfeef }, { 8053, 0xf203 }, { 8060, 0x3fef }, { 8073, 0xfb89 },
- { 8083, 0x37a9 }, { 8092, 0x9e99 }, { 8101, 0xdef9 }, { 8113, 0xa72c },
- { 8121, 0x3733 }, { 8130, 0xc1f6 }, { 8139, 0x812e }, { 8145, 0xfe3e },
- { 8157, 0x5d20 }, { 8163, 0xf2f7 }, { 8175, 0xd585 }, { 8183, 0x69d7 },
- /* 0x7d00 */
- { 8193, 0xffff }, { 8209, 0xffff }, { 8225, 0xdb07 }, { 8234, 0xff6f },
- { 8248, 0xc4ff }, { 8259, 0xd97f }, { 8271, 0xefce }, { 8283, 0xbe0f },
- { 8293, 0xf17b }, { 8304, 0xf05e }, { 8313, 0xf6cf }, { 8325, 0xffb7 },
- { 8339, 0x5ef7 }, { 8351, 0xef84 }, { 8360, 0xd7cb }, { 8371, 0x0edf },
- /* 0x7e00 */
- { 8381, 0xff08 }, { 8390, 0xfcff }, { 8404, 0xee3f }, { 8416, 0xffff },
- { 8432, 0x13ff }, { 8443, 0xd7ff }, { 8457, 0xaf0f }, { 8467, 0x7ffd },
- { 8481, 0xbdc7 }, { 8492, 0x1ffa }, { 8503, 0x0000 }, { 8503, 0x0000 },
- { 8503, 0x0000 }, { 8503, 0x0000 }, { 8503, 0x0000 }, { 8503, 0x0000 },
- /* 0x7f00 */
- { 8503, 0x0000 }, { 8503, 0x0000 }, { 8503, 0x0000 }, { 8503, 0xe740 },
- { 8510, 0xbd38 }, { 8519, 0xf933 }, { 8529, 0x7feb }, { 8542, 0xfeed },
- { 8555, 0x7fe8 }, { 8566, 0x7c76 }, { 8576, 0xb3f7 }, { 8588, 0xffef },
- { 8603, 0xfeaf }, { 8616, 0xd8b7 }, { 8626, 0xff6f }, { 8640, 0xfbbf },
- /* 0x8000 */
- { 8654, 0xf8fb }, { 8666, 0xdbf7 }, { 8679, 0x1752 }, { 8686, 0xe2f9 },
- { 8696, 0x85c8 }, { 8702, 0x7547 }, { 8711, 0x9090 }, { 8715, 0xe3ef },
- { 8727, 0x9ef4 }, { 8737, 0x3f6d }, { 8748, 0xee2e }, { 8758, 0x0536 },
- { 8764, 0xf7bc }, { 8776, 0x7ff3 }, { 8789, 0xa07b }, { 8797, 0x7f3f },
- /* 0x8100 */
- { 8810, 0x0567 }, { 8817, 0xeb60 }, { 8825, 0xbabe }, { 8836, 0x6601 },
- { 8841, 0xfcd8 }, { 8851, 0x583f }, { 8860, 0xcaf7 }, { 8871, 0x87df },
- { 8882, 0xbfcd }, { 8894, 0xffa0 }, { 8904, 0x5bcd }, { 8914, 0xfebf },
- { 8928, 0xb6fd }, { 8940, 0xefa7 }, { 8952, 0x77ef }, { 8965, 0xdf9c },
- /* 0x8200 */
- { 8976, 0x3fb7 }, { 8988, 0xf877 }, { 8999, 0x9d27 }, { 9008, 0xb7fc },
- { 9020, 0xcab5 }, { 9029, 0xdfef }, { 9043, 0xfb5a }, { 9054, 0xf1b6 },
- { 9064, 0xec39 }, { 9073, 0xef1f }, { 9085, 0xfbbf }, { 9099, 0x7ffb },
- { 9113, 0x000d }, { 9116, 0xdafe }, { 9128, 0xbdfb }, { 9141, 0x4e7f },
- /* 0x8300 */
- { 9152, 0x33ff }, { 9164, 0x5ac0 }, { 9170, 0xbff5 }, { 9183, 0x9ffe },
- { 9196, 0xffbf }, { 9211, 0x005f }, { 9217, 0x0000 }, { 9217, 0xfdf8 },
- { 9229, 0xffca }, { 9241, 0x6ffd }, { 9254, 0xcffd }, { 9267, 0xa001 },
- { 9270, 0xdfff }, { 9285, 0xfbf2 }, { 9297, 0xdfbf }, { 9311, 0xff7f },
- /* 0x8400 */
- { 9326, 0xfeda }, { 9338, 0x080f }, { 9343, 0xba08 }, { 9349, 0xbfff },
- { 9364, 0x7afd }, { 9376, 0xeed7 }, { 9388, 0xfbeb }, { 9401, 0x67f9 },
- { 9412, 0xe044 }, { 9417, 0xff93 }, { 9429, 0xdf97 }, { 9441, 0x9f57 },
- { 9452, 0xfef7 }, { 9466, 0x08df }, { 9474, 0xdf80 }, { 9482, 0xfedf },
- /* 0x8500 */
- { 9496, 0xffc5 }, { 9508, 0xf7fe }, { 9522, 0xfffb }, { 9537, 0x6803 },
- { 9542, 0x67fb }, { 9554, 0x6bfa }, { 9565, 0x7fff }, { 9580, 0x5fe2 },
- { 9590, 0xffff }, { 9606, 0xff73 }, { 9619, 0x87df }, { 9630, 0xe7fb },
- { 9643, 0xebfd }, { 9656, 0xf7a7 }, { 9668, 0xbf7e }, { 9681, 0xefc7 },
- /* 0x8600 */
- { 9693, 0x1ef3 }, { 9703, 0xdf82 }, { 9712, 0x76ff }, { 9725, 0xdf7e },
- { 9738, 0x79c9 }, { 9747, 0xda7d }, { 9758, 0xefbe }, { 9771, 0x1e9b },
- { 9780, 0x7ce0 }, { 9788, 0x77fb }, { 9801, 0x87be }, { 9811, 0xfffb },
- { 9826, 0x1bff }, { 9838, 0xffdb }, { 9852, 0x3f5c }, { 9862, 0x4fe0 },
- /* 0x8700 */
- { 9870, 0x7fff }, { 9885, 0x5f0e }, { 9894, 0x77ff }, { 9908, 0xddbf },
- { 9921, 0xf04f }, { 9930, 0xffff }, { 9946, 0xffff }, { 9962, 0x0ff8 },
- { 9971, 0xa3be }, { 9981, 0xfddf }, { 9995, 0xfc1c }, { 10004, 0xfffd },
- { 10019, 0x1f7d }, { 10030, 0xfb9e }, { 10042, 0xbdff }, { 10056, 0xdedc },
- /* 0x8800 */
- { 10067, 0x3f6f }, { 10079, 0xbafb }, { 10091, 0xdf7f }, { 10105, 0xfbef },
- { 10119, 0x7d1b }, { 10129, 0x2eec }, { 10138, 0xaf8e }, { 10148, 0xf2f7 },
- { 10160, 0x7b0f }, { 10170, 0xcfee }, { 10182, 0x1d96 }, { 10190, 0x77c6 },
- { 10200, 0x7e07 }, { 10209, 0xfff5 }, { 10223, 0xd982 }, { 10230, 0x7fdf },
- /* 0x8900 */
- { 10244, 0x5ee6 }, { 10254, 0xc7ff }, { 10267, 0xfeee }, { 10280, 0x79ef },
- { 10292, 0x9a56 }, { 10300, 0xffcf }, { 10314, 0xfe5f }, { 10327, 0xde5e },
- { 10338, 0x896e }, { 10346, 0xf9e8 }, { 10356, 0xf45e }, { 10366, 0xe6c4 },
- { 10374, 0x0001 }, { 10375, 0xbe7c }, { 10386, 0x3b7f }, { 10398, 0xdddf },
- /* 0x8a00 */
- { 10411, 0xd59d }, { 10421, 0xe9ef }, { 10433, 0x34ac }, { 10440, 0xde53 },
- { 10450, 0xf573 }, { 10461, 0x4bf7 }, { 10472, 0x7b4f }, { 10483, 0x9eff },
- { 10496, 0xb8fe }, { 10507, 0x476e }, { 10516, 0x0dfb }, { 10526, 0xff45 },
- { 10537, 0xabfd }, { 10549, 0xfbfe }, { 10563, 0xe9d7 }, { 10574, 0xddff },
- /* 0x8b00 */
- { 10588, 0xedf7 }, { 10601, 0x7fff }, { 10616, 0xddfd }, { 10629, 0x7eeb },
- { 10641, 0xcfe7 }, { 10653, 0xb7ff }, { 10667, 0xbde9 }, { 10678, 0xef91 },
- { 10688, 0x5d75 }, { 10698, 0xd77c }, { 10709, 0x0000 }, { 10709, 0x0000 },
- { 10709, 0x0000 }, { 10709, 0x0000 }, { 10709, 0x0000 }, { 10709, 0x0000 },
- /* 0x8c00 */
- { 10709, 0x0000 }, { 10709, 0x0000 }, { 10709, 0x0000 }, { 10709, 0xfa80 },
- { 10716, 0xffee }, { 10730, 0xb4f1 }, { 10739, 0xbf76 }, { 10751, 0x2fef },
- { 10763, 0xb677 }, { 10774, 0x77bf }, { 10787, 0x9fbf }, { 10800, 0xfffd },
- { 10815, 0x95bf }, { 10826, 0xf6ae }, { 10837, 0x75ff }, { 10850, 0x7f3b },
- /* 0x8d00 */
- { 10862, 0xa7f5 }, { 10873, 0x0af9 }, { 10881, 0x0000 }, { 10881, 0x0000 },
- { 10881, 0x0000 }, { 10881, 0x0000 }, { 10881, 0xfbd0 }, { 10891, 0x2bdd },
- { 10901, 0xf633 }, { 10911, 0x9a7f }, { 10922, 0xfdab }, { 10934, 0xd6fc },
- { 10945, 0xf9e6 }, { 10956, 0xbfeb }, { 10969, 0xdfdf }, { 10983, 0xf41f },
- /* 0x8e00 */
- { 10993, 0xa6fd }, { 11004, 0xffff }, { 11020, 0x4aff }, { 11031, 0xf37b },
- { 11043, 0x7fb7 }, { 11056, 0xfef9 }, { 11069, 0xb6ff }, { 11082, 0x1d5c },
- { 11090, 0x7ff6 }, { 11103, 0xe5ff }, { 11116, 0x1f7b }, { 11127, 0x2404 },
- { 11130, 0xbe05 }, { 11138, 0xf99e }, { 11149, 0xdbe3 }, { 11160, 0xdff2 },
- /* 0x8f00 */
- { 11172, 0x6fef }, { 11185, 0xfdff }, { 11200, 0xd679 }, { 11210, 0xcbfc },
- { 11221, 0xebfd }, { 11234, 0xefff }, { 11249, 0x001f }, { 11254, 0x0000 },
- { 11254, 0x0000 }, { 11254, 0x9800 }, { 11257, 0xe148 }, { 11263, 0x8017 },
- { 11268, 0x6a74 }, { 11276, 0x00fe }, { 11283, 0x6d7f }, { 11295, 0xfdf1 },
- /* 0x9000 */
- { 11307, 0xb87f }, { 11318, 0xfef3 }, { 11331, 0xe01f }, { 11339, 0xf176 },
- { 11349, 0xee96 }, { 11359, 0x7b3f }, { 11371, 0xeb8d }, { 11381, 0xfffd },
- { 11396, 0xadff }, { 11409, 0xcbb3 }, { 11419, 0x84ef }, { 11428, 0xe17f },
- { 11439, 0x4daa }, { 11447, 0xbff0 }, { 11458, 0xbf3f }, { 11471, 0xfe3f },
- /* 0x9100 */
- { 11484, 0xebff }, { 11498, 0xffd7 }, { 11512, 0xffdf }, { 11527, 0xcf7f },
- { 11540, 0xfffb }, { 11555, 0x85ed }, { 11564, 0xd73f }, { 11576, 0x07bc },
- { 11584, 0xaeff }, { 11597, 0xfe0f }, { 11608, 0xfdaf }, { 11621, 0x76bf },
- { 11633, 0xfaef }, { 11646, 0x37bb }, { 11657, 0x7fdc }, { 11669, 0xa3ba },
- /* 0x9200 */
- { 11678, 0xb6ff }, { 11691, 0x56f7 }, { 11702, 0x60f8 }, { 11709, 0xe7df },
- { 11722, 0xff61 }, { 11733, 0x4cdf }, { 11743, 0xb0fb }, { 11753, 0xff45 },
- { 11764, 0x7ded }, { 11776, 0x3ffa }, { 11788, 0x1fff }, { 11801, 0x18fc },
- { 11809, 0xffff }, { 11825, 0xe3af }, { 11836, 0xc7d3 }, { 11846, 0xdf83 },
- /* 0x9300 */
- { 11856, 0xfb57 }, { 11868, 0xef7d }, { 11881, 0xefff }, { 11896, 0x1378 },
- { 11903, 0xfec0 }, { 11912, 0x5ff7 }, { 11925, 0x34bb }, { 11934, 0x5ee3 },
- { 11944, 0xf70d }, { 11954, 0xeff6 }, { 11967, 0xd7fe }, { 11980, 0x00bf },
- { 11987, 0xf59d }, { 11998, 0xf7f7 }, { 12012, 0x51de }, { 12021, 0xffe0 },
- /* 0x9400 */
- { 12032, 0xfec9 }, { 12043, 0x037f }, { 12052, 0x5f01 }, { 12059, 0xbfef },
- { 12073, 0x9ff1 }, { 12084, 0x60a7 }, { 12091, 0xef1d }, { 12102, 0xf1ff },
- { 12115, 0x000f }, { 12119, 0x0000 }, { 12119, 0x0000 }, { 12119, 0x0000 },
- { 12119, 0x0000 }, { 12119, 0x0000 }, { 12119, 0x0000 }, { 12119, 0x0000 },
- /* 0x9500 */
- { 12119, 0x0000 }, { 12119, 0x0000 }, { 12119, 0x0000 }, { 12119, 0x0000 },
- { 12119, 0x0000 }, { 12119, 0x0000 }, { 12119, 0x0000 }, { 12119, 0x3c80 },
- { 12124, 0xfb4d }, { 12135, 0xd91f }, { 12145, 0x7b3a }, { 12155, 0xfee3 },
- { 12167, 0x3fe9 }, { 12178, 0xdc7f }, { 12190, 0x003f }, { 12196, 0x0000 },
- /* 0x9600 */
- { 12196, 0x0000 }, { 12196, 0x5000 }, { 12198, 0xf51f }, { 12209, 0xbe07 },
- { 12218, 0xfc1d }, { 12228, 0xf91b }, { 12238, 0xbc1e }, { 12247, 0x71ff },
- { 12259, 0x6ff9 }, { 12271, 0x5bbe }, { 12282, 0x5796 }, { 12291, 0x9b1b },
- { 12300, 0x7fff }, { 12315, 0xfffc }, { 12329, 0x872e }, { 12337, 0xafe7 },
- /* 0x9700 */
- { 12349, 0xebf5 }, { 12361, 0xf34f }, { 12372, 0xdffd }, { 12386, 0xe725 },
- { 12395, 0x0bdc }, { 12403, 0x5d44 }, { 12410, 0x5747 }, { 12419, 0xfddd },
- { 12432, 0xed3f }, { 12444, 0x7790 }, { 12452, 0x7d7f }, { 12465, 0x8ac8 },
- { 12471, 0xfafa }, { 12483, 0xf3f9 }, { 12495, 0x202a }, { 12499, 0xef4b },
- /* 0x9800 */
- { 12510, 0xf5ff }, { 12524, 0x79cf }, { 12535, 0xabd3 }, { 12545, 0x0ba5 },
- { 12552, 0xf77a }, { 12564, 0xfb8f }, { 12576, 0x8ebd }, { 12586, 0x001f },
- { 12591, 0x0000 }, { 12591, 0x0000 }, { 12591, 0xf300 }, { 12597, 0xfd4e },
- { 12608, 0x1a57 }, { 12616, 0x8800 }, { 12618, 0xaeac }, { 12627, 0x7654 },
- /* 0x9900 */
- { 12635, 0x17ad }, { 12644, 0xcdff }, { 12657, 0xffb2 }, { 12669, 0xf42f },
- { 12679, 0x5baa }, { 12688, 0xdbff }, { 12702, 0x0002 }, { 12703, 0x0000 },
- { 12703, 0x0000 }, { 12703, 0x73c0 }, { 12710, 0xf9ea }, { 12721, 0x2e3f },
- { 12731, 0xfa8e }, { 12741, 0xbbff }, { 12755, 0x76bc }, { 12765, 0xffd3 },
- /* 0x9a00 */
- { 12778, 0xeefe }, { 12791, 0x7e72 }, { 12801, 0x7ebd }, { 12813, 0xe7f7 },
- { 12826, 0xf77f }, { 12840, 0xcefd }, { 12852, 0x0ff5 }, { 12862, 0x0000 },
- { 12862, 0x0000 }, { 12862, 0x0000 }, { 12862, 0xa900 }, { 12866, 0xdb9b },
- { 12877, 0xa4c7 }, { 12885, 0x917f }, { 12895, 0xf8ca }, { 12904, 0x7ece },
- /* 0x9b00 */
- { 12915, 0x7d7a }, { 12926, 0xc7e7 }, { 12937, 0xcbbd }, { 12948, 0xdcae },
- { 12958, 0xfd7e }, { 12971, 0x8f76 }, { 12981, 0x91d3 }, { 12989, 0x7cf3 },
- { 13000, 0x01e5 }, { 13006, 0x4c2f }, { 13014, 0xed77 }, { 13026, 0xa360 },
- { 13032, 0x07db }, { 13041, 0x5ef8 }, { 13051, 0x1df7 }, { 13062, 0x2181 },
- /* 0x9c00 */
- { 13066, 0x6be0 }, { 13074, 0x309c }, { 13080, 0x3b3a }, { 13089, 0xfade },
- { 13101, 0x7f53 }, { 13112, 0xc3f5 }, { 13122, 0x61cd }, { 13130, 0x07ba },
- { 13138, 0x0000 }, { 13138, 0x0000 }, { 13138, 0x0000 }, { 13138, 0x0000 },
- { 13138, 0x0000 }, { 13138, 0x0000 }, { 13138, 0x26e0 }, { 13144, 0xbefe },
- /* 0x9d00 */
- { 13157, 0x03f9 }, { 13165, 0xebb5 }, { 13176, 0xe36d }, { 13186, 0xe9cb },
- { 13196, 0x9c2f }, { 13205, 0xbfde }, { 13218, 0x9f83 }, { 13227, 0xabbf },
- { 13239, 0x1ff7 }, { 13251, 0xffd5 }, { 13264, 0xb7df }, { 13277, 0xdffe },
- { 13291, 0xfdae }, { 13303, 0xffef }, { 13318, 0xfb7e }, { 13331, 0xeffd },
- /* 0x9e00 */
- { 13345, 0xaaff }, { 13357, 0x6ebf }, { 13369, 0x0000 }, { 13369, 0x0000 },
- { 13369, 0x0000 }, { 13369, 0x0000 }, { 13369, 0x0000 }, { 13369, 0xb620 },
- { 13375, 0x7fcd }, { 13387, 0xbe9e }, { 13398, 0x62b3 }, { 13406, 0x58f1 },
- { 13414, 0xf10d }, { 13422, 0xfd7b }, { 13435, 0xe9f1 }, { 13445, 0xbefd },
- /* 0x9f00 */
- { 13458, 0xc6c3 }, { 13466, 0x5f6d }, { 13477, 0xff3d }, { 13490, 0x69ff },
- { 13502, 0xffcf }, { 13516, 0xfbf4 }, { 13528, 0xdcfb }, { 13540, 0x4ff7 },
- { 13552, 0x2000 }, { 13553, 0x1137 }, { 13560, 0x0015 },
-};
-static const Summary16 big5_uni2indx_pagefa[1] = {
- /* 0xfa00 */
- { 13563, 0x3000 },
-};
-static const Summary16 big5_uni2indx_pagefe[23] = {
- /* 0xfe00 */
- { 13565, 0x0000 }, { 13565, 0x0000 }, { 13565, 0x0000 }, { 13565, 0xfffb },
- { 13580, 0xfe1f }, { 13592, 0xfef5 }, { 13605, 0x0e7f }, { 13615, 0x0000 },
- { 13615, 0x0000 }, { 13615, 0x0000 }, { 13615, 0x0000 }, { 13615, 0x0000 },
- { 13615, 0x0000 }, { 13615, 0x0000 }, { 13615, 0x0000 }, { 13615, 0x0000 },
- /* 0xff00 */
- { 13615, 0xff7a }, { 13628, 0xffff }, { 13644, 0xffff }, { 13660, 0x97ff },
- { 13673, 0xfffe }, { 13688, 0x3fff }, { 13702, 0x0010 },
-};
-
-static int
-big5_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n)
-{
- if (n >= 2) {
- const Summary16 *summary = NULL;
- if (wc < 0x0100)
- summary = &big5_uni2indx_page00[(wc>>4)];
- else if (wc >= 0x0200 && wc < 0x0460)
- summary = &big5_uni2indx_page02[(wc>>4)-0x020];
- else if (wc >= 0x2000 && wc < 0x22c0)
- summary = &big5_uni2indx_page20[(wc>>4)-0x200];
- else if (wc >= 0x2400 && wc < 0x2650)
- summary = &big5_uni2indx_page24[(wc>>4)-0x240];
- else if (wc >= 0x3000 && wc < 0x33e0)
- summary = &big5_uni2indx_page30[(wc>>4)-0x300];
- else if (wc >= 0x4e00 && wc < 0x9fb0)
- summary = &big5_uni2indx_page4e[(wc>>4)-0x4e0];
- else if (wc >= 0xfa00 && wc < 0xfa10)
- summary = &big5_uni2indx_pagefa[(wc>>4)-0xfa0];
- else if (wc >= 0xfe00 && wc < 0xff70)
- summary = &big5_uni2indx_pagefe[(wc>>4)-0xfe0];
- if (summary) {
- unsigned short used = summary->used;
- unsigned int i = wc & 0x0f;
- if (used & ((unsigned short) 1 << i)) {
- unsigned short c;
- /* Keep in `used' only the bits 0..i-1. */
- used &= ((unsigned short) 1 << i) - 1;
- /* Add `summary->indx' and the number of bits set in `used'. */
- used = (used & 0x5555) + ((used & 0xaaaa) >> 1);
- used = (used & 0x3333) + ((used & 0xcccc) >> 2);
- used = (used & 0x0f0f) + ((used & 0xf0f0) >> 4);
- used = (used & 0x00ff) + (used >> 8);
- c = big5_2charset[summary->indx + used];
- r[0] = (c >> 8); r[1] = (c & 0xff);
- return 2;
- }
- }
- return RET_ILSEQ;
- }
- return RET_TOOSMALL;
-}
+
+/*
+ * BIG5
+ */
+
+static const unsigned short big5_2uni_pagea1[6121] = {
+ /* 0xa1 */
+ 0x3000, 0xff0c, 0x3001, 0x3002, 0xff0e, 0x2022, 0xff1b, 0xff1a,
+ 0xff1f, 0xff01, 0xfe30, 0x2026, 0x2025, 0xfe50, 0xff64, 0xfe52,
+ 0x00b7, 0xfe54, 0xfe55, 0xfe56, 0xfe57, 0xff5c, 0x2013, 0xfe31,
+ 0x2014, 0xfe33, 0xfffd, 0xfe34, 0xfe4f, 0xff08, 0xff09, 0xfe35,
+ 0xfe36, 0xff5b, 0xff5d, 0xfe37, 0xfe38, 0x3014, 0x3015, 0xfe39,
+ 0xfe3a, 0x3010, 0x3011, 0xfe3b, 0xfe3c, 0x300a, 0x300b, 0xfe3d,
+ 0xfe3e, 0x3008, 0x3009, 0xfe3f, 0xfe40, 0x300c, 0x300d, 0xfe41,
+ 0xfe42, 0x300e, 0x300f, 0xfe43, 0xfe44, 0xfe59, 0xfe5a, 0xfe5b,
+ 0xfe5c, 0xfe5d, 0xfe5e, 0x2018, 0x2019, 0x201c, 0x201d, 0x301d,
+ 0x301e, 0x2035, 0x2032, 0xff03, 0xff06, 0xff0a, 0x203b, 0x00a7,
+ 0x3003, 0x25cb, 0x25cf, 0x25b3, 0x25b2, 0x25ce, 0x2606, 0x2605,
+ 0x25c7, 0x25c6, 0x25a1, 0x25a0, 0x25bd, 0x25bc, 0x32a3, 0x2105,
+ 0x203e, 0xfffd, 0xff3f, 0xfffd, 0xfe49, 0xfe4a, 0xfe4d, 0xfe4e,
+ 0xfe4b, 0xfe4c, 0xfe5f, 0xfe60, 0xfe61, 0xff0b, 0xff0d, 0x00d7,
+ 0x00f7, 0x00b1, 0x221a, 0xff1c, 0xff1e, 0xff1d, 0x2266, 0x2267,
+ 0x2260, 0x221e, 0x2252, 0x2261, 0xfe62, 0xfe63, 0xfe64, 0xfe65,
+ 0xfe66, 0x223c, 0x2229, 0x222a, 0x22a5, 0x2220, 0x221f, 0x22bf,
+ 0x33d2, 0x33d1, 0x222b, 0x222e, 0x2235, 0x2234, 0x2640, 0x2642,
+ 0x2641, 0x2609, 0x2191, 0x2193, 0x2190, 0x2192, 0x2196, 0x2197,
+ 0x2199, 0x2198, 0x2225, 0x2223, 0xfffd,
+ /* 0xa2 */
+ 0xfffd, 0xff0f, 0xff3c, 0xff04, 0x00a5, 0x3012, 0x00a2, 0x00a3,
+ 0xff05, 0xff20, 0x2103, 0x2109, 0xfe69, 0xfe6a, 0xfe6b, 0x33d5,
+ 0x339c, 0x339d, 0x339e, 0x33ce, 0x33a1, 0x338e, 0x338f, 0x33c4,
+ 0x00b0, 0x5159, 0x515b, 0x515e, 0x515d, 0x5161, 0x5163, 0x55e7,
+ 0x74e9, 0x7cce, 0x2581, 0x2582, 0x2583, 0x2584, 0x2585, 0x2586,
+ 0x2587, 0x2588, 0x258f, 0x258e, 0x258d, 0x258c, 0x258b, 0x258a,
+ 0x2589, 0x253c, 0x2534, 0x252c, 0x2524, 0x251c, 0x2594, 0x2500,
+ 0x2502, 0x2595, 0x250c, 0x2510, 0x2514, 0x2518, 0x256d, 0x256e,
+ 0x2570, 0x256f, 0x2550, 0x255e, 0x256a, 0x2561, 0x25e2, 0x25e3,
+ 0x25e5, 0x25e4, 0x2571, 0x2572, 0x2573, 0xff10, 0xff11, 0xff12,
+ 0xff13, 0xff14, 0xff15, 0xff16, 0xff17, 0xff18, 0xff19, 0x2160,
+ 0x2161, 0x2162, 0x2163, 0x2164, 0x2165, 0x2166, 0x2167, 0x2168,
+ 0x2169, 0x3021, 0x3022, 0x3023, 0x3024, 0x3025, 0x3026, 0x3027,
+ 0x3028, 0x3029, 0xfffd, 0x5344, 0xfffd, 0xff21, 0xff22, 0xff23,
+ 0xff24, 0xff25, 0xff26, 0xff27, 0xff28, 0xff29, 0xff2a, 0xff2b,
+ 0xff2c, 0xff2d, 0xff2e, 0xff2f, 0xff30, 0xff31, 0xff32, 0xff33,
+ 0xff34, 0xff35, 0xff36, 0xff37, 0xff38, 0xff39, 0xff3a, 0xff41,
+ 0xff42, 0xff43, 0xff44, 0xff45, 0xff46, 0xff47, 0xff48, 0xff49,
+ 0xff4a, 0xff4b, 0xff4c, 0xff4d, 0xff4e, 0xff4f, 0xff50, 0xff51,
+ 0xff52, 0xff53, 0xff54, 0xff55, 0xff56,
+ /* 0xa3 */
+ 0xff57, 0xff58, 0xff59, 0xff5a, 0x0391, 0x0392, 0x0393, 0x0394,
+ 0x0395, 0x0396, 0x0397, 0x0398, 0x0399, 0x039a, 0x039b, 0x039c,
+ 0x039d, 0x039e, 0x039f, 0x03a0, 0x03a1, 0x03a3, 0x03a4, 0x03a5,
+ 0x03a6, 0x03a7, 0x03a8, 0x03a9, 0x03b1, 0x03b2, 0x03b3, 0x03b4,
+ 0x03b5, 0x03b6, 0x03b7, 0x03b8, 0x03b9, 0x03ba, 0x03bb, 0x03bc,
+ 0x03bd, 0x03be, 0x03bf, 0x03c0, 0x03c1, 0x03c3, 0x03c4, 0x03c5,
+ 0x03c6, 0x03c7, 0x03c8, 0x03c9, 0x3105, 0x3106, 0x3107, 0x3108,
+ 0x3109, 0x310a, 0x310b, 0x310c, 0x310d, 0x310e, 0x310f, 0x3110,
+ 0x3111, 0x3112, 0x3113, 0x3114, 0x3115, 0x3116, 0x3117, 0x3118,
+ 0x3119, 0x311a, 0x311b, 0x311c, 0x311d, 0x311e, 0x311f, 0x3120,
+ 0x3121, 0x3122, 0x3123, 0x3124, 0x3125, 0x3126, 0x3127, 0x3128,
+ 0x3129, 0x02d9, 0x02c9, 0x02ca, 0x02c7, 0x02cb, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ /* 0xa4 */
+ 0x4e00, 0x4e59, 0x4e01, 0x4e03, 0x4e43, 0x4e5d, 0x4e86, 0x4e8c,
+ 0x4eba, 0x513f, 0x5165, 0x516b, 0x51e0, 0x5200, 0x5201, 0x529b,
+ 0x5315, 0x5341, 0x535c, 0x53c8, 0x4e09, 0x4e0b, 0x4e08, 0x4e0a,
+ 0x4e2b, 0x4e38, 0x51e1, 0x4e45, 0x4e48, 0x4e5f, 0x4e5e, 0x4e8e,
+ 0x4ea1, 0x5140, 0x5203, 0x52fa, 0x5343, 0x53c9, 0x53e3, 0x571f,
+ 0x58eb, 0x5915, 0x5927, 0x5973, 0x5b50, 0x5b51, 0x5b53, 0x5bf8,
+ 0x5c0f, 0x5c22, 0x5c38, 0x5c71, 0x5ddd, 0x5de5, 0x5df1, 0x5df2,
+ 0x5df3, 0x5dfe, 0x5e72, 0x5efe, 0x5f0b, 0x5f13, 0x624d, 0x4e11,
+ 0x4e10, 0x4e0d, 0x4e2d, 0x4e30, 0x4e39, 0x4e4b, 0x5c39, 0x4e88,
+ 0x4e91, 0x4e95, 0x4e92, 0x4e94, 0x4ea2, 0x4ec1, 0x4ec0, 0x4ec3,
+ 0x4ec6, 0x4ec7, 0x4ecd, 0x4eca, 0x4ecb, 0x4ec4, 0x5143, 0x5141,
+ 0x5167, 0x516d, 0x516e, 0x516c, 0x5197, 0x51f6, 0x5206, 0x5207,
+ 0x5208, 0x52fb, 0x52fe, 0x52ff, 0x5316, 0x5339, 0x5348, 0x5347,
+ 0x5345, 0x535e, 0x5384, 0x53cb, 0x53ca, 0x53cd, 0x58ec, 0x5929,
+ 0x592b, 0x592a, 0x592d, 0x5b54, 0x5c11, 0x5c24, 0x5c3a, 0x5c6f,
+ 0x5df4, 0x5e7b, 0x5eff, 0x5f14, 0x5f15, 0x5fc3, 0x6208, 0x6236,
+ 0x624b, 0x624e, 0x652f, 0x6587, 0x6597, 0x65a4, 0x65b9, 0x65e5,
+ 0x66f0, 0x6708, 0x6728, 0x6b20, 0x6b62, 0x6b79, 0x6bcb, 0x6bd4,
+ 0x6bdb, 0x6c0f, 0x6c34, 0x706b, 0x722a, 0x7236, 0x723b, 0x7247,
+ 0x7259, 0x725b, 0x72ac, 0x738b, 0x4e19,
+ /* 0xa5 */
+ 0x4e16, 0x4e15, 0x4e14, 0x4e18, 0x4e3b, 0x4e4d, 0x4e4f, 0x4e4e,
+ 0x4ee5, 0x4ed8, 0x4ed4, 0x4ed5, 0x4ed6, 0x4ed7, 0x4ee3, 0x4ee4,
+ 0x4ed9, 0x4ede, 0x5145, 0x5144, 0x5189, 0x518a, 0x51ac, 0x51f9,
+ 0x51fa, 0x51f8, 0x520a, 0x52a0, 0x529f, 0x5305, 0x5306, 0x5317,
+ 0x531d, 0x4edf, 0x534a, 0x5349, 0x5361, 0x5360, 0x536f, 0x536e,
+ 0x53bb, 0x53ef, 0x53e4, 0x53f3, 0x53ec, 0x53ee, 0x53e9, 0x53e8,
+ 0x53fc, 0x53f8, 0x53f5, 0x53eb, 0x53e6, 0x53ea, 0x53f2, 0x53f1,
+ 0x53f0, 0x53e5, 0x53ed, 0x53fb, 0x56db, 0x56da, 0x5916, 0x592e,
+ 0x5931, 0x5974, 0x5976, 0x5b55, 0x5b83, 0x5c3c, 0x5de8, 0x5de7,
+ 0x5de6, 0x5e02, 0x5e03, 0x5e73, 0x5e7c, 0x5f01, 0x5f18, 0x5f17,
+ 0x5fc5, 0x620a, 0x6253, 0x6254, 0x6252, 0x6251, 0x65a5, 0x65e6,
+ 0x672e, 0x672c, 0x672a, 0x672b, 0x672d, 0x6b63, 0x6bcd, 0x6c11,
+ 0x6c10, 0x6c38, 0x6c41, 0x6c40, 0x6c3e, 0x72af, 0x7384, 0x7389,
+ 0x74dc, 0x74e6, 0x7518, 0x751f, 0x7528, 0x7529, 0x7530, 0x7531,
+ 0x7532, 0x7533, 0x758b, 0x767d, 0x76ae, 0x76bf, 0x76ee, 0x77db,
+ 0x77e2, 0x77f3, 0x793a, 0x79be, 0x7a74, 0x7acb, 0x4e1e, 0x4e1f,
+ 0x4e52, 0x4e53, 0x4e69, 0x4e99, 0x4ea4, 0x4ea6, 0x4ea5, 0x4eff,
+ 0x4f09, 0x4f19, 0x4f0a, 0x4f15, 0x4f0d, 0x4f10, 0x4f11, 0x4f0f,
+ 0x4ef2, 0x4ef6, 0x4efb, 0x4ef0, 0x4ef3, 0x4efd, 0x4f01, 0x4f0b,
+ 0x5149, 0x5147, 0x5146, 0x5148, 0x5168,
+ /* 0xa6 */
+ 0x5171, 0x518d, 0x51b0, 0x5217, 0x5211, 0x5212, 0x520e, 0x5216,
+ 0x52a3, 0x5308, 0x5321, 0x5320, 0x5370, 0x5371, 0x5409, 0x540f,
+ 0x540c, 0x540a, 0x5410, 0x5401, 0x540b, 0x5404, 0x5411, 0x540d,
+ 0x5408, 0x5403, 0x540e, 0x5406, 0x5412, 0x56e0, 0x56de, 0x56dd,
+ 0x5733, 0x5730, 0x5728, 0x572d, 0x572c, 0x572f, 0x5729, 0x5919,
+ 0x591a, 0x5937, 0x5938, 0x5984, 0x5978, 0x5983, 0x597d, 0x5979,
+ 0x5982, 0x5981, 0x5b57, 0x5b58, 0x5b87, 0x5b88, 0x5b85, 0x5b89,
+ 0x5bfa, 0x5c16, 0x5c79, 0x5dde, 0x5e06, 0x5e76, 0x5e74, 0x5f0f,
+ 0x5f1b, 0x5fd9, 0x5fd6, 0x620e, 0x620c, 0x620d, 0x6210, 0x6263,
+ 0x625b, 0x6258, 0x6536, 0x65e9, 0x65e8, 0x65ec, 0x65ed, 0x66f2,
+ 0x66f3, 0x6709, 0x673d, 0x6734, 0x6731, 0x6735, 0x6b21, 0x6b64,
+ 0x6b7b, 0x6c16, 0x6c5d, 0x6c57, 0x6c59, 0x6c5f, 0x6c60, 0x6c50,
+ 0x6c55, 0x6c61, 0x6c5b, 0x6c4d, 0x6c4e, 0x7070, 0x725f, 0x725d,
+ 0x767e, 0x7af9, 0x7c73, 0x7cf8, 0x7f36, 0x7f8a, 0x7fbd, 0x8001,
+ 0x8003, 0x800c, 0x8012, 0x8033, 0x807f, 0x8089, 0x808b, 0x808c,
+ 0x81e3, 0x81ea, 0x81f3, 0x81fc, 0x820c, 0x821b, 0x821f, 0x826e,
+ 0x8272, 0x827e, 0x866b, 0x8840, 0x884c, 0x8863, 0x897f, 0x9621,
+ 0x4e32, 0x4ea8, 0x4f4d, 0x4f4f, 0x4f47, 0x4f57, 0x4f5e, 0x4f34,
+ 0x4f5b, 0x4f55, 0x4f30, 0x4f50, 0x4f51, 0x4f3d, 0x4f3a, 0x4f38,
+ 0x4f43, 0x4f54, 0x4f3c, 0x4f46, 0x4f63,
+ /* 0xa7 */
+ 0x4f5c, 0x4f60, 0x4f2f, 0x4f4e, 0x4f36, 0x4f59, 0x4f5d, 0x4f48,
+ 0x4f5a, 0x514c, 0x514b, 0x514d, 0x5175, 0x51b6, 0x51b7, 0x5225,
+ 0x5224, 0x5229, 0x522a, 0x5228, 0x52ab, 0x52a9, 0x52aa, 0x52ac,
+ 0x5323, 0x5373, 0x5375, 0x541d, 0x542d, 0x541e, 0x543e, 0x5426,
+ 0x544e, 0x5427, 0x5446, 0x5443, 0x5433, 0x5448, 0x5442, 0x541b,
+ 0x5429, 0x544a, 0x5439, 0x543b, 0x5438, 0x542e, 0x5435, 0x5436,
+ 0x5420, 0x543c, 0x5440, 0x5431, 0x542b, 0x541f, 0x542c, 0x56ea,
+ 0x56f0, 0x56e4, 0x56eb, 0x574a, 0x5751, 0x5740, 0x574d, 0x5747,
+ 0x574e, 0x573e, 0x5750, 0x574f, 0x573b, 0x58ef, 0x593e, 0x599d,
+ 0x5992, 0x59a8, 0x599e, 0x59a3, 0x5999, 0x5996, 0x598d, 0x59a4,
+ 0x5993, 0x598a, 0x59a5, 0x5b5d, 0x5b5c, 0x5b5a, 0x5b5b, 0x5b8c,
+ 0x5b8b, 0x5b8f, 0x5c2c, 0x5c40, 0x5c41, 0x5c3f, 0x5c3e, 0x5c90,
+ 0x5c91, 0x5c94, 0x5c8c, 0x5deb, 0x5e0c, 0x5e8f, 0x5e87, 0x5e8a,
+ 0x5ef7, 0x5f04, 0x5f1f, 0x5f64, 0x5f62, 0x5f77, 0x5f79, 0x5fd8,
+ 0x5fcc, 0x5fd7, 0x5fcd, 0x5ff1, 0x5feb, 0x5ff8, 0x5fea, 0x6212,
+ 0x6211, 0x6284, 0x6297, 0x6296, 0x6280, 0x6276, 0x6289, 0x626d,
+ 0x628a, 0x627c, 0x627e, 0x6279, 0x6273, 0x6292, 0x626f, 0x6298,
+ 0x626e, 0x6295, 0x6293, 0x6291, 0x6286, 0x6539, 0x653b, 0x6538,
+ 0x65f1, 0x66f4, 0x675f, 0x674e, 0x674f, 0x6750, 0x6751, 0x675c,
+ 0x6756, 0x675e, 0x6749, 0x6746, 0x6760,
+ /* 0xa8 */
+ 0x6753, 0x6757, 0x6b65, 0x6bcf, 0x6c42, 0x6c5e, 0x6c99, 0x6c81,
+ 0x6c88, 0x6c89, 0x6c85, 0x6c9b, 0x6c6a, 0x6c7a, 0x6c90, 0x6c70,
+ 0x6c8c, 0x6c68, 0x6c96, 0x6c92, 0x6c7d, 0x6c83, 0x6c72, 0x6c7e,
+ 0x6c74, 0x6c86, 0x6c76, 0x6c8d, 0x6c94, 0x6c98, 0x6c82, 0x7076,
+ 0x707c, 0x707d, 0x7078, 0x7262, 0x7261, 0x7260, 0x72c4, 0x72c2,
+ 0x7396, 0x752c, 0x752b, 0x7537, 0x7538, 0x7682, 0x76ef, 0x77e3,
+ 0x79c1, 0x79c0, 0x79bf, 0x7a76, 0x7cfb, 0x7f55, 0x8096, 0x8093,
+ 0x809d, 0x8098, 0x809b, 0x809a, 0x80b2, 0x826f, 0x8292, 0x828b,
+ 0x828d, 0x898b, 0x89d2, 0x8a00, 0x8c37, 0x8c46, 0x8c55, 0x8c9d,
+ 0x8d64, 0x8d70, 0x8db3, 0x8eab, 0x8eca, 0x8f9b, 0x8fb0, 0x8fc2,
+ 0x8fc6, 0x8fc5, 0x8fc4, 0x5de1, 0x9091, 0x90a2, 0x90aa, 0x90a6,
+ 0x90a3, 0x9149, 0x91c6, 0x91cc, 0x9632, 0x962e, 0x9631, 0x962a,
+ 0x962c, 0x4e26, 0x4e56, 0x4e73, 0x4e8b, 0x4e9b, 0x4e9e, 0x4eab,
+ 0x4eac, 0x4f6f, 0x4f9d, 0x4f8d, 0x4f73, 0x4f7f, 0x4f6c, 0x4f9b,
+ 0x4f8b, 0x4f86, 0x4f83, 0x4f70, 0x4f75, 0x4f88, 0x4f69, 0x4f7b,
+ 0x4f96, 0x4f7e, 0x4f8f, 0x4f91, 0x4f7a, 0x5154, 0x5152, 0x5155,
+ 0x5169, 0x5177, 0x5176, 0x5178, 0x51bd, 0x51fd, 0x523b, 0x5238,
+ 0x5237, 0x523a, 0x5230, 0x522e, 0x5236, 0x5241, 0x52be, 0x52bb,
+ 0x5352, 0x5354, 0x5353, 0x5351, 0x5366, 0x5377, 0x5378, 0x5379,
+ 0x53d6, 0x53d4, 0x53d7, 0x5473, 0x5475,
+ /* 0xa9 */
+ 0x5496, 0x5478, 0x5495, 0x5480, 0x547b, 0x5477, 0x5484, 0x5492,
+ 0x5486, 0x547c, 0x5490, 0x5471, 0x5476, 0x548c, 0x549a, 0x5462,
+ 0x5468, 0x548b, 0x547d, 0x548e, 0x56fa, 0x5783, 0x5777, 0x576a,
+ 0x5769, 0x5761, 0x5766, 0x5764, 0x577c, 0x591c, 0x5949, 0x5947,
+ 0x5948, 0x5944, 0x5954, 0x59be, 0x59bb, 0x59d4, 0x59b9, 0x59ae,
+ 0x59d1, 0x59c6, 0x59d0, 0x59cd, 0x59cb, 0x59d3, 0x59ca, 0x59af,
+ 0x59b3, 0x59d2, 0x59c5, 0x5b5f, 0x5b64, 0x5b63, 0x5b97, 0x5b9a,
+ 0x5b98, 0x5b9c, 0x5b99, 0x5b9b, 0x5c1a, 0x5c48, 0x5c45, 0x5c46,
+ 0x5cb7, 0x5ca1, 0x5cb8, 0x5ca9, 0x5cab, 0x5cb1, 0x5cb3, 0x5e18,
+ 0x5e1a, 0x5e16, 0x5e15, 0x5e1b, 0x5e11, 0x5e78, 0x5e9a, 0x5e97,
+ 0x5e9c, 0x5e95, 0x5e96, 0x5ef6, 0x5f26, 0x5f27, 0x5f29, 0x5f80,
+ 0x5f81, 0x5f7f, 0x5f7c, 0x5fdd, 0x5fe0, 0x5ffd, 0x5ff5, 0x5fff,
+ 0x600f, 0x6014, 0x602f, 0x6035, 0x6016, 0x602a, 0x6015, 0x6021,
+ 0x6027, 0x6029, 0x602b, 0x601b, 0x6216, 0x6215, 0x623f, 0x623e,
+ 0x6240, 0x627f, 0x62c9, 0x62cc, 0x62c4, 0x62bf, 0x62c2, 0x62b9,
+ 0x62d2, 0x62db, 0x62ab, 0x62d3, 0x62d4, 0x62cb, 0x62c8, 0x62a8,
+ 0x62bd, 0x62bc, 0x62d0, 0x62d9, 0x62c7, 0x62cd, 0x62b5, 0x62da,
+ 0x62b1, 0x62d8, 0x62d6, 0x62d7, 0x62c6, 0x62ac, 0x62ce, 0x653e,
+ 0x65a7, 0x65bc, 0x65fa, 0x6614, 0x6613, 0x660c, 0x6606, 0x6602,
+ 0x660e, 0x6600, 0x660f, 0x6615, 0x660a,
+ /* 0xaa */
+ 0x6607, 0x670d, 0x670b, 0x676d, 0x678b, 0x6795, 0x6771, 0x679c,
+ 0x6773, 0x6777, 0x6787, 0x679d, 0x6797, 0x676f, 0x6770, 0x677f,
+ 0x6789, 0x677e, 0x6790, 0x6775, 0x679a, 0x6793, 0x677c, 0x676a,
+ 0x6772, 0x6b23, 0x6b66, 0x6b67, 0x6b7f, 0x6c13, 0x6c1b, 0x6ce3,
+ 0x6ce8, 0x6cf3, 0x6cb1, 0x6ccc, 0x6ce5, 0x6cb3, 0x6cbd, 0x6cbe,
+ 0x6cbc, 0x6ce2, 0x6cab, 0x6cd5, 0x6cd3, 0x6cb8, 0x6cc4, 0x6cb9,
+ 0x6cc1, 0x6cae, 0x6cd7, 0x6cc5, 0x6cf1, 0x6cbf, 0x6cbb, 0x6ce1,
+ 0x6cdb, 0x6cca, 0x6cac, 0x6cef, 0x6cdc, 0x6cd6, 0x6ce0, 0x7095,
+ 0x708e, 0x7092, 0x708a, 0x7099, 0x722c, 0x722d, 0x7238, 0x7248,
+ 0x7267, 0x7269, 0x72c0, 0x72ce, 0x72d9, 0x72d7, 0x72d0, 0x73a9,
+ 0x73a8, 0x739f, 0x73ab, 0x73a5, 0x753d, 0x759d, 0x7599, 0x759a,
+ 0x7684, 0x76c2, 0x76f2, 0x76f4, 0x77e5, 0x77fd, 0x793e, 0x7940,
+ 0x7941, 0x79c9, 0x79c8, 0x7a7a, 0x7a79, 0x7afa, 0x7cfe, 0x7f54,
+ 0x7f8c, 0x7f8b, 0x8005, 0x80ba, 0x80a5, 0x80a2, 0x80b1, 0x80a1,
+ 0x80ab, 0x80a9, 0x80b4, 0x80aa, 0x80af, 0x81e5, 0x81fe, 0x820d,
+ 0x82b3, 0x829d, 0x8299, 0x82ad, 0x82bd, 0x829f, 0x82b9, 0x82b1,
+ 0x82ac, 0x82a5, 0x82af, 0x82b8, 0x82a3, 0x82b0, 0x82be, 0x82b7,
+ 0x864e, 0x8671, 0x521d, 0x8868, 0x8ecb, 0x8fce, 0x8fd4, 0x8fd1,
+ 0x90b5, 0x90b8, 0x90b1, 0x90b6, 0x91c7, 0x91d1, 0x9577, 0x9580,
+ 0x961c, 0x9640, 0x963f, 0x963b, 0x9644,
+ /* 0xab */
+ 0x9642, 0x96b9, 0x96e8, 0x9752, 0x975e, 0x4e9f, 0x4ead, 0x4eae,
+ 0x4fe1, 0x4fb5, 0x4faf, 0x4fbf, 0x4fe0, 0x4fd1, 0x4fcf, 0x4fdd,
+ 0x4fc3, 0x4fb6, 0x4fd8, 0x4fdf, 0x4fca, 0x4fd7, 0x4fae, 0x4fd0,
+ 0x4fc4, 0x4fc2, 0x4fda, 0x4fce, 0x4fde, 0x4fb7, 0x5157, 0x5192,
+ 0x5191, 0x51a0, 0x524e, 0x5243, 0x524a, 0x524d, 0x524c, 0x524b,
+ 0x5247, 0x52c7, 0x52c9, 0x52c3, 0x52c1, 0x530d, 0x5357, 0x537b,
+ 0x539a, 0x53db, 0x54ac, 0x54c0, 0x54a8, 0x54ce, 0x54c9, 0x54b8,
+ 0x54a6, 0x54b3, 0x54c7, 0x54c2, 0x54bd, 0x54aa, 0x54c1, 0x54c4,
+ 0x54c8, 0x54af, 0x54ab, 0x54b1, 0x54bb, 0x54a9, 0x54a7, 0x54bf,
+ 0x56ff, 0x5782, 0x578b, 0x57a0, 0x57a3, 0x57a2, 0x57ce, 0x57ae,
+ 0x5793, 0x5955, 0x5951, 0x594f, 0x594e, 0x5950, 0x59dc, 0x59d8,
+ 0x59ff, 0x59e3, 0x59e8, 0x5a03, 0x59e5, 0x59ea, 0x59da, 0x59e6,
+ 0x5a01, 0x59fb, 0x5b69, 0x5ba3, 0x5ba6, 0x5ba4, 0x5ba2, 0x5ba5,
+ 0x5c01, 0x5c4e, 0x5c4f, 0x5c4d, 0x5c4b, 0x5cd9, 0x5cd2, 0x5df7,
+ 0x5e1d, 0x5e25, 0x5e1f, 0x5e7d, 0x5ea0, 0x5ea6, 0x5efa, 0x5f08,
+ 0x5f2d, 0x5f65, 0x5f88, 0x5f85, 0x5f8a, 0x5f8b, 0x5f87, 0x5f8c,
+ 0x5f89, 0x6012, 0x601d, 0x6020, 0x6025, 0x600e, 0x6028, 0x604d,
+ 0x6070, 0x6068, 0x6062, 0x6046, 0x6043, 0x606c, 0x606b, 0x606a,
+ 0x6064, 0x6241, 0x62dc, 0x6316, 0x6309, 0x62fc, 0x62ed, 0x6301,
+ 0x62ee, 0x62fd, 0x6307, 0x62f1, 0x62f7,
+ /* 0xac */
+ 0x62ef, 0x62ec, 0x62fe, 0x62f4, 0x6311, 0x6302, 0x653f, 0x6545,
+ 0x65ab, 0x65bd, 0x65e2, 0x6625, 0x662d, 0x6620, 0x6627, 0x662f,
+ 0x661f, 0x6628, 0x6631, 0x6624, 0x66f7, 0x67ff, 0x67d3, 0x67f1,
+ 0x67d4, 0x67d0, 0x67ec, 0x67b6, 0x67af, 0x67f5, 0x67e9, 0x67ef,
+ 0x67c4, 0x67d1, 0x67b4, 0x67da, 0x67e5, 0x67b8, 0x67cf, 0x67de,
+ 0x67f3, 0x67b0, 0x67d9, 0x67e2, 0x67dd, 0x67d2, 0x6b6a, 0x6b83,
+ 0x6b86, 0x6bb5, 0x6bd2, 0x6bd7, 0x6c1f, 0x6cc9, 0x6d0b, 0x6d32,
+ 0x6d2a, 0x6d41, 0x6d25, 0x6d0c, 0x6d31, 0x6d1e, 0x6d17, 0x6d3b,
+ 0x6d3d, 0x6d3e, 0x6d36, 0x6d1b, 0x6cf5, 0x6d39, 0x6d27, 0x6d38,
+ 0x6d29, 0x6d2e, 0x6d35, 0x6d0e, 0x6d2b, 0x70ab, 0x70ba, 0x70b3,
+ 0x70ac, 0x70af, 0x70ad, 0x70b8, 0x70ae, 0x70a4, 0x7230, 0x7272,
+ 0x726f, 0x7274, 0x72e9, 0x72e0, 0x72e1, 0x73b7, 0x73ca, 0x73bb,
+ 0x73b2, 0x73cd, 0x73c0, 0x73b3, 0x751a, 0x752d, 0x754f, 0x754c,
+ 0x754e, 0x754b, 0x75ab, 0x75a4, 0x75a5, 0x75a2, 0x75a3, 0x7678,
+ 0x7686, 0x7687, 0x7688, 0x76c8, 0x76c6, 0x76c3, 0x76c5, 0x7701,
+ 0x76f9, 0x76f8, 0x7709, 0x770b, 0x76fe, 0x76fc, 0x7707, 0x77dc,
+ 0x7802, 0x7814, 0x780c, 0x780d, 0x7946, 0x7949, 0x7948, 0x7947,
+ 0x79b9, 0x79ba, 0x79d1, 0x79d2, 0x79cb, 0x7a7f, 0x7a81, 0x7aff,
+ 0x7afd, 0x7c7d, 0x7d02, 0x7d05, 0x7d00, 0x7d09, 0x7d07, 0x7d04,
+ 0x7d06, 0x7f38, 0x7f8e, 0x7fbf, 0x8004,
+ /* 0xad */
+ 0x8010, 0x800d, 0x8011, 0x8036, 0x80d6, 0x80e5, 0x80da, 0x80c3,
+ 0x80c4, 0x80cc, 0x80e1, 0x80db, 0x80ce, 0x80de, 0x80e4, 0x80dd,
+ 0x81f4, 0x8222, 0x82e7, 0x8303, 0x8305, 0x82e3, 0x82db, 0x82e6,
+ 0x8304, 0x82e5, 0x8302, 0x8309, 0x82d2, 0x82d7, 0x82f1, 0x8301,
+ 0x82dc, 0x82d4, 0x82d1, 0x82de, 0x82d3, 0x82df, 0x82ef, 0x8306,
+ 0x8650, 0x8679, 0x867b, 0x867a, 0x884d, 0x886b, 0x8981, 0x89d4,
+ 0x8a08, 0x8a02, 0x8a03, 0x8c9e, 0x8ca0, 0x8d74, 0x8d73, 0x8db4,
+ 0x8ecd, 0x8ecc, 0x8ff0, 0x8fe6, 0x8fe2, 0x8fea, 0x8fe5, 0x8fed,
+ 0x8feb, 0x8fe4, 0x8fe8, 0x90ca, 0x90ce, 0x90c1, 0x90c3, 0x914b,
+ 0x914a, 0x91cd, 0x9582, 0x9650, 0x964b, 0x964c, 0x964d, 0x9762,
+ 0x9769, 0x97cb, 0x97ed, 0x97f3, 0x9801, 0x98a8, 0x98db, 0x98df,
+ 0x9996, 0x9999, 0x4e58, 0x4eb3, 0x500c, 0x500d, 0x5023, 0x4fef,
+ 0x5026, 0x5025, 0x4ff8, 0x5029, 0x5016, 0x5006, 0x503c, 0x501f,
+ 0x501a, 0x5012, 0x5011, 0x4ffa, 0x5000, 0x5014, 0x5028, 0x4ff1,
+ 0x5021, 0x500b, 0x5019, 0x5018, 0x4ff3, 0x4fee, 0x502d, 0x502a,
+ 0x4ffe, 0x502b, 0x5009, 0x517c, 0x51a4, 0x51a5, 0x51a2, 0x51cd,
+ 0x51cc, 0x51c6, 0x51cb, 0x5256, 0x525c, 0x5254, 0x525b, 0x525d,
+ 0x532a, 0x537f, 0x539f, 0x539d, 0x53df, 0x54e8, 0x5510, 0x5501,
+ 0x5537, 0x54fc, 0x54e5, 0x54f2, 0x5506, 0x54fa, 0x5514, 0x54e9,
+ 0x54ed, 0x54e1, 0x5509, 0x54ee, 0x54ea,
+ /* 0xae */
+ 0x54e6, 0x5527, 0x5507, 0x54fd, 0x550f, 0x5703, 0x5704, 0x57c2,
+ 0x57d4, 0x57cb, 0x57c3, 0x5809, 0x590f, 0x5957, 0x5958, 0x595a,
+ 0x5a11, 0x5a18, 0x5a1c, 0x5a1f, 0x5a1b, 0x5a13, 0x59ec, 0x5a20,
+ 0x5a23, 0x5a29, 0x5a25, 0x5a0c, 0x5a09, 0x5b6b, 0x5c58, 0x5bb0,
+ 0x5bb3, 0x5bb6, 0x5bb4, 0x5bae, 0x5bb5, 0x5bb9, 0x5bb8, 0x5c04,
+ 0x5c51, 0x5c55, 0x5c50, 0x5ced, 0x5cfd, 0x5cfb, 0x5cea, 0x5ce8,
+ 0x5cf0, 0x5cf6, 0x5d01, 0x5cf4, 0x5dee, 0x5e2d, 0x5e2b, 0x5eab,
+ 0x5ead, 0x5ea7, 0x5f31, 0x5f92, 0x5f91, 0x5f90, 0x6059, 0x6063,
+ 0x6065, 0x6050, 0x6055, 0x606d, 0x6069, 0x606f, 0x6084, 0x609f,
+ 0x609a, 0x608d, 0x6094, 0x608c, 0x6085, 0x6096, 0x6247, 0x62f3,
+ 0x6308, 0x62ff, 0x634e, 0x633e, 0x632f, 0x6355, 0x6342, 0x6346,
+ 0x634f, 0x6349, 0x633a, 0x6350, 0x633d, 0x632a, 0x632b, 0x6328,
+ 0x634d, 0x634c, 0x6548, 0x6549, 0x6599, 0x65c1, 0x65c5, 0x6642,
+ 0x6649, 0x664f, 0x6643, 0x6652, 0x664c, 0x6645, 0x6641, 0x66f8,
+ 0x6714, 0x6715, 0x6717, 0x6821, 0x6838, 0x6848, 0x6846, 0x6853,
+ 0x6839, 0x6842, 0x6854, 0x6829, 0x68b3, 0x6817, 0x684c, 0x6851,
+ 0x683d, 0x67f4, 0x6850, 0x6840, 0x683c, 0x6843, 0x682a, 0x6845,
+ 0x6813, 0x6818, 0x6841, 0x6b8a, 0x6b89, 0x6bb7, 0x6c23, 0x6c27,
+ 0x6c28, 0x6c26, 0x6c24, 0x6cf0, 0x6d6a, 0x6d95, 0x6d88, 0x6d87,
+ 0x6d66, 0x6d78, 0x6d77, 0x6d59, 0x6d93,
+ /* 0xaf */
+ 0x6d6c, 0x6d89, 0x6d6e, 0x6d5a, 0x6d74, 0x6d69, 0x6d8c, 0x6d8a,
+ 0x6d79, 0x6d85, 0x6d65, 0x6d94, 0x70ca, 0x70d8, 0x70e4, 0x70d9,
+ 0x70c8, 0x70cf, 0x7239, 0x7279, 0x72fc, 0x72f9, 0x72fd, 0x72f8,
+ 0x72f7, 0x7386, 0x73ed, 0x7409, 0x73ee, 0x73e0, 0x73ea, 0x73de,
+ 0x7554, 0x755d, 0x755c, 0x755a, 0x7559, 0x75be, 0x75c5, 0x75c7,
+ 0x75b2, 0x75b3, 0x75bd, 0x75bc, 0x75b9, 0x75c2, 0x75b8, 0x768b,
+ 0x76b0, 0x76ca, 0x76cd, 0x76ce, 0x7729, 0x771f, 0x7720, 0x7728,
+ 0x77e9, 0x7830, 0x7827, 0x7838, 0x781d, 0x7834, 0x7837, 0x7825,
+ 0x782d, 0x7820, 0x781f, 0x7832, 0x7955, 0x7950, 0x7960, 0x795f,
+ 0x7956, 0x795e, 0x795d, 0x7957, 0x795a, 0x79e4, 0x79e3, 0x79e7,
+ 0x79df, 0x79e6, 0x79e9, 0x79d8, 0x7a84, 0x7a88, 0x7ad9, 0x7b06,
+ 0x7b11, 0x7c89, 0x7d21, 0x7d17, 0x7d0b, 0x7d0a, 0x7d20, 0x7d22,
+ 0x7d14, 0x7d10, 0x7d15, 0x7d1a, 0x7d1c, 0x7d0d, 0x7d19, 0x7d1b,
+ 0x7f3a, 0x7f5f, 0x7f94, 0x7fc5, 0x7fc1, 0x8006, 0x8018, 0x8015,
+ 0x8019, 0x8017, 0x803d, 0x803f, 0x80f1, 0x8102, 0x80f0, 0x8105,
+ 0x80ed, 0x80f4, 0x8106, 0x80f8, 0x80f3, 0x8108, 0x80fd, 0x810a,
+ 0x80fc, 0x80ef, 0x81ed, 0x81ec, 0x8200, 0x8210, 0x822a, 0x822b,
+ 0x8228, 0x822c, 0x82bb, 0x832b, 0x8352, 0x8354, 0x834a, 0x8338,
+ 0x8350, 0x8349, 0x8335, 0x8334, 0x834f, 0x8332, 0x8339, 0x8336,
+ 0x8317, 0x8340, 0x8331, 0x8328, 0x8343,
+ /* 0xb0 */
+ 0x8654, 0x868a, 0x86aa, 0x8693, 0x86a4, 0x86a9, 0x868c, 0x86a3,
+ 0x869c, 0x8870, 0x8877, 0x8881, 0x8882, 0x887d, 0x8879, 0x8a18,
+ 0x8a10, 0x8a0e, 0x8a0c, 0x8a15, 0x8a0a, 0x8a17, 0x8a13, 0x8a16,
+ 0x8a0f, 0x8a11, 0x8c48, 0x8c7a, 0x8c79, 0x8ca1, 0x8ca2, 0x8d77,
+ 0x8eac, 0x8ed2, 0x8ed4, 0x8ecf, 0x8fb1, 0x9001, 0x9006, 0x8ff7,
+ 0x9000, 0x8ffa, 0x8ff4, 0x9003, 0x8ffd, 0x9005, 0x8ff8, 0x9095,
+ 0x90e1, 0x90dd, 0x90e2, 0x9152, 0x914d, 0x914c, 0x91d8, 0x91dd,
+ 0x91d7, 0x91dc, 0x91d9, 0x9583, 0x9662, 0x9663, 0x9661, 0x965b,
+ 0x965d, 0x9664, 0x9658, 0x965e, 0x96bb, 0x98e2, 0x99ac, 0x9aa8,
+ 0x9ad8, 0x9b25, 0x9b32, 0x9b3c, 0x4e7e, 0x507a, 0x507d, 0x505c,
+ 0x5047, 0x5043, 0x504c, 0x505a, 0x5049, 0x5065, 0x5076, 0x504e,
+ 0x5055, 0x5075, 0x5074, 0x5077, 0x504f, 0x500f, 0x506f, 0x506d,
+ 0x515c, 0x5195, 0x51f0, 0x526a, 0x526f, 0x52d2, 0x52d9, 0x52d8,
+ 0x52d5, 0x5310, 0x530f, 0x5319, 0x533f, 0x5340, 0x533e, 0x53c3,
+ 0x66fc, 0x5546, 0x556a, 0x5566, 0x5544, 0x555e, 0x5561, 0x5543,
+ 0x554a, 0x5531, 0x5556, 0x554f, 0x5555, 0x552f, 0x5564, 0x5538,
+ 0x552e, 0x555c, 0x552c, 0x5563, 0x5533, 0x5541, 0x5557, 0x5708,
+ 0x570b, 0x5709, 0x57df, 0x5805, 0x580a, 0x5806, 0x57e0, 0x57e4,
+ 0x57fa, 0x5802, 0x5835, 0x57f7, 0x57f9, 0x5920, 0x5962, 0x5a36,
+ 0x5a41, 0x5a49, 0x5a66, 0x5a6a, 0x5a40,
+ /* 0xb1 */
+ 0x5a3c, 0x5a62, 0x5a5a, 0x5a46, 0x5a4a, 0x5b70, 0x5bc7, 0x5bc5,
+ 0x5bc4, 0x5bc2, 0x5bbf, 0x5bc6, 0x5c09, 0x5c08, 0x5c07, 0x5c60,
+ 0x5c5c, 0x5c5d, 0x5d07, 0x5d06, 0x5d0e, 0x5d1b, 0x5d16, 0x5d22,
+ 0x5d11, 0x5d29, 0x5d14, 0x5d19, 0x5d24, 0x5d27, 0x5d17, 0x5de2,
+ 0x5e38, 0x5e36, 0x5e33, 0x5e37, 0x5eb7, 0x5eb8, 0x5eb6, 0x5eb5,
+ 0x5ebe, 0x5f35, 0x5f37, 0x5f57, 0x5f6c, 0x5f69, 0x5f6b, 0x5f97,
+ 0x5f99, 0x5f9e, 0x5f98, 0x5fa1, 0x5fa0, 0x5f9c, 0x607f, 0x60a3,
+ 0x6089, 0x60a0, 0x60a8, 0x60cb, 0x60b4, 0x60e6, 0x60bd, 0x60c5,
+ 0x60bb, 0x60b5, 0x60dc, 0x60bc, 0x60d8, 0x60d5, 0x60c6, 0x60df,
+ 0x60b8, 0x60da, 0x60c7, 0x621a, 0x621b, 0x6248, 0x63a0, 0x63a7,
+ 0x6372, 0x6396, 0x63a2, 0x63a5, 0x6377, 0x6367, 0x6398, 0x63aa,
+ 0x6371, 0x63a9, 0x6389, 0x6383, 0x639b, 0x636b, 0x63a8, 0x6384,
+ 0x6388, 0x6399, 0x63a1, 0x63ac, 0x6392, 0x638f, 0x6380, 0x637b,
+ 0x6369, 0x6368, 0x637a, 0x655d, 0x6556, 0x6551, 0x6559, 0x6557,
+ 0x555f, 0x654f, 0x6558, 0x6555, 0x6554, 0x659c, 0x659b, 0x65ac,
+ 0x65cf, 0x65cb, 0x65cc, 0x65ce, 0x665d, 0x665a, 0x6664, 0x6668,
+ 0x6666, 0x665e, 0x66f9, 0x52d7, 0x671b, 0x6881, 0x68af, 0x68a2,
+ 0x6893, 0x68b5, 0x687f, 0x6876, 0x68b1, 0x68a7, 0x6897, 0x68b0,
+ 0x6883, 0x68c4, 0x68ad, 0x6886, 0x6885, 0x6894, 0x689d, 0x68a8,
+ 0x689f, 0x68a1, 0x6882, 0x6b32, 0x6bba,
+ /* 0xb2 */
+ 0x6beb, 0x6bec, 0x6c2b, 0x6d8e, 0x6dbc, 0x6df3, 0x6dd9, 0x6db2,
+ 0x6de1, 0x6dcc, 0x6de4, 0x6dfb, 0x6dfa, 0x6e05, 0x6dc7, 0x6dcb,
+ 0x6daf, 0x6dd1, 0x6dae, 0x6dde, 0x6df9, 0x6db8, 0x6df7, 0x6df5,
+ 0x6dc5, 0x6dd2, 0x6e1a, 0x6db5, 0x6dda, 0x6deb, 0x6dd8, 0x6dea,
+ 0x6df1, 0x6dee, 0x6de8, 0x6dc6, 0x6dc4, 0x6daa, 0x6dec, 0x6dbf,
+ 0x6de6, 0x70f9, 0x7109, 0x710a, 0x70fd, 0x70ef, 0x723d, 0x727d,
+ 0x7281, 0x731c, 0x731b, 0x7316, 0x7313, 0x7319, 0x7387, 0x7405,
+ 0x740a, 0x7403, 0x7406, 0x73fe, 0x740d, 0x74e0, 0x74f6, 0x74f7,
+ 0x751c, 0x7522, 0x7565, 0x7566, 0x7562, 0x7570, 0x758f, 0x75d4,
+ 0x75d5, 0x75b5, 0x75ca, 0x75cd, 0x768e, 0x76d4, 0x76d2, 0x76db,
+ 0x7737, 0x773e, 0x773c, 0x7736, 0x7738, 0x773a, 0x786b, 0x7843,
+ 0x784e, 0x7965, 0x7968, 0x796d, 0x79fb, 0x7a92, 0x7a95, 0x7b20,
+ 0x7b28, 0x7b1b, 0x7b2c, 0x7b26, 0x7b19, 0x7b1e, 0x7b2e, 0x7c92,
+ 0x7c97, 0x7c95, 0x7d46, 0x7d43, 0x7d71, 0x7d2e, 0x7d39, 0x7d3c,
+ 0x7d40, 0x7d30, 0x7d33, 0x7d44, 0x7d2f, 0x7d42, 0x7d32, 0x7d31,
+ 0x7f3d, 0x7f9e, 0x7f9a, 0x7fcc, 0x7fce, 0x7fd2, 0x801c, 0x804a,
+ 0x8046, 0x812f, 0x8116, 0x8123, 0x812b, 0x8129, 0x8130, 0x8124,
+ 0x8202, 0x8235, 0x8237, 0x8236, 0x8239, 0x838e, 0x839e, 0x8398,
+ 0x8378, 0x83a2, 0x8396, 0x83bd, 0x83ab, 0x8392, 0x838a, 0x8393,
+ 0x8389, 0x83a0, 0x8377, 0x837b, 0x837c,
+ /* 0xb3 */
+ 0x8386, 0x83a7, 0x8655, 0x5f6a, 0x86c7, 0x86c0, 0x86b6, 0x86c4,
+ 0x86b5, 0x86c6, 0x86cb, 0x86b1, 0x86af, 0x86c9, 0x8853, 0x889e,
+ 0x8888, 0x88ab, 0x8892, 0x8896, 0x888d, 0x888b, 0x8993, 0x898f,
+ 0x8a2a, 0x8a1d, 0x8a23, 0x8a25, 0x8a31, 0x8a2d, 0x8a1f, 0x8a1b,
+ 0x8a22, 0x8c49, 0x8c5a, 0x8ca9, 0x8cac, 0x8cab, 0x8ca8, 0x8caa,
+ 0x8ca7, 0x8d67, 0x8d66, 0x8dbe, 0x8dba, 0x8edb, 0x8edf, 0x9019,
+ 0x900d, 0x901a, 0x9017, 0x9023, 0x901f, 0x901d, 0x9010, 0x9015,
+ 0x901e, 0x9020, 0x900f, 0x9022, 0x9016, 0x901b, 0x9014, 0x90e8,
+ 0x90ed, 0x90fd, 0x9157, 0x91ce, 0x91f5, 0x91e6, 0x91e3, 0x91e7,
+ 0x91ed, 0x91e9, 0x9589, 0x966a, 0x9675, 0x9673, 0x9678, 0x9670,
+ 0x9674, 0x9676, 0x9677, 0x966c, 0x96c0, 0x96ea, 0x96e9, 0x7ae0,
+ 0x7adf, 0x9802, 0x9803, 0x9b5a, 0x9ce5, 0x9e75, 0x9e7f, 0x9ea5,
+ 0x9ebb, 0x50a2, 0x508d, 0x5085, 0x5099, 0x5091, 0x5080, 0x5096,
+ 0x5098, 0x509a, 0x6700, 0x51f1, 0x5272, 0x5274, 0x5275, 0x5269,
+ 0x52de, 0x52dd, 0x52db, 0x535a, 0x53a5, 0x557b, 0x5580, 0x55a7,
+ 0x557c, 0x558a, 0x559d, 0x5598, 0x5582, 0x559c, 0x55aa, 0x5594,
+ 0x5587, 0x558b, 0x5583, 0x55b3, 0x55ae, 0x559f, 0x553e, 0x55b2,
+ 0x559a, 0x55bb, 0x55ac, 0x55b1, 0x557e, 0x5589, 0x55ab, 0x5599,
+ 0x570d, 0x582f, 0x582a, 0x5834, 0x5824, 0x5830, 0x5831, 0x5821,
+ 0x581d, 0x5820, 0x58f9, 0x58fa, 0x5960,
+ /* 0xb4 */
+ 0x5a77, 0x5a9a, 0x5a7f, 0x5a92, 0x5a9b, 0x5aa7, 0x5b73, 0x5b71,
+ 0x5bd2, 0x5bcc, 0x5bd3, 0x5bd0, 0x5c0a, 0x5c0b, 0x5c31, 0x5d4c,
+ 0x5d50, 0x5d34, 0x5d47, 0x5dfd, 0x5e45, 0x5e3d, 0x5e40, 0x5e43,
+ 0x5e7e, 0x5eca, 0x5ec1, 0x5ec2, 0x5ec4, 0x5f3c, 0x5f6d, 0x5fa9,
+ 0x5faa, 0x5fa8, 0x60d1, 0x60e1, 0x60b2, 0x60b6, 0x60e0, 0x611c,
+ 0x6123, 0x60fa, 0x6115, 0x60f0, 0x60fb, 0x60f4, 0x6168, 0x60f1,
+ 0x610e, 0x60f6, 0x6109, 0x6100, 0x6112, 0x621f, 0x6249, 0x63a3,
+ 0x638c, 0x63cf, 0x63c0, 0x63e9, 0x63c9, 0x63c6, 0x63cd, 0x63d2,
+ 0x63e3, 0x63d0, 0x63e1, 0x63d6, 0x63ed, 0x63ee, 0x6376, 0x63f4,
+ 0x63ea, 0x63db, 0x6452, 0x63da, 0x63f9, 0x655e, 0x6566, 0x6562,
+ 0x6563, 0x6591, 0x6590, 0x65af, 0x666e, 0x6670, 0x6674, 0x6676,
+ 0x666f, 0x6691, 0x667a, 0x667e, 0x6677, 0x66fe, 0x66ff, 0x671f,
+ 0x671d, 0x68fa, 0x68d5, 0x68e0, 0x68d8, 0x68d7, 0x6905, 0x68df,
+ 0x68f5, 0x68ee, 0x68e7, 0x68f9, 0x68d2, 0x68f2, 0x68e3, 0x68cb,
+ 0x68cd, 0x690d, 0x6912, 0x690e, 0x68c9, 0x68da, 0x696e, 0x68fb,
+ 0x6b3e, 0x6b3a, 0x6b3d, 0x6b98, 0x6b96, 0x6bbc, 0x6bef, 0x6c2e,
+ 0x6c2f, 0x6c2c, 0x6e2f, 0x6e38, 0x6e54, 0x6e21, 0x6e32, 0x6e67,
+ 0x6e4a, 0x6e20, 0x6e25, 0x6e23, 0x6e1b, 0x6e5b, 0x6e58, 0x6e24,
+ 0x6e56, 0x6e6e, 0x6e2d, 0x6e26, 0x6e6f, 0x6e34, 0x6e4d, 0x6e3a,
+ 0x6e2c, 0x6e43, 0x6e1d, 0x6e3e, 0x6ecb,
+ /* 0xb5 */
+ 0x6e89, 0x6e19, 0x6e4e, 0x6e63, 0x6e44, 0x6e72, 0x6e69, 0x6e5f,
+ 0x7119, 0x711a, 0x7126, 0x7130, 0x7121, 0x7136, 0x716e, 0x711c,
+ 0x724c, 0x7284, 0x7280, 0x7336, 0x7325, 0x7334, 0x7329, 0x743a,
+ 0x742a, 0x7433, 0x7422, 0x7425, 0x7435, 0x7436, 0x7434, 0x742f,
+ 0x741b, 0x7426, 0x7428, 0x7525, 0x7526, 0x756b, 0x756a, 0x75e2,
+ 0x75db, 0x75e3, 0x75d9, 0x75d8, 0x75de, 0x75e0, 0x767b, 0x767c,
+ 0x7696, 0x7693, 0x76b4, 0x76dc, 0x774f, 0x77ed, 0x785d, 0x786c,
+ 0x786f, 0x7a0d, 0x7a08, 0x7a0b, 0x7a05, 0x7a00, 0x7a98, 0x7a97,
+ 0x7a96, 0x7ae5, 0x7ae3, 0x7b49, 0x7b56, 0x7b46, 0x7b50, 0x7b52,
+ 0x7b54, 0x7b4d, 0x7b4b, 0x7b4f, 0x7b51, 0x7c9f, 0x7ca5, 0x7d5e,
+ 0x7d50, 0x7d68, 0x7d55, 0x7d2b, 0x7d6e, 0x7d72, 0x7d61, 0x7d66,
+ 0x7d62, 0x7d70, 0x7d73, 0x5584, 0x7fd4, 0x7fd5, 0x800b, 0x8052,
+ 0x8085, 0x8155, 0x8154, 0x814b, 0x8151, 0x814e, 0x8139, 0x8146,
+ 0x813e, 0x814c, 0x8153, 0x8174, 0x8212, 0x821c, 0x83e9, 0x8403,
+ 0x83f8, 0x840d, 0x83e0, 0x83c5, 0x840b, 0x83c1, 0x83ef, 0x83f1,
+ 0x83f4, 0x8457, 0x840a, 0x83f0, 0x840c, 0x83cc, 0x83fd, 0x83f2,
+ 0x83ca, 0x8438, 0x840e, 0x8404, 0x83dc, 0x8407, 0x83d4, 0x83df,
+ 0x865b, 0x86df, 0x86d9, 0x86ed, 0x86d4, 0x86db, 0x86e4, 0x86d0,
+ 0x86de, 0x8857, 0x88c1, 0x88c2, 0x88b1, 0x8983, 0x8996, 0x8a3b,
+ 0x8a60, 0x8a55, 0x8a5e, 0x8a3c, 0x8a41,
+ /* 0xb6 */
+ 0x8a54, 0x8a5b, 0x8a50, 0x8a46, 0x8a34, 0x8a3a, 0x8a36, 0x8a56,
+ 0x8c61, 0x8c82, 0x8caf, 0x8cbc, 0x8cb3, 0x8cbd, 0x8cc1, 0x8cbb,
+ 0x8cc0, 0x8cb4, 0x8cb7, 0x8cb6, 0x8cbf, 0x8cb8, 0x8d8a, 0x8d85,
+ 0x8d81, 0x8dce, 0x8ddd, 0x8dcb, 0x8dda, 0x8dd1, 0x8dcc, 0x8ddb,
+ 0x8dc6, 0x8efb, 0x8ef8, 0x8efc, 0x8f9c, 0x902e, 0x9035, 0x9031,
+ 0x9038, 0x9032, 0x9036, 0x9102, 0x90f5, 0x9109, 0x90fe, 0x9163,
+ 0x9165, 0x91cf, 0x9214, 0x9215, 0x9223, 0x9209, 0x921e, 0x920d,
+ 0x9210, 0x9207, 0x9211, 0x9594, 0x958f, 0x958b, 0x9591, 0x9593,
+ 0x9592, 0x958e, 0x968a, 0x968e, 0x968b, 0x967d, 0x9685, 0x9686,
+ 0x968d, 0x9672, 0x9684, 0x96c1, 0x96c5, 0x96c4, 0x96c6, 0x96c7,
+ 0x96ef, 0x96f2, 0x97cc, 0x9805, 0x9806, 0x9808, 0x98e7, 0x98ea,
+ 0x98ef, 0x98e9, 0x98f2, 0x98ed, 0x99ae, 0x99ad, 0x9ec3, 0x9ecd,
+ 0x9ed1, 0x4e82, 0x50ad, 0x50b5, 0x50b2, 0x50b3, 0x50c5, 0x50be,
+ 0x50ac, 0x50b7, 0x50bb, 0x50af, 0x50c7, 0x527f, 0x5277, 0x527d,
+ 0x52df, 0x52e6, 0x52e4, 0x52e2, 0x52e3, 0x532f, 0x55df, 0x55e8,
+ 0x55d3, 0x55e6, 0x55ce, 0x55dc, 0x55c7, 0x55d1, 0x55e3, 0x55e4,
+ 0x55ef, 0x55da, 0x55e1, 0x55c5, 0x55c6, 0x55e5, 0x55c9, 0x5712,
+ 0x5713, 0x585e, 0x5851, 0x5858, 0x5857, 0x585a, 0x5854, 0x586b,
+ 0x584c, 0x586d, 0x584a, 0x5862, 0x5852, 0x584b, 0x5967, 0x5ac1,
+ 0x5ac9, 0x5acc, 0x5abe, 0x5abd, 0x5abc,
+ /* 0xb7 */
+ 0x5ab3, 0x5ac2, 0x5ab2, 0x5d69, 0x5d6f, 0x5e4c, 0x5e79, 0x5ec9,
+ 0x5ec8, 0x5f12, 0x5f59, 0x5fac, 0x5fae, 0x611a, 0x610f, 0x6148,
+ 0x611f, 0x60f3, 0x611b, 0x60f9, 0x6101, 0x6108, 0x614e, 0x614c,
+ 0x6144, 0x614d, 0x613e, 0x6134, 0x6127, 0x610d, 0x6106, 0x6137,
+ 0x6221, 0x6222, 0x6413, 0x643e, 0x641e, 0x642a, 0x642d, 0x643d,
+ 0x642c, 0x640f, 0x641c, 0x6414, 0x640d, 0x6436, 0x6416, 0x6417,
+ 0x6406, 0x656c, 0x659f, 0x65b0, 0x6697, 0x6689, 0x6687, 0x6688,
+ 0x6696, 0x6684, 0x6698, 0x668d, 0x6703, 0x6994, 0x696d, 0x695a,
+ 0x6977, 0x6960, 0x6954, 0x6975, 0x6930, 0x6982, 0x694a, 0x6968,
+ 0x696b, 0x695e, 0x6953, 0x6979, 0x6986, 0x695d, 0x6963, 0x695b,
+ 0x6b47, 0x6b72, 0x6bc0, 0x6bbf, 0x6bd3, 0x6bfd, 0x6ea2, 0x6eaf,
+ 0x6ed3, 0x6eb6, 0x6ec2, 0x6e90, 0x6e9d, 0x6ec7, 0x6ec5, 0x6ea5,
+ 0x6e98, 0x6ebc, 0x6eba, 0x6eab, 0x6ed1, 0x6e96, 0x6e9c, 0x6ec4,
+ 0x6ed4, 0x6eaa, 0x6ea7, 0x6eb4, 0x714e, 0x7159, 0x7169, 0x7164,
+ 0x7149, 0x7167, 0x715c, 0x716c, 0x7166, 0x714c, 0x7165, 0x715e,
+ 0x7146, 0x7168, 0x7156, 0x723a, 0x7252, 0x7337, 0x7345, 0x733f,
+ 0x733e, 0x746f, 0x745a, 0x7455, 0x745f, 0x745e, 0x7441, 0x743f,
+ 0x7459, 0x745b, 0x745c, 0x7576, 0x7578, 0x7600, 0x75f0, 0x7601,
+ 0x75f2, 0x75f1, 0x75fa, 0x75ff, 0x75f4, 0x75f3, 0x76de, 0x76df,
+ 0x775b, 0x776b, 0x7766, 0x775e, 0x7763,
+ /* 0xb8 */
+ 0x7779, 0x776a, 0x776c, 0x775c, 0x7765, 0x7768, 0x7762, 0x77ee,
+ 0x788e, 0x78b0, 0x7897, 0x7898, 0x788c, 0x7889, 0x787c, 0x7891,
+ 0x7893, 0x787f, 0x797a, 0x797f, 0x7981, 0x842c, 0x79bd, 0x7a1c,
+ 0x7a1a, 0x7a20, 0x7a14, 0x7a1f, 0x7a1e, 0x7a9f, 0x7aa0, 0x7b77,
+ 0x7bc0, 0x7b60, 0x7b6e, 0x7b67, 0x7cb1, 0x7cb3, 0x7cb5, 0x7d93,
+ 0x7d79, 0x7d91, 0x7d81, 0x7d8f, 0x7d5b, 0x7f6e, 0x7f69, 0x7f6a,
+ 0x7f72, 0x7fa9, 0x7fa8, 0x7fa4, 0x8056, 0x8058, 0x8086, 0x8084,
+ 0x8171, 0x8170, 0x8178, 0x8165, 0x816e, 0x8173, 0x816b, 0x8179,
+ 0x817a, 0x8166, 0x8205, 0x8247, 0x8482, 0x8477, 0x843d, 0x8431,
+ 0x8475, 0x8466, 0x846b, 0x8449, 0x846c, 0x845b, 0x843c, 0x8435,
+ 0x8461, 0x8463, 0x8469, 0x846d, 0x8446, 0x865e, 0x865c, 0x865f,
+ 0x86f9, 0x8713, 0x8708, 0x8707, 0x8700, 0x86fe, 0x86fb, 0x8702,
+ 0x8703, 0x8706, 0x870a, 0x8859, 0x88df, 0x88d4, 0x88d9, 0x88dc,
+ 0x88d8, 0x88dd, 0x88e1, 0x88ca, 0x88d5, 0x88d2, 0x899c, 0x89e3,
+ 0x8a6b, 0x8a72, 0x8a73, 0x8a66, 0x8a69, 0x8a70, 0x8a87, 0x8a7c,
+ 0x8a63, 0x8aa0, 0x8a71, 0x8a85, 0x8a6d, 0x8a62, 0x8a6e, 0x8a6c,
+ 0x8a79, 0x8a7b, 0x8a3e, 0x8a68, 0x8c62, 0x8c8a, 0x8c89, 0x8cca,
+ 0x8cc7, 0x8cc8, 0x8cc4, 0x8cb2, 0x8cc3, 0x8cc2, 0x8cc5, 0x8de1,
+ 0x8ddf, 0x8de8, 0x8def, 0x8df3, 0x8dfa, 0x8dea, 0x8de4, 0x8de6,
+ 0x8eb2, 0x8f03, 0x8f09, 0x8efe, 0x8f0a,
+ /* 0xb9 */
+ 0x8f9f, 0x8fb2, 0x904b, 0x904a, 0x9053, 0x9042, 0x9054, 0x903c,
+ 0x9055, 0x9050, 0x9047, 0x904f, 0x904e, 0x904d, 0x9051, 0x903e,
+ 0x9041, 0x9112, 0x9117, 0x916c, 0x916a, 0x9169, 0x91c9, 0x9237,
+ 0x9257, 0x9238, 0x923d, 0x9240, 0x923e, 0x925b, 0x924b, 0x9264,
+ 0x9251, 0x9234, 0x9249, 0x924d, 0x9245, 0x9239, 0x923f, 0x925a,
+ 0x9598, 0x9698, 0x9694, 0x9695, 0x96cd, 0x96cb, 0x96c9, 0x96ca,
+ 0x96f7, 0x96fb, 0x96f9, 0x96f6, 0x9756, 0x9774, 0x9776, 0x9810,
+ 0x9811, 0x9813, 0x980a, 0x9812, 0x980c, 0x98fc, 0x98f4, 0x98fd,
+ 0x98fe, 0x99b3, 0x99b1, 0x99b4, 0x9ae1, 0x9ce9, 0x9e82, 0x9f0e,
+ 0x9f13, 0x9f20, 0x50e7, 0x50ee, 0x50e5, 0x50d6, 0x50ed, 0x50da,
+ 0x50d5, 0x50cf, 0x50d1, 0x50f1, 0x50ce, 0x50e9, 0x5162, 0x51f3,
+ 0x5283, 0x5282, 0x5331, 0x53ad, 0x55fe, 0x5600, 0x561b, 0x5617,
+ 0x55fd, 0x5614, 0x5606, 0x5609, 0x560d, 0x560e, 0x55f7, 0x5616,
+ 0x561f, 0x5608, 0x5610, 0x55f6, 0x5718, 0x5716, 0x5875, 0x587e,
+ 0x5883, 0x5893, 0x588a, 0x5879, 0x5885, 0x587d, 0x58fd, 0x5925,
+ 0x5922, 0x5924, 0x596a, 0x5969, 0x5ae1, 0x5ae6, 0x5ae9, 0x5ad7,
+ 0x5ad6, 0x5ad8, 0x5ae3, 0x5b75, 0x5bde, 0x5be7, 0x5be1, 0x5be5,
+ 0x5be6, 0x5be8, 0x5be2, 0x5be4, 0x5bdf, 0x5c0d, 0x5c62, 0x5d84,
+ 0x5d87, 0x5e5b, 0x5e63, 0x5e55, 0x5e57, 0x5e54, 0x5ed3, 0x5ed6,
+ 0x5f0a, 0x5f46, 0x5f70, 0x5fb9, 0x6147,
+ /* 0xba */
+ 0x613f, 0x614b, 0x6177, 0x6162, 0x6163, 0x615f, 0x615a, 0x6158,
+ 0x6175, 0x622a, 0x6487, 0x6458, 0x6454, 0x64a4, 0x6478, 0x645f,
+ 0x647a, 0x6451, 0x6467, 0x6434, 0x646d, 0x647b, 0x6572, 0x65a1,
+ 0x65d7, 0x65d6, 0x66a2, 0x66a8, 0x669d, 0x699c, 0x69a8, 0x6995,
+ 0x69c1, 0x69ae, 0x69d3, 0x69cb, 0x699b, 0x69b7, 0x69bb, 0x69ab,
+ 0x69b4, 0x69d0, 0x69cd, 0x69ad, 0x69cc, 0x69a6, 0x69c3, 0x69a3,
+ 0x6b49, 0x6b4c, 0x6c33, 0x6f33, 0x6f14, 0x6efe, 0x6f13, 0x6ef4,
+ 0x6f29, 0x6f3e, 0x6f20, 0x6f2c, 0x6f0f, 0x6f02, 0x6f22, 0x6eff,
+ 0x6eef, 0x6f06, 0x6f31, 0x6f38, 0x6f32, 0x6f23, 0x6f15, 0x6f2b,
+ 0x6f2f, 0x6f88, 0x6f2a, 0x6eec, 0x6f01, 0x6ef2, 0x6ecc, 0x6ef7,
+ 0x7194, 0x7199, 0x717d, 0x718a, 0x7184, 0x7192, 0x723e, 0x7292,
+ 0x7296, 0x7344, 0x7350, 0x7464, 0x7463, 0x746a, 0x7470, 0x746d,
+ 0x7504, 0x7591, 0x7627, 0x760d, 0x760b, 0x7609, 0x7613, 0x76e1,
+ 0x76e3, 0x7784, 0x777d, 0x777f, 0x7761, 0x78c1, 0x789f, 0x78a7,
+ 0x78b3, 0x78a9, 0x78a3, 0x798e, 0x798f, 0x798d, 0x7a2e, 0x7a31,
+ 0x7aaa, 0x7aa9, 0x7aed, 0x7aef, 0x7ba1, 0x7b95, 0x7b8b, 0x7b75,
+ 0x7b97, 0x7b9d, 0x7b94, 0x7b8f, 0x7bb8, 0x7b87, 0x7b84, 0x7cb9,
+ 0x7cbd, 0x7cbe, 0x7dbb, 0x7db0, 0x7d9c, 0x7dbd, 0x7dbe, 0x7da0,
+ 0x7dca, 0x7db4, 0x7db2, 0x7db1, 0x7dba, 0x7da2, 0x7dbf, 0x7db5,
+ 0x7db8, 0x7dad, 0x7dd2, 0x7dc7, 0x7dac,
+ /* 0xbb */
+ 0x7f70, 0x7fe0, 0x7fe1, 0x7fdf, 0x805e, 0x805a, 0x8087, 0x8150,
+ 0x8180, 0x818f, 0x8188, 0x818a, 0x817f, 0x8182, 0x81e7, 0x81fa,
+ 0x8207, 0x8214, 0x821e, 0x824b, 0x84c9, 0x84bf, 0x84c6, 0x84c4,
+ 0x8499, 0x849e, 0x84b2, 0x849c, 0x84cb, 0x84b8, 0x84c0, 0x84d3,
+ 0x8490, 0x84bc, 0x84d1, 0x84ca, 0x873f, 0x871c, 0x873b, 0x8722,
+ 0x8725, 0x8734, 0x8718, 0x8755, 0x8737, 0x8729, 0x88f3, 0x8902,
+ 0x88f4, 0x88f9, 0x88f8, 0x88fd, 0x88e8, 0x891a, 0x88ef, 0x8aa6,
+ 0x8a8c, 0x8a9e, 0x8aa3, 0x8a8d, 0x8aa1, 0x8a93, 0x8aa4, 0x8aaa,
+ 0x8aa5, 0x8aa8, 0x8a98, 0x8a91, 0x8a9a, 0x8aa7, 0x8c6a, 0x8c8d,
+ 0x8c8c, 0x8cd3, 0x8cd1, 0x8cd2, 0x8d6b, 0x8d99, 0x8d95, 0x8dfc,
+ 0x8f14, 0x8f12, 0x8f15, 0x8f13, 0x8fa3, 0x9060, 0x9058, 0x905c,
+ 0x9063, 0x9059, 0x905e, 0x9062, 0x905d, 0x905b, 0x9119, 0x9118,
+ 0x911e, 0x9175, 0x9178, 0x9177, 0x9174, 0x9278, 0x9280, 0x9285,
+ 0x9298, 0x9296, 0x927b, 0x9293, 0x929c, 0x92a8, 0x927c, 0x9291,
+ 0x95a1, 0x95a8, 0x95a9, 0x95a3, 0x95a5, 0x95a4, 0x9699, 0x969c,
+ 0x969b, 0x96cc, 0x96d2, 0x9700, 0x977c, 0x9785, 0x97f6, 0x9817,
+ 0x9818, 0x98af, 0x98b1, 0x9903, 0x9905, 0x990c, 0x9909, 0x99c1,
+ 0x9aaf, 0x9ab0, 0x9ae6, 0x9b41, 0x9b42, 0x9cf4, 0x9cf6, 0x9cf3,
+ 0x9ebc, 0x9f3b, 0x9f4a, 0x5104, 0x5100, 0x50fb, 0x50f5, 0x50f9,
+ 0x5102, 0x5108, 0x5109, 0x5105, 0x51dc,
+ /* 0xbc */
+ 0x5287, 0x5288, 0x5289, 0x528d, 0x528a, 0x52f0, 0x53b2, 0x562e,
+ 0x563b, 0x5639, 0x5632, 0x563f, 0x5634, 0x5629, 0x5653, 0x564e,
+ 0x5657, 0x5674, 0x5636, 0x562f, 0x5630, 0x5880, 0x589f, 0x589e,
+ 0x58b3, 0x589c, 0x58ae, 0x58a9, 0x58a6, 0x596d, 0x5b09, 0x5afb,
+ 0x5b0b, 0x5af5, 0x5b0c, 0x5b08, 0x5bee, 0x5bec, 0x5be9, 0x5beb,
+ 0x5c64, 0x5c65, 0x5d9d, 0x5d94, 0x5e62, 0x5e5f, 0x5e61, 0x5ee2,
+ 0x5eda, 0x5edf, 0x5edd, 0x5ee3, 0x5ee0, 0x5f48, 0x5f71, 0x5fb7,
+ 0x5fb5, 0x6176, 0x6167, 0x616e, 0x615d, 0x6155, 0x6182, 0x617c,
+ 0x6170, 0x616b, 0x617e, 0x61a7, 0x6190, 0x61ab, 0x618e, 0x61ac,
+ 0x619a, 0x61a4, 0x6194, 0x61ae, 0x622e, 0x6469, 0x646f, 0x6479,
+ 0x649e, 0x64b2, 0x6488, 0x6490, 0x64b0, 0x64a5, 0x6493, 0x6495,
+ 0x64a9, 0x6492, 0x64ae, 0x64ad, 0x64ab, 0x649a, 0x64ac, 0x6499,
+ 0x64a2, 0x64b3, 0x6575, 0x6577, 0x6578, 0x66ae, 0x66ab, 0x66b4,
+ 0x66b1, 0x6a23, 0x6a1f, 0x69e8, 0x6a01, 0x6a1e, 0x6a19, 0x69fd,
+ 0x6a21, 0x6a13, 0x6a0a, 0x69f3, 0x6a02, 0x6a05, 0x69ed, 0x6a11,
+ 0x6b50, 0x6b4e, 0x6ba4, 0x6bc5, 0x6bc6, 0x6f3f, 0x6f7c, 0x6f84,
+ 0x6f51, 0x6f66, 0x6f54, 0x6f86, 0x6f6d, 0x6f5b, 0x6f78, 0x6f6e,
+ 0x6f8e, 0x6f7a, 0x6f70, 0x6f64, 0x6f97, 0x6f58, 0x6ed5, 0x6f6f,
+ 0x6f60, 0x6f5f, 0x719f, 0x71ac, 0x71b1, 0x71a8, 0x7256, 0x729b,
+ 0x734e, 0x7357, 0x7469, 0x748b, 0x7483,
+ /* 0xbd */
+ 0x747e, 0x7480, 0x757f, 0x7620, 0x7629, 0x761f, 0x7624, 0x7626,
+ 0x7621, 0x7622, 0x769a, 0x76ba, 0x76e4, 0x778e, 0x7787, 0x778c,
+ 0x7791, 0x778b, 0x78cb, 0x78c5, 0x78ba, 0x78ca, 0x78be, 0x78d5,
+ 0x78bc, 0x78d0, 0x7a3f, 0x7a3c, 0x7a40, 0x7a3d, 0x7a37, 0x7a3b,
+ 0x7aaf, 0x7aae, 0x7bad, 0x7bb1, 0x7bc4, 0x7bb4, 0x7bc6, 0x7bc7,
+ 0x7bc1, 0x7ba0, 0x7bcc, 0x7cca, 0x7de0, 0x7df4, 0x7def, 0x7dfb,
+ 0x7dd8, 0x7dec, 0x7ddd, 0x7de8, 0x7de3, 0x7dda, 0x7dde, 0x7de9,
+ 0x7d9e, 0x7dd9, 0x7df2, 0x7df9, 0x7f75, 0x7f77, 0x7faf, 0x7fe9,
+ 0x8026, 0x819b, 0x819c, 0x819d, 0x81a0, 0x819a, 0x8198, 0x8517,
+ 0x853d, 0x851a, 0x84ee, 0x852c, 0x852d, 0x8513, 0x8511, 0x8523,
+ 0x8521, 0x8514, 0x84ec, 0x8525, 0x84ff, 0x8506, 0x8782, 0x8774,
+ 0x8776, 0x8760, 0x8766, 0x8778, 0x8768, 0x8759, 0x8757, 0x874c,
+ 0x8753, 0x885b, 0x885d, 0x8910, 0x8907, 0x8912, 0x8913, 0x8915,
+ 0x890a, 0x8abc, 0x8ad2, 0x8ac7, 0x8ac4, 0x8a95, 0x8acb, 0x8af8,
+ 0x8ab2, 0x8ac9, 0x8ac2, 0x8abf, 0x8ab0, 0x8ad6, 0x8acd, 0x8ab6,
+ 0x8ab9, 0x8adb, 0x8c4c, 0x8c4e, 0x8c6c, 0x8ce0, 0x8cde, 0x8ce6,
+ 0x8ce4, 0x8cec, 0x8ced, 0x8ce2, 0x8ce3, 0x8cdc, 0x8cea, 0x8ce1,
+ 0x8d6d, 0x8d9f, 0x8da3, 0x8e2b, 0x8e10, 0x8e1d, 0x8e22, 0x8e0f,
+ 0x8e29, 0x8e1f, 0x8e21, 0x8e1e, 0x8eba, 0x8f1d, 0x8f1b, 0x8f1f,
+ 0x8f29, 0x8f26, 0x8f2a, 0x8f1c, 0x8f1e,
+ /* 0xbe */
+ 0x8f25, 0x9069, 0x906e, 0x9068, 0x906d, 0x9077, 0x9130, 0x912d,
+ 0x9127, 0x9131, 0x9187, 0x9189, 0x918b, 0x9183, 0x92c5, 0x92bb,
+ 0x92b7, 0x92ea, 0x92ac, 0x92e4, 0x92c1, 0x92b3, 0x92bc, 0x92d2,
+ 0x92c7, 0x92f0, 0x92b2, 0x95ad, 0x95b1, 0x9704, 0x9706, 0x9707,
+ 0x9709, 0x9760, 0x978d, 0x978b, 0x978f, 0x9821, 0x982b, 0x981c,
+ 0x98b3, 0x990a, 0x9913, 0x9912, 0x9918, 0x99dd, 0x99d0, 0x99df,
+ 0x99db, 0x99d1, 0x99d5, 0x99d2, 0x99d9, 0x9ab7, 0x9aee, 0x9aef,
+ 0x9b27, 0x9b45, 0x9b44, 0x9b77, 0x9b6f, 0x9d06, 0x9d09, 0x9d03,
+ 0x9ea9, 0x9ebe, 0x9ece, 0x58a8, 0x9f52, 0x5112, 0x5118, 0x5114,
+ 0x5110, 0x5115, 0x5180, 0x51aa, 0x51dd, 0x5291, 0x5293, 0x52f3,
+ 0x5659, 0x566b, 0x5679, 0x5669, 0x5664, 0x5678, 0x566a, 0x5668,
+ 0x5665, 0x5671, 0x566f, 0x566c, 0x5662, 0x5676, 0x58c1, 0x58be,
+ 0x58c7, 0x58c5, 0x596e, 0x5b1d, 0x5b34, 0x5b78, 0x5bf0, 0x5c0e,
+ 0x5f4a, 0x61b2, 0x6191, 0x61a9, 0x618a, 0x61cd, 0x61b6, 0x61be,
+ 0x61ca, 0x61c8, 0x6230, 0x64c5, 0x64c1, 0x64cb, 0x64bb, 0x64bc,
+ 0x64da, 0x64c4, 0x64c7, 0x64c2, 0x64cd, 0x64bf, 0x64d2, 0x64d4,
+ 0x64be, 0x6574, 0x66c6, 0x66c9, 0x66b9, 0x66c4, 0x66c7, 0x66b8,
+ 0x6a3d, 0x6a38, 0x6a3a, 0x6a59, 0x6a6b, 0x6a58, 0x6a39, 0x6a44,
+ 0x6a62, 0x6a61, 0x6a4b, 0x6a47, 0x6a35, 0x6a5f, 0x6a48, 0x6b59,
+ 0x6b77, 0x6c05, 0x6fc2, 0x6fb1, 0x6fa1,
+ /* 0xbf */
+ 0x6fc3, 0x6fa4, 0x6fc1, 0x6fa7, 0x6fb3, 0x6fc0, 0x6fb9, 0x6fb6,
+ 0x6fa6, 0x6fa0, 0x6fb4, 0x71be, 0x71c9, 0x71d0, 0x71d2, 0x71c8,
+ 0x71d5, 0x71b9, 0x71ce, 0x71d9, 0x71dc, 0x71c3, 0x71c4, 0x7368,
+ 0x749c, 0x74a3, 0x7498, 0x749f, 0x749e, 0x74e2, 0x750c, 0x750d,
+ 0x7634, 0x7638, 0x763a, 0x76e7, 0x76e5, 0x77a0, 0x779e, 0x779f,
+ 0x77a5, 0x78e8, 0x78da, 0x78ec, 0x78e7, 0x79a6, 0x7a4d, 0x7a4e,
+ 0x7a46, 0x7a4c, 0x7a4b, 0x7aba, 0x7bd9, 0x7c11, 0x7bc9, 0x7be4,
+ 0x7bdb, 0x7be1, 0x7be9, 0x7be6, 0x7cd5, 0x7cd6, 0x7e0a, 0x7e11,
+ 0x7e08, 0x7e1b, 0x7e23, 0x7e1e, 0x7e1d, 0x7e09, 0x7e10, 0x7f79,
+ 0x7fb2, 0x7ff0, 0x7ff1, 0x7fee, 0x8028, 0x81b3, 0x81a9, 0x81a8,
+ 0x81fb, 0x8208, 0x8258, 0x8259, 0x854a, 0x8559, 0x8548, 0x8568,
+ 0x8569, 0x8543, 0x8549, 0x856d, 0x856a, 0x855e, 0x8783, 0x879f,
+ 0x879e, 0x87a2, 0x878d, 0x8861, 0x892a, 0x8932, 0x8925, 0x892b,
+ 0x8921, 0x89aa, 0x89a6, 0x8ae6, 0x8afa, 0x8aeb, 0x8af1, 0x8b00,
+ 0x8adc, 0x8ae7, 0x8aee, 0x8afe, 0x8b01, 0x8b02, 0x8af7, 0x8aed,
+ 0x8af3, 0x8af6, 0x8afc, 0x8c6b, 0x8c6d, 0x8c93, 0x8cf4, 0x8e44,
+ 0x8e31, 0x8e34, 0x8e42, 0x8e39, 0x8e35, 0x8f3b, 0x8f2f, 0x8f38,
+ 0x8f33, 0x8fa8, 0x8fa6, 0x9075, 0x9074, 0x9078, 0x9072, 0x907c,
+ 0x907a, 0x9134, 0x9192, 0x9320, 0x9336, 0x92f8, 0x9333, 0x932f,
+ 0x9322, 0x92fc, 0x932b, 0x9304, 0x931a,
+ /* 0xc0 */
+ 0x9310, 0x9326, 0x9321, 0x9315, 0x932e, 0x9319, 0x95bb, 0x96a7,
+ 0x96a8, 0x96aa, 0x96d5, 0x970e, 0x9711, 0x9716, 0x970d, 0x9713,
+ 0x970f, 0x975b, 0x975c, 0x9766, 0x9798, 0x9830, 0x9838, 0x983b,
+ 0x9837, 0x982d, 0x9839, 0x9824, 0x9910, 0x9928, 0x991e, 0x991b,
+ 0x9921, 0x991a, 0x99ed, 0x99e2, 0x99f1, 0x9ab8, 0x9abc, 0x9afb,
+ 0x9aed, 0x9b28, 0x9b91, 0x9d15, 0x9d23, 0x9d26, 0x9d28, 0x9d12,
+ 0x9d1b, 0x9ed8, 0x9ed4, 0x9f8d, 0x9f9c, 0x512a, 0x511f, 0x5121,
+ 0x5132, 0x52f5, 0x568e, 0x5680, 0x5690, 0x5685, 0x5687, 0x568f,
+ 0x58d5, 0x58d3, 0x58d1, 0x58ce, 0x5b30, 0x5b2a, 0x5b24, 0x5b7a,
+ 0x5c37, 0x5c68, 0x5dbc, 0x5dba, 0x5dbd, 0x5db8, 0x5e6b, 0x5f4c,
+ 0x5fbd, 0x61c9, 0x61c2, 0x61c7, 0x61e6, 0x61cb, 0x6232, 0x6234,
+ 0x64ce, 0x64ca, 0x64d8, 0x64e0, 0x64f0, 0x64e6, 0x64ec, 0x64f1,
+ 0x64e2, 0x64ed, 0x6582, 0x6583, 0x66d9, 0x66d6, 0x6a80, 0x6a94,
+ 0x6a84, 0x6aa2, 0x6a9c, 0x6adb, 0x6aa3, 0x6a7e, 0x6a97, 0x6a90,
+ 0x6aa0, 0x6b5c, 0x6bae, 0x6bda, 0x6c08, 0x6fd8, 0x6ff1, 0x6fdf,
+ 0x6fe0, 0x6fdb, 0x6fe4, 0x6feb, 0x6fef, 0x6f80, 0x6fec, 0x6fe1,
+ 0x6fe9, 0x6fd5, 0x6fee, 0x6ff0, 0x71e7, 0x71df, 0x71ee, 0x71e6,
+ 0x71e5, 0x71ed, 0x71ec, 0x71f4, 0x71e0, 0x7235, 0x7246, 0x7370,
+ 0x7372, 0x74a9, 0x74b0, 0x74a6, 0x74a8, 0x7646, 0x7642, 0x764c,
+ 0x76ea, 0x77b3, 0x77aa, 0x77b0, 0x77ac,
+ /* 0xc1 */
+ 0x77a7, 0x77ad, 0x77ef, 0x78f7, 0x78fa, 0x78f4, 0x78ef, 0x7901,
+ 0x79a7, 0x79aa, 0x7a57, 0x7abf, 0x7c07, 0x7c0d, 0x7bfe, 0x7bf7,
+ 0x7c0c, 0x7be0, 0x7ce0, 0x7cdc, 0x7cde, 0x7ce2, 0x7cdf, 0x7cd9,
+ 0x7cdd, 0x7e2e, 0x7e3e, 0x7e46, 0x7e37, 0x7e32, 0x7e43, 0x7e2b,
+ 0x7e3d, 0x7e31, 0x7e45, 0x7e41, 0x7e34, 0x7e39, 0x7e48, 0x7e35,
+ 0x7e3f, 0x7e2f, 0x7f44, 0x7ff3, 0x7ffc, 0x8071, 0x8072, 0x8070,
+ 0x806f, 0x8073, 0x81c6, 0x81c3, 0x81ba, 0x81c2, 0x81c0, 0x81bf,
+ 0x81bd, 0x81c9, 0x81be, 0x81e8, 0x8209, 0x8271, 0x85aa, 0x8584,
+ 0x857e, 0x859c, 0x8591, 0x8594, 0x85af, 0x859b, 0x8587, 0x85a8,
+ 0x858a, 0x8667, 0x87c0, 0x87d1, 0x87b3, 0x87d2, 0x87c6, 0x87ab,
+ 0x87bb, 0x87ba, 0x87c8, 0x87cb, 0x893b, 0x8936, 0x8944, 0x8938,
+ 0x893d, 0x89ac, 0x8b0e, 0x8b17, 0x8b19, 0x8b1b, 0x8b0a, 0x8b20,
+ 0x8b1d, 0x8b04, 0x8b10, 0x8c41, 0x8c3f, 0x8c73, 0x8cfa, 0x8cfd,
+ 0x8cfc, 0x8cf8, 0x8cfb, 0x8da8, 0x8e49, 0x8e4b, 0x8e48, 0x8e4a,
+ 0x8f44, 0x8f3e, 0x8f42, 0x8f45, 0x8f3f, 0x907f, 0x907d, 0x9084,
+ 0x9081, 0x9082, 0x9080, 0x9139, 0x91a3, 0x919e, 0x919c, 0x934d,
+ 0x9382, 0x9328, 0x9375, 0x934a, 0x9365, 0x934b, 0x9318, 0x937e,
+ 0x936c, 0x935b, 0x9370, 0x935a, 0x9354, 0x95ca, 0x95cb, 0x95cc,
+ 0x95c8, 0x95c6, 0x96b1, 0x96b8, 0x96d6, 0x971c, 0x971e, 0x97a0,
+ 0x97d3, 0x9846, 0x98b6, 0x9935, 0x9a01,
+ /* 0xc2 */
+ 0x99ff, 0x9bae, 0x9bab, 0x9baa, 0x9bad, 0x9d3b, 0x9d3f, 0x9e8b,
+ 0x9ecf, 0x9ede, 0x9edc, 0x9edd, 0x9edb, 0x9f3e, 0x9f4b, 0x53e2,
+ 0x5695, 0x56ae, 0x58d9, 0x58d8, 0x5b38, 0x5f5d, 0x61e3, 0x6233,
+ 0x64f4, 0x64f2, 0x64fe, 0x6506, 0x64fa, 0x64fb, 0x64f7, 0x65b7,
+ 0x66dc, 0x6726, 0x6ab3, 0x6aac, 0x6ac3, 0x6abb, 0x6ab8, 0x6ac2,
+ 0x6aae, 0x6aaf, 0x6b5f, 0x6b78, 0x6baf, 0x7009, 0x700b, 0x6ffe,
+ 0x7006, 0x6ffa, 0x7011, 0x700f, 0x71fb, 0x71fc, 0x71fe, 0x71f8,
+ 0x7377, 0x7375, 0x74a7, 0x74bf, 0x7515, 0x7656, 0x7658, 0x7652,
+ 0x77bd, 0x77bf, 0x77bb, 0x77bc, 0x790e, 0x79ae, 0x7a61, 0x7a62,
+ 0x7a60, 0x7ac4, 0x7ac5, 0x7c2b, 0x7c27, 0x7c2a, 0x7c1e, 0x7c23,
+ 0x7c21, 0x7ce7, 0x7e54, 0x7e55, 0x7e5e, 0x7e5a, 0x7e61, 0x7e52,
+ 0x7e59, 0x7f48, 0x7ff9, 0x7ffb, 0x8077, 0x8076, 0x81cd, 0x81cf,
+ 0x820a, 0x85cf, 0x85a9, 0x85cd, 0x85d0, 0x85c9, 0x85b0, 0x85ba,
+ 0x85b9, 0x85a6, 0x87ef, 0x87ec, 0x87f2, 0x87e0, 0x8986, 0x89b2,
+ 0x89f4, 0x8b28, 0x8b39, 0x8b2c, 0x8b2b, 0x8c50, 0x8d05, 0x8e59,
+ 0x8e63, 0x8e66, 0x8e64, 0x8e5f, 0x8e55, 0x8ec0, 0x8f49, 0x8f4d,
+ 0x9087, 0x9083, 0x9088, 0x91ab, 0x91ac, 0x91d0, 0x9394, 0x938a,
+ 0x9396, 0x93a2, 0x93b3, 0x93ae, 0x93ac, 0x93b0, 0x9398, 0x939a,
+ 0x9397, 0x95d4, 0x95d6, 0x95d0, 0x95d5, 0x96e2, 0x96dc, 0x96d9,
+ 0x96db, 0x96de, 0x9724, 0x97a3, 0x97a6,
+ /* 0xc3 */
+ 0x97ad, 0x97f9, 0x984d, 0x984f, 0x984c, 0x984e, 0x9853, 0x98ba,
+ 0x993e, 0x993f, 0x993d, 0x992e, 0x99a5, 0x9a0e, 0x9ac1, 0x9b03,
+ 0x9b06, 0x9b4f, 0x9b4e, 0x9b4d, 0x9bca, 0x9bc9, 0x9bfd, 0x9bc8,
+ 0x9bc0, 0x9d51, 0x9d5d, 0x9d60, 0x9ee0, 0x9f15, 0x9f2c, 0x5133,
+ 0x56a5, 0x58de, 0x58df, 0x58e2, 0x5bf5, 0x9f90, 0x5eec, 0x61f2,
+ 0x61f7, 0x61f6, 0x61f5, 0x6500, 0x650f, 0x66e0, 0x66dd, 0x6ae5,
+ 0x6add, 0x6ada, 0x6ad3, 0x701b, 0x701f, 0x7028, 0x701a, 0x701d,
+ 0x7015, 0x7018, 0x7206, 0x720d, 0x7258, 0x72a2, 0x7378, 0x737a,
+ 0x74bd, 0x74ca, 0x74e3, 0x7587, 0x7586, 0x765f, 0x7661, 0x77c7,
+ 0x7919, 0x79b1, 0x7a6b, 0x7a69, 0x7c3e, 0x7c3f, 0x7c38, 0x7c3d,
+ 0x7c37, 0x7c40, 0x7e6b, 0x7e6d, 0x7e79, 0x7e69, 0x7e6a, 0x7f85,
+ 0x7e73, 0x7fb6, 0x7fb9, 0x7fb8, 0x81d8, 0x85e9, 0x85dd, 0x85ea,
+ 0x85d5, 0x85e4, 0x85e5, 0x85f7, 0x87fb, 0x8805, 0x880d, 0x87f9,
+ 0x87fe, 0x8960, 0x895f, 0x8956, 0x895e, 0x8b41, 0x8b5c, 0x8b58,
+ 0x8b49, 0x8b5a, 0x8b4e, 0x8b4f, 0x8b46, 0x8b59, 0x8d08, 0x8d0a,
+ 0x8e7c, 0x8e72, 0x8e87, 0x8e76, 0x8e6c, 0x8e7a, 0x8e74, 0x8f54,
+ 0x8f4e, 0x8fad, 0x908a, 0x908b, 0x91b1, 0x91ae, 0x93e1, 0x93d1,
+ 0x93df, 0x93c3, 0x93c8, 0x93dc, 0x93dd, 0x93d6, 0x93e2, 0x93cd,
+ 0x93d8, 0x93e4, 0x93d7, 0x93e8, 0x95dc, 0x96b4, 0x96e3, 0x972a,
+ 0x9727, 0x9761, 0x97dc, 0x97fb, 0x985e,
+ /* 0xc4 */
+ 0x9858, 0x985b, 0x98bc, 0x9945, 0x9949, 0x9a16, 0x9a19, 0x9b0d,
+ 0x9be8, 0x9be7, 0x9bd6, 0x9bdb, 0x9d89, 0x9d61, 0x9d72, 0x9d6a,
+ 0x9d6c, 0x9e92, 0x9e97, 0x9e93, 0x9eb4, 0x52f8, 0x56a8, 0x56b7,
+ 0x56b6, 0x56b4, 0x56bc, 0x58e4, 0x5b40, 0x5b43, 0x5b7d, 0x5bf6,
+ 0x5dc9, 0x61f8, 0x61fa, 0x6518, 0x6514, 0x6519, 0x66e6, 0x6727,
+ 0x6aec, 0x703e, 0x7030, 0x7032, 0x7210, 0x737b, 0x74cf, 0x7662,
+ 0x7665, 0x7926, 0x792a, 0x792c, 0x792b, 0x7ac7, 0x7af6, 0x7c4c,
+ 0x7c43, 0x7c4d, 0x7cef, 0x7cf0, 0x8fae, 0x7e7d, 0x7e7c, 0x7e82,
+ 0x7f4c, 0x8000, 0x81da, 0x8266, 0x85fb, 0x85f9, 0x8611, 0x85fa,
+ 0x8606, 0x860b, 0x8607, 0x860a, 0x8814, 0x8815, 0x8964, 0x89ba,
+ 0x89f8, 0x8b70, 0x8b6c, 0x8b66, 0x8b6f, 0x8b5f, 0x8b6b, 0x8d0f,
+ 0x8d0d, 0x8e89, 0x8e81, 0x8e85, 0x8e82, 0x91b4, 0x91cb, 0x9418,
+ 0x9403, 0x93fd, 0x95e1, 0x9730, 0x98c4, 0x9952, 0x9951, 0x99a8,
+ 0x9a2b, 0x9a30, 0x9a37, 0x9a35, 0x9c13, 0x9c0d, 0x9e79, 0x9eb5,
+ 0x9ee8, 0x9f2f, 0x9f5f, 0x9f63, 0x9f61, 0x5137, 0x5138, 0x56c1,
+ 0x56c0, 0x56c2, 0x5914, 0x5c6c, 0x5dcd, 0x61fc, 0x61fe, 0x651d,
+ 0x651c, 0x6595, 0x66e9, 0x6afb, 0x6b04, 0x6afa, 0x6bb2, 0x704c,
+ 0x721b, 0x72a7, 0x74d6, 0x74d4, 0x7669, 0x77d3, 0x7c50, 0x7e8f,
+ 0x7e8c, 0x7fbc, 0x8617, 0x862d, 0x861a, 0x8823, 0x8822, 0x8821,
+ 0x881f, 0x896a, 0x896c, 0x89bd, 0x8b74,
+ /* 0xc5 */
+ 0x8b77, 0x8b7d, 0x8d13, 0x8e8a, 0x8e8d, 0x8e8b, 0x8f5f, 0x8faf,
+ 0x91ba, 0x942e, 0x9433, 0x9435, 0x943a, 0x9438, 0x9432, 0x942b,
+ 0x95e2, 0x9738, 0x9739, 0x9732, 0x97ff, 0x9867, 0x9865, 0x9957,
+ 0x9a45, 0x9a43, 0x9a40, 0x9a3e, 0x9acf, 0x9b54, 0x9b51, 0x9c2d,
+ 0x9c25, 0x9daf, 0x9db4, 0x9dc2, 0x9db8, 0x9e9d, 0x9eef, 0x9f19,
+ 0x9f5c, 0x9f66, 0x9f67, 0x513c, 0x513b, 0x56c8, 0x56ca, 0x56c9,
+ 0x5b7f, 0x5dd4, 0x5dd2, 0x5f4e, 0x61ff, 0x6524, 0x6b0a, 0x6b61,
+ 0x7051, 0x7058, 0x7380, 0x74e4, 0x758a, 0x766e, 0x766c, 0x79b3,
+ 0x7c60, 0x7c5f, 0x807e, 0x807d, 0x81df, 0x8972, 0x896f, 0x89fc,
+ 0x8b80, 0x8d16, 0x8d17, 0x8e91, 0x8e93, 0x8f61, 0x9148, 0x9444,
+ 0x9451, 0x9452, 0x973d, 0x973e, 0x97c3, 0x97c1, 0x986b, 0x9955,
+ 0x9a55, 0x9a4d, 0x9ad2, 0x9b1a, 0x9c49, 0x9c31, 0x9c3e, 0x9c3b,
+ 0x9dd3, 0x9dd7, 0x9f34, 0x9f6c, 0x9f6a, 0x9f94, 0x56cc, 0x5dd6,
+ 0x6200, 0x6523, 0x652b, 0x652a, 0x66ec, 0x6b10, 0x74da, 0x7aca,
+ 0x7c64, 0x7c63, 0x7c65, 0x7e93, 0x7e96, 0x7e94, 0x81e2, 0x8638,
+ 0x863f, 0x8831, 0x8b8a, 0x9090, 0x908f, 0x9463, 0x9460, 0x9464,
+ 0x9768, 0x986f, 0x995c, 0x9a5a, 0x9a5b, 0x9a57, 0x9ad3, 0x9ad4,
+ 0x9ad1, 0x9c54, 0x9c57, 0x9c56, 0x9de5, 0x9e9f, 0x9ef4, 0x56d1,
+ 0x58e9, 0x652c, 0x705e, 0x7671, 0x7672, 0x77d7, 0x7f50, 0x7f88,
+ 0x8836, 0x8839, 0x8862, 0x8b93, 0x8b92,
+ /* 0xc6 */
+ 0x8b96, 0x8277, 0x8d1b, 0x91c0, 0x946a, 0x9742, 0x9748, 0x9744,
+ 0x97c6, 0x9870, 0x9a5f, 0x9b22, 0x9b58, 0x9c5f, 0x9df9, 0x9dfa,
+ 0x9e7c, 0x9e7d, 0x9f07, 0x9f77, 0x9f72, 0x5ef3, 0x6b16, 0x7063,
+ 0x7c6c, 0x7c6e, 0x883b, 0x89c0, 0x8ea1, 0x91c1, 0x9472, 0x9470,
+ 0x9871, 0x995e, 0x9ad6, 0x9b23, 0x9ecc, 0x7064, 0x77da, 0x8b9a,
+ 0x9477, 0x97c9, 0x9a62, 0x9a65, 0x7e9c, 0x8b9c, 0x8eaa, 0x91c5,
+ 0x947d, 0x947e, 0x947c, 0x9c77, 0x9c78, 0x9ef7, 0x8c54, 0x947f,
+ 0x9e1a, 0x7228, 0x9a6a, 0x9b31, 0x9e1b, 0x9e1e, 0x7c72, 0x30fe,
+ 0x309d, 0x309e, 0x3005, 0x3041, 0x3042, 0x3043, 0x3044, 0x3045,
+ 0x3046, 0x3047, 0x3048, 0x3049, 0x304a, 0x304b, 0x304c, 0x304d,
+ 0x304e, 0x304f, 0x3050, 0x3051, 0x3052, 0x3053, 0x3054, 0x3055,
+ 0x3056, 0x3057, 0x3058, 0x3059, 0x305a, 0x305b, 0x305c, 0x305d,
+ 0x305e, 0x305f, 0x3060, 0x3061, 0x3062, 0x3063, 0x3064, 0x3065,
+ 0x3066, 0x3067, 0x3068, 0x3069, 0x306a, 0x306b, 0x306c, 0x306d,
+ 0x306e, 0x306f, 0x3070, 0x3071, 0x3072, 0x3073, 0x3074, 0x3075,
+ 0x3076, 0x3077, 0x3078, 0x3079, 0x307a, 0x307b, 0x307c, 0x307d,
+ 0x307e, 0x307f, 0x3080, 0x3081, 0x3082, 0x3083, 0x3084, 0x3085,
+ 0x3086, 0x3087, 0x3088, 0x3089, 0x308a, 0x308b, 0x308c, 0x308d,
+ 0x308e, 0x308f, 0x3090, 0x3091, 0x3092, 0x3093, 0x30a1, 0x30a2,
+ 0x30a3, 0x30a4, 0x30a5, 0x30a6, 0x30a7,
+ /* 0xc7 */
+ 0x30a8, 0x30a9, 0x30aa, 0x30ab, 0x30ac, 0x30ad, 0x30ae, 0x30af,
+ 0x30b0, 0x30b1, 0x30b2, 0x30b3, 0x30b4, 0x30b5, 0x30b6, 0x30b7,
+ 0x30b8, 0x30b9, 0x30ba, 0x30bb, 0x30bc, 0x30bd, 0x30be, 0x30bf,
+ 0x30c0, 0x30c1, 0x30c2, 0x30c3, 0x30c4, 0x30c5, 0x30c6, 0x30c7,
+ 0x30c8, 0x30c9, 0x30ca, 0x30cb, 0x30cc, 0x30cd, 0x30ce, 0x30cf,
+ 0x30d0, 0x30d1, 0x30d2, 0x30d3, 0x30d4, 0x30d5, 0x30d6, 0x30d7,
+ 0x30d8, 0x30d9, 0x30da, 0x30db, 0x30dc, 0x30dd, 0x30de, 0x30df,
+ 0x30e0, 0x30e1, 0x30e2, 0x30e3, 0x30e4, 0x30e5, 0x30e6, 0x30e7,
+ 0x30e8, 0x30e9, 0x30ea, 0x30eb, 0x30ec, 0x30ed, 0x30ee, 0x30ef,
+ 0x30f0, 0x30f1, 0x30f2, 0x30f3, 0x30f4, 0x30f5, 0x30f6, 0x0414,
+ 0x0415, 0x0401, 0x0416, 0x0417, 0x0418, 0x0419, 0x041a, 0x041b,
+ 0x041c, 0x0423, 0x0424, 0x0425, 0x0426, 0x0427, 0x0428, 0x0429,
+ 0x042a, 0x042b, 0x042c, 0x042d, 0x042e, 0x042f, 0x0430, 0x0431,
+ 0x0432, 0x0433, 0x0434, 0x0435, 0x0451, 0x0436, 0x0437, 0x0438,
+ 0x0439, 0x043a, 0x043b, 0x043c, 0x043d, 0x043e, 0x043f, 0x0440,
+ 0x0441, 0x0442, 0x0443, 0x0444, 0x0445, 0x0446, 0x0447, 0x0448,
+ 0x0449, 0x044a, 0x044b, 0x044c, 0x044d, 0x044e, 0x044f, 0x2460,
+ 0x2461, 0x2462, 0x2463, 0x2464, 0x2465, 0x2466, 0x2467, 0x2468,
+ 0x2469, 0x2474, 0x2475, 0x2476, 0x2477, 0x2478, 0x2479, 0x247a,
+ 0x247b, 0x247c, 0x247d,
+};
+static const unsigned short big5_2uni_pagec9[7652] = {
+ /* 0xc9 */
+ 0x4e42, 0x4e5c, 0x51f5, 0x531a, 0x5382, 0x4e07, 0x4e0c, 0x4e47,
+ 0x4e8d, 0x56d7, 0xfa0c, 0x5c6e, 0x5f73, 0x4e0f, 0x5187, 0x4e0e,
+ 0x4e2e, 0x4e93, 0x4ec2, 0x4ec9, 0x4ec8, 0x5198, 0x52fc, 0x536c,
+ 0x53b9, 0x5720, 0x5903, 0x592c, 0x5c10, 0x5dff, 0x65e1, 0x6bb3,
+ 0x6bcc, 0x6c14, 0x723f, 0x4e31, 0x4e3c, 0x4ee8, 0x4edc, 0x4ee9,
+ 0x4ee1, 0x4edd, 0x4eda, 0x520c, 0x531c, 0x534c, 0x5722, 0x5723,
+ 0x5917, 0x592f, 0x5b81, 0x5b84, 0x5c12, 0x5c3b, 0x5c74, 0x5c73,
+ 0x5e04, 0x5e80, 0x5e82, 0x5fc9, 0x6209, 0x6250, 0x6c15, 0x6c36,
+ 0x6c43, 0x6c3f, 0x6c3b, 0x72ae, 0x72b0, 0x738a, 0x79b8, 0x808a,
+ 0x961e, 0x4f0e, 0x4f18, 0x4f2c, 0x4ef5, 0x4f14, 0x4ef1, 0x4f00,
+ 0x4ef7, 0x4f08, 0x4f1d, 0x4f02, 0x4f05, 0x4f22, 0x4f13, 0x4f04,
+ 0x4ef4, 0x4f12, 0x51b1, 0x5213, 0x5209, 0x5210, 0x52a6, 0x5322,
+ 0x531f, 0x534d, 0x538a, 0x5407, 0x56e1, 0x56df, 0x572e, 0x572a,
+ 0x5734, 0x593c, 0x5980, 0x597c, 0x5985, 0x597b, 0x597e, 0x5977,
+ 0x597f, 0x5b56, 0x5c15, 0x5c25, 0x5c7c, 0x5c7a, 0x5c7b, 0x5c7e,
+ 0x5ddf, 0x5e75, 0x5e84, 0x5f02, 0x5f1a, 0x5f74, 0x5fd5, 0x5fd4,
+ 0x5fcf, 0x625c, 0x625e, 0x6264, 0x6261, 0x6266, 0x6262, 0x6259,
+ 0x6260, 0x625a, 0x6265, 0x65ef, 0x65ee, 0x673e, 0x6739, 0x6738,
+ 0x673b, 0x673a, 0x673f, 0x673c, 0x6733, 0x6c18, 0x6c46, 0x6c52,
+ 0x6c5c, 0x6c4f, 0x6c4a, 0x6c54, 0x6c4b,
+ /* 0xca */
+ 0x6c4c, 0x7071, 0x725e, 0x72b4, 0x72b5, 0x738e, 0x752a, 0x767f,
+ 0x7a75, 0x7f51, 0x8278, 0x827c, 0x8280, 0x827d, 0x827f, 0x864d,
+ 0x897e, 0x9099, 0x9097, 0x9098, 0x909b, 0x9094, 0x9622, 0x9624,
+ 0x9620, 0x9623, 0x4f56, 0x4f3b, 0x4f62, 0x4f49, 0x4f53, 0x4f64,
+ 0x4f3e, 0x4f67, 0x4f52, 0x4f5f, 0x4f41, 0x4f58, 0x4f2d, 0x4f33,
+ 0x4f3f, 0x4f61, 0x518f, 0x51b9, 0x521c, 0x521e, 0x5221, 0x52ad,
+ 0x52ae, 0x5309, 0x5363, 0x5372, 0x538e, 0x538f, 0x5430, 0x5437,
+ 0x542a, 0x5454, 0x5445, 0x5419, 0x541c, 0x5425, 0x5418, 0x543d,
+ 0x544f, 0x5441, 0x5428, 0x5424, 0x5447, 0x56ee, 0x56e7, 0x56e5,
+ 0x5741, 0x5745, 0x574c, 0x5749, 0x574b, 0x5752, 0x5906, 0x5940,
+ 0x59a6, 0x5998, 0x59a0, 0x5997, 0x598e, 0x59a2, 0x5990, 0x598f,
+ 0x59a7, 0x59a1, 0x5b8e, 0x5b92, 0x5c28, 0x5c2a, 0x5c8d, 0x5c8f,
+ 0x5c88, 0x5c8b, 0x5c89, 0x5c92, 0x5c8a, 0x5c86, 0x5c93, 0x5c95,
+ 0x5de0, 0x5e0a, 0x5e0e, 0x5e8b, 0x5e89, 0x5e8c, 0x5e88, 0x5e8d,
+ 0x5f05, 0x5f1d, 0x5f78, 0x5f76, 0x5fd2, 0x5fd1, 0x5fd0, 0x5fed,
+ 0x5fe8, 0x5fee, 0x5ff3, 0x5fe1, 0x5fe4, 0x5fe3, 0x5ffa, 0x5fef,
+ 0x5ff7, 0x5ffb, 0x6000, 0x5ff4, 0x623a, 0x6283, 0x628c, 0x628e,
+ 0x628f, 0x6294, 0x6287, 0x6271, 0x627b, 0x627a, 0x6270, 0x6281,
+ 0x6288, 0x6277, 0x627d, 0x6272, 0x6274, 0x6537, 0x65f0, 0x65f4,
+ 0x65f3, 0x65f2, 0x65f5, 0x6745, 0x6747,
+ /* 0xcb */
+ 0x6759, 0x6755, 0x674c, 0x6748, 0x675d, 0x674d, 0x675a, 0x674b,
+ 0x6bd0, 0x6c19, 0x6c1a, 0x6c78, 0x6c67, 0x6c6b, 0x6c84, 0x6c8b,
+ 0x6c8f, 0x6c71, 0x6c6f, 0x6c69, 0x6c9a, 0x6c6d, 0x6c87, 0x6c95,
+ 0x6c9c, 0x6c66, 0x6c73, 0x6c65, 0x6c7b, 0x6c8e, 0x7074, 0x707a,
+ 0x7263, 0x72bf, 0x72bd, 0x72c3, 0x72c6, 0x72c1, 0x72ba, 0x72c5,
+ 0x7395, 0x7397, 0x7393, 0x7394, 0x7392, 0x753a, 0x7539, 0x7594,
+ 0x7595, 0x7681, 0x793d, 0x8034, 0x8095, 0x8099, 0x8090, 0x8092,
+ 0x809c, 0x8290, 0x828f, 0x8285, 0x828e, 0x8291, 0x8293, 0x828a,
+ 0x8283, 0x8284, 0x8c78, 0x8fc9, 0x8fbf, 0x909f, 0x90a1, 0x90a5,
+ 0x909e, 0x90a7, 0x90a0, 0x9630, 0x9628, 0x962f, 0x962d, 0x4e33,
+ 0x4f98, 0x4f7c, 0x4f85, 0x4f7d, 0x4f80, 0x4f87, 0x4f76, 0x4f74,
+ 0x4f89, 0x4f84, 0x4f77, 0x4f4c, 0x4f97, 0x4f6a, 0x4f9a, 0x4f79,
+ 0x4f81, 0x4f78, 0x4f90, 0x4f9c, 0x4f94, 0x4f9e, 0x4f92, 0x4f82,
+ 0x4f95, 0x4f6b, 0x4f6e, 0x519e, 0x51bc, 0x51be, 0x5235, 0x5232,
+ 0x5233, 0x5246, 0x5231, 0x52bc, 0x530a, 0x530b, 0x533c, 0x5392,
+ 0x5394, 0x5487, 0x547f, 0x5481, 0x5491, 0x5482, 0x5488, 0x546b,
+ 0x547a, 0x547e, 0x5465, 0x546c, 0x5474, 0x5466, 0x548d, 0x546f,
+ 0x5461, 0x5460, 0x5498, 0x5463, 0x5467, 0x5464, 0x56f7, 0x56f9,
+ 0x576f, 0x5772, 0x576d, 0x576b, 0x5771, 0x5770, 0x5776, 0x5780,
+ 0x5775, 0x577b, 0x5773, 0x5774, 0x5762,
+ /* 0xcc */
+ 0x5768, 0x577d, 0x590c, 0x5945, 0x59b5, 0x59ba, 0x59cf, 0x59ce,
+ 0x59b2, 0x59cc, 0x59c1, 0x59b6, 0x59bc, 0x59c3, 0x59d6, 0x59b1,
+ 0x59bd, 0x59c0, 0x59c8, 0x59b4, 0x59c7, 0x5b62, 0x5b65, 0x5b93,
+ 0x5b95, 0x5c44, 0x5c47, 0x5cae, 0x5ca4, 0x5ca0, 0x5cb5, 0x5caf,
+ 0x5ca8, 0x5cac, 0x5c9f, 0x5ca3, 0x5cad, 0x5ca2, 0x5caa, 0x5ca7,
+ 0x5c9d, 0x5ca5, 0x5cb6, 0x5cb0, 0x5ca6, 0x5e17, 0x5e14, 0x5e19,
+ 0x5f28, 0x5f22, 0x5f23, 0x5f24, 0x5f54, 0x5f82, 0x5f7e, 0x5f7d,
+ 0x5fde, 0x5fe5, 0x602d, 0x6026, 0x6019, 0x6032, 0x600b, 0x6034,
+ 0x600a, 0x6017, 0x6033, 0x601a, 0x601e, 0x602c, 0x6022, 0x600d,
+ 0x6010, 0x602e, 0x6013, 0x6011, 0x600c, 0x6009, 0x601c, 0x6214,
+ 0x623d, 0x62ad, 0x62b4, 0x62d1, 0x62be, 0x62aa, 0x62b6, 0x62ca,
+ 0x62ae, 0x62b3, 0x62af, 0x62bb, 0x62a9, 0x62b0, 0x62b8, 0x653d,
+ 0x65a8, 0x65bb, 0x6609, 0x65fc, 0x6604, 0x6612, 0x6608, 0x65fb,
+ 0x6603, 0x660b, 0x660d, 0x6605, 0x65fd, 0x6611, 0x6610, 0x66f6,
+ 0x670a, 0x6785, 0x676c, 0x678e, 0x6792, 0x6776, 0x677b, 0x6798,
+ 0x6786, 0x6784, 0x6774, 0x678d, 0x678c, 0x677a, 0x679f, 0x6791,
+ 0x6799, 0x6783, 0x677d, 0x6781, 0x6778, 0x6779, 0x6794, 0x6b25,
+ 0x6b80, 0x6b7e, 0x6bde, 0x6c1d, 0x6c93, 0x6cec, 0x6ceb, 0x6cee,
+ 0x6cd9, 0x6cb6, 0x6cd4, 0x6cad, 0x6ce7, 0x6cb7, 0x6cd0, 0x6cc2,
+ 0x6cba, 0x6cc3, 0x6cc6, 0x6ced, 0x6cf2,
+ /* 0xcd */
+ 0x6cd2, 0x6cdd, 0x6cb4, 0x6c8a, 0x6c9d, 0x6c80, 0x6cde, 0x6cc0,
+ 0x6d30, 0x6ccd, 0x6cc7, 0x6cb0, 0x6cf9, 0x6ccf, 0x6ce9, 0x6cd1,
+ 0x7094, 0x7098, 0x7085, 0x7093, 0x7086, 0x7084, 0x7091, 0x7096,
+ 0x7082, 0x709a, 0x7083, 0x726a, 0x72d6, 0x72cb, 0x72d8, 0x72c9,
+ 0x72dc, 0x72d2, 0x72d4, 0x72da, 0x72cc, 0x72d1, 0x73a4, 0x73a1,
+ 0x73ad, 0x73a6, 0x73a2, 0x73a0, 0x73ac, 0x739d, 0x74dd, 0x74e8,
+ 0x753f, 0x7540, 0x753e, 0x758c, 0x7598, 0x76af, 0x76f3, 0x76f1,
+ 0x76f0, 0x76f5, 0x77f8, 0x77fc, 0x77f9, 0x77fb, 0x77fa, 0x77f7,
+ 0x7942, 0x793f, 0x79c5, 0x7a78, 0x7a7b, 0x7afb, 0x7c75, 0x7cfd,
+ 0x8035, 0x808f, 0x80ae, 0x80a3, 0x80b8, 0x80b5, 0x80ad, 0x8220,
+ 0x82a0, 0x82c0, 0x82ab, 0x829a, 0x8298, 0x829b, 0x82b5, 0x82a7,
+ 0x82ae, 0x82bc, 0x829e, 0x82ba, 0x82b4, 0x82a8, 0x82a1, 0x82a9,
+ 0x82c2, 0x82a4, 0x82c3, 0x82b6, 0x82a2, 0x8670, 0x866f, 0x866d,
+ 0x866e, 0x8c56, 0x8fd2, 0x8fcb, 0x8fd3, 0x8fcd, 0x8fd6, 0x8fd5,
+ 0x8fd7, 0x90b2, 0x90b4, 0x90af, 0x90b3, 0x90b0, 0x9639, 0x963d,
+ 0x963c, 0x963a, 0x9643, 0x4fcd, 0x4fc5, 0x4fd3, 0x4fb2, 0x4fc9,
+ 0x4fcb, 0x4fc1, 0x4fd4, 0x4fdc, 0x4fd9, 0x4fbb, 0x4fb3, 0x4fdb,
+ 0x4fc7, 0x4fd6, 0x4fba, 0x4fc0, 0x4fb9, 0x4fec, 0x5244, 0x5249,
+ 0x52c0, 0x52c2, 0x533d, 0x537c, 0x5397, 0x5396, 0x5399, 0x5398,
+ 0x54ba, 0x54a1, 0x54ad, 0x54a5, 0x54cf,
+ /* 0xce */
+ 0x54c3, 0x830d, 0x54b7, 0x54ae, 0x54d6, 0x54b6, 0x54c5, 0x54c6,
+ 0x54a0, 0x5470, 0x54bc, 0x54a2, 0x54be, 0x5472, 0x54de, 0x54b0,
+ 0x57b5, 0x579e, 0x579f, 0x57a4, 0x578c, 0x5797, 0x579d, 0x579b,
+ 0x5794, 0x5798, 0x578f, 0x5799, 0x57a5, 0x579a, 0x5795, 0x58f4,
+ 0x590d, 0x5953, 0x59e1, 0x59de, 0x59ee, 0x5a00, 0x59f1, 0x59dd,
+ 0x59fa, 0x59fd, 0x59fc, 0x59f6, 0x59e4, 0x59f2, 0x59f7, 0x59db,
+ 0x59e9, 0x59f3, 0x59f5, 0x59e0, 0x59fe, 0x59f4, 0x59ed, 0x5ba8,
+ 0x5c4c, 0x5cd0, 0x5cd8, 0x5ccc, 0x5cd7, 0x5ccb, 0x5cdb, 0x5cde,
+ 0x5cda, 0x5cc9, 0x5cc7, 0x5cca, 0x5cd6, 0x5cd3, 0x5cd4, 0x5ccf,
+ 0x5cc8, 0x5cc6, 0x5cce, 0x5cdf, 0x5cf8, 0x5df9, 0x5e21, 0x5e22,
+ 0x5e23, 0x5e20, 0x5e24, 0x5eb0, 0x5ea4, 0x5ea2, 0x5e9b, 0x5ea3,
+ 0x5ea5, 0x5f07, 0x5f2e, 0x5f56, 0x5f86, 0x6037, 0x6039, 0x6054,
+ 0x6072, 0x605e, 0x6045, 0x6053, 0x6047, 0x6049, 0x605b, 0x604c,
+ 0x6040, 0x6042, 0x605f, 0x6024, 0x6044, 0x6058, 0x6066, 0x606e,
+ 0x6242, 0x6243, 0x62cf, 0x630d, 0x630b, 0x62f5, 0x630e, 0x6303,
+ 0x62eb, 0x62f9, 0x630f, 0x630c, 0x62f8, 0x62f6, 0x6300, 0x6313,
+ 0x6314, 0x62fa, 0x6315, 0x62fb, 0x62f0, 0x6541, 0x6543, 0x65aa,
+ 0x65bf, 0x6636, 0x6621, 0x6632, 0x6635, 0x661c, 0x6626, 0x6622,
+ 0x6633, 0x662b, 0x663a, 0x661d, 0x6634, 0x6639, 0x662e, 0x670f,
+ 0x6710, 0x67c1, 0x67f2, 0x67c8, 0x67ba,
+ /* 0xcf */
+ 0x67dc, 0x67bb, 0x67f8, 0x67d8, 0x67c0, 0x67b7, 0x67c5, 0x67eb,
+ 0x67e4, 0x67df, 0x67b5, 0x67cd, 0x67b3, 0x67f7, 0x67f6, 0x67ee,
+ 0x67e3, 0x67c2, 0x67b9, 0x67ce, 0x67e7, 0x67f0, 0x67b2, 0x67fc,
+ 0x67c6, 0x67ed, 0x67cc, 0x67ae, 0x67e6, 0x67db, 0x67fa, 0x67c9,
+ 0x67ca, 0x67c3, 0x67ea, 0x67cb, 0x6b28, 0x6b82, 0x6b84, 0x6bb6,
+ 0x6bd6, 0x6bd8, 0x6be0, 0x6c20, 0x6c21, 0x6d28, 0x6d34, 0x6d2d,
+ 0x6d1f, 0x6d3c, 0x6d3f, 0x6d12, 0x6d0a, 0x6cda, 0x6d33, 0x6d04,
+ 0x6d19, 0x6d3a, 0x6d1a, 0x6d11, 0x6d00, 0x6d1d, 0x6d42, 0x6d01,
+ 0x6d18, 0x6d37, 0x6d03, 0x6d0f, 0x6d40, 0x6d07, 0x6d20, 0x6d2c,
+ 0x6d08, 0x6d22, 0x6d09, 0x6d10, 0x70b7, 0x709f, 0x70be, 0x70b1,
+ 0x70b0, 0x70a1, 0x70b4, 0x70b5, 0x70a9, 0x7241, 0x7249, 0x724a,
+ 0x726c, 0x7270, 0x7273, 0x726e, 0x72ca, 0x72e4, 0x72e8, 0x72eb,
+ 0x72df, 0x72ea, 0x72e6, 0x72e3, 0x7385, 0x73cc, 0x73c2, 0x73c8,
+ 0x73c5, 0x73b9, 0x73b6, 0x73b5, 0x73b4, 0x73eb, 0x73bf, 0x73c7,
+ 0x73be, 0x73c3, 0x73c6, 0x73b8, 0x73cb, 0x74ec, 0x74ee, 0x752e,
+ 0x7547, 0x7548, 0x75a7, 0x75aa, 0x7679, 0x76c4, 0x7708, 0x7703,
+ 0x7704, 0x7705, 0x770a, 0x76f7, 0x76fb, 0x76fa, 0x77e7, 0x77e8,
+ 0x7806, 0x7811, 0x7812, 0x7805, 0x7810, 0x780f, 0x780e, 0x7809,
+ 0x7803, 0x7813, 0x794a, 0x794c, 0x794b, 0x7945, 0x7944, 0x79d5,
+ 0x79cd, 0x79cf, 0x79d6, 0x79ce, 0x7a80,
+ /* 0xd0 */
+ 0x7a7e, 0x7ad1, 0x7b00, 0x7b01, 0x7c7a, 0x7c78, 0x7c79, 0x7c7f,
+ 0x7c80, 0x7c81, 0x7d03, 0x7d08, 0x7d01, 0x7f58, 0x7f91, 0x7f8d,
+ 0x7fbe, 0x8007, 0x800e, 0x800f, 0x8014, 0x8037, 0x80d8, 0x80c7,
+ 0x80e0, 0x80d1, 0x80c8, 0x80c2, 0x80d0, 0x80c5, 0x80e3, 0x80d9,
+ 0x80dc, 0x80ca, 0x80d5, 0x80c9, 0x80cf, 0x80d7, 0x80e6, 0x80cd,
+ 0x81ff, 0x8221, 0x8294, 0x82d9, 0x82fe, 0x82f9, 0x8307, 0x82e8,
+ 0x8300, 0x82d5, 0x833a, 0x82eb, 0x82d6, 0x82f4, 0x82ec, 0x82e1,
+ 0x82f2, 0x82f5, 0x830c, 0x82fb, 0x82f6, 0x82f0, 0x82ea, 0x82e4,
+ 0x82e0, 0x82fa, 0x82f3, 0x82ed, 0x8677, 0x8674, 0x867c, 0x8673,
+ 0x8841, 0x884e, 0x8867, 0x886a, 0x8869, 0x89d3, 0x8a04, 0x8a07,
+ 0x8d72, 0x8fe3, 0x8fe1, 0x8fee, 0x8fe0, 0x90f1, 0x90bd, 0x90bf,
+ 0x90d5, 0x90c5, 0x90be, 0x90c7, 0x90cb, 0x90c8, 0x91d4, 0x91d3,
+ 0x9654, 0x964f, 0x9651, 0x9653, 0x964a, 0x964e, 0x501e, 0x5005,
+ 0x5007, 0x5013, 0x5022, 0x5030, 0x501b, 0x4ff5, 0x4ff4, 0x5033,
+ 0x5037, 0x502c, 0x4ff6, 0x4ff7, 0x5017, 0x501c, 0x5020, 0x5027,
+ 0x5035, 0x502f, 0x5031, 0x500e, 0x515a, 0x5194, 0x5193, 0x51ca,
+ 0x51c4, 0x51c5, 0x51c8, 0x51ce, 0x5261, 0x525a, 0x5252, 0x525e,
+ 0x525f, 0x5255, 0x5262, 0x52cd, 0x530e, 0x539e, 0x5526, 0x54e2,
+ 0x5517, 0x5512, 0x54e7, 0x54f3, 0x54e4, 0x551a, 0x54ff, 0x5504,
+ 0x5508, 0x54eb, 0x5511, 0x5505, 0x54f1,
+ /* 0xd1 */
+ 0x550a, 0x54fb, 0x54f7, 0x54f8, 0x54e0, 0x550e, 0x5503, 0x550b,
+ 0x5701, 0x5702, 0x57cc, 0x5832, 0x57d5, 0x57d2, 0x57ba, 0x57c6,
+ 0x57bd, 0x57bc, 0x57b8, 0x57b6, 0x57bf, 0x57c7, 0x57d0, 0x57b9,
+ 0x57c1, 0x590e, 0x594a, 0x5a19, 0x5a16, 0x5a2d, 0x5a2e, 0x5a15,
+ 0x5a0f, 0x5a17, 0x5a0a, 0x5a1e, 0x5a33, 0x5b6c, 0x5ba7, 0x5bad,
+ 0x5bac, 0x5c03, 0x5c56, 0x5c54, 0x5cec, 0x5cff, 0x5cee, 0x5cf1,
+ 0x5cf7, 0x5d00, 0x5cf9, 0x5e29, 0x5e28, 0x5ea8, 0x5eae, 0x5eaa,
+ 0x5eac, 0x5f33, 0x5f30, 0x5f67, 0x605d, 0x605a, 0x6067, 0x6041,
+ 0x60a2, 0x6088, 0x6080, 0x6092, 0x6081, 0x609d, 0x6083, 0x6095,
+ 0x609b, 0x6097, 0x6087, 0x609c, 0x608e, 0x6219, 0x6246, 0x62f2,
+ 0x6310, 0x6356, 0x632c, 0x6344, 0x6345, 0x6336, 0x6343, 0x63e4,
+ 0x6339, 0x634b, 0x634a, 0x633c, 0x6329, 0x6341, 0x6334, 0x6358,
+ 0x6354, 0x6359, 0x632d, 0x6347, 0x6333, 0x635a, 0x6351, 0x6338,
+ 0x6357, 0x6340, 0x6348, 0x654a, 0x6546, 0x65c6, 0x65c3, 0x65c4,
+ 0x65c2, 0x664a, 0x665f, 0x6647, 0x6651, 0x6712, 0x6713, 0x681f,
+ 0x681a, 0x6849, 0x6832, 0x6833, 0x683b, 0x684b, 0x684f, 0x6816,
+ 0x6831, 0x681c, 0x6835, 0x682b, 0x682d, 0x682f, 0x684e, 0x6844,
+ 0x6834, 0x681d, 0x6812, 0x6814, 0x6826, 0x6828, 0x682e, 0x684d,
+ 0x683a, 0x6825, 0x6820, 0x6b2c, 0x6b2f, 0x6b2d, 0x6b31, 0x6b34,
+ 0x6b6d, 0x8082, 0x6b88, 0x6be6, 0x6be4,
+ /* 0xd2 */
+ 0x6be8, 0x6be3, 0x6be2, 0x6be7, 0x6c25, 0x6d7a, 0x6d63, 0x6d64,
+ 0x6d76, 0x6d0d, 0x6d61, 0x6d92, 0x6d58, 0x6d62, 0x6d6d, 0x6d6f,
+ 0x6d91, 0x6d8d, 0x6def, 0x6d7f, 0x6d86, 0x6d5e, 0x6d67, 0x6d60,
+ 0x6d97, 0x6d70, 0x6d7c, 0x6d5f, 0x6d82, 0x6d98, 0x6d2f, 0x6d68,
+ 0x6d8b, 0x6d7e, 0x6d80, 0x6d84, 0x6d16, 0x6d83, 0x6d7b, 0x6d7d,
+ 0x6d75, 0x6d90, 0x70dc, 0x70d3, 0x70d1, 0x70dd, 0x70cb, 0x7f39,
+ 0x70e2, 0x70d7, 0x70d2, 0x70de, 0x70e0, 0x70d4, 0x70cd, 0x70c5,
+ 0x70c6, 0x70c7, 0x70da, 0x70ce, 0x70e1, 0x7242, 0x7278, 0x7277,
+ 0x7276, 0x7300, 0x72fa, 0x72f4, 0x72fe, 0x72f6, 0x72f3, 0x72fb,
+ 0x7301, 0x73d3, 0x73d9, 0x73e5, 0x73d6, 0x73bc, 0x73e7, 0x73e3,
+ 0x73e9, 0x73dc, 0x73d2, 0x73db, 0x73d4, 0x73dd, 0x73da, 0x73d7,
+ 0x73d8, 0x73e8, 0x74de, 0x74df, 0x74f4, 0x74f5, 0x7521, 0x755b,
+ 0x755f, 0x75b0, 0x75c1, 0x75bb, 0x75c4, 0x75c0, 0x75bf, 0x75b6,
+ 0x75ba, 0x768a, 0x76c9, 0x771d, 0x771b, 0x7710, 0x7713, 0x7712,
+ 0x7723, 0x7711, 0x7715, 0x7719, 0x771a, 0x7722, 0x7727, 0x7823,
+ 0x782c, 0x7822, 0x7835, 0x782f, 0x7828, 0x782e, 0x782b, 0x7821,
+ 0x7829, 0x7833, 0x782a, 0x7831, 0x7954, 0x795b, 0x794f, 0x795c,
+ 0x7953, 0x7952, 0x7951, 0x79eb, 0x79ec, 0x79e0, 0x79ee, 0x79ed,
+ 0x79ea, 0x79dc, 0x79de, 0x79dd, 0x7a86, 0x7a89, 0x7a85, 0x7a8b,
+ 0x7a8c, 0x7a8a, 0x7a87, 0x7ad8, 0x7b10,
+ /* 0xd3 */
+ 0x7b04, 0x7b13, 0x7b05, 0x7b0f, 0x7b08, 0x7b0a, 0x7b0e, 0x7b09,
+ 0x7b12, 0x7c84, 0x7c91, 0x7c8a, 0x7c8c, 0x7c88, 0x7c8d, 0x7c85,
+ 0x7d1e, 0x7d1d, 0x7d11, 0x7d0e, 0x7d18, 0x7d16, 0x7d13, 0x7d1f,
+ 0x7d12, 0x7d0f, 0x7d0c, 0x7f5c, 0x7f61, 0x7f5e, 0x7f60, 0x7f5d,
+ 0x7f5b, 0x7f96, 0x7f92, 0x7fc3, 0x7fc2, 0x7fc0, 0x8016, 0x803e,
+ 0x8039, 0x80fa, 0x80f2, 0x80f9, 0x80f5, 0x8101, 0x80fb, 0x8100,
+ 0x8201, 0x822f, 0x8225, 0x8333, 0x832d, 0x8344, 0x8319, 0x8351,
+ 0x8325, 0x8356, 0x833f, 0x8341, 0x8326, 0x831c, 0x8322, 0x8342,
+ 0x834e, 0x831b, 0x832a, 0x8308, 0x833c, 0x834d, 0x8316, 0x8324,
+ 0x8320, 0x8337, 0x832f, 0x8329, 0x8347, 0x8345, 0x834c, 0x8353,
+ 0x831e, 0x832c, 0x834b, 0x8327, 0x8348, 0x8653, 0x8652, 0x86a2,
+ 0x86a8, 0x8696, 0x868d, 0x8691, 0x869e, 0x8687, 0x8697, 0x8686,
+ 0x868b, 0x869a, 0x8685, 0x86a5, 0x8699, 0x86a1, 0x86a7, 0x8695,
+ 0x8698, 0x868e, 0x869d, 0x8690, 0x8694, 0x8843, 0x8844, 0x886d,
+ 0x8875, 0x8876, 0x8872, 0x8880, 0x8871, 0x887f, 0x886f, 0x8883,
+ 0x887e, 0x8874, 0x887c, 0x8a12, 0x8c47, 0x8c57, 0x8c7b, 0x8ca4,
+ 0x8ca3, 0x8d76, 0x8d78, 0x8db5, 0x8db7, 0x8db6, 0x8ed1, 0x8ed3,
+ 0x8ffe, 0x8ff5, 0x9002, 0x8fff, 0x8ffb, 0x9004, 0x8ffc, 0x8ff6,
+ 0x90d6, 0x90e0, 0x90d9, 0x90da, 0x90e3, 0x90df, 0x90e5, 0x90d8,
+ 0x90db, 0x90d7, 0x90dc, 0x90e4, 0x9150,
+ /* 0xd4 */
+ 0x914e, 0x914f, 0x91d5, 0x91e2, 0x91da, 0x965c, 0x965f, 0x96bc,
+ 0x98e3, 0x9adf, 0x9b2f, 0x4e7f, 0x5070, 0x506a, 0x5061, 0x505e,
+ 0x5060, 0x5053, 0x504b, 0x505d, 0x5072, 0x5048, 0x504d, 0x5041,
+ 0x505b, 0x504a, 0x5062, 0x5015, 0x5045, 0x505f, 0x5069, 0x506b,
+ 0x5063, 0x5064, 0x5046, 0x5040, 0x506e, 0x5073, 0x5057, 0x5051,
+ 0x51d0, 0x526b, 0x526d, 0x526c, 0x526e, 0x52d6, 0x52d3, 0x532d,
+ 0x539c, 0x5575, 0x5576, 0x553c, 0x554d, 0x5550, 0x5534, 0x552a,
+ 0x5551, 0x5562, 0x5536, 0x5535, 0x5530, 0x5552, 0x5545, 0x550c,
+ 0x5532, 0x5565, 0x554e, 0x5539, 0x5548, 0x552d, 0x553b, 0x5540,
+ 0x554b, 0x570a, 0x5707, 0x57fb, 0x5814, 0x57e2, 0x57f6, 0x57dc,
+ 0x57f4, 0x5800, 0x57ed, 0x57fd, 0x5808, 0x57f8, 0x580b, 0x57f3,
+ 0x57cf, 0x5807, 0x57ee, 0x57e3, 0x57f2, 0x57e5, 0x57ec, 0x57e1,
+ 0x580e, 0x57fc, 0x5810, 0x57e7, 0x5801, 0x580c, 0x57f1, 0x57e9,
+ 0x57f0, 0x580d, 0x5804, 0x595c, 0x5a60, 0x5a58, 0x5a55, 0x5a67,
+ 0x5a5e, 0x5a38, 0x5a35, 0x5a6d, 0x5a50, 0x5a5f, 0x5a65, 0x5a6c,
+ 0x5a53, 0x5a64, 0x5a57, 0x5a43, 0x5a5d, 0x5a52, 0x5a44, 0x5a5b,
+ 0x5a48, 0x5a8e, 0x5a3e, 0x5a4d, 0x5a39, 0x5a4c, 0x5a70, 0x5a69,
+ 0x5a47, 0x5a51, 0x5a56, 0x5a42, 0x5a5c, 0x5b72, 0x5b6e, 0x5bc1,
+ 0x5bc0, 0x5c59, 0x5d1e, 0x5d0b, 0x5d1d, 0x5d1a, 0x5d20, 0x5d0c,
+ 0x5d28, 0x5d0d, 0x5d26, 0x5d25, 0x5d0f,
+ /* 0xd5 */
+ 0x5d30, 0x5d12, 0x5d23, 0x5d1f, 0x5d2e, 0x5e3e, 0x5e34, 0x5eb1,
+ 0x5eb4, 0x5eb9, 0x5eb2, 0x5eb3, 0x5f36, 0x5f38, 0x5f9b, 0x5f96,
+ 0x5f9f, 0x608a, 0x6090, 0x6086, 0x60be, 0x60b0, 0x60ba, 0x60d3,
+ 0x60d4, 0x60cf, 0x60e4, 0x60d9, 0x60dd, 0x60c8, 0x60b1, 0x60db,
+ 0x60b7, 0x60ca, 0x60bf, 0x60c3, 0x60cd, 0x60c0, 0x6332, 0x6365,
+ 0x638a, 0x6382, 0x637d, 0x63bd, 0x639e, 0x63ad, 0x639d, 0x6397,
+ 0x63ab, 0x638e, 0x636f, 0x6387, 0x6390, 0x636e, 0x63af, 0x6375,
+ 0x639c, 0x636d, 0x63ae, 0x637c, 0x63a4, 0x633b, 0x639f, 0x6378,
+ 0x6385, 0x6381, 0x6391, 0x638d, 0x6370, 0x6553, 0x65cd, 0x6665,
+ 0x6661, 0x665b, 0x6659, 0x665c, 0x6662, 0x6718, 0x6879, 0x6887,
+ 0x6890, 0x689c, 0x686d, 0x686e, 0x68ae, 0x68ab, 0x6956, 0x686f,
+ 0x68a3, 0x68ac, 0x68a9, 0x6875, 0x6874, 0x68b2, 0x688f, 0x6877,
+ 0x6892, 0x687c, 0x686b, 0x6872, 0x68aa, 0x6880, 0x6871, 0x687e,
+ 0x689b, 0x6896, 0x688b, 0x68a0, 0x6889, 0x68a4, 0x6878, 0x687b,
+ 0x6891, 0x688c, 0x688a, 0x687d, 0x6b36, 0x6b33, 0x6b37, 0x6b38,
+ 0x6b91, 0x6b8f, 0x6b8d, 0x6b8e, 0x6b8c, 0x6c2a, 0x6dc0, 0x6dab,
+ 0x6db4, 0x6db3, 0x6e74, 0x6dac, 0x6de9, 0x6de2, 0x6db7, 0x6df6,
+ 0x6dd4, 0x6e00, 0x6dc8, 0x6de0, 0x6ddf, 0x6dd6, 0x6dbe, 0x6de5,
+ 0x6ddc, 0x6ddd, 0x6ddb, 0x6df4, 0x6dca, 0x6dbd, 0x6ded, 0x6df0,
+ 0x6dba, 0x6dd5, 0x6dc2, 0x6dcf, 0x6dc9,
+ /* 0xd6 */
+ 0x6dd0, 0x6df2, 0x6dd3, 0x6dfd, 0x6dd7, 0x6dcd, 0x6de3, 0x6dbb,
+ 0x70fa, 0x710d, 0x70f7, 0x7117, 0x70f4, 0x710c, 0x70f0, 0x7104,
+ 0x70f3, 0x7110, 0x70fc, 0x70ff, 0x7106, 0x7113, 0x7100, 0x70f8,
+ 0x70f6, 0x710b, 0x7102, 0x710e, 0x727e, 0x727b, 0x727c, 0x727f,
+ 0x731d, 0x7317, 0x7307, 0x7311, 0x7318, 0x730a, 0x7308, 0x72ff,
+ 0x730f, 0x731e, 0x7388, 0x73f6, 0x73f8, 0x73f5, 0x7404, 0x7401,
+ 0x73fd, 0x7407, 0x7400, 0x73fa, 0x73fc, 0x73ff, 0x740c, 0x740b,
+ 0x73f4, 0x7408, 0x7564, 0x7563, 0x75ce, 0x75d2, 0x75cf, 0x75cb,
+ 0x75cc, 0x75d1, 0x75d0, 0x768f, 0x7689, 0x76d3, 0x7739, 0x772f,
+ 0x772d, 0x7731, 0x7732, 0x7734, 0x7733, 0x773d, 0x7725, 0x773b,
+ 0x7735, 0x7848, 0x7852, 0x7849, 0x784d, 0x784a, 0x784c, 0x7826,
+ 0x7845, 0x7850, 0x7964, 0x7967, 0x7969, 0x796a, 0x7963, 0x796b,
+ 0x7961, 0x79bb, 0x79fa, 0x79f8, 0x79f6, 0x79f7, 0x7a8f, 0x7a94,
+ 0x7a90, 0x7b35, 0x7b47, 0x7b34, 0x7b25, 0x7b30, 0x7b22, 0x7b24,
+ 0x7b33, 0x7b18, 0x7b2a, 0x7b1d, 0x7b31, 0x7b2b, 0x7b2d, 0x7b2f,
+ 0x7b32, 0x7b38, 0x7b1a, 0x7b23, 0x7c94, 0x7c98, 0x7c96, 0x7ca3,
+ 0x7d35, 0x7d3d, 0x7d38, 0x7d36, 0x7d3a, 0x7d45, 0x7d2c, 0x7d29,
+ 0x7d41, 0x7d47, 0x7d3e, 0x7d3f, 0x7d4a, 0x7d3b, 0x7d28, 0x7f63,
+ 0x7f95, 0x7f9c, 0x7f9d, 0x7f9b, 0x7fca, 0x7fcb, 0x7fcd, 0x7fd0,
+ 0x7fd1, 0x7fc7, 0x7fcf, 0x7fc9, 0x801f,
+ /* 0xd7 */
+ 0x801e, 0x801b, 0x8047, 0x8043, 0x8048, 0x8118, 0x8125, 0x8119,
+ 0x811b, 0x812d, 0x811f, 0x812c, 0x811e, 0x8121, 0x8115, 0x8127,
+ 0x811d, 0x8122, 0x8211, 0x8238, 0x8233, 0x823a, 0x8234, 0x8232,
+ 0x8274, 0x8390, 0x83a3, 0x83a8, 0x838d, 0x837a, 0x8373, 0x83a4,
+ 0x8374, 0x838f, 0x8381, 0x8395, 0x8399, 0x8375, 0x8394, 0x83a9,
+ 0x837d, 0x8383, 0x838c, 0x839d, 0x839b, 0x83aa, 0x838b, 0x837e,
+ 0x83a5, 0x83af, 0x8388, 0x8397, 0x83b0, 0x837f, 0x83a6, 0x8387,
+ 0x83ae, 0x8376, 0x839a, 0x8659, 0x8656, 0x86bf, 0x86b7, 0x86c2,
+ 0x86c1, 0x86c5, 0x86ba, 0x86b0, 0x86c8, 0x86b9, 0x86b3, 0x86b8,
+ 0x86cc, 0x86b4, 0x86bb, 0x86bc, 0x86c3, 0x86bd, 0x86be, 0x8852,
+ 0x8889, 0x8895, 0x88a8, 0x88a2, 0x88aa, 0x889a, 0x8891, 0x88a1,
+ 0x889f, 0x8898, 0x88a7, 0x8899, 0x889b, 0x8897, 0x88a4, 0x88ac,
+ 0x888c, 0x8893, 0x888e, 0x8982, 0x89d6, 0x89d9, 0x89d5, 0x8a30,
+ 0x8a27, 0x8a2c, 0x8a1e, 0x8c39, 0x8c3b, 0x8c5c, 0x8c5d, 0x8c7d,
+ 0x8ca5, 0x8d7d, 0x8d7b, 0x8d79, 0x8dbc, 0x8dc2, 0x8db9, 0x8dbf,
+ 0x8dc1, 0x8ed8, 0x8ede, 0x8edd, 0x8edc, 0x8ed7, 0x8ee0, 0x8ee1,
+ 0x9024, 0x900b, 0x9011, 0x901c, 0x900c, 0x9021, 0x90ef, 0x90ea,
+ 0x90f0, 0x90f4, 0x90f2, 0x90f3, 0x90d4, 0x90eb, 0x90ec, 0x90e9,
+ 0x9156, 0x9158, 0x915a, 0x9153, 0x9155, 0x91ec, 0x91f4, 0x91f1,
+ 0x91f3, 0x91f8, 0x91e4, 0x91f9, 0x91ea,
+ /* 0xd8 */
+ 0x91eb, 0x91f7, 0x91e8, 0x91ee, 0x957a, 0x9586, 0x9588, 0x967c,
+ 0x966d, 0x966b, 0x9671, 0x966f, 0x96bf, 0x976a, 0x9804, 0x98e5,
+ 0x9997, 0x509b, 0x5095, 0x5094, 0x509e, 0x508b, 0x50a3, 0x5083,
+ 0x508c, 0x508e, 0x509d, 0x5068, 0x509c, 0x5092, 0x5082, 0x5087,
+ 0x515f, 0x51d4, 0x5312, 0x5311, 0x53a4, 0x53a7, 0x5591, 0x55a8,
+ 0x55a5, 0x55ad, 0x5577, 0x5645, 0x55a2, 0x5593, 0x5588, 0x558f,
+ 0x55b5, 0x5581, 0x55a3, 0x5592, 0x55a4, 0x557d, 0x558c, 0x55a6,
+ 0x557f, 0x5595, 0x55a1, 0x558e, 0x570c, 0x5829, 0x5837, 0x5819,
+ 0x581e, 0x5827, 0x5823, 0x5828, 0x57f5, 0x5848, 0x5825, 0x581c,
+ 0x581b, 0x5833, 0x583f, 0x5836, 0x582e, 0x5839, 0x5838, 0x582d,
+ 0x582c, 0x583b, 0x5961, 0x5aaf, 0x5a94, 0x5a9f, 0x5a7a, 0x5aa2,
+ 0x5a9e, 0x5a78, 0x5aa6, 0x5a7c, 0x5aa5, 0x5aac, 0x5a95, 0x5aae,
+ 0x5a37, 0x5a84, 0x5a8a, 0x5a97, 0x5a83, 0x5a8b, 0x5aa9, 0x5a7b,
+ 0x5a7d, 0x5a8c, 0x5a9c, 0x5a8f, 0x5a93, 0x5a9d, 0x5bea, 0x5bcd,
+ 0x5bcb, 0x5bd4, 0x5bd1, 0x5bca, 0x5bce, 0x5c0c, 0x5c30, 0x5d37,
+ 0x5d43, 0x5d6b, 0x5d41, 0x5d4b, 0x5d3f, 0x5d35, 0x5d51, 0x5d4e,
+ 0x5d55, 0x5d33, 0x5d3a, 0x5d52, 0x5d3d, 0x5d31, 0x5d59, 0x5d42,
+ 0x5d39, 0x5d49, 0x5d38, 0x5d3c, 0x5d32, 0x5d36, 0x5d40, 0x5d45,
+ 0x5e44, 0x5e41, 0x5f58, 0x5fa6, 0x5fa5, 0x5fab, 0x60c9, 0x60b9,
+ 0x60cc, 0x60e2, 0x60ce, 0x60c4, 0x6114,
+ /* 0xd9 */
+ 0x60f2, 0x610a, 0x6116, 0x6105, 0x60f5, 0x6113, 0x60f8, 0x60fc,
+ 0x60fe, 0x60c1, 0x6103, 0x6118, 0x611d, 0x6110, 0x60ff, 0x6104,
+ 0x610b, 0x624a, 0x6394, 0x63b1, 0x63b0, 0x63ce, 0x63e5, 0x63e8,
+ 0x63ef, 0x63c3, 0x649d, 0x63f3, 0x63ca, 0x63e0, 0x63f6, 0x63d5,
+ 0x63f2, 0x63f5, 0x6461, 0x63df, 0x63be, 0x63dd, 0x63dc, 0x63c4,
+ 0x63d8, 0x63d3, 0x63c2, 0x63c7, 0x63cc, 0x63cb, 0x63c8, 0x63f0,
+ 0x63d7, 0x63d9, 0x6532, 0x6567, 0x656a, 0x6564, 0x655c, 0x6568,
+ 0x6565, 0x658c, 0x659d, 0x659e, 0x65ae, 0x65d0, 0x65d2, 0x667c,
+ 0x666c, 0x667b, 0x6680, 0x6671, 0x6679, 0x666a, 0x6672, 0x6701,
+ 0x690c, 0x68d3, 0x6904, 0x68dc, 0x692a, 0x68ec, 0x68ea, 0x68f1,
+ 0x690f, 0x68d6, 0x68f7, 0x68eb, 0x68e4, 0x68f6, 0x6913, 0x6910,
+ 0x68f3, 0x68e1, 0x6907, 0x68cc, 0x6908, 0x6970, 0x68b4, 0x6911,
+ 0x68ef, 0x68c6, 0x6914, 0x68f8, 0x68d0, 0x68fd, 0x68fc, 0x68e8,
+ 0x690b, 0x690a, 0x6917, 0x68ce, 0x68c8, 0x68dd, 0x68de, 0x68e6,
+ 0x68f4, 0x68d1, 0x6906, 0x68d4, 0x68e9, 0x6915, 0x6925, 0x68c7,
+ 0x6b39, 0x6b3b, 0x6b3f, 0x6b3c, 0x6b94, 0x6b97, 0x6b99, 0x6b95,
+ 0x6bbd, 0x6bf0, 0x6bf2, 0x6bf3, 0x6c30, 0x6dfc, 0x6e46, 0x6e47,
+ 0x6e1f, 0x6e49, 0x6e88, 0x6e3c, 0x6e3d, 0x6e45, 0x6e62, 0x6e2b,
+ 0x6e3f, 0x6e41, 0x6e5d, 0x6e73, 0x6e1c, 0x6e33, 0x6e4b, 0x6e40,
+ 0x6e51, 0x6e3b, 0x6e03, 0x6e2e, 0x6e5e,
+ /* 0xda */
+ 0x6e68, 0x6e5c, 0x6e61, 0x6e31, 0x6e28, 0x6e60, 0x6e71, 0x6e6b,
+ 0x6e39, 0x6e22, 0x6e30, 0x6e53, 0x6e65, 0x6e27, 0x6e78, 0x6e64,
+ 0x6e77, 0x6e55, 0x6e79, 0x6e52, 0x6e66, 0x6e35, 0x6e36, 0x6e5a,
+ 0x7120, 0x711e, 0x712f, 0x70fb, 0x712e, 0x7131, 0x7123, 0x7125,
+ 0x7122, 0x7132, 0x711f, 0x7128, 0x713a, 0x711b, 0x724b, 0x725a,
+ 0x7288, 0x7289, 0x7286, 0x7285, 0x728b, 0x7312, 0x730b, 0x7330,
+ 0x7322, 0x7331, 0x7333, 0x7327, 0x7332, 0x732d, 0x7326, 0x7323,
+ 0x7335, 0x730c, 0x742e, 0x742c, 0x7430, 0x742b, 0x7416, 0x741a,
+ 0x7421, 0x742d, 0x7431, 0x7424, 0x7423, 0x741d, 0x7429, 0x7420,
+ 0x7432, 0x74fb, 0x752f, 0x756f, 0x756c, 0x75e7, 0x75da, 0x75e1,
+ 0x75e6, 0x75dd, 0x75df, 0x75e4, 0x75d7, 0x7695, 0x7692, 0x76da,
+ 0x7746, 0x7747, 0x7744, 0x774d, 0x7745, 0x774a, 0x774e, 0x774b,
+ 0x774c, 0x77de, 0x77ec, 0x7860, 0x7864, 0x7865, 0x785c, 0x786d,
+ 0x7871, 0x786a, 0x786e, 0x7870, 0x7869, 0x7868, 0x785e, 0x7862,
+ 0x7974, 0x7973, 0x7972, 0x7970, 0x7a02, 0x7a0a, 0x7a03, 0x7a0c,
+ 0x7a04, 0x7a99, 0x7ae6, 0x7ae4, 0x7b4a, 0x7b3b, 0x7b44, 0x7b48,
+ 0x7b4c, 0x7b4e, 0x7b40, 0x7b58, 0x7b45, 0x7ca2, 0x7c9e, 0x7ca8,
+ 0x7ca1, 0x7d58, 0x7d6f, 0x7d63, 0x7d53, 0x7d56, 0x7d67, 0x7d6a,
+ 0x7d4f, 0x7d6d, 0x7d5c, 0x7d6b, 0x7d52, 0x7d54, 0x7d69, 0x7d51,
+ 0x7d5f, 0x7d4e, 0x7f3e, 0x7f3f, 0x7f65,
+ /* 0xdb */
+ 0x7f66, 0x7fa2, 0x7fa0, 0x7fa1, 0x7fd7, 0x8051, 0x804f, 0x8050,
+ 0x80fe, 0x80d4, 0x8143, 0x814a, 0x8152, 0x814f, 0x8147, 0x813d,
+ 0x814d, 0x813a, 0x81e6, 0x81ee, 0x81f7, 0x81f8, 0x81f9, 0x8204,
+ 0x823c, 0x823d, 0x823f, 0x8275, 0x833b, 0x83cf, 0x83f9, 0x8423,
+ 0x83c0, 0x83e8, 0x8412, 0x83e7, 0x83e4, 0x83fc, 0x83f6, 0x8410,
+ 0x83c6, 0x83c8, 0x83eb, 0x83e3, 0x83bf, 0x8401, 0x83dd, 0x83e5,
+ 0x83d8, 0x83ff, 0x83e1, 0x83cb, 0x83ce, 0x83d6, 0x83f5, 0x83c9,
+ 0x8409, 0x840f, 0x83de, 0x8411, 0x8406, 0x83c2, 0x83f3, 0x83d5,
+ 0x83fa, 0x83c7, 0x83d1, 0x83ea, 0x8413, 0x83c3, 0x83ec, 0x83ee,
+ 0x83c4, 0x83fb, 0x83d7, 0x83e2, 0x841b, 0x83db, 0x83fe, 0x86d8,
+ 0x86e2, 0x86e6, 0x86d3, 0x86e3, 0x86da, 0x86ea, 0x86dd, 0x86eb,
+ 0x86dc, 0x86ec, 0x86e9, 0x86d7, 0x86e8, 0x86d1, 0x8848, 0x8856,
+ 0x8855, 0x88ba, 0x88d7, 0x88b9, 0x88b8, 0x88c0, 0x88be, 0x88b6,
+ 0x88bc, 0x88b7, 0x88bd, 0x88b2, 0x8901, 0x88c9, 0x8995, 0x8998,
+ 0x8997, 0x89dd, 0x89da, 0x89db, 0x8a4e, 0x8a4d, 0x8a39, 0x8a59,
+ 0x8a40, 0x8a57, 0x8a58, 0x8a44, 0x8a45, 0x8a52, 0x8a48, 0x8a51,
+ 0x8a4a, 0x8a4c, 0x8a4f, 0x8c5f, 0x8c81, 0x8c80, 0x8cba, 0x8cbe,
+ 0x8cb0, 0x8cb9, 0x8cb5, 0x8d84, 0x8d80, 0x8d89, 0x8dd8, 0x8dd3,
+ 0x8dcd, 0x8dc7, 0x8dd6, 0x8ddc, 0x8dcf, 0x8dd5, 0x8dd9, 0x8dc8,
+ 0x8dd7, 0x8dc5, 0x8eef, 0x8ef7, 0x8efa,
+ /* 0xdc */
+ 0x8ef9, 0x8ee6, 0x8eee, 0x8ee5, 0x8ef5, 0x8ee7, 0x8ee8, 0x8ef6,
+ 0x8eeb, 0x8ef1, 0x8eec, 0x8ef4, 0x8ee9, 0x902d, 0x9034, 0x902f,
+ 0x9106, 0x912c, 0x9104, 0x90ff, 0x90fc, 0x9108, 0x90f9, 0x90fb,
+ 0x9101, 0x9100, 0x9107, 0x9105, 0x9103, 0x9161, 0x9164, 0x915f,
+ 0x9162, 0x9160, 0x9201, 0x920a, 0x9225, 0x9203, 0x921a, 0x9226,
+ 0x920f, 0x920c, 0x9200, 0x9212, 0x91ff, 0x91fd, 0x9206, 0x9204,
+ 0x9227, 0x9202, 0x921c, 0x9224, 0x9219, 0x9217, 0x9205, 0x9216,
+ 0x957b, 0x958d, 0x958c, 0x9590, 0x9687, 0x967e, 0x9688, 0x9689,
+ 0x9683, 0x9680, 0x96c2, 0x96c8, 0x96c3, 0x96f1, 0x96f0, 0x976c,
+ 0x9770, 0x976e, 0x9807, 0x98a9, 0x98eb, 0x9ce6, 0x9ef9, 0x4e83,
+ 0x4e84, 0x4eb6, 0x50bd, 0x50bf, 0x50c6, 0x50ae, 0x50c4, 0x50ca,
+ 0x50b4, 0x50c8, 0x50c2, 0x50b0, 0x50c1, 0x50ba, 0x50b1, 0x50cb,
+ 0x50c9, 0x50b6, 0x50b8, 0x51d7, 0x527a, 0x5278, 0x527b, 0x527c,
+ 0x55c3, 0x55db, 0x55cc, 0x55d0, 0x55cb, 0x55ca, 0x55dd, 0x55c0,
+ 0x55d4, 0x55c4, 0x55e9, 0x55bf, 0x55d2, 0x558d, 0x55cf, 0x55d5,
+ 0x55e2, 0x55d6, 0x55c8, 0x55f2, 0x55cd, 0x55d9, 0x55c2, 0x5714,
+ 0x5853, 0x5868, 0x5864, 0x584f, 0x584d, 0x5849, 0x586f, 0x5855,
+ 0x584e, 0x585d, 0x5859, 0x5865, 0x585b, 0x583d, 0x5863, 0x5871,
+ 0x58fc, 0x5ac7, 0x5ac4, 0x5acb, 0x5aba, 0x5ab8, 0x5ab1, 0x5ab5,
+ 0x5ab0, 0x5abf, 0x5ac8, 0x5abb, 0x5ac6,
+ /* 0xdd */
+ 0x5ab7, 0x5ac0, 0x5aca, 0x5ab4, 0x5ab6, 0x5acd, 0x5ab9, 0x5a90,
+ 0x5bd6, 0x5bd8, 0x5bd9, 0x5c1f, 0x5c33, 0x5d71, 0x5d63, 0x5d4a,
+ 0x5d65, 0x5d72, 0x5d6c, 0x5d5e, 0x5d68, 0x5d67, 0x5d62, 0x5df0,
+ 0x5e4f, 0x5e4e, 0x5e4a, 0x5e4d, 0x5e4b, 0x5ec5, 0x5ecc, 0x5ec6,
+ 0x5ecb, 0x5ec7, 0x5f40, 0x5faf, 0x5fad, 0x60f7, 0x6149, 0x614a,
+ 0x612b, 0x6145, 0x6136, 0x6132, 0x612e, 0x6146, 0x612f, 0x614f,
+ 0x6129, 0x6140, 0x6220, 0x9168, 0x6223, 0x6225, 0x6224, 0x63c5,
+ 0x63f1, 0x63eb, 0x6410, 0x6412, 0x6409, 0x6420, 0x6424, 0x6433,
+ 0x6443, 0x641f, 0x6415, 0x6418, 0x6439, 0x6437, 0x6422, 0x6423,
+ 0x640c, 0x6426, 0x6430, 0x6428, 0x6441, 0x6435, 0x642f, 0x640a,
+ 0x641a, 0x6440, 0x6425, 0x6427, 0x640b, 0x63e7, 0x641b, 0x642e,
+ 0x6421, 0x640e, 0x656f, 0x6592, 0x65d3, 0x6686, 0x668c, 0x6695,
+ 0x6690, 0x668b, 0x668a, 0x6699, 0x6694, 0x6678, 0x6720, 0x6966,
+ 0x695f, 0x6938, 0x694e, 0x6962, 0x6971, 0x693f, 0x6945, 0x696a,
+ 0x6939, 0x6942, 0x6957, 0x6959, 0x697a, 0x6948, 0x6949, 0x6935,
+ 0x696c, 0x6933, 0x693d, 0x6965, 0x68f0, 0x6978, 0x6934, 0x6969,
+ 0x6940, 0x696f, 0x6944, 0x6976, 0x6958, 0x6941, 0x6974, 0x694c,
+ 0x693b, 0x694b, 0x6937, 0x695c, 0x694f, 0x6951, 0x6932, 0x6952,
+ 0x692f, 0x697b, 0x693c, 0x6b46, 0x6b45, 0x6b43, 0x6b42, 0x6b48,
+ 0x6b41, 0x6b9b, 0xfa0d, 0x6bfb, 0x6bfc,
+ /* 0xde */
+ 0x6bf9, 0x6bf7, 0x6bf8, 0x6e9b, 0x6ed6, 0x6ec8, 0x6e8f, 0x6ec0,
+ 0x6e9f, 0x6e93, 0x6e94, 0x6ea0, 0x6eb1, 0x6eb9, 0x6ec6, 0x6ed2,
+ 0x6ebd, 0x6ec1, 0x6e9e, 0x6ec9, 0x6eb7, 0x6eb0, 0x6ecd, 0x6ea6,
+ 0x6ecf, 0x6eb2, 0x6ebe, 0x6ec3, 0x6edc, 0x6ed8, 0x6e99, 0x6e92,
+ 0x6e8e, 0x6e8d, 0x6ea4, 0x6ea1, 0x6ebf, 0x6eb3, 0x6ed0, 0x6eca,
+ 0x6e97, 0x6eae, 0x6ea3, 0x7147, 0x7154, 0x7152, 0x7163, 0x7160,
+ 0x7141, 0x715d, 0x7162, 0x7172, 0x7178, 0x716a, 0x7161, 0x7142,
+ 0x7158, 0x7143, 0x714b, 0x7170, 0x715f, 0x7150, 0x7153, 0x7144,
+ 0x714d, 0x715a, 0x724f, 0x728d, 0x728c, 0x7291, 0x7290, 0x728e,
+ 0x733c, 0x7342, 0x733b, 0x733a, 0x7340, 0x734a, 0x7349, 0x7444,
+ 0x744a, 0x744b, 0x7452, 0x7451, 0x7457, 0x7440, 0x744f, 0x7450,
+ 0x744e, 0x7442, 0x7446, 0x744d, 0x7454, 0x74e1, 0x74ff, 0x74fe,
+ 0x74fd, 0x751d, 0x7579, 0x7577, 0x6983, 0x75ef, 0x760f, 0x7603,
+ 0x75f7, 0x75fe, 0x75fc, 0x75f9, 0x75f8, 0x7610, 0x75fb, 0x75f6,
+ 0x75ed, 0x75f5, 0x75fd, 0x7699, 0x76b5, 0x76dd, 0x7755, 0x775f,
+ 0x7760, 0x7752, 0x7756, 0x775a, 0x7769, 0x7767, 0x7754, 0x7759,
+ 0x776d, 0x77e0, 0x7887, 0x789a, 0x7894, 0x788f, 0x7884, 0x7895,
+ 0x7885, 0x7886, 0x78a1, 0x7883, 0x7879, 0x7899, 0x7880, 0x7896,
+ 0x787b, 0x797c, 0x7982, 0x797d, 0x7979, 0x7a11, 0x7a18, 0x7a19,
+ 0x7a12, 0x7a17, 0x7a15, 0x7a22, 0x7a13,
+ /* 0xdf */
+ 0x7a1b, 0x7a10, 0x7aa3, 0x7aa2, 0x7a9e, 0x7aeb, 0x7b66, 0x7b64,
+ 0x7b6d, 0x7b74, 0x7b69, 0x7b72, 0x7b65, 0x7b73, 0x7b71, 0x7b70,
+ 0x7b61, 0x7b78, 0x7b76, 0x7b63, 0x7cb2, 0x7cb4, 0x7caf, 0x7d88,
+ 0x7d86, 0x7d80, 0x7d8d, 0x7d7f, 0x7d85, 0x7d7a, 0x7d8e, 0x7d7b,
+ 0x7d83, 0x7d7c, 0x7d8c, 0x7d94, 0x7d84, 0x7d7d, 0x7d92, 0x7f6d,
+ 0x7f6b, 0x7f67, 0x7f68, 0x7f6c, 0x7fa6, 0x7fa5, 0x7fa7, 0x7fdb,
+ 0x7fdc, 0x8021, 0x8164, 0x8160, 0x8177, 0x815c, 0x8169, 0x815b,
+ 0x8162, 0x8172, 0x6721, 0x815e, 0x8176, 0x8167, 0x816f, 0x8144,
+ 0x8161, 0x821d, 0x8249, 0x8244, 0x8240, 0x8242, 0x8245, 0x84f1,
+ 0x843f, 0x8456, 0x8476, 0x8479, 0x848f, 0x848d, 0x8465, 0x8451,
+ 0x8440, 0x8486, 0x8467, 0x8430, 0x844d, 0x847d, 0x845a, 0x8459,
+ 0x8474, 0x8473, 0x845d, 0x8507, 0x845e, 0x8437, 0x843a, 0x8434,
+ 0x847a, 0x8443, 0x8478, 0x8432, 0x8445, 0x8429, 0x83d9, 0x844b,
+ 0x842f, 0x8442, 0x842d, 0x845f, 0x8470, 0x8439, 0x844e, 0x844c,
+ 0x8452, 0x846f, 0x84c5, 0x848e, 0x843b, 0x8447, 0x8436, 0x8433,
+ 0x8468, 0x847e, 0x8444, 0x842b, 0x8460, 0x8454, 0x846e, 0x8450,
+ 0x870b, 0x8704, 0x86f7, 0x870c, 0x86fa, 0x86d6, 0x86f5, 0x874d,
+ 0x86f8, 0x870e, 0x8709, 0x8701, 0x86f6, 0x870d, 0x8705, 0x88d6,
+ 0x88cb, 0x88cd, 0x88ce, 0x88de, 0x88db, 0x88da, 0x88cc, 0x88d0,
+ 0x8985, 0x899b, 0x89df, 0x89e5, 0x89e4,
+ /* 0xe0 */
+ 0x89e1, 0x89e0, 0x89e2, 0x89dc, 0x89e6, 0x8a76, 0x8a86, 0x8a7f,
+ 0x8a61, 0x8a3f, 0x8a77, 0x8a82, 0x8a84, 0x8a75, 0x8a83, 0x8a81,
+ 0x8a74, 0x8a7a, 0x8c3c, 0x8c4b, 0x8c4a, 0x8c65, 0x8c64, 0x8c66,
+ 0x8c86, 0x8c84, 0x8c85, 0x8ccc, 0x8d68, 0x8d69, 0x8d91, 0x8d8c,
+ 0x8d8e, 0x8d8f, 0x8d8d, 0x8d93, 0x8d94, 0x8d90, 0x8d92, 0x8df0,
+ 0x8de0, 0x8dec, 0x8df1, 0x8dee, 0x8dd0, 0x8de9, 0x8de3, 0x8de2,
+ 0x8de7, 0x8df2, 0x8deb, 0x8df4, 0x8f06, 0x8eff, 0x8f01, 0x8f00,
+ 0x8f05, 0x8f07, 0x8f08, 0x8f02, 0x8f0b, 0x9052, 0x903f, 0x9044,
+ 0x9049, 0x903d, 0x9110, 0x910d, 0x910f, 0x9111, 0x9116, 0x9114,
+ 0x910b, 0x910e, 0x916e, 0x916f, 0x9248, 0x9252, 0x9230, 0x923a,
+ 0x9266, 0x9233, 0x9265, 0x925e, 0x9283, 0x922e, 0x924a, 0x9246,
+ 0x926d, 0x926c, 0x924f, 0x9260, 0x9267, 0x926f, 0x9236, 0x9261,
+ 0x9270, 0x9231, 0x9254, 0x9263, 0x9250, 0x9272, 0x924e, 0x9253,
+ 0x924c, 0x9256, 0x9232, 0x959f, 0x959c, 0x959e, 0x959b, 0x9692,
+ 0x9693, 0x9691, 0x9697, 0x96ce, 0x96fa, 0x96fd, 0x96f8, 0x96f5,
+ 0x9773, 0x9777, 0x9778, 0x9772, 0x980f, 0x980d, 0x980e, 0x98ac,
+ 0x98f6, 0x98f9, 0x99af, 0x99b2, 0x99b0, 0x99b5, 0x9aad, 0x9aab,
+ 0x9b5b, 0x9cea, 0x9ced, 0x9ce7, 0x9e80, 0x9efd, 0x50e6, 0x50d4,
+ 0x50d7, 0x50e8, 0x50f3, 0x50db, 0x50ea, 0x50dd, 0x50e4, 0x50d3,
+ 0x50ec, 0x50f0, 0x50ef, 0x50e3, 0x50e0,
+ /* 0xe1 */
+ 0x51d8, 0x5280, 0x5281, 0x52e9, 0x52eb, 0x5330, 0x53ac, 0x5627,
+ 0x5615, 0x560c, 0x5612, 0x55fc, 0x560f, 0x561c, 0x5601, 0x5613,
+ 0x5602, 0x55fa, 0x561d, 0x5604, 0x55ff, 0x55f9, 0x5889, 0x587c,
+ 0x5890, 0x5898, 0x5886, 0x5881, 0x587f, 0x5874, 0x588b, 0x587a,
+ 0x5887, 0x5891, 0x588e, 0x5876, 0x5882, 0x5888, 0x587b, 0x5894,
+ 0x588f, 0x58fe, 0x596b, 0x5adc, 0x5aee, 0x5ae5, 0x5ad5, 0x5aea,
+ 0x5ada, 0x5aed, 0x5aeb, 0x5af3, 0x5ae2, 0x5ae0, 0x5adb, 0x5aec,
+ 0x5ade, 0x5add, 0x5ad9, 0x5ae8, 0x5adf, 0x5b77, 0x5be0, 0x5be3,
+ 0x5c63, 0x5d82, 0x5d80, 0x5d7d, 0x5d86, 0x5d7a, 0x5d81, 0x5d77,
+ 0x5d8a, 0x5d89, 0x5d88, 0x5d7e, 0x5d7c, 0x5d8d, 0x5d79, 0x5d7f,
+ 0x5e58, 0x5e59, 0x5e53, 0x5ed8, 0x5ed1, 0x5ed7, 0x5ece, 0x5edc,
+ 0x5ed5, 0x5ed9, 0x5ed2, 0x5ed4, 0x5f44, 0x5f43, 0x5f6f, 0x5fb6,
+ 0x612c, 0x6128, 0x6141, 0x615e, 0x6171, 0x6173, 0x6152, 0x6153,
+ 0x6172, 0x616c, 0x6180, 0x6174, 0x6154, 0x617a, 0x615b, 0x6165,
+ 0x613b, 0x616a, 0x6161, 0x6156, 0x6229, 0x6227, 0x622b, 0x642b,
+ 0x644d, 0x645b, 0x645d, 0x6474, 0x6476, 0x6472, 0x6473, 0x647d,
+ 0x6475, 0x6466, 0x64a6, 0x644e, 0x6482, 0x645e, 0x645c, 0x644b,
+ 0x6453, 0x6460, 0x6450, 0x647f, 0x643f, 0x646c, 0x646b, 0x6459,
+ 0x6465, 0x6477, 0x6573, 0x65a0, 0x66a1, 0x66a0, 0x669f, 0x6705,
+ 0x6704, 0x6722, 0x69b1, 0x69b6, 0x69c9,
+ /* 0xe2 */
+ 0x69a0, 0x69ce, 0x6996, 0x69b0, 0x69ac, 0x69bc, 0x6991, 0x6999,
+ 0x698e, 0x69a7, 0x698d, 0x69a9, 0x69be, 0x69af, 0x69bf, 0x69c4,
+ 0x69bd, 0x69a4, 0x69d4, 0x69b9, 0x69ca, 0x699a, 0x69cf, 0x69b3,
+ 0x6993, 0x69aa, 0x69a1, 0x699e, 0x69d9, 0x6997, 0x6990, 0x69c2,
+ 0x69b5, 0x69a5, 0x69c6, 0x6b4a, 0x6b4d, 0x6b4b, 0x6b9e, 0x6b9f,
+ 0x6ba0, 0x6bc3, 0x6bc4, 0x6bfe, 0x6ece, 0x6ef5, 0x6ef1, 0x6f03,
+ 0x6f25, 0x6ef8, 0x6f37, 0x6efb, 0x6f2e, 0x6f09, 0x6f4e, 0x6f19,
+ 0x6f1a, 0x6f27, 0x6f18, 0x6f3b, 0x6f12, 0x6eed, 0x6f0a, 0x6f36,
+ 0x6f73, 0x6ef9, 0x6eee, 0x6f2d, 0x6f40, 0x6f30, 0x6f3c, 0x6f35,
+ 0x6eeb, 0x6f07, 0x6f0e, 0x6f43, 0x6f05, 0x6efd, 0x6ef6, 0x6f39,
+ 0x6f1c, 0x6efc, 0x6f3a, 0x6f1f, 0x6f0d, 0x6f1e, 0x6f08, 0x6f21,
+ 0x7187, 0x7190, 0x7189, 0x7180, 0x7185, 0x7182, 0x718f, 0x717b,
+ 0x7186, 0x7181, 0x7197, 0x7244, 0x7253, 0x7297, 0x7295, 0x7293,
+ 0x7343, 0x734d, 0x7351, 0x734c, 0x7462, 0x7473, 0x7471, 0x7475,
+ 0x7472, 0x7467, 0x746e, 0x7500, 0x7502, 0x7503, 0x757d, 0x7590,
+ 0x7616, 0x7608, 0x760c, 0x7615, 0x7611, 0x760a, 0x7614, 0x76b8,
+ 0x7781, 0x777c, 0x7785, 0x7782, 0x776e, 0x7780, 0x776f, 0x777e,
+ 0x7783, 0x78b2, 0x78aa, 0x78b4, 0x78ad, 0x78a8, 0x787e, 0x78ab,
+ 0x789e, 0x78a5, 0x78a0, 0x78ac, 0x78a2, 0x78a4, 0x7998, 0x798a,
+ 0x798b, 0x7996, 0x7995, 0x7994, 0x7993,
+ /* 0xe3 */
+ 0x7997, 0x7988, 0x7992, 0x7990, 0x7a2b, 0x7a4a, 0x7a30, 0x7a2f,
+ 0x7a28, 0x7a26, 0x7aa8, 0x7aab, 0x7aac, 0x7aee, 0x7b88, 0x7b9c,
+ 0x7b8a, 0x7b91, 0x7b90, 0x7b96, 0x7b8d, 0x7b8c, 0x7b9b, 0x7b8e,
+ 0x7b85, 0x7b98, 0x5284, 0x7b99, 0x7ba4, 0x7b82, 0x7cbb, 0x7cbf,
+ 0x7cbc, 0x7cba, 0x7da7, 0x7db7, 0x7dc2, 0x7da3, 0x7daa, 0x7dc1,
+ 0x7dc0, 0x7dc5, 0x7d9d, 0x7dce, 0x7dc4, 0x7dc6, 0x7dcb, 0x7dcc,
+ 0x7daf, 0x7db9, 0x7d96, 0x7dbc, 0x7d9f, 0x7da6, 0x7dae, 0x7da9,
+ 0x7da1, 0x7dc9, 0x7f73, 0x7fe2, 0x7fe3, 0x7fe5, 0x7fde, 0x8024,
+ 0x805d, 0x805c, 0x8189, 0x8186, 0x8183, 0x8187, 0x818d, 0x818c,
+ 0x818b, 0x8215, 0x8497, 0x84a4, 0x84a1, 0x849f, 0x84ba, 0x84ce,
+ 0x84c2, 0x84ac, 0x84ae, 0x84ab, 0x84b9, 0x84b4, 0x84c1, 0x84cd,
+ 0x84aa, 0x849a, 0x84b1, 0x84d0, 0x849d, 0x84a7, 0x84bb, 0x84a2,
+ 0x8494, 0x84c7, 0x84cc, 0x849b, 0x84a9, 0x84af, 0x84a8, 0x84d6,
+ 0x8498, 0x84b6, 0x84cf, 0x84a0, 0x84d7, 0x84d4, 0x84d2, 0x84db,
+ 0x84b0, 0x8491, 0x8661, 0x8733, 0x8723, 0x8728, 0x876b, 0x8740,
+ 0x872e, 0x871e, 0x8721, 0x8719, 0x871b, 0x8743, 0x872c, 0x8741,
+ 0x873e, 0x8746, 0x8720, 0x8732, 0x872a, 0x872d, 0x873c, 0x8712,
+ 0x873a, 0x8731, 0x8735, 0x8742, 0x8726, 0x8727, 0x8738, 0x8724,
+ 0x871a, 0x8730, 0x8711, 0x88f7, 0x88e7, 0x88f1, 0x88f2, 0x88fa,
+ 0x88fe, 0x88ee, 0x88fc, 0x88f6, 0x88fb,
+ /* 0xe4 */
+ 0x88f0, 0x88ec, 0x88eb, 0x899d, 0x89a1, 0x899f, 0x899e, 0x89e9,
+ 0x89eb, 0x89e8, 0x8aab, 0x8a99, 0x8a8b, 0x8a92, 0x8a8f, 0x8a96,
+ 0x8c3d, 0x8c68, 0x8c69, 0x8cd5, 0x8ccf, 0x8cd7, 0x8d96, 0x8e09,
+ 0x8e02, 0x8dff, 0x8e0d, 0x8dfd, 0x8e0a, 0x8e03, 0x8e07, 0x8e06,
+ 0x8e05, 0x8dfe, 0x8e00, 0x8e04, 0x8f10, 0x8f11, 0x8f0e, 0x8f0d,
+ 0x9123, 0x911c, 0x9120, 0x9122, 0x911f, 0x911d, 0x911a, 0x9124,
+ 0x9121, 0x911b, 0x917a, 0x9172, 0x9179, 0x9173, 0x92a5, 0x92a4,
+ 0x9276, 0x929b, 0x927a, 0x92a0, 0x9294, 0x92aa, 0x928d, 0x92a6,
+ 0x929a, 0x92ab, 0x9279, 0x9297, 0x927f, 0x92a3, 0x92ee, 0x928e,
+ 0x9282, 0x9295, 0x92a2, 0x927d, 0x9288, 0x92a1, 0x928a, 0x9286,
+ 0x928c, 0x9299, 0x92a7, 0x927e, 0x9287, 0x92a9, 0x929d, 0x928b,
+ 0x922d, 0x969e, 0x96a1, 0x96ff, 0x9758, 0x977d, 0x977a, 0x977e,
+ 0x9783, 0x9780, 0x9782, 0x977b, 0x9784, 0x9781, 0x977f, 0x97ce,
+ 0x97cd, 0x9816, 0x98ad, 0x98ae, 0x9902, 0x9900, 0x9907, 0x999d,
+ 0x999c, 0x99c3, 0x99b9, 0x99bb, 0x99ba, 0x99c2, 0x99bd, 0x99c7,
+ 0x9ab1, 0x9ae3, 0x9ae7, 0x9b3e, 0x9b3f, 0x9b60, 0x9b61, 0x9b5f,
+ 0x9cf1, 0x9cf2, 0x9cf5, 0x9ea7, 0x50ff, 0x5103, 0x5130, 0x50f8,
+ 0x5106, 0x5107, 0x50f6, 0x50fe, 0x510b, 0x510c, 0x50fd, 0x510a,
+ 0x528b, 0x528c, 0x52f1, 0x52ef, 0x5648, 0x5642, 0x564c, 0x5635,
+ 0x5641, 0x564a, 0x5649, 0x5646, 0x5658,
+ /* 0xe5 */
+ 0x565a, 0x5640, 0x5633, 0x563d, 0x562c, 0x563e, 0x5638, 0x562a,
+ 0x563a, 0x571a, 0x58ab, 0x589d, 0x58b1, 0x58a0, 0x58a3, 0x58af,
+ 0x58ac, 0x58a5, 0x58a1, 0x58ff, 0x5aff, 0x5af4, 0x5afd, 0x5af7,
+ 0x5af6, 0x5b03, 0x5af8, 0x5b02, 0x5af9, 0x5b01, 0x5b07, 0x5b05,
+ 0x5b0f, 0x5c67, 0x5d99, 0x5d97, 0x5d9f, 0x5d92, 0x5da2, 0x5d93,
+ 0x5d95, 0x5da0, 0x5d9c, 0x5da1, 0x5d9a, 0x5d9e, 0x5e69, 0x5e5d,
+ 0x5e60, 0x5e5c, 0x7df3, 0x5edb, 0x5ede, 0x5ee1, 0x5f49, 0x5fb2,
+ 0x618b, 0x6183, 0x6179, 0x61b1, 0x61b0, 0x61a2, 0x6189, 0x619b,
+ 0x6193, 0x61af, 0x61ad, 0x619f, 0x6192, 0x61aa, 0x61a1, 0x618d,
+ 0x6166, 0x61b3, 0x622d, 0x646e, 0x6470, 0x6496, 0x64a0, 0x6485,
+ 0x6497, 0x649c, 0x648f, 0x648b, 0x648a, 0x648c, 0x64a3, 0x649f,
+ 0x6468, 0x64b1, 0x6498, 0x6576, 0x657a, 0x6579, 0x657b, 0x65b2,
+ 0x65b3, 0x66b5, 0x66b0, 0x66a9, 0x66b2, 0x66b7, 0x66aa, 0x66af,
+ 0x6a00, 0x6a06, 0x6a17, 0x69e5, 0x69f8, 0x6a15, 0x69f1, 0x69e4,
+ 0x6a20, 0x69ff, 0x69ec, 0x69e2, 0x6a1b, 0x6a1d, 0x69fe, 0x6a27,
+ 0x69f2, 0x69ee, 0x6a14, 0x69f7, 0x69e7, 0x6a40, 0x6a08, 0x69e6,
+ 0x69fb, 0x6a0d, 0x69fc, 0x69eb, 0x6a09, 0x6a04, 0x6a18, 0x6a25,
+ 0x6a0f, 0x69f6, 0x6a26, 0x6a07, 0x69f4, 0x6a16, 0x6b51, 0x6ba5,
+ 0x6ba3, 0x6ba2, 0x6ba6, 0x6c01, 0x6c00, 0x6bff, 0x6c02, 0x6f41,
+ 0x6f26, 0x6f7e, 0x6f87, 0x6fc6, 0x6f92,
+ /* 0xe6 */
+ 0x6f8d, 0x6f89, 0x6f8c, 0x6f62, 0x6f4f, 0x6f85, 0x6f5a, 0x6f96,
+ 0x6f76, 0x6f6c, 0x6f82, 0x6f55, 0x6f72, 0x6f52, 0x6f50, 0x6f57,
+ 0x6f94, 0x6f93, 0x6f5d, 0x6f00, 0x6f61, 0x6f6b, 0x6f7d, 0x6f67,
+ 0x6f90, 0x6f53, 0x6f8b, 0x6f69, 0x6f7f, 0x6f95, 0x6f63, 0x6f77,
+ 0x6f6a, 0x6f7b, 0x71b2, 0x71af, 0x719b, 0x71b0, 0x71a0, 0x719a,
+ 0x71a9, 0x71b5, 0x719d, 0x71a5, 0x719e, 0x71a4, 0x71a1, 0x71aa,
+ 0x719c, 0x71a7, 0x71b3, 0x7298, 0x729a, 0x7358, 0x7352, 0x735e,
+ 0x735f, 0x7360, 0x735d, 0x735b, 0x7361, 0x735a, 0x7359, 0x7362,
+ 0x7487, 0x7489, 0x748a, 0x7486, 0x7481, 0x747d, 0x7485, 0x7488,
+ 0x747c, 0x7479, 0x7508, 0x7507, 0x757e, 0x7625, 0x761e, 0x7619,
+ 0x761d, 0x761c, 0x7623, 0x761a, 0x7628, 0x761b, 0x769c, 0x769d,
+ 0x769e, 0x769b, 0x778d, 0x778f, 0x7789, 0x7788, 0x78cd, 0x78bb,
+ 0x78cf, 0x78cc, 0x78d1, 0x78ce, 0x78d4, 0x78c8, 0x78c3, 0x78c4,
+ 0x78c9, 0x799a, 0x79a1, 0x79a0, 0x799c, 0x79a2, 0x799b, 0x6b76,
+ 0x7a39, 0x7ab2, 0x7ab4, 0x7ab3, 0x7bb7, 0x7bcb, 0x7bbe, 0x7bac,
+ 0x7bce, 0x7baf, 0x7bb9, 0x7bca, 0x7bb5, 0x7cc5, 0x7cc8, 0x7ccc,
+ 0x7ccb, 0x7df7, 0x7ddb, 0x7dea, 0x7de7, 0x7dd7, 0x7de1, 0x7e03,
+ 0x7dfa, 0x7de6, 0x7df6, 0x7df1, 0x7df0, 0x7dee, 0x7ddf, 0x7f76,
+ 0x7fac, 0x7fb0, 0x7fad, 0x7fed, 0x7feb, 0x7fea, 0x7fec, 0x7fe6,
+ 0x7fe8, 0x8064, 0x8067, 0x81a3, 0x819f,
+ /* 0xe7 */
+ 0x819e, 0x8195, 0x81a2, 0x8199, 0x8197, 0x8216, 0x824f, 0x8253,
+ 0x8252, 0x8250, 0x824e, 0x8251, 0x8524, 0x853b, 0x850f, 0x8500,
+ 0x8529, 0x850e, 0x8509, 0x850d, 0x851f, 0x850a, 0x8527, 0x851c,
+ 0x84fb, 0x852b, 0x84fa, 0x8508, 0x850c, 0x84f4, 0x852a, 0x84f2,
+ 0x8515, 0x84f7, 0x84eb, 0x84f3, 0x84fc, 0x8512, 0x84ea, 0x84e9,
+ 0x8516, 0x84fe, 0x8528, 0x851d, 0x852e, 0x8502, 0x84fd, 0x851e,
+ 0x84f6, 0x8531, 0x8526, 0x84e7, 0x84e8, 0x84f0, 0x84ef, 0x84f9,
+ 0x8518, 0x8520, 0x8530, 0x850b, 0x8519, 0x852f, 0x8662, 0x8756,
+ 0x8763, 0x8764, 0x8777, 0x87e1, 0x8773, 0x8758, 0x8754, 0x875b,
+ 0x8752, 0x8761, 0x875a, 0x8751, 0x875e, 0x876d, 0x876a, 0x8750,
+ 0x874e, 0x875f, 0x875d, 0x876f, 0x876c, 0x877a, 0x876e, 0x875c,
+ 0x8765, 0x874f, 0x877b, 0x8775, 0x8762, 0x8767, 0x8769, 0x885a,
+ 0x8905, 0x890c, 0x8914, 0x890b, 0x8917, 0x8918, 0x8919, 0x8906,
+ 0x8916, 0x8911, 0x890e, 0x8909, 0x89a2, 0x89a4, 0x89a3, 0x89ed,
+ 0x89f0, 0x89ec, 0x8acf, 0x8ac6, 0x8ab8, 0x8ad3, 0x8ad1, 0x8ad4,
+ 0x8ad5, 0x8abb, 0x8ad7, 0x8abe, 0x8ac0, 0x8ac5, 0x8ad8, 0x8ac3,
+ 0x8aba, 0x8abd, 0x8ad9, 0x8c3e, 0x8c4d, 0x8c8f, 0x8ce5, 0x8cdf,
+ 0x8cd9, 0x8ce8, 0x8cda, 0x8cdd, 0x8ce7, 0x8da0, 0x8d9c, 0x8da1,
+ 0x8d9b, 0x8e20, 0x8e23, 0x8e25, 0x8e24, 0x8e2e, 0x8e15, 0x8e1b,
+ 0x8e16, 0x8e11, 0x8e19, 0x8e26, 0x8e27,
+ /* 0xe8 */
+ 0x8e14, 0x8e12, 0x8e18, 0x8e13, 0x8e1c, 0x8e17, 0x8e1a, 0x8f2c,
+ 0x8f24, 0x8f18, 0x8f1a, 0x8f20, 0x8f23, 0x8f16, 0x8f17, 0x9073,
+ 0x9070, 0x906f, 0x9067, 0x906b, 0x912f, 0x912b, 0x9129, 0x912a,
+ 0x9132, 0x9126, 0x912e, 0x9185, 0x9186, 0x918a, 0x9181, 0x9182,
+ 0x9184, 0x9180, 0x92d0, 0x92c3, 0x92c4, 0x92c0, 0x92d9, 0x92b6,
+ 0x92cf, 0x92f1, 0x92df, 0x92d8, 0x92e9, 0x92d7, 0x92dd, 0x92cc,
+ 0x92ef, 0x92c2, 0x92e8, 0x92ca, 0x92c8, 0x92ce, 0x92e6, 0x92cd,
+ 0x92d5, 0x92c9, 0x92e0, 0x92de, 0x92e7, 0x92d1, 0x92d3, 0x92b5,
+ 0x92e1, 0x92c6, 0x92b4, 0x957c, 0x95ac, 0x95ab, 0x95ae, 0x95b0,
+ 0x96a4, 0x96a2, 0x96d3, 0x9705, 0x9708, 0x9702, 0x975a, 0x978a,
+ 0x978e, 0x9788, 0x97d0, 0x97cf, 0x981e, 0x981d, 0x9826, 0x9829,
+ 0x9828, 0x9820, 0x981b, 0x9827, 0x98b2, 0x9908, 0x98fa, 0x9911,
+ 0x9914, 0x9916, 0x9917, 0x9915, 0x99dc, 0x99cd, 0x99cf, 0x99d3,
+ 0x99d4, 0x99ce, 0x99c9, 0x99d6, 0x99d8, 0x99cb, 0x99d7, 0x99cc,
+ 0x9ab3, 0x9aec, 0x9aeb, 0x9af3, 0x9af2, 0x9af1, 0x9b46, 0x9b43,
+ 0x9b67, 0x9b74, 0x9b71, 0x9b66, 0x9b76, 0x9b75, 0x9b70, 0x9b68,
+ 0x9b64, 0x9b6c, 0x9cfc, 0x9cfa, 0x9cfd, 0x9cff, 0x9cf7, 0x9d07,
+ 0x9d00, 0x9cf9, 0x9cfb, 0x9d08, 0x9d05, 0x9d04, 0x9e83, 0x9ed3,
+ 0x9f0f, 0x9f10, 0x511c, 0x5113, 0x5117, 0x511a, 0x5111, 0x51de,
+ 0x5334, 0x53e1, 0x5670, 0x5660, 0x566e,
+ /* 0xe9 */
+ 0x5673, 0x5666, 0x5663, 0x566d, 0x5672, 0x565e, 0x5677, 0x571c,
+ 0x571b, 0x58c8, 0x58bd, 0x58c9, 0x58bf, 0x58ba, 0x58c2, 0x58bc,
+ 0x58c6, 0x5b17, 0x5b19, 0x5b1b, 0x5b21, 0x5b14, 0x5b13, 0x5b10,
+ 0x5b16, 0x5b28, 0x5b1a, 0x5b20, 0x5b1e, 0x5bef, 0x5dac, 0x5db1,
+ 0x5da9, 0x5da7, 0x5db5, 0x5db0, 0x5dae, 0x5daa, 0x5da8, 0x5db2,
+ 0x5dad, 0x5daf, 0x5db4, 0x5e67, 0x5e68, 0x5e66, 0x5e6f, 0x5ee9,
+ 0x5ee7, 0x5ee6, 0x5ee8, 0x5ee5, 0x5f4b, 0x5fbc, 0x619d, 0x61a8,
+ 0x6196, 0x61c5, 0x61b4, 0x61c6, 0x61c1, 0x61cc, 0x61ba, 0x61bf,
+ 0x61b8, 0x618c, 0x64d7, 0x64d6, 0x64d0, 0x64cf, 0x64c9, 0x64bd,
+ 0x6489, 0x64c3, 0x64db, 0x64f3, 0x64d9, 0x6533, 0x657f, 0x657c,
+ 0x65a2, 0x66c8, 0x66be, 0x66c0, 0x66ca, 0x66cb, 0x66cf, 0x66bd,
+ 0x66bb, 0x66ba, 0x66cc, 0x6723, 0x6a34, 0x6a66, 0x6a49, 0x6a67,
+ 0x6a32, 0x6a68, 0x6a3e, 0x6a5d, 0x6a6d, 0x6a76, 0x6a5b, 0x6a51,
+ 0x6a28, 0x6a5a, 0x6a3b, 0x6a3f, 0x6a41, 0x6a6a, 0x6a64, 0x6a50,
+ 0x6a4f, 0x6a54, 0x6a6f, 0x6a69, 0x6a60, 0x6a3c, 0x6a5e, 0x6a56,
+ 0x6a55, 0x6a4d, 0x6a4e, 0x6a46, 0x6b55, 0x6b54, 0x6b56, 0x6ba7,
+ 0x6baa, 0x6bab, 0x6bc8, 0x6bc7, 0x6c04, 0x6c03, 0x6c06, 0x6fad,
+ 0x6fcb, 0x6fa3, 0x6fc7, 0x6fbc, 0x6fce, 0x6fc8, 0x6f5e, 0x6fc4,
+ 0x6fbd, 0x6f9e, 0x6fca, 0x6fa8, 0x7004, 0x6fa5, 0x6fae, 0x6fba,
+ 0x6fac, 0x6faa, 0x6fcf, 0x6fbf, 0x6fb8,
+ /* 0xea */
+ 0x6fa2, 0x6fc9, 0x6fab, 0x6fcd, 0x6faf, 0x6fb2, 0x6fb0, 0x71c5,
+ 0x71c2, 0x71bf, 0x71b8, 0x71d6, 0x71c0, 0x71c1, 0x71cb, 0x71d4,
+ 0x71ca, 0x71c7, 0x71cf, 0x71bd, 0x71d8, 0x71bc, 0x71c6, 0x71da,
+ 0x71db, 0x729d, 0x729e, 0x7369, 0x7366, 0x7367, 0x736c, 0x7365,
+ 0x736b, 0x736a, 0x747f, 0x749a, 0x74a0, 0x7494, 0x7492, 0x7495,
+ 0x74a1, 0x750b, 0x7580, 0x762f, 0x762d, 0x7631, 0x763d, 0x7633,
+ 0x763c, 0x7635, 0x7632, 0x7630, 0x76bb, 0x76e6, 0x779a, 0x779d,
+ 0x77a1, 0x779c, 0x779b, 0x77a2, 0x77a3, 0x7795, 0x7799, 0x7797,
+ 0x78dd, 0x78e9, 0x78e5, 0x78ea, 0x78de, 0x78e3, 0x78db, 0x78e1,
+ 0x78e2, 0x78ed, 0x78df, 0x78e0, 0x79a4, 0x7a44, 0x7a48, 0x7a47,
+ 0x7ab6, 0x7ab8, 0x7ab5, 0x7ab1, 0x7ab7, 0x7bde, 0x7be3, 0x7be7,
+ 0x7bdd, 0x7bd5, 0x7be5, 0x7bda, 0x7be8, 0x7bf9, 0x7bd4, 0x7bea,
+ 0x7be2, 0x7bdc, 0x7beb, 0x7bd8, 0x7bdf, 0x7cd2, 0x7cd4, 0x7cd7,
+ 0x7cd0, 0x7cd1, 0x7e12, 0x7e21, 0x7e17, 0x7e0c, 0x7e1f, 0x7e20,
+ 0x7e13, 0x7e0e, 0x7e1c, 0x7e15, 0x7e1a, 0x7e22, 0x7e0b, 0x7e0f,
+ 0x7e16, 0x7e0d, 0x7e14, 0x7e25, 0x7e24, 0x7f43, 0x7f7b, 0x7f7c,
+ 0x7f7a, 0x7fb1, 0x7fef, 0x802a, 0x8029, 0x806c, 0x81b1, 0x81a6,
+ 0x81ae, 0x81b9, 0x81b5, 0x81ab, 0x81b0, 0x81ac, 0x81b4, 0x81b2,
+ 0x81b7, 0x81a7, 0x81f2, 0x8255, 0x8256, 0x8257, 0x8556, 0x8545,
+ 0x856b, 0x854d, 0x8553, 0x8561, 0x8558,
+ /* 0xeb */
+ 0x8540, 0x8546, 0x8564, 0x8541, 0x8562, 0x8544, 0x8551, 0x8547,
+ 0x8563, 0x853e, 0x855b, 0x8571, 0x854e, 0x856e, 0x8575, 0x8555,
+ 0x8567, 0x8560, 0x858c, 0x8566, 0x855d, 0x8554, 0x8565, 0x856c,
+ 0x8663, 0x8665, 0x8664, 0x879b, 0x878f, 0x8797, 0x8793, 0x8792,
+ 0x8788, 0x8781, 0x8796, 0x8798, 0x8779, 0x8787, 0x87a3, 0x8785,
+ 0x8790, 0x8791, 0x879d, 0x8784, 0x8794, 0x879c, 0x879a, 0x8789,
+ 0x891e, 0x8926, 0x8930, 0x892d, 0x892e, 0x8927, 0x8931, 0x8922,
+ 0x8929, 0x8923, 0x892f, 0x892c, 0x891f, 0x89f1, 0x8ae0, 0x8ae2,
+ 0x8af2, 0x8af4, 0x8af5, 0x8add, 0x8b14, 0x8ae4, 0x8adf, 0x8af0,
+ 0x8ac8, 0x8ade, 0x8ae1, 0x8ae8, 0x8aff, 0x8aef, 0x8afb, 0x8c91,
+ 0x8c92, 0x8c90, 0x8cf5, 0x8cee, 0x8cf1, 0x8cf0, 0x8cf3, 0x8d6c,
+ 0x8d6e, 0x8da5, 0x8da7, 0x8e33, 0x8e3e, 0x8e38, 0x8e40, 0x8e45,
+ 0x8e36, 0x8e3c, 0x8e3d, 0x8e41, 0x8e30, 0x8e3f, 0x8ebd, 0x8f36,
+ 0x8f2e, 0x8f35, 0x8f32, 0x8f39, 0x8f37, 0x8f34, 0x9076, 0x9079,
+ 0x907b, 0x9086, 0x90fa, 0x9133, 0x9135, 0x9136, 0x9193, 0x9190,
+ 0x9191, 0x918d, 0x918f, 0x9327, 0x931e, 0x9308, 0x931f, 0x9306,
+ 0x930f, 0x937a, 0x9338, 0x933c, 0x931b, 0x9323, 0x9312, 0x9301,
+ 0x9346, 0x932d, 0x930e, 0x930d, 0x92cb, 0x931d, 0x92fa, 0x9325,
+ 0x9313, 0x92f9, 0x92f7, 0x9334, 0x9302, 0x9324, 0x92ff, 0x9329,
+ 0x9339, 0x9335, 0x932a, 0x9314, 0x930c,
+ /* 0xec */
+ 0x930b, 0x92fe, 0x9309, 0x9300, 0x92fb, 0x9316, 0x95bc, 0x95cd,
+ 0x95be, 0x95b9, 0x95ba, 0x95b6, 0x95bf, 0x95b5, 0x95bd, 0x96a9,
+ 0x96d4, 0x970b, 0x9712, 0x9710, 0x9799, 0x9797, 0x9794, 0x97f0,
+ 0x97f8, 0x9835, 0x982f, 0x9832, 0x9924, 0x991f, 0x9927, 0x9929,
+ 0x999e, 0x99ee, 0x99ec, 0x99e5, 0x99e4, 0x99f0, 0x99e3, 0x99ea,
+ 0x99e9, 0x99e7, 0x9ab9, 0x9abf, 0x9ab4, 0x9abb, 0x9af6, 0x9afa,
+ 0x9af9, 0x9af7, 0x9b33, 0x9b80, 0x9b85, 0x9b87, 0x9b7c, 0x9b7e,
+ 0x9b7b, 0x9b82, 0x9b93, 0x9b92, 0x9b90, 0x9b7a, 0x9b95, 0x9b7d,
+ 0x9b88, 0x9d25, 0x9d17, 0x9d20, 0x9d1e, 0x9d14, 0x9d29, 0x9d1d,
+ 0x9d18, 0x9d22, 0x9d10, 0x9d19, 0x9d1f, 0x9e88, 0x9e86, 0x9e87,
+ 0x9eae, 0x9ead, 0x9ed5, 0x9ed6, 0x9efa, 0x9f12, 0x9f3d, 0x5126,
+ 0x5125, 0x5122, 0x5124, 0x5120, 0x5129, 0x52f4, 0x5693, 0x568c,
+ 0x568d, 0x5686, 0x5684, 0x5683, 0x567e, 0x5682, 0x567f, 0x5681,
+ 0x58d6, 0x58d4, 0x58cf, 0x58d2, 0x5b2d, 0x5b25, 0x5b32, 0x5b23,
+ 0x5b2c, 0x5b27, 0x5b26, 0x5b2f, 0x5b2e, 0x5b7b, 0x5bf1, 0x5bf2,
+ 0x5db7, 0x5e6c, 0x5e6a, 0x5fbe, 0x5fbb, 0x61c3, 0x61b5, 0x61bc,
+ 0x61e7, 0x61e0, 0x61e5, 0x61e4, 0x61e8, 0x61de, 0x64ef, 0x64e9,
+ 0x64e3, 0x64eb, 0x64e4, 0x64e8, 0x6581, 0x6580, 0x65b6, 0x65da,
+ 0x66d2, 0x6a8d, 0x6a96, 0x6a81, 0x6aa5, 0x6a89, 0x6a9f, 0x6a9b,
+ 0x6aa1, 0x6a9e, 0x6a87, 0x6a93, 0x6a8e,
+ /* 0xed */
+ 0x6a95, 0x6a83, 0x6aa8, 0x6aa4, 0x6a91, 0x6a7f, 0x6aa6, 0x6a9a,
+ 0x6a85, 0x6a8c, 0x6a92, 0x6b5b, 0x6bad, 0x6c09, 0x6fcc, 0x6fa9,
+ 0x6ff4, 0x6fd4, 0x6fe3, 0x6fdc, 0x6fed, 0x6fe7, 0x6fe6, 0x6fde,
+ 0x6ff2, 0x6fdd, 0x6fe2, 0x6fe8, 0x71e1, 0x71f1, 0x71e8, 0x71f2,
+ 0x71e4, 0x71f0, 0x71e2, 0x7373, 0x736e, 0x736f, 0x7497, 0x74b2,
+ 0x74ab, 0x7490, 0x74aa, 0x74ad, 0x74b1, 0x74a5, 0x74af, 0x7510,
+ 0x7511, 0x7512, 0x750f, 0x7584, 0x7643, 0x7648, 0x7649, 0x7647,
+ 0x76a4, 0x76e9, 0x77b5, 0x77ab, 0x77b2, 0x77b7, 0x77b6, 0x77b4,
+ 0x77b1, 0x77a8, 0x77f0, 0x78f3, 0x78fd, 0x7902, 0x78fb, 0x78fc,
+ 0x78f2, 0x7905, 0x78f9, 0x78fe, 0x7904, 0x79ab, 0x79a8, 0x7a5c,
+ 0x7a5b, 0x7a56, 0x7a58, 0x7a54, 0x7a5a, 0x7abe, 0x7ac0, 0x7ac1,
+ 0x7c05, 0x7c0f, 0x7bf2, 0x7c00, 0x7bff, 0x7bfb, 0x7c0e, 0x7bf4,
+ 0x7c0b, 0x7bf3, 0x7c02, 0x7c09, 0x7c03, 0x7c01, 0x7bf8, 0x7bfd,
+ 0x7c06, 0x7bf0, 0x7bf1, 0x7c10, 0x7c0a, 0x7ce8, 0x7e2d, 0x7e3c,
+ 0x7e42, 0x7e33, 0x9848, 0x7e38, 0x7e2a, 0x7e49, 0x7e40, 0x7e47,
+ 0x7e29, 0x7e4c, 0x7e30, 0x7e3b, 0x7e36, 0x7e44, 0x7e3a, 0x7f45,
+ 0x7f7f, 0x7f7e, 0x7f7d, 0x7ff4, 0x7ff2, 0x802c, 0x81bb, 0x81c4,
+ 0x81cc, 0x81ca, 0x81c5, 0x81c7, 0x81bc, 0x81e9, 0x825b, 0x825a,
+ 0x825c, 0x8583, 0x8580, 0x858f, 0x85a7, 0x8595, 0x85a0, 0x858b,
+ 0x85a3, 0x857b, 0x85a4, 0x859a, 0x859e,
+ /* 0xee */
+ 0x8577, 0x857c, 0x8589, 0x85a1, 0x857a, 0x8578, 0x8557, 0x858e,
+ 0x8596, 0x8586, 0x858d, 0x8599, 0x859d, 0x8581, 0x85a2, 0x8582,
+ 0x8588, 0x8585, 0x8579, 0x8576, 0x8598, 0x8590, 0x859f, 0x8668,
+ 0x87be, 0x87aa, 0x87ad, 0x87c5, 0x87b0, 0x87ac, 0x87b9, 0x87b5,
+ 0x87bc, 0x87ae, 0x87c9, 0x87c3, 0x87c2, 0x87cc, 0x87b7, 0x87af,
+ 0x87c4, 0x87ca, 0x87b4, 0x87b6, 0x87bf, 0x87b8, 0x87bd, 0x87de,
+ 0x87b2, 0x8935, 0x8933, 0x893c, 0x893e, 0x8941, 0x8952, 0x8937,
+ 0x8942, 0x89ad, 0x89af, 0x89ae, 0x89f2, 0x89f3, 0x8b1e, 0x8b18,
+ 0x8b16, 0x8b11, 0x8b05, 0x8b0b, 0x8b22, 0x8b0f, 0x8b12, 0x8b15,
+ 0x8b07, 0x8b0d, 0x8b08, 0x8b06, 0x8b1c, 0x8b13, 0x8b1a, 0x8c4f,
+ 0x8c70, 0x8c72, 0x8c71, 0x8c6f, 0x8c95, 0x8c94, 0x8cf9, 0x8d6f,
+ 0x8e4e, 0x8e4d, 0x8e53, 0x8e50, 0x8e4c, 0x8e47, 0x8f43, 0x8f40,
+ 0x9085, 0x907e, 0x9138, 0x919a, 0x91a2, 0x919b, 0x9199, 0x919f,
+ 0x91a1, 0x919d, 0x91a0, 0x93a1, 0x9383, 0x93af, 0x9364, 0x9356,
+ 0x9347, 0x937c, 0x9358, 0x935c, 0x9376, 0x9349, 0x9350, 0x9351,
+ 0x9360, 0x936d, 0x938f, 0x934c, 0x936a, 0x9379, 0x9357, 0x9355,
+ 0x9352, 0x934f, 0x9371, 0x9377, 0x937b, 0x9361, 0x935e, 0x9363,
+ 0x9367, 0x9380, 0x934e, 0x9359, 0x95c7, 0x95c0, 0x95c9, 0x95c3,
+ 0x95c5, 0x95b7, 0x96ae, 0x96b0, 0x96ac, 0x9720, 0x971f, 0x9718,
+ 0x971d, 0x9719, 0x979a, 0x97a1, 0x979c,
+ /* 0xef */
+ 0x979e, 0x979d, 0x97d5, 0x97d4, 0x97f1, 0x9841, 0x9844, 0x984a,
+ 0x9849, 0x9845, 0x9843, 0x9925, 0x992b, 0x992c, 0x992a, 0x9933,
+ 0x9932, 0x992f, 0x992d, 0x9931, 0x9930, 0x9998, 0x99a3, 0x99a1,
+ 0x9a02, 0x99fa, 0x99f4, 0x99f7, 0x99f9, 0x99f8, 0x99f6, 0x99fb,
+ 0x99fd, 0x99fe, 0x99fc, 0x9a03, 0x9abe, 0x9afe, 0x9afd, 0x9b01,
+ 0x9afc, 0x9b48, 0x9b9a, 0x9ba8, 0x9b9e, 0x9b9b, 0x9ba6, 0x9ba1,
+ 0x9ba5, 0x9ba4, 0x9b86, 0x9ba2, 0x9ba0, 0x9baf, 0x9d33, 0x9d41,
+ 0x9d67, 0x9d36, 0x9d2e, 0x9d2f, 0x9d31, 0x9d38, 0x9d30, 0x9d45,
+ 0x9d42, 0x9d43, 0x9d3e, 0x9d37, 0x9d40, 0x9d3d, 0x7ff5, 0x9d2d,
+ 0x9e8a, 0x9e89, 0x9e8d, 0x9eb0, 0x9ec8, 0x9eda, 0x9efb, 0x9eff,
+ 0x9f24, 0x9f23, 0x9f22, 0x9f54, 0x9fa0, 0x5131, 0x512d, 0x512e,
+ 0x5698, 0x569c, 0x5697, 0x569a, 0x569d, 0x5699, 0x5970, 0x5b3c,
+ 0x5c69, 0x5c6a, 0x5dc0, 0x5e6d, 0x5e6e, 0x61d8, 0x61df, 0x61ed,
+ 0x61ee, 0x61f1, 0x61ea, 0x61f0, 0x61eb, 0x61d6, 0x61e9, 0x64ff,
+ 0x6504, 0x64fd, 0x64f8, 0x6501, 0x6503, 0x64fc, 0x6594, 0x65db,
+ 0x66da, 0x66db, 0x66d8, 0x6ac5, 0x6ab9, 0x6abd, 0x6ae1, 0x6ac6,
+ 0x6aba, 0x6ab6, 0x6ab7, 0x6ac7, 0x6ab4, 0x6aad, 0x6b5e, 0x6bc9,
+ 0x6c0b, 0x7007, 0x700c, 0x700d, 0x7001, 0x7005, 0x7014, 0x700e,
+ 0x6fff, 0x7000, 0x6ffb, 0x7026, 0x6ffc, 0x6ff7, 0x700a, 0x7201,
+ 0x71ff, 0x71f9, 0x7203, 0x71fd, 0x7376,
+ /* 0xf0 */
+ 0x74b8, 0x74c0, 0x74b5, 0x74c1, 0x74be, 0x74b6, 0x74bb, 0x74c2,
+ 0x7514, 0x7513, 0x765c, 0x7664, 0x7659, 0x7650, 0x7653, 0x7657,
+ 0x765a, 0x76a6, 0x76bd, 0x76ec, 0x77c2, 0x77ba, 0x78ff, 0x790c,
+ 0x7913, 0x7914, 0x7909, 0x7910, 0x7912, 0x7911, 0x79ad, 0x79ac,
+ 0x7a5f, 0x7c1c, 0x7c29, 0x7c19, 0x7c20, 0x7c1f, 0x7c2d, 0x7c1d,
+ 0x7c26, 0x7c28, 0x7c22, 0x7c25, 0x7c30, 0x7e5c, 0x7e50, 0x7e56,
+ 0x7e63, 0x7e58, 0x7e62, 0x7e5f, 0x7e51, 0x7e60, 0x7e57, 0x7e53,
+ 0x7fb5, 0x7fb3, 0x7ff7, 0x7ff8, 0x8075, 0x81d1, 0x81d2, 0x81d0,
+ 0x825f, 0x825e, 0x85b4, 0x85c6, 0x85c0, 0x85c3, 0x85c2, 0x85b3,
+ 0x85b5, 0x85bd, 0x85c7, 0x85c4, 0x85bf, 0x85cb, 0x85ce, 0x85c8,
+ 0x85c5, 0x85b1, 0x85b6, 0x85d2, 0x8624, 0x85b8, 0x85b7, 0x85be,
+ 0x8669, 0x87e7, 0x87e6, 0x87e2, 0x87db, 0x87eb, 0x87ea, 0x87e5,
+ 0x87df, 0x87f3, 0x87e4, 0x87d4, 0x87dc, 0x87d3, 0x87ed, 0x87d8,
+ 0x87e3, 0x87a4, 0x87d7, 0x87d9, 0x8801, 0x87f4, 0x87e8, 0x87dd,
+ 0x8953, 0x894b, 0x894f, 0x894c, 0x8946, 0x8950, 0x8951, 0x8949,
+ 0x8b2a, 0x8b27, 0x8b23, 0x8b33, 0x8b30, 0x8b35, 0x8b47, 0x8b2f,
+ 0x8b3c, 0x8b3e, 0x8b31, 0x8b25, 0x8b37, 0x8b26, 0x8b36, 0x8b2e,
+ 0x8b24, 0x8b3b, 0x8b3d, 0x8b3a, 0x8c42, 0x8c75, 0x8c99, 0x8c98,
+ 0x8c97, 0x8cfe, 0x8d04, 0x8d02, 0x8d00, 0x8e5c, 0x8e62, 0x8e60,
+ 0x8e57, 0x8e56, 0x8e5e, 0x8e65, 0x8e67,
+ /* 0xf1 */
+ 0x8e5b, 0x8e5a, 0x8e61, 0x8e5d, 0x8e69, 0x8e54, 0x8f46, 0x8f47,
+ 0x8f48, 0x8f4b, 0x9128, 0x913a, 0x913b, 0x913e, 0x91a8, 0x91a5,
+ 0x91a7, 0x91af, 0x91aa, 0x93b5, 0x938c, 0x9392, 0x93b7, 0x939b,
+ 0x939d, 0x9389, 0x93a7, 0x938e, 0x93aa, 0x939e, 0x93a6, 0x9395,
+ 0x9388, 0x9399, 0x939f, 0x938d, 0x93b1, 0x9391, 0x93b2, 0x93a4,
+ 0x93a8, 0x93b4, 0x93a3, 0x93a5, 0x95d2, 0x95d3, 0x95d1, 0x96b3,
+ 0x96d7, 0x96da, 0x5dc2, 0x96df, 0x96d8, 0x96dd, 0x9723, 0x9722,
+ 0x9725, 0x97ac, 0x97ae, 0x97a8, 0x97ab, 0x97a4, 0x97aa, 0x97a2,
+ 0x97a5, 0x97d7, 0x97d9, 0x97d6, 0x97d8, 0x97fa, 0x9850, 0x9851,
+ 0x9852, 0x98b8, 0x9941, 0x993c, 0x993a, 0x9a0f, 0x9a0b, 0x9a09,
+ 0x9a0d, 0x9a04, 0x9a11, 0x9a0a, 0x9a05, 0x9a07, 0x9a06, 0x9ac0,
+ 0x9adc, 0x9b08, 0x9b04, 0x9b05, 0x9b29, 0x9b35, 0x9b4a, 0x9b4c,
+ 0x9b4b, 0x9bc7, 0x9bc6, 0x9bc3, 0x9bbf, 0x9bc1, 0x9bb5, 0x9bb8,
+ 0x9bd3, 0x9bb6, 0x9bc4, 0x9bb9, 0x9bbd, 0x9d5c, 0x9d53, 0x9d4f,
+ 0x9d4a, 0x9d5b, 0x9d4b, 0x9d59, 0x9d56, 0x9d4c, 0x9d57, 0x9d52,
+ 0x9d54, 0x9d5f, 0x9d58, 0x9d5a, 0x9e8e, 0x9e8c, 0x9edf, 0x9f01,
+ 0x9f00, 0x9f16, 0x9f25, 0x9f2b, 0x9f2a, 0x9f29, 0x9f28, 0x9f4c,
+ 0x9f55, 0x5134, 0x5135, 0x5296, 0x52f7, 0x53b4, 0x56ab, 0x56ad,
+ 0x56a6, 0x56a7, 0x56aa, 0x56ac, 0x58da, 0x58dd, 0x58db, 0x5912,
+ 0x5b3d, 0x5b3e, 0x5b3f, 0x5dc3, 0x5e70,
+ /* 0xf2 */
+ 0x5fbf, 0x61fb, 0x6507, 0x6510, 0x650d, 0x6509, 0x650c, 0x650e,
+ 0x6584, 0x65de, 0x65dd, 0x66de, 0x6ae7, 0x6ae0, 0x6acc, 0x6ad1,
+ 0x6ad9, 0x6acb, 0x6adf, 0x6adc, 0x6ad0, 0x6aeb, 0x6acf, 0x6acd,
+ 0x6ade, 0x6b60, 0x6bb0, 0x6c0c, 0x7019, 0x7027, 0x7020, 0x7016,
+ 0x702b, 0x7021, 0x7022, 0x7023, 0x7029, 0x7017, 0x7024, 0x701c,
+ 0x702a, 0x720c, 0x720a, 0x7207, 0x7202, 0x7205, 0x72a5, 0x72a6,
+ 0x72a4, 0x72a3, 0x72a1, 0x74cb, 0x74c5, 0x74b7, 0x74c3, 0x7516,
+ 0x7660, 0x77c9, 0x77ca, 0x77c4, 0x77f1, 0x791d, 0x791b, 0x7921,
+ 0x791c, 0x7917, 0x791e, 0x79b0, 0x7a67, 0x7a68, 0x7c33, 0x7c3c,
+ 0x7c39, 0x7c2c, 0x7c3b, 0x7cec, 0x7cea, 0x7e76, 0x7e75, 0x7e78,
+ 0x7e70, 0x7e77, 0x7e6f, 0x7e7a, 0x7e72, 0x7e74, 0x7e68, 0x7f4b,
+ 0x7f4a, 0x7f83, 0x7f86, 0x7fb7, 0x7ffd, 0x7ffe, 0x8078, 0x81d7,
+ 0x81d5, 0x8264, 0x8261, 0x8263, 0x85eb, 0x85f1, 0x85ed, 0x85d9,
+ 0x85e1, 0x85e8, 0x85da, 0x85d7, 0x85ec, 0x85f2, 0x85f8, 0x85d8,
+ 0x85df, 0x85e3, 0x85dc, 0x85d1, 0x85f0, 0x85e6, 0x85ef, 0x85de,
+ 0x85e2, 0x8800, 0x87fa, 0x8803, 0x87f6, 0x87f7, 0x8809, 0x880c,
+ 0x880b, 0x8806, 0x87fc, 0x8808, 0x87ff, 0x880a, 0x8802, 0x8962,
+ 0x895a, 0x895b, 0x8957, 0x8961, 0x895c, 0x8958, 0x895d, 0x8959,
+ 0x8988, 0x89b7, 0x89b6, 0x89f6, 0x8b50, 0x8b48, 0x8b4a, 0x8b40,
+ 0x8b53, 0x8b56, 0x8b54, 0x8b4b, 0x8b55,
+ /* 0xf3 */
+ 0x8b51, 0x8b42, 0x8b52, 0x8b57, 0x8c43, 0x8c77, 0x8c76, 0x8c9a,
+ 0x8d06, 0x8d07, 0x8d09, 0x8dac, 0x8daa, 0x8dad, 0x8dab, 0x8e6d,
+ 0x8e78, 0x8e73, 0x8e6a, 0x8e6f, 0x8e7b, 0x8ec2, 0x8f52, 0x8f51,
+ 0x8f4f, 0x8f50, 0x8f53, 0x8fb4, 0x9140, 0x913f, 0x91b0, 0x91ad,
+ 0x93de, 0x93c7, 0x93cf, 0x93c2, 0x93da, 0x93d0, 0x93f9, 0x93ec,
+ 0x93cc, 0x93d9, 0x93a9, 0x93e6, 0x93ca, 0x93d4, 0x93ee, 0x93e3,
+ 0x93d5, 0x93c4, 0x93ce, 0x93c0, 0x93d2, 0x93e7, 0x957d, 0x95da,
+ 0x95db, 0x96e1, 0x9729, 0x972b, 0x972c, 0x9728, 0x9726, 0x97b3,
+ 0x97b7, 0x97b6, 0x97dd, 0x97de, 0x97df, 0x985c, 0x9859, 0x985d,
+ 0x9857, 0x98bf, 0x98bd, 0x98bb, 0x98be, 0x9948, 0x9947, 0x9943,
+ 0x99a6, 0x99a7, 0x9a1a, 0x9a15, 0x9a25, 0x9a1d, 0x9a24, 0x9a1b,
+ 0x9a22, 0x9a20, 0x9a27, 0x9a23, 0x9a1e, 0x9a1c, 0x9a14, 0x9ac2,
+ 0x9b0b, 0x9b0a, 0x9b0e, 0x9b0c, 0x9b37, 0x9bea, 0x9beb, 0x9be0,
+ 0x9bde, 0x9be4, 0x9be6, 0x9be2, 0x9bf0, 0x9bd4, 0x9bd7, 0x9bec,
+ 0x9bdc, 0x9bd9, 0x9be5, 0x9bd5, 0x9be1, 0x9bda, 0x9d77, 0x9d81,
+ 0x9d8a, 0x9d84, 0x9d88, 0x9d71, 0x9d80, 0x9d78, 0x9d86, 0x9d8b,
+ 0x9d8c, 0x9d7d, 0x9d6b, 0x9d74, 0x9d75, 0x9d70, 0x9d69, 0x9d85,
+ 0x9d73, 0x9d7b, 0x9d82, 0x9d6f, 0x9d79, 0x9d7f, 0x9d87, 0x9d68,
+ 0x9e94, 0x9e91, 0x9ec0, 0x9efc, 0x9f2d, 0x9f40, 0x9f41, 0x9f4d,
+ 0x9f56, 0x9f57, 0x9f58, 0x5337, 0x56b2,
+ /* 0xf4 */
+ 0x56b5, 0x56b3, 0x58e3, 0x5b45, 0x5dc6, 0x5dc7, 0x5eee, 0x5eef,
+ 0x5fc0, 0x5fc1, 0x61f9, 0x6517, 0x6516, 0x6515, 0x6513, 0x65df,
+ 0x66e8, 0x66e3, 0x66e4, 0x6af3, 0x6af0, 0x6aea, 0x6ae8, 0x6af9,
+ 0x6af1, 0x6aee, 0x6aef, 0x703c, 0x7035, 0x702f, 0x7037, 0x7034,
+ 0x7031, 0x7042, 0x7038, 0x703f, 0x703a, 0x7039, 0x7040, 0x703b,
+ 0x7033, 0x7041, 0x7213, 0x7214, 0x72a8, 0x737d, 0x737c, 0x74ba,
+ 0x76ab, 0x76aa, 0x76be, 0x76ed, 0x77cc, 0x77ce, 0x77cf, 0x77cd,
+ 0x77f2, 0x7925, 0x7923, 0x7927, 0x7928, 0x7924, 0x7929, 0x79b2,
+ 0x7a6e, 0x7a6c, 0x7a6d, 0x7af7, 0x7c49, 0x7c48, 0x7c4a, 0x7c47,
+ 0x7c45, 0x7cee, 0x7e7b, 0x7e7e, 0x7e81, 0x7e80, 0x7fba, 0x7fff,
+ 0x8079, 0x81db, 0x81d9, 0x820b, 0x8268, 0x8269, 0x8622, 0x85ff,
+ 0x8601, 0x85fe, 0x861b, 0x8600, 0x85f6, 0x8604, 0x8609, 0x8605,
+ 0x860c, 0x85fd, 0x8819, 0x8810, 0x8811, 0x8817, 0x8813, 0x8816,
+ 0x8963, 0x8966, 0x89b9, 0x89f7, 0x8b60, 0x8b6a, 0x8b5d, 0x8b68,
+ 0x8b63, 0x8b65, 0x8b67, 0x8b6d, 0x8dae, 0x8e86, 0x8e88, 0x8e84,
+ 0x8f59, 0x8f56, 0x8f57, 0x8f55, 0x8f58, 0x8f5a, 0x908d, 0x9143,
+ 0x9141, 0x91b7, 0x91b5, 0x91b2, 0x91b3, 0x940b, 0x9413, 0x93fb,
+ 0x9420, 0x940f, 0x9414, 0x93fe, 0x9415, 0x9410, 0x9428, 0x9419,
+ 0x940d, 0x93f5, 0x9400, 0x93f7, 0x9407, 0x940e, 0x9416, 0x9412,
+ 0x93fa, 0x9409, 0x93f8, 0x940a, 0x93ff,
+ /* 0xf5 */
+ 0x93fc, 0x940c, 0x93f6, 0x9411, 0x9406, 0x95de, 0x95e0, 0x95df,
+ 0x972e, 0x972f, 0x97b9, 0x97bb, 0x97fd, 0x97fe, 0x9860, 0x9862,
+ 0x9863, 0x985f, 0x98c1, 0x98c2, 0x9950, 0x994e, 0x9959, 0x994c,
+ 0x994b, 0x9953, 0x9a32, 0x9a34, 0x9a31, 0x9a2c, 0x9a2a, 0x9a36,
+ 0x9a29, 0x9a2e, 0x9a38, 0x9a2d, 0x9ac7, 0x9aca, 0x9ac6, 0x9b10,
+ 0x9b12, 0x9b11, 0x9c0b, 0x9c08, 0x9bf7, 0x9c05, 0x9c12, 0x9bf8,
+ 0x9c40, 0x9c07, 0x9c0e, 0x9c06, 0x9c17, 0x9c14, 0x9c09, 0x9d9f,
+ 0x9d99, 0x9da4, 0x9d9d, 0x9d92, 0x9d98, 0x9d90, 0x9d9b, 0x9da0,
+ 0x9d94, 0x9d9c, 0x9daa, 0x9d97, 0x9da1, 0x9d9a, 0x9da2, 0x9da8,
+ 0x9d9e, 0x9da3, 0x9dbf, 0x9da9, 0x9d96, 0x9da6, 0x9da7, 0x9e99,
+ 0x9e9b, 0x9e9a, 0x9ee5, 0x9ee4, 0x9ee7, 0x9ee6, 0x9f30, 0x9f2e,
+ 0x9f5b, 0x9f60, 0x9f5e, 0x9f5d, 0x9f59, 0x9f91, 0x513a, 0x5139,
+ 0x5298, 0x5297, 0x56c3, 0x56bd, 0x56be, 0x5b48, 0x5b47, 0x5dcb,
+ 0x5dcf, 0x5ef1, 0x61fd, 0x651b, 0x6b02, 0x6afc, 0x6b03, 0x6af8,
+ 0x6b00, 0x7043, 0x7044, 0x704a, 0x7048, 0x7049, 0x7045, 0x7046,
+ 0x721d, 0x721a, 0x7219, 0x737e, 0x7517, 0x766a, 0x77d0, 0x792d,
+ 0x7931, 0x792f, 0x7c54, 0x7c53, 0x7cf2, 0x7e8a, 0x7e87, 0x7e88,
+ 0x7e8b, 0x7e86, 0x7e8d, 0x7f4d, 0x7fbb, 0x8030, 0x81dd, 0x8618,
+ 0x862a, 0x8626, 0x861f, 0x8623, 0x861c, 0x8619, 0x8627, 0x862e,
+ 0x8621, 0x8620, 0x8629, 0x861e, 0x8625,
+ /* 0xf6 */
+ 0x8829, 0x881d, 0x881b, 0x8820, 0x8824, 0x881c, 0x882b, 0x884a,
+ 0x896d, 0x8969, 0x896e, 0x896b, 0x89fa, 0x8b79, 0x8b78, 0x8b45,
+ 0x8b7a, 0x8b7b, 0x8d10, 0x8d14, 0x8daf, 0x8e8e, 0x8e8c, 0x8f5e,
+ 0x8f5b, 0x8f5d, 0x9146, 0x9144, 0x9145, 0x91b9, 0x943f, 0x943b,
+ 0x9436, 0x9429, 0x943d, 0x943c, 0x9430, 0x9439, 0x942a, 0x9437,
+ 0x942c, 0x9440, 0x9431, 0x95e5, 0x95e4, 0x95e3, 0x9735, 0x973a,
+ 0x97bf, 0x97e1, 0x9864, 0x98c9, 0x98c6, 0x98c0, 0x9958, 0x9956,
+ 0x9a39, 0x9a3d, 0x9a46, 0x9a44, 0x9a42, 0x9a41, 0x9a3a, 0x9a3f,
+ 0x9acd, 0x9b15, 0x9b17, 0x9b18, 0x9b16, 0x9b3a, 0x9b52, 0x9c2b,
+ 0x9c1d, 0x9c1c, 0x9c2c, 0x9c23, 0x9c28, 0x9c29, 0x9c24, 0x9c21,
+ 0x9db7, 0x9db6, 0x9dbc, 0x9dc1, 0x9dc7, 0x9dca, 0x9dcf, 0x9dbe,
+ 0x9dc5, 0x9dc3, 0x9dbb, 0x9db5, 0x9dce, 0x9db9, 0x9dba, 0x9dac,
+ 0x9dc8, 0x9db1, 0x9dad, 0x9dcc, 0x9db3, 0x9dcd, 0x9db2, 0x9e7a,
+ 0x9e9c, 0x9eeb, 0x9eee, 0x9eed, 0x9f1b, 0x9f18, 0x9f1a, 0x9f31,
+ 0x9f4e, 0x9f65, 0x9f64, 0x9f92, 0x4eb9, 0x56c6, 0x56c5, 0x56cb,
+ 0x5971, 0x5b4b, 0x5b4c, 0x5dd5, 0x5dd1, 0x5ef2, 0x6521, 0x6520,
+ 0x6526, 0x6522, 0x6b0b, 0x6b08, 0x6b09, 0x6c0d, 0x7055, 0x7056,
+ 0x7057, 0x7052, 0x721e, 0x721f, 0x72a9, 0x737f, 0x74d8, 0x74d5,
+ 0x74d9, 0x74d7, 0x766d, 0x76ad, 0x7935, 0x79b4, 0x7a70, 0x7a71,
+ 0x7c57, 0x7c5c, 0x7c59, 0x7c5b, 0x7c5a,
+ /* 0xf7 */
+ 0x7cf4, 0x7cf1, 0x7e91, 0x7f4f, 0x7f87, 0x81de, 0x826b, 0x8634,
+ 0x8635, 0x8633, 0x862c, 0x8632, 0x8636, 0x882c, 0x8828, 0x8826,
+ 0x882a, 0x8825, 0x8971, 0x89bf, 0x89be, 0x89fb, 0x8b7e, 0x8b84,
+ 0x8b82, 0x8b86, 0x8b85, 0x8b7f, 0x8d15, 0x8e95, 0x8e94, 0x8e9a,
+ 0x8e92, 0x8e90, 0x8e96, 0x8e97, 0x8f60, 0x8f62, 0x9147, 0x944c,
+ 0x9450, 0x944a, 0x944b, 0x944f, 0x9447, 0x9445, 0x9448, 0x9449,
+ 0x9446, 0x973f, 0x97e3, 0x986a, 0x9869, 0x98cb, 0x9954, 0x995b,
+ 0x9a4e, 0x9a53, 0x9a54, 0x9a4c, 0x9a4f, 0x9a48, 0x9a4a, 0x9a49,
+ 0x9a52, 0x9a50, 0x9ad0, 0x9b19, 0x9b2b, 0x9b3b, 0x9b56, 0x9b55,
+ 0x9c46, 0x9c48, 0x9c3f, 0x9c44, 0x9c39, 0x9c33, 0x9c41, 0x9c3c,
+ 0x9c37, 0x9c34, 0x9c32, 0x9c3d, 0x9c36, 0x9ddb, 0x9dd2, 0x9dde,
+ 0x9dda, 0x9dcb, 0x9dd0, 0x9ddc, 0x9dd1, 0x9ddf, 0x9de9, 0x9dd9,
+ 0x9dd8, 0x9dd6, 0x9df5, 0x9dd5, 0x9ddd, 0x9eb6, 0x9ef0, 0x9f35,
+ 0x9f33, 0x9f32, 0x9f42, 0x9f6b, 0x9f95, 0x9fa2, 0x513d, 0x5299,
+ 0x58e8, 0x58e7, 0x5972, 0x5b4d, 0x5dd8, 0x882f, 0x5f4f, 0x6201,
+ 0x6203, 0x6204, 0x6529, 0x6525, 0x6596, 0x66eb, 0x6b11, 0x6b12,
+ 0x6b0f, 0x6bca, 0x705b, 0x705a, 0x7222, 0x7382, 0x7381, 0x7383,
+ 0x7670, 0x77d4, 0x7c67, 0x7c66, 0x7e95, 0x826c, 0x863a, 0x8640,
+ 0x8639, 0x863c, 0x8631, 0x863b, 0x863e, 0x8830, 0x8832, 0x882e,
+ 0x8833, 0x8976, 0x8974, 0x8973, 0x89fe,
+ /* 0xf8 */
+ 0x8b8c, 0x8b8e, 0x8b8b, 0x8b88, 0x8c45, 0x8d19, 0x8e98, 0x8f64,
+ 0x8f63, 0x91bc, 0x9462, 0x9455, 0x945d, 0x9457, 0x945e, 0x97c4,
+ 0x97c5, 0x9800, 0x9a56, 0x9a59, 0x9b1e, 0x9b1f, 0x9b20, 0x9c52,
+ 0x9c58, 0x9c50, 0x9c4a, 0x9c4d, 0x9c4b, 0x9c55, 0x9c59, 0x9c4c,
+ 0x9c4e, 0x9dfb, 0x9df7, 0x9def, 0x9de3, 0x9deb, 0x9df8, 0x9de4,
+ 0x9df6, 0x9de1, 0x9dee, 0x9de6, 0x9df2, 0x9df0, 0x9de2, 0x9dec,
+ 0x9df4, 0x9df3, 0x9de8, 0x9ded, 0x9ec2, 0x9ed0, 0x9ef2, 0x9ef3,
+ 0x9f06, 0x9f1c, 0x9f38, 0x9f37, 0x9f36, 0x9f43, 0x9f4f, 0x9f71,
+ 0x9f70, 0x9f6e, 0x9f6f, 0x56d3, 0x56cd, 0x5b4e, 0x5c6d, 0x652d,
+ 0x66ed, 0x66ee, 0x6b13, 0x705f, 0x7061, 0x705d, 0x7060, 0x7223,
+ 0x74db, 0x74e5, 0x77d5, 0x7938, 0x79b7, 0x79b6, 0x7c6a, 0x7e97,
+ 0x7f89, 0x826d, 0x8643, 0x8838, 0x8837, 0x8835, 0x884b, 0x8b94,
+ 0x8b95, 0x8e9e, 0x8e9f, 0x8ea0, 0x8e9d, 0x91be, 0x91bd, 0x91c2,
+ 0x946b, 0x9468, 0x9469, 0x96e5, 0x9746, 0x9743, 0x9747, 0x97c7,
+ 0x97e5, 0x9a5e, 0x9ad5, 0x9b59, 0x9c63, 0x9c67, 0x9c66, 0x9c62,
+ 0x9c5e, 0x9c60, 0x9e02, 0x9dfe, 0x9e07, 0x9e03, 0x9e06, 0x9e05,
+ 0x9e00, 0x9e01, 0x9e09, 0x9dff, 0x9dfd, 0x9e04, 0x9ea0, 0x9f1e,
+ 0x9f46, 0x9f74, 0x9f75, 0x9f76, 0x56d4, 0x652e, 0x65b8, 0x6b18,
+ 0x6b19, 0x6b17, 0x6b1a, 0x7062, 0x7226, 0x72aa, 0x77d8, 0x77d9,
+ 0x7939, 0x7c69, 0x7c6b, 0x7cf6, 0x7e9a,
+ /* 0xf9 */
+ 0x7e98, 0x7e9b, 0x7e99, 0x81e0, 0x81e1, 0x8646, 0x8647, 0x8648,
+ 0x8979, 0x897a, 0x897c, 0x897b, 0x89ff, 0x8b98, 0x8b99, 0x8ea5,
+ 0x8ea4, 0x8ea3, 0x946e, 0x946d, 0x946f, 0x9471, 0x9473, 0x9749,
+ 0x9872, 0x995f, 0x9c68, 0x9c6e, 0x9c6d, 0x9e0b, 0x9e0d, 0x9e10,
+ 0x9e0f, 0x9e12, 0x9e11, 0x9ea1, 0x9ef5, 0x9f09, 0x9f47, 0x9f78,
+ 0x9f7b, 0x9f7a, 0x9f79, 0x571e, 0x7066, 0x7c6f, 0x883c, 0x8db2,
+ 0x8ea6, 0x91c3, 0x9474, 0x9478, 0x9476, 0x9475, 0x9a60, 0x9c74,
+ 0x9c73, 0x9c71, 0x9c75, 0x9e14, 0x9e13, 0x9ef6, 0x9f0a, 0x9fa4,
+ 0x7068, 0x7065, 0x7cf7, 0x866a, 0x883e, 0x883d, 0x883f, 0x8b9e,
+ 0x8c9c, 0x8ea9, 0x8ec9, 0x974b, 0x9873, 0x9874, 0x98cc, 0x9961,
+ 0x99ab, 0x9a64, 0x9a66, 0x9a67, 0x9b24, 0x9e15, 0x9e17, 0x9f48,
+ 0x6207, 0x6b1e, 0x7227, 0x864c, 0x8ea8, 0x9482, 0x9480, 0x9481,
+ 0x9a69, 0x9a68, 0x9b2e, 0x9e19, 0x7229, 0x864b, 0x8b9f, 0x9483,
+ 0x9c79, 0x9eb7, 0x7675, 0x9a6b, 0x9c7a, 0x9e1d, 0x7069, 0x706a,
+ 0x9ea4, 0x9f7e, 0x9f49, 0x9f98,
+};
+
+static int
+big5_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n)
+{
+ unsigned char c1 = s[0];
+ if ((c1 >= 0xa1 && c1 <= 0xc7) || (c1 >= 0xc9 && c1 <= 0xf9)) {
+ if (n >= 2) {
+ unsigned char c2 = s[1];
+ if ((c2 >= 0x40 && c2 < 0x7f) || (c2 >= 0xa1 && c2 < 0xff)) {
+ unsigned int i = 157 * (c1 - 0xa1) + (c2 - (c2 >= 0xa1 ? 0x62 : 0x40));
+ unsigned short wc = 0xfffd;
+ if (i < 6280) {
+ if (i < 6121)
+ wc = big5_2uni_pagea1[i];
+ } else {
+ if (i < 13932)
+ wc = big5_2uni_pagec9[i-6280];
+ }
+ if (wc != 0xfffd) {
+ *pwc = (ucs4_t) wc;
+ return 2;
+ }
+ }
+ return RET_ILSEQ;
+ }
+ return RET_TOOFEW(0);
+ }
+ return RET_ILSEQ;
+}
+
+static const unsigned short big5_2charset[13703] = {
+ 0xa246, 0xa247, 0xa244, 0xa1b1, 0xa258, 0xa1d3, 0xa150, 0xa1d1,
+ 0xa1d2, 0xa3be, 0xa3bc, 0xa3bd, 0xa3bf, 0xa3bb, 0xa344, 0xa345,
+ 0xa346, 0xa347, 0xa348, 0xa349, 0xa34a, 0xa34b, 0xa34c, 0xa34d,
+ 0xa34e, 0xa34f, 0xa350, 0xa351, 0xa352, 0xa353, 0xa354, 0xa355,
+ 0xa356, 0xa357, 0xa358, 0xa359, 0xa35a, 0xa35b, 0xa35c, 0xa35d,
+ 0xa35e, 0xa35f, 0xa360, 0xa361, 0xa362, 0xa363, 0xa364, 0xa365,
+ 0xa366, 0xa367, 0xa368, 0xa369, 0xa36a, 0xa36b, 0xa36c, 0xa36d,
+ 0xa36e, 0xa36f, 0xa370, 0xa371, 0xa372, 0xa373, 0xc7b3, 0xc7b1,
+ 0xc7b2, 0xc7b4, 0xc7b5, 0xc7b6, 0xc7b7, 0xc7b8, 0xc7b9, 0xc7ba,
+ 0xc7bb, 0xc7bc, 0xc7bd, 0xc7be, 0xc7bf, 0xc7c0, 0xc7c1, 0xc7c2,
+ 0xc7c3, 0xc7c4, 0xc7c5, 0xc7c6, 0xc7c7, 0xc7c8, 0xc7c9, 0xc7ca,
+ 0xc7cb, 0xc7cc, 0xc7cd, 0xc7cf, 0xc7d0, 0xc7d1, 0xc7d2, 0xc7d3,
+ 0xc7d4, 0xc7d5, 0xc7d6, 0xc7d7, 0xc7d8, 0xc7d9, 0xc7da, 0xc7db,
+ 0xc7dc, 0xc7dd, 0xc7de, 0xc7df, 0xc7e0, 0xc7e1, 0xc7e2, 0xc7e3,
+ 0xc7e4, 0xc7e5, 0xc7e6, 0xc7e7, 0xc7e8, 0xc7ce, 0xa156, 0xa158,
+ 0xa1a5, 0xa1a6, 0xa1a7, 0xa1a8, 0xa145, 0xa14c, 0xa14b, 0xa1ac,
+ 0xa1ab, 0xa1b0, 0xa1c2, 0xa24a, 0xa1c1, 0xa24b, 0xa2b9, 0xa2ba,
+ 0xa2bb, 0xa2bc, 0xa2bd, 0xa2be, 0xa2bf, 0xa2c0, 0xa2c1, 0xa2c2,
+ 0xa1f6, 0xa1f4, 0xa1f7, 0xa1f5, 0xa1f8, 0xa1f9, 0xa1fb, 0xa1fa,
+ 0xa1d4, 0xa1db, 0xa1e8, 0xa1e7, 0xa1fd, 0xa1fc, 0xa1e4, 0xa1e5,
+ 0xa1ec, 0xa1ed, 0xa1ef, 0xa1ee, 0xa1e3, 0xa1dc, 0xa1da, 0xa1dd,
+ 0xa1d8, 0xa1d9, 0xa1e6, 0xa1e9, 0xc7e9, 0xc7ea, 0xc7eb, 0xc7ec,
+ 0xc7ed, 0xc7ee, 0xc7ef, 0xc7f0, 0xc7f1, 0xc7f2, 0xc7f3, 0xc7f4,
+ 0xc7f5, 0xc7f6, 0xc7f7, 0xc7f8, 0xc7f9, 0xc7fa, 0xc7fb, 0xc7fc,
+ 0xa277, 0xa278, 0xa27a, 0xa27b, 0xa27c, 0xa27d, 0xa275, 0xa274,
+ 0xa273, 0xa272, 0xa271, 0xa2a4, 0xa2a5, 0xa2a7, 0xa2a6, 0xa27e,
+ 0xa2a1, 0xa2a3, 0xa2a2, 0xa2ac, 0xa2ad, 0xa2ae, 0xa262, 0xa263,
+ 0xa264, 0xa265, 0xa266, 0xa267, 0xa268, 0xa269, 0xa270, 0xa26f,
+ 0xa26e, 0xa26d, 0xa26c, 0xa26b, 0xa26a, 0xa276, 0xa279, 0xa1bd,
+ 0xa1bc, 0xa1b6, 0xa1b5, 0xa1bf, 0xa1be, 0xa1bb, 0xa1ba, 0xa1b3,
+ 0xa1b7, 0xa1b4, 0xa2a8, 0xa2a9, 0xa2ab, 0xa2aa, 0xa1b9, 0xa1b8,
+ 0xa1f3, 0xa1f0, 0xa1f2, 0xa1f1, 0xa140, 0xa142, 0xa143, 0xa1b2,
+ 0xc6a4, 0xa171, 0xa172, 0xa16d, 0xa16e, 0xa175, 0xa176, 0xa179,
+ 0xa17a, 0xa169, 0xa16a, 0xa245, 0xa165, 0xa166, 0xa1a9, 0xa1aa,
+ 0xa2c3, 0xa2c4, 0xa2c5, 0xa2c6, 0xa2c7, 0xa2c8, 0xa2c9, 0xa2ca,
+ 0xa2cb, 0xc6a5, 0xc6a6, 0xc6a7, 0xc6a8, 0xc6a9, 0xc6aa, 0xc6ab,
+ 0xc6ac, 0xc6ad, 0xc6ae, 0xc6af, 0xc6b0, 0xc6b1, 0xc6b2, 0xc6b3,
+ 0xc6b4, 0xc6b5, 0xc6b6, 0xc6b7, 0xc6b8, 0xc6b9, 0xc6ba, 0xc6bb,
+ 0xc6bc, 0xc6bd, 0xc6be, 0xc6bf, 0xc6c0, 0xc6c1, 0xc6c2, 0xc6c3,
+ 0xc6c4, 0xc6c5, 0xc6c6, 0xc6c7, 0xc6c8, 0xc6c9, 0xc6ca, 0xc6cb,
+ 0xc6cc, 0xc6cd, 0xc6ce, 0xc6cf, 0xc6d0, 0xc6d1, 0xc6d2, 0xc6d3,
+ 0xc6d4, 0xc6d5, 0xc6d6, 0xc6d7, 0xc6d8, 0xc6d9, 0xc6da, 0xc6db,
+ 0xc6dc, 0xc6dd, 0xc6de, 0xc6df, 0xc6e0, 0xc6e1, 0xc6e2, 0xc6e3,
+ 0xc6e4, 0xc6e5, 0xc6e6, 0xc6e7, 0xc6e8, 0xc6e9, 0xc6ea, 0xc6eb,
+ 0xc6ec, 0xc6ed, 0xc6ee, 0xc6ef, 0xc6f0, 0xc6f1, 0xc6f2, 0xc6f3,
+ 0xc6f4, 0xc6f5, 0xc6f6, 0xc6f7, 0xc6a2, 0xc6a3, 0xc6f8, 0xc6f9,
+ 0xc6fa, 0xc6fb, 0xc6fc, 0xc6fd, 0xc6fe, 0xc740, 0xc741, 0xc742,
+ 0xc743, 0xc744, 0xc745, 0xc746, 0xc747, 0xc748, 0xc749, 0xc74a,
+ 0xc74b, 0xc74c, 0xc74d, 0xc74e, 0xc74f, 0xc750, 0xc751, 0xc752,
+ 0xc753, 0xc754, 0xc755, 0xc756, 0xc757, 0xc758, 0xc759, 0xc75a,
+ 0xc75b, 0xc75c, 0xc75d, 0xc75e, 0xc75f, 0xc760, 0xc761, 0xc762,
+ 0xc763, 0xc764, 0xc765, 0xc766, 0xc767, 0xc768, 0xc769, 0xc76a,
+ 0xc76b, 0xc76c, 0xc76d, 0xc76e, 0xc76f, 0xc770, 0xc771, 0xc772,
+ 0xc773, 0xc774, 0xc775, 0xc776, 0xc777, 0xc778, 0xc779, 0xc77a,
+ 0xc77b, 0xc77c, 0xc77d, 0xc77e, 0xc7a1, 0xc7a2, 0xc7a3, 0xc7a4,
+ 0xc7a5, 0xc7a6, 0xc7a7, 0xc7a8, 0xc7a9, 0xc7aa, 0xc7ab, 0xc7ac,
+ 0xc7ad, 0xc7ae, 0xc7af, 0xc7b0, 0xc6a1, 0xa374, 0xa375, 0xa376,
+ 0xa377, 0xa378, 0xa379, 0xa37a, 0xa37b, 0xa37c, 0xa37d, 0xa37e,
+ 0xa3a1, 0xa3a2, 0xa3a3, 0xa3a4, 0xa3a5, 0xa3a6, 0xa3a7, 0xa3a8,
+ 0xa3a9, 0xa3aa, 0xa3ab, 0xa3ac, 0xa3ad, 0xa3ae, 0xa3af, 0xa3b0,
+ 0xa3b1, 0xa3b2, 0xa3b3, 0xa3b4, 0xa3b5, 0xa3b6, 0xa3b7, 0xa3b8,
+ 0xa3b9, 0xa3ba, 0xa1c0, 0xa255, 0xa256, 0xa250, 0xa251, 0xa252,
+ 0xa254, 0xa257, 0xa253, 0xa1eb, 0xa1ea, 0xa24f, 0xa440, 0xa442,
+ 0xa443, 0xc945, 0xa456, 0xa454, 0xa457, 0xa455, 0xc946, 0xa4a3,
+ 0xc94f, 0xc94d, 0xa4a2, 0xa4a1, 0xa542, 0xa541, 0xa540, 0xa543,
+ 0xa4fe, 0xa5e0, 0xa5e1, 0xa8c3, 0xa458, 0xa4a4, 0xc950, 0xa4a5,
+ 0xc963, 0xa6ea, 0xcbb1, 0xa459, 0xa4a6, 0xa544, 0xc964, 0xc940,
+ 0xa444, 0xa45b, 0xc947, 0xa45c, 0xa4a7, 0xa545, 0xa547, 0xa546,
+ 0xa5e2, 0xa5e3, 0xa8c4, 0xadbc, 0xa441, 0xc941, 0xa445, 0xa45e,
+ 0xa45d, 0xa5e4, 0xa8c5, 0xb0ae, 0xd44b, 0xb6c3, 0xdcb1, 0xdcb2,
+ 0xa446, 0xa4a9, 0xa8c6, 0xa447, 0xc948, 0xa45f, 0xa4aa, 0xa4ac,
+ 0xc951, 0xa4ad, 0xa4ab, 0xa5e5, 0xa8c7, 0xa8c8, 0xab45, 0xa460,
+ 0xa4ae, 0xa5e6, 0xa5e8, 0xa5e7, 0xa6eb, 0xa8c9, 0xa8ca, 0xab46,
+ 0xab47, 0xadbd, 0xdcb3, 0xf6d6, 0xa448, 0xa4b0, 0xa4af, 0xc952,
+ 0xa4b1, 0xa4b7, 0xa4b2, 0xa4b3, 0xc954, 0xc953, 0xa4b5, 0xa4b6,
+ 0xa4b4, 0xa54a, 0xa54b, 0xa54c, 0xa54d, 0xa549, 0xa550, 0xc96a,
+ 0xc966, 0xc969, 0xa551, 0xa561, 0xc968, 0xa54e, 0xa54f, 0xa548,
+ 0xc965, 0xc967, 0xa5f5, 0xc9b0, 0xa5f2, 0xa5f6, 0xc9ba, 0xc9ae,
+ 0xa5f3, 0xc9b2, 0xa5f4, 0xa5f7, 0xa5e9, 0xc9b1, 0xa5f8, 0xc9b5,
+ 0xc9b9, 0xc9b6, 0xc9b3, 0xa5ea, 0xa5ec, 0xa5f9, 0xa5ee, 0xc9ab,
+ 0xa5f1, 0xa5ef, 0xa5f0, 0xc9bb, 0xc9b8, 0xc9af, 0xa5ed, 0xc9ac,
+ 0xa5eb, 0xc9b4, 0xc9b7, 0xc9ad, 0xca66, 0xa742, 0xa6f4, 0xca67,
+ 0xa6f1, 0xa744, 0xa6f9, 0xa6f8, 0xca5b, 0xa6fc, 0xa6f7, 0xca60,
+ 0xca68, 0xca64, 0xa6fa, 0xa6fd, 0xa6ee, 0xa747, 0xca5d, 0xcbbd,
+ 0xa6ec, 0xa743, 0xa6ed, 0xa6f5, 0xa6f6, 0xca62, 0xca5e, 0xa6fb,
+ 0xa6f3, 0xca5a, 0xa6ef, 0xca65, 0xa745, 0xa748, 0xa6f2, 0xa740,
+ 0xa746, 0xa6f0, 0xca63, 0xa741, 0xca69, 0xca5c, 0xa6fe, 0xca5f,
+ 0xca61, 0xa8d8, 0xcbbf, 0xcbcb, 0xa8d0, 0xcbcc, 0xa8cb, 0xa8d5,
+ 0xa8ce, 0xcbb9, 0xa8d6, 0xcbb8, 0xcbbc, 0xcbc3, 0xcbc1, 0xa8de,
+ 0xa8d9, 0xcbb3, 0xcbb5, 0xa8db, 0xa8cf, 0xcbb6, 0xcbc2, 0xcbc9,
+ 0xa8d4, 0xcbbb, 0xcbb4, 0xa8d3, 0xcbb7, 0xa8d7, 0xcbba, 0xa8d2,
+ 0xa8cd, 0xa8dc, 0xcbc4, 0xa8dd, 0xcbc8, 0xcbc6, 0xcbca, 0xa8da,
+ 0xcbbe, 0xcbb2, 0xcbc0, 0xa8d1, 0xcbc5, 0xa8cc, 0xcbc7, 0xab56,
+ 0xab4a, 0xcde0, 0xcde8, 0xab49, 0xab51, 0xab5d, 0xcdee, 0xcdec,
+ 0xcde7, 0xab4b, 0xcded, 0xcde3, 0xab59, 0xab50, 0xab58, 0xcdde,
+ 0xcdea, 0xcde1, 0xab54, 0xcde2, 0xcddd, 0xab5b, 0xab4e, 0xab57,
+ 0xab4d, 0xcddf, 0xcde4, 0xcdeb, 0xab55, 0xab52, 0xcde6, 0xab5a,
+ 0xcde9, 0xcde5, 0xab4f, 0xab5c, 0xab53, 0xab4c, 0xab48, 0xcdef,
+ 0xadd7, 0xadc1, 0xadd1, 0xadd6, 0xd0d0, 0xd0cf, 0xd0d4, 0xd0d5,
+ 0xadc4, 0xadcd, 0xadda, 0xadce, 0xd0c9, 0xadc7, 0xd0ca, 0xaddc,
+ 0xadd3, 0xadbe, 0xadbf, 0xd0dd, 0xb0bf, 0xadcc, 0xadcb, 0xd0cb,
+ 0xadcf, 0xd45b, 0xadc6, 0xd0d6, 0xadd5, 0xadd4, 0xadca, 0xd0ce,
+ 0xd0d7, 0xd0c8, 0xadc9, 0xd0d8, 0xadd2, 0xd0cc, 0xadc0, 0xadc3,
+ 0xadc2, 0xd0d9, 0xadd0, 0xadc5, 0xadd9, 0xaddb, 0xd0d3, 0xadd8,
+ 0xd0db, 0xd0cd, 0xd0dc, 0xd0d1, 0xd0da, 0xd0d2, 0xadc8, 0xd463,
+ 0xd457, 0xb0b3, 0xd45c, 0xd462, 0xb0b2, 0xd455, 0xb0b6, 0xd459,
+ 0xd452, 0xb0b4, 0xd456, 0xb0b9, 0xb0be, 0xd467, 0xd451, 0xb0ba,
+ 0xd466, 0xb0b5, 0xd458, 0xb0b1, 0xd453, 0xd44f, 0xd45d, 0xd450,
+ 0xd44e, 0xd45a, 0xd460, 0xd461, 0xb0b7, 0xd85b, 0xd45e, 0xd44d,
+ 0xd45f, 0xb0c1, 0xd464, 0xb0c0, 0xd44c, 0xd454, 0xd465, 0xb0bc,
+ 0xb0bb, 0xb0b8, 0xb0bd, 0xb0af, 0xb0b0, 0xb3c8, 0xd85e, 0xd857,
+ 0xb3c5, 0xd85f, 0xd855, 0xd858, 0xb3c4, 0xd859, 0xb3c7, 0xd85d,
+ 0xd853, 0xd852, 0xb3c9, 0xb3ca, 0xb3c6, 0xb3cb, 0xd851, 0xd85c,
+ 0xd85a, 0xd854, 0xb3c3, 0xd856, 0xb6ca, 0xb6c4, 0xdcb7, 0xb6cd,
+ 0xdcbd, 0xdcc0, 0xb6c6, 0xb6c7, 0xdcba, 0xb6c5, 0xdcc3, 0xb6cb,
+ 0xdcc4, 0xdcbf, 0xb6cc, 0xdcb4, 0xb6c9, 0xdcb5, 0xdcbe, 0xdcbc,
+ 0xdcb8, 0xb6c8, 0xdcb6, 0xb6ce, 0xdcbb, 0xdcc2, 0xdcb9, 0xdcc1,
+ 0xb9b6, 0xb9b3, 0xb9b4, 0xe0f9, 0xe0f1, 0xb9b2, 0xb9af, 0xe0f2,
+ 0xb9b1, 0xe0f5, 0xe0f7, 0xe0fe, 0xe0fd, 0xe0f8, 0xb9ae, 0xe0f0,
+ 0xb9ac, 0xe0f3, 0xb9b7, 0xe0f6, 0xe0fa, 0xb9b0, 0xb9ad, 0xe0fc,
+ 0xe0fb, 0xb9b5, 0xe0f4, 0xbbf8, 0xe4ec, 0xe4e9, 0xbbf9, 0xbbf7,
+ 0xe4f0, 0xe4ed, 0xe4e6, 0xbbf6, 0xbbfa, 0xe4e7, 0xbbf5, 0xbbfd,
+ 0xe4ea, 0xe4eb, 0xbbfb, 0xbbfc, 0xe4f1, 0xe4ee, 0xe4ef, 0xbeaa,
+ 0xe8f8, 0xbea7, 0xe8f5, 0xbea9, 0xbeab, 0xe8f6, 0xbea8, 0xe8f7,
+ 0xe8f4, 0xc076, 0xecbd, 0xc077, 0xecbb, 0xecbc, 0xecba, 0xecb9,
+ 0xecbe, 0xc075, 0xefb8, 0xefb9, 0xe4e8, 0xefb7, 0xc078, 0xc35f,
+ 0xf1eb, 0xf1ec, 0xc4d7, 0xc4d8, 0xf5c1, 0xf5c0, 0xc56c, 0xc56b,
+ 0xf7d0, 0xa449, 0xa461, 0xa4b9, 0xa4b8, 0xa553, 0xa552, 0xa5fc,
+ 0xa5fb, 0xa5fd, 0xa5fa, 0xa74a, 0xa749, 0xa74b, 0xa8e0, 0xa8df,
+ 0xa8e1, 0xab5e, 0xa259, 0xd0de, 0xa25a, 0xb0c2, 0xa25c, 0xa25b,
+ 0xd860, 0xa25d, 0xb9b8, 0xa25e, 0xa44a, 0xa4ba, 0xa5fe, 0xa8e2,
+ 0xa44b, 0xa4bd, 0xa4bb, 0xa4bc, 0xa640, 0xa74c, 0xa8e4, 0xa8e3,
+ 0xa8e5, 0xaddd, 0xbeac, 0xc94e, 0xa554, 0xa555, 0xa641, 0xca6a,
+ 0xab60, 0xab5f, 0xd0e0, 0xd0df, 0xb0c3, 0xa4be, 0xc955, 0xcbcd,
+ 0xab61, 0xade0, 0xadde, 0xaddf, 0xbead, 0xa556, 0xa642, 0xc9bc,
+ 0xa74d, 0xa74e, 0xca6b, 0xcbce, 0xa8e6, 0xcbcf, 0xd0e2, 0xd0e3,
+ 0xade3, 0xd0e4, 0xd0e1, 0xade4, 0xade2, 0xade1, 0xd0e5, 0xd468,
+ 0xd861, 0xdcc5, 0xe140, 0xbbfe, 0xbeae, 0xe8f9, 0xa44c, 0xa45a,
+ 0xb0c4, 0xb3cd, 0xb9b9, 0xc942, 0xa4bf, 0xa559, 0xa557, 0xa558,
+ 0xa8e7, 0xa44d, 0xa44e, 0xa462, 0xa4c0, 0xa4c1, 0xa4c2, 0xc9be,
+ 0xa55a, 0xc96b, 0xa646, 0xc9bf, 0xa644, 0xa645, 0xc9bd, 0xa647,
+ 0xa643, 0xca6c, 0xaaec, 0xca6d, 0xca6e, 0xa750, 0xa74f, 0xa753,
+ 0xa751, 0xa752, 0xa8ed, 0xa8ec, 0xcbd4, 0xcbd1, 0xcbd2, 0xcbd0,
+ 0xa8ee, 0xa8ea, 0xa8e9, 0xa8eb, 0xa8e8, 0xa8ef, 0xab63, 0xcdf0,
+ 0xcbd3, 0xab68, 0xcdf1, 0xab64, 0xab67, 0xab66, 0xab65, 0xab62,
+ 0xd0e8, 0xade7, 0xd0eb, 0xade5, 0xd0e7, 0xade8, 0xade6, 0xade9,
+ 0xd0e9, 0xd0ea, 0xd0e6, 0xd0ec, 0xb3d1, 0xb0c5, 0xd469, 0xd46b,
+ 0xd46a, 0xd46c, 0xb0c6, 0xb3ce, 0xb3cf, 0xb3d0, 0xb6d0, 0xdcc7,
+ 0xdcc6, 0xdcc8, 0xdcc9, 0xb6d1, 0xb6cf, 0xe141, 0xe142, 0xb9bb,
+ 0xb9ba, 0xe35a, 0xbc40, 0xbc41, 0xbc42, 0xbc44, 0xe4f2, 0xe4f3,
+ 0xbc43, 0xbeaf, 0xbeb0, 0xf1ed, 0xf5c3, 0xf5c2, 0xf7d1, 0xa44f,
+ 0xa55c, 0xa55b, 0xa648, 0xc9c0, 0xa755, 0xa756, 0xa754, 0xa757,
+ 0xca6f, 0xca70, 0xa8f1, 0xcbd5, 0xa8f0, 0xcdf2, 0xab6c, 0xcdf3,
+ 0xab6b, 0xab69, 0xab6a, 0xd0ed, 0xb0c7, 0xd46e, 0xb0ca, 0xd46d,
+ 0xb1e5, 0xb0c9, 0xb0c8, 0xb3d4, 0xb3d3, 0xb3d2, 0xb6d2, 0xb6d5,
+ 0xb6d6, 0xb6d4, 0xb6d3, 0xe143, 0xe144, 0xe4f5, 0xbc45, 0xe4f4,
+ 0xbeb1, 0xecbf, 0xc079, 0xf1ee, 0xc455, 0xa463, 0xa4c3, 0xc956,
+ 0xa4c4, 0xa4c5, 0xa55d, 0xa55e, 0xa649, 0xca71, 0xcbd6, 0xcbd7,
+ 0xab6d, 0xd0ee, 0xb0cc, 0xb0cb, 0xd863, 0xd862, 0xa450, 0xa4c6,
+ 0xa55f, 0xb0cd, 0xc943, 0xc96c, 0xa560, 0xc9c2, 0xa64b, 0xa64a,
+ 0xc9c1, 0xa758, 0xadea, 0xd46f, 0xb6d7, 0xe145, 0xb9bc, 0xe8fa,
+ 0xf3fd, 0xa4c7, 0xcbd8, 0xcdf4, 0xb0d0, 0xb0ce, 0xb0cf, 0xa451,
+ 0xa464, 0xa2cd, 0xa4ca, 0xa4c9, 0xa4c8, 0xa563, 0xa562, 0xc96d,
+ 0xc9c3, 0xa8f5, 0xa8f2, 0xa8f4, 0xa8f3, 0xab6e, 0xb3d5, 0xa452,
+ 0xa4cb, 0xa565, 0xa564, 0xca72, 0xa8f6, 0xc957, 0xa567, 0xa566,
+ 0xa64c, 0xa64d, 0xca73, 0xa759, 0xa75a, 0xa8f7, 0xa8f8, 0xa8f9,
+ 0xab6f, 0xcdf5, 0xadeb, 0xc944, 0xa4cc, 0xc9c4, 0xca74, 0xca75,
+ 0xcbd9, 0xcbda, 0xcdf7, 0xcdf6, 0xcdf9, 0xcdf8, 0xab70, 0xd470,
+ 0xaded, 0xd0ef, 0xadec, 0xd864, 0xb3d6, 0xd865, 0xe146, 0xb9bd,
+ 0xbc46, 0xf1ef, 0xc958, 0xa568, 0xb0d1, 0xa453, 0xa465, 0xa4ce,
+ 0xa4cd, 0xa4cf, 0xa8fb, 0xa8fa, 0xa8fc, 0xab71, 0xadee, 0xe8fb,
+ 0xc24f, 0xa466, 0xa56a, 0xa579, 0xa574, 0xa56f, 0xa56e, 0xa575,
+ 0xa573, 0xa56c, 0xa57a, 0xa56d, 0xa569, 0xa578, 0xa577, 0xa576,
+ 0xa56b, 0xa572, 0xa571, 0xa57b, 0xa570, 0xa653, 0xa659, 0xa655,
+ 0xa65b, 0xc9c5, 0xa658, 0xa64e, 0xa651, 0xa654, 0xa650, 0xa657,
+ 0xa65a, 0xa64f, 0xa652, 0xa656, 0xa65c, 0xca7e, 0xca7b, 0xa767,
+ 0xca7c, 0xa75b, 0xa75d, 0xa775, 0xa770, 0xcaa5, 0xca7d, 0xa75f,
+ 0xa761, 0xcaa4, 0xa768, 0xca78, 0xa774, 0xa776, 0xa75c, 0xa76d,
+ 0xca76, 0xa773, 0xa764, 0xa76e, 0xa76f, 0xca77, 0xa76c, 0xa76a,
+ 0xa76b, 0xa771, 0xcaa1, 0xa75e, 0xa772, 0xcaa3, 0xa766, 0xa763,
+ 0xca7a, 0xa762, 0xcaa6, 0xa765, 0xa769, 0xa760, 0xcaa2, 0xca79,
+ 0xcbeb, 0xcbea, 0xa94f, 0xcbed, 0xcbef, 0xcbe4, 0xcbe7, 0xcbee,
+ 0xa950, 0xcbe1, 0xcbe5, 0xcbe9, 0xce49, 0xa94b, 0xce4d, 0xa8fd,
+ 0xcbe6, 0xa8fe, 0xa94c, 0xa945, 0xa941, 0xcbe2, 0xa944, 0xa949,
+ 0xa952, 0xcbe3, 0xcbdc, 0xa943, 0xcbdd, 0xcbdf, 0xa946, 0xa948,
+ 0xcbdb, 0xcbe0, 0xa951, 0xa94d, 0xcbe8, 0xa953, 0xa94a, 0xcbde,
+ 0xa947, 0xa942, 0xa940, 0xcbec, 0xa94e, 0xce48, 0xcdfb, 0xce4b,
+ 0xcdfd, 0xab78, 0xaba8, 0xab74, 0xaba7, 0xab7d, 0xaba4, 0xab72,
+ 0xcdfc, 0xce43, 0xaba3, 0xce4f, 0xaba5, 0xab79, 0xce45, 0xce42,
+ 0xab77, 0xcdfa, 0xaba6, 0xce4a, 0xab7c, 0xce4c, 0xaba9, 0xab73,
+ 0xab7e, 0xab7b, 0xce40, 0xaba1, 0xce46, 0xce47, 0xab7a, 0xaba2,
+ 0xab76, 0xab75, 0xcdfe, 0xce44, 0xce4e, 0xd144, 0xadfb, 0xd0f1,
+ 0xd0f6, 0xadf4, 0xae40, 0xd0f4, 0xadef, 0xadf9, 0xadfe, 0xd0fb,
+ 0xadfa, 0xadfd, 0xd0fe, 0xadf5, 0xd0f5, 0xd142, 0xd143, 0xadf7,
+ 0xd141, 0xadf3, 0xae43, 0xd0f8, 0xadf1, 0xd146, 0xd0f9, 0xd0fd,
+ 0xadf6, 0xae42, 0xd0fa, 0xadfc, 0xd140, 0xd147, 0xd4a1, 0xd145,
+ 0xae44, 0xadf0, 0xd0fc, 0xd0f3, 0xadf8, 0xd0f2, 0xd0f7, 0xd0f0,
+ 0xae41, 0xd477, 0xb0e4, 0xd4a7, 0xb0e2, 0xb0df, 0xd47c, 0xb0db,
+ 0xd4a2, 0xb0e6, 0xd476, 0xd47b, 0xd47a, 0xadf2, 0xb0e1, 0xd4a5,
+ 0xd4a8, 0xd473, 0xb3e8, 0xd4a9, 0xb0e7, 0xb0d9, 0xb0d6, 0xd47e,
+ 0xb0d3, 0xd4a6, 0xb0da, 0xd4aa, 0xd474, 0xd4a4, 0xb0dd, 0xd475,
+ 0xd478, 0xd47d, 0xb0de, 0xb0dc, 0xb0e8, 0xb0e3, 0xb0d7, 0xb1d2,
+ 0xb0d8, 0xd479, 0xb0e5, 0xb0e0, 0xd4a3, 0xb0d5, 0xb0d4, 0xd471,
+ 0xd472, 0xd86a, 0xb3d7, 0xb3da, 0xd875, 0xb3ee, 0xd878, 0xb3d8,
+ 0xd871, 0xb3de, 0xb3e4, 0xb5bd, 0xb3e2, 0xd86e, 0xb3ef, 0xb3db,
+ 0xb3e3, 0xd876, 0xdcd7, 0xd87b, 0xd86f, 0xd866, 0xd873, 0xd86d,
+ 0xb3e1, 0xd879, 0xb3dd, 0xb3f1, 0xb3ea, 0xb3df, 0xb3dc, 0xb3e7,
+ 0xd87a, 0xd86c, 0xd872, 0xd874, 0xd868, 0xd877, 0xb3d9, 0xd867,
+ 0xb3e0, 0xb3f0, 0xb3ec, 0xd869, 0xb3e6, 0xb3ed, 0xb3e9, 0xb3e5,
+ 0xd870, 0xb3eb, 0xdcd5, 0xdcd1, 0xdce0, 0xdcca, 0xdcd3, 0xb6e5,
+ 0xb6e6, 0xb6de, 0xdcdc, 0xb6e8, 0xdccf, 0xdcce, 0xdccc, 0xdcde,
+ 0xb6dc, 0xdcd8, 0xdccd, 0xb6df, 0xdcd6, 0xb6da, 0xdcd2, 0xdcd9,
+ 0xdcdb, 0xdcdf, 0xb6e3, 0xdccb, 0xb6dd, 0xdcd0, 0xb6d8, 0xb6e4,
+ 0xdcda, 0xb6e0, 0xb6e1, 0xb6e7, 0xb6db, 0xa25f, 0xb6d9, 0xdcd4,
+ 0xb6e2, 0xdcdd, 0xb9cd, 0xb9c8, 0xe155, 0xe151, 0xe14b, 0xb9c2,
+ 0xb9be, 0xe154, 0xb9bf, 0xe14e, 0xe150, 0xe153, 0xb9c4, 0xb9cb,
+ 0xb9c5, 0xe149, 0xb9c6, 0xb9c7, 0xe14c, 0xb9cc, 0xe14a, 0xe14f,
+ 0xb9c3, 0xe148, 0xb9c9, 0xb9c1, 0xb9c0, 0xe14d, 0xe152, 0xb9ca,
+ 0xe147, 0xbc4d, 0xe547, 0xe544, 0xbc47, 0xbc53, 0xbc54, 0xbc4a,
+ 0xe542, 0xbc4c, 0xe4f9, 0xbc52, 0xe546, 0xbc49, 0xe548, 0xbc48,
+ 0xe543, 0xe545, 0xbc4b, 0xe541, 0xe4fa, 0xe4f7, 0xd86b, 0xe4fd,
+ 0xe4f6, 0xe4fc, 0xe4fb, 0xe4f8, 0xbc4f, 0xbc4e, 0xbc50, 0xe4fe,
+ 0xbeb2, 0xe540, 0xe945, 0xe8fd, 0xbebe, 0xe942, 0xbeb6, 0xbeba,
+ 0xe941, 0xbeb9, 0xbeb5, 0xbeb8, 0xbeb3, 0xbebd, 0xe943, 0xe8fe,
+ 0xbebc, 0xe8fc, 0xbebb, 0xe944, 0xe940, 0xbc51, 0xbebf, 0xe946,
+ 0xbeb7, 0xbeb4, 0xecc6, 0xecc8, 0xc07b, 0xecc9, 0xecc7, 0xecc5,
+ 0xecc4, 0xc07d, 0xecc3, 0xc07e, 0xecc1, 0xecc2, 0xc07a, 0xc0a1,
+ 0xc07c, 0xecc0, 0xc250, 0xefbc, 0xefba, 0xefbf, 0xefbd, 0xefbb,
+ 0xefbe, 0xc360, 0xf1f2, 0xf1f3, 0xc456, 0xf1f4, 0xf1f0, 0xf1f5,
+ 0xf1f1, 0xc251, 0xf3fe, 0xf441, 0xc459, 0xf440, 0xc458, 0xc457,
+ 0xc45a, 0xf5c5, 0xf5c6, 0xc4da, 0xc4d9, 0xc4db, 0xf5c4, 0xf6d8,
+ 0xf6d7, 0xc56d, 0xc56f, 0xc56e, 0xf6d9, 0xc5c8, 0xf8a6, 0xc5f1,
+ 0xf8a5, 0xf8ee, 0xc949, 0xa57d, 0xa57c, 0xa65f, 0xa65e, 0xc9c7,
+ 0xa65d, 0xc9c6, 0xa779, 0xcaa9, 0xcaa8, 0xa777, 0xa77a, 0xcaa7,
+ 0xa778, 0xcbf0, 0xcbf1, 0xa954, 0xabaa, 0xd148, 0xd149, 0xae45,
+ 0xae46, 0xd4ac, 0xb0e9, 0xb0eb, 0xd4ab, 0xb0ea, 0xd87c, 0xb3f2,
+ 0xb6e9, 0xb6ea, 0xdce1, 0xb9cf, 0xb9ce, 0xe549, 0xe948, 0xe947,
+ 0xf96b, 0xa467, 0xc959, 0xc96e, 0xc96f, 0xa662, 0xa666, 0xc9c9,
+ 0xa664, 0xa663, 0xc9c8, 0xa665, 0xa661, 0xa660, 0xc9ca, 0xa7a6,
+ 0xa7a3, 0xa77d, 0xcaaa, 0xcaab, 0xa7a1, 0xcaad, 0xa77b, 0xcaae,
+ 0xcaac, 0xa77e, 0xa7a2, 0xa7a5, 0xa7a4, 0xa77c, 0xcaaf, 0xa959,
+ 0xcbfe, 0xa95b, 0xa95a, 0xcc40, 0xa958, 0xa957, 0xcbf5, 0xcbf4,
+ 0xcbf2, 0xcbf7, 0xcbf6, 0xcbf3, 0xcbfc, 0xcbfd, 0xcbfa, 0xcbf8,
+ 0xa956, 0xcbfb, 0xa95c, 0xcc41, 0xcbf9, 0xabab, 0xa955, 0xabac,
+ 0xce54, 0xce5a, 0xabb2, 0xce58, 0xce5e, 0xce55, 0xce59, 0xce5b,
+ 0xce5d, 0xce57, 0xce56, 0xce51, 0xce52, 0xabad, 0xabaf, 0xabae,
+ 0xce53, 0xce5c, 0xabb1, 0xce50, 0xd153, 0xd152, 0xd157, 0xd14e,
+ 0xd151, 0xd150, 0xd154, 0xd158, 0xae47, 0xae4a, 0xd14f, 0xd155,
+ 0xae49, 0xd14a, 0xabb0, 0xd4ba, 0xd156, 0xd14d, 0xae48, 0xd14c,
+ 0xd4b1, 0xb0ec, 0xb0f0, 0xd4c1, 0xd4af, 0xd4bd, 0xb0f1, 0xd4bf,
+ 0xd4c5, 0xd4c9, 0xd4c0, 0xd4b4, 0xd4bc, 0xd4ca, 0xd4c8, 0xd4be,
+ 0xd4b9, 0xd4b2, 0xd8a6, 0xd4b0, 0xb0f5, 0xd4b7, 0xb0f6, 0xb0f2,
+ 0xd4ad, 0xd4c3, 0xd4b5, 0xd4b3, 0xd4c6, 0xb0f3, 0xd4cc, 0xb0ed,
+ 0xb0ef, 0xd4bb, 0xd4b6, 0xae4b, 0xb0ee, 0xd4b8, 0xd4c7, 0xd4cb,
+ 0xd4c2, 0xd4c4, 0xd4ae, 0xd8a1, 0xd8aa, 0xd8a9, 0xb3fa, 0xd8a2,
+ 0xb3fb, 0xb3f9, 0xd8a4, 0xb3f6, 0xd8a8, 0xd8a3, 0xd8a5, 0xd87d,
+ 0xb3f4, 0xd8b2, 0xd8b1, 0xd8ae, 0xb3f3, 0xb3f7, 0xb3f8, 0xd14b,
+ 0xd8ab, 0xb3f5, 0xb0f4, 0xd8ad, 0xd87e, 0xd8b0, 0xd8af, 0xd8b3,
+ 0xdcef, 0xd8ac, 0xd8a7, 0xdce7, 0xb6f4, 0xb6f7, 0xb6f2, 0xdce6,
+ 0xdcea, 0xdce5, 0xb6ec, 0xb6f6, 0xdce2, 0xb6f0, 0xdce9, 0xb6ee,
+ 0xb6ed, 0xdcec, 0xb6ef, 0xdcee, 0xdceb, 0xb6eb, 0xb6f5, 0xdcf0,
+ 0xdce4, 0xdced, 0xdce3, 0xb6f1, 0xb6f3, 0xdce8, 0xdcf1, 0xe15d,
+ 0xb9d0, 0xe163, 0xb9d5, 0xe15f, 0xe166, 0xe157, 0xb9d7, 0xb9d1,
+ 0xe15c, 0xbc55, 0xe15b, 0xe164, 0xb9d2, 0xb9d6, 0xe15a, 0xe160,
+ 0xe165, 0xe156, 0xb9d4, 0xe15e, 0xe162, 0xe168, 0xe158, 0xe161,
+ 0xb9d3, 0xe167, 0xe159, 0xbc59, 0xe54b, 0xbc57, 0xbc56, 0xe54d,
+ 0xe552, 0xe54e, 0xe551, 0xbc5c, 0xbea5, 0xbc5b, 0xe54a, 0xe550,
+ 0xbc5a, 0xe54f, 0xe54c, 0xbc58, 0xe94d, 0xe94f, 0xe94a, 0xbec1,
+ 0xe94c, 0xbec0, 0xe94e, 0xbec3, 0xe950, 0xbec2, 0xe949, 0xe94b,
+ 0xc0a5, 0xeccc, 0xc0a4, 0xeccd, 0xc0a3, 0xeccb, 0xc0a2, 0xecca,
+ 0xc253, 0xc252, 0xf1f6, 0xf1f8, 0xf1f7, 0xc361, 0xc362, 0xc363,
+ 0xf442, 0xc45b, 0xf7d3, 0xf7d2, 0xc5f2, 0xa468, 0xa4d0, 0xa7a7,
+ 0xce5f, 0xb3fc, 0xb3fd, 0xdcf2, 0xb9d8, 0xe169, 0xe553, 0xc95a,
+ 0xcab0, 0xcc42, 0xce60, 0xd159, 0xae4c, 0xf1f9, 0xc4dc, 0xa469,
+ 0xa57e, 0xc970, 0xa667, 0xa668, 0xa95d, 0xb0f7, 0xb9da, 0xb9db,
+ 0xb9d9, 0xa46a, 0xa4d1, 0xa4d3, 0xa4d2, 0xc95b, 0xa4d4, 0xa5a1,
+ 0xc971, 0xa5a2, 0xa669, 0xa66a, 0xc9cb, 0xa7a8, 0xcab1, 0xa961,
+ 0xcc43, 0xa95f, 0xa960, 0xa95e, 0xd15a, 0xabb6, 0xabb5, 0xabb7,
+ 0xabb4, 0xce61, 0xa962, 0xabb3, 0xae4d, 0xae4e, 0xae4f, 0xd4cd,
+ 0xb3fe, 0xd8b4, 0xb0f8, 0xb6f8, 0xb9dd, 0xb9dc, 0xe16a, 0xbc5d,
+ 0xbec4, 0xefc0, 0xf6da, 0xf7d4, 0xa46b, 0xa5a3, 0xa5a4, 0xc9d1,
+ 0xa66c, 0xa66f, 0xc9cf, 0xc9cd, 0xa66e, 0xc9d0, 0xc9d2, 0xc9cc,
+ 0xa671, 0xa670, 0xa66d, 0xa66b, 0xc9ce, 0xa7b3, 0xa7b0, 0xcab6,
+ 0xcab9, 0xcab8, 0xa7aa, 0xa7b2, 0xa7af, 0xcab5, 0xcab3, 0xa7ae,
+ 0xa7a9, 0xa7ac, 0xcab4, 0xcabb, 0xcab7, 0xa7ad, 0xa7b1, 0xa7b4,
+ 0xcab2, 0xcaba, 0xa7ab, 0xa967, 0xa96f, 0xcc4f, 0xcc48, 0xa970,
+ 0xcc53, 0xcc44, 0xcc4b, 0xa966, 0xcc45, 0xa964, 0xcc4c, 0xcc50,
+ 0xa963, 0xcc51, 0xcc4a, 0xcc4d, 0xa972, 0xa969, 0xcc54, 0xcc52,
+ 0xa96e, 0xa96c, 0xcc49, 0xa96b, 0xcc47, 0xcc46, 0xa96a, 0xa968,
+ 0xa971, 0xa96d, 0xa965, 0xcc4e, 0xabb9, 0xabc0, 0xce6f, 0xabb8,
+ 0xce67, 0xce63, 0xce73, 0xce62, 0xabbb, 0xce6c, 0xabbe, 0xabc1,
+ 0xabbc, 0xce70, 0xabbf, 0xae56, 0xce76, 0xce64, 0xce66, 0xce6d,
+ 0xce71, 0xce75, 0xce72, 0xce6b, 0xce6e, 0xce68, 0xabc3, 0xce6a,
+ 0xce69, 0xce74, 0xabba, 0xce65, 0xabc2, 0xabbd, 0xae5c, 0xd162,
+ 0xae5b, 0xd160, 0xae50, 0xae55, 0xd15f, 0xd15c, 0xd161, 0xae51,
+ 0xd15b, 0xae54, 0xae52, 0xd163, 0xae53, 0xae57, 0xae58, 0xae5a,
+ 0xae59, 0xd15d, 0xd15e, 0xd164, 0xd4d4, 0xb0f9, 0xd8c2, 0xd4d3,
+ 0xd4e6, 0xb140, 0xd4e4, 0xb0fe, 0xb0fa, 0xd4ed, 0xd4dd, 0xd4e0,
+ 0xb143, 0xd4ea, 0xd4e2, 0xb0fb, 0xb144, 0xd4e7, 0xd4e5, 0xd4d6,
+ 0xd4eb, 0xd4df, 0xd4da, 0xd4d0, 0xd4ec, 0xd4dc, 0xd4cf, 0xb142,
+ 0xd4e1, 0xd4ee, 0xd4de, 0xd4d2, 0xd4d7, 0xd4ce, 0xb141, 0xd4db,
+ 0xd4d8, 0xb0fc, 0xd4d1, 0xd4e9, 0xb0fd, 0xd4d9, 0xd4d5, 0xd4e8,
+ 0xb440, 0xd8bb, 0xd8b8, 0xd8c9, 0xd8bd, 0xd8ca, 0xb442, 0xd8c6,
+ 0xd8c3, 0xd8c4, 0xd8c7, 0xd8cb, 0xd4e3, 0xd8cd, 0xdd47, 0xb443,
+ 0xd8ce, 0xd8b6, 0xd8c0, 0xd8c5, 0xb441, 0xb444, 0xd8cc, 0xd8cf,
+ 0xd8ba, 0xd8b7, 0xd8b9, 0xd8be, 0xd8bc, 0xb445, 0xd8c8, 0xd8bf,
+ 0xd8c1, 0xd8b5, 0xdcfa, 0xdcf8, 0xb742, 0xb740, 0xdd43, 0xdcf9,
+ 0xdd44, 0xdd40, 0xdcf7, 0xdd46, 0xdcf6, 0xdcfd, 0xb6fe, 0xb6fd,
+ 0xb6fc, 0xdcfb, 0xdd41, 0xb6f9, 0xb741, 0xdcf4, 0xdcfe, 0xdcf3,
+ 0xdcfc, 0xb6fa, 0xdd42, 0xdcf5, 0xb6fb, 0xdd45, 0xe16e, 0xb9e2,
+ 0xb9e1, 0xb9e3, 0xe17a, 0xe170, 0xe176, 0xe16b, 0xe179, 0xe178,
+ 0xe17c, 0xe175, 0xb9de, 0xe174, 0xb9e4, 0xe16d, 0xb9df, 0xe17b,
+ 0xb9e0, 0xe16f, 0xe172, 0xe177, 0xe171, 0xe16c, 0xe173, 0xe555,
+ 0xbc61, 0xe558, 0xe557, 0xe55a, 0xe55c, 0xbc5f, 0xe556, 0xe554,
+ 0xe55d, 0xe55b, 0xe559, 0xe55f, 0xe55e, 0xbc63, 0xbc5e, 0xbc60,
+ 0xbc62, 0xe560, 0xe957, 0xe956, 0xe955, 0xe958, 0xe951, 0xe952,
+ 0xe95a, 0xe953, 0xbec5, 0xe95c, 0xe95b, 0xe954, 0xecd1, 0xc0a8,
+ 0xeccf, 0xecd4, 0xecd3, 0xe959, 0xc0a7, 0xecd2, 0xecce, 0xecd6,
+ 0xecd5, 0xc0a6, 0xecd0, 0xbec6, 0xc254, 0xefc1, 0xf1fa, 0xf1fb,
+ 0xf1fc, 0xc45c, 0xc45d, 0xf443, 0xf5c8, 0xf5c7, 0xf6db, 0xf6dc,
+ 0xf7d5, 0xf8a7, 0xa46c, 0xa46d, 0xa46e, 0xa4d5, 0xa5a5, 0xc9d3,
+ 0xa672, 0xa673, 0xa7b7, 0xa7b8, 0xa7b6, 0xa7b5, 0xa973, 0xcc55,
+ 0xa975, 0xa974, 0xcc56, 0xabc4, 0xae5d, 0xd165, 0xd4f0, 0xb145,
+ 0xb447, 0xd4ef, 0xb446, 0xb9e5, 0xe17d, 0xbec7, 0xc0a9, 0xecd7,
+ 0xc45e, 0xc570, 0xc972, 0xa5a6, 0xc973, 0xa676, 0xa674, 0xa675,
+ 0xa677, 0xa7ba, 0xa7b9, 0xcabc, 0xa7bb, 0xcabd, 0xcc57, 0xcc58,
+ 0xa976, 0xa978, 0xa97a, 0xa977, 0xa97b, 0xa979, 0xabc8, 0xabc5,
+ 0xabc7, 0xabc9, 0xabc6, 0xd166, 0xce77, 0xd168, 0xd167, 0xae63,
+ 0xae5f, 0xae60, 0xae62, 0xae64, 0xae61, 0xae66, 0xae65, 0xb14a,
+ 0xd4f2, 0xd4f1, 0xb149, 0xb148, 0xb147, 0xb14b, 0xb146, 0xd8d5,
+ 0xd8d2, 0xb449, 0xd8d1, 0xd8d6, 0xb44b, 0xd8d4, 0xb448, 0xb44a,
+ 0xd8d3, 0xdd48, 0xdd49, 0xdd4a, 0xb9e6, 0xb9ee, 0xe17e, 0xb9e8,
+ 0xb9ec, 0xe1a1, 0xb9ed, 0xb9e9, 0xb9ea, 0xb9e7, 0xb9eb, 0xbc66,
+ 0xd8d0, 0xbc67, 0xbc65, 0xbc64, 0xe95d, 0xbec8, 0xecd8, 0xecd9,
+ 0xc364, 0xc45f, 0xa46f, 0xa678, 0xabca, 0xd169, 0xae67, 0xb14e,
+ 0xb14d, 0xb14c, 0xb44c, 0xb44d, 0xd8d7, 0xb9ef, 0xbec9, 0xa470,
+ 0xc95c, 0xa4d6, 0xc974, 0xc9d4, 0xa679, 0xa97c, 0xdd4b, 0xa471,
+ 0xa4d7, 0xc9d5, 0xcabe, 0xcabf, 0xa7bc, 0xd8d8, 0xb44e, 0xdd4c,
+ 0xc0aa, 0xa472, 0xa4a8, 0xa4d8, 0xc975, 0xa5a7, 0xa7c0, 0xa7bf,
+ 0xa7bd, 0xa7be, 0xcc59, 0xa97e, 0xa9a1, 0xcc5a, 0xa97d, 0xabce,
+ 0xce78, 0xabcd, 0xabcb, 0xabcc, 0xae6a, 0xae68, 0xd16b, 0xae69,
+ 0xd16a, 0xae5e, 0xd4f3, 0xb150, 0xb151, 0xb14f, 0xb9f0, 0xe1a2,
+ 0xbc68, 0xbc69, 0xe561, 0xc0ab, 0xefc2, 0xefc3, 0xc4dd, 0xf8a8,
+ 0xc94b, 0xa4d9, 0xa473, 0xc977, 0xc976, 0xa67a, 0xc9d7, 0xc9d8,
+ 0xc9d6, 0xc9d9, 0xcac7, 0xcac2, 0xcac4, 0xcac6, 0xcac3, 0xa7c4,
+ 0xcac0, 0xcac1, 0xa7c1, 0xa7c2, 0xcac5, 0xcac8, 0xa7c3, 0xcac9,
+ 0xcc68, 0xcc62, 0xcc5d, 0xa9a3, 0xcc65, 0xcc63, 0xcc5c, 0xcc69,
+ 0xcc6c, 0xcc67, 0xcc60, 0xa9a5, 0xcc66, 0xa9a6, 0xcc61, 0xcc64,
+ 0xcc5b, 0xcc5f, 0xcc6b, 0xa9a7, 0xa9a8, 0xcc5e, 0xcc6a, 0xa9a2,
+ 0xa9a4, 0xceab, 0xcea4, 0xceaa, 0xcea3, 0xcea5, 0xce7d, 0xce7b,
+ 0xceac, 0xcea9, 0xce79, 0xabd0, 0xcea7, 0xcea8, 0xcea6, 0xce7c,
+ 0xce7a, 0xabcf, 0xcea2, 0xce7e, 0xcea1, 0xcead, 0xae6f, 0xae6e,
+ 0xd16c, 0xae6b, 0xd16e, 0xae70, 0xd16f, 0xae73, 0xae71, 0xd170,
+ 0xceae, 0xd172, 0xae6d, 0xae6c, 0xd16d, 0xd171, 0xae72, 0xb153,
+ 0xb152, 0xd4f5, 0xd4f9, 0xd4fb, 0xb154, 0xd4fe, 0xb158, 0xd541,
+ 0xb15a, 0xb156, 0xb15e, 0xb15b, 0xd4f7, 0xb155, 0xd4f6, 0xd4f4,
+ 0xd543, 0xd4f8, 0xb157, 0xd542, 0xb15c, 0xd4fd, 0xd4fc, 0xb15d,
+ 0xd4fa, 0xb159, 0xd544, 0xd540, 0xd8e7, 0xd8ee, 0xd8e3, 0xb451,
+ 0xd8df, 0xd8ef, 0xd8d9, 0xd8ec, 0xd8ea, 0xd8e4, 0xd8ed, 0xd8e6,
+ 0xd8de, 0xd8f0, 0xd8dc, 0xd8e9, 0xd8da, 0xd8f1, 0xb452, 0xd8eb,
+ 0xdd4f, 0xd8dd, 0xb44f, 0xd8e1, 0xb450, 0xd8e0, 0xd8e5, 0xd8e2,
+ 0xd8e8, 0xdd53, 0xdd56, 0xdd4e, 0xdd50, 0xdd55, 0xdd54, 0xb743,
+ 0xd8db, 0xdd52, 0xb744, 0xdd4d, 0xdd51, 0xe1a9, 0xe1b0, 0xe1a7,
+ 0xe1ae, 0xe1a5, 0xe1ad, 0xe1b1, 0xe1a4, 0xe1a8, 0xe1a3, 0xb9f1,
+ 0xe1a6, 0xb9f2, 0xe1ac, 0xe1ab, 0xe1aa, 0xe1af, 0xe565, 0xe567,
+ 0xbc6b, 0xe568, 0xe563, 0xe562, 0xe56c, 0xe56a, 0xbc6a, 0xe56d,
+ 0xe564, 0xe569, 0xe56b, 0xe566, 0xe961, 0xe966, 0xe960, 0xe965,
+ 0xe95e, 0xe968, 0xe964, 0xe969, 0xe963, 0xe95f, 0xe967, 0xe96a,
+ 0xe962, 0xecda, 0xc0af, 0xc0ad, 0xc0ac, 0xc0ae, 0xefc4, 0xf172,
+ 0xf1fd, 0xf444, 0xf445, 0xc460, 0xf5c9, 0xc4de, 0xf5ca, 0xf6de,
+ 0xc572, 0xc571, 0xf6dd, 0xc5c9, 0xf7d6, 0xa474, 0xa67b, 0xc9da,
+ 0xcaca, 0xa8b5, 0xb15f, 0xa475, 0xa5aa, 0xa5a9, 0xa5a8, 0xa7c5,
+ 0xae74, 0xdd57, 0xa476, 0xa477, 0xa478, 0xa4da, 0xabd1, 0xceaf,
+ 0xb453, 0xa479, 0xc95d, 0xa5ab, 0xa5ac, 0xc978, 0xa67c, 0xcacb,
+ 0xa7c6, 0xcacc, 0xa9ae, 0xcc6e, 0xa9ac, 0xa9ab, 0xcc6d, 0xa9a9,
+ 0xcc6f, 0xa9aa, 0xa9ad, 0xabd2, 0xabd4, 0xceb3, 0xceb0, 0xceb1,
+ 0xceb2, 0xceb4, 0xabd3, 0xd174, 0xd173, 0xae76, 0xae75, 0xb162,
+ 0xd546, 0xb161, 0xb163, 0xb160, 0xb455, 0xd545, 0xb456, 0xd8f3,
+ 0xb457, 0xd8f2, 0xb454, 0xdd5a, 0xdd5c, 0xb745, 0xdd5b, 0xdd59,
+ 0xdd58, 0xe1b4, 0xb9f7, 0xb9f5, 0xb9f6, 0xe1b2, 0xe1b3, 0xb9f3,
+ 0xe571, 0xe56f, 0xbc6d, 0xe570, 0xbc6e, 0xbc6c, 0xb9f4, 0xe96d,
+ 0xe96b, 0xe96c, 0xe56e, 0xecdc, 0xc0b0, 0xecdb, 0xefc5, 0xefc6,
+ 0xe96e, 0xf1fe, 0xa47a, 0xa5ad, 0xa67e, 0xc9db, 0xa67d, 0xa9af,
+ 0xb746, 0xa4db, 0xa5ae, 0xabd5, 0xb458, 0xc979, 0xc97a, 0xc9dc,
+ 0xa7c8, 0xcad0, 0xcace, 0xa7c9, 0xcacd, 0xcacf, 0xcad1, 0xa7c7,
+ 0xa9b3, 0xa9b4, 0xa9b1, 0xa9b0, 0xceb8, 0xa9b2, 0xabd6, 0xceb7,
+ 0xceb9, 0xceb6, 0xceba, 0xabd7, 0xae79, 0xd175, 0xd177, 0xae77,
+ 0xd178, 0xae78, 0xd176, 0xceb5, 0xd547, 0xd54a, 0xd54b, 0xd548,
+ 0xb167, 0xb166, 0xb164, 0xb165, 0xd549, 0xb168, 0xb45a, 0xb45b,
+ 0xb45c, 0xdd5d, 0xdd5f, 0xdd61, 0xb748, 0xb747, 0xb459, 0xdd60,
+ 0xdd5e, 0xe1b8, 0xe1b6, 0xe1bc, 0xb9f8, 0xe1bd, 0xe1ba, 0xb9f9,
+ 0xe1b7, 0xe1b5, 0xe1bb, 0xbc70, 0xe573, 0xe1b9, 0xbc72, 0xe574,
+ 0xbc71, 0xbc74, 0xe575, 0xbc6f, 0xbc73, 0xe973, 0xe971, 0xe970,
+ 0xe972, 0xe96f, 0xc366, 0xf446, 0xf447, 0xf5cb, 0xf6df, 0xc655,
+ 0xa9b5, 0xa7ca, 0xabd8, 0xa47b, 0xa4dc, 0xa5af, 0xc9dd, 0xa7cb,
+ 0xcad2, 0xcebb, 0xabd9, 0xb9fa, 0xa47c, 0xa6a1, 0xb749, 0xa47d,
+ 0xa4dd, 0xa4de, 0xa5b1, 0xa5b0, 0xc9de, 0xa6a2, 0xcad3, 0xa7cc,
+ 0xcc71, 0xcc72, 0xcc73, 0xa9b6, 0xa9b7, 0xcc70, 0xa9b8, 0xabda,
+ 0xcebc, 0xd17a, 0xae7a, 0xd179, 0xb169, 0xd54c, 0xb16a, 0xd54d,
+ 0xb45d, 0xdd62, 0xe1bf, 0xe1be, 0xb9fb, 0xbc75, 0xe576, 0xbeca,
+ 0xe974, 0xc0b1, 0xc573, 0xf7d8, 0xcc74, 0xcebd, 0xb16b, 0xd8f4,
+ 0xb74a, 0xc255, 0xa7ce, 0xa7cd, 0xabdb, 0xd17b, 0xb16d, 0xb343,
+ 0xb16e, 0xb16c, 0xb45e, 0xe1c0, 0xb9fc, 0xbc76, 0xc94c, 0xc9df,
+ 0xcad5, 0xa7cf, 0xcad4, 0xa7d0, 0xa9bc, 0xcc77, 0xcc76, 0xa9bb,
+ 0xa9b9, 0xa9ba, 0xcc75, 0xabdd, 0xcebe, 0xabe0, 0xabdc, 0xabe2,
+ 0xabde, 0xabdf, 0xabe1, 0xae7d, 0xae7c, 0xae7b, 0xd54f, 0xb16f,
+ 0xb172, 0xb170, 0xd54e, 0xb175, 0xb171, 0xd550, 0xb174, 0xb173,
+ 0xd8f6, 0xd8f5, 0xb461, 0xb45f, 0xb460, 0xd8f7, 0xb74b, 0xdd64,
+ 0xb74c, 0xdd63, 0xe577, 0xbc78, 0xe1c1, 0xbc77, 0xb9fd, 0xecde,
+ 0xe975, 0xc0b2, 0xecdd, 0xf240, 0xf448, 0xf449, 0xa4df, 0xa5b2,
+ 0xc97b, 0xa7d2, 0xa7d4, 0xc9e2, 0xcad8, 0xcad7, 0xcad6, 0xc9e1,
+ 0xc9e0, 0xa6a4, 0xa7d3, 0xa7d1, 0xa6a3, 0xa9bd, 0xcc78, 0xa9be,
+ 0xcadd, 0xcadf, 0xcade, 0xcc79, 0xcada, 0xa7d8, 0xa7d6, 0xcad9,
+ 0xcadb, 0xcae1, 0xa7d5, 0xcadc, 0xcae5, 0xa9c0, 0xcae2, 0xa7d7,
+ 0xcae0, 0xcae3, 0xa9bf, 0xa9c1, 0xcae4, 0xccaf, 0xcca2, 0xcc7e,
+ 0xccae, 0xcca9, 0xabe7, 0xa9c2, 0xccaa, 0xccad, 0xabe3, 0xccac,
+ 0xa9c3, 0xa9c8, 0xa9c6, 0xcca3, 0xcc7c, 0xcca5, 0xa9cd, 0xccb0,
+ 0xabe4, 0xcca6, 0xabe5, 0xa9c9, 0xcca8, 0xcecd, 0xabe6, 0xcc7b,
+ 0xa9ca, 0xabe8, 0xa9cb, 0xa9c7, 0xa9cc, 0xcca7, 0xcc7a, 0xccab,
+ 0xa9c4, 0xcc7d, 0xcca4, 0xcca1, 0xa9c5, 0xcebf, 0xcec0, 0xceca,
+ 0xd1a1, 0xcecb, 0xabee, 0xcece, 0xcec4, 0xabed, 0xcec6, 0xcec7,
+ 0xcec9, 0xabe9, 0xaea3, 0xcec5, 0xcec1, 0xaea4, 0xcecf, 0xae7e,
+ 0xd17d, 0xcec8, 0xd17c, 0xcec3, 0xcecc, 0xabec, 0xaea1, 0xabf2,
+ 0xaea2, 0xced0, 0xd17e, 0xabeb, 0xaea6, 0xabf1, 0xabf0, 0xabef,
+ 0xaea5, 0xced1, 0xaea7, 0xabea, 0xcec2, 0xb176, 0xd1a4, 0xd1a6,
+ 0xd1a8, 0xaea8, 0xaeae, 0xd553, 0xd1ac, 0xd1a3, 0xb178, 0xd551,
+ 0xaead, 0xaeab, 0xd1ae, 0xd552, 0xd1a5, 0xaeac, 0xd1a9, 0xaeaf,
+ 0xd1ab, 0xaeaa, 0xd1aa, 0xd1ad, 0xd1a7, 0xaea9, 0xb179, 0xd1a2,
+ 0xb177, 0xb17a, 0xd555, 0xd55e, 0xb464, 0xb17c, 0xb1a3, 0xb465,
+ 0xd560, 0xb1aa, 0xd8f9, 0xd556, 0xb1a2, 0xb1a5, 0xb17e, 0xd554,
+ 0xd562, 0xd565, 0xd949, 0xd563, 0xd8fd, 0xb1a1, 0xb1a8, 0xb1ac,
+ 0xd55d, 0xd8f8, 0xd561, 0xb17b, 0xd8fa, 0xd564, 0xd8fc, 0xd559,
+ 0xb462, 0xd557, 0xd558, 0xb1a7, 0xb1a6, 0xd55b, 0xb1ab, 0xd55f,
+ 0xb1a4, 0xd55c, 0xb1a9, 0xb466, 0xb463, 0xd8fb, 0xd55a, 0xb17d,
+ 0xb46b, 0xb46f, 0xd940, 0xb751, 0xb46d, 0xd944, 0xb471, 0xdd65,
+ 0xd946, 0xb753, 0xb469, 0xb46c, 0xd947, 0xd948, 0xd94e, 0xb473,
+ 0xb754, 0xd94a, 0xd94f, 0xd943, 0xb75e, 0xb755, 0xb472, 0xd941,
+ 0xd950, 0xb75d, 0xb470, 0xb74e, 0xd94d, 0xb474, 0xd945, 0xd8fe,
+ 0xb46a, 0xd942, 0xd94b, 0xb74d, 0xb752, 0xb467, 0xd94c, 0xb750,
+ 0xb468, 0xb75c, 0xe1c3, 0xdd70, 0xdd68, 0xe1c2, 0xdd6c, 0xdd6e,
+ 0xdd6b, 0xb75b, 0xdd6a, 0xb75f, 0xe1d2, 0xb75a, 0xba40, 0xdd71,
+ 0xe1c4, 0xb758, 0xdd69, 0xdd6d, 0xb9fe, 0xb74f, 0xdd66, 0xdd67,
+ 0xba41, 0xb757, 0xb759, 0xb756, 0xdd6f, 0xe1c8, 0xe1c9, 0xe1ce,
+ 0xbc7d, 0xe1d5, 0xba47, 0xba46, 0xe1d0, 0xbc7c, 0xe1c5, 0xba45,
+ 0xe1d4, 0xba43, 0xba44, 0xe1d1, 0xe5aa, 0xbc7a, 0xb46e, 0xe1d3,
+ 0xbca3, 0xe1cb, 0xbc7b, 0xbca2, 0xe1c6, 0xe1ca, 0xe1c7, 0xe1cd,
+ 0xba48, 0xbc79, 0xba42, 0xe57a, 0xe1cf, 0xbca1, 0xbca4, 0xe1cc,
+ 0xbc7e, 0xe579, 0xe57e, 0xbece, 0xe578, 0xe9a3, 0xe5a9, 0xbca8,
+ 0xbca6, 0xbecc, 0xe5a6, 0xe5a2, 0xbcac, 0xe978, 0xbcaa, 0xe5a1,
+ 0xe976, 0xe5a5, 0xe5a8, 0xe57d, 0xbcab, 0xbca5, 0xe977, 0xbecd,
+ 0xe5a7, 0xbca7, 0xbca9, 0xe5a4, 0xbcad, 0xe5a3, 0xe57c, 0xe57b,
+ 0xbecb, 0xe5ab, 0xe97a, 0xece0, 0xbed0, 0xe9a2, 0xe97e, 0xece1,
+ 0xbed1, 0xe9a1, 0xe97c, 0xc0b4, 0xecdf, 0xe979, 0xe97b, 0xc0b5,
+ 0xbed3, 0xc0b3, 0xbed2, 0xc0b7, 0xe97d, 0xbecf, 0xefcf, 0xefc7,
+ 0xece7, 0xefc8, 0xece3, 0xc256, 0xece5, 0xece4, 0xc0b6, 0xece2,
+ 0xece6, 0xefd0, 0xefcc, 0xefce, 0xefc9, 0xefca, 0xefcd, 0xefcb,
+ 0xc367, 0xc36a, 0xc369, 0xc368, 0xc461, 0xf44a, 0xc462, 0xf241,
+ 0xc4df, 0xf5cc, 0xc4e0, 0xc574, 0xc5ca, 0xf7d9, 0xf7da, 0xf7db,
+ 0xf9ba, 0xa4e0, 0xc97c, 0xa5b3, 0xa6a6, 0xa6a7, 0xa6a5, 0xa6a8,
+ 0xa7da, 0xa7d9, 0xccb1, 0xa9cf, 0xa9ce, 0xd1af, 0xb1ad, 0xb1ae,
+ 0xb475, 0xdd72, 0xb760, 0xb761, 0xdd74, 0xdd76, 0xdd75, 0xe1d7,
+ 0xe1d6, 0xba49, 0xe1d8, 0xe5ac, 0xbcae, 0xbed4, 0xc0b8, 0xc257,
+ 0xc0b9, 0xa4e1, 0xcae6, 0xccb2, 0xa9d1, 0xa9d0, 0xa9d2, 0xabf3,
+ 0xced2, 0xced3, 0xd1b0, 0xaeb0, 0xb1af, 0xb476, 0xd951, 0xa4e2,
+ 0xa47e, 0xa4e3, 0xc97d, 0xa5b7, 0xa5b6, 0xa5b4, 0xa5b5, 0xa6ab,
+ 0xc9e9, 0xc9eb, 0xa6aa, 0xc9e3, 0xc9e4, 0xc9ea, 0xc9e6, 0xc9e8,
+ 0xa6a9, 0xc9e5, 0xc9ec, 0xc9e7, 0xa7e1, 0xa7ea, 0xa7e8, 0xcaf0,
+ 0xcaed, 0xcaf5, 0xa7e6, 0xcaf6, 0xa7df, 0xcaf3, 0xa7e5, 0xcaef,
+ 0xcaee, 0xa7e3, 0xcaf4, 0xa7e4, 0xa9d3, 0xa7de, 0xcaf1, 0xcae7,
+ 0xa7db, 0xa7ee, 0xcaec, 0xcaf2, 0xa7e0, 0xa7e2, 0xcae8, 0xcae9,
+ 0xcaea, 0xa7ed, 0xa7e7, 0xa7ec, 0xcaeb, 0xa7eb, 0xa7dd, 0xa7dc,
+ 0xa7e9, 0xa9e1, 0xccbe, 0xccb7, 0xa9dc, 0xa9ef, 0xccb3, 0xccba,
+ 0xccbc, 0xccbf, 0xa9ea, 0xccbb, 0xccb4, 0xa9e8, 0xccb8, 0xccc0,
+ 0xa9d9, 0xccbd, 0xa9e3, 0xa9e2, 0xccb6, 0xa9d7, 0xa9d8, 0xa9d6,
+ 0xa9ee, 0xa9e6, 0xa9e0, 0xa9d4, 0xccb9, 0xa9df, 0xa9d5, 0xa9e7,
+ 0xa9f0, 0xced4, 0xa9e4, 0xccb5, 0xa9da, 0xa9dd, 0xa9de, 0xa9ec,
+ 0xa9ed, 0xa9eb, 0xa9e5, 0xa9e9, 0xa9db, 0xabf4, 0xceda, 0xac41,
+ 0xabf8, 0xabfa, 0xac40, 0xcee6, 0xabfd, 0xd1b1, 0xaeb1, 0xac43,
+ 0xced7, 0xcedf, 0xabfe, 0xcede, 0xcedb, 0xcee3, 0xcee5, 0xabf7,
+ 0xabfb, 0xac42, 0xaeb3, 0xcee0, 0xabf9, 0xac45, 0xced9, 0xabfc,
+ 0xaeb2, 0xabf6, 0xced6, 0xcedd, 0xced5, 0xced8, 0xcedc, 0xd1b2,
+ 0xac44, 0xcee1, 0xcee2, 0xcee4, 0xabf5, 0xaec1, 0xd1be, 0xaebf,
+ 0xaec0, 0xd1b4, 0xd1c4, 0xaeb6, 0xd566, 0xd1c6, 0xd1c0, 0xd1b7,
+ 0xd1c9, 0xd1ba, 0xaebc, 0xd57d, 0xd1bd, 0xaebe, 0xaeb5, 0xd1cb,
+ 0xd1bf, 0xaeb8, 0xd1b8, 0xd1b5, 0xd1b6, 0xaeb9, 0xd1c5, 0xd1cc,
+ 0xaebb, 0xd1bc, 0xd1bb, 0xaec3, 0xaec2, 0xaeb4, 0xaeba, 0xaebd,
+ 0xd1c8, 0xd1c2, 0xaeb7, 0xd1b3, 0xd1ca, 0xd1c1, 0xd1c3, 0xd1c7,
+ 0xd567, 0xb1b7, 0xb1cb, 0xb1ca, 0xb1bf, 0xd579, 0xd575, 0xd572,
+ 0xd5a6, 0xb1ba, 0xb1b2, 0xd577, 0xb4a8, 0xb1b6, 0xd5a1, 0xb1cc,
+ 0xb1c9, 0xd57b, 0xd56a, 0xb1c8, 0xd5a3, 0xd569, 0xb1bd, 0xb1c1,
+ 0xd5a2, 0xd573, 0xb1c2, 0xb1bc, 0xd568, 0xb478, 0xd5a5, 0xd571,
+ 0xb1c7, 0xd574, 0xd5a4, 0xb1c6, 0xd952, 0xb1b3, 0xd56f, 0xb1b8,
+ 0xb1c3, 0xb1be, 0xd578, 0xd56e, 0xd56c, 0xd57e, 0xb1b0, 0xb1c4,
+ 0xb1b4, 0xb477, 0xd57c, 0xb1b5, 0xb1b1, 0xb1c0, 0xb1bb, 0xb1b9,
+ 0xd570, 0xb1c5, 0xd56d, 0xd57a, 0xd576, 0xd954, 0xd953, 0xd56b,
+ 0xd964, 0xb47a, 0xd96a, 0xd959, 0xd967, 0xdd77, 0xb47d, 0xd96b,
+ 0xd96e, 0xb47c, 0xd95c, 0xd96d, 0xd96c, 0xb47e, 0xd955, 0xb479,
+ 0xb4a3, 0xb4a1, 0xd969, 0xd95f, 0xb4a5, 0xd970, 0xd968, 0xd971,
+ 0xb4ad, 0xb4ab, 0xd966, 0xd965, 0xd963, 0xd95d, 0xb4a4, 0xb4a2,
+ 0xd1b9, 0xd956, 0xddb7, 0xd957, 0xb47b, 0xb4aa, 0xdd79, 0xb4a6,
+ 0xb4a7, 0xd958, 0xd96f, 0xdd78, 0xd960, 0xd95b, 0xb4a9, 0xd961,
+ 0xd95e, 0xb4ae, 0xb770, 0xdd7c, 0xddb1, 0xddb6, 0xddaa, 0xb76c,
+ 0xddbb, 0xb769, 0xdd7a, 0xdd7b, 0xb762, 0xb76b, 0xdda4, 0xb76e,
+ 0xb76f, 0xdda5, 0xddb2, 0xddb8, 0xb76a, 0xb764, 0xdda3, 0xdd7d,
+ 0xddba, 0xdda8, 0xdda9, 0xdd7e, 0xddb4, 0xddab, 0xddb5, 0xddad,
+ 0xb765, 0xe1d9, 0xb768, 0xb766, 0xddb9, 0xddb0, 0xddac, 0xdda1,
+ 0xba53, 0xddaf, 0xb76d, 0xdda7, 0xdda6, 0xb767, 0xb763, 0xe1ee,
+ 0xddb3, 0xddae, 0xdda2, 0xe1e9, 0xe1da, 0xe1e5, 0xe1ec, 0xba51,
+ 0xb4ac, 0xe1ea, 0xba4c, 0xba4b, 0xe1f1, 0xe1db, 0xe1e8, 0xe1dc,
+ 0xe1e7, 0xba4f, 0xe1eb, 0xd962, 0xe1f2, 0xe1e3, 0xba52, 0xe5ba,
+ 0xbcaf, 0xe1f0, 0xe1ef, 0xba54, 0xe5ad, 0xbcb0, 0xe5ae, 0xe1df,
+ 0xe1e0, 0xe1dd, 0xe1e2, 0xe1de, 0xe1f3, 0xba4e, 0xbcb1, 0xba50,
+ 0xba55, 0xe1e1, 0xe1ed, 0xe1e6, 0xe5b1, 0xba4a, 0xbcb4, 0xe9aa,
+ 0xe5b6, 0xe5b5, 0xe5b7, 0xe5b4, 0xbcb5, 0xbcbb, 0xbcb8, 0xbcb9,
+ 0xe5af, 0xe5b2, 0xe5bc, 0xbcc1, 0xbcbf, 0xe5b3, 0xd95a, 0xbcb2,
+ 0xe5b9, 0xe5b0, 0xbcc2, 0xe5b8, 0xba4d, 0xbcb7, 0xe1e4, 0xbcba,
+ 0xbcbe, 0xbcc0, 0xbcbd, 0xbcbc, 0xbcb6, 0xe5bb, 0xbcb3, 0xbcc3,
+ 0xbed8, 0xbed9, 0xe9a9, 0xbee2, 0xbedf, 0xbed6, 0xbedd, 0xe9ab,
+ 0xbedb, 0xbed5, 0xbedc, 0xe9a8, 0xc0bb, 0xbed7, 0xbede, 0xc0ba,
+ 0xe9a7, 0xe9a6, 0xbee0, 0xbee1, 0xe9a5, 0xe9a4, 0xc0bc, 0xe9ae,
+ 0xbeda, 0xe9ac, 0xc0bd, 0xc0c2, 0xecea, 0xecec, 0xc0bf, 0xeced,
+ 0xece9, 0xeceb, 0xc0c0, 0xc0c3, 0xece8, 0xc0be, 0xc0c1, 0xc259,
+ 0xe9ad, 0xc258, 0xc25e, 0xefd4, 0xc25c, 0xc25d, 0xefd7, 0xefd3,
+ 0xc25a, 0xefd1, 0xc36b, 0xefd5, 0xefd6, 0xefd2, 0xc25b, 0xf242,
+ 0xf245, 0xf246, 0xf244, 0xf247, 0xc36c, 0xf243, 0xf44e, 0xc464,
+ 0xf44d, 0xf44c, 0xf44b, 0xc463, 0xc465, 0xf5cd, 0xc4e2, 0xc4e1,
+ 0xf6e1, 0xf6e0, 0xf6e3, 0xc5cb, 0xc575, 0xf7dd, 0xf6e2, 0xf7dc,
+ 0xc5cd, 0xc5cc, 0xc5f3, 0xf8a9, 0xf8ef, 0xa4e4, 0xd972, 0xe9af,
+ 0xa6ac, 0xcaf7, 0xa7f1, 0xa7ef, 0xa7f0, 0xccc1, 0xa9f1, 0xac46,
+ 0xcee7, 0xcee8, 0xac47, 0xd1ce, 0xaec4, 0xaec5, 0xd1cd, 0xb1d3,
+ 0xb1cf, 0xd5a7, 0xb1d6, 0xb1d5, 0xb1ce, 0xb1d1, 0xb1d4, 0xb1d0,
+ 0xd976, 0xb1cd, 0xb4af, 0xb4b1, 0xb4b2, 0xd975, 0xd978, 0xb4b0,
+ 0xd973, 0xd977, 0xd974, 0xb771, 0xddbc, 0xba56, 0xe1f4, 0xbee3,
+ 0xbcc4, 0xe5bd, 0xbcc5, 0xbcc6, 0xe5bf, 0xe5be, 0xe5c0, 0xe9b1,
+ 0xe9b0, 0xecef, 0xecee, 0xc0c4, 0xc0c5, 0xf248, 0xa4e5, 0xd979,
+ 0xb4b4, 0xb4b3, 0xddbd, 0xefd8, 0xc4e3, 0xf7de, 0xa4e6, 0xaec6,
+ 0xb1d8, 0xb1d7, 0xd97a, 0xd97b, 0xb772, 0xe1f5, 0xba57, 0xe9b2,
+ 0xa4e7, 0xa5b8, 0xa9f2, 0xccc2, 0xcee9, 0xac48, 0xb1d9, 0xd97c,
+ 0xb4b5, 0xb773, 0xe5c1, 0xe5c2, 0xecf0, 0xc25f, 0xf8f0, 0xa4e8,
+ 0xccc3, 0xa9f3, 0xac49, 0xceea, 0xaec7, 0xd1d2, 0xd1d0, 0xd1d1,
+ 0xaec8, 0xd1cf, 0xb1db, 0xb1dc, 0xd5a8, 0xb1dd, 0xb1da, 0xd97d,
+ 0xd97e, 0xddbe, 0xba59, 0xba58, 0xecf1, 0xefd9, 0xf24a, 0xf249,
+ 0xf44f, 0xc95e, 0xac4a, 0xa4e9, 0xa5b9, 0xa6ae, 0xa6ad, 0xa6af,
+ 0xa6b0, 0xc9ee, 0xc9ed, 0xcaf8, 0xa7f2, 0xcafb, 0xcafa, 0xcaf9,
+ 0xcafc, 0xa9f4, 0xccc9, 0xccc5, 0xccce, 0xa9fb, 0xa9f9, 0xccca,
+ 0xccc6, 0xcccd, 0xa9f8, 0xaa40, 0xccc8, 0xccc4, 0xa9fe, 0xcccb,
+ 0xa9f7, 0xcccc, 0xa9fa, 0xa9fc, 0xccd0, 0xcccf, 0xccc7, 0xa9f6,
+ 0xa9f5, 0xa9fd, 0xceef, 0xcef5, 0xac50, 0xac4d, 0xceec, 0xcef1,
+ 0xac53, 0xac4b, 0xcef0, 0xac4e, 0xac51, 0xcef3, 0xac4c, 0xcef8,
+ 0xac4f, 0xac52, 0xceed, 0xcef2, 0xcef6, 0xceee, 0xceeb, 0xcef7,
+ 0xcef4, 0xaed0, 0xaec9, 0xaecc, 0xaecf, 0xd1d5, 0xaeca, 0xd1d3,
+ 0xaece, 0xaecb, 0xd1d6, 0xaecd, 0xd5ac, 0xb1df, 0xd5ab, 0xd5ad,
+ 0xb1de, 0xb1e3, 0xd1d4, 0xd5aa, 0xd5ae, 0xb1e0, 0xd5a9, 0xb1e2,
+ 0xb1e1, 0xd9a7, 0xd9a2, 0xb4b6, 0xb4ba, 0xb4b7, 0xd9a5, 0xd9a8,
+ 0xb4b8, 0xb4b9, 0xb4be, 0xddc7, 0xd9a6, 0xb4bc, 0xd9a3, 0xd9a1,
+ 0xb4bd, 0xd9a4, 0xb779, 0xddbf, 0xb776, 0xb777, 0xb775, 0xddc4,
+ 0xddc3, 0xddc0, 0xb77b, 0xddc2, 0xb4bb, 0xddc6, 0xddc1, 0xb778,
+ 0xb774, 0xb77a, 0xddc5, 0xba5c, 0xe1f8, 0xe1f7, 0xe1f6, 0xba5a,
+ 0xba5b, 0xe5c5, 0xe5c8, 0xbcc8, 0xbcc7, 0xe5c9, 0xe5c4, 0xbcca,
+ 0xe5c6, 0xbcc9, 0xe5c3, 0xe5c7, 0xbee9, 0xbee6, 0xe9bb, 0xe9ba,
+ 0xe9b9, 0xe9b4, 0xe9b5, 0xbee7, 0xbee4, 0xbee8, 0xe9b3, 0xbee5,
+ 0xe9b6, 0xe9b7, 0xe9bc, 0xe9b8, 0xecf2, 0xc0c7, 0xefdc, 0xc0c6,
+ 0xefda, 0xefdb, 0xc260, 0xc36e, 0xf24b, 0xc36d, 0xf451, 0xf452,
+ 0xc466, 0xf450, 0xc4e4, 0xf7df, 0xc5ce, 0xf8aa, 0xf8ab, 0xa4ea,
+ 0xa6b1, 0xa6b2, 0xa7f3, 0xccd1, 0xac54, 0xaed1, 0xb1e4, 0xb0d2,
+ 0xb4bf, 0xb4c0, 0xb3cc, 0xd9a9, 0xb77c, 0xe1fa, 0xe1f9, 0xa4eb,
+ 0xa6b3, 0xccd2, 0xaa42, 0xaa41, 0xcef9, 0xcefa, 0xd1d7, 0xd1d8,
+ 0xaed2, 0xaed3, 0xaed4, 0xd5af, 0xb1e6, 0xb4c2, 0xb4c1, 0xddc8,
+ 0xdf7a, 0xe1fb, 0xe9bd, 0xc261, 0xc467, 0xa4ec, 0xa5bc, 0xa5bd,
+ 0xa5bb, 0xa5be, 0xa5ba, 0xa6b6, 0xc9f6, 0xa6b5, 0xa6b7, 0xc9f1,
+ 0xc9f0, 0xc9f3, 0xc9f2, 0xc9f5, 0xa6b4, 0xc9ef, 0xc9f4, 0xcafd,
+ 0xa7fd, 0xcafe, 0xcb43, 0xa7fc, 0xcb47, 0xcb42, 0xcb45, 0xa7f5,
+ 0xa7f6, 0xa7f7, 0xa7f8, 0xa840, 0xcb41, 0xa7fa, 0xa841, 0xcb40,
+ 0xcb46, 0xa7f9, 0xcb44, 0xa7fb, 0xa7f4, 0xa7fe, 0xaa57, 0xccd4,
+ 0xaa43, 0xaa4d, 0xaa4e, 0xaa46, 0xaa58, 0xaa48, 0xccdc, 0xaa53,
+ 0xccd7, 0xaa49, 0xcce6, 0xcce7, 0xccdf, 0xccd8, 0xaa56, 0xcce4,
+ 0xaa51, 0xaa4f, 0xcce5, 0xcce3, 0xccdb, 0xccd3, 0xccda, 0xaa4a,
+ 0xaa50, 0xaa44, 0xccde, 0xccdd, 0xccd5, 0xaa52, 0xcce1, 0xccd6,
+ 0xaa55, 0xcce8, 0xaa45, 0xaa4c, 0xccd9, 0xcce2, 0xaa54, 0xaa47,
+ 0xaa4b, 0xcce0, 0xcf5b, 0xac5c, 0xac69, 0xcf56, 0xcf4c, 0xac62,
+ 0xcf4a, 0xac5b, 0xcf45, 0xac65, 0xcf52, 0xcefe, 0xcf41, 0xcf44,
+ 0xcefb, 0xcf51, 0xcf61, 0xac60, 0xcf46, 0xcf58, 0xcefd, 0xcf5f,
+ 0xcf60, 0xcf63, 0xcf5a, 0xcf4b, 0xcf53, 0xac66, 0xac59, 0xac61,
+ 0xac6d, 0xac56, 0xac58, 0xcf43, 0xac6a, 0xac63, 0xcf5d, 0xcf40,
+ 0xac6c, 0xac67, 0xcf49, 0xac6b, 0xcf50, 0xcf48, 0xac64, 0xcf5c,
+ 0xcf54, 0xac5e, 0xcf62, 0xcf47, 0xac5a, 0xcf59, 0xcf4f, 0xac5f,
+ 0xcf55, 0xac57, 0xcefc, 0xac68, 0xaee3, 0xac5d, 0xcf4e, 0xcf4d,
+ 0xcf42, 0xcf5e, 0xcf57, 0xac55, 0xd1ec, 0xaeea, 0xd1ed, 0xd1e1,
+ 0xaedf, 0xaeeb, 0xd1da, 0xd1e3, 0xd1eb, 0xd1d9, 0xd1f4, 0xaed5,
+ 0xd1f3, 0xd1ee, 0xd1ef, 0xaedd, 0xaee8, 0xd1e5, 0xd1e6, 0xd1f0,
+ 0xd1e7, 0xd1e2, 0xd1dc, 0xd1dd, 0xd1ea, 0xd1e4, 0xaed6, 0xaeda,
+ 0xd1f2, 0xd1de, 0xaee6, 0xaee2, 0xaee5, 0xaeec, 0xaedb, 0xaee7,
+ 0xd1e9, 0xaee9, 0xaed8, 0xaed7, 0xd1db, 0xd1df, 0xaee0, 0xd1f1,
+ 0xd1e8, 0xd1e0, 0xaee4, 0xaee1, 0xaed9, 0xaedc, 0xd5c4, 0xd5b4,
+ 0xd5b5, 0xd5b9, 0xd5c8, 0xd5c5, 0xd5be, 0xd5bd, 0xb1ed, 0xd5c1,
+ 0xd5d0, 0xd5b0, 0xd5d1, 0xd5c3, 0xd5d5, 0xd5c9, 0xb1ec, 0xd5c7,
+ 0xb1e7, 0xb1fc, 0xb1f2, 0xb1f6, 0xb1f5, 0xd5b1, 0xd5ce, 0xd5d4,
+ 0xd5cc, 0xd5d3, 0xd5c0, 0xd5b2, 0xd5d2, 0xd5c2, 0xb1ea, 0xb1f7,
+ 0xd5cb, 0xb1f0, 0xd5ca, 0xd5b3, 0xb1f8, 0xb1fa, 0xd5cd, 0xb1fb,
+ 0xb1e9, 0xd5ba, 0xd5cf, 0xb1ef, 0xb1f9, 0xd5bc, 0xd5c6, 0xd5b7,
+ 0xd5bb, 0xb1f4, 0xd5b6, 0xb1e8, 0xb1f1, 0xb1ee, 0xd5bf, 0xaede,
+ 0xd9c0, 0xb1eb, 0xb1f3, 0xd9c3, 0xd9d9, 0xd9ce, 0xb4d6, 0xb4d1,
+ 0xd9bd, 0xb4d2, 0xd9cd, 0xd9c6, 0xd9d3, 0xb4ce, 0xd9ab, 0xd9d5,
+ 0xb4c4, 0xd9b3, 0xb4c7, 0xb4c6, 0xb4d7, 0xd9ad, 0xd9cf, 0xd9d0,
+ 0xb4c9, 0xb4c5, 0xd9bb, 0xb4d0, 0xd9b6, 0xd9d1, 0xb4cc, 0xd9c9,
+ 0xd9d6, 0xd9b0, 0xd9b5, 0xd9af, 0xb4cb, 0xd9c2, 0xddde, 0xd9b1,
+ 0xb4cf, 0xd9ba, 0xd9d2, 0xb4ca, 0xd9b7, 0xd9b4, 0xd9c5, 0xb4cd,
+ 0xb4c3, 0xb4d9, 0xd9c8, 0xd9c7, 0xd9ac, 0xb4c8, 0xd9d4, 0xd9bc,
+ 0xd9be, 0xd9cb, 0xd9ca, 0xd9aa, 0xb4d3, 0xb4d5, 0xd9b2, 0xd9b9,
+ 0xd9c1, 0xb4d4, 0xd9b8, 0xd9c4, 0xd9d7, 0xd9cc, 0xd9d8, 0xd9ae,
+ 0xddf2, 0xb7a6, 0xddf0, 0xdddb, 0xdde0, 0xddd9, 0xddec, 0xddcb,
+ 0xddd2, 0xddea, 0xddf4, 0xdddc, 0xddcf, 0xdde2, 0xdde7, 0xddd3,
+ 0xdde4, 0xddd0, 0xddd7, 0xddd8, 0xb7a8, 0xddeb, 0xdde9, 0xddcc,
+ 0xddee, 0xddef, 0xddf1, 0xb7ac, 0xb7a4, 0xd5b8, 0xddd4, 0xdde6,
+ 0xddd5, 0xb7a1, 0xb7b1, 0xdded, 0xb7af, 0xb7ab, 0xddca, 0xb7a3,
+ 0xddcd, 0xb7b0, 0xdddd, 0xddc9, 0xb7a9, 0xdde1, 0xddd1, 0xb7aa,
+ 0xddda, 0xb77e, 0xb4d8, 0xdde3, 0xd9bf, 0xddce, 0xdde8, 0xb7a5,
+ 0xdde5, 0xb7a2, 0xdddf, 0xb7ad, 0xddd6, 0xddf3, 0xb7a7, 0xdec6,
+ 0xb7ae, 0xe24a, 0xe248, 0xe25e, 0xe246, 0xe258, 0xb77d, 0xba5f,
+ 0xe242, 0xe25d, 0xe247, 0xe255, 0xba64, 0xba5d, 0xe25b, 0xe240,
+ 0xe25a, 0xba6f, 0xe251, 0xe261, 0xba6d, 0xe249, 0xba5e, 0xe24b,
+ 0xe259, 0xba67, 0xe244, 0xba6b, 0xba61, 0xe24d, 0xe243, 0xe1fc,
+ 0xe257, 0xba68, 0xe260, 0xe1fd, 0xba65, 0xe253, 0xba66, 0xe245,
+ 0xe250, 0xe24c, 0xe24e, 0xba60, 0xe25f, 0xba6e, 0xe24f, 0xe262,
+ 0xe1fe, 0xe254, 0xba63, 0xba6c, 0xba6a, 0xe241, 0xe256, 0xba69,
+ 0xba62, 0xe252, 0xe25c, 0xe5d5, 0xe5d1, 0xe5cd, 0xe5e1, 0xe5de,
+ 0xbccd, 0xe5e5, 0xe5d4, 0xbcd8, 0xe5db, 0xe5d0, 0xe5da, 0xbcd5,
+ 0xe5ee, 0xe5eb, 0xe5dd, 0xe5ce, 0xe5e2, 0xe5e4, 0xbcd1, 0xe5d8,
+ 0xe5d3, 0xe5ca, 0xbcce, 0xbcd6, 0xe5e7, 0xbcd7, 0xe5cb, 0xe5ed,
+ 0xe5e0, 0xe5e6, 0xbcd4, 0xe5e3, 0xe5ea, 0xbcd9, 0xbcd3, 0xe5dc,
+ 0xe5cf, 0xe5ef, 0xe5cc, 0xe5e8, 0xbcd0, 0xe5d6, 0xe5d7, 0xbccf,
+ 0xbccc, 0xe5d2, 0xbcd2, 0xbccb, 0xe5e9, 0xe5ec, 0xe5d9, 0xe9ca,
+ 0xe9c2, 0xe9be, 0xbef6, 0xbeeb, 0xbef0, 0xbeec, 0xe9cc, 0xe9d7,
+ 0xbeea, 0xe9c4, 0xe9cd, 0xe5df, 0xe9ce, 0xbef1, 0xe9dd, 0xbef5,
+ 0xbef8, 0xe9c0, 0xbef4, 0xe9db, 0xe9dc, 0xe9d2, 0xe9d1, 0xe9c9,
+ 0xe9d3, 0xe9da, 0xe9d9, 0xbeef, 0xbeed, 0xe9cb, 0xe9c8, 0xe9c5,
+ 0xe9d8, 0xbef7, 0xe9d6, 0xbef3, 0xbef2, 0xe9d0, 0xe9bf, 0xe9c1,
+ 0xe9c3, 0xe9d5, 0xe9cf, 0xbeee, 0xe9c6, 0xe9d4, 0xe9c7, 0xc0cf,
+ 0xed45, 0xc0c8, 0xecf5, 0xed41, 0xc0ca, 0xed48, 0xecfc, 0xecf7,
+ 0xed49, 0xecf3, 0xecfe, 0xc0d1, 0xed44, 0xed4a, 0xecfd, 0xc0c9,
+ 0xed40, 0xecf4, 0xc0d0, 0xed47, 0xecf9, 0xc0cc, 0xecfb, 0xecf8,
+ 0xc0d2, 0xecfa, 0xc0cb, 0xc0ce, 0xed43, 0xecf6, 0xed46, 0xed42,
+ 0xc263, 0xefe7, 0xc268, 0xc269, 0xc262, 0xefe6, 0xefe3, 0xefe4,
+ 0xc266, 0xefde, 0xefe2, 0xc265, 0xefdf, 0xc267, 0xc264, 0xefdd,
+ 0xefe1, 0xefe5, 0xf251, 0xf24e, 0xf257, 0xf256, 0xf254, 0xf24f,
+ 0xc372, 0xf250, 0xc371, 0xc0cd, 0xf253, 0xc370, 0xf258, 0xf252,
+ 0xf24d, 0xefe0, 0xc36f, 0xf24c, 0xf456, 0xf455, 0xf255, 0xc468,
+ 0xf459, 0xf45a, 0xf454, 0xf458, 0xf453, 0xf5d1, 0xf457, 0xc4e7,
+ 0xc4e5, 0xf5cf, 0xf5d2, 0xf5ce, 0xf5d0, 0xc4e6, 0xf6e5, 0xf6e6,
+ 0xc576, 0xf6e4, 0xf7e2, 0xc5cf, 0xf7e0, 0xf7e1, 0xf8ac, 0xc656,
+ 0xf8f3, 0xf8f1, 0xf8f2, 0xf8f4, 0xf9bb, 0xa4ed, 0xa6b8, 0xaa59,
+ 0xcce9, 0xcf64, 0xd1f5, 0xd1f7, 0xd1f6, 0xd1f8, 0xb1fd, 0xd5d7,
+ 0xd1f9, 0xd5d6, 0xd5d8, 0xd5d9, 0xd9da, 0xb4db, 0xd9db, 0xd9dd,
+ 0xb4dc, 0xb4da, 0xd9dc, 0xddfa, 0xddf8, 0xddf7, 0xddf6, 0xddf5,
+ 0xb7b2, 0xddf9, 0xba70, 0xe263, 0xe265, 0xba71, 0xe264, 0xbcdb,
+ 0xbcda, 0xe5f0, 0xe9df, 0xe9de, 0xe9e0, 0xbef9, 0xed4b, 0xc0d3,
+ 0xefe8, 0xc26a, 0xf259, 0xc577, 0xa4ee, 0xa5bf, 0xa6b9, 0xa842,
+ 0xaa5a, 0xaa5b, 0xac6e, 0xd1fa, 0xb7b3, 0xe6d1, 0xbefa, 0xc26b,
+ 0xa4ef, 0xa6ba, 0xcceb, 0xaa5c, 0xccea, 0xcf65, 0xac6f, 0xcf66,
+ 0xac70, 0xd1fc, 0xaeee, 0xaeed, 0xd5de, 0xd5dc, 0xd5dd, 0xd5db,
+ 0xd5da, 0xd9de, 0xd9e1, 0xb4de, 0xd9df, 0xb4dd, 0xd9e0, 0xddfb,
+ 0xe266, 0xe267, 0xe268, 0xe5f3, 0xe5f2, 0xbcdc, 0xe5f1, 0xe5f4,
+ 0xe9e1, 0xe9e2, 0xe9e3, 0xed4c, 0xc0d4, 0xc26c, 0xf25a, 0xc4e8,
+ 0xc95f, 0xac71, 0xcf67, 0xaeef, 0xb1fe, 0xb4df, 0xd9e2, 0xb7b5,
+ 0xb7b4, 0xe269, 0xe26a, 0xbcdd, 0xbcde, 0xe9e5, 0xe9e4, 0xefe9,
+ 0xf7e3, 0xa4f0, 0xc960, 0xa5c0, 0xa843, 0xcb48, 0xac72, 0xb7b6,
+ 0xa4f1, 0xcf68, 0xac73, 0xcf69, 0xc0d5, 0xa4f2, 0xccec, 0xcf6a,
+ 0xd242, 0xd241, 0xd1fe, 0xd1fd, 0xd243, 0xd240, 0xb240, 0xb241,
+ 0xb4e0, 0xd9e3, 0xd9e4, 0xd9e5, 0xde41, 0xde42, 0xde40, 0xddfd,
+ 0xddfe, 0xb7b7, 0xe26b, 0xe5f7, 0xe5f6, 0xe5f5, 0xe5f8, 0xe9e7,
+ 0xe9e6, 0xbefb, 0xe9e8, 0xc0d6, 0xed4d, 0xefea, 0xf25b, 0xf6e7,
+ 0xa4f3, 0xa5c2, 0xa5c1, 0xaa5d, 0xc961, 0xc97e, 0xa6bb, 0xc9f7,
+ 0xcb49, 0xcb4a, 0xaa5e, 0xcced, 0xac74, 0xcf6b, 0xcf6c, 0xaef0,
+ 0xaef4, 0xd244, 0xaef3, 0xaef1, 0xaef2, 0xd5df, 0xb242, 0xb4e3,
+ 0xb4e1, 0xb4e2, 0xd9e6, 0xba72, 0xa4f4, 0xc9a1, 0xa5c3, 0xc9a4,
+ 0xa5c6, 0xc9a3, 0xa5c5, 0xa5c4, 0xa844, 0xc9a2, 0xc9f8, 0xc9fc,
+ 0xc9fe, 0xca40, 0xa6c5, 0xa6c6, 0xc9fb, 0xa6c1, 0xc9f9, 0xc9fd,
+ 0xa6c2, 0xa6bd, 0xa6be, 0xa6c4, 0xc9fa, 0xa6bc, 0xa845, 0xa6bf,
+ 0xa6c0, 0xa6c3, 0xcb5b, 0xcb59, 0xcb4c, 0xa851, 0xcb53, 0xa84c,
+ 0xcb4d, 0xcb55, 0xcb52, 0xa84f, 0xcb51, 0xa856, 0xcb5a, 0xa858,
+ 0xa85a, 0xcb4b, 0xa84d, 0xcb5c, 0xa854, 0xa857, 0xcd45, 0xa847,
+ 0xa85e, 0xa855, 0xcb4e, 0xa84a, 0xa859, 0xcb56, 0xa848, 0xa849,
+ 0xcd43, 0xcb4f, 0xa850, 0xa85b, 0xcb5d, 0xcb50, 0xa84e, 0xa853,
+ 0xccee, 0xa85c, 0xcb57, 0xa852, 0xa85d, 0xa846, 0xcb54, 0xa84b,
+ 0xcb58, 0xcd44, 0xaa6a, 0xaa7a, 0xccf5, 0xaa71, 0xcd4b, 0xaa62,
+ 0xaa65, 0xcd42, 0xccf3, 0xccf7, 0xaa6d, 0xaa6f, 0xccfa, 0xaa76,
+ 0xaa68, 0xaa66, 0xaa67, 0xaa75, 0xcd47, 0xaa70, 0xccf9, 0xccfb,
+ 0xaa6e, 0xaa73, 0xccfc, 0xcd4a, 0xac75, 0xaa79, 0xaa63, 0xcd49,
+ 0xcd4d, 0xccf8, 0xcd4f, 0xcd40, 0xaa6c, 0xccf4, 0xaa6b, 0xaa7d,
+ 0xaa72, 0xccf2, 0xcf75, 0xaa78, 0xaa7c, 0xcd41, 0xcd46, 0xaa7e,
+ 0xaa77, 0xaa69, 0xaa5f, 0xaa64, 0xccf6, 0xaa60, 0xcd4e, 0xccf0,
+ 0xccef, 0xccfd, 0xccf1, 0xaa7b, 0xaef5, 0xaa74, 0xccfe, 0xaa61,
+ 0xaca6, 0xcd4c, 0xcf7c, 0xcfa1, 0xcfa4, 0xcf77, 0xcfa7, 0xcfaa,
+ 0xcfac, 0xcf74, 0xac76, 0xac7b, 0xd249, 0xacad, 0xcfa5, 0xcfad,
+ 0xcf7b, 0xcf73, 0xd264, 0xac7e, 0xcfa2, 0xcf78, 0xcf7a, 0xaca5,
+ 0xcf7d, 0xac7d, 0xcf70, 0xcfa8, 0xcfab, 0xac7a, 0xaca8, 0xcf6d,
+ 0xacaa, 0xac78, 0xacae, 0xcfa9, 0xcf6f, 0xacab, 0xd25e, 0xcd48,
+ 0xac7c, 0xac77, 0xcf76, 0xcf6e, 0xacac, 0xaca4, 0xcfa3, 0xaca9,
+ 0xaca7, 0xcf79, 0xaca1, 0xcf71, 0xaca2, 0xaca3, 0xcf72, 0xcfa6,
+ 0xac79, 0xcf7e, 0xd24c, 0xaefd, 0xaf43, 0xd255, 0xd25b, 0xd257,
+ 0xd24a, 0xd24d, 0xd246, 0xd247, 0xaf4a, 0xaefa, 0xd256, 0xd25f,
+ 0xaf45, 0xaef6, 0xaf40, 0xd24e, 0xaf42, 0xd24f, 0xd259, 0xaf44,
+ 0xd268, 0xd248, 0xaefc, 0xaefb, 0xaf48, 0xd245, 0xd266, 0xd25a,
+ 0xd267, 0xd261, 0xd253, 0xd262, 0xd25c, 0xd265, 0xd263, 0xaf49,
+ 0xd254, 0xaef9, 0xaef8, 0xaf41, 0xaf47, 0xd260, 0xaf46, 0xd251,
+ 0xb243, 0xd269, 0xd250, 0xd24b, 0xaefe, 0xaf4b, 0xaef7, 0xd258,
+ 0xd25d, 0xb265, 0xd5e1, 0xd5e5, 0xb252, 0xb250, 0xb247, 0xd5e3,
+ 0xd5e2, 0xb25b, 0xd5e8, 0xb255, 0xd5fa, 0xd647, 0xb244, 0xd5f7,
+ 0xd5f0, 0xb267, 0xd5e0, 0xd5fc, 0xb264, 0xb258, 0xb263, 0xb24e,
+ 0xd5ec, 0xd5fe, 0xd5f6, 0xb24f, 0xb249, 0xd645, 0xd5fd, 0xd640,
+ 0xb251, 0xb259, 0xd642, 0xd5ea, 0xd5fb, 0xd5ef, 0xd644, 0xb25e,
+ 0xb246, 0xb25c, 0xd5f4, 0xd5f2, 0xd5f3, 0xb253, 0xd5ee, 0xd5ed,
+ 0xb248, 0xd5e7, 0xd646, 0xb24a, 0xd5f1, 0xb268, 0xb262, 0xd5e6,
+ 0xb25f, 0xb25d, 0xb266, 0xd5f8, 0xb261, 0xd252, 0xd5f9, 0xb260,
+ 0xd641, 0xb245, 0xd5f5, 0xb257, 0xd5e9, 0xb256, 0xb254, 0xb24c,
+ 0xb24b, 0xd9e7, 0xd643, 0xd5eb, 0xd9fc, 0xb24d, 0xb541, 0xb25a,
+ 0xb4ee, 0xd9f6, 0xb4fc, 0xd9ea, 0xb4eb, 0xb4e7, 0xda49, 0xb4ed,
+ 0xb4f1, 0xb4ec, 0xb4f5, 0xda4d, 0xda44, 0xd9f1, 0xb4fa, 0xb4f4,
+ 0xd9fd, 0xb4e4, 0xda4a, 0xda43, 0xb4e8, 0xd9f7, 0xb4f7, 0xda55,
+ 0xda56, 0xb4e5, 0xda48, 0xb4f9, 0xd9fb, 0xd9ed, 0xd9ee, 0xb4fd,
+ 0xd9f2, 0xd9f9, 0xd9f3, 0xb4fb, 0xb544, 0xd9ef, 0xd9e8, 0xd9e9,
+ 0xd9eb, 0xb4ea, 0xd9f8, 0xb4f8, 0xb542, 0xd9fa, 0xda53, 0xda4b,
+ 0xb4e6, 0xda51, 0xb4f2, 0xb4f0, 0xda57, 0xb4ef, 0xda41, 0xd9f4,
+ 0xd9fe, 0xb547, 0xda45, 0xda42, 0xd9f0, 0xb543, 0xda4f, 0xda4c,
+ 0xda54, 0xb4e9, 0xda40, 0xb546, 0xda47, 0xb4f3, 0xb4f6, 0xda46,
+ 0xb545, 0xd9f5, 0xd5e4, 0xda50, 0xda4e, 0xda52, 0xd9ec, 0xb540,
+ 0xde61, 0xde60, 0xde46, 0xb7bd, 0xde5f, 0xde49, 0xde4a, 0xb7c7,
+ 0xde68, 0xb7c2, 0xde5e, 0xde43, 0xb7c8, 0xb7be, 0xde52, 0xde48,
+ 0xde4b, 0xde63, 0xb7b8, 0xde6a, 0xde62, 0xb7c1, 0xde57, 0xb7cc,
+ 0xb7cb, 0xb7c5, 0xde69, 0xb7b9, 0xde55, 0xde4c, 0xde59, 0xde65,
+ 0xb7cd, 0xb7bb, 0xde54, 0xde4d, 0xb7c4, 0xb7c3, 0xde50, 0xde5a,
+ 0xde64, 0xde47, 0xde51, 0xb7bc, 0xde5b, 0xb7c9, 0xb7c0, 0xde4e,
+ 0xb7bf, 0xde45, 0xde53, 0xde67, 0xb4fe, 0xbab0, 0xde56, 0xe26c,
+ 0xde58, 0xde66, 0xb7c6, 0xde4f, 0xb7ba, 0xb7ca, 0xbcf0, 0xde44,
+ 0xde5d, 0xde5c, 0xe2aa, 0xbaad, 0xe27d, 0xe2a4, 0xbaa2, 0xe26e,
+ 0xbaaf, 0xba77, 0xe26d, 0xe2b0, 0xbab1, 0xe271, 0xe2a3, 0xe273,
+ 0xe2b3, 0xe2af, 0xba75, 0xbaa1, 0xe653, 0xbaae, 0xba7d, 0xe26f,
+ 0xe2ae, 0xbaa3, 0xe2ab, 0xe2b8, 0xe275, 0xe27e, 0xe2b6, 0xe2ac,
+ 0xba7c, 0xe27c, 0xba76, 0xba74, 0xbaa8, 0xe27a, 0xe277, 0xe278,
+ 0xe2b2, 0xe2b7, 0xe2b5, 0xba7a, 0xe2b9, 0xba7e, 0xbaa7, 0xe270,
+ 0xe5fa, 0xe279, 0xba78, 0xbaac, 0xbaa9, 0xba7b, 0xe2a5, 0xe274,
+ 0xbaaa, 0xe2a7, 0xbaa4, 0xbaa6, 0xba73, 0xe2a9, 0xe2a1, 0xe272,
+ 0xbaa5, 0xe2b1, 0xe2b4, 0xe27b, 0xe2a8, 0xba79, 0xbcdf, 0xe2a6,
+ 0xe5f9, 0xe2ad, 0xe276, 0xe644, 0xe64e, 0xbce2, 0xe64d, 0xe659,
+ 0xbce4, 0xe64b, 0xe64f, 0xbcef, 0xe646, 0xbce7, 0xe652, 0xe9f0,
+ 0xbcf3, 0xbcf2, 0xe654, 0xe643, 0xe65e, 0xbced, 0xbce3, 0xe657,
+ 0xe65b, 0xe660, 0xe655, 0xe649, 0xbce6, 0xbce9, 0xbcf1, 0xbcec,
+ 0xe64c, 0xe2a2, 0xe648, 0xe65f, 0xbce8, 0xbceb, 0xe661, 0xbce0,
+ 0xe656, 0xe5fb, 0xe65c, 0xc0df, 0xe64a, 0xbce1, 0xe645, 0xbce5,
+ 0xe5fc, 0xbaab, 0xe641, 0xe65a, 0xe642, 0xe640, 0xbcea, 0xe658,
+ 0xe5fe, 0xe651, 0xe650, 0xe65d, 0xe647, 0xbcee, 0xe9f3, 0xbf49,
+ 0xbefe, 0xea40, 0xe9eb, 0xbf41, 0xe9f7, 0xbf48, 0xbf43, 0xe9f5,
+ 0xed4f, 0xe9fb, 0xea42, 0xe9fa, 0xe9e9, 0xe9f8, 0xea44, 0xea46,
+ 0xbefd, 0xea45, 0xbf44, 0xbf4a, 0xbf47, 0xe9fe, 0xbf46, 0xe9f9,
+ 0xe9ed, 0xe9f2, 0xe9fd, 0xbf45, 0xbf42, 0xbefc, 0xbf40, 0xe9f1,
+ 0xe5fd, 0xe9ec, 0xe9ef, 0xea41, 0xe9f4, 0xe9ea, 0xed4e, 0xea43,
+ 0xe9ee, 0xe9fc, 0xed51, 0xc0e3, 0xc0d7, 0xc0db, 0xed53, 0xed59,
+ 0xed57, 0xc0d9, 0xc0da, 0xc0e1, 0xed5a, 0xed52, 0xc0dc, 0xed56,
+ 0xed55, 0xed5b, 0xc0e2, 0xc0dd, 0xc0e0, 0xed54, 0xc0e4, 0xc0de,
+ 0xc0e5, 0xc0d8, 0xed58, 0xed50, 0xeff7, 0xc271, 0xeff4, 0xeff6,
+ 0xc26f, 0xeff2, 0xeff3, 0xefee, 0xe9f6, 0xefef, 0xc270, 0xefeb,
+ 0xc26d, 0xeff8, 0xc26e, 0xefec, 0xefed, 0xeff1, 0xc273, 0xc272,
+ 0xeff0, 0xc378, 0xf25f, 0xf265, 0xc379, 0xf25c, 0xc376, 0xc373,
+ 0xf267, 0xc377, 0xc374, 0xf25e, 0xf261, 0xf262, 0xf263, 0xf266,
+ 0xeff5, 0xf25d, 0xc375, 0xf264, 0xf268, 0xf260, 0xf45d, 0xc46a,
+ 0xf460, 0xc46b, 0xf468, 0xf45f, 0xf45c, 0xf45e, 0xf462, 0xf465,
+ 0xf464, 0xf467, 0xf45b, 0xc469, 0xf463, 0xf466, 0xf469, 0xf461,
+ 0xf5d3, 0xf5d4, 0xf5d8, 0xf5d9, 0xf5d6, 0xf5d7, 0xf5d5, 0xc4e9,
+ 0xc578, 0xf6eb, 0xf6e8, 0xf6e9, 0xf6ea, 0xc579, 0xf7e5, 0xf7e4,
+ 0xf8af, 0xc5f4, 0xf8ad, 0xf8b0, 0xf8ae, 0xf8f5, 0xc657, 0xc665,
+ 0xf9a3, 0xf96c, 0xf9a2, 0xf9d0, 0xf9d1, 0xa4f5, 0xa6c7, 0xca41,
+ 0xcb5e, 0xa85f, 0xa862, 0xcb5f, 0xa860, 0xa861, 0xcd58, 0xcd5a,
+ 0xcd55, 0xcd52, 0xcd54, 0xaaa4, 0xaaa2, 0xcd56, 0xaaa3, 0xcd53,
+ 0xcd50, 0xaaa1, 0xcd57, 0xcd51, 0xaaa5, 0xcd59, 0xcfaf, 0xcfb3,
+ 0xacb7, 0xcfb6, 0xacaf, 0xacb2, 0xacb4, 0xacb6, 0xacb3, 0xcfb2,
+ 0xcfb1, 0xacb1, 0xcfb4, 0xcfb5, 0xcfae, 0xacb5, 0xacb0, 0xcfb0,
+ 0xd277, 0xd278, 0xd279, 0xaf50, 0xaf4c, 0xd26e, 0xd276, 0xd27b,
+ 0xaf51, 0xd26c, 0xd272, 0xd26b, 0xd275, 0xd271, 0xaf4d, 0xaf4f,
+ 0xd27a, 0xd26a, 0xd26d, 0xd273, 0xd274, 0xd27c, 0xd270, 0xaf4e,
+ 0xb26d, 0xd64e, 0xd650, 0xd64c, 0xd658, 0xd64a, 0xd657, 0xb269,
+ 0xd648, 0xda5b, 0xd652, 0xb26c, 0xd653, 0xd656, 0xd65a, 0xd64f,
+ 0xd654, 0xb26a, 0xb26b, 0xd659, 0xd64d, 0xd649, 0xd65b, 0xd651,
+ 0xd655, 0xd64b, 0xb548, 0xb549, 0xda65, 0xb54f, 0xda59, 0xda62,
+ 0xda58, 0xb54c, 0xda60, 0xda5e, 0xda5f, 0xb54a, 0xda63, 0xda5c,
+ 0xda5a, 0xb54b, 0xda5d, 0xda61, 0xb54d, 0xda64, 0xde70, 0xde77,
+ 0xde79, 0xdea1, 0xb7da, 0xde6b, 0xb7d2, 0xde7a, 0xb7d7, 0xdea2,
+ 0xb7ce, 0xde7d, 0xde6d, 0xde7e, 0xde6c, 0xb7dc, 0xde78, 0xb7cf,
+ 0xdea3, 0xb7d4, 0xde71, 0xb7d9, 0xde7c, 0xde6f, 0xde76, 0xde72,
+ 0xde6e, 0xb7d1, 0xb7d8, 0xb7d6, 0xb7d3, 0xb7db, 0xb7d0, 0xde75,
+ 0xb7d5, 0xb54e, 0xde7b, 0xde73, 0xde74, 0xe2c1, 0xbab4, 0xe2bd,
+ 0xe2c3, 0xe2bf, 0xbab6, 0xe2be, 0xe2c2, 0xe2ba, 0xe2bc, 0xbab5,
+ 0xe2c0, 0xe2bb, 0xbab7, 0xbab2, 0xe2c4, 0xbab3, 0xe667, 0xe664,
+ 0xe670, 0xe66a, 0xe66c, 0xbcf4, 0xe666, 0xe66e, 0xe66d, 0xe66b,
+ 0xe671, 0xbcf7, 0xe668, 0xe66f, 0xbcf5, 0xe663, 0xe665, 0xbcf6,
+ 0xe662, 0xe672, 0xe669, 0xea4a, 0xbf51, 0xea55, 0xea53, 0xbf4b,
+ 0xea49, 0xea4c, 0xea4d, 0xea48, 0xbf55, 0xbf56, 0xea47, 0xea56,
+ 0xea51, 0xbf4f, 0xbf4c, 0xea50, 0xea4e, 0xbf52, 0xea52, 0xbf4d,
+ 0xbf4e, 0xea4f, 0xbf50, 0xea4b, 0xea54, 0xbf53, 0xea57, 0xea58,
+ 0xbf54, 0xc0e7, 0xc0ee, 0xed5c, 0xed62, 0xed60, 0xc0ea, 0xc0e9,
+ 0xc0e6, 0xed5e, 0xc0ec, 0xc0eb, 0xc0e8, 0xed61, 0xed5d, 0xed5f,
+ 0xc0ed, 0xc277, 0xeffb, 0xc274, 0xc275, 0xeffd, 0xc276, 0xeffa,
+ 0xeff9, 0xf26c, 0xeffc, 0xf26d, 0xc37a, 0xf26b, 0xf26a, 0xf269,
+ 0xc37b, 0xc46c, 0xf46a, 0xf46b, 0xf5dc, 0xf5db, 0xc4ea, 0xf5da,
+ 0xf6ec, 0xf6ed, 0xf7e6, 0xf8b1, 0xf8f6, 0xf9bc, 0xc679, 0xf9c6,
+ 0xa4f6, 0xaaa6, 0xaaa7, 0xacb8, 0xc0ef, 0xa4f7, 0xaaa8, 0xaf52,
+ 0xb7dd, 0xa4f8, 0xb26e, 0xbab8, 0xc962, 0xcfb7, 0xd27d, 0xe2c5,
+ 0xc0f0, 0xa4f9, 0xaaa9, 0xcfb8, 0xcfb9, 0xda66, 0xb550, 0xdea4,
+ 0xb7de, 0xe2c6, 0xbcf8, 0xc37c, 0xa4fa, 0xda67, 0xa4fb, 0xa6c9,
+ 0xca42, 0xa6c8, 0xa865, 0xa864, 0xa863, 0xcb60, 0xaaaa, 0xaaab,
+ 0xcd5b, 0xcfba, 0xcfbd, 0xacba, 0xcfbb, 0xacb9, 0xcfbc, 0xacbb,
+ 0xd2a2, 0xd2a1, 0xd27e, 0xaf53, 0xd65d, 0xd65e, 0xb26f, 0xd65c,
+ 0xd65f, 0xb552, 0xb270, 0xb551, 0xda6b, 0xda6a, 0xda68, 0xda69,
+ 0xda6c, 0xdea6, 0xdea5, 0xdea9, 0xdea8, 0xdea7, 0xbab9, 0xe2c9,
+ 0xe2c8, 0xbaba, 0xe2c7, 0xe673, 0xe674, 0xbcf9, 0xea59, 0xea5a,
+ 0xf272, 0xc37d, 0xf271, 0xf270, 0xf26e, 0xf26f, 0xc4eb, 0xf46c,
+ 0xf6ee, 0xf8f7, 0xa4fc, 0xc9a5, 0xa5c7, 0xc9a6, 0xca43, 0xca44,
+ 0xcb66, 0xcb62, 0xcb61, 0xaaac, 0xcb65, 0xa867, 0xcb63, 0xa866,
+ 0xcb67, 0xcb64, 0xcd5f, 0xcfbe, 0xcd5d, 0xcd64, 0xaaad, 0xaab0,
+ 0xcd65, 0xcd61, 0xcd62, 0xcd5c, 0xaaaf, 0xcd5e, 0xaaae, 0xcd63,
+ 0xcd60, 0xcfc2, 0xacbd, 0xacbe, 0xcfc5, 0xcfbf, 0xcfc4, 0xcfc0,
+ 0xacbc, 0xcfc3, 0xcfc1, 0xd2a8, 0xd2a5, 0xd2a7, 0xaf58, 0xaf57,
+ 0xaf55, 0xd2a4, 0xd2a9, 0xaf54, 0xaf56, 0xd2a6, 0xd667, 0xd2a3,
+ 0xd2aa, 0xd662, 0xd666, 0xd665, 0xda6e, 0xda79, 0xd668, 0xd663,
+ 0xda6d, 0xb274, 0xb273, 0xd661, 0xd664, 0xb275, 0xb272, 0xb271,
+ 0xd660, 0xd669, 0xda70, 0xda77, 0xb554, 0xda76, 0xda73, 0xb556,
+ 0xda75, 0xda6f, 0xda71, 0xda74, 0xda72, 0xb555, 0xda78, 0xb553,
+ 0xb7df, 0xdead, 0xdeac, 0xdeaa, 0xb7e2, 0xb7e1, 0xdeae, 0xdeab,
+ 0xe2ca, 0xbabb, 0xb7e0, 0xdeb0, 0xdeaf, 0xe2cd, 0xe2cb, 0xbcfa,
+ 0xbabc, 0xe2cc, 0xe676, 0xbcfb, 0xe675, 0xe67e, 0xe67d, 0xe67b,
+ 0xe67a, 0xe677, 0xe678, 0xe679, 0xe67c, 0xe6a1, 0xea5f, 0xea5c,
+ 0xea5d, 0xbf57, 0xea5b, 0xea61, 0xea60, 0xea5e, 0xed64, 0xed65,
+ 0xc0f1, 0xc0f2, 0xed63, 0xc279, 0xeffe, 0xc278, 0xc37e, 0xc3a1,
+ 0xc46d, 0xf46e, 0xf46d, 0xf5dd, 0xf6ef, 0xc57a, 0xf7e8, 0xf7e7,
+ 0xf7e9, 0xa5c8, 0xcfc6, 0xaf59, 0xb276, 0xd66a, 0xa5c9, 0xc9a7,
+ 0xa4fd, 0xca45, 0xcb6c, 0xcb6a, 0xcb6b, 0xcb68, 0xa868, 0xcb69,
+ 0xcd6d, 0xaab3, 0xcd6b, 0xcd67, 0xcd6a, 0xcd66, 0xaab5, 0xcd69,
+ 0xaab2, 0xaab1, 0xaab4, 0xcd6c, 0xcd68, 0xacc2, 0xacc5, 0xcfce,
+ 0xcfcd, 0xcfcc, 0xacbf, 0xcfd5, 0xcfcb, 0xacc1, 0xd2af, 0xcfd2,
+ 0xcfd0, 0xacc4, 0xcfc8, 0xcfd3, 0xcfca, 0xcfd4, 0xcfd1, 0xcfc9,
+ 0xacc0, 0xcfd6, 0xcfc7, 0xacc3, 0xd2b4, 0xd2ab, 0xd2b6, 0xd2ae,
+ 0xd2b9, 0xd2ba, 0xd2ac, 0xd2b8, 0xd2b5, 0xd2b3, 0xd2b7, 0xaf5f,
+ 0xaf5d, 0xd2b1, 0xd2ad, 0xd2b0, 0xd2bb, 0xd2b2, 0xaf5e, 0xcfcf,
+ 0xaf5a, 0xaf5c, 0xd678, 0xd66d, 0xd66b, 0xd66c, 0xd673, 0xd674,
+ 0xd670, 0xb27b, 0xd675, 0xd672, 0xd66f, 0xb279, 0xd66e, 0xb277,
+ 0xb27a, 0xd671, 0xd679, 0xaf5b, 0xb278, 0xd677, 0xd676, 0xb27c,
+ 0xda7e, 0xdaa1, 0xb560, 0xdaa7, 0xdaa9, 0xdaa2, 0xb55a, 0xdaa6,
+ 0xdaa5, 0xb55b, 0xb561, 0xb562, 0xdaa8, 0xb558, 0xda7d, 0xda7b,
+ 0xdaa3, 0xda7a, 0xb55f, 0xda7c, 0xdaa4, 0xdaaa, 0xb559, 0xb55e,
+ 0xb55c, 0xb55d, 0xb557, 0xb7e9, 0xdeb7, 0xb7e8, 0xdebb, 0xdeb1,
+ 0xdebc, 0xdeb2, 0xdeb3, 0xdebd, 0xdeba, 0xdeb8, 0xdeb9, 0xdeb5,
+ 0xdeb4, 0xdebe, 0xb7e5, 0xdeb6, 0xb7ea, 0xb7e4, 0xb7eb, 0xb7ec,
+ 0xb7e7, 0xb7e6, 0xe2ce, 0xbabe, 0xbabd, 0xe2d3, 0xbcfc, 0xbabf,
+ 0xbac1, 0xe2d4, 0xb7e3, 0xbac0, 0xe2d0, 0xe2d2, 0xe2cf, 0xe2d1,
+ 0xe6ab, 0xe6aa, 0xe6a7, 0xbd40, 0xea62, 0xbd41, 0xe6a6, 0xbcfe,
+ 0xe6a8, 0xe6a5, 0xe6a2, 0xe6a9, 0xe6a3, 0xe6a4, 0xbcfd, 0xed69,
+ 0xea66, 0xea65, 0xea67, 0xed66, 0xbf5a, 0xea63, 0xbf58, 0xbf5c,
+ 0xbf5b, 0xea64, 0xea68, 0xbf59, 0xed6d, 0xc0f5, 0xc27a, 0xc0f6,
+ 0xc0f3, 0xed6a, 0xed68, 0xed6b, 0xed6e, 0xc0f4, 0xed6c, 0xed67,
+ 0xf042, 0xf045, 0xf275, 0xf040, 0xf46f, 0xf046, 0xc3a2, 0xf044,
+ 0xc27b, 0xf041, 0xf043, 0xf047, 0xf276, 0xf274, 0xc3a3, 0xf273,
+ 0xc46e, 0xc4ed, 0xf6f1, 0xc4ec, 0xf6f3, 0xf6f0, 0xf6f2, 0xc5d0,
+ 0xf8b2, 0xa5ca, 0xcd6e, 0xd2bc, 0xd2bd, 0xb27d, 0xdebf, 0xbf5d,
+ 0xc3a4, 0xc57b, 0xf8b3, 0xa5cb, 0xcd6f, 0xa260, 0xcfd7, 0xcfd8,
+ 0xd2be, 0xd2bf, 0xb27e, 0xb2a1, 0xdaab, 0xdec2, 0xdec1, 0xdec0,
+ 0xe2d5, 0xe2d6, 0xe2d7, 0xbac2, 0xe6ad, 0xe6ac, 0xea69, 0xbf5e,
+ 0xbf5f, 0xed72, 0xed6f, 0xed70, 0xed71, 0xf049, 0xf048, 0xc27c,
+ 0xf277, 0xf5de, 0xa5cc, 0xacc6, 0xb2a2, 0xdec3, 0xa5cd, 0xd2c0,
+ 0xb2a3, 0xb563, 0xb564, 0xa5ce, 0xa5cf, 0xca46, 0xa86a, 0xa869,
+ 0xacc7, 0xcfd9, 0xdaac, 0xa5d0, 0xa5d1, 0xa5d2, 0xa5d3, 0xa86b,
+ 0xa86c, 0xcb6e, 0xcb6d, 0xaab6, 0xcd72, 0xcd70, 0xcd71, 0xcfda,
+ 0xcfdb, 0xaccb, 0xacc9, 0xacca, 0xacc8, 0xaf60, 0xaf64, 0xaf63,
+ 0xd2c1, 0xaf62, 0xaf61, 0xd2c2, 0xb2a6, 0xd67b, 0xd67a, 0xb2a4,
+ 0xb2a5, 0xb566, 0xb565, 0xdaae, 0xdaad, 0xb2a7, 0xb7ed, 0xdec5,
+ 0xb7ee, 0xdec4, 0xe2d8, 0xe6ae, 0xbd42, 0xea6a, 0xed73, 0xc3a6,
+ 0xc3a5, 0xc57c, 0xa5d4, 0xcd73, 0xb2a8, 0xe2d9, 0xbac3, 0xcb6f,
+ 0xcb70, 0xcd74, 0xaab8, 0xaab9, 0xaab7, 0xaccf, 0xacd0, 0xaccd,
+ 0xacce, 0xcfdc, 0xcfdd, 0xaccc, 0xd2c3, 0xaf68, 0xaf69, 0xb2ab,
+ 0xd2c9, 0xaf6e, 0xaf6c, 0xd2ca, 0xd2c5, 0xaf6b, 0xaf6a, 0xaf65,
+ 0xd2c8, 0xd2c7, 0xd2c4, 0xaf6d, 0xd2c6, 0xaf66, 0xaf67, 0xb2ac,
+ 0xd6a1, 0xd6a2, 0xb2ad, 0xd67c, 0xd67e, 0xd6a4, 0xd6a3, 0xd67d,
+ 0xb2a9, 0xb2aa, 0xdab6, 0xb56b, 0xb56a, 0xdab0, 0xb568, 0xdab3,
+ 0xb56c, 0xdab4, 0xb56d, 0xdab1, 0xb567, 0xb569, 0xdab5, 0xdab2,
+ 0xdaaf, 0xded2, 0xdec7, 0xb7f0, 0xb7f3, 0xb7f2, 0xb7f7, 0xb7f6,
+ 0xded3, 0xded1, 0xdeca, 0xdece, 0xdecd, 0xb7f4, 0xded0, 0xdecc,
+ 0xded4, 0xdecb, 0xb7f5, 0xb7ef, 0xb7f1, 0xdec9, 0xe2db, 0xbac7,
+ 0xe2df, 0xbac6, 0xe2dc, 0xbac5, 0xdec8, 0xdecf, 0xe2de, 0xbac8,
+ 0xe2e0, 0xe2dd, 0xe2da, 0xe6b1, 0xe6b5, 0xe6b7, 0xe6b3, 0xe6b2,
+ 0xe6b0, 0xbd45, 0xbd43, 0xbd48, 0xbd49, 0xe6b4, 0xbd46, 0xe6af,
+ 0xbd47, 0xbac4, 0xe6b6, 0xbd44, 0xea6c, 0xea6b, 0xea73, 0xea6d,
+ 0xea72, 0xea6f, 0xbf60, 0xea71, 0xbf61, 0xbf62, 0xea70, 0xea6e,
+ 0xc0f8, 0xed74, 0xc0f7, 0xed77, 0xed75, 0xed76, 0xc0f9, 0xf04d,
+ 0xc2a1, 0xf04e, 0xc27d, 0xf04f, 0xc27e, 0xf04c, 0xf050, 0xf04a,
+ 0xc3a7, 0xf278, 0xc3a8, 0xc46f, 0xf04b, 0xc470, 0xc4ee, 0xf5df,
+ 0xc57e, 0xf6f4, 0xc57d, 0xf7ea, 0xc5f5, 0xc5f6, 0xf9cc, 0xacd1,
+ 0xcfde, 0xb56e, 0xb56f, 0xa5d5, 0xa6ca, 0xca47, 0xcb71, 0xa86d,
+ 0xaaba, 0xacd2, 0xacd3, 0xacd4, 0xd6a6, 0xd2cb, 0xaf6f, 0xb2ae,
+ 0xd6a5, 0xdab8, 0xb571, 0xdab7, 0xb570, 0xded5, 0xbd4a, 0xe6bb,
+ 0xe6b8, 0xe6b9, 0xe6ba, 0xed78, 0xf051, 0xf471, 0xf470, 0xf6f5,
+ 0xa5d6, 0xcd75, 0xaf70, 0xb572, 0xded6, 0xe2e1, 0xbd4b, 0xea74,
+ 0xf052, 0xf472, 0xa5d7, 0xaabb, 0xacd7, 0xcfdf, 0xacd8, 0xacd6,
+ 0xacd5, 0xd2cc, 0xaf71, 0xaf72, 0xaf73, 0xb2b0, 0xd6a7, 0xb2af,
+ 0xdab9, 0xb2b1, 0xb573, 0xded7, 0xb7f8, 0xb7f9, 0xbac9, 0xbaca,
+ 0xbd4c, 0xbf64, 0xea75, 0xbf63, 0xed79, 0xc0fa, 0xf053, 0xf473,
+ 0xa5d8, 0xa86e, 0xcd78, 0xcd77, 0xaabc, 0xcd76, 0xaabd, 0xcd79,
+ 0xcfe5, 0xacdb, 0xacda, 0xcfe7, 0xcfe6, 0xacdf, 0xacde, 0xacd9,
+ 0xcfe1, 0xcfe2, 0xcfe3, 0xace0, 0xcfe0, 0xacdc, 0xcfe4, 0xacdd,
+ 0xd2cf, 0xd2d3, 0xd2d1, 0xd2d0, 0xd2d4, 0xd2d5, 0xd2d6, 0xd2ce,
+ 0xd2cd, 0xaf75, 0xaf76, 0xd2d7, 0xd2d2, 0xd6b0, 0xd2d8, 0xaf77,
+ 0xaf74, 0xd6aa, 0xd6a9, 0xd6ab, 0xd6ac, 0xd6ae, 0xd6ad, 0xd6b2,
+ 0xb2b5, 0xb2b2, 0xb2b6, 0xd6a8, 0xb2b7, 0xd6b1, 0xb2b4, 0xd6af,
+ 0xb2b3, 0xdabc, 0xdabe, 0xdaba, 0xdabb, 0xdabf, 0xdac1, 0xdac2,
+ 0xdabd, 0xdac0, 0xb574, 0xdedb, 0xdee0, 0xded8, 0xdedc, 0xdee1,
+ 0xdedd, 0xb7fa, 0xb843, 0xb7fd, 0xded9, 0xdeda, 0xbace, 0xb846,
+ 0xb7fe, 0xb844, 0xb7fc, 0xdedf, 0xb845, 0xdede, 0xb841, 0xb7fb,
+ 0xb842, 0xdee2, 0xe2e6, 0xe2e8, 0xb840, 0xe2e3, 0xbacc, 0xe2e9,
+ 0xbacd, 0xe2e7, 0xe2e2, 0xe2e5, 0xe2ea, 0xbacb, 0xe2e4, 0xbd4e,
+ 0xe6bf, 0xe6be, 0xbd51, 0xbd4f, 0xe6bc, 0xbd4d, 0xe6bd, 0xbd50,
+ 0xea7d, 0xeaa1, 0xea7e, 0xea76, 0xea7a, 0xea79, 0xea77, 0xbf66,
+ 0xbf67, 0xbf65, 0xea78, 0xea7b, 0xea7c, 0xbf68, 0xc140, 0xeda3,
+ 0xc0fc, 0xed7b, 0xc0fe, 0xc141, 0xc0fd, 0xeda2, 0xed7c, 0xc0fb,
+ 0xeda1, 0xed7a, 0xed7e, 0xed7d, 0xf055, 0xc2a4, 0xc2a5, 0xc2a2,
+ 0xc2a3, 0xf054, 0xf27b, 0xc3a9, 0xf279, 0xf27a, 0xf474, 0xf477,
+ 0xf475, 0xf476, 0xf5e0, 0xc4ef, 0xf7eb, 0xf8b4, 0xc5f7, 0xf8f8,
+ 0xf8f9, 0xc666, 0xa5d9, 0xace1, 0xdac3, 0xdee3, 0xa5da, 0xa86f,
+ 0xaabe, 0xcfe8, 0xcfe9, 0xaf78, 0xdac4, 0xb575, 0xb847, 0xc142,
+ 0xeda4, 0xf27c, 0xf478, 0xa5db, 0xcda1, 0xcd7a, 0xcd7c, 0xcd7e,
+ 0xcd7d, 0xcd7b, 0xaabf, 0xace2, 0xcff2, 0xcfed, 0xcfea, 0xcff1,
+ 0xace4, 0xace5, 0xcff0, 0xcfef, 0xcfee, 0xcfeb, 0xcfec, 0xcff3,
+ 0xace3, 0xaf7c, 0xafa4, 0xafa3, 0xd2e1, 0xd2db, 0xd2d9, 0xafa1,
+ 0xd6b9, 0xaf7a, 0xd2de, 0xd2e2, 0xd2e4, 0xd2e0, 0xd2da, 0xafa2,
+ 0xd2df, 0xd2dd, 0xaf79, 0xd2e5, 0xafa5, 0xd2e3, 0xaf7d, 0xd2dc,
+ 0xaf7e, 0xaf7b, 0xb2b9, 0xd6ba, 0xd6b3, 0xd6b5, 0xd6b7, 0xd6b8,
+ 0xd6b6, 0xb2ba, 0xd6bb, 0xd6b4, 0xdac8, 0xb576, 0xdad0, 0xdac5,
+ 0xdad1, 0xdac6, 0xdac7, 0xdacf, 0xdace, 0xdacb, 0xb2b8, 0xb577,
+ 0xdac9, 0xdacc, 0xb578, 0xdacd, 0xdaca, 0xdeee, 0xdef2, 0xb84e,
+ 0xe2f0, 0xb851, 0xdef0, 0xdeed, 0xdee8, 0xdeea, 0xdeeb, 0xdee4,
+ 0xb84d, 0xb84c, 0xb848, 0xdee7, 0xb84f, 0xb850, 0xdee6, 0xdee9,
+ 0xdef1, 0xb84a, 0xb84b, 0xdeef, 0xdee5, 0xe2f2, 0xbad0, 0xe2f4,
+ 0xdeec, 0xe2f6, 0xbad4, 0xe2f7, 0xe2f3, 0xbad1, 0xe2ef, 0xbad3,
+ 0xe2ec, 0xe2f1, 0xe2f5, 0xe2ee, 0xb849, 0xe2eb, 0xbad2, 0xe2ed,
+ 0xbd54, 0xe6c1, 0xbd58, 0xbd56, 0xbacf, 0xe6c8, 0xe6c9, 0xbd53,
+ 0xe6c7, 0xe6ca, 0xbd55, 0xbd52, 0xe6c3, 0xe6c0, 0xe6c5, 0xe6c2,
+ 0xbd59, 0xe6c4, 0xe6c6, 0xbd57, 0xbf6a, 0xeaa8, 0xeaa2, 0xeaa6,
+ 0xeaac, 0xeaad, 0xeaa9, 0xeaaa, 0xeaa7, 0xeaa4, 0xbf6c, 0xbf69,
+ 0xeaa3, 0xeaa5, 0xbf6b, 0xeaab, 0xc146, 0xedaa, 0xeda5, 0xc145,
+ 0xc143, 0xedac, 0xc144, 0xeda8, 0xeda9, 0xeda6, 0xedad, 0xf056,
+ 0xc147, 0xeda7, 0xedae, 0xedab, 0xf05a, 0xf057, 0xc2a6, 0xf05b,
+ 0xf05d, 0xf05c, 0xf058, 0xf059, 0xf2a3, 0xc3aa, 0xf27e, 0xf2a2,
+ 0xf27d, 0xf2a4, 0xf2a1, 0xf47a, 0xf47d, 0xf479, 0xc471, 0xf47b,
+ 0xf47c, 0xf47e, 0xc472, 0xc474, 0xc473, 0xf5e1, 0xf5e3, 0xf5e2,
+ 0xf6f6, 0xf8b5, 0xf8fa, 0xa5dc, 0xcb72, 0xaac0, 0xcda3, 0xaac1,
+ 0xaac2, 0xcda2, 0xcff8, 0xcff7, 0xace6, 0xace9, 0xace8, 0xace7,
+ 0xcff4, 0xcff6, 0xcff5, 0xd2e8, 0xafa7, 0xd2ec, 0xd2eb, 0xd2ea,
+ 0xd2e6, 0xafa6, 0xafaa, 0xafad, 0xafae, 0xd2e7, 0xd2e9, 0xafac,
+ 0xafab, 0xafa9, 0xafa8, 0xd6c2, 0xd6c0, 0xd6bc, 0xb2bb, 0xd6bd,
+ 0xb2bc, 0xd6be, 0xd6bf, 0xd6c1, 0xb2bd, 0xdad5, 0xdad4, 0xdad3,
+ 0xdad2, 0xdef6, 0xb852, 0xdef3, 0xdef5, 0xb853, 0xb854, 0xdef4,
+ 0xe341, 0xe2f9, 0xe2fa, 0xbad7, 0xbad5, 0xbad6, 0xe343, 0xe342,
+ 0xe2fe, 0xe2fd, 0xe2fc, 0xe2fb, 0xe340, 0xe2f8, 0xe6cb, 0xe6d0,
+ 0xe6ce, 0xe6cd, 0xe6cc, 0xe6cf, 0xeaae, 0xbf6d, 0xc148, 0xedb0,
+ 0xc149, 0xedaf, 0xf05f, 0xf05e, 0xc2a7, 0xf2a5, 0xc3ab, 0xf4a1,
+ 0xc5a1, 0xf6f7, 0xf8b7, 0xf8b6, 0xc9a8, 0xacea, 0xaceb, 0xd6c3,
+ 0xb856, 0xa5dd, 0xa872, 0xa871, 0xa870, 0xcda4, 0xaac4, 0xaac3,
+ 0xacee, 0xcffa, 0xcffd, 0xcffb, 0xacec, 0xaced, 0xcff9, 0xcffc,
+ 0xafb5, 0xd2f3, 0xd2f5, 0xd2f4, 0xafb2, 0xd2ef, 0xafb0, 0xafaf,
+ 0xafb3, 0xafb1, 0xafb4, 0xd2f2, 0xd2ed, 0xd2ee, 0xd2f1, 0xd2f0,
+ 0xd6c6, 0xd6c7, 0xd6c5, 0xd6c4, 0xb2be, 0xb57d, 0xdad6, 0xdad8,
+ 0xdada, 0xb57c, 0xb57a, 0xdad7, 0xb57b, 0xdad9, 0xb579, 0xdf41,
+ 0xdef7, 0xdefa, 0xdefe, 0xb85a, 0xdefc, 0xdefb, 0xdef8, 0xdef9,
+ 0xb858, 0xdf40, 0xb857, 0xb85c, 0xb85b, 0xb859, 0xdefd, 0xe349,
+ 0xe348, 0xe344, 0xbad8, 0xe347, 0xe346, 0xbad9, 0xbd5e, 0xe6d2,
+ 0xbd5f, 0xbd5b, 0xbd5d, 0xbd5a, 0xbd5c, 0xeaaf, 0xbf70, 0xeab1,
+ 0xeab0, 0xe345, 0xbf72, 0xbf71, 0xbf6e, 0xbf6f, 0xedb5, 0xedb3,
+ 0xc14a, 0xedb4, 0xedb6, 0xedb2, 0xedb1, 0xf060, 0xc2aa, 0xc2a8,
+ 0xc2a9, 0xf2a6, 0xf2a7, 0xc3ad, 0xc3ac, 0xf4a3, 0xf4a4, 0xf4a2,
+ 0xf6f8, 0xf6f9, 0xa5de, 0xca48, 0xa873, 0xcda5, 0xaac6, 0xaac5,
+ 0xcda6, 0xd040, 0xacef, 0xcffe, 0xacf0, 0xafb6, 0xd2f8, 0xd2f6,
+ 0xd2fc, 0xafb7, 0xd2f7, 0xd2fb, 0xd2f9, 0xd2fa, 0xd6c8, 0xd6ca,
+ 0xb2bf, 0xd6c9, 0xb2c0, 0xb5a2, 0xb5a1, 0xb57e, 0xdadb, 0xdf44,
+ 0xb85d, 0xb85e, 0xdf43, 0xdf42, 0xe34a, 0xbadb, 0xbada, 0xe34b,
+ 0xe34c, 0xbd61, 0xbd60, 0xeab5, 0xe6d3, 0xe6d5, 0xe6d4, 0xeab4,
+ 0xeab2, 0xeab6, 0xeab3, 0xbf73, 0xedb7, 0xc14b, 0xedb8, 0xedb9,
+ 0xc2ab, 0xc2ac, 0xc475, 0xc5d1, 0xa5df, 0xd041, 0xd2fd, 0xafb8,
+ 0xb3ba, 0xb3b9, 0xb5a4, 0xdadd, 0xb5a3, 0xdadc, 0xdf45, 0xbadc,
+ 0xe34d, 0xbadd, 0xc476, 0xf4a5, 0xa6cb, 0xaac7, 0xcda7, 0xacf2,
+ 0xacf1, 0xd042, 0xd043, 0xd340, 0xd342, 0xafb9, 0xd344, 0xd347,
+ 0xd345, 0xd346, 0xd343, 0xd2fe, 0xafba, 0xd348, 0xd341, 0xd6d3,
+ 0xb2c6, 0xd6dc, 0xb2c3, 0xd6d5, 0xb2c7, 0xb2c1, 0xd6d0, 0xd6dd,
+ 0xd6d1, 0xd6ce, 0xb2c5, 0xb2c2, 0xd6d4, 0xd6d7, 0xb2c4, 0xd6d8,
+ 0xb2c8, 0xd6d9, 0xd6cf, 0xd6d6, 0xd6da, 0xd6d2, 0xd6cd, 0xd6cb,
+ 0xd6db, 0xdadf, 0xdae4, 0xdae0, 0xdae6, 0xb5a7, 0xd6cc, 0xdae1,
+ 0xb5a5, 0xdade, 0xb5ac, 0xdae2, 0xb5ab, 0xdae3, 0xb5ad, 0xb5a8,
+ 0xb5ae, 0xb5a9, 0xb5aa, 0xb5a6, 0xdae5, 0xb861, 0xdf50, 0xdf53,
+ 0xdf47, 0xdf4c, 0xdf46, 0xb863, 0xdf4a, 0xdf48, 0xb862, 0xdf4f,
+ 0xdf4e, 0xdf4b, 0xdf4d, 0xdf49, 0xbae1, 0xdf52, 0xb85f, 0xdf51,
+ 0xe35d, 0xbae8, 0xe358, 0xbae7, 0xe34e, 0xe350, 0xbae0, 0xe355,
+ 0xe354, 0xe357, 0xbae5, 0xe352, 0xe351, 0xbae4, 0xbadf, 0xe353,
+ 0xbae2, 0xe359, 0xe35b, 0xe356, 0xe34f, 0xbae3, 0xbd69, 0xbade,
+ 0xe35c, 0xe6d9, 0xbd62, 0xe6db, 0xbd63, 0xbd65, 0xe6de, 0xe6d6,
+ 0xbae6, 0xe6dc, 0xe6d8, 0xb860, 0xbd68, 0xbd64, 0xbd66, 0xbd67,
+ 0xbf76, 0xe6dd, 0xe6d7, 0xbd6a, 0xe6da, 0xeac0, 0xeabb, 0xeac5,
+ 0xbf74, 0xeabd, 0xbf78, 0xeac3, 0xeaba, 0xeab7, 0xeac6, 0xc151,
+ 0xbf79, 0xeac2, 0xeab8, 0xbf77, 0xeabc, 0xbf7b, 0xeab9, 0xeabe,
+ 0xbf7a, 0xeac1, 0xeac4, 0xedcb, 0xedcc, 0xedbc, 0xedc3, 0xedc1,
+ 0xc14f, 0xedc8, 0xeabf, 0xedbf, 0xedc9, 0xc14e, 0xedbe, 0xedbd,
+ 0xedc7, 0xedc4, 0xedc6, 0xedba, 0xedca, 0xc14c, 0xedc5, 0xedce,
+ 0xedc2, 0xc150, 0xc14d, 0xedc0, 0xedbb, 0xedcd, 0xbf75, 0xf063,
+ 0xf061, 0xf067, 0xc2b0, 0xf065, 0xf064, 0xc2b2, 0xf06a, 0xc2b1,
+ 0xf06b, 0xf068, 0xc2ae, 0xf069, 0xf062, 0xc2af, 0xc2ad, 0xf2ab,
+ 0xf066, 0xf06c, 0xf2a8, 0xc3b2, 0xc3b0, 0xf2aa, 0xf2ac, 0xf2a9,
+ 0xc3b1, 0xc3ae, 0xc3af, 0xc3b3, 0xc478, 0xf4aa, 0xf4a9, 0xf4a7,
+ 0xf4a6, 0xf4a8, 0xc477, 0xc479, 0xc4f0, 0xf5e5, 0xf5e4, 0xf6fa,
+ 0xf6fc, 0xf6fe, 0xf6fd, 0xf6fb, 0xc5a3, 0xc5a2, 0xc5d3, 0xc5d2,
+ 0xc5d4, 0xf7ed, 0xf7ec, 0xf8fb, 0xf8b8, 0xf8fc, 0xc658, 0xc659,
+ 0xf96d, 0xc67e, 0xa6cc, 0xcda8, 0xd045, 0xd046, 0xd044, 0xacf3,
+ 0xd047, 0xd048, 0xd049, 0xd349, 0xd34f, 0xd34d, 0xafbb, 0xd34b,
+ 0xd34c, 0xd34e, 0xd34a, 0xb2c9, 0xd6de, 0xb2cb, 0xd6e0, 0xb2ca,
+ 0xd6df, 0xdae8, 0xb5af, 0xdaea, 0xdae7, 0xd6e1, 0xb5b0, 0xdae9,
+ 0xdf56, 0xb864, 0xdf54, 0xb865, 0xdf55, 0xb866, 0xbae9, 0xe361,
+ 0xe35e, 0xe360, 0xbaea, 0xbaeb, 0xe35f, 0xe6df, 0xe6e0, 0xbd6b,
+ 0xe6e2, 0xe6e1, 0xa261, 0xeaca, 0xeacb, 0xeac7, 0xeac8, 0xbf7c,
+ 0xbf7d, 0xeac9, 0xc157, 0xc153, 0xc158, 0xc154, 0xc156, 0xc152,
+ 0xc155, 0xc2b3, 0xedcf, 0xf2ae, 0xf2ad, 0xf4ab, 0xc47a, 0xc47b,
+ 0xf741, 0xf5e6, 0xf740, 0xf8fd, 0xf9a4, 0xa6cd, 0xa874, 0xcda9,
+ 0xaac8, 0xacf6, 0xd04c, 0xacf4, 0xd04a, 0xacf9, 0xacf5, 0xacfa,
+ 0xacf8, 0xd04b, 0xacf7, 0xafbf, 0xafbe, 0xd35a, 0xafc7, 0xd353,
+ 0xd359, 0xafc3, 0xd352, 0xd358, 0xd356, 0xafc2, 0xafc4, 0xd355,
+ 0xafbd, 0xd354, 0xafc8, 0xafc5, 0xafc9, 0xafc6, 0xd351, 0xd350,
+ 0xd357, 0xafc0, 0xafbc, 0xafc1, 0xd6f0, 0xd6e9, 0xb5b5, 0xd6e8,
+ 0xb2cf, 0xb2d6, 0xb2d3, 0xb2d9, 0xb2d8, 0xb2d4, 0xd6e2, 0xd6e5,
+ 0xd6e4, 0xb2d0, 0xd6e6, 0xd6ef, 0xb2d1, 0xd6e3, 0xd6ec, 0xd6ed,
+ 0xb2d2, 0xd6ea, 0xb2d7, 0xb2cd, 0xb2d5, 0xd6e7, 0xb2cc, 0xd6eb,
+ 0xd6ee, 0xdafb, 0xdaf2, 0xb5b2, 0xdaf9, 0xdaf6, 0xdaee, 0xdaf7,
+ 0xb5b4, 0xdaef, 0xdaeb, 0xb86c, 0xdaf4, 0xb5b1, 0xdafa, 0xb5b8,
+ 0xb5ba, 0xdaed, 0xb5b9, 0xdaf0, 0xb5b3, 0xdaf8, 0xdaf1, 0xdaf5,
+ 0xdaf3, 0xb5b6, 0xdaec, 0xb5bb, 0xb2ce, 0xb5b7, 0xb5bc, 0xb868,
+ 0xdf5d, 0xdf5f, 0xdf61, 0xdf65, 0xdf5b, 0xdf59, 0xb86a, 0xdf60,
+ 0xdf64, 0xdf5c, 0xdf58, 0xdf57, 0xdf62, 0xdf5a, 0xdf5e, 0xb86b,
+ 0xb869, 0xdf66, 0xb867, 0xdf63, 0xe372, 0xbaee, 0xe36a, 0xbd78,
+ 0xe374, 0xbaf1, 0xe378, 0xbaf7, 0xe365, 0xe375, 0xe362, 0xe377,
+ 0xe366, 0xbafe, 0xbafb, 0xe376, 0xe370, 0xbaed, 0xbaf5, 0xbaf4,
+ 0xbaf3, 0xbaf9, 0xe363, 0xbafa, 0xe371, 0xbaf6, 0xbaec, 0xe373,
+ 0xbaef, 0xbaf0, 0xbaf8, 0xe368, 0xe367, 0xe364, 0xe36c, 0xe369,
+ 0xe36d, 0xbafd, 0xe379, 0xbaf2, 0xe36e, 0xe36f, 0xe36b, 0xbafc,
+ 0xe6e7, 0xbd70, 0xbd79, 0xbd75, 0xe6e4, 0xbd72, 0xbd76, 0xe6f0,
+ 0xbd6c, 0xe6e8, 0xbd74, 0xe6eb, 0xe6e6, 0xbd73, 0xbd77, 0xe6e5,
+ 0xbd71, 0xe6ef, 0xbd6e, 0xe6ee, 0xe6ed, 0xbd7a, 0xe572, 0xbd6d,
+ 0xe6ec, 0xe6e3, 0xbd7b, 0xe6ea, 0xbd6f, 0xe6e9, 0xbfa2, 0xbfa7,
+ 0xbf7e, 0xead8, 0xeacf, 0xeadb, 0xead3, 0xead9, 0xbfa8, 0xbfa1,
+ 0xeacc, 0xead2, 0xeadc, 0xead5, 0xeada, 0xeace, 0xead6, 0xbfa3,
+ 0xead4, 0xbfa6, 0xbfa5, 0xead0, 0xead1, 0xeacd, 0xead7, 0xbfa4,
+ 0xeade, 0xeadd, 0xedda, 0xedd6, 0xc15f, 0xedd0, 0xc159, 0xc169,
+ 0xeddc, 0xc161, 0xc15d, 0xedd3, 0xc164, 0xc167, 0xedde, 0xc15c,
+ 0xedd5, 0xc165, 0xede0, 0xeddd, 0xedd1, 0xc160, 0xc15a, 0xc168,
+ 0xedd8, 0xc163, 0xedd2, 0xc15e, 0xeddf, 0xc162, 0xc15b, 0xedd9,
+ 0xc166, 0xedd7, 0xeddb, 0xf06e, 0xf074, 0xc2b9, 0xf077, 0xc2b4,
+ 0xc2b5, 0xf06f, 0xf076, 0xf071, 0xc2ba, 0xc2b7, 0xf06d, 0xc2b6,
+ 0xf073, 0xf075, 0xc2b8, 0xf072, 0xf070, 0xf2b8, 0xc3b7, 0xc3b8,
+ 0xc3b4, 0xc3b5, 0xf2b4, 0xf2b2, 0xf2b6, 0xc3ba, 0xf2b7, 0xf2b0,
+ 0xf2af, 0xf2b3, 0xf2b1, 0xc3b6, 0xf2b5, 0xf4ac, 0xc47e, 0xc47d,
+ 0xf4ad, 0xf4af, 0xf4ae, 0xc4a1, 0xf5eb, 0xf5e8, 0xf5e9, 0xf5e7,
+ 0xf5ea, 0xc4f2, 0xf5ec, 0xc4f1, 0xf742, 0xc5d5, 0xc5d7, 0xf7ee,
+ 0xc5d6, 0xf8b9, 0xf940, 0xf942, 0xf8fe, 0xf941, 0xc66c, 0xa6ce,
+ 0xacfb, 0xd26f, 0xafca, 0xb2da, 0xdafc, 0xdafd, 0xeadf, 0xc16a,
+ 0xede1, 0xc2bb, 0xf2ba, 0xf2b9, 0xc4a2, 0xf5ed, 0xf743, 0xc5f8,
+ 0xca49, 0xaac9, 0xa875, 0xd04d, 0xd360, 0xd35b, 0xd35f, 0xd35d,
+ 0xafcb, 0xd35e, 0xd35c, 0xd6f1, 0xdafe, 0xdb40, 0xdf69, 0xdf6a,
+ 0xb86e, 0xb86f, 0xdf68, 0xdf6b, 0xdf67, 0xb86d, 0xbb40, 0xb870,
+ 0xe37a, 0xbd7c, 0xe6f1, 0xbd7d, 0xbfa9, 0xeae2, 0xeae0, 0xeae1,
+ 0xede4, 0xede3, 0xede2, 0xf2bb, 0xc3b9, 0xf2bc, 0xf744, 0xc5f9,
+ 0xf8ba, 0xa6cf, 0xaacb, 0xaaca, 0xd04f, 0xacfc, 0xd04e, 0xd362,
+ 0xafcc, 0xd6f2, 0xd361, 0xb2dc, 0xd6f5, 0xd6f3, 0xd6f4, 0xb2db,
+ 0xdb42, 0xdb43, 0xdb41, 0xb873, 0xdf6d, 0xdf6c, 0xdf6e, 0xb872,
+ 0xb871, 0xe6f2, 0xe6f4, 0xbd7e, 0xe6f3, 0xeae3, 0xbfaa, 0xf079,
+ 0xf078, 0xc3bb, 0xf2bd, 0xc3bd, 0xc3bc, 0xf4b0, 0xf5ee, 0xc4f3,
+ 0xa6d0, 0xd050, 0xacfd, 0xd365, 0xafce, 0xd364, 0xd363, 0xafcd,
+ 0xd6fb, 0xd6fd, 0xd6f6, 0xd6f7, 0xb2dd, 0xd6f8, 0xb2de, 0xd6fc,
+ 0xd6f9, 0xd6fa, 0xb2df, 0xb5be, 0xb5bf, 0xdb44, 0xdf6f, 0xdf70,
+ 0xe37e, 0xbb43, 0xbb41, 0xbb42, 0xe37b, 0xe37c, 0xe37d, 0xe6f9,
+ 0xe6fa, 0xbda1, 0xe6f7, 0xe6f6, 0xe6f8, 0xe6f5, 0xbfad, 0xeae4,
+ 0xbfab, 0xbfac, 0xede6, 0xc16b, 0xede5, 0xefa8, 0xf07a, 0xf07b,
+ 0xc2bc, 0xc2bd, 0xc16c, 0xf2be, 0xf2bf, 0xf4b1, 0xc4a3, 0xa6d1,
+ 0xa6d2, 0xacfe, 0xaacc, 0xafcf, 0xd051, 0xb5c0, 0xa6d3, 0xad41,
+ 0xd052, 0xd053, 0xad40, 0xad42, 0xa6d4, 0xd054, 0xafd1, 0xd366,
+ 0xafd3, 0xafd0, 0xafd2, 0xd741, 0xb2e0, 0xd740, 0xd6fe, 0xdf71,
+ 0xe3a1, 0xbda2, 0xbfae, 0xeae6, 0xeae5, 0xede7, 0xf5ef, 0xa6d5,
+ 0xcb73, 0xcdaa, 0xad43, 0xd055, 0xd368, 0xafd4, 0xd367, 0xafd5,
+ 0xd743, 0xb2e2, 0xd742, 0xd744, 0xb2e1, 0xdb46, 0xdb47, 0xdb45,
+ 0xb5c1, 0xb874, 0xb875, 0xbb45, 0xe3a3, 0xe3a2, 0xbb44, 0xe6fb,
+ 0xe6fc, 0xeae7, 0xc170, 0xc16f, 0xc16d, 0xc16e, 0xc171, 0xf07c,
+ 0xc2bf, 0xc2be, 0xf2c0, 0xf4b2, 0xc5a5, 0xc5a4, 0xa6d6, 0xd1fb,
+ 0xb877, 0xb5c2, 0xb876, 0xbb46, 0xa6d7, 0xc9a9, 0xa6d8, 0xa6d9,
+ 0xcdab, 0xcb76, 0xcb77, 0xa877, 0xcb74, 0xa876, 0xa879, 0xcb75,
+ 0xa87b, 0xa87a, 0xcb78, 0xa878, 0xaad1, 0xaacf, 0xcdad, 0xaace,
+ 0xaad3, 0xaad5, 0xaad2, 0xcdb0, 0xcdac, 0xaad6, 0xaad0, 0xa87c,
+ 0xaad4, 0xcdaf, 0xcdae, 0xaacd, 0xd05b, 0xad47, 0xad48, 0xd05d,
+ 0xd057, 0xd05a, 0xd063, 0xd061, 0xad49, 0xd067, 0xad4c, 0xd064,
+ 0xd05c, 0xd059, 0xdb49, 0xd062, 0xad44, 0xd065, 0xd056, 0xd05f,
+ 0xad46, 0xad4b, 0xd060, 0xad4f, 0xad4d, 0xd058, 0xad4a, 0xd05e,
+ 0xad4e, 0xad45, 0xd066, 0xafda, 0xafe3, 0xafd8, 0xafd6, 0xd36a,
+ 0xafde, 0xafdb, 0xd36c, 0xafdd, 0xd36b, 0xd369, 0xd36e, 0xafe2,
+ 0xafe0, 0xdb48, 0xd36f, 0xd36d, 0xafd7, 0xafd9, 0xafdc, 0xafdf,
+ 0xafe1, 0xd74e, 0xb2e4, 0xd745, 0xd747, 0xd748, 0xd750, 0xd74c,
+ 0xd74a, 0xd74d, 0xd751, 0xb2e5, 0xb2e9, 0xd746, 0xd74f, 0xb2e7,
+ 0xb2e6, 0xd74b, 0xd749, 0xb2e3, 0xb2e8, 0xb5c8, 0xdb51, 0xdb4f,
+ 0xb5ca, 0xdb4a, 0xdfa1, 0xb5c9, 0xdb4e, 0xdb4b, 0xb5c5, 0xb5cb,
+ 0xdb50, 0xb5c7, 0xdb4d, 0xbb47, 0xb5c6, 0xdb4c, 0xb5cc, 0xb5c4,
+ 0xb5c3, 0xdf77, 0xdf75, 0xdf7b, 0xdf73, 0xdfa2, 0xdf78, 0xdf72,
+ 0xb87b, 0xb8a3, 0xdf7d, 0xdf76, 0xb87e, 0xb87c, 0xdf7e, 0xb879,
+ 0xb878, 0xdf79, 0xb87d, 0xb5cd, 0xdf7c, 0xdf74, 0xb87a, 0xb8a1,
+ 0xb8a2, 0xbb4c, 0xbb48, 0xbb4d, 0xe3a6, 0xe3a5, 0xe3a7, 0xbb4a,
+ 0xe3a4, 0xbb4b, 0xe3aa, 0xe3a9, 0xe3a8, 0xbb49, 0xe741, 0xe744,
+ 0xbda8, 0xe743, 0xbda7, 0xbda3, 0xbda4, 0xbda5, 0xe740, 0xe6fe,
+ 0xbda6, 0xe742, 0xe6fd, 0xeae9, 0xeaf3, 0xbfb1, 0xbfb0, 0xeaed,
+ 0xeaef, 0xeaea, 0xeaee, 0xeae8, 0xeaf1, 0xbfaf, 0xeaf0, 0xeaec,
+ 0xeaf2, 0xeaeb, 0xc174, 0xede8, 0xedee, 0xc178, 0xc17a, 0xc177,
+ 0xc176, 0xc175, 0xc173, 0xede9, 0xedec, 0xc172, 0xeded, 0xc179,
+ 0xedeb, 0xedea, 0xc2c0, 0xc2c1, 0xf0a1, 0xf07d, 0xf07e, 0xf2c2,
+ 0xf2c1, 0xc3be, 0xf4b4, 0xc4a4, 0xf4b3, 0xf5f0, 0xf745, 0xc5a6,
+ 0xf943, 0xf944, 0xc5d8, 0xa6da, 0xaad7, 0xdb52, 0xbb4e, 0xc17b,
+ 0xedef, 0xa6db, 0xafe5, 0xafe4, 0xdb53, 0xeaf4, 0xa6dc, 0xad50,
+ 0xdb54, 0xdb55, 0xdb56, 0xbb4f, 0xbfb2, 0xa6dd, 0xaad8, 0xd068,
+ 0xafe6, 0xd370, 0xb2ea, 0xdb57, 0xb8a4, 0xbb50, 0xbfb3, 0xc17c,
+ 0xc2c2, 0xf4b5, 0xa6de, 0xaad9, 0xafe7, 0xd752, 0xb5ce, 0xbb51,
+ 0xe3ab, 0xe745, 0xa6df, 0xb5cf, 0xdfa3, 0xbb52, 0xa6e0, 0xcdb1,
+ 0xd069, 0xad51, 0xd372, 0xafea, 0xafe8, 0xafe9, 0xafeb, 0xd371,
+ 0xd757, 0xd754, 0xd756, 0xb2eb, 0xb2ed, 0xb2ec, 0xd753, 0xb2ee,
+ 0xd755, 0xdb58, 0xdb59, 0xdb5a, 0xdfa6, 0xdfa7, 0xdfa5, 0xdfa8,
+ 0xb8a5, 0xdfa4, 0xbb53, 0xe74a, 0xe746, 0xe749, 0xe74b, 0xe748,
+ 0xe747, 0xeaf5, 0xeaf6, 0xeaf7, 0xbfb4, 0xbfb5, 0xedf1, 0xedf0,
+ 0xedf2, 0xf0a3, 0xf0a2, 0xf2c4, 0xf2c5, 0xf2c3, 0xc4a5, 0xf4b6,
+ 0xf4b7, 0xf746, 0xf7ef, 0xf8bb, 0xa6e1, 0xa87d, 0xc17d, 0xa6e2,
+ 0xd758, 0xdb5b, 0xc641, 0xca4a, 0xca4b, 0xca4d, 0xa6e3, 0xca4e,
+ 0xca4c, 0xcba2, 0xcba3, 0xcb7b, 0xcba1, 0xa8a1, 0xa8a2, 0xcb7c,
+ 0xcb7a, 0xcb79, 0xcb7d, 0xa87e, 0xcb7e, 0xd06a, 0xcdb6, 0xaadc,
+ 0xcdb5, 0xcdb7, 0xaadb, 0xcdbc, 0xaadf, 0xcdb2, 0xcdc0, 0xcdc6,
+ 0xaae6, 0xcdc3, 0xaae3, 0xcdb9, 0xcdbf, 0xcdc1, 0xcdb4, 0xaae2,
+ 0xaadd, 0xcdba, 0xaae4, 0xaae7, 0xaae1, 0xaada, 0xcdbe, 0xcdb8,
+ 0xcdc5, 0xaae9, 0xaae5, 0xaae0, 0xcdbd, 0xafec, 0xcdbb, 0xaade,
+ 0xaae8, 0xcdb3, 0xcdc2, 0xcdc4, 0xad62, 0xad5c, 0xad64, 0xad61,
+ 0xd071, 0xd074, 0xad5d, 0xd06b, 0xad56, 0xad60, 0xad63, 0xad65,
+ 0xd0a2, 0xd077, 0xad55, 0xd0a1, 0xad59, 0xad57, 0xad52, 0xd06f,
+ 0xd07e, 0xd073, 0xd076, 0xd0a5, 0xad66, 0xd07d, 0xad5e, 0xd078,
+ 0xd0a4, 0xd075, 0xd079, 0xd07c, 0xd06d, 0xd0a3, 0xd07b, 0xd06c,
+ 0xd070, 0xad5f, 0xad5a, 0xad53, 0xad58, 0xad54, 0xad67, 0xd06e,
+ 0xd3a5, 0xad5b, 0xd07a, 0xce41, 0xd3a8, 0xaffa, 0xd376, 0xd3a3,
+ 0xd37d, 0xd3b2, 0xd3aa, 0xd37e, 0xd3a9, 0xd378, 0xd37c, 0xd3b5,
+ 0xaffd, 0xd3ad, 0xd3a4, 0xafed, 0xd3b3, 0xd374, 0xd3ac, 0xaffc,
+ 0xaff7, 0xd373, 0xaff5, 0xaff4, 0xaff9, 0xd3ab, 0xaff1, 0xaff8,
+ 0xd072, 0xdb5c, 0xd3a6, 0xd37a, 0xaffb, 0xd37b, 0xd3a1, 0xaffe,
+ 0xd375, 0xd3af, 0xd3ae, 0xd3b6, 0xaff3, 0xaff0, 0xd3b4, 0xd3b0,
+ 0xd3a7, 0xd3a2, 0xaff6, 0xaff2, 0xd377, 0xafee, 0xd3b1, 0xafef,
+ 0xd379, 0xd75e, 0xd760, 0xd765, 0xd779, 0xb2fc, 0xb2f2, 0xd75d,
+ 0xb2fd, 0xb2fe, 0xd768, 0xd76f, 0xd775, 0xd762, 0xd769, 0xb340,
+ 0xd777, 0xd772, 0xb2fa, 0xb2f8, 0xd76e, 0xd76a, 0xd75c, 0xb2ef,
+ 0xd761, 0xd759, 0xb2f7, 0xb2f9, 0xd766, 0xd763, 0xb2f4, 0xd773,
+ 0xb2f1, 0xd764, 0xd77a, 0xd76c, 0xd76b, 0xb2f0, 0xb2fb, 0xb2f3,
+ 0xd75a, 0xd75f, 0xd770, 0xd776, 0xb341, 0xd75b, 0xd767, 0xd76d,
+ 0xb2f6, 0xd778, 0xd771, 0xd774, 0xb2f5, 0xdb6c, 0xdb60, 0xb5d7,
+ 0xdb7d, 0xdba7, 0xdbaa, 0xb5d5, 0xdb68, 0xdba3, 0xdb69, 0xdb77,
+ 0xb5e2, 0xdb73, 0xb5df, 0xdb74, 0xdb5d, 0xdba4, 0xb5e8, 0xdba1,
+ 0xdb75, 0xdbac, 0xdb70, 0xdfc8, 0xdbaf, 0xb5e6, 0xdb6e, 0xdb7a,
+ 0xb5e9, 0xb5d4, 0xdb72, 0xdbad, 0xdb6b, 0xdb64, 0xdb6f, 0xdb63,
+ 0xdb61, 0xb5d0, 0xdba5, 0xdb6a, 0xdba8, 0xdba9, 0xb5d8, 0xb5dd,
+ 0xb5d9, 0xb5e1, 0xdb7e, 0xb5da, 0xdb76, 0xdb66, 0xb5d2, 0xdb5e,
+ 0xdba2, 0xdbab, 0xdb65, 0xb5e0, 0xdbb0, 0xdb71, 0xdb6d, 0xb5d1,
+ 0xb5e5, 0xdb7c, 0xb5e7, 0xdb78, 0xb5dc, 0xb5d6, 0xb5de, 0xb5d3,
+ 0xb5e4, 0xdb79, 0xdb67, 0xdb7b, 0xdb62, 0xdba6, 0xdbae, 0xdb5f,
+ 0xdfc7, 0xdfdd, 0xb855, 0xdfcc, 0xdfca, 0xdfb5, 0xb8a9, 0xdfc5,
+ 0xdfd9, 0xdfc1, 0xb8b1, 0xdfd8, 0xdfbf, 0xb5e3, 0xdfcf, 0xdfc0,
+ 0xdfd6, 0xb8b0, 0xb8a8, 0xdfaa, 0xdfb2, 0xdfcb, 0xdfc3, 0xdfdc,
+ 0xdfc6, 0xb8b6, 0xdfd7, 0xb8ad, 0xdfc9, 0xdfd1, 0xdfb6, 0xdfd0,
+ 0xdfe1, 0xdfb1, 0xdfd2, 0xdfdf, 0xdfab, 0xb5db, 0xdfb9, 0xdfb8,
+ 0xb8af, 0xdfbc, 0xdfbe, 0xdfcd, 0xdfde, 0xb8b2, 0xb8b3, 0xdfb0,
+ 0xb8ab, 0xdfb4, 0xdfda, 0xb8b4, 0xb8ac, 0xb8ae, 0xb8b5, 0xdfe0,
+ 0xdfd3, 0xdfce, 0xdfbb, 0xdfba, 0xb8aa, 0xdfac, 0xb8a7, 0xdfc4,
+ 0xdfad, 0xdfc2, 0xdfb7, 0xdfdb, 0xb8a6, 0xdfb3, 0xdfaf, 0xdfd5,
+ 0xdfae, 0xbb60, 0xe3d3, 0xe3c2, 0xe3ac, 0xe3ca, 0xbb58, 0xe3bb,
+ 0xe3c5, 0xbb5b, 0xe3be, 0xbb59, 0xe3af, 0xe3cd, 0xe3ae, 0xe3c1,
+ 0xe3ad, 0xe3bf, 0xe3c8, 0xe3c6, 0xe3ba, 0xe3b5, 0xe3b3, 0xe3b4,
+ 0xe3c7, 0xe3d2, 0xe3bc, 0xbb5a, 0xe3b7, 0xe3cb, 0xbb5d, 0xe3b6,
+ 0xe3b0, 0xe3c0, 0xbb61, 0xbb55, 0xbb5e, 0xe3b8, 0xe3b2, 0xbb57,
+ 0xdfd4, 0xbb56, 0xe3c3, 0xbb54, 0xbb63, 0xbb5c, 0xe3c4, 0xe3b9,
+ 0xe3b1, 0xe3cc, 0xe3bd, 0xbb62, 0xe3d0, 0xbb5f, 0xe3cf, 0xe3c9,
+ 0xe3ce, 0xe3d1, 0xe773, 0xe774, 0xe767, 0xe766, 0xe762, 0xbdb4,
+ 0xbdac, 0xe776, 0xe775, 0xdfa9, 0xe75f, 0xe763, 0xe75d, 0xe770,
+ 0xe761, 0xe777, 0xe75a, 0xe758, 0xe764, 0xe76e, 0xe769, 0xbdb6,
+ 0xe74f, 0xe76d, 0xbdb7, 0xdfbd, 0xe75b, 0xe752, 0xe755, 0xe77b,
+ 0xe75c, 0xe753, 0xe751, 0xe74e, 0xbdb0, 0xe765, 0xbdaf, 0xbdb3,
+ 0xe760, 0xe768, 0xbda9, 0xe778, 0xe77c, 0xbdab, 0xe757, 0xe76b,
+ 0xe76f, 0xe754, 0xe779, 0xbdb2, 0xbdb1, 0xe74c, 0xbdb5, 0xe772,
+ 0xe756, 0xe76a, 0xe750, 0xe75e, 0xe759, 0xbdad, 0xbdae, 0xe76c,
+ 0xe77d, 0xe77a, 0xe771, 0xe74d, 0xbdaa, 0xeb49, 0xeb40, 0xeb43,
+ 0xbfbb, 0xeb45, 0xeaf9, 0xeb41, 0xeb47, 0xbfb8, 0xbfbc, 0xbfb6,
+ 0xeafb, 0xeb4c, 0xeb46, 0xeafc, 0xeb55, 0xeb4f, 0xeaf8, 0xee46,
+ 0xeafe, 0xbfb7, 0xeb4a, 0xeb54, 0xbfbf, 0xeb51, 0xeafd, 0xeb44,
+ 0xeb48, 0xeb42, 0xeb56, 0xeb53, 0xeb50, 0xbfb9, 0xbfba, 0xbfbe,
+ 0xeafa, 0xeb57, 0xbfbd, 0xeb4d, 0xeb4b, 0xeb4e, 0xee53, 0xee40,
+ 0xee45, 0xee52, 0xee44, 0xedfb, 0xee41, 0xc1a2, 0xedf4, 0xee4d,
+ 0xee4f, 0xedf3, 0xc1a1, 0xee51, 0xee49, 0xc1a8, 0xee50, 0xee42,
+ 0xc1aa, 0xedf9, 0xeb52, 0xee4a, 0xee47, 0xedf5, 0xee55, 0xc1a4,
+ 0xc1a5, 0xedf7, 0xee48, 0xee54, 0xee4b, 0xedfd, 0xc1a7, 0xc1a3,
+ 0xee4c, 0xedfe, 0xee56, 0xedf8, 0xee43, 0xee4e, 0xedfa, 0xedfc,
+ 0xc2cb, 0xedf6, 0xc1a9, 0xc2c4, 0xc17e, 0xc1a6, 0xc2c8, 0xf0b3,
+ 0xf0a9, 0xf0a4, 0xf0aa, 0xf0b4, 0xf0b8, 0xf0b7, 0xc2ca, 0xc2c9,
+ 0xf0ab, 0xf0b9, 0xf0ae, 0xf0a6, 0xf0a8, 0xf0a7, 0xf0ad, 0xf0b2,
+ 0xf0a5, 0xf0ac, 0xf0b1, 0xc2c7, 0xf0af, 0xc2c5, 0xf0b0, 0xc2c3,
+ 0xc2c6, 0xf2d5, 0xf0b5, 0xc3c2, 0xf2cd, 0xf2d1, 0xf2c9, 0xf2cc,
+ 0xf2d4, 0xc3c0, 0xf2d9, 0xf2d2, 0xf2ca, 0xf2da, 0xf2d3, 0xc3c3,
+ 0xc3c4, 0xf2d7, 0xf2cb, 0xc3bf, 0xc3c1, 0xf2c6, 0xf2ce, 0xf2c8,
+ 0xf2d8, 0xf2d6, 0xf2c7, 0xf2cf, 0xf4be, 0xc3c5, 0xf2d0, 0xc4a7,
+ 0xc4a9, 0xc4a6, 0xf4c3, 0xf4bb, 0xf4b9, 0xf4bd, 0xf4ba, 0xf4bf,
+ 0xf4c1, 0xc4aa, 0xc4ac, 0xf4c0, 0xc4ad, 0xc4ab, 0xf4c2, 0xc4a8,
+ 0xc4f4, 0xf5f1, 0xf5f7, 0xc4f6, 0xf4bc, 0xf5f6, 0xf5fd, 0xf5f4,
+ 0xf5fb, 0xf5fa, 0xf4b8, 0xf5f5, 0xf0b6, 0xf5fe, 0xf5f3, 0xf5f8,
+ 0xf5fc, 0xf5f2, 0xf74a, 0xc4f5, 0xf5f9, 0xf7f4, 0xf74b, 0xf749,
+ 0xf747, 0xf748, 0xf74c, 0xc5d9, 0xf7f2, 0xf7f0, 0xf7f5, 0xf7f3,
+ 0xf7f6, 0xc5da, 0xf7f1, 0xf8bc, 0xf945, 0xf946, 0xf947, 0xf9c7,
+ 0xf9bd, 0xca4f, 0xaaea, 0xad68, 0xd3b8, 0xd3b7, 0xb040, 0xb342,
+ 0xd77c, 0xd77b, 0xb5ea, 0xb8b8, 0xb8b7, 0xb8b9, 0xe3d4, 0xe77e,
+ 0xeb58, 0xeb5a, 0xeb59, 0xc1ab, 0xee57, 0xf0ba, 0xf9a5, 0xa6e4,
+ 0xcdc9, 0xcdca, 0xcdc8, 0xcdc7, 0xaaeb, 0xd0a9, 0xd0a7, 0xd0a6,
+ 0xad69, 0xad6b, 0xad6a, 0xd0a8, 0xd3c4, 0xd3c1, 0xd3bf, 0xb041,
+ 0xd3c2, 0xb046, 0xd3bc, 0xd3cb, 0xd3cd, 0xd3bd, 0xb043, 0xd3ce,
+ 0xd3c9, 0xd3bb, 0xd3c0, 0xd3ca, 0xd3c6, 0xd3c3, 0xb048, 0xd3cc,
+ 0xd3be, 0xd3c7, 0xd3b9, 0xb047, 0xb044, 0xd3c5, 0xd3c8, 0xd3ba,
+ 0xb045, 0xb042, 0xb34c, 0xd7a5, 0xb34b, 0xd7a8, 0xd7ab, 0xb348,
+ 0xb346, 0xd77e, 0xd7a9, 0xd7a7, 0xd7a4, 0xd7ac, 0xd7ad, 0xd7af,
+ 0xd7b0, 0xd77d, 0xb345, 0xd7a2, 0xd7a1, 0xd7ae, 0xb347, 0xd7a3,
+ 0xb349, 0xb344, 0xd7a6, 0xb34d, 0xb34a, 0xd7aa, 0xb5f1, 0xdbbf,
+ 0xdbb4, 0xb5ee, 0xdfe7, 0xdbbd, 0xdbb1, 0xb5ec, 0xdbb6, 0xb5ef,
+ 0xdbba, 0xdbb8, 0xb5f2, 0xb5eb, 0xdbb2, 0xdbb5, 0xb5f0, 0xdbb3,
+ 0xdbbe, 0xdbbc, 0xdbb7, 0xdbb9, 0xdbbb, 0xb5ed, 0xdfe8, 0xdfee,
+ 0xdfe4, 0xdfea, 0xb8ba, 0xdfe6, 0xb8c0, 0xb8bf, 0xb8be, 0xdfed,
+ 0xb8c1, 0xb8c2, 0xdfe3, 0xdff0, 0xb8c3, 0xb8bd, 0xb8bc, 0xdfec,
+ 0xb8c4, 0xdfe2, 0xdfe5, 0xdfef, 0xdfeb, 0xe3f4, 0xe3e9, 0xb8bb,
+ 0xbb6a, 0xe3dd, 0xe3f2, 0xe3de, 0xbb65, 0xe3db, 0xe3e4, 0xe3dc,
+ 0xbb67, 0xe3d6, 0xe3f1, 0xbb68, 0xe3ee, 0xe3ef, 0xe3d7, 0xbb6d,
+ 0xe3e6, 0xe3e0, 0xe3e7, 0xe3da, 0xe3f3, 0xe3eb, 0xe3e5, 0xe3d5,
+ 0xbb69, 0xe3ec, 0xbb6c, 0xe3f0, 0xe3ea, 0xbb66, 0xe3e8, 0xe3e2,
+ 0xbb64, 0xe3d9, 0xe3e1, 0xe3ed, 0xe3df, 0xe3e3, 0xbdc1, 0xdfe9,
+ 0xe7b2, 0xe7bb, 0xe7b1, 0xe7ad, 0xe7aa, 0xbdc2, 0xe7a8, 0xbb6b,
+ 0xe7a1, 0xbdc0, 0xe7a7, 0xbdbf, 0xe7ac, 0xe7a9, 0xe7b9, 0xe7b4,
+ 0xe7ae, 0xe7b3, 0xbdbb, 0xe7ab, 0xe7be, 0xe7a2, 0xe7a3, 0xe7ba,
+ 0xbdbc, 0xe7bf, 0xbdbe, 0xe7c0, 0xe7b0, 0xe3d8, 0xe7b6, 0xe7af,
+ 0xe7b8, 0xe7b5, 0xe7a6, 0xbdb9, 0xe7bd, 0xbdba, 0xe7a4, 0xbdbd,
+ 0xeb64, 0xe7b7, 0xe7bc, 0xeb61, 0xbdb8, 0xbfc0, 0xeb6b, 0xeb67,
+ 0xeb65, 0xeb60, 0xeb6f, 0xbfc4, 0xeb5c, 0xeb68, 0xeb69, 0xeb5f,
+ 0xeb5e, 0xeb6c, 0xeb62, 0xeb5d, 0xeb63, 0xeb6e, 0xeb5b, 0xeb6d,
+ 0xeb6a, 0xbfc2, 0xbfc1, 0xbfc3, 0xeb66, 0xf0cb, 0xee59, 0xc1b1,
+ 0xee5d, 0xee5a, 0xee61, 0xee67, 0xee5c, 0xee70, 0xc1ae, 0xee6a,
+ 0xee5f, 0xee6b, 0xee66, 0xee6d, 0xee5e, 0xc1b3, 0xc1b2, 0xee60,
+ 0xee6e, 0xee58, 0xee6c, 0xc1ac, 0xee64, 0xee63, 0xee68, 0xee5b,
+ 0xc1b0, 0xc1b4, 0xee62, 0xee69, 0xc1b5, 0xee65, 0xc1ad, 0xc1af,
+ 0xf0c7, 0xf0c5, 0xf0cc, 0xf0c9, 0xf0cd, 0xf0be, 0xf0c6, 0xf0d1,
+ 0xee6f, 0xf0c2, 0xc2cf, 0xe7a5, 0xf0bd, 0xf0ca, 0xf0c4, 0xf0c1,
+ 0xf0bc, 0xf0bb, 0xf0d0, 0xf0c0, 0xf0bf, 0xc2cd, 0xf0c8, 0xc2cc,
+ 0xc2ce, 0xf0c3, 0xf0cf, 0xf2de, 0xf2df, 0xc3c9, 0xf2dc, 0xc3c6,
+ 0xf2e4, 0xc3ca, 0xf2e6, 0xf2db, 0xf0ce, 0xf2e8, 0xf2dd, 0xc3c7,
+ 0xf2e3, 0xf2e5, 0xf2e0, 0xf2e7, 0xf2e2, 0xf2e1, 0xc3c8, 0xf4c5,
+ 0xf4c6, 0xf4c8, 0xc4ae, 0xc4af, 0xf4c9, 0xf4c7, 0xf4c4, 0xf642,
+ 0xf645, 0xf641, 0xc4fa, 0xf643, 0xc4f9, 0xc4f8, 0xc4f7, 0xf644,
+ 0xf751, 0xf74f, 0xf74e, 0xf640, 0xf750, 0xf646, 0xf74d, 0xf7f9,
+ 0xf7d7, 0xf7f7, 0xc5db, 0xf7f8, 0xf7fa, 0xf8bf, 0xc5fa, 0xf8be,
+ 0xf8bd, 0xc5fb, 0xc65a, 0xf96e, 0xf9a7, 0xf9a6, 0xf9a8, 0xa6e5,
+ 0xd0aa, 0xd3cf, 0xd3d0, 0xdbc0, 0xf647, 0xf8c0, 0xa6e6, 0xad6c,
+ 0xd0ab, 0xd7b1, 0xb34e, 0xdbc2, 0xdbc1, 0xb5f3, 0xb8c5, 0xe7c1,
+ 0xbdc3, 0xbdc4, 0xbfc5, 0xc5fc, 0xa6e7, 0xd0ac, 0xaaed, 0xd0ae,
+ 0xd0ad, 0xad6d, 0xd3d1, 0xd3d8, 0xb049, 0xd3d6, 0xd3d4, 0xd3db,
+ 0xd3d2, 0xd3d3, 0xb04a, 0xb04e, 0xd3dc, 0xb04d, 0xd3da, 0xd3d7,
+ 0xd3d5, 0xb04b, 0xb04c, 0xd3d9, 0xb350, 0xd7b2, 0xb355, 0xd7c2,
+ 0xb354, 0xd7c4, 0xd7b8, 0xb352, 0xd7c3, 0xd7b3, 0xb353, 0xd7bf,
+ 0xd7bb, 0xd7bd, 0xd7b7, 0xd7be, 0xb34f, 0xd7ba, 0xd7b9, 0xd7b5,
+ 0xd7c0, 0xd7bc, 0xd7b4, 0xd7b6, 0xb351, 0xd7c1, 0xb5f6, 0xdbcd,
+ 0xdbc9, 0xdbcb, 0xdbc6, 0xdbc5, 0xdbc3, 0xdbca, 0xdbcc, 0xdbc8,
+ 0xdbc7, 0xb5f4, 0xb5f5, 0xdbcf, 0xb8cd, 0xdff2, 0xdff8, 0xdff3,
+ 0xdff4, 0xdff9, 0xb8cf, 0xb8c7, 0xb8ce, 0xdff1, 0xdbc4, 0xb8ca,
+ 0xb8c8, 0xdff7, 0xdff6, 0xb8c9, 0xb8cb, 0xdff5, 0xb8c6, 0xb8cc,
+ 0xe3f6, 0xbb74, 0xe442, 0xe441, 0xe3fb, 0xbb76, 0xe440, 0xe3f7,
+ 0xe3f8, 0xbb6e, 0xbb70, 0xe3fd, 0xe3f5, 0xbb72, 0xbb71, 0xe3f9,
+ 0xe3fe, 0xe3fc, 0xbb73, 0xe3fa, 0xdbce, 0xbb6f, 0xe7c2, 0xe7c9,
+ 0xbdc6, 0xe7cd, 0xbdca, 0xe7c5, 0xe7c3, 0xe7cc, 0xbdc5, 0xe7cb,
+ 0xbdc7, 0xbdc8, 0xe7c4, 0xbdc9, 0xe7ca, 0xe7c6, 0xe7c7, 0xe7c8,
+ 0xbb75, 0xeb70, 0xeb7c, 0xbfca, 0xeb77, 0xeb79, 0xbfc8, 0xeb71,
+ 0xeb75, 0xeb78, 0xbfc6, 0xbfc9, 0xeb7b, 0xeb73, 0xeb74, 0xeb7a,
+ 0xeb72, 0xeb76, 0xbfc7, 0xee72, 0xee71, 0xc1b7, 0xee77, 0xc1b9,
+ 0xc1b6, 0xee73, 0xc1ba, 0xee74, 0xee75, 0xee78, 0xc1b8, 0xf0d6,
+ 0xf0d9, 0xf0d3, 0xf0d5, 0xf0d4, 0xf0d7, 0xf0d8, 0xee76, 0xf0d2,
+ 0xc3cd, 0xf2ec, 0xf2ef, 0xf2f1, 0xf2ea, 0xf2eb, 0xf2ee, 0xf2f0,
+ 0xc3ce, 0xc3cc, 0xc3cb, 0xf2ed, 0xf2e9, 0xf4ca, 0xc4b0, 0xf4cb,
+ 0xf649, 0xc4fb, 0xf64b, 0xc4fc, 0xf648, 0xf64a, 0xc5a8, 0xf752,
+ 0xc5a7, 0xf7fd, 0xf7fc, 0xf7fb, 0xf948, 0xf949, 0xf94b, 0xf94a,
+ 0xca50, 0xa6e8, 0xad6e, 0xd7c5, 0xb5f7, 0xdffa, 0xc2d0, 0xf2f2,
+ 0xa8a3, 0xb357, 0xb356, 0xdbd0, 0xb5f8, 0xdbd2, 0xdbd1, 0xdffb,
+ 0xb8d0, 0xe443, 0xe446, 0xe445, 0xe444, 0xe7ce, 0xe7d0, 0xe7cf,
+ 0xbfcc, 0xbfcb, 0xc1bb, 0xee79, 0xee7b, 0xee7a, 0xc2d1, 0xf2f4,
+ 0xf2f3, 0xf4cc, 0xc4b1, 0xc4fd, 0xf754, 0xf753, 0xc65b, 0xa8a4,
+ 0xd0af, 0xad6f, 0xd7c8, 0xd7c6, 0xd7c7, 0xdbd4, 0xdbd5, 0xe043,
+ 0xdbd3, 0xdffc, 0xe041, 0xe040, 0xe042, 0xb8d1, 0xdffe, 0xdffd,
+ 0xe044, 0xe449, 0xe447, 0xe448, 0xe7d3, 0xe7d1, 0xe7d2, 0xeb7d,
+ 0xee7c, 0xee7d, 0xc2d2, 0xf2f5, 0xf4cd, 0xc4b2, 0xf64c, 0xf755,
+ 0xc5a9, 0xf7fe, 0xf94c, 0xa8a5, 0xad71, 0xad72, 0xd0b0, 0xd0b1,
+ 0xad70, 0xb054, 0xb052, 0xb051, 0xb058, 0xb050, 0xb059, 0xd3dd,
+ 0xb056, 0xb053, 0xb057, 0xb055, 0xb04f, 0xb35f, 0xb359, 0xd7cc,
+ 0xb35e, 0xb360, 0xb35a, 0xb35b, 0xd7ca, 0xb358, 0xd7cb, 0xb35d,
+ 0xd7c9, 0xb35c, 0xb644, 0xb646, 0xdbd8, 0xb645, 0xb5f9, 0xb5fd,
+ 0xb8e4, 0xe049, 0xdbda, 0xb5fe, 0xdbdd, 0xdbde, 0xb643, 0xdbe0,
+ 0xdbe2, 0xdbe3, 0xdbd7, 0xdbd6, 0xdbe4, 0xb642, 0xdbe1, 0xdbdf,
+ 0xb640, 0xb5fb, 0xb647, 0xdbdb, 0xdbdc, 0xdbd9, 0xb641, 0xb5fc,
+ 0xb5fa, 0xe048, 0xb8df, 0xb8da, 0xb8d5, 0xb8e5, 0xb8d6, 0xb8d2,
+ 0xb8e1, 0xb8de, 0xb8e0, 0xb8d7, 0xb8dc, 0xb8d3, 0xb8d4, 0xe050,
+ 0xe04d, 0xe045, 0xe04a, 0xb8e2, 0xe051, 0xb8e3, 0xb8d9, 0xe047,
+ 0xe04f, 0xe04b, 0xe04e, 0xe04c, 0xb8dd, 0xe046, 0xb8d8, 0xe44c,
+ 0xbb78, 0xbb7b, 0xe44e, 0xbba5, 0xe44d, 0xbb7d, 0xbdcf, 0xe44f,
+ 0xbba4, 0xe44b, 0xbba6, 0xbb79, 0xb8db, 0xbb7c, 0xbb7a, 0xbb7e,
+ 0xbba2, 0xbb77, 0xbba7, 0xbba3, 0xbba1, 0xe44a, 0xbdd6, 0xbdd2,
+ 0xbdd9, 0xe7d6, 0xbdda, 0xe7e2, 0xe7db, 0xbdcb, 0xe7e3, 0xe7dd,
+ 0xbdd5, 0xe7de, 0xbdd4, 0xe7e1, 0xbdce, 0xe7df, 0xe7d5, 0xbdcd,
+ 0xebaa, 0xbdd3, 0xbdd0, 0xbdd8, 0xe7d4, 0xe7d8, 0xbdcc, 0xe7d7,
+ 0xe7d9, 0xe7da, 0xbdd7, 0xe7dc, 0xe7e0, 0xe7e4, 0xbddb, 0xbfd2,
+ 0xeba5, 0xebab, 0xeba8, 0xeb7e, 0xebac, 0xeba1, 0xeba7, 0xbfcd,
+ 0xbfd3, 0xebad, 0xbfcf, 0xbfd9, 0xbfd4, 0xebaf, 0xeba9, 0xbfd0,
+ 0xeba2, 0xbfda, 0xeba3, 0xeba4, 0xbfdb, 0xbfd8, 0xbdd1, 0xbfce,
+ 0xebb0, 0xbfdc, 0xbfd5, 0xebae, 0xbfd1, 0xbfd6, 0xbfd7, 0xc1c3,
+ 0xeea4, 0xeead, 0xeeaa, 0xeeac, 0xc1c0, 0xeea5, 0xeeab, 0xc1bc,
+ 0xeea7, 0xc1c4, 0xeea3, 0xeea8, 0xeeaf, 0xeba6, 0xeea9, 0xeea2,
+ 0xc1bd, 0xeea1, 0xc1be, 0xeeb0, 0xc1bf, 0xeeae, 0xc1c2, 0xee7e,
+ 0xc1c1, 0xeea6, 0xf0dc, 0xf0ea, 0xf0e5, 0xf0e7, 0xf0db, 0xc2d3,
+ 0xf0da, 0xc2d6, 0xc2d5, 0xf0e9, 0xf0e1, 0xf0de, 0xf0e4, 0xf0dd,
+ 0xf0df, 0xf0e8, 0xf0e6, 0xc2d4, 0xf0ed, 0xf0eb, 0xf0e2, 0xf0ec,
+ 0xf0e3, 0xf2f9, 0xc3cf, 0xf341, 0xf64f, 0xc3d6, 0xf0e0, 0xf2f7,
+ 0xc3d2, 0xf2f8, 0xf2fd, 0xc3d4, 0xc3d5, 0xf2f6, 0xf340, 0xf342,
+ 0xf2fa, 0xf2fc, 0xf2fe, 0xf2fb, 0xf343, 0xc3d1, 0xc3d7, 0xc3d3,
+ 0xc3d0, 0xf4d0, 0xc4b7, 0xf4ce, 0xf4d2, 0xf4d3, 0xc4b5, 0xf4d4,
+ 0xf4d1, 0xf4cf, 0xc4b8, 0xc4b4, 0xf4d5, 0xc4b6, 0xc4b3, 0xc4fe,
+ 0xc540, 0xf64e, 0xf64d, 0xf650, 0xf651, 0xc541, 0xf756, 0xf75b,
+ 0xc5aa, 0xf758, 0xf757, 0xf75a, 0xf759, 0xf843, 0xc5dc, 0xf842,
+ 0xf840, 0xf841, 0xc5fe, 0xc5fd, 0xf8c1, 0xf8c2, 0xc640, 0xf94d,
+ 0xf94e, 0xc667, 0xc66d, 0xf9a9, 0xf9c8, 0xa8a6, 0xd7cd, 0xd7ce,
+ 0xe052, 0xe450, 0xe7e5, 0xc1c6, 0xc1c5, 0xf0ee, 0xf344, 0xf844,
+ 0xa8a7, 0xd3de, 0xb05a, 0xb361, 0xe054, 0xe053, 0xbddc, 0xe7e6,
+ 0xbddd, 0xeeb1, 0xc2d7, 0xc676, 0xa8a8, 0xcdcb, 0xd3df, 0xb362,
+ 0xd7cf, 0xd7d0, 0xdbe5, 0xb648, 0xb8e6, 0xe056, 0xe055, 0xe057,
+ 0xe451, 0xe452, 0xbba8, 0xbfdd, 0xbdde, 0xbfde, 0xeeb5, 0xeeb2,
+ 0xeeb4, 0xeeb3, 0xc1c7, 0xf0ef, 0xf346, 0xf345, 0xcba4, 0xb05c,
+ 0xb05b, 0xd3e0, 0xd7d1, 0xdbe7, 0xdbe6, 0xb649, 0xe059, 0xe05a,
+ 0xe058, 0xb8e8, 0xb8e7, 0xbbaa, 0xbba9, 0xe7e7, 0xebb3, 0xebb1,
+ 0xebb2, 0xbfdf, 0xeeb7, 0xeeb6, 0xf0f2, 0xf0f1, 0xf0f0, 0xf347,
+ 0xf9aa, 0xa8a9, 0xad73, 0xad74, 0xb05d, 0xb05e, 0xd3e2, 0xd3e1,
+ 0xd7d2, 0xb368, 0xb366, 0xb363, 0xb367, 0xb365, 0xb364, 0xb64a,
+ 0xdbea, 0xb8ed, 0xb64c, 0xb651, 0xdbec, 0xb653, 0xb652, 0xb655,
+ 0xdbeb, 0xdbe8, 0xb64f, 0xb64b, 0xb64d, 0xdbe9, 0xb654, 0xb650,
+ 0xb64e, 0xb8ef, 0xb8ee, 0xb8ec, 0xb8f0, 0xb8ea, 0xb8eb, 0xb8e9,
+ 0xe05b, 0xe454, 0xbbac, 0xbbad, 0xbbab, 0xe453, 0xe455, 0xe7ea,
+ 0xe7ec, 0xbde7, 0xe7ed, 0xbde0, 0xe7e9, 0xbddf, 0xbde9, 0xbde5,
+ 0xbde6, 0xbde2, 0xe7e8, 0xbde1, 0xe7ee, 0xe7eb, 0xbde8, 0xbde3,
+ 0xbde4, 0xebb5, 0xebb7, 0xebb6, 0xebb8, 0xbfe0, 0xebb4, 0xc1cb,
+ 0xeeb8, 0xc1c8, 0xc1cc, 0xc1ca, 0xc1c9, 0xf0f3, 0xf0f6, 0xf0f5,
+ 0xf0f4, 0xc2d8, 0xf348, 0xf349, 0xc3d8, 0xf34a, 0xc3d9, 0xc4ba,
+ 0xc4b9, 0xf652, 0xc542, 0xf653, 0xf75c, 0xc5ab, 0xc5ac, 0xf845,
+ 0xc642, 0xa8aa, 0xb36a, 0xb369, 0xe05c, 0xe05d, 0xbbae, 0xebb9,
+ 0xbdea, 0xebba, 0xeeb9, 0xa8ab, 0xd0b2, 0xad76, 0xad75, 0xd3e3,
+ 0xb05f, 0xd3e4, 0xd7d5, 0xd7d4, 0xd7d3, 0xdbee, 0xb658, 0xdbed,
+ 0xb657, 0xdbef, 0xb656, 0xe05f, 0xe062, 0xe060, 0xe061, 0xe065,
+ 0xe05e, 0xe066, 0xe063, 0xe064, 0xbbb0, 0xe456, 0xbbaf, 0xe7f2,
+ 0xe7f0, 0xbdeb, 0xe7ef, 0xe7f1, 0xbdec, 0xebbb, 0xebbc, 0xc1cd,
+ 0xf34c, 0xf34e, 0xf34b, 0xf34d, 0xf4d6, 0xf654, 0xf96f, 0xa8ac,
+ 0xad77, 0xd3e5, 0xd3e7, 0xd3e6, 0xd7d8, 0xb36c, 0xd7d6, 0xb36b,
+ 0xd7d9, 0xd7da, 0xd7d7, 0xdbfb, 0xb660, 0xdbf3, 0xdbf9, 0xb65b,
+ 0xb65e, 0xdbf2, 0xb659, 0xdbf6, 0xe06c, 0xb65d, 0xdbf1, 0xdbf7,
+ 0xdbf4, 0xdbfa, 0xdbf0, 0xdbf8, 0xb65c, 0xb65f, 0xdbf5, 0xb65a,
+ 0xb8f2, 0xe068, 0xb8f1, 0xe06f, 0xe06e, 0xb8f8, 0xb8f9, 0xe070,
+ 0xb8f3, 0xe06d, 0xb8f7, 0xe072, 0xe069, 0xe06b, 0xb8f4, 0xe067,
+ 0xe06a, 0xe071, 0xb8f5, 0xe073, 0xb8f6, 0xbbb1, 0xe45b, 0xe461,
+ 0xe459, 0xe462, 0xe458, 0xe45d, 0xe463, 0xe460, 0xe45f, 0xe45e,
+ 0xe457, 0xe45c, 0xe45a, 0xbdf1, 0xbdee, 0xe7fb, 0xe841, 0xe843,
+ 0xe840, 0xe7f8, 0xe7fa, 0xe845, 0xe842, 0xe7fc, 0xe846, 0xe7f9,
+ 0xe844, 0xbdef, 0xbdf5, 0xbdf3, 0xe7f3, 0xbdf4, 0xbdf0, 0xe7f4,
+ 0xe7f6, 0xe7f5, 0xe7fd, 0xe7fe, 0xbdf2, 0xbded, 0xe7f7, 0xebc6,
+ 0xbfe2, 0xebbd, 0xbfe3, 0xbfe6, 0xebc2, 0xebbf, 0xbfe5, 0xebc3,
+ 0xebc4, 0xebbe, 0xebc7, 0xebc0, 0xebc5, 0xbfe4, 0xbfe1, 0xebc1,
+ 0xeebf, 0xc1d0, 0xc1ce, 0xc1d1, 0xc1cf, 0xeebe, 0xeebb, 0xeeba,
+ 0xeebd, 0xeebc, 0xf145, 0xc2de, 0xf0fb, 0xf0fa, 0xc2d9, 0xf141,
+ 0xf140, 0xf0f7, 0xf143, 0xf0fc, 0xc2dd, 0xf0f9, 0xf142, 0xf0f8,
+ 0xc2da, 0xc2dc, 0xf0fd, 0xc2db, 0xf0fe, 0xf144, 0xf352, 0xc3de,
+ 0xf34f, 0xf353, 0xc3db, 0xf351, 0xc3e0, 0xc3dd, 0xf350, 0xc3df,
+ 0xf354, 0xc3da, 0xc4bc, 0xc4be, 0xf4d9, 0xc4bd, 0xf4d7, 0xc3dc,
+ 0xf4d8, 0xc4bb, 0xc543, 0xc545, 0xf656, 0xc544, 0xf655, 0xf761,
+ 0xc5ad, 0xf760, 0xc5ae, 0xf75e, 0xf75d, 0xf762, 0xf763, 0xf846,
+ 0xf75f, 0xf8c6, 0xf8c3, 0xf8c4, 0xf8c5, 0xc65c, 0xf951, 0xf950,
+ 0xf94f, 0xf970, 0xf9be, 0xf9ab, 0xc66e, 0xa8ad, 0xb060, 0xb8fa,
+ 0xbdf6, 0xebc8, 0xc2df, 0xf355, 0xf9ac, 0xa8ae, 0xaaee, 0xad79,
+ 0xad78, 0xb063, 0xd3e8, 0xb061, 0xd3e9, 0xb062, 0xd7df, 0xd7db,
+ 0xb36d, 0xd7de, 0xd7dd, 0xd7dc, 0xb36e, 0xd7e0, 0xd7e1, 0xdc43,
+ 0xdc41, 0xdc45, 0xdc46, 0xdc4c, 0xdc48, 0xdc4a, 0xdc42, 0xdbfc,
+ 0xdc49, 0xdc4b, 0xdc44, 0xdc47, 0xdbfd, 0xb662, 0xdc40, 0xdbfe,
+ 0xb661, 0xb663, 0xb8fd, 0xe075, 0xe077, 0xe076, 0xe07b, 0xb8fb,
+ 0xe078, 0xe074, 0xe079, 0xe07a, 0xb8fc, 0xb8fe, 0xe07c, 0xe467,
+ 0xe466, 0xe464, 0xe465, 0xbbb3, 0xbbb5, 0xbbb2, 0xbbb4, 0xe84d,
+ 0xe84e, 0xe849, 0xe84a, 0xbdf8, 0xbdfd, 0xbdf7, 0xbdfe, 0xbdf9,
+ 0xe84b, 0xe84c, 0xe848, 0xbe40, 0xbdfb, 0xbdfa, 0xbdfc, 0xe847,
+ 0xebca, 0xbfe8, 0xebcc, 0xbfea, 0xebcf, 0xebcb, 0xebc9, 0xebce,
+ 0xbfe9, 0xebcd, 0xbfe7, 0xc1d3, 0xc1d6, 0xeec1, 0xc1d4, 0xeec0,
+ 0xc1d2, 0xc1d5, 0xf146, 0xf147, 0xf148, 0xc2e0, 0xf149, 0xc2e1,
+ 0xc3e2, 0xf358, 0xf359, 0xf357, 0xf356, 0xf35a, 0xc3e1, 0xf4dd,
+ 0xf4db, 0xf4dc, 0xf4de, 0xf4da, 0xf4df, 0xf658, 0xf659, 0xf657,
+ 0xc546, 0xf764, 0xc5af, 0xf765, 0xf848, 0xf847, 0xa8af, 0xb664,
+ 0xb940, 0xbbb6, 0xbfec, 0xbfeb, 0xc3e3, 0xc47c, 0xc547, 0xa8b0,
+ 0xb064, 0xb941, 0xf35b, 0xcba6, 0xa8b1, 0xa8b4, 0xa8b3, 0xa8b2,
+ 0xcba5, 0xcdcd, 0xcdcf, 0xaaef, 0xaaf1, 0xcdcc, 0xcdce, 0xaaf0,
+ 0xcdd1, 0xcdd0, 0xcdd2, 0xd0b6, 0xd0b4, 0xad7c, 0xd0b3, 0xada3,
+ 0xad7e, 0xad7b, 0xada4, 0xad7d, 0xada2, 0xada1, 0xd0b5, 0xad7a,
+ 0xb06a, 0xd3eb, 0xd3f1, 0xb067, 0xb06e, 0xb069, 0xd3ee, 0xd3f0,
+ 0xb06c, 0xd3ea, 0xd3ed, 0xb068, 0xb065, 0xd3ec, 0xb06b, 0xd3ef,
+ 0xb06d, 0xb066, 0xd7e3, 0xd7e6, 0xb370, 0xb37a, 0xb376, 0xd7e4,
+ 0xb37e, 0xb377, 0xb37c, 0xb372, 0xb36f, 0xb371, 0xb37d, 0xd7e5,
+ 0xb375, 0xb378, 0xb374, 0xb379, 0xd7e7, 0xb37b, 0xb373, 0xd7e2,
+ 0xdc4d, 0xb665, 0xdc4f, 0xb667, 0xb669, 0xdc4e, 0xb666, 0xb66a,
+ 0xb668, 0xb947, 0xe0a3, 0xb94f, 0xe07e, 0xb950, 0xb945, 0xe0a1,
+ 0xb94a, 0xe0a2, 0xb943, 0xb942, 0xb94d, 0xb94c, 0xb94b, 0xb949,
+ 0xb94e, 0xe07d, 0xb944, 0xb946, 0xb948, 0xbbb8, 0xbbbb, 0xbbbf,
+ 0xbbb9, 0xbbbe, 0xbbbc, 0xbbb7, 0xbbbd, 0xbbba, 0xe852, 0xbe43,
+ 0xbe41, 0xe853, 0xbe44, 0xbe42, 0xe851, 0xe850, 0xbff0, 0xe84f,
+ 0xbfee, 0xbfed, 0xebd0, 0xbe45, 0xbfef, 0xebd1, 0xbff2, 0xebd2,
+ 0xbff1, 0xc1d8, 0xeec3, 0xc1d7, 0xc1dc, 0xc1da, 0xc1db, 0xc2e3,
+ 0xc1d9, 0xeec2, 0xebd3, 0xc2e2, 0xc2e4, 0xc3e4, 0xc3e5, 0xf4e0,
+ 0xc5de, 0xc5dd, 0xa8b6, 0xca55, 0xb06f, 0xca52, 0xca53, 0xca51,
+ 0xca54, 0xcbaa, 0xcba7, 0xcbac, 0xcba8, 0xa8b7, 0xa8ba, 0xcba9,
+ 0xa8b9, 0xcbab, 0xa8b8, 0xcdd5, 0xcdd7, 0xaaf4, 0xcdd3, 0xcdd6,
+ 0xcdd4, 0xaaf2, 0xaaf5, 0xaaf3, 0xd0b8, 0xd0bc, 0xd0b9, 0xada7,
+ 0xada8, 0xd0bb, 0xd0bd, 0xd0bf, 0xada5, 0xd0be, 0xada6, 0xd7ee,
+ 0xd0ba, 0xd3f2, 0xd3fb, 0xd3f9, 0xd3f4, 0xd3f5, 0xd3fa, 0xd3fc,
+ 0xb071, 0xd3f7, 0xd3f3, 0xb070, 0xb072, 0xd3f6, 0xd3fd, 0xd3f8,
+ 0xb3a1, 0xd7f1, 0xd7e9, 0xd7ef, 0xd7f0, 0xb3a2, 0xd7e8, 0xd7ea,
+ 0xd0b7, 0xd7ec, 0xd7ed, 0xd7eb, 0xb66c, 0xdc56, 0xebd4, 0xdc57,
+ 0xdc54, 0xb3a3, 0xb66e, 0xdc53, 0xdc59, 0xdc58, 0xb66b, 0xdc5c,
+ 0xdc52, 0xdc5b, 0xdc50, 0xdc5a, 0xdc55, 0xb66d, 0xe0aa, 0xe0a5,
+ 0xe0ab, 0xe0a6, 0xe0a4, 0xe0a7, 0xb951, 0xe0a9, 0xe0a8, 0xb952,
+ 0xbbc1, 0xbbc0, 0xe46e, 0xe471, 0xe469, 0xe46d, 0xbbc2, 0xe46c,
+ 0xe46a, 0xe470, 0xe46b, 0xe468, 0xe46f, 0xe859, 0xbe48, 0xf14a,
+ 0xe856, 0xe857, 0xe855, 0xdc51, 0xbe47, 0xe85a, 0xe854, 0xbe46,
+ 0xbe49, 0xe858, 0xebd5, 0xbff3, 0xebd6, 0xebd7, 0xeec4, 0xc1dd,
+ 0xf14b, 0xf14c, 0xf14d, 0xf35d, 0xf35c, 0xf4e2, 0xf4e1, 0xf65b,
+ 0xf65c, 0xf65a, 0xf766, 0xc5b0, 0xa8bb, 0xadaa, 0xada9, 0xb075,
+ 0xb074, 0xd440, 0xd441, 0xd3fe, 0xb073, 0xd7f5, 0xd7f6, 0xd7f2,
+ 0xb3a4, 0xd7f3, 0xd7f4, 0xdc5f, 0xdc61, 0xdc5d, 0xdc60, 0xb66f,
+ 0xdc5e, 0xb670, 0xdd73, 0xb955, 0xb954, 0xb953, 0xe0ac, 0xe0ad,
+ 0xe473, 0xe475, 0xbbc6, 0xbbc3, 0xbbc5, 0xbbc4, 0xe474, 0xe472,
+ 0xe861, 0xe85e, 0xe85f, 0xbe4d, 0xe860, 0xe85b, 0xe85c, 0xbe4a,
+ 0xbe4b, 0xe85d, 0xbe4c, 0xebdb, 0xebdc, 0xebd9, 0xebda, 0xbff4,
+ 0xebd8, 0xeec8, 0xeec5, 0xeec7, 0xc1e0, 0xeecb, 0xc1df, 0xeec9,
+ 0xeecc, 0xeeca, 0xeec6, 0xc1de, 0xf14f, 0xf150, 0xf14e, 0xf152,
+ 0xc2e5, 0xc2e6, 0xf35f, 0xc3e7, 0xf151, 0xf35e, 0xc3e6, 0xf4e5,
+ 0xf4e6, 0xc4bf, 0xf4e4, 0xf4e3, 0xf65d, 0xc548, 0xf849, 0xf8c8,
+ 0xf8c7, 0xc643, 0xc65d, 0xf8c9, 0xf971, 0xc66f, 0xa8bc, 0xaaf6,
+ 0xb956, 0xc4c0, 0xa8bd, 0xadab, 0xb3a5, 0xb671, 0xc2e7, 0xaaf7,
+ 0xd0c1, 0xd0c0, 0xd442, 0xb078, 0xb076, 0xb07a, 0xd444, 0xb079,
+ 0xb077, 0xd443, 0xb3a8, 0xd7fc, 0xb3a7, 0xb3a9, 0xd842, 0xb3ab,
+ 0xd7fe, 0xd840, 0xd7f7, 0xb3aa, 0xd843, 0xd7f9, 0xd7fa, 0xd7f8,
+ 0xb3a6, 0xd841, 0xd7fb, 0xd7fd, 0xdc6d, 0xdc6c, 0xdc6a, 0xdc62,
+ 0xdc71, 0xdc65, 0xdc6f, 0xdc76, 0xdc6e, 0xb679, 0xb675, 0xdc63,
+ 0xdc69, 0xb677, 0xdc68, 0xb678, 0xb67a, 0xdc6b, 0xb672, 0xb673,
+ 0xdc77, 0xdc75, 0xdc74, 0xdc66, 0xdc72, 0xb676, 0xb674, 0xdc73,
+ 0xdc64, 0xdc67, 0xdc70, 0xe4ba, 0xe0b7, 0xe0b0, 0xe0c3, 0xe0cc,
+ 0xe0b3, 0xb961, 0xe0c0, 0xb957, 0xb959, 0xb965, 0xe0b1, 0xb95a,
+ 0xb95c, 0xb966, 0xb95b, 0xb964, 0xe0b9, 0xe0ae, 0xb962, 0xe0b8,
+ 0xb95e, 0xe0ca, 0xb963, 0xe0c8, 0xe0bc, 0xe0c6, 0xb960, 0xe0af,
+ 0xe0c9, 0xe0c4, 0xe0cb, 0xb958, 0xb967, 0xb95d, 0xe0b5, 0xe0bd,
+ 0xe0c1, 0xe0c5, 0xb95f, 0xe0b4, 0xe0b2, 0xe0be, 0xe0bb, 0xe0ba,
+ 0xe0bf, 0xe0c2, 0xe0c7, 0xe478, 0xbbc7, 0xe4a4, 0xe47a, 0xbbcc,
+ 0xbbd0, 0xe4ad, 0xe4b5, 0xe4a6, 0xbbc8, 0xe4aa, 0xe0b6, 0xbbc9,
+ 0xe4b1, 0xe4b6, 0xe4ae, 0xe4b0, 0xe4b9, 0xe4b2, 0xe47e, 0xe4a9,
+ 0xbbd1, 0xbbcd, 0xe47c, 0xe4ab, 0xbbcb, 0xe4a5, 0xbbca, 0xe4b3,
+ 0xe4a2, 0xe479, 0xbbce, 0xe4b8, 0xe47b, 0xe4af, 0xe4ac, 0xe4a7,
+ 0xe477, 0xe476, 0xe4a1, 0xe4b4, 0xbbcf, 0xe4b7, 0xe47d, 0xe4a3,
+ 0xbe52, 0xbe5a, 0xbe55, 0xe8a4, 0xe8a1, 0xe867, 0xbe50, 0xbe4f,
+ 0xbe56, 0xe865, 0xbe54, 0xe871, 0xe863, 0xe864, 0xbe4e, 0xe8a3,
+ 0xbe58, 0xe874, 0xe879, 0xe873, 0xebee, 0xe86f, 0xe877, 0xe875,
+ 0xe868, 0xe862, 0xe87d, 0xbe57, 0xe87e, 0xe878, 0xe86d, 0xe86b,
+ 0xe866, 0xe86e, 0xe87b, 0xe86a, 0xe87a, 0xe8a2, 0xbe53, 0xe876,
+ 0xe87c, 0xe872, 0xe86c, 0xbe51, 0xe4a8, 0xe870, 0xbe59, 0xe869,
+ 0xebf4, 0xbff7, 0xebf3, 0xebf0, 0xec44, 0xbffb, 0xec41, 0xebf8,
+ 0xec43, 0xebe9, 0xebf6, 0xbffd, 0xebe1, 0xebdf, 0xec42, 0xec40,
+ 0xebfe, 0xebed, 0xebec, 0xebe2, 0xc040, 0xebe8, 0xebf2, 0xebfd,
+ 0xc043, 0xec45, 0xc1e8, 0xc045, 0xbffe, 0xebe6, 0xebef, 0xebde,
+ 0xebe0, 0xbff5, 0xc042, 0xbffa, 0xebe7, 0xebf7, 0xebf1, 0xc041,
+ 0xebdd, 0xc1e3, 0xebf9, 0xebfc, 0xbffc, 0xebeb, 0xc044, 0xbff9,
+ 0xbff8, 0xebf5, 0xebfb, 0xbff6, 0xebe4, 0xebfa, 0xebe5, 0xebea,
+ 0xeed2, 0xeed7, 0xc1e5, 0xc1e7, 0xeedd, 0xc1e1, 0xeeec, 0xeee3,
+ 0xeed8, 0xeed9, 0xeee2, 0xc1ee, 0xeee1, 0xeed1, 0xeee0, 0xeed4,
+ 0xeeed, 0xc1ed, 0xc1eb, 0xeed5, 0xeee8, 0xeeda, 0xeee7, 0xeee9,
+ 0xeed0, 0xc1e6, 0xeeea, 0xeede, 0xc1ea, 0xeedb, 0xc1ec, 0xeee4,
+ 0xc1e4, 0xeed6, 0xeee5, 0xeedf, 0xebe3, 0xeee6, 0xeed3, 0xc1e9,
+ 0xeeeb, 0xc1e2, 0xeece, 0xf160, 0xf159, 0xc2e9, 0xf154, 0xf163,
+ 0xf15b, 0xeedc, 0xf165, 0xf155, 0xc2e8, 0xf15f, 0xc2ea, 0xc2f2,
+ 0xc2f0, 0xf161, 0xc2f1, 0xf157, 0xf158, 0xf15d, 0xf162, 0xeecd,
+ 0xc2eb, 0xf16a, 0xf167, 0xf16b, 0xf15e, 0xf15a, 0xf168, 0xf36a,
+ 0xf15c, 0xc2ee, 0xc2ed, 0xeecf, 0xc2ef, 0xf164, 0xf166, 0xc2ec,
+ 0xf169, 0xf153, 0xf156, 0xf373, 0xf363, 0xc3eb, 0xf371, 0xf361,
+ 0xc3ec, 0xf36c, 0xf368, 0xc3f1, 0xf372, 0xf362, 0xf365, 0xc3e9,
+ 0xf374, 0xf36d, 0xf370, 0xc3ef, 0xc3f4, 0xc3f2, 0xf369, 0xf364,
+ 0xc3ed, 0xc3ee, 0xf360, 0xc3ea, 0xc3e8, 0xc3f0, 0xf36f, 0xc3f3,
+ 0xf36b, 0xf375, 0xc3f5, 0xf367, 0xf36e, 0xf4f3, 0xf542, 0xf4f5,
+ 0xf4fc, 0xf366, 0xf4fa, 0xf4e9, 0xf540, 0xc4c3, 0xf4ed, 0xf4fe,
+ 0xf4f4, 0xc4c2, 0xf544, 0xf4f6, 0xf4fb, 0xf4fd, 0xf4e7, 0xf541,
+ 0xf4f2, 0xf4f7, 0xf4eb, 0xf4ef, 0xf543, 0xf4f9, 0xf4e8, 0xf4ec,
+ 0xf4ee, 0xf4f8, 0xc4c1, 0xf4f1, 0xf4ea, 0xf4f0, 0xf661, 0xf666,
+ 0xc54f, 0xf668, 0xc549, 0xf664, 0xf66a, 0xc54e, 0xc54a, 0xc54b,
+ 0xf660, 0xf667, 0xc54d, 0xf665, 0xc54c, 0xf65f, 0xf663, 0xf662,
+ 0xf65e, 0xf669, 0xc5b1, 0xf76d, 0xf770, 0xf76c, 0xf76e, 0xf76f,
+ 0xf769, 0xf76a, 0xf767, 0xf76b, 0xf768, 0xc5b2, 0xc5b3, 0xf84b,
+ 0xf84d, 0xf84c, 0xf84e, 0xc5e0, 0xf84a, 0xc5df, 0xc5e1, 0xf8cb,
+ 0xf8cc, 0xc644, 0xf8ca, 0xf953, 0xf952, 0xf954, 0xc65f, 0xf955,
+ 0xc65e, 0xf956, 0xf972, 0xf975, 0xf974, 0xc668, 0xf973, 0xc672,
+ 0xc670, 0xc671, 0xc677, 0xf9c0, 0xf9c1, 0xf9bf, 0xf9c9, 0xaaf8,
+ 0xd844, 0xdc78, 0xe8a5, 0xf376, 0xaaf9, 0xadac, 0xb07b, 0xd845,
+ 0xd846, 0xb3ac, 0xb67d, 0xdc7a, 0xdc79, 0xb6a3, 0xb67c, 0xdc7b,
+ 0xb67e, 0xb6a2, 0xb6a1, 0xb67b, 0xb968, 0xe0d0, 0xe0ce, 0xe0cf,
+ 0xe0cd, 0xbbd2, 0xbbd5, 0xbbd7, 0xbbd6, 0xbbd3, 0xbbd4, 0xe8a7,
+ 0xe8a6, 0xbe5b, 0xe8a8, 0xe8a9, 0xbe5c, 0xec4d, 0xec4b, 0xeef3,
+ 0xec49, 0xec4a, 0xc046, 0xec46, 0xec4e, 0xec48, 0xec4c, 0xeeef,
+ 0xeef1, 0xeef2, 0xc1f3, 0xeeee, 0xc1f2, 0xeef0, 0xc1ef, 0xc1f0,
+ 0xc1f1, 0xec47, 0xc2f5, 0xf16e, 0xf16c, 0xf16d, 0xc2f3, 0xc2f6,
+ 0xc2f4, 0xf377, 0xf378, 0xc3f6, 0xf545, 0xf547, 0xf546, 0xc4c4,
+ 0xc550, 0xf66d, 0xf66c, 0xf66b, 0xaafa, 0xc9aa, 0xca58, 0xa6e9,
+ 0xca56, 0xca59, 0xca57, 0xcbae, 0xa8c1, 0xa8c2, 0xcbb0, 0xa8bf,
+ 0xcbaf, 0xcbad, 0xa8c0, 0xa8be, 0xcdd8, 0xcddb, 0xaafd, 0xcdda,
+ 0xcdd9, 0xaafc, 0xaafb, 0xab40, 0xcddc, 0xaafe, 0xd0c6, 0xadae,
+ 0xadaf, 0xadb0, 0xd0c7, 0xd0c3, 0xadad, 0xd0c4, 0xd0c5, 0xd0c2,
+ 0xb0a4, 0xb0a1, 0xd445, 0xb0a2, 0xb0a5, 0xd446, 0xb07e, 0xb07c,
+ 0xb07d, 0xb0a3, 0xb3ad, 0xd849, 0xb3b5, 0xd848, 0xd84b, 0xb3b1,
+ 0xd84a, 0xb6ab, 0xb3af, 0xb3b2, 0xb3ae, 0xb3b3, 0xb3b4, 0xb3b0,
+ 0xd847, 0xb6a7, 0xdc7d, 0xdca3, 0xdca2, 0xb6ac, 0xb6a8, 0xb6a9,
+ 0xdc7c, 0xdc7e, 0xdca1, 0xb6a4, 0xb6a6, 0xb6aa, 0xb6a5, 0xe0d3,
+ 0xe0d1, 0xe0d2, 0xb96a, 0xb96b, 0xe0d4, 0xb969, 0xbbd8, 0xbbda,
+ 0xbbd9, 0xe4bb, 0xe4bc, 0xe8ab, 0xe8aa, 0xc047, 0xc048, 0xec4f,
+ 0xc049, 0xeef6, 0xeef4, 0xeef5, 0xc1f4, 0xf16f, 0xc3f7, 0xc1f5,
+ 0xab41, 0xb0a6, 0xd447, 0xd84c, 0xb3b6, 0xb6ad, 0xdca4, 0xdca6,
+ 0xb6af, 0xb6ae, 0xb6b0, 0xb6b1, 0xdca5, 0xb96e, 0xb96f, 0xb96d,
+ 0xbbdb, 0xb96c, 0xe0d5, 0xbbdc, 0xe8ac, 0xec50, 0xc04a, 0xc1f6,
+ 0xf170, 0xf174, 0xc2f9, 0xf171, 0xc2fa, 0xc2f8, 0xf175, 0xc2fb,
+ 0xf173, 0xf379, 0xc2f7, 0xc3f8, 0xf8cd, 0xab42, 0xb3b8, 0xb3b7,
+ 0xb6b2, 0xdca8, 0xdca7, 0xb6b3, 0xe0d9, 0xb973, 0xb970, 0xe0d8,
+ 0xb972, 0xe0d6, 0xb971, 0xe0d7, 0xe4bd, 0xbbdd, 0xe8af, 0xbe5d,
+ 0xe8ad, 0xbe5e, 0xbe5f, 0xe8ae, 0xbe60, 0xec51, 0xc04e, 0xc04b,
+ 0xc050, 0xec53, 0xc04c, 0xec52, 0xc04f, 0xc04d, 0xeef9, 0xeefb,
+ 0xc1f7, 0xeefa, 0xc1f8, 0xeef8, 0xeef7, 0xf177, 0xf176, 0xc2fc,
+ 0xf178, 0xf37e, 0xc3fa, 0xf37d, 0xf37a, 0xc3f9, 0xf37b, 0xf37c,
+ 0xf548, 0xf549, 0xc4c5, 0xc553, 0xf66e, 0xc551, 0xc552, 0xf66f,
+ 0xc5b4, 0xc5b5, 0xf771, 0xc645, 0xf8cf, 0xc647, 0xf8ce, 0xf8d0,
+ 0xc646, 0xf957, 0xf9ad, 0xab43, 0xb974, 0xe4be, 0xe8b0, 0xc051,
+ 0xc052, 0xab44, 0xbe61, 0xc3fb, 0xadb1, 0xc053, 0xc5e2, 0xadb2,
+ 0xd84d, 0xdca9, 0xdcab, 0xdcaa, 0xe0dd, 0xe0da, 0xb975, 0xb976,
+ 0xe0db, 0xe0dc, 0xe4c0, 0xe4c5, 0xbbde, 0xe4bf, 0xe4c1, 0xe4c8,
+ 0xe4c3, 0xe4c7, 0xe4c4, 0xe4c2, 0xe4c6, 0xbbdf, 0xe8b3, 0xe8b1,
+ 0xbe63, 0xbe62, 0xe8b2, 0xbe64, 0xec56, 0xec55, 0xc054, 0xec54,
+ 0xeefc, 0xeefe, 0xef41, 0xef40, 0xc1f9, 0xeefd, 0xf1a1, 0xc2fd,
+ 0xf17d, 0xf1a2, 0xc2fe, 0xf17b, 0xf17e, 0xf17c, 0xf179, 0xc340,
+ 0xf17a, 0xf3a1, 0xf3a3, 0xf3a2, 0xf54a, 0xf54b, 0xf670, 0xc5b7,
+ 0xc5b6, 0xf84f, 0xf850, 0xc648, 0xf8d1, 0xc669, 0xadb3, 0xb6b4,
+ 0xe4ca, 0xe4c9, 0xe8b5, 0xe8b4, 0xc1fa, 0xef43, 0xef42, 0xf1a5,
+ 0xf1a3, 0xf1a6, 0xf1a4, 0xc3fc, 0xf3a4, 0xf3a5, 0xf3a6, 0xf671,
+ 0xf772, 0xf8d2, 0xadb4, 0xec57, 0xef44, 0xadb5, 0xbbe0, 0xec58,
+ 0xc341, 0xf1a7, 0xc3fd, 0xf54c, 0xf54d, 0xc554, 0xf851, 0xadb6,
+ 0xb3bb, 0xb3bc, 0xd84e, 0xb6b5, 0xb6b6, 0xdcac, 0xb6b7, 0xb97a,
+ 0xb97c, 0xe0df, 0xe0e0, 0xe0de, 0xb977, 0xb978, 0xb97b, 0xb979,
+ 0xe4cb, 0xbbe1, 0xbbe2, 0xe8bc, 0xbe67, 0xe8b7, 0xe8b6, 0xe8bb,
+ 0xbe65, 0xc05b, 0xe8b8, 0xe8bd, 0xe8ba, 0xe8b9, 0xbe66, 0xc059,
+ 0xec5a, 0xc055, 0xec5b, 0xec59, 0xc058, 0xc056, 0xc05a, 0xc057,
+ 0xef45, 0xef4a, 0xef46, 0xef49, 0xc1fb, 0xedd4, 0xef48, 0xef47,
+ 0xc344, 0xc342, 0xc345, 0xc343, 0xf1a8, 0xf1a9, 0xf1aa, 0xc346,
+ 0xf3aa, 0xc440, 0xf3a8, 0xc441, 0xf3a7, 0xf3a9, 0xc3fe, 0xf551,
+ 0xf54e, 0xf54f, 0xf550, 0xf672, 0xc556, 0xc555, 0xf774, 0xf773,
+ 0xc5b8, 0xc5e3, 0xc649, 0xc660, 0xf958, 0xf9ae, 0xf9af, 0xadb7,
+ 0xdcad, 0xe0e1, 0xe4cc, 0xe4cd, 0xbbe3, 0xbbe4, 0xe8be, 0xbe68,
+ 0xc1fc, 0xf1ab, 0xc347, 0xf3ad, 0xc442, 0xf3ac, 0xf3ae, 0xf3ab,
+ 0xf675, 0xf552, 0xf553, 0xc4c6, 0xf674, 0xf673, 0xf775, 0xf9b0,
+ 0xadb8, 0xadb9, 0xb0a7, 0xd448, 0xd84f, 0xb6b8, 0xb6bb, 0xb6b9,
+ 0xdcae, 0xb6bd, 0xb6ba, 0xb6bc, 0xb97e, 0xe0e2, 0xe0e3, 0xe8c0,
+ 0xb97d, 0xb9a1, 0xb9a2, 0xe4cf, 0xe4ce, 0xbbe5, 0xbbe6, 0xe4d0,
+ 0xe8bf, 0xbbe8, 0xbe69, 0xbbe7, 0xc05c, 0xe8c1, 0xbe6b, 0xbe6a,
+ 0xe8c2, 0xe8c5, 0xe8c3, 0xe8c4, 0xbe6c, 0xc061, 0xc05f, 0xc05e,
+ 0xec5d, 0xc060, 0xec5c, 0xef4b, 0xec5e, 0xc05d, 0xec5f, 0xef4e,
+ 0xef4c, 0xef4d, 0xef52, 0xc34b, 0xef51, 0xef54, 0xef53, 0xef50,
+ 0xef4f, 0xc1fd, 0xf1ae, 0xf1ad, 0xc34a, 0xc348, 0xc349, 0xf1ac,
+ 0xf3b1, 0xc443, 0xf3b0, 0xf3af, 0xc444, 0xf558, 0xf557, 0xf555,
+ 0xf554, 0xc4c8, 0xc4c7, 0xf559, 0xf776, 0xc5b9, 0xf677, 0xc557,
+ 0xf676, 0xf556, 0xf777, 0xc5e4, 0xc661, 0xf959, 0xf9b1, 0xadba,
+ 0xd850, 0xef55, 0xadbb, 0xe4d2, 0xe4d1, 0xec60, 0xef57, 0xef56,
+ 0xc34c, 0xf3b2, 0xf3b3, 0xc4c9, 0xf9b2, 0xb0a8, 0xb6bf, 0xb6be,
+ 0xe0e4, 0xe0e6, 0xb9a4, 0xe0e5, 0xb9a3, 0xb9a5, 0xe0e7, 0xe4d4,
+ 0xe4d6, 0xe4d5, 0xe4d8, 0xbbe9, 0xe4d7, 0xe4d3, 0xe4d9, 0xe8cc,
+ 0xe8cf, 0xe8d1, 0xe8c7, 0xe8cb, 0xe8c8, 0xbe6e, 0xbe71, 0xbe73,
+ 0xe8c9, 0xe8ca, 0xbe72, 0xe8cd, 0xe8d0, 0xe8ce, 0xbe74, 0xbe70,
+ 0xe8c6, 0xbe6d, 0xbe6f, 0xc063, 0xec66, 0xec64, 0xec63, 0xec69,
+ 0xec68, 0xec67, 0xec62, 0xc062, 0xec61, 0xec65, 0xc064, 0xef5a,
+ 0xef5e, 0xef5b, 0xef5d, 0xef5c, 0xef59, 0xef5f, 0xef62, 0xef60,
+ 0xef61, 0xc240, 0xc1fe, 0xef58, 0xef63, 0xf1b3, 0xf1b6, 0xf1b8,
+ 0xf1b7, 0xf1b1, 0xf1b5, 0xf1b0, 0xf1b2, 0xc34d, 0xf1af, 0xf1b4,
+ 0xf3c0, 0xf3b5, 0xc445, 0xc446, 0xf3b4, 0xf3b9, 0xf3bf, 0xf3b7,
+ 0xf3be, 0xf3bb, 0xf3ba, 0xf3bd, 0xf3b8, 0xf3b6, 0xf3bc, 0xf560,
+ 0xf55e, 0xc4ca, 0xf55d, 0xf563, 0xf561, 0xc4cb, 0xf55c, 0xf55a,
+ 0xf55b, 0xc4cd, 0xf55f, 0xc4cc, 0xf562, 0xf678, 0xf67e, 0xf679,
+ 0xc55b, 0xf6a1, 0xc55a, 0xf67d, 0xf67c, 0xc559, 0xf67b, 0xc558,
+ 0xf67a, 0xf77d, 0xf7a1, 0xf77e, 0xf77b, 0xc5bb, 0xf778, 0xf77c,
+ 0xf7a3, 0xf7a2, 0xf779, 0xf77a, 0xc5ba, 0xf852, 0xc5e7, 0xf853,
+ 0xc5e5, 0xc5e6, 0xf8d3, 0xc64a, 0xf976, 0xc66a, 0xf9b3, 0xc66b,
+ 0xf9b4, 0xf9b5, 0xf9c3, 0xf9c2, 0xc67a, 0xf9cd, 0xb0a9, 0xe0e9,
+ 0xe0e8, 0xbbea, 0xbbeb, 0xe4da, 0xe8d2, 0xec6c, 0xbe75, 0xc065,
+ 0xec6a, 0xec6d, 0xc066, 0xef64, 0xec6b, 0xf1b9, 0xc34e, 0xf3c1,
+ 0xf566, 0xf564, 0xf565, 0xf6a2, 0xc55c, 0xf7a4, 0xc5ea, 0xc5bc,
+ 0xc5e8, 0xc5e9, 0xf8d4, 0xc662, 0xb0aa, 0xf1ba, 0xd449, 0xb9a6,
+ 0xe4db, 0xbbec, 0xe4dc, 0xe8d4, 0xe8d3, 0xc068, 0xbe76, 0xbe77,
+ 0xe8d7, 0xe8d6, 0xe8d5, 0xec6e, 0xec71, 0xec70, 0xec6f, 0xc067,
+ 0xef68, 0xef66, 0xef65, 0xef67, 0xc34f, 0xf1bc, 0xf1bd, 0xc350,
+ 0xf1bb, 0xf3c3, 0xf3c2, 0xf3c5, 0xc447, 0xf3c4, 0xf567, 0xf569,
+ 0xf568, 0xf6a3, 0xf6a6, 0xf6a4, 0xf6a5, 0xf7a5, 0xc5bd, 0xf854,
+ 0xf855, 0xf856, 0xc64b, 0xc663, 0xf9b6, 0xb0ab, 0xbe78, 0xc069,
+ 0xf1be, 0xf7a6, 0xf9c4, 0xd44a, 0xc67b, 0xb0ac, 0xec72, 0xf1bf,
+ 0xf3c6, 0xf6a7, 0xf7a7, 0xb0ad, 0xe4dd, 0xe4de, 0xbbed, 0xbbee,
+ 0xe8d9, 0xbe7a, 0xbe79, 0xe8d8, 0xef69, 0xf1c0, 0xf1c2, 0xf1c1,
+ 0xc353, 0xc352, 0xc351, 0xc55e, 0xf6a8, 0xc55d, 0xf7a9, 0xf7a8,
+ 0xc64c, 0xf8d5, 0xb3bd, 0xe0ea, 0xe4e1, 0xe4df, 0xe4e0, 0xe8e2,
+ 0xe8dd, 0xe8da, 0xe8e1, 0xe8e3, 0xbe7c, 0xe8e0, 0xe8dc, 0xe8db,
+ 0xe8df, 0xe8de, 0xbe7b, 0xec7d, 0xec78, 0xec76, 0xeca1, 0xec77,
+ 0xec73, 0xec79, 0xec74, 0xef72, 0xec75, 0xeca2, 0xec7c, 0xc06a,
+ 0xec7b, 0xec7a, 0xec7e, 0xef6a, 0xef6d, 0xef6c, 0xef74, 0xef6f,
+ 0xef73, 0xef71, 0xef70, 0xef6e, 0xef6b, 0xc243, 0xc242, 0xc244,
+ 0xc241, 0xef75, 0xf1c8, 0xf1cb, 0xf1c9, 0xf1cd, 0xf1ce, 0xf1c6,
+ 0xc358, 0xf1c7, 0xf1c5, 0xf1cc, 0xf1c4, 0xf1c3, 0xc357, 0xc355,
+ 0xc354, 0xf1ca, 0xf3cf, 0xf3d5, 0xc44a, 0xf3d0, 0xf3d3, 0xf3d7,
+ 0xc44b, 0xf3d2, 0xf3ca, 0xf3c9, 0xf3d6, 0xf3cd, 0xf3cb, 0xf3d4,
+ 0xf3cc, 0xc449, 0xc448, 0xf3c7, 0xf3c8, 0xf3d1, 0xf3ce, 0xf56c,
+ 0xf56f, 0xc356, 0xf56d, 0xf573, 0xf571, 0xf56b, 0xf576, 0xf56a,
+ 0xc4cf, 0xf572, 0xf56e, 0xc4ce, 0xf575, 0xf574, 0xf6ab, 0xf6aa,
+ 0xf6b1, 0xf6ad, 0xf6b0, 0xc560, 0xf6ae, 0xf6af, 0xf6a9, 0xf6ac,
+ 0xc55f, 0xc5bf, 0xf7b4, 0xf7af, 0xf7b3, 0xf7b6, 0xf7b2, 0xf7ae,
+ 0xc5c1, 0xf7b1, 0xf7b5, 0xc5c0, 0xf7ac, 0xf570, 0xf7b0, 0xf7ad,
+ 0xf7aa, 0xf7ab, 0xc5be, 0xf85a, 0xf85c, 0xf85f, 0xf85b, 0xf860,
+ 0xf859, 0xf857, 0xc5eb, 0xf85d, 0xc5ed, 0xc5ec, 0xf858, 0xf85e,
+ 0xf8da, 0xc64d, 0xf8db, 0xf8d9, 0xf8d6, 0xf8d8, 0xf8d7, 0xf95a,
+ 0xf95c, 0xf95b, 0xf979, 0xf978, 0xf977, 0xf97a, 0xc673, 0xc674,
+ 0xf9ca, 0xf9ce, 0xb3be, 0xdcaf, 0xe0ed, 0xb9a7, 0xe0eb, 0xe0ec,
+ 0xe4e2, 0xe4e3, 0xbbf1, 0xbbef, 0xe4e4, 0xbbf0, 0xe8e8, 0xe8eb,
+ 0xe8e5, 0xe8ec, 0xe8e4, 0xe8e6, 0xe8e7, 0xe8ea, 0xbea1, 0xe8ef,
+ 0xe8ee, 0xbe7d, 0xe8e9, 0xe8ed, 0xbe7e, 0xecac, 0xc06f, 0xeca7,
+ 0xc06b, 0xeca4, 0xecaa, 0xecad, 0xc070, 0xeca9, 0xeca6, 0xecae,
+ 0xeca5, 0xecab, 0xc06c, 0xeca3, 0xc06d, 0xc06e, 0xeca8, 0xefa9,
+ 0xef7a, 0xef7b, 0xef7e, 0xef7c, 0xef76, 0xef79, 0xefa5, 0xef7d,
+ 0xc245, 0xefa7, 0xefa4, 0xc246, 0xefa6, 0xef77, 0xefa2, 0xefa3,
+ 0xefa1, 0xf1d2, 0xf1d4, 0xf1d7, 0xf1d1, 0xc359, 0xf1d9, 0xf1d0,
+ 0xf1da, 0xf1d6, 0xf1d8, 0xf1dc, 0xf1d5, 0xf1dd, 0xf1d3, 0xf1cf,
+ 0xc35a, 0xf1db, 0xc35b, 0xc44d, 0xef78, 0xf3f1, 0xf3e8, 0xc44f,
+ 0xf3e4, 0xc450, 0xf3ed, 0xf3e7, 0xf3dd, 0xc44e, 0xf3ea, 0xf3e5,
+ 0xf3e6, 0xf3d8, 0xf3df, 0xf3ee, 0xf3eb, 0xf3e3, 0xf3ef, 0xf3de,
+ 0xf3d9, 0xf3ec, 0xf3db, 0xf3e9, 0xf3e0, 0xf3f0, 0xf3dc, 0xc44c,
+ 0xf3da, 0xf3e1, 0xf3e2, 0xf57d, 0xf57b, 0xf5a2, 0xf5ae, 0xf5a5,
+ 0xf57c, 0xf578, 0xf5a7, 0xf57e, 0xf5a3, 0xf57a, 0xf5aa, 0xf577,
+ 0xf5a1, 0xf5a6, 0xf5a8, 0xf5ab, 0xf579, 0xf5af, 0xf5b0, 0xf5a9,
+ 0xf5ad, 0xf5a4, 0xf6c1, 0xf6c4, 0xc561, 0xf6c3, 0xf6c8, 0xf6c6,
+ 0xc562, 0xf6bd, 0xf6b3, 0xf6b2, 0xc564, 0xf6bf, 0xf6c0, 0xf6bc,
+ 0xf6b4, 0xf6b9, 0xf5ac, 0xf6b5, 0xc563, 0xf6bb, 0xf6ba, 0xf6b6,
+ 0xf6c2, 0xf6b7, 0xf7bb, 0xf6c5, 0xf6c7, 0xf6be, 0xf6b8, 0xf7bc,
+ 0xf7be, 0xf7b8, 0xc5c2, 0xf7c5, 0xf7c3, 0xc5c3, 0xf7c2, 0xf7c1,
+ 0xf7ba, 0xf7b7, 0xf7bd, 0xf7c6, 0xf7b9, 0xf7bf, 0xf869, 0xf86e,
+ 0xf864, 0xf867, 0xc5ee, 0xf86b, 0xf872, 0xf7c0, 0xf865, 0xf86f,
+ 0xf873, 0xf86a, 0xf863, 0xf86d, 0xf86c, 0xf871, 0xf870, 0xf7c4,
+ 0xf868, 0xf862, 0xf866, 0xc64e, 0xc64f, 0xf861, 0xf8e6, 0xf8dd,
+ 0xf8e5, 0xf8e2, 0xf8e3, 0xf8dc, 0xf8df, 0xf8e7, 0xf8e1, 0xf8e0,
+ 0xf8de, 0xf8e4, 0xf95d, 0xf95e, 0xf960, 0xf95f, 0xf962, 0xf961,
+ 0xf97c, 0xf97b, 0xf9b7, 0xf9b8, 0xf9c5, 0xc678, 0xc67c, 0xf9cf,
+ 0xc67d, 0xb3bf, 0xc4d0, 0xf6c9, 0xc650, 0xc651, 0xb3c0, 0xe0ee,
+ 0xb9a8, 0xe8f0, 0xecb0, 0xecb1, 0xecaf, 0xefab, 0xefaa, 0xc247,
+ 0xf1df, 0xefac, 0xf1de, 0xf3f3, 0xc451, 0xc453, 0xf3f2, 0xc452,
+ 0xf5b1, 0xf5b3, 0xf5b2, 0xf6ca, 0xc565, 0xc5ef, 0xf8e8, 0xf963,
+ 0xf9d2, 0xb3c1, 0xe4e5, 0xbea2, 0xecb3, 0xecb2, 0xefad, 0xc454,
+ 0xc4d1, 0xf7c7, 0xf9cb, 0xb3c2, 0xbbf2, 0xbea3, 0xf3f4, 0xf874,
+ 0xb6c0, 0xefae, 0xc664, 0xb6c1, 0xbea4, 0xc248, 0xf875, 0xb6c2,
+ 0xe8f1, 0xc072, 0xecb4, 0xecb5, 0xc071, 0xefaf, 0xc24c, 0xc24a,
+ 0xc24b, 0xc249, 0xf1e0, 0xc35c, 0xf5b5, 0xf5b4, 0xf5b7, 0xf5b6,
+ 0xc4d2, 0xf6cb, 0xf6cd, 0xf6cc, 0xc566, 0xf7c8, 0xf876, 0xf877,
+ 0xc5f0, 0xf964, 0xf97d, 0xc675, 0xdcb0, 0xecb6, 0xefb0, 0xf3f5,
+ 0xe0ef, 0xefb1, 0xf1e2, 0xf1e1, 0xf878, 0xc652, 0xf965, 0xf97e,
+ 0xb9a9, 0xe8f2, 0xe8f3, 0xecb7, 0xb9aa, 0xc35d, 0xf1e3, 0xf6cf,
+ 0xc567, 0xf6d0, 0xf6ce, 0xf879, 0xf8e9, 0xb9ab, 0xefb4, 0xefb3,
+ 0xefb2, 0xf1e4, 0xf1e8, 0xf1e7, 0xf1e6, 0xf1e5, 0xc35e, 0xf3f6,
+ 0xf5b9, 0xc4d3, 0xf5b8, 0xf6d1, 0xf7cb, 0xf7ca, 0xc5c4, 0xf7c9,
+ 0xf87c, 0xf87b, 0xf87a, 0xbbf3, 0xecb8, 0xc24d, 0xf3f7, 0xf3f8,
+ 0xf7cc, 0xf87d, 0xf8ea, 0xf966, 0xf9b9, 0xf9d4, 0xbbf4, 0xc24e,
+ 0xf1e9, 0xf3f9, 0xf6d2, 0xf87e, 0xbea6, 0xefb5, 0xf1ea, 0xf3fa,
+ 0xf3fb, 0xf3fc, 0xf5be, 0xf5ba, 0xc568, 0xf5bd, 0xf5bc, 0xc4d4,
+ 0xf5bb, 0xc4d6, 0xc4d5, 0xf6d4, 0xf6d3, 0xc569, 0xc56a, 0xc5c6,
+ 0xf7cd, 0xc5c5, 0xf8a3, 0xf8a4, 0xf8a2, 0xf8a1, 0xc654, 0xf8eb,
+ 0xf8ec, 0xf8ed, 0xc653, 0xf967, 0xf96a, 0xf969, 0xf968, 0xf9d3,
+ 0xc073, 0xc365, 0xf5bf, 0xf6d5, 0xc5c7, 0xf7ce, 0xf9d5, 0xc074,
+ 0xefb6, 0xf7cf, 0xf9a1, 0xc94a, 0xddfc, 0xa14a, 0xa157, 0xa159,
+ 0xa15b, 0xa15f, 0xa160, 0xa163, 0xa164, 0xa167, 0xa168, 0xa16b,
+ 0xa16c, 0xa16f, 0xa170, 0xa173, 0xa174, 0xa177, 0xa178, 0xa17b,
+ 0xa17c, 0xa1c6, 0xa1c7, 0xa1ca, 0xa1cb, 0xa1c8, 0xa1c9, 0xa15c,
+ 0xa14d, 0xa14f, 0xa151, 0xa152, 0xa153, 0xa154, 0xa17d, 0xa17e,
+ 0xa1a1, 0xa1a2, 0xa1a3, 0xa1a4, 0xa1cc, 0xa1cd, 0xa1ce, 0xa1de,
+ 0xa1df, 0xa1e0, 0xa1e1, 0xa1e2, 0xa24c, 0xa24d, 0xa24e, 0xa149,
+ 0xa1ad, 0xa243, 0xa248, 0xa1ae, 0xa15d, 0xa15e, 0xa1af, 0xa1cf,
+ 0xa141, 0xa1d0, 0xa144, 0xa241, 0xa2af, 0xa2b0, 0xa2b1, 0xa2b2,
+ 0xa2b3, 0xa2b4, 0xa2b5, 0xa2b6, 0xa2b7, 0xa2b8, 0xa147, 0xa146,
+ 0xa1d5, 0xa1d7, 0xa1d6, 0xa148, 0xa249, 0xa2cf, 0xa2d0, 0xa2d1,
+ 0xa2d2, 0xa2d3, 0xa2d4, 0xa2d5, 0xa2d6, 0xa2d7, 0xa2d8, 0xa2d9,
+ 0xa2da, 0xa2db, 0xa2dc, 0xa2dd, 0xa2de, 0xa2df, 0xa2e0, 0xa2e1,
+ 0xa2e2, 0xa2e3, 0xa2e4, 0xa2e5, 0xa2e6, 0xa2e7, 0xa2e8, 0xa242,
+ 0xa1c4, 0xa2e9, 0xa2ea, 0xa2eb, 0xa2ec, 0xa2ed, 0xa2ee, 0xa2ef,
+ 0xa2f0, 0xa2f1, 0xa2f2, 0xa2f3, 0xa2f4, 0xa2f5, 0xa2f6, 0xa2f7,
+ 0xa2f8, 0xa2f9, 0xa2fa, 0xa2fb, 0xa2fc, 0xa2fd, 0xa2fe, 0xa340,
+ 0xa341, 0xa342, 0xa343, 0xa161, 0xa155, 0xa162, 0xa14e,
+};
+
+static const Summary16 big5_uni2indx_page00[16] = {
+ /* 0x0000 */
+ { 0, 0x0000 }, { 0, 0x0000 }, { 0, 0x0000 }, { 0, 0x0000 },
+ { 0, 0x0000 }, { 0, 0x0000 }, { 0, 0x0000 }, { 0, 0x0000 },
+ { 0, 0x0000 }, { 0, 0x0000 }, { 0, 0x00ac }, { 4, 0x0083 },
+ { 7, 0x0000 }, { 7, 0x0080 }, { 8, 0x0000 }, { 8, 0x0080 },
+};
+static const Summary16 big5_uni2indx_page02[38] = {
+ /* 0x0200 */
+ { 9, 0x0000 }, { 9, 0x0000 }, { 9, 0x0000 }, { 9, 0x0000 },
+ { 9, 0x0000 }, { 9, 0x0000 }, { 9, 0x0000 }, { 9, 0x0000 },
+ { 9, 0x0000 }, { 9, 0x0000 }, { 9, 0x0000 }, { 9, 0x0000 },
+ { 9, 0x0e80 }, { 13, 0x0200 }, { 14, 0x0000 }, { 14, 0x0000 },
+ /* 0x0300 */
+ { 14, 0x0000 }, { 14, 0x0000 }, { 14, 0x0000 }, { 14, 0x0000 },
+ { 14, 0x0000 }, { 14, 0x0000 }, { 14, 0x0000 }, { 14, 0x0000 },
+ { 14, 0x0000 }, { 14, 0xfffe }, { 29, 0x03fb }, { 38, 0xfffe },
+ { 53, 0x03fb }, { 62, 0x0000 }, { 62, 0x0000 }, { 62, 0x0000 },
+ /* 0x0400 */
+ { 62, 0x0002 }, { 63, 0x1ff0 }, { 72, 0xfff8 }, { 85, 0xffff },
+ { 101, 0xffff }, { 117, 0x0002 },
+};
+static const Summary16 big5_uni2indx_page20[44] = {
+ /* 0x2000 */
+ { 118, 0x0000 }, { 118, 0x3318 }, { 124, 0x0064 }, { 127, 0x4824 },
+ { 131, 0x0000 }, { 131, 0x0000 }, { 131, 0x0000 }, { 131, 0x0000 },
+ { 131, 0x0000 }, { 131, 0x0000 }, { 131, 0x0000 }, { 131, 0x0000 },
+ { 131, 0x0000 }, { 131, 0x0000 }, { 131, 0x0000 }, { 131, 0x0000 },
+ /* 0x2100 */
+ { 131, 0x0228 }, { 134, 0x0000 }, { 134, 0x0000 }, { 134, 0x0000 },
+ { 134, 0x0000 }, { 134, 0x0000 }, { 134, 0x03ff }, { 144, 0x0000 },
+ { 144, 0x0000 }, { 144, 0x03cf }, { 152, 0x0000 }, { 152, 0x0000 },
+ { 152, 0x0000 }, { 152, 0x0000 }, { 152, 0x0000 }, { 152, 0x0000 },
+ /* 0x2200 */
+ { 152, 0x0000 }, { 152, 0xc400 }, { 155, 0x4e29 }, { 162, 0x1030 },
+ { 165, 0x0000 }, { 165, 0x0004 }, { 166, 0x00c3 }, { 170, 0x0000 },
+ { 170, 0x0000 }, { 170, 0x0000 }, { 170, 0x0020 }, { 171, 0x8000 },
+};
+static const Summary16 big5_uni2indx_page24[37] = {
+ /* 0x2400 */
+ { 172, 0x0000 }, { 172, 0x0000 }, { 172, 0x0000 }, { 172, 0x0000 },
+ { 172, 0x0000 }, { 172, 0x0000 }, { 172, 0x03ff }, { 182, 0x3ff0 },
+ { 192, 0x0000 }, { 192, 0x0000 }, { 192, 0x0000 }, { 192, 0x0000 },
+ { 192, 0x0000 }, { 192, 0x0000 }, { 192, 0x0000 }, { 192, 0x0000 },
+ /* 0x2500 */
+ { 192, 0x1005 }, { 195, 0x1111 }, { 199, 0x1010 }, { 201, 0x1010 },
+ { 203, 0x0000 }, { 203, 0x4001 }, { 205, 0xe402 }, { 210, 0x000f },
+ { 214, 0xfffe }, { 229, 0x0030 }, { 231, 0x0003 }, { 233, 0x300c },
+ { 237, 0xc8c0 }, { 242, 0x0000 }, { 242, 0x003c }, { 246, 0x0000 },
+ /* 0x2600 */
+ { 246, 0x0260 }, { 249, 0x0000 }, { 249, 0x0000 }, { 249, 0x0000 },
+ { 249, 0x0007 },
+};
+static const Summary16 big5_uni2indx_page30[62] = {
+ /* 0x3000 */
+ { 252, 0xff2f }, { 265, 0x6037 }, { 272, 0x03fe }, { 281, 0x0000 },
+ { 281, 0xfffe }, { 296, 0xffff }, { 312, 0xffff }, { 328, 0xffff },
+ { 344, 0xffff }, { 360, 0x600f }, { 366, 0xfffe }, { 381, 0xffff },
+ { 397, 0xffff }, { 413, 0xffff }, { 429, 0xffff }, { 445, 0x407f },
+ /* 0x3100 */
+ { 453, 0xffe0 }, { 464, 0xffff }, { 480, 0x03ff }, { 490, 0x0000 },
+ { 490, 0x0000 }, { 490, 0x0000 }, { 490, 0x0000 }, { 490, 0x0000 },
+ { 490, 0x0000 }, { 490, 0x0000 }, { 490, 0x0000 }, { 490, 0x0000 },
+ { 490, 0x0000 }, { 490, 0x0000 }, { 490, 0x0000 }, { 490, 0x0000 },
+ /* 0x3200 */
+ { 490, 0x0000 }, { 490, 0x0000 }, { 490, 0x0000 }, { 490, 0x0000 },
+ { 490, 0x0000 }, { 490, 0x0000 }, { 490, 0x0000 }, { 490, 0x0000 },
+ { 490, 0x0000 }, { 490, 0x0000 }, { 490, 0x0008 }, { 491, 0x0000 },
+ { 491, 0x0000 }, { 491, 0x0000 }, { 491, 0x0000 }, { 491, 0x0000 },
+ /* 0x3300 */
+ { 491, 0x0000 }, { 491, 0x0000 }, { 491, 0x0000 }, { 491, 0x0000 },
+ { 491, 0x0000 }, { 491, 0x0000 }, { 491, 0x0000 }, { 491, 0x0000 },
+ { 491, 0xc000 }, { 493, 0x7000 }, { 496, 0x0002 }, { 497, 0x0000 },
+ { 497, 0x4010 }, { 499, 0x0026 },
+};
+static const Summary16 big5_uni2indx_page4e[1307] = {
+ /* 0x4e00 */
+ { 502, 0xff8b }, { 514, 0xc373 }, { 523, 0x6840 }, { 527, 0x1b0f },
+ { 535, 0xe9ac }, { 544, 0xf34c }, { 553, 0x0200 }, { 554, 0xc008 },
+ { 557, 0x795c }, { 566, 0xca3e }, { 575, 0x7976 }, { 585, 0x0648 },
+ { 589, 0x2fdf }, { 601, 0xf7f0 }, { 612, 0x033a }, { 618, 0xa8ff },
+ /* 0x4f00 */
+ { 629, 0xef37 }, { 641, 0x233f }, { 650, 0xb004 }, { 654, 0xfd59 },
+ { 665, 0xf3ca }, { 675, 0xffff }, { 691, 0xde9f }, { 703, 0xfff9 },
+ { 717, 0xabff }, { 730, 0x7df7 }, { 743, 0xc000 }, { 745, 0x8eec },
+ { 754, 0xeebf }, { 767, 0xffdb }, { 781, 0xd003 }, { 786, 0x45fa },
+ /* 0x5000 */
+ { 795, 0xfae1 }, { 805, 0xdffe }, { 819, 0xbfef }, { 833, 0x10ab },
+ { 839, 0xffeb }, { 853, 0xfcaa }, { 863, 0xef3f }, { 876, 0x24fd },
+ { 885, 0x78ad }, { 894, 0x7f76 }, { 906, 0xf00c }, { 912, 0xedff },
+ { 926, 0xcff6 }, { 938, 0x2cfa }, { 947, 0xf7f9 }, { 960, 0xeb6b },
+ /* 0x5100 */
+ { 971, 0x1ffd }, { 983, 0x95bf }, { 994, 0x6677 }, { 1004, 0xbfbf },
+ { 1018, 0x3bfb }, { 1030, 0xfeb4 }, { 1041, 0x7bae }, { 1052, 0x11e2 },
+ { 1058, 0xa681 }, { 1064, 0x41be }, { 1072, 0x1435 }, { 1078, 0x72c3 },
+ { 1086, 0x7d70 }, { 1095, 0x7191 }, { 1102, 0x0003 }, { 1104, 0x276b },
+ /* 0x5200 */
+ { 1113, 0x57cb }, { 1123, 0x70cf }, { 1132, 0x4732 }, { 1139, 0x0def },
+ { 1149, 0x7eda }, { 1160, 0xfc74 }, { 1170, 0xfe06 }, { 1179, 0xbdb4 },
+ { 1189, 0x3f9f }, { 1201, 0x8bca }, { 1209, 0x7e49 }, { 1218, 0x5800 },
+ { 1221, 0x228f }, { 1228, 0xebec }, { 1239, 0x8a5c }, { 1246, 0xddbb },
+ /* 0x5300 */
+ { 1258, 0xef60 }, { 1267, 0xb6e7 }, { 1278, 0xa40f }, { 1285, 0xf293 },
+ { 1294, 0x37bb }, { 1305, 0x549e }, { 1313, 0xd04b }, { 1320, 0x9baf },
+ { 1331, 0xc414 }, { 1336, 0xf7d4 }, { 1347, 0x30b0 }, { 1352, 0x0a14 },
+ { 1356, 0x2f08 }, { 1362, 0x88d0 }, { 1367, 0xff7e }, { 1381, 0x192f },
+ /* 0x5400 */
+ { 1389, 0xffda }, { 1402, 0xfb07 }, { 1412, 0x7ff1 }, { 1424, 0x7beb },
+ { 1436, 0xc5ef }, { 1447, 0x0010 }, { 1448, 0x99ff }, { 1460, 0xfdff },
+ { 1475, 0x79d7 }, { 1486, 0x0567 }, { 1493, 0xffe7 }, { 1507, 0xfdcb },
+ { 1519, 0xc3ff }, { 1531, 0x4040 }, { 1533, 0x6ff7 }, { 1546, 0xbd8e },
+ /* 0x5500 */
+ { 1556, 0xdffa }, { 1569, 0x0497 }, { 1575, 0xf4c0 }, { 1582, 0x5bff },
+ { 1595, 0xed7b }, { 1607, 0xd0e7 }, { 1616, 0x047e }, { 1623, 0xf8e0 },
+ { 1631, 0xff9f }, { 1645, 0xb73e }, { 1656, 0x7dfe }, { 1669, 0x882e },
+ { 1675, 0xfffd }, { 1690, 0xbe7f }, { 1703, 0x83fe }, { 1713, 0xf6c4 },
+ /* 0x5600 */
+ { 1722, 0xf357 }, { 1733, 0xb8fd }, { 1744, 0xd680 }, { 1750, 0xef7d },
+ { 1763, 0x5767 }, { 1773, 0x4788 }, { 1779, 0xff7d }, { 1793, 0xc3df },
+ { 1804, 0xf0ff }, { 1816, 0x37a9 }, { 1825, 0x7de0 }, { 1834, 0x70fc },
+ { 1843, 0x3f6f }, { 1855, 0xec9a }, { 1864, 0x4cb3 }, { 1872, 0x8681 },
+ /* 0x5700 */
+ { 1877, 0x3f9e }, { 1888, 0xdd5c }, { 1898, 0xf70d }, { 1908, 0x4819 },
+ { 1913, 0xfea3 }, { 1924, 0x0007 }, { 1927, 0xaf56 }, { 1937, 0x38ff },
+ { 1948, 0x980d }, { 1954, 0xefb8 }, { 1965, 0x403d }, { 1971, 0xb760 },
+ { 1979, 0xd8ce }, { 1988, 0x9035 }, { 1994, 0x72bf }, { 2005, 0x3fff },
+ /* 0x5800 */
+ { 2019, 0x7ff7 }, { 2033, 0x7a11 }, { 2040, 0xf7bb }, { 2053, 0xabff },
+ { 2066, 0xff00 }, { 2074, 0x6fbe }, { 2086, 0xa93c }, { 2094, 0xfe72 },
+ { 2105, 0xcfef }, { 2118, 0xf11b }, { 2127, 0xdb6b }, { 2138, 0xf40a },
+ { 2145, 0xc3e6 }, { 2154, 0xef7e }, { 2167, 0x9b9c }, { 2176, 0xf610 },
+ /* 0x5900 */
+ { 2183, 0xf048 }, { 2189, 0x16f4 }, { 2197, 0xfeb5 }, { 2209, 0x5182 },
+ { 2214, 0xc7b1 }, { 2223, 0x15bb }, { 2232, 0x6e87 }, { 2241, 0xfbdf },
+ { 2255, 0xe43f }, { 2265, 0x63cd }, { 2274, 0xc1ff }, { 2285, 0x7e7e },
+ { 2297, 0xfdeb }, { 2310, 0x7d5f }, { 2322, 0x777b }, { 2334, 0xfcfe },
+ /* 0x5a00 */
+ { 2347, 0x960b }, { 2354, 0xdbea }, { 2365, 0x6229 }, { 2371, 0x53e8 },
+ { 2379, 0x37df }, { 2391, 0xfdef }, { 2405, 0x36f5 }, { 2415, 0xbd81 },
+ { 2423, 0xdc18 }, { 2430, 0xfcbd }, { 2442, 0xd2e4 }, { 2450, 0xffff },
+ { 2466, 0x3fd7 }, { 2478, 0xffe0 }, { 2489, 0x7f6f }, { 2502, 0xabf8 },
+ /* 0x5b00 */
+ { 2512, 0x9bae }, { 2522, 0x6ed9 }, { 2532, 0xf5fb }, { 2545, 0xf115 },
+ { 2553, 0x79a9 }, { 2562, 0xbdfb }, { 2575, 0x5a3c }, { 2583, 0xadaf },
+ { 2594, 0xdbba }, { 2605, 0x1fac }, { 2614, 0x71fc }, { 2624, 0x8379 },
+ { 2632, 0x7cf7 }, { 2644, 0xc35f }, { 2654, 0xdfff }, { 2669, 0x0567 },
+ /* 0x5c00 */
+ { 2676, 0xff9a }, { 2688, 0x8467 }, { 2695, 0x1534 }, { 2701, 0xdf8b },
+ { 2712, 0xf9f3 }, { 2724, 0x3373 }, { 2733, 0xf7bd }, { 2746, 0x5e1a },
+ { 2754, 0xbf40 }, { 2762, 0xa03f }, { 2770, 0xffff }, { 2786, 0x01eb },
+ { 2793, 0xdfc0 }, { 2802, 0xcfdd }, { 2814, 0x7500 }, { 2819, 0xabd3 },
+ /* 0x5d00 */
+ { 2829, 0xf8c3 }, { 2838, 0xeed6 }, { 2849, 0x43fd }, { 2859, 0xb7ff },
+ { 2873, 0x5eaf }, { 2884, 0x4227 }, { 2890, 0x9bac }, { 2899, 0xf686 },
+ { 2908, 0x27d7 }, { 2918, 0xf6bc }, { 2929, 0xf787 }, { 2940, 0x35b7 },
+ { 2950, 0xaacd }, { 2959, 0xe176 }, { 2968, 0x49e7 }, { 2977, 0xe29f },
+ /* 0x5e00 */
+ { 2987, 0x545c }, { 2994, 0xaff2 }, { 3005, 0x2b3f }, { 3015, 0x61d8 },
+ { 3022, 0xfc3b }, { 3033, 0xbbb8 }, { 3043, 0xffcf }, { 3057, 0x7b7d },
+ { 3069, 0xbf95 }, { 3080, 0x1ce0 }, { 3086, 0x7dfd }, { 3099, 0x43ff },
+ { 3110, 0x5ff6 }, { 3122, 0xfffe }, { 3137, 0xd3ef }, { 3149, 0xc4ce },
+ /* 0x5f00 */
+ { 3157, 0x8db6 }, { 3166, 0xadbc }, { 3176, 0x63dc }, { 3185, 0x11eb },
+ { 3193, 0xdf59 }, { 3204, 0x23d0 }, { 3210, 0xbeb4 }, { 3220, 0xf3db },
+ { 3232, 0x1fe7 }, { 3243, 0xdbc7 }, { 3254, 0xff63 }, { 3266, 0xfae4 },
+ { 3276, 0xb22b }, { 3284, 0x63f7 }, { 3295, 0xed3b }, { 3306, 0xadba },
+ /* 0x6000 */
+ { 3316, 0xfe01 }, { 3324, 0x7eff }, { 3338, 0xfff7 }, { 3353, 0x02bc },
+ { 3359, 0x32ff }, { 3370, 0xef39 }, { 3381, 0xfffc }, { 3395, 0x8005 },
+ { 3398, 0x77fb }, { 3411, 0xbcf5 }, { 3422, 0x010d }, { 3426, 0xfff7 },
+ { 3441, 0xfffb }, { 3456, 0xbf3a }, { 3467, 0x0057 }, { 3472, 0xdfff },
+ /* 0x6100 */
+ { 3487, 0xef7b }, { 3500, 0xbd7d }, { 3512, 0xdb88 }, { 3520, 0xc8d4 },
+ { 3527, 0xfff3 }, { 3541, 0xed7c }, { 3552, 0x5dee }, { 3563, 0x56ff },
+ { 3575, 0x7e0d }, { 3584, 0xac5f }, { 3594, 0xff96 }, { 3606, 0xd57f },
+ { 3618, 0x3fee }, { 3630, 0xc140 }, { 3634, 0x6ff9 }, { 3646, 0xffe7 },
+ /* 0x6200 */
+ { 3660, 0x779b }, { 3671, 0x8e77 }, { 3681, 0x6ebf }, { 3693, 0xe45d },
+ { 3702, 0x6fcf }, { 3714, 0x5f1f }, { 3725, 0xe07f }, { 3735, 0xfedf },
+ { 3749, 0xd7db }, { 3761, 0x01fe }, { 3769, 0xff00 }, { 3777, 0xfb7b },
+ { 3790, 0xffd4 }, { 3802, 0x1fdf }, { 3814, 0xf800 }, { 3819, 0xffff },
+ /* 0x6300 */
+ { 3835, 0xfb8f }, { 3847, 0x007b }, { 3853, 0xbf00 }, { 3860, 0x7f5c },
+ { 3871, 0xffff }, { 3887, 0x07f3 }, { 3896, 0xeba0 }, { 3904, 0x3de7 },
+ { 3915, 0xf7bf }, { 3929, 0xfbd7 }, { 3942, 0xffbf }, { 3957, 0x6003 },
+ { 3961, 0xfffd }, { 3976, 0xbfed }, { 3989, 0xefbb }, { 4002, 0x027f },
+ /* 0x6400 */
+ { 4010, 0xfe40 }, { 4018, 0xddfd }, { 4031, 0xfdff }, { 4046, 0xe2f9 },
+ { 4056, 0x680b }, { 4062, 0xfb1f }, { 4074, 0xfbe3 }, { 4086, 0xaffd },
+ { 4099, 0x9fa4 }, { 4108, 0xf7ed }, { 4121, 0x7a7d }, { 4132, 0xf80f },
+ { 4141, 0xeebe }, { 4153, 0x0fd5 }, { 4162, 0xbb5d }, { 4173, 0xfd9f },
+ /* 0x6500 */
+ { 4186, 0xf2db }, { 4197, 0x3bf9 }, { 4208, 0xfe7f }, { 4222, 0xebcc },
+ { 4232, 0x876a }, { 4240, 0x73fa }, { 4251, 0x95fc }, { 4261, 0x9ffc },
+ { 4273, 0x109f }, { 4280, 0xfaf7 }, { 4293, 0xddb7 }, { 4305, 0xbbcd },
+ { 4316, 0xf87e }, { 4327, 0xeccd }, { 4337, 0xf366 }, { 4347, 0x3c3f },
+ /* 0x6600 */
+ { 4357, 0xfffd }, { 4372, 0xb03f }, { 4381, 0xe9f7 }, { 4393, 0x067e },
+ { 4401, 0x96ae }, { 4410, 0xfe06 }, { 4419, 0xd576 }, { 4429, 0x5fd7 },
+ { 4441, 0x3fd1 }, { 4451, 0xa3f3 }, { 4461, 0xcf07 }, { 4470, 0x6fb7 },
+ { 4482, 0x9fd1 }, { 4492, 0x7f44 }, { 4501, 0x7b59 }, { 4511, 0xd3dd },
+ /* 0x6700 */
+ { 4522, 0xaf3b }, { 4533, 0xa9bd }, { 4543, 0x7dcf }, { 4555, 0xff3a },
+ { 4567, 0xfbe0 }, { 4577, 0xf6eb }, { 4589, 0xb401 }, { 4594, 0xffff },
+ { 4610, 0x7afa }, { 4621, 0xb7bf }, { 4634, 0xc000 }, { 4636, 0x0ffd },
+ { 4647, 0xff7f }, { 4662, 0xff1f }, { 4675, 0xfefc }, { 4688, 0x95ff },
+ /* 0x6800 */
+ { 4700, 0x0000 }, { 4700, 0xb5dc }, { 4710, 0xef63 }, { 4721, 0x3f3e },
+ { 4732, 0xfb7f }, { 4746, 0x001b }, { 4750, 0xe800 }, { 4754, 0xfbf6 },
+ { 4767, 0x9eef }, { 4779, 0xb8df }, { 4790, 0xff9f }, { 4804, 0x003f },
+ { 4810, 0x7bd0 }, { 4819, 0xf5ff }, { 4833, 0xdfdb }, { 4846, 0x3fff },
+ /* 0x6900 */
+ { 4860, 0xfdf0 }, { 4871, 0x00bf }, { 4878, 0x8420 }, { 4881, 0xbbbd },
+ { 4893, 0xdf37 }, { 4905, 0xffde }, { 4919, 0xff6d }, { 4932, 0x0ff3 },
+ { 4942, 0x604c }, { 4947, 0x5efb }, { 4959, 0xfffb }, { 4974, 0xfafb },
+ { 4987, 0xfe5e }, { 4999, 0x0219 }, { 5003, 0x79f4 }, { 5013, 0xf9de },
+ /* 0x6a00 */
+ { 5025, 0xa7f7 }, { 5037, 0xebfa }, { 5049, 0x01eb }, { 5056, 0xff34 },
+ { 5067, 0xebd3 }, { 5078, 0xef73 }, { 5090, 0xafd7 }, { 5102, 0xc040 },
+ { 5105, 0x72bb }, { 5115, 0xdcff }, { 5128, 0xf17f }, { 5140, 0x2fd8 },
+ { 5149, 0xb8ec }, { 5158, 0xfe0b }, { 5168, 0xdda3 }, { 5178, 0x1f0b },
+ /* 0x6b00 */
+ { 5186, 0x8f1d }, { 5195, 0x47cf }, { 5205, 0xb12b }, { 5213, 0xffde },
+ { 5227, 0x7fee }, { 5240, 0xda73 }, { 5250, 0x24ff }, { 5260, 0xcbc4 },
+ { 5268, 0xf75d }, { 5280, 0xcbf2 }, { 5290, 0xecfd }, { 5302, 0xb4ed },
+ { 5312, 0xbff9 }, { 5325, 0x4ddd }, { 5335, 0x99dd }, { 5345, 0xfb8d },
+ /* 0x6c00 */
+ { 5356, 0xbb7f }, { 5369, 0xaf7b }, { 5381, 0xddfb }, { 5394, 0xc959 },
+ { 5402, 0xfc4f }, { 5413, 0xfab5 }, { 5424, 0xafe3 }, { 5435, 0x6d5f },
+ { 5446, 0xffff }, { 5462, 0x3f7d }, { 5474, 0x7800 }, { 5478, 0xffdb },
+ { 5492, 0xb6ff }, { 5505, 0x7eff }, { 5519, 0xfbaf }, { 5532, 0x022f },
+ /* 0x6d00 */
+ { 5538, 0xff9b }, { 5551, 0xefc7 }, { 5563, 0xffa5 }, { 5575, 0xffff },
+ { 5591, 0x0007 }, { 5594, 0xc700 }, { 5599, 0xf7ff }, { 5614, 0xfff1 },
+ { 5627, 0x7ffd }, { 5641, 0x01bf }, { 5649, 0xdc00 }, { 5654, 0xfdbc },
+ { 5666, 0xbff5 }, { 5679, 0xffff }, { 5695, 0xff7f }, { 5710, 0x3eff },
+ /* 0x6e00 */
+ { 5723, 0x0029 }, { 5726, 0xbe00 }, { 5732, 0xf9ff }, { 5746, 0xff7f },
+ { 5761, 0x6efb }, { 5773, 0xfd7e }, { 5786, 0xcbff }, { 5799, 0x039e },
+ { 5806, 0xe300 }, { 5811, 0xfbdd }, { 5824, 0xccff }, { 5836, 0xf6df },
+ { 5849, 0xffff }, { 5865, 0x117f }, { 5874, 0xf800 }, { 5879, 0xfbf6 },
+ /* 0x6f00 */
+ { 5892, 0xe7ef }, { 5905, 0xd73c }, { 5915, 0xfeef }, { 5929, 0xdfef },
+ { 5943, 0xc00b }, { 5948, 0xedbf }, { 5961, 0xfedf }, { 5975, 0xfdcd },
+ { 5987, 0x7bf5 }, { 5999, 0x40fd }, { 6007, 0xffff }, { 6023, 0xb75f },
+ { 6035, 0xffdf }, { 6050, 0xf930 }, { 6058, 0xfbdf }, { 6072, 0xdc97 },
+ /* 0x7000 */
+ { 6082, 0xfef3 }, { 6095, 0xbff2 }, { 6107, 0x8fdf }, { 6119, 0xdfbf },
+ { 6133, 0x177f }, { 6144, 0xede6 }, { 6155, 0x0f7f }, { 6166, 0x3553 },
+ { 6174, 0x447c }, { 6181, 0x877e }, { 6191, 0xfa12 }, { 6199, 0x45bb },
+ { 6208, 0xede0 }, { 6217, 0x779e }, { 6228, 0x8017 }, { 6233, 0xbfd9 },
+ /* 0x7100 */
+ { 6245, 0x7e55 }, { 6255, 0xde89 }, { 6264, 0xc16f }, { 6273, 0x0447 },
+ { 6278, 0x7ade }, { 6289, 0xf75d }, { 6301, 0x57ff }, { 6314, 0x2905 },
+ { 6319, 0x86f7 }, { 6329, 0xfe95 }, { 6340, 0x97b3 }, { 6350, 0xf32f },
+ { 6361, 0xcfff }, { 6375, 0x9f75 }, { 6386, 0x71f7 }, { 6397, 0xfb17 },
+ /* 0x7200 */
+ { 6408, 0x34ee }, { 6417, 0xee19 }, { 6426, 0x37cc }, { 6435, 0xef61 },
+ { 6445, 0x9fd6 }, { 6456, 0xef4c }, { 6466, 0xd68f }, { 6476, 0xfbdd },
+ { 6489, 0x7b73 }, { 6500, 0x6def }, { 6512, 0xd7fe }, { 6525, 0xa431 },
+ { 6531, 0x5e7f }, { 6543, 0x97d7 }, { 6554, 0x0f5b }, { 6563, 0xffd8 },
+ /* 0x7300 */
+ { 6575, 0x9d83 }, { 6583, 0x7bce }, { 6594, 0x22ec }, { 6601, 0xdcff },
+ { 6614, 0x763d }, { 6624, 0xef87 }, { 6635, 0xdfe7 }, { 6648, 0xfded },
+ { 6661, 0x4fff }, { 6674, 0xa0fc }, { 6682, 0x3b77 }, { 6693, 0xdbfc },
+ { 6705, 0x3ded }, { 6716, 0x7fdc }, { 6728, 0x6fa9 }, { 6738, 0xf570 },
+ /* 0x7400 */
+ { 6747, 0x3ffb }, { 6760, 0x2c40 }, { 6764, 0xff7f }, { 6779, 0x847f },
+ { 6788, 0xec57 }, { 6798, 0xdeb7 }, { 6810, 0xe69c }, { 6819, 0xf22f },
+ { 6829, 0x0feb }, { 6839, 0xd5b5 }, { 6849, 0xafeb }, { 6861, 0xede7 },
+ { 6873, 0x8c2f }, { 6881, 0xfff0 }, { 6893, 0x537f }, { 6904, 0xe8f0 },
+ /* 0x7500 */
+ { 6912, 0xb99d }, { 6922, 0xb5ff }, { 6935, 0xff66 }, { 6947, 0xe78f },
+ { 6958, 0xd981 }, { 6965, 0xbe10 }, { 6972, 0x9c7c }, { 6981, 0xe3c1 },
+ { 6989, 0x9cd1 }, { 6997, 0x2733 }, { 7005, 0x0cbc }, { 7012, 0xff6d },
+ { 7025, 0xfcb7 }, { 7037, 0xefb7 }, { 7050, 0xa0df }, { 7059, 0xffff },
+ /* 0x7600 */
+ { 7075, 0xbf0b }, { 7085, 0xfe7b }, { 7098, 0xa3ff }, { 7110, 0x353f },
+ { 7120, 0x13cc }, { 7127, 0x97cd }, { 7137, 0x7637 }, { 7147, 0xfb27 },
+ { 7158, 0xcfd6 }, { 7169, 0x7e6c }, { 7179, 0xec50 }, { 7186, 0xed31 },
+ { 7195, 0x677c }, { 7205, 0xfc1c }, { 7214, 0xf6fa }, { 7226, 0x5fbf },
+ /* 0x7700 */
+ { 7239, 0x0fba }, { 7248, 0xae2f }, { 7258, 0xa3ad }, { 7267, 0x7ffe },
+ { 7281, 0xfcf0 }, { 7291, 0xde74 }, { 7301, 0xffef }, { 7316, 0xf200 },
+ { 7321, 0xfbbf }, { 7335, 0xfea2 }, { 7345, 0x3daf }, { 7356, 0xbcff },
+ { 7369, 0xf694 }, { 7378, 0x5fb9 }, { 7389, 0xf3ad }, { 7400, 0x3f8f },
+ /* 0x7800 */
+ { 7411, 0xf26c }, { 7420, 0xa01f }, { 7427, 0xffef }, { 7442, 0x01bf },
+ { 7450, 0x7728 }, { 7458, 0x7005 }, { 7463, 0xff35 }, { 7475, 0xda03 },
+ { 7482, 0xd2f9 }, { 7492, 0xc7fa }, { 7503, 0x3fbf }, { 7516, 0x5c1d },
+ { 7524, 0xff3a }, { 7536, 0xec33 }, { 7545, 0xb7af }, { 7557, 0xfe9c },
+ /* 0x7900 */
+ { 7568, 0x5236 }, { 7575, 0x7a9f }, { 7586, 0xbffa }, { 7599, 0xe722 },
+ { 7607, 0x9ff7 }, { 7620, 0xfcff }, { 7634, 0x2fbb }, { 7645, 0xb61d },
+ { 7654, 0xed06 }, { 7662, 0x1dfd }, { 7673, 0x7dd7 }, { 7685, 0xefdf },
+ { 7699, 0xeb23 }, { 7708, 0xf166 }, { 7717, 0x7ed9 }, { 7728, 0x0dc0 },
+ /* 0x7a00 */
+ { 7733, 0x3d3d }, { 7743, 0xdfbf }, { 7757, 0xc945 }, { 7764, 0xba83 },
+ { 7772, 0x7dd1 }, { 7782, 0x9dd0 }, { 7790, 0x7b87 }, { 7800, 0xcf73 },
+ { 7811, 0x9ff3 }, { 7823, 0xc3f5 }, { 7833, 0xdf0d }, { 7843, 0xc5fe },
+ { 7854, 0x0cb3 }, { 7861, 0x8302 }, { 7865, 0xe879 }, { 7874, 0xaec0 },
+ /* 0x7b00 */
+ { 7881, 0xc773 }, { 7891, 0x6f0f }, { 7901, 0xfd7d }, { 7914, 0x093f },
+ { 7922, 0xfff1 }, { 7935, 0x0157 }, { 7941, 0x62fb }, { 7951, 0x01ff },
+ { 7960, 0xfdb4 }, { 7971, 0x3bf3 }, { 7982, 0xb013 }, { 7988, 0x43b2 },
+ { 7995, 0x5ed3 }, { 8005, 0xff30 }, { 8015, 0x0fff }, { 8027, 0xeb9f },
+ /* 0x7c00 */
+ { 8039, 0xfeef }, { 8053, 0xf203 }, { 8060, 0x3fef }, { 8073, 0xfb89 },
+ { 8083, 0x37a9 }, { 8092, 0x9e99 }, { 8101, 0xdef9 }, { 8113, 0xa72c },
+ { 8121, 0x3733 }, { 8130, 0xc1f6 }, { 8139, 0x812e }, { 8145, 0xfe3e },
+ { 8157, 0x5d20 }, { 8163, 0xf2f7 }, { 8175, 0xd585 }, { 8183, 0x69d7 },
+ /* 0x7d00 */
+ { 8193, 0xffff }, { 8209, 0xffff }, { 8225, 0xdb07 }, { 8234, 0xff6f },
+ { 8248, 0xc4ff }, { 8259, 0xd97f }, { 8271, 0xefce }, { 8283, 0xbe0f },
+ { 8293, 0xf17b }, { 8304, 0xf05e }, { 8313, 0xf6cf }, { 8325, 0xffb7 },
+ { 8339, 0x5ef7 }, { 8351, 0xef84 }, { 8360, 0xd7cb }, { 8371, 0x0edf },
+ /* 0x7e00 */
+ { 8381, 0xff08 }, { 8390, 0xfcff }, { 8404, 0xee3f }, { 8416, 0xffff },
+ { 8432, 0x13ff }, { 8443, 0xd7ff }, { 8457, 0xaf0f }, { 8467, 0x7ffd },
+ { 8481, 0xbdc7 }, { 8492, 0x1ffa }, { 8503, 0x0000 }, { 8503, 0x0000 },
+ { 8503, 0x0000 }, { 8503, 0x0000 }, { 8503, 0x0000 }, { 8503, 0x0000 },
+ /* 0x7f00 */
+ { 8503, 0x0000 }, { 8503, 0x0000 }, { 8503, 0x0000 }, { 8503, 0xe740 },
+ { 8510, 0xbd38 }, { 8519, 0xf933 }, { 8529, 0x7feb }, { 8542, 0xfeed },
+ { 8555, 0x7fe8 }, { 8566, 0x7c76 }, { 8576, 0xb3f7 }, { 8588, 0xffef },
+ { 8603, 0xfeaf }, { 8616, 0xd8b7 }, { 8626, 0xff6f }, { 8640, 0xfbbf },
+ /* 0x8000 */
+ { 8654, 0xf8fb }, { 8666, 0xdbf7 }, { 8679, 0x1752 }, { 8686, 0xe2f9 },
+ { 8696, 0x85c8 }, { 8702, 0x7547 }, { 8711, 0x9090 }, { 8715, 0xe3ef },
+ { 8727, 0x9ef4 }, { 8737, 0x3f6d }, { 8748, 0xee2e }, { 8758, 0x0536 },
+ { 8764, 0xf7bc }, { 8776, 0x7ff3 }, { 8789, 0xa07b }, { 8797, 0x7f3f },
+ /* 0x8100 */
+ { 8810, 0x0567 }, { 8817, 0xeb60 }, { 8825, 0xbabe }, { 8836, 0x6601 },
+ { 8841, 0xfcd8 }, { 8851, 0x583f }, { 8860, 0xcaf7 }, { 8871, 0x87df },
+ { 8882, 0xbfcd }, { 8894, 0xffa0 }, { 8904, 0x5bcd }, { 8914, 0xfebf },
+ { 8928, 0xb6fd }, { 8940, 0xefa7 }, { 8952, 0x77ef }, { 8965, 0xdf9c },
+ /* 0x8200 */
+ { 8976, 0x3fb7 }, { 8988, 0xf877 }, { 8999, 0x9d27 }, { 9008, 0xb7fc },
+ { 9020, 0xcab5 }, { 9029, 0xdfef }, { 9043, 0xfb5a }, { 9054, 0xf1b6 },
+ { 9064, 0xec39 }, { 9073, 0xef1f }, { 9085, 0xfbbf }, { 9099, 0x7ffb },
+ { 9113, 0x000d }, { 9116, 0xdafe }, { 9128, 0xbdfb }, { 9141, 0x4e7f },
+ /* 0x8300 */
+ { 9152, 0x33ff }, { 9164, 0x5ac0 }, { 9170, 0xbff5 }, { 9183, 0x9ffe },
+ { 9196, 0xffbf }, { 9211, 0x005f }, { 9217, 0x0000 }, { 9217, 0xfdf8 },
+ { 9229, 0xffca }, { 9241, 0x6ffd }, { 9254, 0xcffd }, { 9267, 0xa001 },
+ { 9270, 0xdfff }, { 9285, 0xfbf2 }, { 9297, 0xdfbf }, { 9311, 0xff7f },
+ /* 0x8400 */
+ { 9326, 0xfeda }, { 9338, 0x080f }, { 9343, 0xba08 }, { 9349, 0xbfff },
+ { 9364, 0x7afd }, { 9376, 0xeed7 }, { 9388, 0xfbeb }, { 9401, 0x67f9 },
+ { 9412, 0xe044 }, { 9417, 0xff93 }, { 9429, 0xdf97 }, { 9441, 0x9f57 },
+ { 9452, 0xfef7 }, { 9466, 0x08df }, { 9474, 0xdf80 }, { 9482, 0xfedf },
+ /* 0x8500 */
+ { 9496, 0xffc5 }, { 9508, 0xf7fe }, { 9522, 0xfffb }, { 9537, 0x6803 },
+ { 9542, 0x67fb }, { 9554, 0x6bfa }, { 9565, 0x7fff }, { 9580, 0x5fe2 },
+ { 9590, 0xffff }, { 9606, 0xff73 }, { 9619, 0x87df }, { 9630, 0xe7fb },
+ { 9643, 0xebfd }, { 9656, 0xf7a7 }, { 9668, 0xbf7e }, { 9681, 0xefc7 },
+ /* 0x8600 */
+ { 9693, 0x1ef3 }, { 9703, 0xdf82 }, { 9712, 0x76ff }, { 9725, 0xdf7e },
+ { 9738, 0x79c9 }, { 9747, 0xda7d }, { 9758, 0xefbe }, { 9771, 0x1e9b },
+ { 9780, 0x7ce0 }, { 9788, 0x77fb }, { 9801, 0x87be }, { 9811, 0xfffb },
+ { 9826, 0x1bff }, { 9838, 0xffdb }, { 9852, 0x3f5c }, { 9862, 0x4fe0 },
+ /* 0x8700 */
+ { 9870, 0x7fff }, { 9885, 0x5f0e }, { 9894, 0x77ff }, { 9908, 0xddbf },
+ { 9921, 0xf04f }, { 9930, 0xffff }, { 9946, 0xffff }, { 9962, 0x0ff8 },
+ { 9971, 0xa3be }, { 9981, 0xfddf }, { 9995, 0xfc1c }, { 10004, 0xfffd },
+ { 10019, 0x1f7d }, { 10030, 0xfb9e }, { 10042, 0xbdff }, { 10056, 0xdedc },
+ /* 0x8800 */
+ { 10067, 0x3f6f }, { 10079, 0xbafb }, { 10091, 0xdf7f }, { 10105, 0xfbef },
+ { 10119, 0x7d1b }, { 10129, 0x2eec }, { 10138, 0xaf8e }, { 10148, 0xf2f7 },
+ { 10160, 0x7b0f }, { 10170, 0xcfee }, { 10182, 0x1d96 }, { 10190, 0x77c6 },
+ { 10200, 0x7e07 }, { 10209, 0xfff5 }, { 10223, 0xd982 }, { 10230, 0x7fdf },
+ /* 0x8900 */
+ { 10244, 0x5ee6 }, { 10254, 0xc7ff }, { 10267, 0xfeee }, { 10280, 0x79ef },
+ { 10292, 0x9a56 }, { 10300, 0xffcf }, { 10314, 0xfe5f }, { 10327, 0xde5e },
+ { 10338, 0x896e }, { 10346, 0xf9e8 }, { 10356, 0xf45e }, { 10366, 0xe6c4 },
+ { 10374, 0x0001 }, { 10375, 0xbe7c }, { 10386, 0x3b7f }, { 10398, 0xdddf },
+ /* 0x8a00 */
+ { 10411, 0xd59d }, { 10421, 0xe9ef }, { 10433, 0x34ac }, { 10440, 0xde53 },
+ { 10450, 0xf573 }, { 10461, 0x4bf7 }, { 10472, 0x7b4f }, { 10483, 0x9eff },
+ { 10496, 0xb8fe }, { 10507, 0x476e }, { 10516, 0x0dfb }, { 10526, 0xff45 },
+ { 10537, 0xabfd }, { 10549, 0xfbfe }, { 10563, 0xe9d7 }, { 10574, 0xddff },
+ /* 0x8b00 */
+ { 10588, 0xedf7 }, { 10601, 0x7fff }, { 10616, 0xddfd }, { 10629, 0x7eeb },
+ { 10641, 0xcfe7 }, { 10653, 0xb7ff }, { 10667, 0xbde9 }, { 10678, 0xef91 },
+ { 10688, 0x5d75 }, { 10698, 0xd77c }, { 10709, 0x0000 }, { 10709, 0x0000 },
+ { 10709, 0x0000 }, { 10709, 0x0000 }, { 10709, 0x0000 }, { 10709, 0x0000 },
+ /* 0x8c00 */
+ { 10709, 0x0000 }, { 10709, 0x0000 }, { 10709, 0x0000 }, { 10709, 0xfa80 },
+ { 10716, 0xffee }, { 10730, 0xb4f1 }, { 10739, 0xbf76 }, { 10751, 0x2fef },
+ { 10763, 0xb677 }, { 10774, 0x77bf }, { 10787, 0x9fbf }, { 10800, 0xfffd },
+ { 10815, 0x95bf }, { 10826, 0xf6ae }, { 10837, 0x75ff }, { 10850, 0x7f3b },
+ /* 0x8d00 */
+ { 10862, 0xa7f5 }, { 10873, 0x0af9 }, { 10881, 0x0000 }, { 10881, 0x0000 },
+ { 10881, 0x0000 }, { 10881, 0x0000 }, { 10881, 0xfbd0 }, { 10891, 0x2bdd },
+ { 10901, 0xf633 }, { 10911, 0x9a7f }, { 10922, 0xfdab }, { 10934, 0xd6fc },
+ { 10945, 0xf9e6 }, { 10956, 0xbfeb }, { 10969, 0xdfdf }, { 10983, 0xf41f },
+ /* 0x8e00 */
+ { 10993, 0xa6fd }, { 11004, 0xffff }, { 11020, 0x4aff }, { 11031, 0xf37b },
+ { 11043, 0x7fb7 }, { 11056, 0xfef9 }, { 11069, 0xb6ff }, { 11082, 0x1d5c },
+ { 11090, 0x7ff6 }, { 11103, 0xe5ff }, { 11116, 0x1f7b }, { 11127, 0x2404 },
+ { 11130, 0xbe05 }, { 11138, 0xf99e }, { 11149, 0xdbe3 }, { 11160, 0xdff2 },
+ /* 0x8f00 */
+ { 11172, 0x6fef }, { 11185, 0xfdff }, { 11200, 0xd679 }, { 11210, 0xcbfc },
+ { 11221, 0xebfd }, { 11234, 0xefff }, { 11249, 0x001f }, { 11254, 0x0000 },
+ { 11254, 0x0000 }, { 11254, 0x9800 }, { 11257, 0xe148 }, { 11263, 0x8017 },
+ { 11268, 0x6a74 }, { 11276, 0x00fe }, { 11283, 0x6d7f }, { 11295, 0xfdf1 },
+ /* 0x9000 */
+ { 11307, 0xb87f }, { 11318, 0xfef3 }, { 11331, 0xe01f }, { 11339, 0xf176 },
+ { 11349, 0xee96 }, { 11359, 0x7b3f }, { 11371, 0xeb8d }, { 11381, 0xfffd },
+ { 11396, 0xadff }, { 11409, 0xcbb3 }, { 11419, 0x84ef }, { 11428, 0xe17f },
+ { 11439, 0x4daa }, { 11447, 0xbff0 }, { 11458, 0xbf3f }, { 11471, 0xfe3f },
+ /* 0x9100 */
+ { 11484, 0xebff }, { 11498, 0xffd7 }, { 11512, 0xffdf }, { 11527, 0xcf7f },
+ { 11540, 0xfffb }, { 11555, 0x85ed }, { 11564, 0xd73f }, { 11576, 0x07bc },
+ { 11584, 0xaeff }, { 11597, 0xfe0f }, { 11608, 0xfdaf }, { 11621, 0x76bf },
+ { 11633, 0xfaef }, { 11646, 0x37bb }, { 11657, 0x7fdc }, { 11669, 0xa3ba },
+ /* 0x9200 */
+ { 11678, 0xb6ff }, { 11691, 0x56f7 }, { 11702, 0x60f8 }, { 11709, 0xe7df },
+ { 11722, 0xff61 }, { 11733, 0x4cdf }, { 11743, 0xb0fb }, { 11753, 0xff45 },
+ { 11764, 0x7ded }, { 11776, 0x3ffa }, { 11788, 0x1fff }, { 11801, 0x18fc },
+ { 11809, 0xffff }, { 11825, 0xe3af }, { 11836, 0xc7d3 }, { 11846, 0xdf83 },
+ /* 0x9300 */
+ { 11856, 0xfb57 }, { 11868, 0xef7d }, { 11881, 0xefff }, { 11896, 0x1378 },
+ { 11903, 0xfec0 }, { 11912, 0x5ff7 }, { 11925, 0x34bb }, { 11934, 0x5ee3 },
+ { 11944, 0xf70d }, { 11954, 0xeff6 }, { 11967, 0xd7fe }, { 11980, 0x00bf },
+ { 11987, 0xf59d }, { 11998, 0xf7f7 }, { 12012, 0x51de }, { 12021, 0xffe0 },
+ /* 0x9400 */
+ { 12032, 0xfec9 }, { 12043, 0x037f }, { 12052, 0x5f01 }, { 12059, 0xbfef },
+ { 12073, 0x9ff1 }, { 12084, 0x60a7 }, { 12091, 0xef1d }, { 12102, 0xf1ff },
+ { 12115, 0x000f }, { 12119, 0x0000 }, { 12119, 0x0000 }, { 12119, 0x0000 },
+ { 12119, 0x0000 }, { 12119, 0x0000 }, { 12119, 0x0000 }, { 12119, 0x0000 },
+ /* 0x9500 */
+ { 12119, 0x0000 }, { 12119, 0x0000 }, { 12119, 0x0000 }, { 12119, 0x0000 },
+ { 12119, 0x0000 }, { 12119, 0x0000 }, { 12119, 0x0000 }, { 12119, 0x3c80 },
+ { 12124, 0xfb4d }, { 12135, 0xd91f }, { 12145, 0x7b3a }, { 12155, 0xfee3 },
+ { 12167, 0x3fe9 }, { 12178, 0xdc7f }, { 12190, 0x003f }, { 12196, 0x0000 },
+ /* 0x9600 */
+ { 12196, 0x0000 }, { 12196, 0x5000 }, { 12198, 0xf51f }, { 12209, 0xbe07 },
+ { 12218, 0xfc1d }, { 12228, 0xf91b }, { 12238, 0xbc1e }, { 12247, 0x71ff },
+ { 12259, 0x6ff9 }, { 12271, 0x5bbe }, { 12282, 0x5796 }, { 12291, 0x9b1b },
+ { 12300, 0x7fff }, { 12315, 0xfffc }, { 12329, 0x872e }, { 12337, 0xafe7 },
+ /* 0x9700 */
+ { 12349, 0xebf5 }, { 12361, 0xf34f }, { 12372, 0xdffd }, { 12386, 0xe725 },
+ { 12395, 0x0bdc }, { 12403, 0x5d44 }, { 12410, 0x5747 }, { 12419, 0xfddd },
+ { 12432, 0xed3f }, { 12444, 0x7790 }, { 12452, 0x7d7f }, { 12465, 0x8ac8 },
+ { 12471, 0xfafa }, { 12483, 0xf3f9 }, { 12495, 0x202a }, { 12499, 0xef4b },
+ /* 0x9800 */
+ { 12510, 0xf5ff }, { 12524, 0x79cf }, { 12535, 0xabd3 }, { 12545, 0x0ba5 },
+ { 12552, 0xf77a }, { 12564, 0xfb8f }, { 12576, 0x8ebd }, { 12586, 0x001f },
+ { 12591, 0x0000 }, { 12591, 0x0000 }, { 12591, 0xf300 }, { 12597, 0xfd4e },
+ { 12608, 0x1a57 }, { 12616, 0x8800 }, { 12618, 0xaeac }, { 12627, 0x7654 },
+ /* 0x9900 */
+ { 12635, 0x17ad }, { 12644, 0xcdff }, { 12657, 0xffb2 }, { 12669, 0xf42f },
+ { 12679, 0x5baa }, { 12688, 0xdbff }, { 12702, 0x0002 }, { 12703, 0x0000 },
+ { 12703, 0x0000 }, { 12703, 0x73c0 }, { 12710, 0xf9ea }, { 12721, 0x2e3f },
+ { 12731, 0xfa8e }, { 12741, 0xbbff }, { 12755, 0x76bc }, { 12765, 0xffd3 },
+ /* 0x9a00 */
+ { 12778, 0xeefe }, { 12791, 0x7e72 }, { 12801, 0x7ebd }, { 12813, 0xe7f7 },
+ { 12826, 0xf77f }, { 12840, 0xcefd }, { 12852, 0x0ff5 }, { 12862, 0x0000 },
+ { 12862, 0x0000 }, { 12862, 0x0000 }, { 12862, 0xa900 }, { 12866, 0xdb9b },
+ { 12877, 0xa4c7 }, { 12885, 0x917f }, { 12895, 0xf8ca }, { 12904, 0x7ece },
+ /* 0x9b00 */
+ { 12915, 0x7d7a }, { 12926, 0xc7e7 }, { 12937, 0xcbbd }, { 12948, 0xdcae },
+ { 12958, 0xfd7e }, { 12971, 0x8f76 }, { 12981, 0x91d3 }, { 12989, 0x7cf3 },
+ { 13000, 0x01e5 }, { 13006, 0x4c2f }, { 13014, 0xed77 }, { 13026, 0xa360 },
+ { 13032, 0x07db }, { 13041, 0x5ef8 }, { 13051, 0x1df7 }, { 13062, 0x2181 },
+ /* 0x9c00 */
+ { 13066, 0x6be0 }, { 13074, 0x309c }, { 13080, 0x3b3a }, { 13089, 0xfade },
+ { 13101, 0x7f53 }, { 13112, 0xc3f5 }, { 13122, 0x61cd }, { 13130, 0x07ba },
+ { 13138, 0x0000 }, { 13138, 0x0000 }, { 13138, 0x0000 }, { 13138, 0x0000 },
+ { 13138, 0x0000 }, { 13138, 0x0000 }, { 13138, 0x26e0 }, { 13144, 0xbefe },
+ /* 0x9d00 */
+ { 13157, 0x03f9 }, { 13165, 0xebb5 }, { 13176, 0xe36d }, { 13186, 0xe9cb },
+ { 13196, 0x9c2f }, { 13205, 0xbfde }, { 13218, 0x9f83 }, { 13227, 0xabbf },
+ { 13239, 0x1ff7 }, { 13251, 0xffd5 }, { 13264, 0xb7df }, { 13277, 0xdffe },
+ { 13291, 0xfdae }, { 13303, 0xffef }, { 13318, 0xfb7e }, { 13331, 0xeffd },
+ /* 0x9e00 */
+ { 13345, 0xaaff }, { 13357, 0x6ebf }, { 13369, 0x0000 }, { 13369, 0x0000 },
+ { 13369, 0x0000 }, { 13369, 0x0000 }, { 13369, 0x0000 }, { 13369, 0xb620 },
+ { 13375, 0x7fcd }, { 13387, 0xbe9e }, { 13398, 0x62b3 }, { 13406, 0x58f1 },
+ { 13414, 0xf10d }, { 13422, 0xfd7b }, { 13435, 0xe9f1 }, { 13445, 0xbefd },
+ /* 0x9f00 */
+ { 13458, 0xc6c3 }, { 13466, 0x5f6d }, { 13477, 0xff3d }, { 13490, 0x69ff },
+ { 13502, 0xffcf }, { 13516, 0xfbf4 }, { 13528, 0xdcfb }, { 13540, 0x4ff7 },
+ { 13552, 0x2000 }, { 13553, 0x1137 }, { 13560, 0x0015 },
+};
+static const Summary16 big5_uni2indx_pagefa[1] = {
+ /* 0xfa00 */
+ { 13563, 0x3000 },
+};
+static const Summary16 big5_uni2indx_pagefe[23] = {
+ /* 0xfe00 */
+ { 13565, 0x0000 }, { 13565, 0x0000 }, { 13565, 0x0000 }, { 13565, 0xfffb },
+ { 13580, 0xfe1f }, { 13592, 0xfef5 }, { 13605, 0x0e7f }, { 13615, 0x0000 },
+ { 13615, 0x0000 }, { 13615, 0x0000 }, { 13615, 0x0000 }, { 13615, 0x0000 },
+ { 13615, 0x0000 }, { 13615, 0x0000 }, { 13615, 0x0000 }, { 13615, 0x0000 },
+ /* 0xff00 */
+ { 13615, 0xff7a }, { 13628, 0xffff }, { 13644, 0xffff }, { 13660, 0x97ff },
+ { 13673, 0xfffe }, { 13688, 0x3fff }, { 13702, 0x0010 },
+};
+
+static int
+big5_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n)
+{
+ if (n >= 2) {
+ const Summary16 *summary = NULL;
+ if (wc < 0x0100)
+ summary = &big5_uni2indx_page00[(wc>>4)];
+ else if (wc >= 0x0200 && wc < 0x0460)
+ summary = &big5_uni2indx_page02[(wc>>4)-0x020];
+ else if (wc >= 0x2000 && wc < 0x22c0)
+ summary = &big5_uni2indx_page20[(wc>>4)-0x200];
+ else if (wc >= 0x2400 && wc < 0x2650)
+ summary = &big5_uni2indx_page24[(wc>>4)-0x240];
+ else if (wc >= 0x3000 && wc < 0x33e0)
+ summary = &big5_uni2indx_page30[(wc>>4)-0x300];
+ else if (wc >= 0x4e00 && wc < 0x9fb0)
+ summary = &big5_uni2indx_page4e[(wc>>4)-0x4e0];
+ else if (wc >= 0xfa00 && wc < 0xfa10)
+ summary = &big5_uni2indx_pagefa[(wc>>4)-0xfa0];
+ else if (wc >= 0xfe00 && wc < 0xff70)
+ summary = &big5_uni2indx_pagefe[(wc>>4)-0xfe0];
+ if (summary) {
+ unsigned short used = summary->used;
+ unsigned int i = wc & 0x0f;
+ if (used & ((unsigned short) 1 << i)) {
+ unsigned short c;
+ /* Keep in `used' only the bits 0..i-1. */
+ used &= ((unsigned short) 1 << i) - 1;
+ /* Add `summary->indx' and the number of bits set in `used'. */
+ used = (used & 0x5555) + ((used & 0xaaaa) >> 1);
+ used = (used & 0x3333) + ((used & 0xcccc) >> 2);
+ used = (used & 0x0f0f) + ((used & 0xf0f0) >> 4);
+ used = (used & 0x00ff) + (used >> 8);
+ c = big5_2charset[summary->indx + used];
+ r[0] = (c >> 8); r[1] = (c & 0xff);
+ return 2;
+ }
+ }
+ return RET_ILSEQ;
+ }
+ return RET_TOOSMALL;
+}
diff --git a/libX11/src/xlibi18n/lcUniConv/big5_emacs.h b/libX11/src/xlibi18n/lcUniConv/big5_emacs.h
index 67fb20097..246aebeb4 100644
--- a/libX11/src/xlibi18n/lcUniConv/big5_emacs.h
+++ b/libX11/src/xlibi18n/lcUniConv/big5_emacs.h
@@ -1,163 +1,163 @@
-
-/*
- * BIG5-0 and BIG5-1
- */
-
-/*
- BIG5 with its 13494 characters doesn't fit in a single 94x94 or 96x96
- block. Therefore Emacs/Mule developers, in a typically Japanese way of
- thinking, have developed an alternative encoding of BIG5 in two 94x94
- planes, very similar to the SHIFT_JIS encoding for JISX0208.
-
- Conversion between BIG5 codes (s1,s2) and BIG5-0 codes (c1,c2):
- Example. (s1,s2) = 0xA140, (c1,c2) = 0x2121.
- 0xA1 <= s1 <= 0xC7, 0x40 <= s2 <= 0x7E || 0xA1 <= s2 <= 0xFE,
- 0x21 <= c1 <= 0x62, 0x21 <= c2 <= 0x7E.
- Invariant:
- 157*(s1-0xA1) + (s2 < 0x80 ? s2-0x40 : s2-0x62)
- = 94*(c1-0x21)+(c2-0x21)
- Conversion (s1,s2) -> (c1,c2):
- t := 157*(s1-0xA1) + (s2 < 0x80 ? s2-0x40 : s2-0x62)
- c1 := (t div 94) + 0x21
- c2 := (t mod 94) + 0x21
- Conversion (c1,c2) -> (s1,s2):
- t := 94*(c1-0x21)+(c2-0x21)
- t2 := t mod 157
- s1 := (t div 157) + 0xA1
- s2 := (t2 < 0x3F ? t2+0x40 : t2+0x62)
-
- Conversion between BIG5 codes (s1,s2) and BIG5-1 codes (c1,c2):
- Example. (s1,s2) = 0xC940, (c1,c2) = 0x2121.
- 0xC9 <= s1 <= 0xF9, 0x40 <= s2 <= 0x7E || 0xA1 <= s2 <= 0xFE,
- 0x21 <= c1 <= 0x72, 0x21 <= c2 <= 0x7E.
- Invariant:
- 157*(s1-0xC9) + (s2 < 0x80 ? s2-0x40 : s2-0x62)
- = 94*(c1-0x21)+(c2-0x21)
- Conversion (s1,s2) -> (c1,c2):
- t := 157*(s1-0xC9) + (s2 < 0x80 ? s2-0x40 : s2-0x62)
- c1 := (t div 94) + 0x21
- c2 := (t mod 94) + 0x21
- Conversion (c1,c2) -> (s1,s2):
- t := 94*(c1-0x21)+(c2-0x21)
- t2 := t mod 157
- s1 := (t div 157) + 0xC9
- s2 := (t2 < 0x3F ? t2+0x40 : t2+0x62)
- */
-
-static int
-big5_0_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n)
-{
- unsigned char c1 = s[0];
- if (c1 >= 0x21 && c1 <= 0x62) {
- if (n >= 2) {
- unsigned char c2 = s[1];
- if (c2 >= 0x21 && c2 <= 0x7e) {
- unsigned int i = 94 * (c1 - 0x21) + (c2 - 0x21);
- if (0) {
- /* Unoptimized. */
- unsigned char buf[2];
- buf[0] = (i / 157) + 0xa1;
- i = i % 157;
- buf[1] = i + (i < 0x3f ? 0x40 : 0x62);
- return big5_mbtowc(conv,pwc,buf,2);
- } else {
- /* Inline the implementation of big5_mbtowc. */
- if (i < 6121) {
- unsigned short wc = big5_2uni_pagea1[i];
- if (wc != 0xfffd) {
- *pwc = (ucs4_t) wc;
- return 2;
- }
- }
- }
- }
- return RET_ILSEQ;
- }
- return RET_TOOFEW(0);
- }
- return RET_ILSEQ;
-}
-
-static int
-big5_1_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n)
-{
- unsigned char c1 = s[0];
- if (c1 >= 0x21 && c1 <= 0x72) {
- if (n >= 2) {
- unsigned char c2 = s[1];
- if (c2 >= 0x21 && c2 <= 0x7e) {
- unsigned int i = 94 * (c1 - 0x21) + (c2 - 0x21);
- if (0) {
- /* Unoptimized. */
- unsigned char buf[2];
- buf[0] = (i / 157) + 0xc9;
- i = i % 157;
- buf[1] = i + (i < 0x3f ? 0x40 : 0x62);
- return big5_mbtowc(conv,pwc,buf,2);
- } else {
- /* Inline the implementation of big5_mbtowc. */
- if (i < 7652) {
- unsigned short wc = big5_2uni_pagec9[i];
- if (wc != 0xfffd) {
- *pwc = (ucs4_t) wc;
- return 2;
- }
- }
- }
- }
- return RET_ILSEQ;
- }
- return RET_TOOFEW(0);
- }
- return RET_ILSEQ;
-}
-
-static int
-big5_0_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n)
-{
- if (n >= 2) {
- unsigned char buf[2];
- int ret = big5_wctomb(conv,buf,wc,2);
- if (ret != RET_ILSEQ) {
- unsigned char s1, s2;
- if (ret != 2) abort();
- s1 = buf[0];
- s2 = buf[1];
- if (!(s1 >= 0xa1)) abort();
- if (!((s2 >= 0x40 && s2 <= 0x7e) || (s2 >= 0xa1 && s2 <= 0xfe))) abort();
- if (s1 < 0xc9) {
- unsigned int t = 157 * (s1 - 0xa1) + s2 - (s2 < 0x80 ? 0x40 : 0x62);
- r[0] = (t / 94) + 0x21;
- r[1] = (t % 94) + 0x21;
- return 2;
- }
- }
- return RET_ILSEQ;
- }
- return RET_TOOSMALL;
-}
-
-static int
-big5_1_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n)
-{
- if (n >= 2) {
- unsigned char buf[2];
- int ret = big5_wctomb(conv,buf,wc,2);
- if (ret != RET_ILSEQ) {
- unsigned char s1, s2;
- if (ret != 2) abort();
- s1 = buf[0];
- s2 = buf[1];
- if (!(s1 <= 0xf9)) abort();
- if (!((s2 >= 0x40 && s2 <= 0x7e) || (s2 >= 0xa1 && s2 <= 0xfe))) abort();
- if (s1 >= 0xc9) {
- unsigned int t = 157 * (s1 - 0xc9) + s2 - (s2 < 0x80 ? 0x40 : 0x62);
- r[0] = (t / 94) + 0x21;
- r[1] = (t % 94) + 0x21;
- return 2;
- }
- }
- return RET_ILSEQ;
- }
- return RET_TOOSMALL;
-}
+
+/*
+ * BIG5-0 and BIG5-1
+ */
+
+/*
+ BIG5 with its 13494 characters doesn't fit in a single 94x94 or 96x96
+ block. Therefore Emacs/Mule developers, in a typically Japanese way of
+ thinking, have developed an alternative encoding of BIG5 in two 94x94
+ planes, very similar to the SHIFT_JIS encoding for JISX0208.
+
+ Conversion between BIG5 codes (s1,s2) and BIG5-0 codes (c1,c2):
+ Example. (s1,s2) = 0xA140, (c1,c2) = 0x2121.
+ 0xA1 <= s1 <= 0xC7, 0x40 <= s2 <= 0x7E || 0xA1 <= s2 <= 0xFE,
+ 0x21 <= c1 <= 0x62, 0x21 <= c2 <= 0x7E.
+ Invariant:
+ 157*(s1-0xA1) + (s2 < 0x80 ? s2-0x40 : s2-0x62)
+ = 94*(c1-0x21)+(c2-0x21)
+ Conversion (s1,s2) -> (c1,c2):
+ t := 157*(s1-0xA1) + (s2 < 0x80 ? s2-0x40 : s2-0x62)
+ c1 := (t div 94) + 0x21
+ c2 := (t mod 94) + 0x21
+ Conversion (c1,c2) -> (s1,s2):
+ t := 94*(c1-0x21)+(c2-0x21)
+ t2 := t mod 157
+ s1 := (t div 157) + 0xA1
+ s2 := (t2 < 0x3F ? t2+0x40 : t2+0x62)
+
+ Conversion between BIG5 codes (s1,s2) and BIG5-1 codes (c1,c2):
+ Example. (s1,s2) = 0xC940, (c1,c2) = 0x2121.
+ 0xC9 <= s1 <= 0xF9, 0x40 <= s2 <= 0x7E || 0xA1 <= s2 <= 0xFE,
+ 0x21 <= c1 <= 0x72, 0x21 <= c2 <= 0x7E.
+ Invariant:
+ 157*(s1-0xC9) + (s2 < 0x80 ? s2-0x40 : s2-0x62)
+ = 94*(c1-0x21)+(c2-0x21)
+ Conversion (s1,s2) -> (c1,c2):
+ t := 157*(s1-0xC9) + (s2 < 0x80 ? s2-0x40 : s2-0x62)
+ c1 := (t div 94) + 0x21
+ c2 := (t mod 94) + 0x21
+ Conversion (c1,c2) -> (s1,s2):
+ t := 94*(c1-0x21)+(c2-0x21)
+ t2 := t mod 157
+ s1 := (t div 157) + 0xC9
+ s2 := (t2 < 0x3F ? t2+0x40 : t2+0x62)
+ */
+
+static int
+big5_0_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n)
+{
+ unsigned char c1 = s[0];
+ if (c1 >= 0x21 && c1 <= 0x62) {
+ if (n >= 2) {
+ unsigned char c2 = s[1];
+ if (c2 >= 0x21 && c2 <= 0x7e) {
+ unsigned int i = 94 * (c1 - 0x21) + (c2 - 0x21);
+ if (0) {
+ /* Unoptimized. */
+ unsigned char buf[2];
+ buf[0] = (i / 157) + 0xa1;
+ i = i % 157;
+ buf[1] = i + (i < 0x3f ? 0x40 : 0x62);
+ return big5_mbtowc(conv,pwc,buf,2);
+ } else {
+ /* Inline the implementation of big5_mbtowc. */
+ if (i < 6121) {
+ unsigned short wc = big5_2uni_pagea1[i];
+ if (wc != 0xfffd) {
+ *pwc = (ucs4_t) wc;
+ return 2;
+ }
+ }
+ }
+ }
+ return RET_ILSEQ;
+ }
+ return RET_TOOFEW(0);
+ }
+ return RET_ILSEQ;
+}
+
+static int
+big5_1_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n)
+{
+ unsigned char c1 = s[0];
+ if (c1 >= 0x21 && c1 <= 0x72) {
+ if (n >= 2) {
+ unsigned char c2 = s[1];
+ if (c2 >= 0x21 && c2 <= 0x7e) {
+ unsigned int i = 94 * (c1 - 0x21) + (c2 - 0x21);
+ if (0) {
+ /* Unoptimized. */
+ unsigned char buf[2];
+ buf[0] = (i / 157) + 0xc9;
+ i = i % 157;
+ buf[1] = i + (i < 0x3f ? 0x40 : 0x62);
+ return big5_mbtowc(conv,pwc,buf,2);
+ } else {
+ /* Inline the implementation of big5_mbtowc. */
+ if (i < 7652) {
+ unsigned short wc = big5_2uni_pagec9[i];
+ if (wc != 0xfffd) {
+ *pwc = (ucs4_t) wc;
+ return 2;
+ }
+ }
+ }
+ }
+ return RET_ILSEQ;
+ }
+ return RET_TOOFEW(0);
+ }
+ return RET_ILSEQ;
+}
+
+static int
+big5_0_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n)
+{
+ if (n >= 2) {
+ unsigned char buf[2];
+ int ret = big5_wctomb(conv,buf,wc,2);
+ if (ret != RET_ILSEQ) {
+ unsigned char s1, s2;
+ if (ret != 2) abort();
+ s1 = buf[0];
+ s2 = buf[1];
+ if (!(s1 >= 0xa1)) abort();
+ if (!((s2 >= 0x40 && s2 <= 0x7e) || (s2 >= 0xa1 && s2 <= 0xfe))) abort();
+ if (s1 < 0xc9) {
+ unsigned int t = 157 * (s1 - 0xa1) + s2 - (s2 < 0x80 ? 0x40 : 0x62);
+ r[0] = (t / 94) + 0x21;
+ r[1] = (t % 94) + 0x21;
+ return 2;
+ }
+ }
+ return RET_ILSEQ;
+ }
+ return RET_TOOSMALL;
+}
+
+static int
+big5_1_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n)
+{
+ if (n >= 2) {
+ unsigned char buf[2];
+ int ret = big5_wctomb(conv,buf,wc,2);
+ if (ret != RET_ILSEQ) {
+ unsigned char s1, s2;
+ if (ret != 2) abort();
+ s1 = buf[0];
+ s2 = buf[1];
+ if (!(s1 <= 0xf9)) abort();
+ if (!((s2 >= 0x40 && s2 <= 0x7e) || (s2 >= 0xa1 && s2 <= 0xfe))) abort();
+ if (s1 >= 0xc9) {
+ unsigned int t = 157 * (s1 - 0xc9) + s2 - (s2 < 0x80 ? 0x40 : 0x62);
+ r[0] = (t / 94) + 0x21;
+ r[1] = (t % 94) + 0x21;
+ return 2;
+ }
+ }
+ return RET_ILSEQ;
+ }
+ return RET_TOOSMALL;
+}
diff --git a/libX11/src/xlibi18n/lcUniConv/big5hkscs.h b/libX11/src/xlibi18n/lcUniConv/big5hkscs.h
index 8924ba55c..721d1228e 100644
--- a/libX11/src/xlibi18n/lcUniConv/big5hkscs.h
+++ b/libX11/src/xlibi18n/lcUniConv/big5hkscs.h
@@ -1,6252 +1,6252 @@
-
-/*
- * BIG5-HKSCS
- */
-
-static const unsigned short big5hkscs_2uni_page81[19782] = {
- /* 0x81 */
- 0xeeb8, 0xeeb9, 0xeeba, 0xeebb, 0xeebc, 0xeebd, 0xeebe, 0xeebf,
- 0xeec0, 0xeec1, 0xeec2, 0xeec3, 0xeec4, 0xeec5, 0xeec6, 0xeec7,
- 0xeec8, 0xeec9, 0xeeca, 0xeecb, 0xeecc, 0xeecd, 0xeece, 0xeecf,
- 0xeed0, 0xeed1, 0xeed2, 0xeed3, 0xeed4, 0xeed5, 0xeed6, 0xeed7,
- 0xeed8, 0xeed9, 0xeeda, 0xeedb, 0xeedc, 0xeedd, 0xeede, 0xeedf,
- 0xeee0, 0xeee1, 0xeee2, 0xeee3, 0xeee4, 0xeee5, 0xeee6, 0xeee7,
- 0xeee8, 0xeee9, 0xeeea, 0xeeeb, 0xeeec, 0xeeed, 0xeeee, 0xeeef,
- 0xeef0, 0xeef1, 0xeef2, 0xeef3, 0xeef4, 0xeef5, 0xeef6, 0xeef7,
- 0xeef8, 0xeef9, 0xeefa, 0xeefb, 0xeefc, 0xeefd, 0xeefe, 0xeeff,
- 0xef00, 0xef01, 0xef02, 0xef03, 0xef04, 0xef05, 0xef06, 0xef07,
- 0xef08, 0xef09, 0xef0a, 0xef0b, 0xef0c, 0xef0d, 0xef0e, 0xef0f,
- 0xef10, 0xef11, 0xef12, 0xef13, 0xef14, 0xef15, 0xef16, 0xef17,
- 0xef18, 0xef19, 0xef1a, 0xef1b, 0xef1c, 0xef1d, 0xef1e, 0xef1f,
- 0xef20, 0xef21, 0xef22, 0xef23, 0xef24, 0xef25, 0xef26, 0xef27,
- 0xef28, 0xef29, 0xef2a, 0xef2b, 0xef2c, 0xef2d, 0xef2e, 0xef2f,
- 0xef30, 0xef31, 0xef32, 0xef33, 0xef34, 0xef35, 0xef36, 0xef37,
- 0xef38, 0xef39, 0xef3a, 0xef3b, 0xef3c, 0xef3d, 0xef3e, 0xef3f,
- 0xef40, 0xef41, 0xef42, 0xef43, 0xef44, 0xef45, 0xef46, 0xef47,
- 0xef48, 0xef49, 0xef4a, 0xef4b, 0xef4c, 0xef4d, 0xef4e, 0xef4f,
- 0xef50, 0xef51, 0xef52, 0xef53, 0xef54,
- /* 0x82 */
- 0xef55, 0xef56, 0xef57, 0xef58, 0xef59, 0xef5a, 0xef5b, 0xef5c,
- 0xef5d, 0xef5e, 0xef5f, 0xef60, 0xef61, 0xef62, 0xef63, 0xef64,
- 0xef65, 0xef66, 0xef67, 0xef68, 0xef69, 0xef6a, 0xef6b, 0xef6c,
- 0xef6d, 0xef6e, 0xef6f, 0xef70, 0xef71, 0xef72, 0xef73, 0xef74,
- 0xef75, 0xef76, 0xef77, 0xef78, 0xef79, 0xef7a, 0xef7b, 0xef7c,
- 0xef7d, 0xef7e, 0xef7f, 0xef80, 0xef81, 0xef82, 0xef83, 0xef84,
- 0xef85, 0xef86, 0xef87, 0xef88, 0xef89, 0xef8a, 0xef8b, 0xef8c,
- 0xef8d, 0xef8e, 0xef8f, 0xef90, 0xef91, 0xef92, 0xef93, 0xef94,
- 0xef95, 0xef96, 0xef97, 0xef98, 0xef99, 0xef9a, 0xef9b, 0xef9c,
- 0xef9d, 0xef9e, 0xef9f, 0xefa0, 0xefa1, 0xefa2, 0xefa3, 0xefa4,
- 0xefa5, 0xefa6, 0xefa7, 0xefa8, 0xefa9, 0xefaa, 0xefab, 0xefac,
- 0xefad, 0xefae, 0xefaf, 0xefb0, 0xefb1, 0xefb2, 0xefb3, 0xefb4,
- 0xefb5, 0xefb6, 0xefb7, 0xefb8, 0xefb9, 0xefba, 0xefbb, 0xefbc,
- 0xefbd, 0xefbe, 0xefbf, 0xefc0, 0xefc1, 0xefc2, 0xefc3, 0xefc4,
- 0xefc5, 0xefc6, 0xefc7, 0xefc8, 0xefc9, 0xefca, 0xefcb, 0xefcc,
- 0xefcd, 0xefce, 0xefcf, 0xefd0, 0xefd1, 0xefd2, 0xefd3, 0xefd4,
- 0xefd5, 0xefd6, 0xefd7, 0xefd8, 0xefd9, 0xefda, 0xefdb, 0xefdc,
- 0xefdd, 0xefde, 0xefdf, 0xefe0, 0xefe1, 0xefe2, 0xefe3, 0xefe4,
- 0xefe5, 0xefe6, 0xefe7, 0xefe8, 0xefe9, 0xefea, 0xefeb, 0xefec,
- 0xefed, 0xefee, 0xefef, 0xeff0, 0xeff1,
- /* 0x83 */
- 0xeff2, 0xeff3, 0xeff4, 0xeff5, 0xeff6, 0xeff7, 0xeff8, 0xeff9,
- 0xeffa, 0xeffb, 0xeffc, 0xeffd, 0xeffe, 0xefff, 0xf000, 0xf001,
- 0xf002, 0xf003, 0xf004, 0xf005, 0xf006, 0xf007, 0xf008, 0xf009,
- 0xf00a, 0xf00b, 0xf00c, 0xf00d, 0xf00e, 0xf00f, 0xf010, 0xf011,
- 0xf012, 0xf013, 0xf014, 0xf015, 0xf016, 0xf017, 0xf018, 0xf019,
- 0xf01a, 0xf01b, 0xf01c, 0xf01d, 0xf01e, 0xf01f, 0xf020, 0xf021,
- 0xf022, 0xf023, 0xf024, 0xf025, 0xf026, 0xf027, 0xf028, 0xf029,
- 0xf02a, 0xf02b, 0xf02c, 0xf02d, 0xf02e, 0xf02f, 0xf030, 0xf031,
- 0xf032, 0xf033, 0xf034, 0xf035, 0xf036, 0xf037, 0xf038, 0xf039,
- 0xf03a, 0xf03b, 0xf03c, 0xf03d, 0xf03e, 0xf03f, 0xf040, 0xf041,
- 0xf042, 0xf043, 0xf044, 0xf045, 0xf046, 0xf047, 0xf048, 0xf049,
- 0xf04a, 0xf04b, 0xf04c, 0xf04d, 0xf04e, 0xf04f, 0xf050, 0xf051,
- 0xf052, 0xf053, 0xf054, 0xf055, 0xf056, 0xf057, 0xf058, 0xf059,
- 0xf05a, 0xf05b, 0xf05c, 0xf05d, 0xf05e, 0xf05f, 0xf060, 0xf061,
- 0xf062, 0xf063, 0xf064, 0xf065, 0xf066, 0xf067, 0xf068, 0xf069,
- 0xf06a, 0xf06b, 0xf06c, 0xf06d, 0xf06e, 0xf06f, 0xf070, 0xf071,
- 0xf072, 0xf073, 0xf074, 0xf075, 0xf076, 0xf077, 0xf078, 0xf079,
- 0xf07a, 0xf07b, 0xf07c, 0xf07d, 0xf07e, 0xf07f, 0xf080, 0xf081,
- 0xf082, 0xf083, 0xf084, 0xf085, 0xf086, 0xf087, 0xf088, 0xf089,
- 0xf08a, 0xf08b, 0xf08c, 0xf08d, 0xf08e,
- /* 0x84 */
- 0xf08f, 0xf090, 0xf091, 0xf092, 0xf093, 0xf094, 0xf095, 0xf096,
- 0xf097, 0xf098, 0xf099, 0xf09a, 0xf09b, 0xf09c, 0xf09d, 0xf09e,
- 0xf09f, 0xf0a0, 0xf0a1, 0xf0a2, 0xf0a3, 0xf0a4, 0xf0a5, 0xf0a6,
- 0xf0a7, 0xf0a8, 0xf0a9, 0xf0aa, 0xf0ab, 0xf0ac, 0xf0ad, 0xf0ae,
- 0xf0af, 0xf0b0, 0xf0b1, 0xf0b2, 0xf0b3, 0xf0b4, 0xf0b5, 0xf0b6,
- 0xf0b7, 0xf0b8, 0xf0b9, 0xf0ba, 0xf0bb, 0xf0bc, 0xf0bd, 0xf0be,
- 0xf0bf, 0xf0c0, 0xf0c1, 0xf0c2, 0xf0c3, 0xf0c4, 0xf0c5, 0xf0c6,
- 0xf0c7, 0xf0c8, 0xf0c9, 0xf0ca, 0xf0cb, 0xf0cc, 0xf0cd, 0xf0ce,
- 0xf0cf, 0xf0d0, 0xf0d1, 0xf0d2, 0xf0d3, 0xf0d4, 0xf0d5, 0xf0d6,
- 0xf0d7, 0xf0d8, 0xf0d9, 0xf0da, 0xf0db, 0xf0dc, 0xf0dd, 0xf0de,
- 0xf0df, 0xf0e0, 0xf0e1, 0xf0e2, 0xf0e3, 0xf0e4, 0xf0e5, 0xf0e6,
- 0xf0e7, 0xf0e8, 0xf0e9, 0xf0ea, 0xf0eb, 0xf0ec, 0xf0ed, 0xf0ee,
- 0xf0ef, 0xf0f0, 0xf0f1, 0xf0f2, 0xf0f3, 0xf0f4, 0xf0f5, 0xf0f6,
- 0xf0f7, 0xf0f8, 0xf0f9, 0xf0fa, 0xf0fb, 0xf0fc, 0xf0fd, 0xf0fe,
- 0xf0ff, 0xf100, 0xf101, 0xf102, 0xf103, 0xf104, 0xf105, 0xf106,
- 0xf107, 0xf108, 0xf109, 0xf10a, 0xf10b, 0xf10c, 0xf10d, 0xf10e,
- 0xf10f, 0xf110, 0xf111, 0xf112, 0xf113, 0xf114, 0xf115, 0xf116,
- 0xf117, 0xf118, 0xf119, 0xf11a, 0xf11b, 0xf11c, 0xf11d, 0xf11e,
- 0xf11f, 0xf120, 0xf121, 0xf122, 0xf123, 0xf124, 0xf125, 0xf126,
- 0xf127, 0xf128, 0xf129, 0xf12a, 0xf12b,
- /* 0x85 */
- 0xf12c, 0xf12d, 0xf12e, 0xf12f, 0xf130, 0xf131, 0xf132, 0xf133,
- 0xf134, 0xf135, 0xf136, 0xf137, 0xf138, 0xf139, 0xf13a, 0xf13b,
- 0xf13c, 0xf13d, 0xf13e, 0xf13f, 0xf140, 0xf141, 0xf142, 0xf143,
- 0xf144, 0xf145, 0xf146, 0xf147, 0xf148, 0xf149, 0xf14a, 0xf14b,
- 0xf14c, 0xf14d, 0xf14e, 0xf14f, 0xf150, 0xf151, 0xf152, 0xf153,
- 0xf154, 0xf155, 0xf156, 0xf157, 0xf158, 0xf159, 0xf15a, 0xf15b,
- 0xf15c, 0xf15d, 0xf15e, 0xf15f, 0xf160, 0xf161, 0xf162, 0xf163,
- 0xf164, 0xf165, 0xf166, 0xf167, 0xf168, 0xf169, 0xf16a, 0xf16b,
- 0xf16c, 0xf16d, 0xf16e, 0xf16f, 0xf170, 0xf171, 0xf172, 0xf173,
- 0xf174, 0xf175, 0xf176, 0xf177, 0xf178, 0xf179, 0xf17a, 0xf17b,
- 0xf17c, 0xf17d, 0xf17e, 0xf17f, 0xf180, 0xf181, 0xf182, 0xf183,
- 0xf184, 0xf185, 0xf186, 0xf187, 0xf188, 0xf189, 0xf18a, 0xf18b,
- 0xf18c, 0xf18d, 0xf18e, 0xf18f, 0xf190, 0xf191, 0xf192, 0xf193,
- 0xf194, 0xf195, 0xf196, 0xf197, 0xf198, 0xf199, 0xf19a, 0xf19b,
- 0xf19c, 0xf19d, 0xf19e, 0xf19f, 0xf1a0, 0xf1a1, 0xf1a2, 0xf1a3,
- 0xf1a4, 0xf1a5, 0xf1a6, 0xf1a7, 0xf1a8, 0xf1a9, 0xf1aa, 0xf1ab,
- 0xf1ac, 0xf1ad, 0xf1ae, 0xf1af, 0xf1b0, 0xf1b1, 0xf1b2, 0xf1b3,
- 0xf1b4, 0xf1b5, 0xf1b6, 0xf1b7, 0xf1b8, 0xf1b9, 0xf1ba, 0xf1bb,
- 0xf1bc, 0xf1bd, 0xf1be, 0xf1bf, 0xf1c0, 0xf1c1, 0xf1c2, 0xf1c3,
- 0xf1c4, 0xf1c5, 0xf1c6, 0xf1c7, 0xf1c8,
- /* 0x86 */
- 0xf1c9, 0xf1ca, 0xf1cb, 0xf1cc, 0xf1cd, 0xf1ce, 0xf1cf, 0xf1d0,
- 0xf1d1, 0xf1d2, 0xf1d3, 0xf1d4, 0xf1d5, 0xf1d6, 0xf1d7, 0xf1d8,
- 0xf1d9, 0xf1da, 0xf1db, 0xf1dc, 0xf1dd, 0xf1de, 0xf1df, 0xf1e0,
- 0xf1e1, 0xf1e2, 0xf1e3, 0xf1e4, 0xf1e5, 0xf1e6, 0xf1e7, 0xf1e8,
- 0xf1e9, 0xf1ea, 0xf1eb, 0xf1ec, 0xf1ed, 0xf1ee, 0xf1ef, 0xf1f0,
- 0xf1f1, 0xf1f2, 0xf1f3, 0xf1f4, 0xf1f5, 0xf1f6, 0xf1f7, 0xf1f8,
- 0xf1f9, 0xf1fa, 0xf1fb, 0xf1fc, 0xf1fd, 0xf1fe, 0xf1ff, 0xf200,
- 0xf201, 0xf202, 0xf203, 0xf204, 0xf205, 0xf206, 0xf207, 0xf208,
- 0xf209, 0xf20a, 0xf20b, 0xf20c, 0xf20d, 0xf20e, 0xf20f, 0xf210,
- 0xf211, 0xf212, 0xf213, 0xf214, 0xf215, 0xf216, 0xf217, 0xf218,
- 0xf219, 0xf21a, 0xf21b, 0xf21c, 0xf21d, 0xf21e, 0xf21f, 0xf220,
- 0xf221, 0xf222, 0xf223, 0xf224, 0xf225, 0xf226, 0xf227, 0xf228,
- 0xf229, 0xf22a, 0xf22b, 0xf22c, 0xf22d, 0xf22e, 0xf22f, 0xf230,
- 0xf231, 0xf232, 0xf233, 0xf234, 0xf235, 0xf236, 0xf237, 0xf238,
- 0xf239, 0xf23a, 0xf23b, 0xf23c, 0xf23d, 0xf23e, 0xf23f, 0xf240,
- 0xf241, 0xf242, 0xf243, 0xf244, 0xf245, 0xf246, 0xf247, 0xf248,
- 0xf249, 0xf24a, 0xf24b, 0xf24c, 0xf24d, 0xf24e, 0xf24f, 0xf250,
- 0xf251, 0xf252, 0xf253, 0xf254, 0xf255, 0xf256, 0xf257, 0xf258,
- 0xf259, 0xf25a, 0xf25b, 0xf25c, 0xf25d, 0xf25e, 0xf25f, 0xf260,
- 0xf261, 0xf262, 0xf263, 0xf264, 0xf265,
- /* 0x87 */
- 0xf266, 0xf267, 0xf268, 0xf269, 0xf26a, 0xf26b, 0xf26c, 0xf26d,
- 0xf26e, 0xf26f, 0xf270, 0xf271, 0xf272, 0xf273, 0xf274, 0xf275,
- 0xf276, 0xf277, 0xf278, 0xf279, 0xf27a, 0xf27b, 0xf27c, 0xf27d,
- 0xf27e, 0xf27f, 0xf280, 0xf281, 0xf282, 0xf283, 0xf284, 0xf285,
- 0xf286, 0xf287, 0xf288, 0xf289, 0xf28a, 0xf28b, 0xf28c, 0xf28d,
- 0xf28e, 0xf28f, 0xf290, 0xf291, 0xf292, 0xf293, 0xf294, 0xf295,
- 0xf296, 0xf297, 0xf298, 0xf299, 0xf29a, 0xf29b, 0xf29c, 0xf29d,
- 0xf29e, 0xf29f, 0xf2a0, 0xf2a1, 0xf2a2, 0xf2a3, 0xf2a4, 0xf2a5,
- 0xf2a6, 0xf2a7, 0xf2a8, 0xf2a9, 0xf2aa, 0xf2ab, 0xf2ac, 0xf2ad,
- 0xf2ae, 0xf2af, 0xf2b0, 0xf2b1, 0xf2b2, 0xf2b3, 0xf2b4, 0xf2b5,
- 0xf2b6, 0xf2b7, 0xf2b8, 0xf2b9, 0xf2ba, 0xf2bb, 0xf2bc, 0xf2bd,
- 0xf2be, 0xf2bf, 0xf2c0, 0xf2c1, 0xf2c2, 0xf2c3, 0xf2c4, 0xf2c5,
- 0xf2c6, 0xf2c7, 0xf2c8, 0xf2c9, 0xf2ca, 0xf2cb, 0xf2cc, 0xf2cd,
- 0xf2ce, 0xf2cf, 0xf2d0, 0xf2d1, 0xf2d2, 0xf2d3, 0xf2d4, 0xf2d5,
- 0xf2d6, 0xf2d7, 0xf2d8, 0xf2d9, 0xf2da, 0xf2db, 0xf2dc, 0xf2dd,
- 0xf2de, 0xf2df, 0xf2e0, 0xf2e1, 0xf2e2, 0xf2e3, 0xf2e4, 0xf2e5,
- 0xf2e6, 0xf2e7, 0xf2e8, 0xf2e9, 0xf2ea, 0xf2eb, 0xf2ec, 0xf2ed,
- 0xf2ee, 0xf2ef, 0xf2f0, 0xf2f1, 0xf2f2, 0xf2f3, 0xf2f4, 0xf2f5,
- 0xf2f6, 0xf2f7, 0xf2f8, 0xf2f9, 0xf2fa, 0xf2fb, 0xf2fc, 0xf2fd,
- 0xf2fe, 0xf2ff, 0xf300, 0xf301, 0xf302,
- /* 0x88 */
- 0xf303, 0xf304, 0xf305, 0xf306, 0xf307, 0xf308, 0xf309, 0xf30a,
- 0xf30b, 0xf30c, 0xf30d, 0xf30e, 0xf30f, 0xf310, 0xf311, 0xf312,
- 0xf313, 0xf314, 0xf315, 0xf316, 0xf317, 0xf318, 0x0100, 0x00c1,
- 0x01cd, 0x00c0, 0x0112, 0x00c9, 0x011a, 0x00c8, 0x014c, 0x00d3,
- 0x01d1, 0x00d2, 0xf325, 0x1ebe, 0xf327, 0x1ec0, 0x00ca, 0x0101,
- 0x00e1, 0x01ce, 0x00e0, 0x0251, 0x0113, 0x00e9, 0x011b, 0x00e8,
- 0x012b, 0x00ed, 0x01d0, 0x00ec, 0x014d, 0x00f3, 0x01d2, 0x00f2,
- 0x016b, 0x00fa, 0x01d4, 0x00f9, 0x01d6, 0x01d8, 0x01da, 0x01dc,
- 0x00fc, 0xf344, 0x1ebf, 0xf346, 0x1ec1, 0x00ea, 0x0261, 0xf34a,
- 0xf34b, 0xf34c, 0xf34d, 0xf34e, 0xf34f, 0xf350, 0xf351, 0xf352,
- 0xf353, 0xf354, 0xf355, 0xf356, 0xf357, 0xf358, 0xf359, 0xf35a,
- 0xf35b, 0xf35c, 0xf35d, 0xf35e, 0xf35f, 0xf360, 0xf361, 0xf362,
- 0xf363, 0xf364, 0xf365, 0xf366, 0xf367, 0xf368, 0xf369, 0xf36a,
- 0xf36b, 0xf36c, 0xf36d, 0xf36e, 0xf36f, 0xf370, 0xf371, 0xf372,
- 0xf373, 0xf374, 0xf375, 0xf376, 0xf377, 0xf378, 0xf379, 0xf37a,
- 0xf37b, 0xf37c, 0xf37d, 0xf37e, 0xf37f, 0xf380, 0xf381, 0xf382,
- 0xf383, 0xf384, 0xf385, 0xf386, 0xf387, 0xf388, 0xf389, 0xf38a,
- 0xf38b, 0xf38c, 0xf38d, 0xf38e, 0xf38f, 0xf390, 0xf391, 0xf392,
- 0xf393, 0xf394, 0xf395, 0xf396, 0xf397, 0xf398, 0xf399, 0xf39a,
- 0xf39b, 0xf39c, 0xf39d, 0xf39e, 0xf39f,
- /* 0x89 */
- 0xf3a0, 0xf3a1, 0xf3a2, 0x650a, 0xf3a4, 0xf3a5, 0x4e3d, 0x6edd,
- 0x9d4e, 0x91df, 0xf3aa, 0xf3ab, 0xf3ac, 0x6491, 0x4f1a, 0x4f28,
- 0x4fa8, 0x5156, 0x5174, 0x519c, 0x51e4, 0x52a1, 0x52a8, 0x533b,
- 0x534e, 0x53d1, 0x53d8, 0x56e2, 0x58f0, 0x5904, 0x5907, 0x5932,
- 0x5934, 0x5b66, 0x5b9e, 0x5b9f, 0x5c9a, 0x5e86, 0x603b, 0x6589,
- 0x67fe, 0x6804, 0x6865, 0x6d4e, 0x70bc, 0x7535, 0x7ea4, 0x7eac,
- 0x7eba, 0x7ec7, 0x7ecf, 0x7edf, 0x7f06, 0x7f37, 0x827a, 0x82cf,
- 0x836f, 0x89c6, 0x8bbe, 0x8be2, 0x8f66, 0x8f67, 0x8f6e, 0x7411,
- 0x7cfc, 0x7dcd, 0x6946, 0x7ac9, 0x5227, 0xf3e5, 0xf3e6, 0xf3e7,
- 0xf3e8, 0x918c, 0x78b8, 0x915e, 0x80bc, 0xf3ed, 0x8d0b, 0x80f6,
- 0xf3f0, 0xf3f1, 0xf3f2, 0x809f, 0x9ec7, 0x4ccd, 0x9dc9, 0x9e0c,
- 0x4c3e, 0xf3f9, 0xf3fa, 0x9e0a, 0xf3fc, 0x35c1, 0xf3fe, 0x6e9a,
- 0x823e, 0x7519, 0xf402, 0x4911, 0x9a6c, 0x9a8f, 0x9f99, 0x7987,
- 0xf408, 0xf409, 0xf40a, 0xf40b, 0x4e24, 0x4e81, 0x4e80, 0x4e87,
- 0x4ebf, 0x4eeb, 0x4f37, 0x344c, 0x4fbd, 0x3e48, 0x5003, 0x5088,
- 0x347d, 0x3493, 0x34a5, 0x5186, 0x5905, 0x51db, 0x51fc, 0x5205,
- 0x4e89, 0x5279, 0x5290, 0x5327, 0x35c7, 0x53a9, 0x3551, 0x53b0,
- 0x3553, 0x53c2, 0x5423, 0x356d, 0x3572, 0x3681, 0x5493, 0x54a3,
- 0x54b4, 0x54b9, 0x54d0, 0x54ef, 0x5518, 0x5523, 0x5528, 0x3598,
- 0x553f, 0x35a5, 0x35bf, 0x55d7, 0x35c5,
- /* 0x8a */
- 0xf43d, 0x5525, 0xf43f, 0xf440, 0xf441, 0xf442, 0x5590, 0xf444,
- 0x39ec, 0xf446, 0x8e46, 0xf448, 0xf449, 0x4053, 0xf44b, 0x777a,
- 0xf44d, 0x3a34, 0x47d5, 0xf450, 0xf451, 0xf452, 0x64dd, 0xf454,
- 0xf455, 0xf456, 0xf457, 0x648d, 0x8e7e, 0xf45a, 0xf45b, 0xf45c,
- 0xf45d, 0xf45e, 0xf45f, 0xf460, 0xf461, 0xf462, 0xf463, 0x47f4,
- 0xf465, 0xf466, 0x9ab2, 0x3a67, 0xf469, 0x3fed, 0x3506, 0xf46c,
- 0xf46d, 0xf46e, 0xf46f, 0x9d6e, 0x9815, 0xf472, 0x43d9, 0xf474,
- 0x64b4, 0x54e3, 0xf477, 0xf478, 0xf479, 0x39fb, 0xf47b, 0xf47c,
- 0xf47d, 0xf47e, 0x64ea, 0xf480, 0xf481, 0x8e68, 0xf483, 0xf484,
- 0xf485, 0xf486, 0x480b, 0xf488, 0x3ffa, 0x5873, 0xf48b, 0xf48c,
- 0xf48d, 0xf48e, 0xf48f, 0xf490, 0xf491, 0x5579, 0x40bb, 0x43ba,
- 0xf495, 0x4ab4, 0xf497, 0xf498, 0x81aa, 0x98f5, 0xf49b, 0x6379,
- 0x39fe, 0xf49e, 0x8dc0, 0x56a1, 0x647c, 0x3e43, 0xf4a3, 0xf4a4,
- 0xf4a5, 0xf4a6, 0xf4a7, 0xf4a8, 0xf4a9, 0xf4aa, 0x3992, 0x3a06,
- 0xf4ad, 0x3578, 0xf4af, 0xf4b0, 0x5652, 0xf4b2, 0xf4b3, 0xf4b4,
- 0x34bc, 0x6c3d, 0xf4b7, 0xf4b8, 0xf4b9, 0xf4ba, 0xf4bb, 0xf4bc,
- 0xf4bd, 0xf4be, 0xf4bf, 0xf4c0, 0xf4c1, 0x7f93, 0xf4c3, 0xf4c4,
- 0xf4c5, 0x35fb, 0xf4c7, 0xf4c8, 0xf4c9, 0xf4ca, 0x3f93, 0xf4cc,
- 0xf4cd, 0xf4ce, 0xf4cf, 0xf4d0, 0xf4d1, 0xf4d2, 0xf4d3, 0xf4d4,
- 0xf4d5, 0x3ff9, 0xf4d7, 0x6432, 0xf4d9,
- /* 0x8b */
- 0xf4da, 0xf4db, 0xf4dc, 0xf4dd, 0xf4de, 0xf4df, 0xf4e0, 0x3a18,
- 0xf4e2, 0xf4e3, 0xf4e4, 0xf4e5, 0xf4e6, 0xf4e7, 0xf4e8, 0xf4e9,
- 0x95aa, 0x54cc, 0x82c4, 0x55b9, 0xf4ee, 0xf4ef, 0x9c26, 0x9ab6,
- 0xf4f2, 0xf4f3, 0x7140, 0x816d, 0x80ec, 0x5c1c, 0xf4f8, 0x8134,
- 0x3797, 0x535f, 0xf4fc, 0x91b6, 0xf4fe, 0xf4ff, 0xf500, 0xf501,
- 0x35dd, 0xf503, 0x3609, 0xf505, 0x56af, 0xf507, 0xf508, 0xf509,
- 0xf50a, 0xf50b, 0xf50c, 0xf50d, 0xf50e, 0xf50f, 0xf510, 0xf511,
- 0x5a54, 0xf513, 0xf514, 0xf515, 0xf516, 0x579c, 0xf518, 0xf519,
- 0xf51a, 0xf51b, 0xf51c, 0xf51d, 0x3703, 0xf51f, 0xf520, 0xf521,
- 0xf522, 0xf523, 0xf524, 0xf525, 0xf526, 0x5899, 0x5268, 0x361a,
- 0xf52a, 0x7bb2, 0x5b68, 0x4800, 0x4b2c, 0x9f27, 0x49e7, 0x9c1f,
- 0x9b8d, 0xf533, 0xf534, 0x55fb, 0x35f2, 0x5689, 0x4e28, 0x5902,
- 0xf53a, 0xf53b, 0x9751, 0xf53d, 0x4e5b, 0x4ebb, 0x353e, 0x5c23,
- 0x5f51, 0x5fc4, 0x38fa, 0x624c, 0x6535, 0x6b7a, 0x6c35, 0x6c3a,
- 0x706c, 0x722b, 0x4e2c, 0x72ad, 0xf54e, 0x7f52, 0x793b, 0x7cf9,
- 0x7f53, 0xf553, 0x34c1, 0xf555, 0xf556, 0x8002, 0x8080, 0xf559,
- 0xf55a, 0x535d, 0x8864, 0x89c1, 0xf55e, 0x8ba0, 0x8d1d, 0x9485,
- 0x9578, 0x957f, 0x95e8, 0xf565, 0x97e6, 0x9875, 0x98ce, 0x98de,
- 0x9963, 0xf56b, 0x9c7c, 0x9e1f, 0x9ec4, 0x6b6f, 0xf907, 0x4e37,
- 0xf572, 0x961d, 0x6237, 0x94a2, 0xf576,
- /* 0x8c */
- 0x503b, 0x6dfe, 0xf579, 0xf57a, 0x3dc9, 0x888f, 0xf57d, 0x7077,
- 0x5cf5, 0x4b20, 0xf581, 0x3559, 0xf583, 0x6122, 0xf585, 0x8fa7,
- 0x91f6, 0x7191, 0x6719, 0x73ba, 0xf58b, 0xf58c, 0x3c8b, 0xf58e,
- 0x4b10, 0x78e4, 0x7402, 0x51ae, 0xf593, 0x4009, 0x6a63, 0xf596,
- 0x4223, 0x860f, 0xf599, 0x7a2a, 0xf59b, 0xf59c, 0x9755, 0x704d,
- 0x5324, 0xf5a0, 0x93f4, 0x76d9, 0xf5a3, 0xf5a4, 0x77dd, 0x4ea3,
- 0x4ff0, 0x50bc, 0x4e2f, 0x4f17, 0xf5ab, 0x5434, 0x7d8b, 0x5892,
- 0x58d0, 0xf5b0, 0x5e92, 0x5e99, 0x5fc2, 0xf5b4, 0x658b, 0xf5b6,
- 0x6919, 0x6a43, 0xf5b9, 0x6cff, 0xf5bb, 0x7200, 0xf5bd, 0x738c,
- 0x3edb, 0xf5c0, 0x5b15, 0x74b9, 0x8b83, 0xf5c4, 0xf5c5, 0x7a93,
- 0x7bec, 0x7cc3, 0x7e6c, 0x82f8, 0x8597, 0xf5cc, 0x8890, 0xf5ce,
- 0x8eb9, 0xf5d0, 0x8fcf, 0x855f, 0x99e0, 0x9221, 0xf5d5, 0xf5d6,
- 0xf5d7, 0x4071, 0x42a2, 0x5a1a, 0xf5db, 0xf5dc, 0xf5dd, 0x9868,
- 0x676b, 0x4276, 0x573d, 0xf5e2, 0x85d6, 0xf5e4, 0x82bf, 0xf5e6,
- 0x4c81, 0xf5e8, 0x5d7b, 0xf5ea, 0xf5eb, 0xf5ec, 0xf5ed, 0x5b96,
- 0xf5ef, 0xf5f0, 0x7e5b, 0xf5f2, 0xf5f3, 0xf5f4, 0xf5f5, 0xf5f6,
- 0xf5f7, 0xf5f8, 0xf5f9, 0xf5fa, 0xf5fb, 0xf5fc, 0xf5fd, 0xf5fe,
- 0xf5ff, 0xf600, 0xf601, 0xf602, 0xf603, 0xf604, 0xf605, 0xf606,
- 0xf607, 0xf608, 0xf609, 0xf60a, 0xf60b, 0xf60c, 0xf60d, 0xf60e,
- 0xf60f, 0xf610, 0xf611, 0xf612, 0xf613,
- /* 0x8d */
- 0xf614, 0xf615, 0xf616, 0xf617, 0xf618, 0xf619, 0xf61a, 0xf61b,
- 0xf61c, 0xf61d, 0xf61e, 0xf61f, 0xf620, 0xf621, 0xf622, 0xf623,
- 0xf624, 0xf625, 0xf626, 0xf627, 0xf628, 0xf629, 0xf62a, 0xf62b,
- 0xf62c, 0xf62d, 0xf62e, 0xf62f, 0xf630, 0xf631, 0xf632, 0xf633,
- 0x5d3e, 0x5d48, 0x5d56, 0x3dfc, 0x380f, 0x5da4, 0x5db9, 0x3820,
- 0x3838, 0x5e42, 0x5ebd, 0x5f25, 0x5f83, 0x3908, 0x3914, 0x393f,
- 0x394d, 0x60d7, 0x613d, 0x5ce5, 0x3989, 0x61b7, 0x61b9, 0x61cf,
- 0x39b8, 0x622c, 0x6290, 0x62e5, 0x6318, 0x39f8, 0x56b1, 0x3a03,
- 0x63e2, 0x63fb, 0x6407, 0x645a, 0x3a4b, 0x64c0, 0x5d15, 0x5621,
- 0x9f9f, 0x3a97, 0x6586, 0x3abd, 0x65ff, 0x6653, 0x3af2, 0x6692,
- 0x3b22, 0x6716, 0x3b42, 0x67a4, 0x6800, 0x3b58, 0x684a, 0x6884,
- 0x3b72, 0x3b71, 0x3b7b, 0x6909, 0x6943, 0x725c, 0x6964, 0x699f,
- 0x6985, 0x3bbc, 0x69d6, 0x3bdd, 0x6a65, 0x6a74, 0x6a71, 0x6a82,
- 0x3bec, 0x6a99, 0x3bf2, 0x6aab, 0x6ab5, 0x6ad4, 0x6af6, 0x6b81,
- 0x6bc1, 0x6bea, 0x6c75, 0x6caa, 0x3ccb, 0x6d02, 0x6d06, 0x6d26,
- 0x6d81, 0x3cef, 0x6da4, 0x6db1, 0x6e15, 0x6e18, 0x6e29, 0x6e86,
- 0xf694, 0x6ebb, 0x6ee2, 0x6eda, 0x9f7f, 0x6ee8, 0x6ee9, 0x6f24,
- 0x6f34, 0x3d46, 0xf69e, 0x6f81, 0x6fbe, 0x3d6a, 0x3d75, 0x71b7,
- 0x5c99, 0x3d8a, 0x702c, 0x3d91, 0x7050, 0x7054, 0x706f, 0x707f,
- 0x7089, 0xf6ad, 0x43c1, 0x35f1, 0xf6b0,
- /* 0x8e */
- 0xe311, 0x57be, 0xe313, 0x713e, 0xe315, 0x364e, 0x69a2, 0xe318,
- 0x5b74, 0x7a49, 0xe31b, 0xe31c, 0x7a65, 0x7a7d, 0xe31f, 0x7abb,
- 0x7ab0, 0x7ac2, 0x7ac3, 0x71d1, 0xe325, 0x41ca, 0x7ada, 0x7add,
- 0x7aea, 0x41ef, 0x54b2, 0xe32c, 0x7b0b, 0x7b55, 0x7b29, 0xe330,
- 0xe331, 0x7ba2, 0x7b6f, 0x839c, 0xe335, 0xe336, 0x7bd0, 0x8421,
- 0x7b92, 0x7bb8, 0xe33b, 0x3dad, 0xe33d, 0x8492, 0x7bfa, 0x7c06,
- 0x7c35, 0xe342, 0x7c44, 0x7c83, 0xe345, 0x7ca6, 0x667d, 0xe348,
- 0x7cc9, 0x7cc7, 0x7ce6, 0x7c74, 0x7cf3, 0x7cf5, 0x7cce, 0x7e67,
- 0x451d, 0xe352, 0x7d5d, 0xe354, 0x748d, 0x7d89, 0x7dab, 0x7135,
- 0x7db3, 0x7dd2, 0xe35b, 0xe35c, 0x7de4, 0x3d13, 0x7df5, 0xe360,
- 0x7de5, 0xe362, 0x7e1d, 0xe364, 0xe365, 0x7e6e, 0x7e92, 0x432b,
- 0x946c, 0x7e27, 0x7f40, 0x7f41, 0x7f47, 0x7936, 0xe36f, 0x99e1,
- 0x7f97, 0xe372, 0x7fa3, 0xe374, 0xe375, 0x455c, 0xe377, 0x4503,
- 0xe379, 0x7ffa, 0xe37b, 0x8005, 0x8008, 0x801d, 0x8028, 0x802f,
- 0xe381, 0xe382, 0x803b, 0x803c, 0x8061, 0xe386, 0x4989, 0xe388,
- 0xe389, 0xe38a, 0x6725, 0x80a7, 0xe38d, 0x8107, 0x811a, 0x58b0,
- 0xe391, 0x6c7f, 0xe393, 0xe394, 0x64e7, 0xe396, 0x8218, 0xe398,
- 0x6a53, 0xe39a, 0xe39b, 0x447a, 0x8229, 0xe39e, 0xe39f, 0xe3a0,
- 0x4ff9, 0xe3a2, 0x84e2, 0x8362, 0xe3a5, 0xe3a6, 0xe3a7, 0xe3a8,
- 0xe3a9, 0x82aa, 0x691b, 0xe3ac, 0x41db,
- /* 0x8f */
- 0x854b, 0x82d0, 0x831a, 0xe3b1, 0xe3b2, 0x36c1, 0xe3b4, 0xe3b5,
- 0x827b, 0x82e2, 0x8318, 0xe3b9, 0xe3ba, 0xe3bb, 0xe3bc, 0xe3bd,
- 0x3dbf, 0x831d, 0x55ec, 0x8385, 0x450b, 0xe3c3, 0x83ac, 0x83c1,
- 0x83d3, 0x347e, 0xe3c8, 0x6a57, 0x855a, 0x3496, 0xe3cc, 0xe3cd,
- 0x8458, 0xe3cf, 0x8471, 0x3dd3, 0x44e4, 0x6aa7, 0x844a, 0xe3d5,
- 0x7958, 0x84a8, 0xe3d8, 0xe3d9, 0xe3da, 0x84de, 0x840f, 0x8391,
- 0x44a0, 0x8493, 0x84e4, 0xe3e1, 0x4240, 0xe3e3, 0x4543, 0x8534,
- 0x5af2, 0xe3e7, 0x4527, 0x8573, 0x4516, 0x67bf, 0x8616, 0xe3ed,
- 0xe3ee, 0x85c1, 0xe3f0, 0x8602, 0xe3f2, 0xe3f3, 0xe3f4, 0x456a,
- 0x8628, 0x3648, 0xe3f8, 0x53f7, 0xe3fa, 0x867e, 0x8771, 0xe3fd,
- 0x87ee, 0xe3ff, 0x87b1, 0x87da, 0x880f, 0x5661, 0x866c, 0x6856,
- 0x460f, 0x8845, 0x8846, 0xe409, 0xe40a, 0xe40b, 0x885e, 0x889c,
- 0x465b, 0x88b4, 0x88b5, 0x63c1, 0x88c5, 0x7777, 0xe414, 0x8987,
- 0x898a, 0x89a6, 0x89a9, 0x89a7, 0x89bc, 0xe41b, 0x89e7, 0xe41d,
- 0xe41e, 0x8a9c, 0x7793, 0x91fe, 0x8a90, 0xe423, 0x7ae9, 0xe425,
- 0xe426, 0x4713, 0xe428, 0x717c, 0x8b0c, 0x8b1f, 0xe42c, 0xe42d,
- 0x8b3f, 0x8b4c, 0x8b4d, 0x8aa9, 0xe432, 0x8b90, 0x8b9b, 0x8aaf,
- 0xe436, 0x4615, 0x884f, 0x8c9b, 0xe43a, 0xe43b, 0xe43c, 0x3725,
- 0xe43e, 0x8cd6, 0xe440, 0xe441, 0x8d12, 0x8d03, 0xe444, 0x8cdb,
- 0x705c, 0x8d11, 0xe448, 0x3ed0, 0x8d77,
- /* 0x90 */
- 0x8da9, 0xe44c, 0xe44d, 0xe44e, 0x3b7c, 0xe450, 0xe451, 0x7ae7,
- 0x8ead, 0x8eb6, 0x8ec3, 0x92d4, 0x8f19, 0x8f2d, 0xe459, 0xe45a,
- 0x8fa5, 0x9303, 0xe45d, 0xe45e, 0x8fb3, 0x492a, 0xe461, 0xe462,
- 0xe463, 0x5ef8, 0xe465, 0x8ff9, 0xe467, 0xe468, 0xe469, 0xe46a,
- 0x3980, 0xe46c, 0x9037, 0xe46e, 0xe46f, 0x9061, 0xe471, 0xe472,
- 0x90a8, 0xe474, 0x90c4, 0xe476, 0x90ae, 0x90fd, 0x9167, 0x3af0,
- 0x91a9, 0x91c4, 0x7cac, 0xe47e, 0xe47f, 0x920e, 0x6c9f, 0x9241,
- 0x9262, 0xe484, 0x92b9, 0xe486, 0xe487, 0xe488, 0xe489, 0xe48a,
- 0x932c, 0x936b, 0xe48d, 0xe48e, 0x708f, 0x5ac3, 0xe491, 0xe492,
- 0x4965, 0x9244, 0xe495, 0xe496, 0xe497, 0x9373, 0x945b, 0x8ebc,
- 0x9585, 0x95a6, 0x9426, 0x95a0, 0x6ff6, 0x42b9, 0xe4a1, 0xe4a2,
- 0xe4a3, 0xe4a4, 0x49df, 0x6c1c, 0x967b, 0x9696, 0x416c, 0x96a3,
- 0xe4ab, 0x61da, 0x96b6, 0x78f5, 0xe4af, 0x96bd, 0x53cc, 0x49a1,
- 0xe4b3, 0xe4b4, 0xe4b5, 0xe4b6, 0xe4b7, 0xe4b8, 0xe4b9, 0xe4ba,
- 0x9731, 0x8642, 0x9736, 0x4a0f, 0x453d, 0x4585, 0xe4c1, 0x7075,
- 0x5b41, 0x971b, 0x975c, 0xe4c6, 0x9757, 0x5b4a, 0xe4c9, 0x975f,
- 0x9425, 0x50d0, 0xe4cd, 0xe4ce, 0x9789, 0x979f, 0x97b1, 0x97be,
- 0x97c0, 0x97d2, 0x97e0, 0xe4d6, 0x97ee, 0x741c, 0xe4d9, 0x97ff,
- 0x97f5, 0xe4dc, 0xe4dd, 0x4ad1, 0x9834, 0x9833, 0x984b, 0x9866,
- 0x3b0e, 0xe4e4, 0x3d51, 0xe4e6, 0xe4e7,
- /* 0x91 */
- 0xe4e8, 0x98ca, 0x98b7, 0x98c8, 0x98c7, 0x4aff, 0xe4ee, 0xe4ef,
- 0x55b0, 0x98e1, 0x98e6, 0x98ec, 0x9378, 0x9939, 0xe4f6, 0x4b72,
- 0xe4f8, 0xe4f9, 0x99f5, 0x9a0c, 0x9a3b, 0x9a10, 0x9a58, 0xe4ff,
- 0x36c4, 0xe501, 0xe502, 0x9ae0, 0x9ae2, 0xe505, 0x9af4, 0x4c0e,
- 0x9b14, 0x9b2d, 0xe50a, 0x5034, 0x9b34, 0xe50d, 0x38c3, 0xe50f,
- 0x9b50, 0x9b40, 0xe512, 0x5a45, 0xe514, 0x9b8e, 0xe516, 0x9c02,
- 0x9bff, 0x9c0c, 0xe51a, 0x9dd4, 0xe51c, 0xe51d, 0xe51e, 0xe51f,
- 0xe520, 0xe521, 0x9d7e, 0x9d83, 0xe524, 0x9e0e, 0x6888, 0x9dc4,
- 0xe528, 0xe529, 0xe52a, 0xe52b, 0xe52c, 0x9d39, 0xe52e, 0xe52f,
- 0x9e90, 0x9e95, 0x9e9e, 0x9ea2, 0x4d34, 0x9eaa, 0x9eaf, 0xe537,
- 0x9ec1, 0x3b60, 0x39e5, 0x3d1d, 0x4f32, 0x37be, 0xe53e, 0x9f02,
- 0x9f08, 0x4b96, 0x9424, 0xe543, 0x9f17, 0x9f16, 0x9f39, 0x569f,
- 0x568a, 0x9f45, 0x99b8, 0xe54b, 0x97f2, 0x847f, 0x9f62, 0x9f69,
- 0x7adc, 0x9f8e, 0x7216, 0x4bbe, 0xe554, 0xe555, 0x7177, 0xe557,
- 0xe558, 0xe559, 0x739e, 0xe55b, 0xe55c, 0x799f, 0xe55e, 0xe55f,
- 0x9369, 0x93f3, 0xe562, 0x92ec, 0x9381, 0x93cb, 0xe566, 0xe567,
- 0x7217, 0x3eeb, 0x7772, 0x7a43, 0x70d0, 0xe56d, 0xe56e, 0x717e,
- 0xe570, 0x70a3, 0xe572, 0xe573, 0x3ec7, 0xe575, 0xe576, 0xe577,
- 0x3722, 0xe579, 0xe57a, 0x36e1, 0xe57c, 0xe57d, 0xe57e, 0x3723,
- 0xe580, 0x575b, 0xe582, 0xe583, 0xe584,
- /* 0x92 */
- 0xe585, 0xe586, 0x8503, 0xe588, 0x8503, 0x8455, 0xe58b, 0xe58c,
- 0xe58d, 0xe58e, 0xe58f, 0xe590, 0x44f4, 0xe592, 0xe593, 0xe594,
- 0x67f9, 0x3733, 0x3c15, 0x3de7, 0x586c, 0xe59a, 0x6810, 0x4057,
- 0xe59d, 0xe59e, 0xe59f, 0xe5a0, 0xe5a1, 0x54cb, 0x569e, 0xe5a4,
- 0x5692, 0xe5a6, 0xe5a7, 0xe5a8, 0x93c6, 0xe5aa, 0x939c, 0x4ef8,
- 0x512b, 0x3819, 0xe5af, 0x4ebc, 0xe5b1, 0xe5b2, 0x4f4b, 0x4f8a,
- 0xe5b5, 0x5a68, 0xe5b7, 0xe5b8, 0x3999, 0xe5ba, 0xe5bb, 0x3435,
- 0x4f29, 0xe5be, 0xe5bf, 0xe5c0, 0x8ada, 0xe5c2, 0x4e98, 0x50cd,
- 0x510d, 0x4fa2, 0x4f03, 0xe5c8, 0xe5c9, 0x4f42, 0x502e, 0x506c,
- 0x5081, 0x4fcc, 0x4fe5, 0x5058, 0x50fc, 0x5159, 0x515b, 0x515d,
- 0x515e, 0x6e76, 0xe5d7, 0xe5d8, 0xe5d9, 0x6d72, 0xe5db, 0xe5dc,
- 0x51a8, 0x51c3, 0xe5df, 0x44dd, 0xe5e1, 0xe5e2, 0xe5e3, 0x8d7a,
- 0xe5e5, 0xe5e6, 0x5259, 0x52a4, 0xe5e9, 0x52e1, 0x936e, 0x467a,
- 0x718c, 0xe5ee, 0xe5ef, 0xe5f0, 0xe5f1, 0x69d1, 0xe5f3, 0x7479,
- 0x3ede, 0x7499, 0x7414, 0x7456, 0x7398, 0x4b8e, 0xe5fb, 0xe5fc,
- 0x53d0, 0x3584, 0x720f, 0xe600, 0x55b4, 0xe602, 0x54cd, 0xe604,
- 0x571d, 0x925d, 0x96f4, 0x9366, 0x57dd, 0x578d, 0x577f, 0x363e,
- 0x58cb, 0x5a99, 0xe60f, 0xe610, 0xe611, 0xe612, 0x5a2c, 0x59b8,
- 0x928f, 0x5a7e, 0x5acf, 0x5a12, 0xe619, 0xe61a, 0xe61b, 0xe61c,
- 0x36f5, 0x6d05, 0x7443, 0x5a21, 0xe621,
- /* 0x93 */
- 0x5a81, 0xe623, 0xe624, 0x93e0, 0x748c, 0xe627, 0x7105, 0x4972,
- 0x9408, 0xe62b, 0x93bd, 0x37a0, 0x5c1e, 0x5c9e, 0x5e5e, 0x5e48,
- 0xe632, 0xe633, 0xe634, 0x5ecd, 0x5b4f, 0xe637, 0xe638, 0x3701,
- 0xe63a, 0x36dd, 0xe63c, 0x36d3, 0x812a, 0xe63f, 0xe640, 0xe641,
- 0xe642, 0x5f0c, 0x5f0e, 0xe645, 0xe646, 0x5a6b, 0xe648, 0x5b44,
- 0x8614, 0xe64b, 0x8860, 0x607e, 0xe64e, 0xe64f, 0x5fdb, 0x3eb8,
- 0xe652, 0xe653, 0xe654, 0xe655, 0x61c0, 0xe657, 0xe658, 0xe659,
- 0x6199, 0x6198, 0x6075, 0xe65d, 0xe65e, 0xe65f, 0xe660, 0x6471,
- 0xe662, 0xe663, 0x3a29, 0xe665, 0xe666, 0xe667, 0xe668, 0x6337,
- 0xe66a, 0x64b6, 0x6331, 0x63d1, 0xe66e, 0xe66f, 0x62a4, 0xe671,
- 0x643b, 0x656b, 0x6972, 0x3bf4, 0xe676, 0xe677, 0xe678, 0xe679,
- 0x550d, 0xe67b, 0xe67c, 0xe67d, 0x66ce, 0xe67f, 0xe680, 0x3ae0,
- 0x4190, 0xe683, 0xe684, 0xe685, 0xe686, 0xe687, 0xe688, 0x78ee,
- 0xe68a, 0xe68b, 0xe68c, 0x3464, 0xe68e, 0xe68f, 0xe690, 0x668e,
- 0xe692, 0x666b, 0x4b93, 0x6630, 0xe696, 0xe697, 0x6663, 0xe699,
- 0xe69a, 0x661e, 0xe69c, 0x38d1, 0xe69e, 0xe69f, 0x3b99, 0xe6a1,
- 0xe6a2, 0x74d0, 0x3b96, 0x678f, 0xe6a6, 0x68b6, 0x681e, 0x3bc4,
- 0x6abe, 0x3863, 0xe6ac, 0xe6ad, 0x6a33, 0x6a52, 0x6ac9, 0x6b05,
- 0xe6b2, 0x6511, 0x6898, 0x6a4c, 0x3bd7, 0x6a7a, 0x6b57, 0xe6b9,
- 0xe6ba, 0x93a0, 0x92f2, 0xe6bd, 0xe6be,
- /* 0x94 */
- 0x9289, 0xe6c0, 0xe6c1, 0x9467, 0x6da5, 0x6f0b, 0xe6c5, 0x6d67,
- 0xe6c7, 0x3d8f, 0x6e04, 0xe6ca, 0x5a3d, 0x6e0a, 0x5847, 0x6d24,
- 0x7842, 0x713b, 0xe6d1, 0xe6d2, 0x70f1, 0x7250, 0x7287, 0x7294,
- 0xe6d7, 0xe6d8, 0x5179, 0xe6da, 0xe6db, 0x747a, 0xe6dd, 0xe6de,
- 0xe6df, 0xe6e0, 0xe6e1, 0x3f06, 0x3eb1, 0xe6e4, 0xe6e5, 0xe6e6,
- 0x60a7, 0x3ef3, 0x74cc, 0x743c, 0x9387, 0x7437, 0x449f, 0xe6ee,
- 0x4551, 0x7583, 0x3f63, 0xe6f2, 0xe6f3, 0x3f58, 0x7555, 0x7673,
- 0xe6f7, 0x3b19, 0x7468, 0xe6fa, 0xe6fb, 0xe6fc, 0x3afb, 0x3dcd,
- 0xe6ff, 0x3eff, 0xe701, 0xe702, 0x91fa, 0x5732, 0x9342, 0xe706,
- 0xe707, 0x50df, 0xe709, 0xe70a, 0x7778, 0xe70c, 0x770e, 0x770f,
- 0x777b, 0xe710, 0xe711, 0x3a5e, 0xe713, 0x7438, 0x749b, 0x3ebf,
- 0xe717, 0xe718, 0x40c8, 0xe71a, 0xe71b, 0x9307, 0xe71d, 0x781e,
- 0x788d, 0x7888, 0x78d2, 0x73d0, 0x7959, 0xe724, 0xe725, 0x410e,
- 0x799b, 0x8496, 0x79a5, 0x6a2d, 0xe72b, 0x7a3a, 0x79f4, 0x416e,
- 0xe72f, 0x4132, 0x9235, 0x79f1, 0xe733, 0xe734, 0xe735, 0xe736,
- 0xe737, 0x3597, 0x556b, 0x3570, 0x36aa, 0xe73c, 0xe73d, 0x7ae2,
- 0x5a59, 0xe740, 0xe741, 0xe742, 0x5a0d, 0xe744, 0x78f0, 0x5a2a,
- 0xe747, 0x7afe, 0x41f9, 0x7c5d, 0x7c6d, 0x4211, 0xe74d, 0xe74e,
- 0xe74f, 0x7ccd, 0xe751, 0xe752, 0x7c8e, 0x7c7c, 0x7cae, 0x6ab2,
- 0x7ddc, 0x7e07, 0x7dd3, 0x7f4e, 0xe75b,
- /* 0x95 */
- 0xe75c, 0xe75d, 0x7d97, 0xe75f, 0x426a, 0xe761, 0xe762, 0x67d6,
- 0xe764, 0xe765, 0x57c4, 0xe767, 0xe768, 0xe769, 0x7fdd, 0x7b27,
- 0xe76c, 0xe76d, 0xe76e, 0x7b0c, 0xe770, 0x99e6, 0x8645, 0x9a63,
- 0x6a1c, 0xe775, 0x39e2, 0xe777, 0xe778, 0x9a1f, 0xe77a, 0x8480,
- 0xe77c, 0xe77d, 0x44ea, 0x8137, 0x4402, 0x80c6, 0x8109, 0x8142,
- 0xe784, 0x98c3, 0xe786, 0x8262, 0x8265, 0xe789, 0x8453, 0xe78b,
- 0x8610, 0xe78d, 0x5a86, 0x417f, 0xe790, 0x5b2b, 0xe792, 0x5ae4,
- 0xe794, 0x86a0, 0xe796, 0xe797, 0x882d, 0xe799, 0x5a02, 0x886e,
- 0x4f45, 0x8887, 0x88bf, 0x88e6, 0x8965, 0x894d, 0xe7a2, 0x8954,
- 0xe7a4, 0xe7a5, 0xe7a6, 0xe7a7, 0xe7a8, 0xe7a9, 0x3ead, 0x84a3,
- 0x46f5, 0x46cf, 0x37f2, 0x8a3d, 0x8a1c, 0xe7b1, 0x5f4d, 0x922b,
- 0xe7b4, 0x65d4, 0x7129, 0x70c4, 0xe7b8, 0x9d6d, 0x8c9f, 0x8ce9,
- 0xe7bc, 0x599a, 0x77c3, 0x59f0, 0x436e, 0x36d4, 0x8e2a, 0x8ea7,
- 0xe7c4, 0x8f30, 0x8f4a, 0x42f4, 0x6c58, 0x6fbb, 0xe7ca, 0x489b,
- 0x6f79, 0x6e8b, 0xe7ce, 0x9be9, 0x36b5, 0xe7d1, 0x90bb, 0x9097,
- 0x5571, 0x4906, 0x91bb, 0x9404, 0xe7d8, 0x4062, 0xe7da, 0x9427,
- 0xe7dc, 0xe7dd, 0x84e5, 0x8a2b, 0x9599, 0x95a7, 0x9597, 0x9596,
- 0xe7e4, 0x7445, 0x3ec2, 0xe7e7, 0xe7e8, 0xe7e9, 0x3ee7, 0xe7eb,
- 0x968f, 0xe7ed, 0xe7ee, 0xe7ef, 0x3ecc, 0xe7f1, 0xe7f2, 0xe7f3,
- 0x7412, 0x746b, 0x3efc, 0x9741, 0xe7f8,
- /* 0x96 */
- 0x6847, 0x4a1d, 0xe7fb, 0xe7fc, 0x975d, 0x9368, 0xe7ff, 0xe800,
- 0xe801, 0xe802, 0x92ba, 0x5b11, 0x8b69, 0x493c, 0x73f9, 0xe808,
- 0x979b, 0x9771, 0x9938, 0xe80c, 0x5dc1, 0xe80e, 0xe80f, 0x981f,
- 0xe811, 0x92f6, 0xe813, 0x91e5, 0x44c0, 0xe816, 0xe817, 0xe818,
- 0x98dc, 0xe81a, 0x3f00, 0x922a, 0x4925, 0x8414, 0x993b, 0x994d,
- 0xe821, 0x3dfd, 0x999b, 0x4b6f, 0x99aa, 0x9a5c, 0xe827, 0xe828,
- 0x6a8f, 0x9a21, 0x5afe, 0x9a2f, 0xe82d, 0x4b90, 0xe82f, 0x99bc,
- 0x4bbd, 0x4b97, 0x937d, 0x5872, 0xe835, 0x5822, 0xe837, 0xe838,
- 0x7844, 0xe83a, 0xe83b, 0x68c5, 0x3d7d, 0x9458, 0x3927, 0x6150,
- 0xe841, 0xe842, 0x6107, 0x9c4f, 0x9c53, 0x9c7b, 0x9c35, 0x9c10,
- 0x9b7f, 0x9bcf, 0xe84b, 0x9b9f, 0xe84d, 0xe84e, 0x9d21, 0x4cae,
- 0xe851, 0x9e18, 0x4cb0, 0x9d0c, 0xe855, 0xe856, 0xe857, 0xe858,
- 0x9da5, 0x84bd, 0xe85b, 0xe85c, 0xe85d, 0x85fc, 0x4533, 0xe860,
- 0xe861, 0xe862, 0x8420, 0x85ee, 0xe865, 0xe866, 0xe867, 0x79e2,
- 0xe869, 0xe86a, 0x492d, 0xe86c, 0x3d62, 0x93db, 0x92be, 0x9348,
- 0xe871, 0x78b9, 0x9277, 0x944d, 0x4fe4, 0x3440, 0x9064, 0xe878,
- 0x783d, 0x7854, 0x78b6, 0x784b, 0xe87d, 0xe87e, 0xe87f, 0x369a,
- 0x4f72, 0x6fda, 0x6fd9, 0x701e, 0x701e, 0x5414, 0xe887, 0x57bb,
- 0x58f3, 0x578a, 0x9d16, 0x57d7, 0x7134, 0x34af, 0xe88f, 0x71eb,
- 0xe891, 0xe892, 0x5b28, 0xe894, 0xe895,
- /* 0x97 */
- 0x610c, 0x5ace, 0x5a0b, 0x42bc, 0xe89a, 0x372c, 0x4b7b, 0xe89d,
- 0x93bb, 0x93b8, 0xe8a0, 0xe8a1, 0x8472, 0xe8a3, 0xe8a4, 0xe8a5,
- 0xe8a6, 0xe8a7, 0x5994, 0xe8a9, 0xe8aa, 0x7da8, 0xe8ac, 0xe8ad,
- 0xe8ae, 0xe8af, 0xe8b0, 0x92e5, 0x73e2, 0x3ee9, 0x74b4, 0xe8b5,
- 0xe8b6, 0x3ee1, 0xe8b8, 0x6ad8, 0x73f3, 0x73fb, 0x3ed6, 0xe8bd,
- 0xe8be, 0xe8bf, 0xe8c0, 0xe8c1, 0xe8c2, 0xe8c3, 0x7448, 0xe8c5,
- 0x70a5, 0xe8c7, 0x9284, 0x73e6, 0x935f, 0xe8cb, 0x9331, 0xe8cd,
- 0xe8ce, 0x9386, 0xe8d0, 0xe8d1, 0x4935, 0xe8d3, 0x716b, 0xe8d5,
- 0xe8d6, 0x56a4, 0xe8d8, 0xe8d9, 0xe8da, 0x5502, 0x79c4, 0xe8dd,
- 0x7dfe, 0xe8df, 0xe8e0, 0xe8e1, 0x452e, 0x9401, 0x370a, 0xe8e5,
- 0xe8e6, 0x59b0, 0xe8e8, 0xe8e9, 0xe8ea, 0x5aa1, 0x36e2, 0xe8ed,
- 0x36b0, 0x925f, 0x5a79, 0xe8f1, 0xe8f2, 0x9374, 0x3ccd, 0xe8f5,
- 0x4a96, 0x398a, 0x50f4, 0x3d69, 0x3d4c, 0xe8fb, 0x7175, 0x42fb,
- 0xe8fe, 0x6e0f, 0xe900, 0x44eb, 0x6d57, 0xe903, 0x7067, 0x6caf,
- 0x3cd6, 0xe907, 0xe908, 0x6e02, 0x6f0c, 0x3d6f, 0xe90c, 0x7551,
- 0x36bc, 0x34c8, 0x4680, 0x3eda, 0x4871, 0x59c4, 0x926e, 0x493e,
- 0x8f41, 0xe917, 0xe918, 0x5812, 0x57c8, 0x36d6, 0xe91c, 0x70fe,
- 0xe91e, 0xe91f, 0xe920, 0xe921, 0xe922, 0x68b9, 0x6967, 0xe925,
- 0xe926, 0xe927, 0xe928, 0xe929, 0xe92a, 0xe92b, 0xe92c, 0x6a1a,
- 0xe92e, 0xe92f, 0x843e, 0x44df, 0x44ce,
- /* 0x98 */
- 0xe933, 0xe934, 0xe935, 0xe936, 0x6f17, 0xe938, 0x833d, 0xe93a,
- 0x83ed, 0xe93c, 0xe93d, 0xe93e, 0x5989, 0x5a82, 0xe941, 0x5a61,
- 0x5a71, 0xe944, 0xe945, 0x372d, 0x59ef, 0xe948, 0x36c7, 0x718e,
- 0x9390, 0x669a, 0xe94d, 0x5a6e, 0x5a2b, 0xe950, 0x6a2b, 0xe952,
- 0xe953, 0xe954, 0xe955, 0x711d, 0xe957, 0xe958, 0x4fb0, 0xe95a,
- 0x5cc2, 0xe95c, 0xe95d, 0xe95e, 0x6a0c, 0xe960, 0xe961, 0x70a6,
- 0x7133, 0xe964, 0x3da5, 0x6cdf, 0xe967, 0xe968, 0x7e65, 0x59eb,
- 0x5d2f, 0x3df3, 0x5f5c, 0xe96e, 0xe96f, 0x7da4, 0x8426, 0x5485,
- 0xe973, 0xe974, 0xe975, 0x577e, 0xe977, 0xe978, 0x3fe5, 0xe97a,
- 0xe97b, 0x7003, 0xe97d, 0x5d70, 0x738f, 0x7cd3, 0xe981, 0xe982,
- 0x4fc8, 0x7fe7, 0x72cd, 0x7310, 0xe987, 0x7338, 0x7339, 0xe98a,
- 0x7341, 0x7348, 0x3ea9, 0xe98e, 0x906c, 0x71f5, 0xe991, 0x73e1,
- 0x81f6, 0x3eca, 0x770c, 0x3ed1, 0x6ca2, 0x56fd, 0x7419, 0x741e,
- 0x741f, 0x3ee2, 0x3ef0, 0x3ef4, 0x3efa, 0x74d3, 0x3f0e, 0x3f53,
- 0x7542, 0x756d, 0x7572, 0x758d, 0x3f7c, 0x75c8, 0x75dc, 0x3fc0,
- 0x764d, 0x3fd7, 0x7674, 0x3fdc, 0x767a, 0xe9b0, 0x7188, 0x5623,
- 0x8980, 0x5869, 0x401d, 0x7743, 0x4039, 0x6761, 0x4045, 0x35db,
- 0x7798, 0x406a, 0x406f, 0x5c5e, 0x77be, 0x77cb, 0x58f2, 0x7818,
- 0x70b9, 0x781c, 0x40a8, 0x7839, 0x7847, 0x7851, 0x7866, 0x8448,
- 0xe9cb, 0x7933, 0x6803, 0x7932, 0x4103,
- /* 0x99 */
- 0x4109, 0x7991, 0x7999, 0x8fbb, 0x7a06, 0x8fbc, 0x4167, 0x7a91,
- 0x41b2, 0x7abc, 0x8279, 0x41c4, 0x7acf, 0x7adb, 0x41cf, 0x4e21,
- 0x7b62, 0x7b6c, 0x7b7b, 0x7c12, 0x7c1b, 0x4260, 0x427a, 0x7c7b,
- 0x7c9c, 0x428c, 0x7cb8, 0x4294, 0x7ced, 0x8f93, 0x70c0, 0xe9ef,
- 0x7dcf, 0x7dd4, 0x7dd0, 0x7dfd, 0x7fae, 0x7fb4, 0x729f, 0x4397,
- 0x8020, 0x8025, 0x7b39, 0x802e, 0x8031, 0x8054, 0x3dcc, 0x57b4,
- 0x70a0, 0x80b7, 0x80e9, 0x43ed, 0x810c, 0x732a, 0x810e, 0x8112,
- 0x7560, 0x8114, 0x4401, 0x3b39, 0x8156, 0x8159, 0x815a, 0x4413,
- 0x583a, 0x817c, 0x8184, 0x4425, 0x8193, 0x442d, 0x81a5, 0x57ef,
- 0x81c1, 0x81e4, 0x8254, 0x448f, 0x82a6, 0x8276, 0x82ca, 0x82d8,
- 0x82ff, 0x44b0, 0x8357, 0x9669, 0x698a, 0x8405, 0x70f5, 0x8464,
- 0x60e3, 0x8488, 0x4504, 0x84be, 0x84e1, 0x84f8, 0x8510, 0x8538,
- 0x8552, 0x453b, 0x856f, 0x8570, 0x85e0, 0x4577, 0x8672, 0x8692,
- 0x86b2, 0x86ef, 0x9645, 0x878b, 0x4606, 0x4617, 0x88ae, 0x88ff,
- 0x8924, 0x8947, 0x8991, 0xea43, 0x8a29, 0x8a38, 0x8a94, 0x8ab4,
- 0x8c51, 0x8cd4, 0x8cf2, 0x8d1c, 0x4798, 0x585f, 0x8dc3, 0x47ed,
- 0x4eee, 0x8e3a, 0x55d8, 0x5754, 0x8e71, 0x55f5, 0x8eb0, 0x4837,
- 0x8ece, 0x8ee2, 0x8ee4, 0x8eed, 0x8ef2, 0x8fb7, 0x8fc1, 0x8fca,
- 0x8fcc, 0x9033, 0x99c4, 0x48ad, 0x98e0, 0x9213, 0x491e, 0x9228,
- 0x9258, 0x926b, 0x92b1, 0x92ae, 0x92bf,
- /* 0x9a */
- 0x92e3, 0x92eb, 0x92f3, 0x92f4, 0x92fd, 0x9343, 0x9384, 0x93ad,
- 0x4945, 0x4951, 0x9ebf, 0x9417, 0x5301, 0x941d, 0x942d, 0x943e,
- 0x496a, 0x9454, 0x9479, 0x952d, 0x95a2, 0x49a7, 0x95f4, 0x9633,
- 0x49e5, 0x67a0, 0x4a24, 0x9740, 0x4a35, 0x97b2, 0x97c2, 0x5654,
- 0x4ae4, 0x60e8, 0x98b9, 0x4b19, 0x98f1, 0x5844, 0x990e, 0x9919,
- 0x51b4, 0x991c, 0x9937, 0x9942, 0x995d, 0x9962, 0x4b70, 0x99c5,
- 0x4b9d, 0x9a3c, 0x9b0f, 0x7a83, 0x9b69, 0x9b81, 0x9bdd, 0x9bf1,
- 0x9bf4, 0x4c6d, 0x9c20, 0x376f, 0xeaa9, 0x9d49, 0x9c3a, 0x9efe,
- 0x5650, 0x9d93, 0x9dbd, 0x9dc0, 0x9dfc, 0x94f6, 0x8fb6, 0x9e7b,
- 0x9eac, 0x9eb1, 0x9ebd, 0x9ec6, 0x94dc, 0x9ee2, 0x9ef1, 0x9ef8,
- 0x7ac8, 0x9f44, 0xeabf, 0xeac0, 0xeac1, 0x691a, 0x94c3, 0x59ac,
- 0xeac5, 0x5840, 0x94c1, 0x37b9, 0xeac9, 0xeaca, 0xeacb, 0xeacc,
- 0x5757, 0x7173, 0xeacf, 0xead0, 0xead1, 0x546a, 0xead3, 0xead4,
- 0x549e, 0xead6, 0xead7, 0xead8, 0xead9, 0xeada, 0x60e7, 0xeadc,
- 0x567a, 0xeade, 0xeadf, 0xeae0, 0xeae1, 0xeae2, 0xeae3, 0x6955,
- 0x9c2f, 0x87a5, 0xeae7, 0xeae8, 0xeae9, 0xeaea, 0xeaeb, 0xeaec,
- 0x5c20, 0xeaee, 0x5e0b, 0xeaf0, 0xeaf1, 0xeaf2, 0x671e, 0xeaf4,
- 0xeaf5, 0xeaf6, 0x3647, 0xeaf8, 0xeaf9, 0xeafa, 0xeafb, 0x5364,
- 0x84ad, 0xeafe, 0xeaff, 0xeb00, 0x8b81, 0xeb02, 0xeb03, 0xeb04,
- 0xeb05, 0x4e78, 0x70bb, 0xeb08, 0xeb09,
- /* 0x9b */
- 0xeb0a, 0xeb0b, 0xeb0c, 0xeb0d, 0xeb0e, 0xeb0f, 0x62c3, 0xeb11,
- 0xeb12, 0x7198, 0x6855, 0xeb15, 0x69e9, 0x36c8, 0xeb18, 0xeb19,
- 0xeb1a, 0xeb1b, 0xeb1c, 0xeb1d, 0x82fd, 0xeb1f, 0xeb20, 0xeb21,
- 0x89a5, 0xeb23, 0x8fa0, 0xeb25, 0x97b8, 0xeb27, 0x9847, 0x9abd,
- 0xeb2a, 0xeb2b, 0xeb2c, 0xeb2d, 0xeb2e, 0xeb2f, 0xeb30, 0xeb31,
- 0xeb32, 0xeb33, 0xeb34, 0xeb35, 0xeb36, 0xeb37, 0xeb38, 0xeb39,
- 0x5fb1, 0x6648, 0x66bf, 0xeb3d, 0xeb3e, 0xeb3f, 0x7201, 0xeb41,
- 0x77d7, 0xeb43, 0xeb44, 0x7e87, 0xeb46, 0x58b5, 0x670e, 0x6918,
- 0xeb4a, 0xeb4b, 0xeb4c, 0xeb4d, 0xeb4e, 0xeb4f, 0xeb50, 0x48d0,
- 0x4ab8, 0xeb53, 0xeb54, 0xeb55, 0xeb56, 0xeb57, 0xeb58, 0xeb59,
- 0xeb5a, 0xeb5b, 0x51d2, 0xeb5d, 0x599f, 0xeb5f, 0x3bbe, 0xeb61,
- 0xeb62, 0xeb63, 0x5788, 0xeb65, 0x399b, 0xeb67, 0xeb68, 0xeb69,
- 0x3762, 0xeb6b, 0x8b5e, 0xeb6d, 0x99d6, 0xeb6f, 0xeb70, 0xeb71,
- 0x7209, 0xeb73, 0xeb74, 0x5965, 0xeb76, 0xeb77, 0xeb78, 0x8eda,
- 0xeb7a, 0x528f, 0x573f, 0x7171, 0xeb7e, 0xeb7f, 0xeb80, 0xeb81,
- 0x55bc, 0xeb83, 0xeb84, 0xeb85, 0x91d4, 0x3473, 0xeb88, 0xeb89,
- 0xeb8a, 0x4718, 0xeb8c, 0xeb8d, 0xeb8e, 0xeb8f, 0xeb90, 0x5066,
- 0x34fb, 0xeb93, 0x60de, 0xeb95, 0x477c, 0xeb97, 0xeb98, 0xeb99,
- 0xeb9a, 0xeb9b, 0x57a1, 0x7151, 0x6fb6, 0xeb9f, 0xeba0, 0x9056,
- 0xeba2, 0xeba3, 0x8b62, 0xeba5, 0xeba6,
- /* 0x9c */
- 0x5d5b, 0xeba8, 0x8f36, 0xebaa, 0xebab, 0x8aea, 0xebad, 0xebae,
- 0xebaf, 0xebb0, 0x4bc0, 0xebb2, 0xebb3, 0xebb4, 0x9465, 0xebb6,
- 0x6195, 0x5a27, 0xebb9, 0x4fbb, 0x56b9, 0xebbc, 0xebbd, 0x4e6a,
- 0xebbf, 0x9656, 0x6d8f, 0xebc2, 0x3618, 0x8977, 0xebc5, 0xebc6,
- 0xebc7, 0xebc8, 0x71df, 0xebca, 0x7b42, 0xebcc, 0xebcd, 0xebce,
- 0x9104, 0xebd0, 0x7a45, 0x9df0, 0xebd3, 0x9a26, 0xebd5, 0x365f,
- 0xebd7, 0xebd8, 0x7983, 0xebda, 0xebdb, 0x5d2c, 0xebdd, 0x83cf,
- 0xebdf, 0x46d0, 0xebe1, 0x753b, 0x8865, 0xebe4, 0x58b6, 0x371c,
- 0xebe7, 0xebe8, 0xebe9, 0x3c54, 0xebeb, 0xebec, 0x9281, 0xebee,
- 0xebef, 0x9330, 0xebf1, 0xebf2, 0x6c39, 0x949f, 0xebf5, 0xebf6,
- 0x8827, 0x88f5, 0xebf9, 0xebfa, 0xebfb, 0x6eb8, 0xebfd, 0xebfe,
- 0x39a4, 0x36b9, 0x5c10, 0x79e3, 0x453f, 0x66b6, 0xec05, 0xec06,
- 0x8943, 0xec08, 0xec09, 0x56d6, 0x40df, 0xec0c, 0x39a1, 0xec0e,
- 0xec0f, 0xec10, 0x71ad, 0x8366, 0xec13, 0xec14, 0x5a67, 0x4cb7,
- 0xec17, 0xec18, 0xec19, 0xec1a, 0xec1b, 0xec1c, 0xec1d, 0x7b43,
- 0x797e, 0xec20, 0x6fb5, 0xec22, 0x6a03, 0xec24, 0x53a2, 0xec26,
- 0x93bf, 0x6836, 0x975d, 0xec2a, 0xec2b, 0xec2c, 0xec2d, 0xec2e,
- 0xec2f, 0x5d85, 0xec31, 0xec32, 0x5715, 0x9823, 0xec35, 0x5dab,
- 0xec37, 0x65be, 0x69d5, 0x53d2, 0xec3b, 0xec3c, 0x3c11, 0x6736,
- 0xec3f, 0xec40, 0xec41, 0xec42, 0xec43,
- /* 0x9d */
- 0xec44, 0xec45, 0xec46, 0xec47, 0xec48, 0xec49, 0x35ca, 0xec4b,
- 0xec4c, 0x48fa, 0x63e6, 0xec4f, 0x7808, 0x9255, 0xec52, 0x43f2,
- 0xec54, 0x43df, 0xec56, 0xec57, 0xec58, 0x59f8, 0xec5a, 0x8f0b,
- 0xec5c, 0xec5d, 0x7b51, 0xec5f, 0xec60, 0x3df7, 0xec62, 0xec63,
- 0x8fd0, 0x728f, 0x568b, 0xec67, 0xec68, 0xec69, 0xec6a, 0xec6b,
- 0xec6c, 0xec6d, 0xec6e, 0xec6f, 0xec70, 0xec71, 0xec72, 0xec73,
- 0x7e9f, 0xec75, 0xec76, 0x4ca4, 0x9547, 0xec79, 0x71a2, 0xec7b,
- 0x4d91, 0x9012, 0xec7e, 0x4d9c, 0xec80, 0x8fbe, 0x55c1, 0x8fba,
- 0xec84, 0x8fb9, 0xec86, 0x4509, 0x7e7f, 0x6f56, 0x6ab1, 0x4eea,
- 0x34e4, 0xec8d, 0xec8e, 0x373a, 0x8e80, 0xec91, 0xec92, 0xec93,
- 0xec94, 0xec95, 0xec96, 0x3deb, 0xec98, 0xec99, 0xec9a, 0xec9b,
- 0x4e9a, 0xec9d, 0xec9e, 0x56bf, 0xeca0, 0x8e0e, 0x5b6d, 0xeca3,
- 0xeca4, 0x63de, 0x62d0, 0xeca7, 0xeca8, 0x6530, 0x562d, 0xecab,
- 0x541a, 0xecad, 0x3dc6, 0xecaf, 0x4c7d, 0x5622, 0x561e, 0x7f49,
- 0xecb4, 0x5975, 0xecb6, 0x8770, 0x4e1c, 0xecb9, 0xecba, 0xecbb,
- 0x8117, 0x9d5e, 0x8d18, 0x763b, 0x9c45, 0x764e, 0x77b9, 0x9345,
- 0x5432, 0x8148, 0x82f7, 0x5625, 0x8132, 0x8418, 0x80bd, 0x55ea,
- 0x7962, 0x5643, 0x5416, 0xeccf, 0x35ce, 0x5605, 0x55f1, 0x66f1,
- 0xecd4, 0x362d, 0x7534, 0x55f0, 0x55ba, 0x5497, 0x5572, 0xecdb,
- 0xecdc, 0x5ed0, 0xecde, 0xecdf, 0xece0,
- /* 0x9e */
- 0xece1, 0x9eab, 0x7d5a, 0x55de, 0xece5, 0x629d, 0x976d, 0x5494,
- 0x8ccd, 0x71f6, 0x9176, 0x63fc, 0x63b9, 0x63fe, 0x5569, 0xecf0,
- 0x9c72, 0xecf2, 0x519a, 0x34df, 0xecf5, 0x51a7, 0x544d, 0x551e,
- 0x5513, 0x7666, 0x8e2d, 0xecfc, 0x75b1, 0x80b6, 0x8804, 0x8786,
- 0x88c7, 0x81b6, 0x841c, 0xed04, 0x44ec, 0x7304, 0xed07, 0x5b90,
- 0x830b, 0xed0a, 0x567b, 0xed0c, 0xed0d, 0xed0e, 0xed0f, 0xed10,
- 0xed11, 0x9170, 0xed13, 0x9208, 0xed15, 0xed16, 0xed17, 0xed18,
- 0x7266, 0xed1a, 0x474e, 0xed1c, 0xed1d, 0xed1e, 0x40fa, 0x9c5d,
- 0x651f, 0xed22, 0x48f3, 0xed24, 0xed25, 0xed26, 0xed27, 0x6062,
- 0xed29, 0xed2a, 0xed2b, 0xed2c, 0xed2d, 0x71a3, 0x7e8e, 0x9d50,
- 0x4e1a, 0x4e04, 0x3577, 0x5b0d, 0x6cb2, 0x5367, 0x36ac, 0x39dc,
- 0x537d, 0x36a5, 0xed3b, 0x589a, 0xed3d, 0x822d, 0x544b, 0x57aa,
- 0xed41, 0xed42, 0xed43, 0x3a52, 0xed45, 0x7374, 0xed47, 0x4d09,
- 0x9bed, 0xed4a, 0xed4b, 0x4c5b, 0xed4d, 0xed4e, 0xed4f, 0x845c,
- 0xed51, 0xed52, 0xed53, 0xed54, 0x632e, 0x7d25, 0xed57, 0xed58,
- 0x3a2a, 0x9008, 0x52cc, 0x3e74, 0x367a, 0x45e9, 0xed5f, 0x7640,
- 0x5af0, 0xed62, 0x787a, 0x47b6, 0x58a7, 0x40bf, 0x567c, 0x9b8b,
- 0x5d74, 0x7654, 0xed6b, 0x9e85, 0x4ce1, 0x75f9, 0x37fb, 0x6119,
- 0xed71, 0xed72, 0xed73, 0x565d, 0xed75, 0x57a7, 0xed77, 0xed78,
- 0x5234, 0xed7a, 0x35ad, 0x6c4a, 0x9d7c,
- /* 0x9f */
- 0x7c56, 0x9b39, 0x57de, 0xed81, 0x5c53, 0x64d3, 0xed84, 0xed85,
- 0xed86, 0x86ad, 0xed88, 0xed89, 0xed8a, 0xed8b, 0xed8c, 0x51fe,
- 0xed8e, 0x5d8e, 0x9703, 0xed91, 0x9e81, 0x904c, 0x7b1f, 0x9b02,
- 0x5cd1, 0x7ba3, 0x6268, 0x6335, 0x9aff, 0x7bcf, 0x9b2a, 0x7c7e,
- 0x9b2e, 0x7c42, 0x7c86, 0x9c15, 0x7bfc, 0x9b09, 0x9f17, 0x9c1b,
- 0xeda6, 0x9f5a, 0x5573, 0x5bc3, 0x4ffd, 0x9e98, 0x4ff2, 0x5260,
- 0x3e06, 0x52d1, 0x5767, 0x5056, 0x59b7, 0x5e12, 0x97c8, 0x9dab,
- 0x8f5c, 0x5469, 0x97b4, 0x9940, 0x97ba, 0x532c, 0x6130, 0x692c,
- 0x53da, 0x9c0a, 0x9d02, 0x4c3b, 0x9641, 0x6980, 0x50a6, 0x7546,
- 0xedc6, 0x99da, 0x5273, 0xedc9, 0x9159, 0x9681, 0x915c, 0xedcd,
- 0x9151, 0xedcf, 0x637f, 0xedd1, 0x6aca, 0x5611, 0x918e, 0x757a,
- 0x6285, 0xedd7, 0x734f, 0x7c70, 0xedda, 0xeddb, 0xeddc, 0xeddd,
- 0x76d6, 0x9b9d, 0x4e2a, 0xede1, 0x83be, 0x8842, 0xede4, 0x5c4a,
- 0x69c0, 0x50ed, 0x577a, 0x521f, 0x5df5, 0x4ece, 0x6c31, 0xeded,
- 0x4f39, 0x549c, 0x54da, 0x529a, 0x8d82, 0x35fe, 0x5f0c, 0x35f3,
- 0xedf6, 0x6b52, 0x917c, 0x9fa5, 0x9b97, 0x982e, 0x98b4, 0x9aba,
- 0x9ea8, 0x9e84, 0x717a, 0x7b14, 0xee02, 0x6bfa, 0x8818, 0x7f78,
- 0xee06, 0x5620, 0xee08, 0x8e77, 0x9f53, 0xee0b, 0x8dd4, 0x8e4f,
- 0x9e1c, 0x8e01, 0x6282, 0xee11, 0x8e28, 0x8e75, 0x7ad3, 0xee15,
- 0x7a3e, 0x78d8, 0x6cea, 0x8a67, 0x7607,
- /* 0xa0 */
- 0xee1b, 0x9f26, 0x6cce, 0x87d6, 0x75c3, 0xee20, 0x7853, 0xee22,
- 0x8d0c, 0x72e2, 0x7371, 0x8b2d, 0x7302, 0x74f1, 0x8ceb, 0xee2a,
- 0x862f, 0x5fba, 0x88a0, 0x44b7, 0xee2f, 0xee30, 0xee31, 0xee32,
- 0x8a7e, 0xee34, 0xee35, 0x60fd, 0x7667, 0x9ad7, 0x9d44, 0x936e,
- 0x9b8f, 0x87f5, 0xee3d, 0x880f, 0x8cf7, 0x732c, 0x9721, 0x9bb0,
- 0x35d6, 0x72b2, 0x4c07, 0x7c51, 0x994a, 0xee48, 0x6159, 0x4c04,
- 0x9e96, 0x617d, 0xee4d, 0x575f, 0x616f, 0x62a6, 0x6239, 0x62ce,
- 0x3a5c, 0x61e2, 0x53aa, 0xee56, 0x6364, 0x6802, 0x35d2, 0x5d57,
- 0xee5b, 0x8fda, 0xee5d, 0xee5e, 0x50d9, 0xee60, 0x7906, 0x5332,
- 0x9638, 0xee64, 0x4065, 0xee66, 0x77fe, 0xee68, 0x7cc2, 0xee6a,
- 0x7cda, 0x7a2d, 0x8066, 0x8063, 0x7d4d, 0x7505, 0x74f2, 0x8994,
- 0x821a, 0x670c, 0x8062, 0xee76, 0x805b, 0x74f0, 0x8103, 0x7724,
- 0x8989, 0xee7c, 0x7553, 0xee7e, 0x87a9, 0x87ce, 0x81c8, 0x878c,
- 0x8a49, 0x8cad, 0x8b43, 0x772b, 0x74f8, 0x84da, 0x3635, 0x69b2,
- 0x8da6, 0xee8c, 0x89a9, 0x7468, 0x6db9, 0x87c1, 0xee91, 0x74e7,
- 0x3ddb, 0x7176, 0x60a4, 0x619c, 0x3cd1, 0x7162, 0x6077, 0xee9a,
- 0x7f71, 0xee9c, 0x7250, 0x60e9, 0x4b7e, 0x5220, 0x3c18, 0xeea2,
- 0xeea3, 0xeea4, 0xeea5, 0xeea6, 0xeea7, 0xeea8, 0xeea9, 0xeeaa,
- 0x5cc1, 0xeeac, 0xeead, 0xeeae, 0xeeaf, 0xeeb0, 0xeeb1, 0x4562,
- 0x5b1f, 0xeeb4, 0x9f50, 0x9ea6, 0xeeb7,
- /* 0xa1 */
- 0x3000, 0xff0c, 0x3001, 0x3002, 0xff0e, 0x2027, 0xff1b, 0xff1a,
- 0xff1f, 0xff01, 0xfe30, 0x2026, 0x2025, 0xfe50, 0xfe51, 0xfe52,
- 0x00b7, 0xfe54, 0xfe55, 0xfe56, 0xfe57, 0xff5c, 0x2013, 0xfe31,
- 0x2014, 0xfe33, 0x2574, 0xfe34, 0xfe4f, 0xff08, 0xff09, 0xfe35,
- 0xfe36, 0xff5b, 0xff5d, 0xfe37, 0xfe38, 0x3014, 0x3015, 0xfe39,
- 0xfe3a, 0x3010, 0x3011, 0xfe3b, 0xfe3c, 0x300a, 0x300b, 0xfe3d,
- 0xfe3e, 0x3008, 0x3009, 0xfe3f, 0xfe40, 0x300c, 0x300d, 0xfe41,
- 0xfe42, 0x300e, 0x300f, 0xfe43, 0xfe44, 0xfe59, 0xfe5a, 0xfe5b,
- 0xfe5c, 0xfe5d, 0xfe5e, 0x2018, 0x2019, 0x201c, 0x201d, 0x301d,
- 0x301e, 0x2035, 0x2032, 0xff03, 0xff06, 0xff0a, 0x203b, 0x00a7,
- 0x3003, 0x25cb, 0x25cf, 0x25b3, 0x25b2, 0x25ce, 0x2606, 0x2605,
- 0x25c7, 0x25c6, 0x25a1, 0x25a0, 0x25bd, 0x25bc, 0x32a3, 0x2105,
- 0x00af, 0xffe3, 0xff3f, 0x02cd, 0xfe49, 0xfe4a, 0xfe4d, 0xfe4e,
- 0xfe4b, 0xfe4c, 0xfe5f, 0xfe60, 0xfe61, 0xff0b, 0xff0d, 0x00d7,
- 0x00f7, 0x00b1, 0x221a, 0xff1c, 0xff1e, 0xff1d, 0x2266, 0x2267,
- 0x2260, 0x221e, 0x2252, 0x2261, 0xfe62, 0xfe63, 0xfe64, 0xfe65,
- 0xfe66, 0xff5e, 0x2229, 0x222a, 0x22a5, 0x2220, 0x221f, 0x22bf,
- 0x33d2, 0x33d1, 0x222b, 0x222e, 0x2235, 0x2234, 0x2640, 0x2642,
- 0x2295, 0x2299, 0x2191, 0x2193, 0x2190, 0x2192, 0x2196, 0x2197,
- 0x2199, 0x2198, 0x2225, 0x2223, 0xff0f,
- /* 0xa2 */
- 0xff3c, 0x2215, 0xfe68, 0xff04, 0xffe5, 0x3012, 0xffe0, 0xffe1,
- 0xff05, 0xff20, 0x2103, 0x2109, 0xfe69, 0xfe6a, 0xfe6b, 0x33d5,
- 0x339c, 0x339d, 0x339e, 0x33ce, 0x33a1, 0x338e, 0x338f, 0x33c4,
- 0x00b0, 0x5159, 0x515b, 0x515e, 0x515d, 0x5161, 0x5163, 0x55e7,
- 0x74e9, 0x7cce, 0x2581, 0x2582, 0x2583, 0x2584, 0x2585, 0x2586,
- 0x2587, 0x2588, 0x258f, 0x258e, 0x258d, 0x258c, 0x258b, 0x258a,
- 0x2589, 0x253c, 0x2534, 0x252c, 0x2524, 0x251c, 0x2594, 0x2500,
- 0x2502, 0x2595, 0x250c, 0x2510, 0x2514, 0x2518, 0x256d, 0x256e,
- 0x2570, 0x256f, 0x2550, 0x255e, 0x256a, 0x2561, 0x25e2, 0x25e3,
- 0x25e5, 0x25e4, 0x2571, 0x2572, 0x2573, 0xff10, 0xff11, 0xff12,
- 0xff13, 0xff14, 0xff15, 0xff16, 0xff17, 0xff18, 0xff19, 0x2160,
- 0x2161, 0x2162, 0x2163, 0x2164, 0x2165, 0x2166, 0x2167, 0x2168,
- 0x2169, 0x3021, 0x3022, 0x3023, 0x3024, 0x3025, 0x3026, 0x3027,
- 0x3028, 0x3029, 0x5341, 0x5344, 0x5345, 0xff21, 0xff22, 0xff23,
- 0xff24, 0xff25, 0xff26, 0xff27, 0xff28, 0xff29, 0xff2a, 0xff2b,
- 0xff2c, 0xff2d, 0xff2e, 0xff2f, 0xff30, 0xff31, 0xff32, 0xff33,
- 0xff34, 0xff35, 0xff36, 0xff37, 0xff38, 0xff39, 0xff3a, 0xff41,
- 0xff42, 0xff43, 0xff44, 0xff45, 0xff46, 0xff47, 0xff48, 0xff49,
- 0xff4a, 0xff4b, 0xff4c, 0xff4d, 0xff4e, 0xff4f, 0xff50, 0xff51,
- 0xff52, 0xff53, 0xff54, 0xff55, 0xff56,
- /* 0xa3 */
- 0xff57, 0xff58, 0xff59, 0xff5a, 0x0391, 0x0392, 0x0393, 0x0394,
- 0x0395, 0x0396, 0x0397, 0x0398, 0x0399, 0x039a, 0x039b, 0x039c,
- 0x039d, 0x039e, 0x039f, 0x03a0, 0x03a1, 0x03a3, 0x03a4, 0x03a5,
- 0x03a6, 0x03a7, 0x03a8, 0x03a9, 0x03b1, 0x03b2, 0x03b3, 0x03b4,
- 0x03b5, 0x03b6, 0x03b7, 0x03b8, 0x03b9, 0x03ba, 0x03bb, 0x03bc,
- 0x03bd, 0x03be, 0x03bf, 0x03c0, 0x03c1, 0x03c3, 0x03c4, 0x03c5,
- 0x03c6, 0x03c7, 0x03c8, 0x03c9, 0x3105, 0x3106, 0x3107, 0x3108,
- 0x3109, 0x310a, 0x310b, 0x310c, 0x310d, 0x310e, 0x310f, 0x3110,
- 0x3111, 0x3112, 0x3113, 0x3114, 0x3115, 0x3116, 0x3117, 0x3118,
- 0x3119, 0x311a, 0x311b, 0x311c, 0x311d, 0x311e, 0x311f, 0x3120,
- 0x3121, 0x3122, 0x3123, 0x3124, 0x3125, 0x3126, 0x3127, 0x3128,
- 0x3129, 0x02d9, 0x02c9, 0x02ca, 0x02c7, 0x02cb, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- /* 0xa4 */
- 0x4e00, 0x4e59, 0x4e01, 0x4e03, 0x4e43, 0x4e5d, 0x4e86, 0x4e8c,
- 0x4eba, 0x513f, 0x5165, 0x516b, 0x51e0, 0x5200, 0x5201, 0x529b,
- 0x5315, 0x5341, 0x535c, 0x53c8, 0x4e09, 0x4e0b, 0x4e08, 0x4e0a,
- 0x4e2b, 0x4e38, 0x51e1, 0x4e45, 0x4e48, 0x4e5f, 0x4e5e, 0x4e8e,
- 0x4ea1, 0x5140, 0x5203, 0x52fa, 0x5343, 0x53c9, 0x53e3, 0x571f,
- 0x58eb, 0x5915, 0x5927, 0x5973, 0x5b50, 0x5b51, 0x5b53, 0x5bf8,
- 0x5c0f, 0x5c22, 0x5c38, 0x5c71, 0x5ddd, 0x5de5, 0x5df1, 0x5df2,
- 0x5df3, 0x5dfe, 0x5e72, 0x5efe, 0x5f0b, 0x5f13, 0x624d, 0x4e11,
- 0x4e10, 0x4e0d, 0x4e2d, 0x4e30, 0x4e39, 0x4e4b, 0x5c39, 0x4e88,
- 0x4e91, 0x4e95, 0x4e92, 0x4e94, 0x4ea2, 0x4ec1, 0x4ec0, 0x4ec3,
- 0x4ec6, 0x4ec7, 0x4ecd, 0x4eca, 0x4ecb, 0x4ec4, 0x5143, 0x5141,
- 0x5167, 0x516d, 0x516e, 0x516c, 0x5197, 0x51f6, 0x5206, 0x5207,
- 0x5208, 0x52fb, 0x52fe, 0x52ff, 0x5316, 0x5339, 0x5348, 0x5347,
- 0x5345, 0x535e, 0x5384, 0x53cb, 0x53ca, 0x53cd, 0x58ec, 0x5929,
- 0x592b, 0x592a, 0x592d, 0x5b54, 0x5c11, 0x5c24, 0x5c3a, 0x5c6f,
- 0x5df4, 0x5e7b, 0x5eff, 0x5f14, 0x5f15, 0x5fc3, 0x6208, 0x6236,
- 0x624b, 0x624e, 0x652f, 0x6587, 0x6597, 0x65a4, 0x65b9, 0x65e5,
- 0x66f0, 0x6708, 0x6728, 0x6b20, 0x6b62, 0x6b79, 0x6bcb, 0x6bd4,
- 0x6bdb, 0x6c0f, 0x6c34, 0x706b, 0x722a, 0x7236, 0x723b, 0x7247,
- 0x7259, 0x725b, 0x72ac, 0x738b, 0x4e19,
- /* 0xa5 */
- 0x4e16, 0x4e15, 0x4e14, 0x4e18, 0x4e3b, 0x4e4d, 0x4e4f, 0x4e4e,
- 0x4ee5, 0x4ed8, 0x4ed4, 0x4ed5, 0x4ed6, 0x4ed7, 0x4ee3, 0x4ee4,
- 0x4ed9, 0x4ede, 0x5145, 0x5144, 0x5189, 0x518a, 0x51ac, 0x51f9,
- 0x51fa, 0x51f8, 0x520a, 0x52a0, 0x529f, 0x5305, 0x5306, 0x5317,
- 0x531d, 0x4edf, 0x534a, 0x5349, 0x5361, 0x5360, 0x536f, 0x536e,
- 0x53bb, 0x53ef, 0x53e4, 0x53f3, 0x53ec, 0x53ee, 0x53e9, 0x53e8,
- 0x53fc, 0x53f8, 0x53f5, 0x53eb, 0x53e6, 0x53ea, 0x53f2, 0x53f1,
- 0x53f0, 0x53e5, 0x53ed, 0x53fb, 0x56db, 0x56da, 0x5916, 0x592e,
- 0x5931, 0x5974, 0x5976, 0x5b55, 0x5b83, 0x5c3c, 0x5de8, 0x5de7,
- 0x5de6, 0x5e02, 0x5e03, 0x5e73, 0x5e7c, 0x5f01, 0x5f18, 0x5f17,
- 0x5fc5, 0x620a, 0x6253, 0x6254, 0x6252, 0x6251, 0x65a5, 0x65e6,
- 0x672e, 0x672c, 0x672a, 0x672b, 0x672d, 0x6b63, 0x6bcd, 0x6c11,
- 0x6c10, 0x6c38, 0x6c41, 0x6c40, 0x6c3e, 0x72af, 0x7384, 0x7389,
- 0x74dc, 0x74e6, 0x7518, 0x751f, 0x7528, 0x7529, 0x7530, 0x7531,
- 0x7532, 0x7533, 0x758b, 0x767d, 0x76ae, 0x76bf, 0x76ee, 0x77db,
- 0x77e2, 0x77f3, 0x793a, 0x79be, 0x7a74, 0x7acb, 0x4e1e, 0x4e1f,
- 0x4e52, 0x4e53, 0x4e69, 0x4e99, 0x4ea4, 0x4ea6, 0x4ea5, 0x4eff,
- 0x4f09, 0x4f19, 0x4f0a, 0x4f15, 0x4f0d, 0x4f10, 0x4f11, 0x4f0f,
- 0x4ef2, 0x4ef6, 0x4efb, 0x4ef0, 0x4ef3, 0x4efd, 0x4f01, 0x4f0b,
- 0x5149, 0x5147, 0x5146, 0x5148, 0x5168,
- /* 0xa6 */
- 0x5171, 0x518d, 0x51b0, 0x5217, 0x5211, 0x5212, 0x520e, 0x5216,
- 0x52a3, 0x5308, 0x5321, 0x5320, 0x5370, 0x5371, 0x5409, 0x540f,
- 0x540c, 0x540a, 0x5410, 0x5401, 0x540b, 0x5404, 0x5411, 0x540d,
- 0x5408, 0x5403, 0x540e, 0x5406, 0x5412, 0x56e0, 0x56de, 0x56dd,
- 0x5733, 0x5730, 0x5728, 0x572d, 0x572c, 0x572f, 0x5729, 0x5919,
- 0x591a, 0x5937, 0x5938, 0x5984, 0x5978, 0x5983, 0x597d, 0x5979,
- 0x5982, 0x5981, 0x5b57, 0x5b58, 0x5b87, 0x5b88, 0x5b85, 0x5b89,
- 0x5bfa, 0x5c16, 0x5c79, 0x5dde, 0x5e06, 0x5e76, 0x5e74, 0x5f0f,
- 0x5f1b, 0x5fd9, 0x5fd6, 0x620e, 0x620c, 0x620d, 0x6210, 0x6263,
- 0x625b, 0x6258, 0x6536, 0x65e9, 0x65e8, 0x65ec, 0x65ed, 0x66f2,
- 0x66f3, 0x6709, 0x673d, 0x6734, 0x6731, 0x6735, 0x6b21, 0x6b64,
- 0x6b7b, 0x6c16, 0x6c5d, 0x6c57, 0x6c59, 0x6c5f, 0x6c60, 0x6c50,
- 0x6c55, 0x6c61, 0x6c5b, 0x6c4d, 0x6c4e, 0x7070, 0x725f, 0x725d,
- 0x767e, 0x7af9, 0x7c73, 0x7cf8, 0x7f36, 0x7f8a, 0x7fbd, 0x8001,
- 0x8003, 0x800c, 0x8012, 0x8033, 0x807f, 0x8089, 0x808b, 0x808c,
- 0x81e3, 0x81ea, 0x81f3, 0x81fc, 0x820c, 0x821b, 0x821f, 0x826e,
- 0x8272, 0x827e, 0x866b, 0x8840, 0x884c, 0x8863, 0x897f, 0x9621,
- 0x4e32, 0x4ea8, 0x4f4d, 0x4f4f, 0x4f47, 0x4f57, 0x4f5e, 0x4f34,
- 0x4f5b, 0x4f55, 0x4f30, 0x4f50, 0x4f51, 0x4f3d, 0x4f3a, 0x4f38,
- 0x4f43, 0x4f54, 0x4f3c, 0x4f46, 0x4f63,
- /* 0xa7 */
- 0x4f5c, 0x4f60, 0x4f2f, 0x4f4e, 0x4f36, 0x4f59, 0x4f5d, 0x4f48,
- 0x4f5a, 0x514c, 0x514b, 0x514d, 0x5175, 0x51b6, 0x51b7, 0x5225,
- 0x5224, 0x5229, 0x522a, 0x5228, 0x52ab, 0x52a9, 0x52aa, 0x52ac,
- 0x5323, 0x5373, 0x5375, 0x541d, 0x542d, 0x541e, 0x543e, 0x5426,
- 0x544e, 0x5427, 0x5446, 0x5443, 0x5433, 0x5448, 0x5442, 0x541b,
- 0x5429, 0x544a, 0x5439, 0x543b, 0x5438, 0x542e, 0x5435, 0x5436,
- 0x5420, 0x543c, 0x5440, 0x5431, 0x542b, 0x541f, 0x542c, 0x56ea,
- 0x56f0, 0x56e4, 0x56eb, 0x574a, 0x5751, 0x5740, 0x574d, 0x5747,
- 0x574e, 0x573e, 0x5750, 0x574f, 0x573b, 0x58ef, 0x593e, 0x599d,
- 0x5992, 0x59a8, 0x599e, 0x59a3, 0x5999, 0x5996, 0x598d, 0x59a4,
- 0x5993, 0x598a, 0x59a5, 0x5b5d, 0x5b5c, 0x5b5a, 0x5b5b, 0x5b8c,
- 0x5b8b, 0x5b8f, 0x5c2c, 0x5c40, 0x5c41, 0x5c3f, 0x5c3e, 0x5c90,
- 0x5c91, 0x5c94, 0x5c8c, 0x5deb, 0x5e0c, 0x5e8f, 0x5e87, 0x5e8a,
- 0x5ef7, 0x5f04, 0x5f1f, 0x5f64, 0x5f62, 0x5f77, 0x5f79, 0x5fd8,
- 0x5fcc, 0x5fd7, 0x5fcd, 0x5ff1, 0x5feb, 0x5ff8, 0x5fea, 0x6212,
- 0x6211, 0x6284, 0x6297, 0x6296, 0x6280, 0x6276, 0x6289, 0x626d,
- 0x628a, 0x627c, 0x627e, 0x6279, 0x6273, 0x6292, 0x626f, 0x6298,
- 0x626e, 0x6295, 0x6293, 0x6291, 0x6286, 0x6539, 0x653b, 0x6538,
- 0x65f1, 0x66f4, 0x675f, 0x674e, 0x674f, 0x6750, 0x6751, 0x675c,
- 0x6756, 0x675e, 0x6749, 0x6746, 0x6760,
- /* 0xa8 */
- 0x6753, 0x6757, 0x6b65, 0x6bcf, 0x6c42, 0x6c5e, 0x6c99, 0x6c81,
- 0x6c88, 0x6c89, 0x6c85, 0x6c9b, 0x6c6a, 0x6c7a, 0x6c90, 0x6c70,
- 0x6c8c, 0x6c68, 0x6c96, 0x6c92, 0x6c7d, 0x6c83, 0x6c72, 0x6c7e,
- 0x6c74, 0x6c86, 0x6c76, 0x6c8d, 0x6c94, 0x6c98, 0x6c82, 0x7076,
- 0x707c, 0x707d, 0x7078, 0x7262, 0x7261, 0x7260, 0x72c4, 0x72c2,
- 0x7396, 0x752c, 0x752b, 0x7537, 0x7538, 0x7682, 0x76ef, 0x77e3,
- 0x79c1, 0x79c0, 0x79bf, 0x7a76, 0x7cfb, 0x7f55, 0x8096, 0x8093,
- 0x809d, 0x8098, 0x809b, 0x809a, 0x80b2, 0x826f, 0x8292, 0x828b,
- 0x828d, 0x898b, 0x89d2, 0x8a00, 0x8c37, 0x8c46, 0x8c55, 0x8c9d,
- 0x8d64, 0x8d70, 0x8db3, 0x8eab, 0x8eca, 0x8f9b, 0x8fb0, 0x8fc2,
- 0x8fc6, 0x8fc5, 0x8fc4, 0x5de1, 0x9091, 0x90a2, 0x90aa, 0x90a6,
- 0x90a3, 0x9149, 0x91c6, 0x91cc, 0x9632, 0x962e, 0x9631, 0x962a,
- 0x962c, 0x4e26, 0x4e56, 0x4e73, 0x4e8b, 0x4e9b, 0x4e9e, 0x4eab,
- 0x4eac, 0x4f6f, 0x4f9d, 0x4f8d, 0x4f73, 0x4f7f, 0x4f6c, 0x4f9b,
- 0x4f8b, 0x4f86, 0x4f83, 0x4f70, 0x4f75, 0x4f88, 0x4f69, 0x4f7b,
- 0x4f96, 0x4f7e, 0x4f8f, 0x4f91, 0x4f7a, 0x5154, 0x5152, 0x5155,
- 0x5169, 0x5177, 0x5176, 0x5178, 0x51bd, 0x51fd, 0x523b, 0x5238,
- 0x5237, 0x523a, 0x5230, 0x522e, 0x5236, 0x5241, 0x52be, 0x52bb,
- 0x5352, 0x5354, 0x5353, 0x5351, 0x5366, 0x5377, 0x5378, 0x5379,
- 0x53d6, 0x53d4, 0x53d7, 0x5473, 0x5475,
- /* 0xa9 */
- 0x5496, 0x5478, 0x5495, 0x5480, 0x547b, 0x5477, 0x5484, 0x5492,
- 0x5486, 0x547c, 0x5490, 0x5471, 0x5476, 0x548c, 0x549a, 0x5462,
- 0x5468, 0x548b, 0x547d, 0x548e, 0x56fa, 0x5783, 0x5777, 0x576a,
- 0x5769, 0x5761, 0x5766, 0x5764, 0x577c, 0x591c, 0x5949, 0x5947,
- 0x5948, 0x5944, 0x5954, 0x59be, 0x59bb, 0x59d4, 0x59b9, 0x59ae,
- 0x59d1, 0x59c6, 0x59d0, 0x59cd, 0x59cb, 0x59d3, 0x59ca, 0x59af,
- 0x59b3, 0x59d2, 0x59c5, 0x5b5f, 0x5b64, 0x5b63, 0x5b97, 0x5b9a,
- 0x5b98, 0x5b9c, 0x5b99, 0x5b9b, 0x5c1a, 0x5c48, 0x5c45, 0x5c46,
- 0x5cb7, 0x5ca1, 0x5cb8, 0x5ca9, 0x5cab, 0x5cb1, 0x5cb3, 0x5e18,
- 0x5e1a, 0x5e16, 0x5e15, 0x5e1b, 0x5e11, 0x5e78, 0x5e9a, 0x5e97,
- 0x5e9c, 0x5e95, 0x5e96, 0x5ef6, 0x5f26, 0x5f27, 0x5f29, 0x5f80,
- 0x5f81, 0x5f7f, 0x5f7c, 0x5fdd, 0x5fe0, 0x5ffd, 0x5ff5, 0x5fff,
- 0x600f, 0x6014, 0x602f, 0x6035, 0x6016, 0x602a, 0x6015, 0x6021,
- 0x6027, 0x6029, 0x602b, 0x601b, 0x6216, 0x6215, 0x623f, 0x623e,
- 0x6240, 0x627f, 0x62c9, 0x62cc, 0x62c4, 0x62bf, 0x62c2, 0x62b9,
- 0x62d2, 0x62db, 0x62ab, 0x62d3, 0x62d4, 0x62cb, 0x62c8, 0x62a8,
- 0x62bd, 0x62bc, 0x62d0, 0x62d9, 0x62c7, 0x62cd, 0x62b5, 0x62da,
- 0x62b1, 0x62d8, 0x62d6, 0x62d7, 0x62c6, 0x62ac, 0x62ce, 0x653e,
- 0x65a7, 0x65bc, 0x65fa, 0x6614, 0x6613, 0x660c, 0x6606, 0x6602,
- 0x660e, 0x6600, 0x660f, 0x6615, 0x660a,
- /* 0xaa */
- 0x6607, 0x670d, 0x670b, 0x676d, 0x678b, 0x6795, 0x6771, 0x679c,
- 0x6773, 0x6777, 0x6787, 0x679d, 0x6797, 0x676f, 0x6770, 0x677f,
- 0x6789, 0x677e, 0x6790, 0x6775, 0x679a, 0x6793, 0x677c, 0x676a,
- 0x6772, 0x6b23, 0x6b66, 0x6b67, 0x6b7f, 0x6c13, 0x6c1b, 0x6ce3,
- 0x6ce8, 0x6cf3, 0x6cb1, 0x6ccc, 0x6ce5, 0x6cb3, 0x6cbd, 0x6cbe,
- 0x6cbc, 0x6ce2, 0x6cab, 0x6cd5, 0x6cd3, 0x6cb8, 0x6cc4, 0x6cb9,
- 0x6cc1, 0x6cae, 0x6cd7, 0x6cc5, 0x6cf1, 0x6cbf, 0x6cbb, 0x6ce1,
- 0x6cdb, 0x6cca, 0x6cac, 0x6cef, 0x6cdc, 0x6cd6, 0x6ce0, 0x7095,
- 0x708e, 0x7092, 0x708a, 0x7099, 0x722c, 0x722d, 0x7238, 0x7248,
- 0x7267, 0x7269, 0x72c0, 0x72ce, 0x72d9, 0x72d7, 0x72d0, 0x73a9,
- 0x73a8, 0x739f, 0x73ab, 0x73a5, 0x753d, 0x759d, 0x7599, 0x759a,
- 0x7684, 0x76c2, 0x76f2, 0x76f4, 0x77e5, 0x77fd, 0x793e, 0x7940,
- 0x7941, 0x79c9, 0x79c8, 0x7a7a, 0x7a79, 0x7afa, 0x7cfe, 0x7f54,
- 0x7f8c, 0x7f8b, 0x8005, 0x80ba, 0x80a5, 0x80a2, 0x80b1, 0x80a1,
- 0x80ab, 0x80a9, 0x80b4, 0x80aa, 0x80af, 0x81e5, 0x81fe, 0x820d,
- 0x82b3, 0x829d, 0x8299, 0x82ad, 0x82bd, 0x829f, 0x82b9, 0x82b1,
- 0x82ac, 0x82a5, 0x82af, 0x82b8, 0x82a3, 0x82b0, 0x82be, 0x82b7,
- 0x864e, 0x8671, 0x521d, 0x8868, 0x8ecb, 0x8fce, 0x8fd4, 0x8fd1,
- 0x90b5, 0x90b8, 0x90b1, 0x90b6, 0x91c7, 0x91d1, 0x9577, 0x9580,
- 0x961c, 0x9640, 0x963f, 0x963b, 0x9644,
- /* 0xab */
- 0x9642, 0x96b9, 0x96e8, 0x9752, 0x975e, 0x4e9f, 0x4ead, 0x4eae,
- 0x4fe1, 0x4fb5, 0x4faf, 0x4fbf, 0x4fe0, 0x4fd1, 0x4fcf, 0x4fdd,
- 0x4fc3, 0x4fb6, 0x4fd8, 0x4fdf, 0x4fca, 0x4fd7, 0x4fae, 0x4fd0,
- 0x4fc4, 0x4fc2, 0x4fda, 0x4fce, 0x4fde, 0x4fb7, 0x5157, 0x5192,
- 0x5191, 0x51a0, 0x524e, 0x5243, 0x524a, 0x524d, 0x524c, 0x524b,
- 0x5247, 0x52c7, 0x52c9, 0x52c3, 0x52c1, 0x530d, 0x5357, 0x537b,
- 0x539a, 0x53db, 0x54ac, 0x54c0, 0x54a8, 0x54ce, 0x54c9, 0x54b8,
- 0x54a6, 0x54b3, 0x54c7, 0x54c2, 0x54bd, 0x54aa, 0x54c1, 0x54c4,
- 0x54c8, 0x54af, 0x54ab, 0x54b1, 0x54bb, 0x54a9, 0x54a7, 0x54bf,
- 0x56ff, 0x5782, 0x578b, 0x57a0, 0x57a3, 0x57a2, 0x57ce, 0x57ae,
- 0x5793, 0x5955, 0x5951, 0x594f, 0x594e, 0x5950, 0x59dc, 0x59d8,
- 0x59ff, 0x59e3, 0x59e8, 0x5a03, 0x59e5, 0x59ea, 0x59da, 0x59e6,
- 0x5a01, 0x59fb, 0x5b69, 0x5ba3, 0x5ba6, 0x5ba4, 0x5ba2, 0x5ba5,
- 0x5c01, 0x5c4e, 0x5c4f, 0x5c4d, 0x5c4b, 0x5cd9, 0x5cd2, 0x5df7,
- 0x5e1d, 0x5e25, 0x5e1f, 0x5e7d, 0x5ea0, 0x5ea6, 0x5efa, 0x5f08,
- 0x5f2d, 0x5f65, 0x5f88, 0x5f85, 0x5f8a, 0x5f8b, 0x5f87, 0x5f8c,
- 0x5f89, 0x6012, 0x601d, 0x6020, 0x6025, 0x600e, 0x6028, 0x604d,
- 0x6070, 0x6068, 0x6062, 0x6046, 0x6043, 0x606c, 0x606b, 0x606a,
- 0x6064, 0x6241, 0x62dc, 0x6316, 0x6309, 0x62fc, 0x62ed, 0x6301,
- 0x62ee, 0x62fd, 0x6307, 0x62f1, 0x62f7,
- /* 0xac */
- 0x62ef, 0x62ec, 0x62fe, 0x62f4, 0x6311, 0x6302, 0x653f, 0x6545,
- 0x65ab, 0x65bd, 0x65e2, 0x6625, 0x662d, 0x6620, 0x6627, 0x662f,
- 0x661f, 0x6628, 0x6631, 0x6624, 0x66f7, 0x67ff, 0x67d3, 0x67f1,
- 0x67d4, 0x67d0, 0x67ec, 0x67b6, 0x67af, 0x67f5, 0x67e9, 0x67ef,
- 0x67c4, 0x67d1, 0x67b4, 0x67da, 0x67e5, 0x67b8, 0x67cf, 0x67de,
- 0x67f3, 0x67b0, 0x67d9, 0x67e2, 0x67dd, 0x67d2, 0x6b6a, 0x6b83,
- 0x6b86, 0x6bb5, 0x6bd2, 0x6bd7, 0x6c1f, 0x6cc9, 0x6d0b, 0x6d32,
- 0x6d2a, 0x6d41, 0x6d25, 0x6d0c, 0x6d31, 0x6d1e, 0x6d17, 0x6d3b,
- 0x6d3d, 0x6d3e, 0x6d36, 0x6d1b, 0x6cf5, 0x6d39, 0x6d27, 0x6d38,
- 0x6d29, 0x6d2e, 0x6d35, 0x6d0e, 0x6d2b, 0x70ab, 0x70ba, 0x70b3,
- 0x70ac, 0x70af, 0x70ad, 0x70b8, 0x70ae, 0x70a4, 0x7230, 0x7272,
- 0x726f, 0x7274, 0x72e9, 0x72e0, 0x72e1, 0x73b7, 0x73ca, 0x73bb,
- 0x73b2, 0x73cd, 0x73c0, 0x73b3, 0x751a, 0x752d, 0x754f, 0x754c,
- 0x754e, 0x754b, 0x75ab, 0x75a4, 0x75a5, 0x75a2, 0x75a3, 0x7678,
- 0x7686, 0x7687, 0x7688, 0x76c8, 0x76c6, 0x76c3, 0x76c5, 0x7701,
- 0x76f9, 0x76f8, 0x7709, 0x770b, 0x76fe, 0x76fc, 0x7707, 0x77dc,
- 0x7802, 0x7814, 0x780c, 0x780d, 0x7946, 0x7949, 0x7948, 0x7947,
- 0x79b9, 0x79ba, 0x79d1, 0x79d2, 0x79cb, 0x7a7f, 0x7a81, 0x7aff,
- 0x7afd, 0x7c7d, 0x7d02, 0x7d05, 0x7d00, 0x7d09, 0x7d07, 0x7d04,
- 0x7d06, 0x7f38, 0x7f8e, 0x7fbf, 0x8004,
- /* 0xad */
- 0x8010, 0x800d, 0x8011, 0x8036, 0x80d6, 0x80e5, 0x80da, 0x80c3,
- 0x80c4, 0x80cc, 0x80e1, 0x80db, 0x80ce, 0x80de, 0x80e4, 0x80dd,
- 0x81f4, 0x8222, 0x82e7, 0x8303, 0x8305, 0x82e3, 0x82db, 0x82e6,
- 0x8304, 0x82e5, 0x8302, 0x8309, 0x82d2, 0x82d7, 0x82f1, 0x8301,
- 0x82dc, 0x82d4, 0x82d1, 0x82de, 0x82d3, 0x82df, 0x82ef, 0x8306,
- 0x8650, 0x8679, 0x867b, 0x867a, 0x884d, 0x886b, 0x8981, 0x89d4,
- 0x8a08, 0x8a02, 0x8a03, 0x8c9e, 0x8ca0, 0x8d74, 0x8d73, 0x8db4,
- 0x8ecd, 0x8ecc, 0x8ff0, 0x8fe6, 0x8fe2, 0x8fea, 0x8fe5, 0x8fed,
- 0x8feb, 0x8fe4, 0x8fe8, 0x90ca, 0x90ce, 0x90c1, 0x90c3, 0x914b,
- 0x914a, 0x91cd, 0x9582, 0x9650, 0x964b, 0x964c, 0x964d, 0x9762,
- 0x9769, 0x97cb, 0x97ed, 0x97f3, 0x9801, 0x98a8, 0x98db, 0x98df,
- 0x9996, 0x9999, 0x4e58, 0x4eb3, 0x500c, 0x500d, 0x5023, 0x4fef,
- 0x5026, 0x5025, 0x4ff8, 0x5029, 0x5016, 0x5006, 0x503c, 0x501f,
- 0x501a, 0x5012, 0x5011, 0x4ffa, 0x5000, 0x5014, 0x5028, 0x4ff1,
- 0x5021, 0x500b, 0x5019, 0x5018, 0x4ff3, 0x4fee, 0x502d, 0x502a,
- 0x4ffe, 0x502b, 0x5009, 0x517c, 0x51a4, 0x51a5, 0x51a2, 0x51cd,
- 0x51cc, 0x51c6, 0x51cb, 0x5256, 0x525c, 0x5254, 0x525b, 0x525d,
- 0x532a, 0x537f, 0x539f, 0x539d, 0x53df, 0x54e8, 0x5510, 0x5501,
- 0x5537, 0x54fc, 0x54e5, 0x54f2, 0x5506, 0x54fa, 0x5514, 0x54e9,
- 0x54ed, 0x54e1, 0x5509, 0x54ee, 0x54ea,
- /* 0xae */
- 0x54e6, 0x5527, 0x5507, 0x54fd, 0x550f, 0x5703, 0x5704, 0x57c2,
- 0x57d4, 0x57cb, 0x57c3, 0x5809, 0x590f, 0x5957, 0x5958, 0x595a,
- 0x5a11, 0x5a18, 0x5a1c, 0x5a1f, 0x5a1b, 0x5a13, 0x59ec, 0x5a20,
- 0x5a23, 0x5a29, 0x5a25, 0x5a0c, 0x5a09, 0x5b6b, 0x5c58, 0x5bb0,
- 0x5bb3, 0x5bb6, 0x5bb4, 0x5bae, 0x5bb5, 0x5bb9, 0x5bb8, 0x5c04,
- 0x5c51, 0x5c55, 0x5c50, 0x5ced, 0x5cfd, 0x5cfb, 0x5cea, 0x5ce8,
- 0x5cf0, 0x5cf6, 0x5d01, 0x5cf4, 0x5dee, 0x5e2d, 0x5e2b, 0x5eab,
- 0x5ead, 0x5ea7, 0x5f31, 0x5f92, 0x5f91, 0x5f90, 0x6059, 0x6063,
- 0x6065, 0x6050, 0x6055, 0x606d, 0x6069, 0x606f, 0x6084, 0x609f,
- 0x609a, 0x608d, 0x6094, 0x608c, 0x6085, 0x6096, 0x6247, 0x62f3,
- 0x6308, 0x62ff, 0x634e, 0x633e, 0x632f, 0x6355, 0x6342, 0x6346,
- 0x634f, 0x6349, 0x633a, 0x6350, 0x633d, 0x632a, 0x632b, 0x6328,
- 0x634d, 0x634c, 0x6548, 0x6549, 0x6599, 0x65c1, 0x65c5, 0x6642,
- 0x6649, 0x664f, 0x6643, 0x6652, 0x664c, 0x6645, 0x6641, 0x66f8,
- 0x6714, 0x6715, 0x6717, 0x6821, 0x6838, 0x6848, 0x6846, 0x6853,
- 0x6839, 0x6842, 0x6854, 0x6829, 0x68b3, 0x6817, 0x684c, 0x6851,
- 0x683d, 0x67f4, 0x6850, 0x6840, 0x683c, 0x6843, 0x682a, 0x6845,
- 0x6813, 0x6818, 0x6841, 0x6b8a, 0x6b89, 0x6bb7, 0x6c23, 0x6c27,
- 0x6c28, 0x6c26, 0x6c24, 0x6cf0, 0x6d6a, 0x6d95, 0x6d88, 0x6d87,
- 0x6d66, 0x6d78, 0x6d77, 0x6d59, 0x6d93,
- /* 0xaf */
- 0x6d6c, 0x6d89, 0x6d6e, 0x6d5a, 0x6d74, 0x6d69, 0x6d8c, 0x6d8a,
- 0x6d79, 0x6d85, 0x6d65, 0x6d94, 0x70ca, 0x70d8, 0x70e4, 0x70d9,
- 0x70c8, 0x70cf, 0x7239, 0x7279, 0x72fc, 0x72f9, 0x72fd, 0x72f8,
- 0x72f7, 0x7386, 0x73ed, 0x7409, 0x73ee, 0x73e0, 0x73ea, 0x73de,
- 0x7554, 0x755d, 0x755c, 0x755a, 0x7559, 0x75be, 0x75c5, 0x75c7,
- 0x75b2, 0x75b3, 0x75bd, 0x75bc, 0x75b9, 0x75c2, 0x75b8, 0x768b,
- 0x76b0, 0x76ca, 0x76cd, 0x76ce, 0x7729, 0x771f, 0x7720, 0x7728,
- 0x77e9, 0x7830, 0x7827, 0x7838, 0x781d, 0x7834, 0x7837, 0x7825,
- 0x782d, 0x7820, 0x781f, 0x7832, 0x7955, 0x7950, 0x7960, 0x795f,
- 0x7956, 0x795e, 0x795d, 0x7957, 0x795a, 0x79e4, 0x79e3, 0x79e7,
- 0x79df, 0x79e6, 0x79e9, 0x79d8, 0x7a84, 0x7a88, 0x7ad9, 0x7b06,
- 0x7b11, 0x7c89, 0x7d21, 0x7d17, 0x7d0b, 0x7d0a, 0x7d20, 0x7d22,
- 0x7d14, 0x7d10, 0x7d15, 0x7d1a, 0x7d1c, 0x7d0d, 0x7d19, 0x7d1b,
- 0x7f3a, 0x7f5f, 0x7f94, 0x7fc5, 0x7fc1, 0x8006, 0x8018, 0x8015,
- 0x8019, 0x8017, 0x803d, 0x803f, 0x80f1, 0x8102, 0x80f0, 0x8105,
- 0x80ed, 0x80f4, 0x8106, 0x80f8, 0x80f3, 0x8108, 0x80fd, 0x810a,
- 0x80fc, 0x80ef, 0x81ed, 0x81ec, 0x8200, 0x8210, 0x822a, 0x822b,
- 0x8228, 0x822c, 0x82bb, 0x832b, 0x8352, 0x8354, 0x834a, 0x8338,
- 0x8350, 0x8349, 0x8335, 0x8334, 0x834f, 0x8332, 0x8339, 0x8336,
- 0x8317, 0x8340, 0x8331, 0x8328, 0x8343,
- /* 0xb0 */
- 0x8654, 0x868a, 0x86aa, 0x8693, 0x86a4, 0x86a9, 0x868c, 0x86a3,
- 0x869c, 0x8870, 0x8877, 0x8881, 0x8882, 0x887d, 0x8879, 0x8a18,
- 0x8a10, 0x8a0e, 0x8a0c, 0x8a15, 0x8a0a, 0x8a17, 0x8a13, 0x8a16,
- 0x8a0f, 0x8a11, 0x8c48, 0x8c7a, 0x8c79, 0x8ca1, 0x8ca2, 0x8d77,
- 0x8eac, 0x8ed2, 0x8ed4, 0x8ecf, 0x8fb1, 0x9001, 0x9006, 0x8ff7,
- 0x9000, 0x8ffa, 0x8ff4, 0x9003, 0x8ffd, 0x9005, 0x8ff8, 0x9095,
- 0x90e1, 0x90dd, 0x90e2, 0x9152, 0x914d, 0x914c, 0x91d8, 0x91dd,
- 0x91d7, 0x91dc, 0x91d9, 0x9583, 0x9662, 0x9663, 0x9661, 0x965b,
- 0x965d, 0x9664, 0x9658, 0x965e, 0x96bb, 0x98e2, 0x99ac, 0x9aa8,
- 0x9ad8, 0x9b25, 0x9b32, 0x9b3c, 0x4e7e, 0x507a, 0x507d, 0x505c,
- 0x5047, 0x5043, 0x504c, 0x505a, 0x5049, 0x5065, 0x5076, 0x504e,
- 0x5055, 0x5075, 0x5074, 0x5077, 0x504f, 0x500f, 0x506f, 0x506d,
- 0x515c, 0x5195, 0x51f0, 0x526a, 0x526f, 0x52d2, 0x52d9, 0x52d8,
- 0x52d5, 0x5310, 0x530f, 0x5319, 0x533f, 0x5340, 0x533e, 0x53c3,
- 0x66fc, 0x5546, 0x556a, 0x5566, 0x5544, 0x555e, 0x5561, 0x5543,
- 0x554a, 0x5531, 0x5556, 0x554f, 0x5555, 0x552f, 0x5564, 0x5538,
- 0x552e, 0x555c, 0x552c, 0x5563, 0x5533, 0x5541, 0x5557, 0x5708,
- 0x570b, 0x5709, 0x57df, 0x5805, 0x580a, 0x5806, 0x57e0, 0x57e4,
- 0x57fa, 0x5802, 0x5835, 0x57f7, 0x57f9, 0x5920, 0x5962, 0x5a36,
- 0x5a41, 0x5a49, 0x5a66, 0x5a6a, 0x5a40,
- /* 0xb1 */
- 0x5a3c, 0x5a62, 0x5a5a, 0x5a46, 0x5a4a, 0x5b70, 0x5bc7, 0x5bc5,
- 0x5bc4, 0x5bc2, 0x5bbf, 0x5bc6, 0x5c09, 0x5c08, 0x5c07, 0x5c60,
- 0x5c5c, 0x5c5d, 0x5d07, 0x5d06, 0x5d0e, 0x5d1b, 0x5d16, 0x5d22,
- 0x5d11, 0x5d29, 0x5d14, 0x5d19, 0x5d24, 0x5d27, 0x5d17, 0x5de2,
- 0x5e38, 0x5e36, 0x5e33, 0x5e37, 0x5eb7, 0x5eb8, 0x5eb6, 0x5eb5,
- 0x5ebe, 0x5f35, 0x5f37, 0x5f57, 0x5f6c, 0x5f69, 0x5f6b, 0x5f97,
- 0x5f99, 0x5f9e, 0x5f98, 0x5fa1, 0x5fa0, 0x5f9c, 0x607f, 0x60a3,
- 0x6089, 0x60a0, 0x60a8, 0x60cb, 0x60b4, 0x60e6, 0x60bd, 0x60c5,
- 0x60bb, 0x60b5, 0x60dc, 0x60bc, 0x60d8, 0x60d5, 0x60c6, 0x60df,
- 0x60b8, 0x60da, 0x60c7, 0x621a, 0x621b, 0x6248, 0x63a0, 0x63a7,
- 0x6372, 0x6396, 0x63a2, 0x63a5, 0x6377, 0x6367, 0x6398, 0x63aa,
- 0x6371, 0x63a9, 0x6389, 0x6383, 0x639b, 0x636b, 0x63a8, 0x6384,
- 0x6388, 0x6399, 0x63a1, 0x63ac, 0x6392, 0x638f, 0x6380, 0x637b,
- 0x6369, 0x6368, 0x637a, 0x655d, 0x6556, 0x6551, 0x6559, 0x6557,
- 0x555f, 0x654f, 0x6558, 0x6555, 0x6554, 0x659c, 0x659b, 0x65ac,
- 0x65cf, 0x65cb, 0x65cc, 0x65ce, 0x665d, 0x665a, 0x6664, 0x6668,
- 0x6666, 0x665e, 0x66f9, 0x52d7, 0x671b, 0x6881, 0x68af, 0x68a2,
- 0x6893, 0x68b5, 0x687f, 0x6876, 0x68b1, 0x68a7, 0x6897, 0x68b0,
- 0x6883, 0x68c4, 0x68ad, 0x6886, 0x6885, 0x6894, 0x689d, 0x68a8,
- 0x689f, 0x68a1, 0x6882, 0x6b32, 0x6bba,
- /* 0xb2 */
- 0x6beb, 0x6bec, 0x6c2b, 0x6d8e, 0x6dbc, 0x6df3, 0x6dd9, 0x6db2,
- 0x6de1, 0x6dcc, 0x6de4, 0x6dfb, 0x6dfa, 0x6e05, 0x6dc7, 0x6dcb,
- 0x6daf, 0x6dd1, 0x6dae, 0x6dde, 0x6df9, 0x6db8, 0x6df7, 0x6df5,
- 0x6dc5, 0x6dd2, 0x6e1a, 0x6db5, 0x6dda, 0x6deb, 0x6dd8, 0x6dea,
- 0x6df1, 0x6dee, 0x6de8, 0x6dc6, 0x6dc4, 0x6daa, 0x6dec, 0x6dbf,
- 0x6de6, 0x70f9, 0x7109, 0x710a, 0x70fd, 0x70ef, 0x723d, 0x727d,
- 0x7281, 0x731c, 0x731b, 0x7316, 0x7313, 0x7319, 0x7387, 0x7405,
- 0x740a, 0x7403, 0x7406, 0x73fe, 0x740d, 0x74e0, 0x74f6, 0x74f7,
- 0x751c, 0x7522, 0x7565, 0x7566, 0x7562, 0x7570, 0x758f, 0x75d4,
- 0x75d5, 0x75b5, 0x75ca, 0x75cd, 0x768e, 0x76d4, 0x76d2, 0x76db,
- 0x7737, 0x773e, 0x773c, 0x7736, 0x7738, 0x773a, 0x786b, 0x7843,
- 0x784e, 0x7965, 0x7968, 0x796d, 0x79fb, 0x7a92, 0x7a95, 0x7b20,
- 0x7b28, 0x7b1b, 0x7b2c, 0x7b26, 0x7b19, 0x7b1e, 0x7b2e, 0x7c92,
- 0x7c97, 0x7c95, 0x7d46, 0x7d43, 0x7d71, 0x7d2e, 0x7d39, 0x7d3c,
- 0x7d40, 0x7d30, 0x7d33, 0x7d44, 0x7d2f, 0x7d42, 0x7d32, 0x7d31,
- 0x7f3d, 0x7f9e, 0x7f9a, 0x7fcc, 0x7fce, 0x7fd2, 0x801c, 0x804a,
- 0x8046, 0x812f, 0x8116, 0x8123, 0x812b, 0x8129, 0x8130, 0x8124,
- 0x8202, 0x8235, 0x8237, 0x8236, 0x8239, 0x838e, 0x839e, 0x8398,
- 0x8378, 0x83a2, 0x8396, 0x83bd, 0x83ab, 0x8392, 0x838a, 0x8393,
- 0x8389, 0x83a0, 0x8377, 0x837b, 0x837c,
- /* 0xb3 */
- 0x8386, 0x83a7, 0x8655, 0x5f6a, 0x86c7, 0x86c0, 0x86b6, 0x86c4,
- 0x86b5, 0x86c6, 0x86cb, 0x86b1, 0x86af, 0x86c9, 0x8853, 0x889e,
- 0x8888, 0x88ab, 0x8892, 0x8896, 0x888d, 0x888b, 0x8993, 0x898f,
- 0x8a2a, 0x8a1d, 0x8a23, 0x8a25, 0x8a31, 0x8a2d, 0x8a1f, 0x8a1b,
- 0x8a22, 0x8c49, 0x8c5a, 0x8ca9, 0x8cac, 0x8cab, 0x8ca8, 0x8caa,
- 0x8ca7, 0x8d67, 0x8d66, 0x8dbe, 0x8dba, 0x8edb, 0x8edf, 0x9019,
- 0x900d, 0x901a, 0x9017, 0x9023, 0x901f, 0x901d, 0x9010, 0x9015,
- 0x901e, 0x9020, 0x900f, 0x9022, 0x9016, 0x901b, 0x9014, 0x90e8,
- 0x90ed, 0x90fd, 0x9157, 0x91ce, 0x91f5, 0x91e6, 0x91e3, 0x91e7,
- 0x91ed, 0x91e9, 0x9589, 0x966a, 0x9675, 0x9673, 0x9678, 0x9670,
- 0x9674, 0x9676, 0x9677, 0x966c, 0x96c0, 0x96ea, 0x96e9, 0x7ae0,
- 0x7adf, 0x9802, 0x9803, 0x9b5a, 0x9ce5, 0x9e75, 0x9e7f, 0x9ea5,
- 0x9ebb, 0x50a2, 0x508d, 0x5085, 0x5099, 0x5091, 0x5080, 0x5096,
- 0x5098, 0x509a, 0x6700, 0x51f1, 0x5272, 0x5274, 0x5275, 0x5269,
- 0x52de, 0x52dd, 0x52db, 0x535a, 0x53a5, 0x557b, 0x5580, 0x55a7,
- 0x557c, 0x558a, 0x559d, 0x5598, 0x5582, 0x559c, 0x55aa, 0x5594,
- 0x5587, 0x558b, 0x5583, 0x55b3, 0x55ae, 0x559f, 0x553e, 0x55b2,
- 0x559a, 0x55bb, 0x55ac, 0x55b1, 0x557e, 0x5589, 0x55ab, 0x5599,
- 0x570d, 0x582f, 0x582a, 0x5834, 0x5824, 0x5830, 0x5831, 0x5821,
- 0x581d, 0x5820, 0x58f9, 0x58fa, 0x5960,
- /* 0xb4 */
- 0x5a77, 0x5a9a, 0x5a7f, 0x5a92, 0x5a9b, 0x5aa7, 0x5b73, 0x5b71,
- 0x5bd2, 0x5bcc, 0x5bd3, 0x5bd0, 0x5c0a, 0x5c0b, 0x5c31, 0x5d4c,
- 0x5d50, 0x5d34, 0x5d47, 0x5dfd, 0x5e45, 0x5e3d, 0x5e40, 0x5e43,
- 0x5e7e, 0x5eca, 0x5ec1, 0x5ec2, 0x5ec4, 0x5f3c, 0x5f6d, 0x5fa9,
- 0x5faa, 0x5fa8, 0x60d1, 0x60e1, 0x60b2, 0x60b6, 0x60e0, 0x611c,
- 0x6123, 0x60fa, 0x6115, 0x60f0, 0x60fb, 0x60f4, 0x6168, 0x60f1,
- 0x610e, 0x60f6, 0x6109, 0x6100, 0x6112, 0x621f, 0x6249, 0x63a3,
- 0x638c, 0x63cf, 0x63c0, 0x63e9, 0x63c9, 0x63c6, 0x63cd, 0x63d2,
- 0x63e3, 0x63d0, 0x63e1, 0x63d6, 0x63ed, 0x63ee, 0x6376, 0x63f4,
- 0x63ea, 0x63db, 0x6452, 0x63da, 0x63f9, 0x655e, 0x6566, 0x6562,
- 0x6563, 0x6591, 0x6590, 0x65af, 0x666e, 0x6670, 0x6674, 0x6676,
- 0x666f, 0x6691, 0x667a, 0x667e, 0x6677, 0x66fe, 0x66ff, 0x671f,
- 0x671d, 0x68fa, 0x68d5, 0x68e0, 0x68d8, 0x68d7, 0x6905, 0x68df,
- 0x68f5, 0x68ee, 0x68e7, 0x68f9, 0x68d2, 0x68f2, 0x68e3, 0x68cb,
- 0x68cd, 0x690d, 0x6912, 0x690e, 0x68c9, 0x68da, 0x696e, 0x68fb,
- 0x6b3e, 0x6b3a, 0x6b3d, 0x6b98, 0x6b96, 0x6bbc, 0x6bef, 0x6c2e,
- 0x6c2f, 0x6c2c, 0x6e2f, 0x6e38, 0x6e54, 0x6e21, 0x6e32, 0x6e67,
- 0x6e4a, 0x6e20, 0x6e25, 0x6e23, 0x6e1b, 0x6e5b, 0x6e58, 0x6e24,
- 0x6e56, 0x6e6e, 0x6e2d, 0x6e26, 0x6e6f, 0x6e34, 0x6e4d, 0x6e3a,
- 0x6e2c, 0x6e43, 0x6e1d, 0x6e3e, 0x6ecb,
- /* 0xb5 */
- 0x6e89, 0x6e19, 0x6e4e, 0x6e63, 0x6e44, 0x6e72, 0x6e69, 0x6e5f,
- 0x7119, 0x711a, 0x7126, 0x7130, 0x7121, 0x7136, 0x716e, 0x711c,
- 0x724c, 0x7284, 0x7280, 0x7336, 0x7325, 0x7334, 0x7329, 0x743a,
- 0x742a, 0x7433, 0x7422, 0x7425, 0x7435, 0x7436, 0x7434, 0x742f,
- 0x741b, 0x7426, 0x7428, 0x7525, 0x7526, 0x756b, 0x756a, 0x75e2,
- 0x75db, 0x75e3, 0x75d9, 0x75d8, 0x75de, 0x75e0, 0x767b, 0x767c,
- 0x7696, 0x7693, 0x76b4, 0x76dc, 0x774f, 0x77ed, 0x785d, 0x786c,
- 0x786f, 0x7a0d, 0x7a08, 0x7a0b, 0x7a05, 0x7a00, 0x7a98, 0x7a97,
- 0x7a96, 0x7ae5, 0x7ae3, 0x7b49, 0x7b56, 0x7b46, 0x7b50, 0x7b52,
- 0x7b54, 0x7b4d, 0x7b4b, 0x7b4f, 0x7b51, 0x7c9f, 0x7ca5, 0x7d5e,
- 0x7d50, 0x7d68, 0x7d55, 0x7d2b, 0x7d6e, 0x7d72, 0x7d61, 0x7d66,
- 0x7d62, 0x7d70, 0x7d73, 0x5584, 0x7fd4, 0x7fd5, 0x800b, 0x8052,
- 0x8085, 0x8155, 0x8154, 0x814b, 0x8151, 0x814e, 0x8139, 0x8146,
- 0x813e, 0x814c, 0x8153, 0x8174, 0x8212, 0x821c, 0x83e9, 0x8403,
- 0x83f8, 0x840d, 0x83e0, 0x83c5, 0x840b, 0x83c1, 0x83ef, 0x83f1,
- 0x83f4, 0x8457, 0x840a, 0x83f0, 0x840c, 0x83cc, 0x83fd, 0x83f2,
- 0x83ca, 0x8438, 0x840e, 0x8404, 0x83dc, 0x8407, 0x83d4, 0x83df,
- 0x865b, 0x86df, 0x86d9, 0x86ed, 0x86d4, 0x86db, 0x86e4, 0x86d0,
- 0x86de, 0x8857, 0x88c1, 0x88c2, 0x88b1, 0x8983, 0x8996, 0x8a3b,
- 0x8a60, 0x8a55, 0x8a5e, 0x8a3c, 0x8a41,
- /* 0xb6 */
- 0x8a54, 0x8a5b, 0x8a50, 0x8a46, 0x8a34, 0x8a3a, 0x8a36, 0x8a56,
- 0x8c61, 0x8c82, 0x8caf, 0x8cbc, 0x8cb3, 0x8cbd, 0x8cc1, 0x8cbb,
- 0x8cc0, 0x8cb4, 0x8cb7, 0x8cb6, 0x8cbf, 0x8cb8, 0x8d8a, 0x8d85,
- 0x8d81, 0x8dce, 0x8ddd, 0x8dcb, 0x8dda, 0x8dd1, 0x8dcc, 0x8ddb,
- 0x8dc6, 0x8efb, 0x8ef8, 0x8efc, 0x8f9c, 0x902e, 0x9035, 0x9031,
- 0x9038, 0x9032, 0x9036, 0x9102, 0x90f5, 0x9109, 0x90fe, 0x9163,
- 0x9165, 0x91cf, 0x9214, 0x9215, 0x9223, 0x9209, 0x921e, 0x920d,
- 0x9210, 0x9207, 0x9211, 0x9594, 0x958f, 0x958b, 0x9591, 0x9593,
- 0x9592, 0x958e, 0x968a, 0x968e, 0x968b, 0x967d, 0x9685, 0x9686,
- 0x968d, 0x9672, 0x9684, 0x96c1, 0x96c5, 0x96c4, 0x96c6, 0x96c7,
- 0x96ef, 0x96f2, 0x97cc, 0x9805, 0x9806, 0x9808, 0x98e7, 0x98ea,
- 0x98ef, 0x98e9, 0x98f2, 0x98ed, 0x99ae, 0x99ad, 0x9ec3, 0x9ecd,
- 0x9ed1, 0x4e82, 0x50ad, 0x50b5, 0x50b2, 0x50b3, 0x50c5, 0x50be,
- 0x50ac, 0x50b7, 0x50bb, 0x50af, 0x50c7, 0x527f, 0x5277, 0x527d,
- 0x52df, 0x52e6, 0x52e4, 0x52e2, 0x52e3, 0x532f, 0x55df, 0x55e8,
- 0x55d3, 0x55e6, 0x55ce, 0x55dc, 0x55c7, 0x55d1, 0x55e3, 0x55e4,
- 0x55ef, 0x55da, 0x55e1, 0x55c5, 0x55c6, 0x55e5, 0x55c9, 0x5712,
- 0x5713, 0x585e, 0x5851, 0x5858, 0x5857, 0x585a, 0x5854, 0x586b,
- 0x584c, 0x586d, 0x584a, 0x5862, 0x5852, 0x584b, 0x5967, 0x5ac1,
- 0x5ac9, 0x5acc, 0x5abe, 0x5abd, 0x5abc,
- /* 0xb7 */
- 0x5ab3, 0x5ac2, 0x5ab2, 0x5d69, 0x5d6f, 0x5e4c, 0x5e79, 0x5ec9,
- 0x5ec8, 0x5f12, 0x5f59, 0x5fac, 0x5fae, 0x611a, 0x610f, 0x6148,
- 0x611f, 0x60f3, 0x611b, 0x60f9, 0x6101, 0x6108, 0x614e, 0x614c,
- 0x6144, 0x614d, 0x613e, 0x6134, 0x6127, 0x610d, 0x6106, 0x6137,
- 0x6221, 0x6222, 0x6413, 0x643e, 0x641e, 0x642a, 0x642d, 0x643d,
- 0x642c, 0x640f, 0x641c, 0x6414, 0x640d, 0x6436, 0x6416, 0x6417,
- 0x6406, 0x656c, 0x659f, 0x65b0, 0x6697, 0x6689, 0x6687, 0x6688,
- 0x6696, 0x6684, 0x6698, 0x668d, 0x6703, 0x6994, 0x696d, 0x695a,
- 0x6977, 0x6960, 0x6954, 0x6975, 0x6930, 0x6982, 0x694a, 0x6968,
- 0x696b, 0x695e, 0x6953, 0x6979, 0x6986, 0x695d, 0x6963, 0x695b,
- 0x6b47, 0x6b72, 0x6bc0, 0x6bbf, 0x6bd3, 0x6bfd, 0x6ea2, 0x6eaf,
- 0x6ed3, 0x6eb6, 0x6ec2, 0x6e90, 0x6e9d, 0x6ec7, 0x6ec5, 0x6ea5,
- 0x6e98, 0x6ebc, 0x6eba, 0x6eab, 0x6ed1, 0x6e96, 0x6e9c, 0x6ec4,
- 0x6ed4, 0x6eaa, 0x6ea7, 0x6eb4, 0x714e, 0x7159, 0x7169, 0x7164,
- 0x7149, 0x7167, 0x715c, 0x716c, 0x7166, 0x714c, 0x7165, 0x715e,
- 0x7146, 0x7168, 0x7156, 0x723a, 0x7252, 0x7337, 0x7345, 0x733f,
- 0x733e, 0x746f, 0x745a, 0x7455, 0x745f, 0x745e, 0x7441, 0x743f,
- 0x7459, 0x745b, 0x745c, 0x7576, 0x7578, 0x7600, 0x75f0, 0x7601,
- 0x75f2, 0x75f1, 0x75fa, 0x75ff, 0x75f4, 0x75f3, 0x76de, 0x76df,
- 0x775b, 0x776b, 0x7766, 0x775e, 0x7763,
- /* 0xb8 */
- 0x7779, 0x776a, 0x776c, 0x775c, 0x7765, 0x7768, 0x7762, 0x77ee,
- 0x788e, 0x78b0, 0x7897, 0x7898, 0x788c, 0x7889, 0x787c, 0x7891,
- 0x7893, 0x787f, 0x797a, 0x797f, 0x7981, 0x842c, 0x79bd, 0x7a1c,
- 0x7a1a, 0x7a20, 0x7a14, 0x7a1f, 0x7a1e, 0x7a9f, 0x7aa0, 0x7b77,
- 0x7bc0, 0x7b60, 0x7b6e, 0x7b67, 0x7cb1, 0x7cb3, 0x7cb5, 0x7d93,
- 0x7d79, 0x7d91, 0x7d81, 0x7d8f, 0x7d5b, 0x7f6e, 0x7f69, 0x7f6a,
- 0x7f72, 0x7fa9, 0x7fa8, 0x7fa4, 0x8056, 0x8058, 0x8086, 0x8084,
- 0x8171, 0x8170, 0x8178, 0x8165, 0x816e, 0x8173, 0x816b, 0x8179,
- 0x817a, 0x8166, 0x8205, 0x8247, 0x8482, 0x8477, 0x843d, 0x8431,
- 0x8475, 0x8466, 0x846b, 0x8449, 0x846c, 0x845b, 0x843c, 0x8435,
- 0x8461, 0x8463, 0x8469, 0x846d, 0x8446, 0x865e, 0x865c, 0x865f,
- 0x86f9, 0x8713, 0x8708, 0x8707, 0x8700, 0x86fe, 0x86fb, 0x8702,
- 0x8703, 0x8706, 0x870a, 0x8859, 0x88df, 0x88d4, 0x88d9, 0x88dc,
- 0x88d8, 0x88dd, 0x88e1, 0x88ca, 0x88d5, 0x88d2, 0x899c, 0x89e3,
- 0x8a6b, 0x8a72, 0x8a73, 0x8a66, 0x8a69, 0x8a70, 0x8a87, 0x8a7c,
- 0x8a63, 0x8aa0, 0x8a71, 0x8a85, 0x8a6d, 0x8a62, 0x8a6e, 0x8a6c,
- 0x8a79, 0x8a7b, 0x8a3e, 0x8a68, 0x8c62, 0x8c8a, 0x8c89, 0x8cca,
- 0x8cc7, 0x8cc8, 0x8cc4, 0x8cb2, 0x8cc3, 0x8cc2, 0x8cc5, 0x8de1,
- 0x8ddf, 0x8de8, 0x8def, 0x8df3, 0x8dfa, 0x8dea, 0x8de4, 0x8de6,
- 0x8eb2, 0x8f03, 0x8f09, 0x8efe, 0x8f0a,
- /* 0xb9 */
- 0x8f9f, 0x8fb2, 0x904b, 0x904a, 0x9053, 0x9042, 0x9054, 0x903c,
- 0x9055, 0x9050, 0x9047, 0x904f, 0x904e, 0x904d, 0x9051, 0x903e,
- 0x9041, 0x9112, 0x9117, 0x916c, 0x916a, 0x9169, 0x91c9, 0x9237,
- 0x9257, 0x9238, 0x923d, 0x9240, 0x923e, 0x925b, 0x924b, 0x9264,
- 0x9251, 0x9234, 0x9249, 0x924d, 0x9245, 0x9239, 0x923f, 0x925a,
- 0x9598, 0x9698, 0x9694, 0x9695, 0x96cd, 0x96cb, 0x96c9, 0x96ca,
- 0x96f7, 0x96fb, 0x96f9, 0x96f6, 0x9756, 0x9774, 0x9776, 0x9810,
- 0x9811, 0x9813, 0x980a, 0x9812, 0x980c, 0x98fc, 0x98f4, 0x98fd,
- 0x98fe, 0x99b3, 0x99b1, 0x99b4, 0x9ae1, 0x9ce9, 0x9e82, 0x9f0e,
- 0x9f13, 0x9f20, 0x50e7, 0x50ee, 0x50e5, 0x50d6, 0x50ed, 0x50da,
- 0x50d5, 0x50cf, 0x50d1, 0x50f1, 0x50ce, 0x50e9, 0x5162, 0x51f3,
- 0x5283, 0x5282, 0x5331, 0x53ad, 0x55fe, 0x5600, 0x561b, 0x5617,
- 0x55fd, 0x5614, 0x5606, 0x5609, 0x560d, 0x560e, 0x55f7, 0x5616,
- 0x561f, 0x5608, 0x5610, 0x55f6, 0x5718, 0x5716, 0x5875, 0x587e,
- 0x5883, 0x5893, 0x588a, 0x5879, 0x5885, 0x587d, 0x58fd, 0x5925,
- 0x5922, 0x5924, 0x596a, 0x5969, 0x5ae1, 0x5ae6, 0x5ae9, 0x5ad7,
- 0x5ad6, 0x5ad8, 0x5ae3, 0x5b75, 0x5bde, 0x5be7, 0x5be1, 0x5be5,
- 0x5be6, 0x5be8, 0x5be2, 0x5be4, 0x5bdf, 0x5c0d, 0x5c62, 0x5d84,
- 0x5d87, 0x5e5b, 0x5e63, 0x5e55, 0x5e57, 0x5e54, 0x5ed3, 0x5ed6,
- 0x5f0a, 0x5f46, 0x5f70, 0x5fb9, 0x6147,
- /* 0xba */
- 0x613f, 0x614b, 0x6177, 0x6162, 0x6163, 0x615f, 0x615a, 0x6158,
- 0x6175, 0x622a, 0x6487, 0x6458, 0x6454, 0x64a4, 0x6478, 0x645f,
- 0x647a, 0x6451, 0x6467, 0x6434, 0x646d, 0x647b, 0x6572, 0x65a1,
- 0x65d7, 0x65d6, 0x66a2, 0x66a8, 0x669d, 0x699c, 0x69a8, 0x6995,
- 0x69c1, 0x69ae, 0x69d3, 0x69cb, 0x699b, 0x69b7, 0x69bb, 0x69ab,
- 0x69b4, 0x69d0, 0x69cd, 0x69ad, 0x69cc, 0x69a6, 0x69c3, 0x69a3,
- 0x6b49, 0x6b4c, 0x6c33, 0x6f33, 0x6f14, 0x6efe, 0x6f13, 0x6ef4,
- 0x6f29, 0x6f3e, 0x6f20, 0x6f2c, 0x6f0f, 0x6f02, 0x6f22, 0x6eff,
- 0x6eef, 0x6f06, 0x6f31, 0x6f38, 0x6f32, 0x6f23, 0x6f15, 0x6f2b,
- 0x6f2f, 0x6f88, 0x6f2a, 0x6eec, 0x6f01, 0x6ef2, 0x6ecc, 0x6ef7,
- 0x7194, 0x7199, 0x717d, 0x718a, 0x7184, 0x7192, 0x723e, 0x7292,
- 0x7296, 0x7344, 0x7350, 0x7464, 0x7463, 0x746a, 0x7470, 0x746d,
- 0x7504, 0x7591, 0x7627, 0x760d, 0x760b, 0x7609, 0x7613, 0x76e1,
- 0x76e3, 0x7784, 0x777d, 0x777f, 0x7761, 0x78c1, 0x789f, 0x78a7,
- 0x78b3, 0x78a9, 0x78a3, 0x798e, 0x798f, 0x798d, 0x7a2e, 0x7a31,
- 0x7aaa, 0x7aa9, 0x7aed, 0x7aef, 0x7ba1, 0x7b95, 0x7b8b, 0x7b75,
- 0x7b97, 0x7b9d, 0x7b94, 0x7b8f, 0x7bb8, 0x7b87, 0x7b84, 0x7cb9,
- 0x7cbd, 0x7cbe, 0x7dbb, 0x7db0, 0x7d9c, 0x7dbd, 0x7dbe, 0x7da0,
- 0x7dca, 0x7db4, 0x7db2, 0x7db1, 0x7dba, 0x7da2, 0x7dbf, 0x7db5,
- 0x7db8, 0x7dad, 0x7dd2, 0x7dc7, 0x7dac,
- /* 0xbb */
- 0x7f70, 0x7fe0, 0x7fe1, 0x7fdf, 0x805e, 0x805a, 0x8087, 0x8150,
- 0x8180, 0x818f, 0x8188, 0x818a, 0x817f, 0x8182, 0x81e7, 0x81fa,
- 0x8207, 0x8214, 0x821e, 0x824b, 0x84c9, 0x84bf, 0x84c6, 0x84c4,
- 0x8499, 0x849e, 0x84b2, 0x849c, 0x84cb, 0x84b8, 0x84c0, 0x84d3,
- 0x8490, 0x84bc, 0x84d1, 0x84ca, 0x873f, 0x871c, 0x873b, 0x8722,
- 0x8725, 0x8734, 0x8718, 0x8755, 0x8737, 0x8729, 0x88f3, 0x8902,
- 0x88f4, 0x88f9, 0x88f8, 0x88fd, 0x88e8, 0x891a, 0x88ef, 0x8aa6,
- 0x8a8c, 0x8a9e, 0x8aa3, 0x8a8d, 0x8aa1, 0x8a93, 0x8aa4, 0x8aaa,
- 0x8aa5, 0x8aa8, 0x8a98, 0x8a91, 0x8a9a, 0x8aa7, 0x8c6a, 0x8c8d,
- 0x8c8c, 0x8cd3, 0x8cd1, 0x8cd2, 0x8d6b, 0x8d99, 0x8d95, 0x8dfc,
- 0x8f14, 0x8f12, 0x8f15, 0x8f13, 0x8fa3, 0x9060, 0x9058, 0x905c,
- 0x9063, 0x9059, 0x905e, 0x9062, 0x905d, 0x905b, 0x9119, 0x9118,
- 0x911e, 0x9175, 0x9178, 0x9177, 0x9174, 0x9278, 0x9280, 0x9285,
- 0x9298, 0x9296, 0x927b, 0x9293, 0x929c, 0x92a8, 0x927c, 0x9291,
- 0x95a1, 0x95a8, 0x95a9, 0x95a3, 0x95a5, 0x95a4, 0x9699, 0x969c,
- 0x969b, 0x96cc, 0x96d2, 0x9700, 0x977c, 0x9785, 0x97f6, 0x9817,
- 0x9818, 0x98af, 0x98b1, 0x9903, 0x9905, 0x990c, 0x9909, 0x99c1,
- 0x9aaf, 0x9ab0, 0x9ae6, 0x9b41, 0x9b42, 0x9cf4, 0x9cf6, 0x9cf3,
- 0x9ebc, 0x9f3b, 0x9f4a, 0x5104, 0x5100, 0x50fb, 0x50f5, 0x50f9,
- 0x5102, 0x5108, 0x5109, 0x5105, 0x51dc,
- /* 0xbc */
- 0x5287, 0x5288, 0x5289, 0x528d, 0x528a, 0x52f0, 0x53b2, 0x562e,
- 0x563b, 0x5639, 0x5632, 0x563f, 0x5634, 0x5629, 0x5653, 0x564e,
- 0x5657, 0x5674, 0x5636, 0x562f, 0x5630, 0x5880, 0x589f, 0x589e,
- 0x58b3, 0x589c, 0x58ae, 0x58a9, 0x58a6, 0x596d, 0x5b09, 0x5afb,
- 0x5b0b, 0x5af5, 0x5b0c, 0x5b08, 0x5bee, 0x5bec, 0x5be9, 0x5beb,
- 0x5c64, 0x5c65, 0x5d9d, 0x5d94, 0x5e62, 0x5e5f, 0x5e61, 0x5ee2,
- 0x5eda, 0x5edf, 0x5edd, 0x5ee3, 0x5ee0, 0x5f48, 0x5f71, 0x5fb7,
- 0x5fb5, 0x6176, 0x6167, 0x616e, 0x615d, 0x6155, 0x6182, 0x617c,
- 0x6170, 0x616b, 0x617e, 0x61a7, 0x6190, 0x61ab, 0x618e, 0x61ac,
- 0x619a, 0x61a4, 0x6194, 0x61ae, 0x622e, 0x6469, 0x646f, 0x6479,
- 0x649e, 0x64b2, 0x6488, 0x6490, 0x64b0, 0x64a5, 0x6493, 0x6495,
- 0x64a9, 0x6492, 0x64ae, 0x64ad, 0x64ab, 0x649a, 0x64ac, 0x6499,
- 0x64a2, 0x64b3, 0x6575, 0x6577, 0x6578, 0x66ae, 0x66ab, 0x66b4,
- 0x66b1, 0x6a23, 0x6a1f, 0x69e8, 0x6a01, 0x6a1e, 0x6a19, 0x69fd,
- 0x6a21, 0x6a13, 0x6a0a, 0x69f3, 0x6a02, 0x6a05, 0x69ed, 0x6a11,
- 0x6b50, 0x6b4e, 0x6ba4, 0x6bc5, 0x6bc6, 0x6f3f, 0x6f7c, 0x6f84,
- 0x6f51, 0x6f66, 0x6f54, 0x6f86, 0x6f6d, 0x6f5b, 0x6f78, 0x6f6e,
- 0x6f8e, 0x6f7a, 0x6f70, 0x6f64, 0x6f97, 0x6f58, 0x6ed5, 0x6f6f,
- 0x6f60, 0x6f5f, 0x719f, 0x71ac, 0x71b1, 0x71a8, 0x7256, 0x729b,
- 0x734e, 0x7357, 0x7469, 0x748b, 0x7483,
- /* 0xbd */
- 0x747e, 0x7480, 0x757f, 0x7620, 0x7629, 0x761f, 0x7624, 0x7626,
- 0x7621, 0x7622, 0x769a, 0x76ba, 0x76e4, 0x778e, 0x7787, 0x778c,
- 0x7791, 0x778b, 0x78cb, 0x78c5, 0x78ba, 0x78ca, 0x78be, 0x78d5,
- 0x78bc, 0x78d0, 0x7a3f, 0x7a3c, 0x7a40, 0x7a3d, 0x7a37, 0x7a3b,
- 0x7aaf, 0x7aae, 0x7bad, 0x7bb1, 0x7bc4, 0x7bb4, 0x7bc6, 0x7bc7,
- 0x7bc1, 0x7ba0, 0x7bcc, 0x7cca, 0x7de0, 0x7df4, 0x7def, 0x7dfb,
- 0x7dd8, 0x7dec, 0x7ddd, 0x7de8, 0x7de3, 0x7dda, 0x7dde, 0x7de9,
- 0x7d9e, 0x7dd9, 0x7df2, 0x7df9, 0x7f75, 0x7f77, 0x7faf, 0x7fe9,
- 0x8026, 0x819b, 0x819c, 0x819d, 0x81a0, 0x819a, 0x8198, 0x8517,
- 0x853d, 0x851a, 0x84ee, 0x852c, 0x852d, 0x8513, 0x8511, 0x8523,
- 0x8521, 0x8514, 0x84ec, 0x8525, 0x84ff, 0x8506, 0x8782, 0x8774,
- 0x8776, 0x8760, 0x8766, 0x8778, 0x8768, 0x8759, 0x8757, 0x874c,
- 0x8753, 0x885b, 0x885d, 0x8910, 0x8907, 0x8912, 0x8913, 0x8915,
- 0x890a, 0x8abc, 0x8ad2, 0x8ac7, 0x8ac4, 0x8a95, 0x8acb, 0x8af8,
- 0x8ab2, 0x8ac9, 0x8ac2, 0x8abf, 0x8ab0, 0x8ad6, 0x8acd, 0x8ab6,
- 0x8ab9, 0x8adb, 0x8c4c, 0x8c4e, 0x8c6c, 0x8ce0, 0x8cde, 0x8ce6,
- 0x8ce4, 0x8cec, 0x8ced, 0x8ce2, 0x8ce3, 0x8cdc, 0x8cea, 0x8ce1,
- 0x8d6d, 0x8d9f, 0x8da3, 0x8e2b, 0x8e10, 0x8e1d, 0x8e22, 0x8e0f,
- 0x8e29, 0x8e1f, 0x8e21, 0x8e1e, 0x8eba, 0x8f1d, 0x8f1b, 0x8f1f,
- 0x8f29, 0x8f26, 0x8f2a, 0x8f1c, 0x8f1e,
- /* 0xbe */
- 0x8f25, 0x9069, 0x906e, 0x9068, 0x906d, 0x9077, 0x9130, 0x912d,
- 0x9127, 0x9131, 0x9187, 0x9189, 0x918b, 0x9183, 0x92c5, 0x92bb,
- 0x92b7, 0x92ea, 0x92ac, 0x92e4, 0x92c1, 0x92b3, 0x92bc, 0x92d2,
- 0x92c7, 0x92f0, 0x92b2, 0x95ad, 0x95b1, 0x9704, 0x9706, 0x9707,
- 0x9709, 0x9760, 0x978d, 0x978b, 0x978f, 0x9821, 0x982b, 0x981c,
- 0x98b3, 0x990a, 0x9913, 0x9912, 0x9918, 0x99dd, 0x99d0, 0x99df,
- 0x99db, 0x99d1, 0x99d5, 0x99d2, 0x99d9, 0x9ab7, 0x9aee, 0x9aef,
- 0x9b27, 0x9b45, 0x9b44, 0x9b77, 0x9b6f, 0x9d06, 0x9d09, 0x9d03,
- 0x9ea9, 0x9ebe, 0x9ece, 0x58a8, 0x9f52, 0x5112, 0x5118, 0x5114,
- 0x5110, 0x5115, 0x5180, 0x51aa, 0x51dd, 0x5291, 0x5293, 0x52f3,
- 0x5659, 0x566b, 0x5679, 0x5669, 0x5664, 0x5678, 0x566a, 0x5668,
- 0x5665, 0x5671, 0x566f, 0x566c, 0x5662, 0x5676, 0x58c1, 0x58be,
- 0x58c7, 0x58c5, 0x596e, 0x5b1d, 0x5b34, 0x5b78, 0x5bf0, 0x5c0e,
- 0x5f4a, 0x61b2, 0x6191, 0x61a9, 0x618a, 0x61cd, 0x61b6, 0x61be,
- 0x61ca, 0x61c8, 0x6230, 0x64c5, 0x64c1, 0x64cb, 0x64bb, 0x64bc,
- 0x64da, 0x64c4, 0x64c7, 0x64c2, 0x64cd, 0x64bf, 0x64d2, 0x64d4,
- 0x64be, 0x6574, 0x66c6, 0x66c9, 0x66b9, 0x66c4, 0x66c7, 0x66b8,
- 0x6a3d, 0x6a38, 0x6a3a, 0x6a59, 0x6a6b, 0x6a58, 0x6a39, 0x6a44,
- 0x6a62, 0x6a61, 0x6a4b, 0x6a47, 0x6a35, 0x6a5f, 0x6a48, 0x6b59,
- 0x6b77, 0x6c05, 0x6fc2, 0x6fb1, 0x6fa1,
- /* 0xbf */
- 0x6fc3, 0x6fa4, 0x6fc1, 0x6fa7, 0x6fb3, 0x6fc0, 0x6fb9, 0x6fb6,
- 0x6fa6, 0x6fa0, 0x6fb4, 0x71be, 0x71c9, 0x71d0, 0x71d2, 0x71c8,
- 0x71d5, 0x71b9, 0x71ce, 0x71d9, 0x71dc, 0x71c3, 0x71c4, 0x7368,
- 0x749c, 0x74a3, 0x7498, 0x749f, 0x749e, 0x74e2, 0x750c, 0x750d,
- 0x7634, 0x7638, 0x763a, 0x76e7, 0x76e5, 0x77a0, 0x779e, 0x779f,
- 0x77a5, 0x78e8, 0x78da, 0x78ec, 0x78e7, 0x79a6, 0x7a4d, 0x7a4e,
- 0x7a46, 0x7a4c, 0x7a4b, 0x7aba, 0x7bd9, 0x7c11, 0x7bc9, 0x7be4,
- 0x7bdb, 0x7be1, 0x7be9, 0x7be6, 0x7cd5, 0x7cd6, 0x7e0a, 0x7e11,
- 0x7e08, 0x7e1b, 0x7e23, 0x7e1e, 0x7e1d, 0x7e09, 0x7e10, 0x7f79,
- 0x7fb2, 0x7ff0, 0x7ff1, 0x7fee, 0x8028, 0x81b3, 0x81a9, 0x81a8,
- 0x81fb, 0x8208, 0x8258, 0x8259, 0x854a, 0x8559, 0x8548, 0x8568,
- 0x8569, 0x8543, 0x8549, 0x856d, 0x856a, 0x855e, 0x8783, 0x879f,
- 0x879e, 0x87a2, 0x878d, 0x8861, 0x892a, 0x8932, 0x8925, 0x892b,
- 0x8921, 0x89aa, 0x89a6, 0x8ae6, 0x8afa, 0x8aeb, 0x8af1, 0x8b00,
- 0x8adc, 0x8ae7, 0x8aee, 0x8afe, 0x8b01, 0x8b02, 0x8af7, 0x8aed,
- 0x8af3, 0x8af6, 0x8afc, 0x8c6b, 0x8c6d, 0x8c93, 0x8cf4, 0x8e44,
- 0x8e31, 0x8e34, 0x8e42, 0x8e39, 0x8e35, 0x8f3b, 0x8f2f, 0x8f38,
- 0x8f33, 0x8fa8, 0x8fa6, 0x9075, 0x9074, 0x9078, 0x9072, 0x907c,
- 0x907a, 0x9134, 0x9192, 0x9320, 0x9336, 0x92f8, 0x9333, 0x932f,
- 0x9322, 0x92fc, 0x932b, 0x9304, 0x931a,
- /* 0xc0 */
- 0x9310, 0x9326, 0x9321, 0x9315, 0x932e, 0x9319, 0x95bb, 0x96a7,
- 0x96a8, 0x96aa, 0x96d5, 0x970e, 0x9711, 0x9716, 0x970d, 0x9713,
- 0x970f, 0x975b, 0x975c, 0x9766, 0x9798, 0x9830, 0x9838, 0x983b,
- 0x9837, 0x982d, 0x9839, 0x9824, 0x9910, 0x9928, 0x991e, 0x991b,
- 0x9921, 0x991a, 0x99ed, 0x99e2, 0x99f1, 0x9ab8, 0x9abc, 0x9afb,
- 0x9aed, 0x9b28, 0x9b91, 0x9d15, 0x9d23, 0x9d26, 0x9d28, 0x9d12,
- 0x9d1b, 0x9ed8, 0x9ed4, 0x9f8d, 0x9f9c, 0x512a, 0x511f, 0x5121,
- 0x5132, 0x52f5, 0x568e, 0x5680, 0x5690, 0x5685, 0x5687, 0x568f,
- 0x58d5, 0x58d3, 0x58d1, 0x58ce, 0x5b30, 0x5b2a, 0x5b24, 0x5b7a,
- 0x5c37, 0x5c68, 0x5dbc, 0x5dba, 0x5dbd, 0x5db8, 0x5e6b, 0x5f4c,
- 0x5fbd, 0x61c9, 0x61c2, 0x61c7, 0x61e6, 0x61cb, 0x6232, 0x6234,
- 0x64ce, 0x64ca, 0x64d8, 0x64e0, 0x64f0, 0x64e6, 0x64ec, 0x64f1,
- 0x64e2, 0x64ed, 0x6582, 0x6583, 0x66d9, 0x66d6, 0x6a80, 0x6a94,
- 0x6a84, 0x6aa2, 0x6a9c, 0x6adb, 0x6aa3, 0x6a7e, 0x6a97, 0x6a90,
- 0x6aa0, 0x6b5c, 0x6bae, 0x6bda, 0x6c08, 0x6fd8, 0x6ff1, 0x6fdf,
- 0x6fe0, 0x6fdb, 0x6fe4, 0x6feb, 0x6fef, 0x6f80, 0x6fec, 0x6fe1,
- 0x6fe9, 0x6fd5, 0x6fee, 0x6ff0, 0x71e7, 0x71df, 0x71ee, 0x71e6,
- 0x71e5, 0x71ed, 0x71ec, 0x71f4, 0x71e0, 0x7235, 0x7246, 0x7370,
- 0x7372, 0x74a9, 0x74b0, 0x74a6, 0x74a8, 0x7646, 0x7642, 0x764c,
- 0x76ea, 0x77b3, 0x77aa, 0x77b0, 0x77ac,
- /* 0xc1 */
- 0x77a7, 0x77ad, 0x77ef, 0x78f7, 0x78fa, 0x78f4, 0x78ef, 0x7901,
- 0x79a7, 0x79aa, 0x7a57, 0x7abf, 0x7c07, 0x7c0d, 0x7bfe, 0x7bf7,
- 0x7c0c, 0x7be0, 0x7ce0, 0x7cdc, 0x7cde, 0x7ce2, 0x7cdf, 0x7cd9,
- 0x7cdd, 0x7e2e, 0x7e3e, 0x7e46, 0x7e37, 0x7e32, 0x7e43, 0x7e2b,
- 0x7e3d, 0x7e31, 0x7e45, 0x7e41, 0x7e34, 0x7e39, 0x7e48, 0x7e35,
- 0x7e3f, 0x7e2f, 0x7f44, 0x7ff3, 0x7ffc, 0x8071, 0x8072, 0x8070,
- 0x806f, 0x8073, 0x81c6, 0x81c3, 0x81ba, 0x81c2, 0x81c0, 0x81bf,
- 0x81bd, 0x81c9, 0x81be, 0x81e8, 0x8209, 0x8271, 0x85aa, 0x8584,
- 0x857e, 0x859c, 0x8591, 0x8594, 0x85af, 0x859b, 0x8587, 0x85a8,
- 0x858a, 0x8667, 0x87c0, 0x87d1, 0x87b3, 0x87d2, 0x87c6, 0x87ab,
- 0x87bb, 0x87ba, 0x87c8, 0x87cb, 0x893b, 0x8936, 0x8944, 0x8938,
- 0x893d, 0x89ac, 0x8b0e, 0x8b17, 0x8b19, 0x8b1b, 0x8b0a, 0x8b20,
- 0x8b1d, 0x8b04, 0x8b10, 0x8c41, 0x8c3f, 0x8c73, 0x8cfa, 0x8cfd,
- 0x8cfc, 0x8cf8, 0x8cfb, 0x8da8, 0x8e49, 0x8e4b, 0x8e48, 0x8e4a,
- 0x8f44, 0x8f3e, 0x8f42, 0x8f45, 0x8f3f, 0x907f, 0x907d, 0x9084,
- 0x9081, 0x9082, 0x9080, 0x9139, 0x91a3, 0x919e, 0x919c, 0x934d,
- 0x9382, 0x9328, 0x9375, 0x934a, 0x9365, 0x934b, 0x9318, 0x937e,
- 0x936c, 0x935b, 0x9370, 0x935a, 0x9354, 0x95ca, 0x95cb, 0x95cc,
- 0x95c8, 0x95c6, 0x96b1, 0x96b8, 0x96d6, 0x971c, 0x971e, 0x97a0,
- 0x97d3, 0x9846, 0x98b6, 0x9935, 0x9a01,
- /* 0xc2 */
- 0x99ff, 0x9bae, 0x9bab, 0x9baa, 0x9bad, 0x9d3b, 0x9d3f, 0x9e8b,
- 0x9ecf, 0x9ede, 0x9edc, 0x9edd, 0x9edb, 0x9f3e, 0x9f4b, 0x53e2,
- 0x5695, 0x56ae, 0x58d9, 0x58d8, 0x5b38, 0x5f5d, 0x61e3, 0x6233,
- 0x64f4, 0x64f2, 0x64fe, 0x6506, 0x64fa, 0x64fb, 0x64f7, 0x65b7,
- 0x66dc, 0x6726, 0x6ab3, 0x6aac, 0x6ac3, 0x6abb, 0x6ab8, 0x6ac2,
- 0x6aae, 0x6aaf, 0x6b5f, 0x6b78, 0x6baf, 0x7009, 0x700b, 0x6ffe,
- 0x7006, 0x6ffa, 0x7011, 0x700f, 0x71fb, 0x71fc, 0x71fe, 0x71f8,
- 0x7377, 0x7375, 0x74a7, 0x74bf, 0x7515, 0x7656, 0x7658, 0x7652,
- 0x77bd, 0x77bf, 0x77bb, 0x77bc, 0x790e, 0x79ae, 0x7a61, 0x7a62,
- 0x7a60, 0x7ac4, 0x7ac5, 0x7c2b, 0x7c27, 0x7c2a, 0x7c1e, 0x7c23,
- 0x7c21, 0x7ce7, 0x7e54, 0x7e55, 0x7e5e, 0x7e5a, 0x7e61, 0x7e52,
- 0x7e59, 0x7f48, 0x7ff9, 0x7ffb, 0x8077, 0x8076, 0x81cd, 0x81cf,
- 0x820a, 0x85cf, 0x85a9, 0x85cd, 0x85d0, 0x85c9, 0x85b0, 0x85ba,
- 0x85b9, 0x85a6, 0x87ef, 0x87ec, 0x87f2, 0x87e0, 0x8986, 0x89b2,
- 0x89f4, 0x8b28, 0x8b39, 0x8b2c, 0x8b2b, 0x8c50, 0x8d05, 0x8e59,
- 0x8e63, 0x8e66, 0x8e64, 0x8e5f, 0x8e55, 0x8ec0, 0x8f49, 0x8f4d,
- 0x9087, 0x9083, 0x9088, 0x91ab, 0x91ac, 0x91d0, 0x9394, 0x938a,
- 0x9396, 0x93a2, 0x93b3, 0x93ae, 0x93ac, 0x93b0, 0x9398, 0x939a,
- 0x9397, 0x95d4, 0x95d6, 0x95d0, 0x95d5, 0x96e2, 0x96dc, 0x96d9,
- 0x96db, 0x96de, 0x9724, 0x97a3, 0x97a6,
- /* 0xc3 */
- 0x97ad, 0x97f9, 0x984d, 0x984f, 0x984c, 0x984e, 0x9853, 0x98ba,
- 0x993e, 0x993f, 0x993d, 0x992e, 0x99a5, 0x9a0e, 0x9ac1, 0x9b03,
- 0x9b06, 0x9b4f, 0x9b4e, 0x9b4d, 0x9bca, 0x9bc9, 0x9bfd, 0x9bc8,
- 0x9bc0, 0x9d51, 0x9d5d, 0x9d60, 0x9ee0, 0x9f15, 0x9f2c, 0x5133,
- 0x56a5, 0x58de, 0x58df, 0x58e2, 0x5bf5, 0x9f90, 0x5eec, 0x61f2,
- 0x61f7, 0x61f6, 0x61f5, 0x6500, 0x650f, 0x66e0, 0x66dd, 0x6ae5,
- 0x6add, 0x6ada, 0x6ad3, 0x701b, 0x701f, 0x7028, 0x701a, 0x701d,
- 0x7015, 0x7018, 0x7206, 0x720d, 0x7258, 0x72a2, 0x7378, 0x737a,
- 0x74bd, 0x74ca, 0x74e3, 0x7587, 0x7586, 0x765f, 0x7661, 0x77c7,
- 0x7919, 0x79b1, 0x7a6b, 0x7a69, 0x7c3e, 0x7c3f, 0x7c38, 0x7c3d,
- 0x7c37, 0x7c40, 0x7e6b, 0x7e6d, 0x7e79, 0x7e69, 0x7e6a, 0x7f85,
- 0x7e73, 0x7fb6, 0x7fb9, 0x7fb8, 0x81d8, 0x85e9, 0x85dd, 0x85ea,
- 0x85d5, 0x85e4, 0x85e5, 0x85f7, 0x87fb, 0x8805, 0x880d, 0x87f9,
- 0x87fe, 0x8960, 0x895f, 0x8956, 0x895e, 0x8b41, 0x8b5c, 0x8b58,
- 0x8b49, 0x8b5a, 0x8b4e, 0x8b4f, 0x8b46, 0x8b59, 0x8d08, 0x8d0a,
- 0x8e7c, 0x8e72, 0x8e87, 0x8e76, 0x8e6c, 0x8e7a, 0x8e74, 0x8f54,
- 0x8f4e, 0x8fad, 0x908a, 0x908b, 0x91b1, 0x91ae, 0x93e1, 0x93d1,
- 0x93df, 0x93c3, 0x93c8, 0x93dc, 0x93dd, 0x93d6, 0x93e2, 0x93cd,
- 0x93d8, 0x93e4, 0x93d7, 0x93e8, 0x95dc, 0x96b4, 0x96e3, 0x972a,
- 0x9727, 0x9761, 0x97dc, 0x97fb, 0x985e,
- /* 0xc4 */
- 0x9858, 0x985b, 0x98bc, 0x9945, 0x9949, 0x9a16, 0x9a19, 0x9b0d,
- 0x9be8, 0x9be7, 0x9bd6, 0x9bdb, 0x9d89, 0x9d61, 0x9d72, 0x9d6a,
- 0x9d6c, 0x9e92, 0x9e97, 0x9e93, 0x9eb4, 0x52f8, 0x56a8, 0x56b7,
- 0x56b6, 0x56b4, 0x56bc, 0x58e4, 0x5b40, 0x5b43, 0x5b7d, 0x5bf6,
- 0x5dc9, 0x61f8, 0x61fa, 0x6518, 0x6514, 0x6519, 0x66e6, 0x6727,
- 0x6aec, 0x703e, 0x7030, 0x7032, 0x7210, 0x737b, 0x74cf, 0x7662,
- 0x7665, 0x7926, 0x792a, 0x792c, 0x792b, 0x7ac7, 0x7af6, 0x7c4c,
- 0x7c43, 0x7c4d, 0x7cef, 0x7cf0, 0x8fae, 0x7e7d, 0x7e7c, 0x7e82,
- 0x7f4c, 0x8000, 0x81da, 0x8266, 0x85fb, 0x85f9, 0x8611, 0x85fa,
- 0x8606, 0x860b, 0x8607, 0x860a, 0x8814, 0x8815, 0x8964, 0x89ba,
- 0x89f8, 0x8b70, 0x8b6c, 0x8b66, 0x8b6f, 0x8b5f, 0x8b6b, 0x8d0f,
- 0x8d0d, 0x8e89, 0x8e81, 0x8e85, 0x8e82, 0x91b4, 0x91cb, 0x9418,
- 0x9403, 0x93fd, 0x95e1, 0x9730, 0x98c4, 0x9952, 0x9951, 0x99a8,
- 0x9a2b, 0x9a30, 0x9a37, 0x9a35, 0x9c13, 0x9c0d, 0x9e79, 0x9eb5,
- 0x9ee8, 0x9f2f, 0x9f5f, 0x9f63, 0x9f61, 0x5137, 0x5138, 0x56c1,
- 0x56c0, 0x56c2, 0x5914, 0x5c6c, 0x5dcd, 0x61fc, 0x61fe, 0x651d,
- 0x651c, 0x6595, 0x66e9, 0x6afb, 0x6b04, 0x6afa, 0x6bb2, 0x704c,
- 0x721b, 0x72a7, 0x74d6, 0x74d4, 0x7669, 0x77d3, 0x7c50, 0x7e8f,
- 0x7e8c, 0x7fbc, 0x8617, 0x862d, 0x861a, 0x8823, 0x8822, 0x8821,
- 0x881f, 0x896a, 0x896c, 0x89bd, 0x8b74,
- /* 0xc5 */
- 0x8b77, 0x8b7d, 0x8d13, 0x8e8a, 0x8e8d, 0x8e8b, 0x8f5f, 0x8faf,
- 0x91ba, 0x942e, 0x9433, 0x9435, 0x943a, 0x9438, 0x9432, 0x942b,
- 0x95e2, 0x9738, 0x9739, 0x9732, 0x97ff, 0x9867, 0x9865, 0x9957,
- 0x9a45, 0x9a43, 0x9a40, 0x9a3e, 0x9acf, 0x9b54, 0x9b51, 0x9c2d,
- 0x9c25, 0x9daf, 0x9db4, 0x9dc2, 0x9db8, 0x9e9d, 0x9eef, 0x9f19,
- 0x9f5c, 0x9f66, 0x9f67, 0x513c, 0x513b, 0x56c8, 0x56ca, 0x56c9,
- 0x5b7f, 0x5dd4, 0x5dd2, 0x5f4e, 0x61ff, 0x6524, 0x6b0a, 0x6b61,
- 0x7051, 0x7058, 0x7380, 0x74e4, 0x758a, 0x766e, 0x766c, 0x79b3,
- 0x7c60, 0x7c5f, 0x807e, 0x807d, 0x81df, 0x8972, 0x896f, 0x89fc,
- 0x8b80, 0x8d16, 0x8d17, 0x8e91, 0x8e93, 0x8f61, 0x9148, 0x9444,
- 0x9451, 0x9452, 0x973d, 0x973e, 0x97c3, 0x97c1, 0x986b, 0x9955,
- 0x9a55, 0x9a4d, 0x9ad2, 0x9b1a, 0x9c49, 0x9c31, 0x9c3e, 0x9c3b,
- 0x9dd3, 0x9dd7, 0x9f34, 0x9f6c, 0x9f6a, 0x9f94, 0x56cc, 0x5dd6,
- 0x6200, 0x6523, 0x652b, 0x652a, 0x66ec, 0x6b10, 0x74da, 0x7aca,
- 0x7c64, 0x7c63, 0x7c65, 0x7e93, 0x7e96, 0x7e94, 0x81e2, 0x8638,
- 0x863f, 0x8831, 0x8b8a, 0x9090, 0x908f, 0x9463, 0x9460, 0x9464,
- 0x9768, 0x986f, 0x995c, 0x9a5a, 0x9a5b, 0x9a57, 0x9ad3, 0x9ad4,
- 0x9ad1, 0x9c54, 0x9c57, 0x9c56, 0x9de5, 0x9e9f, 0x9ef4, 0x56d1,
- 0x58e9, 0x652c, 0x705e, 0x7671, 0x7672, 0x77d7, 0x7f50, 0x7f88,
- 0x8836, 0x8839, 0x8862, 0x8b93, 0x8b92,
- /* 0xc6 */
- 0x8b96, 0x8277, 0x8d1b, 0x91c0, 0x946a, 0x9742, 0x9748, 0x9744,
- 0x97c6, 0x9870, 0x9a5f, 0x9b22, 0x9b58, 0x9c5f, 0x9df9, 0x9dfa,
- 0x9e7c, 0x9e7d, 0x9f07, 0x9f77, 0x9f72, 0x5ef3, 0x6b16, 0x7063,
- 0x7c6c, 0x7c6e, 0x883b, 0x89c0, 0x8ea1, 0x91c1, 0x9472, 0x9470,
- 0x9871, 0x995e, 0x9ad6, 0x9b23, 0x9ecc, 0x7064, 0x77da, 0x8b9a,
- 0x9477, 0x97c9, 0x9a62, 0x9a65, 0x7e9c, 0x8b9c, 0x8eaa, 0x91c5,
- 0x947d, 0x947e, 0x947c, 0x9c77, 0x9c78, 0x9ef7, 0x8c54, 0x947f,
- 0x9e1a, 0x7228, 0x9a6a, 0x9b31, 0x9e1b, 0x9e1e, 0x7c72, 0x2460,
- 0x2461, 0x2462, 0x2463, 0x2464, 0x2465, 0x2466, 0x2467, 0x2468,
- 0x2469, 0x2474, 0x2475, 0x2476, 0x2477, 0x2478, 0x2479, 0x247a,
- 0x247b, 0x247c, 0x247d, 0x2170, 0x2171, 0x2172, 0x2173, 0x2174,
- 0x2175, 0x2176, 0x2177, 0x2178, 0x2179, 0x4e36, 0x4e3f, 0x4e85,
- 0x4ea0, 0x5182, 0x5196, 0x51ab, 0x52f9, 0x5338, 0x5369, 0x53b6,
- 0x590a, 0x5b80, 0x5ddb, 0x2f33, 0x5e7f, 0xf6df, 0x5f50, 0x5f61,
- 0x6534, 0xf6e3, 0x7592, 0xf6e5, 0x8fb5, 0xf6e7, 0x00a8, 0x02c6,
- 0x30fd, 0x30fe, 0x309d, 0x309e, 0xf6ee, 0xf6ef, 0x3005, 0x3006,
- 0x3007, 0x30fc, 0xff3b, 0xff3d, 0x273d, 0x3041, 0x3042, 0x3043,
- 0x3044, 0x3045, 0x3046, 0x3047, 0x3048, 0x3049, 0x304a, 0x304b,
- 0x304c, 0x304d, 0x304e, 0x304f, 0x3050, 0x3051, 0x3052, 0x3053,
- 0x3054, 0x3055, 0x3056, 0x3057, 0x3058,
- /* 0xc7 */
- 0x3059, 0x305a, 0x305b, 0x305c, 0x305d, 0x305e, 0x305f, 0x3060,
- 0x3061, 0x3062, 0x3063, 0x3064, 0x3065, 0x3066, 0x3067, 0x3068,
- 0x3069, 0x306a, 0x306b, 0x306c, 0x306d, 0x306e, 0x306f, 0x3070,
- 0x3071, 0x3072, 0x3073, 0x3074, 0x3075, 0x3076, 0x3077, 0x3078,
- 0x3079, 0x307a, 0x307b, 0x307c, 0x307d, 0x307e, 0x307f, 0x3080,
- 0x3081, 0x3082, 0x3083, 0x3084, 0x3085, 0x3086, 0x3087, 0x3088,
- 0x3089, 0x308a, 0x308b, 0x308c, 0x308d, 0x308e, 0x308f, 0x3090,
- 0x3091, 0x3092, 0x3093, 0x30a1, 0x30a2, 0x30a3, 0x30a4, 0x30a5,
- 0x30a6, 0x30a7, 0x30a8, 0x30a9, 0x30aa, 0x30ab, 0x30ac, 0x30ad,
- 0x30ae, 0x30af, 0x30b0, 0x30b1, 0x30b2, 0x30b3, 0x30b4, 0x30b5,
- 0x30b6, 0x30b7, 0x30b8, 0x30b9, 0x30ba, 0x30bb, 0x30bc, 0x30bd,
- 0x30be, 0x30bf, 0x30c0, 0x30c1, 0x30c2, 0x30c3, 0x30c4, 0x30c5,
- 0x30c6, 0x30c7, 0x30c8, 0x30c9, 0x30ca, 0x30cb, 0x30cc, 0x30cd,
- 0x30ce, 0x30cf, 0x30d0, 0x30d1, 0x30d2, 0x30d3, 0x30d4, 0x30d5,
- 0x30d6, 0x30d7, 0x30d8, 0x30d9, 0x30da, 0x30db, 0x30dc, 0x30dd,
- 0x30de, 0x30df, 0x30e0, 0x30e1, 0x30e2, 0x30e3, 0x30e4, 0x30e5,
- 0x30e6, 0x30e7, 0x30e8, 0x30e9, 0x30ea, 0x30eb, 0x30ec, 0x30ed,
- 0x30ee, 0x30ef, 0x30f0, 0x30f1, 0x30f2, 0x30f3, 0x30f4, 0x30f5,
- 0x30f6, 0x0410, 0x0411, 0x0412, 0x0413, 0x0414, 0x0415, 0x0401,
- 0x0416, 0x0417, 0x0418, 0x0419, 0x041a,
- /* 0xc8 */
- 0x041b, 0x041c, 0x041d, 0x041e, 0x041f, 0x0420, 0x0421, 0x0422,
- 0x0423, 0x0424, 0x0425, 0x0426, 0x0427, 0x0428, 0x0429, 0x042a,
- 0x042b, 0x042c, 0x042d, 0x042e, 0x042f, 0x0430, 0x0431, 0x0432,
- 0x0433, 0x0434, 0x0435, 0x0451, 0x0436, 0x0437, 0x0438, 0x0439,
- 0x043a, 0x043b, 0x043c, 0x043d, 0x043e, 0x043f, 0x0440, 0x0441,
- 0x0442, 0x0443, 0x0444, 0x0445, 0x0446, 0x0447, 0x0448, 0x0449,
- 0x044a, 0x044b, 0x044c, 0x044d, 0x044e, 0x044f, 0x21e7, 0x21b8,
- 0x21b9, 0xf7e5, 0xf7e6, 0x4e5a, 0xf7e8, 0x5202, 0xf7ea, 0xf7eb,
- 0x5188, 0xf7ed, 0xf7ee, 0xf7ef, 0xf7f0, 0xf7f1, 0xf7f2, 0xf7f3,
- 0xf7f4, 0xf7f5, 0xf7f6, 0xf7f7, 0xf7f8, 0xf7f9, 0xf7fa, 0xf7fb,
- 0xf7fc, 0xf7fd, 0xf7fe, 0xf7ff, 0xf800, 0xf801, 0xf802, 0xf803,
- 0xf804, 0xf805, 0xf806, 0xf807, 0xf808, 0xf809, 0xf80a, 0xf80b,
- 0xf80c, 0xf80d, 0xf80e, 0xf80f, 0xf810, 0xf811, 0xf812, 0xf813,
- 0xf814, 0xf815, 0xf816, 0xffe2, 0xffe4, 0xff07, 0xff02, 0x3231,
- 0x2116, 0x2121, 0x309b, 0x309c, 0x2e80, 0x2e84, 0x2e86, 0x2e87,
- 0x2e88, 0x2e8a, 0x2e8c, 0x2e8d, 0x2e95, 0x2e9c, 0x2e9d, 0x2ea5,
- 0x2ea7, 0x2eaa, 0x2eac, 0x2eae, 0x2eb6, 0x2ebc, 0x2ebe, 0x2ec6,
- 0x2eca, 0x2ecc, 0x2ecd, 0x2ecf, 0x2ed6, 0x2ed7, 0x2ede, 0x2ee3,
- 0xf83c, 0xf83d, 0xf83e, 0x0283, 0x0250, 0x025b, 0x0254, 0x0275,
- 0x0153, 0x00f8, 0x014b, 0x028a, 0x026a,
- /* 0xc9 */
- 0x4e42, 0x4e5c, 0x51f5, 0x531a, 0x5382, 0x4e07, 0x4e0c, 0x4e47,
- 0x4e8d, 0x56d7, 0xfa0c, 0x5c6e, 0x5f73, 0x4e0f, 0x5187, 0x4e0e,
- 0x4e2e, 0x4e93, 0x4ec2, 0x4ec9, 0x4ec8, 0x5198, 0x52fc, 0x536c,
- 0x53b9, 0x5720, 0x5903, 0x592c, 0x5c10, 0x5dff, 0x65e1, 0x6bb3,
- 0x6bcc, 0x6c14, 0x723f, 0x4e31, 0x4e3c, 0x4ee8, 0x4edc, 0x4ee9,
- 0x4ee1, 0x4edd, 0x4eda, 0x520c, 0x531c, 0x534c, 0x5722, 0x5723,
- 0x5917, 0x592f, 0x5b81, 0x5b84, 0x5c12, 0x5c3b, 0x5c74, 0x5c73,
- 0x5e04, 0x5e80, 0x5e82, 0x5fc9, 0x6209, 0x6250, 0x6c15, 0x6c36,
- 0x6c43, 0x6c3f, 0x6c3b, 0x72ae, 0x72b0, 0x738a, 0x79b8, 0x808a,
- 0x961e, 0x4f0e, 0x4f18, 0x4f2c, 0x4ef5, 0x4f14, 0x4ef1, 0x4f00,
- 0x4ef7, 0x4f08, 0x4f1d, 0x4f02, 0x4f05, 0x4f22, 0x4f13, 0x4f04,
- 0x4ef4, 0x4f12, 0x51b1, 0x5213, 0x5209, 0x5210, 0x52a6, 0x5322,
- 0x531f, 0x534d, 0x538a, 0x5407, 0x56e1, 0x56df, 0x572e, 0x572a,
- 0x5734, 0x593c, 0x5980, 0x597c, 0x5985, 0x597b, 0x597e, 0x5977,
- 0x597f, 0x5b56, 0x5c15, 0x5c25, 0x5c7c, 0x5c7a, 0x5c7b, 0x5c7e,
- 0x5ddf, 0x5e75, 0x5e84, 0x5f02, 0x5f1a, 0x5f74, 0x5fd5, 0x5fd4,
- 0x5fcf, 0x625c, 0x625e, 0x6264, 0x6261, 0x6266, 0x6262, 0x6259,
- 0x6260, 0x625a, 0x6265, 0x65ef, 0x65ee, 0x673e, 0x6739, 0x6738,
- 0x673b, 0x673a, 0x673f, 0x673c, 0x6733, 0x6c18, 0x6c46, 0x6c52,
- 0x6c5c, 0x6c4f, 0x6c4a, 0x6c54, 0x6c4b,
- /* 0xca */
- 0x6c4c, 0x7071, 0x725e, 0x72b4, 0x72b5, 0x738e, 0x752a, 0x767f,
- 0x7a75, 0x7f51, 0x8278, 0x827c, 0x8280, 0x827d, 0x827f, 0x864d,
- 0x897e, 0x9099, 0x9097, 0x9098, 0x909b, 0x9094, 0x9622, 0x9624,
- 0x9620, 0x9623, 0x4f56, 0x4f3b, 0x4f62, 0x4f49, 0x4f53, 0x4f64,
- 0x4f3e, 0x4f67, 0x4f52, 0x4f5f, 0x4f41, 0x4f58, 0x4f2d, 0x4f33,
- 0x4f3f, 0x4f61, 0x518f, 0x51b9, 0x521c, 0x521e, 0x5221, 0x52ad,
- 0x52ae, 0x5309, 0x5363, 0x5372, 0x538e, 0x538f, 0x5430, 0x5437,
- 0x542a, 0x5454, 0x5445, 0x5419, 0x541c, 0x5425, 0x5418, 0x543d,
- 0x544f, 0x5441, 0x5428, 0x5424, 0x5447, 0x56ee, 0x56e7, 0x56e5,
- 0x5741, 0x5745, 0x574c, 0x5749, 0x574b, 0x5752, 0x5906, 0x5940,
- 0x59a6, 0x5998, 0x59a0, 0x5997, 0x598e, 0x59a2, 0x5990, 0x598f,
- 0x59a7, 0x59a1, 0x5b8e, 0x5b92, 0x5c28, 0x5c2a, 0x5c8d, 0x5c8f,
- 0x5c88, 0x5c8b, 0x5c89, 0x5c92, 0x5c8a, 0x5c86, 0x5c93, 0x5c95,
- 0x5de0, 0x5e0a, 0x5e0e, 0x5e8b, 0x5e89, 0x5e8c, 0x5e88, 0x5e8d,
- 0x5f05, 0x5f1d, 0x5f78, 0x5f76, 0x5fd2, 0x5fd1, 0x5fd0, 0x5fed,
- 0x5fe8, 0x5fee, 0x5ff3, 0x5fe1, 0x5fe4, 0x5fe3, 0x5ffa, 0x5fef,
- 0x5ff7, 0x5ffb, 0x6000, 0x5ff4, 0x623a, 0x6283, 0x628c, 0x628e,
- 0x628f, 0x6294, 0x6287, 0x6271, 0x627b, 0x627a, 0x6270, 0x6281,
- 0x6288, 0x6277, 0x627d, 0x6272, 0x6274, 0x6537, 0x65f0, 0x65f4,
- 0x65f3, 0x65f2, 0x65f5, 0x6745, 0x6747,
- /* 0xcb */
- 0x6759, 0x6755, 0x674c, 0x6748, 0x675d, 0x674d, 0x675a, 0x674b,
- 0x6bd0, 0x6c19, 0x6c1a, 0x6c78, 0x6c67, 0x6c6b, 0x6c84, 0x6c8b,
- 0x6c8f, 0x6c71, 0x6c6f, 0x6c69, 0x6c9a, 0x6c6d, 0x6c87, 0x6c95,
- 0x6c9c, 0x6c66, 0x6c73, 0x6c65, 0x6c7b, 0x6c8e, 0x7074, 0x707a,
- 0x7263, 0x72bf, 0x72bd, 0x72c3, 0x72c6, 0x72c1, 0x72ba, 0x72c5,
- 0x7395, 0x7397, 0x7393, 0x7394, 0x7392, 0x753a, 0x7539, 0x7594,
- 0x7595, 0x7681, 0x793d, 0x8034, 0x8095, 0x8099, 0x8090, 0x8092,
- 0x809c, 0x8290, 0x828f, 0x8285, 0x828e, 0x8291, 0x8293, 0x828a,
- 0x8283, 0x8284, 0x8c78, 0x8fc9, 0x8fbf, 0x909f, 0x90a1, 0x90a5,
- 0x909e, 0x90a7, 0x90a0, 0x9630, 0x9628, 0x962f, 0x962d, 0x4e33,
- 0x4f98, 0x4f7c, 0x4f85, 0x4f7d, 0x4f80, 0x4f87, 0x4f76, 0x4f74,
- 0x4f89, 0x4f84, 0x4f77, 0x4f4c, 0x4f97, 0x4f6a, 0x4f9a, 0x4f79,
- 0x4f81, 0x4f78, 0x4f90, 0x4f9c, 0x4f94, 0x4f9e, 0x4f92, 0x4f82,
- 0x4f95, 0x4f6b, 0x4f6e, 0x519e, 0x51bc, 0x51be, 0x5235, 0x5232,
- 0x5233, 0x5246, 0x5231, 0x52bc, 0x530a, 0x530b, 0x533c, 0x5392,
- 0x5394, 0x5487, 0x547f, 0x5481, 0x5491, 0x5482, 0x5488, 0x546b,
- 0x547a, 0x547e, 0x5465, 0x546c, 0x5474, 0x5466, 0x548d, 0x546f,
- 0x5461, 0x5460, 0x5498, 0x5463, 0x5467, 0x5464, 0x56f7, 0x56f9,
- 0x576f, 0x5772, 0x576d, 0x576b, 0x5771, 0x5770, 0x5776, 0x5780,
- 0x5775, 0x577b, 0x5773, 0x5774, 0x5762,
- /* 0xcc */
- 0x5768, 0x577d, 0x590c, 0x5945, 0x59b5, 0x59ba, 0x59cf, 0x59ce,
- 0x59b2, 0x59cc, 0x59c1, 0x59b6, 0x59bc, 0x59c3, 0x59d6, 0x59b1,
- 0x59bd, 0x59c0, 0x59c8, 0x59b4, 0x59c7, 0x5b62, 0x5b65, 0x5b93,
- 0x5b95, 0x5c44, 0x5c47, 0x5cae, 0x5ca4, 0x5ca0, 0x5cb5, 0x5caf,
- 0x5ca8, 0x5cac, 0x5c9f, 0x5ca3, 0x5cad, 0x5ca2, 0x5caa, 0x5ca7,
- 0x5c9d, 0x5ca5, 0x5cb6, 0x5cb0, 0x5ca6, 0x5e17, 0x5e14, 0x5e19,
- 0x5f28, 0x5f22, 0x5f23, 0x5f24, 0x5f54, 0x5f82, 0x5f7e, 0x5f7d,
- 0x5fde, 0x5fe5, 0x602d, 0x6026, 0x6019, 0x6032, 0x600b, 0x6034,
- 0x600a, 0x6017, 0x6033, 0x601a, 0x601e, 0x602c, 0x6022, 0x600d,
- 0x6010, 0x602e, 0x6013, 0x6011, 0x600c, 0x6009, 0x601c, 0x6214,
- 0x623d, 0x62ad, 0x62b4, 0x62d1, 0x62be, 0x62aa, 0x62b6, 0x62ca,
- 0x62ae, 0x62b3, 0x62af, 0x62bb, 0x62a9, 0x62b0, 0x62b8, 0x653d,
- 0x65a8, 0x65bb, 0x6609, 0x65fc, 0x6604, 0x6612, 0x6608, 0x65fb,
- 0x6603, 0x660b, 0x660d, 0x6605, 0x65fd, 0x6611, 0x6610, 0x66f6,
- 0x670a, 0x6785, 0x676c, 0x678e, 0x6792, 0x6776, 0x677b, 0x6798,
- 0x6786, 0x6784, 0x6774, 0x678d, 0x678c, 0x677a, 0x679f, 0x6791,
- 0x6799, 0x6783, 0x677d, 0x6781, 0x6778, 0x6779, 0x6794, 0x6b25,
- 0x6b80, 0x6b7e, 0x6bde, 0x6c1d, 0x6c93, 0x6cec, 0x6ceb, 0x6cee,
- 0x6cd9, 0x6cb6, 0x6cd4, 0x6cad, 0x6ce7, 0x6cb7, 0x6cd0, 0x6cc2,
- 0x6cba, 0x6cc3, 0x6cc6, 0x6ced, 0x6cf2,
- /* 0xcd */
- 0x6cd2, 0x6cdd, 0x6cb4, 0x6c8a, 0x6c9d, 0x6c80, 0x6cde, 0x6cc0,
- 0x6d30, 0x6ccd, 0x6cc7, 0x6cb0, 0x6cf9, 0x6ccf, 0x6ce9, 0x6cd1,
- 0x7094, 0x7098, 0x7085, 0x7093, 0x7086, 0x7084, 0x7091, 0x7096,
- 0x7082, 0x709a, 0x7083, 0x726a, 0x72d6, 0x72cb, 0x72d8, 0x72c9,
- 0x72dc, 0x72d2, 0x72d4, 0x72da, 0x72cc, 0x72d1, 0x73a4, 0x73a1,
- 0x73ad, 0x73a6, 0x73a2, 0x73a0, 0x73ac, 0x739d, 0x74dd, 0x74e8,
- 0x753f, 0x7540, 0x753e, 0x758c, 0x7598, 0x76af, 0x76f3, 0x76f1,
- 0x76f0, 0x76f5, 0x77f8, 0x77fc, 0x77f9, 0x77fb, 0x77fa, 0x77f7,
- 0x7942, 0x793f, 0x79c5, 0x7a78, 0x7a7b, 0x7afb, 0x7c75, 0x7cfd,
- 0x8035, 0x808f, 0x80ae, 0x80a3, 0x80b8, 0x80b5, 0x80ad, 0x8220,
- 0x82a0, 0x82c0, 0x82ab, 0x829a, 0x8298, 0x829b, 0x82b5, 0x82a7,
- 0x82ae, 0x82bc, 0x829e, 0x82ba, 0x82b4, 0x82a8, 0x82a1, 0x82a9,
- 0x82c2, 0x82a4, 0x82c3, 0x82b6, 0x82a2, 0x8670, 0x866f, 0x866d,
- 0x866e, 0x8c56, 0x8fd2, 0x8fcb, 0x8fd3, 0x8fcd, 0x8fd6, 0x8fd5,
- 0x8fd7, 0x90b2, 0x90b4, 0x90af, 0x90b3, 0x90b0, 0x9639, 0x963d,
- 0x963c, 0x963a, 0x9643, 0x4fcd, 0x4fc5, 0x4fd3, 0x4fb2, 0x4fc9,
- 0x4fcb, 0x4fc1, 0x4fd4, 0x4fdc, 0x4fd9, 0x4fbb, 0x4fb3, 0x4fdb,
- 0x4fc7, 0x4fd6, 0x4fba, 0x4fc0, 0x4fb9, 0x4fec, 0x5244, 0x5249,
- 0x52c0, 0x52c2, 0x533d, 0x537c, 0x5397, 0x5396, 0x5399, 0x5398,
- 0x54ba, 0x54a1, 0x54ad, 0x54a5, 0x54cf,
- /* 0xce */
- 0x54c3, 0x830d, 0x54b7, 0x54ae, 0x54d6, 0x54b6, 0x54c5, 0x54c6,
- 0x54a0, 0x5470, 0x54bc, 0x54a2, 0x54be, 0x5472, 0x54de, 0x54b0,
- 0x57b5, 0x579e, 0x579f, 0x57a4, 0x578c, 0x5797, 0x579d, 0x579b,
- 0x5794, 0x5798, 0x578f, 0x5799, 0x57a5, 0x579a, 0x5795, 0x58f4,
- 0x590d, 0x5953, 0x59e1, 0x59de, 0x59ee, 0x5a00, 0x59f1, 0x59dd,
- 0x59fa, 0x59fd, 0x59fc, 0x59f6, 0x59e4, 0x59f2, 0x59f7, 0x59db,
- 0x59e9, 0x59f3, 0x59f5, 0x59e0, 0x59fe, 0x59f4, 0x59ed, 0x5ba8,
- 0x5c4c, 0x5cd0, 0x5cd8, 0x5ccc, 0x5cd7, 0x5ccb, 0x5cdb, 0x5cde,
- 0x5cda, 0x5cc9, 0x5cc7, 0x5cca, 0x5cd6, 0x5cd3, 0x5cd4, 0x5ccf,
- 0x5cc8, 0x5cc6, 0x5cce, 0x5cdf, 0x5cf8, 0x5df9, 0x5e21, 0x5e22,
- 0x5e23, 0x5e20, 0x5e24, 0x5eb0, 0x5ea4, 0x5ea2, 0x5e9b, 0x5ea3,
- 0x5ea5, 0x5f07, 0x5f2e, 0x5f56, 0x5f86, 0x6037, 0x6039, 0x6054,
- 0x6072, 0x605e, 0x6045, 0x6053, 0x6047, 0x6049, 0x605b, 0x604c,
- 0x6040, 0x6042, 0x605f, 0x6024, 0x6044, 0x6058, 0x6066, 0x606e,
- 0x6242, 0x6243, 0x62cf, 0x630d, 0x630b, 0x62f5, 0x630e, 0x6303,
- 0x62eb, 0x62f9, 0x630f, 0x630c, 0x62f8, 0x62f6, 0x6300, 0x6313,
- 0x6314, 0x62fa, 0x6315, 0x62fb, 0x62f0, 0x6541, 0x6543, 0x65aa,
- 0x65bf, 0x6636, 0x6621, 0x6632, 0x6635, 0x661c, 0x6626, 0x6622,
- 0x6633, 0x662b, 0x663a, 0x661d, 0x6634, 0x6639, 0x662e, 0x670f,
- 0x6710, 0x67c1, 0x67f2, 0x67c8, 0x67ba,
- /* 0xcf */
- 0x67dc, 0x67bb, 0x67f8, 0x67d8, 0x67c0, 0x67b7, 0x67c5, 0x67eb,
- 0x67e4, 0x67df, 0x67b5, 0x67cd, 0x67b3, 0x67f7, 0x67f6, 0x67ee,
- 0x67e3, 0x67c2, 0x67b9, 0x67ce, 0x67e7, 0x67f0, 0x67b2, 0x67fc,
- 0x67c6, 0x67ed, 0x67cc, 0x67ae, 0x67e6, 0x67db, 0x67fa, 0x67c9,
- 0x67ca, 0x67c3, 0x67ea, 0x67cb, 0x6b28, 0x6b82, 0x6b84, 0x6bb6,
- 0x6bd6, 0x6bd8, 0x6be0, 0x6c20, 0x6c21, 0x6d28, 0x6d34, 0x6d2d,
- 0x6d1f, 0x6d3c, 0x6d3f, 0x6d12, 0x6d0a, 0x6cda, 0x6d33, 0x6d04,
- 0x6d19, 0x6d3a, 0x6d1a, 0x6d11, 0x6d00, 0x6d1d, 0x6d42, 0x6d01,
- 0x6d18, 0x6d37, 0x6d03, 0x6d0f, 0x6d40, 0x6d07, 0x6d20, 0x6d2c,
- 0x6d08, 0x6d22, 0x6d09, 0x6d10, 0x70b7, 0x709f, 0x70be, 0x70b1,
- 0x70b0, 0x70a1, 0x70b4, 0x70b5, 0x70a9, 0x7241, 0x7249, 0x724a,
- 0x726c, 0x7270, 0x7273, 0x726e, 0x72ca, 0x72e4, 0x72e8, 0x72eb,
- 0x72df, 0x72ea, 0x72e6, 0x72e3, 0x7385, 0x73cc, 0x73c2, 0x73c8,
- 0x73c5, 0x73b9, 0x73b6, 0x73b5, 0x73b4, 0x73eb, 0x73bf, 0x73c7,
- 0x73be, 0x73c3, 0x73c6, 0x73b8, 0x73cb, 0x74ec, 0x74ee, 0x752e,
- 0x7547, 0x7548, 0x75a7, 0x75aa, 0x7679, 0x76c4, 0x7708, 0x7703,
- 0x7704, 0x7705, 0x770a, 0x76f7, 0x76fb, 0x76fa, 0x77e7, 0x77e8,
- 0x7806, 0x7811, 0x7812, 0x7805, 0x7810, 0x780f, 0x780e, 0x7809,
- 0x7803, 0x7813, 0x794a, 0x794c, 0x794b, 0x7945, 0x7944, 0x79d5,
- 0x79cd, 0x79cf, 0x79d6, 0x79ce, 0x7a80,
- /* 0xd0 */
- 0x7a7e, 0x7ad1, 0x7b00, 0x7b01, 0x7c7a, 0x7c78, 0x7c79, 0x7c7f,
- 0x7c80, 0x7c81, 0x7d03, 0x7d08, 0x7d01, 0x7f58, 0x7f91, 0x7f8d,
- 0x7fbe, 0x8007, 0x800e, 0x800f, 0x8014, 0x8037, 0x80d8, 0x80c7,
- 0x80e0, 0x80d1, 0x80c8, 0x80c2, 0x80d0, 0x80c5, 0x80e3, 0x80d9,
- 0x80dc, 0x80ca, 0x80d5, 0x80c9, 0x80cf, 0x80d7, 0x80e6, 0x80cd,
- 0x81ff, 0x8221, 0x8294, 0x82d9, 0x82fe, 0x82f9, 0x8307, 0x82e8,
- 0x8300, 0x82d5, 0x833a, 0x82eb, 0x82d6, 0x82f4, 0x82ec, 0x82e1,
- 0x82f2, 0x82f5, 0x830c, 0x82fb, 0x82f6, 0x82f0, 0x82ea, 0x82e4,
- 0x82e0, 0x82fa, 0x82f3, 0x82ed, 0x8677, 0x8674, 0x867c, 0x8673,
- 0x8841, 0x884e, 0x8867, 0x886a, 0x8869, 0x89d3, 0x8a04, 0x8a07,
- 0x8d72, 0x8fe3, 0x8fe1, 0x8fee, 0x8fe0, 0x90f1, 0x90bd, 0x90bf,
- 0x90d5, 0x90c5, 0x90be, 0x90c7, 0x90cb, 0x90c8, 0x91d4, 0x91d3,
- 0x9654, 0x964f, 0x9651, 0x9653, 0x964a, 0x964e, 0x501e, 0x5005,
- 0x5007, 0x5013, 0x5022, 0x5030, 0x501b, 0x4ff5, 0x4ff4, 0x5033,
- 0x5037, 0x502c, 0x4ff6, 0x4ff7, 0x5017, 0x501c, 0x5020, 0x5027,
- 0x5035, 0x502f, 0x5031, 0x500e, 0x515a, 0x5194, 0x5193, 0x51ca,
- 0x51c4, 0x51c5, 0x51c8, 0x51ce, 0x5261, 0x525a, 0x5252, 0x525e,
- 0x525f, 0x5255, 0x5262, 0x52cd, 0x530e, 0x539e, 0x5526, 0x54e2,
- 0x5517, 0x5512, 0x54e7, 0x54f3, 0x54e4, 0x551a, 0x54ff, 0x5504,
- 0x5508, 0x54eb, 0x5511, 0x5505, 0x54f1,
- /* 0xd1 */
- 0x550a, 0x54fb, 0x54f7, 0x54f8, 0x54e0, 0x550e, 0x5503, 0x550b,
- 0x5701, 0x5702, 0x57cc, 0x5832, 0x57d5, 0x57d2, 0x57ba, 0x57c6,
- 0x57bd, 0x57bc, 0x57b8, 0x57b6, 0x57bf, 0x57c7, 0x57d0, 0x57b9,
- 0x57c1, 0x590e, 0x594a, 0x5a19, 0x5a16, 0x5a2d, 0x5a2e, 0x5a15,
- 0x5a0f, 0x5a17, 0x5a0a, 0x5a1e, 0x5a33, 0x5b6c, 0x5ba7, 0x5bad,
- 0x5bac, 0x5c03, 0x5c56, 0x5c54, 0x5cec, 0x5cff, 0x5cee, 0x5cf1,
- 0x5cf7, 0x5d00, 0x5cf9, 0x5e29, 0x5e28, 0x5ea8, 0x5eae, 0x5eaa,
- 0x5eac, 0x5f33, 0x5f30, 0x5f67, 0x605d, 0x605a, 0x6067, 0x6041,
- 0x60a2, 0x6088, 0x6080, 0x6092, 0x6081, 0x609d, 0x6083, 0x6095,
- 0x609b, 0x6097, 0x6087, 0x609c, 0x608e, 0x6219, 0x6246, 0x62f2,
- 0x6310, 0x6356, 0x632c, 0x6344, 0x6345, 0x6336, 0x6343, 0x63e4,
- 0x6339, 0x634b, 0x634a, 0x633c, 0x6329, 0x6341, 0x6334, 0x6358,
- 0x6354, 0x6359, 0x632d, 0x6347, 0x6333, 0x635a, 0x6351, 0x6338,
- 0x6357, 0x6340, 0x6348, 0x654a, 0x6546, 0x65c6, 0x65c3, 0x65c4,
- 0x65c2, 0x664a, 0x665f, 0x6647, 0x6651, 0x6712, 0x6713, 0x681f,
- 0x681a, 0x6849, 0x6832, 0x6833, 0x683b, 0x684b, 0x684f, 0x6816,
- 0x6831, 0x681c, 0x6835, 0x682b, 0x682d, 0x682f, 0x684e, 0x6844,
- 0x6834, 0x681d, 0x6812, 0x6814, 0x6826, 0x6828, 0x682e, 0x684d,
- 0x683a, 0x6825, 0x6820, 0x6b2c, 0x6b2f, 0x6b2d, 0x6b31, 0x6b34,
- 0x6b6d, 0x8082, 0x6b88, 0x6be6, 0x6be4,
- /* 0xd2 */
- 0x6be8, 0x6be3, 0x6be2, 0x6be7, 0x6c25, 0x6d7a, 0x6d63, 0x6d64,
- 0x6d76, 0x6d0d, 0x6d61, 0x6d92, 0x6d58, 0x6d62, 0x6d6d, 0x6d6f,
- 0x6d91, 0x6d8d, 0x6def, 0x6d7f, 0x6d86, 0x6d5e, 0x6d67, 0x6d60,
- 0x6d97, 0x6d70, 0x6d7c, 0x6d5f, 0x6d82, 0x6d98, 0x6d2f, 0x6d68,
- 0x6d8b, 0x6d7e, 0x6d80, 0x6d84, 0x6d16, 0x6d83, 0x6d7b, 0x6d7d,
- 0x6d75, 0x6d90, 0x70dc, 0x70d3, 0x70d1, 0x70dd, 0x70cb, 0x7f39,
- 0x70e2, 0x70d7, 0x70d2, 0x70de, 0x70e0, 0x70d4, 0x70cd, 0x70c5,
- 0x70c6, 0x70c7, 0x70da, 0x70ce, 0x70e1, 0x7242, 0x7278, 0x7277,
- 0x7276, 0x7300, 0x72fa, 0x72f4, 0x72fe, 0x72f6, 0x72f3, 0x72fb,
- 0x7301, 0x73d3, 0x73d9, 0x73e5, 0x73d6, 0x73bc, 0x73e7, 0x73e3,
- 0x73e9, 0x73dc, 0x73d2, 0x73db, 0x73d4, 0x73dd, 0x73da, 0x73d7,
- 0x73d8, 0x73e8, 0x74de, 0x74df, 0x74f4, 0x74f5, 0x7521, 0x755b,
- 0x755f, 0x75b0, 0x75c1, 0x75bb, 0x75c4, 0x75c0, 0x75bf, 0x75b6,
- 0x75ba, 0x768a, 0x76c9, 0x771d, 0x771b, 0x7710, 0x7713, 0x7712,
- 0x7723, 0x7711, 0x7715, 0x7719, 0x771a, 0x7722, 0x7727, 0x7823,
- 0x782c, 0x7822, 0x7835, 0x782f, 0x7828, 0x782e, 0x782b, 0x7821,
- 0x7829, 0x7833, 0x782a, 0x7831, 0x7954, 0x795b, 0x794f, 0x795c,
- 0x7953, 0x7952, 0x7951, 0x79eb, 0x79ec, 0x79e0, 0x79ee, 0x79ed,
- 0x79ea, 0x79dc, 0x79de, 0x79dd, 0x7a86, 0x7a89, 0x7a85, 0x7a8b,
- 0x7a8c, 0x7a8a, 0x7a87, 0x7ad8, 0x7b10,
- /* 0xd3 */
- 0x7b04, 0x7b13, 0x7b05, 0x7b0f, 0x7b08, 0x7b0a, 0x7b0e, 0x7b09,
- 0x7b12, 0x7c84, 0x7c91, 0x7c8a, 0x7c8c, 0x7c88, 0x7c8d, 0x7c85,
- 0x7d1e, 0x7d1d, 0x7d11, 0x7d0e, 0x7d18, 0x7d16, 0x7d13, 0x7d1f,
- 0x7d12, 0x7d0f, 0x7d0c, 0x7f5c, 0x7f61, 0x7f5e, 0x7f60, 0x7f5d,
- 0x7f5b, 0x7f96, 0x7f92, 0x7fc3, 0x7fc2, 0x7fc0, 0x8016, 0x803e,
- 0x8039, 0x80fa, 0x80f2, 0x80f9, 0x80f5, 0x8101, 0x80fb, 0x8100,
- 0x8201, 0x822f, 0x8225, 0x8333, 0x832d, 0x8344, 0x8319, 0x8351,
- 0x8325, 0x8356, 0x833f, 0x8341, 0x8326, 0x831c, 0x8322, 0x8342,
- 0x834e, 0x831b, 0x832a, 0x8308, 0x833c, 0x834d, 0x8316, 0x8324,
- 0x8320, 0x8337, 0x832f, 0x8329, 0x8347, 0x8345, 0x834c, 0x8353,
- 0x831e, 0x832c, 0x834b, 0x8327, 0x8348, 0x8653, 0x8652, 0x86a2,
- 0x86a8, 0x8696, 0x868d, 0x8691, 0x869e, 0x8687, 0x8697, 0x8686,
- 0x868b, 0x869a, 0x8685, 0x86a5, 0x8699, 0x86a1, 0x86a7, 0x8695,
- 0x8698, 0x868e, 0x869d, 0x8690, 0x8694, 0x8843, 0x8844, 0x886d,
- 0x8875, 0x8876, 0x8872, 0x8880, 0x8871, 0x887f, 0x886f, 0x8883,
- 0x887e, 0x8874, 0x887c, 0x8a12, 0x8c47, 0x8c57, 0x8c7b, 0x8ca4,
- 0x8ca3, 0x8d76, 0x8d78, 0x8db5, 0x8db7, 0x8db6, 0x8ed1, 0x8ed3,
- 0x8ffe, 0x8ff5, 0x9002, 0x8fff, 0x8ffb, 0x9004, 0x8ffc, 0x8ff6,
- 0x90d6, 0x90e0, 0x90d9, 0x90da, 0x90e3, 0x90df, 0x90e5, 0x90d8,
- 0x90db, 0x90d7, 0x90dc, 0x90e4, 0x9150,
- /* 0xd4 */
- 0x914e, 0x914f, 0x91d5, 0x91e2, 0x91da, 0x965c, 0x965f, 0x96bc,
- 0x98e3, 0x9adf, 0x9b2f, 0x4e7f, 0x5070, 0x506a, 0x5061, 0x505e,
- 0x5060, 0x5053, 0x504b, 0x505d, 0x5072, 0x5048, 0x504d, 0x5041,
- 0x505b, 0x504a, 0x5062, 0x5015, 0x5045, 0x505f, 0x5069, 0x506b,
- 0x5063, 0x5064, 0x5046, 0x5040, 0x506e, 0x5073, 0x5057, 0x5051,
- 0x51d0, 0x526b, 0x526d, 0x526c, 0x526e, 0x52d6, 0x52d3, 0x532d,
- 0x539c, 0x5575, 0x5576, 0x553c, 0x554d, 0x5550, 0x5534, 0x552a,
- 0x5551, 0x5562, 0x5536, 0x5535, 0x5530, 0x5552, 0x5545, 0x550c,
- 0x5532, 0x5565, 0x554e, 0x5539, 0x5548, 0x552d, 0x553b, 0x5540,
- 0x554b, 0x570a, 0x5707, 0x57fb, 0x5814, 0x57e2, 0x57f6, 0x57dc,
- 0x57f4, 0x5800, 0x57ed, 0x57fd, 0x5808, 0x57f8, 0x580b, 0x57f3,
- 0x57cf, 0x5807, 0x57ee, 0x57e3, 0x57f2, 0x57e5, 0x57ec, 0x57e1,
- 0x580e, 0x57fc, 0x5810, 0x57e7, 0x5801, 0x580c, 0x57f1, 0x57e9,
- 0x57f0, 0x580d, 0x5804, 0x595c, 0x5a60, 0x5a58, 0x5a55, 0x5a67,
- 0x5a5e, 0x5a38, 0x5a35, 0x5a6d, 0x5a50, 0x5a5f, 0x5a65, 0x5a6c,
- 0x5a53, 0x5a64, 0x5a57, 0x5a43, 0x5a5d, 0x5a52, 0x5a44, 0x5a5b,
- 0x5a48, 0x5a8e, 0x5a3e, 0x5a4d, 0x5a39, 0x5a4c, 0x5a70, 0x5a69,
- 0x5a47, 0x5a51, 0x5a56, 0x5a42, 0x5a5c, 0x5b72, 0x5b6e, 0x5bc1,
- 0x5bc0, 0x5c59, 0x5d1e, 0x5d0b, 0x5d1d, 0x5d1a, 0x5d20, 0x5d0c,
- 0x5d28, 0x5d0d, 0x5d26, 0x5d25, 0x5d0f,
- /* 0xd5 */
- 0x5d30, 0x5d12, 0x5d23, 0x5d1f, 0x5d2e, 0x5e3e, 0x5e34, 0x5eb1,
- 0x5eb4, 0x5eb9, 0x5eb2, 0x5eb3, 0x5f36, 0x5f38, 0x5f9b, 0x5f96,
- 0x5f9f, 0x608a, 0x6090, 0x6086, 0x60be, 0x60b0, 0x60ba, 0x60d3,
- 0x60d4, 0x60cf, 0x60e4, 0x60d9, 0x60dd, 0x60c8, 0x60b1, 0x60db,
- 0x60b7, 0x60ca, 0x60bf, 0x60c3, 0x60cd, 0x60c0, 0x6332, 0x6365,
- 0x638a, 0x6382, 0x637d, 0x63bd, 0x639e, 0x63ad, 0x639d, 0x6397,
- 0x63ab, 0x638e, 0x636f, 0x6387, 0x6390, 0x636e, 0x63af, 0x6375,
- 0x639c, 0x636d, 0x63ae, 0x637c, 0x63a4, 0x633b, 0x639f, 0x6378,
- 0x6385, 0x6381, 0x6391, 0x638d, 0x6370, 0x6553, 0x65cd, 0x6665,
- 0x6661, 0x665b, 0x6659, 0x665c, 0x6662, 0x6718, 0x6879, 0x6887,
- 0x6890, 0x689c, 0x686d, 0x686e, 0x68ae, 0x68ab, 0x6956, 0x686f,
- 0x68a3, 0x68ac, 0x68a9, 0x6875, 0x6874, 0x68b2, 0x688f, 0x6877,
- 0x6892, 0x687c, 0x686b, 0x6872, 0x68aa, 0x6880, 0x6871, 0x687e,
- 0x689b, 0x6896, 0x688b, 0x68a0, 0x6889, 0x68a4, 0x6878, 0x687b,
- 0x6891, 0x688c, 0x688a, 0x687d, 0x6b36, 0x6b33, 0x6b37, 0x6b38,
- 0x6b91, 0x6b8f, 0x6b8d, 0x6b8e, 0x6b8c, 0x6c2a, 0x6dc0, 0x6dab,
- 0x6db4, 0x6db3, 0x6e74, 0x6dac, 0x6de9, 0x6de2, 0x6db7, 0x6df6,
- 0x6dd4, 0x6e00, 0x6dc8, 0x6de0, 0x6ddf, 0x6dd6, 0x6dbe, 0x6de5,
- 0x6ddc, 0x6ddd, 0x6ddb, 0x6df4, 0x6dca, 0x6dbd, 0x6ded, 0x6df0,
- 0x6dba, 0x6dd5, 0x6dc2, 0x6dcf, 0x6dc9,
- /* 0xd6 */
- 0x6dd0, 0x6df2, 0x6dd3, 0x6dfd, 0x6dd7, 0x6dcd, 0x6de3, 0x6dbb,
- 0x70fa, 0x710d, 0x70f7, 0x7117, 0x70f4, 0x710c, 0x70f0, 0x7104,
- 0x70f3, 0x7110, 0x70fc, 0x70ff, 0x7106, 0x7113, 0x7100, 0x70f8,
- 0x70f6, 0x710b, 0x7102, 0x710e, 0x727e, 0x727b, 0x727c, 0x727f,
- 0x731d, 0x7317, 0x7307, 0x7311, 0x7318, 0x730a, 0x7308, 0x72ff,
- 0x730f, 0x731e, 0x7388, 0x73f6, 0x73f8, 0x73f5, 0x7404, 0x7401,
- 0x73fd, 0x7407, 0x7400, 0x73fa, 0x73fc, 0x73ff, 0x740c, 0x740b,
- 0x73f4, 0x7408, 0x7564, 0x7563, 0x75ce, 0x75d2, 0x75cf, 0x75cb,
- 0x75cc, 0x75d1, 0x75d0, 0x768f, 0x7689, 0x76d3, 0x7739, 0x772f,
- 0x772d, 0x7731, 0x7732, 0x7734, 0x7733, 0x773d, 0x7725, 0x773b,
- 0x7735, 0x7848, 0x7852, 0x7849, 0x784d, 0x784a, 0x784c, 0x7826,
- 0x7845, 0x7850, 0x7964, 0x7967, 0x7969, 0x796a, 0x7963, 0x796b,
- 0x7961, 0x79bb, 0x79fa, 0x79f8, 0x79f6, 0x79f7, 0x7a8f, 0x7a94,
- 0x7a90, 0x7b35, 0x7b47, 0x7b34, 0x7b25, 0x7b30, 0x7b22, 0x7b24,
- 0x7b33, 0x7b18, 0x7b2a, 0x7b1d, 0x7b31, 0x7b2b, 0x7b2d, 0x7b2f,
- 0x7b32, 0x7b38, 0x7b1a, 0x7b23, 0x7c94, 0x7c98, 0x7c96, 0x7ca3,
- 0x7d35, 0x7d3d, 0x7d38, 0x7d36, 0x7d3a, 0x7d45, 0x7d2c, 0x7d29,
- 0x7d41, 0x7d47, 0x7d3e, 0x7d3f, 0x7d4a, 0x7d3b, 0x7d28, 0x7f63,
- 0x7f95, 0x7f9c, 0x7f9d, 0x7f9b, 0x7fca, 0x7fcb, 0x7fcd, 0x7fd0,
- 0x7fd1, 0x7fc7, 0x7fcf, 0x7fc9, 0x801f,
- /* 0xd7 */
- 0x801e, 0x801b, 0x8047, 0x8043, 0x8048, 0x8118, 0x8125, 0x8119,
- 0x811b, 0x812d, 0x811f, 0x812c, 0x811e, 0x8121, 0x8115, 0x8127,
- 0x811d, 0x8122, 0x8211, 0x8238, 0x8233, 0x823a, 0x8234, 0x8232,
- 0x8274, 0x8390, 0x83a3, 0x83a8, 0x838d, 0x837a, 0x8373, 0x83a4,
- 0x8374, 0x838f, 0x8381, 0x8395, 0x8399, 0x8375, 0x8394, 0x83a9,
- 0x837d, 0x8383, 0x838c, 0x839d, 0x839b, 0x83aa, 0x838b, 0x837e,
- 0x83a5, 0x83af, 0x8388, 0x8397, 0x83b0, 0x837f, 0x83a6, 0x8387,
- 0x83ae, 0x8376, 0x839a, 0x8659, 0x8656, 0x86bf, 0x86b7, 0x86c2,
- 0x86c1, 0x86c5, 0x86ba, 0x86b0, 0x86c8, 0x86b9, 0x86b3, 0x86b8,
- 0x86cc, 0x86b4, 0x86bb, 0x86bc, 0x86c3, 0x86bd, 0x86be, 0x8852,
- 0x8889, 0x8895, 0x88a8, 0x88a2, 0x88aa, 0x889a, 0x8891, 0x88a1,
- 0x889f, 0x8898, 0x88a7, 0x8899, 0x889b, 0x8897, 0x88a4, 0x88ac,
- 0x888c, 0x8893, 0x888e, 0x8982, 0x89d6, 0x89d9, 0x89d5, 0x8a30,
- 0x8a27, 0x8a2c, 0x8a1e, 0x8c39, 0x8c3b, 0x8c5c, 0x8c5d, 0x8c7d,
- 0x8ca5, 0x8d7d, 0x8d7b, 0x8d79, 0x8dbc, 0x8dc2, 0x8db9, 0x8dbf,
- 0x8dc1, 0x8ed8, 0x8ede, 0x8edd, 0x8edc, 0x8ed7, 0x8ee0, 0x8ee1,
- 0x9024, 0x900b, 0x9011, 0x901c, 0x900c, 0x9021, 0x90ef, 0x90ea,
- 0x90f0, 0x90f4, 0x90f2, 0x90f3, 0x90d4, 0x90eb, 0x90ec, 0x90e9,
- 0x9156, 0x9158, 0x915a, 0x9153, 0x9155, 0x91ec, 0x91f4, 0x91f1,
- 0x91f3, 0x91f8, 0x91e4, 0x91f9, 0x91ea,
- /* 0xd8 */
- 0x91eb, 0x91f7, 0x91e8, 0x91ee, 0x957a, 0x9586, 0x9588, 0x967c,
- 0x966d, 0x966b, 0x9671, 0x966f, 0x96bf, 0x976a, 0x9804, 0x98e5,
- 0x9997, 0x509b, 0x5095, 0x5094, 0x509e, 0x508b, 0x50a3, 0x5083,
- 0x508c, 0x508e, 0x509d, 0x5068, 0x509c, 0x5092, 0x5082, 0x5087,
- 0x515f, 0x51d4, 0x5312, 0x5311, 0x53a4, 0x53a7, 0x5591, 0x55a8,
- 0x55a5, 0x55ad, 0x5577, 0x5645, 0x55a2, 0x5593, 0x5588, 0x558f,
- 0x55b5, 0x5581, 0x55a3, 0x5592, 0x55a4, 0x557d, 0x558c, 0x55a6,
- 0x557f, 0x5595, 0x55a1, 0x558e, 0x570c, 0x5829, 0x5837, 0x5819,
- 0x581e, 0x5827, 0x5823, 0x5828, 0x57f5, 0x5848, 0x5825, 0x581c,
- 0x581b, 0x5833, 0x583f, 0x5836, 0x582e, 0x5839, 0x5838, 0x582d,
- 0x582c, 0x583b, 0x5961, 0x5aaf, 0x5a94, 0x5a9f, 0x5a7a, 0x5aa2,
- 0x5a9e, 0x5a78, 0x5aa6, 0x5a7c, 0x5aa5, 0x5aac, 0x5a95, 0x5aae,
- 0x5a37, 0x5a84, 0x5a8a, 0x5a97, 0x5a83, 0x5a8b, 0x5aa9, 0x5a7b,
- 0x5a7d, 0x5a8c, 0x5a9c, 0x5a8f, 0x5a93, 0x5a9d, 0x5bea, 0x5bcd,
- 0x5bcb, 0x5bd4, 0x5bd1, 0x5bca, 0x5bce, 0x5c0c, 0x5c30, 0x5d37,
- 0x5d43, 0x5d6b, 0x5d41, 0x5d4b, 0x5d3f, 0x5d35, 0x5d51, 0x5d4e,
- 0x5d55, 0x5d33, 0x5d3a, 0x5d52, 0x5d3d, 0x5d31, 0x5d59, 0x5d42,
- 0x5d39, 0x5d49, 0x5d38, 0x5d3c, 0x5d32, 0x5d36, 0x5d40, 0x5d45,
- 0x5e44, 0x5e41, 0x5f58, 0x5fa6, 0x5fa5, 0x5fab, 0x60c9, 0x60b9,
- 0x60cc, 0x60e2, 0x60ce, 0x60c4, 0x6114,
- /* 0xd9 */
- 0x60f2, 0x610a, 0x6116, 0x6105, 0x60f5, 0x6113, 0x60f8, 0x60fc,
- 0x60fe, 0x60c1, 0x6103, 0x6118, 0x611d, 0x6110, 0x60ff, 0x6104,
- 0x610b, 0x624a, 0x6394, 0x63b1, 0x63b0, 0x63ce, 0x63e5, 0x63e8,
- 0x63ef, 0x63c3, 0x649d, 0x63f3, 0x63ca, 0x63e0, 0x63f6, 0x63d5,
- 0x63f2, 0x63f5, 0x6461, 0x63df, 0x63be, 0x63dd, 0x63dc, 0x63c4,
- 0x63d8, 0x63d3, 0x63c2, 0x63c7, 0x63cc, 0x63cb, 0x63c8, 0x63f0,
- 0x63d7, 0x63d9, 0x6532, 0x6567, 0x656a, 0x6564, 0x655c, 0x6568,
- 0x6565, 0x658c, 0x659d, 0x659e, 0x65ae, 0x65d0, 0x65d2, 0x667c,
- 0x666c, 0x667b, 0x6680, 0x6671, 0x6679, 0x666a, 0x6672, 0x6701,
- 0x690c, 0x68d3, 0x6904, 0x68dc, 0x692a, 0x68ec, 0x68ea, 0x68f1,
- 0x690f, 0x68d6, 0x68f7, 0x68eb, 0x68e4, 0x68f6, 0x6913, 0x6910,
- 0x68f3, 0x68e1, 0x6907, 0x68cc, 0x6908, 0x6970, 0x68b4, 0x6911,
- 0x68ef, 0x68c6, 0x6914, 0x68f8, 0x68d0, 0x68fd, 0x68fc, 0x68e8,
- 0x690b, 0x690a, 0x6917, 0x68ce, 0x68c8, 0x68dd, 0x68de, 0x68e6,
- 0x68f4, 0x68d1, 0x6906, 0x68d4, 0x68e9, 0x6915, 0x6925, 0x68c7,
- 0x6b39, 0x6b3b, 0x6b3f, 0x6b3c, 0x6b94, 0x6b97, 0x6b99, 0x6b95,
- 0x6bbd, 0x6bf0, 0x6bf2, 0x6bf3, 0x6c30, 0x6dfc, 0x6e46, 0x6e47,
- 0x6e1f, 0x6e49, 0x6e88, 0x6e3c, 0x6e3d, 0x6e45, 0x6e62, 0x6e2b,
- 0x6e3f, 0x6e41, 0x6e5d, 0x6e73, 0x6e1c, 0x6e33, 0x6e4b, 0x6e40,
- 0x6e51, 0x6e3b, 0x6e03, 0x6e2e, 0x6e5e,
- /* 0xda */
- 0x6e68, 0x6e5c, 0x6e61, 0x6e31, 0x6e28, 0x6e60, 0x6e71, 0x6e6b,
- 0x6e39, 0x6e22, 0x6e30, 0x6e53, 0x6e65, 0x6e27, 0x6e78, 0x6e64,
- 0x6e77, 0x6e55, 0x6e79, 0x6e52, 0x6e66, 0x6e35, 0x6e36, 0x6e5a,
- 0x7120, 0x711e, 0x712f, 0x70fb, 0x712e, 0x7131, 0x7123, 0x7125,
- 0x7122, 0x7132, 0x711f, 0x7128, 0x713a, 0x711b, 0x724b, 0x725a,
- 0x7288, 0x7289, 0x7286, 0x7285, 0x728b, 0x7312, 0x730b, 0x7330,
- 0x7322, 0x7331, 0x7333, 0x7327, 0x7332, 0x732d, 0x7326, 0x7323,
- 0x7335, 0x730c, 0x742e, 0x742c, 0x7430, 0x742b, 0x7416, 0x741a,
- 0x7421, 0x742d, 0x7431, 0x7424, 0x7423, 0x741d, 0x7429, 0x7420,
- 0x7432, 0x74fb, 0x752f, 0x756f, 0x756c, 0x75e7, 0x75da, 0x75e1,
- 0x75e6, 0x75dd, 0x75df, 0x75e4, 0x75d7, 0x7695, 0x7692, 0x76da,
- 0x7746, 0x7747, 0x7744, 0x774d, 0x7745, 0x774a, 0x774e, 0x774b,
- 0x774c, 0x77de, 0x77ec, 0x7860, 0x7864, 0x7865, 0x785c, 0x786d,
- 0x7871, 0x786a, 0x786e, 0x7870, 0x7869, 0x7868, 0x785e, 0x7862,
- 0x7974, 0x7973, 0x7972, 0x7970, 0x7a02, 0x7a0a, 0x7a03, 0x7a0c,
- 0x7a04, 0x7a99, 0x7ae6, 0x7ae4, 0x7b4a, 0x7b3b, 0x7b44, 0x7b48,
- 0x7b4c, 0x7b4e, 0x7b40, 0x7b58, 0x7b45, 0x7ca2, 0x7c9e, 0x7ca8,
- 0x7ca1, 0x7d58, 0x7d6f, 0x7d63, 0x7d53, 0x7d56, 0x7d67, 0x7d6a,
- 0x7d4f, 0x7d6d, 0x7d5c, 0x7d6b, 0x7d52, 0x7d54, 0x7d69, 0x7d51,
- 0x7d5f, 0x7d4e, 0x7f3e, 0x7f3f, 0x7f65,
- /* 0xdb */
- 0x7f66, 0x7fa2, 0x7fa0, 0x7fa1, 0x7fd7, 0x8051, 0x804f, 0x8050,
- 0x80fe, 0x80d4, 0x8143, 0x814a, 0x8152, 0x814f, 0x8147, 0x813d,
- 0x814d, 0x813a, 0x81e6, 0x81ee, 0x81f7, 0x81f8, 0x81f9, 0x8204,
- 0x823c, 0x823d, 0x823f, 0x8275, 0x833b, 0x83cf, 0x83f9, 0x8423,
- 0x83c0, 0x83e8, 0x8412, 0x83e7, 0x83e4, 0x83fc, 0x83f6, 0x8410,
- 0x83c6, 0x83c8, 0x83eb, 0x83e3, 0x83bf, 0x8401, 0x83dd, 0x83e5,
- 0x83d8, 0x83ff, 0x83e1, 0x83cb, 0x83ce, 0x83d6, 0x83f5, 0x83c9,
- 0x8409, 0x840f, 0x83de, 0x8411, 0x8406, 0x83c2, 0x83f3, 0x83d5,
- 0x83fa, 0x83c7, 0x83d1, 0x83ea, 0x8413, 0x83c3, 0x83ec, 0x83ee,
- 0x83c4, 0x83fb, 0x83d7, 0x83e2, 0x841b, 0x83db, 0x83fe, 0x86d8,
- 0x86e2, 0x86e6, 0x86d3, 0x86e3, 0x86da, 0x86ea, 0x86dd, 0x86eb,
- 0x86dc, 0x86ec, 0x86e9, 0x86d7, 0x86e8, 0x86d1, 0x8848, 0x8856,
- 0x8855, 0x88ba, 0x88d7, 0x88b9, 0x88b8, 0x88c0, 0x88be, 0x88b6,
- 0x88bc, 0x88b7, 0x88bd, 0x88b2, 0x8901, 0x88c9, 0x8995, 0x8998,
- 0x8997, 0x89dd, 0x89da, 0x89db, 0x8a4e, 0x8a4d, 0x8a39, 0x8a59,
- 0x8a40, 0x8a57, 0x8a58, 0x8a44, 0x8a45, 0x8a52, 0x8a48, 0x8a51,
- 0x8a4a, 0x8a4c, 0x8a4f, 0x8c5f, 0x8c81, 0x8c80, 0x8cba, 0x8cbe,
- 0x8cb0, 0x8cb9, 0x8cb5, 0x8d84, 0x8d80, 0x8d89, 0x8dd8, 0x8dd3,
- 0x8dcd, 0x8dc7, 0x8dd6, 0x8ddc, 0x8dcf, 0x8dd5, 0x8dd9, 0x8dc8,
- 0x8dd7, 0x8dc5, 0x8eef, 0x8ef7, 0x8efa,
- /* 0xdc */
- 0x8ef9, 0x8ee6, 0x8eee, 0x8ee5, 0x8ef5, 0x8ee7, 0x8ee8, 0x8ef6,
- 0x8eeb, 0x8ef1, 0x8eec, 0x8ef4, 0x8ee9, 0x902d, 0x9034, 0x902f,
- 0x9106, 0x912c, 0x9104, 0x90ff, 0x90fc, 0x9108, 0x90f9, 0x90fb,
- 0x9101, 0x9100, 0x9107, 0x9105, 0x9103, 0x9161, 0x9164, 0x915f,
- 0x9162, 0x9160, 0x9201, 0x920a, 0x9225, 0x9203, 0x921a, 0x9226,
- 0x920f, 0x920c, 0x9200, 0x9212, 0x91ff, 0x91fd, 0x9206, 0x9204,
- 0x9227, 0x9202, 0x921c, 0x9224, 0x9219, 0x9217, 0x9205, 0x9216,
- 0x957b, 0x958d, 0x958c, 0x9590, 0x9687, 0x967e, 0x9688, 0x9689,
- 0x9683, 0x9680, 0x96c2, 0x96c8, 0x96c3, 0x96f1, 0x96f0, 0x976c,
- 0x9770, 0x976e, 0x9807, 0x98a9, 0x98eb, 0x9ce6, 0x9ef9, 0x4e83,
- 0x4e84, 0x4eb6, 0x50bd, 0x50bf, 0x50c6, 0x50ae, 0x50c4, 0x50ca,
- 0x50b4, 0x50c8, 0x50c2, 0x50b0, 0x50c1, 0x50ba, 0x50b1, 0x50cb,
- 0x50c9, 0x50b6, 0x50b8, 0x51d7, 0x527a, 0x5278, 0x527b, 0x527c,
- 0x55c3, 0x55db, 0x55cc, 0x55d0, 0x55cb, 0x55ca, 0x55dd, 0x55c0,
- 0x55d4, 0x55c4, 0x55e9, 0x55bf, 0x55d2, 0x558d, 0x55cf, 0x55d5,
- 0x55e2, 0x55d6, 0x55c8, 0x55f2, 0x55cd, 0x55d9, 0x55c2, 0x5714,
- 0x5853, 0x5868, 0x5864, 0x584f, 0x584d, 0x5849, 0x586f, 0x5855,
- 0x584e, 0x585d, 0x5859, 0x5865, 0x585b, 0x583d, 0x5863, 0x5871,
- 0x58fc, 0x5ac7, 0x5ac4, 0x5acb, 0x5aba, 0x5ab8, 0x5ab1, 0x5ab5,
- 0x5ab0, 0x5abf, 0x5ac8, 0x5abb, 0x5ac6,
- /* 0xdd */
- 0x5ab7, 0x5ac0, 0x5aca, 0x5ab4, 0x5ab6, 0x5acd, 0x5ab9, 0x5a90,
- 0x5bd6, 0x5bd8, 0x5bd9, 0x5c1f, 0x5c33, 0x5d71, 0x5d63, 0x5d4a,
- 0x5d65, 0x5d72, 0x5d6c, 0x5d5e, 0x5d68, 0x5d67, 0x5d62, 0x5df0,
- 0x5e4f, 0x5e4e, 0x5e4a, 0x5e4d, 0x5e4b, 0x5ec5, 0x5ecc, 0x5ec6,
- 0x5ecb, 0x5ec7, 0x5f40, 0x5faf, 0x5fad, 0x60f7, 0x6149, 0x614a,
- 0x612b, 0x6145, 0x6136, 0x6132, 0x612e, 0x6146, 0x612f, 0x614f,
- 0x6129, 0x6140, 0x6220, 0x9168, 0x6223, 0x6225, 0x6224, 0x63c5,
- 0x63f1, 0x63eb, 0x6410, 0x6412, 0x6409, 0x6420, 0x6424, 0x6433,
- 0x6443, 0x641f, 0x6415, 0x6418, 0x6439, 0x6437, 0x6422, 0x6423,
- 0x640c, 0x6426, 0x6430, 0x6428, 0x6441, 0x6435, 0x642f, 0x640a,
- 0x641a, 0x6440, 0x6425, 0x6427, 0x640b, 0x63e7, 0x641b, 0x642e,
- 0x6421, 0x640e, 0x656f, 0x6592, 0x65d3, 0x6686, 0x668c, 0x6695,
- 0x6690, 0x668b, 0x668a, 0x6699, 0x6694, 0x6678, 0x6720, 0x6966,
- 0x695f, 0x6938, 0x694e, 0x6962, 0x6971, 0x693f, 0x6945, 0x696a,
- 0x6939, 0x6942, 0x6957, 0x6959, 0x697a, 0x6948, 0x6949, 0x6935,
- 0x696c, 0x6933, 0x693d, 0x6965, 0x68f0, 0x6978, 0x6934, 0x6969,
- 0x6940, 0x696f, 0x6944, 0x6976, 0x6958, 0x6941, 0x6974, 0x694c,
- 0x693b, 0x694b, 0x6937, 0x695c, 0x694f, 0x6951, 0x6932, 0x6952,
- 0x692f, 0x697b, 0x693c, 0x6b46, 0x6b45, 0x6b43, 0x6b42, 0x6b48,
- 0x6b41, 0x6b9b, 0xfa0d, 0x6bfb, 0x6bfc,
- /* 0xde */
- 0x6bf9, 0x6bf7, 0x6bf8, 0x6e9b, 0x6ed6, 0x6ec8, 0x6e8f, 0x6ec0,
- 0x6e9f, 0x6e93, 0x6e94, 0x6ea0, 0x6eb1, 0x6eb9, 0x6ec6, 0x6ed2,
- 0x6ebd, 0x6ec1, 0x6e9e, 0x6ec9, 0x6eb7, 0x6eb0, 0x6ecd, 0x6ea6,
- 0x6ecf, 0x6eb2, 0x6ebe, 0x6ec3, 0x6edc, 0x6ed8, 0x6e99, 0x6e92,
- 0x6e8e, 0x6e8d, 0x6ea4, 0x6ea1, 0x6ebf, 0x6eb3, 0x6ed0, 0x6eca,
- 0x6e97, 0x6eae, 0x6ea3, 0x7147, 0x7154, 0x7152, 0x7163, 0x7160,
- 0x7141, 0x715d, 0x7162, 0x7172, 0x7178, 0x716a, 0x7161, 0x7142,
- 0x7158, 0x7143, 0x714b, 0x7170, 0x715f, 0x7150, 0x7153, 0x7144,
- 0x714d, 0x715a, 0x724f, 0x728d, 0x728c, 0x7291, 0x7290, 0x728e,
- 0x733c, 0x7342, 0x733b, 0x733a, 0x7340, 0x734a, 0x7349, 0x7444,
- 0x744a, 0x744b, 0x7452, 0x7451, 0x7457, 0x7440, 0x744f, 0x7450,
- 0x744e, 0x7442, 0x7446, 0x744d, 0x7454, 0x74e1, 0x74ff, 0x74fe,
- 0x74fd, 0x751d, 0x7579, 0x7577, 0x6983, 0x75ef, 0x760f, 0x7603,
- 0x75f7, 0x75fe, 0x75fc, 0x75f9, 0x75f8, 0x7610, 0x75fb, 0x75f6,
- 0x75ed, 0x75f5, 0x75fd, 0x7699, 0x76b5, 0x76dd, 0x7755, 0x775f,
- 0x7760, 0x7752, 0x7756, 0x775a, 0x7769, 0x7767, 0x7754, 0x7759,
- 0x776d, 0x77e0, 0x7887, 0x789a, 0x7894, 0x788f, 0x7884, 0x7895,
- 0x7885, 0x7886, 0x78a1, 0x7883, 0x7879, 0x7899, 0x7880, 0x7896,
- 0x787b, 0x797c, 0x7982, 0x797d, 0x7979, 0x7a11, 0x7a18, 0x7a19,
- 0x7a12, 0x7a17, 0x7a15, 0x7a22, 0x7a13,
- /* 0xdf */
- 0x7a1b, 0x7a10, 0x7aa3, 0x7aa2, 0x7a9e, 0x7aeb, 0x7b66, 0x7b64,
- 0x7b6d, 0x7b74, 0x7b69, 0x7b72, 0x7b65, 0x7b73, 0x7b71, 0x7b70,
- 0x7b61, 0x7b78, 0x7b76, 0x7b63, 0x7cb2, 0x7cb4, 0x7caf, 0x7d88,
- 0x7d86, 0x7d80, 0x7d8d, 0x7d7f, 0x7d85, 0x7d7a, 0x7d8e, 0x7d7b,
- 0x7d83, 0x7d7c, 0x7d8c, 0x7d94, 0x7d84, 0x7d7d, 0x7d92, 0x7f6d,
- 0x7f6b, 0x7f67, 0x7f68, 0x7f6c, 0x7fa6, 0x7fa5, 0x7fa7, 0x7fdb,
- 0x7fdc, 0x8021, 0x8164, 0x8160, 0x8177, 0x815c, 0x8169, 0x815b,
- 0x8162, 0x8172, 0x6721, 0x815e, 0x8176, 0x8167, 0x816f, 0x8144,
- 0x8161, 0x821d, 0x8249, 0x8244, 0x8240, 0x8242, 0x8245, 0x84f1,
- 0x843f, 0x8456, 0x8476, 0x8479, 0x848f, 0x848d, 0x8465, 0x8451,
- 0x8440, 0x8486, 0x8467, 0x8430, 0x844d, 0x847d, 0x845a, 0x8459,
- 0x8474, 0x8473, 0x845d, 0x8507, 0x845e, 0x8437, 0x843a, 0x8434,
- 0x847a, 0x8443, 0x8478, 0x8432, 0x8445, 0x8429, 0x83d9, 0x844b,
- 0x842f, 0x8442, 0x842d, 0x845f, 0x8470, 0x8439, 0x844e, 0x844c,
- 0x8452, 0x846f, 0x84c5, 0x848e, 0x843b, 0x8447, 0x8436, 0x8433,
- 0x8468, 0x847e, 0x8444, 0x842b, 0x8460, 0x8454, 0x846e, 0x8450,
- 0x870b, 0x8704, 0x86f7, 0x870c, 0x86fa, 0x86d6, 0x86f5, 0x874d,
- 0x86f8, 0x870e, 0x8709, 0x8701, 0x86f6, 0x870d, 0x8705, 0x88d6,
- 0x88cb, 0x88cd, 0x88ce, 0x88de, 0x88db, 0x88da, 0x88cc, 0x88d0,
- 0x8985, 0x899b, 0x89df, 0x89e5, 0x89e4,
- /* 0xe0 */
- 0x89e1, 0x89e0, 0x89e2, 0x89dc, 0x89e6, 0x8a76, 0x8a86, 0x8a7f,
- 0x8a61, 0x8a3f, 0x8a77, 0x8a82, 0x8a84, 0x8a75, 0x8a83, 0x8a81,
- 0x8a74, 0x8a7a, 0x8c3c, 0x8c4b, 0x8c4a, 0x8c65, 0x8c64, 0x8c66,
- 0x8c86, 0x8c84, 0x8c85, 0x8ccc, 0x8d68, 0x8d69, 0x8d91, 0x8d8c,
- 0x8d8e, 0x8d8f, 0x8d8d, 0x8d93, 0x8d94, 0x8d90, 0x8d92, 0x8df0,
- 0x8de0, 0x8dec, 0x8df1, 0x8dee, 0x8dd0, 0x8de9, 0x8de3, 0x8de2,
- 0x8de7, 0x8df2, 0x8deb, 0x8df4, 0x8f06, 0x8eff, 0x8f01, 0x8f00,
- 0x8f05, 0x8f07, 0x8f08, 0x8f02, 0x8f0b, 0x9052, 0x903f, 0x9044,
- 0x9049, 0x903d, 0x9110, 0x910d, 0x910f, 0x9111, 0x9116, 0x9114,
- 0x910b, 0x910e, 0x916e, 0x916f, 0x9248, 0x9252, 0x9230, 0x923a,
- 0x9266, 0x9233, 0x9265, 0x925e, 0x9283, 0x922e, 0x924a, 0x9246,
- 0x926d, 0x926c, 0x924f, 0x9260, 0x9267, 0x926f, 0x9236, 0x9261,
- 0x9270, 0x9231, 0x9254, 0x9263, 0x9250, 0x9272, 0x924e, 0x9253,
- 0x924c, 0x9256, 0x9232, 0x959f, 0x959c, 0x959e, 0x959b, 0x9692,
- 0x9693, 0x9691, 0x9697, 0x96ce, 0x96fa, 0x96fd, 0x96f8, 0x96f5,
- 0x9773, 0x9777, 0x9778, 0x9772, 0x980f, 0x980d, 0x980e, 0x98ac,
- 0x98f6, 0x98f9, 0x99af, 0x99b2, 0x99b0, 0x99b5, 0x9aad, 0x9aab,
- 0x9b5b, 0x9cea, 0x9ced, 0x9ce7, 0x9e80, 0x9efd, 0x50e6, 0x50d4,
- 0x50d7, 0x50e8, 0x50f3, 0x50db, 0x50ea, 0x50dd, 0x50e4, 0x50d3,
- 0x50ec, 0x50f0, 0x50ef, 0x50e3, 0x50e0,
- /* 0xe1 */
- 0x51d8, 0x5280, 0x5281, 0x52e9, 0x52eb, 0x5330, 0x53ac, 0x5627,
- 0x5615, 0x560c, 0x5612, 0x55fc, 0x560f, 0x561c, 0x5601, 0x5613,
- 0x5602, 0x55fa, 0x561d, 0x5604, 0x55ff, 0x55f9, 0x5889, 0x587c,
- 0x5890, 0x5898, 0x5886, 0x5881, 0x587f, 0x5874, 0x588b, 0x587a,
- 0x5887, 0x5891, 0x588e, 0x5876, 0x5882, 0x5888, 0x587b, 0x5894,
- 0x588f, 0x58fe, 0x596b, 0x5adc, 0x5aee, 0x5ae5, 0x5ad5, 0x5aea,
- 0x5ada, 0x5aed, 0x5aeb, 0x5af3, 0x5ae2, 0x5ae0, 0x5adb, 0x5aec,
- 0x5ade, 0x5add, 0x5ad9, 0x5ae8, 0x5adf, 0x5b77, 0x5be0, 0x5be3,
- 0x5c63, 0x5d82, 0x5d80, 0x5d7d, 0x5d86, 0x5d7a, 0x5d81, 0x5d77,
- 0x5d8a, 0x5d89, 0x5d88, 0x5d7e, 0x5d7c, 0x5d8d, 0x5d79, 0x5d7f,
- 0x5e58, 0x5e59, 0x5e53, 0x5ed8, 0x5ed1, 0x5ed7, 0x5ece, 0x5edc,
- 0x5ed5, 0x5ed9, 0x5ed2, 0x5ed4, 0x5f44, 0x5f43, 0x5f6f, 0x5fb6,
- 0x612c, 0x6128, 0x6141, 0x615e, 0x6171, 0x6173, 0x6152, 0x6153,
- 0x6172, 0x616c, 0x6180, 0x6174, 0x6154, 0x617a, 0x615b, 0x6165,
- 0x613b, 0x616a, 0x6161, 0x6156, 0x6229, 0x6227, 0x622b, 0x642b,
- 0x644d, 0x645b, 0x645d, 0x6474, 0x6476, 0x6472, 0x6473, 0x647d,
- 0x6475, 0x6466, 0x64a6, 0x644e, 0x6482, 0x645e, 0x645c, 0x644b,
- 0x6453, 0x6460, 0x6450, 0x647f, 0x643f, 0x646c, 0x646b, 0x6459,
- 0x6465, 0x6477, 0x6573, 0x65a0, 0x66a1, 0x66a0, 0x669f, 0x6705,
- 0x6704, 0x6722, 0x69b1, 0x69b6, 0x69c9,
- /* 0xe2 */
- 0x69a0, 0x69ce, 0x6996, 0x69b0, 0x69ac, 0x69bc, 0x6991, 0x6999,
- 0x698e, 0x69a7, 0x698d, 0x69a9, 0x69be, 0x69af, 0x69bf, 0x69c4,
- 0x69bd, 0x69a4, 0x69d4, 0x69b9, 0x69ca, 0x699a, 0x69cf, 0x69b3,
- 0x6993, 0x69aa, 0x69a1, 0x699e, 0x69d9, 0x6997, 0x6990, 0x69c2,
- 0x69b5, 0x69a5, 0x69c6, 0x6b4a, 0x6b4d, 0x6b4b, 0x6b9e, 0x6b9f,
- 0x6ba0, 0x6bc3, 0x6bc4, 0x6bfe, 0x6ece, 0x6ef5, 0x6ef1, 0x6f03,
- 0x6f25, 0x6ef8, 0x6f37, 0x6efb, 0x6f2e, 0x6f09, 0x6f4e, 0x6f19,
- 0x6f1a, 0x6f27, 0x6f18, 0x6f3b, 0x6f12, 0x6eed, 0x6f0a, 0x6f36,
- 0x6f73, 0x6ef9, 0x6eee, 0x6f2d, 0x6f40, 0x6f30, 0x6f3c, 0x6f35,
- 0x6eeb, 0x6f07, 0x6f0e, 0x6f43, 0x6f05, 0x6efd, 0x6ef6, 0x6f39,
- 0x6f1c, 0x6efc, 0x6f3a, 0x6f1f, 0x6f0d, 0x6f1e, 0x6f08, 0x6f21,
- 0x7187, 0x7190, 0x7189, 0x7180, 0x7185, 0x7182, 0x718f, 0x717b,
- 0x7186, 0x7181, 0x7197, 0x7244, 0x7253, 0x7297, 0x7295, 0x7293,
- 0x7343, 0x734d, 0x7351, 0x734c, 0x7462, 0x7473, 0x7471, 0x7475,
- 0x7472, 0x7467, 0x746e, 0x7500, 0x7502, 0x7503, 0x757d, 0x7590,
- 0x7616, 0x7608, 0x760c, 0x7615, 0x7611, 0x760a, 0x7614, 0x76b8,
- 0x7781, 0x777c, 0x7785, 0x7782, 0x776e, 0x7780, 0x776f, 0x777e,
- 0x7783, 0x78b2, 0x78aa, 0x78b4, 0x78ad, 0x78a8, 0x787e, 0x78ab,
- 0x789e, 0x78a5, 0x78a0, 0x78ac, 0x78a2, 0x78a4, 0x7998, 0x798a,
- 0x798b, 0x7996, 0x7995, 0x7994, 0x7993,
- /* 0xe3 */
- 0x7997, 0x7988, 0x7992, 0x7990, 0x7a2b, 0x7a4a, 0x7a30, 0x7a2f,
- 0x7a28, 0x7a26, 0x7aa8, 0x7aab, 0x7aac, 0x7aee, 0x7b88, 0x7b9c,
- 0x7b8a, 0x7b91, 0x7b90, 0x7b96, 0x7b8d, 0x7b8c, 0x7b9b, 0x7b8e,
- 0x7b85, 0x7b98, 0x5284, 0x7b99, 0x7ba4, 0x7b82, 0x7cbb, 0x7cbf,
- 0x7cbc, 0x7cba, 0x7da7, 0x7db7, 0x7dc2, 0x7da3, 0x7daa, 0x7dc1,
- 0x7dc0, 0x7dc5, 0x7d9d, 0x7dce, 0x7dc4, 0x7dc6, 0x7dcb, 0x7dcc,
- 0x7daf, 0x7db9, 0x7d96, 0x7dbc, 0x7d9f, 0x7da6, 0x7dae, 0x7da9,
- 0x7da1, 0x7dc9, 0x7f73, 0x7fe2, 0x7fe3, 0x7fe5, 0x7fde, 0x8024,
- 0x805d, 0x805c, 0x8189, 0x8186, 0x8183, 0x8187, 0x818d, 0x818c,
- 0x818b, 0x8215, 0x8497, 0x84a4, 0x84a1, 0x849f, 0x84ba, 0x84ce,
- 0x84c2, 0x84ac, 0x84ae, 0x84ab, 0x84b9, 0x84b4, 0x84c1, 0x84cd,
- 0x84aa, 0x849a, 0x84b1, 0x84d0, 0x849d, 0x84a7, 0x84bb, 0x84a2,
- 0x8494, 0x84c7, 0x84cc, 0x849b, 0x84a9, 0x84af, 0x84a8, 0x84d6,
- 0x8498, 0x84b6, 0x84cf, 0x84a0, 0x84d7, 0x84d4, 0x84d2, 0x84db,
- 0x84b0, 0x8491, 0x8661, 0x8733, 0x8723, 0x8728, 0x876b, 0x8740,
- 0x872e, 0x871e, 0x8721, 0x8719, 0x871b, 0x8743, 0x872c, 0x8741,
- 0x873e, 0x8746, 0x8720, 0x8732, 0x872a, 0x872d, 0x873c, 0x8712,
- 0x873a, 0x8731, 0x8735, 0x8742, 0x8726, 0x8727, 0x8738, 0x8724,
- 0x871a, 0x8730, 0x8711, 0x88f7, 0x88e7, 0x88f1, 0x88f2, 0x88fa,
- 0x88fe, 0x88ee, 0x88fc, 0x88f6, 0x88fb,
- /* 0xe4 */
- 0x88f0, 0x88ec, 0x88eb, 0x899d, 0x89a1, 0x899f, 0x899e, 0x89e9,
- 0x89eb, 0x89e8, 0x8aab, 0x8a99, 0x8a8b, 0x8a92, 0x8a8f, 0x8a96,
- 0x8c3d, 0x8c68, 0x8c69, 0x8cd5, 0x8ccf, 0x8cd7, 0x8d96, 0x8e09,
- 0x8e02, 0x8dff, 0x8e0d, 0x8dfd, 0x8e0a, 0x8e03, 0x8e07, 0x8e06,
- 0x8e05, 0x8dfe, 0x8e00, 0x8e04, 0x8f10, 0x8f11, 0x8f0e, 0x8f0d,
- 0x9123, 0x911c, 0x9120, 0x9122, 0x911f, 0x911d, 0x911a, 0x9124,
- 0x9121, 0x911b, 0x917a, 0x9172, 0x9179, 0x9173, 0x92a5, 0x92a4,
- 0x9276, 0x929b, 0x927a, 0x92a0, 0x9294, 0x92aa, 0x928d, 0x92a6,
- 0x929a, 0x92ab, 0x9279, 0x9297, 0x927f, 0x92a3, 0x92ee, 0x928e,
- 0x9282, 0x9295, 0x92a2, 0x927d, 0x9288, 0x92a1, 0x928a, 0x9286,
- 0x928c, 0x9299, 0x92a7, 0x927e, 0x9287, 0x92a9, 0x929d, 0x928b,
- 0x922d, 0x969e, 0x96a1, 0x96ff, 0x9758, 0x977d, 0x977a, 0x977e,
- 0x9783, 0x9780, 0x9782, 0x977b, 0x9784, 0x9781, 0x977f, 0x97ce,
- 0x97cd, 0x9816, 0x98ad, 0x98ae, 0x9902, 0x9900, 0x9907, 0x999d,
- 0x999c, 0x99c3, 0x99b9, 0x99bb, 0x99ba, 0x99c2, 0x99bd, 0x99c7,
- 0x9ab1, 0x9ae3, 0x9ae7, 0x9b3e, 0x9b3f, 0x9b60, 0x9b61, 0x9b5f,
- 0x9cf1, 0x9cf2, 0x9cf5, 0x9ea7, 0x50ff, 0x5103, 0x5130, 0x50f8,
- 0x5106, 0x5107, 0x50f6, 0x50fe, 0x510b, 0x510c, 0x50fd, 0x510a,
- 0x528b, 0x528c, 0x52f1, 0x52ef, 0x5648, 0x5642, 0x564c, 0x5635,
- 0x5641, 0x564a, 0x5649, 0x5646, 0x5658,
- /* 0xe5 */
- 0x565a, 0x5640, 0x5633, 0x563d, 0x562c, 0x563e, 0x5638, 0x562a,
- 0x563a, 0x571a, 0x58ab, 0x589d, 0x58b1, 0x58a0, 0x58a3, 0x58af,
- 0x58ac, 0x58a5, 0x58a1, 0x58ff, 0x5aff, 0x5af4, 0x5afd, 0x5af7,
- 0x5af6, 0x5b03, 0x5af8, 0x5b02, 0x5af9, 0x5b01, 0x5b07, 0x5b05,
- 0x5b0f, 0x5c67, 0x5d99, 0x5d97, 0x5d9f, 0x5d92, 0x5da2, 0x5d93,
- 0x5d95, 0x5da0, 0x5d9c, 0x5da1, 0x5d9a, 0x5d9e, 0x5e69, 0x5e5d,
- 0x5e60, 0x5e5c, 0x7df3, 0x5edb, 0x5ede, 0x5ee1, 0x5f49, 0x5fb2,
- 0x618b, 0x6183, 0x6179, 0x61b1, 0x61b0, 0x61a2, 0x6189, 0x619b,
- 0x6193, 0x61af, 0x61ad, 0x619f, 0x6192, 0x61aa, 0x61a1, 0x618d,
- 0x6166, 0x61b3, 0x622d, 0x646e, 0x6470, 0x6496, 0x64a0, 0x6485,
- 0x6497, 0x649c, 0x648f, 0x648b, 0x648a, 0x648c, 0x64a3, 0x649f,
- 0x6468, 0x64b1, 0x6498, 0x6576, 0x657a, 0x6579, 0x657b, 0x65b2,
- 0x65b3, 0x66b5, 0x66b0, 0x66a9, 0x66b2, 0x66b7, 0x66aa, 0x66af,
- 0x6a00, 0x6a06, 0x6a17, 0x69e5, 0x69f8, 0x6a15, 0x69f1, 0x69e4,
- 0x6a20, 0x69ff, 0x69ec, 0x69e2, 0x6a1b, 0x6a1d, 0x69fe, 0x6a27,
- 0x69f2, 0x69ee, 0x6a14, 0x69f7, 0x69e7, 0x6a40, 0x6a08, 0x69e6,
- 0x69fb, 0x6a0d, 0x69fc, 0x69eb, 0x6a09, 0x6a04, 0x6a18, 0x6a25,
- 0x6a0f, 0x69f6, 0x6a26, 0x6a07, 0x69f4, 0x6a16, 0x6b51, 0x6ba5,
- 0x6ba3, 0x6ba2, 0x6ba6, 0x6c01, 0x6c00, 0x6bff, 0x6c02, 0x6f41,
- 0x6f26, 0x6f7e, 0x6f87, 0x6fc6, 0x6f92,
- /* 0xe6 */
- 0x6f8d, 0x6f89, 0x6f8c, 0x6f62, 0x6f4f, 0x6f85, 0x6f5a, 0x6f96,
- 0x6f76, 0x6f6c, 0x6f82, 0x6f55, 0x6f72, 0x6f52, 0x6f50, 0x6f57,
- 0x6f94, 0x6f93, 0x6f5d, 0x6f00, 0x6f61, 0x6f6b, 0x6f7d, 0x6f67,
- 0x6f90, 0x6f53, 0x6f8b, 0x6f69, 0x6f7f, 0x6f95, 0x6f63, 0x6f77,
- 0x6f6a, 0x6f7b, 0x71b2, 0x71af, 0x719b, 0x71b0, 0x71a0, 0x719a,
- 0x71a9, 0x71b5, 0x719d, 0x71a5, 0x719e, 0x71a4, 0x71a1, 0x71aa,
- 0x719c, 0x71a7, 0x71b3, 0x7298, 0x729a, 0x7358, 0x7352, 0x735e,
- 0x735f, 0x7360, 0x735d, 0x735b, 0x7361, 0x735a, 0x7359, 0x7362,
- 0x7487, 0x7489, 0x748a, 0x7486, 0x7481, 0x747d, 0x7485, 0x7488,
- 0x747c, 0x7479, 0x7508, 0x7507, 0x757e, 0x7625, 0x761e, 0x7619,
- 0x761d, 0x761c, 0x7623, 0x761a, 0x7628, 0x761b, 0x769c, 0x769d,
- 0x769e, 0x769b, 0x778d, 0x778f, 0x7789, 0x7788, 0x78cd, 0x78bb,
- 0x78cf, 0x78cc, 0x78d1, 0x78ce, 0x78d4, 0x78c8, 0x78c3, 0x78c4,
- 0x78c9, 0x799a, 0x79a1, 0x79a0, 0x799c, 0x79a2, 0x799b, 0x6b76,
- 0x7a39, 0x7ab2, 0x7ab4, 0x7ab3, 0x7bb7, 0x7bcb, 0x7bbe, 0x7bac,
- 0x7bce, 0x7baf, 0x7bb9, 0x7bca, 0x7bb5, 0x7cc5, 0x7cc8, 0x7ccc,
- 0x7ccb, 0x7df7, 0x7ddb, 0x7dea, 0x7de7, 0x7dd7, 0x7de1, 0x7e03,
- 0x7dfa, 0x7de6, 0x7df6, 0x7df1, 0x7df0, 0x7dee, 0x7ddf, 0x7f76,
- 0x7fac, 0x7fb0, 0x7fad, 0x7fed, 0x7feb, 0x7fea, 0x7fec, 0x7fe6,
- 0x7fe8, 0x8064, 0x8067, 0x81a3, 0x819f,
- /* 0xe7 */
- 0x819e, 0x8195, 0x81a2, 0x8199, 0x8197, 0x8216, 0x824f, 0x8253,
- 0x8252, 0x8250, 0x824e, 0x8251, 0x8524, 0x853b, 0x850f, 0x8500,
- 0x8529, 0x850e, 0x8509, 0x850d, 0x851f, 0x850a, 0x8527, 0x851c,
- 0x84fb, 0x852b, 0x84fa, 0x8508, 0x850c, 0x84f4, 0x852a, 0x84f2,
- 0x8515, 0x84f7, 0x84eb, 0x84f3, 0x84fc, 0x8512, 0x84ea, 0x84e9,
- 0x8516, 0x84fe, 0x8528, 0x851d, 0x852e, 0x8502, 0x84fd, 0x851e,
- 0x84f6, 0x8531, 0x8526, 0x84e7, 0x84e8, 0x84f0, 0x84ef, 0x84f9,
- 0x8518, 0x8520, 0x8530, 0x850b, 0x8519, 0x852f, 0x8662, 0x8756,
- 0x8763, 0x8764, 0x8777, 0x87e1, 0x8773, 0x8758, 0x8754, 0x875b,
- 0x8752, 0x8761, 0x875a, 0x8751, 0x875e, 0x876d, 0x876a, 0x8750,
- 0x874e, 0x875f, 0x875d, 0x876f, 0x876c, 0x877a, 0x876e, 0x875c,
- 0x8765, 0x874f, 0x877b, 0x8775, 0x8762, 0x8767, 0x8769, 0x885a,
- 0x8905, 0x890c, 0x8914, 0x890b, 0x8917, 0x8918, 0x8919, 0x8906,
- 0x8916, 0x8911, 0x890e, 0x8909, 0x89a2, 0x89a4, 0x89a3, 0x89ed,
- 0x89f0, 0x89ec, 0x8acf, 0x8ac6, 0x8ab8, 0x8ad3, 0x8ad1, 0x8ad4,
- 0x8ad5, 0x8abb, 0x8ad7, 0x8abe, 0x8ac0, 0x8ac5, 0x8ad8, 0x8ac3,
- 0x8aba, 0x8abd, 0x8ad9, 0x8c3e, 0x8c4d, 0x8c8f, 0x8ce5, 0x8cdf,
- 0x8cd9, 0x8ce8, 0x8cda, 0x8cdd, 0x8ce7, 0x8da0, 0x8d9c, 0x8da1,
- 0x8d9b, 0x8e20, 0x8e23, 0x8e25, 0x8e24, 0x8e2e, 0x8e15, 0x8e1b,
- 0x8e16, 0x8e11, 0x8e19, 0x8e26, 0x8e27,
- /* 0xe8 */
- 0x8e14, 0x8e12, 0x8e18, 0x8e13, 0x8e1c, 0x8e17, 0x8e1a, 0x8f2c,
- 0x8f24, 0x8f18, 0x8f1a, 0x8f20, 0x8f23, 0x8f16, 0x8f17, 0x9073,
- 0x9070, 0x906f, 0x9067, 0x906b, 0x912f, 0x912b, 0x9129, 0x912a,
- 0x9132, 0x9126, 0x912e, 0x9185, 0x9186, 0x918a, 0x9181, 0x9182,
- 0x9184, 0x9180, 0x92d0, 0x92c3, 0x92c4, 0x92c0, 0x92d9, 0x92b6,
- 0x92cf, 0x92f1, 0x92df, 0x92d8, 0x92e9, 0x92d7, 0x92dd, 0x92cc,
- 0x92ef, 0x92c2, 0x92e8, 0x92ca, 0x92c8, 0x92ce, 0x92e6, 0x92cd,
- 0x92d5, 0x92c9, 0x92e0, 0x92de, 0x92e7, 0x92d1, 0x92d3, 0x92b5,
- 0x92e1, 0x92c6, 0x92b4, 0x957c, 0x95ac, 0x95ab, 0x95ae, 0x95b0,
- 0x96a4, 0x96a2, 0x96d3, 0x9705, 0x9708, 0x9702, 0x975a, 0x978a,
- 0x978e, 0x9788, 0x97d0, 0x97cf, 0x981e, 0x981d, 0x9826, 0x9829,
- 0x9828, 0x9820, 0x981b, 0x9827, 0x98b2, 0x9908, 0x98fa, 0x9911,
- 0x9914, 0x9916, 0x9917, 0x9915, 0x99dc, 0x99cd, 0x99cf, 0x99d3,
- 0x99d4, 0x99ce, 0x99c9, 0x99d6, 0x99d8, 0x99cb, 0x99d7, 0x99cc,
- 0x9ab3, 0x9aec, 0x9aeb, 0x9af3, 0x9af2, 0x9af1, 0x9b46, 0x9b43,
- 0x9b67, 0x9b74, 0x9b71, 0x9b66, 0x9b76, 0x9b75, 0x9b70, 0x9b68,
- 0x9b64, 0x9b6c, 0x9cfc, 0x9cfa, 0x9cfd, 0x9cff, 0x9cf7, 0x9d07,
- 0x9d00, 0x9cf9, 0x9cfb, 0x9d08, 0x9d05, 0x9d04, 0x9e83, 0x9ed3,
- 0x9f0f, 0x9f10, 0x511c, 0x5113, 0x5117, 0x511a, 0x5111, 0x51de,
- 0x5334, 0x53e1, 0x5670, 0x5660, 0x566e,
- /* 0xe9 */
- 0x5673, 0x5666, 0x5663, 0x566d, 0x5672, 0x565e, 0x5677, 0x571c,
- 0x571b, 0x58c8, 0x58bd, 0x58c9, 0x58bf, 0x58ba, 0x58c2, 0x58bc,
- 0x58c6, 0x5b17, 0x5b19, 0x5b1b, 0x5b21, 0x5b14, 0x5b13, 0x5b10,
- 0x5b16, 0x5b28, 0x5b1a, 0x5b20, 0x5b1e, 0x5bef, 0x5dac, 0x5db1,
- 0x5da9, 0x5da7, 0x5db5, 0x5db0, 0x5dae, 0x5daa, 0x5da8, 0x5db2,
- 0x5dad, 0x5daf, 0x5db4, 0x5e67, 0x5e68, 0x5e66, 0x5e6f, 0x5ee9,
- 0x5ee7, 0x5ee6, 0x5ee8, 0x5ee5, 0x5f4b, 0x5fbc, 0x619d, 0x61a8,
- 0x6196, 0x61c5, 0x61b4, 0x61c6, 0x61c1, 0x61cc, 0x61ba, 0x61bf,
- 0x61b8, 0x618c, 0x64d7, 0x64d6, 0x64d0, 0x64cf, 0x64c9, 0x64bd,
- 0x6489, 0x64c3, 0x64db, 0x64f3, 0x64d9, 0x6533, 0x657f, 0x657c,
- 0x65a2, 0x66c8, 0x66be, 0x66c0, 0x66ca, 0x66cb, 0x66cf, 0x66bd,
- 0x66bb, 0x66ba, 0x66cc, 0x6723, 0x6a34, 0x6a66, 0x6a49, 0x6a67,
- 0x6a32, 0x6a68, 0x6a3e, 0x6a5d, 0x6a6d, 0x6a76, 0x6a5b, 0x6a51,
- 0x6a28, 0x6a5a, 0x6a3b, 0x6a3f, 0x6a41, 0x6a6a, 0x6a64, 0x6a50,
- 0x6a4f, 0x6a54, 0x6a6f, 0x6a69, 0x6a60, 0x6a3c, 0x6a5e, 0x6a56,
- 0x6a55, 0x6a4d, 0x6a4e, 0x6a46, 0x6b55, 0x6b54, 0x6b56, 0x6ba7,
- 0x6baa, 0x6bab, 0x6bc8, 0x6bc7, 0x6c04, 0x6c03, 0x6c06, 0x6fad,
- 0x6fcb, 0x6fa3, 0x6fc7, 0x6fbc, 0x6fce, 0x6fc8, 0x6f5e, 0x6fc4,
- 0x6fbd, 0x6f9e, 0x6fca, 0x6fa8, 0x7004, 0x6fa5, 0x6fae, 0x6fba,
- 0x6fac, 0x6faa, 0x6fcf, 0x6fbf, 0x6fb8,
- /* 0xea */
- 0x6fa2, 0x6fc9, 0x6fab, 0x6fcd, 0x6faf, 0x6fb2, 0x6fb0, 0x71c5,
- 0x71c2, 0x71bf, 0x71b8, 0x71d6, 0x71c0, 0x71c1, 0x71cb, 0x71d4,
- 0x71ca, 0x71c7, 0x71cf, 0x71bd, 0x71d8, 0x71bc, 0x71c6, 0x71da,
- 0x71db, 0x729d, 0x729e, 0x7369, 0x7366, 0x7367, 0x736c, 0x7365,
- 0x736b, 0x736a, 0x747f, 0x749a, 0x74a0, 0x7494, 0x7492, 0x7495,
- 0x74a1, 0x750b, 0x7580, 0x762f, 0x762d, 0x7631, 0x763d, 0x7633,
- 0x763c, 0x7635, 0x7632, 0x7630, 0x76bb, 0x76e6, 0x779a, 0x779d,
- 0x77a1, 0x779c, 0x779b, 0x77a2, 0x77a3, 0x7795, 0x7799, 0x7797,
- 0x78dd, 0x78e9, 0x78e5, 0x78ea, 0x78de, 0x78e3, 0x78db, 0x78e1,
- 0x78e2, 0x78ed, 0x78df, 0x78e0, 0x79a4, 0x7a44, 0x7a48, 0x7a47,
- 0x7ab6, 0x7ab8, 0x7ab5, 0x7ab1, 0x7ab7, 0x7bde, 0x7be3, 0x7be7,
- 0x7bdd, 0x7bd5, 0x7be5, 0x7bda, 0x7be8, 0x7bf9, 0x7bd4, 0x7bea,
- 0x7be2, 0x7bdc, 0x7beb, 0x7bd8, 0x7bdf, 0x7cd2, 0x7cd4, 0x7cd7,
- 0x7cd0, 0x7cd1, 0x7e12, 0x7e21, 0x7e17, 0x7e0c, 0x7e1f, 0x7e20,
- 0x7e13, 0x7e0e, 0x7e1c, 0x7e15, 0x7e1a, 0x7e22, 0x7e0b, 0x7e0f,
- 0x7e16, 0x7e0d, 0x7e14, 0x7e25, 0x7e24, 0x7f43, 0x7f7b, 0x7f7c,
- 0x7f7a, 0x7fb1, 0x7fef, 0x802a, 0x8029, 0x806c, 0x81b1, 0x81a6,
- 0x81ae, 0x81b9, 0x81b5, 0x81ab, 0x81b0, 0x81ac, 0x81b4, 0x81b2,
- 0x81b7, 0x81a7, 0x81f2, 0x8255, 0x8256, 0x8257, 0x8556, 0x8545,
- 0x856b, 0x854d, 0x8553, 0x8561, 0x8558,
- /* 0xeb */
- 0x8540, 0x8546, 0x8564, 0x8541, 0x8562, 0x8544, 0x8551, 0x8547,
- 0x8563, 0x853e, 0x855b, 0x8571, 0x854e, 0x856e, 0x8575, 0x8555,
- 0x8567, 0x8560, 0x858c, 0x8566, 0x855d, 0x8554, 0x8565, 0x856c,
- 0x8663, 0x8665, 0x8664, 0x879b, 0x878f, 0x8797, 0x8793, 0x8792,
- 0x8788, 0x8781, 0x8796, 0x8798, 0x8779, 0x8787, 0x87a3, 0x8785,
- 0x8790, 0x8791, 0x879d, 0x8784, 0x8794, 0x879c, 0x879a, 0x8789,
- 0x891e, 0x8926, 0x8930, 0x892d, 0x892e, 0x8927, 0x8931, 0x8922,
- 0x8929, 0x8923, 0x892f, 0x892c, 0x891f, 0x89f1, 0x8ae0, 0x8ae2,
- 0x8af2, 0x8af4, 0x8af5, 0x8add, 0x8b14, 0x8ae4, 0x8adf, 0x8af0,
- 0x8ac8, 0x8ade, 0x8ae1, 0x8ae8, 0x8aff, 0x8aef, 0x8afb, 0x8c91,
- 0x8c92, 0x8c90, 0x8cf5, 0x8cee, 0x8cf1, 0x8cf0, 0x8cf3, 0x8d6c,
- 0x8d6e, 0x8da5, 0x8da7, 0x8e33, 0x8e3e, 0x8e38, 0x8e40, 0x8e45,
- 0x8e36, 0x8e3c, 0x8e3d, 0x8e41, 0x8e30, 0x8e3f, 0x8ebd, 0x8f36,
- 0x8f2e, 0x8f35, 0x8f32, 0x8f39, 0x8f37, 0x8f34, 0x9076, 0x9079,
- 0x907b, 0x9086, 0x90fa, 0x9133, 0x9135, 0x9136, 0x9193, 0x9190,
- 0x9191, 0x918d, 0x918f, 0x9327, 0x931e, 0x9308, 0x931f, 0x9306,
- 0x930f, 0x937a, 0x9338, 0x933c, 0x931b, 0x9323, 0x9312, 0x9301,
- 0x9346, 0x932d, 0x930e, 0x930d, 0x92cb, 0x931d, 0x92fa, 0x9325,
- 0x9313, 0x92f9, 0x92f7, 0x9334, 0x9302, 0x9324, 0x92ff, 0x9329,
- 0x9339, 0x9335, 0x932a, 0x9314, 0x930c,
- /* 0xec */
- 0x930b, 0x92fe, 0x9309, 0x9300, 0x92fb, 0x9316, 0x95bc, 0x95cd,
- 0x95be, 0x95b9, 0x95ba, 0x95b6, 0x95bf, 0x95b5, 0x95bd, 0x96a9,
- 0x96d4, 0x970b, 0x9712, 0x9710, 0x9799, 0x9797, 0x9794, 0x97f0,
- 0x97f8, 0x9835, 0x982f, 0x9832, 0x9924, 0x991f, 0x9927, 0x9929,
- 0x999e, 0x99ee, 0x99ec, 0x99e5, 0x99e4, 0x99f0, 0x99e3, 0x99ea,
- 0x99e9, 0x99e7, 0x9ab9, 0x9abf, 0x9ab4, 0x9abb, 0x9af6, 0x9afa,
- 0x9af9, 0x9af7, 0x9b33, 0x9b80, 0x9b85, 0x9b87, 0x9b7c, 0x9b7e,
- 0x9b7b, 0x9b82, 0x9b93, 0x9b92, 0x9b90, 0x9b7a, 0x9b95, 0x9b7d,
- 0x9b88, 0x9d25, 0x9d17, 0x9d20, 0x9d1e, 0x9d14, 0x9d29, 0x9d1d,
- 0x9d18, 0x9d22, 0x9d10, 0x9d19, 0x9d1f, 0x9e88, 0x9e86, 0x9e87,
- 0x9eae, 0x9ead, 0x9ed5, 0x9ed6, 0x9efa, 0x9f12, 0x9f3d, 0x5126,
- 0x5125, 0x5122, 0x5124, 0x5120, 0x5129, 0x52f4, 0x5693, 0x568c,
- 0x568d, 0x5686, 0x5684, 0x5683, 0x567e, 0x5682, 0x567f, 0x5681,
- 0x58d6, 0x58d4, 0x58cf, 0x58d2, 0x5b2d, 0x5b25, 0x5b32, 0x5b23,
- 0x5b2c, 0x5b27, 0x5b26, 0x5b2f, 0x5b2e, 0x5b7b, 0x5bf1, 0x5bf2,
- 0x5db7, 0x5e6c, 0x5e6a, 0x5fbe, 0x5fbb, 0x61c3, 0x61b5, 0x61bc,
- 0x61e7, 0x61e0, 0x61e5, 0x61e4, 0x61e8, 0x61de, 0x64ef, 0x64e9,
- 0x64e3, 0x64eb, 0x64e4, 0x64e8, 0x6581, 0x6580, 0x65b6, 0x65da,
- 0x66d2, 0x6a8d, 0x6a96, 0x6a81, 0x6aa5, 0x6a89, 0x6a9f, 0x6a9b,
- 0x6aa1, 0x6a9e, 0x6a87, 0x6a93, 0x6a8e,
- /* 0xed */
- 0x6a95, 0x6a83, 0x6aa8, 0x6aa4, 0x6a91, 0x6a7f, 0x6aa6, 0x6a9a,
- 0x6a85, 0x6a8c, 0x6a92, 0x6b5b, 0x6bad, 0x6c09, 0x6fcc, 0x6fa9,
- 0x6ff4, 0x6fd4, 0x6fe3, 0x6fdc, 0x6fed, 0x6fe7, 0x6fe6, 0x6fde,
- 0x6ff2, 0x6fdd, 0x6fe2, 0x6fe8, 0x71e1, 0x71f1, 0x71e8, 0x71f2,
- 0x71e4, 0x71f0, 0x71e2, 0x7373, 0x736e, 0x736f, 0x7497, 0x74b2,
- 0x74ab, 0x7490, 0x74aa, 0x74ad, 0x74b1, 0x74a5, 0x74af, 0x7510,
- 0x7511, 0x7512, 0x750f, 0x7584, 0x7643, 0x7648, 0x7649, 0x7647,
- 0x76a4, 0x76e9, 0x77b5, 0x77ab, 0x77b2, 0x77b7, 0x77b6, 0x77b4,
- 0x77b1, 0x77a8, 0x77f0, 0x78f3, 0x78fd, 0x7902, 0x78fb, 0x78fc,
- 0x78f2, 0x7905, 0x78f9, 0x78fe, 0x7904, 0x79ab, 0x79a8, 0x7a5c,
- 0x7a5b, 0x7a56, 0x7a58, 0x7a54, 0x7a5a, 0x7abe, 0x7ac0, 0x7ac1,
- 0x7c05, 0x7c0f, 0x7bf2, 0x7c00, 0x7bff, 0x7bfb, 0x7c0e, 0x7bf4,
- 0x7c0b, 0x7bf3, 0x7c02, 0x7c09, 0x7c03, 0x7c01, 0x7bf8, 0x7bfd,
- 0x7c06, 0x7bf0, 0x7bf1, 0x7c10, 0x7c0a, 0x7ce8, 0x7e2d, 0x7e3c,
- 0x7e42, 0x7e33, 0x9848, 0x7e38, 0x7e2a, 0x7e49, 0x7e40, 0x7e47,
- 0x7e29, 0x7e4c, 0x7e30, 0x7e3b, 0x7e36, 0x7e44, 0x7e3a, 0x7f45,
- 0x7f7f, 0x7f7e, 0x7f7d, 0x7ff4, 0x7ff2, 0x802c, 0x81bb, 0x81c4,
- 0x81cc, 0x81ca, 0x81c5, 0x81c7, 0x81bc, 0x81e9, 0x825b, 0x825a,
- 0x825c, 0x8583, 0x8580, 0x858f, 0x85a7, 0x8595, 0x85a0, 0x858b,
- 0x85a3, 0x857b, 0x85a4, 0x859a, 0x859e,
- /* 0xee */
- 0x8577, 0x857c, 0x8589, 0x85a1, 0x857a, 0x8578, 0x8557, 0x858e,
- 0x8596, 0x8586, 0x858d, 0x8599, 0x859d, 0x8581, 0x85a2, 0x8582,
- 0x8588, 0x8585, 0x8579, 0x8576, 0x8598, 0x8590, 0x859f, 0x8668,
- 0x87be, 0x87aa, 0x87ad, 0x87c5, 0x87b0, 0x87ac, 0x87b9, 0x87b5,
- 0x87bc, 0x87ae, 0x87c9, 0x87c3, 0x87c2, 0x87cc, 0x87b7, 0x87af,
- 0x87c4, 0x87ca, 0x87b4, 0x87b6, 0x87bf, 0x87b8, 0x87bd, 0x87de,
- 0x87b2, 0x8935, 0x8933, 0x893c, 0x893e, 0x8941, 0x8952, 0x8937,
- 0x8942, 0x89ad, 0x89af, 0x89ae, 0x89f2, 0x89f3, 0x8b1e, 0x8b18,
- 0x8b16, 0x8b11, 0x8b05, 0x8b0b, 0x8b22, 0x8b0f, 0x8b12, 0x8b15,
- 0x8b07, 0x8b0d, 0x8b08, 0x8b06, 0x8b1c, 0x8b13, 0x8b1a, 0x8c4f,
- 0x8c70, 0x8c72, 0x8c71, 0x8c6f, 0x8c95, 0x8c94, 0x8cf9, 0x8d6f,
- 0x8e4e, 0x8e4d, 0x8e53, 0x8e50, 0x8e4c, 0x8e47, 0x8f43, 0x8f40,
- 0x9085, 0x907e, 0x9138, 0x919a, 0x91a2, 0x919b, 0x9199, 0x919f,
- 0x91a1, 0x919d, 0x91a0, 0x93a1, 0x9383, 0x93af, 0x9364, 0x9356,
- 0x9347, 0x937c, 0x9358, 0x935c, 0x9376, 0x9349, 0x9350, 0x9351,
- 0x9360, 0x936d, 0x938f, 0x934c, 0x936a, 0x9379, 0x9357, 0x9355,
- 0x9352, 0x934f, 0x9371, 0x9377, 0x937b, 0x9361, 0x935e, 0x9363,
- 0x9367, 0x9380, 0x934e, 0x9359, 0x95c7, 0x95c0, 0x95c9, 0x95c3,
- 0x95c5, 0x95b7, 0x96ae, 0x96b0, 0x96ac, 0x9720, 0x971f, 0x9718,
- 0x971d, 0x9719, 0x979a, 0x97a1, 0x979c,
- /* 0xef */
- 0x979e, 0x979d, 0x97d5, 0x97d4, 0x97f1, 0x9841, 0x9844, 0x984a,
- 0x9849, 0x9845, 0x9843, 0x9925, 0x992b, 0x992c, 0x992a, 0x9933,
- 0x9932, 0x992f, 0x992d, 0x9931, 0x9930, 0x9998, 0x99a3, 0x99a1,
- 0x9a02, 0x99fa, 0x99f4, 0x99f7, 0x99f9, 0x99f8, 0x99f6, 0x99fb,
- 0x99fd, 0x99fe, 0x99fc, 0x9a03, 0x9abe, 0x9afe, 0x9afd, 0x9b01,
- 0x9afc, 0x9b48, 0x9b9a, 0x9ba8, 0x9b9e, 0x9b9b, 0x9ba6, 0x9ba1,
- 0x9ba5, 0x9ba4, 0x9b86, 0x9ba2, 0x9ba0, 0x9baf, 0x9d33, 0x9d41,
- 0x9d67, 0x9d36, 0x9d2e, 0x9d2f, 0x9d31, 0x9d38, 0x9d30, 0x9d45,
- 0x9d42, 0x9d43, 0x9d3e, 0x9d37, 0x9d40, 0x9d3d, 0x7ff5, 0x9d2d,
- 0x9e8a, 0x9e89, 0x9e8d, 0x9eb0, 0x9ec8, 0x9eda, 0x9efb, 0x9eff,
- 0x9f24, 0x9f23, 0x9f22, 0x9f54, 0x9fa0, 0x5131, 0x512d, 0x512e,
- 0x5698, 0x569c, 0x5697, 0x569a, 0x569d, 0x5699, 0x5970, 0x5b3c,
- 0x5c69, 0x5c6a, 0x5dc0, 0x5e6d, 0x5e6e, 0x61d8, 0x61df, 0x61ed,
- 0x61ee, 0x61f1, 0x61ea, 0x61f0, 0x61eb, 0x61d6, 0x61e9, 0x64ff,
- 0x6504, 0x64fd, 0x64f8, 0x6501, 0x6503, 0x64fc, 0x6594, 0x65db,
- 0x66da, 0x66db, 0x66d8, 0x6ac5, 0x6ab9, 0x6abd, 0x6ae1, 0x6ac6,
- 0x6aba, 0x6ab6, 0x6ab7, 0x6ac7, 0x6ab4, 0x6aad, 0x6b5e, 0x6bc9,
- 0x6c0b, 0x7007, 0x700c, 0x700d, 0x7001, 0x7005, 0x7014, 0x700e,
- 0x6fff, 0x7000, 0x6ffb, 0x7026, 0x6ffc, 0x6ff7, 0x700a, 0x7201,
- 0x71ff, 0x71f9, 0x7203, 0x71fd, 0x7376,
- /* 0xf0 */
- 0x74b8, 0x74c0, 0x74b5, 0x74c1, 0x74be, 0x74b6, 0x74bb, 0x74c2,
- 0x7514, 0x7513, 0x765c, 0x7664, 0x7659, 0x7650, 0x7653, 0x7657,
- 0x765a, 0x76a6, 0x76bd, 0x76ec, 0x77c2, 0x77ba, 0x78ff, 0x790c,
- 0x7913, 0x7914, 0x7909, 0x7910, 0x7912, 0x7911, 0x79ad, 0x79ac,
- 0x7a5f, 0x7c1c, 0x7c29, 0x7c19, 0x7c20, 0x7c1f, 0x7c2d, 0x7c1d,
- 0x7c26, 0x7c28, 0x7c22, 0x7c25, 0x7c30, 0x7e5c, 0x7e50, 0x7e56,
- 0x7e63, 0x7e58, 0x7e62, 0x7e5f, 0x7e51, 0x7e60, 0x7e57, 0x7e53,
- 0x7fb5, 0x7fb3, 0x7ff7, 0x7ff8, 0x8075, 0x81d1, 0x81d2, 0x81d0,
- 0x825f, 0x825e, 0x85b4, 0x85c6, 0x85c0, 0x85c3, 0x85c2, 0x85b3,
- 0x85b5, 0x85bd, 0x85c7, 0x85c4, 0x85bf, 0x85cb, 0x85ce, 0x85c8,
- 0x85c5, 0x85b1, 0x85b6, 0x85d2, 0x8624, 0x85b8, 0x85b7, 0x85be,
- 0x8669, 0x87e7, 0x87e6, 0x87e2, 0x87db, 0x87eb, 0x87ea, 0x87e5,
- 0x87df, 0x87f3, 0x87e4, 0x87d4, 0x87dc, 0x87d3, 0x87ed, 0x87d8,
- 0x87e3, 0x87a4, 0x87d7, 0x87d9, 0x8801, 0x87f4, 0x87e8, 0x87dd,
- 0x8953, 0x894b, 0x894f, 0x894c, 0x8946, 0x8950, 0x8951, 0x8949,
- 0x8b2a, 0x8b27, 0x8b23, 0x8b33, 0x8b30, 0x8b35, 0x8b47, 0x8b2f,
- 0x8b3c, 0x8b3e, 0x8b31, 0x8b25, 0x8b37, 0x8b26, 0x8b36, 0x8b2e,
- 0x8b24, 0x8b3b, 0x8b3d, 0x8b3a, 0x8c42, 0x8c75, 0x8c99, 0x8c98,
- 0x8c97, 0x8cfe, 0x8d04, 0x8d02, 0x8d00, 0x8e5c, 0x8e62, 0x8e60,
- 0x8e57, 0x8e56, 0x8e5e, 0x8e65, 0x8e67,
- /* 0xf1 */
- 0x8e5b, 0x8e5a, 0x8e61, 0x8e5d, 0x8e69, 0x8e54, 0x8f46, 0x8f47,
- 0x8f48, 0x8f4b, 0x9128, 0x913a, 0x913b, 0x913e, 0x91a8, 0x91a5,
- 0x91a7, 0x91af, 0x91aa, 0x93b5, 0x938c, 0x9392, 0x93b7, 0x939b,
- 0x939d, 0x9389, 0x93a7, 0x938e, 0x93aa, 0x939e, 0x93a6, 0x9395,
- 0x9388, 0x9399, 0x939f, 0x938d, 0x93b1, 0x9391, 0x93b2, 0x93a4,
- 0x93a8, 0x93b4, 0x93a3, 0x93a5, 0x95d2, 0x95d3, 0x95d1, 0x96b3,
- 0x96d7, 0x96da, 0x5dc2, 0x96df, 0x96d8, 0x96dd, 0x9723, 0x9722,
- 0x9725, 0x97ac, 0x97ae, 0x97a8, 0x97ab, 0x97a4, 0x97aa, 0x97a2,
- 0x97a5, 0x97d7, 0x97d9, 0x97d6, 0x97d8, 0x97fa, 0x9850, 0x9851,
- 0x9852, 0x98b8, 0x9941, 0x993c, 0x993a, 0x9a0f, 0x9a0b, 0x9a09,
- 0x9a0d, 0x9a04, 0x9a11, 0x9a0a, 0x9a05, 0x9a07, 0x9a06, 0x9ac0,
- 0x9adc, 0x9b08, 0x9b04, 0x9b05, 0x9b29, 0x9b35, 0x9b4a, 0x9b4c,
- 0x9b4b, 0x9bc7, 0x9bc6, 0x9bc3, 0x9bbf, 0x9bc1, 0x9bb5, 0x9bb8,
- 0x9bd3, 0x9bb6, 0x9bc4, 0x9bb9, 0x9bbd, 0x9d5c, 0x9d53, 0x9d4f,
- 0x9d4a, 0x9d5b, 0x9d4b, 0x9d59, 0x9d56, 0x9d4c, 0x9d57, 0x9d52,
- 0x9d54, 0x9d5f, 0x9d58, 0x9d5a, 0x9e8e, 0x9e8c, 0x9edf, 0x9f01,
- 0x9f00, 0x9f16, 0x9f25, 0x9f2b, 0x9f2a, 0x9f29, 0x9f28, 0x9f4c,
- 0x9f55, 0x5134, 0x5135, 0x5296, 0x52f7, 0x53b4, 0x56ab, 0x56ad,
- 0x56a6, 0x56a7, 0x56aa, 0x56ac, 0x58da, 0x58dd, 0x58db, 0x5912,
- 0x5b3d, 0x5b3e, 0x5b3f, 0x5dc3, 0x5e70,
- /* 0xf2 */
- 0x5fbf, 0x61fb, 0x6507, 0x6510, 0x650d, 0x6509, 0x650c, 0x650e,
- 0x6584, 0x65de, 0x65dd, 0x66de, 0x6ae7, 0x6ae0, 0x6acc, 0x6ad1,
- 0x6ad9, 0x6acb, 0x6adf, 0x6adc, 0x6ad0, 0x6aeb, 0x6acf, 0x6acd,
- 0x6ade, 0x6b60, 0x6bb0, 0x6c0c, 0x7019, 0x7027, 0x7020, 0x7016,
- 0x702b, 0x7021, 0x7022, 0x7023, 0x7029, 0x7017, 0x7024, 0x701c,
- 0x702a, 0x720c, 0x720a, 0x7207, 0x7202, 0x7205, 0x72a5, 0x72a6,
- 0x72a4, 0x72a3, 0x72a1, 0x74cb, 0x74c5, 0x74b7, 0x74c3, 0x7516,
- 0x7660, 0x77c9, 0x77ca, 0x77c4, 0x77f1, 0x791d, 0x791b, 0x7921,
- 0x791c, 0x7917, 0x791e, 0x79b0, 0x7a67, 0x7a68, 0x7c33, 0x7c3c,
- 0x7c39, 0x7c2c, 0x7c3b, 0x7cec, 0x7cea, 0x7e76, 0x7e75, 0x7e78,
- 0x7e70, 0x7e77, 0x7e6f, 0x7e7a, 0x7e72, 0x7e74, 0x7e68, 0x7f4b,
- 0x7f4a, 0x7f83, 0x7f86, 0x7fb7, 0x7ffd, 0x7ffe, 0x8078, 0x81d7,
- 0x81d5, 0x8264, 0x8261, 0x8263, 0x85eb, 0x85f1, 0x85ed, 0x85d9,
- 0x85e1, 0x85e8, 0x85da, 0x85d7, 0x85ec, 0x85f2, 0x85f8, 0x85d8,
- 0x85df, 0x85e3, 0x85dc, 0x85d1, 0x85f0, 0x85e6, 0x85ef, 0x85de,
- 0x85e2, 0x8800, 0x87fa, 0x8803, 0x87f6, 0x87f7, 0x8809, 0x880c,
- 0x880b, 0x8806, 0x87fc, 0x8808, 0x87ff, 0x880a, 0x8802, 0x8962,
- 0x895a, 0x895b, 0x8957, 0x8961, 0x895c, 0x8958, 0x895d, 0x8959,
- 0x8988, 0x89b7, 0x89b6, 0x89f6, 0x8b50, 0x8b48, 0x8b4a, 0x8b40,
- 0x8b53, 0x8b56, 0x8b54, 0x8b4b, 0x8b55,
- /* 0xf3 */
- 0x8b51, 0x8b42, 0x8b52, 0x8b57, 0x8c43, 0x8c77, 0x8c76, 0x8c9a,
- 0x8d06, 0x8d07, 0x8d09, 0x8dac, 0x8daa, 0x8dad, 0x8dab, 0x8e6d,
- 0x8e78, 0x8e73, 0x8e6a, 0x8e6f, 0x8e7b, 0x8ec2, 0x8f52, 0x8f51,
- 0x8f4f, 0x8f50, 0x8f53, 0x8fb4, 0x9140, 0x913f, 0x91b0, 0x91ad,
- 0x93de, 0x93c7, 0x93cf, 0x93c2, 0x93da, 0x93d0, 0x93f9, 0x93ec,
- 0x93cc, 0x93d9, 0x93a9, 0x93e6, 0x93ca, 0x93d4, 0x93ee, 0x93e3,
- 0x93d5, 0x93c4, 0x93ce, 0x93c0, 0x93d2, 0x93e7, 0x957d, 0x95da,
- 0x95db, 0x96e1, 0x9729, 0x972b, 0x972c, 0x9728, 0x9726, 0x97b3,
- 0x97b7, 0x97b6, 0x97dd, 0x97de, 0x97df, 0x985c, 0x9859, 0x985d,
- 0x9857, 0x98bf, 0x98bd, 0x98bb, 0x98be, 0x9948, 0x9947, 0x9943,
- 0x99a6, 0x99a7, 0x9a1a, 0x9a15, 0x9a25, 0x9a1d, 0x9a24, 0x9a1b,
- 0x9a22, 0x9a20, 0x9a27, 0x9a23, 0x9a1e, 0x9a1c, 0x9a14, 0x9ac2,
- 0x9b0b, 0x9b0a, 0x9b0e, 0x9b0c, 0x9b37, 0x9bea, 0x9beb, 0x9be0,
- 0x9bde, 0x9be4, 0x9be6, 0x9be2, 0x9bf0, 0x9bd4, 0x9bd7, 0x9bec,
- 0x9bdc, 0x9bd9, 0x9be5, 0x9bd5, 0x9be1, 0x9bda, 0x9d77, 0x9d81,
- 0x9d8a, 0x9d84, 0x9d88, 0x9d71, 0x9d80, 0x9d78, 0x9d86, 0x9d8b,
- 0x9d8c, 0x9d7d, 0x9d6b, 0x9d74, 0x9d75, 0x9d70, 0x9d69, 0x9d85,
- 0x9d73, 0x9d7b, 0x9d82, 0x9d6f, 0x9d79, 0x9d7f, 0x9d87, 0x9d68,
- 0x9e94, 0x9e91, 0x9ec0, 0x9efc, 0x9f2d, 0x9f40, 0x9f41, 0x9f4d,
- 0x9f56, 0x9f57, 0x9f58, 0x5337, 0x56b2,
- /* 0xf4 */
- 0x56b5, 0x56b3, 0x58e3, 0x5b45, 0x5dc6, 0x5dc7, 0x5eee, 0x5eef,
- 0x5fc0, 0x5fc1, 0x61f9, 0x6517, 0x6516, 0x6515, 0x6513, 0x65df,
- 0x66e8, 0x66e3, 0x66e4, 0x6af3, 0x6af0, 0x6aea, 0x6ae8, 0x6af9,
- 0x6af1, 0x6aee, 0x6aef, 0x703c, 0x7035, 0x702f, 0x7037, 0x7034,
- 0x7031, 0x7042, 0x7038, 0x703f, 0x703a, 0x7039, 0x7040, 0x703b,
- 0x7033, 0x7041, 0x7213, 0x7214, 0x72a8, 0x737d, 0x737c, 0x74ba,
- 0x76ab, 0x76aa, 0x76be, 0x76ed, 0x77cc, 0x77ce, 0x77cf, 0x77cd,
- 0x77f2, 0x7925, 0x7923, 0x7927, 0x7928, 0x7924, 0x7929, 0x79b2,
- 0x7a6e, 0x7a6c, 0x7a6d, 0x7af7, 0x7c49, 0x7c48, 0x7c4a, 0x7c47,
- 0x7c45, 0x7cee, 0x7e7b, 0x7e7e, 0x7e81, 0x7e80, 0x7fba, 0x7fff,
- 0x8079, 0x81db, 0x81d9, 0x820b, 0x8268, 0x8269, 0x8622, 0x85ff,
- 0x8601, 0x85fe, 0x861b, 0x8600, 0x85f6, 0x8604, 0x8609, 0x8605,
- 0x860c, 0x85fd, 0x8819, 0x8810, 0x8811, 0x8817, 0x8813, 0x8816,
- 0x8963, 0x8966, 0x89b9, 0x89f7, 0x8b60, 0x8b6a, 0x8b5d, 0x8b68,
- 0x8b63, 0x8b65, 0x8b67, 0x8b6d, 0x8dae, 0x8e86, 0x8e88, 0x8e84,
- 0x8f59, 0x8f56, 0x8f57, 0x8f55, 0x8f58, 0x8f5a, 0x908d, 0x9143,
- 0x9141, 0x91b7, 0x91b5, 0x91b2, 0x91b3, 0x940b, 0x9413, 0x93fb,
- 0x9420, 0x940f, 0x9414, 0x93fe, 0x9415, 0x9410, 0x9428, 0x9419,
- 0x940d, 0x93f5, 0x9400, 0x93f7, 0x9407, 0x940e, 0x9416, 0x9412,
- 0x93fa, 0x9409, 0x93f8, 0x940a, 0x93ff,
- /* 0xf5 */
- 0x93fc, 0x940c, 0x93f6, 0x9411, 0x9406, 0x95de, 0x95e0, 0x95df,
- 0x972e, 0x972f, 0x97b9, 0x97bb, 0x97fd, 0x97fe, 0x9860, 0x9862,
- 0x9863, 0x985f, 0x98c1, 0x98c2, 0x9950, 0x994e, 0x9959, 0x994c,
- 0x994b, 0x9953, 0x9a32, 0x9a34, 0x9a31, 0x9a2c, 0x9a2a, 0x9a36,
- 0x9a29, 0x9a2e, 0x9a38, 0x9a2d, 0x9ac7, 0x9aca, 0x9ac6, 0x9b10,
- 0x9b12, 0x9b11, 0x9c0b, 0x9c08, 0x9bf7, 0x9c05, 0x9c12, 0x9bf8,
- 0x9c40, 0x9c07, 0x9c0e, 0x9c06, 0x9c17, 0x9c14, 0x9c09, 0x9d9f,
- 0x9d99, 0x9da4, 0x9d9d, 0x9d92, 0x9d98, 0x9d90, 0x9d9b, 0x9da0,
- 0x9d94, 0x9d9c, 0x9daa, 0x9d97, 0x9da1, 0x9d9a, 0x9da2, 0x9da8,
- 0x9d9e, 0x9da3, 0x9dbf, 0x9da9, 0x9d96, 0x9da6, 0x9da7, 0x9e99,
- 0x9e9b, 0x9e9a, 0x9ee5, 0x9ee4, 0x9ee7, 0x9ee6, 0x9f30, 0x9f2e,
- 0x9f5b, 0x9f60, 0x9f5e, 0x9f5d, 0x9f59, 0x9f91, 0x513a, 0x5139,
- 0x5298, 0x5297, 0x56c3, 0x56bd, 0x56be, 0x5b48, 0x5b47, 0x5dcb,
- 0x5dcf, 0x5ef1, 0x61fd, 0x651b, 0x6b02, 0x6afc, 0x6b03, 0x6af8,
- 0x6b00, 0x7043, 0x7044, 0x704a, 0x7048, 0x7049, 0x7045, 0x7046,
- 0x721d, 0x721a, 0x7219, 0x737e, 0x7517, 0x766a, 0x77d0, 0x792d,
- 0x7931, 0x792f, 0x7c54, 0x7c53, 0x7cf2, 0x7e8a, 0x7e87, 0x7e88,
- 0x7e8b, 0x7e86, 0x7e8d, 0x7f4d, 0x7fbb, 0x8030, 0x81dd, 0x8618,
- 0x862a, 0x8626, 0x861f, 0x8623, 0x861c, 0x8619, 0x8627, 0x862e,
- 0x8621, 0x8620, 0x8629, 0x861e, 0x8625,
- /* 0xf6 */
- 0x8829, 0x881d, 0x881b, 0x8820, 0x8824, 0x881c, 0x882b, 0x884a,
- 0x896d, 0x8969, 0x896e, 0x896b, 0x89fa, 0x8b79, 0x8b78, 0x8b45,
- 0x8b7a, 0x8b7b, 0x8d10, 0x8d14, 0x8daf, 0x8e8e, 0x8e8c, 0x8f5e,
- 0x8f5b, 0x8f5d, 0x9146, 0x9144, 0x9145, 0x91b9, 0x943f, 0x943b,
- 0x9436, 0x9429, 0x943d, 0x943c, 0x9430, 0x9439, 0x942a, 0x9437,
- 0x942c, 0x9440, 0x9431, 0x95e5, 0x95e4, 0x95e3, 0x9735, 0x973a,
- 0x97bf, 0x97e1, 0x9864, 0x98c9, 0x98c6, 0x98c0, 0x9958, 0x9956,
- 0x9a39, 0x9a3d, 0x9a46, 0x9a44, 0x9a42, 0x9a41, 0x9a3a, 0x9a3f,
- 0x9acd, 0x9b15, 0x9b17, 0x9b18, 0x9b16, 0x9b3a, 0x9b52, 0x9c2b,
- 0x9c1d, 0x9c1c, 0x9c2c, 0x9c23, 0x9c28, 0x9c29, 0x9c24, 0x9c21,
- 0x9db7, 0x9db6, 0x9dbc, 0x9dc1, 0x9dc7, 0x9dca, 0x9dcf, 0x9dbe,
- 0x9dc5, 0x9dc3, 0x9dbb, 0x9db5, 0x9dce, 0x9db9, 0x9dba, 0x9dac,
- 0x9dc8, 0x9db1, 0x9dad, 0x9dcc, 0x9db3, 0x9dcd, 0x9db2, 0x9e7a,
- 0x9e9c, 0x9eeb, 0x9eee, 0x9eed, 0x9f1b, 0x9f18, 0x9f1a, 0x9f31,
- 0x9f4e, 0x9f65, 0x9f64, 0x9f92, 0x4eb9, 0x56c6, 0x56c5, 0x56cb,
- 0x5971, 0x5b4b, 0x5b4c, 0x5dd5, 0x5dd1, 0x5ef2, 0x6521, 0x6520,
- 0x6526, 0x6522, 0x6b0b, 0x6b08, 0x6b09, 0x6c0d, 0x7055, 0x7056,
- 0x7057, 0x7052, 0x721e, 0x721f, 0x72a9, 0x737f, 0x74d8, 0x74d5,
- 0x74d9, 0x74d7, 0x766d, 0x76ad, 0x7935, 0x79b4, 0x7a70, 0x7a71,
- 0x7c57, 0x7c5c, 0x7c59, 0x7c5b, 0x7c5a,
- /* 0xf7 */
- 0x7cf4, 0x7cf1, 0x7e91, 0x7f4f, 0x7f87, 0x81de, 0x826b, 0x8634,
- 0x8635, 0x8633, 0x862c, 0x8632, 0x8636, 0x882c, 0x8828, 0x8826,
- 0x882a, 0x8825, 0x8971, 0x89bf, 0x89be, 0x89fb, 0x8b7e, 0x8b84,
- 0x8b82, 0x8b86, 0x8b85, 0x8b7f, 0x8d15, 0x8e95, 0x8e94, 0x8e9a,
- 0x8e92, 0x8e90, 0x8e96, 0x8e97, 0x8f60, 0x8f62, 0x9147, 0x944c,
- 0x9450, 0x944a, 0x944b, 0x944f, 0x9447, 0x9445, 0x9448, 0x9449,
- 0x9446, 0x973f, 0x97e3, 0x986a, 0x9869, 0x98cb, 0x9954, 0x995b,
- 0x9a4e, 0x9a53, 0x9a54, 0x9a4c, 0x9a4f, 0x9a48, 0x9a4a, 0x9a49,
- 0x9a52, 0x9a50, 0x9ad0, 0x9b19, 0x9b2b, 0x9b3b, 0x9b56, 0x9b55,
- 0x9c46, 0x9c48, 0x9c3f, 0x9c44, 0x9c39, 0x9c33, 0x9c41, 0x9c3c,
- 0x9c37, 0x9c34, 0x9c32, 0x9c3d, 0x9c36, 0x9ddb, 0x9dd2, 0x9dde,
- 0x9dda, 0x9dcb, 0x9dd0, 0x9ddc, 0x9dd1, 0x9ddf, 0x9de9, 0x9dd9,
- 0x9dd8, 0x9dd6, 0x9df5, 0x9dd5, 0x9ddd, 0x9eb6, 0x9ef0, 0x9f35,
- 0x9f33, 0x9f32, 0x9f42, 0x9f6b, 0x9f95, 0x9fa2, 0x513d, 0x5299,
- 0x58e8, 0x58e7, 0x5972, 0x5b4d, 0x5dd8, 0x882f, 0x5f4f, 0x6201,
- 0x6203, 0x6204, 0x6529, 0x6525, 0x6596, 0x66eb, 0x6b11, 0x6b12,
- 0x6b0f, 0x6bca, 0x705b, 0x705a, 0x7222, 0x7382, 0x7381, 0x7383,
- 0x7670, 0x77d4, 0x7c67, 0x7c66, 0x7e95, 0x826c, 0x863a, 0x8640,
- 0x8639, 0x863c, 0x8631, 0x863b, 0x863e, 0x8830, 0x8832, 0x882e,
- 0x8833, 0x8976, 0x8974, 0x8973, 0x89fe,
- /* 0xf8 */
- 0x8b8c, 0x8b8e, 0x8b8b, 0x8b88, 0x8c45, 0x8d19, 0x8e98, 0x8f64,
- 0x8f63, 0x91bc, 0x9462, 0x9455, 0x945d, 0x9457, 0x945e, 0x97c4,
- 0x97c5, 0x9800, 0x9a56, 0x9a59, 0x9b1e, 0x9b1f, 0x9b20, 0x9c52,
- 0x9c58, 0x9c50, 0x9c4a, 0x9c4d, 0x9c4b, 0x9c55, 0x9c59, 0x9c4c,
- 0x9c4e, 0x9dfb, 0x9df7, 0x9def, 0x9de3, 0x9deb, 0x9df8, 0x9de4,
- 0x9df6, 0x9de1, 0x9dee, 0x9de6, 0x9df2, 0x9df0, 0x9de2, 0x9dec,
- 0x9df4, 0x9df3, 0x9de8, 0x9ded, 0x9ec2, 0x9ed0, 0x9ef2, 0x9ef3,
- 0x9f06, 0x9f1c, 0x9f38, 0x9f37, 0x9f36, 0x9f43, 0x9f4f, 0x9f71,
- 0x9f70, 0x9f6e, 0x9f6f, 0x56d3, 0x56cd, 0x5b4e, 0x5c6d, 0x652d,
- 0x66ed, 0x66ee, 0x6b13, 0x705f, 0x7061, 0x705d, 0x7060, 0x7223,
- 0x74db, 0x74e5, 0x77d5, 0x7938, 0x79b7, 0x79b6, 0x7c6a, 0x7e97,
- 0x7f89, 0x826d, 0x8643, 0x8838, 0x8837, 0x8835, 0x884b, 0x8b94,
- 0x8b95, 0x8e9e, 0x8e9f, 0x8ea0, 0x8e9d, 0x91be, 0x91bd, 0x91c2,
- 0x946b, 0x9468, 0x9469, 0x96e5, 0x9746, 0x9743, 0x9747, 0x97c7,
- 0x97e5, 0x9a5e, 0x9ad5, 0x9b59, 0x9c63, 0x9c67, 0x9c66, 0x9c62,
- 0x9c5e, 0x9c60, 0x9e02, 0x9dfe, 0x9e07, 0x9e03, 0x9e06, 0x9e05,
- 0x9e00, 0x9e01, 0x9e09, 0x9dff, 0x9dfd, 0x9e04, 0x9ea0, 0x9f1e,
- 0x9f46, 0x9f74, 0x9f75, 0x9f76, 0x56d4, 0x652e, 0x65b8, 0x6b18,
- 0x6b19, 0x6b17, 0x6b1a, 0x7062, 0x7226, 0x72aa, 0x77d8, 0x77d9,
- 0x7939, 0x7c69, 0x7c6b, 0x7cf6, 0x7e9a,
- /* 0xf9 */
- 0x7e98, 0x7e9b, 0x7e99, 0x81e0, 0x81e1, 0x8646, 0x8647, 0x8648,
- 0x8979, 0x897a, 0x897c, 0x897b, 0x89ff, 0x8b98, 0x8b99, 0x8ea5,
- 0x8ea4, 0x8ea3, 0x946e, 0x946d, 0x946f, 0x9471, 0x9473, 0x9749,
- 0x9872, 0x995f, 0x9c68, 0x9c6e, 0x9c6d, 0x9e0b, 0x9e0d, 0x9e10,
- 0x9e0f, 0x9e12, 0x9e11, 0x9ea1, 0x9ef5, 0x9f09, 0x9f47, 0x9f78,
- 0x9f7b, 0x9f7a, 0x9f79, 0x571e, 0x7066, 0x7c6f, 0x883c, 0x8db2,
- 0x8ea6, 0x91c3, 0x9474, 0x9478, 0x9476, 0x9475, 0x9a60, 0x9c74,
- 0x9c73, 0x9c71, 0x9c75, 0x9e14, 0x9e13, 0x9ef6, 0x9f0a, 0x9fa4,
- 0x7068, 0x7065, 0x7cf7, 0x866a, 0x883e, 0x883d, 0x883f, 0x8b9e,
- 0x8c9c, 0x8ea9, 0x8ec9, 0x974b, 0x9873, 0x9874, 0x98cc, 0x9961,
- 0x99ab, 0x9a64, 0x9a66, 0x9a67, 0x9b24, 0x9e15, 0x9e17, 0x9f48,
- 0x6207, 0x6b1e, 0x7227, 0x864c, 0x8ea8, 0x9482, 0x9480, 0x9481,
- 0x9a69, 0x9a68, 0x9b2e, 0x9e19, 0x7229, 0x864b, 0x8b9f, 0x9483,
- 0x9c79, 0x9eb7, 0x7675, 0x9a6b, 0x9c7a, 0x9e1d, 0x7069, 0x706a,
- 0x9ea4, 0x9f7e, 0x9f49, 0x9f98, 0x7881, 0x92b9, 0x88cf, 0x58bb,
- 0x6052, 0x7ca7, 0x5afa, 0x2554, 0x2566, 0x2557, 0x2560, 0x256c,
- 0x2563, 0x255a, 0x2569, 0x255d, 0x2552, 0x2564, 0x2555, 0x255e,
- 0x256a, 0x2561, 0x2558, 0x2567, 0x255b, 0x2553, 0x2565, 0x2556,
- 0x255f, 0x256b, 0x2562, 0x2559, 0x2568, 0x255c, 0x2551, 0x2550,
- 0x256d, 0x256e, 0x2570, 0x256f, 0xffed,
- /* 0xfa */
- 0xe000, 0x92db, 0xe002, 0xe003, 0x854c, 0x42b5, 0x73ef, 0x51b5,
- 0x3649, 0xe009, 0xe00a, 0x9344, 0xe00c, 0x82ee, 0xe00e, 0x783c,
- 0x6744, 0x62df, 0xe012, 0xe013, 0xe014, 0xe015, 0xe016, 0x4fab,
- 0xe018, 0x5008, 0xe01a, 0xe01b, 0xe01c, 0xe01d, 0xe01e, 0x5029,
- 0xe020, 0x5fa4, 0xe022, 0xe023, 0x6edb, 0xe025, 0x507d, 0x5101,
- 0x347a, 0x510e, 0x986c, 0x3743, 0x8416, 0xe02d, 0xe02e, 0x5160,
- 0xe030, 0x516a, 0xe032, 0xe033, 0xe034, 0xe035, 0xe036, 0xe037,
- 0xe038, 0x5b82, 0x877d, 0xe03b, 0xe03c, 0x51b2, 0x51b8, 0x9d34,
- 0x51c9, 0x51cf, 0x51d1, 0x3cdc, 0x51d3, 0xe045, 0x51b3, 0x51e2,
- 0x5342, 0x51ed, 0x83cd, 0x693e, 0xe04c, 0x5f7b, 0x520b, 0x5226,
- 0x523c, 0x52b5, 0x5257, 0x5294, 0x52b9, 0x52c5, 0x7c15, 0x8542,
- 0x52e0, 0x860d, 0xe05a, 0x5305, 0xe05c, 0x5549, 0x6ed9, 0xe05f,
- 0xe060, 0xe061, 0x5333, 0x5344, 0xe064, 0x6ccb, 0xe066, 0x681b,
- 0x73d5, 0x604a, 0x3eaa, 0x38cc, 0xe06c, 0x71dd, 0x44a2, 0x536d,
- 0x5374, 0xe071, 0x537e, 0x537f, 0xe074, 0xe075, 0x77e6, 0x5393,
- 0xe078, 0x53a0, 0x53ab, 0x53ae, 0x73a7, 0xe07d, 0x3f59, 0x739c,
- 0x53c1, 0x53c5, 0x6c49, 0x4e49, 0x57fe, 0x53d9, 0x3aab, 0xe087,
- 0x53e0, 0xe089, 0xe08a, 0x53f6, 0xe08c, 0x5413, 0x7079, 0x552b,
- 0x6657, 0x6d5b, 0x546d, 0xe093, 0xe094, 0x555d, 0x548f, 0x54a4,
- 0x47a6, 0xe099, 0xe09a, 0x3db4, 0xe09c,
- /* 0xfb */
- 0xe09d, 0xe09e, 0x5547, 0x4ced, 0x542f, 0x7417, 0x5586, 0x55a9,
- 0x5605, 0xe0a6, 0xe0a7, 0x4552, 0xe0a9, 0x66b3, 0xe0ab, 0x5637,
- 0x66cd, 0xe0ae, 0x66a4, 0x66ad, 0x564d, 0x564f, 0x78f1, 0x56f1,
- 0x9787, 0x53fe, 0x5700, 0x56ef, 0x56ed, 0xe0ba, 0x3623, 0xe0bc,
- 0x5746, 0xe0be, 0x6c6e, 0x708b, 0x5742, 0x36b1, 0xe0c3, 0x57e6,
- 0xe0c5, 0x5803, 0xe0c7, 0xe0c8, 0x5826, 0xe0ca, 0x585c, 0x58aa,
- 0x3561, 0x58e0, 0x58dc, 0xe0d0, 0x58fb, 0x5bff, 0x5743, 0xe0d4,
- 0xe0d5, 0x93d3, 0x35a1, 0x591f, 0x68a6, 0x36c3, 0x6e59, 0xe0dc,
- 0x5a24, 0x5553, 0xe0df, 0x8505, 0x59c9, 0xe0e2, 0xe0e3, 0xe0e4,
- 0xe0e5, 0x59d9, 0xe0e7, 0xe0e8, 0xe0e9, 0x6d71, 0xe0eb, 0xe0ec,
- 0x59f9, 0xe0ee, 0x5aab, 0x5a63, 0x36e6, 0xe0f2, 0x5a77, 0x3708,
- 0x5a96, 0x7465, 0x5ad3, 0xe0f8, 0xe0f9, 0x3d85, 0xe0fb, 0x3732,
- 0xe0fd, 0x5e83, 0x52d0, 0x5b76, 0x6588, 0x5b7c, 0xe103, 0x4004,
- 0x485d, 0xe106, 0x5bd5, 0x6160, 0xe109, 0xe10a, 0xe10b, 0x5bf3,
- 0x5b9d, 0x4d10, 0x5c05, 0xe110, 0x5c13, 0x73ce, 0x5c14, 0xe114,
- 0xe115, 0x5c49, 0x48dd, 0x5c85, 0x5ce9, 0x5cef, 0x5d8b, 0xe11c,
- 0xe11d, 0x5d10, 0x5d18, 0x5d46, 0xe121, 0x5cba, 0x5dd7, 0x82fc,
- 0x382d, 0xe126, 0xe127, 0xe128, 0x8287, 0x3836, 0x3bc2, 0x5e2e,
- 0x6a8a, 0x5e75, 0x5e7a, 0xe130, 0xe131, 0x53a6, 0x4eb7, 0x5ed0,
- 0x53a8, 0xe136, 0x5e09, 0x5ef4, 0xe139,
- /* 0xfc */
- 0x5ef9, 0x5efb, 0x38a0, 0x5efc, 0x683e, 0x941b, 0x5f0d, 0xe141,
- 0xe142, 0x3ade, 0x48ae, 0xe145, 0x5f3a, 0xe147, 0xe148, 0x5f58,
- 0xe14a, 0x5f63, 0x97bd, 0xe14d, 0x5f72, 0x9340, 0xe150, 0x5fa7,
- 0x5db6, 0x3d5f, 0xe154, 0xe155, 0xe156, 0xe157, 0x91d6, 0xe159,
- 0xe15a, 0x6031, 0x6685, 0xe15d, 0x3963, 0x3dc7, 0x3639, 0x5790,
- 0xe162, 0x7971, 0x3e40, 0x609e, 0x60a4, 0x60b3, 0xe168, 0xe169,
- 0xe16a, 0x74a4, 0x50e1, 0x5aa0, 0x6164, 0x8424, 0x6142, 0xe171,
- 0xe172, 0x6181, 0x51f4, 0xe175, 0x6187, 0x5baa, 0xe178, 0xe179,
- 0x61d3, 0xe17b, 0xe17c, 0x61d0, 0x3932, 0xe17f, 0xe180, 0x6023,
- 0x615c, 0x651e, 0x638b, 0xe185, 0x62c5, 0xe187, 0x62d5, 0xe189,
- 0x636c, 0xe18b, 0x3a17, 0x6438, 0x63f8, 0xe18f, 0xe190, 0x6490,
- 0x6f8a, 0xe193, 0x9814, 0xe195, 0xe196, 0x64e1, 0x64e5, 0x947b,
- 0x3a66, 0x643a, 0x3a57, 0x654d, 0x6f16, 0xe19f, 0xe1a0, 0x6585,
- 0x656d, 0x655f, 0xe1a4, 0x65b5, 0xe1a6, 0x4b37, 0x65d1, 0x40d8,
- 0xe1aa, 0x65e0, 0x65e3, 0x5fdf, 0xe1ae, 0x6618, 0xe1b0, 0xe1b1,
- 0x6644, 0xe1b3, 0xe1b4, 0x664b, 0xe1b6, 0x6667, 0xe1b8, 0x6673,
- 0x6674, 0xe1bb, 0xe1bc, 0xe1bd, 0xe1be, 0xe1bf, 0x77c5, 0xe1c1,
- 0x99a4, 0x6702, 0xe1c4, 0xe1c5, 0x3b2b, 0x69fa, 0xe1c8, 0x675e,
- 0x6767, 0x6762, 0xe1cc, 0xe1cd, 0x67d7, 0x44e9, 0x6822, 0x6e50,
- 0x923c, 0x6801, 0xe1d4, 0xe1d5, 0x685d,
- /* 0xfd */
- 0xe1d7, 0x69e1, 0x6a0b, 0xe1da, 0x6973, 0x68c3, 0xe1dd, 0x6901,
- 0x6900, 0x3d32, 0x3a01, 0xe1e2, 0x3b80, 0x67ac, 0x6961, 0xe1e6,
- 0x42fc, 0x6936, 0x6998, 0x3ba1, 0xe1eb, 0x8363, 0x5090, 0x69f9,
- 0xe1ef, 0xe1f0, 0x6a45, 0xe1f2, 0x6a9d, 0x3bf3, 0x67b1, 0x6ac8,
- 0xe1f7, 0x3c0d, 0x6b1d, 0xe1fa, 0x60de, 0x6b35, 0x6b74, 0xe1fe,
- 0x6eb5, 0xe200, 0xe201, 0xe202, 0x3740, 0x5421, 0xe205, 0x6be1,
- 0xe207, 0x6bdc, 0x6c37, 0xe20a, 0xe20b, 0xe20c, 0x6c5a, 0x8226,
- 0x6c79, 0xe210, 0x44c5, 0xe212, 0xe213, 0xe214, 0xe215, 0xe216,
- 0x36e5, 0x3ceb, 0xe219, 0x9b83, 0xe21b, 0xe21c, 0x7f8f, 0x6837,
- 0xe21f, 0xe220, 0xe221, 0x6d96, 0x6d5c, 0x6e7c, 0x6f04, 0xe226,
- 0xe227, 0xe228, 0x8533, 0xe22a, 0x51c7, 0x6c9c, 0x6e1d, 0x842e,
- 0xe22f, 0x6e2f, 0xe231, 0x7453, 0xe233, 0x79cc, 0x6e4f, 0x5a91,
- 0xe237, 0x6ff8, 0x370d, 0x6f9d, 0xe23b, 0x6efa, 0xe23d, 0xe23e,
- 0x4555, 0x93f0, 0x6f44, 0x6f5c, 0x3d4e, 0x6f74, 0xe245, 0x3d3b,
- 0x6f9f, 0xe248, 0x6fd3, 0xe24a, 0xe24b, 0xe24c, 0xe24d, 0xe24e,
- 0xe24f, 0x51df, 0xe251, 0xe252, 0xe253, 0xe254, 0x704b, 0x707e,
- 0x70a7, 0x7081, 0x70cc, 0x70d5, 0x70d6, 0x70df, 0x4104, 0x3de8,
- 0x71b4, 0x7196, 0xe261, 0x712b, 0x7145, 0x5a88, 0x714a, 0x716e,
- 0x5c9c, 0xe268, 0x714f, 0x9362, 0xe26b, 0x712c, 0xe26d, 0xe26e,
- 0xe26f, 0x71ba, 0xe271, 0x70bd, 0x720e,
- /* 0xfe */
- 0x9442, 0x7215, 0x5911, 0x9443, 0x7224, 0x9341, 0xe27a, 0x722e,
- 0x7240, 0xe27d, 0x68bd, 0x7255, 0x7257, 0x3e55, 0xe282, 0x680d,
- 0x6f3d, 0x7282, 0x732a, 0x732b, 0xe288, 0xe289, 0x48ed, 0xe28b,
- 0x7328, 0x732e, 0x73cf, 0x73aa, 0xe290, 0xe291, 0x73c9, 0x7449,
- 0xe294, 0xe295, 0xe296, 0x6623, 0x36c5, 0xe299, 0xe29a, 0xe29b,
- 0x73f7, 0x7415, 0x6903, 0xe29f, 0x7439, 0xe2a1, 0x3ed7, 0x745c,
- 0xe2a4, 0x7460, 0xe2a6, 0x7447, 0x73e4, 0x7476, 0x83b9, 0x746c,
- 0x3730, 0x7474, 0x93f1, 0x6a2c, 0x7482, 0x4953, 0xe2b2, 0xe2b3,
- 0xe2b4, 0xe2b5, 0x5b46, 0xe2b7, 0xe2b8, 0x74c8, 0xe2ba, 0x750e,
- 0x74e9, 0x751e, 0xe2be, 0xe2bf, 0x5bd7, 0xe2c1, 0x9385, 0x754d,
- 0x754a, 0x7567, 0x756e, 0xe2c7, 0x3f04, 0xe2c9, 0x758e, 0x745d,
- 0x759e, 0x75b4, 0x7602, 0x762c, 0x7651, 0x764f, 0x766f, 0x7676,
- 0xe2d4, 0x7690, 0x81ef, 0x37f8, 0xe2d8, 0xe2d9, 0x76a1, 0x76a5,
- 0x76b7, 0x76cc, 0xe2de, 0x8462, 0xe2e0, 0xe2e1, 0xe2e2, 0x771e,
- 0x7726, 0x7740, 0x64af, 0xe2e7, 0x7758, 0xe2e9, 0x77af, 0xe2eb,
- 0xe2ec, 0xe2ed, 0x77f4, 0x7809, 0xe2f0, 0xe2f1, 0x68ca, 0x78af,
- 0x78c7, 0x78d3, 0x96a5, 0x792e, 0xe2f8, 0x78d7, 0x7934, 0x78b1,
- 0xe2fc, 0x8fb8, 0x8884, 0xe2ff, 0xe300, 0xe301, 0x7986, 0x8900,
- 0x6902, 0x7980, 0xe306, 0x799d, 0xe308, 0x793c, 0x79a9, 0x6e2a,
- 0xe30c, 0x3ea8, 0x79c6, 0xe30f, 0x79d4,
-};
-
-static int
-big5hkscs_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n)
-{
- unsigned char c1 = s[0];
- if ((c1 >= 0x81 && c1 <= 0xfe)) {
- if (n >= 2) {
- unsigned char c2 = s[1];
- if ((c2 >= 0x40 && c2 < 0x7f) || (c2 >= 0xa1 && c2 < 0xff)) {
- unsigned int i = 157 * (c1 - 0x81) + (c2 - (c2 >= 0xa1 ? 0x62 : 0x40));
- unsigned short wc = 0xfffd;
- {
- if (i < 19782)
- wc = big5hkscs_2uni_page81[i];
- }
- if (wc != 0xfffd) {
- *pwc = (ucs4_t) wc;
- return 2;
- }
- }
- return RET_ILSEQ;
- }
- return RET_TOOFEW(0);
- }
- return RET_ILSEQ;
-}
-
-static const unsigned short big5hkscs_2charset[23202] = {
- 0xa246, 0xa247, 0xa244, 0xa1b1, 0xc6d8, 0xa1c2, 0xa258, 0xa1d3,
- 0xa1a6, 0xa367, 0xa150, 0xa14d, 0x8859, 0x8857, 0x885d, 0x885b,
- 0x8866, 0x8861, 0x885f, 0xa1d1, 0x886a, 0x8868, 0x886f, 0x886d,
- 0x88a7, 0x8873, 0x8871, 0x8877, 0x8875, 0xa1d2, 0xc8fb, 0x887b,
- 0x8879, 0x88a2, 0x8856, 0x8867, 0x885a, 0x886c, 0x885c, 0x886e,
- 0x8870, 0xc8fc, 0x885e, 0x8874, 0xc8fa, 0x8878, 0x8858, 0x8869,
- 0x8872, 0x8860, 0x8876, 0x887a, 0x887c, 0x887d, 0x887e, 0x88a1,
- 0xc8f6, 0x886b, 0xc8f8, 0xc8f7, 0x88a8, 0xc8fe, 0xc8f9, 0xc8f5,
- 0xc8fd, 0xc6d9, 0xa3be, 0xa3bc, 0xa3bd, 0xa3bf, 0xa1c5, 0xa3bb,
- 0xa1c2, 0xa344, 0xa345, 0xa346, 0xa347, 0xa348, 0xa349, 0xa34a,
- 0xa34b, 0xa34c, 0xa34d, 0xa34e, 0xa34f, 0xa350, 0xa351, 0xa352,
- 0xa353, 0xa354, 0xa355, 0xa356, 0xa357, 0xa358, 0xa359, 0xa35a,
- 0xa35b, 0xa35c, 0xa35d, 0xa35e, 0xa35f, 0xa360, 0xa361, 0xa362,
- 0xa363, 0xa364, 0xa365, 0xa366, 0xa367, 0xa368, 0xa369, 0xa36a,
- 0xa36b, 0xa36c, 0xa36d, 0xa36e, 0xa36f, 0xa370, 0xa371, 0xa372,
- 0xa373, 0xc7f9, 0xc7f3, 0xc7f4, 0xc7f5, 0xc7f6, 0xc7f7, 0xc7f8,
- 0xc7fa, 0xc7fb, 0xc7fc, 0xc7fd, 0xc7fe, 0xc840, 0xc841, 0xc842,
- 0xc843, 0xc844, 0xc845, 0xc846, 0xc847, 0xc848, 0xc849, 0xc84a,
- 0xc84b, 0xc84c, 0xc84d, 0xc84e, 0xc84f, 0xc850, 0xc851, 0xc852,
- 0xc853, 0xc854, 0xc855, 0xc856, 0xc857, 0xc858, 0xc859, 0xc85a,
- 0xc85c, 0xc85d, 0xc85e, 0xc85f, 0xc860, 0xc861, 0xc862, 0xc863,
- 0xc864, 0xc865, 0xc866, 0xc867, 0xc868, 0xc869, 0xc86a, 0xc86b,
- 0xc86c, 0xc86d, 0xc86e, 0xc86f, 0xc870, 0xc871, 0xc872, 0xc873,
- 0xc874, 0xc875, 0xc85b, 0x8863, 0x88a4, 0x8865, 0x88a6, 0xa156,
- 0xa158, 0xa277, 0xa1fc, 0xa1a5, 0xa1a6, 0xa1a7, 0xa1a8, 0xa145,
- 0xa3bb, 0xa14c, 0xa14b, 0xa145, 0xa1ac, 0xa1b2, 0xa1ab, 0xa1b0,
- 0xa1c3, 0xa24a, 0xa1c1, 0xa24b, 0xc8d2, 0xc8d3, 0xa2b9, 0xa2ba,
- 0xa2bb, 0xa2bc, 0xa2bd, 0xa2be, 0xa2bf, 0xa2c0, 0xa2c1, 0xa2c2,
- 0xc6b5, 0xc6b6, 0xc6b7, 0xc6b8, 0xc6b9, 0xc6ba, 0xc6bb, 0xc6bc,
- 0xc6bd, 0xc6be, 0xa1f6, 0xa1f4, 0xa1f7, 0xa1f5, 0xa1f8, 0xa1f9,
- 0xa1fb, 0xa1fa, 0xc877, 0xc878, 0xc876, 0xa241, 0xa242, 0xa258,
- 0xa1d4, 0xa1db, 0xa1e8, 0xa1e7, 0xa1fd, 0xa1fc, 0xa1e4, 0xa1e5,
- 0xa1ec, 0xa1ed, 0xa1ef, 0xa1ee, 0xa1dc, 0xa1da, 0xa1dd, 0xa1dd,
- 0xa1d8, 0xa1d9, 0xa1f2, 0xa1f3, 0xa1e6, 0xa1e9, 0xa15b, 0xc6a1,
- 0xc6a2, 0xc6a3, 0xc6a4, 0xc6a5, 0xc6a6, 0xc6a7, 0xc6a8, 0xc6a9,
- 0xc6aa, 0xc6ab, 0xc6ac, 0xc6ad, 0xc6ae, 0xc6af, 0xc6b0, 0xc6b1,
- 0xc6b2, 0xc6b3, 0xc6b4, 0xa277, 0xa278, 0xa27a, 0xa27b, 0xa27c,
- 0xa27d, 0xa275, 0xa274, 0xa273, 0xa272, 0xa271, 0xf9f9, 0xf9f8,
- 0xf9e6, 0xf9ef, 0xf9dd, 0xf9e8, 0xf9f1, 0xf9df, 0xf9ec, 0xf9f5,
- 0xf9e3, 0xf9ee, 0xf9f7, 0xf9e5, 0xf9e9, 0xf9f2, 0xf9e0, 0xf9eb,
- 0xf9f4, 0xf9e2, 0xf9e7, 0xf9f0, 0xf9de, 0xf9ed, 0xf9f6, 0xf9e4,
- 0xf9ea, 0xf9f3, 0xf9e1, 0xf9fa, 0xf9fb, 0xf9fd, 0xf9fc, 0xa2ac,
- 0xa2ad, 0xa2ae, 0xa15a, 0xa262, 0xa263, 0xa264, 0xa265, 0xa266,
- 0xa267, 0xa268, 0xa269, 0xa270, 0xa26f, 0xa26e, 0xa26d, 0xa26c,
- 0xa26b, 0xa26a, 0xf9fe, 0xa276, 0xa279, 0xa1bd, 0xa1bc, 0xa1b6,
- 0xa1b5, 0xa1bf, 0xa1be, 0xa1bb, 0xa1ba, 0xa1b3, 0xa1b7, 0xa1b4,
- 0xa2a8, 0xa2a9, 0xa2ab, 0xa2aa, 0xa1b9, 0xa1b8, 0xa1f3, 0xa1f0,
- 0xa1f2, 0xa1f1, 0xc6e6, 0xc8d6, 0xc8d7, 0xc8d8, 0xc8d9, 0xc8da,
- 0xc8db, 0xc8dc, 0xc8dd, 0xc8de, 0xc8df, 0xc8e0, 0xc8e1, 0xc8e2,
- 0xc8e3, 0xc8e4, 0xc8e5, 0xc8e6, 0xc8e7, 0xc8e8, 0xc8e9, 0xc8ea,
- 0xc8eb, 0xc8ec, 0xc8ed, 0xc8ee, 0xc8ef, 0xc8f0, 0xc8f1, 0xc6cd,
- 0xa140, 0xa142, 0xa143, 0xa1b2, 0xc6e0, 0xc6e1, 0xc6e2, 0xa171,
- 0xa172, 0xa16d, 0xa16e, 0xa175, 0xa176, 0xa179, 0xa17a, 0xa169,
- 0xa16a, 0xa245, 0xa165, 0xa166, 0xa1e3, 0xa1a9, 0xa1aa, 0xa2c3,
- 0xa2c4, 0xa2c5, 0xa2c6, 0xa2c7, 0xa2c8, 0xa2c9, 0xa2ca, 0xa2cb,
- 0xa1ca, 0xc6e7, 0xc6e8, 0xc6e9, 0xc6ea, 0xc6eb, 0xc6ec, 0xc6ed,
- 0xc6ee, 0xc6ef, 0xc6f0, 0xc6f1, 0xc6f2, 0xc6f3, 0xc6f4, 0xc6f5,
- 0xc6f6, 0xc6f7, 0xc6f8, 0xc6f9, 0xc6fa, 0xc6fb, 0xc6fc, 0xc6fd,
- 0xc6fe, 0xc740, 0xc741, 0xc742, 0xc743, 0xc744, 0xc745, 0xc746,
- 0xc747, 0xc748, 0xc749, 0xc74a, 0xc74b, 0xc74c, 0xc74d, 0xc74e,
- 0xc74f, 0xc750, 0xc751, 0xc752, 0xc753, 0xc754, 0xc755, 0xc756,
- 0xc757, 0xc758, 0xc759, 0xc75a, 0xc75b, 0xc75c, 0xc75d, 0xc75e,
- 0xc75f, 0xc760, 0xc761, 0xc762, 0xc763, 0xc764, 0xc765, 0xc766,
- 0xc767, 0xc768, 0xc769, 0xc76a, 0xc76b, 0xc76c, 0xc76d, 0xc76e,
- 0xc76f, 0xc770, 0xc771, 0xc772, 0xc773, 0xc774, 0xc775, 0xc776,
- 0xc777, 0xc778, 0xc779, 0xc77a, 0xc8d4, 0xc8d5, 0xc6dc, 0xc6dd,
- 0xc77b, 0xc77c, 0xc77d, 0xc77e, 0xc7a1, 0xc7a2, 0xc7a3, 0xc7a4,
- 0xc7a5, 0xc7a6, 0xc7a7, 0xc7a8, 0xc7a9, 0xc7aa, 0xc7ab, 0xc7ac,
- 0xc7ad, 0xc7ae, 0xc7af, 0xc7b0, 0xc7b1, 0xc7b2, 0xc7b3, 0xc7b4,
- 0xc7b5, 0xc7b6, 0xc7b7, 0xc7b8, 0xc7b9, 0xc7ba, 0xc7bb, 0xc7bc,
- 0xc7bd, 0xc7be, 0xc7bf, 0xc7c0, 0xc7c1, 0xc7c2, 0xc7c3, 0xc7c4,
- 0xc7c5, 0xc7c6, 0xc7c7, 0xc7c8, 0xc7c9, 0xc7ca, 0xc7cb, 0xc7cc,
- 0xc7cd, 0xc7ce, 0xc7cf, 0xc7d0, 0xc7d1, 0xc7d2, 0xc7d3, 0xc7d4,
- 0xc7d5, 0xc7d6, 0xc7d7, 0xc7d8, 0xc7d9, 0xc7da, 0xc7db, 0xc7dc,
- 0xc7dd, 0xc7de, 0xc7df, 0xc7e0, 0xc7e1, 0xc7e2, 0xc7e3, 0xc7e4,
- 0xc7e5, 0xc7e6, 0xc7e7, 0xc7e8, 0xc7e9, 0xc7ea, 0xc7eb, 0xc7ec,
- 0xc7ed, 0xc7ee, 0xc7ef, 0xc7f0, 0xc7f1, 0xc7f2, 0xc6e3, 0xc6da,
- 0xc6db, 0xa374, 0xa375, 0xa376, 0xa377, 0xa378, 0xa379, 0xa37a,
- 0xa37b, 0xa37c, 0xa37d, 0xa37e, 0xa3a1, 0xa3a2, 0xa3a3, 0xa3a4,
- 0xa3a5, 0xa3a6, 0xa3a7, 0xa3a8, 0xa3a9, 0xa3aa, 0xa3ab, 0xa3ac,
- 0xa3ad, 0xa3ae, 0xa3af, 0xa3b0, 0xa3b1, 0xa3b2, 0xa3b3, 0xa3b4,
- 0xa3b5, 0xa3b6, 0xa3b7, 0xa3b8, 0xa3b9, 0xa3ba, 0xa440, 0xa447,
- 0xa454, 0xa57c, 0xa457, 0xa4a4, 0xa455, 0xa5d2, 0xa441, 0xa4fe,
- 0xa442, 0xa4d1, 0xa661, 0xa448, 0xa440, 0xa447, 0xa454, 0xa57c,
- 0xa4ad, 0xa4bb, 0xa443, 0xa44b, 0xa445, 0xa451, 0xa4eb, 0xa4f5,
- 0xa4f4, 0xa4ec, 0xaaf7, 0xa467, 0xa4e9, 0xc8d1, 0xa6b3, 0xaac0,
- 0xa657, 0xaf53, 0xb05d, 0xafac, 0xb3d2, 0xa54e, 0xa949, 0xbec7,
- 0xbaca, 0xa5f8, 0xb8ea, 0xa8f3, 0xb2bd, 0xa5f0, 0xa6db, 0xa6dc,
- 0xa440, 0xa447, 0xa454, 0xa57c, 0xa4ad, 0xa4bb, 0xa443, 0xa44b,
- 0xa445, 0xa451, 0xa4eb, 0xa4f5, 0xa4f4, 0xa4ec, 0xaaf7, 0xa467,
- 0xa4e9, 0xaee8, 0xa6b3, 0xaac0, 0xa657, 0xaf53, 0xb05d, 0xafac,
- 0xb3d2, 0xafb5, 0xa86b, 0xa46b, 0xbe41, 0xc075, 0xa64c, 0xaa60,
- 0xb6b5, 0xa5f0, 0xbc67, 0xa1c0, 0xa457, 0xa4a4, 0xa455, 0xa5aa,
- 0xa56b, 0xc2e5, 0xa976, 0xbec7, 0xbaca, 0xa5f8, 0xb8ea, 0xa8f3,
- 0xa95d, 0xa255, 0xa256, 0xa250, 0xa251, 0xa252, 0xa254, 0xa257,
- 0xa253, 0xa1eb, 0xa1ea, 0xa24f, 0x9277, 0x96df, 0x89d5, 0x93cd,
- 0x9bdf, 0xfa68, 0x89da, 0x8f59, 0x89db, 0x8f5d, 0x89dc, 0x96f7,
- 0x8ada, 0x8bdc, 0x97db, 0x9e53, 0x9daa, 0x9bea, 0x8a6e, 0x8bc8,
- 0x89e8, 0x89ea, 0x8c4b, 0xfb70, 0x89ed, 0x94dd, 0x89ee, 0x9eb4,
- 0x8ad3, 0x92db, 0x94db, 0x89f9, 0xfb7a, 0x89fb, 0x9efc, 0x89fc,
- 0x89bf, 0x89fe, 0x89e6, 0x9d46, 0x9dee, 0xa07e, 0xa068, 0x98e9,
- 0x8b68, 0x8dfd, 0x8bbe, 0x9fd9, 0x8aeb, 0x9fd7, 0x8b6a, 0x9c5c,
- 0x8bb1, 0xfb5e, 0x9df3, 0xa0d0, 0xfc66, 0x92e9, 0x9aec, 0x8fab,
- 0xfa48, 0x8e45, 0x9c6f, 0x9ede, 0x89ef, 0x96e9, 0x9ebb, 0x94de,
- 0x9eb8, 0x97ba, 0xfb65, 0x95d6, 0x9cbb, 0x97da, 0x8f45, 0xfb7d,
- 0x9158, 0xfe64, 0x9856, 0x9b4d, 0x935b, 0x95c7, 0x97e7, 0x9359,
- 0x91f5, 0x97b8, 0xfda2, 0xfbb6, 0x92fa, 0x9357, 0x8ba6, 0xfbb9,
- 0x97b0, 0xfdc4, 0x9ca1, 0x91f2, 0x91f9, 0x8ff1, 0x9745, 0x9853,
- 0xfe78, 0xfbc1, 0x9251, 0x9dad, 0xfd6c, 0xfa6b, 0x9bc2, 0x9a7b,
- 0x8b60, 0x934b, 0x9abd, 0x91b7, 0x95b4, 0xfec5, 0x9ef0, 0x8d64,
- 0x9269, 0x8d67, 0xfbea, 0xfbef, 0x8d68, 0x93eb, 0xfc42, 0x9166,
- 0xfacd, 0x93dd, 0x8bcc, 0x8d6d, 0x8d6e, 0x96a8, 0xfca6, 0x8d6f,
- 0x8d70, 0xfc64, 0x9060, 0x8d74, 0x97c3, 0x8ad0, 0x9274, 0x9bbe,
- 0x9cc8, 0x9cba, 0x8d78, 0x9eb9, 0x955a, 0x91b4, 0x8a48, 0x8d7d,
- 0x8a7d, 0x8ac2, 0xfd4a, 0x8da1, 0x8ad1, 0xfcb4, 0x8b47, 0x93a4,
- 0x9eda, 0x8a51, 0x8da6, 0x9ec5, 0xfcc4, 0xa078, 0x94b5, 0xfcc2,
- 0x8a6b, 0x8dab, 0xfae8, 0x8dad, 0xfc49, 0x93c1, 0x906f, 0x8db0,
- 0x947e, 0x90fa, 0x9479, 0x8db2, 0xfcee, 0x997b, 0x8db4, 0x8db7,
- 0x91b3, 0x8dbb, 0x8dba, 0x8dbc, 0x9044, 0xfd4c, 0x93e4, 0x93e0,
- 0xfd53, 0x8dc3, 0x9bb8, 0xfbf0, 0x93e9, 0x93f6, 0x8dc5, 0x8dca,
- 0x8dcc, 0xfd5d, 0x93b5, 0xfd61, 0x9cf8, 0x9252, 0xa0e8, 0x9ca5,
- 0x8c56, 0x8dd6, 0x97c0, 0xa0de, 0x97d2, 0xfaa5, 0xfda3, 0x8ddb,
- 0x8eaf, 0x91b5, 0xfd49, 0xfdd1, 0x8deb, 0x97c6, 0xfdce, 0x90fc,
- 0xfc59, 0x96d6, 0x97c5, 0x8def, 0x97d7, 0x8df0, 0x96a6, 0xfbbf,
- 0x8df3, 0x9449, 0x8df5, 0x9872, 0x8e6b, 0xfafd, 0x8f50, 0x9dcc,
- 0xfc65, 0x8c44, 0x996e, 0x94a1, 0x8f63, 0xa0da, 0x9253, 0xfde9,
- 0x9db5, 0x9879, 0x9d5d, 0x8d63, 0x9669, 0x9f70, 0xfc6a, 0x8ac7,
- 0x89d7, 0xfe4d, 0x9edd, 0xfefb, 0x98bc, 0xfacc, 0x95b0, 0x9464,
- 0x936f, 0x94b9, 0x95ec, 0x91ee, 0x98c3, 0x95f6, 0x8ffd, 0x98c5,
- 0x9766, 0xfe6e, 0x97dd, 0x8caa, 0x92d2, 0x9761, 0x98cb, 0x95f0,
- 0x975d, 0x91e3, 0x98cc, 0x9469, 0x98cd, 0x98ce, 0x95fc, 0x94a3,
- 0x9662, 0xfeb6, 0x9463, 0x98d0, 0x98d1, 0x9475, 0xfae0, 0x9472,
- 0x98d6, 0x8af0, 0x98d9, 0x98db, 0x98dd, 0x98a8, 0x8a6d, 0x8afb,
- 0x8aae, 0xfbc9, 0x8c5d, 0x98e4, 0x98e6, 0x98e8, 0x8a4d, 0x9257,
- 0x95df, 0xa0ac, 0x98eb, 0x98ec, 0x8cc3, 0x98f4, 0x8ab8, 0x9ee7,
- 0x94bc, 0xfcd1, 0x9cc6, 0x9e7e, 0x98fe, 0xfde8, 0x9940, 0x94c9,
- 0x94d3, 0x9946, 0x90c0, 0x94d1, 0x9573, 0x93c2, 0x9948, 0x994b,
- 0x8e55, 0x994e, 0x8efe, 0x8e59, 0x94ec, 0x94ef, 0x8c60, 0x8f74,
- 0x9955, 0x9544, 0x8ccb, 0x9956, 0x9959, 0x995b, 0x8cc4, 0xfa45,
- 0x90b7, 0x9743, 0x95cd, 0x97c9, 0xfd50, 0x8eb9, 0x95c6, 0x9967,
- 0x8ab9, 0x8dfc, 0x8a76, 0x9d51, 0x9973, 0x9d4f, 0x997a, 0x9564,
- 0x99a1, 0x99a5, 0x99a7, 0x8eed, 0x99ad, 0x946e, 0x8f70, 0xfad0,
- 0x99b3, 0xa053, 0x965c, 0xfd7a, 0x97fe, 0x92bd, 0x97fd, 0x8f64,
- 0xfcf7, 0x9562, 0x97cd, 0x9e64, 0x924c, 0x8ec9, 0x99bc, 0x9da5,
- 0x8f54, 0x8f7c, 0x8ea2, 0x8f7a, 0x97ae, 0x96c8, 0x99c3, 0x90d6,
- 0x9cbe, 0x8f76, 0x9470, 0xfb4b, 0xfdca, 0x8ec7, 0xa0f9, 0x8fa9,
- 0x99c7, 0x90d7, 0x9edf, 0x99ce, 0x8fba, 0x8feb, 0x99cf, 0x8fc2,
- 0x92c9, 0x97dc, 0x95b3, 0x9c79, 0x95b2, 0x8fdb, 0x9be3, 0x9e7a,
- 0x9bee, 0x99de, 0xfafa, 0x9ee5, 0x8a52, 0x99e1, 0x8a67, 0x8bb5,
- 0x8aac, 0x99e9, 0xfbca, 0x97de, 0x95d1, 0x99f5, 0xfc4a, 0x9ba9,
- 0xfbdc, 0xfe56, 0x9ea4, 0x9d49, 0x95db, 0x89c5, 0x99f8, 0x9664,
- 0x9055, 0x96d4, 0x977c, 0x964d, 0x97e1, 0x9a48, 0x9a49, 0xfe7d,
- 0x90aa, 0x9a50, 0x9347, 0x8ed8, 0x90c9, 0x9a55, 0x90bc, 0x9a58,
- 0x8bb8, 0x90d5, 0x9641, 0x9a5a, 0x9a5c, 0x97c2, 0x8abb, 0x9baa,
- 0x90f5, 0x9a60, 0x9145, 0x8c58, 0x9a63, 0x8c49, 0x8bb6, 0xfccf,
- 0x966b, 0x9a6e, 0x914f, 0x9746, 0xa0e6, 0x92d7, 0x9675, 0x93d4,
- 0x91bb, 0x9679, 0x9a70, 0x9678, 0x91cd, 0x9c4a, 0xa06f, 0xa06a,
- 0x915f, 0x9fa5, 0x89ba, 0x9ecd, 0x9a79, 0x9dce, 0x8cd2, 0x9d73,
- 0x96b9, 0x96bc, 0x9cd1, 0x89b7, 0x9eee, 0xfb43, 0x9ec9, 0xfbd3,
- 0x91ae, 0x9d78, 0x9d7b, 0xa440, 0xa442, 0xa443, 0x9eb3, 0xc945,
- 0xa456, 0xa454, 0xa457, 0xa455, 0xc946, 0xa4a3, 0xc94f, 0xc94d,
- 0xa4a2, 0xa4a1, 0xa542, 0xa541, 0xa540, 0xa543, 0xa4fe, 0x9eb2,
- 0x9dd6, 0xa5e0, 0xa5e1, 0x994f, 0x89ce, 0xa8c3, 0x8bc0, 0x9fc4,
- 0xa458, 0x8bd4, 0xa4a4, 0xc950, 0x8c72, 0xa4a5, 0xc963, 0xa6ea,
- 0xcbb1, 0xc6bf, 0x8bf9, 0xa459, 0xa4a6, 0xa544, 0xc964, 0x8946,
- 0xc6c0, 0xc940, 0xa444, 0xa45b, 0xc947, 0xa45c, 0xfae5, 0xa4a7,
- 0xa545, 0xa547, 0xa546, 0xa5e2, 0xa5e3, 0xa8c4, 0xadbc, 0xa441,
- 0xc87b, 0x8bc6, 0xc941, 0xa445, 0xa45e, 0xa45d, 0xa5e4, 0x9c57,
- 0xa8c5, 0x9afb, 0xb0ae, 0xd44b, 0x89d0, 0x89cf, 0xb6c3, 0xdcb1,
- 0xdcb2, 0xc6c1, 0xa446, 0x89d1, 0xa4a9, 0x89e2, 0xa8c6, 0xa447,
- 0xc948, 0xa45f, 0xa4aa, 0xa4ac, 0xc951, 0xa4ad, 0xa4ab, 0x927e,
- 0xa5e5, 0x9dba, 0xa8c7, 0xa8c8, 0xab45, 0xc6c2, 0xa460, 0xa4ae,
- 0x8c6f, 0xa5e6, 0xa5e8, 0xa5e7, 0xa6eb, 0xa8c9, 0xa8ca, 0xab46,
- 0xab47, 0xadbd, 0xdcb3, 0xfbf8, 0xf6d6, 0xa448, 0x8bc7, 0x926b,
- 0x89d2, 0xa4b0, 0xa4af, 0xc952, 0xa4b1, 0xa4b7, 0xa4b2, 0xa4b3,
- 0xc954, 0xc953, 0xa4b5, 0xa4b6, 0xa4b4, 0x9fcf, 0xa54a, 0xa54b,
- 0xa54c, 0xa54d, 0xa549, 0xa550, 0xc96a, 0xc966, 0xc969, 0xa551,
- 0xa561, 0xc968, 0xa54e, 0xa54f, 0xa548, 0xc965, 0xc967, 0x9da9,
- 0x89d3, 0x99e2, 0xa5f5, 0xc9b0, 0xa5f2, 0xa5f6, 0xc9ba, 0xc9ae,
- 0xa5f3, 0xc9b2, 0x9267, 0xa5f4, 0xa5f7, 0xa5e9, 0xc9b1, 0xa5f8,
- 0xc9b5, 0x92a4, 0xc9b9, 0xc9b6, 0xc9b3, 0xa5ea, 0xa5ec, 0xa5f9,
- 0xa5ee, 0xc9ab, 0xa5f1, 0xa5ef, 0xa5f0, 0xc9bb, 0xc9b8, 0xc9af,
- 0xa5ed, 0x8c73, 0xc9ac, 0xa5eb, 0x894e, 0xc9b4, 0xc9b7, 0x894f,
- 0x9278, 0xc9ad, 0xca66, 0xa742, 0xa6f4, 0x91b6, 0xca67, 0xa6f1,
- 0xa744, 0x89d4, 0xa6f9, 0x9fd2, 0xa6f8, 0xca5b, 0xa6fc, 0xa6f7,
- 0xca60, 0xca68, 0xca64, 0x92a7, 0xa6fa, 0x95a2, 0xa6fd, 0xa6ee,
- 0xa747, 0xca5d, 0x926e, 0xcbbd, 0xa6ec, 0xa743, 0xa6ed, 0xa6f5,
- 0xa6f6, 0xca62, 0xca5e, 0xa6fb, 0xa6f3, 0xca5a, 0xa6ef, 0xca65,
- 0xa745, 0xa748, 0xa6f2, 0xa740, 0xa746, 0xa6f0, 0xca63, 0xa741,
- 0xca69, 0xca5c, 0xa6fe, 0xca5f, 0xca61, 0xa8d8, 0xcbbf, 0xcbcb,
- 0xa8d0, 0xcbcc, 0xa8cb, 0xa8d5, 0x96ea, 0xa8ce, 0xcbb9, 0xa8d6,
- 0xcbb8, 0xcbbc, 0xcbc3, 0xcbc1, 0xa8de, 0xa8d9, 0xcbb3, 0xcbb5,
- 0xa8db, 0xa8cf, 0xcbb6, 0xcbc2, 0xcbc9, 0xa8d4, 0xcbbb, 0xcbb4,
- 0xa8d3, 0xcbb7, 0xa8d7, 0xcbba, 0x926f, 0xa8d2, 0xa8cd, 0xa8dc,
- 0xcbc4, 0xa8dd, 0xcbc8, 0xcbc6, 0xcbca, 0xa8da, 0xcbbe, 0xcbb2,
- 0xcbc0, 0xa8d1, 0xcbc5, 0xa8cc, 0xcbc7, 0x92a3, 0x8950, 0xfa57,
- 0xab56, 0xab4a, 0x9866, 0xcde0, 0xcde8, 0xab49, 0xab51, 0xab5d,
- 0xcdee, 0xcdec, 0xcde7, 0x89d6, 0xab4b, 0xcded, 0xcde3, 0xab59,
- 0xab50, 0xab58, 0xcdde, 0xcdea, 0x98b2, 0xcde1, 0xab54, 0xcde2,
- 0x92ab, 0xcddd, 0xab5b, 0xab4e, 0xab57, 0xab4d, 0xcddf, 0xcde4,
- 0xcdeb, 0xab55, 0xab52, 0xcde6, 0xab5a, 0xcde9, 0xcde5, 0xab4f,
- 0xab5c, 0xab53, 0xab4c, 0xab48, 0x96de, 0x92ac, 0xcdef, 0xadd7,
- 0xadc1, 0x8c70, 0xadd1, 0x9f6e, 0xadd6, 0xd0d0, 0xd0cf, 0xd0d4,
- 0xd0d5, 0xadc4, 0x8ef2, 0xadcd, 0x9f6c, 0xadda, 0xadce, 0x89d8,
- 0xd0c9, 0xadc7, 0xd0ca, 0xfa59, 0xaddc, 0xadd3, 0xadbe, 0xadbf,
- 0xd0dd, 0xb0bf, 0xadcc, 0xadcb, 0xd0cb, 0xadcf, 0xd45b, 0xadc6,
- 0xd0d6, 0xadd5, 0xadd4, 0xadca, 0xd0ce, 0xd0d7, 0xd0c8, 0xadc9,
- 0xd0d8, 0xadd2, 0xd0cc, 0xadc0, 0xadc3, 0xadc2, 0xd0d9, 0xadd0,
- 0xadc5, 0xadd9, 0xaddb, 0xd0d3, 0xadd8, 0x92a8, 0xd0db, 0xd0cd,
- 0xd0dc, 0xd0d1, 0x9163, 0xd0da, 0xd0d2, 0x8c40, 0xadc8, 0xd463,
- 0xd457, 0xb0b3, 0xd45c, 0xd462, 0xb0b2, 0xd455, 0xb0b6, 0xd459,
- 0xd452, 0xb0b4, 0xd456, 0xb0b9, 0xb0be, 0xd467, 0xd451, 0xb0ba,
- 0x9f73, 0xd466, 0x92ad, 0xb0b5, 0xd458, 0xb0b1, 0xd453, 0xd44f,
- 0xd45d, 0xd450, 0xd44e, 0xd45a, 0xd460, 0xd461, 0xb0b7, 0x9be9,
- 0xd85b, 0xd45e, 0xd44d, 0xd45f, 0x92a9, 0xb0c1, 0xd464, 0xb0c0,
- 0xd44c, 0xd454, 0xd465, 0xb0bc, 0xb0bb, 0xb0b8, 0xb0bd, 0xb0af,
- 0xb0b0, 0xb3c8, 0x92aa, 0xd85e, 0xd857, 0xb3c5, 0xd85f, 0x89d9,
- 0xd855, 0xd858, 0xb3c4, 0xd859, 0xfd56, 0xb3c7, 0xd85d, 0xd853,
- 0xd852, 0xb3c9, 0xb3ca, 0xb3c6, 0xb3cb, 0xd851, 0xd85c, 0xd85a,
- 0xd854, 0xb3c3, 0xd856, 0x9fa8, 0xb6ca, 0xb6c4, 0xdcb7, 0xb6cd,
- 0xdcbd, 0xdcc0, 0xb6c6, 0xb6c7, 0xdcba, 0xb6c5, 0xdcc3, 0xb6cb,
- 0xdcc4, 0xdcbf, 0xb6cc, 0x8c71, 0xdcb4, 0xb6c9, 0xdcb5, 0xdcbe,
- 0xdcbc, 0xdcb8, 0xb6c8, 0xdcb6, 0xb6ce, 0xdcbb, 0xdcc2, 0xdcb9,
- 0xdcc1, 0x92a1, 0xb9b6, 0xb9b3, 0x90e3, 0xb9b4, 0xe0f9, 0xe0f1,
- 0xb9b2, 0xb9af, 0xe0f2, 0xa0a6, 0xb9b1, 0xe0f5, 0xe0f7, 0x94ab,
- 0xe0fe, 0xfc72, 0xe0fd, 0xe0f8, 0xb9ae, 0xe0f0, 0xb9ac, 0xe0f3,
- 0xb9b7, 0xe0f6, 0xe0fa, 0xb9b0, 0xb9ad, 0xe0fc, 0xe0fb, 0xb9b5,
- 0xe0f4, 0x97c4, 0xbbf8, 0xe4ec, 0xe4e9, 0xbbf9, 0xbbf7, 0x92ae,
- 0xe4f0, 0xe4ed, 0xe4e6, 0xbbf6, 0xfa67, 0xbbfa, 0xe4e7, 0xbbf5,
- 0xbbfd, 0xe4ea, 0xe4eb, 0xbbfb, 0xbbfc, 0xe4f1, 0xe4ee, 0xe4ef,
- 0x92a2, 0xfa69, 0xbeaa, 0xe8f8, 0xbea7, 0xe8f5, 0xbea9, 0xbeab,
- 0xe8f6, 0xbea8, 0xe8f7, 0xe8f4, 0xc076, 0xecbd, 0xc077, 0xecbb,
- 0xecbc, 0xecba, 0xecb9, 0xecbe, 0xc075, 0x9268, 0xefb8, 0xefb9,
- 0xe4e8, 0xefb7, 0xc078, 0xc35f, 0xf1eb, 0xf1ec, 0xc4d7, 0xc4d8,
- 0xf5c1, 0xf5c0, 0xc56c, 0xc56b, 0xf7d0, 0xa449, 0xa461, 0xa4b9,
- 0xa4b8, 0xa553, 0xa552, 0xa5fc, 0xa5fb, 0xa5fd, 0xa5fa, 0xa74a,
- 0xa749, 0xa74b, 0xa8e0, 0xa8df, 0xa8e1, 0x8951, 0xab5e, 0xa259,
- 0xd0de, 0xa25a, 0xb0c2, 0xa25c, 0xa25b, 0xd860, 0xfa6f, 0xa25d,
- 0xb9b8, 0xa25e, 0xa44a, 0xa4ba, 0xa5fe, 0xa8e2, 0xfa71, 0xa44b,
- 0xa4bd, 0xa4bb, 0xa4bc, 0xa640, 0x8952, 0xa74c, 0xa8e4, 0xa8e3,
- 0xa8e5, 0x945a, 0xaddd, 0xbeac, 0xc6c3, 0x89dd, 0xc94e, 0xc8a2,
- 0xa554, 0xa555, 0xa641, 0xca6a, 0xab60, 0xab5f, 0xd0e0, 0xd0df,
- 0xb0c3, 0xc6c4, 0xa4be, 0xc955, 0x9e52, 0x8953, 0xcbcd, 0xab61,
- 0xade0, 0xadde, 0xaddf, 0x9e55, 0x92ba, 0xbead, 0xc6c5, 0xa556,
- 0x8c5b, 0xa642, 0xc9bc, 0xfa7d, 0xfaa8, 0x9a68, 0xfa47, 0xa74d,
- 0xa74e, 0xfa7e, 0xca6b, 0xcbce, 0xa8e6, 0xcbcf, 0x92bb, 0xd0e2,
- 0xd0e3, 0xade3, 0xfdb6, 0xd0e4, 0xfaa2, 0xd0e1, 0xade4, 0xade2,
- 0xade1, 0xd0e5, 0xfaa3, 0xd468, 0xfaa4, 0x9bb4, 0xfaa6, 0xd861,
- 0xdcc5, 0xe140, 0x89df, 0xbbfe, 0xbeae, 0xe8f9, 0xfddb, 0xa44c,
- 0xa45a, 0xfaa9, 0x8954, 0xfaab, 0xb0c4, 0xb3cd, 0xb9b9, 0xfc7a,
- 0xc942, 0xa4bf, 0xa559, 0xa557, 0xa558, 0x89e0, 0xa8e7, 0x9f4f,
- 0xa44d, 0xa44e, 0xc87d, 0xa462, 0x89e1, 0xa4c0, 0xa4c1, 0xa4c2,
- 0xc9be, 0xa55a, 0xfab0, 0xc96b, 0xa646, 0xc9bf, 0xa644, 0xa645,
- 0xc9bd, 0xa647, 0xa643, 0xca6c, 0xaaec, 0xca6d, 0x9fcd, 0xa0e7,
- 0xca6e, 0xa750, 0xa74f, 0xfab1, 0x89a6, 0xa753, 0xa751, 0xa752,
- 0xa8ed, 0xa8ec, 0xcbd4, 0xcbd1, 0xcbd2, 0x9efa, 0xcbd0, 0xa8ee,
- 0xa8ea, 0xa8e9, 0xa8eb, 0xa8e8, 0xfab2, 0xa8ef, 0xab63, 0xcdf0,
- 0xcbd3, 0xab68, 0xcdf1, 0xab64, 0xab67, 0xab66, 0xab65, 0xab62,
- 0xd0e8, 0xade7, 0xd0eb, 0xade5, 0xfab4, 0x92c4, 0xd0e7, 0xade8,
- 0xade6, 0xade9, 0xd0e9, 0xd0ea, 0x9f6f, 0xd0e6, 0xd0ec, 0x8bb0,
- 0xb3d1, 0xb0c5, 0xd469, 0xd46b, 0xd46a, 0xd46c, 0xb0c6, 0xb3ce,
- 0x9fac, 0xb3cf, 0xb3d0, 0xb6d0, 0xdcc7, 0x89e3, 0xdcc6, 0xdcc8,
- 0xdcc9, 0xb6d1, 0xb6cf, 0xe141, 0xe142, 0xb9bb, 0xb9ba, 0xe35a,
- 0xbc40, 0xbc41, 0xbc42, 0xbc44, 0xe4f2, 0xe4f3, 0xbc43, 0x9bd3,
- 0x89e4, 0xbeaf, 0xbeb0, 0xfab5, 0xf1ed, 0xf5c3, 0xf5c2, 0xf7d1,
- 0x9fd5, 0xa44f, 0xa55c, 0xa55b, 0x8955, 0xa648, 0x92c5, 0xc9c0,
- 0x8956, 0xa755, 0xa756, 0xa754, 0xa757, 0xca6f, 0xca70, 0xfab3,
- 0xfab6, 0xa8f1, 0xcbd5, 0xa8f0, 0xcdf2, 0xab6c, 0xcdf3, 0xab6b,
- 0xfab7, 0xab69, 0xab6a, 0x9edc, 0xd0ed, 0xfbc4, 0x9f71, 0xb0c7,
- 0xd46e, 0xb0ca, 0xd46d, 0xb1e5, 0xb0c9, 0xb0c8, 0xb3d4, 0xb3d3,
- 0xb3d2, 0xb6d2, 0xfaba, 0x92c7, 0xb6d5, 0xb6d6, 0xb6d4, 0xb6d3,
- 0xe143, 0xe144, 0xe4f5, 0xbc45, 0xe4f4, 0xbeb1, 0xecbf, 0xc079,
- 0xf1ee, 0xc455, 0xc6c6, 0xa463, 0xa4c3, 0xc956, 0xa4c4, 0xa4c5,
- 0x9a4c, 0xa55d, 0xa55e, 0xa649, 0xca71, 0xcbd6, 0xcbd7, 0xab6d,
- 0xd0ee, 0xb0cc, 0xb0cb, 0xd863, 0xd862, 0xa450, 0xa4c6, 0xa55f,
- 0xb0cd, 0xc943, 0xc96c, 0xa560, 0xc9c2, 0xa64b, 0xa64a, 0xc9c1,
- 0xa758, 0x8c68, 0x89e5, 0xadea, 0x9f7d, 0xd46f, 0xb6d7, 0xe145,
- 0xb9bc, 0xa0a9, 0xfac4, 0xe8fa, 0xf3fd, 0xc6c7, 0xa4c7, 0x8957,
- 0xcbd8, 0xcdf4, 0xb0d0, 0xb0ce, 0xb0cf, 0xa451, 0xfaaa, 0xa464,
- 0xa2cd, 0xa4ca, 0xa4c9, 0xa4c8, 0xa563, 0xa562, 0xc96d, 0xc9c3,
- 0x8958, 0xa8f5, 0xa8f2, 0xa8f4, 0xa8f3, 0xab6e, 0xb3d5, 0xa452,
- 0x8be3, 0xa4cb, 0x8b61, 0xa565, 0xa564, 0xca72, 0x9af1, 0xa8f6,
- 0x9eb7, 0xc6c8, 0xc957, 0xfad1, 0xa567, 0xa566, 0xa64c, 0xa64d,
- 0xca73, 0xa759, 0xfad2, 0xa75a, 0xa8f7, 0xa8f8, 0xa8f9, 0xab6f,
- 0xcdf5, 0x9eba, 0xfad4, 0xadeb, 0xc944, 0xa4cc, 0xc9c4, 0xca74,
- 0xca75, 0xcbd9, 0xfad9, 0xcbda, 0xcdf7, 0xcdf6, 0xcdf9, 0xcdf8,
- 0xab70, 0xd470, 0xaded, 0xd0ef, 0xadec, 0xfadb, 0x9ce0, 0xd864,
- 0xb3d6, 0xfbf7, 0xd865, 0xfbfa, 0x89e7, 0xa07a, 0xfadc, 0xe146,
- 0xb9bd, 0xfadd, 0x89e9, 0xbc46, 0xf1ef, 0xc6c9, 0xc958, 0xa568,
- 0xfae2, 0x89eb, 0xb0d1, 0xfae3, 0xa453, 0xa465, 0xa4ce, 0xa4cd,
- 0x90c8, 0xa4cf, 0x92da, 0x8959, 0x9cf5, 0xa8fb, 0xa8fa, 0xa8fc,
- 0x895a, 0xfae7, 0x9fa2, 0xab71, 0xadee, 0xfaea, 0xe8fb, 0xc24f,
- 0xa466, 0xa56a, 0xa579, 0xa574, 0xa56f, 0xa56e, 0xa575, 0xa573,
- 0xa56c, 0xa57a, 0xa56d, 0xa569, 0xa578, 0xa577, 0xa576, 0xa56b,
- 0xa572, 0xfaed, 0x8fad, 0xa571, 0xa57b, 0xa570, 0xfb59, 0xa653,
- 0xa659, 0xa655, 0xa65b, 0xc9c5, 0xa658, 0xa64e, 0xa651, 0xa654,
- 0xa650, 0xa657, 0xa65a, 0xa64f, 0xa652, 0xa656, 0xa65c, 0xfaef,
- 0x96ef, 0x9dec, 0xca7e, 0xca7b, 0x9dca, 0xa767, 0xca7c, 0xa75b,
- 0xa75d, 0xa775, 0xa770, 0xfd6d, 0x89ec, 0xcaa5, 0xca7d, 0xa75f,
- 0xa761, 0xcaa4, 0xa768, 0xca78, 0xa774, 0xa776, 0xa75c, 0xa76d,
- 0xfb44, 0xca76, 0xa773, 0x9de2, 0xa764, 0x8c75, 0xa76e, 0xa76f,
- 0xca77, 0xa76c, 0xa76a, 0xa76b, 0xa771, 0xcaa1, 0xa75e, 0xa772,
- 0xcaa3, 0xa766, 0xa763, 0xca7a, 0xa762, 0xcaa6, 0xa765, 0xa769,
- 0x9ec0, 0x9e56, 0xa760, 0xcaa2, 0xca79, 0xcbeb, 0xcbea, 0xa94f,
- 0xcbed, 0xcbef, 0xcbe4, 0xcbe7, 0xcbee, 0xa950, 0x9f79, 0x9ac7,
- 0xcbe1, 0xcbe5, 0xfaf4, 0xcbe9, 0xce49, 0xa94b, 0xce4d, 0xa8fd,
- 0xcbe6, 0xa8fe, 0xa94c, 0xa945, 0xa941, 0xcbe2, 0xa944, 0xa949,
- 0xa952, 0xcbe3, 0xcbdc, 0xa943, 0xcbdd, 0xcbdf, 0xa946, 0x98a1,
- 0xa948, 0xcbdb, 0xcbe0, 0xa951, 0xa94d, 0xcbe8, 0xa953, 0xfaf8,
- 0xa94a, 0xcbde, 0xa947, 0x89f0, 0x9e47, 0xa942, 0xa940, 0x9df7,
- 0xcbec, 0xa94e, 0x9fd3, 0x9aca, 0xce48, 0xcdfb, 0xce4b, 0x89f1,
- 0xfaf9, 0xcdfd, 0xab78, 0xaba8, 0xab74, 0xaba7, 0xab7d, 0xaba4,
- 0xab72, 0xcdfc, 0xce43, 0xaba3, 0xce4f, 0xaba5, 0x8e5a, 0xab79,
- 0x89f2, 0xce45, 0xce42, 0xab77, 0x89f3, 0xcdfa, 0xaba6, 0xce4a,
- 0xab7c, 0xce4c, 0xaba9, 0xab73, 0xab7e, 0xab7b, 0xce40, 0xaba1,
- 0xce46, 0xce47, 0xab7a, 0xaba2, 0xab76, 0x925d, 0x8b51, 0x92e0,
- 0xab75, 0xcdfe, 0x89f4, 0xce44, 0x9fd4, 0xce4e, 0xd144, 0xadfb,
- 0xd0f1, 0x8a79, 0xd0f6, 0xadf4, 0xae40, 0xd0f4, 0xadef, 0xadf9,
- 0xadfe, 0xd0fb, 0xadfa, 0xadfd, 0x89f5, 0xd0fe, 0xadf5, 0xd0f5,
- 0xd142, 0xd143, 0xadf7, 0xd141, 0xadf3, 0xae43, 0xd0f8, 0xadf1,
- 0x97a7, 0xd146, 0xd0f9, 0xd0fd, 0xadf6, 0xae42, 0xd0fa, 0xadfc,
- 0xd140, 0xd147, 0xd4a1, 0x93ba, 0xd145, 0xae44, 0xadf0, 0xd0fc,
- 0xd0f3, 0x9e58, 0xadf8, 0xd0f2, 0x89f6, 0xd0f7, 0x9e57, 0x89f7,
- 0x8a41, 0xd0f0, 0xae41, 0x89f8, 0xd477, 0xfaf1, 0xb0e4, 0xd4a7,
- 0xb0e2, 0xb0df, 0xd47c, 0xb0db, 0xd4a2, 0xb0e6, 0xd476, 0xd47b,
- 0xd47a, 0xadf2, 0xb0e1, 0xd4a5, 0xd4a8, 0xd473, 0xb3e8, 0x89fa,
- 0xd4a9, 0xb0e7, 0xb0d9, 0xb0d6, 0xd47e, 0xb0d3, 0xfb42, 0xd4a6,
- 0xfabf, 0xb0da, 0xd4aa, 0xd474, 0xd4a4, 0xb0dd, 0xd475, 0xd478,
- 0xd47d, 0xfba3, 0xb0de, 0xb0dc, 0xb0e8, 0xb0e3, 0xfaf7, 0xb0d7,
- 0xb1d2, 0xb0d8, 0xd479, 0xb0e5, 0xb0e0, 0xd4a3, 0xb0d5, 0x9e4e,
- 0xb0d4, 0x94dc, 0x95da, 0x9df8, 0x9f6a, 0xd471, 0xd472, 0xd86a,
- 0x8ab7, 0xb3d7, 0xb3da, 0xd875, 0xb3ee, 0xd878, 0xb3d8, 0xd871,
- 0xb3de, 0xb3e4, 0xb5bd, 0xfb46, 0xb3e2, 0xd86e, 0xb3ef, 0xb3db,
- 0xb3e3, 0xd876, 0xdcd7, 0xd87b, 0xd86f, 0x8a46, 0xd866, 0xd873,
- 0xd86d, 0xb3e1, 0xd879, 0xb3dd, 0xb3f1, 0xb3ea, 0xb3df, 0xb3dc,
- 0xb3e7, 0xd87a, 0xd86c, 0xd872, 0xd874, 0xd868, 0xd877, 0xb3d9,
- 0xd867, 0xfb47, 0xb3e0, 0xb3f0, 0xb3ec, 0xd869, 0xb3e6, 0x9148,
- 0xb3ed, 0xb3e9, 0xb3e5, 0x92de, 0xd870, 0x8b53, 0x9df6, 0xb3eb,
- 0x9bda, 0xdcd5, 0xdcd1, 0x9d7e, 0xdce0, 0xdcca, 0xdcd3, 0xb6e5,
- 0xb6e6, 0xb6de, 0xdcdc, 0xb6e8, 0xdccf, 0xdcce, 0xdccc, 0xdcde,
- 0xb6dc, 0xdcd8, 0xdccd, 0xb6df, 0xdcd6, 0xb6da, 0xdcd2, 0xdcd9,
- 0xdcdb, 0x89fd, 0x99e4, 0xdcdf, 0xb6e3, 0xdccb, 0xb6dd, 0xdcd0,
- 0x9e43, 0xb6d8, 0xb6e4, 0xdcda, 0xb6e0, 0xb6e1, 0xb6e7, 0xb6db,
- 0xa25f, 0xb6d9, 0xdcd4, 0x9de9, 0x8f52, 0xb6e2, 0x9df5, 0x9df0,
- 0xdcdd, 0x99e7, 0xb9cd, 0xb9c8, 0xe155, 0xe151, 0x8bbd, 0xe14b,
- 0xb9c2, 0xb9be, 0xe154, 0xb9bf, 0xe14e, 0xe150, 0xe153, 0x9def,
- 0xb9c4, 0xb9cb, 0xb9c5, 0xe149, 0xb9c6, 0xb9c7, 0xe14c, 0xb9cc,
- 0x9fb7, 0xe14a, 0xe14f, 0xb9c3, 0xe148, 0xb9c9, 0xb9c1, 0xb9c0,
- 0xe14d, 0xe152, 0x9dd0, 0xb9ca, 0x9feb, 0x8da9, 0x9dcf, 0x98e1,
- 0x9de5, 0xe147, 0xbc4d, 0xe547, 0xe544, 0x9dc8, 0xbc47, 0xbc53,
- 0xbc54, 0xbc4a, 0xe542, 0xbc4c, 0xe4f9, 0xbc52, 0xfb4f, 0xe546,
- 0xbc49, 0xe548, 0xbc48, 0xe543, 0xe545, 0xbc4b, 0xe541, 0xe4fa,
- 0xe4f7, 0x9deb, 0xd86b, 0xe4fd, 0xe4f6, 0xe4fc, 0xe4fb, 0xe4f8,
- 0xfb54, 0xbc4f, 0xfb55, 0x9aa2, 0x8ad6, 0xbc4e, 0x9a5f, 0xbc50,
- 0xe4fe, 0xbeb2, 0xe540, 0x9ef5, 0xe945, 0xe8fd, 0x8fb7, 0xbebe,
- 0xe942, 0xbeb6, 0xbeba, 0xe941, 0xbeb9, 0xbeb5, 0xbeb8, 0xbeb3,
- 0xbebd, 0xe943, 0xe8fe, 0xbebc, 0xe8fc, 0xbebb, 0xe944, 0xe940,
- 0xbc51, 0xbebf, 0xe946, 0xbeb7, 0xbeb4, 0x9ad2, 0x9e6a, 0x9ee8,
- 0xecc6, 0xecc8, 0xc07b, 0xecc9, 0xecc7, 0xecc5, 0xecc4, 0xc07d,
- 0xecc3, 0xc07e, 0x8bbf, 0x91c2, 0x9d62, 0xecc1, 0xecc2, 0xc07a,
- 0xc0a1, 0xc07c, 0x9260, 0xecc0, 0xc250, 0xefbc, 0xefba, 0xefbf,
- 0xefbd, 0xefbb, 0xefbe, 0x925e, 0x91c1, 0x8ac5, 0x97a3, 0xc360,
- 0xf1f2, 0xf1f3, 0xc456, 0xf1f4, 0xf1f0, 0xf1f5, 0xf1f1, 0xc251,
- 0x8b6c, 0x8d7e, 0xf3fe, 0xf441, 0xc459, 0xf440, 0xc458, 0xc457,
- 0x9c54, 0xc45a, 0xf5c5, 0xf5c6, 0x9dbd, 0xc4da, 0xc4d9, 0xc4db,
- 0xf5c4, 0xf6d8, 0xf6d7, 0xc56d, 0xc56f, 0xc56e, 0xf6d9, 0xc5c8,
- 0xf8a6, 0xc5f1, 0xf8a5, 0xf8ee, 0x9cc5, 0xc949, 0xa57d, 0xa57c,
- 0xa65f, 0xa65e, 0xc9c7, 0xa65d, 0xc9c6, 0x895b, 0xa779, 0xcaa9,
- 0xcaa8, 0xa777, 0xa77a, 0xfb5c, 0xcaa7, 0xfb5b, 0xa778, 0xfb57,
- 0xcbf0, 0xcbf1, 0xa954, 0x98c7, 0xabaa, 0xfb5a, 0xd148, 0xd149,
- 0xae45, 0xae46, 0xd4ac, 0xb0e9, 0xb0eb, 0xd4ab, 0xb0ea, 0xd87c,
- 0xb3f2, 0xb6e9, 0xb6ea, 0xdce1, 0x9cee, 0xb9cf, 0xb9ce, 0xe549,
- 0xe948, 0xe947, 0x92e2, 0xf96b, 0xa467, 0xc959, 0xc96e, 0xc96f,
- 0xa662, 0xa666, 0xc9c9, 0xa664, 0xa663, 0xc9c8, 0xa665, 0xa661,
- 0x94a7, 0xa660, 0xc9ca, 0xa7a6, 0x8ccc, 0xa7a3, 0x9bd4, 0xa77d,
- 0xcaaa, 0xfb64, 0xfb76, 0xcaab, 0xfb60, 0xa7a1, 0xcaad, 0xa77b,
- 0xcaae, 0xcaac, 0xa77e, 0xa7a2, 0xa7a5, 0xa7a4, 0xa77c, 0xcaaf,
- 0x99e5, 0x9ac2, 0x91fb, 0xa073, 0xa959, 0xcbfe, 0xa95b, 0xa95a,
- 0x9f72, 0xcc40, 0xa958, 0xa957, 0xcbf5, 0xcbf4, 0xcbf2, 0xcbf7,
- 0xcbf6, 0xcbf3, 0xcbfc, 0xcbfd, 0xcbfa, 0xcbf8, 0xa956, 0x9fcc,
- 0xcbfb, 0xa95c, 0xcc41, 0x98a5, 0x92e8, 0xcbf9, 0xabab, 0xa955,
- 0x9bbc, 0x96f3, 0xabac, 0xce54, 0x92e7, 0xce5a, 0xfc67, 0xabb2,
- 0xce58, 0xce5e, 0xce55, 0xce59, 0xce5b, 0xce5d, 0xce57, 0x8b7d,
- 0xce56, 0xce51, 0xce52, 0xabad, 0x9bf4, 0xabaf, 0xabae, 0xce53,
- 0xce5c, 0x9ef7, 0x9ec1, 0xabb1, 0x996f, 0xce50, 0xd153, 0xd152,
- 0xd157, 0xd14e, 0x96f1, 0xd151, 0xd150, 0x8e41, 0xd154, 0xd158,
- 0xae47, 0xae4a, 0x954a, 0xd14f, 0xd155, 0x97e6, 0xae49, 0xd14a,
- 0xabb0, 0xd4ba, 0xd156, 0xd14d, 0xae48, 0xd14c, 0x96f5, 0xd4b1,
- 0x92e6, 0x9f42, 0xb0ec, 0xb0f0, 0xd4c1, 0xd4af, 0xd4bd, 0xb0f1,
- 0xd4bf, 0xfb67, 0xd4c5, 0xd4c9, 0xd4c0, 0xd4b4, 0xd4bc, 0x99a9,
- 0xd4ca, 0xd4c8, 0xd4be, 0xd4b9, 0xd4b2, 0xd8a6, 0xd4b0, 0xb0f5,
- 0xd4b7, 0xb0f6, 0xb0f2, 0xd4ad, 0xd4c3, 0xd4b5, 0xfae6, 0xd4b3,
- 0xd4c6, 0xb0f3, 0xfb69, 0xd4cc, 0xb0ed, 0xb0ef, 0xd4bb, 0xd4b6,
- 0xae4b, 0xb0ee, 0xd4b8, 0xd4c7, 0xd4cb, 0xd4c2, 0xd4c4, 0x97e5,
- 0xd4ae, 0xd8a1, 0xd8aa, 0xd8a9, 0xb3fa, 0xd8a2, 0xb3fb, 0xb3f9,
- 0x967d, 0xd8a4, 0xb3f6, 0xd8a8, 0xfb6c, 0xd8a3, 0xd8a5, 0xd87d,
- 0xb3f4, 0xd8b2, 0xd8b1, 0xd8ae, 0xb3f3, 0xb3f7, 0xb3f8, 0xd14b,
- 0xd8ab, 0xb3f5, 0xb0f4, 0xd8ad, 0xd87e, 0xd8b0, 0xd8af, 0x99a2,
- 0xd8b3, 0xdcef, 0xd8ac, 0x9abb, 0x9a65, 0x944e, 0xd8a7, 0xdce7,
- 0xb6f4, 0xb6f7, 0xb6f2, 0xdce6, 0xdcea, 0xdce5, 0xb6ec, 0xb6f6,
- 0xdce2, 0xb6f0, 0xdce9, 0xb6ee, 0xb6ed, 0xdcec, 0xb6ef, 0xdcee,
- 0xfb6e, 0xdceb, 0xb6eb, 0x99df, 0xb6f5, 0xdcf0, 0xdce4, 0xdced,
- 0xdce3, 0x98e3, 0xb6f1, 0x9254, 0xb6f3, 0xdce8, 0xdcf1, 0x967b,
- 0x8aaf, 0xe15d, 0xb9d0, 0xe163, 0xb9d5, 0xe15f, 0xe166, 0xe157,
- 0xb9d7, 0xb9d1, 0xe15c, 0xbc55, 0xe15b, 0xe164, 0xb9d2, 0xb9d6,
- 0xe15a, 0xe160, 0xe165, 0xe156, 0xb9d4, 0xe15e, 0xe162, 0xe168,
- 0xe158, 0xe161, 0x8c77, 0xb9d3, 0xe167, 0xe159, 0x8baf, 0x9ebd,
- 0xbc59, 0xe54b, 0xbc57, 0xbc56, 0xe54d, 0xe552, 0xe54e, 0xe551,
- 0xbc5c, 0x9ee6, 0xbea5, 0xbc5b, 0xfb6f, 0xe54a, 0xe550, 0xbc5a,
- 0xe54f, 0x8ee1, 0xe54c, 0xbc58, 0x9b7d, 0x9c7e, 0xe94d, 0xf9d9,
- 0xe94f, 0xe94a, 0xbec1, 0xe94c, 0xbec0, 0xe94e, 0xbec3, 0xe950,
- 0xbec2, 0xe949, 0xe94b, 0x92ea, 0xc0a5, 0xeccc, 0x8c78, 0xc0a4,
- 0xeccd, 0xc0a3, 0xeccb, 0xc0a2, 0xecca, 0xc253, 0xc252, 0xf1f6,
- 0xf1f8, 0xfb72, 0xf1f7, 0xc361, 0xc362, 0xfb71, 0xc363, 0xf442,
- 0xc45b, 0xf7d3, 0xf7d2, 0xc5f2, 0xa468, 0xa4d0, 0xa7a7, 0x895c,
- 0x98f0, 0x96f2, 0xce5f, 0xb3fc, 0xb3fd, 0xfb74, 0xdcf2, 0xb9d8,
- 0xe169, 0xe553, 0x8bc1, 0xc95a, 0x895d, 0x89de, 0xcab0, 0x895e,
- 0xc6ca, 0xcc42, 0xce60, 0xd159, 0xae4c, 0xfe42, 0xf1f9, 0xc4dc,
- 0xa469, 0xa57e, 0xc970, 0xa667, 0xa668, 0xa95d, 0xfb7b, 0xb0f7,
- 0xb9da, 0xb9db, 0xb9d9, 0xa46a, 0xa4d1, 0xa4d3, 0xa4d2, 0xc95b,
- 0xa4d4, 0xa5a1, 0xc971, 0xa5a2, 0x895f, 0x8960, 0xa669, 0xa66a,
- 0xc9cb, 0xa7a8, 0xcab1, 0xa961, 0xcc43, 0xa95f, 0xa960, 0xa95e,
- 0xd15a, 0xabb6, 0xabb5, 0xabb7, 0xabb4, 0xce61, 0xa962, 0xabb3,
- 0xae4d, 0xae4e, 0xae4f, 0xd4cd, 0xb3fe, 0xd8b4, 0xb0f8, 0x9bcd,
- 0xb6f8, 0xb9dd, 0xb9dc, 0xe16a, 0xbc5d, 0xbec4, 0xefc0, 0xf6da,
- 0xf7d4, 0xa46b, 0xa5a3, 0x9dd3, 0xa5a4, 0xc9d1, 0xa66c, 0xa66f,
- 0xc9cf, 0xc9cd, 0xa66e, 0xc9d0, 0xc9d2, 0xc9cc, 0xa671, 0xa670,
- 0xa66d, 0xa66b, 0xc9ce, 0x984c, 0xa7b3, 0xa7b0, 0xcab6, 0xcab9,
- 0xcab8, 0xa7aa, 0xa7b2, 0x9752, 0xa7af, 0xcab5, 0xcab3, 0xa7ae,
- 0x95c3, 0xa7a9, 0xa7ac, 0x9bb6, 0xcab4, 0xcabb, 0xcab7, 0xa7ad,
- 0xa7b1, 0xa7b4, 0xcab2, 0xcaba, 0xa7ab, 0x9ab9, 0xa967, 0xa96f,
- 0x97b3, 0xcc4f, 0xcc48, 0xa970, 0xcc53, 0xcc44, 0xcc4b, 0x9f74,
- 0x92f1, 0xa966, 0xcc45, 0xa964, 0xcc4c, 0xcc50, 0xa963, 0xcc51,
- 0xcc4a, 0xcc4d, 0x97df, 0xa972, 0xa969, 0xcc54, 0xcc52, 0xfba6,
- 0xa96e, 0xa96c, 0xcc49, 0xa96b, 0xcc47, 0xcc46, 0xa96a, 0xa968,
- 0xa971, 0xa96d, 0xa965, 0xcc4e, 0xabb9, 0xfbab, 0xabc0, 0xce6f,
- 0xabb8, 0xce67, 0xce63, 0xce73, 0xce62, 0xabbb, 0xce6c, 0xabbe,
- 0xabc1, 0xabbc, 0xce70, 0xabbf, 0x9877, 0xae56, 0xce76, 0xce64,
- 0x9854, 0x95c5, 0xce66, 0xce6d, 0xce71, 0xce75, 0xce72, 0xce6b,
- 0xce6e, 0x9d55, 0xfbb2, 0xce68, 0xabc3, 0xce6a, 0xce69, 0xce74,
- 0xabba, 0xce65, 0xabc2, 0x957e, 0xabbd, 0xae5c, 0xd162, 0x9742,
- 0xae5b, 0x94e6, 0xd160, 0xae50, 0x92f5, 0xae55, 0xd15f, 0xd15c,
- 0xd161, 0xae51, 0xd15b, 0x8cc5, 0xae54, 0xae52, 0xd163, 0xae53,
- 0xae57, 0x92fd, 0xae58, 0xfba2, 0xae5a, 0x9c51, 0xae59, 0x94e9,
- 0x985c, 0x92f0, 0xd15d, 0xd15e, 0xd164, 0xd4d4, 0xb0f9, 0xd8c2,
- 0xd4d3, 0xd4e6, 0xb140, 0x944c, 0xd4e4, 0xb0fe, 0xb0fa, 0xd4ed,
- 0xd4dd, 0xd4e0, 0x916b, 0xb143, 0xd4ea, 0xd4e2, 0xb0fb, 0xb144,
- 0xd4e7, 0xd4e5, 0xd4d6, 0xd4eb, 0xd4df, 0xd4da, 0x8b78, 0xd4d0,
- 0xd4ec, 0xd4dc, 0xd4cf, 0x94e2, 0xb142, 0xd4e1, 0xd4ee, 0xd4de,
- 0xd4d2, 0xd4d7, 0xd4ce, 0x984f, 0xb141, 0xfbb5, 0xd4db, 0xd4d8,
- 0xb0fc, 0xd4d1, 0x9271, 0xd4e9, 0xb0fd, 0x9365, 0xd4d9, 0xd4d5,
- 0x985b, 0xd4e8, 0x9850, 0xb440, 0xd8bb, 0x97bc, 0xd8b8, 0xd8c9,
- 0xd8bd, 0xd8ca, 0x92f3, 0xb442, 0x9340, 0x984d, 0xd8c6, 0xd8c3,
- 0x9572, 0xfdef, 0xd8c4, 0xd8c7, 0xd8cb, 0xd4e3, 0xd8cd, 0xdd47,
- 0xfdc1, 0xb443, 0xd8ce, 0xd8b6, 0xd8c0, 0xfbba, 0xd8c5, 0x92eb,
- 0xb441, 0xb444, 0xd8cc, 0xd8cf, 0xd8ba, 0xd8b7, 0xfc73, 0x97b7,
- 0xd8b9, 0xd8be, 0xd8bc, 0xb445, 0xd8c8, 0xfbb4, 0xd8bf, 0xd8c1,
- 0xd8b5, 0xdcfa, 0xdcf8, 0xb742, 0xb740, 0xdd43, 0xdcf9, 0xdd44,
- 0xdd40, 0xdcf7, 0xdd46, 0xdcf6, 0xdcfd, 0xb6fe, 0xb6fd, 0xb6fc,
- 0xdcfb, 0xdd41, 0xb6f9, 0xb741, 0x90a7, 0xdcf4, 0xdcfe, 0xdcf3,
- 0xdcfc, 0xb6fa, 0xdd42, 0xdcf5, 0xb6fb, 0xdd45, 0x9741, 0x92f4,
- 0xfbbc, 0xe16e, 0xb9e2, 0xb9e1, 0xb9e3, 0xe17a, 0xe170, 0xe176,
- 0xe16b, 0xe179, 0xe178, 0xe17c, 0xe175, 0xb9de, 0xe174, 0xb9e4,
- 0x9577, 0xe16d, 0xb9df, 0xe17b, 0xb9e0, 0xe16f, 0xe172, 0xe177,
- 0xe171, 0xe16c, 0x9ee2, 0x8f78, 0xe173, 0xe555, 0xbc61, 0xe558,
- 0xe557, 0xe55a, 0xe55c, 0xf9dc, 0xbc5f, 0xe556, 0x9672, 0xe554,
- 0xe55d, 0xe55b, 0xe559, 0xe55f, 0xe55e, 0xbc63, 0xbc5e, 0xbc60,
- 0xbc62, 0x9eb5, 0xe560, 0xe957, 0x964b, 0xe956, 0xe955, 0x8cac,
- 0xe958, 0xe951, 0xe952, 0xe95a, 0xe953, 0xbec5, 0xe95c, 0xa0fa,
- 0xe95b, 0xe954, 0xecd1, 0xc0a8, 0xeccf, 0xecd4, 0xecd3, 0xe959,
- 0xc0a7, 0x9575, 0xecd2, 0xecce, 0xecd6, 0xecd5, 0xc0a6, 0xecd0,
- 0xbec6, 0xc254, 0xefc1, 0xf1fa, 0xf1fb, 0xf1fc, 0xc45c, 0x90da,
- 0xc45d, 0x9367, 0xf443, 0xfea4, 0xf5c8, 0xf5c7, 0x90df, 0xf6db,
- 0xf6dc, 0xf7d5, 0xf8a7, 0x9354, 0xa46c, 0xa46d, 0xa46e, 0xa4d5,
- 0xa5a5, 0xc9d3, 0xa672, 0xa673, 0xa7b7, 0xa7b8, 0xa7b6, 0xa7b5,
- 0xa973, 0xcc55, 0xa975, 0xa974, 0xcc56, 0x8961, 0x8bb4, 0xabc4,
- 0xae5d, 0xd165, 0x9dc0, 0xd4f0, 0xb145, 0xb447, 0xd4ef, 0xb446,
- 0x8e48, 0xb9e5, 0xfbc5, 0xe17d, 0xbec7, 0xc0a9, 0xecd7, 0xfbc7,
- 0xc45e, 0xc570, 0xc6cb, 0xc972, 0xfa79, 0xa5a6, 0xc973, 0xa676,
- 0xa674, 0xa675, 0xa677, 0xa7ba, 0xa7b9, 0xcabc, 0xa7bb, 0x9e67,
- 0xcabd, 0xcc57, 0xcc58, 0x8cd9, 0xa976, 0xa978, 0xa97a, 0xa977,
- 0xa97b, 0xa979, 0xfbd2, 0x8962, 0x8963, 0xabc8, 0xabc5, 0xabc7,
- 0xabc9, 0xabc6, 0xd166, 0xce77, 0xfc7d, 0xd168, 0xd167, 0xae63,
- 0xae5f, 0xae60, 0xae62, 0xae64, 0xae61, 0xae66, 0xae65, 0xb14a,
- 0xd4f2, 0xd4f1, 0xb149, 0x9f6b, 0xb148, 0xb147, 0xb14b, 0xb146,
- 0xd8d5, 0xd8d2, 0xb449, 0xd8d1, 0xd8d6, 0xb44b, 0xd8d4, 0xb448,
- 0xb44a, 0xd8d3, 0xfbcc, 0xdd48, 0xfeae, 0xdd49, 0xdd4a, 0xb9e6,
- 0xb9ee, 0xe17e, 0xb9e8, 0xb9ec, 0xe1a1, 0xb9ed, 0xb9e9, 0xb9ea,
- 0xb9e7, 0xb9eb, 0xbc66, 0xd8d0, 0xbc67, 0xbc65, 0xbc64, 0xe95d,
- 0xbec8, 0xecd8, 0xecd9, 0xfbd1, 0xc364, 0xc45f, 0xa46f, 0xa678,
- 0xfb75, 0xabca, 0xd169, 0xae67, 0xfbd4, 0xb14e, 0xb14d, 0xb14c,
- 0xb44c, 0xb44d, 0xd8d7, 0xb9ef, 0xbec9, 0xa470, 0xc95c, 0xa4d6,
- 0xc974, 0xfbd6, 0xfbd8, 0xc9d4, 0xa679, 0xa97c, 0x8b5d, 0x934c,
- 0xdd4b, 0x9ae2, 0xa471, 0x8bc9, 0xa4d7, 0xc9d5, 0xcabe, 0xcabf,
- 0xa7bc, 0xd8d8, 0xb44e, 0xdd4c, 0xc0aa, 0xa472, 0xa4a8, 0xa4d8,
- 0xc975, 0xa5a7, 0xa7c0, 0xa7bf, 0xa7bd, 0xa7be, 0xcc59, 0xa97e,
- 0xa9a1, 0xcc5a, 0xa97d, 0xfbdb, 0x9fc9, 0xabce, 0xce78, 0xabcd,
- 0xabcb, 0xabcc, 0xae6a, 0xae68, 0x9f44, 0xd16b, 0xae69, 0xd16a,
- 0xae5e, 0xd4f3, 0xb150, 0xb151, 0x98ed, 0xb14f, 0xb9f0, 0xe1a2,
- 0xbc68, 0xbc69, 0xe561, 0xc0ab, 0xefc2, 0xefc3, 0xc4dd, 0xf8a8,
- 0xc94b, 0xa4d9, 0xa473, 0xc977, 0xc976, 0xa67a, 0xc9d7, 0xc9d8,
- 0xc9d6, 0xc9d9, 0xfbdd, 0xcac7, 0xcac2, 0xcac4, 0xcac6, 0xcac3,
- 0xa7c4, 0xcac0, 0xcac1, 0xa7c1, 0xa7c2, 0xcac5, 0xcac8, 0xa7c3,
- 0xcac9, 0x8df2, 0x8964, 0xfdf2, 0xcc68, 0x934d, 0xcc62, 0xcc5d,
- 0xa9a3, 0xcc65, 0xcc63, 0xcc5c, 0xcc69, 0xcc6c, 0xcc67, 0xcc60,
- 0xa9a5, 0xcc66, 0xa9a6, 0xcc61, 0xcc64, 0xcc5b, 0xcc5f, 0xcc6b,
- 0xa9a7, 0xa9a8, 0xcc5e, 0xcc6a, 0xa9a2, 0xa9a4, 0xfbe7, 0xa0f2,
- 0x9868, 0xceab, 0xcea4, 0xceaa, 0xcea3, 0xcea5, 0xce7d, 0xce7b,
- 0xceac, 0xcea9, 0xce79, 0x9f58, 0xabd0, 0xcea7, 0xcea8, 0xcea6,
- 0xce7c, 0xce7a, 0xabcf, 0xcea2, 0xce7e, 0xcea1, 0xcead, 0x8d73,
- 0xae6f, 0xfbde, 0xae6e, 0xd16c, 0xae6b, 0xd16e, 0xfbdf, 0xae70,
- 0xd16f, 0xae73, 0x8c48, 0xae71, 0xd170, 0xceae, 0xd172, 0xae6d,
- 0xae6c, 0xd16d, 0xd171, 0xae72, 0xb153, 0xb152, 0xd4f5, 0xd4f9,
- 0xd4fb, 0xb154, 0xd4fe, 0xfbe3, 0xb158, 0xd541, 0xb15a, 0x8da8,
- 0xb156, 0xb15e, 0xfbe4, 0xb15b, 0xd4f7, 0xb155, 0xd4f6, 0xd4f4,
- 0xd543, 0xd4f8, 0xb157, 0xd542, 0xb15c, 0xd4fd, 0xd4fc, 0xb15d,
- 0xd4fa, 0xb159, 0x9c75, 0xd544, 0x9878, 0xd540, 0xd8e7, 0xd8ee,
- 0xd8e3, 0xb451, 0xd8df, 0xd8ef, 0xd8d9, 0xd8ec, 0xd8ea, 0xd8e4,
- 0xd8ed, 0xd8e6, 0x8d60, 0xd8de, 0xd8f0, 0xd8dc, 0xd8e9, 0xd8da,
- 0xd8f1, 0xfbe5, 0xb452, 0x8d61, 0xd8eb, 0xdd4f, 0xd8dd, 0xb44f,
- 0xd8e1, 0xb450, 0xd8e0, 0xd8e5, 0xd8e2, 0x8d62, 0xa0a1, 0xd8e8,
- 0x9c40, 0xdd53, 0xdd56, 0xdd4e, 0xdd50, 0xdd55, 0xdd54, 0xb743,
- 0xd8db, 0xdd52, 0xb744, 0x98ad, 0xdd4d, 0xdd51, 0x9eea, 0xe1a9,
- 0xe1b0, 0xe1a7, 0x8cd4, 0xe1ae, 0xe1a5, 0xe1ad, 0xe1b1, 0xe1a4,
- 0xe1a8, 0xe1a3, 0xb9f1, 0x9ceb, 0xe1a6, 0xb9f2, 0xe1ac, 0xe1ab,
- 0xe1aa, 0xfbe0, 0xe1af, 0x9f51, 0xe565, 0xe567, 0xbc6b, 0xe568,
- 0xe563, 0xe562, 0xe56c, 0xe56a, 0xbc6a, 0xe56d, 0xe564, 0xe569,
- 0xe56b, 0xe566, 0x8d65, 0xe961, 0xe966, 0xe960, 0xe965, 0x9cf1,
- 0xe95e, 0xe968, 0xe964, 0xe969, 0xe963, 0xe95f, 0xe967, 0xe96a,
- 0xe962, 0xfc58, 0xecda, 0xc0af, 0x8d66, 0xc0ad, 0xc0ac, 0xc0ae,
- 0xefc4, 0x9654, 0xf172, 0xf1fd, 0xf444, 0xf445, 0xc460, 0xf5c9,
- 0xc4de, 0xf5ca, 0xf6de, 0xc572, 0xc571, 0xf6dd, 0xc5c9, 0xfbe8,
- 0xf7d6, 0xc6cc, 0xa474, 0xa67b, 0xc9da, 0xcaca, 0xa8b5, 0xb15f,
- 0xa475, 0xa5aa, 0xa5a9, 0xa5a8, 0xa7c5, 0xae74, 0xdd57, 0xa476,
- 0xa477, 0xa478, 0xa4da, 0x9fce, 0xabd1, 0xceaf, 0xb453, 0xa479,
- 0xc95d, 0xa5ab, 0xa5ac, 0xc978, 0xa67c, 0xfbfc, 0xcacb, 0x9ae4,
- 0xa7c6, 0xcacc, 0xa9ae, 0x9f75, 0xcc6e, 0xa9ac, 0xa9ab, 0xcc6d,
- 0xa9a9, 0xcc6f, 0xa9aa, 0xa9ad, 0xabd2, 0xabd4, 0xceb3, 0xceb0,
- 0xceb1, 0xceb2, 0xceb4, 0xabd3, 0xd174, 0xd173, 0xae76, 0xae75,
- 0xfbf1, 0xb162, 0xd546, 0xb161, 0xb163, 0xb160, 0xb455, 0xd545,
- 0xb456, 0xd8f3, 0x8d69, 0xb457, 0xd8f2, 0xb454, 0x934f, 0xdd5a,
- 0xdd5c, 0xb745, 0xdd5b, 0xdd59, 0xdd58, 0xe1b4, 0xb9f7, 0xb9f5,
- 0xb9f6, 0xe1b2, 0xe1b3, 0xb9f3, 0xe571, 0xe56f, 0x934e, 0xbc6d,
- 0xe570, 0xbc6e, 0xbc6c, 0xb9f4, 0xe96d, 0xe96b, 0xe96c, 0xe56e,
- 0xecdc, 0xc0b0, 0xecdb, 0xefc5, 0xefc6, 0xe96e, 0xf1fe, 0xa47a,
- 0xa5ad, 0xa67e, 0xc9db, 0xa67d, 0xa9af, 0xb746, 0xfbf4, 0xa4db,
- 0xa5ae, 0xabd5, 0xb458, 0xc6ce, 0xc979, 0xc97a, 0xfbc3, 0xc9dc,
- 0x8965, 0xa7c8, 0xcad0, 0xcace, 0xa7c9, 0xcacd, 0xcacf, 0xcad1,
- 0xa7c7, 0x8c7a, 0xa9b3, 0xa9b4, 0xa9b1, 0x8c7b, 0xa9b0, 0xceb8,
- 0xa9b2, 0xabd6, 0xceb7, 0xceb9, 0xceb6, 0xceba, 0xabd7, 0xae79,
- 0xd175, 0xd177, 0xae77, 0xd178, 0xae78, 0xd176, 0xceb5, 0xd547,
- 0xd54a, 0xd54b, 0xd548, 0xb167, 0xb166, 0xb164, 0xb165, 0xd549,
- 0x8d6a, 0xb168, 0xb45a, 0xb45b, 0xb45c, 0xdd5d, 0xdd5f, 0xdd61,
- 0xb748, 0xb747, 0xb459, 0xdd60, 0xdd5e, 0x9353, 0xe1b8, 0x9dfb,
- 0xe1b6, 0xe1bc, 0xb9f8, 0xe1bd, 0xe1ba, 0xb9f9, 0xe1b7, 0xe1b5,
- 0xe1bb, 0xbc70, 0xe573, 0xe1b9, 0xbc72, 0xe574, 0xbc71, 0xbc74,
- 0xe575, 0xbc6f, 0xbc73, 0xe973, 0xe971, 0xe970, 0xe972, 0xe96f,
- 0xc366, 0xf446, 0xf447, 0xf5cb, 0xf6df, 0xc655, 0xfbfd, 0xa9b5,
- 0xa7ca, 0x9059, 0xfc40, 0xabd8, 0xfc41, 0xfc43, 0xa47b, 0xa4dc,
- 0xa5af, 0xc9dd, 0xa7cb, 0xcad2, 0xcebb, 0xabd9, 0xb9fa, 0xa47c,
- 0x9361, 0xfc46, 0x9362, 0xa6a1, 0xb749, 0xa47d, 0xa4dd, 0xa4de,
- 0xa5b1, 0xa5b0, 0xc9de, 0xa6a2, 0xcad3, 0xa7cc, 0xcc71, 0xcc72,
- 0xcc73, 0x8d6b, 0xa9b6, 0xa9b7, 0xcc70, 0xa9b8, 0xabda, 0xcebc,
- 0xd17a, 0xae7a, 0xd179, 0xb169, 0xd54c, 0xb16a, 0xd54d, 0xfc4c,
- 0xb45d, 0xdd62, 0xe1bf, 0xe1be, 0xb9fb, 0xbc75, 0xe576, 0xbeca,
- 0xe974, 0xc0b1, 0x95b8, 0xc573, 0xf7d8, 0xc6d0, 0x8bca, 0xcc74,
- 0xcebd, 0xb16b, 0xd8f4, 0xb74a, 0x987a, 0xc255, 0xc6d1, 0xa7ce,
- 0xfc51, 0xa7cd, 0xabdb, 0xd17b, 0xb16d, 0xb343, 0xb16e, 0xb16c,
- 0xb45e, 0xe1c0, 0xb9fc, 0xbc76, 0xfc54, 0xc94c, 0xc9df, 0xcad5,
- 0xa7cf, 0xcad4, 0xa7d0, 0xfaaf, 0xa9bc, 0xcc77, 0xcc76, 0xa9bb,
- 0xa9b9, 0xa9ba, 0xcc75, 0x8d6c, 0xabdd, 0xcebe, 0xabe0, 0xabdc,
- 0xabe2, 0xabde, 0xabdf, 0xabe1, 0xae7d, 0xae7c, 0xae7b, 0xd54f,
- 0xb16f, 0xb172, 0xb170, 0xd54e, 0xb175, 0xb171, 0xd550, 0xb174,
- 0xb173, 0xfa61, 0xd8f6, 0xd8f5, 0xfc57, 0xb461, 0xb45f, 0xb460,
- 0xd8f7, 0xb74b, 0xdd64, 0xb74c, 0xdd63, 0x9b70, 0xe577, 0xbc78,
- 0xe1c1, 0xbc77, 0xb9fd, 0xa051, 0xecde, 0xe975, 0xc0b2, 0xecdd,
- 0xf240, 0xf448, 0xf449, 0x8c7c, 0xa4df, 0x8bcb, 0xa5b2, 0xc97b,
- 0xa7d2, 0xa7d4, 0xc9e2, 0xcad8, 0xcad7, 0xcad6, 0xc9e1, 0xc9e0,
- 0xa6a4, 0xa7d3, 0xa7d1, 0xa6a3, 0x936e, 0xa9bd, 0xcc78, 0xfcd5,
- 0xa9be, 0xcadd, 0xcadf, 0xcade, 0xcc79, 0xcada, 0xa7d8, 0xa7d6,
- 0xcad9, 0xcadb, 0xcae1, 0xa7d5, 0xcadc, 0xcae5, 0xa9c0, 0xcae2,
- 0xa7d7, 0xcae0, 0xcae3, 0xa9bf, 0xa9c1, 0xcae4, 0xccaf, 0xcca2,
- 0xcc7e, 0xccae, 0xcca9, 0xabe7, 0xa9c2, 0xccaa, 0xccad, 0xabe3,
- 0xccac, 0xa9c3, 0xa9c8, 0xa9c6, 0xcca3, 0xcc7c, 0xcca5, 0xa9cd,
- 0xccb0, 0xabe4, 0xcca6, 0xabe5, 0xa9c9, 0xcca8, 0xfca9, 0xcecd,
- 0xabe6, 0xcc7b, 0xa9ca, 0xabe8, 0xa9cb, 0xa9c7, 0xa9cc, 0xcca7,
- 0xcc7a, 0xccab, 0xa9c4, 0xfc61, 0xcc7d, 0xcca4, 0xcca1, 0xa9c5,
- 0xcebf, 0xcec0, 0x8966, 0xceca, 0xd1a1, 0xcecb, 0xabee, 0xcece,
- 0xcec4, 0xabed, 0xcec6, 0xcec7, 0xfacb, 0xcec9, 0xabe9, 0xaea3,
- 0xf9da, 0xcec5, 0xcec1, 0xaea4, 0xcecf, 0xae7e, 0xd17d, 0xcec8,
- 0xd17c, 0xcec3, 0xcecc, 0xabec, 0xaea1, 0xabf2, 0xaea2, 0xced0,
- 0xd17e, 0xabeb, 0xaea6, 0xabf1, 0xabf0, 0xabef, 0xaea5, 0xced1,
- 0xaea7, 0xabea, 0xcec2, 0x937a, 0xa0e0, 0x936b, 0xb176, 0xd1a4,
- 0xd1a6, 0xd1a8, 0xaea8, 0xaeae, 0xd553, 0xd1ac, 0xd1a3, 0xb178,
- 0xd551, 0xaead, 0xaeab, 0xd1ae, 0xd552, 0xd1a5, 0xaeac, 0xd1a9,
- 0xaeaf, 0xd1ab, 0xaeaa, 0xd1aa, 0xd1ad, 0xd1a7, 0xfc6b, 0xaea9,
- 0xb179, 0xd1a2, 0xb177, 0xa0dc, 0x9468, 0xb17a, 0xd555, 0xd55e,
- 0xb464, 0xfc6d, 0xb17c, 0xb1a3, 0xb465, 0xd560, 0xb1aa, 0xd8f9,
- 0xd556, 0xb1a2, 0xb1a5, 0xb17e, 0xd554, 0xd562, 0xd565, 0xd949,
- 0xd563, 0xd8fd, 0xb1a1, 0xb1a8, 0xb1ac, 0xd55d, 0xd8f8, 0xd561,
- 0xb17b, 0xd8fa, 0xd564, 0xd8fc, 0xd559, 0xb462, 0xd557, 0xd558,
- 0xb1a7, 0x8d71, 0xb1a6, 0xd55b, 0xb1ab, 0xd55f, 0xb1a4, 0xd55c,
- 0xfd64, 0xb1a9, 0xb466, 0xb463, 0xd8fb, 0x99ba, 0xd55a, 0xb17d,
- 0x9ad0, 0x9a61, 0xa0e5, 0xb46b, 0xb46f, 0xd940, 0xb751, 0xb46d,
- 0xd944, 0xb471, 0xdd65, 0xd946, 0xb753, 0xb469, 0xb46c, 0xd947,
- 0xa05b, 0xd948, 0xd94e, 0xb473, 0xb754, 0xd94a, 0xd94f, 0xd943,
- 0xb75e, 0x96ac, 0xb755, 0xb472, 0xd941, 0xd950, 0x9740, 0xb75d,
- 0xb470, 0xb74e, 0xd94d, 0xb474, 0xd945, 0xd8fe, 0xb46a, 0xd942,
- 0xd94b, 0x9ef1, 0xb74d, 0xb752, 0xb467, 0xd94c, 0xb750, 0x8c4d,
- 0xb468, 0xb75c, 0xe1c3, 0xdd70, 0xdd68, 0xe1c2, 0xdd6c, 0xdd6e,
- 0x9f7e, 0xdd6b, 0xb75b, 0xdd6a, 0xb75f, 0xe1d2, 0x8d72, 0xb75a,
- 0xba40, 0xdd71, 0xe1c4, 0xfc76, 0xb758, 0xdd69, 0xdd6d, 0xb9fe,
- 0xb74f, 0xdd66, 0xdd67, 0xba41, 0xb757, 0xb759, 0xb756, 0xdd6f,
- 0x96a9, 0xe1c8, 0xe1c9, 0xe1ce, 0xbc7d, 0xe1d5, 0xba47, 0xa06e,
- 0xba46, 0xe1d0, 0xfcaa, 0xbc7c, 0xe1c5, 0xba45, 0xfbcd, 0xe1d4,
- 0xba43, 0xba44, 0xfc74, 0xe1d1, 0xe5aa, 0xbc7a, 0xb46e, 0xe1d3,
- 0xbca3, 0xe1cb, 0xbc7b, 0xa074, 0xbca2, 0xe1c6, 0xe1ca, 0xe1c7,
- 0xe1cd, 0xba48, 0xbc79, 0xba42, 0xe57a, 0xe1cf, 0xbca1, 0xa071,
- 0xbca4, 0xe1cc, 0xfc79, 0xbc7e, 0xe579, 0xfc7c, 0xe57e, 0xbece,
- 0xe578, 0xe9a3, 0xe5a9, 0xbca8, 0xbca6, 0xbecc, 0xe5a6, 0xe5a2,
- 0xbcac, 0x9c50, 0xe978, 0x9379, 0x9378, 0xbcaa, 0xe5a1, 0xa0dd,
- 0xe976, 0xe5a5, 0xe5a8, 0xe57d, 0xbcab, 0xbca5, 0xe977, 0xbecd,
- 0xe5a7, 0xbca7, 0xbca9, 0xe5a4, 0xbcad, 0xe5a3, 0xe57c, 0xe57b,
- 0xbecb, 0xe5ab, 0xe97a, 0xece0, 0xbed0, 0x8d75, 0xe9a2, 0x8d76,
- 0xe97e, 0xece1, 0xbed1, 0xe9a1, 0x9374, 0xe97c, 0xc0b4, 0xecdf,
- 0xe979, 0xe97b, 0xc0b5, 0xbed3, 0xc0b3, 0xbed2, 0xc0b7, 0xe97d,
- 0xbecf, 0x8d77, 0xfca5, 0xfca2, 0xefcf, 0xefc7, 0x90c3, 0xece7,
- 0xefc8, 0xece3, 0xa079, 0xc256, 0xece5, 0xece4, 0xc0b6, 0xece2,
- 0xece6, 0xefd0, 0xefcc, 0xefce, 0xefc9, 0xefca, 0xefcd, 0xefcb,
- 0xc367, 0xc36a, 0xc369, 0xc368, 0xc461, 0xf44a, 0xc462, 0xf241,
- 0xc4df, 0xf5cc, 0xc4e0, 0xc574, 0xc5ca, 0xf7d9, 0xf7da, 0xf7db,
- 0xf9ba, 0xa4e0, 0xc97c, 0xa5b3, 0xa6a6, 0xa6a7, 0xa6a5, 0xa6a8,
- 0xa7da, 0xa7d9, 0xccb1, 0xa9cf, 0xa9ce, 0xd1af, 0xb1ad, 0xb1ae,
- 0xb475, 0xdd72, 0xb760, 0xb761, 0xdd74, 0xdd76, 0xdd75, 0xe1d7,
- 0xe1d6, 0xba49, 0xe1d8, 0x8d79, 0xe5ac, 0xbcae, 0xbed4, 0xc0b8,
- 0xc257, 0xc0b9, 0xa4e1, 0x8bfc, 0xa076, 0xcae6, 0xccb2, 0xa9d1,
- 0xa9d0, 0xa9d2, 0xabf3, 0xced2, 0xced3, 0xd1b0, 0xaeb0, 0xb1af,
- 0xb476, 0xd951, 0xa4e2, 0x8bcd, 0xa47e, 0xa4e3, 0xc97d, 0xa5b7,
- 0xa5b6, 0xa5b4, 0xa5b5, 0xa6ab, 0xc9e9, 0xc9eb, 0xa6aa, 0xc9e3,
- 0xc9e4, 0xc9ea, 0xc9e6, 0xc9e8, 0xa6a9, 0xc9e5, 0xc9ec, 0xc9e7,
- 0x9f5a, 0xa7e1, 0xa7ea, 0xa7e8, 0xcaf0, 0xcaed, 0xcaf5, 0xa7e6,
- 0xcaf6, 0xa7df, 0xcaf3, 0xa7e5, 0xcaef, 0xcaee, 0xa7e3, 0xcaf4,
- 0xa7e4, 0xa9d3, 0xa7de, 0xcaf1, 0x9ff4, 0xcae7, 0xa7db, 0x9fba,
- 0xa7ee, 0xcaec, 0xcaf2, 0xa7e0, 0xa7e2, 0xcae8, 0xcae9, 0xcaea,
- 0x8d7a, 0xa7ed, 0xa7e7, 0xa7ec, 0xcaeb, 0xa7eb, 0xa7dd, 0xa7dc,
- 0xa7e9, 0x9e45, 0x93b0, 0xa075, 0xa9e1, 0xccbe, 0xccb7, 0xa9dc,
- 0xa9ef, 0xccb3, 0xccba, 0xccbc, 0xccbf, 0xa9ea, 0xccbb, 0xccb4,
- 0xa9e8, 0xccb8, 0xccc0, 0xa9d9, 0xccbd, 0xa9e3, 0xa9e2, 0xccb6,
- 0xa9d7, 0xa9d8, 0x9b46, 0xa9d6, 0xfcae, 0xa9ee, 0xa9e6, 0xa9e0,
- 0xa9d4, 0xccb9, 0xa9df, 0xa9d5, 0xa9e7, 0xa9f0, 0xced4, 0xa9e4,
- 0xccb5, 0xa9da, 0xa9dd, 0xa9de, 0xfcb0, 0xa9ec, 0xa9ed, 0xa9eb,
- 0xa9e5, 0xa9e9, 0xa9db, 0xabf4, 0xfa51, 0x8d7b, 0xceda, 0xac41,
- 0xabf8, 0xabfa, 0xac40, 0xcee6, 0xabfd, 0xd1b1, 0xaeb1, 0xac43,
- 0xced7, 0xcedf, 0xabfe, 0xcede, 0xcedb, 0xcee3, 0xcee5, 0xabf7,
- 0xabfb, 0xac42, 0xaeb3, 0xcee0, 0xabf9, 0xac45, 0xced9, 0xabfc,
- 0xaeb2, 0xabf6, 0xced6, 0xcedd, 0xced5, 0xced8, 0xcedc, 0xd1b2,
- 0xac44, 0xcee1, 0xcee2, 0xcee4, 0xabf5, 0x8d7c, 0xaec1, 0xd1be,
- 0xaebf, 0xaec0, 0xd1b4, 0xd1c4, 0x9ed6, 0xaeb6, 0x93ac, 0xd566,
- 0xd1c6, 0xd1c0, 0x9f5b, 0xd1b7, 0x93a9, 0xd1c9, 0xd1ba, 0xaebc,
- 0xd57d, 0xd1bd, 0xaebe, 0xaeb5, 0xd1cb, 0xd1bf, 0xaeb8, 0xd1b8,
- 0xd1b5, 0xd1b6, 0xaeb9, 0xd1c5, 0xd1cc, 0xaebb, 0xd1bc, 0xd1bb,
- 0xaec3, 0xaec2, 0xaeb4, 0xaeba, 0xaebd, 0xd1c8, 0xd1c2, 0xaeb7,
- 0xd1b3, 0xd1ca, 0xd1c1, 0xd1c3, 0xd1c7, 0xa07c, 0xd567, 0xb1b7,
- 0xb1cb, 0xb1ca, 0xb1bf, 0xfcb2, 0xd579, 0xd575, 0xd572, 0xd5a6,
- 0xb1ba, 0xb1b2, 0xd577, 0xb4a8, 0xb1b6, 0xd5a1, 0x8ac1, 0xb1cc,
- 0xb1c9, 0xd57b, 0xd56a, 0x9fb4, 0xb1c8, 0xd5a3, 0xd569, 0xb1bd,
- 0xb1c1, 0xd5a2, 0xd573, 0xb1c2, 0xb1bc, 0xd568, 0xfcac, 0xb478,
- 0xd5a5, 0xd571, 0xb1c7, 0xd574, 0xd5a4, 0xb1c6, 0xd952, 0xb1b3,
- 0xd56f, 0xb1b8, 0xb1c3, 0xb1be, 0xd578, 0xd56e, 0xd56c, 0xd57e,
- 0xb1b0, 0xb1c4, 0xb1b4, 0xb477, 0xd57c, 0xb1b5, 0xb1b1, 0xb1c0,
- 0xb1bb, 0xb1b9, 0xd570, 0xb1c5, 0xd56d, 0xd57a, 0xd576, 0xd954,
- 0xd953, 0x9e4c, 0xd56b, 0xd964, 0xb47a, 0x8fc5, 0xd96a, 0xd959,
- 0xd967, 0xdd77, 0xb47d, 0xd96b, 0xd96e, 0xb47c, 0xd95c, 0xd96d,
- 0xd96c, 0xb47e, 0xd955, 0xb479, 0xb4a3, 0x93ad, 0xb4a1, 0xd969,
- 0xd95f, 0xb4a5, 0xd970, 0xd968, 0xd971, 0xb4ad, 0xb4ab, 0xd966,
- 0xd965, 0x9dc3, 0xd963, 0xd95d, 0xb4a4, 0x8da2, 0xb4a2, 0xd1b9,
- 0xd956, 0x9d4a, 0xddb7, 0xd957, 0xb47b, 0xb4aa, 0xdd79, 0xb4a6,
- 0xb4a7, 0xd958, 0xd96f, 0xdd78, 0xd960, 0xd95b, 0xb4a9, 0xd961,
- 0xd95e, 0xfcb6, 0xb4ae, 0x8da3, 0x9e4b, 0x9e4d, 0xb770, 0x8da4,
- 0xdd7c, 0xddb1, 0xddb6, 0xddaa, 0xb76c, 0xddbb, 0xb769, 0xdd7a,
- 0xdd7b, 0xb762, 0xb76b, 0xdda4, 0xb76e, 0xb76f, 0xdda5, 0xddb2,
- 0xddb8, 0xb76a, 0xb764, 0xdda3, 0xdd7d, 0xddba, 0xdda8, 0xdda9,
- 0xdd7e, 0xddb4, 0xddab, 0xddb5, 0xddad, 0xb765, 0xe1d9, 0xb768,
- 0xb766, 0xddb9, 0xddb0, 0xddac, 0x8afd, 0xdda1, 0xba53, 0xddaf,
- 0xb76d, 0xdda7, 0xfcb5, 0xdda6, 0xfcc3, 0x93b2, 0xb767, 0xb763,
- 0xe1ee, 0xddb3, 0xddae, 0xdda2, 0xe1e9, 0xe1da, 0xe1e5, 0xe1ec,
- 0xba51, 0xb4ac, 0xe1ea, 0xba4c, 0xba4b, 0xe1f1, 0x8da5, 0xe1db,
- 0xe1e8, 0xe1dc, 0xe1e7, 0xba4f, 0xe1eb, 0xd962, 0xe1f2, 0xe1e3,
- 0xba52, 0xe5ba, 0xbcaf, 0xe1f0, 0xe1ef, 0xba54, 0xe5ad, 0xbcb0,
- 0xe5ae, 0x93a1, 0xe1df, 0xe1e0, 0xe1dd, 0xe1e2, 0xe1de, 0xe1f3,
- 0xba4e, 0xbcb1, 0xba50, 0xba55, 0x8ac6, 0xe1e1, 0xe1ed, 0xe1e6,
- 0xe5b1, 0xba4a, 0xbcb4, 0xe9aa, 0xe5b6, 0xe5b5, 0xe5b7, 0x8a5b,
- 0xe5b4, 0xbcb5, 0x894d, 0xbcbb, 0xbcb8, 0xbcb9, 0xe5af, 0xe5b2,
- 0xe5bc, 0xbcc1, 0xbcbf, 0xe5b3, 0xd95a, 0xbcb2, 0xe5b9, 0xe5b0,
- 0xbcc2, 0xe5b8, 0xba4d, 0xbcb7, 0xe1e4, 0xbcba, 0xbcbe, 0xbcc0,
- 0xbcbd, 0xbcbc, 0xfed4, 0xbcb6, 0xe5bb, 0xbcb3, 0xbcc3, 0x8a78,
- 0x93ab, 0xbed8, 0xbed9, 0xe9a9, 0xbee2, 0xbedf, 0x8da7, 0xbed6,
- 0xbedd, 0xe9ab, 0xbedb, 0xbed5, 0xbedc, 0xe9a8, 0xc0bb, 0xbed7,
- 0xbede, 0xc0ba, 0xe9a7, 0xe9a6, 0xbee0, 0x9f45, 0xbee1, 0xe9a5,
- 0xe9a4, 0xc0bc, 0xe9ae, 0xbeda, 0xe9ac, 0x8a56, 0xc0bd, 0xfcbf,
- 0xc0c2, 0xecea, 0xecec, 0xfcc0, 0xc0bf, 0x8ee6, 0xeced, 0xece9,
- 0x8aa4, 0xeceb, 0xc0c0, 0xc0c3, 0xece8, 0xc0be, 0xc0c1, 0xc259,
- 0xe9ad, 0xc258, 0xc25e, 0xefd4, 0xc25c, 0xc25d, 0xefd7, 0xefd3,
- 0xc25a, 0xefd1, 0xc36b, 0xefd5, 0xefd6, 0xefd2, 0xc25b, 0xf242,
- 0xf245, 0x8943, 0xf246, 0xf244, 0xf247, 0xc36c, 0xf243, 0x93f3,
- 0xf44e, 0xc464, 0xf44d, 0xf44c, 0xf44b, 0xc463, 0xc465, 0xf5cd,
- 0xc4e2, 0xc4e1, 0xfcab, 0x9ea2, 0xf6e1, 0xf6e0, 0xf6e3, 0xc5cb,
- 0xc575, 0xf7dd, 0xf6e2, 0xf7dc, 0xc5cd, 0xc5cc, 0xc5f3, 0xf8a9,
- 0xf8ef, 0xa4e4, 0x9dc7, 0xd972, 0xe9af, 0xc6d2, 0x8bce, 0xa6ac,
- 0xcaf7, 0xa7f1, 0xa7ef, 0xa7f0, 0xccc1, 0xa9f1, 0xac46, 0xcee7,
- 0xcee8, 0xac47, 0xd1ce, 0xaec4, 0xaec5, 0xd1cd, 0xfcc5, 0xb1d3,
- 0xb1cf, 0xd5a7, 0xb1d6, 0xb1d5, 0xb1ce, 0xb1d1, 0xb1d4, 0xb1d0,
- 0xd976, 0xb1cd, 0xb4af, 0xfccb, 0xb4b1, 0xb4b2, 0xd975, 0xd978,
- 0xb4b0, 0xd973, 0xd977, 0xd974, 0x93b3, 0xb771, 0xfcca, 0xddbc,
- 0xba56, 0xe1f4, 0xbee3, 0xbcc4, 0xe5bd, 0xbcc5, 0xbcc6, 0xe5bf,
- 0xe5be, 0xe5c0, 0xe9b1, 0xe9b0, 0xecef, 0xecee, 0xc0c4, 0xc0c5,
- 0xf248, 0xfcc9, 0x8dac, 0xa4e5, 0xfbc6, 0x8967, 0x8c7e, 0xd979,
- 0xb4b4, 0xb4b3, 0xddbd, 0xefd8, 0xc4e3, 0xf7de, 0xa4e6, 0xaec6,
- 0xb1d8, 0xb1d7, 0xd97a, 0xd97b, 0xb772, 0xe1f5, 0xba57, 0xe9b2,
- 0xa4e7, 0xa5b8, 0xa9f2, 0xccc2, 0xcee9, 0xac48, 0xb1d9, 0xd97c,
- 0xb4b5, 0xb773, 0xe5c1, 0xe5c2, 0xfccd, 0xecf0, 0xc25f, 0xf8f0,
- 0xa4e8, 0xccc3, 0xa9f3, 0xac49, 0x9cf3, 0xceea, 0xaec7, 0xd1d2,
- 0xd1d0, 0xd1d1, 0xaec8, 0xd1cf, 0xb1db, 0xb1dc, 0xd5a8, 0xb1dd,
- 0xb1da, 0xd97d, 0xfcd0, 0xd97e, 0xddbe, 0x95bb, 0xba59, 0xba58,
- 0xecf1, 0xefd9, 0xf24a, 0xf249, 0xf44f, 0xfcd3, 0xc95e, 0xac4a,
- 0xfcd4, 0xa4e9, 0xa5b9, 0xa6ae, 0xa6ad, 0xa6af, 0xa6b0, 0xc9ee,
- 0xc9ed, 0xcaf8, 0xa7f2, 0xcafb, 0xcafa, 0xcaf9, 0xcafc, 0xa9f4,
- 0xccc9, 0xccc5, 0xccce, 0x8dae, 0xa9fb, 0xa9f9, 0xccca, 0xccc6,
- 0xcccd, 0xa9f8, 0xaa40, 0xccc8, 0xccc4, 0xa9fe, 0xcccb, 0xa9f7,
- 0xcccc, 0xa9fa, 0xa9fc, 0xccd0, 0xcccf, 0xccc7, 0xa9f6, 0xa9f5,
- 0xa9fd, 0xfcd7, 0xceef, 0xcef5, 0x93db, 0xac50, 0xac4d, 0xceec,
- 0xcef1, 0xfe63, 0xac53, 0xac4b, 0xcef0, 0xac4e, 0xac51, 0xcef3,
- 0xac4c, 0xcef8, 0xac4f, 0x93d5, 0xac52, 0xceed, 0xcef2, 0xcef6,
- 0xceee, 0xceeb, 0xcef7, 0xcef4, 0xaed0, 0xaec9, 0xaecc, 0xfcda,
- 0xaecf, 0xd1d5, 0x9b71, 0xaeca, 0xd1d3, 0xfcdd, 0xaece, 0xaecb,
- 0xd1d6, 0xaecd, 0x8daf, 0xfaf2, 0xd5ac, 0xb1df, 0xd5ab, 0xd5ad,
- 0xb1de, 0xb1e3, 0xd1d4, 0xd5aa, 0xd5ae, 0x93d8, 0xb1e0, 0xd5a9,
- 0xb1e2, 0xfcdf, 0xb1e1, 0xd9a7, 0x93d3, 0xd9a2, 0xb4b6, 0xb4ba,
- 0xb4b7, 0xd9a5, 0xd9a8, 0xfce1, 0xb4b8, 0xb4b9, 0xb4be, 0xddc7,
- 0xd9a6, 0xb4bc, 0xd9a3, 0xd9a1, 0x8e76, 0xb4bd, 0xd9a4, 0xb779,
- 0xfc62, 0xddbf, 0xb776, 0xb777, 0xb775, 0xddc4, 0xddc3, 0xddc0,
- 0xb77b, 0x93d1, 0xddc2, 0xb4bb, 0x8db1, 0xddc6, 0xddc1, 0xb778,
- 0xb774, 0xb77a, 0xddc5, 0x9859, 0xba5c, 0xe1f8, 0xe1f7, 0xe1f6,
- 0xba5a, 0xfb52, 0xba5b, 0xe5c5, 0xe5c8, 0xbcc8, 0xfb53, 0xbcc7,
- 0xe5c9, 0xe5c4, 0xbcca, 0xe5c6, 0xfb4d, 0xbcc9, 0xe5c3, 0x9cbf,
- 0xe5c7, 0xbee9, 0xbee6, 0xe9bb, 0xe9ba, 0xe9b9, 0xe9b4, 0x9b72,
- 0xe9b5, 0xbee7, 0xbee4, 0xbee8, 0xe9b3, 0xbee5, 0xe9b6, 0xe9b7,
- 0xe9bc, 0xfb50, 0x93be, 0xe9b8, 0xecf2, 0xc0c7, 0xefdc, 0xc0c6,
- 0xefda, 0xefdb, 0xc260, 0xc36e, 0xf24b, 0xc36d, 0xf451, 0xf452,
- 0xc466, 0xf450, 0xc4e4, 0xf7df, 0xc5ce, 0xf8aa, 0xf8ab, 0xa4ea,
- 0x9df1, 0xa6b1, 0xa6b2, 0xa7f3, 0xccd1, 0xac54, 0xaed1, 0xb1e4,
- 0xb0d2, 0xb4bf, 0xb4c0, 0xb3cc, 0xd9a9, 0xfceb, 0xb77c, 0xe1fa,
- 0xe1f9, 0xa4eb, 0xa6b3, 0xccd2, 0xaa42, 0xa0bb, 0xaa41, 0x9b7e,
- 0xcef9, 0xcefa, 0xd1d7, 0xd1d8, 0xaed2, 0xaed3, 0x8db3, 0xaed4,
- 0xd5af, 0x8c52, 0xb1e6, 0xb4c2, 0x9ae8, 0xb4c1, 0xddc8, 0xdf7a,
- 0xe1fb, 0xe9bd, 0x8edc, 0xc261, 0xc467, 0xa4ec, 0xa5bc, 0xa5bd,
- 0xa5bb, 0xa5be, 0xa5ba, 0xa6b6, 0xc9f6, 0xa6b5, 0xa6b7, 0x9cf9,
- 0xc9f1, 0xc9f0, 0xc9f3, 0xc9f2, 0xc9f5, 0xa6b4, 0xc9ef, 0xc9f4,
- 0xfa50, 0xcafd, 0xa7fd, 0xcafe, 0xcb43, 0xa7fc, 0xcb47, 0xcb42,
- 0xcb45, 0xa7f5, 0xa7f6, 0xa7f7, 0xa7f8, 0xa840, 0xcb41, 0xa7fa,
- 0xa841, 0xcb40, 0xcb46, 0xa7f9, 0xcb44, 0xa7fb, 0xa7f4, 0xa7fe,
- 0x98e7, 0xfcf3, 0xfcf2, 0xaa57, 0x8cca, 0xccd4, 0xaa43, 0xaa4d,
- 0xaa4e, 0xaa46, 0xaa58, 0xaa48, 0xccdc, 0xaa53, 0xccd7, 0xaa49,
- 0xcce6, 0xcce7, 0xccdf, 0xccd8, 0xaa56, 0xcce4, 0xaa51, 0xaa4f,
- 0xcce5, 0xcce3, 0xccdb, 0xccd3, 0xccda, 0xaa4a, 0xaa50, 0xaa44,
- 0xccde, 0xccdd, 0xccd5, 0x93e5, 0xaa52, 0xcce1, 0xccd6, 0xaa55,
- 0xcce8, 0xaa45, 0xaa4c, 0xccd9, 0xcce2, 0xaa54, 0xaa47, 0xaa4b,
- 0xcce0, 0x9a59, 0x8db5, 0xfd4d, 0xcf5b, 0xac5c, 0xac69, 0xfd5e,
- 0xcf56, 0xcf4c, 0xac62, 0xcf4a, 0xac5b, 0xcf45, 0xac65, 0xcf52,
- 0xcefe, 0xcf41, 0x8f7d, 0xcf44, 0xcefb, 0xcf51, 0xcf61, 0xac60,
- 0xcf46, 0xcf58, 0xcefd, 0xcf5f, 0xcf60, 0xcf63, 0xcf5a, 0xcf4b,
- 0xcf53, 0xac66, 0xac59, 0xac61, 0xac6d, 0xac56, 0xac58, 0x9547,
- 0xfcf6, 0xcf43, 0xac6a, 0xac63, 0xcf5d, 0xcf40, 0xac6c, 0xac67,
- 0xcf49, 0xac6b, 0xcf50, 0xcf48, 0xac64, 0xcf5c, 0xcf54, 0xac5e,
- 0xcf62, 0xcf47, 0xac5a, 0xcf59, 0xcf4f, 0xac5f, 0xcf55, 0xac57,
- 0xcefc, 0xac68, 0xaee3, 0xac5d, 0xcf4e, 0xcf4d, 0xcf42, 0x9250,
- 0xcf5e, 0xcf57, 0x8968, 0xac55, 0x8db6, 0xfcfb, 0xa07d, 0x98fc,
- 0x8969, 0xfe4f, 0x9256, 0xd1ec, 0xaeea, 0xd1ed, 0xd1e1, 0xaedf,
- 0xaeeb, 0xd1da, 0xfac9, 0xd1e3, 0xd1eb, 0x93e8, 0xd1d9, 0xd1f4,
- 0xaed5, 0xfcf8, 0xd1f3, 0xd1ee, 0xd1ef, 0xaedd, 0xaee8, 0xd1e5,
- 0xd1e6, 0xd1f0, 0xd1e7, 0xd1e2, 0xd1dc, 0xd1dd, 0xd1ea, 0xd1e4,
- 0x9ce3, 0xfda9, 0xaed6, 0xaeda, 0xd1f2, 0xd1de, 0xaee6, 0xaee2,
- 0xfc44, 0xaee5, 0xaeec, 0xaedb, 0xaee7, 0xd1e9, 0xaee9, 0xaed8,
- 0x9640, 0xaed7, 0xd1db, 0x8db8, 0xd1df, 0xaee0, 0xd1f1, 0xd1e8,
- 0xd1e0, 0xaee4, 0xaee1, 0xaed9, 0xaedc, 0x9b4a, 0x8fb9, 0xfcfe,
- 0x896a, 0xd5c4, 0xd5b4, 0xd5b5, 0xd5b9, 0xd5c8, 0xd5c5, 0xd5be,
- 0xd5bd, 0xb1ed, 0xd5c1, 0xd5d0, 0xd5b0, 0xd5d1, 0xd5c3, 0xd5d5,
- 0xd5c9, 0xb1ec, 0xd5c7, 0xb1e7, 0xb1fc, 0xb1f2, 0x8db9, 0xb1f6,
- 0xb1f5, 0xd5b1, 0x917e, 0xd5ce, 0xd5d4, 0xd5cc, 0xd5d3, 0xd5c0,
- 0xd5b2, 0xd5d2, 0xd5c2, 0xb1ea, 0xb1f7, 0xd5cb, 0xb1f0, 0x93f4,
- 0xd5ca, 0xd5b3, 0xb1f8, 0xb1fa, 0xd5cd, 0xb1fb, 0xb1e9, 0xd5ba,
- 0xd5cf, 0xfb7c, 0xb1ef, 0xb1f9, 0xd5bc, 0xd5c6, 0xd5b7, 0xd5bb,
- 0xb1f4, 0xd5b6, 0xb1e8, 0xb1f1, 0xb1ee, 0xd5bf, 0xaede, 0xd9c0,
- 0xb1eb, 0x93e7, 0x97ef, 0xfe4a, 0xfd45, 0xb1f3, 0x96a5, 0xd9c3,
- 0xd9d9, 0xd9ce, 0xb4d6, 0xfee0, 0xb4d1, 0xd9bd, 0xb4d2, 0xd9cd,
- 0xd9c6, 0xd9d3, 0xb4ce, 0xd9ab, 0xd9d5, 0xb4c4, 0xd9b3, 0xb4c7,
- 0xb4c6, 0xb4d7, 0xd9ad, 0xd9cf, 0xd9d0, 0xb4c9, 0xb4c5, 0xd9bb,
- 0xb4d0, 0xd9b6, 0xd9d1, 0xb4cc, 0xd9c9, 0xd9d6, 0xd9b0, 0xd9b5,
- 0xd9af, 0xb4cb, 0xd9c2, 0xddde, 0xd9b1, 0xb4cf, 0xd9ba, 0xd9d2,
- 0xb4ca, 0xd9b7, 0xd9b4, 0xd9c5, 0xb4cd, 0xb4c3, 0xb4d9, 0xd9c8,
- 0xd9c7, 0xfd48, 0xfd47, 0xfef2, 0xfe6a, 0xd9ac, 0xb4c8, 0xd9d4,
- 0xd9bc, 0xd9be, 0x8dbd, 0xd9cb, 0xd9ca, 0xd9aa, 0xb4d3, 0xb4d5,
- 0xd9b2, 0xd9b9, 0xd9c1, 0xb4d4, 0xd9b8, 0xd9c4, 0xd9d7, 0xd9cc,
- 0x9ba1, 0x8ca2, 0x9ab7, 0x8efc, 0xd9d8, 0xd9ae, 0x9fa1, 0xddf2,
- 0xb7a6, 0xddf0, 0xdddb, 0xdde0, 0xddd9, 0xfd51, 0xddec, 0xddcb,
- 0xddd2, 0xddea, 0xddf4, 0xdddc, 0xfaad, 0xddcf, 0xdde2, 0xdde7,
- 0xddd3, 0x8dbe, 0xdde4, 0xddd0, 0x89a4, 0xddd7, 0xddd8, 0xb7a8,
- 0xddeb, 0xdde9, 0xddcc, 0xddee, 0xddef, 0xddf1, 0xb7ac, 0xb7a4,
- 0x9ad9, 0xd5b8, 0xddd4, 0xdde6, 0xddd5, 0xb7a1, 0xb7b1, 0xdded,
- 0xb7af, 0xb7ab, 0xddca, 0xb7a3, 0xfd4e, 0xddcd, 0xb7b0, 0x8dc0,
- 0xdddd, 0xddc9, 0x97f0, 0xb7a9, 0xdde1, 0xddd1, 0xb7aa, 0xddda,
- 0xb77e, 0xb4d8, 0xdde3, 0xd9bf, 0xddce, 0x93b4, 0xfd44, 0xdde8,
- 0xb7a5, 0xdde5, 0xb7a2, 0xdddf, 0xb7ad, 0xddd6, 0xddf3, 0x9fa7,
- 0xb7a7, 0xdec6, 0x8dc2, 0xb7ae, 0x99b6, 0xe24a, 0xe248, 0xe25e,
- 0xe246, 0xe258, 0xb77d, 0xba5f, 0xe242, 0xe25d, 0xfd52, 0xe247,
- 0xe255, 0xba64, 0xba5d, 0xe25b, 0x8dc1, 0xe240, 0xe25a, 0x8e46,
- 0xba6f, 0xe251, 0xe261, 0xba6d, 0xe249, 0xba5e, 0xe24b, 0xe259,
- 0xba67, 0xe244, 0xba6b, 0xba61, 0xe24d, 0xe243, 0xe1fc, 0xa0d1,
- 0xe257, 0xba68, 0xe260, 0xe1fd, 0xba65, 0xe253, 0xba66, 0xe245,
- 0xe250, 0xe24c, 0xe24e, 0x9fca, 0xba60, 0xe25f, 0xba6e, 0xe24f,
- 0xe262, 0xe1fe, 0xe254, 0xba63, 0xba6c, 0xba6a, 0xe241, 0xe256,
- 0xba69, 0x92cf, 0xba62, 0xe252, 0x9cf4, 0x8dc4, 0xe25c, 0xfd41,
- 0xe5d5, 0xe5d1, 0xe5cd, 0xe5e1, 0xe5de, 0xbccd, 0x9b4c, 0xe5e5,
- 0xe5d4, 0xbcd8, 0xe5db, 0xe5d0, 0xe5da, 0xbcd5, 0xe5ee, 0xe5eb,
- 0xe5dd, 0xe5ce, 0xfd57, 0xfcef, 0xe5e2, 0xe5e4, 0xbcd1, 0xe5d8,
- 0xe5d3, 0xe5ca, 0xbcce, 0xbcd6, 0x9cde, 0xe5e7, 0xbcd7, 0xe5cb,
- 0xe5ed, 0xe5e0, 0xe5e6, 0xbcd4, 0xfd42, 0x986c, 0xe5e3, 0xe5ea,
- 0xbcd9, 0xbcd3, 0xe5dc, 0xe5cf, 0xe5ef, 0xe5cc, 0xe5e8, 0xbcd0,
- 0x97f9, 0xe5d6, 0x9558, 0xe5d7, 0xbccf, 0xbccc, 0xe5d2, 0xbcd2,
- 0xbccb, 0xe5e9, 0xe5ec, 0xe5d9, 0xe9ca, 0x985e, 0xfe7b, 0x94cd,
- 0xe9c2, 0x93ee, 0xe9be, 0xbef6, 0xbeeb, 0xbef0, 0xbeec, 0xe9cc,
- 0xe9d7, 0xbeea, 0xe9c4, 0xe9cd, 0xe5df, 0xe9ce, 0x8ca3, 0xbef1,
- 0xfd5a, 0xe9dd, 0xbef5, 0xbef8, 0xe9c0, 0xbef4, 0x93f5, 0xe9db,
- 0xe9dc, 0xe9d2, 0xe9d1, 0xe9c9, 0x93ef, 0x8eea, 0xe9d3, 0xe9da,
- 0xe9d9, 0x8f5b, 0xbeef, 0xbeed, 0xe9cb, 0xe9c8, 0xe9c5, 0xe9d8,
- 0xbef7, 0xe9d6, 0xbef3, 0xbef2, 0x8c5e, 0xe9d0, 0x8dc6, 0xe9bf,
- 0xe9c1, 0xe9c3, 0xe9d5, 0xe9cf, 0xbeee, 0xe9c6, 0xe9d4, 0x8dc8,
- 0x8dc7, 0xe9c7, 0x93f7, 0xc0cf, 0xed45, 0xc0c8, 0xecf5, 0x8dc9,
- 0xed41, 0xc0ca, 0xed48, 0xecfc, 0xecf7, 0xfbf2, 0xed49, 0xecf3,
- 0xecfe, 0x9670, 0xc0d1, 0xed44, 0xed4a, 0xecfd, 0xc0c9, 0xed40,
- 0xecf4, 0xc0d0, 0x8dcb, 0xed47, 0xecf9, 0xc0cc, 0xfd5c, 0xecfb,
- 0xecf8, 0xc0d2, 0xecfa, 0xc0cb, 0xc0ce, 0xed43, 0xecf6, 0xed46,
- 0x8f65, 0xed42, 0x8dcd, 0xc263, 0xefe7, 0xc268, 0xc269, 0x9da8,
- 0x94f9, 0xc262, 0xefe6, 0x8dce, 0xefe3, 0xefe4, 0xc266, 0xefde,
- 0xefe2, 0xc265, 0xefdf, 0x93ea, 0xc267, 0xc264, 0xefdd, 0xefe1,
- 0xefe5, 0xfd5f, 0x93f0, 0x9fb6, 0xf251, 0xf24e, 0xf257, 0xf256,
- 0xf254, 0xf24f, 0xc372, 0x8dcf, 0x9763, 0xf250, 0xc371, 0xc0cd,
- 0xf253, 0xc370, 0xf258, 0xf252, 0xf24d, 0xefe0, 0xc36f, 0xf24c,
- 0xf456, 0xf455, 0xf255, 0xc468, 0xf459, 0xf45a, 0xf454, 0xf458,
- 0xf453, 0x8dd0, 0xf5d1, 0xf457, 0xc4e7, 0xc4e5, 0xf5cf, 0xf5d2,
- 0xf5ce, 0xf5d0, 0xc4e6, 0x93f1, 0xf6e5, 0xf6e6, 0xc576, 0xf6e4,
- 0xf7e2, 0xc5cf, 0xf7e0, 0xf7e1, 0xf8ac, 0xc656, 0xf8f3, 0xf8f1,
- 0xf8f2, 0xf8f4, 0xfd62, 0xf9bb, 0xa4ed, 0xa6b8, 0xaa59, 0xcce9,
- 0xcf64, 0xd1f5, 0xd1f7, 0xd1f6, 0xd1f8, 0xb1fd, 0xd5d7, 0xd1f9,
- 0xfd65, 0xd5d6, 0xd5d8, 0xd5d9, 0xd9da, 0xb4db, 0xd9db, 0xd9dd,
- 0xb4dc, 0xb4da, 0xd9dc, 0xddfa, 0xddf8, 0xddf7, 0xddf6, 0xddf5,
- 0xb7b2, 0xddf9, 0xba70, 0xe263, 0xe265, 0xba71, 0xe264, 0xbcdb,
- 0xbcda, 0xe5f0, 0x9fdb, 0xe9df, 0xe9de, 0xe9e0, 0x93f8, 0xbef9,
- 0xed4b, 0xc0d3, 0xefe8, 0xc26a, 0xf259, 0xc577, 0xa4ee, 0xa5bf,
- 0xa6b9, 0xa842, 0xaa5a, 0xaa5b, 0xac6e, 0xd1fa, 0x8bf7, 0xb7b3,
- 0xfd66, 0xe6d1, 0xbefa, 0xc26b, 0xa4ef, 0x8bcf, 0xa6ba, 0xcceb,
- 0xaa5c, 0xccea, 0x8dd1, 0xcf65, 0xac6f, 0xcf66, 0xac70, 0xd1fc,
- 0xaeee, 0xaeed, 0xd5de, 0xd5dc, 0xd5dd, 0xd5db, 0xd5da, 0xd9de,
- 0xd9e1, 0xb4de, 0xd9df, 0xb4dd, 0xd9e0, 0xddfb, 0xe266, 0xe267,
- 0xe268, 0xe5f3, 0xe5f2, 0xbcdc, 0xe5f1, 0xe5f4, 0xe9e1, 0xe9e2,
- 0xe9e3, 0xed4c, 0xc0d4, 0xc26c, 0xf25a, 0xc4e8, 0xc95f, 0xac71,
- 0xcf67, 0xaeef, 0xb1fe, 0xb4df, 0xd9e2, 0xb7b5, 0xb7b4, 0x8dd2,
- 0xe269, 0xe26a, 0xbcdd, 0xbcde, 0xe9e5, 0xe9e4, 0xefe9, 0xf7e3,
- 0xa4f0, 0xc960, 0xa5c0, 0xa843, 0xcb48, 0xac72, 0xb7b6, 0xa4f1,
- 0xcf68, 0xac73, 0xcf69, 0xc0d5, 0xa4f2, 0xfd71, 0xccec, 0xcf6a,
- 0xfd6f, 0xd242, 0xd241, 0xd1fe, 0xd1fd, 0xd243, 0xd240, 0x8dd3,
- 0xb240, 0xb241, 0xb4e0, 0xd9e3, 0xd9e4, 0xd9e5, 0xde41, 0xde42,
- 0xde40, 0x9fe7, 0xddfd, 0xddfe, 0xb7b7, 0xe26b, 0xe5f7, 0xe5f6,
- 0xe5f5, 0xe5f8, 0xe9e7, 0xe9e6, 0xbefb, 0xe9e8, 0xc0d6, 0xed4d,
- 0xefea, 0xf25b, 0xf6e7, 0xa4f3, 0xa5c2, 0xa5c1, 0xaa5d, 0xc961,
- 0xc97e, 0xa6bb, 0xc9f7, 0xcb49, 0xcb4a, 0xaa5e, 0x90bd, 0xcced,
- 0xac74, 0xcf6b, 0xcf6c, 0xaef0, 0xaef4, 0xd244, 0xaef3, 0xaef1,
- 0xaef2, 0xd5df, 0xb242, 0xb4e3, 0xb4e1, 0xb4e2, 0xd9e6, 0x9fd0,
- 0xba72, 0xa4f4, 0x8bd0, 0xc9a1, 0xfd72, 0xa5c3, 0x9cae, 0x8bd1,
- 0xc9a4, 0x8adb, 0xa5c6, 0xc9a3, 0xa5c5, 0xa5c4, 0xa844, 0xc9a2,
- 0xc9f8, 0xfae4, 0xc9fc, 0xc9fe, 0xca40, 0xa6c5, 0xa6c6, 0xc9fb,
- 0xa6c1, 0xc9f9, 0xc9fd, 0xa6c2, 0xa6bd, 0x95ce, 0xa6be, 0xfd76,
- 0xa6c4, 0xc9fa, 0xa6bc, 0xa845, 0xa6bf, 0xa6c0, 0xa6c3, 0xcb5b,
- 0xcb59, 0xcb4c, 0xa851, 0xcb53, 0xa84c, 0xcb4d, 0xcb55, 0xfb62,
- 0xcb52, 0xa84f, 0xcb51, 0xa856, 0xcb5a, 0xa858, 0x8dd4, 0xa85a,
- 0xcb4b, 0xfd78, 0xa84d, 0xcb5c, 0xa854, 0xa857, 0x8ee3, 0xcd45,
- 0xa847, 0xa85e, 0xa855, 0xcb4e, 0xa84a, 0xa859, 0xcb56, 0xa848,
- 0xa849, 0xcd43, 0xcb4f, 0xa850, 0xa85b, 0xcb5d, 0xcb50, 0xa84e,
- 0xa853, 0xccee, 0xa85c, 0xcb57, 0xa852, 0xa85d, 0xa846, 0xcb54,
- 0xa84b, 0xcb58, 0xcd44, 0x9076, 0x98c6, 0x8dd5, 0xaa6a, 0xaa7a,
- 0xccf5, 0xaa71, 0x97d1, 0xcd4b, 0xaa62, 0x9eb6, 0xaa65, 0xcd42,
- 0xccf3, 0xccf7, 0xaa6d, 0xaa6f, 0xccfa, 0xaa76, 0xaa68, 0xaa66,
- 0xaa67, 0xaa75, 0xcd47, 0xaa70, 0xccf9, 0xccfb, 0xaa6e, 0xaa73,
- 0xccfc, 0xcd4a, 0xac75, 0xaa79, 0xfac7, 0xaa63, 0xcd49, 0xa042,
- 0xcd4d, 0xccf8, 0xcd4f, 0xcd40, 0xaa6c, 0xccf4, 0xaa6b, 0xaa7d,
- 0xaa72, 0xccf2, 0xcf75, 0xaa78, 0xaa7c, 0xcd41, 0xcd46, 0x9873,
- 0xaa7e, 0xaa77, 0xaa69, 0xaa5f, 0xaa64, 0xccf6, 0xaa60, 0xcd4e,
- 0x9ffc, 0xccf0, 0xccef, 0xccfd, 0xccf1, 0xaa7b, 0xaef5, 0xaa74,
- 0xccfe, 0xaa61, 0xaca6, 0xcd4c, 0x8ca5, 0xcf7c, 0xcfa1, 0x8dd7,
- 0xcfa4, 0xcf77, 0x92fb, 0x8dd8, 0xcfa7, 0xcfaa, 0xcfac, 0xcf74,
- 0xac76, 0xac7b, 0xd249, 0xacad, 0xcfa5, 0xcfad, 0xcf7b, 0xcf73,
- 0xd264, 0xac7e, 0xcfa2, 0xcf78, 0xcf7a, 0xaca5, 0xcf7d, 0xac7d,
- 0xcf70, 0xcfa8, 0xcfab, 0x944f, 0xac7a, 0x8dd9, 0xaca8, 0xcf6d,
- 0xacaa, 0xac78, 0xacae, 0xcfa9, 0xcf6f, 0xacab, 0xd25e, 0xcd48,
- 0xac7c, 0xac77, 0xcf76, 0xcf6e, 0xacac, 0xaca4, 0xcfa3, 0xaca9,
- 0xaca7, 0xcf79, 0xaca1, 0xcf71, 0xaca2, 0xaca3, 0xcf72, 0xcfa6,
- 0xac79, 0xcf7e, 0x896b, 0x97ce, 0xd24c, 0xaefd, 0xaf43, 0xfaf3,
- 0xfdae, 0xd255, 0xd25b, 0xd257, 0xd24a, 0xd24d, 0xd246, 0xd247,
- 0xaf4a, 0xaefa, 0xd256, 0xd25f, 0xaf45, 0xaef6, 0xaf40, 0xd24e,
- 0xaf42, 0xd24f, 0xd259, 0xfbaf, 0x92b7, 0xaf44, 0xd268, 0xd248,
- 0xaefc, 0xaefb, 0xaf48, 0xd245, 0xd266, 0xd25a, 0xd267, 0xd261,
- 0xd253, 0xd262, 0x8dda, 0xd25c, 0xd265, 0xd263, 0xaf49, 0xd254,
- 0xaef9, 0xaef8, 0xaf41, 0xaf47, 0xd260, 0xaf46, 0xd251, 0xb243,
- 0x9c5a, 0xd269, 0xd250, 0xd24b, 0xaefe, 0xaf4b, 0xaef7, 0xfdad,
- 0xd258, 0xd25d, 0x8ddc, 0x9444, 0xb265, 0xd5e1, 0xd5e5, 0xb252,
- 0xb250, 0x8ddd, 0xb247, 0xd5e3, 0xd5e2, 0xb25b, 0xd5e8, 0xb255,
- 0xa0d6, 0xd5fa, 0xd647, 0xb244, 0xd5f7, 0xd5f0, 0xb267, 0xd5e0,
- 0xd5fc, 0xb264, 0xb258, 0xb263, 0xb24e, 0xd5ec, 0xd5fe, 0xd5f6,
- 0xb24f, 0xb249, 0xd645, 0xd5fd, 0xd640, 0xb251, 0xb259, 0xd642,
- 0xd5ea, 0xd5fb, 0xd5ef, 0xd644, 0xb25e, 0xb246, 0xb25c, 0xd5f4,
- 0xd5f2, 0xd5f3, 0xb253, 0xd5ee, 0xd5ed, 0xb248, 0xd5e7, 0xd646,
- 0xb24a, 0xd5f1, 0xb268, 0xb262, 0xd5e6, 0xb25f, 0xb25d, 0xb266,
- 0xd5f8, 0xb261, 0xd252, 0xd5f9, 0xb260, 0xd641, 0xb245, 0xd5f5,
- 0xb257, 0xd5e9, 0xb256, 0xb254, 0xb24c, 0xb24b, 0xd9e7, 0xd643,
- 0x8c41, 0xd5eb, 0x97d5, 0xd9fc, 0x944a, 0xb24d, 0x944d, 0x97cb,
- 0x8dde, 0x8ddf, 0xb541, 0xb25a, 0xb4ee, 0xd9f6, 0xb4fc, 0xd9ea,
- 0xb4eb, 0xb4e7, 0xda49, 0xb4ed, 0xb4f1, 0xb4ec, 0xb4f5, 0xda4d,
- 0xda44, 0x8de0, 0xfef9, 0xd9f1, 0xb4fa, 0xb4f4, 0xd9fd, 0xb4e4,
- 0xda4a, 0xda43, 0xb4e8, 0xd9f7, 0xb4f7, 0xda55, 0xda56, 0xb4e5,
- 0xda48, 0xb4f9, 0xd9fb, 0xd9ed, 0xd9ee, 0xb4fd, 0xd9f2, 0xd9f9,
- 0xd9f3, 0xb4fb, 0xb544, 0xd9ef, 0xd9e8, 0xd9e9, 0xd9eb, 0xb4ea,
- 0xd9f8, 0xb4f8, 0xb542, 0xfdc0, 0xfcf9, 0xd9fa, 0xda53, 0xda4b,
- 0xb4e6, 0xda51, 0xb4f2, 0xb4f0, 0xfb7e, 0xda57, 0xb4ef, 0xda41,
- 0xd9f4, 0xd9fe, 0xb547, 0xda45, 0xda42, 0xd9f0, 0xb543, 0xda4f,
- 0xda4c, 0xda54, 0xb4e9, 0xda40, 0xb546, 0xda47, 0xb4f3, 0xb4f6,
- 0xda46, 0xb545, 0xd9f5, 0xd5e4, 0x92b3, 0xda50, 0xda4e, 0xda52,
- 0xfdaf, 0x8de1, 0xd9ec, 0xb540, 0x95d3, 0xde61, 0xde60, 0xde46,
- 0xb7bd, 0xde5f, 0xde49, 0xde4a, 0xb7c7, 0xde68, 0xb7c2, 0xde5e,
- 0x89c1, 0xde43, 0xb7c8, 0xb7be, 0xde52, 0xde48, 0xde4b, 0xde63,
- 0xb7b8, 0xde6a, 0xde62, 0xb7c1, 0xde57, 0xb7cc, 0xb7cb, 0xb7c5,
- 0xde69, 0xb7b9, 0xde55, 0xde4c, 0xde59, 0xde65, 0xb7cd, 0xfd68,
- 0xb7bb, 0xde54, 0x9cb7, 0xde4d, 0xb7c4, 0x8de3, 0xb7c3, 0xde50,
- 0xde5a, 0xde64, 0xde47, 0xde51, 0xb7bc, 0xde5b, 0xb7c9, 0xb7c0,
- 0xde4e, 0xb7bf, 0xde45, 0xde53, 0xde67, 0xb4fe, 0xbab0, 0xde56,
- 0xe26c, 0xde58, 0xde66, 0xb7c6, 0xde4f, 0xb7ba, 0xb7ca, 0xbcf0,
- 0xde44, 0xde5d, 0xfac0, 0x8de5, 0xfa64, 0xde5c, 0x8947, 0x8de4,
- 0x8de7, 0x8de8, 0xe2aa, 0xbaad, 0xe27d, 0xe2a4, 0xbaa2, 0xe26e,
- 0xbaaf, 0xba77, 0xe26d, 0xe2b0, 0xbab1, 0xe271, 0xe2a3, 0xfdc7,
- 0xe273, 0xe2b3, 0xe2af, 0xba75, 0xbaa1, 0xe653, 0xbaae, 0xba7d,
- 0xe26f, 0xfdb0, 0xe2ae, 0xbaa3, 0xe2ab, 0xe2b8, 0xe275, 0xe27e,
- 0x9445, 0x97d6, 0xe2b6, 0xe2ac, 0xba7c, 0xe27c, 0xba76, 0xba74,
- 0xbaa8, 0xfcc6, 0x9844, 0xe27a, 0xe277, 0xe278, 0xe2b2, 0xe2b7,
- 0xe2b5, 0xba7a, 0xe2b9, 0xba7e, 0xbaa7, 0x8de9, 0xe270, 0xe5fa,
- 0xe279, 0xba78, 0xbaac, 0xbaa9, 0xba7b, 0xe2a5, 0xe274, 0xbaaa,
- 0xe2a7, 0xbaa4, 0xbaa6, 0xba73, 0x8dea, 0xe2a9, 0xe2a1, 0xe272,
- 0xbaa5, 0xe2b1, 0xe2b4, 0xe27b, 0xe2a8, 0xfe50, 0xba79, 0xbcdf,
- 0xe2a6, 0xe5f9, 0xe2ad, 0xfdcc, 0xe276, 0xe644, 0xe64e, 0xbce2,
- 0xe64d, 0xe659, 0xbce4, 0xe64b, 0x9da7, 0xe64f, 0xbcef, 0xe646,
- 0xbce7, 0xfdcd, 0xe652, 0xe9f0, 0xbcf3, 0xbcf2, 0xe654, 0xe643,
- 0xe65e, 0xbced, 0xbce3, 0xe657, 0xe65b, 0xe660, 0xe655, 0xe649,
- 0xbce6, 0xbce9, 0xbcf1, 0xbcec, 0xe64c, 0xe2a2, 0xfdcf, 0xe648,
- 0xe65f, 0xbce8, 0x95d2, 0xbceb, 0xe661, 0xbce0, 0xe656, 0xe5fb,
- 0xe65c, 0xc0df, 0x8ded, 0xe64a, 0xbce1, 0xe645, 0xbce5, 0xe5fc,
- 0xbaab, 0xe641, 0xfcba, 0xe65a, 0xe642, 0xe640, 0xbcea, 0xe658,
- 0xe5fe, 0xe651, 0xe650, 0xe65d, 0xe647, 0xbcee, 0xfdc5, 0xe9f3,
- 0xfdd2, 0xbf49, 0xbefe, 0xea40, 0xe9eb, 0xbf41, 0xe9f7, 0xbf48,
- 0xbf43, 0xe9f5, 0xed4f, 0xe9fb, 0xea42, 0xe9fa, 0xe9e9, 0xe9f8,
- 0xea44, 0xea46, 0xbefd, 0xea45, 0xbf44, 0xbf4a, 0x9cdc, 0xbf47,
- 0xe9fe, 0xbf46, 0xe9f9, 0x95cf, 0xe9ed, 0xe9f2, 0x8dee, 0xe9fd,
- 0xbf45, 0xbf42, 0xbefc, 0xbf40, 0xe9f1, 0xe5fd, 0xe9ec, 0xe9ef,
- 0xea41, 0xe9f4, 0xe9ea, 0xed4e, 0xea43, 0xe9ee, 0xe9fc, 0xfdd4,
- 0xed51, 0xc0e3, 0xc0d7, 0x96ec, 0x96eb, 0xc0db, 0xed53, 0xed59,
- 0xed57, 0xc0d9, 0xc0da, 0xc0e1, 0xed5a, 0xed52, 0xc0dc, 0xed56,
- 0xed55, 0xed5b, 0xc0e2, 0xc0dd, 0xc0e0, 0xed54, 0xc0e4, 0xc0de,
- 0xc0e5, 0xc0d8, 0xed58, 0xed50, 0x90b6, 0xeff7, 0xfdc3, 0xc271,
- 0xeff4, 0xeff6, 0xc26f, 0xeff2, 0xeff3, 0xefee, 0x98ab, 0xe9f6,
- 0xefef, 0xc270, 0xefeb, 0xc26d, 0xeff8, 0xc26e, 0xefec, 0xefed,
- 0xeff1, 0xc273, 0xc272, 0xeff0, 0xc378, 0xf25f, 0xf265, 0xc379,
- 0xf25c, 0xc376, 0xc373, 0xf267, 0xc377, 0x96ee, 0xc374, 0xf25e,
- 0xf261, 0xf262, 0xf263, 0xf266, 0xeff5, 0xf25d, 0xc375, 0xf264,
- 0xf268, 0xf260, 0x8df4, 0xf45d, 0xc46a, 0xf460, 0xc46b, 0xf468,
- 0xf45f, 0xf45c, 0xf45e, 0xf462, 0xf465, 0xf464, 0xf467, 0xf45b,
- 0xc469, 0xf463, 0xf466, 0xf469, 0xf461, 0xf5d3, 0xf5d4, 0xf5d8,
- 0xf5d9, 0xf5d6, 0xf5d7, 0xf5d5, 0xfde0, 0xc4e9, 0x8c67, 0x8df6,
- 0xc578, 0xf6eb, 0x8df7, 0xf6e8, 0xf6e9, 0xf6ea, 0xc579, 0xf7e5,
- 0xf7e4, 0x8ffa, 0xf8af, 0xc5f4, 0xf8ad, 0xf8b0, 0xf8ae, 0xf8f5,
- 0xc657, 0xc665, 0xf9a3, 0xf96c, 0x97d0, 0xf9a2, 0xf9d0, 0xf9d1,
- 0xa4f5, 0x8bd2, 0x8df8, 0xa6c7, 0xca41, 0xcb5e, 0x90d9, 0xa85f,
- 0x8c47, 0xa862, 0xfaf0, 0xcb5f, 0xa860, 0xa861, 0xfde1, 0x8df9,
- 0xfde3, 0xcd58, 0xcd5a, 0xcd55, 0xcd52, 0xcd54, 0x8dfa, 0xaaa4,
- 0xfb63, 0xaaa2, 0x90a6, 0xcd56, 0xaaa3, 0xcd53, 0xcd50, 0xaaa1,
- 0xcd57, 0xcd51, 0xaaa5, 0xcd59, 0xcfaf, 0x9970, 0xcfb3, 0x91eb,
- 0xacb7, 0x9770, 0x986f, 0xfde2, 0xcfb6, 0xacaf, 0xacb2, 0xacb4,
- 0xacb6, 0xacb3, 0xcfb2, 0xcfb1, 0xacb1, 0xcfb4, 0xcfb5, 0xcfae,
- 0xacb5, 0x98f2, 0xacb0, 0x9afc, 0x896c, 0xfdfd, 0xcfb0, 0x995e,
- 0x95bd, 0xd277, 0xd278, 0xd279, 0xaf50, 0xaf4c, 0xd26e, 0xfde4,
- 0xd276, 0xd27b, 0xaf51, 0x91e6, 0xd26c, 0xd272, 0xd26b, 0xd275,
- 0xfde5, 0xfde6, 0xd271, 0xaf4d, 0xaf4f, 0xd27a, 0xd26a, 0xd26d,
- 0xd273, 0xfde7, 0xd274, 0xd27c, 0xd270, 0xaf4e, 0xb26d, 0xd64e,
- 0x9454, 0xd650, 0xd64c, 0x99b8, 0xd658, 0xd64a, 0xd657, 0xb269,
- 0xd648, 0xda5b, 0xd652, 0xb26c, 0x97e9, 0xd653, 0xd656, 0xd65a,
- 0xd64f, 0x9346, 0xd654, 0xb26a, 0xb26b, 0xd659, 0xd64d, 0xd649,
- 0xd65b, 0xd651, 0xd655, 0xd64b, 0xb548, 0xb549, 0xda65, 0xb54f,
- 0x9863, 0xda59, 0xda62, 0xda58, 0xb54c, 0xda60, 0xda5e, 0xda5f,
- 0xb54a, 0xda63, 0x95bc, 0xfded, 0xfdf7, 0xda5c, 0xda5a, 0xb54b,
- 0xda5d, 0xda61, 0x9870, 0x96f6, 0x8ea9, 0xb54d, 0xda64, 0x9451,
- 0x8e43, 0x8b5a, 0xde70, 0xde77, 0xde79, 0xdea1, 0xfdee, 0xb7da,
- 0xde6b, 0xb7d2, 0xfdf0, 0xde7a, 0xb7d7, 0xdea2, 0xb7ce, 0xfdf4,
- 0xde7d, 0x9bf5, 0xde6d, 0xde7e, 0xde6c, 0xb7dc, 0xde78, 0xb7cf,
- 0xdea3, 0xb7d4, 0xde71, 0xb7d9, 0xde7c, 0xde6f, 0xde76, 0xde72,
- 0xde6e, 0xb7d1, 0xb7d8, 0xb7d6, 0xb7d3, 0xb7db, 0xb7d0, 0xde75,
- 0x977e, 0xb7d5, 0xb54e, 0xde7b, 0x9bd5, 0xde73, 0x9ac3, 0x97c8,
- 0xa0db, 0x91d0, 0xde74, 0x9fe4, 0xe2c1, 0x8fdd, 0xbab4, 0x91e9,
- 0xe2bd, 0xe2c3, 0xe2bf, 0xbab6, 0xe2be, 0xe2c2, 0xe2ba, 0x98e0,
- 0xe2bc, 0xbab5, 0x92ca, 0x9857, 0xe2c0, 0xe2bb, 0x8c51, 0xbab7,
- 0xbab2, 0xfdeb, 0xe2c4, 0x9b49, 0xbab3, 0xe667, 0xe664, 0xe670,
- 0xe66a, 0xe66c, 0xbcf4, 0xe666, 0xe66e, 0x9d76, 0x9eaf, 0xe66d,
- 0xe66b, 0xe671, 0xbcf7, 0xe668, 0xe66f, 0xbcf5, 0x9ccc, 0xe663,
- 0xe665, 0xbcf6, 0xe662, 0xe672, 0xfdea, 0xe669, 0x8df1, 0xea4a,
- 0xbf51, 0xfdfb, 0xea55, 0xea53, 0xbf4b, 0xea49, 0xea4c, 0xea4d,
- 0xea48, 0xbf55, 0xbf56, 0xea47, 0xea56, 0xea51, 0xbf4f, 0xbf4c,
- 0xea50, 0xea4e, 0xbf52, 0xea52, 0xbf4d, 0x8e53, 0xbf4e, 0xea4f,
- 0xbf50, 0xea4b, 0xea54, 0xbf53, 0xea57, 0xea58, 0xbf54, 0xfacf,
- 0xc0e7, 0xc0ee, 0xed5c, 0xed62, 0xed60, 0xc0ea, 0xc0e9, 0xc0e6,
- 0xed5e, 0x96f9, 0xc0ec, 0xc0eb, 0xc0e8, 0xed61, 0xed5d, 0xed5f,
- 0xc0ed, 0x98bf, 0x9e49, 0xc277, 0xeffb, 0xc274, 0xc275, 0xeffd,
- 0xc276, 0xeffa, 0x8ca7, 0xeff9, 0xf26c, 0xeffc, 0xf26d, 0xc37a,
- 0xf26b, 0x9bca, 0xf26a, 0xf269, 0xc37b, 0xfdfe, 0x92dc, 0xc46c,
- 0xf46a, 0xf46b, 0xfe41, 0x91cc, 0x91e2, 0xf5dc, 0xf5db, 0xc4ea,
- 0xf5da, 0xf6ec, 0xf6ed, 0xf7e6, 0xf8b1, 0xfe44, 0xf8f6, 0xf9bc,
- 0xc679, 0xf9c6, 0xa4f6, 0x8bd3, 0xaaa6, 0xaaa7, 0xfe47, 0xacb8,
- 0xc0ef, 0xa4f7, 0xaaa8, 0xaf52, 0xb7dd, 0xa4f8, 0xb26e, 0xbab8,
- 0xc962, 0xfe48, 0xcfb7, 0xd27d, 0xe2c5, 0xc0f0, 0xa4f9, 0xaaa9,
- 0xcfb8, 0xcfb9, 0xda66, 0xb550, 0xdea4, 0x9455, 0xb7de, 0xe2c6,
- 0xfe4b, 0xbcf8, 0xfe4c, 0xc37c, 0xa4fa, 0xda67, 0xa4fb, 0x8dbf,
- 0xa6c9, 0xca42, 0xa6c8, 0xa865, 0xa864, 0xa863, 0xcb60, 0x9e78,
- 0xaaaa, 0xaaab, 0xcd5b, 0xcfba, 0xcfbd, 0xacba, 0xcfbb, 0xacb9,
- 0xcfbc, 0xacbb, 0xd2a2, 0xd2a1, 0xd27e, 0xaf53, 0xd65d, 0xd65e,
- 0xb26f, 0xd65c, 0xd65f, 0xb552, 0xb270, 0xfe51, 0xb551, 0xda6b,
- 0xda6a, 0x9456, 0xda68, 0xda69, 0xda6c, 0xdea6, 0xdea5, 0xdea9,
- 0x9d61, 0xdea8, 0xdea7, 0xbab9, 0xe2c9, 0x9457, 0xe2c8, 0xbaba,
- 0xe2c7, 0xe673, 0xe674, 0xbcf9, 0xea59, 0xea5a, 0x9966, 0xf272,
- 0xc37d, 0xf271, 0xf270, 0xf26e, 0xf26f, 0xc4eb, 0xf46c, 0xf6ee,
- 0xf8f7, 0xa4fc, 0x8bd5, 0xc9a5, 0xa5c7, 0xc9a6, 0xa069, 0xca43,
- 0xca44, 0xcb66, 0xcb62, 0xcb61, 0xaaac, 0xcb65, 0xa867, 0xcb63,
- 0xa866, 0xcb67, 0xcb64, 0xcd5f, 0xcfbe, 0xcd5d, 0xcd64, 0x98b4,
- 0xaaad, 0xaab0, 0xcd65, 0xcd61, 0xcd62, 0xcd5c, 0xaaaf, 0xcd5e,
- 0xaaae, 0xcd63, 0xcd60, 0xcfc2, 0xacbd, 0xacbe, 0xa049, 0xcfc5,
- 0xcfbf, 0xcfc4, 0xcfc0, 0xacbc, 0xcfc3, 0xcfc1, 0xd2a8, 0xd2a5,
- 0xd2a7, 0xaf58, 0xaf57, 0xaf55, 0xd2a4, 0xd2a9, 0xaf54, 0xaf56,
- 0xd2a6, 0xd667, 0xd2a3, 0xd2aa, 0xa04c, 0x9e65, 0xd662, 0xd666,
- 0xd665, 0xda6e, 0xda79, 0xd668, 0x98b5, 0xd663, 0xda6d, 0xb274,
- 0xb273, 0xd661, 0xd664, 0xb275, 0xb272, 0xb271, 0xd660, 0xd669,
- 0xda70, 0xda77, 0xb554, 0xda76, 0xda73, 0xfe58, 0xb556, 0x9975,
- 0xfe53, 0xa065, 0xda75, 0xfe59, 0xda6f, 0xda71, 0xda74, 0xda72,
- 0xb555, 0xda78, 0xb553, 0xb7df, 0x98b7, 0x98b8, 0xdead, 0xdeac,
- 0xdeaa, 0xb7e2, 0xb7e1, 0xdeae, 0x98ba, 0xdeab, 0xe2ca, 0xbabb,
- 0xb7e0, 0x98bb, 0xdeb0, 0xdeaf, 0xe2cd, 0xe2cb, 0xbcfa, 0x9fbc,
- 0xbabc, 0xe2cc, 0xe676, 0xbcfb, 0xe675, 0xe67e, 0xe67d, 0xe67b,
- 0xe67a, 0xe677, 0xe678, 0xe679, 0xe67c, 0xe6a1, 0xea5f, 0xea5c,
- 0xea5d, 0xbf57, 0xea5b, 0xea61, 0xea60, 0xea5e, 0xed64, 0xed65,
- 0xc0f1, 0xa04a, 0xc0f2, 0xed63, 0x9ec7, 0xc279, 0xeffe, 0xc278,
- 0xc37e, 0xc3a1, 0xc46d, 0xf46e, 0xf46d, 0xf5dd, 0xf6ef, 0xc57a,
- 0xf7e8, 0xf7e7, 0xf7e9, 0xa5c8, 0xcfc6, 0xaf59, 0xb276, 0xd66a,
- 0xa5c9, 0xc9a7, 0xa4fd, 0x8ca9, 0xca45, 0x98ae, 0xcb6c, 0xcb6a,
- 0xcb6b, 0xcb68, 0xa868, 0xcb69, 0x92d6, 0xfae1, 0xcd6d, 0x91d4,
- 0xaab3, 0xcd6b, 0xcd67, 0xcd6a, 0xcd66, 0xaab5, 0xcd69, 0xfade,
- 0xaab2, 0xaab1, 0xfe5b, 0xaab4, 0xcd6c, 0xcd68, 0xacc2, 0xacc5,
- 0xcfce, 0xcfcd, 0xcfcc, 0xacbf, 0xcfd5, 0xcfcb, 0x8c53, 0xacc1,
- 0xd2af, 0xcfd2, 0xcfd0, 0xacc4, 0xcfc8, 0xcfd3, 0xcfca, 0xcfd4,
- 0xcfd1, 0xcfc9, 0xfe5e, 0xacc0, 0xcfd6, 0xcfc7, 0xacc3, 0xfbd7,
- 0xfe5a, 0x94c5, 0xd2b4, 0xd2ab, 0xd2b6, 0xfaca, 0xd2ae, 0xd2b9,
- 0xd2ba, 0xd2ac, 0xd2b8, 0xd2b5, 0xd2b3, 0xd2b7, 0xaf5f, 0xaf5d,
- 0x98c1, 0x975c, 0xd2b1, 0xfe74, 0xd2ad, 0x9773, 0xd2b0, 0xd2bb,
- 0xd2b2, 0xaf5e, 0xcfcf, 0xaf5a, 0xaf5c, 0xfa46, 0x9764, 0xd678,
- 0xd66d, 0xd66b, 0xfe68, 0xd66c, 0x964e, 0xd673, 0x9765, 0xd674,
- 0xd670, 0xb27b, 0xd675, 0xd672, 0xd66f, 0x8c5a, 0xb279, 0xd66e,
- 0xb277, 0xb27a, 0xd671, 0xd679, 0xaf5b, 0xb278, 0xd677, 0xd676,
- 0xb27c, 0x89a1, 0x95fa, 0x92d4, 0xfe69, 0xda7e, 0xfb45, 0x98c8,
- 0xdaa1, 0xb560, 0x90ef, 0xdaa7, 0x98c9, 0x98ca, 0xdaa9, 0xdaa2,
- 0xb55a, 0xdaa6, 0xdaa5, 0xb55b, 0xb561, 0xb562, 0xdaa8, 0xb558,
- 0xda7d, 0xda7b, 0xdaa3, 0xda7a, 0xb55f, 0xda7c, 0xdaa4, 0xdaaa,
- 0xb559, 0xb55e, 0xb55c, 0xb55d, 0x946d, 0x94b7, 0xfe6c, 0xb557,
- 0x946b, 0xb7e9, 0xdeb7, 0xb7e8, 0xdebb, 0x92fc, 0xdeb1, 0x95eb,
- 0xdebc, 0xfe73, 0x976e, 0xfe5f, 0xdeb2, 0xdeb3, 0xdebd, 0xdeba,
- 0xdeb8, 0xdeb9, 0xdeb5, 0xdeb4, 0xfdbd, 0xdebe, 0xb7e5, 0x92d5,
- 0xdeb6, 0xb7ea, 0xb7e4, 0xb7eb, 0xb7ec, 0xfeb9, 0xb7e7, 0xb7e6,
- 0xfe71, 0xe2ce, 0xbabe, 0xbabd, 0xfbbb, 0xe2d3, 0x947a, 0xbcfc,
- 0xbabf, 0x95fb, 0xfe77, 0xbac1, 0xe2d4, 0xb7e3, 0xbac0, 0xe2d0,
- 0xe2d2, 0xe2cf, 0xfe79, 0xe2d1, 0xfe75, 0xe6ab, 0x945d, 0xe6aa,
- 0xe6a7, 0xbd40, 0xea62, 0xbd41, 0xe6a6, 0xfe7c, 0xbcfe, 0xe6a8,
- 0xe6a5, 0xe6a2, 0xe6a9, 0xe6a3, 0xe6a4, 0xbcfd, 0x9344, 0x8ea6,
- 0xed69, 0xea66, 0xea65, 0xea67, 0xed66, 0xbf5a, 0x92d3, 0xea63,
- 0x94b8, 0xbf58, 0xbf5c, 0xbf5b, 0xea64, 0xea68, 0xbf59, 0xfc71,
- 0xed6d, 0xc0f5, 0xc27a, 0xc0f6, 0xc0f3, 0xed6a, 0xed68, 0xed6b,
- 0xed6e, 0xc0f4, 0xed6c, 0xed67, 0x975e, 0xf042, 0xf045, 0xf275,
- 0xf040, 0x8cad, 0xf46f, 0xf046, 0xc3a2, 0xf044, 0xc27b, 0xf041,
- 0xf043, 0xf047, 0xf276, 0xf274, 0xfea7, 0xc3a3, 0xf273, 0x946a,
- 0xc46e, 0x93e3, 0x98cf, 0xc4ed, 0xf6f1, 0xc4ec, 0xf6f3, 0xf6f0,
- 0xf6f2, 0xc5d0, 0xf8b2, 0xa5ca, 0xcd6e, 0xd2bc, 0xd2bd, 0xb27d,
- 0xdebf, 0xbf5d, 0xc3a4, 0xc57b, 0xf8b3, 0xa5cb, 0xa0d9, 0xcd6f,
- 0xa260, 0xcfd7, 0xcfd8, 0xa0bf, 0xa04d, 0xa0b8, 0xd2be, 0xd2bf,
- 0xb27e, 0xb2a1, 0xa0ce, 0xdaab, 0xdec2, 0xdec1, 0xdec0, 0xe2d5,
- 0xe2d6, 0xe2d7, 0xbac2, 0xa0b7, 0xe6ad, 0xe6ac, 0xea69, 0xbf5e,
- 0xbf5f, 0xfea9, 0xed72, 0xed6f, 0xed70, 0xed71, 0xf049, 0xf048,
- 0xc27c, 0xf277, 0xf5de, 0xa5cc, 0x89c3, 0xacc6, 0xb2a2, 0xdec3,
- 0xfeab, 0xa5cd, 0xd2c0, 0xb2a3, 0xb563, 0xb564, 0xa5ce, 0xa5cf,
- 0xca46, 0xa86a, 0xa869, 0xacc7, 0xcfd9, 0xdaac, 0xa5d0, 0xa5d1,
- 0xa5d2, 0xa5d3, 0x9df4, 0x896d, 0xa86b, 0xa86c, 0xcb6e, 0xcb6d,
- 0x9c7b, 0xaab6, 0xcd72, 0xcd70, 0xcd71, 0x98d2, 0x9fa9, 0xcfda,
- 0xcfdb, 0xfeb2, 0xaccb, 0xacc9, 0xfeb1, 0xacca, 0xacc8, 0x97d9,
- 0xa0c4, 0xaf60, 0x9476, 0xaf64, 0xaf63, 0xd2c1, 0xaf62, 0xaf61,
- 0xd2c2, 0x9978, 0xb2a6, 0xd67b, 0xd67a, 0xb2a4, 0xb2a5, 0xfeb3,
- 0xb566, 0xb565, 0xdaae, 0x98d3, 0xfeb4, 0xdaad, 0xb2a7, 0x98d4,
- 0xb7ed, 0xdec5, 0xb7ee, 0xdec4, 0x9fb9, 0xe2d8, 0xe6ae, 0xbd42,
- 0xea6a, 0x9471, 0xed73, 0xc3a6, 0xc3a5, 0xc57c, 0xa5d4, 0xcd73,
- 0x98d5, 0xfeb8, 0xb2a8, 0xe2d9, 0xbac3, 0xc6d4, 0xcb6f, 0xcb70,
- 0xcd74, 0xaab8, 0xaab9, 0xaab7, 0xfeba, 0xaccf, 0xacd0, 0xaccd,
- 0xacce, 0xcfdc, 0xcfdd, 0xaccc, 0xd2c3, 0x9e5c, 0xaf68, 0xaf69,
- 0xfebb, 0xb2ab, 0xd2c9, 0xaf6e, 0xaf6c, 0xd2ca, 0xd2c5, 0xaf6b,
- 0xaf6a, 0xaf65, 0xd2c8, 0xd2c7, 0xd2c4, 0xaf6d, 0xa044, 0xd2c6,
- 0xaf66, 0xaf67, 0x98d7, 0xb2ac, 0xd6a1, 0xd6a2, 0xb2ad, 0xd67c,
- 0xd67e, 0xd6a4, 0xd6a3, 0xd67d, 0xb2a9, 0xb2aa, 0xdab6, 0xb56b,
- 0xb56a, 0xdab0, 0xb568, 0x98d8, 0xdab3, 0xb56c, 0xdab4, 0xb56d,
- 0xdab1, 0xb567, 0xb569, 0xdab5, 0xdab2, 0xdaaf, 0xded2, 0xdec7,
- 0xb7f0, 0xb7f3, 0xb7f2, 0xb7f7, 0xb7f6, 0xded3, 0xded1, 0xdeca,
- 0xdece, 0xdecd, 0xb7f4, 0xded0, 0xdecc, 0xded4, 0xdecb, 0xb7f5,
- 0xb7ef, 0xb7f1, 0xfebc, 0xdec9, 0x9ffe, 0xe2db, 0xbac7, 0xe2df,
- 0xbac6, 0xe2dc, 0xbac5, 0xdec8, 0xdecf, 0xe2de, 0xbac8, 0xe2e0,
- 0xe2dd, 0xe2da, 0xe6b1, 0xe6b5, 0xe6b7, 0xe6b3, 0xe6b2, 0xe6b0,
- 0xbd45, 0xbd43, 0xbd48, 0xbd49, 0xe6b4, 0xbd46, 0xe6af, 0xbd47,
- 0xbac4, 0xe6b6, 0xbd44, 0xfebd, 0xea6c, 0xea6b, 0xea73, 0xea6d,
- 0xea72, 0xea6f, 0xbf60, 0xea71, 0xbf61, 0xbf62, 0x9ddd, 0xea70,
- 0xea6e, 0x9ee1, 0xc0f8, 0xed74, 0xc0f7, 0xed77, 0xed75, 0xed76,
- 0xc0f9, 0x98da, 0x9ddf, 0xfebf, 0xf04d, 0xfebe, 0xc2a1, 0xf04e,
- 0x9eeb, 0xc27d, 0xf04f, 0xc27e, 0xf04c, 0xf050, 0xf04a, 0xc3a7,
- 0xf278, 0xc3a8, 0xc46f, 0xf04b, 0xc470, 0x9e59, 0xa05c, 0xc4ee,
- 0xf5df, 0xc57e, 0xf6f4, 0xc57d, 0xfec0, 0xf7ea, 0xc5f5, 0xc5f6,
- 0x9477, 0x98dc, 0xf9cc, 0xfec1, 0xacd1, 0xcfde, 0x98de, 0xb56e,
- 0xb56f, 0xa5d5, 0xa6ca, 0xca47, 0xcb71, 0xa86d, 0xaaba, 0xacd2,
- 0xacd3, 0xacd4, 0xd6a6, 0xd2cb, 0xaf6f, 0xb2ae, 0xd6a5, 0xfec3,
- 0xdab8, 0xb571, 0xdab7, 0xb570, 0xded5, 0xbd4a, 0xe6bb, 0xe6b8,
- 0xe6b9, 0xe6ba, 0xfec8, 0xed78, 0xfec9, 0xf051, 0xf471, 0xf470,
- 0xf6f5, 0xa5d6, 0xcd75, 0xaf70, 0xb572, 0xded6, 0xfeca, 0xe2e1,
- 0xbd4b, 0xea74, 0xf052, 0xf472, 0xa5d7, 0xaabb, 0xacd7, 0xcfdf,
- 0xacd8, 0xacd6, 0xacd5, 0xd2cc, 0xaf71, 0xfecb, 0xaf72, 0xaf73,
- 0xb2b0, 0xd6a7, 0xb2af, 0x9fc2, 0x8c6b, 0xdab9, 0xb2b1, 0xb573,
- 0xded7, 0xb7f8, 0xb7f9, 0xbac9, 0xbaca, 0xbd4c, 0xbf64, 0xea75,
- 0xbf63, 0xed79, 0xc0fa, 0xf053, 0xf473, 0xa5d8, 0xa86e, 0xcd78,
- 0xcd77, 0xaabc, 0xcd76, 0xaabd, 0xcd79, 0xcfe5, 0xacdb, 0xacda,
- 0xcfe7, 0xcfe6, 0xacdf, 0xacde, 0xacd9, 0xcfe1, 0xcfe2, 0xcfe3,
- 0xace0, 0xcfe0, 0xacdc, 0xcfe4, 0xacdd, 0x98c4, 0x94b0, 0x94b1,
- 0xd2cf, 0xd2d3, 0xd2d1, 0xd2d0, 0xd2d4, 0xd2d5, 0xd2d6, 0xd2ce,
- 0xd2cd, 0xfed1, 0xaf75, 0xaf76, 0xd2d7, 0xd2d2, 0xa0c1, 0xd6b0,
- 0xfed2, 0xd2d8, 0xaf77, 0xaf74, 0xa0cd, 0xd6aa, 0xd6a9, 0xd6ab,
- 0xd6ac, 0xd6ae, 0xd6ad, 0xd6b2, 0xb2b5, 0xb2b2, 0xb2b6, 0xd6a8,
- 0xb2b7, 0xd6b1, 0xb2b4, 0xd6af, 0xb2b3, 0xfed3, 0x98e5, 0xdabc,
- 0xdabe, 0xdaba, 0xdabb, 0xdabf, 0xdac1, 0xdac2, 0xdabd, 0xdac0,
- 0xb574, 0xdedb, 0xdee0, 0xded8, 0xdedc, 0xfed6, 0xdee1, 0xdedd,
- 0xb7fa, 0xb843, 0xb7fd, 0xded9, 0xdeda, 0xbace, 0xb846, 0xb7fe,
- 0xb844, 0xb7fc, 0xdedf, 0xb845, 0xdede, 0xb841, 0xb7fb, 0xb842,
- 0xdee2, 0xe2e6, 0xe2e8, 0x91e4, 0x8fc7, 0x94ae, 0xb840, 0x8a4f,
- 0x94b2, 0xe2e3, 0xbacc, 0xe2e9, 0xbacd, 0xe2e7, 0xe2e2, 0xe2e5,
- 0xe2ea, 0xbacb, 0xe2e4, 0xbd4e, 0xe6bf, 0xe6be, 0xbd51, 0xbd4f,
- 0xe6bc, 0xbd4d, 0xe6bd, 0xbd50, 0x8fd4, 0xea7d, 0xeaa1, 0x98ea,
- 0xea7e, 0xea76, 0xea7a, 0xea79, 0xea77, 0xbf66, 0xbf67, 0xbf65,
- 0xea78, 0xea7b, 0xea7c, 0xbf68, 0xc140, 0xeda3, 0xc0fc, 0xed7b,
- 0xc0fe, 0xc141, 0xfed8, 0xc0fd, 0xeda2, 0xed7c, 0xc0fb, 0xeda1,
- 0xed7a, 0xed7e, 0xed7d, 0x9de0, 0xf055, 0xc2a4, 0xc2a5, 0xc2a2,
- 0x98ee, 0xc2a3, 0xf054, 0x95c4, 0xf27b, 0xfce8, 0xc3a9, 0xf279,
- 0xf27a, 0x98ef, 0xf474, 0xf477, 0xf475, 0xf476, 0xf5e0, 0xc4ef,
- 0xf7eb, 0xf8b4, 0xc5f7, 0xf8f8, 0xf8f9, 0xc666, 0xa5d9, 0xace1,
- 0x8c6e, 0xdac3, 0xdee3, 0xa5da, 0xa86f, 0xaabe, 0xfad8, 0xcfe8,
- 0xcfe9, 0xaf78, 0xdac4, 0xb575, 0xb847, 0xc142, 0xeda4, 0xf27c,
- 0xf478, 0xa5db, 0xfedc, 0xcda1, 0xcd7a, 0xcd7c, 0xcd7e, 0xcd7d,
- 0xcd7b, 0xaabf, 0xa0ae, 0xace2, 0xcff2, 0xcfed, 0xcfea, 0x9d4c,
- 0xcff1, 0xace4, 0xace5, 0xcff0, 0xcfef, 0xcfee, 0xcfeb, 0xcfec,
- 0xcff3, 0xace3, 0x98f1, 0x98f3, 0xaf7c, 0x94c1, 0xafa4, 0xafa3,
- 0xd2e1, 0xd2db, 0xd2d9, 0xafa1, 0xd6b9, 0xaf7a, 0xd2de, 0xd2e2,
- 0xd2e4, 0xd2e0, 0xd2da, 0xafa2, 0xd2df, 0xd2dd, 0xaf79, 0xd2e5,
- 0xafa5, 0xd2e3, 0xaf7d, 0xd2dc, 0xaf7e, 0xaf7b, 0x98f5, 0xfa4f,
- 0x96e2, 0x9450, 0xb2b9, 0x96a2, 0xd6ba, 0x98f6, 0xd6b3, 0xd6b5,
- 0xd6b7, 0x96e5, 0xd6b8, 0xd6b6, 0xb2ba, 0xd6bb, 0x98f7, 0xd6b4,
- 0xa046, 0x96e3, 0xdac8, 0xb576, 0xdad0, 0xdac5, 0xdad1, 0xdac6,
- 0xdac7, 0x98f8, 0xdacf, 0xdace, 0xdacb, 0xb2b8, 0xb577, 0xdac9,
- 0xdacc, 0xb578, 0xdacd, 0xdaca, 0xdeee, 0x9ee4, 0xdef2, 0xb84e,
- 0xe2f0, 0xb851, 0xdef0, 0xf9d6, 0xdeed, 0xdee8, 0xdeea, 0xdeeb,
- 0xdee4, 0x94c3, 0xb84d, 0xb84c, 0x94c2, 0xb848, 0xdee7, 0xb84f,
- 0xb850, 0xdee6, 0xdee9, 0xdef1, 0xb84a, 0xb84b, 0xdeef, 0xdee5,
- 0xe2f2, 0xbad0, 0xe2f4, 0xdeec, 0xe2f6, 0xbad4, 0xe2f7, 0xe2f3,
- 0xbad1, 0xe2ef, 0xbad3, 0xe2ec, 0xe2f1, 0xe2f5, 0xe2ee, 0xfee1,
- 0xb849, 0xfee9, 0xe2eb, 0xbad2, 0xe2ed, 0x96e4, 0x89ac, 0x96db,
- 0xbd54, 0xe6c1, 0xbd58, 0xbd56, 0xbacf, 0xe6c8, 0xe6c9, 0xbd53,
- 0xfee2, 0xe6c7, 0xe6ca, 0xbd55, 0xbd52, 0xe6c3, 0xe6c0, 0xe6c5,
- 0xe6c2, 0xbd59, 0xe6c4, 0x94c4, 0xfee3, 0xe6c6, 0xbd57, 0xfee7,
- 0x9ffb, 0xbf6a, 0xeaa8, 0xeaa2, 0xeaa6, 0xeaac, 0xeaad, 0xeaa9,
- 0xeaaa, 0xeaa7, 0x8c59, 0xeaa4, 0xbf6c, 0xbf69, 0xeaa3, 0xeaa5,
- 0xbf6b, 0xeaab, 0x93c9, 0xc146, 0x94e8, 0xfb56, 0xedaa, 0xeda5,
- 0xc145, 0x90c5, 0xc143, 0xedac, 0xc144, 0xeda8, 0xeda9, 0xeda6,
- 0xedad, 0xf056, 0xc147, 0xeda7, 0xedae, 0xedab, 0xa0a8, 0xf05a,
- 0xf057, 0xc2a6, 0xf05b, 0xf05d, 0xf05c, 0xf058, 0xf059, 0xf2a3,
- 0xc3aa, 0xf27e, 0xf2a2, 0xf27d, 0xf2a4, 0xf2a1, 0xf47a, 0xf47d,
- 0xf479, 0xc471, 0xf47b, 0xf47c, 0xf47e, 0xc472, 0xc474, 0xc473,
- 0xf5e1, 0xfee5, 0xf5e3, 0xf5e2, 0x98fd, 0x98fb, 0xfee8, 0xf6f6,
- 0x8ebf, 0xf8b5, 0xf8fa, 0xa5dc, 0x8bd8, 0xfef7, 0xcb72, 0xaac0,
- 0xcda3, 0xaac1, 0xaac2, 0xcda2, 0xcff8, 0xcff7, 0xace6, 0xace9,
- 0xace8, 0xace7, 0xcff4, 0xcff6, 0xcff5, 0xd2e8, 0xafa7, 0xd2ec,
- 0xd2eb, 0xd2ea, 0xd2e6, 0xafa6, 0xafaa, 0xafad, 0x8f68, 0x94c6,
- 0xafae, 0xd2e7, 0xd2e9, 0xafac, 0xafab, 0xafa9, 0xafa8, 0xd6c2,
- 0x9dea, 0xd6c0, 0xd6bc, 0xb2bb, 0xd6bd, 0xb2bc, 0xd6be, 0xd6bf,
- 0xd6c1, 0xb2bd, 0xdad5, 0xfc69, 0xdad4, 0xdad3, 0xdad2, 0xdef6,
- 0xb852, 0xdef3, 0xdef5, 0x9cda, 0xb853, 0xfef3, 0xb854, 0xdef4,
- 0x9c72, 0xfef0, 0x89c9, 0xe341, 0xe2f9, 0xe2fa, 0xbad7, 0xbad5,
- 0xbad6, 0xe343, 0x9941, 0xe342, 0xe2fe, 0xe2fd, 0xe2fc, 0xe2fb,
- 0xe340, 0xe2f8, 0x9942, 0xe6cb, 0xe6d0, 0xe6ce, 0xfef5, 0x91d7,
- 0xe6cd, 0xe6cc, 0xe6cf, 0xeaae, 0x94cc, 0xbf6d, 0xc148, 0xedb0,
- 0xfef8, 0xc149, 0xedaf, 0xf05f, 0xf05e, 0xc2a7, 0xf2a5, 0xc3ab,
- 0xf4a1, 0xc5a1, 0xf6f7, 0xf8b7, 0xf8b6, 0xc9a8, 0xacea, 0xaceb,
- 0xd6c3, 0xb856, 0xa5dd, 0xa872, 0xa871, 0xa870, 0x97a8, 0xcda4,
- 0xfefc, 0xaac4, 0xaac3, 0xacee, 0xfdbf, 0xcffa, 0xcffd, 0xcffb,
- 0xacec, 0xaced, 0xfefe, 0xcff9, 0xcffc, 0xafb5, 0xd2f3, 0xd2f5,
- 0xd2f4, 0xafb2, 0xd2ef, 0x96d1, 0xafb0, 0xafaf, 0xafb3, 0xafb1,
- 0xafb4, 0xd2f2, 0xd2ed, 0xd2ee, 0xd2f1, 0xd2f0, 0x94d5, 0x94d0,
- 0xd6c6, 0xd6c7, 0xd6c5, 0xd6c4, 0xb2be, 0xb57d, 0xdad6, 0xdad8,
- 0xdada, 0xb57c, 0x9944, 0xb57a, 0xdad7, 0xb57b, 0xdad9, 0xb579,
- 0xdf41, 0xdef7, 0xdefa, 0xdefe, 0xb85a, 0xdefc, 0xdefb, 0xdef8,
- 0xdef9, 0xb858, 0xdf40, 0xb857, 0xb85c, 0xb85b, 0xb859, 0xdefd,
- 0xe349, 0xe348, 0x8c63, 0xe344, 0xa0b3, 0xbad8, 0xe347, 0xe346,
- 0xbad9, 0xbd5e, 0xe6d2, 0x94cf, 0xbd5f, 0xbd5b, 0xbd5d, 0x9ffa,
- 0xbd5a, 0xbd5c, 0x91e5, 0xeaaf, 0x9c6a, 0xbf70, 0xeab1, 0xeab0,
- 0x8e49, 0xe345, 0xbf72, 0xbf71, 0xbf6e, 0xbf6f, 0xedb5, 0xedb3,
- 0xc14a, 0xedb4, 0xedb6, 0xedb2, 0xedb1, 0xf060, 0xc2aa, 0xc2a8,
- 0xc2a9, 0x8e4c, 0xf2a6, 0xf2a7, 0xc3ad, 0xc3ac, 0xf4a3, 0xf4a4,
- 0xf4a2, 0xf6f8, 0xf6f9, 0xa5de, 0xca48, 0xa873, 0xcda5, 0xaac6,
- 0xaac5, 0xcda6, 0x8e4d, 0xd040, 0xacef, 0xcffe, 0xacf0, 0x9a73,
- 0xafb6, 0xd2f8, 0xd2f6, 0xd2fc, 0xafb7, 0xd2f7, 0xd2fb, 0xd2f9,
- 0xd2fa, 0xd6c8, 0xd6ca, 0x9947, 0xb2bf, 0x8cb1, 0xd6c9, 0xb2c0,
- 0xb5a2, 0xb5a1, 0xb57e, 0xdadb, 0xdf44, 0xb85d, 0xb85e, 0xdf43,
- 0xdf42, 0xe34a, 0xbadb, 0xbada, 0xe34b, 0xe34c, 0xbd61, 0xbd60,
- 0x8e50, 0xeab5, 0xe6d3, 0xe6d5, 0xe6d4, 0xeab4, 0xeab2, 0xeab6,
- 0xeab3, 0xbf73, 0x8e4f, 0x9949, 0xedb7, 0xc14b, 0xedb8, 0xedb9,
- 0x8e51, 0x8e52, 0xc2ab, 0xc2ac, 0xc475, 0x9ab2, 0x89a5, 0xc5d1,
- 0xa5df, 0x994c, 0xd041, 0x9ff8, 0xd2fd, 0xafb8, 0x8e56, 0x994d,
- 0x91ca, 0x8e57, 0xb3ba, 0xb3b9, 0x94e1, 0xb5a4, 0xdadd, 0xb5a3,
- 0xdadc, 0x9047, 0x8fd8, 0x8e58, 0xdf45, 0xbadc, 0xe34d, 0xbadd,
- 0xc476, 0xf4a5, 0xa6cb, 0xaac7, 0xcda7, 0xacf2, 0x94eb, 0xacf1,
- 0xd042, 0xd043, 0xd340, 0xd342, 0xafb9, 0xd344, 0xd347, 0xd345,
- 0x8e5c, 0x9553, 0xd346, 0xd343, 0xd2fe, 0xafba, 0xd348, 0xd341,
- 0x9fe5, 0xd6d3, 0xb2c6, 0xd6dc, 0xb2c3, 0xd6d5, 0xb2c7, 0x9f56,
- 0xb2c1, 0xd6d0, 0xd6dd, 0xd6d1, 0xd6ce, 0xb2c5, 0x954f, 0xb2c2,
- 0x8e5e, 0xd6d4, 0xd6d7, 0xb2c4, 0xd6d8, 0xb2c8, 0xd6d9, 0xd6cf,
- 0xd6d6, 0xd6da, 0xd6d2, 0xd6cd, 0xd6cb, 0xd6db, 0x996a, 0xdadf,
- 0xdae4, 0x9c64, 0x9cd9, 0xdae0, 0xdae6, 0xb5a7, 0xd6cc, 0xdae1,
- 0xb5a5, 0xdade, 0xb5ac, 0xdae2, 0xb5ab, 0xdae3, 0xb5ad, 0xb5a8,
- 0xb5ae, 0xb5a9, 0xb5aa, 0x8e5d, 0xb5a6, 0xdae5, 0xb861, 0xdf50,
- 0x9950, 0xdf53, 0xdf47, 0xdf4c, 0xdf46, 0xb863, 0xdf4a, 0x9951,
- 0xdf48, 0xb862, 0x8e62, 0xdf4f, 0xdf4e, 0xdf4b, 0xdf4d, 0xdf49,
- 0xbae1, 0xdf52, 0xb85f, 0xdf51, 0x9952, 0xe35d, 0xbae8, 0xe358,
- 0xbae7, 0xe34e, 0xe350, 0xbae0, 0xe355, 0xe354, 0xe357, 0xbae5,
- 0xe352, 0xe351, 0x8e68, 0xbae4, 0xbadf, 0xe353, 0xbae2, 0xe359,
- 0xe35b, 0xe356, 0xe34f, 0xbae3, 0xbd69, 0xbade, 0x8e61, 0x9f59,
- 0xe35c, 0xe6d9, 0xbd62, 0xe6db, 0xbd63, 0x8bb3, 0xbd65, 0xe6de,
- 0xe6d6, 0xbae6, 0xe6dc, 0xe6d8, 0xb860, 0xbd68, 0xbd64, 0xbd66,
- 0xbd67, 0xbf76, 0xe6dd, 0xe6d7, 0xbd6a, 0xe6da, 0x9f5d, 0x8e66,
- 0xeac0, 0xeabb, 0xeac5, 0xbf74, 0xeabd, 0xbf78, 0xeac3, 0xeaba,
- 0xeab7, 0xeac6, 0xc151, 0xbf79, 0xeac2, 0xeab8, 0xbf77, 0xeabc,
- 0xbf7b, 0xeab9, 0xeabe, 0xbf7a, 0xeac1, 0xeac4, 0x8cb2, 0xedcb,
- 0xedcc, 0xedbc, 0xedc3, 0xedc1, 0xc14f, 0xedc8, 0xeabf, 0x8e6e,
- 0xedbf, 0x9f64, 0xedc9, 0xc14e, 0xedbe, 0xedbd, 0xedc7, 0xedc4,
- 0xedc6, 0xedba, 0xedca, 0xc14c, 0xedc5, 0xedce, 0xedc2, 0xc150,
- 0xc14d, 0xedc0, 0xedbb, 0xedcd, 0xbf75, 0x9953, 0xfab8, 0xf063,
- 0x9954, 0xf061, 0xf067, 0xc2b0, 0xf065, 0xf064, 0xc2b2, 0xf06a,
- 0xc2b1, 0xf06b, 0xf068, 0xc2ae, 0xf069, 0xf062, 0xc2af, 0xc2ad,
- 0xf2ab, 0xf066, 0xf06c, 0xf2a8, 0x8e70, 0xc3b2, 0xc3b0, 0xf2aa,
- 0xf2ac, 0xf2a9, 0xc3b1, 0xc3ae, 0xc3af, 0xc3b3, 0x9f61, 0xc478,
- 0x8e72, 0xf4aa, 0xf4a9, 0xf4a7, 0xf4a6, 0xf4a8, 0xc477, 0xc479,
- 0xc4f0, 0xa06b, 0xf5e5, 0xf5e4, 0x9f40, 0xf6fa, 0xf6fc, 0xf6fe,
- 0xf6fd, 0xf6fb, 0x94ed, 0xc5a3, 0xc5a2, 0xc5d3, 0xc5d2, 0xc5d4,
- 0xf7ed, 0xf7ec, 0xf8fb, 0xf8b8, 0xf8fc, 0xc658, 0x94ee, 0xc659,
- 0xf96d, 0x9fbd, 0xc67e, 0xa6cc, 0x8e7b, 0xcda8, 0xd045, 0xd046,
- 0xd044, 0x9957, 0x94f7, 0xacf3, 0x9f5f, 0xd047, 0xd048, 0xd049,
- 0x8e73, 0xd349, 0xd34f, 0x9f62, 0xd34d, 0xafbb, 0xd34b, 0xd34c,
- 0xd34e, 0x94f6, 0xd34a, 0xb2c9, 0xd6de, 0xb2cb, 0xd6e0, 0xb2ca,
- 0xd6df, 0x9958, 0xdae8, 0xb5af, 0xdaea, 0xdae7, 0xd6e1, 0xb5b0,
- 0x8e75, 0xf9db, 0xdae9, 0x9072, 0x94f8, 0xdf56, 0xb864, 0xdf54,
- 0xb865, 0xdf55, 0xb866, 0x995a, 0xbae9, 0xe361, 0xe35e, 0xe360,
- 0xbaea, 0xbaeb, 0xe35f, 0xa0b0, 0x8cb3, 0xe6df, 0x8e79, 0xe6e0,
- 0x8e78, 0xbd6b, 0xe6e2, 0xe6e1, 0x94f3, 0xa261, 0xeaca, 0xeacb,
- 0xeac7, 0x98af, 0xeac8, 0xbf7c, 0xbf7d, 0xeac9, 0xc157, 0xa0b2,
- 0xc153, 0xc158, 0xc154, 0xc156, 0xc152, 0xc155, 0x8e7a, 0xc2b3,
- 0xedcf, 0xf2ae, 0xf2ad, 0x995c, 0xf4ab, 0xc47a, 0xc47b, 0xf741,
- 0xf5e6, 0x8e7c, 0xf740, 0x8e7d, 0xf8fd, 0xf9a4, 0xa6cd, 0x8bd9,
- 0xa874, 0x89a2, 0xcda9, 0xaac8, 0xacf6, 0xd04c, 0xacf4, 0xd04a,
- 0xacf9, 0xacf5, 0xacfa, 0xacf8, 0xd04b, 0xacf7, 0xafbf, 0xafbe,
- 0xd35a, 0xafc7, 0xd353, 0xd359, 0xafc3, 0xd352, 0xd358, 0xd356,
- 0xafc2, 0xafc4, 0xd355, 0xafbd, 0xd354, 0xafc8, 0xafc5, 0xafc9,
- 0xafc6, 0xd351, 0xd350, 0xd357, 0xafc0, 0xafbc, 0xafc1, 0x9ed7,
- 0xd6f0, 0xd6e9, 0xb5b5, 0xd6e8, 0xb2cf, 0xb2d6, 0xb2d3, 0xb2d9,
- 0xb2d8, 0xb2d4, 0xd6e2, 0xd6e5, 0xd6e4, 0xb2d0, 0xd6e6, 0xd6ef,
- 0xb2d1, 0xd6e3, 0xd6ec, 0xd6ed, 0xb2d2, 0xd6ea, 0xb2d7, 0xb2cd,
- 0xb2d5, 0xd6e7, 0xb2cc, 0xd6eb, 0xd6ee, 0xa0b6, 0xdafb, 0xdaf2,
- 0xb5b2, 0xdaf9, 0xdaf6, 0xdaee, 0xdaf7, 0xb5b4, 0xdaef, 0xdaeb,
- 0x9e42, 0xb86c, 0xdaf4, 0x8ea4, 0xb5b1, 0xdafa, 0xb5b8, 0xb5ba,
- 0xdaed, 0xb5b9, 0xdaf0, 0xb5b3, 0xdaf8, 0xdaf1, 0xdaf5, 0xdaf3,
- 0xb5b6, 0xdaec, 0xb5bb, 0xb2ce, 0xb5b7, 0xb5bc, 0xb868, 0xdf5d,
- 0xdf5f, 0xdf61, 0xdf65, 0xdf5b, 0xdf59, 0xb86a, 0xdf60, 0xdf64,
- 0xdf5c, 0xdf58, 0xdf57, 0x8ea7, 0x8c76, 0xdf62, 0xdf5a, 0xdf5e,
- 0xb86b, 0xb869, 0xdf66, 0xb867, 0xdf63, 0xe372, 0x9542, 0xbaee,
- 0xe36a, 0xbd78, 0xe374, 0xbaf1, 0xe378, 0xbaf7, 0xe365, 0x987d,
- 0xe375, 0xe362, 0x9755, 0xe377, 0xe366, 0x8ea8, 0xbafe, 0xbafb,
- 0xe376, 0xe370, 0xbaed, 0xbaf5, 0xbaf4, 0x8eaa, 0xbaf3, 0xbaf9,
- 0xe363, 0xbafa, 0xe371, 0xbaf6, 0xbaec, 0xe373, 0xbaef, 0xbaf0,
- 0xbaf8, 0xe368, 0xe367, 0xe364, 0xe36c, 0xe369, 0xe36d, 0xbafd,
- 0xe379, 0xbaf2, 0xe36e, 0xe36f, 0x89a3, 0xe36b, 0x9960, 0x9962,
- 0xbafc, 0x94fc, 0x9961, 0xe6e7, 0xbd70, 0xbd79, 0xbd75, 0xe6e4,
- 0x94fa, 0xbd72, 0xbd76, 0xe6f0, 0xbd6c, 0xe6e8, 0xbd74, 0x8eae,
- 0x8eb2, 0xe6eb, 0xe6e6, 0xbd73, 0xbd77, 0xe6e5, 0xbd71, 0xe6ef,
- 0xbd6e, 0xe6ee, 0xe6ed, 0xbd7a, 0xe572, 0xbd6d, 0x8eb0, 0xe6ec,
- 0xe6e3, 0xbd7b, 0xe6ea, 0xbd6f, 0x9963, 0x97aa, 0xe6e9, 0x94fb,
- 0xbfa2, 0xbfa7, 0xbf7e, 0xead8, 0xeacf, 0xeadb, 0xead3, 0xead9,
- 0xbfa8, 0xbfa1, 0xeacc, 0xead2, 0xeadc, 0xead5, 0xeada, 0xeace,
- 0xead6, 0xbfa3, 0xead4, 0xbfa6, 0xbfa5, 0xead0, 0xead1, 0xeacd,
- 0xead7, 0xbfa4, 0xeade, 0xeadd, 0x8ebb, 0xedda, 0xedd6, 0xc15f,
- 0xedd0, 0xc159, 0xc169, 0xeddc, 0xc161, 0xc15d, 0xedd3, 0xc164,
- 0xc167, 0xedde, 0xc15c, 0xedd5, 0xc165, 0xede0, 0xeddd, 0xedd1,
- 0xc160, 0xc15a, 0xc168, 0xedd8, 0xc163, 0xedd2, 0xc15e, 0xeddf,
- 0xc162, 0xc15b, 0xedd9, 0xc166, 0xedd7, 0xeddb, 0xf06e, 0xf074,
- 0xc2b9, 0xf077, 0xc2b4, 0xc2b5, 0xf06f, 0xf076, 0xf071, 0xc2ba,
- 0xc2b7, 0x8cdc, 0xf06d, 0xc2b6, 0xf073, 0xf075, 0xc2b8, 0xf072,
- 0xf070, 0x9876, 0x8ea1, 0xf2b8, 0xc3b7, 0xc3b8, 0xc3b4, 0x8cb4,
- 0xc3b5, 0x8eb7, 0xf2b4, 0xf2b2, 0xf2b6, 0xc3ba, 0xf2b7, 0xf2b0,
- 0xf2af, 0xf2b3, 0xf2b1, 0xc3b6, 0xf2b5, 0xf4ac, 0xc47e, 0xc47d,
- 0xf4ad, 0x9da6, 0xf4af, 0xf4ae, 0xc4a1, 0xf5eb, 0xf5e8, 0xf5e9,
- 0xf5e7, 0xf5ea, 0xc4f2, 0xf5ec, 0x9eb0, 0xc4f1, 0xf742, 0x8eb8,
- 0xc5d5, 0xc5d7, 0xf7ee, 0xc5d6, 0xf8b9, 0xf940, 0xf942, 0xf8fe,
- 0xf941, 0xc66c, 0x9d70, 0x896e, 0x896f, 0x8970, 0x8971, 0x8972,
- 0x8973, 0x8974, 0xa6ce, 0x8975, 0xacfb, 0xd26f, 0xafca, 0xb2da,
- 0xdafc, 0xdafd, 0x8ebc, 0x8ebd, 0xeadf, 0xc16a, 0xede1, 0x8ebe,
- 0xc2bb, 0x9dd1, 0xf2ba, 0xf2b9, 0xc4a2, 0xf5ed, 0x94fd, 0xf743,
- 0xc5f8, 0xca49, 0x8bd7, 0x8bda, 0xaac9, 0xa875, 0xd04d, 0xd360,
- 0xd35b, 0xd35f, 0xd35d, 0xafcb, 0xd35e, 0xd35c, 0xd6f1, 0xdafe,
- 0xdb40, 0xdf69, 0xdf6a, 0xb86e, 0xb86f, 0xdf68, 0xdf6b, 0xdf67,
- 0xb86d, 0xbb40, 0xa0e2, 0xb870, 0xe37a, 0xbd7c, 0xe6f1, 0xbd7d,
- 0x9fe9, 0xbfa9, 0xeae2, 0xeae0, 0xeae1, 0xede4, 0xede3, 0xede2,
- 0xf2bb, 0xc3b9, 0xf2bc, 0xf744, 0xc5f9, 0xf8ba, 0xa6cf, 0xaacb,
- 0xaaca, 0xd04f, 0xacfc, 0xfda8, 0xd04e, 0xd362, 0x8ae7, 0xafcc,
- 0xd6f2, 0xd361, 0x8ec2, 0xb2dc, 0xd6f5, 0xd6f3, 0xd6f4, 0xb2db,
- 0xdb42, 0xdb43, 0xdb41, 0x8ec4, 0xb873, 0xdf6d, 0xdf6c, 0xdf6e,
- 0xb872, 0xb871, 0xe6f2, 0xe6f4, 0x9964, 0xbd7e, 0xe6f3, 0xeae3,
- 0xbfaa, 0xf079, 0x9965, 0xf078, 0xc3bb, 0xf2bd, 0xc3bd, 0xc3bc,
- 0xf4b0, 0xf5ee, 0xc4f3, 0xa6d0, 0xd050, 0xacfd, 0xd365, 0xafce,
- 0xd364, 0xd363, 0xafcd, 0xd6fb, 0xd6fd, 0xd6f6, 0xd6f7, 0xb2dd,
- 0xd6f8, 0xb2de, 0xd6fc, 0xd6f9, 0xd6fa, 0xb2df, 0xb5be, 0xb5bf,
- 0xdb44, 0xdf6f, 0xdf70, 0x954e, 0xe37e, 0xbb43, 0xbb41, 0xbb42,
- 0xe37b, 0xe37c, 0xe37d, 0xe6f9, 0x98b3, 0xe6fa, 0xbda1, 0xe6f7,
- 0xe6f6, 0xe6f8, 0xe6f5, 0xbfad, 0xeae4, 0xbfab, 0xbfac, 0xede6,
- 0xc16b, 0xede5, 0xefa8, 0xf07a, 0xf07b, 0xc2bc, 0x8ecb, 0xc2bd,
- 0xc16c, 0xf2be, 0xf2bf, 0xf4b1, 0xc4a3, 0xa6d1, 0x8bdf, 0xa6d2,
- 0xacfe, 0xaacc, 0xafcf, 0xd051, 0x8ece, 0xb5c0, 0xa6d3, 0xad41,
- 0xd052, 0xd053, 0xad40, 0xad42, 0xa6d4, 0xd054, 0xafd1, 0xd366,
- 0xafd3, 0xafd0, 0xafd2, 0xd741, 0xb2e0, 0x8ecf, 0xd740, 0xd6fe,
- 0x9968, 0xdf71, 0xe3a1, 0x9969, 0xbda2, 0xbfae, 0xeae6, 0xeae5,
- 0xede7, 0x996b, 0x8ed1, 0xf5ef, 0x996c, 0xa6d5, 0xcb73, 0xcdaa,
- 0xad43, 0xd055, 0xd368, 0x8ed4, 0x8ed5, 0xafd4, 0xd367, 0xafd5,
- 0xd743, 0xb2e2, 0xd742, 0xd744, 0xb2e1, 0xdb46, 0xdb47, 0xdb45,
- 0xb5c1, 0x996d, 0xb874, 0xb875, 0xbb45, 0xa0be, 0xe3a3, 0xe3a2,
- 0xbb44, 0x8ed6, 0xa0bc, 0xa0b5, 0xe6fb, 0xa0b4, 0xe6fc, 0xeae7,
- 0xc170, 0xc16f, 0xc16d, 0xc16e, 0xc171, 0xf07c, 0xc2bf, 0xc2be,
- 0xf2c0, 0xf4b2, 0xc5a5, 0xc5a4, 0xa6d6, 0x8be0, 0xd1fb, 0xb877,
- 0xb5c2, 0xb876, 0xbb46, 0xa6d7, 0xc9a9, 0xa6d8, 0xa6d9, 0xcdab,
- 0xcb76, 0xcb77, 0xa877, 0xcb74, 0xa876, 0xa879, 0xcb75, 0xa87b,
- 0xa87a, 0xcb78, 0xa878, 0x89b5, 0xaad1, 0xaacf, 0xcdad, 0xaace,
- 0x8edd, 0xaad3, 0xaad5, 0xaad2, 0xcdb0, 0xcdac, 0xaad6, 0xaad0,
- 0xa87c, 0xaad4, 0xcdaf, 0x9e5d, 0x9971, 0xcdae, 0xaacd, 0x89ae,
- 0x9de8, 0xd05b, 0xad47, 0xad48, 0xd05d, 0x9565, 0xd057, 0xd05a,
- 0xd063, 0xd061, 0xad49, 0xd067, 0xad4c, 0xd064, 0xd05c, 0xd059,
- 0xdb49, 0xd062, 0xad44, 0xd065, 0xd056, 0xd05f, 0xad46, 0xad4b,
- 0xd060, 0xad4f, 0xad4d, 0xd058, 0xad4a, 0xd05e, 0xad4e, 0xad45,
- 0xd066, 0x9972, 0x8b5c, 0xafda, 0xafe3, 0xafd8, 0xafd6, 0xd36a,
- 0xafde, 0xafdb, 0xd36c, 0x89b1, 0xafdd, 0xd36b, 0xd369, 0xd36e,
- 0xafe2, 0xafe0, 0xdb48, 0xd36f, 0xd36d, 0xafd7, 0xa0c0, 0xafd9,
- 0xafdc, 0x8edf, 0xafdf, 0x9566, 0xafe1, 0x9974, 0x9976, 0x9977,
- 0x9979, 0xd74e, 0xb2e4, 0x9dda, 0xd745, 0xd747, 0x8ee0, 0xd748,
- 0xd750, 0xd74c, 0xd74a, 0xd74d, 0xd751, 0xb2e5, 0xb2e9, 0xd746,
- 0xd74f, 0xb2e7, 0x935c, 0xb2e6, 0xd74b, 0xd749, 0xb2e3, 0xb2e8,
- 0x9de6, 0x8b5f, 0x9563, 0xb5c8, 0xdb51, 0xdb4f, 0xb5ca, 0x9567,
- 0xdb4a, 0xdfa1, 0xb5c9, 0xdb4e, 0x9de3, 0xdb4b, 0xb5c5, 0xb5cb,
- 0xdb50, 0xb5c7, 0xdb4d, 0xbb47, 0xb5c6, 0xdb4c, 0xb5cc, 0xb5c4,
- 0xb5c3, 0x997c, 0x997d, 0x997e, 0xdf77, 0xdf75, 0xdf7b, 0xdf73,
- 0xdfa2, 0xdf78, 0xdf72, 0xb87b, 0xb8a3, 0xdf7d, 0xdf76, 0xb87e,
- 0x8b5b, 0xb87c, 0xdf7e, 0xb879, 0xb878, 0xdf79, 0xb87d, 0xb5cd,
- 0xdf7c, 0xdf74, 0xb87a, 0xb8a1, 0xb8a2, 0x99a3, 0xbb4c, 0xbb48,
- 0xbb4d, 0xe3a6, 0x99a4, 0xe3a5, 0xe3a7, 0xbb4a, 0xe3a4, 0xbb4b,
- 0xe3aa, 0xe3a9, 0xe3a8, 0xbb49, 0x99a6, 0xe741, 0xe744, 0xbda8,
- 0xe743, 0xbda7, 0xbda3, 0xbda4, 0xbda5, 0xe740, 0xe6fe, 0xbda6,
- 0xe742, 0xe6fd, 0x99a8, 0xeae9, 0xeaf3, 0xbfb1, 0xbfb0, 0x8abe,
- 0xeaed, 0xeaef, 0xeaea, 0xeaee, 0xeae8, 0xeaf1, 0xbfaf, 0xeaf0,
- 0xeaec, 0x9e61, 0xeaf2, 0xeaeb, 0xc174, 0xede8, 0xedee, 0xc178,
- 0xc17a, 0xc177, 0xc176, 0x99aa, 0xc175, 0xc173, 0xede9, 0xedec,
- 0xc172, 0xeded, 0xa0c8, 0xc179, 0xedeb, 0xedea, 0xc2c0, 0xc2c1,
- 0xf0a1, 0xf07d, 0xf07e, 0xf2c2, 0xf2c1, 0xc3be, 0xf4b4, 0xc4a4,
- 0xf4b3, 0xf5f0, 0xf745, 0xc5a6, 0xf943, 0xf944, 0xc5d8, 0xa6da,
- 0x99ab, 0xaad7, 0xdb52, 0xbb4e, 0xc17b, 0xedef, 0xa6db, 0xafe5,
- 0xafe4, 0xdb53, 0xfec4, 0xeaf4, 0xa6dc, 0xad50, 0x98c2, 0xdb54,
- 0xdb55, 0xdb56, 0xbb4f, 0xbfb2, 0xa6dd, 0xaad8, 0xd068, 0xafe6,
- 0xd370, 0xb2ea, 0xdb57, 0xb8a4, 0xbb50, 0xbfb3, 0xc17c, 0xc2c2,
- 0xf4b5, 0xa6de, 0xaad9, 0xafe7, 0xd752, 0xb5ce, 0xbb51, 0xe3ab,
- 0xe745, 0x8ee8, 0xa0ba, 0xa6df, 0xb5cf, 0xdfa3, 0xbb52, 0xa6e0,
- 0xcdb1, 0xd069, 0xad51, 0xd372, 0xfd77, 0xafea, 0x8eee, 0xafe8,
- 0xafe9, 0xafeb, 0x9ebf, 0xd371, 0xd757, 0xd754, 0xd756, 0xb2eb,
- 0xb2ed, 0xb2ec, 0xd753, 0xb2ee, 0xd755, 0xdb58, 0xdb59, 0x89c2,
- 0xdb5a, 0xdfa6, 0xdfa7, 0xdfa5, 0xdfa8, 0xb8a5, 0xdfa4, 0xbb53,
- 0xe74a, 0xe746, 0xe749, 0xe74b, 0xe748, 0xe747, 0x99ac, 0xeaf5,
- 0xeaf6, 0xeaf7, 0xbfb4, 0xbfb5, 0xedf1, 0xedf0, 0xedf2, 0xf0a3,
- 0xf0a2, 0xf2c4, 0x956b, 0xf2c5, 0xf2c3, 0x956c, 0xc4a5, 0xf4b6,
- 0xf4b7, 0xf746, 0xf7ef, 0xf8bb, 0xa6e1, 0xa87d, 0xc17d, 0xa6e2,
- 0xd758, 0xdb5b, 0x99af, 0xc641, 0xca4a, 0x994a, 0x8976, 0x8f48,
- 0xca4b, 0xca4d, 0xa6e3, 0xca4e, 0xca4c, 0xcba2, 0xcba3, 0xcb7b,
- 0xfbee, 0xcba1, 0xa8a1, 0xa8a2, 0xcb7c, 0xcb7a, 0xcb79, 0xcb7d,
- 0xa87e, 0xcb7e, 0xd06a, 0xcdb6, 0xaadc, 0xcdb5, 0xcdb7, 0xaadb,
- 0xcdbc, 0xaadf, 0xcdb2, 0xcdc0, 0xcdc6, 0xaae6, 0xcdc3, 0xaae3,
- 0x99ae, 0xcdb9, 0xcdbf, 0xcdc1, 0x8efb, 0xcdb4, 0xaae2, 0xaadd,
- 0xcdba, 0xaae4, 0xaae7, 0xaae1, 0xaada, 0xcdbe, 0xcdb8, 0xcdc5,
- 0xaae9, 0xaae5, 0xaae0, 0xcdbd, 0xafec, 0xcdbb, 0xaade, 0xaae8,
- 0x8cd0, 0xcdb3, 0xcdc2, 0xcdc4, 0x8b52, 0x99b0, 0x8977, 0x8f41,
- 0xad62, 0xad5c, 0xad64, 0xad61, 0xd071, 0xd074, 0xad5d, 0x99b1,
- 0xd06b, 0xad56, 0xad60, 0xad63, 0xad65, 0xd0a2, 0xd077, 0x8f49,
- 0xad55, 0xd0a1, 0xad59, 0xad57, 0xad52, 0xd06f, 0xd07e, 0xd073,
- 0xd076, 0xd0a5, 0xfa4d, 0xad66, 0xd07d, 0xad5e, 0xd078, 0xd0a4,
- 0xd075, 0xd079, 0xd07c, 0x9de4, 0x8cb5, 0xd06d, 0xd0a3, 0xd07b,
- 0xfbe9, 0x9b54, 0xd06c, 0x99b2, 0xd070, 0xad5f, 0xad5a, 0xad53,
- 0xad58, 0xad54, 0xad67, 0xd06e, 0xd3a5, 0xad5b, 0x9e68, 0xd07a,
- 0xce41, 0xd3a8, 0xaffa, 0x8f4a, 0xd376, 0x8f42, 0xd3a3, 0xd37d,
- 0x8f51, 0xd3b2, 0xd3aa, 0xd37e, 0xd3a9, 0xd378, 0xd37c, 0xd3b5,
- 0xaffd, 0xd3ad, 0xd3a4, 0xafed, 0xd3b3, 0xd374, 0xd3ac, 0xaffc,
- 0xaff7, 0xd373, 0xaff5, 0xaff4, 0xaff9, 0xd3ab, 0xaff1, 0xaff8,
- 0xd072, 0xdb5c, 0xd3a6, 0x9846, 0xd37a, 0xaffb, 0xd37b, 0xd3a1,
- 0xaffe, 0xd375, 0xd3af, 0xd3ae, 0xd3b6, 0xaff3, 0xaff0, 0xd3b4,
- 0xd3b0, 0xd3a7, 0xd3a2, 0xaff6, 0xaff2, 0xd377, 0xafee, 0xd3b1,
- 0xafef, 0xd379, 0x99b4, 0x8ef5, 0xfd55, 0x9ccd, 0x8978, 0xd75e,
- 0xd760, 0xd765, 0xd779, 0xb2fc, 0xb2f2, 0xd75d, 0xb2fd, 0xb2fe,
- 0xd768, 0xd76f, 0xd775, 0xd762, 0xd769, 0x8f53, 0xb340, 0xd777,
- 0xd772, 0xb2fa, 0xb2f8, 0xd76e, 0xd76a, 0xd75c, 0xb2ef, 0xd761,
- 0xd759, 0x8f6f, 0xb2f7, 0xb2f9, 0xd766, 0xd763, 0xb2f4, 0xd773,
- 0xb2f1, 0xd764, 0xd77a, 0xd76c, 0x8e63, 0xd76b, 0xb2f0, 0xb2fb,
- 0xb2f3, 0xd75a, 0xd75f, 0xd770, 0xd776, 0xb341, 0xd75b, 0xd767,
- 0xd76d, 0xb2f6, 0x8f56, 0xd778, 0xd771, 0xd774, 0xfe76, 0xb2f5,
- 0x9fc6, 0xdb6c, 0xdb60, 0xb5d7, 0xdb7d, 0xdba7, 0xdbaa, 0xb5d5,
- 0xdb68, 0xdba3, 0xdb69, 0xdb77, 0xb5e2, 0xdb73, 0xb5df, 0xfaac,
- 0xdb74, 0xdb5d, 0xdba4, 0x8f58, 0xb5e8, 0xdba1, 0xdb75, 0xdbac,
- 0xdb70, 0xdfc8, 0xdbaf, 0xb5e6, 0xdb6e, 0xdb7a, 0xb5e9, 0xb5d4,
- 0xdb72, 0xdbad, 0xdb6b, 0xdb64, 0xdb6f, 0xdb63, 0xdb61, 0xb5d0,
- 0xdba5, 0xdb6a, 0xdba8, 0x9848, 0xdba9, 0xb5d8, 0xb5dd, 0xb5d9,
- 0xb5e1, 0xdb7e, 0xb5da, 0xdb76, 0xdb66, 0xb5d2, 0xdb5e, 0xdba2,
- 0xdbab, 0xdb65, 0xb5e0, 0xdbb0, 0xdb71, 0xdb6d, 0xb5d1, 0xb5e5,
- 0x99b7, 0xdb7c, 0xb5e7, 0xdb78, 0xb5dc, 0xb5d6, 0xb5de, 0xb5d3,
- 0xb5e4, 0xdb79, 0xdb67, 0xdb7b, 0xdb62, 0xdba6, 0x9665, 0xfa6c,
- 0x9de7, 0xdbae, 0x9e62, 0x96cc, 0x8e67, 0xdb5f, 0xfc75, 0x987e,
- 0xdfc7, 0xdfdd, 0xb855, 0xdfcc, 0xfdb9, 0xdfca, 0xdfb5, 0xb8a9,
- 0xdfc5, 0xdfd9, 0xdfc1, 0xb8b1, 0xdfd8, 0xdfbf, 0xb5e3, 0xdfcf,
- 0xdfc0, 0xdfd6, 0xb8b0, 0xb8a8, 0x97fc, 0xdfaa, 0xdfb2, 0xdfcb,
- 0xdfc3, 0xdfdc, 0xdfc6, 0xb8b6, 0xdfd7, 0x98f9, 0xb8ad, 0x8f66,
- 0xdfc9, 0xdfd1, 0xdfb6, 0xdfd0, 0xdfe1, 0xdfb1, 0xdfd2, 0x956e,
- 0xdfdf, 0x9245, 0xdfab, 0xb5db, 0x8f60, 0xdfb9, 0xdfb8, 0xb8af,
- 0x9ed1, 0xdfbc, 0xdfbe, 0xdfcd, 0xdfde, 0xb8b2, 0xfecd, 0xb8b3,
- 0x99b9, 0xdfb0, 0xb8ab, 0xdfb4, 0xdfda, 0xb8b4, 0xb8ac, 0xb8ae,
- 0xb8b5, 0xdfe0, 0xdfd3, 0xdfce, 0x8f62, 0x974c, 0xdfbb, 0xdfba,
- 0xb8aa, 0xdfac, 0xb8a7, 0xdfc4, 0xdfad, 0xdfc2, 0xdfb7, 0xdfdb,
- 0x91c7, 0x955f, 0xb8a6, 0xdfb3, 0x99bb, 0xdfaf, 0xdfd5, 0xdfae,
- 0xbb60, 0xe3d3, 0x8e6d, 0x8f71, 0xe3c2, 0x94cb, 0xe3ac, 0xe3ca,
- 0xbb58, 0xe3bb, 0xe3c5, 0xbb5b, 0xe3be, 0xbb59, 0xe3af, 0xe3cd,
- 0xe3ae, 0xe3c1, 0x95b1, 0xe3ad, 0xe3bf, 0xe3c8, 0xe3c6, 0xe3ba,
- 0xe3b5, 0xe3b3, 0x9af2, 0xe3b4, 0xe3c7, 0xe3d2, 0xe3bc, 0xbb5a,
- 0xe3b7, 0xe3cb, 0xbb5d, 0xe3b6, 0xe3b0, 0xe3c0, 0xbb61, 0x96c3,
- 0x99bd, 0xbb55, 0xbb5e, 0xe3b8, 0xe3b2, 0xbb57, 0xdfd4, 0xbb56,
- 0xe3c3, 0xbb54, 0xbb63, 0xbb5c, 0xe3c4, 0xe3b9, 0xe3b1, 0xe3cc,
- 0xe3bd, 0xbb62, 0xe3d0, 0xbb5f, 0xe3cf, 0xe3c9, 0xe3ce, 0xa0cf,
- 0xe3d1, 0x8f6d, 0x99be, 0x8ef4, 0x8f72, 0x95e4, 0xe773, 0xe774,
- 0xe767, 0xe766, 0xe762, 0xbdb4, 0xbdac, 0xe776, 0xe775, 0xdfa9,
- 0xe75f, 0xe763, 0xe75d, 0xe770, 0xe761, 0x99bf, 0xe777, 0xe75a,
- 0xe758, 0xe764, 0xe76e, 0xe769, 0xbdb6, 0xe74f, 0xe76d, 0x9242,
- 0xfba5, 0xbdb7, 0xdfbd, 0xe75b, 0xe752, 0xe755, 0xe77b, 0xe75c,
- 0xe753, 0xe751, 0xe74e, 0x99c0, 0xbdb0, 0xe765, 0xbdaf, 0xbdb3,
- 0xe760, 0xe768, 0xbda9, 0xe778, 0xe77c, 0xbdab, 0xe757, 0xe76b,
- 0xe76f, 0xe754, 0xe779, 0xbdb2, 0xbdb1, 0xe74c, 0xbdb5, 0xe772,
- 0xe756, 0xe76a, 0xe750, 0xe75e, 0xe759, 0xbdad, 0xbdae, 0xe76c,
- 0xe77d, 0xe77a, 0xe771, 0xfdb4, 0x8f77, 0x99c1, 0xe74d, 0xbdaa,
- 0xeb49, 0xeb40, 0xeb43, 0xfab9, 0xbfbb, 0xeb45, 0xeaf9, 0xeb41,
- 0xeb47, 0xbfb8, 0xbfbc, 0xbfb6, 0x8f40, 0xfa44, 0xeafb, 0xeb4c,
- 0xeb46, 0x99c2, 0xeafc, 0xeb55, 0xeb4f, 0xeaf8, 0xee46, 0xeafe,
- 0xbfb7, 0x8f5c, 0xeb4a, 0xeb54, 0xbfbf, 0x8cbd, 0xeb51, 0xeafd,
- 0xeb44, 0xeb48, 0xeb42, 0xeb56, 0xeb53, 0xeb50, 0xbfb9, 0xbfba,
- 0xbfbe, 0xeafa, 0xeb57, 0xbfbd, 0xeb4d, 0x99c4, 0x99c5, 0xeb4b,
- 0x8f7b, 0xeb4e, 0xee53, 0xee40, 0xee45, 0xee52, 0xee44, 0xedfb,
- 0xee41, 0xc1a2, 0xedf4, 0xee4d, 0xee4f, 0xedf3, 0xc1a1, 0xee51,
- 0xee49, 0xc1a8, 0xee50, 0xee42, 0xc1aa, 0xedf9, 0xeb52, 0xee4a,
- 0xee47, 0xedf5, 0xee55, 0xc1a4, 0xc1a5, 0xedf7, 0xee48, 0x8cb6,
- 0xee54, 0xee4b, 0xedfd, 0xc1a7, 0xc1a3, 0xee4c, 0xedfe, 0xee56,
- 0xedf8, 0xee43, 0xee4e, 0xedfa, 0xedfc, 0xc2cb, 0xedf6, 0xc1a9,
- 0xc2c4, 0xc17e, 0xc1a6, 0xc2c8, 0xf0b3, 0xf0a9, 0xf0a4, 0xf0aa,
- 0xf0b4, 0xf0b8, 0xf0b7, 0xc2ca, 0xc2c9, 0xf0ab, 0xf0b9, 0xf0ae,
- 0xf0a6, 0x8fa3, 0xf0a8, 0xf0a7, 0xf0ad, 0xf0b2, 0xf0a5, 0xf0ac,
- 0xf0b1, 0xc2c7, 0xf0af, 0xc2c5, 0xf0b0, 0xc2c3, 0xc2c6, 0xf2d5,
- 0xf0b5, 0xc3c2, 0x8cce, 0xf2cd, 0xf2d1, 0xf2c9, 0xf2cc, 0xf2d4,
- 0xc3c0, 0xf2d9, 0xf2d2, 0x99c6, 0xf2ca, 0xf2da, 0xf2d3, 0xc3c3,
- 0xc3c4, 0xf2d7, 0xf2cb, 0xc3bf, 0xc3c1, 0xf2c6, 0xf2ce, 0xf2c8,
- 0x96cd, 0xf2d8, 0xf2d6, 0xf2c7, 0xf2cf, 0xf4be, 0xc3c5, 0xf2d0,
- 0xc4a7, 0xc4a9, 0xc4a6, 0x96c7, 0xf4c3, 0xf4bb, 0xf4b9, 0xf4bd,
- 0xf4ba, 0x8fa5, 0xf4bf, 0xf4c1, 0xc4aa, 0xc4ac, 0xf4c0, 0xc4ad,
- 0xc4ab, 0xf4c2, 0xfabb, 0x8c61, 0x9570, 0xc4a8, 0x9368, 0x8f7e,
- 0xc4f4, 0xf5f1, 0xf5f7, 0xc4f6, 0xf4bc, 0xf5f6, 0xf5fd, 0xf5f4,
- 0xf5fb, 0xf5fa, 0xf4b8, 0xf5f5, 0xf0b6, 0xf5fe, 0xf5f3, 0xf5f8,
- 0x8faa, 0xf5fc, 0xf5f2, 0xf74a, 0xc4f5, 0xf5f9, 0xa050, 0xf7f4,
- 0xf74b, 0xf749, 0xf747, 0xf748, 0xf74c, 0xc5d9, 0xf7f2, 0xf7f0,
- 0xf7f5, 0xf7f3, 0xf7f6, 0xc5da, 0xf7f1, 0x90d3, 0xf8bc, 0x9556,
- 0xf945, 0xf946, 0xf947, 0xf9c7, 0xf9bd, 0xca4f, 0xaaea, 0xad68,
- 0xd3b8, 0xd3b7, 0xb040, 0xb342, 0xd77c, 0xd77b, 0xb5ea, 0xb8b8,
- 0xb8b7, 0xb8b9, 0xe3d4, 0xe77e, 0xeb58, 0xeb5a, 0xeb59, 0xc1ab,
- 0xee57, 0xf0ba, 0xf9a5, 0xa6e4, 0x8fb8, 0xcdc9, 0xcdca, 0xcdc8,
- 0xcdc7, 0xaaeb, 0x99c8, 0xd0a9, 0xd0a7, 0xd0a6, 0xad69, 0xad6b,
- 0xad6a, 0xd0a8, 0x8faf, 0xd3c4, 0xd3c1, 0xd3bf, 0xb041, 0xd3c2,
- 0xb046, 0xd3bc, 0xd3cb, 0xd3cd, 0xd3bd, 0x99c9, 0xb043, 0xd3ce,
- 0xd3c9, 0xd3bb, 0xd3c0, 0xd3ca, 0xd3c6, 0xd3c3, 0xb048, 0xd3cc,
- 0xd3be, 0x9579, 0xd3c7, 0xd3b9, 0xb047, 0xb044, 0xd3c5, 0xd3c8,
- 0xd3ba, 0xb045, 0xb042, 0x9f49, 0xb34c, 0xd7a5, 0xb34b, 0x99ca,
- 0xd7a8, 0xd7ab, 0xb348, 0xb346, 0xd77e, 0xd7a9, 0xd7a7, 0xd7a4,
- 0xd7ac, 0xd7ad, 0xd7af, 0xd7b0, 0xd77d, 0xb345, 0xd7a2, 0xd7a1,
- 0xd7ae, 0xb347, 0xd7a3, 0xb349, 0xb344, 0xd7a6, 0xb34d, 0xb34a,
- 0xd7aa, 0xb5f1, 0xdbbf, 0xdbb4, 0xb5ee, 0xdfe7, 0xdbbd, 0xdbb1,
- 0xb5ec, 0xdbb6, 0xb5ef, 0xdbba, 0xdbb8, 0xb5f2, 0xb5eb, 0xdbb2,
- 0xdbb5, 0xb5f0, 0xdbb3, 0xdbbe, 0xdbbc, 0xdbb7, 0xdbb9, 0xdbbb,
- 0xb5ed, 0x99cb, 0xdfe8, 0xdfee, 0xdfe4, 0xdfea, 0xb8ba, 0xdfe6,
- 0xb8c0, 0xb8bf, 0xb8be, 0xdfed, 0xb8c1, 0xb8c2, 0xdfe3, 0xdff0,
- 0xb8c3, 0xb8bd, 0xb8bc, 0xdfec, 0xb8c4, 0xdfe2, 0xdfe5, 0xdfef,
- 0xdfeb, 0xe3f4, 0xe3e9, 0xb8bb, 0xbb6a, 0xe3dd, 0xe3f2, 0xe3de,
- 0xbb65, 0xe3db, 0xe3e4, 0xe3dc, 0xbb67, 0xe3d6, 0xe3f1, 0xbb68,
- 0xe3ee, 0xe3ef, 0xe3d7, 0xbb6d, 0xe3e6, 0xe3e0, 0xe3e7, 0xe3da,
- 0xe3f3, 0xe3eb, 0xe3e5, 0xe3d5, 0xbb69, 0xe3ec, 0xbb6c, 0xe3f0,
- 0xe3ea, 0xbb66, 0xe3e8, 0xe3e2, 0xbb64, 0xe3d9, 0xe3e1, 0xe3ed,
- 0xe3df, 0xe3e3, 0xbdc1, 0xdfe9, 0xe7b2, 0xe7bb, 0xe7b1, 0xe7ad,
- 0xe7aa, 0xbdc2, 0xe7a8, 0xbb6b, 0xe7a1, 0xbdc0, 0xe7a7, 0xbdbf,
- 0xe7ac, 0xe7a9, 0xe7b9, 0xe7b4, 0xe7ae, 0xe7b3, 0xbdbb, 0xe7ab,
- 0xe7be, 0xe7a2, 0xe7a3, 0xe7ba, 0xbdbc, 0xe7bf, 0xbdbe, 0xe7c0,
- 0xe7b0, 0xe3d8, 0xe7b6, 0xe7af, 0xe7b8, 0xe7b5, 0x9dd5, 0x8fb0,
- 0xe7a6, 0xbdb9, 0xe7bd, 0xbdba, 0xe7a4, 0xbdbd, 0xeb64, 0xe7b7,
- 0xe7bc, 0xfa7a, 0xeb61, 0xbdb8, 0xbfc0, 0xeb6b, 0xeb67, 0x9e5f,
- 0xeb65, 0xeb60, 0xeb6f, 0x99cd, 0xa0c9, 0xbfc4, 0xeb5c, 0xeb68,
- 0xeb69, 0xeb5f, 0xeb5e, 0xeb6c, 0xeb62, 0xeb5d, 0xeb63, 0xeb6e,
- 0xeb5b, 0xeb6d, 0xeb6a, 0xbfc2, 0xbfc1, 0xbfc3, 0xeb66, 0xf0cb,
- 0x9adb, 0xa0c6, 0xee59, 0xc1b1, 0xee5d, 0xee5a, 0xee61, 0xee67,
- 0xee5c, 0x8fb4, 0xee70, 0xc1ae, 0xee6a, 0xee5f, 0xee6b, 0xee66,
- 0xee6d, 0xee5e, 0xc1b3, 0xc1b2, 0xee60, 0xee6e, 0xee58, 0xee6c,
- 0xc1ac, 0xa0d7, 0xee64, 0xee63, 0xee68, 0xee5b, 0xc1b0, 0xc1b4,
- 0xee62, 0xee69, 0xc1b5, 0xee65, 0xa0c7, 0xc1ad, 0xc1af, 0xf0c7,
- 0xf0c5, 0xa043, 0xf0cc, 0xf0c9, 0xf0cd, 0x8fb5, 0xf0be, 0xf0c6,
- 0xf0d1, 0xee6f, 0xf0c2, 0xc2cf, 0xe7a5, 0xf0bd, 0xf0ca, 0xf0c4,
- 0xf0c1, 0xf0bc, 0xf0bb, 0xf0d0, 0xf0c0, 0xf0bf, 0xc2cd, 0xf0c8,
- 0x8fb2, 0xc2cc, 0xc2ce, 0xf0c3, 0xf0cf, 0xa061, 0xf2de, 0xf2df,
- 0xc3c9, 0xf2dc, 0xc3c6, 0xf2e4, 0xc3ca, 0xf2e6, 0xf2db, 0xf0ce,
- 0xf2e8, 0xf2dd, 0x9e5e, 0xc3c7, 0xf2e3, 0xf2e5, 0xf2e0, 0xf2e7,
- 0xf2e2, 0xf2e1, 0xc3c8, 0x8fb6, 0xf4c5, 0xf4c6, 0xf4c8, 0xc4ae,
- 0xc4af, 0xf4c9, 0xf4c7, 0x9fe8, 0xf4c4, 0xf642, 0xf645, 0xf641,
- 0xc4fa, 0xf643, 0xc4f9, 0xc4f8, 0xc4f7, 0xf644, 0xf751, 0xf74f,
- 0x9cb2, 0xf74e, 0xf640, 0xf750, 0xf646, 0xf74d, 0x957c, 0xf7f9,
- 0xf7d7, 0xf7f7, 0xc5db, 0xf7f8, 0xf7fa, 0xf8bf, 0xc5fa, 0xf8be,
- 0xf8bd, 0xc5fb, 0xc65a, 0xf96e, 0xf9a7, 0xf9a6, 0xf9a8, 0xa6e5,
- 0xd0aa, 0x9fc7, 0xd3cf, 0xd3d0, 0x8fbb, 0x8fbc, 0xdbc0, 0xf647,
- 0xf8c0, 0xa6e6, 0xad6c, 0xd0ab, 0x8fec, 0xd7b1, 0xb34e, 0xdbc2,
- 0xdbc1, 0xb5f3, 0xb8c5, 0xe7c1, 0xbdc3, 0xbdc4, 0x8fc0, 0x936a,
- 0xbfc5, 0xc5fc, 0xa6e7, 0x8be4, 0x9c7c, 0xd0ac, 0xaaed, 0xd0ae,
- 0xd0ad, 0xad6d, 0xd3d1, 0x95a1, 0xd3d8, 0xb049, 0xd3d6, 0xd3d4,
- 0xd3db, 0xd3d2, 0xd3d3, 0xb04a, 0xb04e, 0xd3dc, 0xb04d, 0xd3da,
- 0xd3d7, 0xd3d5, 0xb04b, 0xb04c, 0xd3d9, 0xfeec, 0x95a3, 0xb350,
- 0xd7b2, 0xb355, 0xd7c2, 0xb354, 0xd7c4, 0x8c45, 0x8cb8, 0xd7b8,
- 0xb352, 0xd7c3, 0xd7b3, 0xb353, 0xd7bf, 0xd7bb, 0xd7bd, 0xd7b7,
- 0xd7be, 0x8fc1, 0xb34f, 0xd7ba, 0xa052, 0xd7b9, 0xd7b5, 0xd7c0,
- 0xd7bc, 0xd7b4, 0xd7b6, 0xb351, 0xd7c1, 0x99d0, 0xb5f6, 0xdbcd,
- 0x8fc3, 0x8fc4, 0xdbc9, 0xdbcb, 0xdbc6, 0xdbc5, 0xdbc3, 0xdbca,
- 0xdbcc, 0xdbc8, 0x95a4, 0xdbc7, 0xb5f4, 0xb5f5, 0x8fc6, 0x9e60,
- 0xdbcf, 0xb8cd, 0xdff2, 0xdff8, 0xdff3, 0xdff4, 0xf9d8, 0xdff9,
- 0xb8cf, 0xb8c7, 0xb8ce, 0xdff1, 0xdbc4, 0xb8ca, 0xb8c8, 0xdff7,
- 0xdff6, 0xb8c9, 0xb8cb, 0xdff5, 0xb8c6, 0xb8cc, 0x95a5, 0xe3f6,
- 0xbb74, 0xe442, 0xe441, 0xe3fb, 0xbb76, 0xe440, 0xe3f7, 0xe3f8,
- 0xbb6e, 0xbb70, 0x9cb3, 0xe3fd, 0xe3f5, 0xbb72, 0xbb71, 0xe3f9,
- 0xe3fe, 0xe3fc, 0xbb73, 0xe3fa, 0x99d1, 0xfef1, 0xdbce, 0xbb6f,
- 0xe7c2, 0xe7c9, 0xbdc6, 0xe7cd, 0xbdca, 0xe7c5, 0xe7c3, 0xe7cc,
- 0xbdc5, 0xe7cb, 0xbdc7, 0xbdc8, 0xe7c4, 0xbdc9, 0xe7ca, 0xe7c6,
- 0xe7c7, 0xe7c8, 0xbb75, 0xeb70, 0xeb7c, 0xbfca, 0xeb77, 0xeb79,
- 0x99d2, 0xbfc8, 0xeb71, 0xeb75, 0xeb78, 0xbfc6, 0xbfc9, 0xeb7b,
- 0xeb73, 0xeb74, 0xeb7a, 0xeb72, 0xeb76, 0xbfc7, 0xee72, 0xee71,
- 0xc1b7, 0xee77, 0xc1b9, 0xc1b6, 0xee73, 0xc1ba, 0xee74, 0xee75,
- 0xee78, 0x9cc2, 0xc1b8, 0xf0d6, 0x99d3, 0xf0d9, 0xf0d3, 0xf0d5,
- 0x95a7, 0xf0d4, 0xf0d7, 0xf0d8, 0xee76, 0xf0d2, 0x95a9, 0xc3cd,
- 0xf2ec, 0xf2ef, 0xf2f1, 0xf2ea, 0xf2eb, 0xf2ee, 0xf2f0, 0xc3ce,
- 0xc3cc, 0xc3cb, 0xf2ed, 0xf2e9, 0xf4ca, 0xc4b0, 0x95a6, 0xf4cb,
- 0xf649, 0xc4fb, 0xf64b, 0xc4fc, 0xf648, 0xf64a, 0xc5a8, 0xf752,
- 0xc5a7, 0xf7fd, 0xf7fc, 0xf7fb, 0x9c5d, 0xf948, 0xf949, 0xf94b,
- 0xf94a, 0xca50, 0xa6e8, 0x98e2, 0xad6e, 0xd7c5, 0xb5f7, 0xdffa,
- 0xc2d0, 0x8fc9, 0xf2f2, 0xa0c2, 0x8fca, 0xa8a3, 0xb357, 0x99d4,
- 0xb356, 0xa0b9, 0xdbd0, 0xb5f8, 0xdbd2, 0xdbd1, 0xdffb, 0xb8d0,
- 0xe443, 0xe446, 0xe445, 0xe444, 0xe7ce, 0xe7d0, 0xe7cf, 0x9b58,
- 0xbfcc, 0x8fcd, 0xa0d4, 0xbfcb, 0xc1bb, 0xee79, 0xee7b, 0xee7a,
- 0xc2d1, 0xf2f4, 0xf2f3, 0xf4cc, 0xc4b1, 0x8fce, 0xc4fd, 0xf754,
- 0xf753, 0xc65b, 0x8be5, 0x8979, 0xa8a4, 0xd0af, 0xad6f, 0xd7c8,
- 0xd7c6, 0xd7c7, 0xdbd4, 0xdbd5, 0xe043, 0xdbd3, 0xdffc, 0xe041,
- 0xe040, 0xe042, 0xb8d1, 0xdffe, 0xdffd, 0xe044, 0x8fd0, 0xe449,
- 0xe447, 0xe448, 0xe7d3, 0xe7d1, 0xe7d2, 0xeb7d, 0xee7c, 0xee7d,
- 0xc2d2, 0xf2f5, 0xf4cd, 0xc4b2, 0xf64c, 0xf755, 0xc5a9, 0xf7fe,
- 0xf94c, 0xa8a5, 0xad71, 0xad72, 0xd0b0, 0xd0b1, 0xad70, 0xb054,
- 0xb052, 0xb051, 0xb058, 0xb050, 0xb059, 0xd3dd, 0xb056, 0xb053,
- 0xb057, 0xb055, 0xb04f, 0xb35f, 0x95b6, 0xb359, 0xd7cc, 0xb35e,
- 0xb360, 0xb35a, 0xb35b, 0xd7ca, 0x99d6, 0xb358, 0x95e5, 0xd7cb,
- 0xb35d, 0xd7c9, 0xb35c, 0xb644, 0xb646, 0x99d7, 0xdbd8, 0xb645,
- 0xb5f9, 0xb5fd, 0x95b5, 0xb8e4, 0xe049, 0xdbda, 0xb5fe, 0xdbdd,
- 0xdbde, 0xb643, 0xdbe0, 0xa0ca, 0xdbe2, 0xdbe3, 0xdbd7, 0xdbd6,
- 0xdbe4, 0xb642, 0xdbe1, 0xdbdf, 0xb640, 0xb5fb, 0xb647, 0xdbdb,
- 0xdbdc, 0xdbd9, 0xb641, 0xb5fc, 0xb5fa, 0xe048, 0xb8df, 0xb8da,
- 0xb8d5, 0x9ffd, 0xb8e5, 0xb8d6, 0xb8d2, 0xb8e1, 0xb8de, 0xb8e0,
- 0xb8d7, 0xb8dc, 0xb8d3, 0xb8d4, 0xe050, 0xe04d, 0xe045, 0xe04a,
- 0xb8e2, 0xe051, 0xb8e3, 0xb8d9, 0xa058, 0xe047, 0xe04f, 0xe04b,
- 0xe04e, 0xe04c, 0xb8dd, 0xe046, 0xb8d8, 0xe44c, 0xbb78, 0xbb7b,
- 0xe44e, 0x8fd6, 0xbba5, 0xe44d, 0xbb7d, 0x99d8, 0xbdcf, 0xe44f,
- 0xbba4, 0xe44b, 0xbba6, 0x8fd3, 0xbb79, 0xb8db, 0xbb7c, 0xbb7a,
- 0xbb7e, 0xbba2, 0xbb77, 0xbba7, 0xbba3, 0x8fe5, 0xbba1, 0xe44a,
- 0x8fe9, 0xbdd6, 0xbdd2, 0x99d9, 0xbdd9, 0xe7d6, 0xbdda, 0xe7e2,
- 0xe7db, 0xbdcb, 0xe7e3, 0xe7dd, 0xbdd5, 0xe7de, 0xbdd4, 0xe7e1,
- 0xbdce, 0xe7df, 0xe7d5, 0xbdcd, 0xebaa, 0xbdd3, 0xbdd0, 0xbdd8,
- 0xe7d4, 0xe7d8, 0xbdcc, 0xe7d7, 0xe7d9, 0xe7da, 0xbdd7, 0xe7dc,
- 0xe7e0, 0xe7e4, 0x927c, 0xbddb, 0xbfd2, 0xeba5, 0xebab, 0xeba8,
- 0xeb7e, 0xebac, 0xeba1, 0xeba7, 0xbfcd, 0xbfd3, 0xebad, 0x9c45,
- 0xbfcf, 0xbfd9, 0xbfd4, 0xebaf, 0xeba9, 0xbfd0, 0xeba2, 0xbfda,
- 0xeba3, 0xeba4, 0xbfdb, 0xbfd8, 0xbdd1, 0xbfce, 0xebb0, 0xbfdc,
- 0xbfd5, 0xebae, 0xbfd1, 0xbfd6, 0xbfd7, 0xc1c3, 0xeea4, 0xeead,
- 0xeeaa, 0xeeac, 0xc1c0, 0xeea5, 0x8fde, 0xeeab, 0xc1bc, 0xeea7,
- 0xc1c4, 0xeea3, 0xeea8, 0xeeaf, 0xeba6, 0xeea9, 0xeea2, 0xc1bd,
- 0xeea1, 0xc1be, 0xeeb0, 0xc1bf, 0xeeae, 0xc1c2, 0xee7e, 0x8fdf,
- 0xc1c1, 0xeea6, 0xf0dc, 0xf0ea, 0xf0e5, 0xf0e7, 0xf0db, 0xc2d3,
- 0xf0da, 0xc2d6, 0xc2d5, 0xa04b, 0xf0e9, 0xf0e1, 0xf0de, 0xf0e4,
- 0xf0dd, 0xf0df, 0xf0e8, 0xf0e6, 0xc2d4, 0xf0ed, 0xf0eb, 0xf0e2,
- 0xf0ec, 0xf0e3, 0x8fe2, 0xf2f9, 0xc3cf, 0xf341, 0xa0cc, 0xf64f,
- 0xc3d6, 0xf0e0, 0xf2f7, 0xc3d2, 0xf2f8, 0xf2fd, 0x8fe3, 0x8fe4,
- 0xc3d4, 0xc3d5, 0xf2f6, 0xf340, 0xf342, 0xf2fa, 0xf2fc, 0xf2fe,
- 0xf2fb, 0xf343, 0xc3d1, 0xc3d7, 0xc3d3, 0xc3d0, 0xf4d0, 0x9bc4,
- 0xc4b7, 0xf4ce, 0x9bfc, 0xf4d2, 0xf4d3, 0xc4b5, 0xf4d4, 0xf4d1,
- 0x964c, 0xf4cf, 0xc4b8, 0xc4b4, 0xf4d5, 0xc4b6, 0xc4b3, 0xc4fe,
- 0xc540, 0xf64e, 0xf64d, 0xf650, 0xf651, 0xc541, 0xf756, 0xf75b,
- 0xc5aa, 0x9af6, 0xf758, 0x8cae, 0xf757, 0xf75a, 0xf759, 0xf843,
- 0xc5dc, 0xf842, 0xf840, 0xf841, 0x8fe7, 0xc5fe, 0xc5fd, 0xf8c1,
- 0xf8c2, 0xc640, 0xf94d, 0xf94e, 0xc667, 0x8fe8, 0xc66d, 0xf9a9,
- 0xf9c8, 0x8be7, 0x897a, 0x897b, 0xa8a6, 0xd7cd, 0xd7ce, 0xe052,
- 0xe450, 0xe7e5, 0xc1c6, 0xc1c5, 0xf0ee, 0xf344, 0xf844, 0xa8a7,
- 0xd3de, 0xb05a, 0xb361, 0xe054, 0xe053, 0xbddc, 0xe7e6, 0xbddd,
- 0xeeb1, 0xc2d7, 0x99da, 0xc676, 0xa8a8, 0xcdcb, 0xd3df, 0xb362,
- 0xd7cf, 0xd7d0, 0xdbe5, 0xb648, 0xb8e6, 0xe056, 0xe055, 0xe057,
- 0xe451, 0xe452, 0xbba8, 0xbfdd, 0xbdde, 0xbfde, 0xeeb5, 0xeeb2,
- 0xeeb4, 0xeeb3, 0xc1c7, 0xf0ef, 0xf346, 0xf345, 0xcba4, 0xb05c,
- 0xb05b, 0xd3e0, 0xd7d1, 0xdbe7, 0xdbe6, 0xb649, 0xe059, 0xe05a,
- 0xe058, 0xb8e8, 0xb8e7, 0xbbaa, 0xbba9, 0xe7e7, 0xebb3, 0xebb1,
- 0xebb2, 0xbfdf, 0xeeb7, 0xeeb6, 0xf0f2, 0xf0f1, 0xf0f0, 0xf347,
- 0x8fed, 0xf9aa, 0xa8a9, 0xad73, 0x95c0, 0xad74, 0xb05d, 0xb05e,
- 0xd3e2, 0xd3e1, 0xd7d2, 0xb368, 0xb366, 0xb363, 0xb367, 0xb365,
- 0xb364, 0xa0cb, 0xb64a, 0xdbea, 0xb8ed, 0xb64c, 0xb651, 0xdbec,
- 0xb653, 0xb652, 0xb655, 0xdbeb, 0xdbe8, 0xb64f, 0xb64b, 0xb64d,
- 0xdbe9, 0xb654, 0xb650, 0xb64e, 0xb8ef, 0xb8ee, 0xb8ec, 0xb8f0,
- 0xb8ea, 0xb8eb, 0xb8e9, 0xe05b, 0x9e48, 0xe454, 0xbbac, 0xbbad,
- 0xbbab, 0x99db, 0xe453, 0x8ff3, 0xe455, 0xe7ea, 0xe7ec, 0x8ff9,
- 0xbde7, 0xe7ed, 0xbde0, 0xe7e9, 0xbddf, 0xbde9, 0xbde5, 0xbde6,
- 0xbde2, 0xe7e8, 0xbde1, 0xe7ee, 0xe7eb, 0x95c1, 0xbde8, 0xa04e,
- 0xbde3, 0xbde4, 0xebb5, 0xebb7, 0xebb6, 0x99dc, 0xebb8, 0xbfe0,
- 0xebb4, 0xa064, 0xc1cb, 0xeeb8, 0xc1c8, 0xc1cc, 0xc1ca, 0xc1c9,
- 0xf0f3, 0xf0f6, 0xf0f5, 0x8ff7, 0xf0f4, 0xc2d8, 0xf348, 0xf349,
- 0xc3d8, 0xf34a, 0xc3d9, 0x89b0, 0xa048, 0xc4ba, 0xc4b9, 0xf652,
- 0x8ffb, 0x8ff6, 0xc542, 0xf653, 0xf75c, 0xc5ab, 0xc5ac, 0x9ddc,
- 0xf845, 0xc642, 0x99dd, 0x8be8, 0xa8aa, 0xb36a, 0xb369, 0xe05c,
- 0xe05d, 0xbbae, 0xebb9, 0xbdea, 0xebba, 0xeeb9, 0xa8ab, 0xd0b2,
- 0xad76, 0xad75, 0xd3e3, 0xb05f, 0xd3e4, 0xd7d5, 0x92c1, 0xd7d4,
- 0xd7d3, 0xdbee, 0xb658, 0x9fd6, 0xdbed, 0xb657, 0xdbef, 0xb656,
- 0xe05f, 0xe062, 0xe060, 0xe061, 0xe065, 0xe05e, 0xe066, 0xe063,
- 0xe064, 0xbbb0, 0xe456, 0xbbaf, 0xe7f2, 0xe7f0, 0xbdeb, 0xe7ef,
- 0xe7f1, 0xbdec, 0xebbb, 0xa0d2, 0xebbc, 0xc1cd, 0x9040, 0xf34c,
- 0xf34e, 0xf34b, 0xf34d, 0xf4d6, 0xf654, 0xf96f, 0xa8ac, 0xad77,
- 0xd3e5, 0xd3e7, 0xd3e6, 0xd7d8, 0xb36c, 0xd7d6, 0xb36b, 0xd7d9,
- 0x8ac4, 0xd7da, 0xd7d7, 0x99e0, 0xdbfb, 0xb660, 0xdbf3, 0xdbf9,
- 0xb65b, 0xb65e, 0xdbf2, 0xb659, 0xdbf6, 0xe06c, 0xb65d, 0xdbf1,
- 0x9ff0, 0xdbf7, 0xdbf4, 0xdbfa, 0xdbf0, 0xdbf8, 0xb65c, 0xb65f,
- 0xdbf5, 0xb65a, 0xb8f2, 0xe068, 0xb8f1, 0xe06f, 0xe06e, 0xb8f8,
- 0xb8f9, 0xe070, 0xb8f3, 0xe06d, 0xb8f7, 0xe072, 0xe069, 0xe06b,
- 0xb8f4, 0xe067, 0xe06a, 0xe071, 0xb8f5, 0xe073, 0xb8f6, 0xbbb1,
- 0xe45b, 0xe461, 0xe459, 0xe462, 0x9ff3, 0xe458, 0xe45d, 0xe463,
- 0xe460, 0xe45f, 0xe45e, 0xe457, 0xe45c, 0xe45a, 0x9dbf, 0xbdf1,
- 0xbdee, 0xe7fb, 0xe841, 0xe843, 0xe840, 0xe7f8, 0xe7fa, 0xe845,
- 0xe842, 0xe7fc, 0xe846, 0xe7f9, 0xe844, 0xbdef, 0xbdf5, 0xbdf3,
- 0xe7f3, 0xbdf4, 0xbdf0, 0xe7f4, 0xe7f6, 0xe7f5, 0xe7fd, 0xe7fe,
- 0x9ff6, 0xbdf2, 0x95c8, 0xbded, 0x9e5a, 0xe7f7, 0xebc6, 0xbfe2,
- 0xebbd, 0xbfe3, 0xbfe6, 0xebc2, 0xebbf, 0xbfe5, 0x99e3, 0xebc3,
- 0xebc4, 0xebbe, 0xebc7, 0xebc0, 0xebc5, 0xbfe4, 0xbfe1, 0xebc1,
- 0x8a4a, 0xeebf, 0xc1d0, 0xc1ce, 0xc1d1, 0xc1cf, 0xeebe, 0xeebb,
- 0xeeba, 0x9ff1, 0xeebd, 0xeebc, 0xf145, 0xc2de, 0xf0fb, 0xf0fa,
- 0xc2d9, 0xf141, 0xf140, 0xf0f7, 0xf143, 0xf0fc, 0xc2dd, 0xf0f9,
- 0xf142, 0xf0f8, 0xc2da, 0xc2dc, 0xf0fd, 0xc2db, 0xf0fe, 0x8aa7,
- 0xf144, 0xf352, 0xc3de, 0xf34f, 0xf353, 0x99e6, 0xc3db, 0xf351,
- 0xc3e0, 0x9ff7, 0xc3dd, 0x9fed, 0xf350, 0xc3df, 0xf354, 0xc3da,
- 0x8a5c, 0x9dae, 0xc4bc, 0xc4be, 0xf4d9, 0xc4bd, 0xf4d7, 0xc3dc,
- 0xf4d8, 0xc4bb, 0xc543, 0xc545, 0xf656, 0xc544, 0xf655, 0xf761,
- 0xc5ad, 0xf760, 0xc5ae, 0xf75e, 0xf75d, 0xf762, 0xf763, 0xf846,
- 0xf75f, 0xf8c6, 0xf8c3, 0xf8c4, 0xf8c5, 0xc65c, 0xf951, 0xf950,
- 0xf94f, 0xf970, 0x95c9, 0xf9be, 0xf9ab, 0xc66e, 0xa8ad, 0xb060,
- 0x9048, 0x99e8, 0xb8fa, 0x9049, 0x8cba, 0xbdf6, 0x90b1, 0xebc8,
- 0xc2df, 0xf355, 0x904a, 0xf9ac, 0xa8ae, 0xaaee, 0xad79, 0xad78,
- 0x99ea, 0xb063, 0xd3e8, 0xb061, 0xd3e9, 0xb062, 0xd7df, 0xd7db,
- 0x9bd1, 0xb36d, 0xd7de, 0xd7dd, 0xd7dc, 0xb36e, 0xd7e0, 0xd7e1,
- 0x99eb, 0x99ec, 0xdc43, 0xdc41, 0xdc45, 0xdc46, 0xdc4c, 0xdc48,
- 0xdc4a, 0x99ed, 0xdc42, 0xdbfc, 0xdc49, 0x99ee, 0xdc4b, 0xdc44,
- 0xdc47, 0xdbfd, 0xb662, 0xdc40, 0xdbfe, 0xb661, 0xb663, 0xb8fd,
- 0xe075, 0xe077, 0xe076, 0xe07b, 0xb8fb, 0xe078, 0xe074, 0xe079,
- 0xe07a, 0xb8fc, 0xb8fe, 0xe07c, 0xe467, 0xe466, 0xe464, 0xe465,
- 0xbbb3, 0xbbb5, 0xbbb2, 0xbbb4, 0xe84d, 0xe84e, 0xe849, 0x904c,
- 0xe84a, 0xbdf8, 0xbdfd, 0xbdf7, 0xbdfe, 0xbdf9, 0xe84b, 0xe84c,
- 0xe848, 0xbe40, 0xbdfb, 0xbdfa, 0xbdfc, 0xe847, 0x904d, 0xebca,
- 0xbfe8, 0x95cb, 0xebcc, 0xbfea, 0xebcf, 0xebcb, 0xebc9, 0xebce,
- 0xbfe9, 0xebcd, 0xbfe7, 0xc1d3, 0xc1d6, 0xeec1, 0x97e2, 0xc1d4,
- 0xeec0, 0xc1d2, 0xc1d5, 0xf146, 0xf147, 0xf148, 0xc2e0, 0x95cc,
- 0xf149, 0xc2e1, 0xc3e2, 0xf358, 0xf359, 0xf357, 0xf356, 0xf35a,
- 0xc3e1, 0xf4dd, 0xf4db, 0xf4dc, 0xf4de, 0xf4da, 0xf4df, 0xf658,
- 0x9f78, 0xf659, 0xf657, 0xc546, 0xf764, 0xc5af, 0xf765, 0xf848,
- 0xf847, 0x897c, 0x897d, 0x897e, 0x995d, 0xa8af, 0xb664, 0xb940,
- 0x9b5a, 0xbbb6, 0x9050, 0xbfec, 0x8c4f, 0xbfeb, 0xc3e3, 0xc47c,
- 0xc547, 0xa8b0, 0xb064, 0xb941, 0x9054, 0xf35b, 0xc6d6, 0x9aa8,
- 0x99ef, 0xfeeb, 0x9da3, 0x9da1, 0x9943, 0x9945, 0x9d7d, 0xcba6,
- 0x99f0, 0xa8b1, 0xa8b4, 0xa8b3, 0xa8b2, 0xcba5, 0x99f1, 0xcdcd,
- 0x99f2, 0xcdcf, 0xaaef, 0x8cbc, 0x9d60, 0xaaf1, 0xcdcc, 0xcdce,
- 0xaaf0, 0xcdd1, 0xcdd0, 0xcdd2, 0xa0a3, 0xd0b6, 0xd0b4, 0xad7c,
- 0xd0b3, 0xada3, 0xad7e, 0xad7b, 0xada4, 0xad7d, 0xada2, 0xada1,
- 0xd0b5, 0xad7a, 0xb06a, 0xd3eb, 0xd3f1, 0xb067, 0xb06e, 0x905b,
- 0xb069, 0xd3ee, 0xd3f0, 0xb06c, 0xd3ea, 0xd3ed, 0xb068, 0xb065,
- 0xd3ec, 0xb06b, 0xd3ef, 0xb06d, 0xb066, 0x9edb, 0xd7e3, 0xd7e6,
- 0xb370, 0xb37a, 0xb376, 0xd7e4, 0x9d79, 0xb37e, 0xb377, 0xb37c,
- 0xb372, 0xb36f, 0xb371, 0xb37d, 0xd7e5, 0xb375, 0xb378, 0xb374,
- 0xb379, 0xd7e7, 0xb37b, 0xb373, 0xd7e2, 0xdc4d, 0xb665, 0xdc4f,
- 0xb667, 0xb669, 0x99f3, 0xdc4e, 0xb666, 0xb66a, 0x9062, 0xb668,
- 0xb947, 0xe0a3, 0xb94f, 0xe07e, 0xb950, 0xb945, 0xe0a1, 0xb94a,
- 0xe0a2, 0xb943, 0xb942, 0x9f55, 0xb94d, 0xb94c, 0xb94b, 0xb949,
- 0xb94e, 0xe07d, 0xb944, 0xb946, 0xb948, 0x9bf9, 0xbbb8, 0xbbbb,
- 0xbbbf, 0xbbb9, 0xbbbe, 0xbbbc, 0xbbb7, 0x9065, 0xbbbd, 0xbbba,
- 0x96e0, 0xe852, 0xbe43, 0xbe41, 0xe853, 0x98be, 0xbe44, 0xbe42,
- 0xe851, 0xe850, 0xbff0, 0xe84f, 0xbfee, 0xbfed, 0xebd0, 0xbe45,
- 0xbfef, 0xebd1, 0xbff2, 0xebd2, 0xbff1, 0xc1d8, 0xeec3, 0xc1d7,
- 0xc1dc, 0xc1da, 0xc1db, 0xc2e3, 0xc1d9, 0xeec2, 0xebd3, 0xc2e2,
- 0xc2e4, 0xc3e4, 0xc3e5, 0xf4e0, 0xc5de, 0xc5dd, 0xa8b6, 0xca55,
- 0xb06f, 0xca52, 0xca53, 0xca51, 0xca54, 0xcbaa, 0xcba7, 0xcbac,
- 0xcba8, 0xa8b7, 0xa8ba, 0xcba9, 0xa8b9, 0xcbab, 0x9068, 0xa8b8,
- 0x906c, 0xcdd5, 0xcdd7, 0xaaf4, 0xcdd3, 0xcdd6, 0xcdd4, 0xaaf2,
- 0xaaf5, 0xaaf3, 0x95d8, 0xd0b8, 0xd0bc, 0xd0b9, 0xada7, 0xada8,
- 0x906a, 0xd0bb, 0xd0bd, 0xd0bf, 0xada5, 0xd0be, 0xada6, 0xd7ee,
- 0xd0ba, 0xd3f2, 0xd3fb, 0xd3f9, 0xd3f4, 0xd3f5, 0xd3fa, 0xd3fc,
- 0xb071, 0xd3f7, 0xd3f3, 0xb070, 0xb072, 0xd3f6, 0xd3fd, 0xd3f8,
- 0xb3a1, 0xd7f1, 0xd7e9, 0xd7ef, 0xd7f0, 0xb3a2, 0xd7e8, 0xd7ea,
- 0xd0b7, 0xd7ec, 0xd7ed, 0xd7eb, 0xb66c, 0xdc56, 0xebd4, 0xdc57,
- 0xdc54, 0xb3a3, 0xb66e, 0xdc53, 0xdc59, 0xdc58, 0xb66b, 0xdc5c,
- 0xdc52, 0xdc5b, 0xdc50, 0xdc5a, 0xdc55, 0xb66d, 0xe0aa, 0xe0a5,
- 0xe0ab, 0xe0a6, 0xe0a4, 0xe0a7, 0xb951, 0xe0a9, 0xe0a8, 0xb952,
- 0xbbc1, 0xbbc0, 0xe46e, 0xe471, 0xe469, 0xe46d, 0xbbc2, 0xe46c,
- 0xe46a, 0xe470, 0xe46b, 0xe468, 0xe46f, 0xe859, 0xbe48, 0xf14a,
- 0xe856, 0xe857, 0xe855, 0xdc51, 0xbe47, 0xe85a, 0xe854, 0xbe46,
- 0xbe49, 0xe858, 0xebd5, 0xbff3, 0xebd6, 0xebd7, 0xeec4, 0xc1dd,
- 0xf14b, 0xf14c, 0xf14d, 0xf35d, 0xf35c, 0xf4e2, 0xf4e1, 0xf65b,
- 0xf65c, 0xf65a, 0xf766, 0xc5b0, 0xa8bb, 0xadaa, 0xada9, 0xb075,
- 0xb074, 0xd440, 0xd441, 0xd3fe, 0x9fb2, 0xb073, 0xd7f5, 0xd7f6,
- 0xd7f2, 0xb3a4, 0xd7f3, 0x9fae, 0xd7f4, 0x9fb0, 0x89ad, 0xdc5f,
- 0xdc61, 0xdc5d, 0xdc60, 0xb66f, 0xdc5e, 0xb670, 0x906e, 0xdd73,
- 0xb955, 0xb954, 0xb953, 0xe0ac, 0xe0ad, 0x9e71, 0xe473, 0xe475,
- 0xbbc6, 0xbbc3, 0x9e4a, 0xbbc5, 0xbbc4, 0xe474, 0xe472, 0x9fdc,
- 0xe861, 0xe85e, 0xe85f, 0xbe4d, 0xe860, 0xe85b, 0xe85c, 0xbe4a,
- 0xbe4b, 0xe85d, 0xbe4c, 0x89ab, 0xebdb, 0x9fb8, 0xebdc, 0xebd9,
- 0xebda, 0xbff4, 0xebd8, 0xeec8, 0xeec5, 0xeec7, 0xc1e0, 0xeecb,
- 0xc1df, 0xeec9, 0xeecc, 0xeeca, 0xeec6, 0xc1de, 0xf14f, 0xf150,
- 0xf14e, 0x9070, 0xf152, 0xc2e5, 0xc2e6, 0xf35f, 0xc3e7, 0xf151,
- 0xf35e, 0xc3e6, 0xf4e5, 0xf4e6, 0xc4bf, 0xf4e4, 0x8b63, 0xf4e3,
- 0xf65d, 0xc548, 0x95dc, 0xf849, 0xf8c8, 0xf8c7, 0xc643, 0xc65d,
- 0xf8c9, 0xf971, 0x9071, 0xc66f, 0xa8bc, 0xaaf6, 0xb956, 0xc4c0,
- 0xa8bd, 0xadab, 0xb3a5, 0xb671, 0xc2e7, 0xaaf7, 0xd0c1, 0xd0c0,
- 0xd442, 0xfc5e, 0xb078, 0xb076, 0xb07a, 0xd444, 0xb079, 0xb077,
- 0x8949, 0xd443, 0xb3a8, 0xd7fc, 0x965b, 0xb3a7, 0xb3a9, 0xd842,
- 0xb3ab, 0xd7fe, 0xd840, 0xd7f7, 0xb3aa, 0xd843, 0xd7f9, 0xd7fa,
- 0xd7f8, 0xb3a6, 0x8c50, 0xd841, 0xd7fb, 0xd7fd, 0x94a6, 0xdc6d,
- 0x8fd5, 0xdc6c, 0xdc6a, 0xdc62, 0xdc71, 0xdc65, 0xdc6f, 0xdc76,
- 0xdc6e, 0xb679, 0x9e73, 0xb675, 0xdc63, 0xdc69, 0xb677, 0x9075,
- 0xdc68, 0xb678, 0xb67a, 0xdc6b, 0x99f7, 0xb672, 0xb673, 0xdc77,
- 0xdc75, 0xdc74, 0xdc66, 0xdc72, 0xb676, 0x8cbf, 0xb674, 0xdc73,
- 0xdc64, 0xdc67, 0xdc70, 0x99f9, 0x9663, 0x95b9, 0xe4ba, 0xe0b7,
- 0xe0b0, 0xe0c3, 0xe0cc, 0xe0b3, 0xb961, 0x94d4, 0xe0c0, 0xb957,
- 0xb959, 0xb965, 0xe0b1, 0xfcfa, 0xb95a, 0xb95c, 0xb966, 0xb95b,
- 0x9077, 0x90ab, 0xb964, 0xe0b9, 0xe0ae, 0xb962, 0xe0b8, 0xb95e,
- 0xe0ca, 0xb963, 0xe0c8, 0xe0bc, 0xe0c6, 0xb960, 0xe0af, 0xe0c9,
- 0xe0c4, 0x9d4d, 0xe0cb, 0xb958, 0x99fa, 0xb967, 0xb95d, 0x92e3,
- 0xe0b5, 0x97bb, 0xe0bd, 0xe0c1, 0x9078, 0xe0c5, 0xb95f, 0xe0b4,
- 0xe0b2, 0xe0be, 0x99fb, 0xe0bb, 0xe0ba, 0x97e0, 0xe0bf, 0xe0c2,
- 0xe0c7, 0xe478, 0x96dc, 0xbbc7, 0xe4a4, 0xe47a, 0xbbcc, 0xbbd0,
- 0xe4ad, 0xe4b5, 0xe4a6, 0xbbc8, 0x9ca8, 0xe4aa, 0xe0b6, 0x9772,
- 0xbbc9, 0xe4b1, 0xe4b6, 0xe4ae, 0x9440, 0xe4b0, 0xe4b9, 0xe4b2,
- 0xe47e, 0xe4a9, 0x92f2, 0xbbd1, 0xbbcd, 0xe47c, 0xe4ab, 0xbbcb,
- 0xe4a5, 0xbbca, 0xe4b3, 0xe4a2, 0xe479, 0xbbce, 0xe4b8, 0xe47b,
- 0xe4af, 0xe4ac, 0xe4a7, 0xe477, 0xe476, 0xe4a1, 0xe4b4, 0xbbcf,
- 0xe4b7, 0xe47d, 0xe4a3, 0xbe52, 0x99fd, 0x99fc, 0xbe5a, 0xbe55,
- 0xe8a4, 0xe8a1, 0xe867, 0xbe50, 0xf9d7, 0x964a, 0xbe4f, 0xbe56,
- 0x96d8, 0x99fe, 0xe865, 0xbe54, 0xe871, 0xe863, 0xe864, 0xbe4e,
- 0xe8a3, 0xbe58, 0xe874, 0xe879, 0xe873, 0xebee, 0xe86f, 0xe877,
- 0xe875, 0xe868, 0xe862, 0xe87d, 0xbe57, 0xe87e, 0x904b, 0xe878,
- 0xe86d, 0xe86b, 0xe866, 0xfa41, 0xe86e, 0xe87b, 0xe86a, 0xe87a,
- 0xe8a2, 0x9a40, 0xbe53, 0x975b, 0xe876, 0xe87c, 0xe872, 0xe86c,
- 0xbe51, 0x9a41, 0x91dd, 0xe4a8, 0xe870, 0xbe59, 0xe869, 0x93fc,
- 0x9a42, 0x9a43, 0x9659, 0xebf4, 0xbff7, 0xebf3, 0xebf0, 0xec44,
- 0xbffb, 0x9a44, 0xec41, 0xebf8, 0xec43, 0xebe9, 0xebf6, 0x9051,
- 0xbffd, 0xebe1, 0x94bf, 0xebdf, 0xec42, 0xec40, 0xebfe, 0xebed,
- 0xebec, 0xebe2, 0xc040, 0xebe8, 0xebf2, 0xebfd, 0xc043, 0xec45,
- 0xc1e8, 0xc045, 0xbffe, 0xebe6, 0xebef, 0xebde, 0xebe0, 0xbff5,
- 0xc042, 0xbffa, 0xebe7, 0xebf7, 0xebf1, 0xc041, 0xebdd, 0xc1e3,
- 0xebf9, 0xebfc, 0xbffc, 0x90a2, 0xebeb, 0xc044, 0xbff9, 0x9cab,
- 0x9776, 0xbff8, 0xebf5, 0xebfb, 0xbff6, 0xebe4, 0xebfa, 0xebe5,
- 0xfc55, 0xfe45, 0x94a8, 0x9a45, 0xfa4b, 0x9de1, 0xebea, 0xeed2,
- 0x96d9, 0xeed7, 0xc1e5, 0xc1e7, 0xeedd, 0xc1e1, 0xeeec, 0xeee3,
- 0xeed8, 0xeed9, 0xeee2, 0xc1ee, 0xeee1, 0xeed1, 0xeee0, 0xeed4,
- 0xeeed, 0xc1ed, 0xc1eb, 0xeed5, 0xeee8, 0x9774, 0xeeda, 0xeee7,
- 0xfdf5, 0xeee9, 0xeed0, 0xc1e6, 0x92e5, 0xeeea, 0x9645, 0x91da,
- 0xeede, 0x90a3, 0xc1ea, 0xeedb, 0xa05f, 0xc1ec, 0xeee4, 0x90af,
- 0x97bf, 0xc1e4, 0xeed6, 0xeee5, 0x914c, 0xeedf, 0xebe3, 0xeee6,
- 0xeed3, 0x967a, 0xc1e9, 0xeeeb, 0x91de, 0xc1e2, 0xeece, 0x9a46,
- 0xfeb0, 0x9779, 0x946c, 0xf160, 0xf159, 0xc2e9, 0xf154, 0xf163,
- 0xf15b, 0xeedc, 0x9858, 0xf165, 0xf155, 0xc2e8, 0xf15f, 0xc2ea,
- 0xc2f2, 0xc2f0, 0xf161, 0xc2f1, 0xf157, 0x9266, 0xf158, 0xf15d,
- 0xf162, 0x93fb, 0xeecd, 0xc2eb, 0xf16a, 0xf167, 0xf16b, 0xf15e,
- 0xf15a, 0xf168, 0xf36a, 0xf15c, 0xc2ee, 0x9a47, 0xc2ed, 0xeecf,
- 0xc2ef, 0xf164, 0xf166, 0xc2ec, 0xf169, 0xf153, 0xf156, 0x9749,
- 0x9748, 0x934a, 0x9ce2, 0xf373, 0xf363, 0xc3eb, 0xf371, 0x9264,
- 0xf361, 0xc3ec, 0xf36c, 0x91df, 0xf368, 0xc3f1, 0xf372, 0xf362,
- 0xf365, 0xc3e9, 0xf374, 0xfb79, 0xf36d, 0xf370, 0xc3ef, 0xc3f4,
- 0xc3f2, 0xf369, 0xf364, 0x96d7, 0xc3ed, 0xc3ee, 0xf360, 0xc3ea,
- 0x9343, 0xc3e8, 0xc3f0, 0xf36f, 0xc3f3, 0xf36b, 0xf375, 0xc3f5,
- 0xf367, 0xf36e, 0xfdcb, 0xfe7a, 0x91db, 0x8c6a, 0xf4f3, 0xf542,
- 0xf4f5, 0xf4fc, 0xf366, 0xf4fa, 0xf4e9, 0xf540, 0xc4c3, 0xf4ed,
- 0xf4fe, 0xf4f4, 0x97af, 0xc4c2, 0x95dd, 0xf544, 0xf4f6, 0x9348,
- 0xf4fb, 0xf4fd, 0xf4e7, 0xf541, 0xf4f2, 0xf4f7, 0xf4eb, 0xf4ef,
- 0xf543, 0xf4f9, 0xf4e8, 0xf4ec, 0xf4ee, 0xf4f8, 0x9a4b, 0xc4c1,
- 0xf4f1, 0xfc45, 0x9a4d, 0xf4ea, 0x91bc, 0x90e2, 0x90b4, 0x95e1,
- 0xf4f0, 0xf661, 0xf666, 0xc54f, 0xf668, 0x9a4e, 0xc549, 0xf664,
- 0xf66a, 0xc54e, 0xc54a, 0xc54b, 0xf660, 0xf667, 0xc54d, 0xf665,
- 0xc54c, 0xf65f, 0xf663, 0xf662, 0x9a4f, 0xf65e, 0xf669, 0xfe40,
- 0xfe43, 0xc5b1, 0xf76d, 0xf770, 0xf76c, 0xf76e, 0xf76f, 0xf769,
- 0xf76a, 0xf767, 0x96dd, 0xf76b, 0xf768, 0xc5b2, 0xc5b3, 0x9a51,
- 0xf84b, 0xf84d, 0x96a7, 0x90b0, 0xf84c, 0xf84e, 0xc5e0, 0xf84a,
- 0xc5df, 0xc5e1, 0x9c4e, 0x9443, 0xf8cb, 0xf8cc, 0xc644, 0xf8ca,
- 0x8eba, 0xf953, 0xf952, 0xf954, 0xc65f, 0xf955, 0xc65e, 0xf956,
- 0xf972, 0xf975, 0xf974, 0xc668, 0xf973, 0x9a52, 0xfcc1, 0xc672,
- 0xc670, 0xc671, 0xc677, 0xf9c0, 0xf9c1, 0xf9bf, 0xf9c9, 0x8be9,
- 0x9caf, 0x8bfd, 0x9abc, 0x9ab8, 0x9aae, 0x9aa7, 0x9a53, 0x9d74,
- 0xaaf8, 0x8bea, 0xd844, 0xdc78, 0xe8a5, 0xf376, 0x8beb, 0xaaf9,
- 0xadac, 0xb07b, 0x90b2, 0xd845, 0xd846, 0xb3ac, 0xb67d, 0xdc7a,
- 0xdc79, 0xb6a3, 0xb67c, 0xdc7b, 0xb67e, 0xb6a2, 0xb6a1, 0xb67b,
- 0x95e9, 0x95e8, 0xb968, 0x95e6, 0xe0d0, 0xe0ce, 0xe0cf, 0xe0cd,
- 0x90b5, 0xbbd2, 0x9a54, 0xbbd5, 0xbbd7, 0xbbd6, 0x90b3, 0x95e7,
- 0xbbd3, 0xbbd4, 0x8b50, 0xe8a7, 0xe8a6, 0xbe5b, 0xe8a8, 0xe8a9,
- 0xbe5c, 0xec4d, 0xec4b, 0xeef3, 0xec49, 0xec4a, 0xc046, 0xec46,
- 0xec4e, 0xec48, 0xec4c, 0xeeef, 0xeef1, 0xeef2, 0xc1f3, 0xeeee,
- 0xc1f2, 0xeef0, 0xc1ef, 0xc1f0, 0xc1f1, 0xec47, 0xc2f5, 0xf16e,
- 0xf16c, 0xf16d, 0xc2f3, 0xc2f6, 0xc2f4, 0xf377, 0xf378, 0xc3f6,
- 0xf545, 0xf547, 0xf546, 0xc4c4, 0xc550, 0xf66d, 0xf66c, 0xf66b,
- 0x8bec, 0x9a56, 0xaafa, 0x8bfb, 0xc9aa, 0xca58, 0xa6e9, 0xca56,
- 0xca59, 0xca57, 0xcbae, 0xa8c1, 0xa8c2, 0xcbb0, 0xa8bf, 0xcbaf,
- 0xcbad, 0xa8c0, 0xa8be, 0x9a57, 0xa0aa, 0xcdd8, 0xcddb, 0xaafd,
- 0xcdda, 0xcdd9, 0xaafc, 0xaafb, 0x9fa6, 0xab40, 0xcddc, 0xaafe,
- 0x99cc, 0xd0c6, 0xadae, 0xadaf, 0xadb0, 0xd0c7, 0xd0c3, 0xadad,
- 0xd0c4, 0xd0c5, 0xd0c2, 0x9c59, 0xb0a4, 0xb0a1, 0xd445, 0xb0a2,
- 0xb0a5, 0xd446, 0xb07e, 0xb07c, 0xb07d, 0xb0a3, 0x99b5, 0xb3ad,
- 0xd849, 0xb3b5, 0xd848, 0xd84b, 0xb3b1, 0xd84a, 0xb6ab, 0xb3af,
- 0xb3b2, 0xb3ae, 0xb3b3, 0xb3b4, 0xb3b0, 0x90be, 0xd847, 0xb6a7,
- 0xdc7d, 0xdca3, 0x9faf, 0xdca2, 0xb6ac, 0xb6a8, 0xb6a9, 0xdc7c,
- 0xdc7e, 0xdca1, 0xb6a4, 0xb6a6, 0xb6aa, 0xb6a5, 0x95f2, 0xe0d3,
- 0xe0d1, 0xe0d2, 0xb96a, 0xb96b, 0x90bf, 0xe0d4, 0xb969, 0xbbd8,
- 0xbbda, 0xbbd9, 0xe4bb, 0xe4bc, 0xe8ab, 0x90c1, 0xe8aa, 0xfee4,
- 0xc047, 0xc048, 0xec4f, 0xc049, 0xeef6, 0xeef4, 0xeef5, 0xc1f4,
- 0xf16f, 0xc3f7, 0x90c4, 0xc1f5, 0xab41, 0xb0a6, 0xd447, 0x90c7,
- 0xd84c, 0xb3b6, 0xb6ad, 0xdca4, 0xdca6, 0xb6af, 0xb6ae, 0xb6b0,
- 0xb6b1, 0xdca5, 0xb96e, 0xb96f, 0xb96d, 0xbbdb, 0xb96c, 0xe0d5,
- 0xbbdc, 0xe8ac, 0xec50, 0xc04a, 0xc1f6, 0xf170, 0xf174, 0xc2f9,
- 0xf171, 0xc2fa, 0xc2f8, 0xf175, 0xc2fb, 0xf173, 0xf379, 0xc2f7,
- 0xc3f8, 0xf8cd, 0xab42, 0xb3b8, 0xb3b7, 0xb6b2, 0xdca8, 0xdca7,
- 0xb6b3, 0x92e4, 0xe0d9, 0xb973, 0xb970, 0xe0d8, 0xb972, 0xe0d6,
- 0xb971, 0xe0d7, 0xe4bd, 0xbbdd, 0xe8af, 0x9f52, 0xbe5d, 0xe8ad,
- 0xbe5e, 0xbe5f, 0xe8ae, 0xbe60, 0xec51, 0xc04e, 0xc04b, 0xc050,
- 0xec53, 0xc04c, 0xec52, 0xc04f, 0xc04d, 0xeef9, 0xeefb, 0x90db,
- 0xc1f7, 0xeefa, 0xc1f8, 0xeef8, 0xeef7, 0xa066, 0xf177, 0xf176,
- 0xc2fc, 0xf178, 0xf37e, 0xc3fa, 0xf37d, 0xf37a, 0xc3f9, 0xf37b,
- 0xf37c, 0xf548, 0xf549, 0xc4c5, 0x90d2, 0xc553, 0xf66e, 0x90d4,
- 0xc551, 0xc552, 0xf66f, 0xc5b4, 0xc5b5, 0xf771, 0x9a5b, 0x95fd,
- 0xc645, 0xf8cf, 0xc647, 0xf8ce, 0xf8d0, 0xc646, 0xf957, 0xf9ad,
- 0x8bc4, 0xab43, 0x8c66, 0xb974, 0x90de, 0xe4be, 0xe8b0, 0xc051,
- 0xc052, 0x9ce4, 0xab44, 0x90e1, 0xbe61, 0xc3fb, 0xadb1, 0xc053,
- 0xc5e2, 0xadb2, 0xd84d, 0xdca9, 0x9e46, 0xdcab, 0xdcaa, 0x9651,
- 0xe0dd, 0xe0da, 0xb975, 0xb976, 0xe0db, 0xe0dc, 0xe4c0, 0xe4c5,
- 0xbbde, 0xe4bf, 0xe4c1, 0xe4c8, 0xe4c3, 0xe4c7, 0xe4c4, 0xe4c2,
- 0xe4c6, 0xbbdf, 0xfb58, 0xe8b3, 0x90e6, 0xe8b1, 0xbe63, 0xbe62,
- 0xe8b2, 0xbe64, 0xec56, 0xec55, 0xc054, 0xec54, 0xeefc, 0x9650,
- 0xeefe, 0xef41, 0xef40, 0x90e7, 0xc1f9, 0xeefd, 0xf1a1, 0xc2fd,
- 0xf17d, 0xf1a2, 0xc2fe, 0xf17b, 0xf17e, 0xf17c, 0xf179, 0xc340,
- 0xf17a, 0x90e8, 0x9a5d, 0xf3a1, 0x9f7a, 0xf3a3, 0xf3a2, 0x9b5c,
- 0xf54a, 0x9f7c, 0xf54b, 0xfc52, 0x90e9, 0xf670, 0x90ea, 0xc5b7,
- 0x9a5e, 0xc5b6, 0xf84f, 0xf850, 0xc648, 0xf8d1, 0x9f76, 0xc669,
- 0xadb3, 0xb6b4, 0xe4ca, 0xe4c9, 0xe8b5, 0xe8b4, 0x90eb, 0xc1fa,
- 0xef43, 0xef42, 0xf1a5, 0xf1a3, 0xf1a6, 0xf1a4, 0xc3fc, 0xf3a4,
- 0xf3a5, 0xf3a6, 0x90ec, 0xf671, 0xf772, 0xf8d2, 0x8bee, 0xadb4,
- 0x90ee, 0xec57, 0xef44, 0x91c6, 0xadb5, 0x90f2, 0xbbe0, 0xec58,
- 0xc341, 0xf1a7, 0xc3fd, 0xf54c, 0xf54d, 0xc554, 0xf851, 0xadb6,
- 0xb3bb, 0xb3bc, 0xd84e, 0xb6b5, 0xb6b6, 0xdcac, 0xb6b7, 0xb97a,
- 0xb97c, 0xe0df, 0xe0e0, 0xe0de, 0xb977, 0xb978, 0xb97b, 0xb979,
- 0xfcbc, 0x8a74, 0xe4cb, 0xbbe1, 0xbbe2, 0xe8bc, 0xbe67, 0xe8b7,
- 0xe8b6, 0x9657, 0xe8bb, 0xbe65, 0x9cef, 0xc05b, 0xe8b8, 0xe8bd,
- 0xe8ba, 0xe8b9, 0xbe66, 0xc059, 0x9fdf, 0xec5a, 0xc055, 0xec5b,
- 0x90f7, 0x90f6, 0xec59, 0xc058, 0xc056, 0xc05a, 0xc057, 0xef45,
- 0xef4a, 0xef46, 0xef49, 0xc1fb, 0x9b5e, 0xedd4, 0xef48, 0xef47,
- 0x90f8, 0xc344, 0xc342, 0xc345, 0xc343, 0xf1a8, 0xf1a9, 0xf1aa,
- 0xc346, 0xf3aa, 0xc440, 0xf3a8, 0xc441, 0xf3a7, 0xf3a9, 0xc3fe,
- 0xf551, 0xf54e, 0xf54f, 0xf550, 0xf672, 0xc556, 0x90f9, 0xc555,
- 0x8cc9, 0xf774, 0xf773, 0xc5b8, 0xfa6a, 0xc5e3, 0xc649, 0xc660,
- 0xf958, 0xf9ae, 0xf9af, 0x8bef, 0xadb7, 0xdcad, 0xe0e1, 0xe4cc,
- 0xe4cd, 0xbbe3, 0xbbe4, 0xe8be, 0xbe68, 0x9fe0, 0xc1fc, 0x9142,
- 0xf1ab, 0x9a62, 0xc347, 0xf3ad, 0xc442, 0xf3ac, 0xf3ae, 0xf3ab,
- 0xf675, 0xf552, 0xf553, 0x9569, 0xc4c6, 0xf674, 0x9144, 0x9143,
- 0xf673, 0x9141, 0xf775, 0xf9b0, 0x8bf0, 0xadb8, 0x9660, 0x8bf1,
- 0xadb9, 0x99f6, 0x9149, 0xb0a7, 0xd448, 0xd84f, 0x914a, 0xb6b8,
- 0xb6bb, 0xb6b9, 0xdcae, 0x914b, 0xb6bd, 0xb6ba, 0x9a64, 0xb6bc,
- 0xb97e, 0x8abf, 0xe0e2, 0xe0e3, 0xe8c0, 0xb97d, 0xb9a1, 0xb9a2,
- 0xe4cf, 0xe4ce, 0xbbe5, 0xbbe6, 0xe4d0, 0xe8bf, 0xbbe8, 0xbe69,
- 0xbbe7, 0x9a66, 0xc05c, 0xe8c1, 0xbe6b, 0xbe6a, 0xe8c2, 0xe8c5,
- 0xe8c3, 0xe8c4, 0xbe6c, 0x9a67, 0xc061, 0xc05f, 0x9a69, 0xc05e,
- 0xec5d, 0xc060, 0xec5c, 0xef4b, 0xec5e, 0xc05d, 0xec5f, 0xef4e,
- 0xef4c, 0xef4d, 0xef52, 0xc34b, 0xef51, 0xef54, 0xef53, 0xef50,
- 0xef4f, 0xc1fd, 0x9a6a, 0x9652, 0x914d, 0xf1ae, 0x9666, 0xf1ad,
- 0xc34a, 0xc348, 0xc349, 0x9f7b, 0xf1ac, 0x9a6b, 0xf3b1, 0xc443,
- 0xf3b0, 0xf3af, 0xc444, 0xa06c, 0xf558, 0xf557, 0x9667, 0xf555,
- 0xf554, 0xc4c8, 0xc4c7, 0xf559, 0xf776, 0xc5b9, 0xf677, 0xc557,
- 0xf676, 0xf556, 0xf777, 0xc5e4, 0x9a6c, 0xc661, 0xf959, 0xf9b1,
- 0x9a6d, 0x8bf2, 0xadba, 0xd850, 0xef55, 0xadbb, 0x966a, 0xe4d2,
- 0xe4d1, 0xec60, 0xef57, 0xef56, 0xfcea, 0xc34c, 0xf3b2, 0xf3b3,
- 0xc4c9, 0x966c, 0xf9b2, 0xb0a8, 0xb6bf, 0xb6be, 0xe0e4, 0xe0e6,
- 0xb9a4, 0xe0e5, 0xb9a3, 0xb9a5, 0xe0e7, 0x91c4, 0xe4d4, 0xe4d6,
- 0xe4d5, 0x9677, 0xe4d8, 0xbbe9, 0xe4d7, 0xe4d3, 0x99f4, 0x9a6f,
- 0xe4d9, 0xe8cc, 0xe8cf, 0xe8d1, 0xe8c7, 0xe8cb, 0xe8c8, 0xbe6e,
- 0xbe71, 0xbe73, 0xe8c9, 0xe8ca, 0xbe72, 0xe8cd, 0xe8d0, 0xe8ce,
- 0xbe74, 0x9fab, 0xbe70, 0xe8c6, 0xbe6d, 0xbe6f, 0x8cbe, 0x8ec1,
- 0xc063, 0xec66, 0xec64, 0xec63, 0x9555, 0xec69, 0xec68, 0xec67,
- 0xec62, 0xc062, 0xec61, 0xec65, 0xc064, 0xef5a, 0x9152, 0xef5e,
- 0xef5b, 0xef5d, 0xef5c, 0xef59, 0xef5f, 0xef62, 0xef60, 0xef61,
- 0xc240, 0xc1fe, 0xef58, 0xef63, 0xf1b3, 0xf1b6, 0xf1b8, 0xf1b7,
- 0xf1b1, 0xf1b5, 0xf1b0, 0x9153, 0xf1b2, 0xc34d, 0xf1af, 0x9155,
- 0xf1b4, 0xf3c0, 0xf3b5, 0xc445, 0xc446, 0xf3b4, 0xf3b9, 0xf3bf,
- 0xf3b7, 0xf3be, 0x955d, 0xf3bb, 0x9671, 0xf3ba, 0xf3bd, 0xf3b8,
- 0xf3b6, 0x9c6d, 0xf3bc, 0xf560, 0xf55e, 0xc4ca, 0xf55d, 0xf563,
- 0xf561, 0x9673, 0xc4cb, 0xf55c, 0xf55a, 0xf55b, 0xc4cd, 0xf55f,
- 0xc4cc, 0xf562, 0xf678, 0xf67e, 0x9154, 0x9a71, 0xf679, 0xc55b,
- 0xf6a1, 0xc55a, 0xf67d, 0xf67c, 0xc559, 0xf67b, 0xc558, 0xf67a,
- 0xf77d, 0xf7a1, 0xf77e, 0xf77b, 0xc5bb, 0xf778, 0xf77c, 0xf7a3,
- 0xf7a2, 0xf779, 0xf77a, 0xc5ba, 0xf852, 0xc5e7, 0x9156, 0xf853,
- 0xc5e5, 0xc5e6, 0x966d, 0xf8d3, 0xc64a, 0xf976, 0xc66a, 0x9557,
- 0xf9b3, 0xc66b, 0xf9b4, 0xf9b5, 0xf9c3, 0xf9c2, 0xc67a, 0xf9cd,
- 0x89c6, 0x89c7, 0xb0a9, 0xe0e9, 0xe0e8, 0xbbea, 0xbbeb, 0xe4da,
- 0x8a6a, 0xe8d2, 0xec6c, 0x8b57, 0xbe75, 0xc065, 0xec6a, 0x9fe1,
- 0xec6d, 0xc066, 0x9b5f, 0xef64, 0xec6b, 0xf1b9, 0xc34e, 0xf3c1,
- 0xf566, 0xf564, 0xf565, 0xf6a2, 0xc55c, 0xf7a4, 0xc5ea, 0xc5bc,
- 0xc5e8, 0xc5e9, 0xf8d4, 0xc662, 0xa05d, 0xb0aa, 0xf1ba, 0xd449,
- 0x915b, 0xb9a6, 0x915c, 0xe4db, 0xbbec, 0xe4dc, 0xe8d4, 0xe8d3,
- 0xc068, 0xbe76, 0xbe77, 0xe8d7, 0xe8d6, 0xe8d5, 0x915e, 0xec6e,
- 0xec71, 0xec70, 0xec6f, 0xc067, 0xef68, 0xef66, 0xef65, 0x9f5c,
- 0xef67, 0x9f57, 0xc34f, 0xf1bc, 0xf1bd, 0xc350, 0xf1bb, 0x9f65,
- 0xf3c3, 0xf3c2, 0xf3c5, 0xc447, 0xf3c4, 0x9a72, 0xf567, 0xf569,
- 0xf568, 0x9160, 0xf6a3, 0xf6a6, 0xf6a4, 0xf6a5, 0xf7a5, 0xc5bd,
- 0xf854, 0xf855, 0xf856, 0xc64b, 0xc663, 0xf9b6, 0xb0ab, 0xbe78,
- 0xc069, 0xf1be, 0x9f5e, 0xf7a6, 0x9161, 0xf9c4, 0xd44a, 0xc67b,
- 0xb0ac, 0xec72, 0x9164, 0xf1bf, 0xf3c6, 0x9f41, 0xf6a7, 0xf7a7,
- 0xb0ad, 0xe4dd, 0xe4de, 0x9169, 0xbbed, 0xbbee, 0xe8d9, 0xbe7a,
- 0xbe79, 0xe8d8, 0xef69, 0xf1c0, 0xf1c2, 0xf1c1, 0xc353, 0xc352,
- 0xc351, 0x9168, 0xc55e, 0xf6a8, 0xc55d, 0xf7a9, 0xf7a8, 0xc64c,
- 0xf8d5, 0xb3bd, 0xe0ea, 0xe4e1, 0xe4df, 0xe4e0, 0xe8e2, 0xe8dd,
- 0xe8da, 0xe8e1, 0x9a74, 0xe8e3, 0xbe7c, 0xe8e0, 0xe8dc, 0xe8db,
- 0xe8df, 0xe8de, 0xbe7b, 0xec7d, 0xec78, 0xec76, 0xeca1, 0xec77,
- 0x96b2, 0xec73, 0x9a75, 0xec79, 0xfda5, 0xec74, 0xef72, 0xec75,
- 0xeca2, 0x9ee9, 0x8bba, 0x916d, 0xa060, 0xec7c, 0xc06a, 0xec7b,
- 0xec7a, 0xec7e, 0x9fde, 0xef6a, 0xef6d, 0x9fc3, 0xef6c, 0x96b5,
- 0xef74, 0xef6f, 0xef73, 0xef71, 0xef70, 0xef6e, 0xef6b, 0xc243,
- 0xc242, 0xc244, 0xc241, 0xef75, 0xa067, 0xf1c8, 0xf1cb, 0xf1c9,
- 0xf1cd, 0xf1ce, 0xf1c6, 0xc358, 0xf1c7, 0xf1c5, 0xf1cc, 0xf1c4,
- 0xf1c3, 0xc357, 0xc355, 0xc354, 0x96b3, 0xf1ca, 0xf3cf, 0xf3d5,
- 0xc44a, 0xf3d0, 0xf3d3, 0xf3d7, 0xc44b, 0xf3d2, 0x9a76, 0xf3ca,
- 0xf3c9, 0xf3d6, 0xf3cd, 0xf3cb, 0xf3d4, 0xf3cc, 0xc449, 0xc448,
- 0x95d5, 0xf3c7, 0xf3c8, 0xf3d1, 0x9eca, 0xf3ce, 0x9a77, 0x9a78,
- 0xf56c, 0xf56f, 0xc356, 0x9170, 0x916f, 0xf56d, 0xf573, 0xf571,
- 0xf56b, 0xf576, 0x9fa3, 0xf56a, 0x9171, 0xc4cf, 0xf572, 0x96b1,
- 0xf56e, 0xc4ce, 0xf575, 0x9f63, 0xf574, 0x9f67, 0xf6ab, 0xf6aa,
- 0x8bb9, 0x9a7a, 0xf6b1, 0xf6ad, 0xf6b0, 0xc560, 0x8b56, 0xf6ae,
- 0xf6af, 0xf6a9, 0xf6ac, 0xc55f, 0x9ada, 0xc5bf, 0xf7b4, 0xf7af,
- 0xf7b3, 0x96b0, 0xf7b6, 0xf7b2, 0xf7ae, 0x9a7e, 0xc5c1, 0xf7b1,
- 0xf7b5, 0xc5c0, 0xf7ac, 0xf570, 0xf7b0, 0xf7ad, 0x9dde, 0xf7aa,
- 0xf7ab, 0xc5be, 0xf85a, 0xf85c, 0xf85f, 0xf85b, 0xf860, 0x96ad,
- 0xf859, 0xf857, 0x96ae, 0xc5eb, 0xf85d, 0xc5ed, 0xc5ec, 0xf858,
- 0xf85e, 0x9ea1, 0xf8da, 0xc64d, 0xf8db, 0xf8d9, 0xf8d6, 0xf8d8,
- 0xf8d7, 0xf95a, 0xf95c, 0xf95b, 0xf979, 0x9e50, 0xf978, 0xf977,
- 0xf97a, 0xc673, 0xc674, 0xf9ca, 0xf9ce, 0x96af, 0x8bf4, 0xb3be,
- 0xdcaf, 0xe0ed, 0xb9a7, 0xe0eb, 0xe0ec, 0xe4e2, 0xe4e3, 0xbbf1,
- 0xbbef, 0xe4e4, 0xbbf0, 0xe8e8, 0xe8eb, 0xe8e5, 0xe8ec, 0xe8e4,
- 0xe8e6, 0xe8e7, 0xe8ea, 0x9fa4, 0xbea1, 0xe8ef, 0xe8ee, 0xbe7d,
- 0xe8e9, 0xe8ed, 0xbe7e, 0x96bd, 0xecac, 0xc06f, 0xeca7, 0xc06b,
- 0x96f4, 0xeca4, 0xecaa, 0xecad, 0xc070, 0xeca9, 0xeca6, 0xecae,
- 0xeca5, 0x96b8, 0xecab, 0xc06c, 0xeca3, 0xc06d, 0xc06e, 0xeca8,
- 0xefa9, 0xef7a, 0xef7b, 0xef7e, 0xef7c, 0xef76, 0xfaa1, 0xef79,
- 0xefa5, 0xef7d, 0x91a7, 0xc245, 0xefa7, 0xefa4, 0xc246, 0xefa6,
- 0xef77, 0xefa2, 0xefa3, 0xa05e, 0xefa1, 0x9a7d, 0xf1d2, 0xf1d4,
- 0xf1d7, 0x8948, 0xf1d1, 0x9eb1, 0xc359, 0xf1d9, 0xf1d0, 0xf1da,
- 0xf1d6, 0xf1d8, 0xf1dc, 0xf1d5, 0xf1dd, 0xf1d3, 0xf1cf, 0xc35a,
- 0x9ddb, 0xf1db, 0xc35b, 0xc44d, 0xef78, 0xf3f1, 0xf3e8, 0xc44f,
- 0xf3e4, 0xc450, 0x95bf, 0x8a73, 0xf3ed, 0xf3e7, 0xf3dd, 0xc44e,
- 0xf3ea, 0xf3e5, 0xf3e6, 0xf3d8, 0xf3df, 0xf3ee, 0xf3eb, 0x9efe,
- 0xf3e3, 0x917a, 0xf3ef, 0xf3de, 0xf3d9, 0xf3ec, 0x917b, 0xf3db,
- 0xf3e9, 0xf3e0, 0xf3f0, 0xf3dc, 0xc44c, 0xf3da, 0xf3e1, 0xf3e2,
- 0xf57d, 0xf57b, 0x9aa3, 0xf5a2, 0xf5ae, 0xf5a5, 0xf57c, 0xf578,
- 0xf5a7, 0xf57e, 0xf5a3, 0xf57a, 0xf5aa, 0xf577, 0xf5a1, 0xf5a6,
- 0xf5a8, 0xf5ab, 0xf579, 0x96c2, 0xf5af, 0xf5b0, 0xf5a9, 0xf5ad,
- 0xf5a4, 0x9f77, 0xf6c1, 0xf6c4, 0xc561, 0xf6c3, 0xf6c8, 0xf6c6,
- 0xc562, 0xf6bd, 0xf6b3, 0xf6b2, 0xc564, 0xf6bf, 0xf6c0, 0xf6bc,
- 0xf6b4, 0x9aa4, 0xf6b9, 0xf5ac, 0x9aa5, 0xf6b5, 0xc563, 0xf6bb,
- 0x91a1, 0xf6ba, 0xf6b6, 0xf6c2, 0x89b8, 0xf6b7, 0xf7bb, 0xf6c5,
- 0xf6c7, 0xf6be, 0xf6b8, 0xf7bc, 0xf7be, 0xf7b8, 0xc5c2, 0x9173,
- 0xf7c5, 0xf7c3, 0xc5c3, 0xf7c2, 0xf7c1, 0xf7ba, 0xf7b7, 0xf7bd,
- 0xf7c6, 0xf7b9, 0xf7bf, 0xf869, 0xf86e, 0xf864, 0xf867, 0xc5ee,
- 0xf86b, 0xf872, 0xf7c0, 0xf865, 0xf86f, 0xf873, 0xf86a, 0xf863,
- 0xf86d, 0xf86c, 0xf871, 0xf870, 0xf7c4, 0xf868, 0xf862, 0xf866,
- 0xc64e, 0xc64f, 0xf861, 0x9aa6, 0xf8e6, 0xf8dd, 0xf8e5, 0xf8e2,
- 0xf8e3, 0xf8dc, 0xf8df, 0xf8e7, 0xf8e1, 0xf8e0, 0xf8de, 0xf8e4,
- 0x89bd, 0xf95d, 0x89b9, 0xf95e, 0x917d, 0xf960, 0xf95f, 0xf962,
- 0xf961, 0xf97c, 0xf97b, 0xf9b7, 0xf9b8, 0x96bb, 0xf9c5, 0xc678,
- 0xc67c, 0x9ff2, 0xf9cf, 0xc67d, 0x8bf5, 0xb3bf, 0xc4d0, 0xf6c9,
- 0x9aa9, 0xc650, 0xc651, 0xb3c0, 0xe0ee, 0x9f54, 0xb9a8, 0xe8f0,
- 0x9fe3, 0x9eed, 0xecb0, 0xecb1, 0xecaf, 0xefab, 0xefaa, 0xc247,
- 0xf1df, 0xefac, 0xf1de, 0x91aa, 0xf3f3, 0xc451, 0xc453, 0xf3f2,
- 0x91ab, 0xa070, 0xc452, 0x9f6d, 0xf5b1, 0xf5b3, 0xf5b2, 0xf6ca,
- 0xc565, 0x91ac, 0xc5ef, 0xf8e8, 0xf963, 0x91ad, 0xf9d2, 0xb3c1,
- 0xa0fd, 0xe4e5, 0x9fe2, 0xbea2, 0x91af, 0x9e41, 0x9aaa, 0xecb3,
- 0xecb2, 0x91b0, 0xefad, 0x9aab, 0xc454, 0xc4d1, 0xf7c7, 0xf9cb,
- 0xb3c2, 0xbbf2, 0x9aac, 0xbea3, 0x9a4a, 0xf3f4, 0x91b2, 0xf874,
- 0xb6c0, 0x8bf6, 0x9aad, 0x89b6, 0xefae, 0xc664, 0xb6c1, 0xbea4,
- 0xc248, 0xf875, 0xb6c2, 0xe8f1, 0xc072, 0xecb4, 0xecb5, 0xc071,
- 0xefaf, 0xc24c, 0xc24a, 0xc24b, 0xc249, 0xf1e0, 0xc35c, 0x9aaf,
- 0xf5b5, 0xf5b4, 0xf5b7, 0xf5b6, 0xc4d2, 0xf6cb, 0xf6cd, 0xf6cc,
- 0xc566, 0xf7c8, 0x9ab0, 0xf876, 0xf877, 0xc5f0, 0xf964, 0xf97d,
- 0xc675, 0x9ab1, 0xdcb0, 0xecb6, 0xefb0, 0xf3f5, 0xe0ef, 0x9aa1,
- 0xefb1, 0xf1e2, 0xf1e1, 0x91b9, 0xf878, 0xc652, 0x91ba, 0xf965,
- 0xf97e, 0xb9a9, 0xe8f2, 0xe8f3, 0xecb7, 0xb9aa, 0xc35d, 0xf1e3,
- 0x91be, 0xf6cf, 0xc567, 0xf6d0, 0xf6ce, 0xf879, 0xf8e9, 0xb9ab,
- 0xefb4, 0xefb3, 0xefb2, 0xf1e4, 0xa041, 0x8bb7, 0xf1e8, 0xf1e7,
- 0xf1e6, 0xf1e5, 0xc35e, 0xf3f6, 0xf5b9, 0xc4d3, 0xf5b8, 0xf6d1,
- 0xf7cb, 0xf7ca, 0xc5c4, 0xf7c9, 0xf87c, 0xf87b, 0xf87a, 0x91c0,
- 0xbbf3, 0xecb8, 0xc24d, 0xf3f7, 0xf3f8, 0xf7cc, 0xf87d, 0x9ab3,
- 0x91c3, 0xf8ea, 0xf966, 0xf9b9, 0xf9d4, 0xbbf4, 0xc24e, 0xf1e9,
- 0xf3f9, 0xf6d2, 0xf87e, 0xa0fc, 0xbea6, 0x9fee, 0xefb5, 0xf1ea,
- 0xf3fa, 0xf3fb, 0xf3fc, 0xf5be, 0x9f69, 0xf5ba, 0xc568, 0xf5bd,
- 0xf5bc, 0xc4d4, 0xf5bb, 0xc4d6, 0x91c8, 0xc4d5, 0xf6d4, 0xf6d3,
- 0xc569, 0xc56a, 0x91c9, 0xc5c6, 0xf7cd, 0xc5c5, 0xf8a3, 0xf8a4,
- 0xf8a2, 0xf8a1, 0xc654, 0xf8eb, 0xf8ec, 0xf8ed, 0xc653, 0xf967,
- 0xf96a, 0xf969, 0xf968, 0xf9d3, 0x8de6, 0xc073, 0x91cb, 0xc365,
- 0xf5bf, 0xf6d5, 0xc5c7, 0xf7ce, 0xf9d5, 0x89c8, 0xc074, 0x8daa,
- 0xefb6, 0xf7cf, 0xf9a1, 0x9fdd, 0xfa40, 0xfa41, 0xfa42, 0xfa43,
- 0xfa44, 0xfa45, 0xfa46, 0xfa47, 0xfa48, 0xfa49, 0xfa4a, 0xfa4b,
- 0xfa4c, 0xfa4d, 0xfa4e, 0xfa4f, 0xfa50, 0xfa51, 0xfa52, 0xfa53,
- 0xfa54, 0xfa55, 0xfa56, 0xfa57, 0xfa58, 0xfa59, 0xfa5a, 0xfa5b,
- 0xfa5c, 0xfa5d, 0xfa5e, 0xadc5, 0xfa60, 0xfa61, 0xfa62, 0xfa63,
- 0xfa64, 0xfa65, 0xb0b0, 0xfa67, 0xfa68, 0xfa69, 0xfa6a, 0xfa6b,
- 0xfa6c, 0xfa6d, 0xfa6e, 0xfa6f, 0xfa70, 0xfa71, 0xfa72, 0xfa73,
- 0xfa74, 0xfa75, 0xfa76, 0xfa77, 0xfa78, 0xfa79, 0xfa7a, 0xfa7b,
- 0xfa7c, 0xfa7d, 0xfa7e, 0xfaa1, 0xfaa2, 0xfaa3, 0xfaa4, 0xfaa5,
- 0xfaa6, 0xfaa7, 0xfaa8, 0xfaa9, 0xfaaa, 0xfaab, 0xfaac, 0xfaad,
- 0xfaae, 0xfaaf, 0xfab0, 0xfab1, 0xfab2, 0xfab3, 0xfab4, 0xfab5,
- 0xfab6, 0xfab7, 0xfab8, 0xfab9, 0xfaba, 0xfabb, 0xfabc, 0xa55d,
- 0xfabe, 0xfabf, 0xfac0, 0xfac1, 0xfac2, 0xfac3, 0xfac4, 0xa2cd,
- 0xfac6, 0xfac7, 0xfac8, 0xfac9, 0xfaca, 0xfacb, 0xfacc, 0xfacd,
- 0xface, 0xfacf, 0xfad0, 0xfad1, 0xfad2, 0xfad3, 0xfad4, 0xadeb,
- 0xfad6, 0xfad7, 0xfad8, 0xfad9, 0xfada, 0xfadb, 0xfadc, 0xfadd,
- 0xfade, 0xfadf, 0xfae0, 0xfae1, 0xfae2, 0xfae3, 0xfae4, 0xfae5,
- 0xfae6, 0xfae7, 0xfae8, 0xfae9, 0xfaea, 0xfaeb, 0xfaec, 0xfaed,
- 0xfaee, 0xfaef, 0xfaf0, 0xfaf1, 0xfaf2, 0xfaf3, 0xfaf4, 0xfaf5,
- 0xfaf6, 0xfaf7, 0xfaf8, 0xfaf9, 0xfafa, 0xfafb, 0xfafc, 0xfafd,
- 0xfafe, 0xfb40, 0xfb41, 0xfb42, 0xfb43, 0xfb44, 0xfb45, 0xfb46,
- 0xfb47, 0x9def, 0xfb49, 0xfb4a, 0xfb4b, 0xfb4c, 0xfb4d, 0xfb4e,
- 0xfb4f, 0xfb50, 0xfb51, 0xfb52, 0xfb53, 0xfb54, 0xfb55, 0xfb56,
- 0xfb57, 0xfb58, 0xfb59, 0xfb5a, 0xfb5b, 0xfb5c, 0xfb5d, 0xfb5e,
- 0xfb5f, 0xfb60, 0xfb61, 0xfb62, 0xfb63, 0xfb64, 0xfb65, 0xfb66,
- 0xfb67, 0xfb68, 0xfb69, 0xfb6a, 0xfb6b, 0xfb6c, 0xfb6d, 0xfb6e,
- 0xfb6f, 0xfb70, 0xfb71, 0xfb72, 0xfb73, 0xfb74, 0xfb75, 0xfb76,
- 0xfb77, 0xfb78, 0xfb79, 0xfb7a, 0xfb7b, 0xfb7c, 0xfb7d, 0xfb7e,
- 0xfba1, 0xfba2, 0xfba3, 0xfba4, 0xfba5, 0xfba6, 0xfba7, 0xfba8,
- 0xfba9, 0xfbaa, 0xfbab, 0xfbac, 0xfbad, 0xfbae, 0xfbaf, 0xfbb0,
- 0xfbb1, 0xfbb2, 0xfbb3, 0xfbb4, 0xfbb5, 0xfbb6, 0xfbb7, 0xb440,
- 0xfbb9, 0xfbba, 0xfbbb, 0xfbbc, 0xfbbd, 0xfbbe, 0xfbbf, 0xfbc0,
- 0xfbc1, 0xfbc2, 0xfbc3, 0xfbc4, 0xfbc5, 0xfbc6, 0xfbc7, 0xfbc8,
- 0xfbc9, 0xfbca, 0xfbcb, 0xfbcc, 0xfbcd, 0xfbce, 0xfbcf, 0xfbd0,
- 0xfbd1, 0xfbd2, 0xfbd3, 0xfbd4, 0xfbd5, 0xfbd6, 0xfbd7, 0xfbd8,
- 0xfbd9, 0xfbda, 0xfbdb, 0xfbdc, 0xfbdd, 0xfbde, 0xfbdf, 0xfbe0,
- 0xfbe1, 0xfbe2, 0xfbe3, 0xfbe4, 0xfbe5, 0xfbe6, 0xfbe7, 0xfbe8,
- 0xfbe9, 0xfbea, 0xfbeb, 0xfbec, 0xfbed, 0xfbee, 0xfbef, 0xfbf0,
- 0xfbf1, 0xfbf2, 0xc9db, 0xfbf4, 0xfbf5, 0xfbf6, 0xfbf7, 0xfbf8,
- 0x9dfb, 0xfbfa, 0xfbfb, 0xfbfc, 0xfbfd, 0xfbfe, 0xfc40, 0xfc41,
- 0xfc42, 0xfc43, 0xfc44, 0xfc45, 0xfc46, 0xfc47, 0xfc48, 0xfc49,
- 0xfc4a, 0xfc4b, 0xfc4c, 0xfc4d, 0xfc4e, 0xd8f4, 0xfc50, 0xfc51,
- 0xfc52, 0xfc53, 0xfc54, 0xfc55, 0xfc56, 0xfc57, 0xfc58, 0xfc59,
- 0xfc5a, 0xfc5b, 0xfc5c, 0xfc5d, 0xfc5e, 0xfc5f, 0xfc60, 0xfc61,
- 0xfc62, 0xfc63, 0xfc64, 0xfc65, 0xfc66, 0xfc67, 0xfc68, 0xfc69,
- 0xfc6a, 0xfc6b, 0xa0dc, 0xfc6d, 0xfc6e, 0xfc6f, 0xfc70, 0xfc71,
- 0xfc72, 0xfc73, 0xfc74, 0xfc75, 0xfc76, 0xfc77, 0xfc78, 0xfc79,
- 0xfc7a, 0xfc7b, 0xfc7c, 0xfc7d, 0xfc7e, 0xfca1, 0xfca2, 0xfca3,
- 0xfca4, 0xfca5, 0xfca6, 0xfca7, 0xfca8, 0xfca9, 0xfcaa, 0xfcab,
- 0xfcac, 0xfcad, 0xfcae, 0xfcaf, 0xfcb0, 0xfcb1, 0xfcb2, 0xfcb3,
- 0xfcb4, 0xfcb5, 0xfcb6, 0xfcb7, 0xfcb8, 0xbcb5, 0xfcba, 0xfcbb,
- 0xfcbc, 0xfcbd, 0xfcbe, 0xfcbf, 0xfcc0, 0xfcc1, 0xfcc2, 0xfcc3,
- 0xfcc4, 0xfcc5, 0xfcc6, 0xfcc7, 0xfcc8, 0xfcc9, 0xfcca, 0xfccb,
- 0xfccc, 0xfccd, 0xfcce, 0xfccf, 0xfcd0, 0xfcd1, 0xfcd2, 0xfcd3,
- 0xfcd4, 0xfcd5, 0xfcd6, 0xfcd7, 0xfcd8, 0xfcd9, 0xfcda, 0xfcdb,
- 0xfcdc, 0xfcdd, 0xfcde, 0xfcdf, 0xfce0, 0xfce1, 0xb4b8, 0xfce3,
- 0xfce4, 0xfce5, 0xfce6, 0xfce7, 0xfce8, 0xfce9, 0xfcea, 0xfceb,
- 0xfcec, 0xfced, 0xfcee, 0xfcef, 0xfcf0, 0xa7fb, 0xfcf2, 0xfcf3,
- 0xfcf4, 0xfcf5, 0xfcf6, 0xfcf7, 0xfcf8, 0xfcf9, 0xfcfa, 0xfcfb,
- 0xfcfc, 0xfcfd, 0xfcfe, 0xfd40, 0xfd41, 0xfd42, 0xfd43, 0xfd44,
- 0xfd45, 0xfd46, 0xfd47, 0xfd48, 0xfd49, 0xfd4a, 0xfd4b, 0xfd4c,
- 0xfd4d, 0xfd4e, 0xfd4f, 0xfd50, 0xfd51, 0xfd52, 0xfd53, 0xfd54,
- 0xfd55, 0xfd56, 0xfd57, 0xfd58, 0xfd59, 0xfd5a, 0xfd5b, 0xfd5c,
- 0xfd5d, 0xfd5e, 0xfd5f, 0xfd60, 0xfd61, 0xfd62, 0xfd63, 0xfd64,
- 0xfd65, 0xfd66, 0xfd67, 0xfd68, 0xfd69, 0xfd6a, 0xfd6b, 0xfd6c,
- 0xfd6d, 0xfd6e, 0xfd6f, 0xfd70, 0xfd71, 0xfd72, 0xfd73, 0xfd74,
- 0xfd75, 0xfd76, 0xfd77, 0xfd78, 0xfd79, 0xfd7a, 0xfd7b, 0xfd7c,
- 0xfd7d, 0xfd7e, 0xfda1, 0xfda2, 0xfda3, 0xfda4, 0xfda5, 0xfda6,
- 0xfda7, 0xfda8, 0xfda9, 0xfdaa, 0xfdab, 0xfdac, 0xfdad, 0xfdae,
- 0xfdaf, 0xfdb0, 0xfdb1, 0xfdb2, 0xfdb3, 0xfdb4, 0xfdb5, 0xfdb6,
- 0xcb58, 0xb4fc, 0xfdb9, 0xfdba, 0xb4e4, 0xfdbc, 0xfdbd, 0xfdbe,
- 0xfdbf, 0xfdc0, 0xfdc1, 0xfdc2, 0xfdc3, 0xfdc4, 0xfdc5, 0xfdc6,
- 0xfdc7, 0xfdc8, 0xfdc9, 0xfdca, 0xfdcb, 0xfdcc, 0xfdcd, 0xfdce,
- 0xfdcf, 0xfdd0, 0xfdd1, 0xfdd2, 0xfdd3, 0xfdd4, 0xfdd5, 0xfdd6,
- 0xfdd7, 0xfdd8, 0xfdd9, 0xfdda, 0xfddb, 0xfddc, 0xfddd, 0xfdde,
- 0xfddf, 0xfde0, 0xfde1, 0xfde2, 0xfde3, 0xfde4, 0xfde5, 0xfde6,
- 0xfde7, 0xfde8, 0xfde9, 0xfdea, 0xfdeb, 0xfdec, 0xfded, 0xfdee,
- 0xfdef, 0xfdf0, 0xb54e, 0xfdf2, 0xfdf3, 0xfdf4, 0xfdf5, 0xfdf6,
- 0xfdf7, 0xfdf8, 0xfdf9, 0xfdfa, 0xfdfb, 0xfdfc, 0xfdfd, 0xfdfe,
- 0xfe40, 0xfe41, 0xfe42, 0xfe43, 0xfe44, 0xfe45, 0xfe46, 0xfe47,
- 0xfe48, 0xfe49, 0xfe4a, 0xfe4b, 0xfe4c, 0xfe4d, 0xfe4e, 0xfe4f,
- 0xfe50, 0xfe51, 0x9975, 0xfe53, 0xfe54, 0xfe55, 0xfe56, 0xfe57,
- 0xfe58, 0xfe59, 0xfe5a, 0xfe5b, 0xfe5c, 0xfe5d, 0xfe5e, 0xfe5f,
- 0xfe60, 0xfe61, 0xfe62, 0xfe63, 0xfe64, 0xfe65, 0xfe66, 0xfe67,
- 0xfe68, 0xfe69, 0xfe6a, 0xfe6b, 0xfe6c, 0xfe6d, 0xfe6e, 0xb7ec,
- 0xfe70, 0xfe71, 0xfe72, 0xfe73, 0xfe74, 0xfe75, 0xfe76, 0xfe77,
- 0xfe78, 0xfe79, 0xfe7a, 0xfe7b, 0xfe7c, 0xfe7d, 0xfe7e, 0xfea1,
- 0xfea2, 0xfea3, 0xfea4, 0xfea5, 0xfea6, 0xfea7, 0xfea8, 0xfea9,
- 0xa260, 0xfeab, 0xfeac, 0xfead, 0xfeae, 0xfeaf, 0xfeb0, 0xfeb1,
- 0xfeb2, 0xfeb3, 0xfeb4, 0xfeb5, 0xfeb6, 0xfeb7, 0xfeb8, 0xfeb9,
- 0xfeba, 0xfebb, 0xfebc, 0xfebd, 0xfebe, 0xfebf, 0xfec0, 0xfec1,
- 0xfec2, 0xfec3, 0xfec4, 0xfec5, 0xfec6, 0xfec7, 0xfec8, 0xfec9,
- 0xfeca, 0xfecb, 0xfecc, 0xfecd, 0xfece, 0xfecf, 0xfed0, 0xfed1,
- 0xfed2, 0xfed3, 0xfed4, 0xfed5, 0xfed6, 0xfed7, 0xfed8, 0xfed9,
- 0xfeda, 0xfedb, 0xfedc, 0xcff1, 0xfede, 0xfedf, 0xfee0, 0xfee1,
- 0xfee2, 0xfee3, 0xfee4, 0xfee5, 0xfee6, 0xfee7, 0xfee8, 0xfee9,
- 0xfeea, 0xfeeb, 0xfeec, 0xfeed, 0xfeee, 0xfeef, 0xfef0, 0xfef1,
- 0xfef2, 0xfef3, 0xfef4, 0xfef5, 0xfef6, 0xfef7, 0xfef8, 0xfef9,
- 0xfefa, 0xfefb, 0xfefc, 0xfefd, 0xfefe, 0x8e40, 0x8e41, 0x8e42,
- 0x8e43, 0x8e44, 0x8e45, 0x8e46, 0x8e47, 0x8e48, 0x8e49, 0x8e4a,
- 0x8e4b, 0x8e4c, 0x8e4d, 0x8e4e, 0x8e4f, 0x8e50, 0x8e51, 0x8e52,
- 0x8e53, 0x8e54, 0x8e55, 0x8e56, 0x8e57, 0x8e58, 0x8e59, 0x8e5a,
- 0x8e5b, 0x8e5c, 0x8e5d, 0x8e5e, 0x8e5f, 0x8e60, 0x8e61, 0x8e62,
- 0x8e63, 0x8e64, 0x8e65, 0x8e66, 0x8e67, 0x8e68, 0xbae6, 0x8e6a,
- 0x8e6b, 0x8e6c, 0x8e6d, 0x8e6e, 0xedca, 0x8e70, 0x8e71, 0x8e72,
- 0x8e73, 0x8e74, 0x8e75, 0x8e76, 0x8e77, 0x8e78, 0x8e79, 0x8e7a,
- 0x8e7b, 0x8e7c, 0x8e7d, 0xa261, 0x8ea1, 0x8ea2, 0x8ea3, 0x8ea4,
- 0x8ea5, 0x8ea6, 0x8ea7, 0x8ea8, 0x8ea9, 0x8eaa, 0xbafc, 0x8eac,
- 0x8ead, 0x8eae, 0x8eaf, 0x8eb0, 0x8eb1, 0x8eb2, 0x8eb3, 0xbfa6,
- 0x8eb5, 0x8eb6, 0x8eb7, 0x8eb8, 0x8eb9, 0x8eba, 0x8ebb, 0x8ebc,
- 0x8ebd, 0x8ebe, 0x8ebf, 0x8ec0, 0x8ec1, 0x8ec2, 0x8ec3, 0x8ec4,
- 0x8ec5, 0x8ec6, 0x8ec7, 0x8ec8, 0x8ec9, 0x8eca, 0x8ecb, 0x8ecc,
- 0xaacc, 0x8ece, 0x8ecf, 0xbfae, 0x8ed1, 0x8ed2, 0x8ed3, 0x8ed4,
- 0x8ed5, 0x8ed6, 0x8ed7, 0x8ed8, 0x8ed9, 0x8eda, 0x8edb, 0x8edc,
- 0x8edd, 0x8ede, 0x8edf, 0x8ee0, 0x8ee1, 0x8ee2, 0x8ee3, 0x8ee4,
- 0x8ee5, 0x8ee6, 0x8ee7, 0x8ee8, 0x8ee9, 0x8eea, 0x8eeb, 0x8eec,
- 0x8eed, 0x8eee, 0x8eef, 0x8ef0, 0x8ef1, 0x8ef2, 0x8ef3, 0x8ef4,
- 0x8ef5, 0x8ef6, 0x8ef7, 0x8ef8, 0x8ef9, 0x8efa, 0x8efb, 0x8efc,
- 0x8efd, 0x8efe, 0x8f40, 0x8f41, 0x8f42, 0x8f43, 0x8f44, 0x8f45,
- 0x8f46, 0x8f47, 0x8f48, 0x8f49, 0x8f4a, 0x8f4b, 0x8f4c, 0x8f4d,
- 0x8f4e, 0x8f4f, 0x8f50, 0x8f51, 0x8f52, 0x8f53, 0x8f54, 0x8f55,
- 0x8f56, 0xb5d7, 0x8f58, 0x8f59, 0x8f5a, 0x8f5b, 0x8f5c, 0x8f5d,
- 0x8f5e, 0x8f5f, 0x8f60, 0x8f61, 0x8f62, 0x8f63, 0x8f64, 0x8f65,
- 0x8f66, 0x8f67, 0x8f68, 0xe3c8, 0x8f6a, 0x8f6b, 0x8f6c, 0x8f6d,
- 0xdb79, 0x8f6f, 0x8f70, 0x8f71, 0x8f72, 0x8f73, 0x8f74, 0x8f75,
- 0x8f76, 0x8f77, 0x8f78, 0x8f79, 0x8f7a, 0x8f7b, 0x8f7c, 0x8f7d,
- 0x8f7e, 0x8fa1, 0x8fa2, 0x8fa3, 0x8fa4, 0x8fa5, 0x8fa6, 0x8fa7,
- 0x8fa8, 0x8fa9, 0x8faa, 0x8fab, 0x8fac, 0x8fad, 0x8fae, 0x8faf,
- 0x8fb0, 0x8fb1, 0x8fb2, 0x8fb3, 0x8fb4, 0x8fb5, 0x8fb6, 0x8fb7,
- 0x8fb8, 0x8fb9, 0x8fba, 0x8fbb, 0x8fbc, 0x8fbd, 0x8fbe, 0x8fbf,
- 0x8fc0, 0x8fc1, 0x8fc2, 0x8fc3, 0x8fc4, 0x8fc5, 0x8fc6, 0x8fc7,
- 0x8fc8, 0x8fc9, 0x8fca, 0xbfcc, 0xa0d4, 0x8fcd, 0x8fce, 0x8fcf,
- 0x8fd0, 0x8fd1, 0x8fd2, 0x8fd3, 0x8fd4, 0x8fd5, 0x8fd6, 0x8fd7,
- 0x8fd8, 0x8fd9, 0x8fda, 0x8fdb, 0x8fdc, 0x8fdd, 0x8fde, 0x8fdf,
- 0x8fe0, 0x8fe1, 0x8fe2, 0x8fe3, 0x8fe4, 0x8fe5, 0x8fe6, 0x8fe7,
- 0x8fe8, 0x8fe9, 0x8fea, 0x8feb, 0x8fec, 0x8fed, 0x8fee, 0x8fef,
- 0x8ff0, 0x8ff1, 0x8ff2, 0x8ff3, 0x8ff4, 0x8ff5, 0x8ff6, 0x8ff7,
- 0x8ff8, 0x8ff9, 0x8ffa, 0x8ffb, 0x8ffc, 0x8ffd, 0xb05f, 0x9040,
- 0x9041, 0x9042, 0x9043, 0x9044, 0x9045, 0x9046, 0x9047, 0x9048,
- 0x9049, 0x904a, 0x904b, 0x904c, 0x904d, 0x904e, 0x904f, 0x9050,
- 0x9051, 0x9052, 0x9053, 0x9054, 0x9055, 0x9056, 0x9057, 0x9058,
- 0x9059, 0x905a, 0x905b, 0x905c, 0x905d, 0x905e, 0x905f, 0x9060,
- 0x9061, 0x9062, 0x9063, 0x9064, 0x9065, 0x9066, 0x9067, 0x9068,
- 0x9069, 0x906a, 0x906b, 0x906c, 0xb3a3, 0x906e, 0x906f, 0x9070,
- 0x9071, 0x9072, 0x9073, 0x9074, 0x9075, 0x9076, 0x9077, 0x9078,
- 0x9079, 0xf9d7, 0x907b, 0x907c, 0x907d, 0x907e, 0x90a1, 0x90a2,
- 0x90a3, 0x90a4, 0x90a5, 0x90a6, 0x90a7, 0x90a8, 0x90a9, 0x90aa,
- 0x90ab, 0x90ac, 0x90ad, 0x90ae, 0x90af, 0x90b0, 0x90b1, 0x90b2,
- 0x90b3, 0x90b4, 0x90b5, 0x90b6, 0x90b7, 0x90b8, 0x90b9, 0x90ba,
- 0x90bb, 0x90bc, 0x90bd, 0x90be, 0x90bf, 0x90c0, 0x90c1, 0x90c2,
- 0x90c3, 0x90c4, 0x90c5, 0x90c6, 0x90c7, 0x90c8, 0x90c9, 0x90ca,
- 0x90cb, 0x90cc, 0x90cd, 0x90ce, 0x90cf, 0x90d0, 0x90d1, 0x90d2,
- 0x90d3, 0x90d4, 0x90d5, 0x90d6, 0x90d7, 0x90d8, 0x90d9, 0x90da,
- 0x90db, 0xc052, 0x90dd, 0x90de, 0x90df, 0x90e0, 0x90e1, 0x90e2,
- 0x90e3, 0x90e4, 0x90e5, 0x90e6, 0x90e7, 0x90e8, 0x90e9, 0x90ea,
- 0x90eb, 0x90ec, 0x90ed, 0x90ee, 0x90ef, 0x90f0, 0xc554, 0x90f2,
- 0x90f3, 0x90f4, 0x90f5, 0x90f6, 0x90f7, 0x90f8, 0x90f9, 0x90fa,
- 0x90fb, 0x90fc, 0x90fd, 0x90fe, 0x9140, 0x9141, 0x9142, 0x9143,
- 0x9144, 0x9145, 0x9146, 0x9147, 0x9148, 0x9149, 0x914a, 0x914b,
- 0x914c, 0x914d, 0x914e, 0x914f, 0x9150, 0x9151, 0x9152, 0x9153,
- 0x9154, 0x9155, 0x9156, 0x9157, 0x9158, 0x9159, 0x915a, 0x915b,
- 0x915c, 0x915d, 0x915e, 0x915f, 0x9160, 0x9161, 0x9162, 0x9163,
- 0x9164, 0x9165, 0x9166, 0x9167, 0x9168, 0x9169, 0x916a, 0x916b,
- 0x916c, 0x916d, 0x916e, 0x916f, 0x9170, 0x9171, 0x9172, 0x9173,
- 0x9174, 0x9175, 0x9176, 0x9177, 0x9178, 0x9179, 0x917a, 0x917b,
- 0x917c, 0x917d, 0x917e, 0x91a1, 0x91a2, 0x91a3, 0x91a4, 0x91a5,
- 0x91a6, 0x91a7, 0x91a8, 0x91a9, 0x91aa, 0x91ab, 0x91ac, 0x91ad,
- 0x91ae, 0x91af, 0x91b0, 0x91b1, 0x91b2, 0x91b3, 0x91b4, 0x91b5,
- 0x91b6, 0x91b7, 0x91b8, 0x91b9, 0x91ba, 0x91bb, 0x91bc, 0x91bd,
- 0x91be, 0xf1e3, 0x91c0, 0x91c1, 0x91c2, 0x91c3, 0x91c4, 0x91c5,
- 0x91c6, 0x91c7, 0x91c8, 0x91c9, 0x91ca, 0x91cb, 0x91cc, 0x91cd,
- 0x91ce, 0x91cf, 0x91d0, 0x91d1, 0x91d2, 0x91d3, 0x91d4, 0x91d5,
- 0x91d6, 0x91d7, 0x91d8, 0x91d9, 0x91da, 0x91db, 0x91dc, 0x91dd,
- 0x91de, 0x91df, 0x91e0, 0x91e1, 0x91e2, 0x91e3, 0x91e4, 0x91e5,
- 0x91e6, 0x91e7, 0x91e8, 0x91e9, 0x91ea, 0x91eb, 0x91ec, 0x91ed,
- 0x91ee, 0x91ef, 0x91f0, 0x91f1, 0x91f2, 0x91f3, 0x91f4, 0x91f5,
- 0x91f6, 0x91f7, 0x91f8, 0x91f9, 0x91fa, 0x91fb, 0x91fc, 0x91fd,
- 0x91fe, 0x9240, 0x9241, 0x9242, 0x9243, 0x9242, 0x9245, 0x9246,
- 0x9247, 0x9248, 0x9249, 0x924a, 0x924b, 0x924c, 0x924d, 0x924e,
- 0x924f, 0x9250, 0x9251, 0x9252, 0x9253, 0x9254, 0x9255, 0x9256,
- 0x9257, 0x9258, 0x9259, 0x925a, 0x925b, 0x925c, 0x925d, 0x925e,
- 0x925f, 0x9260, 0x9261, 0x9262, 0x9263, 0x9264, 0x9265, 0x9266,
- 0x9267, 0x9268, 0x9269, 0x926a, 0x926b, 0x926c, 0x926d, 0x926e,
- 0x926f, 0x9270, 0x9271, 0x9272, 0x9273, 0x9274, 0x9275, 0x9276,
- 0x9277, 0x9278, 0x9279, 0x927a, 0x927b, 0x927c, 0x927d, 0x927e,
- 0x92a1, 0x92a2, 0x92a3, 0x92a4, 0x92a5, 0x92a6, 0x92a7, 0x92a8,
- 0x92a9, 0x92aa, 0x92ab, 0x92ac, 0x92ad, 0x92ae, 0xa259, 0xa25a,
- 0xa25c, 0xa25b, 0x92b3, 0x92b4, 0x92b5, 0x92b6, 0x92b7, 0x92b8,
- 0x92b9, 0x92ba, 0x92bb, 0x92bc, 0x92bd, 0x92be, 0x92bf, 0x92c0,
- 0x92c1, 0x92c2, 0x92c3, 0x92c4, 0x92c5, 0x92c6, 0x92c7, 0xa05f,
- 0x92c9, 0x92ca, 0x92cb, 0x92cc, 0x92cd, 0x92ce, 0x92cf, 0x92d0,
- 0xe6ab, 0x92d2, 0x92d3, 0x92d4, 0x92d5, 0x92d6, 0x92d7, 0x92d8,
- 0x92d9, 0x92da, 0x92db, 0x92dc, 0x92dd, 0x92de, 0x92df, 0x92e0,
- 0x92e1, 0x92e2, 0x92e3, 0x92e4, 0x92e5, 0x92e6, 0x92e7, 0x92e8,
- 0x92e9, 0x92ea, 0x92eb, 0x92ec, 0x92ed, 0x92ee, 0x92ef, 0x92f0,
- 0x92f1, 0x92f2, 0x92f3, 0x92f4, 0x92f5, 0x92f6, 0x92f7, 0x92f8,
- 0x92f9, 0x92fa, 0x92fb, 0x92fc, 0x92fd, 0x92fe, 0x9340, 0x9341,
- 0x9342, 0x9343, 0x9344, 0x9345, 0x9346, 0x9347, 0x9348, 0x9349,
- 0x934a, 0x934b, 0x934c, 0x934d, 0x934e, 0x934f, 0x9350, 0x9351,
- 0x9352, 0x9353, 0x9354, 0x9355, 0x9356, 0x9357, 0x9358, 0x9359,
- 0x935a, 0x935b, 0x935c, 0x935d, 0x935e, 0x935f, 0x9360, 0x9361,
- 0x9362, 0x9363, 0x9364, 0x9365, 0x9366, 0x9367, 0x9368, 0x9369,
- 0x936a, 0x936b, 0x936c, 0x936d, 0x936e, 0x936f, 0x9370, 0x9371,
- 0x9372, 0x9373, 0x9374, 0x9375, 0x9376, 0x9377, 0x9378, 0x9379,
- 0x937a, 0x937b, 0x937c, 0x937d, 0x937e, 0x93a1, 0x93a2, 0x93a3,
- 0x93a4, 0x93a5, 0x93a6, 0x93a7, 0x93a8, 0x93a9, 0x93aa, 0x93ab,
- 0x93ac, 0x93ad, 0x93ae, 0x93af, 0x93b0, 0x93b1, 0x93b2, 0x93b3,
- 0x93b4, 0x93b5, 0x93b6, 0x93b7, 0x93b8, 0x93b9, 0x93ba, 0x93bb,
- 0x93bc, 0x93bd, 0x93be, 0x93bf, 0x93c0, 0x93c1, 0x93c2, 0x93c3,
- 0x93c4, 0x93c5, 0x93c6, 0x93c7, 0x93c8, 0x93c9, 0x93ca, 0x93cb,
- 0x93cc, 0x93cd, 0x93ce, 0x93cf, 0x93d0, 0x93d1, 0x93d2, 0x93d3,
- 0x93d4, 0x93d5, 0x93d6, 0x93d7, 0x93d8, 0x93d9, 0x93da, 0x93db,
- 0x93dc, 0x93dd, 0x93de, 0x93df, 0x93e0, 0x93e1, 0x93e2, 0x93e3,
- 0x93e4, 0x93e5, 0x93e6, 0x93e7, 0x93e8, 0x93e9, 0x93ea, 0x93eb,
- 0x93ec, 0x93ed, 0x93ee, 0x93ef, 0x93f0, 0x93f1, 0x93f2, 0x93f3,
- 0x93f4, 0x93f5, 0x93f6, 0x93f7, 0x93f8, 0x93f9, 0x93fa, 0x93fb,
- 0x93fc, 0x93fd, 0x93fe, 0x9440, 0x9441, 0x9442, 0x9443, 0x9444,
- 0x9445, 0x9446, 0xd256, 0x9448, 0x9449, 0x944a, 0x944b, 0x944c,
- 0x944d, 0x944e, 0x944f, 0x9450, 0x9451, 0x9452, 0x9453, 0x9454,
- 0x9455, 0x9456, 0x9457, 0x9458, 0x9459, 0x945a, 0x945b, 0x945c,
- 0x945d, 0x945e, 0x945f, 0x9460, 0x9461, 0x9462, 0x9463, 0x9464,
- 0x9465, 0x9466, 0x9467, 0x9468, 0x9469, 0x946a, 0x946b, 0x946c,
- 0x946d, 0x946e, 0x946f, 0x9470, 0x9471, 0x9472, 0x9473, 0x9474,
- 0x9475, 0x9476, 0x9477, 0x9478, 0x9479, 0x947a, 0x947b, 0x947c,
- 0x947d, 0x947e, 0x94a1, 0x94a2, 0x94a3, 0x94a4, 0x94a5, 0x94a6,
- 0x94a7, 0x94a8, 0x94a9, 0x94aa, 0x94ab, 0x94ac, 0x94ad, 0x94ae,
- 0x94af, 0x94b0, 0x94b1, 0x94b2, 0x94b3, 0x94b4, 0x94b5, 0x94b6,
- 0x94b7, 0x94b8, 0x94b9, 0x94ba, 0x94bb, 0x94bc, 0x94bd, 0x94be,
- 0x94bf, 0x94c0, 0x94c1, 0x94c2, 0x94c3, 0x94c4, 0x94c5, 0x94c6,
- 0x94c7, 0x94c8, 0x94c9, 0xe6d0, 0x94cb, 0x94cc, 0x94cd, 0x94ce,
- 0x94cf, 0x94d0, 0x94d1, 0x94d2, 0x94d3, 0x94d4, 0x94d5, 0x94d6,
- 0x94d7, 0x94d8, 0x94d9, 0x94da, 0x94db, 0x94dc, 0x94dd, 0x94de,
- 0x94df, 0x94e0, 0x94e1, 0x94e2, 0x94e3, 0x94e4, 0x94e5, 0x94e6,
- 0x94e7, 0x94e8, 0x94e9, 0x94ea, 0x94eb, 0x94ec, 0x94ed, 0x94ee,
- 0x94ef, 0x94f0, 0x94f1, 0x94f2, 0x94f3, 0x94f4, 0x94f5, 0x94f6,
- 0x94f7, 0x94f8, 0x94f9, 0x94fa, 0x94fb, 0x94fc, 0x94fd, 0x94fe,
- 0x9540, 0x9541, 0x9542, 0x9543, 0x9544, 0x9545, 0x9546, 0x9547,
- 0x9548, 0x9549, 0x954a, 0x954b, 0x954c, 0x954d, 0x954e, 0x954f,
- 0x9550, 0x9551, 0x9552, 0x9553, 0x9554, 0x9555, 0x9556, 0x9557,
- 0x9558, 0x9559, 0x955a, 0x955b, 0x955c, 0x955d, 0x955e, 0x955f,
- 0x9560, 0x9561, 0x9562, 0x9563, 0x9564, 0x9565, 0x9566, 0x9567,
- 0x9568, 0x9569, 0x956a, 0x956b, 0x956c, 0x956d, 0x956e, 0x956f,
- 0x9570, 0x9571, 0x9572, 0x9573, 0x9574, 0x9575, 0x9576, 0x9577,
- 0x9578, 0x9579, 0x957a, 0x957b, 0x957c, 0x957d, 0x957e, 0x95a1,
- 0x95a2, 0x95a3, 0x95a4, 0x95a5, 0x95a6, 0x95a7, 0x95a8, 0x95a9,
- 0x95aa, 0x95ab, 0x95ac, 0x95ad, 0x95ae, 0x95af, 0x95b0, 0x95b1,
- 0x95b2, 0x95b3, 0x95b4, 0x95b5, 0x95b6, 0x95b7, 0x95b8, 0x95b9,
- 0x95ba, 0x95bb, 0x95bc, 0x95bd, 0x95be, 0x95bf, 0x95c0, 0x95c1,
- 0x95c2, 0x95c3, 0x95c4, 0x95c5, 0x95c6, 0x95c7, 0x95c8, 0x95c9,
- 0x95ca, 0x95cb, 0x95cc, 0x95cd, 0x95ce, 0x95cf, 0x95d0, 0x95d1,
- 0x95d2, 0x95d3, 0x95d4, 0x95d5, 0x95d6, 0x95d7, 0x95d8, 0xca52,
- 0x95da, 0x95db, 0x95dc, 0x95dd, 0x95de, 0x95df, 0x95e0, 0x95e1,
- 0x95e2, 0x95e3, 0x95e4, 0x95e5, 0x95e6, 0x95e7, 0x95e8, 0x95e9,
- 0x95ea, 0x95eb, 0x95ec, 0x95ed, 0x95ee, 0x95ef, 0x95f0, 0x95f1,
- 0x95f2, 0x95f3, 0x95f4, 0x95f5, 0x95f6, 0x95f7, 0x95f8, 0x95f9,
- 0x95fa, 0x95fb, 0x95fc, 0x95fd, 0x95fe, 0x9640, 0x9641, 0x9642,
- 0x9643, 0x9ce4, 0x9645, 0x9646, 0x9647, 0x9648, 0x9649, 0x964a,
- 0x964b, 0x964c, 0x964d, 0x964e, 0x964f, 0x9650, 0x9651, 0x9652,
- 0x9653, 0x9654, 0x9655, 0x9656, 0x9657, 0x9658, 0x9659, 0x965a,
- 0x965b, 0x965c, 0x965d, 0x965e, 0x965f, 0x9660, 0x9661, 0x9662,
- 0x9663, 0x9664, 0x9665, 0x9666, 0x9667, 0x9668, 0x9669, 0x966a,
- 0x966b, 0x966c, 0x966d, 0x966e, 0x966f, 0x9670, 0x9671, 0x9672,
- 0x9673, 0x9674, 0x9675, 0x9676, 0x9677, 0x9678, 0x9679, 0x967a,
- 0x967b, 0x967c, 0x967d, 0x967e, 0x96a1, 0x96a2, 0x96a3, 0x96a4,
- 0x96a5, 0x96a6, 0x96a7, 0x96a8, 0x96a9, 0x96aa, 0x96ab, 0x96ac,
- 0x96ad, 0x96ae, 0x96af, 0x96b0, 0x96b1, 0x96b2, 0x96b3, 0x96b4,
- 0x96b5, 0x96b6, 0x96b7, 0x96b8, 0x96b9, 0x96ba, 0x96bb, 0x96bc,
- 0x96bd, 0x96be, 0x96bf, 0x96c0, 0x96c1, 0x96c2, 0x96c3, 0x96c4,
- 0x96c5, 0x96c6, 0x96c7, 0x96c8, 0x96c9, 0x96ca, 0x96cb, 0x96cc,
- 0x96cd, 0x96ce, 0x96cf, 0x96d0, 0x96d1, 0x96d2, 0x96d3, 0x96d4,
- 0x96d5, 0x96d6, 0x96d7, 0x96d8, 0x96d9, 0x96da, 0x96db, 0x96dc,
- 0x96dd, 0x96de, 0x96df, 0x96e0, 0x96e1, 0x96e2, 0x96e3, 0x96e4,
- 0x96e5, 0x96e6, 0x96e7, 0x96e8, 0x96e9, 0x96ea, 0x96eb, 0x96ec,
- 0x96ee, 0x96ee, 0x96ef, 0x96f0, 0x96f1, 0x96f2, 0x96f3, 0x96f4,
- 0x96f5, 0x96f6, 0x96f7, 0x96f8, 0x96f9, 0x96fa, 0x96fb, 0xe959,
- 0x96fd, 0x96fe, 0x9740, 0x9741, 0x9742, 0x9743, 0x9744, 0x9745,
- 0x9746, 0x9747, 0x9748, 0x9749, 0x974a, 0x974b, 0x974c, 0x974d,
- 0x974e, 0x974f, 0x9750, 0x9751, 0x9752, 0x9753, 0x9754, 0x9755,
- 0x9756, 0x9757, 0x9758, 0x9759, 0x975a, 0x975b, 0x975c, 0x975d,
- 0x975e, 0x975f, 0x9760, 0x9761, 0x9762, 0x9763, 0x9764, 0x9765,
- 0x9766, 0x9767, 0x9768, 0x9769, 0x976a, 0x976b, 0x976c, 0x976d,
- 0x976e, 0x976f, 0x9770, 0x9771, 0x9772, 0x9773, 0x9774, 0x9775,
- 0x9776, 0x9777, 0x9778, 0x9779, 0x977a, 0x977b, 0x977c, 0x977d,
- 0x977e, 0x97a1, 0x97a2, 0x97a3, 0x97a4, 0x97a5, 0x97a6, 0x97a7,
- 0x97a8, 0x97a9, 0x97aa, 0x97ab, 0x97ac, 0x97ad, 0x97ae, 0x97af,
- 0x97b0, 0x97b1, 0x97b2, 0x97b3, 0x97b4, 0x97b5, 0x97b6, 0x97b7,
- 0x97b8, 0x97b9, 0x97ba, 0x97bb, 0x97bc, 0x97bd, 0x97be, 0x97bf,
- 0x97c0, 0x97c1, 0x97c2, 0x97c3, 0x97c4, 0x97c5, 0x97c6, 0x97c7,
- 0x97c8, 0x97c9, 0x97ca, 0x97cb, 0x97cc, 0x97cd, 0x97ce, 0x97cf,
- 0x97d0, 0x97d1, 0x97d2, 0x97d3, 0x97d4, 0x97d5, 0x97d6, 0x97d7,
- 0x97d8, 0x97d9, 0x97da, 0x97db, 0x97dc, 0x97dd, 0x97de, 0x97df,
- 0x97e0, 0x97e1, 0x97e2, 0x97e3, 0x97e4, 0x97e5, 0x97e6, 0x97e7,
- 0x97e8, 0x97e9, 0x97ea, 0x97eb, 0x97ec, 0x97ed, 0x97ee, 0x97ef,
- 0x97f0, 0x97f1, 0x97f2, 0x97f3, 0x97f4, 0x97f5, 0x97f6, 0x97f7,
- 0x97f8, 0x97f9, 0x97fa, 0x97fb, 0x97fc, 0x97fd, 0x97fe, 0x9840,
- 0x9841, 0x9842, 0x9843, 0x9844, 0x9845, 0x9846, 0x9847, 0x9848,
- 0x9849, 0x984a, 0x984b, 0x984c, 0x984d, 0x984e, 0x984f, 0x9850,
- 0x9851, 0x9852, 0x9853, 0x9854, 0x9855, 0x9856, 0x9857, 0x9858,
- 0x9859, 0x985a, 0x985b, 0x985c, 0x985d, 0x985e, 0x985f, 0x9860,
- 0x9861, 0x9862, 0x9863, 0x9864, 0x9865, 0x9866, 0x9867, 0x9868,
- 0x9869, 0x986a, 0x986b, 0x986c, 0x986d, 0x986e, 0x986f, 0x9870,
- 0x9871, 0x9872, 0x9873, 0x9874, 0x9875, 0x9876, 0x9877, 0x9878,
- 0x9879, 0x987a, 0x987b, 0x987c, 0x987d, 0x987e, 0x98a1, 0x98a2,
- 0x98a3, 0x98a4, 0x98a5, 0x98a6, 0x98a7, 0x98a8, 0x98a9, 0x98aa,
- 0x98ab, 0x98ac, 0x98ad, 0x98ae, 0x98af, 0x98b0, 0x98b1, 0x98b2,
- 0x98b3, 0x98b4, 0x98b5, 0x98b6, 0x98b7, 0x98b8, 0x98b9, 0x98ba,
- 0x98bb, 0x98bc, 0x98bd, 0x98be, 0x98bf, 0x98c0, 0x98c1, 0x98c2,
- 0x98c3, 0x98c4, 0x98c5, 0x98c6, 0x98c7, 0x98c8, 0x98c9, 0x98ca,
- 0x98cb, 0x98cc, 0x98cd, 0x98ce, 0x98cf, 0x98d0, 0x98d1, 0x98d2,
- 0x98d3, 0x98d4, 0x98d5, 0x98d6, 0x98d7, 0x98d8, 0x98d9, 0x98da,
- 0x98db, 0x98dc, 0x98dd, 0x98de, 0x98df, 0x98e0, 0x98e1, 0x98e2,
- 0x98e3, 0x98e4, 0x98e5, 0x98e6, 0x98e7, 0x98e8, 0x98e9, 0x98ea,
- 0x98eb, 0x98ec, 0x98ed, 0x98ee, 0x98ef, 0x98f0, 0x98f1, 0x98f2,
- 0x98f3, 0x98f4, 0x98f5, 0x98f6, 0x98f7, 0x98f8, 0x98f9, 0x98fa,
- 0x98fb, 0x98fc, 0x98fd, 0x98fe, 0x9940, 0x9941, 0x9942, 0x9943,
- 0x9944, 0x9945, 0x9946, 0x9947, 0x9948, 0x9949, 0x994a, 0x994b,
- 0x994c, 0x994d, 0x994e, 0x994f, 0x9950, 0x9951, 0x9952, 0x9953,
- 0x9954, 0x9955, 0x9956, 0x9957, 0x9958, 0x9959, 0x995a, 0x995b,
- 0x995c, 0x995d, 0x995e, 0x995f, 0x9960, 0x9961, 0x9962, 0x9963,
- 0x9964, 0x9965, 0x9966, 0x9967, 0x9968, 0x9969, 0x996a, 0x996b,
- 0x996c, 0x996d, 0x996e, 0x996f, 0x9970, 0x9971, 0x9972, 0x9973,
- 0x9974, 0x9975, 0x9976, 0x9977, 0x9978, 0x9979, 0x997a, 0x997b,
- 0x997c, 0x997d, 0x997e, 0x99a1, 0x99a2, 0x99a3, 0x99a4, 0x99a5,
- 0x99a6, 0x99a7, 0x99a8, 0x99a9, 0x99aa, 0x99ab, 0x99ac, 0x99ad,
- 0x99ae, 0x99af, 0x99b0, 0x99b1, 0x99b2, 0x99b3, 0x99b4, 0x99b5,
- 0x99b6, 0x99b7, 0x99b8, 0x99b9, 0x99ba, 0x99bb, 0x99bc, 0x99bd,
- 0x99be, 0x99bf, 0x99c0, 0x99c1, 0x99c2, 0x99c3, 0x99c4, 0x99c5,
- 0x99c6, 0x99c7, 0x99c8, 0x99c9, 0x99ca, 0x99cb, 0x99cc, 0x99cd,
- 0x99ce, 0x99cf, 0x99d0, 0x99d1, 0x99d2, 0x99d3, 0x99d4, 0x99d5,
- 0x99d6, 0x99d7, 0x99d8, 0x99d9, 0x99da, 0x99db, 0x99dc, 0x99dd,
- 0x99de, 0x99df, 0x99e0, 0x99e1, 0x99e2, 0x99e3, 0x99e4, 0x99e5,
- 0x99e6, 0x99e7, 0x99e8, 0x99e9, 0x99ea, 0x99eb, 0x99ec, 0x99ed,
- 0x99ee, 0x99ef, 0x99f0, 0x99f1, 0x99f2, 0x99f3, 0x99f4, 0x99f5,
- 0x99f6, 0x99f7, 0x99f8, 0x99f9, 0x99fa, 0x99fb, 0x99fc, 0x99fd,
- 0x99fe, 0x9a40, 0x9a41, 0x9a42, 0x9a43, 0x9a44, 0x9a45, 0x9a46,
- 0x9a47, 0x9a48, 0x9a49, 0x9a4a, 0x9a4b, 0x9a4c, 0x9a4d, 0x9a4e,
- 0x9a4f, 0x9a50, 0x9a51, 0x9a52, 0x9a53, 0x9a54, 0x9a55, 0x9a56,
- 0x9a57, 0x9a58, 0x9a59, 0x9a5a, 0x9a5b, 0x9a5c, 0x9a5d, 0x9a5e,
- 0x9a5f, 0x9a60, 0x9a61, 0x9a62, 0x9a63, 0x9a64, 0x9a65, 0x9a66,
- 0x9a67, 0x9a68, 0x9a69, 0x9a6a, 0x9a6b, 0x9a6c, 0x9a6d, 0x9a6e,
- 0x9a6f, 0x9a70, 0x9a71, 0x9a72, 0x9a73, 0x9a74, 0x9a75, 0x9a76,
- 0x9a77, 0x9a78, 0x9a79, 0x9a7a, 0x9a7b, 0x9a7c, 0x9a7d, 0x9a7e,
- 0x9aa1, 0x9aa2, 0x9aa3, 0x9aa4, 0x9aa5, 0x9aa6, 0x9aa7, 0x9aa8,
- 0x9aa9, 0x9aaa, 0x9aab, 0x9aac, 0x9aad, 0x9aae, 0x9aaf, 0x9ab0,
- 0x9ab1, 0x9ab2, 0x9ab3, 0x9ab4, 0x9ab5, 0x9ab6, 0x9ab7, 0x9ab8,
- 0x9ab9, 0x9aba, 0x9abb, 0x9abc, 0x9abd, 0x9abe, 0x9abf, 0x9ac0,
- 0x9ac1, 0x9ac2, 0x9ac3, 0x9ac4, 0x9ac5, 0x9ac6, 0x9ac7, 0x9ac8,
- 0x9ac9, 0x9aca, 0x9acb, 0x9acc, 0x9acd, 0x9ace, 0x9acf, 0x9ad0,
- 0x9ad1, 0x9ad2, 0x9ad3, 0x9ad4, 0x9ad5, 0x9ad6, 0x9ad7, 0x9ad8,
- 0x9ad9, 0x9ada, 0x9adb, 0x9adc, 0x9add, 0x9ade, 0x9adf, 0x9ae0,
- 0x9ae1, 0x9ae2, 0x9ae3, 0x9ae4, 0x9ae5, 0x9ae6, 0x9ae7, 0x9ae8,
- 0x9ae9, 0x9aea, 0x9aeb, 0x9aec, 0x9aed, 0x9aee, 0x9aef, 0x9af0,
- 0x9af1, 0x9af2, 0x9af3, 0x9af4, 0x9af5, 0x9af6, 0x9af7, 0x9af8,
- 0x9af9, 0x9afa, 0x9afb, 0x9afc, 0x9afd, 0x9afe, 0x9b40, 0x9b41,
- 0x9b42, 0x9b43, 0x9b44, 0x9b45, 0x9b46, 0x9b47, 0x9b48, 0x9b49,
- 0x9b4a, 0x9b4b, 0x9b4c, 0x9b4d, 0x9b4e, 0x9b4f, 0x9b50, 0x9b51,
- 0x9b52, 0x9b53, 0x9b54, 0x9b55, 0x9b56, 0x9b57, 0x9b58, 0x9b59,
- 0x9b5a, 0x9b5b, 0x9b5c, 0x9b5d, 0x9b5e, 0x9b5f, 0x9b60, 0x9b61,
- 0x9b62, 0x9b63, 0x9b64, 0x9b65, 0x9b66, 0x9b67, 0x9b68, 0x9b69,
- 0x9b6a, 0x9b6b, 0x9b6c, 0x9b6d, 0x9b6e, 0x9b6f, 0x9b70, 0x9b71,
- 0x9b72, 0x9b73, 0x9b74, 0x9b75, 0xeff9, 0x9b77, 0xc5f7, 0x9b79,
- 0x9b7a, 0xf5e8, 0x9b7c, 0x9b7d, 0x9b7e, 0x9ba1, 0x9ba2, 0x9ba3,
- 0x9ba4, 0x9ba5, 0x9ba6, 0x9ba7, 0x9ba8, 0x9ba9, 0x9baa, 0x9bab,
- 0x9bac, 0x9bad, 0x9bae, 0x9baf, 0x9bb0, 0x9bb1, 0x9bb2, 0x9bb3,
- 0x9bb4, 0x9bb5, 0x9bb6, 0x9bb7, 0x9bb8, 0x9bb9, 0x9bba, 0x9bbb,
- 0x9bbc, 0x9bbd, 0x9bbe, 0x9bbf, 0x9bc0, 0x9bc1, 0x9bc2, 0x9bc3,
- 0x9bc4, 0x9bc5, 0xe8cd, 0x9bc7, 0x9bc8, 0x9bc9, 0x9bca, 0x9bcb,
- 0x9bcc, 0x9bcd, 0x9bce, 0x9bcf, 0x9bd0, 0x9bd1, 0x9bd2, 0x9bd3,
- 0x9bd4, 0x9bd5, 0x9bd6, 0x9bd7, 0x9bd8, 0x9bd9, 0x9bda, 0x9bdb,
- 0x9bdc, 0x9bdd, 0xd0c0, 0x9bdf, 0x9be0, 0x9be1, 0x9be2, 0x9be3,
- 0x9be4, 0x9be5, 0x9be6, 0x9be7, 0x9be8, 0x9be9, 0x9bea, 0x9beb,
- 0xfd64, 0x9bed, 0x9bee, 0x9bef, 0x9bf0, 0x9bf1, 0x9bf2, 0x9bf3,
- 0x9bf4, 0x9bf5, 0xbf47, 0x9bf7, 0x9bf8, 0x9bf9, 0x9bfa, 0x9bfb,
- 0x9bfc, 0x9bfd, 0x9bfe, 0x9c40, 0x9c41, 0xebc9, 0x9c43, 0x9c44,
- 0x9c45, 0x9c46, 0x9c47, 0x9c48, 0x9c49, 0x9c4a, 0x9c4b, 0x9c4c,
- 0x9c4d, 0x9c4e, 0x9c4f, 0x9c50, 0x9c51, 0x9c52, 0xcde7, 0x9c54,
- 0x9c55, 0x9c56, 0x9c57, 0x9c58, 0x9c59, 0x9c5a, 0x9c5b, 0x9c5c,
- 0x9c5d, 0x9c5e, 0x9c5f, 0x9c60, 0x9c61, 0xc0e7, 0x9c63, 0x9c64,
- 0x9c65, 0x9c66, 0x9c67, 0xdc52, 0x9c69, 0x9c6a, 0xf86d, 0x9c6c,
- 0x9c6d, 0x9c6e, 0x9c6f, 0x9c70, 0x9c71, 0x9c72, 0x9c73, 0x9c74,
- 0x9c75, 0x9c76, 0xdb5d, 0x9c78, 0x9c79, 0x9c7a, 0x9c7b, 0x9c7c,
- 0x9c7d, 0x9c7e, 0x9ca1, 0x9ca2, 0x9ca3, 0x9ca4, 0x9ca5, 0x9ca6,
- 0x9ca7, 0x9ca8, 0x9ca9, 0x9caa, 0x9cab, 0x9cac, 0x9cad, 0x9cae,
- 0x9caf, 0x9cb0, 0x9cb1, 0x9cb2, 0x9cb3, 0x9cb4, 0x9cb5, 0x9cb6,
- 0x9cb7, 0x9cb8, 0x9cb9, 0x9cba, 0x9cbb, 0xc95c, 0xafb0, 0x9cbe,
- 0x9cbf, 0x9cc0, 0x9cc1, 0x9cc2, 0x9cc3, 0x9cc4, 0x9cc5, 0x9cc6,
- 0x9cc7, 0x9cc8, 0x9cc9, 0x9cca, 0x9ccb, 0x9ccc, 0x9ccd, 0x9cce,
- 0x9ccf, 0xd4d1, 0x9cd1, 0x9cd2, 0x9cd3, 0x9cd4, 0x9cd5, 0x9cd6,
- 0x9cd7, 0x9cd8, 0x9cd9, 0x9cda, 0x9cdb, 0x9cdc, 0x9cdd, 0x9cde,
- 0x9cdf, 0x9ce0, 0x9ce1, 0x9ce2, 0x9ce3, 0x9ce4, 0x9ce5, 0x9ce6,
- 0x9ce7, 0x9ce8, 0x9ce9, 0x9cea, 0x9ceb, 0x9cec, 0x9ced, 0x9cee,
- 0x9cef, 0x9cf0, 0x9cf1, 0x9cf2, 0x9cf3, 0x9cf4, 0x9cf5, 0x9cf6,
- 0x9cf7, 0x9cf8, 0x9cf9, 0x9cfa, 0x9cfb, 0x9cfc, 0x9cfd, 0x9cfe,
- 0x9d40, 0x9d41, 0x9d42, 0x9d43, 0x9d44, 0x9d45, 0x9d46, 0x9d47,
- 0x9d48, 0x9d49, 0x9d4a, 0x9d4b, 0x9d4c, 0x9d4d, 0x9d4e, 0x9d4f,
- 0x9d50, 0x9d51, 0x9d52, 0x9d53, 0x9d54, 0x9d55, 0x9d56, 0xe07c,
- 0x9d58, 0x9d59, 0xb5ae, 0x9d5b, 0x9d5c, 0x9d5d, 0x9d5e, 0x9d5f,
- 0x9d60, 0x9d61, 0x9d62, 0x9d63, 0x9d64, 0x9d65, 0x9d66, 0x9d67,
- 0x9d68, 0x9d69, 0x9d6a, 0x9d6b, 0x9d6c, 0x9d6d, 0x9d6e, 0x9d6f,
- 0x9d70, 0x9d71, 0x9d72, 0x9d73, 0x9d74, 0x9d75, 0x9d76, 0x9d77,
- 0x9d78, 0x9d79, 0x9d7a, 0x9d7b, 0x9d7c, 0x9d7d, 0x9d7e, 0x9da1,
- 0x9da2, 0x9da3, 0x9da4, 0x9da5, 0x9da6, 0x9da7, 0x9da8, 0x9da9,
- 0x9daa, 0x9dab, 0x9dac, 0x9dad, 0x9dae, 0x9daf, 0x9db0, 0x9db1,
- 0x9db2, 0x9db3, 0x9db4, 0x9db5, 0x9db6, 0x9db7, 0x9db8, 0x9db9,
- 0x9dba, 0x9dbb, 0x9dbc, 0x9dbd, 0x9dbe, 0x9dbf, 0x9dc0, 0x9dc1,
- 0x9dc2, 0x9dc3, 0xa9e4, 0x9dc5, 0x9dc6, 0x9dc7, 0x9dc8, 0x9dc9,
- 0x9dca, 0x9dcb, 0x9dcc, 0x9dcd, 0x9dce, 0x9dcf, 0x9dd0, 0x9dd1,
- 0x9dd2, 0x9dd3, 0x9dd4, 0x9dd5, 0x9dd6, 0x9dd7, 0x9dd8, 0x9dd9,
- 0x9dda, 0x9ddb, 0x9ddc, 0x9ddd, 0x9dde, 0x9ddf, 0x9de0, 0x9de1,
- 0x9de2, 0x9de3, 0x9de4, 0x9de5, 0x9de6, 0x9de7, 0x9de8, 0x9de9,
- 0x9dea, 0x9deb, 0x9dec, 0x9ded, 0x9dee, 0x9def, 0x9df0, 0x9df1,
- 0x9df2, 0x9df3, 0x9df4, 0x9df5, 0x9df6, 0x9df7, 0x9df8, 0x9df9,
- 0x9dfa, 0x9dfb, 0x9dfc, 0x9dfd, 0x9dfe, 0x9e40, 0x9e41, 0x9e42,
- 0x9e43, 0x9e44, 0x9e45, 0x9e46, 0x9e47, 0x9e48, 0x9e49, 0x9e4a,
- 0x9e4b, 0x9e4c, 0x9e4d, 0x9e4e, 0x9e4f, 0x9e50, 0x9e51, 0x9e52,
- 0x9e53, 0x9e54, 0x9e55, 0x9e56, 0x9e57, 0x9e58, 0x9e59, 0x9e5a,
- 0x9e5b, 0x9e5c, 0x9e5d, 0x9e5e, 0x9e5f, 0x9e60, 0x9e61, 0x9e62,
- 0x9e63, 0x9e64, 0x9e65, 0x9e66, 0x9e67, 0x9e68, 0x9e69, 0x9e6a,
- 0x9e6b, 0x9e6c, 0x9e6d, 0x9e6e, 0x9e6f, 0x9e70, 0x9e71, 0x9e72,
- 0x9e73, 0x9e74, 0x9e75, 0x9e76, 0x9e77, 0x9e78, 0x9e79, 0x9e7a,
- 0x9e7b, 0x9e7c, 0x9e7d, 0x9e7e, 0x9ea1, 0x9ea2, 0x9ea3, 0x9ea4,
- 0x9ea5, 0x9ea6, 0x9ea7, 0x9ea8, 0xabec, 0x9eaa, 0x9eab, 0x9eac,
- 0x9ead, 0x9eae, 0x9eaf, 0x9eb0, 0x9eb1, 0x9eb2, 0x9eb3, 0x9eb4,
- 0x9eb5, 0x9eb6, 0x9eb7, 0x9eb8, 0x9eb9, 0x9eba, 0x9ebb, 0x9ebc,
- 0x9ebd, 0x9ebe, 0x9ebf, 0x9ec0, 0x9ec1, 0x9ec2, 0x9ec3, 0x9ec4,
- 0x9ec5, 0x9ec6, 0x9ec7, 0x9ec8, 0x9ec9, 0x9eca, 0x9ecb, 0x9ecc,
- 0x9ecd, 0x9ece, 0x9ecf, 0x9ed0, 0x9ed1, 0x9ed2, 0x9ed3, 0x9ed4,
- 0x9ed5, 0x9ed6, 0x9ed7, 0x9ed8, 0x9ed9, 0x9eda, 0x9edb, 0x9edc,
- 0x9edd, 0x9ede, 0x9edf, 0x9ee0, 0x9ee1, 0x9ee2, 0x9ee3, 0x9ee4,
- 0x9ee5, 0x9ee6, 0x9ee7, 0x9ee8, 0x9ee9, 0x9eea, 0x9eeb, 0x9eec,
- 0x9eed, 0x9eee, 0xdecd, 0x9ef0, 0x9ef1, 0x9ef2, 0x9ef3, 0x9ef4,
- 0x9ef5, 0x9ef6, 0x9ef7, 0x9ef8, 0x9ef9, 0x9efa, 0x9efb, 0x9efc,
- 0xc9fc, 0x9efe, 0x9f40, 0x9f41, 0x9f42, 0x9f43, 0x9f44, 0x9f45,
- 0x9f46, 0x9f47, 0x9f48, 0x9f49, 0x9f4a, 0x9f4b, 0x9f4c, 0x9f4d,
- 0x9f4e, 0x9f4f, 0x9f50, 0x9f51, 0x9f52, 0x9f53, 0x9f54, 0x9f55,
- 0x9f56, 0x9f57, 0x9f58, 0x9f59, 0x9f5a, 0x9f5b, 0x9f5c, 0x9f5d,
- 0x9f5e, 0x9f5f, 0xf9c4, 0x9f61, 0x9f62, 0x9f63, 0x9f64, 0x9f65,
- 0x91be, 0x9f67, 0x9f68, 0x9f69, 0x9f6a, 0x9f6b, 0x9f6c, 0x9f6d,
- 0x9f6e, 0x9f6f, 0x9f70, 0x9f71, 0x9f72, 0x9f73, 0x9f74, 0x9f75,
- 0x9f76, 0x9f77, 0x9f78, 0x9f79, 0x9f7a, 0x9f7b, 0x9f7c, 0x9f7d,
- 0x9f7e, 0x9fa1, 0x9fa2, 0x9fa3, 0x9fa4, 0x9fa5, 0x9fa6, 0x9fa7,
- 0x9fa8, 0x9fa9, 0x9faa, 0x9fab, 0x9fac, 0x9fad, 0x9fae, 0x9faf,
- 0x9fb0, 0x9fb1, 0x9fb2, 0x9fb3, 0x9fb4, 0x9fb5, 0x9fb6, 0x9fb7,
- 0x9fb8, 0x9fb9, 0x9fba, 0x9fbb, 0x9fbc, 0x9fbd, 0x9fbe, 0x9fbf,
- 0x9fc0, 0x9fc1, 0x9fc2, 0x9fc3, 0x9fc4, 0x9fc5, 0x9fc6, 0x9fc7,
- 0x9fc8, 0x9fc9, 0x9fca, 0xb9b0, 0x9fcc, 0x9fcd, 0x9fce, 0x9fcf,
- 0x9fd0, 0x9fd1, 0x9fd2, 0x9fd3, 0x9fd4, 0x9fd5, 0x9fd6, 0x9fd7,
- 0x9361, 0x9fd9, 0x9fda, 0x9fdb, 0x9fdc, 0x9fdd, 0x9fde, 0x9fdf,
- 0x9fe0, 0x9fe1, 0x9fe2, 0x9fe3, 0x9fe4, 0x9fe5, 0x9fe6, 0x9fe7,
- 0x9fe8, 0x9fe9, 0x9fea, 0x9feb, 0x9fec, 0x9fed, 0x9fee, 0x9fef,
- 0x9ff0, 0x9ff1, 0x9ff2, 0x9ff3, 0x9ff4, 0x9ff5, 0x9ff6, 0x9ff7,
- 0x9ff8, 0x9ff9, 0x9ffa, 0x9ffb, 0x9ffc, 0x9ffd, 0x9ffe, 0xa040,
- 0xa041, 0xa042, 0xa043, 0xa044, 0xa045, 0xa046, 0xa047, 0xa048,
- 0xa049, 0xa04a, 0xa04b, 0xa04c, 0xa04d, 0xa04e, 0xa04f, 0xa050,
- 0xa051, 0xa052, 0xa053, 0xa054, 0xa055, 0xa056, 0xa057, 0xa058,
- 0xa059, 0xa05a, 0xa05b, 0xa05c, 0xa05d, 0xa05e, 0xa05f, 0xa060,
- 0xa061, 0xa062, 0x8fb6, 0xa064, 0xa065, 0xa066, 0xa067, 0xa068,
- 0xa069, 0xa06a, 0xa06b, 0xa06c, 0xa06d, 0xa06e, 0xa06f, 0xa070,
- 0xa071, 0xa072, 0xa073, 0xa074, 0xa075, 0xa076, 0xa9f0, 0xa078,
- 0xa079, 0xa07a, 0xa07b, 0xa07c, 0xa07d, 0xa07e, 0xa0a1, 0xa0a2,
- 0xa0a3, 0xa0a4, 0xa0a5, 0xa0a6, 0xa0a7, 0xa0a8, 0xa0a9, 0xa0aa,
- 0xa0ab, 0xa0ac, 0xa0ad, 0xa0ae, 0xa0af, 0xa0b0, 0xa0b1, 0xa0b2,
- 0xa0b3, 0xa0b4, 0xa0b5, 0xa0b6, 0xa0b7, 0xa0b8, 0xa0b9, 0xa0ba,
- 0xa0bb, 0xa0bc, 0xa0bd, 0xa0be, 0xa0bf, 0xa0c0, 0xa0c1, 0xa0c2,
- 0xa0c3, 0xa0c4, 0xa0c5, 0xa0c6, 0xa0c7, 0xa0c8, 0xa0c9, 0xa0ca,
- 0xa0cb, 0xa0cc, 0xa0cd, 0xa0ce, 0xa0cf, 0xa0d0, 0xa0d1, 0xa0d2,
- 0xa0d3, 0xa0d4, 0x947a, 0xa0d6, 0xa0d7, 0xa0d8, 0xa0d9, 0xa0da,
- 0xa0db, 0xa0dc, 0xa0dd, 0xa0de, 0xde72, 0xa0e0, 0xa0e1, 0xa0e2,
- 0xa0e3, 0x9455, 0xa0e5, 0xa0e6, 0xa0e7, 0xa0e8, 0xa0e9, 0xa0ea,
- 0xa0eb, 0xa0ec, 0xa0ed, 0xa0ee, 0xa0ef, 0xa0f0, 0xa0f1, 0xa0f2,
- 0xa0f3, 0xa0f4, 0xa0f5, 0xa0f6, 0xa0f7, 0xa0f8, 0xa0f9, 0xa0fa,
- 0xa0fb, 0xa0fc, 0xa0fd, 0xa0fe, 0x8140, 0x8141, 0x8142, 0x8143,
- 0x8144, 0x8145, 0x8146, 0x8147, 0x8148, 0x8149, 0x814a, 0x814b,
- 0x814c, 0x814d, 0x814e, 0x814f, 0x8150, 0x8151, 0x8152, 0x8153,
- 0x8154, 0x8155, 0x8156, 0x8157, 0x8158, 0x8159, 0x815a, 0x815b,
- 0x815c, 0x815d, 0x815e, 0x815f, 0x8160, 0x8161, 0x8162, 0x8163,
- 0x8164, 0x8165, 0x8166, 0x8167, 0x8168, 0x8169, 0x816a, 0x816b,
- 0x816c, 0x816d, 0x816e, 0x816f, 0x8170, 0x8171, 0x8172, 0x8173,
- 0x8174, 0x8175, 0x8176, 0x8177, 0x8178, 0x8179, 0x817a, 0x817b,
- 0x817c, 0x817d, 0x817e, 0x81a1, 0x81a2, 0x81a3, 0x81a4, 0x81a5,
- 0x81a6, 0x81a7, 0x81a8, 0x81a9, 0x81aa, 0x81ab, 0x81ac, 0x81ad,
- 0x81ae, 0x81af, 0x81b0, 0x81b1, 0x81b2, 0x81b3, 0x81b4, 0x81b5,
- 0x81b6, 0x81b7, 0x81b8, 0x81b9, 0x81ba, 0x81bb, 0x81bc, 0x81bd,
- 0x81be, 0x81bf, 0x81c0, 0x81c1, 0x81c2, 0x81c3, 0x81c4, 0x81c5,
- 0x81c6, 0x81c7, 0x81c8, 0x81c9, 0x81ca, 0x81cb, 0x81cc, 0x81cd,
- 0x81ce, 0x81cf, 0x81d0, 0x81d1, 0x81d2, 0x81d3, 0x81d4, 0x81d5,
- 0x81d6, 0x81d7, 0x81d8, 0x81d9, 0x81da, 0x81db, 0x81dc, 0x81dd,
- 0x81de, 0x81df, 0x81e0, 0x81e1, 0x81e2, 0x81e3, 0x81e4, 0x81e5,
- 0x81e6, 0x81e7, 0x81e8, 0x81e9, 0x81ea, 0x81eb, 0x81ec, 0x81ed,
- 0x81ee, 0x81ef, 0x81f0, 0x81f1, 0x81f2, 0x81f3, 0x81f4, 0x81f5,
- 0x81f6, 0x81f7, 0x81f8, 0x81f9, 0x81fa, 0x81fb, 0x81fc, 0x81fd,
- 0x81fe, 0x8240, 0x8241, 0x8242, 0x8243, 0x8244, 0x8245, 0x8246,
- 0x8247, 0x8248, 0x8249, 0x824a, 0x824b, 0x824c, 0x824d, 0x824e,
- 0x824f, 0x8250, 0x8251, 0x8252, 0x8253, 0x8254, 0x8255, 0x8256,
- 0x8257, 0x8258, 0x8259, 0x825a, 0x825b, 0x825c, 0x825d, 0x825e,
- 0x825f, 0x8260, 0x8261, 0x8262, 0x8263, 0x8264, 0x8265, 0x8266,
- 0x8267, 0x8268, 0x8269, 0x826a, 0x826b, 0x826c, 0x826d, 0x826e,
- 0x826f, 0x8270, 0x8271, 0x8272, 0x8273, 0x8274, 0x8275, 0x8276,
- 0x8277, 0x8278, 0x8279, 0x827a, 0x827b, 0x827c, 0x827d, 0x827e,
- 0x82a1, 0x82a2, 0x82a3, 0x82a4, 0x82a5, 0x82a6, 0x82a7, 0x82a8,
- 0x82a9, 0x82aa, 0x82ab, 0x82ac, 0x82ad, 0x82ae, 0x82af, 0x82b0,
- 0x82b1, 0x82b2, 0x82b3, 0x82b4, 0x82b5, 0x82b6, 0x82b7, 0x82b8,
- 0x82b9, 0x82ba, 0x82bb, 0x82bc, 0x82bd, 0x82be, 0x82bf, 0x82c0,
- 0x82c1, 0x82c2, 0x82c3, 0x82c4, 0x82c5, 0x82c6, 0x82c7, 0x82c8,
- 0x82c9, 0x82ca, 0x82cb, 0x82cc, 0x82cd, 0x82ce, 0x82cf, 0x82d0,
- 0x82d1, 0x82d2, 0x82d3, 0x82d4, 0x82d5, 0x82d6, 0x82d7, 0x82d8,
- 0x82d9, 0x82da, 0x82db, 0x82dc, 0x82dd, 0x82de, 0x82df, 0x82e0,
- 0x82e1, 0x82e2, 0x82e3, 0x82e4, 0x82e5, 0x82e6, 0x82e7, 0x82e8,
- 0x82e9, 0x82ea, 0x82eb, 0x82ec, 0x82ed, 0x82ee, 0x82ef, 0x82f0,
- 0x82f1, 0x82f2, 0x82f3, 0x82f4, 0x82f5, 0x82f6, 0x82f7, 0x82f8,
- 0x82f9, 0x82fa, 0x82fb, 0x82fc, 0x82fd, 0x82fe, 0x8340, 0x8341,
- 0x8342, 0x8343, 0x8344, 0x8345, 0x8346, 0x8347, 0x8348, 0x8349,
- 0x834a, 0x834b, 0x834c, 0x834d, 0x834e, 0x834f, 0x8350, 0x8351,
- 0x8352, 0x8353, 0x8354, 0x8355, 0x8356, 0x8357, 0x8358, 0x8359,
- 0x835a, 0x835b, 0x835c, 0x835d, 0x835e, 0x835f, 0x8360, 0x8361,
- 0x8362, 0x8363, 0x8364, 0x8365, 0x8366, 0x8367, 0x8368, 0x8369,
- 0x836a, 0x836b, 0x836c, 0x836d, 0x836e, 0x836f, 0x8370, 0x8371,
- 0x8372, 0x8373, 0x8374, 0x8375, 0x8376, 0x8377, 0x8378, 0x8379,
- 0x837a, 0x837b, 0x837c, 0x837d, 0x837e, 0x83a1, 0x83a2, 0x83a3,
- 0x83a4, 0x83a5, 0x83a6, 0x83a7, 0x83a8, 0x83a9, 0x83aa, 0x83ab,
- 0x83ac, 0x83ad, 0x83ae, 0x83af, 0x83b0, 0x83b1, 0x83b2, 0x83b3,
- 0x83b4, 0x83b5, 0x83b6, 0x83b7, 0x83b8, 0x83b9, 0x83ba, 0x83bb,
- 0x83bc, 0x83bd, 0x83be, 0x83bf, 0x83c0, 0x83c1, 0x83c2, 0x83c3,
- 0x83c4, 0x83c5, 0x83c6, 0x83c7, 0x83c8, 0x83c9, 0x83ca, 0x83cb,
- 0x83cc, 0x83cd, 0x83ce, 0x83cf, 0x83d0, 0x83d1, 0x83d2, 0x83d3,
- 0x83d4, 0x83d5, 0x83d6, 0x83d7, 0x83d8, 0x83d9, 0x83da, 0x83db,
- 0x83dc, 0x83dd, 0x83de, 0x83df, 0x83e0, 0x83e1, 0x83e2, 0x83e3,
- 0x83e4, 0x83e5, 0x83e6, 0x83e7, 0x83e8, 0x83e9, 0x83ea, 0x83eb,
- 0x83ec, 0x83ed, 0x83ee, 0x83ef, 0x83f0, 0x83f1, 0x83f2, 0x83f3,
- 0x83f4, 0x83f5, 0x83f6, 0x83f7, 0x83f8, 0x83f9, 0x83fa, 0x83fb,
- 0x83fc, 0x83fd, 0x83fe, 0x8440, 0x8441, 0x8442, 0x8443, 0x8444,
- 0x8445, 0x8446, 0x8447, 0x8448, 0x8449, 0x844a, 0x844b, 0x844c,
- 0x844d, 0x844e, 0x844f, 0x8450, 0x8451, 0x8452, 0x8453, 0x8454,
- 0x8455, 0x8456, 0x8457, 0x8458, 0x8459, 0x845a, 0x845b, 0x845c,
- 0x845d, 0x845e, 0x845f, 0x8460, 0x8461, 0x8462, 0x8463, 0x8464,
- 0x8465, 0x8466, 0x8467, 0x8468, 0x8469, 0x846a, 0x846b, 0x846c,
- 0x846d, 0x846e, 0x846f, 0x8470, 0x8471, 0x8472, 0x8473, 0x8474,
- 0x8475, 0x8476, 0x8477, 0x8478, 0x8479, 0x847a, 0x847b, 0x847c,
- 0x847d, 0x847e, 0x84a1, 0x84a2, 0x84a3, 0x84a4, 0x84a5, 0x84a6,
- 0x84a7, 0x84a8, 0x84a9, 0x84aa, 0x84ab, 0x84ac, 0x84ad, 0x84ae,
- 0x84af, 0x84b0, 0x84b1, 0x84b2, 0x84b3, 0x84b4, 0x84b5, 0x84b6,
- 0x84b7, 0x84b8, 0x84b9, 0x84ba, 0x84bb, 0x84bc, 0x84bd, 0x84be,
- 0x84bf, 0x84c0, 0x84c1, 0x84c2, 0x84c3, 0x84c4, 0x84c5, 0x84c6,
- 0x84c7, 0x84c8, 0x84c9, 0x84ca, 0x84cb, 0x84cc, 0x84cd, 0x84ce,
- 0x84cf, 0x84d0, 0x84d1, 0x84d2, 0x84d3, 0x84d4, 0x84d5, 0x84d6,
- 0x84d7, 0x84d8, 0x84d9, 0x84da, 0x84db, 0x84dc, 0x84dd, 0x84de,
- 0x84df, 0x84e0, 0x84e1, 0x84e2, 0x84e3, 0x84e4, 0x84e5, 0x84e6,
- 0x84e7, 0x84e8, 0x84e9, 0x84ea, 0x84eb, 0x84ec, 0x84ed, 0x84ee,
- 0x84ef, 0x84f0, 0x84f1, 0x84f2, 0x84f3, 0x84f4, 0x84f5, 0x84f6,
- 0x84f7, 0x84f8, 0x84f9, 0x84fa, 0x84fb, 0x84fc, 0x84fd, 0x84fe,
- 0x8540, 0x8541, 0x8542, 0x8543, 0x8544, 0x8545, 0x8546, 0x8547,
- 0x8548, 0x8549, 0x854a, 0x854b, 0x854c, 0x854d, 0x854e, 0x854f,
- 0x8550, 0x8551, 0x8552, 0x8553, 0x8554, 0x8555, 0x8556, 0x8557,
- 0x8558, 0x8559, 0x855a, 0x855b, 0x855c, 0x855d, 0x855e, 0x855f,
- 0x8560, 0x8561, 0x8562, 0x8563, 0x8564, 0x8565, 0x8566, 0x8567,
- 0x8568, 0x8569, 0x856a, 0x856b, 0x856c, 0x856d, 0x856e, 0x856f,
- 0x8570, 0x8571, 0x8572, 0x8573, 0x8574, 0x8575, 0x8576, 0x8577,
- 0x8578, 0x8579, 0x857a, 0x857b, 0x857c, 0x857d, 0x857e, 0x85a1,
- 0x85a2, 0x85a3, 0x85a4, 0x85a5, 0x85a6, 0x85a7, 0x85a8, 0x85a9,
- 0x85aa, 0x85ab, 0x85ac, 0x85ad, 0x85ae, 0x85af, 0x85b0, 0x85b1,
- 0x85b2, 0x85b3, 0x85b4, 0x85b5, 0x85b6, 0x85b7, 0x85b8, 0x85b9,
- 0x85ba, 0x85bb, 0x85bc, 0x85bd, 0x85be, 0x85bf, 0x85c0, 0x85c1,
- 0x85c2, 0x85c3, 0x85c4, 0x85c5, 0x85c6, 0x85c7, 0x85c8, 0x85c9,
- 0x85ca, 0x85cb, 0x85cc, 0x85cd, 0x85ce, 0x85cf, 0x85d0, 0x85d1,
- 0x85d2, 0x85d3, 0x85d4, 0x85d5, 0x85d6, 0x85d7, 0x85d8, 0x85d9,
- 0x85da, 0x85db, 0x85dc, 0x85dd, 0x85de, 0x85df, 0x85e0, 0x85e1,
- 0x85e2, 0x85e3, 0x85e4, 0x85e5, 0x85e6, 0x85e7, 0x85e8, 0x85e9,
- 0x85ea, 0x85eb, 0x85ec, 0x85ed, 0x85ee, 0x85ef, 0x85f0, 0x85f1,
- 0x85f2, 0x85f3, 0x85f4, 0x85f5, 0x85f6, 0x85f7, 0x85f8, 0x85f9,
- 0x85fa, 0x85fb, 0x85fc, 0x85fd, 0x85fe, 0x8640, 0x8641, 0x8642,
- 0x8643, 0x8644, 0x8645, 0x8646, 0x8647, 0x8648, 0x8649, 0x864a,
- 0x864b, 0x864c, 0x864d, 0x864e, 0x864f, 0x8650, 0x8651, 0x8652,
- 0x8653, 0x8654, 0x8655, 0x8656, 0x8657, 0x8658, 0x8659, 0x865a,
- 0x865b, 0x865c, 0x865d, 0x865e, 0x865f, 0x8660, 0x8661, 0x8662,
- 0x8663, 0x8664, 0x8665, 0x8666, 0x8667, 0x8668, 0x8669, 0x866a,
- 0x866b, 0x866c, 0x866d, 0x866e, 0x866f, 0x8670, 0x8671, 0x8672,
- 0x8673, 0x8674, 0x8675, 0x8676, 0x8677, 0x8678, 0x8679, 0x867a,
- 0x867b, 0x867c, 0x867d, 0x867e, 0x86a1, 0x86a2, 0x86a3, 0x86a4,
- 0x86a5, 0x86a6, 0x86a7, 0x86a8, 0x86a9, 0x86aa, 0x86ab, 0x86ac,
- 0x86ad, 0x86ae, 0x86af, 0x86b0, 0x86b1, 0x86b2, 0x86b3, 0x86b4,
- 0x86b5, 0x86b6, 0x86b7, 0x86b8, 0x86b9, 0x86ba, 0x86bb, 0x86bc,
- 0x86bd, 0x86be, 0x86bf, 0x86c0, 0x86c1, 0x86c2, 0x86c3, 0x86c4,
- 0x86c5, 0x86c6, 0x86c7, 0x86c8, 0x86c9, 0x86ca, 0x86cb, 0x86cc,
- 0x86cd, 0x86ce, 0x86cf, 0x86d0, 0x86d1, 0x86d2, 0x86d3, 0x86d4,
- 0x86d5, 0x86d6, 0x86d7, 0x86d8, 0x86d9, 0x86da, 0x86db, 0x86dc,
- 0x86dd, 0x86de, 0x86df, 0x86e0, 0x86e1, 0x86e2, 0x86e3, 0x86e4,
- 0x86e5, 0x86e6, 0x86e7, 0x86e8, 0x86e9, 0x86ea, 0x86eb, 0x86ec,
- 0x86ed, 0x86ee, 0x86ef, 0x86f0, 0x86f1, 0x86f2, 0x86f3, 0x86f4,
- 0x86f5, 0x86f6, 0x86f7, 0x86f8, 0x86f9, 0x86fa, 0x86fb, 0x86fc,
- 0x86fd, 0x86fe, 0x8740, 0x8741, 0x8742, 0x8743, 0x8744, 0x8745,
- 0x8746, 0x8747, 0x8748, 0x8749, 0x874a, 0x874b, 0x874c, 0x874d,
- 0x874e, 0x874f, 0x8750, 0x8751, 0x8752, 0x8753, 0x8754, 0x8755,
- 0x8756, 0x8757, 0x8758, 0x8759, 0x875a, 0x875b, 0x875c, 0x875d,
- 0x875e, 0x875f, 0x8760, 0x8761, 0x8762, 0x8763, 0x8764, 0x8765,
- 0x8766, 0x8767, 0x8768, 0x8769, 0x876a, 0x876b, 0x876c, 0x876d,
- 0x876e, 0x876f, 0x8770, 0x8771, 0x8772, 0x8773, 0x8774, 0x8775,
- 0x8776, 0x8777, 0x8778, 0x8779, 0x877a, 0x877b, 0x877c, 0x877d,
- 0x877e, 0x87a1, 0x87a2, 0x87a3, 0x87a4, 0x87a5, 0x87a6, 0x87a7,
- 0x87a8, 0x87a9, 0x87aa, 0x87ab, 0x87ac, 0x87ad, 0x87ae, 0x87af,
- 0x87b0, 0x87b1, 0x87b2, 0x87b3, 0x87b4, 0x87b5, 0x87b6, 0x87b7,
- 0x87b8, 0x87b9, 0x87ba, 0x87bb, 0x87bc, 0x87bd, 0x87be, 0x87bf,
- 0x87c0, 0x87c1, 0x87c2, 0x87c3, 0x87c4, 0x87c5, 0x87c6, 0x87c7,
- 0x87c8, 0x87c9, 0x87ca, 0x87cb, 0x87cc, 0x87cd, 0x87ce, 0x87cf,
- 0x87d0, 0x87d1, 0x87d2, 0x87d3, 0x87d4, 0x87d5, 0x87d6, 0x87d7,
- 0x87d8, 0x87d9, 0x87da, 0x87db, 0x87dc, 0x87dd, 0x87de, 0x87df,
- 0x87e0, 0x87e1, 0x87e2, 0x87e3, 0x87e4, 0x87e5, 0x87e6, 0x87e7,
- 0x87e8, 0x87e9, 0x87ea, 0x87eb, 0x87ec, 0x87ed, 0x87ee, 0x87ef,
- 0x87f0, 0x87f1, 0x87f2, 0x87f3, 0x87f4, 0x87f5, 0x87f6, 0x87f7,
- 0x87f8, 0x87f9, 0x87fa, 0x87fb, 0x87fc, 0x87fd, 0x87fe, 0x8840,
- 0x8841, 0x8842, 0x8843, 0x8844, 0x8845, 0x8846, 0x8847, 0x8848,
- 0x8849, 0x884a, 0x884b, 0x884c, 0x884d, 0x884e, 0x884f, 0x8850,
- 0x8851, 0x8852, 0x8853, 0x8854, 0x8855, 0x8856, 0x8857, 0x8858,
- 0x8859, 0x885a, 0x885b, 0x885c, 0x885d, 0x885e, 0x885f, 0x8860,
- 0x8861, 0x8862, 0x8863, 0x8864, 0x8865, 0x8866, 0x8867, 0x8868,
- 0x8869, 0x886a, 0x886b, 0x886c, 0x886d, 0x886e, 0x886f, 0x8870,
- 0x8871, 0x8872, 0x8873, 0x8874, 0x8875, 0x8876, 0x8877, 0x8878,
- 0x8879, 0x887a, 0x887b, 0x887c, 0x887d, 0x887e, 0x88a1, 0x88a2,
- 0x88a3, 0x88a4, 0x88a5, 0x88a6, 0x88a7, 0x88a8, 0x88a9, 0x88aa,
- 0x88ab, 0x88ac, 0x88ad, 0x88ae, 0x88af, 0x88b0, 0x88b1, 0x88b2,
- 0x88b3, 0x88b4, 0x88b5, 0x88b6, 0x88b7, 0x88b8, 0x88b9, 0x88ba,
- 0x88bb, 0x88bc, 0x88bd, 0x88be, 0x88bf, 0x88c0, 0x88c1, 0x88c2,
- 0x88c3, 0x88c4, 0x88c5, 0x88c6, 0x88c7, 0x88c8, 0x88c9, 0x88ca,
- 0x88cb, 0x88cc, 0x88cd, 0x88ce, 0x88cf, 0x88d0, 0x88d1, 0x88d2,
- 0x88d3, 0x88d4, 0x88d5, 0x88d6, 0x88d7, 0x88d8, 0x88d9, 0x88da,
- 0x88db, 0x88dc, 0x88dd, 0x88de, 0x88df, 0x88e0, 0x88e1, 0x88e2,
- 0x88e3, 0x88e4, 0x88e5, 0x88e6, 0x88e7, 0x88e8, 0x88e9, 0x88ea,
- 0x88eb, 0x88ec, 0x88ed, 0x88ee, 0x88ef, 0x88f0, 0x88f1, 0x88f2,
- 0x88f3, 0x88f4, 0x88f5, 0x88f6, 0x88f7, 0x88f8, 0x88f9, 0x88fa,
- 0x88fb, 0x88fc, 0x88fd, 0x88fe, 0x8940, 0x8941, 0x8942, 0x8943,
- 0x8944, 0x8945, 0x8946, 0x8947, 0x8948, 0x8949, 0x894a, 0x894b,
- 0x894c, 0x894d, 0x894e, 0x894f, 0x8950, 0x8951, 0x8952, 0x8953,
- 0x8954, 0x8955, 0x8956, 0x8957, 0x8958, 0x8959, 0x895a, 0x895b,
- 0x895c, 0x895d, 0x895e, 0x895f, 0x8960, 0x8961, 0x8962, 0x8963,
- 0x8964, 0x8965, 0x8966, 0x8967, 0x8968, 0x8969, 0x896a, 0x896b,
- 0x896c, 0x896d, 0x896e, 0x896f, 0x8970, 0x8971, 0x8972, 0x8973,
- 0x8974, 0x8975, 0x8976, 0x8977, 0x8978, 0x8979, 0x897a, 0x897b,
- 0x897c, 0x897d, 0x897e, 0x89a1, 0x89a2, 0x89a3, 0x89a4, 0x89a5,
- 0x89a6, 0x89a7, 0x89a8, 0x89a9, 0x89aa, 0x89ab, 0x89ac, 0x89ad,
- 0x89ae, 0x89af, 0x89b0, 0x89b1, 0x89b2, 0x89b3, 0x89b4, 0x89b5,
- 0x89b6, 0x89b7, 0x89b8, 0x89b9, 0x89ba, 0x89bb, 0x89bc, 0x89bd,
- 0x89be, 0x89bf, 0x89c0, 0x89c1, 0x89c2, 0x89c3, 0x89c4, 0x89c5,
- 0x89c6, 0x89c7, 0x89c8, 0x89c9, 0x89ca, 0x89cb, 0x89cc, 0x89cd,
- 0x89ce, 0x89cf, 0x89d0, 0x89d1, 0x89d2, 0x89d3, 0x89d4, 0x89d5,
- 0x89d6, 0x89d7, 0x89d8, 0x89d9, 0x89da, 0x89db, 0x89dc, 0x89dd,
- 0x89de, 0x89df, 0x89e0, 0x89e1, 0x89e2, 0x89e3, 0x89e4, 0x89e5,
- 0x89e6, 0x89e7, 0x89e8, 0x89e9, 0x89ea, 0x89eb, 0x89ec, 0x89ed,
- 0x89ee, 0x89ef, 0x89f0, 0x89f1, 0x89f2, 0x89f3, 0x89f4, 0x89f5,
- 0x89f6, 0x89f7, 0x89f8, 0x89f9, 0x89fa, 0x89fb, 0x89fc, 0x89fd,
- 0x89fe, 0x8a40, 0x8a41, 0x8a42, 0x8a43, 0x8a44, 0x8a45, 0x8a46,
- 0x8a47, 0x8a48, 0x8a49, 0x8a4a, 0x8a4b, 0x8a4c, 0x8a4d, 0x8a4e,
- 0x8a4f, 0x8a50, 0x8a51, 0x8a52, 0x8a53, 0x8a54, 0x8a55, 0x8a56,
- 0x8a57, 0x8a58, 0x8a59, 0x8a5a, 0x8a5b, 0x8a5c, 0x8a5d, 0x8a5e,
- 0x8a5f, 0x8a60, 0x8a61, 0x8a62, 0x8a63, 0x8a64, 0x8a65, 0x8a66,
- 0x8a67, 0x8a68, 0x8a69, 0x8a6a, 0x8a6b, 0x8a6c, 0x8a6d, 0x8a6e,
- 0x8a6f, 0x8a70, 0x8a71, 0x8a72, 0x8a73, 0x8a74, 0x8a75, 0x8a76,
- 0x8a77, 0x8a78, 0x8a79, 0x8a7a, 0x8a7b, 0x8a7c, 0x8a7d, 0x8a7e,
- 0x8aa1, 0x8aa2, 0x8aa3, 0x8aa4, 0x8aa5, 0x8aa6, 0x8aa7, 0x8aa8,
- 0x8aa9, 0x8aaa, 0x8aab, 0x8aac, 0x8aad, 0x8aae, 0x8aaf, 0x8ab0,
- 0x8ab1, 0x8ab2, 0x8ab3, 0x8ab4, 0x8ab5, 0x8ab6, 0x8ab7, 0x8ab8,
- 0x8ab9, 0x8aba, 0x8abb, 0x8abc, 0x8abd, 0x8abe, 0x8abf, 0x8ac0,
- 0x8ac1, 0x8ac2, 0x8ac3, 0x8ac4, 0x8ac5, 0x8ac6, 0x8ac7, 0x8ac8,
- 0x8ac9, 0x8aca, 0x8acb, 0x8acc, 0x8acd, 0x8ace, 0x8acf, 0x8ad0,
- 0x8ad1, 0x8ad2, 0x8ad3, 0x8ad4, 0x8ad5, 0x8ad6, 0x8ad7, 0x8ad8,
- 0x8ad9, 0x8ada, 0x8adb, 0x8adc, 0x8add, 0x8ade, 0x8adf, 0x8ae0,
- 0x8ae1, 0x8ae2, 0x8ae3, 0x8ae4, 0x8ae5, 0x8ae6, 0x8ae7, 0x8ae8,
- 0x8ae9, 0x8aea, 0x8aeb, 0x8aec, 0x8aed, 0x8aee, 0x8aef, 0x8af0,
- 0x8af1, 0x8af2, 0x8af3, 0x8af4, 0x8af5, 0x8af6, 0x8af7, 0x8af8,
- 0x8af9, 0x8afa, 0x8afb, 0x8afc, 0x8afd, 0x8afe, 0x8b40, 0x8b41,
- 0x8b42, 0x8b43, 0x8b44, 0x8b45, 0x8b46, 0x8b47, 0x8b48, 0x8b49,
- 0x8b4a, 0x8b4b, 0x8b4c, 0x8b4d, 0x8b4e, 0x8b4f, 0x8b50, 0x8b51,
- 0x8b52, 0x8b53, 0x8b54, 0x8b55, 0x8b56, 0x8b57, 0x8b58, 0x8b59,
- 0x8b5a, 0x8b5b, 0x8b5c, 0x8b5d, 0x8b5e, 0x8b5f, 0x8b60, 0x8b61,
- 0x8b62, 0x8b63, 0x8b64, 0x8b65, 0x8b66, 0x8b67, 0x8b68, 0x8b69,
- 0x8b6a, 0x8b6b, 0x8b6c, 0x8b6d, 0x8b6e, 0x8b6f, 0x8b70, 0x8b71,
- 0x8b72, 0x8b73, 0x8b74, 0x8b75, 0x8b76, 0x8b77, 0x8b78, 0x8b79,
- 0x8b7a, 0x8b7b, 0x8b7c, 0x8b7d, 0x8b7e, 0x8ba1, 0x8ba2, 0x8ba3,
- 0x8ba4, 0x8ba5, 0x8ba6, 0x8ba7, 0x8ba8, 0x8ba9, 0x8baa, 0x8bab,
- 0x8bac, 0x8bad, 0x8bae, 0x8baf, 0x8bb0, 0x8bb1, 0x8bb2, 0x8bb3,
- 0x8bb4, 0x8bb5, 0x8bb6, 0x8bb7, 0x8bb8, 0x8bb9, 0x8bba, 0x8bbb,
- 0x8bbc, 0x8bbd, 0x8bbe, 0x8bbf, 0x8bc0, 0x8bc1, 0x8bc2, 0x8bc3,
- 0x8bc4, 0x8bc5, 0x8bc6, 0x8bc7, 0x8bc8, 0x8bc9, 0x8bca, 0x8bcb,
- 0x8bcc, 0x8bcd, 0x8bce, 0x8bcf, 0x8bd0, 0x8bd1, 0x8bd2, 0x8bd3,
- 0x8bd4, 0x8bd5, 0x8bd6, 0x8bd7, 0x8bd8, 0x8bd9, 0x8bda, 0x8bdb,
- 0x8bdc, 0x8bdd, 0x8bde, 0x8bdf, 0x8be0, 0x8be1, 0x8be2, 0x8be3,
- 0x8be4, 0x8be5, 0x8be6, 0x8be7, 0x8be8, 0x8be9, 0x8bea, 0x8beb,
- 0x8bec, 0x8bed, 0x8bee, 0x8bef, 0x8bf0, 0x8bf1, 0x8bf2, 0x8bf3,
- 0x8bf4, 0x8bf5, 0x8bf6, 0x8bf7, 0x8bf8, 0x8bf9, 0x8bfa, 0x8bfb,
- 0x8bfc, 0x8bfd, 0x8bfe, 0x8c40, 0x8c41, 0x8c42, 0x8c43, 0x8c44,
- 0x8c45, 0x8c46, 0x8c47, 0x8c48, 0x8c49, 0x8c4a, 0x8c4b, 0x8c4c,
- 0x8c4d, 0x8c4e, 0x8c4f, 0x8c50, 0x8c51, 0x8c52, 0x8c53, 0x8c54,
- 0x8c55, 0x8c56, 0x8c57, 0x8c58, 0x8c59, 0x8c5a, 0x8c5b, 0x8c5c,
- 0x8c5d, 0x8c5e, 0x8c5f, 0x8c60, 0x8c61, 0x8c62, 0x8c63, 0x8c64,
- 0x8c65, 0x8c66, 0x8c67, 0x8c68, 0x8c69, 0x8c6a, 0x8c6b, 0x8c6c,
- 0x8c6d, 0x8c6e, 0x8c6f, 0x8c70, 0x8c71, 0x8c72, 0x8c73, 0x8c74,
- 0x8c75, 0x8c76, 0x8c77, 0x8c78, 0x8c79, 0x8c7a, 0x8c7b, 0x8c7c,
- 0x8c7d, 0x8c7e, 0x8ca1, 0x8ca2, 0x8ca3, 0x8ca4, 0x8ca5, 0x8ca6,
- 0x8ca7, 0x8ca8, 0x8ca9, 0x8caa, 0x8cab, 0x8cac, 0x8cad, 0x8cae,
- 0x8caf, 0x8cb0, 0x8cb1, 0x8cb2, 0x8cb3, 0x8cb4, 0x8cb5, 0x8cb6,
- 0x8cb7, 0x8cb8, 0x8cb9, 0x8cba, 0x8cbb, 0x8cbc, 0x8cbd, 0x8cbe,
- 0x8cbf, 0x8cc0, 0x8cc1, 0x8cc2, 0x8cc3, 0x8cc4, 0x8cc5, 0x8cc6,
- 0x8cc7, 0x8cc8, 0x8cc9, 0x8cca, 0x8ccb, 0x8ccc, 0x8ccd, 0x8cce,
- 0x8ccf, 0x8cd0, 0x8cd1, 0x8cd2, 0x8cd3, 0x8cd4, 0x8cd5, 0x8cd6,
- 0x8cd7, 0x8cd8, 0x8cd9, 0x8cda, 0x8cdb, 0x8cdc, 0x8cdd, 0x8cde,
- 0x8cdf, 0x8ce0, 0x8ce1, 0x8ce2, 0x8ce3, 0x8ce4, 0x8ce5, 0x8ce6,
- 0x8ce7, 0x8ce8, 0x8ce9, 0x8cea, 0x8ceb, 0x8cec, 0x8ced, 0x8cee,
- 0x8cef, 0x8cf0, 0x8cf1, 0x8cf2, 0x8cf3, 0x8cf4, 0x8cf5, 0x8cf6,
- 0x8cf7, 0x8cf8, 0x8cf9, 0x8cfa, 0x8cfb, 0x8cfc, 0x8cfd, 0x8cfe,
- 0x8d40, 0x8d41, 0x8d42, 0x8d43, 0x8d44, 0x8d45, 0x8d46, 0x8d47,
- 0x8d48, 0x8d49, 0x8d4a, 0x8d4b, 0x8d4c, 0x8d4d, 0x8d4e, 0x8d4f,
- 0x8d50, 0x8d51, 0x8d52, 0x8d53, 0x8d54, 0x8d55, 0x8d56, 0x8d57,
- 0x8d58, 0x8d59, 0x8d5a, 0x8d5b, 0x8d5c, 0x8d5d, 0x8d5e, 0x8d5f,
- 0x8d60, 0x8d61, 0x8d62, 0x8d63, 0x8d64, 0x8d65, 0x8d66, 0x8d67,
- 0x8d68, 0x8d69, 0x8d6a, 0x8d6b, 0x8d6c, 0x8d6d, 0x8d6e, 0x8d6f,
- 0x8d70, 0x8d71, 0x8d72, 0x8d73, 0x8d74, 0x8d75, 0x8d76, 0x8d77,
- 0x8d78, 0x8d79, 0x8d7a, 0x8d7b, 0x8d7c, 0x8d7d, 0x8d7e, 0x8da1,
- 0x8da2, 0x8da3, 0x8da4, 0x8da5, 0x8da6, 0x8da7, 0x8da8, 0x8da9,
- 0x8daa, 0x8dab, 0x8dac, 0x8dad, 0x8dae, 0x8daf, 0x8db0, 0x8db1,
- 0x8db2, 0x8db3, 0x8db4, 0x8db5, 0x8db6, 0x8db7, 0x8db8, 0x8db9,
- 0x8dba, 0x8dbb, 0x8dbc, 0x8dbd, 0x8dbe, 0x8dbf, 0x8dc0, 0x8dc1,
- 0x8dc2, 0x8dc3, 0x8dc4, 0x8dc5, 0x8dc6, 0x8dc7, 0x8dc8, 0x8dc9,
- 0x8dca, 0x8dcb, 0x8dcc, 0x8dcd, 0x8dce, 0x8dcf, 0x8dd0, 0x8dd1,
- 0x8dd2, 0x8dd3, 0x8dd4, 0x8dd5, 0x8dd6, 0x8dd7, 0x8dd8, 0x8dd9,
- 0x8dda, 0x8ddb, 0x8ddc, 0x8ddd, 0x8dde, 0x8ddf, 0x8de0, 0x8de1,
- 0x8de2, 0x8de3, 0x8de4, 0x8de5, 0x8de6, 0x8de7, 0x8de8, 0x8de9,
- 0x8dea, 0x8deb, 0x8dec, 0x8ded, 0x8dee, 0x8def, 0x8df0, 0x8df1,
- 0x8df2, 0x8df3, 0x8df4, 0x8df5, 0x8df6, 0x8df7, 0x8df8, 0x8df9,
- 0x8dfa, 0x8dfb, 0x8dfc, 0x8dfd, 0x8dfe, 0xc6a1, 0xc6a2, 0xc6a3,
- 0xc6a4, 0xc6a5, 0xc6a6, 0xc6a7, 0xc6a8, 0xc6a9, 0xc6aa, 0xc6ab,
- 0xc6ac, 0xc6ad, 0xc6ae, 0xc6af, 0xc6b0, 0xc6b1, 0xc6b2, 0xc6b3,
- 0xc6b4, 0xc6b5, 0xc6b6, 0xc6b7, 0xc6b8, 0xc6b9, 0xc6ba, 0xc6bb,
- 0xc6bc, 0xc6bd, 0xc6be, 0xc6bf, 0xc6c0, 0xc6c1, 0xc6c2, 0xc6c3,
- 0xc6c4, 0xc6c5, 0xc6c6, 0xc6c7, 0xc6c8, 0xc6c9, 0xc6ca, 0xc6cb,
- 0xc6cc, 0xc6cd, 0xc6ce, 0xc6cf, 0xc6d0, 0xc6d1, 0xc6d2, 0xc6d3,
- 0xc6d4, 0xc6d5, 0xc6d6, 0xc6d7, 0xc6d8, 0xc6d9, 0xc6da, 0xc6db,
- 0xc6dc, 0xc6dd, 0xc6de, 0xc6df, 0xc6e0, 0xc6e1, 0xc6e2, 0xc6e3,
- 0xc6e4, 0xc6e5, 0xc6e6, 0xc6e7, 0xc6e8, 0xc6e9, 0xc6ea, 0xc6eb,
- 0xc6ec, 0xc6ed, 0xc6ee, 0xc6ef, 0xc6f0, 0xc6f1, 0xc6f2, 0xc6f3,
- 0xc6f4, 0xc6f5, 0xc6f6, 0xc6f7, 0xc6f8, 0xc6f9, 0xc6fa, 0xc6fb,
- 0xc6fc, 0xc6fd, 0xc6fe, 0xc740, 0xc741, 0xc742, 0xc743, 0xc744,
- 0xc745, 0xc746, 0xc747, 0xc748, 0xc749, 0xc74a, 0xc74b, 0xc74c,
- 0xc74d, 0xc74e, 0xc74f, 0xc750, 0xc751, 0xc752, 0xc753, 0xc754,
- 0xc755, 0xc756, 0xc757, 0xc758, 0xc759, 0xc75a, 0xc75b, 0xc75c,
- 0xc75d, 0xc75e, 0xc75f, 0xc760, 0xc761, 0xc762, 0xc763, 0xc764,
- 0xc765, 0xc766, 0xc767, 0xc768, 0xc769, 0xc76a, 0xc76b, 0xc76c,
- 0xc76d, 0xc76e, 0xc76f, 0xc770, 0xc771, 0xc772, 0xc773, 0xc774,
- 0xc775, 0xc776, 0xc777, 0xc778, 0xc779, 0xc77a, 0xc77b, 0xc77c,
- 0xc77d, 0xc77e, 0xc7a1, 0xc7a2, 0xc7a3, 0xc7a4, 0xc7a5, 0xc7a6,
- 0xc7a7, 0xc7a8, 0xc7a9, 0xc7aa, 0xc7ab, 0xc7ac, 0xc7ad, 0xc7ae,
- 0xc7af, 0xc7b0, 0xc7b1, 0xc7b2, 0xc7b3, 0xc7b4, 0xc7b5, 0xc7b6,
- 0xc7b7, 0xc7b8, 0xc7b9, 0xc7ba, 0xc7bb, 0xc7bc, 0xc7bd, 0xc7be,
- 0xc7bf, 0xc7c0, 0xc7c1, 0xc7c2, 0xc7c3, 0xc7c4, 0xc7c5, 0xc7c6,
- 0xc7c7, 0xc7c8, 0xc7c9, 0xc7ca, 0xc7cb, 0xc7cc, 0xc7cd, 0xc7ce,
- 0xc7cf, 0xc7d0, 0xc7d1, 0xc7d2, 0xc7d3, 0xc7d4, 0xc7d5, 0xc7d6,
- 0xc7d7, 0xc7d8, 0xc7d9, 0xc7da, 0xc7db, 0xc7dc, 0xc7dd, 0xc7de,
- 0xc7df, 0xc7e0, 0xc7e1, 0xc7e2, 0xc7e3, 0xc7e4, 0xc7e5, 0xc7e6,
- 0xc7e7, 0xc7e8, 0xc7e9, 0xc7ea, 0xc7eb, 0xc7ec, 0xc7ed, 0xc7ee,
- 0xc7ef, 0xc7f0, 0xc7f1, 0xc7f2, 0xc7f3, 0xc7f4, 0xc7f5, 0xc7f6,
- 0xc7f7, 0xc7f8, 0xc7f9, 0xc7fa, 0xc7fb, 0xc7fc, 0xc7fd, 0xc7fe,
- 0xc840, 0xc841, 0xc842, 0xc843, 0xc844, 0xc845, 0xc846, 0xc847,
- 0xc848, 0xc849, 0xc84a, 0xc84b, 0xc84c, 0xc84d, 0xc84e, 0xc84f,
- 0xc850, 0xc851, 0xc852, 0xc853, 0xc854, 0xc855, 0xc856, 0xc857,
- 0xc858, 0xc859, 0xc85a, 0xc85b, 0xc85c, 0xc85d, 0xc85e, 0xc85f,
- 0xc860, 0xc861, 0xc862, 0xc863, 0xc864, 0xc865, 0xc866, 0xc867,
- 0xc868, 0xc869, 0xc86a, 0xc86b, 0xc86c, 0xc86d, 0xc86e, 0xc86f,
- 0xc870, 0xc871, 0xc872, 0xc873, 0xc874, 0xc875, 0xc876, 0xc877,
- 0xc878, 0xc879, 0xc87a, 0xc87b, 0xc87c, 0xc87d, 0xc87e, 0xc8a1,
- 0xc8a2, 0xc8a3, 0xc8a4, 0xc8a5, 0xc8a6, 0xc8a7, 0xc8a8, 0xc8a9,
- 0xc8aa, 0xc8ab, 0xc8ac, 0xc8ad, 0xc8ae, 0xc8af, 0xc8b0, 0xc8b1,
- 0xc8b2, 0xc8b3, 0xc8b4, 0xc8b5, 0xc8b6, 0xc8b7, 0xc8b8, 0xc8b9,
- 0xc8ba, 0xc8bb, 0xc8bc, 0xc8bd, 0xc8be, 0xc8bf, 0xc8c0, 0xc8c1,
- 0xc8c2, 0xc8c3, 0xc8c4, 0xc8c5, 0xc8c6, 0xc8c7, 0xc8c8, 0xc8c9,
- 0xc8ca, 0xc8cb, 0xc8cc, 0xc8cd, 0xc8ce, 0xc8cf, 0xc8d0, 0xc8d1,
- 0xc8d2, 0xc8d3, 0xc8d4, 0xc8d5, 0xc8d6, 0xc8d7, 0xc8d8, 0xc8d9,
- 0xc8da, 0xc8db, 0xc8dc, 0xc8dd, 0xc8de, 0xc8df, 0xc8e0, 0xc8e1,
- 0xc8e2, 0xc8e3, 0xc8e4, 0xc8e5, 0xc8e6, 0xc8e7, 0xc8e8, 0xc8e9,
- 0xc8ea, 0xc8eb, 0xc8ec, 0xc8ed, 0xc8ee, 0xc8ef, 0xc8f0, 0xc8f1,
- 0xc8f2, 0xc8f3, 0xc8f4, 0xc8f5, 0xc8f6, 0xc8f7, 0xc8f8, 0xc8f9,
- 0xc8fa, 0xc8fb, 0xc8fc, 0xc8fd, 0xc8fe, 0xb05a, 0xa7f3, 0xa8ae,
- 0xb8eb, 0xb7c6, 0xa6ea, 0xa579, 0x8bf8, 0xc074, 0xabb4, 0xaaf7,
- 0xb3e2, 0xa960, 0xc369, 0xc4ee, 0xc3b9, 0xc5da, 0xc1b3, 0xbb72,
- 0xc5de, 0xbcd6, 0xaca5, 0xaf4f, 0xaf5f, 0xb8a8, 0xb954, 0xc064,
- 0xb6c3, 0xa75a, 0xc4e6, 0xc4ea, 0xc4f5, 0xc67d, 0xb450, 0xc0dd,
- 0xc2c5, 0xc4b0, 0xa9d4, 0xc3be, 0xc4fa, 0xb459, 0xaed4, 0xaef6,
- 0xaf54, 0xa8d3, 0xa74e, 0xb3d2, 0xbedb, 0xc372, 0xc46c, 0xbf63,
- 0xa6d1, 0xc4aa, 0xb8b8, 0xb8f4, 0xc553, 0xbe7c, 0xc64f, 0xb84c,
- 0xb853, 0xbaf1, 0xdb77, 0xbffd, 0xb3c0, 0xbdd7, 0xc362, 0xa7cb,
- 0xc5a2, 0xc5a4, 0xa863, 0xbd55, 0xb8ef, 0xb970, 0xc253, 0xb9f0,
- 0xbcd3, 0xb25c, 0xba7c, 0xb2d6, 0xc15c, 0xadae, 0xb0c7, 0xa6d8,
- 0xbbfe, 0xade2, 0xb857, 0xbaf0, 0xb5d9, 0xb3ae, 0xc5aa, 0xced4,
- 0xbcd6, 0xbfd5, 0xa4a6, 0xb9e7, 0xabe3, 0xb276, 0xb2a7, 0xa55f,
- 0xeda8, 0xab4b, 0xb45f, 0xa4a3, 0xaa63, 0xbcc6, 0xafc1, 0xb0d1,
- 0xb6eb, 0xacd9, 0xb8ad, 0xbba1, 0xb1fe, 0xa8b0, 0xa848, 0xac42,
- 0xad59, 0xb1b0, 0xb2a4, 0xab47, 0xa8e2, 0xb1e7, 0xc2b3, 0xa87d,
- 0xbdcc, 0xb671, 0xc079, 0xa766, 0xa46b, 0xc366, 0xaec8, 0xc26f,
- 0xc472, 0xbe5b, 0xc67a, 0xc452, 0xbea4, 0xa44f, 0xbee4, 0xbefa,
- 0xf765, 0xa67e, 0xbca6, 0xc5ca, 0xbcbf, 0xbaa7, 0xb7d2, 0xe6a3,
- 0xbd6d, 0xc170, 0xbdfb, 0xbdac, 0xb373, 0xc1e5, 0xa643, 0xa648,
- 0xab7c, 0xaf50, 0xb5f5, 0xbba1, 0xb747, 0xa9c0, 0xb1c9, 0xc0d4,
- 0xc3ae, 0xc279, 0xa54f, 0xcbf1, 0xb9e7, 0xc0ad, 0xccb0, 0xacc2,
- 0xbcfc, 0xb2dc, 0xb2e2, 0xb961, 0xb973, 0xc646, 0xbbe2, 0xa8d2,
- 0xc2a7, 0xc4bf, 0xc1f5, 0xb463, 0xa446, 0xb9b1, 0xbc64, 0xa7bf,
- 0xaec6, 0xbcd6, 0xbf52, 0xc0f8, 0xe764, 0xbff1, 0xc073, 0xb777,
- 0xa8bf, 0xbc42, 0xccd8, 0xac68, 0xac79, 0xb7c8, 0xaf5b, 0xaf64,
- 0xb2b8, 0xafc3, 0xc3fe, 0xa4bb, 0xbcae, 0xb3b0, 0xaddb, 0xb15b,
- 0xb25f, 0xbdfc, 0xabdf, 0xb758, 0xaedf, 0xb276, 0xb6a9, 0xa751,
- 0xa64f, 0xbc69, 0xa9f6, 0xa7f5, 0xb1f9, 0xaa64, 0xb27a, 0xb567,
- 0xbfa9, 0xb8cc, 0xa8bd, 0xc2f7, 0xb0ce, 0xb7c4, 0xa75b, 0xbf4d,
- 0xbf5a, 0xc4a9, 0xc5ec, 0xc5ef, 0xaa4c, 0xb24f, 0xc17b, 0xa5df,
- 0xb2c1, 0xb2c9, 0xaaac, 0xaaa5, 0xc3d1, 0xa4b0, 0xaff9, 0xa8eb,
- 0xa4c1, 0xabd7, 0xa9dd, 0xbf7d, 0xa676, 0xac7d, 0xbcc9, 0xbfe7,
- 0xa6e6, 0xadb0, 0xa8a3, 0xb9f8, 0xc94a, 0xddfc, 0xb6ef, 0xb4b8,
- 0xe8f9, 0xbdde, 0xaf71, 0xafab, 0xb2bb, 0xbad6, 0xb974, 0xbaeb,
- 0xa6d0, 0xbdd1, 0xb668, 0xb3a3, 0xb6ba, 0xb97d, 0xc05d, 0xc562,
- 0xa14a, 0xa157, 0xa159, 0xa15b, 0xa15f, 0xa160, 0xa163, 0xa164,
- 0xa167, 0xa168, 0xa16b, 0xa16c, 0xa16f, 0xa170, 0xa173, 0xa174,
- 0xa177, 0xa178, 0xa17b, 0xa17c, 0xa1c6, 0xa1c7, 0xa1ca, 0xa1cb,
- 0xa1c8, 0xa1c9, 0xa15c, 0xa14d, 0xa14e, 0xa14f, 0xa151, 0xa152,
- 0xa153, 0xa154, 0xa17d, 0xa17e, 0xa1a1, 0xa1a2, 0xa1a3, 0xa1a4,
- 0xa1cc, 0xa1cd, 0xa1ce, 0xa1de, 0xa1df, 0xa1e0, 0xa1e1, 0xa1e2,
- 0xa242, 0xa24c, 0xa24d, 0xa24e, 0xa149, 0xc8d0, 0xa1ad, 0xa243,
- 0xa248, 0xa1ae, 0xc8cf, 0xa15d, 0xa15e, 0xa1af, 0xa1cf, 0xa141,
- 0xa1d0, 0xa144, 0xa1fe, 0xa2af, 0xa2b0, 0xa2b1, 0xa2b2, 0xa2b3,
- 0xa2b4, 0xa2b5, 0xa2b6, 0xa2b7, 0xa2b8, 0xa147, 0xa146, 0xa1d5,
- 0xa1d7, 0xa1d6, 0xa148, 0xa249, 0xa2cf, 0xa2d0, 0xa2d1, 0xa2d2,
- 0xa2d3, 0xa2d4, 0xa2d5, 0xa2d6, 0xa2d7, 0xa2d8, 0xa2d9, 0xa2da,
- 0xa2db, 0xa2dc, 0xa2dd, 0xa2de, 0xa2df, 0xa2e0, 0xa2e1, 0xa2e2,
- 0xa2e3, 0xa2e4, 0xa2e5, 0xa2e6, 0xa2e7, 0xa2e8, 0xc6e4, 0xa240,
- 0xc6e5, 0xa173, 0xa1c4, 0xa1a5, 0xa2e9, 0xa2ea, 0xa2eb, 0xa2ec,
- 0xa2ed, 0xa2ee, 0xa2ef, 0xa2f0, 0xa2f1, 0xa2f2, 0xa2f3, 0xa2f4,
- 0xa2f5, 0xa2f6, 0xa2f7, 0xa2f8, 0xa2f9, 0xa2fa, 0xa2fb, 0xa2fc,
- 0xa2fd, 0xa2fe, 0xa340, 0xa341, 0xa342, 0xa343, 0xa161, 0xa155,
- 0xa162, 0xa1e3, 0xa14e, 0xa246, 0xa247, 0xc8cd, 0xa1c3, 0xc8ce,
- 0xa244, 0xf9fe,
-};
-
-static const Summary16 big5hkscs_uni2indx_page00[16] = {
- /* 0x0000 */
- { 0, 0x0000 }, { 0, 0x0000 }, { 0, 0x0000 }, { 0, 0x0000 },
- { 0, 0x0000 }, { 0, 0x0000 }, { 0, 0x0000 }, { 0, 0x0000 },
- { 0, 0x0000 }, { 0, 0x0000 }, { 0, 0x81ac }, { 6, 0x01b3 },
- { 12, 0x0703 }, { 17, 0x008c }, { 20, 0x3703 }, { 27, 0x178c },
-};
-static const Summary16 big5hkscs_uni2indx_page02[29] = {
- /* 0x0200 */
- { 56, 0x0000 }, { 56, 0x0000 }, { 56, 0x0000 }, { 56, 0x0000 },
- { 56, 0x0000 }, { 56, 0x0813 }, { 60, 0x0402 }, { 62, 0x0020 },
- { 63, 0x0408 }, { 65, 0x0000 }, { 65, 0x0000 }, { 65, 0x0000 },
- { 65, 0x2ec0 }, { 71, 0x0200 }, { 72, 0x0000 }, { 72, 0x0000 },
- /* 0x0300 */
- { 72, 0x0020 }, { 73, 0x0000 }, { 73, 0x0000 }, { 73, 0x0000 },
- { 73, 0x0000 }, { 73, 0x0000 }, { 73, 0x0000 }, { 73, 0x0000 },
- { 73, 0x0000 }, { 73, 0xfffe }, { 88, 0x03fb }, { 97, 0xfffe },
- { 112, 0x03fb },
-};
-static const Summary16 big5hkscs_uni2indx_page20[44] = {
- /* 0x2000 */
- { 191, 0x0000 }, { 191, 0x3378 }, { 199, 0x00f4 }, { 204, 0x482c },
- { 209, 0x0000 }, { 209, 0x0000 }, { 209, 0x0000 }, { 209, 0x0000 },
- { 209, 0x0000 }, { 209, 0x0000 }, { 209, 0x0000 }, { 209, 0x0000 },
- { 209, 0x0000 }, { 209, 0x0000 }, { 209, 0x0000 }, { 209, 0x0000 },
- /* 0x2100 */
- { 209, 0x0228 }, { 212, 0x0040 }, { 213, 0x0002 }, { 214, 0x0000 },
- { 214, 0x0000 }, { 214, 0x0000 }, { 214, 0x03ff }, { 224, 0x03ff },
- { 234, 0x0000 }, { 234, 0x03cf }, { 242, 0x0000 }, { 242, 0x0300 },
- { 244, 0x0000 }, { 244, 0x0000 }, { 244, 0x0080 }, { 245, 0x0000 },
- /* 0x2200 */
- { 245, 0x0000 }, { 245, 0xc560 }, { 251, 0x4e29 }, { 258, 0x0030 },
- { 260, 0x0000 }, { 260, 0x0004 }, { 261, 0x00cb }, { 266, 0x0000 },
- { 266, 0x0000 }, { 266, 0x0220 }, { 268, 0x0020 }, { 269, 0x8000 },
-};
-static const Summary16 big5hkscs_uni2indx_page25[21] = {
- /* 0x2500 */
- { 291, 0x1005 }, { 294, 0x1111 }, { 298, 0x1010 }, { 300, 0x1010 },
- { 302, 0x0000 }, { 302, 0xffff }, { 318, 0xffff }, { 334, 0x001f },
- { 339, 0xfffe }, { 354, 0x0038 }, { 357, 0x0003 }, { 359, 0x300c },
- { 363, 0xc8c0 }, { 368, 0x0000 }, { 368, 0x003c }, { 372, 0x0000 },
- /* 0x2600 */
- { 372, 0x0260 }, { 375, 0x0000 }, { 375, 0x0000 }, { 375, 0x0000 },
- { 375, 0x0007 },
-};
-static const Summary16 big5hkscs_uni2indx_page30[62] = {
- /* 0x3000 */
- { 408, 0xffef }, { 423, 0x7037 }, { 431, 0x03fe }, { 440, 0x0001 },
- { 441, 0xfffe }, { 456, 0xffff }, { 472, 0xffff }, { 488, 0xffff },
- { 504, 0xffff }, { 520, 0x780f }, { 528, 0xfffe }, { 543, 0xffff },
- { 559, 0xffff }, { 575, 0xffff }, { 591, 0xffff }, { 607, 0x707f },
- /* 0x3100 */
- { 617, 0xffe0 }, { 628, 0xffff }, { 644, 0x03ff }, { 654, 0x0000 },
- { 654, 0x0000 }, { 654, 0x0000 }, { 654, 0x0000 }, { 654, 0x0000 },
- { 654, 0x0000 }, { 654, 0xfffc }, { 668, 0x0000 }, { 668, 0x0000 },
- { 668, 0x0000 }, { 668, 0x0000 }, { 668, 0x0000 }, { 668, 0x0000 },
- /* 0x3200 */
- { 668, 0x0000 }, { 668, 0x0000 }, { 668, 0xffff }, { 684, 0xffff },
- { 700, 0x000f }, { 704, 0x0000 }, { 704, 0x0000 }, { 704, 0x0000 },
- { 704, 0xffff }, { 720, 0xffff }, { 736, 0xffff }, { 752, 0x0001 },
- { 753, 0x0000 }, { 753, 0x0000 }, { 753, 0x0000 }, { 753, 0x0000 },
- /* 0x3300 */
- { 753, 0x0000 }, { 753, 0x0000 }, { 753, 0x0000 }, { 753, 0x0000 },
- { 753, 0x0000 }, { 753, 0x0000 }, { 753, 0x0000 }, { 753, 0x0000 },
- { 753, 0xc000 }, { 755, 0x7000 }, { 758, 0x0002 }, { 759, 0x0000 },
- { 759, 0x4010 }, { 761, 0x0026 },
-};
-static const Summary16 big5hkscs_uni2indx_page4e[1307] = {
- /* 0x4e00 */
- { 1275, 0xff9b }, { 1288, 0xd773 }, { 1299, 0xfd52 }, { 1309, 0xbbcf },
- { 1321, 0xebac }, { 1331, 0xff4c }, { 1342, 0x0600 }, { 1344, 0xc108 },
- { 1348, 0x7bff }, { 1362, 0xcf3e }, { 1373, 0x797f }, { 1385, 0x9ec8 },
- { 1393, 0x6fdf }, { 1406, 0xf7f0 }, { 1417, 0x4f3a }, { 1426, 0xa9ff },
- /* 0x4f00 */
- { 1438, 0xef3f }, { 1451, 0x27bf }, { 1462, 0xb304 }, { 1468, 0xffdd },
- { 1482, 0xfbee }, { 1495, 0xffff }, { 1511, 0xde9f }, { 1523, 0xfffd },
- { 1538, 0xafff }, { 1552, 0x7df7 }, { 1565, 0xc904 }, { 1570, 0xaeed },
- { 1581, 0xffbf }, { 1596, 0xffdb }, { 1610, 0xd033 }, { 1617, 0x67ff },
- /* 0x5000 */
- { 1630, 0xfbe9 }, { 1642, 0xdffe }, { 1656, 0xffef }, { 1671, 0x18bb },
- { 1679, 0xffeb }, { 1693, 0xfdea }, { 1705, 0xff7f }, { 1720, 0x24fd },
- { 1729, 0x79af }, { 1740, 0x7f77 }, { 1753, 0xf04c }, { 1760, 0xfdff },
- { 1775, 0xeff6 }, { 1788, 0xaefb }, { 1800, 0xf7fb }, { 1814, 0xfb7b },
- /* 0x5100 */
- { 1827, 0x7fff }, { 1842, 0x95bf }, { 1853, 0x6e77 }, { 1864, 0xbfbf },
- { 1878, 0x3bfb }, { 1890, 0xfef4 }, { 1902, 0x7faf }, { 1915, 0x13f2 },
- { 1923, 0xa7c5 }, { 1932, 0x55fe }, { 1943, 0x5db5 }, { 1953, 0x73ff },
- { 1966, 0xfff8 }, { 1979, 0xf99f }, { 1991, 0x2017 }, { 1996, 0x777b },
- /* 0x5200 */
- { 2008, 0x5fef }, { 2021, 0xf0cf }, { 2031, 0x47f3 }, { 2041, 0x1dff },
- { 2053, 0x7eda }, { 2064, 0xfef4 }, { 2076, 0xff07 }, { 2087, 0xbfbc },
- { 2099, 0xbf9f }, { 2112, 0x8fdb }, { 2123, 0x7f5b }, { 2135, 0x5a20 },
- { 2140, 0x32af }, { 2149, 0xebef }, { 2162, 0x8a5f }, { 2171, 0xdfbb },
- /* 0x5300 */
- { 2184, 0xef62 }, { 2194, 0xb6e7 }, { 2205, 0xb49f }, { 2215, 0xfb9f },
- { 2228, 0x77bf }, { 2241, 0xf49e }, { 2251, 0xf2db }, { 2262, 0xfbbf },
- { 2276, 0xc414 }, { 2281, 0xf7dc }, { 2293, 0x7ff5 }, { 2306, 0x0a55 },
- { 2312, 0x3f2e }, { 2322, 0x8fd7 }, { 2333, 0xff7f }, { 2348, 0x59ef },
- /* 0x5400 */
- { 2359, 0xffda }, { 2372, 0xff5f }, { 2386, 0xfffb }, { 2401, 0x7bff },
- { 2415, 0xedef }, { 2428, 0x0010 }, { 2429, 0xbfff }, { 2444, 0xfdff },
- { 2459, 0xf9f7 }, { 2472, 0x55ff }, { 2484, 0xffff }, { 2500, 0xffdf },
- { 2515, 0xfbff }, { 2530, 0x4441 }, { 2534, 0xefff }, { 2549, 0xbd8e },
- /* 0x5500 */
- { 2559, 0xfffe }, { 2574, 0x459f }, { 2583, 0xfde8 }, { 2594, 0xdbff },
- { 2608, 0xeffb }, { 2622, 0xf0ef }, { 2633, 0x0e7e }, { 2642, 0xfaee },
- { 2654, 0xffdf }, { 2669, 0xb73f }, { 2681, 0x7ffe }, { 2695, 0x9e3f },
- { 2706, 0xffff }, { 2722, 0xffff }, { 2738, 0x97fe }, { 2750, 0xfee7 },
- /* 0x5600 */
- { 2763, 0xf377 }, { 2775, 0xf8ff }, { 2788, 0xf6af }, { 2800, 0xeffd },
- { 2814, 0xf76f }, { 2827, 0x679d }, { 2837, 0xff7f }, { 2852, 0xdfdf },
- { 2866, 0xfeff }, { 2881, 0xf7ad }, { 2893, 0xfdf2 }, { 2905, 0xf2fe },
- { 2917, 0x3f6f }, { 2929, 0xecda }, { 2939, 0xecb7 }, { 2950, 0xa683 },
- /* 0x5700 */
- { 2957, 0x3f9f }, { 2969, 0xfd7c }, { 2981, 0xf70d }, { 2991, 0xe81d },
- { 2999, 0xfeef }, { 3013, 0x8897 }, { 3020, 0xafd6 }, { 3031, 0xfcff },
- { 3045, 0xbd0d }, { 3054, 0xffb9 }, { 3067, 0x44bf }, { 3076, 0xff70 },
- { 3087, 0xd9de }, { 3098, 0xf0b5 }, { 3107, 0xf2ff }, { 3120, 0x7fff },
- /* 0x5800 */
- { 3135, 0x7fff }, { 3150, 0x7a15 }, { 3158, 0xf7ff }, { 3173, 0xafff },
- { 3187, 0xff91 }, { 3198, 0xffbe }, { 3212, 0xbb3c }, { 3222, 0xfe7e },
- { 3235, 0xcfef }, { 3248, 0xf71f }, { 3260, 0xdfeb }, { 3273, 0xfc6b },
- { 3284, 0xcbe6 }, { 3294, 0xff7f }, { 3309, 0x9b9d }, { 3319, 0xfe1d },
- /* 0x5900 */
- { 3330, 0xf4fc }, { 3341, 0x96f6 }, { 3351, 0xfeb5 }, { 3363, 0x5196 },
- { 3370, 0xc7b1 }, { 3379, 0x15bb }, { 3388, 0x6ea7 }, { 3398, 0xfbff },
- { 3413, 0xe63f }, { 3424, 0xe7dd }, { 3436, 0xd1ff }, { 3448, 0x7fff },
- { 3463, 0xfffb }, { 3478, 0x7f5f }, { 3491, 0xff7b }, { 3505, 0xffff },
- /* 0x5a00 */
- { 3521, 0xbe0f }, { 3531, 0xdfee }, { 3544, 0x7ebb }, { 3556, 0x73e8 },
- { 3565, 0x37ff }, { 3578, 0xffff }, { 3594, 0x7fff }, { 3609, 0xff83 },
- { 3620, 0xdd5e }, { 3631, 0xfeff }, { 3646, 0xdae7 }, { 3657, 0xffff },
- { 3673, 0xffdf }, { 3688, 0xffe8 }, { 3700, 0x7f7f }, { 3714, 0xeffd },
- /* 0x5b00 */
- { 3728, 0xbbae }, { 3739, 0xeefb }, { 3752, 0xfdfb }, { 3766, 0xf115 },
- { 3774, 0xfdfb }, { 3788, 0xbdfb }, { 3801, 0x7b7c }, { 3812, 0xbdff },
- { 3826, 0xdbbf }, { 3839, 0xffed }, { 3853, 0x75fc }, { 3864, 0x8379 },
- { 3872, 0x7cff }, { 3885, 0xc3ff }, { 3897, 0xdfff }, { 3912, 0x856f },
- /* 0x5c00 */
- { 3921, 0xffba }, { 3934, 0xd47f }, { 3945, 0x153d }, { 3953, 0xdf8b },
- { 3964, 0xfff3 }, { 3978, 0x737b }, { 3989, 0xf7bd }, { 4002, 0x5e1a },
- { 4010, 0xbf60 }, { 4019, 0xf63f }, { 4031, 0xffff }, { 4047, 0x05eb },
- { 4055, 0xdfc6 }, { 4066, 0xcfdf }, { 4079, 0xf720 }, { 4087, 0xabf3 },
- /* 0x5d00 */
- { 4098, 0xf8c3 }, { 4107, 0xeff7 }, { 4121, 0xd3fd }, { 4133, 0xf7ff },
- { 4148, 0x5fef }, { 4161, 0x4ae7 }, { 4170, 0x9bac }, { 4179, 0xfe97 },
- { 4191, 0x6ff7 }, { 4204, 0xf6bc }, { 4215, 0xff97 }, { 4228, 0x37f7 },
- { 4240, 0xaacf }, { 4250, 0xe9f6 }, { 4261, 0x49e7 }, { 4270, 0xe2bf },
- /* 0x5e00 */
- { 4281, 0x5e5c }, { 4290, 0xaff6 }, { 4302, 0x6b3f }, { 4313, 0x61d8 },
- { 4320, 0xfd3f }, { 4333, 0xfbb8 }, { 4344, 0xffcf }, { 4358, 0xff7d },
- { 4372, 0xbfdd }, { 4385, 0x1ee4 }, { 4393, 0x7dfd }, { 4406, 0x63ff },
- { 4418, 0x7ff6 }, { 4431, 0xffff }, { 4447, 0xd3ef }, { 4459, 0xdfde },
- /* 0x5f00 */
- { 4472, 0xfdb6 }, { 4484, 0xadbc }, { 4494, 0x63fc }, { 4504, 0x15eb },
- { 4513, 0xff59 }, { 4525, 0x33d3 }, { 4534, 0xbebe }, { 4546, 0xfbdf },
- { 4560, 0x1fef }, { 4572, 0xdbc7 }, { 4583, 0xfff3 }, { 4597, 0xfee6 },
- { 4609, 0xb23f }, { 4619, 0xebf7 }, { 4632, 0xed3b }, { 4643, 0xadba },
- /* 0x6000 */
- { 4653, 0xfe01 }, { 4661, 0x7eff }, { 4675, 0xffff }, { 4691, 0x0abe },
- { 4699, 0x36ff }, { 4711, 0xef3d }, { 4723, 0xfffc }, { 4737, 0xc0a5 },
- { 4743, 0x77fb }, { 4756, 0xfcf5 }, { 4768, 0x019d }, { 4774, 0xffff },
- { 4790, 0xfffb }, { 4805, 0xffba }, { 4818, 0x03df }, { 4827, 0xffff },
- /* 0x6100 */
- { 4843, 0xfffb }, { 4858, 0xbf7d }, { 4871, 0xdb8c }, { 4880, 0xe8d5 },
- { 4889, 0xfff7 }, { 4904, 0xff7d }, { 4918, 0xddff }, { 4932, 0x76ff },
- { 4945, 0x7e8f }, { 4956, 0xbf7f }, { 4970, 0xff96 }, { 4982, 0xd7ff },
- { 4996, 0xbfef }, { 5010, 0xc549 }, { 5017, 0x6ffd }, { 5030, 0xffe7 },
- /* 0x6200 */
- { 5044, 0x779b }, { 5055, 0x8e77 }, { 5065, 0x7ebf }, { 5078, 0xe6dd },
- { 5089, 0x7fcf }, { 5102, 0x5f1f }, { 5113, 0xe17f }, { 5124, 0xfedf },
- { 5138, 0xd7ff }, { 5152, 0x21ff }, { 5162, 0xff50 }, { 5172, 0xfb7b },
- { 5185, 0xfffc }, { 5199, 0x9fff }, { 5213, 0xf820 }, { 5219, 0xffff },
- /* 0x6300 */
- { 5235, 0xfb8f }, { 5247, 0x017b }, { 5254, 0xff00 }, { 5262, 0x7ffe },
- { 5276, 0xffff }, { 5292, 0x07f3 }, { 5301, 0xfbb0 }, { 5311, 0xbfe7 },
- { 5324, 0xffbf }, { 5339, 0xfbd7 }, { 5352, 0xffbf }, { 5367, 0x6203 },
- { 5372, 0xffff }, { 5388, 0xffef }, { 5403, 0xefff }, { 5418, 0x5b7f },
- /* 0x6400 */
- { 5430, 0xfec0 }, { 5439, 0xddfd }, { 5452, 0xfdff }, { 5467, 0xeffd },
- { 5481, 0x680b }, { 5487, 0xff1f }, { 5500, 0xfbe3 }, { 5512, 0xbfff },
- { 5527, 0xbfa4 }, { 5537, 0xf7ef }, { 5551, 0xfa7d }, { 5563, 0xf85f },
- { 5574, 0xeebf }, { 5587, 0x2fdd }, { 5598, 0xbfff }, { 5613, 0xfd9f },
- /* 0x6500 */
- { 5626, 0xf6db }, { 5638, 0xfbfb }, { 5652, 0xfe7f }, { 5666, 0xebfd },
- { 5679, 0xa76a }, { 5688, 0xf3fa }, { 5700, 0xbdfc }, { 5712, 0x9ffc },
- { 5724, 0x1bff }, { 5736, 0xfaf7 }, { 5749, 0xddb7 }, { 5761, 0xfbed },
- { 5774, 0xf87e }, { 5785, 0xecdf }, { 5797, 0xf36f }, { 5809, 0xbc3f },
- /* 0x6600 */
- { 5820, 0xfffd }, { 5835, 0xf13f }, { 5846, 0xe9ff }, { 5859, 0x067f },
- { 5868, 0x9fbe }, { 5880, 0xfe8e }, { 5891, 0xddfe }, { 5904, 0x7fdf },
- { 5918, 0x7ff1 }, { 5930, 0xa7f7 }, { 5942, 0xef17 }, { 5953, 0xefff },
- { 5968, 0xffd1 }, { 5980, 0x7f44 }, { 5989, 0x7b59 }, { 5999, 0xd3df },
- /* 0x6700 */
- { 6011, 0xff3f }, { 6025, 0xebfd }, { 6038, 0x7def }, { 6051, 0xff7a },
- { 6064, 0xfbf0 }, { 6075, 0xf6eb }, { 6087, 0xbc87 }, { 6096, 0xffff },
- { 6112, 0xfafa }, { 6124, 0xb7bf }, { 6137, 0xd011 }, { 6142, 0x8fff },
- { 6155, 0xff7f }, { 6170, 0xffdf }, { 6185, 0xfefc }, { 6198, 0xd7ff },
- /* 0x6800 */
- { 6212, 0x201f }, { 6218, 0xfddd }, { 6231, 0xef67 }, { 6243, 0x7ffe },
- { 6257, 0xffff }, { 6273, 0x207b }, { 6280, 0xe820 }, { 6285, 0xfbf6 },
- { 6298, 0x9fff }, { 6312, 0xb9df }, { 6324, 0xffdf }, { 6339, 0x227f },
- { 6348, 0x7ff8 }, { 6360, 0xf5ff }, { 6374, 0xdfdb }, { 6387, 0x3fff },
- /* 0x6900 */
- { 6401, 0xffff }, { 6417, 0x0fbf }, { 6428, 0x9420 }, { 6432, 0xfbfd },
- { 6446, 0xdf7f }, { 6460, 0xfffe }, { 6475, 0xffff }, { 6491, 0x0fff },
- { 6503, 0x646d }, { 6511, 0xdffb }, { 6525, 0xffff }, { 6541, 0xfaff },
- { 6555, 0xfe5f }, { 6568, 0x027b }, { 6575, 0x7bf6 }, { 6587, 0xffde },
- /* 0x6a00 */
- { 6601, 0xbfff }, { 6616, 0xfffa }, { 6630, 0x39eb }, { 6640, 0xff3c },
- { 6652, 0xfbfb }, { 6666, 0xefff }, { 6681, 0xafff }, { 6695, 0xc452 },
- { 6701, 0xf6bf }, { 6714, 0xfeff }, { 6729, 0xf9ff }, { 6743, 0x6ffe },
- { 6756, 0xbfec }, { 6768, 0xff1b }, { 6780, 0xdda3 }, { 6790, 0x1f4b },
- /* 0x6b00 */
- { 6799, 0x8f3d }, { 6809, 0x67cf }, { 6820, 0xb12b }, { 6828, 0xfffe },
- { 6843, 0x7fee }, { 6856, 0xdaf7 }, { 6868, 0xa4ff }, { 6879, 0xcfd4 },
- { 6889, 0xf75f }, { 6902, 0xcbf2 }, { 6912, 0xecfd }, { 6924, 0xb4ed },
- { 6934, 0xbffb }, { 6948, 0x5ddd }, { 6959, 0x9ddf }, { 6971, 0xff8d },
- /* 0x6c00 */
- { 6983, 0xbb7f }, { 6996, 0xbf7b }, { 7009, 0xddfb }, { 7022, 0xeffb },
- { 7036, 0xfe4f }, { 7048, 0xffb5 }, { 7061, 0xefe3 }, { 7073, 0xef7f },
- { 7087, 0xffff }, { 7103, 0xbf7d }, { 7116, 0xfc04 }, { 7123, 0xffdf },
- { 7138, 0xfeff }, { 7153, 0xfeff }, { 7168, 0xffaf }, { 7182, 0x822f },
- /* 0x6d00 */
- { 7189, 0xffff }, { 7205, 0xefc7 }, { 7217, 0xfff5 }, { 7231, 0xffff },
- { 7247, 0x4007 }, { 7251, 0xdf80 }, { 7259, 0xf7ff }, { 7274, 0xfff7 },
- { 7289, 0xffff }, { 7305, 0x01ff }, { 7314, 0xdc30 }, { 7321, 0xffbe },
- { 7335, 0xbff5 }, { 7348, 0xffff }, { 7364, 0xff7f }, { 7379, 0x7eff },
- /* 0x6e00 */
- { 7393, 0x843d }, { 7400, 0xbf20 }, { 7408, 0xffff }, { 7424, 0xff7f },
- { 7439, 0xeefb }, { 7452, 0xff7f }, { 7467, 0xcbff }, { 7480, 0x13de },
- { 7489, 0xeb40 }, { 7496, 0xffdd }, { 7510, 0xccff }, { 7522, 0xffff },
- { 7538, 0xffff }, { 7554, 0x3f7f }, { 7567, 0xfb04 }, { 7575, 0xfff6 },
- /* 0x6f00 */
- { 7589, 0xffff }, { 7605, 0xd7fc }, { 7617, 0xfeff }, { 7632, 0xffff },
- { 7648, 0xc01b }, { 7654, 0xfdff }, { 7669, 0xfedf }, { 7683, 0xffdd },
- { 7697, 0x7ff7 }, { 7711, 0xe0fd }, { 7721, 0xffff }, { 7737, 0xff7f },
- { 7752, 0xffdf }, { 7767, 0xff38 }, { 7778, 0xfbdf }, { 7792, 0xddd7 },
- /* 0x7000 */
- { 7804, 0xfefb }, { 7818, 0xfff2 }, { 7831, 0x9fdf }, { 7844, 0xdfbf },
- { 7858, 0x3f7f }, { 7871, 0xfdf7 }, { 7885, 0x9fff }, { 7899, 0xf7f3 },
- { 7912, 0xce7e }, { 7923, 0x877e }, { 7933, 0xfafb }, { 7946, 0x7fbb },
- { 7959, 0xfdf1 }, { 7971, 0xf7ff }, { 7986, 0x8017 }, { 7991, 0xfffb },
- /* 0x7100 */
- { 8006, 0x7e75 }, { 8017, 0xfe89 }, { 8027, 0xdb6f }, { 8039, 0x4c7f },
- { 8049, 0xfeff }, { 8064, 0xf75f }, { 8077, 0x5fff }, { 8091, 0x7def },
- { 8104, 0xd7f7 }, { 8117, 0xffd7 }, { 8131, 0xb7bf }, { 8144, 0xf7bf },
- { 8158, 0xcfff }, { 8172, 0xbf77 }, { 8185, 0x79f7 }, { 8197, 0xfb77 },
- /* 0x7200 */
- { 8210, 0xf6ef }, { 8223, 0xeef9 }, { 8235, 0x7fdc }, { 8247, 0xef61 },
- { 8257, 0x9fd7 }, { 8269, 0xffed }, { 8283, 0xd6cf }, { 8294, 0xfbdd },
- { 8307, 0xfbf7 }, { 8321, 0xedff }, { 8335, 0xf7fe }, { 8349, 0xa435 },
- { 8356, 0x7e7f }, { 8369, 0x97d7 }, { 8380, 0x0f5f }, { 8390, 0xffd8 },
- /* 0x7300 */
- { 8402, 0x9d97 }, { 8412, 0x7bcf }, { 8424, 0x7fec }, { 8436, 0xdfff },
- { 8451, 0xf73f }, { 8464, 0xef87 }, { 8475, 0xdfe7 }, { 8488, 0xfdff },
- { 8503, 0xdfff }, { 8518, 0xf1fc }, { 8529, 0x3ff7 }, { 8542, 0xdffc },
- { 8555, 0xffed }, { 8569, 0x7ffd }, { 8583, 0xefff }, { 8598, 0xfff8 },
- /* 0x7400 */
- { 8611, 0x3fff }, { 8625, 0xfef6 }, { 8638, 0xff7f }, { 8653, 0x97ff },
- { 8666, 0xefff }, { 8681, 0xfeff }, { 8696, 0xffbd }, { 8710, 0xf67f },
- { 8723, 0x3fef }, { 8736, 0xdfb5 }, { 8748, 0xaffb }, { 8761, 0xeff7 },
- { 8775, 0x9d2f }, { 8785, 0xfff9 }, { 8799, 0x53ff }, { 8811, 0xe9f7 },
- /* 0x7500 */
- { 8823, 0xf9bd }, { 8835, 0xf7ff }, { 8850, 0xff66 }, { 8862, 0xefbf },
- { 8876, 0xfdc5 }, { 8887, 0xbe3a }, { 8897, 0xfcfd }, { 8910, 0xe7c5 },
- { 8920, 0xfcd9 }, { 8931, 0x6737 }, { 8941, 0x0cbc }, { 8948, 0xff7f },
- { 8963, 0xfdbf }, { 8977, 0xffb7 }, { 8991, 0xa0df }, { 9000, 0xffff },
- /* 0x7600 */
- { 9016, 0xbf8f }, { 9028, 0xfe7b }, { 9041, 0xb3ff }, { 9054, 0x3d3f },
- { 9065, 0xf3cd }, { 9076, 0x97df }, { 9088, 0xf6f7 }, { 9101, 0xff7f },
- { 9116, 0xcfd6 }, { 9127, 0x7e6d }, { 9138, 0xec72 }, { 9147, 0xedb1 },
- { 9157, 0x777c }, { 9168, 0xfe5c }, { 9179, 0xf6fa }, { 9191, 0x5fbf },
- /* 0x7700 */
- { 9204, 0xdfba }, { 9216, 0xee2f }, { 9227, 0xabfd }, { 9239, 0x7ffe },
- { 9253, 0xfcf9 }, { 9265, 0xdf74 }, { 9276, 0xffef }, { 9291, 0xff84 },
- { 9301, 0xfbbf }, { 9315, 0xffaa }, { 9327, 0xbdaf }, { 9339, 0xfeff },
- { 9354, 0xfebc }, { 9366, 0x7fb9 }, { 9378, 0xf3ed }, { 9390, 0x7f9f },
- /* 0x7800 */
- { 9403, 0xf36c }, { 9413, 0xf11f }, { 9423, 0xffef }, { 9438, 0x33bf },
- { 9449, 0x7fbc }, { 9461, 0x701f }, { 9469, 0xff75 }, { 9482, 0xde03 },
- { 9490, 0xf3fb }, { 9503, 0xc7fa }, { 9514, 0xbfbf }, { 9528, 0x5f5f },
- { 9540, 0xffba }, { 9553, 0xedbf }, { 9566, 0xf7bf }, { 9580, 0xfebf },
- /* 0x7900 */
- { 9594, 0x5276 }, { 9602, 0x7a9f }, { 9613, 0xfffa }, { 9627, 0xff7e },
- { 9641, 0x9ff7 }, { 9654, 0xffff }, { 9670, 0x2fbf }, { 9682, 0xf61f },
- { 9693, 0xedcf }, { 9705, 0xbfff }, { 9720, 0x7ff7 }, { 9734, 0xefdf },
- { 9748, 0xfb73 }, { 9760, 0xf176 }, { 9770, 0x7edd }, { 9782, 0x0dd2 },
- /* 0x7a00 */
- { 9789, 0x3d7d }, { 9800, 0xdfbf }, { 9814, 0xed45 }, { 9823, 0xfe83 },
- { 9833, 0x7ff9 }, { 9846, 0x9dd0 }, { 9854, 0x7ba7 }, { 9865, 0xef73 },
- { 9877, 0x9ffb }, { 9890, 0xc3ff }, { 9902, 0xdf0d }, { 9912, 0xddff },
- { 9926, 0x8fbf }, { 9938, 0xbf0a }, { 9947, 0xeefd }, { 9960, 0xeec0 },
- /* 0x7b00 */
- { 9968, 0xdf73 }, { 9980, 0xef1f }, { 9992, 0xfffd }, { 10007, 0x0b3f },
- { 10016, 0xfffd }, { 10031, 0x0177 }, { 10038, 0xf2ff }, { 10051, 0x09ff },
- { 10061, 0xfdb4 }, { 10072, 0x3bf7 }, { 10084, 0xb01f }, { 10092, 0x43b6 },
- { 10100, 0xded3 }, { 10111, 0xff31 }, { 10122, 0x1fff }, { 10135, 0xff9f },
- /* 0x7c00 */
- { 10149, 0xfeef }, { 10163, 0xfa27 }, { 10173, 0x3fef }, { 10186, 0xfba9 },
- { 10197, 0x37bd }, { 10208, 0xbedb }, { 10220, 0xfef9 }, { 10233, 0xff3d },
- { 10246, 0x777b }, { 10258, 0xd1f6 }, { 10268, 0xd1ee }, { 10278, 0xff3e },
- { 10291, 0x7fac }, { 10302, 0xf6ff }, { 10316, 0xf5c5 }, { 10326, 0x7bff },
- /* 0x7d00 */
- { 10340, 0xffff }, { 10356, 0xffff }, { 10372, 0xdb27 }, { 10382, 0xff6f },
- { 10396, 0xe4ff }, { 10408, 0xfd7f }, { 10422, 0xefce }, { 10434, 0xbe0f },
- { 10444, 0xfb7b }, { 10457, 0xf0de }, { 10467, 0xffdf }, { 10482, 0xffbf },
- { 10497, 0xfef7 }, { 10511, 0xff9d }, { 10524, 0xd7fb }, { 10537, 0x6eff },
- /* 0x7e00 */
- { 10550, 0xff88 }, { 10560, 0xfcff }, { 10574, 0xeebf }, { 10587, 0xffff },
- { 10603, 0x13ff }, { 10614, 0xdfff }, { 10629, 0xffaf }, { 10643, 0xfffd },
- { 10658, 0xfdc7 }, { 10670, 0x9ffe }, { 10683, 0x1010 }, { 10685, 0x0400 },
- { 10686, 0x8080 }, { 10688, 0x8000 }, { 10689, 0x0000 }, { 10689, 0x0000 },
- /* 0x7f00 */
- { 10689, 0x0040 }, { 10690, 0x0000 }, { 10690, 0x0000 }, { 10690, 0xe7c0 },
- { 10698, 0xffbb }, { 10712, 0xf93f }, { 10724, 0x7feb }, { 10737, 0xffef },
- { 10752, 0xffe8 }, { 10764, 0x7cfe }, { 10776, 0xf3ff }, { 10790, 0xffff },
- { 10806, 0xfeaf }, { 10819, 0xf8b7 }, { 10830, 0xffef }, { 10845, 0xffbf },
- /* 0x8000 */
- { 10860, 0xf9ff }, { 10874, 0xfbf7 }, { 10888, 0xd773 }, { 10899, 0xfafb },
- { 10912, 0x85c8 }, { 10918, 0x7d57 }, { 10929, 0x90de }, { 10937, 0xe3ef },
- { 10949, 0x9ef5 }, { 10960, 0xbf6d }, { 10972, 0xeeae }, { 10983, 0x35f6 },
- { 10993, 0xf7fc }, { 11006, 0x7ff3 }, { 11019, 0xb27b }, { 11029, 0x7f7f },
- /* 0x8100 */
- { 11043, 0x57ef }, { 11055, 0xeff4 }, { 11067, 0xbebe }, { 11079, 0x6695 },
- { 11087, 0xfddc }, { 11099, 0x5e7f }, { 11111, 0xeaf7 }, { 11123, 0x97df },
- { 11135, 0xbfdd }, { 11148, 0xffa8 }, { 11159, 0x5fed }, { 11171, 0xfeff },
- { 11186, 0xb7ff }, { 11200, 0xefa7 }, { 11212, 0xf7ff }, { 11227, 0xdfdc },
- /* 0x8200 */
- { 11239, 0x3fb7 }, { 11251, 0xfd77 }, { 11264, 0xbf67 }, { 11276, 0xf7fc },
- { 11289, 0xcab5 }, { 11298, 0xdfff }, { 11313, 0xfb7e }, { 11326, 0xfff6 },
- { 11340, 0xecb9 }, { 11350, 0xef1f }, { 11362, 0xffff }, { 11378, 0xfffb },
- { 11393, 0x841d }, { 11399, 0xdbff }, { 11413, 0xfdff }, { 11428, 0xffff },
- /* 0x8300 */
- { 11444, 0x3bff }, { 11457, 0x7fc0 }, { 11466, 0xbff5 }, { 11479, 0xbffe },
- { 11493, 0xffbf }, { 11508, 0x00df }, { 11515, 0x804c }, { 11519, 0xfdf8 },
- { 11531, 0xffea }, { 11544, 0x7fff }, { 11559, 0xdffd }, { 11573, 0xe201 },
- { 11578, 0xffff }, { 11594, 0xfbfa }, { 11607, 0xffbf }, { 11622, 0xff7f },
- /* 0x8400 */
- { 11637, 0xfefa }, { 11650, 0x195f }, { 11659, 0xfa5b }, { 11670, 0xffff },
- { 11686, 0x7ffd }, { 11700, 0xffff }, { 11716, 0xfbff }, { 11731, 0xe7ff },
- { 11745, 0xe145 }, { 11752, 0xffdf }, { 11767, 0xff9f }, { 11781, 0xff57 },
- { 11794, 0xfef7 }, { 11808, 0x4cdf }, { 11818, 0xdfb6 }, { 11830, 0xffdf },
- /* 0x8500 */
- { 11845, 0xffed }, { 11859, 0xf7ff }, { 11874, 0xfffb }, { 11889, 0x691b },
- { 11897, 0x7fff }, { 11912, 0xeffe }, { 11926, 0xffff }, { 11942, 0x5feb },
- { 11954, 0xffff }, { 11970, 0xfff3 }, { 11984, 0x87df }, { 11995, 0xe7fb },
- { 12008, 0xebff }, { 12022, 0xf7e7 }, { 12035, 0xff7f }, { 12050, 0xffc7 },
- /* 0x8600 */
- { 12063, 0xbef7 }, { 12076, 0xdfd3 }, { 12088, 0xf7ff }, { 12103, 0xdf7e },
- { 12116, 0x79ed }, { 12127, 0xda7d }, { 12138, 0xffbe }, { 12152, 0x5e9f },
- { 12163, 0x7ce0 }, { 12171, 0x77ff }, { 12185, 0xa7bf }, { 12197, 0xffff },
- { 12213, 0x1bff }, { 12225, 0xffdb }, { 12239, 0xbf5c }, { 12250, 0x4fe0 },
- /* 0x8700 */
- { 12258, 0x7fff }, { 12273, 0x5f0e }, { 12282, 0x77ff }, { 12296, 0xddbf },
- { 12309, 0xf04f }, { 12318, 0xffff }, { 12334, 0xffff }, { 12350, 0x2ffb },
- { 12362, 0xbbfe }, { 12375, 0xfddf }, { 12389, 0xfe3c }, { 12400, 0xffff },
- { 12416, 0x5f7f }, { 12429, 0xffde }, { 12443, 0xfdff }, { 12458, 0xdefc },
- /* 0x8800 */
- { 12470, 0xbf7f }, { 12484, 0xbbfb }, { 12497, 0xffff }, { 12513, 0xfbef },
- { 12527, 0xfd7f }, { 12541, 0x6eec }, { 12551, 0xefbf }, { 12565, 0xf2f7 },
- { 12577, 0xfb9f }, { 12590, 0xdfef }, { 12604, 0x5d97 }, { 12614, 0xf7f6 },
- { 12627, 0xfea7 }, { 12639, 0xfff5 }, { 12653, 0xd9c2 }, { 12661, 0xffff },
- /* 0x8900 */
- { 12677, 0x5ee7 }, { 12688, 0xc7ff }, { 12701, 0xfefe }, { 12715, 0x79ef },
- { 12727, 0xbade }, { 12738, 0xffdf }, { 12753, 0xfe7f }, { 12767, 0xdede },
- { 12779, 0x8fef }, { 12791, 0xf9fa }, { 12803, 0xf6fe }, { 12816, 0xf6c4 },
- { 12825, 0x0043 }, { 12828, 0xbe7c }, { 12839, 0x3bff }, { 12852, 0xdddf },
- /* 0x8a00 */
- { 12865, 0xd59d }, { 12875, 0xf9ef }, { 12888, 0x3eac }, { 12897, 0xff53 },
- { 12909, 0xf773 }, { 12921, 0x4bf7 }, { 12932, 0x7bcf }, { 12944, 0xdeff },
- { 12958, 0xb8fe }, { 12969, 0x577f }, { 12981, 0x8ffb }, { 12993, 0xff55 },
- { 13005, 0xabfd }, { 13017, 0xfffe }, { 13032, 0xedd7 }, { 13044, 0xddff },
- /* 0x8b00 */
- { 13058, 0xfdf7 }, { 13072, 0xffff }, { 13088, 0xfdfd }, { 13102, 0xfeeb },
- { 13115, 0xffef }, { 13130, 0xf7ff }, { 13145, 0xbfed }, { 13158, 0xef91 },
- { 13168, 0x5d7f }, { 13180, 0xdf7d }, { 13193, 0x0001 }, { 13194, 0x4000 },
- { 13195, 0x0000 }, { 13195, 0x0000 }, { 13195, 0x0004 }, { 13196, 0x0000 },
- /* 0x8c00 */
- { 13196, 0x0000 }, { 13196, 0x0000 }, { 13196, 0x0000 }, { 13196, 0xfa80 },
- { 13203, 0xffee }, { 13217, 0xb4f3 }, { 13227, 0xbf76 }, { 13239, 0x2fef },
- { 13251, 0xb677 }, { 13262, 0xffbf }, { 13277, 0xbfbf }, { 13291, 0xfffd },
- { 13306, 0xb5bf }, { 13318, 0xfefe }, { 13332, 0x7fff }, { 13347, 0x7fbf },
- /* 0x8d00 */
- { 13361, 0xbffd }, { 13375, 0x3bff }, { 13388, 0x0000 }, { 13388, 0x0000 },
- { 13388, 0x0000 }, { 13388, 0x0000 }, { 13388, 0xfbd0 }, { 13398, 0x2fdd },
- { 13409, 0xf637 }, { 13420, 0x9a7f }, { 13431, 0xffeb }, { 13445, 0xd6fc },
- { 13456, 0xf9ef }, { 13469, 0xbffb }, { 13483, 0xdfdf }, { 13497, 0xf41f },
- /* 0x8e00 */
- { 13507, 0xe6ff }, { 13520, 0xffff }, { 13536, 0x6fff }, { 13550, 0xf77b },
- { 13563, 0xfff7 }, { 13578, 0xfef9 }, { 13591, 0xb7ff }, { 13605, 0x5dfe },
- { 13617, 0x7ff7 }, { 13631, 0xe5ff }, { 13644, 0x3ffb }, { 13657, 0x3645 },
- { 13664, 0xfe0d }, { 13674, 0xfd9e }, { 13686, 0xfbf7 }, { 13700, 0xdff6 },
- /* 0x8f00 */
- { 13713, 0x6fef }, { 13726, 0xffff }, { 13742, 0xf679 }, { 13753, 0xcbfd },
- { 13765, 0xefff }, { 13780, 0xffff }, { 13796, 0x40df }, { 13804, 0x0000 },
- { 13804, 0x0000 }, { 13804, 0x9808 }, { 13808, 0xe1e9 }, { 13817, 0xdfff },
- { 13832, 0xfe76 }, { 13844, 0x04ff }, { 13853, 0x6d7f }, { 13865, 0xfff1 },
- /* 0x9000 */
- { 13878, 0xb97f }, { 13890, 0xfef7 }, { 13904, 0xe01f }, { 13912, 0xf1fe },
- { 13924, 0xfe96 }, { 13935, 0x7b7f }, { 13948, 0xfb9f }, { 13961, 0xfffd },
- { 13976, 0xadff }, { 13989, 0xcbb3 }, { 13999, 0xc5ef }, { 14010, 0xe97f },
- { 14022, 0x4dba }, { 14031, 0xbff0 }, { 14042, 0xbf3f }, { 14055, 0xfe3f },
- /* 0x9100 */
- { 14068, 0xebff }, { 14082, 0xffd7 }, { 14096, 0xffdf }, { 14111, 0xcf7f },
- { 14124, 0xfffb }, { 14139, 0xd7ef }, { 14152, 0xd7bf }, { 14165, 0x17fd },
- { 14176, 0xfeff }, { 14191, 0xfe0f }, { 14202, 0xffaf }, { 14216, 0x7eff },
- { 14230, 0xfaff }, { 14244, 0xb7fb }, { 14257, 0x7ffc }, { 14270, 0xe7fa },
- /* 0x9200 */
- { 14282, 0xf7ff }, { 14297, 0x56ff }, { 14309, 0x6dfa }, { 14320, 0xf7ff },
- { 14335, 0xff73 }, { 14348, 0xedff }, { 14362, 0xf8ff }, { 14375, 0xffc5 },
- { 14387, 0xffff }, { 14403, 0x3ffa }, { 14415, 0x5fff }, { 14429, 0xdefe },
- { 14442, 0xffff }, { 14458, 0xebbf }, { 14471, 0xdffb }, { 14485, 0xffdf },
- /* 0x9300 */
- { 14500, 0xfbdf }, { 14514, 0xef7d }, { 14527, 0xffff }, { 14543, 0x137b },
- { 14552, 0xffff }, { 14568, 0xdff7 }, { 14582, 0x7fff }, { 14597, 0x7ffb },
- { 14611, 0xf7ff }, { 14626, 0xfff7 }, { 14641, 0xf7ff }, { 14656, 0xa9bf },
- { 14667, 0xfddd }, { 14680, 0xffff }, { 14696, 0x51df }, { 14706, 0xfffb },
- /* 0x9400 */
- { 14721, 0xffdb }, { 14735, 0x2bff }, { 14747, 0x7ff1 }, { 14759, 0xffef },
- { 14774, 0xbffd }, { 14788, 0x69b7 }, { 14798, 0xffbd }, { 14812, 0xfbff },
- { 14827, 0x002f }, { 14832, 0x8000 }, { 14833, 0x0004 }, { 14834, 0x0000 },
- { 14834, 0x000a }, { 14836, 0x1000 }, { 14837, 0x0000 }, { 14837, 0x0040 },
- /* 0x9500 */
- { 14838, 0x0000 }, { 14838, 0x0000 }, { 14838, 0x2000 }, { 14839, 0x0000 },
- { 14839, 0x0080 }, { 14840, 0x0000 }, { 14840, 0x0000 }, { 14840, 0xbd80 },
- { 14847, 0xfb6d }, { 14859, 0xdbdf }, { 14872, 0x7fff }, { 14887, 0xfee3 },
- { 14899, 0x3fe9 }, { 14910, 0xdc7f }, { 14922, 0x013f }, { 14929, 0x0010 },
- /* 0x9600 */
- { 14930, 0x0000 }, { 14930, 0x7000 }, { 14933, 0xf51f }, { 14944, 0xbf0f },
- { 14955, 0xfc3f }, { 14967, 0xf95b }, { 14978, 0xbe1e }, { 14988, 0x79ff },
- { 15001, 0xeffb }, { 15015, 0x5bfe }, { 15027, 0x57be }, { 15038, 0xbb5b },
- { 15049, 0x7fff }, { 15064, 0xfffc }, { 15078, 0x872e }, { 15086, 0xaff7 },
- /* 0x9700 */
- { 15099, 0xebfd }, { 15112, 0xfb4f }, { 15124, 0xdfff }, { 15139, 0xe767 },
- { 15150, 0x0bdf }, { 15160, 0xfde6 }, { 15172, 0x7747 }, { 15182, 0xfddf },
- { 15196, 0xefbf }, { 15210, 0xff90 }, { 15220, 0x7d7f }, { 15233, 0xefde },
- { 15246, 0xfbff }, { 15261, 0xf3fd }, { 15274, 0x606b }, { 15281, 0xef6f },
- /* 0x9800 */
- { 15294, 0xf5ff }, { 15308, 0xf9ff }, { 15322, 0xebdb }, { 15334, 0x0bbd },
- { 15343, 0xfffa }, { 15357, 0xfb8f }, { 15369, 0x9ffd }, { 15382, 0x003f },
- { 15388, 0x0000 }, { 15388, 0x0000 }, { 15388, 0xf300 }, { 15394, 0xffde },
- { 15408, 0x5fdf }, { 15421, 0xd800 }, { 15425, 0xbeef }, { 15438, 0x7676 },
- /* 0x9900 */
- { 15448, 0x57ad }, { 15458, 0xdfff }, { 15473, 0xffb2 }, { 15485, 0xffaf },
- { 15499, 0x7faf }, { 15512, 0xfbff }, { 15527, 0x000e }, { 15530, 0x0000 },
- { 15530, 0x0000 }, { 15530, 0x7bc0 }, { 15538, 0xfdfa }, { 15551, 0x3f3f },
- { 15563, 0xfabe }, { 15575, 0xbfff }, { 15590, 0x76ff }, { 15603, 0xfff3 },
- /* 0x9a00 */
- { 15617, 0xfefe }, { 15631, 0xfe73 }, { 15643, 0xfeff }, { 15658, 0xfff7 },
- { 15673, 0xf77f }, { 15687, 0xdffd }, { 15701, 0x1ffd }, { 15713, 0x0000 },
- { 15713, 0x8000 }, { 15714, 0x0000 }, { 15714, 0xa900 }, { 15718, 0xffdf },
- { 15733, 0xa4c7 }, { 15741, 0x91ff }, { 15752, 0xf8cf }, { 15763, 0xfede },
- /* 0x9b00 */
- { 15776, 0xff7e }, { 15790, 0xc7f7 }, { 15802, 0xefbd }, { 15815, 0xdebe },
- { 15827, 0xfd7f }, { 15841, 0x8f77 }, { 15852, 0x93d3 }, { 15861, 0xfcf3 },
- { 15873, 0xe9ef }, { 15885, 0xecaf }, { 15896, 0xed77 }, { 15908, 0xa361 },
- { 15915, 0x87db }, { 15925, 0x7ef8 }, { 15936, 0x3ff7 }, { 15949, 0xa193 },
- /* 0x9c00 */
- { 15956, 0x7fe4 }, { 15967, 0xb8bd }, { 15977, 0xbb7b }, { 15989, 0xfefe },
- { 16003, 0xff73 }, { 16016, 0xe3fd }, { 16028, 0x61cd }, { 16036, 0x1fbe },
- { 16047, 0x0000 }, { 16047, 0x0000 }, { 16047, 0x0000 }, { 16047, 0x0000 },
- { 16047, 0x0000 }, { 16047, 0x0000 }, { 16047, 0x26e0 }, { 16053, 0xbefe },
- /* 0x9d00 */
- { 16066, 0x13fd }, { 16076, 0xebf5 }, { 16088, 0xe36f }, { 16099, 0xebdb },
- { 16111, 0xde3f }, { 16123, 0xffdf }, { 16138, 0xff83 }, { 16149, 0xfbbf },
- { 16163, 0x1fff }, { 16176, 0xffdd }, { 16190, 0xbfff }, { 16205, 0xfffe },
- { 16220, 0xffbf }, { 16235, 0xffff }, { 16251, 0xfb7e }, { 16264, 0xfffd },
- /* 0x9e00 */
- { 16279, 0xfeff }, { 16294, 0xffbf }, { 16309, 0x0000 }, { 16309, 0x0000 },
- { 16309, 0x0000 }, { 16309, 0x0000 }, { 16309, 0x0000 }, { 16309, 0xbe20 },
- { 16316, 0x7fff }, { 16331, 0xffff }, { 16347, 0xfff7 }, { 16362, 0xf8f3 },
- { 16373, 0xf1df }, { 16385, 0xfd7b }, { 16398, 0xe9f5 }, { 16409, 0xffff },
- /* 0x9f00 */
- { 16425, 0xc7c7 }, { 16435, 0x5fed }, { 16447, 0xfffd }, { 16462, 0x6bff },
- { 16475, 0xffff }, { 16491, 0xfffd }, { 16506, 0xdeff }, { 16520, 0xcff7 },
- { 16533, 0x6000 }, { 16535, 0x9337 }, { 16544, 0x0035 },
-};
-static const Summary16 big5hkscs_uni2indx_pagee0[419] = {
- /* 0xe000 */
- { 16548, 0xffff }, { 16564, 0xffff }, { 16580, 0xffff }, { 16596, 0xffff },
- { 16612, 0xffff }, { 16628, 0xffff }, { 16644, 0xffff }, { 16660, 0xffff },
- { 16676, 0xffff }, { 16692, 0xffff }, { 16708, 0xffff }, { 16724, 0xffff },
- { 16740, 0xffff }, { 16756, 0xffff }, { 16772, 0xffff }, { 16788, 0xffff },
- /* 0xe100 */
- { 16804, 0xffff }, { 16820, 0xffff }, { 16836, 0xffff }, { 16852, 0xffff },
- { 16868, 0xffff }, { 16884, 0xffff }, { 16900, 0xffff }, { 16916, 0xffff },
- { 16932, 0xffff }, { 16948, 0xffff }, { 16964, 0xffff }, { 16980, 0xffff },
- { 16996, 0xffff }, { 17012, 0xffff }, { 17028, 0xffff }, { 17044, 0xffff },
- /* 0xe200 */
- { 17060, 0xffff }, { 17076, 0xffff }, { 17092, 0xffff }, { 17108, 0xffff },
- { 17124, 0xffff }, { 17140, 0xffff }, { 17156, 0xffff }, { 17172, 0xffff },
- { 17188, 0xffff }, { 17204, 0xffff }, { 17220, 0xffff }, { 17236, 0xffff },
- { 17252, 0xffff }, { 17268, 0xffff }, { 17284, 0xffff }, { 17300, 0xffff },
- /* 0xe300 */
- { 17316, 0xffff }, { 17332, 0xffff }, { 17348, 0xffff }, { 17364, 0xffff },
- { 17380, 0xffff }, { 17396, 0xffff }, { 17412, 0xffff }, { 17428, 0xffff },
- { 17444, 0xffff }, { 17460, 0xffff }, { 17476, 0xffff }, { 17492, 0xffff },
- { 17508, 0xffff }, { 17524, 0xffff }, { 17540, 0xffff }, { 17556, 0xffff },
- /* 0xe400 */
- { 17572, 0xffff }, { 17588, 0xffff }, { 17604, 0xffff }, { 17620, 0xffff },
- { 17636, 0xffff }, { 17652, 0xffff }, { 17668, 0xffff }, { 17684, 0xffff },
- { 17700, 0xffff }, { 17716, 0xffff }, { 17732, 0xffff }, { 17748, 0xffff },
- { 17764, 0xffff }, { 17780, 0xffff }, { 17796, 0xffff }, { 17812, 0xffff },
- /* 0xe500 */
- { 17828, 0xffff }, { 17844, 0xffff }, { 17860, 0xffff }, { 17876, 0xffff },
- { 17892, 0xffff }, { 17908, 0xffff }, { 17924, 0xffff }, { 17940, 0xffff },
- { 17956, 0xffff }, { 17972, 0xffff }, { 17988, 0xffff }, { 18004, 0xffff },
- { 18020, 0xffff }, { 18036, 0xffff }, { 18052, 0xffff }, { 18068, 0xffff },
- /* 0xe600 */
- { 18084, 0xffff }, { 18100, 0xffff }, { 18116, 0xffff }, { 18132, 0xffff },
- { 18148, 0xffff }, { 18164, 0xffff }, { 18180, 0xffff }, { 18196, 0xffff },
- { 18212, 0xffff }, { 18228, 0xffff }, { 18244, 0xffff }, { 18260, 0xffff },
- { 18276, 0xffff }, { 18292, 0xffff }, { 18308, 0xffff }, { 18324, 0xffff },
- /* 0xe700 */
- { 18340, 0xffff }, { 18356, 0xffff }, { 18372, 0xffff }, { 18388, 0xffff },
- { 18404, 0xffff }, { 18420, 0xffff }, { 18436, 0xffff }, { 18452, 0xffff },
- { 18468, 0xffff }, { 18484, 0xffff }, { 18500, 0xffff }, { 18516, 0xffff },
- { 18532, 0xffff }, { 18548, 0xffff }, { 18564, 0xffff }, { 18580, 0xffff },
- /* 0xe800 */
- { 18596, 0xffff }, { 18612, 0xffff }, { 18628, 0xffff }, { 18644, 0xffff },
- { 18660, 0xffff }, { 18676, 0xffff }, { 18692, 0xffff }, { 18708, 0xffff },
- { 18724, 0xffff }, { 18740, 0xffff }, { 18756, 0xffff }, { 18772, 0xffff },
- { 18788, 0xffff }, { 18804, 0xffff }, { 18820, 0xffff }, { 18836, 0xffff },
- /* 0xe900 */
- { 18852, 0xffff }, { 18868, 0xffff }, { 18884, 0xffff }, { 18900, 0xffff },
- { 18916, 0xffff }, { 18932, 0xffff }, { 18948, 0xffff }, { 18964, 0xffff },
- { 18980, 0xffff }, { 18996, 0xffff }, { 19012, 0xffff }, { 19028, 0xffff },
- { 19044, 0xffff }, { 19060, 0xffff }, { 19076, 0xffff }, { 19092, 0xffff },
- /* 0xea00 */
- { 19108, 0xffff }, { 19124, 0xffff }, { 19140, 0xffff }, { 19156, 0xffff },
- { 19172, 0xffff }, { 19188, 0xffff }, { 19204, 0xffff }, { 19220, 0xffff },
- { 19236, 0xffff }, { 19252, 0xffff }, { 19268, 0xffff }, { 19284, 0xffff },
- { 19300, 0xffff }, { 19316, 0xffff }, { 19332, 0xffff }, { 19348, 0xffff },
- /* 0xeb00 */
- { 19364, 0xffff }, { 19380, 0xffff }, { 19396, 0xffff }, { 19412, 0xffff },
- { 19428, 0xffff }, { 19444, 0xffff }, { 19460, 0xffff }, { 19476, 0xffff },
- { 19492, 0xffff }, { 19508, 0xffff }, { 19524, 0xffff }, { 19540, 0xffff },
- { 19556, 0xffff }, { 19572, 0xffff }, { 19588, 0xffff }, { 19604, 0xffff },
- /* 0xec00 */
- { 19620, 0xffff }, { 19636, 0xffff }, { 19652, 0xffff }, { 19668, 0xffff },
- { 19684, 0xffff }, { 19700, 0xffff }, { 19716, 0xffff }, { 19732, 0xffff },
- { 19748, 0xffff }, { 19764, 0xffff }, { 19780, 0xffff }, { 19796, 0xffff },
- { 19812, 0xffff }, { 19828, 0xffff }, { 19844, 0xffff }, { 19860, 0xffff },
- /* 0xed00 */
- { 19876, 0xffff }, { 19892, 0xffff }, { 19908, 0xffff }, { 19924, 0xffff },
- { 19940, 0xffff }, { 19956, 0xffff }, { 19972, 0xffff }, { 19988, 0xffff },
- { 20004, 0xffff }, { 20020, 0xffff }, { 20036, 0xffff }, { 20052, 0xffff },
- { 20068, 0xffff }, { 20084, 0xffff }, { 20100, 0xffff }, { 20116, 0xffff },
- /* 0xee00 */
- { 20132, 0xffff }, { 20148, 0xffff }, { 20164, 0xffff }, { 20180, 0xffff },
- { 20196, 0xffff }, { 20212, 0xffff }, { 20228, 0xffff }, { 20244, 0xffff },
- { 20260, 0xffff }, { 20276, 0xffff }, { 20292, 0xffff }, { 20308, 0xffff },
- { 20324, 0xffff }, { 20340, 0xffff }, { 20356, 0xffff }, { 20372, 0xffff },
- /* 0xef00 */
- { 20388, 0xffff }, { 20404, 0xffff }, { 20420, 0xffff }, { 20436, 0xffff },
- { 20452, 0xffff }, { 20468, 0xffff }, { 20484, 0xffff }, { 20500, 0xffff },
- { 20516, 0xffff }, { 20532, 0xffff }, { 20548, 0xffff }, { 20564, 0xffff },
- { 20580, 0xffff }, { 20596, 0xffff }, { 20612, 0xffff }, { 20628, 0xffff },
- /* 0xf000 */
- { 20644, 0xffff }, { 20660, 0xffff }, { 20676, 0xffff }, { 20692, 0xffff },
- { 20708, 0xffff }, { 20724, 0xffff }, { 20740, 0xffff }, { 20756, 0xffff },
- { 20772, 0xffff }, { 20788, 0xffff }, { 20804, 0xffff }, { 20820, 0xffff },
- { 20836, 0xffff }, { 20852, 0xffff }, { 20868, 0xffff }, { 20884, 0xffff },
- /* 0xf100 */
- { 20900, 0xffff }, { 20916, 0xffff }, { 20932, 0xffff }, { 20948, 0xffff },
- { 20964, 0xffff }, { 20980, 0xffff }, { 20996, 0xffff }, { 21012, 0xffff },
- { 21028, 0xffff }, { 21044, 0xffff }, { 21060, 0xffff }, { 21076, 0xffff },
- { 21092, 0xffff }, { 21108, 0xffff }, { 21124, 0xffff }, { 21140, 0xffff },
- /* 0xf200 */
- { 21156, 0xffff }, { 21172, 0xffff }, { 21188, 0xffff }, { 21204, 0xffff },
- { 21220, 0xffff }, { 21236, 0xffff }, { 21252, 0xffff }, { 21268, 0xffff },
- { 21284, 0xffff }, { 21300, 0xffff }, { 21316, 0xffff }, { 21332, 0xffff },
- { 21348, 0xffff }, { 21364, 0xffff }, { 21380, 0xffff }, { 21396, 0xffff },
- /* 0xf300 */
- { 21412, 0xffff }, { 21428, 0xffff }, { 21444, 0xffff }, { 21460, 0xffff },
- { 21476, 0xffff }, { 21492, 0xffff }, { 21508, 0xffff }, { 21524, 0xffff },
- { 21540, 0xffff }, { 21556, 0xffff }, { 21572, 0xffff }, { 21588, 0xffff },
- { 21604, 0xffff }, { 21620, 0xffff }, { 21636, 0xffff }, { 21652, 0xffff },
- /* 0xf400 */
- { 21668, 0xffff }, { 21684, 0xffff }, { 21700, 0xffff }, { 21716, 0xffff },
- { 21732, 0xffff }, { 21748, 0xffff }, { 21764, 0xffff }, { 21780, 0xffff },
- { 21796, 0xffff }, { 21812, 0xffff }, { 21828, 0xffff }, { 21844, 0xffff },
- { 21860, 0xffff }, { 21876, 0xffff }, { 21892, 0xffff }, { 21908, 0xffff },
- /* 0xf500 */
- { 21924, 0xffff }, { 21940, 0xffff }, { 21956, 0xffff }, { 21972, 0xffff },
- { 21988, 0xffff }, { 22004, 0xffff }, { 22020, 0xffff }, { 22036, 0xffff },
- { 22052, 0xffff }, { 22068, 0xffff }, { 22084, 0xffff }, { 22100, 0xffff },
- { 22116, 0xffff }, { 22132, 0xffff }, { 22148, 0xffff }, { 22164, 0xffff },
- /* 0xf600 */
- { 22180, 0xffff }, { 22196, 0xffff }, { 22212, 0xffff }, { 22228, 0xffff },
- { 22244, 0xffff }, { 22260, 0xffff }, { 22276, 0xffff }, { 22292, 0xffff },
- { 22308, 0xffff }, { 22324, 0xffff }, { 22340, 0xffff }, { 22356, 0xffff },
- { 22372, 0xffff }, { 22388, 0xffff }, { 22404, 0xffff }, { 22420, 0xffff },
- /* 0xf700 */
- { 22436, 0xffff }, { 22452, 0xffff }, { 22468, 0xffff }, { 22484, 0xffff },
- { 22500, 0xffff }, { 22516, 0xffff }, { 22532, 0xffff }, { 22548, 0xffff },
- { 22564, 0xffff }, { 22580, 0xffff }, { 22596, 0xffff }, { 22612, 0xffff },
- { 22628, 0xffff }, { 22644, 0xffff }, { 22660, 0xffff }, { 22676, 0xffff },
- /* 0xf800 */
- { 22692, 0xffff }, { 22708, 0xffff }, { 22724, 0xffff }, { 22740, 0xffff },
- { 22756, 0x01ff }, { 22765, 0x0000 }, { 22765, 0x0000 }, { 22765, 0x0000 },
- { 22765, 0x0000 }, { 22765, 0x0000 }, { 22765, 0x0000 }, { 22765, 0x0000 },
- { 22765, 0x0000 }, { 22765, 0x0000 }, { 22765, 0x0000 }, { 22765, 0x0000 },
- /* 0xf900 */
- { 22765, 0xffff }, { 22781, 0xffff }, { 22797, 0xefff }, { 22812, 0xffff },
- { 22828, 0xffff }, { 22844, 0xffff }, { 22860, 0xffff }, { 22876, 0xfdff },
- { 22891, 0xffff }, { 22907, 0xffdf }, { 22922, 0xffff }, { 22938, 0xffff },
- { 22954, 0xffff }, { 22970, 0xffff }, { 22986, 0xff7f }, { 23001, 0xfffd },
- /* 0xfa00 */
- { 23016, 0x3fff }, { 23030, 0x7ee5 }, { 23041, 0x3c64 },
-};
-static const Summary16 big5hkscs_uni2indx_pagefe[31] = {
- /* 0xfe00 */
- { 23048, 0x0000 }, { 23048, 0x0000 }, { 23048, 0x0000 }, { 23048, 0xfffb },
- { 23063, 0xfe1f }, { 23075, 0xfef7 }, { 23089, 0x0f7f }, { 23100, 0x0000 },
- { 23100, 0x0000 }, { 23100, 0x0000 }, { 23100, 0x0000 }, { 23100, 0x0000 },
- { 23100, 0x0000 }, { 23100, 0x0000 }, { 23100, 0x0000 }, { 23100, 0x0000 },
- /* 0xff00 */
- { 23100, 0xfffe }, { 23115, 0xffff }, { 23131, 0xffff }, { 23147, 0xffff },
- { 23163, 0xffff }, { 23179, 0x7fff }, { 23194, 0x0010 }, { 23195, 0x0000 },
- { 23195, 0x0000 }, { 23195, 0x0000 }, { 23195, 0x0000 }, { 23195, 0x0000 },
- { 23195, 0x0000 }, { 23195, 0x0000 }, { 23195, 0x203f },
-};
-
-static int
-big5hkscs_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n)
-{
- if (n >= 2) {
- const Summary16 *summary = NULL;
- if (wc >= 0x0000 && wc < 0x0100)
- summary = &big5hkscs_uni2indx_page00[(wc>>4)];
- else if (wc >= 0x0200 && wc < 0x03d0)
- summary = &big5hkscs_uni2indx_page02[(wc>>4)-0x020];
- else if (wc >= 0x2000 && wc < 0x22c0)
- summary = &big5hkscs_uni2indx_page20[(wc>>4)-0x200];
- else if (wc >= 0x2500 && wc < 0x2650)
- summary = &big5hkscs_uni2indx_page25[(wc>>4)-0x250];
- else if (wc >= 0x3000 && wc < 0x33e0)
- summary = &big5hkscs_uni2indx_page30[(wc>>4)-0x300];
- else if (wc >= 0x4e00 && wc < 0x9fb0)
- summary = &big5hkscs_uni2indx_page4e[(wc>>4)-0x4e0];
- else if (wc >= 0xe000 && wc < 0xfa30)
- summary = &big5hkscs_uni2indx_pagee0[(wc>>4)-0xe00];
- else if (wc >= 0xfe00 && wc < 0xfff0)
- summary = &big5hkscs_uni2indx_pagefe[(wc>>4)-0xfe0];
- if (summary) {
- unsigned short used = summary->used;
- unsigned int i = wc & 0x0f;
- if (used & ((unsigned short) 1 << i)) {
- unsigned short c;
- /* Keep in `used' only the bits 0..i-1. */
- used &= ((unsigned short) 1 << i) - 1;
- /* Add `summary->indx' and the number of bits set in `used'. */
- used = (used & 0x5555) + ((used & 0xaaaa) >> 1);
- used = (used & 0x3333) + ((used & 0xcccc) >> 2);
- used = (used & 0x0f0f) + ((used & 0xf0f0) >> 4);
- used = (used & 0x00ff) + (used >> 8);
- c = big5hkscs_2charset[summary->indx + used];
- r[0] = (c >> 8); r[1] = (c & 0xff);
- return 2;
- }
- }
- return RET_ILSEQ;
- }
- return RET_TOOSMALL;
-}
-
+
+/*
+ * BIG5-HKSCS
+ */
+
+static const unsigned short big5hkscs_2uni_page81[19782] = {
+ /* 0x81 */
+ 0xeeb8, 0xeeb9, 0xeeba, 0xeebb, 0xeebc, 0xeebd, 0xeebe, 0xeebf,
+ 0xeec0, 0xeec1, 0xeec2, 0xeec3, 0xeec4, 0xeec5, 0xeec6, 0xeec7,
+ 0xeec8, 0xeec9, 0xeeca, 0xeecb, 0xeecc, 0xeecd, 0xeece, 0xeecf,
+ 0xeed0, 0xeed1, 0xeed2, 0xeed3, 0xeed4, 0xeed5, 0xeed6, 0xeed7,
+ 0xeed8, 0xeed9, 0xeeda, 0xeedb, 0xeedc, 0xeedd, 0xeede, 0xeedf,
+ 0xeee0, 0xeee1, 0xeee2, 0xeee3, 0xeee4, 0xeee5, 0xeee6, 0xeee7,
+ 0xeee8, 0xeee9, 0xeeea, 0xeeeb, 0xeeec, 0xeeed, 0xeeee, 0xeeef,
+ 0xeef0, 0xeef1, 0xeef2, 0xeef3, 0xeef4, 0xeef5, 0xeef6, 0xeef7,
+ 0xeef8, 0xeef9, 0xeefa, 0xeefb, 0xeefc, 0xeefd, 0xeefe, 0xeeff,
+ 0xef00, 0xef01, 0xef02, 0xef03, 0xef04, 0xef05, 0xef06, 0xef07,
+ 0xef08, 0xef09, 0xef0a, 0xef0b, 0xef0c, 0xef0d, 0xef0e, 0xef0f,
+ 0xef10, 0xef11, 0xef12, 0xef13, 0xef14, 0xef15, 0xef16, 0xef17,
+ 0xef18, 0xef19, 0xef1a, 0xef1b, 0xef1c, 0xef1d, 0xef1e, 0xef1f,
+ 0xef20, 0xef21, 0xef22, 0xef23, 0xef24, 0xef25, 0xef26, 0xef27,
+ 0xef28, 0xef29, 0xef2a, 0xef2b, 0xef2c, 0xef2d, 0xef2e, 0xef2f,
+ 0xef30, 0xef31, 0xef32, 0xef33, 0xef34, 0xef35, 0xef36, 0xef37,
+ 0xef38, 0xef39, 0xef3a, 0xef3b, 0xef3c, 0xef3d, 0xef3e, 0xef3f,
+ 0xef40, 0xef41, 0xef42, 0xef43, 0xef44, 0xef45, 0xef46, 0xef47,
+ 0xef48, 0xef49, 0xef4a, 0xef4b, 0xef4c, 0xef4d, 0xef4e, 0xef4f,
+ 0xef50, 0xef51, 0xef52, 0xef53, 0xef54,
+ /* 0x82 */
+ 0xef55, 0xef56, 0xef57, 0xef58, 0xef59, 0xef5a, 0xef5b, 0xef5c,
+ 0xef5d, 0xef5e, 0xef5f, 0xef60, 0xef61, 0xef62, 0xef63, 0xef64,
+ 0xef65, 0xef66, 0xef67, 0xef68, 0xef69, 0xef6a, 0xef6b, 0xef6c,
+ 0xef6d, 0xef6e, 0xef6f, 0xef70, 0xef71, 0xef72, 0xef73, 0xef74,
+ 0xef75, 0xef76, 0xef77, 0xef78, 0xef79, 0xef7a, 0xef7b, 0xef7c,
+ 0xef7d, 0xef7e, 0xef7f, 0xef80, 0xef81, 0xef82, 0xef83, 0xef84,
+ 0xef85, 0xef86, 0xef87, 0xef88, 0xef89, 0xef8a, 0xef8b, 0xef8c,
+ 0xef8d, 0xef8e, 0xef8f, 0xef90, 0xef91, 0xef92, 0xef93, 0xef94,
+ 0xef95, 0xef96, 0xef97, 0xef98, 0xef99, 0xef9a, 0xef9b, 0xef9c,
+ 0xef9d, 0xef9e, 0xef9f, 0xefa0, 0xefa1, 0xefa2, 0xefa3, 0xefa4,
+ 0xefa5, 0xefa6, 0xefa7, 0xefa8, 0xefa9, 0xefaa, 0xefab, 0xefac,
+ 0xefad, 0xefae, 0xefaf, 0xefb0, 0xefb1, 0xefb2, 0xefb3, 0xefb4,
+ 0xefb5, 0xefb6, 0xefb7, 0xefb8, 0xefb9, 0xefba, 0xefbb, 0xefbc,
+ 0xefbd, 0xefbe, 0xefbf, 0xefc0, 0xefc1, 0xefc2, 0xefc3, 0xefc4,
+ 0xefc5, 0xefc6, 0xefc7, 0xefc8, 0xefc9, 0xefca, 0xefcb, 0xefcc,
+ 0xefcd, 0xefce, 0xefcf, 0xefd0, 0xefd1, 0xefd2, 0xefd3, 0xefd4,
+ 0xefd5, 0xefd6, 0xefd7, 0xefd8, 0xefd9, 0xefda, 0xefdb, 0xefdc,
+ 0xefdd, 0xefde, 0xefdf, 0xefe0, 0xefe1, 0xefe2, 0xefe3, 0xefe4,
+ 0xefe5, 0xefe6, 0xefe7, 0xefe8, 0xefe9, 0xefea, 0xefeb, 0xefec,
+ 0xefed, 0xefee, 0xefef, 0xeff0, 0xeff1,
+ /* 0x83 */
+ 0xeff2, 0xeff3, 0xeff4, 0xeff5, 0xeff6, 0xeff7, 0xeff8, 0xeff9,
+ 0xeffa, 0xeffb, 0xeffc, 0xeffd, 0xeffe, 0xefff, 0xf000, 0xf001,
+ 0xf002, 0xf003, 0xf004, 0xf005, 0xf006, 0xf007, 0xf008, 0xf009,
+ 0xf00a, 0xf00b, 0xf00c, 0xf00d, 0xf00e, 0xf00f, 0xf010, 0xf011,
+ 0xf012, 0xf013, 0xf014, 0xf015, 0xf016, 0xf017, 0xf018, 0xf019,
+ 0xf01a, 0xf01b, 0xf01c, 0xf01d, 0xf01e, 0xf01f, 0xf020, 0xf021,
+ 0xf022, 0xf023, 0xf024, 0xf025, 0xf026, 0xf027, 0xf028, 0xf029,
+ 0xf02a, 0xf02b, 0xf02c, 0xf02d, 0xf02e, 0xf02f, 0xf030, 0xf031,
+ 0xf032, 0xf033, 0xf034, 0xf035, 0xf036, 0xf037, 0xf038, 0xf039,
+ 0xf03a, 0xf03b, 0xf03c, 0xf03d, 0xf03e, 0xf03f, 0xf040, 0xf041,
+ 0xf042, 0xf043, 0xf044, 0xf045, 0xf046, 0xf047, 0xf048, 0xf049,
+ 0xf04a, 0xf04b, 0xf04c, 0xf04d, 0xf04e, 0xf04f, 0xf050, 0xf051,
+ 0xf052, 0xf053, 0xf054, 0xf055, 0xf056, 0xf057, 0xf058, 0xf059,
+ 0xf05a, 0xf05b, 0xf05c, 0xf05d, 0xf05e, 0xf05f, 0xf060, 0xf061,
+ 0xf062, 0xf063, 0xf064, 0xf065, 0xf066, 0xf067, 0xf068, 0xf069,
+ 0xf06a, 0xf06b, 0xf06c, 0xf06d, 0xf06e, 0xf06f, 0xf070, 0xf071,
+ 0xf072, 0xf073, 0xf074, 0xf075, 0xf076, 0xf077, 0xf078, 0xf079,
+ 0xf07a, 0xf07b, 0xf07c, 0xf07d, 0xf07e, 0xf07f, 0xf080, 0xf081,
+ 0xf082, 0xf083, 0xf084, 0xf085, 0xf086, 0xf087, 0xf088, 0xf089,
+ 0xf08a, 0xf08b, 0xf08c, 0xf08d, 0xf08e,
+ /* 0x84 */
+ 0xf08f, 0xf090, 0xf091, 0xf092, 0xf093, 0xf094, 0xf095, 0xf096,
+ 0xf097, 0xf098, 0xf099, 0xf09a, 0xf09b, 0xf09c, 0xf09d, 0xf09e,
+ 0xf09f, 0xf0a0, 0xf0a1, 0xf0a2, 0xf0a3, 0xf0a4, 0xf0a5, 0xf0a6,
+ 0xf0a7, 0xf0a8, 0xf0a9, 0xf0aa, 0xf0ab, 0xf0ac, 0xf0ad, 0xf0ae,
+ 0xf0af, 0xf0b0, 0xf0b1, 0xf0b2, 0xf0b3, 0xf0b4, 0xf0b5, 0xf0b6,
+ 0xf0b7, 0xf0b8, 0xf0b9, 0xf0ba, 0xf0bb, 0xf0bc, 0xf0bd, 0xf0be,
+ 0xf0bf, 0xf0c0, 0xf0c1, 0xf0c2, 0xf0c3, 0xf0c4, 0xf0c5, 0xf0c6,
+ 0xf0c7, 0xf0c8, 0xf0c9, 0xf0ca, 0xf0cb, 0xf0cc, 0xf0cd, 0xf0ce,
+ 0xf0cf, 0xf0d0, 0xf0d1, 0xf0d2, 0xf0d3, 0xf0d4, 0xf0d5, 0xf0d6,
+ 0xf0d7, 0xf0d8, 0xf0d9, 0xf0da, 0xf0db, 0xf0dc, 0xf0dd, 0xf0de,
+ 0xf0df, 0xf0e0, 0xf0e1, 0xf0e2, 0xf0e3, 0xf0e4, 0xf0e5, 0xf0e6,
+ 0xf0e7, 0xf0e8, 0xf0e9, 0xf0ea, 0xf0eb, 0xf0ec, 0xf0ed, 0xf0ee,
+ 0xf0ef, 0xf0f0, 0xf0f1, 0xf0f2, 0xf0f3, 0xf0f4, 0xf0f5, 0xf0f6,
+ 0xf0f7, 0xf0f8, 0xf0f9, 0xf0fa, 0xf0fb, 0xf0fc, 0xf0fd, 0xf0fe,
+ 0xf0ff, 0xf100, 0xf101, 0xf102, 0xf103, 0xf104, 0xf105, 0xf106,
+ 0xf107, 0xf108, 0xf109, 0xf10a, 0xf10b, 0xf10c, 0xf10d, 0xf10e,
+ 0xf10f, 0xf110, 0xf111, 0xf112, 0xf113, 0xf114, 0xf115, 0xf116,
+ 0xf117, 0xf118, 0xf119, 0xf11a, 0xf11b, 0xf11c, 0xf11d, 0xf11e,
+ 0xf11f, 0xf120, 0xf121, 0xf122, 0xf123, 0xf124, 0xf125, 0xf126,
+ 0xf127, 0xf128, 0xf129, 0xf12a, 0xf12b,
+ /* 0x85 */
+ 0xf12c, 0xf12d, 0xf12e, 0xf12f, 0xf130, 0xf131, 0xf132, 0xf133,
+ 0xf134, 0xf135, 0xf136, 0xf137, 0xf138, 0xf139, 0xf13a, 0xf13b,
+ 0xf13c, 0xf13d, 0xf13e, 0xf13f, 0xf140, 0xf141, 0xf142, 0xf143,
+ 0xf144, 0xf145, 0xf146, 0xf147, 0xf148, 0xf149, 0xf14a, 0xf14b,
+ 0xf14c, 0xf14d, 0xf14e, 0xf14f, 0xf150, 0xf151, 0xf152, 0xf153,
+ 0xf154, 0xf155, 0xf156, 0xf157, 0xf158, 0xf159, 0xf15a, 0xf15b,
+ 0xf15c, 0xf15d, 0xf15e, 0xf15f, 0xf160, 0xf161, 0xf162, 0xf163,
+ 0xf164, 0xf165, 0xf166, 0xf167, 0xf168, 0xf169, 0xf16a, 0xf16b,
+ 0xf16c, 0xf16d, 0xf16e, 0xf16f, 0xf170, 0xf171, 0xf172, 0xf173,
+ 0xf174, 0xf175, 0xf176, 0xf177, 0xf178, 0xf179, 0xf17a, 0xf17b,
+ 0xf17c, 0xf17d, 0xf17e, 0xf17f, 0xf180, 0xf181, 0xf182, 0xf183,
+ 0xf184, 0xf185, 0xf186, 0xf187, 0xf188, 0xf189, 0xf18a, 0xf18b,
+ 0xf18c, 0xf18d, 0xf18e, 0xf18f, 0xf190, 0xf191, 0xf192, 0xf193,
+ 0xf194, 0xf195, 0xf196, 0xf197, 0xf198, 0xf199, 0xf19a, 0xf19b,
+ 0xf19c, 0xf19d, 0xf19e, 0xf19f, 0xf1a0, 0xf1a1, 0xf1a2, 0xf1a3,
+ 0xf1a4, 0xf1a5, 0xf1a6, 0xf1a7, 0xf1a8, 0xf1a9, 0xf1aa, 0xf1ab,
+ 0xf1ac, 0xf1ad, 0xf1ae, 0xf1af, 0xf1b0, 0xf1b1, 0xf1b2, 0xf1b3,
+ 0xf1b4, 0xf1b5, 0xf1b6, 0xf1b7, 0xf1b8, 0xf1b9, 0xf1ba, 0xf1bb,
+ 0xf1bc, 0xf1bd, 0xf1be, 0xf1bf, 0xf1c0, 0xf1c1, 0xf1c2, 0xf1c3,
+ 0xf1c4, 0xf1c5, 0xf1c6, 0xf1c7, 0xf1c8,
+ /* 0x86 */
+ 0xf1c9, 0xf1ca, 0xf1cb, 0xf1cc, 0xf1cd, 0xf1ce, 0xf1cf, 0xf1d0,
+ 0xf1d1, 0xf1d2, 0xf1d3, 0xf1d4, 0xf1d5, 0xf1d6, 0xf1d7, 0xf1d8,
+ 0xf1d9, 0xf1da, 0xf1db, 0xf1dc, 0xf1dd, 0xf1de, 0xf1df, 0xf1e0,
+ 0xf1e1, 0xf1e2, 0xf1e3, 0xf1e4, 0xf1e5, 0xf1e6, 0xf1e7, 0xf1e8,
+ 0xf1e9, 0xf1ea, 0xf1eb, 0xf1ec, 0xf1ed, 0xf1ee, 0xf1ef, 0xf1f0,
+ 0xf1f1, 0xf1f2, 0xf1f3, 0xf1f4, 0xf1f5, 0xf1f6, 0xf1f7, 0xf1f8,
+ 0xf1f9, 0xf1fa, 0xf1fb, 0xf1fc, 0xf1fd, 0xf1fe, 0xf1ff, 0xf200,
+ 0xf201, 0xf202, 0xf203, 0xf204, 0xf205, 0xf206, 0xf207, 0xf208,
+ 0xf209, 0xf20a, 0xf20b, 0xf20c, 0xf20d, 0xf20e, 0xf20f, 0xf210,
+ 0xf211, 0xf212, 0xf213, 0xf214, 0xf215, 0xf216, 0xf217, 0xf218,
+ 0xf219, 0xf21a, 0xf21b, 0xf21c, 0xf21d, 0xf21e, 0xf21f, 0xf220,
+ 0xf221, 0xf222, 0xf223, 0xf224, 0xf225, 0xf226, 0xf227, 0xf228,
+ 0xf229, 0xf22a, 0xf22b, 0xf22c, 0xf22d, 0xf22e, 0xf22f, 0xf230,
+ 0xf231, 0xf232, 0xf233, 0xf234, 0xf235, 0xf236, 0xf237, 0xf238,
+ 0xf239, 0xf23a, 0xf23b, 0xf23c, 0xf23d, 0xf23e, 0xf23f, 0xf240,
+ 0xf241, 0xf242, 0xf243, 0xf244, 0xf245, 0xf246, 0xf247, 0xf248,
+ 0xf249, 0xf24a, 0xf24b, 0xf24c, 0xf24d, 0xf24e, 0xf24f, 0xf250,
+ 0xf251, 0xf252, 0xf253, 0xf254, 0xf255, 0xf256, 0xf257, 0xf258,
+ 0xf259, 0xf25a, 0xf25b, 0xf25c, 0xf25d, 0xf25e, 0xf25f, 0xf260,
+ 0xf261, 0xf262, 0xf263, 0xf264, 0xf265,
+ /* 0x87 */
+ 0xf266, 0xf267, 0xf268, 0xf269, 0xf26a, 0xf26b, 0xf26c, 0xf26d,
+ 0xf26e, 0xf26f, 0xf270, 0xf271, 0xf272, 0xf273, 0xf274, 0xf275,
+ 0xf276, 0xf277, 0xf278, 0xf279, 0xf27a, 0xf27b, 0xf27c, 0xf27d,
+ 0xf27e, 0xf27f, 0xf280, 0xf281, 0xf282, 0xf283, 0xf284, 0xf285,
+ 0xf286, 0xf287, 0xf288, 0xf289, 0xf28a, 0xf28b, 0xf28c, 0xf28d,
+ 0xf28e, 0xf28f, 0xf290, 0xf291, 0xf292, 0xf293, 0xf294, 0xf295,
+ 0xf296, 0xf297, 0xf298, 0xf299, 0xf29a, 0xf29b, 0xf29c, 0xf29d,
+ 0xf29e, 0xf29f, 0xf2a0, 0xf2a1, 0xf2a2, 0xf2a3, 0xf2a4, 0xf2a5,
+ 0xf2a6, 0xf2a7, 0xf2a8, 0xf2a9, 0xf2aa, 0xf2ab, 0xf2ac, 0xf2ad,
+ 0xf2ae, 0xf2af, 0xf2b0, 0xf2b1, 0xf2b2, 0xf2b3, 0xf2b4, 0xf2b5,
+ 0xf2b6, 0xf2b7, 0xf2b8, 0xf2b9, 0xf2ba, 0xf2bb, 0xf2bc, 0xf2bd,
+ 0xf2be, 0xf2bf, 0xf2c0, 0xf2c1, 0xf2c2, 0xf2c3, 0xf2c4, 0xf2c5,
+ 0xf2c6, 0xf2c7, 0xf2c8, 0xf2c9, 0xf2ca, 0xf2cb, 0xf2cc, 0xf2cd,
+ 0xf2ce, 0xf2cf, 0xf2d0, 0xf2d1, 0xf2d2, 0xf2d3, 0xf2d4, 0xf2d5,
+ 0xf2d6, 0xf2d7, 0xf2d8, 0xf2d9, 0xf2da, 0xf2db, 0xf2dc, 0xf2dd,
+ 0xf2de, 0xf2df, 0xf2e0, 0xf2e1, 0xf2e2, 0xf2e3, 0xf2e4, 0xf2e5,
+ 0xf2e6, 0xf2e7, 0xf2e8, 0xf2e9, 0xf2ea, 0xf2eb, 0xf2ec, 0xf2ed,
+ 0xf2ee, 0xf2ef, 0xf2f0, 0xf2f1, 0xf2f2, 0xf2f3, 0xf2f4, 0xf2f5,
+ 0xf2f6, 0xf2f7, 0xf2f8, 0xf2f9, 0xf2fa, 0xf2fb, 0xf2fc, 0xf2fd,
+ 0xf2fe, 0xf2ff, 0xf300, 0xf301, 0xf302,
+ /* 0x88 */
+ 0xf303, 0xf304, 0xf305, 0xf306, 0xf307, 0xf308, 0xf309, 0xf30a,
+ 0xf30b, 0xf30c, 0xf30d, 0xf30e, 0xf30f, 0xf310, 0xf311, 0xf312,
+ 0xf313, 0xf314, 0xf315, 0xf316, 0xf317, 0xf318, 0x0100, 0x00c1,
+ 0x01cd, 0x00c0, 0x0112, 0x00c9, 0x011a, 0x00c8, 0x014c, 0x00d3,
+ 0x01d1, 0x00d2, 0xf325, 0x1ebe, 0xf327, 0x1ec0, 0x00ca, 0x0101,
+ 0x00e1, 0x01ce, 0x00e0, 0x0251, 0x0113, 0x00e9, 0x011b, 0x00e8,
+ 0x012b, 0x00ed, 0x01d0, 0x00ec, 0x014d, 0x00f3, 0x01d2, 0x00f2,
+ 0x016b, 0x00fa, 0x01d4, 0x00f9, 0x01d6, 0x01d8, 0x01da, 0x01dc,
+ 0x00fc, 0xf344, 0x1ebf, 0xf346, 0x1ec1, 0x00ea, 0x0261, 0xf34a,
+ 0xf34b, 0xf34c, 0xf34d, 0xf34e, 0xf34f, 0xf350, 0xf351, 0xf352,
+ 0xf353, 0xf354, 0xf355, 0xf356, 0xf357, 0xf358, 0xf359, 0xf35a,
+ 0xf35b, 0xf35c, 0xf35d, 0xf35e, 0xf35f, 0xf360, 0xf361, 0xf362,
+ 0xf363, 0xf364, 0xf365, 0xf366, 0xf367, 0xf368, 0xf369, 0xf36a,
+ 0xf36b, 0xf36c, 0xf36d, 0xf36e, 0xf36f, 0xf370, 0xf371, 0xf372,
+ 0xf373, 0xf374, 0xf375, 0xf376, 0xf377, 0xf378, 0xf379, 0xf37a,
+ 0xf37b, 0xf37c, 0xf37d, 0xf37e, 0xf37f, 0xf380, 0xf381, 0xf382,
+ 0xf383, 0xf384, 0xf385, 0xf386, 0xf387, 0xf388, 0xf389, 0xf38a,
+ 0xf38b, 0xf38c, 0xf38d, 0xf38e, 0xf38f, 0xf390, 0xf391, 0xf392,
+ 0xf393, 0xf394, 0xf395, 0xf396, 0xf397, 0xf398, 0xf399, 0xf39a,
+ 0xf39b, 0xf39c, 0xf39d, 0xf39e, 0xf39f,
+ /* 0x89 */
+ 0xf3a0, 0xf3a1, 0xf3a2, 0x650a, 0xf3a4, 0xf3a5, 0x4e3d, 0x6edd,
+ 0x9d4e, 0x91df, 0xf3aa, 0xf3ab, 0xf3ac, 0x6491, 0x4f1a, 0x4f28,
+ 0x4fa8, 0x5156, 0x5174, 0x519c, 0x51e4, 0x52a1, 0x52a8, 0x533b,
+ 0x534e, 0x53d1, 0x53d8, 0x56e2, 0x58f0, 0x5904, 0x5907, 0x5932,
+ 0x5934, 0x5b66, 0x5b9e, 0x5b9f, 0x5c9a, 0x5e86, 0x603b, 0x6589,
+ 0x67fe, 0x6804, 0x6865, 0x6d4e, 0x70bc, 0x7535, 0x7ea4, 0x7eac,
+ 0x7eba, 0x7ec7, 0x7ecf, 0x7edf, 0x7f06, 0x7f37, 0x827a, 0x82cf,
+ 0x836f, 0x89c6, 0x8bbe, 0x8be2, 0x8f66, 0x8f67, 0x8f6e, 0x7411,
+ 0x7cfc, 0x7dcd, 0x6946, 0x7ac9, 0x5227, 0xf3e5, 0xf3e6, 0xf3e7,
+ 0xf3e8, 0x918c, 0x78b8, 0x915e, 0x80bc, 0xf3ed, 0x8d0b, 0x80f6,
+ 0xf3f0, 0xf3f1, 0xf3f2, 0x809f, 0x9ec7, 0x4ccd, 0x9dc9, 0x9e0c,
+ 0x4c3e, 0xf3f9, 0xf3fa, 0x9e0a, 0xf3fc, 0x35c1, 0xf3fe, 0x6e9a,
+ 0x823e, 0x7519, 0xf402, 0x4911, 0x9a6c, 0x9a8f, 0x9f99, 0x7987,
+ 0xf408, 0xf409, 0xf40a, 0xf40b, 0x4e24, 0x4e81, 0x4e80, 0x4e87,
+ 0x4ebf, 0x4eeb, 0x4f37, 0x344c, 0x4fbd, 0x3e48, 0x5003, 0x5088,
+ 0x347d, 0x3493, 0x34a5, 0x5186, 0x5905, 0x51db, 0x51fc, 0x5205,
+ 0x4e89, 0x5279, 0x5290, 0x5327, 0x35c7, 0x53a9, 0x3551, 0x53b0,
+ 0x3553, 0x53c2, 0x5423, 0x356d, 0x3572, 0x3681, 0x5493, 0x54a3,
+ 0x54b4, 0x54b9, 0x54d0, 0x54ef, 0x5518, 0x5523, 0x5528, 0x3598,
+ 0x553f, 0x35a5, 0x35bf, 0x55d7, 0x35c5,
+ /* 0x8a */
+ 0xf43d, 0x5525, 0xf43f, 0xf440, 0xf441, 0xf442, 0x5590, 0xf444,
+ 0x39ec, 0xf446, 0x8e46, 0xf448, 0xf449, 0x4053, 0xf44b, 0x777a,
+ 0xf44d, 0x3a34, 0x47d5, 0xf450, 0xf451, 0xf452, 0x64dd, 0xf454,
+ 0xf455, 0xf456, 0xf457, 0x648d, 0x8e7e, 0xf45a, 0xf45b, 0xf45c,
+ 0xf45d, 0xf45e, 0xf45f, 0xf460, 0xf461, 0xf462, 0xf463, 0x47f4,
+ 0xf465, 0xf466, 0x9ab2, 0x3a67, 0xf469, 0x3fed, 0x3506, 0xf46c,
+ 0xf46d, 0xf46e, 0xf46f, 0x9d6e, 0x9815, 0xf472, 0x43d9, 0xf474,
+ 0x64b4, 0x54e3, 0xf477, 0xf478, 0xf479, 0x39fb, 0xf47b, 0xf47c,
+ 0xf47d, 0xf47e, 0x64ea, 0xf480, 0xf481, 0x8e68, 0xf483, 0xf484,
+ 0xf485, 0xf486, 0x480b, 0xf488, 0x3ffa, 0x5873, 0xf48b, 0xf48c,
+ 0xf48d, 0xf48e, 0xf48f, 0xf490, 0xf491, 0x5579, 0x40bb, 0x43ba,
+ 0xf495, 0x4ab4, 0xf497, 0xf498, 0x81aa, 0x98f5, 0xf49b, 0x6379,
+ 0x39fe, 0xf49e, 0x8dc0, 0x56a1, 0x647c, 0x3e43, 0xf4a3, 0xf4a4,
+ 0xf4a5, 0xf4a6, 0xf4a7, 0xf4a8, 0xf4a9, 0xf4aa, 0x3992, 0x3a06,
+ 0xf4ad, 0x3578, 0xf4af, 0xf4b0, 0x5652, 0xf4b2, 0xf4b3, 0xf4b4,
+ 0x34bc, 0x6c3d, 0xf4b7, 0xf4b8, 0xf4b9, 0xf4ba, 0xf4bb, 0xf4bc,
+ 0xf4bd, 0xf4be, 0xf4bf, 0xf4c0, 0xf4c1, 0x7f93, 0xf4c3, 0xf4c4,
+ 0xf4c5, 0x35fb, 0xf4c7, 0xf4c8, 0xf4c9, 0xf4ca, 0x3f93, 0xf4cc,
+ 0xf4cd, 0xf4ce, 0xf4cf, 0xf4d0, 0xf4d1, 0xf4d2, 0xf4d3, 0xf4d4,
+ 0xf4d5, 0x3ff9, 0xf4d7, 0x6432, 0xf4d9,
+ /* 0x8b */
+ 0xf4da, 0xf4db, 0xf4dc, 0xf4dd, 0xf4de, 0xf4df, 0xf4e0, 0x3a18,
+ 0xf4e2, 0xf4e3, 0xf4e4, 0xf4e5, 0xf4e6, 0xf4e7, 0xf4e8, 0xf4e9,
+ 0x95aa, 0x54cc, 0x82c4, 0x55b9, 0xf4ee, 0xf4ef, 0x9c26, 0x9ab6,
+ 0xf4f2, 0xf4f3, 0x7140, 0x816d, 0x80ec, 0x5c1c, 0xf4f8, 0x8134,
+ 0x3797, 0x535f, 0xf4fc, 0x91b6, 0xf4fe, 0xf4ff, 0xf500, 0xf501,
+ 0x35dd, 0xf503, 0x3609, 0xf505, 0x56af, 0xf507, 0xf508, 0xf509,
+ 0xf50a, 0xf50b, 0xf50c, 0xf50d, 0xf50e, 0xf50f, 0xf510, 0xf511,
+ 0x5a54, 0xf513, 0xf514, 0xf515, 0xf516, 0x579c, 0xf518, 0xf519,
+ 0xf51a, 0xf51b, 0xf51c, 0xf51d, 0x3703, 0xf51f, 0xf520, 0xf521,
+ 0xf522, 0xf523, 0xf524, 0xf525, 0xf526, 0x5899, 0x5268, 0x361a,
+ 0xf52a, 0x7bb2, 0x5b68, 0x4800, 0x4b2c, 0x9f27, 0x49e7, 0x9c1f,
+ 0x9b8d, 0xf533, 0xf534, 0x55fb, 0x35f2, 0x5689, 0x4e28, 0x5902,
+ 0xf53a, 0xf53b, 0x9751, 0xf53d, 0x4e5b, 0x4ebb, 0x353e, 0x5c23,
+ 0x5f51, 0x5fc4, 0x38fa, 0x624c, 0x6535, 0x6b7a, 0x6c35, 0x6c3a,
+ 0x706c, 0x722b, 0x4e2c, 0x72ad, 0xf54e, 0x7f52, 0x793b, 0x7cf9,
+ 0x7f53, 0xf553, 0x34c1, 0xf555, 0xf556, 0x8002, 0x8080, 0xf559,
+ 0xf55a, 0x535d, 0x8864, 0x89c1, 0xf55e, 0x8ba0, 0x8d1d, 0x9485,
+ 0x9578, 0x957f, 0x95e8, 0xf565, 0x97e6, 0x9875, 0x98ce, 0x98de,
+ 0x9963, 0xf56b, 0x9c7c, 0x9e1f, 0x9ec4, 0x6b6f, 0xf907, 0x4e37,
+ 0xf572, 0x961d, 0x6237, 0x94a2, 0xf576,
+ /* 0x8c */
+ 0x503b, 0x6dfe, 0xf579, 0xf57a, 0x3dc9, 0x888f, 0xf57d, 0x7077,
+ 0x5cf5, 0x4b20, 0xf581, 0x3559, 0xf583, 0x6122, 0xf585, 0x8fa7,
+ 0x91f6, 0x7191, 0x6719, 0x73ba, 0xf58b, 0xf58c, 0x3c8b, 0xf58e,
+ 0x4b10, 0x78e4, 0x7402, 0x51ae, 0xf593, 0x4009, 0x6a63, 0xf596,
+ 0x4223, 0x860f, 0xf599, 0x7a2a, 0xf59b, 0xf59c, 0x9755, 0x704d,
+ 0x5324, 0xf5a0, 0x93f4, 0x76d9, 0xf5a3, 0xf5a4, 0x77dd, 0x4ea3,
+ 0x4ff0, 0x50bc, 0x4e2f, 0x4f17, 0xf5ab, 0x5434, 0x7d8b, 0x5892,
+ 0x58d0, 0xf5b0, 0x5e92, 0x5e99, 0x5fc2, 0xf5b4, 0x658b, 0xf5b6,
+ 0x6919, 0x6a43, 0xf5b9, 0x6cff, 0xf5bb, 0x7200, 0xf5bd, 0x738c,
+ 0x3edb, 0xf5c0, 0x5b15, 0x74b9, 0x8b83, 0xf5c4, 0xf5c5, 0x7a93,
+ 0x7bec, 0x7cc3, 0x7e6c, 0x82f8, 0x8597, 0xf5cc, 0x8890, 0xf5ce,
+ 0x8eb9, 0xf5d0, 0x8fcf, 0x855f, 0x99e0, 0x9221, 0xf5d5, 0xf5d6,
+ 0xf5d7, 0x4071, 0x42a2, 0x5a1a, 0xf5db, 0xf5dc, 0xf5dd, 0x9868,
+ 0x676b, 0x4276, 0x573d, 0xf5e2, 0x85d6, 0xf5e4, 0x82bf, 0xf5e6,
+ 0x4c81, 0xf5e8, 0x5d7b, 0xf5ea, 0xf5eb, 0xf5ec, 0xf5ed, 0x5b96,
+ 0xf5ef, 0xf5f0, 0x7e5b, 0xf5f2, 0xf5f3, 0xf5f4, 0xf5f5, 0xf5f6,
+ 0xf5f7, 0xf5f8, 0xf5f9, 0xf5fa, 0xf5fb, 0xf5fc, 0xf5fd, 0xf5fe,
+ 0xf5ff, 0xf600, 0xf601, 0xf602, 0xf603, 0xf604, 0xf605, 0xf606,
+ 0xf607, 0xf608, 0xf609, 0xf60a, 0xf60b, 0xf60c, 0xf60d, 0xf60e,
+ 0xf60f, 0xf610, 0xf611, 0xf612, 0xf613,
+ /* 0x8d */
+ 0xf614, 0xf615, 0xf616, 0xf617, 0xf618, 0xf619, 0xf61a, 0xf61b,
+ 0xf61c, 0xf61d, 0xf61e, 0xf61f, 0xf620, 0xf621, 0xf622, 0xf623,
+ 0xf624, 0xf625, 0xf626, 0xf627, 0xf628, 0xf629, 0xf62a, 0xf62b,
+ 0xf62c, 0xf62d, 0xf62e, 0xf62f, 0xf630, 0xf631, 0xf632, 0xf633,
+ 0x5d3e, 0x5d48, 0x5d56, 0x3dfc, 0x380f, 0x5da4, 0x5db9, 0x3820,
+ 0x3838, 0x5e42, 0x5ebd, 0x5f25, 0x5f83, 0x3908, 0x3914, 0x393f,
+ 0x394d, 0x60d7, 0x613d, 0x5ce5, 0x3989, 0x61b7, 0x61b9, 0x61cf,
+ 0x39b8, 0x622c, 0x6290, 0x62e5, 0x6318, 0x39f8, 0x56b1, 0x3a03,
+ 0x63e2, 0x63fb, 0x6407, 0x645a, 0x3a4b, 0x64c0, 0x5d15, 0x5621,
+ 0x9f9f, 0x3a97, 0x6586, 0x3abd, 0x65ff, 0x6653, 0x3af2, 0x6692,
+ 0x3b22, 0x6716, 0x3b42, 0x67a4, 0x6800, 0x3b58, 0x684a, 0x6884,
+ 0x3b72, 0x3b71, 0x3b7b, 0x6909, 0x6943, 0x725c, 0x6964, 0x699f,
+ 0x6985, 0x3bbc, 0x69d6, 0x3bdd, 0x6a65, 0x6a74, 0x6a71, 0x6a82,
+ 0x3bec, 0x6a99, 0x3bf2, 0x6aab, 0x6ab5, 0x6ad4, 0x6af6, 0x6b81,
+ 0x6bc1, 0x6bea, 0x6c75, 0x6caa, 0x3ccb, 0x6d02, 0x6d06, 0x6d26,
+ 0x6d81, 0x3cef, 0x6da4, 0x6db1, 0x6e15, 0x6e18, 0x6e29, 0x6e86,
+ 0xf694, 0x6ebb, 0x6ee2, 0x6eda, 0x9f7f, 0x6ee8, 0x6ee9, 0x6f24,
+ 0x6f34, 0x3d46, 0xf69e, 0x6f81, 0x6fbe, 0x3d6a, 0x3d75, 0x71b7,
+ 0x5c99, 0x3d8a, 0x702c, 0x3d91, 0x7050, 0x7054, 0x706f, 0x707f,
+ 0x7089, 0xf6ad, 0x43c1, 0x35f1, 0xf6b0,
+ /* 0x8e */
+ 0xe311, 0x57be, 0xe313, 0x713e, 0xe315, 0x364e, 0x69a2, 0xe318,
+ 0x5b74, 0x7a49, 0xe31b, 0xe31c, 0x7a65, 0x7a7d, 0xe31f, 0x7abb,
+ 0x7ab0, 0x7ac2, 0x7ac3, 0x71d1, 0xe325, 0x41ca, 0x7ada, 0x7add,
+ 0x7aea, 0x41ef, 0x54b2, 0xe32c, 0x7b0b, 0x7b55, 0x7b29, 0xe330,
+ 0xe331, 0x7ba2, 0x7b6f, 0x839c, 0xe335, 0xe336, 0x7bd0, 0x8421,
+ 0x7b92, 0x7bb8, 0xe33b, 0x3dad, 0xe33d, 0x8492, 0x7bfa, 0x7c06,
+ 0x7c35, 0xe342, 0x7c44, 0x7c83, 0xe345, 0x7ca6, 0x667d, 0xe348,
+ 0x7cc9, 0x7cc7, 0x7ce6, 0x7c74, 0x7cf3, 0x7cf5, 0x7cce, 0x7e67,
+ 0x451d, 0xe352, 0x7d5d, 0xe354, 0x748d, 0x7d89, 0x7dab, 0x7135,
+ 0x7db3, 0x7dd2, 0xe35b, 0xe35c, 0x7de4, 0x3d13, 0x7df5, 0xe360,
+ 0x7de5, 0xe362, 0x7e1d, 0xe364, 0xe365, 0x7e6e, 0x7e92, 0x432b,
+ 0x946c, 0x7e27, 0x7f40, 0x7f41, 0x7f47, 0x7936, 0xe36f, 0x99e1,
+ 0x7f97, 0xe372, 0x7fa3, 0xe374, 0xe375, 0x455c, 0xe377, 0x4503,
+ 0xe379, 0x7ffa, 0xe37b, 0x8005, 0x8008, 0x801d, 0x8028, 0x802f,
+ 0xe381, 0xe382, 0x803b, 0x803c, 0x8061, 0xe386, 0x4989, 0xe388,
+ 0xe389, 0xe38a, 0x6725, 0x80a7, 0xe38d, 0x8107, 0x811a, 0x58b0,
+ 0xe391, 0x6c7f, 0xe393, 0xe394, 0x64e7, 0xe396, 0x8218, 0xe398,
+ 0x6a53, 0xe39a, 0xe39b, 0x447a, 0x8229, 0xe39e, 0xe39f, 0xe3a0,
+ 0x4ff9, 0xe3a2, 0x84e2, 0x8362, 0xe3a5, 0xe3a6, 0xe3a7, 0xe3a8,
+ 0xe3a9, 0x82aa, 0x691b, 0xe3ac, 0x41db,
+ /* 0x8f */
+ 0x854b, 0x82d0, 0x831a, 0xe3b1, 0xe3b2, 0x36c1, 0xe3b4, 0xe3b5,
+ 0x827b, 0x82e2, 0x8318, 0xe3b9, 0xe3ba, 0xe3bb, 0xe3bc, 0xe3bd,
+ 0x3dbf, 0x831d, 0x55ec, 0x8385, 0x450b, 0xe3c3, 0x83ac, 0x83c1,
+ 0x83d3, 0x347e, 0xe3c8, 0x6a57, 0x855a, 0x3496, 0xe3cc, 0xe3cd,
+ 0x8458, 0xe3cf, 0x8471, 0x3dd3, 0x44e4, 0x6aa7, 0x844a, 0xe3d5,
+ 0x7958, 0x84a8, 0xe3d8, 0xe3d9, 0xe3da, 0x84de, 0x840f, 0x8391,
+ 0x44a0, 0x8493, 0x84e4, 0xe3e1, 0x4240, 0xe3e3, 0x4543, 0x8534,
+ 0x5af2, 0xe3e7, 0x4527, 0x8573, 0x4516, 0x67bf, 0x8616, 0xe3ed,
+ 0xe3ee, 0x85c1, 0xe3f0, 0x8602, 0xe3f2, 0xe3f3, 0xe3f4, 0x456a,
+ 0x8628, 0x3648, 0xe3f8, 0x53f7, 0xe3fa, 0x867e, 0x8771, 0xe3fd,
+ 0x87ee, 0xe3ff, 0x87b1, 0x87da, 0x880f, 0x5661, 0x866c, 0x6856,
+ 0x460f, 0x8845, 0x8846, 0xe409, 0xe40a, 0xe40b, 0x885e, 0x889c,
+ 0x465b, 0x88b4, 0x88b5, 0x63c1, 0x88c5, 0x7777, 0xe414, 0x8987,
+ 0x898a, 0x89a6, 0x89a9, 0x89a7, 0x89bc, 0xe41b, 0x89e7, 0xe41d,
+ 0xe41e, 0x8a9c, 0x7793, 0x91fe, 0x8a90, 0xe423, 0x7ae9, 0xe425,
+ 0xe426, 0x4713, 0xe428, 0x717c, 0x8b0c, 0x8b1f, 0xe42c, 0xe42d,
+ 0x8b3f, 0x8b4c, 0x8b4d, 0x8aa9, 0xe432, 0x8b90, 0x8b9b, 0x8aaf,
+ 0xe436, 0x4615, 0x884f, 0x8c9b, 0xe43a, 0xe43b, 0xe43c, 0x3725,
+ 0xe43e, 0x8cd6, 0xe440, 0xe441, 0x8d12, 0x8d03, 0xe444, 0x8cdb,
+ 0x705c, 0x8d11, 0xe448, 0x3ed0, 0x8d77,
+ /* 0x90 */
+ 0x8da9, 0xe44c, 0xe44d, 0xe44e, 0x3b7c, 0xe450, 0xe451, 0x7ae7,
+ 0x8ead, 0x8eb6, 0x8ec3, 0x92d4, 0x8f19, 0x8f2d, 0xe459, 0xe45a,
+ 0x8fa5, 0x9303, 0xe45d, 0xe45e, 0x8fb3, 0x492a, 0xe461, 0xe462,
+ 0xe463, 0x5ef8, 0xe465, 0x8ff9, 0xe467, 0xe468, 0xe469, 0xe46a,
+ 0x3980, 0xe46c, 0x9037, 0xe46e, 0xe46f, 0x9061, 0xe471, 0xe472,
+ 0x90a8, 0xe474, 0x90c4, 0xe476, 0x90ae, 0x90fd, 0x9167, 0x3af0,
+ 0x91a9, 0x91c4, 0x7cac, 0xe47e, 0xe47f, 0x920e, 0x6c9f, 0x9241,
+ 0x9262, 0xe484, 0x92b9, 0xe486, 0xe487, 0xe488, 0xe489, 0xe48a,
+ 0x932c, 0x936b, 0xe48d, 0xe48e, 0x708f, 0x5ac3, 0xe491, 0xe492,
+ 0x4965, 0x9244, 0xe495, 0xe496, 0xe497, 0x9373, 0x945b, 0x8ebc,
+ 0x9585, 0x95a6, 0x9426, 0x95a0, 0x6ff6, 0x42b9, 0xe4a1, 0xe4a2,
+ 0xe4a3, 0xe4a4, 0x49df, 0x6c1c, 0x967b, 0x9696, 0x416c, 0x96a3,
+ 0xe4ab, 0x61da, 0x96b6, 0x78f5, 0xe4af, 0x96bd, 0x53cc, 0x49a1,
+ 0xe4b3, 0xe4b4, 0xe4b5, 0xe4b6, 0xe4b7, 0xe4b8, 0xe4b9, 0xe4ba,
+ 0x9731, 0x8642, 0x9736, 0x4a0f, 0x453d, 0x4585, 0xe4c1, 0x7075,
+ 0x5b41, 0x971b, 0x975c, 0xe4c6, 0x9757, 0x5b4a, 0xe4c9, 0x975f,
+ 0x9425, 0x50d0, 0xe4cd, 0xe4ce, 0x9789, 0x979f, 0x97b1, 0x97be,
+ 0x97c0, 0x97d2, 0x97e0, 0xe4d6, 0x97ee, 0x741c, 0xe4d9, 0x97ff,
+ 0x97f5, 0xe4dc, 0xe4dd, 0x4ad1, 0x9834, 0x9833, 0x984b, 0x9866,
+ 0x3b0e, 0xe4e4, 0x3d51, 0xe4e6, 0xe4e7,
+ /* 0x91 */
+ 0xe4e8, 0x98ca, 0x98b7, 0x98c8, 0x98c7, 0x4aff, 0xe4ee, 0xe4ef,
+ 0x55b0, 0x98e1, 0x98e6, 0x98ec, 0x9378, 0x9939, 0xe4f6, 0x4b72,
+ 0xe4f8, 0xe4f9, 0x99f5, 0x9a0c, 0x9a3b, 0x9a10, 0x9a58, 0xe4ff,
+ 0x36c4, 0xe501, 0xe502, 0x9ae0, 0x9ae2, 0xe505, 0x9af4, 0x4c0e,
+ 0x9b14, 0x9b2d, 0xe50a, 0x5034, 0x9b34, 0xe50d, 0x38c3, 0xe50f,
+ 0x9b50, 0x9b40, 0xe512, 0x5a45, 0xe514, 0x9b8e, 0xe516, 0x9c02,
+ 0x9bff, 0x9c0c, 0xe51a, 0x9dd4, 0xe51c, 0xe51d, 0xe51e, 0xe51f,
+ 0xe520, 0xe521, 0x9d7e, 0x9d83, 0xe524, 0x9e0e, 0x6888, 0x9dc4,
+ 0xe528, 0xe529, 0xe52a, 0xe52b, 0xe52c, 0x9d39, 0xe52e, 0xe52f,
+ 0x9e90, 0x9e95, 0x9e9e, 0x9ea2, 0x4d34, 0x9eaa, 0x9eaf, 0xe537,
+ 0x9ec1, 0x3b60, 0x39e5, 0x3d1d, 0x4f32, 0x37be, 0xe53e, 0x9f02,
+ 0x9f08, 0x4b96, 0x9424, 0xe543, 0x9f17, 0x9f16, 0x9f39, 0x569f,
+ 0x568a, 0x9f45, 0x99b8, 0xe54b, 0x97f2, 0x847f, 0x9f62, 0x9f69,
+ 0x7adc, 0x9f8e, 0x7216, 0x4bbe, 0xe554, 0xe555, 0x7177, 0xe557,
+ 0xe558, 0xe559, 0x739e, 0xe55b, 0xe55c, 0x799f, 0xe55e, 0xe55f,
+ 0x9369, 0x93f3, 0xe562, 0x92ec, 0x9381, 0x93cb, 0xe566, 0xe567,
+ 0x7217, 0x3eeb, 0x7772, 0x7a43, 0x70d0, 0xe56d, 0xe56e, 0x717e,
+ 0xe570, 0x70a3, 0xe572, 0xe573, 0x3ec7, 0xe575, 0xe576, 0xe577,
+ 0x3722, 0xe579, 0xe57a, 0x36e1, 0xe57c, 0xe57d, 0xe57e, 0x3723,
+ 0xe580, 0x575b, 0xe582, 0xe583, 0xe584,
+ /* 0x92 */
+ 0xe585, 0xe586, 0x8503, 0xe588, 0x8503, 0x8455, 0xe58b, 0xe58c,
+ 0xe58d, 0xe58e, 0xe58f, 0xe590, 0x44f4, 0xe592, 0xe593, 0xe594,
+ 0x67f9, 0x3733, 0x3c15, 0x3de7, 0x586c, 0xe59a, 0x6810, 0x4057,
+ 0xe59d, 0xe59e, 0xe59f, 0xe5a0, 0xe5a1, 0x54cb, 0x569e, 0xe5a4,
+ 0x5692, 0xe5a6, 0xe5a7, 0xe5a8, 0x93c6, 0xe5aa, 0x939c, 0x4ef8,
+ 0x512b, 0x3819, 0xe5af, 0x4ebc, 0xe5b1, 0xe5b2, 0x4f4b, 0x4f8a,
+ 0xe5b5, 0x5a68, 0xe5b7, 0xe5b8, 0x3999, 0xe5ba, 0xe5bb, 0x3435,
+ 0x4f29, 0xe5be, 0xe5bf, 0xe5c0, 0x8ada, 0xe5c2, 0x4e98, 0x50cd,
+ 0x510d, 0x4fa2, 0x4f03, 0xe5c8, 0xe5c9, 0x4f42, 0x502e, 0x506c,
+ 0x5081, 0x4fcc, 0x4fe5, 0x5058, 0x50fc, 0x5159, 0x515b, 0x515d,
+ 0x515e, 0x6e76, 0xe5d7, 0xe5d8, 0xe5d9, 0x6d72, 0xe5db, 0xe5dc,
+ 0x51a8, 0x51c3, 0xe5df, 0x44dd, 0xe5e1, 0xe5e2, 0xe5e3, 0x8d7a,
+ 0xe5e5, 0xe5e6, 0x5259, 0x52a4, 0xe5e9, 0x52e1, 0x936e, 0x467a,
+ 0x718c, 0xe5ee, 0xe5ef, 0xe5f0, 0xe5f1, 0x69d1, 0xe5f3, 0x7479,
+ 0x3ede, 0x7499, 0x7414, 0x7456, 0x7398, 0x4b8e, 0xe5fb, 0xe5fc,
+ 0x53d0, 0x3584, 0x720f, 0xe600, 0x55b4, 0xe602, 0x54cd, 0xe604,
+ 0x571d, 0x925d, 0x96f4, 0x9366, 0x57dd, 0x578d, 0x577f, 0x363e,
+ 0x58cb, 0x5a99, 0xe60f, 0xe610, 0xe611, 0xe612, 0x5a2c, 0x59b8,
+ 0x928f, 0x5a7e, 0x5acf, 0x5a12, 0xe619, 0xe61a, 0xe61b, 0xe61c,
+ 0x36f5, 0x6d05, 0x7443, 0x5a21, 0xe621,
+ /* 0x93 */
+ 0x5a81, 0xe623, 0xe624, 0x93e0, 0x748c, 0xe627, 0x7105, 0x4972,
+ 0x9408, 0xe62b, 0x93bd, 0x37a0, 0x5c1e, 0x5c9e, 0x5e5e, 0x5e48,
+ 0xe632, 0xe633, 0xe634, 0x5ecd, 0x5b4f, 0xe637, 0xe638, 0x3701,
+ 0xe63a, 0x36dd, 0xe63c, 0x36d3, 0x812a, 0xe63f, 0xe640, 0xe641,
+ 0xe642, 0x5f0c, 0x5f0e, 0xe645, 0xe646, 0x5a6b, 0xe648, 0x5b44,
+ 0x8614, 0xe64b, 0x8860, 0x607e, 0xe64e, 0xe64f, 0x5fdb, 0x3eb8,
+ 0xe652, 0xe653, 0xe654, 0xe655, 0x61c0, 0xe657, 0xe658, 0xe659,
+ 0x6199, 0x6198, 0x6075, 0xe65d, 0xe65e, 0xe65f, 0xe660, 0x6471,
+ 0xe662, 0xe663, 0x3a29, 0xe665, 0xe666, 0xe667, 0xe668, 0x6337,
+ 0xe66a, 0x64b6, 0x6331, 0x63d1, 0xe66e, 0xe66f, 0x62a4, 0xe671,
+ 0x643b, 0x656b, 0x6972, 0x3bf4, 0xe676, 0xe677, 0xe678, 0xe679,
+ 0x550d, 0xe67b, 0xe67c, 0xe67d, 0x66ce, 0xe67f, 0xe680, 0x3ae0,
+ 0x4190, 0xe683, 0xe684, 0xe685, 0xe686, 0xe687, 0xe688, 0x78ee,
+ 0xe68a, 0xe68b, 0xe68c, 0x3464, 0xe68e, 0xe68f, 0xe690, 0x668e,
+ 0xe692, 0x666b, 0x4b93, 0x6630, 0xe696, 0xe697, 0x6663, 0xe699,
+ 0xe69a, 0x661e, 0xe69c, 0x38d1, 0xe69e, 0xe69f, 0x3b99, 0xe6a1,
+ 0xe6a2, 0x74d0, 0x3b96, 0x678f, 0xe6a6, 0x68b6, 0x681e, 0x3bc4,
+ 0x6abe, 0x3863, 0xe6ac, 0xe6ad, 0x6a33, 0x6a52, 0x6ac9, 0x6b05,
+ 0xe6b2, 0x6511, 0x6898, 0x6a4c, 0x3bd7, 0x6a7a, 0x6b57, 0xe6b9,
+ 0xe6ba, 0x93a0, 0x92f2, 0xe6bd, 0xe6be,
+ /* 0x94 */
+ 0x9289, 0xe6c0, 0xe6c1, 0x9467, 0x6da5, 0x6f0b, 0xe6c5, 0x6d67,
+ 0xe6c7, 0x3d8f, 0x6e04, 0xe6ca, 0x5a3d, 0x6e0a, 0x5847, 0x6d24,
+ 0x7842, 0x713b, 0xe6d1, 0xe6d2, 0x70f1, 0x7250, 0x7287, 0x7294,
+ 0xe6d7, 0xe6d8, 0x5179, 0xe6da, 0xe6db, 0x747a, 0xe6dd, 0xe6de,
+ 0xe6df, 0xe6e0, 0xe6e1, 0x3f06, 0x3eb1, 0xe6e4, 0xe6e5, 0xe6e6,
+ 0x60a7, 0x3ef3, 0x74cc, 0x743c, 0x9387, 0x7437, 0x449f, 0xe6ee,
+ 0x4551, 0x7583, 0x3f63, 0xe6f2, 0xe6f3, 0x3f58, 0x7555, 0x7673,
+ 0xe6f7, 0x3b19, 0x7468, 0xe6fa, 0xe6fb, 0xe6fc, 0x3afb, 0x3dcd,
+ 0xe6ff, 0x3eff, 0xe701, 0xe702, 0x91fa, 0x5732, 0x9342, 0xe706,
+ 0xe707, 0x50df, 0xe709, 0xe70a, 0x7778, 0xe70c, 0x770e, 0x770f,
+ 0x777b, 0xe710, 0xe711, 0x3a5e, 0xe713, 0x7438, 0x749b, 0x3ebf,
+ 0xe717, 0xe718, 0x40c8, 0xe71a, 0xe71b, 0x9307, 0xe71d, 0x781e,
+ 0x788d, 0x7888, 0x78d2, 0x73d0, 0x7959, 0xe724, 0xe725, 0x410e,
+ 0x799b, 0x8496, 0x79a5, 0x6a2d, 0xe72b, 0x7a3a, 0x79f4, 0x416e,
+ 0xe72f, 0x4132, 0x9235, 0x79f1, 0xe733, 0xe734, 0xe735, 0xe736,
+ 0xe737, 0x3597, 0x556b, 0x3570, 0x36aa, 0xe73c, 0xe73d, 0x7ae2,
+ 0x5a59, 0xe740, 0xe741, 0xe742, 0x5a0d, 0xe744, 0x78f0, 0x5a2a,
+ 0xe747, 0x7afe, 0x41f9, 0x7c5d, 0x7c6d, 0x4211, 0xe74d, 0xe74e,
+ 0xe74f, 0x7ccd, 0xe751, 0xe752, 0x7c8e, 0x7c7c, 0x7cae, 0x6ab2,
+ 0x7ddc, 0x7e07, 0x7dd3, 0x7f4e, 0xe75b,
+ /* 0x95 */
+ 0xe75c, 0xe75d, 0x7d97, 0xe75f, 0x426a, 0xe761, 0xe762, 0x67d6,
+ 0xe764, 0xe765, 0x57c4, 0xe767, 0xe768, 0xe769, 0x7fdd, 0x7b27,
+ 0xe76c, 0xe76d, 0xe76e, 0x7b0c, 0xe770, 0x99e6, 0x8645, 0x9a63,
+ 0x6a1c, 0xe775, 0x39e2, 0xe777, 0xe778, 0x9a1f, 0xe77a, 0x8480,
+ 0xe77c, 0xe77d, 0x44ea, 0x8137, 0x4402, 0x80c6, 0x8109, 0x8142,
+ 0xe784, 0x98c3, 0xe786, 0x8262, 0x8265, 0xe789, 0x8453, 0xe78b,
+ 0x8610, 0xe78d, 0x5a86, 0x417f, 0xe790, 0x5b2b, 0xe792, 0x5ae4,
+ 0xe794, 0x86a0, 0xe796, 0xe797, 0x882d, 0xe799, 0x5a02, 0x886e,
+ 0x4f45, 0x8887, 0x88bf, 0x88e6, 0x8965, 0x894d, 0xe7a2, 0x8954,
+ 0xe7a4, 0xe7a5, 0xe7a6, 0xe7a7, 0xe7a8, 0xe7a9, 0x3ead, 0x84a3,
+ 0x46f5, 0x46cf, 0x37f2, 0x8a3d, 0x8a1c, 0xe7b1, 0x5f4d, 0x922b,
+ 0xe7b4, 0x65d4, 0x7129, 0x70c4, 0xe7b8, 0x9d6d, 0x8c9f, 0x8ce9,
+ 0xe7bc, 0x599a, 0x77c3, 0x59f0, 0x436e, 0x36d4, 0x8e2a, 0x8ea7,
+ 0xe7c4, 0x8f30, 0x8f4a, 0x42f4, 0x6c58, 0x6fbb, 0xe7ca, 0x489b,
+ 0x6f79, 0x6e8b, 0xe7ce, 0x9be9, 0x36b5, 0xe7d1, 0x90bb, 0x9097,
+ 0x5571, 0x4906, 0x91bb, 0x9404, 0xe7d8, 0x4062, 0xe7da, 0x9427,
+ 0xe7dc, 0xe7dd, 0x84e5, 0x8a2b, 0x9599, 0x95a7, 0x9597, 0x9596,
+ 0xe7e4, 0x7445, 0x3ec2, 0xe7e7, 0xe7e8, 0xe7e9, 0x3ee7, 0xe7eb,
+ 0x968f, 0xe7ed, 0xe7ee, 0xe7ef, 0x3ecc, 0xe7f1, 0xe7f2, 0xe7f3,
+ 0x7412, 0x746b, 0x3efc, 0x9741, 0xe7f8,
+ /* 0x96 */
+ 0x6847, 0x4a1d, 0xe7fb, 0xe7fc, 0x975d, 0x9368, 0xe7ff, 0xe800,
+ 0xe801, 0xe802, 0x92ba, 0x5b11, 0x8b69, 0x493c, 0x73f9, 0xe808,
+ 0x979b, 0x9771, 0x9938, 0xe80c, 0x5dc1, 0xe80e, 0xe80f, 0x981f,
+ 0xe811, 0x92f6, 0xe813, 0x91e5, 0x44c0, 0xe816, 0xe817, 0xe818,
+ 0x98dc, 0xe81a, 0x3f00, 0x922a, 0x4925, 0x8414, 0x993b, 0x994d,
+ 0xe821, 0x3dfd, 0x999b, 0x4b6f, 0x99aa, 0x9a5c, 0xe827, 0xe828,
+ 0x6a8f, 0x9a21, 0x5afe, 0x9a2f, 0xe82d, 0x4b90, 0xe82f, 0x99bc,
+ 0x4bbd, 0x4b97, 0x937d, 0x5872, 0xe835, 0x5822, 0xe837, 0xe838,
+ 0x7844, 0xe83a, 0xe83b, 0x68c5, 0x3d7d, 0x9458, 0x3927, 0x6150,
+ 0xe841, 0xe842, 0x6107, 0x9c4f, 0x9c53, 0x9c7b, 0x9c35, 0x9c10,
+ 0x9b7f, 0x9bcf, 0xe84b, 0x9b9f, 0xe84d, 0xe84e, 0x9d21, 0x4cae,
+ 0xe851, 0x9e18, 0x4cb0, 0x9d0c, 0xe855, 0xe856, 0xe857, 0xe858,
+ 0x9da5, 0x84bd, 0xe85b, 0xe85c, 0xe85d, 0x85fc, 0x4533, 0xe860,
+ 0xe861, 0xe862, 0x8420, 0x85ee, 0xe865, 0xe866, 0xe867, 0x79e2,
+ 0xe869, 0xe86a, 0x492d, 0xe86c, 0x3d62, 0x93db, 0x92be, 0x9348,
+ 0xe871, 0x78b9, 0x9277, 0x944d, 0x4fe4, 0x3440, 0x9064, 0xe878,
+ 0x783d, 0x7854, 0x78b6, 0x784b, 0xe87d, 0xe87e, 0xe87f, 0x369a,
+ 0x4f72, 0x6fda, 0x6fd9, 0x701e, 0x701e, 0x5414, 0xe887, 0x57bb,
+ 0x58f3, 0x578a, 0x9d16, 0x57d7, 0x7134, 0x34af, 0xe88f, 0x71eb,
+ 0xe891, 0xe892, 0x5b28, 0xe894, 0xe895,
+ /* 0x97 */
+ 0x610c, 0x5ace, 0x5a0b, 0x42bc, 0xe89a, 0x372c, 0x4b7b, 0xe89d,
+ 0x93bb, 0x93b8, 0xe8a0, 0xe8a1, 0x8472, 0xe8a3, 0xe8a4, 0xe8a5,
+ 0xe8a6, 0xe8a7, 0x5994, 0xe8a9, 0xe8aa, 0x7da8, 0xe8ac, 0xe8ad,
+ 0xe8ae, 0xe8af, 0xe8b0, 0x92e5, 0x73e2, 0x3ee9, 0x74b4, 0xe8b5,
+ 0xe8b6, 0x3ee1, 0xe8b8, 0x6ad8, 0x73f3, 0x73fb, 0x3ed6, 0xe8bd,
+ 0xe8be, 0xe8bf, 0xe8c0, 0xe8c1, 0xe8c2, 0xe8c3, 0x7448, 0xe8c5,
+ 0x70a5, 0xe8c7, 0x9284, 0x73e6, 0x935f, 0xe8cb, 0x9331, 0xe8cd,
+ 0xe8ce, 0x9386, 0xe8d0, 0xe8d1, 0x4935, 0xe8d3, 0x716b, 0xe8d5,
+ 0xe8d6, 0x56a4, 0xe8d8, 0xe8d9, 0xe8da, 0x5502, 0x79c4, 0xe8dd,
+ 0x7dfe, 0xe8df, 0xe8e0, 0xe8e1, 0x452e, 0x9401, 0x370a, 0xe8e5,
+ 0xe8e6, 0x59b0, 0xe8e8, 0xe8e9, 0xe8ea, 0x5aa1, 0x36e2, 0xe8ed,
+ 0x36b0, 0x925f, 0x5a79, 0xe8f1, 0xe8f2, 0x9374, 0x3ccd, 0xe8f5,
+ 0x4a96, 0x398a, 0x50f4, 0x3d69, 0x3d4c, 0xe8fb, 0x7175, 0x42fb,
+ 0xe8fe, 0x6e0f, 0xe900, 0x44eb, 0x6d57, 0xe903, 0x7067, 0x6caf,
+ 0x3cd6, 0xe907, 0xe908, 0x6e02, 0x6f0c, 0x3d6f, 0xe90c, 0x7551,
+ 0x36bc, 0x34c8, 0x4680, 0x3eda, 0x4871, 0x59c4, 0x926e, 0x493e,
+ 0x8f41, 0xe917, 0xe918, 0x5812, 0x57c8, 0x36d6, 0xe91c, 0x70fe,
+ 0xe91e, 0xe91f, 0xe920, 0xe921, 0xe922, 0x68b9, 0x6967, 0xe925,
+ 0xe926, 0xe927, 0xe928, 0xe929, 0xe92a, 0xe92b, 0xe92c, 0x6a1a,
+ 0xe92e, 0xe92f, 0x843e, 0x44df, 0x44ce,
+ /* 0x98 */
+ 0xe933, 0xe934, 0xe935, 0xe936, 0x6f17, 0xe938, 0x833d, 0xe93a,
+ 0x83ed, 0xe93c, 0xe93d, 0xe93e, 0x5989, 0x5a82, 0xe941, 0x5a61,
+ 0x5a71, 0xe944, 0xe945, 0x372d, 0x59ef, 0xe948, 0x36c7, 0x718e,
+ 0x9390, 0x669a, 0xe94d, 0x5a6e, 0x5a2b, 0xe950, 0x6a2b, 0xe952,
+ 0xe953, 0xe954, 0xe955, 0x711d, 0xe957, 0xe958, 0x4fb0, 0xe95a,
+ 0x5cc2, 0xe95c, 0xe95d, 0xe95e, 0x6a0c, 0xe960, 0xe961, 0x70a6,
+ 0x7133, 0xe964, 0x3da5, 0x6cdf, 0xe967, 0xe968, 0x7e65, 0x59eb,
+ 0x5d2f, 0x3df3, 0x5f5c, 0xe96e, 0xe96f, 0x7da4, 0x8426, 0x5485,
+ 0xe973, 0xe974, 0xe975, 0x577e, 0xe977, 0xe978, 0x3fe5, 0xe97a,
+ 0xe97b, 0x7003, 0xe97d, 0x5d70, 0x738f, 0x7cd3, 0xe981, 0xe982,
+ 0x4fc8, 0x7fe7, 0x72cd, 0x7310, 0xe987, 0x7338, 0x7339, 0xe98a,
+ 0x7341, 0x7348, 0x3ea9, 0xe98e, 0x906c, 0x71f5, 0xe991, 0x73e1,
+ 0x81f6, 0x3eca, 0x770c, 0x3ed1, 0x6ca2, 0x56fd, 0x7419, 0x741e,
+ 0x741f, 0x3ee2, 0x3ef0, 0x3ef4, 0x3efa, 0x74d3, 0x3f0e, 0x3f53,
+ 0x7542, 0x756d, 0x7572, 0x758d, 0x3f7c, 0x75c8, 0x75dc, 0x3fc0,
+ 0x764d, 0x3fd7, 0x7674, 0x3fdc, 0x767a, 0xe9b0, 0x7188, 0x5623,
+ 0x8980, 0x5869, 0x401d, 0x7743, 0x4039, 0x6761, 0x4045, 0x35db,
+ 0x7798, 0x406a, 0x406f, 0x5c5e, 0x77be, 0x77cb, 0x58f2, 0x7818,
+ 0x70b9, 0x781c, 0x40a8, 0x7839, 0x7847, 0x7851, 0x7866, 0x8448,
+ 0xe9cb, 0x7933, 0x6803, 0x7932, 0x4103,
+ /* 0x99 */
+ 0x4109, 0x7991, 0x7999, 0x8fbb, 0x7a06, 0x8fbc, 0x4167, 0x7a91,
+ 0x41b2, 0x7abc, 0x8279, 0x41c4, 0x7acf, 0x7adb, 0x41cf, 0x4e21,
+ 0x7b62, 0x7b6c, 0x7b7b, 0x7c12, 0x7c1b, 0x4260, 0x427a, 0x7c7b,
+ 0x7c9c, 0x428c, 0x7cb8, 0x4294, 0x7ced, 0x8f93, 0x70c0, 0xe9ef,
+ 0x7dcf, 0x7dd4, 0x7dd0, 0x7dfd, 0x7fae, 0x7fb4, 0x729f, 0x4397,
+ 0x8020, 0x8025, 0x7b39, 0x802e, 0x8031, 0x8054, 0x3dcc, 0x57b4,
+ 0x70a0, 0x80b7, 0x80e9, 0x43ed, 0x810c, 0x732a, 0x810e, 0x8112,
+ 0x7560, 0x8114, 0x4401, 0x3b39, 0x8156, 0x8159, 0x815a, 0x4413,
+ 0x583a, 0x817c, 0x8184, 0x4425, 0x8193, 0x442d, 0x81a5, 0x57ef,
+ 0x81c1, 0x81e4, 0x8254, 0x448f, 0x82a6, 0x8276, 0x82ca, 0x82d8,
+ 0x82ff, 0x44b0, 0x8357, 0x9669, 0x698a, 0x8405, 0x70f5, 0x8464,
+ 0x60e3, 0x8488, 0x4504, 0x84be, 0x84e1, 0x84f8, 0x8510, 0x8538,
+ 0x8552, 0x453b, 0x856f, 0x8570, 0x85e0, 0x4577, 0x8672, 0x8692,
+ 0x86b2, 0x86ef, 0x9645, 0x878b, 0x4606, 0x4617, 0x88ae, 0x88ff,
+ 0x8924, 0x8947, 0x8991, 0xea43, 0x8a29, 0x8a38, 0x8a94, 0x8ab4,
+ 0x8c51, 0x8cd4, 0x8cf2, 0x8d1c, 0x4798, 0x585f, 0x8dc3, 0x47ed,
+ 0x4eee, 0x8e3a, 0x55d8, 0x5754, 0x8e71, 0x55f5, 0x8eb0, 0x4837,
+ 0x8ece, 0x8ee2, 0x8ee4, 0x8eed, 0x8ef2, 0x8fb7, 0x8fc1, 0x8fca,
+ 0x8fcc, 0x9033, 0x99c4, 0x48ad, 0x98e0, 0x9213, 0x491e, 0x9228,
+ 0x9258, 0x926b, 0x92b1, 0x92ae, 0x92bf,
+ /* 0x9a */
+ 0x92e3, 0x92eb, 0x92f3, 0x92f4, 0x92fd, 0x9343, 0x9384, 0x93ad,
+ 0x4945, 0x4951, 0x9ebf, 0x9417, 0x5301, 0x941d, 0x942d, 0x943e,
+ 0x496a, 0x9454, 0x9479, 0x952d, 0x95a2, 0x49a7, 0x95f4, 0x9633,
+ 0x49e5, 0x67a0, 0x4a24, 0x9740, 0x4a35, 0x97b2, 0x97c2, 0x5654,
+ 0x4ae4, 0x60e8, 0x98b9, 0x4b19, 0x98f1, 0x5844, 0x990e, 0x9919,
+ 0x51b4, 0x991c, 0x9937, 0x9942, 0x995d, 0x9962, 0x4b70, 0x99c5,
+ 0x4b9d, 0x9a3c, 0x9b0f, 0x7a83, 0x9b69, 0x9b81, 0x9bdd, 0x9bf1,
+ 0x9bf4, 0x4c6d, 0x9c20, 0x376f, 0xeaa9, 0x9d49, 0x9c3a, 0x9efe,
+ 0x5650, 0x9d93, 0x9dbd, 0x9dc0, 0x9dfc, 0x94f6, 0x8fb6, 0x9e7b,
+ 0x9eac, 0x9eb1, 0x9ebd, 0x9ec6, 0x94dc, 0x9ee2, 0x9ef1, 0x9ef8,
+ 0x7ac8, 0x9f44, 0xeabf, 0xeac0, 0xeac1, 0x691a, 0x94c3, 0x59ac,
+ 0xeac5, 0x5840, 0x94c1, 0x37b9, 0xeac9, 0xeaca, 0xeacb, 0xeacc,
+ 0x5757, 0x7173, 0xeacf, 0xead0, 0xead1, 0x546a, 0xead3, 0xead4,
+ 0x549e, 0xead6, 0xead7, 0xead8, 0xead9, 0xeada, 0x60e7, 0xeadc,
+ 0x567a, 0xeade, 0xeadf, 0xeae0, 0xeae1, 0xeae2, 0xeae3, 0x6955,
+ 0x9c2f, 0x87a5, 0xeae7, 0xeae8, 0xeae9, 0xeaea, 0xeaeb, 0xeaec,
+ 0x5c20, 0xeaee, 0x5e0b, 0xeaf0, 0xeaf1, 0xeaf2, 0x671e, 0xeaf4,
+ 0xeaf5, 0xeaf6, 0x3647, 0xeaf8, 0xeaf9, 0xeafa, 0xeafb, 0x5364,
+ 0x84ad, 0xeafe, 0xeaff, 0xeb00, 0x8b81, 0xeb02, 0xeb03, 0xeb04,
+ 0xeb05, 0x4e78, 0x70bb, 0xeb08, 0xeb09,
+ /* 0x9b */
+ 0xeb0a, 0xeb0b, 0xeb0c, 0xeb0d, 0xeb0e, 0xeb0f, 0x62c3, 0xeb11,
+ 0xeb12, 0x7198, 0x6855, 0xeb15, 0x69e9, 0x36c8, 0xeb18, 0xeb19,
+ 0xeb1a, 0xeb1b, 0xeb1c, 0xeb1d, 0x82fd, 0xeb1f, 0xeb20, 0xeb21,
+ 0x89a5, 0xeb23, 0x8fa0, 0xeb25, 0x97b8, 0xeb27, 0x9847, 0x9abd,
+ 0xeb2a, 0xeb2b, 0xeb2c, 0xeb2d, 0xeb2e, 0xeb2f, 0xeb30, 0xeb31,
+ 0xeb32, 0xeb33, 0xeb34, 0xeb35, 0xeb36, 0xeb37, 0xeb38, 0xeb39,
+ 0x5fb1, 0x6648, 0x66bf, 0xeb3d, 0xeb3e, 0xeb3f, 0x7201, 0xeb41,
+ 0x77d7, 0xeb43, 0xeb44, 0x7e87, 0xeb46, 0x58b5, 0x670e, 0x6918,
+ 0xeb4a, 0xeb4b, 0xeb4c, 0xeb4d, 0xeb4e, 0xeb4f, 0xeb50, 0x48d0,
+ 0x4ab8, 0xeb53, 0xeb54, 0xeb55, 0xeb56, 0xeb57, 0xeb58, 0xeb59,
+ 0xeb5a, 0xeb5b, 0x51d2, 0xeb5d, 0x599f, 0xeb5f, 0x3bbe, 0xeb61,
+ 0xeb62, 0xeb63, 0x5788, 0xeb65, 0x399b, 0xeb67, 0xeb68, 0xeb69,
+ 0x3762, 0xeb6b, 0x8b5e, 0xeb6d, 0x99d6, 0xeb6f, 0xeb70, 0xeb71,
+ 0x7209, 0xeb73, 0xeb74, 0x5965, 0xeb76, 0xeb77, 0xeb78, 0x8eda,
+ 0xeb7a, 0x528f, 0x573f, 0x7171, 0xeb7e, 0xeb7f, 0xeb80, 0xeb81,
+ 0x55bc, 0xeb83, 0xeb84, 0xeb85, 0x91d4, 0x3473, 0xeb88, 0xeb89,
+ 0xeb8a, 0x4718, 0xeb8c, 0xeb8d, 0xeb8e, 0xeb8f, 0xeb90, 0x5066,
+ 0x34fb, 0xeb93, 0x60de, 0xeb95, 0x477c, 0xeb97, 0xeb98, 0xeb99,
+ 0xeb9a, 0xeb9b, 0x57a1, 0x7151, 0x6fb6, 0xeb9f, 0xeba0, 0x9056,
+ 0xeba2, 0xeba3, 0x8b62, 0xeba5, 0xeba6,
+ /* 0x9c */
+ 0x5d5b, 0xeba8, 0x8f36, 0xebaa, 0xebab, 0x8aea, 0xebad, 0xebae,
+ 0xebaf, 0xebb0, 0x4bc0, 0xebb2, 0xebb3, 0xebb4, 0x9465, 0xebb6,
+ 0x6195, 0x5a27, 0xebb9, 0x4fbb, 0x56b9, 0xebbc, 0xebbd, 0x4e6a,
+ 0xebbf, 0x9656, 0x6d8f, 0xebc2, 0x3618, 0x8977, 0xebc5, 0xebc6,
+ 0xebc7, 0xebc8, 0x71df, 0xebca, 0x7b42, 0xebcc, 0xebcd, 0xebce,
+ 0x9104, 0xebd0, 0x7a45, 0x9df0, 0xebd3, 0x9a26, 0xebd5, 0x365f,
+ 0xebd7, 0xebd8, 0x7983, 0xebda, 0xebdb, 0x5d2c, 0xebdd, 0x83cf,
+ 0xebdf, 0x46d0, 0xebe1, 0x753b, 0x8865, 0xebe4, 0x58b6, 0x371c,
+ 0xebe7, 0xebe8, 0xebe9, 0x3c54, 0xebeb, 0xebec, 0x9281, 0xebee,
+ 0xebef, 0x9330, 0xebf1, 0xebf2, 0x6c39, 0x949f, 0xebf5, 0xebf6,
+ 0x8827, 0x88f5, 0xebf9, 0xebfa, 0xebfb, 0x6eb8, 0xebfd, 0xebfe,
+ 0x39a4, 0x36b9, 0x5c10, 0x79e3, 0x453f, 0x66b6, 0xec05, 0xec06,
+ 0x8943, 0xec08, 0xec09, 0x56d6, 0x40df, 0xec0c, 0x39a1, 0xec0e,
+ 0xec0f, 0xec10, 0x71ad, 0x8366, 0xec13, 0xec14, 0x5a67, 0x4cb7,
+ 0xec17, 0xec18, 0xec19, 0xec1a, 0xec1b, 0xec1c, 0xec1d, 0x7b43,
+ 0x797e, 0xec20, 0x6fb5, 0xec22, 0x6a03, 0xec24, 0x53a2, 0xec26,
+ 0x93bf, 0x6836, 0x975d, 0xec2a, 0xec2b, 0xec2c, 0xec2d, 0xec2e,
+ 0xec2f, 0x5d85, 0xec31, 0xec32, 0x5715, 0x9823, 0xec35, 0x5dab,
+ 0xec37, 0x65be, 0x69d5, 0x53d2, 0xec3b, 0xec3c, 0x3c11, 0x6736,
+ 0xec3f, 0xec40, 0xec41, 0xec42, 0xec43,
+ /* 0x9d */
+ 0xec44, 0xec45, 0xec46, 0xec47, 0xec48, 0xec49, 0x35ca, 0xec4b,
+ 0xec4c, 0x48fa, 0x63e6, 0xec4f, 0x7808, 0x9255, 0xec52, 0x43f2,
+ 0xec54, 0x43df, 0xec56, 0xec57, 0xec58, 0x59f8, 0xec5a, 0x8f0b,
+ 0xec5c, 0xec5d, 0x7b51, 0xec5f, 0xec60, 0x3df7, 0xec62, 0xec63,
+ 0x8fd0, 0x728f, 0x568b, 0xec67, 0xec68, 0xec69, 0xec6a, 0xec6b,
+ 0xec6c, 0xec6d, 0xec6e, 0xec6f, 0xec70, 0xec71, 0xec72, 0xec73,
+ 0x7e9f, 0xec75, 0xec76, 0x4ca4, 0x9547, 0xec79, 0x71a2, 0xec7b,
+ 0x4d91, 0x9012, 0xec7e, 0x4d9c, 0xec80, 0x8fbe, 0x55c1, 0x8fba,
+ 0xec84, 0x8fb9, 0xec86, 0x4509, 0x7e7f, 0x6f56, 0x6ab1, 0x4eea,
+ 0x34e4, 0xec8d, 0xec8e, 0x373a, 0x8e80, 0xec91, 0xec92, 0xec93,
+ 0xec94, 0xec95, 0xec96, 0x3deb, 0xec98, 0xec99, 0xec9a, 0xec9b,
+ 0x4e9a, 0xec9d, 0xec9e, 0x56bf, 0xeca0, 0x8e0e, 0x5b6d, 0xeca3,
+ 0xeca4, 0x63de, 0x62d0, 0xeca7, 0xeca8, 0x6530, 0x562d, 0xecab,
+ 0x541a, 0xecad, 0x3dc6, 0xecaf, 0x4c7d, 0x5622, 0x561e, 0x7f49,
+ 0xecb4, 0x5975, 0xecb6, 0x8770, 0x4e1c, 0xecb9, 0xecba, 0xecbb,
+ 0x8117, 0x9d5e, 0x8d18, 0x763b, 0x9c45, 0x764e, 0x77b9, 0x9345,
+ 0x5432, 0x8148, 0x82f7, 0x5625, 0x8132, 0x8418, 0x80bd, 0x55ea,
+ 0x7962, 0x5643, 0x5416, 0xeccf, 0x35ce, 0x5605, 0x55f1, 0x66f1,
+ 0xecd4, 0x362d, 0x7534, 0x55f0, 0x55ba, 0x5497, 0x5572, 0xecdb,
+ 0xecdc, 0x5ed0, 0xecde, 0xecdf, 0xece0,
+ /* 0x9e */
+ 0xece1, 0x9eab, 0x7d5a, 0x55de, 0xece5, 0x629d, 0x976d, 0x5494,
+ 0x8ccd, 0x71f6, 0x9176, 0x63fc, 0x63b9, 0x63fe, 0x5569, 0xecf0,
+ 0x9c72, 0xecf2, 0x519a, 0x34df, 0xecf5, 0x51a7, 0x544d, 0x551e,
+ 0x5513, 0x7666, 0x8e2d, 0xecfc, 0x75b1, 0x80b6, 0x8804, 0x8786,
+ 0x88c7, 0x81b6, 0x841c, 0xed04, 0x44ec, 0x7304, 0xed07, 0x5b90,
+ 0x830b, 0xed0a, 0x567b, 0xed0c, 0xed0d, 0xed0e, 0xed0f, 0xed10,
+ 0xed11, 0x9170, 0xed13, 0x9208, 0xed15, 0xed16, 0xed17, 0xed18,
+ 0x7266, 0xed1a, 0x474e, 0xed1c, 0xed1d, 0xed1e, 0x40fa, 0x9c5d,
+ 0x651f, 0xed22, 0x48f3, 0xed24, 0xed25, 0xed26, 0xed27, 0x6062,
+ 0xed29, 0xed2a, 0xed2b, 0xed2c, 0xed2d, 0x71a3, 0x7e8e, 0x9d50,
+ 0x4e1a, 0x4e04, 0x3577, 0x5b0d, 0x6cb2, 0x5367, 0x36ac, 0x39dc,
+ 0x537d, 0x36a5, 0xed3b, 0x589a, 0xed3d, 0x822d, 0x544b, 0x57aa,
+ 0xed41, 0xed42, 0xed43, 0x3a52, 0xed45, 0x7374, 0xed47, 0x4d09,
+ 0x9bed, 0xed4a, 0xed4b, 0x4c5b, 0xed4d, 0xed4e, 0xed4f, 0x845c,
+ 0xed51, 0xed52, 0xed53, 0xed54, 0x632e, 0x7d25, 0xed57, 0xed58,
+ 0x3a2a, 0x9008, 0x52cc, 0x3e74, 0x367a, 0x45e9, 0xed5f, 0x7640,
+ 0x5af0, 0xed62, 0x787a, 0x47b6, 0x58a7, 0x40bf, 0x567c, 0x9b8b,
+ 0x5d74, 0x7654, 0xed6b, 0x9e85, 0x4ce1, 0x75f9, 0x37fb, 0x6119,
+ 0xed71, 0xed72, 0xed73, 0x565d, 0xed75, 0x57a7, 0xed77, 0xed78,
+ 0x5234, 0xed7a, 0x35ad, 0x6c4a, 0x9d7c,
+ /* 0x9f */
+ 0x7c56, 0x9b39, 0x57de, 0xed81, 0x5c53, 0x64d3, 0xed84, 0xed85,
+ 0xed86, 0x86ad, 0xed88, 0xed89, 0xed8a, 0xed8b, 0xed8c, 0x51fe,
+ 0xed8e, 0x5d8e, 0x9703, 0xed91, 0x9e81, 0x904c, 0x7b1f, 0x9b02,
+ 0x5cd1, 0x7ba3, 0x6268, 0x6335, 0x9aff, 0x7bcf, 0x9b2a, 0x7c7e,
+ 0x9b2e, 0x7c42, 0x7c86, 0x9c15, 0x7bfc, 0x9b09, 0x9f17, 0x9c1b,
+ 0xeda6, 0x9f5a, 0x5573, 0x5bc3, 0x4ffd, 0x9e98, 0x4ff2, 0x5260,
+ 0x3e06, 0x52d1, 0x5767, 0x5056, 0x59b7, 0x5e12, 0x97c8, 0x9dab,
+ 0x8f5c, 0x5469, 0x97b4, 0x9940, 0x97ba, 0x532c, 0x6130, 0x692c,
+ 0x53da, 0x9c0a, 0x9d02, 0x4c3b, 0x9641, 0x6980, 0x50a6, 0x7546,
+ 0xedc6, 0x99da, 0x5273, 0xedc9, 0x9159, 0x9681, 0x915c, 0xedcd,
+ 0x9151, 0xedcf, 0x637f, 0xedd1, 0x6aca, 0x5611, 0x918e, 0x757a,
+ 0x6285, 0xedd7, 0x734f, 0x7c70, 0xedda, 0xeddb, 0xeddc, 0xeddd,
+ 0x76d6, 0x9b9d, 0x4e2a, 0xede1, 0x83be, 0x8842, 0xede4, 0x5c4a,
+ 0x69c0, 0x50ed, 0x577a, 0x521f, 0x5df5, 0x4ece, 0x6c31, 0xeded,
+ 0x4f39, 0x549c, 0x54da, 0x529a, 0x8d82, 0x35fe, 0x5f0c, 0x35f3,
+ 0xedf6, 0x6b52, 0x917c, 0x9fa5, 0x9b97, 0x982e, 0x98b4, 0x9aba,
+ 0x9ea8, 0x9e84, 0x717a, 0x7b14, 0xee02, 0x6bfa, 0x8818, 0x7f78,
+ 0xee06, 0x5620, 0xee08, 0x8e77, 0x9f53, 0xee0b, 0x8dd4, 0x8e4f,
+ 0x9e1c, 0x8e01, 0x6282, 0xee11, 0x8e28, 0x8e75, 0x7ad3, 0xee15,
+ 0x7a3e, 0x78d8, 0x6cea, 0x8a67, 0x7607,
+ /* 0xa0 */
+ 0xee1b, 0x9f26, 0x6cce, 0x87d6, 0x75c3, 0xee20, 0x7853, 0xee22,
+ 0x8d0c, 0x72e2, 0x7371, 0x8b2d, 0x7302, 0x74f1, 0x8ceb, 0xee2a,
+ 0x862f, 0x5fba, 0x88a0, 0x44b7, 0xee2f, 0xee30, 0xee31, 0xee32,
+ 0x8a7e, 0xee34, 0xee35, 0x60fd, 0x7667, 0x9ad7, 0x9d44, 0x936e,
+ 0x9b8f, 0x87f5, 0xee3d, 0x880f, 0x8cf7, 0x732c, 0x9721, 0x9bb0,
+ 0x35d6, 0x72b2, 0x4c07, 0x7c51, 0x994a, 0xee48, 0x6159, 0x4c04,
+ 0x9e96, 0x617d, 0xee4d, 0x575f, 0x616f, 0x62a6, 0x6239, 0x62ce,
+ 0x3a5c, 0x61e2, 0x53aa, 0xee56, 0x6364, 0x6802, 0x35d2, 0x5d57,
+ 0xee5b, 0x8fda, 0xee5d, 0xee5e, 0x50d9, 0xee60, 0x7906, 0x5332,
+ 0x9638, 0xee64, 0x4065, 0xee66, 0x77fe, 0xee68, 0x7cc2, 0xee6a,
+ 0x7cda, 0x7a2d, 0x8066, 0x8063, 0x7d4d, 0x7505, 0x74f2, 0x8994,
+ 0x821a, 0x670c, 0x8062, 0xee76, 0x805b, 0x74f0, 0x8103, 0x7724,
+ 0x8989, 0xee7c, 0x7553, 0xee7e, 0x87a9, 0x87ce, 0x81c8, 0x878c,
+ 0x8a49, 0x8cad, 0x8b43, 0x772b, 0x74f8, 0x84da, 0x3635, 0x69b2,
+ 0x8da6, 0xee8c, 0x89a9, 0x7468, 0x6db9, 0x87c1, 0xee91, 0x74e7,
+ 0x3ddb, 0x7176, 0x60a4, 0x619c, 0x3cd1, 0x7162, 0x6077, 0xee9a,
+ 0x7f71, 0xee9c, 0x7250, 0x60e9, 0x4b7e, 0x5220, 0x3c18, 0xeea2,
+ 0xeea3, 0xeea4, 0xeea5, 0xeea6, 0xeea7, 0xeea8, 0xeea9, 0xeeaa,
+ 0x5cc1, 0xeeac, 0xeead, 0xeeae, 0xeeaf, 0xeeb0, 0xeeb1, 0x4562,
+ 0x5b1f, 0xeeb4, 0x9f50, 0x9ea6, 0xeeb7,
+ /* 0xa1 */
+ 0x3000, 0xff0c, 0x3001, 0x3002, 0xff0e, 0x2027, 0xff1b, 0xff1a,
+ 0xff1f, 0xff01, 0xfe30, 0x2026, 0x2025, 0xfe50, 0xfe51, 0xfe52,
+ 0x00b7, 0xfe54, 0xfe55, 0xfe56, 0xfe57, 0xff5c, 0x2013, 0xfe31,
+ 0x2014, 0xfe33, 0x2574, 0xfe34, 0xfe4f, 0xff08, 0xff09, 0xfe35,
+ 0xfe36, 0xff5b, 0xff5d, 0xfe37, 0xfe38, 0x3014, 0x3015, 0xfe39,
+ 0xfe3a, 0x3010, 0x3011, 0xfe3b, 0xfe3c, 0x300a, 0x300b, 0xfe3d,
+ 0xfe3e, 0x3008, 0x3009, 0xfe3f, 0xfe40, 0x300c, 0x300d, 0xfe41,
+ 0xfe42, 0x300e, 0x300f, 0xfe43, 0xfe44, 0xfe59, 0xfe5a, 0xfe5b,
+ 0xfe5c, 0xfe5d, 0xfe5e, 0x2018, 0x2019, 0x201c, 0x201d, 0x301d,
+ 0x301e, 0x2035, 0x2032, 0xff03, 0xff06, 0xff0a, 0x203b, 0x00a7,
+ 0x3003, 0x25cb, 0x25cf, 0x25b3, 0x25b2, 0x25ce, 0x2606, 0x2605,
+ 0x25c7, 0x25c6, 0x25a1, 0x25a0, 0x25bd, 0x25bc, 0x32a3, 0x2105,
+ 0x00af, 0xffe3, 0xff3f, 0x02cd, 0xfe49, 0xfe4a, 0xfe4d, 0xfe4e,
+ 0xfe4b, 0xfe4c, 0xfe5f, 0xfe60, 0xfe61, 0xff0b, 0xff0d, 0x00d7,
+ 0x00f7, 0x00b1, 0x221a, 0xff1c, 0xff1e, 0xff1d, 0x2266, 0x2267,
+ 0x2260, 0x221e, 0x2252, 0x2261, 0xfe62, 0xfe63, 0xfe64, 0xfe65,
+ 0xfe66, 0xff5e, 0x2229, 0x222a, 0x22a5, 0x2220, 0x221f, 0x22bf,
+ 0x33d2, 0x33d1, 0x222b, 0x222e, 0x2235, 0x2234, 0x2640, 0x2642,
+ 0x2295, 0x2299, 0x2191, 0x2193, 0x2190, 0x2192, 0x2196, 0x2197,
+ 0x2199, 0x2198, 0x2225, 0x2223, 0xff0f,
+ /* 0xa2 */
+ 0xff3c, 0x2215, 0xfe68, 0xff04, 0xffe5, 0x3012, 0xffe0, 0xffe1,
+ 0xff05, 0xff20, 0x2103, 0x2109, 0xfe69, 0xfe6a, 0xfe6b, 0x33d5,
+ 0x339c, 0x339d, 0x339e, 0x33ce, 0x33a1, 0x338e, 0x338f, 0x33c4,
+ 0x00b0, 0x5159, 0x515b, 0x515e, 0x515d, 0x5161, 0x5163, 0x55e7,
+ 0x74e9, 0x7cce, 0x2581, 0x2582, 0x2583, 0x2584, 0x2585, 0x2586,
+ 0x2587, 0x2588, 0x258f, 0x258e, 0x258d, 0x258c, 0x258b, 0x258a,
+ 0x2589, 0x253c, 0x2534, 0x252c, 0x2524, 0x251c, 0x2594, 0x2500,
+ 0x2502, 0x2595, 0x250c, 0x2510, 0x2514, 0x2518, 0x256d, 0x256e,
+ 0x2570, 0x256f, 0x2550, 0x255e, 0x256a, 0x2561, 0x25e2, 0x25e3,
+ 0x25e5, 0x25e4, 0x2571, 0x2572, 0x2573, 0xff10, 0xff11, 0xff12,
+ 0xff13, 0xff14, 0xff15, 0xff16, 0xff17, 0xff18, 0xff19, 0x2160,
+ 0x2161, 0x2162, 0x2163, 0x2164, 0x2165, 0x2166, 0x2167, 0x2168,
+ 0x2169, 0x3021, 0x3022, 0x3023, 0x3024, 0x3025, 0x3026, 0x3027,
+ 0x3028, 0x3029, 0x5341, 0x5344, 0x5345, 0xff21, 0xff22, 0xff23,
+ 0xff24, 0xff25, 0xff26, 0xff27, 0xff28, 0xff29, 0xff2a, 0xff2b,
+ 0xff2c, 0xff2d, 0xff2e, 0xff2f, 0xff30, 0xff31, 0xff32, 0xff33,
+ 0xff34, 0xff35, 0xff36, 0xff37, 0xff38, 0xff39, 0xff3a, 0xff41,
+ 0xff42, 0xff43, 0xff44, 0xff45, 0xff46, 0xff47, 0xff48, 0xff49,
+ 0xff4a, 0xff4b, 0xff4c, 0xff4d, 0xff4e, 0xff4f, 0xff50, 0xff51,
+ 0xff52, 0xff53, 0xff54, 0xff55, 0xff56,
+ /* 0xa3 */
+ 0xff57, 0xff58, 0xff59, 0xff5a, 0x0391, 0x0392, 0x0393, 0x0394,
+ 0x0395, 0x0396, 0x0397, 0x0398, 0x0399, 0x039a, 0x039b, 0x039c,
+ 0x039d, 0x039e, 0x039f, 0x03a0, 0x03a1, 0x03a3, 0x03a4, 0x03a5,
+ 0x03a6, 0x03a7, 0x03a8, 0x03a9, 0x03b1, 0x03b2, 0x03b3, 0x03b4,
+ 0x03b5, 0x03b6, 0x03b7, 0x03b8, 0x03b9, 0x03ba, 0x03bb, 0x03bc,
+ 0x03bd, 0x03be, 0x03bf, 0x03c0, 0x03c1, 0x03c3, 0x03c4, 0x03c5,
+ 0x03c6, 0x03c7, 0x03c8, 0x03c9, 0x3105, 0x3106, 0x3107, 0x3108,
+ 0x3109, 0x310a, 0x310b, 0x310c, 0x310d, 0x310e, 0x310f, 0x3110,
+ 0x3111, 0x3112, 0x3113, 0x3114, 0x3115, 0x3116, 0x3117, 0x3118,
+ 0x3119, 0x311a, 0x311b, 0x311c, 0x311d, 0x311e, 0x311f, 0x3120,
+ 0x3121, 0x3122, 0x3123, 0x3124, 0x3125, 0x3126, 0x3127, 0x3128,
+ 0x3129, 0x02d9, 0x02c9, 0x02ca, 0x02c7, 0x02cb, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ /* 0xa4 */
+ 0x4e00, 0x4e59, 0x4e01, 0x4e03, 0x4e43, 0x4e5d, 0x4e86, 0x4e8c,
+ 0x4eba, 0x513f, 0x5165, 0x516b, 0x51e0, 0x5200, 0x5201, 0x529b,
+ 0x5315, 0x5341, 0x535c, 0x53c8, 0x4e09, 0x4e0b, 0x4e08, 0x4e0a,
+ 0x4e2b, 0x4e38, 0x51e1, 0x4e45, 0x4e48, 0x4e5f, 0x4e5e, 0x4e8e,
+ 0x4ea1, 0x5140, 0x5203, 0x52fa, 0x5343, 0x53c9, 0x53e3, 0x571f,
+ 0x58eb, 0x5915, 0x5927, 0x5973, 0x5b50, 0x5b51, 0x5b53, 0x5bf8,
+ 0x5c0f, 0x5c22, 0x5c38, 0x5c71, 0x5ddd, 0x5de5, 0x5df1, 0x5df2,
+ 0x5df3, 0x5dfe, 0x5e72, 0x5efe, 0x5f0b, 0x5f13, 0x624d, 0x4e11,
+ 0x4e10, 0x4e0d, 0x4e2d, 0x4e30, 0x4e39, 0x4e4b, 0x5c39, 0x4e88,
+ 0x4e91, 0x4e95, 0x4e92, 0x4e94, 0x4ea2, 0x4ec1, 0x4ec0, 0x4ec3,
+ 0x4ec6, 0x4ec7, 0x4ecd, 0x4eca, 0x4ecb, 0x4ec4, 0x5143, 0x5141,
+ 0x5167, 0x516d, 0x516e, 0x516c, 0x5197, 0x51f6, 0x5206, 0x5207,
+ 0x5208, 0x52fb, 0x52fe, 0x52ff, 0x5316, 0x5339, 0x5348, 0x5347,
+ 0x5345, 0x535e, 0x5384, 0x53cb, 0x53ca, 0x53cd, 0x58ec, 0x5929,
+ 0x592b, 0x592a, 0x592d, 0x5b54, 0x5c11, 0x5c24, 0x5c3a, 0x5c6f,
+ 0x5df4, 0x5e7b, 0x5eff, 0x5f14, 0x5f15, 0x5fc3, 0x6208, 0x6236,
+ 0x624b, 0x624e, 0x652f, 0x6587, 0x6597, 0x65a4, 0x65b9, 0x65e5,
+ 0x66f0, 0x6708, 0x6728, 0x6b20, 0x6b62, 0x6b79, 0x6bcb, 0x6bd4,
+ 0x6bdb, 0x6c0f, 0x6c34, 0x706b, 0x722a, 0x7236, 0x723b, 0x7247,
+ 0x7259, 0x725b, 0x72ac, 0x738b, 0x4e19,
+ /* 0xa5 */
+ 0x4e16, 0x4e15, 0x4e14, 0x4e18, 0x4e3b, 0x4e4d, 0x4e4f, 0x4e4e,
+ 0x4ee5, 0x4ed8, 0x4ed4, 0x4ed5, 0x4ed6, 0x4ed7, 0x4ee3, 0x4ee4,
+ 0x4ed9, 0x4ede, 0x5145, 0x5144, 0x5189, 0x518a, 0x51ac, 0x51f9,
+ 0x51fa, 0x51f8, 0x520a, 0x52a0, 0x529f, 0x5305, 0x5306, 0x5317,
+ 0x531d, 0x4edf, 0x534a, 0x5349, 0x5361, 0x5360, 0x536f, 0x536e,
+ 0x53bb, 0x53ef, 0x53e4, 0x53f3, 0x53ec, 0x53ee, 0x53e9, 0x53e8,
+ 0x53fc, 0x53f8, 0x53f5, 0x53eb, 0x53e6, 0x53ea, 0x53f2, 0x53f1,
+ 0x53f0, 0x53e5, 0x53ed, 0x53fb, 0x56db, 0x56da, 0x5916, 0x592e,
+ 0x5931, 0x5974, 0x5976, 0x5b55, 0x5b83, 0x5c3c, 0x5de8, 0x5de7,
+ 0x5de6, 0x5e02, 0x5e03, 0x5e73, 0x5e7c, 0x5f01, 0x5f18, 0x5f17,
+ 0x5fc5, 0x620a, 0x6253, 0x6254, 0x6252, 0x6251, 0x65a5, 0x65e6,
+ 0x672e, 0x672c, 0x672a, 0x672b, 0x672d, 0x6b63, 0x6bcd, 0x6c11,
+ 0x6c10, 0x6c38, 0x6c41, 0x6c40, 0x6c3e, 0x72af, 0x7384, 0x7389,
+ 0x74dc, 0x74e6, 0x7518, 0x751f, 0x7528, 0x7529, 0x7530, 0x7531,
+ 0x7532, 0x7533, 0x758b, 0x767d, 0x76ae, 0x76bf, 0x76ee, 0x77db,
+ 0x77e2, 0x77f3, 0x793a, 0x79be, 0x7a74, 0x7acb, 0x4e1e, 0x4e1f,
+ 0x4e52, 0x4e53, 0x4e69, 0x4e99, 0x4ea4, 0x4ea6, 0x4ea5, 0x4eff,
+ 0x4f09, 0x4f19, 0x4f0a, 0x4f15, 0x4f0d, 0x4f10, 0x4f11, 0x4f0f,
+ 0x4ef2, 0x4ef6, 0x4efb, 0x4ef0, 0x4ef3, 0x4efd, 0x4f01, 0x4f0b,
+ 0x5149, 0x5147, 0x5146, 0x5148, 0x5168,
+ /* 0xa6 */
+ 0x5171, 0x518d, 0x51b0, 0x5217, 0x5211, 0x5212, 0x520e, 0x5216,
+ 0x52a3, 0x5308, 0x5321, 0x5320, 0x5370, 0x5371, 0x5409, 0x540f,
+ 0x540c, 0x540a, 0x5410, 0x5401, 0x540b, 0x5404, 0x5411, 0x540d,
+ 0x5408, 0x5403, 0x540e, 0x5406, 0x5412, 0x56e0, 0x56de, 0x56dd,
+ 0x5733, 0x5730, 0x5728, 0x572d, 0x572c, 0x572f, 0x5729, 0x5919,
+ 0x591a, 0x5937, 0x5938, 0x5984, 0x5978, 0x5983, 0x597d, 0x5979,
+ 0x5982, 0x5981, 0x5b57, 0x5b58, 0x5b87, 0x5b88, 0x5b85, 0x5b89,
+ 0x5bfa, 0x5c16, 0x5c79, 0x5dde, 0x5e06, 0x5e76, 0x5e74, 0x5f0f,
+ 0x5f1b, 0x5fd9, 0x5fd6, 0x620e, 0x620c, 0x620d, 0x6210, 0x6263,
+ 0x625b, 0x6258, 0x6536, 0x65e9, 0x65e8, 0x65ec, 0x65ed, 0x66f2,
+ 0x66f3, 0x6709, 0x673d, 0x6734, 0x6731, 0x6735, 0x6b21, 0x6b64,
+ 0x6b7b, 0x6c16, 0x6c5d, 0x6c57, 0x6c59, 0x6c5f, 0x6c60, 0x6c50,
+ 0x6c55, 0x6c61, 0x6c5b, 0x6c4d, 0x6c4e, 0x7070, 0x725f, 0x725d,
+ 0x767e, 0x7af9, 0x7c73, 0x7cf8, 0x7f36, 0x7f8a, 0x7fbd, 0x8001,
+ 0x8003, 0x800c, 0x8012, 0x8033, 0x807f, 0x8089, 0x808b, 0x808c,
+ 0x81e3, 0x81ea, 0x81f3, 0x81fc, 0x820c, 0x821b, 0x821f, 0x826e,
+ 0x8272, 0x827e, 0x866b, 0x8840, 0x884c, 0x8863, 0x897f, 0x9621,
+ 0x4e32, 0x4ea8, 0x4f4d, 0x4f4f, 0x4f47, 0x4f57, 0x4f5e, 0x4f34,
+ 0x4f5b, 0x4f55, 0x4f30, 0x4f50, 0x4f51, 0x4f3d, 0x4f3a, 0x4f38,
+ 0x4f43, 0x4f54, 0x4f3c, 0x4f46, 0x4f63,
+ /* 0xa7 */
+ 0x4f5c, 0x4f60, 0x4f2f, 0x4f4e, 0x4f36, 0x4f59, 0x4f5d, 0x4f48,
+ 0x4f5a, 0x514c, 0x514b, 0x514d, 0x5175, 0x51b6, 0x51b7, 0x5225,
+ 0x5224, 0x5229, 0x522a, 0x5228, 0x52ab, 0x52a9, 0x52aa, 0x52ac,
+ 0x5323, 0x5373, 0x5375, 0x541d, 0x542d, 0x541e, 0x543e, 0x5426,
+ 0x544e, 0x5427, 0x5446, 0x5443, 0x5433, 0x5448, 0x5442, 0x541b,
+ 0x5429, 0x544a, 0x5439, 0x543b, 0x5438, 0x542e, 0x5435, 0x5436,
+ 0x5420, 0x543c, 0x5440, 0x5431, 0x542b, 0x541f, 0x542c, 0x56ea,
+ 0x56f0, 0x56e4, 0x56eb, 0x574a, 0x5751, 0x5740, 0x574d, 0x5747,
+ 0x574e, 0x573e, 0x5750, 0x574f, 0x573b, 0x58ef, 0x593e, 0x599d,
+ 0x5992, 0x59a8, 0x599e, 0x59a3, 0x5999, 0x5996, 0x598d, 0x59a4,
+ 0x5993, 0x598a, 0x59a5, 0x5b5d, 0x5b5c, 0x5b5a, 0x5b5b, 0x5b8c,
+ 0x5b8b, 0x5b8f, 0x5c2c, 0x5c40, 0x5c41, 0x5c3f, 0x5c3e, 0x5c90,
+ 0x5c91, 0x5c94, 0x5c8c, 0x5deb, 0x5e0c, 0x5e8f, 0x5e87, 0x5e8a,
+ 0x5ef7, 0x5f04, 0x5f1f, 0x5f64, 0x5f62, 0x5f77, 0x5f79, 0x5fd8,
+ 0x5fcc, 0x5fd7, 0x5fcd, 0x5ff1, 0x5feb, 0x5ff8, 0x5fea, 0x6212,
+ 0x6211, 0x6284, 0x6297, 0x6296, 0x6280, 0x6276, 0x6289, 0x626d,
+ 0x628a, 0x627c, 0x627e, 0x6279, 0x6273, 0x6292, 0x626f, 0x6298,
+ 0x626e, 0x6295, 0x6293, 0x6291, 0x6286, 0x6539, 0x653b, 0x6538,
+ 0x65f1, 0x66f4, 0x675f, 0x674e, 0x674f, 0x6750, 0x6751, 0x675c,
+ 0x6756, 0x675e, 0x6749, 0x6746, 0x6760,
+ /* 0xa8 */
+ 0x6753, 0x6757, 0x6b65, 0x6bcf, 0x6c42, 0x6c5e, 0x6c99, 0x6c81,
+ 0x6c88, 0x6c89, 0x6c85, 0x6c9b, 0x6c6a, 0x6c7a, 0x6c90, 0x6c70,
+ 0x6c8c, 0x6c68, 0x6c96, 0x6c92, 0x6c7d, 0x6c83, 0x6c72, 0x6c7e,
+ 0x6c74, 0x6c86, 0x6c76, 0x6c8d, 0x6c94, 0x6c98, 0x6c82, 0x7076,
+ 0x707c, 0x707d, 0x7078, 0x7262, 0x7261, 0x7260, 0x72c4, 0x72c2,
+ 0x7396, 0x752c, 0x752b, 0x7537, 0x7538, 0x7682, 0x76ef, 0x77e3,
+ 0x79c1, 0x79c0, 0x79bf, 0x7a76, 0x7cfb, 0x7f55, 0x8096, 0x8093,
+ 0x809d, 0x8098, 0x809b, 0x809a, 0x80b2, 0x826f, 0x8292, 0x828b,
+ 0x828d, 0x898b, 0x89d2, 0x8a00, 0x8c37, 0x8c46, 0x8c55, 0x8c9d,
+ 0x8d64, 0x8d70, 0x8db3, 0x8eab, 0x8eca, 0x8f9b, 0x8fb0, 0x8fc2,
+ 0x8fc6, 0x8fc5, 0x8fc4, 0x5de1, 0x9091, 0x90a2, 0x90aa, 0x90a6,
+ 0x90a3, 0x9149, 0x91c6, 0x91cc, 0x9632, 0x962e, 0x9631, 0x962a,
+ 0x962c, 0x4e26, 0x4e56, 0x4e73, 0x4e8b, 0x4e9b, 0x4e9e, 0x4eab,
+ 0x4eac, 0x4f6f, 0x4f9d, 0x4f8d, 0x4f73, 0x4f7f, 0x4f6c, 0x4f9b,
+ 0x4f8b, 0x4f86, 0x4f83, 0x4f70, 0x4f75, 0x4f88, 0x4f69, 0x4f7b,
+ 0x4f96, 0x4f7e, 0x4f8f, 0x4f91, 0x4f7a, 0x5154, 0x5152, 0x5155,
+ 0x5169, 0x5177, 0x5176, 0x5178, 0x51bd, 0x51fd, 0x523b, 0x5238,
+ 0x5237, 0x523a, 0x5230, 0x522e, 0x5236, 0x5241, 0x52be, 0x52bb,
+ 0x5352, 0x5354, 0x5353, 0x5351, 0x5366, 0x5377, 0x5378, 0x5379,
+ 0x53d6, 0x53d4, 0x53d7, 0x5473, 0x5475,
+ /* 0xa9 */
+ 0x5496, 0x5478, 0x5495, 0x5480, 0x547b, 0x5477, 0x5484, 0x5492,
+ 0x5486, 0x547c, 0x5490, 0x5471, 0x5476, 0x548c, 0x549a, 0x5462,
+ 0x5468, 0x548b, 0x547d, 0x548e, 0x56fa, 0x5783, 0x5777, 0x576a,
+ 0x5769, 0x5761, 0x5766, 0x5764, 0x577c, 0x591c, 0x5949, 0x5947,
+ 0x5948, 0x5944, 0x5954, 0x59be, 0x59bb, 0x59d4, 0x59b9, 0x59ae,
+ 0x59d1, 0x59c6, 0x59d0, 0x59cd, 0x59cb, 0x59d3, 0x59ca, 0x59af,
+ 0x59b3, 0x59d2, 0x59c5, 0x5b5f, 0x5b64, 0x5b63, 0x5b97, 0x5b9a,
+ 0x5b98, 0x5b9c, 0x5b99, 0x5b9b, 0x5c1a, 0x5c48, 0x5c45, 0x5c46,
+ 0x5cb7, 0x5ca1, 0x5cb8, 0x5ca9, 0x5cab, 0x5cb1, 0x5cb3, 0x5e18,
+ 0x5e1a, 0x5e16, 0x5e15, 0x5e1b, 0x5e11, 0x5e78, 0x5e9a, 0x5e97,
+ 0x5e9c, 0x5e95, 0x5e96, 0x5ef6, 0x5f26, 0x5f27, 0x5f29, 0x5f80,
+ 0x5f81, 0x5f7f, 0x5f7c, 0x5fdd, 0x5fe0, 0x5ffd, 0x5ff5, 0x5fff,
+ 0x600f, 0x6014, 0x602f, 0x6035, 0x6016, 0x602a, 0x6015, 0x6021,
+ 0x6027, 0x6029, 0x602b, 0x601b, 0x6216, 0x6215, 0x623f, 0x623e,
+ 0x6240, 0x627f, 0x62c9, 0x62cc, 0x62c4, 0x62bf, 0x62c2, 0x62b9,
+ 0x62d2, 0x62db, 0x62ab, 0x62d3, 0x62d4, 0x62cb, 0x62c8, 0x62a8,
+ 0x62bd, 0x62bc, 0x62d0, 0x62d9, 0x62c7, 0x62cd, 0x62b5, 0x62da,
+ 0x62b1, 0x62d8, 0x62d6, 0x62d7, 0x62c6, 0x62ac, 0x62ce, 0x653e,
+ 0x65a7, 0x65bc, 0x65fa, 0x6614, 0x6613, 0x660c, 0x6606, 0x6602,
+ 0x660e, 0x6600, 0x660f, 0x6615, 0x660a,
+ /* 0xaa */
+ 0x6607, 0x670d, 0x670b, 0x676d, 0x678b, 0x6795, 0x6771, 0x679c,
+ 0x6773, 0x6777, 0x6787, 0x679d, 0x6797, 0x676f, 0x6770, 0x677f,
+ 0x6789, 0x677e, 0x6790, 0x6775, 0x679a, 0x6793, 0x677c, 0x676a,
+ 0x6772, 0x6b23, 0x6b66, 0x6b67, 0x6b7f, 0x6c13, 0x6c1b, 0x6ce3,
+ 0x6ce8, 0x6cf3, 0x6cb1, 0x6ccc, 0x6ce5, 0x6cb3, 0x6cbd, 0x6cbe,
+ 0x6cbc, 0x6ce2, 0x6cab, 0x6cd5, 0x6cd3, 0x6cb8, 0x6cc4, 0x6cb9,
+ 0x6cc1, 0x6cae, 0x6cd7, 0x6cc5, 0x6cf1, 0x6cbf, 0x6cbb, 0x6ce1,
+ 0x6cdb, 0x6cca, 0x6cac, 0x6cef, 0x6cdc, 0x6cd6, 0x6ce0, 0x7095,
+ 0x708e, 0x7092, 0x708a, 0x7099, 0x722c, 0x722d, 0x7238, 0x7248,
+ 0x7267, 0x7269, 0x72c0, 0x72ce, 0x72d9, 0x72d7, 0x72d0, 0x73a9,
+ 0x73a8, 0x739f, 0x73ab, 0x73a5, 0x753d, 0x759d, 0x7599, 0x759a,
+ 0x7684, 0x76c2, 0x76f2, 0x76f4, 0x77e5, 0x77fd, 0x793e, 0x7940,
+ 0x7941, 0x79c9, 0x79c8, 0x7a7a, 0x7a79, 0x7afa, 0x7cfe, 0x7f54,
+ 0x7f8c, 0x7f8b, 0x8005, 0x80ba, 0x80a5, 0x80a2, 0x80b1, 0x80a1,
+ 0x80ab, 0x80a9, 0x80b4, 0x80aa, 0x80af, 0x81e5, 0x81fe, 0x820d,
+ 0x82b3, 0x829d, 0x8299, 0x82ad, 0x82bd, 0x829f, 0x82b9, 0x82b1,
+ 0x82ac, 0x82a5, 0x82af, 0x82b8, 0x82a3, 0x82b0, 0x82be, 0x82b7,
+ 0x864e, 0x8671, 0x521d, 0x8868, 0x8ecb, 0x8fce, 0x8fd4, 0x8fd1,
+ 0x90b5, 0x90b8, 0x90b1, 0x90b6, 0x91c7, 0x91d1, 0x9577, 0x9580,
+ 0x961c, 0x9640, 0x963f, 0x963b, 0x9644,
+ /* 0xab */
+ 0x9642, 0x96b9, 0x96e8, 0x9752, 0x975e, 0x4e9f, 0x4ead, 0x4eae,
+ 0x4fe1, 0x4fb5, 0x4faf, 0x4fbf, 0x4fe0, 0x4fd1, 0x4fcf, 0x4fdd,
+ 0x4fc3, 0x4fb6, 0x4fd8, 0x4fdf, 0x4fca, 0x4fd7, 0x4fae, 0x4fd0,
+ 0x4fc4, 0x4fc2, 0x4fda, 0x4fce, 0x4fde, 0x4fb7, 0x5157, 0x5192,
+ 0x5191, 0x51a0, 0x524e, 0x5243, 0x524a, 0x524d, 0x524c, 0x524b,
+ 0x5247, 0x52c7, 0x52c9, 0x52c3, 0x52c1, 0x530d, 0x5357, 0x537b,
+ 0x539a, 0x53db, 0x54ac, 0x54c0, 0x54a8, 0x54ce, 0x54c9, 0x54b8,
+ 0x54a6, 0x54b3, 0x54c7, 0x54c2, 0x54bd, 0x54aa, 0x54c1, 0x54c4,
+ 0x54c8, 0x54af, 0x54ab, 0x54b1, 0x54bb, 0x54a9, 0x54a7, 0x54bf,
+ 0x56ff, 0x5782, 0x578b, 0x57a0, 0x57a3, 0x57a2, 0x57ce, 0x57ae,
+ 0x5793, 0x5955, 0x5951, 0x594f, 0x594e, 0x5950, 0x59dc, 0x59d8,
+ 0x59ff, 0x59e3, 0x59e8, 0x5a03, 0x59e5, 0x59ea, 0x59da, 0x59e6,
+ 0x5a01, 0x59fb, 0x5b69, 0x5ba3, 0x5ba6, 0x5ba4, 0x5ba2, 0x5ba5,
+ 0x5c01, 0x5c4e, 0x5c4f, 0x5c4d, 0x5c4b, 0x5cd9, 0x5cd2, 0x5df7,
+ 0x5e1d, 0x5e25, 0x5e1f, 0x5e7d, 0x5ea0, 0x5ea6, 0x5efa, 0x5f08,
+ 0x5f2d, 0x5f65, 0x5f88, 0x5f85, 0x5f8a, 0x5f8b, 0x5f87, 0x5f8c,
+ 0x5f89, 0x6012, 0x601d, 0x6020, 0x6025, 0x600e, 0x6028, 0x604d,
+ 0x6070, 0x6068, 0x6062, 0x6046, 0x6043, 0x606c, 0x606b, 0x606a,
+ 0x6064, 0x6241, 0x62dc, 0x6316, 0x6309, 0x62fc, 0x62ed, 0x6301,
+ 0x62ee, 0x62fd, 0x6307, 0x62f1, 0x62f7,
+ /* 0xac */
+ 0x62ef, 0x62ec, 0x62fe, 0x62f4, 0x6311, 0x6302, 0x653f, 0x6545,
+ 0x65ab, 0x65bd, 0x65e2, 0x6625, 0x662d, 0x6620, 0x6627, 0x662f,
+ 0x661f, 0x6628, 0x6631, 0x6624, 0x66f7, 0x67ff, 0x67d3, 0x67f1,
+ 0x67d4, 0x67d0, 0x67ec, 0x67b6, 0x67af, 0x67f5, 0x67e9, 0x67ef,
+ 0x67c4, 0x67d1, 0x67b4, 0x67da, 0x67e5, 0x67b8, 0x67cf, 0x67de,
+ 0x67f3, 0x67b0, 0x67d9, 0x67e2, 0x67dd, 0x67d2, 0x6b6a, 0x6b83,
+ 0x6b86, 0x6bb5, 0x6bd2, 0x6bd7, 0x6c1f, 0x6cc9, 0x6d0b, 0x6d32,
+ 0x6d2a, 0x6d41, 0x6d25, 0x6d0c, 0x6d31, 0x6d1e, 0x6d17, 0x6d3b,
+ 0x6d3d, 0x6d3e, 0x6d36, 0x6d1b, 0x6cf5, 0x6d39, 0x6d27, 0x6d38,
+ 0x6d29, 0x6d2e, 0x6d35, 0x6d0e, 0x6d2b, 0x70ab, 0x70ba, 0x70b3,
+ 0x70ac, 0x70af, 0x70ad, 0x70b8, 0x70ae, 0x70a4, 0x7230, 0x7272,
+ 0x726f, 0x7274, 0x72e9, 0x72e0, 0x72e1, 0x73b7, 0x73ca, 0x73bb,
+ 0x73b2, 0x73cd, 0x73c0, 0x73b3, 0x751a, 0x752d, 0x754f, 0x754c,
+ 0x754e, 0x754b, 0x75ab, 0x75a4, 0x75a5, 0x75a2, 0x75a3, 0x7678,
+ 0x7686, 0x7687, 0x7688, 0x76c8, 0x76c6, 0x76c3, 0x76c5, 0x7701,
+ 0x76f9, 0x76f8, 0x7709, 0x770b, 0x76fe, 0x76fc, 0x7707, 0x77dc,
+ 0x7802, 0x7814, 0x780c, 0x780d, 0x7946, 0x7949, 0x7948, 0x7947,
+ 0x79b9, 0x79ba, 0x79d1, 0x79d2, 0x79cb, 0x7a7f, 0x7a81, 0x7aff,
+ 0x7afd, 0x7c7d, 0x7d02, 0x7d05, 0x7d00, 0x7d09, 0x7d07, 0x7d04,
+ 0x7d06, 0x7f38, 0x7f8e, 0x7fbf, 0x8004,
+ /* 0xad */
+ 0x8010, 0x800d, 0x8011, 0x8036, 0x80d6, 0x80e5, 0x80da, 0x80c3,
+ 0x80c4, 0x80cc, 0x80e1, 0x80db, 0x80ce, 0x80de, 0x80e4, 0x80dd,
+ 0x81f4, 0x8222, 0x82e7, 0x8303, 0x8305, 0x82e3, 0x82db, 0x82e6,
+ 0x8304, 0x82e5, 0x8302, 0x8309, 0x82d2, 0x82d7, 0x82f1, 0x8301,
+ 0x82dc, 0x82d4, 0x82d1, 0x82de, 0x82d3, 0x82df, 0x82ef, 0x8306,
+ 0x8650, 0x8679, 0x867b, 0x867a, 0x884d, 0x886b, 0x8981, 0x89d4,
+ 0x8a08, 0x8a02, 0x8a03, 0x8c9e, 0x8ca0, 0x8d74, 0x8d73, 0x8db4,
+ 0x8ecd, 0x8ecc, 0x8ff0, 0x8fe6, 0x8fe2, 0x8fea, 0x8fe5, 0x8fed,
+ 0x8feb, 0x8fe4, 0x8fe8, 0x90ca, 0x90ce, 0x90c1, 0x90c3, 0x914b,
+ 0x914a, 0x91cd, 0x9582, 0x9650, 0x964b, 0x964c, 0x964d, 0x9762,
+ 0x9769, 0x97cb, 0x97ed, 0x97f3, 0x9801, 0x98a8, 0x98db, 0x98df,
+ 0x9996, 0x9999, 0x4e58, 0x4eb3, 0x500c, 0x500d, 0x5023, 0x4fef,
+ 0x5026, 0x5025, 0x4ff8, 0x5029, 0x5016, 0x5006, 0x503c, 0x501f,
+ 0x501a, 0x5012, 0x5011, 0x4ffa, 0x5000, 0x5014, 0x5028, 0x4ff1,
+ 0x5021, 0x500b, 0x5019, 0x5018, 0x4ff3, 0x4fee, 0x502d, 0x502a,
+ 0x4ffe, 0x502b, 0x5009, 0x517c, 0x51a4, 0x51a5, 0x51a2, 0x51cd,
+ 0x51cc, 0x51c6, 0x51cb, 0x5256, 0x525c, 0x5254, 0x525b, 0x525d,
+ 0x532a, 0x537f, 0x539f, 0x539d, 0x53df, 0x54e8, 0x5510, 0x5501,
+ 0x5537, 0x54fc, 0x54e5, 0x54f2, 0x5506, 0x54fa, 0x5514, 0x54e9,
+ 0x54ed, 0x54e1, 0x5509, 0x54ee, 0x54ea,
+ /* 0xae */
+ 0x54e6, 0x5527, 0x5507, 0x54fd, 0x550f, 0x5703, 0x5704, 0x57c2,
+ 0x57d4, 0x57cb, 0x57c3, 0x5809, 0x590f, 0x5957, 0x5958, 0x595a,
+ 0x5a11, 0x5a18, 0x5a1c, 0x5a1f, 0x5a1b, 0x5a13, 0x59ec, 0x5a20,
+ 0x5a23, 0x5a29, 0x5a25, 0x5a0c, 0x5a09, 0x5b6b, 0x5c58, 0x5bb0,
+ 0x5bb3, 0x5bb6, 0x5bb4, 0x5bae, 0x5bb5, 0x5bb9, 0x5bb8, 0x5c04,
+ 0x5c51, 0x5c55, 0x5c50, 0x5ced, 0x5cfd, 0x5cfb, 0x5cea, 0x5ce8,
+ 0x5cf0, 0x5cf6, 0x5d01, 0x5cf4, 0x5dee, 0x5e2d, 0x5e2b, 0x5eab,
+ 0x5ead, 0x5ea7, 0x5f31, 0x5f92, 0x5f91, 0x5f90, 0x6059, 0x6063,
+ 0x6065, 0x6050, 0x6055, 0x606d, 0x6069, 0x606f, 0x6084, 0x609f,
+ 0x609a, 0x608d, 0x6094, 0x608c, 0x6085, 0x6096, 0x6247, 0x62f3,
+ 0x6308, 0x62ff, 0x634e, 0x633e, 0x632f, 0x6355, 0x6342, 0x6346,
+ 0x634f, 0x6349, 0x633a, 0x6350, 0x633d, 0x632a, 0x632b, 0x6328,
+ 0x634d, 0x634c, 0x6548, 0x6549, 0x6599, 0x65c1, 0x65c5, 0x6642,
+ 0x6649, 0x664f, 0x6643, 0x6652, 0x664c, 0x6645, 0x6641, 0x66f8,
+ 0x6714, 0x6715, 0x6717, 0x6821, 0x6838, 0x6848, 0x6846, 0x6853,
+ 0x6839, 0x6842, 0x6854, 0x6829, 0x68b3, 0x6817, 0x684c, 0x6851,
+ 0x683d, 0x67f4, 0x6850, 0x6840, 0x683c, 0x6843, 0x682a, 0x6845,
+ 0x6813, 0x6818, 0x6841, 0x6b8a, 0x6b89, 0x6bb7, 0x6c23, 0x6c27,
+ 0x6c28, 0x6c26, 0x6c24, 0x6cf0, 0x6d6a, 0x6d95, 0x6d88, 0x6d87,
+ 0x6d66, 0x6d78, 0x6d77, 0x6d59, 0x6d93,
+ /* 0xaf */
+ 0x6d6c, 0x6d89, 0x6d6e, 0x6d5a, 0x6d74, 0x6d69, 0x6d8c, 0x6d8a,
+ 0x6d79, 0x6d85, 0x6d65, 0x6d94, 0x70ca, 0x70d8, 0x70e4, 0x70d9,
+ 0x70c8, 0x70cf, 0x7239, 0x7279, 0x72fc, 0x72f9, 0x72fd, 0x72f8,
+ 0x72f7, 0x7386, 0x73ed, 0x7409, 0x73ee, 0x73e0, 0x73ea, 0x73de,
+ 0x7554, 0x755d, 0x755c, 0x755a, 0x7559, 0x75be, 0x75c5, 0x75c7,
+ 0x75b2, 0x75b3, 0x75bd, 0x75bc, 0x75b9, 0x75c2, 0x75b8, 0x768b,
+ 0x76b0, 0x76ca, 0x76cd, 0x76ce, 0x7729, 0x771f, 0x7720, 0x7728,
+ 0x77e9, 0x7830, 0x7827, 0x7838, 0x781d, 0x7834, 0x7837, 0x7825,
+ 0x782d, 0x7820, 0x781f, 0x7832, 0x7955, 0x7950, 0x7960, 0x795f,
+ 0x7956, 0x795e, 0x795d, 0x7957, 0x795a, 0x79e4, 0x79e3, 0x79e7,
+ 0x79df, 0x79e6, 0x79e9, 0x79d8, 0x7a84, 0x7a88, 0x7ad9, 0x7b06,
+ 0x7b11, 0x7c89, 0x7d21, 0x7d17, 0x7d0b, 0x7d0a, 0x7d20, 0x7d22,
+ 0x7d14, 0x7d10, 0x7d15, 0x7d1a, 0x7d1c, 0x7d0d, 0x7d19, 0x7d1b,
+ 0x7f3a, 0x7f5f, 0x7f94, 0x7fc5, 0x7fc1, 0x8006, 0x8018, 0x8015,
+ 0x8019, 0x8017, 0x803d, 0x803f, 0x80f1, 0x8102, 0x80f0, 0x8105,
+ 0x80ed, 0x80f4, 0x8106, 0x80f8, 0x80f3, 0x8108, 0x80fd, 0x810a,
+ 0x80fc, 0x80ef, 0x81ed, 0x81ec, 0x8200, 0x8210, 0x822a, 0x822b,
+ 0x8228, 0x822c, 0x82bb, 0x832b, 0x8352, 0x8354, 0x834a, 0x8338,
+ 0x8350, 0x8349, 0x8335, 0x8334, 0x834f, 0x8332, 0x8339, 0x8336,
+ 0x8317, 0x8340, 0x8331, 0x8328, 0x8343,
+ /* 0xb0 */
+ 0x8654, 0x868a, 0x86aa, 0x8693, 0x86a4, 0x86a9, 0x868c, 0x86a3,
+ 0x869c, 0x8870, 0x8877, 0x8881, 0x8882, 0x887d, 0x8879, 0x8a18,
+ 0x8a10, 0x8a0e, 0x8a0c, 0x8a15, 0x8a0a, 0x8a17, 0x8a13, 0x8a16,
+ 0x8a0f, 0x8a11, 0x8c48, 0x8c7a, 0x8c79, 0x8ca1, 0x8ca2, 0x8d77,
+ 0x8eac, 0x8ed2, 0x8ed4, 0x8ecf, 0x8fb1, 0x9001, 0x9006, 0x8ff7,
+ 0x9000, 0x8ffa, 0x8ff4, 0x9003, 0x8ffd, 0x9005, 0x8ff8, 0x9095,
+ 0x90e1, 0x90dd, 0x90e2, 0x9152, 0x914d, 0x914c, 0x91d8, 0x91dd,
+ 0x91d7, 0x91dc, 0x91d9, 0x9583, 0x9662, 0x9663, 0x9661, 0x965b,
+ 0x965d, 0x9664, 0x9658, 0x965e, 0x96bb, 0x98e2, 0x99ac, 0x9aa8,
+ 0x9ad8, 0x9b25, 0x9b32, 0x9b3c, 0x4e7e, 0x507a, 0x507d, 0x505c,
+ 0x5047, 0x5043, 0x504c, 0x505a, 0x5049, 0x5065, 0x5076, 0x504e,
+ 0x5055, 0x5075, 0x5074, 0x5077, 0x504f, 0x500f, 0x506f, 0x506d,
+ 0x515c, 0x5195, 0x51f0, 0x526a, 0x526f, 0x52d2, 0x52d9, 0x52d8,
+ 0x52d5, 0x5310, 0x530f, 0x5319, 0x533f, 0x5340, 0x533e, 0x53c3,
+ 0x66fc, 0x5546, 0x556a, 0x5566, 0x5544, 0x555e, 0x5561, 0x5543,
+ 0x554a, 0x5531, 0x5556, 0x554f, 0x5555, 0x552f, 0x5564, 0x5538,
+ 0x552e, 0x555c, 0x552c, 0x5563, 0x5533, 0x5541, 0x5557, 0x5708,
+ 0x570b, 0x5709, 0x57df, 0x5805, 0x580a, 0x5806, 0x57e0, 0x57e4,
+ 0x57fa, 0x5802, 0x5835, 0x57f7, 0x57f9, 0x5920, 0x5962, 0x5a36,
+ 0x5a41, 0x5a49, 0x5a66, 0x5a6a, 0x5a40,
+ /* 0xb1 */
+ 0x5a3c, 0x5a62, 0x5a5a, 0x5a46, 0x5a4a, 0x5b70, 0x5bc7, 0x5bc5,
+ 0x5bc4, 0x5bc2, 0x5bbf, 0x5bc6, 0x5c09, 0x5c08, 0x5c07, 0x5c60,
+ 0x5c5c, 0x5c5d, 0x5d07, 0x5d06, 0x5d0e, 0x5d1b, 0x5d16, 0x5d22,
+ 0x5d11, 0x5d29, 0x5d14, 0x5d19, 0x5d24, 0x5d27, 0x5d17, 0x5de2,
+ 0x5e38, 0x5e36, 0x5e33, 0x5e37, 0x5eb7, 0x5eb8, 0x5eb6, 0x5eb5,
+ 0x5ebe, 0x5f35, 0x5f37, 0x5f57, 0x5f6c, 0x5f69, 0x5f6b, 0x5f97,
+ 0x5f99, 0x5f9e, 0x5f98, 0x5fa1, 0x5fa0, 0x5f9c, 0x607f, 0x60a3,
+ 0x6089, 0x60a0, 0x60a8, 0x60cb, 0x60b4, 0x60e6, 0x60bd, 0x60c5,
+ 0x60bb, 0x60b5, 0x60dc, 0x60bc, 0x60d8, 0x60d5, 0x60c6, 0x60df,
+ 0x60b8, 0x60da, 0x60c7, 0x621a, 0x621b, 0x6248, 0x63a0, 0x63a7,
+ 0x6372, 0x6396, 0x63a2, 0x63a5, 0x6377, 0x6367, 0x6398, 0x63aa,
+ 0x6371, 0x63a9, 0x6389, 0x6383, 0x639b, 0x636b, 0x63a8, 0x6384,
+ 0x6388, 0x6399, 0x63a1, 0x63ac, 0x6392, 0x638f, 0x6380, 0x637b,
+ 0x6369, 0x6368, 0x637a, 0x655d, 0x6556, 0x6551, 0x6559, 0x6557,
+ 0x555f, 0x654f, 0x6558, 0x6555, 0x6554, 0x659c, 0x659b, 0x65ac,
+ 0x65cf, 0x65cb, 0x65cc, 0x65ce, 0x665d, 0x665a, 0x6664, 0x6668,
+ 0x6666, 0x665e, 0x66f9, 0x52d7, 0x671b, 0x6881, 0x68af, 0x68a2,
+ 0x6893, 0x68b5, 0x687f, 0x6876, 0x68b1, 0x68a7, 0x6897, 0x68b0,
+ 0x6883, 0x68c4, 0x68ad, 0x6886, 0x6885, 0x6894, 0x689d, 0x68a8,
+ 0x689f, 0x68a1, 0x6882, 0x6b32, 0x6bba,
+ /* 0xb2 */
+ 0x6beb, 0x6bec, 0x6c2b, 0x6d8e, 0x6dbc, 0x6df3, 0x6dd9, 0x6db2,
+ 0x6de1, 0x6dcc, 0x6de4, 0x6dfb, 0x6dfa, 0x6e05, 0x6dc7, 0x6dcb,
+ 0x6daf, 0x6dd1, 0x6dae, 0x6dde, 0x6df9, 0x6db8, 0x6df7, 0x6df5,
+ 0x6dc5, 0x6dd2, 0x6e1a, 0x6db5, 0x6dda, 0x6deb, 0x6dd8, 0x6dea,
+ 0x6df1, 0x6dee, 0x6de8, 0x6dc6, 0x6dc4, 0x6daa, 0x6dec, 0x6dbf,
+ 0x6de6, 0x70f9, 0x7109, 0x710a, 0x70fd, 0x70ef, 0x723d, 0x727d,
+ 0x7281, 0x731c, 0x731b, 0x7316, 0x7313, 0x7319, 0x7387, 0x7405,
+ 0x740a, 0x7403, 0x7406, 0x73fe, 0x740d, 0x74e0, 0x74f6, 0x74f7,
+ 0x751c, 0x7522, 0x7565, 0x7566, 0x7562, 0x7570, 0x758f, 0x75d4,
+ 0x75d5, 0x75b5, 0x75ca, 0x75cd, 0x768e, 0x76d4, 0x76d2, 0x76db,
+ 0x7737, 0x773e, 0x773c, 0x7736, 0x7738, 0x773a, 0x786b, 0x7843,
+ 0x784e, 0x7965, 0x7968, 0x796d, 0x79fb, 0x7a92, 0x7a95, 0x7b20,
+ 0x7b28, 0x7b1b, 0x7b2c, 0x7b26, 0x7b19, 0x7b1e, 0x7b2e, 0x7c92,
+ 0x7c97, 0x7c95, 0x7d46, 0x7d43, 0x7d71, 0x7d2e, 0x7d39, 0x7d3c,
+ 0x7d40, 0x7d30, 0x7d33, 0x7d44, 0x7d2f, 0x7d42, 0x7d32, 0x7d31,
+ 0x7f3d, 0x7f9e, 0x7f9a, 0x7fcc, 0x7fce, 0x7fd2, 0x801c, 0x804a,
+ 0x8046, 0x812f, 0x8116, 0x8123, 0x812b, 0x8129, 0x8130, 0x8124,
+ 0x8202, 0x8235, 0x8237, 0x8236, 0x8239, 0x838e, 0x839e, 0x8398,
+ 0x8378, 0x83a2, 0x8396, 0x83bd, 0x83ab, 0x8392, 0x838a, 0x8393,
+ 0x8389, 0x83a0, 0x8377, 0x837b, 0x837c,
+ /* 0xb3 */
+ 0x8386, 0x83a7, 0x8655, 0x5f6a, 0x86c7, 0x86c0, 0x86b6, 0x86c4,
+ 0x86b5, 0x86c6, 0x86cb, 0x86b1, 0x86af, 0x86c9, 0x8853, 0x889e,
+ 0x8888, 0x88ab, 0x8892, 0x8896, 0x888d, 0x888b, 0x8993, 0x898f,
+ 0x8a2a, 0x8a1d, 0x8a23, 0x8a25, 0x8a31, 0x8a2d, 0x8a1f, 0x8a1b,
+ 0x8a22, 0x8c49, 0x8c5a, 0x8ca9, 0x8cac, 0x8cab, 0x8ca8, 0x8caa,
+ 0x8ca7, 0x8d67, 0x8d66, 0x8dbe, 0x8dba, 0x8edb, 0x8edf, 0x9019,
+ 0x900d, 0x901a, 0x9017, 0x9023, 0x901f, 0x901d, 0x9010, 0x9015,
+ 0x901e, 0x9020, 0x900f, 0x9022, 0x9016, 0x901b, 0x9014, 0x90e8,
+ 0x90ed, 0x90fd, 0x9157, 0x91ce, 0x91f5, 0x91e6, 0x91e3, 0x91e7,
+ 0x91ed, 0x91e9, 0x9589, 0x966a, 0x9675, 0x9673, 0x9678, 0x9670,
+ 0x9674, 0x9676, 0x9677, 0x966c, 0x96c0, 0x96ea, 0x96e9, 0x7ae0,
+ 0x7adf, 0x9802, 0x9803, 0x9b5a, 0x9ce5, 0x9e75, 0x9e7f, 0x9ea5,
+ 0x9ebb, 0x50a2, 0x508d, 0x5085, 0x5099, 0x5091, 0x5080, 0x5096,
+ 0x5098, 0x509a, 0x6700, 0x51f1, 0x5272, 0x5274, 0x5275, 0x5269,
+ 0x52de, 0x52dd, 0x52db, 0x535a, 0x53a5, 0x557b, 0x5580, 0x55a7,
+ 0x557c, 0x558a, 0x559d, 0x5598, 0x5582, 0x559c, 0x55aa, 0x5594,
+ 0x5587, 0x558b, 0x5583, 0x55b3, 0x55ae, 0x559f, 0x553e, 0x55b2,
+ 0x559a, 0x55bb, 0x55ac, 0x55b1, 0x557e, 0x5589, 0x55ab, 0x5599,
+ 0x570d, 0x582f, 0x582a, 0x5834, 0x5824, 0x5830, 0x5831, 0x5821,
+ 0x581d, 0x5820, 0x58f9, 0x58fa, 0x5960,
+ /* 0xb4 */
+ 0x5a77, 0x5a9a, 0x5a7f, 0x5a92, 0x5a9b, 0x5aa7, 0x5b73, 0x5b71,
+ 0x5bd2, 0x5bcc, 0x5bd3, 0x5bd0, 0x5c0a, 0x5c0b, 0x5c31, 0x5d4c,
+ 0x5d50, 0x5d34, 0x5d47, 0x5dfd, 0x5e45, 0x5e3d, 0x5e40, 0x5e43,
+ 0x5e7e, 0x5eca, 0x5ec1, 0x5ec2, 0x5ec4, 0x5f3c, 0x5f6d, 0x5fa9,
+ 0x5faa, 0x5fa8, 0x60d1, 0x60e1, 0x60b2, 0x60b6, 0x60e0, 0x611c,
+ 0x6123, 0x60fa, 0x6115, 0x60f0, 0x60fb, 0x60f4, 0x6168, 0x60f1,
+ 0x610e, 0x60f6, 0x6109, 0x6100, 0x6112, 0x621f, 0x6249, 0x63a3,
+ 0x638c, 0x63cf, 0x63c0, 0x63e9, 0x63c9, 0x63c6, 0x63cd, 0x63d2,
+ 0x63e3, 0x63d0, 0x63e1, 0x63d6, 0x63ed, 0x63ee, 0x6376, 0x63f4,
+ 0x63ea, 0x63db, 0x6452, 0x63da, 0x63f9, 0x655e, 0x6566, 0x6562,
+ 0x6563, 0x6591, 0x6590, 0x65af, 0x666e, 0x6670, 0x6674, 0x6676,
+ 0x666f, 0x6691, 0x667a, 0x667e, 0x6677, 0x66fe, 0x66ff, 0x671f,
+ 0x671d, 0x68fa, 0x68d5, 0x68e0, 0x68d8, 0x68d7, 0x6905, 0x68df,
+ 0x68f5, 0x68ee, 0x68e7, 0x68f9, 0x68d2, 0x68f2, 0x68e3, 0x68cb,
+ 0x68cd, 0x690d, 0x6912, 0x690e, 0x68c9, 0x68da, 0x696e, 0x68fb,
+ 0x6b3e, 0x6b3a, 0x6b3d, 0x6b98, 0x6b96, 0x6bbc, 0x6bef, 0x6c2e,
+ 0x6c2f, 0x6c2c, 0x6e2f, 0x6e38, 0x6e54, 0x6e21, 0x6e32, 0x6e67,
+ 0x6e4a, 0x6e20, 0x6e25, 0x6e23, 0x6e1b, 0x6e5b, 0x6e58, 0x6e24,
+ 0x6e56, 0x6e6e, 0x6e2d, 0x6e26, 0x6e6f, 0x6e34, 0x6e4d, 0x6e3a,
+ 0x6e2c, 0x6e43, 0x6e1d, 0x6e3e, 0x6ecb,
+ /* 0xb5 */
+ 0x6e89, 0x6e19, 0x6e4e, 0x6e63, 0x6e44, 0x6e72, 0x6e69, 0x6e5f,
+ 0x7119, 0x711a, 0x7126, 0x7130, 0x7121, 0x7136, 0x716e, 0x711c,
+ 0x724c, 0x7284, 0x7280, 0x7336, 0x7325, 0x7334, 0x7329, 0x743a,
+ 0x742a, 0x7433, 0x7422, 0x7425, 0x7435, 0x7436, 0x7434, 0x742f,
+ 0x741b, 0x7426, 0x7428, 0x7525, 0x7526, 0x756b, 0x756a, 0x75e2,
+ 0x75db, 0x75e3, 0x75d9, 0x75d8, 0x75de, 0x75e0, 0x767b, 0x767c,
+ 0x7696, 0x7693, 0x76b4, 0x76dc, 0x774f, 0x77ed, 0x785d, 0x786c,
+ 0x786f, 0x7a0d, 0x7a08, 0x7a0b, 0x7a05, 0x7a00, 0x7a98, 0x7a97,
+ 0x7a96, 0x7ae5, 0x7ae3, 0x7b49, 0x7b56, 0x7b46, 0x7b50, 0x7b52,
+ 0x7b54, 0x7b4d, 0x7b4b, 0x7b4f, 0x7b51, 0x7c9f, 0x7ca5, 0x7d5e,
+ 0x7d50, 0x7d68, 0x7d55, 0x7d2b, 0x7d6e, 0x7d72, 0x7d61, 0x7d66,
+ 0x7d62, 0x7d70, 0x7d73, 0x5584, 0x7fd4, 0x7fd5, 0x800b, 0x8052,
+ 0x8085, 0x8155, 0x8154, 0x814b, 0x8151, 0x814e, 0x8139, 0x8146,
+ 0x813e, 0x814c, 0x8153, 0x8174, 0x8212, 0x821c, 0x83e9, 0x8403,
+ 0x83f8, 0x840d, 0x83e0, 0x83c5, 0x840b, 0x83c1, 0x83ef, 0x83f1,
+ 0x83f4, 0x8457, 0x840a, 0x83f0, 0x840c, 0x83cc, 0x83fd, 0x83f2,
+ 0x83ca, 0x8438, 0x840e, 0x8404, 0x83dc, 0x8407, 0x83d4, 0x83df,
+ 0x865b, 0x86df, 0x86d9, 0x86ed, 0x86d4, 0x86db, 0x86e4, 0x86d0,
+ 0x86de, 0x8857, 0x88c1, 0x88c2, 0x88b1, 0x8983, 0x8996, 0x8a3b,
+ 0x8a60, 0x8a55, 0x8a5e, 0x8a3c, 0x8a41,
+ /* 0xb6 */
+ 0x8a54, 0x8a5b, 0x8a50, 0x8a46, 0x8a34, 0x8a3a, 0x8a36, 0x8a56,
+ 0x8c61, 0x8c82, 0x8caf, 0x8cbc, 0x8cb3, 0x8cbd, 0x8cc1, 0x8cbb,
+ 0x8cc0, 0x8cb4, 0x8cb7, 0x8cb6, 0x8cbf, 0x8cb8, 0x8d8a, 0x8d85,
+ 0x8d81, 0x8dce, 0x8ddd, 0x8dcb, 0x8dda, 0x8dd1, 0x8dcc, 0x8ddb,
+ 0x8dc6, 0x8efb, 0x8ef8, 0x8efc, 0x8f9c, 0x902e, 0x9035, 0x9031,
+ 0x9038, 0x9032, 0x9036, 0x9102, 0x90f5, 0x9109, 0x90fe, 0x9163,
+ 0x9165, 0x91cf, 0x9214, 0x9215, 0x9223, 0x9209, 0x921e, 0x920d,
+ 0x9210, 0x9207, 0x9211, 0x9594, 0x958f, 0x958b, 0x9591, 0x9593,
+ 0x9592, 0x958e, 0x968a, 0x968e, 0x968b, 0x967d, 0x9685, 0x9686,
+ 0x968d, 0x9672, 0x9684, 0x96c1, 0x96c5, 0x96c4, 0x96c6, 0x96c7,
+ 0x96ef, 0x96f2, 0x97cc, 0x9805, 0x9806, 0x9808, 0x98e7, 0x98ea,
+ 0x98ef, 0x98e9, 0x98f2, 0x98ed, 0x99ae, 0x99ad, 0x9ec3, 0x9ecd,
+ 0x9ed1, 0x4e82, 0x50ad, 0x50b5, 0x50b2, 0x50b3, 0x50c5, 0x50be,
+ 0x50ac, 0x50b7, 0x50bb, 0x50af, 0x50c7, 0x527f, 0x5277, 0x527d,
+ 0x52df, 0x52e6, 0x52e4, 0x52e2, 0x52e3, 0x532f, 0x55df, 0x55e8,
+ 0x55d3, 0x55e6, 0x55ce, 0x55dc, 0x55c7, 0x55d1, 0x55e3, 0x55e4,
+ 0x55ef, 0x55da, 0x55e1, 0x55c5, 0x55c6, 0x55e5, 0x55c9, 0x5712,
+ 0x5713, 0x585e, 0x5851, 0x5858, 0x5857, 0x585a, 0x5854, 0x586b,
+ 0x584c, 0x586d, 0x584a, 0x5862, 0x5852, 0x584b, 0x5967, 0x5ac1,
+ 0x5ac9, 0x5acc, 0x5abe, 0x5abd, 0x5abc,
+ /* 0xb7 */
+ 0x5ab3, 0x5ac2, 0x5ab2, 0x5d69, 0x5d6f, 0x5e4c, 0x5e79, 0x5ec9,
+ 0x5ec8, 0x5f12, 0x5f59, 0x5fac, 0x5fae, 0x611a, 0x610f, 0x6148,
+ 0x611f, 0x60f3, 0x611b, 0x60f9, 0x6101, 0x6108, 0x614e, 0x614c,
+ 0x6144, 0x614d, 0x613e, 0x6134, 0x6127, 0x610d, 0x6106, 0x6137,
+ 0x6221, 0x6222, 0x6413, 0x643e, 0x641e, 0x642a, 0x642d, 0x643d,
+ 0x642c, 0x640f, 0x641c, 0x6414, 0x640d, 0x6436, 0x6416, 0x6417,
+ 0x6406, 0x656c, 0x659f, 0x65b0, 0x6697, 0x6689, 0x6687, 0x6688,
+ 0x6696, 0x6684, 0x6698, 0x668d, 0x6703, 0x6994, 0x696d, 0x695a,
+ 0x6977, 0x6960, 0x6954, 0x6975, 0x6930, 0x6982, 0x694a, 0x6968,
+ 0x696b, 0x695e, 0x6953, 0x6979, 0x6986, 0x695d, 0x6963, 0x695b,
+ 0x6b47, 0x6b72, 0x6bc0, 0x6bbf, 0x6bd3, 0x6bfd, 0x6ea2, 0x6eaf,
+ 0x6ed3, 0x6eb6, 0x6ec2, 0x6e90, 0x6e9d, 0x6ec7, 0x6ec5, 0x6ea5,
+ 0x6e98, 0x6ebc, 0x6eba, 0x6eab, 0x6ed1, 0x6e96, 0x6e9c, 0x6ec4,
+ 0x6ed4, 0x6eaa, 0x6ea7, 0x6eb4, 0x714e, 0x7159, 0x7169, 0x7164,
+ 0x7149, 0x7167, 0x715c, 0x716c, 0x7166, 0x714c, 0x7165, 0x715e,
+ 0x7146, 0x7168, 0x7156, 0x723a, 0x7252, 0x7337, 0x7345, 0x733f,
+ 0x733e, 0x746f, 0x745a, 0x7455, 0x745f, 0x745e, 0x7441, 0x743f,
+ 0x7459, 0x745b, 0x745c, 0x7576, 0x7578, 0x7600, 0x75f0, 0x7601,
+ 0x75f2, 0x75f1, 0x75fa, 0x75ff, 0x75f4, 0x75f3, 0x76de, 0x76df,
+ 0x775b, 0x776b, 0x7766, 0x775e, 0x7763,
+ /* 0xb8 */
+ 0x7779, 0x776a, 0x776c, 0x775c, 0x7765, 0x7768, 0x7762, 0x77ee,
+ 0x788e, 0x78b0, 0x7897, 0x7898, 0x788c, 0x7889, 0x787c, 0x7891,
+ 0x7893, 0x787f, 0x797a, 0x797f, 0x7981, 0x842c, 0x79bd, 0x7a1c,
+ 0x7a1a, 0x7a20, 0x7a14, 0x7a1f, 0x7a1e, 0x7a9f, 0x7aa0, 0x7b77,
+ 0x7bc0, 0x7b60, 0x7b6e, 0x7b67, 0x7cb1, 0x7cb3, 0x7cb5, 0x7d93,
+ 0x7d79, 0x7d91, 0x7d81, 0x7d8f, 0x7d5b, 0x7f6e, 0x7f69, 0x7f6a,
+ 0x7f72, 0x7fa9, 0x7fa8, 0x7fa4, 0x8056, 0x8058, 0x8086, 0x8084,
+ 0x8171, 0x8170, 0x8178, 0x8165, 0x816e, 0x8173, 0x816b, 0x8179,
+ 0x817a, 0x8166, 0x8205, 0x8247, 0x8482, 0x8477, 0x843d, 0x8431,
+ 0x8475, 0x8466, 0x846b, 0x8449, 0x846c, 0x845b, 0x843c, 0x8435,
+ 0x8461, 0x8463, 0x8469, 0x846d, 0x8446, 0x865e, 0x865c, 0x865f,
+ 0x86f9, 0x8713, 0x8708, 0x8707, 0x8700, 0x86fe, 0x86fb, 0x8702,
+ 0x8703, 0x8706, 0x870a, 0x8859, 0x88df, 0x88d4, 0x88d9, 0x88dc,
+ 0x88d8, 0x88dd, 0x88e1, 0x88ca, 0x88d5, 0x88d2, 0x899c, 0x89e3,
+ 0x8a6b, 0x8a72, 0x8a73, 0x8a66, 0x8a69, 0x8a70, 0x8a87, 0x8a7c,
+ 0x8a63, 0x8aa0, 0x8a71, 0x8a85, 0x8a6d, 0x8a62, 0x8a6e, 0x8a6c,
+ 0x8a79, 0x8a7b, 0x8a3e, 0x8a68, 0x8c62, 0x8c8a, 0x8c89, 0x8cca,
+ 0x8cc7, 0x8cc8, 0x8cc4, 0x8cb2, 0x8cc3, 0x8cc2, 0x8cc5, 0x8de1,
+ 0x8ddf, 0x8de8, 0x8def, 0x8df3, 0x8dfa, 0x8dea, 0x8de4, 0x8de6,
+ 0x8eb2, 0x8f03, 0x8f09, 0x8efe, 0x8f0a,
+ /* 0xb9 */
+ 0x8f9f, 0x8fb2, 0x904b, 0x904a, 0x9053, 0x9042, 0x9054, 0x903c,
+ 0x9055, 0x9050, 0x9047, 0x904f, 0x904e, 0x904d, 0x9051, 0x903e,
+ 0x9041, 0x9112, 0x9117, 0x916c, 0x916a, 0x9169, 0x91c9, 0x9237,
+ 0x9257, 0x9238, 0x923d, 0x9240, 0x923e, 0x925b, 0x924b, 0x9264,
+ 0x9251, 0x9234, 0x9249, 0x924d, 0x9245, 0x9239, 0x923f, 0x925a,
+ 0x9598, 0x9698, 0x9694, 0x9695, 0x96cd, 0x96cb, 0x96c9, 0x96ca,
+ 0x96f7, 0x96fb, 0x96f9, 0x96f6, 0x9756, 0x9774, 0x9776, 0x9810,
+ 0x9811, 0x9813, 0x980a, 0x9812, 0x980c, 0x98fc, 0x98f4, 0x98fd,
+ 0x98fe, 0x99b3, 0x99b1, 0x99b4, 0x9ae1, 0x9ce9, 0x9e82, 0x9f0e,
+ 0x9f13, 0x9f20, 0x50e7, 0x50ee, 0x50e5, 0x50d6, 0x50ed, 0x50da,
+ 0x50d5, 0x50cf, 0x50d1, 0x50f1, 0x50ce, 0x50e9, 0x5162, 0x51f3,
+ 0x5283, 0x5282, 0x5331, 0x53ad, 0x55fe, 0x5600, 0x561b, 0x5617,
+ 0x55fd, 0x5614, 0x5606, 0x5609, 0x560d, 0x560e, 0x55f7, 0x5616,
+ 0x561f, 0x5608, 0x5610, 0x55f6, 0x5718, 0x5716, 0x5875, 0x587e,
+ 0x5883, 0x5893, 0x588a, 0x5879, 0x5885, 0x587d, 0x58fd, 0x5925,
+ 0x5922, 0x5924, 0x596a, 0x5969, 0x5ae1, 0x5ae6, 0x5ae9, 0x5ad7,
+ 0x5ad6, 0x5ad8, 0x5ae3, 0x5b75, 0x5bde, 0x5be7, 0x5be1, 0x5be5,
+ 0x5be6, 0x5be8, 0x5be2, 0x5be4, 0x5bdf, 0x5c0d, 0x5c62, 0x5d84,
+ 0x5d87, 0x5e5b, 0x5e63, 0x5e55, 0x5e57, 0x5e54, 0x5ed3, 0x5ed6,
+ 0x5f0a, 0x5f46, 0x5f70, 0x5fb9, 0x6147,
+ /* 0xba */
+ 0x613f, 0x614b, 0x6177, 0x6162, 0x6163, 0x615f, 0x615a, 0x6158,
+ 0x6175, 0x622a, 0x6487, 0x6458, 0x6454, 0x64a4, 0x6478, 0x645f,
+ 0x647a, 0x6451, 0x6467, 0x6434, 0x646d, 0x647b, 0x6572, 0x65a1,
+ 0x65d7, 0x65d6, 0x66a2, 0x66a8, 0x669d, 0x699c, 0x69a8, 0x6995,
+ 0x69c1, 0x69ae, 0x69d3, 0x69cb, 0x699b, 0x69b7, 0x69bb, 0x69ab,
+ 0x69b4, 0x69d0, 0x69cd, 0x69ad, 0x69cc, 0x69a6, 0x69c3, 0x69a3,
+ 0x6b49, 0x6b4c, 0x6c33, 0x6f33, 0x6f14, 0x6efe, 0x6f13, 0x6ef4,
+ 0x6f29, 0x6f3e, 0x6f20, 0x6f2c, 0x6f0f, 0x6f02, 0x6f22, 0x6eff,
+ 0x6eef, 0x6f06, 0x6f31, 0x6f38, 0x6f32, 0x6f23, 0x6f15, 0x6f2b,
+ 0x6f2f, 0x6f88, 0x6f2a, 0x6eec, 0x6f01, 0x6ef2, 0x6ecc, 0x6ef7,
+ 0x7194, 0x7199, 0x717d, 0x718a, 0x7184, 0x7192, 0x723e, 0x7292,
+ 0x7296, 0x7344, 0x7350, 0x7464, 0x7463, 0x746a, 0x7470, 0x746d,
+ 0x7504, 0x7591, 0x7627, 0x760d, 0x760b, 0x7609, 0x7613, 0x76e1,
+ 0x76e3, 0x7784, 0x777d, 0x777f, 0x7761, 0x78c1, 0x789f, 0x78a7,
+ 0x78b3, 0x78a9, 0x78a3, 0x798e, 0x798f, 0x798d, 0x7a2e, 0x7a31,
+ 0x7aaa, 0x7aa9, 0x7aed, 0x7aef, 0x7ba1, 0x7b95, 0x7b8b, 0x7b75,
+ 0x7b97, 0x7b9d, 0x7b94, 0x7b8f, 0x7bb8, 0x7b87, 0x7b84, 0x7cb9,
+ 0x7cbd, 0x7cbe, 0x7dbb, 0x7db0, 0x7d9c, 0x7dbd, 0x7dbe, 0x7da0,
+ 0x7dca, 0x7db4, 0x7db2, 0x7db1, 0x7dba, 0x7da2, 0x7dbf, 0x7db5,
+ 0x7db8, 0x7dad, 0x7dd2, 0x7dc7, 0x7dac,
+ /* 0xbb */
+ 0x7f70, 0x7fe0, 0x7fe1, 0x7fdf, 0x805e, 0x805a, 0x8087, 0x8150,
+ 0x8180, 0x818f, 0x8188, 0x818a, 0x817f, 0x8182, 0x81e7, 0x81fa,
+ 0x8207, 0x8214, 0x821e, 0x824b, 0x84c9, 0x84bf, 0x84c6, 0x84c4,
+ 0x8499, 0x849e, 0x84b2, 0x849c, 0x84cb, 0x84b8, 0x84c0, 0x84d3,
+ 0x8490, 0x84bc, 0x84d1, 0x84ca, 0x873f, 0x871c, 0x873b, 0x8722,
+ 0x8725, 0x8734, 0x8718, 0x8755, 0x8737, 0x8729, 0x88f3, 0x8902,
+ 0x88f4, 0x88f9, 0x88f8, 0x88fd, 0x88e8, 0x891a, 0x88ef, 0x8aa6,
+ 0x8a8c, 0x8a9e, 0x8aa3, 0x8a8d, 0x8aa1, 0x8a93, 0x8aa4, 0x8aaa,
+ 0x8aa5, 0x8aa8, 0x8a98, 0x8a91, 0x8a9a, 0x8aa7, 0x8c6a, 0x8c8d,
+ 0x8c8c, 0x8cd3, 0x8cd1, 0x8cd2, 0x8d6b, 0x8d99, 0x8d95, 0x8dfc,
+ 0x8f14, 0x8f12, 0x8f15, 0x8f13, 0x8fa3, 0x9060, 0x9058, 0x905c,
+ 0x9063, 0x9059, 0x905e, 0x9062, 0x905d, 0x905b, 0x9119, 0x9118,
+ 0x911e, 0x9175, 0x9178, 0x9177, 0x9174, 0x9278, 0x9280, 0x9285,
+ 0x9298, 0x9296, 0x927b, 0x9293, 0x929c, 0x92a8, 0x927c, 0x9291,
+ 0x95a1, 0x95a8, 0x95a9, 0x95a3, 0x95a5, 0x95a4, 0x9699, 0x969c,
+ 0x969b, 0x96cc, 0x96d2, 0x9700, 0x977c, 0x9785, 0x97f6, 0x9817,
+ 0x9818, 0x98af, 0x98b1, 0x9903, 0x9905, 0x990c, 0x9909, 0x99c1,
+ 0x9aaf, 0x9ab0, 0x9ae6, 0x9b41, 0x9b42, 0x9cf4, 0x9cf6, 0x9cf3,
+ 0x9ebc, 0x9f3b, 0x9f4a, 0x5104, 0x5100, 0x50fb, 0x50f5, 0x50f9,
+ 0x5102, 0x5108, 0x5109, 0x5105, 0x51dc,
+ /* 0xbc */
+ 0x5287, 0x5288, 0x5289, 0x528d, 0x528a, 0x52f0, 0x53b2, 0x562e,
+ 0x563b, 0x5639, 0x5632, 0x563f, 0x5634, 0x5629, 0x5653, 0x564e,
+ 0x5657, 0x5674, 0x5636, 0x562f, 0x5630, 0x5880, 0x589f, 0x589e,
+ 0x58b3, 0x589c, 0x58ae, 0x58a9, 0x58a6, 0x596d, 0x5b09, 0x5afb,
+ 0x5b0b, 0x5af5, 0x5b0c, 0x5b08, 0x5bee, 0x5bec, 0x5be9, 0x5beb,
+ 0x5c64, 0x5c65, 0x5d9d, 0x5d94, 0x5e62, 0x5e5f, 0x5e61, 0x5ee2,
+ 0x5eda, 0x5edf, 0x5edd, 0x5ee3, 0x5ee0, 0x5f48, 0x5f71, 0x5fb7,
+ 0x5fb5, 0x6176, 0x6167, 0x616e, 0x615d, 0x6155, 0x6182, 0x617c,
+ 0x6170, 0x616b, 0x617e, 0x61a7, 0x6190, 0x61ab, 0x618e, 0x61ac,
+ 0x619a, 0x61a4, 0x6194, 0x61ae, 0x622e, 0x6469, 0x646f, 0x6479,
+ 0x649e, 0x64b2, 0x6488, 0x6490, 0x64b0, 0x64a5, 0x6493, 0x6495,
+ 0x64a9, 0x6492, 0x64ae, 0x64ad, 0x64ab, 0x649a, 0x64ac, 0x6499,
+ 0x64a2, 0x64b3, 0x6575, 0x6577, 0x6578, 0x66ae, 0x66ab, 0x66b4,
+ 0x66b1, 0x6a23, 0x6a1f, 0x69e8, 0x6a01, 0x6a1e, 0x6a19, 0x69fd,
+ 0x6a21, 0x6a13, 0x6a0a, 0x69f3, 0x6a02, 0x6a05, 0x69ed, 0x6a11,
+ 0x6b50, 0x6b4e, 0x6ba4, 0x6bc5, 0x6bc6, 0x6f3f, 0x6f7c, 0x6f84,
+ 0x6f51, 0x6f66, 0x6f54, 0x6f86, 0x6f6d, 0x6f5b, 0x6f78, 0x6f6e,
+ 0x6f8e, 0x6f7a, 0x6f70, 0x6f64, 0x6f97, 0x6f58, 0x6ed5, 0x6f6f,
+ 0x6f60, 0x6f5f, 0x719f, 0x71ac, 0x71b1, 0x71a8, 0x7256, 0x729b,
+ 0x734e, 0x7357, 0x7469, 0x748b, 0x7483,
+ /* 0xbd */
+ 0x747e, 0x7480, 0x757f, 0x7620, 0x7629, 0x761f, 0x7624, 0x7626,
+ 0x7621, 0x7622, 0x769a, 0x76ba, 0x76e4, 0x778e, 0x7787, 0x778c,
+ 0x7791, 0x778b, 0x78cb, 0x78c5, 0x78ba, 0x78ca, 0x78be, 0x78d5,
+ 0x78bc, 0x78d0, 0x7a3f, 0x7a3c, 0x7a40, 0x7a3d, 0x7a37, 0x7a3b,
+ 0x7aaf, 0x7aae, 0x7bad, 0x7bb1, 0x7bc4, 0x7bb4, 0x7bc6, 0x7bc7,
+ 0x7bc1, 0x7ba0, 0x7bcc, 0x7cca, 0x7de0, 0x7df4, 0x7def, 0x7dfb,
+ 0x7dd8, 0x7dec, 0x7ddd, 0x7de8, 0x7de3, 0x7dda, 0x7dde, 0x7de9,
+ 0x7d9e, 0x7dd9, 0x7df2, 0x7df9, 0x7f75, 0x7f77, 0x7faf, 0x7fe9,
+ 0x8026, 0x819b, 0x819c, 0x819d, 0x81a0, 0x819a, 0x8198, 0x8517,
+ 0x853d, 0x851a, 0x84ee, 0x852c, 0x852d, 0x8513, 0x8511, 0x8523,
+ 0x8521, 0x8514, 0x84ec, 0x8525, 0x84ff, 0x8506, 0x8782, 0x8774,
+ 0x8776, 0x8760, 0x8766, 0x8778, 0x8768, 0x8759, 0x8757, 0x874c,
+ 0x8753, 0x885b, 0x885d, 0x8910, 0x8907, 0x8912, 0x8913, 0x8915,
+ 0x890a, 0x8abc, 0x8ad2, 0x8ac7, 0x8ac4, 0x8a95, 0x8acb, 0x8af8,
+ 0x8ab2, 0x8ac9, 0x8ac2, 0x8abf, 0x8ab0, 0x8ad6, 0x8acd, 0x8ab6,
+ 0x8ab9, 0x8adb, 0x8c4c, 0x8c4e, 0x8c6c, 0x8ce0, 0x8cde, 0x8ce6,
+ 0x8ce4, 0x8cec, 0x8ced, 0x8ce2, 0x8ce3, 0x8cdc, 0x8cea, 0x8ce1,
+ 0x8d6d, 0x8d9f, 0x8da3, 0x8e2b, 0x8e10, 0x8e1d, 0x8e22, 0x8e0f,
+ 0x8e29, 0x8e1f, 0x8e21, 0x8e1e, 0x8eba, 0x8f1d, 0x8f1b, 0x8f1f,
+ 0x8f29, 0x8f26, 0x8f2a, 0x8f1c, 0x8f1e,
+ /* 0xbe */
+ 0x8f25, 0x9069, 0x906e, 0x9068, 0x906d, 0x9077, 0x9130, 0x912d,
+ 0x9127, 0x9131, 0x9187, 0x9189, 0x918b, 0x9183, 0x92c5, 0x92bb,
+ 0x92b7, 0x92ea, 0x92ac, 0x92e4, 0x92c1, 0x92b3, 0x92bc, 0x92d2,
+ 0x92c7, 0x92f0, 0x92b2, 0x95ad, 0x95b1, 0x9704, 0x9706, 0x9707,
+ 0x9709, 0x9760, 0x978d, 0x978b, 0x978f, 0x9821, 0x982b, 0x981c,
+ 0x98b3, 0x990a, 0x9913, 0x9912, 0x9918, 0x99dd, 0x99d0, 0x99df,
+ 0x99db, 0x99d1, 0x99d5, 0x99d2, 0x99d9, 0x9ab7, 0x9aee, 0x9aef,
+ 0x9b27, 0x9b45, 0x9b44, 0x9b77, 0x9b6f, 0x9d06, 0x9d09, 0x9d03,
+ 0x9ea9, 0x9ebe, 0x9ece, 0x58a8, 0x9f52, 0x5112, 0x5118, 0x5114,
+ 0x5110, 0x5115, 0x5180, 0x51aa, 0x51dd, 0x5291, 0x5293, 0x52f3,
+ 0x5659, 0x566b, 0x5679, 0x5669, 0x5664, 0x5678, 0x566a, 0x5668,
+ 0x5665, 0x5671, 0x566f, 0x566c, 0x5662, 0x5676, 0x58c1, 0x58be,
+ 0x58c7, 0x58c5, 0x596e, 0x5b1d, 0x5b34, 0x5b78, 0x5bf0, 0x5c0e,
+ 0x5f4a, 0x61b2, 0x6191, 0x61a9, 0x618a, 0x61cd, 0x61b6, 0x61be,
+ 0x61ca, 0x61c8, 0x6230, 0x64c5, 0x64c1, 0x64cb, 0x64bb, 0x64bc,
+ 0x64da, 0x64c4, 0x64c7, 0x64c2, 0x64cd, 0x64bf, 0x64d2, 0x64d4,
+ 0x64be, 0x6574, 0x66c6, 0x66c9, 0x66b9, 0x66c4, 0x66c7, 0x66b8,
+ 0x6a3d, 0x6a38, 0x6a3a, 0x6a59, 0x6a6b, 0x6a58, 0x6a39, 0x6a44,
+ 0x6a62, 0x6a61, 0x6a4b, 0x6a47, 0x6a35, 0x6a5f, 0x6a48, 0x6b59,
+ 0x6b77, 0x6c05, 0x6fc2, 0x6fb1, 0x6fa1,
+ /* 0xbf */
+ 0x6fc3, 0x6fa4, 0x6fc1, 0x6fa7, 0x6fb3, 0x6fc0, 0x6fb9, 0x6fb6,
+ 0x6fa6, 0x6fa0, 0x6fb4, 0x71be, 0x71c9, 0x71d0, 0x71d2, 0x71c8,
+ 0x71d5, 0x71b9, 0x71ce, 0x71d9, 0x71dc, 0x71c3, 0x71c4, 0x7368,
+ 0x749c, 0x74a3, 0x7498, 0x749f, 0x749e, 0x74e2, 0x750c, 0x750d,
+ 0x7634, 0x7638, 0x763a, 0x76e7, 0x76e5, 0x77a0, 0x779e, 0x779f,
+ 0x77a5, 0x78e8, 0x78da, 0x78ec, 0x78e7, 0x79a6, 0x7a4d, 0x7a4e,
+ 0x7a46, 0x7a4c, 0x7a4b, 0x7aba, 0x7bd9, 0x7c11, 0x7bc9, 0x7be4,
+ 0x7bdb, 0x7be1, 0x7be9, 0x7be6, 0x7cd5, 0x7cd6, 0x7e0a, 0x7e11,
+ 0x7e08, 0x7e1b, 0x7e23, 0x7e1e, 0x7e1d, 0x7e09, 0x7e10, 0x7f79,
+ 0x7fb2, 0x7ff0, 0x7ff1, 0x7fee, 0x8028, 0x81b3, 0x81a9, 0x81a8,
+ 0x81fb, 0x8208, 0x8258, 0x8259, 0x854a, 0x8559, 0x8548, 0x8568,
+ 0x8569, 0x8543, 0x8549, 0x856d, 0x856a, 0x855e, 0x8783, 0x879f,
+ 0x879e, 0x87a2, 0x878d, 0x8861, 0x892a, 0x8932, 0x8925, 0x892b,
+ 0x8921, 0x89aa, 0x89a6, 0x8ae6, 0x8afa, 0x8aeb, 0x8af1, 0x8b00,
+ 0x8adc, 0x8ae7, 0x8aee, 0x8afe, 0x8b01, 0x8b02, 0x8af7, 0x8aed,
+ 0x8af3, 0x8af6, 0x8afc, 0x8c6b, 0x8c6d, 0x8c93, 0x8cf4, 0x8e44,
+ 0x8e31, 0x8e34, 0x8e42, 0x8e39, 0x8e35, 0x8f3b, 0x8f2f, 0x8f38,
+ 0x8f33, 0x8fa8, 0x8fa6, 0x9075, 0x9074, 0x9078, 0x9072, 0x907c,
+ 0x907a, 0x9134, 0x9192, 0x9320, 0x9336, 0x92f8, 0x9333, 0x932f,
+ 0x9322, 0x92fc, 0x932b, 0x9304, 0x931a,
+ /* 0xc0 */
+ 0x9310, 0x9326, 0x9321, 0x9315, 0x932e, 0x9319, 0x95bb, 0x96a7,
+ 0x96a8, 0x96aa, 0x96d5, 0x970e, 0x9711, 0x9716, 0x970d, 0x9713,
+ 0x970f, 0x975b, 0x975c, 0x9766, 0x9798, 0x9830, 0x9838, 0x983b,
+ 0x9837, 0x982d, 0x9839, 0x9824, 0x9910, 0x9928, 0x991e, 0x991b,
+ 0x9921, 0x991a, 0x99ed, 0x99e2, 0x99f1, 0x9ab8, 0x9abc, 0x9afb,
+ 0x9aed, 0x9b28, 0x9b91, 0x9d15, 0x9d23, 0x9d26, 0x9d28, 0x9d12,
+ 0x9d1b, 0x9ed8, 0x9ed4, 0x9f8d, 0x9f9c, 0x512a, 0x511f, 0x5121,
+ 0x5132, 0x52f5, 0x568e, 0x5680, 0x5690, 0x5685, 0x5687, 0x568f,
+ 0x58d5, 0x58d3, 0x58d1, 0x58ce, 0x5b30, 0x5b2a, 0x5b24, 0x5b7a,
+ 0x5c37, 0x5c68, 0x5dbc, 0x5dba, 0x5dbd, 0x5db8, 0x5e6b, 0x5f4c,
+ 0x5fbd, 0x61c9, 0x61c2, 0x61c7, 0x61e6, 0x61cb, 0x6232, 0x6234,
+ 0x64ce, 0x64ca, 0x64d8, 0x64e0, 0x64f0, 0x64e6, 0x64ec, 0x64f1,
+ 0x64e2, 0x64ed, 0x6582, 0x6583, 0x66d9, 0x66d6, 0x6a80, 0x6a94,
+ 0x6a84, 0x6aa2, 0x6a9c, 0x6adb, 0x6aa3, 0x6a7e, 0x6a97, 0x6a90,
+ 0x6aa0, 0x6b5c, 0x6bae, 0x6bda, 0x6c08, 0x6fd8, 0x6ff1, 0x6fdf,
+ 0x6fe0, 0x6fdb, 0x6fe4, 0x6feb, 0x6fef, 0x6f80, 0x6fec, 0x6fe1,
+ 0x6fe9, 0x6fd5, 0x6fee, 0x6ff0, 0x71e7, 0x71df, 0x71ee, 0x71e6,
+ 0x71e5, 0x71ed, 0x71ec, 0x71f4, 0x71e0, 0x7235, 0x7246, 0x7370,
+ 0x7372, 0x74a9, 0x74b0, 0x74a6, 0x74a8, 0x7646, 0x7642, 0x764c,
+ 0x76ea, 0x77b3, 0x77aa, 0x77b0, 0x77ac,
+ /* 0xc1 */
+ 0x77a7, 0x77ad, 0x77ef, 0x78f7, 0x78fa, 0x78f4, 0x78ef, 0x7901,
+ 0x79a7, 0x79aa, 0x7a57, 0x7abf, 0x7c07, 0x7c0d, 0x7bfe, 0x7bf7,
+ 0x7c0c, 0x7be0, 0x7ce0, 0x7cdc, 0x7cde, 0x7ce2, 0x7cdf, 0x7cd9,
+ 0x7cdd, 0x7e2e, 0x7e3e, 0x7e46, 0x7e37, 0x7e32, 0x7e43, 0x7e2b,
+ 0x7e3d, 0x7e31, 0x7e45, 0x7e41, 0x7e34, 0x7e39, 0x7e48, 0x7e35,
+ 0x7e3f, 0x7e2f, 0x7f44, 0x7ff3, 0x7ffc, 0x8071, 0x8072, 0x8070,
+ 0x806f, 0x8073, 0x81c6, 0x81c3, 0x81ba, 0x81c2, 0x81c0, 0x81bf,
+ 0x81bd, 0x81c9, 0x81be, 0x81e8, 0x8209, 0x8271, 0x85aa, 0x8584,
+ 0x857e, 0x859c, 0x8591, 0x8594, 0x85af, 0x859b, 0x8587, 0x85a8,
+ 0x858a, 0x8667, 0x87c0, 0x87d1, 0x87b3, 0x87d2, 0x87c6, 0x87ab,
+ 0x87bb, 0x87ba, 0x87c8, 0x87cb, 0x893b, 0x8936, 0x8944, 0x8938,
+ 0x893d, 0x89ac, 0x8b0e, 0x8b17, 0x8b19, 0x8b1b, 0x8b0a, 0x8b20,
+ 0x8b1d, 0x8b04, 0x8b10, 0x8c41, 0x8c3f, 0x8c73, 0x8cfa, 0x8cfd,
+ 0x8cfc, 0x8cf8, 0x8cfb, 0x8da8, 0x8e49, 0x8e4b, 0x8e48, 0x8e4a,
+ 0x8f44, 0x8f3e, 0x8f42, 0x8f45, 0x8f3f, 0x907f, 0x907d, 0x9084,
+ 0x9081, 0x9082, 0x9080, 0x9139, 0x91a3, 0x919e, 0x919c, 0x934d,
+ 0x9382, 0x9328, 0x9375, 0x934a, 0x9365, 0x934b, 0x9318, 0x937e,
+ 0x936c, 0x935b, 0x9370, 0x935a, 0x9354, 0x95ca, 0x95cb, 0x95cc,
+ 0x95c8, 0x95c6, 0x96b1, 0x96b8, 0x96d6, 0x971c, 0x971e, 0x97a0,
+ 0x97d3, 0x9846, 0x98b6, 0x9935, 0x9a01,
+ /* 0xc2 */
+ 0x99ff, 0x9bae, 0x9bab, 0x9baa, 0x9bad, 0x9d3b, 0x9d3f, 0x9e8b,
+ 0x9ecf, 0x9ede, 0x9edc, 0x9edd, 0x9edb, 0x9f3e, 0x9f4b, 0x53e2,
+ 0x5695, 0x56ae, 0x58d9, 0x58d8, 0x5b38, 0x5f5d, 0x61e3, 0x6233,
+ 0x64f4, 0x64f2, 0x64fe, 0x6506, 0x64fa, 0x64fb, 0x64f7, 0x65b7,
+ 0x66dc, 0x6726, 0x6ab3, 0x6aac, 0x6ac3, 0x6abb, 0x6ab8, 0x6ac2,
+ 0x6aae, 0x6aaf, 0x6b5f, 0x6b78, 0x6baf, 0x7009, 0x700b, 0x6ffe,
+ 0x7006, 0x6ffa, 0x7011, 0x700f, 0x71fb, 0x71fc, 0x71fe, 0x71f8,
+ 0x7377, 0x7375, 0x74a7, 0x74bf, 0x7515, 0x7656, 0x7658, 0x7652,
+ 0x77bd, 0x77bf, 0x77bb, 0x77bc, 0x790e, 0x79ae, 0x7a61, 0x7a62,
+ 0x7a60, 0x7ac4, 0x7ac5, 0x7c2b, 0x7c27, 0x7c2a, 0x7c1e, 0x7c23,
+ 0x7c21, 0x7ce7, 0x7e54, 0x7e55, 0x7e5e, 0x7e5a, 0x7e61, 0x7e52,
+ 0x7e59, 0x7f48, 0x7ff9, 0x7ffb, 0x8077, 0x8076, 0x81cd, 0x81cf,
+ 0x820a, 0x85cf, 0x85a9, 0x85cd, 0x85d0, 0x85c9, 0x85b0, 0x85ba,
+ 0x85b9, 0x85a6, 0x87ef, 0x87ec, 0x87f2, 0x87e0, 0x8986, 0x89b2,
+ 0x89f4, 0x8b28, 0x8b39, 0x8b2c, 0x8b2b, 0x8c50, 0x8d05, 0x8e59,
+ 0x8e63, 0x8e66, 0x8e64, 0x8e5f, 0x8e55, 0x8ec0, 0x8f49, 0x8f4d,
+ 0x9087, 0x9083, 0x9088, 0x91ab, 0x91ac, 0x91d0, 0x9394, 0x938a,
+ 0x9396, 0x93a2, 0x93b3, 0x93ae, 0x93ac, 0x93b0, 0x9398, 0x939a,
+ 0x9397, 0x95d4, 0x95d6, 0x95d0, 0x95d5, 0x96e2, 0x96dc, 0x96d9,
+ 0x96db, 0x96de, 0x9724, 0x97a3, 0x97a6,
+ /* 0xc3 */
+ 0x97ad, 0x97f9, 0x984d, 0x984f, 0x984c, 0x984e, 0x9853, 0x98ba,
+ 0x993e, 0x993f, 0x993d, 0x992e, 0x99a5, 0x9a0e, 0x9ac1, 0x9b03,
+ 0x9b06, 0x9b4f, 0x9b4e, 0x9b4d, 0x9bca, 0x9bc9, 0x9bfd, 0x9bc8,
+ 0x9bc0, 0x9d51, 0x9d5d, 0x9d60, 0x9ee0, 0x9f15, 0x9f2c, 0x5133,
+ 0x56a5, 0x58de, 0x58df, 0x58e2, 0x5bf5, 0x9f90, 0x5eec, 0x61f2,
+ 0x61f7, 0x61f6, 0x61f5, 0x6500, 0x650f, 0x66e0, 0x66dd, 0x6ae5,
+ 0x6add, 0x6ada, 0x6ad3, 0x701b, 0x701f, 0x7028, 0x701a, 0x701d,
+ 0x7015, 0x7018, 0x7206, 0x720d, 0x7258, 0x72a2, 0x7378, 0x737a,
+ 0x74bd, 0x74ca, 0x74e3, 0x7587, 0x7586, 0x765f, 0x7661, 0x77c7,
+ 0x7919, 0x79b1, 0x7a6b, 0x7a69, 0x7c3e, 0x7c3f, 0x7c38, 0x7c3d,
+ 0x7c37, 0x7c40, 0x7e6b, 0x7e6d, 0x7e79, 0x7e69, 0x7e6a, 0x7f85,
+ 0x7e73, 0x7fb6, 0x7fb9, 0x7fb8, 0x81d8, 0x85e9, 0x85dd, 0x85ea,
+ 0x85d5, 0x85e4, 0x85e5, 0x85f7, 0x87fb, 0x8805, 0x880d, 0x87f9,
+ 0x87fe, 0x8960, 0x895f, 0x8956, 0x895e, 0x8b41, 0x8b5c, 0x8b58,
+ 0x8b49, 0x8b5a, 0x8b4e, 0x8b4f, 0x8b46, 0x8b59, 0x8d08, 0x8d0a,
+ 0x8e7c, 0x8e72, 0x8e87, 0x8e76, 0x8e6c, 0x8e7a, 0x8e74, 0x8f54,
+ 0x8f4e, 0x8fad, 0x908a, 0x908b, 0x91b1, 0x91ae, 0x93e1, 0x93d1,
+ 0x93df, 0x93c3, 0x93c8, 0x93dc, 0x93dd, 0x93d6, 0x93e2, 0x93cd,
+ 0x93d8, 0x93e4, 0x93d7, 0x93e8, 0x95dc, 0x96b4, 0x96e3, 0x972a,
+ 0x9727, 0x9761, 0x97dc, 0x97fb, 0x985e,
+ /* 0xc4 */
+ 0x9858, 0x985b, 0x98bc, 0x9945, 0x9949, 0x9a16, 0x9a19, 0x9b0d,
+ 0x9be8, 0x9be7, 0x9bd6, 0x9bdb, 0x9d89, 0x9d61, 0x9d72, 0x9d6a,
+ 0x9d6c, 0x9e92, 0x9e97, 0x9e93, 0x9eb4, 0x52f8, 0x56a8, 0x56b7,
+ 0x56b6, 0x56b4, 0x56bc, 0x58e4, 0x5b40, 0x5b43, 0x5b7d, 0x5bf6,
+ 0x5dc9, 0x61f8, 0x61fa, 0x6518, 0x6514, 0x6519, 0x66e6, 0x6727,
+ 0x6aec, 0x703e, 0x7030, 0x7032, 0x7210, 0x737b, 0x74cf, 0x7662,
+ 0x7665, 0x7926, 0x792a, 0x792c, 0x792b, 0x7ac7, 0x7af6, 0x7c4c,
+ 0x7c43, 0x7c4d, 0x7cef, 0x7cf0, 0x8fae, 0x7e7d, 0x7e7c, 0x7e82,
+ 0x7f4c, 0x8000, 0x81da, 0x8266, 0x85fb, 0x85f9, 0x8611, 0x85fa,
+ 0x8606, 0x860b, 0x8607, 0x860a, 0x8814, 0x8815, 0x8964, 0x89ba,
+ 0x89f8, 0x8b70, 0x8b6c, 0x8b66, 0x8b6f, 0x8b5f, 0x8b6b, 0x8d0f,
+ 0x8d0d, 0x8e89, 0x8e81, 0x8e85, 0x8e82, 0x91b4, 0x91cb, 0x9418,
+ 0x9403, 0x93fd, 0x95e1, 0x9730, 0x98c4, 0x9952, 0x9951, 0x99a8,
+ 0x9a2b, 0x9a30, 0x9a37, 0x9a35, 0x9c13, 0x9c0d, 0x9e79, 0x9eb5,
+ 0x9ee8, 0x9f2f, 0x9f5f, 0x9f63, 0x9f61, 0x5137, 0x5138, 0x56c1,
+ 0x56c0, 0x56c2, 0x5914, 0x5c6c, 0x5dcd, 0x61fc, 0x61fe, 0x651d,
+ 0x651c, 0x6595, 0x66e9, 0x6afb, 0x6b04, 0x6afa, 0x6bb2, 0x704c,
+ 0x721b, 0x72a7, 0x74d6, 0x74d4, 0x7669, 0x77d3, 0x7c50, 0x7e8f,
+ 0x7e8c, 0x7fbc, 0x8617, 0x862d, 0x861a, 0x8823, 0x8822, 0x8821,
+ 0x881f, 0x896a, 0x896c, 0x89bd, 0x8b74,
+ /* 0xc5 */
+ 0x8b77, 0x8b7d, 0x8d13, 0x8e8a, 0x8e8d, 0x8e8b, 0x8f5f, 0x8faf,
+ 0x91ba, 0x942e, 0x9433, 0x9435, 0x943a, 0x9438, 0x9432, 0x942b,
+ 0x95e2, 0x9738, 0x9739, 0x9732, 0x97ff, 0x9867, 0x9865, 0x9957,
+ 0x9a45, 0x9a43, 0x9a40, 0x9a3e, 0x9acf, 0x9b54, 0x9b51, 0x9c2d,
+ 0x9c25, 0x9daf, 0x9db4, 0x9dc2, 0x9db8, 0x9e9d, 0x9eef, 0x9f19,
+ 0x9f5c, 0x9f66, 0x9f67, 0x513c, 0x513b, 0x56c8, 0x56ca, 0x56c9,
+ 0x5b7f, 0x5dd4, 0x5dd2, 0x5f4e, 0x61ff, 0x6524, 0x6b0a, 0x6b61,
+ 0x7051, 0x7058, 0x7380, 0x74e4, 0x758a, 0x766e, 0x766c, 0x79b3,
+ 0x7c60, 0x7c5f, 0x807e, 0x807d, 0x81df, 0x8972, 0x896f, 0x89fc,
+ 0x8b80, 0x8d16, 0x8d17, 0x8e91, 0x8e93, 0x8f61, 0x9148, 0x9444,
+ 0x9451, 0x9452, 0x973d, 0x973e, 0x97c3, 0x97c1, 0x986b, 0x9955,
+ 0x9a55, 0x9a4d, 0x9ad2, 0x9b1a, 0x9c49, 0x9c31, 0x9c3e, 0x9c3b,
+ 0x9dd3, 0x9dd7, 0x9f34, 0x9f6c, 0x9f6a, 0x9f94, 0x56cc, 0x5dd6,
+ 0x6200, 0x6523, 0x652b, 0x652a, 0x66ec, 0x6b10, 0x74da, 0x7aca,
+ 0x7c64, 0x7c63, 0x7c65, 0x7e93, 0x7e96, 0x7e94, 0x81e2, 0x8638,
+ 0x863f, 0x8831, 0x8b8a, 0x9090, 0x908f, 0x9463, 0x9460, 0x9464,
+ 0x9768, 0x986f, 0x995c, 0x9a5a, 0x9a5b, 0x9a57, 0x9ad3, 0x9ad4,
+ 0x9ad1, 0x9c54, 0x9c57, 0x9c56, 0x9de5, 0x9e9f, 0x9ef4, 0x56d1,
+ 0x58e9, 0x652c, 0x705e, 0x7671, 0x7672, 0x77d7, 0x7f50, 0x7f88,
+ 0x8836, 0x8839, 0x8862, 0x8b93, 0x8b92,
+ /* 0xc6 */
+ 0x8b96, 0x8277, 0x8d1b, 0x91c0, 0x946a, 0x9742, 0x9748, 0x9744,
+ 0x97c6, 0x9870, 0x9a5f, 0x9b22, 0x9b58, 0x9c5f, 0x9df9, 0x9dfa,
+ 0x9e7c, 0x9e7d, 0x9f07, 0x9f77, 0x9f72, 0x5ef3, 0x6b16, 0x7063,
+ 0x7c6c, 0x7c6e, 0x883b, 0x89c0, 0x8ea1, 0x91c1, 0x9472, 0x9470,
+ 0x9871, 0x995e, 0x9ad6, 0x9b23, 0x9ecc, 0x7064, 0x77da, 0x8b9a,
+ 0x9477, 0x97c9, 0x9a62, 0x9a65, 0x7e9c, 0x8b9c, 0x8eaa, 0x91c5,
+ 0x947d, 0x947e, 0x947c, 0x9c77, 0x9c78, 0x9ef7, 0x8c54, 0x947f,
+ 0x9e1a, 0x7228, 0x9a6a, 0x9b31, 0x9e1b, 0x9e1e, 0x7c72, 0x2460,
+ 0x2461, 0x2462, 0x2463, 0x2464, 0x2465, 0x2466, 0x2467, 0x2468,
+ 0x2469, 0x2474, 0x2475, 0x2476, 0x2477, 0x2478, 0x2479, 0x247a,
+ 0x247b, 0x247c, 0x247d, 0x2170, 0x2171, 0x2172, 0x2173, 0x2174,
+ 0x2175, 0x2176, 0x2177, 0x2178, 0x2179, 0x4e36, 0x4e3f, 0x4e85,
+ 0x4ea0, 0x5182, 0x5196, 0x51ab, 0x52f9, 0x5338, 0x5369, 0x53b6,
+ 0x590a, 0x5b80, 0x5ddb, 0x2f33, 0x5e7f, 0xf6df, 0x5f50, 0x5f61,
+ 0x6534, 0xf6e3, 0x7592, 0xf6e5, 0x8fb5, 0xf6e7, 0x00a8, 0x02c6,
+ 0x30fd, 0x30fe, 0x309d, 0x309e, 0xf6ee, 0xf6ef, 0x3005, 0x3006,
+ 0x3007, 0x30fc, 0xff3b, 0xff3d, 0x273d, 0x3041, 0x3042, 0x3043,
+ 0x3044, 0x3045, 0x3046, 0x3047, 0x3048, 0x3049, 0x304a, 0x304b,
+ 0x304c, 0x304d, 0x304e, 0x304f, 0x3050, 0x3051, 0x3052, 0x3053,
+ 0x3054, 0x3055, 0x3056, 0x3057, 0x3058,
+ /* 0xc7 */
+ 0x3059, 0x305a, 0x305b, 0x305c, 0x305d, 0x305e, 0x305f, 0x3060,
+ 0x3061, 0x3062, 0x3063, 0x3064, 0x3065, 0x3066, 0x3067, 0x3068,
+ 0x3069, 0x306a, 0x306b, 0x306c, 0x306d, 0x306e, 0x306f, 0x3070,
+ 0x3071, 0x3072, 0x3073, 0x3074, 0x3075, 0x3076, 0x3077, 0x3078,
+ 0x3079, 0x307a, 0x307b, 0x307c, 0x307d, 0x307e, 0x307f, 0x3080,
+ 0x3081, 0x3082, 0x3083, 0x3084, 0x3085, 0x3086, 0x3087, 0x3088,
+ 0x3089, 0x308a, 0x308b, 0x308c, 0x308d, 0x308e, 0x308f, 0x3090,
+ 0x3091, 0x3092, 0x3093, 0x30a1, 0x30a2, 0x30a3, 0x30a4, 0x30a5,
+ 0x30a6, 0x30a7, 0x30a8, 0x30a9, 0x30aa, 0x30ab, 0x30ac, 0x30ad,
+ 0x30ae, 0x30af, 0x30b0, 0x30b1, 0x30b2, 0x30b3, 0x30b4, 0x30b5,
+ 0x30b6, 0x30b7, 0x30b8, 0x30b9, 0x30ba, 0x30bb, 0x30bc, 0x30bd,
+ 0x30be, 0x30bf, 0x30c0, 0x30c1, 0x30c2, 0x30c3, 0x30c4, 0x30c5,
+ 0x30c6, 0x30c7, 0x30c8, 0x30c9, 0x30ca, 0x30cb, 0x30cc, 0x30cd,
+ 0x30ce, 0x30cf, 0x30d0, 0x30d1, 0x30d2, 0x30d3, 0x30d4, 0x30d5,
+ 0x30d6, 0x30d7, 0x30d8, 0x30d9, 0x30da, 0x30db, 0x30dc, 0x30dd,
+ 0x30de, 0x30df, 0x30e0, 0x30e1, 0x30e2, 0x30e3, 0x30e4, 0x30e5,
+ 0x30e6, 0x30e7, 0x30e8, 0x30e9, 0x30ea, 0x30eb, 0x30ec, 0x30ed,
+ 0x30ee, 0x30ef, 0x30f0, 0x30f1, 0x30f2, 0x30f3, 0x30f4, 0x30f5,
+ 0x30f6, 0x0410, 0x0411, 0x0412, 0x0413, 0x0414, 0x0415, 0x0401,
+ 0x0416, 0x0417, 0x0418, 0x0419, 0x041a,
+ /* 0xc8 */
+ 0x041b, 0x041c, 0x041d, 0x041e, 0x041f, 0x0420, 0x0421, 0x0422,
+ 0x0423, 0x0424, 0x0425, 0x0426, 0x0427, 0x0428, 0x0429, 0x042a,
+ 0x042b, 0x042c, 0x042d, 0x042e, 0x042f, 0x0430, 0x0431, 0x0432,
+ 0x0433, 0x0434, 0x0435, 0x0451, 0x0436, 0x0437, 0x0438, 0x0439,
+ 0x043a, 0x043b, 0x043c, 0x043d, 0x043e, 0x043f, 0x0440, 0x0441,
+ 0x0442, 0x0443, 0x0444, 0x0445, 0x0446, 0x0447, 0x0448, 0x0449,
+ 0x044a, 0x044b, 0x044c, 0x044d, 0x044e, 0x044f, 0x21e7, 0x21b8,
+ 0x21b9, 0xf7e5, 0xf7e6, 0x4e5a, 0xf7e8, 0x5202, 0xf7ea, 0xf7eb,
+ 0x5188, 0xf7ed, 0xf7ee, 0xf7ef, 0xf7f0, 0xf7f1, 0xf7f2, 0xf7f3,
+ 0xf7f4, 0xf7f5, 0xf7f6, 0xf7f7, 0xf7f8, 0xf7f9, 0xf7fa, 0xf7fb,
+ 0xf7fc, 0xf7fd, 0xf7fe, 0xf7ff, 0xf800, 0xf801, 0xf802, 0xf803,
+ 0xf804, 0xf805, 0xf806, 0xf807, 0xf808, 0xf809, 0xf80a, 0xf80b,
+ 0xf80c, 0xf80d, 0xf80e, 0xf80f, 0xf810, 0xf811, 0xf812, 0xf813,
+ 0xf814, 0xf815, 0xf816, 0xffe2, 0xffe4, 0xff07, 0xff02, 0x3231,
+ 0x2116, 0x2121, 0x309b, 0x309c, 0x2e80, 0x2e84, 0x2e86, 0x2e87,
+ 0x2e88, 0x2e8a, 0x2e8c, 0x2e8d, 0x2e95, 0x2e9c, 0x2e9d, 0x2ea5,
+ 0x2ea7, 0x2eaa, 0x2eac, 0x2eae, 0x2eb6, 0x2ebc, 0x2ebe, 0x2ec6,
+ 0x2eca, 0x2ecc, 0x2ecd, 0x2ecf, 0x2ed6, 0x2ed7, 0x2ede, 0x2ee3,
+ 0xf83c, 0xf83d, 0xf83e, 0x0283, 0x0250, 0x025b, 0x0254, 0x0275,
+ 0x0153, 0x00f8, 0x014b, 0x028a, 0x026a,
+ /* 0xc9 */
+ 0x4e42, 0x4e5c, 0x51f5, 0x531a, 0x5382, 0x4e07, 0x4e0c, 0x4e47,
+ 0x4e8d, 0x56d7, 0xfa0c, 0x5c6e, 0x5f73, 0x4e0f, 0x5187, 0x4e0e,
+ 0x4e2e, 0x4e93, 0x4ec2, 0x4ec9, 0x4ec8, 0x5198, 0x52fc, 0x536c,
+ 0x53b9, 0x5720, 0x5903, 0x592c, 0x5c10, 0x5dff, 0x65e1, 0x6bb3,
+ 0x6bcc, 0x6c14, 0x723f, 0x4e31, 0x4e3c, 0x4ee8, 0x4edc, 0x4ee9,
+ 0x4ee1, 0x4edd, 0x4eda, 0x520c, 0x531c, 0x534c, 0x5722, 0x5723,
+ 0x5917, 0x592f, 0x5b81, 0x5b84, 0x5c12, 0x5c3b, 0x5c74, 0x5c73,
+ 0x5e04, 0x5e80, 0x5e82, 0x5fc9, 0x6209, 0x6250, 0x6c15, 0x6c36,
+ 0x6c43, 0x6c3f, 0x6c3b, 0x72ae, 0x72b0, 0x738a, 0x79b8, 0x808a,
+ 0x961e, 0x4f0e, 0x4f18, 0x4f2c, 0x4ef5, 0x4f14, 0x4ef1, 0x4f00,
+ 0x4ef7, 0x4f08, 0x4f1d, 0x4f02, 0x4f05, 0x4f22, 0x4f13, 0x4f04,
+ 0x4ef4, 0x4f12, 0x51b1, 0x5213, 0x5209, 0x5210, 0x52a6, 0x5322,
+ 0x531f, 0x534d, 0x538a, 0x5407, 0x56e1, 0x56df, 0x572e, 0x572a,
+ 0x5734, 0x593c, 0x5980, 0x597c, 0x5985, 0x597b, 0x597e, 0x5977,
+ 0x597f, 0x5b56, 0x5c15, 0x5c25, 0x5c7c, 0x5c7a, 0x5c7b, 0x5c7e,
+ 0x5ddf, 0x5e75, 0x5e84, 0x5f02, 0x5f1a, 0x5f74, 0x5fd5, 0x5fd4,
+ 0x5fcf, 0x625c, 0x625e, 0x6264, 0x6261, 0x6266, 0x6262, 0x6259,
+ 0x6260, 0x625a, 0x6265, 0x65ef, 0x65ee, 0x673e, 0x6739, 0x6738,
+ 0x673b, 0x673a, 0x673f, 0x673c, 0x6733, 0x6c18, 0x6c46, 0x6c52,
+ 0x6c5c, 0x6c4f, 0x6c4a, 0x6c54, 0x6c4b,
+ /* 0xca */
+ 0x6c4c, 0x7071, 0x725e, 0x72b4, 0x72b5, 0x738e, 0x752a, 0x767f,
+ 0x7a75, 0x7f51, 0x8278, 0x827c, 0x8280, 0x827d, 0x827f, 0x864d,
+ 0x897e, 0x9099, 0x9097, 0x9098, 0x909b, 0x9094, 0x9622, 0x9624,
+ 0x9620, 0x9623, 0x4f56, 0x4f3b, 0x4f62, 0x4f49, 0x4f53, 0x4f64,
+ 0x4f3e, 0x4f67, 0x4f52, 0x4f5f, 0x4f41, 0x4f58, 0x4f2d, 0x4f33,
+ 0x4f3f, 0x4f61, 0x518f, 0x51b9, 0x521c, 0x521e, 0x5221, 0x52ad,
+ 0x52ae, 0x5309, 0x5363, 0x5372, 0x538e, 0x538f, 0x5430, 0x5437,
+ 0x542a, 0x5454, 0x5445, 0x5419, 0x541c, 0x5425, 0x5418, 0x543d,
+ 0x544f, 0x5441, 0x5428, 0x5424, 0x5447, 0x56ee, 0x56e7, 0x56e5,
+ 0x5741, 0x5745, 0x574c, 0x5749, 0x574b, 0x5752, 0x5906, 0x5940,
+ 0x59a6, 0x5998, 0x59a0, 0x5997, 0x598e, 0x59a2, 0x5990, 0x598f,
+ 0x59a7, 0x59a1, 0x5b8e, 0x5b92, 0x5c28, 0x5c2a, 0x5c8d, 0x5c8f,
+ 0x5c88, 0x5c8b, 0x5c89, 0x5c92, 0x5c8a, 0x5c86, 0x5c93, 0x5c95,
+ 0x5de0, 0x5e0a, 0x5e0e, 0x5e8b, 0x5e89, 0x5e8c, 0x5e88, 0x5e8d,
+ 0x5f05, 0x5f1d, 0x5f78, 0x5f76, 0x5fd2, 0x5fd1, 0x5fd0, 0x5fed,
+ 0x5fe8, 0x5fee, 0x5ff3, 0x5fe1, 0x5fe4, 0x5fe3, 0x5ffa, 0x5fef,
+ 0x5ff7, 0x5ffb, 0x6000, 0x5ff4, 0x623a, 0x6283, 0x628c, 0x628e,
+ 0x628f, 0x6294, 0x6287, 0x6271, 0x627b, 0x627a, 0x6270, 0x6281,
+ 0x6288, 0x6277, 0x627d, 0x6272, 0x6274, 0x6537, 0x65f0, 0x65f4,
+ 0x65f3, 0x65f2, 0x65f5, 0x6745, 0x6747,
+ /* 0xcb */
+ 0x6759, 0x6755, 0x674c, 0x6748, 0x675d, 0x674d, 0x675a, 0x674b,
+ 0x6bd0, 0x6c19, 0x6c1a, 0x6c78, 0x6c67, 0x6c6b, 0x6c84, 0x6c8b,
+ 0x6c8f, 0x6c71, 0x6c6f, 0x6c69, 0x6c9a, 0x6c6d, 0x6c87, 0x6c95,
+ 0x6c9c, 0x6c66, 0x6c73, 0x6c65, 0x6c7b, 0x6c8e, 0x7074, 0x707a,
+ 0x7263, 0x72bf, 0x72bd, 0x72c3, 0x72c6, 0x72c1, 0x72ba, 0x72c5,
+ 0x7395, 0x7397, 0x7393, 0x7394, 0x7392, 0x753a, 0x7539, 0x7594,
+ 0x7595, 0x7681, 0x793d, 0x8034, 0x8095, 0x8099, 0x8090, 0x8092,
+ 0x809c, 0x8290, 0x828f, 0x8285, 0x828e, 0x8291, 0x8293, 0x828a,
+ 0x8283, 0x8284, 0x8c78, 0x8fc9, 0x8fbf, 0x909f, 0x90a1, 0x90a5,
+ 0x909e, 0x90a7, 0x90a0, 0x9630, 0x9628, 0x962f, 0x962d, 0x4e33,
+ 0x4f98, 0x4f7c, 0x4f85, 0x4f7d, 0x4f80, 0x4f87, 0x4f76, 0x4f74,
+ 0x4f89, 0x4f84, 0x4f77, 0x4f4c, 0x4f97, 0x4f6a, 0x4f9a, 0x4f79,
+ 0x4f81, 0x4f78, 0x4f90, 0x4f9c, 0x4f94, 0x4f9e, 0x4f92, 0x4f82,
+ 0x4f95, 0x4f6b, 0x4f6e, 0x519e, 0x51bc, 0x51be, 0x5235, 0x5232,
+ 0x5233, 0x5246, 0x5231, 0x52bc, 0x530a, 0x530b, 0x533c, 0x5392,
+ 0x5394, 0x5487, 0x547f, 0x5481, 0x5491, 0x5482, 0x5488, 0x546b,
+ 0x547a, 0x547e, 0x5465, 0x546c, 0x5474, 0x5466, 0x548d, 0x546f,
+ 0x5461, 0x5460, 0x5498, 0x5463, 0x5467, 0x5464, 0x56f7, 0x56f9,
+ 0x576f, 0x5772, 0x576d, 0x576b, 0x5771, 0x5770, 0x5776, 0x5780,
+ 0x5775, 0x577b, 0x5773, 0x5774, 0x5762,
+ /* 0xcc */
+ 0x5768, 0x577d, 0x590c, 0x5945, 0x59b5, 0x59ba, 0x59cf, 0x59ce,
+ 0x59b2, 0x59cc, 0x59c1, 0x59b6, 0x59bc, 0x59c3, 0x59d6, 0x59b1,
+ 0x59bd, 0x59c0, 0x59c8, 0x59b4, 0x59c7, 0x5b62, 0x5b65, 0x5b93,
+ 0x5b95, 0x5c44, 0x5c47, 0x5cae, 0x5ca4, 0x5ca0, 0x5cb5, 0x5caf,
+ 0x5ca8, 0x5cac, 0x5c9f, 0x5ca3, 0x5cad, 0x5ca2, 0x5caa, 0x5ca7,
+ 0x5c9d, 0x5ca5, 0x5cb6, 0x5cb0, 0x5ca6, 0x5e17, 0x5e14, 0x5e19,
+ 0x5f28, 0x5f22, 0x5f23, 0x5f24, 0x5f54, 0x5f82, 0x5f7e, 0x5f7d,
+ 0x5fde, 0x5fe5, 0x602d, 0x6026, 0x6019, 0x6032, 0x600b, 0x6034,
+ 0x600a, 0x6017, 0x6033, 0x601a, 0x601e, 0x602c, 0x6022, 0x600d,
+ 0x6010, 0x602e, 0x6013, 0x6011, 0x600c, 0x6009, 0x601c, 0x6214,
+ 0x623d, 0x62ad, 0x62b4, 0x62d1, 0x62be, 0x62aa, 0x62b6, 0x62ca,
+ 0x62ae, 0x62b3, 0x62af, 0x62bb, 0x62a9, 0x62b0, 0x62b8, 0x653d,
+ 0x65a8, 0x65bb, 0x6609, 0x65fc, 0x6604, 0x6612, 0x6608, 0x65fb,
+ 0x6603, 0x660b, 0x660d, 0x6605, 0x65fd, 0x6611, 0x6610, 0x66f6,
+ 0x670a, 0x6785, 0x676c, 0x678e, 0x6792, 0x6776, 0x677b, 0x6798,
+ 0x6786, 0x6784, 0x6774, 0x678d, 0x678c, 0x677a, 0x679f, 0x6791,
+ 0x6799, 0x6783, 0x677d, 0x6781, 0x6778, 0x6779, 0x6794, 0x6b25,
+ 0x6b80, 0x6b7e, 0x6bde, 0x6c1d, 0x6c93, 0x6cec, 0x6ceb, 0x6cee,
+ 0x6cd9, 0x6cb6, 0x6cd4, 0x6cad, 0x6ce7, 0x6cb7, 0x6cd0, 0x6cc2,
+ 0x6cba, 0x6cc3, 0x6cc6, 0x6ced, 0x6cf2,
+ /* 0xcd */
+ 0x6cd2, 0x6cdd, 0x6cb4, 0x6c8a, 0x6c9d, 0x6c80, 0x6cde, 0x6cc0,
+ 0x6d30, 0x6ccd, 0x6cc7, 0x6cb0, 0x6cf9, 0x6ccf, 0x6ce9, 0x6cd1,
+ 0x7094, 0x7098, 0x7085, 0x7093, 0x7086, 0x7084, 0x7091, 0x7096,
+ 0x7082, 0x709a, 0x7083, 0x726a, 0x72d6, 0x72cb, 0x72d8, 0x72c9,
+ 0x72dc, 0x72d2, 0x72d4, 0x72da, 0x72cc, 0x72d1, 0x73a4, 0x73a1,
+ 0x73ad, 0x73a6, 0x73a2, 0x73a0, 0x73ac, 0x739d, 0x74dd, 0x74e8,
+ 0x753f, 0x7540, 0x753e, 0x758c, 0x7598, 0x76af, 0x76f3, 0x76f1,
+ 0x76f0, 0x76f5, 0x77f8, 0x77fc, 0x77f9, 0x77fb, 0x77fa, 0x77f7,
+ 0x7942, 0x793f, 0x79c5, 0x7a78, 0x7a7b, 0x7afb, 0x7c75, 0x7cfd,
+ 0x8035, 0x808f, 0x80ae, 0x80a3, 0x80b8, 0x80b5, 0x80ad, 0x8220,
+ 0x82a0, 0x82c0, 0x82ab, 0x829a, 0x8298, 0x829b, 0x82b5, 0x82a7,
+ 0x82ae, 0x82bc, 0x829e, 0x82ba, 0x82b4, 0x82a8, 0x82a1, 0x82a9,
+ 0x82c2, 0x82a4, 0x82c3, 0x82b6, 0x82a2, 0x8670, 0x866f, 0x866d,
+ 0x866e, 0x8c56, 0x8fd2, 0x8fcb, 0x8fd3, 0x8fcd, 0x8fd6, 0x8fd5,
+ 0x8fd7, 0x90b2, 0x90b4, 0x90af, 0x90b3, 0x90b0, 0x9639, 0x963d,
+ 0x963c, 0x963a, 0x9643, 0x4fcd, 0x4fc5, 0x4fd3, 0x4fb2, 0x4fc9,
+ 0x4fcb, 0x4fc1, 0x4fd4, 0x4fdc, 0x4fd9, 0x4fbb, 0x4fb3, 0x4fdb,
+ 0x4fc7, 0x4fd6, 0x4fba, 0x4fc0, 0x4fb9, 0x4fec, 0x5244, 0x5249,
+ 0x52c0, 0x52c2, 0x533d, 0x537c, 0x5397, 0x5396, 0x5399, 0x5398,
+ 0x54ba, 0x54a1, 0x54ad, 0x54a5, 0x54cf,
+ /* 0xce */
+ 0x54c3, 0x830d, 0x54b7, 0x54ae, 0x54d6, 0x54b6, 0x54c5, 0x54c6,
+ 0x54a0, 0x5470, 0x54bc, 0x54a2, 0x54be, 0x5472, 0x54de, 0x54b0,
+ 0x57b5, 0x579e, 0x579f, 0x57a4, 0x578c, 0x5797, 0x579d, 0x579b,
+ 0x5794, 0x5798, 0x578f, 0x5799, 0x57a5, 0x579a, 0x5795, 0x58f4,
+ 0x590d, 0x5953, 0x59e1, 0x59de, 0x59ee, 0x5a00, 0x59f1, 0x59dd,
+ 0x59fa, 0x59fd, 0x59fc, 0x59f6, 0x59e4, 0x59f2, 0x59f7, 0x59db,
+ 0x59e9, 0x59f3, 0x59f5, 0x59e0, 0x59fe, 0x59f4, 0x59ed, 0x5ba8,
+ 0x5c4c, 0x5cd0, 0x5cd8, 0x5ccc, 0x5cd7, 0x5ccb, 0x5cdb, 0x5cde,
+ 0x5cda, 0x5cc9, 0x5cc7, 0x5cca, 0x5cd6, 0x5cd3, 0x5cd4, 0x5ccf,
+ 0x5cc8, 0x5cc6, 0x5cce, 0x5cdf, 0x5cf8, 0x5df9, 0x5e21, 0x5e22,
+ 0x5e23, 0x5e20, 0x5e24, 0x5eb0, 0x5ea4, 0x5ea2, 0x5e9b, 0x5ea3,
+ 0x5ea5, 0x5f07, 0x5f2e, 0x5f56, 0x5f86, 0x6037, 0x6039, 0x6054,
+ 0x6072, 0x605e, 0x6045, 0x6053, 0x6047, 0x6049, 0x605b, 0x604c,
+ 0x6040, 0x6042, 0x605f, 0x6024, 0x6044, 0x6058, 0x6066, 0x606e,
+ 0x6242, 0x6243, 0x62cf, 0x630d, 0x630b, 0x62f5, 0x630e, 0x6303,
+ 0x62eb, 0x62f9, 0x630f, 0x630c, 0x62f8, 0x62f6, 0x6300, 0x6313,
+ 0x6314, 0x62fa, 0x6315, 0x62fb, 0x62f0, 0x6541, 0x6543, 0x65aa,
+ 0x65bf, 0x6636, 0x6621, 0x6632, 0x6635, 0x661c, 0x6626, 0x6622,
+ 0x6633, 0x662b, 0x663a, 0x661d, 0x6634, 0x6639, 0x662e, 0x670f,
+ 0x6710, 0x67c1, 0x67f2, 0x67c8, 0x67ba,
+ /* 0xcf */
+ 0x67dc, 0x67bb, 0x67f8, 0x67d8, 0x67c0, 0x67b7, 0x67c5, 0x67eb,
+ 0x67e4, 0x67df, 0x67b5, 0x67cd, 0x67b3, 0x67f7, 0x67f6, 0x67ee,
+ 0x67e3, 0x67c2, 0x67b9, 0x67ce, 0x67e7, 0x67f0, 0x67b2, 0x67fc,
+ 0x67c6, 0x67ed, 0x67cc, 0x67ae, 0x67e6, 0x67db, 0x67fa, 0x67c9,
+ 0x67ca, 0x67c3, 0x67ea, 0x67cb, 0x6b28, 0x6b82, 0x6b84, 0x6bb6,
+ 0x6bd6, 0x6bd8, 0x6be0, 0x6c20, 0x6c21, 0x6d28, 0x6d34, 0x6d2d,
+ 0x6d1f, 0x6d3c, 0x6d3f, 0x6d12, 0x6d0a, 0x6cda, 0x6d33, 0x6d04,
+ 0x6d19, 0x6d3a, 0x6d1a, 0x6d11, 0x6d00, 0x6d1d, 0x6d42, 0x6d01,
+ 0x6d18, 0x6d37, 0x6d03, 0x6d0f, 0x6d40, 0x6d07, 0x6d20, 0x6d2c,
+ 0x6d08, 0x6d22, 0x6d09, 0x6d10, 0x70b7, 0x709f, 0x70be, 0x70b1,
+ 0x70b0, 0x70a1, 0x70b4, 0x70b5, 0x70a9, 0x7241, 0x7249, 0x724a,
+ 0x726c, 0x7270, 0x7273, 0x726e, 0x72ca, 0x72e4, 0x72e8, 0x72eb,
+ 0x72df, 0x72ea, 0x72e6, 0x72e3, 0x7385, 0x73cc, 0x73c2, 0x73c8,
+ 0x73c5, 0x73b9, 0x73b6, 0x73b5, 0x73b4, 0x73eb, 0x73bf, 0x73c7,
+ 0x73be, 0x73c3, 0x73c6, 0x73b8, 0x73cb, 0x74ec, 0x74ee, 0x752e,
+ 0x7547, 0x7548, 0x75a7, 0x75aa, 0x7679, 0x76c4, 0x7708, 0x7703,
+ 0x7704, 0x7705, 0x770a, 0x76f7, 0x76fb, 0x76fa, 0x77e7, 0x77e8,
+ 0x7806, 0x7811, 0x7812, 0x7805, 0x7810, 0x780f, 0x780e, 0x7809,
+ 0x7803, 0x7813, 0x794a, 0x794c, 0x794b, 0x7945, 0x7944, 0x79d5,
+ 0x79cd, 0x79cf, 0x79d6, 0x79ce, 0x7a80,
+ /* 0xd0 */
+ 0x7a7e, 0x7ad1, 0x7b00, 0x7b01, 0x7c7a, 0x7c78, 0x7c79, 0x7c7f,
+ 0x7c80, 0x7c81, 0x7d03, 0x7d08, 0x7d01, 0x7f58, 0x7f91, 0x7f8d,
+ 0x7fbe, 0x8007, 0x800e, 0x800f, 0x8014, 0x8037, 0x80d8, 0x80c7,
+ 0x80e0, 0x80d1, 0x80c8, 0x80c2, 0x80d0, 0x80c5, 0x80e3, 0x80d9,
+ 0x80dc, 0x80ca, 0x80d5, 0x80c9, 0x80cf, 0x80d7, 0x80e6, 0x80cd,
+ 0x81ff, 0x8221, 0x8294, 0x82d9, 0x82fe, 0x82f9, 0x8307, 0x82e8,
+ 0x8300, 0x82d5, 0x833a, 0x82eb, 0x82d6, 0x82f4, 0x82ec, 0x82e1,
+ 0x82f2, 0x82f5, 0x830c, 0x82fb, 0x82f6, 0x82f0, 0x82ea, 0x82e4,
+ 0x82e0, 0x82fa, 0x82f3, 0x82ed, 0x8677, 0x8674, 0x867c, 0x8673,
+ 0x8841, 0x884e, 0x8867, 0x886a, 0x8869, 0x89d3, 0x8a04, 0x8a07,
+ 0x8d72, 0x8fe3, 0x8fe1, 0x8fee, 0x8fe0, 0x90f1, 0x90bd, 0x90bf,
+ 0x90d5, 0x90c5, 0x90be, 0x90c7, 0x90cb, 0x90c8, 0x91d4, 0x91d3,
+ 0x9654, 0x964f, 0x9651, 0x9653, 0x964a, 0x964e, 0x501e, 0x5005,
+ 0x5007, 0x5013, 0x5022, 0x5030, 0x501b, 0x4ff5, 0x4ff4, 0x5033,
+ 0x5037, 0x502c, 0x4ff6, 0x4ff7, 0x5017, 0x501c, 0x5020, 0x5027,
+ 0x5035, 0x502f, 0x5031, 0x500e, 0x515a, 0x5194, 0x5193, 0x51ca,
+ 0x51c4, 0x51c5, 0x51c8, 0x51ce, 0x5261, 0x525a, 0x5252, 0x525e,
+ 0x525f, 0x5255, 0x5262, 0x52cd, 0x530e, 0x539e, 0x5526, 0x54e2,
+ 0x5517, 0x5512, 0x54e7, 0x54f3, 0x54e4, 0x551a, 0x54ff, 0x5504,
+ 0x5508, 0x54eb, 0x5511, 0x5505, 0x54f1,
+ /* 0xd1 */
+ 0x550a, 0x54fb, 0x54f7, 0x54f8, 0x54e0, 0x550e, 0x5503, 0x550b,
+ 0x5701, 0x5702, 0x57cc, 0x5832, 0x57d5, 0x57d2, 0x57ba, 0x57c6,
+ 0x57bd, 0x57bc, 0x57b8, 0x57b6, 0x57bf, 0x57c7, 0x57d0, 0x57b9,
+ 0x57c1, 0x590e, 0x594a, 0x5a19, 0x5a16, 0x5a2d, 0x5a2e, 0x5a15,
+ 0x5a0f, 0x5a17, 0x5a0a, 0x5a1e, 0x5a33, 0x5b6c, 0x5ba7, 0x5bad,
+ 0x5bac, 0x5c03, 0x5c56, 0x5c54, 0x5cec, 0x5cff, 0x5cee, 0x5cf1,
+ 0x5cf7, 0x5d00, 0x5cf9, 0x5e29, 0x5e28, 0x5ea8, 0x5eae, 0x5eaa,
+ 0x5eac, 0x5f33, 0x5f30, 0x5f67, 0x605d, 0x605a, 0x6067, 0x6041,
+ 0x60a2, 0x6088, 0x6080, 0x6092, 0x6081, 0x609d, 0x6083, 0x6095,
+ 0x609b, 0x6097, 0x6087, 0x609c, 0x608e, 0x6219, 0x6246, 0x62f2,
+ 0x6310, 0x6356, 0x632c, 0x6344, 0x6345, 0x6336, 0x6343, 0x63e4,
+ 0x6339, 0x634b, 0x634a, 0x633c, 0x6329, 0x6341, 0x6334, 0x6358,
+ 0x6354, 0x6359, 0x632d, 0x6347, 0x6333, 0x635a, 0x6351, 0x6338,
+ 0x6357, 0x6340, 0x6348, 0x654a, 0x6546, 0x65c6, 0x65c3, 0x65c4,
+ 0x65c2, 0x664a, 0x665f, 0x6647, 0x6651, 0x6712, 0x6713, 0x681f,
+ 0x681a, 0x6849, 0x6832, 0x6833, 0x683b, 0x684b, 0x684f, 0x6816,
+ 0x6831, 0x681c, 0x6835, 0x682b, 0x682d, 0x682f, 0x684e, 0x6844,
+ 0x6834, 0x681d, 0x6812, 0x6814, 0x6826, 0x6828, 0x682e, 0x684d,
+ 0x683a, 0x6825, 0x6820, 0x6b2c, 0x6b2f, 0x6b2d, 0x6b31, 0x6b34,
+ 0x6b6d, 0x8082, 0x6b88, 0x6be6, 0x6be4,
+ /* 0xd2 */
+ 0x6be8, 0x6be3, 0x6be2, 0x6be7, 0x6c25, 0x6d7a, 0x6d63, 0x6d64,
+ 0x6d76, 0x6d0d, 0x6d61, 0x6d92, 0x6d58, 0x6d62, 0x6d6d, 0x6d6f,
+ 0x6d91, 0x6d8d, 0x6def, 0x6d7f, 0x6d86, 0x6d5e, 0x6d67, 0x6d60,
+ 0x6d97, 0x6d70, 0x6d7c, 0x6d5f, 0x6d82, 0x6d98, 0x6d2f, 0x6d68,
+ 0x6d8b, 0x6d7e, 0x6d80, 0x6d84, 0x6d16, 0x6d83, 0x6d7b, 0x6d7d,
+ 0x6d75, 0x6d90, 0x70dc, 0x70d3, 0x70d1, 0x70dd, 0x70cb, 0x7f39,
+ 0x70e2, 0x70d7, 0x70d2, 0x70de, 0x70e0, 0x70d4, 0x70cd, 0x70c5,
+ 0x70c6, 0x70c7, 0x70da, 0x70ce, 0x70e1, 0x7242, 0x7278, 0x7277,
+ 0x7276, 0x7300, 0x72fa, 0x72f4, 0x72fe, 0x72f6, 0x72f3, 0x72fb,
+ 0x7301, 0x73d3, 0x73d9, 0x73e5, 0x73d6, 0x73bc, 0x73e7, 0x73e3,
+ 0x73e9, 0x73dc, 0x73d2, 0x73db, 0x73d4, 0x73dd, 0x73da, 0x73d7,
+ 0x73d8, 0x73e8, 0x74de, 0x74df, 0x74f4, 0x74f5, 0x7521, 0x755b,
+ 0x755f, 0x75b0, 0x75c1, 0x75bb, 0x75c4, 0x75c0, 0x75bf, 0x75b6,
+ 0x75ba, 0x768a, 0x76c9, 0x771d, 0x771b, 0x7710, 0x7713, 0x7712,
+ 0x7723, 0x7711, 0x7715, 0x7719, 0x771a, 0x7722, 0x7727, 0x7823,
+ 0x782c, 0x7822, 0x7835, 0x782f, 0x7828, 0x782e, 0x782b, 0x7821,
+ 0x7829, 0x7833, 0x782a, 0x7831, 0x7954, 0x795b, 0x794f, 0x795c,
+ 0x7953, 0x7952, 0x7951, 0x79eb, 0x79ec, 0x79e0, 0x79ee, 0x79ed,
+ 0x79ea, 0x79dc, 0x79de, 0x79dd, 0x7a86, 0x7a89, 0x7a85, 0x7a8b,
+ 0x7a8c, 0x7a8a, 0x7a87, 0x7ad8, 0x7b10,
+ /* 0xd3 */
+ 0x7b04, 0x7b13, 0x7b05, 0x7b0f, 0x7b08, 0x7b0a, 0x7b0e, 0x7b09,
+ 0x7b12, 0x7c84, 0x7c91, 0x7c8a, 0x7c8c, 0x7c88, 0x7c8d, 0x7c85,
+ 0x7d1e, 0x7d1d, 0x7d11, 0x7d0e, 0x7d18, 0x7d16, 0x7d13, 0x7d1f,
+ 0x7d12, 0x7d0f, 0x7d0c, 0x7f5c, 0x7f61, 0x7f5e, 0x7f60, 0x7f5d,
+ 0x7f5b, 0x7f96, 0x7f92, 0x7fc3, 0x7fc2, 0x7fc0, 0x8016, 0x803e,
+ 0x8039, 0x80fa, 0x80f2, 0x80f9, 0x80f5, 0x8101, 0x80fb, 0x8100,
+ 0x8201, 0x822f, 0x8225, 0x8333, 0x832d, 0x8344, 0x8319, 0x8351,
+ 0x8325, 0x8356, 0x833f, 0x8341, 0x8326, 0x831c, 0x8322, 0x8342,
+ 0x834e, 0x831b, 0x832a, 0x8308, 0x833c, 0x834d, 0x8316, 0x8324,
+ 0x8320, 0x8337, 0x832f, 0x8329, 0x8347, 0x8345, 0x834c, 0x8353,
+ 0x831e, 0x832c, 0x834b, 0x8327, 0x8348, 0x8653, 0x8652, 0x86a2,
+ 0x86a8, 0x8696, 0x868d, 0x8691, 0x869e, 0x8687, 0x8697, 0x8686,
+ 0x868b, 0x869a, 0x8685, 0x86a5, 0x8699, 0x86a1, 0x86a7, 0x8695,
+ 0x8698, 0x868e, 0x869d, 0x8690, 0x8694, 0x8843, 0x8844, 0x886d,
+ 0x8875, 0x8876, 0x8872, 0x8880, 0x8871, 0x887f, 0x886f, 0x8883,
+ 0x887e, 0x8874, 0x887c, 0x8a12, 0x8c47, 0x8c57, 0x8c7b, 0x8ca4,
+ 0x8ca3, 0x8d76, 0x8d78, 0x8db5, 0x8db7, 0x8db6, 0x8ed1, 0x8ed3,
+ 0x8ffe, 0x8ff5, 0x9002, 0x8fff, 0x8ffb, 0x9004, 0x8ffc, 0x8ff6,
+ 0x90d6, 0x90e0, 0x90d9, 0x90da, 0x90e3, 0x90df, 0x90e5, 0x90d8,
+ 0x90db, 0x90d7, 0x90dc, 0x90e4, 0x9150,
+ /* 0xd4 */
+ 0x914e, 0x914f, 0x91d5, 0x91e2, 0x91da, 0x965c, 0x965f, 0x96bc,
+ 0x98e3, 0x9adf, 0x9b2f, 0x4e7f, 0x5070, 0x506a, 0x5061, 0x505e,
+ 0x5060, 0x5053, 0x504b, 0x505d, 0x5072, 0x5048, 0x504d, 0x5041,
+ 0x505b, 0x504a, 0x5062, 0x5015, 0x5045, 0x505f, 0x5069, 0x506b,
+ 0x5063, 0x5064, 0x5046, 0x5040, 0x506e, 0x5073, 0x5057, 0x5051,
+ 0x51d0, 0x526b, 0x526d, 0x526c, 0x526e, 0x52d6, 0x52d3, 0x532d,
+ 0x539c, 0x5575, 0x5576, 0x553c, 0x554d, 0x5550, 0x5534, 0x552a,
+ 0x5551, 0x5562, 0x5536, 0x5535, 0x5530, 0x5552, 0x5545, 0x550c,
+ 0x5532, 0x5565, 0x554e, 0x5539, 0x5548, 0x552d, 0x553b, 0x5540,
+ 0x554b, 0x570a, 0x5707, 0x57fb, 0x5814, 0x57e2, 0x57f6, 0x57dc,
+ 0x57f4, 0x5800, 0x57ed, 0x57fd, 0x5808, 0x57f8, 0x580b, 0x57f3,
+ 0x57cf, 0x5807, 0x57ee, 0x57e3, 0x57f2, 0x57e5, 0x57ec, 0x57e1,
+ 0x580e, 0x57fc, 0x5810, 0x57e7, 0x5801, 0x580c, 0x57f1, 0x57e9,
+ 0x57f0, 0x580d, 0x5804, 0x595c, 0x5a60, 0x5a58, 0x5a55, 0x5a67,
+ 0x5a5e, 0x5a38, 0x5a35, 0x5a6d, 0x5a50, 0x5a5f, 0x5a65, 0x5a6c,
+ 0x5a53, 0x5a64, 0x5a57, 0x5a43, 0x5a5d, 0x5a52, 0x5a44, 0x5a5b,
+ 0x5a48, 0x5a8e, 0x5a3e, 0x5a4d, 0x5a39, 0x5a4c, 0x5a70, 0x5a69,
+ 0x5a47, 0x5a51, 0x5a56, 0x5a42, 0x5a5c, 0x5b72, 0x5b6e, 0x5bc1,
+ 0x5bc0, 0x5c59, 0x5d1e, 0x5d0b, 0x5d1d, 0x5d1a, 0x5d20, 0x5d0c,
+ 0x5d28, 0x5d0d, 0x5d26, 0x5d25, 0x5d0f,
+ /* 0xd5 */
+ 0x5d30, 0x5d12, 0x5d23, 0x5d1f, 0x5d2e, 0x5e3e, 0x5e34, 0x5eb1,
+ 0x5eb4, 0x5eb9, 0x5eb2, 0x5eb3, 0x5f36, 0x5f38, 0x5f9b, 0x5f96,
+ 0x5f9f, 0x608a, 0x6090, 0x6086, 0x60be, 0x60b0, 0x60ba, 0x60d3,
+ 0x60d4, 0x60cf, 0x60e4, 0x60d9, 0x60dd, 0x60c8, 0x60b1, 0x60db,
+ 0x60b7, 0x60ca, 0x60bf, 0x60c3, 0x60cd, 0x60c0, 0x6332, 0x6365,
+ 0x638a, 0x6382, 0x637d, 0x63bd, 0x639e, 0x63ad, 0x639d, 0x6397,
+ 0x63ab, 0x638e, 0x636f, 0x6387, 0x6390, 0x636e, 0x63af, 0x6375,
+ 0x639c, 0x636d, 0x63ae, 0x637c, 0x63a4, 0x633b, 0x639f, 0x6378,
+ 0x6385, 0x6381, 0x6391, 0x638d, 0x6370, 0x6553, 0x65cd, 0x6665,
+ 0x6661, 0x665b, 0x6659, 0x665c, 0x6662, 0x6718, 0x6879, 0x6887,
+ 0x6890, 0x689c, 0x686d, 0x686e, 0x68ae, 0x68ab, 0x6956, 0x686f,
+ 0x68a3, 0x68ac, 0x68a9, 0x6875, 0x6874, 0x68b2, 0x688f, 0x6877,
+ 0x6892, 0x687c, 0x686b, 0x6872, 0x68aa, 0x6880, 0x6871, 0x687e,
+ 0x689b, 0x6896, 0x688b, 0x68a0, 0x6889, 0x68a4, 0x6878, 0x687b,
+ 0x6891, 0x688c, 0x688a, 0x687d, 0x6b36, 0x6b33, 0x6b37, 0x6b38,
+ 0x6b91, 0x6b8f, 0x6b8d, 0x6b8e, 0x6b8c, 0x6c2a, 0x6dc0, 0x6dab,
+ 0x6db4, 0x6db3, 0x6e74, 0x6dac, 0x6de9, 0x6de2, 0x6db7, 0x6df6,
+ 0x6dd4, 0x6e00, 0x6dc8, 0x6de0, 0x6ddf, 0x6dd6, 0x6dbe, 0x6de5,
+ 0x6ddc, 0x6ddd, 0x6ddb, 0x6df4, 0x6dca, 0x6dbd, 0x6ded, 0x6df0,
+ 0x6dba, 0x6dd5, 0x6dc2, 0x6dcf, 0x6dc9,
+ /* 0xd6 */
+ 0x6dd0, 0x6df2, 0x6dd3, 0x6dfd, 0x6dd7, 0x6dcd, 0x6de3, 0x6dbb,
+ 0x70fa, 0x710d, 0x70f7, 0x7117, 0x70f4, 0x710c, 0x70f0, 0x7104,
+ 0x70f3, 0x7110, 0x70fc, 0x70ff, 0x7106, 0x7113, 0x7100, 0x70f8,
+ 0x70f6, 0x710b, 0x7102, 0x710e, 0x727e, 0x727b, 0x727c, 0x727f,
+ 0x731d, 0x7317, 0x7307, 0x7311, 0x7318, 0x730a, 0x7308, 0x72ff,
+ 0x730f, 0x731e, 0x7388, 0x73f6, 0x73f8, 0x73f5, 0x7404, 0x7401,
+ 0x73fd, 0x7407, 0x7400, 0x73fa, 0x73fc, 0x73ff, 0x740c, 0x740b,
+ 0x73f4, 0x7408, 0x7564, 0x7563, 0x75ce, 0x75d2, 0x75cf, 0x75cb,
+ 0x75cc, 0x75d1, 0x75d0, 0x768f, 0x7689, 0x76d3, 0x7739, 0x772f,
+ 0x772d, 0x7731, 0x7732, 0x7734, 0x7733, 0x773d, 0x7725, 0x773b,
+ 0x7735, 0x7848, 0x7852, 0x7849, 0x784d, 0x784a, 0x784c, 0x7826,
+ 0x7845, 0x7850, 0x7964, 0x7967, 0x7969, 0x796a, 0x7963, 0x796b,
+ 0x7961, 0x79bb, 0x79fa, 0x79f8, 0x79f6, 0x79f7, 0x7a8f, 0x7a94,
+ 0x7a90, 0x7b35, 0x7b47, 0x7b34, 0x7b25, 0x7b30, 0x7b22, 0x7b24,
+ 0x7b33, 0x7b18, 0x7b2a, 0x7b1d, 0x7b31, 0x7b2b, 0x7b2d, 0x7b2f,
+ 0x7b32, 0x7b38, 0x7b1a, 0x7b23, 0x7c94, 0x7c98, 0x7c96, 0x7ca3,
+ 0x7d35, 0x7d3d, 0x7d38, 0x7d36, 0x7d3a, 0x7d45, 0x7d2c, 0x7d29,
+ 0x7d41, 0x7d47, 0x7d3e, 0x7d3f, 0x7d4a, 0x7d3b, 0x7d28, 0x7f63,
+ 0x7f95, 0x7f9c, 0x7f9d, 0x7f9b, 0x7fca, 0x7fcb, 0x7fcd, 0x7fd0,
+ 0x7fd1, 0x7fc7, 0x7fcf, 0x7fc9, 0x801f,
+ /* 0xd7 */
+ 0x801e, 0x801b, 0x8047, 0x8043, 0x8048, 0x8118, 0x8125, 0x8119,
+ 0x811b, 0x812d, 0x811f, 0x812c, 0x811e, 0x8121, 0x8115, 0x8127,
+ 0x811d, 0x8122, 0x8211, 0x8238, 0x8233, 0x823a, 0x8234, 0x8232,
+ 0x8274, 0x8390, 0x83a3, 0x83a8, 0x838d, 0x837a, 0x8373, 0x83a4,
+ 0x8374, 0x838f, 0x8381, 0x8395, 0x8399, 0x8375, 0x8394, 0x83a9,
+ 0x837d, 0x8383, 0x838c, 0x839d, 0x839b, 0x83aa, 0x838b, 0x837e,
+ 0x83a5, 0x83af, 0x8388, 0x8397, 0x83b0, 0x837f, 0x83a6, 0x8387,
+ 0x83ae, 0x8376, 0x839a, 0x8659, 0x8656, 0x86bf, 0x86b7, 0x86c2,
+ 0x86c1, 0x86c5, 0x86ba, 0x86b0, 0x86c8, 0x86b9, 0x86b3, 0x86b8,
+ 0x86cc, 0x86b4, 0x86bb, 0x86bc, 0x86c3, 0x86bd, 0x86be, 0x8852,
+ 0x8889, 0x8895, 0x88a8, 0x88a2, 0x88aa, 0x889a, 0x8891, 0x88a1,
+ 0x889f, 0x8898, 0x88a7, 0x8899, 0x889b, 0x8897, 0x88a4, 0x88ac,
+ 0x888c, 0x8893, 0x888e, 0x8982, 0x89d6, 0x89d9, 0x89d5, 0x8a30,
+ 0x8a27, 0x8a2c, 0x8a1e, 0x8c39, 0x8c3b, 0x8c5c, 0x8c5d, 0x8c7d,
+ 0x8ca5, 0x8d7d, 0x8d7b, 0x8d79, 0x8dbc, 0x8dc2, 0x8db9, 0x8dbf,
+ 0x8dc1, 0x8ed8, 0x8ede, 0x8edd, 0x8edc, 0x8ed7, 0x8ee0, 0x8ee1,
+ 0x9024, 0x900b, 0x9011, 0x901c, 0x900c, 0x9021, 0x90ef, 0x90ea,
+ 0x90f0, 0x90f4, 0x90f2, 0x90f3, 0x90d4, 0x90eb, 0x90ec, 0x90e9,
+ 0x9156, 0x9158, 0x915a, 0x9153, 0x9155, 0x91ec, 0x91f4, 0x91f1,
+ 0x91f3, 0x91f8, 0x91e4, 0x91f9, 0x91ea,
+ /* 0xd8 */
+ 0x91eb, 0x91f7, 0x91e8, 0x91ee, 0x957a, 0x9586, 0x9588, 0x967c,
+ 0x966d, 0x966b, 0x9671, 0x966f, 0x96bf, 0x976a, 0x9804, 0x98e5,
+ 0x9997, 0x509b, 0x5095, 0x5094, 0x509e, 0x508b, 0x50a3, 0x5083,
+ 0x508c, 0x508e, 0x509d, 0x5068, 0x509c, 0x5092, 0x5082, 0x5087,
+ 0x515f, 0x51d4, 0x5312, 0x5311, 0x53a4, 0x53a7, 0x5591, 0x55a8,
+ 0x55a5, 0x55ad, 0x5577, 0x5645, 0x55a2, 0x5593, 0x5588, 0x558f,
+ 0x55b5, 0x5581, 0x55a3, 0x5592, 0x55a4, 0x557d, 0x558c, 0x55a6,
+ 0x557f, 0x5595, 0x55a1, 0x558e, 0x570c, 0x5829, 0x5837, 0x5819,
+ 0x581e, 0x5827, 0x5823, 0x5828, 0x57f5, 0x5848, 0x5825, 0x581c,
+ 0x581b, 0x5833, 0x583f, 0x5836, 0x582e, 0x5839, 0x5838, 0x582d,
+ 0x582c, 0x583b, 0x5961, 0x5aaf, 0x5a94, 0x5a9f, 0x5a7a, 0x5aa2,
+ 0x5a9e, 0x5a78, 0x5aa6, 0x5a7c, 0x5aa5, 0x5aac, 0x5a95, 0x5aae,
+ 0x5a37, 0x5a84, 0x5a8a, 0x5a97, 0x5a83, 0x5a8b, 0x5aa9, 0x5a7b,
+ 0x5a7d, 0x5a8c, 0x5a9c, 0x5a8f, 0x5a93, 0x5a9d, 0x5bea, 0x5bcd,
+ 0x5bcb, 0x5bd4, 0x5bd1, 0x5bca, 0x5bce, 0x5c0c, 0x5c30, 0x5d37,
+ 0x5d43, 0x5d6b, 0x5d41, 0x5d4b, 0x5d3f, 0x5d35, 0x5d51, 0x5d4e,
+ 0x5d55, 0x5d33, 0x5d3a, 0x5d52, 0x5d3d, 0x5d31, 0x5d59, 0x5d42,
+ 0x5d39, 0x5d49, 0x5d38, 0x5d3c, 0x5d32, 0x5d36, 0x5d40, 0x5d45,
+ 0x5e44, 0x5e41, 0x5f58, 0x5fa6, 0x5fa5, 0x5fab, 0x60c9, 0x60b9,
+ 0x60cc, 0x60e2, 0x60ce, 0x60c4, 0x6114,
+ /* 0xd9 */
+ 0x60f2, 0x610a, 0x6116, 0x6105, 0x60f5, 0x6113, 0x60f8, 0x60fc,
+ 0x60fe, 0x60c1, 0x6103, 0x6118, 0x611d, 0x6110, 0x60ff, 0x6104,
+ 0x610b, 0x624a, 0x6394, 0x63b1, 0x63b0, 0x63ce, 0x63e5, 0x63e8,
+ 0x63ef, 0x63c3, 0x649d, 0x63f3, 0x63ca, 0x63e0, 0x63f6, 0x63d5,
+ 0x63f2, 0x63f5, 0x6461, 0x63df, 0x63be, 0x63dd, 0x63dc, 0x63c4,
+ 0x63d8, 0x63d3, 0x63c2, 0x63c7, 0x63cc, 0x63cb, 0x63c8, 0x63f0,
+ 0x63d7, 0x63d9, 0x6532, 0x6567, 0x656a, 0x6564, 0x655c, 0x6568,
+ 0x6565, 0x658c, 0x659d, 0x659e, 0x65ae, 0x65d0, 0x65d2, 0x667c,
+ 0x666c, 0x667b, 0x6680, 0x6671, 0x6679, 0x666a, 0x6672, 0x6701,
+ 0x690c, 0x68d3, 0x6904, 0x68dc, 0x692a, 0x68ec, 0x68ea, 0x68f1,
+ 0x690f, 0x68d6, 0x68f7, 0x68eb, 0x68e4, 0x68f6, 0x6913, 0x6910,
+ 0x68f3, 0x68e1, 0x6907, 0x68cc, 0x6908, 0x6970, 0x68b4, 0x6911,
+ 0x68ef, 0x68c6, 0x6914, 0x68f8, 0x68d0, 0x68fd, 0x68fc, 0x68e8,
+ 0x690b, 0x690a, 0x6917, 0x68ce, 0x68c8, 0x68dd, 0x68de, 0x68e6,
+ 0x68f4, 0x68d1, 0x6906, 0x68d4, 0x68e9, 0x6915, 0x6925, 0x68c7,
+ 0x6b39, 0x6b3b, 0x6b3f, 0x6b3c, 0x6b94, 0x6b97, 0x6b99, 0x6b95,
+ 0x6bbd, 0x6bf0, 0x6bf2, 0x6bf3, 0x6c30, 0x6dfc, 0x6e46, 0x6e47,
+ 0x6e1f, 0x6e49, 0x6e88, 0x6e3c, 0x6e3d, 0x6e45, 0x6e62, 0x6e2b,
+ 0x6e3f, 0x6e41, 0x6e5d, 0x6e73, 0x6e1c, 0x6e33, 0x6e4b, 0x6e40,
+ 0x6e51, 0x6e3b, 0x6e03, 0x6e2e, 0x6e5e,
+ /* 0xda */
+ 0x6e68, 0x6e5c, 0x6e61, 0x6e31, 0x6e28, 0x6e60, 0x6e71, 0x6e6b,
+ 0x6e39, 0x6e22, 0x6e30, 0x6e53, 0x6e65, 0x6e27, 0x6e78, 0x6e64,
+ 0x6e77, 0x6e55, 0x6e79, 0x6e52, 0x6e66, 0x6e35, 0x6e36, 0x6e5a,
+ 0x7120, 0x711e, 0x712f, 0x70fb, 0x712e, 0x7131, 0x7123, 0x7125,
+ 0x7122, 0x7132, 0x711f, 0x7128, 0x713a, 0x711b, 0x724b, 0x725a,
+ 0x7288, 0x7289, 0x7286, 0x7285, 0x728b, 0x7312, 0x730b, 0x7330,
+ 0x7322, 0x7331, 0x7333, 0x7327, 0x7332, 0x732d, 0x7326, 0x7323,
+ 0x7335, 0x730c, 0x742e, 0x742c, 0x7430, 0x742b, 0x7416, 0x741a,
+ 0x7421, 0x742d, 0x7431, 0x7424, 0x7423, 0x741d, 0x7429, 0x7420,
+ 0x7432, 0x74fb, 0x752f, 0x756f, 0x756c, 0x75e7, 0x75da, 0x75e1,
+ 0x75e6, 0x75dd, 0x75df, 0x75e4, 0x75d7, 0x7695, 0x7692, 0x76da,
+ 0x7746, 0x7747, 0x7744, 0x774d, 0x7745, 0x774a, 0x774e, 0x774b,
+ 0x774c, 0x77de, 0x77ec, 0x7860, 0x7864, 0x7865, 0x785c, 0x786d,
+ 0x7871, 0x786a, 0x786e, 0x7870, 0x7869, 0x7868, 0x785e, 0x7862,
+ 0x7974, 0x7973, 0x7972, 0x7970, 0x7a02, 0x7a0a, 0x7a03, 0x7a0c,
+ 0x7a04, 0x7a99, 0x7ae6, 0x7ae4, 0x7b4a, 0x7b3b, 0x7b44, 0x7b48,
+ 0x7b4c, 0x7b4e, 0x7b40, 0x7b58, 0x7b45, 0x7ca2, 0x7c9e, 0x7ca8,
+ 0x7ca1, 0x7d58, 0x7d6f, 0x7d63, 0x7d53, 0x7d56, 0x7d67, 0x7d6a,
+ 0x7d4f, 0x7d6d, 0x7d5c, 0x7d6b, 0x7d52, 0x7d54, 0x7d69, 0x7d51,
+ 0x7d5f, 0x7d4e, 0x7f3e, 0x7f3f, 0x7f65,
+ /* 0xdb */
+ 0x7f66, 0x7fa2, 0x7fa0, 0x7fa1, 0x7fd7, 0x8051, 0x804f, 0x8050,
+ 0x80fe, 0x80d4, 0x8143, 0x814a, 0x8152, 0x814f, 0x8147, 0x813d,
+ 0x814d, 0x813a, 0x81e6, 0x81ee, 0x81f7, 0x81f8, 0x81f9, 0x8204,
+ 0x823c, 0x823d, 0x823f, 0x8275, 0x833b, 0x83cf, 0x83f9, 0x8423,
+ 0x83c0, 0x83e8, 0x8412, 0x83e7, 0x83e4, 0x83fc, 0x83f6, 0x8410,
+ 0x83c6, 0x83c8, 0x83eb, 0x83e3, 0x83bf, 0x8401, 0x83dd, 0x83e5,
+ 0x83d8, 0x83ff, 0x83e1, 0x83cb, 0x83ce, 0x83d6, 0x83f5, 0x83c9,
+ 0x8409, 0x840f, 0x83de, 0x8411, 0x8406, 0x83c2, 0x83f3, 0x83d5,
+ 0x83fa, 0x83c7, 0x83d1, 0x83ea, 0x8413, 0x83c3, 0x83ec, 0x83ee,
+ 0x83c4, 0x83fb, 0x83d7, 0x83e2, 0x841b, 0x83db, 0x83fe, 0x86d8,
+ 0x86e2, 0x86e6, 0x86d3, 0x86e3, 0x86da, 0x86ea, 0x86dd, 0x86eb,
+ 0x86dc, 0x86ec, 0x86e9, 0x86d7, 0x86e8, 0x86d1, 0x8848, 0x8856,
+ 0x8855, 0x88ba, 0x88d7, 0x88b9, 0x88b8, 0x88c0, 0x88be, 0x88b6,
+ 0x88bc, 0x88b7, 0x88bd, 0x88b2, 0x8901, 0x88c9, 0x8995, 0x8998,
+ 0x8997, 0x89dd, 0x89da, 0x89db, 0x8a4e, 0x8a4d, 0x8a39, 0x8a59,
+ 0x8a40, 0x8a57, 0x8a58, 0x8a44, 0x8a45, 0x8a52, 0x8a48, 0x8a51,
+ 0x8a4a, 0x8a4c, 0x8a4f, 0x8c5f, 0x8c81, 0x8c80, 0x8cba, 0x8cbe,
+ 0x8cb0, 0x8cb9, 0x8cb5, 0x8d84, 0x8d80, 0x8d89, 0x8dd8, 0x8dd3,
+ 0x8dcd, 0x8dc7, 0x8dd6, 0x8ddc, 0x8dcf, 0x8dd5, 0x8dd9, 0x8dc8,
+ 0x8dd7, 0x8dc5, 0x8eef, 0x8ef7, 0x8efa,
+ /* 0xdc */
+ 0x8ef9, 0x8ee6, 0x8eee, 0x8ee5, 0x8ef5, 0x8ee7, 0x8ee8, 0x8ef6,
+ 0x8eeb, 0x8ef1, 0x8eec, 0x8ef4, 0x8ee9, 0x902d, 0x9034, 0x902f,
+ 0x9106, 0x912c, 0x9104, 0x90ff, 0x90fc, 0x9108, 0x90f9, 0x90fb,
+ 0x9101, 0x9100, 0x9107, 0x9105, 0x9103, 0x9161, 0x9164, 0x915f,
+ 0x9162, 0x9160, 0x9201, 0x920a, 0x9225, 0x9203, 0x921a, 0x9226,
+ 0x920f, 0x920c, 0x9200, 0x9212, 0x91ff, 0x91fd, 0x9206, 0x9204,
+ 0x9227, 0x9202, 0x921c, 0x9224, 0x9219, 0x9217, 0x9205, 0x9216,
+ 0x957b, 0x958d, 0x958c, 0x9590, 0x9687, 0x967e, 0x9688, 0x9689,
+ 0x9683, 0x9680, 0x96c2, 0x96c8, 0x96c3, 0x96f1, 0x96f0, 0x976c,
+ 0x9770, 0x976e, 0x9807, 0x98a9, 0x98eb, 0x9ce6, 0x9ef9, 0x4e83,
+ 0x4e84, 0x4eb6, 0x50bd, 0x50bf, 0x50c6, 0x50ae, 0x50c4, 0x50ca,
+ 0x50b4, 0x50c8, 0x50c2, 0x50b0, 0x50c1, 0x50ba, 0x50b1, 0x50cb,
+ 0x50c9, 0x50b6, 0x50b8, 0x51d7, 0x527a, 0x5278, 0x527b, 0x527c,
+ 0x55c3, 0x55db, 0x55cc, 0x55d0, 0x55cb, 0x55ca, 0x55dd, 0x55c0,
+ 0x55d4, 0x55c4, 0x55e9, 0x55bf, 0x55d2, 0x558d, 0x55cf, 0x55d5,
+ 0x55e2, 0x55d6, 0x55c8, 0x55f2, 0x55cd, 0x55d9, 0x55c2, 0x5714,
+ 0x5853, 0x5868, 0x5864, 0x584f, 0x584d, 0x5849, 0x586f, 0x5855,
+ 0x584e, 0x585d, 0x5859, 0x5865, 0x585b, 0x583d, 0x5863, 0x5871,
+ 0x58fc, 0x5ac7, 0x5ac4, 0x5acb, 0x5aba, 0x5ab8, 0x5ab1, 0x5ab5,
+ 0x5ab0, 0x5abf, 0x5ac8, 0x5abb, 0x5ac6,
+ /* 0xdd */
+ 0x5ab7, 0x5ac0, 0x5aca, 0x5ab4, 0x5ab6, 0x5acd, 0x5ab9, 0x5a90,
+ 0x5bd6, 0x5bd8, 0x5bd9, 0x5c1f, 0x5c33, 0x5d71, 0x5d63, 0x5d4a,
+ 0x5d65, 0x5d72, 0x5d6c, 0x5d5e, 0x5d68, 0x5d67, 0x5d62, 0x5df0,
+ 0x5e4f, 0x5e4e, 0x5e4a, 0x5e4d, 0x5e4b, 0x5ec5, 0x5ecc, 0x5ec6,
+ 0x5ecb, 0x5ec7, 0x5f40, 0x5faf, 0x5fad, 0x60f7, 0x6149, 0x614a,
+ 0x612b, 0x6145, 0x6136, 0x6132, 0x612e, 0x6146, 0x612f, 0x614f,
+ 0x6129, 0x6140, 0x6220, 0x9168, 0x6223, 0x6225, 0x6224, 0x63c5,
+ 0x63f1, 0x63eb, 0x6410, 0x6412, 0x6409, 0x6420, 0x6424, 0x6433,
+ 0x6443, 0x641f, 0x6415, 0x6418, 0x6439, 0x6437, 0x6422, 0x6423,
+ 0x640c, 0x6426, 0x6430, 0x6428, 0x6441, 0x6435, 0x642f, 0x640a,
+ 0x641a, 0x6440, 0x6425, 0x6427, 0x640b, 0x63e7, 0x641b, 0x642e,
+ 0x6421, 0x640e, 0x656f, 0x6592, 0x65d3, 0x6686, 0x668c, 0x6695,
+ 0x6690, 0x668b, 0x668a, 0x6699, 0x6694, 0x6678, 0x6720, 0x6966,
+ 0x695f, 0x6938, 0x694e, 0x6962, 0x6971, 0x693f, 0x6945, 0x696a,
+ 0x6939, 0x6942, 0x6957, 0x6959, 0x697a, 0x6948, 0x6949, 0x6935,
+ 0x696c, 0x6933, 0x693d, 0x6965, 0x68f0, 0x6978, 0x6934, 0x6969,
+ 0x6940, 0x696f, 0x6944, 0x6976, 0x6958, 0x6941, 0x6974, 0x694c,
+ 0x693b, 0x694b, 0x6937, 0x695c, 0x694f, 0x6951, 0x6932, 0x6952,
+ 0x692f, 0x697b, 0x693c, 0x6b46, 0x6b45, 0x6b43, 0x6b42, 0x6b48,
+ 0x6b41, 0x6b9b, 0xfa0d, 0x6bfb, 0x6bfc,
+ /* 0xde */
+ 0x6bf9, 0x6bf7, 0x6bf8, 0x6e9b, 0x6ed6, 0x6ec8, 0x6e8f, 0x6ec0,
+ 0x6e9f, 0x6e93, 0x6e94, 0x6ea0, 0x6eb1, 0x6eb9, 0x6ec6, 0x6ed2,
+ 0x6ebd, 0x6ec1, 0x6e9e, 0x6ec9, 0x6eb7, 0x6eb0, 0x6ecd, 0x6ea6,
+ 0x6ecf, 0x6eb2, 0x6ebe, 0x6ec3, 0x6edc, 0x6ed8, 0x6e99, 0x6e92,
+ 0x6e8e, 0x6e8d, 0x6ea4, 0x6ea1, 0x6ebf, 0x6eb3, 0x6ed0, 0x6eca,
+ 0x6e97, 0x6eae, 0x6ea3, 0x7147, 0x7154, 0x7152, 0x7163, 0x7160,
+ 0x7141, 0x715d, 0x7162, 0x7172, 0x7178, 0x716a, 0x7161, 0x7142,
+ 0x7158, 0x7143, 0x714b, 0x7170, 0x715f, 0x7150, 0x7153, 0x7144,
+ 0x714d, 0x715a, 0x724f, 0x728d, 0x728c, 0x7291, 0x7290, 0x728e,
+ 0x733c, 0x7342, 0x733b, 0x733a, 0x7340, 0x734a, 0x7349, 0x7444,
+ 0x744a, 0x744b, 0x7452, 0x7451, 0x7457, 0x7440, 0x744f, 0x7450,
+ 0x744e, 0x7442, 0x7446, 0x744d, 0x7454, 0x74e1, 0x74ff, 0x74fe,
+ 0x74fd, 0x751d, 0x7579, 0x7577, 0x6983, 0x75ef, 0x760f, 0x7603,
+ 0x75f7, 0x75fe, 0x75fc, 0x75f9, 0x75f8, 0x7610, 0x75fb, 0x75f6,
+ 0x75ed, 0x75f5, 0x75fd, 0x7699, 0x76b5, 0x76dd, 0x7755, 0x775f,
+ 0x7760, 0x7752, 0x7756, 0x775a, 0x7769, 0x7767, 0x7754, 0x7759,
+ 0x776d, 0x77e0, 0x7887, 0x789a, 0x7894, 0x788f, 0x7884, 0x7895,
+ 0x7885, 0x7886, 0x78a1, 0x7883, 0x7879, 0x7899, 0x7880, 0x7896,
+ 0x787b, 0x797c, 0x7982, 0x797d, 0x7979, 0x7a11, 0x7a18, 0x7a19,
+ 0x7a12, 0x7a17, 0x7a15, 0x7a22, 0x7a13,
+ /* 0xdf */
+ 0x7a1b, 0x7a10, 0x7aa3, 0x7aa2, 0x7a9e, 0x7aeb, 0x7b66, 0x7b64,
+ 0x7b6d, 0x7b74, 0x7b69, 0x7b72, 0x7b65, 0x7b73, 0x7b71, 0x7b70,
+ 0x7b61, 0x7b78, 0x7b76, 0x7b63, 0x7cb2, 0x7cb4, 0x7caf, 0x7d88,
+ 0x7d86, 0x7d80, 0x7d8d, 0x7d7f, 0x7d85, 0x7d7a, 0x7d8e, 0x7d7b,
+ 0x7d83, 0x7d7c, 0x7d8c, 0x7d94, 0x7d84, 0x7d7d, 0x7d92, 0x7f6d,
+ 0x7f6b, 0x7f67, 0x7f68, 0x7f6c, 0x7fa6, 0x7fa5, 0x7fa7, 0x7fdb,
+ 0x7fdc, 0x8021, 0x8164, 0x8160, 0x8177, 0x815c, 0x8169, 0x815b,
+ 0x8162, 0x8172, 0x6721, 0x815e, 0x8176, 0x8167, 0x816f, 0x8144,
+ 0x8161, 0x821d, 0x8249, 0x8244, 0x8240, 0x8242, 0x8245, 0x84f1,
+ 0x843f, 0x8456, 0x8476, 0x8479, 0x848f, 0x848d, 0x8465, 0x8451,
+ 0x8440, 0x8486, 0x8467, 0x8430, 0x844d, 0x847d, 0x845a, 0x8459,
+ 0x8474, 0x8473, 0x845d, 0x8507, 0x845e, 0x8437, 0x843a, 0x8434,
+ 0x847a, 0x8443, 0x8478, 0x8432, 0x8445, 0x8429, 0x83d9, 0x844b,
+ 0x842f, 0x8442, 0x842d, 0x845f, 0x8470, 0x8439, 0x844e, 0x844c,
+ 0x8452, 0x846f, 0x84c5, 0x848e, 0x843b, 0x8447, 0x8436, 0x8433,
+ 0x8468, 0x847e, 0x8444, 0x842b, 0x8460, 0x8454, 0x846e, 0x8450,
+ 0x870b, 0x8704, 0x86f7, 0x870c, 0x86fa, 0x86d6, 0x86f5, 0x874d,
+ 0x86f8, 0x870e, 0x8709, 0x8701, 0x86f6, 0x870d, 0x8705, 0x88d6,
+ 0x88cb, 0x88cd, 0x88ce, 0x88de, 0x88db, 0x88da, 0x88cc, 0x88d0,
+ 0x8985, 0x899b, 0x89df, 0x89e5, 0x89e4,
+ /* 0xe0 */
+ 0x89e1, 0x89e0, 0x89e2, 0x89dc, 0x89e6, 0x8a76, 0x8a86, 0x8a7f,
+ 0x8a61, 0x8a3f, 0x8a77, 0x8a82, 0x8a84, 0x8a75, 0x8a83, 0x8a81,
+ 0x8a74, 0x8a7a, 0x8c3c, 0x8c4b, 0x8c4a, 0x8c65, 0x8c64, 0x8c66,
+ 0x8c86, 0x8c84, 0x8c85, 0x8ccc, 0x8d68, 0x8d69, 0x8d91, 0x8d8c,
+ 0x8d8e, 0x8d8f, 0x8d8d, 0x8d93, 0x8d94, 0x8d90, 0x8d92, 0x8df0,
+ 0x8de0, 0x8dec, 0x8df1, 0x8dee, 0x8dd0, 0x8de9, 0x8de3, 0x8de2,
+ 0x8de7, 0x8df2, 0x8deb, 0x8df4, 0x8f06, 0x8eff, 0x8f01, 0x8f00,
+ 0x8f05, 0x8f07, 0x8f08, 0x8f02, 0x8f0b, 0x9052, 0x903f, 0x9044,
+ 0x9049, 0x903d, 0x9110, 0x910d, 0x910f, 0x9111, 0x9116, 0x9114,
+ 0x910b, 0x910e, 0x916e, 0x916f, 0x9248, 0x9252, 0x9230, 0x923a,
+ 0x9266, 0x9233, 0x9265, 0x925e, 0x9283, 0x922e, 0x924a, 0x9246,
+ 0x926d, 0x926c, 0x924f, 0x9260, 0x9267, 0x926f, 0x9236, 0x9261,
+ 0x9270, 0x9231, 0x9254, 0x9263, 0x9250, 0x9272, 0x924e, 0x9253,
+ 0x924c, 0x9256, 0x9232, 0x959f, 0x959c, 0x959e, 0x959b, 0x9692,
+ 0x9693, 0x9691, 0x9697, 0x96ce, 0x96fa, 0x96fd, 0x96f8, 0x96f5,
+ 0x9773, 0x9777, 0x9778, 0x9772, 0x980f, 0x980d, 0x980e, 0x98ac,
+ 0x98f6, 0x98f9, 0x99af, 0x99b2, 0x99b0, 0x99b5, 0x9aad, 0x9aab,
+ 0x9b5b, 0x9cea, 0x9ced, 0x9ce7, 0x9e80, 0x9efd, 0x50e6, 0x50d4,
+ 0x50d7, 0x50e8, 0x50f3, 0x50db, 0x50ea, 0x50dd, 0x50e4, 0x50d3,
+ 0x50ec, 0x50f0, 0x50ef, 0x50e3, 0x50e0,
+ /* 0xe1 */
+ 0x51d8, 0x5280, 0x5281, 0x52e9, 0x52eb, 0x5330, 0x53ac, 0x5627,
+ 0x5615, 0x560c, 0x5612, 0x55fc, 0x560f, 0x561c, 0x5601, 0x5613,
+ 0x5602, 0x55fa, 0x561d, 0x5604, 0x55ff, 0x55f9, 0x5889, 0x587c,
+ 0x5890, 0x5898, 0x5886, 0x5881, 0x587f, 0x5874, 0x588b, 0x587a,
+ 0x5887, 0x5891, 0x588e, 0x5876, 0x5882, 0x5888, 0x587b, 0x5894,
+ 0x588f, 0x58fe, 0x596b, 0x5adc, 0x5aee, 0x5ae5, 0x5ad5, 0x5aea,
+ 0x5ada, 0x5aed, 0x5aeb, 0x5af3, 0x5ae2, 0x5ae0, 0x5adb, 0x5aec,
+ 0x5ade, 0x5add, 0x5ad9, 0x5ae8, 0x5adf, 0x5b77, 0x5be0, 0x5be3,
+ 0x5c63, 0x5d82, 0x5d80, 0x5d7d, 0x5d86, 0x5d7a, 0x5d81, 0x5d77,
+ 0x5d8a, 0x5d89, 0x5d88, 0x5d7e, 0x5d7c, 0x5d8d, 0x5d79, 0x5d7f,
+ 0x5e58, 0x5e59, 0x5e53, 0x5ed8, 0x5ed1, 0x5ed7, 0x5ece, 0x5edc,
+ 0x5ed5, 0x5ed9, 0x5ed2, 0x5ed4, 0x5f44, 0x5f43, 0x5f6f, 0x5fb6,
+ 0x612c, 0x6128, 0x6141, 0x615e, 0x6171, 0x6173, 0x6152, 0x6153,
+ 0x6172, 0x616c, 0x6180, 0x6174, 0x6154, 0x617a, 0x615b, 0x6165,
+ 0x613b, 0x616a, 0x6161, 0x6156, 0x6229, 0x6227, 0x622b, 0x642b,
+ 0x644d, 0x645b, 0x645d, 0x6474, 0x6476, 0x6472, 0x6473, 0x647d,
+ 0x6475, 0x6466, 0x64a6, 0x644e, 0x6482, 0x645e, 0x645c, 0x644b,
+ 0x6453, 0x6460, 0x6450, 0x647f, 0x643f, 0x646c, 0x646b, 0x6459,
+ 0x6465, 0x6477, 0x6573, 0x65a0, 0x66a1, 0x66a0, 0x669f, 0x6705,
+ 0x6704, 0x6722, 0x69b1, 0x69b6, 0x69c9,
+ /* 0xe2 */
+ 0x69a0, 0x69ce, 0x6996, 0x69b0, 0x69ac, 0x69bc, 0x6991, 0x6999,
+ 0x698e, 0x69a7, 0x698d, 0x69a9, 0x69be, 0x69af, 0x69bf, 0x69c4,
+ 0x69bd, 0x69a4, 0x69d4, 0x69b9, 0x69ca, 0x699a, 0x69cf, 0x69b3,
+ 0x6993, 0x69aa, 0x69a1, 0x699e, 0x69d9, 0x6997, 0x6990, 0x69c2,
+ 0x69b5, 0x69a5, 0x69c6, 0x6b4a, 0x6b4d, 0x6b4b, 0x6b9e, 0x6b9f,
+ 0x6ba0, 0x6bc3, 0x6bc4, 0x6bfe, 0x6ece, 0x6ef5, 0x6ef1, 0x6f03,
+ 0x6f25, 0x6ef8, 0x6f37, 0x6efb, 0x6f2e, 0x6f09, 0x6f4e, 0x6f19,
+ 0x6f1a, 0x6f27, 0x6f18, 0x6f3b, 0x6f12, 0x6eed, 0x6f0a, 0x6f36,
+ 0x6f73, 0x6ef9, 0x6eee, 0x6f2d, 0x6f40, 0x6f30, 0x6f3c, 0x6f35,
+ 0x6eeb, 0x6f07, 0x6f0e, 0x6f43, 0x6f05, 0x6efd, 0x6ef6, 0x6f39,
+ 0x6f1c, 0x6efc, 0x6f3a, 0x6f1f, 0x6f0d, 0x6f1e, 0x6f08, 0x6f21,
+ 0x7187, 0x7190, 0x7189, 0x7180, 0x7185, 0x7182, 0x718f, 0x717b,
+ 0x7186, 0x7181, 0x7197, 0x7244, 0x7253, 0x7297, 0x7295, 0x7293,
+ 0x7343, 0x734d, 0x7351, 0x734c, 0x7462, 0x7473, 0x7471, 0x7475,
+ 0x7472, 0x7467, 0x746e, 0x7500, 0x7502, 0x7503, 0x757d, 0x7590,
+ 0x7616, 0x7608, 0x760c, 0x7615, 0x7611, 0x760a, 0x7614, 0x76b8,
+ 0x7781, 0x777c, 0x7785, 0x7782, 0x776e, 0x7780, 0x776f, 0x777e,
+ 0x7783, 0x78b2, 0x78aa, 0x78b4, 0x78ad, 0x78a8, 0x787e, 0x78ab,
+ 0x789e, 0x78a5, 0x78a0, 0x78ac, 0x78a2, 0x78a4, 0x7998, 0x798a,
+ 0x798b, 0x7996, 0x7995, 0x7994, 0x7993,
+ /* 0xe3 */
+ 0x7997, 0x7988, 0x7992, 0x7990, 0x7a2b, 0x7a4a, 0x7a30, 0x7a2f,
+ 0x7a28, 0x7a26, 0x7aa8, 0x7aab, 0x7aac, 0x7aee, 0x7b88, 0x7b9c,
+ 0x7b8a, 0x7b91, 0x7b90, 0x7b96, 0x7b8d, 0x7b8c, 0x7b9b, 0x7b8e,
+ 0x7b85, 0x7b98, 0x5284, 0x7b99, 0x7ba4, 0x7b82, 0x7cbb, 0x7cbf,
+ 0x7cbc, 0x7cba, 0x7da7, 0x7db7, 0x7dc2, 0x7da3, 0x7daa, 0x7dc1,
+ 0x7dc0, 0x7dc5, 0x7d9d, 0x7dce, 0x7dc4, 0x7dc6, 0x7dcb, 0x7dcc,
+ 0x7daf, 0x7db9, 0x7d96, 0x7dbc, 0x7d9f, 0x7da6, 0x7dae, 0x7da9,
+ 0x7da1, 0x7dc9, 0x7f73, 0x7fe2, 0x7fe3, 0x7fe5, 0x7fde, 0x8024,
+ 0x805d, 0x805c, 0x8189, 0x8186, 0x8183, 0x8187, 0x818d, 0x818c,
+ 0x818b, 0x8215, 0x8497, 0x84a4, 0x84a1, 0x849f, 0x84ba, 0x84ce,
+ 0x84c2, 0x84ac, 0x84ae, 0x84ab, 0x84b9, 0x84b4, 0x84c1, 0x84cd,
+ 0x84aa, 0x849a, 0x84b1, 0x84d0, 0x849d, 0x84a7, 0x84bb, 0x84a2,
+ 0x8494, 0x84c7, 0x84cc, 0x849b, 0x84a9, 0x84af, 0x84a8, 0x84d6,
+ 0x8498, 0x84b6, 0x84cf, 0x84a0, 0x84d7, 0x84d4, 0x84d2, 0x84db,
+ 0x84b0, 0x8491, 0x8661, 0x8733, 0x8723, 0x8728, 0x876b, 0x8740,
+ 0x872e, 0x871e, 0x8721, 0x8719, 0x871b, 0x8743, 0x872c, 0x8741,
+ 0x873e, 0x8746, 0x8720, 0x8732, 0x872a, 0x872d, 0x873c, 0x8712,
+ 0x873a, 0x8731, 0x8735, 0x8742, 0x8726, 0x8727, 0x8738, 0x8724,
+ 0x871a, 0x8730, 0x8711, 0x88f7, 0x88e7, 0x88f1, 0x88f2, 0x88fa,
+ 0x88fe, 0x88ee, 0x88fc, 0x88f6, 0x88fb,
+ /* 0xe4 */
+ 0x88f0, 0x88ec, 0x88eb, 0x899d, 0x89a1, 0x899f, 0x899e, 0x89e9,
+ 0x89eb, 0x89e8, 0x8aab, 0x8a99, 0x8a8b, 0x8a92, 0x8a8f, 0x8a96,
+ 0x8c3d, 0x8c68, 0x8c69, 0x8cd5, 0x8ccf, 0x8cd7, 0x8d96, 0x8e09,
+ 0x8e02, 0x8dff, 0x8e0d, 0x8dfd, 0x8e0a, 0x8e03, 0x8e07, 0x8e06,
+ 0x8e05, 0x8dfe, 0x8e00, 0x8e04, 0x8f10, 0x8f11, 0x8f0e, 0x8f0d,
+ 0x9123, 0x911c, 0x9120, 0x9122, 0x911f, 0x911d, 0x911a, 0x9124,
+ 0x9121, 0x911b, 0x917a, 0x9172, 0x9179, 0x9173, 0x92a5, 0x92a4,
+ 0x9276, 0x929b, 0x927a, 0x92a0, 0x9294, 0x92aa, 0x928d, 0x92a6,
+ 0x929a, 0x92ab, 0x9279, 0x9297, 0x927f, 0x92a3, 0x92ee, 0x928e,
+ 0x9282, 0x9295, 0x92a2, 0x927d, 0x9288, 0x92a1, 0x928a, 0x9286,
+ 0x928c, 0x9299, 0x92a7, 0x927e, 0x9287, 0x92a9, 0x929d, 0x928b,
+ 0x922d, 0x969e, 0x96a1, 0x96ff, 0x9758, 0x977d, 0x977a, 0x977e,
+ 0x9783, 0x9780, 0x9782, 0x977b, 0x9784, 0x9781, 0x977f, 0x97ce,
+ 0x97cd, 0x9816, 0x98ad, 0x98ae, 0x9902, 0x9900, 0x9907, 0x999d,
+ 0x999c, 0x99c3, 0x99b9, 0x99bb, 0x99ba, 0x99c2, 0x99bd, 0x99c7,
+ 0x9ab1, 0x9ae3, 0x9ae7, 0x9b3e, 0x9b3f, 0x9b60, 0x9b61, 0x9b5f,
+ 0x9cf1, 0x9cf2, 0x9cf5, 0x9ea7, 0x50ff, 0x5103, 0x5130, 0x50f8,
+ 0x5106, 0x5107, 0x50f6, 0x50fe, 0x510b, 0x510c, 0x50fd, 0x510a,
+ 0x528b, 0x528c, 0x52f1, 0x52ef, 0x5648, 0x5642, 0x564c, 0x5635,
+ 0x5641, 0x564a, 0x5649, 0x5646, 0x5658,
+ /* 0xe5 */
+ 0x565a, 0x5640, 0x5633, 0x563d, 0x562c, 0x563e, 0x5638, 0x562a,
+ 0x563a, 0x571a, 0x58ab, 0x589d, 0x58b1, 0x58a0, 0x58a3, 0x58af,
+ 0x58ac, 0x58a5, 0x58a1, 0x58ff, 0x5aff, 0x5af4, 0x5afd, 0x5af7,
+ 0x5af6, 0x5b03, 0x5af8, 0x5b02, 0x5af9, 0x5b01, 0x5b07, 0x5b05,
+ 0x5b0f, 0x5c67, 0x5d99, 0x5d97, 0x5d9f, 0x5d92, 0x5da2, 0x5d93,
+ 0x5d95, 0x5da0, 0x5d9c, 0x5da1, 0x5d9a, 0x5d9e, 0x5e69, 0x5e5d,
+ 0x5e60, 0x5e5c, 0x7df3, 0x5edb, 0x5ede, 0x5ee1, 0x5f49, 0x5fb2,
+ 0x618b, 0x6183, 0x6179, 0x61b1, 0x61b0, 0x61a2, 0x6189, 0x619b,
+ 0x6193, 0x61af, 0x61ad, 0x619f, 0x6192, 0x61aa, 0x61a1, 0x618d,
+ 0x6166, 0x61b3, 0x622d, 0x646e, 0x6470, 0x6496, 0x64a0, 0x6485,
+ 0x6497, 0x649c, 0x648f, 0x648b, 0x648a, 0x648c, 0x64a3, 0x649f,
+ 0x6468, 0x64b1, 0x6498, 0x6576, 0x657a, 0x6579, 0x657b, 0x65b2,
+ 0x65b3, 0x66b5, 0x66b0, 0x66a9, 0x66b2, 0x66b7, 0x66aa, 0x66af,
+ 0x6a00, 0x6a06, 0x6a17, 0x69e5, 0x69f8, 0x6a15, 0x69f1, 0x69e4,
+ 0x6a20, 0x69ff, 0x69ec, 0x69e2, 0x6a1b, 0x6a1d, 0x69fe, 0x6a27,
+ 0x69f2, 0x69ee, 0x6a14, 0x69f7, 0x69e7, 0x6a40, 0x6a08, 0x69e6,
+ 0x69fb, 0x6a0d, 0x69fc, 0x69eb, 0x6a09, 0x6a04, 0x6a18, 0x6a25,
+ 0x6a0f, 0x69f6, 0x6a26, 0x6a07, 0x69f4, 0x6a16, 0x6b51, 0x6ba5,
+ 0x6ba3, 0x6ba2, 0x6ba6, 0x6c01, 0x6c00, 0x6bff, 0x6c02, 0x6f41,
+ 0x6f26, 0x6f7e, 0x6f87, 0x6fc6, 0x6f92,
+ /* 0xe6 */
+ 0x6f8d, 0x6f89, 0x6f8c, 0x6f62, 0x6f4f, 0x6f85, 0x6f5a, 0x6f96,
+ 0x6f76, 0x6f6c, 0x6f82, 0x6f55, 0x6f72, 0x6f52, 0x6f50, 0x6f57,
+ 0x6f94, 0x6f93, 0x6f5d, 0x6f00, 0x6f61, 0x6f6b, 0x6f7d, 0x6f67,
+ 0x6f90, 0x6f53, 0x6f8b, 0x6f69, 0x6f7f, 0x6f95, 0x6f63, 0x6f77,
+ 0x6f6a, 0x6f7b, 0x71b2, 0x71af, 0x719b, 0x71b0, 0x71a0, 0x719a,
+ 0x71a9, 0x71b5, 0x719d, 0x71a5, 0x719e, 0x71a4, 0x71a1, 0x71aa,
+ 0x719c, 0x71a7, 0x71b3, 0x7298, 0x729a, 0x7358, 0x7352, 0x735e,
+ 0x735f, 0x7360, 0x735d, 0x735b, 0x7361, 0x735a, 0x7359, 0x7362,
+ 0x7487, 0x7489, 0x748a, 0x7486, 0x7481, 0x747d, 0x7485, 0x7488,
+ 0x747c, 0x7479, 0x7508, 0x7507, 0x757e, 0x7625, 0x761e, 0x7619,
+ 0x761d, 0x761c, 0x7623, 0x761a, 0x7628, 0x761b, 0x769c, 0x769d,
+ 0x769e, 0x769b, 0x778d, 0x778f, 0x7789, 0x7788, 0x78cd, 0x78bb,
+ 0x78cf, 0x78cc, 0x78d1, 0x78ce, 0x78d4, 0x78c8, 0x78c3, 0x78c4,
+ 0x78c9, 0x799a, 0x79a1, 0x79a0, 0x799c, 0x79a2, 0x799b, 0x6b76,
+ 0x7a39, 0x7ab2, 0x7ab4, 0x7ab3, 0x7bb7, 0x7bcb, 0x7bbe, 0x7bac,
+ 0x7bce, 0x7baf, 0x7bb9, 0x7bca, 0x7bb5, 0x7cc5, 0x7cc8, 0x7ccc,
+ 0x7ccb, 0x7df7, 0x7ddb, 0x7dea, 0x7de7, 0x7dd7, 0x7de1, 0x7e03,
+ 0x7dfa, 0x7de6, 0x7df6, 0x7df1, 0x7df0, 0x7dee, 0x7ddf, 0x7f76,
+ 0x7fac, 0x7fb0, 0x7fad, 0x7fed, 0x7feb, 0x7fea, 0x7fec, 0x7fe6,
+ 0x7fe8, 0x8064, 0x8067, 0x81a3, 0x819f,
+ /* 0xe7 */
+ 0x819e, 0x8195, 0x81a2, 0x8199, 0x8197, 0x8216, 0x824f, 0x8253,
+ 0x8252, 0x8250, 0x824e, 0x8251, 0x8524, 0x853b, 0x850f, 0x8500,
+ 0x8529, 0x850e, 0x8509, 0x850d, 0x851f, 0x850a, 0x8527, 0x851c,
+ 0x84fb, 0x852b, 0x84fa, 0x8508, 0x850c, 0x84f4, 0x852a, 0x84f2,
+ 0x8515, 0x84f7, 0x84eb, 0x84f3, 0x84fc, 0x8512, 0x84ea, 0x84e9,
+ 0x8516, 0x84fe, 0x8528, 0x851d, 0x852e, 0x8502, 0x84fd, 0x851e,
+ 0x84f6, 0x8531, 0x8526, 0x84e7, 0x84e8, 0x84f0, 0x84ef, 0x84f9,
+ 0x8518, 0x8520, 0x8530, 0x850b, 0x8519, 0x852f, 0x8662, 0x8756,
+ 0x8763, 0x8764, 0x8777, 0x87e1, 0x8773, 0x8758, 0x8754, 0x875b,
+ 0x8752, 0x8761, 0x875a, 0x8751, 0x875e, 0x876d, 0x876a, 0x8750,
+ 0x874e, 0x875f, 0x875d, 0x876f, 0x876c, 0x877a, 0x876e, 0x875c,
+ 0x8765, 0x874f, 0x877b, 0x8775, 0x8762, 0x8767, 0x8769, 0x885a,
+ 0x8905, 0x890c, 0x8914, 0x890b, 0x8917, 0x8918, 0x8919, 0x8906,
+ 0x8916, 0x8911, 0x890e, 0x8909, 0x89a2, 0x89a4, 0x89a3, 0x89ed,
+ 0x89f0, 0x89ec, 0x8acf, 0x8ac6, 0x8ab8, 0x8ad3, 0x8ad1, 0x8ad4,
+ 0x8ad5, 0x8abb, 0x8ad7, 0x8abe, 0x8ac0, 0x8ac5, 0x8ad8, 0x8ac3,
+ 0x8aba, 0x8abd, 0x8ad9, 0x8c3e, 0x8c4d, 0x8c8f, 0x8ce5, 0x8cdf,
+ 0x8cd9, 0x8ce8, 0x8cda, 0x8cdd, 0x8ce7, 0x8da0, 0x8d9c, 0x8da1,
+ 0x8d9b, 0x8e20, 0x8e23, 0x8e25, 0x8e24, 0x8e2e, 0x8e15, 0x8e1b,
+ 0x8e16, 0x8e11, 0x8e19, 0x8e26, 0x8e27,
+ /* 0xe8 */
+ 0x8e14, 0x8e12, 0x8e18, 0x8e13, 0x8e1c, 0x8e17, 0x8e1a, 0x8f2c,
+ 0x8f24, 0x8f18, 0x8f1a, 0x8f20, 0x8f23, 0x8f16, 0x8f17, 0x9073,
+ 0x9070, 0x906f, 0x9067, 0x906b, 0x912f, 0x912b, 0x9129, 0x912a,
+ 0x9132, 0x9126, 0x912e, 0x9185, 0x9186, 0x918a, 0x9181, 0x9182,
+ 0x9184, 0x9180, 0x92d0, 0x92c3, 0x92c4, 0x92c0, 0x92d9, 0x92b6,
+ 0x92cf, 0x92f1, 0x92df, 0x92d8, 0x92e9, 0x92d7, 0x92dd, 0x92cc,
+ 0x92ef, 0x92c2, 0x92e8, 0x92ca, 0x92c8, 0x92ce, 0x92e6, 0x92cd,
+ 0x92d5, 0x92c9, 0x92e0, 0x92de, 0x92e7, 0x92d1, 0x92d3, 0x92b5,
+ 0x92e1, 0x92c6, 0x92b4, 0x957c, 0x95ac, 0x95ab, 0x95ae, 0x95b0,
+ 0x96a4, 0x96a2, 0x96d3, 0x9705, 0x9708, 0x9702, 0x975a, 0x978a,
+ 0x978e, 0x9788, 0x97d0, 0x97cf, 0x981e, 0x981d, 0x9826, 0x9829,
+ 0x9828, 0x9820, 0x981b, 0x9827, 0x98b2, 0x9908, 0x98fa, 0x9911,
+ 0x9914, 0x9916, 0x9917, 0x9915, 0x99dc, 0x99cd, 0x99cf, 0x99d3,
+ 0x99d4, 0x99ce, 0x99c9, 0x99d6, 0x99d8, 0x99cb, 0x99d7, 0x99cc,
+ 0x9ab3, 0x9aec, 0x9aeb, 0x9af3, 0x9af2, 0x9af1, 0x9b46, 0x9b43,
+ 0x9b67, 0x9b74, 0x9b71, 0x9b66, 0x9b76, 0x9b75, 0x9b70, 0x9b68,
+ 0x9b64, 0x9b6c, 0x9cfc, 0x9cfa, 0x9cfd, 0x9cff, 0x9cf7, 0x9d07,
+ 0x9d00, 0x9cf9, 0x9cfb, 0x9d08, 0x9d05, 0x9d04, 0x9e83, 0x9ed3,
+ 0x9f0f, 0x9f10, 0x511c, 0x5113, 0x5117, 0x511a, 0x5111, 0x51de,
+ 0x5334, 0x53e1, 0x5670, 0x5660, 0x566e,
+ /* 0xe9 */
+ 0x5673, 0x5666, 0x5663, 0x566d, 0x5672, 0x565e, 0x5677, 0x571c,
+ 0x571b, 0x58c8, 0x58bd, 0x58c9, 0x58bf, 0x58ba, 0x58c2, 0x58bc,
+ 0x58c6, 0x5b17, 0x5b19, 0x5b1b, 0x5b21, 0x5b14, 0x5b13, 0x5b10,
+ 0x5b16, 0x5b28, 0x5b1a, 0x5b20, 0x5b1e, 0x5bef, 0x5dac, 0x5db1,
+ 0x5da9, 0x5da7, 0x5db5, 0x5db0, 0x5dae, 0x5daa, 0x5da8, 0x5db2,
+ 0x5dad, 0x5daf, 0x5db4, 0x5e67, 0x5e68, 0x5e66, 0x5e6f, 0x5ee9,
+ 0x5ee7, 0x5ee6, 0x5ee8, 0x5ee5, 0x5f4b, 0x5fbc, 0x619d, 0x61a8,
+ 0x6196, 0x61c5, 0x61b4, 0x61c6, 0x61c1, 0x61cc, 0x61ba, 0x61bf,
+ 0x61b8, 0x618c, 0x64d7, 0x64d6, 0x64d0, 0x64cf, 0x64c9, 0x64bd,
+ 0x6489, 0x64c3, 0x64db, 0x64f3, 0x64d9, 0x6533, 0x657f, 0x657c,
+ 0x65a2, 0x66c8, 0x66be, 0x66c0, 0x66ca, 0x66cb, 0x66cf, 0x66bd,
+ 0x66bb, 0x66ba, 0x66cc, 0x6723, 0x6a34, 0x6a66, 0x6a49, 0x6a67,
+ 0x6a32, 0x6a68, 0x6a3e, 0x6a5d, 0x6a6d, 0x6a76, 0x6a5b, 0x6a51,
+ 0x6a28, 0x6a5a, 0x6a3b, 0x6a3f, 0x6a41, 0x6a6a, 0x6a64, 0x6a50,
+ 0x6a4f, 0x6a54, 0x6a6f, 0x6a69, 0x6a60, 0x6a3c, 0x6a5e, 0x6a56,
+ 0x6a55, 0x6a4d, 0x6a4e, 0x6a46, 0x6b55, 0x6b54, 0x6b56, 0x6ba7,
+ 0x6baa, 0x6bab, 0x6bc8, 0x6bc7, 0x6c04, 0x6c03, 0x6c06, 0x6fad,
+ 0x6fcb, 0x6fa3, 0x6fc7, 0x6fbc, 0x6fce, 0x6fc8, 0x6f5e, 0x6fc4,
+ 0x6fbd, 0x6f9e, 0x6fca, 0x6fa8, 0x7004, 0x6fa5, 0x6fae, 0x6fba,
+ 0x6fac, 0x6faa, 0x6fcf, 0x6fbf, 0x6fb8,
+ /* 0xea */
+ 0x6fa2, 0x6fc9, 0x6fab, 0x6fcd, 0x6faf, 0x6fb2, 0x6fb0, 0x71c5,
+ 0x71c2, 0x71bf, 0x71b8, 0x71d6, 0x71c0, 0x71c1, 0x71cb, 0x71d4,
+ 0x71ca, 0x71c7, 0x71cf, 0x71bd, 0x71d8, 0x71bc, 0x71c6, 0x71da,
+ 0x71db, 0x729d, 0x729e, 0x7369, 0x7366, 0x7367, 0x736c, 0x7365,
+ 0x736b, 0x736a, 0x747f, 0x749a, 0x74a0, 0x7494, 0x7492, 0x7495,
+ 0x74a1, 0x750b, 0x7580, 0x762f, 0x762d, 0x7631, 0x763d, 0x7633,
+ 0x763c, 0x7635, 0x7632, 0x7630, 0x76bb, 0x76e6, 0x779a, 0x779d,
+ 0x77a1, 0x779c, 0x779b, 0x77a2, 0x77a3, 0x7795, 0x7799, 0x7797,
+ 0x78dd, 0x78e9, 0x78e5, 0x78ea, 0x78de, 0x78e3, 0x78db, 0x78e1,
+ 0x78e2, 0x78ed, 0x78df, 0x78e0, 0x79a4, 0x7a44, 0x7a48, 0x7a47,
+ 0x7ab6, 0x7ab8, 0x7ab5, 0x7ab1, 0x7ab7, 0x7bde, 0x7be3, 0x7be7,
+ 0x7bdd, 0x7bd5, 0x7be5, 0x7bda, 0x7be8, 0x7bf9, 0x7bd4, 0x7bea,
+ 0x7be2, 0x7bdc, 0x7beb, 0x7bd8, 0x7bdf, 0x7cd2, 0x7cd4, 0x7cd7,
+ 0x7cd0, 0x7cd1, 0x7e12, 0x7e21, 0x7e17, 0x7e0c, 0x7e1f, 0x7e20,
+ 0x7e13, 0x7e0e, 0x7e1c, 0x7e15, 0x7e1a, 0x7e22, 0x7e0b, 0x7e0f,
+ 0x7e16, 0x7e0d, 0x7e14, 0x7e25, 0x7e24, 0x7f43, 0x7f7b, 0x7f7c,
+ 0x7f7a, 0x7fb1, 0x7fef, 0x802a, 0x8029, 0x806c, 0x81b1, 0x81a6,
+ 0x81ae, 0x81b9, 0x81b5, 0x81ab, 0x81b0, 0x81ac, 0x81b4, 0x81b2,
+ 0x81b7, 0x81a7, 0x81f2, 0x8255, 0x8256, 0x8257, 0x8556, 0x8545,
+ 0x856b, 0x854d, 0x8553, 0x8561, 0x8558,
+ /* 0xeb */
+ 0x8540, 0x8546, 0x8564, 0x8541, 0x8562, 0x8544, 0x8551, 0x8547,
+ 0x8563, 0x853e, 0x855b, 0x8571, 0x854e, 0x856e, 0x8575, 0x8555,
+ 0x8567, 0x8560, 0x858c, 0x8566, 0x855d, 0x8554, 0x8565, 0x856c,
+ 0x8663, 0x8665, 0x8664, 0x879b, 0x878f, 0x8797, 0x8793, 0x8792,
+ 0x8788, 0x8781, 0x8796, 0x8798, 0x8779, 0x8787, 0x87a3, 0x8785,
+ 0x8790, 0x8791, 0x879d, 0x8784, 0x8794, 0x879c, 0x879a, 0x8789,
+ 0x891e, 0x8926, 0x8930, 0x892d, 0x892e, 0x8927, 0x8931, 0x8922,
+ 0x8929, 0x8923, 0x892f, 0x892c, 0x891f, 0x89f1, 0x8ae0, 0x8ae2,
+ 0x8af2, 0x8af4, 0x8af5, 0x8add, 0x8b14, 0x8ae4, 0x8adf, 0x8af0,
+ 0x8ac8, 0x8ade, 0x8ae1, 0x8ae8, 0x8aff, 0x8aef, 0x8afb, 0x8c91,
+ 0x8c92, 0x8c90, 0x8cf5, 0x8cee, 0x8cf1, 0x8cf0, 0x8cf3, 0x8d6c,
+ 0x8d6e, 0x8da5, 0x8da7, 0x8e33, 0x8e3e, 0x8e38, 0x8e40, 0x8e45,
+ 0x8e36, 0x8e3c, 0x8e3d, 0x8e41, 0x8e30, 0x8e3f, 0x8ebd, 0x8f36,
+ 0x8f2e, 0x8f35, 0x8f32, 0x8f39, 0x8f37, 0x8f34, 0x9076, 0x9079,
+ 0x907b, 0x9086, 0x90fa, 0x9133, 0x9135, 0x9136, 0x9193, 0x9190,
+ 0x9191, 0x918d, 0x918f, 0x9327, 0x931e, 0x9308, 0x931f, 0x9306,
+ 0x930f, 0x937a, 0x9338, 0x933c, 0x931b, 0x9323, 0x9312, 0x9301,
+ 0x9346, 0x932d, 0x930e, 0x930d, 0x92cb, 0x931d, 0x92fa, 0x9325,
+ 0x9313, 0x92f9, 0x92f7, 0x9334, 0x9302, 0x9324, 0x92ff, 0x9329,
+ 0x9339, 0x9335, 0x932a, 0x9314, 0x930c,
+ /* 0xec */
+ 0x930b, 0x92fe, 0x9309, 0x9300, 0x92fb, 0x9316, 0x95bc, 0x95cd,
+ 0x95be, 0x95b9, 0x95ba, 0x95b6, 0x95bf, 0x95b5, 0x95bd, 0x96a9,
+ 0x96d4, 0x970b, 0x9712, 0x9710, 0x9799, 0x9797, 0x9794, 0x97f0,
+ 0x97f8, 0x9835, 0x982f, 0x9832, 0x9924, 0x991f, 0x9927, 0x9929,
+ 0x999e, 0x99ee, 0x99ec, 0x99e5, 0x99e4, 0x99f0, 0x99e3, 0x99ea,
+ 0x99e9, 0x99e7, 0x9ab9, 0x9abf, 0x9ab4, 0x9abb, 0x9af6, 0x9afa,
+ 0x9af9, 0x9af7, 0x9b33, 0x9b80, 0x9b85, 0x9b87, 0x9b7c, 0x9b7e,
+ 0x9b7b, 0x9b82, 0x9b93, 0x9b92, 0x9b90, 0x9b7a, 0x9b95, 0x9b7d,
+ 0x9b88, 0x9d25, 0x9d17, 0x9d20, 0x9d1e, 0x9d14, 0x9d29, 0x9d1d,
+ 0x9d18, 0x9d22, 0x9d10, 0x9d19, 0x9d1f, 0x9e88, 0x9e86, 0x9e87,
+ 0x9eae, 0x9ead, 0x9ed5, 0x9ed6, 0x9efa, 0x9f12, 0x9f3d, 0x5126,
+ 0x5125, 0x5122, 0x5124, 0x5120, 0x5129, 0x52f4, 0x5693, 0x568c,
+ 0x568d, 0x5686, 0x5684, 0x5683, 0x567e, 0x5682, 0x567f, 0x5681,
+ 0x58d6, 0x58d4, 0x58cf, 0x58d2, 0x5b2d, 0x5b25, 0x5b32, 0x5b23,
+ 0x5b2c, 0x5b27, 0x5b26, 0x5b2f, 0x5b2e, 0x5b7b, 0x5bf1, 0x5bf2,
+ 0x5db7, 0x5e6c, 0x5e6a, 0x5fbe, 0x5fbb, 0x61c3, 0x61b5, 0x61bc,
+ 0x61e7, 0x61e0, 0x61e5, 0x61e4, 0x61e8, 0x61de, 0x64ef, 0x64e9,
+ 0x64e3, 0x64eb, 0x64e4, 0x64e8, 0x6581, 0x6580, 0x65b6, 0x65da,
+ 0x66d2, 0x6a8d, 0x6a96, 0x6a81, 0x6aa5, 0x6a89, 0x6a9f, 0x6a9b,
+ 0x6aa1, 0x6a9e, 0x6a87, 0x6a93, 0x6a8e,
+ /* 0xed */
+ 0x6a95, 0x6a83, 0x6aa8, 0x6aa4, 0x6a91, 0x6a7f, 0x6aa6, 0x6a9a,
+ 0x6a85, 0x6a8c, 0x6a92, 0x6b5b, 0x6bad, 0x6c09, 0x6fcc, 0x6fa9,
+ 0x6ff4, 0x6fd4, 0x6fe3, 0x6fdc, 0x6fed, 0x6fe7, 0x6fe6, 0x6fde,
+ 0x6ff2, 0x6fdd, 0x6fe2, 0x6fe8, 0x71e1, 0x71f1, 0x71e8, 0x71f2,
+ 0x71e4, 0x71f0, 0x71e2, 0x7373, 0x736e, 0x736f, 0x7497, 0x74b2,
+ 0x74ab, 0x7490, 0x74aa, 0x74ad, 0x74b1, 0x74a5, 0x74af, 0x7510,
+ 0x7511, 0x7512, 0x750f, 0x7584, 0x7643, 0x7648, 0x7649, 0x7647,
+ 0x76a4, 0x76e9, 0x77b5, 0x77ab, 0x77b2, 0x77b7, 0x77b6, 0x77b4,
+ 0x77b1, 0x77a8, 0x77f0, 0x78f3, 0x78fd, 0x7902, 0x78fb, 0x78fc,
+ 0x78f2, 0x7905, 0x78f9, 0x78fe, 0x7904, 0x79ab, 0x79a8, 0x7a5c,
+ 0x7a5b, 0x7a56, 0x7a58, 0x7a54, 0x7a5a, 0x7abe, 0x7ac0, 0x7ac1,
+ 0x7c05, 0x7c0f, 0x7bf2, 0x7c00, 0x7bff, 0x7bfb, 0x7c0e, 0x7bf4,
+ 0x7c0b, 0x7bf3, 0x7c02, 0x7c09, 0x7c03, 0x7c01, 0x7bf8, 0x7bfd,
+ 0x7c06, 0x7bf0, 0x7bf1, 0x7c10, 0x7c0a, 0x7ce8, 0x7e2d, 0x7e3c,
+ 0x7e42, 0x7e33, 0x9848, 0x7e38, 0x7e2a, 0x7e49, 0x7e40, 0x7e47,
+ 0x7e29, 0x7e4c, 0x7e30, 0x7e3b, 0x7e36, 0x7e44, 0x7e3a, 0x7f45,
+ 0x7f7f, 0x7f7e, 0x7f7d, 0x7ff4, 0x7ff2, 0x802c, 0x81bb, 0x81c4,
+ 0x81cc, 0x81ca, 0x81c5, 0x81c7, 0x81bc, 0x81e9, 0x825b, 0x825a,
+ 0x825c, 0x8583, 0x8580, 0x858f, 0x85a7, 0x8595, 0x85a0, 0x858b,
+ 0x85a3, 0x857b, 0x85a4, 0x859a, 0x859e,
+ /* 0xee */
+ 0x8577, 0x857c, 0x8589, 0x85a1, 0x857a, 0x8578, 0x8557, 0x858e,
+ 0x8596, 0x8586, 0x858d, 0x8599, 0x859d, 0x8581, 0x85a2, 0x8582,
+ 0x8588, 0x8585, 0x8579, 0x8576, 0x8598, 0x8590, 0x859f, 0x8668,
+ 0x87be, 0x87aa, 0x87ad, 0x87c5, 0x87b0, 0x87ac, 0x87b9, 0x87b5,
+ 0x87bc, 0x87ae, 0x87c9, 0x87c3, 0x87c2, 0x87cc, 0x87b7, 0x87af,
+ 0x87c4, 0x87ca, 0x87b4, 0x87b6, 0x87bf, 0x87b8, 0x87bd, 0x87de,
+ 0x87b2, 0x8935, 0x8933, 0x893c, 0x893e, 0x8941, 0x8952, 0x8937,
+ 0x8942, 0x89ad, 0x89af, 0x89ae, 0x89f2, 0x89f3, 0x8b1e, 0x8b18,
+ 0x8b16, 0x8b11, 0x8b05, 0x8b0b, 0x8b22, 0x8b0f, 0x8b12, 0x8b15,
+ 0x8b07, 0x8b0d, 0x8b08, 0x8b06, 0x8b1c, 0x8b13, 0x8b1a, 0x8c4f,
+ 0x8c70, 0x8c72, 0x8c71, 0x8c6f, 0x8c95, 0x8c94, 0x8cf9, 0x8d6f,
+ 0x8e4e, 0x8e4d, 0x8e53, 0x8e50, 0x8e4c, 0x8e47, 0x8f43, 0x8f40,
+ 0x9085, 0x907e, 0x9138, 0x919a, 0x91a2, 0x919b, 0x9199, 0x919f,
+ 0x91a1, 0x919d, 0x91a0, 0x93a1, 0x9383, 0x93af, 0x9364, 0x9356,
+ 0x9347, 0x937c, 0x9358, 0x935c, 0x9376, 0x9349, 0x9350, 0x9351,
+ 0x9360, 0x936d, 0x938f, 0x934c, 0x936a, 0x9379, 0x9357, 0x9355,
+ 0x9352, 0x934f, 0x9371, 0x9377, 0x937b, 0x9361, 0x935e, 0x9363,
+ 0x9367, 0x9380, 0x934e, 0x9359, 0x95c7, 0x95c0, 0x95c9, 0x95c3,
+ 0x95c5, 0x95b7, 0x96ae, 0x96b0, 0x96ac, 0x9720, 0x971f, 0x9718,
+ 0x971d, 0x9719, 0x979a, 0x97a1, 0x979c,
+ /* 0xef */
+ 0x979e, 0x979d, 0x97d5, 0x97d4, 0x97f1, 0x9841, 0x9844, 0x984a,
+ 0x9849, 0x9845, 0x9843, 0x9925, 0x992b, 0x992c, 0x992a, 0x9933,
+ 0x9932, 0x992f, 0x992d, 0x9931, 0x9930, 0x9998, 0x99a3, 0x99a1,
+ 0x9a02, 0x99fa, 0x99f4, 0x99f7, 0x99f9, 0x99f8, 0x99f6, 0x99fb,
+ 0x99fd, 0x99fe, 0x99fc, 0x9a03, 0x9abe, 0x9afe, 0x9afd, 0x9b01,
+ 0x9afc, 0x9b48, 0x9b9a, 0x9ba8, 0x9b9e, 0x9b9b, 0x9ba6, 0x9ba1,
+ 0x9ba5, 0x9ba4, 0x9b86, 0x9ba2, 0x9ba0, 0x9baf, 0x9d33, 0x9d41,
+ 0x9d67, 0x9d36, 0x9d2e, 0x9d2f, 0x9d31, 0x9d38, 0x9d30, 0x9d45,
+ 0x9d42, 0x9d43, 0x9d3e, 0x9d37, 0x9d40, 0x9d3d, 0x7ff5, 0x9d2d,
+ 0x9e8a, 0x9e89, 0x9e8d, 0x9eb0, 0x9ec8, 0x9eda, 0x9efb, 0x9eff,
+ 0x9f24, 0x9f23, 0x9f22, 0x9f54, 0x9fa0, 0x5131, 0x512d, 0x512e,
+ 0x5698, 0x569c, 0x5697, 0x569a, 0x569d, 0x5699, 0x5970, 0x5b3c,
+ 0x5c69, 0x5c6a, 0x5dc0, 0x5e6d, 0x5e6e, 0x61d8, 0x61df, 0x61ed,
+ 0x61ee, 0x61f1, 0x61ea, 0x61f0, 0x61eb, 0x61d6, 0x61e9, 0x64ff,
+ 0x6504, 0x64fd, 0x64f8, 0x6501, 0x6503, 0x64fc, 0x6594, 0x65db,
+ 0x66da, 0x66db, 0x66d8, 0x6ac5, 0x6ab9, 0x6abd, 0x6ae1, 0x6ac6,
+ 0x6aba, 0x6ab6, 0x6ab7, 0x6ac7, 0x6ab4, 0x6aad, 0x6b5e, 0x6bc9,
+ 0x6c0b, 0x7007, 0x700c, 0x700d, 0x7001, 0x7005, 0x7014, 0x700e,
+ 0x6fff, 0x7000, 0x6ffb, 0x7026, 0x6ffc, 0x6ff7, 0x700a, 0x7201,
+ 0x71ff, 0x71f9, 0x7203, 0x71fd, 0x7376,
+ /* 0xf0 */
+ 0x74b8, 0x74c0, 0x74b5, 0x74c1, 0x74be, 0x74b6, 0x74bb, 0x74c2,
+ 0x7514, 0x7513, 0x765c, 0x7664, 0x7659, 0x7650, 0x7653, 0x7657,
+ 0x765a, 0x76a6, 0x76bd, 0x76ec, 0x77c2, 0x77ba, 0x78ff, 0x790c,
+ 0x7913, 0x7914, 0x7909, 0x7910, 0x7912, 0x7911, 0x79ad, 0x79ac,
+ 0x7a5f, 0x7c1c, 0x7c29, 0x7c19, 0x7c20, 0x7c1f, 0x7c2d, 0x7c1d,
+ 0x7c26, 0x7c28, 0x7c22, 0x7c25, 0x7c30, 0x7e5c, 0x7e50, 0x7e56,
+ 0x7e63, 0x7e58, 0x7e62, 0x7e5f, 0x7e51, 0x7e60, 0x7e57, 0x7e53,
+ 0x7fb5, 0x7fb3, 0x7ff7, 0x7ff8, 0x8075, 0x81d1, 0x81d2, 0x81d0,
+ 0x825f, 0x825e, 0x85b4, 0x85c6, 0x85c0, 0x85c3, 0x85c2, 0x85b3,
+ 0x85b5, 0x85bd, 0x85c7, 0x85c4, 0x85bf, 0x85cb, 0x85ce, 0x85c8,
+ 0x85c5, 0x85b1, 0x85b6, 0x85d2, 0x8624, 0x85b8, 0x85b7, 0x85be,
+ 0x8669, 0x87e7, 0x87e6, 0x87e2, 0x87db, 0x87eb, 0x87ea, 0x87e5,
+ 0x87df, 0x87f3, 0x87e4, 0x87d4, 0x87dc, 0x87d3, 0x87ed, 0x87d8,
+ 0x87e3, 0x87a4, 0x87d7, 0x87d9, 0x8801, 0x87f4, 0x87e8, 0x87dd,
+ 0x8953, 0x894b, 0x894f, 0x894c, 0x8946, 0x8950, 0x8951, 0x8949,
+ 0x8b2a, 0x8b27, 0x8b23, 0x8b33, 0x8b30, 0x8b35, 0x8b47, 0x8b2f,
+ 0x8b3c, 0x8b3e, 0x8b31, 0x8b25, 0x8b37, 0x8b26, 0x8b36, 0x8b2e,
+ 0x8b24, 0x8b3b, 0x8b3d, 0x8b3a, 0x8c42, 0x8c75, 0x8c99, 0x8c98,
+ 0x8c97, 0x8cfe, 0x8d04, 0x8d02, 0x8d00, 0x8e5c, 0x8e62, 0x8e60,
+ 0x8e57, 0x8e56, 0x8e5e, 0x8e65, 0x8e67,
+ /* 0xf1 */
+ 0x8e5b, 0x8e5a, 0x8e61, 0x8e5d, 0x8e69, 0x8e54, 0x8f46, 0x8f47,
+ 0x8f48, 0x8f4b, 0x9128, 0x913a, 0x913b, 0x913e, 0x91a8, 0x91a5,
+ 0x91a7, 0x91af, 0x91aa, 0x93b5, 0x938c, 0x9392, 0x93b7, 0x939b,
+ 0x939d, 0x9389, 0x93a7, 0x938e, 0x93aa, 0x939e, 0x93a6, 0x9395,
+ 0x9388, 0x9399, 0x939f, 0x938d, 0x93b1, 0x9391, 0x93b2, 0x93a4,
+ 0x93a8, 0x93b4, 0x93a3, 0x93a5, 0x95d2, 0x95d3, 0x95d1, 0x96b3,
+ 0x96d7, 0x96da, 0x5dc2, 0x96df, 0x96d8, 0x96dd, 0x9723, 0x9722,
+ 0x9725, 0x97ac, 0x97ae, 0x97a8, 0x97ab, 0x97a4, 0x97aa, 0x97a2,
+ 0x97a5, 0x97d7, 0x97d9, 0x97d6, 0x97d8, 0x97fa, 0x9850, 0x9851,
+ 0x9852, 0x98b8, 0x9941, 0x993c, 0x993a, 0x9a0f, 0x9a0b, 0x9a09,
+ 0x9a0d, 0x9a04, 0x9a11, 0x9a0a, 0x9a05, 0x9a07, 0x9a06, 0x9ac0,
+ 0x9adc, 0x9b08, 0x9b04, 0x9b05, 0x9b29, 0x9b35, 0x9b4a, 0x9b4c,
+ 0x9b4b, 0x9bc7, 0x9bc6, 0x9bc3, 0x9bbf, 0x9bc1, 0x9bb5, 0x9bb8,
+ 0x9bd3, 0x9bb6, 0x9bc4, 0x9bb9, 0x9bbd, 0x9d5c, 0x9d53, 0x9d4f,
+ 0x9d4a, 0x9d5b, 0x9d4b, 0x9d59, 0x9d56, 0x9d4c, 0x9d57, 0x9d52,
+ 0x9d54, 0x9d5f, 0x9d58, 0x9d5a, 0x9e8e, 0x9e8c, 0x9edf, 0x9f01,
+ 0x9f00, 0x9f16, 0x9f25, 0x9f2b, 0x9f2a, 0x9f29, 0x9f28, 0x9f4c,
+ 0x9f55, 0x5134, 0x5135, 0x5296, 0x52f7, 0x53b4, 0x56ab, 0x56ad,
+ 0x56a6, 0x56a7, 0x56aa, 0x56ac, 0x58da, 0x58dd, 0x58db, 0x5912,
+ 0x5b3d, 0x5b3e, 0x5b3f, 0x5dc3, 0x5e70,
+ /* 0xf2 */
+ 0x5fbf, 0x61fb, 0x6507, 0x6510, 0x650d, 0x6509, 0x650c, 0x650e,
+ 0x6584, 0x65de, 0x65dd, 0x66de, 0x6ae7, 0x6ae0, 0x6acc, 0x6ad1,
+ 0x6ad9, 0x6acb, 0x6adf, 0x6adc, 0x6ad0, 0x6aeb, 0x6acf, 0x6acd,
+ 0x6ade, 0x6b60, 0x6bb0, 0x6c0c, 0x7019, 0x7027, 0x7020, 0x7016,
+ 0x702b, 0x7021, 0x7022, 0x7023, 0x7029, 0x7017, 0x7024, 0x701c,
+ 0x702a, 0x720c, 0x720a, 0x7207, 0x7202, 0x7205, 0x72a5, 0x72a6,
+ 0x72a4, 0x72a3, 0x72a1, 0x74cb, 0x74c5, 0x74b7, 0x74c3, 0x7516,
+ 0x7660, 0x77c9, 0x77ca, 0x77c4, 0x77f1, 0x791d, 0x791b, 0x7921,
+ 0x791c, 0x7917, 0x791e, 0x79b0, 0x7a67, 0x7a68, 0x7c33, 0x7c3c,
+ 0x7c39, 0x7c2c, 0x7c3b, 0x7cec, 0x7cea, 0x7e76, 0x7e75, 0x7e78,
+ 0x7e70, 0x7e77, 0x7e6f, 0x7e7a, 0x7e72, 0x7e74, 0x7e68, 0x7f4b,
+ 0x7f4a, 0x7f83, 0x7f86, 0x7fb7, 0x7ffd, 0x7ffe, 0x8078, 0x81d7,
+ 0x81d5, 0x8264, 0x8261, 0x8263, 0x85eb, 0x85f1, 0x85ed, 0x85d9,
+ 0x85e1, 0x85e8, 0x85da, 0x85d7, 0x85ec, 0x85f2, 0x85f8, 0x85d8,
+ 0x85df, 0x85e3, 0x85dc, 0x85d1, 0x85f0, 0x85e6, 0x85ef, 0x85de,
+ 0x85e2, 0x8800, 0x87fa, 0x8803, 0x87f6, 0x87f7, 0x8809, 0x880c,
+ 0x880b, 0x8806, 0x87fc, 0x8808, 0x87ff, 0x880a, 0x8802, 0x8962,
+ 0x895a, 0x895b, 0x8957, 0x8961, 0x895c, 0x8958, 0x895d, 0x8959,
+ 0x8988, 0x89b7, 0x89b6, 0x89f6, 0x8b50, 0x8b48, 0x8b4a, 0x8b40,
+ 0x8b53, 0x8b56, 0x8b54, 0x8b4b, 0x8b55,
+ /* 0xf3 */
+ 0x8b51, 0x8b42, 0x8b52, 0x8b57, 0x8c43, 0x8c77, 0x8c76, 0x8c9a,
+ 0x8d06, 0x8d07, 0x8d09, 0x8dac, 0x8daa, 0x8dad, 0x8dab, 0x8e6d,
+ 0x8e78, 0x8e73, 0x8e6a, 0x8e6f, 0x8e7b, 0x8ec2, 0x8f52, 0x8f51,
+ 0x8f4f, 0x8f50, 0x8f53, 0x8fb4, 0x9140, 0x913f, 0x91b0, 0x91ad,
+ 0x93de, 0x93c7, 0x93cf, 0x93c2, 0x93da, 0x93d0, 0x93f9, 0x93ec,
+ 0x93cc, 0x93d9, 0x93a9, 0x93e6, 0x93ca, 0x93d4, 0x93ee, 0x93e3,
+ 0x93d5, 0x93c4, 0x93ce, 0x93c0, 0x93d2, 0x93e7, 0x957d, 0x95da,
+ 0x95db, 0x96e1, 0x9729, 0x972b, 0x972c, 0x9728, 0x9726, 0x97b3,
+ 0x97b7, 0x97b6, 0x97dd, 0x97de, 0x97df, 0x985c, 0x9859, 0x985d,
+ 0x9857, 0x98bf, 0x98bd, 0x98bb, 0x98be, 0x9948, 0x9947, 0x9943,
+ 0x99a6, 0x99a7, 0x9a1a, 0x9a15, 0x9a25, 0x9a1d, 0x9a24, 0x9a1b,
+ 0x9a22, 0x9a20, 0x9a27, 0x9a23, 0x9a1e, 0x9a1c, 0x9a14, 0x9ac2,
+ 0x9b0b, 0x9b0a, 0x9b0e, 0x9b0c, 0x9b37, 0x9bea, 0x9beb, 0x9be0,
+ 0x9bde, 0x9be4, 0x9be6, 0x9be2, 0x9bf0, 0x9bd4, 0x9bd7, 0x9bec,
+ 0x9bdc, 0x9bd9, 0x9be5, 0x9bd5, 0x9be1, 0x9bda, 0x9d77, 0x9d81,
+ 0x9d8a, 0x9d84, 0x9d88, 0x9d71, 0x9d80, 0x9d78, 0x9d86, 0x9d8b,
+ 0x9d8c, 0x9d7d, 0x9d6b, 0x9d74, 0x9d75, 0x9d70, 0x9d69, 0x9d85,
+ 0x9d73, 0x9d7b, 0x9d82, 0x9d6f, 0x9d79, 0x9d7f, 0x9d87, 0x9d68,
+ 0x9e94, 0x9e91, 0x9ec0, 0x9efc, 0x9f2d, 0x9f40, 0x9f41, 0x9f4d,
+ 0x9f56, 0x9f57, 0x9f58, 0x5337, 0x56b2,
+ /* 0xf4 */
+ 0x56b5, 0x56b3, 0x58e3, 0x5b45, 0x5dc6, 0x5dc7, 0x5eee, 0x5eef,
+ 0x5fc0, 0x5fc1, 0x61f9, 0x6517, 0x6516, 0x6515, 0x6513, 0x65df,
+ 0x66e8, 0x66e3, 0x66e4, 0x6af3, 0x6af0, 0x6aea, 0x6ae8, 0x6af9,
+ 0x6af1, 0x6aee, 0x6aef, 0x703c, 0x7035, 0x702f, 0x7037, 0x7034,
+ 0x7031, 0x7042, 0x7038, 0x703f, 0x703a, 0x7039, 0x7040, 0x703b,
+ 0x7033, 0x7041, 0x7213, 0x7214, 0x72a8, 0x737d, 0x737c, 0x74ba,
+ 0x76ab, 0x76aa, 0x76be, 0x76ed, 0x77cc, 0x77ce, 0x77cf, 0x77cd,
+ 0x77f2, 0x7925, 0x7923, 0x7927, 0x7928, 0x7924, 0x7929, 0x79b2,
+ 0x7a6e, 0x7a6c, 0x7a6d, 0x7af7, 0x7c49, 0x7c48, 0x7c4a, 0x7c47,
+ 0x7c45, 0x7cee, 0x7e7b, 0x7e7e, 0x7e81, 0x7e80, 0x7fba, 0x7fff,
+ 0x8079, 0x81db, 0x81d9, 0x820b, 0x8268, 0x8269, 0x8622, 0x85ff,
+ 0x8601, 0x85fe, 0x861b, 0x8600, 0x85f6, 0x8604, 0x8609, 0x8605,
+ 0x860c, 0x85fd, 0x8819, 0x8810, 0x8811, 0x8817, 0x8813, 0x8816,
+ 0x8963, 0x8966, 0x89b9, 0x89f7, 0x8b60, 0x8b6a, 0x8b5d, 0x8b68,
+ 0x8b63, 0x8b65, 0x8b67, 0x8b6d, 0x8dae, 0x8e86, 0x8e88, 0x8e84,
+ 0x8f59, 0x8f56, 0x8f57, 0x8f55, 0x8f58, 0x8f5a, 0x908d, 0x9143,
+ 0x9141, 0x91b7, 0x91b5, 0x91b2, 0x91b3, 0x940b, 0x9413, 0x93fb,
+ 0x9420, 0x940f, 0x9414, 0x93fe, 0x9415, 0x9410, 0x9428, 0x9419,
+ 0x940d, 0x93f5, 0x9400, 0x93f7, 0x9407, 0x940e, 0x9416, 0x9412,
+ 0x93fa, 0x9409, 0x93f8, 0x940a, 0x93ff,
+ /* 0xf5 */
+ 0x93fc, 0x940c, 0x93f6, 0x9411, 0x9406, 0x95de, 0x95e0, 0x95df,
+ 0x972e, 0x972f, 0x97b9, 0x97bb, 0x97fd, 0x97fe, 0x9860, 0x9862,
+ 0x9863, 0x985f, 0x98c1, 0x98c2, 0x9950, 0x994e, 0x9959, 0x994c,
+ 0x994b, 0x9953, 0x9a32, 0x9a34, 0x9a31, 0x9a2c, 0x9a2a, 0x9a36,
+ 0x9a29, 0x9a2e, 0x9a38, 0x9a2d, 0x9ac7, 0x9aca, 0x9ac6, 0x9b10,
+ 0x9b12, 0x9b11, 0x9c0b, 0x9c08, 0x9bf7, 0x9c05, 0x9c12, 0x9bf8,
+ 0x9c40, 0x9c07, 0x9c0e, 0x9c06, 0x9c17, 0x9c14, 0x9c09, 0x9d9f,
+ 0x9d99, 0x9da4, 0x9d9d, 0x9d92, 0x9d98, 0x9d90, 0x9d9b, 0x9da0,
+ 0x9d94, 0x9d9c, 0x9daa, 0x9d97, 0x9da1, 0x9d9a, 0x9da2, 0x9da8,
+ 0x9d9e, 0x9da3, 0x9dbf, 0x9da9, 0x9d96, 0x9da6, 0x9da7, 0x9e99,
+ 0x9e9b, 0x9e9a, 0x9ee5, 0x9ee4, 0x9ee7, 0x9ee6, 0x9f30, 0x9f2e,
+ 0x9f5b, 0x9f60, 0x9f5e, 0x9f5d, 0x9f59, 0x9f91, 0x513a, 0x5139,
+ 0x5298, 0x5297, 0x56c3, 0x56bd, 0x56be, 0x5b48, 0x5b47, 0x5dcb,
+ 0x5dcf, 0x5ef1, 0x61fd, 0x651b, 0x6b02, 0x6afc, 0x6b03, 0x6af8,
+ 0x6b00, 0x7043, 0x7044, 0x704a, 0x7048, 0x7049, 0x7045, 0x7046,
+ 0x721d, 0x721a, 0x7219, 0x737e, 0x7517, 0x766a, 0x77d0, 0x792d,
+ 0x7931, 0x792f, 0x7c54, 0x7c53, 0x7cf2, 0x7e8a, 0x7e87, 0x7e88,
+ 0x7e8b, 0x7e86, 0x7e8d, 0x7f4d, 0x7fbb, 0x8030, 0x81dd, 0x8618,
+ 0x862a, 0x8626, 0x861f, 0x8623, 0x861c, 0x8619, 0x8627, 0x862e,
+ 0x8621, 0x8620, 0x8629, 0x861e, 0x8625,
+ /* 0xf6 */
+ 0x8829, 0x881d, 0x881b, 0x8820, 0x8824, 0x881c, 0x882b, 0x884a,
+ 0x896d, 0x8969, 0x896e, 0x896b, 0x89fa, 0x8b79, 0x8b78, 0x8b45,
+ 0x8b7a, 0x8b7b, 0x8d10, 0x8d14, 0x8daf, 0x8e8e, 0x8e8c, 0x8f5e,
+ 0x8f5b, 0x8f5d, 0x9146, 0x9144, 0x9145, 0x91b9, 0x943f, 0x943b,
+ 0x9436, 0x9429, 0x943d, 0x943c, 0x9430, 0x9439, 0x942a, 0x9437,
+ 0x942c, 0x9440, 0x9431, 0x95e5, 0x95e4, 0x95e3, 0x9735, 0x973a,
+ 0x97bf, 0x97e1, 0x9864, 0x98c9, 0x98c6, 0x98c0, 0x9958, 0x9956,
+ 0x9a39, 0x9a3d, 0x9a46, 0x9a44, 0x9a42, 0x9a41, 0x9a3a, 0x9a3f,
+ 0x9acd, 0x9b15, 0x9b17, 0x9b18, 0x9b16, 0x9b3a, 0x9b52, 0x9c2b,
+ 0x9c1d, 0x9c1c, 0x9c2c, 0x9c23, 0x9c28, 0x9c29, 0x9c24, 0x9c21,
+ 0x9db7, 0x9db6, 0x9dbc, 0x9dc1, 0x9dc7, 0x9dca, 0x9dcf, 0x9dbe,
+ 0x9dc5, 0x9dc3, 0x9dbb, 0x9db5, 0x9dce, 0x9db9, 0x9dba, 0x9dac,
+ 0x9dc8, 0x9db1, 0x9dad, 0x9dcc, 0x9db3, 0x9dcd, 0x9db2, 0x9e7a,
+ 0x9e9c, 0x9eeb, 0x9eee, 0x9eed, 0x9f1b, 0x9f18, 0x9f1a, 0x9f31,
+ 0x9f4e, 0x9f65, 0x9f64, 0x9f92, 0x4eb9, 0x56c6, 0x56c5, 0x56cb,
+ 0x5971, 0x5b4b, 0x5b4c, 0x5dd5, 0x5dd1, 0x5ef2, 0x6521, 0x6520,
+ 0x6526, 0x6522, 0x6b0b, 0x6b08, 0x6b09, 0x6c0d, 0x7055, 0x7056,
+ 0x7057, 0x7052, 0x721e, 0x721f, 0x72a9, 0x737f, 0x74d8, 0x74d5,
+ 0x74d9, 0x74d7, 0x766d, 0x76ad, 0x7935, 0x79b4, 0x7a70, 0x7a71,
+ 0x7c57, 0x7c5c, 0x7c59, 0x7c5b, 0x7c5a,
+ /* 0xf7 */
+ 0x7cf4, 0x7cf1, 0x7e91, 0x7f4f, 0x7f87, 0x81de, 0x826b, 0x8634,
+ 0x8635, 0x8633, 0x862c, 0x8632, 0x8636, 0x882c, 0x8828, 0x8826,
+ 0x882a, 0x8825, 0x8971, 0x89bf, 0x89be, 0x89fb, 0x8b7e, 0x8b84,
+ 0x8b82, 0x8b86, 0x8b85, 0x8b7f, 0x8d15, 0x8e95, 0x8e94, 0x8e9a,
+ 0x8e92, 0x8e90, 0x8e96, 0x8e97, 0x8f60, 0x8f62, 0x9147, 0x944c,
+ 0x9450, 0x944a, 0x944b, 0x944f, 0x9447, 0x9445, 0x9448, 0x9449,
+ 0x9446, 0x973f, 0x97e3, 0x986a, 0x9869, 0x98cb, 0x9954, 0x995b,
+ 0x9a4e, 0x9a53, 0x9a54, 0x9a4c, 0x9a4f, 0x9a48, 0x9a4a, 0x9a49,
+ 0x9a52, 0x9a50, 0x9ad0, 0x9b19, 0x9b2b, 0x9b3b, 0x9b56, 0x9b55,
+ 0x9c46, 0x9c48, 0x9c3f, 0x9c44, 0x9c39, 0x9c33, 0x9c41, 0x9c3c,
+ 0x9c37, 0x9c34, 0x9c32, 0x9c3d, 0x9c36, 0x9ddb, 0x9dd2, 0x9dde,
+ 0x9dda, 0x9dcb, 0x9dd0, 0x9ddc, 0x9dd1, 0x9ddf, 0x9de9, 0x9dd9,
+ 0x9dd8, 0x9dd6, 0x9df5, 0x9dd5, 0x9ddd, 0x9eb6, 0x9ef0, 0x9f35,
+ 0x9f33, 0x9f32, 0x9f42, 0x9f6b, 0x9f95, 0x9fa2, 0x513d, 0x5299,
+ 0x58e8, 0x58e7, 0x5972, 0x5b4d, 0x5dd8, 0x882f, 0x5f4f, 0x6201,
+ 0x6203, 0x6204, 0x6529, 0x6525, 0x6596, 0x66eb, 0x6b11, 0x6b12,
+ 0x6b0f, 0x6bca, 0x705b, 0x705a, 0x7222, 0x7382, 0x7381, 0x7383,
+ 0x7670, 0x77d4, 0x7c67, 0x7c66, 0x7e95, 0x826c, 0x863a, 0x8640,
+ 0x8639, 0x863c, 0x8631, 0x863b, 0x863e, 0x8830, 0x8832, 0x882e,
+ 0x8833, 0x8976, 0x8974, 0x8973, 0x89fe,
+ /* 0xf8 */
+ 0x8b8c, 0x8b8e, 0x8b8b, 0x8b88, 0x8c45, 0x8d19, 0x8e98, 0x8f64,
+ 0x8f63, 0x91bc, 0x9462, 0x9455, 0x945d, 0x9457, 0x945e, 0x97c4,
+ 0x97c5, 0x9800, 0x9a56, 0x9a59, 0x9b1e, 0x9b1f, 0x9b20, 0x9c52,
+ 0x9c58, 0x9c50, 0x9c4a, 0x9c4d, 0x9c4b, 0x9c55, 0x9c59, 0x9c4c,
+ 0x9c4e, 0x9dfb, 0x9df7, 0x9def, 0x9de3, 0x9deb, 0x9df8, 0x9de4,
+ 0x9df6, 0x9de1, 0x9dee, 0x9de6, 0x9df2, 0x9df0, 0x9de2, 0x9dec,
+ 0x9df4, 0x9df3, 0x9de8, 0x9ded, 0x9ec2, 0x9ed0, 0x9ef2, 0x9ef3,
+ 0x9f06, 0x9f1c, 0x9f38, 0x9f37, 0x9f36, 0x9f43, 0x9f4f, 0x9f71,
+ 0x9f70, 0x9f6e, 0x9f6f, 0x56d3, 0x56cd, 0x5b4e, 0x5c6d, 0x652d,
+ 0x66ed, 0x66ee, 0x6b13, 0x705f, 0x7061, 0x705d, 0x7060, 0x7223,
+ 0x74db, 0x74e5, 0x77d5, 0x7938, 0x79b7, 0x79b6, 0x7c6a, 0x7e97,
+ 0x7f89, 0x826d, 0x8643, 0x8838, 0x8837, 0x8835, 0x884b, 0x8b94,
+ 0x8b95, 0x8e9e, 0x8e9f, 0x8ea0, 0x8e9d, 0x91be, 0x91bd, 0x91c2,
+ 0x946b, 0x9468, 0x9469, 0x96e5, 0x9746, 0x9743, 0x9747, 0x97c7,
+ 0x97e5, 0x9a5e, 0x9ad5, 0x9b59, 0x9c63, 0x9c67, 0x9c66, 0x9c62,
+ 0x9c5e, 0x9c60, 0x9e02, 0x9dfe, 0x9e07, 0x9e03, 0x9e06, 0x9e05,
+ 0x9e00, 0x9e01, 0x9e09, 0x9dff, 0x9dfd, 0x9e04, 0x9ea0, 0x9f1e,
+ 0x9f46, 0x9f74, 0x9f75, 0x9f76, 0x56d4, 0x652e, 0x65b8, 0x6b18,
+ 0x6b19, 0x6b17, 0x6b1a, 0x7062, 0x7226, 0x72aa, 0x77d8, 0x77d9,
+ 0x7939, 0x7c69, 0x7c6b, 0x7cf6, 0x7e9a,
+ /* 0xf9 */
+ 0x7e98, 0x7e9b, 0x7e99, 0x81e0, 0x81e1, 0x8646, 0x8647, 0x8648,
+ 0x8979, 0x897a, 0x897c, 0x897b, 0x89ff, 0x8b98, 0x8b99, 0x8ea5,
+ 0x8ea4, 0x8ea3, 0x946e, 0x946d, 0x946f, 0x9471, 0x9473, 0x9749,
+ 0x9872, 0x995f, 0x9c68, 0x9c6e, 0x9c6d, 0x9e0b, 0x9e0d, 0x9e10,
+ 0x9e0f, 0x9e12, 0x9e11, 0x9ea1, 0x9ef5, 0x9f09, 0x9f47, 0x9f78,
+ 0x9f7b, 0x9f7a, 0x9f79, 0x571e, 0x7066, 0x7c6f, 0x883c, 0x8db2,
+ 0x8ea6, 0x91c3, 0x9474, 0x9478, 0x9476, 0x9475, 0x9a60, 0x9c74,
+ 0x9c73, 0x9c71, 0x9c75, 0x9e14, 0x9e13, 0x9ef6, 0x9f0a, 0x9fa4,
+ 0x7068, 0x7065, 0x7cf7, 0x866a, 0x883e, 0x883d, 0x883f, 0x8b9e,
+ 0x8c9c, 0x8ea9, 0x8ec9, 0x974b, 0x9873, 0x9874, 0x98cc, 0x9961,
+ 0x99ab, 0x9a64, 0x9a66, 0x9a67, 0x9b24, 0x9e15, 0x9e17, 0x9f48,
+ 0x6207, 0x6b1e, 0x7227, 0x864c, 0x8ea8, 0x9482, 0x9480, 0x9481,
+ 0x9a69, 0x9a68, 0x9b2e, 0x9e19, 0x7229, 0x864b, 0x8b9f, 0x9483,
+ 0x9c79, 0x9eb7, 0x7675, 0x9a6b, 0x9c7a, 0x9e1d, 0x7069, 0x706a,
+ 0x9ea4, 0x9f7e, 0x9f49, 0x9f98, 0x7881, 0x92b9, 0x88cf, 0x58bb,
+ 0x6052, 0x7ca7, 0x5afa, 0x2554, 0x2566, 0x2557, 0x2560, 0x256c,
+ 0x2563, 0x255a, 0x2569, 0x255d, 0x2552, 0x2564, 0x2555, 0x255e,
+ 0x256a, 0x2561, 0x2558, 0x2567, 0x255b, 0x2553, 0x2565, 0x2556,
+ 0x255f, 0x256b, 0x2562, 0x2559, 0x2568, 0x255c, 0x2551, 0x2550,
+ 0x256d, 0x256e, 0x2570, 0x256f, 0xffed,
+ /* 0xfa */
+ 0xe000, 0x92db, 0xe002, 0xe003, 0x854c, 0x42b5, 0x73ef, 0x51b5,
+ 0x3649, 0xe009, 0xe00a, 0x9344, 0xe00c, 0x82ee, 0xe00e, 0x783c,
+ 0x6744, 0x62df, 0xe012, 0xe013, 0xe014, 0xe015, 0xe016, 0x4fab,
+ 0xe018, 0x5008, 0xe01a, 0xe01b, 0xe01c, 0xe01d, 0xe01e, 0x5029,
+ 0xe020, 0x5fa4, 0xe022, 0xe023, 0x6edb, 0xe025, 0x507d, 0x5101,
+ 0x347a, 0x510e, 0x986c, 0x3743, 0x8416, 0xe02d, 0xe02e, 0x5160,
+ 0xe030, 0x516a, 0xe032, 0xe033, 0xe034, 0xe035, 0xe036, 0xe037,
+ 0xe038, 0x5b82, 0x877d, 0xe03b, 0xe03c, 0x51b2, 0x51b8, 0x9d34,
+ 0x51c9, 0x51cf, 0x51d1, 0x3cdc, 0x51d3, 0xe045, 0x51b3, 0x51e2,
+ 0x5342, 0x51ed, 0x83cd, 0x693e, 0xe04c, 0x5f7b, 0x520b, 0x5226,
+ 0x523c, 0x52b5, 0x5257, 0x5294, 0x52b9, 0x52c5, 0x7c15, 0x8542,
+ 0x52e0, 0x860d, 0xe05a, 0x5305, 0xe05c, 0x5549, 0x6ed9, 0xe05f,
+ 0xe060, 0xe061, 0x5333, 0x5344, 0xe064, 0x6ccb, 0xe066, 0x681b,
+ 0x73d5, 0x604a, 0x3eaa, 0x38cc, 0xe06c, 0x71dd, 0x44a2, 0x536d,
+ 0x5374, 0xe071, 0x537e, 0x537f, 0xe074, 0xe075, 0x77e6, 0x5393,
+ 0xe078, 0x53a0, 0x53ab, 0x53ae, 0x73a7, 0xe07d, 0x3f59, 0x739c,
+ 0x53c1, 0x53c5, 0x6c49, 0x4e49, 0x57fe, 0x53d9, 0x3aab, 0xe087,
+ 0x53e0, 0xe089, 0xe08a, 0x53f6, 0xe08c, 0x5413, 0x7079, 0x552b,
+ 0x6657, 0x6d5b, 0x546d, 0xe093, 0xe094, 0x555d, 0x548f, 0x54a4,
+ 0x47a6, 0xe099, 0xe09a, 0x3db4, 0xe09c,
+ /* 0xfb */
+ 0xe09d, 0xe09e, 0x5547, 0x4ced, 0x542f, 0x7417, 0x5586, 0x55a9,
+ 0x5605, 0xe0a6, 0xe0a7, 0x4552, 0xe0a9, 0x66b3, 0xe0ab, 0x5637,
+ 0x66cd, 0xe0ae, 0x66a4, 0x66ad, 0x564d, 0x564f, 0x78f1, 0x56f1,
+ 0x9787, 0x53fe, 0x5700, 0x56ef, 0x56ed, 0xe0ba, 0x3623, 0xe0bc,
+ 0x5746, 0xe0be, 0x6c6e, 0x708b, 0x5742, 0x36b1, 0xe0c3, 0x57e6,
+ 0xe0c5, 0x5803, 0xe0c7, 0xe0c8, 0x5826, 0xe0ca, 0x585c, 0x58aa,
+ 0x3561, 0x58e0, 0x58dc, 0xe0d0, 0x58fb, 0x5bff, 0x5743, 0xe0d4,
+ 0xe0d5, 0x93d3, 0x35a1, 0x591f, 0x68a6, 0x36c3, 0x6e59, 0xe0dc,
+ 0x5a24, 0x5553, 0xe0df, 0x8505, 0x59c9, 0xe0e2, 0xe0e3, 0xe0e4,
+ 0xe0e5, 0x59d9, 0xe0e7, 0xe0e8, 0xe0e9, 0x6d71, 0xe0eb, 0xe0ec,
+ 0x59f9, 0xe0ee, 0x5aab, 0x5a63, 0x36e6, 0xe0f2, 0x5a77, 0x3708,
+ 0x5a96, 0x7465, 0x5ad3, 0xe0f8, 0xe0f9, 0x3d85, 0xe0fb, 0x3732,
+ 0xe0fd, 0x5e83, 0x52d0, 0x5b76, 0x6588, 0x5b7c, 0xe103, 0x4004,
+ 0x485d, 0xe106, 0x5bd5, 0x6160, 0xe109, 0xe10a, 0xe10b, 0x5bf3,
+ 0x5b9d, 0x4d10, 0x5c05, 0xe110, 0x5c13, 0x73ce, 0x5c14, 0xe114,
+ 0xe115, 0x5c49, 0x48dd, 0x5c85, 0x5ce9, 0x5cef, 0x5d8b, 0xe11c,
+ 0xe11d, 0x5d10, 0x5d18, 0x5d46, 0xe121, 0x5cba, 0x5dd7, 0x82fc,
+ 0x382d, 0xe126, 0xe127, 0xe128, 0x8287, 0x3836, 0x3bc2, 0x5e2e,
+ 0x6a8a, 0x5e75, 0x5e7a, 0xe130, 0xe131, 0x53a6, 0x4eb7, 0x5ed0,
+ 0x53a8, 0xe136, 0x5e09, 0x5ef4, 0xe139,
+ /* 0xfc */
+ 0x5ef9, 0x5efb, 0x38a0, 0x5efc, 0x683e, 0x941b, 0x5f0d, 0xe141,
+ 0xe142, 0x3ade, 0x48ae, 0xe145, 0x5f3a, 0xe147, 0xe148, 0x5f58,
+ 0xe14a, 0x5f63, 0x97bd, 0xe14d, 0x5f72, 0x9340, 0xe150, 0x5fa7,
+ 0x5db6, 0x3d5f, 0xe154, 0xe155, 0xe156, 0xe157, 0x91d6, 0xe159,
+ 0xe15a, 0x6031, 0x6685, 0xe15d, 0x3963, 0x3dc7, 0x3639, 0x5790,
+ 0xe162, 0x7971, 0x3e40, 0x609e, 0x60a4, 0x60b3, 0xe168, 0xe169,
+ 0xe16a, 0x74a4, 0x50e1, 0x5aa0, 0x6164, 0x8424, 0x6142, 0xe171,
+ 0xe172, 0x6181, 0x51f4, 0xe175, 0x6187, 0x5baa, 0xe178, 0xe179,
+ 0x61d3, 0xe17b, 0xe17c, 0x61d0, 0x3932, 0xe17f, 0xe180, 0x6023,
+ 0x615c, 0x651e, 0x638b, 0xe185, 0x62c5, 0xe187, 0x62d5, 0xe189,
+ 0x636c, 0xe18b, 0x3a17, 0x6438, 0x63f8, 0xe18f, 0xe190, 0x6490,
+ 0x6f8a, 0xe193, 0x9814, 0xe195, 0xe196, 0x64e1, 0x64e5, 0x947b,
+ 0x3a66, 0x643a, 0x3a57, 0x654d, 0x6f16, 0xe19f, 0xe1a0, 0x6585,
+ 0x656d, 0x655f, 0xe1a4, 0x65b5, 0xe1a6, 0x4b37, 0x65d1, 0x40d8,
+ 0xe1aa, 0x65e0, 0x65e3, 0x5fdf, 0xe1ae, 0x6618, 0xe1b0, 0xe1b1,
+ 0x6644, 0xe1b3, 0xe1b4, 0x664b, 0xe1b6, 0x6667, 0xe1b8, 0x6673,
+ 0x6674, 0xe1bb, 0xe1bc, 0xe1bd, 0xe1be, 0xe1bf, 0x77c5, 0xe1c1,
+ 0x99a4, 0x6702, 0xe1c4, 0xe1c5, 0x3b2b, 0x69fa, 0xe1c8, 0x675e,
+ 0x6767, 0x6762, 0xe1cc, 0xe1cd, 0x67d7, 0x44e9, 0x6822, 0x6e50,
+ 0x923c, 0x6801, 0xe1d4, 0xe1d5, 0x685d,
+ /* 0xfd */
+ 0xe1d7, 0x69e1, 0x6a0b, 0xe1da, 0x6973, 0x68c3, 0xe1dd, 0x6901,
+ 0x6900, 0x3d32, 0x3a01, 0xe1e2, 0x3b80, 0x67ac, 0x6961, 0xe1e6,
+ 0x42fc, 0x6936, 0x6998, 0x3ba1, 0xe1eb, 0x8363, 0x5090, 0x69f9,
+ 0xe1ef, 0xe1f0, 0x6a45, 0xe1f2, 0x6a9d, 0x3bf3, 0x67b1, 0x6ac8,
+ 0xe1f7, 0x3c0d, 0x6b1d, 0xe1fa, 0x60de, 0x6b35, 0x6b74, 0xe1fe,
+ 0x6eb5, 0xe200, 0xe201, 0xe202, 0x3740, 0x5421, 0xe205, 0x6be1,
+ 0xe207, 0x6bdc, 0x6c37, 0xe20a, 0xe20b, 0xe20c, 0x6c5a, 0x8226,
+ 0x6c79, 0xe210, 0x44c5, 0xe212, 0xe213, 0xe214, 0xe215, 0xe216,
+ 0x36e5, 0x3ceb, 0xe219, 0x9b83, 0xe21b, 0xe21c, 0x7f8f, 0x6837,
+ 0xe21f, 0xe220, 0xe221, 0x6d96, 0x6d5c, 0x6e7c, 0x6f04, 0xe226,
+ 0xe227, 0xe228, 0x8533, 0xe22a, 0x51c7, 0x6c9c, 0x6e1d, 0x842e,
+ 0xe22f, 0x6e2f, 0xe231, 0x7453, 0xe233, 0x79cc, 0x6e4f, 0x5a91,
+ 0xe237, 0x6ff8, 0x370d, 0x6f9d, 0xe23b, 0x6efa, 0xe23d, 0xe23e,
+ 0x4555, 0x93f0, 0x6f44, 0x6f5c, 0x3d4e, 0x6f74, 0xe245, 0x3d3b,
+ 0x6f9f, 0xe248, 0x6fd3, 0xe24a, 0xe24b, 0xe24c, 0xe24d, 0xe24e,
+ 0xe24f, 0x51df, 0xe251, 0xe252, 0xe253, 0xe254, 0x704b, 0x707e,
+ 0x70a7, 0x7081, 0x70cc, 0x70d5, 0x70d6, 0x70df, 0x4104, 0x3de8,
+ 0x71b4, 0x7196, 0xe261, 0x712b, 0x7145, 0x5a88, 0x714a, 0x716e,
+ 0x5c9c, 0xe268, 0x714f, 0x9362, 0xe26b, 0x712c, 0xe26d, 0xe26e,
+ 0xe26f, 0x71ba, 0xe271, 0x70bd, 0x720e,
+ /* 0xfe */
+ 0x9442, 0x7215, 0x5911, 0x9443, 0x7224, 0x9341, 0xe27a, 0x722e,
+ 0x7240, 0xe27d, 0x68bd, 0x7255, 0x7257, 0x3e55, 0xe282, 0x680d,
+ 0x6f3d, 0x7282, 0x732a, 0x732b, 0xe288, 0xe289, 0x48ed, 0xe28b,
+ 0x7328, 0x732e, 0x73cf, 0x73aa, 0xe290, 0xe291, 0x73c9, 0x7449,
+ 0xe294, 0xe295, 0xe296, 0x6623, 0x36c5, 0xe299, 0xe29a, 0xe29b,
+ 0x73f7, 0x7415, 0x6903, 0xe29f, 0x7439, 0xe2a1, 0x3ed7, 0x745c,
+ 0xe2a4, 0x7460, 0xe2a6, 0x7447, 0x73e4, 0x7476, 0x83b9, 0x746c,
+ 0x3730, 0x7474, 0x93f1, 0x6a2c, 0x7482, 0x4953, 0xe2b2, 0xe2b3,
+ 0xe2b4, 0xe2b5, 0x5b46, 0xe2b7, 0xe2b8, 0x74c8, 0xe2ba, 0x750e,
+ 0x74e9, 0x751e, 0xe2be, 0xe2bf, 0x5bd7, 0xe2c1, 0x9385, 0x754d,
+ 0x754a, 0x7567, 0x756e, 0xe2c7, 0x3f04, 0xe2c9, 0x758e, 0x745d,
+ 0x759e, 0x75b4, 0x7602, 0x762c, 0x7651, 0x764f, 0x766f, 0x7676,
+ 0xe2d4, 0x7690, 0x81ef, 0x37f8, 0xe2d8, 0xe2d9, 0x76a1, 0x76a5,
+ 0x76b7, 0x76cc, 0xe2de, 0x8462, 0xe2e0, 0xe2e1, 0xe2e2, 0x771e,
+ 0x7726, 0x7740, 0x64af, 0xe2e7, 0x7758, 0xe2e9, 0x77af, 0xe2eb,
+ 0xe2ec, 0xe2ed, 0x77f4, 0x7809, 0xe2f0, 0xe2f1, 0x68ca, 0x78af,
+ 0x78c7, 0x78d3, 0x96a5, 0x792e, 0xe2f8, 0x78d7, 0x7934, 0x78b1,
+ 0xe2fc, 0x8fb8, 0x8884, 0xe2ff, 0xe300, 0xe301, 0x7986, 0x8900,
+ 0x6902, 0x7980, 0xe306, 0x799d, 0xe308, 0x793c, 0x79a9, 0x6e2a,
+ 0xe30c, 0x3ea8, 0x79c6, 0xe30f, 0x79d4,
+};
+
+static int
+big5hkscs_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n)
+{
+ unsigned char c1 = s[0];
+ if ((c1 >= 0x81 && c1 <= 0xfe)) {
+ if (n >= 2) {
+ unsigned char c2 = s[1];
+ if ((c2 >= 0x40 && c2 < 0x7f) || (c2 >= 0xa1 && c2 < 0xff)) {
+ unsigned int i = 157 * (c1 - 0x81) + (c2 - (c2 >= 0xa1 ? 0x62 : 0x40));
+ unsigned short wc = 0xfffd;
+ {
+ if (i < 19782)
+ wc = big5hkscs_2uni_page81[i];
+ }
+ if (wc != 0xfffd) {
+ *pwc = (ucs4_t) wc;
+ return 2;
+ }
+ }
+ return RET_ILSEQ;
+ }
+ return RET_TOOFEW(0);
+ }
+ return RET_ILSEQ;
+}
+
+static const unsigned short big5hkscs_2charset[23202] = {
+ 0xa246, 0xa247, 0xa244, 0xa1b1, 0xc6d8, 0xa1c2, 0xa258, 0xa1d3,
+ 0xa1a6, 0xa367, 0xa150, 0xa14d, 0x8859, 0x8857, 0x885d, 0x885b,
+ 0x8866, 0x8861, 0x885f, 0xa1d1, 0x886a, 0x8868, 0x886f, 0x886d,
+ 0x88a7, 0x8873, 0x8871, 0x8877, 0x8875, 0xa1d2, 0xc8fb, 0x887b,
+ 0x8879, 0x88a2, 0x8856, 0x8867, 0x885a, 0x886c, 0x885c, 0x886e,
+ 0x8870, 0xc8fc, 0x885e, 0x8874, 0xc8fa, 0x8878, 0x8858, 0x8869,
+ 0x8872, 0x8860, 0x8876, 0x887a, 0x887c, 0x887d, 0x887e, 0x88a1,
+ 0xc8f6, 0x886b, 0xc8f8, 0xc8f7, 0x88a8, 0xc8fe, 0xc8f9, 0xc8f5,
+ 0xc8fd, 0xc6d9, 0xa3be, 0xa3bc, 0xa3bd, 0xa3bf, 0xa1c5, 0xa3bb,
+ 0xa1c2, 0xa344, 0xa345, 0xa346, 0xa347, 0xa348, 0xa349, 0xa34a,
+ 0xa34b, 0xa34c, 0xa34d, 0xa34e, 0xa34f, 0xa350, 0xa351, 0xa352,
+ 0xa353, 0xa354, 0xa355, 0xa356, 0xa357, 0xa358, 0xa359, 0xa35a,
+ 0xa35b, 0xa35c, 0xa35d, 0xa35e, 0xa35f, 0xa360, 0xa361, 0xa362,
+ 0xa363, 0xa364, 0xa365, 0xa366, 0xa367, 0xa368, 0xa369, 0xa36a,
+ 0xa36b, 0xa36c, 0xa36d, 0xa36e, 0xa36f, 0xa370, 0xa371, 0xa372,
+ 0xa373, 0xc7f9, 0xc7f3, 0xc7f4, 0xc7f5, 0xc7f6, 0xc7f7, 0xc7f8,
+ 0xc7fa, 0xc7fb, 0xc7fc, 0xc7fd, 0xc7fe, 0xc840, 0xc841, 0xc842,
+ 0xc843, 0xc844, 0xc845, 0xc846, 0xc847, 0xc848, 0xc849, 0xc84a,
+ 0xc84b, 0xc84c, 0xc84d, 0xc84e, 0xc84f, 0xc850, 0xc851, 0xc852,
+ 0xc853, 0xc854, 0xc855, 0xc856, 0xc857, 0xc858, 0xc859, 0xc85a,
+ 0xc85c, 0xc85d, 0xc85e, 0xc85f, 0xc860, 0xc861, 0xc862, 0xc863,
+ 0xc864, 0xc865, 0xc866, 0xc867, 0xc868, 0xc869, 0xc86a, 0xc86b,
+ 0xc86c, 0xc86d, 0xc86e, 0xc86f, 0xc870, 0xc871, 0xc872, 0xc873,
+ 0xc874, 0xc875, 0xc85b, 0x8863, 0x88a4, 0x8865, 0x88a6, 0xa156,
+ 0xa158, 0xa277, 0xa1fc, 0xa1a5, 0xa1a6, 0xa1a7, 0xa1a8, 0xa145,
+ 0xa3bb, 0xa14c, 0xa14b, 0xa145, 0xa1ac, 0xa1b2, 0xa1ab, 0xa1b0,
+ 0xa1c3, 0xa24a, 0xa1c1, 0xa24b, 0xc8d2, 0xc8d3, 0xa2b9, 0xa2ba,
+ 0xa2bb, 0xa2bc, 0xa2bd, 0xa2be, 0xa2bf, 0xa2c0, 0xa2c1, 0xa2c2,
+ 0xc6b5, 0xc6b6, 0xc6b7, 0xc6b8, 0xc6b9, 0xc6ba, 0xc6bb, 0xc6bc,
+ 0xc6bd, 0xc6be, 0xa1f6, 0xa1f4, 0xa1f7, 0xa1f5, 0xa1f8, 0xa1f9,
+ 0xa1fb, 0xa1fa, 0xc877, 0xc878, 0xc876, 0xa241, 0xa242, 0xa258,
+ 0xa1d4, 0xa1db, 0xa1e8, 0xa1e7, 0xa1fd, 0xa1fc, 0xa1e4, 0xa1e5,
+ 0xa1ec, 0xa1ed, 0xa1ef, 0xa1ee, 0xa1dc, 0xa1da, 0xa1dd, 0xa1dd,
+ 0xa1d8, 0xa1d9, 0xa1f2, 0xa1f3, 0xa1e6, 0xa1e9, 0xa15b, 0xc6a1,
+ 0xc6a2, 0xc6a3, 0xc6a4, 0xc6a5, 0xc6a6, 0xc6a7, 0xc6a8, 0xc6a9,
+ 0xc6aa, 0xc6ab, 0xc6ac, 0xc6ad, 0xc6ae, 0xc6af, 0xc6b0, 0xc6b1,
+ 0xc6b2, 0xc6b3, 0xc6b4, 0xa277, 0xa278, 0xa27a, 0xa27b, 0xa27c,
+ 0xa27d, 0xa275, 0xa274, 0xa273, 0xa272, 0xa271, 0xf9f9, 0xf9f8,
+ 0xf9e6, 0xf9ef, 0xf9dd, 0xf9e8, 0xf9f1, 0xf9df, 0xf9ec, 0xf9f5,
+ 0xf9e3, 0xf9ee, 0xf9f7, 0xf9e5, 0xf9e9, 0xf9f2, 0xf9e0, 0xf9eb,
+ 0xf9f4, 0xf9e2, 0xf9e7, 0xf9f0, 0xf9de, 0xf9ed, 0xf9f6, 0xf9e4,
+ 0xf9ea, 0xf9f3, 0xf9e1, 0xf9fa, 0xf9fb, 0xf9fd, 0xf9fc, 0xa2ac,
+ 0xa2ad, 0xa2ae, 0xa15a, 0xa262, 0xa263, 0xa264, 0xa265, 0xa266,
+ 0xa267, 0xa268, 0xa269, 0xa270, 0xa26f, 0xa26e, 0xa26d, 0xa26c,
+ 0xa26b, 0xa26a, 0xf9fe, 0xa276, 0xa279, 0xa1bd, 0xa1bc, 0xa1b6,
+ 0xa1b5, 0xa1bf, 0xa1be, 0xa1bb, 0xa1ba, 0xa1b3, 0xa1b7, 0xa1b4,
+ 0xa2a8, 0xa2a9, 0xa2ab, 0xa2aa, 0xa1b9, 0xa1b8, 0xa1f3, 0xa1f0,
+ 0xa1f2, 0xa1f1, 0xc6e6, 0xc8d6, 0xc8d7, 0xc8d8, 0xc8d9, 0xc8da,
+ 0xc8db, 0xc8dc, 0xc8dd, 0xc8de, 0xc8df, 0xc8e0, 0xc8e1, 0xc8e2,
+ 0xc8e3, 0xc8e4, 0xc8e5, 0xc8e6, 0xc8e7, 0xc8e8, 0xc8e9, 0xc8ea,
+ 0xc8eb, 0xc8ec, 0xc8ed, 0xc8ee, 0xc8ef, 0xc8f0, 0xc8f1, 0xc6cd,
+ 0xa140, 0xa142, 0xa143, 0xa1b2, 0xc6e0, 0xc6e1, 0xc6e2, 0xa171,
+ 0xa172, 0xa16d, 0xa16e, 0xa175, 0xa176, 0xa179, 0xa17a, 0xa169,
+ 0xa16a, 0xa245, 0xa165, 0xa166, 0xa1e3, 0xa1a9, 0xa1aa, 0xa2c3,
+ 0xa2c4, 0xa2c5, 0xa2c6, 0xa2c7, 0xa2c8, 0xa2c9, 0xa2ca, 0xa2cb,
+ 0xa1ca, 0xc6e7, 0xc6e8, 0xc6e9, 0xc6ea, 0xc6eb, 0xc6ec, 0xc6ed,
+ 0xc6ee, 0xc6ef, 0xc6f0, 0xc6f1, 0xc6f2, 0xc6f3, 0xc6f4, 0xc6f5,
+ 0xc6f6, 0xc6f7, 0xc6f8, 0xc6f9, 0xc6fa, 0xc6fb, 0xc6fc, 0xc6fd,
+ 0xc6fe, 0xc740, 0xc741, 0xc742, 0xc743, 0xc744, 0xc745, 0xc746,
+ 0xc747, 0xc748, 0xc749, 0xc74a, 0xc74b, 0xc74c, 0xc74d, 0xc74e,
+ 0xc74f, 0xc750, 0xc751, 0xc752, 0xc753, 0xc754, 0xc755, 0xc756,
+ 0xc757, 0xc758, 0xc759, 0xc75a, 0xc75b, 0xc75c, 0xc75d, 0xc75e,
+ 0xc75f, 0xc760, 0xc761, 0xc762, 0xc763, 0xc764, 0xc765, 0xc766,
+ 0xc767, 0xc768, 0xc769, 0xc76a, 0xc76b, 0xc76c, 0xc76d, 0xc76e,
+ 0xc76f, 0xc770, 0xc771, 0xc772, 0xc773, 0xc774, 0xc775, 0xc776,
+ 0xc777, 0xc778, 0xc779, 0xc77a, 0xc8d4, 0xc8d5, 0xc6dc, 0xc6dd,
+ 0xc77b, 0xc77c, 0xc77d, 0xc77e, 0xc7a1, 0xc7a2, 0xc7a3, 0xc7a4,
+ 0xc7a5, 0xc7a6, 0xc7a7, 0xc7a8, 0xc7a9, 0xc7aa, 0xc7ab, 0xc7ac,
+ 0xc7ad, 0xc7ae, 0xc7af, 0xc7b0, 0xc7b1, 0xc7b2, 0xc7b3, 0xc7b4,
+ 0xc7b5, 0xc7b6, 0xc7b7, 0xc7b8, 0xc7b9, 0xc7ba, 0xc7bb, 0xc7bc,
+ 0xc7bd, 0xc7be, 0xc7bf, 0xc7c0, 0xc7c1, 0xc7c2, 0xc7c3, 0xc7c4,
+ 0xc7c5, 0xc7c6, 0xc7c7, 0xc7c8, 0xc7c9, 0xc7ca, 0xc7cb, 0xc7cc,
+ 0xc7cd, 0xc7ce, 0xc7cf, 0xc7d0, 0xc7d1, 0xc7d2, 0xc7d3, 0xc7d4,
+ 0xc7d5, 0xc7d6, 0xc7d7, 0xc7d8, 0xc7d9, 0xc7da, 0xc7db, 0xc7dc,
+ 0xc7dd, 0xc7de, 0xc7df, 0xc7e0, 0xc7e1, 0xc7e2, 0xc7e3, 0xc7e4,
+ 0xc7e5, 0xc7e6, 0xc7e7, 0xc7e8, 0xc7e9, 0xc7ea, 0xc7eb, 0xc7ec,
+ 0xc7ed, 0xc7ee, 0xc7ef, 0xc7f0, 0xc7f1, 0xc7f2, 0xc6e3, 0xc6da,
+ 0xc6db, 0xa374, 0xa375, 0xa376, 0xa377, 0xa378, 0xa379, 0xa37a,
+ 0xa37b, 0xa37c, 0xa37d, 0xa37e, 0xa3a1, 0xa3a2, 0xa3a3, 0xa3a4,
+ 0xa3a5, 0xa3a6, 0xa3a7, 0xa3a8, 0xa3a9, 0xa3aa, 0xa3ab, 0xa3ac,
+ 0xa3ad, 0xa3ae, 0xa3af, 0xa3b0, 0xa3b1, 0xa3b2, 0xa3b3, 0xa3b4,
+ 0xa3b5, 0xa3b6, 0xa3b7, 0xa3b8, 0xa3b9, 0xa3ba, 0xa440, 0xa447,
+ 0xa454, 0xa57c, 0xa457, 0xa4a4, 0xa455, 0xa5d2, 0xa441, 0xa4fe,
+ 0xa442, 0xa4d1, 0xa661, 0xa448, 0xa440, 0xa447, 0xa454, 0xa57c,
+ 0xa4ad, 0xa4bb, 0xa443, 0xa44b, 0xa445, 0xa451, 0xa4eb, 0xa4f5,
+ 0xa4f4, 0xa4ec, 0xaaf7, 0xa467, 0xa4e9, 0xc8d1, 0xa6b3, 0xaac0,
+ 0xa657, 0xaf53, 0xb05d, 0xafac, 0xb3d2, 0xa54e, 0xa949, 0xbec7,
+ 0xbaca, 0xa5f8, 0xb8ea, 0xa8f3, 0xb2bd, 0xa5f0, 0xa6db, 0xa6dc,
+ 0xa440, 0xa447, 0xa454, 0xa57c, 0xa4ad, 0xa4bb, 0xa443, 0xa44b,
+ 0xa445, 0xa451, 0xa4eb, 0xa4f5, 0xa4f4, 0xa4ec, 0xaaf7, 0xa467,
+ 0xa4e9, 0xaee8, 0xa6b3, 0xaac0, 0xa657, 0xaf53, 0xb05d, 0xafac,
+ 0xb3d2, 0xafb5, 0xa86b, 0xa46b, 0xbe41, 0xc075, 0xa64c, 0xaa60,
+ 0xb6b5, 0xa5f0, 0xbc67, 0xa1c0, 0xa457, 0xa4a4, 0xa455, 0xa5aa,
+ 0xa56b, 0xc2e5, 0xa976, 0xbec7, 0xbaca, 0xa5f8, 0xb8ea, 0xa8f3,
+ 0xa95d, 0xa255, 0xa256, 0xa250, 0xa251, 0xa252, 0xa254, 0xa257,
+ 0xa253, 0xa1eb, 0xa1ea, 0xa24f, 0x9277, 0x96df, 0x89d5, 0x93cd,
+ 0x9bdf, 0xfa68, 0x89da, 0x8f59, 0x89db, 0x8f5d, 0x89dc, 0x96f7,
+ 0x8ada, 0x8bdc, 0x97db, 0x9e53, 0x9daa, 0x9bea, 0x8a6e, 0x8bc8,
+ 0x89e8, 0x89ea, 0x8c4b, 0xfb70, 0x89ed, 0x94dd, 0x89ee, 0x9eb4,
+ 0x8ad3, 0x92db, 0x94db, 0x89f9, 0xfb7a, 0x89fb, 0x9efc, 0x89fc,
+ 0x89bf, 0x89fe, 0x89e6, 0x9d46, 0x9dee, 0xa07e, 0xa068, 0x98e9,
+ 0x8b68, 0x8dfd, 0x8bbe, 0x9fd9, 0x8aeb, 0x9fd7, 0x8b6a, 0x9c5c,
+ 0x8bb1, 0xfb5e, 0x9df3, 0xa0d0, 0xfc66, 0x92e9, 0x9aec, 0x8fab,
+ 0xfa48, 0x8e45, 0x9c6f, 0x9ede, 0x89ef, 0x96e9, 0x9ebb, 0x94de,
+ 0x9eb8, 0x97ba, 0xfb65, 0x95d6, 0x9cbb, 0x97da, 0x8f45, 0xfb7d,
+ 0x9158, 0xfe64, 0x9856, 0x9b4d, 0x935b, 0x95c7, 0x97e7, 0x9359,
+ 0x91f5, 0x97b8, 0xfda2, 0xfbb6, 0x92fa, 0x9357, 0x8ba6, 0xfbb9,
+ 0x97b0, 0xfdc4, 0x9ca1, 0x91f2, 0x91f9, 0x8ff1, 0x9745, 0x9853,
+ 0xfe78, 0xfbc1, 0x9251, 0x9dad, 0xfd6c, 0xfa6b, 0x9bc2, 0x9a7b,
+ 0x8b60, 0x934b, 0x9abd, 0x91b7, 0x95b4, 0xfec5, 0x9ef0, 0x8d64,
+ 0x9269, 0x8d67, 0xfbea, 0xfbef, 0x8d68, 0x93eb, 0xfc42, 0x9166,
+ 0xfacd, 0x93dd, 0x8bcc, 0x8d6d, 0x8d6e, 0x96a8, 0xfca6, 0x8d6f,
+ 0x8d70, 0xfc64, 0x9060, 0x8d74, 0x97c3, 0x8ad0, 0x9274, 0x9bbe,
+ 0x9cc8, 0x9cba, 0x8d78, 0x9eb9, 0x955a, 0x91b4, 0x8a48, 0x8d7d,
+ 0x8a7d, 0x8ac2, 0xfd4a, 0x8da1, 0x8ad1, 0xfcb4, 0x8b47, 0x93a4,
+ 0x9eda, 0x8a51, 0x8da6, 0x9ec5, 0xfcc4, 0xa078, 0x94b5, 0xfcc2,
+ 0x8a6b, 0x8dab, 0xfae8, 0x8dad, 0xfc49, 0x93c1, 0x906f, 0x8db0,
+ 0x947e, 0x90fa, 0x9479, 0x8db2, 0xfcee, 0x997b, 0x8db4, 0x8db7,
+ 0x91b3, 0x8dbb, 0x8dba, 0x8dbc, 0x9044, 0xfd4c, 0x93e4, 0x93e0,
+ 0xfd53, 0x8dc3, 0x9bb8, 0xfbf0, 0x93e9, 0x93f6, 0x8dc5, 0x8dca,
+ 0x8dcc, 0xfd5d, 0x93b5, 0xfd61, 0x9cf8, 0x9252, 0xa0e8, 0x9ca5,
+ 0x8c56, 0x8dd6, 0x97c0, 0xa0de, 0x97d2, 0xfaa5, 0xfda3, 0x8ddb,
+ 0x8eaf, 0x91b5, 0xfd49, 0xfdd1, 0x8deb, 0x97c6, 0xfdce, 0x90fc,
+ 0xfc59, 0x96d6, 0x97c5, 0x8def, 0x97d7, 0x8df0, 0x96a6, 0xfbbf,
+ 0x8df3, 0x9449, 0x8df5, 0x9872, 0x8e6b, 0xfafd, 0x8f50, 0x9dcc,
+ 0xfc65, 0x8c44, 0x996e, 0x94a1, 0x8f63, 0xa0da, 0x9253, 0xfde9,
+ 0x9db5, 0x9879, 0x9d5d, 0x8d63, 0x9669, 0x9f70, 0xfc6a, 0x8ac7,
+ 0x89d7, 0xfe4d, 0x9edd, 0xfefb, 0x98bc, 0xfacc, 0x95b0, 0x9464,
+ 0x936f, 0x94b9, 0x95ec, 0x91ee, 0x98c3, 0x95f6, 0x8ffd, 0x98c5,
+ 0x9766, 0xfe6e, 0x97dd, 0x8caa, 0x92d2, 0x9761, 0x98cb, 0x95f0,
+ 0x975d, 0x91e3, 0x98cc, 0x9469, 0x98cd, 0x98ce, 0x95fc, 0x94a3,
+ 0x9662, 0xfeb6, 0x9463, 0x98d0, 0x98d1, 0x9475, 0xfae0, 0x9472,
+ 0x98d6, 0x8af0, 0x98d9, 0x98db, 0x98dd, 0x98a8, 0x8a6d, 0x8afb,
+ 0x8aae, 0xfbc9, 0x8c5d, 0x98e4, 0x98e6, 0x98e8, 0x8a4d, 0x9257,
+ 0x95df, 0xa0ac, 0x98eb, 0x98ec, 0x8cc3, 0x98f4, 0x8ab8, 0x9ee7,
+ 0x94bc, 0xfcd1, 0x9cc6, 0x9e7e, 0x98fe, 0xfde8, 0x9940, 0x94c9,
+ 0x94d3, 0x9946, 0x90c0, 0x94d1, 0x9573, 0x93c2, 0x9948, 0x994b,
+ 0x8e55, 0x994e, 0x8efe, 0x8e59, 0x94ec, 0x94ef, 0x8c60, 0x8f74,
+ 0x9955, 0x9544, 0x8ccb, 0x9956, 0x9959, 0x995b, 0x8cc4, 0xfa45,
+ 0x90b7, 0x9743, 0x95cd, 0x97c9, 0xfd50, 0x8eb9, 0x95c6, 0x9967,
+ 0x8ab9, 0x8dfc, 0x8a76, 0x9d51, 0x9973, 0x9d4f, 0x997a, 0x9564,
+ 0x99a1, 0x99a5, 0x99a7, 0x8eed, 0x99ad, 0x946e, 0x8f70, 0xfad0,
+ 0x99b3, 0xa053, 0x965c, 0xfd7a, 0x97fe, 0x92bd, 0x97fd, 0x8f64,
+ 0xfcf7, 0x9562, 0x97cd, 0x9e64, 0x924c, 0x8ec9, 0x99bc, 0x9da5,
+ 0x8f54, 0x8f7c, 0x8ea2, 0x8f7a, 0x97ae, 0x96c8, 0x99c3, 0x90d6,
+ 0x9cbe, 0x8f76, 0x9470, 0xfb4b, 0xfdca, 0x8ec7, 0xa0f9, 0x8fa9,
+ 0x99c7, 0x90d7, 0x9edf, 0x99ce, 0x8fba, 0x8feb, 0x99cf, 0x8fc2,
+ 0x92c9, 0x97dc, 0x95b3, 0x9c79, 0x95b2, 0x8fdb, 0x9be3, 0x9e7a,
+ 0x9bee, 0x99de, 0xfafa, 0x9ee5, 0x8a52, 0x99e1, 0x8a67, 0x8bb5,
+ 0x8aac, 0x99e9, 0xfbca, 0x97de, 0x95d1, 0x99f5, 0xfc4a, 0x9ba9,
+ 0xfbdc, 0xfe56, 0x9ea4, 0x9d49, 0x95db, 0x89c5, 0x99f8, 0x9664,
+ 0x9055, 0x96d4, 0x977c, 0x964d, 0x97e1, 0x9a48, 0x9a49, 0xfe7d,
+ 0x90aa, 0x9a50, 0x9347, 0x8ed8, 0x90c9, 0x9a55, 0x90bc, 0x9a58,
+ 0x8bb8, 0x90d5, 0x9641, 0x9a5a, 0x9a5c, 0x97c2, 0x8abb, 0x9baa,
+ 0x90f5, 0x9a60, 0x9145, 0x8c58, 0x9a63, 0x8c49, 0x8bb6, 0xfccf,
+ 0x966b, 0x9a6e, 0x914f, 0x9746, 0xa0e6, 0x92d7, 0x9675, 0x93d4,
+ 0x91bb, 0x9679, 0x9a70, 0x9678, 0x91cd, 0x9c4a, 0xa06f, 0xa06a,
+ 0x915f, 0x9fa5, 0x89ba, 0x9ecd, 0x9a79, 0x9dce, 0x8cd2, 0x9d73,
+ 0x96b9, 0x96bc, 0x9cd1, 0x89b7, 0x9eee, 0xfb43, 0x9ec9, 0xfbd3,
+ 0x91ae, 0x9d78, 0x9d7b, 0xa440, 0xa442, 0xa443, 0x9eb3, 0xc945,
+ 0xa456, 0xa454, 0xa457, 0xa455, 0xc946, 0xa4a3, 0xc94f, 0xc94d,
+ 0xa4a2, 0xa4a1, 0xa542, 0xa541, 0xa540, 0xa543, 0xa4fe, 0x9eb2,
+ 0x9dd6, 0xa5e0, 0xa5e1, 0x994f, 0x89ce, 0xa8c3, 0x8bc0, 0x9fc4,
+ 0xa458, 0x8bd4, 0xa4a4, 0xc950, 0x8c72, 0xa4a5, 0xc963, 0xa6ea,
+ 0xcbb1, 0xc6bf, 0x8bf9, 0xa459, 0xa4a6, 0xa544, 0xc964, 0x8946,
+ 0xc6c0, 0xc940, 0xa444, 0xa45b, 0xc947, 0xa45c, 0xfae5, 0xa4a7,
+ 0xa545, 0xa547, 0xa546, 0xa5e2, 0xa5e3, 0xa8c4, 0xadbc, 0xa441,
+ 0xc87b, 0x8bc6, 0xc941, 0xa445, 0xa45e, 0xa45d, 0xa5e4, 0x9c57,
+ 0xa8c5, 0x9afb, 0xb0ae, 0xd44b, 0x89d0, 0x89cf, 0xb6c3, 0xdcb1,
+ 0xdcb2, 0xc6c1, 0xa446, 0x89d1, 0xa4a9, 0x89e2, 0xa8c6, 0xa447,
+ 0xc948, 0xa45f, 0xa4aa, 0xa4ac, 0xc951, 0xa4ad, 0xa4ab, 0x927e,
+ 0xa5e5, 0x9dba, 0xa8c7, 0xa8c8, 0xab45, 0xc6c2, 0xa460, 0xa4ae,
+ 0x8c6f, 0xa5e6, 0xa5e8, 0xa5e7, 0xa6eb, 0xa8c9, 0xa8ca, 0xab46,
+ 0xab47, 0xadbd, 0xdcb3, 0xfbf8, 0xf6d6, 0xa448, 0x8bc7, 0x926b,
+ 0x89d2, 0xa4b0, 0xa4af, 0xc952, 0xa4b1, 0xa4b7, 0xa4b2, 0xa4b3,
+ 0xc954, 0xc953, 0xa4b5, 0xa4b6, 0xa4b4, 0x9fcf, 0xa54a, 0xa54b,
+ 0xa54c, 0xa54d, 0xa549, 0xa550, 0xc96a, 0xc966, 0xc969, 0xa551,
+ 0xa561, 0xc968, 0xa54e, 0xa54f, 0xa548, 0xc965, 0xc967, 0x9da9,
+ 0x89d3, 0x99e2, 0xa5f5, 0xc9b0, 0xa5f2, 0xa5f6, 0xc9ba, 0xc9ae,
+ 0xa5f3, 0xc9b2, 0x9267, 0xa5f4, 0xa5f7, 0xa5e9, 0xc9b1, 0xa5f8,
+ 0xc9b5, 0x92a4, 0xc9b9, 0xc9b6, 0xc9b3, 0xa5ea, 0xa5ec, 0xa5f9,
+ 0xa5ee, 0xc9ab, 0xa5f1, 0xa5ef, 0xa5f0, 0xc9bb, 0xc9b8, 0xc9af,
+ 0xa5ed, 0x8c73, 0xc9ac, 0xa5eb, 0x894e, 0xc9b4, 0xc9b7, 0x894f,
+ 0x9278, 0xc9ad, 0xca66, 0xa742, 0xa6f4, 0x91b6, 0xca67, 0xa6f1,
+ 0xa744, 0x89d4, 0xa6f9, 0x9fd2, 0xa6f8, 0xca5b, 0xa6fc, 0xa6f7,
+ 0xca60, 0xca68, 0xca64, 0x92a7, 0xa6fa, 0x95a2, 0xa6fd, 0xa6ee,
+ 0xa747, 0xca5d, 0x926e, 0xcbbd, 0xa6ec, 0xa743, 0xa6ed, 0xa6f5,
+ 0xa6f6, 0xca62, 0xca5e, 0xa6fb, 0xa6f3, 0xca5a, 0xa6ef, 0xca65,
+ 0xa745, 0xa748, 0xa6f2, 0xa740, 0xa746, 0xa6f0, 0xca63, 0xa741,
+ 0xca69, 0xca5c, 0xa6fe, 0xca5f, 0xca61, 0xa8d8, 0xcbbf, 0xcbcb,
+ 0xa8d0, 0xcbcc, 0xa8cb, 0xa8d5, 0x96ea, 0xa8ce, 0xcbb9, 0xa8d6,
+ 0xcbb8, 0xcbbc, 0xcbc3, 0xcbc1, 0xa8de, 0xa8d9, 0xcbb3, 0xcbb5,
+ 0xa8db, 0xa8cf, 0xcbb6, 0xcbc2, 0xcbc9, 0xa8d4, 0xcbbb, 0xcbb4,
+ 0xa8d3, 0xcbb7, 0xa8d7, 0xcbba, 0x926f, 0xa8d2, 0xa8cd, 0xa8dc,
+ 0xcbc4, 0xa8dd, 0xcbc8, 0xcbc6, 0xcbca, 0xa8da, 0xcbbe, 0xcbb2,
+ 0xcbc0, 0xa8d1, 0xcbc5, 0xa8cc, 0xcbc7, 0x92a3, 0x8950, 0xfa57,
+ 0xab56, 0xab4a, 0x9866, 0xcde0, 0xcde8, 0xab49, 0xab51, 0xab5d,
+ 0xcdee, 0xcdec, 0xcde7, 0x89d6, 0xab4b, 0xcded, 0xcde3, 0xab59,
+ 0xab50, 0xab58, 0xcdde, 0xcdea, 0x98b2, 0xcde1, 0xab54, 0xcde2,
+ 0x92ab, 0xcddd, 0xab5b, 0xab4e, 0xab57, 0xab4d, 0xcddf, 0xcde4,
+ 0xcdeb, 0xab55, 0xab52, 0xcde6, 0xab5a, 0xcde9, 0xcde5, 0xab4f,
+ 0xab5c, 0xab53, 0xab4c, 0xab48, 0x96de, 0x92ac, 0xcdef, 0xadd7,
+ 0xadc1, 0x8c70, 0xadd1, 0x9f6e, 0xadd6, 0xd0d0, 0xd0cf, 0xd0d4,
+ 0xd0d5, 0xadc4, 0x8ef2, 0xadcd, 0x9f6c, 0xadda, 0xadce, 0x89d8,
+ 0xd0c9, 0xadc7, 0xd0ca, 0xfa59, 0xaddc, 0xadd3, 0xadbe, 0xadbf,
+ 0xd0dd, 0xb0bf, 0xadcc, 0xadcb, 0xd0cb, 0xadcf, 0xd45b, 0xadc6,
+ 0xd0d6, 0xadd5, 0xadd4, 0xadca, 0xd0ce, 0xd0d7, 0xd0c8, 0xadc9,
+ 0xd0d8, 0xadd2, 0xd0cc, 0xadc0, 0xadc3, 0xadc2, 0xd0d9, 0xadd0,
+ 0xadc5, 0xadd9, 0xaddb, 0xd0d3, 0xadd8, 0x92a8, 0xd0db, 0xd0cd,
+ 0xd0dc, 0xd0d1, 0x9163, 0xd0da, 0xd0d2, 0x8c40, 0xadc8, 0xd463,
+ 0xd457, 0xb0b3, 0xd45c, 0xd462, 0xb0b2, 0xd455, 0xb0b6, 0xd459,
+ 0xd452, 0xb0b4, 0xd456, 0xb0b9, 0xb0be, 0xd467, 0xd451, 0xb0ba,
+ 0x9f73, 0xd466, 0x92ad, 0xb0b5, 0xd458, 0xb0b1, 0xd453, 0xd44f,
+ 0xd45d, 0xd450, 0xd44e, 0xd45a, 0xd460, 0xd461, 0xb0b7, 0x9be9,
+ 0xd85b, 0xd45e, 0xd44d, 0xd45f, 0x92a9, 0xb0c1, 0xd464, 0xb0c0,
+ 0xd44c, 0xd454, 0xd465, 0xb0bc, 0xb0bb, 0xb0b8, 0xb0bd, 0xb0af,
+ 0xb0b0, 0xb3c8, 0x92aa, 0xd85e, 0xd857, 0xb3c5, 0xd85f, 0x89d9,
+ 0xd855, 0xd858, 0xb3c4, 0xd859, 0xfd56, 0xb3c7, 0xd85d, 0xd853,
+ 0xd852, 0xb3c9, 0xb3ca, 0xb3c6, 0xb3cb, 0xd851, 0xd85c, 0xd85a,
+ 0xd854, 0xb3c3, 0xd856, 0x9fa8, 0xb6ca, 0xb6c4, 0xdcb7, 0xb6cd,
+ 0xdcbd, 0xdcc0, 0xb6c6, 0xb6c7, 0xdcba, 0xb6c5, 0xdcc3, 0xb6cb,
+ 0xdcc4, 0xdcbf, 0xb6cc, 0x8c71, 0xdcb4, 0xb6c9, 0xdcb5, 0xdcbe,
+ 0xdcbc, 0xdcb8, 0xb6c8, 0xdcb6, 0xb6ce, 0xdcbb, 0xdcc2, 0xdcb9,
+ 0xdcc1, 0x92a1, 0xb9b6, 0xb9b3, 0x90e3, 0xb9b4, 0xe0f9, 0xe0f1,
+ 0xb9b2, 0xb9af, 0xe0f2, 0xa0a6, 0xb9b1, 0xe0f5, 0xe0f7, 0x94ab,
+ 0xe0fe, 0xfc72, 0xe0fd, 0xe0f8, 0xb9ae, 0xe0f0, 0xb9ac, 0xe0f3,
+ 0xb9b7, 0xe0f6, 0xe0fa, 0xb9b0, 0xb9ad, 0xe0fc, 0xe0fb, 0xb9b5,
+ 0xe0f4, 0x97c4, 0xbbf8, 0xe4ec, 0xe4e9, 0xbbf9, 0xbbf7, 0x92ae,
+ 0xe4f0, 0xe4ed, 0xe4e6, 0xbbf6, 0xfa67, 0xbbfa, 0xe4e7, 0xbbf5,
+ 0xbbfd, 0xe4ea, 0xe4eb, 0xbbfb, 0xbbfc, 0xe4f1, 0xe4ee, 0xe4ef,
+ 0x92a2, 0xfa69, 0xbeaa, 0xe8f8, 0xbea7, 0xe8f5, 0xbea9, 0xbeab,
+ 0xe8f6, 0xbea8, 0xe8f7, 0xe8f4, 0xc076, 0xecbd, 0xc077, 0xecbb,
+ 0xecbc, 0xecba, 0xecb9, 0xecbe, 0xc075, 0x9268, 0xefb8, 0xefb9,
+ 0xe4e8, 0xefb7, 0xc078, 0xc35f, 0xf1eb, 0xf1ec, 0xc4d7, 0xc4d8,
+ 0xf5c1, 0xf5c0, 0xc56c, 0xc56b, 0xf7d0, 0xa449, 0xa461, 0xa4b9,
+ 0xa4b8, 0xa553, 0xa552, 0xa5fc, 0xa5fb, 0xa5fd, 0xa5fa, 0xa74a,
+ 0xa749, 0xa74b, 0xa8e0, 0xa8df, 0xa8e1, 0x8951, 0xab5e, 0xa259,
+ 0xd0de, 0xa25a, 0xb0c2, 0xa25c, 0xa25b, 0xd860, 0xfa6f, 0xa25d,
+ 0xb9b8, 0xa25e, 0xa44a, 0xa4ba, 0xa5fe, 0xa8e2, 0xfa71, 0xa44b,
+ 0xa4bd, 0xa4bb, 0xa4bc, 0xa640, 0x8952, 0xa74c, 0xa8e4, 0xa8e3,
+ 0xa8e5, 0x945a, 0xaddd, 0xbeac, 0xc6c3, 0x89dd, 0xc94e, 0xc8a2,
+ 0xa554, 0xa555, 0xa641, 0xca6a, 0xab60, 0xab5f, 0xd0e0, 0xd0df,
+ 0xb0c3, 0xc6c4, 0xa4be, 0xc955, 0x9e52, 0x8953, 0xcbcd, 0xab61,
+ 0xade0, 0xadde, 0xaddf, 0x9e55, 0x92ba, 0xbead, 0xc6c5, 0xa556,
+ 0x8c5b, 0xa642, 0xc9bc, 0xfa7d, 0xfaa8, 0x9a68, 0xfa47, 0xa74d,
+ 0xa74e, 0xfa7e, 0xca6b, 0xcbce, 0xa8e6, 0xcbcf, 0x92bb, 0xd0e2,
+ 0xd0e3, 0xade3, 0xfdb6, 0xd0e4, 0xfaa2, 0xd0e1, 0xade4, 0xade2,
+ 0xade1, 0xd0e5, 0xfaa3, 0xd468, 0xfaa4, 0x9bb4, 0xfaa6, 0xd861,
+ 0xdcc5, 0xe140, 0x89df, 0xbbfe, 0xbeae, 0xe8f9, 0xfddb, 0xa44c,
+ 0xa45a, 0xfaa9, 0x8954, 0xfaab, 0xb0c4, 0xb3cd, 0xb9b9, 0xfc7a,
+ 0xc942, 0xa4bf, 0xa559, 0xa557, 0xa558, 0x89e0, 0xa8e7, 0x9f4f,
+ 0xa44d, 0xa44e, 0xc87d, 0xa462, 0x89e1, 0xa4c0, 0xa4c1, 0xa4c2,
+ 0xc9be, 0xa55a, 0xfab0, 0xc96b, 0xa646, 0xc9bf, 0xa644, 0xa645,
+ 0xc9bd, 0xa647, 0xa643, 0xca6c, 0xaaec, 0xca6d, 0x9fcd, 0xa0e7,
+ 0xca6e, 0xa750, 0xa74f, 0xfab1, 0x89a6, 0xa753, 0xa751, 0xa752,
+ 0xa8ed, 0xa8ec, 0xcbd4, 0xcbd1, 0xcbd2, 0x9efa, 0xcbd0, 0xa8ee,
+ 0xa8ea, 0xa8e9, 0xa8eb, 0xa8e8, 0xfab2, 0xa8ef, 0xab63, 0xcdf0,
+ 0xcbd3, 0xab68, 0xcdf1, 0xab64, 0xab67, 0xab66, 0xab65, 0xab62,
+ 0xd0e8, 0xade7, 0xd0eb, 0xade5, 0xfab4, 0x92c4, 0xd0e7, 0xade8,
+ 0xade6, 0xade9, 0xd0e9, 0xd0ea, 0x9f6f, 0xd0e6, 0xd0ec, 0x8bb0,
+ 0xb3d1, 0xb0c5, 0xd469, 0xd46b, 0xd46a, 0xd46c, 0xb0c6, 0xb3ce,
+ 0x9fac, 0xb3cf, 0xb3d0, 0xb6d0, 0xdcc7, 0x89e3, 0xdcc6, 0xdcc8,
+ 0xdcc9, 0xb6d1, 0xb6cf, 0xe141, 0xe142, 0xb9bb, 0xb9ba, 0xe35a,
+ 0xbc40, 0xbc41, 0xbc42, 0xbc44, 0xe4f2, 0xe4f3, 0xbc43, 0x9bd3,
+ 0x89e4, 0xbeaf, 0xbeb0, 0xfab5, 0xf1ed, 0xf5c3, 0xf5c2, 0xf7d1,
+ 0x9fd5, 0xa44f, 0xa55c, 0xa55b, 0x8955, 0xa648, 0x92c5, 0xc9c0,
+ 0x8956, 0xa755, 0xa756, 0xa754, 0xa757, 0xca6f, 0xca70, 0xfab3,
+ 0xfab6, 0xa8f1, 0xcbd5, 0xa8f0, 0xcdf2, 0xab6c, 0xcdf3, 0xab6b,
+ 0xfab7, 0xab69, 0xab6a, 0x9edc, 0xd0ed, 0xfbc4, 0x9f71, 0xb0c7,
+ 0xd46e, 0xb0ca, 0xd46d, 0xb1e5, 0xb0c9, 0xb0c8, 0xb3d4, 0xb3d3,
+ 0xb3d2, 0xb6d2, 0xfaba, 0x92c7, 0xb6d5, 0xb6d6, 0xb6d4, 0xb6d3,
+ 0xe143, 0xe144, 0xe4f5, 0xbc45, 0xe4f4, 0xbeb1, 0xecbf, 0xc079,
+ 0xf1ee, 0xc455, 0xc6c6, 0xa463, 0xa4c3, 0xc956, 0xa4c4, 0xa4c5,
+ 0x9a4c, 0xa55d, 0xa55e, 0xa649, 0xca71, 0xcbd6, 0xcbd7, 0xab6d,
+ 0xd0ee, 0xb0cc, 0xb0cb, 0xd863, 0xd862, 0xa450, 0xa4c6, 0xa55f,
+ 0xb0cd, 0xc943, 0xc96c, 0xa560, 0xc9c2, 0xa64b, 0xa64a, 0xc9c1,
+ 0xa758, 0x8c68, 0x89e5, 0xadea, 0x9f7d, 0xd46f, 0xb6d7, 0xe145,
+ 0xb9bc, 0xa0a9, 0xfac4, 0xe8fa, 0xf3fd, 0xc6c7, 0xa4c7, 0x8957,
+ 0xcbd8, 0xcdf4, 0xb0d0, 0xb0ce, 0xb0cf, 0xa451, 0xfaaa, 0xa464,
+ 0xa2cd, 0xa4ca, 0xa4c9, 0xa4c8, 0xa563, 0xa562, 0xc96d, 0xc9c3,
+ 0x8958, 0xa8f5, 0xa8f2, 0xa8f4, 0xa8f3, 0xab6e, 0xb3d5, 0xa452,
+ 0x8be3, 0xa4cb, 0x8b61, 0xa565, 0xa564, 0xca72, 0x9af1, 0xa8f6,
+ 0x9eb7, 0xc6c8, 0xc957, 0xfad1, 0xa567, 0xa566, 0xa64c, 0xa64d,
+ 0xca73, 0xa759, 0xfad2, 0xa75a, 0xa8f7, 0xa8f8, 0xa8f9, 0xab6f,
+ 0xcdf5, 0x9eba, 0xfad4, 0xadeb, 0xc944, 0xa4cc, 0xc9c4, 0xca74,
+ 0xca75, 0xcbd9, 0xfad9, 0xcbda, 0xcdf7, 0xcdf6, 0xcdf9, 0xcdf8,
+ 0xab70, 0xd470, 0xaded, 0xd0ef, 0xadec, 0xfadb, 0x9ce0, 0xd864,
+ 0xb3d6, 0xfbf7, 0xd865, 0xfbfa, 0x89e7, 0xa07a, 0xfadc, 0xe146,
+ 0xb9bd, 0xfadd, 0x89e9, 0xbc46, 0xf1ef, 0xc6c9, 0xc958, 0xa568,
+ 0xfae2, 0x89eb, 0xb0d1, 0xfae3, 0xa453, 0xa465, 0xa4ce, 0xa4cd,
+ 0x90c8, 0xa4cf, 0x92da, 0x8959, 0x9cf5, 0xa8fb, 0xa8fa, 0xa8fc,
+ 0x895a, 0xfae7, 0x9fa2, 0xab71, 0xadee, 0xfaea, 0xe8fb, 0xc24f,
+ 0xa466, 0xa56a, 0xa579, 0xa574, 0xa56f, 0xa56e, 0xa575, 0xa573,
+ 0xa56c, 0xa57a, 0xa56d, 0xa569, 0xa578, 0xa577, 0xa576, 0xa56b,
+ 0xa572, 0xfaed, 0x8fad, 0xa571, 0xa57b, 0xa570, 0xfb59, 0xa653,
+ 0xa659, 0xa655, 0xa65b, 0xc9c5, 0xa658, 0xa64e, 0xa651, 0xa654,
+ 0xa650, 0xa657, 0xa65a, 0xa64f, 0xa652, 0xa656, 0xa65c, 0xfaef,
+ 0x96ef, 0x9dec, 0xca7e, 0xca7b, 0x9dca, 0xa767, 0xca7c, 0xa75b,
+ 0xa75d, 0xa775, 0xa770, 0xfd6d, 0x89ec, 0xcaa5, 0xca7d, 0xa75f,
+ 0xa761, 0xcaa4, 0xa768, 0xca78, 0xa774, 0xa776, 0xa75c, 0xa76d,
+ 0xfb44, 0xca76, 0xa773, 0x9de2, 0xa764, 0x8c75, 0xa76e, 0xa76f,
+ 0xca77, 0xa76c, 0xa76a, 0xa76b, 0xa771, 0xcaa1, 0xa75e, 0xa772,
+ 0xcaa3, 0xa766, 0xa763, 0xca7a, 0xa762, 0xcaa6, 0xa765, 0xa769,
+ 0x9ec0, 0x9e56, 0xa760, 0xcaa2, 0xca79, 0xcbeb, 0xcbea, 0xa94f,
+ 0xcbed, 0xcbef, 0xcbe4, 0xcbe7, 0xcbee, 0xa950, 0x9f79, 0x9ac7,
+ 0xcbe1, 0xcbe5, 0xfaf4, 0xcbe9, 0xce49, 0xa94b, 0xce4d, 0xa8fd,
+ 0xcbe6, 0xa8fe, 0xa94c, 0xa945, 0xa941, 0xcbe2, 0xa944, 0xa949,
+ 0xa952, 0xcbe3, 0xcbdc, 0xa943, 0xcbdd, 0xcbdf, 0xa946, 0x98a1,
+ 0xa948, 0xcbdb, 0xcbe0, 0xa951, 0xa94d, 0xcbe8, 0xa953, 0xfaf8,
+ 0xa94a, 0xcbde, 0xa947, 0x89f0, 0x9e47, 0xa942, 0xa940, 0x9df7,
+ 0xcbec, 0xa94e, 0x9fd3, 0x9aca, 0xce48, 0xcdfb, 0xce4b, 0x89f1,
+ 0xfaf9, 0xcdfd, 0xab78, 0xaba8, 0xab74, 0xaba7, 0xab7d, 0xaba4,
+ 0xab72, 0xcdfc, 0xce43, 0xaba3, 0xce4f, 0xaba5, 0x8e5a, 0xab79,
+ 0x89f2, 0xce45, 0xce42, 0xab77, 0x89f3, 0xcdfa, 0xaba6, 0xce4a,
+ 0xab7c, 0xce4c, 0xaba9, 0xab73, 0xab7e, 0xab7b, 0xce40, 0xaba1,
+ 0xce46, 0xce47, 0xab7a, 0xaba2, 0xab76, 0x925d, 0x8b51, 0x92e0,
+ 0xab75, 0xcdfe, 0x89f4, 0xce44, 0x9fd4, 0xce4e, 0xd144, 0xadfb,
+ 0xd0f1, 0x8a79, 0xd0f6, 0xadf4, 0xae40, 0xd0f4, 0xadef, 0xadf9,
+ 0xadfe, 0xd0fb, 0xadfa, 0xadfd, 0x89f5, 0xd0fe, 0xadf5, 0xd0f5,
+ 0xd142, 0xd143, 0xadf7, 0xd141, 0xadf3, 0xae43, 0xd0f8, 0xadf1,
+ 0x97a7, 0xd146, 0xd0f9, 0xd0fd, 0xadf6, 0xae42, 0xd0fa, 0xadfc,
+ 0xd140, 0xd147, 0xd4a1, 0x93ba, 0xd145, 0xae44, 0xadf0, 0xd0fc,
+ 0xd0f3, 0x9e58, 0xadf8, 0xd0f2, 0x89f6, 0xd0f7, 0x9e57, 0x89f7,
+ 0x8a41, 0xd0f0, 0xae41, 0x89f8, 0xd477, 0xfaf1, 0xb0e4, 0xd4a7,
+ 0xb0e2, 0xb0df, 0xd47c, 0xb0db, 0xd4a2, 0xb0e6, 0xd476, 0xd47b,
+ 0xd47a, 0xadf2, 0xb0e1, 0xd4a5, 0xd4a8, 0xd473, 0xb3e8, 0x89fa,
+ 0xd4a9, 0xb0e7, 0xb0d9, 0xb0d6, 0xd47e, 0xb0d3, 0xfb42, 0xd4a6,
+ 0xfabf, 0xb0da, 0xd4aa, 0xd474, 0xd4a4, 0xb0dd, 0xd475, 0xd478,
+ 0xd47d, 0xfba3, 0xb0de, 0xb0dc, 0xb0e8, 0xb0e3, 0xfaf7, 0xb0d7,
+ 0xb1d2, 0xb0d8, 0xd479, 0xb0e5, 0xb0e0, 0xd4a3, 0xb0d5, 0x9e4e,
+ 0xb0d4, 0x94dc, 0x95da, 0x9df8, 0x9f6a, 0xd471, 0xd472, 0xd86a,
+ 0x8ab7, 0xb3d7, 0xb3da, 0xd875, 0xb3ee, 0xd878, 0xb3d8, 0xd871,
+ 0xb3de, 0xb3e4, 0xb5bd, 0xfb46, 0xb3e2, 0xd86e, 0xb3ef, 0xb3db,
+ 0xb3e3, 0xd876, 0xdcd7, 0xd87b, 0xd86f, 0x8a46, 0xd866, 0xd873,
+ 0xd86d, 0xb3e1, 0xd879, 0xb3dd, 0xb3f1, 0xb3ea, 0xb3df, 0xb3dc,
+ 0xb3e7, 0xd87a, 0xd86c, 0xd872, 0xd874, 0xd868, 0xd877, 0xb3d9,
+ 0xd867, 0xfb47, 0xb3e0, 0xb3f0, 0xb3ec, 0xd869, 0xb3e6, 0x9148,
+ 0xb3ed, 0xb3e9, 0xb3e5, 0x92de, 0xd870, 0x8b53, 0x9df6, 0xb3eb,
+ 0x9bda, 0xdcd5, 0xdcd1, 0x9d7e, 0xdce0, 0xdcca, 0xdcd3, 0xb6e5,
+ 0xb6e6, 0xb6de, 0xdcdc, 0xb6e8, 0xdccf, 0xdcce, 0xdccc, 0xdcde,
+ 0xb6dc, 0xdcd8, 0xdccd, 0xb6df, 0xdcd6, 0xb6da, 0xdcd2, 0xdcd9,
+ 0xdcdb, 0x89fd, 0x99e4, 0xdcdf, 0xb6e3, 0xdccb, 0xb6dd, 0xdcd0,
+ 0x9e43, 0xb6d8, 0xb6e4, 0xdcda, 0xb6e0, 0xb6e1, 0xb6e7, 0xb6db,
+ 0xa25f, 0xb6d9, 0xdcd4, 0x9de9, 0x8f52, 0xb6e2, 0x9df5, 0x9df0,
+ 0xdcdd, 0x99e7, 0xb9cd, 0xb9c8, 0xe155, 0xe151, 0x8bbd, 0xe14b,
+ 0xb9c2, 0xb9be, 0xe154, 0xb9bf, 0xe14e, 0xe150, 0xe153, 0x9def,
+ 0xb9c4, 0xb9cb, 0xb9c5, 0xe149, 0xb9c6, 0xb9c7, 0xe14c, 0xb9cc,
+ 0x9fb7, 0xe14a, 0xe14f, 0xb9c3, 0xe148, 0xb9c9, 0xb9c1, 0xb9c0,
+ 0xe14d, 0xe152, 0x9dd0, 0xb9ca, 0x9feb, 0x8da9, 0x9dcf, 0x98e1,
+ 0x9de5, 0xe147, 0xbc4d, 0xe547, 0xe544, 0x9dc8, 0xbc47, 0xbc53,
+ 0xbc54, 0xbc4a, 0xe542, 0xbc4c, 0xe4f9, 0xbc52, 0xfb4f, 0xe546,
+ 0xbc49, 0xe548, 0xbc48, 0xe543, 0xe545, 0xbc4b, 0xe541, 0xe4fa,
+ 0xe4f7, 0x9deb, 0xd86b, 0xe4fd, 0xe4f6, 0xe4fc, 0xe4fb, 0xe4f8,
+ 0xfb54, 0xbc4f, 0xfb55, 0x9aa2, 0x8ad6, 0xbc4e, 0x9a5f, 0xbc50,
+ 0xe4fe, 0xbeb2, 0xe540, 0x9ef5, 0xe945, 0xe8fd, 0x8fb7, 0xbebe,
+ 0xe942, 0xbeb6, 0xbeba, 0xe941, 0xbeb9, 0xbeb5, 0xbeb8, 0xbeb3,
+ 0xbebd, 0xe943, 0xe8fe, 0xbebc, 0xe8fc, 0xbebb, 0xe944, 0xe940,
+ 0xbc51, 0xbebf, 0xe946, 0xbeb7, 0xbeb4, 0x9ad2, 0x9e6a, 0x9ee8,
+ 0xecc6, 0xecc8, 0xc07b, 0xecc9, 0xecc7, 0xecc5, 0xecc4, 0xc07d,
+ 0xecc3, 0xc07e, 0x8bbf, 0x91c2, 0x9d62, 0xecc1, 0xecc2, 0xc07a,
+ 0xc0a1, 0xc07c, 0x9260, 0xecc0, 0xc250, 0xefbc, 0xefba, 0xefbf,
+ 0xefbd, 0xefbb, 0xefbe, 0x925e, 0x91c1, 0x8ac5, 0x97a3, 0xc360,
+ 0xf1f2, 0xf1f3, 0xc456, 0xf1f4, 0xf1f0, 0xf1f5, 0xf1f1, 0xc251,
+ 0x8b6c, 0x8d7e, 0xf3fe, 0xf441, 0xc459, 0xf440, 0xc458, 0xc457,
+ 0x9c54, 0xc45a, 0xf5c5, 0xf5c6, 0x9dbd, 0xc4da, 0xc4d9, 0xc4db,
+ 0xf5c4, 0xf6d8, 0xf6d7, 0xc56d, 0xc56f, 0xc56e, 0xf6d9, 0xc5c8,
+ 0xf8a6, 0xc5f1, 0xf8a5, 0xf8ee, 0x9cc5, 0xc949, 0xa57d, 0xa57c,
+ 0xa65f, 0xa65e, 0xc9c7, 0xa65d, 0xc9c6, 0x895b, 0xa779, 0xcaa9,
+ 0xcaa8, 0xa777, 0xa77a, 0xfb5c, 0xcaa7, 0xfb5b, 0xa778, 0xfb57,
+ 0xcbf0, 0xcbf1, 0xa954, 0x98c7, 0xabaa, 0xfb5a, 0xd148, 0xd149,
+ 0xae45, 0xae46, 0xd4ac, 0xb0e9, 0xb0eb, 0xd4ab, 0xb0ea, 0xd87c,
+ 0xb3f2, 0xb6e9, 0xb6ea, 0xdce1, 0x9cee, 0xb9cf, 0xb9ce, 0xe549,
+ 0xe948, 0xe947, 0x92e2, 0xf96b, 0xa467, 0xc959, 0xc96e, 0xc96f,
+ 0xa662, 0xa666, 0xc9c9, 0xa664, 0xa663, 0xc9c8, 0xa665, 0xa661,
+ 0x94a7, 0xa660, 0xc9ca, 0xa7a6, 0x8ccc, 0xa7a3, 0x9bd4, 0xa77d,
+ 0xcaaa, 0xfb64, 0xfb76, 0xcaab, 0xfb60, 0xa7a1, 0xcaad, 0xa77b,
+ 0xcaae, 0xcaac, 0xa77e, 0xa7a2, 0xa7a5, 0xa7a4, 0xa77c, 0xcaaf,
+ 0x99e5, 0x9ac2, 0x91fb, 0xa073, 0xa959, 0xcbfe, 0xa95b, 0xa95a,
+ 0x9f72, 0xcc40, 0xa958, 0xa957, 0xcbf5, 0xcbf4, 0xcbf2, 0xcbf7,
+ 0xcbf6, 0xcbf3, 0xcbfc, 0xcbfd, 0xcbfa, 0xcbf8, 0xa956, 0x9fcc,
+ 0xcbfb, 0xa95c, 0xcc41, 0x98a5, 0x92e8, 0xcbf9, 0xabab, 0xa955,
+ 0x9bbc, 0x96f3, 0xabac, 0xce54, 0x92e7, 0xce5a, 0xfc67, 0xabb2,
+ 0xce58, 0xce5e, 0xce55, 0xce59, 0xce5b, 0xce5d, 0xce57, 0x8b7d,
+ 0xce56, 0xce51, 0xce52, 0xabad, 0x9bf4, 0xabaf, 0xabae, 0xce53,
+ 0xce5c, 0x9ef7, 0x9ec1, 0xabb1, 0x996f, 0xce50, 0xd153, 0xd152,
+ 0xd157, 0xd14e, 0x96f1, 0xd151, 0xd150, 0x8e41, 0xd154, 0xd158,
+ 0xae47, 0xae4a, 0x954a, 0xd14f, 0xd155, 0x97e6, 0xae49, 0xd14a,
+ 0xabb0, 0xd4ba, 0xd156, 0xd14d, 0xae48, 0xd14c, 0x96f5, 0xd4b1,
+ 0x92e6, 0x9f42, 0xb0ec, 0xb0f0, 0xd4c1, 0xd4af, 0xd4bd, 0xb0f1,
+ 0xd4bf, 0xfb67, 0xd4c5, 0xd4c9, 0xd4c0, 0xd4b4, 0xd4bc, 0x99a9,
+ 0xd4ca, 0xd4c8, 0xd4be, 0xd4b9, 0xd4b2, 0xd8a6, 0xd4b0, 0xb0f5,
+ 0xd4b7, 0xb0f6, 0xb0f2, 0xd4ad, 0xd4c3, 0xd4b5, 0xfae6, 0xd4b3,
+ 0xd4c6, 0xb0f3, 0xfb69, 0xd4cc, 0xb0ed, 0xb0ef, 0xd4bb, 0xd4b6,
+ 0xae4b, 0xb0ee, 0xd4b8, 0xd4c7, 0xd4cb, 0xd4c2, 0xd4c4, 0x97e5,
+ 0xd4ae, 0xd8a1, 0xd8aa, 0xd8a9, 0xb3fa, 0xd8a2, 0xb3fb, 0xb3f9,
+ 0x967d, 0xd8a4, 0xb3f6, 0xd8a8, 0xfb6c, 0xd8a3, 0xd8a5, 0xd87d,
+ 0xb3f4, 0xd8b2, 0xd8b1, 0xd8ae, 0xb3f3, 0xb3f7, 0xb3f8, 0xd14b,
+ 0xd8ab, 0xb3f5, 0xb0f4, 0xd8ad, 0xd87e, 0xd8b0, 0xd8af, 0x99a2,
+ 0xd8b3, 0xdcef, 0xd8ac, 0x9abb, 0x9a65, 0x944e, 0xd8a7, 0xdce7,
+ 0xb6f4, 0xb6f7, 0xb6f2, 0xdce6, 0xdcea, 0xdce5, 0xb6ec, 0xb6f6,
+ 0xdce2, 0xb6f0, 0xdce9, 0xb6ee, 0xb6ed, 0xdcec, 0xb6ef, 0xdcee,
+ 0xfb6e, 0xdceb, 0xb6eb, 0x99df, 0xb6f5, 0xdcf0, 0xdce4, 0xdced,
+ 0xdce3, 0x98e3, 0xb6f1, 0x9254, 0xb6f3, 0xdce8, 0xdcf1, 0x967b,
+ 0x8aaf, 0xe15d, 0xb9d0, 0xe163, 0xb9d5, 0xe15f, 0xe166, 0xe157,
+ 0xb9d7, 0xb9d1, 0xe15c, 0xbc55, 0xe15b, 0xe164, 0xb9d2, 0xb9d6,
+ 0xe15a, 0xe160, 0xe165, 0xe156, 0xb9d4, 0xe15e, 0xe162, 0xe168,
+ 0xe158, 0xe161, 0x8c77, 0xb9d3, 0xe167, 0xe159, 0x8baf, 0x9ebd,
+ 0xbc59, 0xe54b, 0xbc57, 0xbc56, 0xe54d, 0xe552, 0xe54e, 0xe551,
+ 0xbc5c, 0x9ee6, 0xbea5, 0xbc5b, 0xfb6f, 0xe54a, 0xe550, 0xbc5a,
+ 0xe54f, 0x8ee1, 0xe54c, 0xbc58, 0x9b7d, 0x9c7e, 0xe94d, 0xf9d9,
+ 0xe94f, 0xe94a, 0xbec1, 0xe94c, 0xbec0, 0xe94e, 0xbec3, 0xe950,
+ 0xbec2, 0xe949, 0xe94b, 0x92ea, 0xc0a5, 0xeccc, 0x8c78, 0xc0a4,
+ 0xeccd, 0xc0a3, 0xeccb, 0xc0a2, 0xecca, 0xc253, 0xc252, 0xf1f6,
+ 0xf1f8, 0xfb72, 0xf1f7, 0xc361, 0xc362, 0xfb71, 0xc363, 0xf442,
+ 0xc45b, 0xf7d3, 0xf7d2, 0xc5f2, 0xa468, 0xa4d0, 0xa7a7, 0x895c,
+ 0x98f0, 0x96f2, 0xce5f, 0xb3fc, 0xb3fd, 0xfb74, 0xdcf2, 0xb9d8,
+ 0xe169, 0xe553, 0x8bc1, 0xc95a, 0x895d, 0x89de, 0xcab0, 0x895e,
+ 0xc6ca, 0xcc42, 0xce60, 0xd159, 0xae4c, 0xfe42, 0xf1f9, 0xc4dc,
+ 0xa469, 0xa57e, 0xc970, 0xa667, 0xa668, 0xa95d, 0xfb7b, 0xb0f7,
+ 0xb9da, 0xb9db, 0xb9d9, 0xa46a, 0xa4d1, 0xa4d3, 0xa4d2, 0xc95b,
+ 0xa4d4, 0xa5a1, 0xc971, 0xa5a2, 0x895f, 0x8960, 0xa669, 0xa66a,
+ 0xc9cb, 0xa7a8, 0xcab1, 0xa961, 0xcc43, 0xa95f, 0xa960, 0xa95e,
+ 0xd15a, 0xabb6, 0xabb5, 0xabb7, 0xabb4, 0xce61, 0xa962, 0xabb3,
+ 0xae4d, 0xae4e, 0xae4f, 0xd4cd, 0xb3fe, 0xd8b4, 0xb0f8, 0x9bcd,
+ 0xb6f8, 0xb9dd, 0xb9dc, 0xe16a, 0xbc5d, 0xbec4, 0xefc0, 0xf6da,
+ 0xf7d4, 0xa46b, 0xa5a3, 0x9dd3, 0xa5a4, 0xc9d1, 0xa66c, 0xa66f,
+ 0xc9cf, 0xc9cd, 0xa66e, 0xc9d0, 0xc9d2, 0xc9cc, 0xa671, 0xa670,
+ 0xa66d, 0xa66b, 0xc9ce, 0x984c, 0xa7b3, 0xa7b0, 0xcab6, 0xcab9,
+ 0xcab8, 0xa7aa, 0xa7b2, 0x9752, 0xa7af, 0xcab5, 0xcab3, 0xa7ae,
+ 0x95c3, 0xa7a9, 0xa7ac, 0x9bb6, 0xcab4, 0xcabb, 0xcab7, 0xa7ad,
+ 0xa7b1, 0xa7b4, 0xcab2, 0xcaba, 0xa7ab, 0x9ab9, 0xa967, 0xa96f,
+ 0x97b3, 0xcc4f, 0xcc48, 0xa970, 0xcc53, 0xcc44, 0xcc4b, 0x9f74,
+ 0x92f1, 0xa966, 0xcc45, 0xa964, 0xcc4c, 0xcc50, 0xa963, 0xcc51,
+ 0xcc4a, 0xcc4d, 0x97df, 0xa972, 0xa969, 0xcc54, 0xcc52, 0xfba6,
+ 0xa96e, 0xa96c, 0xcc49, 0xa96b, 0xcc47, 0xcc46, 0xa96a, 0xa968,
+ 0xa971, 0xa96d, 0xa965, 0xcc4e, 0xabb9, 0xfbab, 0xabc0, 0xce6f,
+ 0xabb8, 0xce67, 0xce63, 0xce73, 0xce62, 0xabbb, 0xce6c, 0xabbe,
+ 0xabc1, 0xabbc, 0xce70, 0xabbf, 0x9877, 0xae56, 0xce76, 0xce64,
+ 0x9854, 0x95c5, 0xce66, 0xce6d, 0xce71, 0xce75, 0xce72, 0xce6b,
+ 0xce6e, 0x9d55, 0xfbb2, 0xce68, 0xabc3, 0xce6a, 0xce69, 0xce74,
+ 0xabba, 0xce65, 0xabc2, 0x957e, 0xabbd, 0xae5c, 0xd162, 0x9742,
+ 0xae5b, 0x94e6, 0xd160, 0xae50, 0x92f5, 0xae55, 0xd15f, 0xd15c,
+ 0xd161, 0xae51, 0xd15b, 0x8cc5, 0xae54, 0xae52, 0xd163, 0xae53,
+ 0xae57, 0x92fd, 0xae58, 0xfba2, 0xae5a, 0x9c51, 0xae59, 0x94e9,
+ 0x985c, 0x92f0, 0xd15d, 0xd15e, 0xd164, 0xd4d4, 0xb0f9, 0xd8c2,
+ 0xd4d3, 0xd4e6, 0xb140, 0x944c, 0xd4e4, 0xb0fe, 0xb0fa, 0xd4ed,
+ 0xd4dd, 0xd4e0, 0x916b, 0xb143, 0xd4ea, 0xd4e2, 0xb0fb, 0xb144,
+ 0xd4e7, 0xd4e5, 0xd4d6, 0xd4eb, 0xd4df, 0xd4da, 0x8b78, 0xd4d0,
+ 0xd4ec, 0xd4dc, 0xd4cf, 0x94e2, 0xb142, 0xd4e1, 0xd4ee, 0xd4de,
+ 0xd4d2, 0xd4d7, 0xd4ce, 0x984f, 0xb141, 0xfbb5, 0xd4db, 0xd4d8,
+ 0xb0fc, 0xd4d1, 0x9271, 0xd4e9, 0xb0fd, 0x9365, 0xd4d9, 0xd4d5,
+ 0x985b, 0xd4e8, 0x9850, 0xb440, 0xd8bb, 0x97bc, 0xd8b8, 0xd8c9,
+ 0xd8bd, 0xd8ca, 0x92f3, 0xb442, 0x9340, 0x984d, 0xd8c6, 0xd8c3,
+ 0x9572, 0xfdef, 0xd8c4, 0xd8c7, 0xd8cb, 0xd4e3, 0xd8cd, 0xdd47,
+ 0xfdc1, 0xb443, 0xd8ce, 0xd8b6, 0xd8c0, 0xfbba, 0xd8c5, 0x92eb,
+ 0xb441, 0xb444, 0xd8cc, 0xd8cf, 0xd8ba, 0xd8b7, 0xfc73, 0x97b7,
+ 0xd8b9, 0xd8be, 0xd8bc, 0xb445, 0xd8c8, 0xfbb4, 0xd8bf, 0xd8c1,
+ 0xd8b5, 0xdcfa, 0xdcf8, 0xb742, 0xb740, 0xdd43, 0xdcf9, 0xdd44,
+ 0xdd40, 0xdcf7, 0xdd46, 0xdcf6, 0xdcfd, 0xb6fe, 0xb6fd, 0xb6fc,
+ 0xdcfb, 0xdd41, 0xb6f9, 0xb741, 0x90a7, 0xdcf4, 0xdcfe, 0xdcf3,
+ 0xdcfc, 0xb6fa, 0xdd42, 0xdcf5, 0xb6fb, 0xdd45, 0x9741, 0x92f4,
+ 0xfbbc, 0xe16e, 0xb9e2, 0xb9e1, 0xb9e3, 0xe17a, 0xe170, 0xe176,
+ 0xe16b, 0xe179, 0xe178, 0xe17c, 0xe175, 0xb9de, 0xe174, 0xb9e4,
+ 0x9577, 0xe16d, 0xb9df, 0xe17b, 0xb9e0, 0xe16f, 0xe172, 0xe177,
+ 0xe171, 0xe16c, 0x9ee2, 0x8f78, 0xe173, 0xe555, 0xbc61, 0xe558,
+ 0xe557, 0xe55a, 0xe55c, 0xf9dc, 0xbc5f, 0xe556, 0x9672, 0xe554,
+ 0xe55d, 0xe55b, 0xe559, 0xe55f, 0xe55e, 0xbc63, 0xbc5e, 0xbc60,
+ 0xbc62, 0x9eb5, 0xe560, 0xe957, 0x964b, 0xe956, 0xe955, 0x8cac,
+ 0xe958, 0xe951, 0xe952, 0xe95a, 0xe953, 0xbec5, 0xe95c, 0xa0fa,
+ 0xe95b, 0xe954, 0xecd1, 0xc0a8, 0xeccf, 0xecd4, 0xecd3, 0xe959,
+ 0xc0a7, 0x9575, 0xecd2, 0xecce, 0xecd6, 0xecd5, 0xc0a6, 0xecd0,
+ 0xbec6, 0xc254, 0xefc1, 0xf1fa, 0xf1fb, 0xf1fc, 0xc45c, 0x90da,
+ 0xc45d, 0x9367, 0xf443, 0xfea4, 0xf5c8, 0xf5c7, 0x90df, 0xf6db,
+ 0xf6dc, 0xf7d5, 0xf8a7, 0x9354, 0xa46c, 0xa46d, 0xa46e, 0xa4d5,
+ 0xa5a5, 0xc9d3, 0xa672, 0xa673, 0xa7b7, 0xa7b8, 0xa7b6, 0xa7b5,
+ 0xa973, 0xcc55, 0xa975, 0xa974, 0xcc56, 0x8961, 0x8bb4, 0xabc4,
+ 0xae5d, 0xd165, 0x9dc0, 0xd4f0, 0xb145, 0xb447, 0xd4ef, 0xb446,
+ 0x8e48, 0xb9e5, 0xfbc5, 0xe17d, 0xbec7, 0xc0a9, 0xecd7, 0xfbc7,
+ 0xc45e, 0xc570, 0xc6cb, 0xc972, 0xfa79, 0xa5a6, 0xc973, 0xa676,
+ 0xa674, 0xa675, 0xa677, 0xa7ba, 0xa7b9, 0xcabc, 0xa7bb, 0x9e67,
+ 0xcabd, 0xcc57, 0xcc58, 0x8cd9, 0xa976, 0xa978, 0xa97a, 0xa977,
+ 0xa97b, 0xa979, 0xfbd2, 0x8962, 0x8963, 0xabc8, 0xabc5, 0xabc7,
+ 0xabc9, 0xabc6, 0xd166, 0xce77, 0xfc7d, 0xd168, 0xd167, 0xae63,
+ 0xae5f, 0xae60, 0xae62, 0xae64, 0xae61, 0xae66, 0xae65, 0xb14a,
+ 0xd4f2, 0xd4f1, 0xb149, 0x9f6b, 0xb148, 0xb147, 0xb14b, 0xb146,
+ 0xd8d5, 0xd8d2, 0xb449, 0xd8d1, 0xd8d6, 0xb44b, 0xd8d4, 0xb448,
+ 0xb44a, 0xd8d3, 0xfbcc, 0xdd48, 0xfeae, 0xdd49, 0xdd4a, 0xb9e6,
+ 0xb9ee, 0xe17e, 0xb9e8, 0xb9ec, 0xe1a1, 0xb9ed, 0xb9e9, 0xb9ea,
+ 0xb9e7, 0xb9eb, 0xbc66, 0xd8d0, 0xbc67, 0xbc65, 0xbc64, 0xe95d,
+ 0xbec8, 0xecd8, 0xecd9, 0xfbd1, 0xc364, 0xc45f, 0xa46f, 0xa678,
+ 0xfb75, 0xabca, 0xd169, 0xae67, 0xfbd4, 0xb14e, 0xb14d, 0xb14c,
+ 0xb44c, 0xb44d, 0xd8d7, 0xb9ef, 0xbec9, 0xa470, 0xc95c, 0xa4d6,
+ 0xc974, 0xfbd6, 0xfbd8, 0xc9d4, 0xa679, 0xa97c, 0x8b5d, 0x934c,
+ 0xdd4b, 0x9ae2, 0xa471, 0x8bc9, 0xa4d7, 0xc9d5, 0xcabe, 0xcabf,
+ 0xa7bc, 0xd8d8, 0xb44e, 0xdd4c, 0xc0aa, 0xa472, 0xa4a8, 0xa4d8,
+ 0xc975, 0xa5a7, 0xa7c0, 0xa7bf, 0xa7bd, 0xa7be, 0xcc59, 0xa97e,
+ 0xa9a1, 0xcc5a, 0xa97d, 0xfbdb, 0x9fc9, 0xabce, 0xce78, 0xabcd,
+ 0xabcb, 0xabcc, 0xae6a, 0xae68, 0x9f44, 0xd16b, 0xae69, 0xd16a,
+ 0xae5e, 0xd4f3, 0xb150, 0xb151, 0x98ed, 0xb14f, 0xb9f0, 0xe1a2,
+ 0xbc68, 0xbc69, 0xe561, 0xc0ab, 0xefc2, 0xefc3, 0xc4dd, 0xf8a8,
+ 0xc94b, 0xa4d9, 0xa473, 0xc977, 0xc976, 0xa67a, 0xc9d7, 0xc9d8,
+ 0xc9d6, 0xc9d9, 0xfbdd, 0xcac7, 0xcac2, 0xcac4, 0xcac6, 0xcac3,
+ 0xa7c4, 0xcac0, 0xcac1, 0xa7c1, 0xa7c2, 0xcac5, 0xcac8, 0xa7c3,
+ 0xcac9, 0x8df2, 0x8964, 0xfdf2, 0xcc68, 0x934d, 0xcc62, 0xcc5d,
+ 0xa9a3, 0xcc65, 0xcc63, 0xcc5c, 0xcc69, 0xcc6c, 0xcc67, 0xcc60,
+ 0xa9a5, 0xcc66, 0xa9a6, 0xcc61, 0xcc64, 0xcc5b, 0xcc5f, 0xcc6b,
+ 0xa9a7, 0xa9a8, 0xcc5e, 0xcc6a, 0xa9a2, 0xa9a4, 0xfbe7, 0xa0f2,
+ 0x9868, 0xceab, 0xcea4, 0xceaa, 0xcea3, 0xcea5, 0xce7d, 0xce7b,
+ 0xceac, 0xcea9, 0xce79, 0x9f58, 0xabd0, 0xcea7, 0xcea8, 0xcea6,
+ 0xce7c, 0xce7a, 0xabcf, 0xcea2, 0xce7e, 0xcea1, 0xcead, 0x8d73,
+ 0xae6f, 0xfbde, 0xae6e, 0xd16c, 0xae6b, 0xd16e, 0xfbdf, 0xae70,
+ 0xd16f, 0xae73, 0x8c48, 0xae71, 0xd170, 0xceae, 0xd172, 0xae6d,
+ 0xae6c, 0xd16d, 0xd171, 0xae72, 0xb153, 0xb152, 0xd4f5, 0xd4f9,
+ 0xd4fb, 0xb154, 0xd4fe, 0xfbe3, 0xb158, 0xd541, 0xb15a, 0x8da8,
+ 0xb156, 0xb15e, 0xfbe4, 0xb15b, 0xd4f7, 0xb155, 0xd4f6, 0xd4f4,
+ 0xd543, 0xd4f8, 0xb157, 0xd542, 0xb15c, 0xd4fd, 0xd4fc, 0xb15d,
+ 0xd4fa, 0xb159, 0x9c75, 0xd544, 0x9878, 0xd540, 0xd8e7, 0xd8ee,
+ 0xd8e3, 0xb451, 0xd8df, 0xd8ef, 0xd8d9, 0xd8ec, 0xd8ea, 0xd8e4,
+ 0xd8ed, 0xd8e6, 0x8d60, 0xd8de, 0xd8f0, 0xd8dc, 0xd8e9, 0xd8da,
+ 0xd8f1, 0xfbe5, 0xb452, 0x8d61, 0xd8eb, 0xdd4f, 0xd8dd, 0xb44f,
+ 0xd8e1, 0xb450, 0xd8e0, 0xd8e5, 0xd8e2, 0x8d62, 0xa0a1, 0xd8e8,
+ 0x9c40, 0xdd53, 0xdd56, 0xdd4e, 0xdd50, 0xdd55, 0xdd54, 0xb743,
+ 0xd8db, 0xdd52, 0xb744, 0x98ad, 0xdd4d, 0xdd51, 0x9eea, 0xe1a9,
+ 0xe1b0, 0xe1a7, 0x8cd4, 0xe1ae, 0xe1a5, 0xe1ad, 0xe1b1, 0xe1a4,
+ 0xe1a8, 0xe1a3, 0xb9f1, 0x9ceb, 0xe1a6, 0xb9f2, 0xe1ac, 0xe1ab,
+ 0xe1aa, 0xfbe0, 0xe1af, 0x9f51, 0xe565, 0xe567, 0xbc6b, 0xe568,
+ 0xe563, 0xe562, 0xe56c, 0xe56a, 0xbc6a, 0xe56d, 0xe564, 0xe569,
+ 0xe56b, 0xe566, 0x8d65, 0xe961, 0xe966, 0xe960, 0xe965, 0x9cf1,
+ 0xe95e, 0xe968, 0xe964, 0xe969, 0xe963, 0xe95f, 0xe967, 0xe96a,
+ 0xe962, 0xfc58, 0xecda, 0xc0af, 0x8d66, 0xc0ad, 0xc0ac, 0xc0ae,
+ 0xefc4, 0x9654, 0xf172, 0xf1fd, 0xf444, 0xf445, 0xc460, 0xf5c9,
+ 0xc4de, 0xf5ca, 0xf6de, 0xc572, 0xc571, 0xf6dd, 0xc5c9, 0xfbe8,
+ 0xf7d6, 0xc6cc, 0xa474, 0xa67b, 0xc9da, 0xcaca, 0xa8b5, 0xb15f,
+ 0xa475, 0xa5aa, 0xa5a9, 0xa5a8, 0xa7c5, 0xae74, 0xdd57, 0xa476,
+ 0xa477, 0xa478, 0xa4da, 0x9fce, 0xabd1, 0xceaf, 0xb453, 0xa479,
+ 0xc95d, 0xa5ab, 0xa5ac, 0xc978, 0xa67c, 0xfbfc, 0xcacb, 0x9ae4,
+ 0xa7c6, 0xcacc, 0xa9ae, 0x9f75, 0xcc6e, 0xa9ac, 0xa9ab, 0xcc6d,
+ 0xa9a9, 0xcc6f, 0xa9aa, 0xa9ad, 0xabd2, 0xabd4, 0xceb3, 0xceb0,
+ 0xceb1, 0xceb2, 0xceb4, 0xabd3, 0xd174, 0xd173, 0xae76, 0xae75,
+ 0xfbf1, 0xb162, 0xd546, 0xb161, 0xb163, 0xb160, 0xb455, 0xd545,
+ 0xb456, 0xd8f3, 0x8d69, 0xb457, 0xd8f2, 0xb454, 0x934f, 0xdd5a,
+ 0xdd5c, 0xb745, 0xdd5b, 0xdd59, 0xdd58, 0xe1b4, 0xb9f7, 0xb9f5,
+ 0xb9f6, 0xe1b2, 0xe1b3, 0xb9f3, 0xe571, 0xe56f, 0x934e, 0xbc6d,
+ 0xe570, 0xbc6e, 0xbc6c, 0xb9f4, 0xe96d, 0xe96b, 0xe96c, 0xe56e,
+ 0xecdc, 0xc0b0, 0xecdb, 0xefc5, 0xefc6, 0xe96e, 0xf1fe, 0xa47a,
+ 0xa5ad, 0xa67e, 0xc9db, 0xa67d, 0xa9af, 0xb746, 0xfbf4, 0xa4db,
+ 0xa5ae, 0xabd5, 0xb458, 0xc6ce, 0xc979, 0xc97a, 0xfbc3, 0xc9dc,
+ 0x8965, 0xa7c8, 0xcad0, 0xcace, 0xa7c9, 0xcacd, 0xcacf, 0xcad1,
+ 0xa7c7, 0x8c7a, 0xa9b3, 0xa9b4, 0xa9b1, 0x8c7b, 0xa9b0, 0xceb8,
+ 0xa9b2, 0xabd6, 0xceb7, 0xceb9, 0xceb6, 0xceba, 0xabd7, 0xae79,
+ 0xd175, 0xd177, 0xae77, 0xd178, 0xae78, 0xd176, 0xceb5, 0xd547,
+ 0xd54a, 0xd54b, 0xd548, 0xb167, 0xb166, 0xb164, 0xb165, 0xd549,
+ 0x8d6a, 0xb168, 0xb45a, 0xb45b, 0xb45c, 0xdd5d, 0xdd5f, 0xdd61,
+ 0xb748, 0xb747, 0xb459, 0xdd60, 0xdd5e, 0x9353, 0xe1b8, 0x9dfb,
+ 0xe1b6, 0xe1bc, 0xb9f8, 0xe1bd, 0xe1ba, 0xb9f9, 0xe1b7, 0xe1b5,
+ 0xe1bb, 0xbc70, 0xe573, 0xe1b9, 0xbc72, 0xe574, 0xbc71, 0xbc74,
+ 0xe575, 0xbc6f, 0xbc73, 0xe973, 0xe971, 0xe970, 0xe972, 0xe96f,
+ 0xc366, 0xf446, 0xf447, 0xf5cb, 0xf6df, 0xc655, 0xfbfd, 0xa9b5,
+ 0xa7ca, 0x9059, 0xfc40, 0xabd8, 0xfc41, 0xfc43, 0xa47b, 0xa4dc,
+ 0xa5af, 0xc9dd, 0xa7cb, 0xcad2, 0xcebb, 0xabd9, 0xb9fa, 0xa47c,
+ 0x9361, 0xfc46, 0x9362, 0xa6a1, 0xb749, 0xa47d, 0xa4dd, 0xa4de,
+ 0xa5b1, 0xa5b0, 0xc9de, 0xa6a2, 0xcad3, 0xa7cc, 0xcc71, 0xcc72,
+ 0xcc73, 0x8d6b, 0xa9b6, 0xa9b7, 0xcc70, 0xa9b8, 0xabda, 0xcebc,
+ 0xd17a, 0xae7a, 0xd179, 0xb169, 0xd54c, 0xb16a, 0xd54d, 0xfc4c,
+ 0xb45d, 0xdd62, 0xe1bf, 0xe1be, 0xb9fb, 0xbc75, 0xe576, 0xbeca,
+ 0xe974, 0xc0b1, 0x95b8, 0xc573, 0xf7d8, 0xc6d0, 0x8bca, 0xcc74,
+ 0xcebd, 0xb16b, 0xd8f4, 0xb74a, 0x987a, 0xc255, 0xc6d1, 0xa7ce,
+ 0xfc51, 0xa7cd, 0xabdb, 0xd17b, 0xb16d, 0xb343, 0xb16e, 0xb16c,
+ 0xb45e, 0xe1c0, 0xb9fc, 0xbc76, 0xfc54, 0xc94c, 0xc9df, 0xcad5,
+ 0xa7cf, 0xcad4, 0xa7d0, 0xfaaf, 0xa9bc, 0xcc77, 0xcc76, 0xa9bb,
+ 0xa9b9, 0xa9ba, 0xcc75, 0x8d6c, 0xabdd, 0xcebe, 0xabe0, 0xabdc,
+ 0xabe2, 0xabde, 0xabdf, 0xabe1, 0xae7d, 0xae7c, 0xae7b, 0xd54f,
+ 0xb16f, 0xb172, 0xb170, 0xd54e, 0xb175, 0xb171, 0xd550, 0xb174,
+ 0xb173, 0xfa61, 0xd8f6, 0xd8f5, 0xfc57, 0xb461, 0xb45f, 0xb460,
+ 0xd8f7, 0xb74b, 0xdd64, 0xb74c, 0xdd63, 0x9b70, 0xe577, 0xbc78,
+ 0xe1c1, 0xbc77, 0xb9fd, 0xa051, 0xecde, 0xe975, 0xc0b2, 0xecdd,
+ 0xf240, 0xf448, 0xf449, 0x8c7c, 0xa4df, 0x8bcb, 0xa5b2, 0xc97b,
+ 0xa7d2, 0xa7d4, 0xc9e2, 0xcad8, 0xcad7, 0xcad6, 0xc9e1, 0xc9e0,
+ 0xa6a4, 0xa7d3, 0xa7d1, 0xa6a3, 0x936e, 0xa9bd, 0xcc78, 0xfcd5,
+ 0xa9be, 0xcadd, 0xcadf, 0xcade, 0xcc79, 0xcada, 0xa7d8, 0xa7d6,
+ 0xcad9, 0xcadb, 0xcae1, 0xa7d5, 0xcadc, 0xcae5, 0xa9c0, 0xcae2,
+ 0xa7d7, 0xcae0, 0xcae3, 0xa9bf, 0xa9c1, 0xcae4, 0xccaf, 0xcca2,
+ 0xcc7e, 0xccae, 0xcca9, 0xabe7, 0xa9c2, 0xccaa, 0xccad, 0xabe3,
+ 0xccac, 0xa9c3, 0xa9c8, 0xa9c6, 0xcca3, 0xcc7c, 0xcca5, 0xa9cd,
+ 0xccb0, 0xabe4, 0xcca6, 0xabe5, 0xa9c9, 0xcca8, 0xfca9, 0xcecd,
+ 0xabe6, 0xcc7b, 0xa9ca, 0xabe8, 0xa9cb, 0xa9c7, 0xa9cc, 0xcca7,
+ 0xcc7a, 0xccab, 0xa9c4, 0xfc61, 0xcc7d, 0xcca4, 0xcca1, 0xa9c5,
+ 0xcebf, 0xcec0, 0x8966, 0xceca, 0xd1a1, 0xcecb, 0xabee, 0xcece,
+ 0xcec4, 0xabed, 0xcec6, 0xcec7, 0xfacb, 0xcec9, 0xabe9, 0xaea3,
+ 0xf9da, 0xcec5, 0xcec1, 0xaea4, 0xcecf, 0xae7e, 0xd17d, 0xcec8,
+ 0xd17c, 0xcec3, 0xcecc, 0xabec, 0xaea1, 0xabf2, 0xaea2, 0xced0,
+ 0xd17e, 0xabeb, 0xaea6, 0xabf1, 0xabf0, 0xabef, 0xaea5, 0xced1,
+ 0xaea7, 0xabea, 0xcec2, 0x937a, 0xa0e0, 0x936b, 0xb176, 0xd1a4,
+ 0xd1a6, 0xd1a8, 0xaea8, 0xaeae, 0xd553, 0xd1ac, 0xd1a3, 0xb178,
+ 0xd551, 0xaead, 0xaeab, 0xd1ae, 0xd552, 0xd1a5, 0xaeac, 0xd1a9,
+ 0xaeaf, 0xd1ab, 0xaeaa, 0xd1aa, 0xd1ad, 0xd1a7, 0xfc6b, 0xaea9,
+ 0xb179, 0xd1a2, 0xb177, 0xa0dc, 0x9468, 0xb17a, 0xd555, 0xd55e,
+ 0xb464, 0xfc6d, 0xb17c, 0xb1a3, 0xb465, 0xd560, 0xb1aa, 0xd8f9,
+ 0xd556, 0xb1a2, 0xb1a5, 0xb17e, 0xd554, 0xd562, 0xd565, 0xd949,
+ 0xd563, 0xd8fd, 0xb1a1, 0xb1a8, 0xb1ac, 0xd55d, 0xd8f8, 0xd561,
+ 0xb17b, 0xd8fa, 0xd564, 0xd8fc, 0xd559, 0xb462, 0xd557, 0xd558,
+ 0xb1a7, 0x8d71, 0xb1a6, 0xd55b, 0xb1ab, 0xd55f, 0xb1a4, 0xd55c,
+ 0xfd64, 0xb1a9, 0xb466, 0xb463, 0xd8fb, 0x99ba, 0xd55a, 0xb17d,
+ 0x9ad0, 0x9a61, 0xa0e5, 0xb46b, 0xb46f, 0xd940, 0xb751, 0xb46d,
+ 0xd944, 0xb471, 0xdd65, 0xd946, 0xb753, 0xb469, 0xb46c, 0xd947,
+ 0xa05b, 0xd948, 0xd94e, 0xb473, 0xb754, 0xd94a, 0xd94f, 0xd943,
+ 0xb75e, 0x96ac, 0xb755, 0xb472, 0xd941, 0xd950, 0x9740, 0xb75d,
+ 0xb470, 0xb74e, 0xd94d, 0xb474, 0xd945, 0xd8fe, 0xb46a, 0xd942,
+ 0xd94b, 0x9ef1, 0xb74d, 0xb752, 0xb467, 0xd94c, 0xb750, 0x8c4d,
+ 0xb468, 0xb75c, 0xe1c3, 0xdd70, 0xdd68, 0xe1c2, 0xdd6c, 0xdd6e,
+ 0x9f7e, 0xdd6b, 0xb75b, 0xdd6a, 0xb75f, 0xe1d2, 0x8d72, 0xb75a,
+ 0xba40, 0xdd71, 0xe1c4, 0xfc76, 0xb758, 0xdd69, 0xdd6d, 0xb9fe,
+ 0xb74f, 0xdd66, 0xdd67, 0xba41, 0xb757, 0xb759, 0xb756, 0xdd6f,
+ 0x96a9, 0xe1c8, 0xe1c9, 0xe1ce, 0xbc7d, 0xe1d5, 0xba47, 0xa06e,
+ 0xba46, 0xe1d0, 0xfcaa, 0xbc7c, 0xe1c5, 0xba45, 0xfbcd, 0xe1d4,
+ 0xba43, 0xba44, 0xfc74, 0xe1d1, 0xe5aa, 0xbc7a, 0xb46e, 0xe1d3,
+ 0xbca3, 0xe1cb, 0xbc7b, 0xa074, 0xbca2, 0xe1c6, 0xe1ca, 0xe1c7,
+ 0xe1cd, 0xba48, 0xbc79, 0xba42, 0xe57a, 0xe1cf, 0xbca1, 0xa071,
+ 0xbca4, 0xe1cc, 0xfc79, 0xbc7e, 0xe579, 0xfc7c, 0xe57e, 0xbece,
+ 0xe578, 0xe9a3, 0xe5a9, 0xbca8, 0xbca6, 0xbecc, 0xe5a6, 0xe5a2,
+ 0xbcac, 0x9c50, 0xe978, 0x9379, 0x9378, 0xbcaa, 0xe5a1, 0xa0dd,
+ 0xe976, 0xe5a5, 0xe5a8, 0xe57d, 0xbcab, 0xbca5, 0xe977, 0xbecd,
+ 0xe5a7, 0xbca7, 0xbca9, 0xe5a4, 0xbcad, 0xe5a3, 0xe57c, 0xe57b,
+ 0xbecb, 0xe5ab, 0xe97a, 0xece0, 0xbed0, 0x8d75, 0xe9a2, 0x8d76,
+ 0xe97e, 0xece1, 0xbed1, 0xe9a1, 0x9374, 0xe97c, 0xc0b4, 0xecdf,
+ 0xe979, 0xe97b, 0xc0b5, 0xbed3, 0xc0b3, 0xbed2, 0xc0b7, 0xe97d,
+ 0xbecf, 0x8d77, 0xfca5, 0xfca2, 0xefcf, 0xefc7, 0x90c3, 0xece7,
+ 0xefc8, 0xece3, 0xa079, 0xc256, 0xece5, 0xece4, 0xc0b6, 0xece2,
+ 0xece6, 0xefd0, 0xefcc, 0xefce, 0xefc9, 0xefca, 0xefcd, 0xefcb,
+ 0xc367, 0xc36a, 0xc369, 0xc368, 0xc461, 0xf44a, 0xc462, 0xf241,
+ 0xc4df, 0xf5cc, 0xc4e0, 0xc574, 0xc5ca, 0xf7d9, 0xf7da, 0xf7db,
+ 0xf9ba, 0xa4e0, 0xc97c, 0xa5b3, 0xa6a6, 0xa6a7, 0xa6a5, 0xa6a8,
+ 0xa7da, 0xa7d9, 0xccb1, 0xa9cf, 0xa9ce, 0xd1af, 0xb1ad, 0xb1ae,
+ 0xb475, 0xdd72, 0xb760, 0xb761, 0xdd74, 0xdd76, 0xdd75, 0xe1d7,
+ 0xe1d6, 0xba49, 0xe1d8, 0x8d79, 0xe5ac, 0xbcae, 0xbed4, 0xc0b8,
+ 0xc257, 0xc0b9, 0xa4e1, 0x8bfc, 0xa076, 0xcae6, 0xccb2, 0xa9d1,
+ 0xa9d0, 0xa9d2, 0xabf3, 0xced2, 0xced3, 0xd1b0, 0xaeb0, 0xb1af,
+ 0xb476, 0xd951, 0xa4e2, 0x8bcd, 0xa47e, 0xa4e3, 0xc97d, 0xa5b7,
+ 0xa5b6, 0xa5b4, 0xa5b5, 0xa6ab, 0xc9e9, 0xc9eb, 0xa6aa, 0xc9e3,
+ 0xc9e4, 0xc9ea, 0xc9e6, 0xc9e8, 0xa6a9, 0xc9e5, 0xc9ec, 0xc9e7,
+ 0x9f5a, 0xa7e1, 0xa7ea, 0xa7e8, 0xcaf0, 0xcaed, 0xcaf5, 0xa7e6,
+ 0xcaf6, 0xa7df, 0xcaf3, 0xa7e5, 0xcaef, 0xcaee, 0xa7e3, 0xcaf4,
+ 0xa7e4, 0xa9d3, 0xa7de, 0xcaf1, 0x9ff4, 0xcae7, 0xa7db, 0x9fba,
+ 0xa7ee, 0xcaec, 0xcaf2, 0xa7e0, 0xa7e2, 0xcae8, 0xcae9, 0xcaea,
+ 0x8d7a, 0xa7ed, 0xa7e7, 0xa7ec, 0xcaeb, 0xa7eb, 0xa7dd, 0xa7dc,
+ 0xa7e9, 0x9e45, 0x93b0, 0xa075, 0xa9e1, 0xccbe, 0xccb7, 0xa9dc,
+ 0xa9ef, 0xccb3, 0xccba, 0xccbc, 0xccbf, 0xa9ea, 0xccbb, 0xccb4,
+ 0xa9e8, 0xccb8, 0xccc0, 0xa9d9, 0xccbd, 0xa9e3, 0xa9e2, 0xccb6,
+ 0xa9d7, 0xa9d8, 0x9b46, 0xa9d6, 0xfcae, 0xa9ee, 0xa9e6, 0xa9e0,
+ 0xa9d4, 0xccb9, 0xa9df, 0xa9d5, 0xa9e7, 0xa9f0, 0xced4, 0xa9e4,
+ 0xccb5, 0xa9da, 0xa9dd, 0xa9de, 0xfcb0, 0xa9ec, 0xa9ed, 0xa9eb,
+ 0xa9e5, 0xa9e9, 0xa9db, 0xabf4, 0xfa51, 0x8d7b, 0xceda, 0xac41,
+ 0xabf8, 0xabfa, 0xac40, 0xcee6, 0xabfd, 0xd1b1, 0xaeb1, 0xac43,
+ 0xced7, 0xcedf, 0xabfe, 0xcede, 0xcedb, 0xcee3, 0xcee5, 0xabf7,
+ 0xabfb, 0xac42, 0xaeb3, 0xcee0, 0xabf9, 0xac45, 0xced9, 0xabfc,
+ 0xaeb2, 0xabf6, 0xced6, 0xcedd, 0xced5, 0xced8, 0xcedc, 0xd1b2,
+ 0xac44, 0xcee1, 0xcee2, 0xcee4, 0xabf5, 0x8d7c, 0xaec1, 0xd1be,
+ 0xaebf, 0xaec0, 0xd1b4, 0xd1c4, 0x9ed6, 0xaeb6, 0x93ac, 0xd566,
+ 0xd1c6, 0xd1c0, 0x9f5b, 0xd1b7, 0x93a9, 0xd1c9, 0xd1ba, 0xaebc,
+ 0xd57d, 0xd1bd, 0xaebe, 0xaeb5, 0xd1cb, 0xd1bf, 0xaeb8, 0xd1b8,
+ 0xd1b5, 0xd1b6, 0xaeb9, 0xd1c5, 0xd1cc, 0xaebb, 0xd1bc, 0xd1bb,
+ 0xaec3, 0xaec2, 0xaeb4, 0xaeba, 0xaebd, 0xd1c8, 0xd1c2, 0xaeb7,
+ 0xd1b3, 0xd1ca, 0xd1c1, 0xd1c3, 0xd1c7, 0xa07c, 0xd567, 0xb1b7,
+ 0xb1cb, 0xb1ca, 0xb1bf, 0xfcb2, 0xd579, 0xd575, 0xd572, 0xd5a6,
+ 0xb1ba, 0xb1b2, 0xd577, 0xb4a8, 0xb1b6, 0xd5a1, 0x8ac1, 0xb1cc,
+ 0xb1c9, 0xd57b, 0xd56a, 0x9fb4, 0xb1c8, 0xd5a3, 0xd569, 0xb1bd,
+ 0xb1c1, 0xd5a2, 0xd573, 0xb1c2, 0xb1bc, 0xd568, 0xfcac, 0xb478,
+ 0xd5a5, 0xd571, 0xb1c7, 0xd574, 0xd5a4, 0xb1c6, 0xd952, 0xb1b3,
+ 0xd56f, 0xb1b8, 0xb1c3, 0xb1be, 0xd578, 0xd56e, 0xd56c, 0xd57e,
+ 0xb1b0, 0xb1c4, 0xb1b4, 0xb477, 0xd57c, 0xb1b5, 0xb1b1, 0xb1c0,
+ 0xb1bb, 0xb1b9, 0xd570, 0xb1c5, 0xd56d, 0xd57a, 0xd576, 0xd954,
+ 0xd953, 0x9e4c, 0xd56b, 0xd964, 0xb47a, 0x8fc5, 0xd96a, 0xd959,
+ 0xd967, 0xdd77, 0xb47d, 0xd96b, 0xd96e, 0xb47c, 0xd95c, 0xd96d,
+ 0xd96c, 0xb47e, 0xd955, 0xb479, 0xb4a3, 0x93ad, 0xb4a1, 0xd969,
+ 0xd95f, 0xb4a5, 0xd970, 0xd968, 0xd971, 0xb4ad, 0xb4ab, 0xd966,
+ 0xd965, 0x9dc3, 0xd963, 0xd95d, 0xb4a4, 0x8da2, 0xb4a2, 0xd1b9,
+ 0xd956, 0x9d4a, 0xddb7, 0xd957, 0xb47b, 0xb4aa, 0xdd79, 0xb4a6,
+ 0xb4a7, 0xd958, 0xd96f, 0xdd78, 0xd960, 0xd95b, 0xb4a9, 0xd961,
+ 0xd95e, 0xfcb6, 0xb4ae, 0x8da3, 0x9e4b, 0x9e4d, 0xb770, 0x8da4,
+ 0xdd7c, 0xddb1, 0xddb6, 0xddaa, 0xb76c, 0xddbb, 0xb769, 0xdd7a,
+ 0xdd7b, 0xb762, 0xb76b, 0xdda4, 0xb76e, 0xb76f, 0xdda5, 0xddb2,
+ 0xddb8, 0xb76a, 0xb764, 0xdda3, 0xdd7d, 0xddba, 0xdda8, 0xdda9,
+ 0xdd7e, 0xddb4, 0xddab, 0xddb5, 0xddad, 0xb765, 0xe1d9, 0xb768,
+ 0xb766, 0xddb9, 0xddb0, 0xddac, 0x8afd, 0xdda1, 0xba53, 0xddaf,
+ 0xb76d, 0xdda7, 0xfcb5, 0xdda6, 0xfcc3, 0x93b2, 0xb767, 0xb763,
+ 0xe1ee, 0xddb3, 0xddae, 0xdda2, 0xe1e9, 0xe1da, 0xe1e5, 0xe1ec,
+ 0xba51, 0xb4ac, 0xe1ea, 0xba4c, 0xba4b, 0xe1f1, 0x8da5, 0xe1db,
+ 0xe1e8, 0xe1dc, 0xe1e7, 0xba4f, 0xe1eb, 0xd962, 0xe1f2, 0xe1e3,
+ 0xba52, 0xe5ba, 0xbcaf, 0xe1f0, 0xe1ef, 0xba54, 0xe5ad, 0xbcb0,
+ 0xe5ae, 0x93a1, 0xe1df, 0xe1e0, 0xe1dd, 0xe1e2, 0xe1de, 0xe1f3,
+ 0xba4e, 0xbcb1, 0xba50, 0xba55, 0x8ac6, 0xe1e1, 0xe1ed, 0xe1e6,
+ 0xe5b1, 0xba4a, 0xbcb4, 0xe9aa, 0xe5b6, 0xe5b5, 0xe5b7, 0x8a5b,
+ 0xe5b4, 0xbcb5, 0x894d, 0xbcbb, 0xbcb8, 0xbcb9, 0xe5af, 0xe5b2,
+ 0xe5bc, 0xbcc1, 0xbcbf, 0xe5b3, 0xd95a, 0xbcb2, 0xe5b9, 0xe5b0,
+ 0xbcc2, 0xe5b8, 0xba4d, 0xbcb7, 0xe1e4, 0xbcba, 0xbcbe, 0xbcc0,
+ 0xbcbd, 0xbcbc, 0xfed4, 0xbcb6, 0xe5bb, 0xbcb3, 0xbcc3, 0x8a78,
+ 0x93ab, 0xbed8, 0xbed9, 0xe9a9, 0xbee2, 0xbedf, 0x8da7, 0xbed6,
+ 0xbedd, 0xe9ab, 0xbedb, 0xbed5, 0xbedc, 0xe9a8, 0xc0bb, 0xbed7,
+ 0xbede, 0xc0ba, 0xe9a7, 0xe9a6, 0xbee0, 0x9f45, 0xbee1, 0xe9a5,
+ 0xe9a4, 0xc0bc, 0xe9ae, 0xbeda, 0xe9ac, 0x8a56, 0xc0bd, 0xfcbf,
+ 0xc0c2, 0xecea, 0xecec, 0xfcc0, 0xc0bf, 0x8ee6, 0xeced, 0xece9,
+ 0x8aa4, 0xeceb, 0xc0c0, 0xc0c3, 0xece8, 0xc0be, 0xc0c1, 0xc259,
+ 0xe9ad, 0xc258, 0xc25e, 0xefd4, 0xc25c, 0xc25d, 0xefd7, 0xefd3,
+ 0xc25a, 0xefd1, 0xc36b, 0xefd5, 0xefd6, 0xefd2, 0xc25b, 0xf242,
+ 0xf245, 0x8943, 0xf246, 0xf244, 0xf247, 0xc36c, 0xf243, 0x93f3,
+ 0xf44e, 0xc464, 0xf44d, 0xf44c, 0xf44b, 0xc463, 0xc465, 0xf5cd,
+ 0xc4e2, 0xc4e1, 0xfcab, 0x9ea2, 0xf6e1, 0xf6e0, 0xf6e3, 0xc5cb,
+ 0xc575, 0xf7dd, 0xf6e2, 0xf7dc, 0xc5cd, 0xc5cc, 0xc5f3, 0xf8a9,
+ 0xf8ef, 0xa4e4, 0x9dc7, 0xd972, 0xe9af, 0xc6d2, 0x8bce, 0xa6ac,
+ 0xcaf7, 0xa7f1, 0xa7ef, 0xa7f0, 0xccc1, 0xa9f1, 0xac46, 0xcee7,
+ 0xcee8, 0xac47, 0xd1ce, 0xaec4, 0xaec5, 0xd1cd, 0xfcc5, 0xb1d3,
+ 0xb1cf, 0xd5a7, 0xb1d6, 0xb1d5, 0xb1ce, 0xb1d1, 0xb1d4, 0xb1d0,
+ 0xd976, 0xb1cd, 0xb4af, 0xfccb, 0xb4b1, 0xb4b2, 0xd975, 0xd978,
+ 0xb4b0, 0xd973, 0xd977, 0xd974, 0x93b3, 0xb771, 0xfcca, 0xddbc,
+ 0xba56, 0xe1f4, 0xbee3, 0xbcc4, 0xe5bd, 0xbcc5, 0xbcc6, 0xe5bf,
+ 0xe5be, 0xe5c0, 0xe9b1, 0xe9b0, 0xecef, 0xecee, 0xc0c4, 0xc0c5,
+ 0xf248, 0xfcc9, 0x8dac, 0xa4e5, 0xfbc6, 0x8967, 0x8c7e, 0xd979,
+ 0xb4b4, 0xb4b3, 0xddbd, 0xefd8, 0xc4e3, 0xf7de, 0xa4e6, 0xaec6,
+ 0xb1d8, 0xb1d7, 0xd97a, 0xd97b, 0xb772, 0xe1f5, 0xba57, 0xe9b2,
+ 0xa4e7, 0xa5b8, 0xa9f2, 0xccc2, 0xcee9, 0xac48, 0xb1d9, 0xd97c,
+ 0xb4b5, 0xb773, 0xe5c1, 0xe5c2, 0xfccd, 0xecf0, 0xc25f, 0xf8f0,
+ 0xa4e8, 0xccc3, 0xa9f3, 0xac49, 0x9cf3, 0xceea, 0xaec7, 0xd1d2,
+ 0xd1d0, 0xd1d1, 0xaec8, 0xd1cf, 0xb1db, 0xb1dc, 0xd5a8, 0xb1dd,
+ 0xb1da, 0xd97d, 0xfcd0, 0xd97e, 0xddbe, 0x95bb, 0xba59, 0xba58,
+ 0xecf1, 0xefd9, 0xf24a, 0xf249, 0xf44f, 0xfcd3, 0xc95e, 0xac4a,
+ 0xfcd4, 0xa4e9, 0xa5b9, 0xa6ae, 0xa6ad, 0xa6af, 0xa6b0, 0xc9ee,
+ 0xc9ed, 0xcaf8, 0xa7f2, 0xcafb, 0xcafa, 0xcaf9, 0xcafc, 0xa9f4,
+ 0xccc9, 0xccc5, 0xccce, 0x8dae, 0xa9fb, 0xa9f9, 0xccca, 0xccc6,
+ 0xcccd, 0xa9f8, 0xaa40, 0xccc8, 0xccc4, 0xa9fe, 0xcccb, 0xa9f7,
+ 0xcccc, 0xa9fa, 0xa9fc, 0xccd0, 0xcccf, 0xccc7, 0xa9f6, 0xa9f5,
+ 0xa9fd, 0xfcd7, 0xceef, 0xcef5, 0x93db, 0xac50, 0xac4d, 0xceec,
+ 0xcef1, 0xfe63, 0xac53, 0xac4b, 0xcef0, 0xac4e, 0xac51, 0xcef3,
+ 0xac4c, 0xcef8, 0xac4f, 0x93d5, 0xac52, 0xceed, 0xcef2, 0xcef6,
+ 0xceee, 0xceeb, 0xcef7, 0xcef4, 0xaed0, 0xaec9, 0xaecc, 0xfcda,
+ 0xaecf, 0xd1d5, 0x9b71, 0xaeca, 0xd1d3, 0xfcdd, 0xaece, 0xaecb,
+ 0xd1d6, 0xaecd, 0x8daf, 0xfaf2, 0xd5ac, 0xb1df, 0xd5ab, 0xd5ad,
+ 0xb1de, 0xb1e3, 0xd1d4, 0xd5aa, 0xd5ae, 0x93d8, 0xb1e0, 0xd5a9,
+ 0xb1e2, 0xfcdf, 0xb1e1, 0xd9a7, 0x93d3, 0xd9a2, 0xb4b6, 0xb4ba,
+ 0xb4b7, 0xd9a5, 0xd9a8, 0xfce1, 0xb4b8, 0xb4b9, 0xb4be, 0xddc7,
+ 0xd9a6, 0xb4bc, 0xd9a3, 0xd9a1, 0x8e76, 0xb4bd, 0xd9a4, 0xb779,
+ 0xfc62, 0xddbf, 0xb776, 0xb777, 0xb775, 0xddc4, 0xddc3, 0xddc0,
+ 0xb77b, 0x93d1, 0xddc2, 0xb4bb, 0x8db1, 0xddc6, 0xddc1, 0xb778,
+ 0xb774, 0xb77a, 0xddc5, 0x9859, 0xba5c, 0xe1f8, 0xe1f7, 0xe1f6,
+ 0xba5a, 0xfb52, 0xba5b, 0xe5c5, 0xe5c8, 0xbcc8, 0xfb53, 0xbcc7,
+ 0xe5c9, 0xe5c4, 0xbcca, 0xe5c6, 0xfb4d, 0xbcc9, 0xe5c3, 0x9cbf,
+ 0xe5c7, 0xbee9, 0xbee6, 0xe9bb, 0xe9ba, 0xe9b9, 0xe9b4, 0x9b72,
+ 0xe9b5, 0xbee7, 0xbee4, 0xbee8, 0xe9b3, 0xbee5, 0xe9b6, 0xe9b7,
+ 0xe9bc, 0xfb50, 0x93be, 0xe9b8, 0xecf2, 0xc0c7, 0xefdc, 0xc0c6,
+ 0xefda, 0xefdb, 0xc260, 0xc36e, 0xf24b, 0xc36d, 0xf451, 0xf452,
+ 0xc466, 0xf450, 0xc4e4, 0xf7df, 0xc5ce, 0xf8aa, 0xf8ab, 0xa4ea,
+ 0x9df1, 0xa6b1, 0xa6b2, 0xa7f3, 0xccd1, 0xac54, 0xaed1, 0xb1e4,
+ 0xb0d2, 0xb4bf, 0xb4c0, 0xb3cc, 0xd9a9, 0xfceb, 0xb77c, 0xe1fa,
+ 0xe1f9, 0xa4eb, 0xa6b3, 0xccd2, 0xaa42, 0xa0bb, 0xaa41, 0x9b7e,
+ 0xcef9, 0xcefa, 0xd1d7, 0xd1d8, 0xaed2, 0xaed3, 0x8db3, 0xaed4,
+ 0xd5af, 0x8c52, 0xb1e6, 0xb4c2, 0x9ae8, 0xb4c1, 0xddc8, 0xdf7a,
+ 0xe1fb, 0xe9bd, 0x8edc, 0xc261, 0xc467, 0xa4ec, 0xa5bc, 0xa5bd,
+ 0xa5bb, 0xa5be, 0xa5ba, 0xa6b6, 0xc9f6, 0xa6b5, 0xa6b7, 0x9cf9,
+ 0xc9f1, 0xc9f0, 0xc9f3, 0xc9f2, 0xc9f5, 0xa6b4, 0xc9ef, 0xc9f4,
+ 0xfa50, 0xcafd, 0xa7fd, 0xcafe, 0xcb43, 0xa7fc, 0xcb47, 0xcb42,
+ 0xcb45, 0xa7f5, 0xa7f6, 0xa7f7, 0xa7f8, 0xa840, 0xcb41, 0xa7fa,
+ 0xa841, 0xcb40, 0xcb46, 0xa7f9, 0xcb44, 0xa7fb, 0xa7f4, 0xa7fe,
+ 0x98e7, 0xfcf3, 0xfcf2, 0xaa57, 0x8cca, 0xccd4, 0xaa43, 0xaa4d,
+ 0xaa4e, 0xaa46, 0xaa58, 0xaa48, 0xccdc, 0xaa53, 0xccd7, 0xaa49,
+ 0xcce6, 0xcce7, 0xccdf, 0xccd8, 0xaa56, 0xcce4, 0xaa51, 0xaa4f,
+ 0xcce5, 0xcce3, 0xccdb, 0xccd3, 0xccda, 0xaa4a, 0xaa50, 0xaa44,
+ 0xccde, 0xccdd, 0xccd5, 0x93e5, 0xaa52, 0xcce1, 0xccd6, 0xaa55,
+ 0xcce8, 0xaa45, 0xaa4c, 0xccd9, 0xcce2, 0xaa54, 0xaa47, 0xaa4b,
+ 0xcce0, 0x9a59, 0x8db5, 0xfd4d, 0xcf5b, 0xac5c, 0xac69, 0xfd5e,
+ 0xcf56, 0xcf4c, 0xac62, 0xcf4a, 0xac5b, 0xcf45, 0xac65, 0xcf52,
+ 0xcefe, 0xcf41, 0x8f7d, 0xcf44, 0xcefb, 0xcf51, 0xcf61, 0xac60,
+ 0xcf46, 0xcf58, 0xcefd, 0xcf5f, 0xcf60, 0xcf63, 0xcf5a, 0xcf4b,
+ 0xcf53, 0xac66, 0xac59, 0xac61, 0xac6d, 0xac56, 0xac58, 0x9547,
+ 0xfcf6, 0xcf43, 0xac6a, 0xac63, 0xcf5d, 0xcf40, 0xac6c, 0xac67,
+ 0xcf49, 0xac6b, 0xcf50, 0xcf48, 0xac64, 0xcf5c, 0xcf54, 0xac5e,
+ 0xcf62, 0xcf47, 0xac5a, 0xcf59, 0xcf4f, 0xac5f, 0xcf55, 0xac57,
+ 0xcefc, 0xac68, 0xaee3, 0xac5d, 0xcf4e, 0xcf4d, 0xcf42, 0x9250,
+ 0xcf5e, 0xcf57, 0x8968, 0xac55, 0x8db6, 0xfcfb, 0xa07d, 0x98fc,
+ 0x8969, 0xfe4f, 0x9256, 0xd1ec, 0xaeea, 0xd1ed, 0xd1e1, 0xaedf,
+ 0xaeeb, 0xd1da, 0xfac9, 0xd1e3, 0xd1eb, 0x93e8, 0xd1d9, 0xd1f4,
+ 0xaed5, 0xfcf8, 0xd1f3, 0xd1ee, 0xd1ef, 0xaedd, 0xaee8, 0xd1e5,
+ 0xd1e6, 0xd1f0, 0xd1e7, 0xd1e2, 0xd1dc, 0xd1dd, 0xd1ea, 0xd1e4,
+ 0x9ce3, 0xfda9, 0xaed6, 0xaeda, 0xd1f2, 0xd1de, 0xaee6, 0xaee2,
+ 0xfc44, 0xaee5, 0xaeec, 0xaedb, 0xaee7, 0xd1e9, 0xaee9, 0xaed8,
+ 0x9640, 0xaed7, 0xd1db, 0x8db8, 0xd1df, 0xaee0, 0xd1f1, 0xd1e8,
+ 0xd1e0, 0xaee4, 0xaee1, 0xaed9, 0xaedc, 0x9b4a, 0x8fb9, 0xfcfe,
+ 0x896a, 0xd5c4, 0xd5b4, 0xd5b5, 0xd5b9, 0xd5c8, 0xd5c5, 0xd5be,
+ 0xd5bd, 0xb1ed, 0xd5c1, 0xd5d0, 0xd5b0, 0xd5d1, 0xd5c3, 0xd5d5,
+ 0xd5c9, 0xb1ec, 0xd5c7, 0xb1e7, 0xb1fc, 0xb1f2, 0x8db9, 0xb1f6,
+ 0xb1f5, 0xd5b1, 0x917e, 0xd5ce, 0xd5d4, 0xd5cc, 0xd5d3, 0xd5c0,
+ 0xd5b2, 0xd5d2, 0xd5c2, 0xb1ea, 0xb1f7, 0xd5cb, 0xb1f0, 0x93f4,
+ 0xd5ca, 0xd5b3, 0xb1f8, 0xb1fa, 0xd5cd, 0xb1fb, 0xb1e9, 0xd5ba,
+ 0xd5cf, 0xfb7c, 0xb1ef, 0xb1f9, 0xd5bc, 0xd5c6, 0xd5b7, 0xd5bb,
+ 0xb1f4, 0xd5b6, 0xb1e8, 0xb1f1, 0xb1ee, 0xd5bf, 0xaede, 0xd9c0,
+ 0xb1eb, 0x93e7, 0x97ef, 0xfe4a, 0xfd45, 0xb1f3, 0x96a5, 0xd9c3,
+ 0xd9d9, 0xd9ce, 0xb4d6, 0xfee0, 0xb4d1, 0xd9bd, 0xb4d2, 0xd9cd,
+ 0xd9c6, 0xd9d3, 0xb4ce, 0xd9ab, 0xd9d5, 0xb4c4, 0xd9b3, 0xb4c7,
+ 0xb4c6, 0xb4d7, 0xd9ad, 0xd9cf, 0xd9d0, 0xb4c9, 0xb4c5, 0xd9bb,
+ 0xb4d0, 0xd9b6, 0xd9d1, 0xb4cc, 0xd9c9, 0xd9d6, 0xd9b0, 0xd9b5,
+ 0xd9af, 0xb4cb, 0xd9c2, 0xddde, 0xd9b1, 0xb4cf, 0xd9ba, 0xd9d2,
+ 0xb4ca, 0xd9b7, 0xd9b4, 0xd9c5, 0xb4cd, 0xb4c3, 0xb4d9, 0xd9c8,
+ 0xd9c7, 0xfd48, 0xfd47, 0xfef2, 0xfe6a, 0xd9ac, 0xb4c8, 0xd9d4,
+ 0xd9bc, 0xd9be, 0x8dbd, 0xd9cb, 0xd9ca, 0xd9aa, 0xb4d3, 0xb4d5,
+ 0xd9b2, 0xd9b9, 0xd9c1, 0xb4d4, 0xd9b8, 0xd9c4, 0xd9d7, 0xd9cc,
+ 0x9ba1, 0x8ca2, 0x9ab7, 0x8efc, 0xd9d8, 0xd9ae, 0x9fa1, 0xddf2,
+ 0xb7a6, 0xddf0, 0xdddb, 0xdde0, 0xddd9, 0xfd51, 0xddec, 0xddcb,
+ 0xddd2, 0xddea, 0xddf4, 0xdddc, 0xfaad, 0xddcf, 0xdde2, 0xdde7,
+ 0xddd3, 0x8dbe, 0xdde4, 0xddd0, 0x89a4, 0xddd7, 0xddd8, 0xb7a8,
+ 0xddeb, 0xdde9, 0xddcc, 0xddee, 0xddef, 0xddf1, 0xb7ac, 0xb7a4,
+ 0x9ad9, 0xd5b8, 0xddd4, 0xdde6, 0xddd5, 0xb7a1, 0xb7b1, 0xdded,
+ 0xb7af, 0xb7ab, 0xddca, 0xb7a3, 0xfd4e, 0xddcd, 0xb7b0, 0x8dc0,
+ 0xdddd, 0xddc9, 0x97f0, 0xb7a9, 0xdde1, 0xddd1, 0xb7aa, 0xddda,
+ 0xb77e, 0xb4d8, 0xdde3, 0xd9bf, 0xddce, 0x93b4, 0xfd44, 0xdde8,
+ 0xb7a5, 0xdde5, 0xb7a2, 0xdddf, 0xb7ad, 0xddd6, 0xddf3, 0x9fa7,
+ 0xb7a7, 0xdec6, 0x8dc2, 0xb7ae, 0x99b6, 0xe24a, 0xe248, 0xe25e,
+ 0xe246, 0xe258, 0xb77d, 0xba5f, 0xe242, 0xe25d, 0xfd52, 0xe247,
+ 0xe255, 0xba64, 0xba5d, 0xe25b, 0x8dc1, 0xe240, 0xe25a, 0x8e46,
+ 0xba6f, 0xe251, 0xe261, 0xba6d, 0xe249, 0xba5e, 0xe24b, 0xe259,
+ 0xba67, 0xe244, 0xba6b, 0xba61, 0xe24d, 0xe243, 0xe1fc, 0xa0d1,
+ 0xe257, 0xba68, 0xe260, 0xe1fd, 0xba65, 0xe253, 0xba66, 0xe245,
+ 0xe250, 0xe24c, 0xe24e, 0x9fca, 0xba60, 0xe25f, 0xba6e, 0xe24f,
+ 0xe262, 0xe1fe, 0xe254, 0xba63, 0xba6c, 0xba6a, 0xe241, 0xe256,
+ 0xba69, 0x92cf, 0xba62, 0xe252, 0x9cf4, 0x8dc4, 0xe25c, 0xfd41,
+ 0xe5d5, 0xe5d1, 0xe5cd, 0xe5e1, 0xe5de, 0xbccd, 0x9b4c, 0xe5e5,
+ 0xe5d4, 0xbcd8, 0xe5db, 0xe5d0, 0xe5da, 0xbcd5, 0xe5ee, 0xe5eb,
+ 0xe5dd, 0xe5ce, 0xfd57, 0xfcef, 0xe5e2, 0xe5e4, 0xbcd1, 0xe5d8,
+ 0xe5d3, 0xe5ca, 0xbcce, 0xbcd6, 0x9cde, 0xe5e7, 0xbcd7, 0xe5cb,
+ 0xe5ed, 0xe5e0, 0xe5e6, 0xbcd4, 0xfd42, 0x986c, 0xe5e3, 0xe5ea,
+ 0xbcd9, 0xbcd3, 0xe5dc, 0xe5cf, 0xe5ef, 0xe5cc, 0xe5e8, 0xbcd0,
+ 0x97f9, 0xe5d6, 0x9558, 0xe5d7, 0xbccf, 0xbccc, 0xe5d2, 0xbcd2,
+ 0xbccb, 0xe5e9, 0xe5ec, 0xe5d9, 0xe9ca, 0x985e, 0xfe7b, 0x94cd,
+ 0xe9c2, 0x93ee, 0xe9be, 0xbef6, 0xbeeb, 0xbef0, 0xbeec, 0xe9cc,
+ 0xe9d7, 0xbeea, 0xe9c4, 0xe9cd, 0xe5df, 0xe9ce, 0x8ca3, 0xbef1,
+ 0xfd5a, 0xe9dd, 0xbef5, 0xbef8, 0xe9c0, 0xbef4, 0x93f5, 0xe9db,
+ 0xe9dc, 0xe9d2, 0xe9d1, 0xe9c9, 0x93ef, 0x8eea, 0xe9d3, 0xe9da,
+ 0xe9d9, 0x8f5b, 0xbeef, 0xbeed, 0xe9cb, 0xe9c8, 0xe9c5, 0xe9d8,
+ 0xbef7, 0xe9d6, 0xbef3, 0xbef2, 0x8c5e, 0xe9d0, 0x8dc6, 0xe9bf,
+ 0xe9c1, 0xe9c3, 0xe9d5, 0xe9cf, 0xbeee, 0xe9c6, 0xe9d4, 0x8dc8,
+ 0x8dc7, 0xe9c7, 0x93f7, 0xc0cf, 0xed45, 0xc0c8, 0xecf5, 0x8dc9,
+ 0xed41, 0xc0ca, 0xed48, 0xecfc, 0xecf7, 0xfbf2, 0xed49, 0xecf3,
+ 0xecfe, 0x9670, 0xc0d1, 0xed44, 0xed4a, 0xecfd, 0xc0c9, 0xed40,
+ 0xecf4, 0xc0d0, 0x8dcb, 0xed47, 0xecf9, 0xc0cc, 0xfd5c, 0xecfb,
+ 0xecf8, 0xc0d2, 0xecfa, 0xc0cb, 0xc0ce, 0xed43, 0xecf6, 0xed46,
+ 0x8f65, 0xed42, 0x8dcd, 0xc263, 0xefe7, 0xc268, 0xc269, 0x9da8,
+ 0x94f9, 0xc262, 0xefe6, 0x8dce, 0xefe3, 0xefe4, 0xc266, 0xefde,
+ 0xefe2, 0xc265, 0xefdf, 0x93ea, 0xc267, 0xc264, 0xefdd, 0xefe1,
+ 0xefe5, 0xfd5f, 0x93f0, 0x9fb6, 0xf251, 0xf24e, 0xf257, 0xf256,
+ 0xf254, 0xf24f, 0xc372, 0x8dcf, 0x9763, 0xf250, 0xc371, 0xc0cd,
+ 0xf253, 0xc370, 0xf258, 0xf252, 0xf24d, 0xefe0, 0xc36f, 0xf24c,
+ 0xf456, 0xf455, 0xf255, 0xc468, 0xf459, 0xf45a, 0xf454, 0xf458,
+ 0xf453, 0x8dd0, 0xf5d1, 0xf457, 0xc4e7, 0xc4e5, 0xf5cf, 0xf5d2,
+ 0xf5ce, 0xf5d0, 0xc4e6, 0x93f1, 0xf6e5, 0xf6e6, 0xc576, 0xf6e4,
+ 0xf7e2, 0xc5cf, 0xf7e0, 0xf7e1, 0xf8ac, 0xc656, 0xf8f3, 0xf8f1,
+ 0xf8f2, 0xf8f4, 0xfd62, 0xf9bb, 0xa4ed, 0xa6b8, 0xaa59, 0xcce9,
+ 0xcf64, 0xd1f5, 0xd1f7, 0xd1f6, 0xd1f8, 0xb1fd, 0xd5d7, 0xd1f9,
+ 0xfd65, 0xd5d6, 0xd5d8, 0xd5d9, 0xd9da, 0xb4db, 0xd9db, 0xd9dd,
+ 0xb4dc, 0xb4da, 0xd9dc, 0xddfa, 0xddf8, 0xddf7, 0xddf6, 0xddf5,
+ 0xb7b2, 0xddf9, 0xba70, 0xe263, 0xe265, 0xba71, 0xe264, 0xbcdb,
+ 0xbcda, 0xe5f0, 0x9fdb, 0xe9df, 0xe9de, 0xe9e0, 0x93f8, 0xbef9,
+ 0xed4b, 0xc0d3, 0xefe8, 0xc26a, 0xf259, 0xc577, 0xa4ee, 0xa5bf,
+ 0xa6b9, 0xa842, 0xaa5a, 0xaa5b, 0xac6e, 0xd1fa, 0x8bf7, 0xb7b3,
+ 0xfd66, 0xe6d1, 0xbefa, 0xc26b, 0xa4ef, 0x8bcf, 0xa6ba, 0xcceb,
+ 0xaa5c, 0xccea, 0x8dd1, 0xcf65, 0xac6f, 0xcf66, 0xac70, 0xd1fc,
+ 0xaeee, 0xaeed, 0xd5de, 0xd5dc, 0xd5dd, 0xd5db, 0xd5da, 0xd9de,
+ 0xd9e1, 0xb4de, 0xd9df, 0xb4dd, 0xd9e0, 0xddfb, 0xe266, 0xe267,
+ 0xe268, 0xe5f3, 0xe5f2, 0xbcdc, 0xe5f1, 0xe5f4, 0xe9e1, 0xe9e2,
+ 0xe9e3, 0xed4c, 0xc0d4, 0xc26c, 0xf25a, 0xc4e8, 0xc95f, 0xac71,
+ 0xcf67, 0xaeef, 0xb1fe, 0xb4df, 0xd9e2, 0xb7b5, 0xb7b4, 0x8dd2,
+ 0xe269, 0xe26a, 0xbcdd, 0xbcde, 0xe9e5, 0xe9e4, 0xefe9, 0xf7e3,
+ 0xa4f0, 0xc960, 0xa5c0, 0xa843, 0xcb48, 0xac72, 0xb7b6, 0xa4f1,
+ 0xcf68, 0xac73, 0xcf69, 0xc0d5, 0xa4f2, 0xfd71, 0xccec, 0xcf6a,
+ 0xfd6f, 0xd242, 0xd241, 0xd1fe, 0xd1fd, 0xd243, 0xd240, 0x8dd3,
+ 0xb240, 0xb241, 0xb4e0, 0xd9e3, 0xd9e4, 0xd9e5, 0xde41, 0xde42,
+ 0xde40, 0x9fe7, 0xddfd, 0xddfe, 0xb7b7, 0xe26b, 0xe5f7, 0xe5f6,
+ 0xe5f5, 0xe5f8, 0xe9e7, 0xe9e6, 0xbefb, 0xe9e8, 0xc0d6, 0xed4d,
+ 0xefea, 0xf25b, 0xf6e7, 0xa4f3, 0xa5c2, 0xa5c1, 0xaa5d, 0xc961,
+ 0xc97e, 0xa6bb, 0xc9f7, 0xcb49, 0xcb4a, 0xaa5e, 0x90bd, 0xcced,
+ 0xac74, 0xcf6b, 0xcf6c, 0xaef0, 0xaef4, 0xd244, 0xaef3, 0xaef1,
+ 0xaef2, 0xd5df, 0xb242, 0xb4e3, 0xb4e1, 0xb4e2, 0xd9e6, 0x9fd0,
+ 0xba72, 0xa4f4, 0x8bd0, 0xc9a1, 0xfd72, 0xa5c3, 0x9cae, 0x8bd1,
+ 0xc9a4, 0x8adb, 0xa5c6, 0xc9a3, 0xa5c5, 0xa5c4, 0xa844, 0xc9a2,
+ 0xc9f8, 0xfae4, 0xc9fc, 0xc9fe, 0xca40, 0xa6c5, 0xa6c6, 0xc9fb,
+ 0xa6c1, 0xc9f9, 0xc9fd, 0xa6c2, 0xa6bd, 0x95ce, 0xa6be, 0xfd76,
+ 0xa6c4, 0xc9fa, 0xa6bc, 0xa845, 0xa6bf, 0xa6c0, 0xa6c3, 0xcb5b,
+ 0xcb59, 0xcb4c, 0xa851, 0xcb53, 0xa84c, 0xcb4d, 0xcb55, 0xfb62,
+ 0xcb52, 0xa84f, 0xcb51, 0xa856, 0xcb5a, 0xa858, 0x8dd4, 0xa85a,
+ 0xcb4b, 0xfd78, 0xa84d, 0xcb5c, 0xa854, 0xa857, 0x8ee3, 0xcd45,
+ 0xa847, 0xa85e, 0xa855, 0xcb4e, 0xa84a, 0xa859, 0xcb56, 0xa848,
+ 0xa849, 0xcd43, 0xcb4f, 0xa850, 0xa85b, 0xcb5d, 0xcb50, 0xa84e,
+ 0xa853, 0xccee, 0xa85c, 0xcb57, 0xa852, 0xa85d, 0xa846, 0xcb54,
+ 0xa84b, 0xcb58, 0xcd44, 0x9076, 0x98c6, 0x8dd5, 0xaa6a, 0xaa7a,
+ 0xccf5, 0xaa71, 0x97d1, 0xcd4b, 0xaa62, 0x9eb6, 0xaa65, 0xcd42,
+ 0xccf3, 0xccf7, 0xaa6d, 0xaa6f, 0xccfa, 0xaa76, 0xaa68, 0xaa66,
+ 0xaa67, 0xaa75, 0xcd47, 0xaa70, 0xccf9, 0xccfb, 0xaa6e, 0xaa73,
+ 0xccfc, 0xcd4a, 0xac75, 0xaa79, 0xfac7, 0xaa63, 0xcd49, 0xa042,
+ 0xcd4d, 0xccf8, 0xcd4f, 0xcd40, 0xaa6c, 0xccf4, 0xaa6b, 0xaa7d,
+ 0xaa72, 0xccf2, 0xcf75, 0xaa78, 0xaa7c, 0xcd41, 0xcd46, 0x9873,
+ 0xaa7e, 0xaa77, 0xaa69, 0xaa5f, 0xaa64, 0xccf6, 0xaa60, 0xcd4e,
+ 0x9ffc, 0xccf0, 0xccef, 0xccfd, 0xccf1, 0xaa7b, 0xaef5, 0xaa74,
+ 0xccfe, 0xaa61, 0xaca6, 0xcd4c, 0x8ca5, 0xcf7c, 0xcfa1, 0x8dd7,
+ 0xcfa4, 0xcf77, 0x92fb, 0x8dd8, 0xcfa7, 0xcfaa, 0xcfac, 0xcf74,
+ 0xac76, 0xac7b, 0xd249, 0xacad, 0xcfa5, 0xcfad, 0xcf7b, 0xcf73,
+ 0xd264, 0xac7e, 0xcfa2, 0xcf78, 0xcf7a, 0xaca5, 0xcf7d, 0xac7d,
+ 0xcf70, 0xcfa8, 0xcfab, 0x944f, 0xac7a, 0x8dd9, 0xaca8, 0xcf6d,
+ 0xacaa, 0xac78, 0xacae, 0xcfa9, 0xcf6f, 0xacab, 0xd25e, 0xcd48,
+ 0xac7c, 0xac77, 0xcf76, 0xcf6e, 0xacac, 0xaca4, 0xcfa3, 0xaca9,
+ 0xaca7, 0xcf79, 0xaca1, 0xcf71, 0xaca2, 0xaca3, 0xcf72, 0xcfa6,
+ 0xac79, 0xcf7e, 0x896b, 0x97ce, 0xd24c, 0xaefd, 0xaf43, 0xfaf3,
+ 0xfdae, 0xd255, 0xd25b, 0xd257, 0xd24a, 0xd24d, 0xd246, 0xd247,
+ 0xaf4a, 0xaefa, 0xd256, 0xd25f, 0xaf45, 0xaef6, 0xaf40, 0xd24e,
+ 0xaf42, 0xd24f, 0xd259, 0xfbaf, 0x92b7, 0xaf44, 0xd268, 0xd248,
+ 0xaefc, 0xaefb, 0xaf48, 0xd245, 0xd266, 0xd25a, 0xd267, 0xd261,
+ 0xd253, 0xd262, 0x8dda, 0xd25c, 0xd265, 0xd263, 0xaf49, 0xd254,
+ 0xaef9, 0xaef8, 0xaf41, 0xaf47, 0xd260, 0xaf46, 0xd251, 0xb243,
+ 0x9c5a, 0xd269, 0xd250, 0xd24b, 0xaefe, 0xaf4b, 0xaef7, 0xfdad,
+ 0xd258, 0xd25d, 0x8ddc, 0x9444, 0xb265, 0xd5e1, 0xd5e5, 0xb252,
+ 0xb250, 0x8ddd, 0xb247, 0xd5e3, 0xd5e2, 0xb25b, 0xd5e8, 0xb255,
+ 0xa0d6, 0xd5fa, 0xd647, 0xb244, 0xd5f7, 0xd5f0, 0xb267, 0xd5e0,
+ 0xd5fc, 0xb264, 0xb258, 0xb263, 0xb24e, 0xd5ec, 0xd5fe, 0xd5f6,
+ 0xb24f, 0xb249, 0xd645, 0xd5fd, 0xd640, 0xb251, 0xb259, 0xd642,
+ 0xd5ea, 0xd5fb, 0xd5ef, 0xd644, 0xb25e, 0xb246, 0xb25c, 0xd5f4,
+ 0xd5f2, 0xd5f3, 0xb253, 0xd5ee, 0xd5ed, 0xb248, 0xd5e7, 0xd646,
+ 0xb24a, 0xd5f1, 0xb268, 0xb262, 0xd5e6, 0xb25f, 0xb25d, 0xb266,
+ 0xd5f8, 0xb261, 0xd252, 0xd5f9, 0xb260, 0xd641, 0xb245, 0xd5f5,
+ 0xb257, 0xd5e9, 0xb256, 0xb254, 0xb24c, 0xb24b, 0xd9e7, 0xd643,
+ 0x8c41, 0xd5eb, 0x97d5, 0xd9fc, 0x944a, 0xb24d, 0x944d, 0x97cb,
+ 0x8dde, 0x8ddf, 0xb541, 0xb25a, 0xb4ee, 0xd9f6, 0xb4fc, 0xd9ea,
+ 0xb4eb, 0xb4e7, 0xda49, 0xb4ed, 0xb4f1, 0xb4ec, 0xb4f5, 0xda4d,
+ 0xda44, 0x8de0, 0xfef9, 0xd9f1, 0xb4fa, 0xb4f4, 0xd9fd, 0xb4e4,
+ 0xda4a, 0xda43, 0xb4e8, 0xd9f7, 0xb4f7, 0xda55, 0xda56, 0xb4e5,
+ 0xda48, 0xb4f9, 0xd9fb, 0xd9ed, 0xd9ee, 0xb4fd, 0xd9f2, 0xd9f9,
+ 0xd9f3, 0xb4fb, 0xb544, 0xd9ef, 0xd9e8, 0xd9e9, 0xd9eb, 0xb4ea,
+ 0xd9f8, 0xb4f8, 0xb542, 0xfdc0, 0xfcf9, 0xd9fa, 0xda53, 0xda4b,
+ 0xb4e6, 0xda51, 0xb4f2, 0xb4f0, 0xfb7e, 0xda57, 0xb4ef, 0xda41,
+ 0xd9f4, 0xd9fe, 0xb547, 0xda45, 0xda42, 0xd9f0, 0xb543, 0xda4f,
+ 0xda4c, 0xda54, 0xb4e9, 0xda40, 0xb546, 0xda47, 0xb4f3, 0xb4f6,
+ 0xda46, 0xb545, 0xd9f5, 0xd5e4, 0x92b3, 0xda50, 0xda4e, 0xda52,
+ 0xfdaf, 0x8de1, 0xd9ec, 0xb540, 0x95d3, 0xde61, 0xde60, 0xde46,
+ 0xb7bd, 0xde5f, 0xde49, 0xde4a, 0xb7c7, 0xde68, 0xb7c2, 0xde5e,
+ 0x89c1, 0xde43, 0xb7c8, 0xb7be, 0xde52, 0xde48, 0xde4b, 0xde63,
+ 0xb7b8, 0xde6a, 0xde62, 0xb7c1, 0xde57, 0xb7cc, 0xb7cb, 0xb7c5,
+ 0xde69, 0xb7b9, 0xde55, 0xde4c, 0xde59, 0xde65, 0xb7cd, 0xfd68,
+ 0xb7bb, 0xde54, 0x9cb7, 0xde4d, 0xb7c4, 0x8de3, 0xb7c3, 0xde50,
+ 0xde5a, 0xde64, 0xde47, 0xde51, 0xb7bc, 0xde5b, 0xb7c9, 0xb7c0,
+ 0xde4e, 0xb7bf, 0xde45, 0xde53, 0xde67, 0xb4fe, 0xbab0, 0xde56,
+ 0xe26c, 0xde58, 0xde66, 0xb7c6, 0xde4f, 0xb7ba, 0xb7ca, 0xbcf0,
+ 0xde44, 0xde5d, 0xfac0, 0x8de5, 0xfa64, 0xde5c, 0x8947, 0x8de4,
+ 0x8de7, 0x8de8, 0xe2aa, 0xbaad, 0xe27d, 0xe2a4, 0xbaa2, 0xe26e,
+ 0xbaaf, 0xba77, 0xe26d, 0xe2b0, 0xbab1, 0xe271, 0xe2a3, 0xfdc7,
+ 0xe273, 0xe2b3, 0xe2af, 0xba75, 0xbaa1, 0xe653, 0xbaae, 0xba7d,
+ 0xe26f, 0xfdb0, 0xe2ae, 0xbaa3, 0xe2ab, 0xe2b8, 0xe275, 0xe27e,
+ 0x9445, 0x97d6, 0xe2b6, 0xe2ac, 0xba7c, 0xe27c, 0xba76, 0xba74,
+ 0xbaa8, 0xfcc6, 0x9844, 0xe27a, 0xe277, 0xe278, 0xe2b2, 0xe2b7,
+ 0xe2b5, 0xba7a, 0xe2b9, 0xba7e, 0xbaa7, 0x8de9, 0xe270, 0xe5fa,
+ 0xe279, 0xba78, 0xbaac, 0xbaa9, 0xba7b, 0xe2a5, 0xe274, 0xbaaa,
+ 0xe2a7, 0xbaa4, 0xbaa6, 0xba73, 0x8dea, 0xe2a9, 0xe2a1, 0xe272,
+ 0xbaa5, 0xe2b1, 0xe2b4, 0xe27b, 0xe2a8, 0xfe50, 0xba79, 0xbcdf,
+ 0xe2a6, 0xe5f9, 0xe2ad, 0xfdcc, 0xe276, 0xe644, 0xe64e, 0xbce2,
+ 0xe64d, 0xe659, 0xbce4, 0xe64b, 0x9da7, 0xe64f, 0xbcef, 0xe646,
+ 0xbce7, 0xfdcd, 0xe652, 0xe9f0, 0xbcf3, 0xbcf2, 0xe654, 0xe643,
+ 0xe65e, 0xbced, 0xbce3, 0xe657, 0xe65b, 0xe660, 0xe655, 0xe649,
+ 0xbce6, 0xbce9, 0xbcf1, 0xbcec, 0xe64c, 0xe2a2, 0xfdcf, 0xe648,
+ 0xe65f, 0xbce8, 0x95d2, 0xbceb, 0xe661, 0xbce0, 0xe656, 0xe5fb,
+ 0xe65c, 0xc0df, 0x8ded, 0xe64a, 0xbce1, 0xe645, 0xbce5, 0xe5fc,
+ 0xbaab, 0xe641, 0xfcba, 0xe65a, 0xe642, 0xe640, 0xbcea, 0xe658,
+ 0xe5fe, 0xe651, 0xe650, 0xe65d, 0xe647, 0xbcee, 0xfdc5, 0xe9f3,
+ 0xfdd2, 0xbf49, 0xbefe, 0xea40, 0xe9eb, 0xbf41, 0xe9f7, 0xbf48,
+ 0xbf43, 0xe9f5, 0xed4f, 0xe9fb, 0xea42, 0xe9fa, 0xe9e9, 0xe9f8,
+ 0xea44, 0xea46, 0xbefd, 0xea45, 0xbf44, 0xbf4a, 0x9cdc, 0xbf47,
+ 0xe9fe, 0xbf46, 0xe9f9, 0x95cf, 0xe9ed, 0xe9f2, 0x8dee, 0xe9fd,
+ 0xbf45, 0xbf42, 0xbefc, 0xbf40, 0xe9f1, 0xe5fd, 0xe9ec, 0xe9ef,
+ 0xea41, 0xe9f4, 0xe9ea, 0xed4e, 0xea43, 0xe9ee, 0xe9fc, 0xfdd4,
+ 0xed51, 0xc0e3, 0xc0d7, 0x96ec, 0x96eb, 0xc0db, 0xed53, 0xed59,
+ 0xed57, 0xc0d9, 0xc0da, 0xc0e1, 0xed5a, 0xed52, 0xc0dc, 0xed56,
+ 0xed55, 0xed5b, 0xc0e2, 0xc0dd, 0xc0e0, 0xed54, 0xc0e4, 0xc0de,
+ 0xc0e5, 0xc0d8, 0xed58, 0xed50, 0x90b6, 0xeff7, 0xfdc3, 0xc271,
+ 0xeff4, 0xeff6, 0xc26f, 0xeff2, 0xeff3, 0xefee, 0x98ab, 0xe9f6,
+ 0xefef, 0xc270, 0xefeb, 0xc26d, 0xeff8, 0xc26e, 0xefec, 0xefed,
+ 0xeff1, 0xc273, 0xc272, 0xeff0, 0xc378, 0xf25f, 0xf265, 0xc379,
+ 0xf25c, 0xc376, 0xc373, 0xf267, 0xc377, 0x96ee, 0xc374, 0xf25e,
+ 0xf261, 0xf262, 0xf263, 0xf266, 0xeff5, 0xf25d, 0xc375, 0xf264,
+ 0xf268, 0xf260, 0x8df4, 0xf45d, 0xc46a, 0xf460, 0xc46b, 0xf468,
+ 0xf45f, 0xf45c, 0xf45e, 0xf462, 0xf465, 0xf464, 0xf467, 0xf45b,
+ 0xc469, 0xf463, 0xf466, 0xf469, 0xf461, 0xf5d3, 0xf5d4, 0xf5d8,
+ 0xf5d9, 0xf5d6, 0xf5d7, 0xf5d5, 0xfde0, 0xc4e9, 0x8c67, 0x8df6,
+ 0xc578, 0xf6eb, 0x8df7, 0xf6e8, 0xf6e9, 0xf6ea, 0xc579, 0xf7e5,
+ 0xf7e4, 0x8ffa, 0xf8af, 0xc5f4, 0xf8ad, 0xf8b0, 0xf8ae, 0xf8f5,
+ 0xc657, 0xc665, 0xf9a3, 0xf96c, 0x97d0, 0xf9a2, 0xf9d0, 0xf9d1,
+ 0xa4f5, 0x8bd2, 0x8df8, 0xa6c7, 0xca41, 0xcb5e, 0x90d9, 0xa85f,
+ 0x8c47, 0xa862, 0xfaf0, 0xcb5f, 0xa860, 0xa861, 0xfde1, 0x8df9,
+ 0xfde3, 0xcd58, 0xcd5a, 0xcd55, 0xcd52, 0xcd54, 0x8dfa, 0xaaa4,
+ 0xfb63, 0xaaa2, 0x90a6, 0xcd56, 0xaaa3, 0xcd53, 0xcd50, 0xaaa1,
+ 0xcd57, 0xcd51, 0xaaa5, 0xcd59, 0xcfaf, 0x9970, 0xcfb3, 0x91eb,
+ 0xacb7, 0x9770, 0x986f, 0xfde2, 0xcfb6, 0xacaf, 0xacb2, 0xacb4,
+ 0xacb6, 0xacb3, 0xcfb2, 0xcfb1, 0xacb1, 0xcfb4, 0xcfb5, 0xcfae,
+ 0xacb5, 0x98f2, 0xacb0, 0x9afc, 0x896c, 0xfdfd, 0xcfb0, 0x995e,
+ 0x95bd, 0xd277, 0xd278, 0xd279, 0xaf50, 0xaf4c, 0xd26e, 0xfde4,
+ 0xd276, 0xd27b, 0xaf51, 0x91e6, 0xd26c, 0xd272, 0xd26b, 0xd275,
+ 0xfde5, 0xfde6, 0xd271, 0xaf4d, 0xaf4f, 0xd27a, 0xd26a, 0xd26d,
+ 0xd273, 0xfde7, 0xd274, 0xd27c, 0xd270, 0xaf4e, 0xb26d, 0xd64e,
+ 0x9454, 0xd650, 0xd64c, 0x99b8, 0xd658, 0xd64a, 0xd657, 0xb269,
+ 0xd648, 0xda5b, 0xd652, 0xb26c, 0x97e9, 0xd653, 0xd656, 0xd65a,
+ 0xd64f, 0x9346, 0xd654, 0xb26a, 0xb26b, 0xd659, 0xd64d, 0xd649,
+ 0xd65b, 0xd651, 0xd655, 0xd64b, 0xb548, 0xb549, 0xda65, 0xb54f,
+ 0x9863, 0xda59, 0xda62, 0xda58, 0xb54c, 0xda60, 0xda5e, 0xda5f,
+ 0xb54a, 0xda63, 0x95bc, 0xfded, 0xfdf7, 0xda5c, 0xda5a, 0xb54b,
+ 0xda5d, 0xda61, 0x9870, 0x96f6, 0x8ea9, 0xb54d, 0xda64, 0x9451,
+ 0x8e43, 0x8b5a, 0xde70, 0xde77, 0xde79, 0xdea1, 0xfdee, 0xb7da,
+ 0xde6b, 0xb7d2, 0xfdf0, 0xde7a, 0xb7d7, 0xdea2, 0xb7ce, 0xfdf4,
+ 0xde7d, 0x9bf5, 0xde6d, 0xde7e, 0xde6c, 0xb7dc, 0xde78, 0xb7cf,
+ 0xdea3, 0xb7d4, 0xde71, 0xb7d9, 0xde7c, 0xde6f, 0xde76, 0xde72,
+ 0xde6e, 0xb7d1, 0xb7d8, 0xb7d6, 0xb7d3, 0xb7db, 0xb7d0, 0xde75,
+ 0x977e, 0xb7d5, 0xb54e, 0xde7b, 0x9bd5, 0xde73, 0x9ac3, 0x97c8,
+ 0xa0db, 0x91d0, 0xde74, 0x9fe4, 0xe2c1, 0x8fdd, 0xbab4, 0x91e9,
+ 0xe2bd, 0xe2c3, 0xe2bf, 0xbab6, 0xe2be, 0xe2c2, 0xe2ba, 0x98e0,
+ 0xe2bc, 0xbab5, 0x92ca, 0x9857, 0xe2c0, 0xe2bb, 0x8c51, 0xbab7,
+ 0xbab2, 0xfdeb, 0xe2c4, 0x9b49, 0xbab3, 0xe667, 0xe664, 0xe670,
+ 0xe66a, 0xe66c, 0xbcf4, 0xe666, 0xe66e, 0x9d76, 0x9eaf, 0xe66d,
+ 0xe66b, 0xe671, 0xbcf7, 0xe668, 0xe66f, 0xbcf5, 0x9ccc, 0xe663,
+ 0xe665, 0xbcf6, 0xe662, 0xe672, 0xfdea, 0xe669, 0x8df1, 0xea4a,
+ 0xbf51, 0xfdfb, 0xea55, 0xea53, 0xbf4b, 0xea49, 0xea4c, 0xea4d,
+ 0xea48, 0xbf55, 0xbf56, 0xea47, 0xea56, 0xea51, 0xbf4f, 0xbf4c,
+ 0xea50, 0xea4e, 0xbf52, 0xea52, 0xbf4d, 0x8e53, 0xbf4e, 0xea4f,
+ 0xbf50, 0xea4b, 0xea54, 0xbf53, 0xea57, 0xea58, 0xbf54, 0xfacf,
+ 0xc0e7, 0xc0ee, 0xed5c, 0xed62, 0xed60, 0xc0ea, 0xc0e9, 0xc0e6,
+ 0xed5e, 0x96f9, 0xc0ec, 0xc0eb, 0xc0e8, 0xed61, 0xed5d, 0xed5f,
+ 0xc0ed, 0x98bf, 0x9e49, 0xc277, 0xeffb, 0xc274, 0xc275, 0xeffd,
+ 0xc276, 0xeffa, 0x8ca7, 0xeff9, 0xf26c, 0xeffc, 0xf26d, 0xc37a,
+ 0xf26b, 0x9bca, 0xf26a, 0xf269, 0xc37b, 0xfdfe, 0x92dc, 0xc46c,
+ 0xf46a, 0xf46b, 0xfe41, 0x91cc, 0x91e2, 0xf5dc, 0xf5db, 0xc4ea,
+ 0xf5da, 0xf6ec, 0xf6ed, 0xf7e6, 0xf8b1, 0xfe44, 0xf8f6, 0xf9bc,
+ 0xc679, 0xf9c6, 0xa4f6, 0x8bd3, 0xaaa6, 0xaaa7, 0xfe47, 0xacb8,
+ 0xc0ef, 0xa4f7, 0xaaa8, 0xaf52, 0xb7dd, 0xa4f8, 0xb26e, 0xbab8,
+ 0xc962, 0xfe48, 0xcfb7, 0xd27d, 0xe2c5, 0xc0f0, 0xa4f9, 0xaaa9,
+ 0xcfb8, 0xcfb9, 0xda66, 0xb550, 0xdea4, 0x9455, 0xb7de, 0xe2c6,
+ 0xfe4b, 0xbcf8, 0xfe4c, 0xc37c, 0xa4fa, 0xda67, 0xa4fb, 0x8dbf,
+ 0xa6c9, 0xca42, 0xa6c8, 0xa865, 0xa864, 0xa863, 0xcb60, 0x9e78,
+ 0xaaaa, 0xaaab, 0xcd5b, 0xcfba, 0xcfbd, 0xacba, 0xcfbb, 0xacb9,
+ 0xcfbc, 0xacbb, 0xd2a2, 0xd2a1, 0xd27e, 0xaf53, 0xd65d, 0xd65e,
+ 0xb26f, 0xd65c, 0xd65f, 0xb552, 0xb270, 0xfe51, 0xb551, 0xda6b,
+ 0xda6a, 0x9456, 0xda68, 0xda69, 0xda6c, 0xdea6, 0xdea5, 0xdea9,
+ 0x9d61, 0xdea8, 0xdea7, 0xbab9, 0xe2c9, 0x9457, 0xe2c8, 0xbaba,
+ 0xe2c7, 0xe673, 0xe674, 0xbcf9, 0xea59, 0xea5a, 0x9966, 0xf272,
+ 0xc37d, 0xf271, 0xf270, 0xf26e, 0xf26f, 0xc4eb, 0xf46c, 0xf6ee,
+ 0xf8f7, 0xa4fc, 0x8bd5, 0xc9a5, 0xa5c7, 0xc9a6, 0xa069, 0xca43,
+ 0xca44, 0xcb66, 0xcb62, 0xcb61, 0xaaac, 0xcb65, 0xa867, 0xcb63,
+ 0xa866, 0xcb67, 0xcb64, 0xcd5f, 0xcfbe, 0xcd5d, 0xcd64, 0x98b4,
+ 0xaaad, 0xaab0, 0xcd65, 0xcd61, 0xcd62, 0xcd5c, 0xaaaf, 0xcd5e,
+ 0xaaae, 0xcd63, 0xcd60, 0xcfc2, 0xacbd, 0xacbe, 0xa049, 0xcfc5,
+ 0xcfbf, 0xcfc4, 0xcfc0, 0xacbc, 0xcfc3, 0xcfc1, 0xd2a8, 0xd2a5,
+ 0xd2a7, 0xaf58, 0xaf57, 0xaf55, 0xd2a4, 0xd2a9, 0xaf54, 0xaf56,
+ 0xd2a6, 0xd667, 0xd2a3, 0xd2aa, 0xa04c, 0x9e65, 0xd662, 0xd666,
+ 0xd665, 0xda6e, 0xda79, 0xd668, 0x98b5, 0xd663, 0xda6d, 0xb274,
+ 0xb273, 0xd661, 0xd664, 0xb275, 0xb272, 0xb271, 0xd660, 0xd669,
+ 0xda70, 0xda77, 0xb554, 0xda76, 0xda73, 0xfe58, 0xb556, 0x9975,
+ 0xfe53, 0xa065, 0xda75, 0xfe59, 0xda6f, 0xda71, 0xda74, 0xda72,
+ 0xb555, 0xda78, 0xb553, 0xb7df, 0x98b7, 0x98b8, 0xdead, 0xdeac,
+ 0xdeaa, 0xb7e2, 0xb7e1, 0xdeae, 0x98ba, 0xdeab, 0xe2ca, 0xbabb,
+ 0xb7e0, 0x98bb, 0xdeb0, 0xdeaf, 0xe2cd, 0xe2cb, 0xbcfa, 0x9fbc,
+ 0xbabc, 0xe2cc, 0xe676, 0xbcfb, 0xe675, 0xe67e, 0xe67d, 0xe67b,
+ 0xe67a, 0xe677, 0xe678, 0xe679, 0xe67c, 0xe6a1, 0xea5f, 0xea5c,
+ 0xea5d, 0xbf57, 0xea5b, 0xea61, 0xea60, 0xea5e, 0xed64, 0xed65,
+ 0xc0f1, 0xa04a, 0xc0f2, 0xed63, 0x9ec7, 0xc279, 0xeffe, 0xc278,
+ 0xc37e, 0xc3a1, 0xc46d, 0xf46e, 0xf46d, 0xf5dd, 0xf6ef, 0xc57a,
+ 0xf7e8, 0xf7e7, 0xf7e9, 0xa5c8, 0xcfc6, 0xaf59, 0xb276, 0xd66a,
+ 0xa5c9, 0xc9a7, 0xa4fd, 0x8ca9, 0xca45, 0x98ae, 0xcb6c, 0xcb6a,
+ 0xcb6b, 0xcb68, 0xa868, 0xcb69, 0x92d6, 0xfae1, 0xcd6d, 0x91d4,
+ 0xaab3, 0xcd6b, 0xcd67, 0xcd6a, 0xcd66, 0xaab5, 0xcd69, 0xfade,
+ 0xaab2, 0xaab1, 0xfe5b, 0xaab4, 0xcd6c, 0xcd68, 0xacc2, 0xacc5,
+ 0xcfce, 0xcfcd, 0xcfcc, 0xacbf, 0xcfd5, 0xcfcb, 0x8c53, 0xacc1,
+ 0xd2af, 0xcfd2, 0xcfd0, 0xacc4, 0xcfc8, 0xcfd3, 0xcfca, 0xcfd4,
+ 0xcfd1, 0xcfc9, 0xfe5e, 0xacc0, 0xcfd6, 0xcfc7, 0xacc3, 0xfbd7,
+ 0xfe5a, 0x94c5, 0xd2b4, 0xd2ab, 0xd2b6, 0xfaca, 0xd2ae, 0xd2b9,
+ 0xd2ba, 0xd2ac, 0xd2b8, 0xd2b5, 0xd2b3, 0xd2b7, 0xaf5f, 0xaf5d,
+ 0x98c1, 0x975c, 0xd2b1, 0xfe74, 0xd2ad, 0x9773, 0xd2b0, 0xd2bb,
+ 0xd2b2, 0xaf5e, 0xcfcf, 0xaf5a, 0xaf5c, 0xfa46, 0x9764, 0xd678,
+ 0xd66d, 0xd66b, 0xfe68, 0xd66c, 0x964e, 0xd673, 0x9765, 0xd674,
+ 0xd670, 0xb27b, 0xd675, 0xd672, 0xd66f, 0x8c5a, 0xb279, 0xd66e,
+ 0xb277, 0xb27a, 0xd671, 0xd679, 0xaf5b, 0xb278, 0xd677, 0xd676,
+ 0xb27c, 0x89a1, 0x95fa, 0x92d4, 0xfe69, 0xda7e, 0xfb45, 0x98c8,
+ 0xdaa1, 0xb560, 0x90ef, 0xdaa7, 0x98c9, 0x98ca, 0xdaa9, 0xdaa2,
+ 0xb55a, 0xdaa6, 0xdaa5, 0xb55b, 0xb561, 0xb562, 0xdaa8, 0xb558,
+ 0xda7d, 0xda7b, 0xdaa3, 0xda7a, 0xb55f, 0xda7c, 0xdaa4, 0xdaaa,
+ 0xb559, 0xb55e, 0xb55c, 0xb55d, 0x946d, 0x94b7, 0xfe6c, 0xb557,
+ 0x946b, 0xb7e9, 0xdeb7, 0xb7e8, 0xdebb, 0x92fc, 0xdeb1, 0x95eb,
+ 0xdebc, 0xfe73, 0x976e, 0xfe5f, 0xdeb2, 0xdeb3, 0xdebd, 0xdeba,
+ 0xdeb8, 0xdeb9, 0xdeb5, 0xdeb4, 0xfdbd, 0xdebe, 0xb7e5, 0x92d5,
+ 0xdeb6, 0xb7ea, 0xb7e4, 0xb7eb, 0xb7ec, 0xfeb9, 0xb7e7, 0xb7e6,
+ 0xfe71, 0xe2ce, 0xbabe, 0xbabd, 0xfbbb, 0xe2d3, 0x947a, 0xbcfc,
+ 0xbabf, 0x95fb, 0xfe77, 0xbac1, 0xe2d4, 0xb7e3, 0xbac0, 0xe2d0,
+ 0xe2d2, 0xe2cf, 0xfe79, 0xe2d1, 0xfe75, 0xe6ab, 0x945d, 0xe6aa,
+ 0xe6a7, 0xbd40, 0xea62, 0xbd41, 0xe6a6, 0xfe7c, 0xbcfe, 0xe6a8,
+ 0xe6a5, 0xe6a2, 0xe6a9, 0xe6a3, 0xe6a4, 0xbcfd, 0x9344, 0x8ea6,
+ 0xed69, 0xea66, 0xea65, 0xea67, 0xed66, 0xbf5a, 0x92d3, 0xea63,
+ 0x94b8, 0xbf58, 0xbf5c, 0xbf5b, 0xea64, 0xea68, 0xbf59, 0xfc71,
+ 0xed6d, 0xc0f5, 0xc27a, 0xc0f6, 0xc0f3, 0xed6a, 0xed68, 0xed6b,
+ 0xed6e, 0xc0f4, 0xed6c, 0xed67, 0x975e, 0xf042, 0xf045, 0xf275,
+ 0xf040, 0x8cad, 0xf46f, 0xf046, 0xc3a2, 0xf044, 0xc27b, 0xf041,
+ 0xf043, 0xf047, 0xf276, 0xf274, 0xfea7, 0xc3a3, 0xf273, 0x946a,
+ 0xc46e, 0x93e3, 0x98cf, 0xc4ed, 0xf6f1, 0xc4ec, 0xf6f3, 0xf6f0,
+ 0xf6f2, 0xc5d0, 0xf8b2, 0xa5ca, 0xcd6e, 0xd2bc, 0xd2bd, 0xb27d,
+ 0xdebf, 0xbf5d, 0xc3a4, 0xc57b, 0xf8b3, 0xa5cb, 0xa0d9, 0xcd6f,
+ 0xa260, 0xcfd7, 0xcfd8, 0xa0bf, 0xa04d, 0xa0b8, 0xd2be, 0xd2bf,
+ 0xb27e, 0xb2a1, 0xa0ce, 0xdaab, 0xdec2, 0xdec1, 0xdec0, 0xe2d5,
+ 0xe2d6, 0xe2d7, 0xbac2, 0xa0b7, 0xe6ad, 0xe6ac, 0xea69, 0xbf5e,
+ 0xbf5f, 0xfea9, 0xed72, 0xed6f, 0xed70, 0xed71, 0xf049, 0xf048,
+ 0xc27c, 0xf277, 0xf5de, 0xa5cc, 0x89c3, 0xacc6, 0xb2a2, 0xdec3,
+ 0xfeab, 0xa5cd, 0xd2c0, 0xb2a3, 0xb563, 0xb564, 0xa5ce, 0xa5cf,
+ 0xca46, 0xa86a, 0xa869, 0xacc7, 0xcfd9, 0xdaac, 0xa5d0, 0xa5d1,
+ 0xa5d2, 0xa5d3, 0x9df4, 0x896d, 0xa86b, 0xa86c, 0xcb6e, 0xcb6d,
+ 0x9c7b, 0xaab6, 0xcd72, 0xcd70, 0xcd71, 0x98d2, 0x9fa9, 0xcfda,
+ 0xcfdb, 0xfeb2, 0xaccb, 0xacc9, 0xfeb1, 0xacca, 0xacc8, 0x97d9,
+ 0xa0c4, 0xaf60, 0x9476, 0xaf64, 0xaf63, 0xd2c1, 0xaf62, 0xaf61,
+ 0xd2c2, 0x9978, 0xb2a6, 0xd67b, 0xd67a, 0xb2a4, 0xb2a5, 0xfeb3,
+ 0xb566, 0xb565, 0xdaae, 0x98d3, 0xfeb4, 0xdaad, 0xb2a7, 0x98d4,
+ 0xb7ed, 0xdec5, 0xb7ee, 0xdec4, 0x9fb9, 0xe2d8, 0xe6ae, 0xbd42,
+ 0xea6a, 0x9471, 0xed73, 0xc3a6, 0xc3a5, 0xc57c, 0xa5d4, 0xcd73,
+ 0x98d5, 0xfeb8, 0xb2a8, 0xe2d9, 0xbac3, 0xc6d4, 0xcb6f, 0xcb70,
+ 0xcd74, 0xaab8, 0xaab9, 0xaab7, 0xfeba, 0xaccf, 0xacd0, 0xaccd,
+ 0xacce, 0xcfdc, 0xcfdd, 0xaccc, 0xd2c3, 0x9e5c, 0xaf68, 0xaf69,
+ 0xfebb, 0xb2ab, 0xd2c9, 0xaf6e, 0xaf6c, 0xd2ca, 0xd2c5, 0xaf6b,
+ 0xaf6a, 0xaf65, 0xd2c8, 0xd2c7, 0xd2c4, 0xaf6d, 0xa044, 0xd2c6,
+ 0xaf66, 0xaf67, 0x98d7, 0xb2ac, 0xd6a1, 0xd6a2, 0xb2ad, 0xd67c,
+ 0xd67e, 0xd6a4, 0xd6a3, 0xd67d, 0xb2a9, 0xb2aa, 0xdab6, 0xb56b,
+ 0xb56a, 0xdab0, 0xb568, 0x98d8, 0xdab3, 0xb56c, 0xdab4, 0xb56d,
+ 0xdab1, 0xb567, 0xb569, 0xdab5, 0xdab2, 0xdaaf, 0xded2, 0xdec7,
+ 0xb7f0, 0xb7f3, 0xb7f2, 0xb7f7, 0xb7f6, 0xded3, 0xded1, 0xdeca,
+ 0xdece, 0xdecd, 0xb7f4, 0xded0, 0xdecc, 0xded4, 0xdecb, 0xb7f5,
+ 0xb7ef, 0xb7f1, 0xfebc, 0xdec9, 0x9ffe, 0xe2db, 0xbac7, 0xe2df,
+ 0xbac6, 0xe2dc, 0xbac5, 0xdec8, 0xdecf, 0xe2de, 0xbac8, 0xe2e0,
+ 0xe2dd, 0xe2da, 0xe6b1, 0xe6b5, 0xe6b7, 0xe6b3, 0xe6b2, 0xe6b0,
+ 0xbd45, 0xbd43, 0xbd48, 0xbd49, 0xe6b4, 0xbd46, 0xe6af, 0xbd47,
+ 0xbac4, 0xe6b6, 0xbd44, 0xfebd, 0xea6c, 0xea6b, 0xea73, 0xea6d,
+ 0xea72, 0xea6f, 0xbf60, 0xea71, 0xbf61, 0xbf62, 0x9ddd, 0xea70,
+ 0xea6e, 0x9ee1, 0xc0f8, 0xed74, 0xc0f7, 0xed77, 0xed75, 0xed76,
+ 0xc0f9, 0x98da, 0x9ddf, 0xfebf, 0xf04d, 0xfebe, 0xc2a1, 0xf04e,
+ 0x9eeb, 0xc27d, 0xf04f, 0xc27e, 0xf04c, 0xf050, 0xf04a, 0xc3a7,
+ 0xf278, 0xc3a8, 0xc46f, 0xf04b, 0xc470, 0x9e59, 0xa05c, 0xc4ee,
+ 0xf5df, 0xc57e, 0xf6f4, 0xc57d, 0xfec0, 0xf7ea, 0xc5f5, 0xc5f6,
+ 0x9477, 0x98dc, 0xf9cc, 0xfec1, 0xacd1, 0xcfde, 0x98de, 0xb56e,
+ 0xb56f, 0xa5d5, 0xa6ca, 0xca47, 0xcb71, 0xa86d, 0xaaba, 0xacd2,
+ 0xacd3, 0xacd4, 0xd6a6, 0xd2cb, 0xaf6f, 0xb2ae, 0xd6a5, 0xfec3,
+ 0xdab8, 0xb571, 0xdab7, 0xb570, 0xded5, 0xbd4a, 0xe6bb, 0xe6b8,
+ 0xe6b9, 0xe6ba, 0xfec8, 0xed78, 0xfec9, 0xf051, 0xf471, 0xf470,
+ 0xf6f5, 0xa5d6, 0xcd75, 0xaf70, 0xb572, 0xded6, 0xfeca, 0xe2e1,
+ 0xbd4b, 0xea74, 0xf052, 0xf472, 0xa5d7, 0xaabb, 0xacd7, 0xcfdf,
+ 0xacd8, 0xacd6, 0xacd5, 0xd2cc, 0xaf71, 0xfecb, 0xaf72, 0xaf73,
+ 0xb2b0, 0xd6a7, 0xb2af, 0x9fc2, 0x8c6b, 0xdab9, 0xb2b1, 0xb573,
+ 0xded7, 0xb7f8, 0xb7f9, 0xbac9, 0xbaca, 0xbd4c, 0xbf64, 0xea75,
+ 0xbf63, 0xed79, 0xc0fa, 0xf053, 0xf473, 0xa5d8, 0xa86e, 0xcd78,
+ 0xcd77, 0xaabc, 0xcd76, 0xaabd, 0xcd79, 0xcfe5, 0xacdb, 0xacda,
+ 0xcfe7, 0xcfe6, 0xacdf, 0xacde, 0xacd9, 0xcfe1, 0xcfe2, 0xcfe3,
+ 0xace0, 0xcfe0, 0xacdc, 0xcfe4, 0xacdd, 0x98c4, 0x94b0, 0x94b1,
+ 0xd2cf, 0xd2d3, 0xd2d1, 0xd2d0, 0xd2d4, 0xd2d5, 0xd2d6, 0xd2ce,
+ 0xd2cd, 0xfed1, 0xaf75, 0xaf76, 0xd2d7, 0xd2d2, 0xa0c1, 0xd6b0,
+ 0xfed2, 0xd2d8, 0xaf77, 0xaf74, 0xa0cd, 0xd6aa, 0xd6a9, 0xd6ab,
+ 0xd6ac, 0xd6ae, 0xd6ad, 0xd6b2, 0xb2b5, 0xb2b2, 0xb2b6, 0xd6a8,
+ 0xb2b7, 0xd6b1, 0xb2b4, 0xd6af, 0xb2b3, 0xfed3, 0x98e5, 0xdabc,
+ 0xdabe, 0xdaba, 0xdabb, 0xdabf, 0xdac1, 0xdac2, 0xdabd, 0xdac0,
+ 0xb574, 0xdedb, 0xdee0, 0xded8, 0xdedc, 0xfed6, 0xdee1, 0xdedd,
+ 0xb7fa, 0xb843, 0xb7fd, 0xded9, 0xdeda, 0xbace, 0xb846, 0xb7fe,
+ 0xb844, 0xb7fc, 0xdedf, 0xb845, 0xdede, 0xb841, 0xb7fb, 0xb842,
+ 0xdee2, 0xe2e6, 0xe2e8, 0x91e4, 0x8fc7, 0x94ae, 0xb840, 0x8a4f,
+ 0x94b2, 0xe2e3, 0xbacc, 0xe2e9, 0xbacd, 0xe2e7, 0xe2e2, 0xe2e5,
+ 0xe2ea, 0xbacb, 0xe2e4, 0xbd4e, 0xe6bf, 0xe6be, 0xbd51, 0xbd4f,
+ 0xe6bc, 0xbd4d, 0xe6bd, 0xbd50, 0x8fd4, 0xea7d, 0xeaa1, 0x98ea,
+ 0xea7e, 0xea76, 0xea7a, 0xea79, 0xea77, 0xbf66, 0xbf67, 0xbf65,
+ 0xea78, 0xea7b, 0xea7c, 0xbf68, 0xc140, 0xeda3, 0xc0fc, 0xed7b,
+ 0xc0fe, 0xc141, 0xfed8, 0xc0fd, 0xeda2, 0xed7c, 0xc0fb, 0xeda1,
+ 0xed7a, 0xed7e, 0xed7d, 0x9de0, 0xf055, 0xc2a4, 0xc2a5, 0xc2a2,
+ 0x98ee, 0xc2a3, 0xf054, 0x95c4, 0xf27b, 0xfce8, 0xc3a9, 0xf279,
+ 0xf27a, 0x98ef, 0xf474, 0xf477, 0xf475, 0xf476, 0xf5e0, 0xc4ef,
+ 0xf7eb, 0xf8b4, 0xc5f7, 0xf8f8, 0xf8f9, 0xc666, 0xa5d9, 0xace1,
+ 0x8c6e, 0xdac3, 0xdee3, 0xa5da, 0xa86f, 0xaabe, 0xfad8, 0xcfe8,
+ 0xcfe9, 0xaf78, 0xdac4, 0xb575, 0xb847, 0xc142, 0xeda4, 0xf27c,
+ 0xf478, 0xa5db, 0xfedc, 0xcda1, 0xcd7a, 0xcd7c, 0xcd7e, 0xcd7d,
+ 0xcd7b, 0xaabf, 0xa0ae, 0xace2, 0xcff2, 0xcfed, 0xcfea, 0x9d4c,
+ 0xcff1, 0xace4, 0xace5, 0xcff0, 0xcfef, 0xcfee, 0xcfeb, 0xcfec,
+ 0xcff3, 0xace3, 0x98f1, 0x98f3, 0xaf7c, 0x94c1, 0xafa4, 0xafa3,
+ 0xd2e1, 0xd2db, 0xd2d9, 0xafa1, 0xd6b9, 0xaf7a, 0xd2de, 0xd2e2,
+ 0xd2e4, 0xd2e0, 0xd2da, 0xafa2, 0xd2df, 0xd2dd, 0xaf79, 0xd2e5,
+ 0xafa5, 0xd2e3, 0xaf7d, 0xd2dc, 0xaf7e, 0xaf7b, 0x98f5, 0xfa4f,
+ 0x96e2, 0x9450, 0xb2b9, 0x96a2, 0xd6ba, 0x98f6, 0xd6b3, 0xd6b5,
+ 0xd6b7, 0x96e5, 0xd6b8, 0xd6b6, 0xb2ba, 0xd6bb, 0x98f7, 0xd6b4,
+ 0xa046, 0x96e3, 0xdac8, 0xb576, 0xdad0, 0xdac5, 0xdad1, 0xdac6,
+ 0xdac7, 0x98f8, 0xdacf, 0xdace, 0xdacb, 0xb2b8, 0xb577, 0xdac9,
+ 0xdacc, 0xb578, 0xdacd, 0xdaca, 0xdeee, 0x9ee4, 0xdef2, 0xb84e,
+ 0xe2f0, 0xb851, 0xdef0, 0xf9d6, 0xdeed, 0xdee8, 0xdeea, 0xdeeb,
+ 0xdee4, 0x94c3, 0xb84d, 0xb84c, 0x94c2, 0xb848, 0xdee7, 0xb84f,
+ 0xb850, 0xdee6, 0xdee9, 0xdef1, 0xb84a, 0xb84b, 0xdeef, 0xdee5,
+ 0xe2f2, 0xbad0, 0xe2f4, 0xdeec, 0xe2f6, 0xbad4, 0xe2f7, 0xe2f3,
+ 0xbad1, 0xe2ef, 0xbad3, 0xe2ec, 0xe2f1, 0xe2f5, 0xe2ee, 0xfee1,
+ 0xb849, 0xfee9, 0xe2eb, 0xbad2, 0xe2ed, 0x96e4, 0x89ac, 0x96db,
+ 0xbd54, 0xe6c1, 0xbd58, 0xbd56, 0xbacf, 0xe6c8, 0xe6c9, 0xbd53,
+ 0xfee2, 0xe6c7, 0xe6ca, 0xbd55, 0xbd52, 0xe6c3, 0xe6c0, 0xe6c5,
+ 0xe6c2, 0xbd59, 0xe6c4, 0x94c4, 0xfee3, 0xe6c6, 0xbd57, 0xfee7,
+ 0x9ffb, 0xbf6a, 0xeaa8, 0xeaa2, 0xeaa6, 0xeaac, 0xeaad, 0xeaa9,
+ 0xeaaa, 0xeaa7, 0x8c59, 0xeaa4, 0xbf6c, 0xbf69, 0xeaa3, 0xeaa5,
+ 0xbf6b, 0xeaab, 0x93c9, 0xc146, 0x94e8, 0xfb56, 0xedaa, 0xeda5,
+ 0xc145, 0x90c5, 0xc143, 0xedac, 0xc144, 0xeda8, 0xeda9, 0xeda6,
+ 0xedad, 0xf056, 0xc147, 0xeda7, 0xedae, 0xedab, 0xa0a8, 0xf05a,
+ 0xf057, 0xc2a6, 0xf05b, 0xf05d, 0xf05c, 0xf058, 0xf059, 0xf2a3,
+ 0xc3aa, 0xf27e, 0xf2a2, 0xf27d, 0xf2a4, 0xf2a1, 0xf47a, 0xf47d,
+ 0xf479, 0xc471, 0xf47b, 0xf47c, 0xf47e, 0xc472, 0xc474, 0xc473,
+ 0xf5e1, 0xfee5, 0xf5e3, 0xf5e2, 0x98fd, 0x98fb, 0xfee8, 0xf6f6,
+ 0x8ebf, 0xf8b5, 0xf8fa, 0xa5dc, 0x8bd8, 0xfef7, 0xcb72, 0xaac0,
+ 0xcda3, 0xaac1, 0xaac2, 0xcda2, 0xcff8, 0xcff7, 0xace6, 0xace9,
+ 0xace8, 0xace7, 0xcff4, 0xcff6, 0xcff5, 0xd2e8, 0xafa7, 0xd2ec,
+ 0xd2eb, 0xd2ea, 0xd2e6, 0xafa6, 0xafaa, 0xafad, 0x8f68, 0x94c6,
+ 0xafae, 0xd2e7, 0xd2e9, 0xafac, 0xafab, 0xafa9, 0xafa8, 0xd6c2,
+ 0x9dea, 0xd6c0, 0xd6bc, 0xb2bb, 0xd6bd, 0xb2bc, 0xd6be, 0xd6bf,
+ 0xd6c1, 0xb2bd, 0xdad5, 0xfc69, 0xdad4, 0xdad3, 0xdad2, 0xdef6,
+ 0xb852, 0xdef3, 0xdef5, 0x9cda, 0xb853, 0xfef3, 0xb854, 0xdef4,
+ 0x9c72, 0xfef0, 0x89c9, 0xe341, 0xe2f9, 0xe2fa, 0xbad7, 0xbad5,
+ 0xbad6, 0xe343, 0x9941, 0xe342, 0xe2fe, 0xe2fd, 0xe2fc, 0xe2fb,
+ 0xe340, 0xe2f8, 0x9942, 0xe6cb, 0xe6d0, 0xe6ce, 0xfef5, 0x91d7,
+ 0xe6cd, 0xe6cc, 0xe6cf, 0xeaae, 0x94cc, 0xbf6d, 0xc148, 0xedb0,
+ 0xfef8, 0xc149, 0xedaf, 0xf05f, 0xf05e, 0xc2a7, 0xf2a5, 0xc3ab,
+ 0xf4a1, 0xc5a1, 0xf6f7, 0xf8b7, 0xf8b6, 0xc9a8, 0xacea, 0xaceb,
+ 0xd6c3, 0xb856, 0xa5dd, 0xa872, 0xa871, 0xa870, 0x97a8, 0xcda4,
+ 0xfefc, 0xaac4, 0xaac3, 0xacee, 0xfdbf, 0xcffa, 0xcffd, 0xcffb,
+ 0xacec, 0xaced, 0xfefe, 0xcff9, 0xcffc, 0xafb5, 0xd2f3, 0xd2f5,
+ 0xd2f4, 0xafb2, 0xd2ef, 0x96d1, 0xafb0, 0xafaf, 0xafb3, 0xafb1,
+ 0xafb4, 0xd2f2, 0xd2ed, 0xd2ee, 0xd2f1, 0xd2f0, 0x94d5, 0x94d0,
+ 0xd6c6, 0xd6c7, 0xd6c5, 0xd6c4, 0xb2be, 0xb57d, 0xdad6, 0xdad8,
+ 0xdada, 0xb57c, 0x9944, 0xb57a, 0xdad7, 0xb57b, 0xdad9, 0xb579,
+ 0xdf41, 0xdef7, 0xdefa, 0xdefe, 0xb85a, 0xdefc, 0xdefb, 0xdef8,
+ 0xdef9, 0xb858, 0xdf40, 0xb857, 0xb85c, 0xb85b, 0xb859, 0xdefd,
+ 0xe349, 0xe348, 0x8c63, 0xe344, 0xa0b3, 0xbad8, 0xe347, 0xe346,
+ 0xbad9, 0xbd5e, 0xe6d2, 0x94cf, 0xbd5f, 0xbd5b, 0xbd5d, 0x9ffa,
+ 0xbd5a, 0xbd5c, 0x91e5, 0xeaaf, 0x9c6a, 0xbf70, 0xeab1, 0xeab0,
+ 0x8e49, 0xe345, 0xbf72, 0xbf71, 0xbf6e, 0xbf6f, 0xedb5, 0xedb3,
+ 0xc14a, 0xedb4, 0xedb6, 0xedb2, 0xedb1, 0xf060, 0xc2aa, 0xc2a8,
+ 0xc2a9, 0x8e4c, 0xf2a6, 0xf2a7, 0xc3ad, 0xc3ac, 0xf4a3, 0xf4a4,
+ 0xf4a2, 0xf6f8, 0xf6f9, 0xa5de, 0xca48, 0xa873, 0xcda5, 0xaac6,
+ 0xaac5, 0xcda6, 0x8e4d, 0xd040, 0xacef, 0xcffe, 0xacf0, 0x9a73,
+ 0xafb6, 0xd2f8, 0xd2f6, 0xd2fc, 0xafb7, 0xd2f7, 0xd2fb, 0xd2f9,
+ 0xd2fa, 0xd6c8, 0xd6ca, 0x9947, 0xb2bf, 0x8cb1, 0xd6c9, 0xb2c0,
+ 0xb5a2, 0xb5a1, 0xb57e, 0xdadb, 0xdf44, 0xb85d, 0xb85e, 0xdf43,
+ 0xdf42, 0xe34a, 0xbadb, 0xbada, 0xe34b, 0xe34c, 0xbd61, 0xbd60,
+ 0x8e50, 0xeab5, 0xe6d3, 0xe6d5, 0xe6d4, 0xeab4, 0xeab2, 0xeab6,
+ 0xeab3, 0xbf73, 0x8e4f, 0x9949, 0xedb7, 0xc14b, 0xedb8, 0xedb9,
+ 0x8e51, 0x8e52, 0xc2ab, 0xc2ac, 0xc475, 0x9ab2, 0x89a5, 0xc5d1,
+ 0xa5df, 0x994c, 0xd041, 0x9ff8, 0xd2fd, 0xafb8, 0x8e56, 0x994d,
+ 0x91ca, 0x8e57, 0xb3ba, 0xb3b9, 0x94e1, 0xb5a4, 0xdadd, 0xb5a3,
+ 0xdadc, 0x9047, 0x8fd8, 0x8e58, 0xdf45, 0xbadc, 0xe34d, 0xbadd,
+ 0xc476, 0xf4a5, 0xa6cb, 0xaac7, 0xcda7, 0xacf2, 0x94eb, 0xacf1,
+ 0xd042, 0xd043, 0xd340, 0xd342, 0xafb9, 0xd344, 0xd347, 0xd345,
+ 0x8e5c, 0x9553, 0xd346, 0xd343, 0xd2fe, 0xafba, 0xd348, 0xd341,
+ 0x9fe5, 0xd6d3, 0xb2c6, 0xd6dc, 0xb2c3, 0xd6d5, 0xb2c7, 0x9f56,
+ 0xb2c1, 0xd6d0, 0xd6dd, 0xd6d1, 0xd6ce, 0xb2c5, 0x954f, 0xb2c2,
+ 0x8e5e, 0xd6d4, 0xd6d7, 0xb2c4, 0xd6d8, 0xb2c8, 0xd6d9, 0xd6cf,
+ 0xd6d6, 0xd6da, 0xd6d2, 0xd6cd, 0xd6cb, 0xd6db, 0x996a, 0xdadf,
+ 0xdae4, 0x9c64, 0x9cd9, 0xdae0, 0xdae6, 0xb5a7, 0xd6cc, 0xdae1,
+ 0xb5a5, 0xdade, 0xb5ac, 0xdae2, 0xb5ab, 0xdae3, 0xb5ad, 0xb5a8,
+ 0xb5ae, 0xb5a9, 0xb5aa, 0x8e5d, 0xb5a6, 0xdae5, 0xb861, 0xdf50,
+ 0x9950, 0xdf53, 0xdf47, 0xdf4c, 0xdf46, 0xb863, 0xdf4a, 0x9951,
+ 0xdf48, 0xb862, 0x8e62, 0xdf4f, 0xdf4e, 0xdf4b, 0xdf4d, 0xdf49,
+ 0xbae1, 0xdf52, 0xb85f, 0xdf51, 0x9952, 0xe35d, 0xbae8, 0xe358,
+ 0xbae7, 0xe34e, 0xe350, 0xbae0, 0xe355, 0xe354, 0xe357, 0xbae5,
+ 0xe352, 0xe351, 0x8e68, 0xbae4, 0xbadf, 0xe353, 0xbae2, 0xe359,
+ 0xe35b, 0xe356, 0xe34f, 0xbae3, 0xbd69, 0xbade, 0x8e61, 0x9f59,
+ 0xe35c, 0xe6d9, 0xbd62, 0xe6db, 0xbd63, 0x8bb3, 0xbd65, 0xe6de,
+ 0xe6d6, 0xbae6, 0xe6dc, 0xe6d8, 0xb860, 0xbd68, 0xbd64, 0xbd66,
+ 0xbd67, 0xbf76, 0xe6dd, 0xe6d7, 0xbd6a, 0xe6da, 0x9f5d, 0x8e66,
+ 0xeac0, 0xeabb, 0xeac5, 0xbf74, 0xeabd, 0xbf78, 0xeac3, 0xeaba,
+ 0xeab7, 0xeac6, 0xc151, 0xbf79, 0xeac2, 0xeab8, 0xbf77, 0xeabc,
+ 0xbf7b, 0xeab9, 0xeabe, 0xbf7a, 0xeac1, 0xeac4, 0x8cb2, 0xedcb,
+ 0xedcc, 0xedbc, 0xedc3, 0xedc1, 0xc14f, 0xedc8, 0xeabf, 0x8e6e,
+ 0xedbf, 0x9f64, 0xedc9, 0xc14e, 0xedbe, 0xedbd, 0xedc7, 0xedc4,
+ 0xedc6, 0xedba, 0xedca, 0xc14c, 0xedc5, 0xedce, 0xedc2, 0xc150,
+ 0xc14d, 0xedc0, 0xedbb, 0xedcd, 0xbf75, 0x9953, 0xfab8, 0xf063,
+ 0x9954, 0xf061, 0xf067, 0xc2b0, 0xf065, 0xf064, 0xc2b2, 0xf06a,
+ 0xc2b1, 0xf06b, 0xf068, 0xc2ae, 0xf069, 0xf062, 0xc2af, 0xc2ad,
+ 0xf2ab, 0xf066, 0xf06c, 0xf2a8, 0x8e70, 0xc3b2, 0xc3b0, 0xf2aa,
+ 0xf2ac, 0xf2a9, 0xc3b1, 0xc3ae, 0xc3af, 0xc3b3, 0x9f61, 0xc478,
+ 0x8e72, 0xf4aa, 0xf4a9, 0xf4a7, 0xf4a6, 0xf4a8, 0xc477, 0xc479,
+ 0xc4f0, 0xa06b, 0xf5e5, 0xf5e4, 0x9f40, 0xf6fa, 0xf6fc, 0xf6fe,
+ 0xf6fd, 0xf6fb, 0x94ed, 0xc5a3, 0xc5a2, 0xc5d3, 0xc5d2, 0xc5d4,
+ 0xf7ed, 0xf7ec, 0xf8fb, 0xf8b8, 0xf8fc, 0xc658, 0x94ee, 0xc659,
+ 0xf96d, 0x9fbd, 0xc67e, 0xa6cc, 0x8e7b, 0xcda8, 0xd045, 0xd046,
+ 0xd044, 0x9957, 0x94f7, 0xacf3, 0x9f5f, 0xd047, 0xd048, 0xd049,
+ 0x8e73, 0xd349, 0xd34f, 0x9f62, 0xd34d, 0xafbb, 0xd34b, 0xd34c,
+ 0xd34e, 0x94f6, 0xd34a, 0xb2c9, 0xd6de, 0xb2cb, 0xd6e0, 0xb2ca,
+ 0xd6df, 0x9958, 0xdae8, 0xb5af, 0xdaea, 0xdae7, 0xd6e1, 0xb5b0,
+ 0x8e75, 0xf9db, 0xdae9, 0x9072, 0x94f8, 0xdf56, 0xb864, 0xdf54,
+ 0xb865, 0xdf55, 0xb866, 0x995a, 0xbae9, 0xe361, 0xe35e, 0xe360,
+ 0xbaea, 0xbaeb, 0xe35f, 0xa0b0, 0x8cb3, 0xe6df, 0x8e79, 0xe6e0,
+ 0x8e78, 0xbd6b, 0xe6e2, 0xe6e1, 0x94f3, 0xa261, 0xeaca, 0xeacb,
+ 0xeac7, 0x98af, 0xeac8, 0xbf7c, 0xbf7d, 0xeac9, 0xc157, 0xa0b2,
+ 0xc153, 0xc158, 0xc154, 0xc156, 0xc152, 0xc155, 0x8e7a, 0xc2b3,
+ 0xedcf, 0xf2ae, 0xf2ad, 0x995c, 0xf4ab, 0xc47a, 0xc47b, 0xf741,
+ 0xf5e6, 0x8e7c, 0xf740, 0x8e7d, 0xf8fd, 0xf9a4, 0xa6cd, 0x8bd9,
+ 0xa874, 0x89a2, 0xcda9, 0xaac8, 0xacf6, 0xd04c, 0xacf4, 0xd04a,
+ 0xacf9, 0xacf5, 0xacfa, 0xacf8, 0xd04b, 0xacf7, 0xafbf, 0xafbe,
+ 0xd35a, 0xafc7, 0xd353, 0xd359, 0xafc3, 0xd352, 0xd358, 0xd356,
+ 0xafc2, 0xafc4, 0xd355, 0xafbd, 0xd354, 0xafc8, 0xafc5, 0xafc9,
+ 0xafc6, 0xd351, 0xd350, 0xd357, 0xafc0, 0xafbc, 0xafc1, 0x9ed7,
+ 0xd6f0, 0xd6e9, 0xb5b5, 0xd6e8, 0xb2cf, 0xb2d6, 0xb2d3, 0xb2d9,
+ 0xb2d8, 0xb2d4, 0xd6e2, 0xd6e5, 0xd6e4, 0xb2d0, 0xd6e6, 0xd6ef,
+ 0xb2d1, 0xd6e3, 0xd6ec, 0xd6ed, 0xb2d2, 0xd6ea, 0xb2d7, 0xb2cd,
+ 0xb2d5, 0xd6e7, 0xb2cc, 0xd6eb, 0xd6ee, 0xa0b6, 0xdafb, 0xdaf2,
+ 0xb5b2, 0xdaf9, 0xdaf6, 0xdaee, 0xdaf7, 0xb5b4, 0xdaef, 0xdaeb,
+ 0x9e42, 0xb86c, 0xdaf4, 0x8ea4, 0xb5b1, 0xdafa, 0xb5b8, 0xb5ba,
+ 0xdaed, 0xb5b9, 0xdaf0, 0xb5b3, 0xdaf8, 0xdaf1, 0xdaf5, 0xdaf3,
+ 0xb5b6, 0xdaec, 0xb5bb, 0xb2ce, 0xb5b7, 0xb5bc, 0xb868, 0xdf5d,
+ 0xdf5f, 0xdf61, 0xdf65, 0xdf5b, 0xdf59, 0xb86a, 0xdf60, 0xdf64,
+ 0xdf5c, 0xdf58, 0xdf57, 0x8ea7, 0x8c76, 0xdf62, 0xdf5a, 0xdf5e,
+ 0xb86b, 0xb869, 0xdf66, 0xb867, 0xdf63, 0xe372, 0x9542, 0xbaee,
+ 0xe36a, 0xbd78, 0xe374, 0xbaf1, 0xe378, 0xbaf7, 0xe365, 0x987d,
+ 0xe375, 0xe362, 0x9755, 0xe377, 0xe366, 0x8ea8, 0xbafe, 0xbafb,
+ 0xe376, 0xe370, 0xbaed, 0xbaf5, 0xbaf4, 0x8eaa, 0xbaf3, 0xbaf9,
+ 0xe363, 0xbafa, 0xe371, 0xbaf6, 0xbaec, 0xe373, 0xbaef, 0xbaf0,
+ 0xbaf8, 0xe368, 0xe367, 0xe364, 0xe36c, 0xe369, 0xe36d, 0xbafd,
+ 0xe379, 0xbaf2, 0xe36e, 0xe36f, 0x89a3, 0xe36b, 0x9960, 0x9962,
+ 0xbafc, 0x94fc, 0x9961, 0xe6e7, 0xbd70, 0xbd79, 0xbd75, 0xe6e4,
+ 0x94fa, 0xbd72, 0xbd76, 0xe6f0, 0xbd6c, 0xe6e8, 0xbd74, 0x8eae,
+ 0x8eb2, 0xe6eb, 0xe6e6, 0xbd73, 0xbd77, 0xe6e5, 0xbd71, 0xe6ef,
+ 0xbd6e, 0xe6ee, 0xe6ed, 0xbd7a, 0xe572, 0xbd6d, 0x8eb0, 0xe6ec,
+ 0xe6e3, 0xbd7b, 0xe6ea, 0xbd6f, 0x9963, 0x97aa, 0xe6e9, 0x94fb,
+ 0xbfa2, 0xbfa7, 0xbf7e, 0xead8, 0xeacf, 0xeadb, 0xead3, 0xead9,
+ 0xbfa8, 0xbfa1, 0xeacc, 0xead2, 0xeadc, 0xead5, 0xeada, 0xeace,
+ 0xead6, 0xbfa3, 0xead4, 0xbfa6, 0xbfa5, 0xead0, 0xead1, 0xeacd,
+ 0xead7, 0xbfa4, 0xeade, 0xeadd, 0x8ebb, 0xedda, 0xedd6, 0xc15f,
+ 0xedd0, 0xc159, 0xc169, 0xeddc, 0xc161, 0xc15d, 0xedd3, 0xc164,
+ 0xc167, 0xedde, 0xc15c, 0xedd5, 0xc165, 0xede0, 0xeddd, 0xedd1,
+ 0xc160, 0xc15a, 0xc168, 0xedd8, 0xc163, 0xedd2, 0xc15e, 0xeddf,
+ 0xc162, 0xc15b, 0xedd9, 0xc166, 0xedd7, 0xeddb, 0xf06e, 0xf074,
+ 0xc2b9, 0xf077, 0xc2b4, 0xc2b5, 0xf06f, 0xf076, 0xf071, 0xc2ba,
+ 0xc2b7, 0x8cdc, 0xf06d, 0xc2b6, 0xf073, 0xf075, 0xc2b8, 0xf072,
+ 0xf070, 0x9876, 0x8ea1, 0xf2b8, 0xc3b7, 0xc3b8, 0xc3b4, 0x8cb4,
+ 0xc3b5, 0x8eb7, 0xf2b4, 0xf2b2, 0xf2b6, 0xc3ba, 0xf2b7, 0xf2b0,
+ 0xf2af, 0xf2b3, 0xf2b1, 0xc3b6, 0xf2b5, 0xf4ac, 0xc47e, 0xc47d,
+ 0xf4ad, 0x9da6, 0xf4af, 0xf4ae, 0xc4a1, 0xf5eb, 0xf5e8, 0xf5e9,
+ 0xf5e7, 0xf5ea, 0xc4f2, 0xf5ec, 0x9eb0, 0xc4f1, 0xf742, 0x8eb8,
+ 0xc5d5, 0xc5d7, 0xf7ee, 0xc5d6, 0xf8b9, 0xf940, 0xf942, 0xf8fe,
+ 0xf941, 0xc66c, 0x9d70, 0x896e, 0x896f, 0x8970, 0x8971, 0x8972,
+ 0x8973, 0x8974, 0xa6ce, 0x8975, 0xacfb, 0xd26f, 0xafca, 0xb2da,
+ 0xdafc, 0xdafd, 0x8ebc, 0x8ebd, 0xeadf, 0xc16a, 0xede1, 0x8ebe,
+ 0xc2bb, 0x9dd1, 0xf2ba, 0xf2b9, 0xc4a2, 0xf5ed, 0x94fd, 0xf743,
+ 0xc5f8, 0xca49, 0x8bd7, 0x8bda, 0xaac9, 0xa875, 0xd04d, 0xd360,
+ 0xd35b, 0xd35f, 0xd35d, 0xafcb, 0xd35e, 0xd35c, 0xd6f1, 0xdafe,
+ 0xdb40, 0xdf69, 0xdf6a, 0xb86e, 0xb86f, 0xdf68, 0xdf6b, 0xdf67,
+ 0xb86d, 0xbb40, 0xa0e2, 0xb870, 0xe37a, 0xbd7c, 0xe6f1, 0xbd7d,
+ 0x9fe9, 0xbfa9, 0xeae2, 0xeae0, 0xeae1, 0xede4, 0xede3, 0xede2,
+ 0xf2bb, 0xc3b9, 0xf2bc, 0xf744, 0xc5f9, 0xf8ba, 0xa6cf, 0xaacb,
+ 0xaaca, 0xd04f, 0xacfc, 0xfda8, 0xd04e, 0xd362, 0x8ae7, 0xafcc,
+ 0xd6f2, 0xd361, 0x8ec2, 0xb2dc, 0xd6f5, 0xd6f3, 0xd6f4, 0xb2db,
+ 0xdb42, 0xdb43, 0xdb41, 0x8ec4, 0xb873, 0xdf6d, 0xdf6c, 0xdf6e,
+ 0xb872, 0xb871, 0xe6f2, 0xe6f4, 0x9964, 0xbd7e, 0xe6f3, 0xeae3,
+ 0xbfaa, 0xf079, 0x9965, 0xf078, 0xc3bb, 0xf2bd, 0xc3bd, 0xc3bc,
+ 0xf4b0, 0xf5ee, 0xc4f3, 0xa6d0, 0xd050, 0xacfd, 0xd365, 0xafce,
+ 0xd364, 0xd363, 0xafcd, 0xd6fb, 0xd6fd, 0xd6f6, 0xd6f7, 0xb2dd,
+ 0xd6f8, 0xb2de, 0xd6fc, 0xd6f9, 0xd6fa, 0xb2df, 0xb5be, 0xb5bf,
+ 0xdb44, 0xdf6f, 0xdf70, 0x954e, 0xe37e, 0xbb43, 0xbb41, 0xbb42,
+ 0xe37b, 0xe37c, 0xe37d, 0xe6f9, 0x98b3, 0xe6fa, 0xbda1, 0xe6f7,
+ 0xe6f6, 0xe6f8, 0xe6f5, 0xbfad, 0xeae4, 0xbfab, 0xbfac, 0xede6,
+ 0xc16b, 0xede5, 0xefa8, 0xf07a, 0xf07b, 0xc2bc, 0x8ecb, 0xc2bd,
+ 0xc16c, 0xf2be, 0xf2bf, 0xf4b1, 0xc4a3, 0xa6d1, 0x8bdf, 0xa6d2,
+ 0xacfe, 0xaacc, 0xafcf, 0xd051, 0x8ece, 0xb5c0, 0xa6d3, 0xad41,
+ 0xd052, 0xd053, 0xad40, 0xad42, 0xa6d4, 0xd054, 0xafd1, 0xd366,
+ 0xafd3, 0xafd0, 0xafd2, 0xd741, 0xb2e0, 0x8ecf, 0xd740, 0xd6fe,
+ 0x9968, 0xdf71, 0xe3a1, 0x9969, 0xbda2, 0xbfae, 0xeae6, 0xeae5,
+ 0xede7, 0x996b, 0x8ed1, 0xf5ef, 0x996c, 0xa6d5, 0xcb73, 0xcdaa,
+ 0xad43, 0xd055, 0xd368, 0x8ed4, 0x8ed5, 0xafd4, 0xd367, 0xafd5,
+ 0xd743, 0xb2e2, 0xd742, 0xd744, 0xb2e1, 0xdb46, 0xdb47, 0xdb45,
+ 0xb5c1, 0x996d, 0xb874, 0xb875, 0xbb45, 0xa0be, 0xe3a3, 0xe3a2,
+ 0xbb44, 0x8ed6, 0xa0bc, 0xa0b5, 0xe6fb, 0xa0b4, 0xe6fc, 0xeae7,
+ 0xc170, 0xc16f, 0xc16d, 0xc16e, 0xc171, 0xf07c, 0xc2bf, 0xc2be,
+ 0xf2c0, 0xf4b2, 0xc5a5, 0xc5a4, 0xa6d6, 0x8be0, 0xd1fb, 0xb877,
+ 0xb5c2, 0xb876, 0xbb46, 0xa6d7, 0xc9a9, 0xa6d8, 0xa6d9, 0xcdab,
+ 0xcb76, 0xcb77, 0xa877, 0xcb74, 0xa876, 0xa879, 0xcb75, 0xa87b,
+ 0xa87a, 0xcb78, 0xa878, 0x89b5, 0xaad1, 0xaacf, 0xcdad, 0xaace,
+ 0x8edd, 0xaad3, 0xaad5, 0xaad2, 0xcdb0, 0xcdac, 0xaad6, 0xaad0,
+ 0xa87c, 0xaad4, 0xcdaf, 0x9e5d, 0x9971, 0xcdae, 0xaacd, 0x89ae,
+ 0x9de8, 0xd05b, 0xad47, 0xad48, 0xd05d, 0x9565, 0xd057, 0xd05a,
+ 0xd063, 0xd061, 0xad49, 0xd067, 0xad4c, 0xd064, 0xd05c, 0xd059,
+ 0xdb49, 0xd062, 0xad44, 0xd065, 0xd056, 0xd05f, 0xad46, 0xad4b,
+ 0xd060, 0xad4f, 0xad4d, 0xd058, 0xad4a, 0xd05e, 0xad4e, 0xad45,
+ 0xd066, 0x9972, 0x8b5c, 0xafda, 0xafe3, 0xafd8, 0xafd6, 0xd36a,
+ 0xafde, 0xafdb, 0xd36c, 0x89b1, 0xafdd, 0xd36b, 0xd369, 0xd36e,
+ 0xafe2, 0xafe0, 0xdb48, 0xd36f, 0xd36d, 0xafd7, 0xa0c0, 0xafd9,
+ 0xafdc, 0x8edf, 0xafdf, 0x9566, 0xafe1, 0x9974, 0x9976, 0x9977,
+ 0x9979, 0xd74e, 0xb2e4, 0x9dda, 0xd745, 0xd747, 0x8ee0, 0xd748,
+ 0xd750, 0xd74c, 0xd74a, 0xd74d, 0xd751, 0xb2e5, 0xb2e9, 0xd746,
+ 0xd74f, 0xb2e7, 0x935c, 0xb2e6, 0xd74b, 0xd749, 0xb2e3, 0xb2e8,
+ 0x9de6, 0x8b5f, 0x9563, 0xb5c8, 0xdb51, 0xdb4f, 0xb5ca, 0x9567,
+ 0xdb4a, 0xdfa1, 0xb5c9, 0xdb4e, 0x9de3, 0xdb4b, 0xb5c5, 0xb5cb,
+ 0xdb50, 0xb5c7, 0xdb4d, 0xbb47, 0xb5c6, 0xdb4c, 0xb5cc, 0xb5c4,
+ 0xb5c3, 0x997c, 0x997d, 0x997e, 0xdf77, 0xdf75, 0xdf7b, 0xdf73,
+ 0xdfa2, 0xdf78, 0xdf72, 0xb87b, 0xb8a3, 0xdf7d, 0xdf76, 0xb87e,
+ 0x8b5b, 0xb87c, 0xdf7e, 0xb879, 0xb878, 0xdf79, 0xb87d, 0xb5cd,
+ 0xdf7c, 0xdf74, 0xb87a, 0xb8a1, 0xb8a2, 0x99a3, 0xbb4c, 0xbb48,
+ 0xbb4d, 0xe3a6, 0x99a4, 0xe3a5, 0xe3a7, 0xbb4a, 0xe3a4, 0xbb4b,
+ 0xe3aa, 0xe3a9, 0xe3a8, 0xbb49, 0x99a6, 0xe741, 0xe744, 0xbda8,
+ 0xe743, 0xbda7, 0xbda3, 0xbda4, 0xbda5, 0xe740, 0xe6fe, 0xbda6,
+ 0xe742, 0xe6fd, 0x99a8, 0xeae9, 0xeaf3, 0xbfb1, 0xbfb0, 0x8abe,
+ 0xeaed, 0xeaef, 0xeaea, 0xeaee, 0xeae8, 0xeaf1, 0xbfaf, 0xeaf0,
+ 0xeaec, 0x9e61, 0xeaf2, 0xeaeb, 0xc174, 0xede8, 0xedee, 0xc178,
+ 0xc17a, 0xc177, 0xc176, 0x99aa, 0xc175, 0xc173, 0xede9, 0xedec,
+ 0xc172, 0xeded, 0xa0c8, 0xc179, 0xedeb, 0xedea, 0xc2c0, 0xc2c1,
+ 0xf0a1, 0xf07d, 0xf07e, 0xf2c2, 0xf2c1, 0xc3be, 0xf4b4, 0xc4a4,
+ 0xf4b3, 0xf5f0, 0xf745, 0xc5a6, 0xf943, 0xf944, 0xc5d8, 0xa6da,
+ 0x99ab, 0xaad7, 0xdb52, 0xbb4e, 0xc17b, 0xedef, 0xa6db, 0xafe5,
+ 0xafe4, 0xdb53, 0xfec4, 0xeaf4, 0xa6dc, 0xad50, 0x98c2, 0xdb54,
+ 0xdb55, 0xdb56, 0xbb4f, 0xbfb2, 0xa6dd, 0xaad8, 0xd068, 0xafe6,
+ 0xd370, 0xb2ea, 0xdb57, 0xb8a4, 0xbb50, 0xbfb3, 0xc17c, 0xc2c2,
+ 0xf4b5, 0xa6de, 0xaad9, 0xafe7, 0xd752, 0xb5ce, 0xbb51, 0xe3ab,
+ 0xe745, 0x8ee8, 0xa0ba, 0xa6df, 0xb5cf, 0xdfa3, 0xbb52, 0xa6e0,
+ 0xcdb1, 0xd069, 0xad51, 0xd372, 0xfd77, 0xafea, 0x8eee, 0xafe8,
+ 0xafe9, 0xafeb, 0x9ebf, 0xd371, 0xd757, 0xd754, 0xd756, 0xb2eb,
+ 0xb2ed, 0xb2ec, 0xd753, 0xb2ee, 0xd755, 0xdb58, 0xdb59, 0x89c2,
+ 0xdb5a, 0xdfa6, 0xdfa7, 0xdfa5, 0xdfa8, 0xb8a5, 0xdfa4, 0xbb53,
+ 0xe74a, 0xe746, 0xe749, 0xe74b, 0xe748, 0xe747, 0x99ac, 0xeaf5,
+ 0xeaf6, 0xeaf7, 0xbfb4, 0xbfb5, 0xedf1, 0xedf0, 0xedf2, 0xf0a3,
+ 0xf0a2, 0xf2c4, 0x956b, 0xf2c5, 0xf2c3, 0x956c, 0xc4a5, 0xf4b6,
+ 0xf4b7, 0xf746, 0xf7ef, 0xf8bb, 0xa6e1, 0xa87d, 0xc17d, 0xa6e2,
+ 0xd758, 0xdb5b, 0x99af, 0xc641, 0xca4a, 0x994a, 0x8976, 0x8f48,
+ 0xca4b, 0xca4d, 0xa6e3, 0xca4e, 0xca4c, 0xcba2, 0xcba3, 0xcb7b,
+ 0xfbee, 0xcba1, 0xa8a1, 0xa8a2, 0xcb7c, 0xcb7a, 0xcb79, 0xcb7d,
+ 0xa87e, 0xcb7e, 0xd06a, 0xcdb6, 0xaadc, 0xcdb5, 0xcdb7, 0xaadb,
+ 0xcdbc, 0xaadf, 0xcdb2, 0xcdc0, 0xcdc6, 0xaae6, 0xcdc3, 0xaae3,
+ 0x99ae, 0xcdb9, 0xcdbf, 0xcdc1, 0x8efb, 0xcdb4, 0xaae2, 0xaadd,
+ 0xcdba, 0xaae4, 0xaae7, 0xaae1, 0xaada, 0xcdbe, 0xcdb8, 0xcdc5,
+ 0xaae9, 0xaae5, 0xaae0, 0xcdbd, 0xafec, 0xcdbb, 0xaade, 0xaae8,
+ 0x8cd0, 0xcdb3, 0xcdc2, 0xcdc4, 0x8b52, 0x99b0, 0x8977, 0x8f41,
+ 0xad62, 0xad5c, 0xad64, 0xad61, 0xd071, 0xd074, 0xad5d, 0x99b1,
+ 0xd06b, 0xad56, 0xad60, 0xad63, 0xad65, 0xd0a2, 0xd077, 0x8f49,
+ 0xad55, 0xd0a1, 0xad59, 0xad57, 0xad52, 0xd06f, 0xd07e, 0xd073,
+ 0xd076, 0xd0a5, 0xfa4d, 0xad66, 0xd07d, 0xad5e, 0xd078, 0xd0a4,
+ 0xd075, 0xd079, 0xd07c, 0x9de4, 0x8cb5, 0xd06d, 0xd0a3, 0xd07b,
+ 0xfbe9, 0x9b54, 0xd06c, 0x99b2, 0xd070, 0xad5f, 0xad5a, 0xad53,
+ 0xad58, 0xad54, 0xad67, 0xd06e, 0xd3a5, 0xad5b, 0x9e68, 0xd07a,
+ 0xce41, 0xd3a8, 0xaffa, 0x8f4a, 0xd376, 0x8f42, 0xd3a3, 0xd37d,
+ 0x8f51, 0xd3b2, 0xd3aa, 0xd37e, 0xd3a9, 0xd378, 0xd37c, 0xd3b5,
+ 0xaffd, 0xd3ad, 0xd3a4, 0xafed, 0xd3b3, 0xd374, 0xd3ac, 0xaffc,
+ 0xaff7, 0xd373, 0xaff5, 0xaff4, 0xaff9, 0xd3ab, 0xaff1, 0xaff8,
+ 0xd072, 0xdb5c, 0xd3a6, 0x9846, 0xd37a, 0xaffb, 0xd37b, 0xd3a1,
+ 0xaffe, 0xd375, 0xd3af, 0xd3ae, 0xd3b6, 0xaff3, 0xaff0, 0xd3b4,
+ 0xd3b0, 0xd3a7, 0xd3a2, 0xaff6, 0xaff2, 0xd377, 0xafee, 0xd3b1,
+ 0xafef, 0xd379, 0x99b4, 0x8ef5, 0xfd55, 0x9ccd, 0x8978, 0xd75e,
+ 0xd760, 0xd765, 0xd779, 0xb2fc, 0xb2f2, 0xd75d, 0xb2fd, 0xb2fe,
+ 0xd768, 0xd76f, 0xd775, 0xd762, 0xd769, 0x8f53, 0xb340, 0xd777,
+ 0xd772, 0xb2fa, 0xb2f8, 0xd76e, 0xd76a, 0xd75c, 0xb2ef, 0xd761,
+ 0xd759, 0x8f6f, 0xb2f7, 0xb2f9, 0xd766, 0xd763, 0xb2f4, 0xd773,
+ 0xb2f1, 0xd764, 0xd77a, 0xd76c, 0x8e63, 0xd76b, 0xb2f0, 0xb2fb,
+ 0xb2f3, 0xd75a, 0xd75f, 0xd770, 0xd776, 0xb341, 0xd75b, 0xd767,
+ 0xd76d, 0xb2f6, 0x8f56, 0xd778, 0xd771, 0xd774, 0xfe76, 0xb2f5,
+ 0x9fc6, 0xdb6c, 0xdb60, 0xb5d7, 0xdb7d, 0xdba7, 0xdbaa, 0xb5d5,
+ 0xdb68, 0xdba3, 0xdb69, 0xdb77, 0xb5e2, 0xdb73, 0xb5df, 0xfaac,
+ 0xdb74, 0xdb5d, 0xdba4, 0x8f58, 0xb5e8, 0xdba1, 0xdb75, 0xdbac,
+ 0xdb70, 0xdfc8, 0xdbaf, 0xb5e6, 0xdb6e, 0xdb7a, 0xb5e9, 0xb5d4,
+ 0xdb72, 0xdbad, 0xdb6b, 0xdb64, 0xdb6f, 0xdb63, 0xdb61, 0xb5d0,
+ 0xdba5, 0xdb6a, 0xdba8, 0x9848, 0xdba9, 0xb5d8, 0xb5dd, 0xb5d9,
+ 0xb5e1, 0xdb7e, 0xb5da, 0xdb76, 0xdb66, 0xb5d2, 0xdb5e, 0xdba2,
+ 0xdbab, 0xdb65, 0xb5e0, 0xdbb0, 0xdb71, 0xdb6d, 0xb5d1, 0xb5e5,
+ 0x99b7, 0xdb7c, 0xb5e7, 0xdb78, 0xb5dc, 0xb5d6, 0xb5de, 0xb5d3,
+ 0xb5e4, 0xdb79, 0xdb67, 0xdb7b, 0xdb62, 0xdba6, 0x9665, 0xfa6c,
+ 0x9de7, 0xdbae, 0x9e62, 0x96cc, 0x8e67, 0xdb5f, 0xfc75, 0x987e,
+ 0xdfc7, 0xdfdd, 0xb855, 0xdfcc, 0xfdb9, 0xdfca, 0xdfb5, 0xb8a9,
+ 0xdfc5, 0xdfd9, 0xdfc1, 0xb8b1, 0xdfd8, 0xdfbf, 0xb5e3, 0xdfcf,
+ 0xdfc0, 0xdfd6, 0xb8b0, 0xb8a8, 0x97fc, 0xdfaa, 0xdfb2, 0xdfcb,
+ 0xdfc3, 0xdfdc, 0xdfc6, 0xb8b6, 0xdfd7, 0x98f9, 0xb8ad, 0x8f66,
+ 0xdfc9, 0xdfd1, 0xdfb6, 0xdfd0, 0xdfe1, 0xdfb1, 0xdfd2, 0x956e,
+ 0xdfdf, 0x9245, 0xdfab, 0xb5db, 0x8f60, 0xdfb9, 0xdfb8, 0xb8af,
+ 0x9ed1, 0xdfbc, 0xdfbe, 0xdfcd, 0xdfde, 0xb8b2, 0xfecd, 0xb8b3,
+ 0x99b9, 0xdfb0, 0xb8ab, 0xdfb4, 0xdfda, 0xb8b4, 0xb8ac, 0xb8ae,
+ 0xb8b5, 0xdfe0, 0xdfd3, 0xdfce, 0x8f62, 0x974c, 0xdfbb, 0xdfba,
+ 0xb8aa, 0xdfac, 0xb8a7, 0xdfc4, 0xdfad, 0xdfc2, 0xdfb7, 0xdfdb,
+ 0x91c7, 0x955f, 0xb8a6, 0xdfb3, 0x99bb, 0xdfaf, 0xdfd5, 0xdfae,
+ 0xbb60, 0xe3d3, 0x8e6d, 0x8f71, 0xe3c2, 0x94cb, 0xe3ac, 0xe3ca,
+ 0xbb58, 0xe3bb, 0xe3c5, 0xbb5b, 0xe3be, 0xbb59, 0xe3af, 0xe3cd,
+ 0xe3ae, 0xe3c1, 0x95b1, 0xe3ad, 0xe3bf, 0xe3c8, 0xe3c6, 0xe3ba,
+ 0xe3b5, 0xe3b3, 0x9af2, 0xe3b4, 0xe3c7, 0xe3d2, 0xe3bc, 0xbb5a,
+ 0xe3b7, 0xe3cb, 0xbb5d, 0xe3b6, 0xe3b0, 0xe3c0, 0xbb61, 0x96c3,
+ 0x99bd, 0xbb55, 0xbb5e, 0xe3b8, 0xe3b2, 0xbb57, 0xdfd4, 0xbb56,
+ 0xe3c3, 0xbb54, 0xbb63, 0xbb5c, 0xe3c4, 0xe3b9, 0xe3b1, 0xe3cc,
+ 0xe3bd, 0xbb62, 0xe3d0, 0xbb5f, 0xe3cf, 0xe3c9, 0xe3ce, 0xa0cf,
+ 0xe3d1, 0x8f6d, 0x99be, 0x8ef4, 0x8f72, 0x95e4, 0xe773, 0xe774,
+ 0xe767, 0xe766, 0xe762, 0xbdb4, 0xbdac, 0xe776, 0xe775, 0xdfa9,
+ 0xe75f, 0xe763, 0xe75d, 0xe770, 0xe761, 0x99bf, 0xe777, 0xe75a,
+ 0xe758, 0xe764, 0xe76e, 0xe769, 0xbdb6, 0xe74f, 0xe76d, 0x9242,
+ 0xfba5, 0xbdb7, 0xdfbd, 0xe75b, 0xe752, 0xe755, 0xe77b, 0xe75c,
+ 0xe753, 0xe751, 0xe74e, 0x99c0, 0xbdb0, 0xe765, 0xbdaf, 0xbdb3,
+ 0xe760, 0xe768, 0xbda9, 0xe778, 0xe77c, 0xbdab, 0xe757, 0xe76b,
+ 0xe76f, 0xe754, 0xe779, 0xbdb2, 0xbdb1, 0xe74c, 0xbdb5, 0xe772,
+ 0xe756, 0xe76a, 0xe750, 0xe75e, 0xe759, 0xbdad, 0xbdae, 0xe76c,
+ 0xe77d, 0xe77a, 0xe771, 0xfdb4, 0x8f77, 0x99c1, 0xe74d, 0xbdaa,
+ 0xeb49, 0xeb40, 0xeb43, 0xfab9, 0xbfbb, 0xeb45, 0xeaf9, 0xeb41,
+ 0xeb47, 0xbfb8, 0xbfbc, 0xbfb6, 0x8f40, 0xfa44, 0xeafb, 0xeb4c,
+ 0xeb46, 0x99c2, 0xeafc, 0xeb55, 0xeb4f, 0xeaf8, 0xee46, 0xeafe,
+ 0xbfb7, 0x8f5c, 0xeb4a, 0xeb54, 0xbfbf, 0x8cbd, 0xeb51, 0xeafd,
+ 0xeb44, 0xeb48, 0xeb42, 0xeb56, 0xeb53, 0xeb50, 0xbfb9, 0xbfba,
+ 0xbfbe, 0xeafa, 0xeb57, 0xbfbd, 0xeb4d, 0x99c4, 0x99c5, 0xeb4b,
+ 0x8f7b, 0xeb4e, 0xee53, 0xee40, 0xee45, 0xee52, 0xee44, 0xedfb,
+ 0xee41, 0xc1a2, 0xedf4, 0xee4d, 0xee4f, 0xedf3, 0xc1a1, 0xee51,
+ 0xee49, 0xc1a8, 0xee50, 0xee42, 0xc1aa, 0xedf9, 0xeb52, 0xee4a,
+ 0xee47, 0xedf5, 0xee55, 0xc1a4, 0xc1a5, 0xedf7, 0xee48, 0x8cb6,
+ 0xee54, 0xee4b, 0xedfd, 0xc1a7, 0xc1a3, 0xee4c, 0xedfe, 0xee56,
+ 0xedf8, 0xee43, 0xee4e, 0xedfa, 0xedfc, 0xc2cb, 0xedf6, 0xc1a9,
+ 0xc2c4, 0xc17e, 0xc1a6, 0xc2c8, 0xf0b3, 0xf0a9, 0xf0a4, 0xf0aa,
+ 0xf0b4, 0xf0b8, 0xf0b7, 0xc2ca, 0xc2c9, 0xf0ab, 0xf0b9, 0xf0ae,
+ 0xf0a6, 0x8fa3, 0xf0a8, 0xf0a7, 0xf0ad, 0xf0b2, 0xf0a5, 0xf0ac,
+ 0xf0b1, 0xc2c7, 0xf0af, 0xc2c5, 0xf0b0, 0xc2c3, 0xc2c6, 0xf2d5,
+ 0xf0b5, 0xc3c2, 0x8cce, 0xf2cd, 0xf2d1, 0xf2c9, 0xf2cc, 0xf2d4,
+ 0xc3c0, 0xf2d9, 0xf2d2, 0x99c6, 0xf2ca, 0xf2da, 0xf2d3, 0xc3c3,
+ 0xc3c4, 0xf2d7, 0xf2cb, 0xc3bf, 0xc3c1, 0xf2c6, 0xf2ce, 0xf2c8,
+ 0x96cd, 0xf2d8, 0xf2d6, 0xf2c7, 0xf2cf, 0xf4be, 0xc3c5, 0xf2d0,
+ 0xc4a7, 0xc4a9, 0xc4a6, 0x96c7, 0xf4c3, 0xf4bb, 0xf4b9, 0xf4bd,
+ 0xf4ba, 0x8fa5, 0xf4bf, 0xf4c1, 0xc4aa, 0xc4ac, 0xf4c0, 0xc4ad,
+ 0xc4ab, 0xf4c2, 0xfabb, 0x8c61, 0x9570, 0xc4a8, 0x9368, 0x8f7e,
+ 0xc4f4, 0xf5f1, 0xf5f7, 0xc4f6, 0xf4bc, 0xf5f6, 0xf5fd, 0xf5f4,
+ 0xf5fb, 0xf5fa, 0xf4b8, 0xf5f5, 0xf0b6, 0xf5fe, 0xf5f3, 0xf5f8,
+ 0x8faa, 0xf5fc, 0xf5f2, 0xf74a, 0xc4f5, 0xf5f9, 0xa050, 0xf7f4,
+ 0xf74b, 0xf749, 0xf747, 0xf748, 0xf74c, 0xc5d9, 0xf7f2, 0xf7f0,
+ 0xf7f5, 0xf7f3, 0xf7f6, 0xc5da, 0xf7f1, 0x90d3, 0xf8bc, 0x9556,
+ 0xf945, 0xf946, 0xf947, 0xf9c7, 0xf9bd, 0xca4f, 0xaaea, 0xad68,
+ 0xd3b8, 0xd3b7, 0xb040, 0xb342, 0xd77c, 0xd77b, 0xb5ea, 0xb8b8,
+ 0xb8b7, 0xb8b9, 0xe3d4, 0xe77e, 0xeb58, 0xeb5a, 0xeb59, 0xc1ab,
+ 0xee57, 0xf0ba, 0xf9a5, 0xa6e4, 0x8fb8, 0xcdc9, 0xcdca, 0xcdc8,
+ 0xcdc7, 0xaaeb, 0x99c8, 0xd0a9, 0xd0a7, 0xd0a6, 0xad69, 0xad6b,
+ 0xad6a, 0xd0a8, 0x8faf, 0xd3c4, 0xd3c1, 0xd3bf, 0xb041, 0xd3c2,
+ 0xb046, 0xd3bc, 0xd3cb, 0xd3cd, 0xd3bd, 0x99c9, 0xb043, 0xd3ce,
+ 0xd3c9, 0xd3bb, 0xd3c0, 0xd3ca, 0xd3c6, 0xd3c3, 0xb048, 0xd3cc,
+ 0xd3be, 0x9579, 0xd3c7, 0xd3b9, 0xb047, 0xb044, 0xd3c5, 0xd3c8,
+ 0xd3ba, 0xb045, 0xb042, 0x9f49, 0xb34c, 0xd7a5, 0xb34b, 0x99ca,
+ 0xd7a8, 0xd7ab, 0xb348, 0xb346, 0xd77e, 0xd7a9, 0xd7a7, 0xd7a4,
+ 0xd7ac, 0xd7ad, 0xd7af, 0xd7b0, 0xd77d, 0xb345, 0xd7a2, 0xd7a1,
+ 0xd7ae, 0xb347, 0xd7a3, 0xb349, 0xb344, 0xd7a6, 0xb34d, 0xb34a,
+ 0xd7aa, 0xb5f1, 0xdbbf, 0xdbb4, 0xb5ee, 0xdfe7, 0xdbbd, 0xdbb1,
+ 0xb5ec, 0xdbb6, 0xb5ef, 0xdbba, 0xdbb8, 0xb5f2, 0xb5eb, 0xdbb2,
+ 0xdbb5, 0xb5f0, 0xdbb3, 0xdbbe, 0xdbbc, 0xdbb7, 0xdbb9, 0xdbbb,
+ 0xb5ed, 0x99cb, 0xdfe8, 0xdfee, 0xdfe4, 0xdfea, 0xb8ba, 0xdfe6,
+ 0xb8c0, 0xb8bf, 0xb8be, 0xdfed, 0xb8c1, 0xb8c2, 0xdfe3, 0xdff0,
+ 0xb8c3, 0xb8bd, 0xb8bc, 0xdfec, 0xb8c4, 0xdfe2, 0xdfe5, 0xdfef,
+ 0xdfeb, 0xe3f4, 0xe3e9, 0xb8bb, 0xbb6a, 0xe3dd, 0xe3f2, 0xe3de,
+ 0xbb65, 0xe3db, 0xe3e4, 0xe3dc, 0xbb67, 0xe3d6, 0xe3f1, 0xbb68,
+ 0xe3ee, 0xe3ef, 0xe3d7, 0xbb6d, 0xe3e6, 0xe3e0, 0xe3e7, 0xe3da,
+ 0xe3f3, 0xe3eb, 0xe3e5, 0xe3d5, 0xbb69, 0xe3ec, 0xbb6c, 0xe3f0,
+ 0xe3ea, 0xbb66, 0xe3e8, 0xe3e2, 0xbb64, 0xe3d9, 0xe3e1, 0xe3ed,
+ 0xe3df, 0xe3e3, 0xbdc1, 0xdfe9, 0xe7b2, 0xe7bb, 0xe7b1, 0xe7ad,
+ 0xe7aa, 0xbdc2, 0xe7a8, 0xbb6b, 0xe7a1, 0xbdc0, 0xe7a7, 0xbdbf,
+ 0xe7ac, 0xe7a9, 0xe7b9, 0xe7b4, 0xe7ae, 0xe7b3, 0xbdbb, 0xe7ab,
+ 0xe7be, 0xe7a2, 0xe7a3, 0xe7ba, 0xbdbc, 0xe7bf, 0xbdbe, 0xe7c0,
+ 0xe7b0, 0xe3d8, 0xe7b6, 0xe7af, 0xe7b8, 0xe7b5, 0x9dd5, 0x8fb0,
+ 0xe7a6, 0xbdb9, 0xe7bd, 0xbdba, 0xe7a4, 0xbdbd, 0xeb64, 0xe7b7,
+ 0xe7bc, 0xfa7a, 0xeb61, 0xbdb8, 0xbfc0, 0xeb6b, 0xeb67, 0x9e5f,
+ 0xeb65, 0xeb60, 0xeb6f, 0x99cd, 0xa0c9, 0xbfc4, 0xeb5c, 0xeb68,
+ 0xeb69, 0xeb5f, 0xeb5e, 0xeb6c, 0xeb62, 0xeb5d, 0xeb63, 0xeb6e,
+ 0xeb5b, 0xeb6d, 0xeb6a, 0xbfc2, 0xbfc1, 0xbfc3, 0xeb66, 0xf0cb,
+ 0x9adb, 0xa0c6, 0xee59, 0xc1b1, 0xee5d, 0xee5a, 0xee61, 0xee67,
+ 0xee5c, 0x8fb4, 0xee70, 0xc1ae, 0xee6a, 0xee5f, 0xee6b, 0xee66,
+ 0xee6d, 0xee5e, 0xc1b3, 0xc1b2, 0xee60, 0xee6e, 0xee58, 0xee6c,
+ 0xc1ac, 0xa0d7, 0xee64, 0xee63, 0xee68, 0xee5b, 0xc1b0, 0xc1b4,
+ 0xee62, 0xee69, 0xc1b5, 0xee65, 0xa0c7, 0xc1ad, 0xc1af, 0xf0c7,
+ 0xf0c5, 0xa043, 0xf0cc, 0xf0c9, 0xf0cd, 0x8fb5, 0xf0be, 0xf0c6,
+ 0xf0d1, 0xee6f, 0xf0c2, 0xc2cf, 0xe7a5, 0xf0bd, 0xf0ca, 0xf0c4,
+ 0xf0c1, 0xf0bc, 0xf0bb, 0xf0d0, 0xf0c0, 0xf0bf, 0xc2cd, 0xf0c8,
+ 0x8fb2, 0xc2cc, 0xc2ce, 0xf0c3, 0xf0cf, 0xa061, 0xf2de, 0xf2df,
+ 0xc3c9, 0xf2dc, 0xc3c6, 0xf2e4, 0xc3ca, 0xf2e6, 0xf2db, 0xf0ce,
+ 0xf2e8, 0xf2dd, 0x9e5e, 0xc3c7, 0xf2e3, 0xf2e5, 0xf2e0, 0xf2e7,
+ 0xf2e2, 0xf2e1, 0xc3c8, 0x8fb6, 0xf4c5, 0xf4c6, 0xf4c8, 0xc4ae,
+ 0xc4af, 0xf4c9, 0xf4c7, 0x9fe8, 0xf4c4, 0xf642, 0xf645, 0xf641,
+ 0xc4fa, 0xf643, 0xc4f9, 0xc4f8, 0xc4f7, 0xf644, 0xf751, 0xf74f,
+ 0x9cb2, 0xf74e, 0xf640, 0xf750, 0xf646, 0xf74d, 0x957c, 0xf7f9,
+ 0xf7d7, 0xf7f7, 0xc5db, 0xf7f8, 0xf7fa, 0xf8bf, 0xc5fa, 0xf8be,
+ 0xf8bd, 0xc5fb, 0xc65a, 0xf96e, 0xf9a7, 0xf9a6, 0xf9a8, 0xa6e5,
+ 0xd0aa, 0x9fc7, 0xd3cf, 0xd3d0, 0x8fbb, 0x8fbc, 0xdbc0, 0xf647,
+ 0xf8c0, 0xa6e6, 0xad6c, 0xd0ab, 0x8fec, 0xd7b1, 0xb34e, 0xdbc2,
+ 0xdbc1, 0xb5f3, 0xb8c5, 0xe7c1, 0xbdc3, 0xbdc4, 0x8fc0, 0x936a,
+ 0xbfc5, 0xc5fc, 0xa6e7, 0x8be4, 0x9c7c, 0xd0ac, 0xaaed, 0xd0ae,
+ 0xd0ad, 0xad6d, 0xd3d1, 0x95a1, 0xd3d8, 0xb049, 0xd3d6, 0xd3d4,
+ 0xd3db, 0xd3d2, 0xd3d3, 0xb04a, 0xb04e, 0xd3dc, 0xb04d, 0xd3da,
+ 0xd3d7, 0xd3d5, 0xb04b, 0xb04c, 0xd3d9, 0xfeec, 0x95a3, 0xb350,
+ 0xd7b2, 0xb355, 0xd7c2, 0xb354, 0xd7c4, 0x8c45, 0x8cb8, 0xd7b8,
+ 0xb352, 0xd7c3, 0xd7b3, 0xb353, 0xd7bf, 0xd7bb, 0xd7bd, 0xd7b7,
+ 0xd7be, 0x8fc1, 0xb34f, 0xd7ba, 0xa052, 0xd7b9, 0xd7b5, 0xd7c0,
+ 0xd7bc, 0xd7b4, 0xd7b6, 0xb351, 0xd7c1, 0x99d0, 0xb5f6, 0xdbcd,
+ 0x8fc3, 0x8fc4, 0xdbc9, 0xdbcb, 0xdbc6, 0xdbc5, 0xdbc3, 0xdbca,
+ 0xdbcc, 0xdbc8, 0x95a4, 0xdbc7, 0xb5f4, 0xb5f5, 0x8fc6, 0x9e60,
+ 0xdbcf, 0xb8cd, 0xdff2, 0xdff8, 0xdff3, 0xdff4, 0xf9d8, 0xdff9,
+ 0xb8cf, 0xb8c7, 0xb8ce, 0xdff1, 0xdbc4, 0xb8ca, 0xb8c8, 0xdff7,
+ 0xdff6, 0xb8c9, 0xb8cb, 0xdff5, 0xb8c6, 0xb8cc, 0x95a5, 0xe3f6,
+ 0xbb74, 0xe442, 0xe441, 0xe3fb, 0xbb76, 0xe440, 0xe3f7, 0xe3f8,
+ 0xbb6e, 0xbb70, 0x9cb3, 0xe3fd, 0xe3f5, 0xbb72, 0xbb71, 0xe3f9,
+ 0xe3fe, 0xe3fc, 0xbb73, 0xe3fa, 0x99d1, 0xfef1, 0xdbce, 0xbb6f,
+ 0xe7c2, 0xe7c9, 0xbdc6, 0xe7cd, 0xbdca, 0xe7c5, 0xe7c3, 0xe7cc,
+ 0xbdc5, 0xe7cb, 0xbdc7, 0xbdc8, 0xe7c4, 0xbdc9, 0xe7ca, 0xe7c6,
+ 0xe7c7, 0xe7c8, 0xbb75, 0xeb70, 0xeb7c, 0xbfca, 0xeb77, 0xeb79,
+ 0x99d2, 0xbfc8, 0xeb71, 0xeb75, 0xeb78, 0xbfc6, 0xbfc9, 0xeb7b,
+ 0xeb73, 0xeb74, 0xeb7a, 0xeb72, 0xeb76, 0xbfc7, 0xee72, 0xee71,
+ 0xc1b7, 0xee77, 0xc1b9, 0xc1b6, 0xee73, 0xc1ba, 0xee74, 0xee75,
+ 0xee78, 0x9cc2, 0xc1b8, 0xf0d6, 0x99d3, 0xf0d9, 0xf0d3, 0xf0d5,
+ 0x95a7, 0xf0d4, 0xf0d7, 0xf0d8, 0xee76, 0xf0d2, 0x95a9, 0xc3cd,
+ 0xf2ec, 0xf2ef, 0xf2f1, 0xf2ea, 0xf2eb, 0xf2ee, 0xf2f0, 0xc3ce,
+ 0xc3cc, 0xc3cb, 0xf2ed, 0xf2e9, 0xf4ca, 0xc4b0, 0x95a6, 0xf4cb,
+ 0xf649, 0xc4fb, 0xf64b, 0xc4fc, 0xf648, 0xf64a, 0xc5a8, 0xf752,
+ 0xc5a7, 0xf7fd, 0xf7fc, 0xf7fb, 0x9c5d, 0xf948, 0xf949, 0xf94b,
+ 0xf94a, 0xca50, 0xa6e8, 0x98e2, 0xad6e, 0xd7c5, 0xb5f7, 0xdffa,
+ 0xc2d0, 0x8fc9, 0xf2f2, 0xa0c2, 0x8fca, 0xa8a3, 0xb357, 0x99d4,
+ 0xb356, 0xa0b9, 0xdbd0, 0xb5f8, 0xdbd2, 0xdbd1, 0xdffb, 0xb8d0,
+ 0xe443, 0xe446, 0xe445, 0xe444, 0xe7ce, 0xe7d0, 0xe7cf, 0x9b58,
+ 0xbfcc, 0x8fcd, 0xa0d4, 0xbfcb, 0xc1bb, 0xee79, 0xee7b, 0xee7a,
+ 0xc2d1, 0xf2f4, 0xf2f3, 0xf4cc, 0xc4b1, 0x8fce, 0xc4fd, 0xf754,
+ 0xf753, 0xc65b, 0x8be5, 0x8979, 0xa8a4, 0xd0af, 0xad6f, 0xd7c8,
+ 0xd7c6, 0xd7c7, 0xdbd4, 0xdbd5, 0xe043, 0xdbd3, 0xdffc, 0xe041,
+ 0xe040, 0xe042, 0xb8d1, 0xdffe, 0xdffd, 0xe044, 0x8fd0, 0xe449,
+ 0xe447, 0xe448, 0xe7d3, 0xe7d1, 0xe7d2, 0xeb7d, 0xee7c, 0xee7d,
+ 0xc2d2, 0xf2f5, 0xf4cd, 0xc4b2, 0xf64c, 0xf755, 0xc5a9, 0xf7fe,
+ 0xf94c, 0xa8a5, 0xad71, 0xad72, 0xd0b0, 0xd0b1, 0xad70, 0xb054,
+ 0xb052, 0xb051, 0xb058, 0xb050, 0xb059, 0xd3dd, 0xb056, 0xb053,
+ 0xb057, 0xb055, 0xb04f, 0xb35f, 0x95b6, 0xb359, 0xd7cc, 0xb35e,
+ 0xb360, 0xb35a, 0xb35b, 0xd7ca, 0x99d6, 0xb358, 0x95e5, 0xd7cb,
+ 0xb35d, 0xd7c9, 0xb35c, 0xb644, 0xb646, 0x99d7, 0xdbd8, 0xb645,
+ 0xb5f9, 0xb5fd, 0x95b5, 0xb8e4, 0xe049, 0xdbda, 0xb5fe, 0xdbdd,
+ 0xdbde, 0xb643, 0xdbe0, 0xa0ca, 0xdbe2, 0xdbe3, 0xdbd7, 0xdbd6,
+ 0xdbe4, 0xb642, 0xdbe1, 0xdbdf, 0xb640, 0xb5fb, 0xb647, 0xdbdb,
+ 0xdbdc, 0xdbd9, 0xb641, 0xb5fc, 0xb5fa, 0xe048, 0xb8df, 0xb8da,
+ 0xb8d5, 0x9ffd, 0xb8e5, 0xb8d6, 0xb8d2, 0xb8e1, 0xb8de, 0xb8e0,
+ 0xb8d7, 0xb8dc, 0xb8d3, 0xb8d4, 0xe050, 0xe04d, 0xe045, 0xe04a,
+ 0xb8e2, 0xe051, 0xb8e3, 0xb8d9, 0xa058, 0xe047, 0xe04f, 0xe04b,
+ 0xe04e, 0xe04c, 0xb8dd, 0xe046, 0xb8d8, 0xe44c, 0xbb78, 0xbb7b,
+ 0xe44e, 0x8fd6, 0xbba5, 0xe44d, 0xbb7d, 0x99d8, 0xbdcf, 0xe44f,
+ 0xbba4, 0xe44b, 0xbba6, 0x8fd3, 0xbb79, 0xb8db, 0xbb7c, 0xbb7a,
+ 0xbb7e, 0xbba2, 0xbb77, 0xbba7, 0xbba3, 0x8fe5, 0xbba1, 0xe44a,
+ 0x8fe9, 0xbdd6, 0xbdd2, 0x99d9, 0xbdd9, 0xe7d6, 0xbdda, 0xe7e2,
+ 0xe7db, 0xbdcb, 0xe7e3, 0xe7dd, 0xbdd5, 0xe7de, 0xbdd4, 0xe7e1,
+ 0xbdce, 0xe7df, 0xe7d5, 0xbdcd, 0xebaa, 0xbdd3, 0xbdd0, 0xbdd8,
+ 0xe7d4, 0xe7d8, 0xbdcc, 0xe7d7, 0xe7d9, 0xe7da, 0xbdd7, 0xe7dc,
+ 0xe7e0, 0xe7e4, 0x927c, 0xbddb, 0xbfd2, 0xeba5, 0xebab, 0xeba8,
+ 0xeb7e, 0xebac, 0xeba1, 0xeba7, 0xbfcd, 0xbfd3, 0xebad, 0x9c45,
+ 0xbfcf, 0xbfd9, 0xbfd4, 0xebaf, 0xeba9, 0xbfd0, 0xeba2, 0xbfda,
+ 0xeba3, 0xeba4, 0xbfdb, 0xbfd8, 0xbdd1, 0xbfce, 0xebb0, 0xbfdc,
+ 0xbfd5, 0xebae, 0xbfd1, 0xbfd6, 0xbfd7, 0xc1c3, 0xeea4, 0xeead,
+ 0xeeaa, 0xeeac, 0xc1c0, 0xeea5, 0x8fde, 0xeeab, 0xc1bc, 0xeea7,
+ 0xc1c4, 0xeea3, 0xeea8, 0xeeaf, 0xeba6, 0xeea9, 0xeea2, 0xc1bd,
+ 0xeea1, 0xc1be, 0xeeb0, 0xc1bf, 0xeeae, 0xc1c2, 0xee7e, 0x8fdf,
+ 0xc1c1, 0xeea6, 0xf0dc, 0xf0ea, 0xf0e5, 0xf0e7, 0xf0db, 0xc2d3,
+ 0xf0da, 0xc2d6, 0xc2d5, 0xa04b, 0xf0e9, 0xf0e1, 0xf0de, 0xf0e4,
+ 0xf0dd, 0xf0df, 0xf0e8, 0xf0e6, 0xc2d4, 0xf0ed, 0xf0eb, 0xf0e2,
+ 0xf0ec, 0xf0e3, 0x8fe2, 0xf2f9, 0xc3cf, 0xf341, 0xa0cc, 0xf64f,
+ 0xc3d6, 0xf0e0, 0xf2f7, 0xc3d2, 0xf2f8, 0xf2fd, 0x8fe3, 0x8fe4,
+ 0xc3d4, 0xc3d5, 0xf2f6, 0xf340, 0xf342, 0xf2fa, 0xf2fc, 0xf2fe,
+ 0xf2fb, 0xf343, 0xc3d1, 0xc3d7, 0xc3d3, 0xc3d0, 0xf4d0, 0x9bc4,
+ 0xc4b7, 0xf4ce, 0x9bfc, 0xf4d2, 0xf4d3, 0xc4b5, 0xf4d4, 0xf4d1,
+ 0x964c, 0xf4cf, 0xc4b8, 0xc4b4, 0xf4d5, 0xc4b6, 0xc4b3, 0xc4fe,
+ 0xc540, 0xf64e, 0xf64d, 0xf650, 0xf651, 0xc541, 0xf756, 0xf75b,
+ 0xc5aa, 0x9af6, 0xf758, 0x8cae, 0xf757, 0xf75a, 0xf759, 0xf843,
+ 0xc5dc, 0xf842, 0xf840, 0xf841, 0x8fe7, 0xc5fe, 0xc5fd, 0xf8c1,
+ 0xf8c2, 0xc640, 0xf94d, 0xf94e, 0xc667, 0x8fe8, 0xc66d, 0xf9a9,
+ 0xf9c8, 0x8be7, 0x897a, 0x897b, 0xa8a6, 0xd7cd, 0xd7ce, 0xe052,
+ 0xe450, 0xe7e5, 0xc1c6, 0xc1c5, 0xf0ee, 0xf344, 0xf844, 0xa8a7,
+ 0xd3de, 0xb05a, 0xb361, 0xe054, 0xe053, 0xbddc, 0xe7e6, 0xbddd,
+ 0xeeb1, 0xc2d7, 0x99da, 0xc676, 0xa8a8, 0xcdcb, 0xd3df, 0xb362,
+ 0xd7cf, 0xd7d0, 0xdbe5, 0xb648, 0xb8e6, 0xe056, 0xe055, 0xe057,
+ 0xe451, 0xe452, 0xbba8, 0xbfdd, 0xbdde, 0xbfde, 0xeeb5, 0xeeb2,
+ 0xeeb4, 0xeeb3, 0xc1c7, 0xf0ef, 0xf346, 0xf345, 0xcba4, 0xb05c,
+ 0xb05b, 0xd3e0, 0xd7d1, 0xdbe7, 0xdbe6, 0xb649, 0xe059, 0xe05a,
+ 0xe058, 0xb8e8, 0xb8e7, 0xbbaa, 0xbba9, 0xe7e7, 0xebb3, 0xebb1,
+ 0xebb2, 0xbfdf, 0xeeb7, 0xeeb6, 0xf0f2, 0xf0f1, 0xf0f0, 0xf347,
+ 0x8fed, 0xf9aa, 0xa8a9, 0xad73, 0x95c0, 0xad74, 0xb05d, 0xb05e,
+ 0xd3e2, 0xd3e1, 0xd7d2, 0xb368, 0xb366, 0xb363, 0xb367, 0xb365,
+ 0xb364, 0xa0cb, 0xb64a, 0xdbea, 0xb8ed, 0xb64c, 0xb651, 0xdbec,
+ 0xb653, 0xb652, 0xb655, 0xdbeb, 0xdbe8, 0xb64f, 0xb64b, 0xb64d,
+ 0xdbe9, 0xb654, 0xb650, 0xb64e, 0xb8ef, 0xb8ee, 0xb8ec, 0xb8f0,
+ 0xb8ea, 0xb8eb, 0xb8e9, 0xe05b, 0x9e48, 0xe454, 0xbbac, 0xbbad,
+ 0xbbab, 0x99db, 0xe453, 0x8ff3, 0xe455, 0xe7ea, 0xe7ec, 0x8ff9,
+ 0xbde7, 0xe7ed, 0xbde0, 0xe7e9, 0xbddf, 0xbde9, 0xbde5, 0xbde6,
+ 0xbde2, 0xe7e8, 0xbde1, 0xe7ee, 0xe7eb, 0x95c1, 0xbde8, 0xa04e,
+ 0xbde3, 0xbde4, 0xebb5, 0xebb7, 0xebb6, 0x99dc, 0xebb8, 0xbfe0,
+ 0xebb4, 0xa064, 0xc1cb, 0xeeb8, 0xc1c8, 0xc1cc, 0xc1ca, 0xc1c9,
+ 0xf0f3, 0xf0f6, 0xf0f5, 0x8ff7, 0xf0f4, 0xc2d8, 0xf348, 0xf349,
+ 0xc3d8, 0xf34a, 0xc3d9, 0x89b0, 0xa048, 0xc4ba, 0xc4b9, 0xf652,
+ 0x8ffb, 0x8ff6, 0xc542, 0xf653, 0xf75c, 0xc5ab, 0xc5ac, 0x9ddc,
+ 0xf845, 0xc642, 0x99dd, 0x8be8, 0xa8aa, 0xb36a, 0xb369, 0xe05c,
+ 0xe05d, 0xbbae, 0xebb9, 0xbdea, 0xebba, 0xeeb9, 0xa8ab, 0xd0b2,
+ 0xad76, 0xad75, 0xd3e3, 0xb05f, 0xd3e4, 0xd7d5, 0x92c1, 0xd7d4,
+ 0xd7d3, 0xdbee, 0xb658, 0x9fd6, 0xdbed, 0xb657, 0xdbef, 0xb656,
+ 0xe05f, 0xe062, 0xe060, 0xe061, 0xe065, 0xe05e, 0xe066, 0xe063,
+ 0xe064, 0xbbb0, 0xe456, 0xbbaf, 0xe7f2, 0xe7f0, 0xbdeb, 0xe7ef,
+ 0xe7f1, 0xbdec, 0xebbb, 0xa0d2, 0xebbc, 0xc1cd, 0x9040, 0xf34c,
+ 0xf34e, 0xf34b, 0xf34d, 0xf4d6, 0xf654, 0xf96f, 0xa8ac, 0xad77,
+ 0xd3e5, 0xd3e7, 0xd3e6, 0xd7d8, 0xb36c, 0xd7d6, 0xb36b, 0xd7d9,
+ 0x8ac4, 0xd7da, 0xd7d7, 0x99e0, 0xdbfb, 0xb660, 0xdbf3, 0xdbf9,
+ 0xb65b, 0xb65e, 0xdbf2, 0xb659, 0xdbf6, 0xe06c, 0xb65d, 0xdbf1,
+ 0x9ff0, 0xdbf7, 0xdbf4, 0xdbfa, 0xdbf0, 0xdbf8, 0xb65c, 0xb65f,
+ 0xdbf5, 0xb65a, 0xb8f2, 0xe068, 0xb8f1, 0xe06f, 0xe06e, 0xb8f8,
+ 0xb8f9, 0xe070, 0xb8f3, 0xe06d, 0xb8f7, 0xe072, 0xe069, 0xe06b,
+ 0xb8f4, 0xe067, 0xe06a, 0xe071, 0xb8f5, 0xe073, 0xb8f6, 0xbbb1,
+ 0xe45b, 0xe461, 0xe459, 0xe462, 0x9ff3, 0xe458, 0xe45d, 0xe463,
+ 0xe460, 0xe45f, 0xe45e, 0xe457, 0xe45c, 0xe45a, 0x9dbf, 0xbdf1,
+ 0xbdee, 0xe7fb, 0xe841, 0xe843, 0xe840, 0xe7f8, 0xe7fa, 0xe845,
+ 0xe842, 0xe7fc, 0xe846, 0xe7f9, 0xe844, 0xbdef, 0xbdf5, 0xbdf3,
+ 0xe7f3, 0xbdf4, 0xbdf0, 0xe7f4, 0xe7f6, 0xe7f5, 0xe7fd, 0xe7fe,
+ 0x9ff6, 0xbdf2, 0x95c8, 0xbded, 0x9e5a, 0xe7f7, 0xebc6, 0xbfe2,
+ 0xebbd, 0xbfe3, 0xbfe6, 0xebc2, 0xebbf, 0xbfe5, 0x99e3, 0xebc3,
+ 0xebc4, 0xebbe, 0xebc7, 0xebc0, 0xebc5, 0xbfe4, 0xbfe1, 0xebc1,
+ 0x8a4a, 0xeebf, 0xc1d0, 0xc1ce, 0xc1d1, 0xc1cf, 0xeebe, 0xeebb,
+ 0xeeba, 0x9ff1, 0xeebd, 0xeebc, 0xf145, 0xc2de, 0xf0fb, 0xf0fa,
+ 0xc2d9, 0xf141, 0xf140, 0xf0f7, 0xf143, 0xf0fc, 0xc2dd, 0xf0f9,
+ 0xf142, 0xf0f8, 0xc2da, 0xc2dc, 0xf0fd, 0xc2db, 0xf0fe, 0x8aa7,
+ 0xf144, 0xf352, 0xc3de, 0xf34f, 0xf353, 0x99e6, 0xc3db, 0xf351,
+ 0xc3e0, 0x9ff7, 0xc3dd, 0x9fed, 0xf350, 0xc3df, 0xf354, 0xc3da,
+ 0x8a5c, 0x9dae, 0xc4bc, 0xc4be, 0xf4d9, 0xc4bd, 0xf4d7, 0xc3dc,
+ 0xf4d8, 0xc4bb, 0xc543, 0xc545, 0xf656, 0xc544, 0xf655, 0xf761,
+ 0xc5ad, 0xf760, 0xc5ae, 0xf75e, 0xf75d, 0xf762, 0xf763, 0xf846,
+ 0xf75f, 0xf8c6, 0xf8c3, 0xf8c4, 0xf8c5, 0xc65c, 0xf951, 0xf950,
+ 0xf94f, 0xf970, 0x95c9, 0xf9be, 0xf9ab, 0xc66e, 0xa8ad, 0xb060,
+ 0x9048, 0x99e8, 0xb8fa, 0x9049, 0x8cba, 0xbdf6, 0x90b1, 0xebc8,
+ 0xc2df, 0xf355, 0x904a, 0xf9ac, 0xa8ae, 0xaaee, 0xad79, 0xad78,
+ 0x99ea, 0xb063, 0xd3e8, 0xb061, 0xd3e9, 0xb062, 0xd7df, 0xd7db,
+ 0x9bd1, 0xb36d, 0xd7de, 0xd7dd, 0xd7dc, 0xb36e, 0xd7e0, 0xd7e1,
+ 0x99eb, 0x99ec, 0xdc43, 0xdc41, 0xdc45, 0xdc46, 0xdc4c, 0xdc48,
+ 0xdc4a, 0x99ed, 0xdc42, 0xdbfc, 0xdc49, 0x99ee, 0xdc4b, 0xdc44,
+ 0xdc47, 0xdbfd, 0xb662, 0xdc40, 0xdbfe, 0xb661, 0xb663, 0xb8fd,
+ 0xe075, 0xe077, 0xe076, 0xe07b, 0xb8fb, 0xe078, 0xe074, 0xe079,
+ 0xe07a, 0xb8fc, 0xb8fe, 0xe07c, 0xe467, 0xe466, 0xe464, 0xe465,
+ 0xbbb3, 0xbbb5, 0xbbb2, 0xbbb4, 0xe84d, 0xe84e, 0xe849, 0x904c,
+ 0xe84a, 0xbdf8, 0xbdfd, 0xbdf7, 0xbdfe, 0xbdf9, 0xe84b, 0xe84c,
+ 0xe848, 0xbe40, 0xbdfb, 0xbdfa, 0xbdfc, 0xe847, 0x904d, 0xebca,
+ 0xbfe8, 0x95cb, 0xebcc, 0xbfea, 0xebcf, 0xebcb, 0xebc9, 0xebce,
+ 0xbfe9, 0xebcd, 0xbfe7, 0xc1d3, 0xc1d6, 0xeec1, 0x97e2, 0xc1d4,
+ 0xeec0, 0xc1d2, 0xc1d5, 0xf146, 0xf147, 0xf148, 0xc2e0, 0x95cc,
+ 0xf149, 0xc2e1, 0xc3e2, 0xf358, 0xf359, 0xf357, 0xf356, 0xf35a,
+ 0xc3e1, 0xf4dd, 0xf4db, 0xf4dc, 0xf4de, 0xf4da, 0xf4df, 0xf658,
+ 0x9f78, 0xf659, 0xf657, 0xc546, 0xf764, 0xc5af, 0xf765, 0xf848,
+ 0xf847, 0x897c, 0x897d, 0x897e, 0x995d, 0xa8af, 0xb664, 0xb940,
+ 0x9b5a, 0xbbb6, 0x9050, 0xbfec, 0x8c4f, 0xbfeb, 0xc3e3, 0xc47c,
+ 0xc547, 0xa8b0, 0xb064, 0xb941, 0x9054, 0xf35b, 0xc6d6, 0x9aa8,
+ 0x99ef, 0xfeeb, 0x9da3, 0x9da1, 0x9943, 0x9945, 0x9d7d, 0xcba6,
+ 0x99f0, 0xa8b1, 0xa8b4, 0xa8b3, 0xa8b2, 0xcba5, 0x99f1, 0xcdcd,
+ 0x99f2, 0xcdcf, 0xaaef, 0x8cbc, 0x9d60, 0xaaf1, 0xcdcc, 0xcdce,
+ 0xaaf0, 0xcdd1, 0xcdd0, 0xcdd2, 0xa0a3, 0xd0b6, 0xd0b4, 0xad7c,
+ 0xd0b3, 0xada3, 0xad7e, 0xad7b, 0xada4, 0xad7d, 0xada2, 0xada1,
+ 0xd0b5, 0xad7a, 0xb06a, 0xd3eb, 0xd3f1, 0xb067, 0xb06e, 0x905b,
+ 0xb069, 0xd3ee, 0xd3f0, 0xb06c, 0xd3ea, 0xd3ed, 0xb068, 0xb065,
+ 0xd3ec, 0xb06b, 0xd3ef, 0xb06d, 0xb066, 0x9edb, 0xd7e3, 0xd7e6,
+ 0xb370, 0xb37a, 0xb376, 0xd7e4, 0x9d79, 0xb37e, 0xb377, 0xb37c,
+ 0xb372, 0xb36f, 0xb371, 0xb37d, 0xd7e5, 0xb375, 0xb378, 0xb374,
+ 0xb379, 0xd7e7, 0xb37b, 0xb373, 0xd7e2, 0xdc4d, 0xb665, 0xdc4f,
+ 0xb667, 0xb669, 0x99f3, 0xdc4e, 0xb666, 0xb66a, 0x9062, 0xb668,
+ 0xb947, 0xe0a3, 0xb94f, 0xe07e, 0xb950, 0xb945, 0xe0a1, 0xb94a,
+ 0xe0a2, 0xb943, 0xb942, 0x9f55, 0xb94d, 0xb94c, 0xb94b, 0xb949,
+ 0xb94e, 0xe07d, 0xb944, 0xb946, 0xb948, 0x9bf9, 0xbbb8, 0xbbbb,
+ 0xbbbf, 0xbbb9, 0xbbbe, 0xbbbc, 0xbbb7, 0x9065, 0xbbbd, 0xbbba,
+ 0x96e0, 0xe852, 0xbe43, 0xbe41, 0xe853, 0x98be, 0xbe44, 0xbe42,
+ 0xe851, 0xe850, 0xbff0, 0xe84f, 0xbfee, 0xbfed, 0xebd0, 0xbe45,
+ 0xbfef, 0xebd1, 0xbff2, 0xebd2, 0xbff1, 0xc1d8, 0xeec3, 0xc1d7,
+ 0xc1dc, 0xc1da, 0xc1db, 0xc2e3, 0xc1d9, 0xeec2, 0xebd3, 0xc2e2,
+ 0xc2e4, 0xc3e4, 0xc3e5, 0xf4e0, 0xc5de, 0xc5dd, 0xa8b6, 0xca55,
+ 0xb06f, 0xca52, 0xca53, 0xca51, 0xca54, 0xcbaa, 0xcba7, 0xcbac,
+ 0xcba8, 0xa8b7, 0xa8ba, 0xcba9, 0xa8b9, 0xcbab, 0x9068, 0xa8b8,
+ 0x906c, 0xcdd5, 0xcdd7, 0xaaf4, 0xcdd3, 0xcdd6, 0xcdd4, 0xaaf2,
+ 0xaaf5, 0xaaf3, 0x95d8, 0xd0b8, 0xd0bc, 0xd0b9, 0xada7, 0xada8,
+ 0x906a, 0xd0bb, 0xd0bd, 0xd0bf, 0xada5, 0xd0be, 0xada6, 0xd7ee,
+ 0xd0ba, 0xd3f2, 0xd3fb, 0xd3f9, 0xd3f4, 0xd3f5, 0xd3fa, 0xd3fc,
+ 0xb071, 0xd3f7, 0xd3f3, 0xb070, 0xb072, 0xd3f6, 0xd3fd, 0xd3f8,
+ 0xb3a1, 0xd7f1, 0xd7e9, 0xd7ef, 0xd7f0, 0xb3a2, 0xd7e8, 0xd7ea,
+ 0xd0b7, 0xd7ec, 0xd7ed, 0xd7eb, 0xb66c, 0xdc56, 0xebd4, 0xdc57,
+ 0xdc54, 0xb3a3, 0xb66e, 0xdc53, 0xdc59, 0xdc58, 0xb66b, 0xdc5c,
+ 0xdc52, 0xdc5b, 0xdc50, 0xdc5a, 0xdc55, 0xb66d, 0xe0aa, 0xe0a5,
+ 0xe0ab, 0xe0a6, 0xe0a4, 0xe0a7, 0xb951, 0xe0a9, 0xe0a8, 0xb952,
+ 0xbbc1, 0xbbc0, 0xe46e, 0xe471, 0xe469, 0xe46d, 0xbbc2, 0xe46c,
+ 0xe46a, 0xe470, 0xe46b, 0xe468, 0xe46f, 0xe859, 0xbe48, 0xf14a,
+ 0xe856, 0xe857, 0xe855, 0xdc51, 0xbe47, 0xe85a, 0xe854, 0xbe46,
+ 0xbe49, 0xe858, 0xebd5, 0xbff3, 0xebd6, 0xebd7, 0xeec4, 0xc1dd,
+ 0xf14b, 0xf14c, 0xf14d, 0xf35d, 0xf35c, 0xf4e2, 0xf4e1, 0xf65b,
+ 0xf65c, 0xf65a, 0xf766, 0xc5b0, 0xa8bb, 0xadaa, 0xada9, 0xb075,
+ 0xb074, 0xd440, 0xd441, 0xd3fe, 0x9fb2, 0xb073, 0xd7f5, 0xd7f6,
+ 0xd7f2, 0xb3a4, 0xd7f3, 0x9fae, 0xd7f4, 0x9fb0, 0x89ad, 0xdc5f,
+ 0xdc61, 0xdc5d, 0xdc60, 0xb66f, 0xdc5e, 0xb670, 0x906e, 0xdd73,
+ 0xb955, 0xb954, 0xb953, 0xe0ac, 0xe0ad, 0x9e71, 0xe473, 0xe475,
+ 0xbbc6, 0xbbc3, 0x9e4a, 0xbbc5, 0xbbc4, 0xe474, 0xe472, 0x9fdc,
+ 0xe861, 0xe85e, 0xe85f, 0xbe4d, 0xe860, 0xe85b, 0xe85c, 0xbe4a,
+ 0xbe4b, 0xe85d, 0xbe4c, 0x89ab, 0xebdb, 0x9fb8, 0xebdc, 0xebd9,
+ 0xebda, 0xbff4, 0xebd8, 0xeec8, 0xeec5, 0xeec7, 0xc1e0, 0xeecb,
+ 0xc1df, 0xeec9, 0xeecc, 0xeeca, 0xeec6, 0xc1de, 0xf14f, 0xf150,
+ 0xf14e, 0x9070, 0xf152, 0xc2e5, 0xc2e6, 0xf35f, 0xc3e7, 0xf151,
+ 0xf35e, 0xc3e6, 0xf4e5, 0xf4e6, 0xc4bf, 0xf4e4, 0x8b63, 0xf4e3,
+ 0xf65d, 0xc548, 0x95dc, 0xf849, 0xf8c8, 0xf8c7, 0xc643, 0xc65d,
+ 0xf8c9, 0xf971, 0x9071, 0xc66f, 0xa8bc, 0xaaf6, 0xb956, 0xc4c0,
+ 0xa8bd, 0xadab, 0xb3a5, 0xb671, 0xc2e7, 0xaaf7, 0xd0c1, 0xd0c0,
+ 0xd442, 0xfc5e, 0xb078, 0xb076, 0xb07a, 0xd444, 0xb079, 0xb077,
+ 0x8949, 0xd443, 0xb3a8, 0xd7fc, 0x965b, 0xb3a7, 0xb3a9, 0xd842,
+ 0xb3ab, 0xd7fe, 0xd840, 0xd7f7, 0xb3aa, 0xd843, 0xd7f9, 0xd7fa,
+ 0xd7f8, 0xb3a6, 0x8c50, 0xd841, 0xd7fb, 0xd7fd, 0x94a6, 0xdc6d,
+ 0x8fd5, 0xdc6c, 0xdc6a, 0xdc62, 0xdc71, 0xdc65, 0xdc6f, 0xdc76,
+ 0xdc6e, 0xb679, 0x9e73, 0xb675, 0xdc63, 0xdc69, 0xb677, 0x9075,
+ 0xdc68, 0xb678, 0xb67a, 0xdc6b, 0x99f7, 0xb672, 0xb673, 0xdc77,
+ 0xdc75, 0xdc74, 0xdc66, 0xdc72, 0xb676, 0x8cbf, 0xb674, 0xdc73,
+ 0xdc64, 0xdc67, 0xdc70, 0x99f9, 0x9663, 0x95b9, 0xe4ba, 0xe0b7,
+ 0xe0b0, 0xe0c3, 0xe0cc, 0xe0b3, 0xb961, 0x94d4, 0xe0c0, 0xb957,
+ 0xb959, 0xb965, 0xe0b1, 0xfcfa, 0xb95a, 0xb95c, 0xb966, 0xb95b,
+ 0x9077, 0x90ab, 0xb964, 0xe0b9, 0xe0ae, 0xb962, 0xe0b8, 0xb95e,
+ 0xe0ca, 0xb963, 0xe0c8, 0xe0bc, 0xe0c6, 0xb960, 0xe0af, 0xe0c9,
+ 0xe0c4, 0x9d4d, 0xe0cb, 0xb958, 0x99fa, 0xb967, 0xb95d, 0x92e3,
+ 0xe0b5, 0x97bb, 0xe0bd, 0xe0c1, 0x9078, 0xe0c5, 0xb95f, 0xe0b4,
+ 0xe0b2, 0xe0be, 0x99fb, 0xe0bb, 0xe0ba, 0x97e0, 0xe0bf, 0xe0c2,
+ 0xe0c7, 0xe478, 0x96dc, 0xbbc7, 0xe4a4, 0xe47a, 0xbbcc, 0xbbd0,
+ 0xe4ad, 0xe4b5, 0xe4a6, 0xbbc8, 0x9ca8, 0xe4aa, 0xe0b6, 0x9772,
+ 0xbbc9, 0xe4b1, 0xe4b6, 0xe4ae, 0x9440, 0xe4b0, 0xe4b9, 0xe4b2,
+ 0xe47e, 0xe4a9, 0x92f2, 0xbbd1, 0xbbcd, 0xe47c, 0xe4ab, 0xbbcb,
+ 0xe4a5, 0xbbca, 0xe4b3, 0xe4a2, 0xe479, 0xbbce, 0xe4b8, 0xe47b,
+ 0xe4af, 0xe4ac, 0xe4a7, 0xe477, 0xe476, 0xe4a1, 0xe4b4, 0xbbcf,
+ 0xe4b7, 0xe47d, 0xe4a3, 0xbe52, 0x99fd, 0x99fc, 0xbe5a, 0xbe55,
+ 0xe8a4, 0xe8a1, 0xe867, 0xbe50, 0xf9d7, 0x964a, 0xbe4f, 0xbe56,
+ 0x96d8, 0x99fe, 0xe865, 0xbe54, 0xe871, 0xe863, 0xe864, 0xbe4e,
+ 0xe8a3, 0xbe58, 0xe874, 0xe879, 0xe873, 0xebee, 0xe86f, 0xe877,
+ 0xe875, 0xe868, 0xe862, 0xe87d, 0xbe57, 0xe87e, 0x904b, 0xe878,
+ 0xe86d, 0xe86b, 0xe866, 0xfa41, 0xe86e, 0xe87b, 0xe86a, 0xe87a,
+ 0xe8a2, 0x9a40, 0xbe53, 0x975b, 0xe876, 0xe87c, 0xe872, 0xe86c,
+ 0xbe51, 0x9a41, 0x91dd, 0xe4a8, 0xe870, 0xbe59, 0xe869, 0x93fc,
+ 0x9a42, 0x9a43, 0x9659, 0xebf4, 0xbff7, 0xebf3, 0xebf0, 0xec44,
+ 0xbffb, 0x9a44, 0xec41, 0xebf8, 0xec43, 0xebe9, 0xebf6, 0x9051,
+ 0xbffd, 0xebe1, 0x94bf, 0xebdf, 0xec42, 0xec40, 0xebfe, 0xebed,
+ 0xebec, 0xebe2, 0xc040, 0xebe8, 0xebf2, 0xebfd, 0xc043, 0xec45,
+ 0xc1e8, 0xc045, 0xbffe, 0xebe6, 0xebef, 0xebde, 0xebe0, 0xbff5,
+ 0xc042, 0xbffa, 0xebe7, 0xebf7, 0xebf1, 0xc041, 0xebdd, 0xc1e3,
+ 0xebf9, 0xebfc, 0xbffc, 0x90a2, 0xebeb, 0xc044, 0xbff9, 0x9cab,
+ 0x9776, 0xbff8, 0xebf5, 0xebfb, 0xbff6, 0xebe4, 0xebfa, 0xebe5,
+ 0xfc55, 0xfe45, 0x94a8, 0x9a45, 0xfa4b, 0x9de1, 0xebea, 0xeed2,
+ 0x96d9, 0xeed7, 0xc1e5, 0xc1e7, 0xeedd, 0xc1e1, 0xeeec, 0xeee3,
+ 0xeed8, 0xeed9, 0xeee2, 0xc1ee, 0xeee1, 0xeed1, 0xeee0, 0xeed4,
+ 0xeeed, 0xc1ed, 0xc1eb, 0xeed5, 0xeee8, 0x9774, 0xeeda, 0xeee7,
+ 0xfdf5, 0xeee9, 0xeed0, 0xc1e6, 0x92e5, 0xeeea, 0x9645, 0x91da,
+ 0xeede, 0x90a3, 0xc1ea, 0xeedb, 0xa05f, 0xc1ec, 0xeee4, 0x90af,
+ 0x97bf, 0xc1e4, 0xeed6, 0xeee5, 0x914c, 0xeedf, 0xebe3, 0xeee6,
+ 0xeed3, 0x967a, 0xc1e9, 0xeeeb, 0x91de, 0xc1e2, 0xeece, 0x9a46,
+ 0xfeb0, 0x9779, 0x946c, 0xf160, 0xf159, 0xc2e9, 0xf154, 0xf163,
+ 0xf15b, 0xeedc, 0x9858, 0xf165, 0xf155, 0xc2e8, 0xf15f, 0xc2ea,
+ 0xc2f2, 0xc2f0, 0xf161, 0xc2f1, 0xf157, 0x9266, 0xf158, 0xf15d,
+ 0xf162, 0x93fb, 0xeecd, 0xc2eb, 0xf16a, 0xf167, 0xf16b, 0xf15e,
+ 0xf15a, 0xf168, 0xf36a, 0xf15c, 0xc2ee, 0x9a47, 0xc2ed, 0xeecf,
+ 0xc2ef, 0xf164, 0xf166, 0xc2ec, 0xf169, 0xf153, 0xf156, 0x9749,
+ 0x9748, 0x934a, 0x9ce2, 0xf373, 0xf363, 0xc3eb, 0xf371, 0x9264,
+ 0xf361, 0xc3ec, 0xf36c, 0x91df, 0xf368, 0xc3f1, 0xf372, 0xf362,
+ 0xf365, 0xc3e9, 0xf374, 0xfb79, 0xf36d, 0xf370, 0xc3ef, 0xc3f4,
+ 0xc3f2, 0xf369, 0xf364, 0x96d7, 0xc3ed, 0xc3ee, 0xf360, 0xc3ea,
+ 0x9343, 0xc3e8, 0xc3f0, 0xf36f, 0xc3f3, 0xf36b, 0xf375, 0xc3f5,
+ 0xf367, 0xf36e, 0xfdcb, 0xfe7a, 0x91db, 0x8c6a, 0xf4f3, 0xf542,
+ 0xf4f5, 0xf4fc, 0xf366, 0xf4fa, 0xf4e9, 0xf540, 0xc4c3, 0xf4ed,
+ 0xf4fe, 0xf4f4, 0x97af, 0xc4c2, 0x95dd, 0xf544, 0xf4f6, 0x9348,
+ 0xf4fb, 0xf4fd, 0xf4e7, 0xf541, 0xf4f2, 0xf4f7, 0xf4eb, 0xf4ef,
+ 0xf543, 0xf4f9, 0xf4e8, 0xf4ec, 0xf4ee, 0xf4f8, 0x9a4b, 0xc4c1,
+ 0xf4f1, 0xfc45, 0x9a4d, 0xf4ea, 0x91bc, 0x90e2, 0x90b4, 0x95e1,
+ 0xf4f0, 0xf661, 0xf666, 0xc54f, 0xf668, 0x9a4e, 0xc549, 0xf664,
+ 0xf66a, 0xc54e, 0xc54a, 0xc54b, 0xf660, 0xf667, 0xc54d, 0xf665,
+ 0xc54c, 0xf65f, 0xf663, 0xf662, 0x9a4f, 0xf65e, 0xf669, 0xfe40,
+ 0xfe43, 0xc5b1, 0xf76d, 0xf770, 0xf76c, 0xf76e, 0xf76f, 0xf769,
+ 0xf76a, 0xf767, 0x96dd, 0xf76b, 0xf768, 0xc5b2, 0xc5b3, 0x9a51,
+ 0xf84b, 0xf84d, 0x96a7, 0x90b0, 0xf84c, 0xf84e, 0xc5e0, 0xf84a,
+ 0xc5df, 0xc5e1, 0x9c4e, 0x9443, 0xf8cb, 0xf8cc, 0xc644, 0xf8ca,
+ 0x8eba, 0xf953, 0xf952, 0xf954, 0xc65f, 0xf955, 0xc65e, 0xf956,
+ 0xf972, 0xf975, 0xf974, 0xc668, 0xf973, 0x9a52, 0xfcc1, 0xc672,
+ 0xc670, 0xc671, 0xc677, 0xf9c0, 0xf9c1, 0xf9bf, 0xf9c9, 0x8be9,
+ 0x9caf, 0x8bfd, 0x9abc, 0x9ab8, 0x9aae, 0x9aa7, 0x9a53, 0x9d74,
+ 0xaaf8, 0x8bea, 0xd844, 0xdc78, 0xe8a5, 0xf376, 0x8beb, 0xaaf9,
+ 0xadac, 0xb07b, 0x90b2, 0xd845, 0xd846, 0xb3ac, 0xb67d, 0xdc7a,
+ 0xdc79, 0xb6a3, 0xb67c, 0xdc7b, 0xb67e, 0xb6a2, 0xb6a1, 0xb67b,
+ 0x95e9, 0x95e8, 0xb968, 0x95e6, 0xe0d0, 0xe0ce, 0xe0cf, 0xe0cd,
+ 0x90b5, 0xbbd2, 0x9a54, 0xbbd5, 0xbbd7, 0xbbd6, 0x90b3, 0x95e7,
+ 0xbbd3, 0xbbd4, 0x8b50, 0xe8a7, 0xe8a6, 0xbe5b, 0xe8a8, 0xe8a9,
+ 0xbe5c, 0xec4d, 0xec4b, 0xeef3, 0xec49, 0xec4a, 0xc046, 0xec46,
+ 0xec4e, 0xec48, 0xec4c, 0xeeef, 0xeef1, 0xeef2, 0xc1f3, 0xeeee,
+ 0xc1f2, 0xeef0, 0xc1ef, 0xc1f0, 0xc1f1, 0xec47, 0xc2f5, 0xf16e,
+ 0xf16c, 0xf16d, 0xc2f3, 0xc2f6, 0xc2f4, 0xf377, 0xf378, 0xc3f6,
+ 0xf545, 0xf547, 0xf546, 0xc4c4, 0xc550, 0xf66d, 0xf66c, 0xf66b,
+ 0x8bec, 0x9a56, 0xaafa, 0x8bfb, 0xc9aa, 0xca58, 0xa6e9, 0xca56,
+ 0xca59, 0xca57, 0xcbae, 0xa8c1, 0xa8c2, 0xcbb0, 0xa8bf, 0xcbaf,
+ 0xcbad, 0xa8c0, 0xa8be, 0x9a57, 0xa0aa, 0xcdd8, 0xcddb, 0xaafd,
+ 0xcdda, 0xcdd9, 0xaafc, 0xaafb, 0x9fa6, 0xab40, 0xcddc, 0xaafe,
+ 0x99cc, 0xd0c6, 0xadae, 0xadaf, 0xadb0, 0xd0c7, 0xd0c3, 0xadad,
+ 0xd0c4, 0xd0c5, 0xd0c2, 0x9c59, 0xb0a4, 0xb0a1, 0xd445, 0xb0a2,
+ 0xb0a5, 0xd446, 0xb07e, 0xb07c, 0xb07d, 0xb0a3, 0x99b5, 0xb3ad,
+ 0xd849, 0xb3b5, 0xd848, 0xd84b, 0xb3b1, 0xd84a, 0xb6ab, 0xb3af,
+ 0xb3b2, 0xb3ae, 0xb3b3, 0xb3b4, 0xb3b0, 0x90be, 0xd847, 0xb6a7,
+ 0xdc7d, 0xdca3, 0x9faf, 0xdca2, 0xb6ac, 0xb6a8, 0xb6a9, 0xdc7c,
+ 0xdc7e, 0xdca1, 0xb6a4, 0xb6a6, 0xb6aa, 0xb6a5, 0x95f2, 0xe0d3,
+ 0xe0d1, 0xe0d2, 0xb96a, 0xb96b, 0x90bf, 0xe0d4, 0xb969, 0xbbd8,
+ 0xbbda, 0xbbd9, 0xe4bb, 0xe4bc, 0xe8ab, 0x90c1, 0xe8aa, 0xfee4,
+ 0xc047, 0xc048, 0xec4f, 0xc049, 0xeef6, 0xeef4, 0xeef5, 0xc1f4,
+ 0xf16f, 0xc3f7, 0x90c4, 0xc1f5, 0xab41, 0xb0a6, 0xd447, 0x90c7,
+ 0xd84c, 0xb3b6, 0xb6ad, 0xdca4, 0xdca6, 0xb6af, 0xb6ae, 0xb6b0,
+ 0xb6b1, 0xdca5, 0xb96e, 0xb96f, 0xb96d, 0xbbdb, 0xb96c, 0xe0d5,
+ 0xbbdc, 0xe8ac, 0xec50, 0xc04a, 0xc1f6, 0xf170, 0xf174, 0xc2f9,
+ 0xf171, 0xc2fa, 0xc2f8, 0xf175, 0xc2fb, 0xf173, 0xf379, 0xc2f7,
+ 0xc3f8, 0xf8cd, 0xab42, 0xb3b8, 0xb3b7, 0xb6b2, 0xdca8, 0xdca7,
+ 0xb6b3, 0x92e4, 0xe0d9, 0xb973, 0xb970, 0xe0d8, 0xb972, 0xe0d6,
+ 0xb971, 0xe0d7, 0xe4bd, 0xbbdd, 0xe8af, 0x9f52, 0xbe5d, 0xe8ad,
+ 0xbe5e, 0xbe5f, 0xe8ae, 0xbe60, 0xec51, 0xc04e, 0xc04b, 0xc050,
+ 0xec53, 0xc04c, 0xec52, 0xc04f, 0xc04d, 0xeef9, 0xeefb, 0x90db,
+ 0xc1f7, 0xeefa, 0xc1f8, 0xeef8, 0xeef7, 0xa066, 0xf177, 0xf176,
+ 0xc2fc, 0xf178, 0xf37e, 0xc3fa, 0xf37d, 0xf37a, 0xc3f9, 0xf37b,
+ 0xf37c, 0xf548, 0xf549, 0xc4c5, 0x90d2, 0xc553, 0xf66e, 0x90d4,
+ 0xc551, 0xc552, 0xf66f, 0xc5b4, 0xc5b5, 0xf771, 0x9a5b, 0x95fd,
+ 0xc645, 0xf8cf, 0xc647, 0xf8ce, 0xf8d0, 0xc646, 0xf957, 0xf9ad,
+ 0x8bc4, 0xab43, 0x8c66, 0xb974, 0x90de, 0xe4be, 0xe8b0, 0xc051,
+ 0xc052, 0x9ce4, 0xab44, 0x90e1, 0xbe61, 0xc3fb, 0xadb1, 0xc053,
+ 0xc5e2, 0xadb2, 0xd84d, 0xdca9, 0x9e46, 0xdcab, 0xdcaa, 0x9651,
+ 0xe0dd, 0xe0da, 0xb975, 0xb976, 0xe0db, 0xe0dc, 0xe4c0, 0xe4c5,
+ 0xbbde, 0xe4bf, 0xe4c1, 0xe4c8, 0xe4c3, 0xe4c7, 0xe4c4, 0xe4c2,
+ 0xe4c6, 0xbbdf, 0xfb58, 0xe8b3, 0x90e6, 0xe8b1, 0xbe63, 0xbe62,
+ 0xe8b2, 0xbe64, 0xec56, 0xec55, 0xc054, 0xec54, 0xeefc, 0x9650,
+ 0xeefe, 0xef41, 0xef40, 0x90e7, 0xc1f9, 0xeefd, 0xf1a1, 0xc2fd,
+ 0xf17d, 0xf1a2, 0xc2fe, 0xf17b, 0xf17e, 0xf17c, 0xf179, 0xc340,
+ 0xf17a, 0x90e8, 0x9a5d, 0xf3a1, 0x9f7a, 0xf3a3, 0xf3a2, 0x9b5c,
+ 0xf54a, 0x9f7c, 0xf54b, 0xfc52, 0x90e9, 0xf670, 0x90ea, 0xc5b7,
+ 0x9a5e, 0xc5b6, 0xf84f, 0xf850, 0xc648, 0xf8d1, 0x9f76, 0xc669,
+ 0xadb3, 0xb6b4, 0xe4ca, 0xe4c9, 0xe8b5, 0xe8b4, 0x90eb, 0xc1fa,
+ 0xef43, 0xef42, 0xf1a5, 0xf1a3, 0xf1a6, 0xf1a4, 0xc3fc, 0xf3a4,
+ 0xf3a5, 0xf3a6, 0x90ec, 0xf671, 0xf772, 0xf8d2, 0x8bee, 0xadb4,
+ 0x90ee, 0xec57, 0xef44, 0x91c6, 0xadb5, 0x90f2, 0xbbe0, 0xec58,
+ 0xc341, 0xf1a7, 0xc3fd, 0xf54c, 0xf54d, 0xc554, 0xf851, 0xadb6,
+ 0xb3bb, 0xb3bc, 0xd84e, 0xb6b5, 0xb6b6, 0xdcac, 0xb6b7, 0xb97a,
+ 0xb97c, 0xe0df, 0xe0e0, 0xe0de, 0xb977, 0xb978, 0xb97b, 0xb979,
+ 0xfcbc, 0x8a74, 0xe4cb, 0xbbe1, 0xbbe2, 0xe8bc, 0xbe67, 0xe8b7,
+ 0xe8b6, 0x9657, 0xe8bb, 0xbe65, 0x9cef, 0xc05b, 0xe8b8, 0xe8bd,
+ 0xe8ba, 0xe8b9, 0xbe66, 0xc059, 0x9fdf, 0xec5a, 0xc055, 0xec5b,
+ 0x90f7, 0x90f6, 0xec59, 0xc058, 0xc056, 0xc05a, 0xc057, 0xef45,
+ 0xef4a, 0xef46, 0xef49, 0xc1fb, 0x9b5e, 0xedd4, 0xef48, 0xef47,
+ 0x90f8, 0xc344, 0xc342, 0xc345, 0xc343, 0xf1a8, 0xf1a9, 0xf1aa,
+ 0xc346, 0xf3aa, 0xc440, 0xf3a8, 0xc441, 0xf3a7, 0xf3a9, 0xc3fe,
+ 0xf551, 0xf54e, 0xf54f, 0xf550, 0xf672, 0xc556, 0x90f9, 0xc555,
+ 0x8cc9, 0xf774, 0xf773, 0xc5b8, 0xfa6a, 0xc5e3, 0xc649, 0xc660,
+ 0xf958, 0xf9ae, 0xf9af, 0x8bef, 0xadb7, 0xdcad, 0xe0e1, 0xe4cc,
+ 0xe4cd, 0xbbe3, 0xbbe4, 0xe8be, 0xbe68, 0x9fe0, 0xc1fc, 0x9142,
+ 0xf1ab, 0x9a62, 0xc347, 0xf3ad, 0xc442, 0xf3ac, 0xf3ae, 0xf3ab,
+ 0xf675, 0xf552, 0xf553, 0x9569, 0xc4c6, 0xf674, 0x9144, 0x9143,
+ 0xf673, 0x9141, 0xf775, 0xf9b0, 0x8bf0, 0xadb8, 0x9660, 0x8bf1,
+ 0xadb9, 0x99f6, 0x9149, 0xb0a7, 0xd448, 0xd84f, 0x914a, 0xb6b8,
+ 0xb6bb, 0xb6b9, 0xdcae, 0x914b, 0xb6bd, 0xb6ba, 0x9a64, 0xb6bc,
+ 0xb97e, 0x8abf, 0xe0e2, 0xe0e3, 0xe8c0, 0xb97d, 0xb9a1, 0xb9a2,
+ 0xe4cf, 0xe4ce, 0xbbe5, 0xbbe6, 0xe4d0, 0xe8bf, 0xbbe8, 0xbe69,
+ 0xbbe7, 0x9a66, 0xc05c, 0xe8c1, 0xbe6b, 0xbe6a, 0xe8c2, 0xe8c5,
+ 0xe8c3, 0xe8c4, 0xbe6c, 0x9a67, 0xc061, 0xc05f, 0x9a69, 0xc05e,
+ 0xec5d, 0xc060, 0xec5c, 0xef4b, 0xec5e, 0xc05d, 0xec5f, 0xef4e,
+ 0xef4c, 0xef4d, 0xef52, 0xc34b, 0xef51, 0xef54, 0xef53, 0xef50,
+ 0xef4f, 0xc1fd, 0x9a6a, 0x9652, 0x914d, 0xf1ae, 0x9666, 0xf1ad,
+ 0xc34a, 0xc348, 0xc349, 0x9f7b, 0xf1ac, 0x9a6b, 0xf3b1, 0xc443,
+ 0xf3b0, 0xf3af, 0xc444, 0xa06c, 0xf558, 0xf557, 0x9667, 0xf555,
+ 0xf554, 0xc4c8, 0xc4c7, 0xf559, 0xf776, 0xc5b9, 0xf677, 0xc557,
+ 0xf676, 0xf556, 0xf777, 0xc5e4, 0x9a6c, 0xc661, 0xf959, 0xf9b1,
+ 0x9a6d, 0x8bf2, 0xadba, 0xd850, 0xef55, 0xadbb, 0x966a, 0xe4d2,
+ 0xe4d1, 0xec60, 0xef57, 0xef56, 0xfcea, 0xc34c, 0xf3b2, 0xf3b3,
+ 0xc4c9, 0x966c, 0xf9b2, 0xb0a8, 0xb6bf, 0xb6be, 0xe0e4, 0xe0e6,
+ 0xb9a4, 0xe0e5, 0xb9a3, 0xb9a5, 0xe0e7, 0x91c4, 0xe4d4, 0xe4d6,
+ 0xe4d5, 0x9677, 0xe4d8, 0xbbe9, 0xe4d7, 0xe4d3, 0x99f4, 0x9a6f,
+ 0xe4d9, 0xe8cc, 0xe8cf, 0xe8d1, 0xe8c7, 0xe8cb, 0xe8c8, 0xbe6e,
+ 0xbe71, 0xbe73, 0xe8c9, 0xe8ca, 0xbe72, 0xe8cd, 0xe8d0, 0xe8ce,
+ 0xbe74, 0x9fab, 0xbe70, 0xe8c6, 0xbe6d, 0xbe6f, 0x8cbe, 0x8ec1,
+ 0xc063, 0xec66, 0xec64, 0xec63, 0x9555, 0xec69, 0xec68, 0xec67,
+ 0xec62, 0xc062, 0xec61, 0xec65, 0xc064, 0xef5a, 0x9152, 0xef5e,
+ 0xef5b, 0xef5d, 0xef5c, 0xef59, 0xef5f, 0xef62, 0xef60, 0xef61,
+ 0xc240, 0xc1fe, 0xef58, 0xef63, 0xf1b3, 0xf1b6, 0xf1b8, 0xf1b7,
+ 0xf1b1, 0xf1b5, 0xf1b0, 0x9153, 0xf1b2, 0xc34d, 0xf1af, 0x9155,
+ 0xf1b4, 0xf3c0, 0xf3b5, 0xc445, 0xc446, 0xf3b4, 0xf3b9, 0xf3bf,
+ 0xf3b7, 0xf3be, 0x955d, 0xf3bb, 0x9671, 0xf3ba, 0xf3bd, 0xf3b8,
+ 0xf3b6, 0x9c6d, 0xf3bc, 0xf560, 0xf55e, 0xc4ca, 0xf55d, 0xf563,
+ 0xf561, 0x9673, 0xc4cb, 0xf55c, 0xf55a, 0xf55b, 0xc4cd, 0xf55f,
+ 0xc4cc, 0xf562, 0xf678, 0xf67e, 0x9154, 0x9a71, 0xf679, 0xc55b,
+ 0xf6a1, 0xc55a, 0xf67d, 0xf67c, 0xc559, 0xf67b, 0xc558, 0xf67a,
+ 0xf77d, 0xf7a1, 0xf77e, 0xf77b, 0xc5bb, 0xf778, 0xf77c, 0xf7a3,
+ 0xf7a2, 0xf779, 0xf77a, 0xc5ba, 0xf852, 0xc5e7, 0x9156, 0xf853,
+ 0xc5e5, 0xc5e6, 0x966d, 0xf8d3, 0xc64a, 0xf976, 0xc66a, 0x9557,
+ 0xf9b3, 0xc66b, 0xf9b4, 0xf9b5, 0xf9c3, 0xf9c2, 0xc67a, 0xf9cd,
+ 0x89c6, 0x89c7, 0xb0a9, 0xe0e9, 0xe0e8, 0xbbea, 0xbbeb, 0xe4da,
+ 0x8a6a, 0xe8d2, 0xec6c, 0x8b57, 0xbe75, 0xc065, 0xec6a, 0x9fe1,
+ 0xec6d, 0xc066, 0x9b5f, 0xef64, 0xec6b, 0xf1b9, 0xc34e, 0xf3c1,
+ 0xf566, 0xf564, 0xf565, 0xf6a2, 0xc55c, 0xf7a4, 0xc5ea, 0xc5bc,
+ 0xc5e8, 0xc5e9, 0xf8d4, 0xc662, 0xa05d, 0xb0aa, 0xf1ba, 0xd449,
+ 0x915b, 0xb9a6, 0x915c, 0xe4db, 0xbbec, 0xe4dc, 0xe8d4, 0xe8d3,
+ 0xc068, 0xbe76, 0xbe77, 0xe8d7, 0xe8d6, 0xe8d5, 0x915e, 0xec6e,
+ 0xec71, 0xec70, 0xec6f, 0xc067, 0xef68, 0xef66, 0xef65, 0x9f5c,
+ 0xef67, 0x9f57, 0xc34f, 0xf1bc, 0xf1bd, 0xc350, 0xf1bb, 0x9f65,
+ 0xf3c3, 0xf3c2, 0xf3c5, 0xc447, 0xf3c4, 0x9a72, 0xf567, 0xf569,
+ 0xf568, 0x9160, 0xf6a3, 0xf6a6, 0xf6a4, 0xf6a5, 0xf7a5, 0xc5bd,
+ 0xf854, 0xf855, 0xf856, 0xc64b, 0xc663, 0xf9b6, 0xb0ab, 0xbe78,
+ 0xc069, 0xf1be, 0x9f5e, 0xf7a6, 0x9161, 0xf9c4, 0xd44a, 0xc67b,
+ 0xb0ac, 0xec72, 0x9164, 0xf1bf, 0xf3c6, 0x9f41, 0xf6a7, 0xf7a7,
+ 0xb0ad, 0xe4dd, 0xe4de, 0x9169, 0xbbed, 0xbbee, 0xe8d9, 0xbe7a,
+ 0xbe79, 0xe8d8, 0xef69, 0xf1c0, 0xf1c2, 0xf1c1, 0xc353, 0xc352,
+ 0xc351, 0x9168, 0xc55e, 0xf6a8, 0xc55d, 0xf7a9, 0xf7a8, 0xc64c,
+ 0xf8d5, 0xb3bd, 0xe0ea, 0xe4e1, 0xe4df, 0xe4e0, 0xe8e2, 0xe8dd,
+ 0xe8da, 0xe8e1, 0x9a74, 0xe8e3, 0xbe7c, 0xe8e0, 0xe8dc, 0xe8db,
+ 0xe8df, 0xe8de, 0xbe7b, 0xec7d, 0xec78, 0xec76, 0xeca1, 0xec77,
+ 0x96b2, 0xec73, 0x9a75, 0xec79, 0xfda5, 0xec74, 0xef72, 0xec75,
+ 0xeca2, 0x9ee9, 0x8bba, 0x916d, 0xa060, 0xec7c, 0xc06a, 0xec7b,
+ 0xec7a, 0xec7e, 0x9fde, 0xef6a, 0xef6d, 0x9fc3, 0xef6c, 0x96b5,
+ 0xef74, 0xef6f, 0xef73, 0xef71, 0xef70, 0xef6e, 0xef6b, 0xc243,
+ 0xc242, 0xc244, 0xc241, 0xef75, 0xa067, 0xf1c8, 0xf1cb, 0xf1c9,
+ 0xf1cd, 0xf1ce, 0xf1c6, 0xc358, 0xf1c7, 0xf1c5, 0xf1cc, 0xf1c4,
+ 0xf1c3, 0xc357, 0xc355, 0xc354, 0x96b3, 0xf1ca, 0xf3cf, 0xf3d5,
+ 0xc44a, 0xf3d0, 0xf3d3, 0xf3d7, 0xc44b, 0xf3d2, 0x9a76, 0xf3ca,
+ 0xf3c9, 0xf3d6, 0xf3cd, 0xf3cb, 0xf3d4, 0xf3cc, 0xc449, 0xc448,
+ 0x95d5, 0xf3c7, 0xf3c8, 0xf3d1, 0x9eca, 0xf3ce, 0x9a77, 0x9a78,
+ 0xf56c, 0xf56f, 0xc356, 0x9170, 0x916f, 0xf56d, 0xf573, 0xf571,
+ 0xf56b, 0xf576, 0x9fa3, 0xf56a, 0x9171, 0xc4cf, 0xf572, 0x96b1,
+ 0xf56e, 0xc4ce, 0xf575, 0x9f63, 0xf574, 0x9f67, 0xf6ab, 0xf6aa,
+ 0x8bb9, 0x9a7a, 0xf6b1, 0xf6ad, 0xf6b0, 0xc560, 0x8b56, 0xf6ae,
+ 0xf6af, 0xf6a9, 0xf6ac, 0xc55f, 0x9ada, 0xc5bf, 0xf7b4, 0xf7af,
+ 0xf7b3, 0x96b0, 0xf7b6, 0xf7b2, 0xf7ae, 0x9a7e, 0xc5c1, 0xf7b1,
+ 0xf7b5, 0xc5c0, 0xf7ac, 0xf570, 0xf7b0, 0xf7ad, 0x9dde, 0xf7aa,
+ 0xf7ab, 0xc5be, 0xf85a, 0xf85c, 0xf85f, 0xf85b, 0xf860, 0x96ad,
+ 0xf859, 0xf857, 0x96ae, 0xc5eb, 0xf85d, 0xc5ed, 0xc5ec, 0xf858,
+ 0xf85e, 0x9ea1, 0xf8da, 0xc64d, 0xf8db, 0xf8d9, 0xf8d6, 0xf8d8,
+ 0xf8d7, 0xf95a, 0xf95c, 0xf95b, 0xf979, 0x9e50, 0xf978, 0xf977,
+ 0xf97a, 0xc673, 0xc674, 0xf9ca, 0xf9ce, 0x96af, 0x8bf4, 0xb3be,
+ 0xdcaf, 0xe0ed, 0xb9a7, 0xe0eb, 0xe0ec, 0xe4e2, 0xe4e3, 0xbbf1,
+ 0xbbef, 0xe4e4, 0xbbf0, 0xe8e8, 0xe8eb, 0xe8e5, 0xe8ec, 0xe8e4,
+ 0xe8e6, 0xe8e7, 0xe8ea, 0x9fa4, 0xbea1, 0xe8ef, 0xe8ee, 0xbe7d,
+ 0xe8e9, 0xe8ed, 0xbe7e, 0x96bd, 0xecac, 0xc06f, 0xeca7, 0xc06b,
+ 0x96f4, 0xeca4, 0xecaa, 0xecad, 0xc070, 0xeca9, 0xeca6, 0xecae,
+ 0xeca5, 0x96b8, 0xecab, 0xc06c, 0xeca3, 0xc06d, 0xc06e, 0xeca8,
+ 0xefa9, 0xef7a, 0xef7b, 0xef7e, 0xef7c, 0xef76, 0xfaa1, 0xef79,
+ 0xefa5, 0xef7d, 0x91a7, 0xc245, 0xefa7, 0xefa4, 0xc246, 0xefa6,
+ 0xef77, 0xefa2, 0xefa3, 0xa05e, 0xefa1, 0x9a7d, 0xf1d2, 0xf1d4,
+ 0xf1d7, 0x8948, 0xf1d1, 0x9eb1, 0xc359, 0xf1d9, 0xf1d0, 0xf1da,
+ 0xf1d6, 0xf1d8, 0xf1dc, 0xf1d5, 0xf1dd, 0xf1d3, 0xf1cf, 0xc35a,
+ 0x9ddb, 0xf1db, 0xc35b, 0xc44d, 0xef78, 0xf3f1, 0xf3e8, 0xc44f,
+ 0xf3e4, 0xc450, 0x95bf, 0x8a73, 0xf3ed, 0xf3e7, 0xf3dd, 0xc44e,
+ 0xf3ea, 0xf3e5, 0xf3e6, 0xf3d8, 0xf3df, 0xf3ee, 0xf3eb, 0x9efe,
+ 0xf3e3, 0x917a, 0xf3ef, 0xf3de, 0xf3d9, 0xf3ec, 0x917b, 0xf3db,
+ 0xf3e9, 0xf3e0, 0xf3f0, 0xf3dc, 0xc44c, 0xf3da, 0xf3e1, 0xf3e2,
+ 0xf57d, 0xf57b, 0x9aa3, 0xf5a2, 0xf5ae, 0xf5a5, 0xf57c, 0xf578,
+ 0xf5a7, 0xf57e, 0xf5a3, 0xf57a, 0xf5aa, 0xf577, 0xf5a1, 0xf5a6,
+ 0xf5a8, 0xf5ab, 0xf579, 0x96c2, 0xf5af, 0xf5b0, 0xf5a9, 0xf5ad,
+ 0xf5a4, 0x9f77, 0xf6c1, 0xf6c4, 0xc561, 0xf6c3, 0xf6c8, 0xf6c6,
+ 0xc562, 0xf6bd, 0xf6b3, 0xf6b2, 0xc564, 0xf6bf, 0xf6c0, 0xf6bc,
+ 0xf6b4, 0x9aa4, 0xf6b9, 0xf5ac, 0x9aa5, 0xf6b5, 0xc563, 0xf6bb,
+ 0x91a1, 0xf6ba, 0xf6b6, 0xf6c2, 0x89b8, 0xf6b7, 0xf7bb, 0xf6c5,
+ 0xf6c7, 0xf6be, 0xf6b8, 0xf7bc, 0xf7be, 0xf7b8, 0xc5c2, 0x9173,
+ 0xf7c5, 0xf7c3, 0xc5c3, 0xf7c2, 0xf7c1, 0xf7ba, 0xf7b7, 0xf7bd,
+ 0xf7c6, 0xf7b9, 0xf7bf, 0xf869, 0xf86e, 0xf864, 0xf867, 0xc5ee,
+ 0xf86b, 0xf872, 0xf7c0, 0xf865, 0xf86f, 0xf873, 0xf86a, 0xf863,
+ 0xf86d, 0xf86c, 0xf871, 0xf870, 0xf7c4, 0xf868, 0xf862, 0xf866,
+ 0xc64e, 0xc64f, 0xf861, 0x9aa6, 0xf8e6, 0xf8dd, 0xf8e5, 0xf8e2,
+ 0xf8e3, 0xf8dc, 0xf8df, 0xf8e7, 0xf8e1, 0xf8e0, 0xf8de, 0xf8e4,
+ 0x89bd, 0xf95d, 0x89b9, 0xf95e, 0x917d, 0xf960, 0xf95f, 0xf962,
+ 0xf961, 0xf97c, 0xf97b, 0xf9b7, 0xf9b8, 0x96bb, 0xf9c5, 0xc678,
+ 0xc67c, 0x9ff2, 0xf9cf, 0xc67d, 0x8bf5, 0xb3bf, 0xc4d0, 0xf6c9,
+ 0x9aa9, 0xc650, 0xc651, 0xb3c0, 0xe0ee, 0x9f54, 0xb9a8, 0xe8f0,
+ 0x9fe3, 0x9eed, 0xecb0, 0xecb1, 0xecaf, 0xefab, 0xefaa, 0xc247,
+ 0xf1df, 0xefac, 0xf1de, 0x91aa, 0xf3f3, 0xc451, 0xc453, 0xf3f2,
+ 0x91ab, 0xa070, 0xc452, 0x9f6d, 0xf5b1, 0xf5b3, 0xf5b2, 0xf6ca,
+ 0xc565, 0x91ac, 0xc5ef, 0xf8e8, 0xf963, 0x91ad, 0xf9d2, 0xb3c1,
+ 0xa0fd, 0xe4e5, 0x9fe2, 0xbea2, 0x91af, 0x9e41, 0x9aaa, 0xecb3,
+ 0xecb2, 0x91b0, 0xefad, 0x9aab, 0xc454, 0xc4d1, 0xf7c7, 0xf9cb,
+ 0xb3c2, 0xbbf2, 0x9aac, 0xbea3, 0x9a4a, 0xf3f4, 0x91b2, 0xf874,
+ 0xb6c0, 0x8bf6, 0x9aad, 0x89b6, 0xefae, 0xc664, 0xb6c1, 0xbea4,
+ 0xc248, 0xf875, 0xb6c2, 0xe8f1, 0xc072, 0xecb4, 0xecb5, 0xc071,
+ 0xefaf, 0xc24c, 0xc24a, 0xc24b, 0xc249, 0xf1e0, 0xc35c, 0x9aaf,
+ 0xf5b5, 0xf5b4, 0xf5b7, 0xf5b6, 0xc4d2, 0xf6cb, 0xf6cd, 0xf6cc,
+ 0xc566, 0xf7c8, 0x9ab0, 0xf876, 0xf877, 0xc5f0, 0xf964, 0xf97d,
+ 0xc675, 0x9ab1, 0xdcb0, 0xecb6, 0xefb0, 0xf3f5, 0xe0ef, 0x9aa1,
+ 0xefb1, 0xf1e2, 0xf1e1, 0x91b9, 0xf878, 0xc652, 0x91ba, 0xf965,
+ 0xf97e, 0xb9a9, 0xe8f2, 0xe8f3, 0xecb7, 0xb9aa, 0xc35d, 0xf1e3,
+ 0x91be, 0xf6cf, 0xc567, 0xf6d0, 0xf6ce, 0xf879, 0xf8e9, 0xb9ab,
+ 0xefb4, 0xefb3, 0xefb2, 0xf1e4, 0xa041, 0x8bb7, 0xf1e8, 0xf1e7,
+ 0xf1e6, 0xf1e5, 0xc35e, 0xf3f6, 0xf5b9, 0xc4d3, 0xf5b8, 0xf6d1,
+ 0xf7cb, 0xf7ca, 0xc5c4, 0xf7c9, 0xf87c, 0xf87b, 0xf87a, 0x91c0,
+ 0xbbf3, 0xecb8, 0xc24d, 0xf3f7, 0xf3f8, 0xf7cc, 0xf87d, 0x9ab3,
+ 0x91c3, 0xf8ea, 0xf966, 0xf9b9, 0xf9d4, 0xbbf4, 0xc24e, 0xf1e9,
+ 0xf3f9, 0xf6d2, 0xf87e, 0xa0fc, 0xbea6, 0x9fee, 0xefb5, 0xf1ea,
+ 0xf3fa, 0xf3fb, 0xf3fc, 0xf5be, 0x9f69, 0xf5ba, 0xc568, 0xf5bd,
+ 0xf5bc, 0xc4d4, 0xf5bb, 0xc4d6, 0x91c8, 0xc4d5, 0xf6d4, 0xf6d3,
+ 0xc569, 0xc56a, 0x91c9, 0xc5c6, 0xf7cd, 0xc5c5, 0xf8a3, 0xf8a4,
+ 0xf8a2, 0xf8a1, 0xc654, 0xf8eb, 0xf8ec, 0xf8ed, 0xc653, 0xf967,
+ 0xf96a, 0xf969, 0xf968, 0xf9d3, 0x8de6, 0xc073, 0x91cb, 0xc365,
+ 0xf5bf, 0xf6d5, 0xc5c7, 0xf7ce, 0xf9d5, 0x89c8, 0xc074, 0x8daa,
+ 0xefb6, 0xf7cf, 0xf9a1, 0x9fdd, 0xfa40, 0xfa41, 0xfa42, 0xfa43,
+ 0xfa44, 0xfa45, 0xfa46, 0xfa47, 0xfa48, 0xfa49, 0xfa4a, 0xfa4b,
+ 0xfa4c, 0xfa4d, 0xfa4e, 0xfa4f, 0xfa50, 0xfa51, 0xfa52, 0xfa53,
+ 0xfa54, 0xfa55, 0xfa56, 0xfa57, 0xfa58, 0xfa59, 0xfa5a, 0xfa5b,
+ 0xfa5c, 0xfa5d, 0xfa5e, 0xadc5, 0xfa60, 0xfa61, 0xfa62, 0xfa63,
+ 0xfa64, 0xfa65, 0xb0b0, 0xfa67, 0xfa68, 0xfa69, 0xfa6a, 0xfa6b,
+ 0xfa6c, 0xfa6d, 0xfa6e, 0xfa6f, 0xfa70, 0xfa71, 0xfa72, 0xfa73,
+ 0xfa74, 0xfa75, 0xfa76, 0xfa77, 0xfa78, 0xfa79, 0xfa7a, 0xfa7b,
+ 0xfa7c, 0xfa7d, 0xfa7e, 0xfaa1, 0xfaa2, 0xfaa3, 0xfaa4, 0xfaa5,
+ 0xfaa6, 0xfaa7, 0xfaa8, 0xfaa9, 0xfaaa, 0xfaab, 0xfaac, 0xfaad,
+ 0xfaae, 0xfaaf, 0xfab0, 0xfab1, 0xfab2, 0xfab3, 0xfab4, 0xfab5,
+ 0xfab6, 0xfab7, 0xfab8, 0xfab9, 0xfaba, 0xfabb, 0xfabc, 0xa55d,
+ 0xfabe, 0xfabf, 0xfac0, 0xfac1, 0xfac2, 0xfac3, 0xfac4, 0xa2cd,
+ 0xfac6, 0xfac7, 0xfac8, 0xfac9, 0xfaca, 0xfacb, 0xfacc, 0xfacd,
+ 0xface, 0xfacf, 0xfad0, 0xfad1, 0xfad2, 0xfad3, 0xfad4, 0xadeb,
+ 0xfad6, 0xfad7, 0xfad8, 0xfad9, 0xfada, 0xfadb, 0xfadc, 0xfadd,
+ 0xfade, 0xfadf, 0xfae0, 0xfae1, 0xfae2, 0xfae3, 0xfae4, 0xfae5,
+ 0xfae6, 0xfae7, 0xfae8, 0xfae9, 0xfaea, 0xfaeb, 0xfaec, 0xfaed,
+ 0xfaee, 0xfaef, 0xfaf0, 0xfaf1, 0xfaf2, 0xfaf3, 0xfaf4, 0xfaf5,
+ 0xfaf6, 0xfaf7, 0xfaf8, 0xfaf9, 0xfafa, 0xfafb, 0xfafc, 0xfafd,
+ 0xfafe, 0xfb40, 0xfb41, 0xfb42, 0xfb43, 0xfb44, 0xfb45, 0xfb46,
+ 0xfb47, 0x9def, 0xfb49, 0xfb4a, 0xfb4b, 0xfb4c, 0xfb4d, 0xfb4e,
+ 0xfb4f, 0xfb50, 0xfb51, 0xfb52, 0xfb53, 0xfb54, 0xfb55, 0xfb56,
+ 0xfb57, 0xfb58, 0xfb59, 0xfb5a, 0xfb5b, 0xfb5c, 0xfb5d, 0xfb5e,
+ 0xfb5f, 0xfb60, 0xfb61, 0xfb62, 0xfb63, 0xfb64, 0xfb65, 0xfb66,
+ 0xfb67, 0xfb68, 0xfb69, 0xfb6a, 0xfb6b, 0xfb6c, 0xfb6d, 0xfb6e,
+ 0xfb6f, 0xfb70, 0xfb71, 0xfb72, 0xfb73, 0xfb74, 0xfb75, 0xfb76,
+ 0xfb77, 0xfb78, 0xfb79, 0xfb7a, 0xfb7b, 0xfb7c, 0xfb7d, 0xfb7e,
+ 0xfba1, 0xfba2, 0xfba3, 0xfba4, 0xfba5, 0xfba6, 0xfba7, 0xfba8,
+ 0xfba9, 0xfbaa, 0xfbab, 0xfbac, 0xfbad, 0xfbae, 0xfbaf, 0xfbb0,
+ 0xfbb1, 0xfbb2, 0xfbb3, 0xfbb4, 0xfbb5, 0xfbb6, 0xfbb7, 0xb440,
+ 0xfbb9, 0xfbba, 0xfbbb, 0xfbbc, 0xfbbd, 0xfbbe, 0xfbbf, 0xfbc0,
+ 0xfbc1, 0xfbc2, 0xfbc3, 0xfbc4, 0xfbc5, 0xfbc6, 0xfbc7, 0xfbc8,
+ 0xfbc9, 0xfbca, 0xfbcb, 0xfbcc, 0xfbcd, 0xfbce, 0xfbcf, 0xfbd0,
+ 0xfbd1, 0xfbd2, 0xfbd3, 0xfbd4, 0xfbd5, 0xfbd6, 0xfbd7, 0xfbd8,
+ 0xfbd9, 0xfbda, 0xfbdb, 0xfbdc, 0xfbdd, 0xfbde, 0xfbdf, 0xfbe0,
+ 0xfbe1, 0xfbe2, 0xfbe3, 0xfbe4, 0xfbe5, 0xfbe6, 0xfbe7, 0xfbe8,
+ 0xfbe9, 0xfbea, 0xfbeb, 0xfbec, 0xfbed, 0xfbee, 0xfbef, 0xfbf0,
+ 0xfbf1, 0xfbf2, 0xc9db, 0xfbf4, 0xfbf5, 0xfbf6, 0xfbf7, 0xfbf8,
+ 0x9dfb, 0xfbfa, 0xfbfb, 0xfbfc, 0xfbfd, 0xfbfe, 0xfc40, 0xfc41,
+ 0xfc42, 0xfc43, 0xfc44, 0xfc45, 0xfc46, 0xfc47, 0xfc48, 0xfc49,
+ 0xfc4a, 0xfc4b, 0xfc4c, 0xfc4d, 0xfc4e, 0xd8f4, 0xfc50, 0xfc51,
+ 0xfc52, 0xfc53, 0xfc54, 0xfc55, 0xfc56, 0xfc57, 0xfc58, 0xfc59,
+ 0xfc5a, 0xfc5b, 0xfc5c, 0xfc5d, 0xfc5e, 0xfc5f, 0xfc60, 0xfc61,
+ 0xfc62, 0xfc63, 0xfc64, 0xfc65, 0xfc66, 0xfc67, 0xfc68, 0xfc69,
+ 0xfc6a, 0xfc6b, 0xa0dc, 0xfc6d, 0xfc6e, 0xfc6f, 0xfc70, 0xfc71,
+ 0xfc72, 0xfc73, 0xfc74, 0xfc75, 0xfc76, 0xfc77, 0xfc78, 0xfc79,
+ 0xfc7a, 0xfc7b, 0xfc7c, 0xfc7d, 0xfc7e, 0xfca1, 0xfca2, 0xfca3,
+ 0xfca4, 0xfca5, 0xfca6, 0xfca7, 0xfca8, 0xfca9, 0xfcaa, 0xfcab,
+ 0xfcac, 0xfcad, 0xfcae, 0xfcaf, 0xfcb0, 0xfcb1, 0xfcb2, 0xfcb3,
+ 0xfcb4, 0xfcb5, 0xfcb6, 0xfcb7, 0xfcb8, 0xbcb5, 0xfcba, 0xfcbb,
+ 0xfcbc, 0xfcbd, 0xfcbe, 0xfcbf, 0xfcc0, 0xfcc1, 0xfcc2, 0xfcc3,
+ 0xfcc4, 0xfcc5, 0xfcc6, 0xfcc7, 0xfcc8, 0xfcc9, 0xfcca, 0xfccb,
+ 0xfccc, 0xfccd, 0xfcce, 0xfccf, 0xfcd0, 0xfcd1, 0xfcd2, 0xfcd3,
+ 0xfcd4, 0xfcd5, 0xfcd6, 0xfcd7, 0xfcd8, 0xfcd9, 0xfcda, 0xfcdb,
+ 0xfcdc, 0xfcdd, 0xfcde, 0xfcdf, 0xfce0, 0xfce1, 0xb4b8, 0xfce3,
+ 0xfce4, 0xfce5, 0xfce6, 0xfce7, 0xfce8, 0xfce9, 0xfcea, 0xfceb,
+ 0xfcec, 0xfced, 0xfcee, 0xfcef, 0xfcf0, 0xa7fb, 0xfcf2, 0xfcf3,
+ 0xfcf4, 0xfcf5, 0xfcf6, 0xfcf7, 0xfcf8, 0xfcf9, 0xfcfa, 0xfcfb,
+ 0xfcfc, 0xfcfd, 0xfcfe, 0xfd40, 0xfd41, 0xfd42, 0xfd43, 0xfd44,
+ 0xfd45, 0xfd46, 0xfd47, 0xfd48, 0xfd49, 0xfd4a, 0xfd4b, 0xfd4c,
+ 0xfd4d, 0xfd4e, 0xfd4f, 0xfd50, 0xfd51, 0xfd52, 0xfd53, 0xfd54,
+ 0xfd55, 0xfd56, 0xfd57, 0xfd58, 0xfd59, 0xfd5a, 0xfd5b, 0xfd5c,
+ 0xfd5d, 0xfd5e, 0xfd5f, 0xfd60, 0xfd61, 0xfd62, 0xfd63, 0xfd64,
+ 0xfd65, 0xfd66, 0xfd67, 0xfd68, 0xfd69, 0xfd6a, 0xfd6b, 0xfd6c,
+ 0xfd6d, 0xfd6e, 0xfd6f, 0xfd70, 0xfd71, 0xfd72, 0xfd73, 0xfd74,
+ 0xfd75, 0xfd76, 0xfd77, 0xfd78, 0xfd79, 0xfd7a, 0xfd7b, 0xfd7c,
+ 0xfd7d, 0xfd7e, 0xfda1, 0xfda2, 0xfda3, 0xfda4, 0xfda5, 0xfda6,
+ 0xfda7, 0xfda8, 0xfda9, 0xfdaa, 0xfdab, 0xfdac, 0xfdad, 0xfdae,
+ 0xfdaf, 0xfdb0, 0xfdb1, 0xfdb2, 0xfdb3, 0xfdb4, 0xfdb5, 0xfdb6,
+ 0xcb58, 0xb4fc, 0xfdb9, 0xfdba, 0xb4e4, 0xfdbc, 0xfdbd, 0xfdbe,
+ 0xfdbf, 0xfdc0, 0xfdc1, 0xfdc2, 0xfdc3, 0xfdc4, 0xfdc5, 0xfdc6,
+ 0xfdc7, 0xfdc8, 0xfdc9, 0xfdca, 0xfdcb, 0xfdcc, 0xfdcd, 0xfdce,
+ 0xfdcf, 0xfdd0, 0xfdd1, 0xfdd2, 0xfdd3, 0xfdd4, 0xfdd5, 0xfdd6,
+ 0xfdd7, 0xfdd8, 0xfdd9, 0xfdda, 0xfddb, 0xfddc, 0xfddd, 0xfdde,
+ 0xfddf, 0xfde0, 0xfde1, 0xfde2, 0xfde3, 0xfde4, 0xfde5, 0xfde6,
+ 0xfde7, 0xfde8, 0xfde9, 0xfdea, 0xfdeb, 0xfdec, 0xfded, 0xfdee,
+ 0xfdef, 0xfdf0, 0xb54e, 0xfdf2, 0xfdf3, 0xfdf4, 0xfdf5, 0xfdf6,
+ 0xfdf7, 0xfdf8, 0xfdf9, 0xfdfa, 0xfdfb, 0xfdfc, 0xfdfd, 0xfdfe,
+ 0xfe40, 0xfe41, 0xfe42, 0xfe43, 0xfe44, 0xfe45, 0xfe46, 0xfe47,
+ 0xfe48, 0xfe49, 0xfe4a, 0xfe4b, 0xfe4c, 0xfe4d, 0xfe4e, 0xfe4f,
+ 0xfe50, 0xfe51, 0x9975, 0xfe53, 0xfe54, 0xfe55, 0xfe56, 0xfe57,
+ 0xfe58, 0xfe59, 0xfe5a, 0xfe5b, 0xfe5c, 0xfe5d, 0xfe5e, 0xfe5f,
+ 0xfe60, 0xfe61, 0xfe62, 0xfe63, 0xfe64, 0xfe65, 0xfe66, 0xfe67,
+ 0xfe68, 0xfe69, 0xfe6a, 0xfe6b, 0xfe6c, 0xfe6d, 0xfe6e, 0xb7ec,
+ 0xfe70, 0xfe71, 0xfe72, 0xfe73, 0xfe74, 0xfe75, 0xfe76, 0xfe77,
+ 0xfe78, 0xfe79, 0xfe7a, 0xfe7b, 0xfe7c, 0xfe7d, 0xfe7e, 0xfea1,
+ 0xfea2, 0xfea3, 0xfea4, 0xfea5, 0xfea6, 0xfea7, 0xfea8, 0xfea9,
+ 0xa260, 0xfeab, 0xfeac, 0xfead, 0xfeae, 0xfeaf, 0xfeb0, 0xfeb1,
+ 0xfeb2, 0xfeb3, 0xfeb4, 0xfeb5, 0xfeb6, 0xfeb7, 0xfeb8, 0xfeb9,
+ 0xfeba, 0xfebb, 0xfebc, 0xfebd, 0xfebe, 0xfebf, 0xfec0, 0xfec1,
+ 0xfec2, 0xfec3, 0xfec4, 0xfec5, 0xfec6, 0xfec7, 0xfec8, 0xfec9,
+ 0xfeca, 0xfecb, 0xfecc, 0xfecd, 0xfece, 0xfecf, 0xfed0, 0xfed1,
+ 0xfed2, 0xfed3, 0xfed4, 0xfed5, 0xfed6, 0xfed7, 0xfed8, 0xfed9,
+ 0xfeda, 0xfedb, 0xfedc, 0xcff1, 0xfede, 0xfedf, 0xfee0, 0xfee1,
+ 0xfee2, 0xfee3, 0xfee4, 0xfee5, 0xfee6, 0xfee7, 0xfee8, 0xfee9,
+ 0xfeea, 0xfeeb, 0xfeec, 0xfeed, 0xfeee, 0xfeef, 0xfef0, 0xfef1,
+ 0xfef2, 0xfef3, 0xfef4, 0xfef5, 0xfef6, 0xfef7, 0xfef8, 0xfef9,
+ 0xfefa, 0xfefb, 0xfefc, 0xfefd, 0xfefe, 0x8e40, 0x8e41, 0x8e42,
+ 0x8e43, 0x8e44, 0x8e45, 0x8e46, 0x8e47, 0x8e48, 0x8e49, 0x8e4a,
+ 0x8e4b, 0x8e4c, 0x8e4d, 0x8e4e, 0x8e4f, 0x8e50, 0x8e51, 0x8e52,
+ 0x8e53, 0x8e54, 0x8e55, 0x8e56, 0x8e57, 0x8e58, 0x8e59, 0x8e5a,
+ 0x8e5b, 0x8e5c, 0x8e5d, 0x8e5e, 0x8e5f, 0x8e60, 0x8e61, 0x8e62,
+ 0x8e63, 0x8e64, 0x8e65, 0x8e66, 0x8e67, 0x8e68, 0xbae6, 0x8e6a,
+ 0x8e6b, 0x8e6c, 0x8e6d, 0x8e6e, 0xedca, 0x8e70, 0x8e71, 0x8e72,
+ 0x8e73, 0x8e74, 0x8e75, 0x8e76, 0x8e77, 0x8e78, 0x8e79, 0x8e7a,
+ 0x8e7b, 0x8e7c, 0x8e7d, 0xa261, 0x8ea1, 0x8ea2, 0x8ea3, 0x8ea4,
+ 0x8ea5, 0x8ea6, 0x8ea7, 0x8ea8, 0x8ea9, 0x8eaa, 0xbafc, 0x8eac,
+ 0x8ead, 0x8eae, 0x8eaf, 0x8eb0, 0x8eb1, 0x8eb2, 0x8eb3, 0xbfa6,
+ 0x8eb5, 0x8eb6, 0x8eb7, 0x8eb8, 0x8eb9, 0x8eba, 0x8ebb, 0x8ebc,
+ 0x8ebd, 0x8ebe, 0x8ebf, 0x8ec0, 0x8ec1, 0x8ec2, 0x8ec3, 0x8ec4,
+ 0x8ec5, 0x8ec6, 0x8ec7, 0x8ec8, 0x8ec9, 0x8eca, 0x8ecb, 0x8ecc,
+ 0xaacc, 0x8ece, 0x8ecf, 0xbfae, 0x8ed1, 0x8ed2, 0x8ed3, 0x8ed4,
+ 0x8ed5, 0x8ed6, 0x8ed7, 0x8ed8, 0x8ed9, 0x8eda, 0x8edb, 0x8edc,
+ 0x8edd, 0x8ede, 0x8edf, 0x8ee0, 0x8ee1, 0x8ee2, 0x8ee3, 0x8ee4,
+ 0x8ee5, 0x8ee6, 0x8ee7, 0x8ee8, 0x8ee9, 0x8eea, 0x8eeb, 0x8eec,
+ 0x8eed, 0x8eee, 0x8eef, 0x8ef0, 0x8ef1, 0x8ef2, 0x8ef3, 0x8ef4,
+ 0x8ef5, 0x8ef6, 0x8ef7, 0x8ef8, 0x8ef9, 0x8efa, 0x8efb, 0x8efc,
+ 0x8efd, 0x8efe, 0x8f40, 0x8f41, 0x8f42, 0x8f43, 0x8f44, 0x8f45,
+ 0x8f46, 0x8f47, 0x8f48, 0x8f49, 0x8f4a, 0x8f4b, 0x8f4c, 0x8f4d,
+ 0x8f4e, 0x8f4f, 0x8f50, 0x8f51, 0x8f52, 0x8f53, 0x8f54, 0x8f55,
+ 0x8f56, 0xb5d7, 0x8f58, 0x8f59, 0x8f5a, 0x8f5b, 0x8f5c, 0x8f5d,
+ 0x8f5e, 0x8f5f, 0x8f60, 0x8f61, 0x8f62, 0x8f63, 0x8f64, 0x8f65,
+ 0x8f66, 0x8f67, 0x8f68, 0xe3c8, 0x8f6a, 0x8f6b, 0x8f6c, 0x8f6d,
+ 0xdb79, 0x8f6f, 0x8f70, 0x8f71, 0x8f72, 0x8f73, 0x8f74, 0x8f75,
+ 0x8f76, 0x8f77, 0x8f78, 0x8f79, 0x8f7a, 0x8f7b, 0x8f7c, 0x8f7d,
+ 0x8f7e, 0x8fa1, 0x8fa2, 0x8fa3, 0x8fa4, 0x8fa5, 0x8fa6, 0x8fa7,
+ 0x8fa8, 0x8fa9, 0x8faa, 0x8fab, 0x8fac, 0x8fad, 0x8fae, 0x8faf,
+ 0x8fb0, 0x8fb1, 0x8fb2, 0x8fb3, 0x8fb4, 0x8fb5, 0x8fb6, 0x8fb7,
+ 0x8fb8, 0x8fb9, 0x8fba, 0x8fbb, 0x8fbc, 0x8fbd, 0x8fbe, 0x8fbf,
+ 0x8fc0, 0x8fc1, 0x8fc2, 0x8fc3, 0x8fc4, 0x8fc5, 0x8fc6, 0x8fc7,
+ 0x8fc8, 0x8fc9, 0x8fca, 0xbfcc, 0xa0d4, 0x8fcd, 0x8fce, 0x8fcf,
+ 0x8fd0, 0x8fd1, 0x8fd2, 0x8fd3, 0x8fd4, 0x8fd5, 0x8fd6, 0x8fd7,
+ 0x8fd8, 0x8fd9, 0x8fda, 0x8fdb, 0x8fdc, 0x8fdd, 0x8fde, 0x8fdf,
+ 0x8fe0, 0x8fe1, 0x8fe2, 0x8fe3, 0x8fe4, 0x8fe5, 0x8fe6, 0x8fe7,
+ 0x8fe8, 0x8fe9, 0x8fea, 0x8feb, 0x8fec, 0x8fed, 0x8fee, 0x8fef,
+ 0x8ff0, 0x8ff1, 0x8ff2, 0x8ff3, 0x8ff4, 0x8ff5, 0x8ff6, 0x8ff7,
+ 0x8ff8, 0x8ff9, 0x8ffa, 0x8ffb, 0x8ffc, 0x8ffd, 0xb05f, 0x9040,
+ 0x9041, 0x9042, 0x9043, 0x9044, 0x9045, 0x9046, 0x9047, 0x9048,
+ 0x9049, 0x904a, 0x904b, 0x904c, 0x904d, 0x904e, 0x904f, 0x9050,
+ 0x9051, 0x9052, 0x9053, 0x9054, 0x9055, 0x9056, 0x9057, 0x9058,
+ 0x9059, 0x905a, 0x905b, 0x905c, 0x905d, 0x905e, 0x905f, 0x9060,
+ 0x9061, 0x9062, 0x9063, 0x9064, 0x9065, 0x9066, 0x9067, 0x9068,
+ 0x9069, 0x906a, 0x906b, 0x906c, 0xb3a3, 0x906e, 0x906f, 0x9070,
+ 0x9071, 0x9072, 0x9073, 0x9074, 0x9075, 0x9076, 0x9077, 0x9078,
+ 0x9079, 0xf9d7, 0x907b, 0x907c, 0x907d, 0x907e, 0x90a1, 0x90a2,
+ 0x90a3, 0x90a4, 0x90a5, 0x90a6, 0x90a7, 0x90a8, 0x90a9, 0x90aa,
+ 0x90ab, 0x90ac, 0x90ad, 0x90ae, 0x90af, 0x90b0, 0x90b1, 0x90b2,
+ 0x90b3, 0x90b4, 0x90b5, 0x90b6, 0x90b7, 0x90b8, 0x90b9, 0x90ba,
+ 0x90bb, 0x90bc, 0x90bd, 0x90be, 0x90bf, 0x90c0, 0x90c1, 0x90c2,
+ 0x90c3, 0x90c4, 0x90c5, 0x90c6, 0x90c7, 0x90c8, 0x90c9, 0x90ca,
+ 0x90cb, 0x90cc, 0x90cd, 0x90ce, 0x90cf, 0x90d0, 0x90d1, 0x90d2,
+ 0x90d3, 0x90d4, 0x90d5, 0x90d6, 0x90d7, 0x90d8, 0x90d9, 0x90da,
+ 0x90db, 0xc052, 0x90dd, 0x90de, 0x90df, 0x90e0, 0x90e1, 0x90e2,
+ 0x90e3, 0x90e4, 0x90e5, 0x90e6, 0x90e7, 0x90e8, 0x90e9, 0x90ea,
+ 0x90eb, 0x90ec, 0x90ed, 0x90ee, 0x90ef, 0x90f0, 0xc554, 0x90f2,
+ 0x90f3, 0x90f4, 0x90f5, 0x90f6, 0x90f7, 0x90f8, 0x90f9, 0x90fa,
+ 0x90fb, 0x90fc, 0x90fd, 0x90fe, 0x9140, 0x9141, 0x9142, 0x9143,
+ 0x9144, 0x9145, 0x9146, 0x9147, 0x9148, 0x9149, 0x914a, 0x914b,
+ 0x914c, 0x914d, 0x914e, 0x914f, 0x9150, 0x9151, 0x9152, 0x9153,
+ 0x9154, 0x9155, 0x9156, 0x9157, 0x9158, 0x9159, 0x915a, 0x915b,
+ 0x915c, 0x915d, 0x915e, 0x915f, 0x9160, 0x9161, 0x9162, 0x9163,
+ 0x9164, 0x9165, 0x9166, 0x9167, 0x9168, 0x9169, 0x916a, 0x916b,
+ 0x916c, 0x916d, 0x916e, 0x916f, 0x9170, 0x9171, 0x9172, 0x9173,
+ 0x9174, 0x9175, 0x9176, 0x9177, 0x9178, 0x9179, 0x917a, 0x917b,
+ 0x917c, 0x917d, 0x917e, 0x91a1, 0x91a2, 0x91a3, 0x91a4, 0x91a5,
+ 0x91a6, 0x91a7, 0x91a8, 0x91a9, 0x91aa, 0x91ab, 0x91ac, 0x91ad,
+ 0x91ae, 0x91af, 0x91b0, 0x91b1, 0x91b2, 0x91b3, 0x91b4, 0x91b5,
+ 0x91b6, 0x91b7, 0x91b8, 0x91b9, 0x91ba, 0x91bb, 0x91bc, 0x91bd,
+ 0x91be, 0xf1e3, 0x91c0, 0x91c1, 0x91c2, 0x91c3, 0x91c4, 0x91c5,
+ 0x91c6, 0x91c7, 0x91c8, 0x91c9, 0x91ca, 0x91cb, 0x91cc, 0x91cd,
+ 0x91ce, 0x91cf, 0x91d0, 0x91d1, 0x91d2, 0x91d3, 0x91d4, 0x91d5,
+ 0x91d6, 0x91d7, 0x91d8, 0x91d9, 0x91da, 0x91db, 0x91dc, 0x91dd,
+ 0x91de, 0x91df, 0x91e0, 0x91e1, 0x91e2, 0x91e3, 0x91e4, 0x91e5,
+ 0x91e6, 0x91e7, 0x91e8, 0x91e9, 0x91ea, 0x91eb, 0x91ec, 0x91ed,
+ 0x91ee, 0x91ef, 0x91f0, 0x91f1, 0x91f2, 0x91f3, 0x91f4, 0x91f5,
+ 0x91f6, 0x91f7, 0x91f8, 0x91f9, 0x91fa, 0x91fb, 0x91fc, 0x91fd,
+ 0x91fe, 0x9240, 0x9241, 0x9242, 0x9243, 0x9242, 0x9245, 0x9246,
+ 0x9247, 0x9248, 0x9249, 0x924a, 0x924b, 0x924c, 0x924d, 0x924e,
+ 0x924f, 0x9250, 0x9251, 0x9252, 0x9253, 0x9254, 0x9255, 0x9256,
+ 0x9257, 0x9258, 0x9259, 0x925a, 0x925b, 0x925c, 0x925d, 0x925e,
+ 0x925f, 0x9260, 0x9261, 0x9262, 0x9263, 0x9264, 0x9265, 0x9266,
+ 0x9267, 0x9268, 0x9269, 0x926a, 0x926b, 0x926c, 0x926d, 0x926e,
+ 0x926f, 0x9270, 0x9271, 0x9272, 0x9273, 0x9274, 0x9275, 0x9276,
+ 0x9277, 0x9278, 0x9279, 0x927a, 0x927b, 0x927c, 0x927d, 0x927e,
+ 0x92a1, 0x92a2, 0x92a3, 0x92a4, 0x92a5, 0x92a6, 0x92a7, 0x92a8,
+ 0x92a9, 0x92aa, 0x92ab, 0x92ac, 0x92ad, 0x92ae, 0xa259, 0xa25a,
+ 0xa25c, 0xa25b, 0x92b3, 0x92b4, 0x92b5, 0x92b6, 0x92b7, 0x92b8,
+ 0x92b9, 0x92ba, 0x92bb, 0x92bc, 0x92bd, 0x92be, 0x92bf, 0x92c0,
+ 0x92c1, 0x92c2, 0x92c3, 0x92c4, 0x92c5, 0x92c6, 0x92c7, 0xa05f,
+ 0x92c9, 0x92ca, 0x92cb, 0x92cc, 0x92cd, 0x92ce, 0x92cf, 0x92d0,
+ 0xe6ab, 0x92d2, 0x92d3, 0x92d4, 0x92d5, 0x92d6, 0x92d7, 0x92d8,
+ 0x92d9, 0x92da, 0x92db, 0x92dc, 0x92dd, 0x92de, 0x92df, 0x92e0,
+ 0x92e1, 0x92e2, 0x92e3, 0x92e4, 0x92e5, 0x92e6, 0x92e7, 0x92e8,
+ 0x92e9, 0x92ea, 0x92eb, 0x92ec, 0x92ed, 0x92ee, 0x92ef, 0x92f0,
+ 0x92f1, 0x92f2, 0x92f3, 0x92f4, 0x92f5, 0x92f6, 0x92f7, 0x92f8,
+ 0x92f9, 0x92fa, 0x92fb, 0x92fc, 0x92fd, 0x92fe, 0x9340, 0x9341,
+ 0x9342, 0x9343, 0x9344, 0x9345, 0x9346, 0x9347, 0x9348, 0x9349,
+ 0x934a, 0x934b, 0x934c, 0x934d, 0x934e, 0x934f, 0x9350, 0x9351,
+ 0x9352, 0x9353, 0x9354, 0x9355, 0x9356, 0x9357, 0x9358, 0x9359,
+ 0x935a, 0x935b, 0x935c, 0x935d, 0x935e, 0x935f, 0x9360, 0x9361,
+ 0x9362, 0x9363, 0x9364, 0x9365, 0x9366, 0x9367, 0x9368, 0x9369,
+ 0x936a, 0x936b, 0x936c, 0x936d, 0x936e, 0x936f, 0x9370, 0x9371,
+ 0x9372, 0x9373, 0x9374, 0x9375, 0x9376, 0x9377, 0x9378, 0x9379,
+ 0x937a, 0x937b, 0x937c, 0x937d, 0x937e, 0x93a1, 0x93a2, 0x93a3,
+ 0x93a4, 0x93a5, 0x93a6, 0x93a7, 0x93a8, 0x93a9, 0x93aa, 0x93ab,
+ 0x93ac, 0x93ad, 0x93ae, 0x93af, 0x93b0, 0x93b1, 0x93b2, 0x93b3,
+ 0x93b4, 0x93b5, 0x93b6, 0x93b7, 0x93b8, 0x93b9, 0x93ba, 0x93bb,
+ 0x93bc, 0x93bd, 0x93be, 0x93bf, 0x93c0, 0x93c1, 0x93c2, 0x93c3,
+ 0x93c4, 0x93c5, 0x93c6, 0x93c7, 0x93c8, 0x93c9, 0x93ca, 0x93cb,
+ 0x93cc, 0x93cd, 0x93ce, 0x93cf, 0x93d0, 0x93d1, 0x93d2, 0x93d3,
+ 0x93d4, 0x93d5, 0x93d6, 0x93d7, 0x93d8, 0x93d9, 0x93da, 0x93db,
+ 0x93dc, 0x93dd, 0x93de, 0x93df, 0x93e0, 0x93e1, 0x93e2, 0x93e3,
+ 0x93e4, 0x93e5, 0x93e6, 0x93e7, 0x93e8, 0x93e9, 0x93ea, 0x93eb,
+ 0x93ec, 0x93ed, 0x93ee, 0x93ef, 0x93f0, 0x93f1, 0x93f2, 0x93f3,
+ 0x93f4, 0x93f5, 0x93f6, 0x93f7, 0x93f8, 0x93f9, 0x93fa, 0x93fb,
+ 0x93fc, 0x93fd, 0x93fe, 0x9440, 0x9441, 0x9442, 0x9443, 0x9444,
+ 0x9445, 0x9446, 0xd256, 0x9448, 0x9449, 0x944a, 0x944b, 0x944c,
+ 0x944d, 0x944e, 0x944f, 0x9450, 0x9451, 0x9452, 0x9453, 0x9454,
+ 0x9455, 0x9456, 0x9457, 0x9458, 0x9459, 0x945a, 0x945b, 0x945c,
+ 0x945d, 0x945e, 0x945f, 0x9460, 0x9461, 0x9462, 0x9463, 0x9464,
+ 0x9465, 0x9466, 0x9467, 0x9468, 0x9469, 0x946a, 0x946b, 0x946c,
+ 0x946d, 0x946e, 0x946f, 0x9470, 0x9471, 0x9472, 0x9473, 0x9474,
+ 0x9475, 0x9476, 0x9477, 0x9478, 0x9479, 0x947a, 0x947b, 0x947c,
+ 0x947d, 0x947e, 0x94a1, 0x94a2, 0x94a3, 0x94a4, 0x94a5, 0x94a6,
+ 0x94a7, 0x94a8, 0x94a9, 0x94aa, 0x94ab, 0x94ac, 0x94ad, 0x94ae,
+ 0x94af, 0x94b0, 0x94b1, 0x94b2, 0x94b3, 0x94b4, 0x94b5, 0x94b6,
+ 0x94b7, 0x94b8, 0x94b9, 0x94ba, 0x94bb, 0x94bc, 0x94bd, 0x94be,
+ 0x94bf, 0x94c0, 0x94c1, 0x94c2, 0x94c3, 0x94c4, 0x94c5, 0x94c6,
+ 0x94c7, 0x94c8, 0x94c9, 0xe6d0, 0x94cb, 0x94cc, 0x94cd, 0x94ce,
+ 0x94cf, 0x94d0, 0x94d1, 0x94d2, 0x94d3, 0x94d4, 0x94d5, 0x94d6,
+ 0x94d7, 0x94d8, 0x94d9, 0x94da, 0x94db, 0x94dc, 0x94dd, 0x94de,
+ 0x94df, 0x94e0, 0x94e1, 0x94e2, 0x94e3, 0x94e4, 0x94e5, 0x94e6,
+ 0x94e7, 0x94e8, 0x94e9, 0x94ea, 0x94eb, 0x94ec, 0x94ed, 0x94ee,
+ 0x94ef, 0x94f0, 0x94f1, 0x94f2, 0x94f3, 0x94f4, 0x94f5, 0x94f6,
+ 0x94f7, 0x94f8, 0x94f9, 0x94fa, 0x94fb, 0x94fc, 0x94fd, 0x94fe,
+ 0x9540, 0x9541, 0x9542, 0x9543, 0x9544, 0x9545, 0x9546, 0x9547,
+ 0x9548, 0x9549, 0x954a, 0x954b, 0x954c, 0x954d, 0x954e, 0x954f,
+ 0x9550, 0x9551, 0x9552, 0x9553, 0x9554, 0x9555, 0x9556, 0x9557,
+ 0x9558, 0x9559, 0x955a, 0x955b, 0x955c, 0x955d, 0x955e, 0x955f,
+ 0x9560, 0x9561, 0x9562, 0x9563, 0x9564, 0x9565, 0x9566, 0x9567,
+ 0x9568, 0x9569, 0x956a, 0x956b, 0x956c, 0x956d, 0x956e, 0x956f,
+ 0x9570, 0x9571, 0x9572, 0x9573, 0x9574, 0x9575, 0x9576, 0x9577,
+ 0x9578, 0x9579, 0x957a, 0x957b, 0x957c, 0x957d, 0x957e, 0x95a1,
+ 0x95a2, 0x95a3, 0x95a4, 0x95a5, 0x95a6, 0x95a7, 0x95a8, 0x95a9,
+ 0x95aa, 0x95ab, 0x95ac, 0x95ad, 0x95ae, 0x95af, 0x95b0, 0x95b1,
+ 0x95b2, 0x95b3, 0x95b4, 0x95b5, 0x95b6, 0x95b7, 0x95b8, 0x95b9,
+ 0x95ba, 0x95bb, 0x95bc, 0x95bd, 0x95be, 0x95bf, 0x95c0, 0x95c1,
+ 0x95c2, 0x95c3, 0x95c4, 0x95c5, 0x95c6, 0x95c7, 0x95c8, 0x95c9,
+ 0x95ca, 0x95cb, 0x95cc, 0x95cd, 0x95ce, 0x95cf, 0x95d0, 0x95d1,
+ 0x95d2, 0x95d3, 0x95d4, 0x95d5, 0x95d6, 0x95d7, 0x95d8, 0xca52,
+ 0x95da, 0x95db, 0x95dc, 0x95dd, 0x95de, 0x95df, 0x95e0, 0x95e1,
+ 0x95e2, 0x95e3, 0x95e4, 0x95e5, 0x95e6, 0x95e7, 0x95e8, 0x95e9,
+ 0x95ea, 0x95eb, 0x95ec, 0x95ed, 0x95ee, 0x95ef, 0x95f0, 0x95f1,
+ 0x95f2, 0x95f3, 0x95f4, 0x95f5, 0x95f6, 0x95f7, 0x95f8, 0x95f9,
+ 0x95fa, 0x95fb, 0x95fc, 0x95fd, 0x95fe, 0x9640, 0x9641, 0x9642,
+ 0x9643, 0x9ce4, 0x9645, 0x9646, 0x9647, 0x9648, 0x9649, 0x964a,
+ 0x964b, 0x964c, 0x964d, 0x964e, 0x964f, 0x9650, 0x9651, 0x9652,
+ 0x9653, 0x9654, 0x9655, 0x9656, 0x9657, 0x9658, 0x9659, 0x965a,
+ 0x965b, 0x965c, 0x965d, 0x965e, 0x965f, 0x9660, 0x9661, 0x9662,
+ 0x9663, 0x9664, 0x9665, 0x9666, 0x9667, 0x9668, 0x9669, 0x966a,
+ 0x966b, 0x966c, 0x966d, 0x966e, 0x966f, 0x9670, 0x9671, 0x9672,
+ 0x9673, 0x9674, 0x9675, 0x9676, 0x9677, 0x9678, 0x9679, 0x967a,
+ 0x967b, 0x967c, 0x967d, 0x967e, 0x96a1, 0x96a2, 0x96a3, 0x96a4,
+ 0x96a5, 0x96a6, 0x96a7, 0x96a8, 0x96a9, 0x96aa, 0x96ab, 0x96ac,
+ 0x96ad, 0x96ae, 0x96af, 0x96b0, 0x96b1, 0x96b2, 0x96b3, 0x96b4,
+ 0x96b5, 0x96b6, 0x96b7, 0x96b8, 0x96b9, 0x96ba, 0x96bb, 0x96bc,
+ 0x96bd, 0x96be, 0x96bf, 0x96c0, 0x96c1, 0x96c2, 0x96c3, 0x96c4,
+ 0x96c5, 0x96c6, 0x96c7, 0x96c8, 0x96c9, 0x96ca, 0x96cb, 0x96cc,
+ 0x96cd, 0x96ce, 0x96cf, 0x96d0, 0x96d1, 0x96d2, 0x96d3, 0x96d4,
+ 0x96d5, 0x96d6, 0x96d7, 0x96d8, 0x96d9, 0x96da, 0x96db, 0x96dc,
+ 0x96dd, 0x96de, 0x96df, 0x96e0, 0x96e1, 0x96e2, 0x96e3, 0x96e4,
+ 0x96e5, 0x96e6, 0x96e7, 0x96e8, 0x96e9, 0x96ea, 0x96eb, 0x96ec,
+ 0x96ee, 0x96ee, 0x96ef, 0x96f0, 0x96f1, 0x96f2, 0x96f3, 0x96f4,
+ 0x96f5, 0x96f6, 0x96f7, 0x96f8, 0x96f9, 0x96fa, 0x96fb, 0xe959,
+ 0x96fd, 0x96fe, 0x9740, 0x9741, 0x9742, 0x9743, 0x9744, 0x9745,
+ 0x9746, 0x9747, 0x9748, 0x9749, 0x974a, 0x974b, 0x974c, 0x974d,
+ 0x974e, 0x974f, 0x9750, 0x9751, 0x9752, 0x9753, 0x9754, 0x9755,
+ 0x9756, 0x9757, 0x9758, 0x9759, 0x975a, 0x975b, 0x975c, 0x975d,
+ 0x975e, 0x975f, 0x9760, 0x9761, 0x9762, 0x9763, 0x9764, 0x9765,
+ 0x9766, 0x9767, 0x9768, 0x9769, 0x976a, 0x976b, 0x976c, 0x976d,
+ 0x976e, 0x976f, 0x9770, 0x9771, 0x9772, 0x9773, 0x9774, 0x9775,
+ 0x9776, 0x9777, 0x9778, 0x9779, 0x977a, 0x977b, 0x977c, 0x977d,
+ 0x977e, 0x97a1, 0x97a2, 0x97a3, 0x97a4, 0x97a5, 0x97a6, 0x97a7,
+ 0x97a8, 0x97a9, 0x97aa, 0x97ab, 0x97ac, 0x97ad, 0x97ae, 0x97af,
+ 0x97b0, 0x97b1, 0x97b2, 0x97b3, 0x97b4, 0x97b5, 0x97b6, 0x97b7,
+ 0x97b8, 0x97b9, 0x97ba, 0x97bb, 0x97bc, 0x97bd, 0x97be, 0x97bf,
+ 0x97c0, 0x97c1, 0x97c2, 0x97c3, 0x97c4, 0x97c5, 0x97c6, 0x97c7,
+ 0x97c8, 0x97c9, 0x97ca, 0x97cb, 0x97cc, 0x97cd, 0x97ce, 0x97cf,
+ 0x97d0, 0x97d1, 0x97d2, 0x97d3, 0x97d4, 0x97d5, 0x97d6, 0x97d7,
+ 0x97d8, 0x97d9, 0x97da, 0x97db, 0x97dc, 0x97dd, 0x97de, 0x97df,
+ 0x97e0, 0x97e1, 0x97e2, 0x97e3, 0x97e4, 0x97e5, 0x97e6, 0x97e7,
+ 0x97e8, 0x97e9, 0x97ea, 0x97eb, 0x97ec, 0x97ed, 0x97ee, 0x97ef,
+ 0x97f0, 0x97f1, 0x97f2, 0x97f3, 0x97f4, 0x97f5, 0x97f6, 0x97f7,
+ 0x97f8, 0x97f9, 0x97fa, 0x97fb, 0x97fc, 0x97fd, 0x97fe, 0x9840,
+ 0x9841, 0x9842, 0x9843, 0x9844, 0x9845, 0x9846, 0x9847, 0x9848,
+ 0x9849, 0x984a, 0x984b, 0x984c, 0x984d, 0x984e, 0x984f, 0x9850,
+ 0x9851, 0x9852, 0x9853, 0x9854, 0x9855, 0x9856, 0x9857, 0x9858,
+ 0x9859, 0x985a, 0x985b, 0x985c, 0x985d, 0x985e, 0x985f, 0x9860,
+ 0x9861, 0x9862, 0x9863, 0x9864, 0x9865, 0x9866, 0x9867, 0x9868,
+ 0x9869, 0x986a, 0x986b, 0x986c, 0x986d, 0x986e, 0x986f, 0x9870,
+ 0x9871, 0x9872, 0x9873, 0x9874, 0x9875, 0x9876, 0x9877, 0x9878,
+ 0x9879, 0x987a, 0x987b, 0x987c, 0x987d, 0x987e, 0x98a1, 0x98a2,
+ 0x98a3, 0x98a4, 0x98a5, 0x98a6, 0x98a7, 0x98a8, 0x98a9, 0x98aa,
+ 0x98ab, 0x98ac, 0x98ad, 0x98ae, 0x98af, 0x98b0, 0x98b1, 0x98b2,
+ 0x98b3, 0x98b4, 0x98b5, 0x98b6, 0x98b7, 0x98b8, 0x98b9, 0x98ba,
+ 0x98bb, 0x98bc, 0x98bd, 0x98be, 0x98bf, 0x98c0, 0x98c1, 0x98c2,
+ 0x98c3, 0x98c4, 0x98c5, 0x98c6, 0x98c7, 0x98c8, 0x98c9, 0x98ca,
+ 0x98cb, 0x98cc, 0x98cd, 0x98ce, 0x98cf, 0x98d0, 0x98d1, 0x98d2,
+ 0x98d3, 0x98d4, 0x98d5, 0x98d6, 0x98d7, 0x98d8, 0x98d9, 0x98da,
+ 0x98db, 0x98dc, 0x98dd, 0x98de, 0x98df, 0x98e0, 0x98e1, 0x98e2,
+ 0x98e3, 0x98e4, 0x98e5, 0x98e6, 0x98e7, 0x98e8, 0x98e9, 0x98ea,
+ 0x98eb, 0x98ec, 0x98ed, 0x98ee, 0x98ef, 0x98f0, 0x98f1, 0x98f2,
+ 0x98f3, 0x98f4, 0x98f5, 0x98f6, 0x98f7, 0x98f8, 0x98f9, 0x98fa,
+ 0x98fb, 0x98fc, 0x98fd, 0x98fe, 0x9940, 0x9941, 0x9942, 0x9943,
+ 0x9944, 0x9945, 0x9946, 0x9947, 0x9948, 0x9949, 0x994a, 0x994b,
+ 0x994c, 0x994d, 0x994e, 0x994f, 0x9950, 0x9951, 0x9952, 0x9953,
+ 0x9954, 0x9955, 0x9956, 0x9957, 0x9958, 0x9959, 0x995a, 0x995b,
+ 0x995c, 0x995d, 0x995e, 0x995f, 0x9960, 0x9961, 0x9962, 0x9963,
+ 0x9964, 0x9965, 0x9966, 0x9967, 0x9968, 0x9969, 0x996a, 0x996b,
+ 0x996c, 0x996d, 0x996e, 0x996f, 0x9970, 0x9971, 0x9972, 0x9973,
+ 0x9974, 0x9975, 0x9976, 0x9977, 0x9978, 0x9979, 0x997a, 0x997b,
+ 0x997c, 0x997d, 0x997e, 0x99a1, 0x99a2, 0x99a3, 0x99a4, 0x99a5,
+ 0x99a6, 0x99a7, 0x99a8, 0x99a9, 0x99aa, 0x99ab, 0x99ac, 0x99ad,
+ 0x99ae, 0x99af, 0x99b0, 0x99b1, 0x99b2, 0x99b3, 0x99b4, 0x99b5,
+ 0x99b6, 0x99b7, 0x99b8, 0x99b9, 0x99ba, 0x99bb, 0x99bc, 0x99bd,
+ 0x99be, 0x99bf, 0x99c0, 0x99c1, 0x99c2, 0x99c3, 0x99c4, 0x99c5,
+ 0x99c6, 0x99c7, 0x99c8, 0x99c9, 0x99ca, 0x99cb, 0x99cc, 0x99cd,
+ 0x99ce, 0x99cf, 0x99d0, 0x99d1, 0x99d2, 0x99d3, 0x99d4, 0x99d5,
+ 0x99d6, 0x99d7, 0x99d8, 0x99d9, 0x99da, 0x99db, 0x99dc, 0x99dd,
+ 0x99de, 0x99df, 0x99e0, 0x99e1, 0x99e2, 0x99e3, 0x99e4, 0x99e5,
+ 0x99e6, 0x99e7, 0x99e8, 0x99e9, 0x99ea, 0x99eb, 0x99ec, 0x99ed,
+ 0x99ee, 0x99ef, 0x99f0, 0x99f1, 0x99f2, 0x99f3, 0x99f4, 0x99f5,
+ 0x99f6, 0x99f7, 0x99f8, 0x99f9, 0x99fa, 0x99fb, 0x99fc, 0x99fd,
+ 0x99fe, 0x9a40, 0x9a41, 0x9a42, 0x9a43, 0x9a44, 0x9a45, 0x9a46,
+ 0x9a47, 0x9a48, 0x9a49, 0x9a4a, 0x9a4b, 0x9a4c, 0x9a4d, 0x9a4e,
+ 0x9a4f, 0x9a50, 0x9a51, 0x9a52, 0x9a53, 0x9a54, 0x9a55, 0x9a56,
+ 0x9a57, 0x9a58, 0x9a59, 0x9a5a, 0x9a5b, 0x9a5c, 0x9a5d, 0x9a5e,
+ 0x9a5f, 0x9a60, 0x9a61, 0x9a62, 0x9a63, 0x9a64, 0x9a65, 0x9a66,
+ 0x9a67, 0x9a68, 0x9a69, 0x9a6a, 0x9a6b, 0x9a6c, 0x9a6d, 0x9a6e,
+ 0x9a6f, 0x9a70, 0x9a71, 0x9a72, 0x9a73, 0x9a74, 0x9a75, 0x9a76,
+ 0x9a77, 0x9a78, 0x9a79, 0x9a7a, 0x9a7b, 0x9a7c, 0x9a7d, 0x9a7e,
+ 0x9aa1, 0x9aa2, 0x9aa3, 0x9aa4, 0x9aa5, 0x9aa6, 0x9aa7, 0x9aa8,
+ 0x9aa9, 0x9aaa, 0x9aab, 0x9aac, 0x9aad, 0x9aae, 0x9aaf, 0x9ab0,
+ 0x9ab1, 0x9ab2, 0x9ab3, 0x9ab4, 0x9ab5, 0x9ab6, 0x9ab7, 0x9ab8,
+ 0x9ab9, 0x9aba, 0x9abb, 0x9abc, 0x9abd, 0x9abe, 0x9abf, 0x9ac0,
+ 0x9ac1, 0x9ac2, 0x9ac3, 0x9ac4, 0x9ac5, 0x9ac6, 0x9ac7, 0x9ac8,
+ 0x9ac9, 0x9aca, 0x9acb, 0x9acc, 0x9acd, 0x9ace, 0x9acf, 0x9ad0,
+ 0x9ad1, 0x9ad2, 0x9ad3, 0x9ad4, 0x9ad5, 0x9ad6, 0x9ad7, 0x9ad8,
+ 0x9ad9, 0x9ada, 0x9adb, 0x9adc, 0x9add, 0x9ade, 0x9adf, 0x9ae0,
+ 0x9ae1, 0x9ae2, 0x9ae3, 0x9ae4, 0x9ae5, 0x9ae6, 0x9ae7, 0x9ae8,
+ 0x9ae9, 0x9aea, 0x9aeb, 0x9aec, 0x9aed, 0x9aee, 0x9aef, 0x9af0,
+ 0x9af1, 0x9af2, 0x9af3, 0x9af4, 0x9af5, 0x9af6, 0x9af7, 0x9af8,
+ 0x9af9, 0x9afa, 0x9afb, 0x9afc, 0x9afd, 0x9afe, 0x9b40, 0x9b41,
+ 0x9b42, 0x9b43, 0x9b44, 0x9b45, 0x9b46, 0x9b47, 0x9b48, 0x9b49,
+ 0x9b4a, 0x9b4b, 0x9b4c, 0x9b4d, 0x9b4e, 0x9b4f, 0x9b50, 0x9b51,
+ 0x9b52, 0x9b53, 0x9b54, 0x9b55, 0x9b56, 0x9b57, 0x9b58, 0x9b59,
+ 0x9b5a, 0x9b5b, 0x9b5c, 0x9b5d, 0x9b5e, 0x9b5f, 0x9b60, 0x9b61,
+ 0x9b62, 0x9b63, 0x9b64, 0x9b65, 0x9b66, 0x9b67, 0x9b68, 0x9b69,
+ 0x9b6a, 0x9b6b, 0x9b6c, 0x9b6d, 0x9b6e, 0x9b6f, 0x9b70, 0x9b71,
+ 0x9b72, 0x9b73, 0x9b74, 0x9b75, 0xeff9, 0x9b77, 0xc5f7, 0x9b79,
+ 0x9b7a, 0xf5e8, 0x9b7c, 0x9b7d, 0x9b7e, 0x9ba1, 0x9ba2, 0x9ba3,
+ 0x9ba4, 0x9ba5, 0x9ba6, 0x9ba7, 0x9ba8, 0x9ba9, 0x9baa, 0x9bab,
+ 0x9bac, 0x9bad, 0x9bae, 0x9baf, 0x9bb0, 0x9bb1, 0x9bb2, 0x9bb3,
+ 0x9bb4, 0x9bb5, 0x9bb6, 0x9bb7, 0x9bb8, 0x9bb9, 0x9bba, 0x9bbb,
+ 0x9bbc, 0x9bbd, 0x9bbe, 0x9bbf, 0x9bc0, 0x9bc1, 0x9bc2, 0x9bc3,
+ 0x9bc4, 0x9bc5, 0xe8cd, 0x9bc7, 0x9bc8, 0x9bc9, 0x9bca, 0x9bcb,
+ 0x9bcc, 0x9bcd, 0x9bce, 0x9bcf, 0x9bd0, 0x9bd1, 0x9bd2, 0x9bd3,
+ 0x9bd4, 0x9bd5, 0x9bd6, 0x9bd7, 0x9bd8, 0x9bd9, 0x9bda, 0x9bdb,
+ 0x9bdc, 0x9bdd, 0xd0c0, 0x9bdf, 0x9be0, 0x9be1, 0x9be2, 0x9be3,
+ 0x9be4, 0x9be5, 0x9be6, 0x9be7, 0x9be8, 0x9be9, 0x9bea, 0x9beb,
+ 0xfd64, 0x9bed, 0x9bee, 0x9bef, 0x9bf0, 0x9bf1, 0x9bf2, 0x9bf3,
+ 0x9bf4, 0x9bf5, 0xbf47, 0x9bf7, 0x9bf8, 0x9bf9, 0x9bfa, 0x9bfb,
+ 0x9bfc, 0x9bfd, 0x9bfe, 0x9c40, 0x9c41, 0xebc9, 0x9c43, 0x9c44,
+ 0x9c45, 0x9c46, 0x9c47, 0x9c48, 0x9c49, 0x9c4a, 0x9c4b, 0x9c4c,
+ 0x9c4d, 0x9c4e, 0x9c4f, 0x9c50, 0x9c51, 0x9c52, 0xcde7, 0x9c54,
+ 0x9c55, 0x9c56, 0x9c57, 0x9c58, 0x9c59, 0x9c5a, 0x9c5b, 0x9c5c,
+ 0x9c5d, 0x9c5e, 0x9c5f, 0x9c60, 0x9c61, 0xc0e7, 0x9c63, 0x9c64,
+ 0x9c65, 0x9c66, 0x9c67, 0xdc52, 0x9c69, 0x9c6a, 0xf86d, 0x9c6c,
+ 0x9c6d, 0x9c6e, 0x9c6f, 0x9c70, 0x9c71, 0x9c72, 0x9c73, 0x9c74,
+ 0x9c75, 0x9c76, 0xdb5d, 0x9c78, 0x9c79, 0x9c7a, 0x9c7b, 0x9c7c,
+ 0x9c7d, 0x9c7e, 0x9ca1, 0x9ca2, 0x9ca3, 0x9ca4, 0x9ca5, 0x9ca6,
+ 0x9ca7, 0x9ca8, 0x9ca9, 0x9caa, 0x9cab, 0x9cac, 0x9cad, 0x9cae,
+ 0x9caf, 0x9cb0, 0x9cb1, 0x9cb2, 0x9cb3, 0x9cb4, 0x9cb5, 0x9cb6,
+ 0x9cb7, 0x9cb8, 0x9cb9, 0x9cba, 0x9cbb, 0xc95c, 0xafb0, 0x9cbe,
+ 0x9cbf, 0x9cc0, 0x9cc1, 0x9cc2, 0x9cc3, 0x9cc4, 0x9cc5, 0x9cc6,
+ 0x9cc7, 0x9cc8, 0x9cc9, 0x9cca, 0x9ccb, 0x9ccc, 0x9ccd, 0x9cce,
+ 0x9ccf, 0xd4d1, 0x9cd1, 0x9cd2, 0x9cd3, 0x9cd4, 0x9cd5, 0x9cd6,
+ 0x9cd7, 0x9cd8, 0x9cd9, 0x9cda, 0x9cdb, 0x9cdc, 0x9cdd, 0x9cde,
+ 0x9cdf, 0x9ce0, 0x9ce1, 0x9ce2, 0x9ce3, 0x9ce4, 0x9ce5, 0x9ce6,
+ 0x9ce7, 0x9ce8, 0x9ce9, 0x9cea, 0x9ceb, 0x9cec, 0x9ced, 0x9cee,
+ 0x9cef, 0x9cf0, 0x9cf1, 0x9cf2, 0x9cf3, 0x9cf4, 0x9cf5, 0x9cf6,
+ 0x9cf7, 0x9cf8, 0x9cf9, 0x9cfa, 0x9cfb, 0x9cfc, 0x9cfd, 0x9cfe,
+ 0x9d40, 0x9d41, 0x9d42, 0x9d43, 0x9d44, 0x9d45, 0x9d46, 0x9d47,
+ 0x9d48, 0x9d49, 0x9d4a, 0x9d4b, 0x9d4c, 0x9d4d, 0x9d4e, 0x9d4f,
+ 0x9d50, 0x9d51, 0x9d52, 0x9d53, 0x9d54, 0x9d55, 0x9d56, 0xe07c,
+ 0x9d58, 0x9d59, 0xb5ae, 0x9d5b, 0x9d5c, 0x9d5d, 0x9d5e, 0x9d5f,
+ 0x9d60, 0x9d61, 0x9d62, 0x9d63, 0x9d64, 0x9d65, 0x9d66, 0x9d67,
+ 0x9d68, 0x9d69, 0x9d6a, 0x9d6b, 0x9d6c, 0x9d6d, 0x9d6e, 0x9d6f,
+ 0x9d70, 0x9d71, 0x9d72, 0x9d73, 0x9d74, 0x9d75, 0x9d76, 0x9d77,
+ 0x9d78, 0x9d79, 0x9d7a, 0x9d7b, 0x9d7c, 0x9d7d, 0x9d7e, 0x9da1,
+ 0x9da2, 0x9da3, 0x9da4, 0x9da5, 0x9da6, 0x9da7, 0x9da8, 0x9da9,
+ 0x9daa, 0x9dab, 0x9dac, 0x9dad, 0x9dae, 0x9daf, 0x9db0, 0x9db1,
+ 0x9db2, 0x9db3, 0x9db4, 0x9db5, 0x9db6, 0x9db7, 0x9db8, 0x9db9,
+ 0x9dba, 0x9dbb, 0x9dbc, 0x9dbd, 0x9dbe, 0x9dbf, 0x9dc0, 0x9dc1,
+ 0x9dc2, 0x9dc3, 0xa9e4, 0x9dc5, 0x9dc6, 0x9dc7, 0x9dc8, 0x9dc9,
+ 0x9dca, 0x9dcb, 0x9dcc, 0x9dcd, 0x9dce, 0x9dcf, 0x9dd0, 0x9dd1,
+ 0x9dd2, 0x9dd3, 0x9dd4, 0x9dd5, 0x9dd6, 0x9dd7, 0x9dd8, 0x9dd9,
+ 0x9dda, 0x9ddb, 0x9ddc, 0x9ddd, 0x9dde, 0x9ddf, 0x9de0, 0x9de1,
+ 0x9de2, 0x9de3, 0x9de4, 0x9de5, 0x9de6, 0x9de7, 0x9de8, 0x9de9,
+ 0x9dea, 0x9deb, 0x9dec, 0x9ded, 0x9dee, 0x9def, 0x9df0, 0x9df1,
+ 0x9df2, 0x9df3, 0x9df4, 0x9df5, 0x9df6, 0x9df7, 0x9df8, 0x9df9,
+ 0x9dfa, 0x9dfb, 0x9dfc, 0x9dfd, 0x9dfe, 0x9e40, 0x9e41, 0x9e42,
+ 0x9e43, 0x9e44, 0x9e45, 0x9e46, 0x9e47, 0x9e48, 0x9e49, 0x9e4a,
+ 0x9e4b, 0x9e4c, 0x9e4d, 0x9e4e, 0x9e4f, 0x9e50, 0x9e51, 0x9e52,
+ 0x9e53, 0x9e54, 0x9e55, 0x9e56, 0x9e57, 0x9e58, 0x9e59, 0x9e5a,
+ 0x9e5b, 0x9e5c, 0x9e5d, 0x9e5e, 0x9e5f, 0x9e60, 0x9e61, 0x9e62,
+ 0x9e63, 0x9e64, 0x9e65, 0x9e66, 0x9e67, 0x9e68, 0x9e69, 0x9e6a,
+ 0x9e6b, 0x9e6c, 0x9e6d, 0x9e6e, 0x9e6f, 0x9e70, 0x9e71, 0x9e72,
+ 0x9e73, 0x9e74, 0x9e75, 0x9e76, 0x9e77, 0x9e78, 0x9e79, 0x9e7a,
+ 0x9e7b, 0x9e7c, 0x9e7d, 0x9e7e, 0x9ea1, 0x9ea2, 0x9ea3, 0x9ea4,
+ 0x9ea5, 0x9ea6, 0x9ea7, 0x9ea8, 0xabec, 0x9eaa, 0x9eab, 0x9eac,
+ 0x9ead, 0x9eae, 0x9eaf, 0x9eb0, 0x9eb1, 0x9eb2, 0x9eb3, 0x9eb4,
+ 0x9eb5, 0x9eb6, 0x9eb7, 0x9eb8, 0x9eb9, 0x9eba, 0x9ebb, 0x9ebc,
+ 0x9ebd, 0x9ebe, 0x9ebf, 0x9ec0, 0x9ec1, 0x9ec2, 0x9ec3, 0x9ec4,
+ 0x9ec5, 0x9ec6, 0x9ec7, 0x9ec8, 0x9ec9, 0x9eca, 0x9ecb, 0x9ecc,
+ 0x9ecd, 0x9ece, 0x9ecf, 0x9ed0, 0x9ed1, 0x9ed2, 0x9ed3, 0x9ed4,
+ 0x9ed5, 0x9ed6, 0x9ed7, 0x9ed8, 0x9ed9, 0x9eda, 0x9edb, 0x9edc,
+ 0x9edd, 0x9ede, 0x9edf, 0x9ee0, 0x9ee1, 0x9ee2, 0x9ee3, 0x9ee4,
+ 0x9ee5, 0x9ee6, 0x9ee7, 0x9ee8, 0x9ee9, 0x9eea, 0x9eeb, 0x9eec,
+ 0x9eed, 0x9eee, 0xdecd, 0x9ef0, 0x9ef1, 0x9ef2, 0x9ef3, 0x9ef4,
+ 0x9ef5, 0x9ef6, 0x9ef7, 0x9ef8, 0x9ef9, 0x9efa, 0x9efb, 0x9efc,
+ 0xc9fc, 0x9efe, 0x9f40, 0x9f41, 0x9f42, 0x9f43, 0x9f44, 0x9f45,
+ 0x9f46, 0x9f47, 0x9f48, 0x9f49, 0x9f4a, 0x9f4b, 0x9f4c, 0x9f4d,
+ 0x9f4e, 0x9f4f, 0x9f50, 0x9f51, 0x9f52, 0x9f53, 0x9f54, 0x9f55,
+ 0x9f56, 0x9f57, 0x9f58, 0x9f59, 0x9f5a, 0x9f5b, 0x9f5c, 0x9f5d,
+ 0x9f5e, 0x9f5f, 0xf9c4, 0x9f61, 0x9f62, 0x9f63, 0x9f64, 0x9f65,
+ 0x91be, 0x9f67, 0x9f68, 0x9f69, 0x9f6a, 0x9f6b, 0x9f6c, 0x9f6d,
+ 0x9f6e, 0x9f6f, 0x9f70, 0x9f71, 0x9f72, 0x9f73, 0x9f74, 0x9f75,
+ 0x9f76, 0x9f77, 0x9f78, 0x9f79, 0x9f7a, 0x9f7b, 0x9f7c, 0x9f7d,
+ 0x9f7e, 0x9fa1, 0x9fa2, 0x9fa3, 0x9fa4, 0x9fa5, 0x9fa6, 0x9fa7,
+ 0x9fa8, 0x9fa9, 0x9faa, 0x9fab, 0x9fac, 0x9fad, 0x9fae, 0x9faf,
+ 0x9fb0, 0x9fb1, 0x9fb2, 0x9fb3, 0x9fb4, 0x9fb5, 0x9fb6, 0x9fb7,
+ 0x9fb8, 0x9fb9, 0x9fba, 0x9fbb, 0x9fbc, 0x9fbd, 0x9fbe, 0x9fbf,
+ 0x9fc0, 0x9fc1, 0x9fc2, 0x9fc3, 0x9fc4, 0x9fc5, 0x9fc6, 0x9fc7,
+ 0x9fc8, 0x9fc9, 0x9fca, 0xb9b0, 0x9fcc, 0x9fcd, 0x9fce, 0x9fcf,
+ 0x9fd0, 0x9fd1, 0x9fd2, 0x9fd3, 0x9fd4, 0x9fd5, 0x9fd6, 0x9fd7,
+ 0x9361, 0x9fd9, 0x9fda, 0x9fdb, 0x9fdc, 0x9fdd, 0x9fde, 0x9fdf,
+ 0x9fe0, 0x9fe1, 0x9fe2, 0x9fe3, 0x9fe4, 0x9fe5, 0x9fe6, 0x9fe7,
+ 0x9fe8, 0x9fe9, 0x9fea, 0x9feb, 0x9fec, 0x9fed, 0x9fee, 0x9fef,
+ 0x9ff0, 0x9ff1, 0x9ff2, 0x9ff3, 0x9ff4, 0x9ff5, 0x9ff6, 0x9ff7,
+ 0x9ff8, 0x9ff9, 0x9ffa, 0x9ffb, 0x9ffc, 0x9ffd, 0x9ffe, 0xa040,
+ 0xa041, 0xa042, 0xa043, 0xa044, 0xa045, 0xa046, 0xa047, 0xa048,
+ 0xa049, 0xa04a, 0xa04b, 0xa04c, 0xa04d, 0xa04e, 0xa04f, 0xa050,
+ 0xa051, 0xa052, 0xa053, 0xa054, 0xa055, 0xa056, 0xa057, 0xa058,
+ 0xa059, 0xa05a, 0xa05b, 0xa05c, 0xa05d, 0xa05e, 0xa05f, 0xa060,
+ 0xa061, 0xa062, 0x8fb6, 0xa064, 0xa065, 0xa066, 0xa067, 0xa068,
+ 0xa069, 0xa06a, 0xa06b, 0xa06c, 0xa06d, 0xa06e, 0xa06f, 0xa070,
+ 0xa071, 0xa072, 0xa073, 0xa074, 0xa075, 0xa076, 0xa9f0, 0xa078,
+ 0xa079, 0xa07a, 0xa07b, 0xa07c, 0xa07d, 0xa07e, 0xa0a1, 0xa0a2,
+ 0xa0a3, 0xa0a4, 0xa0a5, 0xa0a6, 0xa0a7, 0xa0a8, 0xa0a9, 0xa0aa,
+ 0xa0ab, 0xa0ac, 0xa0ad, 0xa0ae, 0xa0af, 0xa0b0, 0xa0b1, 0xa0b2,
+ 0xa0b3, 0xa0b4, 0xa0b5, 0xa0b6, 0xa0b7, 0xa0b8, 0xa0b9, 0xa0ba,
+ 0xa0bb, 0xa0bc, 0xa0bd, 0xa0be, 0xa0bf, 0xa0c0, 0xa0c1, 0xa0c2,
+ 0xa0c3, 0xa0c4, 0xa0c5, 0xa0c6, 0xa0c7, 0xa0c8, 0xa0c9, 0xa0ca,
+ 0xa0cb, 0xa0cc, 0xa0cd, 0xa0ce, 0xa0cf, 0xa0d0, 0xa0d1, 0xa0d2,
+ 0xa0d3, 0xa0d4, 0x947a, 0xa0d6, 0xa0d7, 0xa0d8, 0xa0d9, 0xa0da,
+ 0xa0db, 0xa0dc, 0xa0dd, 0xa0de, 0xde72, 0xa0e0, 0xa0e1, 0xa0e2,
+ 0xa0e3, 0x9455, 0xa0e5, 0xa0e6, 0xa0e7, 0xa0e8, 0xa0e9, 0xa0ea,
+ 0xa0eb, 0xa0ec, 0xa0ed, 0xa0ee, 0xa0ef, 0xa0f0, 0xa0f1, 0xa0f2,
+ 0xa0f3, 0xa0f4, 0xa0f5, 0xa0f6, 0xa0f7, 0xa0f8, 0xa0f9, 0xa0fa,
+ 0xa0fb, 0xa0fc, 0xa0fd, 0xa0fe, 0x8140, 0x8141, 0x8142, 0x8143,
+ 0x8144, 0x8145, 0x8146, 0x8147, 0x8148, 0x8149, 0x814a, 0x814b,
+ 0x814c, 0x814d, 0x814e, 0x814f, 0x8150, 0x8151, 0x8152, 0x8153,
+ 0x8154, 0x8155, 0x8156, 0x8157, 0x8158, 0x8159, 0x815a, 0x815b,
+ 0x815c, 0x815d, 0x815e, 0x815f, 0x8160, 0x8161, 0x8162, 0x8163,
+ 0x8164, 0x8165, 0x8166, 0x8167, 0x8168, 0x8169, 0x816a, 0x816b,
+ 0x816c, 0x816d, 0x816e, 0x816f, 0x8170, 0x8171, 0x8172, 0x8173,
+ 0x8174, 0x8175, 0x8176, 0x8177, 0x8178, 0x8179, 0x817a, 0x817b,
+ 0x817c, 0x817d, 0x817e, 0x81a1, 0x81a2, 0x81a3, 0x81a4, 0x81a5,
+ 0x81a6, 0x81a7, 0x81a8, 0x81a9, 0x81aa, 0x81ab, 0x81ac, 0x81ad,
+ 0x81ae, 0x81af, 0x81b0, 0x81b1, 0x81b2, 0x81b3, 0x81b4, 0x81b5,
+ 0x81b6, 0x81b7, 0x81b8, 0x81b9, 0x81ba, 0x81bb, 0x81bc, 0x81bd,
+ 0x81be, 0x81bf, 0x81c0, 0x81c1, 0x81c2, 0x81c3, 0x81c4, 0x81c5,
+ 0x81c6, 0x81c7, 0x81c8, 0x81c9, 0x81ca, 0x81cb, 0x81cc, 0x81cd,
+ 0x81ce, 0x81cf, 0x81d0, 0x81d1, 0x81d2, 0x81d3, 0x81d4, 0x81d5,
+ 0x81d6, 0x81d7, 0x81d8, 0x81d9, 0x81da, 0x81db, 0x81dc, 0x81dd,
+ 0x81de, 0x81df, 0x81e0, 0x81e1, 0x81e2, 0x81e3, 0x81e4, 0x81e5,
+ 0x81e6, 0x81e7, 0x81e8, 0x81e9, 0x81ea, 0x81eb, 0x81ec, 0x81ed,
+ 0x81ee, 0x81ef, 0x81f0, 0x81f1, 0x81f2, 0x81f3, 0x81f4, 0x81f5,
+ 0x81f6, 0x81f7, 0x81f8, 0x81f9, 0x81fa, 0x81fb, 0x81fc, 0x81fd,
+ 0x81fe, 0x8240, 0x8241, 0x8242, 0x8243, 0x8244, 0x8245, 0x8246,
+ 0x8247, 0x8248, 0x8249, 0x824a, 0x824b, 0x824c, 0x824d, 0x824e,
+ 0x824f, 0x8250, 0x8251, 0x8252, 0x8253, 0x8254, 0x8255, 0x8256,
+ 0x8257, 0x8258, 0x8259, 0x825a, 0x825b, 0x825c, 0x825d, 0x825e,
+ 0x825f, 0x8260, 0x8261, 0x8262, 0x8263, 0x8264, 0x8265, 0x8266,
+ 0x8267, 0x8268, 0x8269, 0x826a, 0x826b, 0x826c, 0x826d, 0x826e,
+ 0x826f, 0x8270, 0x8271, 0x8272, 0x8273, 0x8274, 0x8275, 0x8276,
+ 0x8277, 0x8278, 0x8279, 0x827a, 0x827b, 0x827c, 0x827d, 0x827e,
+ 0x82a1, 0x82a2, 0x82a3, 0x82a4, 0x82a5, 0x82a6, 0x82a7, 0x82a8,
+ 0x82a9, 0x82aa, 0x82ab, 0x82ac, 0x82ad, 0x82ae, 0x82af, 0x82b0,
+ 0x82b1, 0x82b2, 0x82b3, 0x82b4, 0x82b5, 0x82b6, 0x82b7, 0x82b8,
+ 0x82b9, 0x82ba, 0x82bb, 0x82bc, 0x82bd, 0x82be, 0x82bf, 0x82c0,
+ 0x82c1, 0x82c2, 0x82c3, 0x82c4, 0x82c5, 0x82c6, 0x82c7, 0x82c8,
+ 0x82c9, 0x82ca, 0x82cb, 0x82cc, 0x82cd, 0x82ce, 0x82cf, 0x82d0,
+ 0x82d1, 0x82d2, 0x82d3, 0x82d4, 0x82d5, 0x82d6, 0x82d7, 0x82d8,
+ 0x82d9, 0x82da, 0x82db, 0x82dc, 0x82dd, 0x82de, 0x82df, 0x82e0,
+ 0x82e1, 0x82e2, 0x82e3, 0x82e4, 0x82e5, 0x82e6, 0x82e7, 0x82e8,
+ 0x82e9, 0x82ea, 0x82eb, 0x82ec, 0x82ed, 0x82ee, 0x82ef, 0x82f0,
+ 0x82f1, 0x82f2, 0x82f3, 0x82f4, 0x82f5, 0x82f6, 0x82f7, 0x82f8,
+ 0x82f9, 0x82fa, 0x82fb, 0x82fc, 0x82fd, 0x82fe, 0x8340, 0x8341,
+ 0x8342, 0x8343, 0x8344, 0x8345, 0x8346, 0x8347, 0x8348, 0x8349,
+ 0x834a, 0x834b, 0x834c, 0x834d, 0x834e, 0x834f, 0x8350, 0x8351,
+ 0x8352, 0x8353, 0x8354, 0x8355, 0x8356, 0x8357, 0x8358, 0x8359,
+ 0x835a, 0x835b, 0x835c, 0x835d, 0x835e, 0x835f, 0x8360, 0x8361,
+ 0x8362, 0x8363, 0x8364, 0x8365, 0x8366, 0x8367, 0x8368, 0x8369,
+ 0x836a, 0x836b, 0x836c, 0x836d, 0x836e, 0x836f, 0x8370, 0x8371,
+ 0x8372, 0x8373, 0x8374, 0x8375, 0x8376, 0x8377, 0x8378, 0x8379,
+ 0x837a, 0x837b, 0x837c, 0x837d, 0x837e, 0x83a1, 0x83a2, 0x83a3,
+ 0x83a4, 0x83a5, 0x83a6, 0x83a7, 0x83a8, 0x83a9, 0x83aa, 0x83ab,
+ 0x83ac, 0x83ad, 0x83ae, 0x83af, 0x83b0, 0x83b1, 0x83b2, 0x83b3,
+ 0x83b4, 0x83b5, 0x83b6, 0x83b7, 0x83b8, 0x83b9, 0x83ba, 0x83bb,
+ 0x83bc, 0x83bd, 0x83be, 0x83bf, 0x83c0, 0x83c1, 0x83c2, 0x83c3,
+ 0x83c4, 0x83c5, 0x83c6, 0x83c7, 0x83c8, 0x83c9, 0x83ca, 0x83cb,
+ 0x83cc, 0x83cd, 0x83ce, 0x83cf, 0x83d0, 0x83d1, 0x83d2, 0x83d3,
+ 0x83d4, 0x83d5, 0x83d6, 0x83d7, 0x83d8, 0x83d9, 0x83da, 0x83db,
+ 0x83dc, 0x83dd, 0x83de, 0x83df, 0x83e0, 0x83e1, 0x83e2, 0x83e3,
+ 0x83e4, 0x83e5, 0x83e6, 0x83e7, 0x83e8, 0x83e9, 0x83ea, 0x83eb,
+ 0x83ec, 0x83ed, 0x83ee, 0x83ef, 0x83f0, 0x83f1, 0x83f2, 0x83f3,
+ 0x83f4, 0x83f5, 0x83f6, 0x83f7, 0x83f8, 0x83f9, 0x83fa, 0x83fb,
+ 0x83fc, 0x83fd, 0x83fe, 0x8440, 0x8441, 0x8442, 0x8443, 0x8444,
+ 0x8445, 0x8446, 0x8447, 0x8448, 0x8449, 0x844a, 0x844b, 0x844c,
+ 0x844d, 0x844e, 0x844f, 0x8450, 0x8451, 0x8452, 0x8453, 0x8454,
+ 0x8455, 0x8456, 0x8457, 0x8458, 0x8459, 0x845a, 0x845b, 0x845c,
+ 0x845d, 0x845e, 0x845f, 0x8460, 0x8461, 0x8462, 0x8463, 0x8464,
+ 0x8465, 0x8466, 0x8467, 0x8468, 0x8469, 0x846a, 0x846b, 0x846c,
+ 0x846d, 0x846e, 0x846f, 0x8470, 0x8471, 0x8472, 0x8473, 0x8474,
+ 0x8475, 0x8476, 0x8477, 0x8478, 0x8479, 0x847a, 0x847b, 0x847c,
+ 0x847d, 0x847e, 0x84a1, 0x84a2, 0x84a3, 0x84a4, 0x84a5, 0x84a6,
+ 0x84a7, 0x84a8, 0x84a9, 0x84aa, 0x84ab, 0x84ac, 0x84ad, 0x84ae,
+ 0x84af, 0x84b0, 0x84b1, 0x84b2, 0x84b3, 0x84b4, 0x84b5, 0x84b6,
+ 0x84b7, 0x84b8, 0x84b9, 0x84ba, 0x84bb, 0x84bc, 0x84bd, 0x84be,
+ 0x84bf, 0x84c0, 0x84c1, 0x84c2, 0x84c3, 0x84c4, 0x84c5, 0x84c6,
+ 0x84c7, 0x84c8, 0x84c9, 0x84ca, 0x84cb, 0x84cc, 0x84cd, 0x84ce,
+ 0x84cf, 0x84d0, 0x84d1, 0x84d2, 0x84d3, 0x84d4, 0x84d5, 0x84d6,
+ 0x84d7, 0x84d8, 0x84d9, 0x84da, 0x84db, 0x84dc, 0x84dd, 0x84de,
+ 0x84df, 0x84e0, 0x84e1, 0x84e2, 0x84e3, 0x84e4, 0x84e5, 0x84e6,
+ 0x84e7, 0x84e8, 0x84e9, 0x84ea, 0x84eb, 0x84ec, 0x84ed, 0x84ee,
+ 0x84ef, 0x84f0, 0x84f1, 0x84f2, 0x84f3, 0x84f4, 0x84f5, 0x84f6,
+ 0x84f7, 0x84f8, 0x84f9, 0x84fa, 0x84fb, 0x84fc, 0x84fd, 0x84fe,
+ 0x8540, 0x8541, 0x8542, 0x8543, 0x8544, 0x8545, 0x8546, 0x8547,
+ 0x8548, 0x8549, 0x854a, 0x854b, 0x854c, 0x854d, 0x854e, 0x854f,
+ 0x8550, 0x8551, 0x8552, 0x8553, 0x8554, 0x8555, 0x8556, 0x8557,
+ 0x8558, 0x8559, 0x855a, 0x855b, 0x855c, 0x855d, 0x855e, 0x855f,
+ 0x8560, 0x8561, 0x8562, 0x8563, 0x8564, 0x8565, 0x8566, 0x8567,
+ 0x8568, 0x8569, 0x856a, 0x856b, 0x856c, 0x856d, 0x856e, 0x856f,
+ 0x8570, 0x8571, 0x8572, 0x8573, 0x8574, 0x8575, 0x8576, 0x8577,
+ 0x8578, 0x8579, 0x857a, 0x857b, 0x857c, 0x857d, 0x857e, 0x85a1,
+ 0x85a2, 0x85a3, 0x85a4, 0x85a5, 0x85a6, 0x85a7, 0x85a8, 0x85a9,
+ 0x85aa, 0x85ab, 0x85ac, 0x85ad, 0x85ae, 0x85af, 0x85b0, 0x85b1,
+ 0x85b2, 0x85b3, 0x85b4, 0x85b5, 0x85b6, 0x85b7, 0x85b8, 0x85b9,
+ 0x85ba, 0x85bb, 0x85bc, 0x85bd, 0x85be, 0x85bf, 0x85c0, 0x85c1,
+ 0x85c2, 0x85c3, 0x85c4, 0x85c5, 0x85c6, 0x85c7, 0x85c8, 0x85c9,
+ 0x85ca, 0x85cb, 0x85cc, 0x85cd, 0x85ce, 0x85cf, 0x85d0, 0x85d1,
+ 0x85d2, 0x85d3, 0x85d4, 0x85d5, 0x85d6, 0x85d7, 0x85d8, 0x85d9,
+ 0x85da, 0x85db, 0x85dc, 0x85dd, 0x85de, 0x85df, 0x85e0, 0x85e1,
+ 0x85e2, 0x85e3, 0x85e4, 0x85e5, 0x85e6, 0x85e7, 0x85e8, 0x85e9,
+ 0x85ea, 0x85eb, 0x85ec, 0x85ed, 0x85ee, 0x85ef, 0x85f0, 0x85f1,
+ 0x85f2, 0x85f3, 0x85f4, 0x85f5, 0x85f6, 0x85f7, 0x85f8, 0x85f9,
+ 0x85fa, 0x85fb, 0x85fc, 0x85fd, 0x85fe, 0x8640, 0x8641, 0x8642,
+ 0x8643, 0x8644, 0x8645, 0x8646, 0x8647, 0x8648, 0x8649, 0x864a,
+ 0x864b, 0x864c, 0x864d, 0x864e, 0x864f, 0x8650, 0x8651, 0x8652,
+ 0x8653, 0x8654, 0x8655, 0x8656, 0x8657, 0x8658, 0x8659, 0x865a,
+ 0x865b, 0x865c, 0x865d, 0x865e, 0x865f, 0x8660, 0x8661, 0x8662,
+ 0x8663, 0x8664, 0x8665, 0x8666, 0x8667, 0x8668, 0x8669, 0x866a,
+ 0x866b, 0x866c, 0x866d, 0x866e, 0x866f, 0x8670, 0x8671, 0x8672,
+ 0x8673, 0x8674, 0x8675, 0x8676, 0x8677, 0x8678, 0x8679, 0x867a,
+ 0x867b, 0x867c, 0x867d, 0x867e, 0x86a1, 0x86a2, 0x86a3, 0x86a4,
+ 0x86a5, 0x86a6, 0x86a7, 0x86a8, 0x86a9, 0x86aa, 0x86ab, 0x86ac,
+ 0x86ad, 0x86ae, 0x86af, 0x86b0, 0x86b1, 0x86b2, 0x86b3, 0x86b4,
+ 0x86b5, 0x86b6, 0x86b7, 0x86b8, 0x86b9, 0x86ba, 0x86bb, 0x86bc,
+ 0x86bd, 0x86be, 0x86bf, 0x86c0, 0x86c1, 0x86c2, 0x86c3, 0x86c4,
+ 0x86c5, 0x86c6, 0x86c7, 0x86c8, 0x86c9, 0x86ca, 0x86cb, 0x86cc,
+ 0x86cd, 0x86ce, 0x86cf, 0x86d0, 0x86d1, 0x86d2, 0x86d3, 0x86d4,
+ 0x86d5, 0x86d6, 0x86d7, 0x86d8, 0x86d9, 0x86da, 0x86db, 0x86dc,
+ 0x86dd, 0x86de, 0x86df, 0x86e0, 0x86e1, 0x86e2, 0x86e3, 0x86e4,
+ 0x86e5, 0x86e6, 0x86e7, 0x86e8, 0x86e9, 0x86ea, 0x86eb, 0x86ec,
+ 0x86ed, 0x86ee, 0x86ef, 0x86f0, 0x86f1, 0x86f2, 0x86f3, 0x86f4,
+ 0x86f5, 0x86f6, 0x86f7, 0x86f8, 0x86f9, 0x86fa, 0x86fb, 0x86fc,
+ 0x86fd, 0x86fe, 0x8740, 0x8741, 0x8742, 0x8743, 0x8744, 0x8745,
+ 0x8746, 0x8747, 0x8748, 0x8749, 0x874a, 0x874b, 0x874c, 0x874d,
+ 0x874e, 0x874f, 0x8750, 0x8751, 0x8752, 0x8753, 0x8754, 0x8755,
+ 0x8756, 0x8757, 0x8758, 0x8759, 0x875a, 0x875b, 0x875c, 0x875d,
+ 0x875e, 0x875f, 0x8760, 0x8761, 0x8762, 0x8763, 0x8764, 0x8765,
+ 0x8766, 0x8767, 0x8768, 0x8769, 0x876a, 0x876b, 0x876c, 0x876d,
+ 0x876e, 0x876f, 0x8770, 0x8771, 0x8772, 0x8773, 0x8774, 0x8775,
+ 0x8776, 0x8777, 0x8778, 0x8779, 0x877a, 0x877b, 0x877c, 0x877d,
+ 0x877e, 0x87a1, 0x87a2, 0x87a3, 0x87a4, 0x87a5, 0x87a6, 0x87a7,
+ 0x87a8, 0x87a9, 0x87aa, 0x87ab, 0x87ac, 0x87ad, 0x87ae, 0x87af,
+ 0x87b0, 0x87b1, 0x87b2, 0x87b3, 0x87b4, 0x87b5, 0x87b6, 0x87b7,
+ 0x87b8, 0x87b9, 0x87ba, 0x87bb, 0x87bc, 0x87bd, 0x87be, 0x87bf,
+ 0x87c0, 0x87c1, 0x87c2, 0x87c3, 0x87c4, 0x87c5, 0x87c6, 0x87c7,
+ 0x87c8, 0x87c9, 0x87ca, 0x87cb, 0x87cc, 0x87cd, 0x87ce, 0x87cf,
+ 0x87d0, 0x87d1, 0x87d2, 0x87d3, 0x87d4, 0x87d5, 0x87d6, 0x87d7,
+ 0x87d8, 0x87d9, 0x87da, 0x87db, 0x87dc, 0x87dd, 0x87de, 0x87df,
+ 0x87e0, 0x87e1, 0x87e2, 0x87e3, 0x87e4, 0x87e5, 0x87e6, 0x87e7,
+ 0x87e8, 0x87e9, 0x87ea, 0x87eb, 0x87ec, 0x87ed, 0x87ee, 0x87ef,
+ 0x87f0, 0x87f1, 0x87f2, 0x87f3, 0x87f4, 0x87f5, 0x87f6, 0x87f7,
+ 0x87f8, 0x87f9, 0x87fa, 0x87fb, 0x87fc, 0x87fd, 0x87fe, 0x8840,
+ 0x8841, 0x8842, 0x8843, 0x8844, 0x8845, 0x8846, 0x8847, 0x8848,
+ 0x8849, 0x884a, 0x884b, 0x884c, 0x884d, 0x884e, 0x884f, 0x8850,
+ 0x8851, 0x8852, 0x8853, 0x8854, 0x8855, 0x8856, 0x8857, 0x8858,
+ 0x8859, 0x885a, 0x885b, 0x885c, 0x885d, 0x885e, 0x885f, 0x8860,
+ 0x8861, 0x8862, 0x8863, 0x8864, 0x8865, 0x8866, 0x8867, 0x8868,
+ 0x8869, 0x886a, 0x886b, 0x886c, 0x886d, 0x886e, 0x886f, 0x8870,
+ 0x8871, 0x8872, 0x8873, 0x8874, 0x8875, 0x8876, 0x8877, 0x8878,
+ 0x8879, 0x887a, 0x887b, 0x887c, 0x887d, 0x887e, 0x88a1, 0x88a2,
+ 0x88a3, 0x88a4, 0x88a5, 0x88a6, 0x88a7, 0x88a8, 0x88a9, 0x88aa,
+ 0x88ab, 0x88ac, 0x88ad, 0x88ae, 0x88af, 0x88b0, 0x88b1, 0x88b2,
+ 0x88b3, 0x88b4, 0x88b5, 0x88b6, 0x88b7, 0x88b8, 0x88b9, 0x88ba,
+ 0x88bb, 0x88bc, 0x88bd, 0x88be, 0x88bf, 0x88c0, 0x88c1, 0x88c2,
+ 0x88c3, 0x88c4, 0x88c5, 0x88c6, 0x88c7, 0x88c8, 0x88c9, 0x88ca,
+ 0x88cb, 0x88cc, 0x88cd, 0x88ce, 0x88cf, 0x88d0, 0x88d1, 0x88d2,
+ 0x88d3, 0x88d4, 0x88d5, 0x88d6, 0x88d7, 0x88d8, 0x88d9, 0x88da,
+ 0x88db, 0x88dc, 0x88dd, 0x88de, 0x88df, 0x88e0, 0x88e1, 0x88e2,
+ 0x88e3, 0x88e4, 0x88e5, 0x88e6, 0x88e7, 0x88e8, 0x88e9, 0x88ea,
+ 0x88eb, 0x88ec, 0x88ed, 0x88ee, 0x88ef, 0x88f0, 0x88f1, 0x88f2,
+ 0x88f3, 0x88f4, 0x88f5, 0x88f6, 0x88f7, 0x88f8, 0x88f9, 0x88fa,
+ 0x88fb, 0x88fc, 0x88fd, 0x88fe, 0x8940, 0x8941, 0x8942, 0x8943,
+ 0x8944, 0x8945, 0x8946, 0x8947, 0x8948, 0x8949, 0x894a, 0x894b,
+ 0x894c, 0x894d, 0x894e, 0x894f, 0x8950, 0x8951, 0x8952, 0x8953,
+ 0x8954, 0x8955, 0x8956, 0x8957, 0x8958, 0x8959, 0x895a, 0x895b,
+ 0x895c, 0x895d, 0x895e, 0x895f, 0x8960, 0x8961, 0x8962, 0x8963,
+ 0x8964, 0x8965, 0x8966, 0x8967, 0x8968, 0x8969, 0x896a, 0x896b,
+ 0x896c, 0x896d, 0x896e, 0x896f, 0x8970, 0x8971, 0x8972, 0x8973,
+ 0x8974, 0x8975, 0x8976, 0x8977, 0x8978, 0x8979, 0x897a, 0x897b,
+ 0x897c, 0x897d, 0x897e, 0x89a1, 0x89a2, 0x89a3, 0x89a4, 0x89a5,
+ 0x89a6, 0x89a7, 0x89a8, 0x89a9, 0x89aa, 0x89ab, 0x89ac, 0x89ad,
+ 0x89ae, 0x89af, 0x89b0, 0x89b1, 0x89b2, 0x89b3, 0x89b4, 0x89b5,
+ 0x89b6, 0x89b7, 0x89b8, 0x89b9, 0x89ba, 0x89bb, 0x89bc, 0x89bd,
+ 0x89be, 0x89bf, 0x89c0, 0x89c1, 0x89c2, 0x89c3, 0x89c4, 0x89c5,
+ 0x89c6, 0x89c7, 0x89c8, 0x89c9, 0x89ca, 0x89cb, 0x89cc, 0x89cd,
+ 0x89ce, 0x89cf, 0x89d0, 0x89d1, 0x89d2, 0x89d3, 0x89d4, 0x89d5,
+ 0x89d6, 0x89d7, 0x89d8, 0x89d9, 0x89da, 0x89db, 0x89dc, 0x89dd,
+ 0x89de, 0x89df, 0x89e0, 0x89e1, 0x89e2, 0x89e3, 0x89e4, 0x89e5,
+ 0x89e6, 0x89e7, 0x89e8, 0x89e9, 0x89ea, 0x89eb, 0x89ec, 0x89ed,
+ 0x89ee, 0x89ef, 0x89f0, 0x89f1, 0x89f2, 0x89f3, 0x89f4, 0x89f5,
+ 0x89f6, 0x89f7, 0x89f8, 0x89f9, 0x89fa, 0x89fb, 0x89fc, 0x89fd,
+ 0x89fe, 0x8a40, 0x8a41, 0x8a42, 0x8a43, 0x8a44, 0x8a45, 0x8a46,
+ 0x8a47, 0x8a48, 0x8a49, 0x8a4a, 0x8a4b, 0x8a4c, 0x8a4d, 0x8a4e,
+ 0x8a4f, 0x8a50, 0x8a51, 0x8a52, 0x8a53, 0x8a54, 0x8a55, 0x8a56,
+ 0x8a57, 0x8a58, 0x8a59, 0x8a5a, 0x8a5b, 0x8a5c, 0x8a5d, 0x8a5e,
+ 0x8a5f, 0x8a60, 0x8a61, 0x8a62, 0x8a63, 0x8a64, 0x8a65, 0x8a66,
+ 0x8a67, 0x8a68, 0x8a69, 0x8a6a, 0x8a6b, 0x8a6c, 0x8a6d, 0x8a6e,
+ 0x8a6f, 0x8a70, 0x8a71, 0x8a72, 0x8a73, 0x8a74, 0x8a75, 0x8a76,
+ 0x8a77, 0x8a78, 0x8a79, 0x8a7a, 0x8a7b, 0x8a7c, 0x8a7d, 0x8a7e,
+ 0x8aa1, 0x8aa2, 0x8aa3, 0x8aa4, 0x8aa5, 0x8aa6, 0x8aa7, 0x8aa8,
+ 0x8aa9, 0x8aaa, 0x8aab, 0x8aac, 0x8aad, 0x8aae, 0x8aaf, 0x8ab0,
+ 0x8ab1, 0x8ab2, 0x8ab3, 0x8ab4, 0x8ab5, 0x8ab6, 0x8ab7, 0x8ab8,
+ 0x8ab9, 0x8aba, 0x8abb, 0x8abc, 0x8abd, 0x8abe, 0x8abf, 0x8ac0,
+ 0x8ac1, 0x8ac2, 0x8ac3, 0x8ac4, 0x8ac5, 0x8ac6, 0x8ac7, 0x8ac8,
+ 0x8ac9, 0x8aca, 0x8acb, 0x8acc, 0x8acd, 0x8ace, 0x8acf, 0x8ad0,
+ 0x8ad1, 0x8ad2, 0x8ad3, 0x8ad4, 0x8ad5, 0x8ad6, 0x8ad7, 0x8ad8,
+ 0x8ad9, 0x8ada, 0x8adb, 0x8adc, 0x8add, 0x8ade, 0x8adf, 0x8ae0,
+ 0x8ae1, 0x8ae2, 0x8ae3, 0x8ae4, 0x8ae5, 0x8ae6, 0x8ae7, 0x8ae8,
+ 0x8ae9, 0x8aea, 0x8aeb, 0x8aec, 0x8aed, 0x8aee, 0x8aef, 0x8af0,
+ 0x8af1, 0x8af2, 0x8af3, 0x8af4, 0x8af5, 0x8af6, 0x8af7, 0x8af8,
+ 0x8af9, 0x8afa, 0x8afb, 0x8afc, 0x8afd, 0x8afe, 0x8b40, 0x8b41,
+ 0x8b42, 0x8b43, 0x8b44, 0x8b45, 0x8b46, 0x8b47, 0x8b48, 0x8b49,
+ 0x8b4a, 0x8b4b, 0x8b4c, 0x8b4d, 0x8b4e, 0x8b4f, 0x8b50, 0x8b51,
+ 0x8b52, 0x8b53, 0x8b54, 0x8b55, 0x8b56, 0x8b57, 0x8b58, 0x8b59,
+ 0x8b5a, 0x8b5b, 0x8b5c, 0x8b5d, 0x8b5e, 0x8b5f, 0x8b60, 0x8b61,
+ 0x8b62, 0x8b63, 0x8b64, 0x8b65, 0x8b66, 0x8b67, 0x8b68, 0x8b69,
+ 0x8b6a, 0x8b6b, 0x8b6c, 0x8b6d, 0x8b6e, 0x8b6f, 0x8b70, 0x8b71,
+ 0x8b72, 0x8b73, 0x8b74, 0x8b75, 0x8b76, 0x8b77, 0x8b78, 0x8b79,
+ 0x8b7a, 0x8b7b, 0x8b7c, 0x8b7d, 0x8b7e, 0x8ba1, 0x8ba2, 0x8ba3,
+ 0x8ba4, 0x8ba5, 0x8ba6, 0x8ba7, 0x8ba8, 0x8ba9, 0x8baa, 0x8bab,
+ 0x8bac, 0x8bad, 0x8bae, 0x8baf, 0x8bb0, 0x8bb1, 0x8bb2, 0x8bb3,
+ 0x8bb4, 0x8bb5, 0x8bb6, 0x8bb7, 0x8bb8, 0x8bb9, 0x8bba, 0x8bbb,
+ 0x8bbc, 0x8bbd, 0x8bbe, 0x8bbf, 0x8bc0, 0x8bc1, 0x8bc2, 0x8bc3,
+ 0x8bc4, 0x8bc5, 0x8bc6, 0x8bc7, 0x8bc8, 0x8bc9, 0x8bca, 0x8bcb,
+ 0x8bcc, 0x8bcd, 0x8bce, 0x8bcf, 0x8bd0, 0x8bd1, 0x8bd2, 0x8bd3,
+ 0x8bd4, 0x8bd5, 0x8bd6, 0x8bd7, 0x8bd8, 0x8bd9, 0x8bda, 0x8bdb,
+ 0x8bdc, 0x8bdd, 0x8bde, 0x8bdf, 0x8be0, 0x8be1, 0x8be2, 0x8be3,
+ 0x8be4, 0x8be5, 0x8be6, 0x8be7, 0x8be8, 0x8be9, 0x8bea, 0x8beb,
+ 0x8bec, 0x8bed, 0x8bee, 0x8bef, 0x8bf0, 0x8bf1, 0x8bf2, 0x8bf3,
+ 0x8bf4, 0x8bf5, 0x8bf6, 0x8bf7, 0x8bf8, 0x8bf9, 0x8bfa, 0x8bfb,
+ 0x8bfc, 0x8bfd, 0x8bfe, 0x8c40, 0x8c41, 0x8c42, 0x8c43, 0x8c44,
+ 0x8c45, 0x8c46, 0x8c47, 0x8c48, 0x8c49, 0x8c4a, 0x8c4b, 0x8c4c,
+ 0x8c4d, 0x8c4e, 0x8c4f, 0x8c50, 0x8c51, 0x8c52, 0x8c53, 0x8c54,
+ 0x8c55, 0x8c56, 0x8c57, 0x8c58, 0x8c59, 0x8c5a, 0x8c5b, 0x8c5c,
+ 0x8c5d, 0x8c5e, 0x8c5f, 0x8c60, 0x8c61, 0x8c62, 0x8c63, 0x8c64,
+ 0x8c65, 0x8c66, 0x8c67, 0x8c68, 0x8c69, 0x8c6a, 0x8c6b, 0x8c6c,
+ 0x8c6d, 0x8c6e, 0x8c6f, 0x8c70, 0x8c71, 0x8c72, 0x8c73, 0x8c74,
+ 0x8c75, 0x8c76, 0x8c77, 0x8c78, 0x8c79, 0x8c7a, 0x8c7b, 0x8c7c,
+ 0x8c7d, 0x8c7e, 0x8ca1, 0x8ca2, 0x8ca3, 0x8ca4, 0x8ca5, 0x8ca6,
+ 0x8ca7, 0x8ca8, 0x8ca9, 0x8caa, 0x8cab, 0x8cac, 0x8cad, 0x8cae,
+ 0x8caf, 0x8cb0, 0x8cb1, 0x8cb2, 0x8cb3, 0x8cb4, 0x8cb5, 0x8cb6,
+ 0x8cb7, 0x8cb8, 0x8cb9, 0x8cba, 0x8cbb, 0x8cbc, 0x8cbd, 0x8cbe,
+ 0x8cbf, 0x8cc0, 0x8cc1, 0x8cc2, 0x8cc3, 0x8cc4, 0x8cc5, 0x8cc6,
+ 0x8cc7, 0x8cc8, 0x8cc9, 0x8cca, 0x8ccb, 0x8ccc, 0x8ccd, 0x8cce,
+ 0x8ccf, 0x8cd0, 0x8cd1, 0x8cd2, 0x8cd3, 0x8cd4, 0x8cd5, 0x8cd6,
+ 0x8cd7, 0x8cd8, 0x8cd9, 0x8cda, 0x8cdb, 0x8cdc, 0x8cdd, 0x8cde,
+ 0x8cdf, 0x8ce0, 0x8ce1, 0x8ce2, 0x8ce3, 0x8ce4, 0x8ce5, 0x8ce6,
+ 0x8ce7, 0x8ce8, 0x8ce9, 0x8cea, 0x8ceb, 0x8cec, 0x8ced, 0x8cee,
+ 0x8cef, 0x8cf0, 0x8cf1, 0x8cf2, 0x8cf3, 0x8cf4, 0x8cf5, 0x8cf6,
+ 0x8cf7, 0x8cf8, 0x8cf9, 0x8cfa, 0x8cfb, 0x8cfc, 0x8cfd, 0x8cfe,
+ 0x8d40, 0x8d41, 0x8d42, 0x8d43, 0x8d44, 0x8d45, 0x8d46, 0x8d47,
+ 0x8d48, 0x8d49, 0x8d4a, 0x8d4b, 0x8d4c, 0x8d4d, 0x8d4e, 0x8d4f,
+ 0x8d50, 0x8d51, 0x8d52, 0x8d53, 0x8d54, 0x8d55, 0x8d56, 0x8d57,
+ 0x8d58, 0x8d59, 0x8d5a, 0x8d5b, 0x8d5c, 0x8d5d, 0x8d5e, 0x8d5f,
+ 0x8d60, 0x8d61, 0x8d62, 0x8d63, 0x8d64, 0x8d65, 0x8d66, 0x8d67,
+ 0x8d68, 0x8d69, 0x8d6a, 0x8d6b, 0x8d6c, 0x8d6d, 0x8d6e, 0x8d6f,
+ 0x8d70, 0x8d71, 0x8d72, 0x8d73, 0x8d74, 0x8d75, 0x8d76, 0x8d77,
+ 0x8d78, 0x8d79, 0x8d7a, 0x8d7b, 0x8d7c, 0x8d7d, 0x8d7e, 0x8da1,
+ 0x8da2, 0x8da3, 0x8da4, 0x8da5, 0x8da6, 0x8da7, 0x8da8, 0x8da9,
+ 0x8daa, 0x8dab, 0x8dac, 0x8dad, 0x8dae, 0x8daf, 0x8db0, 0x8db1,
+ 0x8db2, 0x8db3, 0x8db4, 0x8db5, 0x8db6, 0x8db7, 0x8db8, 0x8db9,
+ 0x8dba, 0x8dbb, 0x8dbc, 0x8dbd, 0x8dbe, 0x8dbf, 0x8dc0, 0x8dc1,
+ 0x8dc2, 0x8dc3, 0x8dc4, 0x8dc5, 0x8dc6, 0x8dc7, 0x8dc8, 0x8dc9,
+ 0x8dca, 0x8dcb, 0x8dcc, 0x8dcd, 0x8dce, 0x8dcf, 0x8dd0, 0x8dd1,
+ 0x8dd2, 0x8dd3, 0x8dd4, 0x8dd5, 0x8dd6, 0x8dd7, 0x8dd8, 0x8dd9,
+ 0x8dda, 0x8ddb, 0x8ddc, 0x8ddd, 0x8dde, 0x8ddf, 0x8de0, 0x8de1,
+ 0x8de2, 0x8de3, 0x8de4, 0x8de5, 0x8de6, 0x8de7, 0x8de8, 0x8de9,
+ 0x8dea, 0x8deb, 0x8dec, 0x8ded, 0x8dee, 0x8def, 0x8df0, 0x8df1,
+ 0x8df2, 0x8df3, 0x8df4, 0x8df5, 0x8df6, 0x8df7, 0x8df8, 0x8df9,
+ 0x8dfa, 0x8dfb, 0x8dfc, 0x8dfd, 0x8dfe, 0xc6a1, 0xc6a2, 0xc6a3,
+ 0xc6a4, 0xc6a5, 0xc6a6, 0xc6a7, 0xc6a8, 0xc6a9, 0xc6aa, 0xc6ab,
+ 0xc6ac, 0xc6ad, 0xc6ae, 0xc6af, 0xc6b0, 0xc6b1, 0xc6b2, 0xc6b3,
+ 0xc6b4, 0xc6b5, 0xc6b6, 0xc6b7, 0xc6b8, 0xc6b9, 0xc6ba, 0xc6bb,
+ 0xc6bc, 0xc6bd, 0xc6be, 0xc6bf, 0xc6c0, 0xc6c1, 0xc6c2, 0xc6c3,
+ 0xc6c4, 0xc6c5, 0xc6c6, 0xc6c7, 0xc6c8, 0xc6c9, 0xc6ca, 0xc6cb,
+ 0xc6cc, 0xc6cd, 0xc6ce, 0xc6cf, 0xc6d0, 0xc6d1, 0xc6d2, 0xc6d3,
+ 0xc6d4, 0xc6d5, 0xc6d6, 0xc6d7, 0xc6d8, 0xc6d9, 0xc6da, 0xc6db,
+ 0xc6dc, 0xc6dd, 0xc6de, 0xc6df, 0xc6e0, 0xc6e1, 0xc6e2, 0xc6e3,
+ 0xc6e4, 0xc6e5, 0xc6e6, 0xc6e7, 0xc6e8, 0xc6e9, 0xc6ea, 0xc6eb,
+ 0xc6ec, 0xc6ed, 0xc6ee, 0xc6ef, 0xc6f0, 0xc6f1, 0xc6f2, 0xc6f3,
+ 0xc6f4, 0xc6f5, 0xc6f6, 0xc6f7, 0xc6f8, 0xc6f9, 0xc6fa, 0xc6fb,
+ 0xc6fc, 0xc6fd, 0xc6fe, 0xc740, 0xc741, 0xc742, 0xc743, 0xc744,
+ 0xc745, 0xc746, 0xc747, 0xc748, 0xc749, 0xc74a, 0xc74b, 0xc74c,
+ 0xc74d, 0xc74e, 0xc74f, 0xc750, 0xc751, 0xc752, 0xc753, 0xc754,
+ 0xc755, 0xc756, 0xc757, 0xc758, 0xc759, 0xc75a, 0xc75b, 0xc75c,
+ 0xc75d, 0xc75e, 0xc75f, 0xc760, 0xc761, 0xc762, 0xc763, 0xc764,
+ 0xc765, 0xc766, 0xc767, 0xc768, 0xc769, 0xc76a, 0xc76b, 0xc76c,
+ 0xc76d, 0xc76e, 0xc76f, 0xc770, 0xc771, 0xc772, 0xc773, 0xc774,
+ 0xc775, 0xc776, 0xc777, 0xc778, 0xc779, 0xc77a, 0xc77b, 0xc77c,
+ 0xc77d, 0xc77e, 0xc7a1, 0xc7a2, 0xc7a3, 0xc7a4, 0xc7a5, 0xc7a6,
+ 0xc7a7, 0xc7a8, 0xc7a9, 0xc7aa, 0xc7ab, 0xc7ac, 0xc7ad, 0xc7ae,
+ 0xc7af, 0xc7b0, 0xc7b1, 0xc7b2, 0xc7b3, 0xc7b4, 0xc7b5, 0xc7b6,
+ 0xc7b7, 0xc7b8, 0xc7b9, 0xc7ba, 0xc7bb, 0xc7bc, 0xc7bd, 0xc7be,
+ 0xc7bf, 0xc7c0, 0xc7c1, 0xc7c2, 0xc7c3, 0xc7c4, 0xc7c5, 0xc7c6,
+ 0xc7c7, 0xc7c8, 0xc7c9, 0xc7ca, 0xc7cb, 0xc7cc, 0xc7cd, 0xc7ce,
+ 0xc7cf, 0xc7d0, 0xc7d1, 0xc7d2, 0xc7d3, 0xc7d4, 0xc7d5, 0xc7d6,
+ 0xc7d7, 0xc7d8, 0xc7d9, 0xc7da, 0xc7db, 0xc7dc, 0xc7dd, 0xc7de,
+ 0xc7df, 0xc7e0, 0xc7e1, 0xc7e2, 0xc7e3, 0xc7e4, 0xc7e5, 0xc7e6,
+ 0xc7e7, 0xc7e8, 0xc7e9, 0xc7ea, 0xc7eb, 0xc7ec, 0xc7ed, 0xc7ee,
+ 0xc7ef, 0xc7f0, 0xc7f1, 0xc7f2, 0xc7f3, 0xc7f4, 0xc7f5, 0xc7f6,
+ 0xc7f7, 0xc7f8, 0xc7f9, 0xc7fa, 0xc7fb, 0xc7fc, 0xc7fd, 0xc7fe,
+ 0xc840, 0xc841, 0xc842, 0xc843, 0xc844, 0xc845, 0xc846, 0xc847,
+ 0xc848, 0xc849, 0xc84a, 0xc84b, 0xc84c, 0xc84d, 0xc84e, 0xc84f,
+ 0xc850, 0xc851, 0xc852, 0xc853, 0xc854, 0xc855, 0xc856, 0xc857,
+ 0xc858, 0xc859, 0xc85a, 0xc85b, 0xc85c, 0xc85d, 0xc85e, 0xc85f,
+ 0xc860, 0xc861, 0xc862, 0xc863, 0xc864, 0xc865, 0xc866, 0xc867,
+ 0xc868, 0xc869, 0xc86a, 0xc86b, 0xc86c, 0xc86d, 0xc86e, 0xc86f,
+ 0xc870, 0xc871, 0xc872, 0xc873, 0xc874, 0xc875, 0xc876, 0xc877,
+ 0xc878, 0xc879, 0xc87a, 0xc87b, 0xc87c, 0xc87d, 0xc87e, 0xc8a1,
+ 0xc8a2, 0xc8a3, 0xc8a4, 0xc8a5, 0xc8a6, 0xc8a7, 0xc8a8, 0xc8a9,
+ 0xc8aa, 0xc8ab, 0xc8ac, 0xc8ad, 0xc8ae, 0xc8af, 0xc8b0, 0xc8b1,
+ 0xc8b2, 0xc8b3, 0xc8b4, 0xc8b5, 0xc8b6, 0xc8b7, 0xc8b8, 0xc8b9,
+ 0xc8ba, 0xc8bb, 0xc8bc, 0xc8bd, 0xc8be, 0xc8bf, 0xc8c0, 0xc8c1,
+ 0xc8c2, 0xc8c3, 0xc8c4, 0xc8c5, 0xc8c6, 0xc8c7, 0xc8c8, 0xc8c9,
+ 0xc8ca, 0xc8cb, 0xc8cc, 0xc8cd, 0xc8ce, 0xc8cf, 0xc8d0, 0xc8d1,
+ 0xc8d2, 0xc8d3, 0xc8d4, 0xc8d5, 0xc8d6, 0xc8d7, 0xc8d8, 0xc8d9,
+ 0xc8da, 0xc8db, 0xc8dc, 0xc8dd, 0xc8de, 0xc8df, 0xc8e0, 0xc8e1,
+ 0xc8e2, 0xc8e3, 0xc8e4, 0xc8e5, 0xc8e6, 0xc8e7, 0xc8e8, 0xc8e9,
+ 0xc8ea, 0xc8eb, 0xc8ec, 0xc8ed, 0xc8ee, 0xc8ef, 0xc8f0, 0xc8f1,
+ 0xc8f2, 0xc8f3, 0xc8f4, 0xc8f5, 0xc8f6, 0xc8f7, 0xc8f8, 0xc8f9,
+ 0xc8fa, 0xc8fb, 0xc8fc, 0xc8fd, 0xc8fe, 0xb05a, 0xa7f3, 0xa8ae,
+ 0xb8eb, 0xb7c6, 0xa6ea, 0xa579, 0x8bf8, 0xc074, 0xabb4, 0xaaf7,
+ 0xb3e2, 0xa960, 0xc369, 0xc4ee, 0xc3b9, 0xc5da, 0xc1b3, 0xbb72,
+ 0xc5de, 0xbcd6, 0xaca5, 0xaf4f, 0xaf5f, 0xb8a8, 0xb954, 0xc064,
+ 0xb6c3, 0xa75a, 0xc4e6, 0xc4ea, 0xc4f5, 0xc67d, 0xb450, 0xc0dd,
+ 0xc2c5, 0xc4b0, 0xa9d4, 0xc3be, 0xc4fa, 0xb459, 0xaed4, 0xaef6,
+ 0xaf54, 0xa8d3, 0xa74e, 0xb3d2, 0xbedb, 0xc372, 0xc46c, 0xbf63,
+ 0xa6d1, 0xc4aa, 0xb8b8, 0xb8f4, 0xc553, 0xbe7c, 0xc64f, 0xb84c,
+ 0xb853, 0xbaf1, 0xdb77, 0xbffd, 0xb3c0, 0xbdd7, 0xc362, 0xa7cb,
+ 0xc5a2, 0xc5a4, 0xa863, 0xbd55, 0xb8ef, 0xb970, 0xc253, 0xb9f0,
+ 0xbcd3, 0xb25c, 0xba7c, 0xb2d6, 0xc15c, 0xadae, 0xb0c7, 0xa6d8,
+ 0xbbfe, 0xade2, 0xb857, 0xbaf0, 0xb5d9, 0xb3ae, 0xc5aa, 0xced4,
+ 0xbcd6, 0xbfd5, 0xa4a6, 0xb9e7, 0xabe3, 0xb276, 0xb2a7, 0xa55f,
+ 0xeda8, 0xab4b, 0xb45f, 0xa4a3, 0xaa63, 0xbcc6, 0xafc1, 0xb0d1,
+ 0xb6eb, 0xacd9, 0xb8ad, 0xbba1, 0xb1fe, 0xa8b0, 0xa848, 0xac42,
+ 0xad59, 0xb1b0, 0xb2a4, 0xab47, 0xa8e2, 0xb1e7, 0xc2b3, 0xa87d,
+ 0xbdcc, 0xb671, 0xc079, 0xa766, 0xa46b, 0xc366, 0xaec8, 0xc26f,
+ 0xc472, 0xbe5b, 0xc67a, 0xc452, 0xbea4, 0xa44f, 0xbee4, 0xbefa,
+ 0xf765, 0xa67e, 0xbca6, 0xc5ca, 0xbcbf, 0xbaa7, 0xb7d2, 0xe6a3,
+ 0xbd6d, 0xc170, 0xbdfb, 0xbdac, 0xb373, 0xc1e5, 0xa643, 0xa648,
+ 0xab7c, 0xaf50, 0xb5f5, 0xbba1, 0xb747, 0xa9c0, 0xb1c9, 0xc0d4,
+ 0xc3ae, 0xc279, 0xa54f, 0xcbf1, 0xb9e7, 0xc0ad, 0xccb0, 0xacc2,
+ 0xbcfc, 0xb2dc, 0xb2e2, 0xb961, 0xb973, 0xc646, 0xbbe2, 0xa8d2,
+ 0xc2a7, 0xc4bf, 0xc1f5, 0xb463, 0xa446, 0xb9b1, 0xbc64, 0xa7bf,
+ 0xaec6, 0xbcd6, 0xbf52, 0xc0f8, 0xe764, 0xbff1, 0xc073, 0xb777,
+ 0xa8bf, 0xbc42, 0xccd8, 0xac68, 0xac79, 0xb7c8, 0xaf5b, 0xaf64,
+ 0xb2b8, 0xafc3, 0xc3fe, 0xa4bb, 0xbcae, 0xb3b0, 0xaddb, 0xb15b,
+ 0xb25f, 0xbdfc, 0xabdf, 0xb758, 0xaedf, 0xb276, 0xb6a9, 0xa751,
+ 0xa64f, 0xbc69, 0xa9f6, 0xa7f5, 0xb1f9, 0xaa64, 0xb27a, 0xb567,
+ 0xbfa9, 0xb8cc, 0xa8bd, 0xc2f7, 0xb0ce, 0xb7c4, 0xa75b, 0xbf4d,
+ 0xbf5a, 0xc4a9, 0xc5ec, 0xc5ef, 0xaa4c, 0xb24f, 0xc17b, 0xa5df,
+ 0xb2c1, 0xb2c9, 0xaaac, 0xaaa5, 0xc3d1, 0xa4b0, 0xaff9, 0xa8eb,
+ 0xa4c1, 0xabd7, 0xa9dd, 0xbf7d, 0xa676, 0xac7d, 0xbcc9, 0xbfe7,
+ 0xa6e6, 0xadb0, 0xa8a3, 0xb9f8, 0xc94a, 0xddfc, 0xb6ef, 0xb4b8,
+ 0xe8f9, 0xbdde, 0xaf71, 0xafab, 0xb2bb, 0xbad6, 0xb974, 0xbaeb,
+ 0xa6d0, 0xbdd1, 0xb668, 0xb3a3, 0xb6ba, 0xb97d, 0xc05d, 0xc562,
+ 0xa14a, 0xa157, 0xa159, 0xa15b, 0xa15f, 0xa160, 0xa163, 0xa164,
+ 0xa167, 0xa168, 0xa16b, 0xa16c, 0xa16f, 0xa170, 0xa173, 0xa174,
+ 0xa177, 0xa178, 0xa17b, 0xa17c, 0xa1c6, 0xa1c7, 0xa1ca, 0xa1cb,
+ 0xa1c8, 0xa1c9, 0xa15c, 0xa14d, 0xa14e, 0xa14f, 0xa151, 0xa152,
+ 0xa153, 0xa154, 0xa17d, 0xa17e, 0xa1a1, 0xa1a2, 0xa1a3, 0xa1a4,
+ 0xa1cc, 0xa1cd, 0xa1ce, 0xa1de, 0xa1df, 0xa1e0, 0xa1e1, 0xa1e2,
+ 0xa242, 0xa24c, 0xa24d, 0xa24e, 0xa149, 0xc8d0, 0xa1ad, 0xa243,
+ 0xa248, 0xa1ae, 0xc8cf, 0xa15d, 0xa15e, 0xa1af, 0xa1cf, 0xa141,
+ 0xa1d0, 0xa144, 0xa1fe, 0xa2af, 0xa2b0, 0xa2b1, 0xa2b2, 0xa2b3,
+ 0xa2b4, 0xa2b5, 0xa2b6, 0xa2b7, 0xa2b8, 0xa147, 0xa146, 0xa1d5,
+ 0xa1d7, 0xa1d6, 0xa148, 0xa249, 0xa2cf, 0xa2d0, 0xa2d1, 0xa2d2,
+ 0xa2d3, 0xa2d4, 0xa2d5, 0xa2d6, 0xa2d7, 0xa2d8, 0xa2d9, 0xa2da,
+ 0xa2db, 0xa2dc, 0xa2dd, 0xa2de, 0xa2df, 0xa2e0, 0xa2e1, 0xa2e2,
+ 0xa2e3, 0xa2e4, 0xa2e5, 0xa2e6, 0xa2e7, 0xa2e8, 0xc6e4, 0xa240,
+ 0xc6e5, 0xa173, 0xa1c4, 0xa1a5, 0xa2e9, 0xa2ea, 0xa2eb, 0xa2ec,
+ 0xa2ed, 0xa2ee, 0xa2ef, 0xa2f0, 0xa2f1, 0xa2f2, 0xa2f3, 0xa2f4,
+ 0xa2f5, 0xa2f6, 0xa2f7, 0xa2f8, 0xa2f9, 0xa2fa, 0xa2fb, 0xa2fc,
+ 0xa2fd, 0xa2fe, 0xa340, 0xa341, 0xa342, 0xa343, 0xa161, 0xa155,
+ 0xa162, 0xa1e3, 0xa14e, 0xa246, 0xa247, 0xc8cd, 0xa1c3, 0xc8ce,
+ 0xa244, 0xf9fe,
+};
+
+static const Summary16 big5hkscs_uni2indx_page00[16] = {
+ /* 0x0000 */
+ { 0, 0x0000 }, { 0, 0x0000 }, { 0, 0x0000 }, { 0, 0x0000 },
+ { 0, 0x0000 }, { 0, 0x0000 }, { 0, 0x0000 }, { 0, 0x0000 },
+ { 0, 0x0000 }, { 0, 0x0000 }, { 0, 0x81ac }, { 6, 0x01b3 },
+ { 12, 0x0703 }, { 17, 0x008c }, { 20, 0x3703 }, { 27, 0x178c },
+};
+static const Summary16 big5hkscs_uni2indx_page02[29] = {
+ /* 0x0200 */
+ { 56, 0x0000 }, { 56, 0x0000 }, { 56, 0x0000 }, { 56, 0x0000 },
+ { 56, 0x0000 }, { 56, 0x0813 }, { 60, 0x0402 }, { 62, 0x0020 },
+ { 63, 0x0408 }, { 65, 0x0000 }, { 65, 0x0000 }, { 65, 0x0000 },
+ { 65, 0x2ec0 }, { 71, 0x0200 }, { 72, 0x0000 }, { 72, 0x0000 },
+ /* 0x0300 */
+ { 72, 0x0020 }, { 73, 0x0000 }, { 73, 0x0000 }, { 73, 0x0000 },
+ { 73, 0x0000 }, { 73, 0x0000 }, { 73, 0x0000 }, { 73, 0x0000 },
+ { 73, 0x0000 }, { 73, 0xfffe }, { 88, 0x03fb }, { 97, 0xfffe },
+ { 112, 0x03fb },
+};
+static const Summary16 big5hkscs_uni2indx_page20[44] = {
+ /* 0x2000 */
+ { 191, 0x0000 }, { 191, 0x3378 }, { 199, 0x00f4 }, { 204, 0x482c },
+ { 209, 0x0000 }, { 209, 0x0000 }, { 209, 0x0000 }, { 209, 0x0000 },
+ { 209, 0x0000 }, { 209, 0x0000 }, { 209, 0x0000 }, { 209, 0x0000 },
+ { 209, 0x0000 }, { 209, 0x0000 }, { 209, 0x0000 }, { 209, 0x0000 },
+ /* 0x2100 */
+ { 209, 0x0228 }, { 212, 0x0040 }, { 213, 0x0002 }, { 214, 0x0000 },
+ { 214, 0x0000 }, { 214, 0x0000 }, { 214, 0x03ff }, { 224, 0x03ff },
+ { 234, 0x0000 }, { 234, 0x03cf }, { 242, 0x0000 }, { 242, 0x0300 },
+ { 244, 0x0000 }, { 244, 0x0000 }, { 244, 0x0080 }, { 245, 0x0000 },
+ /* 0x2200 */
+ { 245, 0x0000 }, { 245, 0xc560 }, { 251, 0x4e29 }, { 258, 0x0030 },
+ { 260, 0x0000 }, { 260, 0x0004 }, { 261, 0x00cb }, { 266, 0x0000 },
+ { 266, 0x0000 }, { 266, 0x0220 }, { 268, 0x0020 }, { 269, 0x8000 },
+};
+static const Summary16 big5hkscs_uni2indx_page25[21] = {
+ /* 0x2500 */
+ { 291, 0x1005 }, { 294, 0x1111 }, { 298, 0x1010 }, { 300, 0x1010 },
+ { 302, 0x0000 }, { 302, 0xffff }, { 318, 0xffff }, { 334, 0x001f },
+ { 339, 0xfffe }, { 354, 0x0038 }, { 357, 0x0003 }, { 359, 0x300c },
+ { 363, 0xc8c0 }, { 368, 0x0000 }, { 368, 0x003c }, { 372, 0x0000 },
+ /* 0x2600 */
+ { 372, 0x0260 }, { 375, 0x0000 }, { 375, 0x0000 }, { 375, 0x0000 },
+ { 375, 0x0007 },
+};
+static const Summary16 big5hkscs_uni2indx_page30[62] = {
+ /* 0x3000 */
+ { 408, 0xffef }, { 423, 0x7037 }, { 431, 0x03fe }, { 440, 0x0001 },
+ { 441, 0xfffe }, { 456, 0xffff }, { 472, 0xffff }, { 488, 0xffff },
+ { 504, 0xffff }, { 520, 0x780f }, { 528, 0xfffe }, { 543, 0xffff },
+ { 559, 0xffff }, { 575, 0xffff }, { 591, 0xffff }, { 607, 0x707f },
+ /* 0x3100 */
+ { 617, 0xffe0 }, { 628, 0xffff }, { 644, 0x03ff }, { 654, 0x0000 },
+ { 654, 0x0000 }, { 654, 0x0000 }, { 654, 0x0000 }, { 654, 0x0000 },
+ { 654, 0x0000 }, { 654, 0xfffc }, { 668, 0x0000 }, { 668, 0x0000 },
+ { 668, 0x0000 }, { 668, 0x0000 }, { 668, 0x0000 }, { 668, 0x0000 },
+ /* 0x3200 */
+ { 668, 0x0000 }, { 668, 0x0000 }, { 668, 0xffff }, { 684, 0xffff },
+ { 700, 0x000f }, { 704, 0x0000 }, { 704, 0x0000 }, { 704, 0x0000 },
+ { 704, 0xffff }, { 720, 0xffff }, { 736, 0xffff }, { 752, 0x0001 },
+ { 753, 0x0000 }, { 753, 0x0000 }, { 753, 0x0000 }, { 753, 0x0000 },
+ /* 0x3300 */
+ { 753, 0x0000 }, { 753, 0x0000 }, { 753, 0x0000 }, { 753, 0x0000 },
+ { 753, 0x0000 }, { 753, 0x0000 }, { 753, 0x0000 }, { 753, 0x0000 },
+ { 753, 0xc000 }, { 755, 0x7000 }, { 758, 0x0002 }, { 759, 0x0000 },
+ { 759, 0x4010 }, { 761, 0x0026 },
+};
+static const Summary16 big5hkscs_uni2indx_page4e[1307] = {
+ /* 0x4e00 */
+ { 1275, 0xff9b }, { 1288, 0xd773 }, { 1299, 0xfd52 }, { 1309, 0xbbcf },
+ { 1321, 0xebac }, { 1331, 0xff4c }, { 1342, 0x0600 }, { 1344, 0xc108 },
+ { 1348, 0x7bff }, { 1362, 0xcf3e }, { 1373, 0x797f }, { 1385, 0x9ec8 },
+ { 1393, 0x6fdf }, { 1406, 0xf7f0 }, { 1417, 0x4f3a }, { 1426, 0xa9ff },
+ /* 0x4f00 */
+ { 1438, 0xef3f }, { 1451, 0x27bf }, { 1462, 0xb304 }, { 1468, 0xffdd },
+ { 1482, 0xfbee }, { 1495, 0xffff }, { 1511, 0xde9f }, { 1523, 0xfffd },
+ { 1538, 0xafff }, { 1552, 0x7df7 }, { 1565, 0xc904 }, { 1570, 0xaeed },
+ { 1581, 0xffbf }, { 1596, 0xffdb }, { 1610, 0xd033 }, { 1617, 0x67ff },
+ /* 0x5000 */
+ { 1630, 0xfbe9 }, { 1642, 0xdffe }, { 1656, 0xffef }, { 1671, 0x18bb },
+ { 1679, 0xffeb }, { 1693, 0xfdea }, { 1705, 0xff7f }, { 1720, 0x24fd },
+ { 1729, 0x79af }, { 1740, 0x7f77 }, { 1753, 0xf04c }, { 1760, 0xfdff },
+ { 1775, 0xeff6 }, { 1788, 0xaefb }, { 1800, 0xf7fb }, { 1814, 0xfb7b },
+ /* 0x5100 */
+ { 1827, 0x7fff }, { 1842, 0x95bf }, { 1853, 0x6e77 }, { 1864, 0xbfbf },
+ { 1878, 0x3bfb }, { 1890, 0xfef4 }, { 1902, 0x7faf }, { 1915, 0x13f2 },
+ { 1923, 0xa7c5 }, { 1932, 0x55fe }, { 1943, 0x5db5 }, { 1953, 0x73ff },
+ { 1966, 0xfff8 }, { 1979, 0xf99f }, { 1991, 0x2017 }, { 1996, 0x777b },
+ /* 0x5200 */
+ { 2008, 0x5fef }, { 2021, 0xf0cf }, { 2031, 0x47f3 }, { 2041, 0x1dff },
+ { 2053, 0x7eda }, { 2064, 0xfef4 }, { 2076, 0xff07 }, { 2087, 0xbfbc },
+ { 2099, 0xbf9f }, { 2112, 0x8fdb }, { 2123, 0x7f5b }, { 2135, 0x5a20 },
+ { 2140, 0x32af }, { 2149, 0xebef }, { 2162, 0x8a5f }, { 2171, 0xdfbb },
+ /* 0x5300 */
+ { 2184, 0xef62 }, { 2194, 0xb6e7 }, { 2205, 0xb49f }, { 2215, 0xfb9f },
+ { 2228, 0x77bf }, { 2241, 0xf49e }, { 2251, 0xf2db }, { 2262, 0xfbbf },
+ { 2276, 0xc414 }, { 2281, 0xf7dc }, { 2293, 0x7ff5 }, { 2306, 0x0a55 },
+ { 2312, 0x3f2e }, { 2322, 0x8fd7 }, { 2333, 0xff7f }, { 2348, 0x59ef },
+ /* 0x5400 */
+ { 2359, 0xffda }, { 2372, 0xff5f }, { 2386, 0xfffb }, { 2401, 0x7bff },
+ { 2415, 0xedef }, { 2428, 0x0010 }, { 2429, 0xbfff }, { 2444, 0xfdff },
+ { 2459, 0xf9f7 }, { 2472, 0x55ff }, { 2484, 0xffff }, { 2500, 0xffdf },
+ { 2515, 0xfbff }, { 2530, 0x4441 }, { 2534, 0xefff }, { 2549, 0xbd8e },
+ /* 0x5500 */
+ { 2559, 0xfffe }, { 2574, 0x459f }, { 2583, 0xfde8 }, { 2594, 0xdbff },
+ { 2608, 0xeffb }, { 2622, 0xf0ef }, { 2633, 0x0e7e }, { 2642, 0xfaee },
+ { 2654, 0xffdf }, { 2669, 0xb73f }, { 2681, 0x7ffe }, { 2695, 0x9e3f },
+ { 2706, 0xffff }, { 2722, 0xffff }, { 2738, 0x97fe }, { 2750, 0xfee7 },
+ /* 0x5600 */
+ { 2763, 0xf377 }, { 2775, 0xf8ff }, { 2788, 0xf6af }, { 2800, 0xeffd },
+ { 2814, 0xf76f }, { 2827, 0x679d }, { 2837, 0xff7f }, { 2852, 0xdfdf },
+ { 2866, 0xfeff }, { 2881, 0xf7ad }, { 2893, 0xfdf2 }, { 2905, 0xf2fe },
+ { 2917, 0x3f6f }, { 2929, 0xecda }, { 2939, 0xecb7 }, { 2950, 0xa683 },
+ /* 0x5700 */
+ { 2957, 0x3f9f }, { 2969, 0xfd7c }, { 2981, 0xf70d }, { 2991, 0xe81d },
+ { 2999, 0xfeef }, { 3013, 0x8897 }, { 3020, 0xafd6 }, { 3031, 0xfcff },
+ { 3045, 0xbd0d }, { 3054, 0xffb9 }, { 3067, 0x44bf }, { 3076, 0xff70 },
+ { 3087, 0xd9de }, { 3098, 0xf0b5 }, { 3107, 0xf2ff }, { 3120, 0x7fff },
+ /* 0x5800 */
+ { 3135, 0x7fff }, { 3150, 0x7a15 }, { 3158, 0xf7ff }, { 3173, 0xafff },
+ { 3187, 0xff91 }, { 3198, 0xffbe }, { 3212, 0xbb3c }, { 3222, 0xfe7e },
+ { 3235, 0xcfef }, { 3248, 0xf71f }, { 3260, 0xdfeb }, { 3273, 0xfc6b },
+ { 3284, 0xcbe6 }, { 3294, 0xff7f }, { 3309, 0x9b9d }, { 3319, 0xfe1d },
+ /* 0x5900 */
+ { 3330, 0xf4fc }, { 3341, 0x96f6 }, { 3351, 0xfeb5 }, { 3363, 0x5196 },
+ { 3370, 0xc7b1 }, { 3379, 0x15bb }, { 3388, 0x6ea7 }, { 3398, 0xfbff },
+ { 3413, 0xe63f }, { 3424, 0xe7dd }, { 3436, 0xd1ff }, { 3448, 0x7fff },
+ { 3463, 0xfffb }, { 3478, 0x7f5f }, { 3491, 0xff7b }, { 3505, 0xffff },
+ /* 0x5a00 */
+ { 3521, 0xbe0f }, { 3531, 0xdfee }, { 3544, 0x7ebb }, { 3556, 0x73e8 },
+ { 3565, 0x37ff }, { 3578, 0xffff }, { 3594, 0x7fff }, { 3609, 0xff83 },
+ { 3620, 0xdd5e }, { 3631, 0xfeff }, { 3646, 0xdae7 }, { 3657, 0xffff },
+ { 3673, 0xffdf }, { 3688, 0xffe8 }, { 3700, 0x7f7f }, { 3714, 0xeffd },
+ /* 0x5b00 */
+ { 3728, 0xbbae }, { 3739, 0xeefb }, { 3752, 0xfdfb }, { 3766, 0xf115 },
+ { 3774, 0xfdfb }, { 3788, 0xbdfb }, { 3801, 0x7b7c }, { 3812, 0xbdff },
+ { 3826, 0xdbbf }, { 3839, 0xffed }, { 3853, 0x75fc }, { 3864, 0x8379 },
+ { 3872, 0x7cff }, { 3885, 0xc3ff }, { 3897, 0xdfff }, { 3912, 0x856f },
+ /* 0x5c00 */
+ { 3921, 0xffba }, { 3934, 0xd47f }, { 3945, 0x153d }, { 3953, 0xdf8b },
+ { 3964, 0xfff3 }, { 3978, 0x737b }, { 3989, 0xf7bd }, { 4002, 0x5e1a },
+ { 4010, 0xbf60 }, { 4019, 0xf63f }, { 4031, 0xffff }, { 4047, 0x05eb },
+ { 4055, 0xdfc6 }, { 4066, 0xcfdf }, { 4079, 0xf720 }, { 4087, 0xabf3 },
+ /* 0x5d00 */
+ { 4098, 0xf8c3 }, { 4107, 0xeff7 }, { 4121, 0xd3fd }, { 4133, 0xf7ff },
+ { 4148, 0x5fef }, { 4161, 0x4ae7 }, { 4170, 0x9bac }, { 4179, 0xfe97 },
+ { 4191, 0x6ff7 }, { 4204, 0xf6bc }, { 4215, 0xff97 }, { 4228, 0x37f7 },
+ { 4240, 0xaacf }, { 4250, 0xe9f6 }, { 4261, 0x49e7 }, { 4270, 0xe2bf },
+ /* 0x5e00 */
+ { 4281, 0x5e5c }, { 4290, 0xaff6 }, { 4302, 0x6b3f }, { 4313, 0x61d8 },
+ { 4320, 0xfd3f }, { 4333, 0xfbb8 }, { 4344, 0xffcf }, { 4358, 0xff7d },
+ { 4372, 0xbfdd }, { 4385, 0x1ee4 }, { 4393, 0x7dfd }, { 4406, 0x63ff },
+ { 4418, 0x7ff6 }, { 4431, 0xffff }, { 4447, 0xd3ef }, { 4459, 0xdfde },
+ /* 0x5f00 */
+ { 4472, 0xfdb6 }, { 4484, 0xadbc }, { 4494, 0x63fc }, { 4504, 0x15eb },
+ { 4513, 0xff59 }, { 4525, 0x33d3 }, { 4534, 0xbebe }, { 4546, 0xfbdf },
+ { 4560, 0x1fef }, { 4572, 0xdbc7 }, { 4583, 0xfff3 }, { 4597, 0xfee6 },
+ { 4609, 0xb23f }, { 4619, 0xebf7 }, { 4632, 0xed3b }, { 4643, 0xadba },
+ /* 0x6000 */
+ { 4653, 0xfe01 }, { 4661, 0x7eff }, { 4675, 0xffff }, { 4691, 0x0abe },
+ { 4699, 0x36ff }, { 4711, 0xef3d }, { 4723, 0xfffc }, { 4737, 0xc0a5 },
+ { 4743, 0x77fb }, { 4756, 0xfcf5 }, { 4768, 0x019d }, { 4774, 0xffff },
+ { 4790, 0xfffb }, { 4805, 0xffba }, { 4818, 0x03df }, { 4827, 0xffff },
+ /* 0x6100 */
+ { 4843, 0xfffb }, { 4858, 0xbf7d }, { 4871, 0xdb8c }, { 4880, 0xe8d5 },
+ { 4889, 0xfff7 }, { 4904, 0xff7d }, { 4918, 0xddff }, { 4932, 0x76ff },
+ { 4945, 0x7e8f }, { 4956, 0xbf7f }, { 4970, 0xff96 }, { 4982, 0xd7ff },
+ { 4996, 0xbfef }, { 5010, 0xc549 }, { 5017, 0x6ffd }, { 5030, 0xffe7 },
+ /* 0x6200 */
+ { 5044, 0x779b }, { 5055, 0x8e77 }, { 5065, 0x7ebf }, { 5078, 0xe6dd },
+ { 5089, 0x7fcf }, { 5102, 0x5f1f }, { 5113, 0xe17f }, { 5124, 0xfedf },
+ { 5138, 0xd7ff }, { 5152, 0x21ff }, { 5162, 0xff50 }, { 5172, 0xfb7b },
+ { 5185, 0xfffc }, { 5199, 0x9fff }, { 5213, 0xf820 }, { 5219, 0xffff },
+ /* 0x6300 */
+ { 5235, 0xfb8f }, { 5247, 0x017b }, { 5254, 0xff00 }, { 5262, 0x7ffe },
+ { 5276, 0xffff }, { 5292, 0x07f3 }, { 5301, 0xfbb0 }, { 5311, 0xbfe7 },
+ { 5324, 0xffbf }, { 5339, 0xfbd7 }, { 5352, 0xffbf }, { 5367, 0x6203 },
+ { 5372, 0xffff }, { 5388, 0xffef }, { 5403, 0xefff }, { 5418, 0x5b7f },
+ /* 0x6400 */
+ { 5430, 0xfec0 }, { 5439, 0xddfd }, { 5452, 0xfdff }, { 5467, 0xeffd },
+ { 5481, 0x680b }, { 5487, 0xff1f }, { 5500, 0xfbe3 }, { 5512, 0xbfff },
+ { 5527, 0xbfa4 }, { 5537, 0xf7ef }, { 5551, 0xfa7d }, { 5563, 0xf85f },
+ { 5574, 0xeebf }, { 5587, 0x2fdd }, { 5598, 0xbfff }, { 5613, 0xfd9f },
+ /* 0x6500 */
+ { 5626, 0xf6db }, { 5638, 0xfbfb }, { 5652, 0xfe7f }, { 5666, 0xebfd },
+ { 5679, 0xa76a }, { 5688, 0xf3fa }, { 5700, 0xbdfc }, { 5712, 0x9ffc },
+ { 5724, 0x1bff }, { 5736, 0xfaf7 }, { 5749, 0xddb7 }, { 5761, 0xfbed },
+ { 5774, 0xf87e }, { 5785, 0xecdf }, { 5797, 0xf36f }, { 5809, 0xbc3f },
+ /* 0x6600 */
+ { 5820, 0xfffd }, { 5835, 0xf13f }, { 5846, 0xe9ff }, { 5859, 0x067f },
+ { 5868, 0x9fbe }, { 5880, 0xfe8e }, { 5891, 0xddfe }, { 5904, 0x7fdf },
+ { 5918, 0x7ff1 }, { 5930, 0xa7f7 }, { 5942, 0xef17 }, { 5953, 0xefff },
+ { 5968, 0xffd1 }, { 5980, 0x7f44 }, { 5989, 0x7b59 }, { 5999, 0xd3df },
+ /* 0x6700 */
+ { 6011, 0xff3f }, { 6025, 0xebfd }, { 6038, 0x7def }, { 6051, 0xff7a },
+ { 6064, 0xfbf0 }, { 6075, 0xf6eb }, { 6087, 0xbc87 }, { 6096, 0xffff },
+ { 6112, 0xfafa }, { 6124, 0xb7bf }, { 6137, 0xd011 }, { 6142, 0x8fff },
+ { 6155, 0xff7f }, { 6170, 0xffdf }, { 6185, 0xfefc }, { 6198, 0xd7ff },
+ /* 0x6800 */
+ { 6212, 0x201f }, { 6218, 0xfddd }, { 6231, 0xef67 }, { 6243, 0x7ffe },
+ { 6257, 0xffff }, { 6273, 0x207b }, { 6280, 0xe820 }, { 6285, 0xfbf6 },
+ { 6298, 0x9fff }, { 6312, 0xb9df }, { 6324, 0xffdf }, { 6339, 0x227f },
+ { 6348, 0x7ff8 }, { 6360, 0xf5ff }, { 6374, 0xdfdb }, { 6387, 0x3fff },
+ /* 0x6900 */
+ { 6401, 0xffff }, { 6417, 0x0fbf }, { 6428, 0x9420 }, { 6432, 0xfbfd },
+ { 6446, 0xdf7f }, { 6460, 0xfffe }, { 6475, 0xffff }, { 6491, 0x0fff },
+ { 6503, 0x646d }, { 6511, 0xdffb }, { 6525, 0xffff }, { 6541, 0xfaff },
+ { 6555, 0xfe5f }, { 6568, 0x027b }, { 6575, 0x7bf6 }, { 6587, 0xffde },
+ /* 0x6a00 */
+ { 6601, 0xbfff }, { 6616, 0xfffa }, { 6630, 0x39eb }, { 6640, 0xff3c },
+ { 6652, 0xfbfb }, { 6666, 0xefff }, { 6681, 0xafff }, { 6695, 0xc452 },
+ { 6701, 0xf6bf }, { 6714, 0xfeff }, { 6729, 0xf9ff }, { 6743, 0x6ffe },
+ { 6756, 0xbfec }, { 6768, 0xff1b }, { 6780, 0xdda3 }, { 6790, 0x1f4b },
+ /* 0x6b00 */
+ { 6799, 0x8f3d }, { 6809, 0x67cf }, { 6820, 0xb12b }, { 6828, 0xfffe },
+ { 6843, 0x7fee }, { 6856, 0xdaf7 }, { 6868, 0xa4ff }, { 6879, 0xcfd4 },
+ { 6889, 0xf75f }, { 6902, 0xcbf2 }, { 6912, 0xecfd }, { 6924, 0xb4ed },
+ { 6934, 0xbffb }, { 6948, 0x5ddd }, { 6959, 0x9ddf }, { 6971, 0xff8d },
+ /* 0x6c00 */
+ { 6983, 0xbb7f }, { 6996, 0xbf7b }, { 7009, 0xddfb }, { 7022, 0xeffb },
+ { 7036, 0xfe4f }, { 7048, 0xffb5 }, { 7061, 0xefe3 }, { 7073, 0xef7f },
+ { 7087, 0xffff }, { 7103, 0xbf7d }, { 7116, 0xfc04 }, { 7123, 0xffdf },
+ { 7138, 0xfeff }, { 7153, 0xfeff }, { 7168, 0xffaf }, { 7182, 0x822f },
+ /* 0x6d00 */
+ { 7189, 0xffff }, { 7205, 0xefc7 }, { 7217, 0xfff5 }, { 7231, 0xffff },
+ { 7247, 0x4007 }, { 7251, 0xdf80 }, { 7259, 0xf7ff }, { 7274, 0xfff7 },
+ { 7289, 0xffff }, { 7305, 0x01ff }, { 7314, 0xdc30 }, { 7321, 0xffbe },
+ { 7335, 0xbff5 }, { 7348, 0xffff }, { 7364, 0xff7f }, { 7379, 0x7eff },
+ /* 0x6e00 */
+ { 7393, 0x843d }, { 7400, 0xbf20 }, { 7408, 0xffff }, { 7424, 0xff7f },
+ { 7439, 0xeefb }, { 7452, 0xff7f }, { 7467, 0xcbff }, { 7480, 0x13de },
+ { 7489, 0xeb40 }, { 7496, 0xffdd }, { 7510, 0xccff }, { 7522, 0xffff },
+ { 7538, 0xffff }, { 7554, 0x3f7f }, { 7567, 0xfb04 }, { 7575, 0xfff6 },
+ /* 0x6f00 */
+ { 7589, 0xffff }, { 7605, 0xd7fc }, { 7617, 0xfeff }, { 7632, 0xffff },
+ { 7648, 0xc01b }, { 7654, 0xfdff }, { 7669, 0xfedf }, { 7683, 0xffdd },
+ { 7697, 0x7ff7 }, { 7711, 0xe0fd }, { 7721, 0xffff }, { 7737, 0xff7f },
+ { 7752, 0xffdf }, { 7767, 0xff38 }, { 7778, 0xfbdf }, { 7792, 0xddd7 },
+ /* 0x7000 */
+ { 7804, 0xfefb }, { 7818, 0xfff2 }, { 7831, 0x9fdf }, { 7844, 0xdfbf },
+ { 7858, 0x3f7f }, { 7871, 0xfdf7 }, { 7885, 0x9fff }, { 7899, 0xf7f3 },
+ { 7912, 0xce7e }, { 7923, 0x877e }, { 7933, 0xfafb }, { 7946, 0x7fbb },
+ { 7959, 0xfdf1 }, { 7971, 0xf7ff }, { 7986, 0x8017 }, { 7991, 0xfffb },
+ /* 0x7100 */
+ { 8006, 0x7e75 }, { 8017, 0xfe89 }, { 8027, 0xdb6f }, { 8039, 0x4c7f },
+ { 8049, 0xfeff }, { 8064, 0xf75f }, { 8077, 0x5fff }, { 8091, 0x7def },
+ { 8104, 0xd7f7 }, { 8117, 0xffd7 }, { 8131, 0xb7bf }, { 8144, 0xf7bf },
+ { 8158, 0xcfff }, { 8172, 0xbf77 }, { 8185, 0x79f7 }, { 8197, 0xfb77 },
+ /* 0x7200 */
+ { 8210, 0xf6ef }, { 8223, 0xeef9 }, { 8235, 0x7fdc }, { 8247, 0xef61 },
+ { 8257, 0x9fd7 }, { 8269, 0xffed }, { 8283, 0xd6cf }, { 8294, 0xfbdd },
+ { 8307, 0xfbf7 }, { 8321, 0xedff }, { 8335, 0xf7fe }, { 8349, 0xa435 },
+ { 8356, 0x7e7f }, { 8369, 0x97d7 }, { 8380, 0x0f5f }, { 8390, 0xffd8 },
+ /* 0x7300 */
+ { 8402, 0x9d97 }, { 8412, 0x7bcf }, { 8424, 0x7fec }, { 8436, 0xdfff },
+ { 8451, 0xf73f }, { 8464, 0xef87 }, { 8475, 0xdfe7 }, { 8488, 0xfdff },
+ { 8503, 0xdfff }, { 8518, 0xf1fc }, { 8529, 0x3ff7 }, { 8542, 0xdffc },
+ { 8555, 0xffed }, { 8569, 0x7ffd }, { 8583, 0xefff }, { 8598, 0xfff8 },
+ /* 0x7400 */
+ { 8611, 0x3fff }, { 8625, 0xfef6 }, { 8638, 0xff7f }, { 8653, 0x97ff },
+ { 8666, 0xefff }, { 8681, 0xfeff }, { 8696, 0xffbd }, { 8710, 0xf67f },
+ { 8723, 0x3fef }, { 8736, 0xdfb5 }, { 8748, 0xaffb }, { 8761, 0xeff7 },
+ { 8775, 0x9d2f }, { 8785, 0xfff9 }, { 8799, 0x53ff }, { 8811, 0xe9f7 },
+ /* 0x7500 */
+ { 8823, 0xf9bd }, { 8835, 0xf7ff }, { 8850, 0xff66 }, { 8862, 0xefbf },
+ { 8876, 0xfdc5 }, { 8887, 0xbe3a }, { 8897, 0xfcfd }, { 8910, 0xe7c5 },
+ { 8920, 0xfcd9 }, { 8931, 0x6737 }, { 8941, 0x0cbc }, { 8948, 0xff7f },
+ { 8963, 0xfdbf }, { 8977, 0xffb7 }, { 8991, 0xa0df }, { 9000, 0xffff },
+ /* 0x7600 */
+ { 9016, 0xbf8f }, { 9028, 0xfe7b }, { 9041, 0xb3ff }, { 9054, 0x3d3f },
+ { 9065, 0xf3cd }, { 9076, 0x97df }, { 9088, 0xf6f7 }, { 9101, 0xff7f },
+ { 9116, 0xcfd6 }, { 9127, 0x7e6d }, { 9138, 0xec72 }, { 9147, 0xedb1 },
+ { 9157, 0x777c }, { 9168, 0xfe5c }, { 9179, 0xf6fa }, { 9191, 0x5fbf },
+ /* 0x7700 */
+ { 9204, 0xdfba }, { 9216, 0xee2f }, { 9227, 0xabfd }, { 9239, 0x7ffe },
+ { 9253, 0xfcf9 }, { 9265, 0xdf74 }, { 9276, 0xffef }, { 9291, 0xff84 },
+ { 9301, 0xfbbf }, { 9315, 0xffaa }, { 9327, 0xbdaf }, { 9339, 0xfeff },
+ { 9354, 0xfebc }, { 9366, 0x7fb9 }, { 9378, 0xf3ed }, { 9390, 0x7f9f },
+ /* 0x7800 */
+ { 9403, 0xf36c }, { 9413, 0xf11f }, { 9423, 0xffef }, { 9438, 0x33bf },
+ { 9449, 0x7fbc }, { 9461, 0x701f }, { 9469, 0xff75 }, { 9482, 0xde03 },
+ { 9490, 0xf3fb }, { 9503, 0xc7fa }, { 9514, 0xbfbf }, { 9528, 0x5f5f },
+ { 9540, 0xffba }, { 9553, 0xedbf }, { 9566, 0xf7bf }, { 9580, 0xfebf },
+ /* 0x7900 */
+ { 9594, 0x5276 }, { 9602, 0x7a9f }, { 9613, 0xfffa }, { 9627, 0xff7e },
+ { 9641, 0x9ff7 }, { 9654, 0xffff }, { 9670, 0x2fbf }, { 9682, 0xf61f },
+ { 9693, 0xedcf }, { 9705, 0xbfff }, { 9720, 0x7ff7 }, { 9734, 0xefdf },
+ { 9748, 0xfb73 }, { 9760, 0xf176 }, { 9770, 0x7edd }, { 9782, 0x0dd2 },
+ /* 0x7a00 */
+ { 9789, 0x3d7d }, { 9800, 0xdfbf }, { 9814, 0xed45 }, { 9823, 0xfe83 },
+ { 9833, 0x7ff9 }, { 9846, 0x9dd0 }, { 9854, 0x7ba7 }, { 9865, 0xef73 },
+ { 9877, 0x9ffb }, { 9890, 0xc3ff }, { 9902, 0xdf0d }, { 9912, 0xddff },
+ { 9926, 0x8fbf }, { 9938, 0xbf0a }, { 9947, 0xeefd }, { 9960, 0xeec0 },
+ /* 0x7b00 */
+ { 9968, 0xdf73 }, { 9980, 0xef1f }, { 9992, 0xfffd }, { 10007, 0x0b3f },
+ { 10016, 0xfffd }, { 10031, 0x0177 }, { 10038, 0xf2ff }, { 10051, 0x09ff },
+ { 10061, 0xfdb4 }, { 10072, 0x3bf7 }, { 10084, 0xb01f }, { 10092, 0x43b6 },
+ { 10100, 0xded3 }, { 10111, 0xff31 }, { 10122, 0x1fff }, { 10135, 0xff9f },
+ /* 0x7c00 */
+ { 10149, 0xfeef }, { 10163, 0xfa27 }, { 10173, 0x3fef }, { 10186, 0xfba9 },
+ { 10197, 0x37bd }, { 10208, 0xbedb }, { 10220, 0xfef9 }, { 10233, 0xff3d },
+ { 10246, 0x777b }, { 10258, 0xd1f6 }, { 10268, 0xd1ee }, { 10278, 0xff3e },
+ { 10291, 0x7fac }, { 10302, 0xf6ff }, { 10316, 0xf5c5 }, { 10326, 0x7bff },
+ /* 0x7d00 */
+ { 10340, 0xffff }, { 10356, 0xffff }, { 10372, 0xdb27 }, { 10382, 0xff6f },
+ { 10396, 0xe4ff }, { 10408, 0xfd7f }, { 10422, 0xefce }, { 10434, 0xbe0f },
+ { 10444, 0xfb7b }, { 10457, 0xf0de }, { 10467, 0xffdf }, { 10482, 0xffbf },
+ { 10497, 0xfef7 }, { 10511, 0xff9d }, { 10524, 0xd7fb }, { 10537, 0x6eff },
+ /* 0x7e00 */
+ { 10550, 0xff88 }, { 10560, 0xfcff }, { 10574, 0xeebf }, { 10587, 0xffff },
+ { 10603, 0x13ff }, { 10614, 0xdfff }, { 10629, 0xffaf }, { 10643, 0xfffd },
+ { 10658, 0xfdc7 }, { 10670, 0x9ffe }, { 10683, 0x1010 }, { 10685, 0x0400 },
+ { 10686, 0x8080 }, { 10688, 0x8000 }, { 10689, 0x0000 }, { 10689, 0x0000 },
+ /* 0x7f00 */
+ { 10689, 0x0040 }, { 10690, 0x0000 }, { 10690, 0x0000 }, { 10690, 0xe7c0 },
+ { 10698, 0xffbb }, { 10712, 0xf93f }, { 10724, 0x7feb }, { 10737, 0xffef },
+ { 10752, 0xffe8 }, { 10764, 0x7cfe }, { 10776, 0xf3ff }, { 10790, 0xffff },
+ { 10806, 0xfeaf }, { 10819, 0xf8b7 }, { 10830, 0xffef }, { 10845, 0xffbf },
+ /* 0x8000 */
+ { 10860, 0xf9ff }, { 10874, 0xfbf7 }, { 10888, 0xd773 }, { 10899, 0xfafb },
+ { 10912, 0x85c8 }, { 10918, 0x7d57 }, { 10929, 0x90de }, { 10937, 0xe3ef },
+ { 10949, 0x9ef5 }, { 10960, 0xbf6d }, { 10972, 0xeeae }, { 10983, 0x35f6 },
+ { 10993, 0xf7fc }, { 11006, 0x7ff3 }, { 11019, 0xb27b }, { 11029, 0x7f7f },
+ /* 0x8100 */
+ { 11043, 0x57ef }, { 11055, 0xeff4 }, { 11067, 0xbebe }, { 11079, 0x6695 },
+ { 11087, 0xfddc }, { 11099, 0x5e7f }, { 11111, 0xeaf7 }, { 11123, 0x97df },
+ { 11135, 0xbfdd }, { 11148, 0xffa8 }, { 11159, 0x5fed }, { 11171, 0xfeff },
+ { 11186, 0xb7ff }, { 11200, 0xefa7 }, { 11212, 0xf7ff }, { 11227, 0xdfdc },
+ /* 0x8200 */
+ { 11239, 0x3fb7 }, { 11251, 0xfd77 }, { 11264, 0xbf67 }, { 11276, 0xf7fc },
+ { 11289, 0xcab5 }, { 11298, 0xdfff }, { 11313, 0xfb7e }, { 11326, 0xfff6 },
+ { 11340, 0xecb9 }, { 11350, 0xef1f }, { 11362, 0xffff }, { 11378, 0xfffb },
+ { 11393, 0x841d }, { 11399, 0xdbff }, { 11413, 0xfdff }, { 11428, 0xffff },
+ /* 0x8300 */
+ { 11444, 0x3bff }, { 11457, 0x7fc0 }, { 11466, 0xbff5 }, { 11479, 0xbffe },
+ { 11493, 0xffbf }, { 11508, 0x00df }, { 11515, 0x804c }, { 11519, 0xfdf8 },
+ { 11531, 0xffea }, { 11544, 0x7fff }, { 11559, 0xdffd }, { 11573, 0xe201 },
+ { 11578, 0xffff }, { 11594, 0xfbfa }, { 11607, 0xffbf }, { 11622, 0xff7f },
+ /* 0x8400 */
+ { 11637, 0xfefa }, { 11650, 0x195f }, { 11659, 0xfa5b }, { 11670, 0xffff },
+ { 11686, 0x7ffd }, { 11700, 0xffff }, { 11716, 0xfbff }, { 11731, 0xe7ff },
+ { 11745, 0xe145 }, { 11752, 0xffdf }, { 11767, 0xff9f }, { 11781, 0xff57 },
+ { 11794, 0xfef7 }, { 11808, 0x4cdf }, { 11818, 0xdfb6 }, { 11830, 0xffdf },
+ /* 0x8500 */
+ { 11845, 0xffed }, { 11859, 0xf7ff }, { 11874, 0xfffb }, { 11889, 0x691b },
+ { 11897, 0x7fff }, { 11912, 0xeffe }, { 11926, 0xffff }, { 11942, 0x5feb },
+ { 11954, 0xffff }, { 11970, 0xfff3 }, { 11984, 0x87df }, { 11995, 0xe7fb },
+ { 12008, 0xebff }, { 12022, 0xf7e7 }, { 12035, 0xff7f }, { 12050, 0xffc7 },
+ /* 0x8600 */
+ { 12063, 0xbef7 }, { 12076, 0xdfd3 }, { 12088, 0xf7ff }, { 12103, 0xdf7e },
+ { 12116, 0x79ed }, { 12127, 0xda7d }, { 12138, 0xffbe }, { 12152, 0x5e9f },
+ { 12163, 0x7ce0 }, { 12171, 0x77ff }, { 12185, 0xa7bf }, { 12197, 0xffff },
+ { 12213, 0x1bff }, { 12225, 0xffdb }, { 12239, 0xbf5c }, { 12250, 0x4fe0 },
+ /* 0x8700 */
+ { 12258, 0x7fff }, { 12273, 0x5f0e }, { 12282, 0x77ff }, { 12296, 0xddbf },
+ { 12309, 0xf04f }, { 12318, 0xffff }, { 12334, 0xffff }, { 12350, 0x2ffb },
+ { 12362, 0xbbfe }, { 12375, 0xfddf }, { 12389, 0xfe3c }, { 12400, 0xffff },
+ { 12416, 0x5f7f }, { 12429, 0xffde }, { 12443, 0xfdff }, { 12458, 0xdefc },
+ /* 0x8800 */
+ { 12470, 0xbf7f }, { 12484, 0xbbfb }, { 12497, 0xffff }, { 12513, 0xfbef },
+ { 12527, 0xfd7f }, { 12541, 0x6eec }, { 12551, 0xefbf }, { 12565, 0xf2f7 },
+ { 12577, 0xfb9f }, { 12590, 0xdfef }, { 12604, 0x5d97 }, { 12614, 0xf7f6 },
+ { 12627, 0xfea7 }, { 12639, 0xfff5 }, { 12653, 0xd9c2 }, { 12661, 0xffff },
+ /* 0x8900 */
+ { 12677, 0x5ee7 }, { 12688, 0xc7ff }, { 12701, 0xfefe }, { 12715, 0x79ef },
+ { 12727, 0xbade }, { 12738, 0xffdf }, { 12753, 0xfe7f }, { 12767, 0xdede },
+ { 12779, 0x8fef }, { 12791, 0xf9fa }, { 12803, 0xf6fe }, { 12816, 0xf6c4 },
+ { 12825, 0x0043 }, { 12828, 0xbe7c }, { 12839, 0x3bff }, { 12852, 0xdddf },
+ /* 0x8a00 */
+ { 12865, 0xd59d }, { 12875, 0xf9ef }, { 12888, 0x3eac }, { 12897, 0xff53 },
+ { 12909, 0xf773 }, { 12921, 0x4bf7 }, { 12932, 0x7bcf }, { 12944, 0xdeff },
+ { 12958, 0xb8fe }, { 12969, 0x577f }, { 12981, 0x8ffb }, { 12993, 0xff55 },
+ { 13005, 0xabfd }, { 13017, 0xfffe }, { 13032, 0xedd7 }, { 13044, 0xddff },
+ /* 0x8b00 */
+ { 13058, 0xfdf7 }, { 13072, 0xffff }, { 13088, 0xfdfd }, { 13102, 0xfeeb },
+ { 13115, 0xffef }, { 13130, 0xf7ff }, { 13145, 0xbfed }, { 13158, 0xef91 },
+ { 13168, 0x5d7f }, { 13180, 0xdf7d }, { 13193, 0x0001 }, { 13194, 0x4000 },
+ { 13195, 0x0000 }, { 13195, 0x0000 }, { 13195, 0x0004 }, { 13196, 0x0000 },
+ /* 0x8c00 */
+ { 13196, 0x0000 }, { 13196, 0x0000 }, { 13196, 0x0000 }, { 13196, 0xfa80 },
+ { 13203, 0xffee }, { 13217, 0xb4f3 }, { 13227, 0xbf76 }, { 13239, 0x2fef },
+ { 13251, 0xb677 }, { 13262, 0xffbf }, { 13277, 0xbfbf }, { 13291, 0xfffd },
+ { 13306, 0xb5bf }, { 13318, 0xfefe }, { 13332, 0x7fff }, { 13347, 0x7fbf },
+ /* 0x8d00 */
+ { 13361, 0xbffd }, { 13375, 0x3bff }, { 13388, 0x0000 }, { 13388, 0x0000 },
+ { 13388, 0x0000 }, { 13388, 0x0000 }, { 13388, 0xfbd0 }, { 13398, 0x2fdd },
+ { 13409, 0xf637 }, { 13420, 0x9a7f }, { 13431, 0xffeb }, { 13445, 0xd6fc },
+ { 13456, 0xf9ef }, { 13469, 0xbffb }, { 13483, 0xdfdf }, { 13497, 0xf41f },
+ /* 0x8e00 */
+ { 13507, 0xe6ff }, { 13520, 0xffff }, { 13536, 0x6fff }, { 13550, 0xf77b },
+ { 13563, 0xfff7 }, { 13578, 0xfef9 }, { 13591, 0xb7ff }, { 13605, 0x5dfe },
+ { 13617, 0x7ff7 }, { 13631, 0xe5ff }, { 13644, 0x3ffb }, { 13657, 0x3645 },
+ { 13664, 0xfe0d }, { 13674, 0xfd9e }, { 13686, 0xfbf7 }, { 13700, 0xdff6 },
+ /* 0x8f00 */
+ { 13713, 0x6fef }, { 13726, 0xffff }, { 13742, 0xf679 }, { 13753, 0xcbfd },
+ { 13765, 0xefff }, { 13780, 0xffff }, { 13796, 0x40df }, { 13804, 0x0000 },
+ { 13804, 0x0000 }, { 13804, 0x9808 }, { 13808, 0xe1e9 }, { 13817, 0xdfff },
+ { 13832, 0xfe76 }, { 13844, 0x04ff }, { 13853, 0x6d7f }, { 13865, 0xfff1 },
+ /* 0x9000 */
+ { 13878, 0xb97f }, { 13890, 0xfef7 }, { 13904, 0xe01f }, { 13912, 0xf1fe },
+ { 13924, 0xfe96 }, { 13935, 0x7b7f }, { 13948, 0xfb9f }, { 13961, 0xfffd },
+ { 13976, 0xadff }, { 13989, 0xcbb3 }, { 13999, 0xc5ef }, { 14010, 0xe97f },
+ { 14022, 0x4dba }, { 14031, 0xbff0 }, { 14042, 0xbf3f }, { 14055, 0xfe3f },
+ /* 0x9100 */
+ { 14068, 0xebff }, { 14082, 0xffd7 }, { 14096, 0xffdf }, { 14111, 0xcf7f },
+ { 14124, 0xfffb }, { 14139, 0xd7ef }, { 14152, 0xd7bf }, { 14165, 0x17fd },
+ { 14176, 0xfeff }, { 14191, 0xfe0f }, { 14202, 0xffaf }, { 14216, 0x7eff },
+ { 14230, 0xfaff }, { 14244, 0xb7fb }, { 14257, 0x7ffc }, { 14270, 0xe7fa },
+ /* 0x9200 */
+ { 14282, 0xf7ff }, { 14297, 0x56ff }, { 14309, 0x6dfa }, { 14320, 0xf7ff },
+ { 14335, 0xff73 }, { 14348, 0xedff }, { 14362, 0xf8ff }, { 14375, 0xffc5 },
+ { 14387, 0xffff }, { 14403, 0x3ffa }, { 14415, 0x5fff }, { 14429, 0xdefe },
+ { 14442, 0xffff }, { 14458, 0xebbf }, { 14471, 0xdffb }, { 14485, 0xffdf },
+ /* 0x9300 */
+ { 14500, 0xfbdf }, { 14514, 0xef7d }, { 14527, 0xffff }, { 14543, 0x137b },
+ { 14552, 0xffff }, { 14568, 0xdff7 }, { 14582, 0x7fff }, { 14597, 0x7ffb },
+ { 14611, 0xf7ff }, { 14626, 0xfff7 }, { 14641, 0xf7ff }, { 14656, 0xa9bf },
+ { 14667, 0xfddd }, { 14680, 0xffff }, { 14696, 0x51df }, { 14706, 0xfffb },
+ /* 0x9400 */
+ { 14721, 0xffdb }, { 14735, 0x2bff }, { 14747, 0x7ff1 }, { 14759, 0xffef },
+ { 14774, 0xbffd }, { 14788, 0x69b7 }, { 14798, 0xffbd }, { 14812, 0xfbff },
+ { 14827, 0x002f }, { 14832, 0x8000 }, { 14833, 0x0004 }, { 14834, 0x0000 },
+ { 14834, 0x000a }, { 14836, 0x1000 }, { 14837, 0x0000 }, { 14837, 0x0040 },
+ /* 0x9500 */
+ { 14838, 0x0000 }, { 14838, 0x0000 }, { 14838, 0x2000 }, { 14839, 0x0000 },
+ { 14839, 0x0080 }, { 14840, 0x0000 }, { 14840, 0x0000 }, { 14840, 0xbd80 },
+ { 14847, 0xfb6d }, { 14859, 0xdbdf }, { 14872, 0x7fff }, { 14887, 0xfee3 },
+ { 14899, 0x3fe9 }, { 14910, 0xdc7f }, { 14922, 0x013f }, { 14929, 0x0010 },
+ /* 0x9600 */
+ { 14930, 0x0000 }, { 14930, 0x7000 }, { 14933, 0xf51f }, { 14944, 0xbf0f },
+ { 14955, 0xfc3f }, { 14967, 0xf95b }, { 14978, 0xbe1e }, { 14988, 0x79ff },
+ { 15001, 0xeffb }, { 15015, 0x5bfe }, { 15027, 0x57be }, { 15038, 0xbb5b },
+ { 15049, 0x7fff }, { 15064, 0xfffc }, { 15078, 0x872e }, { 15086, 0xaff7 },
+ /* 0x9700 */
+ { 15099, 0xebfd }, { 15112, 0xfb4f }, { 15124, 0xdfff }, { 15139, 0xe767 },
+ { 15150, 0x0bdf }, { 15160, 0xfde6 }, { 15172, 0x7747 }, { 15182, 0xfddf },
+ { 15196, 0xefbf }, { 15210, 0xff90 }, { 15220, 0x7d7f }, { 15233, 0xefde },
+ { 15246, 0xfbff }, { 15261, 0xf3fd }, { 15274, 0x606b }, { 15281, 0xef6f },
+ /* 0x9800 */
+ { 15294, 0xf5ff }, { 15308, 0xf9ff }, { 15322, 0xebdb }, { 15334, 0x0bbd },
+ { 15343, 0xfffa }, { 15357, 0xfb8f }, { 15369, 0x9ffd }, { 15382, 0x003f },
+ { 15388, 0x0000 }, { 15388, 0x0000 }, { 15388, 0xf300 }, { 15394, 0xffde },
+ { 15408, 0x5fdf }, { 15421, 0xd800 }, { 15425, 0xbeef }, { 15438, 0x7676 },
+ /* 0x9900 */
+ { 15448, 0x57ad }, { 15458, 0xdfff }, { 15473, 0xffb2 }, { 15485, 0xffaf },
+ { 15499, 0x7faf }, { 15512, 0xfbff }, { 15527, 0x000e }, { 15530, 0x0000 },
+ { 15530, 0x0000 }, { 15530, 0x7bc0 }, { 15538, 0xfdfa }, { 15551, 0x3f3f },
+ { 15563, 0xfabe }, { 15575, 0xbfff }, { 15590, 0x76ff }, { 15603, 0xfff3 },
+ /* 0x9a00 */
+ { 15617, 0xfefe }, { 15631, 0xfe73 }, { 15643, 0xfeff }, { 15658, 0xfff7 },
+ { 15673, 0xf77f }, { 15687, 0xdffd }, { 15701, 0x1ffd }, { 15713, 0x0000 },
+ { 15713, 0x8000 }, { 15714, 0x0000 }, { 15714, 0xa900 }, { 15718, 0xffdf },
+ { 15733, 0xa4c7 }, { 15741, 0x91ff }, { 15752, 0xf8cf }, { 15763, 0xfede },
+ /* 0x9b00 */
+ { 15776, 0xff7e }, { 15790, 0xc7f7 }, { 15802, 0xefbd }, { 15815, 0xdebe },
+ { 15827, 0xfd7f }, { 15841, 0x8f77 }, { 15852, 0x93d3 }, { 15861, 0xfcf3 },
+ { 15873, 0xe9ef }, { 15885, 0xecaf }, { 15896, 0xed77 }, { 15908, 0xa361 },
+ { 15915, 0x87db }, { 15925, 0x7ef8 }, { 15936, 0x3ff7 }, { 15949, 0xa193 },
+ /* 0x9c00 */
+ { 15956, 0x7fe4 }, { 15967, 0xb8bd }, { 15977, 0xbb7b }, { 15989, 0xfefe },
+ { 16003, 0xff73 }, { 16016, 0xe3fd }, { 16028, 0x61cd }, { 16036, 0x1fbe },
+ { 16047, 0x0000 }, { 16047, 0x0000 }, { 16047, 0x0000 }, { 16047, 0x0000 },
+ { 16047, 0x0000 }, { 16047, 0x0000 }, { 16047, 0x26e0 }, { 16053, 0xbefe },
+ /* 0x9d00 */
+ { 16066, 0x13fd }, { 16076, 0xebf5 }, { 16088, 0xe36f }, { 16099, 0xebdb },
+ { 16111, 0xde3f }, { 16123, 0xffdf }, { 16138, 0xff83 }, { 16149, 0xfbbf },
+ { 16163, 0x1fff }, { 16176, 0xffdd }, { 16190, 0xbfff }, { 16205, 0xfffe },
+ { 16220, 0xffbf }, { 16235, 0xffff }, { 16251, 0xfb7e }, { 16264, 0xfffd },
+ /* 0x9e00 */
+ { 16279, 0xfeff }, { 16294, 0xffbf }, { 16309, 0x0000 }, { 16309, 0x0000 },
+ { 16309, 0x0000 }, { 16309, 0x0000 }, { 16309, 0x0000 }, { 16309, 0xbe20 },
+ { 16316, 0x7fff }, { 16331, 0xffff }, { 16347, 0xfff7 }, { 16362, 0xf8f3 },
+ { 16373, 0xf1df }, { 16385, 0xfd7b }, { 16398, 0xe9f5 }, { 16409, 0xffff },
+ /* 0x9f00 */
+ { 16425, 0xc7c7 }, { 16435, 0x5fed }, { 16447, 0xfffd }, { 16462, 0x6bff },
+ { 16475, 0xffff }, { 16491, 0xfffd }, { 16506, 0xdeff }, { 16520, 0xcff7 },
+ { 16533, 0x6000 }, { 16535, 0x9337 }, { 16544, 0x0035 },
+};
+static const Summary16 big5hkscs_uni2indx_pagee0[419] = {
+ /* 0xe000 */
+ { 16548, 0xffff }, { 16564, 0xffff }, { 16580, 0xffff }, { 16596, 0xffff },
+ { 16612, 0xffff }, { 16628, 0xffff }, { 16644, 0xffff }, { 16660, 0xffff },
+ { 16676, 0xffff }, { 16692, 0xffff }, { 16708, 0xffff }, { 16724, 0xffff },
+ { 16740, 0xffff }, { 16756, 0xffff }, { 16772, 0xffff }, { 16788, 0xffff },
+ /* 0xe100 */
+ { 16804, 0xffff }, { 16820, 0xffff }, { 16836, 0xffff }, { 16852, 0xffff },
+ { 16868, 0xffff }, { 16884, 0xffff }, { 16900, 0xffff }, { 16916, 0xffff },
+ { 16932, 0xffff }, { 16948, 0xffff }, { 16964, 0xffff }, { 16980, 0xffff },
+ { 16996, 0xffff }, { 17012, 0xffff }, { 17028, 0xffff }, { 17044, 0xffff },
+ /* 0xe200 */
+ { 17060, 0xffff }, { 17076, 0xffff }, { 17092, 0xffff }, { 17108, 0xffff },
+ { 17124, 0xffff }, { 17140, 0xffff }, { 17156, 0xffff }, { 17172, 0xffff },
+ { 17188, 0xffff }, { 17204, 0xffff }, { 17220, 0xffff }, { 17236, 0xffff },
+ { 17252, 0xffff }, { 17268, 0xffff }, { 17284, 0xffff }, { 17300, 0xffff },
+ /* 0xe300 */
+ { 17316, 0xffff }, { 17332, 0xffff }, { 17348, 0xffff }, { 17364, 0xffff },
+ { 17380, 0xffff }, { 17396, 0xffff }, { 17412, 0xffff }, { 17428, 0xffff },
+ { 17444, 0xffff }, { 17460, 0xffff }, { 17476, 0xffff }, { 17492, 0xffff },
+ { 17508, 0xffff }, { 17524, 0xffff }, { 17540, 0xffff }, { 17556, 0xffff },
+ /* 0xe400 */
+ { 17572, 0xffff }, { 17588, 0xffff }, { 17604, 0xffff }, { 17620, 0xffff },
+ { 17636, 0xffff }, { 17652, 0xffff }, { 17668, 0xffff }, { 17684, 0xffff },
+ { 17700, 0xffff }, { 17716, 0xffff }, { 17732, 0xffff }, { 17748, 0xffff },
+ { 17764, 0xffff }, { 17780, 0xffff }, { 17796, 0xffff }, { 17812, 0xffff },
+ /* 0xe500 */
+ { 17828, 0xffff }, { 17844, 0xffff }, { 17860, 0xffff }, { 17876, 0xffff },
+ { 17892, 0xffff }, { 17908, 0xffff }, { 17924, 0xffff }, { 17940, 0xffff },
+ { 17956, 0xffff }, { 17972, 0xffff }, { 17988, 0xffff }, { 18004, 0xffff },
+ { 18020, 0xffff }, { 18036, 0xffff }, { 18052, 0xffff }, { 18068, 0xffff },
+ /* 0xe600 */
+ { 18084, 0xffff }, { 18100, 0xffff }, { 18116, 0xffff }, { 18132, 0xffff },
+ { 18148, 0xffff }, { 18164, 0xffff }, { 18180, 0xffff }, { 18196, 0xffff },
+ { 18212, 0xffff }, { 18228, 0xffff }, { 18244, 0xffff }, { 18260, 0xffff },
+ { 18276, 0xffff }, { 18292, 0xffff }, { 18308, 0xffff }, { 18324, 0xffff },
+ /* 0xe700 */
+ { 18340, 0xffff }, { 18356, 0xffff }, { 18372, 0xffff }, { 18388, 0xffff },
+ { 18404, 0xffff }, { 18420, 0xffff }, { 18436, 0xffff }, { 18452, 0xffff },
+ { 18468, 0xffff }, { 18484, 0xffff }, { 18500, 0xffff }, { 18516, 0xffff },
+ { 18532, 0xffff }, { 18548, 0xffff }, { 18564, 0xffff }, { 18580, 0xffff },
+ /* 0xe800 */
+ { 18596, 0xffff }, { 18612, 0xffff }, { 18628, 0xffff }, { 18644, 0xffff },
+ { 18660, 0xffff }, { 18676, 0xffff }, { 18692, 0xffff }, { 18708, 0xffff },
+ { 18724, 0xffff }, { 18740, 0xffff }, { 18756, 0xffff }, { 18772, 0xffff },
+ { 18788, 0xffff }, { 18804, 0xffff }, { 18820, 0xffff }, { 18836, 0xffff },
+ /* 0xe900 */
+ { 18852, 0xffff }, { 18868, 0xffff }, { 18884, 0xffff }, { 18900, 0xffff },
+ { 18916, 0xffff }, { 18932, 0xffff }, { 18948, 0xffff }, { 18964, 0xffff },
+ { 18980, 0xffff }, { 18996, 0xffff }, { 19012, 0xffff }, { 19028, 0xffff },
+ { 19044, 0xffff }, { 19060, 0xffff }, { 19076, 0xffff }, { 19092, 0xffff },
+ /* 0xea00 */
+ { 19108, 0xffff }, { 19124, 0xffff }, { 19140, 0xffff }, { 19156, 0xffff },
+ { 19172, 0xffff }, { 19188, 0xffff }, { 19204, 0xffff }, { 19220, 0xffff },
+ { 19236, 0xffff }, { 19252, 0xffff }, { 19268, 0xffff }, { 19284, 0xffff },
+ { 19300, 0xffff }, { 19316, 0xffff }, { 19332, 0xffff }, { 19348, 0xffff },
+ /* 0xeb00 */
+ { 19364, 0xffff }, { 19380, 0xffff }, { 19396, 0xffff }, { 19412, 0xffff },
+ { 19428, 0xffff }, { 19444, 0xffff }, { 19460, 0xffff }, { 19476, 0xffff },
+ { 19492, 0xffff }, { 19508, 0xffff }, { 19524, 0xffff }, { 19540, 0xffff },
+ { 19556, 0xffff }, { 19572, 0xffff }, { 19588, 0xffff }, { 19604, 0xffff },
+ /* 0xec00 */
+ { 19620, 0xffff }, { 19636, 0xffff }, { 19652, 0xffff }, { 19668, 0xffff },
+ { 19684, 0xffff }, { 19700, 0xffff }, { 19716, 0xffff }, { 19732, 0xffff },
+ { 19748, 0xffff }, { 19764, 0xffff }, { 19780, 0xffff }, { 19796, 0xffff },
+ { 19812, 0xffff }, { 19828, 0xffff }, { 19844, 0xffff }, { 19860, 0xffff },
+ /* 0xed00 */
+ { 19876, 0xffff }, { 19892, 0xffff }, { 19908, 0xffff }, { 19924, 0xffff },
+ { 19940, 0xffff }, { 19956, 0xffff }, { 19972, 0xffff }, { 19988, 0xffff },
+ { 20004, 0xffff }, { 20020, 0xffff }, { 20036, 0xffff }, { 20052, 0xffff },
+ { 20068, 0xffff }, { 20084, 0xffff }, { 20100, 0xffff }, { 20116, 0xffff },
+ /* 0xee00 */
+ { 20132, 0xffff }, { 20148, 0xffff }, { 20164, 0xffff }, { 20180, 0xffff },
+ { 20196, 0xffff }, { 20212, 0xffff }, { 20228, 0xffff }, { 20244, 0xffff },
+ { 20260, 0xffff }, { 20276, 0xffff }, { 20292, 0xffff }, { 20308, 0xffff },
+ { 20324, 0xffff }, { 20340, 0xffff }, { 20356, 0xffff }, { 20372, 0xffff },
+ /* 0xef00 */
+ { 20388, 0xffff }, { 20404, 0xffff }, { 20420, 0xffff }, { 20436, 0xffff },
+ { 20452, 0xffff }, { 20468, 0xffff }, { 20484, 0xffff }, { 20500, 0xffff },
+ { 20516, 0xffff }, { 20532, 0xffff }, { 20548, 0xffff }, { 20564, 0xffff },
+ { 20580, 0xffff }, { 20596, 0xffff }, { 20612, 0xffff }, { 20628, 0xffff },
+ /* 0xf000 */
+ { 20644, 0xffff }, { 20660, 0xffff }, { 20676, 0xffff }, { 20692, 0xffff },
+ { 20708, 0xffff }, { 20724, 0xffff }, { 20740, 0xffff }, { 20756, 0xffff },
+ { 20772, 0xffff }, { 20788, 0xffff }, { 20804, 0xffff }, { 20820, 0xffff },
+ { 20836, 0xffff }, { 20852, 0xffff }, { 20868, 0xffff }, { 20884, 0xffff },
+ /* 0xf100 */
+ { 20900, 0xffff }, { 20916, 0xffff }, { 20932, 0xffff }, { 20948, 0xffff },
+ { 20964, 0xffff }, { 20980, 0xffff }, { 20996, 0xffff }, { 21012, 0xffff },
+ { 21028, 0xffff }, { 21044, 0xffff }, { 21060, 0xffff }, { 21076, 0xffff },
+ { 21092, 0xffff }, { 21108, 0xffff }, { 21124, 0xffff }, { 21140, 0xffff },
+ /* 0xf200 */
+ { 21156, 0xffff }, { 21172, 0xffff }, { 21188, 0xffff }, { 21204, 0xffff },
+ { 21220, 0xffff }, { 21236, 0xffff }, { 21252, 0xffff }, { 21268, 0xffff },
+ { 21284, 0xffff }, { 21300, 0xffff }, { 21316, 0xffff }, { 21332, 0xffff },
+ { 21348, 0xffff }, { 21364, 0xffff }, { 21380, 0xffff }, { 21396, 0xffff },
+ /* 0xf300 */
+ { 21412, 0xffff }, { 21428, 0xffff }, { 21444, 0xffff }, { 21460, 0xffff },
+ { 21476, 0xffff }, { 21492, 0xffff }, { 21508, 0xffff }, { 21524, 0xffff },
+ { 21540, 0xffff }, { 21556, 0xffff }, { 21572, 0xffff }, { 21588, 0xffff },
+ { 21604, 0xffff }, { 21620, 0xffff }, { 21636, 0xffff }, { 21652, 0xffff },
+ /* 0xf400 */
+ { 21668, 0xffff }, { 21684, 0xffff }, { 21700, 0xffff }, { 21716, 0xffff },
+ { 21732, 0xffff }, { 21748, 0xffff }, { 21764, 0xffff }, { 21780, 0xffff },
+ { 21796, 0xffff }, { 21812, 0xffff }, { 21828, 0xffff }, { 21844, 0xffff },
+ { 21860, 0xffff }, { 21876, 0xffff }, { 21892, 0xffff }, { 21908, 0xffff },
+ /* 0xf500 */
+ { 21924, 0xffff }, { 21940, 0xffff }, { 21956, 0xffff }, { 21972, 0xffff },
+ { 21988, 0xffff }, { 22004, 0xffff }, { 22020, 0xffff }, { 22036, 0xffff },
+ { 22052, 0xffff }, { 22068, 0xffff }, { 22084, 0xffff }, { 22100, 0xffff },
+ { 22116, 0xffff }, { 22132, 0xffff }, { 22148, 0xffff }, { 22164, 0xffff },
+ /* 0xf600 */
+ { 22180, 0xffff }, { 22196, 0xffff }, { 22212, 0xffff }, { 22228, 0xffff },
+ { 22244, 0xffff }, { 22260, 0xffff }, { 22276, 0xffff }, { 22292, 0xffff },
+ { 22308, 0xffff }, { 22324, 0xffff }, { 22340, 0xffff }, { 22356, 0xffff },
+ { 22372, 0xffff }, { 22388, 0xffff }, { 22404, 0xffff }, { 22420, 0xffff },
+ /* 0xf700 */
+ { 22436, 0xffff }, { 22452, 0xffff }, { 22468, 0xffff }, { 22484, 0xffff },
+ { 22500, 0xffff }, { 22516, 0xffff }, { 22532, 0xffff }, { 22548, 0xffff },
+ { 22564, 0xffff }, { 22580, 0xffff }, { 22596, 0xffff }, { 22612, 0xffff },
+ { 22628, 0xffff }, { 22644, 0xffff }, { 22660, 0xffff }, { 22676, 0xffff },
+ /* 0xf800 */
+ { 22692, 0xffff }, { 22708, 0xffff }, { 22724, 0xffff }, { 22740, 0xffff },
+ { 22756, 0x01ff }, { 22765, 0x0000 }, { 22765, 0x0000 }, { 22765, 0x0000 },
+ { 22765, 0x0000 }, { 22765, 0x0000 }, { 22765, 0x0000 }, { 22765, 0x0000 },
+ { 22765, 0x0000 }, { 22765, 0x0000 }, { 22765, 0x0000 }, { 22765, 0x0000 },
+ /* 0xf900 */
+ { 22765, 0xffff }, { 22781, 0xffff }, { 22797, 0xefff }, { 22812, 0xffff },
+ { 22828, 0xffff }, { 22844, 0xffff }, { 22860, 0xffff }, { 22876, 0xfdff },
+ { 22891, 0xffff }, { 22907, 0xffdf }, { 22922, 0xffff }, { 22938, 0xffff },
+ { 22954, 0xffff }, { 22970, 0xffff }, { 22986, 0xff7f }, { 23001, 0xfffd },
+ /* 0xfa00 */
+ { 23016, 0x3fff }, { 23030, 0x7ee5 }, { 23041, 0x3c64 },
+};
+static const Summary16 big5hkscs_uni2indx_pagefe[31] = {
+ /* 0xfe00 */
+ { 23048, 0x0000 }, { 23048, 0x0000 }, { 23048, 0x0000 }, { 23048, 0xfffb },
+ { 23063, 0xfe1f }, { 23075, 0xfef7 }, { 23089, 0x0f7f }, { 23100, 0x0000 },
+ { 23100, 0x0000 }, { 23100, 0x0000 }, { 23100, 0x0000 }, { 23100, 0x0000 },
+ { 23100, 0x0000 }, { 23100, 0x0000 }, { 23100, 0x0000 }, { 23100, 0x0000 },
+ /* 0xff00 */
+ { 23100, 0xfffe }, { 23115, 0xffff }, { 23131, 0xffff }, { 23147, 0xffff },
+ { 23163, 0xffff }, { 23179, 0x7fff }, { 23194, 0x0010 }, { 23195, 0x0000 },
+ { 23195, 0x0000 }, { 23195, 0x0000 }, { 23195, 0x0000 }, { 23195, 0x0000 },
+ { 23195, 0x0000 }, { 23195, 0x0000 }, { 23195, 0x203f },
+};
+
+static int
+big5hkscs_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n)
+{
+ if (n >= 2) {
+ const Summary16 *summary = NULL;
+ if (wc >= 0x0000 && wc < 0x0100)
+ summary = &big5hkscs_uni2indx_page00[(wc>>4)];
+ else if (wc >= 0x0200 && wc < 0x03d0)
+ summary = &big5hkscs_uni2indx_page02[(wc>>4)-0x020];
+ else if (wc >= 0x2000 && wc < 0x22c0)
+ summary = &big5hkscs_uni2indx_page20[(wc>>4)-0x200];
+ else if (wc >= 0x2500 && wc < 0x2650)
+ summary = &big5hkscs_uni2indx_page25[(wc>>4)-0x250];
+ else if (wc >= 0x3000 && wc < 0x33e0)
+ summary = &big5hkscs_uni2indx_page30[(wc>>4)-0x300];
+ else if (wc >= 0x4e00 && wc < 0x9fb0)
+ summary = &big5hkscs_uni2indx_page4e[(wc>>4)-0x4e0];
+ else if (wc >= 0xe000 && wc < 0xfa30)
+ summary = &big5hkscs_uni2indx_pagee0[(wc>>4)-0xe00];
+ else if (wc >= 0xfe00 && wc < 0xfff0)
+ summary = &big5hkscs_uni2indx_pagefe[(wc>>4)-0xfe0];
+ if (summary) {
+ unsigned short used = summary->used;
+ unsigned int i = wc & 0x0f;
+ if (used & ((unsigned short) 1 << i)) {
+ unsigned short c;
+ /* Keep in `used' only the bits 0..i-1. */
+ used &= ((unsigned short) 1 << i) - 1;
+ /* Add `summary->indx' and the number of bits set in `used'. */
+ used = (used & 0x5555) + ((used & 0xaaaa) >> 1);
+ used = (used & 0x3333) + ((used & 0xcccc) >> 2);
+ used = (used & 0x0f0f) + ((used & 0xf0f0) >> 4);
+ used = (used & 0x00ff) + (used >> 8);
+ c = big5hkscs_2charset[summary->indx + used];
+ r[0] = (c >> 8); r[1] = (c & 0xff);
+ return 2;
+ }
+ }
+ return RET_ILSEQ;
+ }
+ return RET_TOOSMALL;
+}
+
diff --git a/libX11/src/xlibi18n/lcUniConv/cjk_tab_to_h.c b/libX11/src/xlibi18n/lcUniConv/cjk_tab_to_h.c
index 1b380766a..6934789cf 100644
--- a/libX11/src/xlibi18n/lcUniConv/cjk_tab_to_h.c
+++ b/libX11/src/xlibi18n/lcUniConv/cjk_tab_to_h.c
@@ -1,1071 +1,1071 @@
-
-/*
- * Generates a CJK character set table from a .TXT table as found on
- * ftp.unicode.org or in the X nls directory.
- * Examples:
- *
- * ./cjk_tab_to_h GB2312.1980-0 gb2312 > gb2312.h < gb2312
- * ./cjk_tab_to_h JISX0208.1983-0 jisx0208 > jisx0208.h < jis0208
- * ./cjk_tab_to_h KSC5601.1987-0 ksc5601 > ksc5601.h < ksc5601
- *
- * ./cjk_tab_to_h GB2312.1980-0 gb2312 > gb2312.h < GB2312.TXT
- * ./cjk_tab_to_h JISX0208.1983-0 jisx0208 > jisx0208.h < JIS0208.TXT
- * ./cjk_tab_to_h JISX0212.1990-0 jisx0212 > jisx0212.h < JIS0212.TXT
- * ./cjk_tab_to_h KSC5601.1987-0 ksc5601 > ksc5601.h < KSC5601.TXT
- * ./cjk_tab_to_h KSX1001.1992-0 ksc5601 > ksc5601.h < KSX1001.TXT
- *
- * ./cjk_tab_to_h BIG5 big5 > big5.h < BIG5.TXT
- *
- * ./cjk_tab_to_h JOHAB johab > johab.h < JOHAB.TXT
- *
- * ./cjk_tab_to_h BIG5HKSCS-0 big5hkscs >big5hkscs.h < BIG5HKSCS.TXT
- */
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <stdbool.h>
-#include <string.h>
-
-typedef struct {
- int start;
- int end;
-} Block;
-
-typedef struct {
- int rows; /* number of possible values for the 1st byte */
- int cols; /* number of possible values for the 2nd byte */
- int (*row_byte) (int row); /* returns the 1st byte value for a given row */
- int (*col_byte) (int col); /* returns the 2nd byte value for a given col */
- int (*byte_row) (int byte); /* converts a 1st byte value to a row, else -1 */
- int (*byte_col) (int byte); /* converts a 2nd byte value to a col, else -1 */
- const char* check_row_expr; /* format string for 1st byte value checking */
- const char* check_col_expr; /* format string for 2nd byte value checking */
- const char* byte_row_expr; /* format string for 1st byte value to row */
- const char* byte_col_expr; /* format string for 2nd byte value to col */
- int** charset2uni; /* charset2uni[0..rows-1][0..cols-1] is valid */
- /* You'll understand the terms "row" and "col" when you buy Ken Lunde's book.
- Once a row is fixed, choosing a "col" is the same as choosing a "cell". */
- int* charsetpage; /* charsetpage[0..rows]: how large is a page for a row */
- int ncharsetblocks;
- Block* charsetblocks; /* blocks[0..nblocks-1] */
- int* uni2charset; /* uni2charset[0x0000..0xffff] */
-} Encoding;
-
-/*
- * Outputs the file title.
- */
-static void output_title (const char *charsetname)
-{
- printf("\n");
- printf("/*\n");
- printf(" * %s\n", charsetname);
- printf(" */\n");
- printf("\n");
-}
-
-/*
- * Reads the charset2uni table from standard input.
- */
-static void read_table (Encoding* enc)
-{
- int row, col, i, i1, i2, c, j;
-
- enc->charset2uni = (int**) malloc(enc->rows*sizeof(int*));
- for (row = 0; row < enc->rows; row++)
- enc->charset2uni[row] = (int*) malloc(enc->cols*sizeof(int));
-
- for (row = 0; row < enc->rows; row++)
- for (col = 0; col < enc->cols; col++)
- enc->charset2uni[row][col] = 0xfffd;
-
- c = getc(stdin);
- ungetc(c,stdin);
- if (c == '#') {
- /* Read a unicode.org style .TXT file. */
- for (;;) {
- c = getc(stdin);
- if (c == EOF)
- break;
- if (c == '\n' || c == ' ' || c == '\t')
- continue;
- if (c == '#') {
- do { c = getc(stdin); } while (!(c == EOF || c == '\n'));
- continue;
- }
- ungetc(c,stdin);
- if (scanf("0x%x", &j) != 1)
- exit(1);
- i1 = j >> 8;
- i2 = j & 0xff;
- row = enc->byte_row(i1);
- col = enc->byte_col(i2);
- if (row < 0 || col < 0) {
- fprintf(stderr, "lost entry for %02x %02x\n", i1, i2);
- exit(1);
- }
- if (scanf(" 0x%x", &enc->charset2uni[row][col]) != 1)
- exit(1);
- }
- } else {
- /* Read a table of hexadecimal Unicode values. */
- for (i1 = 32; i1 < 132; i1++)
- for (i2 = 32; i2 < 132; i2++) {
- i = scanf("%x", &j);
- if (i == EOF)
- goto read_done;
- if (i != 1)
- exit(1);
- if (j < 0 || j == 0xffff)
- j = 0xfffd;
- if (j != 0xfffd) {
- if (enc->byte_row(i1) < 0 || enc->byte_col(i2) < 0) {
- fprintf(stderr, "lost entry at %02x %02x\n", i1, i2);
- exit (1);
- }
- enc->charset2uni[enc->byte_row(i1)][enc->byte_col(i2)] = j;
- }
- }
- read_done: ;
- }
-}
-
-/*
- * Computes the charsetpage[0..rows] array.
- */
-static void find_charset2uni_pages (Encoding* enc)
-{
- int row, col;
-
- enc->charsetpage = (int*) malloc((enc->rows+1)*sizeof(int));
-
- for (row = 0; row <= enc->rows; row++)
- enc->charsetpage[row] = 0;
-
- for (row = 0; row < enc->rows; row++) {
- int used = 0;
- for (col = 0; col < enc->cols; col++)
- if (enc->charset2uni[row][col] != 0xfffd)
- used = col+1;
- enc->charsetpage[row] = used;
- }
-}
-
-/*
- * Fills in nblocks and blocks.
- */
-static void find_charset2uni_blocks (Encoding* enc)
-{
- int n, row, lastrow;
-
- enc->charsetblocks = (Block*) malloc(enc->rows*sizeof(Block));
-
- n = 0;
- for (row = 0; row < enc->rows; row++)
- if (enc->charsetpage[row] > 0 && (row == 0 || enc->charsetpage[row-1] == 0)) {
- for (lastrow = row; enc->charsetpage[lastrow+1] > 0; lastrow++);
- enc->charsetblocks[n].start = row * enc->cols;
- enc->charsetblocks[n].end = lastrow * enc->cols + enc->charsetpage[lastrow];
- n++;
- }
- enc->ncharsetblocks = n;
-}
-
-/*
- * Outputs the charset to unicode table and function.
- */
-static void output_charset2uni (const char* name, Encoding* enc)
-{
- int row, col, lastrow, col_max, i, i1_min, i1_max;
-
- find_charset2uni_pages(enc);
-
- find_charset2uni_blocks(enc);
-
- for (row = 0; row < enc->rows; row++)
- if (enc->charsetpage[row] > 0) {
- if (row == 0 || enc->charsetpage[row-1] == 0) {
- /* Start a new block. */
- for (lastrow = row; enc->charsetpage[lastrow+1] > 0; lastrow++);
- printf("static const unsigned short %s_2uni_page%02x[%d] = {\n",
- name, enc->row_byte(row),
- (lastrow-row) * enc->cols + enc->charsetpage[lastrow]);
- }
- printf(" /""* 0x%02x *""/\n ", enc->row_byte(row));
- col_max = (enc->charsetpage[row+1] > 0 ? enc->cols : enc->charsetpage[row]);
- for (col = 0; col < col_max; col++) {
- printf(" 0x%04x,", enc->charset2uni[row][col]);
- if ((col % 8) == 7 && (col+1 < col_max)) printf("\n ");
- }
- printf("\n");
- if (enc->charsetpage[row+1] == 0) {
- /* End a block. */
- printf("};\n");
- }
- }
- printf("\n");
-
- printf("static int\n");
- printf("%s_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n)\n", name);
- printf("{\n");
- printf(" unsigned char c1 = s[0];\n");
- printf(" if (");
- for (i = 0; i < enc->ncharsetblocks; i++) {
- i1_min = enc->row_byte(enc->charsetblocks[i].start / enc->cols);
- i1_max = enc->row_byte((enc->charsetblocks[i].end-1) / enc->cols);
- if (i > 0)
- printf(" || ");
- if (i1_min == i1_max)
- printf("(c1 == 0x%02x)", i1_min);
- else
- printf("(c1 >= 0x%02x && c1 <= 0x%02x)", i1_min, i1_max);
- }
- printf(") {\n");
- printf(" if (n >= 2) {\n");
- printf(" unsigned char c2 = s[1];\n");
- printf(" if (");
- printf(enc->check_col_expr, "c2");
- printf(") {\n");
- printf(" unsigned int i = %d * (", enc->cols);
- printf(enc->byte_row_expr, "c1");
- printf(") + (");
- printf(enc->byte_col_expr, "c2");
- printf(");\n");
- printf(" unsigned short wc = 0xfffd;\n");
- for (i = 0; i < enc->ncharsetblocks; i++) {
- printf(" ");
- if (i > 0)
- printf("} else ");
- if (i < enc->ncharsetblocks-1)
- printf("if (i < %d) ", enc->charsetblocks[i+1].start);
- printf("{\n");
- printf(" if (i < %d)\n", enc->charsetblocks[i].end);
- printf(" wc = %s_2uni_page%02x[i", name, enc->row_byte(enc->charsetblocks[i].start / enc->cols));
- if (enc->charsetblocks[i].start > 0)
- printf("-%d", enc->charsetblocks[i].start);
- printf("];\n");
- }
- printf(" }\n");
- printf(" if (wc != 0xfffd) {\n");
- printf(" *pwc = (ucs4_t) wc;\n");
- printf(" return 2;\n");
- printf(" }\n");
- printf(" }\n");
- printf(" return RET_ILSEQ;\n");
- printf(" }\n");
- printf(" return RET_TOOFEW(0);\n");
- printf(" }\n");
- printf(" return RET_ILSEQ;\n");
- printf("}\n");
- printf("\n");
-}
-
-/*
- * Computes the uni2charset[0x0000..0xffff] array.
- */
-static void invert (Encoding* enc)
-{
- int row, col, j;
-
- enc->uni2charset = (int*) malloc(0x10000*sizeof(int));
-
- for (j = 0; j < 0x10000; j++)
- enc->uni2charset[j] = 0;
-
- for (row = 0; row < enc->rows; row++)
- for (col = 0; col < enc->cols; col++) {
- j = enc->charset2uni[row][col];
- if (j != 0xfffd)
- enc->uni2charset[j] = 0x100 * enc->row_byte(row) + enc->col_byte(col);
- }
-}
-
-/*
- * Outputs the unicode to charset table and function, using a linear array.
- * (Suitable if the table is dense.)
- */
-static void output_uni2charset_dense (const char* name, Encoding* enc)
-{
- /* Like in 8bit_tab_to_h.c */
- bool pages[0x100];
- int line[0x2000];
- int tableno;
- struct { int minline; int maxline; int usecount; } tables[0x2000];
- bool first;
- int row, col, j, p, j1, j2, t;
-
- for (p = 0; p < 0x100; p++)
- pages[p] = false;
- for (row = 0; row < enc->rows; row++)
- for (col = 0; col < enc->cols; col++) {
- j = enc->charset2uni[row][col];
- if (j != 0xfffd)
- pages[j>>8] = true;
- }
- for (j1 = 0; j1 < 0x2000; j1++) {
- bool all_invalid = true;
- for (j2 = 0; j2 < 8; j2++) {
- j = 8*j1+j2;
- if (enc->uni2charset[j] != 0)
- all_invalid = false;
- }
- if (all_invalid)
- line[j1] = -1;
- else
- line[j1] = 0;
- }
- tableno = 0;
- for (j1 = 0; j1 < 0x2000; j1++) {
- if (line[j1] >= 0) {
- if (tableno > 0
- && ((j1 > 0 && line[j1-1] == tableno-1)
- || ((tables[tableno-1].maxline >> 5) == (j1 >> 5)
- && j1 - tables[tableno-1].maxline <= 8))) {
- line[j1] = tableno-1;
- tables[tableno-1].maxline = j1;
- } else {
- tableno++;
- line[j1] = tableno-1;
- tables[tableno-1].minline = tables[tableno-1].maxline = j1;
- }
- }
- }
- for (t = 0; t < tableno; t++) {
- tables[t].usecount = 0;
- j1 = 8*tables[t].minline;
- j2 = 8*(tables[t].maxline+1);
- for (j = j1; j < j2; j++)
- if (enc->uni2charset[j] != 0)
- tables[t].usecount++;
- }
- {
- p = -1;
- for (t = 0; t < tableno; t++)
- if (tables[t].usecount > 1) {
- p = tables[t].minline >> 5;
- printf("static const unsigned short %s_page%02x[%d] = {\n", name, p, 8*(tables[t].maxline-tables[t].minline+1));
- for (j1 = tables[t].minline; j1 <= tables[t].maxline; j1++) {
- if ((j1 % 0x20) == 0 && j1 > tables[t].minline)
- printf(" /* 0x%04x */\n", 8*j1);
- printf(" ");
- for (j2 = 0; j2 < 8; j2++) {
- j = 8*j1+j2;
- printf(" 0x%04x,", enc->uni2charset[j]);
- }
- printf(" /*0x%02x-0x%02x*/\n", 8*(j1 % 0x20), 8*(j1 % 0x20)+7);
- }
- printf("};\n");
- }
- if (p >= 0)
- printf("\n");
- }
- printf("static int\n%s_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n)\n", name);
- printf("{\n");
- printf(" if (n >= 2) {\n");
- printf(" unsigned short c = 0;\n");
- first = true;
- for (j1 = 0; j1 < 0x2000;) {
- t = line[j1];
- for (j2 = j1; j2 < 0x2000 && line[j2] == t; j2++);
- if (t >= 0) {
- if (j1 != tables[t].minline) abort();
- if (j2 > tables[t].maxline+1) abort();
- j2 = tables[t].maxline+1;
- if (first)
- printf(" ");
- else
- printf(" else ");
- first = false;
- if (tables[t].usecount == 0) abort();
- if (tables[t].usecount == 1) {
- if (j2 != j1+1) abort();
- for (j = 8*j1; j < 8*j2; j++)
- if (enc->uni2charset[j] != 0) {
- printf("if (wc == 0x%04x)\n c = 0x%02x;\n", j, enc->uni2charset[j]);
- break;
- }
- } else {
- if (j1 == 0) {
- printf("if (wc < 0x%04x)", 8*j2);
- } else {
- printf("if (wc >= 0x%04x && wc < 0x%04x)", 8*j1, 8*j2);
- }
- printf("\n c = %s_page%02x[wc", name, j1 >> 5);
- if (tables[t].minline > 0)
- printf("-0x%04x", 8*j1);
- printf("];\n");
- }
- }
- j1 = j2;
- }
- printf(" if (c != 0) {\n");
- printf(" r[0] = (c >> 8); r[1] = (c & 0xff);\n");
- printf(" return 2;\n");
- printf(" }\n");
- printf(" return RET_ILSEQ;\n");
- printf(" }\n");
- printf(" return RET_TOOSMALL;\n");
- printf("}\n");
-}
-
-/*
- * Outputs the unicode to charset table and function, using a packed array.
- * (Suitable if the table is sparse.)
- */
-static void output_uni2charset_sparse (const char* name, Encoding* enc)
-{
- bool pages[0x100];
- Block pageblocks[0x100]; int npageblocks;
- int indx2charset[0x10000];
- int summary_indx[0x1000];
- int summary_used[0x1000];
- int i, row, col, j, p, j1, j2, indx;
-
- /* Fill pages[0x100]. */
- for (p = 0; p < 0x100; p++)
- pages[p] = false;
- for (row = 0; row < enc->rows; row++)
- for (col = 0; col < enc->cols; col++) {
- j = enc->charset2uni[row][col];
- if (j != 0xfffd)
- pages[j>>8] = true;
- }
-
-#if 0
- for (p = 0; p < 0x100; p++)
- if (pages[p]) {
- printf("static const unsigned short %s_page%02x[256] = {\n", name, p);
- for (j1 = 0; j1 < 32; j1++) {
- printf(" ");
- for (j2 = 0; j2 < 8; j2++)
- printf("0x%04x, ", enc->uni2charset[256*p+8*j1+j2]);
- printf("/""*0x%02x-0x%02x*""/\n", 8*j1, 8*j1+7);
- }
- printf("};\n");
- }
- printf("\n");
-#endif
-
- /* Fill summary_indx[] and summary_used[]. */
- indx = 0;
- for (j1 = 0; j1 < 0x1000; j1++) {
- summary_indx[j1] = indx;
- summary_used[j1] = 0;
- for (j2 = 0; j2 < 16; j2++) {
- j = 16*j1+j2;
- if (enc->uni2charset[j] != 0) {
- indx2charset[indx++] = enc->uni2charset[j];
- summary_used[j1] |= (1 << j2);
- }
- }
- }
-
- /* Fill npageblocks and pageblocks[]. */
- npageblocks = 0;
- for (p = 0; p < 0x100; ) {
- if (pages[p] && (p == 0 || !pages[p-1])) {
- pageblocks[npageblocks].start = 16*p;
- do p++; while (p < 0x100 && pages[p]);
- j1 = 16*p;
- while (summary_used[j1-1] == 0) j1--;
- pageblocks[npageblocks].end = j1;
- npageblocks++;
- } else
- p++;
- }
-
- printf("static const unsigned short %s_2charset[%d] = {\n", name, indx);
- for (i = 0; i < indx; ) {
- if ((i % 8) == 0) printf(" ");
- printf(" 0x%04x,", indx2charset[i]);
- i++;
- if ((i % 8) == 0 || i == indx) printf("\n");
- }
- printf("};\n");
- printf("\n");
- for (i = 0; i < npageblocks; i++) {
- printf("static const Summary16 %s_uni2indx_page%02x[%d] = {\n", name,
- pageblocks[i].start/16, pageblocks[i].end-pageblocks[i].start);
- for (j1 = pageblocks[i].start; j1 < pageblocks[i].end; ) {
- if (((16*j1) % 0x100) == 0) printf(" /""* 0x%04x *""/\n", 16*j1);
- if ((j1 % 4) == 0) printf(" ");
- printf(" { %4d, 0x%04x },", summary_indx[j1], summary_used[j1]);
- j1++;
- if ((j1 % 4) == 0 || j1 == pageblocks[i].end) printf("\n");
- }
- printf("};\n");
- }
- printf("\n");
-
- printf("static int\n");
- printf("%s_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n)\n", name);
- printf("{\n");
- printf(" if (n >= 2) {\n");
- printf(" const Summary16 *summary = NULL;\n");
- for (i = 0; i < npageblocks; i++) {
- printf(" ");
- if (i > 0)
- printf("else ");
- printf("if (wc >= 0x%04x && wc < 0x%04x)\n",
- 16*pageblocks[i].start, 16*pageblocks[i].end);
- printf(" summary = &%s_uni2indx_page%02x[(wc>>4)", name,
- pageblocks[i].start/16);
- if (pageblocks[i].start > 0)
- printf("-0x%03x", pageblocks[i].start);
- printf("];\n");
- }
- printf(" if (summary) {\n");
- printf(" unsigned short used = summary->used;\n");
- printf(" unsigned int i = wc & 0x0f;\n");
- printf(" if (used & ((unsigned short) 1 << i)) {\n");
- printf(" unsigned short c;\n");
- printf(" /* Keep in `used' only the bits 0..i-1. */\n");
- printf(" used &= ((unsigned short) 1 << i) - 1;\n");
- printf(" /* Add `summary->indx' and the number of bits set in `used'. */\n");
- printf(" used = (used & 0x5555) + ((used & 0xaaaa) >> 1);\n");
- printf(" used = (used & 0x3333) + ((used & 0xcccc) >> 2);\n");
- printf(" used = (used & 0x0f0f) + ((used & 0xf0f0) >> 4);\n");
- printf(" used = (used & 0x00ff) + (used >> 8);\n");
- printf(" c = %s_2charset[summary->indx + used];\n", name);
- printf(" r[0] = (c >> 8); r[1] = (c & 0xff);\n");
- printf(" return 2;\n");
- printf(" }\n");
- printf(" }\n");
- printf(" return RET_ILSEQ;\n");
- printf(" }\n");
- printf(" return RET_TOOSMALL;\n");
- printf("}\n");
-}
-
-/* ISO-2022/EUC specifics */
-
-static int row_byte_normal (int row) { return 0x21+row; }
-static int col_byte_normal (int col) { return 0x21+col; }
-static int byte_row_normal (int byte) { return byte-0x21; }
-static int byte_col_normal (int byte) { return byte-0x21; }
-
-static void do_normal (const char* name)
-{
- Encoding enc;
-
- enc.rows = 94;
- enc.cols = 94;
- enc.row_byte = row_byte_normal;
- enc.col_byte = col_byte_normal;
- enc.byte_row = byte_row_normal;
- enc.byte_col = byte_col_normal;
- enc.check_row_expr = "%1$s >= 0x21 && %1$s < 0x7f";
- enc.check_col_expr = "%1$s >= 0x21 && %1$s < 0x7f";
- enc.byte_row_expr = "%1$s - 0x21";
- enc.byte_col_expr = "%1$s - 0x21";
-
- read_table(&enc);
- output_charset2uni(name,&enc);
- invert(&enc); output_uni2charset_sparse(name,&enc);
-}
-
-/* Note: On first sight, the jisx0212_2charset[] table seems to be in order,
- starting from the charset=0x3021/uni=0x4e02 pair. But it's only mostly in
- order. There are 75 out-of-order values, scattered all throughout the table.
- */
-
-static void do_normal_only_charset2uni (const char* name)
-{
- Encoding enc;
-
- enc.rows = 94;
- enc.cols = 94;
- enc.row_byte = row_byte_normal;
- enc.col_byte = col_byte_normal;
- enc.byte_row = byte_row_normal;
- enc.byte_col = byte_col_normal;
- enc.check_row_expr = "%1$s >= 0x21 && %1$s < 0x7f";
- enc.check_col_expr = "%1$s >= 0x21 && %1$s < 0x7f";
- enc.byte_row_expr = "%1$s - 0x21";
- enc.byte_col_expr = "%1$s - 0x21";
-
- read_table(&enc);
- output_charset2uni(name,&enc);
-}
-
-/* CNS 11643 specifics - trick to put two tables into one */
-
-static int row_byte_cns11643 (int row) {
- return 0x100 * (row / 94) + (row % 94) + 0x21;
-}
-static int byte_row_cns11643 (int byte) {
- return (byte >= 0x100 && byte < 0x200 ? byte-0x121 :
- byte >= 0x200 && byte < 0x300 ? byte-0x221+94 :
- byte >= 0x300 && byte < 0x400 ? byte-0x321+2*94 :
- -1);
-}
-
-static void do_cns11643_only_uni2charset (const char* name)
-{
- Encoding enc;
- int j, x;
-
- enc.rows = 3*94;
- enc.cols = 94;
- enc.row_byte = row_byte_cns11643;
- enc.col_byte = col_byte_normal;
- enc.byte_row = byte_row_cns11643;
- enc.byte_col = byte_col_normal;
- enc.check_row_expr = "%1$s >= 0x21 && %1$s < 0x7f";
- enc.check_col_expr = "%1$s >= 0x21 && %1$s < 0x7f";
- enc.byte_row_expr = "%1$s - 0x21";
- enc.byte_col_expr = "%1$s - 0x21";
-
- read_table(&enc);
- invert(&enc);
- /* Move the 2 plane bits into the unused bits 15 and 7. */
- for (j = 0; j < 0x10000; j++) {
- x = enc.uni2charset[j];
- if (x != 0) {
- if (x & 0x8080) abort();
- switch (x >> 16) {
- case 0: /* plane 1 */ x = (x & 0xffff) | 0x0000; break;
- case 1: /* plane 2 */ x = (x & 0xffff) | 0x0080; break;
- case 2: /* plane 3 */ x = (x & 0xffff) | 0x8000; break;
- default: abort();
- }
- enc.uni2charset[j] = x;
- }
- }
- output_uni2charset_sparse(name,&enc);
-}
-
-/* GBK specifics */
-
-static int row_byte_gbk1 (int row) {
- return 0x81+row;
-}
-static int col_byte_gbk1 (int col) {
- return (col >= 0x3f ? 0x41 : 0x40) + col;
-}
-static int byte_row_gbk1 (int byte) {
- if (byte >= 0x81 && byte < 0xff)
- return byte-0x81;
- else
- return -1;
-}
-static int byte_col_gbk1 (int byte) {
- if (byte >= 0x40 && byte < 0x7f)
- return byte-0x40;
- else if (byte >= 0x80 && byte < 0xff)
- return byte-0x41;
- else
- return -1;
-}
-
-static void do_gbk1 (const char* name)
-{
- Encoding enc;
-
- enc.rows = 126;
- enc.cols = 190;
- enc.row_byte = row_byte_gbk1;
- enc.col_byte = col_byte_gbk1;
- enc.byte_row = byte_row_gbk1;
- enc.byte_col = byte_col_gbk1;
- enc.check_row_expr = "%1$s >= 0x81 && %1$s < 0xff";
- enc.check_col_expr = "(%1$s >= 0x40 && %1$s < 0x7f) || (%1$s >= 0x80 && %1$s < 0xff)";
- enc.byte_row_expr = "%1$s - 0x81";
- enc.byte_col_expr = "%1$s - (%1$s >= 0x80 ? 0x41 : 0x40)";
-
- read_table(&enc);
- output_charset2uni(name,&enc);
- invert(&enc); output_uni2charset_dense(name,&enc);
-}
-
-static void do_gbk1_only_charset2uni (const char* name)
-{
- Encoding enc;
-
- enc.rows = 126;
- enc.cols = 190;
- enc.row_byte = row_byte_gbk1;
- enc.col_byte = col_byte_gbk1;
- enc.byte_row = byte_row_gbk1;
- enc.byte_col = byte_col_gbk1;
- enc.check_row_expr = "%1$s >= 0x81 && %1$s < 0xff";
- enc.check_col_expr = "(%1$s >= 0x40 && %1$s < 0x7f) || (%1$s >= 0x80 && %1$s < 0xff)";
- enc.byte_row_expr = "%1$s - 0x81";
- enc.byte_col_expr = "%1$s - (%1$s >= 0x80 ? 0x41 : 0x40)";
-
- read_table(&enc);
- output_charset2uni(name,&enc);
-}
-
-static int row_byte_gbk2 (int row) {
- return 0x81+row;
-}
-static int col_byte_gbk2 (int col) {
- return (col >= 0x3f ? 0x41 : 0x40) + col;
-}
-static int byte_row_gbk2 (int byte) {
- if (byte >= 0x81 && byte < 0xff)
- return byte-0x81;
- else
- return -1;
-}
-static int byte_col_gbk2 (int byte) {
- if (byte >= 0x40 && byte < 0x7f)
- return byte-0x40;
- else if (byte >= 0x80 && byte < 0xa1)
- return byte-0x41;
- else
- return -1;
-}
-
-static void do_gbk2_only_charset2uni (const char* name)
-{
- Encoding enc;
-
- enc.rows = 126;
- enc.cols = 96;
- enc.row_byte = row_byte_gbk2;
- enc.col_byte = col_byte_gbk2;
- enc.byte_row = byte_row_gbk2;
- enc.byte_col = byte_col_gbk2;
- enc.check_row_expr = "%1$s >= 0x81 && %1$s < 0xff";
- enc.check_col_expr = "(%1$s >= 0x40 && %1$s < 0x7f) || (%1$s >= 0x80 && %1$s < 0xa1)";
- enc.byte_row_expr = "%1$s - 0x81";
- enc.byte_col_expr = "%1$s - (%1$s >= 0x80 ? 0x41 : 0x40)";
-
- read_table(&enc);
- output_charset2uni(name,&enc);
-}
-
-static void do_gbk1_only_uni2charset (const char* name)
-{
- Encoding enc;
-
- enc.rows = 126;
- enc.cols = 190;
- enc.row_byte = row_byte_gbk1;
- enc.col_byte = col_byte_gbk1;
- enc.byte_row = byte_row_gbk1;
- enc.byte_col = byte_col_gbk1;
- enc.check_row_expr = "%1$s >= 0x81 && %1$s < 0xff";
- enc.check_col_expr = "(%1$s >= 0x40 && %1$s < 0x7f) || (%1$s >= 0x80 && %1$s < 0xff)";
- enc.byte_row_expr = "%1$s - 0x81";
- enc.byte_col_expr = "%1$s - (%1$s >= 0x80 ? 0x41 : 0x40)";
-
- read_table(&enc);
- invert(&enc); output_uni2charset_sparse(name,&enc);
-}
-
-/* KSC 5601 specifics */
-
-/*
- * Reads the charset2uni table from standard input.
- */
-static void read_table_ksc5601 (Encoding* enc)
-{
- int row, col, i, i1, i2, c, j;
-
- enc->charset2uni = (int**) malloc(enc->rows*sizeof(int*));
- for (row = 0; row < enc->rows; row++)
- enc->charset2uni[row] = (int*) malloc(enc->cols*sizeof(int));
-
- for (row = 0; row < enc->rows; row++)
- for (col = 0; col < enc->cols; col++)
- enc->charset2uni[row][col] = 0xfffd;
-
- c = getc(stdin);
- ungetc(c,stdin);
- if (c == '#') {
- /* Read a unicode.org style .TXT file. */
- for (;;) {
- c = getc(stdin);
- if (c == EOF)
- break;
- if (c == '\n' || c == ' ' || c == '\t')
- continue;
- if (c == '#') {
- do { c = getc(stdin); } while (!(c == EOF || c == '\n'));
- continue;
- }
- ungetc(c,stdin);
- if (scanf("0x%x", &j) != 1)
- exit(1);
- i1 = j >> 8;
- i2 = j & 0xff;
- if (scanf(" 0x%x", &j) != 1)
- exit(1);
- /* Take only the range covered by KS C 5601.1987-0 = KS C 5601.1989-0
- = KS X 1001.1992, ignore the rest. */
- if (!(i1 >= 128+33 && i1 < 128+127 && i2 >= 128+33 && i2 < 128+127))
- continue; /* KSC5601 specific */
- i1 &= 0x7f; /* KSC5601 specific */
- i2 &= 0x7f; /* KSC5601 specific */
- row = enc->byte_row(i1);
- col = enc->byte_col(i2);
- if (row < 0 || col < 0) {
- fprintf(stderr, "lost entry for %02x %02x\n", i1, i2);
- exit(1);
- }
- enc->charset2uni[row][col] = j;
- }
- } else {
- /* Read a table of hexadecimal Unicode values. */
- for (i1 = 33; i1 < 127; i1++)
- for (i2 = 33; i2 < 127; i2++) {
- i = scanf("%x", &j);
- if (i == EOF)
- goto read_done;
- if (i != 1)
- exit(1);
- if (j < 0 || j == 0xffff)
- j = 0xfffd;
- if (j != 0xfffd) {
- if (enc->byte_row(i1) < 0 || enc->byte_col(i2) < 0) {
- fprintf(stderr, "lost entry at %02x %02x\n", i1, i2);
- exit (1);
- }
- enc->charset2uni[enc->byte_row(i1)][enc->byte_col(i2)] = j;
- }
- }
- read_done: ;
- }
-}
-
-static void do_ksc5601 (const char* name)
-{
- Encoding enc;
-
- enc.rows = 94;
- enc.cols = 94;
- enc.row_byte = row_byte_normal;
- enc.col_byte = col_byte_normal;
- enc.byte_row = byte_row_normal;
- enc.byte_col = byte_col_normal;
- enc.check_row_expr = "%1$s >= 0x21 && %1$s < 0x7f";
- enc.check_col_expr = "%1$s >= 0x21 && %1$s < 0x7f";
- enc.byte_row_expr = "%1$s - 0x21";
- enc.byte_col_expr = "%1$s - 0x21";
-
- read_table_ksc5601(&enc);
- output_charset2uni(name,&enc);
- invert(&enc); output_uni2charset_sparse(name,&enc);
-}
-
-/* Big5 specifics */
-
-static int row_byte_big5 (int row) {
- return 0xa1+row;
-}
-static int col_byte_big5 (int col) {
- return (col >= 0x3f ? 0x62 : 0x40) + col;
-}
-static int byte_row_big5 (int byte) {
- if (byte >= 0xa1 && byte < 0xff)
- return byte-0xa1;
- else
- return -1;
-}
-static int byte_col_big5 (int byte) {
- if (byte >= 0x40 && byte < 0x7f)
- return byte-0x40;
- else if (byte >= 0xa1 && byte < 0xff)
- return byte-0x62;
- else
- return -1;
-}
-
-static void do_big5 (const char* name)
-{
- Encoding enc;
-
- enc.rows = 94;
- enc.cols = 157;
- enc.row_byte = row_byte_big5;
- enc.col_byte = col_byte_big5;
- enc.byte_row = byte_row_big5;
- enc.byte_col = byte_col_big5;
- enc.check_row_expr = "%1$s >= 0xa1 && %1$s < 0xff";
- enc.check_col_expr = "(%1$s >= 0x40 && %1$s < 0x7f) || (%1$s >= 0xa1 && %1$s < 0xff)";
- enc.byte_row_expr = "%1$s - 0xa1";
- enc.byte_col_expr = "%1$s - (%1$s >= 0xa1 ? 0x62 : 0x40)";
-
- read_table(&enc);
- output_charset2uni(name,&enc);
- invert(&enc); output_uni2charset_sparse(name,&enc);
-}
-
-/* Big5-HKSCS specifics */
-
-static int row_byte_big5hkscs (int row) {
- return 0x81+row;
-}
-static int col_byte_big5hkscs (int col) {
- return (col >= 0x3f ? 0x62 : 0x40) + col;
-}
-static int byte_row_big5hkscs (int byte) {
- if (byte >= 0x81 && byte < 0xff)
- return byte-0x81;
- else
- return -1;
-}
-static int byte_col_big5hkscs (int byte) {
- if (byte >= 0x40 && byte < 0x7f)
- return byte-0x40;
- else if (byte >= 0xa1 && byte < 0xff)
- return byte-0x62;
- else
- return -1;
-}
-
-static void do_big5hkscs (const char* name)
-{
- Encoding enc;
-
- enc.rows = 126;
- enc.cols = 157;
- enc.row_byte = row_byte_big5hkscs;
- enc.col_byte = col_byte_big5hkscs;
- enc.byte_row = byte_row_big5hkscs;
- enc.byte_col = byte_col_big5hkscs;
- enc.check_row_expr = "%1$s >= 0x81 && %1$s < 0xff";
- enc.check_col_expr = "(%1$s >= 0x40 && %1$s < 0x7f) || (%1$s >= 0xa1 && %1$s < 0xff)";
- enc.byte_row_expr = "%1$s - 0x81";
- enc.byte_col_expr = "%1$s - (%1$s >= 0xa1 ? 0x62 : 0x40)";
-
- read_table(&enc);
- output_charset2uni(name,&enc);
- invert(&enc); output_uni2charset_sparse(name,&enc);
-}
-
-/* Johab Hangul specifics */
-
-static int row_byte_johab_hangul (int row) {
- return 0x84+row;
-}
-static int col_byte_johab_hangul (int col) {
- return (col >= 0x3e ? 0x43 : 0x41) + col;
-}
-static int byte_row_johab_hangul (int byte) {
- if (byte >= 0x84 && byte < 0xd4)
- return byte-0x84;
- else
- return -1;
-}
-static int byte_col_johab_hangul (int byte) {
- if (byte >= 0x41 && byte < 0x7f)
- return byte-0x41;
- else if (byte >= 0x81 && byte < 0xff)
- return byte-0x43;
- else
- return -1;
-}
-
-static void do_johab_hangul (const char* name)
-{
- Encoding enc;
-
- enc.rows = 80;
- enc.cols = 188;
- enc.row_byte = row_byte_johab_hangul;
- enc.col_byte = col_byte_johab_hangul;
- enc.byte_row = byte_row_johab_hangul;
- enc.byte_col = byte_col_johab_hangul;
- enc.check_row_expr = "%1$s >= 0x84 && %1$s < 0xd4";
- enc.check_col_expr = "(%1$s >= 0x41 && %1$s < 0x7f) || (%1$s >= 0x81 && %1$s < 0xff)";
- enc.byte_row_expr = "%1$s - 0x84";
- enc.byte_col_expr = "%1$s - (%1$s >= 0x81 ? 0x43 : 0x41)";
-
- read_table(&enc);
- output_charset2uni(name,&enc);
- invert(&enc); output_uni2charset_dense(name,&enc);
-}
-
-/* SJIS specifics */
-
-static int row_byte_sjis (int row) {
- return (row >= 0x1f ? 0xc1 : 0x81) + row;
-}
-static int col_byte_sjis (int col) {
- return (col >= 0x3f ? 0x41 : 0x40) + col;
-}
-static int byte_row_sjis (int byte) {
- if (byte >= 0x81 && byte < 0xa0)
- return byte-0x81;
- else if (byte >= 0xe0)
- return byte-0xc1;
- else
- return -1;
-}
-static int byte_col_sjis (int byte) {
- if (byte >= 0x40 && byte < 0x7f)
- return byte-0x40;
- else if (byte >= 0x80 && byte < 0xfd)
- return byte-0x41;
- else
- return -1;
-}
-
-static void do_sjis (const char* name)
-{
- Encoding enc;
-
- enc.rows = 94;
- enc.cols = 188;
- enc.row_byte = row_byte_sjis;
- enc.col_byte = col_byte_sjis;
- enc.byte_row = byte_row_sjis;
- enc.byte_col = byte_col_sjis;
- enc.check_row_expr = "(%1$s >= 0x81 && %1$s < 0xa0) || (%1$s >= 0xe0)";
- enc.check_col_expr = "(%1$s >= 0x40 && %1$s < 0x7f) || (%1$s >= 0x80 && %1$s < 0xfd)";
- enc.byte_row_expr = "%1$s - (%1$s >= 0xe0 ? 0xc1 : 0x81)";
- enc.byte_col_expr = "%1$s - (%1$s >= 0x80 ? 0x41 : 0x40)";
-
- read_table(&enc);
- output_charset2uni(name,&enc);
- invert(&enc); output_uni2charset_sparse(name,&enc);
-}
-
-/* Main program */
-
-int main (int argc, char *argv[])
-{
- const char* charsetname;
- const char* name;
-
- if (argc != 3)
- exit(1);
- charsetname = argv[1];
- name = argv[2];
-
- output_title(charsetname);
-
- if (!strcmp(name,"gb2312") || !strcmp(name,"gb12345ext")
- || !strcmp(name,"jisx0208") || !strcmp(name,"jisx0212"))
- do_normal(name);
- else if (!strcmp(name,"cns11643_1") || !strcmp(name,"cns11643_2")
- || !strcmp(name,"cns11643_3"))
- do_normal_only_charset2uni(name);
- else if (!strcmp(name,"cns11643_inv"))
- do_cns11643_only_uni2charset(name);
- else if (!strcmp(name,"gbkext1"))
- do_gbk1_only_charset2uni(name);
- else if (!strcmp(name,"gbkext2"))
- do_gbk2_only_charset2uni(name);
- else if (!strcmp(name,"gbkext_inv"))
- do_gbk1_only_uni2charset(name);
- else if (!strcmp(name,"cp936ext"))
- do_gbk1(name);
- else if (!strcmp(name,"ksc5601"))
- do_ksc5601(name);
- else if (!strcmp(name,"big5") || !strcmp(name,"cp950ext"))
- do_big5(name);
- else if (!strcmp(name,"big5hkscs"))
- do_big5hkscs(name);
- else if (!strcmp(name,"johab_hangul"))
- do_johab_hangul(name);
- else if (!strcmp(name,"cp932ext"))
- do_sjis(name);
- else
- exit(1);
-
- return 0;
-}
+
+/*
+ * Generates a CJK character set table from a .TXT table as found on
+ * ftp.unicode.org or in the X nls directory.
+ * Examples:
+ *
+ * ./cjk_tab_to_h GB2312.1980-0 gb2312 > gb2312.h < gb2312
+ * ./cjk_tab_to_h JISX0208.1983-0 jisx0208 > jisx0208.h < jis0208
+ * ./cjk_tab_to_h KSC5601.1987-0 ksc5601 > ksc5601.h < ksc5601
+ *
+ * ./cjk_tab_to_h GB2312.1980-0 gb2312 > gb2312.h < GB2312.TXT
+ * ./cjk_tab_to_h JISX0208.1983-0 jisx0208 > jisx0208.h < JIS0208.TXT
+ * ./cjk_tab_to_h JISX0212.1990-0 jisx0212 > jisx0212.h < JIS0212.TXT
+ * ./cjk_tab_to_h KSC5601.1987-0 ksc5601 > ksc5601.h < KSC5601.TXT
+ * ./cjk_tab_to_h KSX1001.1992-0 ksc5601 > ksc5601.h < KSX1001.TXT
+ *
+ * ./cjk_tab_to_h BIG5 big5 > big5.h < BIG5.TXT
+ *
+ * ./cjk_tab_to_h JOHAB johab > johab.h < JOHAB.TXT
+ *
+ * ./cjk_tab_to_h BIG5HKSCS-0 big5hkscs >big5hkscs.h < BIG5HKSCS.TXT
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <stdbool.h>
+#include <string.h>
+
+typedef struct {
+ int start;
+ int end;
+} Block;
+
+typedef struct {
+ int rows; /* number of possible values for the 1st byte */
+ int cols; /* number of possible values for the 2nd byte */
+ int (*row_byte) (int row); /* returns the 1st byte value for a given row */
+ int (*col_byte) (int col); /* returns the 2nd byte value for a given col */
+ int (*byte_row) (int byte); /* converts a 1st byte value to a row, else -1 */
+ int (*byte_col) (int byte); /* converts a 2nd byte value to a col, else -1 */
+ const char* check_row_expr; /* format string for 1st byte value checking */
+ const char* check_col_expr; /* format string for 2nd byte value checking */
+ const char* byte_row_expr; /* format string for 1st byte value to row */
+ const char* byte_col_expr; /* format string for 2nd byte value to col */
+ int** charset2uni; /* charset2uni[0..rows-1][0..cols-1] is valid */
+ /* You'll understand the terms "row" and "col" when you buy Ken Lunde's book.
+ Once a row is fixed, choosing a "col" is the same as choosing a "cell". */
+ int* charsetpage; /* charsetpage[0..rows]: how large is a page for a row */
+ int ncharsetblocks;
+ Block* charsetblocks; /* blocks[0..nblocks-1] */
+ int* uni2charset; /* uni2charset[0x0000..0xffff] */
+} Encoding;
+
+/*
+ * Outputs the file title.
+ */
+static void output_title (const char *charsetname)
+{
+ printf("\n");
+ printf("/*\n");
+ printf(" * %s\n", charsetname);
+ printf(" */\n");
+ printf("\n");
+}
+
+/*
+ * Reads the charset2uni table from standard input.
+ */
+static void read_table (Encoding* enc)
+{
+ int row, col, i, i1, i2, c, j;
+
+ enc->charset2uni = (int**) malloc(enc->rows*sizeof(int*));
+ for (row = 0; row < enc->rows; row++)
+ enc->charset2uni[row] = (int*) malloc(enc->cols*sizeof(int));
+
+ for (row = 0; row < enc->rows; row++)
+ for (col = 0; col < enc->cols; col++)
+ enc->charset2uni[row][col] = 0xfffd;
+
+ c = getc(stdin);
+ ungetc(c,stdin);
+ if (c == '#') {
+ /* Read a unicode.org style .TXT file. */
+ for (;;) {
+ c = getc(stdin);
+ if (c == EOF)
+ break;
+ if (c == '\n' || c == ' ' || c == '\t')
+ continue;
+ if (c == '#') {
+ do { c = getc(stdin); } while (!(c == EOF || c == '\n'));
+ continue;
+ }
+ ungetc(c,stdin);
+ if (scanf("0x%x", &j) != 1)
+ exit(1);
+ i1 = j >> 8;
+ i2 = j & 0xff;
+ row = enc->byte_row(i1);
+ col = enc->byte_col(i2);
+ if (row < 0 || col < 0) {
+ fprintf(stderr, "lost entry for %02x %02x\n", i1, i2);
+ exit(1);
+ }
+ if (scanf(" 0x%x", &enc->charset2uni[row][col]) != 1)
+ exit(1);
+ }
+ } else {
+ /* Read a table of hexadecimal Unicode values. */
+ for (i1 = 32; i1 < 132; i1++)
+ for (i2 = 32; i2 < 132; i2++) {
+ i = scanf("%x", &j);
+ if (i == EOF)
+ goto read_done;
+ if (i != 1)
+ exit(1);
+ if (j < 0 || j == 0xffff)
+ j = 0xfffd;
+ if (j != 0xfffd) {
+ if (enc->byte_row(i1) < 0 || enc->byte_col(i2) < 0) {
+ fprintf(stderr, "lost entry at %02x %02x\n", i1, i2);
+ exit (1);
+ }
+ enc->charset2uni[enc->byte_row(i1)][enc->byte_col(i2)] = j;
+ }
+ }
+ read_done: ;
+ }
+}
+
+/*
+ * Computes the charsetpage[0..rows] array.
+ */
+static void find_charset2uni_pages (Encoding* enc)
+{
+ int row, col;
+
+ enc->charsetpage = (int*) malloc((enc->rows+1)*sizeof(int));
+
+ for (row = 0; row <= enc->rows; row++)
+ enc->charsetpage[row] = 0;
+
+ for (row = 0; row < enc->rows; row++) {
+ int used = 0;
+ for (col = 0; col < enc->cols; col++)
+ if (enc->charset2uni[row][col] != 0xfffd)
+ used = col+1;
+ enc->charsetpage[row] = used;
+ }
+}
+
+/*
+ * Fills in nblocks and blocks.
+ */
+static void find_charset2uni_blocks (Encoding* enc)
+{
+ int n, row, lastrow;
+
+ enc->charsetblocks = (Block*) malloc(enc->rows*sizeof(Block));
+
+ n = 0;
+ for (row = 0; row < enc->rows; row++)
+ if (enc->charsetpage[row] > 0 && (row == 0 || enc->charsetpage[row-1] == 0)) {
+ for (lastrow = row; enc->charsetpage[lastrow+1] > 0; lastrow++);
+ enc->charsetblocks[n].start = row * enc->cols;
+ enc->charsetblocks[n].end = lastrow * enc->cols + enc->charsetpage[lastrow];
+ n++;
+ }
+ enc->ncharsetblocks = n;
+}
+
+/*
+ * Outputs the charset to unicode table and function.
+ */
+static void output_charset2uni (const char* name, Encoding* enc)
+{
+ int row, col, lastrow, col_max, i, i1_min, i1_max;
+
+ find_charset2uni_pages(enc);
+
+ find_charset2uni_blocks(enc);
+
+ for (row = 0; row < enc->rows; row++)
+ if (enc->charsetpage[row] > 0) {
+ if (row == 0 || enc->charsetpage[row-1] == 0) {
+ /* Start a new block. */
+ for (lastrow = row; enc->charsetpage[lastrow+1] > 0; lastrow++);
+ printf("static const unsigned short %s_2uni_page%02x[%d] = {\n",
+ name, enc->row_byte(row),
+ (lastrow-row) * enc->cols + enc->charsetpage[lastrow]);
+ }
+ printf(" /""* 0x%02x *""/\n ", enc->row_byte(row));
+ col_max = (enc->charsetpage[row+1] > 0 ? enc->cols : enc->charsetpage[row]);
+ for (col = 0; col < col_max; col++) {
+ printf(" 0x%04x,", enc->charset2uni[row][col]);
+ if ((col % 8) == 7 && (col+1 < col_max)) printf("\n ");
+ }
+ printf("\n");
+ if (enc->charsetpage[row+1] == 0) {
+ /* End a block. */
+ printf("};\n");
+ }
+ }
+ printf("\n");
+
+ printf("static int\n");
+ printf("%s_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n)\n", name);
+ printf("{\n");
+ printf(" unsigned char c1 = s[0];\n");
+ printf(" if (");
+ for (i = 0; i < enc->ncharsetblocks; i++) {
+ i1_min = enc->row_byte(enc->charsetblocks[i].start / enc->cols);
+ i1_max = enc->row_byte((enc->charsetblocks[i].end-1) / enc->cols);
+ if (i > 0)
+ printf(" || ");
+ if (i1_min == i1_max)
+ printf("(c1 == 0x%02x)", i1_min);
+ else
+ printf("(c1 >= 0x%02x && c1 <= 0x%02x)", i1_min, i1_max);
+ }
+ printf(") {\n");
+ printf(" if (n >= 2) {\n");
+ printf(" unsigned char c2 = s[1];\n");
+ printf(" if (");
+ printf(enc->check_col_expr, "c2");
+ printf(") {\n");
+ printf(" unsigned int i = %d * (", enc->cols);
+ printf(enc->byte_row_expr, "c1");
+ printf(") + (");
+ printf(enc->byte_col_expr, "c2");
+ printf(");\n");
+ printf(" unsigned short wc = 0xfffd;\n");
+ for (i = 0; i < enc->ncharsetblocks; i++) {
+ printf(" ");
+ if (i > 0)
+ printf("} else ");
+ if (i < enc->ncharsetblocks-1)
+ printf("if (i < %d) ", enc->charsetblocks[i+1].start);
+ printf("{\n");
+ printf(" if (i < %d)\n", enc->charsetblocks[i].end);
+ printf(" wc = %s_2uni_page%02x[i", name, enc->row_byte(enc->charsetblocks[i].start / enc->cols));
+ if (enc->charsetblocks[i].start > 0)
+ printf("-%d", enc->charsetblocks[i].start);
+ printf("];\n");
+ }
+ printf(" }\n");
+ printf(" if (wc != 0xfffd) {\n");
+ printf(" *pwc = (ucs4_t) wc;\n");
+ printf(" return 2;\n");
+ printf(" }\n");
+ printf(" }\n");
+ printf(" return RET_ILSEQ;\n");
+ printf(" }\n");
+ printf(" return RET_TOOFEW(0);\n");
+ printf(" }\n");
+ printf(" return RET_ILSEQ;\n");
+ printf("}\n");
+ printf("\n");
+}
+
+/*
+ * Computes the uni2charset[0x0000..0xffff] array.
+ */
+static void invert (Encoding* enc)
+{
+ int row, col, j;
+
+ enc->uni2charset = (int*) malloc(0x10000*sizeof(int));
+
+ for (j = 0; j < 0x10000; j++)
+ enc->uni2charset[j] = 0;
+
+ for (row = 0; row < enc->rows; row++)
+ for (col = 0; col < enc->cols; col++) {
+ j = enc->charset2uni[row][col];
+ if (j != 0xfffd)
+ enc->uni2charset[j] = 0x100 * enc->row_byte(row) + enc->col_byte(col);
+ }
+}
+
+/*
+ * Outputs the unicode to charset table and function, using a linear array.
+ * (Suitable if the table is dense.)
+ */
+static void output_uni2charset_dense (const char* name, Encoding* enc)
+{
+ /* Like in 8bit_tab_to_h.c */
+ bool pages[0x100];
+ int line[0x2000];
+ int tableno;
+ struct { int minline; int maxline; int usecount; } tables[0x2000];
+ bool first;
+ int row, col, j, p, j1, j2, t;
+
+ for (p = 0; p < 0x100; p++)
+ pages[p] = false;
+ for (row = 0; row < enc->rows; row++)
+ for (col = 0; col < enc->cols; col++) {
+ j = enc->charset2uni[row][col];
+ if (j != 0xfffd)
+ pages[j>>8] = true;
+ }
+ for (j1 = 0; j1 < 0x2000; j1++) {
+ bool all_invalid = true;
+ for (j2 = 0; j2 < 8; j2++) {
+ j = 8*j1+j2;
+ if (enc->uni2charset[j] != 0)
+ all_invalid = false;
+ }
+ if (all_invalid)
+ line[j1] = -1;
+ else
+ line[j1] = 0;
+ }
+ tableno = 0;
+ for (j1 = 0; j1 < 0x2000; j1++) {
+ if (line[j1] >= 0) {
+ if (tableno > 0
+ && ((j1 > 0 && line[j1-1] == tableno-1)
+ || ((tables[tableno-1].maxline >> 5) == (j1 >> 5)
+ && j1 - tables[tableno-1].maxline <= 8))) {
+ line[j1] = tableno-1;
+ tables[tableno-1].maxline = j1;
+ } else {
+ tableno++;
+ line[j1] = tableno-1;
+ tables[tableno-1].minline = tables[tableno-1].maxline = j1;
+ }
+ }
+ }
+ for (t = 0; t < tableno; t++) {
+ tables[t].usecount = 0;
+ j1 = 8*tables[t].minline;
+ j2 = 8*(tables[t].maxline+1);
+ for (j = j1; j < j2; j++)
+ if (enc->uni2charset[j] != 0)
+ tables[t].usecount++;
+ }
+ {
+ p = -1;
+ for (t = 0; t < tableno; t++)
+ if (tables[t].usecount > 1) {
+ p = tables[t].minline >> 5;
+ printf("static const unsigned short %s_page%02x[%d] = {\n", name, p, 8*(tables[t].maxline-tables[t].minline+1));
+ for (j1 = tables[t].minline; j1 <= tables[t].maxline; j1++) {
+ if ((j1 % 0x20) == 0 && j1 > tables[t].minline)
+ printf(" /* 0x%04x */\n", 8*j1);
+ printf(" ");
+ for (j2 = 0; j2 < 8; j2++) {
+ j = 8*j1+j2;
+ printf(" 0x%04x,", enc->uni2charset[j]);
+ }
+ printf(" /*0x%02x-0x%02x*/\n", 8*(j1 % 0x20), 8*(j1 % 0x20)+7);
+ }
+ printf("};\n");
+ }
+ if (p >= 0)
+ printf("\n");
+ }
+ printf("static int\n%s_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n)\n", name);
+ printf("{\n");
+ printf(" if (n >= 2) {\n");
+ printf(" unsigned short c = 0;\n");
+ first = true;
+ for (j1 = 0; j1 < 0x2000;) {
+ t = line[j1];
+ for (j2 = j1; j2 < 0x2000 && line[j2] == t; j2++);
+ if (t >= 0) {
+ if (j1 != tables[t].minline) abort();
+ if (j2 > tables[t].maxline+1) abort();
+ j2 = tables[t].maxline+1;
+ if (first)
+ printf(" ");
+ else
+ printf(" else ");
+ first = false;
+ if (tables[t].usecount == 0) abort();
+ if (tables[t].usecount == 1) {
+ if (j2 != j1+1) abort();
+ for (j = 8*j1; j < 8*j2; j++)
+ if (enc->uni2charset[j] != 0) {
+ printf("if (wc == 0x%04x)\n c = 0x%02x;\n", j, enc->uni2charset[j]);
+ break;
+ }
+ } else {
+ if (j1 == 0) {
+ printf("if (wc < 0x%04x)", 8*j2);
+ } else {
+ printf("if (wc >= 0x%04x && wc < 0x%04x)", 8*j1, 8*j2);
+ }
+ printf("\n c = %s_page%02x[wc", name, j1 >> 5);
+ if (tables[t].minline > 0)
+ printf("-0x%04x", 8*j1);
+ printf("];\n");
+ }
+ }
+ j1 = j2;
+ }
+ printf(" if (c != 0) {\n");
+ printf(" r[0] = (c >> 8); r[1] = (c & 0xff);\n");
+ printf(" return 2;\n");
+ printf(" }\n");
+ printf(" return RET_ILSEQ;\n");
+ printf(" }\n");
+ printf(" return RET_TOOSMALL;\n");
+ printf("}\n");
+}
+
+/*
+ * Outputs the unicode to charset table and function, using a packed array.
+ * (Suitable if the table is sparse.)
+ */
+static void output_uni2charset_sparse (const char* name, Encoding* enc)
+{
+ bool pages[0x100];
+ Block pageblocks[0x100]; int npageblocks;
+ int indx2charset[0x10000];
+ int summary_indx[0x1000];
+ int summary_used[0x1000];
+ int i, row, col, j, p, j1, j2, indx;
+
+ /* Fill pages[0x100]. */
+ for (p = 0; p < 0x100; p++)
+ pages[p] = false;
+ for (row = 0; row < enc->rows; row++)
+ for (col = 0; col < enc->cols; col++) {
+ j = enc->charset2uni[row][col];
+ if (j != 0xfffd)
+ pages[j>>8] = true;
+ }
+
+#if 0
+ for (p = 0; p < 0x100; p++)
+ if (pages[p]) {
+ printf("static const unsigned short %s_page%02x[256] = {\n", name, p);
+ for (j1 = 0; j1 < 32; j1++) {
+ printf(" ");
+ for (j2 = 0; j2 < 8; j2++)
+ printf("0x%04x, ", enc->uni2charset[256*p+8*j1+j2]);
+ printf("/""*0x%02x-0x%02x*""/\n", 8*j1, 8*j1+7);
+ }
+ printf("};\n");
+ }
+ printf("\n");
+#endif
+
+ /* Fill summary_indx[] and summary_used[]. */
+ indx = 0;
+ for (j1 = 0; j1 < 0x1000; j1++) {
+ summary_indx[j1] = indx;
+ summary_used[j1] = 0;
+ for (j2 = 0; j2 < 16; j2++) {
+ j = 16*j1+j2;
+ if (enc->uni2charset[j] != 0) {
+ indx2charset[indx++] = enc->uni2charset[j];
+ summary_used[j1] |= (1 << j2);
+ }
+ }
+ }
+
+ /* Fill npageblocks and pageblocks[]. */
+ npageblocks = 0;
+ for (p = 0; p < 0x100; ) {
+ if (pages[p] && (p == 0 || !pages[p-1])) {
+ pageblocks[npageblocks].start = 16*p;
+ do p++; while (p < 0x100 && pages[p]);
+ j1 = 16*p;
+ while (summary_used[j1-1] == 0) j1--;
+ pageblocks[npageblocks].end = j1;
+ npageblocks++;
+ } else
+ p++;
+ }
+
+ printf("static const unsigned short %s_2charset[%d] = {\n", name, indx);
+ for (i = 0; i < indx; ) {
+ if ((i % 8) == 0) printf(" ");
+ printf(" 0x%04x,", indx2charset[i]);
+ i++;
+ if ((i % 8) == 0 || i == indx) printf("\n");
+ }
+ printf("};\n");
+ printf("\n");
+ for (i = 0; i < npageblocks; i++) {
+ printf("static const Summary16 %s_uni2indx_page%02x[%d] = {\n", name,
+ pageblocks[i].start/16, pageblocks[i].end-pageblocks[i].start);
+ for (j1 = pageblocks[i].start; j1 < pageblocks[i].end; ) {
+ if (((16*j1) % 0x100) == 0) printf(" /""* 0x%04x *""/\n", 16*j1);
+ if ((j1 % 4) == 0) printf(" ");
+ printf(" { %4d, 0x%04x },", summary_indx[j1], summary_used[j1]);
+ j1++;
+ if ((j1 % 4) == 0 || j1 == pageblocks[i].end) printf("\n");
+ }
+ printf("};\n");
+ }
+ printf("\n");
+
+ printf("static int\n");
+ printf("%s_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n)\n", name);
+ printf("{\n");
+ printf(" if (n >= 2) {\n");
+ printf(" const Summary16 *summary = NULL;\n");
+ for (i = 0; i < npageblocks; i++) {
+ printf(" ");
+ if (i > 0)
+ printf("else ");
+ printf("if (wc >= 0x%04x && wc < 0x%04x)\n",
+ 16*pageblocks[i].start, 16*pageblocks[i].end);
+ printf(" summary = &%s_uni2indx_page%02x[(wc>>4)", name,
+ pageblocks[i].start/16);
+ if (pageblocks[i].start > 0)
+ printf("-0x%03x", pageblocks[i].start);
+ printf("];\n");
+ }
+ printf(" if (summary) {\n");
+ printf(" unsigned short used = summary->used;\n");
+ printf(" unsigned int i = wc & 0x0f;\n");
+ printf(" if (used & ((unsigned short) 1 << i)) {\n");
+ printf(" unsigned short c;\n");
+ printf(" /* Keep in `used' only the bits 0..i-1. */\n");
+ printf(" used &= ((unsigned short) 1 << i) - 1;\n");
+ printf(" /* Add `summary->indx' and the number of bits set in `used'. */\n");
+ printf(" used = (used & 0x5555) + ((used & 0xaaaa) >> 1);\n");
+ printf(" used = (used & 0x3333) + ((used & 0xcccc) >> 2);\n");
+ printf(" used = (used & 0x0f0f) + ((used & 0xf0f0) >> 4);\n");
+ printf(" used = (used & 0x00ff) + (used >> 8);\n");
+ printf(" c = %s_2charset[summary->indx + used];\n", name);
+ printf(" r[0] = (c >> 8); r[1] = (c & 0xff);\n");
+ printf(" return 2;\n");
+ printf(" }\n");
+ printf(" }\n");
+ printf(" return RET_ILSEQ;\n");
+ printf(" }\n");
+ printf(" return RET_TOOSMALL;\n");
+ printf("}\n");
+}
+
+/* ISO-2022/EUC specifics */
+
+static int row_byte_normal (int row) { return 0x21+row; }
+static int col_byte_normal (int col) { return 0x21+col; }
+static int byte_row_normal (int byte) { return byte-0x21; }
+static int byte_col_normal (int byte) { return byte-0x21; }
+
+static void do_normal (const char* name)
+{
+ Encoding enc;
+
+ enc.rows = 94;
+ enc.cols = 94;
+ enc.row_byte = row_byte_normal;
+ enc.col_byte = col_byte_normal;
+ enc.byte_row = byte_row_normal;
+ enc.byte_col = byte_col_normal;
+ enc.check_row_expr = "%1$s >= 0x21 && %1$s < 0x7f";
+ enc.check_col_expr = "%1$s >= 0x21 && %1$s < 0x7f";
+ enc.byte_row_expr = "%1$s - 0x21";
+ enc.byte_col_expr = "%1$s - 0x21";
+
+ read_table(&enc);
+ output_charset2uni(name,&enc);
+ invert(&enc); output_uni2charset_sparse(name,&enc);
+}
+
+/* Note: On first sight, the jisx0212_2charset[] table seems to be in order,
+ starting from the charset=0x3021/uni=0x4e02 pair. But it's only mostly in
+ order. There are 75 out-of-order values, scattered all throughout the table.
+ */
+
+static void do_normal_only_charset2uni (const char* name)
+{
+ Encoding enc;
+
+ enc.rows = 94;
+ enc.cols = 94;
+ enc.row_byte = row_byte_normal;
+ enc.col_byte = col_byte_normal;
+ enc.byte_row = byte_row_normal;
+ enc.byte_col = byte_col_normal;
+ enc.check_row_expr = "%1$s >= 0x21 && %1$s < 0x7f";
+ enc.check_col_expr = "%1$s >= 0x21 && %1$s < 0x7f";
+ enc.byte_row_expr = "%1$s - 0x21";
+ enc.byte_col_expr = "%1$s - 0x21";
+
+ read_table(&enc);
+ output_charset2uni(name,&enc);
+}
+
+/* CNS 11643 specifics - trick to put two tables into one */
+
+static int row_byte_cns11643 (int row) {
+ return 0x100 * (row / 94) + (row % 94) + 0x21;
+}
+static int byte_row_cns11643 (int byte) {
+ return (byte >= 0x100 && byte < 0x200 ? byte-0x121 :
+ byte >= 0x200 && byte < 0x300 ? byte-0x221+94 :
+ byte >= 0x300 && byte < 0x400 ? byte-0x321+2*94 :
+ -1);
+}
+
+static void do_cns11643_only_uni2charset (const char* name)
+{
+ Encoding enc;
+ int j, x;
+
+ enc.rows = 3*94;
+ enc.cols = 94;
+ enc.row_byte = row_byte_cns11643;
+ enc.col_byte = col_byte_normal;
+ enc.byte_row = byte_row_cns11643;
+ enc.byte_col = byte_col_normal;
+ enc.check_row_expr = "%1$s >= 0x21 && %1$s < 0x7f";
+ enc.check_col_expr = "%1$s >= 0x21 && %1$s < 0x7f";
+ enc.byte_row_expr = "%1$s - 0x21";
+ enc.byte_col_expr = "%1$s - 0x21";
+
+ read_table(&enc);
+ invert(&enc);
+ /* Move the 2 plane bits into the unused bits 15 and 7. */
+ for (j = 0; j < 0x10000; j++) {
+ x = enc.uni2charset[j];
+ if (x != 0) {
+ if (x & 0x8080) abort();
+ switch (x >> 16) {
+ case 0: /* plane 1 */ x = (x & 0xffff) | 0x0000; break;
+ case 1: /* plane 2 */ x = (x & 0xffff) | 0x0080; break;
+ case 2: /* plane 3 */ x = (x & 0xffff) | 0x8000; break;
+ default: abort();
+ }
+ enc.uni2charset[j] = x;
+ }
+ }
+ output_uni2charset_sparse(name,&enc);
+}
+
+/* GBK specifics */
+
+static int row_byte_gbk1 (int row) {
+ return 0x81+row;
+}
+static int col_byte_gbk1 (int col) {
+ return (col >= 0x3f ? 0x41 : 0x40) + col;
+}
+static int byte_row_gbk1 (int byte) {
+ if (byte >= 0x81 && byte < 0xff)
+ return byte-0x81;
+ else
+ return -1;
+}
+static int byte_col_gbk1 (int byte) {
+ if (byte >= 0x40 && byte < 0x7f)
+ return byte-0x40;
+ else if (byte >= 0x80 && byte < 0xff)
+ return byte-0x41;
+ else
+ return -1;
+}
+
+static void do_gbk1 (const char* name)
+{
+ Encoding enc;
+
+ enc.rows = 126;
+ enc.cols = 190;
+ enc.row_byte = row_byte_gbk1;
+ enc.col_byte = col_byte_gbk1;
+ enc.byte_row = byte_row_gbk1;
+ enc.byte_col = byte_col_gbk1;
+ enc.check_row_expr = "%1$s >= 0x81 && %1$s < 0xff";
+ enc.check_col_expr = "(%1$s >= 0x40 && %1$s < 0x7f) || (%1$s >= 0x80 && %1$s < 0xff)";
+ enc.byte_row_expr = "%1$s - 0x81";
+ enc.byte_col_expr = "%1$s - (%1$s >= 0x80 ? 0x41 : 0x40)";
+
+ read_table(&enc);
+ output_charset2uni(name,&enc);
+ invert(&enc); output_uni2charset_dense(name,&enc);
+}
+
+static void do_gbk1_only_charset2uni (const char* name)
+{
+ Encoding enc;
+
+ enc.rows = 126;
+ enc.cols = 190;
+ enc.row_byte = row_byte_gbk1;
+ enc.col_byte = col_byte_gbk1;
+ enc.byte_row = byte_row_gbk1;
+ enc.byte_col = byte_col_gbk1;
+ enc.check_row_expr = "%1$s >= 0x81 && %1$s < 0xff";
+ enc.check_col_expr = "(%1$s >= 0x40 && %1$s < 0x7f) || (%1$s >= 0x80 && %1$s < 0xff)";
+ enc.byte_row_expr = "%1$s - 0x81";
+ enc.byte_col_expr = "%1$s - (%1$s >= 0x80 ? 0x41 : 0x40)";
+
+ read_table(&enc);
+ output_charset2uni(name,&enc);
+}
+
+static int row_byte_gbk2 (int row) {
+ return 0x81+row;
+}
+static int col_byte_gbk2 (int col) {
+ return (col >= 0x3f ? 0x41 : 0x40) + col;
+}
+static int byte_row_gbk2 (int byte) {
+ if (byte >= 0x81 && byte < 0xff)
+ return byte-0x81;
+ else
+ return -1;
+}
+static int byte_col_gbk2 (int byte) {
+ if (byte >= 0x40 && byte < 0x7f)
+ return byte-0x40;
+ else if (byte >= 0x80 && byte < 0xa1)
+ return byte-0x41;
+ else
+ return -1;
+}
+
+static void do_gbk2_only_charset2uni (const char* name)
+{
+ Encoding enc;
+
+ enc.rows = 126;
+ enc.cols = 96;
+ enc.row_byte = row_byte_gbk2;
+ enc.col_byte = col_byte_gbk2;
+ enc.byte_row = byte_row_gbk2;
+ enc.byte_col = byte_col_gbk2;
+ enc.check_row_expr = "%1$s >= 0x81 && %1$s < 0xff";
+ enc.check_col_expr = "(%1$s >= 0x40 && %1$s < 0x7f) || (%1$s >= 0x80 && %1$s < 0xa1)";
+ enc.byte_row_expr = "%1$s - 0x81";
+ enc.byte_col_expr = "%1$s - (%1$s >= 0x80 ? 0x41 : 0x40)";
+
+ read_table(&enc);
+ output_charset2uni(name,&enc);
+}
+
+static void do_gbk1_only_uni2charset (const char* name)
+{
+ Encoding enc;
+
+ enc.rows = 126;
+ enc.cols = 190;
+ enc.row_byte = row_byte_gbk1;
+ enc.col_byte = col_byte_gbk1;
+ enc.byte_row = byte_row_gbk1;
+ enc.byte_col = byte_col_gbk1;
+ enc.check_row_expr = "%1$s >= 0x81 && %1$s < 0xff";
+ enc.check_col_expr = "(%1$s >= 0x40 && %1$s < 0x7f) || (%1$s >= 0x80 && %1$s < 0xff)";
+ enc.byte_row_expr = "%1$s - 0x81";
+ enc.byte_col_expr = "%1$s - (%1$s >= 0x80 ? 0x41 : 0x40)";
+
+ read_table(&enc);
+ invert(&enc); output_uni2charset_sparse(name,&enc);
+}
+
+/* KSC 5601 specifics */
+
+/*
+ * Reads the charset2uni table from standard input.
+ */
+static void read_table_ksc5601 (Encoding* enc)
+{
+ int row, col, i, i1, i2, c, j;
+
+ enc->charset2uni = (int**) malloc(enc->rows*sizeof(int*));
+ for (row = 0; row < enc->rows; row++)
+ enc->charset2uni[row] = (int*) malloc(enc->cols*sizeof(int));
+
+ for (row = 0; row < enc->rows; row++)
+ for (col = 0; col < enc->cols; col++)
+ enc->charset2uni[row][col] = 0xfffd;
+
+ c = getc(stdin);
+ ungetc(c,stdin);
+ if (c == '#') {
+ /* Read a unicode.org style .TXT file. */
+ for (;;) {
+ c = getc(stdin);
+ if (c == EOF)
+ break;
+ if (c == '\n' || c == ' ' || c == '\t')
+ continue;
+ if (c == '#') {
+ do { c = getc(stdin); } while (!(c == EOF || c == '\n'));
+ continue;
+ }
+ ungetc(c,stdin);
+ if (scanf("0x%x", &j) != 1)
+ exit(1);
+ i1 = j >> 8;
+ i2 = j & 0xff;
+ if (scanf(" 0x%x", &j) != 1)
+ exit(1);
+ /* Take only the range covered by KS C 5601.1987-0 = KS C 5601.1989-0
+ = KS X 1001.1992, ignore the rest. */
+ if (!(i1 >= 128+33 && i1 < 128+127 && i2 >= 128+33 && i2 < 128+127))
+ continue; /* KSC5601 specific */
+ i1 &= 0x7f; /* KSC5601 specific */
+ i2 &= 0x7f; /* KSC5601 specific */
+ row = enc->byte_row(i1);
+ col = enc->byte_col(i2);
+ if (row < 0 || col < 0) {
+ fprintf(stderr, "lost entry for %02x %02x\n", i1, i2);
+ exit(1);
+ }
+ enc->charset2uni[row][col] = j;
+ }
+ } else {
+ /* Read a table of hexadecimal Unicode values. */
+ for (i1 = 33; i1 < 127; i1++)
+ for (i2 = 33; i2 < 127; i2++) {
+ i = scanf("%x", &j);
+ if (i == EOF)
+ goto read_done;
+ if (i != 1)
+ exit(1);
+ if (j < 0 || j == 0xffff)
+ j = 0xfffd;
+ if (j != 0xfffd) {
+ if (enc->byte_row(i1) < 0 || enc->byte_col(i2) < 0) {
+ fprintf(stderr, "lost entry at %02x %02x\n", i1, i2);
+ exit (1);
+ }
+ enc->charset2uni[enc->byte_row(i1)][enc->byte_col(i2)] = j;
+ }
+ }
+ read_done: ;
+ }
+}
+
+static void do_ksc5601 (const char* name)
+{
+ Encoding enc;
+
+ enc.rows = 94;
+ enc.cols = 94;
+ enc.row_byte = row_byte_normal;
+ enc.col_byte = col_byte_normal;
+ enc.byte_row = byte_row_normal;
+ enc.byte_col = byte_col_normal;
+ enc.check_row_expr = "%1$s >= 0x21 && %1$s < 0x7f";
+ enc.check_col_expr = "%1$s >= 0x21 && %1$s < 0x7f";
+ enc.byte_row_expr = "%1$s - 0x21";
+ enc.byte_col_expr = "%1$s - 0x21";
+
+ read_table_ksc5601(&enc);
+ output_charset2uni(name,&enc);
+ invert(&enc); output_uni2charset_sparse(name,&enc);
+}
+
+/* Big5 specifics */
+
+static int row_byte_big5 (int row) {
+ return 0xa1+row;
+}
+static int col_byte_big5 (int col) {
+ return (col >= 0x3f ? 0x62 : 0x40) + col;
+}
+static int byte_row_big5 (int byte) {
+ if (byte >= 0xa1 && byte < 0xff)
+ return byte-0xa1;
+ else
+ return -1;
+}
+static int byte_col_big5 (int byte) {
+ if (byte >= 0x40 && byte < 0x7f)
+ return byte-0x40;
+ else if (byte >= 0xa1 && byte < 0xff)
+ return byte-0x62;
+ else
+ return -1;
+}
+
+static void do_big5 (const char* name)
+{
+ Encoding enc;
+
+ enc.rows = 94;
+ enc.cols = 157;
+ enc.row_byte = row_byte_big5;
+ enc.col_byte = col_byte_big5;
+ enc.byte_row = byte_row_big5;
+ enc.byte_col = byte_col_big5;
+ enc.check_row_expr = "%1$s >= 0xa1 && %1$s < 0xff";
+ enc.check_col_expr = "(%1$s >= 0x40 && %1$s < 0x7f) || (%1$s >= 0xa1 && %1$s < 0xff)";
+ enc.byte_row_expr = "%1$s - 0xa1";
+ enc.byte_col_expr = "%1$s - (%1$s >= 0xa1 ? 0x62 : 0x40)";
+
+ read_table(&enc);
+ output_charset2uni(name,&enc);
+ invert(&enc); output_uni2charset_sparse(name,&enc);
+}
+
+/* Big5-HKSCS specifics */
+
+static int row_byte_big5hkscs (int row) {
+ return 0x81+row;
+}
+static int col_byte_big5hkscs (int col) {
+ return (col >= 0x3f ? 0x62 : 0x40) + col;
+}
+static int byte_row_big5hkscs (int byte) {
+ if (byte >= 0x81 && byte < 0xff)
+ return byte-0x81;
+ else
+ return -1;
+}
+static int byte_col_big5hkscs (int byte) {
+ if (byte >= 0x40 && byte < 0x7f)
+ return byte-0x40;
+ else if (byte >= 0xa1 && byte < 0xff)
+ return byte-0x62;
+ else
+ return -1;
+}
+
+static void do_big5hkscs (const char* name)
+{
+ Encoding enc;
+
+ enc.rows = 126;
+ enc.cols = 157;
+ enc.row_byte = row_byte_big5hkscs;
+ enc.col_byte = col_byte_big5hkscs;
+ enc.byte_row = byte_row_big5hkscs;
+ enc.byte_col = byte_col_big5hkscs;
+ enc.check_row_expr = "%1$s >= 0x81 && %1$s < 0xff";
+ enc.check_col_expr = "(%1$s >= 0x40 && %1$s < 0x7f) || (%1$s >= 0xa1 && %1$s < 0xff)";
+ enc.byte_row_expr = "%1$s - 0x81";
+ enc.byte_col_expr = "%1$s - (%1$s >= 0xa1 ? 0x62 : 0x40)";
+
+ read_table(&enc);
+ output_charset2uni(name,&enc);
+ invert(&enc); output_uni2charset_sparse(name,&enc);
+}
+
+/* Johab Hangul specifics */
+
+static int row_byte_johab_hangul (int row) {
+ return 0x84+row;
+}
+static int col_byte_johab_hangul (int col) {
+ return (col >= 0x3e ? 0x43 : 0x41) + col;
+}
+static int byte_row_johab_hangul (int byte) {
+ if (byte >= 0x84 && byte < 0xd4)
+ return byte-0x84;
+ else
+ return -1;
+}
+static int byte_col_johab_hangul (int byte) {
+ if (byte >= 0x41 && byte < 0x7f)
+ return byte-0x41;
+ else if (byte >= 0x81 && byte < 0xff)
+ return byte-0x43;
+ else
+ return -1;
+}
+
+static void do_johab_hangul (const char* name)
+{
+ Encoding enc;
+
+ enc.rows = 80;
+ enc.cols = 188;
+ enc.row_byte = row_byte_johab_hangul;
+ enc.col_byte = col_byte_johab_hangul;
+ enc.byte_row = byte_row_johab_hangul;
+ enc.byte_col = byte_col_johab_hangul;
+ enc.check_row_expr = "%1$s >= 0x84 && %1$s < 0xd4";
+ enc.check_col_expr = "(%1$s >= 0x41 && %1$s < 0x7f) || (%1$s >= 0x81 && %1$s < 0xff)";
+ enc.byte_row_expr = "%1$s - 0x84";
+ enc.byte_col_expr = "%1$s - (%1$s >= 0x81 ? 0x43 : 0x41)";
+
+ read_table(&enc);
+ output_charset2uni(name,&enc);
+ invert(&enc); output_uni2charset_dense(name,&enc);
+}
+
+/* SJIS specifics */
+
+static int row_byte_sjis (int row) {
+ return (row >= 0x1f ? 0xc1 : 0x81) + row;
+}
+static int col_byte_sjis (int col) {
+ return (col >= 0x3f ? 0x41 : 0x40) + col;
+}
+static int byte_row_sjis (int byte) {
+ if (byte >= 0x81 && byte < 0xa0)
+ return byte-0x81;
+ else if (byte >= 0xe0)
+ return byte-0xc1;
+ else
+ return -1;
+}
+static int byte_col_sjis (int byte) {
+ if (byte >= 0x40 && byte < 0x7f)
+ return byte-0x40;
+ else if (byte >= 0x80 && byte < 0xfd)
+ return byte-0x41;
+ else
+ return -1;
+}
+
+static void do_sjis (const char* name)
+{
+ Encoding enc;
+
+ enc.rows = 94;
+ enc.cols = 188;
+ enc.row_byte = row_byte_sjis;
+ enc.col_byte = col_byte_sjis;
+ enc.byte_row = byte_row_sjis;
+ enc.byte_col = byte_col_sjis;
+ enc.check_row_expr = "(%1$s >= 0x81 && %1$s < 0xa0) || (%1$s >= 0xe0)";
+ enc.check_col_expr = "(%1$s >= 0x40 && %1$s < 0x7f) || (%1$s >= 0x80 && %1$s < 0xfd)";
+ enc.byte_row_expr = "%1$s - (%1$s >= 0xe0 ? 0xc1 : 0x81)";
+ enc.byte_col_expr = "%1$s - (%1$s >= 0x80 ? 0x41 : 0x40)";
+
+ read_table(&enc);
+ output_charset2uni(name,&enc);
+ invert(&enc); output_uni2charset_sparse(name,&enc);
+}
+
+/* Main program */
+
+int main (int argc, char *argv[])
+{
+ const char* charsetname;
+ const char* name;
+
+ if (argc != 3)
+ exit(1);
+ charsetname = argv[1];
+ name = argv[2];
+
+ output_title(charsetname);
+
+ if (!strcmp(name,"gb2312") || !strcmp(name,"gb12345ext")
+ || !strcmp(name,"jisx0208") || !strcmp(name,"jisx0212"))
+ do_normal(name);
+ else if (!strcmp(name,"cns11643_1") || !strcmp(name,"cns11643_2")
+ || !strcmp(name,"cns11643_3"))
+ do_normal_only_charset2uni(name);
+ else if (!strcmp(name,"cns11643_inv"))
+ do_cns11643_only_uni2charset(name);
+ else if (!strcmp(name,"gbkext1"))
+ do_gbk1_only_charset2uni(name);
+ else if (!strcmp(name,"gbkext2"))
+ do_gbk2_only_charset2uni(name);
+ else if (!strcmp(name,"gbkext_inv"))
+ do_gbk1_only_uni2charset(name);
+ else if (!strcmp(name,"cp936ext"))
+ do_gbk1(name);
+ else if (!strcmp(name,"ksc5601"))
+ do_ksc5601(name);
+ else if (!strcmp(name,"big5") || !strcmp(name,"cp950ext"))
+ do_big5(name);
+ else if (!strcmp(name,"big5hkscs"))
+ do_big5hkscs(name);
+ else if (!strcmp(name,"johab_hangul"))
+ do_johab_hangul(name);
+ else if (!strcmp(name,"cp932ext"))
+ do_sjis(name);
+ else
+ exit(1);
+
+ return 0;
+}
diff --git a/libX11/src/xlibi18n/lcUniConv/cp1133.h b/libX11/src/xlibi18n/lcUniConv/cp1133.h
index 01e77392e..cf79b7aa1 100644
--- a/libX11/src/xlibi18n/lcUniConv/cp1133.h
+++ b/libX11/src/xlibi18n/lcUniConv/cp1133.h
@@ -1,91 +1,91 @@
-
-/*
- * IBM-CP1133
- */
-
-static const unsigned short cp1133_2uni_1[64] = {
- /* 0xa0 */
- 0x00a0, 0x0e81, 0x0e82, 0x0e84, 0x0e87, 0x0e88, 0x0eaa, 0x0e8a,
- 0x0e8d, 0x0e94, 0x0e95, 0x0e96, 0x0e97, 0x0e99, 0x0e9a, 0x0e9b,
- /* 0xb0 */
- 0x0e9c, 0x0e9d, 0x0e9e, 0x0e9f, 0x0ea1, 0x0ea2, 0x0ea3, 0x0ea5,
- 0x0ea7, 0x0eab, 0x0ead, 0x0eae, 0xfffd, 0xfffd, 0xfffd, 0x0eaf,
- /* 0xc0 */
- 0x0eb0, 0x0eb2, 0x0eb3, 0x0eb4, 0x0eb5, 0x0eb6, 0x0eb7, 0x0eb8,
- 0x0eb9, 0x0ebc, 0x0eb1, 0x0ebb, 0x0ebd, 0xfffd, 0xfffd, 0xfffd,
- /* 0xd0 */
- 0x0ec0, 0x0ec1, 0x0ec2, 0x0ec3, 0x0ec4, 0x0ec8, 0x0ec9, 0x0eca,
- 0x0ecb, 0x0ecc, 0x0ecd, 0x0ec6, 0xfffd, 0x0edc, 0x0edd, 0x20ad,
-};
-static const unsigned short cp1133_2uni_2[16] = {
- /* 0xf0 */
- 0x0ed0, 0x0ed1, 0x0ed2, 0x0ed3, 0x0ed4, 0x0ed5, 0x0ed6, 0x0ed7,
- 0x0ed8, 0x0ed9, 0xfffd, 0xfffd, 0x00a2, 0x00ac, 0x00a6, 0xfffd,
-};
-
-static int
-cp1133_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n)
-{
- unsigned char c = *s;
- if (c < 0xa0) {
- *pwc = (ucs4_t) c;
- return 1;
- }
- else if (c < 0xe0) {
- unsigned short wc = cp1133_2uni_1[c-0xa0];
- if (wc != 0xfffd) {
- *pwc = (ucs4_t) wc;
- return 1;
- }
- }
- else if (c < 0xf0) {
- }
- else {
- unsigned short wc = cp1133_2uni_2[c-0xf0];
- if (wc != 0xfffd) {
- *pwc = (ucs4_t) wc;
- return 1;
- }
- }
- return RET_ILSEQ;
-}
-
-static const unsigned char cp1133_page00[16] = {
- 0xa0, 0x00, 0xfc, 0x00, 0x00, 0x00, 0xfe, 0x00, /* 0xa0-0xa7 */
- 0x00, 0x00, 0x00, 0x00, 0xfd, 0x00, 0x00, 0x00, /* 0xa8-0xaf */
-};
-static const unsigned char cp1133_page0e[96] = {
- 0x00, 0xa1, 0xa2, 0x00, 0xa3, 0x00, 0x00, 0xa4, /* 0x80-0x87 */
- 0xa5, 0x00, 0xa7, 0x00, 0x00, 0xa8, 0x00, 0x00, /* 0x88-0x8f */
- 0x00, 0x00, 0x00, 0x00, 0xa9, 0xaa, 0xab, 0xac, /* 0x90-0x97 */
- 0x00, 0xad, 0xae, 0xaf, 0xb0, 0xb1, 0xb2, 0xb3, /* 0x98-0x9f */
- 0x00, 0xb4, 0xb5, 0xb6, 0x00, 0xb7, 0x00, 0xb8, /* 0xa0-0xa7 */
- 0x00, 0x00, 0xa6, 0xb9, 0x00, 0xba, 0xbb, 0xbf, /* 0xa8-0xaf */
- 0xc0, 0xca, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, /* 0xb0-0xb7 */
- 0xc7, 0xc8, 0x00, 0xcb, 0xc9, 0xcc, 0x00, 0x00, /* 0xb8-0xbf */
- 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0x00, 0xdb, 0x00, /* 0xc0-0xc7 */
- 0xd5, 0xd6, 0xd7, 0xd8, 0xd9, 0xda, 0x00, 0x00, /* 0xc8-0xcf */
- 0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, /* 0xd0-0xd7 */
- 0xf8, 0xf9, 0x00, 0x00, 0xdd, 0xde, 0x00, 0x00, /* 0xd8-0xdf */
-};
-
-static int
-cp1133_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n)
-{
- unsigned char c = 0;
- if (wc < 0x00a0) {
- *r = wc;
- return 1;
- }
- else if (wc >= 0x00a0 && wc < 0x00b0)
- c = cp1133_page00[wc-0x00a0];
- else if (wc >= 0x0e80 && wc < 0x0ee0)
- c = cp1133_page0e[wc-0x0e80];
- else if (wc == 0x20ad)
- c = 0xdf;
- if (c != 0) {
- *r = c;
- return 1;
- }
- return RET_ILSEQ;
-}
+
+/*
+ * IBM-CP1133
+ */
+
+static const unsigned short cp1133_2uni_1[64] = {
+ /* 0xa0 */
+ 0x00a0, 0x0e81, 0x0e82, 0x0e84, 0x0e87, 0x0e88, 0x0eaa, 0x0e8a,
+ 0x0e8d, 0x0e94, 0x0e95, 0x0e96, 0x0e97, 0x0e99, 0x0e9a, 0x0e9b,
+ /* 0xb0 */
+ 0x0e9c, 0x0e9d, 0x0e9e, 0x0e9f, 0x0ea1, 0x0ea2, 0x0ea3, 0x0ea5,
+ 0x0ea7, 0x0eab, 0x0ead, 0x0eae, 0xfffd, 0xfffd, 0xfffd, 0x0eaf,
+ /* 0xc0 */
+ 0x0eb0, 0x0eb2, 0x0eb3, 0x0eb4, 0x0eb5, 0x0eb6, 0x0eb7, 0x0eb8,
+ 0x0eb9, 0x0ebc, 0x0eb1, 0x0ebb, 0x0ebd, 0xfffd, 0xfffd, 0xfffd,
+ /* 0xd0 */
+ 0x0ec0, 0x0ec1, 0x0ec2, 0x0ec3, 0x0ec4, 0x0ec8, 0x0ec9, 0x0eca,
+ 0x0ecb, 0x0ecc, 0x0ecd, 0x0ec6, 0xfffd, 0x0edc, 0x0edd, 0x20ad,
+};
+static const unsigned short cp1133_2uni_2[16] = {
+ /* 0xf0 */
+ 0x0ed0, 0x0ed1, 0x0ed2, 0x0ed3, 0x0ed4, 0x0ed5, 0x0ed6, 0x0ed7,
+ 0x0ed8, 0x0ed9, 0xfffd, 0xfffd, 0x00a2, 0x00ac, 0x00a6, 0xfffd,
+};
+
+static int
+cp1133_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n)
+{
+ unsigned char c = *s;
+ if (c < 0xa0) {
+ *pwc = (ucs4_t) c;
+ return 1;
+ }
+ else if (c < 0xe0) {
+ unsigned short wc = cp1133_2uni_1[c-0xa0];
+ if (wc != 0xfffd) {
+ *pwc = (ucs4_t) wc;
+ return 1;
+ }
+ }
+ else if (c < 0xf0) {
+ }
+ else {
+ unsigned short wc = cp1133_2uni_2[c-0xf0];
+ if (wc != 0xfffd) {
+ *pwc = (ucs4_t) wc;
+ return 1;
+ }
+ }
+ return RET_ILSEQ;
+}
+
+static const unsigned char cp1133_page00[16] = {
+ 0xa0, 0x00, 0xfc, 0x00, 0x00, 0x00, 0xfe, 0x00, /* 0xa0-0xa7 */
+ 0x00, 0x00, 0x00, 0x00, 0xfd, 0x00, 0x00, 0x00, /* 0xa8-0xaf */
+};
+static const unsigned char cp1133_page0e[96] = {
+ 0x00, 0xa1, 0xa2, 0x00, 0xa3, 0x00, 0x00, 0xa4, /* 0x80-0x87 */
+ 0xa5, 0x00, 0xa7, 0x00, 0x00, 0xa8, 0x00, 0x00, /* 0x88-0x8f */
+ 0x00, 0x00, 0x00, 0x00, 0xa9, 0xaa, 0xab, 0xac, /* 0x90-0x97 */
+ 0x00, 0xad, 0xae, 0xaf, 0xb0, 0xb1, 0xb2, 0xb3, /* 0x98-0x9f */
+ 0x00, 0xb4, 0xb5, 0xb6, 0x00, 0xb7, 0x00, 0xb8, /* 0xa0-0xa7 */
+ 0x00, 0x00, 0xa6, 0xb9, 0x00, 0xba, 0xbb, 0xbf, /* 0xa8-0xaf */
+ 0xc0, 0xca, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, /* 0xb0-0xb7 */
+ 0xc7, 0xc8, 0x00, 0xcb, 0xc9, 0xcc, 0x00, 0x00, /* 0xb8-0xbf */
+ 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0x00, 0xdb, 0x00, /* 0xc0-0xc7 */
+ 0xd5, 0xd6, 0xd7, 0xd8, 0xd9, 0xda, 0x00, 0x00, /* 0xc8-0xcf */
+ 0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, /* 0xd0-0xd7 */
+ 0xf8, 0xf9, 0x00, 0x00, 0xdd, 0xde, 0x00, 0x00, /* 0xd8-0xdf */
+};
+
+static int
+cp1133_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n)
+{
+ unsigned char c = 0;
+ if (wc < 0x00a0) {
+ *r = wc;
+ return 1;
+ }
+ else if (wc >= 0x00a0 && wc < 0x00b0)
+ c = cp1133_page00[wc-0x00a0];
+ else if (wc >= 0x0e80 && wc < 0x0ee0)
+ c = cp1133_page0e[wc-0x0e80];
+ else if (wc == 0x20ad)
+ c = 0xdf;
+ if (c != 0) {
+ *r = c;
+ return 1;
+ }
+ return RET_ILSEQ;
+}
diff --git a/libX11/src/xlibi18n/lcUniConv/cp1251.h b/libX11/src/xlibi18n/lcUniConv/cp1251.h
index dbb8ccb16..8c0847a0c 100644
--- a/libX11/src/xlibi18n/lcUniConv/cp1251.h
+++ b/libX11/src/xlibi18n/lcUniConv/cp1251.h
@@ -1,112 +1,112 @@
-
-/*
- * CP1251
- */
-
-static const unsigned short cp1251_2uni[128] = {
- /* 0x80 */
- 0x0402, 0x0403, 0x201a, 0x0453, 0x201e, 0x2026, 0x2020, 0x2021,
- 0x20ac, 0x2030, 0x0409, 0x2039, 0x040a, 0x040c, 0x040b, 0x040f,
- /* 0x90 */
- 0x0452, 0x2018, 0x2019, 0x201c, 0x201d, 0x2022, 0x2013, 0x2014,
- 0xfffd, 0x2122, 0x0459, 0x203a, 0x045a, 0x045c, 0x045b, 0x045f,
- /* 0xa0 */
- 0x00a0, 0x040e, 0x045e, 0x0408, 0x00a4, 0x0490, 0x00a6, 0x00a7,
- 0x0401, 0x00a9, 0x0404, 0x00ab, 0x00ac, 0x00ad, 0x00ae, 0x0407,
- /* 0xb0 */
- 0x00b0, 0x00b1, 0x0406, 0x0456, 0x0491, 0x00b5, 0x00b6, 0x00b7,
- 0x0451, 0x2116, 0x0454, 0x00bb, 0x0458, 0x0405, 0x0455, 0x0457,
- /* 0xc0 */
- 0x0410, 0x0411, 0x0412, 0x0413, 0x0414, 0x0415, 0x0416, 0x0417,
- 0x0418, 0x0419, 0x041a, 0x041b, 0x041c, 0x041d, 0x041e, 0x041f,
- /* 0xd0 */
- 0x0420, 0x0421, 0x0422, 0x0423, 0x0424, 0x0425, 0x0426, 0x0427,
- 0x0428, 0x0429, 0x042a, 0x042b, 0x042c, 0x042d, 0x042e, 0x042f,
- /* 0xe0 */
- 0x0430, 0x0431, 0x0432, 0x0433, 0x0434, 0x0435, 0x0436, 0x0437,
- 0x0438, 0x0439, 0x043a, 0x043b, 0x043c, 0x043d, 0x043e, 0x043f,
- /* 0xf0 */
- 0x0440, 0x0441, 0x0442, 0x0443, 0x0444, 0x0445, 0x0446, 0x0447,
- 0x0448, 0x0449, 0x044a, 0x044b, 0x044c, 0x044d, 0x044e, 0x044f,
-};
-
-static int
-cp1251_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n)
-{
- unsigned char c = *s;
- if (c < 0x80) {
- *pwc = (ucs4_t) c;
- return 1;
- }
- else {
- unsigned short wc = cp1251_2uni[c-0x80];
- if (wc != 0xfffd) {
- *pwc = (ucs4_t) wc;
- return 1;
- }
- }
- return RET_ILSEQ;
-}
-
-static const unsigned char cp1251_page00[32] = {
- 0xa0, 0x00, 0x00, 0x00, 0xa4, 0x00, 0xa6, 0xa7, /* 0xa0-0xa7 */
- 0x00, 0xa9, 0x00, 0xab, 0xac, 0xad, 0xae, 0x00, /* 0xa8-0xaf */
- 0xb0, 0xb1, 0x00, 0x00, 0x00, 0xb5, 0xb6, 0xb7, /* 0xb0-0xb7 */
- 0x00, 0x00, 0x00, 0xbb, 0x00, 0x00, 0x00, 0x00, /* 0xb8-0xbf */
-};
-static const unsigned char cp1251_page04[152] = {
- 0x00, 0xa8, 0x80, 0x81, 0xaa, 0xbd, 0xb2, 0xaf, /* 0x00-0x07 */
- 0xa3, 0x8a, 0x8c, 0x8e, 0x8d, 0x00, 0xa1, 0x8f, /* 0x08-0x0f */
- 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, /* 0x10-0x17 */
- 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, /* 0x18-0x1f */
- 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, /* 0x20-0x27 */
- 0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, 0xde, 0xdf, /* 0x28-0x2f */
- 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, /* 0x30-0x37 */
- 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef, /* 0x38-0x3f */
- 0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, /* 0x40-0x47 */
- 0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, 0xfe, 0xff, /* 0x48-0x4f */
- 0x00, 0xb8, 0x90, 0x83, 0xba, 0xbe, 0xb3, 0xbf, /* 0x50-0x57 */
- 0xbc, 0x9a, 0x9c, 0x9e, 0x9d, 0x00, 0xa2, 0x9f, /* 0x58-0x5f */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x60-0x67 */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x68-0x6f */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x70-0x77 */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x78-0x7f */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x80-0x87 */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x88-0x8f */
- 0xa5, 0xb4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x90-0x97 */
-};
-static const unsigned char cp1251_page20[48] = {
- 0x00, 0x00, 0x00, 0x96, 0x97, 0x00, 0x00, 0x00, /* 0x10-0x17 */
- 0x91, 0x92, 0x82, 0x00, 0x93, 0x94, 0x84, 0x00, /* 0x18-0x1f */
- 0x86, 0x87, 0x95, 0x00, 0x00, 0x00, 0x85, 0x00, /* 0x20-0x27 */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x28-0x2f */
- 0x89, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x30-0x37 */
- 0x00, 0x8b, 0x9b, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x38-0x3f */
-};
-
-static int
-cp1251_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n)
-{
- unsigned char c = 0;
- if (wc < 0x0080) {
- *r = wc;
- return 1;
- }
- else if (wc >= 0x00a0 && wc < 0x00c0)
- c = cp1251_page00[wc-0x00a0];
- else if (wc >= 0x0400 && wc < 0x0498)
- c = cp1251_page04[wc-0x0400];
- else if (wc >= 0x2010 && wc < 0x2040)
- c = cp1251_page20[wc-0x2010];
- else if (wc == 0x20ac)
- c = 0x88;
- else if (wc == 0x2116)
- c = 0xb9;
- else if (wc == 0x2122)
- c = 0x99;
- if (c != 0) {
- *r = c;
- return 1;
- }
- return RET_ILSEQ;
-}
+
+/*
+ * CP1251
+ */
+
+static const unsigned short cp1251_2uni[128] = {
+ /* 0x80 */
+ 0x0402, 0x0403, 0x201a, 0x0453, 0x201e, 0x2026, 0x2020, 0x2021,
+ 0x20ac, 0x2030, 0x0409, 0x2039, 0x040a, 0x040c, 0x040b, 0x040f,
+ /* 0x90 */
+ 0x0452, 0x2018, 0x2019, 0x201c, 0x201d, 0x2022, 0x2013, 0x2014,
+ 0xfffd, 0x2122, 0x0459, 0x203a, 0x045a, 0x045c, 0x045b, 0x045f,
+ /* 0xa0 */
+ 0x00a0, 0x040e, 0x045e, 0x0408, 0x00a4, 0x0490, 0x00a6, 0x00a7,
+ 0x0401, 0x00a9, 0x0404, 0x00ab, 0x00ac, 0x00ad, 0x00ae, 0x0407,
+ /* 0xb0 */
+ 0x00b0, 0x00b1, 0x0406, 0x0456, 0x0491, 0x00b5, 0x00b6, 0x00b7,
+ 0x0451, 0x2116, 0x0454, 0x00bb, 0x0458, 0x0405, 0x0455, 0x0457,
+ /* 0xc0 */
+ 0x0410, 0x0411, 0x0412, 0x0413, 0x0414, 0x0415, 0x0416, 0x0417,
+ 0x0418, 0x0419, 0x041a, 0x041b, 0x041c, 0x041d, 0x041e, 0x041f,
+ /* 0xd0 */
+ 0x0420, 0x0421, 0x0422, 0x0423, 0x0424, 0x0425, 0x0426, 0x0427,
+ 0x0428, 0x0429, 0x042a, 0x042b, 0x042c, 0x042d, 0x042e, 0x042f,
+ /* 0xe0 */
+ 0x0430, 0x0431, 0x0432, 0x0433, 0x0434, 0x0435, 0x0436, 0x0437,
+ 0x0438, 0x0439, 0x043a, 0x043b, 0x043c, 0x043d, 0x043e, 0x043f,
+ /* 0xf0 */
+ 0x0440, 0x0441, 0x0442, 0x0443, 0x0444, 0x0445, 0x0446, 0x0447,
+ 0x0448, 0x0449, 0x044a, 0x044b, 0x044c, 0x044d, 0x044e, 0x044f,
+};
+
+static int
+cp1251_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n)
+{
+ unsigned char c = *s;
+ if (c < 0x80) {
+ *pwc = (ucs4_t) c;
+ return 1;
+ }
+ else {
+ unsigned short wc = cp1251_2uni[c-0x80];
+ if (wc != 0xfffd) {
+ *pwc = (ucs4_t) wc;
+ return 1;
+ }
+ }
+ return RET_ILSEQ;
+}
+
+static const unsigned char cp1251_page00[32] = {
+ 0xa0, 0x00, 0x00, 0x00, 0xa4, 0x00, 0xa6, 0xa7, /* 0xa0-0xa7 */
+ 0x00, 0xa9, 0x00, 0xab, 0xac, 0xad, 0xae, 0x00, /* 0xa8-0xaf */
+ 0xb0, 0xb1, 0x00, 0x00, 0x00, 0xb5, 0xb6, 0xb7, /* 0xb0-0xb7 */
+ 0x00, 0x00, 0x00, 0xbb, 0x00, 0x00, 0x00, 0x00, /* 0xb8-0xbf */
+};
+static const unsigned char cp1251_page04[152] = {
+ 0x00, 0xa8, 0x80, 0x81, 0xaa, 0xbd, 0xb2, 0xaf, /* 0x00-0x07 */
+ 0xa3, 0x8a, 0x8c, 0x8e, 0x8d, 0x00, 0xa1, 0x8f, /* 0x08-0x0f */
+ 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, /* 0x10-0x17 */
+ 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, /* 0x18-0x1f */
+ 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, /* 0x20-0x27 */
+ 0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, 0xde, 0xdf, /* 0x28-0x2f */
+ 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, /* 0x30-0x37 */
+ 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef, /* 0x38-0x3f */
+ 0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, /* 0x40-0x47 */
+ 0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, 0xfe, 0xff, /* 0x48-0x4f */
+ 0x00, 0xb8, 0x90, 0x83, 0xba, 0xbe, 0xb3, 0xbf, /* 0x50-0x57 */
+ 0xbc, 0x9a, 0x9c, 0x9e, 0x9d, 0x00, 0xa2, 0x9f, /* 0x58-0x5f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x60-0x67 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x68-0x6f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x70-0x77 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x78-0x7f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x80-0x87 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x88-0x8f */
+ 0xa5, 0xb4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x90-0x97 */
+};
+static const unsigned char cp1251_page20[48] = {
+ 0x00, 0x00, 0x00, 0x96, 0x97, 0x00, 0x00, 0x00, /* 0x10-0x17 */
+ 0x91, 0x92, 0x82, 0x00, 0x93, 0x94, 0x84, 0x00, /* 0x18-0x1f */
+ 0x86, 0x87, 0x95, 0x00, 0x00, 0x00, 0x85, 0x00, /* 0x20-0x27 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x28-0x2f */
+ 0x89, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x30-0x37 */
+ 0x00, 0x8b, 0x9b, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x38-0x3f */
+};
+
+static int
+cp1251_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n)
+{
+ unsigned char c = 0;
+ if (wc < 0x0080) {
+ *r = wc;
+ return 1;
+ }
+ else if (wc >= 0x00a0 && wc < 0x00c0)
+ c = cp1251_page00[wc-0x00a0];
+ else if (wc >= 0x0400 && wc < 0x0498)
+ c = cp1251_page04[wc-0x0400];
+ else if (wc >= 0x2010 && wc < 0x2040)
+ c = cp1251_page20[wc-0x2010];
+ else if (wc == 0x20ac)
+ c = 0x88;
+ else if (wc == 0x2116)
+ c = 0xb9;
+ else if (wc == 0x2122)
+ c = 0x99;
+ if (c != 0) {
+ *r = c;
+ return 1;
+ }
+ return RET_ILSEQ;
+}
diff --git a/libX11/src/xlibi18n/lcUniConv/cp1255.h b/libX11/src/xlibi18n/lcUniConv/cp1255.h
index 41867a1b6..61b2b59d7 100644
--- a/libX11/src/xlibi18n/lcUniConv/cp1255.h
+++ b/libX11/src/xlibi18n/lcUniConv/cp1255.h
@@ -1,120 +1,120 @@
-
-/*
- * CP1255
- */
-
-static const unsigned short cp1255_2uni[128] = {
- /* 0x80 */
- 0x20ac, 0xfffd, 0x201a, 0x0192, 0x201e, 0x2026, 0x2020, 0x2021,
- 0x02c6, 0x2030, 0xfffd, 0x2039, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- /* 0x90 */
- 0xfffd, 0x2018, 0x2019, 0x201c, 0x201d, 0x2022, 0x2013, 0x2014,
- 0x02dc, 0x2122, 0xfffd, 0x203a, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- /* 0xa0 */
- 0x00a0, 0x00a1, 0x00a2, 0x00a3, 0x20aa, 0x00a5, 0x00a6, 0x00a7,
- 0x00a8, 0x00a9, 0x00d7, 0x00ab, 0x00ac, 0x00ad, 0x00ae, 0x00af,
- /* 0xb0 */
- 0x00b0, 0x00b1, 0x00b2, 0x00b3, 0x00b4, 0x00b5, 0x00b6, 0x00b7,
- 0x00b8, 0x00b9, 0x00f7, 0x00bb, 0x00bc, 0x00bd, 0x00be, 0x00bf,
- /* 0xc0 */
- 0x05b0, 0x05b1, 0x05b2, 0x05b3, 0x05b4, 0x05b5, 0x05b6, 0x05b7,
- 0x05b8, 0x05b9, 0xfffd, 0x05bb, 0x05bc, 0x05bd, 0x05be, 0x05bf,
- /* 0xd0 */
- 0x05c0, 0x05c1, 0x05c2, 0x05c3, 0x05f0, 0x05f1, 0x05f2, 0x05f3,
- 0x05f4, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- /* 0xe0 */
- 0x05d0, 0x05d1, 0x05d2, 0x05d3, 0x05d4, 0x05d5, 0x05d6, 0x05d7,
- 0x05d8, 0x05d9, 0x05da, 0x05db, 0x05dc, 0x05dd, 0x05de, 0x05df,
- /* 0xf0 */
- 0x05e0, 0x05e1, 0x05e2, 0x05e3, 0x05e4, 0x05e5, 0x05e6, 0x05e7,
- 0x05e8, 0x05e9, 0x05ea, 0xfffd, 0xfffd, 0x200e, 0x200f, 0xfffd,
-};
-
-static int
-cp1255_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n)
-{
- unsigned char c = *s;
- if (c < 0x80) {
- *pwc = (ucs4_t) c;
- return 1;
- }
- else {
- unsigned short wc = cp1255_2uni[c-0x80];
- if (wc != 0xfffd) {
- *pwc = (ucs4_t) wc;
- return 1;
- }
- }
- return RET_ILSEQ;
-}
-
-static const unsigned char cp1255_page00[88] = {
- 0xa0, 0xa1, 0xa2, 0xa3, 0x00, 0xa5, 0xa6, 0xa7, /* 0xa0-0xa7 */
- 0xa8, 0xa9, 0x00, 0xab, 0xac, 0xad, 0xae, 0xaf, /* 0xa8-0xaf */
- 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7, /* 0xb0-0xb7 */
- 0xb8, 0xb9, 0x00, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf, /* 0xb8-0xbf */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xc0-0xc7 */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xc8-0xcf */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xaa, /* 0xd0-0xd7 */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xd8-0xdf */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xe0-0xe7 */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xe8-0xef */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xba, /* 0xf0-0xf7 */
-};
-static const unsigned char cp1255_page02[32] = {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x88, 0x00, /* 0xc0-0xc7 */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xc8-0xcf */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xd0-0xd7 */
- 0x00, 0x00, 0x00, 0x00, 0x98, 0x00, 0x00, 0x00, /* 0xd8-0xdf */
-};
-static const unsigned char cp1255_page05[72] = {
- 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, /* 0xb0-0xb7 */
- 0xc8, 0xc9, 0x00, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, /* 0xb8-0xbf */
- 0xd0, 0xd1, 0xd2, 0xd3, 0x00, 0x00, 0x00, 0x00, /* 0xc0-0xc7 */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xc8-0xcf */
- 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, /* 0xd0-0xd7 */
- 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef, /* 0xd8-0xdf */
- 0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, /* 0xe0-0xe7 */
- 0xf8, 0xf9, 0xfa, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xe8-0xef */
- 0xd4, 0xd5, 0xd6, 0xd7, 0xd8, 0x00, 0x00, 0x00, /* 0xf0-0xf7 */
-};
-static const unsigned char cp1255_page20[56] = {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfd, 0xfe, /* 0x08-0x0f */
- 0x00, 0x00, 0x00, 0x96, 0x97, 0x00, 0x00, 0x00, /* 0x10-0x17 */
- 0x91, 0x92, 0x82, 0x00, 0x93, 0x94, 0x84, 0x00, /* 0x18-0x1f */
- 0x86, 0x87, 0x95, 0x00, 0x00, 0x00, 0x85, 0x00, /* 0x20-0x27 */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x28-0x2f */
- 0x89, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x30-0x37 */
- 0x00, 0x8b, 0x9b, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x38-0x3f */
-};
-
-static int
-cp1255_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n)
-{
- unsigned char c = 0;
- if (wc < 0x0080) {
- *r = wc;
- return 1;
- }
- else if (wc >= 0x00a0 && wc < 0x00f8)
- c = cp1255_page00[wc-0x00a0];
- else if (wc == 0x0192)
- c = 0x83;
- else if (wc >= 0x02c0 && wc < 0x02e0)
- c = cp1255_page02[wc-0x02c0];
- else if (wc >= 0x05b0 && wc < 0x05f8)
- c = cp1255_page05[wc-0x05b0];
- else if (wc >= 0x2008 && wc < 0x2040)
- c = cp1255_page20[wc-0x2008];
- else if (wc == 0x20aa)
- c = 0xa4;
- else if (wc == 0x20ac)
- c = 0x80;
- else if (wc == 0x2122)
- c = 0x99;
- if (c != 0) {
- *r = c;
- return 1;
- }
- return RET_ILSEQ;
-}
+
+/*
+ * CP1255
+ */
+
+static const unsigned short cp1255_2uni[128] = {
+ /* 0x80 */
+ 0x20ac, 0xfffd, 0x201a, 0x0192, 0x201e, 0x2026, 0x2020, 0x2021,
+ 0x02c6, 0x2030, 0xfffd, 0x2039, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ /* 0x90 */
+ 0xfffd, 0x2018, 0x2019, 0x201c, 0x201d, 0x2022, 0x2013, 0x2014,
+ 0x02dc, 0x2122, 0xfffd, 0x203a, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ /* 0xa0 */
+ 0x00a0, 0x00a1, 0x00a2, 0x00a3, 0x20aa, 0x00a5, 0x00a6, 0x00a7,
+ 0x00a8, 0x00a9, 0x00d7, 0x00ab, 0x00ac, 0x00ad, 0x00ae, 0x00af,
+ /* 0xb0 */
+ 0x00b0, 0x00b1, 0x00b2, 0x00b3, 0x00b4, 0x00b5, 0x00b6, 0x00b7,
+ 0x00b8, 0x00b9, 0x00f7, 0x00bb, 0x00bc, 0x00bd, 0x00be, 0x00bf,
+ /* 0xc0 */
+ 0x05b0, 0x05b1, 0x05b2, 0x05b3, 0x05b4, 0x05b5, 0x05b6, 0x05b7,
+ 0x05b8, 0x05b9, 0xfffd, 0x05bb, 0x05bc, 0x05bd, 0x05be, 0x05bf,
+ /* 0xd0 */
+ 0x05c0, 0x05c1, 0x05c2, 0x05c3, 0x05f0, 0x05f1, 0x05f2, 0x05f3,
+ 0x05f4, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ /* 0xe0 */
+ 0x05d0, 0x05d1, 0x05d2, 0x05d3, 0x05d4, 0x05d5, 0x05d6, 0x05d7,
+ 0x05d8, 0x05d9, 0x05da, 0x05db, 0x05dc, 0x05dd, 0x05de, 0x05df,
+ /* 0xf0 */
+ 0x05e0, 0x05e1, 0x05e2, 0x05e3, 0x05e4, 0x05e5, 0x05e6, 0x05e7,
+ 0x05e8, 0x05e9, 0x05ea, 0xfffd, 0xfffd, 0x200e, 0x200f, 0xfffd,
+};
+
+static int
+cp1255_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n)
+{
+ unsigned char c = *s;
+ if (c < 0x80) {
+ *pwc = (ucs4_t) c;
+ return 1;
+ }
+ else {
+ unsigned short wc = cp1255_2uni[c-0x80];
+ if (wc != 0xfffd) {
+ *pwc = (ucs4_t) wc;
+ return 1;
+ }
+ }
+ return RET_ILSEQ;
+}
+
+static const unsigned char cp1255_page00[88] = {
+ 0xa0, 0xa1, 0xa2, 0xa3, 0x00, 0xa5, 0xa6, 0xa7, /* 0xa0-0xa7 */
+ 0xa8, 0xa9, 0x00, 0xab, 0xac, 0xad, 0xae, 0xaf, /* 0xa8-0xaf */
+ 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7, /* 0xb0-0xb7 */
+ 0xb8, 0xb9, 0x00, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf, /* 0xb8-0xbf */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xc0-0xc7 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xc8-0xcf */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xaa, /* 0xd0-0xd7 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xd8-0xdf */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xe0-0xe7 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xe8-0xef */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xba, /* 0xf0-0xf7 */
+};
+static const unsigned char cp1255_page02[32] = {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x88, 0x00, /* 0xc0-0xc7 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xc8-0xcf */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xd0-0xd7 */
+ 0x00, 0x00, 0x00, 0x00, 0x98, 0x00, 0x00, 0x00, /* 0xd8-0xdf */
+};
+static const unsigned char cp1255_page05[72] = {
+ 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, /* 0xb0-0xb7 */
+ 0xc8, 0xc9, 0x00, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, /* 0xb8-0xbf */
+ 0xd0, 0xd1, 0xd2, 0xd3, 0x00, 0x00, 0x00, 0x00, /* 0xc0-0xc7 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xc8-0xcf */
+ 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, /* 0xd0-0xd7 */
+ 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef, /* 0xd8-0xdf */
+ 0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, /* 0xe0-0xe7 */
+ 0xf8, 0xf9, 0xfa, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xe8-0xef */
+ 0xd4, 0xd5, 0xd6, 0xd7, 0xd8, 0x00, 0x00, 0x00, /* 0xf0-0xf7 */
+};
+static const unsigned char cp1255_page20[56] = {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfd, 0xfe, /* 0x08-0x0f */
+ 0x00, 0x00, 0x00, 0x96, 0x97, 0x00, 0x00, 0x00, /* 0x10-0x17 */
+ 0x91, 0x92, 0x82, 0x00, 0x93, 0x94, 0x84, 0x00, /* 0x18-0x1f */
+ 0x86, 0x87, 0x95, 0x00, 0x00, 0x00, 0x85, 0x00, /* 0x20-0x27 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x28-0x2f */
+ 0x89, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x30-0x37 */
+ 0x00, 0x8b, 0x9b, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x38-0x3f */
+};
+
+static int
+cp1255_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n)
+{
+ unsigned char c = 0;
+ if (wc < 0x0080) {
+ *r = wc;
+ return 1;
+ }
+ else if (wc >= 0x00a0 && wc < 0x00f8)
+ c = cp1255_page00[wc-0x00a0];
+ else if (wc == 0x0192)
+ c = 0x83;
+ else if (wc >= 0x02c0 && wc < 0x02e0)
+ c = cp1255_page02[wc-0x02c0];
+ else if (wc >= 0x05b0 && wc < 0x05f8)
+ c = cp1255_page05[wc-0x05b0];
+ else if (wc >= 0x2008 && wc < 0x2040)
+ c = cp1255_page20[wc-0x2008];
+ else if (wc == 0x20aa)
+ c = 0xa4;
+ else if (wc == 0x20ac)
+ c = 0x80;
+ else if (wc == 0x2122)
+ c = 0x99;
+ if (c != 0) {
+ *r = c;
+ return 1;
+ }
+ return RET_ILSEQ;
+}
diff --git a/libX11/src/xlibi18n/lcUniConv/cp1256.h b/libX11/src/xlibi18n/lcUniConv/cp1256.h
index 3fb7369f7..72284f4c1 100644
--- a/libX11/src/xlibi18n/lcUniConv/cp1256.h
+++ b/libX11/src/xlibi18n/lcUniConv/cp1256.h
@@ -1,134 +1,134 @@
-
-/*
- * CP1256
- */
-
-static const unsigned short cp1256_2uni[128] = {
- /* 0x80 */
- 0x20ac, 0x067e, 0x201a, 0x0192, 0x201e, 0x2026, 0x2020, 0x2021,
- 0x02c6, 0x2030, 0x0679, 0x2039, 0x0152, 0x0686, 0x0698, 0x0688,
- /* 0x90 */
- 0x06af, 0x2018, 0x2019, 0x201c, 0x201d, 0x2022, 0x2013, 0x2014,
- 0x06a9, 0x2122, 0x0691, 0x203a, 0x0153, 0x200c, 0x200d, 0x06ba,
- /* 0xa0 */
- 0x00a0, 0x060c, 0x00a2, 0x00a3, 0x00a4, 0x00a5, 0x00a6, 0x00a7,
- 0x00a8, 0x00a9, 0x06be, 0x00ab, 0x00ac, 0x00ad, 0x00ae, 0x00af,
- /* 0xb0 */
- 0x00b0, 0x00b1, 0x00b2, 0x00b3, 0x00b4, 0x00b5, 0x00b6, 0x00b7,
- 0x00b8, 0x00b9, 0x061b, 0x00bb, 0x00bc, 0x00bd, 0x00be, 0x061f,
- /* 0xc0 */
- 0x06c1, 0x0621, 0x0622, 0x0623, 0x0624, 0x0625, 0x0626, 0x0627,
- 0x0628, 0x0629, 0x062a, 0x062b, 0x062c, 0x062d, 0x062e, 0x062f,
- /* 0xd0 */
- 0x0630, 0x0631, 0x0632, 0x0633, 0x0634, 0x0635, 0x0636, 0x00d7,
- 0x0637, 0x0638, 0x0639, 0x063a, 0x0640, 0x0641, 0x0642, 0x0643,
- /* 0xe0 */
- 0x00e0, 0x0644, 0x00e2, 0x0645, 0x0646, 0x0647, 0x0648, 0x00e7,
- 0x00e8, 0x00e9, 0x00ea, 0x00eb, 0x0649, 0x064a, 0x00ee, 0x00ef,
- /* 0xf0 */
- 0x064b, 0x064c, 0x064d, 0x064e, 0x00f4, 0x064f, 0x0650, 0x00f7,
- 0x0651, 0x00f9, 0x0652, 0x00fb, 0x00fc, 0x200e, 0x200f, 0x06d2,
-};
-
-static int
-cp1256_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n)
-{
- unsigned char c = *s;
- if (c < 0x80)
- *pwc = (ucs4_t) c;
- else
- *pwc = (ucs4_t) cp1256_2uni[c-0x80];
- return 1;
-}
-
-static const unsigned char cp1256_page00[96] = {
- 0xa0, 0x00, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7, /* 0xa0-0xa7 */
- 0xa8, 0xa9, 0x00, 0xab, 0xac, 0xad, 0xae, 0xaf, /* 0xa8-0xaf */
- 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7, /* 0xb0-0xb7 */
- 0xb8, 0xb9, 0x00, 0xbb, 0xbc, 0xbd, 0xbe, 0x00, /* 0xb8-0xbf */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xc0-0xc7 */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xc8-0xcf */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd7, /* 0xd0-0xd7 */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xd8-0xdf */
- 0xe0, 0x00, 0xe2, 0x00, 0x00, 0x00, 0x00, 0xe7, /* 0xe0-0xe7 */
- 0xe8, 0xe9, 0xea, 0xeb, 0x00, 0x00, 0xee, 0xef, /* 0xe8-0xef */
- 0x00, 0x00, 0x00, 0x00, 0xf4, 0x00, 0x00, 0xf7, /* 0xf0-0xf7 */
- 0x00, 0xf9, 0x00, 0xfb, 0xfc, 0x00, 0x00, 0x00, /* 0xf8-0xff */
-};
-static const unsigned char cp1256_page01[72] = {
- 0x00, 0x00, 0x8c, 0x9c, 0x00, 0x00, 0x00, 0x00, /* 0x50-0x57 */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x58-0x5f */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x60-0x67 */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x68-0x6f */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x70-0x77 */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x78-0x7f */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x80-0x87 */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x88-0x8f */
- 0x00, 0x00, 0x83, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x90-0x97 */
-};
-static const unsigned char cp1256_page06[208] = {
- 0x00, 0x00, 0x00, 0x00, 0xa1, 0x00, 0x00, 0x00, /* 0x08-0x0f */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x10-0x17 */
- 0x00, 0x00, 0x00, 0xba, 0x00, 0x00, 0x00, 0xbf, /* 0x18-0x1f */
- 0x00, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, /* 0x20-0x27 */
- 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, /* 0x28-0x2f */
- 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd8, /* 0x30-0x37 */
- 0xd9, 0xda, 0xdb, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x38-0x3f */
- 0xdc, 0xdd, 0xde, 0xdf, 0xe1, 0xe3, 0xe4, 0xe5, /* 0x40-0x47 */
- 0xe6, 0xec, 0xed, 0xf0, 0xf1, 0xf2, 0xf3, 0xf5, /* 0x48-0x4f */
- 0xf6, 0xf8, 0xfa, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x50-0x57 */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x58-0x5f */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x60-0x67 */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x68-0x6f */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x70-0x77 */
- 0x00, 0x8a, 0x00, 0x00, 0x00, 0x00, 0x81, 0x00, /* 0x78-0x7f */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8d, 0x00, /* 0x80-0x87 */
- 0x8f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x88-0x8f */
- 0x00, 0x9a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x90-0x97 */
- 0x8e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x98-0x9f */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xa0-0xa7 */
- 0x00, 0x98, 0x00, 0x00, 0x00, 0x00, 0x00, 0x90, /* 0xa8-0xaf */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xb0-0xb7 */
- 0x00, 0x00, 0x9f, 0x00, 0x00, 0x00, 0xaa, 0x00, /* 0xb8-0xbf */
- 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xc0-0xc7 */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xc8-0xcf */
- 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xd0-0xd7 */
-};
-static const unsigned char cp1256_page20[56] = {
- 0x00, 0x00, 0x00, 0x00, 0x9d, 0x9e, 0xfd, 0xfe, /* 0x08-0x0f */
- 0x00, 0x00, 0x00, 0x96, 0x97, 0x00, 0x00, 0x00, /* 0x10-0x17 */
- 0x91, 0x92, 0x82, 0x00, 0x93, 0x94, 0x84, 0x00, /* 0x18-0x1f */
- 0x86, 0x87, 0x95, 0x00, 0x00, 0x00, 0x85, 0x00, /* 0x20-0x27 */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x28-0x2f */
- 0x89, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x30-0x37 */
- 0x00, 0x8b, 0x9b, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x38-0x3f */
-};
-
-static int
-cp1256_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n)
-{
- unsigned char c = 0;
- if (wc < 0x0080) {
- *r = wc;
- return 1;
- }
- else if (wc >= 0x00a0 && wc < 0x0100)
- c = cp1256_page00[wc-0x00a0];
- else if (wc >= 0x0150 && wc < 0x0198)
- c = cp1256_page01[wc-0x0150];
- else if (wc == 0x02c6)
- c = 0x88;
- else if (wc >= 0x0608 && wc < 0x06d8)
- c = cp1256_page06[wc-0x0608];
- else if (wc >= 0x2008 && wc < 0x2040)
- c = cp1256_page20[wc-0x2008];
- else if (wc == 0x20ac)
- c = 0x80;
- else if (wc == 0x2122)
- c = 0x99;
- if (c != 0) {
- *r = c;
- return 1;
- }
- return RET_ILSEQ;
-}
+
+/*
+ * CP1256
+ */
+
+static const unsigned short cp1256_2uni[128] = {
+ /* 0x80 */
+ 0x20ac, 0x067e, 0x201a, 0x0192, 0x201e, 0x2026, 0x2020, 0x2021,
+ 0x02c6, 0x2030, 0x0679, 0x2039, 0x0152, 0x0686, 0x0698, 0x0688,
+ /* 0x90 */
+ 0x06af, 0x2018, 0x2019, 0x201c, 0x201d, 0x2022, 0x2013, 0x2014,
+ 0x06a9, 0x2122, 0x0691, 0x203a, 0x0153, 0x200c, 0x200d, 0x06ba,
+ /* 0xa0 */
+ 0x00a0, 0x060c, 0x00a2, 0x00a3, 0x00a4, 0x00a5, 0x00a6, 0x00a7,
+ 0x00a8, 0x00a9, 0x06be, 0x00ab, 0x00ac, 0x00ad, 0x00ae, 0x00af,
+ /* 0xb0 */
+ 0x00b0, 0x00b1, 0x00b2, 0x00b3, 0x00b4, 0x00b5, 0x00b6, 0x00b7,
+ 0x00b8, 0x00b9, 0x061b, 0x00bb, 0x00bc, 0x00bd, 0x00be, 0x061f,
+ /* 0xc0 */
+ 0x06c1, 0x0621, 0x0622, 0x0623, 0x0624, 0x0625, 0x0626, 0x0627,
+ 0x0628, 0x0629, 0x062a, 0x062b, 0x062c, 0x062d, 0x062e, 0x062f,
+ /* 0xd0 */
+ 0x0630, 0x0631, 0x0632, 0x0633, 0x0634, 0x0635, 0x0636, 0x00d7,
+ 0x0637, 0x0638, 0x0639, 0x063a, 0x0640, 0x0641, 0x0642, 0x0643,
+ /* 0xe0 */
+ 0x00e0, 0x0644, 0x00e2, 0x0645, 0x0646, 0x0647, 0x0648, 0x00e7,
+ 0x00e8, 0x00e9, 0x00ea, 0x00eb, 0x0649, 0x064a, 0x00ee, 0x00ef,
+ /* 0xf0 */
+ 0x064b, 0x064c, 0x064d, 0x064e, 0x00f4, 0x064f, 0x0650, 0x00f7,
+ 0x0651, 0x00f9, 0x0652, 0x00fb, 0x00fc, 0x200e, 0x200f, 0x06d2,
+};
+
+static int
+cp1256_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n)
+{
+ unsigned char c = *s;
+ if (c < 0x80)
+ *pwc = (ucs4_t) c;
+ else
+ *pwc = (ucs4_t) cp1256_2uni[c-0x80];
+ return 1;
+}
+
+static const unsigned char cp1256_page00[96] = {
+ 0xa0, 0x00, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7, /* 0xa0-0xa7 */
+ 0xa8, 0xa9, 0x00, 0xab, 0xac, 0xad, 0xae, 0xaf, /* 0xa8-0xaf */
+ 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7, /* 0xb0-0xb7 */
+ 0xb8, 0xb9, 0x00, 0xbb, 0xbc, 0xbd, 0xbe, 0x00, /* 0xb8-0xbf */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xc0-0xc7 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xc8-0xcf */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd7, /* 0xd0-0xd7 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xd8-0xdf */
+ 0xe0, 0x00, 0xe2, 0x00, 0x00, 0x00, 0x00, 0xe7, /* 0xe0-0xe7 */
+ 0xe8, 0xe9, 0xea, 0xeb, 0x00, 0x00, 0xee, 0xef, /* 0xe8-0xef */
+ 0x00, 0x00, 0x00, 0x00, 0xf4, 0x00, 0x00, 0xf7, /* 0xf0-0xf7 */
+ 0x00, 0xf9, 0x00, 0xfb, 0xfc, 0x00, 0x00, 0x00, /* 0xf8-0xff */
+};
+static const unsigned char cp1256_page01[72] = {
+ 0x00, 0x00, 0x8c, 0x9c, 0x00, 0x00, 0x00, 0x00, /* 0x50-0x57 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x58-0x5f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x60-0x67 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x68-0x6f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x70-0x77 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x78-0x7f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x80-0x87 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x88-0x8f */
+ 0x00, 0x00, 0x83, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x90-0x97 */
+};
+static const unsigned char cp1256_page06[208] = {
+ 0x00, 0x00, 0x00, 0x00, 0xa1, 0x00, 0x00, 0x00, /* 0x08-0x0f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x10-0x17 */
+ 0x00, 0x00, 0x00, 0xba, 0x00, 0x00, 0x00, 0xbf, /* 0x18-0x1f */
+ 0x00, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, /* 0x20-0x27 */
+ 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, /* 0x28-0x2f */
+ 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd8, /* 0x30-0x37 */
+ 0xd9, 0xda, 0xdb, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x38-0x3f */
+ 0xdc, 0xdd, 0xde, 0xdf, 0xe1, 0xe3, 0xe4, 0xe5, /* 0x40-0x47 */
+ 0xe6, 0xec, 0xed, 0xf0, 0xf1, 0xf2, 0xf3, 0xf5, /* 0x48-0x4f */
+ 0xf6, 0xf8, 0xfa, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x50-0x57 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x58-0x5f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x60-0x67 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x68-0x6f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x70-0x77 */
+ 0x00, 0x8a, 0x00, 0x00, 0x00, 0x00, 0x81, 0x00, /* 0x78-0x7f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8d, 0x00, /* 0x80-0x87 */
+ 0x8f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x88-0x8f */
+ 0x00, 0x9a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x90-0x97 */
+ 0x8e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x98-0x9f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xa0-0xa7 */
+ 0x00, 0x98, 0x00, 0x00, 0x00, 0x00, 0x00, 0x90, /* 0xa8-0xaf */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xb0-0xb7 */
+ 0x00, 0x00, 0x9f, 0x00, 0x00, 0x00, 0xaa, 0x00, /* 0xb8-0xbf */
+ 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xc0-0xc7 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xc8-0xcf */
+ 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xd0-0xd7 */
+};
+static const unsigned char cp1256_page20[56] = {
+ 0x00, 0x00, 0x00, 0x00, 0x9d, 0x9e, 0xfd, 0xfe, /* 0x08-0x0f */
+ 0x00, 0x00, 0x00, 0x96, 0x97, 0x00, 0x00, 0x00, /* 0x10-0x17 */
+ 0x91, 0x92, 0x82, 0x00, 0x93, 0x94, 0x84, 0x00, /* 0x18-0x1f */
+ 0x86, 0x87, 0x95, 0x00, 0x00, 0x00, 0x85, 0x00, /* 0x20-0x27 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x28-0x2f */
+ 0x89, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x30-0x37 */
+ 0x00, 0x8b, 0x9b, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x38-0x3f */
+};
+
+static int
+cp1256_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n)
+{
+ unsigned char c = 0;
+ if (wc < 0x0080) {
+ *r = wc;
+ return 1;
+ }
+ else if (wc >= 0x00a0 && wc < 0x0100)
+ c = cp1256_page00[wc-0x00a0];
+ else if (wc >= 0x0150 && wc < 0x0198)
+ c = cp1256_page01[wc-0x0150];
+ else if (wc == 0x02c6)
+ c = 0x88;
+ else if (wc >= 0x0608 && wc < 0x06d8)
+ c = cp1256_page06[wc-0x0608];
+ else if (wc >= 0x2008 && wc < 0x2040)
+ c = cp1256_page20[wc-0x2008];
+ else if (wc == 0x20ac)
+ c = 0x80;
+ else if (wc == 0x2122)
+ c = 0x99;
+ if (c != 0) {
+ *r = c;
+ return 1;
+ }
+ return RET_ILSEQ;
+}
diff --git a/libX11/src/xlibi18n/lcUniConv/gb2312.h b/libX11/src/xlibi18n/lcUniConv/gb2312.h
index eb0258bbb..2eec308d2 100644
--- a/libX11/src/xlibi18n/lcUniConv/gb2312.h
+++ b/libX11/src/xlibi18n/lcUniConv/gb2312.h
@@ -1,2552 +1,2552 @@
-
-/*
- * GB2312.1980-0
- */
-
-static const unsigned short gb2312_2uni_page21[831] = {
- /* 0x21 */
- 0x3000, 0x3001, 0x3002, 0x30fb, 0x02c9, 0x02c7, 0x00a8, 0x3003,
- 0x3005, 0x2015, 0xff5e, 0x2016, 0x2026, 0x2018, 0x2019, 0x201c,
- 0x201d, 0x3014, 0x3015, 0x3008, 0x3009, 0x300a, 0x300b, 0x300c,
- 0x300d, 0x300e, 0x300f, 0x3016, 0x3017, 0x3010, 0x3011, 0x00b1,
- 0x00d7, 0x00f7, 0x2236, 0x2227, 0x2228, 0x2211, 0x220f, 0x222a,
- 0x2229, 0x2208, 0x2237, 0x221a, 0x22a5, 0x2225, 0x2220, 0x2312,
- 0x2299, 0x222b, 0x222e, 0x2261, 0x224c, 0x2248, 0x223d, 0x221d,
- 0x2260, 0x226e, 0x226f, 0x2264, 0x2265, 0x221e, 0x2235, 0x2234,
- 0x2642, 0x2640, 0x00b0, 0x2032, 0x2033, 0x2103, 0xff04, 0x00a4,
- 0xffe0, 0xffe1, 0x2030, 0x00a7, 0x2116, 0x2606, 0x2605, 0x25cb,
- 0x25cf, 0x25ce, 0x25c7, 0x25c6, 0x25a1, 0x25a0, 0x25b3, 0x25b2,
- 0x203b, 0x2192, 0x2190, 0x2191, 0x2193, 0x3013,
- /* 0x22 */
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0x2488, 0x2489, 0x248a, 0x248b, 0x248c, 0x248d, 0x248e, 0x248f,
- 0x2490, 0x2491, 0x2492, 0x2493, 0x2494, 0x2495, 0x2496, 0x2497,
- 0x2498, 0x2499, 0x249a, 0x249b, 0x2474, 0x2475, 0x2476, 0x2477,
- 0x2478, 0x2479, 0x247a, 0x247b, 0x247c, 0x247d, 0x247e, 0x247f,
- 0x2480, 0x2481, 0x2482, 0x2483, 0x2484, 0x2485, 0x2486, 0x2487,
- 0x2460, 0x2461, 0x2462, 0x2463, 0x2464, 0x2465, 0x2466, 0x2467,
- 0x2468, 0x2469, 0xfffd, 0xfffd, 0x3220, 0x3221, 0x3222, 0x3223,
- 0x3224, 0x3225, 0x3226, 0x3227, 0x3228, 0x3229, 0xfffd, 0xfffd,
- 0x2160, 0x2161, 0x2162, 0x2163, 0x2164, 0x2165, 0x2166, 0x2167,
- 0x2168, 0x2169, 0x216a, 0x216b, 0xfffd, 0xfffd,
- /* 0x23 */
- 0xff01, 0xff02, 0xff03, 0xffe5, 0xff05, 0xff06, 0xff07, 0xff08,
- 0xff09, 0xff0a, 0xff0b, 0xff0c, 0xff0d, 0xff0e, 0xff0f, 0xff10,
- 0xff11, 0xff12, 0xff13, 0xff14, 0xff15, 0xff16, 0xff17, 0xff18,
- 0xff19, 0xff1a, 0xff1b, 0xff1c, 0xff1d, 0xff1e, 0xff1f, 0xff20,
- 0xff21, 0xff22, 0xff23, 0xff24, 0xff25, 0xff26, 0xff27, 0xff28,
- 0xff29, 0xff2a, 0xff2b, 0xff2c, 0xff2d, 0xff2e, 0xff2f, 0xff30,
- 0xff31, 0xff32, 0xff33, 0xff34, 0xff35, 0xff36, 0xff37, 0xff38,
- 0xff39, 0xff3a, 0xff3b, 0xff3c, 0xff3d, 0xff3e, 0xff3f, 0xff40,
- 0xff41, 0xff42, 0xff43, 0xff44, 0xff45, 0xff46, 0xff47, 0xff48,
- 0xff49, 0xff4a, 0xff4b, 0xff4c, 0xff4d, 0xff4e, 0xff4f, 0xff50,
- 0xff51, 0xff52, 0xff53, 0xff54, 0xff55, 0xff56, 0xff57, 0xff58,
- 0xff59, 0xff5a, 0xff5b, 0xff5c, 0xff5d, 0xffe3,
- /* 0x24 */
- 0x3041, 0x3042, 0x3043, 0x3044, 0x3045, 0x3046, 0x3047, 0x3048,
- 0x3049, 0x304a, 0x304b, 0x304c, 0x304d, 0x304e, 0x304f, 0x3050,
- 0x3051, 0x3052, 0x3053, 0x3054, 0x3055, 0x3056, 0x3057, 0x3058,
- 0x3059, 0x305a, 0x305b, 0x305c, 0x305d, 0x305e, 0x305f, 0x3060,
- 0x3061, 0x3062, 0x3063, 0x3064, 0x3065, 0x3066, 0x3067, 0x3068,
- 0x3069, 0x306a, 0x306b, 0x306c, 0x306d, 0x306e, 0x306f, 0x3070,
- 0x3071, 0x3072, 0x3073, 0x3074, 0x3075, 0x3076, 0x3077, 0x3078,
- 0x3079, 0x307a, 0x307b, 0x307c, 0x307d, 0x307e, 0x307f, 0x3080,
- 0x3081, 0x3082, 0x3083, 0x3084, 0x3085, 0x3086, 0x3087, 0x3088,
- 0x3089, 0x308a, 0x308b, 0x308c, 0x308d, 0x308e, 0x308f, 0x3090,
- 0x3091, 0x3092, 0x3093, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- /* 0x25 */
- 0x30a1, 0x30a2, 0x30a3, 0x30a4, 0x30a5, 0x30a6, 0x30a7, 0x30a8,
- 0x30a9, 0x30aa, 0x30ab, 0x30ac, 0x30ad, 0x30ae, 0x30af, 0x30b0,
- 0x30b1, 0x30b2, 0x30b3, 0x30b4, 0x30b5, 0x30b6, 0x30b7, 0x30b8,
- 0x30b9, 0x30ba, 0x30bb, 0x30bc, 0x30bd, 0x30be, 0x30bf, 0x30c0,
- 0x30c1, 0x30c2, 0x30c3, 0x30c4, 0x30c5, 0x30c6, 0x30c7, 0x30c8,
- 0x30c9, 0x30ca, 0x30cb, 0x30cc, 0x30cd, 0x30ce, 0x30cf, 0x30d0,
- 0x30d1, 0x30d2, 0x30d3, 0x30d4, 0x30d5, 0x30d6, 0x30d7, 0x30d8,
- 0x30d9, 0x30da, 0x30db, 0x30dc, 0x30dd, 0x30de, 0x30df, 0x30e0,
- 0x30e1, 0x30e2, 0x30e3, 0x30e4, 0x30e5, 0x30e6, 0x30e7, 0x30e8,
- 0x30e9, 0x30ea, 0x30eb, 0x30ec, 0x30ed, 0x30ee, 0x30ef, 0x30f0,
- 0x30f1, 0x30f2, 0x30f3, 0x30f4, 0x30f5, 0x30f6, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- /* 0x26 */
- 0x0391, 0x0392, 0x0393, 0x0394, 0x0395, 0x0396, 0x0397, 0x0398,
- 0x0399, 0x039a, 0x039b, 0x039c, 0x039d, 0x039e, 0x039f, 0x03a0,
- 0x03a1, 0x03a3, 0x03a4, 0x03a5, 0x03a6, 0x03a7, 0x03a8, 0x03a9,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0x03b1, 0x03b2, 0x03b3, 0x03b4, 0x03b5, 0x03b6, 0x03b7, 0x03b8,
- 0x03b9, 0x03ba, 0x03bb, 0x03bc, 0x03bd, 0x03be, 0x03bf, 0x03c0,
- 0x03c1, 0x03c3, 0x03c4, 0x03c5, 0x03c6, 0x03c7, 0x03c8, 0x03c9,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- /* 0x27 */
- 0x0410, 0x0411, 0x0412, 0x0413, 0x0414, 0x0415, 0x0401, 0x0416,
- 0x0417, 0x0418, 0x0419, 0x041a, 0x041b, 0x041c, 0x041d, 0x041e,
- 0x041f, 0x0420, 0x0421, 0x0422, 0x0423, 0x0424, 0x0425, 0x0426,
- 0x0427, 0x0428, 0x0429, 0x042a, 0x042b, 0x042c, 0x042d, 0x042e,
- 0x042f, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0x0430, 0x0431, 0x0432, 0x0433, 0x0434, 0x0435, 0x0451, 0x0436,
- 0x0437, 0x0438, 0x0439, 0x043a, 0x043b, 0x043c, 0x043d, 0x043e,
- 0x043f, 0x0440, 0x0441, 0x0442, 0x0443, 0x0444, 0x0445, 0x0446,
- 0x0447, 0x0448, 0x0449, 0x044a, 0x044b, 0x044c, 0x044d, 0x044e,
- 0x044f, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- /* 0x28 */
- 0x0101, 0x00e1, 0x01ce, 0x00e0, 0x0113, 0x00e9, 0x011b, 0x00e8,
- 0x012b, 0x00ed, 0x01d0, 0x00ec, 0x014d, 0x00f3, 0x01d2, 0x00f2,
- 0x016b, 0x00fa, 0x01d4, 0x00f9, 0x01d6, 0x01d8, 0x01da, 0x01dc,
- 0x00fc, 0x00ea, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x3105, 0x3106, 0x3107, 0x3108,
- 0x3109, 0x310a, 0x310b, 0x310c, 0x310d, 0x310e, 0x310f, 0x3110,
- 0x3111, 0x3112, 0x3113, 0x3114, 0x3115, 0x3116, 0x3117, 0x3118,
- 0x3119, 0x311a, 0x311b, 0x311c, 0x311d, 0x311e, 0x311f, 0x3120,
- 0x3121, 0x3122, 0x3123, 0x3124, 0x3125, 0x3126, 0x3127, 0x3128,
- 0x3129, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- /* 0x29 */
- 0xfffd, 0xfffd, 0xfffd, 0x2500, 0x2501, 0x2502, 0x2503, 0x2504,
- 0x2505, 0x2506, 0x2507, 0x2508, 0x2509, 0x250a, 0x250b, 0x250c,
- 0x250d, 0x250e, 0x250f, 0x2510, 0x2511, 0x2512, 0x2513, 0x2514,
- 0x2515, 0x2516, 0x2517, 0x2518, 0x2519, 0x251a, 0x251b, 0x251c,
- 0x251d, 0x251e, 0x251f, 0x2520, 0x2521, 0x2522, 0x2523, 0x2524,
- 0x2525, 0x2526, 0x2527, 0x2528, 0x2529, 0x252a, 0x252b, 0x252c,
- 0x252d, 0x252e, 0x252f, 0x2530, 0x2531, 0x2532, 0x2533, 0x2534,
- 0x2535, 0x2536, 0x2537, 0x2538, 0x2539, 0x253a, 0x253b, 0x253c,
- 0x253d, 0x253e, 0x253f, 0x2540, 0x2541, 0x2542, 0x2543, 0x2544,
- 0x2545, 0x2546, 0x2547, 0x2548, 0x2549, 0x254a, 0x254b,
-};
-static const unsigned short gb2312_2uni_page30[6768] = {
- /* 0x30 */
- 0x554a, 0x963f, 0x57c3, 0x6328, 0x54ce, 0x5509, 0x54c0, 0x7691,
- 0x764c, 0x853c, 0x77ee, 0x827e, 0x788d, 0x7231, 0x9698, 0x978d,
- 0x6c28, 0x5b89, 0x4ffa, 0x6309, 0x6697, 0x5cb8, 0x80fa, 0x6848,
- 0x80ae, 0x6602, 0x76ce, 0x51f9, 0x6556, 0x71ac, 0x7ff1, 0x8884,
- 0x50b2, 0x5965, 0x61ca, 0x6fb3, 0x82ad, 0x634c, 0x6252, 0x53ed,
- 0x5427, 0x7b06, 0x516b, 0x75a4, 0x5df4, 0x62d4, 0x8dcb, 0x9776,
- 0x628a, 0x8019, 0x575d, 0x9738, 0x7f62, 0x7238, 0x767d, 0x67cf,
- 0x767e, 0x6446, 0x4f70, 0x8d25, 0x62dc, 0x7a17, 0x6591, 0x73ed,
- 0x642c, 0x6273, 0x822c, 0x9881, 0x677f, 0x7248, 0x626e, 0x62cc,
- 0x4f34, 0x74e3, 0x534a, 0x529e, 0x7eca, 0x90a6, 0x5e2e, 0x6886,
- 0x699c, 0x8180, 0x7ed1, 0x68d2, 0x78c5, 0x868c, 0x9551, 0x508d,
- 0x8c24, 0x82de, 0x80de, 0x5305, 0x8912, 0x5265,
- /* 0x31 */
- 0x8584, 0x96f9, 0x4fdd, 0x5821, 0x9971, 0x5b9d, 0x62b1, 0x62a5,
- 0x66b4, 0x8c79, 0x9c8d, 0x7206, 0x676f, 0x7891, 0x60b2, 0x5351,
- 0x5317, 0x8f88, 0x80cc, 0x8d1d, 0x94a1, 0x500d, 0x72c8, 0x5907,
- 0x60eb, 0x7119, 0x88ab, 0x5954, 0x82ef, 0x672c, 0x7b28, 0x5d29,
- 0x7ef7, 0x752d, 0x6cf5, 0x8e66, 0x8ff8, 0x903c, 0x9f3b, 0x6bd4,
- 0x9119, 0x7b14, 0x5f7c, 0x78a7, 0x84d6, 0x853d, 0x6bd5, 0x6bd9,
- 0x6bd6, 0x5e01, 0x5e87, 0x75f9, 0x95ed, 0x655d, 0x5f0a, 0x5fc5,
- 0x8f9f, 0x58c1, 0x81c2, 0x907f, 0x965b, 0x97ad, 0x8fb9, 0x7f16,
- 0x8d2c, 0x6241, 0x4fbf, 0x53d8, 0x535e, 0x8fa8, 0x8fa9, 0x8fab,
- 0x904d, 0x6807, 0x5f6a, 0x8198, 0x8868, 0x9cd6, 0x618b, 0x522b,
- 0x762a, 0x5f6c, 0x658c, 0x6fd2, 0x6ee8, 0x5bbe, 0x6448, 0x5175,
- 0x51b0, 0x67c4, 0x4e19, 0x79c9, 0x997c, 0x70b3,
- /* 0x32 */
- 0x75c5, 0x5e76, 0x73bb, 0x83e0, 0x64ad, 0x62e8, 0x94b5, 0x6ce2,
- 0x535a, 0x52c3, 0x640f, 0x94c2, 0x7b94, 0x4f2f, 0x5e1b, 0x8236,
- 0x8116, 0x818a, 0x6e24, 0x6cca, 0x9a73, 0x6355, 0x535c, 0x54fa,
- 0x8865, 0x57e0, 0x4e0d, 0x5e03, 0x6b65, 0x7c3f, 0x90e8, 0x6016,
- 0x64e6, 0x731c, 0x88c1, 0x6750, 0x624d, 0x8d22, 0x776c, 0x8e29,
- 0x91c7, 0x5f69, 0x83dc, 0x8521, 0x9910, 0x53c2, 0x8695, 0x6b8b,
- 0x60ed, 0x60e8, 0x707f, 0x82cd, 0x8231, 0x4ed3, 0x6ca7, 0x85cf,
- 0x64cd, 0x7cd9, 0x69fd, 0x66f9, 0x8349, 0x5395, 0x7b56, 0x4fa7,
- 0x518c, 0x6d4b, 0x5c42, 0x8e6d, 0x63d2, 0x53c9, 0x832c, 0x8336,
- 0x67e5, 0x78b4, 0x643d, 0x5bdf, 0x5c94, 0x5dee, 0x8be7, 0x62c6,
- 0x67f4, 0x8c7a, 0x6400, 0x63ba, 0x8749, 0x998b, 0x8c17, 0x7f20,
- 0x94f2, 0x4ea7, 0x9610, 0x98a4, 0x660c, 0x7316,
- /* 0x33 */
- 0x573a, 0x5c1d, 0x5e38, 0x957f, 0x507f, 0x80a0, 0x5382, 0x655e,
- 0x7545, 0x5531, 0x5021, 0x8d85, 0x6284, 0x949e, 0x671d, 0x5632,
- 0x6f6e, 0x5de2, 0x5435, 0x7092, 0x8f66, 0x626f, 0x64a4, 0x63a3,
- 0x5f7b, 0x6f88, 0x90f4, 0x81e3, 0x8fb0, 0x5c18, 0x6668, 0x5ff1,
- 0x6c89, 0x9648, 0x8d81, 0x886c, 0x6491, 0x79f0, 0x57ce, 0x6a59,
- 0x6210, 0x5448, 0x4e58, 0x7a0b, 0x60e9, 0x6f84, 0x8bda, 0x627f,
- 0x901e, 0x9a8b, 0x79e4, 0x5403, 0x75f4, 0x6301, 0x5319, 0x6c60,
- 0x8fdf, 0x5f1b, 0x9a70, 0x803b, 0x9f7f, 0x4f88, 0x5c3a, 0x8d64,
- 0x7fc5, 0x65a5, 0x70bd, 0x5145, 0x51b2, 0x866b, 0x5d07, 0x5ba0,
- 0x62bd, 0x916c, 0x7574, 0x8e0c, 0x7a20, 0x6101, 0x7b79, 0x4ec7,
- 0x7ef8, 0x7785, 0x4e11, 0x81ed, 0x521d, 0x51fa, 0x6a71, 0x53a8,
- 0x8e87, 0x9504, 0x96cf, 0x6ec1, 0x9664, 0x695a,
- /* 0x34 */
- 0x7840, 0x50a8, 0x77d7, 0x6410, 0x89e6, 0x5904, 0x63e3, 0x5ddd,
- 0x7a7f, 0x693d, 0x4f20, 0x8239, 0x5598, 0x4e32, 0x75ae, 0x7a97,
- 0x5e62, 0x5e8a, 0x95ef, 0x521b, 0x5439, 0x708a, 0x6376, 0x9524,
- 0x5782, 0x6625, 0x693f, 0x9187, 0x5507, 0x6df3, 0x7eaf, 0x8822,
- 0x6233, 0x7ef0, 0x75b5, 0x8328, 0x78c1, 0x96cc, 0x8f9e, 0x6148,
- 0x74f7, 0x8bcd, 0x6b64, 0x523a, 0x8d50, 0x6b21, 0x806a, 0x8471,
- 0x56f1, 0x5306, 0x4ece, 0x4e1b, 0x51d1, 0x7c97, 0x918b, 0x7c07,
- 0x4fc3, 0x8e7f, 0x7be1, 0x7a9c, 0x6467, 0x5d14, 0x50ac, 0x8106,
- 0x7601, 0x7cb9, 0x6dec, 0x7fe0, 0x6751, 0x5b58, 0x5bf8, 0x78cb,
- 0x64ae, 0x6413, 0x63aa, 0x632b, 0x9519, 0x642d, 0x8fbe, 0x7b54,
- 0x7629, 0x6253, 0x5927, 0x5446, 0x6b79, 0x50a3, 0x6234, 0x5e26,
- 0x6b86, 0x4ee3, 0x8d37, 0x888b, 0x5f85, 0x902e,
- /* 0x35 */
- 0x6020, 0x803d, 0x62c5, 0x4e39, 0x5355, 0x90f8, 0x63b8, 0x80c6,
- 0x65e6, 0x6c2e, 0x4f46, 0x60ee, 0x6de1, 0x8bde, 0x5f39, 0x86cb,
- 0x5f53, 0x6321, 0x515a, 0x8361, 0x6863, 0x5200, 0x6363, 0x8e48,
- 0x5012, 0x5c9b, 0x7977, 0x5bfc, 0x5230, 0x7a3b, 0x60bc, 0x9053,
- 0x76d7, 0x5fb7, 0x5f97, 0x7684, 0x8e6c, 0x706f, 0x767b, 0x7b49,
- 0x77aa, 0x51f3, 0x9093, 0x5824, 0x4f4e, 0x6ef4, 0x8fea, 0x654c,
- 0x7b1b, 0x72c4, 0x6da4, 0x7fdf, 0x5ae1, 0x62b5, 0x5e95, 0x5730,
- 0x8482, 0x7b2c, 0x5e1d, 0x5f1f, 0x9012, 0x7f14, 0x98a0, 0x6382,
- 0x6ec7, 0x7898, 0x70b9, 0x5178, 0x975b, 0x57ab, 0x7535, 0x4f43,
- 0x7538, 0x5e97, 0x60e6, 0x5960, 0x6dc0, 0x6bbf, 0x7889, 0x53fc,
- 0x96d5, 0x51cb, 0x5201, 0x6389, 0x540a, 0x9493, 0x8c03, 0x8dcc,
- 0x7239, 0x789f, 0x8776, 0x8fed, 0x8c0d, 0x53e0,
- /* 0x36 */
- 0x4e01, 0x76ef, 0x53ee, 0x9489, 0x9876, 0x9f0e, 0x952d, 0x5b9a,
- 0x8ba2, 0x4e22, 0x4e1c, 0x51ac, 0x8463, 0x61c2, 0x52a8, 0x680b,
- 0x4f97, 0x606b, 0x51bb, 0x6d1e, 0x515c, 0x6296, 0x6597, 0x9661,
- 0x8c46, 0x9017, 0x75d8, 0x90fd, 0x7763, 0x6bd2, 0x728a, 0x72ec,
- 0x8bfb, 0x5835, 0x7779, 0x8d4c, 0x675c, 0x9540, 0x809a, 0x5ea6,
- 0x6e21, 0x5992, 0x7aef, 0x77ed, 0x953b, 0x6bb5, 0x65ad, 0x7f0e,
- 0x5806, 0x5151, 0x961f, 0x5bf9, 0x58a9, 0x5428, 0x8e72, 0x6566,
- 0x987f, 0x56e4, 0x949d, 0x76fe, 0x9041, 0x6387, 0x54c6, 0x591a,
- 0x593a, 0x579b, 0x8eb2, 0x6735, 0x8dfa, 0x8235, 0x5241, 0x60f0,
- 0x5815, 0x86fe, 0x5ce8, 0x9e45, 0x4fc4, 0x989d, 0x8bb9, 0x5a25,
- 0x6076, 0x5384, 0x627c, 0x904f, 0x9102, 0x997f, 0x6069, 0x800c,
- 0x513f, 0x8033, 0x5c14, 0x9975, 0x6d31, 0x4e8c,
- /* 0x37 */
- 0x8d30, 0x53d1, 0x7f5a, 0x7b4f, 0x4f10, 0x4e4f, 0x9600, 0x6cd5,
- 0x73d0, 0x85e9, 0x5e06, 0x756a, 0x7ffb, 0x6a0a, 0x77fe, 0x9492,
- 0x7e41, 0x51e1, 0x70e6, 0x53cd, 0x8fd4, 0x8303, 0x8d29, 0x72af,
- 0x996d, 0x6cdb, 0x574a, 0x82b3, 0x65b9, 0x80aa, 0x623f, 0x9632,
- 0x59a8, 0x4eff, 0x8bbf, 0x7eba, 0x653e, 0x83f2, 0x975e, 0x5561,
- 0x98de, 0x80a5, 0x532a, 0x8bfd, 0x5420, 0x80ba, 0x5e9f, 0x6cb8,
- 0x8d39, 0x82ac, 0x915a, 0x5429, 0x6c1b, 0x5206, 0x7eb7, 0x575f,
- 0x711a, 0x6c7e, 0x7c89, 0x594b, 0x4efd, 0x5fff, 0x6124, 0x7caa,
- 0x4e30, 0x5c01, 0x67ab, 0x8702, 0x5cf0, 0x950b, 0x98ce, 0x75af,
- 0x70fd, 0x9022, 0x51af, 0x7f1d, 0x8bbd, 0x5949, 0x51e4, 0x4f5b,
- 0x5426, 0x592b, 0x6577, 0x80a4, 0x5b75, 0x6276, 0x62c2, 0x8f90,
- 0x5e45, 0x6c1f, 0x7b26, 0x4f0f, 0x4fd8, 0x670d,
- /* 0x38 */
- 0x6d6e, 0x6daa, 0x798f, 0x88b1, 0x5f17, 0x752b, 0x629a, 0x8f85,
- 0x4fef, 0x91dc, 0x65a7, 0x812f, 0x8151, 0x5e9c, 0x8150, 0x8d74,
- 0x526f, 0x8986, 0x8d4b, 0x590d, 0x5085, 0x4ed8, 0x961c, 0x7236,
- 0x8179, 0x8d1f, 0x5bcc, 0x8ba3, 0x9644, 0x5987, 0x7f1a, 0x5490,
- 0x5676, 0x560e, 0x8be5, 0x6539, 0x6982, 0x9499, 0x76d6, 0x6e89,
- 0x5e72, 0x7518, 0x6746, 0x67d1, 0x7aff, 0x809d, 0x8d76, 0x611f,
- 0x79c6, 0x6562, 0x8d63, 0x5188, 0x521a, 0x94a2, 0x7f38, 0x809b,
- 0x7eb2, 0x5c97, 0x6e2f, 0x6760, 0x7bd9, 0x768b, 0x9ad8, 0x818f,
- 0x7f94, 0x7cd5, 0x641e, 0x9550, 0x7a3f, 0x544a, 0x54e5, 0x6b4c,
- 0x6401, 0x6208, 0x9e3d, 0x80f3, 0x7599, 0x5272, 0x9769, 0x845b,
- 0x683c, 0x86e4, 0x9601, 0x9694, 0x94ec, 0x4e2a, 0x5404, 0x7ed9,
- 0x6839, 0x8ddf, 0x8015, 0x66f4, 0x5e9a, 0x7fb9,
- /* 0x39 */
- 0x57c2, 0x803f, 0x6897, 0x5de5, 0x653b, 0x529f, 0x606d, 0x9f9a,
- 0x4f9b, 0x8eac, 0x516c, 0x5bab, 0x5f13, 0x5de9, 0x6c5e, 0x62f1,
- 0x8d21, 0x5171, 0x94a9, 0x52fe, 0x6c9f, 0x82df, 0x72d7, 0x57a2,
- 0x6784, 0x8d2d, 0x591f, 0x8f9c, 0x83c7, 0x5495, 0x7b8d, 0x4f30,
- 0x6cbd, 0x5b64, 0x59d1, 0x9f13, 0x53e4, 0x86ca, 0x9aa8, 0x8c37,
- 0x80a1, 0x6545, 0x987e, 0x56fa, 0x96c7, 0x522e, 0x74dc, 0x5250,
- 0x5be1, 0x6302, 0x8902, 0x4e56, 0x62d0, 0x602a, 0x68fa, 0x5173,
- 0x5b98, 0x51a0, 0x89c2, 0x7ba1, 0x9986, 0x7f50, 0x60ef, 0x704c,
- 0x8d2f, 0x5149, 0x5e7f, 0x901b, 0x7470, 0x89c4, 0x572d, 0x7845,
- 0x5f52, 0x9f9f, 0x95fa, 0x8f68, 0x9b3c, 0x8be1, 0x7678, 0x6842,
- 0x67dc, 0x8dea, 0x8d35, 0x523d, 0x8f8a, 0x6eda, 0x68cd, 0x9505,
- 0x90ed, 0x56fd, 0x679c, 0x88f9, 0x8fc7, 0x54c8,
- /* 0x3a */
- 0x9ab8, 0x5b69, 0x6d77, 0x6c26, 0x4ea5, 0x5bb3, 0x9a87, 0x9163,
- 0x61a8, 0x90af, 0x97e9, 0x542b, 0x6db5, 0x5bd2, 0x51fd, 0x558a,
- 0x7f55, 0x7ff0, 0x64bc, 0x634d, 0x65f1, 0x61be, 0x608d, 0x710a,
- 0x6c57, 0x6c49, 0x592f, 0x676d, 0x822a, 0x58d5, 0x568e, 0x8c6a,
- 0x6beb, 0x90dd, 0x597d, 0x8017, 0x53f7, 0x6d69, 0x5475, 0x559d,
- 0x8377, 0x83cf, 0x6838, 0x79be, 0x548c, 0x4f55, 0x5408, 0x76d2,
- 0x8c89, 0x9602, 0x6cb3, 0x6db8, 0x8d6b, 0x8910, 0x9e64, 0x8d3a,
- 0x563f, 0x9ed1, 0x75d5, 0x5f88, 0x72e0, 0x6068, 0x54fc, 0x4ea8,
- 0x6a2a, 0x8861, 0x6052, 0x8f70, 0x54c4, 0x70d8, 0x8679, 0x9e3f,
- 0x6d2a, 0x5b8f, 0x5f18, 0x7ea2, 0x5589, 0x4faf, 0x7334, 0x543c,
- 0x539a, 0x5019, 0x540e, 0x547c, 0x4e4e, 0x5ffd, 0x745a, 0x58f6,
- 0x846b, 0x80e1, 0x8774, 0x72d0, 0x7cca, 0x6e56,
- /* 0x3b */
- 0x5f27, 0x864e, 0x552c, 0x62a4, 0x4e92, 0x6caa, 0x6237, 0x82b1,
- 0x54d7, 0x534e, 0x733e, 0x6ed1, 0x753b, 0x5212, 0x5316, 0x8bdd,
- 0x69d0, 0x5f8a, 0x6000, 0x6dee, 0x574f, 0x6b22, 0x73af, 0x6853,
- 0x8fd8, 0x7f13, 0x6362, 0x60a3, 0x5524, 0x75ea, 0x8c62, 0x7115,
- 0x6da3, 0x5ba6, 0x5e7b, 0x8352, 0x614c, 0x9ec4, 0x78fa, 0x8757,
- 0x7c27, 0x7687, 0x51f0, 0x60f6, 0x714c, 0x6643, 0x5e4c, 0x604d,
- 0x8c0e, 0x7070, 0x6325, 0x8f89, 0x5fbd, 0x6062, 0x86d4, 0x56de,
- 0x6bc1, 0x6094, 0x6167, 0x5349, 0x60e0, 0x6666, 0x8d3f, 0x79fd,
- 0x4f1a, 0x70e9, 0x6c47, 0x8bb3, 0x8bf2, 0x7ed8, 0x8364, 0x660f,
- 0x5a5a, 0x9b42, 0x6d51, 0x6df7, 0x8c41, 0x6d3b, 0x4f19, 0x706b,
- 0x83b7, 0x6216, 0x60d1, 0x970d, 0x8d27, 0x7978, 0x51fb, 0x573e,
- 0x57fa, 0x673a, 0x7578, 0x7a3d, 0x79ef, 0x7b95,
- /* 0x3c */
- 0x808c, 0x9965, 0x8ff9, 0x6fc0, 0x8ba5, 0x9e21, 0x59ec, 0x7ee9,
- 0x7f09, 0x5409, 0x6781, 0x68d8, 0x8f91, 0x7c4d, 0x96c6, 0x53ca,
- 0x6025, 0x75be, 0x6c72, 0x5373, 0x5ac9, 0x7ea7, 0x6324, 0x51e0,
- 0x810a, 0x5df1, 0x84df, 0x6280, 0x5180, 0x5b63, 0x4f0e, 0x796d,
- 0x5242, 0x60b8, 0x6d4e, 0x5bc4, 0x5bc2, 0x8ba1, 0x8bb0, 0x65e2,
- 0x5fcc, 0x9645, 0x5993, 0x7ee7, 0x7eaa, 0x5609, 0x67b7, 0x5939,
- 0x4f73, 0x5bb6, 0x52a0, 0x835a, 0x988a, 0x8d3e, 0x7532, 0x94be,
- 0x5047, 0x7a3c, 0x4ef7, 0x67b6, 0x9a7e, 0x5ac1, 0x6b7c, 0x76d1,
- 0x575a, 0x5c16, 0x7b3a, 0x95f4, 0x714e, 0x517c, 0x80a9, 0x8270,
- 0x5978, 0x7f04, 0x8327, 0x68c0, 0x67ec, 0x78b1, 0x7877, 0x62e3,
- 0x6361, 0x7b80, 0x4fed, 0x526a, 0x51cf, 0x8350, 0x69db, 0x9274,
- 0x8df5, 0x8d31, 0x89c1, 0x952e, 0x7bad, 0x4ef6,
- /* 0x3d */
- 0x5065, 0x8230, 0x5251, 0x996f, 0x6e10, 0x6e85, 0x6da7, 0x5efa,
- 0x50f5, 0x59dc, 0x5c06, 0x6d46, 0x6c5f, 0x7586, 0x848b, 0x6868,
- 0x5956, 0x8bb2, 0x5320, 0x9171, 0x964d, 0x8549, 0x6912, 0x7901,
- 0x7126, 0x80f6, 0x4ea4, 0x90ca, 0x6d47, 0x9a84, 0x5a07, 0x56bc,
- 0x6405, 0x94f0, 0x77eb, 0x4fa5, 0x811a, 0x72e1, 0x89d2, 0x997a,
- 0x7f34, 0x7ede, 0x527f, 0x6559, 0x9175, 0x8f7f, 0x8f83, 0x53eb,
- 0x7a96, 0x63ed, 0x63a5, 0x7686, 0x79f8, 0x8857, 0x9636, 0x622a,
- 0x52ab, 0x8282, 0x6854, 0x6770, 0x6377, 0x776b, 0x7aed, 0x6d01,
- 0x7ed3, 0x89e3, 0x59d0, 0x6212, 0x85c9, 0x82a5, 0x754c, 0x501f,
- 0x4ecb, 0x75a5, 0x8beb, 0x5c4a, 0x5dfe, 0x7b4b, 0x65a4, 0x91d1,
- 0x4eca, 0x6d25, 0x895f, 0x7d27, 0x9526, 0x4ec5, 0x8c28, 0x8fdb,
- 0x9773, 0x664b, 0x7981, 0x8fd1, 0x70ec, 0x6d78,
- /* 0x3e */
- 0x5c3d, 0x52b2, 0x8346, 0x5162, 0x830e, 0x775b, 0x6676, 0x9cb8,
- 0x4eac, 0x60ca, 0x7cbe, 0x7cb3, 0x7ecf, 0x4e95, 0x8b66, 0x666f,
- 0x9888, 0x9759, 0x5883, 0x656c, 0x955c, 0x5f84, 0x75c9, 0x9756,
- 0x7adf, 0x7ade, 0x51c0, 0x70af, 0x7a98, 0x63ea, 0x7a76, 0x7ea0,
- 0x7396, 0x97ed, 0x4e45, 0x7078, 0x4e5d, 0x9152, 0x53a9, 0x6551,
- 0x65e7, 0x81fc, 0x8205, 0x548e, 0x5c31, 0x759a, 0x97a0, 0x62d8,
- 0x72d9, 0x75bd, 0x5c45, 0x9a79, 0x83ca, 0x5c40, 0x5480, 0x77e9,
- 0x4e3e, 0x6cae, 0x805a, 0x62d2, 0x636e, 0x5de8, 0x5177, 0x8ddd,
- 0x8e1e, 0x952f, 0x4ff1, 0x53e5, 0x60e7, 0x70ac, 0x5267, 0x6350,
- 0x9e43, 0x5a1f, 0x5026, 0x7737, 0x5377, 0x7ee2, 0x6485, 0x652b,
- 0x6289, 0x6398, 0x5014, 0x7235, 0x89c9, 0x51b3, 0x8bc0, 0x7edd,
- 0x5747, 0x83cc, 0x94a7, 0x519b, 0x541b, 0x5cfb,
- /* 0x3f */
- 0x4fca, 0x7ae3, 0x6d5a, 0x90e1, 0x9a8f, 0x5580, 0x5496, 0x5361,
- 0x54af, 0x5f00, 0x63e9, 0x6977, 0x51ef, 0x6168, 0x520a, 0x582a,
- 0x52d8, 0x574e, 0x780d, 0x770b, 0x5eb7, 0x6177, 0x7ce0, 0x625b,
- 0x6297, 0x4ea2, 0x7095, 0x8003, 0x62f7, 0x70e4, 0x9760, 0x5777,
- 0x82db, 0x67ef, 0x68f5, 0x78d5, 0x9897, 0x79d1, 0x58f3, 0x54b3,
- 0x53ef, 0x6e34, 0x514b, 0x523b, 0x5ba2, 0x8bfe, 0x80af, 0x5543,
- 0x57a6, 0x6073, 0x5751, 0x542d, 0x7a7a, 0x6050, 0x5b54, 0x63a7,
- 0x62a0, 0x53e3, 0x6263, 0x5bc7, 0x67af, 0x54ed, 0x7a9f, 0x82e6,
- 0x9177, 0x5e93, 0x88e4, 0x5938, 0x57ae, 0x630e, 0x8de8, 0x80ef,
- 0x5757, 0x7b77, 0x4fa9, 0x5feb, 0x5bbd, 0x6b3e, 0x5321, 0x7b50,
- 0x72c2, 0x6846, 0x77ff, 0x7736, 0x65f7, 0x51b5, 0x4e8f, 0x76d4,
- 0x5cbf, 0x7aa5, 0x8475, 0x594e, 0x9b41, 0x5080,
- /* 0x40 */
- 0x9988, 0x6127, 0x6e83, 0x5764, 0x6606, 0x6346, 0x56f0, 0x62ec,
- 0x6269, 0x5ed3, 0x9614, 0x5783, 0x62c9, 0x5587, 0x8721, 0x814a,
- 0x8fa3, 0x5566, 0x83b1, 0x6765, 0x8d56, 0x84dd, 0x5a6a, 0x680f,
- 0x62e6, 0x7bee, 0x9611, 0x5170, 0x6f9c, 0x8c30, 0x63fd, 0x89c8,
- 0x61d2, 0x7f06, 0x70c2, 0x6ee5, 0x7405, 0x6994, 0x72fc, 0x5eca,
- 0x90ce, 0x6717, 0x6d6a, 0x635e, 0x52b3, 0x7262, 0x8001, 0x4f6c,
- 0x59e5, 0x916a, 0x70d9, 0x6d9d, 0x52d2, 0x4e50, 0x96f7, 0x956d,
- 0x857e, 0x78ca, 0x7d2f, 0x5121, 0x5792, 0x64c2, 0x808b, 0x7c7b,
- 0x6cea, 0x68f1, 0x695e, 0x51b7, 0x5398, 0x68a8, 0x7281, 0x9ece,
- 0x7bf1, 0x72f8, 0x79bb, 0x6f13, 0x7406, 0x674e, 0x91cc, 0x9ca4,
- 0x793c, 0x8389, 0x8354, 0x540f, 0x6817, 0x4e3d, 0x5389, 0x52b1,
- 0x783e, 0x5386, 0x5229, 0x5088, 0x4f8b, 0x4fd0,
- /* 0x41 */
- 0x75e2, 0x7acb, 0x7c92, 0x6ca5, 0x96b6, 0x529b, 0x7483, 0x54e9,
- 0x4fe9, 0x8054, 0x83b2, 0x8fde, 0x9570, 0x5ec9, 0x601c, 0x6d9f,
- 0x5e18, 0x655b, 0x8138, 0x94fe, 0x604b, 0x70bc, 0x7ec3, 0x7cae,
- 0x51c9, 0x6881, 0x7cb1, 0x826f, 0x4e24, 0x8f86, 0x91cf, 0x667e,
- 0x4eae, 0x8c05, 0x64a9, 0x804a, 0x50da, 0x7597, 0x71ce, 0x5be5,
- 0x8fbd, 0x6f66, 0x4e86, 0x6482, 0x9563, 0x5ed6, 0x6599, 0x5217,
- 0x88c2, 0x70c8, 0x52a3, 0x730e, 0x7433, 0x6797, 0x78f7, 0x9716,
- 0x4e34, 0x90bb, 0x9cde, 0x6dcb, 0x51db, 0x8d41, 0x541d, 0x62ce,
- 0x73b2, 0x83f1, 0x96f6, 0x9f84, 0x94c3, 0x4f36, 0x7f9a, 0x51cc,
- 0x7075, 0x9675, 0x5cad, 0x9886, 0x53e6, 0x4ee4, 0x6e9c, 0x7409,
- 0x69b4, 0x786b, 0x998f, 0x7559, 0x5218, 0x7624, 0x6d41, 0x67f3,
- 0x516d, 0x9f99, 0x804b, 0x5499, 0x7b3c, 0x7abf,
- /* 0x42 */
- 0x9686, 0x5784, 0x62e2, 0x9647, 0x697c, 0x5a04, 0x6402, 0x7bd3,
- 0x6f0f, 0x964b, 0x82a6, 0x5362, 0x9885, 0x5e90, 0x7089, 0x63b3,
- 0x5364, 0x864f, 0x9c81, 0x9e93, 0x788c, 0x9732, 0x8def, 0x8d42,
- 0x9e7f, 0x6f5e, 0x7984, 0x5f55, 0x9646, 0x622e, 0x9a74, 0x5415,
- 0x94dd, 0x4fa3, 0x65c5, 0x5c65, 0x5c61, 0x7f15, 0x8651, 0x6c2f,
- 0x5f8b, 0x7387, 0x6ee4, 0x7eff, 0x5ce6, 0x631b, 0x5b6a, 0x6ee6,
- 0x5375, 0x4e71, 0x63a0, 0x7565, 0x62a1, 0x8f6e, 0x4f26, 0x4ed1,
- 0x6ca6, 0x7eb6, 0x8bba, 0x841d, 0x87ba, 0x7f57, 0x903b, 0x9523,
- 0x7ba9, 0x9aa1, 0x88f8, 0x843d, 0x6d1b, 0x9a86, 0x7edc, 0x5988,
- 0x9ebb, 0x739b, 0x7801, 0x8682, 0x9a6c, 0x9a82, 0x561b, 0x5417,
- 0x57cb, 0x4e70, 0x9ea6, 0x5356, 0x8fc8, 0x8109, 0x7792, 0x9992,
- 0x86ee, 0x6ee1, 0x8513, 0x66fc, 0x6162, 0x6f2b,
- /* 0x43 */
- 0x8c29, 0x8292, 0x832b, 0x76f2, 0x6c13, 0x5fd9, 0x83bd, 0x732b,
- 0x8305, 0x951a, 0x6bdb, 0x77db, 0x94c6, 0x536f, 0x8302, 0x5192,
- 0x5e3d, 0x8c8c, 0x8d38, 0x4e48, 0x73ab, 0x679a, 0x6885, 0x9176,
- 0x9709, 0x7164, 0x6ca1, 0x7709, 0x5a92, 0x9541, 0x6bcf, 0x7f8e,
- 0x6627, 0x5bd0, 0x59b9, 0x5a9a, 0x95e8, 0x95f7, 0x4eec, 0x840c,
- 0x8499, 0x6aac, 0x76df, 0x9530, 0x731b, 0x68a6, 0x5b5f, 0x772f,
- 0x919a, 0x9761, 0x7cdc, 0x8ff7, 0x8c1c, 0x5f25, 0x7c73, 0x79d8,
- 0x89c5, 0x6ccc, 0x871c, 0x5bc6, 0x5e42, 0x68c9, 0x7720, 0x7ef5,
- 0x5195, 0x514d, 0x52c9, 0x5a29, 0x7f05, 0x9762, 0x82d7, 0x63cf,
- 0x7784, 0x85d0, 0x79d2, 0x6e3a, 0x5e99, 0x5999, 0x8511, 0x706d,
- 0x6c11, 0x62bf, 0x76bf, 0x654f, 0x60af, 0x95fd, 0x660e, 0x879f,
- 0x9e23, 0x94ed, 0x540d, 0x547d, 0x8c2c, 0x6478,
- /* 0x44 */
- 0x6479, 0x8611, 0x6a21, 0x819c, 0x78e8, 0x6469, 0x9b54, 0x62b9,
- 0x672b, 0x83ab, 0x58a8, 0x9ed8, 0x6cab, 0x6f20, 0x5bde, 0x964c,
- 0x8c0b, 0x725f, 0x67d0, 0x62c7, 0x7261, 0x4ea9, 0x59c6, 0x6bcd,
- 0x5893, 0x66ae, 0x5e55, 0x52df, 0x6155, 0x6728, 0x76ee, 0x7766,
- 0x7267, 0x7a46, 0x62ff, 0x54ea, 0x5450, 0x94a0, 0x90a3, 0x5a1c,
- 0x7eb3, 0x6c16, 0x4e43, 0x5976, 0x8010, 0x5948, 0x5357, 0x7537,
- 0x96be, 0x56ca, 0x6320, 0x8111, 0x607c, 0x95f9, 0x6dd6, 0x5462,
- 0x9981, 0x5185, 0x5ae9, 0x80fd, 0x59ae, 0x9713, 0x502a, 0x6ce5,
- 0x5c3c, 0x62df, 0x4f60, 0x533f, 0x817b, 0x9006, 0x6eba, 0x852b,
- 0x62c8, 0x5e74, 0x78be, 0x64b5, 0x637b, 0x5ff5, 0x5a18, 0x917f,
- 0x9e1f, 0x5c3f, 0x634f, 0x8042, 0x5b7d, 0x556e, 0x954a, 0x954d,
- 0x6d85, 0x60a8, 0x67e0, 0x72de, 0x51dd, 0x5b81,
- /* 0x45 */
- 0x62e7, 0x6cde, 0x725b, 0x626d, 0x94ae, 0x7ebd, 0x8113, 0x6d53,
- 0x519c, 0x5f04, 0x5974, 0x52aa, 0x6012, 0x5973, 0x6696, 0x8650,
- 0x759f, 0x632a, 0x61e6, 0x7cef, 0x8bfa, 0x54e6, 0x6b27, 0x9e25,
- 0x6bb4, 0x85d5, 0x5455, 0x5076, 0x6ca4, 0x556a, 0x8db4, 0x722c,
- 0x5e15, 0x6015, 0x7436, 0x62cd, 0x6392, 0x724c, 0x5f98, 0x6e43,
- 0x6d3e, 0x6500, 0x6f58, 0x76d8, 0x78d0, 0x76fc, 0x7554, 0x5224,
- 0x53db, 0x4e53, 0x5e9e, 0x65c1, 0x802a, 0x80d6, 0x629b, 0x5486,
- 0x5228, 0x70ae, 0x888d, 0x8dd1, 0x6ce1, 0x5478, 0x80da, 0x57f9,
- 0x88f4, 0x8d54, 0x966a, 0x914d, 0x4f69, 0x6c9b, 0x55b7, 0x76c6,
- 0x7830, 0x62a8, 0x70f9, 0x6f8e, 0x5f6d, 0x84ec, 0x68da, 0x787c,
- 0x7bf7, 0x81a8, 0x670b, 0x9e4f, 0x6367, 0x78b0, 0x576f, 0x7812,
- 0x9739, 0x6279, 0x62ab, 0x5288, 0x7435, 0x6bd7,
- /* 0x46 */
- 0x5564, 0x813e, 0x75b2, 0x76ae, 0x5339, 0x75de, 0x50fb, 0x5c41,
- 0x8b6c, 0x7bc7, 0x504f, 0x7247, 0x9a97, 0x98d8, 0x6f02, 0x74e2,
- 0x7968, 0x6487, 0x77a5, 0x62fc, 0x9891, 0x8d2b, 0x54c1, 0x8058,
- 0x4e52, 0x576a, 0x82f9, 0x840d, 0x5e73, 0x51ed, 0x74f6, 0x8bc4,
- 0x5c4f, 0x5761, 0x6cfc, 0x9887, 0x5a46, 0x7834, 0x9b44, 0x8feb,
- 0x7c95, 0x5256, 0x6251, 0x94fa, 0x4ec6, 0x8386, 0x8461, 0x83e9,
- 0x84b2, 0x57d4, 0x6734, 0x5703, 0x666e, 0x6d66, 0x8c31, 0x66dd,
- 0x7011, 0x671f, 0x6b3a, 0x6816, 0x621a, 0x59bb, 0x4e03, 0x51c4,
- 0x6f06, 0x67d2, 0x6c8f, 0x5176, 0x68cb, 0x5947, 0x6b67, 0x7566,
- 0x5d0e, 0x8110, 0x9f50, 0x65d7, 0x7948, 0x7941, 0x9a91, 0x8d77,
- 0x5c82, 0x4e5e, 0x4f01, 0x542f, 0x5951, 0x780c, 0x5668, 0x6c14,
- 0x8fc4, 0x5f03, 0x6c7d, 0x6ce3, 0x8bab, 0x6390,
- /* 0x47 */
- 0x6070, 0x6d3d, 0x7275, 0x6266, 0x948e, 0x94c5, 0x5343, 0x8fc1,
- 0x7b7e, 0x4edf, 0x8c26, 0x4e7e, 0x9ed4, 0x94b1, 0x94b3, 0x524d,
- 0x6f5c, 0x9063, 0x6d45, 0x8c34, 0x5811, 0x5d4c, 0x6b20, 0x6b49,
- 0x67aa, 0x545b, 0x8154, 0x7f8c, 0x5899, 0x8537, 0x5f3a, 0x62a2,
- 0x6a47, 0x9539, 0x6572, 0x6084, 0x6865, 0x77a7, 0x4e54, 0x4fa8,
- 0x5de7, 0x9798, 0x64ac, 0x7fd8, 0x5ced, 0x4fcf, 0x7a8d, 0x5207,
- 0x8304, 0x4e14, 0x602f, 0x7a83, 0x94a6, 0x4fb5, 0x4eb2, 0x79e6,
- 0x7434, 0x52e4, 0x82b9, 0x64d2, 0x79bd, 0x5bdd, 0x6c81, 0x9752,
- 0x8f7b, 0x6c22, 0x503e, 0x537f, 0x6e05, 0x64ce, 0x6674, 0x6c30,
- 0x60c5, 0x9877, 0x8bf7, 0x5e86, 0x743c, 0x7a77, 0x79cb, 0x4e18,
- 0x90b1, 0x7403, 0x6c42, 0x56da, 0x914b, 0x6cc5, 0x8d8b, 0x533a,
- 0x86c6, 0x66f2, 0x8eaf, 0x5c48, 0x9a71, 0x6e20,
- /* 0x48 */
- 0x53d6, 0x5a36, 0x9f8b, 0x8da3, 0x53bb, 0x5708, 0x98a7, 0x6743,
- 0x919b, 0x6cc9, 0x5168, 0x75ca, 0x62f3, 0x72ac, 0x5238, 0x529d,
- 0x7f3a, 0x7094, 0x7638, 0x5374, 0x9e4a, 0x69b7, 0x786e, 0x96c0,
- 0x88d9, 0x7fa4, 0x7136, 0x71c3, 0x5189, 0x67d3, 0x74e4, 0x58e4,
- 0x6518, 0x56b7, 0x8ba9, 0x9976, 0x6270, 0x7ed5, 0x60f9, 0x70ed,
- 0x58ec, 0x4ec1, 0x4eba, 0x5fcd, 0x97e7, 0x4efb, 0x8ba4, 0x5203,
- 0x598a, 0x7eab, 0x6254, 0x4ecd, 0x65e5, 0x620e, 0x8338, 0x84c9,
- 0x8363, 0x878d, 0x7194, 0x6eb6, 0x5bb9, 0x7ed2, 0x5197, 0x63c9,
- 0x67d4, 0x8089, 0x8339, 0x8815, 0x5112, 0x5b7a, 0x5982, 0x8fb1,
- 0x4e73, 0x6c5d, 0x5165, 0x8925, 0x8f6f, 0x962e, 0x854a, 0x745e,
- 0x9510, 0x95f0, 0x6da6, 0x82e5, 0x5f31, 0x6492, 0x6d12, 0x8428,
- 0x816e, 0x9cc3, 0x585e, 0x8d5b, 0x4e09, 0x53c1,
- /* 0x49 */
- 0x4f1e, 0x6563, 0x6851, 0x55d3, 0x4e27, 0x6414, 0x9a9a, 0x626b,
- 0x5ac2, 0x745f, 0x8272, 0x6da9, 0x68ee, 0x50e7, 0x838e, 0x7802,
- 0x6740, 0x5239, 0x6c99, 0x7eb1, 0x50bb, 0x5565, 0x715e, 0x7b5b,
- 0x6652, 0x73ca, 0x82eb, 0x6749, 0x5c71, 0x5220, 0x717d, 0x886b,
- 0x95ea, 0x9655, 0x64c5, 0x8d61, 0x81b3, 0x5584, 0x6c55, 0x6247,
- 0x7f2e, 0x5892, 0x4f24, 0x5546, 0x8d4f, 0x664c, 0x4e0a, 0x5c1a,
- 0x88f3, 0x68a2, 0x634e, 0x7a0d, 0x70e7, 0x828d, 0x52fa, 0x97f6,
- 0x5c11, 0x54e8, 0x90b5, 0x7ecd, 0x5962, 0x8d4a, 0x86c7, 0x820c,
- 0x820d, 0x8d66, 0x6444, 0x5c04, 0x6151, 0x6d89, 0x793e, 0x8bbe,
- 0x7837, 0x7533, 0x547b, 0x4f38, 0x8eab, 0x6df1, 0x5a20, 0x7ec5,
- 0x795e, 0x6c88, 0x5ba1, 0x5a76, 0x751a, 0x80be, 0x614e, 0x6e17,
- 0x58f0, 0x751f, 0x7525, 0x7272, 0x5347, 0x7ef3,
- /* 0x4a */
- 0x7701, 0x76db, 0x5269, 0x80dc, 0x5723, 0x5e08, 0x5931, 0x72ee,
- 0x65bd, 0x6e7f, 0x8bd7, 0x5c38, 0x8671, 0x5341, 0x77f3, 0x62fe,
- 0x65f6, 0x4ec0, 0x98df, 0x8680, 0x5b9e, 0x8bc6, 0x53f2, 0x77e2,
- 0x4f7f, 0x5c4e, 0x9a76, 0x59cb, 0x5f0f, 0x793a, 0x58eb, 0x4e16,
- 0x67ff, 0x4e8b, 0x62ed, 0x8a93, 0x901d, 0x52bf, 0x662f, 0x55dc,
- 0x566c, 0x9002, 0x4ed5, 0x4f8d, 0x91ca, 0x9970, 0x6c0f, 0x5e02,
- 0x6043, 0x5ba4, 0x89c6, 0x8bd5, 0x6536, 0x624b, 0x9996, 0x5b88,
- 0x5bff, 0x6388, 0x552e, 0x53d7, 0x7626, 0x517d, 0x852c, 0x67a2,
- 0x68b3, 0x6b8a, 0x6292, 0x8f93, 0x53d4, 0x8212, 0x6dd1, 0x758f,
- 0x4e66, 0x8d4e, 0x5b70, 0x719f, 0x85af, 0x6691, 0x66d9, 0x7f72,
- 0x8700, 0x9ecd, 0x9f20, 0x5c5e, 0x672f, 0x8ff0, 0x6811, 0x675f,
- 0x620d, 0x7ad6, 0x5885, 0x5eb6, 0x6570, 0x6f31,
- /* 0x4b */
- 0x6055, 0x5237, 0x800d, 0x6454, 0x8870, 0x7529, 0x5e05, 0x6813,
- 0x62f4, 0x971c, 0x53cc, 0x723d, 0x8c01, 0x6c34, 0x7761, 0x7a0e,
- 0x542e, 0x77ac, 0x987a, 0x821c, 0x8bf4, 0x7855, 0x6714, 0x70c1,
- 0x65af, 0x6495, 0x5636, 0x601d, 0x79c1, 0x53f8, 0x4e1d, 0x6b7b,
- 0x8086, 0x5bfa, 0x55e3, 0x56db, 0x4f3a, 0x4f3c, 0x9972, 0x5df3,
- 0x677e, 0x8038, 0x6002, 0x9882, 0x9001, 0x5b8b, 0x8bbc, 0x8bf5,
- 0x641c, 0x8258, 0x64de, 0x55fd, 0x82cf, 0x9165, 0x4fd7, 0x7d20,
- 0x901f, 0x7c9f, 0x50f3, 0x5851, 0x6eaf, 0x5bbf, 0x8bc9, 0x8083,
- 0x9178, 0x849c, 0x7b97, 0x867d, 0x968b, 0x968f, 0x7ee5, 0x9ad3,
- 0x788e, 0x5c81, 0x7a57, 0x9042, 0x96a7, 0x795f, 0x5b59, 0x635f,
- 0x7b0b, 0x84d1, 0x68ad, 0x5506, 0x7f29, 0x7410, 0x7d22, 0x9501,
- 0x6240, 0x584c, 0x4ed6, 0x5b83, 0x5979, 0x5854,
- /* 0x4c */
- 0x736d, 0x631e, 0x8e4b, 0x8e0f, 0x80ce, 0x82d4, 0x62ac, 0x53f0,
- 0x6cf0, 0x915e, 0x592a, 0x6001, 0x6c70, 0x574d, 0x644a, 0x8d2a,
- 0x762b, 0x6ee9, 0x575b, 0x6a80, 0x75f0, 0x6f6d, 0x8c2d, 0x8c08,
- 0x5766, 0x6bef, 0x8892, 0x78b3, 0x63a2, 0x53f9, 0x70ad, 0x6c64,
- 0x5858, 0x642a, 0x5802, 0x68e0, 0x819b, 0x5510, 0x7cd6, 0x5018,
- 0x8eba, 0x6dcc, 0x8d9f, 0x70eb, 0x638f, 0x6d9b, 0x6ed4, 0x7ee6,
- 0x8404, 0x6843, 0x9003, 0x6dd8, 0x9676, 0x8ba8, 0x5957, 0x7279,
- 0x85e4, 0x817e, 0x75bc, 0x8a8a, 0x68af, 0x5254, 0x8e22, 0x9511,
- 0x63d0, 0x9898, 0x8e44, 0x557c, 0x4f53, 0x66ff, 0x568f, 0x60d5,
- 0x6d95, 0x5243, 0x5c49, 0x5929, 0x6dfb, 0x586b, 0x7530, 0x751c,
- 0x606c, 0x8214, 0x8146, 0x6311, 0x6761, 0x8fe2, 0x773a, 0x8df3,
- 0x8d34, 0x94c1, 0x5e16, 0x5385, 0x542c, 0x70c3,
- /* 0x4d */
- 0x6c40, 0x5ef7, 0x505c, 0x4ead, 0x5ead, 0x633a, 0x8247, 0x901a,
- 0x6850, 0x916e, 0x77b3, 0x540c, 0x94dc, 0x5f64, 0x7ae5, 0x6876,
- 0x6345, 0x7b52, 0x7edf, 0x75db, 0x5077, 0x6295, 0x5934, 0x900f,
- 0x51f8, 0x79c3, 0x7a81, 0x56fe, 0x5f92, 0x9014, 0x6d82, 0x5c60,
- 0x571f, 0x5410, 0x5154, 0x6e4d, 0x56e2, 0x63a8, 0x9893, 0x817f,
- 0x8715, 0x892a, 0x9000, 0x541e, 0x5c6f, 0x81c0, 0x62d6, 0x6258,
- 0x8131, 0x9e35, 0x9640, 0x9a6e, 0x9a7c, 0x692d, 0x59a5, 0x62d3,
- 0x553e, 0x6316, 0x54c7, 0x86d9, 0x6d3c, 0x5a03, 0x74e6, 0x889c,
- 0x6b6a, 0x5916, 0x8c4c, 0x5f2f, 0x6e7e, 0x73a9, 0x987d, 0x4e38,
- 0x70f7, 0x5b8c, 0x7897, 0x633d, 0x665a, 0x7696, 0x60cb, 0x5b9b,
- 0x5a49, 0x4e07, 0x8155, 0x6c6a, 0x738b, 0x4ea1, 0x6789, 0x7f51,
- 0x5f80, 0x65fa, 0x671b, 0x5fd8, 0x5984, 0x5a01,
- /* 0x4e */
- 0x5dcd, 0x5fae, 0x5371, 0x97e6, 0x8fdd, 0x6845, 0x56f4, 0x552f,
- 0x60df, 0x4e3a, 0x6f4d, 0x7ef4, 0x82c7, 0x840e, 0x59d4, 0x4f1f,
- 0x4f2a, 0x5c3e, 0x7eac, 0x672a, 0x851a, 0x5473, 0x754f, 0x80c3,
- 0x5582, 0x9b4f, 0x4f4d, 0x6e2d, 0x8c13, 0x5c09, 0x6170, 0x536b,
- 0x761f, 0x6e29, 0x868a, 0x6587, 0x95fb, 0x7eb9, 0x543b, 0x7a33,
- 0x7d0a, 0x95ee, 0x55e1, 0x7fc1, 0x74ee, 0x631d, 0x8717, 0x6da1,
- 0x7a9d, 0x6211, 0x65a1, 0x5367, 0x63e1, 0x6c83, 0x5deb, 0x545c,
- 0x94a8, 0x4e4c, 0x6c61, 0x8bec, 0x5c4b, 0x65e0, 0x829c, 0x68a7,
- 0x543e, 0x5434, 0x6bcb, 0x6b66, 0x4e94, 0x6342, 0x5348, 0x821e,
- 0x4f0d, 0x4fae, 0x575e, 0x620a, 0x96fe, 0x6664, 0x7269, 0x52ff,
- 0x52a1, 0x609f, 0x8bef, 0x6614, 0x7199, 0x6790, 0x897f, 0x7852,
- 0x77fd, 0x6670, 0x563b, 0x5438, 0x9521, 0x727a,
- /* 0x4f */
- 0x7a00, 0x606f, 0x5e0c, 0x6089, 0x819d, 0x5915, 0x60dc, 0x7184,
- 0x70ef, 0x6eaa, 0x6c50, 0x7280, 0x6a84, 0x88ad, 0x5e2d, 0x4e60,
- 0x5ab3, 0x559c, 0x94e3, 0x6d17, 0x7cfb, 0x9699, 0x620f, 0x7ec6,
- 0x778e, 0x867e, 0x5323, 0x971e, 0x8f96, 0x6687, 0x5ce1, 0x4fa0,
- 0x72ed, 0x4e0b, 0x53a6, 0x590f, 0x5413, 0x6380, 0x9528, 0x5148,
- 0x4ed9, 0x9c9c, 0x7ea4, 0x54b8, 0x8d24, 0x8854, 0x8237, 0x95f2,
- 0x6d8e, 0x5f26, 0x5acc, 0x663e, 0x9669, 0x73b0, 0x732e, 0x53bf,
- 0x817a, 0x9985, 0x7fa1, 0x5baa, 0x9677, 0x9650, 0x7ebf, 0x76f8,
- 0x53a2, 0x9576, 0x9999, 0x7bb1, 0x8944, 0x6e58, 0x4e61, 0x7fd4,
- 0x7965, 0x8be6, 0x60f3, 0x54cd, 0x4eab, 0x9879, 0x5df7, 0x6a61,
- 0x50cf, 0x5411, 0x8c61, 0x8427, 0x785d, 0x9704, 0x524a, 0x54ee,
- 0x56a3, 0x9500, 0x6d88, 0x5bb5, 0x6dc6, 0x6653,
- /* 0x50 */
- 0x5c0f, 0x5b5d, 0x6821, 0x8096, 0x5578, 0x7b11, 0x6548, 0x6954,
- 0x4e9b, 0x6b47, 0x874e, 0x978b, 0x534f, 0x631f, 0x643a, 0x90aa,
- 0x659c, 0x80c1, 0x8c10, 0x5199, 0x68b0, 0x5378, 0x87f9, 0x61c8,
- 0x6cc4, 0x6cfb, 0x8c22, 0x5c51, 0x85aa, 0x82af, 0x950c, 0x6b23,
- 0x8f9b, 0x65b0, 0x5ffb, 0x5fc3, 0x4fe1, 0x8845, 0x661f, 0x8165,
- 0x7329, 0x60fa, 0x5174, 0x5211, 0x578b, 0x5f62, 0x90a2, 0x884c,
- 0x9192, 0x5e78, 0x674f, 0x6027, 0x59d3, 0x5144, 0x51f6, 0x80f8,
- 0x5308, 0x6c79, 0x96c4, 0x718a, 0x4f11, 0x4fee, 0x7f9e, 0x673d,
- 0x55c5, 0x9508, 0x79c0, 0x8896, 0x7ee3, 0x589f, 0x620c, 0x9700,
- 0x865a, 0x5618, 0x987b, 0x5f90, 0x8bb8, 0x84c4, 0x9157, 0x53d9,
- 0x65ed, 0x5e8f, 0x755c, 0x6064, 0x7d6e, 0x5a7f, 0x7eea, 0x7eed,
- 0x8f69, 0x55a7, 0x5ba3, 0x60ac, 0x65cb, 0x7384,
- /* 0x51 */
- 0x9009, 0x7663, 0x7729, 0x7eda, 0x9774, 0x859b, 0x5b66, 0x7a74,
- 0x96ea, 0x8840, 0x52cb, 0x718f, 0x5faa, 0x65ec, 0x8be2, 0x5bfb,
- 0x9a6f, 0x5de1, 0x6b89, 0x6c5b, 0x8bad, 0x8baf, 0x900a, 0x8fc5,
- 0x538b, 0x62bc, 0x9e26, 0x9e2d, 0x5440, 0x4e2b, 0x82bd, 0x7259,
- 0x869c, 0x5d16, 0x8859, 0x6daf, 0x96c5, 0x54d1, 0x4e9a, 0x8bb6,
- 0x7109, 0x54bd, 0x9609, 0x70df, 0x6df9, 0x76d0, 0x4e25, 0x7814,
- 0x8712, 0x5ca9, 0x5ef6, 0x8a00, 0x989c, 0x960e, 0x708e, 0x6cbf,
- 0x5944, 0x63a9, 0x773c, 0x884d, 0x6f14, 0x8273, 0x5830, 0x71d5,
- 0x538c, 0x781a, 0x96c1, 0x5501, 0x5f66, 0x7130, 0x5bb4, 0x8c1a,
- 0x9a8c, 0x6b83, 0x592e, 0x9e2f, 0x79e7, 0x6768, 0x626c, 0x4f6f,
- 0x75a1, 0x7f8a, 0x6d0b, 0x9633, 0x6c27, 0x4ef0, 0x75d2, 0x517b,
- 0x6837, 0x6f3e, 0x9080, 0x8170, 0x5996, 0x7476,
- /* 0x52 */
- 0x6447, 0x5c27, 0x9065, 0x7a91, 0x8c23, 0x59da, 0x54ac, 0x8200,
- 0x836f, 0x8981, 0x8000, 0x6930, 0x564e, 0x8036, 0x7237, 0x91ce,
- 0x51b6, 0x4e5f, 0x9875, 0x6396, 0x4e1a, 0x53f6, 0x66f3, 0x814b,
- 0x591c, 0x6db2, 0x4e00, 0x58f9, 0x533b, 0x63d6, 0x94f1, 0x4f9d,
- 0x4f0a, 0x8863, 0x9890, 0x5937, 0x9057, 0x79fb, 0x4eea, 0x80f0,
- 0x7591, 0x6c82, 0x5b9c, 0x59e8, 0x5f5d, 0x6905, 0x8681, 0x501a,
- 0x5df2, 0x4e59, 0x77e3, 0x4ee5, 0x827a, 0x6291, 0x6613, 0x9091,
- 0x5c79, 0x4ebf, 0x5f79, 0x81c6, 0x9038, 0x8084, 0x75ab, 0x4ea6,
- 0x88d4, 0x610f, 0x6bc5, 0x5fc6, 0x4e49, 0x76ca, 0x6ea2, 0x8be3,
- 0x8bae, 0x8c0a, 0x8bd1, 0x5f02, 0x7ffc, 0x7fcc, 0x7ece, 0x8335,
- 0x836b, 0x56e0, 0x6bb7, 0x97f3, 0x9634, 0x59fb, 0x541f, 0x94f6,
- 0x6deb, 0x5bc5, 0x996e, 0x5c39, 0x5f15, 0x9690,
- /* 0x53 */
- 0x5370, 0x82f1, 0x6a31, 0x5a74, 0x9e70, 0x5e94, 0x7f28, 0x83b9,
- 0x8424, 0x8425, 0x8367, 0x8747, 0x8fce, 0x8d62, 0x76c8, 0x5f71,
- 0x9896, 0x786c, 0x6620, 0x54df, 0x62e5, 0x4f63, 0x81c3, 0x75c8,
- 0x5eb8, 0x96cd, 0x8e0a, 0x86f9, 0x548f, 0x6cf3, 0x6d8c, 0x6c38,
- 0x607f, 0x52c7, 0x7528, 0x5e7d, 0x4f18, 0x60a0, 0x5fe7, 0x5c24,
- 0x7531, 0x90ae, 0x94c0, 0x72b9, 0x6cb9, 0x6e38, 0x9149, 0x6709,
- 0x53cb, 0x53f3, 0x4f51, 0x91c9, 0x8bf1, 0x53c8, 0x5e7c, 0x8fc2,
- 0x6de4, 0x4e8e, 0x76c2, 0x6986, 0x865e, 0x611a, 0x8206, 0x4f59,
- 0x4fde, 0x903e, 0x9c7c, 0x6109, 0x6e1d, 0x6e14, 0x9685, 0x4e88,
- 0x5a31, 0x96e8, 0x4e0e, 0x5c7f, 0x79b9, 0x5b87, 0x8bed, 0x7fbd,
- 0x7389, 0x57df, 0x828b, 0x90c1, 0x5401, 0x9047, 0x55bb, 0x5cea,
- 0x5fa1, 0x6108, 0x6b32, 0x72f1, 0x80b2, 0x8a89,
- /* 0x54 */
- 0x6d74, 0x5bd3, 0x88d5, 0x9884, 0x8c6b, 0x9a6d, 0x9e33, 0x6e0a,
- 0x51a4, 0x5143, 0x57a3, 0x8881, 0x539f, 0x63f4, 0x8f95, 0x56ed,
- 0x5458, 0x5706, 0x733f, 0x6e90, 0x7f18, 0x8fdc, 0x82d1, 0x613f,
- 0x6028, 0x9662, 0x66f0, 0x7ea6, 0x8d8a, 0x8dc3, 0x94a5, 0x5cb3,
- 0x7ca4, 0x6708, 0x60a6, 0x9605, 0x8018, 0x4e91, 0x90e7, 0x5300,
- 0x9668, 0x5141, 0x8fd0, 0x8574, 0x915d, 0x6655, 0x97f5, 0x5b55,
- 0x531d, 0x7838, 0x6742, 0x683d, 0x54c9, 0x707e, 0x5bb0, 0x8f7d,
- 0x518d, 0x5728, 0x54b1, 0x6512, 0x6682, 0x8d5e, 0x8d43, 0x810f,
- 0x846c, 0x906d, 0x7cdf, 0x51ff, 0x85fb, 0x67a3, 0x65e9, 0x6fa1,
- 0x86a4, 0x8e81, 0x566a, 0x9020, 0x7682, 0x7076, 0x71e5, 0x8d23,
- 0x62e9, 0x5219, 0x6cfd, 0x8d3c, 0x600e, 0x589e, 0x618e, 0x66fe,
- 0x8d60, 0x624e, 0x55b3, 0x6e23, 0x672d, 0x8f67,
- /* 0x55 */
- 0x94e1, 0x95f8, 0x7728, 0x6805, 0x69a8, 0x548b, 0x4e4d, 0x70b8,
- 0x8bc8, 0x6458, 0x658b, 0x5b85, 0x7a84, 0x503a, 0x5be8, 0x77bb,
- 0x6be1, 0x8a79, 0x7c98, 0x6cbe, 0x76cf, 0x65a9, 0x8f97, 0x5d2d,
- 0x5c55, 0x8638, 0x6808, 0x5360, 0x6218, 0x7ad9, 0x6e5b, 0x7efd,
- 0x6a1f, 0x7ae0, 0x5f70, 0x6f33, 0x5f20, 0x638c, 0x6da8, 0x6756,
- 0x4e08, 0x5e10, 0x8d26, 0x4ed7, 0x80c0, 0x7634, 0x969c, 0x62db,
- 0x662d, 0x627e, 0x6cbc, 0x8d75, 0x7167, 0x7f69, 0x5146, 0x8087,
- 0x53ec, 0x906e, 0x6298, 0x54f2, 0x86f0, 0x8f99, 0x8005, 0x9517,
- 0x8517, 0x8fd9, 0x6d59, 0x73cd, 0x659f, 0x771f, 0x7504, 0x7827,
- 0x81fb, 0x8d1e, 0x9488, 0x4fa6, 0x6795, 0x75b9, 0x8bca, 0x9707,
- 0x632f, 0x9547, 0x9635, 0x84b8, 0x6323, 0x7741, 0x5f81, 0x72f0,
- 0x4e89, 0x6014, 0x6574, 0x62ef, 0x6b63, 0x653f,
- /* 0x56 */
- 0x5e27, 0x75c7, 0x90d1, 0x8bc1, 0x829d, 0x679d, 0x652f, 0x5431,
- 0x8718, 0x77e5, 0x80a2, 0x8102, 0x6c41, 0x4e4b, 0x7ec7, 0x804c,
- 0x76f4, 0x690d, 0x6b96, 0x6267, 0x503c, 0x4f84, 0x5740, 0x6307,
- 0x6b62, 0x8dbe, 0x53ea, 0x65e8, 0x7eb8, 0x5fd7, 0x631a, 0x63b7,
- 0x81f3, 0x81f4, 0x7f6e, 0x5e1c, 0x5cd9, 0x5236, 0x667a, 0x79e9,
- 0x7a1a, 0x8d28, 0x7099, 0x75d4, 0x6ede, 0x6cbb, 0x7a92, 0x4e2d,
- 0x76c5, 0x5fe0, 0x949f, 0x8877, 0x7ec8, 0x79cd, 0x80bf, 0x91cd,
- 0x4ef2, 0x4f17, 0x821f, 0x5468, 0x5dde, 0x6d32, 0x8bcc, 0x7ca5,
- 0x8f74, 0x8098, 0x5e1a, 0x5492, 0x76b1, 0x5b99, 0x663c, 0x9aa4,
- 0x73e0, 0x682a, 0x86db, 0x6731, 0x732a, 0x8bf8, 0x8bdb, 0x9010,
- 0x7af9, 0x70db, 0x716e, 0x62c4, 0x77a9, 0x5631, 0x4e3b, 0x8457,
- 0x67f1, 0x52a9, 0x86c0, 0x8d2e, 0x94f8, 0x7b51,
- /* 0x57 */
- 0x4f4f, 0x6ce8, 0x795d, 0x9a7b, 0x6293, 0x722a, 0x62fd, 0x4e13,
- 0x7816, 0x8f6c, 0x64b0, 0x8d5a, 0x7bc6, 0x6869, 0x5e84, 0x88c5,
- 0x5986, 0x649e, 0x58ee, 0x72b6, 0x690e, 0x9525, 0x8ffd, 0x8d58,
- 0x5760, 0x7f00, 0x8c06, 0x51c6, 0x6349, 0x62d9, 0x5353, 0x684c,
- 0x7422, 0x8301, 0x914c, 0x5544, 0x7740, 0x707c, 0x6d4a, 0x5179,
- 0x54a8, 0x8d44, 0x59ff, 0x6ecb, 0x6dc4, 0x5b5c, 0x7d2b, 0x4ed4,
- 0x7c7d, 0x6ed3, 0x5b50, 0x81ea, 0x6e0d, 0x5b57, 0x9b03, 0x68d5,
- 0x8e2a, 0x5b97, 0x7efc, 0x603b, 0x7eb5, 0x90b9, 0x8d70, 0x594f,
- 0x63cd, 0x79df, 0x8db3, 0x5352, 0x65cf, 0x7956, 0x8bc5, 0x963b,
- 0x7ec4, 0x94bb, 0x7e82, 0x5634, 0x9189, 0x6700, 0x7f6a, 0x5c0a,
- 0x9075, 0x6628, 0x5de6, 0x4f50, 0x67de, 0x505a, 0x4f5c, 0x5750,
- 0x5ea7, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- /* 0x58 */
- 0x4e8d, 0x4e0c, 0x5140, 0x4e10, 0x5eff, 0x5345, 0x4e15, 0x4e98,
- 0x4e1e, 0x9b32, 0x5b6c, 0x5669, 0x4e28, 0x79ba, 0x4e3f, 0x5315,
- 0x4e47, 0x592d, 0x723b, 0x536e, 0x6c10, 0x56df, 0x80e4, 0x9997,
- 0x6bd3, 0x777e, 0x9f17, 0x4e36, 0x4e9f, 0x9f10, 0x4e5c, 0x4e69,
- 0x4e93, 0x8288, 0x5b5b, 0x556c, 0x560f, 0x4ec4, 0x538d, 0x539d,
- 0x53a3, 0x53a5, 0x53ae, 0x9765, 0x8d5d, 0x531a, 0x53f5, 0x5326,
- 0x532e, 0x533e, 0x8d5c, 0x5366, 0x5363, 0x5202, 0x5208, 0x520e,
- 0x522d, 0x5233, 0x523f, 0x5240, 0x524c, 0x525e, 0x5261, 0x525c,
- 0x84af, 0x527d, 0x5282, 0x5281, 0x5290, 0x5293, 0x5182, 0x7f54,
- 0x4ebb, 0x4ec3, 0x4ec9, 0x4ec2, 0x4ee8, 0x4ee1, 0x4eeb, 0x4ede,
- 0x4f1b, 0x4ef3, 0x4f22, 0x4f64, 0x4ef5, 0x4f25, 0x4f27, 0x4f09,
- 0x4f2b, 0x4f5e, 0x4f67, 0x6538, 0x4f5a, 0x4f5d,
- /* 0x59 */
- 0x4f5f, 0x4f57, 0x4f32, 0x4f3d, 0x4f76, 0x4f74, 0x4f91, 0x4f89,
- 0x4f83, 0x4f8f, 0x4f7e, 0x4f7b, 0x4faa, 0x4f7c, 0x4fac, 0x4f94,
- 0x4fe6, 0x4fe8, 0x4fea, 0x4fc5, 0x4fda, 0x4fe3, 0x4fdc, 0x4fd1,
- 0x4fdf, 0x4ff8, 0x5029, 0x504c, 0x4ff3, 0x502c, 0x500f, 0x502e,
- 0x502d, 0x4ffe, 0x501c, 0x500c, 0x5025, 0x5028, 0x507e, 0x5043,
- 0x5055, 0x5048, 0x504e, 0x506c, 0x507b, 0x50a5, 0x50a7, 0x50a9,
- 0x50ba, 0x50d6, 0x5106, 0x50ed, 0x50ec, 0x50e6, 0x50ee, 0x5107,
- 0x510b, 0x4edd, 0x6c3d, 0x4f58, 0x4f65, 0x4fce, 0x9fa0, 0x6c46,
- 0x7c74, 0x516e, 0x5dfd, 0x9ec9, 0x9998, 0x5181, 0x5914, 0x52f9,
- 0x530d, 0x8a07, 0x5310, 0x51eb, 0x5919, 0x5155, 0x4ea0, 0x5156,
- 0x4eb3, 0x886e, 0x88a4, 0x4eb5, 0x8114, 0x88d2, 0x7980, 0x5b34,
- 0x8803, 0x7fb8, 0x51ab, 0x51b1, 0x51bd, 0x51bc,
- /* 0x5a */
- 0x51c7, 0x5196, 0x51a2, 0x51a5, 0x8ba0, 0x8ba6, 0x8ba7, 0x8baa,
- 0x8bb4, 0x8bb5, 0x8bb7, 0x8bc2, 0x8bc3, 0x8bcb, 0x8bcf, 0x8bce,
- 0x8bd2, 0x8bd3, 0x8bd4, 0x8bd6, 0x8bd8, 0x8bd9, 0x8bdc, 0x8bdf,
- 0x8be0, 0x8be4, 0x8be8, 0x8be9, 0x8bee, 0x8bf0, 0x8bf3, 0x8bf6,
- 0x8bf9, 0x8bfc, 0x8bff, 0x8c00, 0x8c02, 0x8c04, 0x8c07, 0x8c0c,
- 0x8c0f, 0x8c11, 0x8c12, 0x8c14, 0x8c15, 0x8c16, 0x8c19, 0x8c1b,
- 0x8c18, 0x8c1d, 0x8c1f, 0x8c20, 0x8c21, 0x8c25, 0x8c27, 0x8c2a,
- 0x8c2b, 0x8c2e, 0x8c2f, 0x8c32, 0x8c33, 0x8c35, 0x8c36, 0x5369,
- 0x537a, 0x961d, 0x9622, 0x9621, 0x9631, 0x962a, 0x963d, 0x963c,
- 0x9642, 0x9649, 0x9654, 0x965f, 0x9667, 0x966c, 0x9672, 0x9674,
- 0x9688, 0x968d, 0x9697, 0x96b0, 0x9097, 0x909b, 0x909d, 0x9099,
- 0x90ac, 0x90a1, 0x90b4, 0x90b3, 0x90b6, 0x90ba,
- /* 0x5b */
- 0x90b8, 0x90b0, 0x90cf, 0x90c5, 0x90be, 0x90d0, 0x90c4, 0x90c7,
- 0x90d3, 0x90e6, 0x90e2, 0x90dc, 0x90d7, 0x90db, 0x90eb, 0x90ef,
- 0x90fe, 0x9104, 0x9122, 0x911e, 0x9123, 0x9131, 0x912f, 0x9139,
- 0x9143, 0x9146, 0x520d, 0x5942, 0x52a2, 0x52ac, 0x52ad, 0x52be,
- 0x54ff, 0x52d0, 0x52d6, 0x52f0, 0x53df, 0x71ee, 0x77cd, 0x5ef4,
- 0x51f5, 0x51fc, 0x9b2f, 0x53b6, 0x5f01, 0x755a, 0x5def, 0x574c,
- 0x57a9, 0x57a1, 0x587e, 0x58bc, 0x58c5, 0x58d1, 0x5729, 0x572c,
- 0x572a, 0x5733, 0x5739, 0x572e, 0x572f, 0x575c, 0x573b, 0x5742,
- 0x5769, 0x5785, 0x576b, 0x5786, 0x577c, 0x577b, 0x5768, 0x576d,
- 0x5776, 0x5773, 0x57ad, 0x57a4, 0x578c, 0x57b2, 0x57cf, 0x57a7,
- 0x57b4, 0x5793, 0x57a0, 0x57d5, 0x57d8, 0x57da, 0x57d9, 0x57d2,
- 0x57b8, 0x57f4, 0x57ef, 0x57f8, 0x57e4, 0x57dd,
- /* 0x5c */
- 0x580b, 0x580d, 0x57fd, 0x57ed, 0x5800, 0x581e, 0x5819, 0x5844,
- 0x5820, 0x5865, 0x586c, 0x5881, 0x5889, 0x589a, 0x5880, 0x99a8,
- 0x9f19, 0x61ff, 0x8279, 0x827d, 0x827f, 0x828f, 0x828a, 0x82a8,
- 0x8284, 0x828e, 0x8291, 0x8297, 0x8299, 0x82ab, 0x82b8, 0x82be,
- 0x82b0, 0x82c8, 0x82ca, 0x82e3, 0x8298, 0x82b7, 0x82ae, 0x82cb,
- 0x82cc, 0x82c1, 0x82a9, 0x82b4, 0x82a1, 0x82aa, 0x829f, 0x82c4,
- 0x82ce, 0x82a4, 0x82e1, 0x8309, 0x82f7, 0x82e4, 0x830f, 0x8307,
- 0x82dc, 0x82f4, 0x82d2, 0x82d8, 0x830c, 0x82fb, 0x82d3, 0x8311,
- 0x831a, 0x8306, 0x8314, 0x8315, 0x82e0, 0x82d5, 0x831c, 0x8351,
- 0x835b, 0x835c, 0x8308, 0x8392, 0x833c, 0x8334, 0x8331, 0x839b,
- 0x835e, 0x832f, 0x834f, 0x8347, 0x8343, 0x835f, 0x8340, 0x8317,
- 0x8360, 0x832d, 0x833a, 0x8333, 0x8366, 0x8365,
- /* 0x5d */
- 0x8368, 0x831b, 0x8369, 0x836c, 0x836a, 0x836d, 0x836e, 0x83b0,
- 0x8378, 0x83b3, 0x83b4, 0x83a0, 0x83aa, 0x8393, 0x839c, 0x8385,
- 0x837c, 0x83b6, 0x83a9, 0x837d, 0x83b8, 0x837b, 0x8398, 0x839e,
- 0x83a8, 0x83ba, 0x83bc, 0x83c1, 0x8401, 0x83e5, 0x83d8, 0x5807,
- 0x8418, 0x840b, 0x83dd, 0x83fd, 0x83d6, 0x841c, 0x8438, 0x8411,
- 0x8406, 0x83d4, 0x83df, 0x840f, 0x8403, 0x83f8, 0x83f9, 0x83ea,
- 0x83c5, 0x83c0, 0x8426, 0x83f0, 0x83e1, 0x845c, 0x8451, 0x845a,
- 0x8459, 0x8473, 0x8487, 0x8488, 0x847a, 0x8489, 0x8478, 0x843c,
- 0x8446, 0x8469, 0x8476, 0x848c, 0x848e, 0x8431, 0x846d, 0x84c1,
- 0x84cd, 0x84d0, 0x84e6, 0x84bd, 0x84d3, 0x84ca, 0x84bf, 0x84ba,
- 0x84e0, 0x84a1, 0x84b9, 0x84b4, 0x8497, 0x84e5, 0x84e3, 0x850c,
- 0x750d, 0x8538, 0x84f0, 0x8539, 0x851f, 0x853a,
- /* 0x5e */
- 0x8556, 0x853b, 0x84ff, 0x84fc, 0x8559, 0x8548, 0x8568, 0x8564,
- 0x855e, 0x857a, 0x77a2, 0x8543, 0x8572, 0x857b, 0x85a4, 0x85a8,
- 0x8587, 0x858f, 0x8579, 0x85ae, 0x859c, 0x8585, 0x85b9, 0x85b7,
- 0x85b0, 0x85d3, 0x85c1, 0x85dc, 0x85ff, 0x8627, 0x8605, 0x8629,
- 0x8616, 0x863c, 0x5efe, 0x5f08, 0x593c, 0x5941, 0x8037, 0x5955,
- 0x595a, 0x5958, 0x530f, 0x5c22, 0x5c25, 0x5c2c, 0x5c34, 0x624c,
- 0x626a, 0x629f, 0x62bb, 0x62ca, 0x62da, 0x62d7, 0x62ee, 0x6322,
- 0x62f6, 0x6339, 0x634b, 0x6343, 0x63ad, 0x63f6, 0x6371, 0x637a,
- 0x638e, 0x63b4, 0x636d, 0x63ac, 0x638a, 0x6369, 0x63ae, 0x63bc,
- 0x63f2, 0x63f8, 0x63e0, 0x63ff, 0x63c4, 0x63de, 0x63ce, 0x6452,
- 0x63c6, 0x63be, 0x6445, 0x6441, 0x640b, 0x641b, 0x6420, 0x640c,
- 0x6426, 0x6421, 0x645e, 0x6484, 0x646d, 0x6496,
- /* 0x5f */
- 0x647a, 0x64b7, 0x64b8, 0x6499, 0x64ba, 0x64c0, 0x64d0, 0x64d7,
- 0x64e4, 0x64e2, 0x6509, 0x6525, 0x652e, 0x5f0b, 0x5fd2, 0x7519,
- 0x5f11, 0x535f, 0x53f1, 0x53fd, 0x53e9, 0x53e8, 0x53fb, 0x5412,
- 0x5416, 0x5406, 0x544b, 0x5452, 0x5453, 0x5454, 0x5456, 0x5443,
- 0x5421, 0x5457, 0x5459, 0x5423, 0x5432, 0x5482, 0x5494, 0x5477,
- 0x5471, 0x5464, 0x549a, 0x549b, 0x5484, 0x5476, 0x5466, 0x549d,
- 0x54d0, 0x54ad, 0x54c2, 0x54b4, 0x54d2, 0x54a7, 0x54a6, 0x54d3,
- 0x54d4, 0x5472, 0x54a3, 0x54d5, 0x54bb, 0x54bf, 0x54cc, 0x54d9,
- 0x54da, 0x54dc, 0x54a9, 0x54aa, 0x54a4, 0x54dd, 0x54cf, 0x54de,
- 0x551b, 0x54e7, 0x5520, 0x54fd, 0x5514, 0x54f3, 0x5522, 0x5523,
- 0x550f, 0x5511, 0x5527, 0x552a, 0x5567, 0x558f, 0x55b5, 0x5549,
- 0x556d, 0x5541, 0x5555, 0x553f, 0x5550, 0x553c,
- /* 0x60 */
- 0x5537, 0x5556, 0x5575, 0x5576, 0x5577, 0x5533, 0x5530, 0x555c,
- 0x558b, 0x55d2, 0x5583, 0x55b1, 0x55b9, 0x5588, 0x5581, 0x559f,
- 0x557e, 0x55d6, 0x5591, 0x557b, 0x55df, 0x55bd, 0x55be, 0x5594,
- 0x5599, 0x55ea, 0x55f7, 0x55c9, 0x561f, 0x55d1, 0x55eb, 0x55ec,
- 0x55d4, 0x55e6, 0x55dd, 0x55c4, 0x55ef, 0x55e5, 0x55f2, 0x55f3,
- 0x55cc, 0x55cd, 0x55e8, 0x55f5, 0x55e4, 0x8f94, 0x561e, 0x5608,
- 0x560c, 0x5601, 0x5624, 0x5623, 0x55fe, 0x5600, 0x5627, 0x562d,
- 0x5658, 0x5639, 0x5657, 0x562c, 0x564d, 0x5662, 0x5659, 0x565c,
- 0x564c, 0x5654, 0x5686, 0x5664, 0x5671, 0x566b, 0x567b, 0x567c,
- 0x5685, 0x5693, 0x56af, 0x56d4, 0x56d7, 0x56dd, 0x56e1, 0x56f5,
- 0x56eb, 0x56f9, 0x56ff, 0x5704, 0x570a, 0x5709, 0x571c, 0x5e0f,
- 0x5e19, 0x5e14, 0x5e11, 0x5e31, 0x5e3b, 0x5e3c,
- /* 0x61 */
- 0x5e37, 0x5e44, 0x5e54, 0x5e5b, 0x5e5e, 0x5e61, 0x5c8c, 0x5c7a,
- 0x5c8d, 0x5c90, 0x5c96, 0x5c88, 0x5c98, 0x5c99, 0x5c91, 0x5c9a,
- 0x5c9c, 0x5cb5, 0x5ca2, 0x5cbd, 0x5cac, 0x5cab, 0x5cb1, 0x5ca3,
- 0x5cc1, 0x5cb7, 0x5cc4, 0x5cd2, 0x5ce4, 0x5ccb, 0x5ce5, 0x5d02,
- 0x5d03, 0x5d27, 0x5d26, 0x5d2e, 0x5d24, 0x5d1e, 0x5d06, 0x5d1b,
- 0x5d58, 0x5d3e, 0x5d34, 0x5d3d, 0x5d6c, 0x5d5b, 0x5d6f, 0x5d5d,
- 0x5d6b, 0x5d4b, 0x5d4a, 0x5d69, 0x5d74, 0x5d82, 0x5d99, 0x5d9d,
- 0x8c73, 0x5db7, 0x5dc5, 0x5f73, 0x5f77, 0x5f82, 0x5f87, 0x5f89,
- 0x5f8c, 0x5f95, 0x5f99, 0x5f9c, 0x5fa8, 0x5fad, 0x5fb5, 0x5fbc,
- 0x8862, 0x5f61, 0x72ad, 0x72b0, 0x72b4, 0x72b7, 0x72b8, 0x72c3,
- 0x72c1, 0x72ce, 0x72cd, 0x72d2, 0x72e8, 0x72ef, 0x72e9, 0x72f2,
- 0x72f4, 0x72f7, 0x7301, 0x72f3, 0x7303, 0x72fa,
- /* 0x62 */
- 0x72fb, 0x7317, 0x7313, 0x7321, 0x730a, 0x731e, 0x731d, 0x7315,
- 0x7322, 0x7339, 0x7325, 0x732c, 0x7338, 0x7331, 0x7350, 0x734d,
- 0x7357, 0x7360, 0x736c, 0x736f, 0x737e, 0x821b, 0x5925, 0x98e7,
- 0x5924, 0x5902, 0x9963, 0x9967, 0x9968, 0x9969, 0x996a, 0x996b,
- 0x996c, 0x9974, 0x9977, 0x997d, 0x9980, 0x9984, 0x9987, 0x998a,
- 0x998d, 0x9990, 0x9991, 0x9993, 0x9994, 0x9995, 0x5e80, 0x5e91,
- 0x5e8b, 0x5e96, 0x5ea5, 0x5ea0, 0x5eb9, 0x5eb5, 0x5ebe, 0x5eb3,
- 0x8d53, 0x5ed2, 0x5ed1, 0x5edb, 0x5ee8, 0x5eea, 0x81ba, 0x5fc4,
- 0x5fc9, 0x5fd6, 0x5fcf, 0x6003, 0x5fee, 0x6004, 0x5fe1, 0x5fe4,
- 0x5ffe, 0x6005, 0x6006, 0x5fea, 0x5fed, 0x5ff8, 0x6019, 0x6035,
- 0x6026, 0x601b, 0x600f, 0x600d, 0x6029, 0x602b, 0x600a, 0x603f,
- 0x6021, 0x6078, 0x6079, 0x607b, 0x607a, 0x6042,
- /* 0x63 */
- 0x606a, 0x607d, 0x6096, 0x609a, 0x60ad, 0x609d, 0x6083, 0x6092,
- 0x608c, 0x609b, 0x60ec, 0x60bb, 0x60b1, 0x60dd, 0x60d8, 0x60c6,
- 0x60da, 0x60b4, 0x6120, 0x6126, 0x6115, 0x6123, 0x60f4, 0x6100,
- 0x610e, 0x612b, 0x614a, 0x6175, 0x61ac, 0x6194, 0x61a7, 0x61b7,
- 0x61d4, 0x61f5, 0x5fdd, 0x96b3, 0x95e9, 0x95eb, 0x95f1, 0x95f3,
- 0x95f5, 0x95f6, 0x95fc, 0x95fe, 0x9603, 0x9604, 0x9606, 0x9608,
- 0x960a, 0x960b, 0x960c, 0x960d, 0x960f, 0x9612, 0x9615, 0x9616,
- 0x9617, 0x9619, 0x961a, 0x4e2c, 0x723f, 0x6215, 0x6c35, 0x6c54,
- 0x6c5c, 0x6c4a, 0x6ca3, 0x6c85, 0x6c90, 0x6c94, 0x6c8c, 0x6c68,
- 0x6c69, 0x6c74, 0x6c76, 0x6c86, 0x6ca9, 0x6cd0, 0x6cd4, 0x6cad,
- 0x6cf7, 0x6cf8, 0x6cf1, 0x6cd7, 0x6cb2, 0x6ce0, 0x6cd6, 0x6cfa,
- 0x6ceb, 0x6cee, 0x6cb1, 0x6cd3, 0x6cef, 0x6cfe,
- /* 0x64 */
- 0x6d39, 0x6d27, 0x6d0c, 0x6d43, 0x6d48, 0x6d07, 0x6d04, 0x6d19,
- 0x6d0e, 0x6d2b, 0x6d4d, 0x6d2e, 0x6d35, 0x6d1a, 0x6d4f, 0x6d52,
- 0x6d54, 0x6d33, 0x6d91, 0x6d6f, 0x6d9e, 0x6da0, 0x6d5e, 0x6d93,
- 0x6d94, 0x6d5c, 0x6d60, 0x6d7c, 0x6d63, 0x6e1a, 0x6dc7, 0x6dc5,
- 0x6dde, 0x6e0e, 0x6dbf, 0x6de0, 0x6e11, 0x6de6, 0x6ddd, 0x6dd9,
- 0x6e16, 0x6dab, 0x6e0c, 0x6dae, 0x6e2b, 0x6e6e, 0x6e4e, 0x6e6b,
- 0x6eb2, 0x6e5f, 0x6e86, 0x6e53, 0x6e54, 0x6e32, 0x6e25, 0x6e44,
- 0x6edf, 0x6eb1, 0x6e98, 0x6ee0, 0x6f2d, 0x6ee2, 0x6ea5, 0x6ea7,
- 0x6ebd, 0x6ebb, 0x6eb7, 0x6ed7, 0x6eb4, 0x6ecf, 0x6e8f, 0x6ec2,
- 0x6e9f, 0x6f62, 0x6f46, 0x6f47, 0x6f24, 0x6f15, 0x6ef9, 0x6f2f,
- 0x6f36, 0x6f4b, 0x6f74, 0x6f2a, 0x6f09, 0x6f29, 0x6f89, 0x6f8d,
- 0x6f8c, 0x6f78, 0x6f72, 0x6f7c, 0x6f7a, 0x6fd1,
- /* 0x65 */
- 0x6fc9, 0x6fa7, 0x6fb9, 0x6fb6, 0x6fc2, 0x6fe1, 0x6fee, 0x6fde,
- 0x6fe0, 0x6fef, 0x701a, 0x7023, 0x701b, 0x7039, 0x7035, 0x704f,
- 0x705e, 0x5b80, 0x5b84, 0x5b95, 0x5b93, 0x5ba5, 0x5bb8, 0x752f,
- 0x9a9e, 0x6434, 0x5be4, 0x5bee, 0x8930, 0x5bf0, 0x8e47, 0x8b07,
- 0x8fb6, 0x8fd3, 0x8fd5, 0x8fe5, 0x8fee, 0x8fe4, 0x8fe9, 0x8fe6,
- 0x8ff3, 0x8fe8, 0x9005, 0x9004, 0x900b, 0x9026, 0x9011, 0x900d,
- 0x9016, 0x9021, 0x9035, 0x9036, 0x902d, 0x902f, 0x9044, 0x9051,
- 0x9052, 0x9050, 0x9068, 0x9058, 0x9062, 0x905b, 0x66b9, 0x9074,
- 0x907d, 0x9082, 0x9088, 0x9083, 0x908b, 0x5f50, 0x5f57, 0x5f56,
- 0x5f58, 0x5c3b, 0x54ab, 0x5c50, 0x5c59, 0x5b71, 0x5c63, 0x5c66,
- 0x7fbc, 0x5f2a, 0x5f29, 0x5f2d, 0x8274, 0x5f3c, 0x9b3b, 0x5c6e,
- 0x5981, 0x5983, 0x598d, 0x59a9, 0x59aa, 0x59a3,
- /* 0x66 */
- 0x5997, 0x59ca, 0x59ab, 0x599e, 0x59a4, 0x59d2, 0x59b2, 0x59af,
- 0x59d7, 0x59be, 0x5a05, 0x5a06, 0x59dd, 0x5a08, 0x59e3, 0x59d8,
- 0x59f9, 0x5a0c, 0x5a09, 0x5a32, 0x5a34, 0x5a11, 0x5a23, 0x5a13,
- 0x5a40, 0x5a67, 0x5a4a, 0x5a55, 0x5a3c, 0x5a62, 0x5a75, 0x80ec,
- 0x5aaa, 0x5a9b, 0x5a77, 0x5a7a, 0x5abe, 0x5aeb, 0x5ab2, 0x5ad2,
- 0x5ad4, 0x5ab8, 0x5ae0, 0x5ae3, 0x5af1, 0x5ad6, 0x5ae6, 0x5ad8,
- 0x5adc, 0x5b09, 0x5b17, 0x5b16, 0x5b32, 0x5b37, 0x5b40, 0x5c15,
- 0x5c1c, 0x5b5a, 0x5b65, 0x5b73, 0x5b51, 0x5b53, 0x5b62, 0x9a75,
- 0x9a77, 0x9a78, 0x9a7a, 0x9a7f, 0x9a7d, 0x9a80, 0x9a81, 0x9a85,
- 0x9a88, 0x9a8a, 0x9a90, 0x9a92, 0x9a93, 0x9a96, 0x9a98, 0x9a9b,
- 0x9a9c, 0x9a9d, 0x9a9f, 0x9aa0, 0x9aa2, 0x9aa3, 0x9aa5, 0x9aa7,
- 0x7e9f, 0x7ea1, 0x7ea3, 0x7ea5, 0x7ea8, 0x7ea9,
- /* 0x67 */
- 0x7ead, 0x7eb0, 0x7ebe, 0x7ec0, 0x7ec1, 0x7ec2, 0x7ec9, 0x7ecb,
- 0x7ecc, 0x7ed0, 0x7ed4, 0x7ed7, 0x7edb, 0x7ee0, 0x7ee1, 0x7ee8,
- 0x7eeb, 0x7eee, 0x7eef, 0x7ef1, 0x7ef2, 0x7f0d, 0x7ef6, 0x7efa,
- 0x7efb, 0x7efe, 0x7f01, 0x7f02, 0x7f03, 0x7f07, 0x7f08, 0x7f0b,
- 0x7f0c, 0x7f0f, 0x7f11, 0x7f12, 0x7f17, 0x7f19, 0x7f1c, 0x7f1b,
- 0x7f1f, 0x7f21, 0x7f22, 0x7f23, 0x7f24, 0x7f25, 0x7f26, 0x7f27,
- 0x7f2a, 0x7f2b, 0x7f2c, 0x7f2d, 0x7f2f, 0x7f30, 0x7f31, 0x7f32,
- 0x7f33, 0x7f35, 0x5e7a, 0x757f, 0x5ddb, 0x753e, 0x9095, 0x738e,
- 0x7391, 0x73ae, 0x73a2, 0x739f, 0x73cf, 0x73c2, 0x73d1, 0x73b7,
- 0x73b3, 0x73c0, 0x73c9, 0x73c8, 0x73e5, 0x73d9, 0x987c, 0x740a,
- 0x73e9, 0x73e7, 0x73de, 0x73ba, 0x73f2, 0x740f, 0x742a, 0x745b,
- 0x7426, 0x7425, 0x7428, 0x7430, 0x742e, 0x742c,
- /* 0x68 */
- 0x741b, 0x741a, 0x7441, 0x745c, 0x7457, 0x7455, 0x7459, 0x7477,
- 0x746d, 0x747e, 0x749c, 0x748e, 0x7480, 0x7481, 0x7487, 0x748b,
- 0x749e, 0x74a8, 0x74a9, 0x7490, 0x74a7, 0x74d2, 0x74ba, 0x97ea,
- 0x97eb, 0x97ec, 0x674c, 0x6753, 0x675e, 0x6748, 0x6769, 0x67a5,
- 0x6787, 0x676a, 0x6773, 0x6798, 0x67a7, 0x6775, 0x67a8, 0x679e,
- 0x67ad, 0x678b, 0x6777, 0x677c, 0x67f0, 0x6809, 0x67d8, 0x680a,
- 0x67e9, 0x67b0, 0x680c, 0x67d9, 0x67b5, 0x67da, 0x67b3, 0x67dd,
- 0x6800, 0x67c3, 0x67b8, 0x67e2, 0x680e, 0x67c1, 0x67fd, 0x6832,
- 0x6833, 0x6860, 0x6861, 0x684e, 0x6862, 0x6844, 0x6864, 0x6883,
- 0x681d, 0x6855, 0x6866, 0x6841, 0x6867, 0x6840, 0x683e, 0x684a,
- 0x6849, 0x6829, 0x68b5, 0x688f, 0x6874, 0x6877, 0x6893, 0x686b,
- 0x68c2, 0x696e, 0x68fc, 0x691f, 0x6920, 0x68f9,
- /* 0x69 */
- 0x6924, 0x68f0, 0x690b, 0x6901, 0x6957, 0x68e3, 0x6910, 0x6971,
- 0x6939, 0x6960, 0x6942, 0x695d, 0x6984, 0x696b, 0x6980, 0x6998,
- 0x6978, 0x6934, 0x69cc, 0x6987, 0x6988, 0x69ce, 0x6989, 0x6966,
- 0x6963, 0x6979, 0x699b, 0x69a7, 0x69bb, 0x69ab, 0x69ad, 0x69d4,
- 0x69b1, 0x69c1, 0x69ca, 0x69df, 0x6995, 0x69e0, 0x698d, 0x69ff,
- 0x6a2f, 0x69ed, 0x6a17, 0x6a18, 0x6a65, 0x69f2, 0x6a44, 0x6a3e,
- 0x6aa0, 0x6a50, 0x6a5b, 0x6a35, 0x6a8e, 0x6a79, 0x6a3d, 0x6a28,
- 0x6a58, 0x6a7c, 0x6a91, 0x6a90, 0x6aa9, 0x6a97, 0x6aab, 0x7337,
- 0x7352, 0x6b81, 0x6b82, 0x6b87, 0x6b84, 0x6b92, 0x6b93, 0x6b8d,
- 0x6b9a, 0x6b9b, 0x6ba1, 0x6baa, 0x8f6b, 0x8f6d, 0x8f71, 0x8f72,
- 0x8f73, 0x8f75, 0x8f76, 0x8f78, 0x8f77, 0x8f79, 0x8f7a, 0x8f7c,
- 0x8f7e, 0x8f81, 0x8f82, 0x8f84, 0x8f87, 0x8f8b,
- /* 0x6a */
- 0x8f8d, 0x8f8e, 0x8f8f, 0x8f98, 0x8f9a, 0x8ece, 0x620b, 0x6217,
- 0x621b, 0x621f, 0x6222, 0x6221, 0x6225, 0x6224, 0x622c, 0x81e7,
- 0x74ef, 0x74f4, 0x74ff, 0x750f, 0x7511, 0x7513, 0x6534, 0x65ee,
- 0x65ef, 0x65f0, 0x660a, 0x6619, 0x6772, 0x6603, 0x6615, 0x6600,
- 0x7085, 0x66f7, 0x661d, 0x6634, 0x6631, 0x6636, 0x6635, 0x8006,
- 0x665f, 0x6654, 0x6641, 0x664f, 0x6656, 0x6661, 0x6657, 0x6677,
- 0x6684, 0x668c, 0x66a7, 0x669d, 0x66be, 0x66db, 0x66dc, 0x66e6,
- 0x66e9, 0x8d32, 0x8d33, 0x8d36, 0x8d3b, 0x8d3d, 0x8d40, 0x8d45,
- 0x8d46, 0x8d48, 0x8d49, 0x8d47, 0x8d4d, 0x8d55, 0x8d59, 0x89c7,
- 0x89ca, 0x89cb, 0x89cc, 0x89ce, 0x89cf, 0x89d0, 0x89d1, 0x726e,
- 0x729f, 0x725d, 0x7266, 0x726f, 0x727e, 0x727f, 0x7284, 0x728b,
- 0x728d, 0x728f, 0x7292, 0x6308, 0x6332, 0x63b0,
- /* 0x6b */
- 0x643f, 0x64d8, 0x8004, 0x6bea, 0x6bf3, 0x6bfd, 0x6bf5, 0x6bf9,
- 0x6c05, 0x6c07, 0x6c06, 0x6c0d, 0x6c15, 0x6c18, 0x6c19, 0x6c1a,
- 0x6c21, 0x6c29, 0x6c24, 0x6c2a, 0x6c32, 0x6535, 0x6555, 0x656b,
- 0x724d, 0x7252, 0x7256, 0x7230, 0x8662, 0x5216, 0x809f, 0x809c,
- 0x8093, 0x80bc, 0x670a, 0x80bd, 0x80b1, 0x80ab, 0x80ad, 0x80b4,
- 0x80b7, 0x80e7, 0x80e8, 0x80e9, 0x80ea, 0x80db, 0x80c2, 0x80c4,
- 0x80d9, 0x80cd, 0x80d7, 0x6710, 0x80dd, 0x80eb, 0x80f1, 0x80f4,
- 0x80ed, 0x810d, 0x810e, 0x80f2, 0x80fc, 0x6715, 0x8112, 0x8c5a,
- 0x8136, 0x811e, 0x812c, 0x8118, 0x8132, 0x8148, 0x814c, 0x8153,
- 0x8174, 0x8159, 0x815a, 0x8171, 0x8160, 0x8169, 0x817c, 0x817d,
- 0x816d, 0x8167, 0x584d, 0x5ab5, 0x8188, 0x8182, 0x8191, 0x6ed5,
- 0x81a3, 0x81aa, 0x81cc, 0x6726, 0x81ca, 0x81bb,
- /* 0x6c */
- 0x81c1, 0x81a6, 0x6b24, 0x6b37, 0x6b39, 0x6b43, 0x6b46, 0x6b59,
- 0x98d1, 0x98d2, 0x98d3, 0x98d5, 0x98d9, 0x98da, 0x6bb3, 0x5f40,
- 0x6bc2, 0x89f3, 0x6590, 0x9f51, 0x6593, 0x65bc, 0x65c6, 0x65c4,
- 0x65c3, 0x65cc, 0x65ce, 0x65d2, 0x65d6, 0x7080, 0x709c, 0x7096,
- 0x709d, 0x70bb, 0x70c0, 0x70b7, 0x70ab, 0x70b1, 0x70e8, 0x70ca,
- 0x7110, 0x7113, 0x7116, 0x712f, 0x7131, 0x7173, 0x715c, 0x7168,
- 0x7145, 0x7172, 0x714a, 0x7178, 0x717a, 0x7198, 0x71b3, 0x71b5,
- 0x71a8, 0x71a0, 0x71e0, 0x71d4, 0x71e7, 0x71f9, 0x721d, 0x7228,
- 0x706c, 0x7118, 0x7166, 0x71b9, 0x623e, 0x623d, 0x6243, 0x6248,
- 0x6249, 0x793b, 0x7940, 0x7946, 0x7949, 0x795b, 0x795c, 0x7953,
- 0x795a, 0x7962, 0x7957, 0x7960, 0x796f, 0x7967, 0x797a, 0x7985,
- 0x798a, 0x799a, 0x79a7, 0x79b3, 0x5fd1, 0x5fd0,
- /* 0x6d */
- 0x603c, 0x605d, 0x605a, 0x6067, 0x6041, 0x6059, 0x6063, 0x60ab,
- 0x6106, 0x610d, 0x615d, 0x61a9, 0x619d, 0x61cb, 0x61d1, 0x6206,
- 0x8080, 0x807f, 0x6c93, 0x6cf6, 0x6dfc, 0x77f6, 0x77f8, 0x7800,
- 0x7809, 0x7817, 0x7818, 0x7811, 0x65ab, 0x782d, 0x781c, 0x781d,
- 0x7839, 0x783a, 0x783b, 0x781f, 0x783c, 0x7825, 0x782c, 0x7823,
- 0x7829, 0x784e, 0x786d, 0x7856, 0x7857, 0x7826, 0x7850, 0x7847,
- 0x784c, 0x786a, 0x789b, 0x7893, 0x789a, 0x7887, 0x789c, 0x78a1,
- 0x78a3, 0x78b2, 0x78b9, 0x78a5, 0x78d4, 0x78d9, 0x78c9, 0x78ec,
- 0x78f2, 0x7905, 0x78f4, 0x7913, 0x7924, 0x791e, 0x7934, 0x9f9b,
- 0x9ef9, 0x9efb, 0x9efc, 0x76f1, 0x7704, 0x770d, 0x76f9, 0x7707,
- 0x7708, 0x771a, 0x7722, 0x7719, 0x772d, 0x7726, 0x7735, 0x7738,
- 0x7750, 0x7751, 0x7747, 0x7743, 0x775a, 0x7768,
- /* 0x6e */
- 0x7762, 0x7765, 0x777f, 0x778d, 0x777d, 0x7780, 0x778c, 0x7791,
- 0x779f, 0x77a0, 0x77b0, 0x77b5, 0x77bd, 0x753a, 0x7540, 0x754e,
- 0x754b, 0x7548, 0x755b, 0x7572, 0x7579, 0x7583, 0x7f58, 0x7f61,
- 0x7f5f, 0x8a48, 0x7f68, 0x7f74, 0x7f71, 0x7f79, 0x7f81, 0x7f7e,
- 0x76cd, 0x76e5, 0x8832, 0x9485, 0x9486, 0x9487, 0x948b, 0x948a,
- 0x948c, 0x948d, 0x948f, 0x9490, 0x9494, 0x9497, 0x9495, 0x949a,
- 0x949b, 0x949c, 0x94a3, 0x94a4, 0x94ab, 0x94aa, 0x94ad, 0x94ac,
- 0x94af, 0x94b0, 0x94b2, 0x94b4, 0x94b6, 0x94b7, 0x94b8, 0x94b9,
- 0x94ba, 0x94bc, 0x94bd, 0x94bf, 0x94c4, 0x94c8, 0x94c9, 0x94ca,
- 0x94cb, 0x94cc, 0x94cd, 0x94ce, 0x94d0, 0x94d1, 0x94d2, 0x94d5,
- 0x94d6, 0x94d7, 0x94d9, 0x94d8, 0x94db, 0x94de, 0x94df, 0x94e0,
- 0x94e2, 0x94e4, 0x94e5, 0x94e7, 0x94e8, 0x94ea,
- /* 0x6f */
- 0x94e9, 0x94eb, 0x94ee, 0x94ef, 0x94f3, 0x94f4, 0x94f5, 0x94f7,
- 0x94f9, 0x94fc, 0x94fd, 0x94ff, 0x9503, 0x9502, 0x9506, 0x9507,
- 0x9509, 0x950a, 0x950d, 0x950e, 0x950f, 0x9512, 0x9513, 0x9514,
- 0x9515, 0x9516, 0x9518, 0x951b, 0x951d, 0x951e, 0x951f, 0x9522,
- 0x952a, 0x952b, 0x9529, 0x952c, 0x9531, 0x9532, 0x9534, 0x9536,
- 0x9537, 0x9538, 0x953c, 0x953e, 0x953f, 0x9542, 0x9535, 0x9544,
- 0x9545, 0x9546, 0x9549, 0x954c, 0x954e, 0x954f, 0x9552, 0x9553,
- 0x9554, 0x9556, 0x9557, 0x9558, 0x9559, 0x955b, 0x955e, 0x955f,
- 0x955d, 0x9561, 0x9562, 0x9564, 0x9565, 0x9566, 0x9567, 0x9568,
- 0x9569, 0x956a, 0x956b, 0x956c, 0x956f, 0x9571, 0x9572, 0x9573,
- 0x953a, 0x77e7, 0x77ec, 0x96c9, 0x79d5, 0x79ed, 0x79e3, 0x79eb,
- 0x7a06, 0x5d47, 0x7a03, 0x7a02, 0x7a1e, 0x7a14,
- /* 0x70 */
- 0x7a39, 0x7a37, 0x7a51, 0x9ecf, 0x99a5, 0x7a70, 0x7688, 0x768e,
- 0x7693, 0x7699, 0x76a4, 0x74de, 0x74e0, 0x752c, 0x9e20, 0x9e22,
- 0x9e28, 0x9e29, 0x9e2a, 0x9e2b, 0x9e2c, 0x9e32, 0x9e31, 0x9e36,
- 0x9e38, 0x9e37, 0x9e39, 0x9e3a, 0x9e3e, 0x9e41, 0x9e42, 0x9e44,
- 0x9e46, 0x9e47, 0x9e48, 0x9e49, 0x9e4b, 0x9e4c, 0x9e4e, 0x9e51,
- 0x9e55, 0x9e57, 0x9e5a, 0x9e5b, 0x9e5c, 0x9e5e, 0x9e63, 0x9e66,
- 0x9e67, 0x9e68, 0x9e69, 0x9e6a, 0x9e6b, 0x9e6c, 0x9e71, 0x9e6d,
- 0x9e73, 0x7592, 0x7594, 0x7596, 0x75a0, 0x759d, 0x75ac, 0x75a3,
- 0x75b3, 0x75b4, 0x75b8, 0x75c4, 0x75b1, 0x75b0, 0x75c3, 0x75c2,
- 0x75d6, 0x75cd, 0x75e3, 0x75e8, 0x75e6, 0x75e4, 0x75eb, 0x75e7,
- 0x7603, 0x75f1, 0x75fc, 0x75ff, 0x7610, 0x7600, 0x7605, 0x760c,
- 0x7617, 0x760a, 0x7625, 0x7618, 0x7615, 0x7619,
- /* 0x71 */
- 0x761b, 0x763c, 0x7622, 0x7620, 0x7640, 0x762d, 0x7630, 0x763f,
- 0x7635, 0x7643, 0x763e, 0x7633, 0x764d, 0x765e, 0x7654, 0x765c,
- 0x7656, 0x766b, 0x766f, 0x7fca, 0x7ae6, 0x7a78, 0x7a79, 0x7a80,
- 0x7a86, 0x7a88, 0x7a95, 0x7aa6, 0x7aa0, 0x7aac, 0x7aa8, 0x7aad,
- 0x7ab3, 0x8864, 0x8869, 0x8872, 0x887d, 0x887f, 0x8882, 0x88a2,
- 0x88c6, 0x88b7, 0x88bc, 0x88c9, 0x88e2, 0x88ce, 0x88e3, 0x88e5,
- 0x88f1, 0x891a, 0x88fc, 0x88e8, 0x88fe, 0x88f0, 0x8921, 0x8919,
- 0x8913, 0x891b, 0x890a, 0x8934, 0x892b, 0x8936, 0x8941, 0x8966,
- 0x897b, 0x758b, 0x80e5, 0x76b2, 0x76b4, 0x77dc, 0x8012, 0x8014,
- 0x8016, 0x801c, 0x8020, 0x8022, 0x8025, 0x8026, 0x8027, 0x8029,
- 0x8028, 0x8031, 0x800b, 0x8035, 0x8043, 0x8046, 0x804d, 0x8052,
- 0x8069, 0x8071, 0x8983, 0x9878, 0x9880, 0x9883,
- /* 0x72 */
- 0x9889, 0x988c, 0x988d, 0x988f, 0x9894, 0x989a, 0x989b, 0x989e,
- 0x989f, 0x98a1, 0x98a2, 0x98a5, 0x98a6, 0x864d, 0x8654, 0x866c,
- 0x866e, 0x867f, 0x867a, 0x867c, 0x867b, 0x86a8, 0x868d, 0x868b,
- 0x86ac, 0x869d, 0x86a7, 0x86a3, 0x86aa, 0x8693, 0x86a9, 0x86b6,
- 0x86c4, 0x86b5, 0x86ce, 0x86b0, 0x86ba, 0x86b1, 0x86af, 0x86c9,
- 0x86cf, 0x86b4, 0x86e9, 0x86f1, 0x86f2, 0x86ed, 0x86f3, 0x86d0,
- 0x8713, 0x86de, 0x86f4, 0x86df, 0x86d8, 0x86d1, 0x8703, 0x8707,
- 0x86f8, 0x8708, 0x870a, 0x870d, 0x8709, 0x8723, 0x873b, 0x871e,
- 0x8725, 0x872e, 0x871a, 0x873e, 0x8748, 0x8734, 0x8731, 0x8729,
- 0x8737, 0x873f, 0x8782, 0x8722, 0x877d, 0x877e, 0x877b, 0x8760,
- 0x8770, 0x874c, 0x876e, 0x878b, 0x8753, 0x8763, 0x877c, 0x8764,
- 0x8759, 0x8765, 0x8793, 0x87af, 0x87a8, 0x87d2,
- /* 0x73 */
- 0x87c6, 0x8788, 0x8785, 0x87ad, 0x8797, 0x8783, 0x87ab, 0x87e5,
- 0x87ac, 0x87b5, 0x87b3, 0x87cb, 0x87d3, 0x87bd, 0x87d1, 0x87c0,
- 0x87ca, 0x87db, 0x87ea, 0x87e0, 0x87ee, 0x8816, 0x8813, 0x87fe,
- 0x880a, 0x881b, 0x8821, 0x8839, 0x883c, 0x7f36, 0x7f42, 0x7f44,
- 0x7f45, 0x8210, 0x7afa, 0x7afd, 0x7b08, 0x7b03, 0x7b04, 0x7b15,
- 0x7b0a, 0x7b2b, 0x7b0f, 0x7b47, 0x7b38, 0x7b2a, 0x7b19, 0x7b2e,
- 0x7b31, 0x7b20, 0x7b25, 0x7b24, 0x7b33, 0x7b3e, 0x7b1e, 0x7b58,
- 0x7b5a, 0x7b45, 0x7b75, 0x7b4c, 0x7b5d, 0x7b60, 0x7b6e, 0x7b7b,
- 0x7b62, 0x7b72, 0x7b71, 0x7b90, 0x7ba6, 0x7ba7, 0x7bb8, 0x7bac,
- 0x7b9d, 0x7ba8, 0x7b85, 0x7baa, 0x7b9c, 0x7ba2, 0x7bab, 0x7bb4,
- 0x7bd1, 0x7bc1, 0x7bcc, 0x7bdd, 0x7bda, 0x7be5, 0x7be6, 0x7bea,
- 0x7c0c, 0x7bfe, 0x7bfc, 0x7c0f, 0x7c16, 0x7c0b,
- /* 0x74 */
- 0x7c1f, 0x7c2a, 0x7c26, 0x7c38, 0x7c41, 0x7c40, 0x81fe, 0x8201,
- 0x8202, 0x8204, 0x81ec, 0x8844, 0x8221, 0x8222, 0x8223, 0x822d,
- 0x822f, 0x8228, 0x822b, 0x8238, 0x823b, 0x8233, 0x8234, 0x823e,
- 0x8244, 0x8249, 0x824b, 0x824f, 0x825a, 0x825f, 0x8268, 0x887e,
- 0x8885, 0x8888, 0x88d8, 0x88df, 0x895e, 0x7f9d, 0x7f9f, 0x7fa7,
- 0x7faf, 0x7fb0, 0x7fb2, 0x7c7c, 0x6549, 0x7c91, 0x7c9d, 0x7c9c,
- 0x7c9e, 0x7ca2, 0x7cb2, 0x7cbc, 0x7cbd, 0x7cc1, 0x7cc7, 0x7ccc,
- 0x7ccd, 0x7cc8, 0x7cc5, 0x7cd7, 0x7ce8, 0x826e, 0x66a8, 0x7fbf,
- 0x7fce, 0x7fd5, 0x7fe5, 0x7fe1, 0x7fe6, 0x7fe9, 0x7fee, 0x7ff3,
- 0x7cf8, 0x7d77, 0x7da6, 0x7dae, 0x7e47, 0x7e9b, 0x9eb8, 0x9eb4,
- 0x8d73, 0x8d84, 0x8d94, 0x8d91, 0x8db1, 0x8d67, 0x8d6d, 0x8c47,
- 0x8c49, 0x914a, 0x9150, 0x914e, 0x914f, 0x9164,
- /* 0x75 */
- 0x9162, 0x9161, 0x9170, 0x9169, 0x916f, 0x917d, 0x917e, 0x9172,
- 0x9174, 0x9179, 0x918c, 0x9185, 0x9190, 0x918d, 0x9191, 0x91a2,
- 0x91a3, 0x91aa, 0x91ad, 0x91ae, 0x91af, 0x91b5, 0x91b4, 0x91ba,
- 0x8c55, 0x9e7e, 0x8db8, 0x8deb, 0x8e05, 0x8e59, 0x8e69, 0x8db5,
- 0x8dbf, 0x8dbc, 0x8dba, 0x8dc4, 0x8dd6, 0x8dd7, 0x8dda, 0x8dde,
- 0x8dce, 0x8dcf, 0x8ddb, 0x8dc6, 0x8dec, 0x8df7, 0x8df8, 0x8de3,
- 0x8df9, 0x8dfb, 0x8de4, 0x8e09, 0x8dfd, 0x8e14, 0x8e1d, 0x8e1f,
- 0x8e2c, 0x8e2e, 0x8e23, 0x8e2f, 0x8e3a, 0x8e40, 0x8e39, 0x8e35,
- 0x8e3d, 0x8e31, 0x8e49, 0x8e41, 0x8e42, 0x8e51, 0x8e52, 0x8e4a,
- 0x8e70, 0x8e76, 0x8e7c, 0x8e6f, 0x8e74, 0x8e85, 0x8e8f, 0x8e94,
- 0x8e90, 0x8e9c, 0x8e9e, 0x8c78, 0x8c82, 0x8c8a, 0x8c85, 0x8c98,
- 0x8c94, 0x659b, 0x89d6, 0x89de, 0x89da, 0x89dc,
- /* 0x76 */
- 0x89e5, 0x89eb, 0x89ef, 0x8a3e, 0x8b26, 0x9753, 0x96e9, 0x96f3,
- 0x96ef, 0x9706, 0x9701, 0x9708, 0x970f, 0x970e, 0x972a, 0x972d,
- 0x9730, 0x973e, 0x9f80, 0x9f83, 0x9f85, 0x9f86, 0x9f87, 0x9f88,
- 0x9f89, 0x9f8a, 0x9f8c, 0x9efe, 0x9f0b, 0x9f0d, 0x96b9, 0x96bc,
- 0x96bd, 0x96ce, 0x96d2, 0x77bf, 0x96e0, 0x928e, 0x92ae, 0x92c8,
- 0x933e, 0x936a, 0x93ca, 0x938f, 0x943e, 0x946b, 0x9c7f, 0x9c82,
- 0x9c85, 0x9c86, 0x9c87, 0x9c88, 0x7a23, 0x9c8b, 0x9c8e, 0x9c90,
- 0x9c91, 0x9c92, 0x9c94, 0x9c95, 0x9c9a, 0x9c9b, 0x9c9e, 0x9c9f,
- 0x9ca0, 0x9ca1, 0x9ca2, 0x9ca3, 0x9ca5, 0x9ca6, 0x9ca7, 0x9ca8,
- 0x9ca9, 0x9cab, 0x9cad, 0x9cae, 0x9cb0, 0x9cb1, 0x9cb2, 0x9cb3,
- 0x9cb4, 0x9cb5, 0x9cb6, 0x9cb7, 0x9cba, 0x9cbb, 0x9cbc, 0x9cbd,
- 0x9cc4, 0x9cc5, 0x9cc6, 0x9cc7, 0x9cca, 0x9ccb,
- /* 0x77 */
- 0x9ccc, 0x9ccd, 0x9cce, 0x9ccf, 0x9cd0, 0x9cd3, 0x9cd4, 0x9cd5,
- 0x9cd7, 0x9cd8, 0x9cd9, 0x9cdc, 0x9cdd, 0x9cdf, 0x9ce2, 0x977c,
- 0x9785, 0x9791, 0x9792, 0x9794, 0x97af, 0x97ab, 0x97a3, 0x97b2,
- 0x97b4, 0x9ab1, 0x9ab0, 0x9ab7, 0x9e58, 0x9ab6, 0x9aba, 0x9abc,
- 0x9ac1, 0x9ac0, 0x9ac5, 0x9ac2, 0x9acb, 0x9acc, 0x9ad1, 0x9b45,
- 0x9b43, 0x9b47, 0x9b49, 0x9b48, 0x9b4d, 0x9b51, 0x98e8, 0x990d,
- 0x992e, 0x9955, 0x9954, 0x9adf, 0x9ae1, 0x9ae6, 0x9aef, 0x9aeb,
- 0x9afb, 0x9aed, 0x9af9, 0x9b08, 0x9b0f, 0x9b13, 0x9b1f, 0x9b23,
- 0x9ebd, 0x9ebe, 0x7e3b, 0x9e82, 0x9e87, 0x9e88, 0x9e8b, 0x9e92,
- 0x93d6, 0x9e9d, 0x9e9f, 0x9edb, 0x9edc, 0x9edd, 0x9ee0, 0x9edf,
- 0x9ee2, 0x9ee9, 0x9ee7, 0x9ee5, 0x9eea, 0x9eef, 0x9f22, 0x9f2c,
- 0x9f2f, 0x9f39, 0x9f37, 0x9f3d, 0x9f3e, 0x9f44,
-};
-
-static int
-gb2312_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n)
-{
- unsigned char c1 = (s[0] & 0x7F);
- if ((c1 >= 0x21 && c1 <= 0x29) || (c1 >= 0x30 && c1 <= 0x77)) {
- if (n >= 2) {
- unsigned char c2 = (s[1] & 0x7F);
- if (c2 >= 0x21 && c2 < 0x7f) {
- unsigned int i = 94 * (c1 - 0x21) + (c2 - 0x21);
- unsigned short wc = 0xfffd;
- if (i < 1410) {
- if (i < 831)
- wc = gb2312_2uni_page21[i];
- } else {
- if (i < 8178)
- wc = gb2312_2uni_page30[i-1410];
- }
- if (wc != 0xfffd) {
- *pwc = (ucs4_t) wc;
- return 2;
- }
- }
- return RET_ILSEQ;
- }
- return RET_TOOFEW(0);
- }
- return RET_ILSEQ;
-}
-
-static const unsigned short gb2312_2charset[7445] = {
- 0x2168, 0x216c, 0x2127, 0x2163, 0x2140, 0x2141, 0x2824, 0x2822,
- 0x2828, 0x2826, 0x283a, 0x282c, 0x282a, 0x2830, 0x282e, 0x2142,
- 0x2834, 0x2832, 0x2839, 0x2821, 0x2825, 0x2827, 0x2829, 0x282d,
- 0x2831, 0x2823, 0x282b, 0x282f, 0x2833, 0x2835, 0x2836, 0x2837,
- 0x2838, 0x2126, 0x2125, 0x2621, 0x2622, 0x2623, 0x2624, 0x2625,
- 0x2626, 0x2627, 0x2628, 0x2629, 0x262a, 0x262b, 0x262c, 0x262d,
- 0x262e, 0x262f, 0x2630, 0x2631, 0x2632, 0x2633, 0x2634, 0x2635,
- 0x2636, 0x2637, 0x2638, 0x2641, 0x2642, 0x2643, 0x2644, 0x2645,
- 0x2646, 0x2647, 0x2648, 0x2649, 0x264a, 0x264b, 0x264c, 0x264d,
- 0x264e, 0x264f, 0x2650, 0x2651, 0x2652, 0x2653, 0x2654, 0x2655,
- 0x2656, 0x2657, 0x2658, 0x2727, 0x2721, 0x2722, 0x2723, 0x2724,
- 0x2725, 0x2726, 0x2728, 0x2729, 0x272a, 0x272b, 0x272c, 0x272d,
- 0x272e, 0x272f, 0x2730, 0x2731, 0x2732, 0x2733, 0x2734, 0x2735,
- 0x2736, 0x2737, 0x2738, 0x2739, 0x273a, 0x273b, 0x273c, 0x273d,
- 0x273e, 0x273f, 0x2740, 0x2741, 0x2751, 0x2752, 0x2753, 0x2754,
- 0x2755, 0x2756, 0x2758, 0x2759, 0x275a, 0x275b, 0x275c, 0x275d,
- 0x275e, 0x275f, 0x2760, 0x2761, 0x2762, 0x2763, 0x2764, 0x2765,
- 0x2766, 0x2767, 0x2768, 0x2769, 0x276a, 0x276b, 0x276c, 0x276d,
- 0x276e, 0x276f, 0x2770, 0x2771, 0x2757, 0x212a, 0x212c, 0x212e,
- 0x212f, 0x2130, 0x2131, 0x212d, 0x216b, 0x2164, 0x2165, 0x2179,
- 0x2166, 0x216d, 0x2271, 0x2272, 0x2273, 0x2274, 0x2275, 0x2276,
- 0x2277, 0x2278, 0x2279, 0x227a, 0x227b, 0x227c, 0x217b, 0x217c,
- 0x217a, 0x217d, 0x214a, 0x2147, 0x2146, 0x214c, 0x2158, 0x215e,
- 0x214f, 0x214e, 0x2144, 0x2145, 0x2149, 0x2148, 0x2152, 0x2153,
- 0x2160, 0x215f, 0x2143, 0x214b, 0x2157, 0x2156, 0x2155, 0x2159,
- 0x2154, 0x215c, 0x215d, 0x215a, 0x215b, 0x2151, 0x214d, 0x2150,
- 0x2259, 0x225a, 0x225b, 0x225c, 0x225d, 0x225e, 0x225f, 0x2260,
- 0x2261, 0x2262, 0x2245, 0x2246, 0x2247, 0x2248, 0x2249, 0x224a,
- 0x224b, 0x224c, 0x224d, 0x224e, 0x224f, 0x2250, 0x2251, 0x2252,
- 0x2253, 0x2254, 0x2255, 0x2256, 0x2257, 0x2258, 0x2231, 0x2232,
- 0x2233, 0x2234, 0x2235, 0x2236, 0x2237, 0x2238, 0x2239, 0x223a,
- 0x223b, 0x223c, 0x223d, 0x223e, 0x223f, 0x2240, 0x2241, 0x2242,
- 0x2243, 0x2244, 0x2924, 0x2925, 0x2926, 0x2927, 0x2928, 0x2929,
- 0x292a, 0x292b, 0x292c, 0x292d, 0x292e, 0x292f, 0x2930, 0x2931,
- 0x2932, 0x2933, 0x2934, 0x2935, 0x2936, 0x2937, 0x2938, 0x2939,
- 0x293a, 0x293b, 0x293c, 0x293d, 0x293e, 0x293f, 0x2940, 0x2941,
- 0x2942, 0x2943, 0x2944, 0x2945, 0x2946, 0x2947, 0x2948, 0x2949,
- 0x294a, 0x294b, 0x294c, 0x294d, 0x294e, 0x294f, 0x2950, 0x2951,
- 0x2952, 0x2953, 0x2954, 0x2955, 0x2956, 0x2957, 0x2958, 0x2959,
- 0x295a, 0x295b, 0x295c, 0x295d, 0x295e, 0x295f, 0x2960, 0x2961,
- 0x2962, 0x2963, 0x2964, 0x2965, 0x2966, 0x2967, 0x2968, 0x2969,
- 0x296a, 0x296b, 0x296c, 0x296d, 0x296e, 0x296f, 0x2176, 0x2175,
- 0x2178, 0x2177, 0x2174, 0x2173, 0x2170, 0x2172, 0x2171, 0x216f,
- 0x216e, 0x2162, 0x2161, 0x2121, 0x2122, 0x2123, 0x2128, 0x2129,
- 0x2134, 0x2135, 0x2136, 0x2137, 0x2138, 0x2139, 0x213a, 0x213b,
- 0x213e, 0x213f, 0x217e, 0x2132, 0x2133, 0x213c, 0x213d, 0x2421,
- 0x2422, 0x2423, 0x2424, 0x2425, 0x2426, 0x2427, 0x2428, 0x2429,
- 0x242a, 0x242b, 0x242c, 0x242d, 0x242e, 0x242f, 0x2430, 0x2431,
- 0x2432, 0x2433, 0x2434, 0x2435, 0x2436, 0x2437, 0x2438, 0x2439,
- 0x243a, 0x243b, 0x243c, 0x243d, 0x243e, 0x243f, 0x2440, 0x2441,
- 0x2442, 0x2443, 0x2444, 0x2445, 0x2446, 0x2447, 0x2448, 0x2449,
- 0x244a, 0x244b, 0x244c, 0x244d, 0x244e, 0x244f, 0x2450, 0x2451,
- 0x2452, 0x2453, 0x2454, 0x2455, 0x2456, 0x2457, 0x2458, 0x2459,
- 0x245a, 0x245b, 0x245c, 0x245d, 0x245e, 0x245f, 0x2460, 0x2461,
- 0x2462, 0x2463, 0x2464, 0x2465, 0x2466, 0x2467, 0x2468, 0x2469,
- 0x246a, 0x246b, 0x246c, 0x246d, 0x246e, 0x246f, 0x2470, 0x2471,
- 0x2472, 0x2473, 0x2521, 0x2522, 0x2523, 0x2524, 0x2525, 0x2526,
- 0x2527, 0x2528, 0x2529, 0x252a, 0x252b, 0x252c, 0x252d, 0x252e,
- 0x252f, 0x2530, 0x2531, 0x2532, 0x2533, 0x2534, 0x2535, 0x2536,
- 0x2537, 0x2538, 0x2539, 0x253a, 0x253b, 0x253c, 0x253d, 0x253e,
- 0x253f, 0x2540, 0x2541, 0x2542, 0x2543, 0x2544, 0x2545, 0x2546,
- 0x2547, 0x2548, 0x2549, 0x254a, 0x254b, 0x254c, 0x254d, 0x254e,
- 0x254f, 0x2550, 0x2551, 0x2552, 0x2553, 0x2554, 0x2555, 0x2556,
- 0x2557, 0x2558, 0x2559, 0x255a, 0x255b, 0x255c, 0x255d, 0x255e,
- 0x255f, 0x2560, 0x2561, 0x2562, 0x2563, 0x2564, 0x2565, 0x2566,
- 0x2567, 0x2568, 0x2569, 0x256a, 0x256b, 0x256c, 0x256d, 0x256e,
- 0x256f, 0x2570, 0x2571, 0x2572, 0x2573, 0x2574, 0x2575, 0x2576,
- 0x2124, 0x2845, 0x2846, 0x2847, 0x2848, 0x2849, 0x284a, 0x284b,
- 0x284c, 0x284d, 0x284e, 0x284f, 0x2850, 0x2851, 0x2852, 0x2853,
- 0x2854, 0x2855, 0x2856, 0x2857, 0x2858, 0x2859, 0x285a, 0x285b,
- 0x285c, 0x285d, 0x285e, 0x285f, 0x2860, 0x2861, 0x2862, 0x2863,
- 0x2864, 0x2865, 0x2866, 0x2867, 0x2868, 0x2869, 0x2265, 0x2266,
- 0x2267, 0x2268, 0x2269, 0x226a, 0x226b, 0x226c, 0x226d, 0x226e,
- 0x523b, 0x3621, 0x465f, 0x4d72, 0x5549, 0x487d, 0x494f, 0x4f42,
- 0x5822, 0x323b, 0x536b, 0x5824, 0x3373, 0x5728, 0x4752, 0x5827,
- 0x4a40, 0x4770, 0x317b, 0x5235, 0x3454, 0x362b, 0x4b3f, 0x5829,
- 0x362a, 0x413d, 0x514f, 0x4925, 0x582d, 0x3876, 0x513e, 0x635c,
- 0x5650, 0x3761, 0x342e, 0x4159, 0x583c, 0x4d68, 0x3524, 0x4e2a,
- 0x5677, 0x4076, 0x3e59, 0x582f, 0x444b, 0x3e43, 0x5831, 0x4334,
- 0x5265, 0x562e, 0x4e5a, 0x5527, 0x3a75, 0x3726, 0x4056, 0x4639,
- 0x4552, 0x4747, 0x3954, 0x334b, 0x5252, 0x583f, 0x3e45, 0x4672,
- 0x5232, 0x4f30, 0x4f67, 0x4a69, 0x5840, 0x4272, 0x4252, 0x4869,
- 0x472c, 0x414b, 0x5368, 0x5579, 0x4a42, 0x367e, 0x5821, 0x535a,
- 0x3f77, 0x5446, 0x3b25, 0x5841, 0x4e65, 0x3e2e, 0x5828, 0x5147,
- 0x5029, 0x583d, 0x596f, 0x4d76, 0x3f3a, 0x3d3b, 0x3a25, 0x5260,
- 0x327a, 0x3a60, 0x4436, 0x4f6d, 0x3e29, 0x4d24, 0x4141, 0x4757,
- 0x5971, 0x5974, 0x484b, 0x5869, 0x525a, 0x4a32, 0x484a, 0x586c,
- 0x586a, 0x5846, 0x3d76, 0x464d, 0x3370, 0x586b, 0x3d71, 0x3d69,
- 0x4854, 0x3453, 0x4258, 0x3256, 0x5750, 0x4a4b, 0x4b7b, 0x554c,
- 0x3836, 0x4f49, 0x595a, 0x5870, 0x472a, 0x586e, 0x347a, 0x416e,
- 0x5254, 0x586d, 0x5247, 0x586f, 0x4347, 0x5176, 0x5659, 0x5872,
- 0x5875, 0x3c7e, 0x3c5b, 0x484e, 0x375d, 0x3742, 0x4673, 0x5878,
- 0x5241, 0x4e69, 0x3c3f, 0x377c, 0x3725, 0x505d, 0x565a, 0x5345,
- 0x3b6f, 0x3b61, 0x5871, 0x4921, 0x4e30, 0x342b, 0x5873, 0x494b,
- 0x5876, 0x4257, 0x5877, 0x4e31, 0x5879, 0x322e, 0x3940, 0x5923,
- 0x3069, 0x4166, 0x496c, 0x4b45, 0x4b46, 0x5924, 0x3568, 0x352b,
- 0x4e3b, 0x354d, 0x5721, 0x5774, 0x5353, 0x4c65, 0x3a4e, 0x5922,
- 0x595c, 0x5360, 0x587d, 0x3770, 0x5777, 0x587e, 0x587a, 0x5921,
- 0x4463, 0x5336, 0x5874, 0x595d, 0x587b, 0x4565, 0x4050, 0x5170,
- 0x305b, 0x3c51, 0x5926, 0x5925, 0x592c, 0x592e, 0x592b, 0x4a39,
- 0x5929, 0x5636, 0x335e, 0x5928, 0x407d, 0x4a4c, 0x592a, 0x5927,
- 0x5930, 0x3631, 0x3929, 0x5240, 0x4f40, 0x4242, 0x3d44, 0x556c,
- 0x3260, 0x4748, 0x3f6b, 0x592d, 0x592f, 0x4e6a, 0x3a6e, 0x4756,
- 0x3163, 0x3459, 0x366d, 0x5934, 0x3f21, 0x595e, 0x474e, 0x407e,
- 0x5938, 0x4b57, 0x377d, 0x5935, 0x5937, 0x3123, 0x5361, 0x5939,
- 0x5045, 0x5936, 0x5931, 0x5932, 0x4129, 0x5933, 0x3c73, 0x505e,
- 0x3829, 0x3e63, 0x593d, 0x593a, 0x3033, 0x5942, 0x5944, 0x3136,
- 0x593f, 0x3539, 0x3e73, 0x4c48, 0x3a72, 0x5250, 0x5943, 0x3d68,
- 0x332b, 0x5945, 0x3e6b, 0x5946, 0x593b, 0x445f, 0x593e, 0x5941,
- 0x5940, 0x552e, 0x5635, 0x4763, 0x5948, 0x3c59, 0x594a, 0x593c,
- 0x594b, 0x462b, 0x5949, 0x5776, 0x4d23, 0x3d21, 0x594c, 0x453c,
- 0x4d35, 0x594d, 0x5947, 0x3325, 0x3f7e, 0x3835, 0x407c, 0x3078,
- 0x3476, 0x594e, 0x594f, 0x3422, 0x5950, 0x345f, 0x3041, 0x5951,
- 0x4935, 0x4f71, 0x5952, 0x4145, 0x5956, 0x492e, 0x5955, 0x5954,
- 0x5957, 0x4b5b, 0x3d29, 0x4627, 0x5953, 0x5958, 0x5959, 0x4865,
- 0x405c, 0x3679, 0x5823, 0x544a, 0x542a, 0x5056, 0x3364, 0x5557,
- 0x4f48, 0x3962, 0x3f4b, 0x4362, 0x3652, 0x4d43, 0x596e, 0x5970,
- 0x3533, 0x3635, 0x3e24, 0x486b, 0x482b, 0x304b, 0x392b, 0x4179,
- 0x5962, 0x403c, 0x3932, 0x3958, 0x504b, 0x3178, 0x4664, 0x3e5f,
- 0x3564, 0x5748, 0x5178, 0x3c66, 0x4a5e, 0x3c3d, 0x5966, 0x5867,
- 0x445a, 0x3854, 0x483d, 0x3261, 0x5459, 0x4330, 0x4361, 0x5a22,
- 0x485f, 0x5034, 0x3e7c, 0x4529, 0x395a, 0x5a23, 0x5429, 0x5a24,
- 0x597b, 0x362c, 0x376b, 0x3179, 0x597c, 0x3365, 0x3e76, 0x3f76,
- 0x5231, 0x4064, 0x3633, 0x597e, 0x597d, 0x3e3b, 0x4660, 0x573c,
- 0x5a21, 0x4139, 0x3572, 0x4168, 0x3c75, 0x3455, 0x415d, 0x447d,
- 0x3c38, 0x3732, 0x376f, 0x596c, 0x463e, 0x3f2d, 0x3b4b, 0x354a,
- 0x5b49, 0x5057, 0x4d39, 0x303c, 0x3376, 0x3b77, 0x5b4a, 0x3a2f,
- 0x5464, 0x3536, 0x3573, 0x5856, 0x4850, 0x3756, 0x4750, 0x5857,
- 0x3f2f, 0x5b3b, 0x5858, 0x504c, 0x3b2e, 0x6b3e, 0x4150, 0x4175,
- 0x5472, 0x3855, 0x3434, 0x3375, 0x493e, 0x4550, 0x4559, 0x407b,
- 0x3170, 0x5859, 0x394e, 0x353d, 0x585a, 0x5646, 0x4b22, 0x482f,
- 0x4932, 0x344c, 0x3f4c, 0x3974, 0x585b, 0x585c, 0x3667, 0x3c41,
- 0x4c6a, 0x4f77, 0x585d, 0x4730, 0x3950, 0x3d23, 0x4c5e, 0x464a,
- 0x5860, 0x585e, 0x585f, 0x307e, 0x3e67, 0x4a23, 0x3c74, 0x3831,
- 0x386e, 0x5862, 0x3d4b, 0x5864, 0x5863, 0x457c, 0x5865, 0x5866,
- 0x4126, 0x4830, 0x306c, 0x3926, 0x3c53, 0x4e71, 0x5b3d, 0x4153,
- 0x362f, 0x567a, 0x452c, 0x3d59, 0x5b3e, 0x5b3f, 0x4078, 0x3e22,
- 0x404d, 0x5b40, 0x4a46, 0x322a, 0x5342, 0x4363, 0x512b, 0x5b42,
- 0x4055, 0x5b43, 0x3f31, 0x443c, 0x475a, 0x5b44, 0x5968, 0x4957,
- 0x3934, 0x4e70, 0x5448, 0x307c, 0x3452, 0x5059, 0x5969, 0x5e4b,
- 0x596b, 0x5830, 0x3b2f, 0x3131, 0x3357, 0x584e, 0x5451, 0x3d33,
- 0x3f6f, 0x4f3b, 0x5850, 0x374b, 0x5851, 0x4625, 0x4778, 0x523d,
- 0x5852, 0x4464, 0x4a2e, 0x4727, 0x5826, 0x497d, 0x4e67, 0x3b5c,
- 0x306b, 0x3b2a, 0x502d, 0x3130, 0x5764, 0x573f, 0x3525, 0x4274,
- 0x444f, 0x3229, 0x3237, 0x3165, 0x5f32, 0x553c, 0x3f28, 0x422c,
- 0x5855, 0x4231, 0x5854, 0x4e54, 0x5a60, 0x4e40, 0x5834, 0x432e,
- 0x5321, 0x4e23, 0x3c34, 0x4834, 0x4251, 0x3e6d, 0x5036, 0x5a61,
- 0x4764, 0x3327, 0x3672, 0x4c7c, 0x407a, 0x4077, 0x5139, 0x5161,
- 0x5847, 0x325e, 0x4065, 0x3a71, 0x5848, 0x542d, 0x4f61, 0x5849,
- 0x584a, 0x4f43, 0x3378, 0x3e47, 0x584b, 0x5b4c, 0x4825, 0x4f58,
- 0x487e, 0x324e, 0x5356, 0x3266, 0x3c30, 0x5351, 0x4b2b, 0x3734,
- 0x3722, 0x4a65, 0x4821, 0x4a5c, 0x3164, 0x5070, 0x4551, 0x5b45,
- 0x357e, 0x3f5a, 0x3945, 0x3e64, 0x416d, 0x5f36, 0x5f35, 0x563b,
- 0x3d50, 0x5559, 0x3048, 0x3623, 0x3f49, 0x4c28, 0x5f33, 0x4a37,
- 0x5352, 0x584f, 0x5236, 0x3a45, 0x4b3e, 0x4c3e, 0x5f37, 0x3570,
- 0x5f34, 0x5375, 0x3354, 0x3877, 0x5f3a, 0x3a4f, 0x3c2a, 0x3575,
- 0x4d2c, 0x437b, 0x3a73, 0x4074, 0x4d42, 0x4f72, 0x5f38, 0x4f45,
- 0x4240, 0x5f39, 0x4270, 0x3e7d, 0x415f, 0x4d4c, 0x5277, 0x374d,
- 0x5f41, 0x5f44, 0x3771, 0x3049, 0x3656, 0x3754, 0x3a2c, 0x4c7d,
- 0x3f54, 0x4b31, 0x4674, 0x5628, 0x5f45, 0x4e62, 0x3333, 0x4e7c,
- 0x3435, 0x4e47, 0x3a70, 0x4e61, 0x513d, 0x5f40, 0x3474, 0x334a,
- 0x3866, 0x5f3b, 0x4445, 0x5f3c, 0x5f3d, 0x5f3e, 0x453b, 0x5f3f,
- 0x5f42, 0x5431, 0x5f43, 0x473a, 0x4e58, 0x4458, 0x5f4a, 0x5f4f,
- 0x565c, 0x5f49, 0x5f5a, 0x4e36, 0x3a47, 0x5f4e, 0x5f48, 0x455e,
- 0x496b, 0x3a74, 0x437c, 0x3e57, 0x5f46, 0x5f4d, 0x4558, 0x5526,
- 0x3a4d, 0x3e4c, 0x533d, 0x3840, 0x5664, 0x5f47, 0x393e, 0x3f27,
- 0x417c, 0x5f4b, 0x5f4c, 0x5f50, 0x5f5b, 0x5f65, 0x5f57, 0x5f56,
- 0x5749, 0x5f63, 0x5f64, 0x656b, 0x5227, 0x5f52, 0x3f29, 0x545b,
- 0x3f48, 0x5f54, 0x4f4c, 0x5f5d, 0x514a, 0x5f5e, 0x3027, 0x4637,
- 0x5f53, 0x3a65, 0x365f, 0x4d5b, 0x397e, 0x5455, 0x5f5f, 0x4f6c,
- 0x3025, 0x5f67, 0x5f51, 0x5146, 0x5f55, 0x5f58, 0x5f59, 0x5f5c,
- 0x3b29, 0x5f60, 0x5f61, 0x5f62, 0x5f66, 0x5f68, 0x5334, 0x3867,
- 0x4536, 0x5f6a, 0x495a, 0x4128, 0x4444, 0x3f5e, 0x4f78, 0x555c,
- 0x5f6e, 0x3238, 0x3a5f, 0x5f6c, 0x5b41, 0x5164, 0x4b74, 0x343d,
- 0x3026, 0x5f71, 0x4c46, 0x5f72, 0x5f6d, 0x5f69, 0x5f6b, 0x5f6f,
- 0x5f70, 0x3b3d, 0x5f73, 0x5f74, 0x3b23, 0x4a5b, 0x4e28, 0x6027,
- 0x332a, 0x6026, 0x6021, 0x5f7e, 0x4d59, 0x5f7c, 0x5f7a, 0x3f50,
- 0x5744, 0x494c, 0x5f78, 0x3021, 0x5f7d, 0x5f7b, 0x6022, 0x6028,
- 0x3748, 0x4621, 0x4936, 0x4032, 0x5f75, 0x453e, 0x5844, 0x5f79,
- 0x4476, 0x6023, 0x6024, 0x6025, 0x5025, 0x6034, 0x4c64, 0x6031,
- 0x3f26, 0x602f, 0x4e39, 0x602b, 0x4946, 0x402e, 0x602e, 0x3a6d,
- 0x3a30, 0x6029, 0x5f76, 0x6033, 0x6038, 0x342d, 0x6039, 0x4f32,
- 0x3a48, 0x6030, 0x507a, 0x602c, 0x547b, 0x5f77, 0x4567, 0x602d,
- 0x5377, 0x6036, 0x6037, 0x6044, 0x5061, 0x603c, 0x6049, 0x604a,
- 0x603e, 0x602a, 0x4924, 0x6041, 0x6032, 0x4a48, 0x6043, 0x6035,
- 0x4e4b, 0x4b43, 0x604d, 0x6046, 0x6042, 0x604b, 0x603a, 0x603f,
- 0x6040, 0x6045, 0x6047, 0x6048, 0x604c, 0x603b, 0x4b54, 0x6055,
- 0x6056, 0x6052, 0x6050, 0x3c4e, 0x6051, 0x3842, 0x5845, 0x506a,
- 0x426f, 0x604f, 0x603d, 0x6054, 0x6053, 0x6057, 0x605c, 0x6058,
- 0x5676, 0x3330, 0x576c, 0x4b3b, 0x605a, 0x4e7b, 0x3a59, 0x6061,
- 0x605d, 0x522d, 0x6062, 0x605b, 0x6059, 0x605f, 0x6060, 0x605e,
- 0x6064, 0x4677, 0x582c, 0x546b, 0x6066, 0x4a49, 0x6065, 0x3841,
- 0x6067, 0x6068, 0x6069, 0x6063, 0x3a3f, 0x4c67, 0x606a, 0x4f79,
- 0x606b, 0x4842, 0x3d40, 0x4452, 0x606c, 0x606d, 0x4774, 0x4b44,
- 0x606e, 0x3b58, 0x5836, 0x5272, 0x606f, 0x4d45, 0x365a, 0x6071,
- 0x5430, 0x4027, 0x3451, 0x4e27, 0x6070, 0x6072, 0x394c, 0x397a,
- 0x4d3c, 0x6073, 0x4654, 0x6074, 0x5432, 0x4826, 0x6076, 0x6075,
- 0x6077, 0x4d41, 0x4a25, 0x545a, 0x5b57, 0x5b59, 0x5b58, 0x3967,
- 0x5b5c, 0x5b5d, 0x3558, 0x5b5a, 0x5b5b, 0x3321, 0x5b5f, 0x3b78,
- 0x5637, 0x5b60, 0x3e79, 0x373b, 0x5b50, 0x4c2e, 0x3f32, 0x3b35,
- 0x5778, 0x3f53, 0x3f69, 0x3c61, 0x4c33, 0x5b5e, 0x3053, 0x4e6b,
- 0x3758, 0x5739, 0x4642, 0x4024, 0x4c39, 0x5b67, 0x5b61, 0x463a,
- 0x5b63, 0x5b68, 0x4577, 0x5b6a, 0x5b69, 0x3f40, 0x5b66, 0x5b65,
- 0x3439, 0x402c, 0x4222, 0x5b62, 0x5b64, 0x504d, 0x5b6d, 0x405d,
- 0x5b72, 0x3662, 0x5b73, 0x5b52, 0x3938, 0x542b, 0x5b6c, 0x3f51,
- 0x5b70, 0x5b51, 0x3566, 0x5b6b, 0x3f65, 0x5b6e, 0x5b71, 0x5b79,
- 0x3921, 0x3023, 0x4271, 0x3347, 0x5b6f, 0x5b78, 0x4652, 0x5b74,
- 0x5b75, 0x5b77, 0x5b76, 0x5b7e, 0x5372, 0x323a, 0x5b7d, 0x5c24,
- 0x5b7b, 0x5b7a, 0x5b7c, 0x4560, 0x3b79, 0x5c23, 0x5c25, 0x4c43,
- 0x3651, 0x5d40, 0x5c21, 0x5c22, 0x4735, 0x3669, 0x5c27, 0x5c26,
- 0x5c29, 0x3124, 0x354c, 0x3f30, 0x515f, 0x3642, 0x5c28, 0x4b7a,
- 0x6b73, 0x4b5c, 0x4b7e, 0x4c41, 0x487b, 0x5c2a, 0x4c6e, 0x5c2b,
- 0x5b53, 0x5c2f, 0x5c2c, 0x3e33, 0x4a7b, 0x5c2d, 0x494a, 0x4439,
- 0x473d, 0x5c2e, 0x5476, 0x5066, 0x442b, 0x3655, 0x5b54, 0x315a,
- 0x5b55, 0x5b56, 0x3a3e, 0x4840, 0x4a3f, 0x4849, 0x5733, 0x4979,
- 0x3f47, 0x3a78, 0x523c, 0x623a, 0x3426, 0x3138, 0x3834, 0x4f44,
- 0x5967, 0x4f26, 0x4d62, 0x596d, 0x3660, 0x5239, 0x393b, 0x6239,
- 0x6237, 0x3473, 0x4c6c, 0x4c2b, 0x3772, 0x5832, 0x516b, 0x3a3b,
- 0x4a27, 0x4d37, 0x5244, 0x3f64, 0x3c50, 0x3661, 0x5e45, 0x5e46,
- 0x5b3c, 0x5159, 0x4666, 0x444e, 0x376e, 0x375c, 0x3f7c, 0x5760,
- 0x4675, 0x313c, 0x5e48, 0x3d31, 0x4c57, 0x5e4a, 0x5e49, 0x356c,
- 0x495d, 0x3042, 0x452e, 0x452b, 0x444c, 0x3c69, 0x4b7d, 0x3a43,
- 0x6579, 0x4867, 0x657a, 0x4d7d, 0x5731, 0x383e, 0x4268, 0x4851,
- 0x657b, 0x364a, 0x3c4b, 0x517d, 0x6621, 0x436e, 0x6624, 0x657e,
- 0x6625, 0x4d57, 0x3741, 0x657c, 0x657d, 0x6623, 0x445d, 0x6628,
- 0x6627, 0x4343, 0x465e, 0x662a, 0x4437, 0x6622, 0x4a3c, 0x3d63,
- 0x3943, 0x6626, 0x5055, 0x4e2f, 0x6629, 0x6630, 0x5226, 0x3d2a,
- 0x662d, 0x662f, 0x4051, 0x524c, 0x3c27, 0x6631, 0x5276, 0x574b,
- 0x4d7e, 0x4d5e, 0x4226, 0x662b, 0x662c, 0x3d3f, 0x662e, 0x6633,
- 0x6632, 0x6636, 0x6638, 0x446f, 0x4448, 0x3e6a, 0x496f, 0x6637,
- 0x3670, 0x4364, 0x5369, 0x6634, 0x6635, 0x4822, 0x663d, 0x6639,
- 0x4645, 0x4d71, 0x663b, 0x663c, 0x3b69, 0x663e, 0x663a, 0x4037,
- 0x5324, 0x663f, 0x4974, 0x6643, 0x6644, 0x5076, 0x433d, 0x4344,
- 0x6642, 0x6641, 0x6647, 0x4f31, 0x6b74, 0x664a, 0x6645, 0x3c5e,
- 0x4929, 0x3c35, 0x4f53, 0x6648, 0x6649, 0x664e, 0x6650, 0x6651,
- 0x664b, 0x3555, 0x664c, 0x664f, 0x445b, 0x6646, 0x664d, 0x6652,
- 0x6654, 0x6653, 0x6655, 0x5978, 0x6656, 0x6657, 0x5753, 0x665d,
- 0x665e, 0x3f57, 0x5450, 0x5756, 0x3466, 0x4b6f, 0x665a, 0x5843,
- 0x574e, 0x5022, 0x434f, 0x665f, 0x3c3e, 0x3942, 0x665b, 0x5127,
- 0x3a22, 0x424f, 0x582b, 0x4a6b, 0x656e, 0x665c, 0x3775, 0x4866,
- 0x4475, 0x6532, 0x447e, 0x4b7c, 0x6533, 0x552c, 0x536e, 0x4a58,
- 0x3032, 0x4b4e, 0x4d6a, 0x3a6a, 0x6535, 0x6534, 0x575a, 0x3959,
- 0x5666, 0x3628, 0x4d70, 0x524b, 0x3126, 0x4a35, 0x3368, 0x4973,
- 0x3f4d, 0x507b, 0x4a52, 0x6536, 0x3b42, 0x4f5c, 0x392c, 0x5457,
- 0x3a26, 0x5167, 0x4f7c, 0x3c52, 0x6537, 0x485d, 0x3f6d, 0x3176,
- 0x4b5e, 0x3c45, 0x3c44, 0x527a, 0x435c, 0x3f5c, 0x383b, 0x4342,
- 0x3a2e, 0x5422, 0x475e, 0x442f, 0x326c, 0x3951, 0x653b, 0x4148,
- 0x552f, 0x653c, 0x653e, 0x3467, 0x3654, 0x4b42, 0x5130, 0x353c,
- 0x4a59, 0x3762, 0x4964, 0x3d2b, 0x4e3e, 0x5770, 0x5021, 0x4959,
- 0x367b, 0x6658, 0x3c62, 0x333e, 0x4950, 0x6659, 0x3322, 0x5e4c,
- 0x5348, 0x5e4d, 0x5222, 0x5e4e, 0x3e4d, 0x5e4f, 0x4a2c, 0x527c,
- 0x335f, 0x656a, 0x4461, 0x3e21, 0x4e32, 0x4472, 0x3e56, 0x4628,
- 0x3263, 0x3e53, 0x477c, 0x4c6b, 0x3d6c, 0x4e5d, 0x4a3a, 0x4641,
- 0x656c, 0x503c, 0x5539, 0x656d, 0x4a74, 0x4d40, 0x4245, 0x656f,
- 0x4244, 0x6570, 0x6578, 0x4d4d, 0x493d, 0x5259, 0x6128, 0x536c,
- 0x4b6a, 0x4671, 0x612c, 0x6127, 0x6129, 0x612a, 0x612f, 0x326d,
- 0x612b, 0x385a, 0x612d, 0x612e, 0x6130, 0x353a, 0x6131, 0x6133,
- 0x6138, 0x5152, 0x6136, 0x6135, 0x416b, 0x6137, 0x5440, 0x6132,
- 0x613a, 0x3036, 0x6134, 0x3f79, 0x6139, 0x613b, 0x613e, 0x613c,
- 0x5645, 0x4f3f, 0x613d, 0x613f, 0x424d, 0x366b, 0x5378, 0x474d,
- 0x3765, 0x3e7e, 0x6140, 0x6141, 0x6147, 0x3367, 0x4669, 0x345e,
- 0x5142, 0x6148, 0x6146, 0x6145, 0x6143, 0x6142, 0x3140, 0x5538,
- 0x6144, 0x614b, 0x614c, 0x614a, 0x6f7a, 0x6153, 0x6152, 0x4736,
- 0x6149, 0x614e, 0x6150, 0x6154, 0x6151, 0x614d, 0x614f, 0x6155,
- 0x6156, 0x6157, 0x6158, 0x615a, 0x615b, 0x4e21, 0x675d, 0x3428,
- 0x565d, 0x5132, 0x3332, 0x3924, 0x5773, 0x4749, 0x3e5e, 0x392e,
- 0x4e57, 0x326e, 0x5b4f, 0x3c3a, 0x5251, 0x4b48, 0x304d, 0x4f6f,
- 0x5963, 0x3d6d, 0x3152, 0x4a50, 0x323c, 0x4b27, 0x372b, 0x4a26,
- 0x4f23, 0x6078, 0x554a, 0x607b, 0x607a, 0x4541, 0x4c7b, 0x4131,
- 0x6079, 0x5663, 0x322f, 0x5644, 0x355b, 0x3478, 0x5621, 0x4f2f,
- 0x306f, 0x607c, 0x6121, 0x3323, 0x607d, 0x607e, 0x4331, 0x435d,
- 0x6122, 0x3779, 0x3b4f, 0x6123, 0x443b, 0x6124, 0x6125, 0x6126,
- 0x3431, 0x3849, 0x463d, 0x446a, 0x3222, 0x5052, 0x675b, 0x3b43,
- 0x5357, 0x5344, 0x3963, 0x624f, 0x572f, 0x476c, 0x3153, 0x3432,
- 0x6251, 0x5072, 0x422e, 0x6250, 0x3f62, 0x5326, 0x3557, 0x6252,
- 0x356a, 0x436d, 0x387d, 0x382e, 0x4553, 0x374f, 0x6254, 0x6253,
- 0x3648, 0x5779, 0x4d25, 0x6258, 0x6256, 0x4a7c, 0x3f35, 0x5339,
- 0x6255, 0x6257, 0x412e, 0x4048, 0x625b, 0x625a, 0x402a, 0x414e,
- 0x625c, 0x625d, 0x625e, 0x5b48, 0x5153, 0x4d22, 0x3d28, 0x5e43,
- 0x5825, 0x3f2a, 0x5b4d, 0x526c, 0x467a, 0x452a, 0x5e44, 0x3157,
- 0x5f2e, 0x4a3d, 0x5f31, 0x392d, 0x527d, 0x3825, 0x3a6b, 0x335a,
- 0x355c, 0x5545, 0x4356, 0x4f52, 0x3b21, 0x6573, 0x6572, 0x6574,
- 0x4d64, 0x4875, 0x352f, 0x473f, 0x6576, 0x6c30, 0x6566, 0x3969,
- 0x3531, 0x423c, 0x6568, 0x6567, 0x6569, 0x524d, 0x616a, 0x504e,
- 0x4d2e, 0x5165, 0x324a, 0x316b, 0x3172, 0x456d, 0x5543, 0x5330,
- 0x615c, 0x615d, 0x525b, 0x3339, 0x314b, 0x4d79, 0x5577, 0x615e,
- 0x3e36, 0x347d, 0x615f, 0x3a5c, 0x6160, 0x3b32, 0x4249, 0x6161,
- 0x506c, 0x4d3d, 0x6162, 0x3543, 0x4547, 0x6163, 0x6164, 0x5379,
- 0x6165, 0x512d, 0x6166, 0x4e22, 0x6167, 0x3542, 0x6168, 0x3b55,
- 0x5044, 0x6260, 0x3158, 0x5264, 0x6261, 0x3c49, 0x484c, 0x6263,
- 0x6c7e, 0x6c7d, 0x5f2f, 0x6262, 0x563e, 0x4d7c, 0x4326, 0x6343,
- 0x5652, 0x6267, 0x6268, 0x5347, 0x626c, 0x3f6c, 0x626d, 0x6265,
- 0x3340, 0x446e, 0x626e, 0x5043, 0x3a76, 0x6269, 0x375e, 0x3b33,
- 0x4c2c, 0x4b4b, 0x6264, 0x6266, 0x626a, 0x626b, 0x6277, 0x6274,
- 0x5475, 0x6273, 0x452d, 0x557a, 0x4542, 0x3240, 0x626f, 0x6272,
- 0x412f, 0x4b3c, 0x3521, 0x6279, 0x3c31, 0x6271, 0x5054, 0x5439,
- 0x6275, 0x3956, 0x6276, 0x4753, 0x6270, 0x575c, 0x6d21, 0x6278,
- 0x6d25, 0x627e, 0x4a51, 0x4135, 0x3b50, 0x3f56, 0x3a63, 0x4b21,
- 0x6d26, 0x6d23, 0x6d22, 0x3b56, 0x6d27, 0x5074, 0x6d24, 0x3a5e,
- 0x3677, 0x6321, 0x3632, 0x4c71, 0x3927, 0x4f22, 0x4721, 0x3f52,
- 0x3671, 0x627a, 0x627b, 0x627d, 0x627c, 0x4455, 0x6322, 0x5341,
- 0x6327, 0x4744, 0x4f24, 0x6329, 0x3a37, 0x6328, 0x3b5a, 0x6323,
- 0x6324, 0x632a, 0x6326, 0x4e72, 0x5346, 0x3b3c, 0x5443, 0x447a,
- 0x6d28, 0x507c, 0x6325, 0x4375, 0x632d, 0x312f, 0x6332, 0x3c42,
- 0x632c, 0x353f, 0x4769, 0x6330, 0x3e2a, 0x4d6f, 0x3b73, 0x4c68,
- 0x632f, 0x6331, 0x4f27, 0x632e, 0x4e29, 0x3b5d, 0x356b, 0x3e65,
- 0x3252, 0x334d, 0x3139, 0x632b, 0x3251, 0x352c, 0x395f, 0x3668,
- 0x4f6b, 0x6337, 0x3b4c, 0x4847, 0x504a, 0x6338, 0x336e, 0x6d29,
- 0x537a, 0x5364, 0x6d2a, 0x6339, 0x5262, 0x6335, 0x535e, 0x3850,
- 0x6333, 0x6336, 0x375f, 0x6334, 0x4022, 0x633a, 0x5438, 0x3448,
- 0x633b, 0x3b45, 0x4977, 0x4965, 0x443d, 0x6d2b, 0x427d, 0x3b5b,
- 0x3f2e, 0x4e3f, 0x633c, 0x3f36, 0x316f, 0x5477, 0x633e, 0x6d2d,
- 0x633f, 0x3a29, 0x6d2c, 0x633d, 0x6340, 0x3a36, 0x362e, 0x5038,
- 0x3043, 0x6d2e, 0x6d2f, 0x4041, 0x6341, 0x4533, 0x6342, 0x5c32,
- 0x6d30, 0x386a, 0x4e6c, 0x6a27, 0x5067, 0x4a79, 0x4856, 0x4f37,
- 0x3349, 0x4e52, 0x3d64, 0x635e, 0x3b72, 0x6a28, 0x553d, 0x465d,
- 0x6a29, 0x6a2a, 0x6a2c, 0x6a2b, 0x6a2e, 0x6a2d, 0x3d58, 0x6a2f,
- 0x423e, 0x3441, 0x3477, 0x3b27, 0x6c66, 0x6c65, 0x373f, 0x4b79,
- 0x3162, 0x6c67, 0x4948, 0x6c68, 0x6c69, 0x4a56, 0x5e50, 0x3245,
- 0x547a, 0x464b, 0x3047, 0x3472, 0x4853, 0x4d50, 0x3f38, 0x3f5b,
- 0x4724, 0x5634, 0x4029, 0x5e51, 0x4928, 0x516f, 0x4524, 0x3067,
- 0x3336, 0x4845, 0x3062, 0x3776, 0x457a, 0x3673, 0x5552, 0x3350,
- 0x3c3c, 0x332d, 0x3e71, 0x3051, 0x5256, 0x4a63, 0x5725, 0x4d36,
- 0x3636, 0x3f39, 0x555b, 0x3827, 0x4557, 0x5e52, 0x3f59, 0x4255,
- 0x4740, 0x3b24, 0x3128, 0x456a, 0x457b, 0x4c27, 0x3127, 0x3556,
- 0x4428, 0x5e53, 0x513a, 0x3369, 0x4372, 0x3777, 0x5674, 0x3523,
- 0x3270, 0x4434, 0x4469, 0x402d, 0x5e54, 0x3068, 0x4544, 0x4160,
- 0x3955, 0x3e5c, 0x4d58, 0x304e, 0x4d4f, 0x5e56, 0x3e50, 0x573e,
- 0x5e55, 0x5550, 0x305d, 0x4462, 0x4223, 0x3c70, 0x5335, 0x4039,
- 0x4521, 0x3226, 0x5471, 0x4028, 0x4a43, 0x5e57, 0x557c, 0x3930,
- 0x482d, 0x4b29, 0x5e59, 0x3f3d, 0x4634, 0x5727, 0x4a30, 0x4443,
- 0x3356, 0x3952, 0x5638, 0x6a7c, 0x3034, 0x3f66, 0x4c74, 0x4d5a,
- 0x563f, 0x424e, 0x4e4e, 0x4c22, 0x502e, 0x4453, 0x3532, 0x5e58,
- 0x5575, 0x3c37, 0x3b53, 0x3024, 0x4532, 0x346c, 0x5571, 0x6a7d,
- 0x5e5a, 0x4d26, 0x4d6c, 0x4e66, 0x5e5c, 0x4d31, 0x4026, 0x573d,
- 0x5e5b, 0x3046, 0x3a34, 0x4953, 0x4473, 0x3e68, 0x3236, 0x404c,
- 0x4b70, 0x3c71, 0x3b3b, 0x3537, 0x4575, 0x5e66, 0x5e63, 0x3e5d,
- 0x5e5f, 0x3437, 0x3d5d, 0x5e60, 0x446d, 0x4f46, 0x3560, 0x365e,
- 0x4a5a, 0x3574, 0x5e65, 0x5546, 0x5e61, 0x4c4d, 0x467e, 0x4545,
- 0x5234, 0x3e72, 0x4253, 0x4c3d, 0x3338, 0x3d53, 0x3f58, 0x4d46,
- 0x515a, 0x346b, 0x5e64, 0x5e5d, 0x5e67, 0x6a7e, 0x4230, 0x5e62,
- 0x5640, 0x3527, 0x3274, 0x5e68, 0x5e72, 0x5e6d, 0x5e71, 0x4860,
- 0x5761, 0x5e6f, 0x4368, 0x4c61, 0x3265, 0x523e, 0x5e6e, 0x5e6b,
- 0x4e55, 0x3427, 0x3f2b, 0x3e3e, 0x3d52, 0x5e69, 0x542e, 0x5e5e,
- 0x5e6a, 0x403f, 0x5e6c, 0x3273, 0x3869, 0x4227, 0x3d41, 0x5e75,
- 0x5e78, 0x322b, 0x3424, 0x346a, 0x4926, 0x5e76, 0x4b51, 0x3863,
- 0x5e77, 0x5e7a, 0x5e79, 0x4c42, 0x3061, 0x346e, 0x653a, 0x502f,
- 0x326b, 0x6b21, 0x5e74, 0x4963, 0x5e73, 0x305a, 0x5221, 0x3177,
- 0x4c2f, 0x5e70, 0x4b24, 0x552a, 0x5e7b, 0x345d, 0x4426, 0x5e7d,
- 0x437e, 0x4421, 0x5f21, 0x414c, 0x5e7c, 0x3e6f, 0x4632, 0x3345,
- 0x4876, 0x4b3a, 0x5e7e, 0x5f24, 0x5732, 0x3337, 0x4143, 0x474b,
- 0x3225, 0x3469, 0x572b, 0x446c, 0x5f22, 0x5f23, 0x5f25, 0x3a33,
- 0x5f26, 0x405e, 0x4943, 0x3259, 0x4766, 0x5f27, 0x475c, 0x5f28,
- 0x6b22, 0x4b53, 0x5f2a, 0x5f29, 0x3241, 0x454a, 0x5f2b, 0x545c,
- 0x4841, 0x5f2c, 0x3e70, 0x5f2d, 0x5627, 0x6a37, 0x6b36, 0x4a55,
- 0x587c, 0x3844, 0x3925, 0x3745, 0x557e, 0x394a, 0x5027, 0x744d,
- 0x3550, 0x4374, 0x3e48, 0x6b37, 0x303d, 0x3d4c, 0x4132, 0x3156,
- 0x3328, 0x3852, 0x4922, 0x3658, 0x6b38, 0x3e34, 0x4a7d, 0x4743,
- 0x557b, 0x3773, 0x4e44, 0x552b, 0x3173, 0x6c33, 0x305f, 0x6c35,
- 0x3637, 0x414f, 0x757a, 0x5031, 0x5565, 0x4e53, 0x3d6f, 0x3362,
- 0x382b, 0x5536, 0x6d3d, 0x364f, 0x4b39, 0x5042, 0x373d, 0x6c36,
- 0x4a29, 0x4554, 0x6c39, 0x6c38, 0x4243, 0x6c37, 0x507d, 0x6c3a,
- 0x6c3b, 0x5765, 0x6c3c, 0x6c3d, 0x466c, 0x4e5e, 0x3c48, 0x4855,
- 0x3529, 0x3e49, 0x563c, 0x5467, 0x512e, 0x5071, 0x6a38, 0x6a39,
- 0x6a3a, 0x3a35, 0x4a31, 0x3f75, 0x4d7a, 0x6a40, 0x303a, 0x6a3e,
- 0x4025, 0x6a3b, 0x327d, 0x4377, 0x3b68, 0x5257, 0x4e74, 0x6a3f,
- 0x6a3c, 0x6a43, 0x5047, 0x5333, 0x343a, 0x4341, 0x5772, 0x5551,
- 0x4a47, 0x6a45, 0x6a44, 0x6a47, 0x6a46, 0x5667, 0x4f54, 0x6a4b,
- 0x3b4e, 0x3d7a, 0x494e, 0x6a4c, 0x4939, 0x4f7e, 0x6a4a, 0x544e,
- 0x6a4d, 0x6a4f, 0x4d6d, 0x6a49, 0x6a4e, 0x4e6e, 0x3b5e, 0x333f,
- 0x4655, 0x3e30, 0x4e7a, 0x4767, 0x3e27, 0x6a50, 0x5647, 0x4140,
- 0x545d, 0x6a51, 0x4f3e, 0x6a52, 0x4a6e, 0x452f, 0x3035, 0x6a54,
- 0x6a53, 0x745f, 0x443a, 0x3129, 0x655f, 0x6a55, 0x4a6f, 0x6a56,
- 0x6a57, 0x4658, 0x6a58, 0x6a59, 0x543b, 0x477a, 0x5237, 0x387c,
- 0x6a42, 0x325c, 0x427c, 0x5478, 0x4c66, 0x576e, 0x5442, 0x5350,
- 0x6b43, 0x4573, 0x377e, 0x6b54, 0x4b37, 0x6b5e, 0x404a, 0x4d7b,
- 0x332f, 0x465a, 0x6b7c, 0x443e, 0x4e34, 0x4429, 0x313e, 0x547d,
- 0x4a75, 0x566c, 0x4653, 0x3664, 0x3b7a, 0x5060, 0x4931, 0x5453,
- 0x4828, 0x384b, 0x683e, 0x493c, 0x683b, 0x406e, 0x5053, 0x3244,
- 0x3465, 0x683c, 0x5548, 0x3645, 0x683d, 0x4a78, 0x385c, 0x4c75,
- 0x4034, 0x516e, 0x683f, 0x6842, 0x3a3c, 0x312d, 0x3d5c, 0x6a3d,
- 0x6843, 0x6846, 0x684b, 0x684c, 0x4b49, 0x3065, 0x3c2b, 0x3939,
- 0x6841, 0x4d77, 0x684a, 0x4e76, 0x556d, 0x4156, 0x6844, 0x4336,
- 0x397b, 0x5626, 0x6848, 0x4a60, 0x5466, 0x6840, 0x6845, 0x6847,
- 0x4739, 0x3763, 0x6849, 0x3f5d, 0x6852, 0x6857, 0x6855, 0x3c5c,
- 0x3c4f, 0x685b, 0x685e, 0x685a, 0x317a, 0x3058, 0x4433, 0x384c,
- 0x4662, 0x483e, 0x4861, 0x684f, 0x6854, 0x6856, 0x3971, 0x6858,
- 0x5775, 0x447b, 0x685c, 0x3269, 0x6851, 0x3c6d, 0x3f42, 0x684d,
- 0x5679, 0x4178, 0x3271, 0x685f, 0x4a41, 0x6859, 0x5524, 0x316a,
- 0x553b, 0x684e, 0x6850, 0x3630, 0x6853, 0x685d, 0x4038, 0x4a77,
- 0x4b28, 0x465c, 0x4075, 0x6869, 0x5023, 0x6872, 0x566a, 0x6860,
- 0x6861, 0x5179, 0x3a4b, 0x3879, 0x3871, 0x5454, 0x686f, 0x686e,
- 0x686c, 0x3970, 0x4c52, 0x6866, 0x4e26, 0x3f72, 0x3038, 0x6871,
- 0x6870, 0x5740, 0x6864, 0x4d29, 0x4923, 0x3b38, 0x3d5b, 0x686a,
- 0x6862, 0x6863, 0x6865, 0x3535, 0x6867, 0x4745, 0x686b, 0x686d,
- 0x3d30, 0x572e, 0x6878, 0x6875, 0x4d30, 0x6876, 0x413a, 0x6868,
- 0x4337, 0x3070, 0x6874, 0x6877, 0x3923, 0x4952, 0x434e, 0x4e60,
- 0x4066, 0x4b73, 0x4c5d, 0x5035, 0x4a61, 0x6873, 0x3c6c, 0x6879,
- 0x435e, 0x4665, 0x3977, 0x3074, 0x5758, 0x3c2c, 0x456f, 0x4c44,
- 0x6926, 0x492d, 0x6922, 0x4062, 0x3f43, 0x687e, 0x3957, 0x687b,
- 0x6924, 0x524e, 0x6923, 0x5632, 0x5735, 0x6927, 0x3d37, 0x687c,
- 0x687d, 0x6921, 0x4d56, 0x522c, 0x6932, 0x6929, 0x342a, 0x343b,
- 0x692b, 0x5028, 0x6925, 0x337e, 0x692c, 0x4063, 0x692a, 0x6939,
- 0x6938, 0x692e, 0x687a, 0x6928, 0x3f2c, 0x6931, 0x693a, 0x4225,
- 0x692f, 0x3845, 0x692d, 0x535c, 0x6934, 0x6935, 0x6937, 0x6947,
- 0x4046, 0x6945, 0x6930, 0x693b, 0x3071, 0x693c, 0x5525, 0x693e,
- 0x693f, 0x6941, 0x4171, 0x4836, 0x693d, 0x6942, 0x6943, 0x6933,
- 0x6936, 0x3b31, 0x6940, 0x3c77, 0x6944, 0x6946, 0x694a, 0x694e,
- 0x325b, 0x6948, 0x372e, 0x694b, 0x694c, 0x5541, 0x4423, 0x6958,
- 0x3a61, 0x6949, 0x5323, 0x6954, 0x6957, 0x6950, 0x694f, 0x4741,
- 0x6952, 0x6959, 0x3348, 0x6953, 0x4f70, 0x694d, 0x3377, 0x6956,
- 0x695a, 0x4c34, 0x4f2d, 0x6955, 0x695c, 0x695b, 0x695e, 0x6951,
- 0x695d, 0x695f, 0x434a, 0x4737, 0x344e, 0x3b36, 0x5040, 0x6c23,
- 0x4537, 0x537b, 0x6c24, 0x6c25, 0x465b, 0x3f6e, 0x6c26, 0x6c27,
- 0x502a, 0x4738, 0x3868, 0x6c28, 0x5639, 0x557d, 0x344b, 0x323d,
- 0x4e64, 0x4667, 0x4d61, 0x3475, 0x4b40, 0x3c5f, 0x6962, 0x6963,
- 0x516a, 0x6965, 0x3479, 0x6964, 0x5133, 0x4a62, 0x3250, 0x6968,
- 0x6966, 0x6967, 0x5633, 0x6969, 0x696a, 0x696b, 0x696c, 0x6c2f,
- 0x4539, 0x364e, 0x5273, 0x356e, 0x3b59, 0x6c31, 0x5263, 0x4e63,
- 0x4438, 0x433f, 0x363e, 0x5839, 0x3148, 0x314f, 0x3151, 0x457e,
- 0x3150, 0x432b, 0x5531, 0x6b24, 0x3a41, 0x4c3a, 0x6b25, 0x6b27,
- 0x6b28, 0x6b26, 0x6b29, 0x6b2b, 0x6b2a, 0x6b2c, 0x4a4f, 0x5835,
- 0x4371, 0x4325, 0x4678, 0x6b2d, 0x444a, 0x6b2e, 0x6b2f, 0x6b30,
- 0x3755, 0x377a, 0x6b31, 0x4762, 0x6b33, 0x3a24, 0x5175, 0x3031,
- 0x6b32, 0x6b34, 0x352a, 0x4248, 0x4768, 0x6b35, 0x4b2e, 0x635f,
- 0x5340, 0x595b, 0x4d21, 0x562d, 0x4773, 0x5960, 0x3b63, 0x3a3a,
- 0x6362, 0x4f2b, 0x6360, 0x4947, 0x3a39, 0x5134, 0x6361, 0x486a,
- 0x392f, 0x3d2d, 0x3358, 0x4e5b, 0x4c40, 0x6368, 0x6369, 0x4d74,
- 0x4c2d, 0x3c33, 0x636a, 0x636b, 0x505a, 0x467b, 0x375a, 0x475f,
- 0x524a, 0x4e56, 0x6364, 0x636c, 0x4972, 0x3341, 0x6367, 0x4663,
- 0x6365, 0x6d33, 0x6366, 0x4933, 0x4566, 0x3935, 0x433b, 0x6363,
- 0x453d, 0x4124, 0x4259, 0x3257, 0x636d, 0x3b26, 0x442d, 0x6370,
- 0x3e5a, 0x637b, 0x6375, 0x3a53, 0x3750, 0x534d, 0x564e, 0x5553,
- 0x3941, 0x5534, 0x5158, 0x5039, 0x4776, 0x482a, 0x3234, 0x435a,
- 0x636e, 0x637c, 0x636f, 0x3728, 0x6377, 0x6374, 0x373a, 0x4522,
- 0x6376, 0x455d, 0x3228, 0x467c, 0x4460, 0x5722, 0x4061, 0x6379,
- 0x637a, 0x637d, 0x4c29, 0x6373, 0x533e, 0x3143, 0x6d34, 0x6371,
- 0x6372, 0x6378, 0x503a, 0x4643, 0x5473, 0x637e, 0x3d60, 0x6427,
- 0x6426, 0x5173, 0x6423, 0x6429, 0x4877, 0x4f34, 0x6428, 0x642e,
- 0x4265, 0x3634, 0x3d72, 0x6422, 0x3a69, 0x642a, 0x642c, 0x367d,
- 0x565e, 0x6432, 0x642d, 0x6421, 0x3b6e, 0x4d5d, 0x4722, 0x4549,
- 0x4177, 0x6424, 0x4733, 0x3d2c, 0x3d3d, 0x6425, 0x5747, 0x3262,
- 0x642b, 0x3c43, 0x642f, 0x3b6b, 0x6430, 0x4528, 0x6431, 0x5563,
- 0x3f23, 0x643a, 0x6437, 0x643b, 0x643d, 0x4656, 0x3a46, 0x404b,
- 0x3821, 0x6434, 0x5421, 0x3a23, 0x3d7e, 0x643c, 0x4d3f, 0x4479,
- 0x4f7b, 0x4966, 0x533f, 0x4f51, 0x6433, 0x6438, 0x6439, 0x4c69,
- 0x4c4e, 0x4054, 0x6435, 0x4130, 0x6436, 0x4e50, 0x3b41, 0x3553,
- 0x4873, 0x3d27, 0x5547, 0x492c, 0x3822, 0x644a, 0x644c, 0x5144,
- 0x523a, 0x3a2d, 0x3a54, 0x6443, 0x356d, 0x574d, 0x6440, 0x4f7d,
- 0x643f, 0x415c, 0x4c4a, 0x4a67, 0x4457, 0x4c54, 0x6448, 0x6447,
- 0x6441, 0x6444, 0x352d, 0x5359, 0x6446, 0x5279, 0x3463, 0x3b34,
- 0x496e, 0x343e, 0x3b6c, 0x514d, 0x4c6d, 0x6d35, 0x4765, 0x5428,
- 0x644b, 0x5755, 0x6442, 0x3d25, 0x6445, 0x5366, 0x6449, 0x4978,
- 0x643e, 0x5365, 0x477e, 0x3649, 0x547c, 0x3233, 0x6457, 0x4e42,
- 0x644d, 0x4e3c, 0x385b, 0x6456, 0x3f4a, 0x534e, 0x436c, 0x4548,
- 0x6458, 0x4d44, 0x644f, 0x6454, 0x6455, 0x3a7e, 0x4f66, 0x553f,
- 0x6452, 0x6450, 0x644e, 0x4d65, 0x4a2a, 0x4023, 0x3d26, 0x6453,
- 0x3848, 0x6467, 0x5434, 0x645b, 0x416f, 0x6469, 0x5267, 0x645f,
- 0x6460, 0x4f2a, 0x4b5d, 0x645a, 0x6451, 0x6465, 0x485c, 0x6463,
- 0x4467, 0x6462, 0x6461, 0x337c, 0x6468, 0x3561, 0x574c, 0x6466,
- 0x3b2c, 0x5752, 0x4c4f, 0x6b78, 0x6464, 0x3976, 0x564d, 0x6459,
- 0x645c, 0x427a, 0x645e, 0x424b, 0x4044, 0x4250, 0x3175, 0x4c32,
- 0x354e, 0x646f, 0x462f, 0x4661, 0x6475, 0x4229, 0x406c, 0x515d,
- 0x646e, 0x442e, 0x646d, 0x6476, 0x6474, 0x427e, 0x645d, 0x6470,
- 0x4a7e, 0x5544, 0x6471, 0x517a, 0x646b, 0x646c, 0x6472, 0x4e2b,
- 0x454b, 0x4731, 0x423a, 0x646a, 0x414a, 0x4c36, 0x3331, 0x647b,
- 0x6473, 0x647a, 0x647d, 0x647c, 0x334e, 0x333a, 0x6477, 0x6479,
- 0x6478, 0x456c, 0x403d, 0x5468, 0x6522, 0x3044, 0x6524, 0x6523,
- 0x3c24, 0x6525, 0x6521, 0x647e, 0x3174, 0x6528, 0x6529, 0x6526,
- 0x6527, 0x652a, 0x4659, 0x652b, 0x652d, 0x652c, 0x652f, 0x652e,
- 0x3960, 0x6530, 0x6531, 0x3b70, 0x6c61, 0x4370, 0x3546, 0x3b52,
- 0x4169, 0x546e, 0x3e44, 0x5746, 0x5456, 0x3253, 0x6c3e, 0x6a41,
- 0x422f, 0x3436, 0x5157, 0x3334, 0x4832, 0x3f3b, 0x6c40, 0x564b,
- 0x6c3f, 0x6c41, 0x6c45, 0x3e66, 0x4c3f, 0x455a, 0x3e3c, 0x6c46,
- 0x317e, 0x6c44, 0x5528, 0x3563, 0x6c42, 0x4136, 0x3363, 0x6c43,
- 0x4b38, 0x4043, 0x4c7e, 0x4152, 0x6c48, 0x3a66, 0x4053, 0x5672,
- 0x514c, 0x3f3e, 0x3733, 0x4955, 0x6c47, 0x3b62, 0x4c4c, 0x3d7d,
- 0x4848, 0x4f29, 0x4d69, 0x456b, 0x3769, 0x5149, 0x3a38, 0x6c49,
- 0x6c4a, 0x3b40, 0x6c4b, 0x6c62, 0x313a, 0x3759, 0x3d39, 0x6c4c,
- 0x5166, 0x6c4d, 0x483b, 0x6c51, 0x6c53, 0x3b4d, 0x3c65, 0x6c4f,
- 0x4937, 0x433a, 0x6c63, 0x5555, 0x6c50, 0x5673, 0x6c52, 0x6c4e,
- 0x6c54, 0x6c55, 0x493f, 0x4f28, 0x505c, 0x512c, 0x485b, 0x6c56,
- 0x4e75, 0x4a6c, 0x6c5a, 0x6c59, 0x303e, 0x6c57, 0x6c58, 0x6c64,
- 0x483c, 0x4147, 0x6c5c, 0x5160, 0x6c5b, 0x546f, 0x6c5d, 0x5b46,
- 0x6c5e, 0x312c, 0x6c5f, 0x6c60, 0x5726, 0x4540, 0x6b3c, 0x302e,
- 0x3e74, 0x3838, 0x522f, 0x3056, 0x3579, 0x5833, 0x4b2c, 0x635d,
- 0x462c, 0x3066, 0x4546, 0x6b39, 0x6b3a, 0x6b3b, 0x5140, 0x4523,
- 0x6a72, 0x4432, 0x4435, 0x404e, 0x6a73, 0x4441, 0x4e6f, 0x6a70,
- 0x6a74, 0x497c, 0x4723, 0x4c58, 0x4e7e, 0x6a75, 0x6a76, 0x4f2c,
- 0x4067, 0x6a77, 0x363f, 0x6a78, 0x6a79, 0x6a7a, 0x6a7b, 0x6a71,
- 0x482e, 0x616b, 0x3738, 0x616c, 0x616d, 0x5734, 0x616e, 0x616f,
- 0x534c, 0x6171, 0x3f71, 0x6170, 0x3552, 0x3137, 0x6173, 0x6172,
- 0x3a7c, 0x6174, 0x3937, 0x3e51, 0x447c, 0x3a5d, 0x3d46, 0x6175,
- 0x6177, 0x3640, 0x4f41, 0x4a28, 0x6176, 0x5578, 0x537c, 0x6178,
- 0x617c, 0x6179, 0x617a, 0x406a, 0x617e, 0x6221, 0x4047, 0x617b,
- 0x617d, 0x6225, 0x4154, 0x6223, 0x6228, 0x327e, 0x6222, 0x434d,
- 0x3242, 0x6227, 0x6226, 0x6224, 0x6229, 0x622b, 0x5049, 0x566d,
- 0x4328, 0x622c, 0x4f57, 0x622e, 0x3a6f, 0x6960, 0x622d, 0x622a,
- 0x3b2b, 0x5433, 0x6230, 0x622f, 0x6961, 0x6231, 0x6232, 0x6233,
- 0x4c21, 0x6234, 0x6235, 0x507e, 0x424a, 0x5371, 0x4d75, 0x6760,
- 0x6761, 0x3e41, 0x426a, 0x6764, 0x6763, 0x4d66, 0x4335, 0x6762,
- 0x3b37, 0x4f56, 0x4161, 0x6769, 0x6768, 0x6774, 0x3223, 0x676a,
- 0x6766, 0x676c, 0x676b, 0x493a, 0x5564, 0x6765, 0x3729, 0x6767,
- 0x676e, 0x6773, 0x5669, 0x676d, 0x6772, 0x6771, 0x3060, 0x6775,
- 0x4772, 0x4045, 0x406d, 0x4170, 0x6770, 0x6776, 0x4b76, 0x6822,
- 0x6821, 0x5741, 0x677a, 0x6779, 0x677b, 0x6777, 0x677e, 0x677d,
- 0x677c, 0x4155, 0x4759, 0x457d, 0x4543, 0x476d, 0x6823, 0x6826,
- 0x6825, 0x6827, 0x3a77, 0x6778, 0x6824, 0x4870, 0x492a, 0x6829,
- 0x3965, 0x517e, 0x6828, 0x682a, 0x682d, 0x682e, 0x4127, 0x682f,
- 0x6830, 0x682c, 0x6834, 0x682b, 0x6831, 0x6835, 0x6832, 0x6833,
- 0x6837, 0x6836, 0x394f, 0x702c, 0x702d, 0x4630, 0x306a, 0x483f,
- 0x4d5f, 0x4e4d, 0x6a31, 0x6a32, 0x463f, 0x3449, 0x6a33, 0x5567,
- 0x5d79, 0x6a34, 0x6a35, 0x6a36, 0x384a, 0x5f30, 0x4975, 0x4c70,
- 0x497a, 0x497b, 0x5343, 0x4b26, 0x3826, 0x702e, 0x3142, 0x6538,
- 0x4c6f, 0x5349, 0x3c57, 0x496a, 0x3567, 0x4450, 0x3569, 0x6e2e,
- 0x3b2d, 0x675e, 0x6e2f, 0x3329, 0x6e32, 0x6e31, 0x3d67, 0x6e30,
- 0x4e37, 0x454f, 0x4174, 0x5b4e, 0x6e33, 0x5073, 0x4254, 0x4668,
- 0x372c, 0x6e34, 0x336b, 0x3b7b, 0x6e35, 0x675c, 0x6e36, 0x3d2e,
- 0x7162, 0x4a68, 0x5249, 0x705a, 0x705b, 0x705c, 0x4146, 0x386d,
- 0x3e4e, 0x705e, 0x4531, 0x705d, 0x5171, 0x7060, 0x304c, 0x3d6a,
- 0x525f, 0x705f, 0x342f, 0x3768, 0x7066, 0x7065, 0x4623, 0x7061,
- 0x7062, 0x3443, 0x7063, 0x556e, 0x4c5b, 0x3e52, 0x3c32, 0x7068,
- 0x7067, 0x7064, 0x3221, 0x5622, 0x5338, 0x3e37, 0x482c, 0x706a,
- 0x5177, 0x564c, 0x3a5b, 0x7069, 0x363b, 0x4d34, 0x4626, 0x4121,
- 0x706b, 0x706e, 0x706d, 0x7070, 0x706c, 0x3b3e, 0x706f, 0x4c35,
- 0x7072, 0x3355, 0x3154, 0x7073, 0x7074, 0x7076, 0x3461, 0x7071,
- 0x7077, 0x707a, 0x7078, 0x7075, 0x707d, 0x7079, 0x707c, 0x707e,
- 0x7121, 0x4e41, 0x7124, 0x7123, 0x4176, 0x707b, 0x4a5d, 0x3471,
- 0x3171, 0x4c31, 0x7126, 0x7127, 0x712c, 0x554e, 0x7129, 0x4833,
- 0x7122, 0x712b, 0x7128, 0x7125, 0x712a, 0x3029, 0x712d, 0x712f,
- 0x7131, 0x7130, 0x712e, 0x5122, 0x7132, 0x7133, 0x396f, 0x3547,
- 0x3057, 0x3059, 0x546d, 0x3544, 0x3d54, 0x3b4a, 0x7027, 0x385e,
- 0x7028, 0x3028, 0x7029, 0x4d6e, 0x702a, 0x702b, 0x4624, 0x5665,
- 0x7164, 0x7165, 0x4373, 0x535b, 0x5651, 0x4568, 0x532f, 0x5266,
- 0x6e41, 0x303b, 0x5535, 0x514e, 0x3c60, 0x3a50, 0x3f78, 0x3847,
- 0x3541, 0x454c, 0x4a22, 0x434b, 0x6e42, 0x443f, 0x3622, 0x6d6c,
- 0x4324, 0x5631, 0x4f60, 0x6d6f, 0x454e, 0x365c, 0x4a21, 0x6d6d,
- 0x6d70, 0x6d71, 0x433c, 0x3f34, 0x6d6e, 0x6d74, 0x6d72, 0x5566,
- 0x435f, 0x6d73, 0x6d76, 0x5523, 0x5123, 0x6d75, 0x4350, 0x6d77,
- 0x3f74, 0x3e6c, 0x6d78, 0x4c77, 0x515b, 0x5745, 0x5576, 0x6d7c,
- 0x6d7b, 0x6d79, 0x6d7a, 0x6d7d, 0x3e26, 0x4b2f, 0x6e21, 0x363d,
- 0x6e22, 0x4440, 0x6d7e, 0x3d5e, 0x3247, 0x3643, 0x6e25, 0x583a,
- 0x6e23, 0x6e26, 0x4369, 0x3372, 0x6e27, 0x6e24, 0x4f39, 0x6e28,
- 0x4277, 0x6e29, 0x6e2a, 0x5e2b, 0x4633, 0x4746, 0x5675, 0x3549,
- 0x4b32, 0x6e2b, 0x4d2b, 0x6e2c, 0x5530, 0x6e2d, 0x7644, 0x5b47,
- 0x3423, 0x432c, 0x7166, 0x4a38, 0x5253, 0x562a, 0x6f72, 0x3e58,
- 0x3d43, 0x6f73, 0x364c, 0x302b, 0x4a2f, 0x6d36, 0x6d37, 0x4e79,
- 0x372f, 0x3f73, 0x6d38, 0x426b, 0x4930, 0x6d39, 0x4676, 0x3f33,
- 0x6d3c, 0x4578, 0x5150, 0x5729, 0x6d3a, 0x6d3b, 0x5162, 0x6d3f,
- 0x6d40, 0x6d44, 0x6d48, 0x6d46, 0x6d4e, 0x5568, 0x6d49, 0x6d47,
- 0x6d3e, 0x4569, 0x4646, 0x4969, 0x5452, 0x6d41, 0x6d42, 0x6d43,
- 0x6d45, 0x4079, 0x3421, 0x3968, 0x6d50, 0x6d51, 0x6d4a, 0x6d4f,
- 0x4e78, 0x4b36, 0x6d4c, 0x6d4d, 0x4f75, 0x6d52, 0x4172, 0x5332,
- 0x6d4b, 0x4837, 0x3c6f, 0x4570, 0x6d56, 0x356f, 0x4235, 0x302d,
- 0x4b69, 0x312e, 0x6d54, 0x4d6b, 0x3562, 0x6d55, 0x6d53, 0x6d57,
- 0x357a, 0x6d58, 0x6d59, 0x6d5c, 0x314c, 0x4576, 0x3c6e, 0x6d5a,
- 0x4c3c, 0x326a, 0x6d5b, 0x446b, 0x3445, 0x3075, 0x6d5f, 0x405a,
- 0x3468, 0x454d, 0x6d5d, 0x3f44, 0x6d5e, 0x4425, 0x6d60, 0x6d61,
- 0x6d63, 0x4157, 0x3b47, 0x3d38, 0x6d62, 0x6d64, 0x6d66, 0x6d65,
- 0x6d67, 0x4a3e, 0x6c6a, 0x4071, 0x4967, 0x6c6b, 0x466e, 0x6c6c,
- 0x466d, 0x6c6d, 0x6c70, 0x5766, 0x6c73, 0x6c71, 0x6c6e, 0x6c6f,
- 0x5723, 0x4971, 0x4b6e, 0x6c74, 0x6c72, 0x4f69, 0x6c76, 0x4631,
- 0x3c40, 0x6c75, 0x353b, 0x3b76, 0x6c77, 0x5977, 0x3d7b, 0x423b,
- 0x6c78, 0x6c79, 0x3823, 0x6c7a, 0x6c7b, 0x6c7c, 0x536d, 0x582e,
- 0x406b, 0x475d, 0x3a4c, 0x5063, 0x4b3d, 0x4d3a, 0x3851, 0x317c,
- 0x476f, 0x5656, 0x3f46, 0x436b, 0x6f75, 0x4358, 0x5762, 0x6f77,
- 0x3353, 0x4758, 0x516d, 0x5648, 0x6f78, 0x6f76, 0x3b7d, 0x3346,
- 0x3d55, 0x5246, 0x3b60, 0x4f21, 0x6f7c, 0x6f7b, 0x6f79, 0x334c,
- 0x4954, 0x4b30, 0x6f7e, 0x305e, 0x5649, 0x6f7d, 0x336d, 0x7655,
- 0x4e48, 0x7022, 0x7021, 0x353e, 0x3c5a, 0x3b7c, 0x3865, 0x4442,
- 0x7023, 0x4b6b, 0x7026, 0x5128, 0x3e3f, 0x476e, 0x7136, 0x7137,
- 0x3f55, 0x3429, 0x7138, 0x4d3b, 0x4754, 0x552d, 0x7139, 0x713a,
- 0x474f, 0x5224, 0x564f, 0x713b, 0x3d51, 0x3430, 0x3e3d, 0x345c,
- 0x4e51, 0x3f5f, 0x713d, 0x3f7a, 0x713c, 0x713f, 0x713e, 0x7140,
- 0x7141, 0x417e, 0x4122, 0x4a7a, 0x553e, 0x3e3a, 0x3e39, 0x5542,
- 0x3f22, 0x4d2f, 0x7135, 0x3d5f, 0x364b, 0x5671, 0x7343, 0x7344,
- 0x384d, 0x7346, 0x7347, 0x304a, 0x7345, 0x7349, 0x4b71, 0x734b,
- 0x5026, 0x314a, 0x7348, 0x734f, 0x3551, 0x7357, 0x7352, 0x7354,
- 0x7353, 0x377b, 0x313f, 0x734e, 0x734a, 0x355a, 0x7350, 0x7351,
- 0x7355, 0x734d, 0x3c63, 0x417d, 0x7356, 0x735a, 0x734c, 0x3548,
- 0x3d6e, 0x735c, 0x3724, 0x3f70, 0x567e, 0x4d32, 0x3470, 0x325f,
- 0x7358, 0x7359, 0x4938, 0x735d, 0x735e, 0x7361, 0x735f, 0x7363,
- 0x7362, 0x735b, 0x3f6a, 0x336f, 0x7360, 0x4729, 0x3c72, 0x736b,
- 0x393f, 0x7364, 0x322d, 0x3b7e, 0x4b63, 0x736d, 0x7369, 0x395c,
- 0x736e, 0x7365, 0x7366, 0x736a, 0x4261, 0x736c, 0x736f, 0x7368,
- 0x3c7d, 0x4f64, 0x7370, 0x7367, 0x7372, 0x572d, 0x462a, 0x7373,
- 0x7371, 0x4228, 0x385d, 0x7375, 0x7374, 0x345b, 0x7376, 0x7377,
- 0x7378, 0x403a, 0x4069, 0x4571, 0x737b, 0x737a, 0x3458, 0x737e,
- 0x7379, 0x737c, 0x737d, 0x7421, 0x7423, 0x3b49, 0x7422, 0x7424,
- 0x323e, 0x7426, 0x7425, 0x3c2e, 0x4357, 0x5961, 0x4060, 0x744c,
- 0x5751, 0x375b, 0x744e, 0x4123, 0x4649, 0x3456, 0x5533, 0x7450,
- 0x744f, 0x7451, 0x4b5a, 0x7452, 0x5441, 0x5660, 0x3760, 0x4138,
- 0x413b, 0x7453, 0x3e2c, 0x3462, 0x7454, 0x7455, 0x3e2b, 0x7456,
- 0x745b, 0x7457, 0x745a, 0x3a7d, 0x7458, 0x7459, 0x3862, 0x4c47,
- 0x745c, 0x325a, 0x4353, 0x5463, 0x3f37, 0x745d, 0x4534, 0x7469,
- 0x4f35, 0x4e49, 0x4b58, 0x4b77, 0x3d74, 0x574f, 0x405b, 0x5075,
- 0x746a, 0x746b, 0x746c, 0x7763, 0x3731, 0x746d, 0x576b, 0x746e,
- 0x6679, 0x3e40, 0x667a, 0x3a6c, 0x667b, 0x4f4b, 0x667c, 0x543c,
- 0x3c36, 0x667d, 0x667e, 0x3c4d, 0x4852, 0x4e33, 0x6721, 0x343f,
- 0x6722, 0x4934, 0x3859, 0x4449, 0x575d, 0x425a, 0x3757, 0x563d,
- 0x4e46, 0x3744, 0x4526, 0x6723, 0x4f5f, 0x6724, 0x6725, 0x6726,
- 0x4137, 0x5769, 0x4970, 0x4f38, 0x562f, 0x5655, 0x6727, 0x306d,
- 0x6728, 0x6729, 0x495c, 0x526f, 0x3e2d, 0x672a, 0x3073, 0x485e,
- 0x3d61, 0x672b, 0x4846, 0x672c, 0x3b66, 0x3878, 0x5124, 0x672d,
- 0x4267, 0x3e78, 0x3d4a, 0x4d33, 0x672e, 0x672f, 0x3e6e, 0x5065,
- 0x4b67, 0x4c50, 0x3c4c, 0x6730, 0x3c28, 0x5077, 0x6731, 0x5078,
- 0x6732, 0x6733, 0x3442, 0x6734, 0x6735, 0x497e, 0x4e2c, 0x4360,
- 0x6737, 0x3141, 0x3371, 0x6738, 0x6739, 0x575b, 0x5540, 0x673a,
- 0x424c, 0x573a, 0x673b, 0x673c, 0x673d, 0x3c6a, 0x4365, 0x4042,
- 0x673e, 0x673f, 0x3c29, 0x6740, 0x6741, 0x6736, 0x3650, 0x6742,
- 0x6743, 0x6744, 0x3b3a, 0x355e, 0x4246, 0x3160, 0x6745, 0x5435,
- 0x6746, 0x383f, 0x6748, 0x6747, 0x376c, 0x6749, 0x3278, 0x674a,
- 0x674b, 0x674c, 0x674d, 0x674e, 0x674f, 0x6750, 0x5327, 0x4b75,
- 0x6751, 0x6752, 0x6753, 0x6754, 0x4949, 0x6755, 0x6756, 0x6757,
- 0x6758, 0x6759, 0x3d49, 0x675a, 0x733e, 0x3857, 0x4831, 0x733f,
- 0x7340, 0x7341, 0x395e, 0x4d78, 0x5868, 0x3a31, 0x425e, 0x6e37,
- 0x3723, 0x6e39, 0x6e38, 0x3055, 0x6e3b, 0x5556, 0x576f, 0x5643,
- 0x6e3d, 0x4a70, 0x6e3c, 0x6e3e, 0x6e40, 0x6e3f, 0x5172, 0x473c,
- 0x4340, 0x3861, 0x4167, 0x7446, 0x505f, 0x7447, 0x4f5b, 0x483a,
- 0x7448, 0x7449, 0x744a, 0x744b, 0x597a, 0x387e, 0x6571, 0x5370,
- 0x7460, 0x4e4c, 0x3361, 0x7134, 0x526e, 0x7461, 0x4f68, 0x7462,
- 0x474c, 0x3554, 0x3464, 0x7464, 0x7463, 0x7465, 0x7466, 0x7467,
- 0x3a32, 0x303f, 0x7468, 0x372d, 0x526d, 0x522b, 0x404f, 0x3f3c,
- 0x6b23, 0x555f, 0x6a48, 0x7173, 0x3678, 0x4b23, 0x444d, 0x7167,
- 0x7168, 0x387b, 0x7169, 0x3a44, 0x5445, 0x3052, 0x716a, 0x716b,
- 0x716c, 0x716d, 0x716e, 0x716f, 0x7171, 0x7170, 0x4555, 0x7172,
- 0x367a, 0x7174, 0x522e, 0x5e47, 0x4b4a, 0x335c, 0x3522, 0x3922,
- 0x4474, 0x7175, 0x7176, 0x4144, 0x417b, 0x5630, 0x7177, 0x7178,
- 0x412a, 0x4638, 0x3e5b, 0x7179, 0x344f, 0x717a, 0x6d32, 0x6d31,
- 0x4b60, 0x525e, 0x4b41, 0x5558, 0x4862, 0x405f, 0x3c21, 0x6b41,
- 0x5024, 0x5662, 0x3647, 0x3858, 0x6b40, 0x384e, 0x6b3f, 0x3326,
- 0x3949, 0x562b, 0x3774, 0x374a, 0x3c67, 0x373e, 0x6b46, 0x6b47,
- 0x3039, 0x3f4f, 0x6b45, 0x537d, 0x6b48, 0x6b49, 0x374e, 0x6b42,
- 0x6b44, 0x4976, 0x5657, 0x554d, 0x5032, 0x6b4f, 0x4e38, 0x6b50,
- 0x3528, 0x3133, 0x6b52, 0x4c25, 0x4556, 0x6b53, 0x6b51, 0x455f,
- 0x6b4e, 0x4a24, 0x6b55, 0x307b, 0x3a7a, 0x5837, 0x7163, 0x6b4a,
- 0x6b4b, 0x6b4c, 0x6b4d, 0x6b56, 0x6640, 0x6b59, 0x3f68, 0x5248,
- 0x6b57, 0x6b5c, 0x386c, 0x6b58, 0x3d3a, 0x5058, 0x3037, 0x6b5d,
- 0x445c, 0x562c, 0x3460, 0x4276, 0x3c39, 0x6b5a, 0x6b5b, 0x5460,
- 0x466a, 0x4454, 0x6b5f, 0x4527, 0x5975, 0x3231, 0x6b64, 0x3d45,
- 0x6b62, 0x6b63, 0x382c, 0x4d51, 0x6b65, 0x6b61, 0x4133, 0x4622,
- 0x4c73, 0x6b66, 0x4030, 0x5238, 0x6b67, 0x382f, 0x382d, 0x6b68,
- 0x473b, 0x4d73, 0x6b6a, 0x6b6b, 0x6b6d, 0x5048, 0x6b72, 0x6b6e,
- 0x6b71, 0x4879, 0x517c, 0x6b6c, 0x6b69, 0x3839, 0x4f59, 0x4465,
- 0x6b6f, 0x6b70, 0x4c5a, 0x4d48, 0x3072, 0x6b76, 0x6b75, 0x3232,
- 0x3860, 0x6b77, 0x316c, 0x4c45, 0x4424, 0x4f25, 0x6b79, 0x6c22,
- 0x4572, 0x6b7a, 0x4945, 0x625f, 0x6b7e, 0x4d4e, 0x6c21, 0x315b,
- 0x5337, 0x525c, 0x6b7d, 0x6b7b, 0x333c, 0x6a30, 0x5754, 0x742b,
- 0x3374, 0x5641, 0x5642, 0x5569, 0x3e4a, 0x7427, 0x5228, 0x7428,
- 0x7429, 0x742a, 0x3e4b, 0x535f, 0x4960, 0x4961, 0x7342, 0x4a66,
- 0x4c72, 0x6236, 0x4b34, 0x4e68, 0x565b, 0x742d, 0x742e, 0x742f,
- 0x7432, 0x3a3d, 0x7433, 0x3063, 0x7430, 0x7431, 0x3d22, 0x3255,
- 0x7436, 0x7437, 0x3666, 0x3230, 0x4f4f, 0x7434, 0x342c, 0x7435,
- 0x7438, 0x7439, 0x4d27, 0x743a, 0x743b, 0x743c, 0x4b52, 0x743d,
- 0x743e, 0x743f, 0x745e, 0x413c, 0x3c68, 0x492b, 0x515e, 0x6575,
- 0x5c33, 0x5255, 0x5c34, 0x302c, 0x5c35, 0x3d5a, 0x5c39, 0x5842,
- 0x5c37, 0x5373, 0x4956, 0x5c3a, 0x5c36, 0x5c3b, 0x4322, 0x5c3c,
- 0x5c45, 0x5c3d, 0x4e5f, 0x5625, 0x5c4f, 0x5c4d, 0x5c52, 0x3d66,
- 0x422b, 0x5c38, 0x5c4b, 0x5c4e, 0x5c3e, 0x3752, 0x3045, 0x5c47,
- 0x503e, 0x5c41, 0x3b28, 0x373c, 0x5c4c, 0x5c46, 0x5c3f, 0x475b,
- 0x513f, 0x5c40, 0x5c4a, 0x5c50, 0x4e2d, 0x5c42, 0x5c43, 0x5c48,
- 0x5c49, 0x3254, 0x5c51, 0x4b55, 0x5437, 0x5c5b, 0x5c5f, 0x4c26,
- 0x5c66, 0x4367, 0x5c5c, 0x3f41, 0x5c59, 0x307a, 0x3936, 0x5c65,
- 0x5c53, 0x5c44, 0x5c56, 0x4874, 0x3f60, 0x493b, 0x313d, 0x5322,
- 0x5c5a, 0x5c55, 0x463b, 0x5c5e, 0x5742, 0x432f, 0x3736, 0x4751,
- 0x4329, 0x5c62, 0x5c58, 0x5c6b, 0x5c54, 0x5c5d, 0x3e25, 0x5c57,
- 0x5c60, 0x5c63, 0x5c64, 0x5c78, 0x5c61, 0x5d22, 0x5c67, 0x3c6b,
- 0x3444, 0x4323, 0x3267, 0x5c7a, 0x5c72, 0x5c6f, 0x5c7c, 0x5c6e,
- 0x5270, 0x3268, 0x4857, 0x4863, 0x5c7b, 0x5c6d, 0x5c77, 0x5c75,
- 0x3e23, 0x5c74, 0x325d, 0x5c73, 0x3c76, 0x5c68, 0x3b44, 0x4073,
- 0x3c54, 0x5c69, 0x5c6a, 0x5c71, 0x5c76, 0x5c79, 0x3534, 0x4859,
- 0x3b67, 0x5c7e, 0x5c7d, 0x532b, 0x5d21, 0x5d23, 0x5d25, 0x5271,
- 0x5d24, 0x5d26, 0x5d27, 0x5229, 0x3a49, 0x5d29, 0x5d36, 0x5d31,
- 0x5d34, 0x5d30, 0x464e, 0x4072, 0x492f, 0x5c6c, 0x5d2e, 0x5d37,
- 0x5c70, 0x5d2f, 0x5d38, 0x5d2c, 0x5d39, 0x5d33, 0x5d2d, 0x442a,
- 0x5d28, 0x4033, 0x412b, 0x5d2a, 0x5d2b, 0x5d32, 0x3b71, 0x5d35,
- 0x5328, 0x5d3a, 0x5d3b, 0x4327, 0x5d52, 0x5d3c, 0x5d51, 0x393d,
- 0x3e55, 0x3e7a, 0x3a4a, 0x5d4a, 0x5d45, 0x5d3f, 0x324b, 0x5d43,
- 0x5d4b, 0x3224, 0x5d55, 0x5d3e, 0x4650, 0x5d50, 0x5d54, 0x4162,
- 0x3746, 0x5d4e, 0x5d4f, 0x5d44, 0x5d3d, 0x5d4d, 0x4c51, 0x5d49,
- 0x5d42, 0x4348, 0x463c, 0x4e2e, 0x5d4c, 0x5d48, 0x5d41, 0x5d46,
- 0x425c, 0x5329, 0x532a, 0x5d53, 0x4f74, 0x4878, 0x5d66, 0x5d47,
- 0x5d60, 0x4264, 0x5d61, 0x5d57, 0x5678, 0x5d59, 0x5d58, 0x3870,
- 0x5d56, 0x464f, 0x362d, 0x5d62, 0x3a79, 0x5461, 0x5d67, 0x3450,
- 0x5d5a, 0x3f7b, 0x5d63, 0x5d5f, 0x5d5d, 0x3559, 0x5d5b, 0x5d5c,
- 0x5d5e, 0x3d2f, 0x5d64, 0x5d65, 0x5d75, 0x4349, 0x4b62, 0x5d72,
- 0x5861, 0x4651, 0x5d74, 0x5574, 0x5d73, 0x5d70, 0x5d6c, 0x5d6f,
- 0x5d68, 0x506e, 0x4858, 0x5d6e, 0x5d69, 0x5d6a, 0x4b72, 0x5d6d,
- 0x314d, 0x4036, 0x3c3b, 0x5d71, 0x5d77, 0x5d76, 0x5d6b, 0x456e,
- 0x5d7b, 0x5e24, 0x5e23, 0x5d78, 0x436f, 0x427b, 0x5561, 0x4e35,
- 0x5d7d, 0x324c, 0x4468, 0x4a5f, 0x473e, 0x5d7a, 0x5d7c, 0x5d7e,
- 0x5e22, 0x302a, 0x314e, 0x5e2c, 0x5e26, 0x3d36, 0x486f, 0x5e21,
- 0x5e25, 0x5e29, 0x5e28, 0x5e27, 0x5e2d, 0x544c, 0x5e33, 0x5e2a,
- 0x5e2e, 0x4059, 0x3121, 0x5e36, 0x5e31, 0x5e32, 0x5126, 0x5e35,
- 0x5e2f, 0x5e30, 0x503d, 0x5e34, 0x4a6d, 0x5e39, 0x5e38, 0x5e37,
- 0x5e3b, 0x3d65, 0x3258, 0x436a, 0x5e3a, 0x453a, 0x5e3c, 0x4c59,
- 0x372a, 0x5465, 0x5e3d, 0x5e3f, 0x4422, 0x5e41, 0x5e3e, 0x5e40,
- 0x553a, 0x5e42, 0x722e, 0x3b22, 0x4232, 0x4530, 0x4247, 0x722f,
- 0x5069, 0x535d, 0x6b3d, 0x3366, 0x7230, 0x7231, 0x4a2d, 0x3a67,
- 0x7233, 0x7235, 0x7234, 0x4b64, 0x4f3a, 0x7232, 0x4a34, 0x524f,
- 0x426c, 0x4e43, 0x7238, 0x3076, 0x7237, 0x723e, 0x324f, 0x5141,
- 0x723a, 0x723c, 0x5469, 0x723b, 0x7236, 0x723f, 0x723d, 0x7239,
- 0x7247, 0x7244, 0x7246, 0x724a, 0x7242, 0x7240, 0x7245, 0x567b,
- 0x7241, 0x4779, 0x495f, 0x7248, 0x3946, 0x3530, 0x7243, 0x7249,
- 0x7250, 0x7256, 0x3b57, 0x7255, 0x4d5c, 0x566b, 0x7252, 0x7254,
- 0x3872, 0x724b, 0x724e, 0x4279, 0x555d, 0x724c, 0x724d, 0x724f,
- 0x7253, 0x7259, 0x533c, 0x366a, 0x4a71, 0x3764, 0x7257, 0x7258,
- 0x725a, 0x725d, 0x725b, 0x725c, 0x5151, 0x7251, 0x4d49, 0x4e4f,
- 0x5629, 0x7263, 0x435b, 0x7260, 0x402f, 0x726c, 0x725e, 0x7261,
- 0x7268, 0x7262, 0x7267, 0x7266, 0x7269, 0x725f, 0x7264, 0x726a,
- 0x532c, 0x7265, 0x3275, 0x7272, 0x502b, 0x7275, 0x3b48, 0x7279,
- 0x7270, 0x7276, 0x7278, 0x727a, 0x7273, 0x7271, 0x3a7b, 0x357b,
- 0x726f, 0x7277, 0x726d, 0x726e, 0x726b, 0x7326, 0x7323, 0x7322,
- 0x7274, 0x485a, 0x727b, 0x7325, 0x4378, 0x727d, 0x7327, 0x7329,
- 0x7324, 0x727c, 0x732b, 0x732a, 0x425d, 0x732e, 0x7330, 0x7321,
- 0x7331, 0x732c, 0x732f, 0x727e, 0x732d, 0x7332, 0x7334, 0x7328,
- 0x7333, 0x7335, 0x5037, 0x7338, 0x5979, 0x7339, 0x7337, 0x4864,
- 0x7336, 0x733a, 0x733b, 0x3440, 0x6e43, 0x733c, 0x733d, 0x512a,
- 0x742c, 0x5046, 0x5050, 0x515c, 0x4f4e, 0x3d56, 0x5143, 0x3a62,
- 0x6169, 0x5242, 0x7142, 0x3239, 0x316d, 0x7143, 0x4940, 0x3344,
- 0x5972, 0x4b25, 0x7144, 0x5654, 0x7145, 0x7440, 0x7146, 0x542c,
- 0x7147, 0x3040, 0x7441, 0x7442, 0x347c, 0x455b, 0x4c3b, 0x5064,
- 0x4d60, 0x7148, 0x5973, 0x313b, 0x4f2e, 0x3824, 0x714a, 0x714b,
- 0x3243, 0x4151, 0x5730, 0x7149, 0x714c, 0x714e, 0x5976, 0x5261,
- 0x5423, 0x7443, 0x4839, 0x7444, 0x714d, 0x714f, 0x3f63, 0x7150,
- 0x7154, 0x7156, 0x7151, 0x4951, 0x4561, 0x4263, 0x397c, 0x7153,
- 0x7155, 0x3953, 0x715b, 0x3a56, 0x307d, 0x7159, 0x7158, 0x7152,
- 0x715a, 0x7157, 0x486c, 0x4d4a, 0x715d, 0x653d, 0x715c, 0x715e,
- 0x715f, 0x4f65, 0x7445, 0x3d73, 0x7160, 0x7161, 0x4e77, 0x522a,
- 0x717b, 0x3832, 0x3c7b, 0x395b, 0x3966, 0x4359, 0x4a53, 0x6a68,
- 0x4040, 0x3e75, 0x6a69, 0x6a6a, 0x6a6b, 0x6a6c, 0x6a6d, 0x6a6e,
- 0x6a6f, 0x3d47, 0x757b, 0x757d, 0x757e, 0x757c, 0x3d62, 0x7621,
- 0x3425, 0x7622, 0x7623, 0x6c32, 0x5154, 0x596a, 0x7624, 0x6e3a,
- 0x5532, 0x537e, 0x4c5c, 0x4a44, 0x6540, 0x7625, 0x3e2f, 0x4629,
- 0x5a25, 0x3c46, 0x3629, 0x383c, 0x484f, 0x3c25, 0x5a26, 0x5a27,
- 0x4c56, 0x4843, 0x5a28, 0x467d, 0x5135, 0x5269, 0x5136, 0x3c47,
- 0x3d32, 0x3b64, 0x5a29, 0x5a2a, 0x5148, 0x5a2b, 0x506d, 0x366f,
- 0x425b, 0x4b4f, 0x376d, 0x4968, 0x3743, 0x3e77, 0x5624, 0x5a2c,
- 0x5a2d, 0x4640, 0x5767, 0x4a36, 0x5529, 0x4b5f, 0x556f, 0x5a2e,
- 0x565f, 0x344a, 0x5a30, 0x5a2f, 0x526b, 0x5a31, 0x5a32, 0x5a33,
- 0x4a54, 0x5a34, 0x4a2b, 0x5a35, 0x5a36, 0x334f, 0x566f, 0x5a37,
- 0x3b30, 0x352e, 0x5a38, 0x5a39, 0x396e, 0x512f, 0x5268, 0x5a3a,
- 0x3843, 0x4f6a, 0x326f, 0x5a3b, 0x5a3c, 0x3d6b, 0x4e5c, 0x536f,
- 0x5a3d, 0x4e73, 0x5a3e, 0x5355, 0x3b65, 0x5a3f, 0x4b35, 0x4b50,
- 0x5a40, 0x476b, 0x566e, 0x5a41, 0x4535, 0x3641, 0x5a42, 0x374c,
- 0x3f4e, 0x5a43, 0x5a44, 0x4b2d, 0x5a45, 0x3577, 0x5a46, 0x4142,
- 0x573b, 0x5a47, 0x4c38, 0x526a, 0x4431, 0x5a48, 0x357d, 0x3b51,
- 0x5a49, 0x5033, 0x5a4a, 0x5a4b, 0x4e3d, 0x5a4c, 0x5a4d, 0x5a4e,
- 0x3277, 0x5a51, 0x5a4f, 0x5168, 0x5a50, 0x4355, 0x5a52, 0x5a53,
- 0x5a54, 0x5a55, 0x503b, 0x5225, 0x3079, 0x5a56, 0x472b, 0x5a57,
- 0x3d77, 0x4321, 0x5a58, 0x5a59, 0x437d, 0x4c37, 0x5a5a, 0x5a5b,
- 0x403e, 0x4657, 0x5a5c, 0x5a5d, 0x4734, 0x5a5e, 0x5a5f, 0x3948,
- 0x3b6d, 0x3639, 0x7478, 0x7479, 0x4d63, 0x7539, 0x6b60, 0x4f73,
- 0x3b3f, 0x3a40, 0x5425, 0x6159, 0x7574, 0x312a, 0x3272, 0x7575,
- 0x7577, 0x3a51, 0x7576, 0x4332, 0x7579, 0x7578, 0x3134, 0x556a,
- 0x383a, 0x3931, 0x3246, 0x5470, 0x4f4d, 0x305c, 0x554b, 0x3b75,
- 0x564a, 0x3737, 0x4c30, 0x4636, 0x3161, 0x393a, 0x567c, 0x3961,
- 0x3721, 0x3c7a, 0x6a5a, 0x6a5b, 0x4c79, 0x3973, 0x6a5c, 0x347b,
- 0x4333, 0x3751, 0x3a58, 0x6a5d, 0x5474, 0x6a5e, 0x3c56, 0x3b5f,
- 0x6a5f, 0x415e, 0x4238, 0x545f, 0x574a, 0x6a60, 0x6a61, 0x6a64,
- 0x6a62, 0x6a63, 0x495e, 0x3833, 0x3644, 0x6a65, 0x4a6a, 0x494d,
- 0x344d, 0x6259, 0x4562, 0x6a66, 0x4035, 0x5738, 0x6a67, 0x572c,
- 0x487c, 0x5853, 0x584d, 0x545e, 0x5479, 0x4944, 0x532e, 0x3853,
- 0x3360, 0x4962, 0x7476, 0x3a55, 0x7477, 0x575f, 0x7471, 0x3830,
- 0x5554, 0x384f, 0x4670, 0x3343, 0x7472, 0x332c, 0x543d, 0x4777,
- 0x7474, 0x7473, 0x4c4b, 0x4824, 0x7475, 0x5763, 0x453f, 0x7540,
- 0x753b, 0x7543, 0x7542, 0x563a, 0x7541, 0x543e, 0x7544, 0x754c,
- 0x304f, 0x3578, 0x7549, 0x754a, 0x455c, 0x7545, 0x7546, 0x7547,
- 0x754b, 0x3e60, 0x7548, 0x387a, 0x7550, 0x7553, 0x3f67, 0x3972,
- 0x753c, 0x754d, 0x4237, 0x4c78, 0x3c79, 0x754e, 0x754f, 0x7551,
- 0x3665, 0x7552, 0x7555, 0x753d, 0x7554, 0x533b, 0x336c, 0x4c24,
- 0x7556, 0x7557, 0x3e61, 0x7558, 0x4c5f, 0x755b, 0x3248, 0x5759,
- 0x7559, 0x755a, 0x755c, 0x7562, 0x7560, 0x755f, 0x755d, 0x7561,
- 0x755e, 0x7564, 0x7565, 0x4c63, 0x653f, 0x3538, 0x7563, 0x7568,
- 0x4c23, 0x7566, 0x7567, 0x753e, 0x3144, 0x753f, 0x3545, 0x3264,
- 0x756c, 0x7569, 0x3657, 0x756d, 0x756a, 0x756b, 0x345a, 0x546a,
- 0x756e, 0x3379, 0x756f, 0x7571, 0x7570, 0x7572, 0x7573, 0x496d,
- 0x392a, 0x477b, 0x3663, 0x4c49, 0x6a26, 0x3335, 0x547e, 0x396c,
- 0x5079, 0x696d, 0x572a, 0x696e, 0x4256, 0x486d, 0x3a64, 0x696f,
- 0x6970, 0x6971, 0x5661, 0x6972, 0x6973, 0x6975, 0x6974, 0x6976,
- 0x6977, 0x4761, 0x6978, 0x5458, 0x6979, 0x3d4e, 0x697a, 0x697b,
- 0x3d4f, 0x697c, 0x3828, 0x413e, 0x697d, 0x3132, 0x3b54, 0x3975,
- 0x697e, 0x6a21, 0x6a22, 0x6a23, 0x3778, 0x3c2d, 0x4a64, 0x604e,
- 0x542f, 0x4f3d, 0x5537, 0x6a24, 0x555e, 0x6a25, 0x5041, 0x393c,
- 0x3447, 0x3159, 0x4031, 0x3166, 0x3167, 0x3168, 0x333d, 0x4868,
- 0x6541, 0x315f, 0x4149, 0x346f, 0x4728, 0x5358, 0x4679, 0x5138,
- 0x397d, 0x4275, 0x532d, 0x544b, 0x3d7c, 0x6542, 0x3735, 0x6543,
- 0x3b39, 0x5562, 0x3d78, 0x5436, 0x4e25, 0x412c, 0x3359, 0x4c76,
- 0x6546, 0x6544, 0x6548, 0x654a, 0x6547, 0x354f, 0x4648, 0x357c,
- 0x6545, 0x4a76, 0x6549, 0x4354, 0x3145, 0x3c23, 0x5737, 0x4d4b,
- 0x4b4d, 0x4a4a, 0x4c53, 0x654c, 0x654b, 0x4466, 0x5121, 0x5137,
- 0x654d, 0x6550, 0x4d38, 0x5670, 0x654f, 0x355d, 0x4d3e, 0x6551,
- 0x363a, 0x4d28, 0x3964, 0x4a45, 0x3351, 0x4b59, 0x546c, 0x6552,
- 0x376a, 0x654e, 0x6555, 0x347e, 0x6556, 0x6553, 0x6554, 0x525d,
- 0x425f, 0x3146, 0x5362, 0x365d, 0x4b6c, 0x6557, 0x5376, 0x3169,
- 0x3674, 0x655a, 0x6558, 0x6559, 0x3540, 0x5245, 0x655c, 0x655e,
- 0x655d, 0x4732, 0x5223, 0x655b, 0x5462, 0x555a, 0x6560, 0x5771,
- 0x6561, 0x315c, 0x517b, 0x6562, 0x6564, 0x6563, 0x6565, 0x5258,
- 0x354b, 0x675f, 0x5a75, 0x5a78, 0x5a76, 0x5a77, 0x5a7a, 0x504f,
- 0x4447, 0x306e, 0x5030, 0x5a79, 0x534a, 0x3a2a, 0x5b22, 0x4771,
- 0x5a7c, 0x5a7b, 0x495b, 0x5a7d, 0x5b21, 0x575e, 0x5a7e, 0x415a,
- 0x5b25, 0x5374, 0x5b27, 0x5b24, 0x5b28, 0x3d3c, 0x4049, 0x5b23,
- 0x5b26, 0x5623, 0x5b29, 0x5b2d, 0x5b2e, 0x5b2c, 0x3a42, 0x3f24,
- 0x5b2b, 0x5b2a, 0x5447, 0x323f, 0x5b2f, 0x3979, 0x5b30, 0x333b,
- 0x3526, 0x363c, 0x5b31, 0x3675, 0x5b32, 0x3149, 0x5b34, 0x5b33,
- 0x5b35, 0x5b37, 0x5b36, 0x5b38, 0x5b39, 0x5b3a, 0x534f, 0x747a,
- 0x4775, 0x5743, 0x4564, 0x747c, 0x747d, 0x747b, 0x3e46, 0x506f,
- 0x3753, 0x544d, 0x4c2a, 0x7522, 0x7521, 0x3a28, 0x747e, 0x4b56,
- 0x7524, 0x4052, 0x336a, 0x4d2a, 0x7525, 0x7523, 0x3d34, 0x7528,
- 0x7529, 0x3d4d, 0x4338, 0x3f61, 0x4b61, 0x752a, 0x7526, 0x7527,
- 0x4470, 0x752c, 0x343c, 0x576d, 0x3457, 0x752b, 0x752e, 0x752d,
- 0x752f, 0x5051, 0x4351, 0x4829, 0x7530, 0x7531, 0x7532, 0x7533,
- 0x7534, 0x7535, 0x7537, 0x7536, 0x7538, 0x3249, 0x5354, 0x4a4d,
- 0x406f, 0x5658, 0x5230, 0x413f, 0x3d70, 0x382a, 0x3c78, 0x7646,
- 0x7647, 0x7648, 0x7649, 0x764a, 0x764c, 0x764b, 0x7769, 0x764d,
- 0x764e, 0x6e44, 0x6e45, 0x6e46, 0x556b, 0x3624, 0x6e48, 0x6e47,
- 0x6e49, 0x6e4a, 0x4725, 0x6e4b, 0x6e4c, 0x3730, 0x3576, 0x6e4d,
- 0x6e4f, 0x6e4e, 0x3846, 0x6e50, 0x6e51, 0x6e52, 0x365b, 0x332e,
- 0x5653, 0x4446, 0x3135, 0x3856, 0x6e53, 0x6e54, 0x543f, 0x4755,
- 0x3e7b, 0x4e59, 0x3933, 0x6e56, 0x6e55, 0x6e58, 0x6e57, 0x4525,
- 0x6e59, 0x6e5a, 0x472e, 0x6e5b, 0x472f, 0x6e5c, 0x3227, 0x6e5d,
- 0x6e5e, 0x6e5f, 0x6e60, 0x6e61, 0x576a, 0x6e62, 0x6e63, 0x3c58,
- 0x6e64, 0x534b, 0x4c7a, 0x322c, 0x4165, 0x6e65, 0x4726, 0x432d,
- 0x6e66, 0x6e67, 0x6e68, 0x6e69, 0x6e6a, 0x6e6b, 0x6e6c, 0x6e6d,
- 0x6e6e, 0x6e6f, 0x6e70, 0x6e71, 0x6e72, 0x6e74, 0x6e73, 0x6e75,
- 0x4d2d, 0x4241, 0x6e76, 0x6e77, 0x6e78, 0x5521, 0x6e79, 0x4f33,
- 0x6e7a, 0x6e7b, 0x6e7c, 0x6e7d, 0x6f21, 0x6e7e, 0x6f22, 0x3875,
- 0x437a, 0x6f23, 0x6f24, 0x3d42, 0x523f, 0x3279, 0x6f25, 0x6f26,
- 0x6f27, 0x5278, 0x6f28, 0x567d, 0x6f29, 0x464c, 0x6f2a, 0x6f2b,
- 0x4134, 0x6f2c, 0x4f7a, 0x4b78, 0x6f2e, 0x6f2d, 0x337a, 0x3978,
- 0x6f2f, 0x6f30, 0x5062, 0x6f31, 0x6f32, 0x3766, 0x503f, 0x6f33,
- 0x6f34, 0x6f35, 0x4871, 0x4c60, 0x6f36, 0x6f37, 0x6f38, 0x6f39,
- 0x6f3a, 0x5560, 0x6f3b, 0x346d, 0x432a, 0x6f3c, 0x6f3d, 0x6f3e,
- 0x6f3f, 0x4e7d, 0x6f40, 0x4260, 0x3438, 0x5736, 0x3d75, 0x4f47,
- 0x6f43, 0x6f41, 0x6f42, 0x6f44, 0x3627, 0x3c7c, 0x3e62, 0x434c,
- 0x6f45, 0x6f46, 0x6f47, 0x6f4f, 0x6f48, 0x6f49, 0x6f4a, 0x4742,
- 0x6f71, 0x364d, 0x6f4b, 0x6f4c, 0x6f4d, 0x3646, 0x433e, 0x6f4e,
- 0x6f50, 0x6f51, 0x6f52, 0x5572, 0x6f53, 0x4477, 0x6f54, 0x4478,
- 0x6f55, 0x6f56, 0x3864, 0x3077, 0x6f57, 0x6f58, 0x6f59, 0x6f5a,
- 0x6f5b, 0x6f5c, 0x6f5d, 0x6f5e, 0x3e35, 0x6f61, 0x6f5f, 0x6f60,
- 0x6f62, 0x6f63, 0x414d, 0x6f64, 0x6f65, 0x6f66, 0x6f67, 0x6f68,
- 0x6f69, 0x6f6a, 0x6f6b, 0x6f6c, 0x4058, 0x6f6d, 0x412d, 0x6f6e,
- 0x6f6f, 0x6f70, 0x4f62, 0x3324, 0x4345, 0x6345, 0x4941, 0x6346,
- 0x3155, 0x4e4a, 0x3433, 0x4872, 0x6347, 0x4f50, 0x6348, 0x3c64,
- 0x6349, 0x634a, 0x4346, 0x5522, 0x4456, 0x396b, 0x4e45, 0x634b,
- 0x4376, 0x634c, 0x3727, 0x3873, 0x3a52, 0x634d, 0x634e, 0x5444,
- 0x634f, 0x6350, 0x514b, 0x6351, 0x6352, 0x6353, 0x6354, 0x5156,
- 0x6355, 0x327b, 0x403b, 0x6356, 0x402b, 0x6357, 0x6358, 0x6359,
- 0x635a, 0x635b, 0x3837, 0x5a62, 0x3653, 0x5a64, 0x5a63, 0x5a66,
- 0x486e, 0x5a65, 0x3740, 0x5174, 0x5275, 0x5573, 0x3d57, 0x5768,
- 0x5a68, 0x5a67, 0x3022, 0x4d53, 0x5a69, 0x383d, 0x3c4a, 0x423d,
- 0x4224, 0x3342, 0x5a6a, 0x422a, 0x4430, 0x3d35, 0x4f5e, 0x5a6b,
- 0x4942, 0x315d, 0x5a6c, 0x3638, 0x543a, 0x337d, 0x5a6d, 0x5449,
- 0x4f55, 0x4563, 0x5a6e, 0x5a6f, 0x5a70, 0x416a, 0x4c55, 0x4f5d,
- 0x5367, 0x4221, 0x5a71, 0x4b65, 0x5a72, 0x4b66, 0x527e, 0x3874,
- 0x5a73, 0x302f, 0x4f36, 0x554f, 0x4b6d, 0x5a74, 0x6344, 0x4125,
- 0x763f, 0x7640, 0x7641, 0x4451, 0x4838, 0x5163, 0x505b, 0x5145,
- 0x3c2f, 0x394d, 0x6f74, 0x3446, 0x533a, 0x7642, 0x337b, 0x7643,
- 0x3571, 0x7645, 0x536a, 0x7627, 0x5129, 0x7629, 0x7628, 0x4163,
- 0x4057, 0x3122, 0x4e6d, 0x5068, 0x762b, 0x4f76, 0x762a, 0x5570,
- 0x762c, 0x4339, 0x3b74, 0x762e, 0x762d, 0x445e, 0x4158, 0x4b2a,
- 0x4f3c, 0x762f, 0x7630, 0x7631, 0x4236, 0x3054, 0x4579, 0x7632,
- 0x4760, 0x7626, 0x3e38, 0x3e32, 0x3565, 0x3747, 0x3f3f, 0x4352,
- 0x4366, 0x584c, 0x386f, 0x3d79, 0x5125, 0x3050, 0x7730, 0x7731,
- 0x502c, 0x3030, 0x7732, 0x7733, 0x7734, 0x474a, 0x3e4f, 0x7737,
- 0x7736, 0x315e, 0x7735, 0x7738, 0x7739, 0x4e24, 0x484d, 0x3a2b,
- 0x6838, 0x6839, 0x683a, 0x3e42, 0x5274, 0x544f, 0x4958, 0x5233,
- 0x3625, 0x476a, 0x717c, 0x4f6e, 0x4b33, 0x506b, 0x676f, 0x4d67,
- 0x394b, 0x3659, 0x717d, 0x3064, 0x4b4c, 0x717e, 0x5424, 0x422d,
- 0x416c, 0x4644, 0x3e31, 0x7221, 0x3c55, 0x7222, 0x7223, 0x7224,
- 0x5243, 0x4635, 0x4d47, 0x7225, 0x5331, 0x3f45, 0x4c62, 0x7226,
- 0x7227, 0x5155, 0x366e, 0x7228, 0x7229, 0x355f, 0x722a, 0x722b,
- 0x327c, 0x722c, 0x722d, 0x4827, 0x3767, 0x6c29, 0x6c2a, 0x6c2b,
- 0x6c2c, 0x462e, 0x6c2d, 0x6c2e, 0x3749, 0x4a33, 0x6238, 0x774f,
- 0x7750, 0x324d, 0x7751, 0x7753, 0x7752, 0x623b, 0x3c22, 0x623c,
- 0x623d, 0x623e, 0x623f, 0x6240, 0x6241, 0x3739, 0x527b, 0x3d24,
- 0x4a4e, 0x3125, 0x4b47, 0x6242, 0x367c, 0x4844, 0x6243, 0x3d48,
- 0x317d, 0x6244, 0x3676, 0x6245, 0x4459, 0x6246, 0x4f5a, 0x395d,
- 0x6247, 0x4021, 0x6248, 0x3276, 0x6249, 0x4173, 0x624a, 0x624b,
- 0x4278, 0x624c, 0x624d, 0x624e, 0x4a57, 0x5838, 0x5965, 0x4f63,
- 0x7025, 0x5c30, 0x426d, 0x5426, 0x4d54, 0x5131, 0x335b, 0x477d,
- 0x3235, 0x423f, 0x6660, 0x4a3b, 0x6661, 0x6662, 0x3e54, 0x6663,
- 0x5724, 0x4d55, 0x6665, 0x3c5d, 0x6664, 0x6666, 0x6667, 0x426e,
- 0x3d3e, 0x6668, 0x4266, 0x3a27, 0x6669, 0x666a, 0x3352, 0x5169,
- 0x3f25, 0x666b, 0x466f, 0x666c, 0x666d, 0x666e, 0x462d, 0x666f,
- 0x4927, 0x6670, 0x6671, 0x6672, 0x6539, 0x6673, 0x6674, 0x4262,
- 0x6675, 0x6676, 0x5668, 0x6677, 0x6678, 0x3947, 0x773b, 0x773a,
- 0x773e, 0x773c, 0x3a21, 0x773f, 0x7740, 0x7742, 0x7741, 0x7744,
- 0x7743, 0x7745, 0x7746, 0x7747, 0x4b68, 0x385f, 0x7754, 0x7755,
- 0x7756, 0x7758, 0x775a, 0x7757, 0x775b, 0x7759, 0x5757, 0x775c,
- 0x775d, 0x775e, 0x775f, 0x7760, 0x5b4b, 0x582a, 0x6577, 0x396d,
- 0x3f7d, 0x3b6a, 0x7749, 0x4647, 0x7748, 0x774a, 0x774c, 0x774b,
- 0x774d, 0x4e3a, 0x774e, 0x4427, 0x5363, 0x764f, 0x4233, 0x7650,
- 0x7651, 0x7652, 0x7653, 0x7654, 0x7656, 0x312b, 0x7657, 0x7658,
- 0x7659, 0x765a, 0x765b, 0x765c, 0x765d, 0x765e, 0x4f4a, 0x765f,
- 0x7660, 0x7661, 0x7662, 0x7663, 0x7664, 0x4070, 0x7665, 0x7666,
- 0x7667, 0x7668, 0x7669, 0x766a, 0x766b, 0x766c, 0x766d, 0x766e,
- 0x766f, 0x7670, 0x7671, 0x7672, 0x7673, 0x7674, 0x3e28, 0x7675,
- 0x7676, 0x7677, 0x7678, 0x487a, 0x7679, 0x767a, 0x767b, 0x767c,
- 0x767d, 0x767e, 0x7721, 0x7722, 0x7723, 0x7724, 0x7725, 0x7726,
- 0x7727, 0x7728, 0x316e, 0x7729, 0x772a, 0x772b, 0x772c, 0x772d,
- 0x415b, 0x772e, 0x772f, 0x4471, 0x702f, 0x3c26, 0x7030, 0x4379,
- 0x4538, 0x513b, 0x7031, 0x7032, 0x7033, 0x7034, 0x7035, 0x513c,
- 0x516c, 0x7037, 0x7036, 0x5427, 0x4d52, 0x7038, 0x703a, 0x7039,
- 0x703b, 0x703c, 0x386b, 0x703d, 0x3a68, 0x703e, 0x703f, 0x3e69,
- 0x7040, 0x366c, 0x7041, 0x7042, 0x7043, 0x7044, 0x4835, 0x7045,
- 0x7046, 0x7047, 0x4574, 0x7048, 0x7049, 0x704a, 0x773d, 0x704b,
- 0x704c, 0x704d, 0x704e, 0x704f, 0x3a57, 0x7050, 0x7051, 0x7052,
- 0x7053, 0x7054, 0x7055, 0x7056, 0x7058, 0x5325, 0x7057, 0x7059,
- 0x753a, 0x4239, 0x7764, 0x7765, 0x7766, 0x7767, 0x7768, 0x4234,
- 0x776a, 0x776b, 0x4273, 0x7470, 0x746f, 0x4269, 0x7761, 0x7762,
- 0x3b46, 0x5964, 0x4a72, 0x4068, 0x7024, 0x3a5a, 0x472d, 0x442c,
- 0x776c, 0x776d, 0x776e, 0x7770, 0x776f, 0x7771, 0x7774, 0x7773,
- 0x7772, 0x7775, 0x7776, 0x6d69, 0x6d6a, 0x6d6b, 0x763c, 0x763d,
- 0x763e, 0x3626, 0x583e, 0x3944, 0x583b, 0x5c31, 0x4a73, 0x7777,
- 0x7778, 0x7779, 0x777b, 0x777a, 0x3147, 0x777c, 0x777d, 0x777e,
- 0x466b, 0x6c34, 0x335d, 0x7633, 0x7634, 0x4164, 0x7635, 0x7636,
- 0x7637, 0x7638, 0x7639, 0x763a, 0x4823, 0x763b, 0x417a, 0x3928,
- 0x6d68, 0x396a, 0x595f, 0x2321, 0x2322, 0x2323, 0x2167, 0x2325,
- 0x2326, 0x2327, 0x2328, 0x2329, 0x232a, 0x232b, 0x232c, 0x232d,
- 0x232e, 0x232f, 0x2330, 0x2331, 0x2332, 0x2333, 0x2334, 0x2335,
- 0x2336, 0x2337, 0x2338, 0x2339, 0x233a, 0x233b, 0x233c, 0x233d,
- 0x233e, 0x233f, 0x2340, 0x2341, 0x2342, 0x2343, 0x2344, 0x2345,
- 0x2346, 0x2347, 0x2348, 0x2349, 0x234a, 0x234b, 0x234c, 0x234d,
- 0x234e, 0x234f, 0x2350, 0x2351, 0x2352, 0x2353, 0x2354, 0x2355,
- 0x2356, 0x2357, 0x2358, 0x2359, 0x235a, 0x235b, 0x235c, 0x235d,
- 0x235e, 0x235f, 0x2360, 0x2361, 0x2362, 0x2363, 0x2364, 0x2365,
- 0x2366, 0x2367, 0x2368, 0x2369, 0x236a, 0x236b, 0x236c, 0x236d,
- 0x236e, 0x236f, 0x2370, 0x2371, 0x2372, 0x2373, 0x2374, 0x2375,
- 0x2376, 0x2377, 0x2378, 0x2379, 0x237a, 0x237b, 0x237c, 0x237d,
- 0x212b, 0x2169, 0x216a, 0x237e, 0x2324,
-};
-
-static const Summary16 gb2312_uni2indx_page00[70] = {
- /* 0x0000 */
- { 0, 0x0000 }, { 0, 0x0000 }, { 0, 0x0000 }, { 0, 0x0000 },
- { 0, 0x0000 }, { 0, 0x0000 }, { 0, 0x0000 }, { 0, 0x0000 },
- { 0, 0x0000 }, { 0, 0x0000 }, { 0, 0x0190 }, { 3, 0x0003 },
- { 5, 0x0000 }, { 5, 0x0080 }, { 6, 0x3703 }, { 13, 0x168c },
- /* 0x0100 */
- { 19, 0x0002 }, { 20, 0x0808 }, { 22, 0x0800 }, { 23, 0x0000 },
- { 23, 0x2000 }, { 24, 0x0000 }, { 24, 0x0800 }, { 25, 0x0000 },
- { 25, 0x0000 }, { 25, 0x0000 }, { 25, 0x0000 }, { 25, 0x0000 },
- { 25, 0x4000 }, { 26, 0x1555 }, { 33, 0x0000 }, { 33, 0x0000 },
- /* 0x0200 */
- { 33, 0x0000 }, { 33, 0x0000 }, { 33, 0x0000 }, { 33, 0x0000 },
- { 33, 0x0000 }, { 33, 0x0000 }, { 33, 0x0000 }, { 33, 0x0000 },
- { 33, 0x0000 }, { 33, 0x0000 }, { 33, 0x0000 }, { 33, 0x0000 },
- { 33, 0x0280 }, { 35, 0x0000 }, { 35, 0x0000 }, { 35, 0x0000 },
- /* 0x0300 */
- { 35, 0x0000 }, { 35, 0x0000 }, { 35, 0x0000 }, { 35, 0x0000 },
- { 35, 0x0000 }, { 35, 0x0000 }, { 35, 0x0000 }, { 35, 0x0000 },
- { 35, 0x0000 }, { 35, 0xfffe }, { 50, 0x03fb }, { 59, 0xfffe },
- { 74, 0x03fb }, { 83, 0x0000 }, { 83, 0x0000 }, { 83, 0x0000 },
- /* 0x0400 */
- { 83, 0x0002 }, { 84, 0xffff }, { 100, 0xffff }, { 116, 0xffff },
- { 132, 0xffff }, { 148, 0x0002 },
-};
-static const Summary16 gb2312_uni2indx_page20[101] = {
- /* 0x2000 */
- { 149, 0x0000 }, { 149, 0x3360 }, { 155, 0x0040 }, { 156, 0x080d },
- { 160, 0x0000 }, { 160, 0x0000 }, { 160, 0x0000 }, { 160, 0x0000 },
- { 160, 0x0000 }, { 160, 0x0000 }, { 160, 0x0000 }, { 160, 0x0000 },
- { 160, 0x0000 }, { 160, 0x0000 }, { 160, 0x0000 }, { 160, 0x0000 },
- /* 0x2100 */
- { 160, 0x0008 }, { 161, 0x0040 }, { 162, 0x0000 }, { 162, 0x0000 },
- { 162, 0x0000 }, { 162, 0x0000 }, { 162, 0x0fff }, { 174, 0x0000 },
- { 174, 0x0000 }, { 174, 0x000f }, { 178, 0x0000 }, { 178, 0x0000 },
- { 178, 0x0000 }, { 178, 0x0000 }, { 178, 0x0000 }, { 178, 0x0000 },
- /* 0x2200 */
- { 178, 0x8100 }, { 180, 0x6402 }, { 184, 0x4fa1 }, { 192, 0x20f0 },
- { 197, 0x1100 }, { 199, 0x0000 }, { 199, 0xc033 }, { 205, 0x0000 },
- { 205, 0x0000 }, { 205, 0x0200 }, { 206, 0x0020 }, { 207, 0x0000 },
- { 207, 0x0000 }, { 207, 0x0000 }, { 207, 0x0000 }, { 207, 0x0000 },
- /* 0x2300 */
- { 207, 0x0000 }, { 207, 0x0004 }, { 208, 0x0000 }, { 208, 0x0000 },
- { 208, 0x0000 }, { 208, 0x0000 }, { 208, 0x0000 }, { 208, 0x0000 },
- { 208, 0x0000 }, { 208, 0x0000 }, { 208, 0x0000 }, { 208, 0x0000 },
- { 208, 0x0000 }, { 208, 0x0000 }, { 208, 0x0000 }, { 208, 0x0000 },
- /* 0x2400 */
- { 208, 0x0000 }, { 208, 0x0000 }, { 208, 0x0000 }, { 208, 0x0000 },
- { 208, 0x0000 }, { 208, 0x0000 }, { 208, 0x03ff }, { 218, 0xfff0 },
- { 230, 0xffff }, { 246, 0x0fff }, { 258, 0x0000 }, { 258, 0x0000 },
- { 258, 0x0000 }, { 258, 0x0000 }, { 258, 0x0000 }, { 258, 0x0000 },
- /* 0x2500 */
- { 258, 0xffff }, { 274, 0xffff }, { 290, 0xffff }, { 306, 0xffff },
- { 322, 0x0fff }, { 334, 0x0000 }, { 334, 0x0000 }, { 334, 0x0000 },
- { 334, 0x0000 }, { 334, 0x0000 }, { 334, 0x0003 }, { 336, 0x000c },
- { 338, 0xc8c0 }, { 343, 0x0000 }, { 343, 0x0000 }, { 343, 0x0000 },
- /* 0x2600 */
- { 343, 0x0060 }, { 345, 0x0000 }, { 345, 0x0000 }, { 345, 0x0000 },
- { 345, 0x0005 },
-};
-static const Summary16 gb2312_uni2indx_page30[35] = {
- /* 0x3000 */
- { 347, 0xff2f }, { 360, 0x00fb }, { 367, 0x0000 }, { 367, 0x0000 },
- { 367, 0xfffe }, { 382, 0xffff }, { 398, 0xffff }, { 414, 0xffff },
- { 430, 0xffff }, { 446, 0x000f }, { 450, 0xfffe }, { 465, 0xffff },
- { 481, 0xffff }, { 497, 0xffff }, { 513, 0xffff }, { 529, 0x087f },
- /* 0x3100 */
- { 537, 0xffe0 }, { 548, 0xffff }, { 564, 0x03ff }, { 574, 0x0000 },
- { 574, 0x0000 }, { 574, 0x0000 }, { 574, 0x0000 }, { 574, 0x0000 },
- { 574, 0x0000 }, { 574, 0x0000 }, { 574, 0x0000 }, { 574, 0x0000 },
- { 574, 0x0000 }, { 574, 0x0000 }, { 574, 0x0000 }, { 574, 0x0000 },
- /* 0x3200 */
- { 574, 0x0000 }, { 574, 0x0000 }, { 574, 0x03ff },
-};
-static const Summary16 gb2312_uni2indx_page4e[1263] = {
- /* 0x4e00 */
- { 584, 0x7f8b }, { 595, 0x7f7b }, { 608, 0x3db4 }, { 617, 0xef55 },
- { 628, 0xfba8 }, { 638, 0xf35d }, { 649, 0x0243 }, { 653, 0x400b },
- { 657, 0xfb40 }, { 665, 0x8d3e }, { 674, 0x7bf7 }, { 687, 0x8c2c },
- { 693, 0x6eff }, { 706, 0xe3fa }, { 717, 0x1d3a }, { 725, 0xa8ed },
- /* 0x4f00 */
- { 734, 0xe602 }, { 740, 0xcf83 }, { 749, 0x8cf5 }, { 758, 0x3555 },
- { 766, 0xe048 }, { 771, 0xffab }, { 784, 0x92b9 }, { 792, 0xd859 },
- { 800, 0xab18 }, { 807, 0x2892 }, { 812, 0xd7e9 }, { 823, 0x8020 },
- { 825, 0xc438 }, { 831, 0xf583 }, { 840, 0xe74a }, { 849, 0x450a },
- /* 0x5000 */
- { 854, 0xb000 }, { 857, 0x9714 }, { 864, 0x7762 }, { 873, 0x5400 },
- { 876, 0xd188 }, { 882, 0x1420 }, { 885, 0x1020 }, { 887, 0xc8c0 },
- { 892, 0x2121 }, { 896, 0x0000 }, { 896, 0x13a8 }, { 902, 0x0c04 },
- { 905, 0x8000 }, { 906, 0x0440 }, { 908, 0x70c0 }, { 913, 0x0828 },
- /* 0x5100 */
- { 916, 0x08c0 }, { 919, 0x0004 }, { 920, 0x0002 }, { 921, 0x8000 },
- { 922, 0x2b7b }, { 932, 0x1472 }, { 938, 0x7924 }, { 945, 0x3bfb },
- { 957, 0x3327 }, { 965, 0x1ae4 }, { 972, 0x9835 }, { 979, 0x38ef },
- { 989, 0x9ad1 }, { 997, 0x2802 }, { 1000, 0xa813 }, { 1006, 0xbf69 },
- /* 0x5200 */
- { 1017, 0x65cf }, { 1027, 0x2fc6 }, { 1036, 0x6b11 }, { 1043, 0xafc9 },
- { 1053, 0x340f }, { 1060, 0x5053 }, { 1066, 0x86a2 }, { 1072, 0xa004 },
- { 1075, 0x0106 }, { 1078, 0xe809 }, { 1084, 0x3f0f }, { 1094, 0xc00e },
- { 1099, 0x0a88 }, { 1103, 0x8145 }, { 1108, 0x0010 }, { 1109, 0xc601 },
- /* 0x5300 */
- { 1114, 0xa161 }, { 1120, 0x26e1 }, { 1127, 0x444b }, { 1133, 0xce00 },
- { 1138, 0xc7aa }, { 1147, 0xd4ee }, { 1157, 0xcadf }, { 1168, 0x85bb },
- { 1177, 0x3a74 }, { 1185, 0xa520 }, { 1190, 0x436c }, { 1197, 0x8840 },
- { 1200, 0x3f06 }, { 1208, 0x8bd2 }, { 1216, 0xff79 }, { 1229, 0x3bef },
- /* 0x5400 */
- { 1241, 0xf75a }, { 1252, 0xe8ef }, { 1263, 0xfbcb }, { 1275, 0x5b36 },
- { 1284, 0x0d49 }, { 1290, 0x1bfd }, { 1301, 0x0154 }, { 1305, 0x39ee },
- { 1315, 0xd855 }, { 1323, 0x2e75 }, { 1332, 0xbfd8 }, { 1343, 0xa91a },
- { 1350, 0xf3d7 }, { 1362, 0xf6bf }, { 1375, 0x67e0 }, { 1383, 0xb40c },
- /* 0x5500 */
- { 1389, 0x82c2 }, { 1394, 0x0813 }, { 1398, 0xd49d }, { 1407, 0xd08b },
- { 1414, 0x065a }, { 1420, 0x1061 }, { 1424, 0x74f2 }, { 1433, 0x59e0 },
- { 1440, 0x8f9f }, { 1451, 0xb312 }, { 1458, 0x0080 }, { 1459, 0x6aaa },
- { 1467, 0x3230 }, { 1472, 0xb05e }, { 1480, 0x9d7a }, { 1490, 0x60ac },
- /* 0x5600 */
- { 1496, 0xd303 }, { 1503, 0xc900 }, { 1507, 0x3098 }, { 1512, 0x8a56 },
- { 1519, 0x7000 }, { 1522, 0x1390 }, { 1527, 0x1f14 }, { 1534, 0x1842 },
- { 1538, 0xc060 }, { 1542, 0x0008 }, { 1543, 0x8008 }, { 1545, 0x1080 },
- { 1547, 0x0400 }, { 1548, 0xec90 }, { 1555, 0x2817 }, { 1561, 0xe633 },
- /* 0x5700 */
- { 1570, 0x0758 }, { 1576, 0x9000 }, { 1578, 0xf708 }, { 1586, 0x4e09 },
- { 1592, 0xf485 }, { 1600, 0xfc83 }, { 1609, 0xaf53 }, { 1619, 0x18c8 },
- { 1624, 0x187c }, { 1631, 0x080c }, { 1634, 0x6adf }, { 1645, 0x0114 },
- { 1648, 0xc80c }, { 1653, 0xa734 }, { 1661, 0xa011 }, { 1665, 0x2710 },
- /* 0x5800 */
- { 1670, 0x28c5 }, { 1676, 0x4222 }, { 1680, 0x0413 }, { 1684, 0x0021 },
- { 1686, 0x3010 }, { 1689, 0x4112 }, { 1693, 0x1820 }, { 1696, 0x4000 },
- { 1697, 0x022b }, { 1702, 0xc60c }, { 1708, 0x0300 }, { 1710, 0x1000 },
- { 1711, 0x0022 }, { 1713, 0x0022 }, { 1715, 0x5810 }, { 1719, 0x0249 },
- /* 0x5900 */
- { 1723, 0xa094 }, { 1728, 0x9670 }, { 1735, 0xeeb0 }, { 1744, 0x1792 },
- { 1751, 0xcb96 }, { 1760, 0x05f2 }, { 1767, 0x0025 }, { 1770, 0x2358 },
- { 1776, 0x25de }, { 1785, 0x42cc }, { 1791, 0xcf38 }, { 1800, 0x4a04 },
- { 1804, 0x0c40 }, { 1807, 0x359f }, { 1817, 0x1128 }, { 1821, 0x8a00 },
- /* 0x5a00 */
- { 1824, 0x13fa }, { 1833, 0x910a }, { 1838, 0x0229 }, { 1842, 0x1056 },
- { 1847, 0x0641 }, { 1851, 0x0420 }, { 1853, 0x0484 }, { 1856, 0x84f0 },
- { 1862, 0x0000 }, { 1862, 0x0c04 }, { 1865, 0x0400 }, { 1866, 0x412c },
- { 1871, 0x1206 }, { 1875, 0x1154 }, { 1880, 0x0a4b }, { 1886, 0x0002 },
- /* 0x5b00 */
- { 1887, 0x0200 }, { 1888, 0x00c0 }, { 1890, 0x0000 }, { 1890, 0x0094 },
- { 1893, 0x0001 }, { 1894, 0xbfbb }, { 1907, 0x167c }, { 1915, 0x242b },
- { 1921, 0x9bbb }, { 1932, 0x7fa8 }, { 1942, 0x0c7f }, { 1951, 0xe379 },
- { 1961, 0x10f4 }, { 1967, 0xe00d }, { 1973, 0x4132 }, { 1978, 0x9f01 },
- /* 0x5c00 */
- { 1985, 0x8652 }, { 1991, 0x3572 }, { 1999, 0x10b4 }, { 2004, 0xff12 },
- { 2014, 0xcf27 }, { 2024, 0x4223 }, { 2029, 0xc06b }, { 2036, 0x8602 },
- { 2040, 0x3106 }, { 2045, 0x1fd3 }, { 2055, 0x3a0c }, { 2061, 0xa1aa },
- { 2068, 0x0812 }, { 2071, 0x0204 }, { 2073, 0x2572 }, { 2080, 0x0801 },
- /* 0x5d00 */
- { 2082, 0x40cc }, { 2087, 0x4850 }, { 2091, 0x62d0 }, { 2097, 0x6010 },
- { 2100, 0x1c80 }, { 2104, 0x2900 }, { 2107, 0x9a00 }, { 2111, 0x0010 },
- { 2112, 0x0004 }, { 2113, 0x2200 }, { 2115, 0x0000 }, { 2115, 0x0080 },
- { 2116, 0x2020 }, { 2118, 0x6800 }, { 2121, 0xcbe6 }, { 2131, 0x609e },
- /* 0x5e00 */
- { 2138, 0x916e }, { 2146, 0x3f73 }, { 2157, 0x60c0 }, { 2161, 0x3982 },
- { 2167, 0x1034 }, { 2171, 0x4830 }, { 2175, 0x0006 }, { 2177, 0xbd5c },
- { 2187, 0x8cd1 }, { 2194, 0xd6fb }, { 2206, 0x20e1 }, { 2211, 0x43e8 },
- { 2218, 0x0600 }, { 2220, 0x084e }, { 2225, 0x0500 }, { 2227, 0xc4d0 },
- /* 0x5f00 */
- { 2233, 0x8d1f }, { 2242, 0x89aa }, { 2249, 0xa6e1 }, { 2257, 0x1602 },
- { 2261, 0x0001 }, { 2262, 0x21ed }, { 2270, 0x3656 }, { 2278, 0x1a8b },
- { 2285, 0x1fb7 }, { 2296, 0x13a5 }, { 2303, 0x6502 }, { 2308, 0x30a0 },
- { 2312, 0xb278 }, { 2320, 0x23c7 }, { 2328, 0x6c93 }, { 2336, 0xe922 },
- /* 0x6000 */
- { 2343, 0xe47f }, { 2354, 0x3a74 }, { 2362, 0x8fe3 }, { 2372, 0x9820 },
- { 2376, 0x280e }, { 2381, 0x2625 }, { 2387, 0xbf9c }, { 2398, 0xbf49 },
- { 2408, 0x3218 }, { 2413, 0xac54 }, { 2420, 0xb949 }, { 2428, 0x1916 },
- { 2434, 0x0c60 }, { 2438, 0xb522 }, { 2445, 0xfbc1 }, { 2455, 0x0659 },
- /* 0x6100 */
- { 2461, 0xe343 }, { 2469, 0x8420 }, { 2472, 0x08d9 }, { 2478, 0x8000 },
- { 2479, 0x5500 }, { 2483, 0x2022 }, { 2486, 0x0184 }, { 2489, 0x00a1 },
- { 2492, 0x4800 }, { 2494, 0x2010 }, { 2496, 0x1380 }, { 2500, 0x4080 },
- { 2502, 0x0d04 }, { 2506, 0x0016 }, { 2509, 0x0040 }, { 2510, 0x8020 },
- /* 0x6200 */
- { 2512, 0xfd40 }, { 2520, 0x8de7 }, { 2530, 0x5436 }, { 2537, 0xe098 },
- { 2543, 0x7b8b }, { 2553, 0x091e }, { 2559, 0xfec8 }, { 2569, 0xd249 },
- { 2576, 0x0611 }, { 2580, 0x8dee }, { 2590, 0x1937 }, { 2598, 0xba22 },
- { 2605, 0x77f4 }, { 2616, 0x9fdd }, { 2628, 0xf3ec }, { 2639, 0xf0da },
- /* 0x6300 */
- { 2648, 0x4386 }, { 2654, 0xec42 }, { 2661, 0x8d3f }, { 2671, 0x2604 },
- { 2675, 0xfa6c }, { 2685, 0xc021 }, { 2689, 0x628e }, { 2696, 0x0cc2 },
- { 2701, 0xd785 }, { 2710, 0x0145 }, { 2714, 0x77ad }, { 2725, 0x5599 },
- { 2733, 0xe250 }, { 2739, 0x4045 }, { 2743, 0x260b }, { 2749, 0xa154 },
- /* 0x6400 */
- { 2755, 0x9827 }, { 2762, 0x5819 }, { 2768, 0x3443 }, { 2774, 0xa410 },
- { 2778, 0x05f2 }, { 2785, 0x4114 }, { 2789, 0x2280 }, { 2792, 0x0700 },
- { 2795, 0x00b4 }, { 2799, 0x4266 }, { 2805, 0x7210 }, { 2810, 0x15a1 },
- { 2816, 0x6025 }, { 2821, 0x4185 }, { 2826, 0x0054 }, { 2829, 0x0000 },
- /* 0x6500 */
- { 2829, 0x0201 }, { 2831, 0x0104 }, { 2833, 0xc820 }, { 2837, 0xcb70 },
- { 2845, 0x9320 }, { 2850, 0x6a62 }, { 2857, 0x184c }, { 2862, 0x0095 },
- { 2866, 0x1880 }, { 2869, 0x9a8b }, { 2877, 0xaab2 }, { 2885, 0x3201 },
- { 2889, 0xd87a }, { 2898, 0x00c4 }, { 2901, 0xf3e5 }, { 2912, 0x04c3 },
- /* 0x6600 */
- { 2917, 0xd44d }, { 2925, 0xa238 }, { 2931, 0xa1a1 }, { 2937, 0x5072 },
- { 2943, 0x980a }, { 2948, 0x84fc }, { 2956, 0xc152 }, { 2962, 0x44d1 },
- { 2968, 0x1094 }, { 2972, 0x20c2 }, { 2976, 0x4180 }, { 2979, 0x4210 },
- { 2982, 0x0000 }, { 2982, 0x3a00 }, { 2986, 0x0240 }, { 2988, 0xd29d },
- /* 0x6700 */
- { 2997, 0x2f01 }, { 3003, 0xa8b1 }, { 3010, 0xbd40 }, { 3017, 0x2432 },
- { 3022, 0xd34d }, { 3031, 0xd04b }, { 3038, 0xa723 }, { 3046, 0xd0ad },
- { 3054, 0x0a92 }, { 3059, 0x75a1 }, { 3067, 0xadac }, { 3076, 0x01e9 },
- { 3082, 0x801a }, { 3086, 0x771f }, { 3097, 0x9225 }, { 3103, 0xa01b },
- /* 0x6800 */
- { 3109, 0xdfa1 }, { 3119, 0x20ca }, { 3124, 0x0602 }, { 3127, 0x738c },
- { 3135, 0x577f }, { 3147, 0x003b }, { 3152, 0x0bff }, { 3163, 0x00d0 },
- { 3166, 0x806a }, { 3171, 0x0088 }, { 3173, 0xa1c4 }, { 3179, 0x0029 },
- { 3182, 0x2a05 }, { 3187, 0x0524 }, { 3191, 0x4009 }, { 3194, 0x1623 },
- /* 0x6900 */
- { 3200, 0x6822 }, { 3205, 0x8005 }, { 3208, 0x2011 }, { 3211, 0xa211 },
- { 3216, 0x0004 }, { 3217, 0x6490 }, { 3222, 0x4849 }, { 3227, 0x1382 },
- { 3232, 0x23d5 }, { 3240, 0x1930 }, { 3245, 0x2980 }, { 3249, 0x0892 },
- { 3253, 0x5402 }, { 3257, 0x8811 }, { 3261, 0x2001 }, { 3263, 0xa004 },
- /* 0x6a00 */
- { 3266, 0x0400 }, { 3267, 0x8180 }, { 3270, 0x8502 }, { 3274, 0x6022 },
- { 3278, 0x0090 }, { 3280, 0x0b01 }, { 3284, 0x0022 }, { 3286, 0x1202 },
- { 3289, 0x4011 }, { 3292, 0x0083 }, { 3295, 0x1a01 }, { 3299, 0x0000 },
- { 3299, 0x0000 }, { 3299, 0x0000 }, { 3299, 0x0000 }, { 3299, 0x0000 },
- /* 0x6b00 */
- { 3299, 0x0000 }, { 3299, 0x0000 }, { 3299, 0x009f }, { 3305, 0x4684 },
- { 3310, 0x12c8 }, { 3315, 0x0200 }, { 3316, 0x04fc }, { 3323, 0x1a00 },
- { 3326, 0x2ede }, { 3336, 0x0c4c }, { 3341, 0x0402 }, { 3343, 0x80b8 },
- { 3348, 0xa826 }, { 3354, 0x0afc }, { 3362, 0x8c02 }, { 3366, 0x2228 },
- /* 0x6c00 */
- { 3370, 0xa0e0 }, { 3375, 0x8f7b }, { 3386, 0xc7d6 }, { 3396, 0x2135 },
- { 3402, 0x06c7 }, { 3409, 0xf8b1 }, { 3418, 0x0713 }, { 3424, 0x6255 },
- { 3431, 0x936e }, { 3440, 0x8a19 }, { 3446, 0x6efa }, { 3457, 0xfb0e },
- { 3467, 0x1630 }, { 3472, 0x48f9 }, { 3480, 0xcd2f }, { 3490, 0x7deb },
- /* 0x6d00 */
- { 3502, 0x5892 }, { 3508, 0x4e84 }, { 3514, 0x4ca0 }, { 3519, 0x7a2e },
- { 3528, 0xedea }, { 3539, 0x561e }, { 3547, 0xc649 }, { 3554, 0x1190 },
- { 3558, 0x5324 }, { 3564, 0xe83a }, { 3572, 0xcfdb }, { 3584, 0x8124 },
- { 3588, 0x18f1 }, { 3595, 0x6342 }, { 3601, 0x5853 }, { 3608, 0x1a8a },
- /* 0x6e00 */
- { 3614, 0x7420 }, { 3619, 0x24d3 }, { 3626, 0xaa3b }, { 3635, 0x0514 },
- { 3639, 0x6018 }, { 3643, 0x8958 }, { 3649, 0x4800 }, { 3651, 0xc000 },
- { 3653, 0x8268 }, { 3658, 0x9101 }, { 3662, 0x84a4 }, { 3667, 0x2cd6 },
- { 3675, 0x8886 }, { 3680, 0xc4ba }, { 3688, 0x0377 }, { 3696, 0x0210 },
- /* 0x6f00 */
- { 3698, 0x8244 }, { 3702, 0x0038 }, { 3705, 0xae11 }, { 3712, 0x404a },
- { 3716, 0x28c0 }, { 3720, 0x5100 }, { 3723, 0x6044 }, { 3727, 0x1514 },
- { 3732, 0x7310 }, { 3738, 0x1000 }, { 3739, 0x0082 }, { 3741, 0x0248 },
- { 3744, 0x0205 }, { 3747, 0x4006 }, { 3750, 0xc003 }, { 3754, 0x0000 },
- /* 0x7000 */
- { 3754, 0x0000 }, { 3754, 0x0c02 }, { 3757, 0x0008 }, { 3758, 0x0220 },
- { 3760, 0x9000 }, { 3762, 0x4000 }, { 3763, 0xb800 }, { 3767, 0xd161 },
- { 3774, 0x4621 }, { 3779, 0x3274 }, { 3786, 0xf800 }, { 3791, 0x3b8a },
- { 3799, 0x050f }, { 3805, 0x8b00 }, { 3809, 0xbbd0 }, { 3818, 0x2280 },
- /* 0x7100 */
- { 3821, 0x0600 }, { 3823, 0x0769 }, { 3830, 0x8040 }, { 3832, 0x0043 },
- { 3835, 0x5420 }, { 3839, 0x5000 }, { 3841, 0x41d0 }, { 3846, 0x250c },
- { 3851, 0x8410 }, { 3854, 0x8310 }, { 3858, 0x1101 }, { 3861, 0x0228 },
- { 3864, 0x4008 }, { 3866, 0x0030 }, { 3868, 0x40a1 }, { 3872, 0x0200 },
- /* 0x7200 */
- { 3873, 0x0040 }, { 3874, 0x2000 }, { 3875, 0x1500 }, { 3878, 0xabe3 },
- { 3888, 0x3180 }, { 3892, 0xaa44 }, { 3898, 0xc2c6 }, { 3905, 0xc624 },
- { 3911, 0xac13 }, { 3918, 0x8004 }, { 3920, 0xb000 }, { 3923, 0x03d1 },
- { 3929, 0x611e }, { 3936, 0x4285 }, { 3941, 0xf303 }, { 3949, 0x1d9f },
- /* 0x7300 */
- { 3959, 0x440a }, { 3963, 0x78e8 }, { 3971, 0x5e26 }, { 3979, 0xc392 },
- { 3986, 0x2000 }, { 3987, 0x0085 }, { 3990, 0xb001 }, { 3994, 0x4000 },
- { 3995, 0x4a90 }, { 4000, 0x8842 }, { 4004, 0xca04 }, { 4009, 0x0c8d },
- { 4015, 0xa705 }, { 4022, 0x4203 }, { 4026, 0x22a1 }, { 4031, 0x0004 },
- /* 0x7400 */
- { 4032, 0x8668 }, { 4038, 0x0c01 }, { 4041, 0x5564 }, { 4048, 0x1079 },
- { 4054, 0x0002 }, { 4055, 0xdea0 }, { 4063, 0x2000 }, { 4064, 0x40c1 },
- { 4068, 0x488b }, { 4074, 0x5001 }, { 4077, 0x0380 }, { 4080, 0x0400 },
- { 4081, 0x0000 }, { 4081, 0x5004 }, { 4084, 0xc05d }, { 4091, 0x80d0 },
- /* 0x7500 */
- { 4095, 0xa010 }, { 4098, 0x970a }, { 4105, 0xbb20 }, { 4112, 0x4daf },
- { 4122, 0xd921 }, { 4129, 0x1e10 }, { 4134, 0x0460 }, { 4137, 0x8314 },
- { 4142, 0x8848 }, { 4146, 0xa6d6 }, { 4155, 0xd83b }, { 4164, 0x733f },
- { 4175, 0x27bc }, { 4184, 0x4974 }, { 4191, 0x0ddc }, { 4199, 0x9213 },
- /* 0x7600 */
- { 4205, 0x142b }, { 4211, 0x8ba1 }, { 4218, 0x2e75 }, { 4227, 0xd139 },
- { 4235, 0x3009 }, { 4239, 0x5050 }, { 4243, 0x8808 }, { 4246, 0x6900 },
- { 4250, 0x49d4 }, { 4257, 0x024a }, { 4261, 0x4010 }, { 4263, 0x8016 },
- { 4267, 0xe564 }, { 4275, 0x89d7 }, { 4284, 0xc020 }, { 4287, 0x5316 },
- /* 0x7700 */
- { 4294, 0x2b92 }, { 4301, 0x8600 }, { 4304, 0xa345 }, { 4311, 0x15e0 },
- { 4317, 0x008b }, { 4321, 0x0c03 }, { 4325, 0x196e }, { 4333, 0xe200 },
- { 4337, 0x7031 }, { 4343, 0x8006 }, { 4346, 0x16a5 }, { 4353, 0xa829 },
- { 4359, 0x2000 }, { 4360, 0x1880 }, { 4363, 0x7aac }, { 4372, 0xe148 },
- /* 0x7800 */
- { 4378, 0x3207 }, { 4384, 0xb5d6 }, { 4394, 0x32e8 }, { 4401, 0x5f91 },
- { 4410, 0x50a1 }, { 4415, 0x20e5 }, { 4421, 0x7c00 }, { 4426, 0x1080 },
- { 4428, 0x7280 }, { 4433, 0x9d8a }, { 4441, 0x00aa }, { 4445, 0x421f },
- { 4452, 0x0e22 }, { 4457, 0x0231 }, { 4461, 0x1100 }, { 4463, 0x0494 },
- /* 0x7900 */
- { 4467, 0x0022 }, { 4469, 0x4008 }, { 4471, 0x0010 }, { 4472, 0x5c10 },
- { 4477, 0x0343 }, { 4482, 0xfcc8 }, { 4491, 0xa1a5 }, { 4498, 0x0580 },
- { 4501, 0x8433 }, { 4507, 0x0400 }, { 4508, 0x0080 }, { 4509, 0x6e08 },
- { 4515, 0x2a4b }, { 4522, 0x8126 }, { 4527, 0xaad8 }, { 4535, 0x2901 },
- /* 0x7a00 */
- { 4539, 0x684d }, { 4546, 0x4490 }, { 4550, 0x0009 }, { 4552, 0xba88 },
- { 4559, 0x0040 }, { 4560, 0x0082 }, { 4562, 0x0000 }, { 4562, 0x87d1 },
- { 4570, 0x215b }, { 4577, 0xb1e6 }, { 4586, 0x3161 }, { 4592, 0x8008 },
- { 4594, 0x0800 }, { 4595, 0xc240 }, { 4599, 0xa069 }, { 4605, 0xa600 },
- /* 0x7b00 */
- { 4609, 0x8d58 }, { 4616, 0x4a32 }, { 4622, 0x5d71 }, { 4631, 0x550a },
- { 4637, 0x9aa0 }, { 4643, 0x2d57 }, { 4652, 0x4005 }, { 4655, 0x4aa6 },
- { 4662, 0x2021 }, { 4665, 0x30b1 }, { 4671, 0x3fc6 }, { 4681, 0x0112 },
- { 4684, 0x10c2 }, { 4688, 0x260a }, { 4693, 0x4462 }, { 4698, 0x5082 },
- /* 0x7c00 */
- { 4702, 0x9880 }, { 4706, 0x8040 }, { 4708, 0x04c0 }, { 4711, 0x8100 },
- { 4713, 0x2003 }, { 4716, 0x0000 }, { 4716, 0x0000 }, { 4716, 0x3818 },
- { 4721, 0x0200 }, { 4722, 0xf1a6 }, { 4731, 0x4434 }, { 4736, 0x720e },
- { 4743, 0x35a2 }, { 4750, 0x92e0 }, { 4756, 0x8101 }, { 4759, 0x0900 },
- /* 0x7d00 */
- { 4761, 0x0400 }, { 4762, 0x0000 }, { 4762, 0x8885 }, { 4767, 0x0000 },
- { 4767, 0x0000 }, { 4767, 0x0000 }, { 4767, 0x4000 }, { 4768, 0x0080 },
- { 4769, 0x0000 }, { 4769, 0x0000 }, { 4769, 0x4040 }, { 4771, 0x0000 },
- { 4771, 0x0000 }, { 4771, 0x0000 }, { 4771, 0x0000 }, { 4771, 0x0000 },
- /* 0x7e00 */
- { 4771, 0x0000 }, { 4771, 0x0000 }, { 4771, 0x0000 }, { 4771, 0x0800 },
- { 4772, 0x0082 }, { 4774, 0x0000 }, { 4774, 0x0000 }, { 4774, 0x0000 },
- { 4774, 0x0004 }, { 4775, 0x8800 }, { 4777, 0xbfff }, { 4792, 0xe7ef },
- { 4805, 0xffff }, { 4821, 0xffbf }, { 4836, 0xefef }, { 4850, 0xfdff },
- /* 0x7f00 */
- { 4865, 0xfbff }, { 4880, 0xbffe }, { 4894, 0xffff }, { 4910, 0x057f },
- { 4919, 0x0034 }, { 4922, 0x85b3 }, { 4930, 0x4706 }, { 4936, 0x4216 },
- { 4941, 0x5402 }, { 4945, 0xe410 }, { 4950, 0x8092 }, { 4954, 0xb305 },
- { 4961, 0x5422 }, { 4966, 0x8130 }, { 4970, 0x4263 }, { 4976, 0x180b },
- /* 0x8000 */
- { 4981, 0x387b }, { 4990, 0x13f5 }, { 4999, 0x07e5 }, { 5007, 0xa9ea },
- { 5016, 0x3c4c }, { 5023, 0x0514 }, { 5027, 0x0600 }, { 5029, 0x8002 },
- { 5031, 0x1ad9 }, { 5039, 0xbd48 }, { 5047, 0xee37 }, { 5058, 0xf496 },
- { 5067, 0x705f }, { 5076, 0x7ec0 }, { 5084, 0xbfb2 }, { 5095, 0x355f },
- /* 0x8100 */
- { 5105, 0xe644 }, { 5112, 0x455f }, { 5121, 0x9000 }, { 5123, 0x4146 },
- { 5128, 0x1d40 }, { 5133, 0x063b }, { 5140, 0x62a1 }, { 5146, 0xfe13 },
- { 5156, 0x8505 }, { 5161, 0x3902 }, { 5166, 0x0548 }, { 5170, 0x0c08 },
- { 5173, 0x144f }, { 5180, 0x0000 }, { 5180, 0x3488 }, { 5185, 0x5818 },
- /* 0x8200 */
- { 5190, 0x3077 }, { 5198, 0xd815 }, { 5205, 0xbd0e }, { 5214, 0x4bfb },
- { 5225, 0x8a90 }, { 5230, 0x8500 }, { 5233, 0xc100 }, { 5236, 0xe61d },
- { 5245, 0xed14 }, { 5253, 0xb386 }, { 5261, 0xff72 }, { 5273, 0x639b },
- { 5282, 0xfd92 }, { 5292, 0xd9be }, { 5303, 0x887b }, { 5311, 0x0a92 },
- /* 0x8300 */
- { 5316, 0xd3fe }, { 5328, 0x1cb2 }, { 5335, 0xb980 }, { 5341, 0x177a },
- { 5350, 0x82c9 }, { 5356, 0xdc17 }, { 5365, 0xfffb }, { 5380, 0x3980 },
- { 5385, 0x4260 }, { 5389, 0x590c }, { 5395, 0x0f01 }, { 5400, 0x37df },
- { 5412, 0x94a3 }, { 5419, 0xb150 }, { 5425, 0x0623 }, { 5430, 0x2307 },
- /* 0x8400 */
- { 5436, 0xf85a }, { 5445, 0x3102 }, { 5449, 0x01f0 }, { 5454, 0x3102 },
- { 5458, 0x0040 }, { 5459, 0x1e82 }, { 5465, 0x3a0a }, { 5471, 0x056a },
- { 5477, 0x5b84 }, { 5484, 0x1280 }, { 5487, 0x8002 }, { 5489, 0xa714 },
- { 5496, 0x2612 }, { 5501, 0xa04b }, { 5507, 0x1069 }, { 5512, 0x9001 },
- /* 0x8500 */
- { 5515, 0x1000 }, { 5516, 0x848a }, { 5521, 0x1802 }, { 5524, 0x3f80 },
- { 5531, 0x0708 }, { 5535, 0x4240 }, { 5538, 0x0110 }, { 5540, 0x4e14 },
- { 5546, 0x80b0 }, { 5550, 0x1800 }, { 5552, 0xc510 }, { 5557, 0x0281 },
- { 5560, 0x8202 }, { 5563, 0x1029 }, { 5567, 0x0210 }, { 5569, 0x8800 },
- /* 0x8600 */
- { 5571, 0x0020 }, { 5572, 0x0042 }, { 5574, 0x0280 }, { 5576, 0x1100 },
- { 5578, 0xe000 }, { 5581, 0x4413 }, { 5586, 0x5804 }, { 5590, 0xfe02 },
- { 5598, 0x3c07 }, { 5605, 0x3028 }, { 5609, 0x9798 }, { 5617, 0x0473 },
- { 5623, 0xced1 }, { 5632, 0xcb13 }, { 5640, 0x6210 }, { 5644, 0x431f },
- /* 0x8700 */
- { 5652, 0x278d }, { 5660, 0x55ac }, { 5668, 0x422e }, { 5674, 0xc892 },
- { 5680, 0x5380 }, { 5685, 0x0288 }, { 5688, 0x4039 }, { 5693, 0x7851 },
- { 5700, 0x292c }, { 5706, 0x8088 }, { 5709, 0xb900 }, { 5714, 0x2428 },
- { 5718, 0x0c41 }, { 5722, 0x080e }, { 5726, 0x4421 }, { 5730, 0x4200 },
- /* 0x8800 */
- { 5732, 0x0408 }, { 5734, 0x0868 }, { 5738, 0x0006 }, { 5740, 0x1204 },
- { 5743, 0x3031 }, { 5748, 0x0290 }, { 5751, 0x5b3e }, { 5761, 0xe085 },
- { 5767, 0x2936 }, { 5774, 0x1044 }, { 5777, 0x2814 }, { 5781, 0x1082 },
- { 5784, 0x4266 }, { 5790, 0x8334 }, { 5796, 0x013c }, { 5801, 0x531b },
- /* 0x8900 */
- { 5809, 0x0404 }, { 5811, 0x0e0d }, { 5817, 0x0c22 }, { 5821, 0x0051 },
- { 5824, 0x0012 }, { 5826, 0xc000 }, { 5828, 0x0040 }, { 5829, 0x8800 },
- { 5831, 0x004a }, { 5834, 0x0000 }, { 5834, 0x0000 }, { 5834, 0x0000 },
- { 5834, 0xdff6 }, { 5847, 0x5447 }, { 5854, 0x8868 }, { 5859, 0x0008 },
- /* 0x8a00 */
- { 5860, 0x0081 }, { 5862, 0x0000 }, { 5862, 0x0000 }, { 5862, 0x4000 },
- { 5863, 0x0100 }, { 5864, 0x0000 }, { 5864, 0x0000 }, { 5864, 0x0200 },
- { 5865, 0x0600 }, { 5867, 0x0008 }, { 5868, 0x0000 }, { 5868, 0x0000 },
- { 5868, 0x0000 }, { 5868, 0x0000 }, { 5868, 0x0000 }, { 5868, 0x0000 },
- /* 0x8b00 */
- { 5868, 0x0080 }, { 5869, 0x0000 }, { 5869, 0x0040 }, { 5870, 0x0000 },
- { 5870, 0x0000 }, { 5870, 0x0000 }, { 5870, 0x1040 }, { 5872, 0x0000 },
- { 5872, 0x0000 }, { 5872, 0x0000 }, { 5872, 0xefff }, { 5887, 0xf7fd },
- { 5901, 0xff7f }, { 5916, 0xfffe }, { 5931, 0xfbff }, { 5946, 0xffff },
- /* 0x8c00 */
- { 5962, 0xfdff }, { 5977, 0xbfff }, { 5992, 0xffff }, { 6008, 0x00ff },
- { 6016, 0x12c2 }, { 6021, 0x0420 }, { 6023, 0x0c06 }, { 6027, 0x0708 },
- { 6031, 0x1624 }, { 6036, 0x0110 }, { 6038, 0x0000 }, { 6038, 0x0000 },
- { 6038, 0x0000 }, { 6038, 0x0000 }, { 6038, 0x0000 }, { 6038, 0x0000 },
- /* 0x8d00 */
- { 6038, 0x0000 }, { 6038, 0xe000 }, { 6041, 0xfffe }, { 6056, 0xffff },
- { 6072, 0xffff }, { 6088, 0x7f79 }, { 6100, 0x28df }, { 6109, 0x00f9 },
- { 6115, 0x0c32 }, { 6120, 0x8012 }, { 6123, 0x0008 }, { 6124, 0xd53a },
- { 6133, 0xd858 }, { 6140, 0xecc2 }, { 6148, 0x9d18 }, { 6155, 0x2fa8 },
- /* 0x8e00 */
- { 6163, 0x9620 }, { 6168, 0xe010 }, { 6172, 0xd60c }, { 6179, 0x2622 },
- { 6184, 0x0f97 }, { 6193, 0x0206 }, { 6196, 0xb240 }, { 6201, 0x9055 },
- { 6207, 0x80a2 }, { 6211, 0x5011 }, { 6215, 0x9800 }, { 6218, 0x0404 },
- { 6220, 0x4000 }, { 6221, 0x0000 }, { 6221, 0x0000 }, { 6221, 0x0000 },
- /* 0x8f00 */
- { 6221, 0x0000 }, { 6221, 0x0000 }, { 6221, 0x0000 }, { 6221, 0x0000 },
- { 6221, 0x0000 }, { 6221, 0x0000 }, { 6221, 0xfbc0 }, { 6230, 0xffff },
- { 6246, 0xeffe }, { 6260, 0xdffb }, { 6274, 0x0b08 }, { 6278, 0x6243 },
- { 6284, 0x41b6 }, { 6291, 0xfb3b }, { 6303, 0x6f74 }, { 6313, 0x2389 },
- /* 0x9000 */
- { 6319, 0xae7f }, { 6331, 0xecd7 }, { 6342, 0xe047 }, { 6349, 0x5960 },
- { 6355, 0xa096 }, { 6361, 0x098f }, { 6368, 0x612c }, { 6374, 0xa030 },
- { 6378, 0x090d }, { 6383, 0x2aaa }, { 6390, 0xd44e }, { 6398, 0x4f7b },
- { 6409, 0xc4b2 }, { 6416, 0x388b }, { 6423, 0xa9c6 }, { 6431, 0x6110 },
- /* 0x9100 */
- { 6435, 0x0014 }, { 6437, 0x4200 }, { 6439, 0x800c }, { 6442, 0x0202 },
- { 6444, 0xfe48 }, { 6453, 0x6485 }, { 6459, 0xd63e }, { 6469, 0xe3f7 },
- { 6481, 0x3aa0 }, { 6487, 0x0c07 }, { 6492, 0xe40c }, { 6498, 0x0430 },
- { 6501, 0xf680 }, { 6508, 0x1002 }, { 6510, 0x0000 }, { 6510, 0x0000 },
- /* 0x9200 */
- { 6510, 0x0000 }, { 6510, 0x0000 }, { 6510, 0x0000 }, { 6510, 0x0000 },
- { 6510, 0x0000 }, { 6510, 0x0000 }, { 6510, 0x0000 }, { 6510, 0x0010 },
- { 6511, 0x4000 }, { 6512, 0x0000 }, { 6512, 0x4000 }, { 6513, 0x0000 },
- { 6513, 0x0100 }, { 6514, 0x0000 }, { 6514, 0x0000 }, { 6514, 0x0000 },
- /* 0x9300 */
- { 6514, 0x0000 }, { 6514, 0x0000 }, { 6514, 0x0000 }, { 6514, 0x4000 },
- { 6515, 0x0000 }, { 6515, 0x0000 }, { 6515, 0x0400 }, { 6516, 0x0000 },
- { 6516, 0x8000 }, { 6517, 0x0000 }, { 6517, 0x0000 }, { 6517, 0x0000 },
- { 6517, 0x0400 }, { 6518, 0x0040 }, { 6519, 0x0000 }, { 6519, 0x0000 },
- /* 0x9400 */
- { 6519, 0x0000 }, { 6519, 0x0000 }, { 6519, 0x0000 }, { 6519, 0x4000 },
- { 6520, 0x0000 }, { 6520, 0x0000 }, { 6520, 0x0800 }, { 6521, 0x0000 },
- { 6521, 0xffe0 }, { 6532, 0xfebd }, { 6545, 0xffff }, { 6561, 0xffff },
- { 6577, 0x7f7f }, { 6591, 0xfbe7 }, { 6604, 0xffbf }, { 6619, 0xf7ff },
- /* 0x9500 */
- { 6634, 0xffff }, { 6650, 0xefff }, { 6665, 0xff7e }, { 6679, 0xdff7 },
- { 6693, 0xf6f7 }, { 6706, 0xfbdf }, { 6720, 0xbffe }, { 6734, 0x804f },
- { 6740, 0x0000 }, { 6740, 0x0000 }, { 6740, 0x0000 }, { 6740, 0x0000 },
- { 6740, 0x0000 }, { 6740, 0x0000 }, { 6740, 0xef00 }, { 6747, 0x7fff },
- /* 0x9600 */
- { 6762, 0xff7f }, { 6777, 0xb6f7 }, { 6789, 0x4406 }, { 6793, 0xb87e },
- { 6803, 0x3bf5 }, { 6814, 0x8831 }, { 6819, 0x1796 }, { 6827, 0x00f4 },
- { 6832, 0xa960 }, { 6838, 0x1391 }, { 6844, 0x0080 }, { 6845, 0x7249 },
- { 6852, 0xf2f3 }, { 6863, 0x0024 }, { 6865, 0x8701 }, { 6870, 0x42c8 },
- /* 0x9700 */
- { 6875, 0xe3d3 }, { 6885, 0x5048 }, { 6889, 0x2400 }, { 6891, 0x4305 },
- { 6896, 0x0000 }, { 6896, 0x4a4c }, { 6902, 0x0227 }, { 6907, 0x1058 },
- { 6911, 0x2820 }, { 6914, 0x0116 }, { 6918, 0xa809 }, { 6923, 0x0014 },
- { 6925, 0x0000 }, { 6925, 0x0000 }, { 6925, 0x3ec0 }, { 6932, 0x0068 },
- /* 0x9800 */
- { 6935, 0x0000 }, { 6935, 0x0000 }, { 6935, 0x0000 }, { 6935, 0x0000 },
- { 6935, 0x0000 }, { 6935, 0x0000 }, { 6935, 0x0000 }, { 6935, 0xffe0 },
- { 6946, 0xb7ff }, { 6960, 0xfddb }, { 6973, 0x00f7 }, { 6980, 0x0000 },
- { 6980, 0x4000 }, { 6981, 0xc72e }, { 6990, 0x0180 }, { 6992, 0x0000 },
- /* 0x9900 */
- { 6992, 0x2000 }, { 6993, 0x0001 }, { 6994, 0x4000 }, { 6995, 0x0000 },
- { 6995, 0x0000 }, { 6995, 0x0030 }, { 6997, 0xffa8 }, { 7008, 0xb4f7 },
- { 7019, 0xadf3 }, { 7030, 0x03ff }, { 7040, 0x0120 }, { 7042, 0x0000 },
- { 7042, 0x0000 }, { 7042, 0x0000 }, { 7042, 0x0000 }, { 7042, 0x0000 },
- /* 0x9a00 */
- { 7042, 0x0000 }, { 7042, 0x0000 }, { 7042, 0x0000 }, { 7042, 0x0000 },
- { 7042, 0x0000 }, { 7042, 0x0000 }, { 7042, 0xf000 }, { 7046, 0xfffb },
- { 7061, 0x9df7 }, { 7073, 0xfdcf }, { 7086, 0x01bf }, { 7094, 0x15c3 },
- { 7101, 0x1827 }, { 7107, 0x810a }, { 7111, 0xa842 }, { 7116, 0x0a00 },
- /* 0x9b00 */
- { 7118, 0x8108 }, { 7121, 0x8008 }, { 7123, 0x8008 }, { 7125, 0x1804 },
- { 7128, 0xa3be }, { 7138, 0x0012 }, { 7140, 0x0000 }, { 7140, 0x0000 },
- { 7140, 0x0000 }, { 7140, 0x0000 }, { 7140, 0x0000 }, { 7140, 0x0000 },
- { 7140, 0x0000 }, { 7140, 0x0000 }, { 7140, 0x0000 }, { 7140, 0x0000 },
- /* 0x9c00 */
- { 7140, 0x0000 }, { 7140, 0x0000 }, { 7140, 0x0000 }, { 7140, 0x0000 },
- { 7140, 0x0000 }, { 7140, 0x0000 }, { 7140, 0x0000 }, { 7140, 0x9000 },
- { 7142, 0x69e6 }, { 7151, 0xdc37 }, { 7161, 0x6bff }, { 7174, 0x3dff },
- { 7187, 0xfcf8 }, { 7198, 0xf3f9 }, { 7210, 0x0004 },
-};
-static const Summary16 gb2312_uni2indx_page9e[27] = {
- /* 0x9e00 */
- { 7211, 0x0000 }, { 7211, 0x8000 }, { 7212, 0xbf6f }, { 7225, 0xe7ee },
- { 7237, 0xdffe }, { 7251, 0x5da2 }, { 7259, 0x3fd8 }, { 7269, 0xc00b },
- { 7274, 0x0984 }, { 7278, 0xa00c }, { 7282, 0x0040 }, { 7283, 0x6910 },
- { 7288, 0xe210 }, { 7293, 0xb912 }, { 7300, 0x86a5 }, { 7307, 0x5a00 },
- /* 0x9f00 */
- { 7311, 0x6800 }, { 7314, 0x0289 }, { 7318, 0x9005 }, { 7322, 0x6a80 },
- { 7327, 0x0010 }, { 7328, 0x0003 }, { 7330, 0x0000 }, { 7330, 0x8000 },
- { 7331, 0x1ff9 }, { 7342, 0x8e00 }, { 7346, 0x0001 },
-};
-static const Summary16 gb2312_uni2indx_pageff[15] = {
- /* 0xff00 */
- { 7347, 0xfffe }, { 7362, 0xffff }, { 7378, 0xffff }, { 7394, 0xffff },
- { 7410, 0xffff }, { 7426, 0x7fff }, { 7441, 0x0000 }, { 7441, 0x0000 },
- { 7441, 0x0000 }, { 7441, 0x0000 }, { 7441, 0x0000 }, { 7441, 0x0000 },
- { 7441, 0x0000 }, { 7441, 0x0000 }, { 7441, 0x002b },
-};
-
-static int
-gb2312_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n)
-{
- if (n >= 2) {
- const Summary16 *summary = NULL;
- if (wc < 0x0460)
- summary = &gb2312_uni2indx_page00[(wc>>4)];
- else if (wc >= 0x2000 && wc < 0x2650)
- summary = &gb2312_uni2indx_page20[(wc>>4)-0x200];
- else if (wc >= 0x3000 && wc < 0x3230)
- summary = &gb2312_uni2indx_page30[(wc>>4)-0x300];
- else if (wc >= 0x4e00 && wc < 0x9cf0)
- summary = &gb2312_uni2indx_page4e[(wc>>4)-0x4e0];
- else if (wc >= 0x9e00 && wc < 0x9fb0)
- summary = &gb2312_uni2indx_page9e[(wc>>4)-0x9e0];
- else if (wc >= 0xff00 && wc < 0xfff0)
- summary = &gb2312_uni2indx_pageff[(wc>>4)-0xff0];
- if (summary) {
- unsigned short used = summary->used;
- unsigned int i = wc & 0x0f;
- if (used & ((unsigned short) 1 << i)) {
- unsigned short c;
- /* Keep in `used' only the bits 0..i-1. */
- used &= ((unsigned short) 1 << i) - 1;
- /* Add `summary->indx' and the number of bits set in `used'. */
- used = (used & 0x5555) + ((used & 0xaaaa) >> 1);
- used = (used & 0x3333) + ((used & 0xcccc) >> 2);
- used = (used & 0x0f0f) + ((used & 0xf0f0) >> 4);
- used = (used & 0x00ff) + (used >> 8);
- c = gb2312_2charset[summary->indx + used];
- r[0] = (c >> 8); r[1] = (c & 0xff);
- return 2;
- }
- }
- return RET_ILSEQ;
- }
- return RET_TOOSMALL;
-}
+
+/*
+ * GB2312.1980-0
+ */
+
+static const unsigned short gb2312_2uni_page21[831] = {
+ /* 0x21 */
+ 0x3000, 0x3001, 0x3002, 0x30fb, 0x02c9, 0x02c7, 0x00a8, 0x3003,
+ 0x3005, 0x2015, 0xff5e, 0x2016, 0x2026, 0x2018, 0x2019, 0x201c,
+ 0x201d, 0x3014, 0x3015, 0x3008, 0x3009, 0x300a, 0x300b, 0x300c,
+ 0x300d, 0x300e, 0x300f, 0x3016, 0x3017, 0x3010, 0x3011, 0x00b1,
+ 0x00d7, 0x00f7, 0x2236, 0x2227, 0x2228, 0x2211, 0x220f, 0x222a,
+ 0x2229, 0x2208, 0x2237, 0x221a, 0x22a5, 0x2225, 0x2220, 0x2312,
+ 0x2299, 0x222b, 0x222e, 0x2261, 0x224c, 0x2248, 0x223d, 0x221d,
+ 0x2260, 0x226e, 0x226f, 0x2264, 0x2265, 0x221e, 0x2235, 0x2234,
+ 0x2642, 0x2640, 0x00b0, 0x2032, 0x2033, 0x2103, 0xff04, 0x00a4,
+ 0xffe0, 0xffe1, 0x2030, 0x00a7, 0x2116, 0x2606, 0x2605, 0x25cb,
+ 0x25cf, 0x25ce, 0x25c7, 0x25c6, 0x25a1, 0x25a0, 0x25b3, 0x25b2,
+ 0x203b, 0x2192, 0x2190, 0x2191, 0x2193, 0x3013,
+ /* 0x22 */
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0x2488, 0x2489, 0x248a, 0x248b, 0x248c, 0x248d, 0x248e, 0x248f,
+ 0x2490, 0x2491, 0x2492, 0x2493, 0x2494, 0x2495, 0x2496, 0x2497,
+ 0x2498, 0x2499, 0x249a, 0x249b, 0x2474, 0x2475, 0x2476, 0x2477,
+ 0x2478, 0x2479, 0x247a, 0x247b, 0x247c, 0x247d, 0x247e, 0x247f,
+ 0x2480, 0x2481, 0x2482, 0x2483, 0x2484, 0x2485, 0x2486, 0x2487,
+ 0x2460, 0x2461, 0x2462, 0x2463, 0x2464, 0x2465, 0x2466, 0x2467,
+ 0x2468, 0x2469, 0xfffd, 0xfffd, 0x3220, 0x3221, 0x3222, 0x3223,
+ 0x3224, 0x3225, 0x3226, 0x3227, 0x3228, 0x3229, 0xfffd, 0xfffd,
+ 0x2160, 0x2161, 0x2162, 0x2163, 0x2164, 0x2165, 0x2166, 0x2167,
+ 0x2168, 0x2169, 0x216a, 0x216b, 0xfffd, 0xfffd,
+ /* 0x23 */
+ 0xff01, 0xff02, 0xff03, 0xffe5, 0xff05, 0xff06, 0xff07, 0xff08,
+ 0xff09, 0xff0a, 0xff0b, 0xff0c, 0xff0d, 0xff0e, 0xff0f, 0xff10,
+ 0xff11, 0xff12, 0xff13, 0xff14, 0xff15, 0xff16, 0xff17, 0xff18,
+ 0xff19, 0xff1a, 0xff1b, 0xff1c, 0xff1d, 0xff1e, 0xff1f, 0xff20,
+ 0xff21, 0xff22, 0xff23, 0xff24, 0xff25, 0xff26, 0xff27, 0xff28,
+ 0xff29, 0xff2a, 0xff2b, 0xff2c, 0xff2d, 0xff2e, 0xff2f, 0xff30,
+ 0xff31, 0xff32, 0xff33, 0xff34, 0xff35, 0xff36, 0xff37, 0xff38,
+ 0xff39, 0xff3a, 0xff3b, 0xff3c, 0xff3d, 0xff3e, 0xff3f, 0xff40,
+ 0xff41, 0xff42, 0xff43, 0xff44, 0xff45, 0xff46, 0xff47, 0xff48,
+ 0xff49, 0xff4a, 0xff4b, 0xff4c, 0xff4d, 0xff4e, 0xff4f, 0xff50,
+ 0xff51, 0xff52, 0xff53, 0xff54, 0xff55, 0xff56, 0xff57, 0xff58,
+ 0xff59, 0xff5a, 0xff5b, 0xff5c, 0xff5d, 0xffe3,
+ /* 0x24 */
+ 0x3041, 0x3042, 0x3043, 0x3044, 0x3045, 0x3046, 0x3047, 0x3048,
+ 0x3049, 0x304a, 0x304b, 0x304c, 0x304d, 0x304e, 0x304f, 0x3050,
+ 0x3051, 0x3052, 0x3053, 0x3054, 0x3055, 0x3056, 0x3057, 0x3058,
+ 0x3059, 0x305a, 0x305b, 0x305c, 0x305d, 0x305e, 0x305f, 0x3060,
+ 0x3061, 0x3062, 0x3063, 0x3064, 0x3065, 0x3066, 0x3067, 0x3068,
+ 0x3069, 0x306a, 0x306b, 0x306c, 0x306d, 0x306e, 0x306f, 0x3070,
+ 0x3071, 0x3072, 0x3073, 0x3074, 0x3075, 0x3076, 0x3077, 0x3078,
+ 0x3079, 0x307a, 0x307b, 0x307c, 0x307d, 0x307e, 0x307f, 0x3080,
+ 0x3081, 0x3082, 0x3083, 0x3084, 0x3085, 0x3086, 0x3087, 0x3088,
+ 0x3089, 0x308a, 0x308b, 0x308c, 0x308d, 0x308e, 0x308f, 0x3090,
+ 0x3091, 0x3092, 0x3093, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ /* 0x25 */
+ 0x30a1, 0x30a2, 0x30a3, 0x30a4, 0x30a5, 0x30a6, 0x30a7, 0x30a8,
+ 0x30a9, 0x30aa, 0x30ab, 0x30ac, 0x30ad, 0x30ae, 0x30af, 0x30b0,
+ 0x30b1, 0x30b2, 0x30b3, 0x30b4, 0x30b5, 0x30b6, 0x30b7, 0x30b8,
+ 0x30b9, 0x30ba, 0x30bb, 0x30bc, 0x30bd, 0x30be, 0x30bf, 0x30c0,
+ 0x30c1, 0x30c2, 0x30c3, 0x30c4, 0x30c5, 0x30c6, 0x30c7, 0x30c8,
+ 0x30c9, 0x30ca, 0x30cb, 0x30cc, 0x30cd, 0x30ce, 0x30cf, 0x30d0,
+ 0x30d1, 0x30d2, 0x30d3, 0x30d4, 0x30d5, 0x30d6, 0x30d7, 0x30d8,
+ 0x30d9, 0x30da, 0x30db, 0x30dc, 0x30dd, 0x30de, 0x30df, 0x30e0,
+ 0x30e1, 0x30e2, 0x30e3, 0x30e4, 0x30e5, 0x30e6, 0x30e7, 0x30e8,
+ 0x30e9, 0x30ea, 0x30eb, 0x30ec, 0x30ed, 0x30ee, 0x30ef, 0x30f0,
+ 0x30f1, 0x30f2, 0x30f3, 0x30f4, 0x30f5, 0x30f6, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ /* 0x26 */
+ 0x0391, 0x0392, 0x0393, 0x0394, 0x0395, 0x0396, 0x0397, 0x0398,
+ 0x0399, 0x039a, 0x039b, 0x039c, 0x039d, 0x039e, 0x039f, 0x03a0,
+ 0x03a1, 0x03a3, 0x03a4, 0x03a5, 0x03a6, 0x03a7, 0x03a8, 0x03a9,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0x03b1, 0x03b2, 0x03b3, 0x03b4, 0x03b5, 0x03b6, 0x03b7, 0x03b8,
+ 0x03b9, 0x03ba, 0x03bb, 0x03bc, 0x03bd, 0x03be, 0x03bf, 0x03c0,
+ 0x03c1, 0x03c3, 0x03c4, 0x03c5, 0x03c6, 0x03c7, 0x03c8, 0x03c9,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ /* 0x27 */
+ 0x0410, 0x0411, 0x0412, 0x0413, 0x0414, 0x0415, 0x0401, 0x0416,
+ 0x0417, 0x0418, 0x0419, 0x041a, 0x041b, 0x041c, 0x041d, 0x041e,
+ 0x041f, 0x0420, 0x0421, 0x0422, 0x0423, 0x0424, 0x0425, 0x0426,
+ 0x0427, 0x0428, 0x0429, 0x042a, 0x042b, 0x042c, 0x042d, 0x042e,
+ 0x042f, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0x0430, 0x0431, 0x0432, 0x0433, 0x0434, 0x0435, 0x0451, 0x0436,
+ 0x0437, 0x0438, 0x0439, 0x043a, 0x043b, 0x043c, 0x043d, 0x043e,
+ 0x043f, 0x0440, 0x0441, 0x0442, 0x0443, 0x0444, 0x0445, 0x0446,
+ 0x0447, 0x0448, 0x0449, 0x044a, 0x044b, 0x044c, 0x044d, 0x044e,
+ 0x044f, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ /* 0x28 */
+ 0x0101, 0x00e1, 0x01ce, 0x00e0, 0x0113, 0x00e9, 0x011b, 0x00e8,
+ 0x012b, 0x00ed, 0x01d0, 0x00ec, 0x014d, 0x00f3, 0x01d2, 0x00f2,
+ 0x016b, 0x00fa, 0x01d4, 0x00f9, 0x01d6, 0x01d8, 0x01da, 0x01dc,
+ 0x00fc, 0x00ea, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x3105, 0x3106, 0x3107, 0x3108,
+ 0x3109, 0x310a, 0x310b, 0x310c, 0x310d, 0x310e, 0x310f, 0x3110,
+ 0x3111, 0x3112, 0x3113, 0x3114, 0x3115, 0x3116, 0x3117, 0x3118,
+ 0x3119, 0x311a, 0x311b, 0x311c, 0x311d, 0x311e, 0x311f, 0x3120,
+ 0x3121, 0x3122, 0x3123, 0x3124, 0x3125, 0x3126, 0x3127, 0x3128,
+ 0x3129, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ /* 0x29 */
+ 0xfffd, 0xfffd, 0xfffd, 0x2500, 0x2501, 0x2502, 0x2503, 0x2504,
+ 0x2505, 0x2506, 0x2507, 0x2508, 0x2509, 0x250a, 0x250b, 0x250c,
+ 0x250d, 0x250e, 0x250f, 0x2510, 0x2511, 0x2512, 0x2513, 0x2514,
+ 0x2515, 0x2516, 0x2517, 0x2518, 0x2519, 0x251a, 0x251b, 0x251c,
+ 0x251d, 0x251e, 0x251f, 0x2520, 0x2521, 0x2522, 0x2523, 0x2524,
+ 0x2525, 0x2526, 0x2527, 0x2528, 0x2529, 0x252a, 0x252b, 0x252c,
+ 0x252d, 0x252e, 0x252f, 0x2530, 0x2531, 0x2532, 0x2533, 0x2534,
+ 0x2535, 0x2536, 0x2537, 0x2538, 0x2539, 0x253a, 0x253b, 0x253c,
+ 0x253d, 0x253e, 0x253f, 0x2540, 0x2541, 0x2542, 0x2543, 0x2544,
+ 0x2545, 0x2546, 0x2547, 0x2548, 0x2549, 0x254a, 0x254b,
+};
+static const unsigned short gb2312_2uni_page30[6768] = {
+ /* 0x30 */
+ 0x554a, 0x963f, 0x57c3, 0x6328, 0x54ce, 0x5509, 0x54c0, 0x7691,
+ 0x764c, 0x853c, 0x77ee, 0x827e, 0x788d, 0x7231, 0x9698, 0x978d,
+ 0x6c28, 0x5b89, 0x4ffa, 0x6309, 0x6697, 0x5cb8, 0x80fa, 0x6848,
+ 0x80ae, 0x6602, 0x76ce, 0x51f9, 0x6556, 0x71ac, 0x7ff1, 0x8884,
+ 0x50b2, 0x5965, 0x61ca, 0x6fb3, 0x82ad, 0x634c, 0x6252, 0x53ed,
+ 0x5427, 0x7b06, 0x516b, 0x75a4, 0x5df4, 0x62d4, 0x8dcb, 0x9776,
+ 0x628a, 0x8019, 0x575d, 0x9738, 0x7f62, 0x7238, 0x767d, 0x67cf,
+ 0x767e, 0x6446, 0x4f70, 0x8d25, 0x62dc, 0x7a17, 0x6591, 0x73ed,
+ 0x642c, 0x6273, 0x822c, 0x9881, 0x677f, 0x7248, 0x626e, 0x62cc,
+ 0x4f34, 0x74e3, 0x534a, 0x529e, 0x7eca, 0x90a6, 0x5e2e, 0x6886,
+ 0x699c, 0x8180, 0x7ed1, 0x68d2, 0x78c5, 0x868c, 0x9551, 0x508d,
+ 0x8c24, 0x82de, 0x80de, 0x5305, 0x8912, 0x5265,
+ /* 0x31 */
+ 0x8584, 0x96f9, 0x4fdd, 0x5821, 0x9971, 0x5b9d, 0x62b1, 0x62a5,
+ 0x66b4, 0x8c79, 0x9c8d, 0x7206, 0x676f, 0x7891, 0x60b2, 0x5351,
+ 0x5317, 0x8f88, 0x80cc, 0x8d1d, 0x94a1, 0x500d, 0x72c8, 0x5907,
+ 0x60eb, 0x7119, 0x88ab, 0x5954, 0x82ef, 0x672c, 0x7b28, 0x5d29,
+ 0x7ef7, 0x752d, 0x6cf5, 0x8e66, 0x8ff8, 0x903c, 0x9f3b, 0x6bd4,
+ 0x9119, 0x7b14, 0x5f7c, 0x78a7, 0x84d6, 0x853d, 0x6bd5, 0x6bd9,
+ 0x6bd6, 0x5e01, 0x5e87, 0x75f9, 0x95ed, 0x655d, 0x5f0a, 0x5fc5,
+ 0x8f9f, 0x58c1, 0x81c2, 0x907f, 0x965b, 0x97ad, 0x8fb9, 0x7f16,
+ 0x8d2c, 0x6241, 0x4fbf, 0x53d8, 0x535e, 0x8fa8, 0x8fa9, 0x8fab,
+ 0x904d, 0x6807, 0x5f6a, 0x8198, 0x8868, 0x9cd6, 0x618b, 0x522b,
+ 0x762a, 0x5f6c, 0x658c, 0x6fd2, 0x6ee8, 0x5bbe, 0x6448, 0x5175,
+ 0x51b0, 0x67c4, 0x4e19, 0x79c9, 0x997c, 0x70b3,
+ /* 0x32 */
+ 0x75c5, 0x5e76, 0x73bb, 0x83e0, 0x64ad, 0x62e8, 0x94b5, 0x6ce2,
+ 0x535a, 0x52c3, 0x640f, 0x94c2, 0x7b94, 0x4f2f, 0x5e1b, 0x8236,
+ 0x8116, 0x818a, 0x6e24, 0x6cca, 0x9a73, 0x6355, 0x535c, 0x54fa,
+ 0x8865, 0x57e0, 0x4e0d, 0x5e03, 0x6b65, 0x7c3f, 0x90e8, 0x6016,
+ 0x64e6, 0x731c, 0x88c1, 0x6750, 0x624d, 0x8d22, 0x776c, 0x8e29,
+ 0x91c7, 0x5f69, 0x83dc, 0x8521, 0x9910, 0x53c2, 0x8695, 0x6b8b,
+ 0x60ed, 0x60e8, 0x707f, 0x82cd, 0x8231, 0x4ed3, 0x6ca7, 0x85cf,
+ 0x64cd, 0x7cd9, 0x69fd, 0x66f9, 0x8349, 0x5395, 0x7b56, 0x4fa7,
+ 0x518c, 0x6d4b, 0x5c42, 0x8e6d, 0x63d2, 0x53c9, 0x832c, 0x8336,
+ 0x67e5, 0x78b4, 0x643d, 0x5bdf, 0x5c94, 0x5dee, 0x8be7, 0x62c6,
+ 0x67f4, 0x8c7a, 0x6400, 0x63ba, 0x8749, 0x998b, 0x8c17, 0x7f20,
+ 0x94f2, 0x4ea7, 0x9610, 0x98a4, 0x660c, 0x7316,
+ /* 0x33 */
+ 0x573a, 0x5c1d, 0x5e38, 0x957f, 0x507f, 0x80a0, 0x5382, 0x655e,
+ 0x7545, 0x5531, 0x5021, 0x8d85, 0x6284, 0x949e, 0x671d, 0x5632,
+ 0x6f6e, 0x5de2, 0x5435, 0x7092, 0x8f66, 0x626f, 0x64a4, 0x63a3,
+ 0x5f7b, 0x6f88, 0x90f4, 0x81e3, 0x8fb0, 0x5c18, 0x6668, 0x5ff1,
+ 0x6c89, 0x9648, 0x8d81, 0x886c, 0x6491, 0x79f0, 0x57ce, 0x6a59,
+ 0x6210, 0x5448, 0x4e58, 0x7a0b, 0x60e9, 0x6f84, 0x8bda, 0x627f,
+ 0x901e, 0x9a8b, 0x79e4, 0x5403, 0x75f4, 0x6301, 0x5319, 0x6c60,
+ 0x8fdf, 0x5f1b, 0x9a70, 0x803b, 0x9f7f, 0x4f88, 0x5c3a, 0x8d64,
+ 0x7fc5, 0x65a5, 0x70bd, 0x5145, 0x51b2, 0x866b, 0x5d07, 0x5ba0,
+ 0x62bd, 0x916c, 0x7574, 0x8e0c, 0x7a20, 0x6101, 0x7b79, 0x4ec7,
+ 0x7ef8, 0x7785, 0x4e11, 0x81ed, 0x521d, 0x51fa, 0x6a71, 0x53a8,
+ 0x8e87, 0x9504, 0x96cf, 0x6ec1, 0x9664, 0x695a,
+ /* 0x34 */
+ 0x7840, 0x50a8, 0x77d7, 0x6410, 0x89e6, 0x5904, 0x63e3, 0x5ddd,
+ 0x7a7f, 0x693d, 0x4f20, 0x8239, 0x5598, 0x4e32, 0x75ae, 0x7a97,
+ 0x5e62, 0x5e8a, 0x95ef, 0x521b, 0x5439, 0x708a, 0x6376, 0x9524,
+ 0x5782, 0x6625, 0x693f, 0x9187, 0x5507, 0x6df3, 0x7eaf, 0x8822,
+ 0x6233, 0x7ef0, 0x75b5, 0x8328, 0x78c1, 0x96cc, 0x8f9e, 0x6148,
+ 0x74f7, 0x8bcd, 0x6b64, 0x523a, 0x8d50, 0x6b21, 0x806a, 0x8471,
+ 0x56f1, 0x5306, 0x4ece, 0x4e1b, 0x51d1, 0x7c97, 0x918b, 0x7c07,
+ 0x4fc3, 0x8e7f, 0x7be1, 0x7a9c, 0x6467, 0x5d14, 0x50ac, 0x8106,
+ 0x7601, 0x7cb9, 0x6dec, 0x7fe0, 0x6751, 0x5b58, 0x5bf8, 0x78cb,
+ 0x64ae, 0x6413, 0x63aa, 0x632b, 0x9519, 0x642d, 0x8fbe, 0x7b54,
+ 0x7629, 0x6253, 0x5927, 0x5446, 0x6b79, 0x50a3, 0x6234, 0x5e26,
+ 0x6b86, 0x4ee3, 0x8d37, 0x888b, 0x5f85, 0x902e,
+ /* 0x35 */
+ 0x6020, 0x803d, 0x62c5, 0x4e39, 0x5355, 0x90f8, 0x63b8, 0x80c6,
+ 0x65e6, 0x6c2e, 0x4f46, 0x60ee, 0x6de1, 0x8bde, 0x5f39, 0x86cb,
+ 0x5f53, 0x6321, 0x515a, 0x8361, 0x6863, 0x5200, 0x6363, 0x8e48,
+ 0x5012, 0x5c9b, 0x7977, 0x5bfc, 0x5230, 0x7a3b, 0x60bc, 0x9053,
+ 0x76d7, 0x5fb7, 0x5f97, 0x7684, 0x8e6c, 0x706f, 0x767b, 0x7b49,
+ 0x77aa, 0x51f3, 0x9093, 0x5824, 0x4f4e, 0x6ef4, 0x8fea, 0x654c,
+ 0x7b1b, 0x72c4, 0x6da4, 0x7fdf, 0x5ae1, 0x62b5, 0x5e95, 0x5730,
+ 0x8482, 0x7b2c, 0x5e1d, 0x5f1f, 0x9012, 0x7f14, 0x98a0, 0x6382,
+ 0x6ec7, 0x7898, 0x70b9, 0x5178, 0x975b, 0x57ab, 0x7535, 0x4f43,
+ 0x7538, 0x5e97, 0x60e6, 0x5960, 0x6dc0, 0x6bbf, 0x7889, 0x53fc,
+ 0x96d5, 0x51cb, 0x5201, 0x6389, 0x540a, 0x9493, 0x8c03, 0x8dcc,
+ 0x7239, 0x789f, 0x8776, 0x8fed, 0x8c0d, 0x53e0,
+ /* 0x36 */
+ 0x4e01, 0x76ef, 0x53ee, 0x9489, 0x9876, 0x9f0e, 0x952d, 0x5b9a,
+ 0x8ba2, 0x4e22, 0x4e1c, 0x51ac, 0x8463, 0x61c2, 0x52a8, 0x680b,
+ 0x4f97, 0x606b, 0x51bb, 0x6d1e, 0x515c, 0x6296, 0x6597, 0x9661,
+ 0x8c46, 0x9017, 0x75d8, 0x90fd, 0x7763, 0x6bd2, 0x728a, 0x72ec,
+ 0x8bfb, 0x5835, 0x7779, 0x8d4c, 0x675c, 0x9540, 0x809a, 0x5ea6,
+ 0x6e21, 0x5992, 0x7aef, 0x77ed, 0x953b, 0x6bb5, 0x65ad, 0x7f0e,
+ 0x5806, 0x5151, 0x961f, 0x5bf9, 0x58a9, 0x5428, 0x8e72, 0x6566,
+ 0x987f, 0x56e4, 0x949d, 0x76fe, 0x9041, 0x6387, 0x54c6, 0x591a,
+ 0x593a, 0x579b, 0x8eb2, 0x6735, 0x8dfa, 0x8235, 0x5241, 0x60f0,
+ 0x5815, 0x86fe, 0x5ce8, 0x9e45, 0x4fc4, 0x989d, 0x8bb9, 0x5a25,
+ 0x6076, 0x5384, 0x627c, 0x904f, 0x9102, 0x997f, 0x6069, 0x800c,
+ 0x513f, 0x8033, 0x5c14, 0x9975, 0x6d31, 0x4e8c,
+ /* 0x37 */
+ 0x8d30, 0x53d1, 0x7f5a, 0x7b4f, 0x4f10, 0x4e4f, 0x9600, 0x6cd5,
+ 0x73d0, 0x85e9, 0x5e06, 0x756a, 0x7ffb, 0x6a0a, 0x77fe, 0x9492,
+ 0x7e41, 0x51e1, 0x70e6, 0x53cd, 0x8fd4, 0x8303, 0x8d29, 0x72af,
+ 0x996d, 0x6cdb, 0x574a, 0x82b3, 0x65b9, 0x80aa, 0x623f, 0x9632,
+ 0x59a8, 0x4eff, 0x8bbf, 0x7eba, 0x653e, 0x83f2, 0x975e, 0x5561,
+ 0x98de, 0x80a5, 0x532a, 0x8bfd, 0x5420, 0x80ba, 0x5e9f, 0x6cb8,
+ 0x8d39, 0x82ac, 0x915a, 0x5429, 0x6c1b, 0x5206, 0x7eb7, 0x575f,
+ 0x711a, 0x6c7e, 0x7c89, 0x594b, 0x4efd, 0x5fff, 0x6124, 0x7caa,
+ 0x4e30, 0x5c01, 0x67ab, 0x8702, 0x5cf0, 0x950b, 0x98ce, 0x75af,
+ 0x70fd, 0x9022, 0x51af, 0x7f1d, 0x8bbd, 0x5949, 0x51e4, 0x4f5b,
+ 0x5426, 0x592b, 0x6577, 0x80a4, 0x5b75, 0x6276, 0x62c2, 0x8f90,
+ 0x5e45, 0x6c1f, 0x7b26, 0x4f0f, 0x4fd8, 0x670d,
+ /* 0x38 */
+ 0x6d6e, 0x6daa, 0x798f, 0x88b1, 0x5f17, 0x752b, 0x629a, 0x8f85,
+ 0x4fef, 0x91dc, 0x65a7, 0x812f, 0x8151, 0x5e9c, 0x8150, 0x8d74,
+ 0x526f, 0x8986, 0x8d4b, 0x590d, 0x5085, 0x4ed8, 0x961c, 0x7236,
+ 0x8179, 0x8d1f, 0x5bcc, 0x8ba3, 0x9644, 0x5987, 0x7f1a, 0x5490,
+ 0x5676, 0x560e, 0x8be5, 0x6539, 0x6982, 0x9499, 0x76d6, 0x6e89,
+ 0x5e72, 0x7518, 0x6746, 0x67d1, 0x7aff, 0x809d, 0x8d76, 0x611f,
+ 0x79c6, 0x6562, 0x8d63, 0x5188, 0x521a, 0x94a2, 0x7f38, 0x809b,
+ 0x7eb2, 0x5c97, 0x6e2f, 0x6760, 0x7bd9, 0x768b, 0x9ad8, 0x818f,
+ 0x7f94, 0x7cd5, 0x641e, 0x9550, 0x7a3f, 0x544a, 0x54e5, 0x6b4c,
+ 0x6401, 0x6208, 0x9e3d, 0x80f3, 0x7599, 0x5272, 0x9769, 0x845b,
+ 0x683c, 0x86e4, 0x9601, 0x9694, 0x94ec, 0x4e2a, 0x5404, 0x7ed9,
+ 0x6839, 0x8ddf, 0x8015, 0x66f4, 0x5e9a, 0x7fb9,
+ /* 0x39 */
+ 0x57c2, 0x803f, 0x6897, 0x5de5, 0x653b, 0x529f, 0x606d, 0x9f9a,
+ 0x4f9b, 0x8eac, 0x516c, 0x5bab, 0x5f13, 0x5de9, 0x6c5e, 0x62f1,
+ 0x8d21, 0x5171, 0x94a9, 0x52fe, 0x6c9f, 0x82df, 0x72d7, 0x57a2,
+ 0x6784, 0x8d2d, 0x591f, 0x8f9c, 0x83c7, 0x5495, 0x7b8d, 0x4f30,
+ 0x6cbd, 0x5b64, 0x59d1, 0x9f13, 0x53e4, 0x86ca, 0x9aa8, 0x8c37,
+ 0x80a1, 0x6545, 0x987e, 0x56fa, 0x96c7, 0x522e, 0x74dc, 0x5250,
+ 0x5be1, 0x6302, 0x8902, 0x4e56, 0x62d0, 0x602a, 0x68fa, 0x5173,
+ 0x5b98, 0x51a0, 0x89c2, 0x7ba1, 0x9986, 0x7f50, 0x60ef, 0x704c,
+ 0x8d2f, 0x5149, 0x5e7f, 0x901b, 0x7470, 0x89c4, 0x572d, 0x7845,
+ 0x5f52, 0x9f9f, 0x95fa, 0x8f68, 0x9b3c, 0x8be1, 0x7678, 0x6842,
+ 0x67dc, 0x8dea, 0x8d35, 0x523d, 0x8f8a, 0x6eda, 0x68cd, 0x9505,
+ 0x90ed, 0x56fd, 0x679c, 0x88f9, 0x8fc7, 0x54c8,
+ /* 0x3a */
+ 0x9ab8, 0x5b69, 0x6d77, 0x6c26, 0x4ea5, 0x5bb3, 0x9a87, 0x9163,
+ 0x61a8, 0x90af, 0x97e9, 0x542b, 0x6db5, 0x5bd2, 0x51fd, 0x558a,
+ 0x7f55, 0x7ff0, 0x64bc, 0x634d, 0x65f1, 0x61be, 0x608d, 0x710a,
+ 0x6c57, 0x6c49, 0x592f, 0x676d, 0x822a, 0x58d5, 0x568e, 0x8c6a,
+ 0x6beb, 0x90dd, 0x597d, 0x8017, 0x53f7, 0x6d69, 0x5475, 0x559d,
+ 0x8377, 0x83cf, 0x6838, 0x79be, 0x548c, 0x4f55, 0x5408, 0x76d2,
+ 0x8c89, 0x9602, 0x6cb3, 0x6db8, 0x8d6b, 0x8910, 0x9e64, 0x8d3a,
+ 0x563f, 0x9ed1, 0x75d5, 0x5f88, 0x72e0, 0x6068, 0x54fc, 0x4ea8,
+ 0x6a2a, 0x8861, 0x6052, 0x8f70, 0x54c4, 0x70d8, 0x8679, 0x9e3f,
+ 0x6d2a, 0x5b8f, 0x5f18, 0x7ea2, 0x5589, 0x4faf, 0x7334, 0x543c,
+ 0x539a, 0x5019, 0x540e, 0x547c, 0x4e4e, 0x5ffd, 0x745a, 0x58f6,
+ 0x846b, 0x80e1, 0x8774, 0x72d0, 0x7cca, 0x6e56,
+ /* 0x3b */
+ 0x5f27, 0x864e, 0x552c, 0x62a4, 0x4e92, 0x6caa, 0x6237, 0x82b1,
+ 0x54d7, 0x534e, 0x733e, 0x6ed1, 0x753b, 0x5212, 0x5316, 0x8bdd,
+ 0x69d0, 0x5f8a, 0x6000, 0x6dee, 0x574f, 0x6b22, 0x73af, 0x6853,
+ 0x8fd8, 0x7f13, 0x6362, 0x60a3, 0x5524, 0x75ea, 0x8c62, 0x7115,
+ 0x6da3, 0x5ba6, 0x5e7b, 0x8352, 0x614c, 0x9ec4, 0x78fa, 0x8757,
+ 0x7c27, 0x7687, 0x51f0, 0x60f6, 0x714c, 0x6643, 0x5e4c, 0x604d,
+ 0x8c0e, 0x7070, 0x6325, 0x8f89, 0x5fbd, 0x6062, 0x86d4, 0x56de,
+ 0x6bc1, 0x6094, 0x6167, 0x5349, 0x60e0, 0x6666, 0x8d3f, 0x79fd,
+ 0x4f1a, 0x70e9, 0x6c47, 0x8bb3, 0x8bf2, 0x7ed8, 0x8364, 0x660f,
+ 0x5a5a, 0x9b42, 0x6d51, 0x6df7, 0x8c41, 0x6d3b, 0x4f19, 0x706b,
+ 0x83b7, 0x6216, 0x60d1, 0x970d, 0x8d27, 0x7978, 0x51fb, 0x573e,
+ 0x57fa, 0x673a, 0x7578, 0x7a3d, 0x79ef, 0x7b95,
+ /* 0x3c */
+ 0x808c, 0x9965, 0x8ff9, 0x6fc0, 0x8ba5, 0x9e21, 0x59ec, 0x7ee9,
+ 0x7f09, 0x5409, 0x6781, 0x68d8, 0x8f91, 0x7c4d, 0x96c6, 0x53ca,
+ 0x6025, 0x75be, 0x6c72, 0x5373, 0x5ac9, 0x7ea7, 0x6324, 0x51e0,
+ 0x810a, 0x5df1, 0x84df, 0x6280, 0x5180, 0x5b63, 0x4f0e, 0x796d,
+ 0x5242, 0x60b8, 0x6d4e, 0x5bc4, 0x5bc2, 0x8ba1, 0x8bb0, 0x65e2,
+ 0x5fcc, 0x9645, 0x5993, 0x7ee7, 0x7eaa, 0x5609, 0x67b7, 0x5939,
+ 0x4f73, 0x5bb6, 0x52a0, 0x835a, 0x988a, 0x8d3e, 0x7532, 0x94be,
+ 0x5047, 0x7a3c, 0x4ef7, 0x67b6, 0x9a7e, 0x5ac1, 0x6b7c, 0x76d1,
+ 0x575a, 0x5c16, 0x7b3a, 0x95f4, 0x714e, 0x517c, 0x80a9, 0x8270,
+ 0x5978, 0x7f04, 0x8327, 0x68c0, 0x67ec, 0x78b1, 0x7877, 0x62e3,
+ 0x6361, 0x7b80, 0x4fed, 0x526a, 0x51cf, 0x8350, 0x69db, 0x9274,
+ 0x8df5, 0x8d31, 0x89c1, 0x952e, 0x7bad, 0x4ef6,
+ /* 0x3d */
+ 0x5065, 0x8230, 0x5251, 0x996f, 0x6e10, 0x6e85, 0x6da7, 0x5efa,
+ 0x50f5, 0x59dc, 0x5c06, 0x6d46, 0x6c5f, 0x7586, 0x848b, 0x6868,
+ 0x5956, 0x8bb2, 0x5320, 0x9171, 0x964d, 0x8549, 0x6912, 0x7901,
+ 0x7126, 0x80f6, 0x4ea4, 0x90ca, 0x6d47, 0x9a84, 0x5a07, 0x56bc,
+ 0x6405, 0x94f0, 0x77eb, 0x4fa5, 0x811a, 0x72e1, 0x89d2, 0x997a,
+ 0x7f34, 0x7ede, 0x527f, 0x6559, 0x9175, 0x8f7f, 0x8f83, 0x53eb,
+ 0x7a96, 0x63ed, 0x63a5, 0x7686, 0x79f8, 0x8857, 0x9636, 0x622a,
+ 0x52ab, 0x8282, 0x6854, 0x6770, 0x6377, 0x776b, 0x7aed, 0x6d01,
+ 0x7ed3, 0x89e3, 0x59d0, 0x6212, 0x85c9, 0x82a5, 0x754c, 0x501f,
+ 0x4ecb, 0x75a5, 0x8beb, 0x5c4a, 0x5dfe, 0x7b4b, 0x65a4, 0x91d1,
+ 0x4eca, 0x6d25, 0x895f, 0x7d27, 0x9526, 0x4ec5, 0x8c28, 0x8fdb,
+ 0x9773, 0x664b, 0x7981, 0x8fd1, 0x70ec, 0x6d78,
+ /* 0x3e */
+ 0x5c3d, 0x52b2, 0x8346, 0x5162, 0x830e, 0x775b, 0x6676, 0x9cb8,
+ 0x4eac, 0x60ca, 0x7cbe, 0x7cb3, 0x7ecf, 0x4e95, 0x8b66, 0x666f,
+ 0x9888, 0x9759, 0x5883, 0x656c, 0x955c, 0x5f84, 0x75c9, 0x9756,
+ 0x7adf, 0x7ade, 0x51c0, 0x70af, 0x7a98, 0x63ea, 0x7a76, 0x7ea0,
+ 0x7396, 0x97ed, 0x4e45, 0x7078, 0x4e5d, 0x9152, 0x53a9, 0x6551,
+ 0x65e7, 0x81fc, 0x8205, 0x548e, 0x5c31, 0x759a, 0x97a0, 0x62d8,
+ 0x72d9, 0x75bd, 0x5c45, 0x9a79, 0x83ca, 0x5c40, 0x5480, 0x77e9,
+ 0x4e3e, 0x6cae, 0x805a, 0x62d2, 0x636e, 0x5de8, 0x5177, 0x8ddd,
+ 0x8e1e, 0x952f, 0x4ff1, 0x53e5, 0x60e7, 0x70ac, 0x5267, 0x6350,
+ 0x9e43, 0x5a1f, 0x5026, 0x7737, 0x5377, 0x7ee2, 0x6485, 0x652b,
+ 0x6289, 0x6398, 0x5014, 0x7235, 0x89c9, 0x51b3, 0x8bc0, 0x7edd,
+ 0x5747, 0x83cc, 0x94a7, 0x519b, 0x541b, 0x5cfb,
+ /* 0x3f */
+ 0x4fca, 0x7ae3, 0x6d5a, 0x90e1, 0x9a8f, 0x5580, 0x5496, 0x5361,
+ 0x54af, 0x5f00, 0x63e9, 0x6977, 0x51ef, 0x6168, 0x520a, 0x582a,
+ 0x52d8, 0x574e, 0x780d, 0x770b, 0x5eb7, 0x6177, 0x7ce0, 0x625b,
+ 0x6297, 0x4ea2, 0x7095, 0x8003, 0x62f7, 0x70e4, 0x9760, 0x5777,
+ 0x82db, 0x67ef, 0x68f5, 0x78d5, 0x9897, 0x79d1, 0x58f3, 0x54b3,
+ 0x53ef, 0x6e34, 0x514b, 0x523b, 0x5ba2, 0x8bfe, 0x80af, 0x5543,
+ 0x57a6, 0x6073, 0x5751, 0x542d, 0x7a7a, 0x6050, 0x5b54, 0x63a7,
+ 0x62a0, 0x53e3, 0x6263, 0x5bc7, 0x67af, 0x54ed, 0x7a9f, 0x82e6,
+ 0x9177, 0x5e93, 0x88e4, 0x5938, 0x57ae, 0x630e, 0x8de8, 0x80ef,
+ 0x5757, 0x7b77, 0x4fa9, 0x5feb, 0x5bbd, 0x6b3e, 0x5321, 0x7b50,
+ 0x72c2, 0x6846, 0x77ff, 0x7736, 0x65f7, 0x51b5, 0x4e8f, 0x76d4,
+ 0x5cbf, 0x7aa5, 0x8475, 0x594e, 0x9b41, 0x5080,
+ /* 0x40 */
+ 0x9988, 0x6127, 0x6e83, 0x5764, 0x6606, 0x6346, 0x56f0, 0x62ec,
+ 0x6269, 0x5ed3, 0x9614, 0x5783, 0x62c9, 0x5587, 0x8721, 0x814a,
+ 0x8fa3, 0x5566, 0x83b1, 0x6765, 0x8d56, 0x84dd, 0x5a6a, 0x680f,
+ 0x62e6, 0x7bee, 0x9611, 0x5170, 0x6f9c, 0x8c30, 0x63fd, 0x89c8,
+ 0x61d2, 0x7f06, 0x70c2, 0x6ee5, 0x7405, 0x6994, 0x72fc, 0x5eca,
+ 0x90ce, 0x6717, 0x6d6a, 0x635e, 0x52b3, 0x7262, 0x8001, 0x4f6c,
+ 0x59e5, 0x916a, 0x70d9, 0x6d9d, 0x52d2, 0x4e50, 0x96f7, 0x956d,
+ 0x857e, 0x78ca, 0x7d2f, 0x5121, 0x5792, 0x64c2, 0x808b, 0x7c7b,
+ 0x6cea, 0x68f1, 0x695e, 0x51b7, 0x5398, 0x68a8, 0x7281, 0x9ece,
+ 0x7bf1, 0x72f8, 0x79bb, 0x6f13, 0x7406, 0x674e, 0x91cc, 0x9ca4,
+ 0x793c, 0x8389, 0x8354, 0x540f, 0x6817, 0x4e3d, 0x5389, 0x52b1,
+ 0x783e, 0x5386, 0x5229, 0x5088, 0x4f8b, 0x4fd0,
+ /* 0x41 */
+ 0x75e2, 0x7acb, 0x7c92, 0x6ca5, 0x96b6, 0x529b, 0x7483, 0x54e9,
+ 0x4fe9, 0x8054, 0x83b2, 0x8fde, 0x9570, 0x5ec9, 0x601c, 0x6d9f,
+ 0x5e18, 0x655b, 0x8138, 0x94fe, 0x604b, 0x70bc, 0x7ec3, 0x7cae,
+ 0x51c9, 0x6881, 0x7cb1, 0x826f, 0x4e24, 0x8f86, 0x91cf, 0x667e,
+ 0x4eae, 0x8c05, 0x64a9, 0x804a, 0x50da, 0x7597, 0x71ce, 0x5be5,
+ 0x8fbd, 0x6f66, 0x4e86, 0x6482, 0x9563, 0x5ed6, 0x6599, 0x5217,
+ 0x88c2, 0x70c8, 0x52a3, 0x730e, 0x7433, 0x6797, 0x78f7, 0x9716,
+ 0x4e34, 0x90bb, 0x9cde, 0x6dcb, 0x51db, 0x8d41, 0x541d, 0x62ce,
+ 0x73b2, 0x83f1, 0x96f6, 0x9f84, 0x94c3, 0x4f36, 0x7f9a, 0x51cc,
+ 0x7075, 0x9675, 0x5cad, 0x9886, 0x53e6, 0x4ee4, 0x6e9c, 0x7409,
+ 0x69b4, 0x786b, 0x998f, 0x7559, 0x5218, 0x7624, 0x6d41, 0x67f3,
+ 0x516d, 0x9f99, 0x804b, 0x5499, 0x7b3c, 0x7abf,
+ /* 0x42 */
+ 0x9686, 0x5784, 0x62e2, 0x9647, 0x697c, 0x5a04, 0x6402, 0x7bd3,
+ 0x6f0f, 0x964b, 0x82a6, 0x5362, 0x9885, 0x5e90, 0x7089, 0x63b3,
+ 0x5364, 0x864f, 0x9c81, 0x9e93, 0x788c, 0x9732, 0x8def, 0x8d42,
+ 0x9e7f, 0x6f5e, 0x7984, 0x5f55, 0x9646, 0x622e, 0x9a74, 0x5415,
+ 0x94dd, 0x4fa3, 0x65c5, 0x5c65, 0x5c61, 0x7f15, 0x8651, 0x6c2f,
+ 0x5f8b, 0x7387, 0x6ee4, 0x7eff, 0x5ce6, 0x631b, 0x5b6a, 0x6ee6,
+ 0x5375, 0x4e71, 0x63a0, 0x7565, 0x62a1, 0x8f6e, 0x4f26, 0x4ed1,
+ 0x6ca6, 0x7eb6, 0x8bba, 0x841d, 0x87ba, 0x7f57, 0x903b, 0x9523,
+ 0x7ba9, 0x9aa1, 0x88f8, 0x843d, 0x6d1b, 0x9a86, 0x7edc, 0x5988,
+ 0x9ebb, 0x739b, 0x7801, 0x8682, 0x9a6c, 0x9a82, 0x561b, 0x5417,
+ 0x57cb, 0x4e70, 0x9ea6, 0x5356, 0x8fc8, 0x8109, 0x7792, 0x9992,
+ 0x86ee, 0x6ee1, 0x8513, 0x66fc, 0x6162, 0x6f2b,
+ /* 0x43 */
+ 0x8c29, 0x8292, 0x832b, 0x76f2, 0x6c13, 0x5fd9, 0x83bd, 0x732b,
+ 0x8305, 0x951a, 0x6bdb, 0x77db, 0x94c6, 0x536f, 0x8302, 0x5192,
+ 0x5e3d, 0x8c8c, 0x8d38, 0x4e48, 0x73ab, 0x679a, 0x6885, 0x9176,
+ 0x9709, 0x7164, 0x6ca1, 0x7709, 0x5a92, 0x9541, 0x6bcf, 0x7f8e,
+ 0x6627, 0x5bd0, 0x59b9, 0x5a9a, 0x95e8, 0x95f7, 0x4eec, 0x840c,
+ 0x8499, 0x6aac, 0x76df, 0x9530, 0x731b, 0x68a6, 0x5b5f, 0x772f,
+ 0x919a, 0x9761, 0x7cdc, 0x8ff7, 0x8c1c, 0x5f25, 0x7c73, 0x79d8,
+ 0x89c5, 0x6ccc, 0x871c, 0x5bc6, 0x5e42, 0x68c9, 0x7720, 0x7ef5,
+ 0x5195, 0x514d, 0x52c9, 0x5a29, 0x7f05, 0x9762, 0x82d7, 0x63cf,
+ 0x7784, 0x85d0, 0x79d2, 0x6e3a, 0x5e99, 0x5999, 0x8511, 0x706d,
+ 0x6c11, 0x62bf, 0x76bf, 0x654f, 0x60af, 0x95fd, 0x660e, 0x879f,
+ 0x9e23, 0x94ed, 0x540d, 0x547d, 0x8c2c, 0x6478,
+ /* 0x44 */
+ 0x6479, 0x8611, 0x6a21, 0x819c, 0x78e8, 0x6469, 0x9b54, 0x62b9,
+ 0x672b, 0x83ab, 0x58a8, 0x9ed8, 0x6cab, 0x6f20, 0x5bde, 0x964c,
+ 0x8c0b, 0x725f, 0x67d0, 0x62c7, 0x7261, 0x4ea9, 0x59c6, 0x6bcd,
+ 0x5893, 0x66ae, 0x5e55, 0x52df, 0x6155, 0x6728, 0x76ee, 0x7766,
+ 0x7267, 0x7a46, 0x62ff, 0x54ea, 0x5450, 0x94a0, 0x90a3, 0x5a1c,
+ 0x7eb3, 0x6c16, 0x4e43, 0x5976, 0x8010, 0x5948, 0x5357, 0x7537,
+ 0x96be, 0x56ca, 0x6320, 0x8111, 0x607c, 0x95f9, 0x6dd6, 0x5462,
+ 0x9981, 0x5185, 0x5ae9, 0x80fd, 0x59ae, 0x9713, 0x502a, 0x6ce5,
+ 0x5c3c, 0x62df, 0x4f60, 0x533f, 0x817b, 0x9006, 0x6eba, 0x852b,
+ 0x62c8, 0x5e74, 0x78be, 0x64b5, 0x637b, 0x5ff5, 0x5a18, 0x917f,
+ 0x9e1f, 0x5c3f, 0x634f, 0x8042, 0x5b7d, 0x556e, 0x954a, 0x954d,
+ 0x6d85, 0x60a8, 0x67e0, 0x72de, 0x51dd, 0x5b81,
+ /* 0x45 */
+ 0x62e7, 0x6cde, 0x725b, 0x626d, 0x94ae, 0x7ebd, 0x8113, 0x6d53,
+ 0x519c, 0x5f04, 0x5974, 0x52aa, 0x6012, 0x5973, 0x6696, 0x8650,
+ 0x759f, 0x632a, 0x61e6, 0x7cef, 0x8bfa, 0x54e6, 0x6b27, 0x9e25,
+ 0x6bb4, 0x85d5, 0x5455, 0x5076, 0x6ca4, 0x556a, 0x8db4, 0x722c,
+ 0x5e15, 0x6015, 0x7436, 0x62cd, 0x6392, 0x724c, 0x5f98, 0x6e43,
+ 0x6d3e, 0x6500, 0x6f58, 0x76d8, 0x78d0, 0x76fc, 0x7554, 0x5224,
+ 0x53db, 0x4e53, 0x5e9e, 0x65c1, 0x802a, 0x80d6, 0x629b, 0x5486,
+ 0x5228, 0x70ae, 0x888d, 0x8dd1, 0x6ce1, 0x5478, 0x80da, 0x57f9,
+ 0x88f4, 0x8d54, 0x966a, 0x914d, 0x4f69, 0x6c9b, 0x55b7, 0x76c6,
+ 0x7830, 0x62a8, 0x70f9, 0x6f8e, 0x5f6d, 0x84ec, 0x68da, 0x787c,
+ 0x7bf7, 0x81a8, 0x670b, 0x9e4f, 0x6367, 0x78b0, 0x576f, 0x7812,
+ 0x9739, 0x6279, 0x62ab, 0x5288, 0x7435, 0x6bd7,
+ /* 0x46 */
+ 0x5564, 0x813e, 0x75b2, 0x76ae, 0x5339, 0x75de, 0x50fb, 0x5c41,
+ 0x8b6c, 0x7bc7, 0x504f, 0x7247, 0x9a97, 0x98d8, 0x6f02, 0x74e2,
+ 0x7968, 0x6487, 0x77a5, 0x62fc, 0x9891, 0x8d2b, 0x54c1, 0x8058,
+ 0x4e52, 0x576a, 0x82f9, 0x840d, 0x5e73, 0x51ed, 0x74f6, 0x8bc4,
+ 0x5c4f, 0x5761, 0x6cfc, 0x9887, 0x5a46, 0x7834, 0x9b44, 0x8feb,
+ 0x7c95, 0x5256, 0x6251, 0x94fa, 0x4ec6, 0x8386, 0x8461, 0x83e9,
+ 0x84b2, 0x57d4, 0x6734, 0x5703, 0x666e, 0x6d66, 0x8c31, 0x66dd,
+ 0x7011, 0x671f, 0x6b3a, 0x6816, 0x621a, 0x59bb, 0x4e03, 0x51c4,
+ 0x6f06, 0x67d2, 0x6c8f, 0x5176, 0x68cb, 0x5947, 0x6b67, 0x7566,
+ 0x5d0e, 0x8110, 0x9f50, 0x65d7, 0x7948, 0x7941, 0x9a91, 0x8d77,
+ 0x5c82, 0x4e5e, 0x4f01, 0x542f, 0x5951, 0x780c, 0x5668, 0x6c14,
+ 0x8fc4, 0x5f03, 0x6c7d, 0x6ce3, 0x8bab, 0x6390,
+ /* 0x47 */
+ 0x6070, 0x6d3d, 0x7275, 0x6266, 0x948e, 0x94c5, 0x5343, 0x8fc1,
+ 0x7b7e, 0x4edf, 0x8c26, 0x4e7e, 0x9ed4, 0x94b1, 0x94b3, 0x524d,
+ 0x6f5c, 0x9063, 0x6d45, 0x8c34, 0x5811, 0x5d4c, 0x6b20, 0x6b49,
+ 0x67aa, 0x545b, 0x8154, 0x7f8c, 0x5899, 0x8537, 0x5f3a, 0x62a2,
+ 0x6a47, 0x9539, 0x6572, 0x6084, 0x6865, 0x77a7, 0x4e54, 0x4fa8,
+ 0x5de7, 0x9798, 0x64ac, 0x7fd8, 0x5ced, 0x4fcf, 0x7a8d, 0x5207,
+ 0x8304, 0x4e14, 0x602f, 0x7a83, 0x94a6, 0x4fb5, 0x4eb2, 0x79e6,
+ 0x7434, 0x52e4, 0x82b9, 0x64d2, 0x79bd, 0x5bdd, 0x6c81, 0x9752,
+ 0x8f7b, 0x6c22, 0x503e, 0x537f, 0x6e05, 0x64ce, 0x6674, 0x6c30,
+ 0x60c5, 0x9877, 0x8bf7, 0x5e86, 0x743c, 0x7a77, 0x79cb, 0x4e18,
+ 0x90b1, 0x7403, 0x6c42, 0x56da, 0x914b, 0x6cc5, 0x8d8b, 0x533a,
+ 0x86c6, 0x66f2, 0x8eaf, 0x5c48, 0x9a71, 0x6e20,
+ /* 0x48 */
+ 0x53d6, 0x5a36, 0x9f8b, 0x8da3, 0x53bb, 0x5708, 0x98a7, 0x6743,
+ 0x919b, 0x6cc9, 0x5168, 0x75ca, 0x62f3, 0x72ac, 0x5238, 0x529d,
+ 0x7f3a, 0x7094, 0x7638, 0x5374, 0x9e4a, 0x69b7, 0x786e, 0x96c0,
+ 0x88d9, 0x7fa4, 0x7136, 0x71c3, 0x5189, 0x67d3, 0x74e4, 0x58e4,
+ 0x6518, 0x56b7, 0x8ba9, 0x9976, 0x6270, 0x7ed5, 0x60f9, 0x70ed,
+ 0x58ec, 0x4ec1, 0x4eba, 0x5fcd, 0x97e7, 0x4efb, 0x8ba4, 0x5203,
+ 0x598a, 0x7eab, 0x6254, 0x4ecd, 0x65e5, 0x620e, 0x8338, 0x84c9,
+ 0x8363, 0x878d, 0x7194, 0x6eb6, 0x5bb9, 0x7ed2, 0x5197, 0x63c9,
+ 0x67d4, 0x8089, 0x8339, 0x8815, 0x5112, 0x5b7a, 0x5982, 0x8fb1,
+ 0x4e73, 0x6c5d, 0x5165, 0x8925, 0x8f6f, 0x962e, 0x854a, 0x745e,
+ 0x9510, 0x95f0, 0x6da6, 0x82e5, 0x5f31, 0x6492, 0x6d12, 0x8428,
+ 0x816e, 0x9cc3, 0x585e, 0x8d5b, 0x4e09, 0x53c1,
+ /* 0x49 */
+ 0x4f1e, 0x6563, 0x6851, 0x55d3, 0x4e27, 0x6414, 0x9a9a, 0x626b,
+ 0x5ac2, 0x745f, 0x8272, 0x6da9, 0x68ee, 0x50e7, 0x838e, 0x7802,
+ 0x6740, 0x5239, 0x6c99, 0x7eb1, 0x50bb, 0x5565, 0x715e, 0x7b5b,
+ 0x6652, 0x73ca, 0x82eb, 0x6749, 0x5c71, 0x5220, 0x717d, 0x886b,
+ 0x95ea, 0x9655, 0x64c5, 0x8d61, 0x81b3, 0x5584, 0x6c55, 0x6247,
+ 0x7f2e, 0x5892, 0x4f24, 0x5546, 0x8d4f, 0x664c, 0x4e0a, 0x5c1a,
+ 0x88f3, 0x68a2, 0x634e, 0x7a0d, 0x70e7, 0x828d, 0x52fa, 0x97f6,
+ 0x5c11, 0x54e8, 0x90b5, 0x7ecd, 0x5962, 0x8d4a, 0x86c7, 0x820c,
+ 0x820d, 0x8d66, 0x6444, 0x5c04, 0x6151, 0x6d89, 0x793e, 0x8bbe,
+ 0x7837, 0x7533, 0x547b, 0x4f38, 0x8eab, 0x6df1, 0x5a20, 0x7ec5,
+ 0x795e, 0x6c88, 0x5ba1, 0x5a76, 0x751a, 0x80be, 0x614e, 0x6e17,
+ 0x58f0, 0x751f, 0x7525, 0x7272, 0x5347, 0x7ef3,
+ /* 0x4a */
+ 0x7701, 0x76db, 0x5269, 0x80dc, 0x5723, 0x5e08, 0x5931, 0x72ee,
+ 0x65bd, 0x6e7f, 0x8bd7, 0x5c38, 0x8671, 0x5341, 0x77f3, 0x62fe,
+ 0x65f6, 0x4ec0, 0x98df, 0x8680, 0x5b9e, 0x8bc6, 0x53f2, 0x77e2,
+ 0x4f7f, 0x5c4e, 0x9a76, 0x59cb, 0x5f0f, 0x793a, 0x58eb, 0x4e16,
+ 0x67ff, 0x4e8b, 0x62ed, 0x8a93, 0x901d, 0x52bf, 0x662f, 0x55dc,
+ 0x566c, 0x9002, 0x4ed5, 0x4f8d, 0x91ca, 0x9970, 0x6c0f, 0x5e02,
+ 0x6043, 0x5ba4, 0x89c6, 0x8bd5, 0x6536, 0x624b, 0x9996, 0x5b88,
+ 0x5bff, 0x6388, 0x552e, 0x53d7, 0x7626, 0x517d, 0x852c, 0x67a2,
+ 0x68b3, 0x6b8a, 0x6292, 0x8f93, 0x53d4, 0x8212, 0x6dd1, 0x758f,
+ 0x4e66, 0x8d4e, 0x5b70, 0x719f, 0x85af, 0x6691, 0x66d9, 0x7f72,
+ 0x8700, 0x9ecd, 0x9f20, 0x5c5e, 0x672f, 0x8ff0, 0x6811, 0x675f,
+ 0x620d, 0x7ad6, 0x5885, 0x5eb6, 0x6570, 0x6f31,
+ /* 0x4b */
+ 0x6055, 0x5237, 0x800d, 0x6454, 0x8870, 0x7529, 0x5e05, 0x6813,
+ 0x62f4, 0x971c, 0x53cc, 0x723d, 0x8c01, 0x6c34, 0x7761, 0x7a0e,
+ 0x542e, 0x77ac, 0x987a, 0x821c, 0x8bf4, 0x7855, 0x6714, 0x70c1,
+ 0x65af, 0x6495, 0x5636, 0x601d, 0x79c1, 0x53f8, 0x4e1d, 0x6b7b,
+ 0x8086, 0x5bfa, 0x55e3, 0x56db, 0x4f3a, 0x4f3c, 0x9972, 0x5df3,
+ 0x677e, 0x8038, 0x6002, 0x9882, 0x9001, 0x5b8b, 0x8bbc, 0x8bf5,
+ 0x641c, 0x8258, 0x64de, 0x55fd, 0x82cf, 0x9165, 0x4fd7, 0x7d20,
+ 0x901f, 0x7c9f, 0x50f3, 0x5851, 0x6eaf, 0x5bbf, 0x8bc9, 0x8083,
+ 0x9178, 0x849c, 0x7b97, 0x867d, 0x968b, 0x968f, 0x7ee5, 0x9ad3,
+ 0x788e, 0x5c81, 0x7a57, 0x9042, 0x96a7, 0x795f, 0x5b59, 0x635f,
+ 0x7b0b, 0x84d1, 0x68ad, 0x5506, 0x7f29, 0x7410, 0x7d22, 0x9501,
+ 0x6240, 0x584c, 0x4ed6, 0x5b83, 0x5979, 0x5854,
+ /* 0x4c */
+ 0x736d, 0x631e, 0x8e4b, 0x8e0f, 0x80ce, 0x82d4, 0x62ac, 0x53f0,
+ 0x6cf0, 0x915e, 0x592a, 0x6001, 0x6c70, 0x574d, 0x644a, 0x8d2a,
+ 0x762b, 0x6ee9, 0x575b, 0x6a80, 0x75f0, 0x6f6d, 0x8c2d, 0x8c08,
+ 0x5766, 0x6bef, 0x8892, 0x78b3, 0x63a2, 0x53f9, 0x70ad, 0x6c64,
+ 0x5858, 0x642a, 0x5802, 0x68e0, 0x819b, 0x5510, 0x7cd6, 0x5018,
+ 0x8eba, 0x6dcc, 0x8d9f, 0x70eb, 0x638f, 0x6d9b, 0x6ed4, 0x7ee6,
+ 0x8404, 0x6843, 0x9003, 0x6dd8, 0x9676, 0x8ba8, 0x5957, 0x7279,
+ 0x85e4, 0x817e, 0x75bc, 0x8a8a, 0x68af, 0x5254, 0x8e22, 0x9511,
+ 0x63d0, 0x9898, 0x8e44, 0x557c, 0x4f53, 0x66ff, 0x568f, 0x60d5,
+ 0x6d95, 0x5243, 0x5c49, 0x5929, 0x6dfb, 0x586b, 0x7530, 0x751c,
+ 0x606c, 0x8214, 0x8146, 0x6311, 0x6761, 0x8fe2, 0x773a, 0x8df3,
+ 0x8d34, 0x94c1, 0x5e16, 0x5385, 0x542c, 0x70c3,
+ /* 0x4d */
+ 0x6c40, 0x5ef7, 0x505c, 0x4ead, 0x5ead, 0x633a, 0x8247, 0x901a,
+ 0x6850, 0x916e, 0x77b3, 0x540c, 0x94dc, 0x5f64, 0x7ae5, 0x6876,
+ 0x6345, 0x7b52, 0x7edf, 0x75db, 0x5077, 0x6295, 0x5934, 0x900f,
+ 0x51f8, 0x79c3, 0x7a81, 0x56fe, 0x5f92, 0x9014, 0x6d82, 0x5c60,
+ 0x571f, 0x5410, 0x5154, 0x6e4d, 0x56e2, 0x63a8, 0x9893, 0x817f,
+ 0x8715, 0x892a, 0x9000, 0x541e, 0x5c6f, 0x81c0, 0x62d6, 0x6258,
+ 0x8131, 0x9e35, 0x9640, 0x9a6e, 0x9a7c, 0x692d, 0x59a5, 0x62d3,
+ 0x553e, 0x6316, 0x54c7, 0x86d9, 0x6d3c, 0x5a03, 0x74e6, 0x889c,
+ 0x6b6a, 0x5916, 0x8c4c, 0x5f2f, 0x6e7e, 0x73a9, 0x987d, 0x4e38,
+ 0x70f7, 0x5b8c, 0x7897, 0x633d, 0x665a, 0x7696, 0x60cb, 0x5b9b,
+ 0x5a49, 0x4e07, 0x8155, 0x6c6a, 0x738b, 0x4ea1, 0x6789, 0x7f51,
+ 0x5f80, 0x65fa, 0x671b, 0x5fd8, 0x5984, 0x5a01,
+ /* 0x4e */
+ 0x5dcd, 0x5fae, 0x5371, 0x97e6, 0x8fdd, 0x6845, 0x56f4, 0x552f,
+ 0x60df, 0x4e3a, 0x6f4d, 0x7ef4, 0x82c7, 0x840e, 0x59d4, 0x4f1f,
+ 0x4f2a, 0x5c3e, 0x7eac, 0x672a, 0x851a, 0x5473, 0x754f, 0x80c3,
+ 0x5582, 0x9b4f, 0x4f4d, 0x6e2d, 0x8c13, 0x5c09, 0x6170, 0x536b,
+ 0x761f, 0x6e29, 0x868a, 0x6587, 0x95fb, 0x7eb9, 0x543b, 0x7a33,
+ 0x7d0a, 0x95ee, 0x55e1, 0x7fc1, 0x74ee, 0x631d, 0x8717, 0x6da1,
+ 0x7a9d, 0x6211, 0x65a1, 0x5367, 0x63e1, 0x6c83, 0x5deb, 0x545c,
+ 0x94a8, 0x4e4c, 0x6c61, 0x8bec, 0x5c4b, 0x65e0, 0x829c, 0x68a7,
+ 0x543e, 0x5434, 0x6bcb, 0x6b66, 0x4e94, 0x6342, 0x5348, 0x821e,
+ 0x4f0d, 0x4fae, 0x575e, 0x620a, 0x96fe, 0x6664, 0x7269, 0x52ff,
+ 0x52a1, 0x609f, 0x8bef, 0x6614, 0x7199, 0x6790, 0x897f, 0x7852,
+ 0x77fd, 0x6670, 0x563b, 0x5438, 0x9521, 0x727a,
+ /* 0x4f */
+ 0x7a00, 0x606f, 0x5e0c, 0x6089, 0x819d, 0x5915, 0x60dc, 0x7184,
+ 0x70ef, 0x6eaa, 0x6c50, 0x7280, 0x6a84, 0x88ad, 0x5e2d, 0x4e60,
+ 0x5ab3, 0x559c, 0x94e3, 0x6d17, 0x7cfb, 0x9699, 0x620f, 0x7ec6,
+ 0x778e, 0x867e, 0x5323, 0x971e, 0x8f96, 0x6687, 0x5ce1, 0x4fa0,
+ 0x72ed, 0x4e0b, 0x53a6, 0x590f, 0x5413, 0x6380, 0x9528, 0x5148,
+ 0x4ed9, 0x9c9c, 0x7ea4, 0x54b8, 0x8d24, 0x8854, 0x8237, 0x95f2,
+ 0x6d8e, 0x5f26, 0x5acc, 0x663e, 0x9669, 0x73b0, 0x732e, 0x53bf,
+ 0x817a, 0x9985, 0x7fa1, 0x5baa, 0x9677, 0x9650, 0x7ebf, 0x76f8,
+ 0x53a2, 0x9576, 0x9999, 0x7bb1, 0x8944, 0x6e58, 0x4e61, 0x7fd4,
+ 0x7965, 0x8be6, 0x60f3, 0x54cd, 0x4eab, 0x9879, 0x5df7, 0x6a61,
+ 0x50cf, 0x5411, 0x8c61, 0x8427, 0x785d, 0x9704, 0x524a, 0x54ee,
+ 0x56a3, 0x9500, 0x6d88, 0x5bb5, 0x6dc6, 0x6653,
+ /* 0x50 */
+ 0x5c0f, 0x5b5d, 0x6821, 0x8096, 0x5578, 0x7b11, 0x6548, 0x6954,
+ 0x4e9b, 0x6b47, 0x874e, 0x978b, 0x534f, 0x631f, 0x643a, 0x90aa,
+ 0x659c, 0x80c1, 0x8c10, 0x5199, 0x68b0, 0x5378, 0x87f9, 0x61c8,
+ 0x6cc4, 0x6cfb, 0x8c22, 0x5c51, 0x85aa, 0x82af, 0x950c, 0x6b23,
+ 0x8f9b, 0x65b0, 0x5ffb, 0x5fc3, 0x4fe1, 0x8845, 0x661f, 0x8165,
+ 0x7329, 0x60fa, 0x5174, 0x5211, 0x578b, 0x5f62, 0x90a2, 0x884c,
+ 0x9192, 0x5e78, 0x674f, 0x6027, 0x59d3, 0x5144, 0x51f6, 0x80f8,
+ 0x5308, 0x6c79, 0x96c4, 0x718a, 0x4f11, 0x4fee, 0x7f9e, 0x673d,
+ 0x55c5, 0x9508, 0x79c0, 0x8896, 0x7ee3, 0x589f, 0x620c, 0x9700,
+ 0x865a, 0x5618, 0x987b, 0x5f90, 0x8bb8, 0x84c4, 0x9157, 0x53d9,
+ 0x65ed, 0x5e8f, 0x755c, 0x6064, 0x7d6e, 0x5a7f, 0x7eea, 0x7eed,
+ 0x8f69, 0x55a7, 0x5ba3, 0x60ac, 0x65cb, 0x7384,
+ /* 0x51 */
+ 0x9009, 0x7663, 0x7729, 0x7eda, 0x9774, 0x859b, 0x5b66, 0x7a74,
+ 0x96ea, 0x8840, 0x52cb, 0x718f, 0x5faa, 0x65ec, 0x8be2, 0x5bfb,
+ 0x9a6f, 0x5de1, 0x6b89, 0x6c5b, 0x8bad, 0x8baf, 0x900a, 0x8fc5,
+ 0x538b, 0x62bc, 0x9e26, 0x9e2d, 0x5440, 0x4e2b, 0x82bd, 0x7259,
+ 0x869c, 0x5d16, 0x8859, 0x6daf, 0x96c5, 0x54d1, 0x4e9a, 0x8bb6,
+ 0x7109, 0x54bd, 0x9609, 0x70df, 0x6df9, 0x76d0, 0x4e25, 0x7814,
+ 0x8712, 0x5ca9, 0x5ef6, 0x8a00, 0x989c, 0x960e, 0x708e, 0x6cbf,
+ 0x5944, 0x63a9, 0x773c, 0x884d, 0x6f14, 0x8273, 0x5830, 0x71d5,
+ 0x538c, 0x781a, 0x96c1, 0x5501, 0x5f66, 0x7130, 0x5bb4, 0x8c1a,
+ 0x9a8c, 0x6b83, 0x592e, 0x9e2f, 0x79e7, 0x6768, 0x626c, 0x4f6f,
+ 0x75a1, 0x7f8a, 0x6d0b, 0x9633, 0x6c27, 0x4ef0, 0x75d2, 0x517b,
+ 0x6837, 0x6f3e, 0x9080, 0x8170, 0x5996, 0x7476,
+ /* 0x52 */
+ 0x6447, 0x5c27, 0x9065, 0x7a91, 0x8c23, 0x59da, 0x54ac, 0x8200,
+ 0x836f, 0x8981, 0x8000, 0x6930, 0x564e, 0x8036, 0x7237, 0x91ce,
+ 0x51b6, 0x4e5f, 0x9875, 0x6396, 0x4e1a, 0x53f6, 0x66f3, 0x814b,
+ 0x591c, 0x6db2, 0x4e00, 0x58f9, 0x533b, 0x63d6, 0x94f1, 0x4f9d,
+ 0x4f0a, 0x8863, 0x9890, 0x5937, 0x9057, 0x79fb, 0x4eea, 0x80f0,
+ 0x7591, 0x6c82, 0x5b9c, 0x59e8, 0x5f5d, 0x6905, 0x8681, 0x501a,
+ 0x5df2, 0x4e59, 0x77e3, 0x4ee5, 0x827a, 0x6291, 0x6613, 0x9091,
+ 0x5c79, 0x4ebf, 0x5f79, 0x81c6, 0x9038, 0x8084, 0x75ab, 0x4ea6,
+ 0x88d4, 0x610f, 0x6bc5, 0x5fc6, 0x4e49, 0x76ca, 0x6ea2, 0x8be3,
+ 0x8bae, 0x8c0a, 0x8bd1, 0x5f02, 0x7ffc, 0x7fcc, 0x7ece, 0x8335,
+ 0x836b, 0x56e0, 0x6bb7, 0x97f3, 0x9634, 0x59fb, 0x541f, 0x94f6,
+ 0x6deb, 0x5bc5, 0x996e, 0x5c39, 0x5f15, 0x9690,
+ /* 0x53 */
+ 0x5370, 0x82f1, 0x6a31, 0x5a74, 0x9e70, 0x5e94, 0x7f28, 0x83b9,
+ 0x8424, 0x8425, 0x8367, 0x8747, 0x8fce, 0x8d62, 0x76c8, 0x5f71,
+ 0x9896, 0x786c, 0x6620, 0x54df, 0x62e5, 0x4f63, 0x81c3, 0x75c8,
+ 0x5eb8, 0x96cd, 0x8e0a, 0x86f9, 0x548f, 0x6cf3, 0x6d8c, 0x6c38,
+ 0x607f, 0x52c7, 0x7528, 0x5e7d, 0x4f18, 0x60a0, 0x5fe7, 0x5c24,
+ 0x7531, 0x90ae, 0x94c0, 0x72b9, 0x6cb9, 0x6e38, 0x9149, 0x6709,
+ 0x53cb, 0x53f3, 0x4f51, 0x91c9, 0x8bf1, 0x53c8, 0x5e7c, 0x8fc2,
+ 0x6de4, 0x4e8e, 0x76c2, 0x6986, 0x865e, 0x611a, 0x8206, 0x4f59,
+ 0x4fde, 0x903e, 0x9c7c, 0x6109, 0x6e1d, 0x6e14, 0x9685, 0x4e88,
+ 0x5a31, 0x96e8, 0x4e0e, 0x5c7f, 0x79b9, 0x5b87, 0x8bed, 0x7fbd,
+ 0x7389, 0x57df, 0x828b, 0x90c1, 0x5401, 0x9047, 0x55bb, 0x5cea,
+ 0x5fa1, 0x6108, 0x6b32, 0x72f1, 0x80b2, 0x8a89,
+ /* 0x54 */
+ 0x6d74, 0x5bd3, 0x88d5, 0x9884, 0x8c6b, 0x9a6d, 0x9e33, 0x6e0a,
+ 0x51a4, 0x5143, 0x57a3, 0x8881, 0x539f, 0x63f4, 0x8f95, 0x56ed,
+ 0x5458, 0x5706, 0x733f, 0x6e90, 0x7f18, 0x8fdc, 0x82d1, 0x613f,
+ 0x6028, 0x9662, 0x66f0, 0x7ea6, 0x8d8a, 0x8dc3, 0x94a5, 0x5cb3,
+ 0x7ca4, 0x6708, 0x60a6, 0x9605, 0x8018, 0x4e91, 0x90e7, 0x5300,
+ 0x9668, 0x5141, 0x8fd0, 0x8574, 0x915d, 0x6655, 0x97f5, 0x5b55,
+ 0x531d, 0x7838, 0x6742, 0x683d, 0x54c9, 0x707e, 0x5bb0, 0x8f7d,
+ 0x518d, 0x5728, 0x54b1, 0x6512, 0x6682, 0x8d5e, 0x8d43, 0x810f,
+ 0x846c, 0x906d, 0x7cdf, 0x51ff, 0x85fb, 0x67a3, 0x65e9, 0x6fa1,
+ 0x86a4, 0x8e81, 0x566a, 0x9020, 0x7682, 0x7076, 0x71e5, 0x8d23,
+ 0x62e9, 0x5219, 0x6cfd, 0x8d3c, 0x600e, 0x589e, 0x618e, 0x66fe,
+ 0x8d60, 0x624e, 0x55b3, 0x6e23, 0x672d, 0x8f67,
+ /* 0x55 */
+ 0x94e1, 0x95f8, 0x7728, 0x6805, 0x69a8, 0x548b, 0x4e4d, 0x70b8,
+ 0x8bc8, 0x6458, 0x658b, 0x5b85, 0x7a84, 0x503a, 0x5be8, 0x77bb,
+ 0x6be1, 0x8a79, 0x7c98, 0x6cbe, 0x76cf, 0x65a9, 0x8f97, 0x5d2d,
+ 0x5c55, 0x8638, 0x6808, 0x5360, 0x6218, 0x7ad9, 0x6e5b, 0x7efd,
+ 0x6a1f, 0x7ae0, 0x5f70, 0x6f33, 0x5f20, 0x638c, 0x6da8, 0x6756,
+ 0x4e08, 0x5e10, 0x8d26, 0x4ed7, 0x80c0, 0x7634, 0x969c, 0x62db,
+ 0x662d, 0x627e, 0x6cbc, 0x8d75, 0x7167, 0x7f69, 0x5146, 0x8087,
+ 0x53ec, 0x906e, 0x6298, 0x54f2, 0x86f0, 0x8f99, 0x8005, 0x9517,
+ 0x8517, 0x8fd9, 0x6d59, 0x73cd, 0x659f, 0x771f, 0x7504, 0x7827,
+ 0x81fb, 0x8d1e, 0x9488, 0x4fa6, 0x6795, 0x75b9, 0x8bca, 0x9707,
+ 0x632f, 0x9547, 0x9635, 0x84b8, 0x6323, 0x7741, 0x5f81, 0x72f0,
+ 0x4e89, 0x6014, 0x6574, 0x62ef, 0x6b63, 0x653f,
+ /* 0x56 */
+ 0x5e27, 0x75c7, 0x90d1, 0x8bc1, 0x829d, 0x679d, 0x652f, 0x5431,
+ 0x8718, 0x77e5, 0x80a2, 0x8102, 0x6c41, 0x4e4b, 0x7ec7, 0x804c,
+ 0x76f4, 0x690d, 0x6b96, 0x6267, 0x503c, 0x4f84, 0x5740, 0x6307,
+ 0x6b62, 0x8dbe, 0x53ea, 0x65e8, 0x7eb8, 0x5fd7, 0x631a, 0x63b7,
+ 0x81f3, 0x81f4, 0x7f6e, 0x5e1c, 0x5cd9, 0x5236, 0x667a, 0x79e9,
+ 0x7a1a, 0x8d28, 0x7099, 0x75d4, 0x6ede, 0x6cbb, 0x7a92, 0x4e2d,
+ 0x76c5, 0x5fe0, 0x949f, 0x8877, 0x7ec8, 0x79cd, 0x80bf, 0x91cd,
+ 0x4ef2, 0x4f17, 0x821f, 0x5468, 0x5dde, 0x6d32, 0x8bcc, 0x7ca5,
+ 0x8f74, 0x8098, 0x5e1a, 0x5492, 0x76b1, 0x5b99, 0x663c, 0x9aa4,
+ 0x73e0, 0x682a, 0x86db, 0x6731, 0x732a, 0x8bf8, 0x8bdb, 0x9010,
+ 0x7af9, 0x70db, 0x716e, 0x62c4, 0x77a9, 0x5631, 0x4e3b, 0x8457,
+ 0x67f1, 0x52a9, 0x86c0, 0x8d2e, 0x94f8, 0x7b51,
+ /* 0x57 */
+ 0x4f4f, 0x6ce8, 0x795d, 0x9a7b, 0x6293, 0x722a, 0x62fd, 0x4e13,
+ 0x7816, 0x8f6c, 0x64b0, 0x8d5a, 0x7bc6, 0x6869, 0x5e84, 0x88c5,
+ 0x5986, 0x649e, 0x58ee, 0x72b6, 0x690e, 0x9525, 0x8ffd, 0x8d58,
+ 0x5760, 0x7f00, 0x8c06, 0x51c6, 0x6349, 0x62d9, 0x5353, 0x684c,
+ 0x7422, 0x8301, 0x914c, 0x5544, 0x7740, 0x707c, 0x6d4a, 0x5179,
+ 0x54a8, 0x8d44, 0x59ff, 0x6ecb, 0x6dc4, 0x5b5c, 0x7d2b, 0x4ed4,
+ 0x7c7d, 0x6ed3, 0x5b50, 0x81ea, 0x6e0d, 0x5b57, 0x9b03, 0x68d5,
+ 0x8e2a, 0x5b97, 0x7efc, 0x603b, 0x7eb5, 0x90b9, 0x8d70, 0x594f,
+ 0x63cd, 0x79df, 0x8db3, 0x5352, 0x65cf, 0x7956, 0x8bc5, 0x963b,
+ 0x7ec4, 0x94bb, 0x7e82, 0x5634, 0x9189, 0x6700, 0x7f6a, 0x5c0a,
+ 0x9075, 0x6628, 0x5de6, 0x4f50, 0x67de, 0x505a, 0x4f5c, 0x5750,
+ 0x5ea7, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ /* 0x58 */
+ 0x4e8d, 0x4e0c, 0x5140, 0x4e10, 0x5eff, 0x5345, 0x4e15, 0x4e98,
+ 0x4e1e, 0x9b32, 0x5b6c, 0x5669, 0x4e28, 0x79ba, 0x4e3f, 0x5315,
+ 0x4e47, 0x592d, 0x723b, 0x536e, 0x6c10, 0x56df, 0x80e4, 0x9997,
+ 0x6bd3, 0x777e, 0x9f17, 0x4e36, 0x4e9f, 0x9f10, 0x4e5c, 0x4e69,
+ 0x4e93, 0x8288, 0x5b5b, 0x556c, 0x560f, 0x4ec4, 0x538d, 0x539d,
+ 0x53a3, 0x53a5, 0x53ae, 0x9765, 0x8d5d, 0x531a, 0x53f5, 0x5326,
+ 0x532e, 0x533e, 0x8d5c, 0x5366, 0x5363, 0x5202, 0x5208, 0x520e,
+ 0x522d, 0x5233, 0x523f, 0x5240, 0x524c, 0x525e, 0x5261, 0x525c,
+ 0x84af, 0x527d, 0x5282, 0x5281, 0x5290, 0x5293, 0x5182, 0x7f54,
+ 0x4ebb, 0x4ec3, 0x4ec9, 0x4ec2, 0x4ee8, 0x4ee1, 0x4eeb, 0x4ede,
+ 0x4f1b, 0x4ef3, 0x4f22, 0x4f64, 0x4ef5, 0x4f25, 0x4f27, 0x4f09,
+ 0x4f2b, 0x4f5e, 0x4f67, 0x6538, 0x4f5a, 0x4f5d,
+ /* 0x59 */
+ 0x4f5f, 0x4f57, 0x4f32, 0x4f3d, 0x4f76, 0x4f74, 0x4f91, 0x4f89,
+ 0x4f83, 0x4f8f, 0x4f7e, 0x4f7b, 0x4faa, 0x4f7c, 0x4fac, 0x4f94,
+ 0x4fe6, 0x4fe8, 0x4fea, 0x4fc5, 0x4fda, 0x4fe3, 0x4fdc, 0x4fd1,
+ 0x4fdf, 0x4ff8, 0x5029, 0x504c, 0x4ff3, 0x502c, 0x500f, 0x502e,
+ 0x502d, 0x4ffe, 0x501c, 0x500c, 0x5025, 0x5028, 0x507e, 0x5043,
+ 0x5055, 0x5048, 0x504e, 0x506c, 0x507b, 0x50a5, 0x50a7, 0x50a9,
+ 0x50ba, 0x50d6, 0x5106, 0x50ed, 0x50ec, 0x50e6, 0x50ee, 0x5107,
+ 0x510b, 0x4edd, 0x6c3d, 0x4f58, 0x4f65, 0x4fce, 0x9fa0, 0x6c46,
+ 0x7c74, 0x516e, 0x5dfd, 0x9ec9, 0x9998, 0x5181, 0x5914, 0x52f9,
+ 0x530d, 0x8a07, 0x5310, 0x51eb, 0x5919, 0x5155, 0x4ea0, 0x5156,
+ 0x4eb3, 0x886e, 0x88a4, 0x4eb5, 0x8114, 0x88d2, 0x7980, 0x5b34,
+ 0x8803, 0x7fb8, 0x51ab, 0x51b1, 0x51bd, 0x51bc,
+ /* 0x5a */
+ 0x51c7, 0x5196, 0x51a2, 0x51a5, 0x8ba0, 0x8ba6, 0x8ba7, 0x8baa,
+ 0x8bb4, 0x8bb5, 0x8bb7, 0x8bc2, 0x8bc3, 0x8bcb, 0x8bcf, 0x8bce,
+ 0x8bd2, 0x8bd3, 0x8bd4, 0x8bd6, 0x8bd8, 0x8bd9, 0x8bdc, 0x8bdf,
+ 0x8be0, 0x8be4, 0x8be8, 0x8be9, 0x8bee, 0x8bf0, 0x8bf3, 0x8bf6,
+ 0x8bf9, 0x8bfc, 0x8bff, 0x8c00, 0x8c02, 0x8c04, 0x8c07, 0x8c0c,
+ 0x8c0f, 0x8c11, 0x8c12, 0x8c14, 0x8c15, 0x8c16, 0x8c19, 0x8c1b,
+ 0x8c18, 0x8c1d, 0x8c1f, 0x8c20, 0x8c21, 0x8c25, 0x8c27, 0x8c2a,
+ 0x8c2b, 0x8c2e, 0x8c2f, 0x8c32, 0x8c33, 0x8c35, 0x8c36, 0x5369,
+ 0x537a, 0x961d, 0x9622, 0x9621, 0x9631, 0x962a, 0x963d, 0x963c,
+ 0x9642, 0x9649, 0x9654, 0x965f, 0x9667, 0x966c, 0x9672, 0x9674,
+ 0x9688, 0x968d, 0x9697, 0x96b0, 0x9097, 0x909b, 0x909d, 0x9099,
+ 0x90ac, 0x90a1, 0x90b4, 0x90b3, 0x90b6, 0x90ba,
+ /* 0x5b */
+ 0x90b8, 0x90b0, 0x90cf, 0x90c5, 0x90be, 0x90d0, 0x90c4, 0x90c7,
+ 0x90d3, 0x90e6, 0x90e2, 0x90dc, 0x90d7, 0x90db, 0x90eb, 0x90ef,
+ 0x90fe, 0x9104, 0x9122, 0x911e, 0x9123, 0x9131, 0x912f, 0x9139,
+ 0x9143, 0x9146, 0x520d, 0x5942, 0x52a2, 0x52ac, 0x52ad, 0x52be,
+ 0x54ff, 0x52d0, 0x52d6, 0x52f0, 0x53df, 0x71ee, 0x77cd, 0x5ef4,
+ 0x51f5, 0x51fc, 0x9b2f, 0x53b6, 0x5f01, 0x755a, 0x5def, 0x574c,
+ 0x57a9, 0x57a1, 0x587e, 0x58bc, 0x58c5, 0x58d1, 0x5729, 0x572c,
+ 0x572a, 0x5733, 0x5739, 0x572e, 0x572f, 0x575c, 0x573b, 0x5742,
+ 0x5769, 0x5785, 0x576b, 0x5786, 0x577c, 0x577b, 0x5768, 0x576d,
+ 0x5776, 0x5773, 0x57ad, 0x57a4, 0x578c, 0x57b2, 0x57cf, 0x57a7,
+ 0x57b4, 0x5793, 0x57a0, 0x57d5, 0x57d8, 0x57da, 0x57d9, 0x57d2,
+ 0x57b8, 0x57f4, 0x57ef, 0x57f8, 0x57e4, 0x57dd,
+ /* 0x5c */
+ 0x580b, 0x580d, 0x57fd, 0x57ed, 0x5800, 0x581e, 0x5819, 0x5844,
+ 0x5820, 0x5865, 0x586c, 0x5881, 0x5889, 0x589a, 0x5880, 0x99a8,
+ 0x9f19, 0x61ff, 0x8279, 0x827d, 0x827f, 0x828f, 0x828a, 0x82a8,
+ 0x8284, 0x828e, 0x8291, 0x8297, 0x8299, 0x82ab, 0x82b8, 0x82be,
+ 0x82b0, 0x82c8, 0x82ca, 0x82e3, 0x8298, 0x82b7, 0x82ae, 0x82cb,
+ 0x82cc, 0x82c1, 0x82a9, 0x82b4, 0x82a1, 0x82aa, 0x829f, 0x82c4,
+ 0x82ce, 0x82a4, 0x82e1, 0x8309, 0x82f7, 0x82e4, 0x830f, 0x8307,
+ 0x82dc, 0x82f4, 0x82d2, 0x82d8, 0x830c, 0x82fb, 0x82d3, 0x8311,
+ 0x831a, 0x8306, 0x8314, 0x8315, 0x82e0, 0x82d5, 0x831c, 0x8351,
+ 0x835b, 0x835c, 0x8308, 0x8392, 0x833c, 0x8334, 0x8331, 0x839b,
+ 0x835e, 0x832f, 0x834f, 0x8347, 0x8343, 0x835f, 0x8340, 0x8317,
+ 0x8360, 0x832d, 0x833a, 0x8333, 0x8366, 0x8365,
+ /* 0x5d */
+ 0x8368, 0x831b, 0x8369, 0x836c, 0x836a, 0x836d, 0x836e, 0x83b0,
+ 0x8378, 0x83b3, 0x83b4, 0x83a0, 0x83aa, 0x8393, 0x839c, 0x8385,
+ 0x837c, 0x83b6, 0x83a9, 0x837d, 0x83b8, 0x837b, 0x8398, 0x839e,
+ 0x83a8, 0x83ba, 0x83bc, 0x83c1, 0x8401, 0x83e5, 0x83d8, 0x5807,
+ 0x8418, 0x840b, 0x83dd, 0x83fd, 0x83d6, 0x841c, 0x8438, 0x8411,
+ 0x8406, 0x83d4, 0x83df, 0x840f, 0x8403, 0x83f8, 0x83f9, 0x83ea,
+ 0x83c5, 0x83c0, 0x8426, 0x83f0, 0x83e1, 0x845c, 0x8451, 0x845a,
+ 0x8459, 0x8473, 0x8487, 0x8488, 0x847a, 0x8489, 0x8478, 0x843c,
+ 0x8446, 0x8469, 0x8476, 0x848c, 0x848e, 0x8431, 0x846d, 0x84c1,
+ 0x84cd, 0x84d0, 0x84e6, 0x84bd, 0x84d3, 0x84ca, 0x84bf, 0x84ba,
+ 0x84e0, 0x84a1, 0x84b9, 0x84b4, 0x8497, 0x84e5, 0x84e3, 0x850c,
+ 0x750d, 0x8538, 0x84f0, 0x8539, 0x851f, 0x853a,
+ /* 0x5e */
+ 0x8556, 0x853b, 0x84ff, 0x84fc, 0x8559, 0x8548, 0x8568, 0x8564,
+ 0x855e, 0x857a, 0x77a2, 0x8543, 0x8572, 0x857b, 0x85a4, 0x85a8,
+ 0x8587, 0x858f, 0x8579, 0x85ae, 0x859c, 0x8585, 0x85b9, 0x85b7,
+ 0x85b0, 0x85d3, 0x85c1, 0x85dc, 0x85ff, 0x8627, 0x8605, 0x8629,
+ 0x8616, 0x863c, 0x5efe, 0x5f08, 0x593c, 0x5941, 0x8037, 0x5955,
+ 0x595a, 0x5958, 0x530f, 0x5c22, 0x5c25, 0x5c2c, 0x5c34, 0x624c,
+ 0x626a, 0x629f, 0x62bb, 0x62ca, 0x62da, 0x62d7, 0x62ee, 0x6322,
+ 0x62f6, 0x6339, 0x634b, 0x6343, 0x63ad, 0x63f6, 0x6371, 0x637a,
+ 0x638e, 0x63b4, 0x636d, 0x63ac, 0x638a, 0x6369, 0x63ae, 0x63bc,
+ 0x63f2, 0x63f8, 0x63e0, 0x63ff, 0x63c4, 0x63de, 0x63ce, 0x6452,
+ 0x63c6, 0x63be, 0x6445, 0x6441, 0x640b, 0x641b, 0x6420, 0x640c,
+ 0x6426, 0x6421, 0x645e, 0x6484, 0x646d, 0x6496,
+ /* 0x5f */
+ 0x647a, 0x64b7, 0x64b8, 0x6499, 0x64ba, 0x64c0, 0x64d0, 0x64d7,
+ 0x64e4, 0x64e2, 0x6509, 0x6525, 0x652e, 0x5f0b, 0x5fd2, 0x7519,
+ 0x5f11, 0x535f, 0x53f1, 0x53fd, 0x53e9, 0x53e8, 0x53fb, 0x5412,
+ 0x5416, 0x5406, 0x544b, 0x5452, 0x5453, 0x5454, 0x5456, 0x5443,
+ 0x5421, 0x5457, 0x5459, 0x5423, 0x5432, 0x5482, 0x5494, 0x5477,
+ 0x5471, 0x5464, 0x549a, 0x549b, 0x5484, 0x5476, 0x5466, 0x549d,
+ 0x54d0, 0x54ad, 0x54c2, 0x54b4, 0x54d2, 0x54a7, 0x54a6, 0x54d3,
+ 0x54d4, 0x5472, 0x54a3, 0x54d5, 0x54bb, 0x54bf, 0x54cc, 0x54d9,
+ 0x54da, 0x54dc, 0x54a9, 0x54aa, 0x54a4, 0x54dd, 0x54cf, 0x54de,
+ 0x551b, 0x54e7, 0x5520, 0x54fd, 0x5514, 0x54f3, 0x5522, 0x5523,
+ 0x550f, 0x5511, 0x5527, 0x552a, 0x5567, 0x558f, 0x55b5, 0x5549,
+ 0x556d, 0x5541, 0x5555, 0x553f, 0x5550, 0x553c,
+ /* 0x60 */
+ 0x5537, 0x5556, 0x5575, 0x5576, 0x5577, 0x5533, 0x5530, 0x555c,
+ 0x558b, 0x55d2, 0x5583, 0x55b1, 0x55b9, 0x5588, 0x5581, 0x559f,
+ 0x557e, 0x55d6, 0x5591, 0x557b, 0x55df, 0x55bd, 0x55be, 0x5594,
+ 0x5599, 0x55ea, 0x55f7, 0x55c9, 0x561f, 0x55d1, 0x55eb, 0x55ec,
+ 0x55d4, 0x55e6, 0x55dd, 0x55c4, 0x55ef, 0x55e5, 0x55f2, 0x55f3,
+ 0x55cc, 0x55cd, 0x55e8, 0x55f5, 0x55e4, 0x8f94, 0x561e, 0x5608,
+ 0x560c, 0x5601, 0x5624, 0x5623, 0x55fe, 0x5600, 0x5627, 0x562d,
+ 0x5658, 0x5639, 0x5657, 0x562c, 0x564d, 0x5662, 0x5659, 0x565c,
+ 0x564c, 0x5654, 0x5686, 0x5664, 0x5671, 0x566b, 0x567b, 0x567c,
+ 0x5685, 0x5693, 0x56af, 0x56d4, 0x56d7, 0x56dd, 0x56e1, 0x56f5,
+ 0x56eb, 0x56f9, 0x56ff, 0x5704, 0x570a, 0x5709, 0x571c, 0x5e0f,
+ 0x5e19, 0x5e14, 0x5e11, 0x5e31, 0x5e3b, 0x5e3c,
+ /* 0x61 */
+ 0x5e37, 0x5e44, 0x5e54, 0x5e5b, 0x5e5e, 0x5e61, 0x5c8c, 0x5c7a,
+ 0x5c8d, 0x5c90, 0x5c96, 0x5c88, 0x5c98, 0x5c99, 0x5c91, 0x5c9a,
+ 0x5c9c, 0x5cb5, 0x5ca2, 0x5cbd, 0x5cac, 0x5cab, 0x5cb1, 0x5ca3,
+ 0x5cc1, 0x5cb7, 0x5cc4, 0x5cd2, 0x5ce4, 0x5ccb, 0x5ce5, 0x5d02,
+ 0x5d03, 0x5d27, 0x5d26, 0x5d2e, 0x5d24, 0x5d1e, 0x5d06, 0x5d1b,
+ 0x5d58, 0x5d3e, 0x5d34, 0x5d3d, 0x5d6c, 0x5d5b, 0x5d6f, 0x5d5d,
+ 0x5d6b, 0x5d4b, 0x5d4a, 0x5d69, 0x5d74, 0x5d82, 0x5d99, 0x5d9d,
+ 0x8c73, 0x5db7, 0x5dc5, 0x5f73, 0x5f77, 0x5f82, 0x5f87, 0x5f89,
+ 0x5f8c, 0x5f95, 0x5f99, 0x5f9c, 0x5fa8, 0x5fad, 0x5fb5, 0x5fbc,
+ 0x8862, 0x5f61, 0x72ad, 0x72b0, 0x72b4, 0x72b7, 0x72b8, 0x72c3,
+ 0x72c1, 0x72ce, 0x72cd, 0x72d2, 0x72e8, 0x72ef, 0x72e9, 0x72f2,
+ 0x72f4, 0x72f7, 0x7301, 0x72f3, 0x7303, 0x72fa,
+ /* 0x62 */
+ 0x72fb, 0x7317, 0x7313, 0x7321, 0x730a, 0x731e, 0x731d, 0x7315,
+ 0x7322, 0x7339, 0x7325, 0x732c, 0x7338, 0x7331, 0x7350, 0x734d,
+ 0x7357, 0x7360, 0x736c, 0x736f, 0x737e, 0x821b, 0x5925, 0x98e7,
+ 0x5924, 0x5902, 0x9963, 0x9967, 0x9968, 0x9969, 0x996a, 0x996b,
+ 0x996c, 0x9974, 0x9977, 0x997d, 0x9980, 0x9984, 0x9987, 0x998a,
+ 0x998d, 0x9990, 0x9991, 0x9993, 0x9994, 0x9995, 0x5e80, 0x5e91,
+ 0x5e8b, 0x5e96, 0x5ea5, 0x5ea0, 0x5eb9, 0x5eb5, 0x5ebe, 0x5eb3,
+ 0x8d53, 0x5ed2, 0x5ed1, 0x5edb, 0x5ee8, 0x5eea, 0x81ba, 0x5fc4,
+ 0x5fc9, 0x5fd6, 0x5fcf, 0x6003, 0x5fee, 0x6004, 0x5fe1, 0x5fe4,
+ 0x5ffe, 0x6005, 0x6006, 0x5fea, 0x5fed, 0x5ff8, 0x6019, 0x6035,
+ 0x6026, 0x601b, 0x600f, 0x600d, 0x6029, 0x602b, 0x600a, 0x603f,
+ 0x6021, 0x6078, 0x6079, 0x607b, 0x607a, 0x6042,
+ /* 0x63 */
+ 0x606a, 0x607d, 0x6096, 0x609a, 0x60ad, 0x609d, 0x6083, 0x6092,
+ 0x608c, 0x609b, 0x60ec, 0x60bb, 0x60b1, 0x60dd, 0x60d8, 0x60c6,
+ 0x60da, 0x60b4, 0x6120, 0x6126, 0x6115, 0x6123, 0x60f4, 0x6100,
+ 0x610e, 0x612b, 0x614a, 0x6175, 0x61ac, 0x6194, 0x61a7, 0x61b7,
+ 0x61d4, 0x61f5, 0x5fdd, 0x96b3, 0x95e9, 0x95eb, 0x95f1, 0x95f3,
+ 0x95f5, 0x95f6, 0x95fc, 0x95fe, 0x9603, 0x9604, 0x9606, 0x9608,
+ 0x960a, 0x960b, 0x960c, 0x960d, 0x960f, 0x9612, 0x9615, 0x9616,
+ 0x9617, 0x9619, 0x961a, 0x4e2c, 0x723f, 0x6215, 0x6c35, 0x6c54,
+ 0x6c5c, 0x6c4a, 0x6ca3, 0x6c85, 0x6c90, 0x6c94, 0x6c8c, 0x6c68,
+ 0x6c69, 0x6c74, 0x6c76, 0x6c86, 0x6ca9, 0x6cd0, 0x6cd4, 0x6cad,
+ 0x6cf7, 0x6cf8, 0x6cf1, 0x6cd7, 0x6cb2, 0x6ce0, 0x6cd6, 0x6cfa,
+ 0x6ceb, 0x6cee, 0x6cb1, 0x6cd3, 0x6cef, 0x6cfe,
+ /* 0x64 */
+ 0x6d39, 0x6d27, 0x6d0c, 0x6d43, 0x6d48, 0x6d07, 0x6d04, 0x6d19,
+ 0x6d0e, 0x6d2b, 0x6d4d, 0x6d2e, 0x6d35, 0x6d1a, 0x6d4f, 0x6d52,
+ 0x6d54, 0x6d33, 0x6d91, 0x6d6f, 0x6d9e, 0x6da0, 0x6d5e, 0x6d93,
+ 0x6d94, 0x6d5c, 0x6d60, 0x6d7c, 0x6d63, 0x6e1a, 0x6dc7, 0x6dc5,
+ 0x6dde, 0x6e0e, 0x6dbf, 0x6de0, 0x6e11, 0x6de6, 0x6ddd, 0x6dd9,
+ 0x6e16, 0x6dab, 0x6e0c, 0x6dae, 0x6e2b, 0x6e6e, 0x6e4e, 0x6e6b,
+ 0x6eb2, 0x6e5f, 0x6e86, 0x6e53, 0x6e54, 0x6e32, 0x6e25, 0x6e44,
+ 0x6edf, 0x6eb1, 0x6e98, 0x6ee0, 0x6f2d, 0x6ee2, 0x6ea5, 0x6ea7,
+ 0x6ebd, 0x6ebb, 0x6eb7, 0x6ed7, 0x6eb4, 0x6ecf, 0x6e8f, 0x6ec2,
+ 0x6e9f, 0x6f62, 0x6f46, 0x6f47, 0x6f24, 0x6f15, 0x6ef9, 0x6f2f,
+ 0x6f36, 0x6f4b, 0x6f74, 0x6f2a, 0x6f09, 0x6f29, 0x6f89, 0x6f8d,
+ 0x6f8c, 0x6f78, 0x6f72, 0x6f7c, 0x6f7a, 0x6fd1,
+ /* 0x65 */
+ 0x6fc9, 0x6fa7, 0x6fb9, 0x6fb6, 0x6fc2, 0x6fe1, 0x6fee, 0x6fde,
+ 0x6fe0, 0x6fef, 0x701a, 0x7023, 0x701b, 0x7039, 0x7035, 0x704f,
+ 0x705e, 0x5b80, 0x5b84, 0x5b95, 0x5b93, 0x5ba5, 0x5bb8, 0x752f,
+ 0x9a9e, 0x6434, 0x5be4, 0x5bee, 0x8930, 0x5bf0, 0x8e47, 0x8b07,
+ 0x8fb6, 0x8fd3, 0x8fd5, 0x8fe5, 0x8fee, 0x8fe4, 0x8fe9, 0x8fe6,
+ 0x8ff3, 0x8fe8, 0x9005, 0x9004, 0x900b, 0x9026, 0x9011, 0x900d,
+ 0x9016, 0x9021, 0x9035, 0x9036, 0x902d, 0x902f, 0x9044, 0x9051,
+ 0x9052, 0x9050, 0x9068, 0x9058, 0x9062, 0x905b, 0x66b9, 0x9074,
+ 0x907d, 0x9082, 0x9088, 0x9083, 0x908b, 0x5f50, 0x5f57, 0x5f56,
+ 0x5f58, 0x5c3b, 0x54ab, 0x5c50, 0x5c59, 0x5b71, 0x5c63, 0x5c66,
+ 0x7fbc, 0x5f2a, 0x5f29, 0x5f2d, 0x8274, 0x5f3c, 0x9b3b, 0x5c6e,
+ 0x5981, 0x5983, 0x598d, 0x59a9, 0x59aa, 0x59a3,
+ /* 0x66 */
+ 0x5997, 0x59ca, 0x59ab, 0x599e, 0x59a4, 0x59d2, 0x59b2, 0x59af,
+ 0x59d7, 0x59be, 0x5a05, 0x5a06, 0x59dd, 0x5a08, 0x59e3, 0x59d8,
+ 0x59f9, 0x5a0c, 0x5a09, 0x5a32, 0x5a34, 0x5a11, 0x5a23, 0x5a13,
+ 0x5a40, 0x5a67, 0x5a4a, 0x5a55, 0x5a3c, 0x5a62, 0x5a75, 0x80ec,
+ 0x5aaa, 0x5a9b, 0x5a77, 0x5a7a, 0x5abe, 0x5aeb, 0x5ab2, 0x5ad2,
+ 0x5ad4, 0x5ab8, 0x5ae0, 0x5ae3, 0x5af1, 0x5ad6, 0x5ae6, 0x5ad8,
+ 0x5adc, 0x5b09, 0x5b17, 0x5b16, 0x5b32, 0x5b37, 0x5b40, 0x5c15,
+ 0x5c1c, 0x5b5a, 0x5b65, 0x5b73, 0x5b51, 0x5b53, 0x5b62, 0x9a75,
+ 0x9a77, 0x9a78, 0x9a7a, 0x9a7f, 0x9a7d, 0x9a80, 0x9a81, 0x9a85,
+ 0x9a88, 0x9a8a, 0x9a90, 0x9a92, 0x9a93, 0x9a96, 0x9a98, 0x9a9b,
+ 0x9a9c, 0x9a9d, 0x9a9f, 0x9aa0, 0x9aa2, 0x9aa3, 0x9aa5, 0x9aa7,
+ 0x7e9f, 0x7ea1, 0x7ea3, 0x7ea5, 0x7ea8, 0x7ea9,
+ /* 0x67 */
+ 0x7ead, 0x7eb0, 0x7ebe, 0x7ec0, 0x7ec1, 0x7ec2, 0x7ec9, 0x7ecb,
+ 0x7ecc, 0x7ed0, 0x7ed4, 0x7ed7, 0x7edb, 0x7ee0, 0x7ee1, 0x7ee8,
+ 0x7eeb, 0x7eee, 0x7eef, 0x7ef1, 0x7ef2, 0x7f0d, 0x7ef6, 0x7efa,
+ 0x7efb, 0x7efe, 0x7f01, 0x7f02, 0x7f03, 0x7f07, 0x7f08, 0x7f0b,
+ 0x7f0c, 0x7f0f, 0x7f11, 0x7f12, 0x7f17, 0x7f19, 0x7f1c, 0x7f1b,
+ 0x7f1f, 0x7f21, 0x7f22, 0x7f23, 0x7f24, 0x7f25, 0x7f26, 0x7f27,
+ 0x7f2a, 0x7f2b, 0x7f2c, 0x7f2d, 0x7f2f, 0x7f30, 0x7f31, 0x7f32,
+ 0x7f33, 0x7f35, 0x5e7a, 0x757f, 0x5ddb, 0x753e, 0x9095, 0x738e,
+ 0x7391, 0x73ae, 0x73a2, 0x739f, 0x73cf, 0x73c2, 0x73d1, 0x73b7,
+ 0x73b3, 0x73c0, 0x73c9, 0x73c8, 0x73e5, 0x73d9, 0x987c, 0x740a,
+ 0x73e9, 0x73e7, 0x73de, 0x73ba, 0x73f2, 0x740f, 0x742a, 0x745b,
+ 0x7426, 0x7425, 0x7428, 0x7430, 0x742e, 0x742c,
+ /* 0x68 */
+ 0x741b, 0x741a, 0x7441, 0x745c, 0x7457, 0x7455, 0x7459, 0x7477,
+ 0x746d, 0x747e, 0x749c, 0x748e, 0x7480, 0x7481, 0x7487, 0x748b,
+ 0x749e, 0x74a8, 0x74a9, 0x7490, 0x74a7, 0x74d2, 0x74ba, 0x97ea,
+ 0x97eb, 0x97ec, 0x674c, 0x6753, 0x675e, 0x6748, 0x6769, 0x67a5,
+ 0x6787, 0x676a, 0x6773, 0x6798, 0x67a7, 0x6775, 0x67a8, 0x679e,
+ 0x67ad, 0x678b, 0x6777, 0x677c, 0x67f0, 0x6809, 0x67d8, 0x680a,
+ 0x67e9, 0x67b0, 0x680c, 0x67d9, 0x67b5, 0x67da, 0x67b3, 0x67dd,
+ 0x6800, 0x67c3, 0x67b8, 0x67e2, 0x680e, 0x67c1, 0x67fd, 0x6832,
+ 0x6833, 0x6860, 0x6861, 0x684e, 0x6862, 0x6844, 0x6864, 0x6883,
+ 0x681d, 0x6855, 0x6866, 0x6841, 0x6867, 0x6840, 0x683e, 0x684a,
+ 0x6849, 0x6829, 0x68b5, 0x688f, 0x6874, 0x6877, 0x6893, 0x686b,
+ 0x68c2, 0x696e, 0x68fc, 0x691f, 0x6920, 0x68f9,
+ /* 0x69 */
+ 0x6924, 0x68f0, 0x690b, 0x6901, 0x6957, 0x68e3, 0x6910, 0x6971,
+ 0x6939, 0x6960, 0x6942, 0x695d, 0x6984, 0x696b, 0x6980, 0x6998,
+ 0x6978, 0x6934, 0x69cc, 0x6987, 0x6988, 0x69ce, 0x6989, 0x6966,
+ 0x6963, 0x6979, 0x699b, 0x69a7, 0x69bb, 0x69ab, 0x69ad, 0x69d4,
+ 0x69b1, 0x69c1, 0x69ca, 0x69df, 0x6995, 0x69e0, 0x698d, 0x69ff,
+ 0x6a2f, 0x69ed, 0x6a17, 0x6a18, 0x6a65, 0x69f2, 0x6a44, 0x6a3e,
+ 0x6aa0, 0x6a50, 0x6a5b, 0x6a35, 0x6a8e, 0x6a79, 0x6a3d, 0x6a28,
+ 0x6a58, 0x6a7c, 0x6a91, 0x6a90, 0x6aa9, 0x6a97, 0x6aab, 0x7337,
+ 0x7352, 0x6b81, 0x6b82, 0x6b87, 0x6b84, 0x6b92, 0x6b93, 0x6b8d,
+ 0x6b9a, 0x6b9b, 0x6ba1, 0x6baa, 0x8f6b, 0x8f6d, 0x8f71, 0x8f72,
+ 0x8f73, 0x8f75, 0x8f76, 0x8f78, 0x8f77, 0x8f79, 0x8f7a, 0x8f7c,
+ 0x8f7e, 0x8f81, 0x8f82, 0x8f84, 0x8f87, 0x8f8b,
+ /* 0x6a */
+ 0x8f8d, 0x8f8e, 0x8f8f, 0x8f98, 0x8f9a, 0x8ece, 0x620b, 0x6217,
+ 0x621b, 0x621f, 0x6222, 0x6221, 0x6225, 0x6224, 0x622c, 0x81e7,
+ 0x74ef, 0x74f4, 0x74ff, 0x750f, 0x7511, 0x7513, 0x6534, 0x65ee,
+ 0x65ef, 0x65f0, 0x660a, 0x6619, 0x6772, 0x6603, 0x6615, 0x6600,
+ 0x7085, 0x66f7, 0x661d, 0x6634, 0x6631, 0x6636, 0x6635, 0x8006,
+ 0x665f, 0x6654, 0x6641, 0x664f, 0x6656, 0x6661, 0x6657, 0x6677,
+ 0x6684, 0x668c, 0x66a7, 0x669d, 0x66be, 0x66db, 0x66dc, 0x66e6,
+ 0x66e9, 0x8d32, 0x8d33, 0x8d36, 0x8d3b, 0x8d3d, 0x8d40, 0x8d45,
+ 0x8d46, 0x8d48, 0x8d49, 0x8d47, 0x8d4d, 0x8d55, 0x8d59, 0x89c7,
+ 0x89ca, 0x89cb, 0x89cc, 0x89ce, 0x89cf, 0x89d0, 0x89d1, 0x726e,
+ 0x729f, 0x725d, 0x7266, 0x726f, 0x727e, 0x727f, 0x7284, 0x728b,
+ 0x728d, 0x728f, 0x7292, 0x6308, 0x6332, 0x63b0,
+ /* 0x6b */
+ 0x643f, 0x64d8, 0x8004, 0x6bea, 0x6bf3, 0x6bfd, 0x6bf5, 0x6bf9,
+ 0x6c05, 0x6c07, 0x6c06, 0x6c0d, 0x6c15, 0x6c18, 0x6c19, 0x6c1a,
+ 0x6c21, 0x6c29, 0x6c24, 0x6c2a, 0x6c32, 0x6535, 0x6555, 0x656b,
+ 0x724d, 0x7252, 0x7256, 0x7230, 0x8662, 0x5216, 0x809f, 0x809c,
+ 0x8093, 0x80bc, 0x670a, 0x80bd, 0x80b1, 0x80ab, 0x80ad, 0x80b4,
+ 0x80b7, 0x80e7, 0x80e8, 0x80e9, 0x80ea, 0x80db, 0x80c2, 0x80c4,
+ 0x80d9, 0x80cd, 0x80d7, 0x6710, 0x80dd, 0x80eb, 0x80f1, 0x80f4,
+ 0x80ed, 0x810d, 0x810e, 0x80f2, 0x80fc, 0x6715, 0x8112, 0x8c5a,
+ 0x8136, 0x811e, 0x812c, 0x8118, 0x8132, 0x8148, 0x814c, 0x8153,
+ 0x8174, 0x8159, 0x815a, 0x8171, 0x8160, 0x8169, 0x817c, 0x817d,
+ 0x816d, 0x8167, 0x584d, 0x5ab5, 0x8188, 0x8182, 0x8191, 0x6ed5,
+ 0x81a3, 0x81aa, 0x81cc, 0x6726, 0x81ca, 0x81bb,
+ /* 0x6c */
+ 0x81c1, 0x81a6, 0x6b24, 0x6b37, 0x6b39, 0x6b43, 0x6b46, 0x6b59,
+ 0x98d1, 0x98d2, 0x98d3, 0x98d5, 0x98d9, 0x98da, 0x6bb3, 0x5f40,
+ 0x6bc2, 0x89f3, 0x6590, 0x9f51, 0x6593, 0x65bc, 0x65c6, 0x65c4,
+ 0x65c3, 0x65cc, 0x65ce, 0x65d2, 0x65d6, 0x7080, 0x709c, 0x7096,
+ 0x709d, 0x70bb, 0x70c0, 0x70b7, 0x70ab, 0x70b1, 0x70e8, 0x70ca,
+ 0x7110, 0x7113, 0x7116, 0x712f, 0x7131, 0x7173, 0x715c, 0x7168,
+ 0x7145, 0x7172, 0x714a, 0x7178, 0x717a, 0x7198, 0x71b3, 0x71b5,
+ 0x71a8, 0x71a0, 0x71e0, 0x71d4, 0x71e7, 0x71f9, 0x721d, 0x7228,
+ 0x706c, 0x7118, 0x7166, 0x71b9, 0x623e, 0x623d, 0x6243, 0x6248,
+ 0x6249, 0x793b, 0x7940, 0x7946, 0x7949, 0x795b, 0x795c, 0x7953,
+ 0x795a, 0x7962, 0x7957, 0x7960, 0x796f, 0x7967, 0x797a, 0x7985,
+ 0x798a, 0x799a, 0x79a7, 0x79b3, 0x5fd1, 0x5fd0,
+ /* 0x6d */
+ 0x603c, 0x605d, 0x605a, 0x6067, 0x6041, 0x6059, 0x6063, 0x60ab,
+ 0x6106, 0x610d, 0x615d, 0x61a9, 0x619d, 0x61cb, 0x61d1, 0x6206,
+ 0x8080, 0x807f, 0x6c93, 0x6cf6, 0x6dfc, 0x77f6, 0x77f8, 0x7800,
+ 0x7809, 0x7817, 0x7818, 0x7811, 0x65ab, 0x782d, 0x781c, 0x781d,
+ 0x7839, 0x783a, 0x783b, 0x781f, 0x783c, 0x7825, 0x782c, 0x7823,
+ 0x7829, 0x784e, 0x786d, 0x7856, 0x7857, 0x7826, 0x7850, 0x7847,
+ 0x784c, 0x786a, 0x789b, 0x7893, 0x789a, 0x7887, 0x789c, 0x78a1,
+ 0x78a3, 0x78b2, 0x78b9, 0x78a5, 0x78d4, 0x78d9, 0x78c9, 0x78ec,
+ 0x78f2, 0x7905, 0x78f4, 0x7913, 0x7924, 0x791e, 0x7934, 0x9f9b,
+ 0x9ef9, 0x9efb, 0x9efc, 0x76f1, 0x7704, 0x770d, 0x76f9, 0x7707,
+ 0x7708, 0x771a, 0x7722, 0x7719, 0x772d, 0x7726, 0x7735, 0x7738,
+ 0x7750, 0x7751, 0x7747, 0x7743, 0x775a, 0x7768,
+ /* 0x6e */
+ 0x7762, 0x7765, 0x777f, 0x778d, 0x777d, 0x7780, 0x778c, 0x7791,
+ 0x779f, 0x77a0, 0x77b0, 0x77b5, 0x77bd, 0x753a, 0x7540, 0x754e,
+ 0x754b, 0x7548, 0x755b, 0x7572, 0x7579, 0x7583, 0x7f58, 0x7f61,
+ 0x7f5f, 0x8a48, 0x7f68, 0x7f74, 0x7f71, 0x7f79, 0x7f81, 0x7f7e,
+ 0x76cd, 0x76e5, 0x8832, 0x9485, 0x9486, 0x9487, 0x948b, 0x948a,
+ 0x948c, 0x948d, 0x948f, 0x9490, 0x9494, 0x9497, 0x9495, 0x949a,
+ 0x949b, 0x949c, 0x94a3, 0x94a4, 0x94ab, 0x94aa, 0x94ad, 0x94ac,
+ 0x94af, 0x94b0, 0x94b2, 0x94b4, 0x94b6, 0x94b7, 0x94b8, 0x94b9,
+ 0x94ba, 0x94bc, 0x94bd, 0x94bf, 0x94c4, 0x94c8, 0x94c9, 0x94ca,
+ 0x94cb, 0x94cc, 0x94cd, 0x94ce, 0x94d0, 0x94d1, 0x94d2, 0x94d5,
+ 0x94d6, 0x94d7, 0x94d9, 0x94d8, 0x94db, 0x94de, 0x94df, 0x94e0,
+ 0x94e2, 0x94e4, 0x94e5, 0x94e7, 0x94e8, 0x94ea,
+ /* 0x6f */
+ 0x94e9, 0x94eb, 0x94ee, 0x94ef, 0x94f3, 0x94f4, 0x94f5, 0x94f7,
+ 0x94f9, 0x94fc, 0x94fd, 0x94ff, 0x9503, 0x9502, 0x9506, 0x9507,
+ 0x9509, 0x950a, 0x950d, 0x950e, 0x950f, 0x9512, 0x9513, 0x9514,
+ 0x9515, 0x9516, 0x9518, 0x951b, 0x951d, 0x951e, 0x951f, 0x9522,
+ 0x952a, 0x952b, 0x9529, 0x952c, 0x9531, 0x9532, 0x9534, 0x9536,
+ 0x9537, 0x9538, 0x953c, 0x953e, 0x953f, 0x9542, 0x9535, 0x9544,
+ 0x9545, 0x9546, 0x9549, 0x954c, 0x954e, 0x954f, 0x9552, 0x9553,
+ 0x9554, 0x9556, 0x9557, 0x9558, 0x9559, 0x955b, 0x955e, 0x955f,
+ 0x955d, 0x9561, 0x9562, 0x9564, 0x9565, 0x9566, 0x9567, 0x9568,
+ 0x9569, 0x956a, 0x956b, 0x956c, 0x956f, 0x9571, 0x9572, 0x9573,
+ 0x953a, 0x77e7, 0x77ec, 0x96c9, 0x79d5, 0x79ed, 0x79e3, 0x79eb,
+ 0x7a06, 0x5d47, 0x7a03, 0x7a02, 0x7a1e, 0x7a14,
+ /* 0x70 */
+ 0x7a39, 0x7a37, 0x7a51, 0x9ecf, 0x99a5, 0x7a70, 0x7688, 0x768e,
+ 0x7693, 0x7699, 0x76a4, 0x74de, 0x74e0, 0x752c, 0x9e20, 0x9e22,
+ 0x9e28, 0x9e29, 0x9e2a, 0x9e2b, 0x9e2c, 0x9e32, 0x9e31, 0x9e36,
+ 0x9e38, 0x9e37, 0x9e39, 0x9e3a, 0x9e3e, 0x9e41, 0x9e42, 0x9e44,
+ 0x9e46, 0x9e47, 0x9e48, 0x9e49, 0x9e4b, 0x9e4c, 0x9e4e, 0x9e51,
+ 0x9e55, 0x9e57, 0x9e5a, 0x9e5b, 0x9e5c, 0x9e5e, 0x9e63, 0x9e66,
+ 0x9e67, 0x9e68, 0x9e69, 0x9e6a, 0x9e6b, 0x9e6c, 0x9e71, 0x9e6d,
+ 0x9e73, 0x7592, 0x7594, 0x7596, 0x75a0, 0x759d, 0x75ac, 0x75a3,
+ 0x75b3, 0x75b4, 0x75b8, 0x75c4, 0x75b1, 0x75b0, 0x75c3, 0x75c2,
+ 0x75d6, 0x75cd, 0x75e3, 0x75e8, 0x75e6, 0x75e4, 0x75eb, 0x75e7,
+ 0x7603, 0x75f1, 0x75fc, 0x75ff, 0x7610, 0x7600, 0x7605, 0x760c,
+ 0x7617, 0x760a, 0x7625, 0x7618, 0x7615, 0x7619,
+ /* 0x71 */
+ 0x761b, 0x763c, 0x7622, 0x7620, 0x7640, 0x762d, 0x7630, 0x763f,
+ 0x7635, 0x7643, 0x763e, 0x7633, 0x764d, 0x765e, 0x7654, 0x765c,
+ 0x7656, 0x766b, 0x766f, 0x7fca, 0x7ae6, 0x7a78, 0x7a79, 0x7a80,
+ 0x7a86, 0x7a88, 0x7a95, 0x7aa6, 0x7aa0, 0x7aac, 0x7aa8, 0x7aad,
+ 0x7ab3, 0x8864, 0x8869, 0x8872, 0x887d, 0x887f, 0x8882, 0x88a2,
+ 0x88c6, 0x88b7, 0x88bc, 0x88c9, 0x88e2, 0x88ce, 0x88e3, 0x88e5,
+ 0x88f1, 0x891a, 0x88fc, 0x88e8, 0x88fe, 0x88f0, 0x8921, 0x8919,
+ 0x8913, 0x891b, 0x890a, 0x8934, 0x892b, 0x8936, 0x8941, 0x8966,
+ 0x897b, 0x758b, 0x80e5, 0x76b2, 0x76b4, 0x77dc, 0x8012, 0x8014,
+ 0x8016, 0x801c, 0x8020, 0x8022, 0x8025, 0x8026, 0x8027, 0x8029,
+ 0x8028, 0x8031, 0x800b, 0x8035, 0x8043, 0x8046, 0x804d, 0x8052,
+ 0x8069, 0x8071, 0x8983, 0x9878, 0x9880, 0x9883,
+ /* 0x72 */
+ 0x9889, 0x988c, 0x988d, 0x988f, 0x9894, 0x989a, 0x989b, 0x989e,
+ 0x989f, 0x98a1, 0x98a2, 0x98a5, 0x98a6, 0x864d, 0x8654, 0x866c,
+ 0x866e, 0x867f, 0x867a, 0x867c, 0x867b, 0x86a8, 0x868d, 0x868b,
+ 0x86ac, 0x869d, 0x86a7, 0x86a3, 0x86aa, 0x8693, 0x86a9, 0x86b6,
+ 0x86c4, 0x86b5, 0x86ce, 0x86b0, 0x86ba, 0x86b1, 0x86af, 0x86c9,
+ 0x86cf, 0x86b4, 0x86e9, 0x86f1, 0x86f2, 0x86ed, 0x86f3, 0x86d0,
+ 0x8713, 0x86de, 0x86f4, 0x86df, 0x86d8, 0x86d1, 0x8703, 0x8707,
+ 0x86f8, 0x8708, 0x870a, 0x870d, 0x8709, 0x8723, 0x873b, 0x871e,
+ 0x8725, 0x872e, 0x871a, 0x873e, 0x8748, 0x8734, 0x8731, 0x8729,
+ 0x8737, 0x873f, 0x8782, 0x8722, 0x877d, 0x877e, 0x877b, 0x8760,
+ 0x8770, 0x874c, 0x876e, 0x878b, 0x8753, 0x8763, 0x877c, 0x8764,
+ 0x8759, 0x8765, 0x8793, 0x87af, 0x87a8, 0x87d2,
+ /* 0x73 */
+ 0x87c6, 0x8788, 0x8785, 0x87ad, 0x8797, 0x8783, 0x87ab, 0x87e5,
+ 0x87ac, 0x87b5, 0x87b3, 0x87cb, 0x87d3, 0x87bd, 0x87d1, 0x87c0,
+ 0x87ca, 0x87db, 0x87ea, 0x87e0, 0x87ee, 0x8816, 0x8813, 0x87fe,
+ 0x880a, 0x881b, 0x8821, 0x8839, 0x883c, 0x7f36, 0x7f42, 0x7f44,
+ 0x7f45, 0x8210, 0x7afa, 0x7afd, 0x7b08, 0x7b03, 0x7b04, 0x7b15,
+ 0x7b0a, 0x7b2b, 0x7b0f, 0x7b47, 0x7b38, 0x7b2a, 0x7b19, 0x7b2e,
+ 0x7b31, 0x7b20, 0x7b25, 0x7b24, 0x7b33, 0x7b3e, 0x7b1e, 0x7b58,
+ 0x7b5a, 0x7b45, 0x7b75, 0x7b4c, 0x7b5d, 0x7b60, 0x7b6e, 0x7b7b,
+ 0x7b62, 0x7b72, 0x7b71, 0x7b90, 0x7ba6, 0x7ba7, 0x7bb8, 0x7bac,
+ 0x7b9d, 0x7ba8, 0x7b85, 0x7baa, 0x7b9c, 0x7ba2, 0x7bab, 0x7bb4,
+ 0x7bd1, 0x7bc1, 0x7bcc, 0x7bdd, 0x7bda, 0x7be5, 0x7be6, 0x7bea,
+ 0x7c0c, 0x7bfe, 0x7bfc, 0x7c0f, 0x7c16, 0x7c0b,
+ /* 0x74 */
+ 0x7c1f, 0x7c2a, 0x7c26, 0x7c38, 0x7c41, 0x7c40, 0x81fe, 0x8201,
+ 0x8202, 0x8204, 0x81ec, 0x8844, 0x8221, 0x8222, 0x8223, 0x822d,
+ 0x822f, 0x8228, 0x822b, 0x8238, 0x823b, 0x8233, 0x8234, 0x823e,
+ 0x8244, 0x8249, 0x824b, 0x824f, 0x825a, 0x825f, 0x8268, 0x887e,
+ 0x8885, 0x8888, 0x88d8, 0x88df, 0x895e, 0x7f9d, 0x7f9f, 0x7fa7,
+ 0x7faf, 0x7fb0, 0x7fb2, 0x7c7c, 0x6549, 0x7c91, 0x7c9d, 0x7c9c,
+ 0x7c9e, 0x7ca2, 0x7cb2, 0x7cbc, 0x7cbd, 0x7cc1, 0x7cc7, 0x7ccc,
+ 0x7ccd, 0x7cc8, 0x7cc5, 0x7cd7, 0x7ce8, 0x826e, 0x66a8, 0x7fbf,
+ 0x7fce, 0x7fd5, 0x7fe5, 0x7fe1, 0x7fe6, 0x7fe9, 0x7fee, 0x7ff3,
+ 0x7cf8, 0x7d77, 0x7da6, 0x7dae, 0x7e47, 0x7e9b, 0x9eb8, 0x9eb4,
+ 0x8d73, 0x8d84, 0x8d94, 0x8d91, 0x8db1, 0x8d67, 0x8d6d, 0x8c47,
+ 0x8c49, 0x914a, 0x9150, 0x914e, 0x914f, 0x9164,
+ /* 0x75 */
+ 0x9162, 0x9161, 0x9170, 0x9169, 0x916f, 0x917d, 0x917e, 0x9172,
+ 0x9174, 0x9179, 0x918c, 0x9185, 0x9190, 0x918d, 0x9191, 0x91a2,
+ 0x91a3, 0x91aa, 0x91ad, 0x91ae, 0x91af, 0x91b5, 0x91b4, 0x91ba,
+ 0x8c55, 0x9e7e, 0x8db8, 0x8deb, 0x8e05, 0x8e59, 0x8e69, 0x8db5,
+ 0x8dbf, 0x8dbc, 0x8dba, 0x8dc4, 0x8dd6, 0x8dd7, 0x8dda, 0x8dde,
+ 0x8dce, 0x8dcf, 0x8ddb, 0x8dc6, 0x8dec, 0x8df7, 0x8df8, 0x8de3,
+ 0x8df9, 0x8dfb, 0x8de4, 0x8e09, 0x8dfd, 0x8e14, 0x8e1d, 0x8e1f,
+ 0x8e2c, 0x8e2e, 0x8e23, 0x8e2f, 0x8e3a, 0x8e40, 0x8e39, 0x8e35,
+ 0x8e3d, 0x8e31, 0x8e49, 0x8e41, 0x8e42, 0x8e51, 0x8e52, 0x8e4a,
+ 0x8e70, 0x8e76, 0x8e7c, 0x8e6f, 0x8e74, 0x8e85, 0x8e8f, 0x8e94,
+ 0x8e90, 0x8e9c, 0x8e9e, 0x8c78, 0x8c82, 0x8c8a, 0x8c85, 0x8c98,
+ 0x8c94, 0x659b, 0x89d6, 0x89de, 0x89da, 0x89dc,
+ /* 0x76 */
+ 0x89e5, 0x89eb, 0x89ef, 0x8a3e, 0x8b26, 0x9753, 0x96e9, 0x96f3,
+ 0x96ef, 0x9706, 0x9701, 0x9708, 0x970f, 0x970e, 0x972a, 0x972d,
+ 0x9730, 0x973e, 0x9f80, 0x9f83, 0x9f85, 0x9f86, 0x9f87, 0x9f88,
+ 0x9f89, 0x9f8a, 0x9f8c, 0x9efe, 0x9f0b, 0x9f0d, 0x96b9, 0x96bc,
+ 0x96bd, 0x96ce, 0x96d2, 0x77bf, 0x96e0, 0x928e, 0x92ae, 0x92c8,
+ 0x933e, 0x936a, 0x93ca, 0x938f, 0x943e, 0x946b, 0x9c7f, 0x9c82,
+ 0x9c85, 0x9c86, 0x9c87, 0x9c88, 0x7a23, 0x9c8b, 0x9c8e, 0x9c90,
+ 0x9c91, 0x9c92, 0x9c94, 0x9c95, 0x9c9a, 0x9c9b, 0x9c9e, 0x9c9f,
+ 0x9ca0, 0x9ca1, 0x9ca2, 0x9ca3, 0x9ca5, 0x9ca6, 0x9ca7, 0x9ca8,
+ 0x9ca9, 0x9cab, 0x9cad, 0x9cae, 0x9cb0, 0x9cb1, 0x9cb2, 0x9cb3,
+ 0x9cb4, 0x9cb5, 0x9cb6, 0x9cb7, 0x9cba, 0x9cbb, 0x9cbc, 0x9cbd,
+ 0x9cc4, 0x9cc5, 0x9cc6, 0x9cc7, 0x9cca, 0x9ccb,
+ /* 0x77 */
+ 0x9ccc, 0x9ccd, 0x9cce, 0x9ccf, 0x9cd0, 0x9cd3, 0x9cd4, 0x9cd5,
+ 0x9cd7, 0x9cd8, 0x9cd9, 0x9cdc, 0x9cdd, 0x9cdf, 0x9ce2, 0x977c,
+ 0x9785, 0x9791, 0x9792, 0x9794, 0x97af, 0x97ab, 0x97a3, 0x97b2,
+ 0x97b4, 0x9ab1, 0x9ab0, 0x9ab7, 0x9e58, 0x9ab6, 0x9aba, 0x9abc,
+ 0x9ac1, 0x9ac0, 0x9ac5, 0x9ac2, 0x9acb, 0x9acc, 0x9ad1, 0x9b45,
+ 0x9b43, 0x9b47, 0x9b49, 0x9b48, 0x9b4d, 0x9b51, 0x98e8, 0x990d,
+ 0x992e, 0x9955, 0x9954, 0x9adf, 0x9ae1, 0x9ae6, 0x9aef, 0x9aeb,
+ 0x9afb, 0x9aed, 0x9af9, 0x9b08, 0x9b0f, 0x9b13, 0x9b1f, 0x9b23,
+ 0x9ebd, 0x9ebe, 0x7e3b, 0x9e82, 0x9e87, 0x9e88, 0x9e8b, 0x9e92,
+ 0x93d6, 0x9e9d, 0x9e9f, 0x9edb, 0x9edc, 0x9edd, 0x9ee0, 0x9edf,
+ 0x9ee2, 0x9ee9, 0x9ee7, 0x9ee5, 0x9eea, 0x9eef, 0x9f22, 0x9f2c,
+ 0x9f2f, 0x9f39, 0x9f37, 0x9f3d, 0x9f3e, 0x9f44,
+};
+
+static int
+gb2312_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n)
+{
+ unsigned char c1 = (s[0] & 0x7F);
+ if ((c1 >= 0x21 && c1 <= 0x29) || (c1 >= 0x30 && c1 <= 0x77)) {
+ if (n >= 2) {
+ unsigned char c2 = (s[1] & 0x7F);
+ if (c2 >= 0x21 && c2 < 0x7f) {
+ unsigned int i = 94 * (c1 - 0x21) + (c2 - 0x21);
+ unsigned short wc = 0xfffd;
+ if (i < 1410) {
+ if (i < 831)
+ wc = gb2312_2uni_page21[i];
+ } else {
+ if (i < 8178)
+ wc = gb2312_2uni_page30[i-1410];
+ }
+ if (wc != 0xfffd) {
+ *pwc = (ucs4_t) wc;
+ return 2;
+ }
+ }
+ return RET_ILSEQ;
+ }
+ return RET_TOOFEW(0);
+ }
+ return RET_ILSEQ;
+}
+
+static const unsigned short gb2312_2charset[7445] = {
+ 0x2168, 0x216c, 0x2127, 0x2163, 0x2140, 0x2141, 0x2824, 0x2822,
+ 0x2828, 0x2826, 0x283a, 0x282c, 0x282a, 0x2830, 0x282e, 0x2142,
+ 0x2834, 0x2832, 0x2839, 0x2821, 0x2825, 0x2827, 0x2829, 0x282d,
+ 0x2831, 0x2823, 0x282b, 0x282f, 0x2833, 0x2835, 0x2836, 0x2837,
+ 0x2838, 0x2126, 0x2125, 0x2621, 0x2622, 0x2623, 0x2624, 0x2625,
+ 0x2626, 0x2627, 0x2628, 0x2629, 0x262a, 0x262b, 0x262c, 0x262d,
+ 0x262e, 0x262f, 0x2630, 0x2631, 0x2632, 0x2633, 0x2634, 0x2635,
+ 0x2636, 0x2637, 0x2638, 0x2641, 0x2642, 0x2643, 0x2644, 0x2645,
+ 0x2646, 0x2647, 0x2648, 0x2649, 0x264a, 0x264b, 0x264c, 0x264d,
+ 0x264e, 0x264f, 0x2650, 0x2651, 0x2652, 0x2653, 0x2654, 0x2655,
+ 0x2656, 0x2657, 0x2658, 0x2727, 0x2721, 0x2722, 0x2723, 0x2724,
+ 0x2725, 0x2726, 0x2728, 0x2729, 0x272a, 0x272b, 0x272c, 0x272d,
+ 0x272e, 0x272f, 0x2730, 0x2731, 0x2732, 0x2733, 0x2734, 0x2735,
+ 0x2736, 0x2737, 0x2738, 0x2739, 0x273a, 0x273b, 0x273c, 0x273d,
+ 0x273e, 0x273f, 0x2740, 0x2741, 0x2751, 0x2752, 0x2753, 0x2754,
+ 0x2755, 0x2756, 0x2758, 0x2759, 0x275a, 0x275b, 0x275c, 0x275d,
+ 0x275e, 0x275f, 0x2760, 0x2761, 0x2762, 0x2763, 0x2764, 0x2765,
+ 0x2766, 0x2767, 0x2768, 0x2769, 0x276a, 0x276b, 0x276c, 0x276d,
+ 0x276e, 0x276f, 0x2770, 0x2771, 0x2757, 0x212a, 0x212c, 0x212e,
+ 0x212f, 0x2130, 0x2131, 0x212d, 0x216b, 0x2164, 0x2165, 0x2179,
+ 0x2166, 0x216d, 0x2271, 0x2272, 0x2273, 0x2274, 0x2275, 0x2276,
+ 0x2277, 0x2278, 0x2279, 0x227a, 0x227b, 0x227c, 0x217b, 0x217c,
+ 0x217a, 0x217d, 0x214a, 0x2147, 0x2146, 0x214c, 0x2158, 0x215e,
+ 0x214f, 0x214e, 0x2144, 0x2145, 0x2149, 0x2148, 0x2152, 0x2153,
+ 0x2160, 0x215f, 0x2143, 0x214b, 0x2157, 0x2156, 0x2155, 0x2159,
+ 0x2154, 0x215c, 0x215d, 0x215a, 0x215b, 0x2151, 0x214d, 0x2150,
+ 0x2259, 0x225a, 0x225b, 0x225c, 0x225d, 0x225e, 0x225f, 0x2260,
+ 0x2261, 0x2262, 0x2245, 0x2246, 0x2247, 0x2248, 0x2249, 0x224a,
+ 0x224b, 0x224c, 0x224d, 0x224e, 0x224f, 0x2250, 0x2251, 0x2252,
+ 0x2253, 0x2254, 0x2255, 0x2256, 0x2257, 0x2258, 0x2231, 0x2232,
+ 0x2233, 0x2234, 0x2235, 0x2236, 0x2237, 0x2238, 0x2239, 0x223a,
+ 0x223b, 0x223c, 0x223d, 0x223e, 0x223f, 0x2240, 0x2241, 0x2242,
+ 0x2243, 0x2244, 0x2924, 0x2925, 0x2926, 0x2927, 0x2928, 0x2929,
+ 0x292a, 0x292b, 0x292c, 0x292d, 0x292e, 0x292f, 0x2930, 0x2931,
+ 0x2932, 0x2933, 0x2934, 0x2935, 0x2936, 0x2937, 0x2938, 0x2939,
+ 0x293a, 0x293b, 0x293c, 0x293d, 0x293e, 0x293f, 0x2940, 0x2941,
+ 0x2942, 0x2943, 0x2944, 0x2945, 0x2946, 0x2947, 0x2948, 0x2949,
+ 0x294a, 0x294b, 0x294c, 0x294d, 0x294e, 0x294f, 0x2950, 0x2951,
+ 0x2952, 0x2953, 0x2954, 0x2955, 0x2956, 0x2957, 0x2958, 0x2959,
+ 0x295a, 0x295b, 0x295c, 0x295d, 0x295e, 0x295f, 0x2960, 0x2961,
+ 0x2962, 0x2963, 0x2964, 0x2965, 0x2966, 0x2967, 0x2968, 0x2969,
+ 0x296a, 0x296b, 0x296c, 0x296d, 0x296e, 0x296f, 0x2176, 0x2175,
+ 0x2178, 0x2177, 0x2174, 0x2173, 0x2170, 0x2172, 0x2171, 0x216f,
+ 0x216e, 0x2162, 0x2161, 0x2121, 0x2122, 0x2123, 0x2128, 0x2129,
+ 0x2134, 0x2135, 0x2136, 0x2137, 0x2138, 0x2139, 0x213a, 0x213b,
+ 0x213e, 0x213f, 0x217e, 0x2132, 0x2133, 0x213c, 0x213d, 0x2421,
+ 0x2422, 0x2423, 0x2424, 0x2425, 0x2426, 0x2427, 0x2428, 0x2429,
+ 0x242a, 0x242b, 0x242c, 0x242d, 0x242e, 0x242f, 0x2430, 0x2431,
+ 0x2432, 0x2433, 0x2434, 0x2435, 0x2436, 0x2437, 0x2438, 0x2439,
+ 0x243a, 0x243b, 0x243c, 0x243d, 0x243e, 0x243f, 0x2440, 0x2441,
+ 0x2442, 0x2443, 0x2444, 0x2445, 0x2446, 0x2447, 0x2448, 0x2449,
+ 0x244a, 0x244b, 0x244c, 0x244d, 0x244e, 0x244f, 0x2450, 0x2451,
+ 0x2452, 0x2453, 0x2454, 0x2455, 0x2456, 0x2457, 0x2458, 0x2459,
+ 0x245a, 0x245b, 0x245c, 0x245d, 0x245e, 0x245f, 0x2460, 0x2461,
+ 0x2462, 0x2463, 0x2464, 0x2465, 0x2466, 0x2467, 0x2468, 0x2469,
+ 0x246a, 0x246b, 0x246c, 0x246d, 0x246e, 0x246f, 0x2470, 0x2471,
+ 0x2472, 0x2473, 0x2521, 0x2522, 0x2523, 0x2524, 0x2525, 0x2526,
+ 0x2527, 0x2528, 0x2529, 0x252a, 0x252b, 0x252c, 0x252d, 0x252e,
+ 0x252f, 0x2530, 0x2531, 0x2532, 0x2533, 0x2534, 0x2535, 0x2536,
+ 0x2537, 0x2538, 0x2539, 0x253a, 0x253b, 0x253c, 0x253d, 0x253e,
+ 0x253f, 0x2540, 0x2541, 0x2542, 0x2543, 0x2544, 0x2545, 0x2546,
+ 0x2547, 0x2548, 0x2549, 0x254a, 0x254b, 0x254c, 0x254d, 0x254e,
+ 0x254f, 0x2550, 0x2551, 0x2552, 0x2553, 0x2554, 0x2555, 0x2556,
+ 0x2557, 0x2558, 0x2559, 0x255a, 0x255b, 0x255c, 0x255d, 0x255e,
+ 0x255f, 0x2560, 0x2561, 0x2562, 0x2563, 0x2564, 0x2565, 0x2566,
+ 0x2567, 0x2568, 0x2569, 0x256a, 0x256b, 0x256c, 0x256d, 0x256e,
+ 0x256f, 0x2570, 0x2571, 0x2572, 0x2573, 0x2574, 0x2575, 0x2576,
+ 0x2124, 0x2845, 0x2846, 0x2847, 0x2848, 0x2849, 0x284a, 0x284b,
+ 0x284c, 0x284d, 0x284e, 0x284f, 0x2850, 0x2851, 0x2852, 0x2853,
+ 0x2854, 0x2855, 0x2856, 0x2857, 0x2858, 0x2859, 0x285a, 0x285b,
+ 0x285c, 0x285d, 0x285e, 0x285f, 0x2860, 0x2861, 0x2862, 0x2863,
+ 0x2864, 0x2865, 0x2866, 0x2867, 0x2868, 0x2869, 0x2265, 0x2266,
+ 0x2267, 0x2268, 0x2269, 0x226a, 0x226b, 0x226c, 0x226d, 0x226e,
+ 0x523b, 0x3621, 0x465f, 0x4d72, 0x5549, 0x487d, 0x494f, 0x4f42,
+ 0x5822, 0x323b, 0x536b, 0x5824, 0x3373, 0x5728, 0x4752, 0x5827,
+ 0x4a40, 0x4770, 0x317b, 0x5235, 0x3454, 0x362b, 0x4b3f, 0x5829,
+ 0x362a, 0x413d, 0x514f, 0x4925, 0x582d, 0x3876, 0x513e, 0x635c,
+ 0x5650, 0x3761, 0x342e, 0x4159, 0x583c, 0x4d68, 0x3524, 0x4e2a,
+ 0x5677, 0x4076, 0x3e59, 0x582f, 0x444b, 0x3e43, 0x5831, 0x4334,
+ 0x5265, 0x562e, 0x4e5a, 0x5527, 0x3a75, 0x3726, 0x4056, 0x4639,
+ 0x4552, 0x4747, 0x3954, 0x334b, 0x5252, 0x583f, 0x3e45, 0x4672,
+ 0x5232, 0x4f30, 0x4f67, 0x4a69, 0x5840, 0x4272, 0x4252, 0x4869,
+ 0x472c, 0x414b, 0x5368, 0x5579, 0x4a42, 0x367e, 0x5821, 0x535a,
+ 0x3f77, 0x5446, 0x3b25, 0x5841, 0x4e65, 0x3e2e, 0x5828, 0x5147,
+ 0x5029, 0x583d, 0x596f, 0x4d76, 0x3f3a, 0x3d3b, 0x3a25, 0x5260,
+ 0x327a, 0x3a60, 0x4436, 0x4f6d, 0x3e29, 0x4d24, 0x4141, 0x4757,
+ 0x5971, 0x5974, 0x484b, 0x5869, 0x525a, 0x4a32, 0x484a, 0x586c,
+ 0x586a, 0x5846, 0x3d76, 0x464d, 0x3370, 0x586b, 0x3d71, 0x3d69,
+ 0x4854, 0x3453, 0x4258, 0x3256, 0x5750, 0x4a4b, 0x4b7b, 0x554c,
+ 0x3836, 0x4f49, 0x595a, 0x5870, 0x472a, 0x586e, 0x347a, 0x416e,
+ 0x5254, 0x586d, 0x5247, 0x586f, 0x4347, 0x5176, 0x5659, 0x5872,
+ 0x5875, 0x3c7e, 0x3c5b, 0x484e, 0x375d, 0x3742, 0x4673, 0x5878,
+ 0x5241, 0x4e69, 0x3c3f, 0x377c, 0x3725, 0x505d, 0x565a, 0x5345,
+ 0x3b6f, 0x3b61, 0x5871, 0x4921, 0x4e30, 0x342b, 0x5873, 0x494b,
+ 0x5876, 0x4257, 0x5877, 0x4e31, 0x5879, 0x322e, 0x3940, 0x5923,
+ 0x3069, 0x4166, 0x496c, 0x4b45, 0x4b46, 0x5924, 0x3568, 0x352b,
+ 0x4e3b, 0x354d, 0x5721, 0x5774, 0x5353, 0x4c65, 0x3a4e, 0x5922,
+ 0x595c, 0x5360, 0x587d, 0x3770, 0x5777, 0x587e, 0x587a, 0x5921,
+ 0x4463, 0x5336, 0x5874, 0x595d, 0x587b, 0x4565, 0x4050, 0x5170,
+ 0x305b, 0x3c51, 0x5926, 0x5925, 0x592c, 0x592e, 0x592b, 0x4a39,
+ 0x5929, 0x5636, 0x335e, 0x5928, 0x407d, 0x4a4c, 0x592a, 0x5927,
+ 0x5930, 0x3631, 0x3929, 0x5240, 0x4f40, 0x4242, 0x3d44, 0x556c,
+ 0x3260, 0x4748, 0x3f6b, 0x592d, 0x592f, 0x4e6a, 0x3a6e, 0x4756,
+ 0x3163, 0x3459, 0x366d, 0x5934, 0x3f21, 0x595e, 0x474e, 0x407e,
+ 0x5938, 0x4b57, 0x377d, 0x5935, 0x5937, 0x3123, 0x5361, 0x5939,
+ 0x5045, 0x5936, 0x5931, 0x5932, 0x4129, 0x5933, 0x3c73, 0x505e,
+ 0x3829, 0x3e63, 0x593d, 0x593a, 0x3033, 0x5942, 0x5944, 0x3136,
+ 0x593f, 0x3539, 0x3e73, 0x4c48, 0x3a72, 0x5250, 0x5943, 0x3d68,
+ 0x332b, 0x5945, 0x3e6b, 0x5946, 0x593b, 0x445f, 0x593e, 0x5941,
+ 0x5940, 0x552e, 0x5635, 0x4763, 0x5948, 0x3c59, 0x594a, 0x593c,
+ 0x594b, 0x462b, 0x5949, 0x5776, 0x4d23, 0x3d21, 0x594c, 0x453c,
+ 0x4d35, 0x594d, 0x5947, 0x3325, 0x3f7e, 0x3835, 0x407c, 0x3078,
+ 0x3476, 0x594e, 0x594f, 0x3422, 0x5950, 0x345f, 0x3041, 0x5951,
+ 0x4935, 0x4f71, 0x5952, 0x4145, 0x5956, 0x492e, 0x5955, 0x5954,
+ 0x5957, 0x4b5b, 0x3d29, 0x4627, 0x5953, 0x5958, 0x5959, 0x4865,
+ 0x405c, 0x3679, 0x5823, 0x544a, 0x542a, 0x5056, 0x3364, 0x5557,
+ 0x4f48, 0x3962, 0x3f4b, 0x4362, 0x3652, 0x4d43, 0x596e, 0x5970,
+ 0x3533, 0x3635, 0x3e24, 0x486b, 0x482b, 0x304b, 0x392b, 0x4179,
+ 0x5962, 0x403c, 0x3932, 0x3958, 0x504b, 0x3178, 0x4664, 0x3e5f,
+ 0x3564, 0x5748, 0x5178, 0x3c66, 0x4a5e, 0x3c3d, 0x5966, 0x5867,
+ 0x445a, 0x3854, 0x483d, 0x3261, 0x5459, 0x4330, 0x4361, 0x5a22,
+ 0x485f, 0x5034, 0x3e7c, 0x4529, 0x395a, 0x5a23, 0x5429, 0x5a24,
+ 0x597b, 0x362c, 0x376b, 0x3179, 0x597c, 0x3365, 0x3e76, 0x3f76,
+ 0x5231, 0x4064, 0x3633, 0x597e, 0x597d, 0x3e3b, 0x4660, 0x573c,
+ 0x5a21, 0x4139, 0x3572, 0x4168, 0x3c75, 0x3455, 0x415d, 0x447d,
+ 0x3c38, 0x3732, 0x376f, 0x596c, 0x463e, 0x3f2d, 0x3b4b, 0x354a,
+ 0x5b49, 0x5057, 0x4d39, 0x303c, 0x3376, 0x3b77, 0x5b4a, 0x3a2f,
+ 0x5464, 0x3536, 0x3573, 0x5856, 0x4850, 0x3756, 0x4750, 0x5857,
+ 0x3f2f, 0x5b3b, 0x5858, 0x504c, 0x3b2e, 0x6b3e, 0x4150, 0x4175,
+ 0x5472, 0x3855, 0x3434, 0x3375, 0x493e, 0x4550, 0x4559, 0x407b,
+ 0x3170, 0x5859, 0x394e, 0x353d, 0x585a, 0x5646, 0x4b22, 0x482f,
+ 0x4932, 0x344c, 0x3f4c, 0x3974, 0x585b, 0x585c, 0x3667, 0x3c41,
+ 0x4c6a, 0x4f77, 0x585d, 0x4730, 0x3950, 0x3d23, 0x4c5e, 0x464a,
+ 0x5860, 0x585e, 0x585f, 0x307e, 0x3e67, 0x4a23, 0x3c74, 0x3831,
+ 0x386e, 0x5862, 0x3d4b, 0x5864, 0x5863, 0x457c, 0x5865, 0x5866,
+ 0x4126, 0x4830, 0x306c, 0x3926, 0x3c53, 0x4e71, 0x5b3d, 0x4153,
+ 0x362f, 0x567a, 0x452c, 0x3d59, 0x5b3e, 0x5b3f, 0x4078, 0x3e22,
+ 0x404d, 0x5b40, 0x4a46, 0x322a, 0x5342, 0x4363, 0x512b, 0x5b42,
+ 0x4055, 0x5b43, 0x3f31, 0x443c, 0x475a, 0x5b44, 0x5968, 0x4957,
+ 0x3934, 0x4e70, 0x5448, 0x307c, 0x3452, 0x5059, 0x5969, 0x5e4b,
+ 0x596b, 0x5830, 0x3b2f, 0x3131, 0x3357, 0x584e, 0x5451, 0x3d33,
+ 0x3f6f, 0x4f3b, 0x5850, 0x374b, 0x5851, 0x4625, 0x4778, 0x523d,
+ 0x5852, 0x4464, 0x4a2e, 0x4727, 0x5826, 0x497d, 0x4e67, 0x3b5c,
+ 0x306b, 0x3b2a, 0x502d, 0x3130, 0x5764, 0x573f, 0x3525, 0x4274,
+ 0x444f, 0x3229, 0x3237, 0x3165, 0x5f32, 0x553c, 0x3f28, 0x422c,
+ 0x5855, 0x4231, 0x5854, 0x4e54, 0x5a60, 0x4e40, 0x5834, 0x432e,
+ 0x5321, 0x4e23, 0x3c34, 0x4834, 0x4251, 0x3e6d, 0x5036, 0x5a61,
+ 0x4764, 0x3327, 0x3672, 0x4c7c, 0x407a, 0x4077, 0x5139, 0x5161,
+ 0x5847, 0x325e, 0x4065, 0x3a71, 0x5848, 0x542d, 0x4f61, 0x5849,
+ 0x584a, 0x4f43, 0x3378, 0x3e47, 0x584b, 0x5b4c, 0x4825, 0x4f58,
+ 0x487e, 0x324e, 0x5356, 0x3266, 0x3c30, 0x5351, 0x4b2b, 0x3734,
+ 0x3722, 0x4a65, 0x4821, 0x4a5c, 0x3164, 0x5070, 0x4551, 0x5b45,
+ 0x357e, 0x3f5a, 0x3945, 0x3e64, 0x416d, 0x5f36, 0x5f35, 0x563b,
+ 0x3d50, 0x5559, 0x3048, 0x3623, 0x3f49, 0x4c28, 0x5f33, 0x4a37,
+ 0x5352, 0x584f, 0x5236, 0x3a45, 0x4b3e, 0x4c3e, 0x5f37, 0x3570,
+ 0x5f34, 0x5375, 0x3354, 0x3877, 0x5f3a, 0x3a4f, 0x3c2a, 0x3575,
+ 0x4d2c, 0x437b, 0x3a73, 0x4074, 0x4d42, 0x4f72, 0x5f38, 0x4f45,
+ 0x4240, 0x5f39, 0x4270, 0x3e7d, 0x415f, 0x4d4c, 0x5277, 0x374d,
+ 0x5f41, 0x5f44, 0x3771, 0x3049, 0x3656, 0x3754, 0x3a2c, 0x4c7d,
+ 0x3f54, 0x4b31, 0x4674, 0x5628, 0x5f45, 0x4e62, 0x3333, 0x4e7c,
+ 0x3435, 0x4e47, 0x3a70, 0x4e61, 0x513d, 0x5f40, 0x3474, 0x334a,
+ 0x3866, 0x5f3b, 0x4445, 0x5f3c, 0x5f3d, 0x5f3e, 0x453b, 0x5f3f,
+ 0x5f42, 0x5431, 0x5f43, 0x473a, 0x4e58, 0x4458, 0x5f4a, 0x5f4f,
+ 0x565c, 0x5f49, 0x5f5a, 0x4e36, 0x3a47, 0x5f4e, 0x5f48, 0x455e,
+ 0x496b, 0x3a74, 0x437c, 0x3e57, 0x5f46, 0x5f4d, 0x4558, 0x5526,
+ 0x3a4d, 0x3e4c, 0x533d, 0x3840, 0x5664, 0x5f47, 0x393e, 0x3f27,
+ 0x417c, 0x5f4b, 0x5f4c, 0x5f50, 0x5f5b, 0x5f65, 0x5f57, 0x5f56,
+ 0x5749, 0x5f63, 0x5f64, 0x656b, 0x5227, 0x5f52, 0x3f29, 0x545b,
+ 0x3f48, 0x5f54, 0x4f4c, 0x5f5d, 0x514a, 0x5f5e, 0x3027, 0x4637,
+ 0x5f53, 0x3a65, 0x365f, 0x4d5b, 0x397e, 0x5455, 0x5f5f, 0x4f6c,
+ 0x3025, 0x5f67, 0x5f51, 0x5146, 0x5f55, 0x5f58, 0x5f59, 0x5f5c,
+ 0x3b29, 0x5f60, 0x5f61, 0x5f62, 0x5f66, 0x5f68, 0x5334, 0x3867,
+ 0x4536, 0x5f6a, 0x495a, 0x4128, 0x4444, 0x3f5e, 0x4f78, 0x555c,
+ 0x5f6e, 0x3238, 0x3a5f, 0x5f6c, 0x5b41, 0x5164, 0x4b74, 0x343d,
+ 0x3026, 0x5f71, 0x4c46, 0x5f72, 0x5f6d, 0x5f69, 0x5f6b, 0x5f6f,
+ 0x5f70, 0x3b3d, 0x5f73, 0x5f74, 0x3b23, 0x4a5b, 0x4e28, 0x6027,
+ 0x332a, 0x6026, 0x6021, 0x5f7e, 0x4d59, 0x5f7c, 0x5f7a, 0x3f50,
+ 0x5744, 0x494c, 0x5f78, 0x3021, 0x5f7d, 0x5f7b, 0x6022, 0x6028,
+ 0x3748, 0x4621, 0x4936, 0x4032, 0x5f75, 0x453e, 0x5844, 0x5f79,
+ 0x4476, 0x6023, 0x6024, 0x6025, 0x5025, 0x6034, 0x4c64, 0x6031,
+ 0x3f26, 0x602f, 0x4e39, 0x602b, 0x4946, 0x402e, 0x602e, 0x3a6d,
+ 0x3a30, 0x6029, 0x5f76, 0x6033, 0x6038, 0x342d, 0x6039, 0x4f32,
+ 0x3a48, 0x6030, 0x507a, 0x602c, 0x547b, 0x5f77, 0x4567, 0x602d,
+ 0x5377, 0x6036, 0x6037, 0x6044, 0x5061, 0x603c, 0x6049, 0x604a,
+ 0x603e, 0x602a, 0x4924, 0x6041, 0x6032, 0x4a48, 0x6043, 0x6035,
+ 0x4e4b, 0x4b43, 0x604d, 0x6046, 0x6042, 0x604b, 0x603a, 0x603f,
+ 0x6040, 0x6045, 0x6047, 0x6048, 0x604c, 0x603b, 0x4b54, 0x6055,
+ 0x6056, 0x6052, 0x6050, 0x3c4e, 0x6051, 0x3842, 0x5845, 0x506a,
+ 0x426f, 0x604f, 0x603d, 0x6054, 0x6053, 0x6057, 0x605c, 0x6058,
+ 0x5676, 0x3330, 0x576c, 0x4b3b, 0x605a, 0x4e7b, 0x3a59, 0x6061,
+ 0x605d, 0x522d, 0x6062, 0x605b, 0x6059, 0x605f, 0x6060, 0x605e,
+ 0x6064, 0x4677, 0x582c, 0x546b, 0x6066, 0x4a49, 0x6065, 0x3841,
+ 0x6067, 0x6068, 0x6069, 0x6063, 0x3a3f, 0x4c67, 0x606a, 0x4f79,
+ 0x606b, 0x4842, 0x3d40, 0x4452, 0x606c, 0x606d, 0x4774, 0x4b44,
+ 0x606e, 0x3b58, 0x5836, 0x5272, 0x606f, 0x4d45, 0x365a, 0x6071,
+ 0x5430, 0x4027, 0x3451, 0x4e27, 0x6070, 0x6072, 0x394c, 0x397a,
+ 0x4d3c, 0x6073, 0x4654, 0x6074, 0x5432, 0x4826, 0x6076, 0x6075,
+ 0x6077, 0x4d41, 0x4a25, 0x545a, 0x5b57, 0x5b59, 0x5b58, 0x3967,
+ 0x5b5c, 0x5b5d, 0x3558, 0x5b5a, 0x5b5b, 0x3321, 0x5b5f, 0x3b78,
+ 0x5637, 0x5b60, 0x3e79, 0x373b, 0x5b50, 0x4c2e, 0x3f32, 0x3b35,
+ 0x5778, 0x3f53, 0x3f69, 0x3c61, 0x4c33, 0x5b5e, 0x3053, 0x4e6b,
+ 0x3758, 0x5739, 0x4642, 0x4024, 0x4c39, 0x5b67, 0x5b61, 0x463a,
+ 0x5b63, 0x5b68, 0x4577, 0x5b6a, 0x5b69, 0x3f40, 0x5b66, 0x5b65,
+ 0x3439, 0x402c, 0x4222, 0x5b62, 0x5b64, 0x504d, 0x5b6d, 0x405d,
+ 0x5b72, 0x3662, 0x5b73, 0x5b52, 0x3938, 0x542b, 0x5b6c, 0x3f51,
+ 0x5b70, 0x5b51, 0x3566, 0x5b6b, 0x3f65, 0x5b6e, 0x5b71, 0x5b79,
+ 0x3921, 0x3023, 0x4271, 0x3347, 0x5b6f, 0x5b78, 0x4652, 0x5b74,
+ 0x5b75, 0x5b77, 0x5b76, 0x5b7e, 0x5372, 0x323a, 0x5b7d, 0x5c24,
+ 0x5b7b, 0x5b7a, 0x5b7c, 0x4560, 0x3b79, 0x5c23, 0x5c25, 0x4c43,
+ 0x3651, 0x5d40, 0x5c21, 0x5c22, 0x4735, 0x3669, 0x5c27, 0x5c26,
+ 0x5c29, 0x3124, 0x354c, 0x3f30, 0x515f, 0x3642, 0x5c28, 0x4b7a,
+ 0x6b73, 0x4b5c, 0x4b7e, 0x4c41, 0x487b, 0x5c2a, 0x4c6e, 0x5c2b,
+ 0x5b53, 0x5c2f, 0x5c2c, 0x3e33, 0x4a7b, 0x5c2d, 0x494a, 0x4439,
+ 0x473d, 0x5c2e, 0x5476, 0x5066, 0x442b, 0x3655, 0x5b54, 0x315a,
+ 0x5b55, 0x5b56, 0x3a3e, 0x4840, 0x4a3f, 0x4849, 0x5733, 0x4979,
+ 0x3f47, 0x3a78, 0x523c, 0x623a, 0x3426, 0x3138, 0x3834, 0x4f44,
+ 0x5967, 0x4f26, 0x4d62, 0x596d, 0x3660, 0x5239, 0x393b, 0x6239,
+ 0x6237, 0x3473, 0x4c6c, 0x4c2b, 0x3772, 0x5832, 0x516b, 0x3a3b,
+ 0x4a27, 0x4d37, 0x5244, 0x3f64, 0x3c50, 0x3661, 0x5e45, 0x5e46,
+ 0x5b3c, 0x5159, 0x4666, 0x444e, 0x376e, 0x375c, 0x3f7c, 0x5760,
+ 0x4675, 0x313c, 0x5e48, 0x3d31, 0x4c57, 0x5e4a, 0x5e49, 0x356c,
+ 0x495d, 0x3042, 0x452e, 0x452b, 0x444c, 0x3c69, 0x4b7d, 0x3a43,
+ 0x6579, 0x4867, 0x657a, 0x4d7d, 0x5731, 0x383e, 0x4268, 0x4851,
+ 0x657b, 0x364a, 0x3c4b, 0x517d, 0x6621, 0x436e, 0x6624, 0x657e,
+ 0x6625, 0x4d57, 0x3741, 0x657c, 0x657d, 0x6623, 0x445d, 0x6628,
+ 0x6627, 0x4343, 0x465e, 0x662a, 0x4437, 0x6622, 0x4a3c, 0x3d63,
+ 0x3943, 0x6626, 0x5055, 0x4e2f, 0x6629, 0x6630, 0x5226, 0x3d2a,
+ 0x662d, 0x662f, 0x4051, 0x524c, 0x3c27, 0x6631, 0x5276, 0x574b,
+ 0x4d7e, 0x4d5e, 0x4226, 0x662b, 0x662c, 0x3d3f, 0x662e, 0x6633,
+ 0x6632, 0x6636, 0x6638, 0x446f, 0x4448, 0x3e6a, 0x496f, 0x6637,
+ 0x3670, 0x4364, 0x5369, 0x6634, 0x6635, 0x4822, 0x663d, 0x6639,
+ 0x4645, 0x4d71, 0x663b, 0x663c, 0x3b69, 0x663e, 0x663a, 0x4037,
+ 0x5324, 0x663f, 0x4974, 0x6643, 0x6644, 0x5076, 0x433d, 0x4344,
+ 0x6642, 0x6641, 0x6647, 0x4f31, 0x6b74, 0x664a, 0x6645, 0x3c5e,
+ 0x4929, 0x3c35, 0x4f53, 0x6648, 0x6649, 0x664e, 0x6650, 0x6651,
+ 0x664b, 0x3555, 0x664c, 0x664f, 0x445b, 0x6646, 0x664d, 0x6652,
+ 0x6654, 0x6653, 0x6655, 0x5978, 0x6656, 0x6657, 0x5753, 0x665d,
+ 0x665e, 0x3f57, 0x5450, 0x5756, 0x3466, 0x4b6f, 0x665a, 0x5843,
+ 0x574e, 0x5022, 0x434f, 0x665f, 0x3c3e, 0x3942, 0x665b, 0x5127,
+ 0x3a22, 0x424f, 0x582b, 0x4a6b, 0x656e, 0x665c, 0x3775, 0x4866,
+ 0x4475, 0x6532, 0x447e, 0x4b7c, 0x6533, 0x552c, 0x536e, 0x4a58,
+ 0x3032, 0x4b4e, 0x4d6a, 0x3a6a, 0x6535, 0x6534, 0x575a, 0x3959,
+ 0x5666, 0x3628, 0x4d70, 0x524b, 0x3126, 0x4a35, 0x3368, 0x4973,
+ 0x3f4d, 0x507b, 0x4a52, 0x6536, 0x3b42, 0x4f5c, 0x392c, 0x5457,
+ 0x3a26, 0x5167, 0x4f7c, 0x3c52, 0x6537, 0x485d, 0x3f6d, 0x3176,
+ 0x4b5e, 0x3c45, 0x3c44, 0x527a, 0x435c, 0x3f5c, 0x383b, 0x4342,
+ 0x3a2e, 0x5422, 0x475e, 0x442f, 0x326c, 0x3951, 0x653b, 0x4148,
+ 0x552f, 0x653c, 0x653e, 0x3467, 0x3654, 0x4b42, 0x5130, 0x353c,
+ 0x4a59, 0x3762, 0x4964, 0x3d2b, 0x4e3e, 0x5770, 0x5021, 0x4959,
+ 0x367b, 0x6658, 0x3c62, 0x333e, 0x4950, 0x6659, 0x3322, 0x5e4c,
+ 0x5348, 0x5e4d, 0x5222, 0x5e4e, 0x3e4d, 0x5e4f, 0x4a2c, 0x527c,
+ 0x335f, 0x656a, 0x4461, 0x3e21, 0x4e32, 0x4472, 0x3e56, 0x4628,
+ 0x3263, 0x3e53, 0x477c, 0x4c6b, 0x3d6c, 0x4e5d, 0x4a3a, 0x4641,
+ 0x656c, 0x503c, 0x5539, 0x656d, 0x4a74, 0x4d40, 0x4245, 0x656f,
+ 0x4244, 0x6570, 0x6578, 0x4d4d, 0x493d, 0x5259, 0x6128, 0x536c,
+ 0x4b6a, 0x4671, 0x612c, 0x6127, 0x6129, 0x612a, 0x612f, 0x326d,
+ 0x612b, 0x385a, 0x612d, 0x612e, 0x6130, 0x353a, 0x6131, 0x6133,
+ 0x6138, 0x5152, 0x6136, 0x6135, 0x416b, 0x6137, 0x5440, 0x6132,
+ 0x613a, 0x3036, 0x6134, 0x3f79, 0x6139, 0x613b, 0x613e, 0x613c,
+ 0x5645, 0x4f3f, 0x613d, 0x613f, 0x424d, 0x366b, 0x5378, 0x474d,
+ 0x3765, 0x3e7e, 0x6140, 0x6141, 0x6147, 0x3367, 0x4669, 0x345e,
+ 0x5142, 0x6148, 0x6146, 0x6145, 0x6143, 0x6142, 0x3140, 0x5538,
+ 0x6144, 0x614b, 0x614c, 0x614a, 0x6f7a, 0x6153, 0x6152, 0x4736,
+ 0x6149, 0x614e, 0x6150, 0x6154, 0x6151, 0x614d, 0x614f, 0x6155,
+ 0x6156, 0x6157, 0x6158, 0x615a, 0x615b, 0x4e21, 0x675d, 0x3428,
+ 0x565d, 0x5132, 0x3332, 0x3924, 0x5773, 0x4749, 0x3e5e, 0x392e,
+ 0x4e57, 0x326e, 0x5b4f, 0x3c3a, 0x5251, 0x4b48, 0x304d, 0x4f6f,
+ 0x5963, 0x3d6d, 0x3152, 0x4a50, 0x323c, 0x4b27, 0x372b, 0x4a26,
+ 0x4f23, 0x6078, 0x554a, 0x607b, 0x607a, 0x4541, 0x4c7b, 0x4131,
+ 0x6079, 0x5663, 0x322f, 0x5644, 0x355b, 0x3478, 0x5621, 0x4f2f,
+ 0x306f, 0x607c, 0x6121, 0x3323, 0x607d, 0x607e, 0x4331, 0x435d,
+ 0x6122, 0x3779, 0x3b4f, 0x6123, 0x443b, 0x6124, 0x6125, 0x6126,
+ 0x3431, 0x3849, 0x463d, 0x446a, 0x3222, 0x5052, 0x675b, 0x3b43,
+ 0x5357, 0x5344, 0x3963, 0x624f, 0x572f, 0x476c, 0x3153, 0x3432,
+ 0x6251, 0x5072, 0x422e, 0x6250, 0x3f62, 0x5326, 0x3557, 0x6252,
+ 0x356a, 0x436d, 0x387d, 0x382e, 0x4553, 0x374f, 0x6254, 0x6253,
+ 0x3648, 0x5779, 0x4d25, 0x6258, 0x6256, 0x4a7c, 0x3f35, 0x5339,
+ 0x6255, 0x6257, 0x412e, 0x4048, 0x625b, 0x625a, 0x402a, 0x414e,
+ 0x625c, 0x625d, 0x625e, 0x5b48, 0x5153, 0x4d22, 0x3d28, 0x5e43,
+ 0x5825, 0x3f2a, 0x5b4d, 0x526c, 0x467a, 0x452a, 0x5e44, 0x3157,
+ 0x5f2e, 0x4a3d, 0x5f31, 0x392d, 0x527d, 0x3825, 0x3a6b, 0x335a,
+ 0x355c, 0x5545, 0x4356, 0x4f52, 0x3b21, 0x6573, 0x6572, 0x6574,
+ 0x4d64, 0x4875, 0x352f, 0x473f, 0x6576, 0x6c30, 0x6566, 0x3969,
+ 0x3531, 0x423c, 0x6568, 0x6567, 0x6569, 0x524d, 0x616a, 0x504e,
+ 0x4d2e, 0x5165, 0x324a, 0x316b, 0x3172, 0x456d, 0x5543, 0x5330,
+ 0x615c, 0x615d, 0x525b, 0x3339, 0x314b, 0x4d79, 0x5577, 0x615e,
+ 0x3e36, 0x347d, 0x615f, 0x3a5c, 0x6160, 0x3b32, 0x4249, 0x6161,
+ 0x506c, 0x4d3d, 0x6162, 0x3543, 0x4547, 0x6163, 0x6164, 0x5379,
+ 0x6165, 0x512d, 0x6166, 0x4e22, 0x6167, 0x3542, 0x6168, 0x3b55,
+ 0x5044, 0x6260, 0x3158, 0x5264, 0x6261, 0x3c49, 0x484c, 0x6263,
+ 0x6c7e, 0x6c7d, 0x5f2f, 0x6262, 0x563e, 0x4d7c, 0x4326, 0x6343,
+ 0x5652, 0x6267, 0x6268, 0x5347, 0x626c, 0x3f6c, 0x626d, 0x6265,
+ 0x3340, 0x446e, 0x626e, 0x5043, 0x3a76, 0x6269, 0x375e, 0x3b33,
+ 0x4c2c, 0x4b4b, 0x6264, 0x6266, 0x626a, 0x626b, 0x6277, 0x6274,
+ 0x5475, 0x6273, 0x452d, 0x557a, 0x4542, 0x3240, 0x626f, 0x6272,
+ 0x412f, 0x4b3c, 0x3521, 0x6279, 0x3c31, 0x6271, 0x5054, 0x5439,
+ 0x6275, 0x3956, 0x6276, 0x4753, 0x6270, 0x575c, 0x6d21, 0x6278,
+ 0x6d25, 0x627e, 0x4a51, 0x4135, 0x3b50, 0x3f56, 0x3a63, 0x4b21,
+ 0x6d26, 0x6d23, 0x6d22, 0x3b56, 0x6d27, 0x5074, 0x6d24, 0x3a5e,
+ 0x3677, 0x6321, 0x3632, 0x4c71, 0x3927, 0x4f22, 0x4721, 0x3f52,
+ 0x3671, 0x627a, 0x627b, 0x627d, 0x627c, 0x4455, 0x6322, 0x5341,
+ 0x6327, 0x4744, 0x4f24, 0x6329, 0x3a37, 0x6328, 0x3b5a, 0x6323,
+ 0x6324, 0x632a, 0x6326, 0x4e72, 0x5346, 0x3b3c, 0x5443, 0x447a,
+ 0x6d28, 0x507c, 0x6325, 0x4375, 0x632d, 0x312f, 0x6332, 0x3c42,
+ 0x632c, 0x353f, 0x4769, 0x6330, 0x3e2a, 0x4d6f, 0x3b73, 0x4c68,
+ 0x632f, 0x6331, 0x4f27, 0x632e, 0x4e29, 0x3b5d, 0x356b, 0x3e65,
+ 0x3252, 0x334d, 0x3139, 0x632b, 0x3251, 0x352c, 0x395f, 0x3668,
+ 0x4f6b, 0x6337, 0x3b4c, 0x4847, 0x504a, 0x6338, 0x336e, 0x6d29,
+ 0x537a, 0x5364, 0x6d2a, 0x6339, 0x5262, 0x6335, 0x535e, 0x3850,
+ 0x6333, 0x6336, 0x375f, 0x6334, 0x4022, 0x633a, 0x5438, 0x3448,
+ 0x633b, 0x3b45, 0x4977, 0x4965, 0x443d, 0x6d2b, 0x427d, 0x3b5b,
+ 0x3f2e, 0x4e3f, 0x633c, 0x3f36, 0x316f, 0x5477, 0x633e, 0x6d2d,
+ 0x633f, 0x3a29, 0x6d2c, 0x633d, 0x6340, 0x3a36, 0x362e, 0x5038,
+ 0x3043, 0x6d2e, 0x6d2f, 0x4041, 0x6341, 0x4533, 0x6342, 0x5c32,
+ 0x6d30, 0x386a, 0x4e6c, 0x6a27, 0x5067, 0x4a79, 0x4856, 0x4f37,
+ 0x3349, 0x4e52, 0x3d64, 0x635e, 0x3b72, 0x6a28, 0x553d, 0x465d,
+ 0x6a29, 0x6a2a, 0x6a2c, 0x6a2b, 0x6a2e, 0x6a2d, 0x3d58, 0x6a2f,
+ 0x423e, 0x3441, 0x3477, 0x3b27, 0x6c66, 0x6c65, 0x373f, 0x4b79,
+ 0x3162, 0x6c67, 0x4948, 0x6c68, 0x6c69, 0x4a56, 0x5e50, 0x3245,
+ 0x547a, 0x464b, 0x3047, 0x3472, 0x4853, 0x4d50, 0x3f38, 0x3f5b,
+ 0x4724, 0x5634, 0x4029, 0x5e51, 0x4928, 0x516f, 0x4524, 0x3067,
+ 0x3336, 0x4845, 0x3062, 0x3776, 0x457a, 0x3673, 0x5552, 0x3350,
+ 0x3c3c, 0x332d, 0x3e71, 0x3051, 0x5256, 0x4a63, 0x5725, 0x4d36,
+ 0x3636, 0x3f39, 0x555b, 0x3827, 0x4557, 0x5e52, 0x3f59, 0x4255,
+ 0x4740, 0x3b24, 0x3128, 0x456a, 0x457b, 0x4c27, 0x3127, 0x3556,
+ 0x4428, 0x5e53, 0x513a, 0x3369, 0x4372, 0x3777, 0x5674, 0x3523,
+ 0x3270, 0x4434, 0x4469, 0x402d, 0x5e54, 0x3068, 0x4544, 0x4160,
+ 0x3955, 0x3e5c, 0x4d58, 0x304e, 0x4d4f, 0x5e56, 0x3e50, 0x573e,
+ 0x5e55, 0x5550, 0x305d, 0x4462, 0x4223, 0x3c70, 0x5335, 0x4039,
+ 0x4521, 0x3226, 0x5471, 0x4028, 0x4a43, 0x5e57, 0x557c, 0x3930,
+ 0x482d, 0x4b29, 0x5e59, 0x3f3d, 0x4634, 0x5727, 0x4a30, 0x4443,
+ 0x3356, 0x3952, 0x5638, 0x6a7c, 0x3034, 0x3f66, 0x4c74, 0x4d5a,
+ 0x563f, 0x424e, 0x4e4e, 0x4c22, 0x502e, 0x4453, 0x3532, 0x5e58,
+ 0x5575, 0x3c37, 0x3b53, 0x3024, 0x4532, 0x346c, 0x5571, 0x6a7d,
+ 0x5e5a, 0x4d26, 0x4d6c, 0x4e66, 0x5e5c, 0x4d31, 0x4026, 0x573d,
+ 0x5e5b, 0x3046, 0x3a34, 0x4953, 0x4473, 0x3e68, 0x3236, 0x404c,
+ 0x4b70, 0x3c71, 0x3b3b, 0x3537, 0x4575, 0x5e66, 0x5e63, 0x3e5d,
+ 0x5e5f, 0x3437, 0x3d5d, 0x5e60, 0x446d, 0x4f46, 0x3560, 0x365e,
+ 0x4a5a, 0x3574, 0x5e65, 0x5546, 0x5e61, 0x4c4d, 0x467e, 0x4545,
+ 0x5234, 0x3e72, 0x4253, 0x4c3d, 0x3338, 0x3d53, 0x3f58, 0x4d46,
+ 0x515a, 0x346b, 0x5e64, 0x5e5d, 0x5e67, 0x6a7e, 0x4230, 0x5e62,
+ 0x5640, 0x3527, 0x3274, 0x5e68, 0x5e72, 0x5e6d, 0x5e71, 0x4860,
+ 0x5761, 0x5e6f, 0x4368, 0x4c61, 0x3265, 0x523e, 0x5e6e, 0x5e6b,
+ 0x4e55, 0x3427, 0x3f2b, 0x3e3e, 0x3d52, 0x5e69, 0x542e, 0x5e5e,
+ 0x5e6a, 0x403f, 0x5e6c, 0x3273, 0x3869, 0x4227, 0x3d41, 0x5e75,
+ 0x5e78, 0x322b, 0x3424, 0x346a, 0x4926, 0x5e76, 0x4b51, 0x3863,
+ 0x5e77, 0x5e7a, 0x5e79, 0x4c42, 0x3061, 0x346e, 0x653a, 0x502f,
+ 0x326b, 0x6b21, 0x5e74, 0x4963, 0x5e73, 0x305a, 0x5221, 0x3177,
+ 0x4c2f, 0x5e70, 0x4b24, 0x552a, 0x5e7b, 0x345d, 0x4426, 0x5e7d,
+ 0x437e, 0x4421, 0x5f21, 0x414c, 0x5e7c, 0x3e6f, 0x4632, 0x3345,
+ 0x4876, 0x4b3a, 0x5e7e, 0x5f24, 0x5732, 0x3337, 0x4143, 0x474b,
+ 0x3225, 0x3469, 0x572b, 0x446c, 0x5f22, 0x5f23, 0x5f25, 0x3a33,
+ 0x5f26, 0x405e, 0x4943, 0x3259, 0x4766, 0x5f27, 0x475c, 0x5f28,
+ 0x6b22, 0x4b53, 0x5f2a, 0x5f29, 0x3241, 0x454a, 0x5f2b, 0x545c,
+ 0x4841, 0x5f2c, 0x3e70, 0x5f2d, 0x5627, 0x6a37, 0x6b36, 0x4a55,
+ 0x587c, 0x3844, 0x3925, 0x3745, 0x557e, 0x394a, 0x5027, 0x744d,
+ 0x3550, 0x4374, 0x3e48, 0x6b37, 0x303d, 0x3d4c, 0x4132, 0x3156,
+ 0x3328, 0x3852, 0x4922, 0x3658, 0x6b38, 0x3e34, 0x4a7d, 0x4743,
+ 0x557b, 0x3773, 0x4e44, 0x552b, 0x3173, 0x6c33, 0x305f, 0x6c35,
+ 0x3637, 0x414f, 0x757a, 0x5031, 0x5565, 0x4e53, 0x3d6f, 0x3362,
+ 0x382b, 0x5536, 0x6d3d, 0x364f, 0x4b39, 0x5042, 0x373d, 0x6c36,
+ 0x4a29, 0x4554, 0x6c39, 0x6c38, 0x4243, 0x6c37, 0x507d, 0x6c3a,
+ 0x6c3b, 0x5765, 0x6c3c, 0x6c3d, 0x466c, 0x4e5e, 0x3c48, 0x4855,
+ 0x3529, 0x3e49, 0x563c, 0x5467, 0x512e, 0x5071, 0x6a38, 0x6a39,
+ 0x6a3a, 0x3a35, 0x4a31, 0x3f75, 0x4d7a, 0x6a40, 0x303a, 0x6a3e,
+ 0x4025, 0x6a3b, 0x327d, 0x4377, 0x3b68, 0x5257, 0x4e74, 0x6a3f,
+ 0x6a3c, 0x6a43, 0x5047, 0x5333, 0x343a, 0x4341, 0x5772, 0x5551,
+ 0x4a47, 0x6a45, 0x6a44, 0x6a47, 0x6a46, 0x5667, 0x4f54, 0x6a4b,
+ 0x3b4e, 0x3d7a, 0x494e, 0x6a4c, 0x4939, 0x4f7e, 0x6a4a, 0x544e,
+ 0x6a4d, 0x6a4f, 0x4d6d, 0x6a49, 0x6a4e, 0x4e6e, 0x3b5e, 0x333f,
+ 0x4655, 0x3e30, 0x4e7a, 0x4767, 0x3e27, 0x6a50, 0x5647, 0x4140,
+ 0x545d, 0x6a51, 0x4f3e, 0x6a52, 0x4a6e, 0x452f, 0x3035, 0x6a54,
+ 0x6a53, 0x745f, 0x443a, 0x3129, 0x655f, 0x6a55, 0x4a6f, 0x6a56,
+ 0x6a57, 0x4658, 0x6a58, 0x6a59, 0x543b, 0x477a, 0x5237, 0x387c,
+ 0x6a42, 0x325c, 0x427c, 0x5478, 0x4c66, 0x576e, 0x5442, 0x5350,
+ 0x6b43, 0x4573, 0x377e, 0x6b54, 0x4b37, 0x6b5e, 0x404a, 0x4d7b,
+ 0x332f, 0x465a, 0x6b7c, 0x443e, 0x4e34, 0x4429, 0x313e, 0x547d,
+ 0x4a75, 0x566c, 0x4653, 0x3664, 0x3b7a, 0x5060, 0x4931, 0x5453,
+ 0x4828, 0x384b, 0x683e, 0x493c, 0x683b, 0x406e, 0x5053, 0x3244,
+ 0x3465, 0x683c, 0x5548, 0x3645, 0x683d, 0x4a78, 0x385c, 0x4c75,
+ 0x4034, 0x516e, 0x683f, 0x6842, 0x3a3c, 0x312d, 0x3d5c, 0x6a3d,
+ 0x6843, 0x6846, 0x684b, 0x684c, 0x4b49, 0x3065, 0x3c2b, 0x3939,
+ 0x6841, 0x4d77, 0x684a, 0x4e76, 0x556d, 0x4156, 0x6844, 0x4336,
+ 0x397b, 0x5626, 0x6848, 0x4a60, 0x5466, 0x6840, 0x6845, 0x6847,
+ 0x4739, 0x3763, 0x6849, 0x3f5d, 0x6852, 0x6857, 0x6855, 0x3c5c,
+ 0x3c4f, 0x685b, 0x685e, 0x685a, 0x317a, 0x3058, 0x4433, 0x384c,
+ 0x4662, 0x483e, 0x4861, 0x684f, 0x6854, 0x6856, 0x3971, 0x6858,
+ 0x5775, 0x447b, 0x685c, 0x3269, 0x6851, 0x3c6d, 0x3f42, 0x684d,
+ 0x5679, 0x4178, 0x3271, 0x685f, 0x4a41, 0x6859, 0x5524, 0x316a,
+ 0x553b, 0x684e, 0x6850, 0x3630, 0x6853, 0x685d, 0x4038, 0x4a77,
+ 0x4b28, 0x465c, 0x4075, 0x6869, 0x5023, 0x6872, 0x566a, 0x6860,
+ 0x6861, 0x5179, 0x3a4b, 0x3879, 0x3871, 0x5454, 0x686f, 0x686e,
+ 0x686c, 0x3970, 0x4c52, 0x6866, 0x4e26, 0x3f72, 0x3038, 0x6871,
+ 0x6870, 0x5740, 0x6864, 0x4d29, 0x4923, 0x3b38, 0x3d5b, 0x686a,
+ 0x6862, 0x6863, 0x6865, 0x3535, 0x6867, 0x4745, 0x686b, 0x686d,
+ 0x3d30, 0x572e, 0x6878, 0x6875, 0x4d30, 0x6876, 0x413a, 0x6868,
+ 0x4337, 0x3070, 0x6874, 0x6877, 0x3923, 0x4952, 0x434e, 0x4e60,
+ 0x4066, 0x4b73, 0x4c5d, 0x5035, 0x4a61, 0x6873, 0x3c6c, 0x6879,
+ 0x435e, 0x4665, 0x3977, 0x3074, 0x5758, 0x3c2c, 0x456f, 0x4c44,
+ 0x6926, 0x492d, 0x6922, 0x4062, 0x3f43, 0x687e, 0x3957, 0x687b,
+ 0x6924, 0x524e, 0x6923, 0x5632, 0x5735, 0x6927, 0x3d37, 0x687c,
+ 0x687d, 0x6921, 0x4d56, 0x522c, 0x6932, 0x6929, 0x342a, 0x343b,
+ 0x692b, 0x5028, 0x6925, 0x337e, 0x692c, 0x4063, 0x692a, 0x6939,
+ 0x6938, 0x692e, 0x687a, 0x6928, 0x3f2c, 0x6931, 0x693a, 0x4225,
+ 0x692f, 0x3845, 0x692d, 0x535c, 0x6934, 0x6935, 0x6937, 0x6947,
+ 0x4046, 0x6945, 0x6930, 0x693b, 0x3071, 0x693c, 0x5525, 0x693e,
+ 0x693f, 0x6941, 0x4171, 0x4836, 0x693d, 0x6942, 0x6943, 0x6933,
+ 0x6936, 0x3b31, 0x6940, 0x3c77, 0x6944, 0x6946, 0x694a, 0x694e,
+ 0x325b, 0x6948, 0x372e, 0x694b, 0x694c, 0x5541, 0x4423, 0x6958,
+ 0x3a61, 0x6949, 0x5323, 0x6954, 0x6957, 0x6950, 0x694f, 0x4741,
+ 0x6952, 0x6959, 0x3348, 0x6953, 0x4f70, 0x694d, 0x3377, 0x6956,
+ 0x695a, 0x4c34, 0x4f2d, 0x6955, 0x695c, 0x695b, 0x695e, 0x6951,
+ 0x695d, 0x695f, 0x434a, 0x4737, 0x344e, 0x3b36, 0x5040, 0x6c23,
+ 0x4537, 0x537b, 0x6c24, 0x6c25, 0x465b, 0x3f6e, 0x6c26, 0x6c27,
+ 0x502a, 0x4738, 0x3868, 0x6c28, 0x5639, 0x557d, 0x344b, 0x323d,
+ 0x4e64, 0x4667, 0x4d61, 0x3475, 0x4b40, 0x3c5f, 0x6962, 0x6963,
+ 0x516a, 0x6965, 0x3479, 0x6964, 0x5133, 0x4a62, 0x3250, 0x6968,
+ 0x6966, 0x6967, 0x5633, 0x6969, 0x696a, 0x696b, 0x696c, 0x6c2f,
+ 0x4539, 0x364e, 0x5273, 0x356e, 0x3b59, 0x6c31, 0x5263, 0x4e63,
+ 0x4438, 0x433f, 0x363e, 0x5839, 0x3148, 0x314f, 0x3151, 0x457e,
+ 0x3150, 0x432b, 0x5531, 0x6b24, 0x3a41, 0x4c3a, 0x6b25, 0x6b27,
+ 0x6b28, 0x6b26, 0x6b29, 0x6b2b, 0x6b2a, 0x6b2c, 0x4a4f, 0x5835,
+ 0x4371, 0x4325, 0x4678, 0x6b2d, 0x444a, 0x6b2e, 0x6b2f, 0x6b30,
+ 0x3755, 0x377a, 0x6b31, 0x4762, 0x6b33, 0x3a24, 0x5175, 0x3031,
+ 0x6b32, 0x6b34, 0x352a, 0x4248, 0x4768, 0x6b35, 0x4b2e, 0x635f,
+ 0x5340, 0x595b, 0x4d21, 0x562d, 0x4773, 0x5960, 0x3b63, 0x3a3a,
+ 0x6362, 0x4f2b, 0x6360, 0x4947, 0x3a39, 0x5134, 0x6361, 0x486a,
+ 0x392f, 0x3d2d, 0x3358, 0x4e5b, 0x4c40, 0x6368, 0x6369, 0x4d74,
+ 0x4c2d, 0x3c33, 0x636a, 0x636b, 0x505a, 0x467b, 0x375a, 0x475f,
+ 0x524a, 0x4e56, 0x6364, 0x636c, 0x4972, 0x3341, 0x6367, 0x4663,
+ 0x6365, 0x6d33, 0x6366, 0x4933, 0x4566, 0x3935, 0x433b, 0x6363,
+ 0x453d, 0x4124, 0x4259, 0x3257, 0x636d, 0x3b26, 0x442d, 0x6370,
+ 0x3e5a, 0x637b, 0x6375, 0x3a53, 0x3750, 0x534d, 0x564e, 0x5553,
+ 0x3941, 0x5534, 0x5158, 0x5039, 0x4776, 0x482a, 0x3234, 0x435a,
+ 0x636e, 0x637c, 0x636f, 0x3728, 0x6377, 0x6374, 0x373a, 0x4522,
+ 0x6376, 0x455d, 0x3228, 0x467c, 0x4460, 0x5722, 0x4061, 0x6379,
+ 0x637a, 0x637d, 0x4c29, 0x6373, 0x533e, 0x3143, 0x6d34, 0x6371,
+ 0x6372, 0x6378, 0x503a, 0x4643, 0x5473, 0x637e, 0x3d60, 0x6427,
+ 0x6426, 0x5173, 0x6423, 0x6429, 0x4877, 0x4f34, 0x6428, 0x642e,
+ 0x4265, 0x3634, 0x3d72, 0x6422, 0x3a69, 0x642a, 0x642c, 0x367d,
+ 0x565e, 0x6432, 0x642d, 0x6421, 0x3b6e, 0x4d5d, 0x4722, 0x4549,
+ 0x4177, 0x6424, 0x4733, 0x3d2c, 0x3d3d, 0x6425, 0x5747, 0x3262,
+ 0x642b, 0x3c43, 0x642f, 0x3b6b, 0x6430, 0x4528, 0x6431, 0x5563,
+ 0x3f23, 0x643a, 0x6437, 0x643b, 0x643d, 0x4656, 0x3a46, 0x404b,
+ 0x3821, 0x6434, 0x5421, 0x3a23, 0x3d7e, 0x643c, 0x4d3f, 0x4479,
+ 0x4f7b, 0x4966, 0x533f, 0x4f51, 0x6433, 0x6438, 0x6439, 0x4c69,
+ 0x4c4e, 0x4054, 0x6435, 0x4130, 0x6436, 0x4e50, 0x3b41, 0x3553,
+ 0x4873, 0x3d27, 0x5547, 0x492c, 0x3822, 0x644a, 0x644c, 0x5144,
+ 0x523a, 0x3a2d, 0x3a54, 0x6443, 0x356d, 0x574d, 0x6440, 0x4f7d,
+ 0x643f, 0x415c, 0x4c4a, 0x4a67, 0x4457, 0x4c54, 0x6448, 0x6447,
+ 0x6441, 0x6444, 0x352d, 0x5359, 0x6446, 0x5279, 0x3463, 0x3b34,
+ 0x496e, 0x343e, 0x3b6c, 0x514d, 0x4c6d, 0x6d35, 0x4765, 0x5428,
+ 0x644b, 0x5755, 0x6442, 0x3d25, 0x6445, 0x5366, 0x6449, 0x4978,
+ 0x643e, 0x5365, 0x477e, 0x3649, 0x547c, 0x3233, 0x6457, 0x4e42,
+ 0x644d, 0x4e3c, 0x385b, 0x6456, 0x3f4a, 0x534e, 0x436c, 0x4548,
+ 0x6458, 0x4d44, 0x644f, 0x6454, 0x6455, 0x3a7e, 0x4f66, 0x553f,
+ 0x6452, 0x6450, 0x644e, 0x4d65, 0x4a2a, 0x4023, 0x3d26, 0x6453,
+ 0x3848, 0x6467, 0x5434, 0x645b, 0x416f, 0x6469, 0x5267, 0x645f,
+ 0x6460, 0x4f2a, 0x4b5d, 0x645a, 0x6451, 0x6465, 0x485c, 0x6463,
+ 0x4467, 0x6462, 0x6461, 0x337c, 0x6468, 0x3561, 0x574c, 0x6466,
+ 0x3b2c, 0x5752, 0x4c4f, 0x6b78, 0x6464, 0x3976, 0x564d, 0x6459,
+ 0x645c, 0x427a, 0x645e, 0x424b, 0x4044, 0x4250, 0x3175, 0x4c32,
+ 0x354e, 0x646f, 0x462f, 0x4661, 0x6475, 0x4229, 0x406c, 0x515d,
+ 0x646e, 0x442e, 0x646d, 0x6476, 0x6474, 0x427e, 0x645d, 0x6470,
+ 0x4a7e, 0x5544, 0x6471, 0x517a, 0x646b, 0x646c, 0x6472, 0x4e2b,
+ 0x454b, 0x4731, 0x423a, 0x646a, 0x414a, 0x4c36, 0x3331, 0x647b,
+ 0x6473, 0x647a, 0x647d, 0x647c, 0x334e, 0x333a, 0x6477, 0x6479,
+ 0x6478, 0x456c, 0x403d, 0x5468, 0x6522, 0x3044, 0x6524, 0x6523,
+ 0x3c24, 0x6525, 0x6521, 0x647e, 0x3174, 0x6528, 0x6529, 0x6526,
+ 0x6527, 0x652a, 0x4659, 0x652b, 0x652d, 0x652c, 0x652f, 0x652e,
+ 0x3960, 0x6530, 0x6531, 0x3b70, 0x6c61, 0x4370, 0x3546, 0x3b52,
+ 0x4169, 0x546e, 0x3e44, 0x5746, 0x5456, 0x3253, 0x6c3e, 0x6a41,
+ 0x422f, 0x3436, 0x5157, 0x3334, 0x4832, 0x3f3b, 0x6c40, 0x564b,
+ 0x6c3f, 0x6c41, 0x6c45, 0x3e66, 0x4c3f, 0x455a, 0x3e3c, 0x6c46,
+ 0x317e, 0x6c44, 0x5528, 0x3563, 0x6c42, 0x4136, 0x3363, 0x6c43,
+ 0x4b38, 0x4043, 0x4c7e, 0x4152, 0x6c48, 0x3a66, 0x4053, 0x5672,
+ 0x514c, 0x3f3e, 0x3733, 0x4955, 0x6c47, 0x3b62, 0x4c4c, 0x3d7d,
+ 0x4848, 0x4f29, 0x4d69, 0x456b, 0x3769, 0x5149, 0x3a38, 0x6c49,
+ 0x6c4a, 0x3b40, 0x6c4b, 0x6c62, 0x313a, 0x3759, 0x3d39, 0x6c4c,
+ 0x5166, 0x6c4d, 0x483b, 0x6c51, 0x6c53, 0x3b4d, 0x3c65, 0x6c4f,
+ 0x4937, 0x433a, 0x6c63, 0x5555, 0x6c50, 0x5673, 0x6c52, 0x6c4e,
+ 0x6c54, 0x6c55, 0x493f, 0x4f28, 0x505c, 0x512c, 0x485b, 0x6c56,
+ 0x4e75, 0x4a6c, 0x6c5a, 0x6c59, 0x303e, 0x6c57, 0x6c58, 0x6c64,
+ 0x483c, 0x4147, 0x6c5c, 0x5160, 0x6c5b, 0x546f, 0x6c5d, 0x5b46,
+ 0x6c5e, 0x312c, 0x6c5f, 0x6c60, 0x5726, 0x4540, 0x6b3c, 0x302e,
+ 0x3e74, 0x3838, 0x522f, 0x3056, 0x3579, 0x5833, 0x4b2c, 0x635d,
+ 0x462c, 0x3066, 0x4546, 0x6b39, 0x6b3a, 0x6b3b, 0x5140, 0x4523,
+ 0x6a72, 0x4432, 0x4435, 0x404e, 0x6a73, 0x4441, 0x4e6f, 0x6a70,
+ 0x6a74, 0x497c, 0x4723, 0x4c58, 0x4e7e, 0x6a75, 0x6a76, 0x4f2c,
+ 0x4067, 0x6a77, 0x363f, 0x6a78, 0x6a79, 0x6a7a, 0x6a7b, 0x6a71,
+ 0x482e, 0x616b, 0x3738, 0x616c, 0x616d, 0x5734, 0x616e, 0x616f,
+ 0x534c, 0x6171, 0x3f71, 0x6170, 0x3552, 0x3137, 0x6173, 0x6172,
+ 0x3a7c, 0x6174, 0x3937, 0x3e51, 0x447c, 0x3a5d, 0x3d46, 0x6175,
+ 0x6177, 0x3640, 0x4f41, 0x4a28, 0x6176, 0x5578, 0x537c, 0x6178,
+ 0x617c, 0x6179, 0x617a, 0x406a, 0x617e, 0x6221, 0x4047, 0x617b,
+ 0x617d, 0x6225, 0x4154, 0x6223, 0x6228, 0x327e, 0x6222, 0x434d,
+ 0x3242, 0x6227, 0x6226, 0x6224, 0x6229, 0x622b, 0x5049, 0x566d,
+ 0x4328, 0x622c, 0x4f57, 0x622e, 0x3a6f, 0x6960, 0x622d, 0x622a,
+ 0x3b2b, 0x5433, 0x6230, 0x622f, 0x6961, 0x6231, 0x6232, 0x6233,
+ 0x4c21, 0x6234, 0x6235, 0x507e, 0x424a, 0x5371, 0x4d75, 0x6760,
+ 0x6761, 0x3e41, 0x426a, 0x6764, 0x6763, 0x4d66, 0x4335, 0x6762,
+ 0x3b37, 0x4f56, 0x4161, 0x6769, 0x6768, 0x6774, 0x3223, 0x676a,
+ 0x6766, 0x676c, 0x676b, 0x493a, 0x5564, 0x6765, 0x3729, 0x6767,
+ 0x676e, 0x6773, 0x5669, 0x676d, 0x6772, 0x6771, 0x3060, 0x6775,
+ 0x4772, 0x4045, 0x406d, 0x4170, 0x6770, 0x6776, 0x4b76, 0x6822,
+ 0x6821, 0x5741, 0x677a, 0x6779, 0x677b, 0x6777, 0x677e, 0x677d,
+ 0x677c, 0x4155, 0x4759, 0x457d, 0x4543, 0x476d, 0x6823, 0x6826,
+ 0x6825, 0x6827, 0x3a77, 0x6778, 0x6824, 0x4870, 0x492a, 0x6829,
+ 0x3965, 0x517e, 0x6828, 0x682a, 0x682d, 0x682e, 0x4127, 0x682f,
+ 0x6830, 0x682c, 0x6834, 0x682b, 0x6831, 0x6835, 0x6832, 0x6833,
+ 0x6837, 0x6836, 0x394f, 0x702c, 0x702d, 0x4630, 0x306a, 0x483f,
+ 0x4d5f, 0x4e4d, 0x6a31, 0x6a32, 0x463f, 0x3449, 0x6a33, 0x5567,
+ 0x5d79, 0x6a34, 0x6a35, 0x6a36, 0x384a, 0x5f30, 0x4975, 0x4c70,
+ 0x497a, 0x497b, 0x5343, 0x4b26, 0x3826, 0x702e, 0x3142, 0x6538,
+ 0x4c6f, 0x5349, 0x3c57, 0x496a, 0x3567, 0x4450, 0x3569, 0x6e2e,
+ 0x3b2d, 0x675e, 0x6e2f, 0x3329, 0x6e32, 0x6e31, 0x3d67, 0x6e30,
+ 0x4e37, 0x454f, 0x4174, 0x5b4e, 0x6e33, 0x5073, 0x4254, 0x4668,
+ 0x372c, 0x6e34, 0x336b, 0x3b7b, 0x6e35, 0x675c, 0x6e36, 0x3d2e,
+ 0x7162, 0x4a68, 0x5249, 0x705a, 0x705b, 0x705c, 0x4146, 0x386d,
+ 0x3e4e, 0x705e, 0x4531, 0x705d, 0x5171, 0x7060, 0x304c, 0x3d6a,
+ 0x525f, 0x705f, 0x342f, 0x3768, 0x7066, 0x7065, 0x4623, 0x7061,
+ 0x7062, 0x3443, 0x7063, 0x556e, 0x4c5b, 0x3e52, 0x3c32, 0x7068,
+ 0x7067, 0x7064, 0x3221, 0x5622, 0x5338, 0x3e37, 0x482c, 0x706a,
+ 0x5177, 0x564c, 0x3a5b, 0x7069, 0x363b, 0x4d34, 0x4626, 0x4121,
+ 0x706b, 0x706e, 0x706d, 0x7070, 0x706c, 0x3b3e, 0x706f, 0x4c35,
+ 0x7072, 0x3355, 0x3154, 0x7073, 0x7074, 0x7076, 0x3461, 0x7071,
+ 0x7077, 0x707a, 0x7078, 0x7075, 0x707d, 0x7079, 0x707c, 0x707e,
+ 0x7121, 0x4e41, 0x7124, 0x7123, 0x4176, 0x707b, 0x4a5d, 0x3471,
+ 0x3171, 0x4c31, 0x7126, 0x7127, 0x712c, 0x554e, 0x7129, 0x4833,
+ 0x7122, 0x712b, 0x7128, 0x7125, 0x712a, 0x3029, 0x712d, 0x712f,
+ 0x7131, 0x7130, 0x712e, 0x5122, 0x7132, 0x7133, 0x396f, 0x3547,
+ 0x3057, 0x3059, 0x546d, 0x3544, 0x3d54, 0x3b4a, 0x7027, 0x385e,
+ 0x7028, 0x3028, 0x7029, 0x4d6e, 0x702a, 0x702b, 0x4624, 0x5665,
+ 0x7164, 0x7165, 0x4373, 0x535b, 0x5651, 0x4568, 0x532f, 0x5266,
+ 0x6e41, 0x303b, 0x5535, 0x514e, 0x3c60, 0x3a50, 0x3f78, 0x3847,
+ 0x3541, 0x454c, 0x4a22, 0x434b, 0x6e42, 0x443f, 0x3622, 0x6d6c,
+ 0x4324, 0x5631, 0x4f60, 0x6d6f, 0x454e, 0x365c, 0x4a21, 0x6d6d,
+ 0x6d70, 0x6d71, 0x433c, 0x3f34, 0x6d6e, 0x6d74, 0x6d72, 0x5566,
+ 0x435f, 0x6d73, 0x6d76, 0x5523, 0x5123, 0x6d75, 0x4350, 0x6d77,
+ 0x3f74, 0x3e6c, 0x6d78, 0x4c77, 0x515b, 0x5745, 0x5576, 0x6d7c,
+ 0x6d7b, 0x6d79, 0x6d7a, 0x6d7d, 0x3e26, 0x4b2f, 0x6e21, 0x363d,
+ 0x6e22, 0x4440, 0x6d7e, 0x3d5e, 0x3247, 0x3643, 0x6e25, 0x583a,
+ 0x6e23, 0x6e26, 0x4369, 0x3372, 0x6e27, 0x6e24, 0x4f39, 0x6e28,
+ 0x4277, 0x6e29, 0x6e2a, 0x5e2b, 0x4633, 0x4746, 0x5675, 0x3549,
+ 0x4b32, 0x6e2b, 0x4d2b, 0x6e2c, 0x5530, 0x6e2d, 0x7644, 0x5b47,
+ 0x3423, 0x432c, 0x7166, 0x4a38, 0x5253, 0x562a, 0x6f72, 0x3e58,
+ 0x3d43, 0x6f73, 0x364c, 0x302b, 0x4a2f, 0x6d36, 0x6d37, 0x4e79,
+ 0x372f, 0x3f73, 0x6d38, 0x426b, 0x4930, 0x6d39, 0x4676, 0x3f33,
+ 0x6d3c, 0x4578, 0x5150, 0x5729, 0x6d3a, 0x6d3b, 0x5162, 0x6d3f,
+ 0x6d40, 0x6d44, 0x6d48, 0x6d46, 0x6d4e, 0x5568, 0x6d49, 0x6d47,
+ 0x6d3e, 0x4569, 0x4646, 0x4969, 0x5452, 0x6d41, 0x6d42, 0x6d43,
+ 0x6d45, 0x4079, 0x3421, 0x3968, 0x6d50, 0x6d51, 0x6d4a, 0x6d4f,
+ 0x4e78, 0x4b36, 0x6d4c, 0x6d4d, 0x4f75, 0x6d52, 0x4172, 0x5332,
+ 0x6d4b, 0x4837, 0x3c6f, 0x4570, 0x6d56, 0x356f, 0x4235, 0x302d,
+ 0x4b69, 0x312e, 0x6d54, 0x4d6b, 0x3562, 0x6d55, 0x6d53, 0x6d57,
+ 0x357a, 0x6d58, 0x6d59, 0x6d5c, 0x314c, 0x4576, 0x3c6e, 0x6d5a,
+ 0x4c3c, 0x326a, 0x6d5b, 0x446b, 0x3445, 0x3075, 0x6d5f, 0x405a,
+ 0x3468, 0x454d, 0x6d5d, 0x3f44, 0x6d5e, 0x4425, 0x6d60, 0x6d61,
+ 0x6d63, 0x4157, 0x3b47, 0x3d38, 0x6d62, 0x6d64, 0x6d66, 0x6d65,
+ 0x6d67, 0x4a3e, 0x6c6a, 0x4071, 0x4967, 0x6c6b, 0x466e, 0x6c6c,
+ 0x466d, 0x6c6d, 0x6c70, 0x5766, 0x6c73, 0x6c71, 0x6c6e, 0x6c6f,
+ 0x5723, 0x4971, 0x4b6e, 0x6c74, 0x6c72, 0x4f69, 0x6c76, 0x4631,
+ 0x3c40, 0x6c75, 0x353b, 0x3b76, 0x6c77, 0x5977, 0x3d7b, 0x423b,
+ 0x6c78, 0x6c79, 0x3823, 0x6c7a, 0x6c7b, 0x6c7c, 0x536d, 0x582e,
+ 0x406b, 0x475d, 0x3a4c, 0x5063, 0x4b3d, 0x4d3a, 0x3851, 0x317c,
+ 0x476f, 0x5656, 0x3f46, 0x436b, 0x6f75, 0x4358, 0x5762, 0x6f77,
+ 0x3353, 0x4758, 0x516d, 0x5648, 0x6f78, 0x6f76, 0x3b7d, 0x3346,
+ 0x3d55, 0x5246, 0x3b60, 0x4f21, 0x6f7c, 0x6f7b, 0x6f79, 0x334c,
+ 0x4954, 0x4b30, 0x6f7e, 0x305e, 0x5649, 0x6f7d, 0x336d, 0x7655,
+ 0x4e48, 0x7022, 0x7021, 0x353e, 0x3c5a, 0x3b7c, 0x3865, 0x4442,
+ 0x7023, 0x4b6b, 0x7026, 0x5128, 0x3e3f, 0x476e, 0x7136, 0x7137,
+ 0x3f55, 0x3429, 0x7138, 0x4d3b, 0x4754, 0x552d, 0x7139, 0x713a,
+ 0x474f, 0x5224, 0x564f, 0x713b, 0x3d51, 0x3430, 0x3e3d, 0x345c,
+ 0x4e51, 0x3f5f, 0x713d, 0x3f7a, 0x713c, 0x713f, 0x713e, 0x7140,
+ 0x7141, 0x417e, 0x4122, 0x4a7a, 0x553e, 0x3e3a, 0x3e39, 0x5542,
+ 0x3f22, 0x4d2f, 0x7135, 0x3d5f, 0x364b, 0x5671, 0x7343, 0x7344,
+ 0x384d, 0x7346, 0x7347, 0x304a, 0x7345, 0x7349, 0x4b71, 0x734b,
+ 0x5026, 0x314a, 0x7348, 0x734f, 0x3551, 0x7357, 0x7352, 0x7354,
+ 0x7353, 0x377b, 0x313f, 0x734e, 0x734a, 0x355a, 0x7350, 0x7351,
+ 0x7355, 0x734d, 0x3c63, 0x417d, 0x7356, 0x735a, 0x734c, 0x3548,
+ 0x3d6e, 0x735c, 0x3724, 0x3f70, 0x567e, 0x4d32, 0x3470, 0x325f,
+ 0x7358, 0x7359, 0x4938, 0x735d, 0x735e, 0x7361, 0x735f, 0x7363,
+ 0x7362, 0x735b, 0x3f6a, 0x336f, 0x7360, 0x4729, 0x3c72, 0x736b,
+ 0x393f, 0x7364, 0x322d, 0x3b7e, 0x4b63, 0x736d, 0x7369, 0x395c,
+ 0x736e, 0x7365, 0x7366, 0x736a, 0x4261, 0x736c, 0x736f, 0x7368,
+ 0x3c7d, 0x4f64, 0x7370, 0x7367, 0x7372, 0x572d, 0x462a, 0x7373,
+ 0x7371, 0x4228, 0x385d, 0x7375, 0x7374, 0x345b, 0x7376, 0x7377,
+ 0x7378, 0x403a, 0x4069, 0x4571, 0x737b, 0x737a, 0x3458, 0x737e,
+ 0x7379, 0x737c, 0x737d, 0x7421, 0x7423, 0x3b49, 0x7422, 0x7424,
+ 0x323e, 0x7426, 0x7425, 0x3c2e, 0x4357, 0x5961, 0x4060, 0x744c,
+ 0x5751, 0x375b, 0x744e, 0x4123, 0x4649, 0x3456, 0x5533, 0x7450,
+ 0x744f, 0x7451, 0x4b5a, 0x7452, 0x5441, 0x5660, 0x3760, 0x4138,
+ 0x413b, 0x7453, 0x3e2c, 0x3462, 0x7454, 0x7455, 0x3e2b, 0x7456,
+ 0x745b, 0x7457, 0x745a, 0x3a7d, 0x7458, 0x7459, 0x3862, 0x4c47,
+ 0x745c, 0x325a, 0x4353, 0x5463, 0x3f37, 0x745d, 0x4534, 0x7469,
+ 0x4f35, 0x4e49, 0x4b58, 0x4b77, 0x3d74, 0x574f, 0x405b, 0x5075,
+ 0x746a, 0x746b, 0x746c, 0x7763, 0x3731, 0x746d, 0x576b, 0x746e,
+ 0x6679, 0x3e40, 0x667a, 0x3a6c, 0x667b, 0x4f4b, 0x667c, 0x543c,
+ 0x3c36, 0x667d, 0x667e, 0x3c4d, 0x4852, 0x4e33, 0x6721, 0x343f,
+ 0x6722, 0x4934, 0x3859, 0x4449, 0x575d, 0x425a, 0x3757, 0x563d,
+ 0x4e46, 0x3744, 0x4526, 0x6723, 0x4f5f, 0x6724, 0x6725, 0x6726,
+ 0x4137, 0x5769, 0x4970, 0x4f38, 0x562f, 0x5655, 0x6727, 0x306d,
+ 0x6728, 0x6729, 0x495c, 0x526f, 0x3e2d, 0x672a, 0x3073, 0x485e,
+ 0x3d61, 0x672b, 0x4846, 0x672c, 0x3b66, 0x3878, 0x5124, 0x672d,
+ 0x4267, 0x3e78, 0x3d4a, 0x4d33, 0x672e, 0x672f, 0x3e6e, 0x5065,
+ 0x4b67, 0x4c50, 0x3c4c, 0x6730, 0x3c28, 0x5077, 0x6731, 0x5078,
+ 0x6732, 0x6733, 0x3442, 0x6734, 0x6735, 0x497e, 0x4e2c, 0x4360,
+ 0x6737, 0x3141, 0x3371, 0x6738, 0x6739, 0x575b, 0x5540, 0x673a,
+ 0x424c, 0x573a, 0x673b, 0x673c, 0x673d, 0x3c6a, 0x4365, 0x4042,
+ 0x673e, 0x673f, 0x3c29, 0x6740, 0x6741, 0x6736, 0x3650, 0x6742,
+ 0x6743, 0x6744, 0x3b3a, 0x355e, 0x4246, 0x3160, 0x6745, 0x5435,
+ 0x6746, 0x383f, 0x6748, 0x6747, 0x376c, 0x6749, 0x3278, 0x674a,
+ 0x674b, 0x674c, 0x674d, 0x674e, 0x674f, 0x6750, 0x5327, 0x4b75,
+ 0x6751, 0x6752, 0x6753, 0x6754, 0x4949, 0x6755, 0x6756, 0x6757,
+ 0x6758, 0x6759, 0x3d49, 0x675a, 0x733e, 0x3857, 0x4831, 0x733f,
+ 0x7340, 0x7341, 0x395e, 0x4d78, 0x5868, 0x3a31, 0x425e, 0x6e37,
+ 0x3723, 0x6e39, 0x6e38, 0x3055, 0x6e3b, 0x5556, 0x576f, 0x5643,
+ 0x6e3d, 0x4a70, 0x6e3c, 0x6e3e, 0x6e40, 0x6e3f, 0x5172, 0x473c,
+ 0x4340, 0x3861, 0x4167, 0x7446, 0x505f, 0x7447, 0x4f5b, 0x483a,
+ 0x7448, 0x7449, 0x744a, 0x744b, 0x597a, 0x387e, 0x6571, 0x5370,
+ 0x7460, 0x4e4c, 0x3361, 0x7134, 0x526e, 0x7461, 0x4f68, 0x7462,
+ 0x474c, 0x3554, 0x3464, 0x7464, 0x7463, 0x7465, 0x7466, 0x7467,
+ 0x3a32, 0x303f, 0x7468, 0x372d, 0x526d, 0x522b, 0x404f, 0x3f3c,
+ 0x6b23, 0x555f, 0x6a48, 0x7173, 0x3678, 0x4b23, 0x444d, 0x7167,
+ 0x7168, 0x387b, 0x7169, 0x3a44, 0x5445, 0x3052, 0x716a, 0x716b,
+ 0x716c, 0x716d, 0x716e, 0x716f, 0x7171, 0x7170, 0x4555, 0x7172,
+ 0x367a, 0x7174, 0x522e, 0x5e47, 0x4b4a, 0x335c, 0x3522, 0x3922,
+ 0x4474, 0x7175, 0x7176, 0x4144, 0x417b, 0x5630, 0x7177, 0x7178,
+ 0x412a, 0x4638, 0x3e5b, 0x7179, 0x344f, 0x717a, 0x6d32, 0x6d31,
+ 0x4b60, 0x525e, 0x4b41, 0x5558, 0x4862, 0x405f, 0x3c21, 0x6b41,
+ 0x5024, 0x5662, 0x3647, 0x3858, 0x6b40, 0x384e, 0x6b3f, 0x3326,
+ 0x3949, 0x562b, 0x3774, 0x374a, 0x3c67, 0x373e, 0x6b46, 0x6b47,
+ 0x3039, 0x3f4f, 0x6b45, 0x537d, 0x6b48, 0x6b49, 0x374e, 0x6b42,
+ 0x6b44, 0x4976, 0x5657, 0x554d, 0x5032, 0x6b4f, 0x4e38, 0x6b50,
+ 0x3528, 0x3133, 0x6b52, 0x4c25, 0x4556, 0x6b53, 0x6b51, 0x455f,
+ 0x6b4e, 0x4a24, 0x6b55, 0x307b, 0x3a7a, 0x5837, 0x7163, 0x6b4a,
+ 0x6b4b, 0x6b4c, 0x6b4d, 0x6b56, 0x6640, 0x6b59, 0x3f68, 0x5248,
+ 0x6b57, 0x6b5c, 0x386c, 0x6b58, 0x3d3a, 0x5058, 0x3037, 0x6b5d,
+ 0x445c, 0x562c, 0x3460, 0x4276, 0x3c39, 0x6b5a, 0x6b5b, 0x5460,
+ 0x466a, 0x4454, 0x6b5f, 0x4527, 0x5975, 0x3231, 0x6b64, 0x3d45,
+ 0x6b62, 0x6b63, 0x382c, 0x4d51, 0x6b65, 0x6b61, 0x4133, 0x4622,
+ 0x4c73, 0x6b66, 0x4030, 0x5238, 0x6b67, 0x382f, 0x382d, 0x6b68,
+ 0x473b, 0x4d73, 0x6b6a, 0x6b6b, 0x6b6d, 0x5048, 0x6b72, 0x6b6e,
+ 0x6b71, 0x4879, 0x517c, 0x6b6c, 0x6b69, 0x3839, 0x4f59, 0x4465,
+ 0x6b6f, 0x6b70, 0x4c5a, 0x4d48, 0x3072, 0x6b76, 0x6b75, 0x3232,
+ 0x3860, 0x6b77, 0x316c, 0x4c45, 0x4424, 0x4f25, 0x6b79, 0x6c22,
+ 0x4572, 0x6b7a, 0x4945, 0x625f, 0x6b7e, 0x4d4e, 0x6c21, 0x315b,
+ 0x5337, 0x525c, 0x6b7d, 0x6b7b, 0x333c, 0x6a30, 0x5754, 0x742b,
+ 0x3374, 0x5641, 0x5642, 0x5569, 0x3e4a, 0x7427, 0x5228, 0x7428,
+ 0x7429, 0x742a, 0x3e4b, 0x535f, 0x4960, 0x4961, 0x7342, 0x4a66,
+ 0x4c72, 0x6236, 0x4b34, 0x4e68, 0x565b, 0x742d, 0x742e, 0x742f,
+ 0x7432, 0x3a3d, 0x7433, 0x3063, 0x7430, 0x7431, 0x3d22, 0x3255,
+ 0x7436, 0x7437, 0x3666, 0x3230, 0x4f4f, 0x7434, 0x342c, 0x7435,
+ 0x7438, 0x7439, 0x4d27, 0x743a, 0x743b, 0x743c, 0x4b52, 0x743d,
+ 0x743e, 0x743f, 0x745e, 0x413c, 0x3c68, 0x492b, 0x515e, 0x6575,
+ 0x5c33, 0x5255, 0x5c34, 0x302c, 0x5c35, 0x3d5a, 0x5c39, 0x5842,
+ 0x5c37, 0x5373, 0x4956, 0x5c3a, 0x5c36, 0x5c3b, 0x4322, 0x5c3c,
+ 0x5c45, 0x5c3d, 0x4e5f, 0x5625, 0x5c4f, 0x5c4d, 0x5c52, 0x3d66,
+ 0x422b, 0x5c38, 0x5c4b, 0x5c4e, 0x5c3e, 0x3752, 0x3045, 0x5c47,
+ 0x503e, 0x5c41, 0x3b28, 0x373c, 0x5c4c, 0x5c46, 0x5c3f, 0x475b,
+ 0x513f, 0x5c40, 0x5c4a, 0x5c50, 0x4e2d, 0x5c42, 0x5c43, 0x5c48,
+ 0x5c49, 0x3254, 0x5c51, 0x4b55, 0x5437, 0x5c5b, 0x5c5f, 0x4c26,
+ 0x5c66, 0x4367, 0x5c5c, 0x3f41, 0x5c59, 0x307a, 0x3936, 0x5c65,
+ 0x5c53, 0x5c44, 0x5c56, 0x4874, 0x3f60, 0x493b, 0x313d, 0x5322,
+ 0x5c5a, 0x5c55, 0x463b, 0x5c5e, 0x5742, 0x432f, 0x3736, 0x4751,
+ 0x4329, 0x5c62, 0x5c58, 0x5c6b, 0x5c54, 0x5c5d, 0x3e25, 0x5c57,
+ 0x5c60, 0x5c63, 0x5c64, 0x5c78, 0x5c61, 0x5d22, 0x5c67, 0x3c6b,
+ 0x3444, 0x4323, 0x3267, 0x5c7a, 0x5c72, 0x5c6f, 0x5c7c, 0x5c6e,
+ 0x5270, 0x3268, 0x4857, 0x4863, 0x5c7b, 0x5c6d, 0x5c77, 0x5c75,
+ 0x3e23, 0x5c74, 0x325d, 0x5c73, 0x3c76, 0x5c68, 0x3b44, 0x4073,
+ 0x3c54, 0x5c69, 0x5c6a, 0x5c71, 0x5c76, 0x5c79, 0x3534, 0x4859,
+ 0x3b67, 0x5c7e, 0x5c7d, 0x532b, 0x5d21, 0x5d23, 0x5d25, 0x5271,
+ 0x5d24, 0x5d26, 0x5d27, 0x5229, 0x3a49, 0x5d29, 0x5d36, 0x5d31,
+ 0x5d34, 0x5d30, 0x464e, 0x4072, 0x492f, 0x5c6c, 0x5d2e, 0x5d37,
+ 0x5c70, 0x5d2f, 0x5d38, 0x5d2c, 0x5d39, 0x5d33, 0x5d2d, 0x442a,
+ 0x5d28, 0x4033, 0x412b, 0x5d2a, 0x5d2b, 0x5d32, 0x3b71, 0x5d35,
+ 0x5328, 0x5d3a, 0x5d3b, 0x4327, 0x5d52, 0x5d3c, 0x5d51, 0x393d,
+ 0x3e55, 0x3e7a, 0x3a4a, 0x5d4a, 0x5d45, 0x5d3f, 0x324b, 0x5d43,
+ 0x5d4b, 0x3224, 0x5d55, 0x5d3e, 0x4650, 0x5d50, 0x5d54, 0x4162,
+ 0x3746, 0x5d4e, 0x5d4f, 0x5d44, 0x5d3d, 0x5d4d, 0x4c51, 0x5d49,
+ 0x5d42, 0x4348, 0x463c, 0x4e2e, 0x5d4c, 0x5d48, 0x5d41, 0x5d46,
+ 0x425c, 0x5329, 0x532a, 0x5d53, 0x4f74, 0x4878, 0x5d66, 0x5d47,
+ 0x5d60, 0x4264, 0x5d61, 0x5d57, 0x5678, 0x5d59, 0x5d58, 0x3870,
+ 0x5d56, 0x464f, 0x362d, 0x5d62, 0x3a79, 0x5461, 0x5d67, 0x3450,
+ 0x5d5a, 0x3f7b, 0x5d63, 0x5d5f, 0x5d5d, 0x3559, 0x5d5b, 0x5d5c,
+ 0x5d5e, 0x3d2f, 0x5d64, 0x5d65, 0x5d75, 0x4349, 0x4b62, 0x5d72,
+ 0x5861, 0x4651, 0x5d74, 0x5574, 0x5d73, 0x5d70, 0x5d6c, 0x5d6f,
+ 0x5d68, 0x506e, 0x4858, 0x5d6e, 0x5d69, 0x5d6a, 0x4b72, 0x5d6d,
+ 0x314d, 0x4036, 0x3c3b, 0x5d71, 0x5d77, 0x5d76, 0x5d6b, 0x456e,
+ 0x5d7b, 0x5e24, 0x5e23, 0x5d78, 0x436f, 0x427b, 0x5561, 0x4e35,
+ 0x5d7d, 0x324c, 0x4468, 0x4a5f, 0x473e, 0x5d7a, 0x5d7c, 0x5d7e,
+ 0x5e22, 0x302a, 0x314e, 0x5e2c, 0x5e26, 0x3d36, 0x486f, 0x5e21,
+ 0x5e25, 0x5e29, 0x5e28, 0x5e27, 0x5e2d, 0x544c, 0x5e33, 0x5e2a,
+ 0x5e2e, 0x4059, 0x3121, 0x5e36, 0x5e31, 0x5e32, 0x5126, 0x5e35,
+ 0x5e2f, 0x5e30, 0x503d, 0x5e34, 0x4a6d, 0x5e39, 0x5e38, 0x5e37,
+ 0x5e3b, 0x3d65, 0x3258, 0x436a, 0x5e3a, 0x453a, 0x5e3c, 0x4c59,
+ 0x372a, 0x5465, 0x5e3d, 0x5e3f, 0x4422, 0x5e41, 0x5e3e, 0x5e40,
+ 0x553a, 0x5e42, 0x722e, 0x3b22, 0x4232, 0x4530, 0x4247, 0x722f,
+ 0x5069, 0x535d, 0x6b3d, 0x3366, 0x7230, 0x7231, 0x4a2d, 0x3a67,
+ 0x7233, 0x7235, 0x7234, 0x4b64, 0x4f3a, 0x7232, 0x4a34, 0x524f,
+ 0x426c, 0x4e43, 0x7238, 0x3076, 0x7237, 0x723e, 0x324f, 0x5141,
+ 0x723a, 0x723c, 0x5469, 0x723b, 0x7236, 0x723f, 0x723d, 0x7239,
+ 0x7247, 0x7244, 0x7246, 0x724a, 0x7242, 0x7240, 0x7245, 0x567b,
+ 0x7241, 0x4779, 0x495f, 0x7248, 0x3946, 0x3530, 0x7243, 0x7249,
+ 0x7250, 0x7256, 0x3b57, 0x7255, 0x4d5c, 0x566b, 0x7252, 0x7254,
+ 0x3872, 0x724b, 0x724e, 0x4279, 0x555d, 0x724c, 0x724d, 0x724f,
+ 0x7253, 0x7259, 0x533c, 0x366a, 0x4a71, 0x3764, 0x7257, 0x7258,
+ 0x725a, 0x725d, 0x725b, 0x725c, 0x5151, 0x7251, 0x4d49, 0x4e4f,
+ 0x5629, 0x7263, 0x435b, 0x7260, 0x402f, 0x726c, 0x725e, 0x7261,
+ 0x7268, 0x7262, 0x7267, 0x7266, 0x7269, 0x725f, 0x7264, 0x726a,
+ 0x532c, 0x7265, 0x3275, 0x7272, 0x502b, 0x7275, 0x3b48, 0x7279,
+ 0x7270, 0x7276, 0x7278, 0x727a, 0x7273, 0x7271, 0x3a7b, 0x357b,
+ 0x726f, 0x7277, 0x726d, 0x726e, 0x726b, 0x7326, 0x7323, 0x7322,
+ 0x7274, 0x485a, 0x727b, 0x7325, 0x4378, 0x727d, 0x7327, 0x7329,
+ 0x7324, 0x727c, 0x732b, 0x732a, 0x425d, 0x732e, 0x7330, 0x7321,
+ 0x7331, 0x732c, 0x732f, 0x727e, 0x732d, 0x7332, 0x7334, 0x7328,
+ 0x7333, 0x7335, 0x5037, 0x7338, 0x5979, 0x7339, 0x7337, 0x4864,
+ 0x7336, 0x733a, 0x733b, 0x3440, 0x6e43, 0x733c, 0x733d, 0x512a,
+ 0x742c, 0x5046, 0x5050, 0x515c, 0x4f4e, 0x3d56, 0x5143, 0x3a62,
+ 0x6169, 0x5242, 0x7142, 0x3239, 0x316d, 0x7143, 0x4940, 0x3344,
+ 0x5972, 0x4b25, 0x7144, 0x5654, 0x7145, 0x7440, 0x7146, 0x542c,
+ 0x7147, 0x3040, 0x7441, 0x7442, 0x347c, 0x455b, 0x4c3b, 0x5064,
+ 0x4d60, 0x7148, 0x5973, 0x313b, 0x4f2e, 0x3824, 0x714a, 0x714b,
+ 0x3243, 0x4151, 0x5730, 0x7149, 0x714c, 0x714e, 0x5976, 0x5261,
+ 0x5423, 0x7443, 0x4839, 0x7444, 0x714d, 0x714f, 0x3f63, 0x7150,
+ 0x7154, 0x7156, 0x7151, 0x4951, 0x4561, 0x4263, 0x397c, 0x7153,
+ 0x7155, 0x3953, 0x715b, 0x3a56, 0x307d, 0x7159, 0x7158, 0x7152,
+ 0x715a, 0x7157, 0x486c, 0x4d4a, 0x715d, 0x653d, 0x715c, 0x715e,
+ 0x715f, 0x4f65, 0x7445, 0x3d73, 0x7160, 0x7161, 0x4e77, 0x522a,
+ 0x717b, 0x3832, 0x3c7b, 0x395b, 0x3966, 0x4359, 0x4a53, 0x6a68,
+ 0x4040, 0x3e75, 0x6a69, 0x6a6a, 0x6a6b, 0x6a6c, 0x6a6d, 0x6a6e,
+ 0x6a6f, 0x3d47, 0x757b, 0x757d, 0x757e, 0x757c, 0x3d62, 0x7621,
+ 0x3425, 0x7622, 0x7623, 0x6c32, 0x5154, 0x596a, 0x7624, 0x6e3a,
+ 0x5532, 0x537e, 0x4c5c, 0x4a44, 0x6540, 0x7625, 0x3e2f, 0x4629,
+ 0x5a25, 0x3c46, 0x3629, 0x383c, 0x484f, 0x3c25, 0x5a26, 0x5a27,
+ 0x4c56, 0x4843, 0x5a28, 0x467d, 0x5135, 0x5269, 0x5136, 0x3c47,
+ 0x3d32, 0x3b64, 0x5a29, 0x5a2a, 0x5148, 0x5a2b, 0x506d, 0x366f,
+ 0x425b, 0x4b4f, 0x376d, 0x4968, 0x3743, 0x3e77, 0x5624, 0x5a2c,
+ 0x5a2d, 0x4640, 0x5767, 0x4a36, 0x5529, 0x4b5f, 0x556f, 0x5a2e,
+ 0x565f, 0x344a, 0x5a30, 0x5a2f, 0x526b, 0x5a31, 0x5a32, 0x5a33,
+ 0x4a54, 0x5a34, 0x4a2b, 0x5a35, 0x5a36, 0x334f, 0x566f, 0x5a37,
+ 0x3b30, 0x352e, 0x5a38, 0x5a39, 0x396e, 0x512f, 0x5268, 0x5a3a,
+ 0x3843, 0x4f6a, 0x326f, 0x5a3b, 0x5a3c, 0x3d6b, 0x4e5c, 0x536f,
+ 0x5a3d, 0x4e73, 0x5a3e, 0x5355, 0x3b65, 0x5a3f, 0x4b35, 0x4b50,
+ 0x5a40, 0x476b, 0x566e, 0x5a41, 0x4535, 0x3641, 0x5a42, 0x374c,
+ 0x3f4e, 0x5a43, 0x5a44, 0x4b2d, 0x5a45, 0x3577, 0x5a46, 0x4142,
+ 0x573b, 0x5a47, 0x4c38, 0x526a, 0x4431, 0x5a48, 0x357d, 0x3b51,
+ 0x5a49, 0x5033, 0x5a4a, 0x5a4b, 0x4e3d, 0x5a4c, 0x5a4d, 0x5a4e,
+ 0x3277, 0x5a51, 0x5a4f, 0x5168, 0x5a50, 0x4355, 0x5a52, 0x5a53,
+ 0x5a54, 0x5a55, 0x503b, 0x5225, 0x3079, 0x5a56, 0x472b, 0x5a57,
+ 0x3d77, 0x4321, 0x5a58, 0x5a59, 0x437d, 0x4c37, 0x5a5a, 0x5a5b,
+ 0x403e, 0x4657, 0x5a5c, 0x5a5d, 0x4734, 0x5a5e, 0x5a5f, 0x3948,
+ 0x3b6d, 0x3639, 0x7478, 0x7479, 0x4d63, 0x7539, 0x6b60, 0x4f73,
+ 0x3b3f, 0x3a40, 0x5425, 0x6159, 0x7574, 0x312a, 0x3272, 0x7575,
+ 0x7577, 0x3a51, 0x7576, 0x4332, 0x7579, 0x7578, 0x3134, 0x556a,
+ 0x383a, 0x3931, 0x3246, 0x5470, 0x4f4d, 0x305c, 0x554b, 0x3b75,
+ 0x564a, 0x3737, 0x4c30, 0x4636, 0x3161, 0x393a, 0x567c, 0x3961,
+ 0x3721, 0x3c7a, 0x6a5a, 0x6a5b, 0x4c79, 0x3973, 0x6a5c, 0x347b,
+ 0x4333, 0x3751, 0x3a58, 0x6a5d, 0x5474, 0x6a5e, 0x3c56, 0x3b5f,
+ 0x6a5f, 0x415e, 0x4238, 0x545f, 0x574a, 0x6a60, 0x6a61, 0x6a64,
+ 0x6a62, 0x6a63, 0x495e, 0x3833, 0x3644, 0x6a65, 0x4a6a, 0x494d,
+ 0x344d, 0x6259, 0x4562, 0x6a66, 0x4035, 0x5738, 0x6a67, 0x572c,
+ 0x487c, 0x5853, 0x584d, 0x545e, 0x5479, 0x4944, 0x532e, 0x3853,
+ 0x3360, 0x4962, 0x7476, 0x3a55, 0x7477, 0x575f, 0x7471, 0x3830,
+ 0x5554, 0x384f, 0x4670, 0x3343, 0x7472, 0x332c, 0x543d, 0x4777,
+ 0x7474, 0x7473, 0x4c4b, 0x4824, 0x7475, 0x5763, 0x453f, 0x7540,
+ 0x753b, 0x7543, 0x7542, 0x563a, 0x7541, 0x543e, 0x7544, 0x754c,
+ 0x304f, 0x3578, 0x7549, 0x754a, 0x455c, 0x7545, 0x7546, 0x7547,
+ 0x754b, 0x3e60, 0x7548, 0x387a, 0x7550, 0x7553, 0x3f67, 0x3972,
+ 0x753c, 0x754d, 0x4237, 0x4c78, 0x3c79, 0x754e, 0x754f, 0x7551,
+ 0x3665, 0x7552, 0x7555, 0x753d, 0x7554, 0x533b, 0x336c, 0x4c24,
+ 0x7556, 0x7557, 0x3e61, 0x7558, 0x4c5f, 0x755b, 0x3248, 0x5759,
+ 0x7559, 0x755a, 0x755c, 0x7562, 0x7560, 0x755f, 0x755d, 0x7561,
+ 0x755e, 0x7564, 0x7565, 0x4c63, 0x653f, 0x3538, 0x7563, 0x7568,
+ 0x4c23, 0x7566, 0x7567, 0x753e, 0x3144, 0x753f, 0x3545, 0x3264,
+ 0x756c, 0x7569, 0x3657, 0x756d, 0x756a, 0x756b, 0x345a, 0x546a,
+ 0x756e, 0x3379, 0x756f, 0x7571, 0x7570, 0x7572, 0x7573, 0x496d,
+ 0x392a, 0x477b, 0x3663, 0x4c49, 0x6a26, 0x3335, 0x547e, 0x396c,
+ 0x5079, 0x696d, 0x572a, 0x696e, 0x4256, 0x486d, 0x3a64, 0x696f,
+ 0x6970, 0x6971, 0x5661, 0x6972, 0x6973, 0x6975, 0x6974, 0x6976,
+ 0x6977, 0x4761, 0x6978, 0x5458, 0x6979, 0x3d4e, 0x697a, 0x697b,
+ 0x3d4f, 0x697c, 0x3828, 0x413e, 0x697d, 0x3132, 0x3b54, 0x3975,
+ 0x697e, 0x6a21, 0x6a22, 0x6a23, 0x3778, 0x3c2d, 0x4a64, 0x604e,
+ 0x542f, 0x4f3d, 0x5537, 0x6a24, 0x555e, 0x6a25, 0x5041, 0x393c,
+ 0x3447, 0x3159, 0x4031, 0x3166, 0x3167, 0x3168, 0x333d, 0x4868,
+ 0x6541, 0x315f, 0x4149, 0x346f, 0x4728, 0x5358, 0x4679, 0x5138,
+ 0x397d, 0x4275, 0x532d, 0x544b, 0x3d7c, 0x6542, 0x3735, 0x6543,
+ 0x3b39, 0x5562, 0x3d78, 0x5436, 0x4e25, 0x412c, 0x3359, 0x4c76,
+ 0x6546, 0x6544, 0x6548, 0x654a, 0x6547, 0x354f, 0x4648, 0x357c,
+ 0x6545, 0x4a76, 0x6549, 0x4354, 0x3145, 0x3c23, 0x5737, 0x4d4b,
+ 0x4b4d, 0x4a4a, 0x4c53, 0x654c, 0x654b, 0x4466, 0x5121, 0x5137,
+ 0x654d, 0x6550, 0x4d38, 0x5670, 0x654f, 0x355d, 0x4d3e, 0x6551,
+ 0x363a, 0x4d28, 0x3964, 0x4a45, 0x3351, 0x4b59, 0x546c, 0x6552,
+ 0x376a, 0x654e, 0x6555, 0x347e, 0x6556, 0x6553, 0x6554, 0x525d,
+ 0x425f, 0x3146, 0x5362, 0x365d, 0x4b6c, 0x6557, 0x5376, 0x3169,
+ 0x3674, 0x655a, 0x6558, 0x6559, 0x3540, 0x5245, 0x655c, 0x655e,
+ 0x655d, 0x4732, 0x5223, 0x655b, 0x5462, 0x555a, 0x6560, 0x5771,
+ 0x6561, 0x315c, 0x517b, 0x6562, 0x6564, 0x6563, 0x6565, 0x5258,
+ 0x354b, 0x675f, 0x5a75, 0x5a78, 0x5a76, 0x5a77, 0x5a7a, 0x504f,
+ 0x4447, 0x306e, 0x5030, 0x5a79, 0x534a, 0x3a2a, 0x5b22, 0x4771,
+ 0x5a7c, 0x5a7b, 0x495b, 0x5a7d, 0x5b21, 0x575e, 0x5a7e, 0x415a,
+ 0x5b25, 0x5374, 0x5b27, 0x5b24, 0x5b28, 0x3d3c, 0x4049, 0x5b23,
+ 0x5b26, 0x5623, 0x5b29, 0x5b2d, 0x5b2e, 0x5b2c, 0x3a42, 0x3f24,
+ 0x5b2b, 0x5b2a, 0x5447, 0x323f, 0x5b2f, 0x3979, 0x5b30, 0x333b,
+ 0x3526, 0x363c, 0x5b31, 0x3675, 0x5b32, 0x3149, 0x5b34, 0x5b33,
+ 0x5b35, 0x5b37, 0x5b36, 0x5b38, 0x5b39, 0x5b3a, 0x534f, 0x747a,
+ 0x4775, 0x5743, 0x4564, 0x747c, 0x747d, 0x747b, 0x3e46, 0x506f,
+ 0x3753, 0x544d, 0x4c2a, 0x7522, 0x7521, 0x3a28, 0x747e, 0x4b56,
+ 0x7524, 0x4052, 0x336a, 0x4d2a, 0x7525, 0x7523, 0x3d34, 0x7528,
+ 0x7529, 0x3d4d, 0x4338, 0x3f61, 0x4b61, 0x752a, 0x7526, 0x7527,
+ 0x4470, 0x752c, 0x343c, 0x576d, 0x3457, 0x752b, 0x752e, 0x752d,
+ 0x752f, 0x5051, 0x4351, 0x4829, 0x7530, 0x7531, 0x7532, 0x7533,
+ 0x7534, 0x7535, 0x7537, 0x7536, 0x7538, 0x3249, 0x5354, 0x4a4d,
+ 0x406f, 0x5658, 0x5230, 0x413f, 0x3d70, 0x382a, 0x3c78, 0x7646,
+ 0x7647, 0x7648, 0x7649, 0x764a, 0x764c, 0x764b, 0x7769, 0x764d,
+ 0x764e, 0x6e44, 0x6e45, 0x6e46, 0x556b, 0x3624, 0x6e48, 0x6e47,
+ 0x6e49, 0x6e4a, 0x4725, 0x6e4b, 0x6e4c, 0x3730, 0x3576, 0x6e4d,
+ 0x6e4f, 0x6e4e, 0x3846, 0x6e50, 0x6e51, 0x6e52, 0x365b, 0x332e,
+ 0x5653, 0x4446, 0x3135, 0x3856, 0x6e53, 0x6e54, 0x543f, 0x4755,
+ 0x3e7b, 0x4e59, 0x3933, 0x6e56, 0x6e55, 0x6e58, 0x6e57, 0x4525,
+ 0x6e59, 0x6e5a, 0x472e, 0x6e5b, 0x472f, 0x6e5c, 0x3227, 0x6e5d,
+ 0x6e5e, 0x6e5f, 0x6e60, 0x6e61, 0x576a, 0x6e62, 0x6e63, 0x3c58,
+ 0x6e64, 0x534b, 0x4c7a, 0x322c, 0x4165, 0x6e65, 0x4726, 0x432d,
+ 0x6e66, 0x6e67, 0x6e68, 0x6e69, 0x6e6a, 0x6e6b, 0x6e6c, 0x6e6d,
+ 0x6e6e, 0x6e6f, 0x6e70, 0x6e71, 0x6e72, 0x6e74, 0x6e73, 0x6e75,
+ 0x4d2d, 0x4241, 0x6e76, 0x6e77, 0x6e78, 0x5521, 0x6e79, 0x4f33,
+ 0x6e7a, 0x6e7b, 0x6e7c, 0x6e7d, 0x6f21, 0x6e7e, 0x6f22, 0x3875,
+ 0x437a, 0x6f23, 0x6f24, 0x3d42, 0x523f, 0x3279, 0x6f25, 0x6f26,
+ 0x6f27, 0x5278, 0x6f28, 0x567d, 0x6f29, 0x464c, 0x6f2a, 0x6f2b,
+ 0x4134, 0x6f2c, 0x4f7a, 0x4b78, 0x6f2e, 0x6f2d, 0x337a, 0x3978,
+ 0x6f2f, 0x6f30, 0x5062, 0x6f31, 0x6f32, 0x3766, 0x503f, 0x6f33,
+ 0x6f34, 0x6f35, 0x4871, 0x4c60, 0x6f36, 0x6f37, 0x6f38, 0x6f39,
+ 0x6f3a, 0x5560, 0x6f3b, 0x346d, 0x432a, 0x6f3c, 0x6f3d, 0x6f3e,
+ 0x6f3f, 0x4e7d, 0x6f40, 0x4260, 0x3438, 0x5736, 0x3d75, 0x4f47,
+ 0x6f43, 0x6f41, 0x6f42, 0x6f44, 0x3627, 0x3c7c, 0x3e62, 0x434c,
+ 0x6f45, 0x6f46, 0x6f47, 0x6f4f, 0x6f48, 0x6f49, 0x6f4a, 0x4742,
+ 0x6f71, 0x364d, 0x6f4b, 0x6f4c, 0x6f4d, 0x3646, 0x433e, 0x6f4e,
+ 0x6f50, 0x6f51, 0x6f52, 0x5572, 0x6f53, 0x4477, 0x6f54, 0x4478,
+ 0x6f55, 0x6f56, 0x3864, 0x3077, 0x6f57, 0x6f58, 0x6f59, 0x6f5a,
+ 0x6f5b, 0x6f5c, 0x6f5d, 0x6f5e, 0x3e35, 0x6f61, 0x6f5f, 0x6f60,
+ 0x6f62, 0x6f63, 0x414d, 0x6f64, 0x6f65, 0x6f66, 0x6f67, 0x6f68,
+ 0x6f69, 0x6f6a, 0x6f6b, 0x6f6c, 0x4058, 0x6f6d, 0x412d, 0x6f6e,
+ 0x6f6f, 0x6f70, 0x4f62, 0x3324, 0x4345, 0x6345, 0x4941, 0x6346,
+ 0x3155, 0x4e4a, 0x3433, 0x4872, 0x6347, 0x4f50, 0x6348, 0x3c64,
+ 0x6349, 0x634a, 0x4346, 0x5522, 0x4456, 0x396b, 0x4e45, 0x634b,
+ 0x4376, 0x634c, 0x3727, 0x3873, 0x3a52, 0x634d, 0x634e, 0x5444,
+ 0x634f, 0x6350, 0x514b, 0x6351, 0x6352, 0x6353, 0x6354, 0x5156,
+ 0x6355, 0x327b, 0x403b, 0x6356, 0x402b, 0x6357, 0x6358, 0x6359,
+ 0x635a, 0x635b, 0x3837, 0x5a62, 0x3653, 0x5a64, 0x5a63, 0x5a66,
+ 0x486e, 0x5a65, 0x3740, 0x5174, 0x5275, 0x5573, 0x3d57, 0x5768,
+ 0x5a68, 0x5a67, 0x3022, 0x4d53, 0x5a69, 0x383d, 0x3c4a, 0x423d,
+ 0x4224, 0x3342, 0x5a6a, 0x422a, 0x4430, 0x3d35, 0x4f5e, 0x5a6b,
+ 0x4942, 0x315d, 0x5a6c, 0x3638, 0x543a, 0x337d, 0x5a6d, 0x5449,
+ 0x4f55, 0x4563, 0x5a6e, 0x5a6f, 0x5a70, 0x416a, 0x4c55, 0x4f5d,
+ 0x5367, 0x4221, 0x5a71, 0x4b65, 0x5a72, 0x4b66, 0x527e, 0x3874,
+ 0x5a73, 0x302f, 0x4f36, 0x554f, 0x4b6d, 0x5a74, 0x6344, 0x4125,
+ 0x763f, 0x7640, 0x7641, 0x4451, 0x4838, 0x5163, 0x505b, 0x5145,
+ 0x3c2f, 0x394d, 0x6f74, 0x3446, 0x533a, 0x7642, 0x337b, 0x7643,
+ 0x3571, 0x7645, 0x536a, 0x7627, 0x5129, 0x7629, 0x7628, 0x4163,
+ 0x4057, 0x3122, 0x4e6d, 0x5068, 0x762b, 0x4f76, 0x762a, 0x5570,
+ 0x762c, 0x4339, 0x3b74, 0x762e, 0x762d, 0x445e, 0x4158, 0x4b2a,
+ 0x4f3c, 0x762f, 0x7630, 0x7631, 0x4236, 0x3054, 0x4579, 0x7632,
+ 0x4760, 0x7626, 0x3e38, 0x3e32, 0x3565, 0x3747, 0x3f3f, 0x4352,
+ 0x4366, 0x584c, 0x386f, 0x3d79, 0x5125, 0x3050, 0x7730, 0x7731,
+ 0x502c, 0x3030, 0x7732, 0x7733, 0x7734, 0x474a, 0x3e4f, 0x7737,
+ 0x7736, 0x315e, 0x7735, 0x7738, 0x7739, 0x4e24, 0x484d, 0x3a2b,
+ 0x6838, 0x6839, 0x683a, 0x3e42, 0x5274, 0x544f, 0x4958, 0x5233,
+ 0x3625, 0x476a, 0x717c, 0x4f6e, 0x4b33, 0x506b, 0x676f, 0x4d67,
+ 0x394b, 0x3659, 0x717d, 0x3064, 0x4b4c, 0x717e, 0x5424, 0x422d,
+ 0x416c, 0x4644, 0x3e31, 0x7221, 0x3c55, 0x7222, 0x7223, 0x7224,
+ 0x5243, 0x4635, 0x4d47, 0x7225, 0x5331, 0x3f45, 0x4c62, 0x7226,
+ 0x7227, 0x5155, 0x366e, 0x7228, 0x7229, 0x355f, 0x722a, 0x722b,
+ 0x327c, 0x722c, 0x722d, 0x4827, 0x3767, 0x6c29, 0x6c2a, 0x6c2b,
+ 0x6c2c, 0x462e, 0x6c2d, 0x6c2e, 0x3749, 0x4a33, 0x6238, 0x774f,
+ 0x7750, 0x324d, 0x7751, 0x7753, 0x7752, 0x623b, 0x3c22, 0x623c,
+ 0x623d, 0x623e, 0x623f, 0x6240, 0x6241, 0x3739, 0x527b, 0x3d24,
+ 0x4a4e, 0x3125, 0x4b47, 0x6242, 0x367c, 0x4844, 0x6243, 0x3d48,
+ 0x317d, 0x6244, 0x3676, 0x6245, 0x4459, 0x6246, 0x4f5a, 0x395d,
+ 0x6247, 0x4021, 0x6248, 0x3276, 0x6249, 0x4173, 0x624a, 0x624b,
+ 0x4278, 0x624c, 0x624d, 0x624e, 0x4a57, 0x5838, 0x5965, 0x4f63,
+ 0x7025, 0x5c30, 0x426d, 0x5426, 0x4d54, 0x5131, 0x335b, 0x477d,
+ 0x3235, 0x423f, 0x6660, 0x4a3b, 0x6661, 0x6662, 0x3e54, 0x6663,
+ 0x5724, 0x4d55, 0x6665, 0x3c5d, 0x6664, 0x6666, 0x6667, 0x426e,
+ 0x3d3e, 0x6668, 0x4266, 0x3a27, 0x6669, 0x666a, 0x3352, 0x5169,
+ 0x3f25, 0x666b, 0x466f, 0x666c, 0x666d, 0x666e, 0x462d, 0x666f,
+ 0x4927, 0x6670, 0x6671, 0x6672, 0x6539, 0x6673, 0x6674, 0x4262,
+ 0x6675, 0x6676, 0x5668, 0x6677, 0x6678, 0x3947, 0x773b, 0x773a,
+ 0x773e, 0x773c, 0x3a21, 0x773f, 0x7740, 0x7742, 0x7741, 0x7744,
+ 0x7743, 0x7745, 0x7746, 0x7747, 0x4b68, 0x385f, 0x7754, 0x7755,
+ 0x7756, 0x7758, 0x775a, 0x7757, 0x775b, 0x7759, 0x5757, 0x775c,
+ 0x775d, 0x775e, 0x775f, 0x7760, 0x5b4b, 0x582a, 0x6577, 0x396d,
+ 0x3f7d, 0x3b6a, 0x7749, 0x4647, 0x7748, 0x774a, 0x774c, 0x774b,
+ 0x774d, 0x4e3a, 0x774e, 0x4427, 0x5363, 0x764f, 0x4233, 0x7650,
+ 0x7651, 0x7652, 0x7653, 0x7654, 0x7656, 0x312b, 0x7657, 0x7658,
+ 0x7659, 0x765a, 0x765b, 0x765c, 0x765d, 0x765e, 0x4f4a, 0x765f,
+ 0x7660, 0x7661, 0x7662, 0x7663, 0x7664, 0x4070, 0x7665, 0x7666,
+ 0x7667, 0x7668, 0x7669, 0x766a, 0x766b, 0x766c, 0x766d, 0x766e,
+ 0x766f, 0x7670, 0x7671, 0x7672, 0x7673, 0x7674, 0x3e28, 0x7675,
+ 0x7676, 0x7677, 0x7678, 0x487a, 0x7679, 0x767a, 0x767b, 0x767c,
+ 0x767d, 0x767e, 0x7721, 0x7722, 0x7723, 0x7724, 0x7725, 0x7726,
+ 0x7727, 0x7728, 0x316e, 0x7729, 0x772a, 0x772b, 0x772c, 0x772d,
+ 0x415b, 0x772e, 0x772f, 0x4471, 0x702f, 0x3c26, 0x7030, 0x4379,
+ 0x4538, 0x513b, 0x7031, 0x7032, 0x7033, 0x7034, 0x7035, 0x513c,
+ 0x516c, 0x7037, 0x7036, 0x5427, 0x4d52, 0x7038, 0x703a, 0x7039,
+ 0x703b, 0x703c, 0x386b, 0x703d, 0x3a68, 0x703e, 0x703f, 0x3e69,
+ 0x7040, 0x366c, 0x7041, 0x7042, 0x7043, 0x7044, 0x4835, 0x7045,
+ 0x7046, 0x7047, 0x4574, 0x7048, 0x7049, 0x704a, 0x773d, 0x704b,
+ 0x704c, 0x704d, 0x704e, 0x704f, 0x3a57, 0x7050, 0x7051, 0x7052,
+ 0x7053, 0x7054, 0x7055, 0x7056, 0x7058, 0x5325, 0x7057, 0x7059,
+ 0x753a, 0x4239, 0x7764, 0x7765, 0x7766, 0x7767, 0x7768, 0x4234,
+ 0x776a, 0x776b, 0x4273, 0x7470, 0x746f, 0x4269, 0x7761, 0x7762,
+ 0x3b46, 0x5964, 0x4a72, 0x4068, 0x7024, 0x3a5a, 0x472d, 0x442c,
+ 0x776c, 0x776d, 0x776e, 0x7770, 0x776f, 0x7771, 0x7774, 0x7773,
+ 0x7772, 0x7775, 0x7776, 0x6d69, 0x6d6a, 0x6d6b, 0x763c, 0x763d,
+ 0x763e, 0x3626, 0x583e, 0x3944, 0x583b, 0x5c31, 0x4a73, 0x7777,
+ 0x7778, 0x7779, 0x777b, 0x777a, 0x3147, 0x777c, 0x777d, 0x777e,
+ 0x466b, 0x6c34, 0x335d, 0x7633, 0x7634, 0x4164, 0x7635, 0x7636,
+ 0x7637, 0x7638, 0x7639, 0x763a, 0x4823, 0x763b, 0x417a, 0x3928,
+ 0x6d68, 0x396a, 0x595f, 0x2321, 0x2322, 0x2323, 0x2167, 0x2325,
+ 0x2326, 0x2327, 0x2328, 0x2329, 0x232a, 0x232b, 0x232c, 0x232d,
+ 0x232e, 0x232f, 0x2330, 0x2331, 0x2332, 0x2333, 0x2334, 0x2335,
+ 0x2336, 0x2337, 0x2338, 0x2339, 0x233a, 0x233b, 0x233c, 0x233d,
+ 0x233e, 0x233f, 0x2340, 0x2341, 0x2342, 0x2343, 0x2344, 0x2345,
+ 0x2346, 0x2347, 0x2348, 0x2349, 0x234a, 0x234b, 0x234c, 0x234d,
+ 0x234e, 0x234f, 0x2350, 0x2351, 0x2352, 0x2353, 0x2354, 0x2355,
+ 0x2356, 0x2357, 0x2358, 0x2359, 0x235a, 0x235b, 0x235c, 0x235d,
+ 0x235e, 0x235f, 0x2360, 0x2361, 0x2362, 0x2363, 0x2364, 0x2365,
+ 0x2366, 0x2367, 0x2368, 0x2369, 0x236a, 0x236b, 0x236c, 0x236d,
+ 0x236e, 0x236f, 0x2370, 0x2371, 0x2372, 0x2373, 0x2374, 0x2375,
+ 0x2376, 0x2377, 0x2378, 0x2379, 0x237a, 0x237b, 0x237c, 0x237d,
+ 0x212b, 0x2169, 0x216a, 0x237e, 0x2324,
+};
+
+static const Summary16 gb2312_uni2indx_page00[70] = {
+ /* 0x0000 */
+ { 0, 0x0000 }, { 0, 0x0000 }, { 0, 0x0000 }, { 0, 0x0000 },
+ { 0, 0x0000 }, { 0, 0x0000 }, { 0, 0x0000 }, { 0, 0x0000 },
+ { 0, 0x0000 }, { 0, 0x0000 }, { 0, 0x0190 }, { 3, 0x0003 },
+ { 5, 0x0000 }, { 5, 0x0080 }, { 6, 0x3703 }, { 13, 0x168c },
+ /* 0x0100 */
+ { 19, 0x0002 }, { 20, 0x0808 }, { 22, 0x0800 }, { 23, 0x0000 },
+ { 23, 0x2000 }, { 24, 0x0000 }, { 24, 0x0800 }, { 25, 0x0000 },
+ { 25, 0x0000 }, { 25, 0x0000 }, { 25, 0x0000 }, { 25, 0x0000 },
+ { 25, 0x4000 }, { 26, 0x1555 }, { 33, 0x0000 }, { 33, 0x0000 },
+ /* 0x0200 */
+ { 33, 0x0000 }, { 33, 0x0000 }, { 33, 0x0000 }, { 33, 0x0000 },
+ { 33, 0x0000 }, { 33, 0x0000 }, { 33, 0x0000 }, { 33, 0x0000 },
+ { 33, 0x0000 }, { 33, 0x0000 }, { 33, 0x0000 }, { 33, 0x0000 },
+ { 33, 0x0280 }, { 35, 0x0000 }, { 35, 0x0000 }, { 35, 0x0000 },
+ /* 0x0300 */
+ { 35, 0x0000 }, { 35, 0x0000 }, { 35, 0x0000 }, { 35, 0x0000 },
+ { 35, 0x0000 }, { 35, 0x0000 }, { 35, 0x0000 }, { 35, 0x0000 },
+ { 35, 0x0000 }, { 35, 0xfffe }, { 50, 0x03fb }, { 59, 0xfffe },
+ { 74, 0x03fb }, { 83, 0x0000 }, { 83, 0x0000 }, { 83, 0x0000 },
+ /* 0x0400 */
+ { 83, 0x0002 }, { 84, 0xffff }, { 100, 0xffff }, { 116, 0xffff },
+ { 132, 0xffff }, { 148, 0x0002 },
+};
+static const Summary16 gb2312_uni2indx_page20[101] = {
+ /* 0x2000 */
+ { 149, 0x0000 }, { 149, 0x3360 }, { 155, 0x0040 }, { 156, 0x080d },
+ { 160, 0x0000 }, { 160, 0x0000 }, { 160, 0x0000 }, { 160, 0x0000 },
+ { 160, 0x0000 }, { 160, 0x0000 }, { 160, 0x0000 }, { 160, 0x0000 },
+ { 160, 0x0000 }, { 160, 0x0000 }, { 160, 0x0000 }, { 160, 0x0000 },
+ /* 0x2100 */
+ { 160, 0x0008 }, { 161, 0x0040 }, { 162, 0x0000 }, { 162, 0x0000 },
+ { 162, 0x0000 }, { 162, 0x0000 }, { 162, 0x0fff }, { 174, 0x0000 },
+ { 174, 0x0000 }, { 174, 0x000f }, { 178, 0x0000 }, { 178, 0x0000 },
+ { 178, 0x0000 }, { 178, 0x0000 }, { 178, 0x0000 }, { 178, 0x0000 },
+ /* 0x2200 */
+ { 178, 0x8100 }, { 180, 0x6402 }, { 184, 0x4fa1 }, { 192, 0x20f0 },
+ { 197, 0x1100 }, { 199, 0x0000 }, { 199, 0xc033 }, { 205, 0x0000 },
+ { 205, 0x0000 }, { 205, 0x0200 }, { 206, 0x0020 }, { 207, 0x0000 },
+ { 207, 0x0000 }, { 207, 0x0000 }, { 207, 0x0000 }, { 207, 0x0000 },
+ /* 0x2300 */
+ { 207, 0x0000 }, { 207, 0x0004 }, { 208, 0x0000 }, { 208, 0x0000 },
+ { 208, 0x0000 }, { 208, 0x0000 }, { 208, 0x0000 }, { 208, 0x0000 },
+ { 208, 0x0000 }, { 208, 0x0000 }, { 208, 0x0000 }, { 208, 0x0000 },
+ { 208, 0x0000 }, { 208, 0x0000 }, { 208, 0x0000 }, { 208, 0x0000 },
+ /* 0x2400 */
+ { 208, 0x0000 }, { 208, 0x0000 }, { 208, 0x0000 }, { 208, 0x0000 },
+ { 208, 0x0000 }, { 208, 0x0000 }, { 208, 0x03ff }, { 218, 0xfff0 },
+ { 230, 0xffff }, { 246, 0x0fff }, { 258, 0x0000 }, { 258, 0x0000 },
+ { 258, 0x0000 }, { 258, 0x0000 }, { 258, 0x0000 }, { 258, 0x0000 },
+ /* 0x2500 */
+ { 258, 0xffff }, { 274, 0xffff }, { 290, 0xffff }, { 306, 0xffff },
+ { 322, 0x0fff }, { 334, 0x0000 }, { 334, 0x0000 }, { 334, 0x0000 },
+ { 334, 0x0000 }, { 334, 0x0000 }, { 334, 0x0003 }, { 336, 0x000c },
+ { 338, 0xc8c0 }, { 343, 0x0000 }, { 343, 0x0000 }, { 343, 0x0000 },
+ /* 0x2600 */
+ { 343, 0x0060 }, { 345, 0x0000 }, { 345, 0x0000 }, { 345, 0x0000 },
+ { 345, 0x0005 },
+};
+static const Summary16 gb2312_uni2indx_page30[35] = {
+ /* 0x3000 */
+ { 347, 0xff2f }, { 360, 0x00fb }, { 367, 0x0000 }, { 367, 0x0000 },
+ { 367, 0xfffe }, { 382, 0xffff }, { 398, 0xffff }, { 414, 0xffff },
+ { 430, 0xffff }, { 446, 0x000f }, { 450, 0xfffe }, { 465, 0xffff },
+ { 481, 0xffff }, { 497, 0xffff }, { 513, 0xffff }, { 529, 0x087f },
+ /* 0x3100 */
+ { 537, 0xffe0 }, { 548, 0xffff }, { 564, 0x03ff }, { 574, 0x0000 },
+ { 574, 0x0000 }, { 574, 0x0000 }, { 574, 0x0000 }, { 574, 0x0000 },
+ { 574, 0x0000 }, { 574, 0x0000 }, { 574, 0x0000 }, { 574, 0x0000 },
+ { 574, 0x0000 }, { 574, 0x0000 }, { 574, 0x0000 }, { 574, 0x0000 },
+ /* 0x3200 */
+ { 574, 0x0000 }, { 574, 0x0000 }, { 574, 0x03ff },
+};
+static const Summary16 gb2312_uni2indx_page4e[1263] = {
+ /* 0x4e00 */
+ { 584, 0x7f8b }, { 595, 0x7f7b }, { 608, 0x3db4 }, { 617, 0xef55 },
+ { 628, 0xfba8 }, { 638, 0xf35d }, { 649, 0x0243 }, { 653, 0x400b },
+ { 657, 0xfb40 }, { 665, 0x8d3e }, { 674, 0x7bf7 }, { 687, 0x8c2c },
+ { 693, 0x6eff }, { 706, 0xe3fa }, { 717, 0x1d3a }, { 725, 0xa8ed },
+ /* 0x4f00 */
+ { 734, 0xe602 }, { 740, 0xcf83 }, { 749, 0x8cf5 }, { 758, 0x3555 },
+ { 766, 0xe048 }, { 771, 0xffab }, { 784, 0x92b9 }, { 792, 0xd859 },
+ { 800, 0xab18 }, { 807, 0x2892 }, { 812, 0xd7e9 }, { 823, 0x8020 },
+ { 825, 0xc438 }, { 831, 0xf583 }, { 840, 0xe74a }, { 849, 0x450a },
+ /* 0x5000 */
+ { 854, 0xb000 }, { 857, 0x9714 }, { 864, 0x7762 }, { 873, 0x5400 },
+ { 876, 0xd188 }, { 882, 0x1420 }, { 885, 0x1020 }, { 887, 0xc8c0 },
+ { 892, 0x2121 }, { 896, 0x0000 }, { 896, 0x13a8 }, { 902, 0x0c04 },
+ { 905, 0x8000 }, { 906, 0x0440 }, { 908, 0x70c0 }, { 913, 0x0828 },
+ /* 0x5100 */
+ { 916, 0x08c0 }, { 919, 0x0004 }, { 920, 0x0002 }, { 921, 0x8000 },
+ { 922, 0x2b7b }, { 932, 0x1472 }, { 938, 0x7924 }, { 945, 0x3bfb },
+ { 957, 0x3327 }, { 965, 0x1ae4 }, { 972, 0x9835 }, { 979, 0x38ef },
+ { 989, 0x9ad1 }, { 997, 0x2802 }, { 1000, 0xa813 }, { 1006, 0xbf69 },
+ /* 0x5200 */
+ { 1017, 0x65cf }, { 1027, 0x2fc6 }, { 1036, 0x6b11 }, { 1043, 0xafc9 },
+ { 1053, 0x340f }, { 1060, 0x5053 }, { 1066, 0x86a2 }, { 1072, 0xa004 },
+ { 1075, 0x0106 }, { 1078, 0xe809 }, { 1084, 0x3f0f }, { 1094, 0xc00e },
+ { 1099, 0x0a88 }, { 1103, 0x8145 }, { 1108, 0x0010 }, { 1109, 0xc601 },
+ /* 0x5300 */
+ { 1114, 0xa161 }, { 1120, 0x26e1 }, { 1127, 0x444b }, { 1133, 0xce00 },
+ { 1138, 0xc7aa }, { 1147, 0xd4ee }, { 1157, 0xcadf }, { 1168, 0x85bb },
+ { 1177, 0x3a74 }, { 1185, 0xa520 }, { 1190, 0x436c }, { 1197, 0x8840 },
+ { 1200, 0x3f06 }, { 1208, 0x8bd2 }, { 1216, 0xff79 }, { 1229, 0x3bef },
+ /* 0x5400 */
+ { 1241, 0xf75a }, { 1252, 0xe8ef }, { 1263, 0xfbcb }, { 1275, 0x5b36 },
+ { 1284, 0x0d49 }, { 1290, 0x1bfd }, { 1301, 0x0154 }, { 1305, 0x39ee },
+ { 1315, 0xd855 }, { 1323, 0x2e75 }, { 1332, 0xbfd8 }, { 1343, 0xa91a },
+ { 1350, 0xf3d7 }, { 1362, 0xf6bf }, { 1375, 0x67e0 }, { 1383, 0xb40c },
+ /* 0x5500 */
+ { 1389, 0x82c2 }, { 1394, 0x0813 }, { 1398, 0xd49d }, { 1407, 0xd08b },
+ { 1414, 0x065a }, { 1420, 0x1061 }, { 1424, 0x74f2 }, { 1433, 0x59e0 },
+ { 1440, 0x8f9f }, { 1451, 0xb312 }, { 1458, 0x0080 }, { 1459, 0x6aaa },
+ { 1467, 0x3230 }, { 1472, 0xb05e }, { 1480, 0x9d7a }, { 1490, 0x60ac },
+ /* 0x5600 */
+ { 1496, 0xd303 }, { 1503, 0xc900 }, { 1507, 0x3098 }, { 1512, 0x8a56 },
+ { 1519, 0x7000 }, { 1522, 0x1390 }, { 1527, 0x1f14 }, { 1534, 0x1842 },
+ { 1538, 0xc060 }, { 1542, 0x0008 }, { 1543, 0x8008 }, { 1545, 0x1080 },
+ { 1547, 0x0400 }, { 1548, 0xec90 }, { 1555, 0x2817 }, { 1561, 0xe633 },
+ /* 0x5700 */
+ { 1570, 0x0758 }, { 1576, 0x9000 }, { 1578, 0xf708 }, { 1586, 0x4e09 },
+ { 1592, 0xf485 }, { 1600, 0xfc83 }, { 1609, 0xaf53 }, { 1619, 0x18c8 },
+ { 1624, 0x187c }, { 1631, 0x080c }, { 1634, 0x6adf }, { 1645, 0x0114 },
+ { 1648, 0xc80c }, { 1653, 0xa734 }, { 1661, 0xa011 }, { 1665, 0x2710 },
+ /* 0x5800 */
+ { 1670, 0x28c5 }, { 1676, 0x4222 }, { 1680, 0x0413 }, { 1684, 0x0021 },
+ { 1686, 0x3010 }, { 1689, 0x4112 }, { 1693, 0x1820 }, { 1696, 0x4000 },
+ { 1697, 0x022b }, { 1702, 0xc60c }, { 1708, 0x0300 }, { 1710, 0x1000 },
+ { 1711, 0x0022 }, { 1713, 0x0022 }, { 1715, 0x5810 }, { 1719, 0x0249 },
+ /* 0x5900 */
+ { 1723, 0xa094 }, { 1728, 0x9670 }, { 1735, 0xeeb0 }, { 1744, 0x1792 },
+ { 1751, 0xcb96 }, { 1760, 0x05f2 }, { 1767, 0x0025 }, { 1770, 0x2358 },
+ { 1776, 0x25de }, { 1785, 0x42cc }, { 1791, 0xcf38 }, { 1800, 0x4a04 },
+ { 1804, 0x0c40 }, { 1807, 0x359f }, { 1817, 0x1128 }, { 1821, 0x8a00 },
+ /* 0x5a00 */
+ { 1824, 0x13fa }, { 1833, 0x910a }, { 1838, 0x0229 }, { 1842, 0x1056 },
+ { 1847, 0x0641 }, { 1851, 0x0420 }, { 1853, 0x0484 }, { 1856, 0x84f0 },
+ { 1862, 0x0000 }, { 1862, 0x0c04 }, { 1865, 0x0400 }, { 1866, 0x412c },
+ { 1871, 0x1206 }, { 1875, 0x1154 }, { 1880, 0x0a4b }, { 1886, 0x0002 },
+ /* 0x5b00 */
+ { 1887, 0x0200 }, { 1888, 0x00c0 }, { 1890, 0x0000 }, { 1890, 0x0094 },
+ { 1893, 0x0001 }, { 1894, 0xbfbb }, { 1907, 0x167c }, { 1915, 0x242b },
+ { 1921, 0x9bbb }, { 1932, 0x7fa8 }, { 1942, 0x0c7f }, { 1951, 0xe379 },
+ { 1961, 0x10f4 }, { 1967, 0xe00d }, { 1973, 0x4132 }, { 1978, 0x9f01 },
+ /* 0x5c00 */
+ { 1985, 0x8652 }, { 1991, 0x3572 }, { 1999, 0x10b4 }, { 2004, 0xff12 },
+ { 2014, 0xcf27 }, { 2024, 0x4223 }, { 2029, 0xc06b }, { 2036, 0x8602 },
+ { 2040, 0x3106 }, { 2045, 0x1fd3 }, { 2055, 0x3a0c }, { 2061, 0xa1aa },
+ { 2068, 0x0812 }, { 2071, 0x0204 }, { 2073, 0x2572 }, { 2080, 0x0801 },
+ /* 0x5d00 */
+ { 2082, 0x40cc }, { 2087, 0x4850 }, { 2091, 0x62d0 }, { 2097, 0x6010 },
+ { 2100, 0x1c80 }, { 2104, 0x2900 }, { 2107, 0x9a00 }, { 2111, 0x0010 },
+ { 2112, 0x0004 }, { 2113, 0x2200 }, { 2115, 0x0000 }, { 2115, 0x0080 },
+ { 2116, 0x2020 }, { 2118, 0x6800 }, { 2121, 0xcbe6 }, { 2131, 0x609e },
+ /* 0x5e00 */
+ { 2138, 0x916e }, { 2146, 0x3f73 }, { 2157, 0x60c0 }, { 2161, 0x3982 },
+ { 2167, 0x1034 }, { 2171, 0x4830 }, { 2175, 0x0006 }, { 2177, 0xbd5c },
+ { 2187, 0x8cd1 }, { 2194, 0xd6fb }, { 2206, 0x20e1 }, { 2211, 0x43e8 },
+ { 2218, 0x0600 }, { 2220, 0x084e }, { 2225, 0x0500 }, { 2227, 0xc4d0 },
+ /* 0x5f00 */
+ { 2233, 0x8d1f }, { 2242, 0x89aa }, { 2249, 0xa6e1 }, { 2257, 0x1602 },
+ { 2261, 0x0001 }, { 2262, 0x21ed }, { 2270, 0x3656 }, { 2278, 0x1a8b },
+ { 2285, 0x1fb7 }, { 2296, 0x13a5 }, { 2303, 0x6502 }, { 2308, 0x30a0 },
+ { 2312, 0xb278 }, { 2320, 0x23c7 }, { 2328, 0x6c93 }, { 2336, 0xe922 },
+ /* 0x6000 */
+ { 2343, 0xe47f }, { 2354, 0x3a74 }, { 2362, 0x8fe3 }, { 2372, 0x9820 },
+ { 2376, 0x280e }, { 2381, 0x2625 }, { 2387, 0xbf9c }, { 2398, 0xbf49 },
+ { 2408, 0x3218 }, { 2413, 0xac54 }, { 2420, 0xb949 }, { 2428, 0x1916 },
+ { 2434, 0x0c60 }, { 2438, 0xb522 }, { 2445, 0xfbc1 }, { 2455, 0x0659 },
+ /* 0x6100 */
+ { 2461, 0xe343 }, { 2469, 0x8420 }, { 2472, 0x08d9 }, { 2478, 0x8000 },
+ { 2479, 0x5500 }, { 2483, 0x2022 }, { 2486, 0x0184 }, { 2489, 0x00a1 },
+ { 2492, 0x4800 }, { 2494, 0x2010 }, { 2496, 0x1380 }, { 2500, 0x4080 },
+ { 2502, 0x0d04 }, { 2506, 0x0016 }, { 2509, 0x0040 }, { 2510, 0x8020 },
+ /* 0x6200 */
+ { 2512, 0xfd40 }, { 2520, 0x8de7 }, { 2530, 0x5436 }, { 2537, 0xe098 },
+ { 2543, 0x7b8b }, { 2553, 0x091e }, { 2559, 0xfec8 }, { 2569, 0xd249 },
+ { 2576, 0x0611 }, { 2580, 0x8dee }, { 2590, 0x1937 }, { 2598, 0xba22 },
+ { 2605, 0x77f4 }, { 2616, 0x9fdd }, { 2628, 0xf3ec }, { 2639, 0xf0da },
+ /* 0x6300 */
+ { 2648, 0x4386 }, { 2654, 0xec42 }, { 2661, 0x8d3f }, { 2671, 0x2604 },
+ { 2675, 0xfa6c }, { 2685, 0xc021 }, { 2689, 0x628e }, { 2696, 0x0cc2 },
+ { 2701, 0xd785 }, { 2710, 0x0145 }, { 2714, 0x77ad }, { 2725, 0x5599 },
+ { 2733, 0xe250 }, { 2739, 0x4045 }, { 2743, 0x260b }, { 2749, 0xa154 },
+ /* 0x6400 */
+ { 2755, 0x9827 }, { 2762, 0x5819 }, { 2768, 0x3443 }, { 2774, 0xa410 },
+ { 2778, 0x05f2 }, { 2785, 0x4114 }, { 2789, 0x2280 }, { 2792, 0x0700 },
+ { 2795, 0x00b4 }, { 2799, 0x4266 }, { 2805, 0x7210 }, { 2810, 0x15a1 },
+ { 2816, 0x6025 }, { 2821, 0x4185 }, { 2826, 0x0054 }, { 2829, 0x0000 },
+ /* 0x6500 */
+ { 2829, 0x0201 }, { 2831, 0x0104 }, { 2833, 0xc820 }, { 2837, 0xcb70 },
+ { 2845, 0x9320 }, { 2850, 0x6a62 }, { 2857, 0x184c }, { 2862, 0x0095 },
+ { 2866, 0x1880 }, { 2869, 0x9a8b }, { 2877, 0xaab2 }, { 2885, 0x3201 },
+ { 2889, 0xd87a }, { 2898, 0x00c4 }, { 2901, 0xf3e5 }, { 2912, 0x04c3 },
+ /* 0x6600 */
+ { 2917, 0xd44d }, { 2925, 0xa238 }, { 2931, 0xa1a1 }, { 2937, 0x5072 },
+ { 2943, 0x980a }, { 2948, 0x84fc }, { 2956, 0xc152 }, { 2962, 0x44d1 },
+ { 2968, 0x1094 }, { 2972, 0x20c2 }, { 2976, 0x4180 }, { 2979, 0x4210 },
+ { 2982, 0x0000 }, { 2982, 0x3a00 }, { 2986, 0x0240 }, { 2988, 0xd29d },
+ /* 0x6700 */
+ { 2997, 0x2f01 }, { 3003, 0xa8b1 }, { 3010, 0xbd40 }, { 3017, 0x2432 },
+ { 3022, 0xd34d }, { 3031, 0xd04b }, { 3038, 0xa723 }, { 3046, 0xd0ad },
+ { 3054, 0x0a92 }, { 3059, 0x75a1 }, { 3067, 0xadac }, { 3076, 0x01e9 },
+ { 3082, 0x801a }, { 3086, 0x771f }, { 3097, 0x9225 }, { 3103, 0xa01b },
+ /* 0x6800 */
+ { 3109, 0xdfa1 }, { 3119, 0x20ca }, { 3124, 0x0602 }, { 3127, 0x738c },
+ { 3135, 0x577f }, { 3147, 0x003b }, { 3152, 0x0bff }, { 3163, 0x00d0 },
+ { 3166, 0x806a }, { 3171, 0x0088 }, { 3173, 0xa1c4 }, { 3179, 0x0029 },
+ { 3182, 0x2a05 }, { 3187, 0x0524 }, { 3191, 0x4009 }, { 3194, 0x1623 },
+ /* 0x6900 */
+ { 3200, 0x6822 }, { 3205, 0x8005 }, { 3208, 0x2011 }, { 3211, 0xa211 },
+ { 3216, 0x0004 }, { 3217, 0x6490 }, { 3222, 0x4849 }, { 3227, 0x1382 },
+ { 3232, 0x23d5 }, { 3240, 0x1930 }, { 3245, 0x2980 }, { 3249, 0x0892 },
+ { 3253, 0x5402 }, { 3257, 0x8811 }, { 3261, 0x2001 }, { 3263, 0xa004 },
+ /* 0x6a00 */
+ { 3266, 0x0400 }, { 3267, 0x8180 }, { 3270, 0x8502 }, { 3274, 0x6022 },
+ { 3278, 0x0090 }, { 3280, 0x0b01 }, { 3284, 0x0022 }, { 3286, 0x1202 },
+ { 3289, 0x4011 }, { 3292, 0x0083 }, { 3295, 0x1a01 }, { 3299, 0x0000 },
+ { 3299, 0x0000 }, { 3299, 0x0000 }, { 3299, 0x0000 }, { 3299, 0x0000 },
+ /* 0x6b00 */
+ { 3299, 0x0000 }, { 3299, 0x0000 }, { 3299, 0x009f }, { 3305, 0x4684 },
+ { 3310, 0x12c8 }, { 3315, 0x0200 }, { 3316, 0x04fc }, { 3323, 0x1a00 },
+ { 3326, 0x2ede }, { 3336, 0x0c4c }, { 3341, 0x0402 }, { 3343, 0x80b8 },
+ { 3348, 0xa826 }, { 3354, 0x0afc }, { 3362, 0x8c02 }, { 3366, 0x2228 },
+ /* 0x6c00 */
+ { 3370, 0xa0e0 }, { 3375, 0x8f7b }, { 3386, 0xc7d6 }, { 3396, 0x2135 },
+ { 3402, 0x06c7 }, { 3409, 0xf8b1 }, { 3418, 0x0713 }, { 3424, 0x6255 },
+ { 3431, 0x936e }, { 3440, 0x8a19 }, { 3446, 0x6efa }, { 3457, 0xfb0e },
+ { 3467, 0x1630 }, { 3472, 0x48f9 }, { 3480, 0xcd2f }, { 3490, 0x7deb },
+ /* 0x6d00 */
+ { 3502, 0x5892 }, { 3508, 0x4e84 }, { 3514, 0x4ca0 }, { 3519, 0x7a2e },
+ { 3528, 0xedea }, { 3539, 0x561e }, { 3547, 0xc649 }, { 3554, 0x1190 },
+ { 3558, 0x5324 }, { 3564, 0xe83a }, { 3572, 0xcfdb }, { 3584, 0x8124 },
+ { 3588, 0x18f1 }, { 3595, 0x6342 }, { 3601, 0x5853 }, { 3608, 0x1a8a },
+ /* 0x6e00 */
+ { 3614, 0x7420 }, { 3619, 0x24d3 }, { 3626, 0xaa3b }, { 3635, 0x0514 },
+ { 3639, 0x6018 }, { 3643, 0x8958 }, { 3649, 0x4800 }, { 3651, 0xc000 },
+ { 3653, 0x8268 }, { 3658, 0x9101 }, { 3662, 0x84a4 }, { 3667, 0x2cd6 },
+ { 3675, 0x8886 }, { 3680, 0xc4ba }, { 3688, 0x0377 }, { 3696, 0x0210 },
+ /* 0x6f00 */
+ { 3698, 0x8244 }, { 3702, 0x0038 }, { 3705, 0xae11 }, { 3712, 0x404a },
+ { 3716, 0x28c0 }, { 3720, 0x5100 }, { 3723, 0x6044 }, { 3727, 0x1514 },
+ { 3732, 0x7310 }, { 3738, 0x1000 }, { 3739, 0x0082 }, { 3741, 0x0248 },
+ { 3744, 0x0205 }, { 3747, 0x4006 }, { 3750, 0xc003 }, { 3754, 0x0000 },
+ /* 0x7000 */
+ { 3754, 0x0000 }, { 3754, 0x0c02 }, { 3757, 0x0008 }, { 3758, 0x0220 },
+ { 3760, 0x9000 }, { 3762, 0x4000 }, { 3763, 0xb800 }, { 3767, 0xd161 },
+ { 3774, 0x4621 }, { 3779, 0x3274 }, { 3786, 0xf800 }, { 3791, 0x3b8a },
+ { 3799, 0x050f }, { 3805, 0x8b00 }, { 3809, 0xbbd0 }, { 3818, 0x2280 },
+ /* 0x7100 */
+ { 3821, 0x0600 }, { 3823, 0x0769 }, { 3830, 0x8040 }, { 3832, 0x0043 },
+ { 3835, 0x5420 }, { 3839, 0x5000 }, { 3841, 0x41d0 }, { 3846, 0x250c },
+ { 3851, 0x8410 }, { 3854, 0x8310 }, { 3858, 0x1101 }, { 3861, 0x0228 },
+ { 3864, 0x4008 }, { 3866, 0x0030 }, { 3868, 0x40a1 }, { 3872, 0x0200 },
+ /* 0x7200 */
+ { 3873, 0x0040 }, { 3874, 0x2000 }, { 3875, 0x1500 }, { 3878, 0xabe3 },
+ { 3888, 0x3180 }, { 3892, 0xaa44 }, { 3898, 0xc2c6 }, { 3905, 0xc624 },
+ { 3911, 0xac13 }, { 3918, 0x8004 }, { 3920, 0xb000 }, { 3923, 0x03d1 },
+ { 3929, 0x611e }, { 3936, 0x4285 }, { 3941, 0xf303 }, { 3949, 0x1d9f },
+ /* 0x7300 */
+ { 3959, 0x440a }, { 3963, 0x78e8 }, { 3971, 0x5e26 }, { 3979, 0xc392 },
+ { 3986, 0x2000 }, { 3987, 0x0085 }, { 3990, 0xb001 }, { 3994, 0x4000 },
+ { 3995, 0x4a90 }, { 4000, 0x8842 }, { 4004, 0xca04 }, { 4009, 0x0c8d },
+ { 4015, 0xa705 }, { 4022, 0x4203 }, { 4026, 0x22a1 }, { 4031, 0x0004 },
+ /* 0x7400 */
+ { 4032, 0x8668 }, { 4038, 0x0c01 }, { 4041, 0x5564 }, { 4048, 0x1079 },
+ { 4054, 0x0002 }, { 4055, 0xdea0 }, { 4063, 0x2000 }, { 4064, 0x40c1 },
+ { 4068, 0x488b }, { 4074, 0x5001 }, { 4077, 0x0380 }, { 4080, 0x0400 },
+ { 4081, 0x0000 }, { 4081, 0x5004 }, { 4084, 0xc05d }, { 4091, 0x80d0 },
+ /* 0x7500 */
+ { 4095, 0xa010 }, { 4098, 0x970a }, { 4105, 0xbb20 }, { 4112, 0x4daf },
+ { 4122, 0xd921 }, { 4129, 0x1e10 }, { 4134, 0x0460 }, { 4137, 0x8314 },
+ { 4142, 0x8848 }, { 4146, 0xa6d6 }, { 4155, 0xd83b }, { 4164, 0x733f },
+ { 4175, 0x27bc }, { 4184, 0x4974 }, { 4191, 0x0ddc }, { 4199, 0x9213 },
+ /* 0x7600 */
+ { 4205, 0x142b }, { 4211, 0x8ba1 }, { 4218, 0x2e75 }, { 4227, 0xd139 },
+ { 4235, 0x3009 }, { 4239, 0x5050 }, { 4243, 0x8808 }, { 4246, 0x6900 },
+ { 4250, 0x49d4 }, { 4257, 0x024a }, { 4261, 0x4010 }, { 4263, 0x8016 },
+ { 4267, 0xe564 }, { 4275, 0x89d7 }, { 4284, 0xc020 }, { 4287, 0x5316 },
+ /* 0x7700 */
+ { 4294, 0x2b92 }, { 4301, 0x8600 }, { 4304, 0xa345 }, { 4311, 0x15e0 },
+ { 4317, 0x008b }, { 4321, 0x0c03 }, { 4325, 0x196e }, { 4333, 0xe200 },
+ { 4337, 0x7031 }, { 4343, 0x8006 }, { 4346, 0x16a5 }, { 4353, 0xa829 },
+ { 4359, 0x2000 }, { 4360, 0x1880 }, { 4363, 0x7aac }, { 4372, 0xe148 },
+ /* 0x7800 */
+ { 4378, 0x3207 }, { 4384, 0xb5d6 }, { 4394, 0x32e8 }, { 4401, 0x5f91 },
+ { 4410, 0x50a1 }, { 4415, 0x20e5 }, { 4421, 0x7c00 }, { 4426, 0x1080 },
+ { 4428, 0x7280 }, { 4433, 0x9d8a }, { 4441, 0x00aa }, { 4445, 0x421f },
+ { 4452, 0x0e22 }, { 4457, 0x0231 }, { 4461, 0x1100 }, { 4463, 0x0494 },
+ /* 0x7900 */
+ { 4467, 0x0022 }, { 4469, 0x4008 }, { 4471, 0x0010 }, { 4472, 0x5c10 },
+ { 4477, 0x0343 }, { 4482, 0xfcc8 }, { 4491, 0xa1a5 }, { 4498, 0x0580 },
+ { 4501, 0x8433 }, { 4507, 0x0400 }, { 4508, 0x0080 }, { 4509, 0x6e08 },
+ { 4515, 0x2a4b }, { 4522, 0x8126 }, { 4527, 0xaad8 }, { 4535, 0x2901 },
+ /* 0x7a00 */
+ { 4539, 0x684d }, { 4546, 0x4490 }, { 4550, 0x0009 }, { 4552, 0xba88 },
+ { 4559, 0x0040 }, { 4560, 0x0082 }, { 4562, 0x0000 }, { 4562, 0x87d1 },
+ { 4570, 0x215b }, { 4577, 0xb1e6 }, { 4586, 0x3161 }, { 4592, 0x8008 },
+ { 4594, 0x0800 }, { 4595, 0xc240 }, { 4599, 0xa069 }, { 4605, 0xa600 },
+ /* 0x7b00 */
+ { 4609, 0x8d58 }, { 4616, 0x4a32 }, { 4622, 0x5d71 }, { 4631, 0x550a },
+ { 4637, 0x9aa0 }, { 4643, 0x2d57 }, { 4652, 0x4005 }, { 4655, 0x4aa6 },
+ { 4662, 0x2021 }, { 4665, 0x30b1 }, { 4671, 0x3fc6 }, { 4681, 0x0112 },
+ { 4684, 0x10c2 }, { 4688, 0x260a }, { 4693, 0x4462 }, { 4698, 0x5082 },
+ /* 0x7c00 */
+ { 4702, 0x9880 }, { 4706, 0x8040 }, { 4708, 0x04c0 }, { 4711, 0x8100 },
+ { 4713, 0x2003 }, { 4716, 0x0000 }, { 4716, 0x0000 }, { 4716, 0x3818 },
+ { 4721, 0x0200 }, { 4722, 0xf1a6 }, { 4731, 0x4434 }, { 4736, 0x720e },
+ { 4743, 0x35a2 }, { 4750, 0x92e0 }, { 4756, 0x8101 }, { 4759, 0x0900 },
+ /* 0x7d00 */
+ { 4761, 0x0400 }, { 4762, 0x0000 }, { 4762, 0x8885 }, { 4767, 0x0000 },
+ { 4767, 0x0000 }, { 4767, 0x0000 }, { 4767, 0x4000 }, { 4768, 0x0080 },
+ { 4769, 0x0000 }, { 4769, 0x0000 }, { 4769, 0x4040 }, { 4771, 0x0000 },
+ { 4771, 0x0000 }, { 4771, 0x0000 }, { 4771, 0x0000 }, { 4771, 0x0000 },
+ /* 0x7e00 */
+ { 4771, 0x0000 }, { 4771, 0x0000 }, { 4771, 0x0000 }, { 4771, 0x0800 },
+ { 4772, 0x0082 }, { 4774, 0x0000 }, { 4774, 0x0000 }, { 4774, 0x0000 },
+ { 4774, 0x0004 }, { 4775, 0x8800 }, { 4777, 0xbfff }, { 4792, 0xe7ef },
+ { 4805, 0xffff }, { 4821, 0xffbf }, { 4836, 0xefef }, { 4850, 0xfdff },
+ /* 0x7f00 */
+ { 4865, 0xfbff }, { 4880, 0xbffe }, { 4894, 0xffff }, { 4910, 0x057f },
+ { 4919, 0x0034 }, { 4922, 0x85b3 }, { 4930, 0x4706 }, { 4936, 0x4216 },
+ { 4941, 0x5402 }, { 4945, 0xe410 }, { 4950, 0x8092 }, { 4954, 0xb305 },
+ { 4961, 0x5422 }, { 4966, 0x8130 }, { 4970, 0x4263 }, { 4976, 0x180b },
+ /* 0x8000 */
+ { 4981, 0x387b }, { 4990, 0x13f5 }, { 4999, 0x07e5 }, { 5007, 0xa9ea },
+ { 5016, 0x3c4c }, { 5023, 0x0514 }, { 5027, 0x0600 }, { 5029, 0x8002 },
+ { 5031, 0x1ad9 }, { 5039, 0xbd48 }, { 5047, 0xee37 }, { 5058, 0xf496 },
+ { 5067, 0x705f }, { 5076, 0x7ec0 }, { 5084, 0xbfb2 }, { 5095, 0x355f },
+ /* 0x8100 */
+ { 5105, 0xe644 }, { 5112, 0x455f }, { 5121, 0x9000 }, { 5123, 0x4146 },
+ { 5128, 0x1d40 }, { 5133, 0x063b }, { 5140, 0x62a1 }, { 5146, 0xfe13 },
+ { 5156, 0x8505 }, { 5161, 0x3902 }, { 5166, 0x0548 }, { 5170, 0x0c08 },
+ { 5173, 0x144f }, { 5180, 0x0000 }, { 5180, 0x3488 }, { 5185, 0x5818 },
+ /* 0x8200 */
+ { 5190, 0x3077 }, { 5198, 0xd815 }, { 5205, 0xbd0e }, { 5214, 0x4bfb },
+ { 5225, 0x8a90 }, { 5230, 0x8500 }, { 5233, 0xc100 }, { 5236, 0xe61d },
+ { 5245, 0xed14 }, { 5253, 0xb386 }, { 5261, 0xff72 }, { 5273, 0x639b },
+ { 5282, 0xfd92 }, { 5292, 0xd9be }, { 5303, 0x887b }, { 5311, 0x0a92 },
+ /* 0x8300 */
+ { 5316, 0xd3fe }, { 5328, 0x1cb2 }, { 5335, 0xb980 }, { 5341, 0x177a },
+ { 5350, 0x82c9 }, { 5356, 0xdc17 }, { 5365, 0xfffb }, { 5380, 0x3980 },
+ { 5385, 0x4260 }, { 5389, 0x590c }, { 5395, 0x0f01 }, { 5400, 0x37df },
+ { 5412, 0x94a3 }, { 5419, 0xb150 }, { 5425, 0x0623 }, { 5430, 0x2307 },
+ /* 0x8400 */
+ { 5436, 0xf85a }, { 5445, 0x3102 }, { 5449, 0x01f0 }, { 5454, 0x3102 },
+ { 5458, 0x0040 }, { 5459, 0x1e82 }, { 5465, 0x3a0a }, { 5471, 0x056a },
+ { 5477, 0x5b84 }, { 5484, 0x1280 }, { 5487, 0x8002 }, { 5489, 0xa714 },
+ { 5496, 0x2612 }, { 5501, 0xa04b }, { 5507, 0x1069 }, { 5512, 0x9001 },
+ /* 0x8500 */
+ { 5515, 0x1000 }, { 5516, 0x848a }, { 5521, 0x1802 }, { 5524, 0x3f80 },
+ { 5531, 0x0708 }, { 5535, 0x4240 }, { 5538, 0x0110 }, { 5540, 0x4e14 },
+ { 5546, 0x80b0 }, { 5550, 0x1800 }, { 5552, 0xc510 }, { 5557, 0x0281 },
+ { 5560, 0x8202 }, { 5563, 0x1029 }, { 5567, 0x0210 }, { 5569, 0x8800 },
+ /* 0x8600 */
+ { 5571, 0x0020 }, { 5572, 0x0042 }, { 5574, 0x0280 }, { 5576, 0x1100 },
+ { 5578, 0xe000 }, { 5581, 0x4413 }, { 5586, 0x5804 }, { 5590, 0xfe02 },
+ { 5598, 0x3c07 }, { 5605, 0x3028 }, { 5609, 0x9798 }, { 5617, 0x0473 },
+ { 5623, 0xced1 }, { 5632, 0xcb13 }, { 5640, 0x6210 }, { 5644, 0x431f },
+ /* 0x8700 */
+ { 5652, 0x278d }, { 5660, 0x55ac }, { 5668, 0x422e }, { 5674, 0xc892 },
+ { 5680, 0x5380 }, { 5685, 0x0288 }, { 5688, 0x4039 }, { 5693, 0x7851 },
+ { 5700, 0x292c }, { 5706, 0x8088 }, { 5709, 0xb900 }, { 5714, 0x2428 },
+ { 5718, 0x0c41 }, { 5722, 0x080e }, { 5726, 0x4421 }, { 5730, 0x4200 },
+ /* 0x8800 */
+ { 5732, 0x0408 }, { 5734, 0x0868 }, { 5738, 0x0006 }, { 5740, 0x1204 },
+ { 5743, 0x3031 }, { 5748, 0x0290 }, { 5751, 0x5b3e }, { 5761, 0xe085 },
+ { 5767, 0x2936 }, { 5774, 0x1044 }, { 5777, 0x2814 }, { 5781, 0x1082 },
+ { 5784, 0x4266 }, { 5790, 0x8334 }, { 5796, 0x013c }, { 5801, 0x531b },
+ /* 0x8900 */
+ { 5809, 0x0404 }, { 5811, 0x0e0d }, { 5817, 0x0c22 }, { 5821, 0x0051 },
+ { 5824, 0x0012 }, { 5826, 0xc000 }, { 5828, 0x0040 }, { 5829, 0x8800 },
+ { 5831, 0x004a }, { 5834, 0x0000 }, { 5834, 0x0000 }, { 5834, 0x0000 },
+ { 5834, 0xdff6 }, { 5847, 0x5447 }, { 5854, 0x8868 }, { 5859, 0x0008 },
+ /* 0x8a00 */
+ { 5860, 0x0081 }, { 5862, 0x0000 }, { 5862, 0x0000 }, { 5862, 0x4000 },
+ { 5863, 0x0100 }, { 5864, 0x0000 }, { 5864, 0x0000 }, { 5864, 0x0200 },
+ { 5865, 0x0600 }, { 5867, 0x0008 }, { 5868, 0x0000 }, { 5868, 0x0000 },
+ { 5868, 0x0000 }, { 5868, 0x0000 }, { 5868, 0x0000 }, { 5868, 0x0000 },
+ /* 0x8b00 */
+ { 5868, 0x0080 }, { 5869, 0x0000 }, { 5869, 0x0040 }, { 5870, 0x0000 },
+ { 5870, 0x0000 }, { 5870, 0x0000 }, { 5870, 0x1040 }, { 5872, 0x0000 },
+ { 5872, 0x0000 }, { 5872, 0x0000 }, { 5872, 0xefff }, { 5887, 0xf7fd },
+ { 5901, 0xff7f }, { 5916, 0xfffe }, { 5931, 0xfbff }, { 5946, 0xffff },
+ /* 0x8c00 */
+ { 5962, 0xfdff }, { 5977, 0xbfff }, { 5992, 0xffff }, { 6008, 0x00ff },
+ { 6016, 0x12c2 }, { 6021, 0x0420 }, { 6023, 0x0c06 }, { 6027, 0x0708 },
+ { 6031, 0x1624 }, { 6036, 0x0110 }, { 6038, 0x0000 }, { 6038, 0x0000 },
+ { 6038, 0x0000 }, { 6038, 0x0000 }, { 6038, 0x0000 }, { 6038, 0x0000 },
+ /* 0x8d00 */
+ { 6038, 0x0000 }, { 6038, 0xe000 }, { 6041, 0xfffe }, { 6056, 0xffff },
+ { 6072, 0xffff }, { 6088, 0x7f79 }, { 6100, 0x28df }, { 6109, 0x00f9 },
+ { 6115, 0x0c32 }, { 6120, 0x8012 }, { 6123, 0x0008 }, { 6124, 0xd53a },
+ { 6133, 0xd858 }, { 6140, 0xecc2 }, { 6148, 0x9d18 }, { 6155, 0x2fa8 },
+ /* 0x8e00 */
+ { 6163, 0x9620 }, { 6168, 0xe010 }, { 6172, 0xd60c }, { 6179, 0x2622 },
+ { 6184, 0x0f97 }, { 6193, 0x0206 }, { 6196, 0xb240 }, { 6201, 0x9055 },
+ { 6207, 0x80a2 }, { 6211, 0x5011 }, { 6215, 0x9800 }, { 6218, 0x0404 },
+ { 6220, 0x4000 }, { 6221, 0x0000 }, { 6221, 0x0000 }, { 6221, 0x0000 },
+ /* 0x8f00 */
+ { 6221, 0x0000 }, { 6221, 0x0000 }, { 6221, 0x0000 }, { 6221, 0x0000 },
+ { 6221, 0x0000 }, { 6221, 0x0000 }, { 6221, 0xfbc0 }, { 6230, 0xffff },
+ { 6246, 0xeffe }, { 6260, 0xdffb }, { 6274, 0x0b08 }, { 6278, 0x6243 },
+ { 6284, 0x41b6 }, { 6291, 0xfb3b }, { 6303, 0x6f74 }, { 6313, 0x2389 },
+ /* 0x9000 */
+ { 6319, 0xae7f }, { 6331, 0xecd7 }, { 6342, 0xe047 }, { 6349, 0x5960 },
+ { 6355, 0xa096 }, { 6361, 0x098f }, { 6368, 0x612c }, { 6374, 0xa030 },
+ { 6378, 0x090d }, { 6383, 0x2aaa }, { 6390, 0xd44e }, { 6398, 0x4f7b },
+ { 6409, 0xc4b2 }, { 6416, 0x388b }, { 6423, 0xa9c6 }, { 6431, 0x6110 },
+ /* 0x9100 */
+ { 6435, 0x0014 }, { 6437, 0x4200 }, { 6439, 0x800c }, { 6442, 0x0202 },
+ { 6444, 0xfe48 }, { 6453, 0x6485 }, { 6459, 0xd63e }, { 6469, 0xe3f7 },
+ { 6481, 0x3aa0 }, { 6487, 0x0c07 }, { 6492, 0xe40c }, { 6498, 0x0430 },
+ { 6501, 0xf680 }, { 6508, 0x1002 }, { 6510, 0x0000 }, { 6510, 0x0000 },
+ /* 0x9200 */
+ { 6510, 0x0000 }, { 6510, 0x0000 }, { 6510, 0x0000 }, { 6510, 0x0000 },
+ { 6510, 0x0000 }, { 6510, 0x0000 }, { 6510, 0x0000 }, { 6510, 0x0010 },
+ { 6511, 0x4000 }, { 6512, 0x0000 }, { 6512, 0x4000 }, { 6513, 0x0000 },
+ { 6513, 0x0100 }, { 6514, 0x0000 }, { 6514, 0x0000 }, { 6514, 0x0000 },
+ /* 0x9300 */
+ { 6514, 0x0000 }, { 6514, 0x0000 }, { 6514, 0x0000 }, { 6514, 0x4000 },
+ { 6515, 0x0000 }, { 6515, 0x0000 }, { 6515, 0x0400 }, { 6516, 0x0000 },
+ { 6516, 0x8000 }, { 6517, 0x0000 }, { 6517, 0x0000 }, { 6517, 0x0000 },
+ { 6517, 0x0400 }, { 6518, 0x0040 }, { 6519, 0x0000 }, { 6519, 0x0000 },
+ /* 0x9400 */
+ { 6519, 0x0000 }, { 6519, 0x0000 }, { 6519, 0x0000 }, { 6519, 0x4000 },
+ { 6520, 0x0000 }, { 6520, 0x0000 }, { 6520, 0x0800 }, { 6521, 0x0000 },
+ { 6521, 0xffe0 }, { 6532, 0xfebd }, { 6545, 0xffff }, { 6561, 0xffff },
+ { 6577, 0x7f7f }, { 6591, 0xfbe7 }, { 6604, 0xffbf }, { 6619, 0xf7ff },
+ /* 0x9500 */
+ { 6634, 0xffff }, { 6650, 0xefff }, { 6665, 0xff7e }, { 6679, 0xdff7 },
+ { 6693, 0xf6f7 }, { 6706, 0xfbdf }, { 6720, 0xbffe }, { 6734, 0x804f },
+ { 6740, 0x0000 }, { 6740, 0x0000 }, { 6740, 0x0000 }, { 6740, 0x0000 },
+ { 6740, 0x0000 }, { 6740, 0x0000 }, { 6740, 0xef00 }, { 6747, 0x7fff },
+ /* 0x9600 */
+ { 6762, 0xff7f }, { 6777, 0xb6f7 }, { 6789, 0x4406 }, { 6793, 0xb87e },
+ { 6803, 0x3bf5 }, { 6814, 0x8831 }, { 6819, 0x1796 }, { 6827, 0x00f4 },
+ { 6832, 0xa960 }, { 6838, 0x1391 }, { 6844, 0x0080 }, { 6845, 0x7249 },
+ { 6852, 0xf2f3 }, { 6863, 0x0024 }, { 6865, 0x8701 }, { 6870, 0x42c8 },
+ /* 0x9700 */
+ { 6875, 0xe3d3 }, { 6885, 0x5048 }, { 6889, 0x2400 }, { 6891, 0x4305 },
+ { 6896, 0x0000 }, { 6896, 0x4a4c }, { 6902, 0x0227 }, { 6907, 0x1058 },
+ { 6911, 0x2820 }, { 6914, 0x0116 }, { 6918, 0xa809 }, { 6923, 0x0014 },
+ { 6925, 0x0000 }, { 6925, 0x0000 }, { 6925, 0x3ec0 }, { 6932, 0x0068 },
+ /* 0x9800 */
+ { 6935, 0x0000 }, { 6935, 0x0000 }, { 6935, 0x0000 }, { 6935, 0x0000 },
+ { 6935, 0x0000 }, { 6935, 0x0000 }, { 6935, 0x0000 }, { 6935, 0xffe0 },
+ { 6946, 0xb7ff }, { 6960, 0xfddb }, { 6973, 0x00f7 }, { 6980, 0x0000 },
+ { 6980, 0x4000 }, { 6981, 0xc72e }, { 6990, 0x0180 }, { 6992, 0x0000 },
+ /* 0x9900 */
+ { 6992, 0x2000 }, { 6993, 0x0001 }, { 6994, 0x4000 }, { 6995, 0x0000 },
+ { 6995, 0x0000 }, { 6995, 0x0030 }, { 6997, 0xffa8 }, { 7008, 0xb4f7 },
+ { 7019, 0xadf3 }, { 7030, 0x03ff }, { 7040, 0x0120 }, { 7042, 0x0000 },
+ { 7042, 0x0000 }, { 7042, 0x0000 }, { 7042, 0x0000 }, { 7042, 0x0000 },
+ /* 0x9a00 */
+ { 7042, 0x0000 }, { 7042, 0x0000 }, { 7042, 0x0000 }, { 7042, 0x0000 },
+ { 7042, 0x0000 }, { 7042, 0x0000 }, { 7042, 0xf000 }, { 7046, 0xfffb },
+ { 7061, 0x9df7 }, { 7073, 0xfdcf }, { 7086, 0x01bf }, { 7094, 0x15c3 },
+ { 7101, 0x1827 }, { 7107, 0x810a }, { 7111, 0xa842 }, { 7116, 0x0a00 },
+ /* 0x9b00 */
+ { 7118, 0x8108 }, { 7121, 0x8008 }, { 7123, 0x8008 }, { 7125, 0x1804 },
+ { 7128, 0xa3be }, { 7138, 0x0012 }, { 7140, 0x0000 }, { 7140, 0x0000 },
+ { 7140, 0x0000 }, { 7140, 0x0000 }, { 7140, 0x0000 }, { 7140, 0x0000 },
+ { 7140, 0x0000 }, { 7140, 0x0000 }, { 7140, 0x0000 }, { 7140, 0x0000 },
+ /* 0x9c00 */
+ { 7140, 0x0000 }, { 7140, 0x0000 }, { 7140, 0x0000 }, { 7140, 0x0000 },
+ { 7140, 0x0000 }, { 7140, 0x0000 }, { 7140, 0x0000 }, { 7140, 0x9000 },
+ { 7142, 0x69e6 }, { 7151, 0xdc37 }, { 7161, 0x6bff }, { 7174, 0x3dff },
+ { 7187, 0xfcf8 }, { 7198, 0xf3f9 }, { 7210, 0x0004 },
+};
+static const Summary16 gb2312_uni2indx_page9e[27] = {
+ /* 0x9e00 */
+ { 7211, 0x0000 }, { 7211, 0x8000 }, { 7212, 0xbf6f }, { 7225, 0xe7ee },
+ { 7237, 0xdffe }, { 7251, 0x5da2 }, { 7259, 0x3fd8 }, { 7269, 0xc00b },
+ { 7274, 0x0984 }, { 7278, 0xa00c }, { 7282, 0x0040 }, { 7283, 0x6910 },
+ { 7288, 0xe210 }, { 7293, 0xb912 }, { 7300, 0x86a5 }, { 7307, 0x5a00 },
+ /* 0x9f00 */
+ { 7311, 0x6800 }, { 7314, 0x0289 }, { 7318, 0x9005 }, { 7322, 0x6a80 },
+ { 7327, 0x0010 }, { 7328, 0x0003 }, { 7330, 0x0000 }, { 7330, 0x8000 },
+ { 7331, 0x1ff9 }, { 7342, 0x8e00 }, { 7346, 0x0001 },
+};
+static const Summary16 gb2312_uni2indx_pageff[15] = {
+ /* 0xff00 */
+ { 7347, 0xfffe }, { 7362, 0xffff }, { 7378, 0xffff }, { 7394, 0xffff },
+ { 7410, 0xffff }, { 7426, 0x7fff }, { 7441, 0x0000 }, { 7441, 0x0000 },
+ { 7441, 0x0000 }, { 7441, 0x0000 }, { 7441, 0x0000 }, { 7441, 0x0000 },
+ { 7441, 0x0000 }, { 7441, 0x0000 }, { 7441, 0x002b },
+};
+
+static int
+gb2312_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n)
+{
+ if (n >= 2) {
+ const Summary16 *summary = NULL;
+ if (wc < 0x0460)
+ summary = &gb2312_uni2indx_page00[(wc>>4)];
+ else if (wc >= 0x2000 && wc < 0x2650)
+ summary = &gb2312_uni2indx_page20[(wc>>4)-0x200];
+ else if (wc >= 0x3000 && wc < 0x3230)
+ summary = &gb2312_uni2indx_page30[(wc>>4)-0x300];
+ else if (wc >= 0x4e00 && wc < 0x9cf0)
+ summary = &gb2312_uni2indx_page4e[(wc>>4)-0x4e0];
+ else if (wc >= 0x9e00 && wc < 0x9fb0)
+ summary = &gb2312_uni2indx_page9e[(wc>>4)-0x9e0];
+ else if (wc >= 0xff00 && wc < 0xfff0)
+ summary = &gb2312_uni2indx_pageff[(wc>>4)-0xff0];
+ if (summary) {
+ unsigned short used = summary->used;
+ unsigned int i = wc & 0x0f;
+ if (used & ((unsigned short) 1 << i)) {
+ unsigned short c;
+ /* Keep in `used' only the bits 0..i-1. */
+ used &= ((unsigned short) 1 << i) - 1;
+ /* Add `summary->indx' and the number of bits set in `used'. */
+ used = (used & 0x5555) + ((used & 0xaaaa) >> 1);
+ used = (used & 0x3333) + ((used & 0xcccc) >> 2);
+ used = (used & 0x0f0f) + ((used & 0xf0f0) >> 4);
+ used = (used & 0x00ff) + (used >> 8);
+ c = gb2312_2charset[summary->indx + used];
+ r[0] = (c >> 8); r[1] = (c & 0xff);
+ return 2;
+ }
+ }
+ return RET_ILSEQ;
+ }
+ return RET_TOOSMALL;
+}
diff --git a/libX11/src/xlibi18n/lcUniConv/gbk.h b/libX11/src/xlibi18n/lcUniConv/gbk.h
index 7d7e0536b..09c2e63ee 100644
--- a/libX11/src/xlibi18n/lcUniConv/gbk.h
+++ b/libX11/src/xlibi18n/lcUniConv/gbk.h
@@ -1,6200 +1,6200 @@
-
-/*
- * GBK-0
- */
-
-static const unsigned short gbk_2uni_page81[23766] = {
- /* 0x81 */
- 0x4e02, 0x4e04, 0x4e05, 0x4e06, 0x4e0f, 0x4e12, 0x4e17, 0x4e1f,
- 0x4e20, 0x4e21, 0x4e23, 0x4e26, 0x4e29, 0x4e2e, 0x4e2f, 0x4e31,
- 0x4e33, 0x4e35, 0x4e37, 0x4e3c, 0x4e40, 0x4e41, 0x4e42, 0x4e44,
- 0x4e46, 0x4e4a, 0x4e51, 0x4e55, 0x4e57, 0x4e5a, 0x4e5b, 0x4e62,
- 0x4e63, 0x4e64, 0x4e65, 0x4e67, 0x4e68, 0x4e6a, 0x4e6b, 0x4e6c,
- 0x4e6d, 0x4e6e, 0x4e6f, 0x4e72, 0x4e74, 0x4e75, 0x4e76, 0x4e77,
- 0x4e78, 0x4e79, 0x4e7a, 0x4e7b, 0x4e7c, 0x4e7d, 0x4e7f, 0x4e80,
- 0x4e81, 0x4e82, 0x4e83, 0x4e84, 0x4e85, 0x4e87, 0x4e8a, 0x4e90,
- 0x4e96, 0x4e97, 0x4e99, 0x4e9c, 0x4e9d, 0x4e9e, 0x4ea3, 0x4eaa,
- 0x4eaf, 0x4eb0, 0x4eb1, 0x4eb4, 0x4eb6, 0x4eb7, 0x4eb8, 0x4eb9,
- 0x4ebc, 0x4ebd, 0x4ebe, 0x4ec8, 0x4ecc, 0x4ecf, 0x4ed0, 0x4ed2,
- 0x4eda, 0x4edb, 0x4edc, 0x4ee0, 0x4ee2, 0x4ee6, 0x4ee7, 0x4ee9,
- 0x4eed, 0x4eee, 0x4eef, 0x4ef1, 0x4ef4, 0x4ef8, 0x4ef9, 0x4efa,
- 0x4efc, 0x4efe, 0x4f00, 0x4f02, 0x4f03, 0x4f04, 0x4f05, 0x4f06,
- 0x4f07, 0x4f08, 0x4f0b, 0x4f0c, 0x4f12, 0x4f13, 0x4f14, 0x4f15,
- 0x4f16, 0x4f1c, 0x4f1d, 0x4f21, 0x4f23, 0x4f28, 0x4f29, 0x4f2c,
- 0x4f2d, 0x4f2e, 0x4f31, 0x4f33, 0x4f35, 0x4f37, 0x4f39, 0x4f3b,
- 0x4f3e, 0x4f3f, 0x4f40, 0x4f41, 0x4f42, 0x4f44, 0x4f45, 0x4f47,
- 0x4f48, 0x4f49, 0x4f4a, 0x4f4b, 0x4f4c, 0x4f52, 0x4f54, 0x4f56,
- 0x4f61, 0x4f62, 0x4f66, 0x4f68, 0x4f6a, 0x4f6b, 0x4f6d, 0x4f6e,
- 0x4f71, 0x4f72, 0x4f75, 0x4f77, 0x4f78, 0x4f79, 0x4f7a, 0x4f7d,
- 0x4f80, 0x4f81, 0x4f82, 0x4f85, 0x4f86, 0x4f87, 0x4f8a, 0x4f8c,
- 0x4f8e, 0x4f90, 0x4f92, 0x4f93, 0x4f95, 0x4f96, 0x4f98, 0x4f99,
- 0x4f9a, 0x4f9c, 0x4f9e, 0x4f9f, 0x4fa1, 0x4fa2,
- /* 0x82 */
- 0x4fa4, 0x4fab, 0x4fad, 0x4fb0, 0x4fb1, 0x4fb2, 0x4fb3, 0x4fb4,
- 0x4fb6, 0x4fb7, 0x4fb8, 0x4fb9, 0x4fba, 0x4fbb, 0x4fbc, 0x4fbd,
- 0x4fbe, 0x4fc0, 0x4fc1, 0x4fc2, 0x4fc6, 0x4fc7, 0x4fc8, 0x4fc9,
- 0x4fcb, 0x4fcc, 0x4fcd, 0x4fd2, 0x4fd3, 0x4fd4, 0x4fd5, 0x4fd6,
- 0x4fd9, 0x4fdb, 0x4fe0, 0x4fe2, 0x4fe4, 0x4fe5, 0x4fe7, 0x4feb,
- 0x4fec, 0x4ff0, 0x4ff2, 0x4ff4, 0x4ff5, 0x4ff6, 0x4ff7, 0x4ff9,
- 0x4ffb, 0x4ffc, 0x4ffd, 0x4fff, 0x5000, 0x5001, 0x5002, 0x5003,
- 0x5004, 0x5005, 0x5006, 0x5007, 0x5008, 0x5009, 0x500a, 0x500b,
- 0x500e, 0x5010, 0x5011, 0x5013, 0x5015, 0x5016, 0x5017, 0x501b,
- 0x501d, 0x501e, 0x5020, 0x5022, 0x5023, 0x5024, 0x5027, 0x502b,
- 0x502f, 0x5030, 0x5031, 0x5032, 0x5033, 0x5034, 0x5035, 0x5036,
- 0x5037, 0x5038, 0x5039, 0x503b, 0x503d, 0x503f, 0x5040, 0x5041,
- 0x5042, 0x5044, 0x5045, 0x5046, 0x5049, 0x504a, 0x504b, 0x504d,
- 0x5050, 0x5051, 0x5052, 0x5053, 0x5054, 0x5056, 0x5057, 0x5058,
- 0x5059, 0x505b, 0x505d, 0x505e, 0x505f, 0x5060, 0x5061, 0x5062,
- 0x5063, 0x5064, 0x5066, 0x5067, 0x5068, 0x5069, 0x506a, 0x506b,
- 0x506d, 0x506e, 0x506f, 0x5070, 0x5071, 0x5072, 0x5073, 0x5074,
- 0x5075, 0x5078, 0x5079, 0x507a, 0x507c, 0x507d, 0x5081, 0x5082,
- 0x5083, 0x5084, 0x5086, 0x5087, 0x5089, 0x508a, 0x508b, 0x508c,
- 0x508e, 0x508f, 0x5090, 0x5091, 0x5092, 0x5093, 0x5094, 0x5095,
- 0x5096, 0x5097, 0x5098, 0x5099, 0x509a, 0x509b, 0x509c, 0x509d,
- 0x509e, 0x509f, 0x50a0, 0x50a1, 0x50a2, 0x50a4, 0x50a6, 0x50aa,
- 0x50ab, 0x50ad, 0x50ae, 0x50af, 0x50b0, 0x50b1, 0x50b3, 0x50b4,
- 0x50b5, 0x50b6, 0x50b7, 0x50b8, 0x50b9, 0x50bc,
- /* 0x83 */
- 0x50bd, 0x50be, 0x50bf, 0x50c0, 0x50c1, 0x50c2, 0x50c3, 0x50c4,
- 0x50c5, 0x50c6, 0x50c7, 0x50c8, 0x50c9, 0x50ca, 0x50cb, 0x50cc,
- 0x50cd, 0x50ce, 0x50d0, 0x50d1, 0x50d2, 0x50d3, 0x50d4, 0x50d5,
- 0x50d7, 0x50d8, 0x50d9, 0x50db, 0x50dc, 0x50dd, 0x50de, 0x50df,
- 0x50e0, 0x50e1, 0x50e2, 0x50e3, 0x50e4, 0x50e5, 0x50e8, 0x50e9,
- 0x50ea, 0x50eb, 0x50ef, 0x50f0, 0x50f1, 0x50f2, 0x50f4, 0x50f6,
- 0x50f7, 0x50f8, 0x50f9, 0x50fa, 0x50fc, 0x50fd, 0x50fe, 0x50ff,
- 0x5100, 0x5101, 0x5102, 0x5103, 0x5104, 0x5105, 0x5108, 0x5109,
- 0x510a, 0x510c, 0x510d, 0x510e, 0x510f, 0x5110, 0x5111, 0x5113,
- 0x5114, 0x5115, 0x5116, 0x5117, 0x5118, 0x5119, 0x511a, 0x511b,
- 0x511c, 0x511d, 0x511e, 0x511f, 0x5120, 0x5122, 0x5123, 0x5124,
- 0x5125, 0x5126, 0x5127, 0x5128, 0x5129, 0x512a, 0x512b, 0x512c,
- 0x512d, 0x512e, 0x512f, 0x5130, 0x5131, 0x5132, 0x5133, 0x5134,
- 0x5135, 0x5136, 0x5137, 0x5138, 0x5139, 0x513a, 0x513b, 0x513c,
- 0x513d, 0x513e, 0x5142, 0x5147, 0x514a, 0x514c, 0x514e, 0x514f,
- 0x5150, 0x5152, 0x5153, 0x5157, 0x5158, 0x5159, 0x515b, 0x515d,
- 0x515e, 0x515f, 0x5160, 0x5161, 0x5163, 0x5164, 0x5166, 0x5167,
- 0x5169, 0x516a, 0x516f, 0x5172, 0x517a, 0x517e, 0x517f, 0x5183,
- 0x5184, 0x5186, 0x5187, 0x518a, 0x518b, 0x518e, 0x518f, 0x5190,
- 0x5191, 0x5193, 0x5194, 0x5198, 0x519a, 0x519d, 0x519e, 0x519f,
- 0x51a1, 0x51a3, 0x51a6, 0x51a7, 0x51a8, 0x51a9, 0x51aa, 0x51ad,
- 0x51ae, 0x51b4, 0x51b8, 0x51b9, 0x51ba, 0x51be, 0x51bf, 0x51c1,
- 0x51c2, 0x51c3, 0x51c5, 0x51c8, 0x51ca, 0x51cd, 0x51ce, 0x51d0,
- 0x51d2, 0x51d3, 0x51d4, 0x51d5, 0x51d6, 0x51d7,
- /* 0x84 */
- 0x51d8, 0x51d9, 0x51da, 0x51dc, 0x51de, 0x51df, 0x51e2, 0x51e3,
- 0x51e5, 0x51e6, 0x51e7, 0x51e8, 0x51e9, 0x51ea, 0x51ec, 0x51ee,
- 0x51f1, 0x51f2, 0x51f4, 0x51f7, 0x51fe, 0x5204, 0x5205, 0x5209,
- 0x520b, 0x520c, 0x520f, 0x5210, 0x5213, 0x5214, 0x5215, 0x521c,
- 0x521e, 0x521f, 0x5221, 0x5222, 0x5223, 0x5225, 0x5226, 0x5227,
- 0x522a, 0x522c, 0x522f, 0x5231, 0x5232, 0x5234, 0x5235, 0x523c,
- 0x523e, 0x5244, 0x5245, 0x5246, 0x5247, 0x5248, 0x5249, 0x524b,
- 0x524e, 0x524f, 0x5252, 0x5253, 0x5255, 0x5257, 0x5258, 0x5259,
- 0x525a, 0x525b, 0x525d, 0x525f, 0x5260, 0x5262, 0x5263, 0x5264,
- 0x5266, 0x5268, 0x526b, 0x526c, 0x526d, 0x526e, 0x5270, 0x5271,
- 0x5273, 0x5274, 0x5275, 0x5276, 0x5277, 0x5278, 0x5279, 0x527a,
- 0x527b, 0x527c, 0x527e, 0x5280, 0x5283, 0x5284, 0x5285, 0x5286,
- 0x5287, 0x5289, 0x528a, 0x528b, 0x528c, 0x528d, 0x528e, 0x528f,
- 0x5291, 0x5292, 0x5294, 0x5295, 0x5296, 0x5297, 0x5298, 0x5299,
- 0x529a, 0x529c, 0x52a4, 0x52a5, 0x52a6, 0x52a7, 0x52ae, 0x52af,
- 0x52b0, 0x52b4, 0x52b5, 0x52b6, 0x52b7, 0x52b8, 0x52b9, 0x52ba,
- 0x52bb, 0x52bc, 0x52bd, 0x52c0, 0x52c1, 0x52c2, 0x52c4, 0x52c5,
- 0x52c6, 0x52c8, 0x52ca, 0x52cc, 0x52cd, 0x52ce, 0x52cf, 0x52d1,
- 0x52d3, 0x52d4, 0x52d5, 0x52d7, 0x52d9, 0x52da, 0x52db, 0x52dc,
- 0x52dd, 0x52de, 0x52e0, 0x52e1, 0x52e2, 0x52e3, 0x52e5, 0x52e6,
- 0x52e7, 0x52e8, 0x52e9, 0x52ea, 0x52eb, 0x52ec, 0x52ed, 0x52ee,
- 0x52ef, 0x52f1, 0x52f2, 0x52f3, 0x52f4, 0x52f5, 0x52f6, 0x52f7,
- 0x52f8, 0x52fb, 0x52fc, 0x52fd, 0x5301, 0x5302, 0x5303, 0x5304,
- 0x5307, 0x5309, 0x530a, 0x530b, 0x530c, 0x530e,
- /* 0x85 */
- 0x5311, 0x5312, 0x5313, 0x5314, 0x5318, 0x531b, 0x531c, 0x531e,
- 0x531f, 0x5322, 0x5324, 0x5325, 0x5327, 0x5328, 0x5329, 0x532b,
- 0x532c, 0x532d, 0x532f, 0x5330, 0x5331, 0x5332, 0x5333, 0x5334,
- 0x5335, 0x5336, 0x5337, 0x5338, 0x533c, 0x533d, 0x5340, 0x5342,
- 0x5344, 0x5346, 0x534b, 0x534c, 0x534d, 0x5350, 0x5354, 0x5358,
- 0x5359, 0x535b, 0x535d, 0x5365, 0x5368, 0x536a, 0x536c, 0x536d,
- 0x5372, 0x5376, 0x5379, 0x537b, 0x537c, 0x537d, 0x537e, 0x5380,
- 0x5381, 0x5383, 0x5387, 0x5388, 0x538a, 0x538e, 0x538f, 0x5390,
- 0x5391, 0x5392, 0x5393, 0x5394, 0x5396, 0x5397, 0x5399, 0x539b,
- 0x539c, 0x539e, 0x53a0, 0x53a1, 0x53a4, 0x53a7, 0x53aa, 0x53ab,
- 0x53ac, 0x53ad, 0x53af, 0x53b0, 0x53b1, 0x53b2, 0x53b3, 0x53b4,
- 0x53b5, 0x53b7, 0x53b8, 0x53b9, 0x53ba, 0x53bc, 0x53bd, 0x53be,
- 0x53c0, 0x53c3, 0x53c4, 0x53c5, 0x53c6, 0x53c7, 0x53ce, 0x53cf,
- 0x53d0, 0x53d2, 0x53d3, 0x53d5, 0x53da, 0x53dc, 0x53dd, 0x53de,
- 0x53e1, 0x53e2, 0x53e7, 0x53f4, 0x53fa, 0x53fe, 0x53ff, 0x5400,
- 0x5402, 0x5405, 0x5407, 0x540b, 0x5414, 0x5418, 0x5419, 0x541a,
- 0x541c, 0x5422, 0x5424, 0x5425, 0x542a, 0x5430, 0x5433, 0x5436,
- 0x5437, 0x543a, 0x543d, 0x543f, 0x5441, 0x5442, 0x5444, 0x5445,
- 0x5447, 0x5449, 0x544c, 0x544d, 0x544e, 0x544f, 0x5451, 0x545a,
- 0x545d, 0x545e, 0x545f, 0x5460, 0x5461, 0x5463, 0x5465, 0x5467,
- 0x5469, 0x546a, 0x546b, 0x546c, 0x546d, 0x546e, 0x546f, 0x5470,
- 0x5474, 0x5479, 0x547a, 0x547e, 0x547f, 0x5481, 0x5483, 0x5485,
- 0x5487, 0x5488, 0x5489, 0x548a, 0x548d, 0x5491, 0x5493, 0x5497,
- 0x5498, 0x549c, 0x549e, 0x549f, 0x54a0, 0x54a1,
- /* 0x86 */
- 0x54a2, 0x54a5, 0x54ae, 0x54b0, 0x54b2, 0x54b5, 0x54b6, 0x54b7,
- 0x54b9, 0x54ba, 0x54bc, 0x54be, 0x54c3, 0x54c5, 0x54ca, 0x54cb,
- 0x54d6, 0x54d8, 0x54db, 0x54e0, 0x54e1, 0x54e2, 0x54e3, 0x54e4,
- 0x54eb, 0x54ec, 0x54ef, 0x54f0, 0x54f1, 0x54f4, 0x54f5, 0x54f6,
- 0x54f7, 0x54f8, 0x54f9, 0x54fb, 0x54fe, 0x5500, 0x5502, 0x5503,
- 0x5504, 0x5505, 0x5508, 0x550a, 0x550b, 0x550c, 0x550d, 0x550e,
- 0x5512, 0x5513, 0x5515, 0x5516, 0x5517, 0x5518, 0x5519, 0x551a,
- 0x551c, 0x551d, 0x551e, 0x551f, 0x5521, 0x5525, 0x5526, 0x5528,
- 0x5529, 0x552b, 0x552d, 0x5532, 0x5534, 0x5535, 0x5536, 0x5538,
- 0x5539, 0x553a, 0x553b, 0x553d, 0x5540, 0x5542, 0x5545, 0x5547,
- 0x5548, 0x554b, 0x554c, 0x554d, 0x554e, 0x554f, 0x5551, 0x5552,
- 0x5553, 0x5554, 0x5557, 0x5558, 0x5559, 0x555a, 0x555b, 0x555d,
- 0x555e, 0x555f, 0x5560, 0x5562, 0x5563, 0x5568, 0x5569, 0x556b,
- 0x556f, 0x5570, 0x5571, 0x5572, 0x5573, 0x5574, 0x5579, 0x557a,
- 0x557d, 0x557f, 0x5585, 0x5586, 0x558c, 0x558d, 0x558e, 0x5590,
- 0x5592, 0x5593, 0x5595, 0x5596, 0x5597, 0x559a, 0x559b, 0x559e,
- 0x55a0, 0x55a1, 0x55a2, 0x55a3, 0x55a4, 0x55a5, 0x55a6, 0x55a8,
- 0x55a9, 0x55aa, 0x55ab, 0x55ac, 0x55ad, 0x55ae, 0x55af, 0x55b0,
- 0x55b2, 0x55b4, 0x55b6, 0x55b8, 0x55ba, 0x55bc, 0x55bf, 0x55c0,
- 0x55c1, 0x55c2, 0x55c3, 0x55c6, 0x55c7, 0x55c8, 0x55ca, 0x55cb,
- 0x55ce, 0x55cf, 0x55d0, 0x55d5, 0x55d7, 0x55d8, 0x55d9, 0x55da,
- 0x55db, 0x55de, 0x55e0, 0x55e2, 0x55e7, 0x55e9, 0x55ed, 0x55ee,
- 0x55f0, 0x55f1, 0x55f4, 0x55f6, 0x55f8, 0x55f9, 0x55fa, 0x55fb,
- 0x55fc, 0x55ff, 0x5602, 0x5603, 0x5604, 0x5605,
- /* 0x87 */
- 0x5606, 0x5607, 0x560a, 0x560b, 0x560d, 0x5610, 0x5611, 0x5612,
- 0x5613, 0x5614, 0x5615, 0x5616, 0x5617, 0x5619, 0x561a, 0x561c,
- 0x561d, 0x5620, 0x5621, 0x5622, 0x5625, 0x5626, 0x5628, 0x5629,
- 0x562a, 0x562b, 0x562e, 0x562f, 0x5630, 0x5633, 0x5635, 0x5637,
- 0x5638, 0x563a, 0x563c, 0x563d, 0x563e, 0x5640, 0x5641, 0x5642,
- 0x5643, 0x5644, 0x5645, 0x5646, 0x5647, 0x5648, 0x5649, 0x564a,
- 0x564b, 0x564f, 0x5650, 0x5651, 0x5652, 0x5653, 0x5655, 0x5656,
- 0x565a, 0x565b, 0x565d, 0x565e, 0x565f, 0x5660, 0x5661, 0x5663,
- 0x5665, 0x5666, 0x5667, 0x566d, 0x566e, 0x566f, 0x5670, 0x5672,
- 0x5673, 0x5674, 0x5675, 0x5677, 0x5678, 0x5679, 0x567a, 0x567d,
- 0x567e, 0x567f, 0x5680, 0x5681, 0x5682, 0x5683, 0x5684, 0x5687,
- 0x5688, 0x5689, 0x568a, 0x568b, 0x568c, 0x568d, 0x5690, 0x5691,
- 0x5692, 0x5694, 0x5695, 0x5696, 0x5697, 0x5698, 0x5699, 0x569a,
- 0x569b, 0x569c, 0x569d, 0x569e, 0x569f, 0x56a0, 0x56a1, 0x56a2,
- 0x56a4, 0x56a5, 0x56a6, 0x56a7, 0x56a8, 0x56a9, 0x56aa, 0x56ab,
- 0x56ac, 0x56ad, 0x56ae, 0x56b0, 0x56b1, 0x56b2, 0x56b3, 0x56b4,
- 0x56b5, 0x56b6, 0x56b8, 0x56b9, 0x56ba, 0x56bb, 0x56bd, 0x56be,
- 0x56bf, 0x56c0, 0x56c1, 0x56c2, 0x56c3, 0x56c4, 0x56c5, 0x56c6,
- 0x56c7, 0x56c8, 0x56c9, 0x56cb, 0x56cc, 0x56cd, 0x56ce, 0x56cf,
- 0x56d0, 0x56d1, 0x56d2, 0x56d3, 0x56d5, 0x56d6, 0x56d8, 0x56d9,
- 0x56dc, 0x56e3, 0x56e5, 0x56e6, 0x56e7, 0x56e8, 0x56e9, 0x56ea,
- 0x56ec, 0x56ee, 0x56ef, 0x56f2, 0x56f3, 0x56f6, 0x56f7, 0x56f8,
- 0x56fb, 0x56fc, 0x5700, 0x5701, 0x5702, 0x5705, 0x5707, 0x570b,
- 0x570c, 0x570d, 0x570e, 0x570f, 0x5710, 0x5711,
- /* 0x88 */
- 0x5712, 0x5713, 0x5714, 0x5715, 0x5716, 0x5717, 0x5718, 0x5719,
- 0x571a, 0x571b, 0x571d, 0x571e, 0x5720, 0x5721, 0x5722, 0x5724,
- 0x5725, 0x5726, 0x5727, 0x572b, 0x5731, 0x5732, 0x5734, 0x5735,
- 0x5736, 0x5737, 0x5738, 0x573c, 0x573d, 0x573f, 0x5741, 0x5743,
- 0x5744, 0x5745, 0x5746, 0x5748, 0x5749, 0x574b, 0x5752, 0x5753,
- 0x5754, 0x5755, 0x5756, 0x5758, 0x5759, 0x5762, 0x5763, 0x5765,
- 0x5767, 0x576c, 0x576e, 0x5770, 0x5771, 0x5772, 0x5774, 0x5775,
- 0x5778, 0x5779, 0x577a, 0x577d, 0x577e, 0x577f, 0x5780, 0x5781,
- 0x5787, 0x5788, 0x5789, 0x578a, 0x578d, 0x578e, 0x578f, 0x5790,
- 0x5791, 0x5794, 0x5795, 0x5796, 0x5797, 0x5798, 0x5799, 0x579a,
- 0x579c, 0x579d, 0x579e, 0x579f, 0x57a5, 0x57a8, 0x57aa, 0x57ac,
- 0x57af, 0x57b0, 0x57b1, 0x57b3, 0x57b5, 0x57b6, 0x57b7, 0x57b9,
- 0x57ba, 0x57bb, 0x57bc, 0x57bd, 0x57be, 0x57bf, 0x57c0, 0x57c1,
- 0x57c4, 0x57c5, 0x57c6, 0x57c7, 0x57c8, 0x57c9, 0x57ca, 0x57cc,
- 0x57cd, 0x57d0, 0x57d1, 0x57d3, 0x57d6, 0x57d7, 0x57db, 0x57dc,
- 0x57de, 0x57e1, 0x57e2, 0x57e3, 0x57e5, 0x57e6, 0x57e7, 0x57e8,
- 0x57e9, 0x57ea, 0x57eb, 0x57ec, 0x57ee, 0x57f0, 0x57f1, 0x57f2,
- 0x57f3, 0x57f5, 0x57f6, 0x57f7, 0x57fb, 0x57fc, 0x57fe, 0x57ff,
- 0x5801, 0x5803, 0x5804, 0x5805, 0x5808, 0x5809, 0x580a, 0x580c,
- 0x580e, 0x580f, 0x5810, 0x5812, 0x5813, 0x5814, 0x5816, 0x5817,
- 0x5818, 0x581a, 0x581b, 0x581c, 0x581d, 0x581f, 0x5822, 0x5823,
- 0x5825, 0x5826, 0x5827, 0x5828, 0x5829, 0x582b, 0x582c, 0x582d,
- 0x582e, 0x582f, 0x5831, 0x5832, 0x5833, 0x5834, 0x5836, 0x5837,
- 0x5838, 0x5839, 0x583a, 0x583b, 0x583c, 0x583d,
- /* 0x89 */
- 0x583e, 0x583f, 0x5840, 0x5841, 0x5842, 0x5843, 0x5845, 0x5846,
- 0x5847, 0x5848, 0x5849, 0x584a, 0x584b, 0x584e, 0x584f, 0x5850,
- 0x5852, 0x5853, 0x5855, 0x5856, 0x5857, 0x5859, 0x585a, 0x585b,
- 0x585c, 0x585d, 0x585f, 0x5860, 0x5861, 0x5862, 0x5863, 0x5864,
- 0x5866, 0x5867, 0x5868, 0x5869, 0x586a, 0x586d, 0x586e, 0x586f,
- 0x5870, 0x5871, 0x5872, 0x5873, 0x5874, 0x5875, 0x5876, 0x5877,
- 0x5878, 0x5879, 0x587a, 0x587b, 0x587c, 0x587d, 0x587f, 0x5882,
- 0x5884, 0x5886, 0x5887, 0x5888, 0x588a, 0x588b, 0x588c, 0x588d,
- 0x588e, 0x588f, 0x5890, 0x5891, 0x5894, 0x5895, 0x5896, 0x5897,
- 0x5898, 0x589b, 0x589c, 0x589d, 0x58a0, 0x58a1, 0x58a2, 0x58a3,
- 0x58a4, 0x58a5, 0x58a6, 0x58a7, 0x58aa, 0x58ab, 0x58ac, 0x58ad,
- 0x58ae, 0x58af, 0x58b0, 0x58b1, 0x58b2, 0x58b3, 0x58b4, 0x58b5,
- 0x58b6, 0x58b7, 0x58b8, 0x58b9, 0x58ba, 0x58bb, 0x58bd, 0x58be,
- 0x58bf, 0x58c0, 0x58c2, 0x58c3, 0x58c4, 0x58c6, 0x58c7, 0x58c8,
- 0x58c9, 0x58ca, 0x58cb, 0x58cc, 0x58cd, 0x58ce, 0x58cf, 0x58d0,
- 0x58d2, 0x58d3, 0x58d4, 0x58d6, 0x58d7, 0x58d8, 0x58d9, 0x58da,
- 0x58db, 0x58dc, 0x58dd, 0x58de, 0x58df, 0x58e0, 0x58e1, 0x58e2,
- 0x58e3, 0x58e5, 0x58e6, 0x58e7, 0x58e8, 0x58e9, 0x58ea, 0x58ed,
- 0x58ef, 0x58f1, 0x58f2, 0x58f4, 0x58f5, 0x58f7, 0x58f8, 0x58fa,
- 0x58fb, 0x58fc, 0x58fd, 0x58fe, 0x58ff, 0x5900, 0x5901, 0x5903,
- 0x5905, 0x5906, 0x5908, 0x5909, 0x590a, 0x590b, 0x590c, 0x590e,
- 0x5910, 0x5911, 0x5912, 0x5913, 0x5917, 0x5918, 0x591b, 0x591d,
- 0x591e, 0x5920, 0x5921, 0x5922, 0x5923, 0x5926, 0x5928, 0x592c,
- 0x5930, 0x5932, 0x5933, 0x5935, 0x5936, 0x593b,
- /* 0x8a */
- 0x593d, 0x593e, 0x593f, 0x5940, 0x5943, 0x5945, 0x5946, 0x594a,
- 0x594c, 0x594d, 0x5950, 0x5952, 0x5953, 0x5959, 0x595b, 0x595c,
- 0x595d, 0x595e, 0x595f, 0x5961, 0x5963, 0x5964, 0x5966, 0x5967,
- 0x5968, 0x5969, 0x596a, 0x596b, 0x596c, 0x596d, 0x596e, 0x596f,
- 0x5970, 0x5971, 0x5972, 0x5975, 0x5977, 0x597a, 0x597b, 0x597c,
- 0x597e, 0x597f, 0x5980, 0x5985, 0x5989, 0x598b, 0x598c, 0x598e,
- 0x598f, 0x5990, 0x5991, 0x5994, 0x5995, 0x5998, 0x599a, 0x599b,
- 0x599c, 0x599d, 0x599f, 0x59a0, 0x59a1, 0x59a2, 0x59a6, 0x59a7,
- 0x59ac, 0x59ad, 0x59b0, 0x59b1, 0x59b3, 0x59b4, 0x59b5, 0x59b6,
- 0x59b7, 0x59b8, 0x59ba, 0x59bc, 0x59bd, 0x59bf, 0x59c0, 0x59c1,
- 0x59c2, 0x59c3, 0x59c4, 0x59c5, 0x59c7, 0x59c8, 0x59c9, 0x59cc,
- 0x59cd, 0x59ce, 0x59cf, 0x59d5, 0x59d6, 0x59d9, 0x59db, 0x59de,
- 0x59df, 0x59e0, 0x59e1, 0x59e2, 0x59e4, 0x59e6, 0x59e7, 0x59e9,
- 0x59ea, 0x59eb, 0x59ed, 0x59ee, 0x59ef, 0x59f0, 0x59f1, 0x59f2,
- 0x59f3, 0x59f4, 0x59f5, 0x59f6, 0x59f7, 0x59f8, 0x59fa, 0x59fc,
- 0x59fd, 0x59fe, 0x5a00, 0x5a02, 0x5a0a, 0x5a0b, 0x5a0d, 0x5a0e,
- 0x5a0f, 0x5a10, 0x5a12, 0x5a14, 0x5a15, 0x5a16, 0x5a17, 0x5a19,
- 0x5a1a, 0x5a1b, 0x5a1d, 0x5a1e, 0x5a21, 0x5a22, 0x5a24, 0x5a26,
- 0x5a27, 0x5a28, 0x5a2a, 0x5a2b, 0x5a2c, 0x5a2d, 0x5a2e, 0x5a2f,
- 0x5a30, 0x5a33, 0x5a35, 0x5a37, 0x5a38, 0x5a39, 0x5a3a, 0x5a3b,
- 0x5a3d, 0x5a3e, 0x5a3f, 0x5a41, 0x5a42, 0x5a43, 0x5a44, 0x5a45,
- 0x5a47, 0x5a48, 0x5a4b, 0x5a4c, 0x5a4d, 0x5a4e, 0x5a4f, 0x5a50,
- 0x5a51, 0x5a52, 0x5a53, 0x5a54, 0x5a56, 0x5a57, 0x5a58, 0x5a59,
- 0x5a5b, 0x5a5c, 0x5a5d, 0x5a5e, 0x5a5f, 0x5a60,
- /* 0x8b */
- 0x5a61, 0x5a63, 0x5a64, 0x5a65, 0x5a66, 0x5a68, 0x5a69, 0x5a6b,
- 0x5a6c, 0x5a6d, 0x5a6e, 0x5a6f, 0x5a70, 0x5a71, 0x5a72, 0x5a73,
- 0x5a78, 0x5a79, 0x5a7b, 0x5a7c, 0x5a7d, 0x5a7e, 0x5a80, 0x5a81,
- 0x5a82, 0x5a83, 0x5a84, 0x5a85, 0x5a86, 0x5a87, 0x5a88, 0x5a89,
- 0x5a8a, 0x5a8b, 0x5a8c, 0x5a8d, 0x5a8e, 0x5a8f, 0x5a90, 0x5a91,
- 0x5a93, 0x5a94, 0x5a95, 0x5a96, 0x5a97, 0x5a98, 0x5a99, 0x5a9c,
- 0x5a9d, 0x5a9e, 0x5a9f, 0x5aa0, 0x5aa1, 0x5aa2, 0x5aa3, 0x5aa4,
- 0x5aa5, 0x5aa6, 0x5aa7, 0x5aa8, 0x5aa9, 0x5aab, 0x5aac, 0x5aad,
- 0x5aae, 0x5aaf, 0x5ab0, 0x5ab1, 0x5ab4, 0x5ab6, 0x5ab7, 0x5ab9,
- 0x5aba, 0x5abb, 0x5abc, 0x5abd, 0x5abf, 0x5ac0, 0x5ac3, 0x5ac4,
- 0x5ac5, 0x5ac6, 0x5ac7, 0x5ac8, 0x5aca, 0x5acb, 0x5acd, 0x5ace,
- 0x5acf, 0x5ad0, 0x5ad1, 0x5ad3, 0x5ad5, 0x5ad7, 0x5ad9, 0x5ada,
- 0x5adb, 0x5add, 0x5ade, 0x5adf, 0x5ae2, 0x5ae4, 0x5ae5, 0x5ae7,
- 0x5ae8, 0x5aea, 0x5aec, 0x5aed, 0x5aee, 0x5aef, 0x5af0, 0x5af2,
- 0x5af3, 0x5af4, 0x5af5, 0x5af6, 0x5af7, 0x5af8, 0x5af9, 0x5afa,
- 0x5afb, 0x5afc, 0x5afd, 0x5afe, 0x5aff, 0x5b00, 0x5b01, 0x5b02,
- 0x5b03, 0x5b04, 0x5b05, 0x5b06, 0x5b07, 0x5b08, 0x5b0a, 0x5b0b,
- 0x5b0c, 0x5b0d, 0x5b0e, 0x5b0f, 0x5b10, 0x5b11, 0x5b12, 0x5b13,
- 0x5b14, 0x5b15, 0x5b18, 0x5b19, 0x5b1a, 0x5b1b, 0x5b1c, 0x5b1d,
- 0x5b1e, 0x5b1f, 0x5b20, 0x5b21, 0x5b22, 0x5b23, 0x5b24, 0x5b25,
- 0x5b26, 0x5b27, 0x5b28, 0x5b29, 0x5b2a, 0x5b2b, 0x5b2c, 0x5b2d,
- 0x5b2e, 0x5b2f, 0x5b30, 0x5b31, 0x5b33, 0x5b35, 0x5b36, 0x5b38,
- 0x5b39, 0x5b3a, 0x5b3b, 0x5b3c, 0x5b3d, 0x5b3e, 0x5b3f, 0x5b41,
- 0x5b42, 0x5b43, 0x5b44, 0x5b45, 0x5b46, 0x5b47,
- /* 0x8c */
- 0x5b48, 0x5b49, 0x5b4a, 0x5b4b, 0x5b4c, 0x5b4d, 0x5b4e, 0x5b4f,
- 0x5b52, 0x5b56, 0x5b5e, 0x5b60, 0x5b61, 0x5b67, 0x5b68, 0x5b6b,
- 0x5b6d, 0x5b6e, 0x5b6f, 0x5b72, 0x5b74, 0x5b76, 0x5b77, 0x5b78,
- 0x5b79, 0x5b7b, 0x5b7c, 0x5b7e, 0x5b7f, 0x5b82, 0x5b86, 0x5b8a,
- 0x5b8d, 0x5b8e, 0x5b90, 0x5b91, 0x5b92, 0x5b94, 0x5b96, 0x5b9f,
- 0x5ba7, 0x5ba8, 0x5ba9, 0x5bac, 0x5bad, 0x5bae, 0x5baf, 0x5bb1,
- 0x5bb2, 0x5bb7, 0x5bba, 0x5bbb, 0x5bbc, 0x5bc0, 0x5bc1, 0x5bc3,
- 0x5bc8, 0x5bc9, 0x5bca, 0x5bcb, 0x5bcd, 0x5bce, 0x5bcf, 0x5bd1,
- 0x5bd4, 0x5bd5, 0x5bd6, 0x5bd7, 0x5bd8, 0x5bd9, 0x5bda, 0x5bdb,
- 0x5bdc, 0x5be0, 0x5be2, 0x5be3, 0x5be6, 0x5be7, 0x5be9, 0x5bea,
- 0x5beb, 0x5bec, 0x5bed, 0x5bef, 0x5bf1, 0x5bf2, 0x5bf3, 0x5bf4,
- 0x5bf5, 0x5bf6, 0x5bf7, 0x5bfd, 0x5bfe, 0x5c00, 0x5c02, 0x5c03,
- 0x5c05, 0x5c07, 0x5c08, 0x5c0b, 0x5c0c, 0x5c0d, 0x5c0e, 0x5c10,
- 0x5c12, 0x5c13, 0x5c17, 0x5c19, 0x5c1b, 0x5c1e, 0x5c1f, 0x5c20,
- 0x5c21, 0x5c23, 0x5c26, 0x5c28, 0x5c29, 0x5c2a, 0x5c2b, 0x5c2d,
- 0x5c2e, 0x5c2f, 0x5c30, 0x5c32, 0x5c33, 0x5c35, 0x5c36, 0x5c37,
- 0x5c43, 0x5c44, 0x5c46, 0x5c47, 0x5c4c, 0x5c4d, 0x5c52, 0x5c53,
- 0x5c54, 0x5c56, 0x5c57, 0x5c58, 0x5c5a, 0x5c5b, 0x5c5c, 0x5c5d,
- 0x5c5f, 0x5c62, 0x5c64, 0x5c67, 0x5c68, 0x5c69, 0x5c6a, 0x5c6b,
- 0x5c6c, 0x5c6d, 0x5c70, 0x5c72, 0x5c73, 0x5c74, 0x5c75, 0x5c76,
- 0x5c77, 0x5c78, 0x5c7b, 0x5c7c, 0x5c7d, 0x5c7e, 0x5c80, 0x5c83,
- 0x5c84, 0x5c85, 0x5c86, 0x5c87, 0x5c89, 0x5c8a, 0x5c8b, 0x5c8e,
- 0x5c8f, 0x5c92, 0x5c93, 0x5c95, 0x5c9d, 0x5c9e, 0x5c9f, 0x5ca0,
- 0x5ca1, 0x5ca4, 0x5ca5, 0x5ca6, 0x5ca7, 0x5ca8,
- /* 0x8d */
- 0x5caa, 0x5cae, 0x5caf, 0x5cb0, 0x5cb2, 0x5cb4, 0x5cb6, 0x5cb9,
- 0x5cba, 0x5cbb, 0x5cbc, 0x5cbe, 0x5cc0, 0x5cc2, 0x5cc3, 0x5cc5,
- 0x5cc6, 0x5cc7, 0x5cc8, 0x5cc9, 0x5cca, 0x5ccc, 0x5ccd, 0x5cce,
- 0x5ccf, 0x5cd0, 0x5cd1, 0x5cd3, 0x5cd4, 0x5cd5, 0x5cd6, 0x5cd7,
- 0x5cd8, 0x5cda, 0x5cdb, 0x5cdc, 0x5cdd, 0x5cde, 0x5cdf, 0x5ce0,
- 0x5ce2, 0x5ce3, 0x5ce7, 0x5ce9, 0x5ceb, 0x5cec, 0x5cee, 0x5cef,
- 0x5cf1, 0x5cf2, 0x5cf3, 0x5cf4, 0x5cf5, 0x5cf6, 0x5cf7, 0x5cf8,
- 0x5cf9, 0x5cfa, 0x5cfc, 0x5cfd, 0x5cfe, 0x5cff, 0x5d00, 0x5d01,
- 0x5d04, 0x5d05, 0x5d08, 0x5d09, 0x5d0a, 0x5d0b, 0x5d0c, 0x5d0d,
- 0x5d0f, 0x5d10, 0x5d11, 0x5d12, 0x5d13, 0x5d15, 0x5d17, 0x5d18,
- 0x5d19, 0x5d1a, 0x5d1c, 0x5d1d, 0x5d1f, 0x5d20, 0x5d21, 0x5d22,
- 0x5d23, 0x5d25, 0x5d28, 0x5d2a, 0x5d2b, 0x5d2c, 0x5d2f, 0x5d30,
- 0x5d31, 0x5d32, 0x5d33, 0x5d35, 0x5d36, 0x5d37, 0x5d38, 0x5d39,
- 0x5d3a, 0x5d3b, 0x5d3c, 0x5d3f, 0x5d40, 0x5d41, 0x5d42, 0x5d43,
- 0x5d44, 0x5d45, 0x5d46, 0x5d48, 0x5d49, 0x5d4d, 0x5d4e, 0x5d4f,
- 0x5d50, 0x5d51, 0x5d52, 0x5d53, 0x5d54, 0x5d55, 0x5d56, 0x5d57,
- 0x5d59, 0x5d5a, 0x5d5c, 0x5d5e, 0x5d5f, 0x5d60, 0x5d61, 0x5d62,
- 0x5d63, 0x5d64, 0x5d65, 0x5d66, 0x5d67, 0x5d68, 0x5d6a, 0x5d6d,
- 0x5d6e, 0x5d70, 0x5d71, 0x5d72, 0x5d73, 0x5d75, 0x5d76, 0x5d77,
- 0x5d78, 0x5d79, 0x5d7a, 0x5d7b, 0x5d7c, 0x5d7d, 0x5d7e, 0x5d7f,
- 0x5d80, 0x5d81, 0x5d83, 0x5d84, 0x5d85, 0x5d86, 0x5d87, 0x5d88,
- 0x5d89, 0x5d8a, 0x5d8b, 0x5d8c, 0x5d8d, 0x5d8e, 0x5d8f, 0x5d90,
- 0x5d91, 0x5d92, 0x5d93, 0x5d94, 0x5d95, 0x5d96, 0x5d97, 0x5d98,
- 0x5d9a, 0x5d9b, 0x5d9c, 0x5d9e, 0x5d9f, 0x5da0,
- /* 0x8e */
- 0x5da1, 0x5da2, 0x5da3, 0x5da4, 0x5da5, 0x5da6, 0x5da7, 0x5da8,
- 0x5da9, 0x5daa, 0x5dab, 0x5dac, 0x5dad, 0x5dae, 0x5daf, 0x5db0,
- 0x5db1, 0x5db2, 0x5db3, 0x5db4, 0x5db5, 0x5db6, 0x5db8, 0x5db9,
- 0x5dba, 0x5dbb, 0x5dbc, 0x5dbd, 0x5dbe, 0x5dbf, 0x5dc0, 0x5dc1,
- 0x5dc2, 0x5dc3, 0x5dc4, 0x5dc6, 0x5dc7, 0x5dc8, 0x5dc9, 0x5dca,
- 0x5dcb, 0x5dcc, 0x5dce, 0x5dcf, 0x5dd0, 0x5dd1, 0x5dd2, 0x5dd3,
- 0x5dd4, 0x5dd5, 0x5dd6, 0x5dd7, 0x5dd8, 0x5dd9, 0x5dda, 0x5ddc,
- 0x5ddf, 0x5de0, 0x5de3, 0x5de4, 0x5dea, 0x5dec, 0x5ded, 0x5df0,
- 0x5df5, 0x5df6, 0x5df8, 0x5df9, 0x5dfa, 0x5dfb, 0x5dfc, 0x5dff,
- 0x5e00, 0x5e04, 0x5e07, 0x5e09, 0x5e0a, 0x5e0b, 0x5e0d, 0x5e0e,
- 0x5e12, 0x5e13, 0x5e17, 0x5e1e, 0x5e1f, 0x5e20, 0x5e21, 0x5e22,
- 0x5e23, 0x5e24, 0x5e25, 0x5e28, 0x5e29, 0x5e2a, 0x5e2b, 0x5e2c,
- 0x5e2f, 0x5e30, 0x5e32, 0x5e33, 0x5e34, 0x5e35, 0x5e36, 0x5e39,
- 0x5e3a, 0x5e3e, 0x5e3f, 0x5e40, 0x5e41, 0x5e43, 0x5e46, 0x5e47,
- 0x5e48, 0x5e49, 0x5e4a, 0x5e4b, 0x5e4d, 0x5e4e, 0x5e4f, 0x5e50,
- 0x5e51, 0x5e52, 0x5e53, 0x5e56, 0x5e57, 0x5e58, 0x5e59, 0x5e5a,
- 0x5e5c, 0x5e5d, 0x5e5f, 0x5e60, 0x5e63, 0x5e64, 0x5e65, 0x5e66,
- 0x5e67, 0x5e68, 0x5e69, 0x5e6a, 0x5e6b, 0x5e6c, 0x5e6d, 0x5e6e,
- 0x5e6f, 0x5e70, 0x5e71, 0x5e75, 0x5e77, 0x5e79, 0x5e7e, 0x5e81,
- 0x5e82, 0x5e83, 0x5e85, 0x5e88, 0x5e89, 0x5e8c, 0x5e8d, 0x5e8e,
- 0x5e92, 0x5e98, 0x5e9b, 0x5e9d, 0x5ea1, 0x5ea2, 0x5ea3, 0x5ea4,
- 0x5ea8, 0x5ea9, 0x5eaa, 0x5eab, 0x5eac, 0x5eae, 0x5eaf, 0x5eb0,
- 0x5eb1, 0x5eb2, 0x5eb4, 0x5eba, 0x5ebb, 0x5ebc, 0x5ebd, 0x5ebf,
- 0x5ec0, 0x5ec1, 0x5ec2, 0x5ec3, 0x5ec4, 0x5ec5,
- /* 0x8f */
- 0x5ec6, 0x5ec7, 0x5ec8, 0x5ecb, 0x5ecc, 0x5ecd, 0x5ece, 0x5ecf,
- 0x5ed0, 0x5ed4, 0x5ed5, 0x5ed7, 0x5ed8, 0x5ed9, 0x5eda, 0x5edc,
- 0x5edd, 0x5ede, 0x5edf, 0x5ee0, 0x5ee1, 0x5ee2, 0x5ee3, 0x5ee4,
- 0x5ee5, 0x5ee6, 0x5ee7, 0x5ee9, 0x5eeb, 0x5eec, 0x5eed, 0x5eee,
- 0x5eef, 0x5ef0, 0x5ef1, 0x5ef2, 0x5ef3, 0x5ef5, 0x5ef8, 0x5ef9,
- 0x5efb, 0x5efc, 0x5efd, 0x5f05, 0x5f06, 0x5f07, 0x5f09, 0x5f0c,
- 0x5f0d, 0x5f0e, 0x5f10, 0x5f12, 0x5f14, 0x5f16, 0x5f19, 0x5f1a,
- 0x5f1c, 0x5f1d, 0x5f1e, 0x5f21, 0x5f22, 0x5f23, 0x5f24, 0x5f28,
- 0x5f2b, 0x5f2c, 0x5f2e, 0x5f30, 0x5f32, 0x5f33, 0x5f34, 0x5f35,
- 0x5f36, 0x5f37, 0x5f38, 0x5f3b, 0x5f3d, 0x5f3e, 0x5f3f, 0x5f41,
- 0x5f42, 0x5f43, 0x5f44, 0x5f45, 0x5f46, 0x5f47, 0x5f48, 0x5f49,
- 0x5f4a, 0x5f4b, 0x5f4c, 0x5f4d, 0x5f4e, 0x5f4f, 0x5f51, 0x5f54,
- 0x5f59, 0x5f5a, 0x5f5b, 0x5f5c, 0x5f5e, 0x5f5f, 0x5f60, 0x5f63,
- 0x5f65, 0x5f67, 0x5f68, 0x5f6b, 0x5f6e, 0x5f6f, 0x5f72, 0x5f74,
- 0x5f75, 0x5f76, 0x5f78, 0x5f7a, 0x5f7d, 0x5f7e, 0x5f7f, 0x5f83,
- 0x5f86, 0x5f8d, 0x5f8e, 0x5f8f, 0x5f91, 0x5f93, 0x5f94, 0x5f96,
- 0x5f9a, 0x5f9b, 0x5f9d, 0x5f9e, 0x5f9f, 0x5fa0, 0x5fa2, 0x5fa3,
- 0x5fa4, 0x5fa5, 0x5fa6, 0x5fa7, 0x5fa9, 0x5fab, 0x5fac, 0x5faf,
- 0x5fb0, 0x5fb1, 0x5fb2, 0x5fb3, 0x5fb4, 0x5fb6, 0x5fb8, 0x5fb9,
- 0x5fba, 0x5fbb, 0x5fbe, 0x5fbf, 0x5fc0, 0x5fc1, 0x5fc2, 0x5fc7,
- 0x5fc8, 0x5fca, 0x5fcb, 0x5fce, 0x5fd3, 0x5fd4, 0x5fd5, 0x5fda,
- 0x5fdb, 0x5fdc, 0x5fde, 0x5fdf, 0x5fe2, 0x5fe3, 0x5fe5, 0x5fe6,
- 0x5fe8, 0x5fe9, 0x5fec, 0x5fef, 0x5ff0, 0x5ff2, 0x5ff3, 0x5ff4,
- 0x5ff6, 0x5ff7, 0x5ff9, 0x5ffa, 0x5ffc, 0x6007,
- /* 0x90 */
- 0x6008, 0x6009, 0x600b, 0x600c, 0x6010, 0x6011, 0x6013, 0x6017,
- 0x6018, 0x601a, 0x601e, 0x601f, 0x6022, 0x6023, 0x6024, 0x602c,
- 0x602d, 0x602e, 0x6030, 0x6031, 0x6032, 0x6033, 0x6034, 0x6036,
- 0x6037, 0x6038, 0x6039, 0x603a, 0x603d, 0x603e, 0x6040, 0x6044,
- 0x6045, 0x6046, 0x6047, 0x6048, 0x6049, 0x604a, 0x604c, 0x604e,
- 0x604f, 0x6051, 0x6053, 0x6054, 0x6056, 0x6057, 0x6058, 0x605b,
- 0x605c, 0x605e, 0x605f, 0x6060, 0x6061, 0x6065, 0x6066, 0x606e,
- 0x6071, 0x6072, 0x6074, 0x6075, 0x6077, 0x607e, 0x6080, 0x6081,
- 0x6082, 0x6085, 0x6086, 0x6087, 0x6088, 0x608a, 0x608b, 0x608e,
- 0x608f, 0x6090, 0x6091, 0x6093, 0x6095, 0x6097, 0x6098, 0x6099,
- 0x609c, 0x609e, 0x60a1, 0x60a2, 0x60a4, 0x60a5, 0x60a7, 0x60a9,
- 0x60aa, 0x60ae, 0x60b0, 0x60b3, 0x60b5, 0x60b6, 0x60b7, 0x60b9,
- 0x60ba, 0x60bd, 0x60be, 0x60bf, 0x60c0, 0x60c1, 0x60c2, 0x60c3,
- 0x60c4, 0x60c7, 0x60c8, 0x60c9, 0x60cc, 0x60cd, 0x60ce, 0x60cf,
- 0x60d0, 0x60d2, 0x60d3, 0x60d4, 0x60d6, 0x60d7, 0x60d9, 0x60db,
- 0x60de, 0x60e1, 0x60e2, 0x60e3, 0x60e4, 0x60e5, 0x60ea, 0x60f1,
- 0x60f2, 0x60f5, 0x60f7, 0x60f8, 0x60fb, 0x60fc, 0x60fd, 0x60fe,
- 0x60ff, 0x6102, 0x6103, 0x6104, 0x6105, 0x6107, 0x610a, 0x610b,
- 0x610c, 0x6110, 0x6111, 0x6112, 0x6113, 0x6114, 0x6116, 0x6117,
- 0x6118, 0x6119, 0x611b, 0x611c, 0x611d, 0x611e, 0x6121, 0x6122,
- 0x6125, 0x6128, 0x6129, 0x612a, 0x612c, 0x612d, 0x612e, 0x612f,
- 0x6130, 0x6131, 0x6132, 0x6133, 0x6134, 0x6135, 0x6136, 0x6137,
- 0x6138, 0x6139, 0x613a, 0x613b, 0x613c, 0x613d, 0x613e, 0x6140,
- 0x6141, 0x6142, 0x6143, 0x6144, 0x6145, 0x6146,
- /* 0x91 */
- 0x6147, 0x6149, 0x614b, 0x614d, 0x614f, 0x6150, 0x6152, 0x6153,
- 0x6154, 0x6156, 0x6157, 0x6158, 0x6159, 0x615a, 0x615b, 0x615c,
- 0x615e, 0x615f, 0x6160, 0x6161, 0x6163, 0x6164, 0x6165, 0x6166,
- 0x6169, 0x616a, 0x616b, 0x616c, 0x616d, 0x616e, 0x616f, 0x6171,
- 0x6172, 0x6173, 0x6174, 0x6176, 0x6178, 0x6179, 0x617a, 0x617b,
- 0x617c, 0x617d, 0x617e, 0x617f, 0x6180, 0x6181, 0x6182, 0x6183,
- 0x6184, 0x6185, 0x6186, 0x6187, 0x6188, 0x6189, 0x618a, 0x618c,
- 0x618d, 0x618f, 0x6190, 0x6191, 0x6192, 0x6193, 0x6195, 0x6196,
- 0x6197, 0x6198, 0x6199, 0x619a, 0x619b, 0x619c, 0x619e, 0x619f,
- 0x61a0, 0x61a1, 0x61a2, 0x61a3, 0x61a4, 0x61a5, 0x61a6, 0x61aa,
- 0x61ab, 0x61ad, 0x61ae, 0x61af, 0x61b0, 0x61b1, 0x61b2, 0x61b3,
- 0x61b4, 0x61b5, 0x61b6, 0x61b8, 0x61b9, 0x61ba, 0x61bb, 0x61bc,
- 0x61bd, 0x61bf, 0x61c0, 0x61c1, 0x61c3, 0x61c4, 0x61c5, 0x61c6,
- 0x61c7, 0x61c9, 0x61cc, 0x61cd, 0x61ce, 0x61cf, 0x61d0, 0x61d3,
- 0x61d5, 0x61d6, 0x61d7, 0x61d8, 0x61d9, 0x61da, 0x61db, 0x61dc,
- 0x61dd, 0x61de, 0x61df, 0x61e0, 0x61e1, 0x61e2, 0x61e3, 0x61e4,
- 0x61e5, 0x61e7, 0x61e8, 0x61e9, 0x61ea, 0x61eb, 0x61ec, 0x61ed,
- 0x61ee, 0x61ef, 0x61f0, 0x61f1, 0x61f2, 0x61f3, 0x61f4, 0x61f6,
- 0x61f7, 0x61f8, 0x61f9, 0x61fa, 0x61fb, 0x61fc, 0x61fd, 0x61fe,
- 0x6200, 0x6201, 0x6202, 0x6203, 0x6204, 0x6205, 0x6207, 0x6209,
- 0x6213, 0x6214, 0x6219, 0x621c, 0x621d, 0x621e, 0x6220, 0x6223,
- 0x6226, 0x6227, 0x6228, 0x6229, 0x622b, 0x622d, 0x622f, 0x6230,
- 0x6231, 0x6232, 0x6235, 0x6236, 0x6238, 0x6239, 0x623a, 0x623b,
- 0x623c, 0x6242, 0x6244, 0x6245, 0x6246, 0x624a,
- /* 0x92 */
- 0x624f, 0x6250, 0x6255, 0x6256, 0x6257, 0x6259, 0x625a, 0x625c,
- 0x625d, 0x625e, 0x625f, 0x6260, 0x6261, 0x6262, 0x6264, 0x6265,
- 0x6268, 0x6271, 0x6272, 0x6274, 0x6275, 0x6277, 0x6278, 0x627a,
- 0x627b, 0x627d, 0x6281, 0x6282, 0x6283, 0x6285, 0x6286, 0x6287,
- 0x6288, 0x628b, 0x628c, 0x628d, 0x628e, 0x628f, 0x6290, 0x6294,
- 0x6299, 0x629c, 0x629d, 0x629e, 0x62a3, 0x62a6, 0x62a7, 0x62a9,
- 0x62aa, 0x62ad, 0x62ae, 0x62af, 0x62b0, 0x62b2, 0x62b3, 0x62b4,
- 0x62b6, 0x62b7, 0x62b8, 0x62ba, 0x62be, 0x62c0, 0x62c1, 0x62c3,
- 0x62cb, 0x62cf, 0x62d1, 0x62d5, 0x62dd, 0x62de, 0x62e0, 0x62e1,
- 0x62e4, 0x62ea, 0x62eb, 0x62f0, 0x62f2, 0x62f5, 0x62f8, 0x62f9,
- 0x62fa, 0x62fb, 0x6300, 0x6303, 0x6304, 0x6305, 0x6306, 0x630a,
- 0x630b, 0x630c, 0x630d, 0x630f, 0x6310, 0x6312, 0x6313, 0x6314,
- 0x6315, 0x6317, 0x6318, 0x6319, 0x631c, 0x6326, 0x6327, 0x6329,
- 0x632c, 0x632d, 0x632e, 0x6330, 0x6331, 0x6333, 0x6334, 0x6335,
- 0x6336, 0x6337, 0x6338, 0x633b, 0x633c, 0x633e, 0x633f, 0x6340,
- 0x6341, 0x6344, 0x6347, 0x6348, 0x634a, 0x6351, 0x6352, 0x6353,
- 0x6354, 0x6356, 0x6357, 0x6358, 0x6359, 0x635a, 0x635b, 0x635c,
- 0x635d, 0x6360, 0x6364, 0x6365, 0x6366, 0x6368, 0x636a, 0x636b,
- 0x636c, 0x636f, 0x6370, 0x6372, 0x6373, 0x6374, 0x6375, 0x6378,
- 0x6379, 0x637c, 0x637d, 0x637e, 0x637f, 0x6381, 0x6383, 0x6384,
- 0x6385, 0x6386, 0x638b, 0x638d, 0x6391, 0x6393, 0x6394, 0x6395,
- 0x6397, 0x6399, 0x639a, 0x639b, 0x639c, 0x639d, 0x639e, 0x639f,
- 0x63a1, 0x63a4, 0x63a6, 0x63ab, 0x63af, 0x63b1, 0x63b2, 0x63b5,
- 0x63b6, 0x63b9, 0x63bb, 0x63bd, 0x63bf, 0x63c0,
- /* 0x93 */
- 0x63c1, 0x63c2, 0x63c3, 0x63c5, 0x63c7, 0x63c8, 0x63ca, 0x63cb,
- 0x63cc, 0x63d1, 0x63d3, 0x63d4, 0x63d5, 0x63d7, 0x63d8, 0x63d9,
- 0x63da, 0x63db, 0x63dc, 0x63dd, 0x63df, 0x63e2, 0x63e4, 0x63e5,
- 0x63e6, 0x63e7, 0x63e8, 0x63eb, 0x63ec, 0x63ee, 0x63ef, 0x63f0,
- 0x63f1, 0x63f3, 0x63f5, 0x63f7, 0x63f9, 0x63fa, 0x63fb, 0x63fc,
- 0x63fe, 0x6403, 0x6404, 0x6406, 0x6407, 0x6408, 0x6409, 0x640a,
- 0x640d, 0x640e, 0x6411, 0x6412, 0x6415, 0x6416, 0x6417, 0x6418,
- 0x6419, 0x641a, 0x641d, 0x641f, 0x6422, 0x6423, 0x6424, 0x6425,
- 0x6427, 0x6428, 0x6429, 0x642b, 0x642e, 0x642f, 0x6430, 0x6431,
- 0x6432, 0x6433, 0x6435, 0x6436, 0x6437, 0x6438, 0x6439, 0x643b,
- 0x643c, 0x643e, 0x6440, 0x6442, 0x6443, 0x6449, 0x644b, 0x644c,
- 0x644d, 0x644e, 0x644f, 0x6450, 0x6451, 0x6453, 0x6455, 0x6456,
- 0x6457, 0x6459, 0x645a, 0x645b, 0x645c, 0x645d, 0x645f, 0x6460,
- 0x6461, 0x6462, 0x6463, 0x6464, 0x6465, 0x6466, 0x6468, 0x646a,
- 0x646b, 0x646c, 0x646e, 0x646f, 0x6470, 0x6471, 0x6472, 0x6473,
- 0x6474, 0x6475, 0x6476, 0x6477, 0x647b, 0x647c, 0x647d, 0x647e,
- 0x647f, 0x6480, 0x6481, 0x6483, 0x6486, 0x6488, 0x6489, 0x648a,
- 0x648b, 0x648c, 0x648d, 0x648e, 0x648f, 0x6490, 0x6493, 0x6494,
- 0x6497, 0x6498, 0x649a, 0x649b, 0x649c, 0x649d, 0x649f, 0x64a0,
- 0x64a1, 0x64a2, 0x64a3, 0x64a5, 0x64a6, 0x64a7, 0x64a8, 0x64aa,
- 0x64ab, 0x64af, 0x64b1, 0x64b2, 0x64b3, 0x64b4, 0x64b6, 0x64b9,
- 0x64bb, 0x64bd, 0x64be, 0x64bf, 0x64c1, 0x64c3, 0x64c4, 0x64c6,
- 0x64c7, 0x64c8, 0x64c9, 0x64ca, 0x64cb, 0x64cc, 0x64cf, 0x64d1,
- 0x64d3, 0x64d4, 0x64d5, 0x64d6, 0x64d9, 0x64da,
- /* 0x94 */
- 0x64db, 0x64dc, 0x64dd, 0x64df, 0x64e0, 0x64e1, 0x64e3, 0x64e5,
- 0x64e7, 0x64e8, 0x64e9, 0x64ea, 0x64eb, 0x64ec, 0x64ed, 0x64ee,
- 0x64ef, 0x64f0, 0x64f1, 0x64f2, 0x64f3, 0x64f4, 0x64f5, 0x64f6,
- 0x64f7, 0x64f8, 0x64f9, 0x64fa, 0x64fb, 0x64fc, 0x64fd, 0x64fe,
- 0x64ff, 0x6501, 0x6502, 0x6503, 0x6504, 0x6505, 0x6506, 0x6507,
- 0x6508, 0x650a, 0x650b, 0x650c, 0x650d, 0x650e, 0x650f, 0x6510,
- 0x6511, 0x6513, 0x6514, 0x6515, 0x6516, 0x6517, 0x6519, 0x651a,
- 0x651b, 0x651c, 0x651d, 0x651e, 0x651f, 0x6520, 0x6521, 0x6522,
- 0x6523, 0x6524, 0x6526, 0x6527, 0x6528, 0x6529, 0x652a, 0x652c,
- 0x652d, 0x6530, 0x6531, 0x6532, 0x6533, 0x6537, 0x653a, 0x653c,
- 0x653d, 0x6540, 0x6541, 0x6542, 0x6543, 0x6544, 0x6546, 0x6547,
- 0x654a, 0x654b, 0x654d, 0x654e, 0x6550, 0x6552, 0x6553, 0x6554,
- 0x6557, 0x6558, 0x655a, 0x655c, 0x655f, 0x6560, 0x6561, 0x6564,
- 0x6565, 0x6567, 0x6568, 0x6569, 0x656a, 0x656d, 0x656e, 0x656f,
- 0x6571, 0x6573, 0x6575, 0x6576, 0x6578, 0x6579, 0x657a, 0x657b,
- 0x657c, 0x657d, 0x657e, 0x657f, 0x6580, 0x6581, 0x6582, 0x6583,
- 0x6584, 0x6585, 0x6586, 0x6588, 0x6589, 0x658a, 0x658d, 0x658e,
- 0x658f, 0x6592, 0x6594, 0x6595, 0x6596, 0x6598, 0x659a, 0x659d,
- 0x659e, 0x65a0, 0x65a2, 0x65a3, 0x65a6, 0x65a8, 0x65aa, 0x65ac,
- 0x65ae, 0x65b1, 0x65b2, 0x65b3, 0x65b4, 0x65b5, 0x65b6, 0x65b7,
- 0x65b8, 0x65ba, 0x65bb, 0x65be, 0x65bf, 0x65c0, 0x65c2, 0x65c7,
- 0x65c8, 0x65c9, 0x65ca, 0x65cd, 0x65d0, 0x65d1, 0x65d3, 0x65d4,
- 0x65d5, 0x65d8, 0x65d9, 0x65da, 0x65db, 0x65dc, 0x65dd, 0x65de,
- 0x65df, 0x65e1, 0x65e3, 0x65e4, 0x65ea, 0x65eb,
- /* 0x95 */
- 0x65f2, 0x65f3, 0x65f4, 0x65f5, 0x65f8, 0x65f9, 0x65fb, 0x65fc,
- 0x65fd, 0x65fe, 0x65ff, 0x6601, 0x6604, 0x6605, 0x6607, 0x6608,
- 0x6609, 0x660b, 0x660d, 0x6610, 0x6611, 0x6612, 0x6616, 0x6617,
- 0x6618, 0x661a, 0x661b, 0x661c, 0x661e, 0x6621, 0x6622, 0x6623,
- 0x6624, 0x6626, 0x6629, 0x662a, 0x662b, 0x662c, 0x662e, 0x6630,
- 0x6632, 0x6633, 0x6637, 0x6638, 0x6639, 0x663a, 0x663b, 0x663d,
- 0x663f, 0x6640, 0x6642, 0x6644, 0x6645, 0x6646, 0x6647, 0x6648,
- 0x6649, 0x664a, 0x664d, 0x664e, 0x6650, 0x6651, 0x6658, 0x6659,
- 0x665b, 0x665c, 0x665d, 0x665e, 0x6660, 0x6662, 0x6663, 0x6665,
- 0x6667, 0x6669, 0x666a, 0x666b, 0x666c, 0x666d, 0x6671, 0x6672,
- 0x6673, 0x6675, 0x6678, 0x6679, 0x667b, 0x667c, 0x667d, 0x667f,
- 0x6680, 0x6681, 0x6683, 0x6685, 0x6686, 0x6688, 0x6689, 0x668a,
- 0x668b, 0x668d, 0x668e, 0x668f, 0x6690, 0x6692, 0x6693, 0x6694,
- 0x6695, 0x6698, 0x6699, 0x669a, 0x669b, 0x669c, 0x669e, 0x669f,
- 0x66a0, 0x66a1, 0x66a2, 0x66a3, 0x66a4, 0x66a5, 0x66a6, 0x66a9,
- 0x66aa, 0x66ab, 0x66ac, 0x66ad, 0x66af, 0x66b0, 0x66b1, 0x66b2,
- 0x66b3, 0x66b5, 0x66b6, 0x66b7, 0x66b8, 0x66ba, 0x66bb, 0x66bc,
- 0x66bd, 0x66bf, 0x66c0, 0x66c1, 0x66c2, 0x66c3, 0x66c4, 0x66c5,
- 0x66c6, 0x66c7, 0x66c8, 0x66c9, 0x66ca, 0x66cb, 0x66cc, 0x66cd,
- 0x66ce, 0x66cf, 0x66d0, 0x66d1, 0x66d2, 0x66d3, 0x66d4, 0x66d5,
- 0x66d6, 0x66d7, 0x66d8, 0x66da, 0x66de, 0x66df, 0x66e0, 0x66e1,
- 0x66e2, 0x66e3, 0x66e4, 0x66e5, 0x66e7, 0x66e8, 0x66ea, 0x66eb,
- 0x66ec, 0x66ed, 0x66ee, 0x66ef, 0x66f1, 0x66f5, 0x66f6, 0x66f8,
- 0x66fa, 0x66fb, 0x66fd, 0x6701, 0x6702, 0x6703,
- /* 0x96 */
- 0x6704, 0x6705, 0x6706, 0x6707, 0x670c, 0x670e, 0x670f, 0x6711,
- 0x6712, 0x6713, 0x6716, 0x6718, 0x6719, 0x671a, 0x671c, 0x671e,
- 0x6720, 0x6721, 0x6722, 0x6723, 0x6724, 0x6725, 0x6727, 0x6729,
- 0x672e, 0x6730, 0x6732, 0x6733, 0x6736, 0x6737, 0x6738, 0x6739,
- 0x673b, 0x673c, 0x673e, 0x673f, 0x6741, 0x6744, 0x6745, 0x6747,
- 0x674a, 0x674b, 0x674d, 0x6752, 0x6754, 0x6755, 0x6757, 0x6758,
- 0x6759, 0x675a, 0x675b, 0x675d, 0x6762, 0x6763, 0x6764, 0x6766,
- 0x6767, 0x676b, 0x676c, 0x676e, 0x6771, 0x6774, 0x6776, 0x6778,
- 0x6779, 0x677a, 0x677b, 0x677d, 0x6780, 0x6782, 0x6783, 0x6785,
- 0x6786, 0x6788, 0x678a, 0x678c, 0x678d, 0x678e, 0x678f, 0x6791,
- 0x6792, 0x6793, 0x6794, 0x6796, 0x6799, 0x679b, 0x679f, 0x67a0,
- 0x67a1, 0x67a4, 0x67a6, 0x67a9, 0x67ac, 0x67ae, 0x67b1, 0x67b2,
- 0x67b4, 0x67b9, 0x67ba, 0x67bb, 0x67bc, 0x67bd, 0x67be, 0x67bf,
- 0x67c0, 0x67c2, 0x67c5, 0x67c6, 0x67c7, 0x67c8, 0x67c9, 0x67ca,
- 0x67cb, 0x67cc, 0x67cd, 0x67ce, 0x67d5, 0x67d6, 0x67d7, 0x67db,
- 0x67df, 0x67e1, 0x67e3, 0x67e4, 0x67e6, 0x67e7, 0x67e8, 0x67ea,
- 0x67eb, 0x67ed, 0x67ee, 0x67f2, 0x67f5, 0x67f6, 0x67f7, 0x67f8,
- 0x67f9, 0x67fa, 0x67fb, 0x67fc, 0x67fe, 0x6801, 0x6802, 0x6803,
- 0x6804, 0x6806, 0x680d, 0x6810, 0x6812, 0x6814, 0x6815, 0x6818,
- 0x6819, 0x681a, 0x681b, 0x681c, 0x681e, 0x681f, 0x6820, 0x6822,
- 0x6823, 0x6824, 0x6825, 0x6826, 0x6827, 0x6828, 0x682b, 0x682c,
- 0x682d, 0x682e, 0x682f, 0x6830, 0x6831, 0x6834, 0x6835, 0x6836,
- 0x683a, 0x683b, 0x683f, 0x6847, 0x684b, 0x684d, 0x684f, 0x6852,
- 0x6856, 0x6857, 0x6858, 0x6859, 0x685a, 0x685b,
- /* 0x97 */
- 0x685c, 0x685d, 0x685e, 0x685f, 0x686a, 0x686c, 0x686d, 0x686e,
- 0x686f, 0x6870, 0x6871, 0x6872, 0x6873, 0x6875, 0x6878, 0x6879,
- 0x687a, 0x687b, 0x687c, 0x687d, 0x687e, 0x687f, 0x6880, 0x6882,
- 0x6884, 0x6887, 0x6888, 0x6889, 0x688a, 0x688b, 0x688c, 0x688d,
- 0x688e, 0x6890, 0x6891, 0x6892, 0x6894, 0x6895, 0x6896, 0x6898,
- 0x6899, 0x689a, 0x689b, 0x689c, 0x689d, 0x689e, 0x689f, 0x68a0,
- 0x68a1, 0x68a3, 0x68a4, 0x68a5, 0x68a9, 0x68aa, 0x68ab, 0x68ac,
- 0x68ae, 0x68b1, 0x68b2, 0x68b4, 0x68b6, 0x68b7, 0x68b8, 0x68b9,
- 0x68ba, 0x68bb, 0x68bc, 0x68bd, 0x68be, 0x68bf, 0x68c1, 0x68c3,
- 0x68c4, 0x68c5, 0x68c6, 0x68c7, 0x68c8, 0x68ca, 0x68cc, 0x68ce,
- 0x68cf, 0x68d0, 0x68d1, 0x68d3, 0x68d4, 0x68d6, 0x68d7, 0x68d9,
- 0x68db, 0x68dc, 0x68dd, 0x68de, 0x68df, 0x68e1, 0x68e2, 0x68e4,
- 0x68e5, 0x68e6, 0x68e7, 0x68e8, 0x68e9, 0x68ea, 0x68eb, 0x68ec,
- 0x68ed, 0x68ef, 0x68f2, 0x68f3, 0x68f4, 0x68f6, 0x68f7, 0x68f8,
- 0x68fb, 0x68fd, 0x68fe, 0x68ff, 0x6900, 0x6902, 0x6903, 0x6904,
- 0x6906, 0x6907, 0x6908, 0x6909, 0x690a, 0x690c, 0x690f, 0x6911,
- 0x6913, 0x6914, 0x6915, 0x6916, 0x6917, 0x6918, 0x6919, 0x691a,
- 0x691b, 0x691c, 0x691d, 0x691e, 0x6921, 0x6922, 0x6923, 0x6925,
- 0x6926, 0x6927, 0x6928, 0x6929, 0x692a, 0x692b, 0x692c, 0x692e,
- 0x692f, 0x6931, 0x6932, 0x6933, 0x6935, 0x6936, 0x6937, 0x6938,
- 0x693a, 0x693b, 0x693c, 0x693e, 0x6940, 0x6941, 0x6943, 0x6944,
- 0x6945, 0x6946, 0x6947, 0x6948, 0x6949, 0x694a, 0x694b, 0x694c,
- 0x694d, 0x694e, 0x694f, 0x6950, 0x6951, 0x6952, 0x6953, 0x6955,
- 0x6956, 0x6958, 0x6959, 0x695b, 0x695c, 0x695f,
- /* 0x98 */
- 0x6961, 0x6962, 0x6964, 0x6965, 0x6967, 0x6968, 0x6969, 0x696a,
- 0x696c, 0x696d, 0x696f, 0x6970, 0x6972, 0x6973, 0x6974, 0x6975,
- 0x6976, 0x697a, 0x697b, 0x697d, 0x697e, 0x697f, 0x6981, 0x6983,
- 0x6985, 0x698a, 0x698b, 0x698c, 0x698e, 0x698f, 0x6990, 0x6991,
- 0x6992, 0x6993, 0x6996, 0x6997, 0x6999, 0x699a, 0x699d, 0x699e,
- 0x699f, 0x69a0, 0x69a1, 0x69a2, 0x69a3, 0x69a4, 0x69a5, 0x69a6,
- 0x69a9, 0x69aa, 0x69ac, 0x69ae, 0x69af, 0x69b0, 0x69b2, 0x69b3,
- 0x69b5, 0x69b6, 0x69b8, 0x69b9, 0x69ba, 0x69bc, 0x69bd, 0x69be,
- 0x69bf, 0x69c0, 0x69c2, 0x69c3, 0x69c4, 0x69c5, 0x69c6, 0x69c7,
- 0x69c8, 0x69c9, 0x69cb, 0x69cd, 0x69cf, 0x69d1, 0x69d2, 0x69d3,
- 0x69d5, 0x69d6, 0x69d7, 0x69d8, 0x69d9, 0x69da, 0x69dc, 0x69dd,
- 0x69de, 0x69e1, 0x69e2, 0x69e3, 0x69e4, 0x69e5, 0x69e6, 0x69e7,
- 0x69e8, 0x69e9, 0x69ea, 0x69eb, 0x69ec, 0x69ee, 0x69ef, 0x69f0,
- 0x69f1, 0x69f3, 0x69f4, 0x69f5, 0x69f6, 0x69f7, 0x69f8, 0x69f9,
- 0x69fa, 0x69fb, 0x69fc, 0x69fe, 0x6a00, 0x6a01, 0x6a02, 0x6a03,
- 0x6a04, 0x6a05, 0x6a06, 0x6a07, 0x6a08, 0x6a09, 0x6a0b, 0x6a0c,
- 0x6a0d, 0x6a0e, 0x6a0f, 0x6a10, 0x6a11, 0x6a12, 0x6a13, 0x6a14,
- 0x6a15, 0x6a16, 0x6a19, 0x6a1a, 0x6a1b, 0x6a1c, 0x6a1d, 0x6a1e,
- 0x6a20, 0x6a22, 0x6a23, 0x6a24, 0x6a25, 0x6a26, 0x6a27, 0x6a29,
- 0x6a2b, 0x6a2c, 0x6a2d, 0x6a2e, 0x6a30, 0x6a32, 0x6a33, 0x6a34,
- 0x6a36, 0x6a37, 0x6a38, 0x6a39, 0x6a3a, 0x6a3b, 0x6a3c, 0x6a3f,
- 0x6a40, 0x6a41, 0x6a42, 0x6a43, 0x6a45, 0x6a46, 0x6a48, 0x6a49,
- 0x6a4a, 0x6a4b, 0x6a4c, 0x6a4d, 0x6a4e, 0x6a4f, 0x6a51, 0x6a52,
- 0x6a53, 0x6a54, 0x6a55, 0x6a56, 0x6a57, 0x6a5a,
- /* 0x99 */
- 0x6a5c, 0x6a5d, 0x6a5e, 0x6a5f, 0x6a60, 0x6a62, 0x6a63, 0x6a64,
- 0x6a66, 0x6a67, 0x6a68, 0x6a69, 0x6a6a, 0x6a6b, 0x6a6c, 0x6a6d,
- 0x6a6e, 0x6a6f, 0x6a70, 0x6a72, 0x6a73, 0x6a74, 0x6a75, 0x6a76,
- 0x6a77, 0x6a78, 0x6a7a, 0x6a7b, 0x6a7d, 0x6a7e, 0x6a7f, 0x6a81,
- 0x6a82, 0x6a83, 0x6a85, 0x6a86, 0x6a87, 0x6a88, 0x6a89, 0x6a8a,
- 0x6a8b, 0x6a8c, 0x6a8d, 0x6a8f, 0x6a92, 0x6a93, 0x6a94, 0x6a95,
- 0x6a96, 0x6a98, 0x6a99, 0x6a9a, 0x6a9b, 0x6a9c, 0x6a9d, 0x6a9e,
- 0x6a9f, 0x6aa1, 0x6aa2, 0x6aa3, 0x6aa4, 0x6aa5, 0x6aa6, 0x6aa7,
- 0x6aa8, 0x6aaa, 0x6aad, 0x6aae, 0x6aaf, 0x6ab0, 0x6ab1, 0x6ab2,
- 0x6ab3, 0x6ab4, 0x6ab5, 0x6ab6, 0x6ab7, 0x6ab8, 0x6ab9, 0x6aba,
- 0x6abb, 0x6abc, 0x6abd, 0x6abe, 0x6abf, 0x6ac0, 0x6ac1, 0x6ac2,
- 0x6ac3, 0x6ac4, 0x6ac5, 0x6ac6, 0x6ac7, 0x6ac8, 0x6ac9, 0x6aca,
- 0x6acb, 0x6acc, 0x6acd, 0x6ace, 0x6acf, 0x6ad0, 0x6ad1, 0x6ad2,
- 0x6ad3, 0x6ad4, 0x6ad5, 0x6ad6, 0x6ad7, 0x6ad8, 0x6ad9, 0x6ada,
- 0x6adb, 0x6adc, 0x6add, 0x6ade, 0x6adf, 0x6ae0, 0x6ae1, 0x6ae2,
- 0x6ae3, 0x6ae4, 0x6ae5, 0x6ae6, 0x6ae7, 0x6ae8, 0x6ae9, 0x6aea,
- 0x6aeb, 0x6aec, 0x6aed, 0x6aee, 0x6aef, 0x6af0, 0x6af1, 0x6af2,
- 0x6af3, 0x6af4, 0x6af5, 0x6af6, 0x6af7, 0x6af8, 0x6af9, 0x6afa,
- 0x6afb, 0x6afc, 0x6afd, 0x6afe, 0x6aff, 0x6b00, 0x6b01, 0x6b02,
- 0x6b03, 0x6b04, 0x6b05, 0x6b06, 0x6b07, 0x6b08, 0x6b09, 0x6b0a,
- 0x6b0b, 0x6b0c, 0x6b0d, 0x6b0e, 0x6b0f, 0x6b10, 0x6b11, 0x6b12,
- 0x6b13, 0x6b14, 0x6b15, 0x6b16, 0x6b17, 0x6b18, 0x6b19, 0x6b1a,
- 0x6b1b, 0x6b1c, 0x6b1d, 0x6b1e, 0x6b1f, 0x6b25, 0x6b26, 0x6b28,
- 0x6b29, 0x6b2a, 0x6b2b, 0x6b2c, 0x6b2d, 0x6b2e,
- /* 0x9a */
- 0x6b2f, 0x6b30, 0x6b31, 0x6b33, 0x6b34, 0x6b35, 0x6b36, 0x6b38,
- 0x6b3b, 0x6b3c, 0x6b3d, 0x6b3f, 0x6b40, 0x6b41, 0x6b42, 0x6b44,
- 0x6b45, 0x6b48, 0x6b4a, 0x6b4b, 0x6b4d, 0x6b4e, 0x6b4f, 0x6b50,
- 0x6b51, 0x6b52, 0x6b53, 0x6b54, 0x6b55, 0x6b56, 0x6b57, 0x6b58,
- 0x6b5a, 0x6b5b, 0x6b5c, 0x6b5d, 0x6b5e, 0x6b5f, 0x6b60, 0x6b61,
- 0x6b68, 0x6b69, 0x6b6b, 0x6b6c, 0x6b6d, 0x6b6e, 0x6b6f, 0x6b70,
- 0x6b71, 0x6b72, 0x6b73, 0x6b74, 0x6b75, 0x6b76, 0x6b77, 0x6b78,
- 0x6b7a, 0x6b7d, 0x6b7e, 0x6b7f, 0x6b80, 0x6b85, 0x6b88, 0x6b8c,
- 0x6b8e, 0x6b8f, 0x6b90, 0x6b91, 0x6b94, 0x6b95, 0x6b97, 0x6b98,
- 0x6b99, 0x6b9c, 0x6b9d, 0x6b9e, 0x6b9f, 0x6ba0, 0x6ba2, 0x6ba3,
- 0x6ba4, 0x6ba5, 0x6ba6, 0x6ba7, 0x6ba8, 0x6ba9, 0x6bab, 0x6bac,
- 0x6bad, 0x6bae, 0x6baf, 0x6bb0, 0x6bb1, 0x6bb2, 0x6bb6, 0x6bb8,
- 0x6bb9, 0x6bba, 0x6bbb, 0x6bbc, 0x6bbd, 0x6bbe, 0x6bc0, 0x6bc3,
- 0x6bc4, 0x6bc6, 0x6bc7, 0x6bc8, 0x6bc9, 0x6bca, 0x6bcc, 0x6bce,
- 0x6bd0, 0x6bd1, 0x6bd8, 0x6bda, 0x6bdc, 0x6bdd, 0x6bde, 0x6bdf,
- 0x6be0, 0x6be2, 0x6be3, 0x6be4, 0x6be5, 0x6be6, 0x6be7, 0x6be8,
- 0x6be9, 0x6bec, 0x6bed, 0x6bee, 0x6bf0, 0x6bf1, 0x6bf2, 0x6bf4,
- 0x6bf6, 0x6bf7, 0x6bf8, 0x6bfa, 0x6bfb, 0x6bfc, 0x6bfe, 0x6bff,
- 0x6c00, 0x6c01, 0x6c02, 0x6c03, 0x6c04, 0x6c08, 0x6c09, 0x6c0a,
- 0x6c0b, 0x6c0c, 0x6c0e, 0x6c12, 0x6c17, 0x6c1c, 0x6c1d, 0x6c1e,
- 0x6c20, 0x6c23, 0x6c25, 0x6c2b, 0x6c2c, 0x6c2d, 0x6c31, 0x6c33,
- 0x6c36, 0x6c37, 0x6c39, 0x6c3a, 0x6c3b, 0x6c3c, 0x6c3e, 0x6c3f,
- 0x6c43, 0x6c44, 0x6c45, 0x6c48, 0x6c4b, 0x6c4c, 0x6c4d, 0x6c4e,
- 0x6c4f, 0x6c51, 0x6c52, 0x6c53, 0x6c56, 0x6c58,
- /* 0x9b */
- 0x6c59, 0x6c5a, 0x6c62, 0x6c63, 0x6c65, 0x6c66, 0x6c67, 0x6c6b,
- 0x6c6c, 0x6c6d, 0x6c6e, 0x6c6f, 0x6c71, 0x6c73, 0x6c75, 0x6c77,
- 0x6c78, 0x6c7a, 0x6c7b, 0x6c7c, 0x6c7f, 0x6c80, 0x6c84, 0x6c87,
- 0x6c8a, 0x6c8b, 0x6c8d, 0x6c8e, 0x6c91, 0x6c92, 0x6c95, 0x6c96,
- 0x6c97, 0x6c98, 0x6c9a, 0x6c9c, 0x6c9d, 0x6c9e, 0x6ca0, 0x6ca2,
- 0x6ca8, 0x6cac, 0x6caf, 0x6cb0, 0x6cb4, 0x6cb5, 0x6cb6, 0x6cb7,
- 0x6cba, 0x6cc0, 0x6cc1, 0x6cc2, 0x6cc3, 0x6cc6, 0x6cc7, 0x6cc8,
- 0x6ccb, 0x6ccd, 0x6cce, 0x6ccf, 0x6cd1, 0x6cd2, 0x6cd8, 0x6cd9,
- 0x6cda, 0x6cdc, 0x6cdd, 0x6cdf, 0x6ce4, 0x6ce6, 0x6ce7, 0x6ce9,
- 0x6cec, 0x6ced, 0x6cf2, 0x6cf4, 0x6cf9, 0x6cff, 0x6d00, 0x6d02,
- 0x6d03, 0x6d05, 0x6d06, 0x6d08, 0x6d09, 0x6d0a, 0x6d0d, 0x6d0f,
- 0x6d10, 0x6d11, 0x6d13, 0x6d14, 0x6d15, 0x6d16, 0x6d18, 0x6d1c,
- 0x6d1d, 0x6d1f, 0x6d20, 0x6d21, 0x6d22, 0x6d23, 0x6d24, 0x6d26,
- 0x6d28, 0x6d29, 0x6d2c, 0x6d2d, 0x6d2f, 0x6d30, 0x6d34, 0x6d36,
- 0x6d37, 0x6d38, 0x6d3a, 0x6d3f, 0x6d40, 0x6d42, 0x6d44, 0x6d49,
- 0x6d4c, 0x6d50, 0x6d55, 0x6d56, 0x6d57, 0x6d58, 0x6d5b, 0x6d5d,
- 0x6d5f, 0x6d61, 0x6d62, 0x6d64, 0x6d65, 0x6d67, 0x6d68, 0x6d6b,
- 0x6d6c, 0x6d6d, 0x6d70, 0x6d71, 0x6d72, 0x6d73, 0x6d75, 0x6d76,
- 0x6d79, 0x6d7a, 0x6d7b, 0x6d7d, 0x6d7e, 0x6d7f, 0x6d80, 0x6d81,
- 0x6d83, 0x6d84, 0x6d86, 0x6d87, 0x6d8a, 0x6d8b, 0x6d8d, 0x6d8f,
- 0x6d90, 0x6d92, 0x6d96, 0x6d97, 0x6d98, 0x6d99, 0x6d9a, 0x6d9c,
- 0x6da2, 0x6da5, 0x6dac, 0x6dad, 0x6db0, 0x6db1, 0x6db3, 0x6db4,
- 0x6db6, 0x6db7, 0x6db9, 0x6dba, 0x6dbb, 0x6dbc, 0x6dbd, 0x6dbe,
- 0x6dc1, 0x6dc2, 0x6dc3, 0x6dc8, 0x6dc9, 0x6dca,
- /* 0x9c */
- 0x6dcd, 0x6dce, 0x6dcf, 0x6dd0, 0x6dd2, 0x6dd3, 0x6dd4, 0x6dd5,
- 0x6dd7, 0x6dda, 0x6ddb, 0x6ddc, 0x6ddf, 0x6de2, 0x6de3, 0x6de5,
- 0x6de7, 0x6de8, 0x6de9, 0x6dea, 0x6ded, 0x6def, 0x6df0, 0x6df2,
- 0x6df4, 0x6df5, 0x6df6, 0x6df8, 0x6dfa, 0x6dfd, 0x6dfe, 0x6dff,
- 0x6e00, 0x6e01, 0x6e02, 0x6e03, 0x6e04, 0x6e06, 0x6e07, 0x6e08,
- 0x6e09, 0x6e0b, 0x6e0f, 0x6e12, 0x6e13, 0x6e15, 0x6e18, 0x6e19,
- 0x6e1b, 0x6e1c, 0x6e1e, 0x6e1f, 0x6e22, 0x6e26, 0x6e27, 0x6e28,
- 0x6e2a, 0x6e2c, 0x6e2e, 0x6e30, 0x6e31, 0x6e33, 0x6e35, 0x6e36,
- 0x6e37, 0x6e39, 0x6e3b, 0x6e3c, 0x6e3d, 0x6e3e, 0x6e3f, 0x6e40,
- 0x6e41, 0x6e42, 0x6e45, 0x6e46, 0x6e47, 0x6e48, 0x6e49, 0x6e4a,
- 0x6e4b, 0x6e4c, 0x6e4f, 0x6e50, 0x6e51, 0x6e52, 0x6e55, 0x6e57,
- 0x6e59, 0x6e5a, 0x6e5c, 0x6e5d, 0x6e5e, 0x6e60, 0x6e61, 0x6e62,
- 0x6e63, 0x6e64, 0x6e65, 0x6e66, 0x6e67, 0x6e68, 0x6e69, 0x6e6a,
- 0x6e6c, 0x6e6d, 0x6e6f, 0x6e70, 0x6e71, 0x6e72, 0x6e73, 0x6e74,
- 0x6e75, 0x6e76, 0x6e77, 0x6e78, 0x6e79, 0x6e7a, 0x6e7b, 0x6e7c,
- 0x6e7d, 0x6e80, 0x6e81, 0x6e82, 0x6e84, 0x6e87, 0x6e88, 0x6e8a,
- 0x6e8b, 0x6e8c, 0x6e8d, 0x6e8e, 0x6e91, 0x6e92, 0x6e93, 0x6e94,
- 0x6e95, 0x6e96, 0x6e97, 0x6e99, 0x6e9a, 0x6e9b, 0x6e9d, 0x6e9e,
- 0x6ea0, 0x6ea1, 0x6ea3, 0x6ea4, 0x6ea6, 0x6ea8, 0x6ea9, 0x6eab,
- 0x6eac, 0x6ead, 0x6eae, 0x6eb0, 0x6eb3, 0x6eb5, 0x6eb8, 0x6eb9,
- 0x6ebc, 0x6ebe, 0x6ebf, 0x6ec0, 0x6ec3, 0x6ec4, 0x6ec5, 0x6ec6,
- 0x6ec8, 0x6ec9, 0x6eca, 0x6ecc, 0x6ecd, 0x6ece, 0x6ed0, 0x6ed2,
- 0x6ed6, 0x6ed8, 0x6ed9, 0x6edb, 0x6edc, 0x6edd, 0x6ee3, 0x6ee7,
- 0x6eea, 0x6eeb, 0x6eec, 0x6eed, 0x6eee, 0x6eef,
- /* 0x9d */
- 0x6ef0, 0x6ef1, 0x6ef2, 0x6ef3, 0x6ef5, 0x6ef6, 0x6ef7, 0x6ef8,
- 0x6efa, 0x6efb, 0x6efc, 0x6efd, 0x6efe, 0x6eff, 0x6f00, 0x6f01,
- 0x6f03, 0x6f04, 0x6f05, 0x6f07, 0x6f08, 0x6f0a, 0x6f0b, 0x6f0c,
- 0x6f0d, 0x6f0e, 0x6f10, 0x6f11, 0x6f12, 0x6f16, 0x6f17, 0x6f18,
- 0x6f19, 0x6f1a, 0x6f1b, 0x6f1c, 0x6f1d, 0x6f1e, 0x6f1f, 0x6f21,
- 0x6f22, 0x6f23, 0x6f25, 0x6f26, 0x6f27, 0x6f28, 0x6f2c, 0x6f2e,
- 0x6f30, 0x6f32, 0x6f34, 0x6f35, 0x6f37, 0x6f38, 0x6f39, 0x6f3a,
- 0x6f3b, 0x6f3c, 0x6f3d, 0x6f3f, 0x6f40, 0x6f41, 0x6f42, 0x6f43,
- 0x6f44, 0x6f45, 0x6f48, 0x6f49, 0x6f4a, 0x6f4c, 0x6f4e, 0x6f4f,
- 0x6f50, 0x6f51, 0x6f52, 0x6f53, 0x6f54, 0x6f55, 0x6f56, 0x6f57,
- 0x6f59, 0x6f5a, 0x6f5b, 0x6f5d, 0x6f5f, 0x6f60, 0x6f61, 0x6f63,
- 0x6f64, 0x6f65, 0x6f67, 0x6f68, 0x6f69, 0x6f6a, 0x6f6b, 0x6f6c,
- 0x6f6f, 0x6f70, 0x6f71, 0x6f73, 0x6f75, 0x6f76, 0x6f77, 0x6f79,
- 0x6f7b, 0x6f7d, 0x6f7e, 0x6f7f, 0x6f80, 0x6f81, 0x6f82, 0x6f83,
- 0x6f85, 0x6f86, 0x6f87, 0x6f8a, 0x6f8b, 0x6f8f, 0x6f90, 0x6f91,
- 0x6f92, 0x6f93, 0x6f94, 0x6f95, 0x6f96, 0x6f97, 0x6f98, 0x6f99,
- 0x6f9a, 0x6f9b, 0x6f9d, 0x6f9e, 0x6f9f, 0x6fa0, 0x6fa2, 0x6fa3,
- 0x6fa4, 0x6fa5, 0x6fa6, 0x6fa8, 0x6fa9, 0x6faa, 0x6fab, 0x6fac,
- 0x6fad, 0x6fae, 0x6faf, 0x6fb0, 0x6fb1, 0x6fb2, 0x6fb4, 0x6fb5,
- 0x6fb7, 0x6fb8, 0x6fba, 0x6fbb, 0x6fbc, 0x6fbd, 0x6fbe, 0x6fbf,
- 0x6fc1, 0x6fc3, 0x6fc4, 0x6fc5, 0x6fc6, 0x6fc7, 0x6fc8, 0x6fca,
- 0x6fcb, 0x6fcc, 0x6fcd, 0x6fce, 0x6fcf, 0x6fd0, 0x6fd3, 0x6fd4,
- 0x6fd5, 0x6fd6, 0x6fd7, 0x6fd8, 0x6fd9, 0x6fda, 0x6fdb, 0x6fdc,
- 0x6fdd, 0x6fdf, 0x6fe2, 0x6fe3, 0x6fe4, 0x6fe5,
- /* 0x9e */
- 0x6fe6, 0x6fe7, 0x6fe8, 0x6fe9, 0x6fea, 0x6feb, 0x6fec, 0x6fed,
- 0x6ff0, 0x6ff1, 0x6ff2, 0x6ff3, 0x6ff4, 0x6ff5, 0x6ff6, 0x6ff7,
- 0x6ff8, 0x6ff9, 0x6ffa, 0x6ffb, 0x6ffc, 0x6ffd, 0x6ffe, 0x6fff,
- 0x7000, 0x7001, 0x7002, 0x7003, 0x7004, 0x7005, 0x7006, 0x7007,
- 0x7008, 0x7009, 0x700a, 0x700b, 0x700c, 0x700d, 0x700e, 0x700f,
- 0x7010, 0x7012, 0x7013, 0x7014, 0x7015, 0x7016, 0x7017, 0x7018,
- 0x7019, 0x701c, 0x701d, 0x701e, 0x701f, 0x7020, 0x7021, 0x7022,
- 0x7024, 0x7025, 0x7026, 0x7027, 0x7028, 0x7029, 0x702a, 0x702b,
- 0x702c, 0x702d, 0x702e, 0x702f, 0x7030, 0x7031, 0x7032, 0x7033,
- 0x7034, 0x7036, 0x7037, 0x7038, 0x703a, 0x703b, 0x703c, 0x703d,
- 0x703e, 0x703f, 0x7040, 0x7041, 0x7042, 0x7043, 0x7044, 0x7045,
- 0x7046, 0x7047, 0x7048, 0x7049, 0x704a, 0x704b, 0x704d, 0x704e,
- 0x7050, 0x7051, 0x7052, 0x7053, 0x7054, 0x7055, 0x7056, 0x7057,
- 0x7058, 0x7059, 0x705a, 0x705b, 0x705c, 0x705d, 0x705f, 0x7060,
- 0x7061, 0x7062, 0x7063, 0x7064, 0x7065, 0x7066, 0x7067, 0x7068,
- 0x7069, 0x706a, 0x706e, 0x7071, 0x7072, 0x7073, 0x7074, 0x7077,
- 0x7079, 0x707a, 0x707b, 0x707d, 0x7081, 0x7082, 0x7083, 0x7084,
- 0x7086, 0x7087, 0x7088, 0x708b, 0x708c, 0x708d, 0x708f, 0x7090,
- 0x7091, 0x7093, 0x7097, 0x7098, 0x709a, 0x709b, 0x709e, 0x709f,
- 0x70a0, 0x70a1, 0x70a2, 0x70a3, 0x70a4, 0x70a5, 0x70a6, 0x70a7,
- 0x70a8, 0x70a9, 0x70aa, 0x70b0, 0x70b2, 0x70b4, 0x70b5, 0x70b6,
- 0x70ba, 0x70be, 0x70bf, 0x70c4, 0x70c5, 0x70c6, 0x70c7, 0x70c9,
- 0x70cb, 0x70cc, 0x70cd, 0x70ce, 0x70cf, 0x70d0, 0x70d1, 0x70d2,
- 0x70d3, 0x70d4, 0x70d5, 0x70d6, 0x70d7, 0x70da,
- /* 0x9f */
- 0x70dc, 0x70dd, 0x70de, 0x70e0, 0x70e1, 0x70e2, 0x70e3, 0x70e5,
- 0x70ea, 0x70ee, 0x70f0, 0x70f1, 0x70f2, 0x70f3, 0x70f4, 0x70f5,
- 0x70f6, 0x70f8, 0x70fa, 0x70fb, 0x70fc, 0x70fe, 0x70ff, 0x7100,
- 0x7101, 0x7102, 0x7103, 0x7104, 0x7105, 0x7106, 0x7107, 0x7108,
- 0x710b, 0x710c, 0x710d, 0x710e, 0x710f, 0x7111, 0x7112, 0x7114,
- 0x7117, 0x711b, 0x711c, 0x711d, 0x711e, 0x711f, 0x7120, 0x7121,
- 0x7122, 0x7123, 0x7124, 0x7125, 0x7127, 0x7128, 0x7129, 0x712a,
- 0x712b, 0x712c, 0x712d, 0x712e, 0x7132, 0x7133, 0x7134, 0x7135,
- 0x7137, 0x7138, 0x7139, 0x713a, 0x713b, 0x713c, 0x713d, 0x713e,
- 0x713f, 0x7140, 0x7141, 0x7142, 0x7143, 0x7144, 0x7146, 0x7147,
- 0x7148, 0x7149, 0x714b, 0x714d, 0x714f, 0x7150, 0x7151, 0x7152,
- 0x7153, 0x7154, 0x7155, 0x7156, 0x7157, 0x7158, 0x7159, 0x715a,
- 0x715b, 0x715d, 0x715f, 0x7160, 0x7161, 0x7162, 0x7163, 0x7165,
- 0x7169, 0x716a, 0x716b, 0x716c, 0x716d, 0x716f, 0x7170, 0x7171,
- 0x7174, 0x7175, 0x7176, 0x7177, 0x7179, 0x717b, 0x717c, 0x717e,
- 0x717f, 0x7180, 0x7181, 0x7182, 0x7183, 0x7185, 0x7186, 0x7187,
- 0x7188, 0x7189, 0x718b, 0x718c, 0x718d, 0x718e, 0x7190, 0x7191,
- 0x7192, 0x7193, 0x7195, 0x7196, 0x7197, 0x719a, 0x719b, 0x719c,
- 0x719d, 0x719e, 0x71a1, 0x71a2, 0x71a3, 0x71a4, 0x71a5, 0x71a6,
- 0x71a7, 0x71a9, 0x71aa, 0x71ab, 0x71ad, 0x71ae, 0x71af, 0x71b0,
- 0x71b1, 0x71b2, 0x71b4, 0x71b6, 0x71b7, 0x71b8, 0x71ba, 0x71bb,
- 0x71bc, 0x71bd, 0x71be, 0x71bf, 0x71c0, 0x71c1, 0x71c2, 0x71c4,
- 0x71c5, 0x71c6, 0x71c7, 0x71c8, 0x71c9, 0x71ca, 0x71cb, 0x71cc,
- 0x71cd, 0x71cf, 0x71d0, 0x71d1, 0x71d2, 0x71d3,
- /* 0xa0 */
- 0x71d6, 0x71d7, 0x71d8, 0x71d9, 0x71da, 0x71db, 0x71dc, 0x71dd,
- 0x71de, 0x71df, 0x71e1, 0x71e2, 0x71e3, 0x71e4, 0x71e6, 0x71e8,
- 0x71e9, 0x71ea, 0x71eb, 0x71ec, 0x71ed, 0x71ef, 0x71f0, 0x71f1,
- 0x71f2, 0x71f3, 0x71f4, 0x71f5, 0x71f6, 0x71f7, 0x71f8, 0x71fa,
- 0x71fb, 0x71fc, 0x71fd, 0x71fe, 0x71ff, 0x7200, 0x7201, 0x7202,
- 0x7203, 0x7204, 0x7205, 0x7207, 0x7208, 0x7209, 0x720a, 0x720b,
- 0x720c, 0x720d, 0x720e, 0x720f, 0x7210, 0x7211, 0x7212, 0x7213,
- 0x7214, 0x7215, 0x7216, 0x7217, 0x7218, 0x7219, 0x721a, 0x721b,
- 0x721c, 0x721e, 0x721f, 0x7220, 0x7221, 0x7222, 0x7223, 0x7224,
- 0x7225, 0x7226, 0x7227, 0x7229, 0x722b, 0x722d, 0x722e, 0x722f,
- 0x7232, 0x7233, 0x7234, 0x723a, 0x723c, 0x723e, 0x7240, 0x7241,
- 0x7242, 0x7243, 0x7244, 0x7245, 0x7246, 0x7249, 0x724a, 0x724b,
- 0x724e, 0x724f, 0x7250, 0x7251, 0x7253, 0x7254, 0x7255, 0x7257,
- 0x7258, 0x725a, 0x725c, 0x725e, 0x7260, 0x7263, 0x7264, 0x7265,
- 0x7268, 0x726a, 0x726b, 0x726c, 0x726d, 0x7270, 0x7271, 0x7273,
- 0x7274, 0x7276, 0x7277, 0x7278, 0x727b, 0x727c, 0x727d, 0x7282,
- 0x7283, 0x7285, 0x7286, 0x7287, 0x7288, 0x7289, 0x728c, 0x728e,
- 0x7290, 0x7291, 0x7293, 0x7294, 0x7295, 0x7296, 0x7297, 0x7298,
- 0x7299, 0x729a, 0x729b, 0x729c, 0x729d, 0x729e, 0x72a0, 0x72a1,
- 0x72a2, 0x72a3, 0x72a4, 0x72a5, 0x72a6, 0x72a7, 0x72a8, 0x72a9,
- 0x72aa, 0x72ab, 0x72ae, 0x72b1, 0x72b2, 0x72b3, 0x72b5, 0x72ba,
- 0x72bb, 0x72bc, 0x72bd, 0x72be, 0x72bf, 0x72c0, 0x72c5, 0x72c6,
- 0x72c7, 0x72c9, 0x72ca, 0x72cb, 0x72cc, 0x72cf, 0x72d1, 0x72d3,
- 0x72d4, 0x72d5, 0x72d6, 0x72d8, 0x72da, 0x72db,
- /* 0xa1 */
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0x3000, 0x3001, 0x3002, 0x00b7, 0x02c9, 0x02c7, 0x00a8, 0x3003,
- 0x3005, 0x2014, 0xff5e, 0x2016, 0x2026, 0x2018, 0x2019, 0x201c,
- 0x201d, 0x3014, 0x3015, 0x3008, 0x3009, 0x300a, 0x300b, 0x300c,
- 0x300d, 0x300e, 0x300f, 0x3016, 0x3017, 0x3010, 0x3011, 0x00b1,
- 0x00d7, 0x00f7, 0x2236, 0x2227, 0x2228, 0x2211, 0x220f, 0x222a,
- 0x2229, 0x2208, 0x2237, 0x221a, 0x22a5, 0x2225, 0x2220, 0x2312,
- 0x2299, 0x222b, 0x222e, 0x2261, 0x224c, 0x2248, 0x223d, 0x221d,
- 0x2260, 0x226e, 0x226f, 0x2264, 0x2265, 0x221e, 0x2235, 0x2234,
- 0x2642, 0x2640, 0x00b0, 0x2032, 0x2033, 0x2103, 0xff04, 0x00a4,
- 0xffe0, 0xffe1, 0x2030, 0x00a7, 0x2116, 0x2606, 0x2605, 0x25cb,
- 0x25cf, 0x25ce, 0x25c7, 0x25c6, 0x25a1, 0x25a0, 0x25b3, 0x25b2,
- 0x203b, 0x2192, 0x2190, 0x2191, 0x2193, 0x3013,
- /* 0xa2 */
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0x2170, 0x2171, 0x2172, 0x2173, 0x2174, 0x2175, 0x2176, 0x2177,
- 0x2178, 0x2179, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0x2488, 0x2489, 0x248a, 0x248b, 0x248c, 0x248d, 0x248e, 0x248f,
- 0x2490, 0x2491, 0x2492, 0x2493, 0x2494, 0x2495, 0x2496, 0x2497,
- 0x2498, 0x2499, 0x249a, 0x249b, 0x2474, 0x2475, 0x2476, 0x2477,
- 0x2478, 0x2479, 0x247a, 0x247b, 0x247c, 0x247d, 0x247e, 0x247f,
- 0x2480, 0x2481, 0x2482, 0x2483, 0x2484, 0x2485, 0x2486, 0x2487,
- 0x2460, 0x2461, 0x2462, 0x2463, 0x2464, 0x2465, 0x2466, 0x2467,
- 0x2468, 0x2469, 0xfffd, 0xfffd, 0x3220, 0x3221, 0x3222, 0x3223,
- 0x3224, 0x3225, 0x3226, 0x3227, 0x3228, 0x3229, 0xfffd, 0xfffd,
- 0x2160, 0x2161, 0x2162, 0x2163, 0x2164, 0x2165, 0x2166, 0x2167,
- 0x2168, 0x2169, 0x216a, 0x216b, 0xfffd, 0xfffd,
- /* 0xa3 */
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xff01, 0xff02, 0xff03, 0xffe5, 0xff05, 0xff06, 0xff07, 0xff08,
- 0xff09, 0xff0a, 0xff0b, 0xff0c, 0xff0d, 0xff0e, 0xff0f, 0xff10,
- 0xff11, 0xff12, 0xff13, 0xff14, 0xff15, 0xff16, 0xff17, 0xff18,
- 0xff19, 0xff1a, 0xff1b, 0xff1c, 0xff1d, 0xff1e, 0xff1f, 0xff20,
- 0xff21, 0xff22, 0xff23, 0xff24, 0xff25, 0xff26, 0xff27, 0xff28,
- 0xff29, 0xff2a, 0xff2b, 0xff2c, 0xff2d, 0xff2e, 0xff2f, 0xff30,
- 0xff31, 0xff32, 0xff33, 0xff34, 0xff35, 0xff36, 0xff37, 0xff38,
- 0xff39, 0xff3a, 0xff3b, 0xff3c, 0xff3d, 0xff3e, 0xff3f, 0xff40,
- 0xff41, 0xff42, 0xff43, 0xff44, 0xff45, 0xff46, 0xff47, 0xff48,
- 0xff49, 0xff4a, 0xff4b, 0xff4c, 0xff4d, 0xff4e, 0xff4f, 0xff50,
- 0xff51, 0xff52, 0xff53, 0xff54, 0xff55, 0xff56, 0xff57, 0xff58,
- 0xff59, 0xff5a, 0xff5b, 0xff5c, 0xff5d, 0xffe3,
- /* 0xa4 */
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0x3041, 0x3042, 0x3043, 0x3044, 0x3045, 0x3046, 0x3047, 0x3048,
- 0x3049, 0x304a, 0x304b, 0x304c, 0x304d, 0x304e, 0x304f, 0x3050,
- 0x3051, 0x3052, 0x3053, 0x3054, 0x3055, 0x3056, 0x3057, 0x3058,
- 0x3059, 0x305a, 0x305b, 0x305c, 0x305d, 0x305e, 0x305f, 0x3060,
- 0x3061, 0x3062, 0x3063, 0x3064, 0x3065, 0x3066, 0x3067, 0x3068,
- 0x3069, 0x306a, 0x306b, 0x306c, 0x306d, 0x306e, 0x306f, 0x3070,
- 0x3071, 0x3072, 0x3073, 0x3074, 0x3075, 0x3076, 0x3077, 0x3078,
- 0x3079, 0x307a, 0x307b, 0x307c, 0x307d, 0x307e, 0x307f, 0x3080,
- 0x3081, 0x3082, 0x3083, 0x3084, 0x3085, 0x3086, 0x3087, 0x3088,
- 0x3089, 0x308a, 0x308b, 0x308c, 0x308d, 0x308e, 0x308f, 0x3090,
- 0x3091, 0x3092, 0x3093, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- /* 0xa5 */
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0x30a1, 0x30a2, 0x30a3, 0x30a4, 0x30a5, 0x30a6, 0x30a7, 0x30a8,
- 0x30a9, 0x30aa, 0x30ab, 0x30ac, 0x30ad, 0x30ae, 0x30af, 0x30b0,
- 0x30b1, 0x30b2, 0x30b3, 0x30b4, 0x30b5, 0x30b6, 0x30b7, 0x30b8,
- 0x30b9, 0x30ba, 0x30bb, 0x30bc, 0x30bd, 0x30be, 0x30bf, 0x30c0,
- 0x30c1, 0x30c2, 0x30c3, 0x30c4, 0x30c5, 0x30c6, 0x30c7, 0x30c8,
- 0x30c9, 0x30ca, 0x30cb, 0x30cc, 0x30cd, 0x30ce, 0x30cf, 0x30d0,
- 0x30d1, 0x30d2, 0x30d3, 0x30d4, 0x30d5, 0x30d6, 0x30d7, 0x30d8,
- 0x30d9, 0x30da, 0x30db, 0x30dc, 0x30dd, 0x30de, 0x30df, 0x30e0,
- 0x30e1, 0x30e2, 0x30e3, 0x30e4, 0x30e5, 0x30e6, 0x30e7, 0x30e8,
- 0x30e9, 0x30ea, 0x30eb, 0x30ec, 0x30ed, 0x30ee, 0x30ef, 0x30f0,
- 0x30f1, 0x30f2, 0x30f3, 0x30f4, 0x30f5, 0x30f6, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- /* 0xa6 */
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0x0391, 0x0392, 0x0393, 0x0394, 0x0395, 0x0396, 0x0397, 0x0398,
- 0x0399, 0x039a, 0x039b, 0x039c, 0x039d, 0x039e, 0x039f, 0x03a0,
- 0x03a1, 0x03a3, 0x03a4, 0x03a5, 0x03a6, 0x03a7, 0x03a8, 0x03a9,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0x03b1, 0x03b2, 0x03b3, 0x03b4, 0x03b5, 0x03b6, 0x03b7, 0x03b8,
- 0x03b9, 0x03ba, 0x03bb, 0x03bc, 0x03bd, 0x03be, 0x03bf, 0x03c0,
- 0x03c1, 0x03c3, 0x03c4, 0x03c5, 0x03c6, 0x03c7, 0x03c8, 0x03c9,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfe35,
- 0xfe36, 0xfe39, 0xfe3a, 0xfe3f, 0xfe40, 0xfe3d, 0xfe3e, 0xfe41,
- 0xfe42, 0xfe43, 0xfe44, 0xfffd, 0xfffd, 0xfe3b, 0xfe3c, 0xfe37,
- 0xfe38, 0xfe31, 0xfffd, 0xfe33, 0xfe34, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- /* 0xa7 */
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0x0410, 0x0411, 0x0412, 0x0413, 0x0414, 0x0415, 0x0401, 0x0416,
- 0x0417, 0x0418, 0x0419, 0x041a, 0x041b, 0x041c, 0x041d, 0x041e,
- 0x041f, 0x0420, 0x0421, 0x0422, 0x0423, 0x0424, 0x0425, 0x0426,
- 0x0427, 0x0428, 0x0429, 0x042a, 0x042b, 0x042c, 0x042d, 0x042e,
- 0x042f, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0x0430, 0x0431, 0x0432, 0x0433, 0x0434, 0x0435, 0x0451, 0x0436,
- 0x0437, 0x0438, 0x0439, 0x043a, 0x043b, 0x043c, 0x043d, 0x043e,
- 0x043f, 0x0440, 0x0441, 0x0442, 0x0443, 0x0444, 0x0445, 0x0446,
- 0x0447, 0x0448, 0x0449, 0x044a, 0x044b, 0x044c, 0x044d, 0x044e,
- 0x044f, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- /* 0xa8 */
- 0x02ca, 0x02cb, 0x02d9, 0x2013, 0x2015, 0x2025, 0x2035, 0x2105,
- 0x2109, 0x2196, 0x2197, 0x2198, 0x2199, 0x2215, 0x221f, 0x2223,
- 0x2252, 0x2266, 0x2267, 0x22bf, 0x2550, 0x2551, 0x2552, 0x2553,
- 0x2554, 0x2555, 0x2556, 0x2557, 0x2558, 0x2559, 0x255a, 0x255b,
- 0x255c, 0x255d, 0x255e, 0x255f, 0x2560, 0x2561, 0x2562, 0x2563,
- 0x2564, 0x2565, 0x2566, 0x2567, 0x2568, 0x2569, 0x256a, 0x256b,
- 0x256c, 0x256d, 0x256e, 0x256f, 0x2570, 0x2571, 0x2572, 0x2573,
- 0x2581, 0x2582, 0x2583, 0x2584, 0x2585, 0x2586, 0x2587, 0x2588,
- 0x2589, 0x258a, 0x258b, 0x258c, 0x258d, 0x258e, 0x258f, 0x2593,
- 0x2594, 0x2595, 0x25bc, 0x25bd, 0x25e2, 0x25e3, 0x25e4, 0x25e5,
- 0x2609, 0x2295, 0x3012, 0x301d, 0x301e, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0x0101, 0x00e1, 0x01ce, 0x00e0, 0x0113, 0x00e9, 0x011b, 0x00e8,
- 0x012b, 0x00ed, 0x01d0, 0x00ec, 0x014d, 0x00f3, 0x01d2, 0x00f2,
- 0x016b, 0x00fa, 0x01d4, 0x00f9, 0x01d6, 0x01d8, 0x01da, 0x01dc,
- 0x00fc, 0x00ea, 0x0251, 0xfffd, 0x0144, 0x0148, 0xfffd, 0x0261,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x3105, 0x3106, 0x3107, 0x3108,
- 0x3109, 0x310a, 0x310b, 0x310c, 0x310d, 0x310e, 0x310f, 0x3110,
- 0x3111, 0x3112, 0x3113, 0x3114, 0x3115, 0x3116, 0x3117, 0x3118,
- 0x3119, 0x311a, 0x311b, 0x311c, 0x311d, 0x311e, 0x311f, 0x3120,
- 0x3121, 0x3122, 0x3123, 0x3124, 0x3125, 0x3126, 0x3127, 0x3128,
- 0x3129, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- /* 0xa9 */
- 0x3021, 0x3022, 0x3023, 0x3024, 0x3025, 0x3026, 0x3027, 0x3028,
- 0x3029, 0x32a3, 0x338e, 0x338f, 0x339c, 0x339d, 0x339e, 0x33a1,
- 0x33c4, 0x33ce, 0x33d1, 0x33d2, 0x33d5, 0xfe30, 0xffe2, 0xffe4,
- 0xfffd, 0x2121, 0x3231, 0xfffd, 0x2010, 0xfffd, 0xfffd, 0xfffd,
- 0x30fc, 0x309b, 0x309c, 0x30fd, 0x30fe, 0x3006, 0x309d, 0x309e,
- 0xfe49, 0xfe4a, 0xfe4b, 0xfe4c, 0xfe4d, 0xfe4e, 0xfe4f, 0xfe50,
- 0xfe51, 0xfe52, 0xfe54, 0xfe55, 0xfe56, 0xfe57, 0xfe59, 0xfe5a,
- 0xfe5b, 0xfe5c, 0xfe5d, 0xfe5e, 0xfe5f, 0xfe60, 0xfe61, 0xfe62,
- 0xfe63, 0xfe64, 0xfe65, 0xfe66, 0xfe68, 0xfe69, 0xfe6a, 0xfe6b,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x3007, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0x2500, 0x2501, 0x2502, 0x2503, 0x2504,
- 0x2505, 0x2506, 0x2507, 0x2508, 0x2509, 0x250a, 0x250b, 0x250c,
- 0x250d, 0x250e, 0x250f, 0x2510, 0x2511, 0x2512, 0x2513, 0x2514,
- 0x2515, 0x2516, 0x2517, 0x2518, 0x2519, 0x251a, 0x251b, 0x251c,
- 0x251d, 0x251e, 0x251f, 0x2520, 0x2521, 0x2522, 0x2523, 0x2524,
- 0x2525, 0x2526, 0x2527, 0x2528, 0x2529, 0x252a, 0x252b, 0x252c,
- 0x252d, 0x252e, 0x252f, 0x2530, 0x2531, 0x2532, 0x2533, 0x2534,
- 0x2535, 0x2536, 0x2537, 0x2538, 0x2539, 0x253a, 0x253b, 0x253c,
- 0x253d, 0x253e, 0x253f, 0x2540, 0x2541, 0x2542, 0x2543, 0x2544,
- 0x2545, 0x2546, 0x2547, 0x2548, 0x2549, 0x254a, 0x254b, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- /* 0xaa */
- 0x72dc, 0x72dd, 0x72df, 0x72e2, 0x72e3, 0x72e4, 0x72e5, 0x72e6,
- 0x72e7, 0x72ea, 0x72eb, 0x72f5, 0x72f6, 0x72f9, 0x72fd, 0x72fe,
- 0x72ff, 0x7300, 0x7302, 0x7304, 0x7305, 0x7306, 0x7307, 0x7308,
- 0x7309, 0x730b, 0x730c, 0x730d, 0x730f, 0x7310, 0x7311, 0x7312,
- 0x7314, 0x7318, 0x7319, 0x731a, 0x731f, 0x7320, 0x7323, 0x7324,
- 0x7326, 0x7327, 0x7328, 0x732d, 0x732f, 0x7330, 0x7332, 0x7333,
- 0x7335, 0x7336, 0x733a, 0x733b, 0x733c, 0x733d, 0x7340, 0x7341,
- 0x7342, 0x7343, 0x7344, 0x7345, 0x7346, 0x7347, 0x7348, 0x7349,
- 0x734a, 0x734b, 0x734c, 0x734e, 0x734f, 0x7351, 0x7353, 0x7354,
- 0x7355, 0x7356, 0x7358, 0x7359, 0x735a, 0x735b, 0x735c, 0x735d,
- 0x735e, 0x735f, 0x7361, 0x7362, 0x7363, 0x7364, 0x7365, 0x7366,
- 0x7367, 0x7368, 0x7369, 0x736a, 0x736b, 0x736e, 0x7370, 0x7371,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- /* 0xab */
- 0x7372, 0x7373, 0x7374, 0x7375, 0x7376, 0x7377, 0x7378, 0x7379,
- 0x737a, 0x737b, 0x737c, 0x737d, 0x737f, 0x7380, 0x7381, 0x7382,
- 0x7383, 0x7385, 0x7386, 0x7388, 0x738a, 0x738c, 0x738d, 0x738f,
- 0x7390, 0x7392, 0x7393, 0x7394, 0x7395, 0x7397, 0x7398, 0x7399,
- 0x739a, 0x739c, 0x739d, 0x739e, 0x73a0, 0x73a1, 0x73a3, 0x73a4,
- 0x73a5, 0x73a6, 0x73a7, 0x73a8, 0x73aa, 0x73ac, 0x73ad, 0x73b1,
- 0x73b4, 0x73b5, 0x73b6, 0x73b8, 0x73b9, 0x73bc, 0x73bd, 0x73be,
- 0x73bf, 0x73c1, 0x73c3, 0x73c4, 0x73c5, 0x73c6, 0x73c7, 0x73cb,
- 0x73cc, 0x73ce, 0x73d2, 0x73d3, 0x73d4, 0x73d5, 0x73d6, 0x73d7,
- 0x73d8, 0x73da, 0x73db, 0x73dc, 0x73dd, 0x73df, 0x73e1, 0x73e2,
- 0x73e3, 0x73e4, 0x73e6, 0x73e8, 0x73ea, 0x73eb, 0x73ec, 0x73ee,
- 0x73ef, 0x73f0, 0x73f1, 0x73f3, 0x73f4, 0x73f5, 0x73f6, 0x73f7,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- /* 0xac */
- 0x73f8, 0x73f9, 0x73fa, 0x73fb, 0x73fc, 0x73fd, 0x73fe, 0x73ff,
- 0x7400, 0x7401, 0x7402, 0x7404, 0x7407, 0x7408, 0x740b, 0x740c,
- 0x740d, 0x740e, 0x7411, 0x7412, 0x7413, 0x7414, 0x7415, 0x7416,
- 0x7417, 0x7418, 0x7419, 0x741c, 0x741d, 0x741e, 0x741f, 0x7420,
- 0x7421, 0x7423, 0x7424, 0x7427, 0x7429, 0x742b, 0x742d, 0x742f,
- 0x7431, 0x7432, 0x7437, 0x7438, 0x7439, 0x743a, 0x743b, 0x743d,
- 0x743e, 0x743f, 0x7440, 0x7442, 0x7443, 0x7444, 0x7445, 0x7446,
- 0x7447, 0x7448, 0x7449, 0x744a, 0x744b, 0x744c, 0x744d, 0x744e,
- 0x744f, 0x7450, 0x7451, 0x7452, 0x7453, 0x7454, 0x7456, 0x7458,
- 0x745d, 0x7460, 0x7461, 0x7462, 0x7463, 0x7464, 0x7465, 0x7466,
- 0x7467, 0x7468, 0x7469, 0x746a, 0x746b, 0x746c, 0x746e, 0x746f,
- 0x7471, 0x7472, 0x7473, 0x7474, 0x7475, 0x7478, 0x7479, 0x747a,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- /* 0xad */
- 0x747b, 0x747c, 0x747d, 0x747f, 0x7482, 0x7484, 0x7485, 0x7486,
- 0x7488, 0x7489, 0x748a, 0x748c, 0x748d, 0x748f, 0x7491, 0x7492,
- 0x7493, 0x7494, 0x7495, 0x7496, 0x7497, 0x7498, 0x7499, 0x749a,
- 0x749b, 0x749d, 0x749f, 0x74a0, 0x74a1, 0x74a2, 0x74a3, 0x74a4,
- 0x74a5, 0x74a6, 0x74aa, 0x74ab, 0x74ac, 0x74ad, 0x74ae, 0x74af,
- 0x74b0, 0x74b1, 0x74b2, 0x74b3, 0x74b4, 0x74b5, 0x74b6, 0x74b7,
- 0x74b8, 0x74b9, 0x74bb, 0x74bc, 0x74bd, 0x74be, 0x74bf, 0x74c0,
- 0x74c1, 0x74c2, 0x74c3, 0x74c4, 0x74c5, 0x74c6, 0x74c7, 0x74c8,
- 0x74c9, 0x74ca, 0x74cb, 0x74cc, 0x74cd, 0x74ce, 0x74cf, 0x74d0,
- 0x74d1, 0x74d3, 0x74d4, 0x74d5, 0x74d6, 0x74d7, 0x74d8, 0x74d9,
- 0x74da, 0x74db, 0x74dd, 0x74df, 0x74e1, 0x74e5, 0x74e7, 0x74e8,
- 0x74e9, 0x74ea, 0x74eb, 0x74ec, 0x74ed, 0x74f0, 0x74f1, 0x74f2,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- /* 0xae */
- 0x74f3, 0x74f5, 0x74f8, 0x74f9, 0x74fa, 0x74fb, 0x74fc, 0x74fd,
- 0x74fe, 0x7500, 0x7501, 0x7502, 0x7503, 0x7505, 0x7506, 0x7507,
- 0x7508, 0x7509, 0x750a, 0x750b, 0x750c, 0x750e, 0x7510, 0x7512,
- 0x7514, 0x7515, 0x7516, 0x7517, 0x751b, 0x751d, 0x751e, 0x7520,
- 0x7521, 0x7522, 0x7523, 0x7524, 0x7526, 0x7527, 0x752a, 0x752e,
- 0x7534, 0x7536, 0x7539, 0x753c, 0x753d, 0x753f, 0x7541, 0x7542,
- 0x7543, 0x7544, 0x7546, 0x7547, 0x7549, 0x754a, 0x754d, 0x7550,
- 0x7551, 0x7552, 0x7553, 0x7555, 0x7556, 0x7557, 0x7558, 0x755d,
- 0x755e, 0x755f, 0x7560, 0x7561, 0x7562, 0x7563, 0x7564, 0x7567,
- 0x7568, 0x7569, 0x756b, 0x756c, 0x756d, 0x756e, 0x756f, 0x7570,
- 0x7571, 0x7573, 0x7575, 0x7576, 0x7577, 0x757a, 0x757b, 0x757c,
- 0x757d, 0x757e, 0x7580, 0x7581, 0x7582, 0x7584, 0x7585, 0x7587,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- /* 0xaf */
- 0x7588, 0x7589, 0x758a, 0x758c, 0x758d, 0x758e, 0x7590, 0x7593,
- 0x7595, 0x7598, 0x759b, 0x759c, 0x759e, 0x75a2, 0x75a6, 0x75a7,
- 0x75a8, 0x75a9, 0x75aa, 0x75ad, 0x75b6, 0x75b7, 0x75ba, 0x75bb,
- 0x75bf, 0x75c0, 0x75c1, 0x75c6, 0x75cb, 0x75cc, 0x75ce, 0x75cf,
- 0x75d0, 0x75d1, 0x75d3, 0x75d7, 0x75d9, 0x75da, 0x75dc, 0x75dd,
- 0x75df, 0x75e0, 0x75e1, 0x75e5, 0x75e9, 0x75ec, 0x75ed, 0x75ee,
- 0x75ef, 0x75f2, 0x75f3, 0x75f5, 0x75f6, 0x75f7, 0x75f8, 0x75fa,
- 0x75fb, 0x75fd, 0x75fe, 0x7602, 0x7604, 0x7606, 0x7607, 0x7608,
- 0x7609, 0x760b, 0x760d, 0x760e, 0x760f, 0x7611, 0x7612, 0x7613,
- 0x7614, 0x7616, 0x761a, 0x761c, 0x761d, 0x761e, 0x7621, 0x7623,
- 0x7627, 0x7628, 0x762c, 0x762e, 0x762f, 0x7631, 0x7632, 0x7636,
- 0x7637, 0x7639, 0x763a, 0x763b, 0x763d, 0x7641, 0x7642, 0x7644,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- /* 0xb0 */
- 0x7645, 0x7646, 0x7647, 0x7648, 0x7649, 0x764a, 0x764b, 0x764e,
- 0x764f, 0x7650, 0x7651, 0x7652, 0x7653, 0x7655, 0x7657, 0x7658,
- 0x7659, 0x765a, 0x765b, 0x765d, 0x765f, 0x7660, 0x7661, 0x7662,
- 0x7664, 0x7665, 0x7666, 0x7667, 0x7668, 0x7669, 0x766a, 0x766c,
- 0x766d, 0x766e, 0x7670, 0x7671, 0x7672, 0x7673, 0x7674, 0x7675,
- 0x7676, 0x7677, 0x7679, 0x767a, 0x767c, 0x767f, 0x7680, 0x7681,
- 0x7683, 0x7685, 0x7689, 0x768a, 0x768c, 0x768d, 0x768f, 0x7690,
- 0x7692, 0x7694, 0x7695, 0x7697, 0x7698, 0x769a, 0x769b, 0x769c,
- 0x769d, 0x769e, 0x769f, 0x76a0, 0x76a1, 0x76a2, 0x76a3, 0x76a5,
- 0x76a6, 0x76a7, 0x76a8, 0x76a9, 0x76aa, 0x76ab, 0x76ac, 0x76ad,
- 0x76af, 0x76b0, 0x76b3, 0x76b5, 0x76b6, 0x76b7, 0x76b8, 0x76b9,
- 0x76ba, 0x76bb, 0x76bc, 0x76bd, 0x76be, 0x76c0, 0x76c1, 0x76c3,
- 0x554a, 0x963f, 0x57c3, 0x6328, 0x54ce, 0x5509, 0x54c0, 0x7691,
- 0x764c, 0x853c, 0x77ee, 0x827e, 0x788d, 0x7231, 0x9698, 0x978d,
- 0x6c28, 0x5b89, 0x4ffa, 0x6309, 0x6697, 0x5cb8, 0x80fa, 0x6848,
- 0x80ae, 0x6602, 0x76ce, 0x51f9, 0x6556, 0x71ac, 0x7ff1, 0x8884,
- 0x50b2, 0x5965, 0x61ca, 0x6fb3, 0x82ad, 0x634c, 0x6252, 0x53ed,
- 0x5427, 0x7b06, 0x516b, 0x75a4, 0x5df4, 0x62d4, 0x8dcb, 0x9776,
- 0x628a, 0x8019, 0x575d, 0x9738, 0x7f62, 0x7238, 0x767d, 0x67cf,
- 0x767e, 0x6446, 0x4f70, 0x8d25, 0x62dc, 0x7a17, 0x6591, 0x73ed,
- 0x642c, 0x6273, 0x822c, 0x9881, 0x677f, 0x7248, 0x626e, 0x62cc,
- 0x4f34, 0x74e3, 0x534a, 0x529e, 0x7eca, 0x90a6, 0x5e2e, 0x6886,
- 0x699c, 0x8180, 0x7ed1, 0x68d2, 0x78c5, 0x868c, 0x9551, 0x508d,
- 0x8c24, 0x82de, 0x80de, 0x5305, 0x8912, 0x5265,
- /* 0xb1 */
- 0x76c4, 0x76c7, 0x76c9, 0x76cb, 0x76cc, 0x76d3, 0x76d5, 0x76d9,
- 0x76da, 0x76dc, 0x76dd, 0x76de, 0x76e0, 0x76e1, 0x76e2, 0x76e3,
- 0x76e4, 0x76e6, 0x76e7, 0x76e8, 0x76e9, 0x76ea, 0x76eb, 0x76ec,
- 0x76ed, 0x76f0, 0x76f3, 0x76f5, 0x76f6, 0x76f7, 0x76fa, 0x76fb,
- 0x76fd, 0x76ff, 0x7700, 0x7702, 0x7703, 0x7705, 0x7706, 0x770a,
- 0x770c, 0x770e, 0x770f, 0x7710, 0x7711, 0x7712, 0x7713, 0x7714,
- 0x7715, 0x7716, 0x7717, 0x7718, 0x771b, 0x771c, 0x771d, 0x771e,
- 0x7721, 0x7723, 0x7724, 0x7725, 0x7727, 0x772a, 0x772b, 0x772c,
- 0x772e, 0x7730, 0x7731, 0x7732, 0x7733, 0x7734, 0x7739, 0x773b,
- 0x773d, 0x773e, 0x773f, 0x7742, 0x7744, 0x7745, 0x7746, 0x7748,
- 0x7749, 0x774a, 0x774b, 0x774c, 0x774d, 0x774e, 0x774f, 0x7752,
- 0x7753, 0x7754, 0x7755, 0x7756, 0x7757, 0x7758, 0x7759, 0x775c,
- 0x8584, 0x96f9, 0x4fdd, 0x5821, 0x9971, 0x5b9d, 0x62b1, 0x62a5,
- 0x66b4, 0x8c79, 0x9c8d, 0x7206, 0x676f, 0x7891, 0x60b2, 0x5351,
- 0x5317, 0x8f88, 0x80cc, 0x8d1d, 0x94a1, 0x500d, 0x72c8, 0x5907,
- 0x60eb, 0x7119, 0x88ab, 0x5954, 0x82ef, 0x672c, 0x7b28, 0x5d29,
- 0x7ef7, 0x752d, 0x6cf5, 0x8e66, 0x8ff8, 0x903c, 0x9f3b, 0x6bd4,
- 0x9119, 0x7b14, 0x5f7c, 0x78a7, 0x84d6, 0x853d, 0x6bd5, 0x6bd9,
- 0x6bd6, 0x5e01, 0x5e87, 0x75f9, 0x95ed, 0x655d, 0x5f0a, 0x5fc5,
- 0x8f9f, 0x58c1, 0x81c2, 0x907f, 0x965b, 0x97ad, 0x8fb9, 0x7f16,
- 0x8d2c, 0x6241, 0x4fbf, 0x53d8, 0x535e, 0x8fa8, 0x8fa9, 0x8fab,
- 0x904d, 0x6807, 0x5f6a, 0x8198, 0x8868, 0x9cd6, 0x618b, 0x522b,
- 0x762a, 0x5f6c, 0x658c, 0x6fd2, 0x6ee8, 0x5bbe, 0x6448, 0x5175,
- 0x51b0, 0x67c4, 0x4e19, 0x79c9, 0x997c, 0x70b3,
- /* 0xb2 */
- 0x775d, 0x775e, 0x775f, 0x7760, 0x7764, 0x7767, 0x7769, 0x776a,
- 0x776d, 0x776e, 0x776f, 0x7770, 0x7771, 0x7772, 0x7773, 0x7774,
- 0x7775, 0x7776, 0x7777, 0x7778, 0x777a, 0x777b, 0x777c, 0x7781,
- 0x7782, 0x7783, 0x7786, 0x7787, 0x7788, 0x7789, 0x778a, 0x778b,
- 0x778f, 0x7790, 0x7793, 0x7794, 0x7795, 0x7796, 0x7797, 0x7798,
- 0x7799, 0x779a, 0x779b, 0x779c, 0x779d, 0x779e, 0x77a1, 0x77a3,
- 0x77a4, 0x77a6, 0x77a8, 0x77ab, 0x77ad, 0x77ae, 0x77af, 0x77b1,
- 0x77b2, 0x77b4, 0x77b6, 0x77b7, 0x77b8, 0x77b9, 0x77ba, 0x77bc,
- 0x77be, 0x77c0, 0x77c1, 0x77c2, 0x77c3, 0x77c4, 0x77c5, 0x77c6,
- 0x77c7, 0x77c8, 0x77c9, 0x77ca, 0x77cb, 0x77cc, 0x77ce, 0x77cf,
- 0x77d0, 0x77d1, 0x77d2, 0x77d3, 0x77d4, 0x77d5, 0x77d6, 0x77d8,
- 0x77d9, 0x77da, 0x77dd, 0x77de, 0x77df, 0x77e0, 0x77e1, 0x77e4,
- 0x75c5, 0x5e76, 0x73bb, 0x83e0, 0x64ad, 0x62e8, 0x94b5, 0x6ce2,
- 0x535a, 0x52c3, 0x640f, 0x94c2, 0x7b94, 0x4f2f, 0x5e1b, 0x8236,
- 0x8116, 0x818a, 0x6e24, 0x6cca, 0x9a73, 0x6355, 0x535c, 0x54fa,
- 0x8865, 0x57e0, 0x4e0d, 0x5e03, 0x6b65, 0x7c3f, 0x90e8, 0x6016,
- 0x64e6, 0x731c, 0x88c1, 0x6750, 0x624d, 0x8d22, 0x776c, 0x8e29,
- 0x91c7, 0x5f69, 0x83dc, 0x8521, 0x9910, 0x53c2, 0x8695, 0x6b8b,
- 0x60ed, 0x60e8, 0x707f, 0x82cd, 0x8231, 0x4ed3, 0x6ca7, 0x85cf,
- 0x64cd, 0x7cd9, 0x69fd, 0x66f9, 0x8349, 0x5395, 0x7b56, 0x4fa7,
- 0x518c, 0x6d4b, 0x5c42, 0x8e6d, 0x63d2, 0x53c9, 0x832c, 0x8336,
- 0x67e5, 0x78b4, 0x643d, 0x5bdf, 0x5c94, 0x5dee, 0x8be7, 0x62c6,
- 0x67f4, 0x8c7a, 0x6400, 0x63ba, 0x8749, 0x998b, 0x8c17, 0x7f20,
- 0x94f2, 0x4ea7, 0x9610, 0x98a4, 0x660c, 0x7316,
- /* 0xb3 */
- 0x77e6, 0x77e8, 0x77ea, 0x77ef, 0x77f0, 0x77f1, 0x77f2, 0x77f4,
- 0x77f5, 0x77f7, 0x77f9, 0x77fa, 0x77fb, 0x77fc, 0x7803, 0x7804,
- 0x7805, 0x7806, 0x7807, 0x7808, 0x780a, 0x780b, 0x780e, 0x780f,
- 0x7810, 0x7813, 0x7815, 0x7819, 0x781b, 0x781e, 0x7820, 0x7821,
- 0x7822, 0x7824, 0x7828, 0x782a, 0x782b, 0x782e, 0x782f, 0x7831,
- 0x7832, 0x7833, 0x7835, 0x7836, 0x783d, 0x783f, 0x7841, 0x7842,
- 0x7843, 0x7844, 0x7846, 0x7848, 0x7849, 0x784a, 0x784b, 0x784d,
- 0x784f, 0x7851, 0x7853, 0x7854, 0x7858, 0x7859, 0x785a, 0x785b,
- 0x785c, 0x785e, 0x785f, 0x7860, 0x7861, 0x7862, 0x7863, 0x7864,
- 0x7865, 0x7866, 0x7867, 0x7868, 0x7869, 0x786f, 0x7870, 0x7871,
- 0x7872, 0x7873, 0x7874, 0x7875, 0x7876, 0x7878, 0x7879, 0x787a,
- 0x787b, 0x787d, 0x787e, 0x787f, 0x7880, 0x7881, 0x7882, 0x7883,
- 0x573a, 0x5c1d, 0x5e38, 0x957f, 0x507f, 0x80a0, 0x5382, 0x655e,
- 0x7545, 0x5531, 0x5021, 0x8d85, 0x6284, 0x949e, 0x671d, 0x5632,
- 0x6f6e, 0x5de2, 0x5435, 0x7092, 0x8f66, 0x626f, 0x64a4, 0x63a3,
- 0x5f7b, 0x6f88, 0x90f4, 0x81e3, 0x8fb0, 0x5c18, 0x6668, 0x5ff1,
- 0x6c89, 0x9648, 0x8d81, 0x886c, 0x6491, 0x79f0, 0x57ce, 0x6a59,
- 0x6210, 0x5448, 0x4e58, 0x7a0b, 0x60e9, 0x6f84, 0x8bda, 0x627f,
- 0x901e, 0x9a8b, 0x79e4, 0x5403, 0x75f4, 0x6301, 0x5319, 0x6c60,
- 0x8fdf, 0x5f1b, 0x9a70, 0x803b, 0x9f7f, 0x4f88, 0x5c3a, 0x8d64,
- 0x7fc5, 0x65a5, 0x70bd, 0x5145, 0x51b2, 0x866b, 0x5d07, 0x5ba0,
- 0x62bd, 0x916c, 0x7574, 0x8e0c, 0x7a20, 0x6101, 0x7b79, 0x4ec7,
- 0x7ef8, 0x7785, 0x4e11, 0x81ed, 0x521d, 0x51fa, 0x6a71, 0x53a8,
- 0x8e87, 0x9504, 0x96cf, 0x6ec1, 0x9664, 0x695a,
- /* 0xb4 */
- 0x7884, 0x7885, 0x7886, 0x7888, 0x788a, 0x788b, 0x788f, 0x7890,
- 0x7892, 0x7894, 0x7895, 0x7896, 0x7899, 0x789d, 0x789e, 0x78a0,
- 0x78a2, 0x78a4, 0x78a6, 0x78a8, 0x78a9, 0x78aa, 0x78ab, 0x78ac,
- 0x78ad, 0x78ae, 0x78af, 0x78b5, 0x78b6, 0x78b7, 0x78b8, 0x78ba,
- 0x78bb, 0x78bc, 0x78bd, 0x78bf, 0x78c0, 0x78c2, 0x78c3, 0x78c4,
- 0x78c6, 0x78c7, 0x78c8, 0x78cc, 0x78cd, 0x78ce, 0x78cf, 0x78d1,
- 0x78d2, 0x78d3, 0x78d6, 0x78d7, 0x78d8, 0x78da, 0x78db, 0x78dc,
- 0x78dd, 0x78de, 0x78df, 0x78e0, 0x78e1, 0x78e2, 0x78e3, 0x78e4,
- 0x78e5, 0x78e6, 0x78e7, 0x78e9, 0x78ea, 0x78eb, 0x78ed, 0x78ee,
- 0x78ef, 0x78f0, 0x78f1, 0x78f3, 0x78f5, 0x78f6, 0x78f8, 0x78f9,
- 0x78fb, 0x78fc, 0x78fd, 0x78fe, 0x78ff, 0x7900, 0x7902, 0x7903,
- 0x7904, 0x7906, 0x7907, 0x7908, 0x7909, 0x790a, 0x790b, 0x790c,
- 0x7840, 0x50a8, 0x77d7, 0x6410, 0x89e6, 0x5904, 0x63e3, 0x5ddd,
- 0x7a7f, 0x693d, 0x4f20, 0x8239, 0x5598, 0x4e32, 0x75ae, 0x7a97,
- 0x5e62, 0x5e8a, 0x95ef, 0x521b, 0x5439, 0x708a, 0x6376, 0x9524,
- 0x5782, 0x6625, 0x693f, 0x9187, 0x5507, 0x6df3, 0x7eaf, 0x8822,
- 0x6233, 0x7ef0, 0x75b5, 0x8328, 0x78c1, 0x96cc, 0x8f9e, 0x6148,
- 0x74f7, 0x8bcd, 0x6b64, 0x523a, 0x8d50, 0x6b21, 0x806a, 0x8471,
- 0x56f1, 0x5306, 0x4ece, 0x4e1b, 0x51d1, 0x7c97, 0x918b, 0x7c07,
- 0x4fc3, 0x8e7f, 0x7be1, 0x7a9c, 0x6467, 0x5d14, 0x50ac, 0x8106,
- 0x7601, 0x7cb9, 0x6dec, 0x7fe0, 0x6751, 0x5b58, 0x5bf8, 0x78cb,
- 0x64ae, 0x6413, 0x63aa, 0x632b, 0x9519, 0x642d, 0x8fbe, 0x7b54,
- 0x7629, 0x6253, 0x5927, 0x5446, 0x6b79, 0x50a3, 0x6234, 0x5e26,
- 0x6b86, 0x4ee3, 0x8d37, 0x888b, 0x5f85, 0x902e,
- /* 0xb5 */
- 0x790d, 0x790e, 0x790f, 0x7910, 0x7911, 0x7912, 0x7914, 0x7915,
- 0x7916, 0x7917, 0x7918, 0x7919, 0x791a, 0x791b, 0x791c, 0x791d,
- 0x791f, 0x7920, 0x7921, 0x7922, 0x7923, 0x7925, 0x7926, 0x7927,
- 0x7928, 0x7929, 0x792a, 0x792b, 0x792c, 0x792d, 0x792e, 0x792f,
- 0x7930, 0x7931, 0x7932, 0x7933, 0x7935, 0x7936, 0x7937, 0x7938,
- 0x7939, 0x793d, 0x793f, 0x7942, 0x7943, 0x7944, 0x7945, 0x7947,
- 0x794a, 0x794b, 0x794c, 0x794d, 0x794e, 0x794f, 0x7950, 0x7951,
- 0x7952, 0x7954, 0x7955, 0x7958, 0x7959, 0x7961, 0x7963, 0x7964,
- 0x7966, 0x7969, 0x796a, 0x796b, 0x796c, 0x796e, 0x7970, 0x7971,
- 0x7972, 0x7973, 0x7974, 0x7975, 0x7976, 0x7979, 0x797b, 0x797c,
- 0x797d, 0x797e, 0x797f, 0x7982, 0x7983, 0x7986, 0x7987, 0x7988,
- 0x7989, 0x798b, 0x798c, 0x798d, 0x798e, 0x7990, 0x7991, 0x7992,
- 0x6020, 0x803d, 0x62c5, 0x4e39, 0x5355, 0x90f8, 0x63b8, 0x80c6,
- 0x65e6, 0x6c2e, 0x4f46, 0x60ee, 0x6de1, 0x8bde, 0x5f39, 0x86cb,
- 0x5f53, 0x6321, 0x515a, 0x8361, 0x6863, 0x5200, 0x6363, 0x8e48,
- 0x5012, 0x5c9b, 0x7977, 0x5bfc, 0x5230, 0x7a3b, 0x60bc, 0x9053,
- 0x76d7, 0x5fb7, 0x5f97, 0x7684, 0x8e6c, 0x706f, 0x767b, 0x7b49,
- 0x77aa, 0x51f3, 0x9093, 0x5824, 0x4f4e, 0x6ef4, 0x8fea, 0x654c,
- 0x7b1b, 0x72c4, 0x6da4, 0x7fdf, 0x5ae1, 0x62b5, 0x5e95, 0x5730,
- 0x8482, 0x7b2c, 0x5e1d, 0x5f1f, 0x9012, 0x7f14, 0x98a0, 0x6382,
- 0x6ec7, 0x7898, 0x70b9, 0x5178, 0x975b, 0x57ab, 0x7535, 0x4f43,
- 0x7538, 0x5e97, 0x60e6, 0x5960, 0x6dc0, 0x6bbf, 0x7889, 0x53fc,
- 0x96d5, 0x51cb, 0x5201, 0x6389, 0x540a, 0x9493, 0x8c03, 0x8dcc,
- 0x7239, 0x789f, 0x8776, 0x8fed, 0x8c0d, 0x53e0,
- /* 0xb6 */
- 0x7993, 0x7994, 0x7995, 0x7996, 0x7997, 0x7998, 0x7999, 0x799b,
- 0x799c, 0x799d, 0x799e, 0x799f, 0x79a0, 0x79a1, 0x79a2, 0x79a3,
- 0x79a4, 0x79a5, 0x79a6, 0x79a8, 0x79a9, 0x79aa, 0x79ab, 0x79ac,
- 0x79ad, 0x79ae, 0x79af, 0x79b0, 0x79b1, 0x79b2, 0x79b4, 0x79b5,
- 0x79b6, 0x79b7, 0x79b8, 0x79bc, 0x79bf, 0x79c2, 0x79c4, 0x79c5,
- 0x79c7, 0x79c8, 0x79ca, 0x79cc, 0x79ce, 0x79cf, 0x79d0, 0x79d3,
- 0x79d4, 0x79d6, 0x79d7, 0x79d9, 0x79da, 0x79db, 0x79dc, 0x79dd,
- 0x79de, 0x79e0, 0x79e1, 0x79e2, 0x79e5, 0x79e8, 0x79ea, 0x79ec,
- 0x79ee, 0x79f1, 0x79f2, 0x79f3, 0x79f4, 0x79f5, 0x79f6, 0x79f7,
- 0x79f9, 0x79fa, 0x79fc, 0x79fe, 0x79ff, 0x7a01, 0x7a04, 0x7a05,
- 0x7a07, 0x7a08, 0x7a09, 0x7a0a, 0x7a0c, 0x7a0f, 0x7a10, 0x7a11,
- 0x7a12, 0x7a13, 0x7a15, 0x7a16, 0x7a18, 0x7a19, 0x7a1b, 0x7a1c,
- 0x4e01, 0x76ef, 0x53ee, 0x9489, 0x9876, 0x9f0e, 0x952d, 0x5b9a,
- 0x8ba2, 0x4e22, 0x4e1c, 0x51ac, 0x8463, 0x61c2, 0x52a8, 0x680b,
- 0x4f97, 0x606b, 0x51bb, 0x6d1e, 0x515c, 0x6296, 0x6597, 0x9661,
- 0x8c46, 0x9017, 0x75d8, 0x90fd, 0x7763, 0x6bd2, 0x728a, 0x72ec,
- 0x8bfb, 0x5835, 0x7779, 0x8d4c, 0x675c, 0x9540, 0x809a, 0x5ea6,
- 0x6e21, 0x5992, 0x7aef, 0x77ed, 0x953b, 0x6bb5, 0x65ad, 0x7f0e,
- 0x5806, 0x5151, 0x961f, 0x5bf9, 0x58a9, 0x5428, 0x8e72, 0x6566,
- 0x987f, 0x56e4, 0x949d, 0x76fe, 0x9041, 0x6387, 0x54c6, 0x591a,
- 0x593a, 0x579b, 0x8eb2, 0x6735, 0x8dfa, 0x8235, 0x5241, 0x60f0,
- 0x5815, 0x86fe, 0x5ce8, 0x9e45, 0x4fc4, 0x989d, 0x8bb9, 0x5a25,
- 0x6076, 0x5384, 0x627c, 0x904f, 0x9102, 0x997f, 0x6069, 0x800c,
- 0x513f, 0x8033, 0x5c14, 0x9975, 0x6d31, 0x4e8c,
- /* 0xb7 */
- 0x7a1d, 0x7a1f, 0x7a21, 0x7a22, 0x7a24, 0x7a25, 0x7a26, 0x7a27,
- 0x7a28, 0x7a29, 0x7a2a, 0x7a2b, 0x7a2c, 0x7a2d, 0x7a2e, 0x7a2f,
- 0x7a30, 0x7a31, 0x7a32, 0x7a34, 0x7a35, 0x7a36, 0x7a38, 0x7a3a,
- 0x7a3e, 0x7a40, 0x7a41, 0x7a42, 0x7a43, 0x7a44, 0x7a45, 0x7a47,
- 0x7a48, 0x7a49, 0x7a4a, 0x7a4b, 0x7a4c, 0x7a4d, 0x7a4e, 0x7a4f,
- 0x7a50, 0x7a52, 0x7a53, 0x7a54, 0x7a55, 0x7a56, 0x7a58, 0x7a59,
- 0x7a5a, 0x7a5b, 0x7a5c, 0x7a5d, 0x7a5e, 0x7a5f, 0x7a60, 0x7a61,
- 0x7a62, 0x7a63, 0x7a64, 0x7a65, 0x7a66, 0x7a67, 0x7a68, 0x7a69,
- 0x7a6a, 0x7a6b, 0x7a6c, 0x7a6d, 0x7a6e, 0x7a6f, 0x7a71, 0x7a72,
- 0x7a73, 0x7a75, 0x7a7b, 0x7a7c, 0x7a7d, 0x7a7e, 0x7a82, 0x7a85,
- 0x7a87, 0x7a89, 0x7a8a, 0x7a8b, 0x7a8c, 0x7a8e, 0x7a8f, 0x7a90,
- 0x7a93, 0x7a94, 0x7a99, 0x7a9a, 0x7a9b, 0x7a9e, 0x7aa1, 0x7aa2,
- 0x8d30, 0x53d1, 0x7f5a, 0x7b4f, 0x4f10, 0x4e4f, 0x9600, 0x6cd5,
- 0x73d0, 0x85e9, 0x5e06, 0x756a, 0x7ffb, 0x6a0a, 0x77fe, 0x9492,
- 0x7e41, 0x51e1, 0x70e6, 0x53cd, 0x8fd4, 0x8303, 0x8d29, 0x72af,
- 0x996d, 0x6cdb, 0x574a, 0x82b3, 0x65b9, 0x80aa, 0x623f, 0x9632,
- 0x59a8, 0x4eff, 0x8bbf, 0x7eba, 0x653e, 0x83f2, 0x975e, 0x5561,
- 0x98de, 0x80a5, 0x532a, 0x8bfd, 0x5420, 0x80ba, 0x5e9f, 0x6cb8,
- 0x8d39, 0x82ac, 0x915a, 0x5429, 0x6c1b, 0x5206, 0x7eb7, 0x575f,
- 0x711a, 0x6c7e, 0x7c89, 0x594b, 0x4efd, 0x5fff, 0x6124, 0x7caa,
- 0x4e30, 0x5c01, 0x67ab, 0x8702, 0x5cf0, 0x950b, 0x98ce, 0x75af,
- 0x70fd, 0x9022, 0x51af, 0x7f1d, 0x8bbd, 0x5949, 0x51e4, 0x4f5b,
- 0x5426, 0x592b, 0x6577, 0x80a4, 0x5b75, 0x6276, 0x62c2, 0x8f90,
- 0x5e45, 0x6c1f, 0x7b26, 0x4f0f, 0x4fd8, 0x670d,
- /* 0xb8 */
- 0x7aa3, 0x7aa4, 0x7aa7, 0x7aa9, 0x7aaa, 0x7aab, 0x7aae, 0x7aaf,
- 0x7ab0, 0x7ab1, 0x7ab2, 0x7ab4, 0x7ab5, 0x7ab6, 0x7ab7, 0x7ab8,
- 0x7ab9, 0x7aba, 0x7abb, 0x7abc, 0x7abd, 0x7abe, 0x7ac0, 0x7ac1,
- 0x7ac2, 0x7ac3, 0x7ac4, 0x7ac5, 0x7ac6, 0x7ac7, 0x7ac8, 0x7ac9,
- 0x7aca, 0x7acc, 0x7acd, 0x7ace, 0x7acf, 0x7ad0, 0x7ad1, 0x7ad2,
- 0x7ad3, 0x7ad4, 0x7ad5, 0x7ad7, 0x7ad8, 0x7ada, 0x7adb, 0x7adc,
- 0x7add, 0x7ae1, 0x7ae2, 0x7ae4, 0x7ae7, 0x7ae8, 0x7ae9, 0x7aea,
- 0x7aeb, 0x7aec, 0x7aee, 0x7af0, 0x7af1, 0x7af2, 0x7af3, 0x7af4,
- 0x7af5, 0x7af6, 0x7af7, 0x7af8, 0x7afb, 0x7afc, 0x7afe, 0x7b00,
- 0x7b01, 0x7b02, 0x7b05, 0x7b07, 0x7b09, 0x7b0c, 0x7b0d, 0x7b0e,
- 0x7b10, 0x7b12, 0x7b13, 0x7b16, 0x7b17, 0x7b18, 0x7b1a, 0x7b1c,
- 0x7b1d, 0x7b1f, 0x7b21, 0x7b22, 0x7b23, 0x7b27, 0x7b29, 0x7b2d,
- 0x6d6e, 0x6daa, 0x798f, 0x88b1, 0x5f17, 0x752b, 0x629a, 0x8f85,
- 0x4fef, 0x91dc, 0x65a7, 0x812f, 0x8151, 0x5e9c, 0x8150, 0x8d74,
- 0x526f, 0x8986, 0x8d4b, 0x590d, 0x5085, 0x4ed8, 0x961c, 0x7236,
- 0x8179, 0x8d1f, 0x5bcc, 0x8ba3, 0x9644, 0x5987, 0x7f1a, 0x5490,
- 0x5676, 0x560e, 0x8be5, 0x6539, 0x6982, 0x9499, 0x76d6, 0x6e89,
- 0x5e72, 0x7518, 0x6746, 0x67d1, 0x7aff, 0x809d, 0x8d76, 0x611f,
- 0x79c6, 0x6562, 0x8d63, 0x5188, 0x521a, 0x94a2, 0x7f38, 0x809b,
- 0x7eb2, 0x5c97, 0x6e2f, 0x6760, 0x7bd9, 0x768b, 0x9ad8, 0x818f,
- 0x7f94, 0x7cd5, 0x641e, 0x9550, 0x7a3f, 0x544a, 0x54e5, 0x6b4c,
- 0x6401, 0x6208, 0x9e3d, 0x80f3, 0x7599, 0x5272, 0x9769, 0x845b,
- 0x683c, 0x86e4, 0x9601, 0x9694, 0x94ec, 0x4e2a, 0x5404, 0x7ed9,
- 0x6839, 0x8ddf, 0x8015, 0x66f4, 0x5e9a, 0x7fb9,
- /* 0xb9 */
- 0x7b2f, 0x7b30, 0x7b32, 0x7b34, 0x7b35, 0x7b36, 0x7b37, 0x7b39,
- 0x7b3b, 0x7b3d, 0x7b3f, 0x7b40, 0x7b41, 0x7b42, 0x7b43, 0x7b44,
- 0x7b46, 0x7b48, 0x7b4a, 0x7b4d, 0x7b4e, 0x7b53, 0x7b55, 0x7b57,
- 0x7b59, 0x7b5c, 0x7b5e, 0x7b5f, 0x7b61, 0x7b63, 0x7b64, 0x7b65,
- 0x7b66, 0x7b67, 0x7b68, 0x7b69, 0x7b6a, 0x7b6b, 0x7b6c, 0x7b6d,
- 0x7b6f, 0x7b70, 0x7b73, 0x7b74, 0x7b76, 0x7b78, 0x7b7a, 0x7b7c,
- 0x7b7d, 0x7b7f, 0x7b81, 0x7b82, 0x7b83, 0x7b84, 0x7b86, 0x7b87,
- 0x7b88, 0x7b89, 0x7b8a, 0x7b8b, 0x7b8c, 0x7b8e, 0x7b8f, 0x7b91,
- 0x7b92, 0x7b93, 0x7b96, 0x7b98, 0x7b99, 0x7b9a, 0x7b9b, 0x7b9e,
- 0x7b9f, 0x7ba0, 0x7ba3, 0x7ba4, 0x7ba5, 0x7bae, 0x7baf, 0x7bb0,
- 0x7bb2, 0x7bb3, 0x7bb5, 0x7bb6, 0x7bb7, 0x7bb9, 0x7bba, 0x7bbb,
- 0x7bbc, 0x7bbd, 0x7bbe, 0x7bbf, 0x7bc0, 0x7bc2, 0x7bc3, 0x7bc4,
- 0x57c2, 0x803f, 0x6897, 0x5de5, 0x653b, 0x529f, 0x606d, 0x9f9a,
- 0x4f9b, 0x8eac, 0x516c, 0x5bab, 0x5f13, 0x5de9, 0x6c5e, 0x62f1,
- 0x8d21, 0x5171, 0x94a9, 0x52fe, 0x6c9f, 0x82df, 0x72d7, 0x57a2,
- 0x6784, 0x8d2d, 0x591f, 0x8f9c, 0x83c7, 0x5495, 0x7b8d, 0x4f30,
- 0x6cbd, 0x5b64, 0x59d1, 0x9f13, 0x53e4, 0x86ca, 0x9aa8, 0x8c37,
- 0x80a1, 0x6545, 0x987e, 0x56fa, 0x96c7, 0x522e, 0x74dc, 0x5250,
- 0x5be1, 0x6302, 0x8902, 0x4e56, 0x62d0, 0x602a, 0x68fa, 0x5173,
- 0x5b98, 0x51a0, 0x89c2, 0x7ba1, 0x9986, 0x7f50, 0x60ef, 0x704c,
- 0x8d2f, 0x5149, 0x5e7f, 0x901b, 0x7470, 0x89c4, 0x572d, 0x7845,
- 0x5f52, 0x9f9f, 0x95fa, 0x8f68, 0x9b3c, 0x8be1, 0x7678, 0x6842,
- 0x67dc, 0x8dea, 0x8d35, 0x523d, 0x8f8a, 0x6eda, 0x68cd, 0x9505,
- 0x90ed, 0x56fd, 0x679c, 0x88f9, 0x8fc7, 0x54c8,
- /* 0xba */
- 0x7bc5, 0x7bc8, 0x7bc9, 0x7bca, 0x7bcb, 0x7bcd, 0x7bce, 0x7bcf,
- 0x7bd0, 0x7bd2, 0x7bd4, 0x7bd5, 0x7bd6, 0x7bd7, 0x7bd8, 0x7bdb,
- 0x7bdc, 0x7bde, 0x7bdf, 0x7be0, 0x7be2, 0x7be3, 0x7be4, 0x7be7,
- 0x7be8, 0x7be9, 0x7beb, 0x7bec, 0x7bed, 0x7bef, 0x7bf0, 0x7bf2,
- 0x7bf3, 0x7bf4, 0x7bf5, 0x7bf6, 0x7bf8, 0x7bf9, 0x7bfa, 0x7bfb,
- 0x7bfd, 0x7bff, 0x7c00, 0x7c01, 0x7c02, 0x7c03, 0x7c04, 0x7c05,
- 0x7c06, 0x7c08, 0x7c09, 0x7c0a, 0x7c0d, 0x7c0e, 0x7c10, 0x7c11,
- 0x7c12, 0x7c13, 0x7c14, 0x7c15, 0x7c17, 0x7c18, 0x7c19, 0x7c1a,
- 0x7c1b, 0x7c1c, 0x7c1d, 0x7c1e, 0x7c20, 0x7c21, 0x7c22, 0x7c23,
- 0x7c24, 0x7c25, 0x7c28, 0x7c29, 0x7c2b, 0x7c2c, 0x7c2d, 0x7c2e,
- 0x7c2f, 0x7c30, 0x7c31, 0x7c32, 0x7c33, 0x7c34, 0x7c35, 0x7c36,
- 0x7c37, 0x7c39, 0x7c3a, 0x7c3b, 0x7c3c, 0x7c3d, 0x7c3e, 0x7c42,
- 0x9ab8, 0x5b69, 0x6d77, 0x6c26, 0x4ea5, 0x5bb3, 0x9a87, 0x9163,
- 0x61a8, 0x90af, 0x97e9, 0x542b, 0x6db5, 0x5bd2, 0x51fd, 0x558a,
- 0x7f55, 0x7ff0, 0x64bc, 0x634d, 0x65f1, 0x61be, 0x608d, 0x710a,
- 0x6c57, 0x6c49, 0x592f, 0x676d, 0x822a, 0x58d5, 0x568e, 0x8c6a,
- 0x6beb, 0x90dd, 0x597d, 0x8017, 0x53f7, 0x6d69, 0x5475, 0x559d,
- 0x8377, 0x83cf, 0x6838, 0x79be, 0x548c, 0x4f55, 0x5408, 0x76d2,
- 0x8c89, 0x9602, 0x6cb3, 0x6db8, 0x8d6b, 0x8910, 0x9e64, 0x8d3a,
- 0x563f, 0x9ed1, 0x75d5, 0x5f88, 0x72e0, 0x6068, 0x54fc, 0x4ea8,
- 0x6a2a, 0x8861, 0x6052, 0x8f70, 0x54c4, 0x70d8, 0x8679, 0x9e3f,
- 0x6d2a, 0x5b8f, 0x5f18, 0x7ea2, 0x5589, 0x4faf, 0x7334, 0x543c,
- 0x539a, 0x5019, 0x540e, 0x547c, 0x4e4e, 0x5ffd, 0x745a, 0x58f6,
- 0x846b, 0x80e1, 0x8774, 0x72d0, 0x7cca, 0x6e56,
- /* 0xbb */
- 0x7c43, 0x7c44, 0x7c45, 0x7c46, 0x7c47, 0x7c48, 0x7c49, 0x7c4a,
- 0x7c4b, 0x7c4c, 0x7c4e, 0x7c4f, 0x7c50, 0x7c51, 0x7c52, 0x7c53,
- 0x7c54, 0x7c55, 0x7c56, 0x7c57, 0x7c58, 0x7c59, 0x7c5a, 0x7c5b,
- 0x7c5c, 0x7c5d, 0x7c5e, 0x7c5f, 0x7c60, 0x7c61, 0x7c62, 0x7c63,
- 0x7c64, 0x7c65, 0x7c66, 0x7c67, 0x7c68, 0x7c69, 0x7c6a, 0x7c6b,
- 0x7c6c, 0x7c6d, 0x7c6e, 0x7c6f, 0x7c70, 0x7c71, 0x7c72, 0x7c75,
- 0x7c76, 0x7c77, 0x7c78, 0x7c79, 0x7c7a, 0x7c7e, 0x7c7f, 0x7c80,
- 0x7c81, 0x7c82, 0x7c83, 0x7c84, 0x7c85, 0x7c86, 0x7c87, 0x7c88,
- 0x7c8a, 0x7c8b, 0x7c8c, 0x7c8d, 0x7c8e, 0x7c8f, 0x7c90, 0x7c93,
- 0x7c94, 0x7c96, 0x7c99, 0x7c9a, 0x7c9b, 0x7ca0, 0x7ca1, 0x7ca3,
- 0x7ca6, 0x7ca7, 0x7ca8, 0x7ca9, 0x7cab, 0x7cac, 0x7cad, 0x7caf,
- 0x7cb0, 0x7cb4, 0x7cb5, 0x7cb6, 0x7cb7, 0x7cb8, 0x7cba, 0x7cbb,
- 0x5f27, 0x864e, 0x552c, 0x62a4, 0x4e92, 0x6caa, 0x6237, 0x82b1,
- 0x54d7, 0x534e, 0x733e, 0x6ed1, 0x753b, 0x5212, 0x5316, 0x8bdd,
- 0x69d0, 0x5f8a, 0x6000, 0x6dee, 0x574f, 0x6b22, 0x73af, 0x6853,
- 0x8fd8, 0x7f13, 0x6362, 0x60a3, 0x5524, 0x75ea, 0x8c62, 0x7115,
- 0x6da3, 0x5ba6, 0x5e7b, 0x8352, 0x614c, 0x9ec4, 0x78fa, 0x8757,
- 0x7c27, 0x7687, 0x51f0, 0x60f6, 0x714c, 0x6643, 0x5e4c, 0x604d,
- 0x8c0e, 0x7070, 0x6325, 0x8f89, 0x5fbd, 0x6062, 0x86d4, 0x56de,
- 0x6bc1, 0x6094, 0x6167, 0x5349, 0x60e0, 0x6666, 0x8d3f, 0x79fd,
- 0x4f1a, 0x70e9, 0x6c47, 0x8bb3, 0x8bf2, 0x7ed8, 0x8364, 0x660f,
- 0x5a5a, 0x9b42, 0x6d51, 0x6df7, 0x8c41, 0x6d3b, 0x4f19, 0x706b,
- 0x83b7, 0x6216, 0x60d1, 0x970d, 0x8d27, 0x7978, 0x51fb, 0x573e,
- 0x57fa, 0x673a, 0x7578, 0x7a3d, 0x79ef, 0x7b95,
- /* 0xbc */
- 0x7cbf, 0x7cc0, 0x7cc2, 0x7cc3, 0x7cc4, 0x7cc6, 0x7cc9, 0x7ccb,
- 0x7cce, 0x7ccf, 0x7cd0, 0x7cd1, 0x7cd2, 0x7cd3, 0x7cd4, 0x7cd8,
- 0x7cda, 0x7cdb, 0x7cdd, 0x7cde, 0x7ce1, 0x7ce2, 0x7ce3, 0x7ce4,
- 0x7ce5, 0x7ce6, 0x7ce7, 0x7ce9, 0x7cea, 0x7ceb, 0x7cec, 0x7ced,
- 0x7cee, 0x7cf0, 0x7cf1, 0x7cf2, 0x7cf3, 0x7cf4, 0x7cf5, 0x7cf6,
- 0x7cf7, 0x7cf9, 0x7cfa, 0x7cfc, 0x7cfd, 0x7cfe, 0x7cff, 0x7d00,
- 0x7d01, 0x7d02, 0x7d03, 0x7d04, 0x7d05, 0x7d06, 0x7d07, 0x7d08,
- 0x7d09, 0x7d0b, 0x7d0c, 0x7d0d, 0x7d0e, 0x7d0f, 0x7d10, 0x7d11,
- 0x7d12, 0x7d13, 0x7d14, 0x7d15, 0x7d16, 0x7d17, 0x7d18, 0x7d19,
- 0x7d1a, 0x7d1b, 0x7d1c, 0x7d1d, 0x7d1e, 0x7d1f, 0x7d21, 0x7d23,
- 0x7d24, 0x7d25, 0x7d26, 0x7d28, 0x7d29, 0x7d2a, 0x7d2c, 0x7d2d,
- 0x7d2e, 0x7d30, 0x7d31, 0x7d32, 0x7d33, 0x7d34, 0x7d35, 0x7d36,
- 0x808c, 0x9965, 0x8ff9, 0x6fc0, 0x8ba5, 0x9e21, 0x59ec, 0x7ee9,
- 0x7f09, 0x5409, 0x6781, 0x68d8, 0x8f91, 0x7c4d, 0x96c6, 0x53ca,
- 0x6025, 0x75be, 0x6c72, 0x5373, 0x5ac9, 0x7ea7, 0x6324, 0x51e0,
- 0x810a, 0x5df1, 0x84df, 0x6280, 0x5180, 0x5b63, 0x4f0e, 0x796d,
- 0x5242, 0x60b8, 0x6d4e, 0x5bc4, 0x5bc2, 0x8ba1, 0x8bb0, 0x65e2,
- 0x5fcc, 0x9645, 0x5993, 0x7ee7, 0x7eaa, 0x5609, 0x67b7, 0x5939,
- 0x4f73, 0x5bb6, 0x52a0, 0x835a, 0x988a, 0x8d3e, 0x7532, 0x94be,
- 0x5047, 0x7a3c, 0x4ef7, 0x67b6, 0x9a7e, 0x5ac1, 0x6b7c, 0x76d1,
- 0x575a, 0x5c16, 0x7b3a, 0x95f4, 0x714e, 0x517c, 0x80a9, 0x8270,
- 0x5978, 0x7f04, 0x8327, 0x68c0, 0x67ec, 0x78b1, 0x7877, 0x62e3,
- 0x6361, 0x7b80, 0x4fed, 0x526a, 0x51cf, 0x8350, 0x69db, 0x9274,
- 0x8df5, 0x8d31, 0x89c1, 0x952e, 0x7bad, 0x4ef6,
- /* 0xbd */
- 0x7d37, 0x7d38, 0x7d39, 0x7d3a, 0x7d3b, 0x7d3c, 0x7d3d, 0x7d3e,
- 0x7d3f, 0x7d40, 0x7d41, 0x7d42, 0x7d43, 0x7d44, 0x7d45, 0x7d46,
- 0x7d47, 0x7d48, 0x7d49, 0x7d4a, 0x7d4b, 0x7d4c, 0x7d4d, 0x7d4e,
- 0x7d4f, 0x7d50, 0x7d51, 0x7d52, 0x7d53, 0x7d54, 0x7d55, 0x7d56,
- 0x7d57, 0x7d58, 0x7d59, 0x7d5a, 0x7d5b, 0x7d5c, 0x7d5d, 0x7d5e,
- 0x7d5f, 0x7d60, 0x7d61, 0x7d62, 0x7d63, 0x7d64, 0x7d65, 0x7d66,
- 0x7d67, 0x7d68, 0x7d69, 0x7d6a, 0x7d6b, 0x7d6c, 0x7d6d, 0x7d6f,
- 0x7d70, 0x7d71, 0x7d72, 0x7d73, 0x7d74, 0x7d75, 0x7d76, 0x7d78,
- 0x7d79, 0x7d7a, 0x7d7b, 0x7d7c, 0x7d7d, 0x7d7e, 0x7d7f, 0x7d80,
- 0x7d81, 0x7d82, 0x7d83, 0x7d84, 0x7d85, 0x7d86, 0x7d87, 0x7d88,
- 0x7d89, 0x7d8a, 0x7d8b, 0x7d8c, 0x7d8d, 0x7d8e, 0x7d8f, 0x7d90,
- 0x7d91, 0x7d92, 0x7d93, 0x7d94, 0x7d95, 0x7d96, 0x7d97, 0x7d98,
- 0x5065, 0x8230, 0x5251, 0x996f, 0x6e10, 0x6e85, 0x6da7, 0x5efa,
- 0x50f5, 0x59dc, 0x5c06, 0x6d46, 0x6c5f, 0x7586, 0x848b, 0x6868,
- 0x5956, 0x8bb2, 0x5320, 0x9171, 0x964d, 0x8549, 0x6912, 0x7901,
- 0x7126, 0x80f6, 0x4ea4, 0x90ca, 0x6d47, 0x9a84, 0x5a07, 0x56bc,
- 0x6405, 0x94f0, 0x77eb, 0x4fa5, 0x811a, 0x72e1, 0x89d2, 0x997a,
- 0x7f34, 0x7ede, 0x527f, 0x6559, 0x9175, 0x8f7f, 0x8f83, 0x53eb,
- 0x7a96, 0x63ed, 0x63a5, 0x7686, 0x79f8, 0x8857, 0x9636, 0x622a,
- 0x52ab, 0x8282, 0x6854, 0x6770, 0x6377, 0x776b, 0x7aed, 0x6d01,
- 0x7ed3, 0x89e3, 0x59d0, 0x6212, 0x85c9, 0x82a5, 0x754c, 0x501f,
- 0x4ecb, 0x75a5, 0x8beb, 0x5c4a, 0x5dfe, 0x7b4b, 0x65a4, 0x91d1,
- 0x4eca, 0x6d25, 0x895f, 0x7d27, 0x9526, 0x4ec5, 0x8c28, 0x8fdb,
- 0x9773, 0x664b, 0x7981, 0x8fd1, 0x70ec, 0x6d78,
- /* 0xbe */
- 0x7d99, 0x7d9a, 0x7d9b, 0x7d9c, 0x7d9d, 0x7d9e, 0x7d9f, 0x7da0,
- 0x7da1, 0x7da2, 0x7da3, 0x7da4, 0x7da5, 0x7da7, 0x7da8, 0x7da9,
- 0x7daa, 0x7dab, 0x7dac, 0x7dad, 0x7daf, 0x7db0, 0x7db1, 0x7db2,
- 0x7db3, 0x7db4, 0x7db5, 0x7db6, 0x7db7, 0x7db8, 0x7db9, 0x7dba,
- 0x7dbb, 0x7dbc, 0x7dbd, 0x7dbe, 0x7dbf, 0x7dc0, 0x7dc1, 0x7dc2,
- 0x7dc3, 0x7dc4, 0x7dc5, 0x7dc6, 0x7dc7, 0x7dc8, 0x7dc9, 0x7dca,
- 0x7dcb, 0x7dcc, 0x7dcd, 0x7dce, 0x7dcf, 0x7dd0, 0x7dd1, 0x7dd2,
- 0x7dd3, 0x7dd4, 0x7dd5, 0x7dd6, 0x7dd7, 0x7dd8, 0x7dd9, 0x7dda,
- 0x7ddb, 0x7ddc, 0x7ddd, 0x7dde, 0x7ddf, 0x7de0, 0x7de1, 0x7de2,
- 0x7de3, 0x7de4, 0x7de5, 0x7de6, 0x7de7, 0x7de8, 0x7de9, 0x7dea,
- 0x7deb, 0x7dec, 0x7ded, 0x7dee, 0x7def, 0x7df0, 0x7df1, 0x7df2,
- 0x7df3, 0x7df4, 0x7df5, 0x7df6, 0x7df7, 0x7df8, 0x7df9, 0x7dfa,
- 0x5c3d, 0x52b2, 0x8346, 0x5162, 0x830e, 0x775b, 0x6676, 0x9cb8,
- 0x4eac, 0x60ca, 0x7cbe, 0x7cb3, 0x7ecf, 0x4e95, 0x8b66, 0x666f,
- 0x9888, 0x9759, 0x5883, 0x656c, 0x955c, 0x5f84, 0x75c9, 0x9756,
- 0x7adf, 0x7ade, 0x51c0, 0x70af, 0x7a98, 0x63ea, 0x7a76, 0x7ea0,
- 0x7396, 0x97ed, 0x4e45, 0x7078, 0x4e5d, 0x9152, 0x53a9, 0x6551,
- 0x65e7, 0x81fc, 0x8205, 0x548e, 0x5c31, 0x759a, 0x97a0, 0x62d8,
- 0x72d9, 0x75bd, 0x5c45, 0x9a79, 0x83ca, 0x5c40, 0x5480, 0x77e9,
- 0x4e3e, 0x6cae, 0x805a, 0x62d2, 0x636e, 0x5de8, 0x5177, 0x8ddd,
- 0x8e1e, 0x952f, 0x4ff1, 0x53e5, 0x60e7, 0x70ac, 0x5267, 0x6350,
- 0x9e43, 0x5a1f, 0x5026, 0x7737, 0x5377, 0x7ee2, 0x6485, 0x652b,
- 0x6289, 0x6398, 0x5014, 0x7235, 0x89c9, 0x51b3, 0x8bc0, 0x7edd,
- 0x5747, 0x83cc, 0x94a7, 0x519b, 0x541b, 0x5cfb,
- /* 0xbf */
- 0x7dfb, 0x7dfc, 0x7dfd, 0x7dfe, 0x7dff, 0x7e00, 0x7e01, 0x7e02,
- 0x7e03, 0x7e04, 0x7e05, 0x7e06, 0x7e07, 0x7e08, 0x7e09, 0x7e0a,
- 0x7e0b, 0x7e0c, 0x7e0d, 0x7e0e, 0x7e0f, 0x7e10, 0x7e11, 0x7e12,
- 0x7e13, 0x7e14, 0x7e15, 0x7e16, 0x7e17, 0x7e18, 0x7e19, 0x7e1a,
- 0x7e1b, 0x7e1c, 0x7e1d, 0x7e1e, 0x7e1f, 0x7e20, 0x7e21, 0x7e22,
- 0x7e23, 0x7e24, 0x7e25, 0x7e26, 0x7e27, 0x7e28, 0x7e29, 0x7e2a,
- 0x7e2b, 0x7e2c, 0x7e2d, 0x7e2e, 0x7e2f, 0x7e30, 0x7e31, 0x7e32,
- 0x7e33, 0x7e34, 0x7e35, 0x7e36, 0x7e37, 0x7e38, 0x7e39, 0x7e3a,
- 0x7e3c, 0x7e3d, 0x7e3e, 0x7e3f, 0x7e40, 0x7e42, 0x7e43, 0x7e44,
- 0x7e45, 0x7e46, 0x7e48, 0x7e49, 0x7e4a, 0x7e4b, 0x7e4c, 0x7e4d,
- 0x7e4e, 0x7e4f, 0x7e50, 0x7e51, 0x7e52, 0x7e53, 0x7e54, 0x7e55,
- 0x7e56, 0x7e57, 0x7e58, 0x7e59, 0x7e5a, 0x7e5b, 0x7e5c, 0x7e5d,
- 0x4fca, 0x7ae3, 0x6d5a, 0x90e1, 0x9a8f, 0x5580, 0x5496, 0x5361,
- 0x54af, 0x5f00, 0x63e9, 0x6977, 0x51ef, 0x6168, 0x520a, 0x582a,
- 0x52d8, 0x574e, 0x780d, 0x770b, 0x5eb7, 0x6177, 0x7ce0, 0x625b,
- 0x6297, 0x4ea2, 0x7095, 0x8003, 0x62f7, 0x70e4, 0x9760, 0x5777,
- 0x82db, 0x67ef, 0x68f5, 0x78d5, 0x9897, 0x79d1, 0x58f3, 0x54b3,
- 0x53ef, 0x6e34, 0x514b, 0x523b, 0x5ba2, 0x8bfe, 0x80af, 0x5543,
- 0x57a6, 0x6073, 0x5751, 0x542d, 0x7a7a, 0x6050, 0x5b54, 0x63a7,
- 0x62a0, 0x53e3, 0x6263, 0x5bc7, 0x67af, 0x54ed, 0x7a9f, 0x82e6,
- 0x9177, 0x5e93, 0x88e4, 0x5938, 0x57ae, 0x630e, 0x8de8, 0x80ef,
- 0x5757, 0x7b77, 0x4fa9, 0x5feb, 0x5bbd, 0x6b3e, 0x5321, 0x7b50,
- 0x72c2, 0x6846, 0x77ff, 0x7736, 0x65f7, 0x51b5, 0x4e8f, 0x76d4,
- 0x5cbf, 0x7aa5, 0x8475, 0x594e, 0x9b41, 0x5080,
- /* 0xc0 */
- 0x7e5e, 0x7e5f, 0x7e60, 0x7e61, 0x7e62, 0x7e63, 0x7e64, 0x7e65,
- 0x7e66, 0x7e67, 0x7e68, 0x7e69, 0x7e6a, 0x7e6b, 0x7e6c, 0x7e6d,
- 0x7e6e, 0x7e6f, 0x7e70, 0x7e71, 0x7e72, 0x7e73, 0x7e74, 0x7e75,
- 0x7e76, 0x7e77, 0x7e78, 0x7e79, 0x7e7a, 0x7e7b, 0x7e7c, 0x7e7d,
- 0x7e7e, 0x7e7f, 0x7e80, 0x7e81, 0x7e83, 0x7e84, 0x7e85, 0x7e86,
- 0x7e87, 0x7e88, 0x7e89, 0x7e8a, 0x7e8b, 0x7e8c, 0x7e8d, 0x7e8e,
- 0x7e8f, 0x7e90, 0x7e91, 0x7e92, 0x7e93, 0x7e94, 0x7e95, 0x7e96,
- 0x7e97, 0x7e98, 0x7e99, 0x7e9a, 0x7e9c, 0x7e9d, 0x7e9e, 0x7eae,
- 0x7eb4, 0x7ebb, 0x7ebc, 0x7ed6, 0x7ee4, 0x7eec, 0x7ef9, 0x7f0a,
- 0x7f10, 0x7f1e, 0x7f37, 0x7f39, 0x7f3b, 0x7f3c, 0x7f3d, 0x7f3e,
- 0x7f3f, 0x7f40, 0x7f41, 0x7f43, 0x7f46, 0x7f47, 0x7f48, 0x7f49,
- 0x7f4a, 0x7f4b, 0x7f4c, 0x7f4d, 0x7f4e, 0x7f4f, 0x7f52, 0x7f53,
- 0x9988, 0x6127, 0x6e83, 0x5764, 0x6606, 0x6346, 0x56f0, 0x62ec,
- 0x6269, 0x5ed3, 0x9614, 0x5783, 0x62c9, 0x5587, 0x8721, 0x814a,
- 0x8fa3, 0x5566, 0x83b1, 0x6765, 0x8d56, 0x84dd, 0x5a6a, 0x680f,
- 0x62e6, 0x7bee, 0x9611, 0x5170, 0x6f9c, 0x8c30, 0x63fd, 0x89c8,
- 0x61d2, 0x7f06, 0x70c2, 0x6ee5, 0x7405, 0x6994, 0x72fc, 0x5eca,
- 0x90ce, 0x6717, 0x6d6a, 0x635e, 0x52b3, 0x7262, 0x8001, 0x4f6c,
- 0x59e5, 0x916a, 0x70d9, 0x6d9d, 0x52d2, 0x4e50, 0x96f7, 0x956d,
- 0x857e, 0x78ca, 0x7d2f, 0x5121, 0x5792, 0x64c2, 0x808b, 0x7c7b,
- 0x6cea, 0x68f1, 0x695e, 0x51b7, 0x5398, 0x68a8, 0x7281, 0x9ece,
- 0x7bf1, 0x72f8, 0x79bb, 0x6f13, 0x7406, 0x674e, 0x91cc, 0x9ca4,
- 0x793c, 0x8389, 0x8354, 0x540f, 0x6817, 0x4e3d, 0x5389, 0x52b1,
- 0x783e, 0x5386, 0x5229, 0x5088, 0x4f8b, 0x4fd0,
- /* 0xc1 */
- 0x7f56, 0x7f59, 0x7f5b, 0x7f5c, 0x7f5d, 0x7f5e, 0x7f60, 0x7f63,
- 0x7f64, 0x7f65, 0x7f66, 0x7f67, 0x7f6b, 0x7f6c, 0x7f6d, 0x7f6f,
- 0x7f70, 0x7f73, 0x7f75, 0x7f76, 0x7f77, 0x7f78, 0x7f7a, 0x7f7b,
- 0x7f7c, 0x7f7d, 0x7f7f, 0x7f80, 0x7f82, 0x7f83, 0x7f84, 0x7f85,
- 0x7f86, 0x7f87, 0x7f88, 0x7f89, 0x7f8b, 0x7f8d, 0x7f8f, 0x7f90,
- 0x7f91, 0x7f92, 0x7f93, 0x7f95, 0x7f96, 0x7f97, 0x7f98, 0x7f99,
- 0x7f9b, 0x7f9c, 0x7fa0, 0x7fa2, 0x7fa3, 0x7fa5, 0x7fa6, 0x7fa8,
- 0x7fa9, 0x7faa, 0x7fab, 0x7fac, 0x7fad, 0x7fae, 0x7fb1, 0x7fb3,
- 0x7fb4, 0x7fb5, 0x7fb6, 0x7fb7, 0x7fba, 0x7fbb, 0x7fbe, 0x7fc0,
- 0x7fc2, 0x7fc3, 0x7fc4, 0x7fc6, 0x7fc7, 0x7fc8, 0x7fc9, 0x7fcb,
- 0x7fcd, 0x7fcf, 0x7fd0, 0x7fd1, 0x7fd2, 0x7fd3, 0x7fd6, 0x7fd7,
- 0x7fd9, 0x7fda, 0x7fdb, 0x7fdc, 0x7fdd, 0x7fde, 0x7fe2, 0x7fe3,
- 0x75e2, 0x7acb, 0x7c92, 0x6ca5, 0x96b6, 0x529b, 0x7483, 0x54e9,
- 0x4fe9, 0x8054, 0x83b2, 0x8fde, 0x9570, 0x5ec9, 0x601c, 0x6d9f,
- 0x5e18, 0x655b, 0x8138, 0x94fe, 0x604b, 0x70bc, 0x7ec3, 0x7cae,
- 0x51c9, 0x6881, 0x7cb1, 0x826f, 0x4e24, 0x8f86, 0x91cf, 0x667e,
- 0x4eae, 0x8c05, 0x64a9, 0x804a, 0x50da, 0x7597, 0x71ce, 0x5be5,
- 0x8fbd, 0x6f66, 0x4e86, 0x6482, 0x9563, 0x5ed6, 0x6599, 0x5217,
- 0x88c2, 0x70c8, 0x52a3, 0x730e, 0x7433, 0x6797, 0x78f7, 0x9716,
- 0x4e34, 0x90bb, 0x9cde, 0x6dcb, 0x51db, 0x8d41, 0x541d, 0x62ce,
- 0x73b2, 0x83f1, 0x96f6, 0x9f84, 0x94c3, 0x4f36, 0x7f9a, 0x51cc,
- 0x7075, 0x9675, 0x5cad, 0x9886, 0x53e6, 0x4ee4, 0x6e9c, 0x7409,
- 0x69b4, 0x786b, 0x998f, 0x7559, 0x5218, 0x7624, 0x6d41, 0x67f3,
- 0x516d, 0x9f99, 0x804b, 0x5499, 0x7b3c, 0x7abf,
- /* 0xc2 */
- 0x7fe4, 0x7fe7, 0x7fe8, 0x7fea, 0x7feb, 0x7fec, 0x7fed, 0x7fef,
- 0x7ff2, 0x7ff4, 0x7ff5, 0x7ff6, 0x7ff7, 0x7ff8, 0x7ff9, 0x7ffa,
- 0x7ffd, 0x7ffe, 0x7fff, 0x8002, 0x8007, 0x8008, 0x8009, 0x800a,
- 0x800e, 0x800f, 0x8011, 0x8013, 0x801a, 0x801b, 0x801d, 0x801e,
- 0x801f, 0x8021, 0x8023, 0x8024, 0x802b, 0x802c, 0x802d, 0x802e,
- 0x802f, 0x8030, 0x8032, 0x8034, 0x8039, 0x803a, 0x803c, 0x803e,
- 0x8040, 0x8041, 0x8044, 0x8045, 0x8047, 0x8048, 0x8049, 0x804e,
- 0x804f, 0x8050, 0x8051, 0x8053, 0x8055, 0x8056, 0x8057, 0x8059,
- 0x805b, 0x805c, 0x805d, 0x805e, 0x805f, 0x8060, 0x8061, 0x8062,
- 0x8063, 0x8064, 0x8065, 0x8066, 0x8067, 0x8068, 0x806b, 0x806c,
- 0x806d, 0x806e, 0x806f, 0x8070, 0x8072, 0x8073, 0x8074, 0x8075,
- 0x8076, 0x8077, 0x8078, 0x8079, 0x807a, 0x807b, 0x807c, 0x807d,
- 0x9686, 0x5784, 0x62e2, 0x9647, 0x697c, 0x5a04, 0x6402, 0x7bd3,
- 0x6f0f, 0x964b, 0x82a6, 0x5362, 0x9885, 0x5e90, 0x7089, 0x63b3,
- 0x5364, 0x864f, 0x9c81, 0x9e93, 0x788c, 0x9732, 0x8def, 0x8d42,
- 0x9e7f, 0x6f5e, 0x7984, 0x5f55, 0x9646, 0x622e, 0x9a74, 0x5415,
- 0x94dd, 0x4fa3, 0x65c5, 0x5c65, 0x5c61, 0x7f15, 0x8651, 0x6c2f,
- 0x5f8b, 0x7387, 0x6ee4, 0x7eff, 0x5ce6, 0x631b, 0x5b6a, 0x6ee6,
- 0x5375, 0x4e71, 0x63a0, 0x7565, 0x62a1, 0x8f6e, 0x4f26, 0x4ed1,
- 0x6ca6, 0x7eb6, 0x8bba, 0x841d, 0x87ba, 0x7f57, 0x903b, 0x9523,
- 0x7ba9, 0x9aa1, 0x88f8, 0x843d, 0x6d1b, 0x9a86, 0x7edc, 0x5988,
- 0x9ebb, 0x739b, 0x7801, 0x8682, 0x9a6c, 0x9a82, 0x561b, 0x5417,
- 0x57cb, 0x4e70, 0x9ea6, 0x5356, 0x8fc8, 0x8109, 0x7792, 0x9992,
- 0x86ee, 0x6ee1, 0x8513, 0x66fc, 0x6162, 0x6f2b,
- /* 0xc3 */
- 0x807e, 0x8081, 0x8082, 0x8085, 0x8088, 0x808a, 0x808d, 0x808e,
- 0x808f, 0x8090, 0x8091, 0x8092, 0x8094, 0x8095, 0x8097, 0x8099,
- 0x809e, 0x80a3, 0x80a6, 0x80a7, 0x80a8, 0x80ac, 0x80b0, 0x80b3,
- 0x80b5, 0x80b6, 0x80b8, 0x80b9, 0x80bb, 0x80c5, 0x80c7, 0x80c8,
- 0x80c9, 0x80ca, 0x80cb, 0x80cf, 0x80d0, 0x80d1, 0x80d2, 0x80d3,
- 0x80d4, 0x80d5, 0x80d8, 0x80df, 0x80e0, 0x80e2, 0x80e3, 0x80e6,
- 0x80ee, 0x80f5, 0x80f7, 0x80f9, 0x80fb, 0x80fe, 0x80ff, 0x8100,
- 0x8101, 0x8103, 0x8104, 0x8105, 0x8107, 0x8108, 0x810b, 0x810c,
- 0x8115, 0x8117, 0x8119, 0x811b, 0x811c, 0x811d, 0x811f, 0x8120,
- 0x8121, 0x8122, 0x8123, 0x8124, 0x8125, 0x8126, 0x8127, 0x8128,
- 0x8129, 0x812a, 0x812b, 0x812d, 0x812e, 0x8130, 0x8133, 0x8134,
- 0x8135, 0x8137, 0x8139, 0x813a, 0x813b, 0x813c, 0x813d, 0x813f,
- 0x8c29, 0x8292, 0x832b, 0x76f2, 0x6c13, 0x5fd9, 0x83bd, 0x732b,
- 0x8305, 0x951a, 0x6bdb, 0x77db, 0x94c6, 0x536f, 0x8302, 0x5192,
- 0x5e3d, 0x8c8c, 0x8d38, 0x4e48, 0x73ab, 0x679a, 0x6885, 0x9176,
- 0x9709, 0x7164, 0x6ca1, 0x7709, 0x5a92, 0x9541, 0x6bcf, 0x7f8e,
- 0x6627, 0x5bd0, 0x59b9, 0x5a9a, 0x95e8, 0x95f7, 0x4eec, 0x840c,
- 0x8499, 0x6aac, 0x76df, 0x9530, 0x731b, 0x68a6, 0x5b5f, 0x772f,
- 0x919a, 0x9761, 0x7cdc, 0x8ff7, 0x8c1c, 0x5f25, 0x7c73, 0x79d8,
- 0x89c5, 0x6ccc, 0x871c, 0x5bc6, 0x5e42, 0x68c9, 0x7720, 0x7ef5,
- 0x5195, 0x514d, 0x52c9, 0x5a29, 0x7f05, 0x9762, 0x82d7, 0x63cf,
- 0x7784, 0x85d0, 0x79d2, 0x6e3a, 0x5e99, 0x5999, 0x8511, 0x706d,
- 0x6c11, 0x62bf, 0x76bf, 0x654f, 0x60af, 0x95fd, 0x660e, 0x879f,
- 0x9e23, 0x94ed, 0x540d, 0x547d, 0x8c2c, 0x6478,
- /* 0xc4 */
- 0x8140, 0x8141, 0x8142, 0x8143, 0x8144, 0x8145, 0x8147, 0x8149,
- 0x814d, 0x814e, 0x814f, 0x8152, 0x8156, 0x8157, 0x8158, 0x815b,
- 0x815c, 0x815d, 0x815e, 0x815f, 0x8161, 0x8162, 0x8163, 0x8164,
- 0x8166, 0x8168, 0x816a, 0x816b, 0x816c, 0x816f, 0x8172, 0x8173,
- 0x8175, 0x8176, 0x8177, 0x8178, 0x8181, 0x8183, 0x8184, 0x8185,
- 0x8186, 0x8187, 0x8189, 0x818b, 0x818c, 0x818d, 0x818e, 0x8190,
- 0x8192, 0x8193, 0x8194, 0x8195, 0x8196, 0x8197, 0x8199, 0x819a,
- 0x819e, 0x819f, 0x81a0, 0x81a1, 0x81a2, 0x81a4, 0x81a5, 0x81a7,
- 0x81a9, 0x81ab, 0x81ac, 0x81ad, 0x81ae, 0x81af, 0x81b0, 0x81b1,
- 0x81b2, 0x81b4, 0x81b5, 0x81b6, 0x81b7, 0x81b8, 0x81b9, 0x81bc,
- 0x81bd, 0x81be, 0x81bf, 0x81c4, 0x81c5, 0x81c7, 0x81c8, 0x81c9,
- 0x81cb, 0x81cd, 0x81ce, 0x81cf, 0x81d0, 0x81d1, 0x81d2, 0x81d3,
- 0x6479, 0x8611, 0x6a21, 0x819c, 0x78e8, 0x6469, 0x9b54, 0x62b9,
- 0x672b, 0x83ab, 0x58a8, 0x9ed8, 0x6cab, 0x6f20, 0x5bde, 0x964c,
- 0x8c0b, 0x725f, 0x67d0, 0x62c7, 0x7261, 0x4ea9, 0x59c6, 0x6bcd,
- 0x5893, 0x66ae, 0x5e55, 0x52df, 0x6155, 0x6728, 0x76ee, 0x7766,
- 0x7267, 0x7a46, 0x62ff, 0x54ea, 0x5450, 0x94a0, 0x90a3, 0x5a1c,
- 0x7eb3, 0x6c16, 0x4e43, 0x5976, 0x8010, 0x5948, 0x5357, 0x7537,
- 0x96be, 0x56ca, 0x6320, 0x8111, 0x607c, 0x95f9, 0x6dd6, 0x5462,
- 0x9981, 0x5185, 0x5ae9, 0x80fd, 0x59ae, 0x9713, 0x502a, 0x6ce5,
- 0x5c3c, 0x62df, 0x4f60, 0x533f, 0x817b, 0x9006, 0x6eba, 0x852b,
- 0x62c8, 0x5e74, 0x78be, 0x64b5, 0x637b, 0x5ff5, 0x5a18, 0x917f,
- 0x9e1f, 0x5c3f, 0x634f, 0x8042, 0x5b7d, 0x556e, 0x954a, 0x954d,
- 0x6d85, 0x60a8, 0x67e0, 0x72de, 0x51dd, 0x5b81,
- /* 0xc5 */
- 0x81d4, 0x81d5, 0x81d6, 0x81d7, 0x81d8, 0x81d9, 0x81da, 0x81db,
- 0x81dc, 0x81dd, 0x81de, 0x81df, 0x81e0, 0x81e1, 0x81e2, 0x81e4,
- 0x81e5, 0x81e6, 0x81e8, 0x81e9, 0x81eb, 0x81ee, 0x81ef, 0x81f0,
- 0x81f1, 0x81f2, 0x81f5, 0x81f6, 0x81f7, 0x81f8, 0x81f9, 0x81fa,
- 0x81fd, 0x81ff, 0x8203, 0x8207, 0x8208, 0x8209, 0x820a, 0x820b,
- 0x820e, 0x820f, 0x8211, 0x8213, 0x8215, 0x8216, 0x8217, 0x8218,
- 0x8219, 0x821a, 0x821d, 0x8220, 0x8224, 0x8225, 0x8226, 0x8227,
- 0x8229, 0x822e, 0x8232, 0x823a, 0x823c, 0x823d, 0x823f, 0x8240,
- 0x8241, 0x8242, 0x8243, 0x8245, 0x8246, 0x8248, 0x824a, 0x824c,
- 0x824d, 0x824e, 0x8250, 0x8251, 0x8252, 0x8253, 0x8254, 0x8255,
- 0x8256, 0x8257, 0x8259, 0x825b, 0x825c, 0x825d, 0x825e, 0x8260,
- 0x8261, 0x8262, 0x8263, 0x8264, 0x8265, 0x8266, 0x8267, 0x8269,
- 0x62e7, 0x6cde, 0x725b, 0x626d, 0x94ae, 0x7ebd, 0x8113, 0x6d53,
- 0x519c, 0x5f04, 0x5974, 0x52aa, 0x6012, 0x5973, 0x6696, 0x8650,
- 0x759f, 0x632a, 0x61e6, 0x7cef, 0x8bfa, 0x54e6, 0x6b27, 0x9e25,
- 0x6bb4, 0x85d5, 0x5455, 0x5076, 0x6ca4, 0x556a, 0x8db4, 0x722c,
- 0x5e15, 0x6015, 0x7436, 0x62cd, 0x6392, 0x724c, 0x5f98, 0x6e43,
- 0x6d3e, 0x6500, 0x6f58, 0x76d8, 0x78d0, 0x76fc, 0x7554, 0x5224,
- 0x53db, 0x4e53, 0x5e9e, 0x65c1, 0x802a, 0x80d6, 0x629b, 0x5486,
- 0x5228, 0x70ae, 0x888d, 0x8dd1, 0x6ce1, 0x5478, 0x80da, 0x57f9,
- 0x88f4, 0x8d54, 0x966a, 0x914d, 0x4f69, 0x6c9b, 0x55b7, 0x76c6,
- 0x7830, 0x62a8, 0x70f9, 0x6f8e, 0x5f6d, 0x84ec, 0x68da, 0x787c,
- 0x7bf7, 0x81a8, 0x670b, 0x9e4f, 0x6367, 0x78b0, 0x576f, 0x7812,
- 0x9739, 0x6279, 0x62ab, 0x5288, 0x7435, 0x6bd7,
- /* 0xc6 */
- 0x826a, 0x826b, 0x826c, 0x826d, 0x8271, 0x8275, 0x8276, 0x8277,
- 0x8278, 0x827b, 0x827c, 0x8280, 0x8281, 0x8283, 0x8285, 0x8286,
- 0x8287, 0x8289, 0x828c, 0x8290, 0x8293, 0x8294, 0x8295, 0x8296,
- 0x829a, 0x829b, 0x829e, 0x82a0, 0x82a2, 0x82a3, 0x82a7, 0x82b2,
- 0x82b5, 0x82b6, 0x82ba, 0x82bb, 0x82bc, 0x82bf, 0x82c0, 0x82c2,
- 0x82c3, 0x82c5, 0x82c6, 0x82c9, 0x82d0, 0x82d6, 0x82d9, 0x82da,
- 0x82dd, 0x82e2, 0x82e7, 0x82e8, 0x82e9, 0x82ea, 0x82ec, 0x82ed,
- 0x82ee, 0x82f0, 0x82f2, 0x82f3, 0x82f5, 0x82f6, 0x82f8, 0x82fa,
- 0x82fc, 0x82fd, 0x82fe, 0x82ff, 0x8300, 0x830a, 0x830b, 0x830d,
- 0x8310, 0x8312, 0x8313, 0x8316, 0x8318, 0x8319, 0x831d, 0x831e,
- 0x831f, 0x8320, 0x8321, 0x8322, 0x8323, 0x8324, 0x8325, 0x8326,
- 0x8329, 0x832a, 0x832e, 0x8330, 0x8332, 0x8337, 0x833b, 0x833d,
- 0x5564, 0x813e, 0x75b2, 0x76ae, 0x5339, 0x75de, 0x50fb, 0x5c41,
- 0x8b6c, 0x7bc7, 0x504f, 0x7247, 0x9a97, 0x98d8, 0x6f02, 0x74e2,
- 0x7968, 0x6487, 0x77a5, 0x62fc, 0x9891, 0x8d2b, 0x54c1, 0x8058,
- 0x4e52, 0x576a, 0x82f9, 0x840d, 0x5e73, 0x51ed, 0x74f6, 0x8bc4,
- 0x5c4f, 0x5761, 0x6cfc, 0x9887, 0x5a46, 0x7834, 0x9b44, 0x8feb,
- 0x7c95, 0x5256, 0x6251, 0x94fa, 0x4ec6, 0x8386, 0x8461, 0x83e9,
- 0x84b2, 0x57d4, 0x6734, 0x5703, 0x666e, 0x6d66, 0x8c31, 0x66dd,
- 0x7011, 0x671f, 0x6b3a, 0x6816, 0x621a, 0x59bb, 0x4e03, 0x51c4,
- 0x6f06, 0x67d2, 0x6c8f, 0x5176, 0x68cb, 0x5947, 0x6b67, 0x7566,
- 0x5d0e, 0x8110, 0x9f50, 0x65d7, 0x7948, 0x7941, 0x9a91, 0x8d77,
- 0x5c82, 0x4e5e, 0x4f01, 0x542f, 0x5951, 0x780c, 0x5668, 0x6c14,
- 0x8fc4, 0x5f03, 0x6c7d, 0x6ce3, 0x8bab, 0x6390,
- /* 0xc7 */
- 0x833e, 0x833f, 0x8341, 0x8342, 0x8344, 0x8345, 0x8348, 0x834a,
- 0x834b, 0x834c, 0x834d, 0x834e, 0x8353, 0x8355, 0x8356, 0x8357,
- 0x8358, 0x8359, 0x835d, 0x8362, 0x8370, 0x8371, 0x8372, 0x8373,
- 0x8374, 0x8375, 0x8376, 0x8379, 0x837a, 0x837e, 0x837f, 0x8380,
- 0x8381, 0x8382, 0x8383, 0x8384, 0x8387, 0x8388, 0x838a, 0x838b,
- 0x838c, 0x838d, 0x838f, 0x8390, 0x8391, 0x8394, 0x8395, 0x8396,
- 0x8397, 0x8399, 0x839a, 0x839d, 0x839f, 0x83a1, 0x83a2, 0x83a3,
- 0x83a4, 0x83a5, 0x83a6, 0x83a7, 0x83ac, 0x83ad, 0x83ae, 0x83af,
- 0x83b5, 0x83bb, 0x83be, 0x83bf, 0x83c2, 0x83c3, 0x83c4, 0x83c6,
- 0x83c8, 0x83c9, 0x83cb, 0x83cd, 0x83ce, 0x83d0, 0x83d1, 0x83d2,
- 0x83d3, 0x83d5, 0x83d7, 0x83d9, 0x83da, 0x83db, 0x83de, 0x83e2,
- 0x83e3, 0x83e4, 0x83e6, 0x83e7, 0x83e8, 0x83eb, 0x83ec, 0x83ed,
- 0x6070, 0x6d3d, 0x7275, 0x6266, 0x948e, 0x94c5, 0x5343, 0x8fc1,
- 0x7b7e, 0x4edf, 0x8c26, 0x4e7e, 0x9ed4, 0x94b1, 0x94b3, 0x524d,
- 0x6f5c, 0x9063, 0x6d45, 0x8c34, 0x5811, 0x5d4c, 0x6b20, 0x6b49,
- 0x67aa, 0x545b, 0x8154, 0x7f8c, 0x5899, 0x8537, 0x5f3a, 0x62a2,
- 0x6a47, 0x9539, 0x6572, 0x6084, 0x6865, 0x77a7, 0x4e54, 0x4fa8,
- 0x5de7, 0x9798, 0x64ac, 0x7fd8, 0x5ced, 0x4fcf, 0x7a8d, 0x5207,
- 0x8304, 0x4e14, 0x602f, 0x7a83, 0x94a6, 0x4fb5, 0x4eb2, 0x79e6,
- 0x7434, 0x52e4, 0x82b9, 0x64d2, 0x79bd, 0x5bdd, 0x6c81, 0x9752,
- 0x8f7b, 0x6c22, 0x503e, 0x537f, 0x6e05, 0x64ce, 0x6674, 0x6c30,
- 0x60c5, 0x9877, 0x8bf7, 0x5e86, 0x743c, 0x7a77, 0x79cb, 0x4e18,
- 0x90b1, 0x7403, 0x6c42, 0x56da, 0x914b, 0x6cc5, 0x8d8b, 0x533a,
- 0x86c6, 0x66f2, 0x8eaf, 0x5c48, 0x9a71, 0x6e20,
- /* 0xc8 */
- 0x83ee, 0x83ef, 0x83f3, 0x83f4, 0x83f5, 0x83f6, 0x83f7, 0x83fa,
- 0x83fb, 0x83fc, 0x83fe, 0x83ff, 0x8400, 0x8402, 0x8405, 0x8407,
- 0x8408, 0x8409, 0x840a, 0x8410, 0x8412, 0x8413, 0x8414, 0x8415,
- 0x8416, 0x8417, 0x8419, 0x841a, 0x841b, 0x841e, 0x841f, 0x8420,
- 0x8421, 0x8422, 0x8423, 0x8429, 0x842a, 0x842b, 0x842c, 0x842d,
- 0x842e, 0x842f, 0x8430, 0x8432, 0x8433, 0x8434, 0x8435, 0x8436,
- 0x8437, 0x8439, 0x843a, 0x843b, 0x843e, 0x843f, 0x8440, 0x8441,
- 0x8442, 0x8443, 0x8444, 0x8445, 0x8447, 0x8448, 0x8449, 0x844a,
- 0x844b, 0x844c, 0x844d, 0x844e, 0x844f, 0x8450, 0x8452, 0x8453,
- 0x8454, 0x8455, 0x8456, 0x8458, 0x845d, 0x845e, 0x845f, 0x8460,
- 0x8462, 0x8464, 0x8465, 0x8466, 0x8467, 0x8468, 0x846a, 0x846e,
- 0x846f, 0x8470, 0x8472, 0x8474, 0x8477, 0x8479, 0x847b, 0x847c,
- 0x53d6, 0x5a36, 0x9f8b, 0x8da3, 0x53bb, 0x5708, 0x98a7, 0x6743,
- 0x919b, 0x6cc9, 0x5168, 0x75ca, 0x62f3, 0x72ac, 0x5238, 0x529d,
- 0x7f3a, 0x7094, 0x7638, 0x5374, 0x9e4a, 0x69b7, 0x786e, 0x96c0,
- 0x88d9, 0x7fa4, 0x7136, 0x71c3, 0x5189, 0x67d3, 0x74e4, 0x58e4,
- 0x6518, 0x56b7, 0x8ba9, 0x9976, 0x6270, 0x7ed5, 0x60f9, 0x70ed,
- 0x58ec, 0x4ec1, 0x4eba, 0x5fcd, 0x97e7, 0x4efb, 0x8ba4, 0x5203,
- 0x598a, 0x7eab, 0x6254, 0x4ecd, 0x65e5, 0x620e, 0x8338, 0x84c9,
- 0x8363, 0x878d, 0x7194, 0x6eb6, 0x5bb9, 0x7ed2, 0x5197, 0x63c9,
- 0x67d4, 0x8089, 0x8339, 0x8815, 0x5112, 0x5b7a, 0x5982, 0x8fb1,
- 0x4e73, 0x6c5d, 0x5165, 0x8925, 0x8f6f, 0x962e, 0x854a, 0x745e,
- 0x9510, 0x95f0, 0x6da6, 0x82e5, 0x5f31, 0x6492, 0x6d12, 0x8428,
- 0x816e, 0x9cc3, 0x585e, 0x8d5b, 0x4e09, 0x53c1,
- /* 0xc9 */
- 0x847d, 0x847e, 0x847f, 0x8480, 0x8481, 0x8483, 0x8484, 0x8485,
- 0x8486, 0x848a, 0x848d, 0x848f, 0x8490, 0x8491, 0x8492, 0x8493,
- 0x8494, 0x8495, 0x8496, 0x8498, 0x849a, 0x849b, 0x849d, 0x849e,
- 0x849f, 0x84a0, 0x84a2, 0x84a3, 0x84a4, 0x84a5, 0x84a6, 0x84a7,
- 0x84a8, 0x84a9, 0x84aa, 0x84ab, 0x84ac, 0x84ad, 0x84ae, 0x84b0,
- 0x84b1, 0x84b3, 0x84b5, 0x84b6, 0x84b7, 0x84bb, 0x84bc, 0x84be,
- 0x84c0, 0x84c2, 0x84c3, 0x84c5, 0x84c6, 0x84c7, 0x84c8, 0x84cb,
- 0x84cc, 0x84ce, 0x84cf, 0x84d2, 0x84d4, 0x84d5, 0x84d7, 0x84d8,
- 0x84d9, 0x84da, 0x84db, 0x84dc, 0x84de, 0x84e1, 0x84e2, 0x84e4,
- 0x84e7, 0x84e8, 0x84e9, 0x84ea, 0x84eb, 0x84ed, 0x84ee, 0x84ef,
- 0x84f1, 0x84f2, 0x84f3, 0x84f4, 0x84f5, 0x84f6, 0x84f7, 0x84f8,
- 0x84f9, 0x84fa, 0x84fb, 0x84fd, 0x84fe, 0x8500, 0x8501, 0x8502,
- 0x4f1e, 0x6563, 0x6851, 0x55d3, 0x4e27, 0x6414, 0x9a9a, 0x626b,
- 0x5ac2, 0x745f, 0x8272, 0x6da9, 0x68ee, 0x50e7, 0x838e, 0x7802,
- 0x6740, 0x5239, 0x6c99, 0x7eb1, 0x50bb, 0x5565, 0x715e, 0x7b5b,
- 0x6652, 0x73ca, 0x82eb, 0x6749, 0x5c71, 0x5220, 0x717d, 0x886b,
- 0x95ea, 0x9655, 0x64c5, 0x8d61, 0x81b3, 0x5584, 0x6c55, 0x6247,
- 0x7f2e, 0x5892, 0x4f24, 0x5546, 0x8d4f, 0x664c, 0x4e0a, 0x5c1a,
- 0x88f3, 0x68a2, 0x634e, 0x7a0d, 0x70e7, 0x828d, 0x52fa, 0x97f6,
- 0x5c11, 0x54e8, 0x90b5, 0x7ecd, 0x5962, 0x8d4a, 0x86c7, 0x820c,
- 0x820d, 0x8d66, 0x6444, 0x5c04, 0x6151, 0x6d89, 0x793e, 0x8bbe,
- 0x7837, 0x7533, 0x547b, 0x4f38, 0x8eab, 0x6df1, 0x5a20, 0x7ec5,
- 0x795e, 0x6c88, 0x5ba1, 0x5a76, 0x751a, 0x80be, 0x614e, 0x6e17,
- 0x58f0, 0x751f, 0x7525, 0x7272, 0x5347, 0x7ef3,
- /* 0xca */
- 0x8503, 0x8504, 0x8505, 0x8506, 0x8507, 0x8508, 0x8509, 0x850a,
- 0x850b, 0x850d, 0x850e, 0x850f, 0x8510, 0x8512, 0x8514, 0x8515,
- 0x8516, 0x8518, 0x8519, 0x851b, 0x851c, 0x851d, 0x851e, 0x8520,
- 0x8522, 0x8523, 0x8524, 0x8525, 0x8526, 0x8527, 0x8528, 0x8529,
- 0x852a, 0x852d, 0x852e, 0x852f, 0x8530, 0x8531, 0x8532, 0x8533,
- 0x8534, 0x8535, 0x8536, 0x853e, 0x853f, 0x8540, 0x8541, 0x8542,
- 0x8544, 0x8545, 0x8546, 0x8547, 0x854b, 0x854c, 0x854d, 0x854e,
- 0x854f, 0x8550, 0x8551, 0x8552, 0x8553, 0x8554, 0x8555, 0x8557,
- 0x8558, 0x855a, 0x855b, 0x855c, 0x855d, 0x855f, 0x8560, 0x8561,
- 0x8562, 0x8563, 0x8565, 0x8566, 0x8567, 0x8569, 0x856a, 0x856b,
- 0x856c, 0x856d, 0x856e, 0x856f, 0x8570, 0x8571, 0x8573, 0x8575,
- 0x8576, 0x8577, 0x8578, 0x857c, 0x857d, 0x857f, 0x8580, 0x8581,
- 0x7701, 0x76db, 0x5269, 0x80dc, 0x5723, 0x5e08, 0x5931, 0x72ee,
- 0x65bd, 0x6e7f, 0x8bd7, 0x5c38, 0x8671, 0x5341, 0x77f3, 0x62fe,
- 0x65f6, 0x4ec0, 0x98df, 0x8680, 0x5b9e, 0x8bc6, 0x53f2, 0x77e2,
- 0x4f7f, 0x5c4e, 0x9a76, 0x59cb, 0x5f0f, 0x793a, 0x58eb, 0x4e16,
- 0x67ff, 0x4e8b, 0x62ed, 0x8a93, 0x901d, 0x52bf, 0x662f, 0x55dc,
- 0x566c, 0x9002, 0x4ed5, 0x4f8d, 0x91ca, 0x9970, 0x6c0f, 0x5e02,
- 0x6043, 0x5ba4, 0x89c6, 0x8bd5, 0x6536, 0x624b, 0x9996, 0x5b88,
- 0x5bff, 0x6388, 0x552e, 0x53d7, 0x7626, 0x517d, 0x852c, 0x67a2,
- 0x68b3, 0x6b8a, 0x6292, 0x8f93, 0x53d4, 0x8212, 0x6dd1, 0x758f,
- 0x4e66, 0x8d4e, 0x5b70, 0x719f, 0x85af, 0x6691, 0x66d9, 0x7f72,
- 0x8700, 0x9ecd, 0x9f20, 0x5c5e, 0x672f, 0x8ff0, 0x6811, 0x675f,
- 0x620d, 0x7ad6, 0x5885, 0x5eb6, 0x6570, 0x6f31,
- /* 0xcb */
- 0x8582, 0x8583, 0x8586, 0x8588, 0x8589, 0x858a, 0x858b, 0x858c,
- 0x858d, 0x858e, 0x8590, 0x8591, 0x8592, 0x8593, 0x8594, 0x8595,
- 0x8596, 0x8597, 0x8598, 0x8599, 0x859a, 0x859d, 0x859e, 0x859f,
- 0x85a0, 0x85a1, 0x85a2, 0x85a3, 0x85a5, 0x85a6, 0x85a7, 0x85a9,
- 0x85ab, 0x85ac, 0x85ad, 0x85b1, 0x85b2, 0x85b3, 0x85b4, 0x85b5,
- 0x85b6, 0x85b8, 0x85ba, 0x85bb, 0x85bc, 0x85bd, 0x85be, 0x85bf,
- 0x85c0, 0x85c2, 0x85c3, 0x85c4, 0x85c5, 0x85c6, 0x85c7, 0x85c8,
- 0x85ca, 0x85cb, 0x85cc, 0x85cd, 0x85ce, 0x85d1, 0x85d2, 0x85d4,
- 0x85d6, 0x85d7, 0x85d8, 0x85d9, 0x85da, 0x85db, 0x85dd, 0x85de,
- 0x85df, 0x85e0, 0x85e1, 0x85e2, 0x85e3, 0x85e5, 0x85e6, 0x85e7,
- 0x85e8, 0x85ea, 0x85eb, 0x85ec, 0x85ed, 0x85ee, 0x85ef, 0x85f0,
- 0x85f1, 0x85f2, 0x85f3, 0x85f4, 0x85f5, 0x85f6, 0x85f7, 0x85f8,
- 0x6055, 0x5237, 0x800d, 0x6454, 0x8870, 0x7529, 0x5e05, 0x6813,
- 0x62f4, 0x971c, 0x53cc, 0x723d, 0x8c01, 0x6c34, 0x7761, 0x7a0e,
- 0x542e, 0x77ac, 0x987a, 0x821c, 0x8bf4, 0x7855, 0x6714, 0x70c1,
- 0x65af, 0x6495, 0x5636, 0x601d, 0x79c1, 0x53f8, 0x4e1d, 0x6b7b,
- 0x8086, 0x5bfa, 0x55e3, 0x56db, 0x4f3a, 0x4f3c, 0x9972, 0x5df3,
- 0x677e, 0x8038, 0x6002, 0x9882, 0x9001, 0x5b8b, 0x8bbc, 0x8bf5,
- 0x641c, 0x8258, 0x64de, 0x55fd, 0x82cf, 0x9165, 0x4fd7, 0x7d20,
- 0x901f, 0x7c9f, 0x50f3, 0x5851, 0x6eaf, 0x5bbf, 0x8bc9, 0x8083,
- 0x9178, 0x849c, 0x7b97, 0x867d, 0x968b, 0x968f, 0x7ee5, 0x9ad3,
- 0x788e, 0x5c81, 0x7a57, 0x9042, 0x96a7, 0x795f, 0x5b59, 0x635f,
- 0x7b0b, 0x84d1, 0x68ad, 0x5506, 0x7f29, 0x7410, 0x7d22, 0x9501,
- 0x6240, 0x584c, 0x4ed6, 0x5b83, 0x5979, 0x5854,
- /* 0xcc */
- 0x85f9, 0x85fa, 0x85fc, 0x85fd, 0x85fe, 0x8600, 0x8601, 0x8602,
- 0x8603, 0x8604, 0x8606, 0x8607, 0x8608, 0x8609, 0x860a, 0x860b,
- 0x860c, 0x860d, 0x860e, 0x860f, 0x8610, 0x8612, 0x8613, 0x8614,
- 0x8615, 0x8617, 0x8618, 0x8619, 0x861a, 0x861b, 0x861c, 0x861d,
- 0x861e, 0x861f, 0x8620, 0x8621, 0x8622, 0x8623, 0x8624, 0x8625,
- 0x8626, 0x8628, 0x862a, 0x862b, 0x862c, 0x862d, 0x862e, 0x862f,
- 0x8630, 0x8631, 0x8632, 0x8633, 0x8634, 0x8635, 0x8636, 0x8637,
- 0x8639, 0x863a, 0x863b, 0x863d, 0x863e, 0x863f, 0x8640, 0x8641,
- 0x8642, 0x8643, 0x8644, 0x8645, 0x8646, 0x8647, 0x8648, 0x8649,
- 0x864a, 0x864b, 0x864c, 0x8652, 0x8653, 0x8655, 0x8656, 0x8657,
- 0x8658, 0x8659, 0x865b, 0x865c, 0x865d, 0x865f, 0x8660, 0x8661,
- 0x8663, 0x8664, 0x8665, 0x8666, 0x8667, 0x8668, 0x8669, 0x866a,
- 0x736d, 0x631e, 0x8e4b, 0x8e0f, 0x80ce, 0x82d4, 0x62ac, 0x53f0,
- 0x6cf0, 0x915e, 0x592a, 0x6001, 0x6c70, 0x574d, 0x644a, 0x8d2a,
- 0x762b, 0x6ee9, 0x575b, 0x6a80, 0x75f0, 0x6f6d, 0x8c2d, 0x8c08,
- 0x5766, 0x6bef, 0x8892, 0x78b3, 0x63a2, 0x53f9, 0x70ad, 0x6c64,
- 0x5858, 0x642a, 0x5802, 0x68e0, 0x819b, 0x5510, 0x7cd6, 0x5018,
- 0x8eba, 0x6dcc, 0x8d9f, 0x70eb, 0x638f, 0x6d9b, 0x6ed4, 0x7ee6,
- 0x8404, 0x6843, 0x9003, 0x6dd8, 0x9676, 0x8ba8, 0x5957, 0x7279,
- 0x85e4, 0x817e, 0x75bc, 0x8a8a, 0x68af, 0x5254, 0x8e22, 0x9511,
- 0x63d0, 0x9898, 0x8e44, 0x557c, 0x4f53, 0x66ff, 0x568f, 0x60d5,
- 0x6d95, 0x5243, 0x5c49, 0x5929, 0x6dfb, 0x586b, 0x7530, 0x751c,
- 0x606c, 0x8214, 0x8146, 0x6311, 0x6761, 0x8fe2, 0x773a, 0x8df3,
- 0x8d34, 0x94c1, 0x5e16, 0x5385, 0x542c, 0x70c3,
- /* 0xcd */
- 0x866d, 0x866f, 0x8670, 0x8672, 0x8673, 0x8674, 0x8675, 0x8676,
- 0x8677, 0x8678, 0x8683, 0x8684, 0x8685, 0x8686, 0x8687, 0x8688,
- 0x8689, 0x868e, 0x868f, 0x8690, 0x8691, 0x8692, 0x8694, 0x8696,
- 0x8697, 0x8698, 0x8699, 0x869a, 0x869b, 0x869e, 0x869f, 0x86a0,
- 0x86a1, 0x86a2, 0x86a5, 0x86a6, 0x86ab, 0x86ad, 0x86ae, 0x86b2,
- 0x86b3, 0x86b7, 0x86b8, 0x86b9, 0x86bb, 0x86bc, 0x86bd, 0x86be,
- 0x86bf, 0x86c1, 0x86c2, 0x86c3, 0x86c5, 0x86c8, 0x86cc, 0x86cd,
- 0x86d2, 0x86d3, 0x86d5, 0x86d6, 0x86d7, 0x86da, 0x86dc, 0x86dd,
- 0x86e0, 0x86e1, 0x86e2, 0x86e3, 0x86e5, 0x86e6, 0x86e7, 0x86e8,
- 0x86ea, 0x86eb, 0x86ec, 0x86ef, 0x86f5, 0x86f6, 0x86f7, 0x86fa,
- 0x86fb, 0x86fc, 0x86fd, 0x86ff, 0x8701, 0x8704, 0x8705, 0x8706,
- 0x870b, 0x870c, 0x870e, 0x870f, 0x8710, 0x8711, 0x8714, 0x8716,
- 0x6c40, 0x5ef7, 0x505c, 0x4ead, 0x5ead, 0x633a, 0x8247, 0x901a,
- 0x6850, 0x916e, 0x77b3, 0x540c, 0x94dc, 0x5f64, 0x7ae5, 0x6876,
- 0x6345, 0x7b52, 0x7edf, 0x75db, 0x5077, 0x6295, 0x5934, 0x900f,
- 0x51f8, 0x79c3, 0x7a81, 0x56fe, 0x5f92, 0x9014, 0x6d82, 0x5c60,
- 0x571f, 0x5410, 0x5154, 0x6e4d, 0x56e2, 0x63a8, 0x9893, 0x817f,
- 0x8715, 0x892a, 0x9000, 0x541e, 0x5c6f, 0x81c0, 0x62d6, 0x6258,
- 0x8131, 0x9e35, 0x9640, 0x9a6e, 0x9a7c, 0x692d, 0x59a5, 0x62d3,
- 0x553e, 0x6316, 0x54c7, 0x86d9, 0x6d3c, 0x5a03, 0x74e6, 0x889c,
- 0x6b6a, 0x5916, 0x8c4c, 0x5f2f, 0x6e7e, 0x73a9, 0x987d, 0x4e38,
- 0x70f7, 0x5b8c, 0x7897, 0x633d, 0x665a, 0x7696, 0x60cb, 0x5b9b,
- 0x5a49, 0x4e07, 0x8155, 0x6c6a, 0x738b, 0x4ea1, 0x6789, 0x7f51,
- 0x5f80, 0x65fa, 0x671b, 0x5fd8, 0x5984, 0x5a01,
- /* 0xce */
- 0x8719, 0x871b, 0x871d, 0x871f, 0x8720, 0x8724, 0x8726, 0x8727,
- 0x8728, 0x872a, 0x872b, 0x872c, 0x872d, 0x872f, 0x8730, 0x8732,
- 0x8733, 0x8735, 0x8736, 0x8738, 0x8739, 0x873a, 0x873c, 0x873d,
- 0x8740, 0x8741, 0x8742, 0x8743, 0x8744, 0x8745, 0x8746, 0x874a,
- 0x874b, 0x874d, 0x874f, 0x8750, 0x8751, 0x8752, 0x8754, 0x8755,
- 0x8756, 0x8758, 0x875a, 0x875b, 0x875c, 0x875d, 0x875e, 0x875f,
- 0x8761, 0x8762, 0x8766, 0x8767, 0x8768, 0x8769, 0x876a, 0x876b,
- 0x876c, 0x876d, 0x876f, 0x8771, 0x8772, 0x8773, 0x8775, 0x8777,
- 0x8778, 0x8779, 0x877a, 0x877f, 0x8780, 0x8781, 0x8784, 0x8786,
- 0x8787, 0x8789, 0x878a, 0x878c, 0x878e, 0x878f, 0x8790, 0x8791,
- 0x8792, 0x8794, 0x8795, 0x8796, 0x8798, 0x8799, 0x879a, 0x879b,
- 0x879c, 0x879d, 0x879e, 0x87a0, 0x87a1, 0x87a2, 0x87a3, 0x87a4,
- 0x5dcd, 0x5fae, 0x5371, 0x97e6, 0x8fdd, 0x6845, 0x56f4, 0x552f,
- 0x60df, 0x4e3a, 0x6f4d, 0x7ef4, 0x82c7, 0x840e, 0x59d4, 0x4f1f,
- 0x4f2a, 0x5c3e, 0x7eac, 0x672a, 0x851a, 0x5473, 0x754f, 0x80c3,
- 0x5582, 0x9b4f, 0x4f4d, 0x6e2d, 0x8c13, 0x5c09, 0x6170, 0x536b,
- 0x761f, 0x6e29, 0x868a, 0x6587, 0x95fb, 0x7eb9, 0x543b, 0x7a33,
- 0x7d0a, 0x95ee, 0x55e1, 0x7fc1, 0x74ee, 0x631d, 0x8717, 0x6da1,
- 0x7a9d, 0x6211, 0x65a1, 0x5367, 0x63e1, 0x6c83, 0x5deb, 0x545c,
- 0x94a8, 0x4e4c, 0x6c61, 0x8bec, 0x5c4b, 0x65e0, 0x829c, 0x68a7,
- 0x543e, 0x5434, 0x6bcb, 0x6b66, 0x4e94, 0x6342, 0x5348, 0x821e,
- 0x4f0d, 0x4fae, 0x575e, 0x620a, 0x96fe, 0x6664, 0x7269, 0x52ff,
- 0x52a1, 0x609f, 0x8bef, 0x6614, 0x7199, 0x6790, 0x897f, 0x7852,
- 0x77fd, 0x6670, 0x563b, 0x5438, 0x9521, 0x727a,
- /* 0xcf */
- 0x87a5, 0x87a6, 0x87a7, 0x87a9, 0x87aa, 0x87ae, 0x87b0, 0x87b1,
- 0x87b2, 0x87b4, 0x87b6, 0x87b7, 0x87b8, 0x87b9, 0x87bb, 0x87bc,
- 0x87be, 0x87bf, 0x87c1, 0x87c2, 0x87c3, 0x87c4, 0x87c5, 0x87c7,
- 0x87c8, 0x87c9, 0x87cc, 0x87cd, 0x87ce, 0x87cf, 0x87d0, 0x87d4,
- 0x87d5, 0x87d6, 0x87d7, 0x87d8, 0x87d9, 0x87da, 0x87dc, 0x87dd,
- 0x87de, 0x87df, 0x87e1, 0x87e2, 0x87e3, 0x87e4, 0x87e6, 0x87e7,
- 0x87e8, 0x87e9, 0x87eb, 0x87ec, 0x87ed, 0x87ef, 0x87f0, 0x87f1,
- 0x87f2, 0x87f3, 0x87f4, 0x87f5, 0x87f6, 0x87f7, 0x87f8, 0x87fa,
- 0x87fb, 0x87fc, 0x87fd, 0x87ff, 0x8800, 0x8801, 0x8802, 0x8804,
- 0x8805, 0x8806, 0x8807, 0x8808, 0x8809, 0x880b, 0x880c, 0x880d,
- 0x880e, 0x880f, 0x8810, 0x8811, 0x8812, 0x8814, 0x8817, 0x8818,
- 0x8819, 0x881a, 0x881c, 0x881d, 0x881e, 0x881f, 0x8820, 0x8823,
- 0x7a00, 0x606f, 0x5e0c, 0x6089, 0x819d, 0x5915, 0x60dc, 0x7184,
- 0x70ef, 0x6eaa, 0x6c50, 0x7280, 0x6a84, 0x88ad, 0x5e2d, 0x4e60,
- 0x5ab3, 0x559c, 0x94e3, 0x6d17, 0x7cfb, 0x9699, 0x620f, 0x7ec6,
- 0x778e, 0x867e, 0x5323, 0x971e, 0x8f96, 0x6687, 0x5ce1, 0x4fa0,
- 0x72ed, 0x4e0b, 0x53a6, 0x590f, 0x5413, 0x6380, 0x9528, 0x5148,
- 0x4ed9, 0x9c9c, 0x7ea4, 0x54b8, 0x8d24, 0x8854, 0x8237, 0x95f2,
- 0x6d8e, 0x5f26, 0x5acc, 0x663e, 0x9669, 0x73b0, 0x732e, 0x53bf,
- 0x817a, 0x9985, 0x7fa1, 0x5baa, 0x9677, 0x9650, 0x7ebf, 0x76f8,
- 0x53a2, 0x9576, 0x9999, 0x7bb1, 0x8944, 0x6e58, 0x4e61, 0x7fd4,
- 0x7965, 0x8be6, 0x60f3, 0x54cd, 0x4eab, 0x9879, 0x5df7, 0x6a61,
- 0x50cf, 0x5411, 0x8c61, 0x8427, 0x785d, 0x9704, 0x524a, 0x54ee,
- 0x56a3, 0x9500, 0x6d88, 0x5bb5, 0x6dc6, 0x6653,
- /* 0xd0 */
- 0x8824, 0x8825, 0x8826, 0x8827, 0x8828, 0x8829, 0x882a, 0x882b,
- 0x882c, 0x882d, 0x882e, 0x882f, 0x8830, 0x8831, 0x8833, 0x8834,
- 0x8835, 0x8836, 0x8837, 0x8838, 0x883a, 0x883b, 0x883d, 0x883e,
- 0x883f, 0x8841, 0x8842, 0x8843, 0x8846, 0x8847, 0x8848, 0x8849,
- 0x884a, 0x884b, 0x884e, 0x884f, 0x8850, 0x8851, 0x8852, 0x8853,
- 0x8855, 0x8856, 0x8858, 0x885a, 0x885b, 0x885c, 0x885d, 0x885e,
- 0x885f, 0x8860, 0x8866, 0x8867, 0x886a, 0x886d, 0x886f, 0x8871,
- 0x8873, 0x8874, 0x8875, 0x8876, 0x8878, 0x8879, 0x887a, 0x887b,
- 0x887c, 0x8880, 0x8883, 0x8886, 0x8887, 0x8889, 0x888a, 0x888c,
- 0x888e, 0x888f, 0x8890, 0x8891, 0x8893, 0x8894, 0x8895, 0x8897,
- 0x8898, 0x8899, 0x889a, 0x889b, 0x889d, 0x889e, 0x889f, 0x88a0,
- 0x88a1, 0x88a3, 0x88a5, 0x88a6, 0x88a7, 0x88a8, 0x88a9, 0x88aa,
- 0x5c0f, 0x5b5d, 0x6821, 0x8096, 0x5578, 0x7b11, 0x6548, 0x6954,
- 0x4e9b, 0x6b47, 0x874e, 0x978b, 0x534f, 0x631f, 0x643a, 0x90aa,
- 0x659c, 0x80c1, 0x8c10, 0x5199, 0x68b0, 0x5378, 0x87f9, 0x61c8,
- 0x6cc4, 0x6cfb, 0x8c22, 0x5c51, 0x85aa, 0x82af, 0x950c, 0x6b23,
- 0x8f9b, 0x65b0, 0x5ffb, 0x5fc3, 0x4fe1, 0x8845, 0x661f, 0x8165,
- 0x7329, 0x60fa, 0x5174, 0x5211, 0x578b, 0x5f62, 0x90a2, 0x884c,
- 0x9192, 0x5e78, 0x674f, 0x6027, 0x59d3, 0x5144, 0x51f6, 0x80f8,
- 0x5308, 0x6c79, 0x96c4, 0x718a, 0x4f11, 0x4fee, 0x7f9e, 0x673d,
- 0x55c5, 0x9508, 0x79c0, 0x8896, 0x7ee3, 0x589f, 0x620c, 0x9700,
- 0x865a, 0x5618, 0x987b, 0x5f90, 0x8bb8, 0x84c4, 0x9157, 0x53d9,
- 0x65ed, 0x5e8f, 0x755c, 0x6064, 0x7d6e, 0x5a7f, 0x7eea, 0x7eed,
- 0x8f69, 0x55a7, 0x5ba3, 0x60ac, 0x65cb, 0x7384,
- /* 0xd1 */
- 0x88ac, 0x88ae, 0x88af, 0x88b0, 0x88b2, 0x88b3, 0x88b4, 0x88b5,
- 0x88b6, 0x88b8, 0x88b9, 0x88ba, 0x88bb, 0x88bd, 0x88be, 0x88bf,
- 0x88c0, 0x88c3, 0x88c4, 0x88c7, 0x88c8, 0x88ca, 0x88cb, 0x88cc,
- 0x88cd, 0x88cf, 0x88d0, 0x88d1, 0x88d3, 0x88d6, 0x88d7, 0x88da,
- 0x88db, 0x88dc, 0x88dd, 0x88de, 0x88e0, 0x88e1, 0x88e6, 0x88e7,
- 0x88e9, 0x88ea, 0x88eb, 0x88ec, 0x88ed, 0x88ee, 0x88ef, 0x88f2,
- 0x88f5, 0x88f6, 0x88f7, 0x88fa, 0x88fb, 0x88fd, 0x88ff, 0x8900,
- 0x8901, 0x8903, 0x8904, 0x8905, 0x8906, 0x8907, 0x8908, 0x8909,
- 0x890b, 0x890c, 0x890d, 0x890e, 0x890f, 0x8911, 0x8914, 0x8915,
- 0x8916, 0x8917, 0x8918, 0x891c, 0x891d, 0x891e, 0x891f, 0x8920,
- 0x8922, 0x8923, 0x8924, 0x8926, 0x8927, 0x8928, 0x8929, 0x892c,
- 0x892d, 0x892e, 0x892f, 0x8931, 0x8932, 0x8933, 0x8935, 0x8937,
- 0x9009, 0x7663, 0x7729, 0x7eda, 0x9774, 0x859b, 0x5b66, 0x7a74,
- 0x96ea, 0x8840, 0x52cb, 0x718f, 0x5faa, 0x65ec, 0x8be2, 0x5bfb,
- 0x9a6f, 0x5de1, 0x6b89, 0x6c5b, 0x8bad, 0x8baf, 0x900a, 0x8fc5,
- 0x538b, 0x62bc, 0x9e26, 0x9e2d, 0x5440, 0x4e2b, 0x82bd, 0x7259,
- 0x869c, 0x5d16, 0x8859, 0x6daf, 0x96c5, 0x54d1, 0x4e9a, 0x8bb6,
- 0x7109, 0x54bd, 0x9609, 0x70df, 0x6df9, 0x76d0, 0x4e25, 0x7814,
- 0x8712, 0x5ca9, 0x5ef6, 0x8a00, 0x989c, 0x960e, 0x708e, 0x6cbf,
- 0x5944, 0x63a9, 0x773c, 0x884d, 0x6f14, 0x8273, 0x5830, 0x71d5,
- 0x538c, 0x781a, 0x96c1, 0x5501, 0x5f66, 0x7130, 0x5bb4, 0x8c1a,
- 0x9a8c, 0x6b83, 0x592e, 0x9e2f, 0x79e7, 0x6768, 0x626c, 0x4f6f,
- 0x75a1, 0x7f8a, 0x6d0b, 0x9633, 0x6c27, 0x4ef0, 0x75d2, 0x517b,
- 0x6837, 0x6f3e, 0x9080, 0x8170, 0x5996, 0x7476,
- /* 0xd2 */
- 0x8938, 0x8939, 0x893a, 0x893b, 0x893c, 0x893d, 0x893e, 0x893f,
- 0x8940, 0x8942, 0x8943, 0x8945, 0x8946, 0x8947, 0x8948, 0x8949,
- 0x894a, 0x894b, 0x894c, 0x894d, 0x894e, 0x894f, 0x8950, 0x8951,
- 0x8952, 0x8953, 0x8954, 0x8955, 0x8956, 0x8957, 0x8958, 0x8959,
- 0x895a, 0x895b, 0x895c, 0x895d, 0x8960, 0x8961, 0x8962, 0x8963,
- 0x8964, 0x8965, 0x8967, 0x8968, 0x8969, 0x896a, 0x896b, 0x896c,
- 0x896d, 0x896e, 0x896f, 0x8970, 0x8971, 0x8972, 0x8973, 0x8974,
- 0x8975, 0x8976, 0x8977, 0x8978, 0x8979, 0x897a, 0x897c, 0x897d,
- 0x897e, 0x8980, 0x8982, 0x8984, 0x8985, 0x8987, 0x8988, 0x8989,
- 0x898a, 0x898b, 0x898c, 0x898d, 0x898e, 0x898f, 0x8990, 0x8991,
- 0x8992, 0x8993, 0x8994, 0x8995, 0x8996, 0x8997, 0x8998, 0x8999,
- 0x899a, 0x899b, 0x899c, 0x899d, 0x899e, 0x899f, 0x89a0, 0x89a1,
- 0x6447, 0x5c27, 0x9065, 0x7a91, 0x8c23, 0x59da, 0x54ac, 0x8200,
- 0x836f, 0x8981, 0x8000, 0x6930, 0x564e, 0x8036, 0x7237, 0x91ce,
- 0x51b6, 0x4e5f, 0x9875, 0x6396, 0x4e1a, 0x53f6, 0x66f3, 0x814b,
- 0x591c, 0x6db2, 0x4e00, 0x58f9, 0x533b, 0x63d6, 0x94f1, 0x4f9d,
- 0x4f0a, 0x8863, 0x9890, 0x5937, 0x9057, 0x79fb, 0x4eea, 0x80f0,
- 0x7591, 0x6c82, 0x5b9c, 0x59e8, 0x5f5d, 0x6905, 0x8681, 0x501a,
- 0x5df2, 0x4e59, 0x77e3, 0x4ee5, 0x827a, 0x6291, 0x6613, 0x9091,
- 0x5c79, 0x4ebf, 0x5f79, 0x81c6, 0x9038, 0x8084, 0x75ab, 0x4ea6,
- 0x88d4, 0x610f, 0x6bc5, 0x5fc6, 0x4e49, 0x76ca, 0x6ea2, 0x8be3,
- 0x8bae, 0x8c0a, 0x8bd1, 0x5f02, 0x7ffc, 0x7fcc, 0x7ece, 0x8335,
- 0x836b, 0x56e0, 0x6bb7, 0x97f3, 0x9634, 0x59fb, 0x541f, 0x94f6,
- 0x6deb, 0x5bc5, 0x996e, 0x5c39, 0x5f15, 0x9690,
- /* 0xd3 */
- 0x89a2, 0x89a3, 0x89a4, 0x89a5, 0x89a6, 0x89a7, 0x89a8, 0x89a9,
- 0x89aa, 0x89ab, 0x89ac, 0x89ad, 0x89ae, 0x89af, 0x89b0, 0x89b1,
- 0x89b2, 0x89b3, 0x89b4, 0x89b5, 0x89b6, 0x89b7, 0x89b8, 0x89b9,
- 0x89ba, 0x89bb, 0x89bc, 0x89bd, 0x89be, 0x89bf, 0x89c0, 0x89c3,
- 0x89cd, 0x89d3, 0x89d4, 0x89d5, 0x89d7, 0x89d8, 0x89d9, 0x89db,
- 0x89dd, 0x89df, 0x89e0, 0x89e1, 0x89e2, 0x89e4, 0x89e7, 0x89e8,
- 0x89e9, 0x89ea, 0x89ec, 0x89ed, 0x89ee, 0x89f0, 0x89f1, 0x89f2,
- 0x89f4, 0x89f5, 0x89f6, 0x89f7, 0x89f8, 0x89f9, 0x89fa, 0x89fb,
- 0x89fc, 0x89fd, 0x89fe, 0x89ff, 0x8a01, 0x8a02, 0x8a03, 0x8a04,
- 0x8a05, 0x8a06, 0x8a08, 0x8a09, 0x8a0a, 0x8a0b, 0x8a0c, 0x8a0d,
- 0x8a0e, 0x8a0f, 0x8a10, 0x8a11, 0x8a12, 0x8a13, 0x8a14, 0x8a15,
- 0x8a16, 0x8a17, 0x8a18, 0x8a19, 0x8a1a, 0x8a1b, 0x8a1c, 0x8a1d,
- 0x5370, 0x82f1, 0x6a31, 0x5a74, 0x9e70, 0x5e94, 0x7f28, 0x83b9,
- 0x8424, 0x8425, 0x8367, 0x8747, 0x8fce, 0x8d62, 0x76c8, 0x5f71,
- 0x9896, 0x786c, 0x6620, 0x54df, 0x62e5, 0x4f63, 0x81c3, 0x75c8,
- 0x5eb8, 0x96cd, 0x8e0a, 0x86f9, 0x548f, 0x6cf3, 0x6d8c, 0x6c38,
- 0x607f, 0x52c7, 0x7528, 0x5e7d, 0x4f18, 0x60a0, 0x5fe7, 0x5c24,
- 0x7531, 0x90ae, 0x94c0, 0x72b9, 0x6cb9, 0x6e38, 0x9149, 0x6709,
- 0x53cb, 0x53f3, 0x4f51, 0x91c9, 0x8bf1, 0x53c8, 0x5e7c, 0x8fc2,
- 0x6de4, 0x4e8e, 0x76c2, 0x6986, 0x865e, 0x611a, 0x8206, 0x4f59,
- 0x4fde, 0x903e, 0x9c7c, 0x6109, 0x6e1d, 0x6e14, 0x9685, 0x4e88,
- 0x5a31, 0x96e8, 0x4e0e, 0x5c7f, 0x79b9, 0x5b87, 0x8bed, 0x7fbd,
- 0x7389, 0x57df, 0x828b, 0x90c1, 0x5401, 0x9047, 0x55bb, 0x5cea,
- 0x5fa1, 0x6108, 0x6b32, 0x72f1, 0x80b2, 0x8a89,
- /* 0xd4 */
- 0x8a1e, 0x8a1f, 0x8a20, 0x8a21, 0x8a22, 0x8a23, 0x8a24, 0x8a25,
- 0x8a26, 0x8a27, 0x8a28, 0x8a29, 0x8a2a, 0x8a2b, 0x8a2c, 0x8a2d,
- 0x8a2e, 0x8a2f, 0x8a30, 0x8a31, 0x8a32, 0x8a33, 0x8a34, 0x8a35,
- 0x8a36, 0x8a37, 0x8a38, 0x8a39, 0x8a3a, 0x8a3b, 0x8a3c, 0x8a3d,
- 0x8a3f, 0x8a40, 0x8a41, 0x8a42, 0x8a43, 0x8a44, 0x8a45, 0x8a46,
- 0x8a47, 0x8a49, 0x8a4a, 0x8a4b, 0x8a4c, 0x8a4d, 0x8a4e, 0x8a4f,
- 0x8a50, 0x8a51, 0x8a52, 0x8a53, 0x8a54, 0x8a55, 0x8a56, 0x8a57,
- 0x8a58, 0x8a59, 0x8a5a, 0x8a5b, 0x8a5c, 0x8a5d, 0x8a5e, 0x8a5f,
- 0x8a60, 0x8a61, 0x8a62, 0x8a63, 0x8a64, 0x8a65, 0x8a66, 0x8a67,
- 0x8a68, 0x8a69, 0x8a6a, 0x8a6b, 0x8a6c, 0x8a6d, 0x8a6e, 0x8a6f,
- 0x8a70, 0x8a71, 0x8a72, 0x8a73, 0x8a74, 0x8a75, 0x8a76, 0x8a77,
- 0x8a78, 0x8a7a, 0x8a7b, 0x8a7c, 0x8a7d, 0x8a7e, 0x8a7f, 0x8a80,
- 0x6d74, 0x5bd3, 0x88d5, 0x9884, 0x8c6b, 0x9a6d, 0x9e33, 0x6e0a,
- 0x51a4, 0x5143, 0x57a3, 0x8881, 0x539f, 0x63f4, 0x8f95, 0x56ed,
- 0x5458, 0x5706, 0x733f, 0x6e90, 0x7f18, 0x8fdc, 0x82d1, 0x613f,
- 0x6028, 0x9662, 0x66f0, 0x7ea6, 0x8d8a, 0x8dc3, 0x94a5, 0x5cb3,
- 0x7ca4, 0x6708, 0x60a6, 0x9605, 0x8018, 0x4e91, 0x90e7, 0x5300,
- 0x9668, 0x5141, 0x8fd0, 0x8574, 0x915d, 0x6655, 0x97f5, 0x5b55,
- 0x531d, 0x7838, 0x6742, 0x683d, 0x54c9, 0x707e, 0x5bb0, 0x8f7d,
- 0x518d, 0x5728, 0x54b1, 0x6512, 0x6682, 0x8d5e, 0x8d43, 0x810f,
- 0x846c, 0x906d, 0x7cdf, 0x51ff, 0x85fb, 0x67a3, 0x65e9, 0x6fa1,
- 0x86a4, 0x8e81, 0x566a, 0x9020, 0x7682, 0x7076, 0x71e5, 0x8d23,
- 0x62e9, 0x5219, 0x6cfd, 0x8d3c, 0x600e, 0x589e, 0x618e, 0x66fe,
- 0x8d60, 0x624e, 0x55b3, 0x6e23, 0x672d, 0x8f67,
- /* 0xd5 */
- 0x8a81, 0x8a82, 0x8a83, 0x8a84, 0x8a85, 0x8a86, 0x8a87, 0x8a88,
- 0x8a8b, 0x8a8c, 0x8a8d, 0x8a8e, 0x8a8f, 0x8a90, 0x8a91, 0x8a92,
- 0x8a94, 0x8a95, 0x8a96, 0x8a97, 0x8a98, 0x8a99, 0x8a9a, 0x8a9b,
- 0x8a9c, 0x8a9d, 0x8a9e, 0x8a9f, 0x8aa0, 0x8aa1, 0x8aa2, 0x8aa3,
- 0x8aa4, 0x8aa5, 0x8aa6, 0x8aa7, 0x8aa8, 0x8aa9, 0x8aaa, 0x8aab,
- 0x8aac, 0x8aad, 0x8aae, 0x8aaf, 0x8ab0, 0x8ab1, 0x8ab2, 0x8ab3,
- 0x8ab4, 0x8ab5, 0x8ab6, 0x8ab7, 0x8ab8, 0x8ab9, 0x8aba, 0x8abb,
- 0x8abc, 0x8abd, 0x8abe, 0x8abf, 0x8ac0, 0x8ac1, 0x8ac2, 0x8ac3,
- 0x8ac4, 0x8ac5, 0x8ac6, 0x8ac7, 0x8ac8, 0x8ac9, 0x8aca, 0x8acb,
- 0x8acc, 0x8acd, 0x8ace, 0x8acf, 0x8ad0, 0x8ad1, 0x8ad2, 0x8ad3,
- 0x8ad4, 0x8ad5, 0x8ad6, 0x8ad7, 0x8ad8, 0x8ad9, 0x8ada, 0x8adb,
- 0x8adc, 0x8add, 0x8ade, 0x8adf, 0x8ae0, 0x8ae1, 0x8ae2, 0x8ae3,
- 0x94e1, 0x95f8, 0x7728, 0x6805, 0x69a8, 0x548b, 0x4e4d, 0x70b8,
- 0x8bc8, 0x6458, 0x658b, 0x5b85, 0x7a84, 0x503a, 0x5be8, 0x77bb,
- 0x6be1, 0x8a79, 0x7c98, 0x6cbe, 0x76cf, 0x65a9, 0x8f97, 0x5d2d,
- 0x5c55, 0x8638, 0x6808, 0x5360, 0x6218, 0x7ad9, 0x6e5b, 0x7efd,
- 0x6a1f, 0x7ae0, 0x5f70, 0x6f33, 0x5f20, 0x638c, 0x6da8, 0x6756,
- 0x4e08, 0x5e10, 0x8d26, 0x4ed7, 0x80c0, 0x7634, 0x969c, 0x62db,
- 0x662d, 0x627e, 0x6cbc, 0x8d75, 0x7167, 0x7f69, 0x5146, 0x8087,
- 0x53ec, 0x906e, 0x6298, 0x54f2, 0x86f0, 0x8f99, 0x8005, 0x9517,
- 0x8517, 0x8fd9, 0x6d59, 0x73cd, 0x659f, 0x771f, 0x7504, 0x7827,
- 0x81fb, 0x8d1e, 0x9488, 0x4fa6, 0x6795, 0x75b9, 0x8bca, 0x9707,
- 0x632f, 0x9547, 0x9635, 0x84b8, 0x6323, 0x7741, 0x5f81, 0x72f0,
- 0x4e89, 0x6014, 0x6574, 0x62ef, 0x6b63, 0x653f,
- /* 0xd6 */
- 0x8ae4, 0x8ae5, 0x8ae6, 0x8ae7, 0x8ae8, 0x8ae9, 0x8aea, 0x8aeb,
- 0x8aec, 0x8aed, 0x8aee, 0x8aef, 0x8af0, 0x8af1, 0x8af2, 0x8af3,
- 0x8af4, 0x8af5, 0x8af6, 0x8af7, 0x8af8, 0x8af9, 0x8afa, 0x8afb,
- 0x8afc, 0x8afd, 0x8afe, 0x8aff, 0x8b00, 0x8b01, 0x8b02, 0x8b03,
- 0x8b04, 0x8b05, 0x8b06, 0x8b08, 0x8b09, 0x8b0a, 0x8b0b, 0x8b0c,
- 0x8b0d, 0x8b0e, 0x8b0f, 0x8b10, 0x8b11, 0x8b12, 0x8b13, 0x8b14,
- 0x8b15, 0x8b16, 0x8b17, 0x8b18, 0x8b19, 0x8b1a, 0x8b1b, 0x8b1c,
- 0x8b1d, 0x8b1e, 0x8b1f, 0x8b20, 0x8b21, 0x8b22, 0x8b23, 0x8b24,
- 0x8b25, 0x8b27, 0x8b28, 0x8b29, 0x8b2a, 0x8b2b, 0x8b2c, 0x8b2d,
- 0x8b2e, 0x8b2f, 0x8b30, 0x8b31, 0x8b32, 0x8b33, 0x8b34, 0x8b35,
- 0x8b36, 0x8b37, 0x8b38, 0x8b39, 0x8b3a, 0x8b3b, 0x8b3c, 0x8b3d,
- 0x8b3e, 0x8b3f, 0x8b40, 0x8b41, 0x8b42, 0x8b43, 0x8b44, 0x8b45,
- 0x5e27, 0x75c7, 0x90d1, 0x8bc1, 0x829d, 0x679d, 0x652f, 0x5431,
- 0x8718, 0x77e5, 0x80a2, 0x8102, 0x6c41, 0x4e4b, 0x7ec7, 0x804c,
- 0x76f4, 0x690d, 0x6b96, 0x6267, 0x503c, 0x4f84, 0x5740, 0x6307,
- 0x6b62, 0x8dbe, 0x53ea, 0x65e8, 0x7eb8, 0x5fd7, 0x631a, 0x63b7,
- 0x81f3, 0x81f4, 0x7f6e, 0x5e1c, 0x5cd9, 0x5236, 0x667a, 0x79e9,
- 0x7a1a, 0x8d28, 0x7099, 0x75d4, 0x6ede, 0x6cbb, 0x7a92, 0x4e2d,
- 0x76c5, 0x5fe0, 0x949f, 0x8877, 0x7ec8, 0x79cd, 0x80bf, 0x91cd,
- 0x4ef2, 0x4f17, 0x821f, 0x5468, 0x5dde, 0x6d32, 0x8bcc, 0x7ca5,
- 0x8f74, 0x8098, 0x5e1a, 0x5492, 0x76b1, 0x5b99, 0x663c, 0x9aa4,
- 0x73e0, 0x682a, 0x86db, 0x6731, 0x732a, 0x8bf8, 0x8bdb, 0x9010,
- 0x7af9, 0x70db, 0x716e, 0x62c4, 0x77a9, 0x5631, 0x4e3b, 0x8457,
- 0x67f1, 0x52a9, 0x86c0, 0x8d2e, 0x94f8, 0x7b51,
- /* 0xd7 */
- 0x8b46, 0x8b47, 0x8b48, 0x8b49, 0x8b4a, 0x8b4b, 0x8b4c, 0x8b4d,
- 0x8b4e, 0x8b4f, 0x8b50, 0x8b51, 0x8b52, 0x8b53, 0x8b54, 0x8b55,
- 0x8b56, 0x8b57, 0x8b58, 0x8b59, 0x8b5a, 0x8b5b, 0x8b5c, 0x8b5d,
- 0x8b5e, 0x8b5f, 0x8b60, 0x8b61, 0x8b62, 0x8b63, 0x8b64, 0x8b65,
- 0x8b67, 0x8b68, 0x8b69, 0x8b6a, 0x8b6b, 0x8b6d, 0x8b6e, 0x8b6f,
- 0x8b70, 0x8b71, 0x8b72, 0x8b73, 0x8b74, 0x8b75, 0x8b76, 0x8b77,
- 0x8b78, 0x8b79, 0x8b7a, 0x8b7b, 0x8b7c, 0x8b7d, 0x8b7e, 0x8b7f,
- 0x8b80, 0x8b81, 0x8b82, 0x8b83, 0x8b84, 0x8b85, 0x8b86, 0x8b87,
- 0x8b88, 0x8b89, 0x8b8a, 0x8b8b, 0x8b8c, 0x8b8d, 0x8b8e, 0x8b8f,
- 0x8b90, 0x8b91, 0x8b92, 0x8b93, 0x8b94, 0x8b95, 0x8b96, 0x8b97,
- 0x8b98, 0x8b99, 0x8b9a, 0x8b9b, 0x8b9c, 0x8b9d, 0x8b9e, 0x8b9f,
- 0x8bac, 0x8bb1, 0x8bbb, 0x8bc7, 0x8bd0, 0x8bea, 0x8c09, 0x8c1e,
- 0x4f4f, 0x6ce8, 0x795d, 0x9a7b, 0x6293, 0x722a, 0x62fd, 0x4e13,
- 0x7816, 0x8f6c, 0x64b0, 0x8d5a, 0x7bc6, 0x6869, 0x5e84, 0x88c5,
- 0x5986, 0x649e, 0x58ee, 0x72b6, 0x690e, 0x9525, 0x8ffd, 0x8d58,
- 0x5760, 0x7f00, 0x8c06, 0x51c6, 0x6349, 0x62d9, 0x5353, 0x684c,
- 0x7422, 0x8301, 0x914c, 0x5544, 0x7740, 0x707c, 0x6d4a, 0x5179,
- 0x54a8, 0x8d44, 0x59ff, 0x6ecb, 0x6dc4, 0x5b5c, 0x7d2b, 0x4ed4,
- 0x7c7d, 0x6ed3, 0x5b50, 0x81ea, 0x6e0d, 0x5b57, 0x9b03, 0x68d5,
- 0x8e2a, 0x5b97, 0x7efc, 0x603b, 0x7eb5, 0x90b9, 0x8d70, 0x594f,
- 0x63cd, 0x79df, 0x8db3, 0x5352, 0x65cf, 0x7956, 0x8bc5, 0x963b,
- 0x7ec4, 0x94bb, 0x7e82, 0x5634, 0x9189, 0x6700, 0x7f6a, 0x5c0a,
- 0x9075, 0x6628, 0x5de6, 0x4f50, 0x67de, 0x505a, 0x4f5c, 0x5750,
- 0x5ea7, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- /* 0xd8 */
- 0x8c38, 0x8c39, 0x8c3a, 0x8c3b, 0x8c3c, 0x8c3d, 0x8c3e, 0x8c3f,
- 0x8c40, 0x8c42, 0x8c43, 0x8c44, 0x8c45, 0x8c48, 0x8c4a, 0x8c4b,
- 0x8c4d, 0x8c4e, 0x8c4f, 0x8c50, 0x8c51, 0x8c52, 0x8c53, 0x8c54,
- 0x8c56, 0x8c57, 0x8c58, 0x8c59, 0x8c5b, 0x8c5c, 0x8c5d, 0x8c5e,
- 0x8c5f, 0x8c60, 0x8c63, 0x8c64, 0x8c65, 0x8c66, 0x8c67, 0x8c68,
- 0x8c69, 0x8c6c, 0x8c6d, 0x8c6e, 0x8c6f, 0x8c70, 0x8c71, 0x8c72,
- 0x8c74, 0x8c75, 0x8c76, 0x8c77, 0x8c7b, 0x8c7c, 0x8c7d, 0x8c7e,
- 0x8c7f, 0x8c80, 0x8c81, 0x8c83, 0x8c84, 0x8c86, 0x8c87, 0x8c88,
- 0x8c8b, 0x8c8d, 0x8c8e, 0x8c8f, 0x8c90, 0x8c91, 0x8c92, 0x8c93,
- 0x8c95, 0x8c96, 0x8c97, 0x8c99, 0x8c9a, 0x8c9b, 0x8c9c, 0x8c9d,
- 0x8c9e, 0x8c9f, 0x8ca0, 0x8ca1, 0x8ca2, 0x8ca3, 0x8ca4, 0x8ca5,
- 0x8ca6, 0x8ca7, 0x8ca8, 0x8ca9, 0x8caa, 0x8cab, 0x8cac, 0x8cad,
- 0x4e8d, 0x4e0c, 0x5140, 0x4e10, 0x5eff, 0x5345, 0x4e15, 0x4e98,
- 0x4e1e, 0x9b32, 0x5b6c, 0x5669, 0x4e28, 0x79ba, 0x4e3f, 0x5315,
- 0x4e47, 0x592d, 0x723b, 0x536e, 0x6c10, 0x56df, 0x80e4, 0x9997,
- 0x6bd3, 0x777e, 0x9f17, 0x4e36, 0x4e9f, 0x9f10, 0x4e5c, 0x4e69,
- 0x4e93, 0x8288, 0x5b5b, 0x556c, 0x560f, 0x4ec4, 0x538d, 0x539d,
- 0x53a3, 0x53a5, 0x53ae, 0x9765, 0x8d5d, 0x531a, 0x53f5, 0x5326,
- 0x532e, 0x533e, 0x8d5c, 0x5366, 0x5363, 0x5202, 0x5208, 0x520e,
- 0x522d, 0x5233, 0x523f, 0x5240, 0x524c, 0x525e, 0x5261, 0x525c,
- 0x84af, 0x527d, 0x5282, 0x5281, 0x5290, 0x5293, 0x5182, 0x7f54,
- 0x4ebb, 0x4ec3, 0x4ec9, 0x4ec2, 0x4ee8, 0x4ee1, 0x4eeb, 0x4ede,
- 0x4f1b, 0x4ef3, 0x4f22, 0x4f64, 0x4ef5, 0x4f25, 0x4f27, 0x4f09,
- 0x4f2b, 0x4f5e, 0x4f67, 0x6538, 0x4f5a, 0x4f5d,
- /* 0xd9 */
- 0x8cae, 0x8caf, 0x8cb0, 0x8cb1, 0x8cb2, 0x8cb3, 0x8cb4, 0x8cb5,
- 0x8cb6, 0x8cb7, 0x8cb8, 0x8cb9, 0x8cba, 0x8cbb, 0x8cbc, 0x8cbd,
- 0x8cbe, 0x8cbf, 0x8cc0, 0x8cc1, 0x8cc2, 0x8cc3, 0x8cc4, 0x8cc5,
- 0x8cc6, 0x8cc7, 0x8cc8, 0x8cc9, 0x8cca, 0x8ccb, 0x8ccc, 0x8ccd,
- 0x8cce, 0x8ccf, 0x8cd0, 0x8cd1, 0x8cd2, 0x8cd3, 0x8cd4, 0x8cd5,
- 0x8cd6, 0x8cd7, 0x8cd8, 0x8cd9, 0x8cda, 0x8cdb, 0x8cdc, 0x8cdd,
- 0x8cde, 0x8cdf, 0x8ce0, 0x8ce1, 0x8ce2, 0x8ce3, 0x8ce4, 0x8ce5,
- 0x8ce6, 0x8ce7, 0x8ce8, 0x8ce9, 0x8cea, 0x8ceb, 0x8cec, 0x8ced,
- 0x8cee, 0x8cef, 0x8cf0, 0x8cf1, 0x8cf2, 0x8cf3, 0x8cf4, 0x8cf5,
- 0x8cf6, 0x8cf7, 0x8cf8, 0x8cf9, 0x8cfa, 0x8cfb, 0x8cfc, 0x8cfd,
- 0x8cfe, 0x8cff, 0x8d00, 0x8d01, 0x8d02, 0x8d03, 0x8d04, 0x8d05,
- 0x8d06, 0x8d07, 0x8d08, 0x8d09, 0x8d0a, 0x8d0b, 0x8d0c, 0x8d0d,
- 0x4f5f, 0x4f57, 0x4f32, 0x4f3d, 0x4f76, 0x4f74, 0x4f91, 0x4f89,
- 0x4f83, 0x4f8f, 0x4f7e, 0x4f7b, 0x4faa, 0x4f7c, 0x4fac, 0x4f94,
- 0x4fe6, 0x4fe8, 0x4fea, 0x4fc5, 0x4fda, 0x4fe3, 0x4fdc, 0x4fd1,
- 0x4fdf, 0x4ff8, 0x5029, 0x504c, 0x4ff3, 0x502c, 0x500f, 0x502e,
- 0x502d, 0x4ffe, 0x501c, 0x500c, 0x5025, 0x5028, 0x507e, 0x5043,
- 0x5055, 0x5048, 0x504e, 0x506c, 0x507b, 0x50a5, 0x50a7, 0x50a9,
- 0x50ba, 0x50d6, 0x5106, 0x50ed, 0x50ec, 0x50e6, 0x50ee, 0x5107,
- 0x510b, 0x4edd, 0x6c3d, 0x4f58, 0x4f65, 0x4fce, 0x9fa0, 0x6c46,
- 0x7c74, 0x516e, 0x5dfd, 0x9ec9, 0x9998, 0x5181, 0x5914, 0x52f9,
- 0x530d, 0x8a07, 0x5310, 0x51eb, 0x5919, 0x5155, 0x4ea0, 0x5156,
- 0x4eb3, 0x886e, 0x88a4, 0x4eb5, 0x8114, 0x88d2, 0x7980, 0x5b34,
- 0x8803, 0x7fb8, 0x51ab, 0x51b1, 0x51bd, 0x51bc,
- /* 0xda */
- 0x8d0e, 0x8d0f, 0x8d10, 0x8d11, 0x8d12, 0x8d13, 0x8d14, 0x8d15,
- 0x8d16, 0x8d17, 0x8d18, 0x8d19, 0x8d1a, 0x8d1b, 0x8d1c, 0x8d20,
- 0x8d51, 0x8d52, 0x8d57, 0x8d5f, 0x8d65, 0x8d68, 0x8d69, 0x8d6a,
- 0x8d6c, 0x8d6e, 0x8d6f, 0x8d71, 0x8d72, 0x8d78, 0x8d79, 0x8d7a,
- 0x8d7b, 0x8d7c, 0x8d7d, 0x8d7e, 0x8d7f, 0x8d80, 0x8d82, 0x8d83,
- 0x8d86, 0x8d87, 0x8d88, 0x8d89, 0x8d8c, 0x8d8d, 0x8d8e, 0x8d8f,
- 0x8d90, 0x8d92, 0x8d93, 0x8d95, 0x8d96, 0x8d97, 0x8d98, 0x8d99,
- 0x8d9a, 0x8d9b, 0x8d9c, 0x8d9d, 0x8d9e, 0x8da0, 0x8da1, 0x8da2,
- 0x8da4, 0x8da5, 0x8da6, 0x8da7, 0x8da8, 0x8da9, 0x8daa, 0x8dab,
- 0x8dac, 0x8dad, 0x8dae, 0x8daf, 0x8db0, 0x8db2, 0x8db6, 0x8db7,
- 0x8db9, 0x8dbb, 0x8dbd, 0x8dc0, 0x8dc1, 0x8dc2, 0x8dc5, 0x8dc7,
- 0x8dc8, 0x8dc9, 0x8dca, 0x8dcd, 0x8dd0, 0x8dd2, 0x8dd3, 0x8dd4,
- 0x51c7, 0x5196, 0x51a2, 0x51a5, 0x8ba0, 0x8ba6, 0x8ba7, 0x8baa,
- 0x8bb4, 0x8bb5, 0x8bb7, 0x8bc2, 0x8bc3, 0x8bcb, 0x8bcf, 0x8bce,
- 0x8bd2, 0x8bd3, 0x8bd4, 0x8bd6, 0x8bd8, 0x8bd9, 0x8bdc, 0x8bdf,
- 0x8be0, 0x8be4, 0x8be8, 0x8be9, 0x8bee, 0x8bf0, 0x8bf3, 0x8bf6,
- 0x8bf9, 0x8bfc, 0x8bff, 0x8c00, 0x8c02, 0x8c04, 0x8c07, 0x8c0c,
- 0x8c0f, 0x8c11, 0x8c12, 0x8c14, 0x8c15, 0x8c16, 0x8c19, 0x8c1b,
- 0x8c18, 0x8c1d, 0x8c1f, 0x8c20, 0x8c21, 0x8c25, 0x8c27, 0x8c2a,
- 0x8c2b, 0x8c2e, 0x8c2f, 0x8c32, 0x8c33, 0x8c35, 0x8c36, 0x5369,
- 0x537a, 0x961d, 0x9622, 0x9621, 0x9631, 0x962a, 0x963d, 0x963c,
- 0x9642, 0x9649, 0x9654, 0x965f, 0x9667, 0x966c, 0x9672, 0x9674,
- 0x9688, 0x968d, 0x9697, 0x96b0, 0x9097, 0x909b, 0x909d, 0x9099,
- 0x90ac, 0x90a1, 0x90b4, 0x90b3, 0x90b6, 0x90ba,
- /* 0xdb */
- 0x8dd5, 0x8dd8, 0x8dd9, 0x8ddc, 0x8de0, 0x8de1, 0x8de2, 0x8de5,
- 0x8de6, 0x8de7, 0x8de9, 0x8ded, 0x8dee, 0x8df0, 0x8df1, 0x8df2,
- 0x8df4, 0x8df6, 0x8dfc, 0x8dfe, 0x8dff, 0x8e00, 0x8e01, 0x8e02,
- 0x8e03, 0x8e04, 0x8e06, 0x8e07, 0x8e08, 0x8e0b, 0x8e0d, 0x8e0e,
- 0x8e10, 0x8e11, 0x8e12, 0x8e13, 0x8e15, 0x8e16, 0x8e17, 0x8e18,
- 0x8e19, 0x8e1a, 0x8e1b, 0x8e1c, 0x8e20, 0x8e21, 0x8e24, 0x8e25,
- 0x8e26, 0x8e27, 0x8e28, 0x8e2b, 0x8e2d, 0x8e30, 0x8e32, 0x8e33,
- 0x8e34, 0x8e36, 0x8e37, 0x8e38, 0x8e3b, 0x8e3c, 0x8e3e, 0x8e3f,
- 0x8e43, 0x8e45, 0x8e46, 0x8e4c, 0x8e4d, 0x8e4e, 0x8e4f, 0x8e50,
- 0x8e53, 0x8e54, 0x8e55, 0x8e56, 0x8e57, 0x8e58, 0x8e5a, 0x8e5b,
- 0x8e5c, 0x8e5d, 0x8e5e, 0x8e5f, 0x8e60, 0x8e61, 0x8e62, 0x8e63,
- 0x8e64, 0x8e65, 0x8e67, 0x8e68, 0x8e6a, 0x8e6b, 0x8e6e, 0x8e71,
- 0x90b8, 0x90b0, 0x90cf, 0x90c5, 0x90be, 0x90d0, 0x90c4, 0x90c7,
- 0x90d3, 0x90e6, 0x90e2, 0x90dc, 0x90d7, 0x90db, 0x90eb, 0x90ef,
- 0x90fe, 0x9104, 0x9122, 0x911e, 0x9123, 0x9131, 0x912f, 0x9139,
- 0x9143, 0x9146, 0x520d, 0x5942, 0x52a2, 0x52ac, 0x52ad, 0x52be,
- 0x54ff, 0x52d0, 0x52d6, 0x52f0, 0x53df, 0x71ee, 0x77cd, 0x5ef4,
- 0x51f5, 0x51fc, 0x9b2f, 0x53b6, 0x5f01, 0x755a, 0x5def, 0x574c,
- 0x57a9, 0x57a1, 0x587e, 0x58bc, 0x58c5, 0x58d1, 0x5729, 0x572c,
- 0x572a, 0x5733, 0x5739, 0x572e, 0x572f, 0x575c, 0x573b, 0x5742,
- 0x5769, 0x5785, 0x576b, 0x5786, 0x577c, 0x577b, 0x5768, 0x576d,
- 0x5776, 0x5773, 0x57ad, 0x57a4, 0x578c, 0x57b2, 0x57cf, 0x57a7,
- 0x57b4, 0x5793, 0x57a0, 0x57d5, 0x57d8, 0x57da, 0x57d9, 0x57d2,
- 0x57b8, 0x57f4, 0x57ef, 0x57f8, 0x57e4, 0x57dd,
- /* 0xdc */
- 0x8e73, 0x8e75, 0x8e77, 0x8e78, 0x8e79, 0x8e7a, 0x8e7b, 0x8e7d,
- 0x8e7e, 0x8e80, 0x8e82, 0x8e83, 0x8e84, 0x8e86, 0x8e88, 0x8e89,
- 0x8e8a, 0x8e8b, 0x8e8c, 0x8e8d, 0x8e8e, 0x8e91, 0x8e92, 0x8e93,
- 0x8e95, 0x8e96, 0x8e97, 0x8e98, 0x8e99, 0x8e9a, 0x8e9b, 0x8e9d,
- 0x8e9f, 0x8ea0, 0x8ea1, 0x8ea2, 0x8ea3, 0x8ea4, 0x8ea5, 0x8ea6,
- 0x8ea7, 0x8ea8, 0x8ea9, 0x8eaa, 0x8ead, 0x8eae, 0x8eb0, 0x8eb1,
- 0x8eb3, 0x8eb4, 0x8eb5, 0x8eb6, 0x8eb7, 0x8eb8, 0x8eb9, 0x8ebb,
- 0x8ebc, 0x8ebd, 0x8ebe, 0x8ebf, 0x8ec0, 0x8ec1, 0x8ec2, 0x8ec3,
- 0x8ec4, 0x8ec5, 0x8ec6, 0x8ec7, 0x8ec8, 0x8ec9, 0x8eca, 0x8ecb,
- 0x8ecc, 0x8ecd, 0x8ecf, 0x8ed0, 0x8ed1, 0x8ed2, 0x8ed3, 0x8ed4,
- 0x8ed5, 0x8ed6, 0x8ed7, 0x8ed8, 0x8ed9, 0x8eda, 0x8edb, 0x8edc,
- 0x8edd, 0x8ede, 0x8edf, 0x8ee0, 0x8ee1, 0x8ee2, 0x8ee3, 0x8ee4,
- 0x580b, 0x580d, 0x57fd, 0x57ed, 0x5800, 0x581e, 0x5819, 0x5844,
- 0x5820, 0x5865, 0x586c, 0x5881, 0x5889, 0x589a, 0x5880, 0x99a8,
- 0x9f19, 0x61ff, 0x8279, 0x827d, 0x827f, 0x828f, 0x828a, 0x82a8,
- 0x8284, 0x828e, 0x8291, 0x8297, 0x8299, 0x82ab, 0x82b8, 0x82be,
- 0x82b0, 0x82c8, 0x82ca, 0x82e3, 0x8298, 0x82b7, 0x82ae, 0x82cb,
- 0x82cc, 0x82c1, 0x82a9, 0x82b4, 0x82a1, 0x82aa, 0x829f, 0x82c4,
- 0x82ce, 0x82a4, 0x82e1, 0x8309, 0x82f7, 0x82e4, 0x830f, 0x8307,
- 0x82dc, 0x82f4, 0x82d2, 0x82d8, 0x830c, 0x82fb, 0x82d3, 0x8311,
- 0x831a, 0x8306, 0x8314, 0x8315, 0x82e0, 0x82d5, 0x831c, 0x8351,
- 0x835b, 0x835c, 0x8308, 0x8392, 0x833c, 0x8334, 0x8331, 0x839b,
- 0x835e, 0x832f, 0x834f, 0x8347, 0x8343, 0x835f, 0x8340, 0x8317,
- 0x8360, 0x832d, 0x833a, 0x8333, 0x8366, 0x8365,
- /* 0xdd */
- 0x8ee5, 0x8ee6, 0x8ee7, 0x8ee8, 0x8ee9, 0x8eea, 0x8eeb, 0x8eec,
- 0x8eed, 0x8eee, 0x8eef, 0x8ef0, 0x8ef1, 0x8ef2, 0x8ef3, 0x8ef4,
- 0x8ef5, 0x8ef6, 0x8ef7, 0x8ef8, 0x8ef9, 0x8efa, 0x8efb, 0x8efc,
- 0x8efd, 0x8efe, 0x8eff, 0x8f00, 0x8f01, 0x8f02, 0x8f03, 0x8f04,
- 0x8f05, 0x8f06, 0x8f07, 0x8f08, 0x8f09, 0x8f0a, 0x8f0b, 0x8f0c,
- 0x8f0d, 0x8f0e, 0x8f0f, 0x8f10, 0x8f11, 0x8f12, 0x8f13, 0x8f14,
- 0x8f15, 0x8f16, 0x8f17, 0x8f18, 0x8f19, 0x8f1a, 0x8f1b, 0x8f1c,
- 0x8f1d, 0x8f1e, 0x8f1f, 0x8f20, 0x8f21, 0x8f22, 0x8f23, 0x8f24,
- 0x8f25, 0x8f26, 0x8f27, 0x8f28, 0x8f29, 0x8f2a, 0x8f2b, 0x8f2c,
- 0x8f2d, 0x8f2e, 0x8f2f, 0x8f30, 0x8f31, 0x8f32, 0x8f33, 0x8f34,
- 0x8f35, 0x8f36, 0x8f37, 0x8f38, 0x8f39, 0x8f3a, 0x8f3b, 0x8f3c,
- 0x8f3d, 0x8f3e, 0x8f3f, 0x8f40, 0x8f41, 0x8f42, 0x8f43, 0x8f44,
- 0x8368, 0x831b, 0x8369, 0x836c, 0x836a, 0x836d, 0x836e, 0x83b0,
- 0x8378, 0x83b3, 0x83b4, 0x83a0, 0x83aa, 0x8393, 0x839c, 0x8385,
- 0x837c, 0x83b6, 0x83a9, 0x837d, 0x83b8, 0x837b, 0x8398, 0x839e,
- 0x83a8, 0x83ba, 0x83bc, 0x83c1, 0x8401, 0x83e5, 0x83d8, 0x5807,
- 0x8418, 0x840b, 0x83dd, 0x83fd, 0x83d6, 0x841c, 0x8438, 0x8411,
- 0x8406, 0x83d4, 0x83df, 0x840f, 0x8403, 0x83f8, 0x83f9, 0x83ea,
- 0x83c5, 0x83c0, 0x8426, 0x83f0, 0x83e1, 0x845c, 0x8451, 0x845a,
- 0x8459, 0x8473, 0x8487, 0x8488, 0x847a, 0x8489, 0x8478, 0x843c,
- 0x8446, 0x8469, 0x8476, 0x848c, 0x848e, 0x8431, 0x846d, 0x84c1,
- 0x84cd, 0x84d0, 0x84e6, 0x84bd, 0x84d3, 0x84ca, 0x84bf, 0x84ba,
- 0x84e0, 0x84a1, 0x84b9, 0x84b4, 0x8497, 0x84e5, 0x84e3, 0x850c,
- 0x750d, 0x8538, 0x84f0, 0x8539, 0x851f, 0x853a,
- /* 0xde */
- 0x8f45, 0x8f46, 0x8f47, 0x8f48, 0x8f49, 0x8f4a, 0x8f4b, 0x8f4c,
- 0x8f4d, 0x8f4e, 0x8f4f, 0x8f50, 0x8f51, 0x8f52, 0x8f53, 0x8f54,
- 0x8f55, 0x8f56, 0x8f57, 0x8f58, 0x8f59, 0x8f5a, 0x8f5b, 0x8f5c,
- 0x8f5d, 0x8f5e, 0x8f5f, 0x8f60, 0x8f61, 0x8f62, 0x8f63, 0x8f64,
- 0x8f65, 0x8f6a, 0x8f80, 0x8f8c, 0x8f92, 0x8f9d, 0x8fa0, 0x8fa1,
- 0x8fa2, 0x8fa4, 0x8fa5, 0x8fa6, 0x8fa7, 0x8faa, 0x8fac, 0x8fad,
- 0x8fae, 0x8faf, 0x8fb2, 0x8fb3, 0x8fb4, 0x8fb5, 0x8fb7, 0x8fb8,
- 0x8fba, 0x8fbb, 0x8fbc, 0x8fbf, 0x8fc0, 0x8fc3, 0x8fc6, 0x8fc9,
- 0x8fca, 0x8fcb, 0x8fcc, 0x8fcd, 0x8fcf, 0x8fd2, 0x8fd6, 0x8fd7,
- 0x8fda, 0x8fe0, 0x8fe1, 0x8fe3, 0x8fe7, 0x8fec, 0x8fef, 0x8ff1,
- 0x8ff2, 0x8ff4, 0x8ff5, 0x8ff6, 0x8ffa, 0x8ffb, 0x8ffc, 0x8ffe,
- 0x8fff, 0x9007, 0x9008, 0x900c, 0x900e, 0x9013, 0x9015, 0x9018,
- 0x8556, 0x853b, 0x84ff, 0x84fc, 0x8559, 0x8548, 0x8568, 0x8564,
- 0x855e, 0x857a, 0x77a2, 0x8543, 0x8572, 0x857b, 0x85a4, 0x85a8,
- 0x8587, 0x858f, 0x8579, 0x85ae, 0x859c, 0x8585, 0x85b9, 0x85b7,
- 0x85b0, 0x85d3, 0x85c1, 0x85dc, 0x85ff, 0x8627, 0x8605, 0x8629,
- 0x8616, 0x863c, 0x5efe, 0x5f08, 0x593c, 0x5941, 0x8037, 0x5955,
- 0x595a, 0x5958, 0x530f, 0x5c22, 0x5c25, 0x5c2c, 0x5c34, 0x624c,
- 0x626a, 0x629f, 0x62bb, 0x62ca, 0x62da, 0x62d7, 0x62ee, 0x6322,
- 0x62f6, 0x6339, 0x634b, 0x6343, 0x63ad, 0x63f6, 0x6371, 0x637a,
- 0x638e, 0x63b4, 0x636d, 0x63ac, 0x638a, 0x6369, 0x63ae, 0x63bc,
- 0x63f2, 0x63f8, 0x63e0, 0x63ff, 0x63c4, 0x63de, 0x63ce, 0x6452,
- 0x63c6, 0x63be, 0x6445, 0x6441, 0x640b, 0x641b, 0x6420, 0x640c,
- 0x6426, 0x6421, 0x645e, 0x6484, 0x646d, 0x6496,
- /* 0xdf */
- 0x9019, 0x901c, 0x9023, 0x9024, 0x9025, 0x9027, 0x9028, 0x9029,
- 0x902a, 0x902b, 0x902c, 0x9030, 0x9031, 0x9032, 0x9033, 0x9034,
- 0x9037, 0x9039, 0x903a, 0x903d, 0x903f, 0x9040, 0x9043, 0x9045,
- 0x9046, 0x9048, 0x9049, 0x904a, 0x904b, 0x904c, 0x904e, 0x9054,
- 0x9055, 0x9056, 0x9059, 0x905a, 0x905c, 0x905d, 0x905e, 0x905f,
- 0x9060, 0x9061, 0x9064, 0x9066, 0x9067, 0x9069, 0x906a, 0x906b,
- 0x906c, 0x906f, 0x9070, 0x9071, 0x9072, 0x9073, 0x9076, 0x9077,
- 0x9078, 0x9079, 0x907a, 0x907b, 0x907c, 0x907e, 0x9081, 0x9084,
- 0x9085, 0x9086, 0x9087, 0x9089, 0x908a, 0x908c, 0x908d, 0x908e,
- 0x908f, 0x9090, 0x9092, 0x9094, 0x9096, 0x9098, 0x909a, 0x909c,
- 0x909e, 0x909f, 0x90a0, 0x90a4, 0x90a5, 0x90a7, 0x90a8, 0x90a9,
- 0x90ab, 0x90ad, 0x90b2, 0x90b7, 0x90bc, 0x90bd, 0x90bf, 0x90c0,
- 0x647a, 0x64b7, 0x64b8, 0x6499, 0x64ba, 0x64c0, 0x64d0, 0x64d7,
- 0x64e4, 0x64e2, 0x6509, 0x6525, 0x652e, 0x5f0b, 0x5fd2, 0x7519,
- 0x5f11, 0x535f, 0x53f1, 0x53fd, 0x53e9, 0x53e8, 0x53fb, 0x5412,
- 0x5416, 0x5406, 0x544b, 0x5452, 0x5453, 0x5454, 0x5456, 0x5443,
- 0x5421, 0x5457, 0x5459, 0x5423, 0x5432, 0x5482, 0x5494, 0x5477,
- 0x5471, 0x5464, 0x549a, 0x549b, 0x5484, 0x5476, 0x5466, 0x549d,
- 0x54d0, 0x54ad, 0x54c2, 0x54b4, 0x54d2, 0x54a7, 0x54a6, 0x54d3,
- 0x54d4, 0x5472, 0x54a3, 0x54d5, 0x54bb, 0x54bf, 0x54cc, 0x54d9,
- 0x54da, 0x54dc, 0x54a9, 0x54aa, 0x54a4, 0x54dd, 0x54cf, 0x54de,
- 0x551b, 0x54e7, 0x5520, 0x54fd, 0x5514, 0x54f3, 0x5522, 0x5523,
- 0x550f, 0x5511, 0x5527, 0x552a, 0x5567, 0x558f, 0x55b5, 0x5549,
- 0x556d, 0x5541, 0x5555, 0x553f, 0x5550, 0x553c,
- /* 0xe0 */
- 0x90c2, 0x90c3, 0x90c6, 0x90c8, 0x90c9, 0x90cb, 0x90cc, 0x90cd,
- 0x90d2, 0x90d4, 0x90d5, 0x90d6, 0x90d8, 0x90d9, 0x90da, 0x90de,
- 0x90df, 0x90e0, 0x90e3, 0x90e4, 0x90e5, 0x90e9, 0x90ea, 0x90ec,
- 0x90ee, 0x90f0, 0x90f1, 0x90f2, 0x90f3, 0x90f5, 0x90f6, 0x90f7,
- 0x90f9, 0x90fa, 0x90fb, 0x90fc, 0x90ff, 0x9100, 0x9101, 0x9103,
- 0x9105, 0x9106, 0x9107, 0x9108, 0x9109, 0x910a, 0x910b, 0x910c,
- 0x910d, 0x910e, 0x910f, 0x9110, 0x9111, 0x9112, 0x9113, 0x9114,
- 0x9115, 0x9116, 0x9117, 0x9118, 0x911a, 0x911b, 0x911c, 0x911d,
- 0x911f, 0x9120, 0x9121, 0x9124, 0x9125, 0x9126, 0x9127, 0x9128,
- 0x9129, 0x912a, 0x912b, 0x912c, 0x912d, 0x912e, 0x9130, 0x9132,
- 0x9133, 0x9134, 0x9135, 0x9136, 0x9137, 0x9138, 0x913a, 0x913b,
- 0x913c, 0x913d, 0x913e, 0x913f, 0x9140, 0x9141, 0x9142, 0x9144,
- 0x5537, 0x5556, 0x5575, 0x5576, 0x5577, 0x5533, 0x5530, 0x555c,
- 0x558b, 0x55d2, 0x5583, 0x55b1, 0x55b9, 0x5588, 0x5581, 0x559f,
- 0x557e, 0x55d6, 0x5591, 0x557b, 0x55df, 0x55bd, 0x55be, 0x5594,
- 0x5599, 0x55ea, 0x55f7, 0x55c9, 0x561f, 0x55d1, 0x55eb, 0x55ec,
- 0x55d4, 0x55e6, 0x55dd, 0x55c4, 0x55ef, 0x55e5, 0x55f2, 0x55f3,
- 0x55cc, 0x55cd, 0x55e8, 0x55f5, 0x55e4, 0x8f94, 0x561e, 0x5608,
- 0x560c, 0x5601, 0x5624, 0x5623, 0x55fe, 0x5600, 0x5627, 0x562d,
- 0x5658, 0x5639, 0x5657, 0x562c, 0x564d, 0x5662, 0x5659, 0x565c,
- 0x564c, 0x5654, 0x5686, 0x5664, 0x5671, 0x566b, 0x567b, 0x567c,
- 0x5685, 0x5693, 0x56af, 0x56d4, 0x56d7, 0x56dd, 0x56e1, 0x56f5,
- 0x56eb, 0x56f9, 0x56ff, 0x5704, 0x570a, 0x5709, 0x571c, 0x5e0f,
- 0x5e19, 0x5e14, 0x5e11, 0x5e31, 0x5e3b, 0x5e3c,
- /* 0xe1 */
- 0x9145, 0x9147, 0x9148, 0x9151, 0x9153, 0x9154, 0x9155, 0x9156,
- 0x9158, 0x9159, 0x915b, 0x915c, 0x915f, 0x9160, 0x9166, 0x9167,
- 0x9168, 0x916b, 0x916d, 0x9173, 0x917a, 0x917b, 0x917c, 0x9180,
- 0x9181, 0x9182, 0x9183, 0x9184, 0x9186, 0x9188, 0x918a, 0x918e,
- 0x918f, 0x9193, 0x9194, 0x9195, 0x9196, 0x9197, 0x9198, 0x9199,
- 0x919c, 0x919d, 0x919e, 0x919f, 0x91a0, 0x91a1, 0x91a4, 0x91a5,
- 0x91a6, 0x91a7, 0x91a8, 0x91a9, 0x91ab, 0x91ac, 0x91b0, 0x91b1,
- 0x91b2, 0x91b3, 0x91b6, 0x91b7, 0x91b8, 0x91b9, 0x91bb, 0x91bc,
- 0x91bd, 0x91be, 0x91bf, 0x91c0, 0x91c1, 0x91c2, 0x91c3, 0x91c4,
- 0x91c5, 0x91c6, 0x91c8, 0x91cb, 0x91d0, 0x91d2, 0x91d3, 0x91d4,
- 0x91d5, 0x91d6, 0x91d7, 0x91d8, 0x91d9, 0x91da, 0x91db, 0x91dd,
- 0x91de, 0x91df, 0x91e0, 0x91e1, 0x91e2, 0x91e3, 0x91e4, 0x91e5,
- 0x5e37, 0x5e44, 0x5e54, 0x5e5b, 0x5e5e, 0x5e61, 0x5c8c, 0x5c7a,
- 0x5c8d, 0x5c90, 0x5c96, 0x5c88, 0x5c98, 0x5c99, 0x5c91, 0x5c9a,
- 0x5c9c, 0x5cb5, 0x5ca2, 0x5cbd, 0x5cac, 0x5cab, 0x5cb1, 0x5ca3,
- 0x5cc1, 0x5cb7, 0x5cc4, 0x5cd2, 0x5ce4, 0x5ccb, 0x5ce5, 0x5d02,
- 0x5d03, 0x5d27, 0x5d26, 0x5d2e, 0x5d24, 0x5d1e, 0x5d06, 0x5d1b,
- 0x5d58, 0x5d3e, 0x5d34, 0x5d3d, 0x5d6c, 0x5d5b, 0x5d6f, 0x5d5d,
- 0x5d6b, 0x5d4b, 0x5d4a, 0x5d69, 0x5d74, 0x5d82, 0x5d99, 0x5d9d,
- 0x8c73, 0x5db7, 0x5dc5, 0x5f73, 0x5f77, 0x5f82, 0x5f87, 0x5f89,
- 0x5f8c, 0x5f95, 0x5f99, 0x5f9c, 0x5fa8, 0x5fad, 0x5fb5, 0x5fbc,
- 0x8862, 0x5f61, 0x72ad, 0x72b0, 0x72b4, 0x72b7, 0x72b8, 0x72c3,
- 0x72c1, 0x72ce, 0x72cd, 0x72d2, 0x72e8, 0x72ef, 0x72e9, 0x72f2,
- 0x72f4, 0x72f7, 0x7301, 0x72f3, 0x7303, 0x72fa,
- /* 0xe2 */
- 0x91e6, 0x91e7, 0x91e8, 0x91e9, 0x91ea, 0x91eb, 0x91ec, 0x91ed,
- 0x91ee, 0x91ef, 0x91f0, 0x91f1, 0x91f2, 0x91f3, 0x91f4, 0x91f5,
- 0x91f6, 0x91f7, 0x91f8, 0x91f9, 0x91fa, 0x91fb, 0x91fc, 0x91fd,
- 0x91fe, 0x91ff, 0x9200, 0x9201, 0x9202, 0x9203, 0x9204, 0x9205,
- 0x9206, 0x9207, 0x9208, 0x9209, 0x920a, 0x920b, 0x920c, 0x920d,
- 0x920e, 0x920f, 0x9210, 0x9211, 0x9212, 0x9213, 0x9214, 0x9215,
- 0x9216, 0x9217, 0x9218, 0x9219, 0x921a, 0x921b, 0x921c, 0x921d,
- 0x921e, 0x921f, 0x9220, 0x9221, 0x9222, 0x9223, 0x9224, 0x9225,
- 0x9226, 0x9227, 0x9228, 0x9229, 0x922a, 0x922b, 0x922c, 0x922d,
- 0x922e, 0x922f, 0x9230, 0x9231, 0x9232, 0x9233, 0x9234, 0x9235,
- 0x9236, 0x9237, 0x9238, 0x9239, 0x923a, 0x923b, 0x923c, 0x923d,
- 0x923e, 0x923f, 0x9240, 0x9241, 0x9242, 0x9243, 0x9244, 0x9245,
- 0x72fb, 0x7317, 0x7313, 0x7321, 0x730a, 0x731e, 0x731d, 0x7315,
- 0x7322, 0x7339, 0x7325, 0x732c, 0x7338, 0x7331, 0x7350, 0x734d,
- 0x7357, 0x7360, 0x736c, 0x736f, 0x737e, 0x821b, 0x5925, 0x98e7,
- 0x5924, 0x5902, 0x9963, 0x9967, 0x9968, 0x9969, 0x996a, 0x996b,
- 0x996c, 0x9974, 0x9977, 0x997d, 0x9980, 0x9984, 0x9987, 0x998a,
- 0x998d, 0x9990, 0x9991, 0x9993, 0x9994, 0x9995, 0x5e80, 0x5e91,
- 0x5e8b, 0x5e96, 0x5ea5, 0x5ea0, 0x5eb9, 0x5eb5, 0x5ebe, 0x5eb3,
- 0x8d53, 0x5ed2, 0x5ed1, 0x5edb, 0x5ee8, 0x5eea, 0x81ba, 0x5fc4,
- 0x5fc9, 0x5fd6, 0x5fcf, 0x6003, 0x5fee, 0x6004, 0x5fe1, 0x5fe4,
- 0x5ffe, 0x6005, 0x6006, 0x5fea, 0x5fed, 0x5ff8, 0x6019, 0x6035,
- 0x6026, 0x601b, 0x600f, 0x600d, 0x6029, 0x602b, 0x600a, 0x603f,
- 0x6021, 0x6078, 0x6079, 0x607b, 0x607a, 0x6042,
- /* 0xe3 */
- 0x9246, 0x9247, 0x9248, 0x9249, 0x924a, 0x924b, 0x924c, 0x924d,
- 0x924e, 0x924f, 0x9250, 0x9251, 0x9252, 0x9253, 0x9254, 0x9255,
- 0x9256, 0x9257, 0x9258, 0x9259, 0x925a, 0x925b, 0x925c, 0x925d,
- 0x925e, 0x925f, 0x9260, 0x9261, 0x9262, 0x9263, 0x9264, 0x9265,
- 0x9266, 0x9267, 0x9268, 0x9269, 0x926a, 0x926b, 0x926c, 0x926d,
- 0x926e, 0x926f, 0x9270, 0x9271, 0x9272, 0x9273, 0x9275, 0x9276,
- 0x9277, 0x9278, 0x9279, 0x927a, 0x927b, 0x927c, 0x927d, 0x927e,
- 0x927f, 0x9280, 0x9281, 0x9282, 0x9283, 0x9284, 0x9285, 0x9286,
- 0x9287, 0x9288, 0x9289, 0x928a, 0x928b, 0x928c, 0x928d, 0x928f,
- 0x9290, 0x9291, 0x9292, 0x9293, 0x9294, 0x9295, 0x9296, 0x9297,
- 0x9298, 0x9299, 0x929a, 0x929b, 0x929c, 0x929d, 0x929e, 0x929f,
- 0x92a0, 0x92a1, 0x92a2, 0x92a3, 0x92a4, 0x92a5, 0x92a6, 0x92a7,
- 0x606a, 0x607d, 0x6096, 0x609a, 0x60ad, 0x609d, 0x6083, 0x6092,
- 0x608c, 0x609b, 0x60ec, 0x60bb, 0x60b1, 0x60dd, 0x60d8, 0x60c6,
- 0x60da, 0x60b4, 0x6120, 0x6126, 0x6115, 0x6123, 0x60f4, 0x6100,
- 0x610e, 0x612b, 0x614a, 0x6175, 0x61ac, 0x6194, 0x61a7, 0x61b7,
- 0x61d4, 0x61f5, 0x5fdd, 0x96b3, 0x95e9, 0x95eb, 0x95f1, 0x95f3,
- 0x95f5, 0x95f6, 0x95fc, 0x95fe, 0x9603, 0x9604, 0x9606, 0x9608,
- 0x960a, 0x960b, 0x960c, 0x960d, 0x960f, 0x9612, 0x9615, 0x9616,
- 0x9617, 0x9619, 0x961a, 0x4e2c, 0x723f, 0x6215, 0x6c35, 0x6c54,
- 0x6c5c, 0x6c4a, 0x6ca3, 0x6c85, 0x6c90, 0x6c94, 0x6c8c, 0x6c68,
- 0x6c69, 0x6c74, 0x6c76, 0x6c86, 0x6ca9, 0x6cd0, 0x6cd4, 0x6cad,
- 0x6cf7, 0x6cf8, 0x6cf1, 0x6cd7, 0x6cb2, 0x6ce0, 0x6cd6, 0x6cfa,
- 0x6ceb, 0x6cee, 0x6cb1, 0x6cd3, 0x6cef, 0x6cfe,
- /* 0xe4 */
- 0x92a8, 0x92a9, 0x92aa, 0x92ab, 0x92ac, 0x92ad, 0x92af, 0x92b0,
- 0x92b1, 0x92b2, 0x92b3, 0x92b4, 0x92b5, 0x92b6, 0x92b7, 0x92b8,
- 0x92b9, 0x92ba, 0x92bb, 0x92bc, 0x92bd, 0x92be, 0x92bf, 0x92c0,
- 0x92c1, 0x92c2, 0x92c3, 0x92c4, 0x92c5, 0x92c6, 0x92c7, 0x92c9,
- 0x92ca, 0x92cb, 0x92cc, 0x92cd, 0x92ce, 0x92cf, 0x92d0, 0x92d1,
- 0x92d2, 0x92d3, 0x92d4, 0x92d5, 0x92d6, 0x92d7, 0x92d8, 0x92d9,
- 0x92da, 0x92db, 0x92dc, 0x92dd, 0x92de, 0x92df, 0x92e0, 0x92e1,
- 0x92e2, 0x92e3, 0x92e4, 0x92e5, 0x92e6, 0x92e7, 0x92e8, 0x92e9,
- 0x92ea, 0x92eb, 0x92ec, 0x92ed, 0x92ee, 0x92ef, 0x92f0, 0x92f1,
- 0x92f2, 0x92f3, 0x92f4, 0x92f5, 0x92f6, 0x92f7, 0x92f8, 0x92f9,
- 0x92fa, 0x92fb, 0x92fc, 0x92fd, 0x92fe, 0x92ff, 0x9300, 0x9301,
- 0x9302, 0x9303, 0x9304, 0x9305, 0x9306, 0x9307, 0x9308, 0x9309,
- 0x6d39, 0x6d27, 0x6d0c, 0x6d43, 0x6d48, 0x6d07, 0x6d04, 0x6d19,
- 0x6d0e, 0x6d2b, 0x6d4d, 0x6d2e, 0x6d35, 0x6d1a, 0x6d4f, 0x6d52,
- 0x6d54, 0x6d33, 0x6d91, 0x6d6f, 0x6d9e, 0x6da0, 0x6d5e, 0x6d93,
- 0x6d94, 0x6d5c, 0x6d60, 0x6d7c, 0x6d63, 0x6e1a, 0x6dc7, 0x6dc5,
- 0x6dde, 0x6e0e, 0x6dbf, 0x6de0, 0x6e11, 0x6de6, 0x6ddd, 0x6dd9,
- 0x6e16, 0x6dab, 0x6e0c, 0x6dae, 0x6e2b, 0x6e6e, 0x6e4e, 0x6e6b,
- 0x6eb2, 0x6e5f, 0x6e86, 0x6e53, 0x6e54, 0x6e32, 0x6e25, 0x6e44,
- 0x6edf, 0x6eb1, 0x6e98, 0x6ee0, 0x6f2d, 0x6ee2, 0x6ea5, 0x6ea7,
- 0x6ebd, 0x6ebb, 0x6eb7, 0x6ed7, 0x6eb4, 0x6ecf, 0x6e8f, 0x6ec2,
- 0x6e9f, 0x6f62, 0x6f46, 0x6f47, 0x6f24, 0x6f15, 0x6ef9, 0x6f2f,
- 0x6f36, 0x6f4b, 0x6f74, 0x6f2a, 0x6f09, 0x6f29, 0x6f89, 0x6f8d,
- 0x6f8c, 0x6f78, 0x6f72, 0x6f7c, 0x6f7a, 0x6fd1,
- /* 0xe5 */
- 0x930a, 0x930b, 0x930c, 0x930d, 0x930e, 0x930f, 0x9310, 0x9311,
- 0x9312, 0x9313, 0x9314, 0x9315, 0x9316, 0x9317, 0x9318, 0x9319,
- 0x931a, 0x931b, 0x931c, 0x931d, 0x931e, 0x931f, 0x9320, 0x9321,
- 0x9322, 0x9323, 0x9324, 0x9325, 0x9326, 0x9327, 0x9328, 0x9329,
- 0x932a, 0x932b, 0x932c, 0x932d, 0x932e, 0x932f, 0x9330, 0x9331,
- 0x9332, 0x9333, 0x9334, 0x9335, 0x9336, 0x9337, 0x9338, 0x9339,
- 0x933a, 0x933b, 0x933c, 0x933d, 0x933f, 0x9340, 0x9341, 0x9342,
- 0x9343, 0x9344, 0x9345, 0x9346, 0x9347, 0x9348, 0x9349, 0x934a,
- 0x934b, 0x934c, 0x934d, 0x934e, 0x934f, 0x9350, 0x9351, 0x9352,
- 0x9353, 0x9354, 0x9355, 0x9356, 0x9357, 0x9358, 0x9359, 0x935a,
- 0x935b, 0x935c, 0x935d, 0x935e, 0x935f, 0x9360, 0x9361, 0x9362,
- 0x9363, 0x9364, 0x9365, 0x9366, 0x9367, 0x9368, 0x9369, 0x936b,
- 0x6fc9, 0x6fa7, 0x6fb9, 0x6fb6, 0x6fc2, 0x6fe1, 0x6fee, 0x6fde,
- 0x6fe0, 0x6fef, 0x701a, 0x7023, 0x701b, 0x7039, 0x7035, 0x704f,
- 0x705e, 0x5b80, 0x5b84, 0x5b95, 0x5b93, 0x5ba5, 0x5bb8, 0x752f,
- 0x9a9e, 0x6434, 0x5be4, 0x5bee, 0x8930, 0x5bf0, 0x8e47, 0x8b07,
- 0x8fb6, 0x8fd3, 0x8fd5, 0x8fe5, 0x8fee, 0x8fe4, 0x8fe9, 0x8fe6,
- 0x8ff3, 0x8fe8, 0x9005, 0x9004, 0x900b, 0x9026, 0x9011, 0x900d,
- 0x9016, 0x9021, 0x9035, 0x9036, 0x902d, 0x902f, 0x9044, 0x9051,
- 0x9052, 0x9050, 0x9068, 0x9058, 0x9062, 0x905b, 0x66b9, 0x9074,
- 0x907d, 0x9082, 0x9088, 0x9083, 0x908b, 0x5f50, 0x5f57, 0x5f56,
- 0x5f58, 0x5c3b, 0x54ab, 0x5c50, 0x5c59, 0x5b71, 0x5c63, 0x5c66,
- 0x7fbc, 0x5f2a, 0x5f29, 0x5f2d, 0x8274, 0x5f3c, 0x9b3b, 0x5c6e,
- 0x5981, 0x5983, 0x598d, 0x59a9, 0x59aa, 0x59a3,
- /* 0xe6 */
- 0x936c, 0x936d, 0x936e, 0x936f, 0x9370, 0x9371, 0x9372, 0x9373,
- 0x9374, 0x9375, 0x9376, 0x9377, 0x9378, 0x9379, 0x937a, 0x937b,
- 0x937c, 0x937d, 0x937e, 0x937f, 0x9380, 0x9381, 0x9382, 0x9383,
- 0x9384, 0x9385, 0x9386, 0x9387, 0x9388, 0x9389, 0x938a, 0x938b,
- 0x938c, 0x938d, 0x938e, 0x9390, 0x9391, 0x9392, 0x9393, 0x9394,
- 0x9395, 0x9396, 0x9397, 0x9398, 0x9399, 0x939a, 0x939b, 0x939c,
- 0x939d, 0x939e, 0x939f, 0x93a0, 0x93a1, 0x93a2, 0x93a3, 0x93a4,
- 0x93a5, 0x93a6, 0x93a7, 0x93a8, 0x93a9, 0x93aa, 0x93ab, 0x93ac,
- 0x93ad, 0x93ae, 0x93af, 0x93b0, 0x93b1, 0x93b2, 0x93b3, 0x93b4,
- 0x93b5, 0x93b6, 0x93b7, 0x93b8, 0x93b9, 0x93ba, 0x93bb, 0x93bc,
- 0x93bd, 0x93be, 0x93bf, 0x93c0, 0x93c1, 0x93c2, 0x93c3, 0x93c4,
- 0x93c5, 0x93c6, 0x93c7, 0x93c8, 0x93c9, 0x93cb, 0x93cc, 0x93cd,
- 0x5997, 0x59ca, 0x59ab, 0x599e, 0x59a4, 0x59d2, 0x59b2, 0x59af,
- 0x59d7, 0x59be, 0x5a05, 0x5a06, 0x59dd, 0x5a08, 0x59e3, 0x59d8,
- 0x59f9, 0x5a0c, 0x5a09, 0x5a32, 0x5a34, 0x5a11, 0x5a23, 0x5a13,
- 0x5a40, 0x5a67, 0x5a4a, 0x5a55, 0x5a3c, 0x5a62, 0x5a75, 0x80ec,
- 0x5aaa, 0x5a9b, 0x5a77, 0x5a7a, 0x5abe, 0x5aeb, 0x5ab2, 0x5ad2,
- 0x5ad4, 0x5ab8, 0x5ae0, 0x5ae3, 0x5af1, 0x5ad6, 0x5ae6, 0x5ad8,
- 0x5adc, 0x5b09, 0x5b17, 0x5b16, 0x5b32, 0x5b37, 0x5b40, 0x5c15,
- 0x5c1c, 0x5b5a, 0x5b65, 0x5b73, 0x5b51, 0x5b53, 0x5b62, 0x9a75,
- 0x9a77, 0x9a78, 0x9a7a, 0x9a7f, 0x9a7d, 0x9a80, 0x9a81, 0x9a85,
- 0x9a88, 0x9a8a, 0x9a90, 0x9a92, 0x9a93, 0x9a96, 0x9a98, 0x9a9b,
- 0x9a9c, 0x9a9d, 0x9a9f, 0x9aa0, 0x9aa2, 0x9aa3, 0x9aa5, 0x9aa7,
- 0x7e9f, 0x7ea1, 0x7ea3, 0x7ea5, 0x7ea8, 0x7ea9,
- /* 0xe7 */
- 0x93ce, 0x93cf, 0x93d0, 0x93d1, 0x93d2, 0x93d3, 0x93d4, 0x93d5,
- 0x93d7, 0x93d8, 0x93d9, 0x93da, 0x93db, 0x93dc, 0x93dd, 0x93de,
- 0x93df, 0x93e0, 0x93e1, 0x93e2, 0x93e3, 0x93e4, 0x93e5, 0x93e6,
- 0x93e7, 0x93e8, 0x93e9, 0x93ea, 0x93eb, 0x93ec, 0x93ed, 0x93ee,
- 0x93ef, 0x93f0, 0x93f1, 0x93f2, 0x93f3, 0x93f4, 0x93f5, 0x93f6,
- 0x93f7, 0x93f8, 0x93f9, 0x93fa, 0x93fb, 0x93fc, 0x93fd, 0x93fe,
- 0x93ff, 0x9400, 0x9401, 0x9402, 0x9403, 0x9404, 0x9405, 0x9406,
- 0x9407, 0x9408, 0x9409, 0x940a, 0x940b, 0x940c, 0x940d, 0x940e,
- 0x940f, 0x9410, 0x9411, 0x9412, 0x9413, 0x9414, 0x9415, 0x9416,
- 0x9417, 0x9418, 0x9419, 0x941a, 0x941b, 0x941c, 0x941d, 0x941e,
- 0x941f, 0x9420, 0x9421, 0x9422, 0x9423, 0x9424, 0x9425, 0x9426,
- 0x9427, 0x9428, 0x9429, 0x942a, 0x942b, 0x942c, 0x942d, 0x942e,
- 0x7ead, 0x7eb0, 0x7ebe, 0x7ec0, 0x7ec1, 0x7ec2, 0x7ec9, 0x7ecb,
- 0x7ecc, 0x7ed0, 0x7ed4, 0x7ed7, 0x7edb, 0x7ee0, 0x7ee1, 0x7ee8,
- 0x7eeb, 0x7eee, 0x7eef, 0x7ef1, 0x7ef2, 0x7f0d, 0x7ef6, 0x7efa,
- 0x7efb, 0x7efe, 0x7f01, 0x7f02, 0x7f03, 0x7f07, 0x7f08, 0x7f0b,
- 0x7f0c, 0x7f0f, 0x7f11, 0x7f12, 0x7f17, 0x7f19, 0x7f1c, 0x7f1b,
- 0x7f1f, 0x7f21, 0x7f22, 0x7f23, 0x7f24, 0x7f25, 0x7f26, 0x7f27,
- 0x7f2a, 0x7f2b, 0x7f2c, 0x7f2d, 0x7f2f, 0x7f30, 0x7f31, 0x7f32,
- 0x7f33, 0x7f35, 0x5e7a, 0x757f, 0x5ddb, 0x753e, 0x9095, 0x738e,
- 0x7391, 0x73ae, 0x73a2, 0x739f, 0x73cf, 0x73c2, 0x73d1, 0x73b7,
- 0x73b3, 0x73c0, 0x73c9, 0x73c8, 0x73e5, 0x73d9, 0x987c, 0x740a,
- 0x73e9, 0x73e7, 0x73de, 0x73ba, 0x73f2, 0x740f, 0x742a, 0x745b,
- 0x7426, 0x7425, 0x7428, 0x7430, 0x742e, 0x742c,
- /* 0xe8 */
- 0x942f, 0x9430, 0x9431, 0x9432, 0x9433, 0x9434, 0x9435, 0x9436,
- 0x9437, 0x9438, 0x9439, 0x943a, 0x943b, 0x943c, 0x943d, 0x943f,
- 0x9440, 0x9441, 0x9442, 0x9443, 0x9444, 0x9445, 0x9446, 0x9447,
- 0x9448, 0x9449, 0x944a, 0x944b, 0x944c, 0x944d, 0x944e, 0x944f,
- 0x9450, 0x9451, 0x9452, 0x9453, 0x9454, 0x9455, 0x9456, 0x9457,
- 0x9458, 0x9459, 0x945a, 0x945b, 0x945c, 0x945d, 0x945e, 0x945f,
- 0x9460, 0x9461, 0x9462, 0x9463, 0x9464, 0x9465, 0x9466, 0x9467,
- 0x9468, 0x9469, 0x946a, 0x946c, 0x946d, 0x946e, 0x946f, 0x9470,
- 0x9471, 0x9472, 0x9473, 0x9474, 0x9475, 0x9476, 0x9477, 0x9478,
- 0x9479, 0x947a, 0x947b, 0x947c, 0x947d, 0x947e, 0x947f, 0x9480,
- 0x9481, 0x9482, 0x9483, 0x9484, 0x9491, 0x9496, 0x9498, 0x94c7,
- 0x94cf, 0x94d3, 0x94d4, 0x94da, 0x94e6, 0x94fb, 0x951c, 0x9520,
- 0x741b, 0x741a, 0x7441, 0x745c, 0x7457, 0x7455, 0x7459, 0x7477,
- 0x746d, 0x747e, 0x749c, 0x748e, 0x7480, 0x7481, 0x7487, 0x748b,
- 0x749e, 0x74a8, 0x74a9, 0x7490, 0x74a7, 0x74d2, 0x74ba, 0x97ea,
- 0x97eb, 0x97ec, 0x674c, 0x6753, 0x675e, 0x6748, 0x6769, 0x67a5,
- 0x6787, 0x676a, 0x6773, 0x6798, 0x67a7, 0x6775, 0x67a8, 0x679e,
- 0x67ad, 0x678b, 0x6777, 0x677c, 0x67f0, 0x6809, 0x67d8, 0x680a,
- 0x67e9, 0x67b0, 0x680c, 0x67d9, 0x67b5, 0x67da, 0x67b3, 0x67dd,
- 0x6800, 0x67c3, 0x67b8, 0x67e2, 0x680e, 0x67c1, 0x67fd, 0x6832,
- 0x6833, 0x6860, 0x6861, 0x684e, 0x6862, 0x6844, 0x6864, 0x6883,
- 0x681d, 0x6855, 0x6866, 0x6841, 0x6867, 0x6840, 0x683e, 0x684a,
- 0x6849, 0x6829, 0x68b5, 0x688f, 0x6874, 0x6877, 0x6893, 0x686b,
- 0x68c2, 0x696e, 0x68fc, 0x691f, 0x6920, 0x68f9,
- /* 0xe9 */
- 0x9527, 0x9533, 0x953d, 0x9543, 0x9548, 0x954b, 0x9555, 0x955a,
- 0x9560, 0x956e, 0x9574, 0x9575, 0x9577, 0x9578, 0x9579, 0x957a,
- 0x957b, 0x957c, 0x957d, 0x957e, 0x9580, 0x9581, 0x9582, 0x9583,
- 0x9584, 0x9585, 0x9586, 0x9587, 0x9588, 0x9589, 0x958a, 0x958b,
- 0x958c, 0x958d, 0x958e, 0x958f, 0x9590, 0x9591, 0x9592, 0x9593,
- 0x9594, 0x9595, 0x9596, 0x9597, 0x9598, 0x9599, 0x959a, 0x959b,
- 0x959c, 0x959d, 0x959e, 0x959f, 0x95a0, 0x95a1, 0x95a2, 0x95a3,
- 0x95a4, 0x95a5, 0x95a6, 0x95a7, 0x95a8, 0x95a9, 0x95aa, 0x95ab,
- 0x95ac, 0x95ad, 0x95ae, 0x95af, 0x95b0, 0x95b1, 0x95b2, 0x95b3,
- 0x95b4, 0x95b5, 0x95b6, 0x95b7, 0x95b8, 0x95b9, 0x95ba, 0x95bb,
- 0x95bc, 0x95bd, 0x95be, 0x95bf, 0x95c0, 0x95c1, 0x95c2, 0x95c3,
- 0x95c4, 0x95c5, 0x95c6, 0x95c7, 0x95c8, 0x95c9, 0x95ca, 0x95cb,
- 0x6924, 0x68f0, 0x690b, 0x6901, 0x6957, 0x68e3, 0x6910, 0x6971,
- 0x6939, 0x6960, 0x6942, 0x695d, 0x6984, 0x696b, 0x6980, 0x6998,
- 0x6978, 0x6934, 0x69cc, 0x6987, 0x6988, 0x69ce, 0x6989, 0x6966,
- 0x6963, 0x6979, 0x699b, 0x69a7, 0x69bb, 0x69ab, 0x69ad, 0x69d4,
- 0x69b1, 0x69c1, 0x69ca, 0x69df, 0x6995, 0x69e0, 0x698d, 0x69ff,
- 0x6a2f, 0x69ed, 0x6a17, 0x6a18, 0x6a65, 0x69f2, 0x6a44, 0x6a3e,
- 0x6aa0, 0x6a50, 0x6a5b, 0x6a35, 0x6a8e, 0x6a79, 0x6a3d, 0x6a28,
- 0x6a58, 0x6a7c, 0x6a91, 0x6a90, 0x6aa9, 0x6a97, 0x6aab, 0x7337,
- 0x7352, 0x6b81, 0x6b82, 0x6b87, 0x6b84, 0x6b92, 0x6b93, 0x6b8d,
- 0x6b9a, 0x6b9b, 0x6ba1, 0x6baa, 0x8f6b, 0x8f6d, 0x8f71, 0x8f72,
- 0x8f73, 0x8f75, 0x8f76, 0x8f78, 0x8f77, 0x8f79, 0x8f7a, 0x8f7c,
- 0x8f7e, 0x8f81, 0x8f82, 0x8f84, 0x8f87, 0x8f8b,
- /* 0xea */
- 0x95cc, 0x95cd, 0x95ce, 0x95cf, 0x95d0, 0x95d1, 0x95d2, 0x95d3,
- 0x95d4, 0x95d5, 0x95d6, 0x95d7, 0x95d8, 0x95d9, 0x95da, 0x95db,
- 0x95dc, 0x95dd, 0x95de, 0x95df, 0x95e0, 0x95e1, 0x95e2, 0x95e3,
- 0x95e4, 0x95e5, 0x95e6, 0x95e7, 0x95ec, 0x95ff, 0x9607, 0x9613,
- 0x9618, 0x961b, 0x961e, 0x9620, 0x9623, 0x9624, 0x9625, 0x9626,
- 0x9627, 0x9628, 0x9629, 0x962b, 0x962c, 0x962d, 0x962f, 0x9630,
- 0x9637, 0x9638, 0x9639, 0x963a, 0x963e, 0x9641, 0x9643, 0x964a,
- 0x964e, 0x964f, 0x9651, 0x9652, 0x9653, 0x9656, 0x9657, 0x9658,
- 0x9659, 0x965a, 0x965c, 0x965d, 0x965e, 0x9660, 0x9663, 0x9665,
- 0x9666, 0x966b, 0x966d, 0x966e, 0x966f, 0x9670, 0x9671, 0x9673,
- 0x9678, 0x9679, 0x967a, 0x967b, 0x967c, 0x967d, 0x967e, 0x967f,
- 0x9680, 0x9681, 0x9682, 0x9683, 0x9684, 0x9687, 0x9689, 0x968a,
- 0x8f8d, 0x8f8e, 0x8f8f, 0x8f98, 0x8f9a, 0x8ece, 0x620b, 0x6217,
- 0x621b, 0x621f, 0x6222, 0x6221, 0x6225, 0x6224, 0x622c, 0x81e7,
- 0x74ef, 0x74f4, 0x74ff, 0x750f, 0x7511, 0x7513, 0x6534, 0x65ee,
- 0x65ef, 0x65f0, 0x660a, 0x6619, 0x6772, 0x6603, 0x6615, 0x6600,
- 0x7085, 0x66f7, 0x661d, 0x6634, 0x6631, 0x6636, 0x6635, 0x8006,
- 0x665f, 0x6654, 0x6641, 0x664f, 0x6656, 0x6661, 0x6657, 0x6677,
- 0x6684, 0x668c, 0x66a7, 0x669d, 0x66be, 0x66db, 0x66dc, 0x66e6,
- 0x66e9, 0x8d32, 0x8d33, 0x8d36, 0x8d3b, 0x8d3d, 0x8d40, 0x8d45,
- 0x8d46, 0x8d48, 0x8d49, 0x8d47, 0x8d4d, 0x8d55, 0x8d59, 0x89c7,
- 0x89ca, 0x89cb, 0x89cc, 0x89ce, 0x89cf, 0x89d0, 0x89d1, 0x726e,
- 0x729f, 0x725d, 0x7266, 0x726f, 0x727e, 0x727f, 0x7284, 0x728b,
- 0x728d, 0x728f, 0x7292, 0x6308, 0x6332, 0x63b0,
- /* 0xeb */
- 0x968c, 0x968e, 0x9691, 0x9692, 0x9693, 0x9695, 0x9696, 0x969a,
- 0x969b, 0x969d, 0x969e, 0x969f, 0x96a0, 0x96a1, 0x96a2, 0x96a3,
- 0x96a4, 0x96a5, 0x96a6, 0x96a8, 0x96a9, 0x96aa, 0x96ab, 0x96ac,
- 0x96ad, 0x96ae, 0x96af, 0x96b1, 0x96b2, 0x96b4, 0x96b5, 0x96b7,
- 0x96b8, 0x96ba, 0x96bb, 0x96bf, 0x96c2, 0x96c3, 0x96c8, 0x96ca,
- 0x96cb, 0x96d0, 0x96d1, 0x96d3, 0x96d4, 0x96d6, 0x96d7, 0x96d8,
- 0x96d9, 0x96da, 0x96db, 0x96dc, 0x96dd, 0x96de, 0x96df, 0x96e1,
- 0x96e2, 0x96e3, 0x96e4, 0x96e5, 0x96e6, 0x96e7, 0x96eb, 0x96ec,
- 0x96ed, 0x96ee, 0x96f0, 0x96f1, 0x96f2, 0x96f4, 0x96f5, 0x96f8,
- 0x96fa, 0x96fb, 0x96fc, 0x96fd, 0x96ff, 0x9702, 0x9703, 0x9705,
- 0x970a, 0x970b, 0x970c, 0x9710, 0x9711, 0x9712, 0x9714, 0x9715,
- 0x9717, 0x9718, 0x9719, 0x971a, 0x971b, 0x971d, 0x971f, 0x9720,
- 0x643f, 0x64d8, 0x8004, 0x6bea, 0x6bf3, 0x6bfd, 0x6bf5, 0x6bf9,
- 0x6c05, 0x6c07, 0x6c06, 0x6c0d, 0x6c15, 0x6c18, 0x6c19, 0x6c1a,
- 0x6c21, 0x6c29, 0x6c24, 0x6c2a, 0x6c32, 0x6535, 0x6555, 0x656b,
- 0x724d, 0x7252, 0x7256, 0x7230, 0x8662, 0x5216, 0x809f, 0x809c,
- 0x8093, 0x80bc, 0x670a, 0x80bd, 0x80b1, 0x80ab, 0x80ad, 0x80b4,
- 0x80b7, 0x80e7, 0x80e8, 0x80e9, 0x80ea, 0x80db, 0x80c2, 0x80c4,
- 0x80d9, 0x80cd, 0x80d7, 0x6710, 0x80dd, 0x80eb, 0x80f1, 0x80f4,
- 0x80ed, 0x810d, 0x810e, 0x80f2, 0x80fc, 0x6715, 0x8112, 0x8c5a,
- 0x8136, 0x811e, 0x812c, 0x8118, 0x8132, 0x8148, 0x814c, 0x8153,
- 0x8174, 0x8159, 0x815a, 0x8171, 0x8160, 0x8169, 0x817c, 0x817d,
- 0x816d, 0x8167, 0x584d, 0x5ab5, 0x8188, 0x8182, 0x8191, 0x6ed5,
- 0x81a3, 0x81aa, 0x81cc, 0x6726, 0x81ca, 0x81bb,
- /* 0xec */
- 0x9721, 0x9722, 0x9723, 0x9724, 0x9725, 0x9726, 0x9727, 0x9728,
- 0x9729, 0x972b, 0x972c, 0x972e, 0x972f, 0x9731, 0x9733, 0x9734,
- 0x9735, 0x9736, 0x9737, 0x973a, 0x973b, 0x973c, 0x973d, 0x973f,
- 0x9740, 0x9741, 0x9742, 0x9743, 0x9744, 0x9745, 0x9746, 0x9747,
- 0x9748, 0x9749, 0x974a, 0x974b, 0x974c, 0x974d, 0x974e, 0x974f,
- 0x9750, 0x9751, 0x9754, 0x9755, 0x9757, 0x9758, 0x975a, 0x975c,
- 0x975d, 0x975f, 0x9763, 0x9764, 0x9766, 0x9767, 0x9768, 0x976a,
- 0x976b, 0x976c, 0x976d, 0x976e, 0x976f, 0x9770, 0x9771, 0x9772,
- 0x9775, 0x9777, 0x9778, 0x9779, 0x977a, 0x977b, 0x977d, 0x977e,
- 0x977f, 0x9780, 0x9781, 0x9782, 0x9783, 0x9784, 0x9786, 0x9787,
- 0x9788, 0x9789, 0x978a, 0x978c, 0x978e, 0x978f, 0x9790, 0x9793,
- 0x9795, 0x9796, 0x9797, 0x9799, 0x979a, 0x979b, 0x979c, 0x979d,
- 0x81c1, 0x81a6, 0x6b24, 0x6b37, 0x6b39, 0x6b43, 0x6b46, 0x6b59,
- 0x98d1, 0x98d2, 0x98d3, 0x98d5, 0x98d9, 0x98da, 0x6bb3, 0x5f40,
- 0x6bc2, 0x89f3, 0x6590, 0x9f51, 0x6593, 0x65bc, 0x65c6, 0x65c4,
- 0x65c3, 0x65cc, 0x65ce, 0x65d2, 0x65d6, 0x7080, 0x709c, 0x7096,
- 0x709d, 0x70bb, 0x70c0, 0x70b7, 0x70ab, 0x70b1, 0x70e8, 0x70ca,
- 0x7110, 0x7113, 0x7116, 0x712f, 0x7131, 0x7173, 0x715c, 0x7168,
- 0x7145, 0x7172, 0x714a, 0x7178, 0x717a, 0x7198, 0x71b3, 0x71b5,
- 0x71a8, 0x71a0, 0x71e0, 0x71d4, 0x71e7, 0x71f9, 0x721d, 0x7228,
- 0x706c, 0x7118, 0x7166, 0x71b9, 0x623e, 0x623d, 0x6243, 0x6248,
- 0x6249, 0x793b, 0x7940, 0x7946, 0x7949, 0x795b, 0x795c, 0x7953,
- 0x795a, 0x7962, 0x7957, 0x7960, 0x796f, 0x7967, 0x797a, 0x7985,
- 0x798a, 0x799a, 0x79a7, 0x79b3, 0x5fd1, 0x5fd0,
- /* 0xed */
- 0x979e, 0x979f, 0x97a1, 0x97a2, 0x97a4, 0x97a5, 0x97a6, 0x97a7,
- 0x97a8, 0x97a9, 0x97aa, 0x97ac, 0x97ae, 0x97b0, 0x97b1, 0x97b3,
- 0x97b5, 0x97b6, 0x97b7, 0x97b8, 0x97b9, 0x97ba, 0x97bb, 0x97bc,
- 0x97bd, 0x97be, 0x97bf, 0x97c0, 0x97c1, 0x97c2, 0x97c3, 0x97c4,
- 0x97c5, 0x97c6, 0x97c7, 0x97c8, 0x97c9, 0x97ca, 0x97cb, 0x97cc,
- 0x97cd, 0x97ce, 0x97cf, 0x97d0, 0x97d1, 0x97d2, 0x97d3, 0x97d4,
- 0x97d5, 0x97d6, 0x97d7, 0x97d8, 0x97d9, 0x97da, 0x97db, 0x97dc,
- 0x97dd, 0x97de, 0x97df, 0x97e0, 0x97e1, 0x97e2, 0x97e3, 0x97e4,
- 0x97e5, 0x97e8, 0x97ee, 0x97ef, 0x97f0, 0x97f1, 0x97f2, 0x97f4,
- 0x97f7, 0x97f8, 0x97f9, 0x97fa, 0x97fb, 0x97fc, 0x97fd, 0x97fe,
- 0x97ff, 0x9800, 0x9801, 0x9802, 0x9803, 0x9804, 0x9805, 0x9806,
- 0x9807, 0x9808, 0x9809, 0x980a, 0x980b, 0x980c, 0x980d, 0x980e,
- 0x603c, 0x605d, 0x605a, 0x6067, 0x6041, 0x6059, 0x6063, 0x60ab,
- 0x6106, 0x610d, 0x615d, 0x61a9, 0x619d, 0x61cb, 0x61d1, 0x6206,
- 0x8080, 0x807f, 0x6c93, 0x6cf6, 0x6dfc, 0x77f6, 0x77f8, 0x7800,
- 0x7809, 0x7817, 0x7818, 0x7811, 0x65ab, 0x782d, 0x781c, 0x781d,
- 0x7839, 0x783a, 0x783b, 0x781f, 0x783c, 0x7825, 0x782c, 0x7823,
- 0x7829, 0x784e, 0x786d, 0x7856, 0x7857, 0x7826, 0x7850, 0x7847,
- 0x784c, 0x786a, 0x789b, 0x7893, 0x789a, 0x7887, 0x789c, 0x78a1,
- 0x78a3, 0x78b2, 0x78b9, 0x78a5, 0x78d4, 0x78d9, 0x78c9, 0x78ec,
- 0x78f2, 0x7905, 0x78f4, 0x7913, 0x7924, 0x791e, 0x7934, 0x9f9b,
- 0x9ef9, 0x9efb, 0x9efc, 0x76f1, 0x7704, 0x770d, 0x76f9, 0x7707,
- 0x7708, 0x771a, 0x7722, 0x7719, 0x772d, 0x7726, 0x7735, 0x7738,
- 0x7750, 0x7751, 0x7747, 0x7743, 0x775a, 0x7768,
- /* 0xee */
- 0x980f, 0x9810, 0x9811, 0x9812, 0x9813, 0x9814, 0x9815, 0x9816,
- 0x9817, 0x9818, 0x9819, 0x981a, 0x981b, 0x981c, 0x981d, 0x981e,
- 0x981f, 0x9820, 0x9821, 0x9822, 0x9823, 0x9824, 0x9825, 0x9826,
- 0x9827, 0x9828, 0x9829, 0x982a, 0x982b, 0x982c, 0x982d, 0x982e,
- 0x982f, 0x9830, 0x9831, 0x9832, 0x9833, 0x9834, 0x9835, 0x9836,
- 0x9837, 0x9838, 0x9839, 0x983a, 0x983b, 0x983c, 0x983d, 0x983e,
- 0x983f, 0x9840, 0x9841, 0x9842, 0x9843, 0x9844, 0x9845, 0x9846,
- 0x9847, 0x9848, 0x9849, 0x984a, 0x984b, 0x984c, 0x984d, 0x984e,
- 0x984f, 0x9850, 0x9851, 0x9852, 0x9853, 0x9854, 0x9855, 0x9856,
- 0x9857, 0x9858, 0x9859, 0x985a, 0x985b, 0x985c, 0x985d, 0x985e,
- 0x985f, 0x9860, 0x9861, 0x9862, 0x9863, 0x9864, 0x9865, 0x9866,
- 0x9867, 0x9868, 0x9869, 0x986a, 0x986b, 0x986c, 0x986d, 0x986e,
- 0x7762, 0x7765, 0x777f, 0x778d, 0x777d, 0x7780, 0x778c, 0x7791,
- 0x779f, 0x77a0, 0x77b0, 0x77b5, 0x77bd, 0x753a, 0x7540, 0x754e,
- 0x754b, 0x7548, 0x755b, 0x7572, 0x7579, 0x7583, 0x7f58, 0x7f61,
- 0x7f5f, 0x8a48, 0x7f68, 0x7f74, 0x7f71, 0x7f79, 0x7f81, 0x7f7e,
- 0x76cd, 0x76e5, 0x8832, 0x9485, 0x9486, 0x9487, 0x948b, 0x948a,
- 0x948c, 0x948d, 0x948f, 0x9490, 0x9494, 0x9497, 0x9495, 0x949a,
- 0x949b, 0x949c, 0x94a3, 0x94a4, 0x94ab, 0x94aa, 0x94ad, 0x94ac,
- 0x94af, 0x94b0, 0x94b2, 0x94b4, 0x94b6, 0x94b7, 0x94b8, 0x94b9,
- 0x94ba, 0x94bc, 0x94bd, 0x94bf, 0x94c4, 0x94c8, 0x94c9, 0x94ca,
- 0x94cb, 0x94cc, 0x94cd, 0x94ce, 0x94d0, 0x94d1, 0x94d2, 0x94d5,
- 0x94d6, 0x94d7, 0x94d9, 0x94d8, 0x94db, 0x94de, 0x94df, 0x94e0,
- 0x94e2, 0x94e4, 0x94e5, 0x94e7, 0x94e8, 0x94ea,
- /* 0xef */
- 0x986f, 0x9870, 0x9871, 0x9872, 0x9873, 0x9874, 0x988b, 0x988e,
- 0x9892, 0x9895, 0x9899, 0x98a3, 0x98a8, 0x98a9, 0x98aa, 0x98ab,
- 0x98ac, 0x98ad, 0x98ae, 0x98af, 0x98b0, 0x98b1, 0x98b2, 0x98b3,
- 0x98b4, 0x98b5, 0x98b6, 0x98b7, 0x98b8, 0x98b9, 0x98ba, 0x98bb,
- 0x98bc, 0x98bd, 0x98be, 0x98bf, 0x98c0, 0x98c1, 0x98c2, 0x98c3,
- 0x98c4, 0x98c5, 0x98c6, 0x98c7, 0x98c8, 0x98c9, 0x98ca, 0x98cb,
- 0x98cc, 0x98cd, 0x98cf, 0x98d0, 0x98d4, 0x98d6, 0x98d7, 0x98db,
- 0x98dc, 0x98dd, 0x98e0, 0x98e1, 0x98e2, 0x98e3, 0x98e4, 0x98e5,
- 0x98e6, 0x98e9, 0x98ea, 0x98eb, 0x98ec, 0x98ed, 0x98ee, 0x98ef,
- 0x98f0, 0x98f1, 0x98f2, 0x98f3, 0x98f4, 0x98f5, 0x98f6, 0x98f7,
- 0x98f8, 0x98f9, 0x98fa, 0x98fb, 0x98fc, 0x98fd, 0x98fe, 0x98ff,
- 0x9900, 0x9901, 0x9902, 0x9903, 0x9904, 0x9905, 0x9906, 0x9907,
- 0x94e9, 0x94eb, 0x94ee, 0x94ef, 0x94f3, 0x94f4, 0x94f5, 0x94f7,
- 0x94f9, 0x94fc, 0x94fd, 0x94ff, 0x9503, 0x9502, 0x9506, 0x9507,
- 0x9509, 0x950a, 0x950d, 0x950e, 0x950f, 0x9512, 0x9513, 0x9514,
- 0x9515, 0x9516, 0x9518, 0x951b, 0x951d, 0x951e, 0x951f, 0x9522,
- 0x952a, 0x952b, 0x9529, 0x952c, 0x9531, 0x9532, 0x9534, 0x9536,
- 0x9537, 0x9538, 0x953c, 0x953e, 0x953f, 0x9542, 0x9535, 0x9544,
- 0x9545, 0x9546, 0x9549, 0x954c, 0x954e, 0x954f, 0x9552, 0x9553,
- 0x9554, 0x9556, 0x9557, 0x9558, 0x9559, 0x955b, 0x955e, 0x955f,
- 0x955d, 0x9561, 0x9562, 0x9564, 0x9565, 0x9566, 0x9567, 0x9568,
- 0x9569, 0x956a, 0x956b, 0x956c, 0x956f, 0x9571, 0x9572, 0x9573,
- 0x953a, 0x77e7, 0x77ec, 0x96c9, 0x79d5, 0x79ed, 0x79e3, 0x79eb,
- 0x7a06, 0x5d47, 0x7a03, 0x7a02, 0x7a1e, 0x7a14,
- /* 0xf0 */
- 0x9908, 0x9909, 0x990a, 0x990b, 0x990c, 0x990e, 0x990f, 0x9911,
- 0x9912, 0x9913, 0x9914, 0x9915, 0x9916, 0x9917, 0x9918, 0x9919,
- 0x991a, 0x991b, 0x991c, 0x991d, 0x991e, 0x991f, 0x9920, 0x9921,
- 0x9922, 0x9923, 0x9924, 0x9925, 0x9926, 0x9927, 0x9928, 0x9929,
- 0x992a, 0x992b, 0x992c, 0x992d, 0x992f, 0x9930, 0x9931, 0x9932,
- 0x9933, 0x9934, 0x9935, 0x9936, 0x9937, 0x9938, 0x9939, 0x993a,
- 0x993b, 0x993c, 0x993d, 0x993e, 0x993f, 0x9940, 0x9941, 0x9942,
- 0x9943, 0x9944, 0x9945, 0x9946, 0x9947, 0x9948, 0x9949, 0x994a,
- 0x994b, 0x994c, 0x994d, 0x994e, 0x994f, 0x9950, 0x9951, 0x9952,
- 0x9953, 0x9956, 0x9957, 0x9958, 0x9959, 0x995a, 0x995b, 0x995c,
- 0x995d, 0x995e, 0x995f, 0x9960, 0x9961, 0x9962, 0x9964, 0x9966,
- 0x9973, 0x9978, 0x9979, 0x997b, 0x997e, 0x9982, 0x9983, 0x9989,
- 0x7a39, 0x7a37, 0x7a51, 0x9ecf, 0x99a5, 0x7a70, 0x7688, 0x768e,
- 0x7693, 0x7699, 0x76a4, 0x74de, 0x74e0, 0x752c, 0x9e20, 0x9e22,
- 0x9e28, 0x9e29, 0x9e2a, 0x9e2b, 0x9e2c, 0x9e32, 0x9e31, 0x9e36,
- 0x9e38, 0x9e37, 0x9e39, 0x9e3a, 0x9e3e, 0x9e41, 0x9e42, 0x9e44,
- 0x9e46, 0x9e47, 0x9e48, 0x9e49, 0x9e4b, 0x9e4c, 0x9e4e, 0x9e51,
- 0x9e55, 0x9e57, 0x9e5a, 0x9e5b, 0x9e5c, 0x9e5e, 0x9e63, 0x9e66,
- 0x9e67, 0x9e68, 0x9e69, 0x9e6a, 0x9e6b, 0x9e6c, 0x9e71, 0x9e6d,
- 0x9e73, 0x7592, 0x7594, 0x7596, 0x75a0, 0x759d, 0x75ac, 0x75a3,
- 0x75b3, 0x75b4, 0x75b8, 0x75c4, 0x75b1, 0x75b0, 0x75c3, 0x75c2,
- 0x75d6, 0x75cd, 0x75e3, 0x75e8, 0x75e6, 0x75e4, 0x75eb, 0x75e7,
- 0x7603, 0x75f1, 0x75fc, 0x75ff, 0x7610, 0x7600, 0x7605, 0x760c,
- 0x7617, 0x760a, 0x7625, 0x7618, 0x7615, 0x7619,
- /* 0xf1 */
- 0x998c, 0x998e, 0x999a, 0x999b, 0x999c, 0x999d, 0x999e, 0x999f,
- 0x99a0, 0x99a1, 0x99a2, 0x99a3, 0x99a4, 0x99a6, 0x99a7, 0x99a9,
- 0x99aa, 0x99ab, 0x99ac, 0x99ad, 0x99ae, 0x99af, 0x99b0, 0x99b1,
- 0x99b2, 0x99b3, 0x99b4, 0x99b5, 0x99b6, 0x99b7, 0x99b8, 0x99b9,
- 0x99ba, 0x99bb, 0x99bc, 0x99bd, 0x99be, 0x99bf, 0x99c0, 0x99c1,
- 0x99c2, 0x99c3, 0x99c4, 0x99c5, 0x99c6, 0x99c7, 0x99c8, 0x99c9,
- 0x99ca, 0x99cb, 0x99cc, 0x99cd, 0x99ce, 0x99cf, 0x99d0, 0x99d1,
- 0x99d2, 0x99d3, 0x99d4, 0x99d5, 0x99d6, 0x99d7, 0x99d8, 0x99d9,
- 0x99da, 0x99db, 0x99dc, 0x99dd, 0x99de, 0x99df, 0x99e0, 0x99e1,
- 0x99e2, 0x99e3, 0x99e4, 0x99e5, 0x99e6, 0x99e7, 0x99e8, 0x99e9,
- 0x99ea, 0x99eb, 0x99ec, 0x99ed, 0x99ee, 0x99ef, 0x99f0, 0x99f1,
- 0x99f2, 0x99f3, 0x99f4, 0x99f5, 0x99f6, 0x99f7, 0x99f8, 0x99f9,
- 0x761b, 0x763c, 0x7622, 0x7620, 0x7640, 0x762d, 0x7630, 0x763f,
- 0x7635, 0x7643, 0x763e, 0x7633, 0x764d, 0x765e, 0x7654, 0x765c,
- 0x7656, 0x766b, 0x766f, 0x7fca, 0x7ae6, 0x7a78, 0x7a79, 0x7a80,
- 0x7a86, 0x7a88, 0x7a95, 0x7aa6, 0x7aa0, 0x7aac, 0x7aa8, 0x7aad,
- 0x7ab3, 0x8864, 0x8869, 0x8872, 0x887d, 0x887f, 0x8882, 0x88a2,
- 0x88c6, 0x88b7, 0x88bc, 0x88c9, 0x88e2, 0x88ce, 0x88e3, 0x88e5,
- 0x88f1, 0x891a, 0x88fc, 0x88e8, 0x88fe, 0x88f0, 0x8921, 0x8919,
- 0x8913, 0x891b, 0x890a, 0x8934, 0x892b, 0x8936, 0x8941, 0x8966,
- 0x897b, 0x758b, 0x80e5, 0x76b2, 0x76b4, 0x77dc, 0x8012, 0x8014,
- 0x8016, 0x801c, 0x8020, 0x8022, 0x8025, 0x8026, 0x8027, 0x8029,
- 0x8028, 0x8031, 0x800b, 0x8035, 0x8043, 0x8046, 0x804d, 0x8052,
- 0x8069, 0x8071, 0x8983, 0x9878, 0x9880, 0x9883,
- /* 0xf2 */
- 0x99fa, 0x99fb, 0x99fc, 0x99fd, 0x99fe, 0x99ff, 0x9a00, 0x9a01,
- 0x9a02, 0x9a03, 0x9a04, 0x9a05, 0x9a06, 0x9a07, 0x9a08, 0x9a09,
- 0x9a0a, 0x9a0b, 0x9a0c, 0x9a0d, 0x9a0e, 0x9a0f, 0x9a10, 0x9a11,
- 0x9a12, 0x9a13, 0x9a14, 0x9a15, 0x9a16, 0x9a17, 0x9a18, 0x9a19,
- 0x9a1a, 0x9a1b, 0x9a1c, 0x9a1d, 0x9a1e, 0x9a1f, 0x9a20, 0x9a21,
- 0x9a22, 0x9a23, 0x9a24, 0x9a25, 0x9a26, 0x9a27, 0x9a28, 0x9a29,
- 0x9a2a, 0x9a2b, 0x9a2c, 0x9a2d, 0x9a2e, 0x9a2f, 0x9a30, 0x9a31,
- 0x9a32, 0x9a33, 0x9a34, 0x9a35, 0x9a36, 0x9a37, 0x9a38, 0x9a39,
- 0x9a3a, 0x9a3b, 0x9a3c, 0x9a3d, 0x9a3e, 0x9a3f, 0x9a40, 0x9a41,
- 0x9a42, 0x9a43, 0x9a44, 0x9a45, 0x9a46, 0x9a47, 0x9a48, 0x9a49,
- 0x9a4a, 0x9a4b, 0x9a4c, 0x9a4d, 0x9a4e, 0x9a4f, 0x9a50, 0x9a51,
- 0x9a52, 0x9a53, 0x9a54, 0x9a55, 0x9a56, 0x9a57, 0x9a58, 0x9a59,
- 0x9889, 0x988c, 0x988d, 0x988f, 0x9894, 0x989a, 0x989b, 0x989e,
- 0x989f, 0x98a1, 0x98a2, 0x98a5, 0x98a6, 0x864d, 0x8654, 0x866c,
- 0x866e, 0x867f, 0x867a, 0x867c, 0x867b, 0x86a8, 0x868d, 0x868b,
- 0x86ac, 0x869d, 0x86a7, 0x86a3, 0x86aa, 0x8693, 0x86a9, 0x86b6,
- 0x86c4, 0x86b5, 0x86ce, 0x86b0, 0x86ba, 0x86b1, 0x86af, 0x86c9,
- 0x86cf, 0x86b4, 0x86e9, 0x86f1, 0x86f2, 0x86ed, 0x86f3, 0x86d0,
- 0x8713, 0x86de, 0x86f4, 0x86df, 0x86d8, 0x86d1, 0x8703, 0x8707,
- 0x86f8, 0x8708, 0x870a, 0x870d, 0x8709, 0x8723, 0x873b, 0x871e,
- 0x8725, 0x872e, 0x871a, 0x873e, 0x8748, 0x8734, 0x8731, 0x8729,
- 0x8737, 0x873f, 0x8782, 0x8722, 0x877d, 0x877e, 0x877b, 0x8760,
- 0x8770, 0x874c, 0x876e, 0x878b, 0x8753, 0x8763, 0x877c, 0x8764,
- 0x8759, 0x8765, 0x8793, 0x87af, 0x87a8, 0x87d2,
- /* 0xf3 */
- 0x9a5a, 0x9a5b, 0x9a5c, 0x9a5d, 0x9a5e, 0x9a5f, 0x9a60, 0x9a61,
- 0x9a62, 0x9a63, 0x9a64, 0x9a65, 0x9a66, 0x9a67, 0x9a68, 0x9a69,
- 0x9a6a, 0x9a6b, 0x9a72, 0x9a83, 0x9a89, 0x9a8d, 0x9a8e, 0x9a94,
- 0x9a95, 0x9a99, 0x9aa6, 0x9aa9, 0x9aaa, 0x9aab, 0x9aac, 0x9aad,
- 0x9aae, 0x9aaf, 0x9ab2, 0x9ab3, 0x9ab4, 0x9ab5, 0x9ab9, 0x9abb,
- 0x9abd, 0x9abe, 0x9abf, 0x9ac3, 0x9ac4, 0x9ac6, 0x9ac7, 0x9ac8,
- 0x9ac9, 0x9aca, 0x9acd, 0x9ace, 0x9acf, 0x9ad0, 0x9ad2, 0x9ad4,
- 0x9ad5, 0x9ad6, 0x9ad7, 0x9ad9, 0x9ada, 0x9adb, 0x9adc, 0x9add,
- 0x9ade, 0x9ae0, 0x9ae2, 0x9ae3, 0x9ae4, 0x9ae5, 0x9ae7, 0x9ae8,
- 0x9ae9, 0x9aea, 0x9aec, 0x9aee, 0x9af0, 0x9af1, 0x9af2, 0x9af3,
- 0x9af4, 0x9af5, 0x9af6, 0x9af7, 0x9af8, 0x9afa, 0x9afc, 0x9afd,
- 0x9afe, 0x9aff, 0x9b00, 0x9b01, 0x9b02, 0x9b04, 0x9b05, 0x9b06,
- 0x87c6, 0x8788, 0x8785, 0x87ad, 0x8797, 0x8783, 0x87ab, 0x87e5,
- 0x87ac, 0x87b5, 0x87b3, 0x87cb, 0x87d3, 0x87bd, 0x87d1, 0x87c0,
- 0x87ca, 0x87db, 0x87ea, 0x87e0, 0x87ee, 0x8816, 0x8813, 0x87fe,
- 0x880a, 0x881b, 0x8821, 0x8839, 0x883c, 0x7f36, 0x7f42, 0x7f44,
- 0x7f45, 0x8210, 0x7afa, 0x7afd, 0x7b08, 0x7b03, 0x7b04, 0x7b15,
- 0x7b0a, 0x7b2b, 0x7b0f, 0x7b47, 0x7b38, 0x7b2a, 0x7b19, 0x7b2e,
- 0x7b31, 0x7b20, 0x7b25, 0x7b24, 0x7b33, 0x7b3e, 0x7b1e, 0x7b58,
- 0x7b5a, 0x7b45, 0x7b75, 0x7b4c, 0x7b5d, 0x7b60, 0x7b6e, 0x7b7b,
- 0x7b62, 0x7b72, 0x7b71, 0x7b90, 0x7ba6, 0x7ba7, 0x7bb8, 0x7bac,
- 0x7b9d, 0x7ba8, 0x7b85, 0x7baa, 0x7b9c, 0x7ba2, 0x7bab, 0x7bb4,
- 0x7bd1, 0x7bc1, 0x7bcc, 0x7bdd, 0x7bda, 0x7be5, 0x7be6, 0x7bea,
- 0x7c0c, 0x7bfe, 0x7bfc, 0x7c0f, 0x7c16, 0x7c0b,
- /* 0xf4 */
- 0x9b07, 0x9b09, 0x9b0a, 0x9b0b, 0x9b0c, 0x9b0d, 0x9b0e, 0x9b10,
- 0x9b11, 0x9b12, 0x9b14, 0x9b15, 0x9b16, 0x9b17, 0x9b18, 0x9b19,
- 0x9b1a, 0x9b1b, 0x9b1c, 0x9b1d, 0x9b1e, 0x9b20, 0x9b21, 0x9b22,
- 0x9b24, 0x9b25, 0x9b26, 0x9b27, 0x9b28, 0x9b29, 0x9b2a, 0x9b2b,
- 0x9b2c, 0x9b2d, 0x9b2e, 0x9b30, 0x9b31, 0x9b33, 0x9b34, 0x9b35,
- 0x9b36, 0x9b37, 0x9b38, 0x9b39, 0x9b3a, 0x9b3d, 0x9b3e, 0x9b3f,
- 0x9b40, 0x9b46, 0x9b4a, 0x9b4b, 0x9b4c, 0x9b4e, 0x9b50, 0x9b52,
- 0x9b53, 0x9b55, 0x9b56, 0x9b57, 0x9b58, 0x9b59, 0x9b5a, 0x9b5b,
- 0x9b5c, 0x9b5d, 0x9b5e, 0x9b5f, 0x9b60, 0x9b61, 0x9b62, 0x9b63,
- 0x9b64, 0x9b65, 0x9b66, 0x9b67, 0x9b68, 0x9b69, 0x9b6a, 0x9b6b,
- 0x9b6c, 0x9b6d, 0x9b6e, 0x9b6f, 0x9b70, 0x9b71, 0x9b72, 0x9b73,
- 0x9b74, 0x9b75, 0x9b76, 0x9b77, 0x9b78, 0x9b79, 0x9b7a, 0x9b7b,
- 0x7c1f, 0x7c2a, 0x7c26, 0x7c38, 0x7c41, 0x7c40, 0x81fe, 0x8201,
- 0x8202, 0x8204, 0x81ec, 0x8844, 0x8221, 0x8222, 0x8223, 0x822d,
- 0x822f, 0x8228, 0x822b, 0x8238, 0x823b, 0x8233, 0x8234, 0x823e,
- 0x8244, 0x8249, 0x824b, 0x824f, 0x825a, 0x825f, 0x8268, 0x887e,
- 0x8885, 0x8888, 0x88d8, 0x88df, 0x895e, 0x7f9d, 0x7f9f, 0x7fa7,
- 0x7faf, 0x7fb0, 0x7fb2, 0x7c7c, 0x6549, 0x7c91, 0x7c9d, 0x7c9c,
- 0x7c9e, 0x7ca2, 0x7cb2, 0x7cbc, 0x7cbd, 0x7cc1, 0x7cc7, 0x7ccc,
- 0x7ccd, 0x7cc8, 0x7cc5, 0x7cd7, 0x7ce8, 0x826e, 0x66a8, 0x7fbf,
- 0x7fce, 0x7fd5, 0x7fe5, 0x7fe1, 0x7fe6, 0x7fe9, 0x7fee, 0x7ff3,
- 0x7cf8, 0x7d77, 0x7da6, 0x7dae, 0x7e47, 0x7e9b, 0x9eb8, 0x9eb4,
- 0x8d73, 0x8d84, 0x8d94, 0x8d91, 0x8db1, 0x8d67, 0x8d6d, 0x8c47,
- 0x8c49, 0x914a, 0x9150, 0x914e, 0x914f, 0x9164,
- /* 0xf5 */
- 0x9b7c, 0x9b7d, 0x9b7e, 0x9b7f, 0x9b80, 0x9b81, 0x9b82, 0x9b83,
- 0x9b84, 0x9b85, 0x9b86, 0x9b87, 0x9b88, 0x9b89, 0x9b8a, 0x9b8b,
- 0x9b8c, 0x9b8d, 0x9b8e, 0x9b8f, 0x9b90, 0x9b91, 0x9b92, 0x9b93,
- 0x9b94, 0x9b95, 0x9b96, 0x9b97, 0x9b98, 0x9b99, 0x9b9a, 0x9b9b,
- 0x9b9c, 0x9b9d, 0x9b9e, 0x9b9f, 0x9ba0, 0x9ba1, 0x9ba2, 0x9ba3,
- 0x9ba4, 0x9ba5, 0x9ba6, 0x9ba7, 0x9ba8, 0x9ba9, 0x9baa, 0x9bab,
- 0x9bac, 0x9bad, 0x9bae, 0x9baf, 0x9bb0, 0x9bb1, 0x9bb2, 0x9bb3,
- 0x9bb4, 0x9bb5, 0x9bb6, 0x9bb7, 0x9bb8, 0x9bb9, 0x9bba, 0x9bbb,
- 0x9bbc, 0x9bbd, 0x9bbe, 0x9bbf, 0x9bc0, 0x9bc1, 0x9bc2, 0x9bc3,
- 0x9bc4, 0x9bc5, 0x9bc6, 0x9bc7, 0x9bc8, 0x9bc9, 0x9bca, 0x9bcb,
- 0x9bcc, 0x9bcd, 0x9bce, 0x9bcf, 0x9bd0, 0x9bd1, 0x9bd2, 0x9bd3,
- 0x9bd4, 0x9bd5, 0x9bd6, 0x9bd7, 0x9bd8, 0x9bd9, 0x9bda, 0x9bdb,
- 0x9162, 0x9161, 0x9170, 0x9169, 0x916f, 0x917d, 0x917e, 0x9172,
- 0x9174, 0x9179, 0x918c, 0x9185, 0x9190, 0x918d, 0x9191, 0x91a2,
- 0x91a3, 0x91aa, 0x91ad, 0x91ae, 0x91af, 0x91b5, 0x91b4, 0x91ba,
- 0x8c55, 0x9e7e, 0x8db8, 0x8deb, 0x8e05, 0x8e59, 0x8e69, 0x8db5,
- 0x8dbf, 0x8dbc, 0x8dba, 0x8dc4, 0x8dd6, 0x8dd7, 0x8dda, 0x8dde,
- 0x8dce, 0x8dcf, 0x8ddb, 0x8dc6, 0x8dec, 0x8df7, 0x8df8, 0x8de3,
- 0x8df9, 0x8dfb, 0x8de4, 0x8e09, 0x8dfd, 0x8e14, 0x8e1d, 0x8e1f,
- 0x8e2c, 0x8e2e, 0x8e23, 0x8e2f, 0x8e3a, 0x8e40, 0x8e39, 0x8e35,
- 0x8e3d, 0x8e31, 0x8e49, 0x8e41, 0x8e42, 0x8e51, 0x8e52, 0x8e4a,
- 0x8e70, 0x8e76, 0x8e7c, 0x8e6f, 0x8e74, 0x8e85, 0x8e8f, 0x8e94,
- 0x8e90, 0x8e9c, 0x8e9e, 0x8c78, 0x8c82, 0x8c8a, 0x8c85, 0x8c98,
- 0x8c94, 0x659b, 0x89d6, 0x89de, 0x89da, 0x89dc,
- /* 0xf6 */
- 0x9bdc, 0x9bdd, 0x9bde, 0x9bdf, 0x9be0, 0x9be1, 0x9be2, 0x9be3,
- 0x9be4, 0x9be5, 0x9be6, 0x9be7, 0x9be8, 0x9be9, 0x9bea, 0x9beb,
- 0x9bec, 0x9bed, 0x9bee, 0x9bef, 0x9bf0, 0x9bf1, 0x9bf2, 0x9bf3,
- 0x9bf4, 0x9bf5, 0x9bf6, 0x9bf7, 0x9bf8, 0x9bf9, 0x9bfa, 0x9bfb,
- 0x9bfc, 0x9bfd, 0x9bfe, 0x9bff, 0x9c00, 0x9c01, 0x9c02, 0x9c03,
- 0x9c04, 0x9c05, 0x9c06, 0x9c07, 0x9c08, 0x9c09, 0x9c0a, 0x9c0b,
- 0x9c0c, 0x9c0d, 0x9c0e, 0x9c0f, 0x9c10, 0x9c11, 0x9c12, 0x9c13,
- 0x9c14, 0x9c15, 0x9c16, 0x9c17, 0x9c18, 0x9c19, 0x9c1a, 0x9c1b,
- 0x9c1c, 0x9c1d, 0x9c1e, 0x9c1f, 0x9c20, 0x9c21, 0x9c22, 0x9c23,
- 0x9c24, 0x9c25, 0x9c26, 0x9c27, 0x9c28, 0x9c29, 0x9c2a, 0x9c2b,
- 0x9c2c, 0x9c2d, 0x9c2e, 0x9c2f, 0x9c30, 0x9c31, 0x9c32, 0x9c33,
- 0x9c34, 0x9c35, 0x9c36, 0x9c37, 0x9c38, 0x9c39, 0x9c3a, 0x9c3b,
- 0x89e5, 0x89eb, 0x89ef, 0x8a3e, 0x8b26, 0x9753, 0x96e9, 0x96f3,
- 0x96ef, 0x9706, 0x9701, 0x9708, 0x970f, 0x970e, 0x972a, 0x972d,
- 0x9730, 0x973e, 0x9f80, 0x9f83, 0x9f85, 0x9f86, 0x9f87, 0x9f88,
- 0x9f89, 0x9f8a, 0x9f8c, 0x9efe, 0x9f0b, 0x9f0d, 0x96b9, 0x96bc,
- 0x96bd, 0x96ce, 0x96d2, 0x77bf, 0x96e0, 0x928e, 0x92ae, 0x92c8,
- 0x933e, 0x936a, 0x93ca, 0x938f, 0x943e, 0x946b, 0x9c7f, 0x9c82,
- 0x9c85, 0x9c86, 0x9c87, 0x9c88, 0x7a23, 0x9c8b, 0x9c8e, 0x9c90,
- 0x9c91, 0x9c92, 0x9c94, 0x9c95, 0x9c9a, 0x9c9b, 0x9c9e, 0x9c9f,
- 0x9ca0, 0x9ca1, 0x9ca2, 0x9ca3, 0x9ca5, 0x9ca6, 0x9ca7, 0x9ca8,
- 0x9ca9, 0x9cab, 0x9cad, 0x9cae, 0x9cb0, 0x9cb1, 0x9cb2, 0x9cb3,
- 0x9cb4, 0x9cb5, 0x9cb6, 0x9cb7, 0x9cba, 0x9cbb, 0x9cbc, 0x9cbd,
- 0x9cc4, 0x9cc5, 0x9cc6, 0x9cc7, 0x9cca, 0x9ccb,
- /* 0xf7 */
- 0x9c3c, 0x9c3d, 0x9c3e, 0x9c3f, 0x9c40, 0x9c41, 0x9c42, 0x9c43,
- 0x9c44, 0x9c45, 0x9c46, 0x9c47, 0x9c48, 0x9c49, 0x9c4a, 0x9c4b,
- 0x9c4c, 0x9c4d, 0x9c4e, 0x9c4f, 0x9c50, 0x9c51, 0x9c52, 0x9c53,
- 0x9c54, 0x9c55, 0x9c56, 0x9c57, 0x9c58, 0x9c59, 0x9c5a, 0x9c5b,
- 0x9c5c, 0x9c5d, 0x9c5e, 0x9c5f, 0x9c60, 0x9c61, 0x9c62, 0x9c63,
- 0x9c64, 0x9c65, 0x9c66, 0x9c67, 0x9c68, 0x9c69, 0x9c6a, 0x9c6b,
- 0x9c6c, 0x9c6d, 0x9c6e, 0x9c6f, 0x9c70, 0x9c71, 0x9c72, 0x9c73,
- 0x9c74, 0x9c75, 0x9c76, 0x9c77, 0x9c78, 0x9c79, 0x9c7a, 0x9c7b,
- 0x9c7d, 0x9c7e, 0x9c80, 0x9c83, 0x9c84, 0x9c89, 0x9c8a, 0x9c8c,
- 0x9c8f, 0x9c93, 0x9c96, 0x9c97, 0x9c98, 0x9c99, 0x9c9d, 0x9caa,
- 0x9cac, 0x9caf, 0x9cb9, 0x9cbe, 0x9cbf, 0x9cc0, 0x9cc1, 0x9cc2,
- 0x9cc8, 0x9cc9, 0x9cd1, 0x9cd2, 0x9cda, 0x9cdb, 0x9ce0, 0x9ce1,
- 0x9ccc, 0x9ccd, 0x9cce, 0x9ccf, 0x9cd0, 0x9cd3, 0x9cd4, 0x9cd5,
- 0x9cd7, 0x9cd8, 0x9cd9, 0x9cdc, 0x9cdd, 0x9cdf, 0x9ce2, 0x977c,
- 0x9785, 0x9791, 0x9792, 0x9794, 0x97af, 0x97ab, 0x97a3, 0x97b2,
- 0x97b4, 0x9ab1, 0x9ab0, 0x9ab7, 0x9e58, 0x9ab6, 0x9aba, 0x9abc,
- 0x9ac1, 0x9ac0, 0x9ac5, 0x9ac2, 0x9acb, 0x9acc, 0x9ad1, 0x9b45,
- 0x9b43, 0x9b47, 0x9b49, 0x9b48, 0x9b4d, 0x9b51, 0x98e8, 0x990d,
- 0x992e, 0x9955, 0x9954, 0x9adf, 0x9ae1, 0x9ae6, 0x9aef, 0x9aeb,
- 0x9afb, 0x9aed, 0x9af9, 0x9b08, 0x9b0f, 0x9b13, 0x9b1f, 0x9b23,
- 0x9ebd, 0x9ebe, 0x7e3b, 0x9e82, 0x9e87, 0x9e88, 0x9e8b, 0x9e92,
- 0x93d6, 0x9e9d, 0x9e9f, 0x9edb, 0x9edc, 0x9edd, 0x9ee0, 0x9edf,
- 0x9ee2, 0x9ee9, 0x9ee7, 0x9ee5, 0x9eea, 0x9eef, 0x9f22, 0x9f2c,
- 0x9f2f, 0x9f39, 0x9f37, 0x9f3d, 0x9f3e, 0x9f44,
- /* 0xf8 */
- 0x9ce3, 0x9ce4, 0x9ce5, 0x9ce6, 0x9ce7, 0x9ce8, 0x9ce9, 0x9cea,
- 0x9ceb, 0x9cec, 0x9ced, 0x9cee, 0x9cef, 0x9cf0, 0x9cf1, 0x9cf2,
- 0x9cf3, 0x9cf4, 0x9cf5, 0x9cf6, 0x9cf7, 0x9cf8, 0x9cf9, 0x9cfa,
- 0x9cfb, 0x9cfc, 0x9cfd, 0x9cfe, 0x9cff, 0x9d00, 0x9d01, 0x9d02,
- 0x9d03, 0x9d04, 0x9d05, 0x9d06, 0x9d07, 0x9d08, 0x9d09, 0x9d0a,
- 0x9d0b, 0x9d0c, 0x9d0d, 0x9d0e, 0x9d0f, 0x9d10, 0x9d11, 0x9d12,
- 0x9d13, 0x9d14, 0x9d15, 0x9d16, 0x9d17, 0x9d18, 0x9d19, 0x9d1a,
- 0x9d1b, 0x9d1c, 0x9d1d, 0x9d1e, 0x9d1f, 0x9d20, 0x9d21, 0x9d22,
- 0x9d23, 0x9d24, 0x9d25, 0x9d26, 0x9d27, 0x9d28, 0x9d29, 0x9d2a,
- 0x9d2b, 0x9d2c, 0x9d2d, 0x9d2e, 0x9d2f, 0x9d30, 0x9d31, 0x9d32,
- 0x9d33, 0x9d34, 0x9d35, 0x9d36, 0x9d37, 0x9d38, 0x9d39, 0x9d3a,
- 0x9d3b, 0x9d3c, 0x9d3d, 0x9d3e, 0x9d3f, 0x9d40, 0x9d41, 0x9d42,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- /* 0xf9 */
- 0x9d43, 0x9d44, 0x9d45, 0x9d46, 0x9d47, 0x9d48, 0x9d49, 0x9d4a,
- 0x9d4b, 0x9d4c, 0x9d4d, 0x9d4e, 0x9d4f, 0x9d50, 0x9d51, 0x9d52,
- 0x9d53, 0x9d54, 0x9d55, 0x9d56, 0x9d57, 0x9d58, 0x9d59, 0x9d5a,
- 0x9d5b, 0x9d5c, 0x9d5d, 0x9d5e, 0x9d5f, 0x9d60, 0x9d61, 0x9d62,
- 0x9d63, 0x9d64, 0x9d65, 0x9d66, 0x9d67, 0x9d68, 0x9d69, 0x9d6a,
- 0x9d6b, 0x9d6c, 0x9d6d, 0x9d6e, 0x9d6f, 0x9d70, 0x9d71, 0x9d72,
- 0x9d73, 0x9d74, 0x9d75, 0x9d76, 0x9d77, 0x9d78, 0x9d79, 0x9d7a,
- 0x9d7b, 0x9d7c, 0x9d7d, 0x9d7e, 0x9d7f, 0x9d80, 0x9d81, 0x9d82,
- 0x9d83, 0x9d84, 0x9d85, 0x9d86, 0x9d87, 0x9d88, 0x9d89, 0x9d8a,
- 0x9d8b, 0x9d8c, 0x9d8d, 0x9d8e, 0x9d8f, 0x9d90, 0x9d91, 0x9d92,
- 0x9d93, 0x9d94, 0x9d95, 0x9d96, 0x9d97, 0x9d98, 0x9d99, 0x9d9a,
- 0x9d9b, 0x9d9c, 0x9d9d, 0x9d9e, 0x9d9f, 0x9da0, 0x9da1, 0x9da2,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- /* 0xfa */
- 0x9da3, 0x9da4, 0x9da5, 0x9da6, 0x9da7, 0x9da8, 0x9da9, 0x9daa,
- 0x9dab, 0x9dac, 0x9dad, 0x9dae, 0x9daf, 0x9db0, 0x9db1, 0x9db2,
- 0x9db3, 0x9db4, 0x9db5, 0x9db6, 0x9db7, 0x9db8, 0x9db9, 0x9dba,
- 0x9dbb, 0x9dbc, 0x9dbd, 0x9dbe, 0x9dbf, 0x9dc0, 0x9dc1, 0x9dc2,
- 0x9dc3, 0x9dc4, 0x9dc5, 0x9dc6, 0x9dc7, 0x9dc8, 0x9dc9, 0x9dca,
- 0x9dcb, 0x9dcc, 0x9dcd, 0x9dce, 0x9dcf, 0x9dd0, 0x9dd1, 0x9dd2,
- 0x9dd3, 0x9dd4, 0x9dd5, 0x9dd6, 0x9dd7, 0x9dd8, 0x9dd9, 0x9dda,
- 0x9ddb, 0x9ddc, 0x9ddd, 0x9dde, 0x9ddf, 0x9de0, 0x9de1, 0x9de2,
- 0x9de3, 0x9de4, 0x9de5, 0x9de6, 0x9de7, 0x9de8, 0x9de9, 0x9dea,
- 0x9deb, 0x9dec, 0x9ded, 0x9dee, 0x9def, 0x9df0, 0x9df1, 0x9df2,
- 0x9df3, 0x9df4, 0x9df5, 0x9df6, 0x9df7, 0x9df8, 0x9df9, 0x9dfa,
- 0x9dfb, 0x9dfc, 0x9dfd, 0x9dfe, 0x9dff, 0x9e00, 0x9e01, 0x9e02,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- /* 0xfb */
- 0x9e03, 0x9e04, 0x9e05, 0x9e06, 0x9e07, 0x9e08, 0x9e09, 0x9e0a,
- 0x9e0b, 0x9e0c, 0x9e0d, 0x9e0e, 0x9e0f, 0x9e10, 0x9e11, 0x9e12,
- 0x9e13, 0x9e14, 0x9e15, 0x9e16, 0x9e17, 0x9e18, 0x9e19, 0x9e1a,
- 0x9e1b, 0x9e1c, 0x9e1d, 0x9e1e, 0x9e24, 0x9e27, 0x9e2e, 0x9e30,
- 0x9e34, 0x9e3b, 0x9e3c, 0x9e40, 0x9e4d, 0x9e50, 0x9e52, 0x9e53,
- 0x9e54, 0x9e56, 0x9e59, 0x9e5d, 0x9e5f, 0x9e60, 0x9e61, 0x9e62,
- 0x9e65, 0x9e6e, 0x9e6f, 0x9e72, 0x9e74, 0x9e75, 0x9e76, 0x9e77,
- 0x9e78, 0x9e79, 0x9e7a, 0x9e7b, 0x9e7c, 0x9e7d, 0x9e80, 0x9e81,
- 0x9e83, 0x9e84, 0x9e85, 0x9e86, 0x9e89, 0x9e8a, 0x9e8c, 0x9e8d,
- 0x9e8e, 0x9e8f, 0x9e90, 0x9e91, 0x9e94, 0x9e95, 0x9e96, 0x9e97,
- 0x9e98, 0x9e99, 0x9e9a, 0x9e9b, 0x9e9c, 0x9e9e, 0x9ea0, 0x9ea1,
- 0x9ea2, 0x9ea3, 0x9ea4, 0x9ea5, 0x9ea7, 0x9ea8, 0x9ea9, 0x9eaa,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- /* 0xfc */
- 0x9eab, 0x9eac, 0x9ead, 0x9eae, 0x9eaf, 0x9eb0, 0x9eb1, 0x9eb2,
- 0x9eb3, 0x9eb5, 0x9eb6, 0x9eb7, 0x9eb9, 0x9eba, 0x9ebc, 0x9ebf,
- 0x9ec0, 0x9ec1, 0x9ec2, 0x9ec3, 0x9ec5, 0x9ec6, 0x9ec7, 0x9ec8,
- 0x9eca, 0x9ecb, 0x9ecc, 0x9ed0, 0x9ed2, 0x9ed3, 0x9ed5, 0x9ed6,
- 0x9ed7, 0x9ed9, 0x9eda, 0x9ede, 0x9ee1, 0x9ee3, 0x9ee4, 0x9ee6,
- 0x9ee8, 0x9eeb, 0x9eec, 0x9eed, 0x9eee, 0x9ef0, 0x9ef1, 0x9ef2,
- 0x9ef3, 0x9ef4, 0x9ef5, 0x9ef6, 0x9ef7, 0x9ef8, 0x9efa, 0x9efd,
- 0x9eff, 0x9f00, 0x9f01, 0x9f02, 0x9f03, 0x9f04, 0x9f05, 0x9f06,
- 0x9f07, 0x9f08, 0x9f09, 0x9f0a, 0x9f0c, 0x9f0f, 0x9f11, 0x9f12,
- 0x9f14, 0x9f15, 0x9f16, 0x9f18, 0x9f1a, 0x9f1b, 0x9f1c, 0x9f1d,
- 0x9f1e, 0x9f1f, 0x9f21, 0x9f23, 0x9f24, 0x9f25, 0x9f26, 0x9f27,
- 0x9f28, 0x9f29, 0x9f2a, 0x9f2b, 0x9f2d, 0x9f2e, 0x9f30, 0x9f31,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- /* 0xfd */
- 0x9f32, 0x9f33, 0x9f34, 0x9f35, 0x9f36, 0x9f38, 0x9f3a, 0x9f3c,
- 0x9f3f, 0x9f40, 0x9f41, 0x9f42, 0x9f43, 0x9f45, 0x9f46, 0x9f47,
- 0x9f48, 0x9f49, 0x9f4a, 0x9f4b, 0x9f4c, 0x9f4d, 0x9f4e, 0x9f4f,
- 0x9f52, 0x9f53, 0x9f54, 0x9f55, 0x9f56, 0x9f57, 0x9f58, 0x9f59,
- 0x9f5a, 0x9f5b, 0x9f5c, 0x9f5d, 0x9f5e, 0x9f5f, 0x9f60, 0x9f61,
- 0x9f62, 0x9f63, 0x9f64, 0x9f65, 0x9f66, 0x9f67, 0x9f68, 0x9f69,
- 0x9f6a, 0x9f6b, 0x9f6c, 0x9f6d, 0x9f6e, 0x9f6f, 0x9f70, 0x9f71,
- 0x9f72, 0x9f73, 0x9f74, 0x9f75, 0x9f76, 0x9f77, 0x9f78, 0x9f79,
- 0x9f7a, 0x9f7b, 0x9f7c, 0x9f7d, 0x9f7e, 0x9f81, 0x9f82, 0x9f8d,
- 0x9f8e, 0x9f8f, 0x9f90, 0x9f91, 0x9f92, 0x9f93, 0x9f94, 0x9f95,
- 0x9f96, 0x9f97, 0x9f98, 0x9f9c, 0x9f9d, 0x9f9e, 0x9fa1, 0x9fa2,
- 0x9fa3, 0x9fa4, 0x9fa5, 0xf92c, 0xf979, 0xf995, 0xf9e7, 0xf9f1,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- /* 0xfe */
- 0xfa0c, 0xfa0d, 0xfa0e, 0xfa0f, 0xfa11, 0xfa13, 0xfa14, 0xfa18,
- 0xfa1f, 0xfa20, 0xfa21, 0xfa23, 0xfa24, 0xfa27, 0xfa28, 0xfa29,
-};
-
-static int
-gbk_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n)
-{
- unsigned char c1 = s[0];
- if ((c1 >= 0x81 && c1 <= 0xfe)) {
- if (n >= 2) {
- unsigned char c2 = s[1];
- if ((c2 >= 0x40 && c2 < 0x7f) || (c2 >= 0x80 && c2 < 0xff)) {
- unsigned int i = 190 * (c1 - 0x81) + (c2 - (c2 >= 0x80 ? 0x41 : 0x40));
- unsigned short wc = 0xfffd;
- {
- if (i < 23766)
- wc = gbk_2uni_page81[i];
- }
- if (wc != 0xfffd) {
- *pwc = (ucs4_t) wc;
- return 2;
- }
- }
- return RET_ILSEQ;
- }
- return RET_TOOFEW(0);
- }
- return RET_ILSEQ;
-}
-
-static const unsigned short gbk_page00[208] = {
- 0x0000, 0x0000, 0x0000, 0x0000, 0xa1e8, 0x0000, 0x0000, 0xa1ec, /*0xa0-0xa7*/
- 0xa1a7, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0xa8-0xaf*/
- 0xa1e3, 0xa1c0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xa1a4, /*0xb0-0xb7*/
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0xb8-0xbf*/
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0xc0-0xc7*/
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0xc8-0xcf*/
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xa1c1, /*0xd0-0xd7*/
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0xd8-0xdf*/
- 0xa8a4, 0xa8a2, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0xe0-0xe7*/
- 0xa8a8, 0xa8a6, 0xa8ba, 0x0000, 0xa8ac, 0xa8aa, 0x0000, 0x0000, /*0xe8-0xef*/
- 0x0000, 0x0000, 0xa8b0, 0xa8ae, 0x0000, 0x0000, 0x0000, 0xa1c2, /*0xf0-0xf7*/
- 0x0000, 0xa8b4, 0xa8b2, 0x0000, 0xa8b9, 0x0000, 0x0000, 0x0000, /*0xf8-0xff*/
- /* 0x0100 */
- 0x0000, 0xa8a1, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0x00-0x07*/
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0x08-0x0f*/
- 0x0000, 0x0000, 0x0000, 0xa8a5, 0x0000, 0x0000, 0x0000, 0x0000, /*0x10-0x17*/
- 0x0000, 0x0000, 0x0000, 0xa8a7, 0x0000, 0x0000, 0x0000, 0x0000, /*0x18-0x1f*/
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0x20-0x27*/
- 0x0000, 0x0000, 0x0000, 0xa8a9, 0x0000, 0x0000, 0x0000, 0x0000, /*0x28-0x2f*/
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0x30-0x37*/
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0x38-0x3f*/
- 0x0000, 0x0000, 0x0000, 0x0000, 0xa8bd, 0x0000, 0x0000, 0x0000, /*0x40-0x47*/
- 0xa8be, 0x0000, 0x0000, 0x0000, 0x0000, 0xa8ad, 0x0000, 0x0000, /*0x48-0x4f*/
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0x50-0x57*/
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0x58-0x5f*/
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0x60-0x67*/
- 0x0000, 0x0000, 0x0000, 0xa8b1, 0x0000, 0x0000, 0x0000, 0x0000, /*0x68-0x6f*/
-};
-static const unsigned short gbk_page01[24] = {
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xa8a3, 0x0000, /*0xc8-0xcf*/
- 0xa8ab, 0x0000, 0xa8af, 0x0000, 0xa8b3, 0x0000, 0xa8b5, 0x0000, /*0xd0-0xd7*/
- 0xa8b6, 0x0000, 0xa8b7, 0x0000, 0xa8b8, 0x0000, 0x0000, 0x0000, /*0xd8-0xdf*/
-};
-static const unsigned short gbk_page02a[24] = {
- 0x0000, 0xa8bb, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0x50-0x57*/
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0x58-0x5f*/
- 0x0000, 0xa8c0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0x60-0x67*/
-};
-static const unsigned short gbk_page02b[32] = {
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xa1a6, /*0xc0-0xc7*/
- 0x0000, 0xa1a5, 0xa840, 0xa841, 0x0000, 0x0000, 0x0000, 0x0000, /*0xc8-0xcf*/
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0xd0-0xd7*/
- 0x0000, 0xa842, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0xd8-0xdf*/
-};
-static const unsigned short gbk_page03[64] = {
- 0x0000, 0xa6a1, 0xa6a2, 0xa6a3, 0xa6a4, 0xa6a5, 0xa6a6, 0xa6a7, /*0x90-0x97*/
- 0xa6a8, 0xa6a9, 0xa6aa, 0xa6ab, 0xa6ac, 0xa6ad, 0xa6ae, 0xa6af, /*0x98-0x9f*/
- 0xa6b0, 0xa6b1, 0x0000, 0xa6b2, 0xa6b3, 0xa6b4, 0xa6b5, 0xa6b6, /*0xa0-0xa7*/
- 0xa6b7, 0xa6b8, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0xa8-0xaf*/
- 0x0000, 0xa6c1, 0xa6c2, 0xa6c3, 0xa6c4, 0xa6c5, 0xa6c6, 0xa6c7, /*0xb0-0xb7*/
- 0xa6c8, 0xa6c9, 0xa6ca, 0xa6cb, 0xa6cc, 0xa6cd, 0xa6ce, 0xa6cf, /*0xb8-0xbf*/
- 0xa6d0, 0xa6d1, 0x0000, 0xa6d2, 0xa6d3, 0xa6d4, 0xa6d5, 0xa6d6, /*0xc0-0xc7*/
- 0xa6d7, 0xa6d8, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0xc8-0xcf*/
-};
-static const unsigned short gbk_page04[88] = {
- 0x0000, 0xa7a7, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0x00-0x07*/
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0x08-0x0f*/
- 0xa7a1, 0xa7a2, 0xa7a3, 0xa7a4, 0xa7a5, 0xa7a6, 0xa7a8, 0xa7a9, /*0x10-0x17*/
- 0xa7aa, 0xa7ab, 0xa7ac, 0xa7ad, 0xa7ae, 0xa7af, 0xa7b0, 0xa7b1, /*0x18-0x1f*/
- 0xa7b2, 0xa7b3, 0xa7b4, 0xa7b5, 0xa7b6, 0xa7b7, 0xa7b8, 0xa7b9, /*0x20-0x27*/
- 0xa7ba, 0xa7bb, 0xa7bc, 0xa7bd, 0xa7be, 0xa7bf, 0xa7c0, 0xa7c1, /*0x28-0x2f*/
- 0xa7d1, 0xa7d2, 0xa7d3, 0xa7d4, 0xa7d5, 0xa7d6, 0xa7d8, 0xa7d9, /*0x30-0x37*/
- 0xa7da, 0xa7db, 0xa7dc, 0xa7dd, 0xa7de, 0xa7df, 0xa7e0, 0xa7e1, /*0x38-0x3f*/
- 0xa7e2, 0xa7e3, 0xa7e4, 0xa7e5, 0xa7e6, 0xa7e7, 0xa7e8, 0xa7e9, /*0x40-0x47*/
- 0xa7ea, 0xa7eb, 0xa7ec, 0xa7ed, 0xa7ee, 0xa7ef, 0xa7f0, 0xa7f1, /*0x48-0x4f*/
- 0x0000, 0xa7d7, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0x50-0x57*/
-};
-static const unsigned short gbk_page20[48] = {
- 0xa95c, 0x0000, 0x0000, 0xa843, 0xa1aa, 0xa844, 0xa1ac, 0x0000, /*0x10-0x17*/
- 0xa1ae, 0xa1af, 0x0000, 0x0000, 0xa1b0, 0xa1b1, 0x0000, 0x0000, /*0x18-0x1f*/
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xa845, 0xa1ad, 0x0000, /*0x20-0x27*/
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0x28-0x2f*/
- 0xa1eb, 0x0000, 0xa1e4, 0xa1e5, 0x0000, 0xa846, 0x0000, 0x0000, /*0x30-0x37*/
- 0x0000, 0x0000, 0x0000, 0xa1f9, 0x0000, 0x0000, 0x0000, 0x0000, /*0x38-0x3f*/
-};
-static const unsigned short gbk_page21[160] = {
- 0x0000, 0x0000, 0x0000, 0xa1e6, 0x0000, 0xa847, 0x0000, 0x0000, /*0x00-0x07*/
- 0x0000, 0xa848, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0x08-0x0f*/
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xa1ed, 0x0000, /*0x10-0x17*/
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0x18-0x1f*/
- 0x0000, 0xa959, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0x20-0x27*/
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0x28-0x2f*/
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0x30-0x37*/
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0x38-0x3f*/
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0x40-0x47*/
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0x48-0x4f*/
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0x50-0x57*/
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0x58-0x5f*/
- 0xa2f1, 0xa2f2, 0xa2f3, 0xa2f4, 0xa2f5, 0xa2f6, 0xa2f7, 0xa2f8, /*0x60-0x67*/
- 0xa2f9, 0xa2fa, 0xa2fb, 0xa2fc, 0x0000, 0x0000, 0x0000, 0x0000, /*0x68-0x6f*/
- 0xa2a1, 0xa2a2, 0xa2a3, 0xa2a4, 0xa2a5, 0xa2a6, 0xa2a7, 0xa2a8, /*0x70-0x77*/
- 0xa2a9, 0xa2aa, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0x78-0x7f*/
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0x80-0x87*/
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0x88-0x8f*/
- 0xa1fb, 0xa1fc, 0xa1fa, 0xa1fd, 0x0000, 0x0000, 0xa849, 0xa84a, /*0x90-0x97*/
- 0xa84b, 0xa84c, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0x98-0x9f*/
-};
-static const unsigned short gbk_page22[184] = {
- 0xa1ca, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xa1c7, /*0x08-0x0f*/
- 0x0000, 0xa1c6, 0x0000, 0x0000, 0x0000, 0xa84d, 0x0000, 0x0000, /*0x10-0x17*/
- 0x0000, 0x0000, 0xa1cc, 0x0000, 0x0000, 0xa1d8, 0xa1de, 0xa84e, /*0x18-0x1f*/
- 0xa1cf, 0x0000, 0x0000, 0xa84f, 0x0000, 0xa1ce, 0x0000, 0xa1c4, /*0x20-0x27*/
- 0xa1c5, 0xa1c9, 0xa1c8, 0xa1d2, 0x0000, 0x0000, 0xa1d3, 0x0000, /*0x28-0x2f*/
- 0x0000, 0x0000, 0x0000, 0x0000, 0xa1e0, 0xa1df, 0xa1c3, 0xa1cb, /*0x30-0x37*/
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xa1d7, 0x0000, 0x0000, /*0x38-0x3f*/
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0x40-0x47*/
- 0xa1d6, 0x0000, 0x0000, 0x0000, 0xa1d5, 0x0000, 0x0000, 0x0000, /*0x48-0x4f*/
- 0x0000, 0x0000, 0xa850, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0x50-0x57*/
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0x58-0x5f*/
- 0xa1d9, 0xa1d4, 0x0000, 0x0000, 0xa1dc, 0xa1dd, 0xa851, 0xa852, /*0x60-0x67*/
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xa1da, 0xa1db, /*0x68-0x6f*/
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0x70-0x77*/
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0x78-0x7f*/
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0x80-0x87*/
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0x88-0x8f*/
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xa892, 0x0000, 0x0000, /*0x90-0x97*/
- 0x0000, 0xa1d1, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0x98-0x9f*/
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xa1cd, 0x0000, 0x0000, /*0xa0-0xa7*/
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0xa8-0xaf*/
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0xb0-0xb7*/
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xa853, /*0xb8-0xbf*/
-};
-static const unsigned short gbk_page24[64] = {
- 0xa2d9, 0xa2da, 0xa2db, 0xa2dc, 0xa2dd, 0xa2de, 0xa2df, 0xa2e0, /*0x60-0x67*/
- 0xa2e1, 0xa2e2, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0x68-0x6f*/
- 0x0000, 0x0000, 0x0000, 0x0000, 0xa2c5, 0xa2c6, 0xa2c7, 0xa2c8, /*0x70-0x77*/
- 0xa2c9, 0xa2ca, 0xa2cb, 0xa2cc, 0xa2cd, 0xa2ce, 0xa2cf, 0xa2d0, /*0x78-0x7f*/
- 0xa2d1, 0xa2d2, 0xa2d3, 0xa2d4, 0xa2d5, 0xa2d6, 0xa2d7, 0xa2d8, /*0x80-0x87*/
- 0xa2b1, 0xa2b2, 0xa2b3, 0xa2b4, 0xa2b5, 0xa2b6, 0xa2b7, 0xa2b8, /*0x88-0x8f*/
- 0xa2b9, 0xa2ba, 0xa2bb, 0xa2bc, 0xa2bd, 0xa2be, 0xa2bf, 0xa2c0, /*0x90-0x97*/
- 0xa2c1, 0xa2c2, 0xa2c3, 0xa2c4, 0x0000, 0x0000, 0x0000, 0x0000, /*0x98-0x9f*/
-};
-static const unsigned short gbk_page25[232] = {
- 0xa9a4, 0xa9a5, 0xa9a6, 0xa9a7, 0xa9a8, 0xa9a9, 0xa9aa, 0xa9ab, /*0x00-0x07*/
- 0xa9ac, 0xa9ad, 0xa9ae, 0xa9af, 0xa9b0, 0xa9b1, 0xa9b2, 0xa9b3, /*0x08-0x0f*/
- 0xa9b4, 0xa9b5, 0xa9b6, 0xa9b7, 0xa9b8, 0xa9b9, 0xa9ba, 0xa9bb, /*0x10-0x17*/
- 0xa9bc, 0xa9bd, 0xa9be, 0xa9bf, 0xa9c0, 0xa9c1, 0xa9c2, 0xa9c3, /*0x18-0x1f*/
- 0xa9c4, 0xa9c5, 0xa9c6, 0xa9c7, 0xa9c8, 0xa9c9, 0xa9ca, 0xa9cb, /*0x20-0x27*/
- 0xa9cc, 0xa9cd, 0xa9ce, 0xa9cf, 0xa9d0, 0xa9d1, 0xa9d2, 0xa9d3, /*0x28-0x2f*/
- 0xa9d4, 0xa9d5, 0xa9d6, 0xa9d7, 0xa9d8, 0xa9d9, 0xa9da, 0xa9db, /*0x30-0x37*/
- 0xa9dc, 0xa9dd, 0xa9de, 0xa9df, 0xa9e0, 0xa9e1, 0xa9e2, 0xa9e3, /*0x38-0x3f*/
- 0xa9e4, 0xa9e5, 0xa9e6, 0xa9e7, 0xa9e8, 0xa9e9, 0xa9ea, 0xa9eb, /*0x40-0x47*/
- 0xa9ec, 0xa9ed, 0xa9ee, 0xa9ef, 0x0000, 0x0000, 0x0000, 0x0000, /*0x48-0x4f*/
- 0xa854, 0xa855, 0xa856, 0xa857, 0xa858, 0xa859, 0xa85a, 0xa85b, /*0x50-0x57*/
- 0xa85c, 0xa85d, 0xa85e, 0xa85f, 0xa860, 0xa861, 0xa862, 0xa863, /*0x58-0x5f*/
- 0xa864, 0xa865, 0xa866, 0xa867, 0xa868, 0xa869, 0xa86a, 0xa86b, /*0x60-0x67*/
- 0xa86c, 0xa86d, 0xa86e, 0xa86f, 0xa870, 0xa871, 0xa872, 0xa873, /*0x68-0x6f*/
- 0xa874, 0xa875, 0xa876, 0xa877, 0x0000, 0x0000, 0x0000, 0x0000, /*0x70-0x77*/
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0x78-0x7f*/
- 0x0000, 0xa878, 0xa879, 0xa87a, 0xa87b, 0xa87c, 0xa87d, 0xa87e, /*0x80-0x87*/
- 0xa880, 0xa881, 0xa882, 0xa883, 0xa884, 0xa885, 0xa886, 0xa887, /*0x88-0x8f*/
- 0x0000, 0x0000, 0x0000, 0xa888, 0xa889, 0xa88a, 0x0000, 0x0000, /*0x90-0x97*/
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0x98-0x9f*/
- 0xa1f6, 0xa1f5, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0xa0-0xa7*/
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0xa8-0xaf*/
- 0x0000, 0x0000, 0xa1f8, 0xa1f7, 0x0000, 0x0000, 0x0000, 0x0000, /*0xb0-0xb7*/
- 0x0000, 0x0000, 0x0000, 0x0000, 0xa88b, 0xa88c, 0x0000, 0x0000, /*0xb8-0xbf*/
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xa1f4, 0xa1f3, /*0xc0-0xc7*/
- 0x0000, 0x0000, 0x0000, 0xa1f0, 0x0000, 0x0000, 0xa1f2, 0xa1f1, /*0xc8-0xcf*/
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0xd0-0xd7*/
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0xd8-0xdf*/
- 0x0000, 0x0000, 0xa88d, 0xa88e, 0xa88f, 0xa890, 0x0000, 0x0000, /*0xe0-0xe7*/
-};
-static const unsigned short gbk_page26[72] = {
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xa1ef, 0xa1ee, 0x0000, /*0x00-0x07*/
- 0x0000, 0xa891, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0x08-0x0f*/
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0x10-0x17*/
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0x18-0x1f*/
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0x20-0x27*/
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0x28-0x2f*/
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0x30-0x37*/
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0x38-0x3f*/
- 0xa1e2, 0x0000, 0xa1e1, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0x40-0x47*/
-};
-static const unsigned short gbk_page30[304] = {
- 0xa1a1, 0xa1a2, 0xa1a3, 0xa1a8, 0x0000, 0xa1a9, 0xa965, 0xa996, /*0x00-0x07*/
- 0xa1b4, 0xa1b5, 0xa1b6, 0xa1b7, 0xa1b8, 0xa1b9, 0xa1ba, 0xa1bb, /*0x08-0x0f*/
- 0xa1be, 0xa1bf, 0xa893, 0xa1fe, 0xa1b2, 0xa1b3, 0xa1bc, 0xa1bd, /*0x10-0x17*/
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xa894, 0xa895, 0x0000, /*0x18-0x1f*/
- 0x0000, 0xa940, 0xa941, 0xa942, 0xa943, 0xa944, 0xa945, 0xa946, /*0x20-0x27*/
- 0xa947, 0xa948, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0x28-0x2f*/
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0x30-0x37*/
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0x38-0x3f*/
- 0x0000, 0xa4a1, 0xa4a2, 0xa4a3, 0xa4a4, 0xa4a5, 0xa4a6, 0xa4a7, /*0x40-0x47*/
- 0xa4a8, 0xa4a9, 0xa4aa, 0xa4ab, 0xa4ac, 0xa4ad, 0xa4ae, 0xa4af, /*0x48-0x4f*/
- 0xa4b0, 0xa4b1, 0xa4b2, 0xa4b3, 0xa4b4, 0xa4b5, 0xa4b6, 0xa4b7, /*0x50-0x57*/
- 0xa4b8, 0xa4b9, 0xa4ba, 0xa4bb, 0xa4bc, 0xa4bd, 0xa4be, 0xa4bf, /*0x58-0x5f*/
- 0xa4c0, 0xa4c1, 0xa4c2, 0xa4c3, 0xa4c4, 0xa4c5, 0xa4c6, 0xa4c7, /*0x60-0x67*/
- 0xa4c8, 0xa4c9, 0xa4ca, 0xa4cb, 0xa4cc, 0xa4cd, 0xa4ce, 0xa4cf, /*0x68-0x6f*/
- 0xa4d0, 0xa4d1, 0xa4d2, 0xa4d3, 0xa4d4, 0xa4d5, 0xa4d6, 0xa4d7, /*0x70-0x77*/
- 0xa4d8, 0xa4d9, 0xa4da, 0xa4db, 0xa4dc, 0xa4dd, 0xa4de, 0xa4df, /*0x78-0x7f*/
- 0xa4e0, 0xa4e1, 0xa4e2, 0xa4e3, 0xa4e4, 0xa4e5, 0xa4e6, 0xa4e7, /*0x80-0x87*/
- 0xa4e8, 0xa4e9, 0xa4ea, 0xa4eb, 0xa4ec, 0xa4ed, 0xa4ee, 0xa4ef, /*0x88-0x8f*/
- 0xa4f0, 0xa4f1, 0xa4f2, 0xa4f3, 0x0000, 0x0000, 0x0000, 0x0000, /*0x90-0x97*/
- 0x0000, 0x0000, 0x0000, 0xa961, 0xa962, 0xa966, 0xa967, 0x0000, /*0x98-0x9f*/
- 0x0000, 0xa5a1, 0xa5a2, 0xa5a3, 0xa5a4, 0xa5a5, 0xa5a6, 0xa5a7, /*0xa0-0xa7*/
- 0xa5a8, 0xa5a9, 0xa5aa, 0xa5ab, 0xa5ac, 0xa5ad, 0xa5ae, 0xa5af, /*0xa8-0xaf*/
- 0xa5b0, 0xa5b1, 0xa5b2, 0xa5b3, 0xa5b4, 0xa5b5, 0xa5b6, 0xa5b7, /*0xb0-0xb7*/
- 0xa5b8, 0xa5b9, 0xa5ba, 0xa5bb, 0xa5bc, 0xa5bd, 0xa5be, 0xa5bf, /*0xb8-0xbf*/
- 0xa5c0, 0xa5c1, 0xa5c2, 0xa5c3, 0xa5c4, 0xa5c5, 0xa5c6, 0xa5c7, /*0xc0-0xc7*/
- 0xa5c8, 0xa5c9, 0xa5ca, 0xa5cb, 0xa5cc, 0xa5cd, 0xa5ce, 0xa5cf, /*0xc8-0xcf*/
- 0xa5d0, 0xa5d1, 0xa5d2, 0xa5d3, 0xa5d4, 0xa5d5, 0xa5d6, 0xa5d7, /*0xd0-0xd7*/
- 0xa5d8, 0xa5d9, 0xa5da, 0xa5db, 0xa5dc, 0xa5dd, 0xa5de, 0xa5df, /*0xd8-0xdf*/
- 0xa5e0, 0xa5e1, 0xa5e2, 0xa5e3, 0xa5e4, 0xa5e5, 0xa5e6, 0xa5e7, /*0xe0-0xe7*/
- 0xa5e8, 0xa5e9, 0xa5ea, 0xa5eb, 0xa5ec, 0xa5ed, 0xa5ee, 0xa5ef, /*0xe8-0xef*/
- 0xa5f0, 0xa5f1, 0xa5f2, 0xa5f3, 0xa5f4, 0xa5f5, 0xa5f6, 0x0000, /*0xf0-0xf7*/
- 0x0000, 0x0000, 0x0000, 0x0000, 0xa960, 0xa963, 0xa964, 0x0000, /*0xf8-0xff*/
- /* 0x3100 */
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xa8c5, 0xa8c6, 0xa8c7, /*0x00-0x07*/
- 0xa8c8, 0xa8c9, 0xa8ca, 0xa8cb, 0xa8cc, 0xa8cd, 0xa8ce, 0xa8cf, /*0x08-0x0f*/
- 0xa8d0, 0xa8d1, 0xa8d2, 0xa8d3, 0xa8d4, 0xa8d5, 0xa8d6, 0xa8d7, /*0x10-0x17*/
- 0xa8d8, 0xa8d9, 0xa8da, 0xa8db, 0xa8dc, 0xa8dd, 0xa8de, 0xa8df, /*0x18-0x1f*/
- 0xa8e0, 0xa8e1, 0xa8e2, 0xa8e3, 0xa8e4, 0xa8e5, 0xa8e6, 0xa8e7, /*0x20-0x27*/
- 0xa8e8, 0xa8e9, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0x28-0x2f*/
-};
-static const unsigned short gbk_page32[24] = {
- 0xa2e5, 0xa2e6, 0xa2e7, 0xa2e8, 0xa2e9, 0xa2ea, 0xa2eb, 0xa2ec, /*0x20-0x27*/
- 0xa2ed, 0xa2ee, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0x28-0x2f*/
- 0x0000, 0xa95a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0x30-0x37*/
-};
-static const unsigned short gbk_page33[80] = {
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xa94a, 0xa94b, /*0x88-0x8f*/
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0x90-0x97*/
- 0x0000, 0x0000, 0x0000, 0x0000, 0xa94c, 0xa94d, 0xa94e, 0x0000, /*0x98-0x9f*/
- 0x0000, 0xa94f, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0xa0-0xa7*/
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0xa8-0xaf*/
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0xb0-0xb7*/
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0xb8-0xbf*/
- 0x0000, 0x0000, 0x0000, 0x0000, 0xa950, 0x0000, 0x0000, 0x0000, /*0xc0-0xc7*/
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xa951, 0x0000, /*0xc8-0xcf*/
- 0x0000, 0xa952, 0xa953, 0x0000, 0x0000, 0xa954, 0x0000, 0x0000, /*0xd0-0xd7*/
-};
-static const unsigned short gbk_page4e[20904] = {
- 0xd2bb, 0xb6a1, 0x8140, 0xc6df, 0x8141, 0x8142, 0x8143, 0xcdf2, /*0x00-0x07*/
- 0xd5c9, 0xc8fd, 0xc9cf, 0xcfc2, 0xd8a2, 0xb2bb, 0xd3eb, 0x8144, /*0x08-0x0f*/
- 0xd8a4, 0xb3f3, 0x8145, 0xd7a8, 0xc7d2, 0xd8a7, 0xcac0, 0x8146, /*0x10-0x17*/
- 0xc7f0, 0xb1fb, 0xd2b5, 0xb4d4, 0xb6ab, 0xcbbf, 0xd8a9, 0x8147, /*0x18-0x1f*/
- 0x8148, 0x8149, 0xb6aa, 0x814a, 0xc1bd, 0xd1cf, 0x814b, 0xc9a5, /*0x20-0x27*/
- 0xd8ad, 0x814c, 0xb8f6, 0xd1be, 0xe3dc, 0xd6d0, 0x814d, 0x814e, /*0x28-0x2f*/
- 0xb7e1, 0x814f, 0xb4ae, 0x8150, 0xc1d9, 0x8151, 0xd8bc, 0x8152, /*0x30-0x37*/
- 0xcde8, 0xb5a4, 0xceaa, 0xd6f7, 0x8153, 0xc0f6, 0xbed9, 0xd8af, /*0x38-0x3f*/
- 0x8154, 0x8155, 0x8156, 0xc4cb, 0x8157, 0xbec3, 0x8158, 0xd8b1, /*0x40-0x47*/
- 0xc3b4, 0xd2e5, 0x8159, 0xd6ae, 0xceda, 0xd5a7, 0xbaf5, 0xb7a6, /*0x48-0x4f*/
- 0xc0d6, 0x815a, 0xc6b9, 0xc5d2, 0xc7c7, 0x815b, 0xb9d4, 0x815c, /*0x50-0x57*/
- 0xb3cb, 0xd2d2, 0x815d, 0x815e, 0xd8bf, 0xbec5, 0xc6f2, 0xd2b2, /*0x58-0x5f*/
- 0xcfb0, 0xcfe7, 0x815f, 0x8160, 0x8161, 0x8162, 0xcae9, 0x8163, /*0x60-0x67*/
- 0x8164, 0xd8c0, 0x8165, 0x8166, 0x8167, 0x8168, 0x8169, 0x816a, /*0x68-0x6f*/
- 0xc2f2, 0xc2d2, 0x816b, 0xc8e9, 0x816c, 0x816d, 0x816e, 0x816f, /*0x70-0x77*/
- 0x8170, 0x8171, 0x8172, 0x8173, 0x8174, 0x8175, 0xc7ac, 0x8176, /*0x78-0x7f*/
- 0x8177, 0x8178, 0x8179, 0x817a, 0x817b, 0x817c, 0xc1cb, 0x817d, /*0x80-0x87*/
- 0xd3e8, 0xd5f9, 0x817e, 0xcac2, 0xb6fe, 0xd8a1, 0xd3da, 0xbff7, /*0x88-0x8f*/
- 0x8180, 0xd4c6, 0xbba5, 0xd8c1, 0xcee5, 0xbeae, 0x8181, 0x8182, /*0x90-0x97*/
- 0xd8a8, 0x8183, 0xd1c7, 0xd0a9, 0x8184, 0x8185, 0x8186, 0xd8bd, /*0x98-0x9f*/
- 0xd9ef, 0xcdf6, 0xbfba, 0x8187, 0xbdbb, 0xbaa5, 0xd2e0, 0xb2fa, /*0xa0-0xa7*/
- 0xbae0, 0xc4b6, 0x8188, 0xcfed, 0xbea9, 0xcda4, 0xc1c1, 0x8189, /*0xa8-0xaf*/
- 0x818a, 0x818b, 0xc7d7, 0xd9f1, 0x818c, 0xd9f4, 0x818d, 0x818e, /*0xb0-0xb7*/
- 0x818f, 0x8190, 0xc8cb, 0xd8e9, 0x8191, 0x8192, 0x8193, 0xd2da, /*0xb8-0xbf*/
- 0xcab2, 0xc8ca, 0xd8ec, 0xd8ea, 0xd8c6, 0xbdf6, 0xc6cd, 0xb3f0, /*0xc0-0xc7*/
- 0x8194, 0xd8eb, 0xbdf1, 0xbde9, 0x8195, 0xc8d4, 0xb4d3, 0x8196, /*0xc8-0xcf*/
- 0x8197, 0xc2d8, 0x8198, 0xb2d6, 0xd7d0, 0xcacb, 0xcbfb, 0xd5cc, /*0xd0-0xd7*/
- 0xb8b6, 0xcfc9, 0x8199, 0x819a, 0x819b, 0xd9da, 0xd8f0, 0xc7aa, /*0xd8-0xdf*/
- 0x819c, 0xd8ee, 0x819d, 0xb4fa, 0xc1ee, 0xd2d4, 0x819e, 0x819f, /*0xe0-0xe7*/
- 0xd8ed, 0x81a0, 0xd2c7, 0xd8ef, 0xc3c7, 0x81a1, 0x81a2, 0x81a3, /*0xe8-0xef*/
- 0xd1f6, 0x81a4, 0xd6d9, 0xd8f2, 0x81a5, 0xd8f5, 0xbcfe, 0xbcdb, /*0xf0-0xf7*/
- 0x81a6, 0x81a7, 0x81a8, 0xc8ce, 0x81a9, 0xb7dd, 0x81aa, 0xb7c2, /*0xf8-0xff*/
- /* 0x4f00 */
- 0x81ab, 0xc6f3, 0x81ac, 0x81ad, 0x81ae, 0x81af, 0x81b0, 0x81b1, /*0x00-0x07*/
- 0x81b2, 0xd8f8, 0xd2c1, 0x81b3, 0x81b4, 0xcee9, 0xbcbf, 0xb7fc, /*0x08-0x0f*/
- 0xb7a5, 0xd0dd, 0x81b5, 0x81b6, 0x81b7, 0x81b8, 0x81b9, 0xd6da, /*0x10-0x17*/
- 0xd3c5, 0xbbef, 0xbbe1, 0xd8f1, 0x81ba, 0x81bb, 0xc9a1, 0xceb0, /*0x18-0x1f*/
- 0xb4ab, 0x81bc, 0xd8f3, 0x81bd, 0xc9cb, 0xd8f6, 0xc2d7, 0xd8f7, /*0x20-0x27*/
- 0x81be, 0x81bf, 0xceb1, 0xd8f9, 0x81c0, 0x81c1, 0x81c2, 0xb2ae, /*0x28-0x2f*/
- 0xb9c0, 0x81c3, 0xd9a3, 0x81c4, 0xb0e9, 0x81c5, 0xc1e6, 0x81c6, /*0x30-0x37*/
- 0xc9ec, 0x81c7, 0xcbc5, 0x81c8, 0xcbc6, 0xd9a4, 0x81c9, 0x81ca, /*0x38-0x3f*/
- 0x81cb, 0x81cc, 0x81cd, 0xb5e8, 0x81ce, 0x81cf, 0xb5ab, 0x81d0, /*0x40-0x47*/
- 0x81d1, 0x81d2, 0x81d3, 0x81d4, 0x81d5, 0xcebb, 0xb5cd, 0xd7a1, /*0x48-0x4f*/
- 0xd7f4, 0xd3d3, 0x81d6, 0xcce5, 0x81d7, 0xbace, 0x81d8, 0xd9a2, /*0x50-0x57*/
- 0xd9dc, 0xd3e0, 0xd8fd, 0xb7f0, 0xd7f7, 0xd8fe, 0xd8fa, 0xd9a1, /*0x58-0x5f*/
- 0xc4e3, 0x81d9, 0x81da, 0xd3b6, 0xd8f4, 0xd9dd, 0x81db, 0xd8fb, /*0x60-0x67*/
- 0x81dc, 0xc5e5, 0x81dd, 0x81de, 0xc0d0, 0x81df, 0x81e0, 0xd1f0, /*0x68-0x6f*/
- 0xb0db, 0x81e1, 0x81e2, 0xbcd1, 0xd9a6, 0x81e3, 0xd9a5, 0x81e4, /*0x70-0x77*/
- 0x81e5, 0x81e6, 0x81e7, 0xd9ac, 0xd9ae, 0x81e8, 0xd9ab, 0xcab9, /*0x78-0x7f*/
- 0x81e9, 0x81ea, 0x81eb, 0xd9a9, 0xd6b6, 0x81ec, 0x81ed, 0x81ee, /*0x80-0x87*/
- 0xb3de, 0xd9a8, 0x81ef, 0xc0fd, 0x81f0, 0xcacc, 0x81f1, 0xd9aa, /*0x88-0x8f*/
- 0x81f2, 0xd9a7, 0x81f3, 0x81f4, 0xd9b0, 0x81f5, 0x81f6, 0xb6b1, /*0x90-0x97*/
- 0x81f7, 0x81f8, 0x81f9, 0xb9a9, 0x81fa, 0xd2c0, 0x81fb, 0x81fc, /*0x98-0x9f*/
- 0xcfc0, 0x81fd, 0x81fe, 0xc2c2, 0x8240, 0xbdc4, 0xd5ec, 0xb2e0, /*0xa0-0xa7*/
- 0xc7c8, 0xbfeb, 0xd9ad, 0x8241, 0xd9af, 0x8242, 0xceea, 0xbaee, /*0xa8-0xaf*/
- 0x8243, 0x8244, 0x8245, 0x8246, 0x8247, 0xc7d6, 0x8248, 0x8249, /*0xb0-0xb7*/
- 0x824a, 0x824b, 0x824c, 0x824d, 0x824e, 0x824f, 0x8250, 0xb1e3, /*0xb8-0xbf*/
- 0x8251, 0x8252, 0x8253, 0xb4d9, 0xb6ed, 0xd9b4, 0x8254, 0x8255, /*0xc0-0xc7*/
- 0x8256, 0x8257, 0xbfa1, 0x8258, 0x8259, 0x825a, 0xd9de, 0xc7ce, /*0xc8-0xcf*/
- 0xc0fe, 0xd9b8, 0x825b, 0x825c, 0x825d, 0x825e, 0x825f, 0xcbd7, /*0xd0-0xd7*/
- 0xb7fd, 0x8260, 0xd9b5, 0x8261, 0xd9b7, 0xb1a3, 0xd3e1, 0xd9b9, /*0xd8-0xdf*/
- 0x8262, 0xd0c5, 0x8263, 0xd9b6, 0x8264, 0x8265, 0xd9b1, 0x8266, /*0xe0-0xe7*/
- 0xd9b2, 0xc1a9, 0xd9b3, 0x8267, 0x8268, 0xbcf3, 0xd0de, 0xb8a9, /*0xe8-0xef*/
- 0x8269, 0xbee3, 0x826a, 0xd9bd, 0x826b, 0x826c, 0x826d, 0x826e, /*0xf0-0xf7*/
- 0xd9ba, 0x826f, 0xb0b3, 0x8270, 0x8271, 0x8272, 0xd9c2, 0x8273, /*0xf8-0xff*/
- /* 0x5000 */
- 0x8274, 0x8275, 0x8276, 0x8277, 0x8278, 0x8279, 0x827a, 0x827b, /*0x00-0x07*/
- 0x827c, 0x827d, 0x827e, 0x8280, 0xd9c4, 0xb1b6, 0x8281, 0xd9bf, /*0x08-0x0f*/
- 0x8282, 0x8283, 0xb5b9, 0x8284, 0xbef3, 0x8285, 0x8286, 0x8287, /*0x10-0x17*/
- 0xccc8, 0xbaf2, 0xd2d0, 0x8288, 0xd9c3, 0x8289, 0x828a, 0xbde8, /*0x18-0x1f*/
- 0x828b, 0xb3ab, 0x828c, 0x828d, 0x828e, 0xd9c5, 0xbeeb, 0x828f, /*0x20-0x27*/
- 0xd9c6, 0xd9bb, 0xc4df, 0x8290, 0xd9be, 0xd9c1, 0xd9c0, 0x8291, /*0x28-0x2f*/
- 0x8292, 0x8293, 0x8294, 0x8295, 0x8296, 0x8297, 0x8298, 0x8299, /*0x30-0x37*/
- 0x829a, 0x829b, 0xd5ae, 0x829c, 0xd6b5, 0x829d, 0xc7e3, 0x829e, /*0x38-0x3f*/
- 0x829f, 0x82a0, 0x82a1, 0xd9c8, 0x82a2, 0x82a3, 0x82a4, 0xbcd9, /*0x40-0x47*/
- 0xd9ca, 0x82a5, 0x82a6, 0x82a7, 0xd9bc, 0x82a8, 0xd9cb, 0xc6ab, /*0x48-0x4f*/
- 0x82a9, 0x82aa, 0x82ab, 0x82ac, 0x82ad, 0xd9c9, 0x82ae, 0x82af, /*0x50-0x57*/
- 0x82b0, 0x82b1, 0xd7f6, 0x82b2, 0xcda3, 0x82b3, 0x82b4, 0x82b5, /*0x58-0x5f*/
- 0x82b6, 0x82b7, 0x82b8, 0x82b9, 0x82ba, 0xbda1, 0x82bb, 0x82bc, /*0x60-0x67*/
- 0x82bd, 0x82be, 0x82bf, 0x82c0, 0xd9cc, 0x82c1, 0x82c2, 0x82c3, /*0x68-0x6f*/
- 0x82c4, 0x82c5, 0x82c6, 0x82c7, 0x82c8, 0x82c9, 0xc5bc, 0xcdb5, /*0x70-0x77*/
- 0x82ca, 0x82cb, 0x82cc, 0xd9cd, 0x82cd, 0x82ce, 0xd9c7, 0xb3a5, /*0x78-0x7f*/
- 0xbffe, 0x82cf, 0x82d0, 0x82d1, 0x82d2, 0xb8b5, 0x82d3, 0x82d4, /*0x80-0x87*/
- 0xc0fc, 0x82d5, 0x82d6, 0x82d7, 0x82d8, 0xb0f8, 0x82d9, 0x82da, /*0x88-0x8f*/
- 0x82db, 0x82dc, 0x82dd, 0x82de, 0x82df, 0x82e0, 0x82e1, 0x82e2, /*0x90-0x97*/
- 0x82e3, 0x82e4, 0x82e5, 0x82e6, 0x82e7, 0x82e8, 0x82e9, 0x82ea, /*0x98-0x9f*/
- 0x82eb, 0x82ec, 0x82ed, 0xb4f6, 0x82ee, 0xd9ce, 0x82ef, 0xd9cf, /*0xa0-0xa7*/
- 0xb4a2, 0xd9d0, 0x82f0, 0x82f1, 0xb4df, 0x82f2, 0x82f3, 0x82f4, /*0xa8-0xaf*/
- 0x82f5, 0x82f6, 0xb0c1, 0x82f7, 0x82f8, 0x82f9, 0x82fa, 0x82fb, /*0xb0-0xb7*/
- 0x82fc, 0x82fd, 0xd9d1, 0xc9b5, 0x82fe, 0x8340, 0x8341, 0x8342, /*0xb8-0xbf*/
- 0x8343, 0x8344, 0x8345, 0x8346, 0x8347, 0x8348, 0x8349, 0x834a, /*0xc0-0xc7*/
- 0x834b, 0x834c, 0x834d, 0x834e, 0x834f, 0x8350, 0x8351, 0xcff1, /*0xc8-0xcf*/
- 0x8352, 0x8353, 0x8354, 0x8355, 0x8356, 0x8357, 0xd9d2, 0x8358, /*0xd0-0xd7*/
- 0x8359, 0x835a, 0xc1c5, 0x835b, 0x835c, 0x835d, 0x835e, 0x835f, /*0xd8-0xdf*/
- 0x8360, 0x8361, 0x8362, 0x8363, 0x8364, 0x8365, 0xd9d6, 0xc9ae, /*0xe0-0xe7*/
- 0x8366, 0x8367, 0x8368, 0x8369, 0xd9d5, 0xd9d4, 0xd9d7, 0x836a, /*0xe8-0xef*/
- 0x836b, 0x836c, 0x836d, 0xcbdb, 0x836e, 0xbda9, 0x836f, 0x8370, /*0xf0-0xf7*/
- 0x8371, 0x8372, 0x8373, 0xc6a7, 0x8374, 0x8375, 0x8376, 0x8377, /*0xf8-0xff*/
- /* 0x5100 */
- 0x8378, 0x8379, 0x837a, 0x837b, 0x837c, 0x837d, 0xd9d3, 0xd9d8, /*0x00-0x07*/
- 0x837e, 0x8380, 0x8381, 0xd9d9, 0x8382, 0x8383, 0x8384, 0x8385, /*0x08-0x0f*/
- 0x8386, 0x8387, 0xc8e5, 0x8388, 0x8389, 0x838a, 0x838b, 0x838c, /*0x10-0x17*/
- 0x838d, 0x838e, 0x838f, 0x8390, 0x8391, 0x8392, 0x8393, 0x8394, /*0x18-0x1f*/
- 0x8395, 0xc0dc, 0x8396, 0x8397, 0x8398, 0x8399, 0x839a, 0x839b, /*0x20-0x27*/
- 0x839c, 0x839d, 0x839e, 0x839f, 0x83a0, 0x83a1, 0x83a2, 0x83a3, /*0x28-0x2f*/
- 0x83a4, 0x83a5, 0x83a6, 0x83a7, 0x83a8, 0x83a9, 0x83aa, 0x83ab, /*0x30-0x37*/
- 0x83ac, 0x83ad, 0x83ae, 0x83af, 0x83b0, 0x83b1, 0x83b2, 0xb6f9, /*0x38-0x3f*/
- 0xd8a3, 0xd4ca, 0x83b3, 0xd4aa, 0xd0d6, 0xb3e4, 0xd5d7, 0x83b4, /*0x40-0x47*/
- 0xcfc8, 0xb9e2, 0x83b5, 0xbfcb, 0x83b6, 0xc3e2, 0x83b7, 0x83b8, /*0x48-0x4f*/
- 0x83b9, 0xb6d2, 0x83ba, 0x83bb, 0xcdc3, 0xd9ee, 0xd9f0, 0x83bc, /*0x50-0x57*/
- 0x83bd, 0x83be, 0xb5b3, 0x83bf, 0xb6b5, 0x83c0, 0x83c1, 0x83c2, /*0x58-0x5f*/
- 0x83c3, 0x83c4, 0xbea4, 0x83c5, 0x83c6, 0xc8eb, 0x83c7, 0x83c8, /*0x60-0x67*/
- 0xc8ab, 0x83c9, 0x83ca, 0xb0cb, 0xb9ab, 0xc1f9, 0xd9e2, 0x83cb, /*0x68-0x6f*/
- 0xc0bc, 0xb9b2, 0x83cc, 0xb9d8, 0xd0cb, 0xb1f8, 0xc6e4, 0xbedf, /*0x70-0x77*/
- 0xb5e4, 0xd7c8, 0x83cd, 0xd1f8, 0xbce6, 0xcade, 0x83ce, 0x83cf, /*0x78-0x7f*/
- 0xbcbd, 0xd9e6, 0xd8e7, 0x83d0, 0x83d1, 0xc4da, 0x83d2, 0x83d3, /*0x80-0x87*/
- 0xb8d4, 0xc8bd, 0x83d4, 0x83d5, 0xb2e1, 0xd4d9, 0x83d6, 0x83d7, /*0x88-0x8f*/
- 0x83d8, 0x83d9, 0xc3b0, 0x83da, 0x83db, 0xc3e1, 0xdaa2, 0xc8df, /*0x90-0x97*/
- 0x83dc, 0xd0b4, 0x83dd, 0xbefc, 0xc5a9, 0x83de, 0x83df, 0x83e0, /*0x98-0x9f*/
- 0xb9da, 0x83e1, 0xdaa3, 0x83e2, 0xd4a9, 0xdaa4, 0x83e3, 0x83e4, /*0xa0-0xa7*/
- 0x83e5, 0x83e6, 0x83e7, 0xd9fb, 0xb6ac, 0x83e8, 0x83e9, 0xb7eb, /*0xa8-0xaf*/
- 0xb1f9, 0xd9fc, 0xb3e5, 0xbef6, 0x83ea, 0xbff6, 0xd2b1, 0xc0e4, /*0xb0-0xb7*/
- 0x83eb, 0x83ec, 0x83ed, 0xb6b3, 0xd9fe, 0xd9fd, 0x83ee, 0x83ef, /*0xb8-0xbf*/
- 0xbebb, 0x83f0, 0x83f1, 0x83f2, 0xc6e0, 0x83f3, 0xd7bc, 0xdaa1, /*0xc0-0xc7*/
- 0x83f4, 0xc1b9, 0x83f5, 0xb5f2, 0xc1e8, 0x83f6, 0x83f7, 0xbcf5, /*0xc8-0xcf*/
- 0x83f8, 0xb4d5, 0x83f9, 0x83fa, 0x83fb, 0x83fc, 0x83fd, 0x83fe, /*0xd0-0xd7*/
- 0x8440, 0x8441, 0x8442, 0xc1dd, 0x8443, 0xc4fd, 0x8444, 0x8445, /*0xd8-0xdf*/
- 0xbcb8, 0xb7b2, 0x8446, 0x8447, 0xb7ef, 0x8448, 0x8449, 0x844a, /*0xe0-0xe7*/
- 0x844b, 0x844c, 0x844d, 0xd9ec, 0x844e, 0xc6be, 0x844f, 0xbfad, /*0xe8-0xef*/
- 0xbbcb, 0x8450, 0x8451, 0xb5ca, 0x8452, 0xdbc9, 0xd0d7, 0x8453, /*0xf0-0xf7*/
- 0xcdb9, 0xb0bc, 0xb3f6, 0xbbf7, 0xdbca, 0xbaaf, 0x8454, 0xd4e4, /*0xf8-0xff*/
- /* 0x5200 */
- 0xb5b6, 0xb5f3, 0xd8d6, 0xc8d0, 0x8455, 0x8456, 0xb7d6, 0xc7d0, /*0x00-0x07*/
- 0xd8d7, 0x8457, 0xbfaf, 0x8458, 0x8459, 0xdbbb, 0xd8d8, 0x845a, /*0x08-0x0f*/
- 0x845b, 0xd0cc, 0xbbae, 0x845c, 0x845d, 0x845e, 0xebbe, 0xc1d0, /*0x10-0x17*/
- 0xc1f5, 0xd4f2, 0xb8d5, 0xb4b4, 0x845f, 0xb3f5, 0x8460, 0x8461, /*0x18-0x1f*/
- 0xc9be, 0x8462, 0x8463, 0x8464, 0xc5d0, 0x8465, 0x8466, 0x8467, /*0x20-0x27*/
- 0xc5d9, 0xc0fb, 0x8468, 0xb1f0, 0x8469, 0xd8d9, 0xb9ce, 0x846a, /*0x28-0x2f*/
- 0xb5bd, 0x846b, 0x846c, 0xd8da, 0x846d, 0x846e, 0xd6c6, 0xcba2, /*0x30-0x37*/
- 0xc8af, 0xc9b2, 0xb4cc, 0xbfcc, 0x846f, 0xb9f4, 0x8470, 0xd8db, /*0x38-0x3f*/
- 0xd8dc, 0xb6e7, 0xbcc1, 0xccea, 0x8471, 0x8472, 0x8473, 0x8474, /*0x40-0x47*/
- 0x8475, 0x8476, 0xcff7, 0x8477, 0xd8dd, 0xc7b0, 0x8478, 0x8479, /*0x48-0x4f*/
- 0xb9d0, 0xbda3, 0x847a, 0x847b, 0xccde, 0x847c, 0xc6ca, 0x847d, /*0x50-0x57*/
- 0x847e, 0x8480, 0x8481, 0x8482, 0xd8e0, 0x8483, 0xd8de, 0x8484, /*0x58-0x5f*/
- 0x8485, 0xd8df, 0x8486, 0x8487, 0x8488, 0xb0fe, 0x8489, 0xbee7, /*0x60-0x67*/
- 0x848a, 0xcaa3, 0xbcf4, 0x848b, 0x848c, 0x848d, 0x848e, 0xb8b1, /*0x68-0x6f*/
- 0x848f, 0x8490, 0xb8ee, 0x8491, 0x8492, 0x8493, 0x8494, 0x8495, /*0x70-0x77*/
- 0x8496, 0x8497, 0x8498, 0x8499, 0x849a, 0xd8e2, 0x849b, 0xbdcb, /*0x78-0x7f*/
- 0x849c, 0xd8e4, 0xd8e3, 0x849d, 0x849e, 0x849f, 0x84a0, 0x84a1, /*0x80-0x87*/
- 0xc5fc, 0x84a2, 0x84a3, 0x84a4, 0x84a5, 0x84a6, 0x84a7, 0x84a8, /*0x88-0x8f*/
- 0xd8e5, 0x84a9, 0x84aa, 0xd8e6, 0x84ab, 0x84ac, 0x84ad, 0x84ae, /*0x90-0x97*/
- 0x84af, 0x84b0, 0x84b1, 0xc1a6, 0x84b2, 0xc8b0, 0xb0ec, 0xb9a6, /*0x98-0x9f*/
- 0xbcd3, 0xcef1, 0xdbbd, 0xc1d3, 0x84b3, 0x84b4, 0x84b5, 0x84b6, /*0xa0-0xa7*/
- 0xb6af, 0xd6fa, 0xc5ac, 0xbdd9, 0xdbbe, 0xdbbf, 0x84b7, 0x84b8, /*0xa8-0xaf*/
- 0x84b9, 0xc0f8, 0xbea2, 0xc0cd, 0x84ba, 0x84bb, 0x84bc, 0x84bd, /*0xb0-0xb7*/
- 0x84be, 0x84bf, 0x84c0, 0x84c1, 0x84c2, 0x84c3, 0xdbc0, 0xcac6, /*0xb8-0xbf*/
- 0x84c4, 0x84c5, 0x84c6, 0xb2aa, 0x84c7, 0x84c8, 0x84c9, 0xd3c2, /*0xc0-0xc7*/
- 0x84ca, 0xc3e3, 0x84cb, 0xd1ab, 0x84cc, 0x84cd, 0x84ce, 0x84cf, /*0xc8-0xcf*/
- 0xdbc2, 0x84d0, 0xc0d5, 0x84d1, 0x84d2, 0x84d3, 0xdbc3, 0x84d4, /*0xd0-0xd7*/
- 0xbfb1, 0x84d5, 0x84d6, 0x84d7, 0x84d8, 0x84d9, 0x84da, 0xc4bc, /*0xd8-0xdf*/
- 0x84db, 0x84dc, 0x84dd, 0x84de, 0xc7da, 0x84df, 0x84e0, 0x84e1, /*0xe0-0xe7*/
- 0x84e2, 0x84e3, 0x84e4, 0x84e5, 0x84e6, 0x84e7, 0x84e8, 0x84e9, /*0xe8-0xef*/
- 0xdbc4, 0x84ea, 0x84eb, 0x84ec, 0x84ed, 0x84ee, 0x84ef, 0x84f0, /*0xf0-0xf7*/
- 0x84f1, 0xd9e8, 0xc9d7, 0x84f2, 0x84f3, 0x84f4, 0xb9b4, 0xcef0, /*0xf8-0xff*/
- /* 0x5300 */
- 0xd4c8, 0x84f5, 0x84f6, 0x84f7, 0x84f8, 0xb0fc, 0xb4d2, 0x84f9, /*0x00-0x07*/
- 0xd0d9, 0x84fa, 0x84fb, 0x84fc, 0x84fd, 0xd9e9, 0x84fe, 0xdecb, /*0x08-0x0f*/
- 0xd9eb, 0x8540, 0x8541, 0x8542, 0x8543, 0xd8b0, 0xbbaf, 0xb1b1, /*0x10-0x17*/
- 0x8544, 0xb3d7, 0xd8ce, 0x8545, 0x8546, 0xd4d1, 0x8547, 0x8548, /*0x18-0x1f*/
- 0xbdb3, 0xbfef, 0x8549, 0xcfbb, 0x854a, 0x854b, 0xd8d0, 0x854c, /*0x20-0x27*/
- 0x854d, 0x854e, 0xb7cb, 0x854f, 0x8550, 0x8551, 0xd8d1, 0x8552, /*0x28-0x2f*/
- 0x8553, 0x8554, 0x8555, 0x8556, 0x8557, 0x8558, 0x8559, 0x855a, /*0x30-0x37*/
- 0x855b, 0xc6a5, 0xc7f8, 0xd2bd, 0x855c, 0x855d, 0xd8d2, 0xc4e4, /*0x38-0x3f*/
- 0x855e, 0xcaae, 0x855f, 0xc7a7, 0x8560, 0xd8a6, 0x8561, 0xc9fd, /*0x40-0x47*/
- 0xcee7, 0xbbdc, 0xb0eb, 0x8562, 0x8563, 0x8564, 0xbbaa, 0xd0ad, /*0x48-0x4f*/
- 0x8565, 0xb1b0, 0xd7e4, 0xd7bf, 0x8566, 0xb5a5, 0xc2f4, 0xc4cf, /*0x50-0x57*/
- 0x8567, 0x8568, 0xb2a9, 0x8569, 0xb2b7, 0x856a, 0xb1e5, 0xdfb2, /*0x58-0x5f*/
- 0xd5bc, 0xbfa8, 0xc2ac, 0xd8d5, 0xc2b1, 0x856b, 0xd8d4, 0xced4, /*0x60-0x67*/
- 0x856c, 0xdae0, 0x856d, 0xcec0, 0x856e, 0x856f, 0xd8b4, 0xc3ae, /*0x68-0x6f*/
- 0xd3a1, 0xcea3, 0x8570, 0xbcb4, 0xc8b4, 0xc2d1, 0x8571, 0xbeed, /*0x70-0x77*/
- 0xd0b6, 0x8572, 0xdae1, 0x8573, 0x8574, 0x8575, 0x8576, 0xc7e4, /*0x78-0x7f*/
- 0x8577, 0x8578, 0xb3a7, 0x8579, 0xb6f2, 0xccfc, 0xc0fa, 0x857a, /*0x80-0x87*/
- 0x857b, 0xc0f7, 0x857c, 0xd1b9, 0xd1e1, 0xd8c7, 0x857d, 0x857e, /*0x88-0x8f*/
- 0x8580, 0x8581, 0x8582, 0x8583, 0x8584, 0xb2de, 0x8585, 0x8586, /*0x90-0x97*/
- 0xc0e5, 0x8587, 0xbaf1, 0x8588, 0x8589, 0xd8c8, 0x858a, 0xd4ad, /*0x98-0x9f*/
- 0x858b, 0x858c, 0xcfe1, 0xd8c9, 0x858d, 0xd8ca, 0xcfc3, 0x858e, /*0xa0-0xa7*/
- 0xb3f8, 0xbec7, 0x858f, 0x8590, 0x8591, 0x8592, 0xd8cb, 0x8593, /*0xa8-0xaf*/
- 0x8594, 0x8595, 0x8596, 0x8597, 0x8598, 0x8599, 0xdbcc, 0x859a, /*0xb0-0xb7*/
- 0x859b, 0x859c, 0x859d, 0xc8a5, 0x859e, 0x859f, 0x85a0, 0xcfd8, /*0xb8-0xbf*/
- 0x85a1, 0xc8fe, 0xb2ce, 0x85a2, 0x85a3, 0x85a4, 0x85a5, 0x85a6, /*0xc0-0xc7*/
- 0xd3d6, 0xb2e6, 0xbcb0, 0xd3d1, 0xcbab, 0xb7b4, 0x85a7, 0x85a8, /*0xc8-0xcf*/
- 0x85a9, 0xb7a2, 0x85aa, 0x85ab, 0xcae5, 0x85ac, 0xc8a1, 0xcadc, /*0xd0-0xd7*/
- 0xb1e4, 0xd0f0, 0x85ad, 0xc5d1, 0x85ae, 0x85af, 0x85b0, 0xdbc5, /*0xd8-0xdf*/
- 0xb5fe, 0x85b1, 0x85b2, 0xbfda, 0xb9c5, 0xbee4, 0xc1ed, 0x85b3, /*0xe0-0xe7*/
- 0xdfb6, 0xdfb5, 0xd6bb, 0xbdd0, 0xd5d9, 0xb0c8, 0xb6a3, 0xbfc9, /*0xe8-0xef*/
- 0xcca8, 0xdfb3, 0xcab7, 0xd3d2, 0x85b4, 0xd8cf, 0xd2b6, 0xbac5, /*0xf0-0xf7*/
- 0xcbbe, 0xccbe, 0x85b5, 0xdfb7, 0xb5f0, 0xdfb4, 0x85b6, 0x85b7, /*0xf8-0xff*/
- /* 0x5400 */
- 0x85b8, 0xd3f5, 0x85b9, 0xb3d4, 0xb8f7, 0x85ba, 0xdfba, 0x85bb, /*0x00-0x07*/
- 0xbacf, 0xbcaa, 0xb5f5, 0x85bc, 0xcdac, 0xc3fb, 0xbaf3, 0xc0f4, /*0x08-0x0f*/
- 0xcdc2, 0xcff2, 0xdfb8, 0xcfc5, 0x85bd, 0xc2c0, 0xdfb9, 0xc2f0, /*0x10-0x17*/
- 0x85be, 0x85bf, 0x85c0, 0xbefd, 0x85c1, 0xc1df, 0xcdcc, 0xd2f7, /*0x18-0x1f*/
- 0xb7cd, 0xdfc1, 0x85c2, 0xdfc4, 0x85c3, 0x85c4, 0xb7f1, 0xb0c9, /*0x20-0x27*/
- 0xb6d6, 0xb7d4, 0x85c5, 0xbaac, 0xccfd, 0xbfd4, 0xcbb1, 0xc6f4, /*0x28-0x2f*/
- 0x85c6, 0xd6a8, 0xdfc5, 0x85c7, 0xcee2, 0xb3b3, 0x85c8, 0x85c9, /*0x30-0x37*/
- 0xcefc, 0xb4b5, 0x85ca, 0xcec7, 0xbaf0, 0x85cb, 0xcee1, 0x85cc, /*0x38-0x3f*/
- 0xd1bd, 0x85cd, 0x85ce, 0xdfc0, 0x85cf, 0x85d0, 0xb4f4, 0x85d1, /*0x40-0x47*/
- 0xb3ca, 0x85d2, 0xb8e6, 0xdfbb, 0x85d3, 0x85d4, 0x85d5, 0x85d6, /*0x48-0x4f*/
- 0xc4c5, 0x85d7, 0xdfbc, 0xdfbd, 0xdfbe, 0xc5bb, 0xdfbf, 0xdfc2, /*0x50-0x57*/
- 0xd4b1, 0xdfc3, 0x85d8, 0xc7ba, 0xced8, 0x85d9, 0x85da, 0x85db, /*0x58-0x5f*/
- 0x85dc, 0x85dd, 0xc4d8, 0x85de, 0xdfca, 0x85df, 0xdfcf, 0x85e0, /*0x60-0x67*/
- 0xd6dc, 0x85e1, 0x85e2, 0x85e3, 0x85e4, 0x85e5, 0x85e6, 0x85e7, /*0x68-0x6f*/
- 0x85e8, 0xdfc9, 0xdfda, 0xceb6, 0x85e9, 0xbac7, 0xdfce, 0xdfc8, /*0x70-0x77*/
- 0xc5de, 0x85ea, 0x85eb, 0xc9eb, 0xbaf4, 0xc3fc, 0x85ec, 0x85ed, /*0x78-0x7f*/
- 0xbed7, 0x85ee, 0xdfc6, 0x85ef, 0xdfcd, 0x85f0, 0xc5d8, 0x85f1, /*0x80-0x87*/
- 0x85f2, 0x85f3, 0x85f4, 0xd5a6, 0xbacd, 0x85f5, 0xbecc, 0xd3bd, /*0x88-0x8f*/
- 0xb8c0, 0x85f6, 0xd6e4, 0x85f7, 0xdfc7, 0xb9be, 0xbfa7, 0x85f8, /*0x90-0x97*/
- 0x85f9, 0xc1fc, 0xdfcb, 0xdfcc, 0x85fa, 0xdfd0, 0x85fb, 0x85fc, /*0x98-0x9f*/
- 0x85fd, 0x85fe, 0x8640, 0xdfdb, 0xdfe5, 0x8641, 0xdfd7, 0xdfd6, /*0xa0-0xa7*/
- 0xd7c9, 0xdfe3, 0xdfe4, 0xe5eb, 0xd2a7, 0xdfd2, 0x8642, 0xbfa9, /*0xa8-0xaf*/
- 0x8643, 0xd4db, 0x8644, 0xbfc8, 0xdfd4, 0x8645, 0x8646, 0x8647, /*0xb0-0xb7*/
- 0xcfcc, 0x8648, 0x8649, 0xdfdd, 0x864a, 0xd1ca, 0x864b, 0xdfde, /*0xb8-0xbf*/
- 0xb0a7, 0xc6b7, 0xdfd3, 0x864c, 0xbae5, 0x864d, 0xb6df, 0xcddb, /*0xc0-0xc7*/
- 0xb9fe, 0xd4d5, 0x864e, 0x864f, 0xdfdf, 0xcfec, 0xb0a5, 0xdfe7, /*0xc8-0xcf*/
- 0xdfd1, 0xd1c6, 0xdfd5, 0xdfd8, 0xdfd9, 0xdfdc, 0x8650, 0xbba9, /*0xd0-0xd7*/
- 0x8651, 0xdfe0, 0xdfe1, 0x8652, 0xdfe2, 0xdfe6, 0xdfe8, 0xd3b4, /*0xd8-0xdf*/
- 0x8653, 0x8654, 0x8655, 0x8656, 0x8657, 0xb8e7, 0xc5b6, 0xdfea, /*0xe0-0xe7*/
- 0xc9da, 0xc1a8, 0xc4c4, 0x8658, 0x8659, 0xbfde, 0xcff8, 0x865a, /*0xe8-0xef*/
- 0x865b, 0x865c, 0xd5dc, 0xdfee, 0x865d, 0x865e, 0x865f, 0x8660, /*0xf0-0xf7*/
- 0x8661, 0x8662, 0xb2b8, 0x8663, 0xbadf, 0xdfec, 0x8664, 0xdbc1, /*0xf8-0xff*/
- /* 0x5500 */
- 0x8665, 0xd1e4, 0x8666, 0x8667, 0x8668, 0x8669, 0xcbf4, 0xb4bd, /*0x00-0x07*/
- 0x866a, 0xb0a6, 0x866b, 0x866c, 0x866d, 0x866e, 0x866f, 0xdff1, /*0x08-0x0f*/
- 0xccc6, 0xdff2, 0x8670, 0x8671, 0xdfed, 0x8672, 0x8673, 0x8674, /*0x10-0x17*/
- 0x8675, 0x8676, 0x8677, 0xdfe9, 0x8678, 0x8679, 0x867a, 0x867b, /*0x18-0x1f*/
- 0xdfeb, 0x867c, 0xdfef, 0xdff0, 0xbbbd, 0x867d, 0x867e, 0xdff3, /*0x20-0x27*/
- 0x8680, 0x8681, 0xdff4, 0x8682, 0xbba3, 0x8683, 0xcadb, 0xcea8, /*0x28-0x2f*/
- 0xe0a7, 0xb3aa, 0x8684, 0xe0a6, 0x8685, 0x8686, 0x8687, 0xe0a1, /*0x30-0x37*/
- 0x8688, 0x8689, 0x868a, 0x868b, 0xdffe, 0x868c, 0xcdd9, 0xdffc, /*0x38-0x3f*/
- 0x868d, 0xdffa, 0x868e, 0xbfd0, 0xd7c4, 0x868f, 0xc9cc, 0x8690, /*0x40-0x47*/
- 0x8691, 0xdff8, 0xb0a1, 0x8692, 0x8693, 0x8694, 0x8695, 0x8696, /*0x48-0x4f*/
- 0xdffd, 0x8697, 0x8698, 0x8699, 0x869a, 0xdffb, 0xe0a2, 0x869b, /*0x50-0x57*/
- 0x869c, 0x869d, 0x869e, 0x869f, 0xe0a8, 0x86a0, 0x86a1, 0x86a2, /*0x58-0x5f*/
- 0x86a3, 0xb7c8, 0x86a4, 0x86a5, 0xc6a1, 0xc9b6, 0xc0b2, 0xdff5, /*0x60-0x67*/
- 0x86a6, 0x86a7, 0xc5be, 0x86a8, 0xd8c4, 0xdff9, 0xc4f6, 0x86a9, /*0x68-0x6f*/
- 0x86aa, 0x86ab, 0x86ac, 0x86ad, 0x86ae, 0xe0a3, 0xe0a4, 0xe0a5, /*0x70-0x77*/
- 0xd0a5, 0x86af, 0x86b0, 0xe0b4, 0xcce4, 0x86b1, 0xe0b1, 0x86b2, /*0x78-0x7f*/
- 0xbfa6, 0xe0af, 0xceb9, 0xe0ab, 0xc9c6, 0x86b3, 0x86b4, 0xc0ae, /*0x80-0x87*/
- 0xe0ae, 0xbaed, 0xbab0, 0xe0a9, 0x86b5, 0x86b6, 0x86b7, 0xdff6, /*0x88-0x8f*/
- 0x86b8, 0xe0b3, 0x86b9, 0x86ba, 0xe0b8, 0x86bb, 0x86bc, 0x86bd, /*0x90-0x97*/
- 0xb4ad, 0xe0b9, 0x86be, 0x86bf, 0xcfb2, 0xbac8, 0x86c0, 0xe0b0, /*0x98-0x9f*/
- 0x86c1, 0x86c2, 0x86c3, 0x86c4, 0x86c5, 0x86c6, 0x86c7, 0xd0fa, /*0xa0-0xa7*/
- 0x86c8, 0x86c9, 0x86ca, 0x86cb, 0x86cc, 0x86cd, 0x86ce, 0x86cf, /*0xa8-0xaf*/
- 0x86d0, 0xe0ac, 0x86d1, 0xd4fb, 0x86d2, 0xdff7, 0x86d3, 0xc5e7, /*0xb0-0xb7*/
- 0x86d4, 0xe0ad, 0x86d5, 0xd3f7, 0x86d6, 0xe0b6, 0xe0b7, 0x86d7, /*0xb8-0xbf*/
- 0x86d8, 0x86d9, 0x86da, 0x86db, 0xe0c4, 0xd0e1, 0x86dc, 0x86dd, /*0xc0-0xc7*/
- 0x86de, 0xe0bc, 0x86df, 0x86e0, 0xe0c9, 0xe0ca, 0x86e1, 0x86e2, /*0xc8-0xcf*/
- 0x86e3, 0xe0be, 0xe0aa, 0xc9a4, 0xe0c1, 0x86e4, 0xe0b2, 0x86e5, /*0xd0-0xd7*/
- 0x86e6, 0x86e7, 0x86e8, 0x86e9, 0xcac8, 0xe0c3, 0x86ea, 0xe0b5, /*0xd8-0xdf*/
- 0x86eb, 0xcecb, 0x86ec, 0xcbc3, 0xe0cd, 0xe0c6, 0xe0c2, 0x86ed, /*0xe0-0xe7*/
- 0xe0cb, 0x86ee, 0xe0ba, 0xe0bf, 0xe0c0, 0x86ef, 0x86f0, 0xe0c5, /*0xe8-0xef*/
- 0x86f1, 0x86f2, 0xe0c7, 0xe0c8, 0x86f3, 0xe0cc, 0x86f4, 0xe0bb, /*0xf0-0xf7*/
- 0x86f5, 0x86f6, 0x86f7, 0x86f8, 0x86f9, 0xcbd4, 0xe0d5, 0x86fa, /*0xf8-0xff*/
- /* 0x5600 */
- 0xe0d6, 0xe0d2, 0x86fb, 0x86fc, 0x86fd, 0x86fe, 0x8740, 0x8741, /*0x00-0x07*/
- 0xe0d0, 0xbcce, 0x8742, 0x8743, 0xe0d1, 0x8744, 0xb8c2, 0xd8c5, /*0x08-0x0f*/
- 0x8745, 0x8746, 0x8747, 0x8748, 0x8749, 0x874a, 0x874b, 0x874c, /*0x10-0x17*/
- 0xd0ea, 0x874d, 0x874e, 0xc2ef, 0x874f, 0x8750, 0xe0cf, 0xe0bd, /*0x18-0x1f*/
- 0x8751, 0x8752, 0x8753, 0xe0d4, 0xe0d3, 0x8754, 0x8755, 0xe0d7, /*0x20-0x27*/
- 0x8756, 0x8757, 0x8758, 0x8759, 0xe0dc, 0xe0d8, 0x875a, 0x875b, /*0x28-0x2f*/
- 0x875c, 0xd6f6, 0xb3b0, 0x875d, 0xd7ec, 0x875e, 0xcbbb, 0x875f, /*0x30-0x37*/
- 0x8760, 0xe0da, 0x8761, 0xcefb, 0x8762, 0x8763, 0x8764, 0xbad9, /*0x38-0x3f*/
- 0x8765, 0x8766, 0x8767, 0x8768, 0x8769, 0x876a, 0x876b, 0x876c, /*0x40-0x47*/
- 0x876d, 0x876e, 0x876f, 0x8770, 0xe0e1, 0xe0dd, 0xd2ad, 0x8771, /*0x48-0x4f*/
- 0x8772, 0x8773, 0x8774, 0x8775, 0xe0e2, 0x8776, 0x8777, 0xe0db, /*0x50-0x57*/
- 0xe0d9, 0xe0df, 0x8778, 0x8779, 0xe0e0, 0x877a, 0x877b, 0x877c, /*0x58-0x5f*/
- 0x877d, 0x877e, 0xe0de, 0x8780, 0xe0e4, 0x8781, 0x8782, 0x8783, /*0x60-0x67*/
- 0xc6f7, 0xd8ac, 0xd4eb, 0xe0e6, 0xcac9, 0x8784, 0x8785, 0x8786, /*0x68-0x6f*/
- 0x8787, 0xe0e5, 0x8788, 0x8789, 0x878a, 0x878b, 0xb8c1, 0x878c, /*0x70-0x77*/
- 0x878d, 0x878e, 0x878f, 0xe0e7, 0xe0e8, 0x8790, 0x8791, 0x8792, /*0x78-0x7f*/
- 0x8793, 0x8794, 0x8795, 0x8796, 0x8797, 0xe0e9, 0xe0e3, 0x8798, /*0x80-0x87*/
- 0x8799, 0x879a, 0x879b, 0x879c, 0x879d, 0x879e, 0xbabf, 0xcce7, /*0x88-0x8f*/
- 0x879f, 0x87a0, 0x87a1, 0xe0ea, 0x87a2, 0x87a3, 0x87a4, 0x87a5, /*0x90-0x97*/
- 0x87a6, 0x87a7, 0x87a8, 0x87a9, 0x87aa, 0x87ab, 0x87ac, 0x87ad, /*0x98-0x9f*/
- 0x87ae, 0x87af, 0x87b0, 0xcff9, 0x87b1, 0x87b2, 0x87b3, 0x87b4, /*0xa0-0xa7*/
- 0x87b5, 0x87b6, 0x87b7, 0x87b8, 0x87b9, 0x87ba, 0x87bb, 0xe0eb, /*0xa8-0xaf*/
- 0x87bc, 0x87bd, 0x87be, 0x87bf, 0x87c0, 0x87c1, 0x87c2, 0xc8c2, /*0xb0-0xb7*/
- 0x87c3, 0x87c4, 0x87c5, 0x87c6, 0xbdc0, 0x87c7, 0x87c8, 0x87c9, /*0xb8-0xbf*/
- 0x87ca, 0x87cb, 0x87cc, 0x87cd, 0x87ce, 0x87cf, 0x87d0, 0x87d1, /*0xc0-0xc7*/
- 0x87d2, 0x87d3, 0xc4d2, 0x87d4, 0x87d5, 0x87d6, 0x87d7, 0x87d8, /*0xc8-0xcf*/
- 0x87d9, 0x87da, 0x87db, 0x87dc, 0xe0ec, 0x87dd, 0x87de, 0xe0ed, /*0xd0-0xd7*/
- 0x87df, 0x87e0, 0xc7f4, 0xcbc4, 0x87e1, 0xe0ee, 0xbbd8, 0xd8b6, /*0xd8-0xdf*/
- 0xd2f2, 0xe0ef, 0xcdc5, 0x87e2, 0xb6da, 0x87e3, 0x87e4, 0x87e5, /*0xe0-0xe7*/
- 0x87e6, 0x87e7, 0x87e8, 0xe0f1, 0x87e9, 0xd4b0, 0x87ea, 0x87eb, /*0xe8-0xef*/
- 0xc0a7, 0xb4d1, 0x87ec, 0x87ed, 0xcea7, 0xe0f0, 0x87ee, 0x87ef, /*0xf0-0xf7*/
- 0x87f0, 0xe0f2, 0xb9cc, 0x87f1, 0x87f2, 0xb9fa, 0xcdbc, 0xe0f3, /*0xf8-0xff*/
- /* 0x5700 */
- 0x87f3, 0x87f4, 0x87f5, 0xc6d4, 0xe0f4, 0x87f6, 0xd4b2, 0x87f7, /*0x00-0x07*/
- 0xc8a6, 0xe0f6, 0xe0f5, 0x87f8, 0x87f9, 0x87fa, 0x87fb, 0x87fc, /*0x08-0x0f*/
- 0x87fd, 0x87fe, 0x8840, 0x8841, 0x8842, 0x8843, 0x8844, 0x8845, /*0x10-0x17*/
- 0x8846, 0x8847, 0x8848, 0x8849, 0xe0f7, 0x884a, 0x884b, 0xcdc1, /*0x18-0x1f*/
- 0x884c, 0x884d, 0x884e, 0xcaa5, 0x884f, 0x8850, 0x8851, 0x8852, /*0x20-0x27*/
- 0xd4da, 0xdbd7, 0xdbd9, 0x8853, 0xdbd8, 0xb9e7, 0xdbdc, 0xdbdd, /*0x28-0x2f*/
- 0xb5d8, 0x8854, 0x8855, 0xdbda, 0x8856, 0x8857, 0x8858, 0x8859, /*0x30-0x37*/
- 0x885a, 0xdbdb, 0xb3a1, 0xdbdf, 0x885b, 0x885c, 0xbbf8, 0x885d, /*0x38-0x3f*/
- 0xd6b7, 0x885e, 0xdbe0, 0x885f, 0x8860, 0x8861, 0x8862, 0xbef9, /*0x40-0x47*/
- 0x8863, 0x8864, 0xb7bb, 0x8865, 0xdbd0, 0xccae, 0xbfb2, 0xbbb5, /*0x48-0x4f*/
- 0xd7f8, 0xbfd3, 0x8866, 0x8867, 0x8868, 0x8869, 0x886a, 0xbfe9, /*0x50-0x57*/
- 0x886b, 0x886c, 0xbce1, 0xccb3, 0xdbde, 0xb0d3, 0xceeb, 0xb7d8, /*0x58-0x5f*/
- 0xd7b9, 0xc6c2, 0x886d, 0x886e, 0xc0a4, 0x886f, 0xccb9, 0x8870, /*0x60-0x67*/
- 0xdbe7, 0xdbe1, 0xc6ba, 0xdbe3, 0x8871, 0xdbe8, 0x8872, 0xc5f7, /*0x68-0x6f*/
- 0x8873, 0x8874, 0x8875, 0xdbea, 0x8876, 0x8877, 0xdbe9, 0xbfc0, /*0x70-0x77*/
- 0x8878, 0x8879, 0x887a, 0xdbe6, 0xdbe5, 0x887b, 0x887c, 0x887d, /*0x78-0x7f*/
- 0x887e, 0x8880, 0xb4b9, 0xc0ac, 0xc2a2, 0xdbe2, 0xdbe4, 0x8881, /*0x80-0x87*/
- 0x8882, 0x8883, 0x8884, 0xd0cd, 0xdbed, 0x8885, 0x8886, 0x8887, /*0x88-0x8f*/
- 0x8888, 0x8889, 0xc0dd, 0xdbf2, 0x888a, 0x888b, 0x888c, 0x888d, /*0x90-0x97*/
- 0x888e, 0x888f, 0x8890, 0xb6e2, 0x8891, 0x8892, 0x8893, 0x8894, /*0x98-0x9f*/
- 0xdbf3, 0xdbd2, 0xb9b8, 0xd4ab, 0xdbec, 0x8895, 0xbfd1, 0xdbf0, /*0xa0-0xa7*/
- 0x8896, 0xdbd1, 0x8897, 0xb5e6, 0x8898, 0xdbeb, 0xbfe5, 0x8899, /*0xa8-0xaf*/
- 0x889a, 0x889b, 0xdbee, 0x889c, 0xdbf1, 0x889d, 0x889e, 0x889f, /*0xb0-0xb7*/
- 0xdbf9, 0x88a0, 0x88a1, 0x88a2, 0x88a3, 0x88a4, 0x88a5, 0x88a6, /*0xb8-0xbf*/
- 0x88a7, 0x88a8, 0xb9a1, 0xb0a3, 0x88a9, 0x88aa, 0x88ab, 0x88ac, /*0xc0-0xc7*/
- 0x88ad, 0x88ae, 0x88af, 0xc2f1, 0x88b0, 0x88b1, 0xb3c7, 0xdbef, /*0xc8-0xcf*/
- 0x88b2, 0x88b3, 0xdbf8, 0x88b4, 0xc6d2, 0xdbf4, 0x88b5, 0x88b6, /*0xd0-0xd7*/
- 0xdbf5, 0xdbf7, 0xdbf6, 0x88b7, 0x88b8, 0xdbfe, 0x88b9, 0xd3f2, /*0xd8-0xdf*/
- 0xb2ba, 0x88ba, 0x88bb, 0x88bc, 0xdbfd, 0x88bd, 0x88be, 0x88bf, /*0xe0-0xe7*/
- 0x88c0, 0x88c1, 0x88c2, 0x88c3, 0x88c4, 0xdca4, 0x88c5, 0xdbfb, /*0xe8-0xef*/
- 0x88c6, 0x88c7, 0x88c8, 0x88c9, 0xdbfa, 0x88ca, 0x88cb, 0x88cc, /*0xf0-0xf7*/
- 0xdbfc, 0xc5e0, 0xbbf9, 0x88cd, 0x88ce, 0xdca3, 0x88cf, 0x88d0, /*0xf8-0xff*/
- /* 0x5800 */
- 0xdca5, 0x88d1, 0xccc3, 0x88d2, 0x88d3, 0x88d4, 0xb6d1, 0xddc0, /*0x00-0x07*/
- 0x88d5, 0x88d6, 0x88d7, 0xdca1, 0x88d8, 0xdca2, 0x88d9, 0x88da, /*0x08-0x0f*/
- 0x88db, 0xc7b5, 0x88dc, 0x88dd, 0x88de, 0xb6e9, 0x88df, 0x88e0, /*0x10-0x17*/
- 0x88e1, 0xdca7, 0x88e2, 0x88e3, 0x88e4, 0x88e5, 0xdca6, 0x88e6, /*0x18-0x1f*/
- 0xdca9, 0xb1a4, 0x88e7, 0x88e8, 0xb5cc, 0x88e9, 0x88ea, 0x88eb, /*0x20-0x27*/
- 0x88ec, 0x88ed, 0xbfb0, 0x88ee, 0x88ef, 0x88f0, 0x88f1, 0x88f2, /*0x28-0x2f*/
- 0xd1df, 0x88f3, 0x88f4, 0x88f5, 0x88f6, 0xb6c2, 0x88f7, 0x88f8, /*0x30-0x37*/
- 0x88f9, 0x88fa, 0x88fb, 0x88fc, 0x88fd, 0x88fe, 0x8940, 0x8941, /*0x38-0x3f*/
- 0x8942, 0x8943, 0x8944, 0x8945, 0xdca8, 0x8946, 0x8947, 0x8948, /*0x40-0x47*/
- 0x8949, 0x894a, 0x894b, 0x894c, 0xcbfa, 0xebf3, 0x894d, 0x894e, /*0x48-0x4f*/
- 0x894f, 0xcbdc, 0x8950, 0x8951, 0xcbfe, 0x8952, 0x8953, 0x8954, /*0x50-0x57*/
- 0xccc1, 0x8955, 0x8956, 0x8957, 0x8958, 0x8959, 0xc8fb, 0x895a, /*0x58-0x5f*/
- 0x895b, 0x895c, 0x895d, 0x895e, 0x895f, 0xdcaa, 0x8960, 0x8961, /*0x60-0x67*/
- 0x8962, 0x8963, 0x8964, 0xccee, 0xdcab, 0x8965, 0x8966, 0x8967, /*0x68-0x6f*/
- 0x8968, 0x8969, 0x896a, 0x896b, 0x896c, 0x896d, 0x896e, 0x896f, /*0x70-0x77*/
- 0x8970, 0x8971, 0x8972, 0x8973, 0x8974, 0x8975, 0xdbd3, 0x8976, /*0x78-0x7f*/
- 0xdcaf, 0xdcac, 0x8977, 0xbeb3, 0x8978, 0xcafb, 0x8979, 0x897a, /*0x80-0x87*/
- 0x897b, 0xdcad, 0x897c, 0x897d, 0x897e, 0x8980, 0x8981, 0x8982, /*0x88-0x8f*/
- 0x8983, 0x8984, 0xc9ca, 0xc4b9, 0x8985, 0x8986, 0x8987, 0x8988, /*0x90-0x97*/
- 0x8989, 0xc7bd, 0xdcae, 0x898a, 0x898b, 0x898c, 0xd4f6, 0xd0e6, /*0x98-0x9f*/
- 0x898d, 0x898e, 0x898f, 0x8990, 0x8991, 0x8992, 0x8993, 0x8994, /*0xa0-0xa7*/
- 0xc4ab, 0xb6d5, 0x8995, 0x8996, 0x8997, 0x8998, 0x8999, 0x899a, /*0xa8-0xaf*/
- 0x899b, 0x899c, 0x899d, 0x899e, 0x899f, 0x89a0, 0x89a1, 0x89a2, /*0xb0-0xb7*/
- 0x89a3, 0x89a4, 0x89a5, 0x89a6, 0xdbd4, 0x89a7, 0x89a8, 0x89a9, /*0xb8-0xbf*/
- 0x89aa, 0xb1da, 0x89ab, 0x89ac, 0x89ad, 0xdbd5, 0x89ae, 0x89af, /*0xc0-0xc7*/
- 0x89b0, 0x89b1, 0x89b2, 0x89b3, 0x89b4, 0x89b5, 0x89b6, 0x89b7, /*0xc8-0xcf*/
- 0x89b8, 0xdbd6, 0x89b9, 0x89ba, 0x89bb, 0xbabe, 0x89bc, 0x89bd, /*0xd0-0xd7*/
- 0x89be, 0x89bf, 0x89c0, 0x89c1, 0x89c2, 0x89c3, 0x89c4, 0x89c5, /*0xd8-0xdf*/
- 0x89c6, 0x89c7, 0x89c8, 0x89c9, 0xc8c0, 0x89ca, 0x89cb, 0x89cc, /*0xe0-0xe7*/
- 0x89cd, 0x89ce, 0x89cf, 0xcabf, 0xc8c9, 0x89d0, 0xd7b3, 0x89d1, /*0xe8-0xef*/
- 0xc9f9, 0x89d2, 0x89d3, 0xbfc7, 0x89d4, 0x89d5, 0xbaf8, 0x89d6, /*0xf0-0xf7*/
- 0x89d7, 0xd2bc, 0x89d8, 0x89d9, 0x89da, 0x89db, 0x89dc, 0x89dd, /*0xf8-0xff*/
- /* 0x5900 */
- 0x89de, 0x89df, 0xe2ba, 0x89e0, 0xb4a6, 0x89e1, 0x89e2, 0xb1b8, /*0x00-0x07*/
- 0x89e3, 0x89e4, 0x89e5, 0x89e6, 0x89e7, 0xb8b4, 0x89e8, 0xcfc4, /*0x08-0x0f*/
- 0x89e9, 0x89ea, 0x89eb, 0x89ec, 0xd9e7, 0xcfa6, 0xcde2, 0x89ed, /*0x10-0x17*/
- 0x89ee, 0xd9ed, 0xb6e0, 0x89ef, 0xd2b9, 0x89f0, 0x89f1, 0xb9bb, /*0x18-0x1f*/
- 0x89f2, 0x89f3, 0x89f4, 0x89f5, 0xe2b9, 0xe2b7, 0x89f6, 0xb4f3, /*0x20-0x27*/
- 0x89f7, 0xccec, 0xccab, 0xb7f2, 0x89f8, 0xd8b2, 0xd1eb, 0xbabb, /*0x28-0x2f*/
- 0x89f9, 0xcaa7, 0x89fa, 0x89fb, 0xcdb7, 0x89fc, 0x89fd, 0xd2c4, /*0x30-0x37*/
- 0xbfe4, 0xbcd0, 0xb6e1, 0x89fe, 0xdec5, 0x8a40, 0x8a41, 0x8a42, /*0x38-0x3f*/
- 0x8a43, 0xdec6, 0xdbbc, 0x8a44, 0xd1d9, 0x8a45, 0x8a46, 0xc6e6, /*0x40-0x47*/
- 0xc4ce, 0xb7ee, 0x8a47, 0xb7dc, 0x8a48, 0x8a49, 0xbffc, 0xd7e0, /*0x48-0x4f*/
- 0x8a4a, 0xc6f5, 0x8a4b, 0x8a4c, 0xb1bc, 0xdec8, 0xbdb1, 0xccd7, /*0x50-0x57*/
- 0xdeca, 0x8a4d, 0xdec9, 0x8a4e, 0x8a4f, 0x8a50, 0x8a51, 0x8a52, /*0x58-0x5f*/
- 0xb5ec, 0x8a53, 0xc9dd, 0x8a54, 0x8a55, 0xb0c2, 0x8a56, 0x8a57, /*0x60-0x67*/
- 0x8a58, 0x8a59, 0x8a5a, 0x8a5b, 0x8a5c, 0x8a5d, 0x8a5e, 0x8a5f, /*0x68-0x6f*/
- 0x8a60, 0x8a61, 0x8a62, 0xc5ae, 0xc5ab, 0x8a63, 0xc4cc, 0x8a64, /*0x70-0x77*/
- 0xbce9, 0xcbfd, 0x8a65, 0x8a66, 0x8a67, 0xbac3, 0x8a68, 0x8a69, /*0x78-0x7f*/
- 0x8a6a, 0xe5f9, 0xc8e7, 0xe5fa, 0xcdfd, 0x8a6b, 0xd7b1, 0xb8be, /*0x80-0x87*/
- 0xc2e8, 0x8a6c, 0xc8d1, 0x8a6d, 0x8a6e, 0xe5fb, 0x8a6f, 0x8a70, /*0x88-0x8f*/
- 0x8a71, 0x8a72, 0xb6ca, 0xbccb, 0x8a73, 0x8a74, 0xd1fd, 0xe6a1, /*0x90-0x97*/
- 0x8a75, 0xc3ee, 0x8a76, 0x8a77, 0x8a78, 0x8a79, 0xe6a4, 0x8a7a, /*0x98-0x9f*/
- 0x8a7b, 0x8a7c, 0x8a7d, 0xe5fe, 0xe6a5, 0xcdd7, 0x8a7e, 0x8a80, /*0xa0-0xa7*/
- 0xb7c1, 0xe5fc, 0xe5fd, 0xe6a3, 0x8a81, 0x8a82, 0xc4dd, 0xe6a8, /*0xa8-0xaf*/
- 0x8a83, 0x8a84, 0xe6a7, 0x8a85, 0x8a86, 0x8a87, 0x8a88, 0x8a89, /*0xb0-0xb7*/
- 0x8a8a, 0xc3c3, 0x8a8b, 0xc6de, 0x8a8c, 0x8a8d, 0xe6aa, 0x8a8e, /*0xb8-0xbf*/
- 0x8a8f, 0x8a90, 0x8a91, 0x8a92, 0x8a93, 0x8a94, 0xc4b7, 0x8a95, /*0xc0-0xc7*/
- 0x8a96, 0x8a97, 0xe6a2, 0xcabc, 0x8a98, 0x8a99, 0x8a9a, 0x8a9b, /*0xc8-0xcf*/
- 0xbde3, 0xb9c3, 0xe6a6, 0xd0d5, 0xceaf, 0x8a9c, 0x8a9d, 0xe6a9, /*0xd0-0xd7*/
- 0xe6b0, 0x8a9e, 0xd2a6, 0x8a9f, 0xbdaa, 0xe6ad, 0x8aa0, 0x8aa1, /*0xd8-0xdf*/
- 0x8aa2, 0x8aa3, 0x8aa4, 0xe6af, 0x8aa5, 0xc0d1, 0x8aa6, 0x8aa7, /*0xe0-0xe7*/
- 0xd2cc, 0x8aa8, 0x8aa9, 0x8aaa, 0xbca7, 0x8aab, 0x8aac, 0x8aad, /*0xe8-0xef*/
- 0x8aae, 0x8aaf, 0x8ab0, 0x8ab1, 0x8ab2, 0x8ab3, 0x8ab4, 0x8ab5, /*0xf0-0xf7*/
- 0x8ab6, 0xe6b1, 0x8ab7, 0xd2f6, 0x8ab8, 0x8ab9, 0x8aba, 0xd7cb, /*0xf8-0xff*/
- /* 0x5a00 */
- 0x8abb, 0xcdfe, 0x8abc, 0xcdde, 0xc2a6, 0xe6ab, 0xe6ac, 0xbdbf, /*0x00-0x07*/
- 0xe6ae, 0xe6b3, 0x8abd, 0x8abe, 0xe6b2, 0x8abf, 0x8ac0, 0x8ac1, /*0x08-0x0f*/
- 0x8ac2, 0xe6b6, 0x8ac3, 0xe6b8, 0x8ac4, 0x8ac5, 0x8ac6, 0x8ac7, /*0x10-0x17*/
- 0xc4ef, 0x8ac8, 0x8ac9, 0x8aca, 0xc4c8, 0x8acb, 0x8acc, 0xbeea, /*0x18-0x1f*/
- 0xc9ef, 0x8acd, 0x8ace, 0xe6b7, 0x8acf, 0xb6f0, 0x8ad0, 0x8ad1, /*0x20-0x27*/
- 0x8ad2, 0xc3e4, 0x8ad3, 0x8ad4, 0x8ad5, 0x8ad6, 0x8ad7, 0x8ad8, /*0x28-0x2f*/
- 0x8ad9, 0xd3e9, 0xe6b4, 0x8ada, 0xe6b5, 0x8adb, 0xc8a2, 0x8adc, /*0x30-0x37*/
- 0x8add, 0x8ade, 0x8adf, 0x8ae0, 0xe6bd, 0x8ae1, 0x8ae2, 0x8ae3, /*0x38-0x3f*/
- 0xe6b9, 0x8ae4, 0x8ae5, 0x8ae6, 0x8ae7, 0x8ae8, 0xc6c5, 0x8ae9, /*0x40-0x47*/
- 0x8aea, 0xcdf1, 0xe6bb, 0x8aeb, 0x8aec, 0x8aed, 0x8aee, 0x8aef, /*0x48-0x4f*/
- 0x8af0, 0x8af1, 0x8af2, 0x8af3, 0x8af4, 0xe6bc, 0x8af5, 0x8af6, /*0x50-0x57*/
- 0x8af7, 0x8af8, 0xbbe9, 0x8af9, 0x8afa, 0x8afb, 0x8afc, 0x8afd, /*0x58-0x5f*/
- 0x8afe, 0x8b40, 0xe6be, 0x8b41, 0x8b42, 0x8b43, 0x8b44, 0xe6ba, /*0x60-0x67*/
- 0x8b45, 0x8b46, 0xc0b7, 0x8b47, 0x8b48, 0x8b49, 0x8b4a, 0x8b4b, /*0x68-0x6f*/
- 0x8b4c, 0x8b4d, 0x8b4e, 0x8b4f, 0xd3a4, 0xe6bf, 0xc9f4, 0xe6c3, /*0x70-0x77*/
- 0x8b50, 0x8b51, 0xe6c4, 0x8b52, 0x8b53, 0x8b54, 0x8b55, 0xd0f6, /*0x78-0x7f*/
- 0x8b56, 0x8b57, 0x8b58, 0x8b59, 0x8b5a, 0x8b5b, 0x8b5c, 0x8b5d, /*0x80-0x87*/
- 0x8b5e, 0x8b5f, 0x8b60, 0x8b61, 0x8b62, 0x8b63, 0x8b64, 0x8b65, /*0x88-0x8f*/
- 0x8b66, 0x8b67, 0xc3bd, 0x8b68, 0x8b69, 0x8b6a, 0x8b6b, 0x8b6c, /*0x90-0x97*/
- 0x8b6d, 0x8b6e, 0xc3c4, 0xe6c2, 0x8b6f, 0x8b70, 0x8b71, 0x8b72, /*0x98-0x9f*/
- 0x8b73, 0x8b74, 0x8b75, 0x8b76, 0x8b77, 0x8b78, 0x8b79, 0x8b7a, /*0xa0-0xa7*/
- 0x8b7b, 0x8b7c, 0xe6c1, 0x8b7d, 0x8b7e, 0x8b80, 0x8b81, 0x8b82, /*0xa8-0xaf*/
- 0x8b83, 0x8b84, 0xe6c7, 0xcfb1, 0x8b85, 0xebf4, 0x8b86, 0x8b87, /*0xb0-0xb7*/
- 0xe6ca, 0x8b88, 0x8b89, 0x8b8a, 0x8b8b, 0x8b8c, 0xe6c5, 0x8b8d, /*0xb8-0xbf*/
- 0x8b8e, 0xbcde, 0xc9a9, 0x8b8f, 0x8b90, 0x8b91, 0x8b92, 0x8b93, /*0xc0-0xc7*/
- 0x8b94, 0xbcb5, 0x8b95, 0x8b96, 0xcfd3, 0x8b97, 0x8b98, 0x8b99, /*0xc8-0xcf*/
- 0x8b9a, 0x8b9b, 0xe6c8, 0x8b9c, 0xe6c9, 0x8b9d, 0xe6ce, 0x8b9e, /*0xd0-0xd7*/
- 0xe6d0, 0x8b9f, 0x8ba0, 0x8ba1, 0xe6d1, 0x8ba2, 0x8ba3, 0x8ba4, /*0xd8-0xdf*/
- 0xe6cb, 0xb5d5, 0x8ba5, 0xe6cc, 0x8ba6, 0x8ba7, 0xe6cf, 0x8ba8, /*0xe0-0xe7*/
- 0x8ba9, 0xc4db, 0x8baa, 0xe6c6, 0x8bab, 0x8bac, 0x8bad, 0x8bae, /*0xe8-0xef*/
- 0x8baf, 0xe6cd, 0x8bb0, 0x8bb1, 0x8bb2, 0x8bb3, 0x8bb4, 0x8bb5, /*0xf0-0xf7*/
- 0x8bb6, 0x8bb7, 0x8bb8, 0x8bb9, 0x8bba, 0x8bbb, 0x8bbc, 0x8bbd, /*0xf8-0xff*/
- /* 0x5b00 */
- 0x8bbe, 0x8bbf, 0x8bc0, 0x8bc1, 0x8bc2, 0x8bc3, 0x8bc4, 0x8bc5, /*0x00-0x07*/
- 0x8bc6, 0xe6d2, 0x8bc7, 0x8bc8, 0x8bc9, 0x8bca, 0x8bcb, 0x8bcc, /*0x08-0x0f*/
- 0x8bcd, 0x8bce, 0x8bcf, 0x8bd0, 0x8bd1, 0x8bd2, 0xe6d4, 0xe6d3, /*0x10-0x17*/
- 0x8bd3, 0x8bd4, 0x8bd5, 0x8bd6, 0x8bd7, 0x8bd8, 0x8bd9, 0x8bda, /*0x18-0x1f*/
- 0x8bdb, 0x8bdc, 0x8bdd, 0x8bde, 0x8bdf, 0x8be0, 0x8be1, 0x8be2, /*0x20-0x27*/
- 0x8be3, 0x8be4, 0x8be5, 0x8be6, 0x8be7, 0x8be8, 0x8be9, 0x8bea, /*0x28-0x2f*/
- 0x8beb, 0x8bec, 0xe6d5, 0x8bed, 0xd9f8, 0x8bee, 0x8bef, 0xe6d6, /*0x30-0x37*/
- 0x8bf0, 0x8bf1, 0x8bf2, 0x8bf3, 0x8bf4, 0x8bf5, 0x8bf6, 0x8bf7, /*0x38-0x3f*/
- 0xe6d7, 0x8bf8, 0x8bf9, 0x8bfa, 0x8bfb, 0x8bfc, 0x8bfd, 0x8bfe, /*0x40-0x47*/
- 0x8c40, 0x8c41, 0x8c42, 0x8c43, 0x8c44, 0x8c45, 0x8c46, 0x8c47, /*0x48-0x4f*/
- 0xd7d3, 0xe6dd, 0x8c48, 0xe6de, 0xbfd7, 0xd4d0, 0x8c49, 0xd7d6, /*0x50-0x57*/
- 0xb4e6, 0xcbef, 0xe6da, 0xd8c3, 0xd7ce, 0xd0a2, 0x8c4a, 0xc3cf, /*0x58-0x5f*/
- 0x8c4b, 0x8c4c, 0xe6df, 0xbcbe, 0xb9c2, 0xe6db, 0xd1a7, 0x8c4d, /*0x60-0x67*/
- 0x8c4e, 0xbaa2, 0xc2cf, 0x8c4f, 0xd8ab, 0x8c50, 0x8c51, 0x8c52, /*0x68-0x6f*/
- 0xcaeb, 0xe5ee, 0x8c53, 0xe6dc, 0x8c54, 0xb7f5, 0x8c55, 0x8c56, /*0x70-0x77*/
- 0x8c57, 0x8c58, 0xc8e6, 0x8c59, 0x8c5a, 0xc4f5, 0x8c5b, 0x8c5c, /*0x78-0x7f*/
- 0xe5b2, 0xc4fe, 0x8c5d, 0xcbfc, 0xe5b3, 0xd5ac, 0x8c5e, 0xd3ee, /*0x80-0x87*/
- 0xcad8, 0xb0b2, 0x8c5f, 0xcbce, 0xcdea, 0x8c60, 0x8c61, 0xbaea, /*0x88-0x8f*/
- 0x8c62, 0x8c63, 0x8c64, 0xe5b5, 0x8c65, 0xe5b4, 0x8c66, 0xd7da, /*0x90-0x97*/
- 0xb9d9, 0xd6e6, 0xb6a8, 0xcdf0, 0xd2cb, 0xb1a6, 0xcab5, 0x8c67, /*0x98-0x9f*/
- 0xb3e8, 0xc9f3, 0xbfcd, 0xd0fb, 0xcad2, 0xe5b6, 0xbbc2, 0x8c68, /*0xa0-0xa7*/
- 0x8c69, 0x8c6a, 0xcfdc, 0xb9ac, 0x8c6b, 0x8c6c, 0x8c6d, 0x8c6e, /*0xa8-0xaf*/
- 0xd4d7, 0x8c6f, 0x8c70, 0xbaa6, 0xd1e7, 0xcffc, 0xbcd2, 0x8c71, /*0xb0-0xb7*/
- 0xe5b7, 0xc8dd, 0x8c72, 0x8c73, 0x8c74, 0xbfed, 0xb1f6, 0xcbde, /*0xb8-0xbf*/
- 0x8c75, 0x8c76, 0xbcc5, 0x8c77, 0xbcc4, 0xd2fa, 0xc3dc, 0xbfdc, /*0xc0-0xc7*/
- 0x8c78, 0x8c79, 0x8c7a, 0x8c7b, 0xb8bb, 0x8c7c, 0x8c7d, 0x8c7e, /*0xc8-0xcf*/
- 0xc3c2, 0x8c80, 0xbaae, 0xd4a2, 0x8c81, 0x8c82, 0x8c83, 0x8c84, /*0xd0-0xd7*/
- 0x8c85, 0x8c86, 0x8c87, 0x8c88, 0x8c89, 0xc7de, 0xc4af, 0xb2ec, /*0xd8-0xdf*/
- 0x8c8a, 0xb9d1, 0x8c8b, 0x8c8c, 0xe5bb, 0xc1c8, 0x8c8d, 0x8c8e, /*0xe0-0xe7*/
- 0xd5af, 0x8c8f, 0x8c90, 0x8c91, 0x8c92, 0x8c93, 0xe5bc, 0x8c94, /*0xe8-0xef*/
- 0xe5be, 0x8c95, 0x8c96, 0x8c97, 0x8c98, 0x8c99, 0x8c9a, 0x8c9b, /*0xf0-0xf7*/
- 0xb4e7, 0xb6d4, 0xcbc2, 0xd1b0, 0xb5bc, 0x8c9c, 0x8c9d, 0xcad9, /*0xf8-0xff*/
- /* 0x5c00 */
- 0x8c9e, 0xb7e2, 0x8c9f, 0x8ca0, 0xc9e4, 0x8ca1, 0xbdab, 0x8ca2, /*0x00-0x07*/
- 0x8ca3, 0xcebe, 0xd7f0, 0x8ca4, 0x8ca5, 0x8ca6, 0x8ca7, 0xd0a1, /*0x08-0x0f*/
- 0x8ca8, 0xc9d9, 0x8ca9, 0x8caa, 0xb6fb, 0xe6d8, 0xbce2, 0x8cab, /*0x10-0x17*/
- 0xb3be, 0x8cac, 0xc9d0, 0x8cad, 0xe6d9, 0xb3a2, 0x8cae, 0x8caf, /*0x18-0x1f*/
- 0x8cb0, 0x8cb1, 0xdecc, 0x8cb2, 0xd3c8, 0xdecd, 0x8cb3, 0xd2a2, /*0x20-0x27*/
- 0x8cb4, 0x8cb5, 0x8cb6, 0x8cb7, 0xdece, 0x8cb8, 0x8cb9, 0x8cba, /*0x28-0x2f*/
- 0x8cbb, 0xbecd, 0x8cbc, 0x8cbd, 0xdecf, 0x8cbe, 0x8cbf, 0x8cc0, /*0x30-0x37*/
- 0xcaac, 0xd2fc, 0xb3df, 0xe5ea, 0xc4e1, 0xbea1, 0xceb2, 0xc4f2, /*0x38-0x3f*/
- 0xbed6, 0xc6a8, 0xb2e3, 0x8cc1, 0x8cc2, 0xbed3, 0x8cc3, 0x8cc4, /*0x40-0x47*/
- 0xc7fc, 0xcceb, 0xbdec, 0xcedd, 0x8cc5, 0x8cc6, 0xcaba, 0xc6c1, /*0x48-0x4f*/
- 0xe5ec, 0xd0bc, 0x8cc7, 0x8cc8, 0x8cc9, 0xd5b9, 0x8cca, 0x8ccb, /*0x50-0x57*/
- 0x8ccc, 0xe5ed, 0x8ccd, 0x8cce, 0x8ccf, 0x8cd0, 0xcaf4, 0x8cd1, /*0x58-0x5f*/
- 0xcdc0, 0xc2c5, 0x8cd2, 0xe5ef, 0x8cd3, 0xc2c4, 0xe5f0, 0x8cd4, /*0x60-0x67*/
- 0x8cd5, 0x8cd6, 0x8cd7, 0x8cd8, 0x8cd9, 0x8cda, 0xe5f8, 0xcdcd, /*0x68-0x6f*/
- 0x8cdb, 0xc9bd, 0x8cdc, 0x8cdd, 0x8cde, 0x8cdf, 0x8ce0, 0x8ce1, /*0x70-0x77*/
- 0x8ce2, 0xd2d9, 0xe1a8, 0x8ce3, 0x8ce4, 0x8ce5, 0x8ce6, 0xd3ec, /*0x78-0x7f*/
- 0x8ce7, 0xcbea, 0xc6f1, 0x8ce8, 0x8ce9, 0x8cea, 0x8ceb, 0x8cec, /*0x80-0x87*/
- 0xe1ac, 0x8ced, 0x8cee, 0x8cef, 0xe1a7, 0xe1a9, 0x8cf0, 0x8cf1, /*0x88-0x8f*/
- 0xe1aa, 0xe1af, 0x8cf2, 0x8cf3, 0xb2ed, 0x8cf4, 0xe1ab, 0xb8da, /*0x90-0x97*/
- 0xe1ad, 0xe1ae, 0xe1b0, 0xb5ba, 0xe1b1, 0x8cf5, 0x8cf6, 0x8cf7, /*0x98-0x9f*/
- 0x8cf8, 0x8cf9, 0xe1b3, 0xe1b8, 0x8cfa, 0x8cfb, 0x8cfc, 0x8cfd, /*0xa0-0xa7*/
- 0x8cfe, 0xd1d2, 0x8d40, 0xe1b6, 0xe1b5, 0xc1eb, 0x8d41, 0x8d42, /*0xa8-0xaf*/
- 0x8d43, 0xe1b7, 0x8d44, 0xd4c0, 0x8d45, 0xe1b2, 0x8d46, 0xe1ba, /*0xb0-0xb7*/
- 0xb0b6, 0x8d47, 0x8d48, 0x8d49, 0x8d4a, 0xe1b4, 0x8d4b, 0xbff9, /*0xb8-0xbf*/
- 0x8d4c, 0xe1b9, 0x8d4d, 0x8d4e, 0xe1bb, 0x8d4f, 0x8d50, 0x8d51, /*0xc0-0xc7*/
- 0x8d52, 0x8d53, 0x8d54, 0xe1be, 0x8d55, 0x8d56, 0x8d57, 0x8d58, /*0xc8-0xcf*/
- 0x8d59, 0x8d5a, 0xe1bc, 0x8d5b, 0x8d5c, 0x8d5d, 0x8d5e, 0x8d5f, /*0xd0-0xd7*/
- 0x8d60, 0xd6c5, 0x8d61, 0x8d62, 0x8d63, 0x8d64, 0x8d65, 0x8d66, /*0xd8-0xdf*/
- 0x8d67, 0xcfbf, 0x8d68, 0x8d69, 0xe1bd, 0xe1bf, 0xc2cd, 0x8d6a, /*0xe0-0xe7*/
- 0xb6eb, 0x8d6b, 0xd3f8, 0x8d6c, 0x8d6d, 0xc7cd, 0x8d6e, 0x8d6f, /*0xe8-0xef*/
- 0xb7e5, 0x8d70, 0x8d71, 0x8d72, 0x8d73, 0x8d74, 0x8d75, 0x8d76, /*0xf0-0xf7*/
- 0x8d77, 0x8d78, 0x8d79, 0xbefe, 0x8d7a, 0x8d7b, 0x8d7c, 0x8d7d, /*0xf8-0xff*/
- /* 0x5d00 */
- 0x8d7e, 0x8d80, 0xe1c0, 0xe1c1, 0x8d81, 0x8d82, 0xe1c7, 0xb3e7, /*0x00-0x07*/
- 0x8d83, 0x8d84, 0x8d85, 0x8d86, 0x8d87, 0x8d88, 0xc6e9, 0x8d89, /*0x08-0x0f*/
- 0x8d8a, 0x8d8b, 0x8d8c, 0x8d8d, 0xb4de, 0x8d8e, 0xd1c2, 0x8d8f, /*0x10-0x17*/
- 0x8d90, 0x8d91, 0x8d92, 0xe1c8, 0x8d93, 0x8d94, 0xe1c6, 0x8d95, /*0x18-0x1f*/
- 0x8d96, 0x8d97, 0x8d98, 0x8d99, 0xe1c5, 0x8d9a, 0xe1c3, 0xe1c2, /*0x20-0x27*/
- 0x8d9b, 0xb1c0, 0x8d9c, 0x8d9d, 0x8d9e, 0xd5b8, 0xe1c4, 0x8d9f, /*0x28-0x2f*/
- 0x8da0, 0x8da1, 0x8da2, 0x8da3, 0xe1cb, 0x8da4, 0x8da5, 0x8da6, /*0x30-0x37*/
- 0x8da7, 0x8da8, 0x8da9, 0x8daa, 0x8dab, 0xe1cc, 0xe1ca, 0x8dac, /*0x38-0x3f*/
- 0x8dad, 0x8dae, 0x8daf, 0x8db0, 0x8db1, 0x8db2, 0x8db3, 0xeffa, /*0x40-0x47*/
- 0x8db4, 0x8db5, 0xe1d3, 0xe1d2, 0xc7b6, 0x8db6, 0x8db7, 0x8db8, /*0x48-0x4f*/
- 0x8db9, 0x8dba, 0x8dbb, 0x8dbc, 0x8dbd, 0x8dbe, 0x8dbf, 0x8dc0, /*0x50-0x57*/
- 0xe1c9, 0x8dc1, 0x8dc2, 0xe1ce, 0x8dc3, 0xe1d0, 0x8dc4, 0x8dc5, /*0x58-0x5f*/
- 0x8dc6, 0x8dc7, 0x8dc8, 0x8dc9, 0x8dca, 0x8dcb, 0x8dcc, 0x8dcd, /*0x60-0x67*/
- 0x8dce, 0xe1d4, 0x8dcf, 0xe1d1, 0xe1cd, 0x8dd0, 0x8dd1, 0xe1cf, /*0x68-0x6f*/
- 0x8dd2, 0x8dd3, 0x8dd4, 0x8dd5, 0xe1d5, 0x8dd6, 0x8dd7, 0x8dd8, /*0x70-0x77*/
- 0x8dd9, 0x8dda, 0x8ddb, 0x8ddc, 0x8ddd, 0x8dde, 0x8ddf, 0x8de0, /*0x78-0x7f*/
- 0x8de1, 0x8de2, 0xe1d6, 0x8de3, 0x8de4, 0x8de5, 0x8de6, 0x8de7, /*0x80-0x87*/
- 0x8de8, 0x8de9, 0x8dea, 0x8deb, 0x8dec, 0x8ded, 0x8dee, 0x8def, /*0x88-0x8f*/
- 0x8df0, 0x8df1, 0x8df2, 0x8df3, 0x8df4, 0x8df5, 0x8df6, 0x8df7, /*0x90-0x97*/
- 0x8df8, 0xe1d7, 0x8df9, 0x8dfa, 0x8dfb, 0xe1d8, 0x8dfc, 0x8dfd, /*0x98-0x9f*/
- 0x8dfe, 0x8e40, 0x8e41, 0x8e42, 0x8e43, 0x8e44, 0x8e45, 0x8e46, /*0xa0-0xa7*/
- 0x8e47, 0x8e48, 0x8e49, 0x8e4a, 0x8e4b, 0x8e4c, 0x8e4d, 0x8e4e, /*0xa8-0xaf*/
- 0x8e4f, 0x8e50, 0x8e51, 0x8e52, 0x8e53, 0x8e54, 0x8e55, 0xe1da, /*0xb0-0xb7*/
- 0x8e56, 0x8e57, 0x8e58, 0x8e59, 0x8e5a, 0x8e5b, 0x8e5c, 0x8e5d, /*0xb8-0xbf*/
- 0x8e5e, 0x8e5f, 0x8e60, 0x8e61, 0x8e62, 0xe1db, 0x8e63, 0x8e64, /*0xc0-0xc7*/
- 0x8e65, 0x8e66, 0x8e67, 0x8e68, 0x8e69, 0xcea1, 0x8e6a, 0x8e6b, /*0xc8-0xcf*/
- 0x8e6c, 0x8e6d, 0x8e6e, 0x8e6f, 0x8e70, 0x8e71, 0x8e72, 0x8e73, /*0xd0-0xd7*/
- 0x8e74, 0x8e75, 0x8e76, 0xe7dd, 0x8e77, 0xb4a8, 0xd6dd, 0x8e78, /*0xd8-0xdf*/
- 0x8e79, 0xd1b2, 0xb3b2, 0x8e7a, 0x8e7b, 0xb9a4, 0xd7f3, 0xc7c9, /*0xe0-0xe7*/
- 0xbede, 0xb9ae, 0x8e7c, 0xced7, 0x8e7d, 0x8e7e, 0xb2ee, 0xdbcf, /*0xe8-0xef*/
- 0x8e80, 0xbcba, 0xd2d1, 0xcbc8, 0xb0cd, 0x8e81, 0x8e82, 0xcfef, /*0xf0-0xf7*/
- 0x8e83, 0x8e84, 0x8e85, 0x8e86, 0x8e87, 0xd9e3, 0xbded, 0x8e88, /*0xf8-0xff*/
- /* 0x5e00 */
- 0x8e89, 0xb1d2, 0xcad0, 0xb2bc, 0x8e8a, 0xcba7, 0xb7ab, 0x8e8b, /*0x00-0x07*/
- 0xcaa6, 0x8e8c, 0x8e8d, 0x8e8e, 0xcfa3, 0x8e8f, 0x8e90, 0xe0f8, /*0x08-0x0f*/
- 0xd5ca, 0xe0fb, 0x8e91, 0x8e92, 0xe0fa, 0xc5c1, 0xccfb, 0x8e93, /*0x10-0x17*/
- 0xc1b1, 0xe0f9, 0xd6e3, 0xb2af, 0xd6c4, 0xb5db, 0x8e94, 0x8e95, /*0x18-0x1f*/
- 0x8e96, 0x8e97, 0x8e98, 0x8e99, 0x8e9a, 0x8e9b, 0xb4f8, 0xd6a1, /*0x20-0x27*/
- 0x8e9c, 0x8e9d, 0x8e9e, 0x8e9f, 0x8ea0, 0xcfaf, 0xb0ef, 0x8ea1, /*0x28-0x2f*/
- 0x8ea2, 0xe0fc, 0x8ea3, 0x8ea4, 0x8ea5, 0x8ea6, 0x8ea7, 0xe1a1, /*0x30-0x37*/
- 0xb3a3, 0x8ea8, 0x8ea9, 0xe0fd, 0xe0fe, 0xc3b1, 0x8eaa, 0x8eab, /*0x38-0x3f*/
- 0x8eac, 0x8ead, 0xc3dd, 0x8eae, 0xe1a2, 0xb7f9, 0x8eaf, 0x8eb0, /*0x40-0x47*/
- 0x8eb1, 0x8eb2, 0x8eb3, 0x8eb4, 0xbbcf, 0x8eb5, 0x8eb6, 0x8eb7, /*0x48-0x4f*/
- 0x8eb8, 0x8eb9, 0x8eba, 0x8ebb, 0xe1a3, 0xc4bb, 0x8ebc, 0x8ebd, /*0x50-0x57*/
- 0x8ebe, 0x8ebf, 0x8ec0, 0xe1a4, 0x8ec1, 0x8ec2, 0xe1a5, 0x8ec3, /*0x58-0x5f*/
- 0x8ec4, 0xe1a6, 0xb4b1, 0x8ec5, 0x8ec6, 0x8ec7, 0x8ec8, 0x8ec9, /*0x60-0x67*/
- 0x8eca, 0x8ecb, 0x8ecc, 0x8ecd, 0x8ece, 0x8ecf, 0x8ed0, 0x8ed1, /*0x68-0x6f*/
- 0x8ed2, 0x8ed3, 0xb8c9, 0xc6bd, 0xc4ea, 0x8ed4, 0xb2a2, 0x8ed5, /*0x70-0x77*/
- 0xd0d2, 0x8ed6, 0xe7db, 0xbbc3, 0xd3d7, 0xd3c4, 0x8ed7, 0xb9e3, /*0x78-0x7f*/
- 0xe2cf, 0x8ed8, 0x8ed9, 0x8eda, 0xd7af, 0x8edb, 0xc7ec, 0xb1d3, /*0x80-0x87*/
- 0x8edc, 0x8edd, 0xb4b2, 0xe2d1, 0x8ede, 0x8edf, 0x8ee0, 0xd0f2, /*0x88-0x8f*/
- 0xc2ae, 0xe2d0, 0x8ee1, 0xbfe2, 0xd3a6, 0xb5d7, 0xe2d2, 0xb5ea, /*0x90-0x97*/
- 0x8ee2, 0xc3ed, 0xb8fd, 0x8ee3, 0xb8ae, 0x8ee4, 0xc5d3, 0xb7cf, /*0x98-0x9f*/
- 0xe2d4, 0x8ee5, 0x8ee6, 0x8ee7, 0x8ee8, 0xe2d3, 0xb6c8, 0xd7f9, /*0xa0-0xa7*/
- 0x8ee9, 0x8eea, 0x8eeb, 0x8eec, 0x8eed, 0xcda5, 0x8eee, 0x8eef, /*0xa8-0xaf*/
- 0x8ef0, 0x8ef1, 0x8ef2, 0xe2d8, 0x8ef3, 0xe2d6, 0xcafc, 0xbfb5, /*0xb0-0xb7*/
- 0xd3b9, 0xe2d5, 0x8ef4, 0x8ef5, 0x8ef6, 0x8ef7, 0xe2d7, 0x8ef8, /*0xb8-0xbf*/
- 0x8ef9, 0x8efa, 0x8efb, 0x8efc, 0x8efd, 0x8efe, 0x8f40, 0x8f41, /*0xc0-0xc7*/
- 0x8f42, 0xc1ae, 0xc0c8, 0x8f43, 0x8f44, 0x8f45, 0x8f46, 0x8f47, /*0xc8-0xcf*/
- 0x8f48, 0xe2db, 0xe2da, 0xc0aa, 0x8f49, 0x8f4a, 0xc1ce, 0x8f4b, /*0xd0-0xd7*/
- 0x8f4c, 0x8f4d, 0x8f4e, 0xe2dc, 0x8f4f, 0x8f50, 0x8f51, 0x8f52, /*0xd8-0xdf*/
- 0x8f53, 0x8f54, 0x8f55, 0x8f56, 0x8f57, 0x8f58, 0x8f59, 0x8f5a, /*0xe0-0xe7*/
- 0xe2dd, 0x8f5b, 0xe2de, 0x8f5c, 0x8f5d, 0x8f5e, 0x8f5f, 0x8f60, /*0xe8-0xef*/
- 0x8f61, 0x8f62, 0x8f63, 0x8f64, 0xdbc8, 0x8f65, 0xd1d3, 0xcda2, /*0xf0-0xf7*/
- 0x8f66, 0x8f67, 0xbda8, 0x8f68, 0x8f69, 0x8f6a, 0xdec3, 0xd8a5, /*0xf8-0xff*/
- /* 0x5f00 */
- 0xbfaa, 0xdbcd, 0xd2ec, 0xc6fa, 0xc5aa, 0x8f6b, 0x8f6c, 0x8f6d, /*0x00-0x07*/
- 0xdec4, 0x8f6e, 0xb1d7, 0xdfae, 0x8f6f, 0x8f70, 0x8f71, 0xcabd, /*0x08-0x0f*/
- 0x8f72, 0xdfb1, 0x8f73, 0xb9ad, 0x8f74, 0xd2fd, 0x8f75, 0xb8a5, /*0x10-0x17*/
- 0xbaeb, 0x8f76, 0x8f77, 0xb3da, 0x8f78, 0x8f79, 0x8f7a, 0xb5dc, /*0x18-0x1f*/
- 0xd5c5, 0x8f7b, 0x8f7c, 0x8f7d, 0x8f7e, 0xc3d6, 0xcfd2, 0xbba1, /*0x20-0x27*/
- 0x8f80, 0xe5f3, 0xe5f2, 0x8f81, 0x8f82, 0xe5f4, 0x8f83, 0xcde4, /*0x28-0x2f*/
- 0x8f84, 0xc8f5, 0x8f85, 0x8f86, 0x8f87, 0x8f88, 0x8f89, 0x8f8a, /*0x30-0x37*/
- 0x8f8b, 0xb5af, 0xc7bf, 0x8f8c, 0xe5f6, 0x8f8d, 0x8f8e, 0x8f8f, /*0x38-0x3f*/
- 0xecb0, 0x8f90, 0x8f91, 0x8f92, 0x8f93, 0x8f94, 0x8f95, 0x8f96, /*0x40-0x47*/
- 0x8f97, 0x8f98, 0x8f99, 0x8f9a, 0x8f9b, 0x8f9c, 0x8f9d, 0x8f9e, /*0x48-0x4f*/
- 0xe5e6, 0x8f9f, 0xb9e9, 0xb5b1, 0x8fa0, 0xc2bc, 0xe5e8, 0xe5e7, /*0x50-0x57*/
- 0xe5e9, 0x8fa1, 0x8fa2, 0x8fa3, 0x8fa4, 0xd2cd, 0x8fa5, 0x8fa6, /*0x58-0x5f*/
- 0x8fa7, 0xe1ea, 0xd0ce, 0x8fa8, 0xcdae, 0x8fa9, 0xd1e5, 0x8faa, /*0x60-0x67*/
- 0x8fab, 0xb2ca, 0xb1eb, 0x8fac, 0xb1f2, 0xc5ed, 0x8fad, 0x8fae, /*0x68-0x6f*/
- 0xd5c3, 0xd3b0, 0x8faf, 0xe1dc, 0x8fb0, 0x8fb1, 0x8fb2, 0xe1dd, /*0x70-0x77*/
- 0x8fb3, 0xd2db, 0x8fb4, 0xb3b9, 0xb1cb, 0x8fb5, 0x8fb6, 0x8fb7, /*0x78-0x7f*/
- 0xcdf9, 0xd5f7, 0xe1de, 0x8fb8, 0xbeb6, 0xb4fd, 0x8fb9, 0xe1df, /*0x80-0x87*/
- 0xbadc, 0xe1e0, 0xbbb2, 0xc2c9, 0xe1e1, 0x8fba, 0x8fbb, 0x8fbc, /*0x88-0x8f*/
- 0xd0ec, 0x8fbd, 0xcdbd, 0x8fbe, 0x8fbf, 0xe1e2, 0x8fc0, 0xb5c3, /*0x90-0x97*/
- 0xc5c7, 0xe1e3, 0x8fc1, 0x8fc2, 0xe1e4, 0x8fc3, 0x8fc4, 0x8fc5, /*0x98-0x9f*/
- 0x8fc6, 0xd3f9, 0x8fc7, 0x8fc8, 0x8fc9, 0x8fca, 0x8fcb, 0x8fcc, /*0xa0-0xa7*/
- 0xe1e5, 0x8fcd, 0xd1ad, 0x8fce, 0x8fcf, 0xe1e6, 0xcea2, 0x8fd0, /*0xa8-0xaf*/
- 0x8fd1, 0x8fd2, 0x8fd3, 0x8fd4, 0x8fd5, 0xe1e7, 0x8fd6, 0xb5c2, /*0xb0-0xb7*/
- 0x8fd7, 0x8fd8, 0x8fd9, 0x8fda, 0xe1e8, 0xbbd5, 0x8fdb, 0x8fdc, /*0xb8-0xbf*/
- 0x8fdd, 0x8fde, 0x8fdf, 0xd0c4, 0xe2e0, 0xb1d8, 0xd2e4, 0x8fe0, /*0xc0-0xc7*/
- 0x8fe1, 0xe2e1, 0x8fe2, 0x8fe3, 0xbcc9, 0xc8cc, 0x8fe4, 0xe2e3, /*0xc8-0xcf*/
- 0xecfe, 0xecfd, 0xdfaf, 0x8fe5, 0x8fe6, 0x8fe7, 0xe2e2, 0xd6be, /*0xd0-0xd7*/
- 0xcdfc, 0xc3a6, 0x8fe8, 0x8fe9, 0x8fea, 0xe3c3, 0x8feb, 0x8fec, /*0xd8-0xdf*/
- 0xd6d2, 0xe2e7, 0x8fed, 0x8fee, 0xe2e8, 0x8fef, 0x8ff0, 0xd3c7, /*0xe0-0xe7*/
- 0x8ff1, 0x8ff2, 0xe2ec, 0xbfec, 0x8ff3, 0xe2ed, 0xe2e5, 0x8ff4, /*0xe8-0xef*/
- 0x8ff5, 0xb3c0, 0x8ff6, 0x8ff7, 0x8ff8, 0xc4ee, 0x8ff9, 0x8ffa, /*0xf0-0xf7*/
- 0xe2ee, 0x8ffb, 0x8ffc, 0xd0c3, 0x8ffd, 0xbaf6, 0xe2e9, 0xb7de, /*0xf8-0xff*/
- /* 0x6000 */
- 0xbbb3, 0xccac, 0xcbcb, 0xe2e4, 0xe2e6, 0xe2ea, 0xe2eb, 0x8ffe, /*0x00-0x07*/
- 0x9040, 0x9041, 0xe2f7, 0x9042, 0x9043, 0xe2f4, 0xd4f5, 0xe2f3, /*0x08-0x0f*/
- 0x9044, 0x9045, 0xc5ad, 0x9046, 0xd5fa, 0xc5c2, 0xb2c0, 0x9047, /*0x10-0x17*/
- 0x9048, 0xe2ef, 0x9049, 0xe2f2, 0xc1af, 0xcbbc, 0x904a, 0x904b, /*0x18-0x1f*/
- 0xb5a1, 0xe2f9, 0x904c, 0x904d, 0x904e, 0xbcb1, 0xe2f1, 0xd0d4, /*0x20-0x27*/
- 0xd4b9, 0xe2f5, 0xb9d6, 0xe2f6, 0x904f, 0x9050, 0x9051, 0xc7d3, /*0x28-0x2f*/
- 0x9052, 0x9053, 0x9054, 0x9055, 0x9056, 0xe2f0, 0x9057, 0x9058, /*0x30-0x37*/
- 0x9059, 0x905a, 0x905b, 0xd7dc, 0xeda1, 0x905c, 0x905d, 0xe2f8, /*0x38-0x3f*/
- 0x905e, 0xeda5, 0xe2fe, 0xcad1, 0x905f, 0x9060, 0x9061, 0x9062, /*0x40-0x47*/
- 0x9063, 0x9064, 0x9065, 0xc1b5, 0x9066, 0xbbd0, 0x9067, 0x9068, /*0x48-0x4f*/
- 0xbfd6, 0x9069, 0xbae3, 0x906a, 0x906b, 0xcba1, 0x906c, 0x906d, /*0x50-0x57*/
- 0x906e, 0xeda6, 0xeda3, 0x906f, 0x9070, 0xeda2, 0x9071, 0x9072, /*0x58-0x5f*/
- 0x9073, 0x9074, 0xbbd6, 0xeda7, 0xd0f4, 0x9075, 0x9076, 0xeda4, /*0x60-0x67*/
- 0xbade, 0xb6f7, 0xe3a1, 0xb6b2, 0xccf1, 0xb9a7, 0x9077, 0xcfa2, /*0x68-0x6f*/
- 0xc7a1, 0x9078, 0x9079, 0xbfd2, 0x907a, 0x907b, 0xb6f1, 0x907c, /*0x70-0x77*/
- 0xe2fa, 0xe2fb, 0xe2fd, 0xe2fc, 0xc4d5, 0xe3a2, 0x907d, 0xd3c1, /*0x78-0x7f*/
- 0x907e, 0x9080, 0x9081, 0xe3a7, 0xc7c4, 0x9082, 0x9083, 0x9084, /*0x80-0x87*/
- 0x9085, 0xcfa4, 0x9086, 0x9087, 0xe3a9, 0xbab7, 0x9088, 0x9089, /*0x88-0x8f*/
- 0x908a, 0x908b, 0xe3a8, 0x908c, 0xbbda, 0x908d, 0xe3a3, 0x908e, /*0x90-0x97*/
- 0x908f, 0x9090, 0xe3a4, 0xe3aa, 0x9091, 0xe3a6, 0x9092, 0xcef2, /*0x98-0x9f*/
- 0xd3c6, 0x9093, 0x9094, 0xbbbc, 0x9095, 0x9096, 0xd4c3, 0x9097, /*0xa0-0xa7*/
- 0xc4fa, 0x9098, 0x9099, 0xeda8, 0xd0fc, 0xe3a5, 0x909a, 0xc3f5, /*0xa8-0xaf*/
- 0x909b, 0xe3ad, 0xb1af, 0x909c, 0xe3b2, 0x909d, 0x909e, 0x909f, /*0xb0-0xb7*/
- 0xbcc2, 0x90a0, 0x90a1, 0xe3ac, 0xb5bf, 0x90a2, 0x90a3, 0x90a4, /*0xb8-0xbf*/
- 0x90a5, 0x90a6, 0x90a7, 0x90a8, 0x90a9, 0xc7e9, 0xe3b0, 0x90aa, /*0xc0-0xc7*/
- 0x90ab, 0x90ac, 0xbeaa, 0xcdef, 0x90ad, 0x90ae, 0x90af, 0x90b0, /*0xc8-0xcf*/
- 0x90b1, 0xbbf3, 0x90b2, 0x90b3, 0x90b4, 0xcce8, 0x90b5, 0x90b6, /*0xd0-0xd7*/
- 0xe3af, 0x90b7, 0xe3b1, 0x90b8, 0xcfa7, 0xe3ae, 0x90b9, 0xcea9, /*0xd8-0xdf*/
- 0xbbdd, 0x90ba, 0x90bb, 0x90bc, 0x90bd, 0x90be, 0xb5eb, 0xbee5, /*0xe0-0xe7*/
- 0xb2d2, 0xb3cd, 0x90bf, 0xb1b9, 0xe3ab, 0xb2d1, 0xb5ac, 0xb9df, /*0xe8-0xef*/
- 0xb6e8, 0x90c0, 0x90c1, 0xcfeb, 0xe3b7, 0x90c2, 0xbbcc, 0x90c3, /*0xf0-0xf7*/
- 0x90c4, 0xc8c7, 0xd0ca, 0x90c5, 0x90c6, 0x90c7, 0x90c8, 0x90c9, /*0xf8-0xff*/
- /* 0x6100 */
- 0xe3b8, 0xb3ee, 0x90ca, 0x90cb, 0x90cc, 0x90cd, 0xeda9, 0x90ce, /*0x00-0x07*/
- 0xd3fa, 0xd3e4, 0x90cf, 0x90d0, 0x90d1, 0xedaa, 0xe3b9, 0xd2e2, /*0x08-0x0f*/
- 0x90d2, 0x90d3, 0x90d4, 0x90d5, 0x90d6, 0xe3b5, 0x90d7, 0x90d8, /*0x10-0x17*/
- 0x90d9, 0x90da, 0xd3de, 0x90db, 0x90dc, 0x90dd, 0x90de, 0xb8d0, /*0x18-0x1f*/
- 0xe3b3, 0x90df, 0x90e0, 0xe3b6, 0xb7df, 0x90e1, 0xe3b4, 0xc0a2, /*0x20-0x27*/
- 0x90e2, 0x90e3, 0x90e4, 0xe3ba, 0x90e5, 0x90e6, 0x90e7, 0x90e8, /*0x28-0x2f*/
- 0x90e9, 0x90ea, 0x90eb, 0x90ec, 0x90ed, 0x90ee, 0x90ef, 0x90f0, /*0x30-0x37*/
- 0x90f1, 0x90f2, 0x90f3, 0x90f4, 0x90f5, 0x90f6, 0x90f7, 0xd4b8, /*0x38-0x3f*/
- 0x90f8, 0x90f9, 0x90fa, 0x90fb, 0x90fc, 0x90fd, 0x90fe, 0x9140, /*0x40-0x47*/
- 0xb4c8, 0x9141, 0xe3bb, 0x9142, 0xbbc5, 0x9143, 0xc9f7, 0x9144, /*0x48-0x4f*/
- 0x9145, 0xc9e5, 0x9146, 0x9147, 0x9148, 0xc4bd, 0x9149, 0x914a, /*0x50-0x57*/
- 0x914b, 0x914c, 0x914d, 0x914e, 0x914f, 0xedab, 0x9150, 0x9151, /*0x58-0x5f*/
- 0x9152, 0x9153, 0xc2fd, 0x9154, 0x9155, 0x9156, 0x9157, 0xbbdb, /*0x60-0x67*/
- 0xbfae, 0x9158, 0x9159, 0x915a, 0x915b, 0x915c, 0x915d, 0x915e, /*0x68-0x6f*/
- 0xcebf, 0x915f, 0x9160, 0x9161, 0x9162, 0xe3bc, 0x9163, 0xbfb6, /*0x70-0x77*/
- 0x9164, 0x9165, 0x9166, 0x9167, 0x9168, 0x9169, 0x916a, 0x916b, /*0x78-0x7f*/
- 0x916c, 0x916d, 0x916e, 0x916f, 0x9170, 0x9171, 0x9172, 0x9173, /*0x80-0x87*/
- 0x9174, 0x9175, 0x9176, 0xb1ef, 0x9177, 0x9178, 0xd4f7, 0x9179, /*0x88-0x8f*/
- 0x917a, 0x917b, 0x917c, 0x917d, 0xe3be, 0x917e, 0x9180, 0x9181, /*0x90-0x97*/
- 0x9182, 0x9183, 0x9184, 0x9185, 0x9186, 0xedad, 0x9187, 0x9188, /*0x98-0x9f*/
- 0x9189, 0x918a, 0x918b, 0x918c, 0x918d, 0x918e, 0x918f, 0xe3bf, /*0xa0-0xa7*/
- 0xbaa9, 0xedac, 0x9190, 0x9191, 0xe3bd, 0x9192, 0x9193, 0x9194, /*0xa8-0xaf*/
- 0x9195, 0x9196, 0x9197, 0x9198, 0x9199, 0x919a, 0x919b, 0xe3c0, /*0xb0-0xb7*/
- 0x919c, 0x919d, 0x919e, 0x919f, 0x91a0, 0x91a1, 0xbab6, 0x91a2, /*0xb8-0xbf*/
- 0x91a3, 0x91a4, 0xb6ae, 0x91a5, 0x91a6, 0x91a7, 0x91a8, 0x91a9, /*0xc0-0xc7*/
- 0xd0b8, 0x91aa, 0xb0c3, 0xedae, 0x91ab, 0x91ac, 0x91ad, 0x91ae, /*0xc8-0xcf*/
- 0x91af, 0xedaf, 0xc0c1, 0x91b0, 0xe3c1, 0x91b1, 0x91b2, 0x91b3, /*0xd0-0xd7*/
- 0x91b4, 0x91b5, 0x91b6, 0x91b7, 0x91b8, 0x91b9, 0x91ba, 0x91bb, /*0xd8-0xdf*/
- 0x91bc, 0x91bd, 0x91be, 0x91bf, 0x91c0, 0x91c1, 0xc5b3, 0x91c2, /*0xe0-0xe7*/
- 0x91c3, 0x91c4, 0x91c5, 0x91c6, 0x91c7, 0x91c8, 0x91c9, 0x91ca, /*0xe8-0xef*/
- 0x91cb, 0x91cc, 0x91cd, 0x91ce, 0x91cf, 0xe3c2, 0x91d0, 0x91d1, /*0xf0-0xf7*/
- 0x91d2, 0x91d3, 0x91d4, 0x91d5, 0x91d6, 0x91d7, 0x91d8, 0xdcb2, /*0xf8-0xff*/
- /* 0x6200 */
- 0x91d9, 0x91da, 0x91db, 0x91dc, 0x91dd, 0x91de, 0xedb0, 0x91df, /*0x00-0x07*/
- 0xb8ea, 0x91e0, 0xceec, 0xeaa7, 0xd0e7, 0xcaf9, 0xc8d6, 0xcfb7, /*0x08-0x0f*/
- 0xb3c9, 0xced2, 0xbde4, 0x91e1, 0x91e2, 0xe3de, 0xbbf2, 0xeaa8, /*0x10-0x17*/
- 0xd5bd, 0x91e3, 0xc6dd, 0xeaa9, 0x91e4, 0x91e5, 0x91e6, 0xeaaa, /*0x18-0x1f*/
- 0x91e7, 0xeaac, 0xeaab, 0x91e8, 0xeaae, 0xeaad, 0x91e9, 0x91ea, /*0x20-0x27*/
- 0x91eb, 0x91ec, 0xbdd8, 0x91ed, 0xeaaf, 0x91ee, 0xc2be, 0x91ef, /*0x28-0x2f*/
- 0x91f0, 0x91f1, 0x91f2, 0xb4c1, 0xb4f7, 0x91f3, 0x91f4, 0xbba7, /*0x30-0x37*/
- 0x91f5, 0x91f6, 0x91f7, 0x91f8, 0x91f9, 0xece6, 0xece5, 0xb7bf, /*0x38-0x3f*/
- 0xcbf9, 0xb1e2, 0x91fa, 0xece7, 0x91fb, 0x91fc, 0x91fd, 0xc9c8, /*0x40-0x47*/
- 0xece8, 0xece9, 0x91fe, 0xcad6, 0xded0, 0xb2c5, 0xd4fa, 0x9240, /*0x48-0x4f*/
- 0x9241, 0xc6cb, 0xb0c7, 0xb4f2, 0xc8d3, 0x9242, 0x9243, 0x9244, /*0x50-0x57*/
- 0xcdd0, 0x9245, 0x9246, 0xbfb8, 0x9247, 0x9248, 0x9249, 0x924a, /*0x58-0x5f*/
- 0x924b, 0x924c, 0x924d, 0xbfdb, 0x924e, 0x924f, 0xc7a4, 0xd6b4, /*0x60-0x67*/
- 0x9250, 0xc0a9, 0xded1, 0xc9a8, 0xd1ef, 0xc5a4, 0xb0e7, 0xb3b6, /*0x68-0x6f*/
- 0xc8c5, 0x9251, 0x9252, 0xb0e2, 0x9253, 0x9254, 0xb7f6, 0x9255, /*0x70-0x77*/
- 0x9256, 0xc5fa, 0x9257, 0x9258, 0xb6f3, 0x9259, 0xd5d2, 0xb3d0, /*0x78-0x7f*/
- 0xbcbc, 0x925a, 0x925b, 0x925c, 0xb3ad, 0x925d, 0x925e, 0x925f, /*0x80-0x87*/
- 0x9260, 0xbef1, 0xb0d1, 0x9261, 0x9262, 0x9263, 0x9264, 0x9265, /*0x88-0x8f*/
- 0x9266, 0xd2d6, 0xcae3, 0xd7a5, 0x9267, 0xcdb6, 0xb6b6, 0xbfb9, /*0x90-0x97*/
- 0xd5db, 0x9268, 0xb8a7, 0xc5d7, 0x9269, 0x926a, 0x926b, 0xded2, /*0x98-0x9f*/
- 0xbfd9, 0xc2d5, 0xc7c0, 0x926c, 0xbba4, 0xb1a8, 0x926d, 0x926e, /*0xa0-0xa7*/
- 0xc5ea, 0x926f, 0x9270, 0xc5fb, 0xcca7, 0x9271, 0x9272, 0x9273, /*0xa8-0xaf*/
- 0x9274, 0xb1a7, 0x9275, 0x9276, 0x9277, 0xb5d6, 0x9278, 0x9279, /*0xb0-0xb7*/
- 0x927a, 0xc4a8, 0x927b, 0xded3, 0xd1ba, 0xb3e9, 0x927c, 0xc3f2, /*0xb8-0xbf*/
- 0x927d, 0x927e, 0xb7f7, 0x9280, 0xd6f4, 0xb5a3, 0xb2f0, 0xc4b4, /*0xc0-0xc7*/
- 0xc4e9, 0xc0ad, 0xded4, 0x9281, 0xb0e8, 0xc5c4, 0xc1e0, 0x9282, /*0xc8-0xcf*/
- 0xb9d5, 0x9283, 0xbedc, 0xcdd8, 0xb0ce, 0x9284, 0xcdcf, 0xded6, /*0xd0-0xd7*/
- 0xbed0, 0xd7be, 0xded5, 0xd5d0, 0xb0dd, 0x9285, 0x9286, 0xc4e2, /*0xd8-0xdf*/
- 0x9287, 0x9288, 0xc2a3, 0xbcf0, 0x9289, 0xd3b5, 0xc0b9, 0xc5a1, /*0xe0-0xe7*/
- 0xb2a6, 0xd4f1, 0x928a, 0x928b, 0xc0a8, 0xcac3, 0xded7, 0xd5fc, /*0xe8-0xef*/
- 0x928c, 0xb9b0, 0x928d, 0xc8ad, 0xcba9, 0x928e, 0xded9, 0xbfbd, /*0xf0-0xf7*/
- 0x928f, 0x9290, 0x9291, 0x9292, 0xc6b4, 0xd7a7, 0xcab0, 0xc4c3, /*0xf8-0xff*/
- /* 0x6300 */
- 0x9293, 0xb3d6, 0xb9d2, 0x9294, 0x9295, 0x9296, 0x9297, 0xd6b8, /*0x00-0x07*/
- 0xeafc, 0xb0b4, 0x9298, 0x9299, 0x929a, 0x929b, 0xbfe6, 0x929c, /*0x08-0x0f*/
- 0x929d, 0xccf4, 0x929e, 0x929f, 0x92a0, 0x92a1, 0xcdda, 0x92a2, /*0x10-0x17*/
- 0x92a3, 0x92a4, 0xd6bf, 0xc2ce, 0x92a5, 0xcece, 0xcca2, 0xd0ae, /*0x18-0x1f*/
- 0xc4d3, 0xb5b2, 0xded8, 0xd5f5, 0xbcb7, 0xbbd3, 0x92a6, 0x92a7, /*0x20-0x27*/
- 0xb0a4, 0x92a8, 0xc5b2, 0xb4ec, 0x92a9, 0x92aa, 0x92ab, 0xd5f1, /*0x28-0x2f*/
- 0x92ac, 0x92ad, 0xeafd, 0x92ae, 0x92af, 0x92b0, 0x92b1, 0x92b2, /*0x30-0x37*/
- 0x92b3, 0xdeda, 0xcda6, 0x92b4, 0x92b5, 0xcdec, 0x92b6, 0x92b7, /*0x38-0x3f*/
- 0x92b8, 0x92b9, 0xcee6, 0xdedc, 0x92ba, 0xcdb1, 0xc0a6, 0x92bb, /*0x40-0x47*/
- 0x92bc, 0xd7bd, 0x92bd, 0xdedb, 0xb0c6, 0xbab4, 0xc9d3, 0xc4f3, /*0x48-0x4f*/
- 0xbee8, 0x92be, 0x92bf, 0x92c0, 0x92c1, 0xb2b6, 0x92c2, 0x92c3, /*0x50-0x57*/
- 0x92c4, 0x92c5, 0x92c6, 0x92c7, 0x92c8, 0x92c9, 0xc0cc, 0xcbf0, /*0x58-0x5f*/
- 0x92ca, 0xbcf1, 0xbbbb, 0xb5b7, 0x92cb, 0x92cc, 0x92cd, 0xc5f5, /*0x60-0x67*/
- 0x92ce, 0xdee6, 0x92cf, 0x92d0, 0x92d1, 0xdee3, 0xbedd, 0x92d2, /*0x68-0x6f*/
- 0x92d3, 0xdedf, 0x92d4, 0x92d5, 0x92d6, 0x92d7, 0xb4b7, 0xbddd, /*0x70-0x77*/
- 0x92d8, 0x92d9, 0xdee0, 0xc4ed, 0x92da, 0x92db, 0x92dc, 0x92dd, /*0x78-0x7f*/
- 0xcfc6, 0x92de, 0xb5e0, 0x92df, 0x92e0, 0x92e1, 0x92e2, 0xb6de, /*0x80-0x87*/
- 0xcada, 0xb5f4, 0xdee5, 0x92e3, 0xd5c6, 0x92e4, 0xdee1, 0xcccd, /*0x88-0x8f*/
- 0xc6fe, 0x92e5, 0xc5c5, 0x92e6, 0x92e7, 0x92e8, 0xd2b4, 0x92e9, /*0x90-0x97*/
- 0xbef2, 0x92ea, 0x92eb, 0x92ec, 0x92ed, 0x92ee, 0x92ef, 0x92f0, /*0x98-0x9f*/
- 0xc2d3, 0x92f1, 0xccbd, 0xb3b8, 0x92f2, 0xbdd3, 0x92f3, 0xbfd8, /*0xa0-0xa7*/
- 0xcdc6, 0xd1da, 0xb4eb, 0x92f4, 0xdee4, 0xdedd, 0xdee7, 0x92f5, /*0xa8-0xaf*/
- 0xeafe, 0x92f6, 0x92f7, 0xc2b0, 0xdee2, 0x92f8, 0x92f9, 0xd6c0, /*0xb0-0xb7*/
- 0xb5a7, 0x92fa, 0xb2f4, 0x92fb, 0xdee8, 0x92fc, 0xdef2, 0x92fd, /*0xb8-0xbf*/
- 0x92fe, 0x9340, 0x9341, 0x9342, 0xdeed, 0x9343, 0xdef1, 0x9344, /*0xc0-0xc7*/
- 0x9345, 0xc8e0, 0x9346, 0x9347, 0x9348, 0xd7e1, 0xdeef, 0xc3e8, /*0xc8-0xcf*/
- 0xcce1, 0x9349, 0xb2e5, 0x934a, 0x934b, 0x934c, 0xd2be, 0x934d, /*0xd0-0xd7*/
- 0x934e, 0x934f, 0x9350, 0x9351, 0x9352, 0x9353, 0xdeee, 0x9354, /*0xd8-0xdf*/
- 0xdeeb, 0xced5, 0x9355, 0xb4a7, 0x9356, 0x9357, 0x9358, 0x9359, /*0xe0-0xe7*/
- 0x935a, 0xbfab, 0xbebe, 0x935b, 0x935c, 0xbdd2, 0x935d, 0x935e, /*0xe8-0xef*/
- 0x935f, 0x9360, 0xdee9, 0x9361, 0xd4ae, 0x9362, 0xdede, 0x9363, /*0xf0-0xf7*/
- 0xdeea, 0x9364, 0x9365, 0x9366, 0x9367, 0xc0bf, 0x9368, 0xdeec, /*0xf8-0xff*/
- /* 0x6400 */
- 0xb2f3, 0xb8e9, 0xc2a7, 0x9369, 0x936a, 0xbdc1, 0x936b, 0x936c, /*0x00-0x07*/
- 0x936d, 0x936e, 0x936f, 0xdef5, 0xdef8, 0x9370, 0x9371, 0xb2ab, /*0x08-0x0f*/
- 0xb4a4, 0x9372, 0x9373, 0xb4ea, 0xc9a6, 0x9374, 0x9375, 0x9376, /*0x10-0x17*/
- 0x9377, 0x9378, 0x9379, 0xdef6, 0xcbd1, 0x937a, 0xb8e3, 0x937b, /*0x18-0x1f*/
- 0xdef7, 0xdefa, 0x937c, 0x937d, 0x937e, 0x9380, 0xdef9, 0x9381, /*0x20-0x27*/
- 0x9382, 0x9383, 0xccc2, 0x9384, 0xb0e1, 0xb4ee, 0x9385, 0x9386, /*0x28-0x2f*/
- 0x9387, 0x9388, 0x9389, 0x938a, 0xe5ba, 0x938b, 0x938c, 0x938d, /*0x30-0x37*/
- 0x938e, 0x938f, 0xd0af, 0x9390, 0x9391, 0xb2eb, 0x9392, 0xeba1, /*0x38-0x3f*/
- 0x9393, 0xdef4, 0x9394, 0x9395, 0xc9e3, 0xdef3, 0xb0da, 0xd2a1, /*0x40-0x47*/
- 0xb1f7, 0x9396, 0xccaf, 0x9397, 0x9398, 0x9399, 0x939a, 0x939b, /*0x48-0x4f*/
- 0x939c, 0x939d, 0xdef0, 0x939e, 0xcba4, 0x939f, 0x93a0, 0x93a1, /*0x50-0x57*/
- 0xd5aa, 0x93a2, 0x93a3, 0x93a4, 0x93a5, 0x93a6, 0xdefb, 0x93a7, /*0x58-0x5f*/
- 0x93a8, 0x93a9, 0x93aa, 0x93ab, 0x93ac, 0x93ad, 0x93ae, 0xb4dd, /*0x60-0x67*/
- 0x93af, 0xc4a6, 0x93b0, 0x93b1, 0x93b2, 0xdefd, 0x93b3, 0x93b4, /*0x68-0x6f*/
- 0x93b5, 0x93b6, 0x93b7, 0x93b8, 0x93b9, 0x93ba, 0x93bb, 0x93bc, /*0x70-0x77*/
- 0xc3fe, 0xc4a1, 0xdfa1, 0x93bd, 0x93be, 0x93bf, 0x93c0, 0x93c1, /*0x78-0x7f*/
- 0x93c2, 0x93c3, 0xc1cc, 0x93c4, 0xdefc, 0xbeef, 0x93c5, 0xc6b2, /*0x80-0x87*/
- 0x93c6, 0x93c7, 0x93c8, 0x93c9, 0x93ca, 0x93cb, 0x93cc, 0x93cd, /*0x88-0x8f*/
- 0x93ce, 0xb3c5, 0xc8f6, 0x93cf, 0x93d0, 0xcbba, 0xdefe, 0x93d1, /*0x90-0x97*/
- 0x93d2, 0xdfa4, 0x93d3, 0x93d4, 0x93d5, 0x93d6, 0xd7b2, 0x93d7, /*0x98-0x9f*/
- 0x93d8, 0x93d9, 0x93da, 0x93db, 0xb3b7, 0x93dc, 0x93dd, 0x93de, /*0xa0-0xa7*/
- 0x93df, 0xc1c3, 0x93e0, 0x93e1, 0xc7cb, 0xb2a5, 0xb4e9, 0x93e2, /*0xa8-0xaf*/
- 0xd7ab, 0x93e3, 0x93e4, 0x93e5, 0x93e6, 0xc4ec, 0x93e7, 0xdfa2, /*0xb0-0xb7*/
- 0xdfa3, 0x93e8, 0xdfa5, 0x93e9, 0xbab3, 0x93ea, 0x93eb, 0x93ec, /*0xb8-0xbf*/
- 0xdfa6, 0x93ed, 0xc0de, 0x93ee, 0x93ef, 0xc9c3, 0x93f0, 0x93f1, /*0xc0-0xc7*/
- 0x93f2, 0x93f3, 0x93f4, 0x93f5, 0x93f6, 0xb2d9, 0xc7e6, 0x93f7, /*0xc8-0xcf*/
- 0xdfa7, 0x93f8, 0xc7dc, 0x93f9, 0x93fa, 0x93fb, 0x93fc, 0xdfa8, /*0xd0-0xd7*/
- 0xeba2, 0x93fd, 0x93fe, 0x9440, 0x9441, 0x9442, 0xcbd3, 0x9443, /*0xd8-0xdf*/
- 0x9444, 0x9445, 0xdfaa, 0x9446, 0xdfa9, 0x9447, 0xb2c1, 0x9448, /*0xe0-0xe7*/
- 0x9449, 0x944a, 0x944b, 0x944c, 0x944d, 0x944e, 0x944f, 0x9450, /*0xe8-0xef*/
- 0x9451, 0x9452, 0x9453, 0x9454, 0x9455, 0x9456, 0x9457, 0x9458, /*0xf0-0xf7*/
- 0x9459, 0x945a, 0x945b, 0x945c, 0x945d, 0x945e, 0x945f, 0x9460, /*0xf8-0xff*/
- /* 0x6500 */
- 0xc5ca, 0x9461, 0x9462, 0x9463, 0x9464, 0x9465, 0x9466, 0x9467, /*0x00-0x07*/
- 0x9468, 0xdfab, 0x9469, 0x946a, 0x946b, 0x946c, 0x946d, 0x946e, /*0x08-0x0f*/
- 0x946f, 0x9470, 0xd4dc, 0x9471, 0x9472, 0x9473, 0x9474, 0x9475, /*0x10-0x17*/
- 0xc8c1, 0x9476, 0x9477, 0x9478, 0x9479, 0x947a, 0x947b, 0x947c, /*0x18-0x1f*/
- 0x947d, 0x947e, 0x9480, 0x9481, 0x9482, 0xdfac, 0x9483, 0x9484, /*0x20-0x27*/
- 0x9485, 0x9486, 0x9487, 0xbef0, 0x9488, 0x9489, 0xdfad, 0xd6a7, /*0x28-0x2f*/
- 0x948a, 0x948b, 0x948c, 0x948d, 0xeab7, 0xebb6, 0xcad5, 0x948e, /*0x30-0x37*/
- 0xd8fc, 0xb8c4, 0x948f, 0xb9a5, 0x9490, 0x9491, 0xb7c5, 0xd5fe, /*0x38-0x3f*/
- 0x9492, 0x9493, 0x9494, 0x9495, 0x9496, 0xb9ca, 0x9497, 0x9498, /*0x40-0x47*/
- 0xd0a7, 0xf4cd, 0x9499, 0x949a, 0xb5d0, 0x949b, 0x949c, 0xc3f4, /*0x48-0x4f*/
- 0x949d, 0xbec8, 0x949e, 0x949f, 0x94a0, 0xebb7, 0xb0bd, 0x94a1, /*0x50-0x57*/
- 0x94a2, 0xbdcc, 0x94a3, 0xc1b2, 0x94a4, 0xb1d6, 0xb3a8, 0x94a5, /*0x58-0x5f*/
- 0x94a6, 0x94a7, 0xb8d2, 0xc9a2, 0x94a8, 0x94a9, 0xb6d8, 0x94aa, /*0x60-0x67*/
- 0x94ab, 0x94ac, 0x94ad, 0xebb8, 0xbeb4, 0x94ae, 0x94af, 0x94b0, /*0x68-0x6f*/
- 0xcafd, 0x94b1, 0xc7c3, 0x94b2, 0xd5fb, 0x94b3, 0x94b4, 0xb7f3, /*0x70-0x77*/
- 0x94b5, 0x94b6, 0x94b7, 0x94b8, 0x94b9, 0x94ba, 0x94bb, 0x94bc, /*0x78-0x7f*/
- 0x94bd, 0x94be, 0x94bf, 0x94c0, 0x94c1, 0x94c2, 0x94c3, 0xcec4, /*0x80-0x87*/
- 0x94c4, 0x94c5, 0x94c6, 0xd5ab, 0xb1f3, 0x94c7, 0x94c8, 0x94c9, /*0x88-0x8f*/
- 0xecb3, 0xb0df, 0x94ca, 0xecb5, 0x94cb, 0x94cc, 0x94cd, 0xb6b7, /*0x90-0x97*/
- 0x94ce, 0xc1cf, 0x94cf, 0xf5fa, 0xd0b1, 0x94d0, 0x94d1, 0xd5e5, /*0x98-0x9f*/
- 0x94d2, 0xced3, 0x94d3, 0x94d4, 0xbdef, 0xb3e2, 0x94d5, 0xb8ab, /*0xa0-0xa7*/
- 0x94d6, 0xd5b6, 0x94d7, 0xedbd, 0x94d8, 0xb6cf, 0x94d9, 0xcbb9, /*0xa8-0xaf*/
- 0xd0c2, 0x94da, 0x94db, 0x94dc, 0x94dd, 0x94de, 0x94df, 0x94e0, /*0xb0-0xb7*/
- 0x94e1, 0xb7bd, 0x94e2, 0x94e3, 0xecb6, 0xcaa9, 0x94e4, 0x94e5, /*0xb8-0xbf*/
- 0x94e6, 0xc5d4, 0x94e7, 0xecb9, 0xecb8, 0xc2c3, 0xecb7, 0x94e8, /*0xc0-0xc7*/
- 0x94e9, 0x94ea, 0x94eb, 0xd0fd, 0xecba, 0x94ec, 0xecbb, 0xd7e5, /*0xc8-0xcf*/
- 0x94ed, 0x94ee, 0xecbc, 0x94ef, 0x94f0, 0x94f1, 0xecbd, 0xc6ec, /*0xd0-0xd7*/
- 0x94f2, 0x94f3, 0x94f4, 0x94f5, 0x94f6, 0x94f7, 0x94f8, 0x94f9, /*0xd8-0xdf*/
- 0xcede, 0x94fa, 0xbcc8, 0x94fb, 0x94fc, 0xc8d5, 0xb5a9, 0xbec9, /*0xe0-0xe7*/
- 0xd6bc, 0xd4e7, 0x94fd, 0x94fe, 0xd1ae, 0xd0f1, 0xeab8, 0xeab9, /*0xe8-0xef*/
- 0xeaba, 0xbab5, 0x9540, 0x9541, 0x9542, 0x9543, 0xcab1, 0xbff5, /*0xf0-0xf7*/
- 0x9544, 0x9545, 0xcdfa, 0x9546, 0x9547, 0x9548, 0x9549, 0x954a, /*0xf8-0xff*/
- /* 0x6600 */
- 0xeac0, 0x954b, 0xb0ba, 0xeabe, 0x954c, 0x954d, 0xc0a5, 0x954e, /*0x00-0x07*/
- 0x954f, 0x9550, 0xeabb, 0x9551, 0xb2fd, 0x9552, 0xc3f7, 0xbbe8, /*0x08-0x0f*/
- 0x9553, 0x9554, 0x9555, 0xd2d7, 0xcef4, 0xeabf, 0x9556, 0x9557, /*0x10-0x17*/
- 0x9558, 0xeabc, 0x9559, 0x955a, 0x955b, 0xeac3, 0x955c, 0xd0c7, /*0x18-0x1f*/
- 0xd3b3, 0x955d, 0x955e, 0x955f, 0x9560, 0xb4ba, 0x9561, 0xc3c1, /*0x20-0x27*/
- 0xd7f2, 0x9562, 0x9563, 0x9564, 0x9565, 0xd5d1, 0x9566, 0xcac7, /*0x28-0x2f*/
- 0x9567, 0xeac5, 0x9568, 0x9569, 0xeac4, 0xeac7, 0xeac6, 0x956a, /*0x30-0x37*/
- 0x956b, 0x956c, 0x956d, 0x956e, 0xd6e7, 0x956f, 0xcfd4, 0x9570, /*0x38-0x3f*/
- 0x9571, 0xeacb, 0x9572, 0xbbce, 0x9573, 0x9574, 0x9575, 0x9576, /*0x40-0x47*/
- 0x9577, 0x9578, 0x9579, 0xbdfa, 0xc9ce, 0x957a, 0x957b, 0xeacc, /*0x48-0x4f*/
- 0x957c, 0x957d, 0xc9b9, 0xcffe, 0xeaca, 0xd4ce, 0xeacd, 0xeacf, /*0x50-0x57*/
- 0x957e, 0x9580, 0xcded, 0x9581, 0x9582, 0x9583, 0x9584, 0xeac9, /*0x58-0x5f*/
- 0x9585, 0xeace, 0x9586, 0x9587, 0xceee, 0x9588, 0xbbde, 0x9589, /*0x60-0x67*/
- 0xb3bf, 0x958a, 0x958b, 0x958c, 0x958d, 0x958e, 0xc6d5, 0xbeb0, /*0x68-0x6f*/
- 0xcefa, 0x958f, 0x9590, 0x9591, 0xc7e7, 0x9592, 0xbea7, 0xead0, /*0x70-0x77*/
- 0x9593, 0x9594, 0xd6c7, 0x9595, 0x9596, 0x9597, 0xc1c0, 0x9598, /*0x78-0x7f*/
- 0x9599, 0x959a, 0xd4dd, 0x959b, 0xead1, 0x959c, 0x959d, 0xcfbe, /*0x80-0x87*/
- 0x959e, 0x959f, 0x95a0, 0x95a1, 0xead2, 0x95a2, 0x95a3, 0x95a4, /*0x88-0x8f*/
- 0x95a5, 0xcaee, 0x95a6, 0x95a7, 0x95a8, 0x95a9, 0xc5af, 0xb0b5, /*0x90-0x97*/
- 0x95aa, 0x95ab, 0x95ac, 0x95ad, 0x95ae, 0xead4, 0x95af, 0x95b0, /*0x98-0x9f*/
- 0x95b1, 0x95b2, 0x95b3, 0x95b4, 0x95b5, 0x95b6, 0x95b7, 0xead3, /*0xa0-0xa7*/
- 0xf4df, 0x95b8, 0x95b9, 0x95ba, 0x95bb, 0x95bc, 0xc4ba, 0x95bd, /*0xa8-0xaf*/
- 0x95be, 0x95bf, 0x95c0, 0x95c1, 0xb1a9, 0x95c2, 0x95c3, 0x95c4, /*0xb0-0xb7*/
- 0x95c5, 0xe5df, 0x95c6, 0x95c7, 0x95c8, 0x95c9, 0xead5, 0x95ca, /*0xb8-0xbf*/
- 0x95cb, 0x95cc, 0x95cd, 0x95ce, 0x95cf, 0x95d0, 0x95d1, 0x95d2, /*0xc0-0xc7*/
- 0x95d3, 0x95d4, 0x95d5, 0x95d6, 0x95d7, 0x95d8, 0x95d9, 0x95da, /*0xc8-0xcf*/
- 0x95db, 0x95dc, 0x95dd, 0x95de, 0x95df, 0x95e0, 0x95e1, 0x95e2, /*0xd0-0xd7*/
- 0x95e3, 0xcaef, 0x95e4, 0xead6, 0xead7, 0xc6d8, 0x95e5, 0x95e6, /*0xd8-0xdf*/
- 0x95e7, 0x95e8, 0x95e9, 0x95ea, 0x95eb, 0x95ec, 0xead8, 0x95ed, /*0xe0-0xe7*/
- 0x95ee, 0xead9, 0x95ef, 0x95f0, 0x95f1, 0x95f2, 0x95f3, 0x95f4, /*0xe8-0xef*/
- 0xd4bb, 0x95f5, 0xc7fa, 0xd2b7, 0xb8fc, 0x95f6, 0x95f7, 0xeac2, /*0xf0-0xf7*/
- 0x95f8, 0xb2dc, 0x95f9, 0x95fa, 0xc2fc, 0x95fb, 0xd4f8, 0xcce6, /*0xf8-0xff*/
- /* 0x6700 */
- 0xd7ee, 0x95fc, 0x95fd, 0x95fe, 0x9640, 0x9641, 0x9642, 0x9643, /*0x00-0x07*/
- 0xd4c2, 0xd3d0, 0xebc3, 0xc5f3, 0x9644, 0xb7fe, 0x9645, 0x9646, /*0x08-0x0f*/
- 0xebd4, 0x9647, 0x9648, 0x9649, 0xcbb7, 0xebde, 0x964a, 0xc0ca, /*0x10-0x17*/
- 0x964b, 0x964c, 0x964d, 0xcdfb, 0x964e, 0xb3af, 0x964f, 0xc6da, /*0x18-0x1f*/
- 0x9650, 0x9651, 0x9652, 0x9653, 0x9654, 0x9655, 0xebfc, 0x9656, /*0x20-0x27*/
- 0xc4be, 0x9657, 0xceb4, 0xc4a9, 0xb1be, 0xd4fd, 0x9658, 0xcaf5, /*0x28-0x2f*/
- 0x9659, 0xd6ec, 0x965a, 0x965b, 0xc6d3, 0xb6e4, 0x965c, 0x965d, /*0x30-0x37*/
- 0x965e, 0x965f, 0xbbfa, 0x9660, 0x9661, 0xd0e0, 0x9662, 0x9663, /*0x38-0x3f*/
- 0xc9b1, 0x9664, 0xd4d3, 0xc8a8, 0x9665, 0x9666, 0xb8cb, 0x9667, /*0x40-0x47*/
- 0xe8be, 0xc9bc, 0x9668, 0x9669, 0xe8bb, 0x966a, 0xc0ee, 0xd0d3, /*0x48-0x4f*/
- 0xb2c4, 0xb4e5, 0x966b, 0xe8bc, 0x966c, 0x966d, 0xd5c8, 0x966e, /*0x50-0x57*/
- 0x966f, 0x9670, 0x9671, 0x9672, 0xb6c5, 0x9673, 0xe8bd, 0xcaf8, /*0x58-0x5f*/
- 0xb8dc, 0xccf5, 0x9674, 0x9675, 0x9676, 0xc0b4, 0x9677, 0x9678, /*0x60-0x67*/
- 0xd1ee, 0xe8bf, 0xe8c2, 0x9679, 0x967a, 0xbabc, 0x967b, 0xb1ad, /*0x68-0x6f*/
- 0xbddc, 0x967c, 0xeabd, 0xe8c3, 0x967d, 0xe8c6, 0x967e, 0xe8cb, /*0x70-0x77*/
- 0x9680, 0x9681, 0x9682, 0x9683, 0xe8cc, 0x9684, 0xcbc9, 0xb0e5, /*0x78-0x7f*/
- 0x9685, 0xbcab, 0x9686, 0x9687, 0xb9b9, 0x9688, 0x9689, 0xe8c1, /*0x80-0x87*/
- 0x968a, 0xcdf7, 0x968b, 0xe8ca, 0x968c, 0x968d, 0x968e, 0x968f, /*0x88-0x8f*/
- 0xcef6, 0x9690, 0x9691, 0x9692, 0x9693, 0xd5ed, 0x9694, 0xc1d6, /*0x90-0x97*/
- 0xe8c4, 0x9695, 0xc3b6, 0x9696, 0xb9fb, 0xd6a6, 0xe8c8, 0x9697, /*0x98-0x9f*/
- 0x9698, 0x9699, 0xcae0, 0xd4e6, 0x969a, 0xe8c0, 0x969b, 0xe8c5, /*0xa0-0xa7*/
- 0xe8c7, 0x969c, 0xc7b9, 0xb7e3, 0x969d, 0xe8c9, 0x969e, 0xbfdd, /*0xa8-0xaf*/
- 0xe8d2, 0x969f, 0x96a0, 0xe8d7, 0x96a1, 0xe8d5, 0xbcdc, 0xbccf, /*0xb0-0xb7*/
- 0xe8db, 0x96a2, 0x96a3, 0x96a4, 0x96a5, 0x96a6, 0x96a7, 0x96a8, /*0xb8-0xbf*/
- 0x96a9, 0xe8de, 0x96aa, 0xe8da, 0xb1fa, 0x96ab, 0x96ac, 0x96ad, /*0xc0-0xc7*/
- 0x96ae, 0x96af, 0x96b0, 0x96b1, 0x96b2, 0x96b3, 0x96b4, 0xb0d8, /*0xc8-0xcf*/
- 0xc4b3, 0xb8cc, 0xc6e2, 0xc8be, 0xc8e1, 0x96b5, 0x96b6, 0x96b7, /*0xd0-0xd7*/
- 0xe8cf, 0xe8d4, 0xe8d6, 0x96b8, 0xb9f1, 0xe8d8, 0xd7f5, 0x96b9, /*0xd8-0xdf*/
- 0xc4fb, 0x96ba, 0xe8dc, 0x96bb, 0x96bc, 0xb2e9, 0x96bd, 0x96be, /*0xe0-0xe7*/
- 0x96bf, 0xe8d1, 0x96c0, 0x96c1, 0xbced, 0x96c2, 0x96c3, 0xbfc2, /*0xe8-0xef*/
- 0xe8cd, 0xd6f9, 0x96c4, 0xc1f8, 0xb2f1, 0x96c5, 0x96c6, 0x96c7, /*0xf0-0xf7*/
- 0x96c8, 0x96c9, 0x96ca, 0x96cb, 0x96cc, 0xe8df, 0x96cd, 0xcac1, /*0xf8-0xff*/
- /* 0x6800 */
- 0xe8d9, 0x96ce, 0x96cf, 0x96d0, 0x96d1, 0xd5a4, 0x96d2, 0xb1ea, /*0x00-0x07*/
- 0xd5bb, 0xe8ce, 0xe8d0, 0xb6b0, 0xe8d3, 0x96d3, 0xe8dd, 0xc0b8, /*0x08-0x0f*/
- 0x96d4, 0xcaf7, 0x96d5, 0xcba8, 0x96d6, 0x96d7, 0xc6dc, 0xc0f5, /*0x10-0x17*/
- 0x96d8, 0x96d9, 0x96da, 0x96db, 0x96dc, 0xe8e9, 0x96dd, 0x96de, /*0x18-0x1f*/
- 0x96df, 0xd0a3, 0x96e0, 0x96e1, 0x96e2, 0x96e3, 0x96e4, 0x96e5, /*0x20-0x27*/
- 0x96e6, 0xe8f2, 0xd6ea, 0x96e7, 0x96e8, 0x96e9, 0x96ea, 0x96eb, /*0x28-0x2f*/
- 0x96ec, 0x96ed, 0xe8e0, 0xe8e1, 0x96ee, 0x96ef, 0x96f0, 0xd1f9, /*0x30-0x37*/
- 0xbacb, 0xb8f9, 0x96f1, 0x96f2, 0xb8f1, 0xd4d4, 0xe8ef, 0x96f3, /*0x38-0x3f*/
- 0xe8ee, 0xe8ec, 0xb9f0, 0xccd2, 0xe8e6, 0xcea6, 0xbff2, 0x96f4, /*0x40-0x47*/
- 0xb0b8, 0xe8f1, 0xe8f0, 0x96f5, 0xd7c0, 0x96f6, 0xe8e4, 0x96f7, /*0x48-0x4f*/
- 0xcda9, 0xc9a3, 0x96f8, 0xbbb8, 0xbddb, 0xe8ea, 0x96f9, 0x96fa, /*0x50-0x57*/
- 0x96fb, 0x96fc, 0x96fd, 0x96fe, 0x9740, 0x9741, 0x9742, 0x9743, /*0x58-0x5f*/
- 0xe8e2, 0xe8e3, 0xe8e5, 0xb5b5, 0xe8e7, 0xc7c5, 0xe8eb, 0xe8ed, /*0x60-0x67*/
- 0xbdb0, 0xd7ae, 0x9744, 0xe8f8, 0x9745, 0x9746, 0x9747, 0x9748, /*0x68-0x6f*/
- 0x9749, 0x974a, 0x974b, 0x974c, 0xe8f5, 0x974d, 0xcdb0, 0xe8f6, /*0x70-0x77*/
- 0x974e, 0x974f, 0x9750, 0x9751, 0x9752, 0x9753, 0x9754, 0x9755, /*0x78-0x7f*/
- 0x9756, 0xc1ba, 0x9757, 0xe8e8, 0x9758, 0xc3b7, 0xb0f0, 0x9759, /*0x80-0x87*/
- 0x975a, 0x975b, 0x975c, 0x975d, 0x975e, 0x975f, 0x9760, 0xe8f4, /*0x88-0x8f*/
- 0x9761, 0x9762, 0x9763, 0xe8f7, 0x9764, 0x9765, 0x9766, 0xb9a3, /*0x90-0x97*/
- 0x9767, 0x9768, 0x9769, 0x976a, 0x976b, 0x976c, 0x976d, 0x976e, /*0x98-0x9f*/
- 0x976f, 0x9770, 0xc9d2, 0x9771, 0x9772, 0x9773, 0xc3ce, 0xcee0, /*0xa0-0xa7*/
- 0xc0e6, 0x9774, 0x9775, 0x9776, 0x9777, 0xcbf3, 0x9778, 0xccdd, /*0xa8-0xaf*/
- 0xd0b5, 0x9779, 0x977a, 0xcae1, 0x977b, 0xe8f3, 0x977c, 0x977d, /*0xb0-0xb7*/
- 0x977e, 0x9780, 0x9781, 0x9782, 0x9783, 0x9784, 0x9785, 0x9786, /*0xb8-0xbf*/
- 0xbcec, 0x9787, 0xe8f9, 0x9788, 0x9789, 0x978a, 0x978b, 0x978c, /*0xc0-0xc7*/
- 0x978d, 0xc3de, 0x978e, 0xc6e5, 0x978f, 0xb9f7, 0x9790, 0x9791, /*0xc8-0xcf*/
- 0x9792, 0x9793, 0xb0f4, 0x9794, 0x9795, 0xd7d8, 0x9796, 0x9797, /*0xd0-0xd7*/
- 0xbcac, 0x9798, 0xc5ef, 0x9799, 0x979a, 0x979b, 0x979c, 0x979d, /*0xd8-0xdf*/
- 0xccc4, 0x979e, 0x979f, 0xe9a6, 0x97a0, 0x97a1, 0x97a2, 0x97a3, /*0xe0-0xe7*/
- 0x97a4, 0x97a5, 0x97a6, 0x97a7, 0x97a8, 0x97a9, 0xc9ad, 0x97aa, /*0xe8-0xef*/
- 0xe9a2, 0xc0e2, 0x97ab, 0x97ac, 0x97ad, 0xbfc3, 0x97ae, 0x97af, /*0xf0-0xf7*/
- 0x97b0, 0xe8fe, 0xb9d7, 0x97b1, 0xe8fb, 0x97b2, 0x97b3, 0x97b4, /*0xf8-0xff*/
- /* 0x6900 */
- 0x97b5, 0xe9a4, 0x97b6, 0x97b7, 0x97b8, 0xd2ce, 0x97b9, 0x97ba, /*0x00-0x07*/
- 0x97bb, 0x97bc, 0x97bd, 0xe9a3, 0x97be, 0xd6b2, 0xd7b5, 0x97bf, /*0x08-0x0f*/
- 0xe9a7, 0x97c0, 0xbdb7, 0x97c1, 0x97c2, 0x97c3, 0x97c4, 0x97c5, /*0x10-0x17*/
- 0x97c6, 0x97c7, 0x97c8, 0x97c9, 0x97ca, 0x97cb, 0x97cc, 0xe8fc, /*0x18-0x1f*/
- 0xe8fd, 0x97cd, 0x97ce, 0x97cf, 0xe9a1, 0x97d0, 0x97d1, 0x97d2, /*0x20-0x27*/
- 0x97d3, 0x97d4, 0x97d5, 0x97d6, 0x97d7, 0xcdd6, 0x97d8, 0x97d9, /*0x28-0x2f*/
- 0xd2ac, 0x97da, 0x97db, 0x97dc, 0xe9b2, 0x97dd, 0x97de, 0x97df, /*0x30-0x37*/
- 0x97e0, 0xe9a9, 0x97e1, 0x97e2, 0x97e3, 0xb4aa, 0x97e4, 0xb4bb, /*0x38-0x3f*/
- 0x97e5, 0x97e6, 0xe9ab, 0x97e7, 0x97e8, 0x97e9, 0x97ea, 0x97eb, /*0x40-0x47*/
- 0x97ec, 0x97ed, 0x97ee, 0x97ef, 0x97f0, 0x97f1, 0x97f2, 0x97f3, /*0x48-0x4f*/
- 0x97f4, 0x97f5, 0x97f6, 0x97f7, 0xd0a8, 0x97f8, 0x97f9, 0xe9a5, /*0x50-0x57*/
- 0x97fa, 0x97fb, 0xb3fe, 0x97fc, 0x97fd, 0xe9ac, 0xc0e3, 0x97fe, /*0x58-0x5f*/
- 0xe9aa, 0x9840, 0x9841, 0xe9b9, 0x9842, 0x9843, 0xe9b8, 0x9844, /*0x60-0x67*/
- 0x9845, 0x9846, 0x9847, 0xe9ae, 0x9848, 0x9849, 0xe8fa, 0x984a, /*0x68-0x6f*/
- 0x984b, 0xe9a8, 0x984c, 0x984d, 0x984e, 0x984f, 0x9850, 0xbfac, /*0x70-0x77*/
- 0xe9b1, 0xe9ba, 0x9851, 0x9852, 0xc2a5, 0x9853, 0x9854, 0x9855, /*0x78-0x7f*/
- 0xe9af, 0x9856, 0xb8c5, 0x9857, 0xe9ad, 0x9858, 0xd3dc, 0xe9b4, /*0x80-0x87*/
- 0xe9b5, 0xe9b7, 0x9859, 0x985a, 0x985b, 0xe9c7, 0x985c, 0x985d, /*0x88-0x8f*/
- 0x985e, 0x985f, 0x9860, 0x9861, 0xc0c6, 0xe9c5, 0x9862, 0x9863, /*0x90-0x97*/
- 0xe9b0, 0x9864, 0x9865, 0xe9bb, 0xb0f1, 0x9866, 0x9867, 0x9868, /*0x98-0x9f*/
- 0x9869, 0x986a, 0x986b, 0x986c, 0x986d, 0x986e, 0x986f, 0xe9bc, /*0xa0-0xa7*/
- 0xd5a5, 0x9870, 0x9871, 0xe9be, 0x9872, 0xe9bf, 0x9873, 0x9874, /*0xa8-0xaf*/
- 0x9875, 0xe9c1, 0x9876, 0x9877, 0xc1f1, 0x9878, 0x9879, 0xc8b6, /*0xb0-0xb7*/
- 0x987a, 0x987b, 0x987c, 0xe9bd, 0x987d, 0x987e, 0x9880, 0x9881, /*0xb8-0xbf*/
- 0x9882, 0xe9c2, 0x9883, 0x9884, 0x9885, 0x9886, 0x9887, 0x9888, /*0xc0-0xc7*/
- 0x9889, 0x988a, 0xe9c3, 0x988b, 0xe9b3, 0x988c, 0xe9b6, 0x988d, /*0xc8-0xcf*/
- 0xbbb1, 0x988e, 0x988f, 0x9890, 0xe9c0, 0x9891, 0x9892, 0x9893, /*0xd0-0xd7*/
- 0x9894, 0x9895, 0x9896, 0xbcf7, 0x9897, 0x9898, 0x9899, 0xe9c4, /*0xd8-0xdf*/
- 0xe9c6, 0x989a, 0x989b, 0x989c, 0x989d, 0x989e, 0x989f, 0x98a0, /*0xe0-0xe7*/
- 0x98a1, 0x98a2, 0x98a3, 0x98a4, 0x98a5, 0xe9ca, 0x98a6, 0x98a7, /*0xe8-0xef*/
- 0x98a8, 0x98a9, 0xe9ce, 0x98aa, 0x98ab, 0x98ac, 0x98ad, 0x98ae, /*0xf0-0xf7*/
- 0x98af, 0x98b0, 0x98b1, 0x98b2, 0x98b3, 0xb2db, 0x98b4, 0xe9c8, /*0xf8-0xff*/
- /* 0x6a00 */
- 0x98b5, 0x98b6, 0x98b7, 0x98b8, 0x98b9, 0x98ba, 0x98bb, 0x98bc, /*0x00-0x07*/
- 0x98bd, 0x98be, 0xb7ae, 0x98bf, 0x98c0, 0x98c1, 0x98c2, 0x98c3, /*0x08-0x0f*/
- 0x98c4, 0x98c5, 0x98c6, 0x98c7, 0x98c8, 0x98c9, 0x98ca, 0xe9cb, /*0x10-0x17*/
- 0xe9cc, 0x98cb, 0x98cc, 0x98cd, 0x98ce, 0x98cf, 0x98d0, 0xd5c1, /*0x18-0x1f*/
- 0x98d1, 0xc4a3, 0x98d2, 0x98d3, 0x98d4, 0x98d5, 0x98d6, 0x98d7, /*0x20-0x27*/
- 0xe9d8, 0x98d8, 0xbae1, 0x98d9, 0x98da, 0x98db, 0x98dc, 0xe9c9, /*0x28-0x2f*/
- 0x98dd, 0xd3a3, 0x98de, 0x98df, 0x98e0, 0xe9d4, 0x98e1, 0x98e2, /*0x30-0x37*/
- 0x98e3, 0x98e4, 0x98e5, 0x98e6, 0x98e7, 0xe9d7, 0xe9d0, 0x98e8, /*0x38-0x3f*/
- 0x98e9, 0x98ea, 0x98eb, 0x98ec, 0xe9cf, 0x98ed, 0x98ee, 0xc7c1, /*0x40-0x47*/
- 0x98ef, 0x98f0, 0x98f1, 0x98f2, 0x98f3, 0x98f4, 0x98f5, 0x98f6, /*0x48-0x4f*/
- 0xe9d2, 0x98f7, 0x98f8, 0x98f9, 0x98fa, 0x98fb, 0x98fc, 0x98fd, /*0x50-0x57*/
- 0xe9d9, 0xb3c8, 0x98fe, 0xe9d3, 0x9940, 0x9941, 0x9942, 0x9943, /*0x58-0x5f*/
- 0x9944, 0xcff0, 0x9945, 0x9946, 0x9947, 0xe9cd, 0x9948, 0x9949, /*0x60-0x67*/
- 0x994a, 0x994b, 0x994c, 0x994d, 0x994e, 0x994f, 0x9950, 0x9951, /*0x68-0x6f*/
- 0x9952, 0xb3f7, 0x9953, 0x9954, 0x9955, 0x9956, 0x9957, 0x9958, /*0x70-0x77*/
- 0x9959, 0xe9d6, 0x995a, 0x995b, 0xe9da, 0x995c, 0x995d, 0x995e, /*0x78-0x7f*/
- 0xccb4, 0x995f, 0x9960, 0x9961, 0xcfad, 0x9962, 0x9963, 0x9964, /*0x80-0x87*/
- 0x9965, 0x9966, 0x9967, 0x9968, 0x9969, 0x996a, 0xe9d5, 0x996b, /*0x88-0x8f*/
- 0xe9dc, 0xe9db, 0x996c, 0x996d, 0x996e, 0x996f, 0x9970, 0xe9de, /*0x90-0x97*/
- 0x9971, 0x9972, 0x9973, 0x9974, 0x9975, 0x9976, 0x9977, 0x9978, /*0x98-0x9f*/
- 0xe9d1, 0x9979, 0x997a, 0x997b, 0x997c, 0x997d, 0x997e, 0x9980, /*0xa0-0xa7*/
- 0x9981, 0xe9dd, 0x9982, 0xe9df, 0xc3ca, 0x9983, 0x9984, 0x9985, /*0xa8-0xaf*/
- 0x9986, 0x9987, 0x9988, 0x9989, 0x998a, 0x998b, 0x998c, 0x998d, /*0xb0-0xb7*/
- 0x998e, 0x998f, 0x9990, 0x9991, 0x9992, 0x9993, 0x9994, 0x9995, /*0xb8-0xbf*/
- 0x9996, 0x9997, 0x9998, 0x9999, 0x999a, 0x999b, 0x999c, 0x999d, /*0xc0-0xc7*/
- 0x999e, 0x999f, 0x99a0, 0x99a1, 0x99a2, 0x99a3, 0x99a4, 0x99a5, /*0xc8-0xcf*/
- 0x99a6, 0x99a7, 0x99a8, 0x99a9, 0x99aa, 0x99ab, 0x99ac, 0x99ad, /*0xd0-0xd7*/
- 0x99ae, 0x99af, 0x99b0, 0x99b1, 0x99b2, 0x99b3, 0x99b4, 0x99b5, /*0xd8-0xdf*/
- 0x99b6, 0x99b7, 0x99b8, 0x99b9, 0x99ba, 0x99bb, 0x99bc, 0x99bd, /*0xe0-0xe7*/
- 0x99be, 0x99bf, 0x99c0, 0x99c1, 0x99c2, 0x99c3, 0x99c4, 0x99c5, /*0xe8-0xef*/
- 0x99c6, 0x99c7, 0x99c8, 0x99c9, 0x99ca, 0x99cb, 0x99cc, 0x99cd, /*0xf0-0xf7*/
- 0x99ce, 0x99cf, 0x99d0, 0x99d1, 0x99d2, 0x99d3, 0x99d4, 0x99d5, /*0xf8-0xff*/
- /* 0x6b00 */
- 0x99d6, 0x99d7, 0x99d8, 0x99d9, 0x99da, 0x99db, 0x99dc, 0x99dd, /*0x00-0x07*/
- 0x99de, 0x99df, 0x99e0, 0x99e1, 0x99e2, 0x99e3, 0x99e4, 0x99e5, /*0x08-0x0f*/
- 0x99e6, 0x99e7, 0x99e8, 0x99e9, 0x99ea, 0x99eb, 0x99ec, 0x99ed, /*0x10-0x17*/
- 0x99ee, 0x99ef, 0x99f0, 0x99f1, 0x99f2, 0x99f3, 0x99f4, 0x99f5, /*0x18-0x1f*/
- 0xc7b7, 0xb4ce, 0xbbb6, 0xd0c0, 0xeca3, 0x99f6, 0x99f7, 0xc5b7, /*0x20-0x27*/
- 0x99f8, 0x99f9, 0x99fa, 0x99fb, 0x99fc, 0x99fd, 0x99fe, 0x9a40, /*0x28-0x2f*/
- 0x9a41, 0x9a42, 0xd3fb, 0x9a43, 0x9a44, 0x9a45, 0x9a46, 0xeca4, /*0x30-0x37*/
- 0x9a47, 0xeca5, 0xc6db, 0x9a48, 0x9a49, 0x9a4a, 0xbfee, 0x9a4b, /*0x38-0x3f*/
- 0x9a4c, 0x9a4d, 0x9a4e, 0xeca6, 0x9a4f, 0x9a50, 0xeca7, 0xd0aa, /*0x40-0x47*/
- 0x9a51, 0xc7b8, 0x9a52, 0x9a53, 0xb8e8, 0x9a54, 0x9a55, 0x9a56, /*0x48-0x4f*/
- 0x9a57, 0x9a58, 0x9a59, 0x9a5a, 0x9a5b, 0x9a5c, 0x9a5d, 0x9a5e, /*0x50-0x57*/
- 0x9a5f, 0xeca8, 0x9a60, 0x9a61, 0x9a62, 0x9a63, 0x9a64, 0x9a65, /*0x58-0x5f*/
- 0x9a66, 0x9a67, 0xd6b9, 0xd5fd, 0xb4cb, 0xb2bd, 0xcee4, 0xc6e7, /*0x60-0x67*/
- 0x9a68, 0x9a69, 0xcde1, 0x9a6a, 0x9a6b, 0x9a6c, 0x9a6d, 0x9a6e, /*0x68-0x6f*/
- 0x9a6f, 0x9a70, 0x9a71, 0x9a72, 0x9a73, 0x9a74, 0x9a75, 0x9a76, /*0x70-0x77*/
- 0x9a77, 0xb4f5, 0x9a78, 0xcbc0, 0xbcdf, 0x9a79, 0x9a7a, 0x9a7b, /*0x78-0x7f*/
- 0x9a7c, 0xe9e2, 0xe9e3, 0xd1ea, 0xe9e5, 0x9a7d, 0xb4f9, 0xe9e4, /*0x80-0x87*/
- 0x9a7e, 0xd1b3, 0xcae2, 0xb2d0, 0x9a80, 0xe9e8, 0x9a81, 0x9a82, /*0x88-0x8f*/
- 0x9a83, 0x9a84, 0xe9e6, 0xe9e7, 0x9a85, 0x9a86, 0xd6b3, 0x9a87, /*0x90-0x97*/
- 0x9a88, 0x9a89, 0xe9e9, 0xe9ea, 0x9a8a, 0x9a8b, 0x9a8c, 0x9a8d, /*0x98-0x9f*/
- 0x9a8e, 0xe9eb, 0x9a8f, 0x9a90, 0x9a91, 0x9a92, 0x9a93, 0x9a94, /*0xa0-0xa7*/
- 0x9a95, 0x9a96, 0xe9ec, 0x9a97, 0x9a98, 0x9a99, 0x9a9a, 0x9a9b, /*0xa8-0xaf*/
- 0x9a9c, 0x9a9d, 0x9a9e, 0xecaf, 0xc5b9, 0xb6ce, 0x9a9f, 0xd2f3, /*0xb0-0xb7*/
- 0x9aa0, 0x9aa1, 0x9aa2, 0x9aa3, 0x9aa4, 0x9aa5, 0x9aa6, 0xb5ee, /*0xb8-0xbf*/
- 0x9aa7, 0xbbd9, 0xecb1, 0x9aa8, 0x9aa9, 0xd2e3, 0x9aaa, 0x9aab, /*0xc0-0xc7*/
- 0x9aac, 0x9aad, 0x9aae, 0xcee3, 0x9aaf, 0xc4b8, 0x9ab0, 0xc3bf, /*0xc8-0xcf*/
- 0x9ab1, 0x9ab2, 0xb6be, 0xd8b9, 0xb1c8, 0xb1cf, 0xb1d1, 0xc5fe, /*0xd0-0xd7*/
- 0x9ab3, 0xb1d0, 0x9ab4, 0xc3ab, 0x9ab5, 0x9ab6, 0x9ab7, 0x9ab8, /*0xd8-0xdf*/
- 0x9ab9, 0xd5b1, 0x9aba, 0x9abb, 0x9abc, 0x9abd, 0x9abe, 0x9abf, /*0xe0-0xe7*/
- 0x9ac0, 0x9ac1, 0xeba4, 0xbac1, 0x9ac2, 0x9ac3, 0x9ac4, 0xccba, /*0xe8-0xef*/
- 0x9ac5, 0x9ac6, 0x9ac7, 0xeba5, 0x9ac8, 0xeba7, 0x9ac9, 0x9aca, /*0xf0-0xf7*/
- 0x9acb, 0xeba8, 0x9acc, 0x9acd, 0x9ace, 0xeba6, 0x9acf, 0x9ad0, /*0xf8-0xff*/
- /* 0x6c00 */
- 0x9ad1, 0x9ad2, 0x9ad3, 0x9ad4, 0x9ad5, 0xeba9, 0xebab, 0xebaa, /*0x00-0x07*/
- 0x9ad6, 0x9ad7, 0x9ad8, 0x9ad9, 0x9ada, 0xebac, 0x9adb, 0xcacf, /*0x08-0x0f*/
- 0xd8b5, 0xc3f1, 0x9adc, 0xc3a5, 0xc6f8, 0xebad, 0xc4ca, 0x9add, /*0x10-0x17*/
- 0xebae, 0xebaf, 0xebb0, 0xb7d5, 0x9ade, 0x9adf, 0x9ae0, 0xb7fa, /*0x18-0x1f*/
- 0x9ae1, 0xebb1, 0xc7e2, 0x9ae2, 0xebb3, 0x9ae3, 0xbaa4, 0xd1f5, /*0x20-0x27*/
- 0xb0b1, 0xebb2, 0xebb4, 0x9ae4, 0x9ae5, 0x9ae6, 0xb5aa, 0xc2c8, /*0x28-0x2f*/
- 0xc7e8, 0x9ae7, 0xebb5, 0x9ae8, 0xcbae, 0xe3df, 0x9ae9, 0x9aea, /*0x30-0x37*/
- 0xd3c0, 0x9aeb, 0x9aec, 0x9aed, 0x9aee, 0xd9db, 0x9aef, 0x9af0, /*0x38-0x3f*/
- 0xcda1, 0xd6ad, 0xc7f3, 0x9af1, 0x9af2, 0x9af3, 0xd9e0, 0xbbe3, /*0x40-0x47*/
- 0x9af4, 0xbaba, 0xe3e2, 0x9af5, 0x9af6, 0x9af7, 0x9af8, 0x9af9, /*0x48-0x4f*/
- 0xcfab, 0x9afa, 0x9afb, 0x9afc, 0xe3e0, 0xc9c7, 0x9afd, 0xbab9, /*0x50-0x57*/
- 0x9afe, 0x9b40, 0x9b41, 0xd1b4, 0xe3e1, 0xc8ea, 0xb9af, 0xbdad, /*0x58-0x5f*/
- 0xb3d8, 0xcedb, 0x9b42, 0x9b43, 0xccc0, 0x9b44, 0x9b45, 0x9b46, /*0x60-0x67*/
- 0xe3e8, 0xe3e9, 0xcdf4, 0x9b47, 0x9b48, 0x9b49, 0x9b4a, 0x9b4b, /*0x68-0x6f*/
- 0xccad, 0x9b4c, 0xbcb3, 0x9b4d, 0xe3ea, 0x9b4e, 0xe3eb, 0x9b4f, /*0x70-0x77*/
- 0x9b50, 0xd0da, 0x9b51, 0x9b52, 0x9b53, 0xc6fb, 0xb7da, 0x9b54, /*0x78-0x7f*/
- 0x9b55, 0xc7df, 0xd2ca, 0xced6, 0x9b56, 0xe3e4, 0xe3ec, 0x9b57, /*0x80-0x87*/
- 0xc9f2, 0xb3c1, 0x9b58, 0x9b59, 0xe3e7, 0x9b5a, 0x9b5b, 0xc6e3, /*0x88-0x8f*/
- 0xe3e5, 0x9b5c, 0x9b5d, 0xedb3, 0xe3e6, 0x9b5e, 0x9b5f, 0x9b60, /*0x90-0x97*/
- 0x9b61, 0xc9b3, 0x9b62, 0xc5e6, 0x9b63, 0x9b64, 0x9b65, 0xb9b5, /*0x98-0x9f*/
- 0x9b66, 0xc3bb, 0x9b67, 0xe3e3, 0xc5bd, 0xc1a4, 0xc2d9, 0xb2d7, /*0xa0-0xa7*/
- 0x9b68, 0xe3ed, 0xbba6, 0xc4ad, 0x9b69, 0xe3f0, 0xbeda, 0x9b6a, /*0xa8-0xaf*/
- 0x9b6b, 0xe3fb, 0xe3f5, 0xbad3, 0x9b6c, 0x9b6d, 0x9b6e, 0x9b6f, /*0xb0-0xb7*/
- 0xb7d0, 0xd3cd, 0x9b70, 0xd6ce, 0xd5d3, 0xb9c1, 0xd5b4, 0xd1d8, /*0xb8-0xbf*/
- 0x9b71, 0x9b72, 0x9b73, 0x9b74, 0xd0b9, 0xc7f6, 0x9b75, 0x9b76, /*0xc0-0xc7*/
- 0x9b77, 0xc8aa, 0xb2b4, 0x9b78, 0xc3da, 0x9b79, 0x9b7a, 0x9b7b, /*0xc8-0xcf*/
- 0xe3ee, 0x9b7c, 0x9b7d, 0xe3fc, 0xe3ef, 0xb7a8, 0xe3f7, 0xe3f4, /*0xd0-0xd7*/
- 0x9b7e, 0x9b80, 0x9b81, 0xb7ba, 0x9b82, 0x9b83, 0xc5a2, 0x9b84, /*0xd8-0xdf*/
- 0xe3f6, 0xc5dd, 0xb2a8, 0xc6fc, 0x9b85, 0xc4e0, 0x9b86, 0x9b87, /*0xe0-0xe7*/
- 0xd7a2, 0x9b88, 0xc0e1, 0xe3f9, 0x9b89, 0x9b8a, 0xe3fa, 0xe3fd, /*0xe8-0xef*/
- 0xcca9, 0xe3f3, 0x9b8b, 0xd3be, 0x9b8c, 0xb1c3, 0xedb4, 0xe3f1, /*0xf0-0xf7*/
- 0xe3f2, 0x9b8d, 0xe3f8, 0xd0ba, 0xc6c3, 0xd4f3, 0xe3fe, 0x9b8e, /*0xf8-0xff*/
- /* 0x6d00 */
- 0x9b8f, 0xbde0, 0x9b90, 0x9b91, 0xe4a7, 0x9b92, 0x9b93, 0xe4a6, /*0x00-0x07*/
- 0x9b94, 0x9b95, 0x9b96, 0xd1f3, 0xe4a3, 0x9b97, 0xe4a9, 0x9b98, /*0x08-0x0f*/
- 0x9b99, 0x9b9a, 0xc8f7, 0x9b9b, 0x9b9c, 0x9b9d, 0x9b9e, 0xcfb4, /*0x10-0x17*/
- 0x9b9f, 0xe4a8, 0xe4ae, 0xc2e5, 0x9ba0, 0x9ba1, 0xb6b4, 0x9ba2, /*0x18-0x1f*/
- 0x9ba3, 0x9ba4, 0x9ba5, 0x9ba6, 0x9ba7, 0xbdf2, 0x9ba8, 0xe4a2, /*0x20-0x27*/
- 0x9ba9, 0x9baa, 0xbae9, 0xe4aa, 0x9bab, 0x9bac, 0xe4ac, 0x9bad, /*0x28-0x2f*/
- 0x9bae, 0xb6fd, 0xd6de, 0xe4b2, 0x9baf, 0xe4ad, 0x9bb0, 0x9bb1, /*0x30-0x37*/
- 0x9bb2, 0xe4a1, 0x9bb3, 0xbbee, 0xcddd, 0xc7a2, 0xc5c9, 0x9bb4, /*0x38-0x3f*/
- 0x9bb5, 0xc1f7, 0x9bb6, 0xe4a4, 0x9bb7, 0xc7b3, 0xbdac, 0xbdbd, /*0x40-0x47*/
- 0xe4a5, 0x9bb8, 0xd7c7, 0xb2e2, 0x9bb9, 0xe4ab, 0xbcc3, 0xe4af, /*0x48-0x4f*/
- 0x9bba, 0xbbeb, 0xe4b0, 0xc5a8, 0xe4b1, 0x9bbb, 0x9bbc, 0x9bbd, /*0x50-0x57*/
- 0x9bbe, 0xd5e3, 0xbfa3, 0x9bbf, 0xe4ba, 0x9bc0, 0xe4b7, 0x9bc1, /*0x58-0x5f*/
- 0xe4bb, 0x9bc2, 0x9bc3, 0xe4bd, 0x9bc4, 0x9bc5, 0xc6d6, 0x9bc6, /*0x60-0x67*/
- 0x9bc7, 0xbac6, 0xc0cb, 0x9bc8, 0x9bc9, 0x9bca, 0xb8a1, 0xe4b4, /*0x68-0x6f*/
- 0x9bcb, 0x9bcc, 0x9bcd, 0x9bce, 0xd4a1, 0x9bcf, 0x9bd0, 0xbaa3, /*0x70-0x77*/
- 0xbdfe, 0x9bd1, 0x9bd2, 0x9bd3, 0xe4bc, 0x9bd4, 0x9bd5, 0x9bd6, /*0x78-0x7f*/
- 0x9bd7, 0x9bd8, 0xcdbf, 0x9bd9, 0x9bda, 0xc4f9, 0x9bdb, 0x9bdc, /*0x80-0x87*/
- 0xcffb, 0xc9e6, 0x9bdd, 0x9bde, 0xd3bf, 0x9bdf, 0xcfd1, 0x9be0, /*0x88-0x8f*/
- 0x9be1, 0xe4b3, 0x9be2, 0xe4b8, 0xe4b9, 0xcce9, 0x9be3, 0x9be4, /*0x90-0x97*/
- 0x9be5, 0x9be6, 0x9be7, 0xccce, 0x9be8, 0xc0d4, 0xe4b5, 0xc1b0, /*0x98-0x9f*/
- 0xe4b6, 0xced0, 0x9be9, 0xbbc1, 0xb5d3, 0x9bea, 0xc8f3, 0xbda7, /*0xa0-0xa7*/
- 0xd5c7, 0xc9ac, 0xb8a2, 0xe4ca, 0x9beb, 0x9bec, 0xe4cc, 0xd1c4, /*0xa8-0xaf*/
- 0x9bed, 0x9bee, 0xd2ba, 0x9bef, 0x9bf0, 0xbaad, 0x9bf1, 0x9bf2, /*0xb0-0xb7*/
- 0xbad4, 0x9bf3, 0x9bf4, 0x9bf5, 0x9bf6, 0x9bf7, 0x9bf8, 0xe4c3, /*0xb8-0xbf*/
- 0xb5ed, 0x9bf9, 0x9bfa, 0x9bfb, 0xd7cd, 0xe4c0, 0xcffd, 0xe4bf, /*0xc0-0xc7*/
- 0x9bfc, 0x9bfd, 0x9bfe, 0xc1dc, 0xccca, 0x9c40, 0x9c41, 0x9c42, /*0xc8-0xcf*/
- 0x9c43, 0xcae7, 0x9c44, 0x9c45, 0x9c46, 0x9c47, 0xc4d7, 0x9c48, /*0xd0-0xd7*/
- 0xccd4, 0xe4c8, 0x9c49, 0x9c4a, 0x9c4b, 0xe4c7, 0xe4c1, 0x9c4c, /*0xd8-0xdf*/
- 0xe4c4, 0xb5ad, 0x9c4d, 0x9c4e, 0xd3d9, 0x9c4f, 0xe4c6, 0x9c50, /*0xe0-0xe7*/
- 0x9c51, 0x9c52, 0x9c53, 0xd2f9, 0xb4e3, 0x9c54, 0xbbb4, 0x9c55, /*0xe8-0xef*/
- 0x9c56, 0xc9ee, 0x9c57, 0xb4be, 0x9c58, 0x9c59, 0x9c5a, 0xbbec, /*0xf0-0xf7*/
- 0x9c5b, 0xd1cd, 0x9c5c, 0xcced, 0xedb5, 0x9c5d, 0x9c5e, 0x9c5f, /*0xf8-0xff*/
- /* 0x6e00 */
- 0x9c60, 0x9c61, 0x9c62, 0x9c63, 0x9c64, 0xc7e5, 0x9c65, 0x9c66, /*0x00-0x07*/
- 0x9c67, 0x9c68, 0xd4a8, 0x9c69, 0xe4cb, 0xd7d5, 0xe4c2, 0x9c6a, /*0x08-0x0f*/
- 0xbda5, 0xe4c5, 0x9c6b, 0x9c6c, 0xd3e6, 0x9c6d, 0xe4c9, 0xc9f8, /*0x10-0x17*/
- 0x9c6e, 0x9c6f, 0xe4be, 0x9c70, 0x9c71, 0xd3e5, 0x9c72, 0x9c73, /*0x18-0x1f*/
- 0xc7fe, 0xb6c9, 0x9c74, 0xd4fc, 0xb2b3, 0xe4d7, 0x9c75, 0x9c76, /*0x20-0x27*/
- 0x9c77, 0xcec2, 0x9c78, 0xe4cd, 0x9c79, 0xcebc, 0x9c7a, 0xb8db, /*0x28-0x2f*/
- 0x9c7b, 0x9c7c, 0xe4d6, 0x9c7d, 0xbfca, 0x9c7e, 0x9c80, 0x9c81, /*0x30-0x37*/
- 0xd3ce, 0x9c82, 0xc3ec, 0x9c83, 0x9c84, 0x9c85, 0x9c86, 0x9c87, /*0x38-0x3f*/
- 0x9c88, 0x9c89, 0x9c8a, 0xc5c8, 0xe4d8, 0x9c8b, 0x9c8c, 0x9c8d, /*0x40-0x47*/
- 0x9c8e, 0x9c8f, 0x9c90, 0x9c91, 0x9c92, 0xcdc4, 0xe4cf, 0x9c93, /*0x48-0x4f*/
- 0x9c94, 0x9c95, 0x9c96, 0xe4d4, 0xe4d5, 0x9c97, 0xbafe, 0x9c98, /*0x50-0x57*/
- 0xcfe6, 0x9c99, 0x9c9a, 0xd5bf, 0x9c9b, 0x9c9c, 0x9c9d, 0xe4d2, /*0x58-0x5f*/
- 0x9c9e, 0x9c9f, 0x9ca0, 0x9ca1, 0x9ca2, 0x9ca3, 0x9ca4, 0x9ca5, /*0x60-0x67*/
- 0x9ca6, 0x9ca7, 0x9ca8, 0xe4d0, 0x9ca9, 0x9caa, 0xe4ce, 0x9cab, /*0x68-0x6f*/
- 0x9cac, 0x9cad, 0x9cae, 0x9caf, 0x9cb0, 0x9cb1, 0x9cb2, 0x9cb3, /*0x70-0x77*/
- 0x9cb4, 0x9cb5, 0x9cb6, 0x9cb7, 0x9cb8, 0x9cb9, 0xcde5, 0xcaaa, /*0x78-0x7f*/
- 0x9cba, 0x9cbb, 0x9cbc, 0xc0a3, 0x9cbd, 0xbda6, 0xe4d3, 0x9cbe, /*0x80-0x87*/
- 0x9cbf, 0xb8c8, 0x9cc0, 0x9cc1, 0x9cc2, 0x9cc3, 0x9cc4, 0xe4e7, /*0x88-0x8f*/
- 0xd4b4, 0x9cc5, 0x9cc6, 0x9cc7, 0x9cc8, 0x9cc9, 0x9cca, 0x9ccb, /*0x90-0x97*/
- 0xe4db, 0x9ccc, 0x9ccd, 0x9cce, 0xc1ef, 0x9ccf, 0x9cd0, 0xe4e9, /*0x98-0x9f*/
- 0x9cd1, 0x9cd2, 0xd2e7, 0x9cd3, 0x9cd4, 0xe4df, 0x9cd5, 0xe4e0, /*0xa0-0xa7*/
- 0x9cd6, 0x9cd7, 0xcfaa, 0x9cd8, 0x9cd9, 0x9cda, 0x9cdb, 0xcbdd, /*0xa8-0xaf*/
- 0x9cdc, 0xe4da, 0xe4d1, 0x9cdd, 0xe4e5, 0x9cde, 0xc8dc, 0xe4e3, /*0xb0-0xb7*/
- 0x9cdf, 0x9ce0, 0xc4e7, 0xe4e2, 0x9ce1, 0xe4e1, 0x9ce2, 0x9ce3, /*0xb8-0xbf*/
- 0x9ce4, 0xb3fc, 0xe4e8, 0x9ce5, 0x9ce6, 0x9ce7, 0x9ce8, 0xb5e1, /*0xc0-0xc7*/
- 0x9ce9, 0x9cea, 0x9ceb, 0xd7cc, 0x9cec, 0x9ced, 0x9cee, 0xe4e6, /*0xc8-0xcf*/
- 0x9cef, 0xbbac, 0x9cf0, 0xd7d2, 0xcccf, 0xebf8, 0x9cf1, 0xe4e4, /*0xd0-0xd7*/
- 0x9cf2, 0x9cf3, 0xb9f6, 0x9cf4, 0x9cf5, 0x9cf6, 0xd6cd, 0xe4d9, /*0xd8-0xdf*/
- 0xe4dc, 0xc2fa, 0xe4de, 0x9cf7, 0xc2cb, 0xc0c4, 0xc2d0, 0x9cf8, /*0xe0-0xe7*/
- 0xb1f5, 0xccb2, 0x9cf9, 0x9cfa, 0x9cfb, 0x9cfc, 0x9cfd, 0x9cfe, /*0xe8-0xef*/
- 0x9d40, 0x9d41, 0x9d42, 0x9d43, 0xb5ce, 0x9d44, 0x9d45, 0x9d46, /*0xf0-0xf7*/
- 0x9d47, 0xe4ef, 0x9d48, 0x9d49, 0x9d4a, 0x9d4b, 0x9d4c, 0x9d4d, /*0xf8-0xff*/
- /* 0x6f00 */
- 0x9d4e, 0x9d4f, 0xc6af, 0x9d50, 0x9d51, 0x9d52, 0xc6e1, 0x9d53, /*0x00-0x07*/
- 0x9d54, 0xe4f5, 0x9d55, 0x9d56, 0x9d57, 0x9d58, 0x9d59, 0xc2a9, /*0x08-0x0f*/
- 0x9d5a, 0x9d5b, 0x9d5c, 0xc0ec, 0xd1dd, 0xe4ee, 0x9d5d, 0x9d5e, /*0x10-0x17*/
- 0x9d5f, 0x9d60, 0x9d61, 0x9d62, 0x9d63, 0x9d64, 0x9d65, 0x9d66, /*0x18-0x1f*/
- 0xc4ae, 0x9d67, 0x9d68, 0x9d69, 0xe4ed, 0x9d6a, 0x9d6b, 0x9d6c, /*0x20-0x27*/
- 0x9d6d, 0xe4f6, 0xe4f4, 0xc2fe, 0x9d6e, 0xe4dd, 0x9d6f, 0xe4f0, /*0x28-0x2f*/
- 0x9d70, 0xcafe, 0x9d71, 0xd5c4, 0x9d72, 0x9d73, 0xe4f1, 0x9d74, /*0x30-0x37*/
- 0x9d75, 0x9d76, 0x9d77, 0x9d78, 0x9d79, 0x9d7a, 0xd1fa, 0x9d7b, /*0x38-0x3f*/
- 0x9d7c, 0x9d7d, 0x9d7e, 0x9d80, 0x9d81, 0x9d82, 0xe4eb, 0xe4ec, /*0x40-0x47*/
- 0x9d83, 0x9d84, 0x9d85, 0xe4f2, 0x9d86, 0xceab, 0x9d87, 0x9d88, /*0x48-0x4f*/
- 0x9d89, 0x9d8a, 0x9d8b, 0x9d8c, 0x9d8d, 0x9d8e, 0x9d8f, 0x9d90, /*0x50-0x57*/
- 0xc5cb, 0x9d91, 0x9d92, 0x9d93, 0xc7b1, 0x9d94, 0xc2ba, 0x9d95, /*0x58-0x5f*/
- 0x9d96, 0x9d97, 0xe4ea, 0x9d98, 0x9d99, 0x9d9a, 0xc1ca, 0x9d9b, /*0x60-0x67*/
- 0x9d9c, 0x9d9d, 0x9d9e, 0x9d9f, 0x9da0, 0xccb6, 0xb3b1, 0x9da1, /*0x68-0x6f*/
- 0x9da2, 0x9da3, 0xe4fb, 0x9da4, 0xe4f3, 0x9da5, 0x9da6, 0x9da7, /*0x70-0x77*/
- 0xe4fa, 0x9da8, 0xe4fd, 0x9da9, 0xe4fc, 0x9daa, 0x9dab, 0x9dac, /*0x78-0x7f*/
- 0x9dad, 0x9dae, 0x9daf, 0x9db0, 0xb3ce, 0x9db1, 0x9db2, 0x9db3, /*0x80-0x87*/
- 0xb3ba, 0xe4f7, 0x9db4, 0x9db5, 0xe4f9, 0xe4f8, 0xc5ec, 0x9db6, /*0x88-0x8f*/
- 0x9db7, 0x9db8, 0x9db9, 0x9dba, 0x9dbb, 0x9dbc, 0x9dbd, 0x9dbe, /*0x90-0x97*/
- 0x9dbf, 0x9dc0, 0x9dc1, 0x9dc2, 0xc0bd, 0x9dc3, 0x9dc4, 0x9dc5, /*0x98-0x9f*/
- 0x9dc6, 0xd4e8, 0x9dc7, 0x9dc8, 0x9dc9, 0x9dca, 0x9dcb, 0xe5a2, /*0xa0-0xa7*/
- 0x9dcc, 0x9dcd, 0x9dce, 0x9dcf, 0x9dd0, 0x9dd1, 0x9dd2, 0x9dd3, /*0xa8-0xaf*/
- 0x9dd4, 0x9dd5, 0x9dd6, 0xb0c4, 0x9dd7, 0x9dd8, 0xe5a4, 0x9dd9, /*0xb0-0xb7*/
- 0x9dda, 0xe5a3, 0x9ddb, 0x9ddc, 0x9ddd, 0x9dde, 0x9ddf, 0x9de0, /*0xb8-0xbf*/
- 0xbca4, 0x9de1, 0xe5a5, 0x9de2, 0x9de3, 0x9de4, 0x9de5, 0x9de6, /*0xc0-0xc7*/
- 0x9de7, 0xe5a1, 0x9de8, 0x9de9, 0x9dea, 0x9deb, 0x9dec, 0x9ded, /*0xc8-0xcf*/
- 0x9dee, 0xe4fe, 0xb1f4, 0x9def, 0x9df0, 0x9df1, 0x9df2, 0x9df3, /*0xd0-0xd7*/
- 0x9df4, 0x9df5, 0x9df6, 0x9df7, 0x9df8, 0x9df9, 0xe5a8, 0x9dfa, /*0xd8-0xdf*/
- 0xe5a9, 0xe5a6, 0x9dfb, 0x9dfc, 0x9dfd, 0x9dfe, 0x9e40, 0x9e41, /*0xe0-0xe7*/
- 0x9e42, 0x9e43, 0x9e44, 0x9e45, 0x9e46, 0x9e47, 0xe5a7, 0xe5aa, /*0xe8-0xef*/
- 0x9e48, 0x9e49, 0x9e4a, 0x9e4b, 0x9e4c, 0x9e4d, 0x9e4e, 0x9e4f, /*0xf0-0xf7*/
- 0x9e50, 0x9e51, 0x9e52, 0x9e53, 0x9e54, 0x9e55, 0x9e56, 0x9e57, /*0xf8-0xff*/
- /* 0x7000 */
- 0x9e58, 0x9e59, 0x9e5a, 0x9e5b, 0x9e5c, 0x9e5d, 0x9e5e, 0x9e5f, /*0x00-0x07*/
- 0x9e60, 0x9e61, 0x9e62, 0x9e63, 0x9e64, 0x9e65, 0x9e66, 0x9e67, /*0x08-0x0f*/
- 0x9e68, 0xc6d9, 0x9e69, 0x9e6a, 0x9e6b, 0x9e6c, 0x9e6d, 0x9e6e, /*0x10-0x17*/
- 0x9e6f, 0x9e70, 0xe5ab, 0xe5ad, 0x9e71, 0x9e72, 0x9e73, 0x9e74, /*0x18-0x1f*/
- 0x9e75, 0x9e76, 0x9e77, 0xe5ac, 0x9e78, 0x9e79, 0x9e7a, 0x9e7b, /*0x20-0x27*/
- 0x9e7c, 0x9e7d, 0x9e7e, 0x9e80, 0x9e81, 0x9e82, 0x9e83, 0x9e84, /*0x28-0x2f*/
- 0x9e85, 0x9e86, 0x9e87, 0x9e88, 0x9e89, 0xe5af, 0x9e8a, 0x9e8b, /*0x30-0x37*/
- 0x9e8c, 0xe5ae, 0x9e8d, 0x9e8e, 0x9e8f, 0x9e90, 0x9e91, 0x9e92, /*0x38-0x3f*/
- 0x9e93, 0x9e94, 0x9e95, 0x9e96, 0x9e97, 0x9e98, 0x9e99, 0x9e9a, /*0x40-0x47*/
- 0x9e9b, 0x9e9c, 0x9e9d, 0x9e9e, 0xb9e0, 0x9e9f, 0x9ea0, 0xe5b0, /*0x48-0x4f*/
- 0x9ea1, 0x9ea2, 0x9ea3, 0x9ea4, 0x9ea5, 0x9ea6, 0x9ea7, 0x9ea8, /*0x50-0x57*/
- 0x9ea9, 0x9eaa, 0x9eab, 0x9eac, 0x9ead, 0x9eae, 0xe5b1, 0x9eaf, /*0x58-0x5f*/
- 0x9eb0, 0x9eb1, 0x9eb2, 0x9eb3, 0x9eb4, 0x9eb5, 0x9eb6, 0x9eb7, /*0x60-0x67*/
- 0x9eb8, 0x9eb9, 0x9eba, 0xbbf0, 0xece1, 0xc3f0, 0x9ebb, 0xb5c6, /*0x68-0x6f*/
- 0xbbd2, 0x9ebc, 0x9ebd, 0x9ebe, 0x9ebf, 0xc1e9, 0xd4ee, 0x9ec0, /*0x70-0x77*/
- 0xbec4, 0x9ec1, 0x9ec2, 0x9ec3, 0xd7c6, 0x9ec4, 0xd4d6, 0xb2d3, /*0x78-0x7f*/
- 0xecbe, 0x9ec5, 0x9ec6, 0x9ec7, 0x9ec8, 0xeac1, 0x9ec9, 0x9eca, /*0x80-0x87*/
- 0x9ecb, 0xc2af, 0xb4b6, 0x9ecc, 0x9ecd, 0x9ece, 0xd1d7, 0x9ecf, /*0x88-0x8f*/
- 0x9ed0, 0x9ed1, 0xb3b4, 0x9ed2, 0xc8b2, 0xbfbb, 0xecc0, 0x9ed3, /*0x90-0x97*/
- 0x9ed4, 0xd6cb, 0x9ed5, 0x9ed6, 0xecbf, 0xecc1, 0x9ed7, 0x9ed8, /*0x98-0x9f*/
- 0x9ed9, 0x9eda, 0x9edb, 0x9edc, 0x9edd, 0x9ede, 0x9edf, 0x9ee0, /*0xa0-0xa7*/
- 0x9ee1, 0x9ee2, 0x9ee3, 0xecc5, 0xbee6, 0xccbf, 0xc5da, 0xbebc, /*0xa8-0xaf*/
- 0x9ee4, 0xecc6, 0x9ee5, 0xb1fe, 0x9ee6, 0x9ee7, 0x9ee8, 0xecc4, /*0xb0-0xb7*/
- 0xd5a8, 0xb5e3, 0x9ee9, 0xecc2, 0xc1b6, 0xb3e3, 0x9eea, 0x9eeb, /*0xb8-0xbf*/
- 0xecc3, 0xcbb8, 0xc0c3, 0xccfe, 0x9eec, 0x9eed, 0x9eee, 0x9eef, /*0xc0-0xc7*/
- 0xc1d2, 0x9ef0, 0xecc8, 0x9ef1, 0x9ef2, 0x9ef3, 0x9ef4, 0x9ef5, /*0xc8-0xcf*/
- 0x9ef6, 0x9ef7, 0x9ef8, 0x9ef9, 0x9efa, 0x9efb, 0x9efc, 0x9efd, /*0xd0-0xd7*/
- 0xbae6, 0xc0d3, 0x9efe, 0xd6f2, 0x9f40, 0x9f41, 0x9f42, 0xd1cc, /*0xd8-0xdf*/
- 0x9f43, 0x9f44, 0x9f45, 0x9f46, 0xbfbe, 0x9f47, 0xb7b3, 0xc9d5, /*0xe0-0xe7*/
- 0xecc7, 0xbbe2, 0x9f48, 0xcccc, 0xbdfd, 0xc8c8, 0x9f49, 0xcfa9, /*0xe8-0xef*/
- 0x9f4a, 0x9f4b, 0x9f4c, 0x9f4d, 0x9f4e, 0x9f4f, 0x9f50, 0xcde9, /*0xf0-0xf7*/
- 0x9f51, 0xc5eb, 0x9f52, 0x9f53, 0x9f54, 0xb7e9, 0x9f55, 0x9f56, /*0xf8-0xff*/
- /* 0x7100 */
- 0x9f57, 0x9f58, 0x9f59, 0x9f5a, 0x9f5b, 0x9f5c, 0x9f5d, 0x9f5e, /*0x00-0x07*/
- 0x9f5f, 0xd1c9, 0xbab8, 0x9f60, 0x9f61, 0x9f62, 0x9f63, 0x9f64, /*0x08-0x0f*/
- 0xecc9, 0x9f65, 0x9f66, 0xecca, 0x9f67, 0xbbc0, 0xeccb, 0x9f68, /*0x10-0x17*/
- 0xece2, 0xb1ba, 0xb7d9, 0x9f69, 0x9f6a, 0x9f6b, 0x9f6c, 0x9f6d, /*0x18-0x1f*/
- 0x9f6e, 0x9f6f, 0x9f70, 0x9f71, 0x9f72, 0x9f73, 0xbdb9, 0x9f74, /*0x20-0x27*/
- 0x9f75, 0x9f76, 0x9f77, 0x9f78, 0x9f79, 0x9f7a, 0x9f7b, 0xeccc, /*0x28-0x2f*/
- 0xd1e6, 0xeccd, 0x9f7c, 0x9f7d, 0x9f7e, 0x9f80, 0xc8bb, 0x9f81, /*0x30-0x37*/
- 0x9f82, 0x9f83, 0x9f84, 0x9f85, 0x9f86, 0x9f87, 0x9f88, 0x9f89, /*0x38-0x3f*/
- 0x9f8a, 0x9f8b, 0x9f8c, 0x9f8d, 0x9f8e, 0xecd1, 0x9f8f, 0x9f90, /*0x40-0x47*/
- 0x9f91, 0x9f92, 0xecd3, 0x9f93, 0xbbcd, 0x9f94, 0xbce5, 0x9f95, /*0x48-0x4f*/
- 0x9f96, 0x9f97, 0x9f98, 0x9f99, 0x9f9a, 0x9f9b, 0x9f9c, 0x9f9d, /*0x50-0x57*/
- 0x9f9e, 0x9f9f, 0x9fa0, 0x9fa1, 0xeccf, 0x9fa2, 0xc9b7, 0x9fa3, /*0x58-0x5f*/
- 0x9fa4, 0x9fa5, 0x9fa6, 0x9fa7, 0xc3ba, 0x9fa8, 0xece3, 0xd5d5, /*0x60-0x67*/
- 0xecd0, 0x9fa9, 0x9faa, 0x9fab, 0x9fac, 0x9fad, 0xd6f3, 0x9fae, /*0x68-0x6f*/
- 0x9faf, 0x9fb0, 0xecd2, 0xecce, 0x9fb1, 0x9fb2, 0x9fb3, 0x9fb4, /*0x70-0x77*/
- 0xecd4, 0x9fb5, 0xecd5, 0x9fb6, 0x9fb7, 0xc9bf, 0x9fb8, 0x9fb9, /*0x78-0x7f*/
- 0x9fba, 0x9fbb, 0x9fbc, 0x9fbd, 0xcfa8, 0x9fbe, 0x9fbf, 0x9fc0, /*0x80-0x87*/
- 0x9fc1, 0x9fc2, 0xd0dc, 0x9fc3, 0x9fc4, 0x9fc5, 0x9fc6, 0xd1ac, /*0x88-0x8f*/
- 0x9fc7, 0x9fc8, 0x9fc9, 0x9fca, 0xc8db, 0x9fcb, 0x9fcc, 0x9fcd, /*0x90-0x97*/
- 0xecd6, 0xcef5, 0x9fce, 0x9fcf, 0x9fd0, 0x9fd1, 0x9fd2, 0xcaec, /*0x98-0x9f*/
- 0xecda, 0x9fd3, 0x9fd4, 0x9fd5, 0x9fd6, 0x9fd7, 0x9fd8, 0x9fd9, /*0xa0-0xa7*/
- 0xecd9, 0x9fda, 0x9fdb, 0x9fdc, 0xb0be, 0x9fdd, 0x9fde, 0x9fdf, /*0xa8-0xaf*/
- 0x9fe0, 0x9fe1, 0x9fe2, 0xecd7, 0x9fe3, 0xecd8, 0x9fe4, 0x9fe5, /*0xb0-0xb7*/
- 0x9fe6, 0xece4, 0x9fe7, 0x9fe8, 0x9fe9, 0x9fea, 0x9feb, 0x9fec, /*0xb8-0xbf*/
- 0x9fed, 0x9fee, 0x9fef, 0xc8bc, 0x9ff0, 0x9ff1, 0x9ff2, 0x9ff3, /*0xc0-0xc7*/
- 0x9ff4, 0x9ff5, 0x9ff6, 0x9ff7, 0x9ff8, 0x9ff9, 0xc1c7, 0x9ffa, /*0xc8-0xcf*/
- 0x9ffb, 0x9ffc, 0x9ffd, 0x9ffe, 0xecdc, 0xd1e0, 0xa040, 0xa041, /*0xd0-0xd7*/
- 0xa042, 0xa043, 0xa044, 0xa045, 0xa046, 0xa047, 0xa048, 0xa049, /*0xd8-0xdf*/
- 0xecdb, 0xa04a, 0xa04b, 0xa04c, 0xa04d, 0xd4ef, 0xa04e, 0xecdd, /*0xe0-0xe7*/
- 0xa04f, 0xa050, 0xa051, 0xa052, 0xa053, 0xa054, 0xdbc6, 0xa055, /*0xe8-0xef*/
- 0xa056, 0xa057, 0xa058, 0xa059, 0xa05a, 0xa05b, 0xa05c, 0xa05d, /*0xf0-0xf7*/
- 0xa05e, 0xecde, 0xa05f, 0xa060, 0xa061, 0xa062, 0xa063, 0xa064, /*0xf8-0xff*/
- /* 0x7200 */
- 0xa065, 0xa066, 0xa067, 0xa068, 0xa069, 0xa06a, 0xb1ac, 0xa06b, /*0x00-0x07*/
- 0xa06c, 0xa06d, 0xa06e, 0xa06f, 0xa070, 0xa071, 0xa072, 0xa073, /*0x08-0x0f*/
- 0xa074, 0xa075, 0xa076, 0xa077, 0xa078, 0xa079, 0xa07a, 0xa07b, /*0x10-0x17*/
- 0xa07c, 0xa07d, 0xa07e, 0xa080, 0xa081, 0xecdf, 0xa082, 0xa083, /*0x18-0x1f*/
- 0xa084, 0xa085, 0xa086, 0xa087, 0xa088, 0xa089, 0xa08a, 0xa08b, /*0x20-0x27*/
- 0xece0, 0xa08c, 0xd7a6, 0xa08d, 0xc5c0, 0xa08e, 0xa08f, 0xa090, /*0x28-0x2f*/
- 0xebbc, 0xb0ae, 0xa091, 0xa092, 0xa093, 0xbef4, 0xb8b8, 0xd2af, /*0x30-0x37*/
- 0xb0d6, 0xb5f9, 0xa094, 0xd8b3, 0xa095, 0xcbac, 0xa096, 0xe3dd, /*0x38-0x3f*/
- 0xa097, 0xa098, 0xa099, 0xa09a, 0xa09b, 0xa09c, 0xa09d, 0xc6ac, /*0x40-0x47*/
- 0xb0e6, 0xa09e, 0xa09f, 0xa0a0, 0xc5c6, 0xebb9, 0xa0a1, 0xa0a2, /*0x48-0x4f*/
- 0xa0a3, 0xa0a4, 0xebba, 0xa0a5, 0xa0a6, 0xa0a7, 0xebbb, 0xa0a8, /*0x50-0x57*/
- 0xa0a9, 0xd1c0, 0xa0aa, 0xc5a3, 0xa0ab, 0xeaf2, 0xa0ac, 0xc4b2, /*0x58-0x5f*/
- 0xa0ad, 0xc4b5, 0xc0ce, 0xa0ae, 0xa0af, 0xa0b0, 0xeaf3, 0xc4c1, /*0x60-0x67*/
- 0xa0b1, 0xceef, 0xa0b2, 0xa0b3, 0xa0b4, 0xa0b5, 0xeaf0, 0xeaf4, /*0x68-0x6f*/
- 0xa0b6, 0xa0b7, 0xc9fc, 0xa0b8, 0xa0b9, 0xc7a3, 0xa0ba, 0xa0bb, /*0x70-0x77*/
- 0xa0bc, 0xccd8, 0xcefe, 0xa0bd, 0xa0be, 0xa0bf, 0xeaf5, 0xeaf6, /*0x78-0x7f*/
- 0xcfac, 0xc0e7, 0xa0c0, 0xa0c1, 0xeaf7, 0xa0c2, 0xa0c3, 0xa0c4, /*0x80-0x87*/
- 0xa0c5, 0xa0c6, 0xb6bf, 0xeaf8, 0xa0c7, 0xeaf9, 0xa0c8, 0xeafa, /*0x88-0x8f*/
- 0xa0c9, 0xa0ca, 0xeafb, 0xa0cb, 0xa0cc, 0xa0cd, 0xa0ce, 0xa0cf, /*0x90-0x97*/
- 0xa0d0, 0xa0d1, 0xa0d2, 0xa0d3, 0xa0d4, 0xa0d5, 0xa0d6, 0xeaf1, /*0x98-0x9f*/
- 0xa0d7, 0xa0d8, 0xa0d9, 0xa0da, 0xa0db, 0xa0dc, 0xa0dd, 0xa0de, /*0xa0-0xa7*/
- 0xa0df, 0xa0e0, 0xa0e1, 0xa0e2, 0xc8ae, 0xe1eb, 0xa0e3, 0xb7b8, /*0xa8-0xaf*/
- 0xe1ec, 0xa0e4, 0xa0e5, 0xa0e6, 0xe1ed, 0xa0e7, 0xd7b4, 0xe1ee, /*0xb0-0xb7*/
- 0xe1ef, 0xd3cc, 0xa0e8, 0xa0e9, 0xa0ea, 0xa0eb, 0xa0ec, 0xa0ed, /*0xb8-0xbf*/
- 0xa0ee, 0xe1f1, 0xbff1, 0xe1f0, 0xb5d2, 0xa0ef, 0xa0f0, 0xa0f1, /*0xc0-0xc7*/
- 0xb1b7, 0xa0f2, 0xa0f3, 0xa0f4, 0xa0f5, 0xe1f3, 0xe1f2, 0xa0f6, /*0xc8-0xcf*/
- 0xbafc, 0xa0f7, 0xe1f4, 0xa0f8, 0xa0f9, 0xa0fa, 0xa0fb, 0xb9b7, /*0xd0-0xd7*/
- 0xa0fc, 0xbed1, 0xa0fd, 0xa0fe, 0xaa40, 0xaa41, 0xc4fc, 0xaa42, /*0xd8-0xdf*/
- 0xbadd, 0xbdc6, 0xaa43, 0xaa44, 0xaa45, 0xaa46, 0xaa47, 0xaa48, /*0xe0-0xe7*/
- 0xe1f5, 0xe1f7, 0xaa49, 0xaa4a, 0xb6c0, 0xcfc1, 0xcaa8, 0xe1f6, /*0xe8-0xef*/
- 0xd5f8, 0xd3fc, 0xe1f8, 0xe1fc, 0xe1f9, 0xaa4b, 0xaa4c, 0xe1fa, /*0xf0-0xf7*/
- 0xc0ea, 0xaa4d, 0xe1fe, 0xe2a1, 0xc0c7, 0xaa4e, 0xaa4f, 0xaa50, /*0xf8-0xff*/
- /* 0x7300 */
- 0xaa51, 0xe1fb, 0xaa52, 0xe1fd, 0xaa53, 0xaa54, 0xaa55, 0xaa56, /*0x00-0x07*/
- 0xaa57, 0xaa58, 0xe2a5, 0xaa59, 0xaa5a, 0xaa5b, 0xc1d4, 0xaa5c, /*0x08-0x0f*/
- 0xaa5d, 0xaa5e, 0xaa5f, 0xe2a3, 0xaa60, 0xe2a8, 0xb2fe, 0xe2a2, /*0x10-0x17*/
- 0xaa61, 0xaa62, 0xaa63, 0xc3cd, 0xb2c2, 0xe2a7, 0xe2a6, 0xaa64, /*0x18-0x1f*/
- 0xaa65, 0xe2a4, 0xe2a9, 0xaa66, 0xaa67, 0xe2ab, 0xaa68, 0xaa69, /*0x20-0x27*/
- 0xaa6a, 0xd0c9, 0xd6ed, 0xc3a8, 0xe2ac, 0xaa6b, 0xcfd7, 0xaa6c, /*0x28-0x2f*/
- 0xaa6d, 0xe2ae, 0xaa6e, 0xaa6f, 0xbaef, 0xaa70, 0xaa71, 0xe9e0, /*0x30-0x37*/
- 0xe2ad, 0xe2aa, 0xaa72, 0xaa73, 0xaa74, 0xaa75, 0xbbab, 0xd4b3, /*0x38-0x3f*/
- 0xaa76, 0xaa77, 0xaa78, 0xaa79, 0xaa7a, 0xaa7b, 0xaa7c, 0xaa7d, /*0x40-0x47*/
- 0xaa7e, 0xaa80, 0xaa81, 0xaa82, 0xaa83, 0xe2b0, 0xaa84, 0xaa85, /*0x48-0x4f*/
- 0xe2af, 0xaa86, 0xe9e1, 0xaa87, 0xaa88, 0xaa89, 0xaa8a, 0xe2b1, /*0x50-0x57*/
- 0xaa8b, 0xaa8c, 0xaa8d, 0xaa8e, 0xaa8f, 0xaa90, 0xaa91, 0xaa92, /*0x58-0x5f*/
- 0xe2b2, 0xaa93, 0xaa94, 0xaa95, 0xaa96, 0xaa97, 0xaa98, 0xaa99, /*0x60-0x67*/
- 0xaa9a, 0xaa9b, 0xaa9c, 0xaa9d, 0xe2b3, 0xcca1, 0xaa9e, 0xe2b4, /*0x68-0x6f*/
- 0xaa9f, 0xaaa0, 0xab40, 0xab41, 0xab42, 0xab43, 0xab44, 0xab45, /*0x70-0x77*/
- 0xab46, 0xab47, 0xab48, 0xab49, 0xab4a, 0xab4b, 0xe2b5, 0xab4c, /*0x78-0x7f*/
- 0xab4d, 0xab4e, 0xab4f, 0xab50, 0xd0fe, 0xab51, 0xab52, 0xc2ca, /*0x80-0x87*/
- 0xab53, 0xd3f1, 0xab54, 0xcdf5, 0xab55, 0xab56, 0xe7e0, 0xab57, /*0x88-0x8f*/
- 0xab58, 0xe7e1, 0xab59, 0xab5a, 0xab5b, 0xab5c, 0xbec1, 0xab5d, /*0x90-0x97*/
- 0xab5e, 0xab5f, 0xab60, 0xc2ea, 0xab61, 0xab62, 0xab63, 0xe7e4, /*0x98-0x9f*/
- 0xab64, 0xab65, 0xe7e3, 0xab66, 0xab67, 0xab68, 0xab69, 0xab6a, /*0xa0-0xa7*/
- 0xab6b, 0xcde6, 0xab6c, 0xc3b5, 0xab6d, 0xab6e, 0xe7e2, 0xbbb7, /*0xa8-0xaf*/
- 0xcfd6, 0xab6f, 0xc1e1, 0xe7e9, 0xab70, 0xab71, 0xab72, 0xe7e8, /*0xb0-0xb7*/
- 0xab73, 0xab74, 0xe7f4, 0xb2a3, 0xab75, 0xab76, 0xab77, 0xab78, /*0xb8-0xbf*/
- 0xe7ea, 0xab79, 0xe7e6, 0xab7a, 0xab7b, 0xab7c, 0xab7d, 0xab7e, /*0xc0-0xc7*/
- 0xe7ec, 0xe7eb, 0xc9ba, 0xab80, 0xab81, 0xd5e4, 0xab82, 0xe7e5, /*0xc8-0xcf*/
- 0xb7a9, 0xe7e7, 0xab83, 0xab84, 0xab85, 0xab86, 0xab87, 0xab88, /*0xd0-0xd7*/
- 0xab89, 0xe7ee, 0xab8a, 0xab8b, 0xab8c, 0xab8d, 0xe7f3, 0xab8e, /*0xd8-0xdf*/
- 0xd6e9, 0xab8f, 0xab90, 0xab91, 0xab92, 0xe7ed, 0xab93, 0xe7f2, /*0xe0-0xe7*/
- 0xab94, 0xe7f1, 0xab95, 0xab96, 0xab97, 0xb0e0, 0xab98, 0xab99, /*0xe8-0xef*/
- 0xab9a, 0xab9b, 0xe7f5, 0xab9c, 0xab9d, 0xab9e, 0xab9f, 0xaba0, /*0xf0-0xf7*/
- 0xac40, 0xac41, 0xac42, 0xac43, 0xac44, 0xac45, 0xac46, 0xac47, /*0xf8-0xff*/
- /* 0x7400 */
- 0xac48, 0xac49, 0xac4a, 0xc7f2, 0xac4b, 0xc0c5, 0xc0ed, 0xac4c, /*0x00-0x07*/
- 0xac4d, 0xc1f0, 0xe7f0, 0xac4e, 0xac4f, 0xac50, 0xac51, 0xe7f6, /*0x08-0x0f*/
- 0xcbf6, 0xac52, 0xac53, 0xac54, 0xac55, 0xac56, 0xac57, 0xac58, /*0x10-0x17*/
- 0xac59, 0xac5a, 0xe8a2, 0xe8a1, 0xac5b, 0xac5c, 0xac5d, 0xac5e, /*0x18-0x1f*/
- 0xac5f, 0xac60, 0xd7c1, 0xac61, 0xac62, 0xe7fa, 0xe7f9, 0xac63, /*0x20-0x27*/
- 0xe7fb, 0xac64, 0xe7f7, 0xac65, 0xe7fe, 0xac66, 0xe7fd, 0xac67, /*0x28-0x2f*/
- 0xe7fc, 0xac68, 0xac69, 0xc1d5, 0xc7d9, 0xc5fd, 0xc5c3, 0xac6a, /*0x30-0x37*/
- 0xac6b, 0xac6c, 0xac6d, 0xac6e, 0xc7ed, 0xac6f, 0xac70, 0xac71, /*0x38-0x3f*/
- 0xac72, 0xe8a3, 0xac73, 0xac74, 0xac75, 0xac76, 0xac77, 0xac78, /*0x40-0x47*/
- 0xac79, 0xac7a, 0xac7b, 0xac7c, 0xac7d, 0xac7e, 0xac80, 0xac81, /*0x48-0x4f*/
- 0xac82, 0xac83, 0xac84, 0xac85, 0xac86, 0xe8a6, 0xac87, 0xe8a5, /*0x50-0x57*/
- 0xac88, 0xe8a7, 0xbaf7, 0xe7f8, 0xe8a4, 0xac89, 0xc8f0, 0xc9aa, /*0x58-0x5f*/
- 0xac8a, 0xac8b, 0xac8c, 0xac8d, 0xac8e, 0xac8f, 0xac90, 0xac91, /*0x60-0x67*/
- 0xac92, 0xac93, 0xac94, 0xac95, 0xac96, 0xe8a9, 0xac97, 0xac98, /*0x68-0x6f*/
- 0xb9e5, 0xac99, 0xac9a, 0xac9b, 0xac9c, 0xac9d, 0xd1fe, 0xe8a8, /*0x70-0x77*/
- 0xac9e, 0xac9f, 0xaca0, 0xad40, 0xad41, 0xad42, 0xe8aa, 0xad43, /*0x78-0x7f*/
- 0xe8ad, 0xe8ae, 0xad44, 0xc1a7, 0xad45, 0xad46, 0xad47, 0xe8af, /*0x80-0x87*/
- 0xad48, 0xad49, 0xad4a, 0xe8b0, 0xad4b, 0xad4c, 0xe8ac, 0xad4d, /*0x88-0x8f*/
- 0xe8b4, 0xad4e, 0xad4f, 0xad50, 0xad51, 0xad52, 0xad53, 0xad54, /*0x90-0x97*/
- 0xad55, 0xad56, 0xad57, 0xad58, 0xe8ab, 0xad59, 0xe8b1, 0xad5a, /*0x98-0x9f*/
- 0xad5b, 0xad5c, 0xad5d, 0xad5e, 0xad5f, 0xad60, 0xad61, 0xe8b5, /*0xa0-0xa7*/
- 0xe8b2, 0xe8b3, 0xad62, 0xad63, 0xad64, 0xad65, 0xad66, 0xad67, /*0xa8-0xaf*/
- 0xad68, 0xad69, 0xad6a, 0xad6b, 0xad6c, 0xad6d, 0xad6e, 0xad6f, /*0xb0-0xb7*/
- 0xad70, 0xad71, 0xe8b7, 0xad72, 0xad73, 0xad74, 0xad75, 0xad76, /*0xb8-0xbf*/
- 0xad77, 0xad78, 0xad79, 0xad7a, 0xad7b, 0xad7c, 0xad7d, 0xad7e, /*0xc0-0xc7*/
- 0xad80, 0xad81, 0xad82, 0xad83, 0xad84, 0xad85, 0xad86, 0xad87, /*0xc8-0xcf*/
- 0xad88, 0xad89, 0xe8b6, 0xad8a, 0xad8b, 0xad8c, 0xad8d, 0xad8e, /*0xd0-0xd7*/
- 0xad8f, 0xad90, 0xad91, 0xad92, 0xb9cf, 0xad93, 0xf0ac, 0xad94, /*0xd8-0xdf*/
- 0xf0ad, 0xad95, 0xc6b0, 0xb0ea, 0xc8bf, 0xad96, 0xcddf, 0xad97, /*0xe0-0xe7*/
- 0xad98, 0xad99, 0xad9a, 0xad9b, 0xad9c, 0xad9d, 0xcecd, 0xeab1, /*0xe8-0xef*/
- 0xad9e, 0xad9f, 0xada0, 0xae40, 0xeab2, 0xae41, 0xc6bf, 0xb4c9, /*0xf0-0xf7*/
- 0xae42, 0xae43, 0xae44, 0xae45, 0xae46, 0xae47, 0xae48, 0xeab3, /*0xf8-0xff*/
- /* 0x7500 */
- 0xae49, 0xae4a, 0xae4b, 0xae4c, 0xd5e7, 0xae4d, 0xae4e, 0xae4f, /*0x00-0x07*/
- 0xae50, 0xae51, 0xae52, 0xae53, 0xae54, 0xddf9, 0xae55, 0xeab4, /*0x08-0x0f*/
- 0xae56, 0xeab5, 0xae57, 0xeab6, 0xae58, 0xae59, 0xae5a, 0xae5b, /*0x10-0x17*/
- 0xb8ca, 0xdfb0, 0xc9f5, 0xae5c, 0xccf0, 0xae5d, 0xae5e, 0xc9fa, /*0x18-0x1f*/
- 0xae5f, 0xae60, 0xae61, 0xae62, 0xae63, 0xc9fb, 0xae64, 0xae65, /*0x20-0x27*/
- 0xd3c3, 0xcba6, 0xae66, 0xb8a6, 0xf0ae, 0xb1c2, 0xae67, 0xe5b8, /*0x28-0x2f*/
- 0xccef, 0xd3c9, 0xbcd7, 0xc9ea, 0xae68, 0xb5e7, 0xae69, 0xc4d0, /*0x30-0x37*/
- 0xb5e9, 0xae6a, 0xeeae, 0xbbad, 0xae6b, 0xae6c, 0xe7de, 0xae6d, /*0x38-0x3f*/
- 0xeeaf, 0xae6e, 0xae6f, 0xae70, 0xae71, 0xb3a9, 0xae72, 0xae73, /*0x40-0x47*/
- 0xeeb2, 0xae74, 0xae75, 0xeeb1, 0xbde7, 0xae76, 0xeeb0, 0xceb7, /*0x48-0x4f*/
- 0xae77, 0xae78, 0xae79, 0xae7a, 0xc5cf, 0xae7b, 0xae7c, 0xae7d, /*0x50-0x57*/
- 0xae7e, 0xc1f4, 0xdbce, 0xeeb3, 0xd0f3, 0xae80, 0xae81, 0xae82, /*0x58-0x5f*/
- 0xae83, 0xae84, 0xae85, 0xae86, 0xae87, 0xc2d4, 0xc6e8, 0xae88, /*0x60-0x67*/
- 0xae89, 0xae8a, 0xb7ac, 0xae8b, 0xae8c, 0xae8d, 0xae8e, 0xae8f, /*0x68-0x6f*/
- 0xae90, 0xae91, 0xeeb4, 0xae92, 0xb3eb, 0xae93, 0xae94, 0xae95, /*0x70-0x77*/
- 0xbbfb, 0xeeb5, 0xae96, 0xae97, 0xae98, 0xae99, 0xae9a, 0xe7dc, /*0x78-0x7f*/
- 0xae9b, 0xae9c, 0xae9d, 0xeeb6, 0xae9e, 0xae9f, 0xbdae, 0xaea0, /*0x80-0x87*/
- 0xaf40, 0xaf41, 0xaf42, 0xf1e2, 0xaf43, 0xaf44, 0xaf45, 0xcae8, /*0x88-0x8f*/
- 0xaf46, 0xd2c9, 0xf0da, 0xaf47, 0xf0db, 0xaf48, 0xf0dc, 0xc1c6, /*0x90-0x97*/
- 0xaf49, 0xb8ed, 0xbece, 0xaf4a, 0xaf4b, 0xf0de, 0xaf4c, 0xc5b1, /*0x98-0x9f*/
- 0xf0dd, 0xd1f1, 0xaf4d, 0xf0e0, 0xb0cc, 0xbdea, 0xaf4e, 0xaf4f, /*0xa0-0xa7*/
- 0xaf50, 0xaf51, 0xaf52, 0xd2df, 0xf0df, 0xaf53, 0xb4af, 0xb7e8, /*0xa8-0xaf*/
- 0xf0e6, 0xf0e5, 0xc6a3, 0xf0e1, 0xf0e2, 0xb4c3, 0xaf54, 0xaf55, /*0xb0-0xb7*/
- 0xf0e3, 0xd5ee, 0xaf56, 0xaf57, 0xccdb, 0xbed2, 0xbcb2, 0xaf58, /*0xb8-0xbf*/
- 0xaf59, 0xaf5a, 0xf0e8, 0xf0e7, 0xf0e4, 0xb2a1, 0xaf5b, 0xd6a2, /*0xc0-0xc7*/
- 0xd3b8, 0xbeb7, 0xc8ac, 0xaf5c, 0xaf5d, 0xf0ea, 0xaf5e, 0xaf5f, /*0xc8-0xcf*/
- 0xaf60, 0xaf61, 0xd1f7, 0xaf62, 0xd6cc, 0xbadb, 0xf0e9, 0xaf63, /*0xd0-0xd7*/
- 0xb6bb, 0xaf64, 0xaf65, 0xcdb4, 0xaf66, 0xaf67, 0xc6a6, 0xaf68, /*0xd8-0xdf*/
- 0xaf69, 0xaf6a, 0xc1a1, 0xf0eb, 0xf0ee, 0xaf6b, 0xf0ed, 0xf0f0, /*0xe0-0xe7*/
- 0xf0ec, 0xaf6c, 0xbbbe, 0xf0ef, 0xaf6d, 0xaf6e, 0xaf6f, 0xaf70, /*0xe8-0xef*/
- 0xccb5, 0xf0f2, 0xaf71, 0xaf72, 0xb3d5, 0xaf73, 0xaf74, 0xaf75, /*0xf0-0xf7*/
- 0xaf76, 0xb1d4, 0xaf77, 0xaf78, 0xf0f3, 0xaf79, 0xaf7a, 0xf0f4, /*0xf8-0xff*/
- /* 0x7600 */
- 0xf0f6, 0xb4e1, 0xaf7b, 0xf0f1, 0xaf7c, 0xf0f7, 0xaf7d, 0xaf7e, /*0x00-0x07*/
- 0xaf80, 0xaf81, 0xf0fa, 0xaf82, 0xf0f8, 0xaf83, 0xaf84, 0xaf85, /*0x08-0x0f*/
- 0xf0f5, 0xaf86, 0xaf87, 0xaf88, 0xaf89, 0xf0fd, 0xaf8a, 0xf0f9, /*0x10-0x17*/
- 0xf0fc, 0xf0fe, 0xaf8b, 0xf1a1, 0xaf8c, 0xaf8d, 0xaf8e, 0xcec1, /*0x18-0x1f*/
- 0xf1a4, 0xaf8f, 0xf1a3, 0xaf90, 0xc1f6, 0xf0fb, 0xcadd, 0xaf91, /*0x20-0x27*/
- 0xaf92, 0xb4f1, 0xb1f1, 0xccb1, 0xaf93, 0xf1a6, 0xaf94, 0xaf95, /*0x28-0x2f*/
- 0xf1a7, 0xaf96, 0xaf97, 0xf1ac, 0xd5ce, 0xf1a9, 0xaf98, 0xaf99, /*0x30-0x37*/
- 0xc8b3, 0xaf9a, 0xaf9b, 0xaf9c, 0xf1a2, 0xaf9d, 0xf1ab, 0xf1a8, /*0x38-0x3f*/
- 0xf1a5, 0xaf9e, 0xaf9f, 0xf1aa, 0xafa0, 0xb040, 0xb041, 0xb042, /*0x40-0x47*/
- 0xb043, 0xb044, 0xb045, 0xb046, 0xb0a9, 0xf1ad, 0xb047, 0xb048, /*0x48-0x4f*/
- 0xb049, 0xb04a, 0xb04b, 0xb04c, 0xf1af, 0xb04d, 0xf1b1, 0xb04e, /*0x50-0x57*/
- 0xb04f, 0xb050, 0xb051, 0xb052, 0xf1b0, 0xb053, 0xf1ae, 0xb054, /*0x58-0x5f*/
- 0xb055, 0xb056, 0xb057, 0xd1a2, 0xb058, 0xb059, 0xb05a, 0xb05b, /*0x60-0x67*/
- 0xb05c, 0xb05d, 0xb05e, 0xf1b2, 0xb05f, 0xb060, 0xb061, 0xf1b3, /*0x68-0x6f*/
- 0xb062, 0xb063, 0xb064, 0xb065, 0xb066, 0xb067, 0xb068, 0xb069, /*0x70-0x77*/
- 0xb9ef, 0xb06a, 0xb06b, 0xb5c7, 0xb06c, 0xb0d7, 0xb0d9, 0xb06d, /*0x78-0x7f*/
- 0xb06e, 0xb06f, 0xd4ed, 0xb070, 0xb5c4, 0xb071, 0xbdd4, 0xbbca, /*0x80-0x87*/
- 0xf0a7, 0xb072, 0xb073, 0xb8de, 0xb074, 0xb075, 0xf0a8, 0xb076, /*0x88-0x8f*/
- 0xb077, 0xb0a8, 0xb078, 0xf0a9, 0xb079, 0xb07a, 0xcdee, 0xb07b, /*0x90-0x97*/
- 0xb07c, 0xf0aa, 0xb07d, 0xb07e, 0xb080, 0xb081, 0xb082, 0xb083, /*0x98-0x9f*/
- 0xb084, 0xb085, 0xb086, 0xb087, 0xf0ab, 0xb088, 0xb089, 0xb08a, /*0xa0-0xa7*/
- 0xb08b, 0xb08c, 0xb08d, 0xb08e, 0xb08f, 0xb090, 0xc6a4, 0xb091, /*0xa8-0xaf*/
- 0xb092, 0xd6e5, 0xf1e4, 0xb093, 0xf1e5, 0xb094, 0xb095, 0xb096, /*0xb0-0xb7*/
- 0xb097, 0xb098, 0xb099, 0xb09a, 0xb09b, 0xb09c, 0xb09d, 0xc3f3, /*0xb8-0xbf*/
- 0xb09e, 0xb09f, 0xd3db, 0xb0a0, 0xb140, 0xd6d1, 0xc5e8, 0xb141, /*0xc0-0xc7*/
- 0xd3af, 0xb142, 0xd2e6, 0xb143, 0xb144, 0xeec1, 0xb0bb, 0xd5b5, /*0xc8-0xcf*/
- 0xd1ce, 0xbce0, 0xbad0, 0xb145, 0xbff8, 0xb146, 0xb8c7, 0xb5c1, /*0xd0-0xd7*/
- 0xc5cc, 0xb147, 0xb148, 0xcaa2, 0xb149, 0xb14a, 0xb14b, 0xc3cb, /*0xd8-0xdf*/
- 0xb14c, 0xb14d, 0xb14e, 0xb14f, 0xb150, 0xeec2, 0xb151, 0xb152, /*0xe0-0xe7*/
- 0xb153, 0xb154, 0xb155, 0xb156, 0xb157, 0xb158, 0xc4bf, 0xb6a2, /*0xe8-0xef*/
- 0xb159, 0xedec, 0xc3a4, 0xb15a, 0xd6b1, 0xb15b, 0xb15c, 0xb15d, /*0xf0-0xf7*/
- 0xcfe0, 0xedef, 0xb15e, 0xb15f, 0xc5ce, 0xb160, 0xb6dc, 0xb161, /*0xf8-0xff*/
- /* 0x7700 */
- 0xb162, 0xcaa1, 0xb163, 0xb164, 0xeded, 0xb165, 0xb166, 0xedf0, /*0x00-0x07*/
- 0xedf1, 0xc3bc, 0xb167, 0xbfb4, 0xb168, 0xedee, 0xb169, 0xb16a, /*0x08-0x0f*/
- 0xb16b, 0xb16c, 0xb16d, 0xb16e, 0xb16f, 0xb170, 0xb171, 0xb172, /*0x10-0x17*/
- 0xb173, 0xedf4, 0xedf2, 0xb174, 0xb175, 0xb176, 0xb177, 0xd5e6, /*0x18-0x1f*/
- 0xc3df, 0xb178, 0xedf3, 0xb179, 0xb17a, 0xb17b, 0xedf6, 0xb17c, /*0x20-0x27*/
- 0xd5a3, 0xd1a3, 0xb17d, 0xb17e, 0xb180, 0xedf5, 0xb181, 0xc3d0, /*0x28-0x2f*/
- 0xb182, 0xb183, 0xb184, 0xb185, 0xb186, 0xedf7, 0xbff4, 0xbeec, /*0x30-0x37*/
- 0xedf8, 0xb187, 0xccf7, 0xb188, 0xd1db, 0xb189, 0xb18a, 0xb18b, /*0x38-0x3f*/
- 0xd7c5, 0xd5f6, 0xb18c, 0xedfc, 0xb18d, 0xb18e, 0xb18f, 0xedfb, /*0x40-0x47*/
- 0xb190, 0xb191, 0xb192, 0xb193, 0xb194, 0xb195, 0xb196, 0xb197, /*0x48-0x4f*/
- 0xedf9, 0xedfa, 0xb198, 0xb199, 0xb19a, 0xb19b, 0xb19c, 0xb19d, /*0x50-0x57*/
- 0xb19e, 0xb19f, 0xedfd, 0xbea6, 0xb1a0, 0xb240, 0xb241, 0xb242, /*0x58-0x5f*/
- 0xb243, 0xcbaf, 0xeea1, 0xb6bd, 0xb244, 0xeea2, 0xc4c0, 0xb245, /*0x60-0x67*/
- 0xedfe, 0xb246, 0xb247, 0xbdde, 0xb2c7, 0xb248, 0xb249, 0xb24a, /*0x68-0x6f*/
- 0xb24b, 0xb24c, 0xb24d, 0xb24e, 0xb24f, 0xb250, 0xb251, 0xb252, /*0x70-0x77*/
- 0xb253, 0xb6c3, 0xb254, 0xb255, 0xb256, 0xeea5, 0xd8ba, 0xeea3, /*0x78-0x7f*/
- 0xeea6, 0xb257, 0xb258, 0xb259, 0xc3e9, 0xb3f2, 0xb25a, 0xb25b, /*0x80-0x87*/
- 0xb25c, 0xb25d, 0xb25e, 0xb25f, 0xeea7, 0xeea4, 0xcfb9, 0xb260, /*0x88-0x8f*/
- 0xb261, 0xeea8, 0xc2f7, 0xb262, 0xb263, 0xb264, 0xb265, 0xb266, /*0x90-0x97*/
- 0xb267, 0xb268, 0xb269, 0xb26a, 0xb26b, 0xb26c, 0xb26d, 0xeea9, /*0x98-0x9f*/
- 0xeeaa, 0xb26e, 0xdeab, 0xb26f, 0xb270, 0xc6b3, 0xb271, 0xc7c6, /*0xa0-0xa7*/
- 0xb272, 0xd6f5, 0xb5c9, 0xb273, 0xcbb2, 0xb274, 0xb275, 0xb276, /*0xa8-0xaf*/
- 0xeeab, 0xb277, 0xb278, 0xcdab, 0xb279, 0xeeac, 0xb27a, 0xb27b, /*0xb0-0xb7*/
- 0xb27c, 0xb27d, 0xb27e, 0xd5b0, 0xb280, 0xeead, 0xb281, 0xf6c4, /*0xb8-0xbf*/
- 0xb282, 0xb283, 0xb284, 0xb285, 0xb286, 0xb287, 0xb288, 0xb289, /*0xc0-0xc7*/
- 0xb28a, 0xb28b, 0xb28c, 0xb28d, 0xb28e, 0xdbc7, 0xb28f, 0xb290, /*0xc8-0xcf*/
- 0xb291, 0xb292, 0xb293, 0xb294, 0xb295, 0xb296, 0xb297, 0xb4a3, /*0xd0-0xd7*/
- 0xb298, 0xb299, 0xb29a, 0xc3ac, 0xf1e6, 0xb29b, 0xb29c, 0xb29d, /*0xd8-0xdf*/
- 0xb29e, 0xb29f, 0xcab8, 0xd2d3, 0xb2a0, 0xd6aa, 0xb340, 0xeff2, /*0xe0-0xe7*/
- 0xb341, 0xbed8, 0xb342, 0xbdc3, 0xeff3, 0xb6cc, 0xb0ab, 0xb343, /*0xe8-0xef*/
- 0xb344, 0xb345, 0xb346, 0xcaaf, 0xb347, 0xb348, 0xedb6, 0xb349, /*0xf0-0xf7*/
- 0xedb7, 0xb34a, 0xb34b, 0xb34c, 0xb34d, 0xcef9, 0xb7af, 0xbff3, /*0xf8-0xff*/
- /* 0x7800 */
- 0xedb8, 0xc2eb, 0xc9b0, 0xb34e, 0xb34f, 0xb350, 0xb351, 0xb352, /*0x00-0x07*/
- 0xb353, 0xedb9, 0xb354, 0xb355, 0xc6f6, 0xbfb3, 0xb356, 0xb357, /*0x08-0x0f*/
- 0xb358, 0xedbc, 0xc5f8, 0xb359, 0xd1d0, 0xb35a, 0xd7a9, 0xedba, /*0x10-0x17*/
- 0xedbb, 0xb35b, 0xd1e2, 0xb35c, 0xedbf, 0xedc0, 0xb35d, 0xedc4, /*0x18-0x1f*/
- 0xb35e, 0xb35f, 0xb360, 0xedc8, 0xb361, 0xedc6, 0xedce, 0xd5e8, /*0x20-0x27*/
- 0xb362, 0xedc9, 0xb363, 0xb364, 0xedc7, 0xedbe, 0xb365, 0xb366, /*0x28-0x2f*/
- 0xc5e9, 0xb367, 0xb368, 0xb369, 0xc6c6, 0xb36a, 0xb36b, 0xc9e9, /*0x30-0x37*/
- 0xd4d2, 0xedc1, 0xedc2, 0xedc3, 0xedc5, 0xb36c, 0xc0f9, 0xb36d, /*0x38-0x3f*/
- 0xb4a1, 0xb36e, 0xb36f, 0xb370, 0xb371, 0xb9e8, 0xb372, 0xedd0, /*0x40-0x47*/
- 0xb373, 0xb374, 0xb375, 0xb376, 0xedd1, 0xb377, 0xedca, 0xb378, /*0x48-0x4f*/
- 0xedcf, 0xb379, 0xcef8, 0xb37a, 0xb37b, 0xcbb6, 0xedcc, 0xedcd, /*0x50-0x57*/
- 0xb37c, 0xb37d, 0xb37e, 0xb380, 0xb381, 0xcff5, 0xb382, 0xb383, /*0x58-0x5f*/
- 0xb384, 0xb385, 0xb386, 0xb387, 0xb388, 0xb389, 0xb38a, 0xb38b, /*0x60-0x67*/
- 0xb38c, 0xb38d, 0xedd2, 0xc1f2, 0xd3b2, 0xedcb, 0xc8b7, 0xb38e, /*0x68-0x6f*/
- 0xb38f, 0xb390, 0xb391, 0xb392, 0xb393, 0xb394, 0xb395, 0xbcef, /*0x70-0x77*/
- 0xb396, 0xb397, 0xb398, 0xb399, 0xc5f0, 0xb39a, 0xb39b, 0xb39c, /*0x78-0x7f*/
- 0xb39d, 0xb39e, 0xb39f, 0xb3a0, 0xb440, 0xb441, 0xb442, 0xedd6, /*0x80-0x87*/
- 0xb443, 0xb5ef, 0xb444, 0xb445, 0xc2b5, 0xb0ad, 0xcbe9, 0xb446, /*0x88-0x8f*/
- 0xb447, 0xb1ae, 0xb448, 0xedd4, 0xb449, 0xb44a, 0xb44b, 0xcdeb, /*0x90-0x97*/
- 0xb5e2, 0xb44c, 0xedd5, 0xedd3, 0xedd7, 0xb44d, 0xb44e, 0xb5fa, /*0x98-0x9f*/
- 0xb44f, 0xedd8, 0xb450, 0xedd9, 0xb451, 0xeddc, 0xb452, 0xb1cc, /*0xa0-0xa7*/
- 0xb453, 0xb454, 0xb455, 0xb456, 0xb457, 0xb458, 0xb459, 0xb45a, /*0xa8-0xaf*/
- 0xc5f6, 0xbcee, 0xedda, 0xccbc, 0xb2ea, 0xb45b, 0xb45c, 0xb45d, /*0xb0-0xb7*/
- 0xb45e, 0xeddb, 0xb45f, 0xb460, 0xb461, 0xb462, 0xc4eb, 0xb463, /*0xb8-0xbf*/
- 0xb464, 0xb4c5, 0xb465, 0xb466, 0xb467, 0xb0f5, 0xb468, 0xb469, /*0xc0-0xc7*/
- 0xb46a, 0xeddf, 0xc0da, 0xb4e8, 0xb46b, 0xb46c, 0xb46d, 0xb46e, /*0xc8-0xcf*/
- 0xc5cd, 0xb46f, 0xb470, 0xb471, 0xeddd, 0xbfc4, 0xb472, 0xb473, /*0xd0-0xd7*/
- 0xb474, 0xedde, 0xb475, 0xb476, 0xb477, 0xb478, 0xb479, 0xb47a, /*0xd8-0xdf*/
- 0xb47b, 0xb47c, 0xb47d, 0xb47e, 0xb480, 0xb481, 0xb482, 0xb483, /*0xe0-0xe7*/
- 0xc4a5, 0xb484, 0xb485, 0xb486, 0xede0, 0xb487, 0xb488, 0xb489, /*0xe8-0xef*/
- 0xb48a, 0xb48b, 0xede1, 0xb48c, 0xede3, 0xb48d, 0xb48e, 0xc1d7, /*0xf0-0xf7*/
- 0xb48f, 0xb490, 0xbbc7, 0xb491, 0xb492, 0xb493, 0xb494, 0xb495, /*0xf8-0xff*/
- /* 0x7900 */
- 0xb496, 0xbdb8, 0xb497, 0xb498, 0xb499, 0xede2, 0xb49a, 0xb49b, /*0x00-0x07*/
- 0xb49c, 0xb49d, 0xb49e, 0xb49f, 0xb4a0, 0xb540, 0xb541, 0xb542, /*0x08-0x0f*/
- 0xb543, 0xb544, 0xb545, 0xede4, 0xb546, 0xb547, 0xb548, 0xb549, /*0x10-0x17*/
- 0xb54a, 0xb54b, 0xb54c, 0xb54d, 0xb54e, 0xb54f, 0xede6, 0xb550, /*0x18-0x1f*/
- 0xb551, 0xb552, 0xb553, 0xb554, 0xede5, 0xb555, 0xb556, 0xb557, /*0x20-0x27*/
- 0xb558, 0xb559, 0xb55a, 0xb55b, 0xb55c, 0xb55d, 0xb55e, 0xb55f, /*0x28-0x2f*/
- 0xb560, 0xb561, 0xb562, 0xb563, 0xede7, 0xb564, 0xb565, 0xb566, /*0x30-0x37*/
- 0xb567, 0xb568, 0xcabe, 0xecea, 0xc0f1, 0xb569, 0xc9e7, 0xb56a, /*0x38-0x3f*/
- 0xeceb, 0xc6ee, 0xb56b, 0xb56c, 0xb56d, 0xb56e, 0xecec, 0xb56f, /*0x40-0x47*/
- 0xc6ed, 0xeced, 0xb570, 0xb571, 0xb572, 0xb573, 0xb574, 0xb575, /*0x48-0x4f*/
- 0xb576, 0xb577, 0xb578, 0xecf0, 0xb579, 0xb57a, 0xd7e6, 0xecf3, /*0x50-0x57*/
- 0xb57b, 0xb57c, 0xecf1, 0xecee, 0xecef, 0xd7a3, 0xc9f1, 0xcbee, /*0x58-0x5f*/
- 0xecf4, 0xb57d, 0xecf2, 0xb57e, 0xb580, 0xcfe9, 0xb581, 0xecf6, /*0x60-0x67*/
- 0xc6b1, 0xb582, 0xb583, 0xb584, 0xb585, 0xbcc0, 0xb586, 0xecf5, /*0x68-0x6f*/
- 0xb587, 0xb588, 0xb589, 0xb58a, 0xb58b, 0xb58c, 0xb58d, 0xb5bb, /*0x70-0x77*/
- 0xbbf6, 0xb58e, 0xecf7, 0xb58f, 0xb590, 0xb591, 0xb592, 0xb593, /*0x78-0x7f*/
- 0xd9f7, 0xbdfb, 0xb594, 0xb595, 0xc2bb, 0xecf8, 0xb596, 0xb597, /*0x80-0x87*/
- 0xb598, 0xb599, 0xecf9, 0xb59a, 0xb59b, 0xb59c, 0xb59d, 0xb8a3, /*0x88-0x8f*/
- 0xb59e, 0xb59f, 0xb5a0, 0xb640, 0xb641, 0xb642, 0xb643, 0xb644, /*0x90-0x97*/
- 0xb645, 0xb646, 0xecfa, 0xb647, 0xb648, 0xb649, 0xb64a, 0xb64b, /*0x98-0x9f*/
- 0xb64c, 0xb64d, 0xb64e, 0xb64f, 0xb650, 0xb651, 0xb652, 0xecfb, /*0xa0-0xa7*/
- 0xb653, 0xb654, 0xb655, 0xb656, 0xb657, 0xb658, 0xb659, 0xb65a, /*0xa8-0xaf*/
- 0xb65b, 0xb65c, 0xb65d, 0xecfc, 0xb65e, 0xb65f, 0xb660, 0xb661, /*0xb0-0xb7*/
- 0xb662, 0xd3ed, 0xd8ae, 0xc0eb, 0xb663, 0xc7dd, 0xbacc, 0xb664, /*0xb8-0xbf*/
- 0xd0e3, 0xcbbd, 0xb665, 0xcdba, 0xb666, 0xb667, 0xb8d1, 0xb668, /*0xc0-0xc7*/
- 0xb669, 0xb1fc, 0xb66a, 0xc7ef, 0xb66b, 0xd6d6, 0xb66c, 0xb66d, /*0xc8-0xcf*/
- 0xb66e, 0xbfc6, 0xc3eb, 0xb66f, 0xb670, 0xeff5, 0xb671, 0xb672, /*0xd0-0xd7*/
- 0xc3d8, 0xb673, 0xb674, 0xb675, 0xb676, 0xb677, 0xb678, 0xd7e2, /*0xd8-0xdf*/
- 0xb679, 0xb67a, 0xb67b, 0xeff7, 0xb3d3, 0xb67c, 0xc7d8, 0xd1ed, /*0xe0-0xe7*/
- 0xb67d, 0xd6c8, 0xb67e, 0xeff8, 0xb680, 0xeff6, 0xb681, 0xbbfd, /*0xe8-0xef*/
- 0xb3c6, 0xb682, 0xb683, 0xb684, 0xb685, 0xb686, 0xb687, 0xb688, /*0xf0-0xf7*/
- 0xbdd5, 0xb689, 0xb68a, 0xd2c6, 0xb68b, 0xbbe0, 0xb68c, 0xb68d, /*0xf8-0xff*/
- /* 0x7a00 */
- 0xcfa1, 0xb68e, 0xeffc, 0xeffb, 0xb68f, 0xb690, 0xeff9, 0xb691, /*0x00-0x07*/
- 0xb692, 0xb693, 0xb694, 0xb3cc, 0xb695, 0xc9d4, 0xcbb0, 0xb696, /*0x08-0x0f*/
- 0xb697, 0xb698, 0xb699, 0xb69a, 0xeffe, 0xb69b, 0xb69c, 0xb0de, /*0x10-0x17*/
- 0xb69d, 0xb69e, 0xd6c9, 0xb69f, 0xb6a0, 0xb740, 0xeffd, 0xb741, /*0x18-0x1f*/
- 0xb3ed, 0xb742, 0xb743, 0xf6d5, 0xb744, 0xb745, 0xb746, 0xb747, /*0x20-0x27*/
- 0xb748, 0xb749, 0xb74a, 0xb74b, 0xb74c, 0xb74d, 0xb74e, 0xb74f, /*0x28-0x2f*/
- 0xb750, 0xb751, 0xb752, 0xcec8, 0xb753, 0xb754, 0xb755, 0xf0a2, /*0x30-0x37*/
- 0xb756, 0xf0a1, 0xb757, 0xb5be, 0xbcda, 0xbbfc, 0xb758, 0xb8e5, /*0x38-0x3f*/
- 0xb759, 0xb75a, 0xb75b, 0xb75c, 0xb75d, 0xb75e, 0xc4c2, 0xb75f, /*0x40-0x47*/
- 0xb760, 0xb761, 0xb762, 0xb763, 0xb764, 0xb765, 0xb766, 0xb767, /*0x48-0x4f*/
- 0xb768, 0xf0a3, 0xb769, 0xb76a, 0xb76b, 0xb76c, 0xb76d, 0xcbeb, /*0x50-0x57*/
- 0xb76e, 0xb76f, 0xb770, 0xb771, 0xb772, 0xb773, 0xb774, 0xb775, /*0x58-0x5f*/
- 0xb776, 0xb777, 0xb778, 0xb779, 0xb77a, 0xb77b, 0xb77c, 0xb77d, /*0x60-0x67*/
- 0xb77e, 0xb780, 0xb781, 0xb782, 0xb783, 0xb784, 0xb785, 0xb786, /*0x68-0x6f*/
- 0xf0a6, 0xb787, 0xb788, 0xb789, 0xd1a8, 0xb78a, 0xbebf, 0xc7ee, /*0x70-0x77*/
- 0xf1b6, 0xf1b7, 0xbfd5, 0xb78b, 0xb78c, 0xb78d, 0xb78e, 0xb4a9, /*0x78-0x7f*/
- 0xf1b8, 0xcdbb, 0xb78f, 0xc7d4, 0xd5ad, 0xb790, 0xf1b9, 0xb791, /*0x80-0x87*/
- 0xf1ba, 0xb792, 0xb793, 0xb794, 0xb795, 0xc7cf, 0xb796, 0xb797, /*0x88-0x8f*/
- 0xb798, 0xd2a4, 0xd6cf, 0xb799, 0xb79a, 0xf1bb, 0xbdd1, 0xb4b0, /*0x90-0x97*/
- 0xbebd, 0xb79b, 0xb79c, 0xb79d, 0xb4dc, 0xced1, 0xb79e, 0xbfdf, /*0x98-0x9f*/
- 0xf1bd, 0xb79f, 0xb7a0, 0xb840, 0xb841, 0xbffa, 0xf1bc, 0xb842, /*0xa0-0xa7*/
- 0xf1bf, 0xb843, 0xb844, 0xb845, 0xf1be, 0xf1c0, 0xb846, 0xb847, /*0xa8-0xaf*/
- 0xb848, 0xb849, 0xb84a, 0xf1c1, 0xb84b, 0xb84c, 0xb84d, 0xb84e, /*0xb0-0xb7*/
- 0xb84f, 0xb850, 0xb851, 0xb852, 0xb853, 0xb854, 0xb855, 0xc1fe, /*0xb8-0xbf*/
- 0xb856, 0xb857, 0xb858, 0xb859, 0xb85a, 0xb85b, 0xb85c, 0xb85d, /*0xc0-0xc7*/
- 0xb85e, 0xb85f, 0xb860, 0xc1a2, 0xb861, 0xb862, 0xb863, 0xb864, /*0xc8-0xcf*/
- 0xb865, 0xb866, 0xb867, 0xb868, 0xb869, 0xb86a, 0xcafa, 0xb86b, /*0xd0-0xd7*/
- 0xb86c, 0xd5be, 0xb86d, 0xb86e, 0xb86f, 0xb870, 0xbeba, 0xbeb9, /*0xd8-0xdf*/
- 0xd5c2, 0xb871, 0xb872, 0xbfa2, 0xb873, 0xcdaf, 0xf1b5, 0xb874, /*0xe0-0xe7*/
- 0xb875, 0xb876, 0xb877, 0xb878, 0xb879, 0xbddf, 0xb87a, 0xb6cb, /*0xe8-0xef*/
- 0xb87b, 0xb87c, 0xb87d, 0xb87e, 0xb880, 0xb881, 0xb882, 0xb883, /*0xf0-0xf7*/
- 0xb884, 0xd6f1, 0xf3c3, 0xb885, 0xb886, 0xf3c4, 0xb887, 0xb8cd, /*0xf8-0xff*/
- /* 0x7b00 */
- 0xb888, 0xb889, 0xb88a, 0xf3c6, 0xf3c7, 0xb88b, 0xb0ca, 0xb88c, /*0x00-0x07*/
- 0xf3c5, 0xb88d, 0xf3c9, 0xcbf1, 0xb88e, 0xb88f, 0xb890, 0xf3cb, /*0x08-0x0f*/
- 0xb891, 0xd0a6, 0xb892, 0xb893, 0xb1ca, 0xf3c8, 0xb894, 0xb895, /*0x10-0x17*/
- 0xb896, 0xf3cf, 0xb897, 0xb5d1, 0xb898, 0xb899, 0xf3d7, 0xb89a, /*0x18-0x1f*/
- 0xf3d2, 0xb89b, 0xb89c, 0xb89d, 0xf3d4, 0xf3d3, 0xb7fb, 0xb89e, /*0x20-0x27*/
- 0xb1bf, 0xb89f, 0xf3ce, 0xf3ca, 0xb5da, 0xb8a0, 0xf3d0, 0xb940, /*0x28-0x2f*/
- 0xb941, 0xf3d1, 0xb942, 0xf3d5, 0xb943, 0xb944, 0xb945, 0xb946, /*0x30-0x37*/
- 0xf3cd, 0xb947, 0xbce3, 0xb948, 0xc1fd, 0xb949, 0xf3d6, 0xb94a, /*0x38-0x3f*/
- 0xb94b, 0xb94c, 0xb94d, 0xb94e, 0xb94f, 0xf3da, 0xb950, 0xf3cc, /*0x40-0x47*/
- 0xb951, 0xb5c8, 0xb952, 0xbdee, 0xf3dc, 0xb953, 0xb954, 0xb7a4, /*0x48-0x4f*/
- 0xbff0, 0xd6fe, 0xcdb2, 0xb955, 0xb4f0, 0xb956, 0xb2df, 0xb957, /*0x50-0x57*/
- 0xf3d8, 0xb958, 0xf3d9, 0xc9b8, 0xb959, 0xf3dd, 0xb95a, 0xb95b, /*0x58-0x5f*/
- 0xf3de, 0xb95c, 0xf3e1, 0xb95d, 0xb95e, 0xb95f, 0xb960, 0xb961, /*0x60-0x67*/
- 0xb962, 0xb963, 0xb964, 0xb965, 0xb966, 0xb967, 0xf3df, 0xb968, /*0x68-0x6f*/
- 0xb969, 0xf3e3, 0xf3e2, 0xb96a, 0xb96b, 0xf3db, 0xb96c, 0xbfea, /*0x70-0x77*/
- 0xb96d, 0xb3ef, 0xb96e, 0xf3e0, 0xb96f, 0xb970, 0xc7a9, 0xb971, /*0x78-0x7f*/
- 0xbcf2, 0xb972, 0xb973, 0xb974, 0xb975, 0xf3eb, 0xb976, 0xb977, /*0x80-0x87*/
- 0xb978, 0xb979, 0xb97a, 0xb97b, 0xb97c, 0xb9bf, 0xb97d, 0xb97e, /*0x88-0x8f*/
- 0xf3e4, 0xb980, 0xb981, 0xb982, 0xb2ad, 0xbbfe, 0xb983, 0xcbe3, /*0x90-0x97*/
- 0xb984, 0xb985, 0xb986, 0xb987, 0xf3ed, 0xf3e9, 0xb988, 0xb989, /*0x98-0x9f*/
- 0xb98a, 0xb9dc, 0xf3ee, 0xb98b, 0xb98c, 0xb98d, 0xf3e5, 0xf3e6, /*0xa0-0xa7*/
- 0xf3ea, 0xc2e1, 0xf3ec, 0xf3ef, 0xf3e8, 0xbcfd, 0xb98e, 0xb98f, /*0xa8-0xaf*/
- 0xb990, 0xcfe4, 0xb991, 0xb992, 0xf3f0, 0xb993, 0xb994, 0xb995, /*0xb0-0xb7*/
- 0xf3e7, 0xb996, 0xb997, 0xb998, 0xb999, 0xb99a, 0xb99b, 0xb99c, /*0xb8-0xbf*/
- 0xb99d, 0xf3f2, 0xb99e, 0xb99f, 0xb9a0, 0xba40, 0xd7ad, 0xc6aa, /*0xc0-0xc7*/
- 0xba41, 0xba42, 0xba43, 0xba44, 0xf3f3, 0xba45, 0xba46, 0xba47, /*0xc8-0xcf*/
- 0xba48, 0xf3f1, 0xba49, 0xc2a8, 0xba4a, 0xba4b, 0xba4c, 0xba4d, /*0xd0-0xd7*/
- 0xba4e, 0xb8dd, 0xf3f5, 0xba4f, 0xba50, 0xf3f4, 0xba51, 0xba52, /*0xd8-0xdf*/
- 0xba53, 0xb4db, 0xba54, 0xba55, 0xba56, 0xf3f6, 0xf3f7, 0xba57, /*0xe0-0xe7*/
- 0xba58, 0xba59, 0xf3f8, 0xba5a, 0xba5b, 0xba5c, 0xc0ba, 0xba5d, /*0xe8-0xef*/
- 0xba5e, 0xc0e9, 0xba5f, 0xba60, 0xba61, 0xba62, 0xba63, 0xc5f1, /*0xf0-0xf7*/
- 0xba64, 0xba65, 0xba66, 0xba67, 0xf3fb, 0xba68, 0xf3fa, 0xba69, /*0xf8-0xff*/
- /* 0x7c00 */
- 0xba6a, 0xba6b, 0xba6c, 0xba6d, 0xba6e, 0xba6f, 0xba70, 0xb4d8, /*0x00-0x07*/
- 0xba71, 0xba72, 0xba73, 0xf3fe, 0xf3f9, 0xba74, 0xba75, 0xf3fc, /*0x08-0x0f*/
- 0xba76, 0xba77, 0xba78, 0xba79, 0xba7a, 0xba7b, 0xf3fd, 0xba7c, /*0x10-0x17*/
- 0xba7d, 0xba7e, 0xba80, 0xba81, 0xba82, 0xba83, 0xba84, 0xf4a1, /*0x18-0x1f*/
- 0xba85, 0xba86, 0xba87, 0xba88, 0xba89, 0xba8a, 0xf4a3, 0xbbc9, /*0x20-0x27*/
- 0xba8b, 0xba8c, 0xf4a2, 0xba8d, 0xba8e, 0xba8f, 0xba90, 0xba91, /*0x28-0x2f*/
- 0xba92, 0xba93, 0xba94, 0xba95, 0xba96, 0xba97, 0xba98, 0xba99, /*0x30-0x37*/
- 0xf4a4, 0xba9a, 0xba9b, 0xba9c, 0xba9d, 0xba9e, 0xba9f, 0xb2be, /*0x38-0x3f*/
- 0xf4a6, 0xf4a5, 0xbaa0, 0xbb40, 0xbb41, 0xbb42, 0xbb43, 0xbb44, /*0x40-0x47*/
- 0xbb45, 0xbb46, 0xbb47, 0xbb48, 0xbb49, 0xbcae, 0xbb4a, 0xbb4b, /*0x48-0x4f*/
- 0xbb4c, 0xbb4d, 0xbb4e, 0xbb4f, 0xbb50, 0xbb51, 0xbb52, 0xbb53, /*0x50-0x57*/
- 0xbb54, 0xbb55, 0xbb56, 0xbb57, 0xbb58, 0xbb59, 0xbb5a, 0xbb5b, /*0x58-0x5f*/
- 0xbb5c, 0xbb5d, 0xbb5e, 0xbb5f, 0xbb60, 0xbb61, 0xbb62, 0xbb63, /*0x60-0x67*/
- 0xbb64, 0xbb65, 0xbb66, 0xbb67, 0xbb68, 0xbb69, 0xbb6a, 0xbb6b, /*0x68-0x6f*/
- 0xbb6c, 0xbb6d, 0xbb6e, 0xc3d7, 0xd9e1, 0xbb6f, 0xbb70, 0xbb71, /*0x70-0x77*/
- 0xbb72, 0xbb73, 0xbb74, 0xc0e0, 0xf4cc, 0xd7d1, 0xbb75, 0xbb76, /*0x78-0x7f*/
- 0xbb77, 0xbb78, 0xbb79, 0xbb7a, 0xbb7b, 0xbb7c, 0xbb7d, 0xbb7e, /*0x80-0x87*/
- 0xbb80, 0xb7db, 0xbb81, 0xbb82, 0xbb83, 0xbb84, 0xbb85, 0xbb86, /*0x88-0x8f*/
- 0xbb87, 0xf4ce, 0xc1a3, 0xbb88, 0xbb89, 0xc6c9, 0xbb8a, 0xb4d6, /*0x90-0x97*/
- 0xd5b3, 0xbb8b, 0xbb8c, 0xbb8d, 0xf4d0, 0xf4cf, 0xf4d1, 0xcbda, /*0x98-0x9f*/
- 0xbb8e, 0xbb8f, 0xf4d2, 0xbb90, 0xd4c1, 0xd6e0, 0xbb91, 0xbb92, /*0xa0-0xa7*/
- 0xbb93, 0xbb94, 0xb7e0, 0xbb95, 0xbb96, 0xbb97, 0xc1b8, 0xbb98, /*0xa8-0xaf*/
- 0xbb99, 0xc1bb, 0xf4d3, 0xbeac, 0xbb9a, 0xbb9b, 0xbb9c, 0xbb9d, /*0xb0-0xb7*/
- 0xbb9e, 0xb4e2, 0xbb9f, 0xbba0, 0xf4d4, 0xf4d5, 0xbeab, 0xbc40, /*0xb8-0xbf*/
- 0xbc41, 0xf4d6, 0xbc42, 0xbc43, 0xbc44, 0xf4db, 0xbc45, 0xf4d7, /*0xc0-0xc7*/
- 0xf4da, 0xbc46, 0xbafd, 0xbc47, 0xf4d8, 0xf4d9, 0xbc48, 0xbc49, /*0xc8-0xcf*/
- 0xbc4a, 0xbc4b, 0xbc4c, 0xbc4d, 0xbc4e, 0xb8e2, 0xccc7, 0xf4dc, /*0xd0-0xd7*/
- 0xbc4f, 0xb2da, 0xbc50, 0xbc51, 0xc3d3, 0xbc52, 0xbc53, 0xd4e3, /*0xd8-0xdf*/
- 0xbfb7, 0xbc54, 0xbc55, 0xbc56, 0xbc57, 0xbc58, 0xbc59, 0xbc5a, /*0xe0-0xe7*/
- 0xf4dd, 0xbc5b, 0xbc5c, 0xbc5d, 0xbc5e, 0xbc5f, 0xbc60, 0xc5b4, /*0xe8-0xef*/
- 0xbc61, 0xbc62, 0xbc63, 0xbc64, 0xbc65, 0xbc66, 0xbc67, 0xbc68, /*0xf0-0xf7*/
- 0xf4e9, 0xbc69, 0xbc6a, 0xcfb5, 0xbc6b, 0xbc6c, 0xbc6d, 0xbc6e, /*0xf8-0xff*/
- /* 0x7d00 */
- 0xbc6f, 0xbc70, 0xbc71, 0xbc72, 0xbc73, 0xbc74, 0xbc75, 0xbc76, /*0x00-0x07*/
- 0xbc77, 0xbc78, 0xcec9, 0xbc79, 0xbc7a, 0xbc7b, 0xbc7c, 0xbc7d, /*0x08-0x0f*/
- 0xbc7e, 0xbc80, 0xbc81, 0xbc82, 0xbc83, 0xbc84, 0xbc85, 0xbc86, /*0x10-0x17*/
- 0xbc87, 0xbc88, 0xbc89, 0xbc8a, 0xbc8b, 0xbc8c, 0xbc8d, 0xbc8e, /*0x18-0x1f*/
- 0xcbd8, 0xbc8f, 0xcbf7, 0xbc90, 0xbc91, 0xbc92, 0xbc93, 0xbdf4, /*0x20-0x27*/
- 0xbc94, 0xbc95, 0xbc96, 0xd7cf, 0xbc97, 0xbc98, 0xbc99, 0xc0db, /*0x28-0x2f*/
- 0xbc9a, 0xbc9b, 0xbc9c, 0xbc9d, 0xbc9e, 0xbc9f, 0xbca0, 0xbd40, /*0x30-0x37*/
- 0xbd41, 0xbd42, 0xbd43, 0xbd44, 0xbd45, 0xbd46, 0xbd47, 0xbd48, /*0x38-0x3f*/
- 0xbd49, 0xbd4a, 0xbd4b, 0xbd4c, 0xbd4d, 0xbd4e, 0xbd4f, 0xbd50, /*0x40-0x47*/
- 0xbd51, 0xbd52, 0xbd53, 0xbd54, 0xbd55, 0xbd56, 0xbd57, 0xbd58, /*0x48-0x4f*/
- 0xbd59, 0xbd5a, 0xbd5b, 0xbd5c, 0xbd5d, 0xbd5e, 0xbd5f, 0xbd60, /*0x50-0x57*/
- 0xbd61, 0xbd62, 0xbd63, 0xbd64, 0xbd65, 0xbd66, 0xbd67, 0xbd68, /*0x58-0x5f*/
- 0xbd69, 0xbd6a, 0xbd6b, 0xbd6c, 0xbd6d, 0xbd6e, 0xbd6f, 0xbd70, /*0x60-0x67*/
- 0xbd71, 0xbd72, 0xbd73, 0xbd74, 0xbd75, 0xbd76, 0xd0f5, 0xbd77, /*0x68-0x6f*/
- 0xbd78, 0xbd79, 0xbd7a, 0xbd7b, 0xbd7c, 0xbd7d, 0xbd7e, 0xf4ea, /*0x70-0x77*/
- 0xbd80, 0xbd81, 0xbd82, 0xbd83, 0xbd84, 0xbd85, 0xbd86, 0xbd87, /*0x78-0x7f*/
- 0xbd88, 0xbd89, 0xbd8a, 0xbd8b, 0xbd8c, 0xbd8d, 0xbd8e, 0xbd8f, /*0x80-0x87*/
- 0xbd90, 0xbd91, 0xbd92, 0xbd93, 0xbd94, 0xbd95, 0xbd96, 0xbd97, /*0x88-0x8f*/
- 0xbd98, 0xbd99, 0xbd9a, 0xbd9b, 0xbd9c, 0xbd9d, 0xbd9e, 0xbd9f, /*0x90-0x97*/
- 0xbda0, 0xbe40, 0xbe41, 0xbe42, 0xbe43, 0xbe44, 0xbe45, 0xbe46, /*0x98-0x9f*/
- 0xbe47, 0xbe48, 0xbe49, 0xbe4a, 0xbe4b, 0xbe4c, 0xf4eb, 0xbe4d, /*0xa0-0xa7*/
- 0xbe4e, 0xbe4f, 0xbe50, 0xbe51, 0xbe52, 0xbe53, 0xf4ec, 0xbe54, /*0xa8-0xaf*/
- 0xbe55, 0xbe56, 0xbe57, 0xbe58, 0xbe59, 0xbe5a, 0xbe5b, 0xbe5c, /*0xb0-0xb7*/
- 0xbe5d, 0xbe5e, 0xbe5f, 0xbe60, 0xbe61, 0xbe62, 0xbe63, 0xbe64, /*0xb8-0xbf*/
- 0xbe65, 0xbe66, 0xbe67, 0xbe68, 0xbe69, 0xbe6a, 0xbe6b, 0xbe6c, /*0xc0-0xc7*/
- 0xbe6d, 0xbe6e, 0xbe6f, 0xbe70, 0xbe71, 0xbe72, 0xbe73, 0xbe74, /*0xc8-0xcf*/
- 0xbe75, 0xbe76, 0xbe77, 0xbe78, 0xbe79, 0xbe7a, 0xbe7b, 0xbe7c, /*0xd0-0xd7*/
- 0xbe7d, 0xbe7e, 0xbe80, 0xbe81, 0xbe82, 0xbe83, 0xbe84, 0xbe85, /*0xd8-0xdf*/
- 0xbe86, 0xbe87, 0xbe88, 0xbe89, 0xbe8a, 0xbe8b, 0xbe8c, 0xbe8d, /*0xe0-0xe7*/
- 0xbe8e, 0xbe8f, 0xbe90, 0xbe91, 0xbe92, 0xbe93, 0xbe94, 0xbe95, /*0xe8-0xef*/
- 0xbe96, 0xbe97, 0xbe98, 0xbe99, 0xbe9a, 0xbe9b, 0xbe9c, 0xbe9d, /*0xf0-0xf7*/
- 0xbe9e, 0xbe9f, 0xbea0, 0xbf40, 0xbf41, 0xbf42, 0xbf43, 0xbf44, /*0xf8-0xff*/
- /* 0x7e00 */
- 0xbf45, 0xbf46, 0xbf47, 0xbf48, 0xbf49, 0xbf4a, 0xbf4b, 0xbf4c, /*0x00-0x07*/
- 0xbf4d, 0xbf4e, 0xbf4f, 0xbf50, 0xbf51, 0xbf52, 0xbf53, 0xbf54, /*0x08-0x0f*/
- 0xbf55, 0xbf56, 0xbf57, 0xbf58, 0xbf59, 0xbf5a, 0xbf5b, 0xbf5c, /*0x10-0x17*/
- 0xbf5d, 0xbf5e, 0xbf5f, 0xbf60, 0xbf61, 0xbf62, 0xbf63, 0xbf64, /*0x18-0x1f*/
- 0xbf65, 0xbf66, 0xbf67, 0xbf68, 0xbf69, 0xbf6a, 0xbf6b, 0xbf6c, /*0x20-0x27*/
- 0xbf6d, 0xbf6e, 0xbf6f, 0xbf70, 0xbf71, 0xbf72, 0xbf73, 0xbf74, /*0x28-0x2f*/
- 0xbf75, 0xbf76, 0xbf77, 0xbf78, 0xbf79, 0xbf7a, 0xbf7b, 0xbf7c, /*0x30-0x37*/
- 0xbf7d, 0xbf7e, 0xbf80, 0xf7e3, 0xbf81, 0xbf82, 0xbf83, 0xbf84, /*0x38-0x3f*/
- 0xbf85, 0xb7b1, 0xbf86, 0xbf87, 0xbf88, 0xbf89, 0xbf8a, 0xf4ed, /*0x40-0x47*/
- 0xbf8b, 0xbf8c, 0xbf8d, 0xbf8e, 0xbf8f, 0xbf90, 0xbf91, 0xbf92, /*0x48-0x4f*/
- 0xbf93, 0xbf94, 0xbf95, 0xbf96, 0xbf97, 0xbf98, 0xbf99, 0xbf9a, /*0x50-0x57*/
- 0xbf9b, 0xbf9c, 0xbf9d, 0xbf9e, 0xbf9f, 0xbfa0, 0xc040, 0xc041, /*0x58-0x5f*/
- 0xc042, 0xc043, 0xc044, 0xc045, 0xc046, 0xc047, 0xc048, 0xc049, /*0x60-0x67*/
- 0xc04a, 0xc04b, 0xc04c, 0xc04d, 0xc04e, 0xc04f, 0xc050, 0xc051, /*0x68-0x6f*/
- 0xc052, 0xc053, 0xc054, 0xc055, 0xc056, 0xc057, 0xc058, 0xc059, /*0x70-0x77*/
- 0xc05a, 0xc05b, 0xc05c, 0xc05d, 0xc05e, 0xc05f, 0xc060, 0xc061, /*0x78-0x7f*/
- 0xc062, 0xc063, 0xd7eb, 0xc064, 0xc065, 0xc066, 0xc067, 0xc068, /*0x80-0x87*/
- 0xc069, 0xc06a, 0xc06b, 0xc06c, 0xc06d, 0xc06e, 0xc06f, 0xc070, /*0x88-0x8f*/
- 0xc071, 0xc072, 0xc073, 0xc074, 0xc075, 0xc076, 0xc077, 0xc078, /*0x90-0x97*/
- 0xc079, 0xc07a, 0xc07b, 0xf4ee, 0xc07c, 0xc07d, 0xc07e, 0xe6f9, /*0x98-0x9f*/
- 0xbec0, 0xe6fa, 0xbaec, 0xe6fb, 0xcfcb, 0xe6fc, 0xd4bc, 0xbcb6, /*0xa0-0xa7*/
- 0xe6fd, 0xe6fe, 0xbccd, 0xc8d2, 0xceb3, 0xe7a1, 0xc080, 0xb4bf, /*0xa8-0xaf*/
- 0xe7a2, 0xc9b4, 0xb8d9, 0xc4c9, 0xc081, 0xd7dd, 0xc2da, 0xb7d7, /*0xb0-0xb7*/
- 0xd6bd, 0xcec6, 0xb7c4, 0xc082, 0xc083, 0xc5a6, 0xe7a3, 0xcfdf, /*0xb8-0xbf*/
- 0xe7a4, 0xe7a5, 0xe7a6, 0xc1b7, 0xd7e9, 0xc9f0, 0xcfb8, 0xd6af, /*0xc0-0xc7*/
- 0xd6d5, 0xe7a7, 0xb0ed, 0xe7a8, 0xe7a9, 0xc9dc, 0xd2ef, 0xbead, /*0xc8-0xcf*/
- 0xe7aa, 0xb0f3, 0xc8de, 0xbde1, 0xe7ab, 0xc8c6, 0xc084, 0xe7ac, /*0xd0-0xd7*/
- 0xbbe6, 0xb8f8, 0xd1a4, 0xe7ad, 0xc2e7, 0xbef8, 0xbdca, 0xcdb3, /*0xd8-0xdf*/
- 0xe7ae, 0xe7af, 0xbeee, 0xd0e5, 0xc085, 0xcbe7, 0xccd0, 0xbccc, /*0xe0-0xe7*/
- 0xe7b0, 0xbca8, 0xd0f7, 0xe7b1, 0xc086, 0xd0f8, 0xe7b2, 0xe7b3, /*0xe8-0xef*/
- 0xb4c2, 0xe7b4, 0xe7b5, 0xc9fe, 0xceac, 0xc3e0, 0xe7b7, 0xb1c1, /*0xf0-0xf7*/
- 0xb3f1, 0xc087, 0xe7b8, 0xe7b9, 0xd7db, 0xd5c0, 0xe7ba, 0xc2cc, /*0xf8-0xff*/
- /* 0x7f00 */
- 0xd7ba, 0xe7bb, 0xe7bc, 0xe7bd, 0xbcea, 0xc3e5, 0xc0c2, 0xe7be, /*0x00-0x07*/
- 0xe7bf, 0xbca9, 0xc088, 0xe7c0, 0xe7c1, 0xe7b6, 0xb6d0, 0xe7c2, /*0x08-0x0f*/
- 0xc089, 0xe7c3, 0xe7c4, 0xbbba, 0xb5de, 0xc2c6, 0xb1e0, 0xe7c5, /*0x10-0x17*/
- 0xd4b5, 0xe7c6, 0xb8bf, 0xe7c8, 0xe7c7, 0xb7ec, 0xc08a, 0xe7c9, /*0x18-0x1f*/
- 0xb2f8, 0xe7ca, 0xe7cb, 0xe7cc, 0xe7cd, 0xe7ce, 0xe7cf, 0xe7d0, /*0x20-0x27*/
- 0xd3a7, 0xcbf5, 0xe7d1, 0xe7d2, 0xe7d3, 0xe7d4, 0xc9c9, 0xe7d5, /*0x28-0x2f*/
- 0xe7d6, 0xe7d7, 0xe7d8, 0xe7d9, 0xbdc9, 0xe7da, 0xf3be, 0xc08b, /*0x30-0x37*/
- 0xb8d7, 0xc08c, 0xc8b1, 0xc08d, 0xc08e, 0xc08f, 0xc090, 0xc091, /*0x38-0x3f*/
- 0xc092, 0xc093, 0xf3bf, 0xc094, 0xf3c0, 0xf3c1, 0xc095, 0xc096, /*0x40-0x47*/
- 0xc097, 0xc098, 0xc099, 0xc09a, 0xc09b, 0xc09c, 0xc09d, 0xc09e, /*0x48-0x4f*/
- 0xb9de, 0xcdf8, 0xc09f, 0xc0a0, 0xd8e8, 0xbab1, 0xc140, 0xc2de, /*0x50-0x57*/
- 0xeeb7, 0xc141, 0xb7a3, 0xc142, 0xc143, 0xc144, 0xc145, 0xeeb9, /*0x58-0x5f*/
- 0xc146, 0xeeb8, 0xb0d5, 0xc147, 0xc148, 0xc149, 0xc14a, 0xc14b, /*0x60-0x67*/
- 0xeebb, 0xd5d6, 0xd7ef, 0xc14c, 0xc14d, 0xc14e, 0xd6c3, 0xc14f, /*0x68-0x6f*/
- 0xc150, 0xeebd, 0xcaf0, 0xc151, 0xeebc, 0xc152, 0xc153, 0xc154, /*0x70-0x77*/
- 0xc155, 0xeebe, 0xc156, 0xc157, 0xc158, 0xc159, 0xeec0, 0xc15a, /*0x78-0x7f*/
- 0xc15b, 0xeebf, 0xc15c, 0xc15d, 0xc15e, 0xc15f, 0xc160, 0xc161, /*0x80-0x87*/
- 0xc162, 0xc163, 0xd1f2, 0xc164, 0xc7bc, 0xc165, 0xc3c0, 0xc166, /*0x88-0x8f*/
- 0xc167, 0xc168, 0xc169, 0xc16a, 0xb8e1, 0xc16b, 0xc16c, 0xc16d, /*0x90-0x97*/
- 0xc16e, 0xc16f, 0xc1e7, 0xc170, 0xc171, 0xf4c6, 0xd0df, 0xf4c7, /*0x98-0x9f*/
- 0xc172, 0xcfdb, 0xc173, 0xc174, 0xc8ba, 0xc175, 0xc176, 0xf4c8, /*0xa0-0xa7*/
- 0xc177, 0xc178, 0xc179, 0xc17a, 0xc17b, 0xc17c, 0xc17d, 0xf4c9, /*0xa8-0xaf*/
- 0xf4ca, 0xc17e, 0xf4cb, 0xc180, 0xc181, 0xc182, 0xc183, 0xc184, /*0xb0-0xb7*/
- 0xd9fa, 0xb8fe, 0xc185, 0xc186, 0xe5f1, 0xd3f0, 0xc187, 0xf4e0, /*0xb8-0xbf*/
- 0xc188, 0xcecc, 0xc189, 0xc18a, 0xc18b, 0xb3e1, 0xc18c, 0xc18d, /*0xc0-0xc7*/
- 0xc18e, 0xc18f, 0xf1b4, 0xc190, 0xd2ee, 0xc191, 0xf4e1, 0xc192, /*0xc8-0xcf*/
- 0xc193, 0xc194, 0xc195, 0xc196, 0xcfe8, 0xf4e2, 0xc197, 0xc198, /*0xd0-0xd7*/
- 0xc7cc, 0xc199, 0xc19a, 0xc19b, 0xc19c, 0xc19d, 0xc19e, 0xb5d4, /*0xd8-0xdf*/
- 0xb4e4, 0xf4e4, 0xc19f, 0xc1a0, 0xc240, 0xf4e3, 0xf4e5, 0xc241, /*0xe0-0xe7*/
- 0xc242, 0xf4e6, 0xc243, 0xc244, 0xc245, 0xc246, 0xf4e7, 0xc247, /*0xe8-0xef*/
- 0xbab2, 0xb0bf, 0xc248, 0xf4e8, 0xc249, 0xc24a, 0xc24b, 0xc24c, /*0xf0-0xf7*/
- 0xc24d, 0xc24e, 0xc24f, 0xb7ad, 0xd2ed, 0xc250, 0xc251, 0xc252, /*0xf8-0xff*/
- /* 0x8000 */
- 0xd2ab, 0xc0cf, 0xc253, 0xbfbc, 0xeba3, 0xd5df, 0xeac8, 0xc254, /*0x00-0x07*/
- 0xc255, 0xc256, 0xc257, 0xf1f3, 0xb6f8, 0xcba3, 0xc258, 0xc259, /*0x08-0x0f*/
- 0xc4cd, 0xc25a, 0xf1e7, 0xc25b, 0xf1e8, 0xb8fb, 0xf1e9, 0xbac4, /*0x10-0x17*/
- 0xd4c5, 0xb0d2, 0xc25c, 0xc25d, 0xf1ea, 0xc25e, 0xc25f, 0xc260, /*0x18-0x1f*/
- 0xf1eb, 0xc261, 0xf1ec, 0xc262, 0xc263, 0xf1ed, 0xf1ee, 0xf1ef, /*0x20-0x27*/
- 0xf1f1, 0xf1f0, 0xc5d5, 0xc264, 0xc265, 0xc266, 0xc267, 0xc268, /*0x28-0x2f*/
- 0xc269, 0xf1f2, 0xc26a, 0xb6fa, 0xc26b, 0xf1f4, 0xd2ae, 0xdec7, /*0x30-0x37*/
- 0xcbca, 0xc26c, 0xc26d, 0xb3dc, 0xc26e, 0xb5a2, 0xc26f, 0xb9a2, /*0x38-0x3f*/
- 0xc270, 0xc271, 0xc4f4, 0xf1f5, 0xc272, 0xc273, 0xf1f6, 0xc274, /*0x40-0x47*/
- 0xc275, 0xc276, 0xc1c4, 0xc1fb, 0xd6b0, 0xf1f7, 0xc277, 0xc278, /*0x48-0x4f*/
- 0xc279, 0xc27a, 0xf1f8, 0xc27b, 0xc1aa, 0xc27c, 0xc27d, 0xc27e, /*0x50-0x57*/
- 0xc6b8, 0xc280, 0xbedb, 0xc281, 0xc282, 0xc283, 0xc284, 0xc285, /*0x58-0x5f*/
- 0xc286, 0xc287, 0xc288, 0xc289, 0xc28a, 0xc28b, 0xc28c, 0xc28d, /*0x60-0x67*/
- 0xc28e, 0xf1f9, 0xb4cf, 0xc28f, 0xc290, 0xc291, 0xc292, 0xc293, /*0x68-0x6f*/
- 0xc294, 0xf1fa, 0xc295, 0xc296, 0xc297, 0xc298, 0xc299, 0xc29a, /*0x70-0x77*/
- 0xc29b, 0xc29c, 0xc29d, 0xc29e, 0xc29f, 0xc2a0, 0xc340, 0xedb2, /*0x78-0x7f*/
- 0xedb1, 0xc341, 0xc342, 0xcbe0, 0xd2de, 0xc343, 0xcbc1, 0xd5d8, /*0x80-0x87*/
- 0xc344, 0xc8e2, 0xc345, 0xc0df, 0xbca1, 0xc346, 0xc347, 0xc348, /*0x88-0x8f*/
- 0xc349, 0xc34a, 0xc34b, 0xebc1, 0xc34c, 0xc34d, 0xd0a4, 0xc34e, /*0x90-0x97*/
- 0xd6e2, 0xc34f, 0xb6c7, 0xb8d8, 0xebc0, 0xb8ce, 0xc350, 0xebbf, /*0x98-0x9f*/
- 0xb3a6, 0xb9c9, 0xd6ab, 0xc351, 0xb7f4, 0xb7ca, 0xc352, 0xc353, /*0xa0-0xa7*/
- 0xc354, 0xbce7, 0xb7be, 0xebc6, 0xc355, 0xebc7, 0xb0b9, 0xbfcf, /*0xa8-0xaf*/
- 0xc356, 0xebc5, 0xd3fd, 0xc357, 0xebc8, 0xc358, 0xc359, 0xebc9, /*0xb0-0xb7*/
- 0xc35a, 0xc35b, 0xb7ce, 0xc35c, 0xebc2, 0xebc4, 0xc9f6, 0xd6d7, /*0xb8-0xbf*/
- 0xd5cd, 0xd0b2, 0xebcf, 0xceb8, 0xebd0, 0xc35d, 0xb5a8, 0xc35e, /*0xc0-0xc7*/
- 0xc35f, 0xc360, 0xc361, 0xc362, 0xb1b3, 0xebd2, 0xcca5, 0xc363, /*0xc8-0xcf*/
- 0xc364, 0xc365, 0xc366, 0xc367, 0xc368, 0xc369, 0xc5d6, 0xebd3, /*0xd0-0xd7*/
- 0xc36a, 0xebd1, 0xc5df, 0xebce, 0xcaa4, 0xebd5, 0xb0fb, 0xc36b, /*0xd8-0xdf*/
- 0xc36c, 0xbafa, 0xc36d, 0xc36e, 0xd8b7, 0xf1e3, 0xc36f, 0xebca, /*0xe0-0xe7*/
- 0xebcb, 0xebcc, 0xebcd, 0xebd6, 0xe6c0, 0xebd9, 0xc370, 0xbfe8, /*0xe8-0xef*/
- 0xd2c8, 0xebd7, 0xebdc, 0xb8ec, 0xebd8, 0xc371, 0xbdba, 0xc372, /*0xf0-0xf7*/
- 0xd0d8, 0xc373, 0xb0b7, 0xc374, 0xebdd, 0xc4dc, 0xc375, 0xc376, /*0xf8-0xff*/
- /* 0x8100 */
- 0xc377, 0xc378, 0xd6ac, 0xc379, 0xc37a, 0xc37b, 0xb4e0, 0xc37c, /*0x00-0x07*/
- 0xc37d, 0xc2f6, 0xbcb9, 0xc37e, 0xc380, 0xebda, 0xebdb, 0xd4e0, /*0x08-0x0f*/
- 0xc6ea, 0xc4d4, 0xebdf, 0xc5a7, 0xd9f5, 0xc381, 0xb2b1, 0xc382, /*0x10-0x17*/
- 0xebe4, 0xc383, 0xbdc5, 0xc384, 0xc385, 0xc386, 0xebe2, 0xc387, /*0x18-0x1f*/
- 0xc388, 0xc389, 0xc38a, 0xc38b, 0xc38c, 0xc38d, 0xc38e, 0xc38f, /*0x20-0x27*/
- 0xc390, 0xc391, 0xc392, 0xc393, 0xebe3, 0xc394, 0xc395, 0xb8ac, /*0x28-0x2f*/
- 0xc396, 0xcdd1, 0xebe5, 0xc397, 0xc398, 0xc399, 0xebe1, 0xc39a, /*0x30-0x37*/
- 0xc1b3, 0xc39b, 0xc39c, 0xc39d, 0xc39e, 0xc39f, 0xc6a2, 0xc3a0, /*0x38-0x3f*/
- 0xc440, 0xc441, 0xc442, 0xc443, 0xc444, 0xc445, 0xccf3, 0xc446, /*0x40-0x47*/
- 0xebe6, 0xc447, 0xc0b0, 0xd2b8, 0xebe7, 0xc448, 0xc449, 0xc44a, /*0x48-0x4f*/
- 0xb8af, 0xb8ad, 0xc44b, 0xebe8, 0xc7bb, 0xcdf3, 0xc44c, 0xc44d, /*0x50-0x57*/
- 0xc44e, 0xebea, 0xebeb, 0xc44f, 0xc450, 0xc451, 0xc452, 0xc453, /*0x58-0x5f*/
- 0xebed, 0xc454, 0xc455, 0xc456, 0xc457, 0xd0c8, 0xc458, 0xebf2, /*0x60-0x67*/
- 0xc459, 0xebee, 0xc45a, 0xc45b, 0xc45c, 0xebf1, 0xc8f9, 0xc45d, /*0x68-0x6f*/
- 0xd1fc, 0xebec, 0xc45e, 0xc45f, 0xebe9, 0xc460, 0xc461, 0xc462, /*0x70-0x77*/
- 0xc463, 0xb8b9, 0xcfd9, 0xc4e5, 0xebef, 0xebf0, 0xccda, 0xcdc8, /*0x78-0x7f*/
- 0xb0f2, 0xc464, 0xebf6, 0xc465, 0xc466, 0xc467, 0xc468, 0xc469, /*0x80-0x87*/
- 0xebf5, 0xc46a, 0xb2b2, 0xc46b, 0xc46c, 0xc46d, 0xc46e, 0xb8e0, /*0x88-0x8f*/
- 0xc46f, 0xebf7, 0xc470, 0xc471, 0xc472, 0xc473, 0xc474, 0xc475, /*0x90-0x97*/
- 0xb1ec, 0xc476, 0xc477, 0xccc5, 0xc4a4, 0xcfa5, 0xc478, 0xc479, /*0x98-0x9f*/
- 0xc47a, 0xc47b, 0xc47c, 0xebf9, 0xc47d, 0xc47e, 0xeca2, 0xc480, /*0xa0-0xa7*/
- 0xc5f2, 0xc481, 0xebfa, 0xc482, 0xc483, 0xc484, 0xc485, 0xc486, /*0xa8-0xaf*/
- 0xc487, 0xc488, 0xc489, 0xc9c5, 0xc48a, 0xc48b, 0xc48c, 0xc48d, /*0xb0-0xb7*/
- 0xc48e, 0xc48f, 0xe2df, 0xebfe, 0xc490, 0xc491, 0xc492, 0xc493, /*0xb8-0xbf*/
- 0xcdce, 0xeca1, 0xb1db, 0xd3b7, 0xc494, 0xc495, 0xd2dc, 0xc496, /*0xc0-0xc7*/
- 0xc497, 0xc498, 0xebfd, 0xc499, 0xebfb, 0xc49a, 0xc49b, 0xc49c, /*0xc8-0xcf*/
- 0xc49d, 0xc49e, 0xc49f, 0xc4a0, 0xc540, 0xc541, 0xc542, 0xc543, /*0xd0-0xd7*/
- 0xc544, 0xc545, 0xc546, 0xc547, 0xc548, 0xc549, 0xc54a, 0xc54b, /*0xd8-0xdf*/
- 0xc54c, 0xc54d, 0xc54e, 0xb3bc, 0xc54f, 0xc550, 0xc551, 0xeab0, /*0xe0-0xe7*/
- 0xc552, 0xc553, 0xd7d4, 0xc554, 0xf4ab, 0xb3f4, 0xc555, 0xc556, /*0xe8-0xef*/
- 0xc557, 0xc558, 0xc559, 0xd6c1, 0xd6c2, 0xc55a, 0xc55b, 0xc55c, /*0xf0-0xf7*/
- 0xc55d, 0xc55e, 0xc55f, 0xd5e9, 0xbeca, 0xc560, 0xf4a7, 0xc561, /*0xf8-0xff*/
- /* 0x8200 */
- 0xd2a8, 0xf4a8, 0xf4a9, 0xc562, 0xf4aa, 0xbecb, 0xd3df, 0xc563, /*0x00-0x07*/
- 0xc564, 0xc565, 0xc566, 0xc567, 0xc9e0, 0xc9e1, 0xc568, 0xc569, /*0x08-0x0f*/
- 0xf3c2, 0xc56a, 0xcae6, 0xc56b, 0xccf2, 0xc56c, 0xc56d, 0xc56e, /*0x10-0x17*/
- 0xc56f, 0xc570, 0xc571, 0xe2b6, 0xcbb4, 0xc572, 0xcee8, 0xd6db, /*0x18-0x1f*/
- 0xc573, 0xf4ad, 0xf4ae, 0xf4af, 0xc574, 0xc575, 0xc576, 0xc577, /*0x20-0x27*/
- 0xf4b2, 0xc578, 0xbabd, 0xf4b3, 0xb0e3, 0xf4b0, 0xc579, 0xf4b1, /*0x28-0x2f*/
- 0xbda2, 0xb2d5, 0xc57a, 0xf4b6, 0xf4b7, 0xb6e6, 0xb2b0, 0xcfcf, /*0x30-0x37*/
- 0xf4b4, 0xb4ac, 0xc57b, 0xf4b5, 0xc57c, 0xc57d, 0xf4b8, 0xc57e, /*0x38-0x3f*/
- 0xc580, 0xc581, 0xc582, 0xc583, 0xf4b9, 0xc584, 0xc585, 0xcda7, /*0x40-0x47*/
- 0xc586, 0xf4ba, 0xc587, 0xf4bb, 0xc588, 0xc589, 0xc58a, 0xf4bc, /*0x48-0x4f*/
- 0xc58b, 0xc58c, 0xc58d, 0xc58e, 0xc58f, 0xc590, 0xc591, 0xc592, /*0x50-0x57*/
- 0xcbd2, 0xc593, 0xf4bd, 0xc594, 0xc595, 0xc596, 0xc597, 0xf4be, /*0x58-0x5f*/
- 0xc598, 0xc599, 0xc59a, 0xc59b, 0xc59c, 0xc59d, 0xc59e, 0xc59f, /*0x60-0x67*/
- 0xf4bf, 0xc5a0, 0xc640, 0xc641, 0xc642, 0xc643, 0xf4de, 0xc1bc, /*0x68-0x6f*/
- 0xbce8, 0xc644, 0xc9ab, 0xd1de, 0xe5f5, 0xc645, 0xc646, 0xc647, /*0x70-0x77*/
- 0xc648, 0xdcb3, 0xd2d5, 0xc649, 0xc64a, 0xdcb4, 0xb0ac, 0xdcb5, /*0x78-0x7f*/
- 0xc64b, 0xc64c, 0xbdda, 0xc64d, 0xdcb9, 0xc64e, 0xc64f, 0xc650, /*0x80-0x87*/
- 0xd8c2, 0xc651, 0xdcb7, 0xd3f3, 0xc652, 0xc9d6, 0xdcba, 0xdcb6, /*0x88-0x8f*/
- 0xc653, 0xdcbb, 0xc3a2, 0xc654, 0xc655, 0xc656, 0xc657, 0xdcbc, /*0x90-0x97*/
- 0xdcc5, 0xdcbd, 0xc658, 0xc659, 0xcedf, 0xd6a5, 0xc65a, 0xdccf, /*0x98-0x9f*/
- 0xc65b, 0xdccd, 0xc65c, 0xc65d, 0xdcd2, 0xbde6, 0xc2ab, 0xc65e, /*0xa0-0xa7*/
- 0xdcb8, 0xdccb, 0xdcce, 0xdcbe, 0xb7d2, 0xb0c5, 0xdcc7, 0xd0be, /*0xa8-0xaf*/
- 0xdcc1, 0xbba8, 0xc65f, 0xb7bc, 0xdccc, 0xc660, 0xc661, 0xdcc6, /*0xb0-0xb7*/
- 0xdcbf, 0xc7db, 0xc662, 0xc663, 0xc664, 0xd1bf, 0xdcc0, 0xc665, /*0xb8-0xbf*/
- 0xc666, 0xdcca, 0xc667, 0xc668, 0xdcd0, 0xc669, 0xc66a, 0xcead, /*0xc0-0xc7*/
- 0xdcc2, 0xc66b, 0xdcc3, 0xdcc8, 0xdcc9, 0xb2d4, 0xdcd1, 0xcbd5, /*0xc8-0xcf*/
- 0xc66c, 0xd4b7, 0xdcdb, 0xdcdf, 0xcca6, 0xdce6, 0xc66d, 0xc3e7, /*0xd0-0xd7*/
- 0xdcdc, 0xc66e, 0xc66f, 0xbfc1, 0xdcd9, 0xc670, 0xb0fa, 0xb9b6, /*0xd8-0xdf*/
- 0xdce5, 0xdcd3, 0xc671, 0xdcc4, 0xdcd6, 0xc8f4, 0xbfe0, 0xc672, /*0xe0-0xe7*/
- 0xc673, 0xc674, 0xc675, 0xc9bb, 0xc676, 0xc677, 0xc678, 0xb1bd, /*0xe8-0xef*/
- 0xc679, 0xd3a2, 0xc67a, 0xc67b, 0xdcda, 0xc67c, 0xc67d, 0xdcd5, /*0xf0-0xf7*/
- 0xc67e, 0xc6bb, 0xc680, 0xdcde, 0xc681, 0xc682, 0xc683, 0xc684, /*0xf8-0xff*/
- /* 0x8300 */
- 0xc685, 0xd7c2, 0xc3af, 0xb7b6, 0xc7d1, 0xc3a9, 0xdce2, 0xdcd8, /*0x00-0x07*/
- 0xdceb, 0xdcd4, 0xc686, 0xc687, 0xdcdd, 0xc688, 0xbea5, 0xdcd7, /*0x08-0x0f*/
- 0xc689, 0xdce0, 0xc68a, 0xc68b, 0xdce3, 0xdce4, 0xc68c, 0xdcf8, /*0x10-0x17*/
- 0xc68d, 0xc68e, 0xdce1, 0xdda2, 0xdce7, 0xc68f, 0xc690, 0xc691, /*0x18-0x1f*/
- 0xc692, 0xc693, 0xc694, 0xc695, 0xc696, 0xc697, 0xc698, 0xbceb, /*0x20-0x27*/
- 0xb4c4, 0xc699, 0xc69a, 0xc3a3, 0xb2e7, 0xdcfa, 0xc69b, 0xdcf2, /*0x28-0x2f*/
- 0xc69c, 0xdcef, 0xc69d, 0xdcfc, 0xdcee, 0xd2f0, 0xb2e8, 0xc69e, /*0x30-0x37*/
- 0xc8d7, 0xc8e3, 0xdcfb, 0xc69f, 0xdced, 0xc6a0, 0xc740, 0xc741, /*0x38-0x3f*/
- 0xdcf7, 0xc742, 0xc743, 0xdcf5, 0xc744, 0xc745, 0xbea3, 0xdcf4, /*0x40-0x47*/
- 0xc746, 0xb2dd, 0xc747, 0xc748, 0xc749, 0xc74a, 0xc74b, 0xdcf3, /*0x48-0x4f*/
- 0xbcf6, 0xdce8, 0xbbc4, 0xc74c, 0xc0f3, 0xc74d, 0xc74e, 0xc74f, /*0x50-0x57*/
- 0xc750, 0xc751, 0xbcd4, 0xdce9, 0xdcea, 0xc752, 0xdcf1, 0xdcf6, /*0x58-0x5f*/
- 0xdcf9, 0xb5b4, 0xc753, 0xc8d9, 0xbbe7, 0xdcfe, 0xdcfd, 0xd3ab, /*0x60-0x67*/
- 0xdda1, 0xdda3, 0xdda5, 0xd2f1, 0xdda4, 0xdda6, 0xdda7, 0xd2a9, /*0x68-0x6f*/
- 0xc754, 0xc755, 0xc756, 0xc757, 0xc758, 0xc759, 0xc75a, 0xbac9, /*0x70-0x77*/
- 0xdda9, 0xc75b, 0xc75c, 0xddb6, 0xddb1, 0xddb4, 0xc75d, 0xc75e, /*0x78-0x7f*/
- 0xc75f, 0xc760, 0xc761, 0xc762, 0xc763, 0xddb0, 0xc6ce, 0xc764, /*0x80-0x87*/
- 0xc765, 0xc0f2, 0xc766, 0xc767, 0xc768, 0xc769, 0xc9af, 0xc76a, /*0x88-0x8f*/
- 0xc76b, 0xc76c, 0xdcec, 0xddae, 0xc76d, 0xc76e, 0xc76f, 0xc770, /*0x90-0x97*/
- 0xddb7, 0xc771, 0xc772, 0xdcf0, 0xddaf, 0xc773, 0xddb8, 0xc774, /*0x98-0x9f*/
- 0xddac, 0xc775, 0xc776, 0xc777, 0xc778, 0xc779, 0xc77a, 0xc77b, /*0xa0-0xa7*/
- 0xddb9, 0xddb3, 0xddad, 0xc4aa, 0xc77c, 0xc77d, 0xc77e, 0xc780, /*0xa8-0xaf*/
- 0xdda8, 0xc0b3, 0xc1ab, 0xddaa, 0xddab, 0xc781, 0xddb2, 0xbbf1, /*0xb0-0xb7*/
- 0xddb5, 0xd3a8, 0xddba, 0xc782, 0xddbb, 0xc3a7, 0xc783, 0xc784, /*0xb8-0xbf*/
- 0xddd2, 0xddbc, 0xc785, 0xc786, 0xc787, 0xddd1, 0xc788, 0xb9bd, /*0xc0-0xc7*/
- 0xc789, 0xc78a, 0xbed5, 0xc78b, 0xbefa, 0xc78c, 0xc78d, 0xbaca, /*0xc8-0xcf*/
- 0xc78e, 0xc78f, 0xc790, 0xc791, 0xddca, 0xc792, 0xddc5, 0xc793, /*0xd0-0xd7*/
- 0xddbf, 0xc794, 0xc795, 0xc796, 0xb2cb, 0xddc3, 0xc797, 0xddcb, /*0xd8-0xdf*/
- 0xb2a4, 0xddd5, 0xc798, 0xc799, 0xc79a, 0xddbe, 0xc79b, 0xc79c, /*0xe0-0xe7*/
- 0xc79d, 0xc6d0, 0xddd0, 0xc79e, 0xc79f, 0xc7a0, 0xc840, 0xc841, /*0xe8-0xef*/
- 0xddd4, 0xc1e2, 0xb7c6, 0xc842, 0xc843, 0xc844, 0xc845, 0xc846, /*0xf0-0xf7*/
- 0xddce, 0xddcf, 0xc847, 0xc848, 0xc849, 0xddc4, 0xc84a, 0xc84b, /*0xf8-0xff*/
- /* 0x8400 */
- 0xc84c, 0xddbd, 0xc84d, 0xddcd, 0xccd1, 0xc84e, 0xddc9, 0xc84f, /*0x00-0x07*/
- 0xc850, 0xc851, 0xc852, 0xddc2, 0xc3c8, 0xc6bc, 0xceae, 0xddcc, /*0x08-0x0f*/
- 0xc853, 0xddc8, 0xc854, 0xc855, 0xc856, 0xc857, 0xc858, 0xc859, /*0x10-0x17*/
- 0xddc1, 0xc85a, 0xc85b, 0xc85c, 0xddc6, 0xc2dc, 0xc85d, 0xc85e, /*0x18-0x1f*/
- 0xc85f, 0xc860, 0xc861, 0xc862, 0xd3a9, 0xd3aa, 0xddd3, 0xcff4, /*0x20-0x27*/
- 0xc8f8, 0xc863, 0xc864, 0xc865, 0xc866, 0xc867, 0xc868, 0xc869, /*0x28-0x2f*/
- 0xc86a, 0xdde6, 0xc86b, 0xc86c, 0xc86d, 0xc86e, 0xc86f, 0xc870, /*0x30-0x37*/
- 0xddc7, 0xc871, 0xc872, 0xc873, 0xdde0, 0xc2e4, 0xc874, 0xc875, /*0x38-0x3f*/
- 0xc876, 0xc877, 0xc878, 0xc879, 0xc87a, 0xc87b, 0xdde1, 0xc87c, /*0x40-0x47*/
- 0xc87d, 0xc87e, 0xc880, 0xc881, 0xc882, 0xc883, 0xc884, 0xc885, /*0x48-0x4f*/
- 0xc886, 0xddd7, 0xc887, 0xc888, 0xc889, 0xc88a, 0xc88b, 0xd6f8, /*0x50-0x57*/
- 0xc88c, 0xddd9, 0xddd8, 0xb8f0, 0xddd6, 0xc88d, 0xc88e, 0xc88f, /*0x58-0x5f*/
- 0xc890, 0xc6cf, 0xc891, 0xb6ad, 0xc892, 0xc893, 0xc894, 0xc895, /*0x60-0x67*/
- 0xc896, 0xdde2, 0xc897, 0xbaf9, 0xd4e1, 0xdde7, 0xc898, 0xc899, /*0x68-0x6f*/
- 0xc89a, 0xb4d0, 0xc89b, 0xddda, 0xc89c, 0xbffb, 0xdde3, 0xc89d, /*0x70-0x77*/
- 0xdddf, 0xc89e, 0xdddd, 0xc89f, 0xc8a0, 0xc940, 0xc941, 0xc942, /*0x78-0x7f*/
- 0xc943, 0xc944, 0xb5d9, 0xc945, 0xc946, 0xc947, 0xc948, 0xdddb, /*0x80-0x87*/
- 0xdddc, 0xddde, 0xc949, 0xbdaf, 0xdde4, 0xc94a, 0xdde5, 0xc94b, /*0x88-0x8f*/
- 0xc94c, 0xc94d, 0xc94e, 0xc94f, 0xc950, 0xc951, 0xc952, 0xddf5, /*0x90-0x97*/
- 0xc953, 0xc3c9, 0xc954, 0xc955, 0xcbe2, 0xc956, 0xc957, 0xc958, /*0x98-0x9f*/
- 0xc959, 0xddf2, 0xc95a, 0xc95b, 0xc95c, 0xc95d, 0xc95e, 0xc95f, /*0xa0-0xa7*/
- 0xc960, 0xc961, 0xc962, 0xc963, 0xc964, 0xc965, 0xc966, 0xd8e1, /*0xa8-0xaf*/
- 0xc967, 0xc968, 0xc6d1, 0xc969, 0xddf4, 0xc96a, 0xc96b, 0xc96c, /*0xb0-0xb7*/
- 0xd5f4, 0xddf3, 0xddf0, 0xc96d, 0xc96e, 0xddec, 0xc96f, 0xddef, /*0xb8-0xbf*/
- 0xc970, 0xdde8, 0xc971, 0xc972, 0xd0ee, 0xc973, 0xc974, 0xc975, /*0xc0-0xc7*/
- 0xc976, 0xc8d8, 0xddee, 0xc977, 0xc978, 0xdde9, 0xc979, 0xc97a, /*0xc8-0xcf*/
- 0xddea, 0xcbf2, 0xc97b, 0xdded, 0xc97c, 0xc97d, 0xb1cd, 0xc97e, /*0xd0-0xd7*/
- 0xc980, 0xc981, 0xc982, 0xc983, 0xc984, 0xc0b6, 0xc985, 0xbcbb, /*0xd8-0xdf*/
- 0xddf1, 0xc986, 0xc987, 0xddf7, 0xc988, 0xddf6, 0xddeb, 0xc989, /*0xe0-0xe7*/
- 0xc98a, 0xc98b, 0xc98c, 0xc98d, 0xc5ee, 0xc98e, 0xc98f, 0xc990, /*0xe8-0xef*/
- 0xddfb, 0xc991, 0xc992, 0xc993, 0xc994, 0xc995, 0xc996, 0xc997, /*0xf0-0xf7*/
- 0xc998, 0xc999, 0xc99a, 0xc99b, 0xdea4, 0xc99c, 0xc99d, 0xdea3, /*0xf8-0xff*/
- /* 0x8500 */
- 0xc99e, 0xc99f, 0xc9a0, 0xca40, 0xca41, 0xca42, 0xca43, 0xca44, /*0x00-0x07*/
- 0xca45, 0xca46, 0xca47, 0xca48, 0xddf8, 0xca49, 0xca4a, 0xca4b, /*0x08-0x0f*/
- 0xca4c, 0xc3ef, 0xca4d, 0xc2fb, 0xca4e, 0xca4f, 0xca50, 0xd5e1, /*0x10-0x17*/
- 0xca51, 0xca52, 0xceb5, 0xca53, 0xca54, 0xca55, 0xca56, 0xddfd, /*0x18-0x1f*/
- 0xca57, 0xb2cc, 0xca58, 0xca59, 0xca5a, 0xca5b, 0xca5c, 0xca5d, /*0x20-0x27*/
- 0xca5e, 0xca5f, 0xca60, 0xc4e8, 0xcadf, 0xca61, 0xca62, 0xca63, /*0x28-0x2f*/
- 0xca64, 0xca65, 0xca66, 0xca67, 0xca68, 0xca69, 0xca6a, 0xc7be, /*0x30-0x37*/
- 0xddfa, 0xddfc, 0xddfe, 0xdea2, 0xb0aa, 0xb1ce, 0xca6b, 0xca6c, /*0x38-0x3f*/
- 0xca6d, 0xca6e, 0xca6f, 0xdeac, 0xca70, 0xca71, 0xca72, 0xca73, /*0x40-0x47*/
- 0xdea6, 0xbdb6, 0xc8ef, 0xca74, 0xca75, 0xca76, 0xca77, 0xca78, /*0x48-0x4f*/
- 0xca79, 0xca7a, 0xca7b, 0xca7c, 0xca7d, 0xca7e, 0xdea1, 0xca80, /*0x50-0x57*/
- 0xca81, 0xdea5, 0xca82, 0xca83, 0xca84, 0xca85, 0xdea9, 0xca86, /*0x58-0x5f*/
- 0xca87, 0xca88, 0xca89, 0xca8a, 0xdea8, 0xca8b, 0xca8c, 0xca8d, /*0x60-0x67*/
- 0xdea7, 0xca8e, 0xca8f, 0xca90, 0xca91, 0xca92, 0xca93, 0xca94, /*0x68-0x6f*/
- 0xca95, 0xca96, 0xdead, 0xca97, 0xd4cc, 0xca98, 0xca99, 0xca9a, /*0x70-0x77*/
- 0xca9b, 0xdeb3, 0xdeaa, 0xdeae, 0xca9c, 0xca9d, 0xc0d9, 0xca9e, /*0x78-0x7f*/
- 0xca9f, 0xcaa0, 0xcb40, 0xcb41, 0xb1a1, 0xdeb6, 0xcb42, 0xdeb1, /*0x80-0x87*/
- 0xcb43, 0xcb44, 0xcb45, 0xcb46, 0xcb47, 0xcb48, 0xcb49, 0xdeb2, /*0x88-0x8f*/
- 0xcb4a, 0xcb4b, 0xcb4c, 0xcb4d, 0xcb4e, 0xcb4f, 0xcb50, 0xcb51, /*0x90-0x97*/
- 0xcb52, 0xcb53, 0xcb54, 0xd1a6, 0xdeb5, 0xcb55, 0xcb56, 0xcb57, /*0x98-0x9f*/
- 0xcb58, 0xcb59, 0xcb5a, 0xcb5b, 0xdeaf, 0xcb5c, 0xcb5d, 0xcb5e, /*0xa0-0xa7*/
- 0xdeb0, 0xcb5f, 0xd0bd, 0xcb60, 0xcb61, 0xcb62, 0xdeb4, 0xcaed, /*0xa8-0xaf*/
- 0xdeb9, 0xcb63, 0xcb64, 0xcb65, 0xcb66, 0xcb67, 0xcb68, 0xdeb8, /*0xb0-0xb7*/
- 0xcb69, 0xdeb7, 0xcb6a, 0xcb6b, 0xcb6c, 0xcb6d, 0xcb6e, 0xcb6f, /*0xb8-0xbf*/
- 0xcb70, 0xdebb, 0xcb71, 0xcb72, 0xcb73, 0xcb74, 0xcb75, 0xcb76, /*0xc0-0xc7*/
- 0xcb77, 0xbde5, 0xcb78, 0xcb79, 0xcb7a, 0xcb7b, 0xcb7c, 0xb2d8, /*0xc8-0xcf*/
- 0xc3ea, 0xcb7d, 0xcb7e, 0xdeba, 0xcb80, 0xc5ba, 0xcb81, 0xcb82, /*0xd0-0xd7*/
- 0xcb83, 0xcb84, 0xcb85, 0xcb86, 0xdebc, 0xcb87, 0xcb88, 0xcb89, /*0xd8-0xdf*/
- 0xcb8a, 0xcb8b, 0xcb8c, 0xcb8d, 0xccd9, 0xcb8e, 0xcb8f, 0xcb90, /*0xe0-0xe7*/
- 0xcb91, 0xb7aa, 0xcb92, 0xcb93, 0xcb94, 0xcb95, 0xcb96, 0xcb97, /*0xe8-0xef*/
- 0xcb98, 0xcb99, 0xcb9a, 0xcb9b, 0xcb9c, 0xcb9d, 0xcb9e, 0xcb9f, /*0xf0-0xf7*/
- 0xcba0, 0xcc40, 0xcc41, 0xd4e5, 0xcc42, 0xcc43, 0xcc44, 0xdebd, /*0xf8-0xff*/
- /* 0x8600 */
- 0xcc45, 0xcc46, 0xcc47, 0xcc48, 0xcc49, 0xdebf, 0xcc4a, 0xcc4b, /*0x00-0x07*/
- 0xcc4c, 0xcc4d, 0xcc4e, 0xcc4f, 0xcc50, 0xcc51, 0xcc52, 0xcc53, /*0x08-0x0f*/
- 0xcc54, 0xc4a2, 0xcc55, 0xcc56, 0xcc57, 0xcc58, 0xdec1, 0xcc59, /*0x10-0x17*/
- 0xcc5a, 0xcc5b, 0xcc5c, 0xcc5d, 0xcc5e, 0xcc5f, 0xcc60, 0xcc61, /*0x18-0x1f*/
- 0xcc62, 0xcc63, 0xcc64, 0xcc65, 0xcc66, 0xcc67, 0xcc68, 0xdebe, /*0x20-0x27*/
- 0xcc69, 0xdec0, 0xcc6a, 0xcc6b, 0xcc6c, 0xcc6d, 0xcc6e, 0xcc6f, /*0x28-0x2f*/
- 0xcc70, 0xcc71, 0xcc72, 0xcc73, 0xcc74, 0xcc75, 0xcc76, 0xcc77, /*0x30-0x37*/
- 0xd5ba, 0xcc78, 0xcc79, 0xcc7a, 0xdec2, 0xcc7b, 0xcc7c, 0xcc7d, /*0x38-0x3f*/
- 0xcc7e, 0xcc80, 0xcc81, 0xcc82, 0xcc83, 0xcc84, 0xcc85, 0xcc86, /*0x40-0x47*/
- 0xcc87, 0xcc88, 0xcc89, 0xcc8a, 0xcc8b, 0xf2ae, 0xbba2, 0xc2b2, /*0x48-0x4f*/
- 0xc5b0, 0xc2c7, 0xcc8c, 0xcc8d, 0xf2af, 0xcc8e, 0xcc8f, 0xcc90, /*0x50-0x57*/
- 0xcc91, 0xcc92, 0xd0e9, 0xcc93, 0xcc94, 0xcc95, 0xd3dd, 0xcc96, /*0x58-0x5f*/
- 0xcc97, 0xcc98, 0xebbd, 0xcc99, 0xcc9a, 0xcc9b, 0xcc9c, 0xcc9d, /*0x60-0x67*/
- 0xcc9e, 0xcc9f, 0xcca0, 0xb3e6, 0xf2b0, 0xcd40, 0xf2b1, 0xcd41, /*0x68-0x6f*/
- 0xcd42, 0xcaad, 0xcd43, 0xcd44, 0xcd45, 0xcd46, 0xcd47, 0xcd48, /*0x70-0x77*/
- 0xcd49, 0xbae7, 0xf2b3, 0xf2b5, 0xf2b4, 0xcbe4, 0xcfba, 0xf2b2, /*0x78-0x7f*/
- 0xcab4, 0xd2cf, 0xc2ec, 0xcd4a, 0xcd4b, 0xcd4c, 0xcd4d, 0xcd4e, /*0x80-0x87*/
- 0xcd4f, 0xcd50, 0xcec3, 0xf2b8, 0xb0f6, 0xf2b7, 0xcd51, 0xcd52, /*0x88-0x8f*/
- 0xcd53, 0xcd54, 0xcd55, 0xf2be, 0xcd56, 0xb2cf, 0xcd57, 0xcd58, /*0x90-0x97*/
- 0xcd59, 0xcd5a, 0xcd5b, 0xcd5c, 0xd1c1, 0xf2ba, 0xcd5d, 0xcd5e, /*0x98-0x9f*/
- 0xcd5f, 0xcd60, 0xcd61, 0xf2bc, 0xd4e9, 0xcd62, 0xcd63, 0xf2bb, /*0xa0-0xa7*/
- 0xf2b6, 0xf2bf, 0xf2bd, 0xcd64, 0xf2b9, 0xcd65, 0xcd66, 0xf2c7, /*0xa8-0xaf*/
- 0xf2c4, 0xf2c6, 0xcd67, 0xcd68, 0xf2ca, 0xf2c2, 0xf2c0, 0xcd69, /*0xb0-0xb7*/
- 0xcd6a, 0xcd6b, 0xf2c5, 0xcd6c, 0xcd6d, 0xcd6e, 0xcd6f, 0xcd70, /*0xb8-0xbf*/
- 0xd6fb, 0xcd71, 0xcd72, 0xcd73, 0xf2c1, 0xcd74, 0xc7f9, 0xc9df, /*0xc0-0xc7*/
- 0xcd75, 0xf2c8, 0xb9c6, 0xb5b0, 0xcd76, 0xcd77, 0xf2c3, 0xf2c9, /*0xc8-0xcf*/
- 0xf2d0, 0xf2d6, 0xcd78, 0xcd79, 0xbbd7, 0xcd7a, 0xcd7b, 0xcd7c, /*0xd0-0xd7*/
- 0xf2d5, 0xcddc, 0xcd7d, 0xd6eb, 0xcd7e, 0xcd80, 0xf2d2, 0xf2d4, /*0xd8-0xdf*/
- 0xcd81, 0xcd82, 0xcd83, 0xcd84, 0xb8f2, 0xcd85, 0xcd86, 0xcd87, /*0xe0-0xe7*/
- 0xcd88, 0xf2cb, 0xcd89, 0xcd8a, 0xcd8b, 0xf2ce, 0xc2f9, 0xcd8c, /*0xe8-0xef*/
- 0xd5dd, 0xf2cc, 0xf2cd, 0xf2cf, 0xf2d3, 0xcd8d, 0xcd8e, 0xcd8f, /*0xf0-0xf7*/
- 0xf2d9, 0xd3bc, 0xcd90, 0xcd91, 0xcd92, 0xcd93, 0xb6ea, 0xcd94, /*0xf8-0xff*/
- /* 0x8700 */
- 0xcaf1, 0xcd95, 0xb7e4, 0xf2d7, 0xcd96, 0xcd97, 0xcd98, 0xf2d8, /*0x00-0x07*/
- 0xf2da, 0xf2dd, 0xf2db, 0xcd99, 0xcd9a, 0xf2dc, 0xcd9b, 0xcd9c, /*0x08-0x0f*/
- 0xcd9d, 0xcd9e, 0xd1d1, 0xf2d1, 0xcd9f, 0xcdc9, 0xcda0, 0xcecf, /*0x10-0x17*/
- 0xd6a9, 0xce40, 0xf2e3, 0xce41, 0xc3db, 0xce42, 0xf2e0, 0xce43, /*0x18-0x1f*/
- 0xce44, 0xc0af, 0xf2ec, 0xf2de, 0xce45, 0xf2e1, 0xce46, 0xce47, /*0x20-0x27*/
- 0xce48, 0xf2e8, 0xce49, 0xce4a, 0xce4b, 0xce4c, 0xf2e2, 0xce4d, /*0x28-0x2f*/
- 0xce4e, 0xf2e7, 0xce4f, 0xce50, 0xf2e6, 0xce51, 0xce52, 0xf2e9, /*0x30-0x37*/
- 0xce53, 0xce54, 0xce55, 0xf2df, 0xce56, 0xce57, 0xf2e4, 0xf2ea, /*0x38-0x3f*/
- 0xce58, 0xce59, 0xce5a, 0xce5b, 0xce5c, 0xce5d, 0xce5e, 0xd3ac, /*0x40-0x47*/
- 0xf2e5, 0xb2f5, 0xce5f, 0xce60, 0xf2f2, 0xce61, 0xd0ab, 0xce62, /*0x48-0x4f*/
- 0xce63, 0xce64, 0xce65, 0xf2f5, 0xce66, 0xce67, 0xce68, 0xbbc8, /*0x50-0x57*/
- 0xce69, 0xf2f9, 0xce6a, 0xce6b, 0xce6c, 0xce6d, 0xce6e, 0xce6f, /*0x58-0x5f*/
- 0xf2f0, 0xce70, 0xce71, 0xf2f6, 0xf2f8, 0xf2fa, 0xce72, 0xce73, /*0x60-0x67*/
- 0xce74, 0xce75, 0xce76, 0xce77, 0xce78, 0xce79, 0xf2f3, 0xce7a, /*0x68-0x6f*/
- 0xf2f1, 0xce7b, 0xce7c, 0xce7d, 0xbafb, 0xce7e, 0xb5fb, 0xce80, /*0x70-0x77*/
- 0xce81, 0xce82, 0xce83, 0xf2ef, 0xf2f7, 0xf2ed, 0xf2ee, 0xce84, /*0x78-0x7f*/
- 0xce85, 0xce86, 0xf2eb, 0xf3a6, 0xce87, 0xf3a3, 0xce88, 0xce89, /*0x80-0x87*/
- 0xf3a2, 0xce8a, 0xce8b, 0xf2f4, 0xce8c, 0xc8da, 0xce8d, 0xce8e, /*0x88-0x8f*/
- 0xce8f, 0xce90, 0xce91, 0xf2fb, 0xce92, 0xce93, 0xce94, 0xf3a5, /*0x90-0x97*/
- 0xce95, 0xce96, 0xce97, 0xce98, 0xce99, 0xce9a, 0xce9b, 0xc3f8, /*0x98-0x9f*/
- 0xce9c, 0xce9d, 0xce9e, 0xce9f, 0xcea0, 0xcf40, 0xcf41, 0xcf42, /*0xa0-0xa7*/
- 0xf2fd, 0xcf43, 0xcf44, 0xf3a7, 0xf3a9, 0xf3a4, 0xcf45, 0xf2fc, /*0xa8-0xaf*/
- 0xcf46, 0xcf47, 0xcf48, 0xf3ab, 0xcf49, 0xf3aa, 0xcf4a, 0xcf4b, /*0xb0-0xb7*/
- 0xcf4c, 0xcf4d, 0xc2dd, 0xcf4e, 0xcf4f, 0xf3ae, 0xcf50, 0xcf51, /*0xb8-0xbf*/
- 0xf3b0, 0xcf52, 0xcf53, 0xcf54, 0xcf55, 0xcf56, 0xf3a1, 0xcf57, /*0xc0-0xc7*/
- 0xcf58, 0xcf59, 0xf3b1, 0xf3ac, 0xcf5a, 0xcf5b, 0xcf5c, 0xcf5d, /*0xc8-0xcf*/
- 0xcf5e, 0xf3af, 0xf2fe, 0xf3ad, 0xcf5f, 0xcf60, 0xcf61, 0xcf62, /*0xd0-0xd7*/
- 0xcf63, 0xcf64, 0xcf65, 0xf3b2, 0xcf66, 0xcf67, 0xcf68, 0xcf69, /*0xd8-0xdf*/
- 0xf3b4, 0xcf6a, 0xcf6b, 0xcf6c, 0xcf6d, 0xf3a8, 0xcf6e, 0xcf6f, /*0xe0-0xe7*/
- 0xcf70, 0xcf71, 0xf3b3, 0xcf72, 0xcf73, 0xcf74, 0xf3b5, 0xcf75, /*0xe8-0xef*/
- 0xcf76, 0xcf77, 0xcf78, 0xcf79, 0xcf7a, 0xcf7b, 0xcf7c, 0xcf7d, /*0xf0-0xf7*/
- 0xcf7e, 0xd0b7, 0xcf80, 0xcf81, 0xcf82, 0xcf83, 0xf3b8, 0xcf84, /*0xf8-0xff*/
- /* 0x8800 */
- 0xcf85, 0xcf86, 0xcf87, 0xd9f9, 0xcf88, 0xcf89, 0xcf8a, 0xcf8b, /*0x00-0x07*/
- 0xcf8c, 0xcf8d, 0xf3b9, 0xcf8e, 0xcf8f, 0xcf90, 0xcf91, 0xcf92, /*0x08-0x0f*/
- 0xcf93, 0xcf94, 0xcf95, 0xf3b7, 0xcf96, 0xc8e4, 0xf3b6, 0xcf97, /*0x10-0x17*/
- 0xcf98, 0xcf99, 0xcf9a, 0xf3ba, 0xcf9b, 0xcf9c, 0xcf9d, 0xcf9e, /*0x18-0x1f*/
- 0xcf9f, 0xf3bb, 0xb4c0, 0xcfa0, 0xd040, 0xd041, 0xd042, 0xd043, /*0x20-0x27*/
- 0xd044, 0xd045, 0xd046, 0xd047, 0xd048, 0xd049, 0xd04a, 0xd04b, /*0x28-0x2f*/
- 0xd04c, 0xd04d, 0xeec3, 0xd04e, 0xd04f, 0xd050, 0xd051, 0xd052, /*0x30-0x37*/
- 0xd053, 0xf3bc, 0xd054, 0xd055, 0xf3bd, 0xd056, 0xd057, 0xd058, /*0x38-0x3f*/
- 0xd1aa, 0xd059, 0xd05a, 0xd05b, 0xf4ac, 0xd0c6, 0xd05c, 0xd05d, /*0x40-0x47*/
- 0xd05e, 0xd05f, 0xd060, 0xd061, 0xd0d0, 0xd1dc, 0xd062, 0xd063, /*0x48-0x4f*/
- 0xd064, 0xd065, 0xd066, 0xd067, 0xcfce, 0xd068, 0xd069, 0xbdd6, /*0x50-0x57*/
- 0xd06a, 0xd1c3, 0xd06b, 0xd06c, 0xd06d, 0xd06e, 0xd06f, 0xd070, /*0x58-0x5f*/
- 0xd071, 0xbae2, 0xe1e9, 0xd2c2, 0xf1c2, 0xb2b9, 0xd072, 0xd073, /*0x60-0x67*/
- 0xb1ed, 0xf1c3, 0xd074, 0xc9c0, 0xb3c4, 0xd075, 0xd9f2, 0xd076, /*0x68-0x6f*/
- 0xcba5, 0xd077, 0xf1c4, 0xd078, 0xd079, 0xd07a, 0xd07b, 0xd6d4, /*0x70-0x77*/
- 0xd07c, 0xd07d, 0xd07e, 0xd080, 0xd081, 0xf1c5, 0xf4c0, 0xf1c6, /*0x78-0x7f*/
- 0xd082, 0xd4ac, 0xf1c7, 0xd083, 0xb0c0, 0xf4c1, 0xd084, 0xd085, /*0x80-0x87*/
- 0xf4c2, 0xd086, 0xd087, 0xb4fc, 0xd088, 0xc5db, 0xd089, 0xd08a, /*0x88-0x8f*/
- 0xd08b, 0xd08c, 0xccbb, 0xd08d, 0xd08e, 0xd08f, 0xd0e4, 0xd090, /*0x90-0x97*/
- 0xd091, 0xd092, 0xd093, 0xd094, 0xcde0, 0xd095, 0xd096, 0xd097, /*0x98-0x9f*/
- 0xd098, 0xd099, 0xf1c8, 0xd09a, 0xd9f3, 0xd09b, 0xd09c, 0xd09d, /*0xa0-0xa7*/
- 0xd09e, 0xd09f, 0xd0a0, 0xb1bb, 0xd140, 0xcfae, 0xd141, 0xd142, /*0xa8-0xaf*/
- 0xd143, 0xb8a4, 0xd144, 0xd145, 0xd146, 0xd147, 0xd148, 0xf1ca, /*0xb0-0xb7*/
- 0xd149, 0xd14a, 0xd14b, 0xd14c, 0xf1cb, 0xd14d, 0xd14e, 0xd14f, /*0xb8-0xbf*/
- 0xd150, 0xb2c3, 0xc1d1, 0xd151, 0xd152, 0xd7b0, 0xf1c9, 0xd153, /*0xc0-0xc7*/
- 0xd154, 0xf1cc, 0xd155, 0xd156, 0xd157, 0xd158, 0xf1ce, 0xd159, /*0xc8-0xcf*/
- 0xd15a, 0xd15b, 0xd9f6, 0xd15c, 0xd2e1, 0xd4a3, 0xd15d, 0xd15e, /*0xd0-0xd7*/
- 0xf4c3, 0xc8b9, 0xd15f, 0xd160, 0xd161, 0xd162, 0xd163, 0xf4c4, /*0xd8-0xdf*/
- 0xd164, 0xd165, 0xf1cd, 0xf1cf, 0xbfe3, 0xf1d0, 0xd166, 0xd167, /*0xe0-0xe7*/
- 0xf1d4, 0xd168, 0xd169, 0xd16a, 0xd16b, 0xd16c, 0xd16d, 0xd16e, /*0xe8-0xef*/
- 0xf1d6, 0xf1d1, 0xd16f, 0xc9d1, 0xc5e1, 0xd170, 0xd171, 0xd172, /*0xf0-0xf7*/
- 0xc2e3, 0xb9fc, 0xd173, 0xd174, 0xf1d3, 0xd175, 0xf1d5, 0xd176, /*0xf8-0xff*/
- /* 0x8900 */
- 0xd177, 0xd178, 0xb9d3, 0xd179, 0xd17a, 0xd17b, 0xd17c, 0xd17d, /*0x00-0x07*/
- 0xd17e, 0xd180, 0xf1db, 0xd181, 0xd182, 0xd183, 0xd184, 0xd185, /*0x08-0x0f*/
- 0xbad6, 0xd186, 0xb0fd, 0xf1d9, 0xd187, 0xd188, 0xd189, 0xd18a, /*0x10-0x17*/
- 0xd18b, 0xf1d8, 0xf1d2, 0xf1da, 0xd18c, 0xd18d, 0xd18e, 0xd18f, /*0x18-0x1f*/
- 0xd190, 0xf1d7, 0xd191, 0xd192, 0xd193, 0xc8ec, 0xd194, 0xd195, /*0x20-0x27*/
- 0xd196, 0xd197, 0xcdca, 0xf1dd, 0xd198, 0xd199, 0xd19a, 0xd19b, /*0x28-0x2f*/
- 0xe5bd, 0xd19c, 0xd19d, 0xd19e, 0xf1dc, 0xd19f, 0xf1de, 0xd1a0, /*0x30-0x37*/
- 0xd240, 0xd241, 0xd242, 0xd243, 0xd244, 0xd245, 0xd246, 0xd247, /*0x38-0x3f*/
- 0xd248, 0xf1df, 0xd249, 0xd24a, 0xcfe5, 0xd24b, 0xd24c, 0xd24d, /*0x40-0x47*/
- 0xd24e, 0xd24f, 0xd250, 0xd251, 0xd252, 0xd253, 0xd254, 0xd255, /*0x48-0x4f*/
- 0xd256, 0xd257, 0xd258, 0xd259, 0xd25a, 0xd25b, 0xd25c, 0xd25d, /*0x50-0x57*/
- 0xd25e, 0xd25f, 0xd260, 0xd261, 0xd262, 0xd263, 0xf4c5, 0xbdf3, /*0x58-0x5f*/
- 0xd264, 0xd265, 0xd266, 0xd267, 0xd268, 0xd269, 0xf1e0, 0xd26a, /*0x60-0x67*/
- 0xd26b, 0xd26c, 0xd26d, 0xd26e, 0xd26f, 0xd270, 0xd271, 0xd272, /*0x68-0x6f*/
- 0xd273, 0xd274, 0xd275, 0xd276, 0xd277, 0xd278, 0xd279, 0xd27a, /*0x70-0x77*/
- 0xd27b, 0xd27c, 0xd27d, 0xf1e1, 0xd27e, 0xd280, 0xd281, 0xcef7, /*0x78-0x7f*/
- 0xd282, 0xd2aa, 0xd283, 0xf1fb, 0xd284, 0xd285, 0xb8b2, 0xd286, /*0x80-0x87*/
- 0xd287, 0xd288, 0xd289, 0xd28a, 0xd28b, 0xd28c, 0xd28d, 0xd28e, /*0x88-0x8f*/
- 0xd28f, 0xd290, 0xd291, 0xd292, 0xd293, 0xd294, 0xd295, 0xd296, /*0x90-0x97*/
- 0xd297, 0xd298, 0xd299, 0xd29a, 0xd29b, 0xd29c, 0xd29d, 0xd29e, /*0x98-0x9f*/
- 0xd29f, 0xd2a0, 0xd340, 0xd341, 0xd342, 0xd343, 0xd344, 0xd345, /*0xa0-0xa7*/
- 0xd346, 0xd347, 0xd348, 0xd349, 0xd34a, 0xd34b, 0xd34c, 0xd34d, /*0xa8-0xaf*/
- 0xd34e, 0xd34f, 0xd350, 0xd351, 0xd352, 0xd353, 0xd354, 0xd355, /*0xb0-0xb7*/
- 0xd356, 0xd357, 0xd358, 0xd359, 0xd35a, 0xd35b, 0xd35c, 0xd35d, /*0xb8-0xbf*/
- 0xd35e, 0xbcfb, 0xb9db, 0xd35f, 0xb9e6, 0xc3d9, 0xcad3, 0xeae8, /*0xc0-0xc7*/
- 0xc0c0, 0xbef5, 0xeae9, 0xeaea, 0xeaeb, 0xd360, 0xeaec, 0xeaed, /*0xc8-0xcf*/
- 0xeaee, 0xeaef, 0xbdc7, 0xd361, 0xd362, 0xd363, 0xf5fb, 0xd364, /*0xd0-0xd7*/
- 0xd365, 0xd366, 0xf5fd, 0xd367, 0xf5fe, 0xd368, 0xf5fc, 0xd369, /*0xd8-0xdf*/
- 0xd36a, 0xd36b, 0xd36c, 0xbde2, 0xd36d, 0xf6a1, 0xb4a5, 0xd36e, /*0xe0-0xe7*/
- 0xd36f, 0xd370, 0xd371, 0xf6a2, 0xd372, 0xd373, 0xd374, 0xf6a3, /*0xe8-0xef*/
- 0xd375, 0xd376, 0xd377, 0xecb2, 0xd378, 0xd379, 0xd37a, 0xd37b, /*0xf0-0xf7*/
- 0xd37c, 0xd37d, 0xd37e, 0xd380, 0xd381, 0xd382, 0xd383, 0xd384, /*0xf8-0xff*/
- /* 0x8a00 */
- 0xd1d4, 0xd385, 0xd386, 0xd387, 0xd388, 0xd389, 0xd38a, 0xd9ea, /*0x00-0x07*/
- 0xd38b, 0xd38c, 0xd38d, 0xd38e, 0xd38f, 0xd390, 0xd391, 0xd392, /*0x08-0x0f*/
- 0xd393, 0xd394, 0xd395, 0xd396, 0xd397, 0xd398, 0xd399, 0xd39a, /*0x10-0x17*/
- 0xd39b, 0xd39c, 0xd39d, 0xd39e, 0xd39f, 0xd3a0, 0xd440, 0xd441, /*0x18-0x1f*/
- 0xd442, 0xd443, 0xd444, 0xd445, 0xd446, 0xd447, 0xd448, 0xd449, /*0x20-0x27*/
- 0xd44a, 0xd44b, 0xd44c, 0xd44d, 0xd44e, 0xd44f, 0xd450, 0xd451, /*0x28-0x2f*/
- 0xd452, 0xd453, 0xd454, 0xd455, 0xd456, 0xd457, 0xd458, 0xd459, /*0x30-0x37*/
- 0xd45a, 0xd45b, 0xd45c, 0xd45d, 0xd45e, 0xd45f, 0xf6a4, 0xd460, /*0x38-0x3f*/
- 0xd461, 0xd462, 0xd463, 0xd464, 0xd465, 0xd466, 0xd467, 0xd468, /*0x40-0x47*/
- 0xeeba, 0xd469, 0xd46a, 0xd46b, 0xd46c, 0xd46d, 0xd46e, 0xd46f, /*0x48-0x4f*/
- 0xd470, 0xd471, 0xd472, 0xd473, 0xd474, 0xd475, 0xd476, 0xd477, /*0x50-0x57*/
- 0xd478, 0xd479, 0xd47a, 0xd47b, 0xd47c, 0xd47d, 0xd47e, 0xd480, /*0x58-0x5f*/
- 0xd481, 0xd482, 0xd483, 0xd484, 0xd485, 0xd486, 0xd487, 0xd488, /*0x60-0x67*/
- 0xd489, 0xd48a, 0xd48b, 0xd48c, 0xd48d, 0xd48e, 0xd48f, 0xd490, /*0x68-0x6f*/
- 0xd491, 0xd492, 0xd493, 0xd494, 0xd495, 0xd496, 0xd497, 0xd498, /*0x70-0x77*/
- 0xd499, 0xd5b2, 0xd49a, 0xd49b, 0xd49c, 0xd49d, 0xd49e, 0xd49f, /*0x78-0x7f*/
- 0xd4a0, 0xd540, 0xd541, 0xd542, 0xd543, 0xd544, 0xd545, 0xd546, /*0x80-0x87*/
- 0xd547, 0xd3fe, 0xccdc, 0xd548, 0xd549, 0xd54a, 0xd54b, 0xd54c, /*0x88-0x8f*/
- 0xd54d, 0xd54e, 0xd54f, 0xcac4, 0xd550, 0xd551, 0xd552, 0xd553, /*0x90-0x97*/
- 0xd554, 0xd555, 0xd556, 0xd557, 0xd558, 0xd559, 0xd55a, 0xd55b, /*0x98-0x9f*/
- 0xd55c, 0xd55d, 0xd55e, 0xd55f, 0xd560, 0xd561, 0xd562, 0xd563, /*0xa0-0xa7*/
- 0xd564, 0xd565, 0xd566, 0xd567, 0xd568, 0xd569, 0xd56a, 0xd56b, /*0xa8-0xaf*/
- 0xd56c, 0xd56d, 0xd56e, 0xd56f, 0xd570, 0xd571, 0xd572, 0xd573, /*0xb0-0xb7*/
- 0xd574, 0xd575, 0xd576, 0xd577, 0xd578, 0xd579, 0xd57a, 0xd57b, /*0xb8-0xbf*/
- 0xd57c, 0xd57d, 0xd57e, 0xd580, 0xd581, 0xd582, 0xd583, 0xd584, /*0xc0-0xc7*/
- 0xd585, 0xd586, 0xd587, 0xd588, 0xd589, 0xd58a, 0xd58b, 0xd58c, /*0xc8-0xcf*/
- 0xd58d, 0xd58e, 0xd58f, 0xd590, 0xd591, 0xd592, 0xd593, 0xd594, /*0xd0-0xd7*/
- 0xd595, 0xd596, 0xd597, 0xd598, 0xd599, 0xd59a, 0xd59b, 0xd59c, /*0xd8-0xdf*/
- 0xd59d, 0xd59e, 0xd59f, 0xd5a0, 0xd640, 0xd641, 0xd642, 0xd643, /*0xe0-0xe7*/
- 0xd644, 0xd645, 0xd646, 0xd647, 0xd648, 0xd649, 0xd64a, 0xd64b, /*0xe8-0xef*/
- 0xd64c, 0xd64d, 0xd64e, 0xd64f, 0xd650, 0xd651, 0xd652, 0xd653, /*0xf0-0xf7*/
- 0xd654, 0xd655, 0xd656, 0xd657, 0xd658, 0xd659, 0xd65a, 0xd65b, /*0xf8-0xff*/
- /* 0x8b00 */
- 0xd65c, 0xd65d, 0xd65e, 0xd65f, 0xd660, 0xd661, 0xd662, 0xe5c0, /*0x00-0x07*/
- 0xd663, 0xd664, 0xd665, 0xd666, 0xd667, 0xd668, 0xd669, 0xd66a, /*0x08-0x0f*/
- 0xd66b, 0xd66c, 0xd66d, 0xd66e, 0xd66f, 0xd670, 0xd671, 0xd672, /*0x10-0x17*/
- 0xd673, 0xd674, 0xd675, 0xd676, 0xd677, 0xd678, 0xd679, 0xd67a, /*0x18-0x1f*/
- 0xd67b, 0xd67c, 0xd67d, 0xd67e, 0xd680, 0xd681, 0xf6a5, 0xd682, /*0x20-0x27*/
- 0xd683, 0xd684, 0xd685, 0xd686, 0xd687, 0xd688, 0xd689, 0xd68a, /*0x28-0x2f*/
- 0xd68b, 0xd68c, 0xd68d, 0xd68e, 0xd68f, 0xd690, 0xd691, 0xd692, /*0x30-0x37*/
- 0xd693, 0xd694, 0xd695, 0xd696, 0xd697, 0xd698, 0xd699, 0xd69a, /*0x38-0x3f*/
- 0xd69b, 0xd69c, 0xd69d, 0xd69e, 0xd69f, 0xd6a0, 0xd740, 0xd741, /*0x40-0x47*/
- 0xd742, 0xd743, 0xd744, 0xd745, 0xd746, 0xd747, 0xd748, 0xd749, /*0x48-0x4f*/
- 0xd74a, 0xd74b, 0xd74c, 0xd74d, 0xd74e, 0xd74f, 0xd750, 0xd751, /*0x50-0x57*/
- 0xd752, 0xd753, 0xd754, 0xd755, 0xd756, 0xd757, 0xd758, 0xd759, /*0x58-0x5f*/
- 0xd75a, 0xd75b, 0xd75c, 0xd75d, 0xd75e, 0xd75f, 0xbeaf, 0xd760, /*0x60-0x67*/
- 0xd761, 0xd762, 0xd763, 0xd764, 0xc6a9, 0xd765, 0xd766, 0xd767, /*0x68-0x6f*/
- 0xd768, 0xd769, 0xd76a, 0xd76b, 0xd76c, 0xd76d, 0xd76e, 0xd76f, /*0x70-0x77*/
- 0xd770, 0xd771, 0xd772, 0xd773, 0xd774, 0xd775, 0xd776, 0xd777, /*0x78-0x7f*/
- 0xd778, 0xd779, 0xd77a, 0xd77b, 0xd77c, 0xd77d, 0xd77e, 0xd780, /*0x80-0x87*/
- 0xd781, 0xd782, 0xd783, 0xd784, 0xd785, 0xd786, 0xd787, 0xd788, /*0x88-0x8f*/
- 0xd789, 0xd78a, 0xd78b, 0xd78c, 0xd78d, 0xd78e, 0xd78f, 0xd790, /*0x90-0x97*/
- 0xd791, 0xd792, 0xd793, 0xd794, 0xd795, 0xd796, 0xd797, 0xd798, /*0x98-0x9f*/
- 0xdaa5, 0xbcc6, 0xb6a9, 0xb8bc, 0xc8cf, 0xbca5, 0xdaa6, 0xdaa7, /*0xa0-0xa7*/
- 0xccd6, 0xc8c3, 0xdaa8, 0xc6fd, 0xd799, 0xd1b5, 0xd2e9, 0xd1b6, /*0xa8-0xaf*/
- 0xbcc7, 0xd79a, 0xbdb2, 0xbbe4, 0xdaa9, 0xdaaa, 0xd1c8, 0xdaab, /*0xb0-0xb7*/
- 0xd0ed, 0xb6ef, 0xc2db, 0xd79b, 0xcbcf, 0xb7ed, 0xc9e8, 0xb7c3, /*0xb8-0xbf*/
- 0xbef7, 0xd6a4, 0xdaac, 0xdaad, 0xc6c0, 0xd7e7, 0xcab6, 0xd79c, /*0xc0-0xc7*/
- 0xd5a9, 0xcbdf, 0xd5ef, 0xdaae, 0xd6df, 0xb4ca, 0xdab0, 0xdaaf, /*0xc8-0xcf*/
- 0xd79d, 0xd2eb, 0xdab1, 0xdab2, 0xdab3, 0xcad4, 0xdab4, 0xcaab, /*0xd0-0xd7*/
- 0xdab5, 0xdab6, 0xb3cf, 0xd6ef, 0xdab7, 0xbbb0, 0xb5ae, 0xdab8, /*0xd8-0xdf*/
- 0xdab9, 0xb9ee, 0xd1af, 0xd2e8, 0xdaba, 0xb8c3, 0xcfea, 0xb2ef, /*0xe0-0xe7*/
- 0xdabb, 0xdabc, 0xd79e, 0xbdeb, 0xcedc, 0xd3ef, 0xdabd, 0xcef3, /*0xe8-0xef*/
- 0xdabe, 0xd3d5, 0xbbe5, 0xdabf, 0xcbb5, 0xcbd0, 0xdac0, 0xc7eb, /*0xf0-0xf7*/
- 0xd6ee, 0xdac1, 0xc5b5, 0xb6c1, 0xdac2, 0xb7cc, 0xbfce, 0xdac3, /*0xf8-0xff*/
- /* 0x8c00 */
- 0xdac4, 0xcbad, 0xdac5, 0xb5f7, 0xdac6, 0xc1c2, 0xd7bb, 0xdac7, /*0x00-0x07*/
- 0xccb8, 0xd79f, 0xd2ea, 0xc4b1, 0xdac8, 0xb5fd, 0xbbd1, 0xdac9, /*0x08-0x0f*/
- 0xd0b3, 0xdaca, 0xdacb, 0xcebd, 0xdacc, 0xdacd, 0xdace, 0xb2f7, /*0x10-0x17*/
- 0xdad1, 0xdacf, 0xd1e8, 0xdad0, 0xc3d5, 0xdad2, 0xd7a0, 0xdad3, /*0x18-0x1f*/
- 0xdad4, 0xdad5, 0xd0bb, 0xd2a5, 0xb0f9, 0xdad6, 0xc7ab, 0xdad7, /*0x20-0x27*/
- 0xbdf7, 0xc3a1, 0xdad8, 0xdad9, 0xc3fd, 0xccb7, 0xdada, 0xdadb, /*0x28-0x2f*/
- 0xc0be, 0xc6d7, 0xdadc, 0xdadd, 0xc7b4, 0xdade, 0xdadf, 0xb9c8, /*0x30-0x37*/
- 0xd840, 0xd841, 0xd842, 0xd843, 0xd844, 0xd845, 0xd846, 0xd847, /*0x38-0x3f*/
- 0xd848, 0xbbed, 0xd849, 0xd84a, 0xd84b, 0xd84c, 0xb6b9, 0xf4f8, /*0x40-0x47*/
- 0xd84d, 0xf4f9, 0xd84e, 0xd84f, 0xcde3, 0xd850, 0xd851, 0xd852, /*0x48-0x4f*/
- 0xd853, 0xd854, 0xd855, 0xd856, 0xd857, 0xf5b9, 0xd858, 0xd859, /*0x50-0x57*/
- 0xd85a, 0xd85b, 0xebe0, 0xd85c, 0xd85d, 0xd85e, 0xd85f, 0xd860, /*0x58-0x5f*/
- 0xd861, 0xcff3, 0xbbbf, 0xd862, 0xd863, 0xd864, 0xd865, 0xd866, /*0x60-0x67*/
- 0xd867, 0xd868, 0xbac0, 0xd4a5, 0xd869, 0xd86a, 0xd86b, 0xd86c, /*0x68-0x6f*/
- 0xd86d, 0xd86e, 0xd86f, 0xe1d9, 0xd870, 0xd871, 0xd872, 0xd873, /*0x70-0x77*/
- 0xf5f4, 0xb1aa, 0xb2f2, 0xd874, 0xd875, 0xd876, 0xd877, 0xd878, /*0x78-0x7f*/
- 0xd879, 0xd87a, 0xf5f5, 0xd87b, 0xd87c, 0xf5f7, 0xd87d, 0xd87e, /*0x80-0x87*/
- 0xd880, 0xbad1, 0xf5f6, 0xd881, 0xc3b2, 0xd882, 0xd883, 0xd884, /*0x88-0x8f*/
- 0xd885, 0xd886, 0xd887, 0xd888, 0xf5f9, 0xd889, 0xd88a, 0xd88b, /*0x90-0x97*/
- 0xf5f8, 0xd88c, 0xd88d, 0xd88e, 0xd88f, 0xd890, 0xd891, 0xd892, /*0x98-0x9f*/
- 0xd893, 0xd894, 0xd895, 0xd896, 0xd897, 0xd898, 0xd899, 0xd89a, /*0xa0-0xa7*/
- 0xd89b, 0xd89c, 0xd89d, 0xd89e, 0xd89f, 0xd8a0, 0xd940, 0xd941, /*0xa8-0xaf*/
- 0xd942, 0xd943, 0xd944, 0xd945, 0xd946, 0xd947, 0xd948, 0xd949, /*0xb0-0xb7*/
- 0xd94a, 0xd94b, 0xd94c, 0xd94d, 0xd94e, 0xd94f, 0xd950, 0xd951, /*0xb8-0xbf*/
- 0xd952, 0xd953, 0xd954, 0xd955, 0xd956, 0xd957, 0xd958, 0xd959, /*0xc0-0xc7*/
- 0xd95a, 0xd95b, 0xd95c, 0xd95d, 0xd95e, 0xd95f, 0xd960, 0xd961, /*0xc8-0xcf*/
- 0xd962, 0xd963, 0xd964, 0xd965, 0xd966, 0xd967, 0xd968, 0xd969, /*0xd0-0xd7*/
- 0xd96a, 0xd96b, 0xd96c, 0xd96d, 0xd96e, 0xd96f, 0xd970, 0xd971, /*0xd8-0xdf*/
- 0xd972, 0xd973, 0xd974, 0xd975, 0xd976, 0xd977, 0xd978, 0xd979, /*0xe0-0xe7*/
- 0xd97a, 0xd97b, 0xd97c, 0xd97d, 0xd97e, 0xd980, 0xd981, 0xd982, /*0xe8-0xef*/
- 0xd983, 0xd984, 0xd985, 0xd986, 0xd987, 0xd988, 0xd989, 0xd98a, /*0xf0-0xf7*/
- 0xd98b, 0xd98c, 0xd98d, 0xd98e, 0xd98f, 0xd990, 0xd991, 0xd992, /*0xf8-0xff*/
- /* 0x8d00 */
- 0xd993, 0xd994, 0xd995, 0xd996, 0xd997, 0xd998, 0xd999, 0xd99a, /*0x00-0x07*/
- 0xd99b, 0xd99c, 0xd99d, 0xd99e, 0xd99f, 0xd9a0, 0xda40, 0xda41, /*0x08-0x0f*/
- 0xda42, 0xda43, 0xda44, 0xda45, 0xda46, 0xda47, 0xda48, 0xda49, /*0x10-0x17*/
- 0xda4a, 0xda4b, 0xda4c, 0xda4d, 0xda4e, 0xb1b4, 0xd5ea, 0xb8ba, /*0x18-0x1f*/
- 0xda4f, 0xb9b1, 0xb2c6, 0xd4f0, 0xcfcd, 0xb0dc, 0xd5cb, 0xbbf5, /*0x20-0x27*/
- 0xd6ca, 0xb7b7, 0xccb0, 0xc6b6, 0xb1e1, 0xb9ba, 0xd6fc, 0xb9e1, /*0x28-0x2f*/
- 0xb7a1, 0xbcfa, 0xeada, 0xeadb, 0xccf9, 0xb9f3, 0xeadc, 0xb4fb, /*0x30-0x37*/
- 0xc3b3, 0xb7d1, 0xbad8, 0xeadd, 0xd4f4, 0xeade, 0xbcd6, 0xbbdf, /*0x38-0x3f*/
- 0xeadf, 0xc1de, 0xc2b8, 0xd4df, 0xd7ca, 0xeae0, 0xeae1, 0xeae4, /*0x40-0x47*/
- 0xeae2, 0xeae3, 0xc9de, 0xb8b3, 0xb6c4, 0xeae5, 0xcaea, 0xc9cd, /*0x48-0x4f*/
- 0xb4cd, 0xda50, 0xda51, 0xe2d9, 0xc5e2, 0xeae6, 0xc0b5, 0xda52, /*0x50-0x57*/
- 0xd7b8, 0xeae7, 0xd7ac, 0xc8fc, 0xd8d3, 0xd8cd, 0xd4de, 0xda53, /*0x58-0x5f*/
- 0xd4f9, 0xc9c4, 0xd3ae, 0xb8d3, 0xb3e0, 0xda54, 0xc9e2, 0xf4f6, /*0x60-0x67*/
- 0xda55, 0xda56, 0xda57, 0xbad5, 0xda58, 0xf4f7, 0xda59, 0xda5a, /*0x68-0x6f*/
- 0xd7df, 0xda5b, 0xda5c, 0xf4f1, 0xb8b0, 0xd5d4, 0xb8cf, 0xc6f0, /*0x70-0x77*/
- 0xda5d, 0xda5e, 0xda5f, 0xda60, 0xda61, 0xda62, 0xda63, 0xda64, /*0x78-0x7f*/
- 0xda65, 0xb3c3, 0xda66, 0xda67, 0xf4f2, 0xb3ac, 0xda68, 0xda69, /*0x80-0x87*/
- 0xda6a, 0xda6b, 0xd4bd, 0xc7f7, 0xda6c, 0xda6d, 0xda6e, 0xda6f, /*0x88-0x8f*/
- 0xda70, 0xf4f4, 0xda71, 0xda72, 0xf4f3, 0xda73, 0xda74, 0xda75, /*0x90-0x97*/
- 0xda76, 0xda77, 0xda78, 0xda79, 0xda7a, 0xda7b, 0xda7c, 0xcccb, /*0x98-0x9f*/
- 0xda7d, 0xda7e, 0xda80, 0xc8a4, 0xda81, 0xda82, 0xda83, 0xda84, /*0xa0-0xa7*/
- 0xda85, 0xda86, 0xda87, 0xda88, 0xda89, 0xda8a, 0xda8b, 0xda8c, /*0xa8-0xaf*/
- 0xda8d, 0xf4f5, 0xda8e, 0xd7e3, 0xc5bf, 0xf5c0, 0xda8f, 0xda90, /*0xb0-0xb7*/
- 0xf5bb, 0xda91, 0xf5c3, 0xda92, 0xf5c2, 0xda93, 0xd6ba, 0xf5c1, /*0xb8-0xbf*/
- 0xda94, 0xda95, 0xda96, 0xd4be, 0xf5c4, 0xda97, 0xf5cc, 0xda98, /*0xc0-0xc7*/
- 0xda99, 0xda9a, 0xda9b, 0xb0cf, 0xb5f8, 0xda9c, 0xf5c9, 0xf5ca, /*0xc8-0xcf*/
- 0xda9d, 0xc5dc, 0xda9e, 0xda9f, 0xdaa0, 0xdb40, 0xf5c5, 0xf5c6, /*0xd0-0xd7*/
- 0xdb41, 0xdb42, 0xf5c7, 0xf5cb, 0xdb43, 0xbee0, 0xf5c8, 0xb8fa, /*0xd8-0xdf*/
- 0xdb44, 0xdb45, 0xdb46, 0xf5d0, 0xf5d3, 0xdb47, 0xdb48, 0xdb49, /*0xe0-0xe7*/
- 0xbfe7, 0xdb4a, 0xb9f2, 0xf5bc, 0xf5cd, 0xdb4b, 0xdb4c, 0xc2b7, /*0xe8-0xef*/
- 0xdb4d, 0xdb4e, 0xdb4f, 0xccf8, 0xdb50, 0xbcf9, 0xdb51, 0xf5ce, /*0xf0-0xf7*/
- 0xf5cf, 0xf5d1, 0xb6e5, 0xf5d2, 0xdb52, 0xf5d5, 0xdb53, 0xdb54, /*0xf8-0xff*/
- /* 0x8e00 */
- 0xdb55, 0xdb56, 0xdb57, 0xdb58, 0xdb59, 0xf5bd, 0xdb5a, 0xdb5b, /*0x00-0x07*/
- 0xdb5c, 0xf5d4, 0xd3bb, 0xdb5d, 0xb3ec, 0xdb5e, 0xdb5f, 0xcca4, /*0x08-0x0f*/
- 0xdb60, 0xdb61, 0xdb62, 0xdb63, 0xf5d6, 0xdb64, 0xdb65, 0xdb66, /*0x10-0x17*/
- 0xdb67, 0xdb68, 0xdb69, 0xdb6a, 0xdb6b, 0xf5d7, 0xbee1, 0xf5d8, /*0x18-0x1f*/
- 0xdb6c, 0xdb6d, 0xccdf, 0xf5db, 0xdb6e, 0xdb6f, 0xdb70, 0xdb71, /*0x20-0x27*/
- 0xdb72, 0xb2c8, 0xd7d9, 0xdb73, 0xf5d9, 0xdb74, 0xf5da, 0xf5dc, /*0x28-0x2f*/
- 0xdb75, 0xf5e2, 0xdb76, 0xdb77, 0xdb78, 0xf5e0, 0xdb79, 0xdb7a, /*0x30-0x37*/
- 0xdb7b, 0xf5df, 0xf5dd, 0xdb7c, 0xdb7d, 0xf5e1, 0xdb7e, 0xdb80, /*0x38-0x3f*/
- 0xf5de, 0xf5e4, 0xf5e5, 0xdb81, 0xcce3, 0xdb82, 0xdb83, 0xe5bf, /*0x40-0x47*/
- 0xb5b8, 0xf5e3, 0xf5e8, 0xcca3, 0xdb84, 0xdb85, 0xdb86, 0xdb87, /*0x48-0x4f*/
- 0xdb88, 0xf5e6, 0xf5e7, 0xdb89, 0xdb8a, 0xdb8b, 0xdb8c, 0xdb8d, /*0x50-0x57*/
- 0xdb8e, 0xf5be, 0xdb8f, 0xdb90, 0xdb91, 0xdb92, 0xdb93, 0xdb94, /*0x58-0x5f*/
- 0xdb95, 0xdb96, 0xdb97, 0xdb98, 0xdb99, 0xdb9a, 0xb1c4, 0xdb9b, /*0x60-0x67*/
- 0xdb9c, 0xf5bf, 0xdb9d, 0xdb9e, 0xb5c5, 0xb2e4, 0xdb9f, 0xf5ec, /*0x68-0x6f*/
- 0xf5e9, 0xdba0, 0xb6d7, 0xdc40, 0xf5ed, 0xdc41, 0xf5ea, 0xdc42, /*0x70-0x77*/
- 0xdc43, 0xdc44, 0xdc45, 0xdc46, 0xf5eb, 0xdc47, 0xdc48, 0xb4da, /*0x78-0x7f*/
- 0xdc49, 0xd4ea, 0xdc4a, 0xdc4b, 0xdc4c, 0xf5ee, 0xdc4d, 0xb3f9, /*0x80-0x87*/
- 0xdc4e, 0xdc4f, 0xdc50, 0xdc51, 0xdc52, 0xdc53, 0xdc54, 0xf5ef, /*0x88-0x8f*/
- 0xf5f1, 0xdc55, 0xdc56, 0xdc57, 0xf5f0, 0xdc58, 0xdc59, 0xdc5a, /*0x90-0x97*/
- 0xdc5b, 0xdc5c, 0xdc5d, 0xdc5e, 0xf5f2, 0xdc5f, 0xf5f3, 0xdc60, /*0x98-0x9f*/
- 0xdc61, 0xdc62, 0xdc63, 0xdc64, 0xdc65, 0xdc66, 0xdc67, 0xdc68, /*0xa0-0xa7*/
- 0xdc69, 0xdc6a, 0xdc6b, 0xc9ed, 0xb9aa, 0xdc6c, 0xdc6d, 0xc7fb, /*0xa8-0xaf*/
- 0xdc6e, 0xdc6f, 0xb6e3, 0xdc70, 0xdc71, 0xdc72, 0xdc73, 0xdc74, /*0xb0-0xb7*/
- 0xdc75, 0xdc76, 0xccc9, 0xdc77, 0xdc78, 0xdc79, 0xdc7a, 0xdc7b, /*0xb8-0xbf*/
- 0xdc7c, 0xdc7d, 0xdc7e, 0xdc80, 0xdc81, 0xdc82, 0xdc83, 0xdc84, /*0xc0-0xc7*/
- 0xdc85, 0xdc86, 0xdc87, 0xdc88, 0xdc89, 0xdc8a, 0xeaa6, 0xdc8b, /*0xc8-0xcf*/
- 0xdc8c, 0xdc8d, 0xdc8e, 0xdc8f, 0xdc90, 0xdc91, 0xdc92, 0xdc93, /*0xd0-0xd7*/
- 0xdc94, 0xdc95, 0xdc96, 0xdc97, 0xdc98, 0xdc99, 0xdc9a, 0xdc9b, /*0xd8-0xdf*/
- 0xdc9c, 0xdc9d, 0xdc9e, 0xdc9f, 0xdca0, 0xdd40, 0xdd41, 0xdd42, /*0xe0-0xe7*/
- 0xdd43, 0xdd44, 0xdd45, 0xdd46, 0xdd47, 0xdd48, 0xdd49, 0xdd4a, /*0xe8-0xef*/
- 0xdd4b, 0xdd4c, 0xdd4d, 0xdd4e, 0xdd4f, 0xdd50, 0xdd51, 0xdd52, /*0xf0-0xf7*/
- 0xdd53, 0xdd54, 0xdd55, 0xdd56, 0xdd57, 0xdd58, 0xdd59, 0xdd5a, /*0xf8-0xff*/
- /* 0x8f00 */
- 0xdd5b, 0xdd5c, 0xdd5d, 0xdd5e, 0xdd5f, 0xdd60, 0xdd61, 0xdd62, /*0x00-0x07*/
- 0xdd63, 0xdd64, 0xdd65, 0xdd66, 0xdd67, 0xdd68, 0xdd69, 0xdd6a, /*0x08-0x0f*/
- 0xdd6b, 0xdd6c, 0xdd6d, 0xdd6e, 0xdd6f, 0xdd70, 0xdd71, 0xdd72, /*0x10-0x17*/
- 0xdd73, 0xdd74, 0xdd75, 0xdd76, 0xdd77, 0xdd78, 0xdd79, 0xdd7a, /*0x18-0x1f*/
- 0xdd7b, 0xdd7c, 0xdd7d, 0xdd7e, 0xdd80, 0xdd81, 0xdd82, 0xdd83, /*0x20-0x27*/
- 0xdd84, 0xdd85, 0xdd86, 0xdd87, 0xdd88, 0xdd89, 0xdd8a, 0xdd8b, /*0x28-0x2f*/
- 0xdd8c, 0xdd8d, 0xdd8e, 0xdd8f, 0xdd90, 0xdd91, 0xdd92, 0xdd93, /*0x30-0x37*/
- 0xdd94, 0xdd95, 0xdd96, 0xdd97, 0xdd98, 0xdd99, 0xdd9a, 0xdd9b, /*0x38-0x3f*/
- 0xdd9c, 0xdd9d, 0xdd9e, 0xdd9f, 0xdda0, 0xde40, 0xde41, 0xde42, /*0x40-0x47*/
- 0xde43, 0xde44, 0xde45, 0xde46, 0xde47, 0xde48, 0xde49, 0xde4a, /*0x48-0x4f*/
- 0xde4b, 0xde4c, 0xde4d, 0xde4e, 0xde4f, 0xde50, 0xde51, 0xde52, /*0x50-0x57*/
- 0xde53, 0xde54, 0xde55, 0xde56, 0xde57, 0xde58, 0xde59, 0xde5a, /*0x58-0x5f*/
- 0xde5b, 0xde5c, 0xde5d, 0xde5e, 0xde5f, 0xde60, 0xb3b5, 0xd4fe, /*0x60-0x67*/
- 0xb9ec, 0xd0f9, 0xde61, 0xe9ed, 0xd7aa, 0xe9ee, 0xc2d6, 0xc8ed, /*0x68-0x6f*/
- 0xbae4, 0xe9ef, 0xe9f0, 0xe9f1, 0xd6e1, 0xe9f2, 0xe9f3, 0xe9f5, /*0x70-0x77*/
- 0xe9f4, 0xe9f6, 0xe9f7, 0xc7e1, 0xe9f8, 0xd4d8, 0xe9f9, 0xbdce, /*0x78-0x7f*/
- 0xde62, 0xe9fa, 0xe9fb, 0xbdcf, 0xe9fc, 0xb8a8, 0xc1be, 0xe9fd, /*0x80-0x87*/
- 0xb1b2, 0xbbd4, 0xb9f5, 0xe9fe, 0xde63, 0xeaa1, 0xeaa2, 0xeaa3, /*0x88-0x8f*/
- 0xb7f8, 0xbcad, 0xde64, 0xcae4, 0xe0ce, 0xd4af, 0xcfbd, 0xd5b7, /*0x90-0x97*/
- 0xeaa4, 0xd5de, 0xeaa5, 0xd0c1, 0xb9bc, 0xde65, 0xb4c7, 0xb1d9, /*0x98-0x9f*/
- 0xde66, 0xde67, 0xde68, 0xc0b1, 0xde69, 0xde6a, 0xde6b, 0xde6c, /*0xa0-0xa7*/
- 0xb1e6, 0xb1e7, 0xde6d, 0xb1e8, 0xde6e, 0xde6f, 0xde70, 0xde71, /*0xa8-0xaf*/
- 0xb3bd, 0xc8e8, 0xde72, 0xde73, 0xde74, 0xde75, 0xe5c1, 0xde76, /*0xb0-0xb7*/
- 0xde77, 0xb1df, 0xde78, 0xde79, 0xde7a, 0xc1c9, 0xb4ef, 0xde7b, /*0xb8-0xbf*/
- 0xde7c, 0xc7a8, 0xd3d8, 0xde7d, 0xc6f9, 0xd1b8, 0xde7e, 0xb9fd, /*0xc0-0xc7*/
- 0xc2f5, 0xde80, 0xde81, 0xde82, 0xde83, 0xde84, 0xd3ad, 0xde85, /*0xc8-0xcf*/
- 0xd4cb, 0xbdfc, 0xde86, 0xe5c2, 0xb7b5, 0xe5c3, 0xde87, 0xde88, /*0xd0-0xd7*/
- 0xbbb9, 0xd5e2, 0xde89, 0xbdf8, 0xd4b6, 0xcea5, 0xc1ac, 0xb3d9, /*0xd8-0xdf*/
- 0xde8a, 0xde8b, 0xccf6, 0xde8c, 0xe5c6, 0xe5c4, 0xe5c8, 0xde8d, /*0xe0-0xe7*/
- 0xe5ca, 0xe5c7, 0xb5cf, 0xc6c8, 0xde8e, 0xb5fc, 0xe5c5, 0xde8f, /*0xe8-0xef*/
- 0xcaf6, 0xde90, 0xde91, 0xe5c9, 0xde92, 0xde93, 0xde94, 0xc3d4, /*0xf0-0xf7*/
- 0xb1c5, 0xbca3, 0xde95, 0xde96, 0xde97, 0xd7b7, 0xde98, 0xde99, /*0xf8-0xff*/
- /* 0x9000 */
- 0xcdcb, 0xcbcd, 0xcaca, 0xccd3, 0xe5cc, 0xe5cb, 0xc4e6, 0xde9a, /*0x00-0x07*/
- 0xde9b, 0xd1a1, 0xd1b7, 0xe5cd, 0xde9c, 0xe5d0, 0xde9d, 0xcdb8, /*0x08-0x0f*/
- 0xd6f0, 0xe5cf, 0xb5dd, 0xde9e, 0xcdbe, 0xde9f, 0xe5d1, 0xb6ba, /*0x10-0x17*/
- 0xdea0, 0xdf40, 0xcda8, 0xb9e4, 0xdf41, 0xcac5, 0xb3d1, 0xcbd9, /*0x18-0x1f*/
- 0xd4ec, 0xe5d2, 0xb7ea, 0xdf42, 0xdf43, 0xdf44, 0xe5ce, 0xdf45, /*0x20-0x27*/
- 0xdf46, 0xdf47, 0xdf48, 0xdf49, 0xdf4a, 0xe5d5, 0xb4fe, 0xe5d6, /*0x28-0x2f*/
- 0xdf4b, 0xdf4c, 0xdf4d, 0xdf4e, 0xdf4f, 0xe5d3, 0xe5d4, 0xdf50, /*0x30-0x37*/
- 0xd2dd, 0xdf51, 0xdf52, 0xc2df, 0xb1c6, 0xdf53, 0xd3e2, 0xdf54, /*0x38-0x3f*/
- 0xdf55, 0xb6dd, 0xcbec, 0xdf56, 0xe5d7, 0xdf57, 0xdf58, 0xd3f6, /*0x40-0x47*/
- 0xdf59, 0xdf5a, 0xdf5b, 0xdf5c, 0xdf5d, 0xb1e9, 0xdf5e, 0xb6f4, /*0x48-0x4f*/
- 0xe5da, 0xe5d8, 0xe5d9, 0xb5c0, 0xdf5f, 0xdf60, 0xdf61, 0xd2c5, /*0x50-0x57*/
- 0xe5dc, 0xdf62, 0xdf63, 0xe5de, 0xdf64, 0xdf65, 0xdf66, 0xdf67, /*0x58-0x5f*/
- 0xdf68, 0xdf69, 0xe5dd, 0xc7b2, 0xdf6a, 0xd2a3, 0xdf6b, 0xdf6c, /*0x60-0x67*/
- 0xe5db, 0xdf6d, 0xdf6e, 0xdf6f, 0xdf70, 0xd4e2, 0xd5da, 0xdf71, /*0x68-0x6f*/
- 0xdf72, 0xdf73, 0xdf74, 0xdf75, 0xe5e0, 0xd7f1, 0xdf76, 0xdf77, /*0x70-0x77*/
- 0xdf78, 0xdf79, 0xdf7a, 0xdf7b, 0xdf7c, 0xe5e1, 0xdf7d, 0xb1dc, /*0x78-0x7f*/
- 0xd1fb, 0xdf7e, 0xe5e2, 0xe5e4, 0xdf80, 0xdf81, 0xdf82, 0xdf83, /*0x80-0x87*/
- 0xe5e3, 0xdf84, 0xdf85, 0xe5e5, 0xdf86, 0xdf87, 0xdf88, 0xdf89, /*0x88-0x8f*/
- 0xdf8a, 0xd2d8, 0xdf8b, 0xb5cb, 0xdf8c, 0xe7df, 0xdf8d, 0xdaf5, /*0x90-0x97*/
- 0xdf8e, 0xdaf8, 0xdf8f, 0xdaf6, 0xdf90, 0xdaf7, 0xdf91, 0xdf92, /*0x98-0x9f*/
- 0xdf93, 0xdafa, 0xd0cf, 0xc4c7, 0xdf94, 0xdf95, 0xb0ee, 0xdf96, /*0xa0-0xa7*/
- 0xdf97, 0xdf98, 0xd0b0, 0xdf99, 0xdaf9, 0xdf9a, 0xd3ca, 0xbaaa, /*0xa8-0xaf*/
- 0xdba2, 0xc7f1, 0xdf9b, 0xdafc, 0xdafb, 0xc9db, 0xdafd, 0xdf9c, /*0xb0-0xb7*/
- 0xdba1, 0xd7de, 0xdafe, 0xc1da, 0xdf9d, 0xdf9e, 0xdba5, 0xdf9f, /*0xb8-0xbf*/
- 0xdfa0, 0xd3f4, 0xe040, 0xe041, 0xdba7, 0xdba4, 0xe042, 0xdba8, /*0xc0-0xc7*/
- 0xe043, 0xe044, 0xbdbc, 0xe045, 0xe046, 0xe047, 0xc0c9, 0xdba3, /*0xc8-0xcf*/
- 0xdba6, 0xd6a3, 0xe048, 0xdba9, 0xe049, 0xe04a, 0xe04b, 0xdbad, /*0xd0-0xd7*/
- 0xe04c, 0xe04d, 0xe04e, 0xdbae, 0xdbac, 0xbac2, 0xe04f, 0xe050, /*0xd8-0xdf*/
- 0xe051, 0xbfa4, 0xdbab, 0xe052, 0xe053, 0xe054, 0xdbaa, 0xd4c7, /*0xe0-0xe7*/
- 0xb2bf, 0xe055, 0xe056, 0xdbaf, 0xe057, 0xb9f9, 0xe058, 0xdbb0, /*0xe8-0xef*/
- 0xe059, 0xe05a, 0xe05b, 0xe05c, 0xb3bb, 0xe05d, 0xe05e, 0xe05f, /*0xf0-0xf7*/
- 0xb5a6, 0xe060, 0xe061, 0xe062, 0xe063, 0xb6bc, 0xdbb1, 0xe064, /*0xf8-0xff*/
- /* 0x9100 */
- 0xe065, 0xe066, 0xb6f5, 0xe067, 0xdbb2, 0xe068, 0xe069, 0xe06a, /*0x00-0x07*/
- 0xe06b, 0xe06c, 0xe06d, 0xe06e, 0xe06f, 0xe070, 0xe071, 0xe072, /*0x08-0x0f*/
- 0xe073, 0xe074, 0xe075, 0xe076, 0xe077, 0xe078, 0xe079, 0xe07a, /*0x10-0x17*/
- 0xe07b, 0xb1c9, 0xe07c, 0xe07d, 0xe07e, 0xe080, 0xdbb4, 0xe081, /*0x18-0x1f*/
- 0xe082, 0xe083, 0xdbb3, 0xdbb5, 0xe084, 0xe085, 0xe086, 0xe087, /*0x20-0x27*/
- 0xe088, 0xe089, 0xe08a, 0xe08b, 0xe08c, 0xe08d, 0xe08e, 0xdbb7, /*0x28-0x2f*/
- 0xe08f, 0xdbb6, 0xe090, 0xe091, 0xe092, 0xe093, 0xe094, 0xe095, /*0x30-0x37*/
- 0xe096, 0xdbb8, 0xe097, 0xe098, 0xe099, 0xe09a, 0xe09b, 0xe09c, /*0x38-0x3f*/
- 0xe09d, 0xe09e, 0xe09f, 0xdbb9, 0xe0a0, 0xe140, 0xdbba, 0xe141, /*0x40-0x47*/
- 0xe142, 0xd3cf, 0xf4fa, 0xc7f5, 0xd7c3, 0xc5e4, 0xf4fc, 0xf4fd, /*0x48-0x4f*/
- 0xf4fb, 0xe143, 0xbec6, 0xe144, 0xe145, 0xe146, 0xe147, 0xd0ef, /*0x50-0x57*/
- 0xe148, 0xe149, 0xb7d3, 0xe14a, 0xe14b, 0xd4cd, 0xccaa, 0xe14c, /*0x58-0x5f*/
- 0xe14d, 0xf5a2, 0xf5a1, 0xbaa8, 0xf4fe, 0xcbd6, 0xe14e, 0xe14f, /*0x60-0x67*/
- 0xe150, 0xf5a4, 0xc0d2, 0xe151, 0xb3ea, 0xe152, 0xcdaa, 0xf5a5, /*0x68-0x6f*/
- 0xf5a3, 0xbdb4, 0xf5a8, 0xe153, 0xf5a9, 0xbdcd, 0xc3b8, 0xbfe1, /*0x70-0x77*/
- 0xcbe1, 0xf5aa, 0xe154, 0xe155, 0xe156, 0xf5a6, 0xf5a7, 0xc4f0, /*0x78-0x7f*/
- 0xe157, 0xe158, 0xe159, 0xe15a, 0xe15b, 0xf5ac, 0xe15c, 0xb4bc, /*0x80-0x87*/
- 0xe15d, 0xd7ed, 0xe15e, 0xb4d7, 0xf5ab, 0xf5ae, 0xe15f, 0xe160, /*0x88-0x8f*/
- 0xf5ad, 0xf5af, 0xd0d1, 0xe161, 0xe162, 0xe163, 0xe164, 0xe165, /*0x90-0x97*/
- 0xe166, 0xe167, 0xc3d1, 0xc8a9, 0xe168, 0xe169, 0xe16a, 0xe16b, /*0x98-0x9f*/
- 0xe16c, 0xe16d, 0xf5b0, 0xf5b1, 0xe16e, 0xe16f, 0xe170, 0xe171, /*0xa0-0xa7*/
- 0xe172, 0xe173, 0xf5b2, 0xe174, 0xe175, 0xf5b3, 0xf5b4, 0xf5b5, /*0xa8-0xaf*/
- 0xe176, 0xe177, 0xe178, 0xe179, 0xf5b7, 0xf5b6, 0xe17a, 0xe17b, /*0xb0-0xb7*/
- 0xe17c, 0xe17d, 0xf5b8, 0xe17e, 0xe180, 0xe181, 0xe182, 0xe183, /*0xb8-0xbf*/
- 0xe184, 0xe185, 0xe186, 0xe187, 0xe188, 0xe189, 0xe18a, 0xb2c9, /*0xc0-0xc7*/
- 0xe18b, 0xd3d4, 0xcacd, 0xe18c, 0xc0ef, 0xd6d8, 0xd2b0, 0xc1bf, /*0xc8-0xcf*/
- 0xe18d, 0xbdf0, 0xe18e, 0xe18f, 0xe190, 0xe191, 0xe192, 0xe193, /*0xd0-0xd7*/
- 0xe194, 0xe195, 0xe196, 0xe197, 0xb8aa, 0xe198, 0xe199, 0xe19a, /*0xd8-0xdf*/
- 0xe19b, 0xe19c, 0xe19d, 0xe19e, 0xe19f, 0xe1a0, 0xe240, 0xe241, /*0xe0-0xe7*/
- 0xe242, 0xe243, 0xe244, 0xe245, 0xe246, 0xe247, 0xe248, 0xe249, /*0xe8-0xef*/
- 0xe24a, 0xe24b, 0xe24c, 0xe24d, 0xe24e, 0xe24f, 0xe250, 0xe251, /*0xf0-0xf7*/
- 0xe252, 0xe253, 0xe254, 0xe255, 0xe256, 0xe257, 0xe258, 0xe259, /*0xf8-0xff*/
- /* 0x9200 */
- 0xe25a, 0xe25b, 0xe25c, 0xe25d, 0xe25e, 0xe25f, 0xe260, 0xe261, /*0x00-0x07*/
- 0xe262, 0xe263, 0xe264, 0xe265, 0xe266, 0xe267, 0xe268, 0xe269, /*0x08-0x0f*/
- 0xe26a, 0xe26b, 0xe26c, 0xe26d, 0xe26e, 0xe26f, 0xe270, 0xe271, /*0x10-0x17*/
- 0xe272, 0xe273, 0xe274, 0xe275, 0xe276, 0xe277, 0xe278, 0xe279, /*0x18-0x1f*/
- 0xe27a, 0xe27b, 0xe27c, 0xe27d, 0xe27e, 0xe280, 0xe281, 0xe282, /*0x20-0x27*/
- 0xe283, 0xe284, 0xe285, 0xe286, 0xe287, 0xe288, 0xe289, 0xe28a, /*0x28-0x2f*/
- 0xe28b, 0xe28c, 0xe28d, 0xe28e, 0xe28f, 0xe290, 0xe291, 0xe292, /*0x30-0x37*/
- 0xe293, 0xe294, 0xe295, 0xe296, 0xe297, 0xe298, 0xe299, 0xe29a, /*0x38-0x3f*/
- 0xe29b, 0xe29c, 0xe29d, 0xe29e, 0xe29f, 0xe2a0, 0xe340, 0xe341, /*0x40-0x47*/
- 0xe342, 0xe343, 0xe344, 0xe345, 0xe346, 0xe347, 0xe348, 0xe349, /*0x48-0x4f*/
- 0xe34a, 0xe34b, 0xe34c, 0xe34d, 0xe34e, 0xe34f, 0xe350, 0xe351, /*0x50-0x57*/
- 0xe352, 0xe353, 0xe354, 0xe355, 0xe356, 0xe357, 0xe358, 0xe359, /*0x58-0x5f*/
- 0xe35a, 0xe35b, 0xe35c, 0xe35d, 0xe35e, 0xe35f, 0xe360, 0xe361, /*0x60-0x67*/
- 0xe362, 0xe363, 0xe364, 0xe365, 0xe366, 0xe367, 0xe368, 0xe369, /*0x68-0x6f*/
- 0xe36a, 0xe36b, 0xe36c, 0xe36d, 0xbcf8, 0xe36e, 0xe36f, 0xe370, /*0x70-0x77*/
- 0xe371, 0xe372, 0xe373, 0xe374, 0xe375, 0xe376, 0xe377, 0xe378, /*0x78-0x7f*/
- 0xe379, 0xe37a, 0xe37b, 0xe37c, 0xe37d, 0xe37e, 0xe380, 0xe381, /*0x80-0x87*/
- 0xe382, 0xe383, 0xe384, 0xe385, 0xe386, 0xe387, 0xf6c6, 0xe388, /*0x88-0x8f*/
- 0xe389, 0xe38a, 0xe38b, 0xe38c, 0xe38d, 0xe38e, 0xe38f, 0xe390, /*0x90-0x97*/
- 0xe391, 0xe392, 0xe393, 0xe394, 0xe395, 0xe396, 0xe397, 0xe398, /*0x98-0x9f*/
- 0xe399, 0xe39a, 0xe39b, 0xe39c, 0xe39d, 0xe39e, 0xe39f, 0xe3a0, /*0xa0-0xa7*/
- 0xe440, 0xe441, 0xe442, 0xe443, 0xe444, 0xe445, 0xf6c7, 0xe446, /*0xa8-0xaf*/
- 0xe447, 0xe448, 0xe449, 0xe44a, 0xe44b, 0xe44c, 0xe44d, 0xe44e, /*0xb0-0xb7*/
- 0xe44f, 0xe450, 0xe451, 0xe452, 0xe453, 0xe454, 0xe455, 0xe456, /*0xb8-0xbf*/
- 0xe457, 0xe458, 0xe459, 0xe45a, 0xe45b, 0xe45c, 0xe45d, 0xe45e, /*0xc0-0xc7*/
- 0xf6c8, 0xe45f, 0xe460, 0xe461, 0xe462, 0xe463, 0xe464, 0xe465, /*0xc8-0xcf*/
- 0xe466, 0xe467, 0xe468, 0xe469, 0xe46a, 0xe46b, 0xe46c, 0xe46d, /*0xd0-0xd7*/
- 0xe46e, 0xe46f, 0xe470, 0xe471, 0xe472, 0xe473, 0xe474, 0xe475, /*0xd8-0xdf*/
- 0xe476, 0xe477, 0xe478, 0xe479, 0xe47a, 0xe47b, 0xe47c, 0xe47d, /*0xe0-0xe7*/
- 0xe47e, 0xe480, 0xe481, 0xe482, 0xe483, 0xe484, 0xe485, 0xe486, /*0xe8-0xef*/
- 0xe487, 0xe488, 0xe489, 0xe48a, 0xe48b, 0xe48c, 0xe48d, 0xe48e, /*0xf0-0xf7*/
- 0xe48f, 0xe490, 0xe491, 0xe492, 0xe493, 0xe494, 0xe495, 0xe496, /*0xf8-0xff*/
- /* 0x9300 */
- 0xe497, 0xe498, 0xe499, 0xe49a, 0xe49b, 0xe49c, 0xe49d, 0xe49e, /*0x00-0x07*/
- 0xe49f, 0xe4a0, 0xe540, 0xe541, 0xe542, 0xe543, 0xe544, 0xe545, /*0x08-0x0f*/
- 0xe546, 0xe547, 0xe548, 0xe549, 0xe54a, 0xe54b, 0xe54c, 0xe54d, /*0x10-0x17*/
- 0xe54e, 0xe54f, 0xe550, 0xe551, 0xe552, 0xe553, 0xe554, 0xe555, /*0x18-0x1f*/
- 0xe556, 0xe557, 0xe558, 0xe559, 0xe55a, 0xe55b, 0xe55c, 0xe55d, /*0x20-0x27*/
- 0xe55e, 0xe55f, 0xe560, 0xe561, 0xe562, 0xe563, 0xe564, 0xe565, /*0x28-0x2f*/
- 0xe566, 0xe567, 0xe568, 0xe569, 0xe56a, 0xe56b, 0xe56c, 0xe56d, /*0x30-0x37*/
- 0xe56e, 0xe56f, 0xe570, 0xe571, 0xe572, 0xe573, 0xf6c9, 0xe574, /*0x38-0x3f*/
- 0xe575, 0xe576, 0xe577, 0xe578, 0xe579, 0xe57a, 0xe57b, 0xe57c, /*0x40-0x47*/
- 0xe57d, 0xe57e, 0xe580, 0xe581, 0xe582, 0xe583, 0xe584, 0xe585, /*0x48-0x4f*/
- 0xe586, 0xe587, 0xe588, 0xe589, 0xe58a, 0xe58b, 0xe58c, 0xe58d, /*0x50-0x57*/
- 0xe58e, 0xe58f, 0xe590, 0xe591, 0xe592, 0xe593, 0xe594, 0xe595, /*0x58-0x5f*/
- 0xe596, 0xe597, 0xe598, 0xe599, 0xe59a, 0xe59b, 0xe59c, 0xe59d, /*0x60-0x67*/
- 0xe59e, 0xe59f, 0xf6ca, 0xe5a0, 0xe640, 0xe641, 0xe642, 0xe643, /*0x68-0x6f*/
- 0xe644, 0xe645, 0xe646, 0xe647, 0xe648, 0xe649, 0xe64a, 0xe64b, /*0x70-0x77*/
- 0xe64c, 0xe64d, 0xe64e, 0xe64f, 0xe650, 0xe651, 0xe652, 0xe653, /*0x78-0x7f*/
- 0xe654, 0xe655, 0xe656, 0xe657, 0xe658, 0xe659, 0xe65a, 0xe65b, /*0x80-0x87*/
- 0xe65c, 0xe65d, 0xe65e, 0xe65f, 0xe660, 0xe661, 0xe662, 0xf6cc, /*0x88-0x8f*/
- 0xe663, 0xe664, 0xe665, 0xe666, 0xe667, 0xe668, 0xe669, 0xe66a, /*0x90-0x97*/
- 0xe66b, 0xe66c, 0xe66d, 0xe66e, 0xe66f, 0xe670, 0xe671, 0xe672, /*0x98-0x9f*/
- 0xe673, 0xe674, 0xe675, 0xe676, 0xe677, 0xe678, 0xe679, 0xe67a, /*0xa0-0xa7*/
- 0xe67b, 0xe67c, 0xe67d, 0xe67e, 0xe680, 0xe681, 0xe682, 0xe683, /*0xa8-0xaf*/
- 0xe684, 0xe685, 0xe686, 0xe687, 0xe688, 0xe689, 0xe68a, 0xe68b, /*0xb0-0xb7*/
- 0xe68c, 0xe68d, 0xe68e, 0xe68f, 0xe690, 0xe691, 0xe692, 0xe693, /*0xb8-0xbf*/
- 0xe694, 0xe695, 0xe696, 0xe697, 0xe698, 0xe699, 0xe69a, 0xe69b, /*0xc0-0xc7*/
- 0xe69c, 0xe69d, 0xf6cb, 0xe69e, 0xe69f, 0xe6a0, 0xe740, 0xe741, /*0xc8-0xcf*/
- 0xe742, 0xe743, 0xe744, 0xe745, 0xe746, 0xe747, 0xf7e9, 0xe748, /*0xd0-0xd7*/
- 0xe749, 0xe74a, 0xe74b, 0xe74c, 0xe74d, 0xe74e, 0xe74f, 0xe750, /*0xd8-0xdf*/
- 0xe751, 0xe752, 0xe753, 0xe754, 0xe755, 0xe756, 0xe757, 0xe758, /*0xe0-0xe7*/
- 0xe759, 0xe75a, 0xe75b, 0xe75c, 0xe75d, 0xe75e, 0xe75f, 0xe760, /*0xe8-0xef*/
- 0xe761, 0xe762, 0xe763, 0xe764, 0xe765, 0xe766, 0xe767, 0xe768, /*0xf0-0xf7*/
- 0xe769, 0xe76a, 0xe76b, 0xe76c, 0xe76d, 0xe76e, 0xe76f, 0xe770, /*0xf8-0xff*/
- /* 0x9400 */
- 0xe771, 0xe772, 0xe773, 0xe774, 0xe775, 0xe776, 0xe777, 0xe778, /*0x00-0x07*/
- 0xe779, 0xe77a, 0xe77b, 0xe77c, 0xe77d, 0xe77e, 0xe780, 0xe781, /*0x08-0x0f*/
- 0xe782, 0xe783, 0xe784, 0xe785, 0xe786, 0xe787, 0xe788, 0xe789, /*0x10-0x17*/
- 0xe78a, 0xe78b, 0xe78c, 0xe78d, 0xe78e, 0xe78f, 0xe790, 0xe791, /*0x18-0x1f*/
- 0xe792, 0xe793, 0xe794, 0xe795, 0xe796, 0xe797, 0xe798, 0xe799, /*0x20-0x27*/
- 0xe79a, 0xe79b, 0xe79c, 0xe79d, 0xe79e, 0xe79f, 0xe7a0, 0xe840, /*0x28-0x2f*/
- 0xe841, 0xe842, 0xe843, 0xe844, 0xe845, 0xe846, 0xe847, 0xe848, /*0x30-0x37*/
- 0xe849, 0xe84a, 0xe84b, 0xe84c, 0xe84d, 0xe84e, 0xf6cd, 0xe84f, /*0x38-0x3f*/
- 0xe850, 0xe851, 0xe852, 0xe853, 0xe854, 0xe855, 0xe856, 0xe857, /*0x40-0x47*/
- 0xe858, 0xe859, 0xe85a, 0xe85b, 0xe85c, 0xe85d, 0xe85e, 0xe85f, /*0x48-0x4f*/
- 0xe860, 0xe861, 0xe862, 0xe863, 0xe864, 0xe865, 0xe866, 0xe867, /*0x50-0x57*/
- 0xe868, 0xe869, 0xe86a, 0xe86b, 0xe86c, 0xe86d, 0xe86e, 0xe86f, /*0x58-0x5f*/
- 0xe870, 0xe871, 0xe872, 0xe873, 0xe874, 0xe875, 0xe876, 0xe877, /*0x60-0x67*/
- 0xe878, 0xe879, 0xe87a, 0xf6ce, 0xe87b, 0xe87c, 0xe87d, 0xe87e, /*0x68-0x6f*/
- 0xe880, 0xe881, 0xe882, 0xe883, 0xe884, 0xe885, 0xe886, 0xe887, /*0x70-0x77*/
- 0xe888, 0xe889, 0xe88a, 0xe88b, 0xe88c, 0xe88d, 0xe88e, 0xe88f, /*0x78-0x7f*/
- 0xe890, 0xe891, 0xe892, 0xe893, 0xe894, 0xeec4, 0xeec5, 0xeec6, /*0x80-0x87*/
- 0xd5eb, 0xb6a4, 0xeec8, 0xeec7, 0xeec9, 0xeeca, 0xc7a5, 0xeecb, /*0x88-0x8f*/
- 0xeecc, 0xe895, 0xb7b0, 0xb5f6, 0xeecd, 0xeecf, 0xe896, 0xeece, /*0x90-0x97*/
- 0xe897, 0xb8c6, 0xeed0, 0xeed1, 0xeed2, 0xb6db, 0xb3ae, 0xd6d3, /*0x98-0x9f*/
- 0xc4c6, 0xb1b5, 0xb8d6, 0xeed3, 0xeed4, 0xd4bf, 0xc7d5, 0xbefb, /*0xa0-0xa7*/
- 0xced9, 0xb9b3, 0xeed6, 0xeed5, 0xeed8, 0xeed7, 0xc5a5, 0xeed9, /*0xa8-0xaf*/
- 0xeeda, 0xc7ae, 0xeedb, 0xc7af, 0xeedc, 0xb2a7, 0xeedd, 0xeede, /*0xb0-0xb7*/
- 0xeedf, 0xeee0, 0xeee1, 0xd7ea, 0xeee2, 0xeee3, 0xbcd8, 0xeee4, /*0xb8-0xbf*/
- 0xd3cb, 0xccfa, 0xb2ac, 0xc1e5, 0xeee5, 0xc7a6, 0xc3ad, 0xe898, /*0xc0-0xc7*/
- 0xeee6, 0xeee7, 0xeee8, 0xeee9, 0xeeea, 0xeeeb, 0xeeec, 0xe899, /*0xc8-0xcf*/
- 0xeeed, 0xeeee, 0xeeef, 0xe89a, 0xe89b, 0xeef0, 0xeef1, 0xeef2, /*0xd0-0xd7*/
- 0xeef4, 0xeef3, 0xe89c, 0xeef5, 0xcdad, 0xc2c1, 0xeef6, 0xeef7, /*0xd8-0xdf*/
- 0xeef8, 0xd5a1, 0xeef9, 0xcfb3, 0xeefa, 0xeefb, 0xe89d, 0xeefc, /*0xe0-0xe7*/
- 0xeefd, 0xefa1, 0xeefe, 0xefa2, 0xb8f5, 0xc3fa, 0xefa3, 0xefa4, /*0xe8-0xef*/
- 0xbdc2, 0xd2bf, 0xb2f9, 0xefa5, 0xefa6, 0xefa7, 0xd2f8, 0xefa8, /*0xf0-0xf7*/
- 0xd6fd, 0xefa9, 0xc6cc, 0xe89e, 0xefaa, 0xefab, 0xc1b4, 0xefac, /*0xf8-0xff*/
- /* 0x9500 */
- 0xcffa, 0xcbf8, 0xefae, 0xefad, 0xb3fa, 0xb9f8, 0xefaf, 0xefb0, /*0x00-0x07*/
- 0xd0e2, 0xefb1, 0xefb2, 0xb7e6, 0xd0bf, 0xefb3, 0xefb4, 0xefb5, /*0x08-0x0f*/
- 0xc8f1, 0xcce0, 0xefb6, 0xefb7, 0xefb8, 0xefb9, 0xefba, 0xd5e0, /*0x10-0x17*/
- 0xefbb, 0xb4ed, 0xc3aa, 0xefbc, 0xe89f, 0xefbd, 0xefbe, 0xefbf, /*0x18-0x1f*/
- 0xe8a0, 0xcefd, 0xefc0, 0xc2e0, 0xb4b8, 0xd7b6, 0xbdf5, 0xe940, /*0x20-0x27*/
- 0xcfc7, 0xefc3, 0xefc1, 0xefc2, 0xefc4, 0xb6a7, 0xbcfc, 0xbee2, /*0x28-0x2f*/
- 0xc3cc, 0xefc5, 0xefc6, 0xe941, 0xefc7, 0xefcf, 0xefc8, 0xefc9, /*0x30-0x37*/
- 0xefca, 0xc7c2, 0xeff1, 0xb6cd, 0xefcb, 0xe942, 0xefcc, 0xefcd, /*0x38-0x3f*/
- 0xb6c6, 0xc3be, 0xefce, 0xe943, 0xefd0, 0xefd1, 0xefd2, 0xd5f2, /*0x40-0x47*/
- 0xe944, 0xefd3, 0xc4f7, 0xe945, 0xefd4, 0xc4f8, 0xefd5, 0xefd6, /*0x48-0x4f*/
- 0xb8e4, 0xb0f7, 0xefd7, 0xefd8, 0xefd9, 0xe946, 0xefda, 0xefdb, /*0x50-0x57*/
- 0xefdc, 0xefdd, 0xe947, 0xefde, 0xbeb5, 0xefe1, 0xefdf, 0xefe0, /*0x58-0x5f*/
- 0xe948, 0xefe2, 0xefe3, 0xc1cd, 0xefe4, 0xefe5, 0xefe6, 0xefe7, /*0x60-0x67*/
- 0xefe8, 0xefe9, 0xefea, 0xefeb, 0xefec, 0xc0d8, 0xe949, 0xefed, /*0x68-0x6f*/
- 0xc1ad, 0xefee, 0xefef, 0xeff0, 0xe94a, 0xe94b, 0xcfe2, 0xe94c, /*0x70-0x77*/
- 0xe94d, 0xe94e, 0xe94f, 0xe950, 0xe951, 0xe952, 0xe953, 0xb3a4, /*0x78-0x7f*/
- 0xe954, 0xe955, 0xe956, 0xe957, 0xe958, 0xe959, 0xe95a, 0xe95b, /*0x80-0x87*/
- 0xe95c, 0xe95d, 0xe95e, 0xe95f, 0xe960, 0xe961, 0xe962, 0xe963, /*0x88-0x8f*/
- 0xe964, 0xe965, 0xe966, 0xe967, 0xe968, 0xe969, 0xe96a, 0xe96b, /*0x90-0x97*/
- 0xe96c, 0xe96d, 0xe96e, 0xe96f, 0xe970, 0xe971, 0xe972, 0xe973, /*0x98-0x9f*/
- 0xe974, 0xe975, 0xe976, 0xe977, 0xe978, 0xe979, 0xe97a, 0xe97b, /*0xa0-0xa7*/
- 0xe97c, 0xe97d, 0xe97e, 0xe980, 0xe981, 0xe982, 0xe983, 0xe984, /*0xa8-0xaf*/
- 0xe985, 0xe986, 0xe987, 0xe988, 0xe989, 0xe98a, 0xe98b, 0xe98c, /*0xb0-0xb7*/
- 0xe98d, 0xe98e, 0xe98f, 0xe990, 0xe991, 0xe992, 0xe993, 0xe994, /*0xb8-0xbf*/
- 0xe995, 0xe996, 0xe997, 0xe998, 0xe999, 0xe99a, 0xe99b, 0xe99c, /*0xc0-0xc7*/
- 0xe99d, 0xe99e, 0xe99f, 0xe9a0, 0xea40, 0xea41, 0xea42, 0xea43, /*0xc8-0xcf*/
- 0xea44, 0xea45, 0xea46, 0xea47, 0xea48, 0xea49, 0xea4a, 0xea4b, /*0xd0-0xd7*/
- 0xea4c, 0xea4d, 0xea4e, 0xea4f, 0xea50, 0xea51, 0xea52, 0xea53, /*0xd8-0xdf*/
- 0xea54, 0xea55, 0xea56, 0xea57, 0xea58, 0xea59, 0xea5a, 0xea5b, /*0xe0-0xe7*/
- 0xc3c5, 0xe3c5, 0xc9c1, 0xe3c6, 0xea5c, 0xb1d5, 0xceca, 0xb4b3, /*0xe8-0xef*/
- 0xc8f2, 0xe3c7, 0xcfd0, 0xe3c8, 0xbce4, 0xe3c9, 0xe3ca, 0xc3c6, /*0xf0-0xf7*/
- 0xd5a2, 0xc4d6, 0xb9eb, 0xcec5, 0xe3cb, 0xc3f6, 0xe3cc, 0xea5d, /*0xf8-0xff*/
- /* 0x9600 */
- 0xb7a7, 0xb8f3, 0xbad2, 0xe3cd, 0xe3ce, 0xd4c4, 0xe3cf, 0xea5e, /*0x00-0x07*/
- 0xe3d0, 0xd1cb, 0xe3d1, 0xe3d2, 0xe3d3, 0xe3d4, 0xd1d6, 0xe3d5, /*0x08-0x0f*/
- 0xb2fb, 0xc0bb, 0xe3d6, 0xea5f, 0xc0ab, 0xe3d7, 0xe3d8, 0xe3d9, /*0x10-0x17*/
- 0xea60, 0xe3da, 0xe3db, 0xea61, 0xb8b7, 0xdae2, 0xea62, 0xb6d3, /*0x18-0x1f*/
- 0xea63, 0xdae4, 0xdae3, 0xea64, 0xea65, 0xea66, 0xea67, 0xea68, /*0x20-0x27*/
- 0xea69, 0xea6a, 0xdae6, 0xea6b, 0xea6c, 0xea6d, 0xc8ee, 0xea6e, /*0x28-0x2f*/
- 0xea6f, 0xdae5, 0xb7c0, 0xd1f4, 0xd2f5, 0xd5f3, 0xbdd7, 0xea70, /*0x30-0x37*/
- 0xea71, 0xea72, 0xea73, 0xd7e8, 0xdae8, 0xdae7, 0xea74, 0xb0a2, /*0x38-0x3f*/
- 0xcdd3, 0xea75, 0xdae9, 0xea76, 0xb8bd, 0xbcca, 0xc2bd, 0xc2a4, /*0x40-0x47*/
- 0xb3c2, 0xdaea, 0xea77, 0xc2aa, 0xc4b0, 0xbdb5, 0xea78, 0xea79, /*0x48-0x4f*/
- 0xcfde, 0xea7a, 0xea7b, 0xea7c, 0xdaeb, 0xc9c2, 0xea7d, 0xea7e, /*0x50-0x57*/
- 0xea80, 0xea81, 0xea82, 0xb1dd, 0xea83, 0xea84, 0xea85, 0xdaec, /*0x58-0x5f*/
- 0xea86, 0xb6b8, 0xd4ba, 0xea87, 0xb3fd, 0xea88, 0xea89, 0xdaed, /*0x60-0x67*/
- 0xd4c9, 0xcfd5, 0xc5e3, 0xea8a, 0xdaee, 0xea8b, 0xea8c, 0xea8d, /*0x68-0x6f*/
- 0xea8e, 0xea8f, 0xdaef, 0xea90, 0xdaf0, 0xc1ea, 0xccd5, 0xcfdd, /*0x70-0x77*/
- 0xea91, 0xea92, 0xea93, 0xea94, 0xea95, 0xea96, 0xea97, 0xea98, /*0x78-0x7f*/
- 0xea99, 0xea9a, 0xea9b, 0xea9c, 0xea9d, 0xd3e7, 0xc2a1, 0xea9e, /*0x80-0x87*/
- 0xdaf1, 0xea9f, 0xeaa0, 0xcbe5, 0xeb40, 0xdaf2, 0xeb41, 0xcbe6, /*0x88-0x8f*/
- 0xd2fe, 0xeb42, 0xeb43, 0xeb44, 0xb8f4, 0xeb45, 0xeb46, 0xdaf3, /*0x90-0x97*/
- 0xb0af, 0xcfb6, 0xeb47, 0xeb48, 0xd5cf, 0xeb49, 0xeb4a, 0xeb4b, /*0x98-0x9f*/
- 0xeb4c, 0xeb4d, 0xeb4e, 0xeb4f, 0xeb50, 0xeb51, 0xeb52, 0xcbed, /*0xa0-0xa7*/
- 0xeb53, 0xeb54, 0xeb55, 0xeb56, 0xeb57, 0xeb58, 0xeb59, 0xeb5a, /*0xa8-0xaf*/
- 0xdaf4, 0xeb5b, 0xeb5c, 0xe3c4, 0xeb5d, 0xeb5e, 0xc1a5, 0xeb5f, /*0xb0-0xb7*/
- 0xeb60, 0xf6bf, 0xeb61, 0xeb62, 0xf6c0, 0xf6c1, 0xc4d1, 0xeb63, /*0xb8-0xbf*/
- 0xc8b8, 0xd1e3, 0xeb64, 0xeb65, 0xd0db, 0xd1c5, 0xbcaf, 0xb9cd, /*0xc0-0xc7*/
- 0xeb66, 0xeff4, 0xeb67, 0xeb68, 0xb4c6, 0xd3ba, 0xf6c2, 0xb3fb, /*0xc8-0xcf*/
- 0xeb69, 0xeb6a, 0xf6c3, 0xeb6b, 0xeb6c, 0xb5f1, 0xeb6d, 0xeb6e, /*0xd0-0xd7*/
- 0xeb6f, 0xeb70, 0xeb71, 0xeb72, 0xeb73, 0xeb74, 0xeb75, 0xeb76, /*0xd8-0xdf*/
- 0xf6c5, 0xeb77, 0xeb78, 0xeb79, 0xeb7a, 0xeb7b, 0xeb7c, 0xeb7d, /*0xe0-0xe7*/
- 0xd3ea, 0xf6a7, 0xd1a9, 0xeb7e, 0xeb80, 0xeb81, 0xeb82, 0xf6a9, /*0xe8-0xef*/
- 0xeb83, 0xeb84, 0xeb85, 0xf6a8, 0xeb86, 0xeb87, 0xc1e3, 0xc0d7, /*0xf0-0xf7*/
- 0xeb88, 0xb1a2, 0xeb89, 0xeb8a, 0xeb8b, 0xeb8c, 0xceed, 0xeb8d, /*0xf8-0xff*/
- /* 0x9700 */
- 0xd0e8, 0xf6ab, 0xeb8e, 0xeb8f, 0xcff6, 0xeb90, 0xf6aa, 0xd5f0, /*0x00-0x07*/
- 0xf6ac, 0xc3b9, 0xeb91, 0xeb92, 0xeb93, 0xbbf4, 0xf6ae, 0xf6ad, /*0x08-0x0f*/
- 0xeb94, 0xeb95, 0xeb96, 0xc4de, 0xeb97, 0xeb98, 0xc1d8, 0xeb99, /*0x10-0x17*/
- 0xeb9a, 0xeb9b, 0xeb9c, 0xeb9d, 0xcbaa, 0xeb9e, 0xcfbc, 0xeb9f, /*0x18-0x1f*/
- 0xeba0, 0xec40, 0xec41, 0xec42, 0xec43, 0xec44, 0xec45, 0xec46, /*0x20-0x27*/
- 0xec47, 0xec48, 0xf6af, 0xec49, 0xec4a, 0xf6b0, 0xec4b, 0xec4c, /*0x28-0x2f*/
- 0xf6b1, 0xec4d, 0xc2b6, 0xec4e, 0xec4f, 0xec50, 0xec51, 0xec52, /*0x30-0x37*/
- 0xb0d4, 0xc5f9, 0xec53, 0xec54, 0xec55, 0xec56, 0xf6b2, 0xec57, /*0x38-0x3f*/
- 0xec58, 0xec59, 0xec5a, 0xec5b, 0xec5c, 0xec5d, 0xec5e, 0xec5f, /*0x40-0x47*/
- 0xec60, 0xec61, 0xec62, 0xec63, 0xec64, 0xec65, 0xec66, 0xec67, /*0x48-0x4f*/
- 0xec68, 0xec69, 0xc7e0, 0xf6a6, 0xec6a, 0xec6b, 0xbeb8, 0xec6c, /*0x50-0x57*/
- 0xec6d, 0xbeb2, 0xec6e, 0xb5e5, 0xec6f, 0xec70, 0xb7c7, 0xec71, /*0x58-0x5f*/
- 0xbfbf, 0xc3d2, 0xc3e6, 0xec72, 0xec73, 0xd8cc, 0xec74, 0xec75, /*0x60-0x67*/
- 0xec76, 0xb8ef, 0xec77, 0xec78, 0xec79, 0xec7a, 0xec7b, 0xec7c, /*0x68-0x6f*/
- 0xec7d, 0xec7e, 0xec80, 0xbdf9, 0xd1a5, 0xec81, 0xb0d0, 0xec82, /*0x70-0x77*/
- 0xec83, 0xec84, 0xec85, 0xec86, 0xf7b0, 0xec87, 0xec88, 0xec89, /*0x78-0x7f*/
- 0xec8a, 0xec8b, 0xec8c, 0xec8d, 0xec8e, 0xf7b1, 0xec8f, 0xec90, /*0x80-0x87*/
- 0xec91, 0xec92, 0xec93, 0xd0ac, 0xec94, 0xb0b0, 0xec95, 0xec96, /*0x88-0x8f*/
- 0xec97, 0xf7b2, 0xf7b3, 0xec98, 0xf7b4, 0xec99, 0xec9a, 0xec9b, /*0x90-0x97*/
- 0xc7ca, 0xec9c, 0xec9d, 0xec9e, 0xec9f, 0xeca0, 0xed40, 0xed41, /*0x98-0x9f*/
- 0xbecf, 0xed42, 0xed43, 0xf7b7, 0xed44, 0xed45, 0xed46, 0xed47, /*0xa0-0xa7*/
- 0xed48, 0xed49, 0xed4a, 0xf7b6, 0xed4b, 0xb1de, 0xed4c, 0xf7b5, /*0xa8-0xaf*/
- 0xed4d, 0xed4e, 0xf7b8, 0xed4f, 0xf7b9, 0xed50, 0xed51, 0xed52, /*0xb0-0xb7*/
- 0xed53, 0xed54, 0xed55, 0xed56, 0xed57, 0xed58, 0xed59, 0xed5a, /*0xb8-0xbf*/
- 0xed5b, 0xed5c, 0xed5d, 0xed5e, 0xed5f, 0xed60, 0xed61, 0xed62, /*0xc0-0xc7*/
- 0xed63, 0xed64, 0xed65, 0xed66, 0xed67, 0xed68, 0xed69, 0xed6a, /*0xc8-0xcf*/
- 0xed6b, 0xed6c, 0xed6d, 0xed6e, 0xed6f, 0xed70, 0xed71, 0xed72, /*0xd0-0xd7*/
- 0xed73, 0xed74, 0xed75, 0xed76, 0xed77, 0xed78, 0xed79, 0xed7a, /*0xd8-0xdf*/
- 0xed7b, 0xed7c, 0xed7d, 0xed7e, 0xed80, 0xed81, 0xcea4, 0xc8cd, /*0xe0-0xe7*/
- 0xed82, 0xbaab, 0xe8b8, 0xe8b9, 0xe8ba, 0xbec2, 0xed83, 0xed84, /*0xe8-0xef*/
- 0xed85, 0xed86, 0xed87, 0xd2f4, 0xed88, 0xd4cf, 0xc9d8, 0xed89, /*0xf0-0xf7*/
- 0xed8a, 0xed8b, 0xed8c, 0xed8d, 0xed8e, 0xed8f, 0xed90, 0xed91, /*0xf8-0xff*/
- /* 0x9800 */
- 0xed92, 0xed93, 0xed94, 0xed95, 0xed96, 0xed97, 0xed98, 0xed99, /*0x00-0x07*/
- 0xed9a, 0xed9b, 0xed9c, 0xed9d, 0xed9e, 0xed9f, 0xeda0, 0xee40, /*0x08-0x0f*/
- 0xee41, 0xee42, 0xee43, 0xee44, 0xee45, 0xee46, 0xee47, 0xee48, /*0x10-0x17*/
- 0xee49, 0xee4a, 0xee4b, 0xee4c, 0xee4d, 0xee4e, 0xee4f, 0xee50, /*0x18-0x1f*/
- 0xee51, 0xee52, 0xee53, 0xee54, 0xee55, 0xee56, 0xee57, 0xee58, /*0x20-0x27*/
- 0xee59, 0xee5a, 0xee5b, 0xee5c, 0xee5d, 0xee5e, 0xee5f, 0xee60, /*0x28-0x2f*/
- 0xee61, 0xee62, 0xee63, 0xee64, 0xee65, 0xee66, 0xee67, 0xee68, /*0x30-0x37*/
- 0xee69, 0xee6a, 0xee6b, 0xee6c, 0xee6d, 0xee6e, 0xee6f, 0xee70, /*0x38-0x3f*/
- 0xee71, 0xee72, 0xee73, 0xee74, 0xee75, 0xee76, 0xee77, 0xee78, /*0x40-0x47*/
- 0xee79, 0xee7a, 0xee7b, 0xee7c, 0xee7d, 0xee7e, 0xee80, 0xee81, /*0x48-0x4f*/
- 0xee82, 0xee83, 0xee84, 0xee85, 0xee86, 0xee87, 0xee88, 0xee89, /*0x50-0x57*/
- 0xee8a, 0xee8b, 0xee8c, 0xee8d, 0xee8e, 0xee8f, 0xee90, 0xee91, /*0x58-0x5f*/
- 0xee92, 0xee93, 0xee94, 0xee95, 0xee96, 0xee97, 0xee98, 0xee99, /*0x60-0x67*/
- 0xee9a, 0xee9b, 0xee9c, 0xee9d, 0xee9e, 0xee9f, 0xeea0, 0xef40, /*0x68-0x6f*/
- 0xef41, 0xef42, 0xef43, 0xef44, 0xef45, 0xd2b3, 0xb6a5, 0xc7ea, /*0x70-0x77*/
- 0xf1fc, 0xcfee, 0xcbb3, 0xd0eb, 0xe7ef, 0xcde7, 0xb9cb, 0xb6d9, /*0x78-0x7f*/
- 0xf1fd, 0xb0e4, 0xcbcc, 0xf1fe, 0xd4a4, 0xc2ad, 0xc1ec, 0xc6c4, /*0x80-0x87*/
- 0xbeb1, 0xf2a1, 0xbcd5, 0xef46, 0xf2a2, 0xf2a3, 0xef47, 0xf2a4, /*0x88-0x8f*/
- 0xd2c3, 0xc6b5, 0xef48, 0xcdc7, 0xf2a5, 0xef49, 0xd3b1, 0xbfc5, /*0x90-0x97*/
- 0xcce2, 0xef4a, 0xf2a6, 0xf2a7, 0xd1d5, 0xb6ee, 0xf2a8, 0xf2a9, /*0x98-0x9f*/
- 0xb5df, 0xf2aa, 0xf2ab, 0xef4b, 0xb2fc, 0xf2ac, 0xf2ad, 0xc8a7, /*0xa0-0xa7*/
- 0xef4c, 0xef4d, 0xef4e, 0xef4f, 0xef50, 0xef51, 0xef52, 0xef53, /*0xa8-0xaf*/
- 0xef54, 0xef55, 0xef56, 0xef57, 0xef58, 0xef59, 0xef5a, 0xef5b, /*0xb0-0xb7*/
- 0xef5c, 0xef5d, 0xef5e, 0xef5f, 0xef60, 0xef61, 0xef62, 0xef63, /*0xb8-0xbf*/
- 0xef64, 0xef65, 0xef66, 0xef67, 0xef68, 0xef69, 0xef6a, 0xef6b, /*0xc0-0xc7*/
- 0xef6c, 0xef6d, 0xef6e, 0xef6f, 0xef70, 0xef71, 0xb7e7, 0xef72, /*0xc8-0xcf*/
- 0xef73, 0xeca9, 0xecaa, 0xecab, 0xef74, 0xecac, 0xef75, 0xef76, /*0xd0-0xd7*/
- 0xc6ae, 0xecad, 0xecae, 0xef77, 0xef78, 0xef79, 0xb7c9, 0xcab3, /*0xd8-0xdf*/
- 0xef7a, 0xef7b, 0xef7c, 0xef7d, 0xef7e, 0xef80, 0xef81, 0xe2b8, /*0xe0-0xe7*/
- 0xf7cf, 0xef82, 0xef83, 0xef84, 0xef85, 0xef86, 0xef87, 0xef88, /*0xe8-0xef*/
- 0xef89, 0xef8a, 0xef8b, 0xef8c, 0xef8d, 0xef8e, 0xef8f, 0xef90, /*0xf0-0xf7*/
- 0xef91, 0xef92, 0xef93, 0xef94, 0xef95, 0xef96, 0xef97, 0xef98, /*0xf8-0xff*/
- /* 0x9900 */
- 0xef99, 0xef9a, 0xef9b, 0xef9c, 0xef9d, 0xef9e, 0xef9f, 0xefa0, /*0x00-0x07*/
- 0xf040, 0xf041, 0xf042, 0xf043, 0xf044, 0xf7d0, 0xf045, 0xf046, /*0x08-0x0f*/
- 0xb2cd, 0xf047, 0xf048, 0xf049, 0xf04a, 0xf04b, 0xf04c, 0xf04d, /*0x10-0x17*/
- 0xf04e, 0xf04f, 0xf050, 0xf051, 0xf052, 0xf053, 0xf054, 0xf055, /*0x18-0x1f*/
- 0xf056, 0xf057, 0xf058, 0xf059, 0xf05a, 0xf05b, 0xf05c, 0xf05d, /*0x20-0x27*/
- 0xf05e, 0xf05f, 0xf060, 0xf061, 0xf062, 0xf063, 0xf7d1, 0xf064, /*0x28-0x2f*/
- 0xf065, 0xf066, 0xf067, 0xf068, 0xf069, 0xf06a, 0xf06b, 0xf06c, /*0x30-0x37*/
- 0xf06d, 0xf06e, 0xf06f, 0xf070, 0xf071, 0xf072, 0xf073, 0xf074, /*0x38-0x3f*/
- 0xf075, 0xf076, 0xf077, 0xf078, 0xf079, 0xf07a, 0xf07b, 0xf07c, /*0x40-0x47*/
- 0xf07d, 0xf07e, 0xf080, 0xf081, 0xf082, 0xf083, 0xf084, 0xf085, /*0x48-0x4f*/
- 0xf086, 0xf087, 0xf088, 0xf089, 0xf7d3, 0xf7d2, 0xf08a, 0xf08b, /*0x50-0x57*/
- 0xf08c, 0xf08d, 0xf08e, 0xf08f, 0xf090, 0xf091, 0xf092, 0xf093, /*0x58-0x5f*/
- 0xf094, 0xf095, 0xf096, 0xe2bb, 0xf097, 0xbca2, 0xf098, 0xe2bc, /*0x60-0x67*/
- 0xe2bd, 0xe2be, 0xe2bf, 0xe2c0, 0xe2c1, 0xb7b9, 0xd2fb, 0xbda4, /*0x68-0x6f*/
- 0xcace, 0xb1a5, 0xcbc7, 0xf099, 0xe2c2, 0xb6fc, 0xc8c4, 0xe2c3, /*0x70-0x77*/
- 0xf09a, 0xf09b, 0xbdc8, 0xf09c, 0xb1fd, 0xe2c4, 0xf09d, 0xb6f6, /*0x78-0x7f*/
- 0xe2c5, 0xc4d9, 0xf09e, 0xf09f, 0xe2c6, 0xcfda, 0xb9dd, 0xe2c7, /*0x80-0x87*/
- 0xc0a1, 0xf0a0, 0xe2c8, 0xb2f6, 0xf140, 0xe2c9, 0xf141, 0xc1f3, /*0x88-0x8f*/
- 0xe2ca, 0xe2cb, 0xc2f8, 0xe2cc, 0xe2cd, 0xe2ce, 0xcad7, 0xd8b8, /*0x90-0x97*/
- 0xd9e5, 0xcfe3, 0xf142, 0xf143, 0xf144, 0xf145, 0xf146, 0xf147, /*0x98-0x9f*/
- 0xf148, 0xf149, 0xf14a, 0xf14b, 0xf14c, 0xf0a5, 0xf14d, 0xf14e, /*0xa0-0xa7*/
- 0xdcb0, 0xf14f, 0xf150, 0xf151, 0xf152, 0xf153, 0xf154, 0xf155, /*0xa8-0xaf*/
- 0xf156, 0xf157, 0xf158, 0xf159, 0xf15a, 0xf15b, 0xf15c, 0xf15d, /*0xb0-0xb7*/
- 0xf15e, 0xf15f, 0xf160, 0xf161, 0xf162, 0xf163, 0xf164, 0xf165, /*0xb8-0xbf*/
- 0xf166, 0xf167, 0xf168, 0xf169, 0xf16a, 0xf16b, 0xf16c, 0xf16d, /*0xc0-0xc7*/
- 0xf16e, 0xf16f, 0xf170, 0xf171, 0xf172, 0xf173, 0xf174, 0xf175, /*0xc8-0xcf*/
- 0xf176, 0xf177, 0xf178, 0xf179, 0xf17a, 0xf17b, 0xf17c, 0xf17d, /*0xd0-0xd7*/
- 0xf17e, 0xf180, 0xf181, 0xf182, 0xf183, 0xf184, 0xf185, 0xf186, /*0xd8-0xdf*/
- 0xf187, 0xf188, 0xf189, 0xf18a, 0xf18b, 0xf18c, 0xf18d, 0xf18e, /*0xe0-0xe7*/
- 0xf18f, 0xf190, 0xf191, 0xf192, 0xf193, 0xf194, 0xf195, 0xf196, /*0xe8-0xef*/
- 0xf197, 0xf198, 0xf199, 0xf19a, 0xf19b, 0xf19c, 0xf19d, 0xf19e, /*0xf0-0xf7*/
- 0xf19f, 0xf1a0, 0xf240, 0xf241, 0xf242, 0xf243, 0xf244, 0xf245, /*0xf8-0xff*/
- /* 0x9a00 */
- 0xf246, 0xf247, 0xf248, 0xf249, 0xf24a, 0xf24b, 0xf24c, 0xf24d, /*0x00-0x07*/
- 0xf24e, 0xf24f, 0xf250, 0xf251, 0xf252, 0xf253, 0xf254, 0xf255, /*0x08-0x0f*/
- 0xf256, 0xf257, 0xf258, 0xf259, 0xf25a, 0xf25b, 0xf25c, 0xf25d, /*0x10-0x17*/
- 0xf25e, 0xf25f, 0xf260, 0xf261, 0xf262, 0xf263, 0xf264, 0xf265, /*0x18-0x1f*/
- 0xf266, 0xf267, 0xf268, 0xf269, 0xf26a, 0xf26b, 0xf26c, 0xf26d, /*0x20-0x27*/
- 0xf26e, 0xf26f, 0xf270, 0xf271, 0xf272, 0xf273, 0xf274, 0xf275, /*0x28-0x2f*/
- 0xf276, 0xf277, 0xf278, 0xf279, 0xf27a, 0xf27b, 0xf27c, 0xf27d, /*0x30-0x37*/
- 0xf27e, 0xf280, 0xf281, 0xf282, 0xf283, 0xf284, 0xf285, 0xf286, /*0x38-0x3f*/
- 0xf287, 0xf288, 0xf289, 0xf28a, 0xf28b, 0xf28c, 0xf28d, 0xf28e, /*0x40-0x47*/
- 0xf28f, 0xf290, 0xf291, 0xf292, 0xf293, 0xf294, 0xf295, 0xf296, /*0x48-0x4f*/
- 0xf297, 0xf298, 0xf299, 0xf29a, 0xf29b, 0xf29c, 0xf29d, 0xf29e, /*0x50-0x57*/
- 0xf29f, 0xf2a0, 0xf340, 0xf341, 0xf342, 0xf343, 0xf344, 0xf345, /*0x58-0x5f*/
- 0xf346, 0xf347, 0xf348, 0xf349, 0xf34a, 0xf34b, 0xf34c, 0xf34d, /*0x60-0x67*/
- 0xf34e, 0xf34f, 0xf350, 0xf351, 0xc2ed, 0xd4a6, 0xcdd4, 0xd1b1, /*0x68-0x6f*/
- 0xb3db, 0xc7fd, 0xf352, 0xb2b5, 0xc2bf, 0xe6e0, 0xcabb, 0xe6e1, /*0x70-0x77*/
- 0xe6e2, 0xbed4, 0xe6e3, 0xd7a4, 0xcdd5, 0xe6e5, 0xbcdd, 0xe6e4, /*0x78-0x7f*/
- 0xe6e6, 0xe6e7, 0xc2ee, 0xf353, 0xbdbe, 0xe6e8, 0xc2e6, 0xbaa7, /*0x80-0x87*/
- 0xe6e9, 0xf354, 0xe6ea, 0xb3d2, 0xd1e9, 0xf355, 0xf356, 0xbfa5, /*0x88-0x8f*/
- 0xe6eb, 0xc6ef, 0xe6ec, 0xe6ed, 0xf357, 0xf358, 0xe6ee, 0xc6ad, /*0x90-0x97*/
- 0xe6ef, 0xf359, 0xc9a7, 0xe6f0, 0xe6f1, 0xe6f2, 0xe5b9, 0xe6f3, /*0x98-0x9f*/
- 0xe6f4, 0xc2e2, 0xe6f5, 0xe6f6, 0xd6e8, 0xe6f7, 0xf35a, 0xe6f8, /*0xa0-0xa7*/
- 0xb9c7, 0xf35b, 0xf35c, 0xf35d, 0xf35e, 0xf35f, 0xf360, 0xf361, /*0xa8-0xaf*/
- 0xf7bb, 0xf7ba, 0xf362, 0xf363, 0xf364, 0xf365, 0xf7be, 0xf7bc, /*0xb0-0xb7*/
- 0xbaa1, 0xf366, 0xf7bf, 0xf367, 0xf7c0, 0xf368, 0xf369, 0xf36a, /*0xb8-0xbf*/
- 0xf7c2, 0xf7c1, 0xf7c4, 0xf36b, 0xf36c, 0xf7c3, 0xf36d, 0xf36e, /*0xc0-0xc7*/
- 0xf36f, 0xf370, 0xf371, 0xf7c5, 0xf7c6, 0xf372, 0xf373, 0xf374, /*0xc8-0xcf*/
- 0xf375, 0xf7c7, 0xf376, 0xcbe8, 0xf377, 0xf378, 0xf379, 0xf37a, /*0xd0-0xd7*/
- 0xb8df, 0xf37b, 0xf37c, 0xf37d, 0xf37e, 0xf380, 0xf381, 0xf7d4, /*0xd8-0xdf*/
- 0xf382, 0xf7d5, 0xf383, 0xf384, 0xf385, 0xf386, 0xf7d6, 0xf387, /*0xe0-0xe7*/
- 0xf388, 0xf389, 0xf38a, 0xf7d8, 0xf38b, 0xf7da, 0xf38c, 0xf7d7, /*0xe8-0xef*/
- 0xf38d, 0xf38e, 0xf38f, 0xf390, 0xf391, 0xf392, 0xf393, 0xf394, /*0xf0-0xf7*/
- 0xf395, 0xf7db, 0xf396, 0xf7d9, 0xf397, 0xf398, 0xf399, 0xf39a, /*0xf8-0xff*/
- /* 0x9b00 */
- 0xf39b, 0xf39c, 0xf39d, 0xd7d7, 0xf39e, 0xf39f, 0xf3a0, 0xf440, /*0x00-0x07*/
- 0xf7dc, 0xf441, 0xf442, 0xf443, 0xf444, 0xf445, 0xf446, 0xf7dd, /*0x08-0x0f*/
- 0xf447, 0xf448, 0xf449, 0xf7de, 0xf44a, 0xf44b, 0xf44c, 0xf44d, /*0x10-0x17*/
- 0xf44e, 0xf44f, 0xf450, 0xf451, 0xf452, 0xf453, 0xf454, 0xf7df, /*0x18-0x1f*/
- 0xf455, 0xf456, 0xf457, 0xf7e0, 0xf458, 0xf459, 0xf45a, 0xf45b, /*0x20-0x27*/
- 0xf45c, 0xf45d, 0xf45e, 0xf45f, 0xf460, 0xf461, 0xf462, 0xdbcb, /*0x28-0x2f*/
- 0xf463, 0xf464, 0xd8aa, 0xf465, 0xf466, 0xf467, 0xf468, 0xf469, /*0x30-0x37*/
- 0xf46a, 0xf46b, 0xf46c, 0xe5f7, 0xb9ed, 0xf46d, 0xf46e, 0xf46f, /*0x38-0x3f*/
- 0xf470, 0xbffd, 0xbbea, 0xf7c9, 0xc6c7, 0xf7c8, 0xf471, 0xf7ca, /*0x40-0x47*/
- 0xf7cc, 0xf7cb, 0xf472, 0xf473, 0xf474, 0xf7cd, 0xf475, 0xceba, /*0x48-0x4f*/
- 0xf476, 0xf7ce, 0xf477, 0xf478, 0xc4a7, 0xf479, 0xf47a, 0xf47b, /*0x50-0x57*/
- 0xf47c, 0xf47d, 0xf47e, 0xf480, 0xf481, 0xf482, 0xf483, 0xf484, /*0x58-0x5f*/
- 0xf485, 0xf486, 0xf487, 0xf488, 0xf489, 0xf48a, 0xf48b, 0xf48c, /*0x60-0x67*/
- 0xf48d, 0xf48e, 0xf48f, 0xf490, 0xf491, 0xf492, 0xf493, 0xf494, /*0x68-0x6f*/
- 0xf495, 0xf496, 0xf497, 0xf498, 0xf499, 0xf49a, 0xf49b, 0xf49c, /*0x70-0x77*/
- 0xf49d, 0xf49e, 0xf49f, 0xf4a0, 0xf540, 0xf541, 0xf542, 0xf543, /*0x78-0x7f*/
- 0xf544, 0xf545, 0xf546, 0xf547, 0xf548, 0xf549, 0xf54a, 0xf54b, /*0x80-0x87*/
- 0xf54c, 0xf54d, 0xf54e, 0xf54f, 0xf550, 0xf551, 0xf552, 0xf553, /*0x88-0x8f*/
- 0xf554, 0xf555, 0xf556, 0xf557, 0xf558, 0xf559, 0xf55a, 0xf55b, /*0x90-0x97*/
- 0xf55c, 0xf55d, 0xf55e, 0xf55f, 0xf560, 0xf561, 0xf562, 0xf563, /*0x98-0x9f*/
- 0xf564, 0xf565, 0xf566, 0xf567, 0xf568, 0xf569, 0xf56a, 0xf56b, /*0xa0-0xa7*/
- 0xf56c, 0xf56d, 0xf56e, 0xf56f, 0xf570, 0xf571, 0xf572, 0xf573, /*0xa8-0xaf*/
- 0xf574, 0xf575, 0xf576, 0xf577, 0xf578, 0xf579, 0xf57a, 0xf57b, /*0xb0-0xb7*/
- 0xf57c, 0xf57d, 0xf57e, 0xf580, 0xf581, 0xf582, 0xf583, 0xf584, /*0xb8-0xbf*/
- 0xf585, 0xf586, 0xf587, 0xf588, 0xf589, 0xf58a, 0xf58b, 0xf58c, /*0xc0-0xc7*/
- 0xf58d, 0xf58e, 0xf58f, 0xf590, 0xf591, 0xf592, 0xf593, 0xf594, /*0xc8-0xcf*/
- 0xf595, 0xf596, 0xf597, 0xf598, 0xf599, 0xf59a, 0xf59b, 0xf59c, /*0xd0-0xd7*/
- 0xf59d, 0xf59e, 0xf59f, 0xf5a0, 0xf640, 0xf641, 0xf642, 0xf643, /*0xd8-0xdf*/
- 0xf644, 0xf645, 0xf646, 0xf647, 0xf648, 0xf649, 0xf64a, 0xf64b, /*0xe0-0xe7*/
- 0xf64c, 0xf64d, 0xf64e, 0xf64f, 0xf650, 0xf651, 0xf652, 0xf653, /*0xe8-0xef*/
- 0xf654, 0xf655, 0xf656, 0xf657, 0xf658, 0xf659, 0xf65a, 0xf65b, /*0xf0-0xf7*/
- 0xf65c, 0xf65d, 0xf65e, 0xf65f, 0xf660, 0xf661, 0xf662, 0xf663, /*0xf8-0xff*/
- /* 0x9c00 */
- 0xf664, 0xf665, 0xf666, 0xf667, 0xf668, 0xf669, 0xf66a, 0xf66b, /*0x00-0x07*/
- 0xf66c, 0xf66d, 0xf66e, 0xf66f, 0xf670, 0xf671, 0xf672, 0xf673, /*0x08-0x0f*/
- 0xf674, 0xf675, 0xf676, 0xf677, 0xf678, 0xf679, 0xf67a, 0xf67b, /*0x10-0x17*/
- 0xf67c, 0xf67d, 0xf67e, 0xf680, 0xf681, 0xf682, 0xf683, 0xf684, /*0x18-0x1f*/
- 0xf685, 0xf686, 0xf687, 0xf688, 0xf689, 0xf68a, 0xf68b, 0xf68c, /*0x20-0x27*/
- 0xf68d, 0xf68e, 0xf68f, 0xf690, 0xf691, 0xf692, 0xf693, 0xf694, /*0x28-0x2f*/
- 0xf695, 0xf696, 0xf697, 0xf698, 0xf699, 0xf69a, 0xf69b, 0xf69c, /*0x30-0x37*/
- 0xf69d, 0xf69e, 0xf69f, 0xf6a0, 0xf740, 0xf741, 0xf742, 0xf743, /*0x38-0x3f*/
- 0xf744, 0xf745, 0xf746, 0xf747, 0xf748, 0xf749, 0xf74a, 0xf74b, /*0x40-0x47*/
- 0xf74c, 0xf74d, 0xf74e, 0xf74f, 0xf750, 0xf751, 0xf752, 0xf753, /*0x48-0x4f*/
- 0xf754, 0xf755, 0xf756, 0xf757, 0xf758, 0xf759, 0xf75a, 0xf75b, /*0x50-0x57*/
- 0xf75c, 0xf75d, 0xf75e, 0xf75f, 0xf760, 0xf761, 0xf762, 0xf763, /*0x58-0x5f*/
- 0xf764, 0xf765, 0xf766, 0xf767, 0xf768, 0xf769, 0xf76a, 0xf76b, /*0x60-0x67*/
- 0xf76c, 0xf76d, 0xf76e, 0xf76f, 0xf770, 0xf771, 0xf772, 0xf773, /*0x68-0x6f*/
- 0xf774, 0xf775, 0xf776, 0xf777, 0xf778, 0xf779, 0xf77a, 0xf77b, /*0x70-0x77*/
- 0xf77c, 0xf77d, 0xf77e, 0xf780, 0xd3e3, 0xf781, 0xf782, 0xf6cf, /*0x78-0x7f*/
- 0xf783, 0xc2b3, 0xf6d0, 0xf784, 0xf785, 0xf6d1, 0xf6d2, 0xf6d3, /*0x80-0x87*/
- 0xf6d4, 0xf786, 0xf787, 0xf6d6, 0xf788, 0xb1ab, 0xf6d7, 0xf789, /*0x88-0x8f*/
- 0xf6d8, 0xf6d9, 0xf6da, 0xf78a, 0xf6db, 0xf6dc, 0xf78b, 0xf78c, /*0x90-0x97*/
- 0xf78d, 0xf78e, 0xf6dd, 0xf6de, 0xcfca, 0xf78f, 0xf6df, 0xf6e0, /*0x98-0x9f*/
- 0xf6e1, 0xf6e2, 0xf6e3, 0xf6e4, 0xc0f0, 0xf6e5, 0xf6e6, 0xf6e7, /*0xa0-0xa7*/
- 0xf6e8, 0xf6e9, 0xf790, 0xf6ea, 0xf791, 0xf6eb, 0xf6ec, 0xf792, /*0xa8-0xaf*/
- 0xf6ed, 0xf6ee, 0xf6ef, 0xf6f0, 0xf6f1, 0xf6f2, 0xf6f3, 0xf6f4, /*0xb0-0xb7*/
- 0xbea8, 0xf793, 0xf6f5, 0xf6f6, 0xf6f7, 0xf6f8, 0xf794, 0xf795, /*0xb8-0xbf*/
- 0xf796, 0xf797, 0xf798, 0xc8fa, 0xf6f9, 0xf6fa, 0xf6fb, 0xf6fc, /*0xc0-0xc7*/
- 0xf799, 0xf79a, 0xf6fd, 0xf6fe, 0xf7a1, 0xf7a2, 0xf7a3, 0xf7a4, /*0xc8-0xcf*/
- 0xf7a5, 0xf79b, 0xf79c, 0xf7a6, 0xf7a7, 0xf7a8, 0xb1ee, 0xf7a9, /*0xd0-0xd7*/
- 0xf7aa, 0xf7ab, 0xf79d, 0xf79e, 0xf7ac, 0xf7ad, 0xc1db, 0xf7ae, /*0xd8-0xdf*/
- 0xf79f, 0xf7a0, 0xf7af, 0xf840, 0xf841, 0xf842, 0xf843, 0xf844, /*0xe0-0xe7*/
- 0xf845, 0xf846, 0xf847, 0xf848, 0xf849, 0xf84a, 0xf84b, 0xf84c, /*0xe8-0xef*/
- 0xf84d, 0xf84e, 0xf84f, 0xf850, 0xf851, 0xf852, 0xf853, 0xf854, /*0xf0-0xf7*/
- 0xf855, 0xf856, 0xf857, 0xf858, 0xf859, 0xf85a, 0xf85b, 0xf85c, /*0xf8-0xff*/
- /* 0x9d00 */
- 0xf85d, 0xf85e, 0xf85f, 0xf860, 0xf861, 0xf862, 0xf863, 0xf864, /*0x00-0x07*/
- 0xf865, 0xf866, 0xf867, 0xf868, 0xf869, 0xf86a, 0xf86b, 0xf86c, /*0x08-0x0f*/
- 0xf86d, 0xf86e, 0xf86f, 0xf870, 0xf871, 0xf872, 0xf873, 0xf874, /*0x10-0x17*/
- 0xf875, 0xf876, 0xf877, 0xf878, 0xf879, 0xf87a, 0xf87b, 0xf87c, /*0x18-0x1f*/
- 0xf87d, 0xf87e, 0xf880, 0xf881, 0xf882, 0xf883, 0xf884, 0xf885, /*0x20-0x27*/
- 0xf886, 0xf887, 0xf888, 0xf889, 0xf88a, 0xf88b, 0xf88c, 0xf88d, /*0x28-0x2f*/
- 0xf88e, 0xf88f, 0xf890, 0xf891, 0xf892, 0xf893, 0xf894, 0xf895, /*0x30-0x37*/
- 0xf896, 0xf897, 0xf898, 0xf899, 0xf89a, 0xf89b, 0xf89c, 0xf89d, /*0x38-0x3f*/
- 0xf89e, 0xf89f, 0xf8a0, 0xf940, 0xf941, 0xf942, 0xf943, 0xf944, /*0x40-0x47*/
- 0xf945, 0xf946, 0xf947, 0xf948, 0xf949, 0xf94a, 0xf94b, 0xf94c, /*0x48-0x4f*/
- 0xf94d, 0xf94e, 0xf94f, 0xf950, 0xf951, 0xf952, 0xf953, 0xf954, /*0x50-0x57*/
- 0xf955, 0xf956, 0xf957, 0xf958, 0xf959, 0xf95a, 0xf95b, 0xf95c, /*0x58-0x5f*/
- 0xf95d, 0xf95e, 0xf95f, 0xf960, 0xf961, 0xf962, 0xf963, 0xf964, /*0x60-0x67*/
- 0xf965, 0xf966, 0xf967, 0xf968, 0xf969, 0xf96a, 0xf96b, 0xf96c, /*0x68-0x6f*/
- 0xf96d, 0xf96e, 0xf96f, 0xf970, 0xf971, 0xf972, 0xf973, 0xf974, /*0x70-0x77*/
- 0xf975, 0xf976, 0xf977, 0xf978, 0xf979, 0xf97a, 0xf97b, 0xf97c, /*0x78-0x7f*/
- 0xf97d, 0xf97e, 0xf980, 0xf981, 0xf982, 0xf983, 0xf984, 0xf985, /*0x80-0x87*/
- 0xf986, 0xf987, 0xf988, 0xf989, 0xf98a, 0xf98b, 0xf98c, 0xf98d, /*0x88-0x8f*/
- 0xf98e, 0xf98f, 0xf990, 0xf991, 0xf992, 0xf993, 0xf994, 0xf995, /*0x90-0x97*/
- 0xf996, 0xf997, 0xf998, 0xf999, 0xf99a, 0xf99b, 0xf99c, 0xf99d, /*0x98-0x9f*/
- 0xf99e, 0xf99f, 0xf9a0, 0xfa40, 0xfa41, 0xfa42, 0xfa43, 0xfa44, /*0xa0-0xa7*/
- 0xfa45, 0xfa46, 0xfa47, 0xfa48, 0xfa49, 0xfa4a, 0xfa4b, 0xfa4c, /*0xa8-0xaf*/
- 0xfa4d, 0xfa4e, 0xfa4f, 0xfa50, 0xfa51, 0xfa52, 0xfa53, 0xfa54, /*0xb0-0xb7*/
- 0xfa55, 0xfa56, 0xfa57, 0xfa58, 0xfa59, 0xfa5a, 0xfa5b, 0xfa5c, /*0xb8-0xbf*/
- 0xfa5d, 0xfa5e, 0xfa5f, 0xfa60, 0xfa61, 0xfa62, 0xfa63, 0xfa64, /*0xc0-0xc7*/
- 0xfa65, 0xfa66, 0xfa67, 0xfa68, 0xfa69, 0xfa6a, 0xfa6b, 0xfa6c, /*0xc8-0xcf*/
- 0xfa6d, 0xfa6e, 0xfa6f, 0xfa70, 0xfa71, 0xfa72, 0xfa73, 0xfa74, /*0xd0-0xd7*/
- 0xfa75, 0xfa76, 0xfa77, 0xfa78, 0xfa79, 0xfa7a, 0xfa7b, 0xfa7c, /*0xd8-0xdf*/
- 0xfa7d, 0xfa7e, 0xfa80, 0xfa81, 0xfa82, 0xfa83, 0xfa84, 0xfa85, /*0xe0-0xe7*/
- 0xfa86, 0xfa87, 0xfa88, 0xfa89, 0xfa8a, 0xfa8b, 0xfa8c, 0xfa8d, /*0xe8-0xef*/
- 0xfa8e, 0xfa8f, 0xfa90, 0xfa91, 0xfa92, 0xfa93, 0xfa94, 0xfa95, /*0xf0-0xf7*/
- 0xfa96, 0xfa97, 0xfa98, 0xfa99, 0xfa9a, 0xfa9b, 0xfa9c, 0xfa9d, /*0xf8-0xff*/
- /* 0x9e00 */
- 0xfa9e, 0xfa9f, 0xfaa0, 0xfb40, 0xfb41, 0xfb42, 0xfb43, 0xfb44, /*0x00-0x07*/
- 0xfb45, 0xfb46, 0xfb47, 0xfb48, 0xfb49, 0xfb4a, 0xfb4b, 0xfb4c, /*0x08-0x0f*/
- 0xfb4d, 0xfb4e, 0xfb4f, 0xfb50, 0xfb51, 0xfb52, 0xfb53, 0xfb54, /*0x10-0x17*/
- 0xfb55, 0xfb56, 0xfb57, 0xfb58, 0xfb59, 0xfb5a, 0xfb5b, 0xc4f1, /*0x18-0x1f*/
- 0xf0af, 0xbca6, 0xf0b0, 0xc3f9, 0xfb5c, 0xc5b8, 0xd1bb, 0xfb5d, /*0x20-0x27*/
- 0xf0b1, 0xf0b2, 0xf0b3, 0xf0b4, 0xf0b5, 0xd1bc, 0xfb5e, 0xd1ec, /*0x28-0x2f*/
- 0xfb5f, 0xf0b7, 0xf0b6, 0xd4a7, 0xfb60, 0xcdd2, 0xf0b8, 0xf0ba, /*0x30-0x37*/
- 0xf0b9, 0xf0bb, 0xf0bc, 0xfb61, 0xfb62, 0xb8eb, 0xf0bd, 0xbae8, /*0x38-0x3f*/
- 0xfb63, 0xf0be, 0xf0bf, 0xbee9, 0xf0c0, 0xb6ec, 0xf0c1, 0xf0c2, /*0x40-0x47*/
- 0xf0c3, 0xf0c4, 0xc8b5, 0xf0c5, 0xf0c6, 0xfb64, 0xf0c7, 0xc5f4, /*0x48-0x4f*/
- 0xfb65, 0xf0c8, 0xfb66, 0xfb67, 0xfb68, 0xf0c9, 0xfb69, 0xf0ca, /*0x50-0x57*/
- 0xf7bd, 0xfb6a, 0xf0cb, 0xf0cc, 0xf0cd, 0xfb6b, 0xf0ce, 0xfb6c, /*0x58-0x5f*/
- 0xfb6d, 0xfb6e, 0xfb6f, 0xf0cf, 0xbad7, 0xfb70, 0xf0d0, 0xf0d1, /*0x60-0x67*/
- 0xf0d2, 0xf0d3, 0xf0d4, 0xf0d5, 0xf0d6, 0xf0d8, 0xfb71, 0xfb72, /*0x68-0x6f*/
- 0xd3a5, 0xf0d7, 0xfb73, 0xf0d9, 0xfb74, 0xfb75, 0xfb76, 0xfb77, /*0x70-0x77*/
- 0xfb78, 0xfb79, 0xfb7a, 0xfb7b, 0xfb7c, 0xfb7d, 0xf5ba, 0xc2b9, /*0x78-0x7f*/
- 0xfb7e, 0xfb80, 0xf7e4, 0xfb81, 0xfb82, 0xfb83, 0xfb84, 0xf7e5, /*0x80-0x87*/
- 0xf7e6, 0xfb85, 0xfb86, 0xf7e7, 0xfb87, 0xfb88, 0xfb89, 0xfb8a, /*0x88-0x8f*/
- 0xfb8b, 0xfb8c, 0xf7e8, 0xc2b4, 0xfb8d, 0xfb8e, 0xfb8f, 0xfb90, /*0x90-0x97*/
- 0xfb91, 0xfb92, 0xfb93, 0xfb94, 0xfb95, 0xf7ea, 0xfb96, 0xf7eb, /*0x98-0x9f*/
- 0xfb97, 0xfb98, 0xfb99, 0xfb9a, 0xfb9b, 0xfb9c, 0xc2f3, 0xfb9d, /*0xa0-0xa7*/
- 0xfb9e, 0xfb9f, 0xfba0, 0xfc40, 0xfc41, 0xfc42, 0xfc43, 0xfc44, /*0xa8-0xaf*/
- 0xfc45, 0xfc46, 0xfc47, 0xfc48, 0xf4f0, 0xfc49, 0xfc4a, 0xfc4b, /*0xb0-0xb7*/
- 0xf4ef, 0xfc4c, 0xfc4d, 0xc2e9, 0xfc4e, 0xf7e1, 0xf7e2, 0xfc4f, /*0xb8-0xbf*/
- 0xfc50, 0xfc51, 0xfc52, 0xfc53, 0xbbc6, 0xfc54, 0xfc55, 0xfc56, /*0xc0-0xc7*/
- 0xfc57, 0xd9e4, 0xfc58, 0xfc59, 0xfc5a, 0xcaf2, 0xc0e8, 0xf0a4, /*0xc8-0xcf*/
- 0xfc5b, 0xbada, 0xfc5c, 0xfc5d, 0xc7ad, 0xfc5e, 0xfc5f, 0xfc60, /*0xd0-0xd7*/
- 0xc4ac, 0xfc61, 0xfc62, 0xf7ec, 0xf7ed, 0xf7ee, 0xfc63, 0xf7f0, /*0xd8-0xdf*/
- 0xf7ef, 0xfc64, 0xf7f1, 0xfc65, 0xfc66, 0xf7f4, 0xfc67, 0xf7f3, /*0xe0-0xe7*/
- 0xfc68, 0xf7f2, 0xf7f5, 0xfc69, 0xfc6a, 0xfc6b, 0xfc6c, 0xf7f6, /*0xe8-0xef*/
- 0xfc6d, 0xfc6e, 0xfc6f, 0xfc70, 0xfc71, 0xfc72, 0xfc73, 0xfc74, /*0xf0-0xf7*/
- 0xfc75, 0xede9, 0xfc76, 0xedea, 0xedeb, 0xfc77, 0xf6bc, 0xfc78, /*0xf8-0xff*/
- /* 0x9f00 */
- 0xfc79, 0xfc7a, 0xfc7b, 0xfc7c, 0xfc7d, 0xfc7e, 0xfc80, 0xfc81, /*0x00-0x07*/
- 0xfc82, 0xfc83, 0xfc84, 0xf6bd, 0xfc85, 0xf6be, 0xb6a6, 0xfc86, /*0x08-0x0f*/
- 0xd8be, 0xfc87, 0xfc88, 0xb9c4, 0xfc89, 0xfc8a, 0xfc8b, 0xd8bb, /*0x10-0x17*/
- 0xfc8c, 0xdcb1, 0xfc8d, 0xfc8e, 0xfc8f, 0xfc90, 0xfc91, 0xfc92, /*0x18-0x1f*/
- 0xcaf3, 0xfc93, 0xf7f7, 0xfc94, 0xfc95, 0xfc96, 0xfc97, 0xfc98, /*0x20-0x27*/
- 0xfc99, 0xfc9a, 0xfc9b, 0xfc9c, 0xf7f8, 0xfc9d, 0xfc9e, 0xf7f9, /*0x28-0x2f*/
- 0xfc9f, 0xfca0, 0xfd40, 0xfd41, 0xfd42, 0xfd43, 0xfd44, 0xf7fb, /*0x30-0x37*/
- 0xfd45, 0xf7fa, 0xfd46, 0xb1c7, 0xfd47, 0xf7fc, 0xf7fd, 0xfd48, /*0x38-0x3f*/
- 0xfd49, 0xfd4a, 0xfd4b, 0xfd4c, 0xf7fe, 0xfd4d, 0xfd4e, 0xfd4f, /*0x40-0x47*/
- 0xfd50, 0xfd51, 0xfd52, 0xfd53, 0xfd54, 0xfd55, 0xfd56, 0xfd57, /*0x48-0x4f*/
- 0xc6eb, 0xecb4, 0xfd58, 0xfd59, 0xfd5a, 0xfd5b, 0xfd5c, 0xfd5d, /*0x50-0x57*/
- 0xfd5e, 0xfd5f, 0xfd60, 0xfd61, 0xfd62, 0xfd63, 0xfd64, 0xfd65, /*0x58-0x5f*/
- 0xfd66, 0xfd67, 0xfd68, 0xfd69, 0xfd6a, 0xfd6b, 0xfd6c, 0xfd6d, /*0x60-0x67*/
- 0xfd6e, 0xfd6f, 0xfd70, 0xfd71, 0xfd72, 0xfd73, 0xfd74, 0xfd75, /*0x68-0x6f*/
- 0xfd76, 0xfd77, 0xfd78, 0xfd79, 0xfd7a, 0xfd7b, 0xfd7c, 0xfd7d, /*0x70-0x77*/
- 0xfd7e, 0xfd80, 0xfd81, 0xfd82, 0xfd83, 0xfd84, 0xfd85, 0xb3dd, /*0x78-0x7f*/
- 0xf6b3, 0xfd86, 0xfd87, 0xf6b4, 0xc1e4, 0xf6b5, 0xf6b6, 0xf6b7, /*0x80-0x87*/
- 0xf6b8, 0xf6b9, 0xf6ba, 0xc8a3, 0xf6bb, 0xfd88, 0xfd89, 0xfd8a, /*0x88-0x8f*/
- 0xfd8b, 0xfd8c, 0xfd8d, 0xfd8e, 0xfd8f, 0xfd90, 0xfd91, 0xfd92, /*0x90-0x97*/
- 0xfd93, 0xc1fa, 0xb9a8, 0xede8, 0xfd94, 0xfd95, 0xfd96, 0xb9ea, /*0x98-0x9f*/
- 0xd9df, 0xfd97, 0xfd98, 0xfd99, 0xfd9a, 0xfd9b, 0x0000, 0x0000, /*0xa0-0xa7*/
-};
-static const unsigned short gbk_pagef9a[32] = {
- 0x0000, 0xfd9d, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0x78-0x7f*/
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0x80-0x87*/
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0x88-0x8f*/
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xfd9e, 0x0000, 0x0000, /*0x90-0x97*/
-};
-static const unsigned short gbk_pagef9b[24] = {
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xfd9f, /*0xe0-0xe7*/
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0xe8-0xef*/
- 0x0000, 0xfda0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0xf0-0xf7*/
-};
-static const unsigned short gbk_pagefa[40] = {
- 0x0000, 0x0000, 0x0000, 0x0000, 0xfe40, 0xfe41, 0xfe42, 0xfe43, /*0x08-0x0f*/
- 0x0000, 0xfe44, 0x0000, 0xfe45, 0xfe46, 0x0000, 0x0000, 0x0000, /*0x10-0x17*/
- 0xfe47, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xfe48, /*0x18-0x1f*/
- 0xfe49, 0xfe4a, 0x0000, 0xfe4b, 0xfe4c, 0x0000, 0x0000, 0xfe4d, /*0x20-0x27*/
- 0xfe4e, 0xfe4f, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0x28-0x2f*/
-};
-static const unsigned short gbk_pagefe[64] = {
- 0xa955, 0xa6f2, 0x0000, 0xa6f4, 0xa6f5, 0xa6e0, 0xa6e1, 0xa6f0, /*0x30-0x37*/
- 0xa6f1, 0xa6e2, 0xa6e3, 0xa6ee, 0xa6ef, 0xa6e6, 0xa6e7, 0xa6e4, /*0x38-0x3f*/
- 0xa6e5, 0xa6e8, 0xa6e9, 0xa6ea, 0xa6eb, 0x0000, 0x0000, 0x0000, /*0x40-0x47*/
- 0x0000, 0xa968, 0xa969, 0xa96a, 0xa96b, 0xa96c, 0xa96d, 0xa96e, /*0x48-0x4f*/
- 0xa96f, 0xa970, 0xa971, 0x0000, 0xa972, 0xa973, 0xa974, 0xa975, /*0x50-0x57*/
- 0x0000, 0xa976, 0xa977, 0xa978, 0xa979, 0xa97a, 0xa97b, 0xa97c, /*0x58-0x5f*/
- 0xa97d, 0xa97e, 0xa980, 0xa981, 0xa982, 0xa983, 0xa984, 0x0000, /*0x60-0x67*/
- 0xa985, 0xa986, 0xa987, 0xa988, 0x0000, 0x0000, 0x0000, 0x0000, /*0x68-0x6f*/
-};
-static const unsigned short gbk_pageffa[96] = {
- 0x0000, 0xa3a1, 0xa3a2, 0xa3a3, 0xa1e7, 0xa3a5, 0xa3a6, 0xa3a7, /*0x00-0x07*/
- 0xa3a8, 0xa3a9, 0xa3aa, 0xa3ab, 0xa3ac, 0xa3ad, 0xa3ae, 0xa3af, /*0x08-0x0f*/
- 0xa3b0, 0xa3b1, 0xa3b2, 0xa3b3, 0xa3b4, 0xa3b5, 0xa3b6, 0xa3b7, /*0x10-0x17*/
- 0xa3b8, 0xa3b9, 0xa3ba, 0xa3bb, 0xa3bc, 0xa3bd, 0xa3be, 0xa3bf, /*0x18-0x1f*/
- 0xa3c0, 0xa3c1, 0xa3c2, 0xa3c3, 0xa3c4, 0xa3c5, 0xa3c6, 0xa3c7, /*0x20-0x27*/
- 0xa3c8, 0xa3c9, 0xa3ca, 0xa3cb, 0xa3cc, 0xa3cd, 0xa3ce, 0xa3cf, /*0x28-0x2f*/
- 0xa3d0, 0xa3d1, 0xa3d2, 0xa3d3, 0xa3d4, 0xa3d5, 0xa3d6, 0xa3d7, /*0x30-0x37*/
- 0xa3d8, 0xa3d9, 0xa3da, 0xa3db, 0xa3dc, 0xa3dd, 0xa3de, 0xa3df, /*0x38-0x3f*/
- 0xa3e0, 0xa3e1, 0xa3e2, 0xa3e3, 0xa3e4, 0xa3e5, 0xa3e6, 0xa3e7, /*0x40-0x47*/
- 0xa3e8, 0xa3e9, 0xa3ea, 0xa3eb, 0xa3ec, 0xa3ed, 0xa3ee, 0xa3ef, /*0x48-0x4f*/
- 0xa3f0, 0xa3f1, 0xa3f2, 0xa3f3, 0xa3f4, 0xa3f5, 0xa3f6, 0xa3f7, /*0x50-0x57*/
- 0xa3f8, 0xa3f9, 0xa3fa, 0xa3fb, 0xa3fc, 0xa3fd, 0xa1ab, 0x0000, /*0x58-0x5f*/
-};
-static const unsigned short gbk_pageffb[8] = {
- 0xa1e9, 0xa1ea, 0xa956, 0xa3fe, 0xa957, 0xa3a4, 0x0000, 0x0000, /*0xe0-0xe7*/
-};
-
-static int
-gbk_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n)
-{
- if (n >= 2) {
- unsigned short c = 0;
- if (wc >= 0x00a0 && wc < 0x0170)
- c = gbk_page00[wc-0x00a0];
- else if (wc >= 0x01c8 && wc < 0x01e0)
- c = gbk_page01[wc-0x01c8];
- else if (wc >= 0x0250 && wc < 0x0268)
- c = gbk_page02a[wc-0x0250];
- else if (wc >= 0x02c0 && wc < 0x02e0)
- c = gbk_page02b[wc-0x02c0];
- else if (wc >= 0x0390 && wc < 0x03d0)
- c = gbk_page03[wc-0x0390];
- else if (wc >= 0x0400 && wc < 0x0458)
- c = gbk_page04[wc-0x0400];
- else if (wc >= 0x2010 && wc < 0x2040)
- c = gbk_page20[wc-0x2010];
- else if (wc >= 0x2100 && wc < 0x21a0)
- c = gbk_page21[wc-0x2100];
- else if (wc >= 0x2208 && wc < 0x22c0)
- c = gbk_page22[wc-0x2208];
- else if (wc == 0x2312)
- c = 0xa1d0;
- else if (wc >= 0x2460 && wc < 0x24a0)
- c = gbk_page24[wc-0x2460];
- else if (wc >= 0x2500 && wc < 0x25e8)
- c = gbk_page25[wc-0x2500];
- else if (wc >= 0x2600 && wc < 0x2648)
- c = gbk_page26[wc-0x2600];
- else if (wc >= 0x3000 && wc < 0x3130)
- c = gbk_page30[wc-0x3000];
- else if (wc >= 0x3220 && wc < 0x3238)
- c = gbk_page32[wc-0x3220];
- else if (wc == 0x32a3)
- c = 0xa949;
- else if (wc >= 0x3388 && wc < 0x33d8)
- c = gbk_page33[wc-0x3388];
- else if (wc >= 0x4e00 && wc < 0x9fa8)
- c = gbk_page4e[wc-0x4e00];
- else if (wc == 0xf92c)
- c = 0xfd9c;
- else if (wc >= 0xf978 && wc < 0xf998)
- c = gbk_pagef9a[wc-0xf978];
- else if (wc >= 0xf9e0 && wc < 0xf9f8)
- c = gbk_pagef9b[wc-0xf9e0];
- else if (wc >= 0xfa08 && wc < 0xfa30)
- c = gbk_pagefa[wc-0xfa08];
- else if (wc >= 0xfe30 && wc < 0xfe70)
- c = gbk_pagefe[wc-0xfe30];
- else if (wc >= 0xff00 && wc < 0xff60)
- c = gbk_pageffa[wc-0xff00];
- else if (wc >= 0xffe0 && wc < 0xffe8)
- c = gbk_pageffb[wc-0xffe0];
- if (c != 0) {
- r[0] = (c >> 8); r[1] = (c & 0xff);
- return 2;
- }
- return RET_ILSEQ;
- }
- return RET_TOOSMALL;
-}
+
+/*
+ * GBK-0
+ */
+
+static const unsigned short gbk_2uni_page81[23766] = {
+ /* 0x81 */
+ 0x4e02, 0x4e04, 0x4e05, 0x4e06, 0x4e0f, 0x4e12, 0x4e17, 0x4e1f,
+ 0x4e20, 0x4e21, 0x4e23, 0x4e26, 0x4e29, 0x4e2e, 0x4e2f, 0x4e31,
+ 0x4e33, 0x4e35, 0x4e37, 0x4e3c, 0x4e40, 0x4e41, 0x4e42, 0x4e44,
+ 0x4e46, 0x4e4a, 0x4e51, 0x4e55, 0x4e57, 0x4e5a, 0x4e5b, 0x4e62,
+ 0x4e63, 0x4e64, 0x4e65, 0x4e67, 0x4e68, 0x4e6a, 0x4e6b, 0x4e6c,
+ 0x4e6d, 0x4e6e, 0x4e6f, 0x4e72, 0x4e74, 0x4e75, 0x4e76, 0x4e77,
+ 0x4e78, 0x4e79, 0x4e7a, 0x4e7b, 0x4e7c, 0x4e7d, 0x4e7f, 0x4e80,
+ 0x4e81, 0x4e82, 0x4e83, 0x4e84, 0x4e85, 0x4e87, 0x4e8a, 0x4e90,
+ 0x4e96, 0x4e97, 0x4e99, 0x4e9c, 0x4e9d, 0x4e9e, 0x4ea3, 0x4eaa,
+ 0x4eaf, 0x4eb0, 0x4eb1, 0x4eb4, 0x4eb6, 0x4eb7, 0x4eb8, 0x4eb9,
+ 0x4ebc, 0x4ebd, 0x4ebe, 0x4ec8, 0x4ecc, 0x4ecf, 0x4ed0, 0x4ed2,
+ 0x4eda, 0x4edb, 0x4edc, 0x4ee0, 0x4ee2, 0x4ee6, 0x4ee7, 0x4ee9,
+ 0x4eed, 0x4eee, 0x4eef, 0x4ef1, 0x4ef4, 0x4ef8, 0x4ef9, 0x4efa,
+ 0x4efc, 0x4efe, 0x4f00, 0x4f02, 0x4f03, 0x4f04, 0x4f05, 0x4f06,
+ 0x4f07, 0x4f08, 0x4f0b, 0x4f0c, 0x4f12, 0x4f13, 0x4f14, 0x4f15,
+ 0x4f16, 0x4f1c, 0x4f1d, 0x4f21, 0x4f23, 0x4f28, 0x4f29, 0x4f2c,
+ 0x4f2d, 0x4f2e, 0x4f31, 0x4f33, 0x4f35, 0x4f37, 0x4f39, 0x4f3b,
+ 0x4f3e, 0x4f3f, 0x4f40, 0x4f41, 0x4f42, 0x4f44, 0x4f45, 0x4f47,
+ 0x4f48, 0x4f49, 0x4f4a, 0x4f4b, 0x4f4c, 0x4f52, 0x4f54, 0x4f56,
+ 0x4f61, 0x4f62, 0x4f66, 0x4f68, 0x4f6a, 0x4f6b, 0x4f6d, 0x4f6e,
+ 0x4f71, 0x4f72, 0x4f75, 0x4f77, 0x4f78, 0x4f79, 0x4f7a, 0x4f7d,
+ 0x4f80, 0x4f81, 0x4f82, 0x4f85, 0x4f86, 0x4f87, 0x4f8a, 0x4f8c,
+ 0x4f8e, 0x4f90, 0x4f92, 0x4f93, 0x4f95, 0x4f96, 0x4f98, 0x4f99,
+ 0x4f9a, 0x4f9c, 0x4f9e, 0x4f9f, 0x4fa1, 0x4fa2,
+ /* 0x82 */
+ 0x4fa4, 0x4fab, 0x4fad, 0x4fb0, 0x4fb1, 0x4fb2, 0x4fb3, 0x4fb4,
+ 0x4fb6, 0x4fb7, 0x4fb8, 0x4fb9, 0x4fba, 0x4fbb, 0x4fbc, 0x4fbd,
+ 0x4fbe, 0x4fc0, 0x4fc1, 0x4fc2, 0x4fc6, 0x4fc7, 0x4fc8, 0x4fc9,
+ 0x4fcb, 0x4fcc, 0x4fcd, 0x4fd2, 0x4fd3, 0x4fd4, 0x4fd5, 0x4fd6,
+ 0x4fd9, 0x4fdb, 0x4fe0, 0x4fe2, 0x4fe4, 0x4fe5, 0x4fe7, 0x4feb,
+ 0x4fec, 0x4ff0, 0x4ff2, 0x4ff4, 0x4ff5, 0x4ff6, 0x4ff7, 0x4ff9,
+ 0x4ffb, 0x4ffc, 0x4ffd, 0x4fff, 0x5000, 0x5001, 0x5002, 0x5003,
+ 0x5004, 0x5005, 0x5006, 0x5007, 0x5008, 0x5009, 0x500a, 0x500b,
+ 0x500e, 0x5010, 0x5011, 0x5013, 0x5015, 0x5016, 0x5017, 0x501b,
+ 0x501d, 0x501e, 0x5020, 0x5022, 0x5023, 0x5024, 0x5027, 0x502b,
+ 0x502f, 0x5030, 0x5031, 0x5032, 0x5033, 0x5034, 0x5035, 0x5036,
+ 0x5037, 0x5038, 0x5039, 0x503b, 0x503d, 0x503f, 0x5040, 0x5041,
+ 0x5042, 0x5044, 0x5045, 0x5046, 0x5049, 0x504a, 0x504b, 0x504d,
+ 0x5050, 0x5051, 0x5052, 0x5053, 0x5054, 0x5056, 0x5057, 0x5058,
+ 0x5059, 0x505b, 0x505d, 0x505e, 0x505f, 0x5060, 0x5061, 0x5062,
+ 0x5063, 0x5064, 0x5066, 0x5067, 0x5068, 0x5069, 0x506a, 0x506b,
+ 0x506d, 0x506e, 0x506f, 0x5070, 0x5071, 0x5072, 0x5073, 0x5074,
+ 0x5075, 0x5078, 0x5079, 0x507a, 0x507c, 0x507d, 0x5081, 0x5082,
+ 0x5083, 0x5084, 0x5086, 0x5087, 0x5089, 0x508a, 0x508b, 0x508c,
+ 0x508e, 0x508f, 0x5090, 0x5091, 0x5092, 0x5093, 0x5094, 0x5095,
+ 0x5096, 0x5097, 0x5098, 0x5099, 0x509a, 0x509b, 0x509c, 0x509d,
+ 0x509e, 0x509f, 0x50a0, 0x50a1, 0x50a2, 0x50a4, 0x50a6, 0x50aa,
+ 0x50ab, 0x50ad, 0x50ae, 0x50af, 0x50b0, 0x50b1, 0x50b3, 0x50b4,
+ 0x50b5, 0x50b6, 0x50b7, 0x50b8, 0x50b9, 0x50bc,
+ /* 0x83 */
+ 0x50bd, 0x50be, 0x50bf, 0x50c0, 0x50c1, 0x50c2, 0x50c3, 0x50c4,
+ 0x50c5, 0x50c6, 0x50c7, 0x50c8, 0x50c9, 0x50ca, 0x50cb, 0x50cc,
+ 0x50cd, 0x50ce, 0x50d0, 0x50d1, 0x50d2, 0x50d3, 0x50d4, 0x50d5,
+ 0x50d7, 0x50d8, 0x50d9, 0x50db, 0x50dc, 0x50dd, 0x50de, 0x50df,
+ 0x50e0, 0x50e1, 0x50e2, 0x50e3, 0x50e4, 0x50e5, 0x50e8, 0x50e9,
+ 0x50ea, 0x50eb, 0x50ef, 0x50f0, 0x50f1, 0x50f2, 0x50f4, 0x50f6,
+ 0x50f7, 0x50f8, 0x50f9, 0x50fa, 0x50fc, 0x50fd, 0x50fe, 0x50ff,
+ 0x5100, 0x5101, 0x5102, 0x5103, 0x5104, 0x5105, 0x5108, 0x5109,
+ 0x510a, 0x510c, 0x510d, 0x510e, 0x510f, 0x5110, 0x5111, 0x5113,
+ 0x5114, 0x5115, 0x5116, 0x5117, 0x5118, 0x5119, 0x511a, 0x511b,
+ 0x511c, 0x511d, 0x511e, 0x511f, 0x5120, 0x5122, 0x5123, 0x5124,
+ 0x5125, 0x5126, 0x5127, 0x5128, 0x5129, 0x512a, 0x512b, 0x512c,
+ 0x512d, 0x512e, 0x512f, 0x5130, 0x5131, 0x5132, 0x5133, 0x5134,
+ 0x5135, 0x5136, 0x5137, 0x5138, 0x5139, 0x513a, 0x513b, 0x513c,
+ 0x513d, 0x513e, 0x5142, 0x5147, 0x514a, 0x514c, 0x514e, 0x514f,
+ 0x5150, 0x5152, 0x5153, 0x5157, 0x5158, 0x5159, 0x515b, 0x515d,
+ 0x515e, 0x515f, 0x5160, 0x5161, 0x5163, 0x5164, 0x5166, 0x5167,
+ 0x5169, 0x516a, 0x516f, 0x5172, 0x517a, 0x517e, 0x517f, 0x5183,
+ 0x5184, 0x5186, 0x5187, 0x518a, 0x518b, 0x518e, 0x518f, 0x5190,
+ 0x5191, 0x5193, 0x5194, 0x5198, 0x519a, 0x519d, 0x519e, 0x519f,
+ 0x51a1, 0x51a3, 0x51a6, 0x51a7, 0x51a8, 0x51a9, 0x51aa, 0x51ad,
+ 0x51ae, 0x51b4, 0x51b8, 0x51b9, 0x51ba, 0x51be, 0x51bf, 0x51c1,
+ 0x51c2, 0x51c3, 0x51c5, 0x51c8, 0x51ca, 0x51cd, 0x51ce, 0x51d0,
+ 0x51d2, 0x51d3, 0x51d4, 0x51d5, 0x51d6, 0x51d7,
+ /* 0x84 */
+ 0x51d8, 0x51d9, 0x51da, 0x51dc, 0x51de, 0x51df, 0x51e2, 0x51e3,
+ 0x51e5, 0x51e6, 0x51e7, 0x51e8, 0x51e9, 0x51ea, 0x51ec, 0x51ee,
+ 0x51f1, 0x51f2, 0x51f4, 0x51f7, 0x51fe, 0x5204, 0x5205, 0x5209,
+ 0x520b, 0x520c, 0x520f, 0x5210, 0x5213, 0x5214, 0x5215, 0x521c,
+ 0x521e, 0x521f, 0x5221, 0x5222, 0x5223, 0x5225, 0x5226, 0x5227,
+ 0x522a, 0x522c, 0x522f, 0x5231, 0x5232, 0x5234, 0x5235, 0x523c,
+ 0x523e, 0x5244, 0x5245, 0x5246, 0x5247, 0x5248, 0x5249, 0x524b,
+ 0x524e, 0x524f, 0x5252, 0x5253, 0x5255, 0x5257, 0x5258, 0x5259,
+ 0x525a, 0x525b, 0x525d, 0x525f, 0x5260, 0x5262, 0x5263, 0x5264,
+ 0x5266, 0x5268, 0x526b, 0x526c, 0x526d, 0x526e, 0x5270, 0x5271,
+ 0x5273, 0x5274, 0x5275, 0x5276, 0x5277, 0x5278, 0x5279, 0x527a,
+ 0x527b, 0x527c, 0x527e, 0x5280, 0x5283, 0x5284, 0x5285, 0x5286,
+ 0x5287, 0x5289, 0x528a, 0x528b, 0x528c, 0x528d, 0x528e, 0x528f,
+ 0x5291, 0x5292, 0x5294, 0x5295, 0x5296, 0x5297, 0x5298, 0x5299,
+ 0x529a, 0x529c, 0x52a4, 0x52a5, 0x52a6, 0x52a7, 0x52ae, 0x52af,
+ 0x52b0, 0x52b4, 0x52b5, 0x52b6, 0x52b7, 0x52b8, 0x52b9, 0x52ba,
+ 0x52bb, 0x52bc, 0x52bd, 0x52c0, 0x52c1, 0x52c2, 0x52c4, 0x52c5,
+ 0x52c6, 0x52c8, 0x52ca, 0x52cc, 0x52cd, 0x52ce, 0x52cf, 0x52d1,
+ 0x52d3, 0x52d4, 0x52d5, 0x52d7, 0x52d9, 0x52da, 0x52db, 0x52dc,
+ 0x52dd, 0x52de, 0x52e0, 0x52e1, 0x52e2, 0x52e3, 0x52e5, 0x52e6,
+ 0x52e7, 0x52e8, 0x52e9, 0x52ea, 0x52eb, 0x52ec, 0x52ed, 0x52ee,
+ 0x52ef, 0x52f1, 0x52f2, 0x52f3, 0x52f4, 0x52f5, 0x52f6, 0x52f7,
+ 0x52f8, 0x52fb, 0x52fc, 0x52fd, 0x5301, 0x5302, 0x5303, 0x5304,
+ 0x5307, 0x5309, 0x530a, 0x530b, 0x530c, 0x530e,
+ /* 0x85 */
+ 0x5311, 0x5312, 0x5313, 0x5314, 0x5318, 0x531b, 0x531c, 0x531e,
+ 0x531f, 0x5322, 0x5324, 0x5325, 0x5327, 0x5328, 0x5329, 0x532b,
+ 0x532c, 0x532d, 0x532f, 0x5330, 0x5331, 0x5332, 0x5333, 0x5334,
+ 0x5335, 0x5336, 0x5337, 0x5338, 0x533c, 0x533d, 0x5340, 0x5342,
+ 0x5344, 0x5346, 0x534b, 0x534c, 0x534d, 0x5350, 0x5354, 0x5358,
+ 0x5359, 0x535b, 0x535d, 0x5365, 0x5368, 0x536a, 0x536c, 0x536d,
+ 0x5372, 0x5376, 0x5379, 0x537b, 0x537c, 0x537d, 0x537e, 0x5380,
+ 0x5381, 0x5383, 0x5387, 0x5388, 0x538a, 0x538e, 0x538f, 0x5390,
+ 0x5391, 0x5392, 0x5393, 0x5394, 0x5396, 0x5397, 0x5399, 0x539b,
+ 0x539c, 0x539e, 0x53a0, 0x53a1, 0x53a4, 0x53a7, 0x53aa, 0x53ab,
+ 0x53ac, 0x53ad, 0x53af, 0x53b0, 0x53b1, 0x53b2, 0x53b3, 0x53b4,
+ 0x53b5, 0x53b7, 0x53b8, 0x53b9, 0x53ba, 0x53bc, 0x53bd, 0x53be,
+ 0x53c0, 0x53c3, 0x53c4, 0x53c5, 0x53c6, 0x53c7, 0x53ce, 0x53cf,
+ 0x53d0, 0x53d2, 0x53d3, 0x53d5, 0x53da, 0x53dc, 0x53dd, 0x53de,
+ 0x53e1, 0x53e2, 0x53e7, 0x53f4, 0x53fa, 0x53fe, 0x53ff, 0x5400,
+ 0x5402, 0x5405, 0x5407, 0x540b, 0x5414, 0x5418, 0x5419, 0x541a,
+ 0x541c, 0x5422, 0x5424, 0x5425, 0x542a, 0x5430, 0x5433, 0x5436,
+ 0x5437, 0x543a, 0x543d, 0x543f, 0x5441, 0x5442, 0x5444, 0x5445,
+ 0x5447, 0x5449, 0x544c, 0x544d, 0x544e, 0x544f, 0x5451, 0x545a,
+ 0x545d, 0x545e, 0x545f, 0x5460, 0x5461, 0x5463, 0x5465, 0x5467,
+ 0x5469, 0x546a, 0x546b, 0x546c, 0x546d, 0x546e, 0x546f, 0x5470,
+ 0x5474, 0x5479, 0x547a, 0x547e, 0x547f, 0x5481, 0x5483, 0x5485,
+ 0x5487, 0x5488, 0x5489, 0x548a, 0x548d, 0x5491, 0x5493, 0x5497,
+ 0x5498, 0x549c, 0x549e, 0x549f, 0x54a0, 0x54a1,
+ /* 0x86 */
+ 0x54a2, 0x54a5, 0x54ae, 0x54b0, 0x54b2, 0x54b5, 0x54b6, 0x54b7,
+ 0x54b9, 0x54ba, 0x54bc, 0x54be, 0x54c3, 0x54c5, 0x54ca, 0x54cb,
+ 0x54d6, 0x54d8, 0x54db, 0x54e0, 0x54e1, 0x54e2, 0x54e3, 0x54e4,
+ 0x54eb, 0x54ec, 0x54ef, 0x54f0, 0x54f1, 0x54f4, 0x54f5, 0x54f6,
+ 0x54f7, 0x54f8, 0x54f9, 0x54fb, 0x54fe, 0x5500, 0x5502, 0x5503,
+ 0x5504, 0x5505, 0x5508, 0x550a, 0x550b, 0x550c, 0x550d, 0x550e,
+ 0x5512, 0x5513, 0x5515, 0x5516, 0x5517, 0x5518, 0x5519, 0x551a,
+ 0x551c, 0x551d, 0x551e, 0x551f, 0x5521, 0x5525, 0x5526, 0x5528,
+ 0x5529, 0x552b, 0x552d, 0x5532, 0x5534, 0x5535, 0x5536, 0x5538,
+ 0x5539, 0x553a, 0x553b, 0x553d, 0x5540, 0x5542, 0x5545, 0x5547,
+ 0x5548, 0x554b, 0x554c, 0x554d, 0x554e, 0x554f, 0x5551, 0x5552,
+ 0x5553, 0x5554, 0x5557, 0x5558, 0x5559, 0x555a, 0x555b, 0x555d,
+ 0x555e, 0x555f, 0x5560, 0x5562, 0x5563, 0x5568, 0x5569, 0x556b,
+ 0x556f, 0x5570, 0x5571, 0x5572, 0x5573, 0x5574, 0x5579, 0x557a,
+ 0x557d, 0x557f, 0x5585, 0x5586, 0x558c, 0x558d, 0x558e, 0x5590,
+ 0x5592, 0x5593, 0x5595, 0x5596, 0x5597, 0x559a, 0x559b, 0x559e,
+ 0x55a0, 0x55a1, 0x55a2, 0x55a3, 0x55a4, 0x55a5, 0x55a6, 0x55a8,
+ 0x55a9, 0x55aa, 0x55ab, 0x55ac, 0x55ad, 0x55ae, 0x55af, 0x55b0,
+ 0x55b2, 0x55b4, 0x55b6, 0x55b8, 0x55ba, 0x55bc, 0x55bf, 0x55c0,
+ 0x55c1, 0x55c2, 0x55c3, 0x55c6, 0x55c7, 0x55c8, 0x55ca, 0x55cb,
+ 0x55ce, 0x55cf, 0x55d0, 0x55d5, 0x55d7, 0x55d8, 0x55d9, 0x55da,
+ 0x55db, 0x55de, 0x55e0, 0x55e2, 0x55e7, 0x55e9, 0x55ed, 0x55ee,
+ 0x55f0, 0x55f1, 0x55f4, 0x55f6, 0x55f8, 0x55f9, 0x55fa, 0x55fb,
+ 0x55fc, 0x55ff, 0x5602, 0x5603, 0x5604, 0x5605,
+ /* 0x87 */
+ 0x5606, 0x5607, 0x560a, 0x560b, 0x560d, 0x5610, 0x5611, 0x5612,
+ 0x5613, 0x5614, 0x5615, 0x5616, 0x5617, 0x5619, 0x561a, 0x561c,
+ 0x561d, 0x5620, 0x5621, 0x5622, 0x5625, 0x5626, 0x5628, 0x5629,
+ 0x562a, 0x562b, 0x562e, 0x562f, 0x5630, 0x5633, 0x5635, 0x5637,
+ 0x5638, 0x563a, 0x563c, 0x563d, 0x563e, 0x5640, 0x5641, 0x5642,
+ 0x5643, 0x5644, 0x5645, 0x5646, 0x5647, 0x5648, 0x5649, 0x564a,
+ 0x564b, 0x564f, 0x5650, 0x5651, 0x5652, 0x5653, 0x5655, 0x5656,
+ 0x565a, 0x565b, 0x565d, 0x565e, 0x565f, 0x5660, 0x5661, 0x5663,
+ 0x5665, 0x5666, 0x5667, 0x566d, 0x566e, 0x566f, 0x5670, 0x5672,
+ 0x5673, 0x5674, 0x5675, 0x5677, 0x5678, 0x5679, 0x567a, 0x567d,
+ 0x567e, 0x567f, 0x5680, 0x5681, 0x5682, 0x5683, 0x5684, 0x5687,
+ 0x5688, 0x5689, 0x568a, 0x568b, 0x568c, 0x568d, 0x5690, 0x5691,
+ 0x5692, 0x5694, 0x5695, 0x5696, 0x5697, 0x5698, 0x5699, 0x569a,
+ 0x569b, 0x569c, 0x569d, 0x569e, 0x569f, 0x56a0, 0x56a1, 0x56a2,
+ 0x56a4, 0x56a5, 0x56a6, 0x56a7, 0x56a8, 0x56a9, 0x56aa, 0x56ab,
+ 0x56ac, 0x56ad, 0x56ae, 0x56b0, 0x56b1, 0x56b2, 0x56b3, 0x56b4,
+ 0x56b5, 0x56b6, 0x56b8, 0x56b9, 0x56ba, 0x56bb, 0x56bd, 0x56be,
+ 0x56bf, 0x56c0, 0x56c1, 0x56c2, 0x56c3, 0x56c4, 0x56c5, 0x56c6,
+ 0x56c7, 0x56c8, 0x56c9, 0x56cb, 0x56cc, 0x56cd, 0x56ce, 0x56cf,
+ 0x56d0, 0x56d1, 0x56d2, 0x56d3, 0x56d5, 0x56d6, 0x56d8, 0x56d9,
+ 0x56dc, 0x56e3, 0x56e5, 0x56e6, 0x56e7, 0x56e8, 0x56e9, 0x56ea,
+ 0x56ec, 0x56ee, 0x56ef, 0x56f2, 0x56f3, 0x56f6, 0x56f7, 0x56f8,
+ 0x56fb, 0x56fc, 0x5700, 0x5701, 0x5702, 0x5705, 0x5707, 0x570b,
+ 0x570c, 0x570d, 0x570e, 0x570f, 0x5710, 0x5711,
+ /* 0x88 */
+ 0x5712, 0x5713, 0x5714, 0x5715, 0x5716, 0x5717, 0x5718, 0x5719,
+ 0x571a, 0x571b, 0x571d, 0x571e, 0x5720, 0x5721, 0x5722, 0x5724,
+ 0x5725, 0x5726, 0x5727, 0x572b, 0x5731, 0x5732, 0x5734, 0x5735,
+ 0x5736, 0x5737, 0x5738, 0x573c, 0x573d, 0x573f, 0x5741, 0x5743,
+ 0x5744, 0x5745, 0x5746, 0x5748, 0x5749, 0x574b, 0x5752, 0x5753,
+ 0x5754, 0x5755, 0x5756, 0x5758, 0x5759, 0x5762, 0x5763, 0x5765,
+ 0x5767, 0x576c, 0x576e, 0x5770, 0x5771, 0x5772, 0x5774, 0x5775,
+ 0x5778, 0x5779, 0x577a, 0x577d, 0x577e, 0x577f, 0x5780, 0x5781,
+ 0x5787, 0x5788, 0x5789, 0x578a, 0x578d, 0x578e, 0x578f, 0x5790,
+ 0x5791, 0x5794, 0x5795, 0x5796, 0x5797, 0x5798, 0x5799, 0x579a,
+ 0x579c, 0x579d, 0x579e, 0x579f, 0x57a5, 0x57a8, 0x57aa, 0x57ac,
+ 0x57af, 0x57b0, 0x57b1, 0x57b3, 0x57b5, 0x57b6, 0x57b7, 0x57b9,
+ 0x57ba, 0x57bb, 0x57bc, 0x57bd, 0x57be, 0x57bf, 0x57c0, 0x57c1,
+ 0x57c4, 0x57c5, 0x57c6, 0x57c7, 0x57c8, 0x57c9, 0x57ca, 0x57cc,
+ 0x57cd, 0x57d0, 0x57d1, 0x57d3, 0x57d6, 0x57d7, 0x57db, 0x57dc,
+ 0x57de, 0x57e1, 0x57e2, 0x57e3, 0x57e5, 0x57e6, 0x57e7, 0x57e8,
+ 0x57e9, 0x57ea, 0x57eb, 0x57ec, 0x57ee, 0x57f0, 0x57f1, 0x57f2,
+ 0x57f3, 0x57f5, 0x57f6, 0x57f7, 0x57fb, 0x57fc, 0x57fe, 0x57ff,
+ 0x5801, 0x5803, 0x5804, 0x5805, 0x5808, 0x5809, 0x580a, 0x580c,
+ 0x580e, 0x580f, 0x5810, 0x5812, 0x5813, 0x5814, 0x5816, 0x5817,
+ 0x5818, 0x581a, 0x581b, 0x581c, 0x581d, 0x581f, 0x5822, 0x5823,
+ 0x5825, 0x5826, 0x5827, 0x5828, 0x5829, 0x582b, 0x582c, 0x582d,
+ 0x582e, 0x582f, 0x5831, 0x5832, 0x5833, 0x5834, 0x5836, 0x5837,
+ 0x5838, 0x5839, 0x583a, 0x583b, 0x583c, 0x583d,
+ /* 0x89 */
+ 0x583e, 0x583f, 0x5840, 0x5841, 0x5842, 0x5843, 0x5845, 0x5846,
+ 0x5847, 0x5848, 0x5849, 0x584a, 0x584b, 0x584e, 0x584f, 0x5850,
+ 0x5852, 0x5853, 0x5855, 0x5856, 0x5857, 0x5859, 0x585a, 0x585b,
+ 0x585c, 0x585d, 0x585f, 0x5860, 0x5861, 0x5862, 0x5863, 0x5864,
+ 0x5866, 0x5867, 0x5868, 0x5869, 0x586a, 0x586d, 0x586e, 0x586f,
+ 0x5870, 0x5871, 0x5872, 0x5873, 0x5874, 0x5875, 0x5876, 0x5877,
+ 0x5878, 0x5879, 0x587a, 0x587b, 0x587c, 0x587d, 0x587f, 0x5882,
+ 0x5884, 0x5886, 0x5887, 0x5888, 0x588a, 0x588b, 0x588c, 0x588d,
+ 0x588e, 0x588f, 0x5890, 0x5891, 0x5894, 0x5895, 0x5896, 0x5897,
+ 0x5898, 0x589b, 0x589c, 0x589d, 0x58a0, 0x58a1, 0x58a2, 0x58a3,
+ 0x58a4, 0x58a5, 0x58a6, 0x58a7, 0x58aa, 0x58ab, 0x58ac, 0x58ad,
+ 0x58ae, 0x58af, 0x58b0, 0x58b1, 0x58b2, 0x58b3, 0x58b4, 0x58b5,
+ 0x58b6, 0x58b7, 0x58b8, 0x58b9, 0x58ba, 0x58bb, 0x58bd, 0x58be,
+ 0x58bf, 0x58c0, 0x58c2, 0x58c3, 0x58c4, 0x58c6, 0x58c7, 0x58c8,
+ 0x58c9, 0x58ca, 0x58cb, 0x58cc, 0x58cd, 0x58ce, 0x58cf, 0x58d0,
+ 0x58d2, 0x58d3, 0x58d4, 0x58d6, 0x58d7, 0x58d8, 0x58d9, 0x58da,
+ 0x58db, 0x58dc, 0x58dd, 0x58de, 0x58df, 0x58e0, 0x58e1, 0x58e2,
+ 0x58e3, 0x58e5, 0x58e6, 0x58e7, 0x58e8, 0x58e9, 0x58ea, 0x58ed,
+ 0x58ef, 0x58f1, 0x58f2, 0x58f4, 0x58f5, 0x58f7, 0x58f8, 0x58fa,
+ 0x58fb, 0x58fc, 0x58fd, 0x58fe, 0x58ff, 0x5900, 0x5901, 0x5903,
+ 0x5905, 0x5906, 0x5908, 0x5909, 0x590a, 0x590b, 0x590c, 0x590e,
+ 0x5910, 0x5911, 0x5912, 0x5913, 0x5917, 0x5918, 0x591b, 0x591d,
+ 0x591e, 0x5920, 0x5921, 0x5922, 0x5923, 0x5926, 0x5928, 0x592c,
+ 0x5930, 0x5932, 0x5933, 0x5935, 0x5936, 0x593b,
+ /* 0x8a */
+ 0x593d, 0x593e, 0x593f, 0x5940, 0x5943, 0x5945, 0x5946, 0x594a,
+ 0x594c, 0x594d, 0x5950, 0x5952, 0x5953, 0x5959, 0x595b, 0x595c,
+ 0x595d, 0x595e, 0x595f, 0x5961, 0x5963, 0x5964, 0x5966, 0x5967,
+ 0x5968, 0x5969, 0x596a, 0x596b, 0x596c, 0x596d, 0x596e, 0x596f,
+ 0x5970, 0x5971, 0x5972, 0x5975, 0x5977, 0x597a, 0x597b, 0x597c,
+ 0x597e, 0x597f, 0x5980, 0x5985, 0x5989, 0x598b, 0x598c, 0x598e,
+ 0x598f, 0x5990, 0x5991, 0x5994, 0x5995, 0x5998, 0x599a, 0x599b,
+ 0x599c, 0x599d, 0x599f, 0x59a0, 0x59a1, 0x59a2, 0x59a6, 0x59a7,
+ 0x59ac, 0x59ad, 0x59b0, 0x59b1, 0x59b3, 0x59b4, 0x59b5, 0x59b6,
+ 0x59b7, 0x59b8, 0x59ba, 0x59bc, 0x59bd, 0x59bf, 0x59c0, 0x59c1,
+ 0x59c2, 0x59c3, 0x59c4, 0x59c5, 0x59c7, 0x59c8, 0x59c9, 0x59cc,
+ 0x59cd, 0x59ce, 0x59cf, 0x59d5, 0x59d6, 0x59d9, 0x59db, 0x59de,
+ 0x59df, 0x59e0, 0x59e1, 0x59e2, 0x59e4, 0x59e6, 0x59e7, 0x59e9,
+ 0x59ea, 0x59eb, 0x59ed, 0x59ee, 0x59ef, 0x59f0, 0x59f1, 0x59f2,
+ 0x59f3, 0x59f4, 0x59f5, 0x59f6, 0x59f7, 0x59f8, 0x59fa, 0x59fc,
+ 0x59fd, 0x59fe, 0x5a00, 0x5a02, 0x5a0a, 0x5a0b, 0x5a0d, 0x5a0e,
+ 0x5a0f, 0x5a10, 0x5a12, 0x5a14, 0x5a15, 0x5a16, 0x5a17, 0x5a19,
+ 0x5a1a, 0x5a1b, 0x5a1d, 0x5a1e, 0x5a21, 0x5a22, 0x5a24, 0x5a26,
+ 0x5a27, 0x5a28, 0x5a2a, 0x5a2b, 0x5a2c, 0x5a2d, 0x5a2e, 0x5a2f,
+ 0x5a30, 0x5a33, 0x5a35, 0x5a37, 0x5a38, 0x5a39, 0x5a3a, 0x5a3b,
+ 0x5a3d, 0x5a3e, 0x5a3f, 0x5a41, 0x5a42, 0x5a43, 0x5a44, 0x5a45,
+ 0x5a47, 0x5a48, 0x5a4b, 0x5a4c, 0x5a4d, 0x5a4e, 0x5a4f, 0x5a50,
+ 0x5a51, 0x5a52, 0x5a53, 0x5a54, 0x5a56, 0x5a57, 0x5a58, 0x5a59,
+ 0x5a5b, 0x5a5c, 0x5a5d, 0x5a5e, 0x5a5f, 0x5a60,
+ /* 0x8b */
+ 0x5a61, 0x5a63, 0x5a64, 0x5a65, 0x5a66, 0x5a68, 0x5a69, 0x5a6b,
+ 0x5a6c, 0x5a6d, 0x5a6e, 0x5a6f, 0x5a70, 0x5a71, 0x5a72, 0x5a73,
+ 0x5a78, 0x5a79, 0x5a7b, 0x5a7c, 0x5a7d, 0x5a7e, 0x5a80, 0x5a81,
+ 0x5a82, 0x5a83, 0x5a84, 0x5a85, 0x5a86, 0x5a87, 0x5a88, 0x5a89,
+ 0x5a8a, 0x5a8b, 0x5a8c, 0x5a8d, 0x5a8e, 0x5a8f, 0x5a90, 0x5a91,
+ 0x5a93, 0x5a94, 0x5a95, 0x5a96, 0x5a97, 0x5a98, 0x5a99, 0x5a9c,
+ 0x5a9d, 0x5a9e, 0x5a9f, 0x5aa0, 0x5aa1, 0x5aa2, 0x5aa3, 0x5aa4,
+ 0x5aa5, 0x5aa6, 0x5aa7, 0x5aa8, 0x5aa9, 0x5aab, 0x5aac, 0x5aad,
+ 0x5aae, 0x5aaf, 0x5ab0, 0x5ab1, 0x5ab4, 0x5ab6, 0x5ab7, 0x5ab9,
+ 0x5aba, 0x5abb, 0x5abc, 0x5abd, 0x5abf, 0x5ac0, 0x5ac3, 0x5ac4,
+ 0x5ac5, 0x5ac6, 0x5ac7, 0x5ac8, 0x5aca, 0x5acb, 0x5acd, 0x5ace,
+ 0x5acf, 0x5ad0, 0x5ad1, 0x5ad3, 0x5ad5, 0x5ad7, 0x5ad9, 0x5ada,
+ 0x5adb, 0x5add, 0x5ade, 0x5adf, 0x5ae2, 0x5ae4, 0x5ae5, 0x5ae7,
+ 0x5ae8, 0x5aea, 0x5aec, 0x5aed, 0x5aee, 0x5aef, 0x5af0, 0x5af2,
+ 0x5af3, 0x5af4, 0x5af5, 0x5af6, 0x5af7, 0x5af8, 0x5af9, 0x5afa,
+ 0x5afb, 0x5afc, 0x5afd, 0x5afe, 0x5aff, 0x5b00, 0x5b01, 0x5b02,
+ 0x5b03, 0x5b04, 0x5b05, 0x5b06, 0x5b07, 0x5b08, 0x5b0a, 0x5b0b,
+ 0x5b0c, 0x5b0d, 0x5b0e, 0x5b0f, 0x5b10, 0x5b11, 0x5b12, 0x5b13,
+ 0x5b14, 0x5b15, 0x5b18, 0x5b19, 0x5b1a, 0x5b1b, 0x5b1c, 0x5b1d,
+ 0x5b1e, 0x5b1f, 0x5b20, 0x5b21, 0x5b22, 0x5b23, 0x5b24, 0x5b25,
+ 0x5b26, 0x5b27, 0x5b28, 0x5b29, 0x5b2a, 0x5b2b, 0x5b2c, 0x5b2d,
+ 0x5b2e, 0x5b2f, 0x5b30, 0x5b31, 0x5b33, 0x5b35, 0x5b36, 0x5b38,
+ 0x5b39, 0x5b3a, 0x5b3b, 0x5b3c, 0x5b3d, 0x5b3e, 0x5b3f, 0x5b41,
+ 0x5b42, 0x5b43, 0x5b44, 0x5b45, 0x5b46, 0x5b47,
+ /* 0x8c */
+ 0x5b48, 0x5b49, 0x5b4a, 0x5b4b, 0x5b4c, 0x5b4d, 0x5b4e, 0x5b4f,
+ 0x5b52, 0x5b56, 0x5b5e, 0x5b60, 0x5b61, 0x5b67, 0x5b68, 0x5b6b,
+ 0x5b6d, 0x5b6e, 0x5b6f, 0x5b72, 0x5b74, 0x5b76, 0x5b77, 0x5b78,
+ 0x5b79, 0x5b7b, 0x5b7c, 0x5b7e, 0x5b7f, 0x5b82, 0x5b86, 0x5b8a,
+ 0x5b8d, 0x5b8e, 0x5b90, 0x5b91, 0x5b92, 0x5b94, 0x5b96, 0x5b9f,
+ 0x5ba7, 0x5ba8, 0x5ba9, 0x5bac, 0x5bad, 0x5bae, 0x5baf, 0x5bb1,
+ 0x5bb2, 0x5bb7, 0x5bba, 0x5bbb, 0x5bbc, 0x5bc0, 0x5bc1, 0x5bc3,
+ 0x5bc8, 0x5bc9, 0x5bca, 0x5bcb, 0x5bcd, 0x5bce, 0x5bcf, 0x5bd1,
+ 0x5bd4, 0x5bd5, 0x5bd6, 0x5bd7, 0x5bd8, 0x5bd9, 0x5bda, 0x5bdb,
+ 0x5bdc, 0x5be0, 0x5be2, 0x5be3, 0x5be6, 0x5be7, 0x5be9, 0x5bea,
+ 0x5beb, 0x5bec, 0x5bed, 0x5bef, 0x5bf1, 0x5bf2, 0x5bf3, 0x5bf4,
+ 0x5bf5, 0x5bf6, 0x5bf7, 0x5bfd, 0x5bfe, 0x5c00, 0x5c02, 0x5c03,
+ 0x5c05, 0x5c07, 0x5c08, 0x5c0b, 0x5c0c, 0x5c0d, 0x5c0e, 0x5c10,
+ 0x5c12, 0x5c13, 0x5c17, 0x5c19, 0x5c1b, 0x5c1e, 0x5c1f, 0x5c20,
+ 0x5c21, 0x5c23, 0x5c26, 0x5c28, 0x5c29, 0x5c2a, 0x5c2b, 0x5c2d,
+ 0x5c2e, 0x5c2f, 0x5c30, 0x5c32, 0x5c33, 0x5c35, 0x5c36, 0x5c37,
+ 0x5c43, 0x5c44, 0x5c46, 0x5c47, 0x5c4c, 0x5c4d, 0x5c52, 0x5c53,
+ 0x5c54, 0x5c56, 0x5c57, 0x5c58, 0x5c5a, 0x5c5b, 0x5c5c, 0x5c5d,
+ 0x5c5f, 0x5c62, 0x5c64, 0x5c67, 0x5c68, 0x5c69, 0x5c6a, 0x5c6b,
+ 0x5c6c, 0x5c6d, 0x5c70, 0x5c72, 0x5c73, 0x5c74, 0x5c75, 0x5c76,
+ 0x5c77, 0x5c78, 0x5c7b, 0x5c7c, 0x5c7d, 0x5c7e, 0x5c80, 0x5c83,
+ 0x5c84, 0x5c85, 0x5c86, 0x5c87, 0x5c89, 0x5c8a, 0x5c8b, 0x5c8e,
+ 0x5c8f, 0x5c92, 0x5c93, 0x5c95, 0x5c9d, 0x5c9e, 0x5c9f, 0x5ca0,
+ 0x5ca1, 0x5ca4, 0x5ca5, 0x5ca6, 0x5ca7, 0x5ca8,
+ /* 0x8d */
+ 0x5caa, 0x5cae, 0x5caf, 0x5cb0, 0x5cb2, 0x5cb4, 0x5cb6, 0x5cb9,
+ 0x5cba, 0x5cbb, 0x5cbc, 0x5cbe, 0x5cc0, 0x5cc2, 0x5cc3, 0x5cc5,
+ 0x5cc6, 0x5cc7, 0x5cc8, 0x5cc9, 0x5cca, 0x5ccc, 0x5ccd, 0x5cce,
+ 0x5ccf, 0x5cd0, 0x5cd1, 0x5cd3, 0x5cd4, 0x5cd5, 0x5cd6, 0x5cd7,
+ 0x5cd8, 0x5cda, 0x5cdb, 0x5cdc, 0x5cdd, 0x5cde, 0x5cdf, 0x5ce0,
+ 0x5ce2, 0x5ce3, 0x5ce7, 0x5ce9, 0x5ceb, 0x5cec, 0x5cee, 0x5cef,
+ 0x5cf1, 0x5cf2, 0x5cf3, 0x5cf4, 0x5cf5, 0x5cf6, 0x5cf7, 0x5cf8,
+ 0x5cf9, 0x5cfa, 0x5cfc, 0x5cfd, 0x5cfe, 0x5cff, 0x5d00, 0x5d01,
+ 0x5d04, 0x5d05, 0x5d08, 0x5d09, 0x5d0a, 0x5d0b, 0x5d0c, 0x5d0d,
+ 0x5d0f, 0x5d10, 0x5d11, 0x5d12, 0x5d13, 0x5d15, 0x5d17, 0x5d18,
+ 0x5d19, 0x5d1a, 0x5d1c, 0x5d1d, 0x5d1f, 0x5d20, 0x5d21, 0x5d22,
+ 0x5d23, 0x5d25, 0x5d28, 0x5d2a, 0x5d2b, 0x5d2c, 0x5d2f, 0x5d30,
+ 0x5d31, 0x5d32, 0x5d33, 0x5d35, 0x5d36, 0x5d37, 0x5d38, 0x5d39,
+ 0x5d3a, 0x5d3b, 0x5d3c, 0x5d3f, 0x5d40, 0x5d41, 0x5d42, 0x5d43,
+ 0x5d44, 0x5d45, 0x5d46, 0x5d48, 0x5d49, 0x5d4d, 0x5d4e, 0x5d4f,
+ 0x5d50, 0x5d51, 0x5d52, 0x5d53, 0x5d54, 0x5d55, 0x5d56, 0x5d57,
+ 0x5d59, 0x5d5a, 0x5d5c, 0x5d5e, 0x5d5f, 0x5d60, 0x5d61, 0x5d62,
+ 0x5d63, 0x5d64, 0x5d65, 0x5d66, 0x5d67, 0x5d68, 0x5d6a, 0x5d6d,
+ 0x5d6e, 0x5d70, 0x5d71, 0x5d72, 0x5d73, 0x5d75, 0x5d76, 0x5d77,
+ 0x5d78, 0x5d79, 0x5d7a, 0x5d7b, 0x5d7c, 0x5d7d, 0x5d7e, 0x5d7f,
+ 0x5d80, 0x5d81, 0x5d83, 0x5d84, 0x5d85, 0x5d86, 0x5d87, 0x5d88,
+ 0x5d89, 0x5d8a, 0x5d8b, 0x5d8c, 0x5d8d, 0x5d8e, 0x5d8f, 0x5d90,
+ 0x5d91, 0x5d92, 0x5d93, 0x5d94, 0x5d95, 0x5d96, 0x5d97, 0x5d98,
+ 0x5d9a, 0x5d9b, 0x5d9c, 0x5d9e, 0x5d9f, 0x5da0,
+ /* 0x8e */
+ 0x5da1, 0x5da2, 0x5da3, 0x5da4, 0x5da5, 0x5da6, 0x5da7, 0x5da8,
+ 0x5da9, 0x5daa, 0x5dab, 0x5dac, 0x5dad, 0x5dae, 0x5daf, 0x5db0,
+ 0x5db1, 0x5db2, 0x5db3, 0x5db4, 0x5db5, 0x5db6, 0x5db8, 0x5db9,
+ 0x5dba, 0x5dbb, 0x5dbc, 0x5dbd, 0x5dbe, 0x5dbf, 0x5dc0, 0x5dc1,
+ 0x5dc2, 0x5dc3, 0x5dc4, 0x5dc6, 0x5dc7, 0x5dc8, 0x5dc9, 0x5dca,
+ 0x5dcb, 0x5dcc, 0x5dce, 0x5dcf, 0x5dd0, 0x5dd1, 0x5dd2, 0x5dd3,
+ 0x5dd4, 0x5dd5, 0x5dd6, 0x5dd7, 0x5dd8, 0x5dd9, 0x5dda, 0x5ddc,
+ 0x5ddf, 0x5de0, 0x5de3, 0x5de4, 0x5dea, 0x5dec, 0x5ded, 0x5df0,
+ 0x5df5, 0x5df6, 0x5df8, 0x5df9, 0x5dfa, 0x5dfb, 0x5dfc, 0x5dff,
+ 0x5e00, 0x5e04, 0x5e07, 0x5e09, 0x5e0a, 0x5e0b, 0x5e0d, 0x5e0e,
+ 0x5e12, 0x5e13, 0x5e17, 0x5e1e, 0x5e1f, 0x5e20, 0x5e21, 0x5e22,
+ 0x5e23, 0x5e24, 0x5e25, 0x5e28, 0x5e29, 0x5e2a, 0x5e2b, 0x5e2c,
+ 0x5e2f, 0x5e30, 0x5e32, 0x5e33, 0x5e34, 0x5e35, 0x5e36, 0x5e39,
+ 0x5e3a, 0x5e3e, 0x5e3f, 0x5e40, 0x5e41, 0x5e43, 0x5e46, 0x5e47,
+ 0x5e48, 0x5e49, 0x5e4a, 0x5e4b, 0x5e4d, 0x5e4e, 0x5e4f, 0x5e50,
+ 0x5e51, 0x5e52, 0x5e53, 0x5e56, 0x5e57, 0x5e58, 0x5e59, 0x5e5a,
+ 0x5e5c, 0x5e5d, 0x5e5f, 0x5e60, 0x5e63, 0x5e64, 0x5e65, 0x5e66,
+ 0x5e67, 0x5e68, 0x5e69, 0x5e6a, 0x5e6b, 0x5e6c, 0x5e6d, 0x5e6e,
+ 0x5e6f, 0x5e70, 0x5e71, 0x5e75, 0x5e77, 0x5e79, 0x5e7e, 0x5e81,
+ 0x5e82, 0x5e83, 0x5e85, 0x5e88, 0x5e89, 0x5e8c, 0x5e8d, 0x5e8e,
+ 0x5e92, 0x5e98, 0x5e9b, 0x5e9d, 0x5ea1, 0x5ea2, 0x5ea3, 0x5ea4,
+ 0x5ea8, 0x5ea9, 0x5eaa, 0x5eab, 0x5eac, 0x5eae, 0x5eaf, 0x5eb0,
+ 0x5eb1, 0x5eb2, 0x5eb4, 0x5eba, 0x5ebb, 0x5ebc, 0x5ebd, 0x5ebf,
+ 0x5ec0, 0x5ec1, 0x5ec2, 0x5ec3, 0x5ec4, 0x5ec5,
+ /* 0x8f */
+ 0x5ec6, 0x5ec7, 0x5ec8, 0x5ecb, 0x5ecc, 0x5ecd, 0x5ece, 0x5ecf,
+ 0x5ed0, 0x5ed4, 0x5ed5, 0x5ed7, 0x5ed8, 0x5ed9, 0x5eda, 0x5edc,
+ 0x5edd, 0x5ede, 0x5edf, 0x5ee0, 0x5ee1, 0x5ee2, 0x5ee3, 0x5ee4,
+ 0x5ee5, 0x5ee6, 0x5ee7, 0x5ee9, 0x5eeb, 0x5eec, 0x5eed, 0x5eee,
+ 0x5eef, 0x5ef0, 0x5ef1, 0x5ef2, 0x5ef3, 0x5ef5, 0x5ef8, 0x5ef9,
+ 0x5efb, 0x5efc, 0x5efd, 0x5f05, 0x5f06, 0x5f07, 0x5f09, 0x5f0c,
+ 0x5f0d, 0x5f0e, 0x5f10, 0x5f12, 0x5f14, 0x5f16, 0x5f19, 0x5f1a,
+ 0x5f1c, 0x5f1d, 0x5f1e, 0x5f21, 0x5f22, 0x5f23, 0x5f24, 0x5f28,
+ 0x5f2b, 0x5f2c, 0x5f2e, 0x5f30, 0x5f32, 0x5f33, 0x5f34, 0x5f35,
+ 0x5f36, 0x5f37, 0x5f38, 0x5f3b, 0x5f3d, 0x5f3e, 0x5f3f, 0x5f41,
+ 0x5f42, 0x5f43, 0x5f44, 0x5f45, 0x5f46, 0x5f47, 0x5f48, 0x5f49,
+ 0x5f4a, 0x5f4b, 0x5f4c, 0x5f4d, 0x5f4e, 0x5f4f, 0x5f51, 0x5f54,
+ 0x5f59, 0x5f5a, 0x5f5b, 0x5f5c, 0x5f5e, 0x5f5f, 0x5f60, 0x5f63,
+ 0x5f65, 0x5f67, 0x5f68, 0x5f6b, 0x5f6e, 0x5f6f, 0x5f72, 0x5f74,
+ 0x5f75, 0x5f76, 0x5f78, 0x5f7a, 0x5f7d, 0x5f7e, 0x5f7f, 0x5f83,
+ 0x5f86, 0x5f8d, 0x5f8e, 0x5f8f, 0x5f91, 0x5f93, 0x5f94, 0x5f96,
+ 0x5f9a, 0x5f9b, 0x5f9d, 0x5f9e, 0x5f9f, 0x5fa0, 0x5fa2, 0x5fa3,
+ 0x5fa4, 0x5fa5, 0x5fa6, 0x5fa7, 0x5fa9, 0x5fab, 0x5fac, 0x5faf,
+ 0x5fb0, 0x5fb1, 0x5fb2, 0x5fb3, 0x5fb4, 0x5fb6, 0x5fb8, 0x5fb9,
+ 0x5fba, 0x5fbb, 0x5fbe, 0x5fbf, 0x5fc0, 0x5fc1, 0x5fc2, 0x5fc7,
+ 0x5fc8, 0x5fca, 0x5fcb, 0x5fce, 0x5fd3, 0x5fd4, 0x5fd5, 0x5fda,
+ 0x5fdb, 0x5fdc, 0x5fde, 0x5fdf, 0x5fe2, 0x5fe3, 0x5fe5, 0x5fe6,
+ 0x5fe8, 0x5fe9, 0x5fec, 0x5fef, 0x5ff0, 0x5ff2, 0x5ff3, 0x5ff4,
+ 0x5ff6, 0x5ff7, 0x5ff9, 0x5ffa, 0x5ffc, 0x6007,
+ /* 0x90 */
+ 0x6008, 0x6009, 0x600b, 0x600c, 0x6010, 0x6011, 0x6013, 0x6017,
+ 0x6018, 0x601a, 0x601e, 0x601f, 0x6022, 0x6023, 0x6024, 0x602c,
+ 0x602d, 0x602e, 0x6030, 0x6031, 0x6032, 0x6033, 0x6034, 0x6036,
+ 0x6037, 0x6038, 0x6039, 0x603a, 0x603d, 0x603e, 0x6040, 0x6044,
+ 0x6045, 0x6046, 0x6047, 0x6048, 0x6049, 0x604a, 0x604c, 0x604e,
+ 0x604f, 0x6051, 0x6053, 0x6054, 0x6056, 0x6057, 0x6058, 0x605b,
+ 0x605c, 0x605e, 0x605f, 0x6060, 0x6061, 0x6065, 0x6066, 0x606e,
+ 0x6071, 0x6072, 0x6074, 0x6075, 0x6077, 0x607e, 0x6080, 0x6081,
+ 0x6082, 0x6085, 0x6086, 0x6087, 0x6088, 0x608a, 0x608b, 0x608e,
+ 0x608f, 0x6090, 0x6091, 0x6093, 0x6095, 0x6097, 0x6098, 0x6099,
+ 0x609c, 0x609e, 0x60a1, 0x60a2, 0x60a4, 0x60a5, 0x60a7, 0x60a9,
+ 0x60aa, 0x60ae, 0x60b0, 0x60b3, 0x60b5, 0x60b6, 0x60b7, 0x60b9,
+ 0x60ba, 0x60bd, 0x60be, 0x60bf, 0x60c0, 0x60c1, 0x60c2, 0x60c3,
+ 0x60c4, 0x60c7, 0x60c8, 0x60c9, 0x60cc, 0x60cd, 0x60ce, 0x60cf,
+ 0x60d0, 0x60d2, 0x60d3, 0x60d4, 0x60d6, 0x60d7, 0x60d9, 0x60db,
+ 0x60de, 0x60e1, 0x60e2, 0x60e3, 0x60e4, 0x60e5, 0x60ea, 0x60f1,
+ 0x60f2, 0x60f5, 0x60f7, 0x60f8, 0x60fb, 0x60fc, 0x60fd, 0x60fe,
+ 0x60ff, 0x6102, 0x6103, 0x6104, 0x6105, 0x6107, 0x610a, 0x610b,
+ 0x610c, 0x6110, 0x6111, 0x6112, 0x6113, 0x6114, 0x6116, 0x6117,
+ 0x6118, 0x6119, 0x611b, 0x611c, 0x611d, 0x611e, 0x6121, 0x6122,
+ 0x6125, 0x6128, 0x6129, 0x612a, 0x612c, 0x612d, 0x612e, 0x612f,
+ 0x6130, 0x6131, 0x6132, 0x6133, 0x6134, 0x6135, 0x6136, 0x6137,
+ 0x6138, 0x6139, 0x613a, 0x613b, 0x613c, 0x613d, 0x613e, 0x6140,
+ 0x6141, 0x6142, 0x6143, 0x6144, 0x6145, 0x6146,
+ /* 0x91 */
+ 0x6147, 0x6149, 0x614b, 0x614d, 0x614f, 0x6150, 0x6152, 0x6153,
+ 0x6154, 0x6156, 0x6157, 0x6158, 0x6159, 0x615a, 0x615b, 0x615c,
+ 0x615e, 0x615f, 0x6160, 0x6161, 0x6163, 0x6164, 0x6165, 0x6166,
+ 0x6169, 0x616a, 0x616b, 0x616c, 0x616d, 0x616e, 0x616f, 0x6171,
+ 0x6172, 0x6173, 0x6174, 0x6176, 0x6178, 0x6179, 0x617a, 0x617b,
+ 0x617c, 0x617d, 0x617e, 0x617f, 0x6180, 0x6181, 0x6182, 0x6183,
+ 0x6184, 0x6185, 0x6186, 0x6187, 0x6188, 0x6189, 0x618a, 0x618c,
+ 0x618d, 0x618f, 0x6190, 0x6191, 0x6192, 0x6193, 0x6195, 0x6196,
+ 0x6197, 0x6198, 0x6199, 0x619a, 0x619b, 0x619c, 0x619e, 0x619f,
+ 0x61a0, 0x61a1, 0x61a2, 0x61a3, 0x61a4, 0x61a5, 0x61a6, 0x61aa,
+ 0x61ab, 0x61ad, 0x61ae, 0x61af, 0x61b0, 0x61b1, 0x61b2, 0x61b3,
+ 0x61b4, 0x61b5, 0x61b6, 0x61b8, 0x61b9, 0x61ba, 0x61bb, 0x61bc,
+ 0x61bd, 0x61bf, 0x61c0, 0x61c1, 0x61c3, 0x61c4, 0x61c5, 0x61c6,
+ 0x61c7, 0x61c9, 0x61cc, 0x61cd, 0x61ce, 0x61cf, 0x61d0, 0x61d3,
+ 0x61d5, 0x61d6, 0x61d7, 0x61d8, 0x61d9, 0x61da, 0x61db, 0x61dc,
+ 0x61dd, 0x61de, 0x61df, 0x61e0, 0x61e1, 0x61e2, 0x61e3, 0x61e4,
+ 0x61e5, 0x61e7, 0x61e8, 0x61e9, 0x61ea, 0x61eb, 0x61ec, 0x61ed,
+ 0x61ee, 0x61ef, 0x61f0, 0x61f1, 0x61f2, 0x61f3, 0x61f4, 0x61f6,
+ 0x61f7, 0x61f8, 0x61f9, 0x61fa, 0x61fb, 0x61fc, 0x61fd, 0x61fe,
+ 0x6200, 0x6201, 0x6202, 0x6203, 0x6204, 0x6205, 0x6207, 0x6209,
+ 0x6213, 0x6214, 0x6219, 0x621c, 0x621d, 0x621e, 0x6220, 0x6223,
+ 0x6226, 0x6227, 0x6228, 0x6229, 0x622b, 0x622d, 0x622f, 0x6230,
+ 0x6231, 0x6232, 0x6235, 0x6236, 0x6238, 0x6239, 0x623a, 0x623b,
+ 0x623c, 0x6242, 0x6244, 0x6245, 0x6246, 0x624a,
+ /* 0x92 */
+ 0x624f, 0x6250, 0x6255, 0x6256, 0x6257, 0x6259, 0x625a, 0x625c,
+ 0x625d, 0x625e, 0x625f, 0x6260, 0x6261, 0x6262, 0x6264, 0x6265,
+ 0x6268, 0x6271, 0x6272, 0x6274, 0x6275, 0x6277, 0x6278, 0x627a,
+ 0x627b, 0x627d, 0x6281, 0x6282, 0x6283, 0x6285, 0x6286, 0x6287,
+ 0x6288, 0x628b, 0x628c, 0x628d, 0x628e, 0x628f, 0x6290, 0x6294,
+ 0x6299, 0x629c, 0x629d, 0x629e, 0x62a3, 0x62a6, 0x62a7, 0x62a9,
+ 0x62aa, 0x62ad, 0x62ae, 0x62af, 0x62b0, 0x62b2, 0x62b3, 0x62b4,
+ 0x62b6, 0x62b7, 0x62b8, 0x62ba, 0x62be, 0x62c0, 0x62c1, 0x62c3,
+ 0x62cb, 0x62cf, 0x62d1, 0x62d5, 0x62dd, 0x62de, 0x62e0, 0x62e1,
+ 0x62e4, 0x62ea, 0x62eb, 0x62f0, 0x62f2, 0x62f5, 0x62f8, 0x62f9,
+ 0x62fa, 0x62fb, 0x6300, 0x6303, 0x6304, 0x6305, 0x6306, 0x630a,
+ 0x630b, 0x630c, 0x630d, 0x630f, 0x6310, 0x6312, 0x6313, 0x6314,
+ 0x6315, 0x6317, 0x6318, 0x6319, 0x631c, 0x6326, 0x6327, 0x6329,
+ 0x632c, 0x632d, 0x632e, 0x6330, 0x6331, 0x6333, 0x6334, 0x6335,
+ 0x6336, 0x6337, 0x6338, 0x633b, 0x633c, 0x633e, 0x633f, 0x6340,
+ 0x6341, 0x6344, 0x6347, 0x6348, 0x634a, 0x6351, 0x6352, 0x6353,
+ 0x6354, 0x6356, 0x6357, 0x6358, 0x6359, 0x635a, 0x635b, 0x635c,
+ 0x635d, 0x6360, 0x6364, 0x6365, 0x6366, 0x6368, 0x636a, 0x636b,
+ 0x636c, 0x636f, 0x6370, 0x6372, 0x6373, 0x6374, 0x6375, 0x6378,
+ 0x6379, 0x637c, 0x637d, 0x637e, 0x637f, 0x6381, 0x6383, 0x6384,
+ 0x6385, 0x6386, 0x638b, 0x638d, 0x6391, 0x6393, 0x6394, 0x6395,
+ 0x6397, 0x6399, 0x639a, 0x639b, 0x639c, 0x639d, 0x639e, 0x639f,
+ 0x63a1, 0x63a4, 0x63a6, 0x63ab, 0x63af, 0x63b1, 0x63b2, 0x63b5,
+ 0x63b6, 0x63b9, 0x63bb, 0x63bd, 0x63bf, 0x63c0,
+ /* 0x93 */
+ 0x63c1, 0x63c2, 0x63c3, 0x63c5, 0x63c7, 0x63c8, 0x63ca, 0x63cb,
+ 0x63cc, 0x63d1, 0x63d3, 0x63d4, 0x63d5, 0x63d7, 0x63d8, 0x63d9,
+ 0x63da, 0x63db, 0x63dc, 0x63dd, 0x63df, 0x63e2, 0x63e4, 0x63e5,
+ 0x63e6, 0x63e7, 0x63e8, 0x63eb, 0x63ec, 0x63ee, 0x63ef, 0x63f0,
+ 0x63f1, 0x63f3, 0x63f5, 0x63f7, 0x63f9, 0x63fa, 0x63fb, 0x63fc,
+ 0x63fe, 0x6403, 0x6404, 0x6406, 0x6407, 0x6408, 0x6409, 0x640a,
+ 0x640d, 0x640e, 0x6411, 0x6412, 0x6415, 0x6416, 0x6417, 0x6418,
+ 0x6419, 0x641a, 0x641d, 0x641f, 0x6422, 0x6423, 0x6424, 0x6425,
+ 0x6427, 0x6428, 0x6429, 0x642b, 0x642e, 0x642f, 0x6430, 0x6431,
+ 0x6432, 0x6433, 0x6435, 0x6436, 0x6437, 0x6438, 0x6439, 0x643b,
+ 0x643c, 0x643e, 0x6440, 0x6442, 0x6443, 0x6449, 0x644b, 0x644c,
+ 0x644d, 0x644e, 0x644f, 0x6450, 0x6451, 0x6453, 0x6455, 0x6456,
+ 0x6457, 0x6459, 0x645a, 0x645b, 0x645c, 0x645d, 0x645f, 0x6460,
+ 0x6461, 0x6462, 0x6463, 0x6464, 0x6465, 0x6466, 0x6468, 0x646a,
+ 0x646b, 0x646c, 0x646e, 0x646f, 0x6470, 0x6471, 0x6472, 0x6473,
+ 0x6474, 0x6475, 0x6476, 0x6477, 0x647b, 0x647c, 0x647d, 0x647e,
+ 0x647f, 0x6480, 0x6481, 0x6483, 0x6486, 0x6488, 0x6489, 0x648a,
+ 0x648b, 0x648c, 0x648d, 0x648e, 0x648f, 0x6490, 0x6493, 0x6494,
+ 0x6497, 0x6498, 0x649a, 0x649b, 0x649c, 0x649d, 0x649f, 0x64a0,
+ 0x64a1, 0x64a2, 0x64a3, 0x64a5, 0x64a6, 0x64a7, 0x64a8, 0x64aa,
+ 0x64ab, 0x64af, 0x64b1, 0x64b2, 0x64b3, 0x64b4, 0x64b6, 0x64b9,
+ 0x64bb, 0x64bd, 0x64be, 0x64bf, 0x64c1, 0x64c3, 0x64c4, 0x64c6,
+ 0x64c7, 0x64c8, 0x64c9, 0x64ca, 0x64cb, 0x64cc, 0x64cf, 0x64d1,
+ 0x64d3, 0x64d4, 0x64d5, 0x64d6, 0x64d9, 0x64da,
+ /* 0x94 */
+ 0x64db, 0x64dc, 0x64dd, 0x64df, 0x64e0, 0x64e1, 0x64e3, 0x64e5,
+ 0x64e7, 0x64e8, 0x64e9, 0x64ea, 0x64eb, 0x64ec, 0x64ed, 0x64ee,
+ 0x64ef, 0x64f0, 0x64f1, 0x64f2, 0x64f3, 0x64f4, 0x64f5, 0x64f6,
+ 0x64f7, 0x64f8, 0x64f9, 0x64fa, 0x64fb, 0x64fc, 0x64fd, 0x64fe,
+ 0x64ff, 0x6501, 0x6502, 0x6503, 0x6504, 0x6505, 0x6506, 0x6507,
+ 0x6508, 0x650a, 0x650b, 0x650c, 0x650d, 0x650e, 0x650f, 0x6510,
+ 0x6511, 0x6513, 0x6514, 0x6515, 0x6516, 0x6517, 0x6519, 0x651a,
+ 0x651b, 0x651c, 0x651d, 0x651e, 0x651f, 0x6520, 0x6521, 0x6522,
+ 0x6523, 0x6524, 0x6526, 0x6527, 0x6528, 0x6529, 0x652a, 0x652c,
+ 0x652d, 0x6530, 0x6531, 0x6532, 0x6533, 0x6537, 0x653a, 0x653c,
+ 0x653d, 0x6540, 0x6541, 0x6542, 0x6543, 0x6544, 0x6546, 0x6547,
+ 0x654a, 0x654b, 0x654d, 0x654e, 0x6550, 0x6552, 0x6553, 0x6554,
+ 0x6557, 0x6558, 0x655a, 0x655c, 0x655f, 0x6560, 0x6561, 0x6564,
+ 0x6565, 0x6567, 0x6568, 0x6569, 0x656a, 0x656d, 0x656e, 0x656f,
+ 0x6571, 0x6573, 0x6575, 0x6576, 0x6578, 0x6579, 0x657a, 0x657b,
+ 0x657c, 0x657d, 0x657e, 0x657f, 0x6580, 0x6581, 0x6582, 0x6583,
+ 0x6584, 0x6585, 0x6586, 0x6588, 0x6589, 0x658a, 0x658d, 0x658e,
+ 0x658f, 0x6592, 0x6594, 0x6595, 0x6596, 0x6598, 0x659a, 0x659d,
+ 0x659e, 0x65a0, 0x65a2, 0x65a3, 0x65a6, 0x65a8, 0x65aa, 0x65ac,
+ 0x65ae, 0x65b1, 0x65b2, 0x65b3, 0x65b4, 0x65b5, 0x65b6, 0x65b7,
+ 0x65b8, 0x65ba, 0x65bb, 0x65be, 0x65bf, 0x65c0, 0x65c2, 0x65c7,
+ 0x65c8, 0x65c9, 0x65ca, 0x65cd, 0x65d0, 0x65d1, 0x65d3, 0x65d4,
+ 0x65d5, 0x65d8, 0x65d9, 0x65da, 0x65db, 0x65dc, 0x65dd, 0x65de,
+ 0x65df, 0x65e1, 0x65e3, 0x65e4, 0x65ea, 0x65eb,
+ /* 0x95 */
+ 0x65f2, 0x65f3, 0x65f4, 0x65f5, 0x65f8, 0x65f9, 0x65fb, 0x65fc,
+ 0x65fd, 0x65fe, 0x65ff, 0x6601, 0x6604, 0x6605, 0x6607, 0x6608,
+ 0x6609, 0x660b, 0x660d, 0x6610, 0x6611, 0x6612, 0x6616, 0x6617,
+ 0x6618, 0x661a, 0x661b, 0x661c, 0x661e, 0x6621, 0x6622, 0x6623,
+ 0x6624, 0x6626, 0x6629, 0x662a, 0x662b, 0x662c, 0x662e, 0x6630,
+ 0x6632, 0x6633, 0x6637, 0x6638, 0x6639, 0x663a, 0x663b, 0x663d,
+ 0x663f, 0x6640, 0x6642, 0x6644, 0x6645, 0x6646, 0x6647, 0x6648,
+ 0x6649, 0x664a, 0x664d, 0x664e, 0x6650, 0x6651, 0x6658, 0x6659,
+ 0x665b, 0x665c, 0x665d, 0x665e, 0x6660, 0x6662, 0x6663, 0x6665,
+ 0x6667, 0x6669, 0x666a, 0x666b, 0x666c, 0x666d, 0x6671, 0x6672,
+ 0x6673, 0x6675, 0x6678, 0x6679, 0x667b, 0x667c, 0x667d, 0x667f,
+ 0x6680, 0x6681, 0x6683, 0x6685, 0x6686, 0x6688, 0x6689, 0x668a,
+ 0x668b, 0x668d, 0x668e, 0x668f, 0x6690, 0x6692, 0x6693, 0x6694,
+ 0x6695, 0x6698, 0x6699, 0x669a, 0x669b, 0x669c, 0x669e, 0x669f,
+ 0x66a0, 0x66a1, 0x66a2, 0x66a3, 0x66a4, 0x66a5, 0x66a6, 0x66a9,
+ 0x66aa, 0x66ab, 0x66ac, 0x66ad, 0x66af, 0x66b0, 0x66b1, 0x66b2,
+ 0x66b3, 0x66b5, 0x66b6, 0x66b7, 0x66b8, 0x66ba, 0x66bb, 0x66bc,
+ 0x66bd, 0x66bf, 0x66c0, 0x66c1, 0x66c2, 0x66c3, 0x66c4, 0x66c5,
+ 0x66c6, 0x66c7, 0x66c8, 0x66c9, 0x66ca, 0x66cb, 0x66cc, 0x66cd,
+ 0x66ce, 0x66cf, 0x66d0, 0x66d1, 0x66d2, 0x66d3, 0x66d4, 0x66d5,
+ 0x66d6, 0x66d7, 0x66d8, 0x66da, 0x66de, 0x66df, 0x66e0, 0x66e1,
+ 0x66e2, 0x66e3, 0x66e4, 0x66e5, 0x66e7, 0x66e8, 0x66ea, 0x66eb,
+ 0x66ec, 0x66ed, 0x66ee, 0x66ef, 0x66f1, 0x66f5, 0x66f6, 0x66f8,
+ 0x66fa, 0x66fb, 0x66fd, 0x6701, 0x6702, 0x6703,
+ /* 0x96 */
+ 0x6704, 0x6705, 0x6706, 0x6707, 0x670c, 0x670e, 0x670f, 0x6711,
+ 0x6712, 0x6713, 0x6716, 0x6718, 0x6719, 0x671a, 0x671c, 0x671e,
+ 0x6720, 0x6721, 0x6722, 0x6723, 0x6724, 0x6725, 0x6727, 0x6729,
+ 0x672e, 0x6730, 0x6732, 0x6733, 0x6736, 0x6737, 0x6738, 0x6739,
+ 0x673b, 0x673c, 0x673e, 0x673f, 0x6741, 0x6744, 0x6745, 0x6747,
+ 0x674a, 0x674b, 0x674d, 0x6752, 0x6754, 0x6755, 0x6757, 0x6758,
+ 0x6759, 0x675a, 0x675b, 0x675d, 0x6762, 0x6763, 0x6764, 0x6766,
+ 0x6767, 0x676b, 0x676c, 0x676e, 0x6771, 0x6774, 0x6776, 0x6778,
+ 0x6779, 0x677a, 0x677b, 0x677d, 0x6780, 0x6782, 0x6783, 0x6785,
+ 0x6786, 0x6788, 0x678a, 0x678c, 0x678d, 0x678e, 0x678f, 0x6791,
+ 0x6792, 0x6793, 0x6794, 0x6796, 0x6799, 0x679b, 0x679f, 0x67a0,
+ 0x67a1, 0x67a4, 0x67a6, 0x67a9, 0x67ac, 0x67ae, 0x67b1, 0x67b2,
+ 0x67b4, 0x67b9, 0x67ba, 0x67bb, 0x67bc, 0x67bd, 0x67be, 0x67bf,
+ 0x67c0, 0x67c2, 0x67c5, 0x67c6, 0x67c7, 0x67c8, 0x67c9, 0x67ca,
+ 0x67cb, 0x67cc, 0x67cd, 0x67ce, 0x67d5, 0x67d6, 0x67d7, 0x67db,
+ 0x67df, 0x67e1, 0x67e3, 0x67e4, 0x67e6, 0x67e7, 0x67e8, 0x67ea,
+ 0x67eb, 0x67ed, 0x67ee, 0x67f2, 0x67f5, 0x67f6, 0x67f7, 0x67f8,
+ 0x67f9, 0x67fa, 0x67fb, 0x67fc, 0x67fe, 0x6801, 0x6802, 0x6803,
+ 0x6804, 0x6806, 0x680d, 0x6810, 0x6812, 0x6814, 0x6815, 0x6818,
+ 0x6819, 0x681a, 0x681b, 0x681c, 0x681e, 0x681f, 0x6820, 0x6822,
+ 0x6823, 0x6824, 0x6825, 0x6826, 0x6827, 0x6828, 0x682b, 0x682c,
+ 0x682d, 0x682e, 0x682f, 0x6830, 0x6831, 0x6834, 0x6835, 0x6836,
+ 0x683a, 0x683b, 0x683f, 0x6847, 0x684b, 0x684d, 0x684f, 0x6852,
+ 0x6856, 0x6857, 0x6858, 0x6859, 0x685a, 0x685b,
+ /* 0x97 */
+ 0x685c, 0x685d, 0x685e, 0x685f, 0x686a, 0x686c, 0x686d, 0x686e,
+ 0x686f, 0x6870, 0x6871, 0x6872, 0x6873, 0x6875, 0x6878, 0x6879,
+ 0x687a, 0x687b, 0x687c, 0x687d, 0x687e, 0x687f, 0x6880, 0x6882,
+ 0x6884, 0x6887, 0x6888, 0x6889, 0x688a, 0x688b, 0x688c, 0x688d,
+ 0x688e, 0x6890, 0x6891, 0x6892, 0x6894, 0x6895, 0x6896, 0x6898,
+ 0x6899, 0x689a, 0x689b, 0x689c, 0x689d, 0x689e, 0x689f, 0x68a0,
+ 0x68a1, 0x68a3, 0x68a4, 0x68a5, 0x68a9, 0x68aa, 0x68ab, 0x68ac,
+ 0x68ae, 0x68b1, 0x68b2, 0x68b4, 0x68b6, 0x68b7, 0x68b8, 0x68b9,
+ 0x68ba, 0x68bb, 0x68bc, 0x68bd, 0x68be, 0x68bf, 0x68c1, 0x68c3,
+ 0x68c4, 0x68c5, 0x68c6, 0x68c7, 0x68c8, 0x68ca, 0x68cc, 0x68ce,
+ 0x68cf, 0x68d0, 0x68d1, 0x68d3, 0x68d4, 0x68d6, 0x68d7, 0x68d9,
+ 0x68db, 0x68dc, 0x68dd, 0x68de, 0x68df, 0x68e1, 0x68e2, 0x68e4,
+ 0x68e5, 0x68e6, 0x68e7, 0x68e8, 0x68e9, 0x68ea, 0x68eb, 0x68ec,
+ 0x68ed, 0x68ef, 0x68f2, 0x68f3, 0x68f4, 0x68f6, 0x68f7, 0x68f8,
+ 0x68fb, 0x68fd, 0x68fe, 0x68ff, 0x6900, 0x6902, 0x6903, 0x6904,
+ 0x6906, 0x6907, 0x6908, 0x6909, 0x690a, 0x690c, 0x690f, 0x6911,
+ 0x6913, 0x6914, 0x6915, 0x6916, 0x6917, 0x6918, 0x6919, 0x691a,
+ 0x691b, 0x691c, 0x691d, 0x691e, 0x6921, 0x6922, 0x6923, 0x6925,
+ 0x6926, 0x6927, 0x6928, 0x6929, 0x692a, 0x692b, 0x692c, 0x692e,
+ 0x692f, 0x6931, 0x6932, 0x6933, 0x6935, 0x6936, 0x6937, 0x6938,
+ 0x693a, 0x693b, 0x693c, 0x693e, 0x6940, 0x6941, 0x6943, 0x6944,
+ 0x6945, 0x6946, 0x6947, 0x6948, 0x6949, 0x694a, 0x694b, 0x694c,
+ 0x694d, 0x694e, 0x694f, 0x6950, 0x6951, 0x6952, 0x6953, 0x6955,
+ 0x6956, 0x6958, 0x6959, 0x695b, 0x695c, 0x695f,
+ /* 0x98 */
+ 0x6961, 0x6962, 0x6964, 0x6965, 0x6967, 0x6968, 0x6969, 0x696a,
+ 0x696c, 0x696d, 0x696f, 0x6970, 0x6972, 0x6973, 0x6974, 0x6975,
+ 0x6976, 0x697a, 0x697b, 0x697d, 0x697e, 0x697f, 0x6981, 0x6983,
+ 0x6985, 0x698a, 0x698b, 0x698c, 0x698e, 0x698f, 0x6990, 0x6991,
+ 0x6992, 0x6993, 0x6996, 0x6997, 0x6999, 0x699a, 0x699d, 0x699e,
+ 0x699f, 0x69a0, 0x69a1, 0x69a2, 0x69a3, 0x69a4, 0x69a5, 0x69a6,
+ 0x69a9, 0x69aa, 0x69ac, 0x69ae, 0x69af, 0x69b0, 0x69b2, 0x69b3,
+ 0x69b5, 0x69b6, 0x69b8, 0x69b9, 0x69ba, 0x69bc, 0x69bd, 0x69be,
+ 0x69bf, 0x69c0, 0x69c2, 0x69c3, 0x69c4, 0x69c5, 0x69c6, 0x69c7,
+ 0x69c8, 0x69c9, 0x69cb, 0x69cd, 0x69cf, 0x69d1, 0x69d2, 0x69d3,
+ 0x69d5, 0x69d6, 0x69d7, 0x69d8, 0x69d9, 0x69da, 0x69dc, 0x69dd,
+ 0x69de, 0x69e1, 0x69e2, 0x69e3, 0x69e4, 0x69e5, 0x69e6, 0x69e7,
+ 0x69e8, 0x69e9, 0x69ea, 0x69eb, 0x69ec, 0x69ee, 0x69ef, 0x69f0,
+ 0x69f1, 0x69f3, 0x69f4, 0x69f5, 0x69f6, 0x69f7, 0x69f8, 0x69f9,
+ 0x69fa, 0x69fb, 0x69fc, 0x69fe, 0x6a00, 0x6a01, 0x6a02, 0x6a03,
+ 0x6a04, 0x6a05, 0x6a06, 0x6a07, 0x6a08, 0x6a09, 0x6a0b, 0x6a0c,
+ 0x6a0d, 0x6a0e, 0x6a0f, 0x6a10, 0x6a11, 0x6a12, 0x6a13, 0x6a14,
+ 0x6a15, 0x6a16, 0x6a19, 0x6a1a, 0x6a1b, 0x6a1c, 0x6a1d, 0x6a1e,
+ 0x6a20, 0x6a22, 0x6a23, 0x6a24, 0x6a25, 0x6a26, 0x6a27, 0x6a29,
+ 0x6a2b, 0x6a2c, 0x6a2d, 0x6a2e, 0x6a30, 0x6a32, 0x6a33, 0x6a34,
+ 0x6a36, 0x6a37, 0x6a38, 0x6a39, 0x6a3a, 0x6a3b, 0x6a3c, 0x6a3f,
+ 0x6a40, 0x6a41, 0x6a42, 0x6a43, 0x6a45, 0x6a46, 0x6a48, 0x6a49,
+ 0x6a4a, 0x6a4b, 0x6a4c, 0x6a4d, 0x6a4e, 0x6a4f, 0x6a51, 0x6a52,
+ 0x6a53, 0x6a54, 0x6a55, 0x6a56, 0x6a57, 0x6a5a,
+ /* 0x99 */
+ 0x6a5c, 0x6a5d, 0x6a5e, 0x6a5f, 0x6a60, 0x6a62, 0x6a63, 0x6a64,
+ 0x6a66, 0x6a67, 0x6a68, 0x6a69, 0x6a6a, 0x6a6b, 0x6a6c, 0x6a6d,
+ 0x6a6e, 0x6a6f, 0x6a70, 0x6a72, 0x6a73, 0x6a74, 0x6a75, 0x6a76,
+ 0x6a77, 0x6a78, 0x6a7a, 0x6a7b, 0x6a7d, 0x6a7e, 0x6a7f, 0x6a81,
+ 0x6a82, 0x6a83, 0x6a85, 0x6a86, 0x6a87, 0x6a88, 0x6a89, 0x6a8a,
+ 0x6a8b, 0x6a8c, 0x6a8d, 0x6a8f, 0x6a92, 0x6a93, 0x6a94, 0x6a95,
+ 0x6a96, 0x6a98, 0x6a99, 0x6a9a, 0x6a9b, 0x6a9c, 0x6a9d, 0x6a9e,
+ 0x6a9f, 0x6aa1, 0x6aa2, 0x6aa3, 0x6aa4, 0x6aa5, 0x6aa6, 0x6aa7,
+ 0x6aa8, 0x6aaa, 0x6aad, 0x6aae, 0x6aaf, 0x6ab0, 0x6ab1, 0x6ab2,
+ 0x6ab3, 0x6ab4, 0x6ab5, 0x6ab6, 0x6ab7, 0x6ab8, 0x6ab9, 0x6aba,
+ 0x6abb, 0x6abc, 0x6abd, 0x6abe, 0x6abf, 0x6ac0, 0x6ac1, 0x6ac2,
+ 0x6ac3, 0x6ac4, 0x6ac5, 0x6ac6, 0x6ac7, 0x6ac8, 0x6ac9, 0x6aca,
+ 0x6acb, 0x6acc, 0x6acd, 0x6ace, 0x6acf, 0x6ad0, 0x6ad1, 0x6ad2,
+ 0x6ad3, 0x6ad4, 0x6ad5, 0x6ad6, 0x6ad7, 0x6ad8, 0x6ad9, 0x6ada,
+ 0x6adb, 0x6adc, 0x6add, 0x6ade, 0x6adf, 0x6ae0, 0x6ae1, 0x6ae2,
+ 0x6ae3, 0x6ae4, 0x6ae5, 0x6ae6, 0x6ae7, 0x6ae8, 0x6ae9, 0x6aea,
+ 0x6aeb, 0x6aec, 0x6aed, 0x6aee, 0x6aef, 0x6af0, 0x6af1, 0x6af2,
+ 0x6af3, 0x6af4, 0x6af5, 0x6af6, 0x6af7, 0x6af8, 0x6af9, 0x6afa,
+ 0x6afb, 0x6afc, 0x6afd, 0x6afe, 0x6aff, 0x6b00, 0x6b01, 0x6b02,
+ 0x6b03, 0x6b04, 0x6b05, 0x6b06, 0x6b07, 0x6b08, 0x6b09, 0x6b0a,
+ 0x6b0b, 0x6b0c, 0x6b0d, 0x6b0e, 0x6b0f, 0x6b10, 0x6b11, 0x6b12,
+ 0x6b13, 0x6b14, 0x6b15, 0x6b16, 0x6b17, 0x6b18, 0x6b19, 0x6b1a,
+ 0x6b1b, 0x6b1c, 0x6b1d, 0x6b1e, 0x6b1f, 0x6b25, 0x6b26, 0x6b28,
+ 0x6b29, 0x6b2a, 0x6b2b, 0x6b2c, 0x6b2d, 0x6b2e,
+ /* 0x9a */
+ 0x6b2f, 0x6b30, 0x6b31, 0x6b33, 0x6b34, 0x6b35, 0x6b36, 0x6b38,
+ 0x6b3b, 0x6b3c, 0x6b3d, 0x6b3f, 0x6b40, 0x6b41, 0x6b42, 0x6b44,
+ 0x6b45, 0x6b48, 0x6b4a, 0x6b4b, 0x6b4d, 0x6b4e, 0x6b4f, 0x6b50,
+ 0x6b51, 0x6b52, 0x6b53, 0x6b54, 0x6b55, 0x6b56, 0x6b57, 0x6b58,
+ 0x6b5a, 0x6b5b, 0x6b5c, 0x6b5d, 0x6b5e, 0x6b5f, 0x6b60, 0x6b61,
+ 0x6b68, 0x6b69, 0x6b6b, 0x6b6c, 0x6b6d, 0x6b6e, 0x6b6f, 0x6b70,
+ 0x6b71, 0x6b72, 0x6b73, 0x6b74, 0x6b75, 0x6b76, 0x6b77, 0x6b78,
+ 0x6b7a, 0x6b7d, 0x6b7e, 0x6b7f, 0x6b80, 0x6b85, 0x6b88, 0x6b8c,
+ 0x6b8e, 0x6b8f, 0x6b90, 0x6b91, 0x6b94, 0x6b95, 0x6b97, 0x6b98,
+ 0x6b99, 0x6b9c, 0x6b9d, 0x6b9e, 0x6b9f, 0x6ba0, 0x6ba2, 0x6ba3,
+ 0x6ba4, 0x6ba5, 0x6ba6, 0x6ba7, 0x6ba8, 0x6ba9, 0x6bab, 0x6bac,
+ 0x6bad, 0x6bae, 0x6baf, 0x6bb0, 0x6bb1, 0x6bb2, 0x6bb6, 0x6bb8,
+ 0x6bb9, 0x6bba, 0x6bbb, 0x6bbc, 0x6bbd, 0x6bbe, 0x6bc0, 0x6bc3,
+ 0x6bc4, 0x6bc6, 0x6bc7, 0x6bc8, 0x6bc9, 0x6bca, 0x6bcc, 0x6bce,
+ 0x6bd0, 0x6bd1, 0x6bd8, 0x6bda, 0x6bdc, 0x6bdd, 0x6bde, 0x6bdf,
+ 0x6be0, 0x6be2, 0x6be3, 0x6be4, 0x6be5, 0x6be6, 0x6be7, 0x6be8,
+ 0x6be9, 0x6bec, 0x6bed, 0x6bee, 0x6bf0, 0x6bf1, 0x6bf2, 0x6bf4,
+ 0x6bf6, 0x6bf7, 0x6bf8, 0x6bfa, 0x6bfb, 0x6bfc, 0x6bfe, 0x6bff,
+ 0x6c00, 0x6c01, 0x6c02, 0x6c03, 0x6c04, 0x6c08, 0x6c09, 0x6c0a,
+ 0x6c0b, 0x6c0c, 0x6c0e, 0x6c12, 0x6c17, 0x6c1c, 0x6c1d, 0x6c1e,
+ 0x6c20, 0x6c23, 0x6c25, 0x6c2b, 0x6c2c, 0x6c2d, 0x6c31, 0x6c33,
+ 0x6c36, 0x6c37, 0x6c39, 0x6c3a, 0x6c3b, 0x6c3c, 0x6c3e, 0x6c3f,
+ 0x6c43, 0x6c44, 0x6c45, 0x6c48, 0x6c4b, 0x6c4c, 0x6c4d, 0x6c4e,
+ 0x6c4f, 0x6c51, 0x6c52, 0x6c53, 0x6c56, 0x6c58,
+ /* 0x9b */
+ 0x6c59, 0x6c5a, 0x6c62, 0x6c63, 0x6c65, 0x6c66, 0x6c67, 0x6c6b,
+ 0x6c6c, 0x6c6d, 0x6c6e, 0x6c6f, 0x6c71, 0x6c73, 0x6c75, 0x6c77,
+ 0x6c78, 0x6c7a, 0x6c7b, 0x6c7c, 0x6c7f, 0x6c80, 0x6c84, 0x6c87,
+ 0x6c8a, 0x6c8b, 0x6c8d, 0x6c8e, 0x6c91, 0x6c92, 0x6c95, 0x6c96,
+ 0x6c97, 0x6c98, 0x6c9a, 0x6c9c, 0x6c9d, 0x6c9e, 0x6ca0, 0x6ca2,
+ 0x6ca8, 0x6cac, 0x6caf, 0x6cb0, 0x6cb4, 0x6cb5, 0x6cb6, 0x6cb7,
+ 0x6cba, 0x6cc0, 0x6cc1, 0x6cc2, 0x6cc3, 0x6cc6, 0x6cc7, 0x6cc8,
+ 0x6ccb, 0x6ccd, 0x6cce, 0x6ccf, 0x6cd1, 0x6cd2, 0x6cd8, 0x6cd9,
+ 0x6cda, 0x6cdc, 0x6cdd, 0x6cdf, 0x6ce4, 0x6ce6, 0x6ce7, 0x6ce9,
+ 0x6cec, 0x6ced, 0x6cf2, 0x6cf4, 0x6cf9, 0x6cff, 0x6d00, 0x6d02,
+ 0x6d03, 0x6d05, 0x6d06, 0x6d08, 0x6d09, 0x6d0a, 0x6d0d, 0x6d0f,
+ 0x6d10, 0x6d11, 0x6d13, 0x6d14, 0x6d15, 0x6d16, 0x6d18, 0x6d1c,
+ 0x6d1d, 0x6d1f, 0x6d20, 0x6d21, 0x6d22, 0x6d23, 0x6d24, 0x6d26,
+ 0x6d28, 0x6d29, 0x6d2c, 0x6d2d, 0x6d2f, 0x6d30, 0x6d34, 0x6d36,
+ 0x6d37, 0x6d38, 0x6d3a, 0x6d3f, 0x6d40, 0x6d42, 0x6d44, 0x6d49,
+ 0x6d4c, 0x6d50, 0x6d55, 0x6d56, 0x6d57, 0x6d58, 0x6d5b, 0x6d5d,
+ 0x6d5f, 0x6d61, 0x6d62, 0x6d64, 0x6d65, 0x6d67, 0x6d68, 0x6d6b,
+ 0x6d6c, 0x6d6d, 0x6d70, 0x6d71, 0x6d72, 0x6d73, 0x6d75, 0x6d76,
+ 0x6d79, 0x6d7a, 0x6d7b, 0x6d7d, 0x6d7e, 0x6d7f, 0x6d80, 0x6d81,
+ 0x6d83, 0x6d84, 0x6d86, 0x6d87, 0x6d8a, 0x6d8b, 0x6d8d, 0x6d8f,
+ 0x6d90, 0x6d92, 0x6d96, 0x6d97, 0x6d98, 0x6d99, 0x6d9a, 0x6d9c,
+ 0x6da2, 0x6da5, 0x6dac, 0x6dad, 0x6db0, 0x6db1, 0x6db3, 0x6db4,
+ 0x6db6, 0x6db7, 0x6db9, 0x6dba, 0x6dbb, 0x6dbc, 0x6dbd, 0x6dbe,
+ 0x6dc1, 0x6dc2, 0x6dc3, 0x6dc8, 0x6dc9, 0x6dca,
+ /* 0x9c */
+ 0x6dcd, 0x6dce, 0x6dcf, 0x6dd0, 0x6dd2, 0x6dd3, 0x6dd4, 0x6dd5,
+ 0x6dd7, 0x6dda, 0x6ddb, 0x6ddc, 0x6ddf, 0x6de2, 0x6de3, 0x6de5,
+ 0x6de7, 0x6de8, 0x6de9, 0x6dea, 0x6ded, 0x6def, 0x6df0, 0x6df2,
+ 0x6df4, 0x6df5, 0x6df6, 0x6df8, 0x6dfa, 0x6dfd, 0x6dfe, 0x6dff,
+ 0x6e00, 0x6e01, 0x6e02, 0x6e03, 0x6e04, 0x6e06, 0x6e07, 0x6e08,
+ 0x6e09, 0x6e0b, 0x6e0f, 0x6e12, 0x6e13, 0x6e15, 0x6e18, 0x6e19,
+ 0x6e1b, 0x6e1c, 0x6e1e, 0x6e1f, 0x6e22, 0x6e26, 0x6e27, 0x6e28,
+ 0x6e2a, 0x6e2c, 0x6e2e, 0x6e30, 0x6e31, 0x6e33, 0x6e35, 0x6e36,
+ 0x6e37, 0x6e39, 0x6e3b, 0x6e3c, 0x6e3d, 0x6e3e, 0x6e3f, 0x6e40,
+ 0x6e41, 0x6e42, 0x6e45, 0x6e46, 0x6e47, 0x6e48, 0x6e49, 0x6e4a,
+ 0x6e4b, 0x6e4c, 0x6e4f, 0x6e50, 0x6e51, 0x6e52, 0x6e55, 0x6e57,
+ 0x6e59, 0x6e5a, 0x6e5c, 0x6e5d, 0x6e5e, 0x6e60, 0x6e61, 0x6e62,
+ 0x6e63, 0x6e64, 0x6e65, 0x6e66, 0x6e67, 0x6e68, 0x6e69, 0x6e6a,
+ 0x6e6c, 0x6e6d, 0x6e6f, 0x6e70, 0x6e71, 0x6e72, 0x6e73, 0x6e74,
+ 0x6e75, 0x6e76, 0x6e77, 0x6e78, 0x6e79, 0x6e7a, 0x6e7b, 0x6e7c,
+ 0x6e7d, 0x6e80, 0x6e81, 0x6e82, 0x6e84, 0x6e87, 0x6e88, 0x6e8a,
+ 0x6e8b, 0x6e8c, 0x6e8d, 0x6e8e, 0x6e91, 0x6e92, 0x6e93, 0x6e94,
+ 0x6e95, 0x6e96, 0x6e97, 0x6e99, 0x6e9a, 0x6e9b, 0x6e9d, 0x6e9e,
+ 0x6ea0, 0x6ea1, 0x6ea3, 0x6ea4, 0x6ea6, 0x6ea8, 0x6ea9, 0x6eab,
+ 0x6eac, 0x6ead, 0x6eae, 0x6eb0, 0x6eb3, 0x6eb5, 0x6eb8, 0x6eb9,
+ 0x6ebc, 0x6ebe, 0x6ebf, 0x6ec0, 0x6ec3, 0x6ec4, 0x6ec5, 0x6ec6,
+ 0x6ec8, 0x6ec9, 0x6eca, 0x6ecc, 0x6ecd, 0x6ece, 0x6ed0, 0x6ed2,
+ 0x6ed6, 0x6ed8, 0x6ed9, 0x6edb, 0x6edc, 0x6edd, 0x6ee3, 0x6ee7,
+ 0x6eea, 0x6eeb, 0x6eec, 0x6eed, 0x6eee, 0x6eef,
+ /* 0x9d */
+ 0x6ef0, 0x6ef1, 0x6ef2, 0x6ef3, 0x6ef5, 0x6ef6, 0x6ef7, 0x6ef8,
+ 0x6efa, 0x6efb, 0x6efc, 0x6efd, 0x6efe, 0x6eff, 0x6f00, 0x6f01,
+ 0x6f03, 0x6f04, 0x6f05, 0x6f07, 0x6f08, 0x6f0a, 0x6f0b, 0x6f0c,
+ 0x6f0d, 0x6f0e, 0x6f10, 0x6f11, 0x6f12, 0x6f16, 0x6f17, 0x6f18,
+ 0x6f19, 0x6f1a, 0x6f1b, 0x6f1c, 0x6f1d, 0x6f1e, 0x6f1f, 0x6f21,
+ 0x6f22, 0x6f23, 0x6f25, 0x6f26, 0x6f27, 0x6f28, 0x6f2c, 0x6f2e,
+ 0x6f30, 0x6f32, 0x6f34, 0x6f35, 0x6f37, 0x6f38, 0x6f39, 0x6f3a,
+ 0x6f3b, 0x6f3c, 0x6f3d, 0x6f3f, 0x6f40, 0x6f41, 0x6f42, 0x6f43,
+ 0x6f44, 0x6f45, 0x6f48, 0x6f49, 0x6f4a, 0x6f4c, 0x6f4e, 0x6f4f,
+ 0x6f50, 0x6f51, 0x6f52, 0x6f53, 0x6f54, 0x6f55, 0x6f56, 0x6f57,
+ 0x6f59, 0x6f5a, 0x6f5b, 0x6f5d, 0x6f5f, 0x6f60, 0x6f61, 0x6f63,
+ 0x6f64, 0x6f65, 0x6f67, 0x6f68, 0x6f69, 0x6f6a, 0x6f6b, 0x6f6c,
+ 0x6f6f, 0x6f70, 0x6f71, 0x6f73, 0x6f75, 0x6f76, 0x6f77, 0x6f79,
+ 0x6f7b, 0x6f7d, 0x6f7e, 0x6f7f, 0x6f80, 0x6f81, 0x6f82, 0x6f83,
+ 0x6f85, 0x6f86, 0x6f87, 0x6f8a, 0x6f8b, 0x6f8f, 0x6f90, 0x6f91,
+ 0x6f92, 0x6f93, 0x6f94, 0x6f95, 0x6f96, 0x6f97, 0x6f98, 0x6f99,
+ 0x6f9a, 0x6f9b, 0x6f9d, 0x6f9e, 0x6f9f, 0x6fa0, 0x6fa2, 0x6fa3,
+ 0x6fa4, 0x6fa5, 0x6fa6, 0x6fa8, 0x6fa9, 0x6faa, 0x6fab, 0x6fac,
+ 0x6fad, 0x6fae, 0x6faf, 0x6fb0, 0x6fb1, 0x6fb2, 0x6fb4, 0x6fb5,
+ 0x6fb7, 0x6fb8, 0x6fba, 0x6fbb, 0x6fbc, 0x6fbd, 0x6fbe, 0x6fbf,
+ 0x6fc1, 0x6fc3, 0x6fc4, 0x6fc5, 0x6fc6, 0x6fc7, 0x6fc8, 0x6fca,
+ 0x6fcb, 0x6fcc, 0x6fcd, 0x6fce, 0x6fcf, 0x6fd0, 0x6fd3, 0x6fd4,
+ 0x6fd5, 0x6fd6, 0x6fd7, 0x6fd8, 0x6fd9, 0x6fda, 0x6fdb, 0x6fdc,
+ 0x6fdd, 0x6fdf, 0x6fe2, 0x6fe3, 0x6fe4, 0x6fe5,
+ /* 0x9e */
+ 0x6fe6, 0x6fe7, 0x6fe8, 0x6fe9, 0x6fea, 0x6feb, 0x6fec, 0x6fed,
+ 0x6ff0, 0x6ff1, 0x6ff2, 0x6ff3, 0x6ff4, 0x6ff5, 0x6ff6, 0x6ff7,
+ 0x6ff8, 0x6ff9, 0x6ffa, 0x6ffb, 0x6ffc, 0x6ffd, 0x6ffe, 0x6fff,
+ 0x7000, 0x7001, 0x7002, 0x7003, 0x7004, 0x7005, 0x7006, 0x7007,
+ 0x7008, 0x7009, 0x700a, 0x700b, 0x700c, 0x700d, 0x700e, 0x700f,
+ 0x7010, 0x7012, 0x7013, 0x7014, 0x7015, 0x7016, 0x7017, 0x7018,
+ 0x7019, 0x701c, 0x701d, 0x701e, 0x701f, 0x7020, 0x7021, 0x7022,
+ 0x7024, 0x7025, 0x7026, 0x7027, 0x7028, 0x7029, 0x702a, 0x702b,
+ 0x702c, 0x702d, 0x702e, 0x702f, 0x7030, 0x7031, 0x7032, 0x7033,
+ 0x7034, 0x7036, 0x7037, 0x7038, 0x703a, 0x703b, 0x703c, 0x703d,
+ 0x703e, 0x703f, 0x7040, 0x7041, 0x7042, 0x7043, 0x7044, 0x7045,
+ 0x7046, 0x7047, 0x7048, 0x7049, 0x704a, 0x704b, 0x704d, 0x704e,
+ 0x7050, 0x7051, 0x7052, 0x7053, 0x7054, 0x7055, 0x7056, 0x7057,
+ 0x7058, 0x7059, 0x705a, 0x705b, 0x705c, 0x705d, 0x705f, 0x7060,
+ 0x7061, 0x7062, 0x7063, 0x7064, 0x7065, 0x7066, 0x7067, 0x7068,
+ 0x7069, 0x706a, 0x706e, 0x7071, 0x7072, 0x7073, 0x7074, 0x7077,
+ 0x7079, 0x707a, 0x707b, 0x707d, 0x7081, 0x7082, 0x7083, 0x7084,
+ 0x7086, 0x7087, 0x7088, 0x708b, 0x708c, 0x708d, 0x708f, 0x7090,
+ 0x7091, 0x7093, 0x7097, 0x7098, 0x709a, 0x709b, 0x709e, 0x709f,
+ 0x70a0, 0x70a1, 0x70a2, 0x70a3, 0x70a4, 0x70a5, 0x70a6, 0x70a7,
+ 0x70a8, 0x70a9, 0x70aa, 0x70b0, 0x70b2, 0x70b4, 0x70b5, 0x70b6,
+ 0x70ba, 0x70be, 0x70bf, 0x70c4, 0x70c5, 0x70c6, 0x70c7, 0x70c9,
+ 0x70cb, 0x70cc, 0x70cd, 0x70ce, 0x70cf, 0x70d0, 0x70d1, 0x70d2,
+ 0x70d3, 0x70d4, 0x70d5, 0x70d6, 0x70d7, 0x70da,
+ /* 0x9f */
+ 0x70dc, 0x70dd, 0x70de, 0x70e0, 0x70e1, 0x70e2, 0x70e3, 0x70e5,
+ 0x70ea, 0x70ee, 0x70f0, 0x70f1, 0x70f2, 0x70f3, 0x70f4, 0x70f5,
+ 0x70f6, 0x70f8, 0x70fa, 0x70fb, 0x70fc, 0x70fe, 0x70ff, 0x7100,
+ 0x7101, 0x7102, 0x7103, 0x7104, 0x7105, 0x7106, 0x7107, 0x7108,
+ 0x710b, 0x710c, 0x710d, 0x710e, 0x710f, 0x7111, 0x7112, 0x7114,
+ 0x7117, 0x711b, 0x711c, 0x711d, 0x711e, 0x711f, 0x7120, 0x7121,
+ 0x7122, 0x7123, 0x7124, 0x7125, 0x7127, 0x7128, 0x7129, 0x712a,
+ 0x712b, 0x712c, 0x712d, 0x712e, 0x7132, 0x7133, 0x7134, 0x7135,
+ 0x7137, 0x7138, 0x7139, 0x713a, 0x713b, 0x713c, 0x713d, 0x713e,
+ 0x713f, 0x7140, 0x7141, 0x7142, 0x7143, 0x7144, 0x7146, 0x7147,
+ 0x7148, 0x7149, 0x714b, 0x714d, 0x714f, 0x7150, 0x7151, 0x7152,
+ 0x7153, 0x7154, 0x7155, 0x7156, 0x7157, 0x7158, 0x7159, 0x715a,
+ 0x715b, 0x715d, 0x715f, 0x7160, 0x7161, 0x7162, 0x7163, 0x7165,
+ 0x7169, 0x716a, 0x716b, 0x716c, 0x716d, 0x716f, 0x7170, 0x7171,
+ 0x7174, 0x7175, 0x7176, 0x7177, 0x7179, 0x717b, 0x717c, 0x717e,
+ 0x717f, 0x7180, 0x7181, 0x7182, 0x7183, 0x7185, 0x7186, 0x7187,
+ 0x7188, 0x7189, 0x718b, 0x718c, 0x718d, 0x718e, 0x7190, 0x7191,
+ 0x7192, 0x7193, 0x7195, 0x7196, 0x7197, 0x719a, 0x719b, 0x719c,
+ 0x719d, 0x719e, 0x71a1, 0x71a2, 0x71a3, 0x71a4, 0x71a5, 0x71a6,
+ 0x71a7, 0x71a9, 0x71aa, 0x71ab, 0x71ad, 0x71ae, 0x71af, 0x71b0,
+ 0x71b1, 0x71b2, 0x71b4, 0x71b6, 0x71b7, 0x71b8, 0x71ba, 0x71bb,
+ 0x71bc, 0x71bd, 0x71be, 0x71bf, 0x71c0, 0x71c1, 0x71c2, 0x71c4,
+ 0x71c5, 0x71c6, 0x71c7, 0x71c8, 0x71c9, 0x71ca, 0x71cb, 0x71cc,
+ 0x71cd, 0x71cf, 0x71d0, 0x71d1, 0x71d2, 0x71d3,
+ /* 0xa0 */
+ 0x71d6, 0x71d7, 0x71d8, 0x71d9, 0x71da, 0x71db, 0x71dc, 0x71dd,
+ 0x71de, 0x71df, 0x71e1, 0x71e2, 0x71e3, 0x71e4, 0x71e6, 0x71e8,
+ 0x71e9, 0x71ea, 0x71eb, 0x71ec, 0x71ed, 0x71ef, 0x71f0, 0x71f1,
+ 0x71f2, 0x71f3, 0x71f4, 0x71f5, 0x71f6, 0x71f7, 0x71f8, 0x71fa,
+ 0x71fb, 0x71fc, 0x71fd, 0x71fe, 0x71ff, 0x7200, 0x7201, 0x7202,
+ 0x7203, 0x7204, 0x7205, 0x7207, 0x7208, 0x7209, 0x720a, 0x720b,
+ 0x720c, 0x720d, 0x720e, 0x720f, 0x7210, 0x7211, 0x7212, 0x7213,
+ 0x7214, 0x7215, 0x7216, 0x7217, 0x7218, 0x7219, 0x721a, 0x721b,
+ 0x721c, 0x721e, 0x721f, 0x7220, 0x7221, 0x7222, 0x7223, 0x7224,
+ 0x7225, 0x7226, 0x7227, 0x7229, 0x722b, 0x722d, 0x722e, 0x722f,
+ 0x7232, 0x7233, 0x7234, 0x723a, 0x723c, 0x723e, 0x7240, 0x7241,
+ 0x7242, 0x7243, 0x7244, 0x7245, 0x7246, 0x7249, 0x724a, 0x724b,
+ 0x724e, 0x724f, 0x7250, 0x7251, 0x7253, 0x7254, 0x7255, 0x7257,
+ 0x7258, 0x725a, 0x725c, 0x725e, 0x7260, 0x7263, 0x7264, 0x7265,
+ 0x7268, 0x726a, 0x726b, 0x726c, 0x726d, 0x7270, 0x7271, 0x7273,
+ 0x7274, 0x7276, 0x7277, 0x7278, 0x727b, 0x727c, 0x727d, 0x7282,
+ 0x7283, 0x7285, 0x7286, 0x7287, 0x7288, 0x7289, 0x728c, 0x728e,
+ 0x7290, 0x7291, 0x7293, 0x7294, 0x7295, 0x7296, 0x7297, 0x7298,
+ 0x7299, 0x729a, 0x729b, 0x729c, 0x729d, 0x729e, 0x72a0, 0x72a1,
+ 0x72a2, 0x72a3, 0x72a4, 0x72a5, 0x72a6, 0x72a7, 0x72a8, 0x72a9,
+ 0x72aa, 0x72ab, 0x72ae, 0x72b1, 0x72b2, 0x72b3, 0x72b5, 0x72ba,
+ 0x72bb, 0x72bc, 0x72bd, 0x72be, 0x72bf, 0x72c0, 0x72c5, 0x72c6,
+ 0x72c7, 0x72c9, 0x72ca, 0x72cb, 0x72cc, 0x72cf, 0x72d1, 0x72d3,
+ 0x72d4, 0x72d5, 0x72d6, 0x72d8, 0x72da, 0x72db,
+ /* 0xa1 */
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0x3000, 0x3001, 0x3002, 0x00b7, 0x02c9, 0x02c7, 0x00a8, 0x3003,
+ 0x3005, 0x2014, 0xff5e, 0x2016, 0x2026, 0x2018, 0x2019, 0x201c,
+ 0x201d, 0x3014, 0x3015, 0x3008, 0x3009, 0x300a, 0x300b, 0x300c,
+ 0x300d, 0x300e, 0x300f, 0x3016, 0x3017, 0x3010, 0x3011, 0x00b1,
+ 0x00d7, 0x00f7, 0x2236, 0x2227, 0x2228, 0x2211, 0x220f, 0x222a,
+ 0x2229, 0x2208, 0x2237, 0x221a, 0x22a5, 0x2225, 0x2220, 0x2312,
+ 0x2299, 0x222b, 0x222e, 0x2261, 0x224c, 0x2248, 0x223d, 0x221d,
+ 0x2260, 0x226e, 0x226f, 0x2264, 0x2265, 0x221e, 0x2235, 0x2234,
+ 0x2642, 0x2640, 0x00b0, 0x2032, 0x2033, 0x2103, 0xff04, 0x00a4,
+ 0xffe0, 0xffe1, 0x2030, 0x00a7, 0x2116, 0x2606, 0x2605, 0x25cb,
+ 0x25cf, 0x25ce, 0x25c7, 0x25c6, 0x25a1, 0x25a0, 0x25b3, 0x25b2,
+ 0x203b, 0x2192, 0x2190, 0x2191, 0x2193, 0x3013,
+ /* 0xa2 */
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0x2170, 0x2171, 0x2172, 0x2173, 0x2174, 0x2175, 0x2176, 0x2177,
+ 0x2178, 0x2179, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0x2488, 0x2489, 0x248a, 0x248b, 0x248c, 0x248d, 0x248e, 0x248f,
+ 0x2490, 0x2491, 0x2492, 0x2493, 0x2494, 0x2495, 0x2496, 0x2497,
+ 0x2498, 0x2499, 0x249a, 0x249b, 0x2474, 0x2475, 0x2476, 0x2477,
+ 0x2478, 0x2479, 0x247a, 0x247b, 0x247c, 0x247d, 0x247e, 0x247f,
+ 0x2480, 0x2481, 0x2482, 0x2483, 0x2484, 0x2485, 0x2486, 0x2487,
+ 0x2460, 0x2461, 0x2462, 0x2463, 0x2464, 0x2465, 0x2466, 0x2467,
+ 0x2468, 0x2469, 0xfffd, 0xfffd, 0x3220, 0x3221, 0x3222, 0x3223,
+ 0x3224, 0x3225, 0x3226, 0x3227, 0x3228, 0x3229, 0xfffd, 0xfffd,
+ 0x2160, 0x2161, 0x2162, 0x2163, 0x2164, 0x2165, 0x2166, 0x2167,
+ 0x2168, 0x2169, 0x216a, 0x216b, 0xfffd, 0xfffd,
+ /* 0xa3 */
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xff01, 0xff02, 0xff03, 0xffe5, 0xff05, 0xff06, 0xff07, 0xff08,
+ 0xff09, 0xff0a, 0xff0b, 0xff0c, 0xff0d, 0xff0e, 0xff0f, 0xff10,
+ 0xff11, 0xff12, 0xff13, 0xff14, 0xff15, 0xff16, 0xff17, 0xff18,
+ 0xff19, 0xff1a, 0xff1b, 0xff1c, 0xff1d, 0xff1e, 0xff1f, 0xff20,
+ 0xff21, 0xff22, 0xff23, 0xff24, 0xff25, 0xff26, 0xff27, 0xff28,
+ 0xff29, 0xff2a, 0xff2b, 0xff2c, 0xff2d, 0xff2e, 0xff2f, 0xff30,
+ 0xff31, 0xff32, 0xff33, 0xff34, 0xff35, 0xff36, 0xff37, 0xff38,
+ 0xff39, 0xff3a, 0xff3b, 0xff3c, 0xff3d, 0xff3e, 0xff3f, 0xff40,
+ 0xff41, 0xff42, 0xff43, 0xff44, 0xff45, 0xff46, 0xff47, 0xff48,
+ 0xff49, 0xff4a, 0xff4b, 0xff4c, 0xff4d, 0xff4e, 0xff4f, 0xff50,
+ 0xff51, 0xff52, 0xff53, 0xff54, 0xff55, 0xff56, 0xff57, 0xff58,
+ 0xff59, 0xff5a, 0xff5b, 0xff5c, 0xff5d, 0xffe3,
+ /* 0xa4 */
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0x3041, 0x3042, 0x3043, 0x3044, 0x3045, 0x3046, 0x3047, 0x3048,
+ 0x3049, 0x304a, 0x304b, 0x304c, 0x304d, 0x304e, 0x304f, 0x3050,
+ 0x3051, 0x3052, 0x3053, 0x3054, 0x3055, 0x3056, 0x3057, 0x3058,
+ 0x3059, 0x305a, 0x305b, 0x305c, 0x305d, 0x305e, 0x305f, 0x3060,
+ 0x3061, 0x3062, 0x3063, 0x3064, 0x3065, 0x3066, 0x3067, 0x3068,
+ 0x3069, 0x306a, 0x306b, 0x306c, 0x306d, 0x306e, 0x306f, 0x3070,
+ 0x3071, 0x3072, 0x3073, 0x3074, 0x3075, 0x3076, 0x3077, 0x3078,
+ 0x3079, 0x307a, 0x307b, 0x307c, 0x307d, 0x307e, 0x307f, 0x3080,
+ 0x3081, 0x3082, 0x3083, 0x3084, 0x3085, 0x3086, 0x3087, 0x3088,
+ 0x3089, 0x308a, 0x308b, 0x308c, 0x308d, 0x308e, 0x308f, 0x3090,
+ 0x3091, 0x3092, 0x3093, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ /* 0xa5 */
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0x30a1, 0x30a2, 0x30a3, 0x30a4, 0x30a5, 0x30a6, 0x30a7, 0x30a8,
+ 0x30a9, 0x30aa, 0x30ab, 0x30ac, 0x30ad, 0x30ae, 0x30af, 0x30b0,
+ 0x30b1, 0x30b2, 0x30b3, 0x30b4, 0x30b5, 0x30b6, 0x30b7, 0x30b8,
+ 0x30b9, 0x30ba, 0x30bb, 0x30bc, 0x30bd, 0x30be, 0x30bf, 0x30c0,
+ 0x30c1, 0x30c2, 0x30c3, 0x30c4, 0x30c5, 0x30c6, 0x30c7, 0x30c8,
+ 0x30c9, 0x30ca, 0x30cb, 0x30cc, 0x30cd, 0x30ce, 0x30cf, 0x30d0,
+ 0x30d1, 0x30d2, 0x30d3, 0x30d4, 0x30d5, 0x30d6, 0x30d7, 0x30d8,
+ 0x30d9, 0x30da, 0x30db, 0x30dc, 0x30dd, 0x30de, 0x30df, 0x30e0,
+ 0x30e1, 0x30e2, 0x30e3, 0x30e4, 0x30e5, 0x30e6, 0x30e7, 0x30e8,
+ 0x30e9, 0x30ea, 0x30eb, 0x30ec, 0x30ed, 0x30ee, 0x30ef, 0x30f0,
+ 0x30f1, 0x30f2, 0x30f3, 0x30f4, 0x30f5, 0x30f6, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ /* 0xa6 */
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0x0391, 0x0392, 0x0393, 0x0394, 0x0395, 0x0396, 0x0397, 0x0398,
+ 0x0399, 0x039a, 0x039b, 0x039c, 0x039d, 0x039e, 0x039f, 0x03a0,
+ 0x03a1, 0x03a3, 0x03a4, 0x03a5, 0x03a6, 0x03a7, 0x03a8, 0x03a9,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0x03b1, 0x03b2, 0x03b3, 0x03b4, 0x03b5, 0x03b6, 0x03b7, 0x03b8,
+ 0x03b9, 0x03ba, 0x03bb, 0x03bc, 0x03bd, 0x03be, 0x03bf, 0x03c0,
+ 0x03c1, 0x03c3, 0x03c4, 0x03c5, 0x03c6, 0x03c7, 0x03c8, 0x03c9,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfe35,
+ 0xfe36, 0xfe39, 0xfe3a, 0xfe3f, 0xfe40, 0xfe3d, 0xfe3e, 0xfe41,
+ 0xfe42, 0xfe43, 0xfe44, 0xfffd, 0xfffd, 0xfe3b, 0xfe3c, 0xfe37,
+ 0xfe38, 0xfe31, 0xfffd, 0xfe33, 0xfe34, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ /* 0xa7 */
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0x0410, 0x0411, 0x0412, 0x0413, 0x0414, 0x0415, 0x0401, 0x0416,
+ 0x0417, 0x0418, 0x0419, 0x041a, 0x041b, 0x041c, 0x041d, 0x041e,
+ 0x041f, 0x0420, 0x0421, 0x0422, 0x0423, 0x0424, 0x0425, 0x0426,
+ 0x0427, 0x0428, 0x0429, 0x042a, 0x042b, 0x042c, 0x042d, 0x042e,
+ 0x042f, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0x0430, 0x0431, 0x0432, 0x0433, 0x0434, 0x0435, 0x0451, 0x0436,
+ 0x0437, 0x0438, 0x0439, 0x043a, 0x043b, 0x043c, 0x043d, 0x043e,
+ 0x043f, 0x0440, 0x0441, 0x0442, 0x0443, 0x0444, 0x0445, 0x0446,
+ 0x0447, 0x0448, 0x0449, 0x044a, 0x044b, 0x044c, 0x044d, 0x044e,
+ 0x044f, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ /* 0xa8 */
+ 0x02ca, 0x02cb, 0x02d9, 0x2013, 0x2015, 0x2025, 0x2035, 0x2105,
+ 0x2109, 0x2196, 0x2197, 0x2198, 0x2199, 0x2215, 0x221f, 0x2223,
+ 0x2252, 0x2266, 0x2267, 0x22bf, 0x2550, 0x2551, 0x2552, 0x2553,
+ 0x2554, 0x2555, 0x2556, 0x2557, 0x2558, 0x2559, 0x255a, 0x255b,
+ 0x255c, 0x255d, 0x255e, 0x255f, 0x2560, 0x2561, 0x2562, 0x2563,
+ 0x2564, 0x2565, 0x2566, 0x2567, 0x2568, 0x2569, 0x256a, 0x256b,
+ 0x256c, 0x256d, 0x256e, 0x256f, 0x2570, 0x2571, 0x2572, 0x2573,
+ 0x2581, 0x2582, 0x2583, 0x2584, 0x2585, 0x2586, 0x2587, 0x2588,
+ 0x2589, 0x258a, 0x258b, 0x258c, 0x258d, 0x258e, 0x258f, 0x2593,
+ 0x2594, 0x2595, 0x25bc, 0x25bd, 0x25e2, 0x25e3, 0x25e4, 0x25e5,
+ 0x2609, 0x2295, 0x3012, 0x301d, 0x301e, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0x0101, 0x00e1, 0x01ce, 0x00e0, 0x0113, 0x00e9, 0x011b, 0x00e8,
+ 0x012b, 0x00ed, 0x01d0, 0x00ec, 0x014d, 0x00f3, 0x01d2, 0x00f2,
+ 0x016b, 0x00fa, 0x01d4, 0x00f9, 0x01d6, 0x01d8, 0x01da, 0x01dc,
+ 0x00fc, 0x00ea, 0x0251, 0xfffd, 0x0144, 0x0148, 0xfffd, 0x0261,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x3105, 0x3106, 0x3107, 0x3108,
+ 0x3109, 0x310a, 0x310b, 0x310c, 0x310d, 0x310e, 0x310f, 0x3110,
+ 0x3111, 0x3112, 0x3113, 0x3114, 0x3115, 0x3116, 0x3117, 0x3118,
+ 0x3119, 0x311a, 0x311b, 0x311c, 0x311d, 0x311e, 0x311f, 0x3120,
+ 0x3121, 0x3122, 0x3123, 0x3124, 0x3125, 0x3126, 0x3127, 0x3128,
+ 0x3129, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ /* 0xa9 */
+ 0x3021, 0x3022, 0x3023, 0x3024, 0x3025, 0x3026, 0x3027, 0x3028,
+ 0x3029, 0x32a3, 0x338e, 0x338f, 0x339c, 0x339d, 0x339e, 0x33a1,
+ 0x33c4, 0x33ce, 0x33d1, 0x33d2, 0x33d5, 0xfe30, 0xffe2, 0xffe4,
+ 0xfffd, 0x2121, 0x3231, 0xfffd, 0x2010, 0xfffd, 0xfffd, 0xfffd,
+ 0x30fc, 0x309b, 0x309c, 0x30fd, 0x30fe, 0x3006, 0x309d, 0x309e,
+ 0xfe49, 0xfe4a, 0xfe4b, 0xfe4c, 0xfe4d, 0xfe4e, 0xfe4f, 0xfe50,
+ 0xfe51, 0xfe52, 0xfe54, 0xfe55, 0xfe56, 0xfe57, 0xfe59, 0xfe5a,
+ 0xfe5b, 0xfe5c, 0xfe5d, 0xfe5e, 0xfe5f, 0xfe60, 0xfe61, 0xfe62,
+ 0xfe63, 0xfe64, 0xfe65, 0xfe66, 0xfe68, 0xfe69, 0xfe6a, 0xfe6b,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x3007, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0x2500, 0x2501, 0x2502, 0x2503, 0x2504,
+ 0x2505, 0x2506, 0x2507, 0x2508, 0x2509, 0x250a, 0x250b, 0x250c,
+ 0x250d, 0x250e, 0x250f, 0x2510, 0x2511, 0x2512, 0x2513, 0x2514,
+ 0x2515, 0x2516, 0x2517, 0x2518, 0x2519, 0x251a, 0x251b, 0x251c,
+ 0x251d, 0x251e, 0x251f, 0x2520, 0x2521, 0x2522, 0x2523, 0x2524,
+ 0x2525, 0x2526, 0x2527, 0x2528, 0x2529, 0x252a, 0x252b, 0x252c,
+ 0x252d, 0x252e, 0x252f, 0x2530, 0x2531, 0x2532, 0x2533, 0x2534,
+ 0x2535, 0x2536, 0x2537, 0x2538, 0x2539, 0x253a, 0x253b, 0x253c,
+ 0x253d, 0x253e, 0x253f, 0x2540, 0x2541, 0x2542, 0x2543, 0x2544,
+ 0x2545, 0x2546, 0x2547, 0x2548, 0x2549, 0x254a, 0x254b, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ /* 0xaa */
+ 0x72dc, 0x72dd, 0x72df, 0x72e2, 0x72e3, 0x72e4, 0x72e5, 0x72e6,
+ 0x72e7, 0x72ea, 0x72eb, 0x72f5, 0x72f6, 0x72f9, 0x72fd, 0x72fe,
+ 0x72ff, 0x7300, 0x7302, 0x7304, 0x7305, 0x7306, 0x7307, 0x7308,
+ 0x7309, 0x730b, 0x730c, 0x730d, 0x730f, 0x7310, 0x7311, 0x7312,
+ 0x7314, 0x7318, 0x7319, 0x731a, 0x731f, 0x7320, 0x7323, 0x7324,
+ 0x7326, 0x7327, 0x7328, 0x732d, 0x732f, 0x7330, 0x7332, 0x7333,
+ 0x7335, 0x7336, 0x733a, 0x733b, 0x733c, 0x733d, 0x7340, 0x7341,
+ 0x7342, 0x7343, 0x7344, 0x7345, 0x7346, 0x7347, 0x7348, 0x7349,
+ 0x734a, 0x734b, 0x734c, 0x734e, 0x734f, 0x7351, 0x7353, 0x7354,
+ 0x7355, 0x7356, 0x7358, 0x7359, 0x735a, 0x735b, 0x735c, 0x735d,
+ 0x735e, 0x735f, 0x7361, 0x7362, 0x7363, 0x7364, 0x7365, 0x7366,
+ 0x7367, 0x7368, 0x7369, 0x736a, 0x736b, 0x736e, 0x7370, 0x7371,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ /* 0xab */
+ 0x7372, 0x7373, 0x7374, 0x7375, 0x7376, 0x7377, 0x7378, 0x7379,
+ 0x737a, 0x737b, 0x737c, 0x737d, 0x737f, 0x7380, 0x7381, 0x7382,
+ 0x7383, 0x7385, 0x7386, 0x7388, 0x738a, 0x738c, 0x738d, 0x738f,
+ 0x7390, 0x7392, 0x7393, 0x7394, 0x7395, 0x7397, 0x7398, 0x7399,
+ 0x739a, 0x739c, 0x739d, 0x739e, 0x73a0, 0x73a1, 0x73a3, 0x73a4,
+ 0x73a5, 0x73a6, 0x73a7, 0x73a8, 0x73aa, 0x73ac, 0x73ad, 0x73b1,
+ 0x73b4, 0x73b5, 0x73b6, 0x73b8, 0x73b9, 0x73bc, 0x73bd, 0x73be,
+ 0x73bf, 0x73c1, 0x73c3, 0x73c4, 0x73c5, 0x73c6, 0x73c7, 0x73cb,
+ 0x73cc, 0x73ce, 0x73d2, 0x73d3, 0x73d4, 0x73d5, 0x73d6, 0x73d7,
+ 0x73d8, 0x73da, 0x73db, 0x73dc, 0x73dd, 0x73df, 0x73e1, 0x73e2,
+ 0x73e3, 0x73e4, 0x73e6, 0x73e8, 0x73ea, 0x73eb, 0x73ec, 0x73ee,
+ 0x73ef, 0x73f0, 0x73f1, 0x73f3, 0x73f4, 0x73f5, 0x73f6, 0x73f7,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ /* 0xac */
+ 0x73f8, 0x73f9, 0x73fa, 0x73fb, 0x73fc, 0x73fd, 0x73fe, 0x73ff,
+ 0x7400, 0x7401, 0x7402, 0x7404, 0x7407, 0x7408, 0x740b, 0x740c,
+ 0x740d, 0x740e, 0x7411, 0x7412, 0x7413, 0x7414, 0x7415, 0x7416,
+ 0x7417, 0x7418, 0x7419, 0x741c, 0x741d, 0x741e, 0x741f, 0x7420,
+ 0x7421, 0x7423, 0x7424, 0x7427, 0x7429, 0x742b, 0x742d, 0x742f,
+ 0x7431, 0x7432, 0x7437, 0x7438, 0x7439, 0x743a, 0x743b, 0x743d,
+ 0x743e, 0x743f, 0x7440, 0x7442, 0x7443, 0x7444, 0x7445, 0x7446,
+ 0x7447, 0x7448, 0x7449, 0x744a, 0x744b, 0x744c, 0x744d, 0x744e,
+ 0x744f, 0x7450, 0x7451, 0x7452, 0x7453, 0x7454, 0x7456, 0x7458,
+ 0x745d, 0x7460, 0x7461, 0x7462, 0x7463, 0x7464, 0x7465, 0x7466,
+ 0x7467, 0x7468, 0x7469, 0x746a, 0x746b, 0x746c, 0x746e, 0x746f,
+ 0x7471, 0x7472, 0x7473, 0x7474, 0x7475, 0x7478, 0x7479, 0x747a,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ /* 0xad */
+ 0x747b, 0x747c, 0x747d, 0x747f, 0x7482, 0x7484, 0x7485, 0x7486,
+ 0x7488, 0x7489, 0x748a, 0x748c, 0x748d, 0x748f, 0x7491, 0x7492,
+ 0x7493, 0x7494, 0x7495, 0x7496, 0x7497, 0x7498, 0x7499, 0x749a,
+ 0x749b, 0x749d, 0x749f, 0x74a0, 0x74a1, 0x74a2, 0x74a3, 0x74a4,
+ 0x74a5, 0x74a6, 0x74aa, 0x74ab, 0x74ac, 0x74ad, 0x74ae, 0x74af,
+ 0x74b0, 0x74b1, 0x74b2, 0x74b3, 0x74b4, 0x74b5, 0x74b6, 0x74b7,
+ 0x74b8, 0x74b9, 0x74bb, 0x74bc, 0x74bd, 0x74be, 0x74bf, 0x74c0,
+ 0x74c1, 0x74c2, 0x74c3, 0x74c4, 0x74c5, 0x74c6, 0x74c7, 0x74c8,
+ 0x74c9, 0x74ca, 0x74cb, 0x74cc, 0x74cd, 0x74ce, 0x74cf, 0x74d0,
+ 0x74d1, 0x74d3, 0x74d4, 0x74d5, 0x74d6, 0x74d7, 0x74d8, 0x74d9,
+ 0x74da, 0x74db, 0x74dd, 0x74df, 0x74e1, 0x74e5, 0x74e7, 0x74e8,
+ 0x74e9, 0x74ea, 0x74eb, 0x74ec, 0x74ed, 0x74f0, 0x74f1, 0x74f2,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ /* 0xae */
+ 0x74f3, 0x74f5, 0x74f8, 0x74f9, 0x74fa, 0x74fb, 0x74fc, 0x74fd,
+ 0x74fe, 0x7500, 0x7501, 0x7502, 0x7503, 0x7505, 0x7506, 0x7507,
+ 0x7508, 0x7509, 0x750a, 0x750b, 0x750c, 0x750e, 0x7510, 0x7512,
+ 0x7514, 0x7515, 0x7516, 0x7517, 0x751b, 0x751d, 0x751e, 0x7520,
+ 0x7521, 0x7522, 0x7523, 0x7524, 0x7526, 0x7527, 0x752a, 0x752e,
+ 0x7534, 0x7536, 0x7539, 0x753c, 0x753d, 0x753f, 0x7541, 0x7542,
+ 0x7543, 0x7544, 0x7546, 0x7547, 0x7549, 0x754a, 0x754d, 0x7550,
+ 0x7551, 0x7552, 0x7553, 0x7555, 0x7556, 0x7557, 0x7558, 0x755d,
+ 0x755e, 0x755f, 0x7560, 0x7561, 0x7562, 0x7563, 0x7564, 0x7567,
+ 0x7568, 0x7569, 0x756b, 0x756c, 0x756d, 0x756e, 0x756f, 0x7570,
+ 0x7571, 0x7573, 0x7575, 0x7576, 0x7577, 0x757a, 0x757b, 0x757c,
+ 0x757d, 0x757e, 0x7580, 0x7581, 0x7582, 0x7584, 0x7585, 0x7587,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ /* 0xaf */
+ 0x7588, 0x7589, 0x758a, 0x758c, 0x758d, 0x758e, 0x7590, 0x7593,
+ 0x7595, 0x7598, 0x759b, 0x759c, 0x759e, 0x75a2, 0x75a6, 0x75a7,
+ 0x75a8, 0x75a9, 0x75aa, 0x75ad, 0x75b6, 0x75b7, 0x75ba, 0x75bb,
+ 0x75bf, 0x75c0, 0x75c1, 0x75c6, 0x75cb, 0x75cc, 0x75ce, 0x75cf,
+ 0x75d0, 0x75d1, 0x75d3, 0x75d7, 0x75d9, 0x75da, 0x75dc, 0x75dd,
+ 0x75df, 0x75e0, 0x75e1, 0x75e5, 0x75e9, 0x75ec, 0x75ed, 0x75ee,
+ 0x75ef, 0x75f2, 0x75f3, 0x75f5, 0x75f6, 0x75f7, 0x75f8, 0x75fa,
+ 0x75fb, 0x75fd, 0x75fe, 0x7602, 0x7604, 0x7606, 0x7607, 0x7608,
+ 0x7609, 0x760b, 0x760d, 0x760e, 0x760f, 0x7611, 0x7612, 0x7613,
+ 0x7614, 0x7616, 0x761a, 0x761c, 0x761d, 0x761e, 0x7621, 0x7623,
+ 0x7627, 0x7628, 0x762c, 0x762e, 0x762f, 0x7631, 0x7632, 0x7636,
+ 0x7637, 0x7639, 0x763a, 0x763b, 0x763d, 0x7641, 0x7642, 0x7644,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ /* 0xb0 */
+ 0x7645, 0x7646, 0x7647, 0x7648, 0x7649, 0x764a, 0x764b, 0x764e,
+ 0x764f, 0x7650, 0x7651, 0x7652, 0x7653, 0x7655, 0x7657, 0x7658,
+ 0x7659, 0x765a, 0x765b, 0x765d, 0x765f, 0x7660, 0x7661, 0x7662,
+ 0x7664, 0x7665, 0x7666, 0x7667, 0x7668, 0x7669, 0x766a, 0x766c,
+ 0x766d, 0x766e, 0x7670, 0x7671, 0x7672, 0x7673, 0x7674, 0x7675,
+ 0x7676, 0x7677, 0x7679, 0x767a, 0x767c, 0x767f, 0x7680, 0x7681,
+ 0x7683, 0x7685, 0x7689, 0x768a, 0x768c, 0x768d, 0x768f, 0x7690,
+ 0x7692, 0x7694, 0x7695, 0x7697, 0x7698, 0x769a, 0x769b, 0x769c,
+ 0x769d, 0x769e, 0x769f, 0x76a0, 0x76a1, 0x76a2, 0x76a3, 0x76a5,
+ 0x76a6, 0x76a7, 0x76a8, 0x76a9, 0x76aa, 0x76ab, 0x76ac, 0x76ad,
+ 0x76af, 0x76b0, 0x76b3, 0x76b5, 0x76b6, 0x76b7, 0x76b8, 0x76b9,
+ 0x76ba, 0x76bb, 0x76bc, 0x76bd, 0x76be, 0x76c0, 0x76c1, 0x76c3,
+ 0x554a, 0x963f, 0x57c3, 0x6328, 0x54ce, 0x5509, 0x54c0, 0x7691,
+ 0x764c, 0x853c, 0x77ee, 0x827e, 0x788d, 0x7231, 0x9698, 0x978d,
+ 0x6c28, 0x5b89, 0x4ffa, 0x6309, 0x6697, 0x5cb8, 0x80fa, 0x6848,
+ 0x80ae, 0x6602, 0x76ce, 0x51f9, 0x6556, 0x71ac, 0x7ff1, 0x8884,
+ 0x50b2, 0x5965, 0x61ca, 0x6fb3, 0x82ad, 0x634c, 0x6252, 0x53ed,
+ 0x5427, 0x7b06, 0x516b, 0x75a4, 0x5df4, 0x62d4, 0x8dcb, 0x9776,
+ 0x628a, 0x8019, 0x575d, 0x9738, 0x7f62, 0x7238, 0x767d, 0x67cf,
+ 0x767e, 0x6446, 0x4f70, 0x8d25, 0x62dc, 0x7a17, 0x6591, 0x73ed,
+ 0x642c, 0x6273, 0x822c, 0x9881, 0x677f, 0x7248, 0x626e, 0x62cc,
+ 0x4f34, 0x74e3, 0x534a, 0x529e, 0x7eca, 0x90a6, 0x5e2e, 0x6886,
+ 0x699c, 0x8180, 0x7ed1, 0x68d2, 0x78c5, 0x868c, 0x9551, 0x508d,
+ 0x8c24, 0x82de, 0x80de, 0x5305, 0x8912, 0x5265,
+ /* 0xb1 */
+ 0x76c4, 0x76c7, 0x76c9, 0x76cb, 0x76cc, 0x76d3, 0x76d5, 0x76d9,
+ 0x76da, 0x76dc, 0x76dd, 0x76de, 0x76e0, 0x76e1, 0x76e2, 0x76e3,
+ 0x76e4, 0x76e6, 0x76e7, 0x76e8, 0x76e9, 0x76ea, 0x76eb, 0x76ec,
+ 0x76ed, 0x76f0, 0x76f3, 0x76f5, 0x76f6, 0x76f7, 0x76fa, 0x76fb,
+ 0x76fd, 0x76ff, 0x7700, 0x7702, 0x7703, 0x7705, 0x7706, 0x770a,
+ 0x770c, 0x770e, 0x770f, 0x7710, 0x7711, 0x7712, 0x7713, 0x7714,
+ 0x7715, 0x7716, 0x7717, 0x7718, 0x771b, 0x771c, 0x771d, 0x771e,
+ 0x7721, 0x7723, 0x7724, 0x7725, 0x7727, 0x772a, 0x772b, 0x772c,
+ 0x772e, 0x7730, 0x7731, 0x7732, 0x7733, 0x7734, 0x7739, 0x773b,
+ 0x773d, 0x773e, 0x773f, 0x7742, 0x7744, 0x7745, 0x7746, 0x7748,
+ 0x7749, 0x774a, 0x774b, 0x774c, 0x774d, 0x774e, 0x774f, 0x7752,
+ 0x7753, 0x7754, 0x7755, 0x7756, 0x7757, 0x7758, 0x7759, 0x775c,
+ 0x8584, 0x96f9, 0x4fdd, 0x5821, 0x9971, 0x5b9d, 0x62b1, 0x62a5,
+ 0x66b4, 0x8c79, 0x9c8d, 0x7206, 0x676f, 0x7891, 0x60b2, 0x5351,
+ 0x5317, 0x8f88, 0x80cc, 0x8d1d, 0x94a1, 0x500d, 0x72c8, 0x5907,
+ 0x60eb, 0x7119, 0x88ab, 0x5954, 0x82ef, 0x672c, 0x7b28, 0x5d29,
+ 0x7ef7, 0x752d, 0x6cf5, 0x8e66, 0x8ff8, 0x903c, 0x9f3b, 0x6bd4,
+ 0x9119, 0x7b14, 0x5f7c, 0x78a7, 0x84d6, 0x853d, 0x6bd5, 0x6bd9,
+ 0x6bd6, 0x5e01, 0x5e87, 0x75f9, 0x95ed, 0x655d, 0x5f0a, 0x5fc5,
+ 0x8f9f, 0x58c1, 0x81c2, 0x907f, 0x965b, 0x97ad, 0x8fb9, 0x7f16,
+ 0x8d2c, 0x6241, 0x4fbf, 0x53d8, 0x535e, 0x8fa8, 0x8fa9, 0x8fab,
+ 0x904d, 0x6807, 0x5f6a, 0x8198, 0x8868, 0x9cd6, 0x618b, 0x522b,
+ 0x762a, 0x5f6c, 0x658c, 0x6fd2, 0x6ee8, 0x5bbe, 0x6448, 0x5175,
+ 0x51b0, 0x67c4, 0x4e19, 0x79c9, 0x997c, 0x70b3,
+ /* 0xb2 */
+ 0x775d, 0x775e, 0x775f, 0x7760, 0x7764, 0x7767, 0x7769, 0x776a,
+ 0x776d, 0x776e, 0x776f, 0x7770, 0x7771, 0x7772, 0x7773, 0x7774,
+ 0x7775, 0x7776, 0x7777, 0x7778, 0x777a, 0x777b, 0x777c, 0x7781,
+ 0x7782, 0x7783, 0x7786, 0x7787, 0x7788, 0x7789, 0x778a, 0x778b,
+ 0x778f, 0x7790, 0x7793, 0x7794, 0x7795, 0x7796, 0x7797, 0x7798,
+ 0x7799, 0x779a, 0x779b, 0x779c, 0x779d, 0x779e, 0x77a1, 0x77a3,
+ 0x77a4, 0x77a6, 0x77a8, 0x77ab, 0x77ad, 0x77ae, 0x77af, 0x77b1,
+ 0x77b2, 0x77b4, 0x77b6, 0x77b7, 0x77b8, 0x77b9, 0x77ba, 0x77bc,
+ 0x77be, 0x77c0, 0x77c1, 0x77c2, 0x77c3, 0x77c4, 0x77c5, 0x77c6,
+ 0x77c7, 0x77c8, 0x77c9, 0x77ca, 0x77cb, 0x77cc, 0x77ce, 0x77cf,
+ 0x77d0, 0x77d1, 0x77d2, 0x77d3, 0x77d4, 0x77d5, 0x77d6, 0x77d8,
+ 0x77d9, 0x77da, 0x77dd, 0x77de, 0x77df, 0x77e0, 0x77e1, 0x77e4,
+ 0x75c5, 0x5e76, 0x73bb, 0x83e0, 0x64ad, 0x62e8, 0x94b5, 0x6ce2,
+ 0x535a, 0x52c3, 0x640f, 0x94c2, 0x7b94, 0x4f2f, 0x5e1b, 0x8236,
+ 0x8116, 0x818a, 0x6e24, 0x6cca, 0x9a73, 0x6355, 0x535c, 0x54fa,
+ 0x8865, 0x57e0, 0x4e0d, 0x5e03, 0x6b65, 0x7c3f, 0x90e8, 0x6016,
+ 0x64e6, 0x731c, 0x88c1, 0x6750, 0x624d, 0x8d22, 0x776c, 0x8e29,
+ 0x91c7, 0x5f69, 0x83dc, 0x8521, 0x9910, 0x53c2, 0x8695, 0x6b8b,
+ 0x60ed, 0x60e8, 0x707f, 0x82cd, 0x8231, 0x4ed3, 0x6ca7, 0x85cf,
+ 0x64cd, 0x7cd9, 0x69fd, 0x66f9, 0x8349, 0x5395, 0x7b56, 0x4fa7,
+ 0x518c, 0x6d4b, 0x5c42, 0x8e6d, 0x63d2, 0x53c9, 0x832c, 0x8336,
+ 0x67e5, 0x78b4, 0x643d, 0x5bdf, 0x5c94, 0x5dee, 0x8be7, 0x62c6,
+ 0x67f4, 0x8c7a, 0x6400, 0x63ba, 0x8749, 0x998b, 0x8c17, 0x7f20,
+ 0x94f2, 0x4ea7, 0x9610, 0x98a4, 0x660c, 0x7316,
+ /* 0xb3 */
+ 0x77e6, 0x77e8, 0x77ea, 0x77ef, 0x77f0, 0x77f1, 0x77f2, 0x77f4,
+ 0x77f5, 0x77f7, 0x77f9, 0x77fa, 0x77fb, 0x77fc, 0x7803, 0x7804,
+ 0x7805, 0x7806, 0x7807, 0x7808, 0x780a, 0x780b, 0x780e, 0x780f,
+ 0x7810, 0x7813, 0x7815, 0x7819, 0x781b, 0x781e, 0x7820, 0x7821,
+ 0x7822, 0x7824, 0x7828, 0x782a, 0x782b, 0x782e, 0x782f, 0x7831,
+ 0x7832, 0x7833, 0x7835, 0x7836, 0x783d, 0x783f, 0x7841, 0x7842,
+ 0x7843, 0x7844, 0x7846, 0x7848, 0x7849, 0x784a, 0x784b, 0x784d,
+ 0x784f, 0x7851, 0x7853, 0x7854, 0x7858, 0x7859, 0x785a, 0x785b,
+ 0x785c, 0x785e, 0x785f, 0x7860, 0x7861, 0x7862, 0x7863, 0x7864,
+ 0x7865, 0x7866, 0x7867, 0x7868, 0x7869, 0x786f, 0x7870, 0x7871,
+ 0x7872, 0x7873, 0x7874, 0x7875, 0x7876, 0x7878, 0x7879, 0x787a,
+ 0x787b, 0x787d, 0x787e, 0x787f, 0x7880, 0x7881, 0x7882, 0x7883,
+ 0x573a, 0x5c1d, 0x5e38, 0x957f, 0x507f, 0x80a0, 0x5382, 0x655e,
+ 0x7545, 0x5531, 0x5021, 0x8d85, 0x6284, 0x949e, 0x671d, 0x5632,
+ 0x6f6e, 0x5de2, 0x5435, 0x7092, 0x8f66, 0x626f, 0x64a4, 0x63a3,
+ 0x5f7b, 0x6f88, 0x90f4, 0x81e3, 0x8fb0, 0x5c18, 0x6668, 0x5ff1,
+ 0x6c89, 0x9648, 0x8d81, 0x886c, 0x6491, 0x79f0, 0x57ce, 0x6a59,
+ 0x6210, 0x5448, 0x4e58, 0x7a0b, 0x60e9, 0x6f84, 0x8bda, 0x627f,
+ 0x901e, 0x9a8b, 0x79e4, 0x5403, 0x75f4, 0x6301, 0x5319, 0x6c60,
+ 0x8fdf, 0x5f1b, 0x9a70, 0x803b, 0x9f7f, 0x4f88, 0x5c3a, 0x8d64,
+ 0x7fc5, 0x65a5, 0x70bd, 0x5145, 0x51b2, 0x866b, 0x5d07, 0x5ba0,
+ 0x62bd, 0x916c, 0x7574, 0x8e0c, 0x7a20, 0x6101, 0x7b79, 0x4ec7,
+ 0x7ef8, 0x7785, 0x4e11, 0x81ed, 0x521d, 0x51fa, 0x6a71, 0x53a8,
+ 0x8e87, 0x9504, 0x96cf, 0x6ec1, 0x9664, 0x695a,
+ /* 0xb4 */
+ 0x7884, 0x7885, 0x7886, 0x7888, 0x788a, 0x788b, 0x788f, 0x7890,
+ 0x7892, 0x7894, 0x7895, 0x7896, 0x7899, 0x789d, 0x789e, 0x78a0,
+ 0x78a2, 0x78a4, 0x78a6, 0x78a8, 0x78a9, 0x78aa, 0x78ab, 0x78ac,
+ 0x78ad, 0x78ae, 0x78af, 0x78b5, 0x78b6, 0x78b7, 0x78b8, 0x78ba,
+ 0x78bb, 0x78bc, 0x78bd, 0x78bf, 0x78c0, 0x78c2, 0x78c3, 0x78c4,
+ 0x78c6, 0x78c7, 0x78c8, 0x78cc, 0x78cd, 0x78ce, 0x78cf, 0x78d1,
+ 0x78d2, 0x78d3, 0x78d6, 0x78d7, 0x78d8, 0x78da, 0x78db, 0x78dc,
+ 0x78dd, 0x78de, 0x78df, 0x78e0, 0x78e1, 0x78e2, 0x78e3, 0x78e4,
+ 0x78e5, 0x78e6, 0x78e7, 0x78e9, 0x78ea, 0x78eb, 0x78ed, 0x78ee,
+ 0x78ef, 0x78f0, 0x78f1, 0x78f3, 0x78f5, 0x78f6, 0x78f8, 0x78f9,
+ 0x78fb, 0x78fc, 0x78fd, 0x78fe, 0x78ff, 0x7900, 0x7902, 0x7903,
+ 0x7904, 0x7906, 0x7907, 0x7908, 0x7909, 0x790a, 0x790b, 0x790c,
+ 0x7840, 0x50a8, 0x77d7, 0x6410, 0x89e6, 0x5904, 0x63e3, 0x5ddd,
+ 0x7a7f, 0x693d, 0x4f20, 0x8239, 0x5598, 0x4e32, 0x75ae, 0x7a97,
+ 0x5e62, 0x5e8a, 0x95ef, 0x521b, 0x5439, 0x708a, 0x6376, 0x9524,
+ 0x5782, 0x6625, 0x693f, 0x9187, 0x5507, 0x6df3, 0x7eaf, 0x8822,
+ 0x6233, 0x7ef0, 0x75b5, 0x8328, 0x78c1, 0x96cc, 0x8f9e, 0x6148,
+ 0x74f7, 0x8bcd, 0x6b64, 0x523a, 0x8d50, 0x6b21, 0x806a, 0x8471,
+ 0x56f1, 0x5306, 0x4ece, 0x4e1b, 0x51d1, 0x7c97, 0x918b, 0x7c07,
+ 0x4fc3, 0x8e7f, 0x7be1, 0x7a9c, 0x6467, 0x5d14, 0x50ac, 0x8106,
+ 0x7601, 0x7cb9, 0x6dec, 0x7fe0, 0x6751, 0x5b58, 0x5bf8, 0x78cb,
+ 0x64ae, 0x6413, 0x63aa, 0x632b, 0x9519, 0x642d, 0x8fbe, 0x7b54,
+ 0x7629, 0x6253, 0x5927, 0x5446, 0x6b79, 0x50a3, 0x6234, 0x5e26,
+ 0x6b86, 0x4ee3, 0x8d37, 0x888b, 0x5f85, 0x902e,
+ /* 0xb5 */
+ 0x790d, 0x790e, 0x790f, 0x7910, 0x7911, 0x7912, 0x7914, 0x7915,
+ 0x7916, 0x7917, 0x7918, 0x7919, 0x791a, 0x791b, 0x791c, 0x791d,
+ 0x791f, 0x7920, 0x7921, 0x7922, 0x7923, 0x7925, 0x7926, 0x7927,
+ 0x7928, 0x7929, 0x792a, 0x792b, 0x792c, 0x792d, 0x792e, 0x792f,
+ 0x7930, 0x7931, 0x7932, 0x7933, 0x7935, 0x7936, 0x7937, 0x7938,
+ 0x7939, 0x793d, 0x793f, 0x7942, 0x7943, 0x7944, 0x7945, 0x7947,
+ 0x794a, 0x794b, 0x794c, 0x794d, 0x794e, 0x794f, 0x7950, 0x7951,
+ 0x7952, 0x7954, 0x7955, 0x7958, 0x7959, 0x7961, 0x7963, 0x7964,
+ 0x7966, 0x7969, 0x796a, 0x796b, 0x796c, 0x796e, 0x7970, 0x7971,
+ 0x7972, 0x7973, 0x7974, 0x7975, 0x7976, 0x7979, 0x797b, 0x797c,
+ 0x797d, 0x797e, 0x797f, 0x7982, 0x7983, 0x7986, 0x7987, 0x7988,
+ 0x7989, 0x798b, 0x798c, 0x798d, 0x798e, 0x7990, 0x7991, 0x7992,
+ 0x6020, 0x803d, 0x62c5, 0x4e39, 0x5355, 0x90f8, 0x63b8, 0x80c6,
+ 0x65e6, 0x6c2e, 0x4f46, 0x60ee, 0x6de1, 0x8bde, 0x5f39, 0x86cb,
+ 0x5f53, 0x6321, 0x515a, 0x8361, 0x6863, 0x5200, 0x6363, 0x8e48,
+ 0x5012, 0x5c9b, 0x7977, 0x5bfc, 0x5230, 0x7a3b, 0x60bc, 0x9053,
+ 0x76d7, 0x5fb7, 0x5f97, 0x7684, 0x8e6c, 0x706f, 0x767b, 0x7b49,
+ 0x77aa, 0x51f3, 0x9093, 0x5824, 0x4f4e, 0x6ef4, 0x8fea, 0x654c,
+ 0x7b1b, 0x72c4, 0x6da4, 0x7fdf, 0x5ae1, 0x62b5, 0x5e95, 0x5730,
+ 0x8482, 0x7b2c, 0x5e1d, 0x5f1f, 0x9012, 0x7f14, 0x98a0, 0x6382,
+ 0x6ec7, 0x7898, 0x70b9, 0x5178, 0x975b, 0x57ab, 0x7535, 0x4f43,
+ 0x7538, 0x5e97, 0x60e6, 0x5960, 0x6dc0, 0x6bbf, 0x7889, 0x53fc,
+ 0x96d5, 0x51cb, 0x5201, 0x6389, 0x540a, 0x9493, 0x8c03, 0x8dcc,
+ 0x7239, 0x789f, 0x8776, 0x8fed, 0x8c0d, 0x53e0,
+ /* 0xb6 */
+ 0x7993, 0x7994, 0x7995, 0x7996, 0x7997, 0x7998, 0x7999, 0x799b,
+ 0x799c, 0x799d, 0x799e, 0x799f, 0x79a0, 0x79a1, 0x79a2, 0x79a3,
+ 0x79a4, 0x79a5, 0x79a6, 0x79a8, 0x79a9, 0x79aa, 0x79ab, 0x79ac,
+ 0x79ad, 0x79ae, 0x79af, 0x79b0, 0x79b1, 0x79b2, 0x79b4, 0x79b5,
+ 0x79b6, 0x79b7, 0x79b8, 0x79bc, 0x79bf, 0x79c2, 0x79c4, 0x79c5,
+ 0x79c7, 0x79c8, 0x79ca, 0x79cc, 0x79ce, 0x79cf, 0x79d0, 0x79d3,
+ 0x79d4, 0x79d6, 0x79d7, 0x79d9, 0x79da, 0x79db, 0x79dc, 0x79dd,
+ 0x79de, 0x79e0, 0x79e1, 0x79e2, 0x79e5, 0x79e8, 0x79ea, 0x79ec,
+ 0x79ee, 0x79f1, 0x79f2, 0x79f3, 0x79f4, 0x79f5, 0x79f6, 0x79f7,
+ 0x79f9, 0x79fa, 0x79fc, 0x79fe, 0x79ff, 0x7a01, 0x7a04, 0x7a05,
+ 0x7a07, 0x7a08, 0x7a09, 0x7a0a, 0x7a0c, 0x7a0f, 0x7a10, 0x7a11,
+ 0x7a12, 0x7a13, 0x7a15, 0x7a16, 0x7a18, 0x7a19, 0x7a1b, 0x7a1c,
+ 0x4e01, 0x76ef, 0x53ee, 0x9489, 0x9876, 0x9f0e, 0x952d, 0x5b9a,
+ 0x8ba2, 0x4e22, 0x4e1c, 0x51ac, 0x8463, 0x61c2, 0x52a8, 0x680b,
+ 0x4f97, 0x606b, 0x51bb, 0x6d1e, 0x515c, 0x6296, 0x6597, 0x9661,
+ 0x8c46, 0x9017, 0x75d8, 0x90fd, 0x7763, 0x6bd2, 0x728a, 0x72ec,
+ 0x8bfb, 0x5835, 0x7779, 0x8d4c, 0x675c, 0x9540, 0x809a, 0x5ea6,
+ 0x6e21, 0x5992, 0x7aef, 0x77ed, 0x953b, 0x6bb5, 0x65ad, 0x7f0e,
+ 0x5806, 0x5151, 0x961f, 0x5bf9, 0x58a9, 0x5428, 0x8e72, 0x6566,
+ 0x987f, 0x56e4, 0x949d, 0x76fe, 0x9041, 0x6387, 0x54c6, 0x591a,
+ 0x593a, 0x579b, 0x8eb2, 0x6735, 0x8dfa, 0x8235, 0x5241, 0x60f0,
+ 0x5815, 0x86fe, 0x5ce8, 0x9e45, 0x4fc4, 0x989d, 0x8bb9, 0x5a25,
+ 0x6076, 0x5384, 0x627c, 0x904f, 0x9102, 0x997f, 0x6069, 0x800c,
+ 0x513f, 0x8033, 0x5c14, 0x9975, 0x6d31, 0x4e8c,
+ /* 0xb7 */
+ 0x7a1d, 0x7a1f, 0x7a21, 0x7a22, 0x7a24, 0x7a25, 0x7a26, 0x7a27,
+ 0x7a28, 0x7a29, 0x7a2a, 0x7a2b, 0x7a2c, 0x7a2d, 0x7a2e, 0x7a2f,
+ 0x7a30, 0x7a31, 0x7a32, 0x7a34, 0x7a35, 0x7a36, 0x7a38, 0x7a3a,
+ 0x7a3e, 0x7a40, 0x7a41, 0x7a42, 0x7a43, 0x7a44, 0x7a45, 0x7a47,
+ 0x7a48, 0x7a49, 0x7a4a, 0x7a4b, 0x7a4c, 0x7a4d, 0x7a4e, 0x7a4f,
+ 0x7a50, 0x7a52, 0x7a53, 0x7a54, 0x7a55, 0x7a56, 0x7a58, 0x7a59,
+ 0x7a5a, 0x7a5b, 0x7a5c, 0x7a5d, 0x7a5e, 0x7a5f, 0x7a60, 0x7a61,
+ 0x7a62, 0x7a63, 0x7a64, 0x7a65, 0x7a66, 0x7a67, 0x7a68, 0x7a69,
+ 0x7a6a, 0x7a6b, 0x7a6c, 0x7a6d, 0x7a6e, 0x7a6f, 0x7a71, 0x7a72,
+ 0x7a73, 0x7a75, 0x7a7b, 0x7a7c, 0x7a7d, 0x7a7e, 0x7a82, 0x7a85,
+ 0x7a87, 0x7a89, 0x7a8a, 0x7a8b, 0x7a8c, 0x7a8e, 0x7a8f, 0x7a90,
+ 0x7a93, 0x7a94, 0x7a99, 0x7a9a, 0x7a9b, 0x7a9e, 0x7aa1, 0x7aa2,
+ 0x8d30, 0x53d1, 0x7f5a, 0x7b4f, 0x4f10, 0x4e4f, 0x9600, 0x6cd5,
+ 0x73d0, 0x85e9, 0x5e06, 0x756a, 0x7ffb, 0x6a0a, 0x77fe, 0x9492,
+ 0x7e41, 0x51e1, 0x70e6, 0x53cd, 0x8fd4, 0x8303, 0x8d29, 0x72af,
+ 0x996d, 0x6cdb, 0x574a, 0x82b3, 0x65b9, 0x80aa, 0x623f, 0x9632,
+ 0x59a8, 0x4eff, 0x8bbf, 0x7eba, 0x653e, 0x83f2, 0x975e, 0x5561,
+ 0x98de, 0x80a5, 0x532a, 0x8bfd, 0x5420, 0x80ba, 0x5e9f, 0x6cb8,
+ 0x8d39, 0x82ac, 0x915a, 0x5429, 0x6c1b, 0x5206, 0x7eb7, 0x575f,
+ 0x711a, 0x6c7e, 0x7c89, 0x594b, 0x4efd, 0x5fff, 0x6124, 0x7caa,
+ 0x4e30, 0x5c01, 0x67ab, 0x8702, 0x5cf0, 0x950b, 0x98ce, 0x75af,
+ 0x70fd, 0x9022, 0x51af, 0x7f1d, 0x8bbd, 0x5949, 0x51e4, 0x4f5b,
+ 0x5426, 0x592b, 0x6577, 0x80a4, 0x5b75, 0x6276, 0x62c2, 0x8f90,
+ 0x5e45, 0x6c1f, 0x7b26, 0x4f0f, 0x4fd8, 0x670d,
+ /* 0xb8 */
+ 0x7aa3, 0x7aa4, 0x7aa7, 0x7aa9, 0x7aaa, 0x7aab, 0x7aae, 0x7aaf,
+ 0x7ab0, 0x7ab1, 0x7ab2, 0x7ab4, 0x7ab5, 0x7ab6, 0x7ab7, 0x7ab8,
+ 0x7ab9, 0x7aba, 0x7abb, 0x7abc, 0x7abd, 0x7abe, 0x7ac0, 0x7ac1,
+ 0x7ac2, 0x7ac3, 0x7ac4, 0x7ac5, 0x7ac6, 0x7ac7, 0x7ac8, 0x7ac9,
+ 0x7aca, 0x7acc, 0x7acd, 0x7ace, 0x7acf, 0x7ad0, 0x7ad1, 0x7ad2,
+ 0x7ad3, 0x7ad4, 0x7ad5, 0x7ad7, 0x7ad8, 0x7ada, 0x7adb, 0x7adc,
+ 0x7add, 0x7ae1, 0x7ae2, 0x7ae4, 0x7ae7, 0x7ae8, 0x7ae9, 0x7aea,
+ 0x7aeb, 0x7aec, 0x7aee, 0x7af0, 0x7af1, 0x7af2, 0x7af3, 0x7af4,
+ 0x7af5, 0x7af6, 0x7af7, 0x7af8, 0x7afb, 0x7afc, 0x7afe, 0x7b00,
+ 0x7b01, 0x7b02, 0x7b05, 0x7b07, 0x7b09, 0x7b0c, 0x7b0d, 0x7b0e,
+ 0x7b10, 0x7b12, 0x7b13, 0x7b16, 0x7b17, 0x7b18, 0x7b1a, 0x7b1c,
+ 0x7b1d, 0x7b1f, 0x7b21, 0x7b22, 0x7b23, 0x7b27, 0x7b29, 0x7b2d,
+ 0x6d6e, 0x6daa, 0x798f, 0x88b1, 0x5f17, 0x752b, 0x629a, 0x8f85,
+ 0x4fef, 0x91dc, 0x65a7, 0x812f, 0x8151, 0x5e9c, 0x8150, 0x8d74,
+ 0x526f, 0x8986, 0x8d4b, 0x590d, 0x5085, 0x4ed8, 0x961c, 0x7236,
+ 0x8179, 0x8d1f, 0x5bcc, 0x8ba3, 0x9644, 0x5987, 0x7f1a, 0x5490,
+ 0x5676, 0x560e, 0x8be5, 0x6539, 0x6982, 0x9499, 0x76d6, 0x6e89,
+ 0x5e72, 0x7518, 0x6746, 0x67d1, 0x7aff, 0x809d, 0x8d76, 0x611f,
+ 0x79c6, 0x6562, 0x8d63, 0x5188, 0x521a, 0x94a2, 0x7f38, 0x809b,
+ 0x7eb2, 0x5c97, 0x6e2f, 0x6760, 0x7bd9, 0x768b, 0x9ad8, 0x818f,
+ 0x7f94, 0x7cd5, 0x641e, 0x9550, 0x7a3f, 0x544a, 0x54e5, 0x6b4c,
+ 0x6401, 0x6208, 0x9e3d, 0x80f3, 0x7599, 0x5272, 0x9769, 0x845b,
+ 0x683c, 0x86e4, 0x9601, 0x9694, 0x94ec, 0x4e2a, 0x5404, 0x7ed9,
+ 0x6839, 0x8ddf, 0x8015, 0x66f4, 0x5e9a, 0x7fb9,
+ /* 0xb9 */
+ 0x7b2f, 0x7b30, 0x7b32, 0x7b34, 0x7b35, 0x7b36, 0x7b37, 0x7b39,
+ 0x7b3b, 0x7b3d, 0x7b3f, 0x7b40, 0x7b41, 0x7b42, 0x7b43, 0x7b44,
+ 0x7b46, 0x7b48, 0x7b4a, 0x7b4d, 0x7b4e, 0x7b53, 0x7b55, 0x7b57,
+ 0x7b59, 0x7b5c, 0x7b5e, 0x7b5f, 0x7b61, 0x7b63, 0x7b64, 0x7b65,
+ 0x7b66, 0x7b67, 0x7b68, 0x7b69, 0x7b6a, 0x7b6b, 0x7b6c, 0x7b6d,
+ 0x7b6f, 0x7b70, 0x7b73, 0x7b74, 0x7b76, 0x7b78, 0x7b7a, 0x7b7c,
+ 0x7b7d, 0x7b7f, 0x7b81, 0x7b82, 0x7b83, 0x7b84, 0x7b86, 0x7b87,
+ 0x7b88, 0x7b89, 0x7b8a, 0x7b8b, 0x7b8c, 0x7b8e, 0x7b8f, 0x7b91,
+ 0x7b92, 0x7b93, 0x7b96, 0x7b98, 0x7b99, 0x7b9a, 0x7b9b, 0x7b9e,
+ 0x7b9f, 0x7ba0, 0x7ba3, 0x7ba4, 0x7ba5, 0x7bae, 0x7baf, 0x7bb0,
+ 0x7bb2, 0x7bb3, 0x7bb5, 0x7bb6, 0x7bb7, 0x7bb9, 0x7bba, 0x7bbb,
+ 0x7bbc, 0x7bbd, 0x7bbe, 0x7bbf, 0x7bc0, 0x7bc2, 0x7bc3, 0x7bc4,
+ 0x57c2, 0x803f, 0x6897, 0x5de5, 0x653b, 0x529f, 0x606d, 0x9f9a,
+ 0x4f9b, 0x8eac, 0x516c, 0x5bab, 0x5f13, 0x5de9, 0x6c5e, 0x62f1,
+ 0x8d21, 0x5171, 0x94a9, 0x52fe, 0x6c9f, 0x82df, 0x72d7, 0x57a2,
+ 0x6784, 0x8d2d, 0x591f, 0x8f9c, 0x83c7, 0x5495, 0x7b8d, 0x4f30,
+ 0x6cbd, 0x5b64, 0x59d1, 0x9f13, 0x53e4, 0x86ca, 0x9aa8, 0x8c37,
+ 0x80a1, 0x6545, 0x987e, 0x56fa, 0x96c7, 0x522e, 0x74dc, 0x5250,
+ 0x5be1, 0x6302, 0x8902, 0x4e56, 0x62d0, 0x602a, 0x68fa, 0x5173,
+ 0x5b98, 0x51a0, 0x89c2, 0x7ba1, 0x9986, 0x7f50, 0x60ef, 0x704c,
+ 0x8d2f, 0x5149, 0x5e7f, 0x901b, 0x7470, 0x89c4, 0x572d, 0x7845,
+ 0x5f52, 0x9f9f, 0x95fa, 0x8f68, 0x9b3c, 0x8be1, 0x7678, 0x6842,
+ 0x67dc, 0x8dea, 0x8d35, 0x523d, 0x8f8a, 0x6eda, 0x68cd, 0x9505,
+ 0x90ed, 0x56fd, 0x679c, 0x88f9, 0x8fc7, 0x54c8,
+ /* 0xba */
+ 0x7bc5, 0x7bc8, 0x7bc9, 0x7bca, 0x7bcb, 0x7bcd, 0x7bce, 0x7bcf,
+ 0x7bd0, 0x7bd2, 0x7bd4, 0x7bd5, 0x7bd6, 0x7bd7, 0x7bd8, 0x7bdb,
+ 0x7bdc, 0x7bde, 0x7bdf, 0x7be0, 0x7be2, 0x7be3, 0x7be4, 0x7be7,
+ 0x7be8, 0x7be9, 0x7beb, 0x7bec, 0x7bed, 0x7bef, 0x7bf0, 0x7bf2,
+ 0x7bf3, 0x7bf4, 0x7bf5, 0x7bf6, 0x7bf8, 0x7bf9, 0x7bfa, 0x7bfb,
+ 0x7bfd, 0x7bff, 0x7c00, 0x7c01, 0x7c02, 0x7c03, 0x7c04, 0x7c05,
+ 0x7c06, 0x7c08, 0x7c09, 0x7c0a, 0x7c0d, 0x7c0e, 0x7c10, 0x7c11,
+ 0x7c12, 0x7c13, 0x7c14, 0x7c15, 0x7c17, 0x7c18, 0x7c19, 0x7c1a,
+ 0x7c1b, 0x7c1c, 0x7c1d, 0x7c1e, 0x7c20, 0x7c21, 0x7c22, 0x7c23,
+ 0x7c24, 0x7c25, 0x7c28, 0x7c29, 0x7c2b, 0x7c2c, 0x7c2d, 0x7c2e,
+ 0x7c2f, 0x7c30, 0x7c31, 0x7c32, 0x7c33, 0x7c34, 0x7c35, 0x7c36,
+ 0x7c37, 0x7c39, 0x7c3a, 0x7c3b, 0x7c3c, 0x7c3d, 0x7c3e, 0x7c42,
+ 0x9ab8, 0x5b69, 0x6d77, 0x6c26, 0x4ea5, 0x5bb3, 0x9a87, 0x9163,
+ 0x61a8, 0x90af, 0x97e9, 0x542b, 0x6db5, 0x5bd2, 0x51fd, 0x558a,
+ 0x7f55, 0x7ff0, 0x64bc, 0x634d, 0x65f1, 0x61be, 0x608d, 0x710a,
+ 0x6c57, 0x6c49, 0x592f, 0x676d, 0x822a, 0x58d5, 0x568e, 0x8c6a,
+ 0x6beb, 0x90dd, 0x597d, 0x8017, 0x53f7, 0x6d69, 0x5475, 0x559d,
+ 0x8377, 0x83cf, 0x6838, 0x79be, 0x548c, 0x4f55, 0x5408, 0x76d2,
+ 0x8c89, 0x9602, 0x6cb3, 0x6db8, 0x8d6b, 0x8910, 0x9e64, 0x8d3a,
+ 0x563f, 0x9ed1, 0x75d5, 0x5f88, 0x72e0, 0x6068, 0x54fc, 0x4ea8,
+ 0x6a2a, 0x8861, 0x6052, 0x8f70, 0x54c4, 0x70d8, 0x8679, 0x9e3f,
+ 0x6d2a, 0x5b8f, 0x5f18, 0x7ea2, 0x5589, 0x4faf, 0x7334, 0x543c,
+ 0x539a, 0x5019, 0x540e, 0x547c, 0x4e4e, 0x5ffd, 0x745a, 0x58f6,
+ 0x846b, 0x80e1, 0x8774, 0x72d0, 0x7cca, 0x6e56,
+ /* 0xbb */
+ 0x7c43, 0x7c44, 0x7c45, 0x7c46, 0x7c47, 0x7c48, 0x7c49, 0x7c4a,
+ 0x7c4b, 0x7c4c, 0x7c4e, 0x7c4f, 0x7c50, 0x7c51, 0x7c52, 0x7c53,
+ 0x7c54, 0x7c55, 0x7c56, 0x7c57, 0x7c58, 0x7c59, 0x7c5a, 0x7c5b,
+ 0x7c5c, 0x7c5d, 0x7c5e, 0x7c5f, 0x7c60, 0x7c61, 0x7c62, 0x7c63,
+ 0x7c64, 0x7c65, 0x7c66, 0x7c67, 0x7c68, 0x7c69, 0x7c6a, 0x7c6b,
+ 0x7c6c, 0x7c6d, 0x7c6e, 0x7c6f, 0x7c70, 0x7c71, 0x7c72, 0x7c75,
+ 0x7c76, 0x7c77, 0x7c78, 0x7c79, 0x7c7a, 0x7c7e, 0x7c7f, 0x7c80,
+ 0x7c81, 0x7c82, 0x7c83, 0x7c84, 0x7c85, 0x7c86, 0x7c87, 0x7c88,
+ 0x7c8a, 0x7c8b, 0x7c8c, 0x7c8d, 0x7c8e, 0x7c8f, 0x7c90, 0x7c93,
+ 0x7c94, 0x7c96, 0x7c99, 0x7c9a, 0x7c9b, 0x7ca0, 0x7ca1, 0x7ca3,
+ 0x7ca6, 0x7ca7, 0x7ca8, 0x7ca9, 0x7cab, 0x7cac, 0x7cad, 0x7caf,
+ 0x7cb0, 0x7cb4, 0x7cb5, 0x7cb6, 0x7cb7, 0x7cb8, 0x7cba, 0x7cbb,
+ 0x5f27, 0x864e, 0x552c, 0x62a4, 0x4e92, 0x6caa, 0x6237, 0x82b1,
+ 0x54d7, 0x534e, 0x733e, 0x6ed1, 0x753b, 0x5212, 0x5316, 0x8bdd,
+ 0x69d0, 0x5f8a, 0x6000, 0x6dee, 0x574f, 0x6b22, 0x73af, 0x6853,
+ 0x8fd8, 0x7f13, 0x6362, 0x60a3, 0x5524, 0x75ea, 0x8c62, 0x7115,
+ 0x6da3, 0x5ba6, 0x5e7b, 0x8352, 0x614c, 0x9ec4, 0x78fa, 0x8757,
+ 0x7c27, 0x7687, 0x51f0, 0x60f6, 0x714c, 0x6643, 0x5e4c, 0x604d,
+ 0x8c0e, 0x7070, 0x6325, 0x8f89, 0x5fbd, 0x6062, 0x86d4, 0x56de,
+ 0x6bc1, 0x6094, 0x6167, 0x5349, 0x60e0, 0x6666, 0x8d3f, 0x79fd,
+ 0x4f1a, 0x70e9, 0x6c47, 0x8bb3, 0x8bf2, 0x7ed8, 0x8364, 0x660f,
+ 0x5a5a, 0x9b42, 0x6d51, 0x6df7, 0x8c41, 0x6d3b, 0x4f19, 0x706b,
+ 0x83b7, 0x6216, 0x60d1, 0x970d, 0x8d27, 0x7978, 0x51fb, 0x573e,
+ 0x57fa, 0x673a, 0x7578, 0x7a3d, 0x79ef, 0x7b95,
+ /* 0xbc */
+ 0x7cbf, 0x7cc0, 0x7cc2, 0x7cc3, 0x7cc4, 0x7cc6, 0x7cc9, 0x7ccb,
+ 0x7cce, 0x7ccf, 0x7cd0, 0x7cd1, 0x7cd2, 0x7cd3, 0x7cd4, 0x7cd8,
+ 0x7cda, 0x7cdb, 0x7cdd, 0x7cde, 0x7ce1, 0x7ce2, 0x7ce3, 0x7ce4,
+ 0x7ce5, 0x7ce6, 0x7ce7, 0x7ce9, 0x7cea, 0x7ceb, 0x7cec, 0x7ced,
+ 0x7cee, 0x7cf0, 0x7cf1, 0x7cf2, 0x7cf3, 0x7cf4, 0x7cf5, 0x7cf6,
+ 0x7cf7, 0x7cf9, 0x7cfa, 0x7cfc, 0x7cfd, 0x7cfe, 0x7cff, 0x7d00,
+ 0x7d01, 0x7d02, 0x7d03, 0x7d04, 0x7d05, 0x7d06, 0x7d07, 0x7d08,
+ 0x7d09, 0x7d0b, 0x7d0c, 0x7d0d, 0x7d0e, 0x7d0f, 0x7d10, 0x7d11,
+ 0x7d12, 0x7d13, 0x7d14, 0x7d15, 0x7d16, 0x7d17, 0x7d18, 0x7d19,
+ 0x7d1a, 0x7d1b, 0x7d1c, 0x7d1d, 0x7d1e, 0x7d1f, 0x7d21, 0x7d23,
+ 0x7d24, 0x7d25, 0x7d26, 0x7d28, 0x7d29, 0x7d2a, 0x7d2c, 0x7d2d,
+ 0x7d2e, 0x7d30, 0x7d31, 0x7d32, 0x7d33, 0x7d34, 0x7d35, 0x7d36,
+ 0x808c, 0x9965, 0x8ff9, 0x6fc0, 0x8ba5, 0x9e21, 0x59ec, 0x7ee9,
+ 0x7f09, 0x5409, 0x6781, 0x68d8, 0x8f91, 0x7c4d, 0x96c6, 0x53ca,
+ 0x6025, 0x75be, 0x6c72, 0x5373, 0x5ac9, 0x7ea7, 0x6324, 0x51e0,
+ 0x810a, 0x5df1, 0x84df, 0x6280, 0x5180, 0x5b63, 0x4f0e, 0x796d,
+ 0x5242, 0x60b8, 0x6d4e, 0x5bc4, 0x5bc2, 0x8ba1, 0x8bb0, 0x65e2,
+ 0x5fcc, 0x9645, 0x5993, 0x7ee7, 0x7eaa, 0x5609, 0x67b7, 0x5939,
+ 0x4f73, 0x5bb6, 0x52a0, 0x835a, 0x988a, 0x8d3e, 0x7532, 0x94be,
+ 0x5047, 0x7a3c, 0x4ef7, 0x67b6, 0x9a7e, 0x5ac1, 0x6b7c, 0x76d1,
+ 0x575a, 0x5c16, 0x7b3a, 0x95f4, 0x714e, 0x517c, 0x80a9, 0x8270,
+ 0x5978, 0x7f04, 0x8327, 0x68c0, 0x67ec, 0x78b1, 0x7877, 0x62e3,
+ 0x6361, 0x7b80, 0x4fed, 0x526a, 0x51cf, 0x8350, 0x69db, 0x9274,
+ 0x8df5, 0x8d31, 0x89c1, 0x952e, 0x7bad, 0x4ef6,
+ /* 0xbd */
+ 0x7d37, 0x7d38, 0x7d39, 0x7d3a, 0x7d3b, 0x7d3c, 0x7d3d, 0x7d3e,
+ 0x7d3f, 0x7d40, 0x7d41, 0x7d42, 0x7d43, 0x7d44, 0x7d45, 0x7d46,
+ 0x7d47, 0x7d48, 0x7d49, 0x7d4a, 0x7d4b, 0x7d4c, 0x7d4d, 0x7d4e,
+ 0x7d4f, 0x7d50, 0x7d51, 0x7d52, 0x7d53, 0x7d54, 0x7d55, 0x7d56,
+ 0x7d57, 0x7d58, 0x7d59, 0x7d5a, 0x7d5b, 0x7d5c, 0x7d5d, 0x7d5e,
+ 0x7d5f, 0x7d60, 0x7d61, 0x7d62, 0x7d63, 0x7d64, 0x7d65, 0x7d66,
+ 0x7d67, 0x7d68, 0x7d69, 0x7d6a, 0x7d6b, 0x7d6c, 0x7d6d, 0x7d6f,
+ 0x7d70, 0x7d71, 0x7d72, 0x7d73, 0x7d74, 0x7d75, 0x7d76, 0x7d78,
+ 0x7d79, 0x7d7a, 0x7d7b, 0x7d7c, 0x7d7d, 0x7d7e, 0x7d7f, 0x7d80,
+ 0x7d81, 0x7d82, 0x7d83, 0x7d84, 0x7d85, 0x7d86, 0x7d87, 0x7d88,
+ 0x7d89, 0x7d8a, 0x7d8b, 0x7d8c, 0x7d8d, 0x7d8e, 0x7d8f, 0x7d90,
+ 0x7d91, 0x7d92, 0x7d93, 0x7d94, 0x7d95, 0x7d96, 0x7d97, 0x7d98,
+ 0x5065, 0x8230, 0x5251, 0x996f, 0x6e10, 0x6e85, 0x6da7, 0x5efa,
+ 0x50f5, 0x59dc, 0x5c06, 0x6d46, 0x6c5f, 0x7586, 0x848b, 0x6868,
+ 0x5956, 0x8bb2, 0x5320, 0x9171, 0x964d, 0x8549, 0x6912, 0x7901,
+ 0x7126, 0x80f6, 0x4ea4, 0x90ca, 0x6d47, 0x9a84, 0x5a07, 0x56bc,
+ 0x6405, 0x94f0, 0x77eb, 0x4fa5, 0x811a, 0x72e1, 0x89d2, 0x997a,
+ 0x7f34, 0x7ede, 0x527f, 0x6559, 0x9175, 0x8f7f, 0x8f83, 0x53eb,
+ 0x7a96, 0x63ed, 0x63a5, 0x7686, 0x79f8, 0x8857, 0x9636, 0x622a,
+ 0x52ab, 0x8282, 0x6854, 0x6770, 0x6377, 0x776b, 0x7aed, 0x6d01,
+ 0x7ed3, 0x89e3, 0x59d0, 0x6212, 0x85c9, 0x82a5, 0x754c, 0x501f,
+ 0x4ecb, 0x75a5, 0x8beb, 0x5c4a, 0x5dfe, 0x7b4b, 0x65a4, 0x91d1,
+ 0x4eca, 0x6d25, 0x895f, 0x7d27, 0x9526, 0x4ec5, 0x8c28, 0x8fdb,
+ 0x9773, 0x664b, 0x7981, 0x8fd1, 0x70ec, 0x6d78,
+ /* 0xbe */
+ 0x7d99, 0x7d9a, 0x7d9b, 0x7d9c, 0x7d9d, 0x7d9e, 0x7d9f, 0x7da0,
+ 0x7da1, 0x7da2, 0x7da3, 0x7da4, 0x7da5, 0x7da7, 0x7da8, 0x7da9,
+ 0x7daa, 0x7dab, 0x7dac, 0x7dad, 0x7daf, 0x7db0, 0x7db1, 0x7db2,
+ 0x7db3, 0x7db4, 0x7db5, 0x7db6, 0x7db7, 0x7db8, 0x7db9, 0x7dba,
+ 0x7dbb, 0x7dbc, 0x7dbd, 0x7dbe, 0x7dbf, 0x7dc0, 0x7dc1, 0x7dc2,
+ 0x7dc3, 0x7dc4, 0x7dc5, 0x7dc6, 0x7dc7, 0x7dc8, 0x7dc9, 0x7dca,
+ 0x7dcb, 0x7dcc, 0x7dcd, 0x7dce, 0x7dcf, 0x7dd0, 0x7dd1, 0x7dd2,
+ 0x7dd3, 0x7dd4, 0x7dd5, 0x7dd6, 0x7dd7, 0x7dd8, 0x7dd9, 0x7dda,
+ 0x7ddb, 0x7ddc, 0x7ddd, 0x7dde, 0x7ddf, 0x7de0, 0x7de1, 0x7de2,
+ 0x7de3, 0x7de4, 0x7de5, 0x7de6, 0x7de7, 0x7de8, 0x7de9, 0x7dea,
+ 0x7deb, 0x7dec, 0x7ded, 0x7dee, 0x7def, 0x7df0, 0x7df1, 0x7df2,
+ 0x7df3, 0x7df4, 0x7df5, 0x7df6, 0x7df7, 0x7df8, 0x7df9, 0x7dfa,
+ 0x5c3d, 0x52b2, 0x8346, 0x5162, 0x830e, 0x775b, 0x6676, 0x9cb8,
+ 0x4eac, 0x60ca, 0x7cbe, 0x7cb3, 0x7ecf, 0x4e95, 0x8b66, 0x666f,
+ 0x9888, 0x9759, 0x5883, 0x656c, 0x955c, 0x5f84, 0x75c9, 0x9756,
+ 0x7adf, 0x7ade, 0x51c0, 0x70af, 0x7a98, 0x63ea, 0x7a76, 0x7ea0,
+ 0x7396, 0x97ed, 0x4e45, 0x7078, 0x4e5d, 0x9152, 0x53a9, 0x6551,
+ 0x65e7, 0x81fc, 0x8205, 0x548e, 0x5c31, 0x759a, 0x97a0, 0x62d8,
+ 0x72d9, 0x75bd, 0x5c45, 0x9a79, 0x83ca, 0x5c40, 0x5480, 0x77e9,
+ 0x4e3e, 0x6cae, 0x805a, 0x62d2, 0x636e, 0x5de8, 0x5177, 0x8ddd,
+ 0x8e1e, 0x952f, 0x4ff1, 0x53e5, 0x60e7, 0x70ac, 0x5267, 0x6350,
+ 0x9e43, 0x5a1f, 0x5026, 0x7737, 0x5377, 0x7ee2, 0x6485, 0x652b,
+ 0x6289, 0x6398, 0x5014, 0x7235, 0x89c9, 0x51b3, 0x8bc0, 0x7edd,
+ 0x5747, 0x83cc, 0x94a7, 0x519b, 0x541b, 0x5cfb,
+ /* 0xbf */
+ 0x7dfb, 0x7dfc, 0x7dfd, 0x7dfe, 0x7dff, 0x7e00, 0x7e01, 0x7e02,
+ 0x7e03, 0x7e04, 0x7e05, 0x7e06, 0x7e07, 0x7e08, 0x7e09, 0x7e0a,
+ 0x7e0b, 0x7e0c, 0x7e0d, 0x7e0e, 0x7e0f, 0x7e10, 0x7e11, 0x7e12,
+ 0x7e13, 0x7e14, 0x7e15, 0x7e16, 0x7e17, 0x7e18, 0x7e19, 0x7e1a,
+ 0x7e1b, 0x7e1c, 0x7e1d, 0x7e1e, 0x7e1f, 0x7e20, 0x7e21, 0x7e22,
+ 0x7e23, 0x7e24, 0x7e25, 0x7e26, 0x7e27, 0x7e28, 0x7e29, 0x7e2a,
+ 0x7e2b, 0x7e2c, 0x7e2d, 0x7e2e, 0x7e2f, 0x7e30, 0x7e31, 0x7e32,
+ 0x7e33, 0x7e34, 0x7e35, 0x7e36, 0x7e37, 0x7e38, 0x7e39, 0x7e3a,
+ 0x7e3c, 0x7e3d, 0x7e3e, 0x7e3f, 0x7e40, 0x7e42, 0x7e43, 0x7e44,
+ 0x7e45, 0x7e46, 0x7e48, 0x7e49, 0x7e4a, 0x7e4b, 0x7e4c, 0x7e4d,
+ 0x7e4e, 0x7e4f, 0x7e50, 0x7e51, 0x7e52, 0x7e53, 0x7e54, 0x7e55,
+ 0x7e56, 0x7e57, 0x7e58, 0x7e59, 0x7e5a, 0x7e5b, 0x7e5c, 0x7e5d,
+ 0x4fca, 0x7ae3, 0x6d5a, 0x90e1, 0x9a8f, 0x5580, 0x5496, 0x5361,
+ 0x54af, 0x5f00, 0x63e9, 0x6977, 0x51ef, 0x6168, 0x520a, 0x582a,
+ 0x52d8, 0x574e, 0x780d, 0x770b, 0x5eb7, 0x6177, 0x7ce0, 0x625b,
+ 0x6297, 0x4ea2, 0x7095, 0x8003, 0x62f7, 0x70e4, 0x9760, 0x5777,
+ 0x82db, 0x67ef, 0x68f5, 0x78d5, 0x9897, 0x79d1, 0x58f3, 0x54b3,
+ 0x53ef, 0x6e34, 0x514b, 0x523b, 0x5ba2, 0x8bfe, 0x80af, 0x5543,
+ 0x57a6, 0x6073, 0x5751, 0x542d, 0x7a7a, 0x6050, 0x5b54, 0x63a7,
+ 0x62a0, 0x53e3, 0x6263, 0x5bc7, 0x67af, 0x54ed, 0x7a9f, 0x82e6,
+ 0x9177, 0x5e93, 0x88e4, 0x5938, 0x57ae, 0x630e, 0x8de8, 0x80ef,
+ 0x5757, 0x7b77, 0x4fa9, 0x5feb, 0x5bbd, 0x6b3e, 0x5321, 0x7b50,
+ 0x72c2, 0x6846, 0x77ff, 0x7736, 0x65f7, 0x51b5, 0x4e8f, 0x76d4,
+ 0x5cbf, 0x7aa5, 0x8475, 0x594e, 0x9b41, 0x5080,
+ /* 0xc0 */
+ 0x7e5e, 0x7e5f, 0x7e60, 0x7e61, 0x7e62, 0x7e63, 0x7e64, 0x7e65,
+ 0x7e66, 0x7e67, 0x7e68, 0x7e69, 0x7e6a, 0x7e6b, 0x7e6c, 0x7e6d,
+ 0x7e6e, 0x7e6f, 0x7e70, 0x7e71, 0x7e72, 0x7e73, 0x7e74, 0x7e75,
+ 0x7e76, 0x7e77, 0x7e78, 0x7e79, 0x7e7a, 0x7e7b, 0x7e7c, 0x7e7d,
+ 0x7e7e, 0x7e7f, 0x7e80, 0x7e81, 0x7e83, 0x7e84, 0x7e85, 0x7e86,
+ 0x7e87, 0x7e88, 0x7e89, 0x7e8a, 0x7e8b, 0x7e8c, 0x7e8d, 0x7e8e,
+ 0x7e8f, 0x7e90, 0x7e91, 0x7e92, 0x7e93, 0x7e94, 0x7e95, 0x7e96,
+ 0x7e97, 0x7e98, 0x7e99, 0x7e9a, 0x7e9c, 0x7e9d, 0x7e9e, 0x7eae,
+ 0x7eb4, 0x7ebb, 0x7ebc, 0x7ed6, 0x7ee4, 0x7eec, 0x7ef9, 0x7f0a,
+ 0x7f10, 0x7f1e, 0x7f37, 0x7f39, 0x7f3b, 0x7f3c, 0x7f3d, 0x7f3e,
+ 0x7f3f, 0x7f40, 0x7f41, 0x7f43, 0x7f46, 0x7f47, 0x7f48, 0x7f49,
+ 0x7f4a, 0x7f4b, 0x7f4c, 0x7f4d, 0x7f4e, 0x7f4f, 0x7f52, 0x7f53,
+ 0x9988, 0x6127, 0x6e83, 0x5764, 0x6606, 0x6346, 0x56f0, 0x62ec,
+ 0x6269, 0x5ed3, 0x9614, 0x5783, 0x62c9, 0x5587, 0x8721, 0x814a,
+ 0x8fa3, 0x5566, 0x83b1, 0x6765, 0x8d56, 0x84dd, 0x5a6a, 0x680f,
+ 0x62e6, 0x7bee, 0x9611, 0x5170, 0x6f9c, 0x8c30, 0x63fd, 0x89c8,
+ 0x61d2, 0x7f06, 0x70c2, 0x6ee5, 0x7405, 0x6994, 0x72fc, 0x5eca,
+ 0x90ce, 0x6717, 0x6d6a, 0x635e, 0x52b3, 0x7262, 0x8001, 0x4f6c,
+ 0x59e5, 0x916a, 0x70d9, 0x6d9d, 0x52d2, 0x4e50, 0x96f7, 0x956d,
+ 0x857e, 0x78ca, 0x7d2f, 0x5121, 0x5792, 0x64c2, 0x808b, 0x7c7b,
+ 0x6cea, 0x68f1, 0x695e, 0x51b7, 0x5398, 0x68a8, 0x7281, 0x9ece,
+ 0x7bf1, 0x72f8, 0x79bb, 0x6f13, 0x7406, 0x674e, 0x91cc, 0x9ca4,
+ 0x793c, 0x8389, 0x8354, 0x540f, 0x6817, 0x4e3d, 0x5389, 0x52b1,
+ 0x783e, 0x5386, 0x5229, 0x5088, 0x4f8b, 0x4fd0,
+ /* 0xc1 */
+ 0x7f56, 0x7f59, 0x7f5b, 0x7f5c, 0x7f5d, 0x7f5e, 0x7f60, 0x7f63,
+ 0x7f64, 0x7f65, 0x7f66, 0x7f67, 0x7f6b, 0x7f6c, 0x7f6d, 0x7f6f,
+ 0x7f70, 0x7f73, 0x7f75, 0x7f76, 0x7f77, 0x7f78, 0x7f7a, 0x7f7b,
+ 0x7f7c, 0x7f7d, 0x7f7f, 0x7f80, 0x7f82, 0x7f83, 0x7f84, 0x7f85,
+ 0x7f86, 0x7f87, 0x7f88, 0x7f89, 0x7f8b, 0x7f8d, 0x7f8f, 0x7f90,
+ 0x7f91, 0x7f92, 0x7f93, 0x7f95, 0x7f96, 0x7f97, 0x7f98, 0x7f99,
+ 0x7f9b, 0x7f9c, 0x7fa0, 0x7fa2, 0x7fa3, 0x7fa5, 0x7fa6, 0x7fa8,
+ 0x7fa9, 0x7faa, 0x7fab, 0x7fac, 0x7fad, 0x7fae, 0x7fb1, 0x7fb3,
+ 0x7fb4, 0x7fb5, 0x7fb6, 0x7fb7, 0x7fba, 0x7fbb, 0x7fbe, 0x7fc0,
+ 0x7fc2, 0x7fc3, 0x7fc4, 0x7fc6, 0x7fc7, 0x7fc8, 0x7fc9, 0x7fcb,
+ 0x7fcd, 0x7fcf, 0x7fd0, 0x7fd1, 0x7fd2, 0x7fd3, 0x7fd6, 0x7fd7,
+ 0x7fd9, 0x7fda, 0x7fdb, 0x7fdc, 0x7fdd, 0x7fde, 0x7fe2, 0x7fe3,
+ 0x75e2, 0x7acb, 0x7c92, 0x6ca5, 0x96b6, 0x529b, 0x7483, 0x54e9,
+ 0x4fe9, 0x8054, 0x83b2, 0x8fde, 0x9570, 0x5ec9, 0x601c, 0x6d9f,
+ 0x5e18, 0x655b, 0x8138, 0x94fe, 0x604b, 0x70bc, 0x7ec3, 0x7cae,
+ 0x51c9, 0x6881, 0x7cb1, 0x826f, 0x4e24, 0x8f86, 0x91cf, 0x667e,
+ 0x4eae, 0x8c05, 0x64a9, 0x804a, 0x50da, 0x7597, 0x71ce, 0x5be5,
+ 0x8fbd, 0x6f66, 0x4e86, 0x6482, 0x9563, 0x5ed6, 0x6599, 0x5217,
+ 0x88c2, 0x70c8, 0x52a3, 0x730e, 0x7433, 0x6797, 0x78f7, 0x9716,
+ 0x4e34, 0x90bb, 0x9cde, 0x6dcb, 0x51db, 0x8d41, 0x541d, 0x62ce,
+ 0x73b2, 0x83f1, 0x96f6, 0x9f84, 0x94c3, 0x4f36, 0x7f9a, 0x51cc,
+ 0x7075, 0x9675, 0x5cad, 0x9886, 0x53e6, 0x4ee4, 0x6e9c, 0x7409,
+ 0x69b4, 0x786b, 0x998f, 0x7559, 0x5218, 0x7624, 0x6d41, 0x67f3,
+ 0x516d, 0x9f99, 0x804b, 0x5499, 0x7b3c, 0x7abf,
+ /* 0xc2 */
+ 0x7fe4, 0x7fe7, 0x7fe8, 0x7fea, 0x7feb, 0x7fec, 0x7fed, 0x7fef,
+ 0x7ff2, 0x7ff4, 0x7ff5, 0x7ff6, 0x7ff7, 0x7ff8, 0x7ff9, 0x7ffa,
+ 0x7ffd, 0x7ffe, 0x7fff, 0x8002, 0x8007, 0x8008, 0x8009, 0x800a,
+ 0x800e, 0x800f, 0x8011, 0x8013, 0x801a, 0x801b, 0x801d, 0x801e,
+ 0x801f, 0x8021, 0x8023, 0x8024, 0x802b, 0x802c, 0x802d, 0x802e,
+ 0x802f, 0x8030, 0x8032, 0x8034, 0x8039, 0x803a, 0x803c, 0x803e,
+ 0x8040, 0x8041, 0x8044, 0x8045, 0x8047, 0x8048, 0x8049, 0x804e,
+ 0x804f, 0x8050, 0x8051, 0x8053, 0x8055, 0x8056, 0x8057, 0x8059,
+ 0x805b, 0x805c, 0x805d, 0x805e, 0x805f, 0x8060, 0x8061, 0x8062,
+ 0x8063, 0x8064, 0x8065, 0x8066, 0x8067, 0x8068, 0x806b, 0x806c,
+ 0x806d, 0x806e, 0x806f, 0x8070, 0x8072, 0x8073, 0x8074, 0x8075,
+ 0x8076, 0x8077, 0x8078, 0x8079, 0x807a, 0x807b, 0x807c, 0x807d,
+ 0x9686, 0x5784, 0x62e2, 0x9647, 0x697c, 0x5a04, 0x6402, 0x7bd3,
+ 0x6f0f, 0x964b, 0x82a6, 0x5362, 0x9885, 0x5e90, 0x7089, 0x63b3,
+ 0x5364, 0x864f, 0x9c81, 0x9e93, 0x788c, 0x9732, 0x8def, 0x8d42,
+ 0x9e7f, 0x6f5e, 0x7984, 0x5f55, 0x9646, 0x622e, 0x9a74, 0x5415,
+ 0x94dd, 0x4fa3, 0x65c5, 0x5c65, 0x5c61, 0x7f15, 0x8651, 0x6c2f,
+ 0x5f8b, 0x7387, 0x6ee4, 0x7eff, 0x5ce6, 0x631b, 0x5b6a, 0x6ee6,
+ 0x5375, 0x4e71, 0x63a0, 0x7565, 0x62a1, 0x8f6e, 0x4f26, 0x4ed1,
+ 0x6ca6, 0x7eb6, 0x8bba, 0x841d, 0x87ba, 0x7f57, 0x903b, 0x9523,
+ 0x7ba9, 0x9aa1, 0x88f8, 0x843d, 0x6d1b, 0x9a86, 0x7edc, 0x5988,
+ 0x9ebb, 0x739b, 0x7801, 0x8682, 0x9a6c, 0x9a82, 0x561b, 0x5417,
+ 0x57cb, 0x4e70, 0x9ea6, 0x5356, 0x8fc8, 0x8109, 0x7792, 0x9992,
+ 0x86ee, 0x6ee1, 0x8513, 0x66fc, 0x6162, 0x6f2b,
+ /* 0xc3 */
+ 0x807e, 0x8081, 0x8082, 0x8085, 0x8088, 0x808a, 0x808d, 0x808e,
+ 0x808f, 0x8090, 0x8091, 0x8092, 0x8094, 0x8095, 0x8097, 0x8099,
+ 0x809e, 0x80a3, 0x80a6, 0x80a7, 0x80a8, 0x80ac, 0x80b0, 0x80b3,
+ 0x80b5, 0x80b6, 0x80b8, 0x80b9, 0x80bb, 0x80c5, 0x80c7, 0x80c8,
+ 0x80c9, 0x80ca, 0x80cb, 0x80cf, 0x80d0, 0x80d1, 0x80d2, 0x80d3,
+ 0x80d4, 0x80d5, 0x80d8, 0x80df, 0x80e0, 0x80e2, 0x80e3, 0x80e6,
+ 0x80ee, 0x80f5, 0x80f7, 0x80f9, 0x80fb, 0x80fe, 0x80ff, 0x8100,
+ 0x8101, 0x8103, 0x8104, 0x8105, 0x8107, 0x8108, 0x810b, 0x810c,
+ 0x8115, 0x8117, 0x8119, 0x811b, 0x811c, 0x811d, 0x811f, 0x8120,
+ 0x8121, 0x8122, 0x8123, 0x8124, 0x8125, 0x8126, 0x8127, 0x8128,
+ 0x8129, 0x812a, 0x812b, 0x812d, 0x812e, 0x8130, 0x8133, 0x8134,
+ 0x8135, 0x8137, 0x8139, 0x813a, 0x813b, 0x813c, 0x813d, 0x813f,
+ 0x8c29, 0x8292, 0x832b, 0x76f2, 0x6c13, 0x5fd9, 0x83bd, 0x732b,
+ 0x8305, 0x951a, 0x6bdb, 0x77db, 0x94c6, 0x536f, 0x8302, 0x5192,
+ 0x5e3d, 0x8c8c, 0x8d38, 0x4e48, 0x73ab, 0x679a, 0x6885, 0x9176,
+ 0x9709, 0x7164, 0x6ca1, 0x7709, 0x5a92, 0x9541, 0x6bcf, 0x7f8e,
+ 0x6627, 0x5bd0, 0x59b9, 0x5a9a, 0x95e8, 0x95f7, 0x4eec, 0x840c,
+ 0x8499, 0x6aac, 0x76df, 0x9530, 0x731b, 0x68a6, 0x5b5f, 0x772f,
+ 0x919a, 0x9761, 0x7cdc, 0x8ff7, 0x8c1c, 0x5f25, 0x7c73, 0x79d8,
+ 0x89c5, 0x6ccc, 0x871c, 0x5bc6, 0x5e42, 0x68c9, 0x7720, 0x7ef5,
+ 0x5195, 0x514d, 0x52c9, 0x5a29, 0x7f05, 0x9762, 0x82d7, 0x63cf,
+ 0x7784, 0x85d0, 0x79d2, 0x6e3a, 0x5e99, 0x5999, 0x8511, 0x706d,
+ 0x6c11, 0x62bf, 0x76bf, 0x654f, 0x60af, 0x95fd, 0x660e, 0x879f,
+ 0x9e23, 0x94ed, 0x540d, 0x547d, 0x8c2c, 0x6478,
+ /* 0xc4 */
+ 0x8140, 0x8141, 0x8142, 0x8143, 0x8144, 0x8145, 0x8147, 0x8149,
+ 0x814d, 0x814e, 0x814f, 0x8152, 0x8156, 0x8157, 0x8158, 0x815b,
+ 0x815c, 0x815d, 0x815e, 0x815f, 0x8161, 0x8162, 0x8163, 0x8164,
+ 0x8166, 0x8168, 0x816a, 0x816b, 0x816c, 0x816f, 0x8172, 0x8173,
+ 0x8175, 0x8176, 0x8177, 0x8178, 0x8181, 0x8183, 0x8184, 0x8185,
+ 0x8186, 0x8187, 0x8189, 0x818b, 0x818c, 0x818d, 0x818e, 0x8190,
+ 0x8192, 0x8193, 0x8194, 0x8195, 0x8196, 0x8197, 0x8199, 0x819a,
+ 0x819e, 0x819f, 0x81a0, 0x81a1, 0x81a2, 0x81a4, 0x81a5, 0x81a7,
+ 0x81a9, 0x81ab, 0x81ac, 0x81ad, 0x81ae, 0x81af, 0x81b0, 0x81b1,
+ 0x81b2, 0x81b4, 0x81b5, 0x81b6, 0x81b7, 0x81b8, 0x81b9, 0x81bc,
+ 0x81bd, 0x81be, 0x81bf, 0x81c4, 0x81c5, 0x81c7, 0x81c8, 0x81c9,
+ 0x81cb, 0x81cd, 0x81ce, 0x81cf, 0x81d0, 0x81d1, 0x81d2, 0x81d3,
+ 0x6479, 0x8611, 0x6a21, 0x819c, 0x78e8, 0x6469, 0x9b54, 0x62b9,
+ 0x672b, 0x83ab, 0x58a8, 0x9ed8, 0x6cab, 0x6f20, 0x5bde, 0x964c,
+ 0x8c0b, 0x725f, 0x67d0, 0x62c7, 0x7261, 0x4ea9, 0x59c6, 0x6bcd,
+ 0x5893, 0x66ae, 0x5e55, 0x52df, 0x6155, 0x6728, 0x76ee, 0x7766,
+ 0x7267, 0x7a46, 0x62ff, 0x54ea, 0x5450, 0x94a0, 0x90a3, 0x5a1c,
+ 0x7eb3, 0x6c16, 0x4e43, 0x5976, 0x8010, 0x5948, 0x5357, 0x7537,
+ 0x96be, 0x56ca, 0x6320, 0x8111, 0x607c, 0x95f9, 0x6dd6, 0x5462,
+ 0x9981, 0x5185, 0x5ae9, 0x80fd, 0x59ae, 0x9713, 0x502a, 0x6ce5,
+ 0x5c3c, 0x62df, 0x4f60, 0x533f, 0x817b, 0x9006, 0x6eba, 0x852b,
+ 0x62c8, 0x5e74, 0x78be, 0x64b5, 0x637b, 0x5ff5, 0x5a18, 0x917f,
+ 0x9e1f, 0x5c3f, 0x634f, 0x8042, 0x5b7d, 0x556e, 0x954a, 0x954d,
+ 0x6d85, 0x60a8, 0x67e0, 0x72de, 0x51dd, 0x5b81,
+ /* 0xc5 */
+ 0x81d4, 0x81d5, 0x81d6, 0x81d7, 0x81d8, 0x81d9, 0x81da, 0x81db,
+ 0x81dc, 0x81dd, 0x81de, 0x81df, 0x81e0, 0x81e1, 0x81e2, 0x81e4,
+ 0x81e5, 0x81e6, 0x81e8, 0x81e9, 0x81eb, 0x81ee, 0x81ef, 0x81f0,
+ 0x81f1, 0x81f2, 0x81f5, 0x81f6, 0x81f7, 0x81f8, 0x81f9, 0x81fa,
+ 0x81fd, 0x81ff, 0x8203, 0x8207, 0x8208, 0x8209, 0x820a, 0x820b,
+ 0x820e, 0x820f, 0x8211, 0x8213, 0x8215, 0x8216, 0x8217, 0x8218,
+ 0x8219, 0x821a, 0x821d, 0x8220, 0x8224, 0x8225, 0x8226, 0x8227,
+ 0x8229, 0x822e, 0x8232, 0x823a, 0x823c, 0x823d, 0x823f, 0x8240,
+ 0x8241, 0x8242, 0x8243, 0x8245, 0x8246, 0x8248, 0x824a, 0x824c,
+ 0x824d, 0x824e, 0x8250, 0x8251, 0x8252, 0x8253, 0x8254, 0x8255,
+ 0x8256, 0x8257, 0x8259, 0x825b, 0x825c, 0x825d, 0x825e, 0x8260,
+ 0x8261, 0x8262, 0x8263, 0x8264, 0x8265, 0x8266, 0x8267, 0x8269,
+ 0x62e7, 0x6cde, 0x725b, 0x626d, 0x94ae, 0x7ebd, 0x8113, 0x6d53,
+ 0x519c, 0x5f04, 0x5974, 0x52aa, 0x6012, 0x5973, 0x6696, 0x8650,
+ 0x759f, 0x632a, 0x61e6, 0x7cef, 0x8bfa, 0x54e6, 0x6b27, 0x9e25,
+ 0x6bb4, 0x85d5, 0x5455, 0x5076, 0x6ca4, 0x556a, 0x8db4, 0x722c,
+ 0x5e15, 0x6015, 0x7436, 0x62cd, 0x6392, 0x724c, 0x5f98, 0x6e43,
+ 0x6d3e, 0x6500, 0x6f58, 0x76d8, 0x78d0, 0x76fc, 0x7554, 0x5224,
+ 0x53db, 0x4e53, 0x5e9e, 0x65c1, 0x802a, 0x80d6, 0x629b, 0x5486,
+ 0x5228, 0x70ae, 0x888d, 0x8dd1, 0x6ce1, 0x5478, 0x80da, 0x57f9,
+ 0x88f4, 0x8d54, 0x966a, 0x914d, 0x4f69, 0x6c9b, 0x55b7, 0x76c6,
+ 0x7830, 0x62a8, 0x70f9, 0x6f8e, 0x5f6d, 0x84ec, 0x68da, 0x787c,
+ 0x7bf7, 0x81a8, 0x670b, 0x9e4f, 0x6367, 0x78b0, 0x576f, 0x7812,
+ 0x9739, 0x6279, 0x62ab, 0x5288, 0x7435, 0x6bd7,
+ /* 0xc6 */
+ 0x826a, 0x826b, 0x826c, 0x826d, 0x8271, 0x8275, 0x8276, 0x8277,
+ 0x8278, 0x827b, 0x827c, 0x8280, 0x8281, 0x8283, 0x8285, 0x8286,
+ 0x8287, 0x8289, 0x828c, 0x8290, 0x8293, 0x8294, 0x8295, 0x8296,
+ 0x829a, 0x829b, 0x829e, 0x82a0, 0x82a2, 0x82a3, 0x82a7, 0x82b2,
+ 0x82b5, 0x82b6, 0x82ba, 0x82bb, 0x82bc, 0x82bf, 0x82c0, 0x82c2,
+ 0x82c3, 0x82c5, 0x82c6, 0x82c9, 0x82d0, 0x82d6, 0x82d9, 0x82da,
+ 0x82dd, 0x82e2, 0x82e7, 0x82e8, 0x82e9, 0x82ea, 0x82ec, 0x82ed,
+ 0x82ee, 0x82f0, 0x82f2, 0x82f3, 0x82f5, 0x82f6, 0x82f8, 0x82fa,
+ 0x82fc, 0x82fd, 0x82fe, 0x82ff, 0x8300, 0x830a, 0x830b, 0x830d,
+ 0x8310, 0x8312, 0x8313, 0x8316, 0x8318, 0x8319, 0x831d, 0x831e,
+ 0x831f, 0x8320, 0x8321, 0x8322, 0x8323, 0x8324, 0x8325, 0x8326,
+ 0x8329, 0x832a, 0x832e, 0x8330, 0x8332, 0x8337, 0x833b, 0x833d,
+ 0x5564, 0x813e, 0x75b2, 0x76ae, 0x5339, 0x75de, 0x50fb, 0x5c41,
+ 0x8b6c, 0x7bc7, 0x504f, 0x7247, 0x9a97, 0x98d8, 0x6f02, 0x74e2,
+ 0x7968, 0x6487, 0x77a5, 0x62fc, 0x9891, 0x8d2b, 0x54c1, 0x8058,
+ 0x4e52, 0x576a, 0x82f9, 0x840d, 0x5e73, 0x51ed, 0x74f6, 0x8bc4,
+ 0x5c4f, 0x5761, 0x6cfc, 0x9887, 0x5a46, 0x7834, 0x9b44, 0x8feb,
+ 0x7c95, 0x5256, 0x6251, 0x94fa, 0x4ec6, 0x8386, 0x8461, 0x83e9,
+ 0x84b2, 0x57d4, 0x6734, 0x5703, 0x666e, 0x6d66, 0x8c31, 0x66dd,
+ 0x7011, 0x671f, 0x6b3a, 0x6816, 0x621a, 0x59bb, 0x4e03, 0x51c4,
+ 0x6f06, 0x67d2, 0x6c8f, 0x5176, 0x68cb, 0x5947, 0x6b67, 0x7566,
+ 0x5d0e, 0x8110, 0x9f50, 0x65d7, 0x7948, 0x7941, 0x9a91, 0x8d77,
+ 0x5c82, 0x4e5e, 0x4f01, 0x542f, 0x5951, 0x780c, 0x5668, 0x6c14,
+ 0x8fc4, 0x5f03, 0x6c7d, 0x6ce3, 0x8bab, 0x6390,
+ /* 0xc7 */
+ 0x833e, 0x833f, 0x8341, 0x8342, 0x8344, 0x8345, 0x8348, 0x834a,
+ 0x834b, 0x834c, 0x834d, 0x834e, 0x8353, 0x8355, 0x8356, 0x8357,
+ 0x8358, 0x8359, 0x835d, 0x8362, 0x8370, 0x8371, 0x8372, 0x8373,
+ 0x8374, 0x8375, 0x8376, 0x8379, 0x837a, 0x837e, 0x837f, 0x8380,
+ 0x8381, 0x8382, 0x8383, 0x8384, 0x8387, 0x8388, 0x838a, 0x838b,
+ 0x838c, 0x838d, 0x838f, 0x8390, 0x8391, 0x8394, 0x8395, 0x8396,
+ 0x8397, 0x8399, 0x839a, 0x839d, 0x839f, 0x83a1, 0x83a2, 0x83a3,
+ 0x83a4, 0x83a5, 0x83a6, 0x83a7, 0x83ac, 0x83ad, 0x83ae, 0x83af,
+ 0x83b5, 0x83bb, 0x83be, 0x83bf, 0x83c2, 0x83c3, 0x83c4, 0x83c6,
+ 0x83c8, 0x83c9, 0x83cb, 0x83cd, 0x83ce, 0x83d0, 0x83d1, 0x83d2,
+ 0x83d3, 0x83d5, 0x83d7, 0x83d9, 0x83da, 0x83db, 0x83de, 0x83e2,
+ 0x83e3, 0x83e4, 0x83e6, 0x83e7, 0x83e8, 0x83eb, 0x83ec, 0x83ed,
+ 0x6070, 0x6d3d, 0x7275, 0x6266, 0x948e, 0x94c5, 0x5343, 0x8fc1,
+ 0x7b7e, 0x4edf, 0x8c26, 0x4e7e, 0x9ed4, 0x94b1, 0x94b3, 0x524d,
+ 0x6f5c, 0x9063, 0x6d45, 0x8c34, 0x5811, 0x5d4c, 0x6b20, 0x6b49,
+ 0x67aa, 0x545b, 0x8154, 0x7f8c, 0x5899, 0x8537, 0x5f3a, 0x62a2,
+ 0x6a47, 0x9539, 0x6572, 0x6084, 0x6865, 0x77a7, 0x4e54, 0x4fa8,
+ 0x5de7, 0x9798, 0x64ac, 0x7fd8, 0x5ced, 0x4fcf, 0x7a8d, 0x5207,
+ 0x8304, 0x4e14, 0x602f, 0x7a83, 0x94a6, 0x4fb5, 0x4eb2, 0x79e6,
+ 0x7434, 0x52e4, 0x82b9, 0x64d2, 0x79bd, 0x5bdd, 0x6c81, 0x9752,
+ 0x8f7b, 0x6c22, 0x503e, 0x537f, 0x6e05, 0x64ce, 0x6674, 0x6c30,
+ 0x60c5, 0x9877, 0x8bf7, 0x5e86, 0x743c, 0x7a77, 0x79cb, 0x4e18,
+ 0x90b1, 0x7403, 0x6c42, 0x56da, 0x914b, 0x6cc5, 0x8d8b, 0x533a,
+ 0x86c6, 0x66f2, 0x8eaf, 0x5c48, 0x9a71, 0x6e20,
+ /* 0xc8 */
+ 0x83ee, 0x83ef, 0x83f3, 0x83f4, 0x83f5, 0x83f6, 0x83f7, 0x83fa,
+ 0x83fb, 0x83fc, 0x83fe, 0x83ff, 0x8400, 0x8402, 0x8405, 0x8407,
+ 0x8408, 0x8409, 0x840a, 0x8410, 0x8412, 0x8413, 0x8414, 0x8415,
+ 0x8416, 0x8417, 0x8419, 0x841a, 0x841b, 0x841e, 0x841f, 0x8420,
+ 0x8421, 0x8422, 0x8423, 0x8429, 0x842a, 0x842b, 0x842c, 0x842d,
+ 0x842e, 0x842f, 0x8430, 0x8432, 0x8433, 0x8434, 0x8435, 0x8436,
+ 0x8437, 0x8439, 0x843a, 0x843b, 0x843e, 0x843f, 0x8440, 0x8441,
+ 0x8442, 0x8443, 0x8444, 0x8445, 0x8447, 0x8448, 0x8449, 0x844a,
+ 0x844b, 0x844c, 0x844d, 0x844e, 0x844f, 0x8450, 0x8452, 0x8453,
+ 0x8454, 0x8455, 0x8456, 0x8458, 0x845d, 0x845e, 0x845f, 0x8460,
+ 0x8462, 0x8464, 0x8465, 0x8466, 0x8467, 0x8468, 0x846a, 0x846e,
+ 0x846f, 0x8470, 0x8472, 0x8474, 0x8477, 0x8479, 0x847b, 0x847c,
+ 0x53d6, 0x5a36, 0x9f8b, 0x8da3, 0x53bb, 0x5708, 0x98a7, 0x6743,
+ 0x919b, 0x6cc9, 0x5168, 0x75ca, 0x62f3, 0x72ac, 0x5238, 0x529d,
+ 0x7f3a, 0x7094, 0x7638, 0x5374, 0x9e4a, 0x69b7, 0x786e, 0x96c0,
+ 0x88d9, 0x7fa4, 0x7136, 0x71c3, 0x5189, 0x67d3, 0x74e4, 0x58e4,
+ 0x6518, 0x56b7, 0x8ba9, 0x9976, 0x6270, 0x7ed5, 0x60f9, 0x70ed,
+ 0x58ec, 0x4ec1, 0x4eba, 0x5fcd, 0x97e7, 0x4efb, 0x8ba4, 0x5203,
+ 0x598a, 0x7eab, 0x6254, 0x4ecd, 0x65e5, 0x620e, 0x8338, 0x84c9,
+ 0x8363, 0x878d, 0x7194, 0x6eb6, 0x5bb9, 0x7ed2, 0x5197, 0x63c9,
+ 0x67d4, 0x8089, 0x8339, 0x8815, 0x5112, 0x5b7a, 0x5982, 0x8fb1,
+ 0x4e73, 0x6c5d, 0x5165, 0x8925, 0x8f6f, 0x962e, 0x854a, 0x745e,
+ 0x9510, 0x95f0, 0x6da6, 0x82e5, 0x5f31, 0x6492, 0x6d12, 0x8428,
+ 0x816e, 0x9cc3, 0x585e, 0x8d5b, 0x4e09, 0x53c1,
+ /* 0xc9 */
+ 0x847d, 0x847e, 0x847f, 0x8480, 0x8481, 0x8483, 0x8484, 0x8485,
+ 0x8486, 0x848a, 0x848d, 0x848f, 0x8490, 0x8491, 0x8492, 0x8493,
+ 0x8494, 0x8495, 0x8496, 0x8498, 0x849a, 0x849b, 0x849d, 0x849e,
+ 0x849f, 0x84a0, 0x84a2, 0x84a3, 0x84a4, 0x84a5, 0x84a6, 0x84a7,
+ 0x84a8, 0x84a9, 0x84aa, 0x84ab, 0x84ac, 0x84ad, 0x84ae, 0x84b0,
+ 0x84b1, 0x84b3, 0x84b5, 0x84b6, 0x84b7, 0x84bb, 0x84bc, 0x84be,
+ 0x84c0, 0x84c2, 0x84c3, 0x84c5, 0x84c6, 0x84c7, 0x84c8, 0x84cb,
+ 0x84cc, 0x84ce, 0x84cf, 0x84d2, 0x84d4, 0x84d5, 0x84d7, 0x84d8,
+ 0x84d9, 0x84da, 0x84db, 0x84dc, 0x84de, 0x84e1, 0x84e2, 0x84e4,
+ 0x84e7, 0x84e8, 0x84e9, 0x84ea, 0x84eb, 0x84ed, 0x84ee, 0x84ef,
+ 0x84f1, 0x84f2, 0x84f3, 0x84f4, 0x84f5, 0x84f6, 0x84f7, 0x84f8,
+ 0x84f9, 0x84fa, 0x84fb, 0x84fd, 0x84fe, 0x8500, 0x8501, 0x8502,
+ 0x4f1e, 0x6563, 0x6851, 0x55d3, 0x4e27, 0x6414, 0x9a9a, 0x626b,
+ 0x5ac2, 0x745f, 0x8272, 0x6da9, 0x68ee, 0x50e7, 0x838e, 0x7802,
+ 0x6740, 0x5239, 0x6c99, 0x7eb1, 0x50bb, 0x5565, 0x715e, 0x7b5b,
+ 0x6652, 0x73ca, 0x82eb, 0x6749, 0x5c71, 0x5220, 0x717d, 0x886b,
+ 0x95ea, 0x9655, 0x64c5, 0x8d61, 0x81b3, 0x5584, 0x6c55, 0x6247,
+ 0x7f2e, 0x5892, 0x4f24, 0x5546, 0x8d4f, 0x664c, 0x4e0a, 0x5c1a,
+ 0x88f3, 0x68a2, 0x634e, 0x7a0d, 0x70e7, 0x828d, 0x52fa, 0x97f6,
+ 0x5c11, 0x54e8, 0x90b5, 0x7ecd, 0x5962, 0x8d4a, 0x86c7, 0x820c,
+ 0x820d, 0x8d66, 0x6444, 0x5c04, 0x6151, 0x6d89, 0x793e, 0x8bbe,
+ 0x7837, 0x7533, 0x547b, 0x4f38, 0x8eab, 0x6df1, 0x5a20, 0x7ec5,
+ 0x795e, 0x6c88, 0x5ba1, 0x5a76, 0x751a, 0x80be, 0x614e, 0x6e17,
+ 0x58f0, 0x751f, 0x7525, 0x7272, 0x5347, 0x7ef3,
+ /* 0xca */
+ 0x8503, 0x8504, 0x8505, 0x8506, 0x8507, 0x8508, 0x8509, 0x850a,
+ 0x850b, 0x850d, 0x850e, 0x850f, 0x8510, 0x8512, 0x8514, 0x8515,
+ 0x8516, 0x8518, 0x8519, 0x851b, 0x851c, 0x851d, 0x851e, 0x8520,
+ 0x8522, 0x8523, 0x8524, 0x8525, 0x8526, 0x8527, 0x8528, 0x8529,
+ 0x852a, 0x852d, 0x852e, 0x852f, 0x8530, 0x8531, 0x8532, 0x8533,
+ 0x8534, 0x8535, 0x8536, 0x853e, 0x853f, 0x8540, 0x8541, 0x8542,
+ 0x8544, 0x8545, 0x8546, 0x8547, 0x854b, 0x854c, 0x854d, 0x854e,
+ 0x854f, 0x8550, 0x8551, 0x8552, 0x8553, 0x8554, 0x8555, 0x8557,
+ 0x8558, 0x855a, 0x855b, 0x855c, 0x855d, 0x855f, 0x8560, 0x8561,
+ 0x8562, 0x8563, 0x8565, 0x8566, 0x8567, 0x8569, 0x856a, 0x856b,
+ 0x856c, 0x856d, 0x856e, 0x856f, 0x8570, 0x8571, 0x8573, 0x8575,
+ 0x8576, 0x8577, 0x8578, 0x857c, 0x857d, 0x857f, 0x8580, 0x8581,
+ 0x7701, 0x76db, 0x5269, 0x80dc, 0x5723, 0x5e08, 0x5931, 0x72ee,
+ 0x65bd, 0x6e7f, 0x8bd7, 0x5c38, 0x8671, 0x5341, 0x77f3, 0x62fe,
+ 0x65f6, 0x4ec0, 0x98df, 0x8680, 0x5b9e, 0x8bc6, 0x53f2, 0x77e2,
+ 0x4f7f, 0x5c4e, 0x9a76, 0x59cb, 0x5f0f, 0x793a, 0x58eb, 0x4e16,
+ 0x67ff, 0x4e8b, 0x62ed, 0x8a93, 0x901d, 0x52bf, 0x662f, 0x55dc,
+ 0x566c, 0x9002, 0x4ed5, 0x4f8d, 0x91ca, 0x9970, 0x6c0f, 0x5e02,
+ 0x6043, 0x5ba4, 0x89c6, 0x8bd5, 0x6536, 0x624b, 0x9996, 0x5b88,
+ 0x5bff, 0x6388, 0x552e, 0x53d7, 0x7626, 0x517d, 0x852c, 0x67a2,
+ 0x68b3, 0x6b8a, 0x6292, 0x8f93, 0x53d4, 0x8212, 0x6dd1, 0x758f,
+ 0x4e66, 0x8d4e, 0x5b70, 0x719f, 0x85af, 0x6691, 0x66d9, 0x7f72,
+ 0x8700, 0x9ecd, 0x9f20, 0x5c5e, 0x672f, 0x8ff0, 0x6811, 0x675f,
+ 0x620d, 0x7ad6, 0x5885, 0x5eb6, 0x6570, 0x6f31,
+ /* 0xcb */
+ 0x8582, 0x8583, 0x8586, 0x8588, 0x8589, 0x858a, 0x858b, 0x858c,
+ 0x858d, 0x858e, 0x8590, 0x8591, 0x8592, 0x8593, 0x8594, 0x8595,
+ 0x8596, 0x8597, 0x8598, 0x8599, 0x859a, 0x859d, 0x859e, 0x859f,
+ 0x85a0, 0x85a1, 0x85a2, 0x85a3, 0x85a5, 0x85a6, 0x85a7, 0x85a9,
+ 0x85ab, 0x85ac, 0x85ad, 0x85b1, 0x85b2, 0x85b3, 0x85b4, 0x85b5,
+ 0x85b6, 0x85b8, 0x85ba, 0x85bb, 0x85bc, 0x85bd, 0x85be, 0x85bf,
+ 0x85c0, 0x85c2, 0x85c3, 0x85c4, 0x85c5, 0x85c6, 0x85c7, 0x85c8,
+ 0x85ca, 0x85cb, 0x85cc, 0x85cd, 0x85ce, 0x85d1, 0x85d2, 0x85d4,
+ 0x85d6, 0x85d7, 0x85d8, 0x85d9, 0x85da, 0x85db, 0x85dd, 0x85de,
+ 0x85df, 0x85e0, 0x85e1, 0x85e2, 0x85e3, 0x85e5, 0x85e6, 0x85e7,
+ 0x85e8, 0x85ea, 0x85eb, 0x85ec, 0x85ed, 0x85ee, 0x85ef, 0x85f0,
+ 0x85f1, 0x85f2, 0x85f3, 0x85f4, 0x85f5, 0x85f6, 0x85f7, 0x85f8,
+ 0x6055, 0x5237, 0x800d, 0x6454, 0x8870, 0x7529, 0x5e05, 0x6813,
+ 0x62f4, 0x971c, 0x53cc, 0x723d, 0x8c01, 0x6c34, 0x7761, 0x7a0e,
+ 0x542e, 0x77ac, 0x987a, 0x821c, 0x8bf4, 0x7855, 0x6714, 0x70c1,
+ 0x65af, 0x6495, 0x5636, 0x601d, 0x79c1, 0x53f8, 0x4e1d, 0x6b7b,
+ 0x8086, 0x5bfa, 0x55e3, 0x56db, 0x4f3a, 0x4f3c, 0x9972, 0x5df3,
+ 0x677e, 0x8038, 0x6002, 0x9882, 0x9001, 0x5b8b, 0x8bbc, 0x8bf5,
+ 0x641c, 0x8258, 0x64de, 0x55fd, 0x82cf, 0x9165, 0x4fd7, 0x7d20,
+ 0x901f, 0x7c9f, 0x50f3, 0x5851, 0x6eaf, 0x5bbf, 0x8bc9, 0x8083,
+ 0x9178, 0x849c, 0x7b97, 0x867d, 0x968b, 0x968f, 0x7ee5, 0x9ad3,
+ 0x788e, 0x5c81, 0x7a57, 0x9042, 0x96a7, 0x795f, 0x5b59, 0x635f,
+ 0x7b0b, 0x84d1, 0x68ad, 0x5506, 0x7f29, 0x7410, 0x7d22, 0x9501,
+ 0x6240, 0x584c, 0x4ed6, 0x5b83, 0x5979, 0x5854,
+ /* 0xcc */
+ 0x85f9, 0x85fa, 0x85fc, 0x85fd, 0x85fe, 0x8600, 0x8601, 0x8602,
+ 0x8603, 0x8604, 0x8606, 0x8607, 0x8608, 0x8609, 0x860a, 0x860b,
+ 0x860c, 0x860d, 0x860e, 0x860f, 0x8610, 0x8612, 0x8613, 0x8614,
+ 0x8615, 0x8617, 0x8618, 0x8619, 0x861a, 0x861b, 0x861c, 0x861d,
+ 0x861e, 0x861f, 0x8620, 0x8621, 0x8622, 0x8623, 0x8624, 0x8625,
+ 0x8626, 0x8628, 0x862a, 0x862b, 0x862c, 0x862d, 0x862e, 0x862f,
+ 0x8630, 0x8631, 0x8632, 0x8633, 0x8634, 0x8635, 0x8636, 0x8637,
+ 0x8639, 0x863a, 0x863b, 0x863d, 0x863e, 0x863f, 0x8640, 0x8641,
+ 0x8642, 0x8643, 0x8644, 0x8645, 0x8646, 0x8647, 0x8648, 0x8649,
+ 0x864a, 0x864b, 0x864c, 0x8652, 0x8653, 0x8655, 0x8656, 0x8657,
+ 0x8658, 0x8659, 0x865b, 0x865c, 0x865d, 0x865f, 0x8660, 0x8661,
+ 0x8663, 0x8664, 0x8665, 0x8666, 0x8667, 0x8668, 0x8669, 0x866a,
+ 0x736d, 0x631e, 0x8e4b, 0x8e0f, 0x80ce, 0x82d4, 0x62ac, 0x53f0,
+ 0x6cf0, 0x915e, 0x592a, 0x6001, 0x6c70, 0x574d, 0x644a, 0x8d2a,
+ 0x762b, 0x6ee9, 0x575b, 0x6a80, 0x75f0, 0x6f6d, 0x8c2d, 0x8c08,
+ 0x5766, 0x6bef, 0x8892, 0x78b3, 0x63a2, 0x53f9, 0x70ad, 0x6c64,
+ 0x5858, 0x642a, 0x5802, 0x68e0, 0x819b, 0x5510, 0x7cd6, 0x5018,
+ 0x8eba, 0x6dcc, 0x8d9f, 0x70eb, 0x638f, 0x6d9b, 0x6ed4, 0x7ee6,
+ 0x8404, 0x6843, 0x9003, 0x6dd8, 0x9676, 0x8ba8, 0x5957, 0x7279,
+ 0x85e4, 0x817e, 0x75bc, 0x8a8a, 0x68af, 0x5254, 0x8e22, 0x9511,
+ 0x63d0, 0x9898, 0x8e44, 0x557c, 0x4f53, 0x66ff, 0x568f, 0x60d5,
+ 0x6d95, 0x5243, 0x5c49, 0x5929, 0x6dfb, 0x586b, 0x7530, 0x751c,
+ 0x606c, 0x8214, 0x8146, 0x6311, 0x6761, 0x8fe2, 0x773a, 0x8df3,
+ 0x8d34, 0x94c1, 0x5e16, 0x5385, 0x542c, 0x70c3,
+ /* 0xcd */
+ 0x866d, 0x866f, 0x8670, 0x8672, 0x8673, 0x8674, 0x8675, 0x8676,
+ 0x8677, 0x8678, 0x8683, 0x8684, 0x8685, 0x8686, 0x8687, 0x8688,
+ 0x8689, 0x868e, 0x868f, 0x8690, 0x8691, 0x8692, 0x8694, 0x8696,
+ 0x8697, 0x8698, 0x8699, 0x869a, 0x869b, 0x869e, 0x869f, 0x86a0,
+ 0x86a1, 0x86a2, 0x86a5, 0x86a6, 0x86ab, 0x86ad, 0x86ae, 0x86b2,
+ 0x86b3, 0x86b7, 0x86b8, 0x86b9, 0x86bb, 0x86bc, 0x86bd, 0x86be,
+ 0x86bf, 0x86c1, 0x86c2, 0x86c3, 0x86c5, 0x86c8, 0x86cc, 0x86cd,
+ 0x86d2, 0x86d3, 0x86d5, 0x86d6, 0x86d7, 0x86da, 0x86dc, 0x86dd,
+ 0x86e0, 0x86e1, 0x86e2, 0x86e3, 0x86e5, 0x86e6, 0x86e7, 0x86e8,
+ 0x86ea, 0x86eb, 0x86ec, 0x86ef, 0x86f5, 0x86f6, 0x86f7, 0x86fa,
+ 0x86fb, 0x86fc, 0x86fd, 0x86ff, 0x8701, 0x8704, 0x8705, 0x8706,
+ 0x870b, 0x870c, 0x870e, 0x870f, 0x8710, 0x8711, 0x8714, 0x8716,
+ 0x6c40, 0x5ef7, 0x505c, 0x4ead, 0x5ead, 0x633a, 0x8247, 0x901a,
+ 0x6850, 0x916e, 0x77b3, 0x540c, 0x94dc, 0x5f64, 0x7ae5, 0x6876,
+ 0x6345, 0x7b52, 0x7edf, 0x75db, 0x5077, 0x6295, 0x5934, 0x900f,
+ 0x51f8, 0x79c3, 0x7a81, 0x56fe, 0x5f92, 0x9014, 0x6d82, 0x5c60,
+ 0x571f, 0x5410, 0x5154, 0x6e4d, 0x56e2, 0x63a8, 0x9893, 0x817f,
+ 0x8715, 0x892a, 0x9000, 0x541e, 0x5c6f, 0x81c0, 0x62d6, 0x6258,
+ 0x8131, 0x9e35, 0x9640, 0x9a6e, 0x9a7c, 0x692d, 0x59a5, 0x62d3,
+ 0x553e, 0x6316, 0x54c7, 0x86d9, 0x6d3c, 0x5a03, 0x74e6, 0x889c,
+ 0x6b6a, 0x5916, 0x8c4c, 0x5f2f, 0x6e7e, 0x73a9, 0x987d, 0x4e38,
+ 0x70f7, 0x5b8c, 0x7897, 0x633d, 0x665a, 0x7696, 0x60cb, 0x5b9b,
+ 0x5a49, 0x4e07, 0x8155, 0x6c6a, 0x738b, 0x4ea1, 0x6789, 0x7f51,
+ 0x5f80, 0x65fa, 0x671b, 0x5fd8, 0x5984, 0x5a01,
+ /* 0xce */
+ 0x8719, 0x871b, 0x871d, 0x871f, 0x8720, 0x8724, 0x8726, 0x8727,
+ 0x8728, 0x872a, 0x872b, 0x872c, 0x872d, 0x872f, 0x8730, 0x8732,
+ 0x8733, 0x8735, 0x8736, 0x8738, 0x8739, 0x873a, 0x873c, 0x873d,
+ 0x8740, 0x8741, 0x8742, 0x8743, 0x8744, 0x8745, 0x8746, 0x874a,
+ 0x874b, 0x874d, 0x874f, 0x8750, 0x8751, 0x8752, 0x8754, 0x8755,
+ 0x8756, 0x8758, 0x875a, 0x875b, 0x875c, 0x875d, 0x875e, 0x875f,
+ 0x8761, 0x8762, 0x8766, 0x8767, 0x8768, 0x8769, 0x876a, 0x876b,
+ 0x876c, 0x876d, 0x876f, 0x8771, 0x8772, 0x8773, 0x8775, 0x8777,
+ 0x8778, 0x8779, 0x877a, 0x877f, 0x8780, 0x8781, 0x8784, 0x8786,
+ 0x8787, 0x8789, 0x878a, 0x878c, 0x878e, 0x878f, 0x8790, 0x8791,
+ 0x8792, 0x8794, 0x8795, 0x8796, 0x8798, 0x8799, 0x879a, 0x879b,
+ 0x879c, 0x879d, 0x879e, 0x87a0, 0x87a1, 0x87a2, 0x87a3, 0x87a4,
+ 0x5dcd, 0x5fae, 0x5371, 0x97e6, 0x8fdd, 0x6845, 0x56f4, 0x552f,
+ 0x60df, 0x4e3a, 0x6f4d, 0x7ef4, 0x82c7, 0x840e, 0x59d4, 0x4f1f,
+ 0x4f2a, 0x5c3e, 0x7eac, 0x672a, 0x851a, 0x5473, 0x754f, 0x80c3,
+ 0x5582, 0x9b4f, 0x4f4d, 0x6e2d, 0x8c13, 0x5c09, 0x6170, 0x536b,
+ 0x761f, 0x6e29, 0x868a, 0x6587, 0x95fb, 0x7eb9, 0x543b, 0x7a33,
+ 0x7d0a, 0x95ee, 0x55e1, 0x7fc1, 0x74ee, 0x631d, 0x8717, 0x6da1,
+ 0x7a9d, 0x6211, 0x65a1, 0x5367, 0x63e1, 0x6c83, 0x5deb, 0x545c,
+ 0x94a8, 0x4e4c, 0x6c61, 0x8bec, 0x5c4b, 0x65e0, 0x829c, 0x68a7,
+ 0x543e, 0x5434, 0x6bcb, 0x6b66, 0x4e94, 0x6342, 0x5348, 0x821e,
+ 0x4f0d, 0x4fae, 0x575e, 0x620a, 0x96fe, 0x6664, 0x7269, 0x52ff,
+ 0x52a1, 0x609f, 0x8bef, 0x6614, 0x7199, 0x6790, 0x897f, 0x7852,
+ 0x77fd, 0x6670, 0x563b, 0x5438, 0x9521, 0x727a,
+ /* 0xcf */
+ 0x87a5, 0x87a6, 0x87a7, 0x87a9, 0x87aa, 0x87ae, 0x87b0, 0x87b1,
+ 0x87b2, 0x87b4, 0x87b6, 0x87b7, 0x87b8, 0x87b9, 0x87bb, 0x87bc,
+ 0x87be, 0x87bf, 0x87c1, 0x87c2, 0x87c3, 0x87c4, 0x87c5, 0x87c7,
+ 0x87c8, 0x87c9, 0x87cc, 0x87cd, 0x87ce, 0x87cf, 0x87d0, 0x87d4,
+ 0x87d5, 0x87d6, 0x87d7, 0x87d8, 0x87d9, 0x87da, 0x87dc, 0x87dd,
+ 0x87de, 0x87df, 0x87e1, 0x87e2, 0x87e3, 0x87e4, 0x87e6, 0x87e7,
+ 0x87e8, 0x87e9, 0x87eb, 0x87ec, 0x87ed, 0x87ef, 0x87f0, 0x87f1,
+ 0x87f2, 0x87f3, 0x87f4, 0x87f5, 0x87f6, 0x87f7, 0x87f8, 0x87fa,
+ 0x87fb, 0x87fc, 0x87fd, 0x87ff, 0x8800, 0x8801, 0x8802, 0x8804,
+ 0x8805, 0x8806, 0x8807, 0x8808, 0x8809, 0x880b, 0x880c, 0x880d,
+ 0x880e, 0x880f, 0x8810, 0x8811, 0x8812, 0x8814, 0x8817, 0x8818,
+ 0x8819, 0x881a, 0x881c, 0x881d, 0x881e, 0x881f, 0x8820, 0x8823,
+ 0x7a00, 0x606f, 0x5e0c, 0x6089, 0x819d, 0x5915, 0x60dc, 0x7184,
+ 0x70ef, 0x6eaa, 0x6c50, 0x7280, 0x6a84, 0x88ad, 0x5e2d, 0x4e60,
+ 0x5ab3, 0x559c, 0x94e3, 0x6d17, 0x7cfb, 0x9699, 0x620f, 0x7ec6,
+ 0x778e, 0x867e, 0x5323, 0x971e, 0x8f96, 0x6687, 0x5ce1, 0x4fa0,
+ 0x72ed, 0x4e0b, 0x53a6, 0x590f, 0x5413, 0x6380, 0x9528, 0x5148,
+ 0x4ed9, 0x9c9c, 0x7ea4, 0x54b8, 0x8d24, 0x8854, 0x8237, 0x95f2,
+ 0x6d8e, 0x5f26, 0x5acc, 0x663e, 0x9669, 0x73b0, 0x732e, 0x53bf,
+ 0x817a, 0x9985, 0x7fa1, 0x5baa, 0x9677, 0x9650, 0x7ebf, 0x76f8,
+ 0x53a2, 0x9576, 0x9999, 0x7bb1, 0x8944, 0x6e58, 0x4e61, 0x7fd4,
+ 0x7965, 0x8be6, 0x60f3, 0x54cd, 0x4eab, 0x9879, 0x5df7, 0x6a61,
+ 0x50cf, 0x5411, 0x8c61, 0x8427, 0x785d, 0x9704, 0x524a, 0x54ee,
+ 0x56a3, 0x9500, 0x6d88, 0x5bb5, 0x6dc6, 0x6653,
+ /* 0xd0 */
+ 0x8824, 0x8825, 0x8826, 0x8827, 0x8828, 0x8829, 0x882a, 0x882b,
+ 0x882c, 0x882d, 0x882e, 0x882f, 0x8830, 0x8831, 0x8833, 0x8834,
+ 0x8835, 0x8836, 0x8837, 0x8838, 0x883a, 0x883b, 0x883d, 0x883e,
+ 0x883f, 0x8841, 0x8842, 0x8843, 0x8846, 0x8847, 0x8848, 0x8849,
+ 0x884a, 0x884b, 0x884e, 0x884f, 0x8850, 0x8851, 0x8852, 0x8853,
+ 0x8855, 0x8856, 0x8858, 0x885a, 0x885b, 0x885c, 0x885d, 0x885e,
+ 0x885f, 0x8860, 0x8866, 0x8867, 0x886a, 0x886d, 0x886f, 0x8871,
+ 0x8873, 0x8874, 0x8875, 0x8876, 0x8878, 0x8879, 0x887a, 0x887b,
+ 0x887c, 0x8880, 0x8883, 0x8886, 0x8887, 0x8889, 0x888a, 0x888c,
+ 0x888e, 0x888f, 0x8890, 0x8891, 0x8893, 0x8894, 0x8895, 0x8897,
+ 0x8898, 0x8899, 0x889a, 0x889b, 0x889d, 0x889e, 0x889f, 0x88a0,
+ 0x88a1, 0x88a3, 0x88a5, 0x88a6, 0x88a7, 0x88a8, 0x88a9, 0x88aa,
+ 0x5c0f, 0x5b5d, 0x6821, 0x8096, 0x5578, 0x7b11, 0x6548, 0x6954,
+ 0x4e9b, 0x6b47, 0x874e, 0x978b, 0x534f, 0x631f, 0x643a, 0x90aa,
+ 0x659c, 0x80c1, 0x8c10, 0x5199, 0x68b0, 0x5378, 0x87f9, 0x61c8,
+ 0x6cc4, 0x6cfb, 0x8c22, 0x5c51, 0x85aa, 0x82af, 0x950c, 0x6b23,
+ 0x8f9b, 0x65b0, 0x5ffb, 0x5fc3, 0x4fe1, 0x8845, 0x661f, 0x8165,
+ 0x7329, 0x60fa, 0x5174, 0x5211, 0x578b, 0x5f62, 0x90a2, 0x884c,
+ 0x9192, 0x5e78, 0x674f, 0x6027, 0x59d3, 0x5144, 0x51f6, 0x80f8,
+ 0x5308, 0x6c79, 0x96c4, 0x718a, 0x4f11, 0x4fee, 0x7f9e, 0x673d,
+ 0x55c5, 0x9508, 0x79c0, 0x8896, 0x7ee3, 0x589f, 0x620c, 0x9700,
+ 0x865a, 0x5618, 0x987b, 0x5f90, 0x8bb8, 0x84c4, 0x9157, 0x53d9,
+ 0x65ed, 0x5e8f, 0x755c, 0x6064, 0x7d6e, 0x5a7f, 0x7eea, 0x7eed,
+ 0x8f69, 0x55a7, 0x5ba3, 0x60ac, 0x65cb, 0x7384,
+ /* 0xd1 */
+ 0x88ac, 0x88ae, 0x88af, 0x88b0, 0x88b2, 0x88b3, 0x88b4, 0x88b5,
+ 0x88b6, 0x88b8, 0x88b9, 0x88ba, 0x88bb, 0x88bd, 0x88be, 0x88bf,
+ 0x88c0, 0x88c3, 0x88c4, 0x88c7, 0x88c8, 0x88ca, 0x88cb, 0x88cc,
+ 0x88cd, 0x88cf, 0x88d0, 0x88d1, 0x88d3, 0x88d6, 0x88d7, 0x88da,
+ 0x88db, 0x88dc, 0x88dd, 0x88de, 0x88e0, 0x88e1, 0x88e6, 0x88e7,
+ 0x88e9, 0x88ea, 0x88eb, 0x88ec, 0x88ed, 0x88ee, 0x88ef, 0x88f2,
+ 0x88f5, 0x88f6, 0x88f7, 0x88fa, 0x88fb, 0x88fd, 0x88ff, 0x8900,
+ 0x8901, 0x8903, 0x8904, 0x8905, 0x8906, 0x8907, 0x8908, 0x8909,
+ 0x890b, 0x890c, 0x890d, 0x890e, 0x890f, 0x8911, 0x8914, 0x8915,
+ 0x8916, 0x8917, 0x8918, 0x891c, 0x891d, 0x891e, 0x891f, 0x8920,
+ 0x8922, 0x8923, 0x8924, 0x8926, 0x8927, 0x8928, 0x8929, 0x892c,
+ 0x892d, 0x892e, 0x892f, 0x8931, 0x8932, 0x8933, 0x8935, 0x8937,
+ 0x9009, 0x7663, 0x7729, 0x7eda, 0x9774, 0x859b, 0x5b66, 0x7a74,
+ 0x96ea, 0x8840, 0x52cb, 0x718f, 0x5faa, 0x65ec, 0x8be2, 0x5bfb,
+ 0x9a6f, 0x5de1, 0x6b89, 0x6c5b, 0x8bad, 0x8baf, 0x900a, 0x8fc5,
+ 0x538b, 0x62bc, 0x9e26, 0x9e2d, 0x5440, 0x4e2b, 0x82bd, 0x7259,
+ 0x869c, 0x5d16, 0x8859, 0x6daf, 0x96c5, 0x54d1, 0x4e9a, 0x8bb6,
+ 0x7109, 0x54bd, 0x9609, 0x70df, 0x6df9, 0x76d0, 0x4e25, 0x7814,
+ 0x8712, 0x5ca9, 0x5ef6, 0x8a00, 0x989c, 0x960e, 0x708e, 0x6cbf,
+ 0x5944, 0x63a9, 0x773c, 0x884d, 0x6f14, 0x8273, 0x5830, 0x71d5,
+ 0x538c, 0x781a, 0x96c1, 0x5501, 0x5f66, 0x7130, 0x5bb4, 0x8c1a,
+ 0x9a8c, 0x6b83, 0x592e, 0x9e2f, 0x79e7, 0x6768, 0x626c, 0x4f6f,
+ 0x75a1, 0x7f8a, 0x6d0b, 0x9633, 0x6c27, 0x4ef0, 0x75d2, 0x517b,
+ 0x6837, 0x6f3e, 0x9080, 0x8170, 0x5996, 0x7476,
+ /* 0xd2 */
+ 0x8938, 0x8939, 0x893a, 0x893b, 0x893c, 0x893d, 0x893e, 0x893f,
+ 0x8940, 0x8942, 0x8943, 0x8945, 0x8946, 0x8947, 0x8948, 0x8949,
+ 0x894a, 0x894b, 0x894c, 0x894d, 0x894e, 0x894f, 0x8950, 0x8951,
+ 0x8952, 0x8953, 0x8954, 0x8955, 0x8956, 0x8957, 0x8958, 0x8959,
+ 0x895a, 0x895b, 0x895c, 0x895d, 0x8960, 0x8961, 0x8962, 0x8963,
+ 0x8964, 0x8965, 0x8967, 0x8968, 0x8969, 0x896a, 0x896b, 0x896c,
+ 0x896d, 0x896e, 0x896f, 0x8970, 0x8971, 0x8972, 0x8973, 0x8974,
+ 0x8975, 0x8976, 0x8977, 0x8978, 0x8979, 0x897a, 0x897c, 0x897d,
+ 0x897e, 0x8980, 0x8982, 0x8984, 0x8985, 0x8987, 0x8988, 0x8989,
+ 0x898a, 0x898b, 0x898c, 0x898d, 0x898e, 0x898f, 0x8990, 0x8991,
+ 0x8992, 0x8993, 0x8994, 0x8995, 0x8996, 0x8997, 0x8998, 0x8999,
+ 0x899a, 0x899b, 0x899c, 0x899d, 0x899e, 0x899f, 0x89a0, 0x89a1,
+ 0x6447, 0x5c27, 0x9065, 0x7a91, 0x8c23, 0x59da, 0x54ac, 0x8200,
+ 0x836f, 0x8981, 0x8000, 0x6930, 0x564e, 0x8036, 0x7237, 0x91ce,
+ 0x51b6, 0x4e5f, 0x9875, 0x6396, 0x4e1a, 0x53f6, 0x66f3, 0x814b,
+ 0x591c, 0x6db2, 0x4e00, 0x58f9, 0x533b, 0x63d6, 0x94f1, 0x4f9d,
+ 0x4f0a, 0x8863, 0x9890, 0x5937, 0x9057, 0x79fb, 0x4eea, 0x80f0,
+ 0x7591, 0x6c82, 0x5b9c, 0x59e8, 0x5f5d, 0x6905, 0x8681, 0x501a,
+ 0x5df2, 0x4e59, 0x77e3, 0x4ee5, 0x827a, 0x6291, 0x6613, 0x9091,
+ 0x5c79, 0x4ebf, 0x5f79, 0x81c6, 0x9038, 0x8084, 0x75ab, 0x4ea6,
+ 0x88d4, 0x610f, 0x6bc5, 0x5fc6, 0x4e49, 0x76ca, 0x6ea2, 0x8be3,
+ 0x8bae, 0x8c0a, 0x8bd1, 0x5f02, 0x7ffc, 0x7fcc, 0x7ece, 0x8335,
+ 0x836b, 0x56e0, 0x6bb7, 0x97f3, 0x9634, 0x59fb, 0x541f, 0x94f6,
+ 0x6deb, 0x5bc5, 0x996e, 0x5c39, 0x5f15, 0x9690,
+ /* 0xd3 */
+ 0x89a2, 0x89a3, 0x89a4, 0x89a5, 0x89a6, 0x89a7, 0x89a8, 0x89a9,
+ 0x89aa, 0x89ab, 0x89ac, 0x89ad, 0x89ae, 0x89af, 0x89b0, 0x89b1,
+ 0x89b2, 0x89b3, 0x89b4, 0x89b5, 0x89b6, 0x89b7, 0x89b8, 0x89b9,
+ 0x89ba, 0x89bb, 0x89bc, 0x89bd, 0x89be, 0x89bf, 0x89c0, 0x89c3,
+ 0x89cd, 0x89d3, 0x89d4, 0x89d5, 0x89d7, 0x89d8, 0x89d9, 0x89db,
+ 0x89dd, 0x89df, 0x89e0, 0x89e1, 0x89e2, 0x89e4, 0x89e7, 0x89e8,
+ 0x89e9, 0x89ea, 0x89ec, 0x89ed, 0x89ee, 0x89f0, 0x89f1, 0x89f2,
+ 0x89f4, 0x89f5, 0x89f6, 0x89f7, 0x89f8, 0x89f9, 0x89fa, 0x89fb,
+ 0x89fc, 0x89fd, 0x89fe, 0x89ff, 0x8a01, 0x8a02, 0x8a03, 0x8a04,
+ 0x8a05, 0x8a06, 0x8a08, 0x8a09, 0x8a0a, 0x8a0b, 0x8a0c, 0x8a0d,
+ 0x8a0e, 0x8a0f, 0x8a10, 0x8a11, 0x8a12, 0x8a13, 0x8a14, 0x8a15,
+ 0x8a16, 0x8a17, 0x8a18, 0x8a19, 0x8a1a, 0x8a1b, 0x8a1c, 0x8a1d,
+ 0x5370, 0x82f1, 0x6a31, 0x5a74, 0x9e70, 0x5e94, 0x7f28, 0x83b9,
+ 0x8424, 0x8425, 0x8367, 0x8747, 0x8fce, 0x8d62, 0x76c8, 0x5f71,
+ 0x9896, 0x786c, 0x6620, 0x54df, 0x62e5, 0x4f63, 0x81c3, 0x75c8,
+ 0x5eb8, 0x96cd, 0x8e0a, 0x86f9, 0x548f, 0x6cf3, 0x6d8c, 0x6c38,
+ 0x607f, 0x52c7, 0x7528, 0x5e7d, 0x4f18, 0x60a0, 0x5fe7, 0x5c24,
+ 0x7531, 0x90ae, 0x94c0, 0x72b9, 0x6cb9, 0x6e38, 0x9149, 0x6709,
+ 0x53cb, 0x53f3, 0x4f51, 0x91c9, 0x8bf1, 0x53c8, 0x5e7c, 0x8fc2,
+ 0x6de4, 0x4e8e, 0x76c2, 0x6986, 0x865e, 0x611a, 0x8206, 0x4f59,
+ 0x4fde, 0x903e, 0x9c7c, 0x6109, 0x6e1d, 0x6e14, 0x9685, 0x4e88,
+ 0x5a31, 0x96e8, 0x4e0e, 0x5c7f, 0x79b9, 0x5b87, 0x8bed, 0x7fbd,
+ 0x7389, 0x57df, 0x828b, 0x90c1, 0x5401, 0x9047, 0x55bb, 0x5cea,
+ 0x5fa1, 0x6108, 0x6b32, 0x72f1, 0x80b2, 0x8a89,
+ /* 0xd4 */
+ 0x8a1e, 0x8a1f, 0x8a20, 0x8a21, 0x8a22, 0x8a23, 0x8a24, 0x8a25,
+ 0x8a26, 0x8a27, 0x8a28, 0x8a29, 0x8a2a, 0x8a2b, 0x8a2c, 0x8a2d,
+ 0x8a2e, 0x8a2f, 0x8a30, 0x8a31, 0x8a32, 0x8a33, 0x8a34, 0x8a35,
+ 0x8a36, 0x8a37, 0x8a38, 0x8a39, 0x8a3a, 0x8a3b, 0x8a3c, 0x8a3d,
+ 0x8a3f, 0x8a40, 0x8a41, 0x8a42, 0x8a43, 0x8a44, 0x8a45, 0x8a46,
+ 0x8a47, 0x8a49, 0x8a4a, 0x8a4b, 0x8a4c, 0x8a4d, 0x8a4e, 0x8a4f,
+ 0x8a50, 0x8a51, 0x8a52, 0x8a53, 0x8a54, 0x8a55, 0x8a56, 0x8a57,
+ 0x8a58, 0x8a59, 0x8a5a, 0x8a5b, 0x8a5c, 0x8a5d, 0x8a5e, 0x8a5f,
+ 0x8a60, 0x8a61, 0x8a62, 0x8a63, 0x8a64, 0x8a65, 0x8a66, 0x8a67,
+ 0x8a68, 0x8a69, 0x8a6a, 0x8a6b, 0x8a6c, 0x8a6d, 0x8a6e, 0x8a6f,
+ 0x8a70, 0x8a71, 0x8a72, 0x8a73, 0x8a74, 0x8a75, 0x8a76, 0x8a77,
+ 0x8a78, 0x8a7a, 0x8a7b, 0x8a7c, 0x8a7d, 0x8a7e, 0x8a7f, 0x8a80,
+ 0x6d74, 0x5bd3, 0x88d5, 0x9884, 0x8c6b, 0x9a6d, 0x9e33, 0x6e0a,
+ 0x51a4, 0x5143, 0x57a3, 0x8881, 0x539f, 0x63f4, 0x8f95, 0x56ed,
+ 0x5458, 0x5706, 0x733f, 0x6e90, 0x7f18, 0x8fdc, 0x82d1, 0x613f,
+ 0x6028, 0x9662, 0x66f0, 0x7ea6, 0x8d8a, 0x8dc3, 0x94a5, 0x5cb3,
+ 0x7ca4, 0x6708, 0x60a6, 0x9605, 0x8018, 0x4e91, 0x90e7, 0x5300,
+ 0x9668, 0x5141, 0x8fd0, 0x8574, 0x915d, 0x6655, 0x97f5, 0x5b55,
+ 0x531d, 0x7838, 0x6742, 0x683d, 0x54c9, 0x707e, 0x5bb0, 0x8f7d,
+ 0x518d, 0x5728, 0x54b1, 0x6512, 0x6682, 0x8d5e, 0x8d43, 0x810f,
+ 0x846c, 0x906d, 0x7cdf, 0x51ff, 0x85fb, 0x67a3, 0x65e9, 0x6fa1,
+ 0x86a4, 0x8e81, 0x566a, 0x9020, 0x7682, 0x7076, 0x71e5, 0x8d23,
+ 0x62e9, 0x5219, 0x6cfd, 0x8d3c, 0x600e, 0x589e, 0x618e, 0x66fe,
+ 0x8d60, 0x624e, 0x55b3, 0x6e23, 0x672d, 0x8f67,
+ /* 0xd5 */
+ 0x8a81, 0x8a82, 0x8a83, 0x8a84, 0x8a85, 0x8a86, 0x8a87, 0x8a88,
+ 0x8a8b, 0x8a8c, 0x8a8d, 0x8a8e, 0x8a8f, 0x8a90, 0x8a91, 0x8a92,
+ 0x8a94, 0x8a95, 0x8a96, 0x8a97, 0x8a98, 0x8a99, 0x8a9a, 0x8a9b,
+ 0x8a9c, 0x8a9d, 0x8a9e, 0x8a9f, 0x8aa0, 0x8aa1, 0x8aa2, 0x8aa3,
+ 0x8aa4, 0x8aa5, 0x8aa6, 0x8aa7, 0x8aa8, 0x8aa9, 0x8aaa, 0x8aab,
+ 0x8aac, 0x8aad, 0x8aae, 0x8aaf, 0x8ab0, 0x8ab1, 0x8ab2, 0x8ab3,
+ 0x8ab4, 0x8ab5, 0x8ab6, 0x8ab7, 0x8ab8, 0x8ab9, 0x8aba, 0x8abb,
+ 0x8abc, 0x8abd, 0x8abe, 0x8abf, 0x8ac0, 0x8ac1, 0x8ac2, 0x8ac3,
+ 0x8ac4, 0x8ac5, 0x8ac6, 0x8ac7, 0x8ac8, 0x8ac9, 0x8aca, 0x8acb,
+ 0x8acc, 0x8acd, 0x8ace, 0x8acf, 0x8ad0, 0x8ad1, 0x8ad2, 0x8ad3,
+ 0x8ad4, 0x8ad5, 0x8ad6, 0x8ad7, 0x8ad8, 0x8ad9, 0x8ada, 0x8adb,
+ 0x8adc, 0x8add, 0x8ade, 0x8adf, 0x8ae0, 0x8ae1, 0x8ae2, 0x8ae3,
+ 0x94e1, 0x95f8, 0x7728, 0x6805, 0x69a8, 0x548b, 0x4e4d, 0x70b8,
+ 0x8bc8, 0x6458, 0x658b, 0x5b85, 0x7a84, 0x503a, 0x5be8, 0x77bb,
+ 0x6be1, 0x8a79, 0x7c98, 0x6cbe, 0x76cf, 0x65a9, 0x8f97, 0x5d2d,
+ 0x5c55, 0x8638, 0x6808, 0x5360, 0x6218, 0x7ad9, 0x6e5b, 0x7efd,
+ 0x6a1f, 0x7ae0, 0x5f70, 0x6f33, 0x5f20, 0x638c, 0x6da8, 0x6756,
+ 0x4e08, 0x5e10, 0x8d26, 0x4ed7, 0x80c0, 0x7634, 0x969c, 0x62db,
+ 0x662d, 0x627e, 0x6cbc, 0x8d75, 0x7167, 0x7f69, 0x5146, 0x8087,
+ 0x53ec, 0x906e, 0x6298, 0x54f2, 0x86f0, 0x8f99, 0x8005, 0x9517,
+ 0x8517, 0x8fd9, 0x6d59, 0x73cd, 0x659f, 0x771f, 0x7504, 0x7827,
+ 0x81fb, 0x8d1e, 0x9488, 0x4fa6, 0x6795, 0x75b9, 0x8bca, 0x9707,
+ 0x632f, 0x9547, 0x9635, 0x84b8, 0x6323, 0x7741, 0x5f81, 0x72f0,
+ 0x4e89, 0x6014, 0x6574, 0x62ef, 0x6b63, 0x653f,
+ /* 0xd6 */
+ 0x8ae4, 0x8ae5, 0x8ae6, 0x8ae7, 0x8ae8, 0x8ae9, 0x8aea, 0x8aeb,
+ 0x8aec, 0x8aed, 0x8aee, 0x8aef, 0x8af0, 0x8af1, 0x8af2, 0x8af3,
+ 0x8af4, 0x8af5, 0x8af6, 0x8af7, 0x8af8, 0x8af9, 0x8afa, 0x8afb,
+ 0x8afc, 0x8afd, 0x8afe, 0x8aff, 0x8b00, 0x8b01, 0x8b02, 0x8b03,
+ 0x8b04, 0x8b05, 0x8b06, 0x8b08, 0x8b09, 0x8b0a, 0x8b0b, 0x8b0c,
+ 0x8b0d, 0x8b0e, 0x8b0f, 0x8b10, 0x8b11, 0x8b12, 0x8b13, 0x8b14,
+ 0x8b15, 0x8b16, 0x8b17, 0x8b18, 0x8b19, 0x8b1a, 0x8b1b, 0x8b1c,
+ 0x8b1d, 0x8b1e, 0x8b1f, 0x8b20, 0x8b21, 0x8b22, 0x8b23, 0x8b24,
+ 0x8b25, 0x8b27, 0x8b28, 0x8b29, 0x8b2a, 0x8b2b, 0x8b2c, 0x8b2d,
+ 0x8b2e, 0x8b2f, 0x8b30, 0x8b31, 0x8b32, 0x8b33, 0x8b34, 0x8b35,
+ 0x8b36, 0x8b37, 0x8b38, 0x8b39, 0x8b3a, 0x8b3b, 0x8b3c, 0x8b3d,
+ 0x8b3e, 0x8b3f, 0x8b40, 0x8b41, 0x8b42, 0x8b43, 0x8b44, 0x8b45,
+ 0x5e27, 0x75c7, 0x90d1, 0x8bc1, 0x829d, 0x679d, 0x652f, 0x5431,
+ 0x8718, 0x77e5, 0x80a2, 0x8102, 0x6c41, 0x4e4b, 0x7ec7, 0x804c,
+ 0x76f4, 0x690d, 0x6b96, 0x6267, 0x503c, 0x4f84, 0x5740, 0x6307,
+ 0x6b62, 0x8dbe, 0x53ea, 0x65e8, 0x7eb8, 0x5fd7, 0x631a, 0x63b7,
+ 0x81f3, 0x81f4, 0x7f6e, 0x5e1c, 0x5cd9, 0x5236, 0x667a, 0x79e9,
+ 0x7a1a, 0x8d28, 0x7099, 0x75d4, 0x6ede, 0x6cbb, 0x7a92, 0x4e2d,
+ 0x76c5, 0x5fe0, 0x949f, 0x8877, 0x7ec8, 0x79cd, 0x80bf, 0x91cd,
+ 0x4ef2, 0x4f17, 0x821f, 0x5468, 0x5dde, 0x6d32, 0x8bcc, 0x7ca5,
+ 0x8f74, 0x8098, 0x5e1a, 0x5492, 0x76b1, 0x5b99, 0x663c, 0x9aa4,
+ 0x73e0, 0x682a, 0x86db, 0x6731, 0x732a, 0x8bf8, 0x8bdb, 0x9010,
+ 0x7af9, 0x70db, 0x716e, 0x62c4, 0x77a9, 0x5631, 0x4e3b, 0x8457,
+ 0x67f1, 0x52a9, 0x86c0, 0x8d2e, 0x94f8, 0x7b51,
+ /* 0xd7 */
+ 0x8b46, 0x8b47, 0x8b48, 0x8b49, 0x8b4a, 0x8b4b, 0x8b4c, 0x8b4d,
+ 0x8b4e, 0x8b4f, 0x8b50, 0x8b51, 0x8b52, 0x8b53, 0x8b54, 0x8b55,
+ 0x8b56, 0x8b57, 0x8b58, 0x8b59, 0x8b5a, 0x8b5b, 0x8b5c, 0x8b5d,
+ 0x8b5e, 0x8b5f, 0x8b60, 0x8b61, 0x8b62, 0x8b63, 0x8b64, 0x8b65,
+ 0x8b67, 0x8b68, 0x8b69, 0x8b6a, 0x8b6b, 0x8b6d, 0x8b6e, 0x8b6f,
+ 0x8b70, 0x8b71, 0x8b72, 0x8b73, 0x8b74, 0x8b75, 0x8b76, 0x8b77,
+ 0x8b78, 0x8b79, 0x8b7a, 0x8b7b, 0x8b7c, 0x8b7d, 0x8b7e, 0x8b7f,
+ 0x8b80, 0x8b81, 0x8b82, 0x8b83, 0x8b84, 0x8b85, 0x8b86, 0x8b87,
+ 0x8b88, 0x8b89, 0x8b8a, 0x8b8b, 0x8b8c, 0x8b8d, 0x8b8e, 0x8b8f,
+ 0x8b90, 0x8b91, 0x8b92, 0x8b93, 0x8b94, 0x8b95, 0x8b96, 0x8b97,
+ 0x8b98, 0x8b99, 0x8b9a, 0x8b9b, 0x8b9c, 0x8b9d, 0x8b9e, 0x8b9f,
+ 0x8bac, 0x8bb1, 0x8bbb, 0x8bc7, 0x8bd0, 0x8bea, 0x8c09, 0x8c1e,
+ 0x4f4f, 0x6ce8, 0x795d, 0x9a7b, 0x6293, 0x722a, 0x62fd, 0x4e13,
+ 0x7816, 0x8f6c, 0x64b0, 0x8d5a, 0x7bc6, 0x6869, 0x5e84, 0x88c5,
+ 0x5986, 0x649e, 0x58ee, 0x72b6, 0x690e, 0x9525, 0x8ffd, 0x8d58,
+ 0x5760, 0x7f00, 0x8c06, 0x51c6, 0x6349, 0x62d9, 0x5353, 0x684c,
+ 0x7422, 0x8301, 0x914c, 0x5544, 0x7740, 0x707c, 0x6d4a, 0x5179,
+ 0x54a8, 0x8d44, 0x59ff, 0x6ecb, 0x6dc4, 0x5b5c, 0x7d2b, 0x4ed4,
+ 0x7c7d, 0x6ed3, 0x5b50, 0x81ea, 0x6e0d, 0x5b57, 0x9b03, 0x68d5,
+ 0x8e2a, 0x5b97, 0x7efc, 0x603b, 0x7eb5, 0x90b9, 0x8d70, 0x594f,
+ 0x63cd, 0x79df, 0x8db3, 0x5352, 0x65cf, 0x7956, 0x8bc5, 0x963b,
+ 0x7ec4, 0x94bb, 0x7e82, 0x5634, 0x9189, 0x6700, 0x7f6a, 0x5c0a,
+ 0x9075, 0x6628, 0x5de6, 0x4f50, 0x67de, 0x505a, 0x4f5c, 0x5750,
+ 0x5ea7, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ /* 0xd8 */
+ 0x8c38, 0x8c39, 0x8c3a, 0x8c3b, 0x8c3c, 0x8c3d, 0x8c3e, 0x8c3f,
+ 0x8c40, 0x8c42, 0x8c43, 0x8c44, 0x8c45, 0x8c48, 0x8c4a, 0x8c4b,
+ 0x8c4d, 0x8c4e, 0x8c4f, 0x8c50, 0x8c51, 0x8c52, 0x8c53, 0x8c54,
+ 0x8c56, 0x8c57, 0x8c58, 0x8c59, 0x8c5b, 0x8c5c, 0x8c5d, 0x8c5e,
+ 0x8c5f, 0x8c60, 0x8c63, 0x8c64, 0x8c65, 0x8c66, 0x8c67, 0x8c68,
+ 0x8c69, 0x8c6c, 0x8c6d, 0x8c6e, 0x8c6f, 0x8c70, 0x8c71, 0x8c72,
+ 0x8c74, 0x8c75, 0x8c76, 0x8c77, 0x8c7b, 0x8c7c, 0x8c7d, 0x8c7e,
+ 0x8c7f, 0x8c80, 0x8c81, 0x8c83, 0x8c84, 0x8c86, 0x8c87, 0x8c88,
+ 0x8c8b, 0x8c8d, 0x8c8e, 0x8c8f, 0x8c90, 0x8c91, 0x8c92, 0x8c93,
+ 0x8c95, 0x8c96, 0x8c97, 0x8c99, 0x8c9a, 0x8c9b, 0x8c9c, 0x8c9d,
+ 0x8c9e, 0x8c9f, 0x8ca0, 0x8ca1, 0x8ca2, 0x8ca3, 0x8ca4, 0x8ca5,
+ 0x8ca6, 0x8ca7, 0x8ca8, 0x8ca9, 0x8caa, 0x8cab, 0x8cac, 0x8cad,
+ 0x4e8d, 0x4e0c, 0x5140, 0x4e10, 0x5eff, 0x5345, 0x4e15, 0x4e98,
+ 0x4e1e, 0x9b32, 0x5b6c, 0x5669, 0x4e28, 0x79ba, 0x4e3f, 0x5315,
+ 0x4e47, 0x592d, 0x723b, 0x536e, 0x6c10, 0x56df, 0x80e4, 0x9997,
+ 0x6bd3, 0x777e, 0x9f17, 0x4e36, 0x4e9f, 0x9f10, 0x4e5c, 0x4e69,
+ 0x4e93, 0x8288, 0x5b5b, 0x556c, 0x560f, 0x4ec4, 0x538d, 0x539d,
+ 0x53a3, 0x53a5, 0x53ae, 0x9765, 0x8d5d, 0x531a, 0x53f5, 0x5326,
+ 0x532e, 0x533e, 0x8d5c, 0x5366, 0x5363, 0x5202, 0x5208, 0x520e,
+ 0x522d, 0x5233, 0x523f, 0x5240, 0x524c, 0x525e, 0x5261, 0x525c,
+ 0x84af, 0x527d, 0x5282, 0x5281, 0x5290, 0x5293, 0x5182, 0x7f54,
+ 0x4ebb, 0x4ec3, 0x4ec9, 0x4ec2, 0x4ee8, 0x4ee1, 0x4eeb, 0x4ede,
+ 0x4f1b, 0x4ef3, 0x4f22, 0x4f64, 0x4ef5, 0x4f25, 0x4f27, 0x4f09,
+ 0x4f2b, 0x4f5e, 0x4f67, 0x6538, 0x4f5a, 0x4f5d,
+ /* 0xd9 */
+ 0x8cae, 0x8caf, 0x8cb0, 0x8cb1, 0x8cb2, 0x8cb3, 0x8cb4, 0x8cb5,
+ 0x8cb6, 0x8cb7, 0x8cb8, 0x8cb9, 0x8cba, 0x8cbb, 0x8cbc, 0x8cbd,
+ 0x8cbe, 0x8cbf, 0x8cc0, 0x8cc1, 0x8cc2, 0x8cc3, 0x8cc4, 0x8cc5,
+ 0x8cc6, 0x8cc7, 0x8cc8, 0x8cc9, 0x8cca, 0x8ccb, 0x8ccc, 0x8ccd,
+ 0x8cce, 0x8ccf, 0x8cd0, 0x8cd1, 0x8cd2, 0x8cd3, 0x8cd4, 0x8cd5,
+ 0x8cd6, 0x8cd7, 0x8cd8, 0x8cd9, 0x8cda, 0x8cdb, 0x8cdc, 0x8cdd,
+ 0x8cde, 0x8cdf, 0x8ce0, 0x8ce1, 0x8ce2, 0x8ce3, 0x8ce4, 0x8ce5,
+ 0x8ce6, 0x8ce7, 0x8ce8, 0x8ce9, 0x8cea, 0x8ceb, 0x8cec, 0x8ced,
+ 0x8cee, 0x8cef, 0x8cf0, 0x8cf1, 0x8cf2, 0x8cf3, 0x8cf4, 0x8cf5,
+ 0x8cf6, 0x8cf7, 0x8cf8, 0x8cf9, 0x8cfa, 0x8cfb, 0x8cfc, 0x8cfd,
+ 0x8cfe, 0x8cff, 0x8d00, 0x8d01, 0x8d02, 0x8d03, 0x8d04, 0x8d05,
+ 0x8d06, 0x8d07, 0x8d08, 0x8d09, 0x8d0a, 0x8d0b, 0x8d0c, 0x8d0d,
+ 0x4f5f, 0x4f57, 0x4f32, 0x4f3d, 0x4f76, 0x4f74, 0x4f91, 0x4f89,
+ 0x4f83, 0x4f8f, 0x4f7e, 0x4f7b, 0x4faa, 0x4f7c, 0x4fac, 0x4f94,
+ 0x4fe6, 0x4fe8, 0x4fea, 0x4fc5, 0x4fda, 0x4fe3, 0x4fdc, 0x4fd1,
+ 0x4fdf, 0x4ff8, 0x5029, 0x504c, 0x4ff3, 0x502c, 0x500f, 0x502e,
+ 0x502d, 0x4ffe, 0x501c, 0x500c, 0x5025, 0x5028, 0x507e, 0x5043,
+ 0x5055, 0x5048, 0x504e, 0x506c, 0x507b, 0x50a5, 0x50a7, 0x50a9,
+ 0x50ba, 0x50d6, 0x5106, 0x50ed, 0x50ec, 0x50e6, 0x50ee, 0x5107,
+ 0x510b, 0x4edd, 0x6c3d, 0x4f58, 0x4f65, 0x4fce, 0x9fa0, 0x6c46,
+ 0x7c74, 0x516e, 0x5dfd, 0x9ec9, 0x9998, 0x5181, 0x5914, 0x52f9,
+ 0x530d, 0x8a07, 0x5310, 0x51eb, 0x5919, 0x5155, 0x4ea0, 0x5156,
+ 0x4eb3, 0x886e, 0x88a4, 0x4eb5, 0x8114, 0x88d2, 0x7980, 0x5b34,
+ 0x8803, 0x7fb8, 0x51ab, 0x51b1, 0x51bd, 0x51bc,
+ /* 0xda */
+ 0x8d0e, 0x8d0f, 0x8d10, 0x8d11, 0x8d12, 0x8d13, 0x8d14, 0x8d15,
+ 0x8d16, 0x8d17, 0x8d18, 0x8d19, 0x8d1a, 0x8d1b, 0x8d1c, 0x8d20,
+ 0x8d51, 0x8d52, 0x8d57, 0x8d5f, 0x8d65, 0x8d68, 0x8d69, 0x8d6a,
+ 0x8d6c, 0x8d6e, 0x8d6f, 0x8d71, 0x8d72, 0x8d78, 0x8d79, 0x8d7a,
+ 0x8d7b, 0x8d7c, 0x8d7d, 0x8d7e, 0x8d7f, 0x8d80, 0x8d82, 0x8d83,
+ 0x8d86, 0x8d87, 0x8d88, 0x8d89, 0x8d8c, 0x8d8d, 0x8d8e, 0x8d8f,
+ 0x8d90, 0x8d92, 0x8d93, 0x8d95, 0x8d96, 0x8d97, 0x8d98, 0x8d99,
+ 0x8d9a, 0x8d9b, 0x8d9c, 0x8d9d, 0x8d9e, 0x8da0, 0x8da1, 0x8da2,
+ 0x8da4, 0x8da5, 0x8da6, 0x8da7, 0x8da8, 0x8da9, 0x8daa, 0x8dab,
+ 0x8dac, 0x8dad, 0x8dae, 0x8daf, 0x8db0, 0x8db2, 0x8db6, 0x8db7,
+ 0x8db9, 0x8dbb, 0x8dbd, 0x8dc0, 0x8dc1, 0x8dc2, 0x8dc5, 0x8dc7,
+ 0x8dc8, 0x8dc9, 0x8dca, 0x8dcd, 0x8dd0, 0x8dd2, 0x8dd3, 0x8dd4,
+ 0x51c7, 0x5196, 0x51a2, 0x51a5, 0x8ba0, 0x8ba6, 0x8ba7, 0x8baa,
+ 0x8bb4, 0x8bb5, 0x8bb7, 0x8bc2, 0x8bc3, 0x8bcb, 0x8bcf, 0x8bce,
+ 0x8bd2, 0x8bd3, 0x8bd4, 0x8bd6, 0x8bd8, 0x8bd9, 0x8bdc, 0x8bdf,
+ 0x8be0, 0x8be4, 0x8be8, 0x8be9, 0x8bee, 0x8bf0, 0x8bf3, 0x8bf6,
+ 0x8bf9, 0x8bfc, 0x8bff, 0x8c00, 0x8c02, 0x8c04, 0x8c07, 0x8c0c,
+ 0x8c0f, 0x8c11, 0x8c12, 0x8c14, 0x8c15, 0x8c16, 0x8c19, 0x8c1b,
+ 0x8c18, 0x8c1d, 0x8c1f, 0x8c20, 0x8c21, 0x8c25, 0x8c27, 0x8c2a,
+ 0x8c2b, 0x8c2e, 0x8c2f, 0x8c32, 0x8c33, 0x8c35, 0x8c36, 0x5369,
+ 0x537a, 0x961d, 0x9622, 0x9621, 0x9631, 0x962a, 0x963d, 0x963c,
+ 0x9642, 0x9649, 0x9654, 0x965f, 0x9667, 0x966c, 0x9672, 0x9674,
+ 0x9688, 0x968d, 0x9697, 0x96b0, 0x9097, 0x909b, 0x909d, 0x9099,
+ 0x90ac, 0x90a1, 0x90b4, 0x90b3, 0x90b6, 0x90ba,
+ /* 0xdb */
+ 0x8dd5, 0x8dd8, 0x8dd9, 0x8ddc, 0x8de0, 0x8de1, 0x8de2, 0x8de5,
+ 0x8de6, 0x8de7, 0x8de9, 0x8ded, 0x8dee, 0x8df0, 0x8df1, 0x8df2,
+ 0x8df4, 0x8df6, 0x8dfc, 0x8dfe, 0x8dff, 0x8e00, 0x8e01, 0x8e02,
+ 0x8e03, 0x8e04, 0x8e06, 0x8e07, 0x8e08, 0x8e0b, 0x8e0d, 0x8e0e,
+ 0x8e10, 0x8e11, 0x8e12, 0x8e13, 0x8e15, 0x8e16, 0x8e17, 0x8e18,
+ 0x8e19, 0x8e1a, 0x8e1b, 0x8e1c, 0x8e20, 0x8e21, 0x8e24, 0x8e25,
+ 0x8e26, 0x8e27, 0x8e28, 0x8e2b, 0x8e2d, 0x8e30, 0x8e32, 0x8e33,
+ 0x8e34, 0x8e36, 0x8e37, 0x8e38, 0x8e3b, 0x8e3c, 0x8e3e, 0x8e3f,
+ 0x8e43, 0x8e45, 0x8e46, 0x8e4c, 0x8e4d, 0x8e4e, 0x8e4f, 0x8e50,
+ 0x8e53, 0x8e54, 0x8e55, 0x8e56, 0x8e57, 0x8e58, 0x8e5a, 0x8e5b,
+ 0x8e5c, 0x8e5d, 0x8e5e, 0x8e5f, 0x8e60, 0x8e61, 0x8e62, 0x8e63,
+ 0x8e64, 0x8e65, 0x8e67, 0x8e68, 0x8e6a, 0x8e6b, 0x8e6e, 0x8e71,
+ 0x90b8, 0x90b0, 0x90cf, 0x90c5, 0x90be, 0x90d0, 0x90c4, 0x90c7,
+ 0x90d3, 0x90e6, 0x90e2, 0x90dc, 0x90d7, 0x90db, 0x90eb, 0x90ef,
+ 0x90fe, 0x9104, 0x9122, 0x911e, 0x9123, 0x9131, 0x912f, 0x9139,
+ 0x9143, 0x9146, 0x520d, 0x5942, 0x52a2, 0x52ac, 0x52ad, 0x52be,
+ 0x54ff, 0x52d0, 0x52d6, 0x52f0, 0x53df, 0x71ee, 0x77cd, 0x5ef4,
+ 0x51f5, 0x51fc, 0x9b2f, 0x53b6, 0x5f01, 0x755a, 0x5def, 0x574c,
+ 0x57a9, 0x57a1, 0x587e, 0x58bc, 0x58c5, 0x58d1, 0x5729, 0x572c,
+ 0x572a, 0x5733, 0x5739, 0x572e, 0x572f, 0x575c, 0x573b, 0x5742,
+ 0x5769, 0x5785, 0x576b, 0x5786, 0x577c, 0x577b, 0x5768, 0x576d,
+ 0x5776, 0x5773, 0x57ad, 0x57a4, 0x578c, 0x57b2, 0x57cf, 0x57a7,
+ 0x57b4, 0x5793, 0x57a0, 0x57d5, 0x57d8, 0x57da, 0x57d9, 0x57d2,
+ 0x57b8, 0x57f4, 0x57ef, 0x57f8, 0x57e4, 0x57dd,
+ /* 0xdc */
+ 0x8e73, 0x8e75, 0x8e77, 0x8e78, 0x8e79, 0x8e7a, 0x8e7b, 0x8e7d,
+ 0x8e7e, 0x8e80, 0x8e82, 0x8e83, 0x8e84, 0x8e86, 0x8e88, 0x8e89,
+ 0x8e8a, 0x8e8b, 0x8e8c, 0x8e8d, 0x8e8e, 0x8e91, 0x8e92, 0x8e93,
+ 0x8e95, 0x8e96, 0x8e97, 0x8e98, 0x8e99, 0x8e9a, 0x8e9b, 0x8e9d,
+ 0x8e9f, 0x8ea0, 0x8ea1, 0x8ea2, 0x8ea3, 0x8ea4, 0x8ea5, 0x8ea6,
+ 0x8ea7, 0x8ea8, 0x8ea9, 0x8eaa, 0x8ead, 0x8eae, 0x8eb0, 0x8eb1,
+ 0x8eb3, 0x8eb4, 0x8eb5, 0x8eb6, 0x8eb7, 0x8eb8, 0x8eb9, 0x8ebb,
+ 0x8ebc, 0x8ebd, 0x8ebe, 0x8ebf, 0x8ec0, 0x8ec1, 0x8ec2, 0x8ec3,
+ 0x8ec4, 0x8ec5, 0x8ec6, 0x8ec7, 0x8ec8, 0x8ec9, 0x8eca, 0x8ecb,
+ 0x8ecc, 0x8ecd, 0x8ecf, 0x8ed0, 0x8ed1, 0x8ed2, 0x8ed3, 0x8ed4,
+ 0x8ed5, 0x8ed6, 0x8ed7, 0x8ed8, 0x8ed9, 0x8eda, 0x8edb, 0x8edc,
+ 0x8edd, 0x8ede, 0x8edf, 0x8ee0, 0x8ee1, 0x8ee2, 0x8ee3, 0x8ee4,
+ 0x580b, 0x580d, 0x57fd, 0x57ed, 0x5800, 0x581e, 0x5819, 0x5844,
+ 0x5820, 0x5865, 0x586c, 0x5881, 0x5889, 0x589a, 0x5880, 0x99a8,
+ 0x9f19, 0x61ff, 0x8279, 0x827d, 0x827f, 0x828f, 0x828a, 0x82a8,
+ 0x8284, 0x828e, 0x8291, 0x8297, 0x8299, 0x82ab, 0x82b8, 0x82be,
+ 0x82b0, 0x82c8, 0x82ca, 0x82e3, 0x8298, 0x82b7, 0x82ae, 0x82cb,
+ 0x82cc, 0x82c1, 0x82a9, 0x82b4, 0x82a1, 0x82aa, 0x829f, 0x82c4,
+ 0x82ce, 0x82a4, 0x82e1, 0x8309, 0x82f7, 0x82e4, 0x830f, 0x8307,
+ 0x82dc, 0x82f4, 0x82d2, 0x82d8, 0x830c, 0x82fb, 0x82d3, 0x8311,
+ 0x831a, 0x8306, 0x8314, 0x8315, 0x82e0, 0x82d5, 0x831c, 0x8351,
+ 0x835b, 0x835c, 0x8308, 0x8392, 0x833c, 0x8334, 0x8331, 0x839b,
+ 0x835e, 0x832f, 0x834f, 0x8347, 0x8343, 0x835f, 0x8340, 0x8317,
+ 0x8360, 0x832d, 0x833a, 0x8333, 0x8366, 0x8365,
+ /* 0xdd */
+ 0x8ee5, 0x8ee6, 0x8ee7, 0x8ee8, 0x8ee9, 0x8eea, 0x8eeb, 0x8eec,
+ 0x8eed, 0x8eee, 0x8eef, 0x8ef0, 0x8ef1, 0x8ef2, 0x8ef3, 0x8ef4,
+ 0x8ef5, 0x8ef6, 0x8ef7, 0x8ef8, 0x8ef9, 0x8efa, 0x8efb, 0x8efc,
+ 0x8efd, 0x8efe, 0x8eff, 0x8f00, 0x8f01, 0x8f02, 0x8f03, 0x8f04,
+ 0x8f05, 0x8f06, 0x8f07, 0x8f08, 0x8f09, 0x8f0a, 0x8f0b, 0x8f0c,
+ 0x8f0d, 0x8f0e, 0x8f0f, 0x8f10, 0x8f11, 0x8f12, 0x8f13, 0x8f14,
+ 0x8f15, 0x8f16, 0x8f17, 0x8f18, 0x8f19, 0x8f1a, 0x8f1b, 0x8f1c,
+ 0x8f1d, 0x8f1e, 0x8f1f, 0x8f20, 0x8f21, 0x8f22, 0x8f23, 0x8f24,
+ 0x8f25, 0x8f26, 0x8f27, 0x8f28, 0x8f29, 0x8f2a, 0x8f2b, 0x8f2c,
+ 0x8f2d, 0x8f2e, 0x8f2f, 0x8f30, 0x8f31, 0x8f32, 0x8f33, 0x8f34,
+ 0x8f35, 0x8f36, 0x8f37, 0x8f38, 0x8f39, 0x8f3a, 0x8f3b, 0x8f3c,
+ 0x8f3d, 0x8f3e, 0x8f3f, 0x8f40, 0x8f41, 0x8f42, 0x8f43, 0x8f44,
+ 0x8368, 0x831b, 0x8369, 0x836c, 0x836a, 0x836d, 0x836e, 0x83b0,
+ 0x8378, 0x83b3, 0x83b4, 0x83a0, 0x83aa, 0x8393, 0x839c, 0x8385,
+ 0x837c, 0x83b6, 0x83a9, 0x837d, 0x83b8, 0x837b, 0x8398, 0x839e,
+ 0x83a8, 0x83ba, 0x83bc, 0x83c1, 0x8401, 0x83e5, 0x83d8, 0x5807,
+ 0x8418, 0x840b, 0x83dd, 0x83fd, 0x83d6, 0x841c, 0x8438, 0x8411,
+ 0x8406, 0x83d4, 0x83df, 0x840f, 0x8403, 0x83f8, 0x83f9, 0x83ea,
+ 0x83c5, 0x83c0, 0x8426, 0x83f0, 0x83e1, 0x845c, 0x8451, 0x845a,
+ 0x8459, 0x8473, 0x8487, 0x8488, 0x847a, 0x8489, 0x8478, 0x843c,
+ 0x8446, 0x8469, 0x8476, 0x848c, 0x848e, 0x8431, 0x846d, 0x84c1,
+ 0x84cd, 0x84d0, 0x84e6, 0x84bd, 0x84d3, 0x84ca, 0x84bf, 0x84ba,
+ 0x84e0, 0x84a1, 0x84b9, 0x84b4, 0x8497, 0x84e5, 0x84e3, 0x850c,
+ 0x750d, 0x8538, 0x84f0, 0x8539, 0x851f, 0x853a,
+ /* 0xde */
+ 0x8f45, 0x8f46, 0x8f47, 0x8f48, 0x8f49, 0x8f4a, 0x8f4b, 0x8f4c,
+ 0x8f4d, 0x8f4e, 0x8f4f, 0x8f50, 0x8f51, 0x8f52, 0x8f53, 0x8f54,
+ 0x8f55, 0x8f56, 0x8f57, 0x8f58, 0x8f59, 0x8f5a, 0x8f5b, 0x8f5c,
+ 0x8f5d, 0x8f5e, 0x8f5f, 0x8f60, 0x8f61, 0x8f62, 0x8f63, 0x8f64,
+ 0x8f65, 0x8f6a, 0x8f80, 0x8f8c, 0x8f92, 0x8f9d, 0x8fa0, 0x8fa1,
+ 0x8fa2, 0x8fa4, 0x8fa5, 0x8fa6, 0x8fa7, 0x8faa, 0x8fac, 0x8fad,
+ 0x8fae, 0x8faf, 0x8fb2, 0x8fb3, 0x8fb4, 0x8fb5, 0x8fb7, 0x8fb8,
+ 0x8fba, 0x8fbb, 0x8fbc, 0x8fbf, 0x8fc0, 0x8fc3, 0x8fc6, 0x8fc9,
+ 0x8fca, 0x8fcb, 0x8fcc, 0x8fcd, 0x8fcf, 0x8fd2, 0x8fd6, 0x8fd7,
+ 0x8fda, 0x8fe0, 0x8fe1, 0x8fe3, 0x8fe7, 0x8fec, 0x8fef, 0x8ff1,
+ 0x8ff2, 0x8ff4, 0x8ff5, 0x8ff6, 0x8ffa, 0x8ffb, 0x8ffc, 0x8ffe,
+ 0x8fff, 0x9007, 0x9008, 0x900c, 0x900e, 0x9013, 0x9015, 0x9018,
+ 0x8556, 0x853b, 0x84ff, 0x84fc, 0x8559, 0x8548, 0x8568, 0x8564,
+ 0x855e, 0x857a, 0x77a2, 0x8543, 0x8572, 0x857b, 0x85a4, 0x85a8,
+ 0x8587, 0x858f, 0x8579, 0x85ae, 0x859c, 0x8585, 0x85b9, 0x85b7,
+ 0x85b0, 0x85d3, 0x85c1, 0x85dc, 0x85ff, 0x8627, 0x8605, 0x8629,
+ 0x8616, 0x863c, 0x5efe, 0x5f08, 0x593c, 0x5941, 0x8037, 0x5955,
+ 0x595a, 0x5958, 0x530f, 0x5c22, 0x5c25, 0x5c2c, 0x5c34, 0x624c,
+ 0x626a, 0x629f, 0x62bb, 0x62ca, 0x62da, 0x62d7, 0x62ee, 0x6322,
+ 0x62f6, 0x6339, 0x634b, 0x6343, 0x63ad, 0x63f6, 0x6371, 0x637a,
+ 0x638e, 0x63b4, 0x636d, 0x63ac, 0x638a, 0x6369, 0x63ae, 0x63bc,
+ 0x63f2, 0x63f8, 0x63e0, 0x63ff, 0x63c4, 0x63de, 0x63ce, 0x6452,
+ 0x63c6, 0x63be, 0x6445, 0x6441, 0x640b, 0x641b, 0x6420, 0x640c,
+ 0x6426, 0x6421, 0x645e, 0x6484, 0x646d, 0x6496,
+ /* 0xdf */
+ 0x9019, 0x901c, 0x9023, 0x9024, 0x9025, 0x9027, 0x9028, 0x9029,
+ 0x902a, 0x902b, 0x902c, 0x9030, 0x9031, 0x9032, 0x9033, 0x9034,
+ 0x9037, 0x9039, 0x903a, 0x903d, 0x903f, 0x9040, 0x9043, 0x9045,
+ 0x9046, 0x9048, 0x9049, 0x904a, 0x904b, 0x904c, 0x904e, 0x9054,
+ 0x9055, 0x9056, 0x9059, 0x905a, 0x905c, 0x905d, 0x905e, 0x905f,
+ 0x9060, 0x9061, 0x9064, 0x9066, 0x9067, 0x9069, 0x906a, 0x906b,
+ 0x906c, 0x906f, 0x9070, 0x9071, 0x9072, 0x9073, 0x9076, 0x9077,
+ 0x9078, 0x9079, 0x907a, 0x907b, 0x907c, 0x907e, 0x9081, 0x9084,
+ 0x9085, 0x9086, 0x9087, 0x9089, 0x908a, 0x908c, 0x908d, 0x908e,
+ 0x908f, 0x9090, 0x9092, 0x9094, 0x9096, 0x9098, 0x909a, 0x909c,
+ 0x909e, 0x909f, 0x90a0, 0x90a4, 0x90a5, 0x90a7, 0x90a8, 0x90a9,
+ 0x90ab, 0x90ad, 0x90b2, 0x90b7, 0x90bc, 0x90bd, 0x90bf, 0x90c0,
+ 0x647a, 0x64b7, 0x64b8, 0x6499, 0x64ba, 0x64c0, 0x64d0, 0x64d7,
+ 0x64e4, 0x64e2, 0x6509, 0x6525, 0x652e, 0x5f0b, 0x5fd2, 0x7519,
+ 0x5f11, 0x535f, 0x53f1, 0x53fd, 0x53e9, 0x53e8, 0x53fb, 0x5412,
+ 0x5416, 0x5406, 0x544b, 0x5452, 0x5453, 0x5454, 0x5456, 0x5443,
+ 0x5421, 0x5457, 0x5459, 0x5423, 0x5432, 0x5482, 0x5494, 0x5477,
+ 0x5471, 0x5464, 0x549a, 0x549b, 0x5484, 0x5476, 0x5466, 0x549d,
+ 0x54d0, 0x54ad, 0x54c2, 0x54b4, 0x54d2, 0x54a7, 0x54a6, 0x54d3,
+ 0x54d4, 0x5472, 0x54a3, 0x54d5, 0x54bb, 0x54bf, 0x54cc, 0x54d9,
+ 0x54da, 0x54dc, 0x54a9, 0x54aa, 0x54a4, 0x54dd, 0x54cf, 0x54de,
+ 0x551b, 0x54e7, 0x5520, 0x54fd, 0x5514, 0x54f3, 0x5522, 0x5523,
+ 0x550f, 0x5511, 0x5527, 0x552a, 0x5567, 0x558f, 0x55b5, 0x5549,
+ 0x556d, 0x5541, 0x5555, 0x553f, 0x5550, 0x553c,
+ /* 0xe0 */
+ 0x90c2, 0x90c3, 0x90c6, 0x90c8, 0x90c9, 0x90cb, 0x90cc, 0x90cd,
+ 0x90d2, 0x90d4, 0x90d5, 0x90d6, 0x90d8, 0x90d9, 0x90da, 0x90de,
+ 0x90df, 0x90e0, 0x90e3, 0x90e4, 0x90e5, 0x90e9, 0x90ea, 0x90ec,
+ 0x90ee, 0x90f0, 0x90f1, 0x90f2, 0x90f3, 0x90f5, 0x90f6, 0x90f7,
+ 0x90f9, 0x90fa, 0x90fb, 0x90fc, 0x90ff, 0x9100, 0x9101, 0x9103,
+ 0x9105, 0x9106, 0x9107, 0x9108, 0x9109, 0x910a, 0x910b, 0x910c,
+ 0x910d, 0x910e, 0x910f, 0x9110, 0x9111, 0x9112, 0x9113, 0x9114,
+ 0x9115, 0x9116, 0x9117, 0x9118, 0x911a, 0x911b, 0x911c, 0x911d,
+ 0x911f, 0x9120, 0x9121, 0x9124, 0x9125, 0x9126, 0x9127, 0x9128,
+ 0x9129, 0x912a, 0x912b, 0x912c, 0x912d, 0x912e, 0x9130, 0x9132,
+ 0x9133, 0x9134, 0x9135, 0x9136, 0x9137, 0x9138, 0x913a, 0x913b,
+ 0x913c, 0x913d, 0x913e, 0x913f, 0x9140, 0x9141, 0x9142, 0x9144,
+ 0x5537, 0x5556, 0x5575, 0x5576, 0x5577, 0x5533, 0x5530, 0x555c,
+ 0x558b, 0x55d2, 0x5583, 0x55b1, 0x55b9, 0x5588, 0x5581, 0x559f,
+ 0x557e, 0x55d6, 0x5591, 0x557b, 0x55df, 0x55bd, 0x55be, 0x5594,
+ 0x5599, 0x55ea, 0x55f7, 0x55c9, 0x561f, 0x55d1, 0x55eb, 0x55ec,
+ 0x55d4, 0x55e6, 0x55dd, 0x55c4, 0x55ef, 0x55e5, 0x55f2, 0x55f3,
+ 0x55cc, 0x55cd, 0x55e8, 0x55f5, 0x55e4, 0x8f94, 0x561e, 0x5608,
+ 0x560c, 0x5601, 0x5624, 0x5623, 0x55fe, 0x5600, 0x5627, 0x562d,
+ 0x5658, 0x5639, 0x5657, 0x562c, 0x564d, 0x5662, 0x5659, 0x565c,
+ 0x564c, 0x5654, 0x5686, 0x5664, 0x5671, 0x566b, 0x567b, 0x567c,
+ 0x5685, 0x5693, 0x56af, 0x56d4, 0x56d7, 0x56dd, 0x56e1, 0x56f5,
+ 0x56eb, 0x56f9, 0x56ff, 0x5704, 0x570a, 0x5709, 0x571c, 0x5e0f,
+ 0x5e19, 0x5e14, 0x5e11, 0x5e31, 0x5e3b, 0x5e3c,
+ /* 0xe1 */
+ 0x9145, 0x9147, 0x9148, 0x9151, 0x9153, 0x9154, 0x9155, 0x9156,
+ 0x9158, 0x9159, 0x915b, 0x915c, 0x915f, 0x9160, 0x9166, 0x9167,
+ 0x9168, 0x916b, 0x916d, 0x9173, 0x917a, 0x917b, 0x917c, 0x9180,
+ 0x9181, 0x9182, 0x9183, 0x9184, 0x9186, 0x9188, 0x918a, 0x918e,
+ 0x918f, 0x9193, 0x9194, 0x9195, 0x9196, 0x9197, 0x9198, 0x9199,
+ 0x919c, 0x919d, 0x919e, 0x919f, 0x91a0, 0x91a1, 0x91a4, 0x91a5,
+ 0x91a6, 0x91a7, 0x91a8, 0x91a9, 0x91ab, 0x91ac, 0x91b0, 0x91b1,
+ 0x91b2, 0x91b3, 0x91b6, 0x91b7, 0x91b8, 0x91b9, 0x91bb, 0x91bc,
+ 0x91bd, 0x91be, 0x91bf, 0x91c0, 0x91c1, 0x91c2, 0x91c3, 0x91c4,
+ 0x91c5, 0x91c6, 0x91c8, 0x91cb, 0x91d0, 0x91d2, 0x91d3, 0x91d4,
+ 0x91d5, 0x91d6, 0x91d7, 0x91d8, 0x91d9, 0x91da, 0x91db, 0x91dd,
+ 0x91de, 0x91df, 0x91e0, 0x91e1, 0x91e2, 0x91e3, 0x91e4, 0x91e5,
+ 0x5e37, 0x5e44, 0x5e54, 0x5e5b, 0x5e5e, 0x5e61, 0x5c8c, 0x5c7a,
+ 0x5c8d, 0x5c90, 0x5c96, 0x5c88, 0x5c98, 0x5c99, 0x5c91, 0x5c9a,
+ 0x5c9c, 0x5cb5, 0x5ca2, 0x5cbd, 0x5cac, 0x5cab, 0x5cb1, 0x5ca3,
+ 0x5cc1, 0x5cb7, 0x5cc4, 0x5cd2, 0x5ce4, 0x5ccb, 0x5ce5, 0x5d02,
+ 0x5d03, 0x5d27, 0x5d26, 0x5d2e, 0x5d24, 0x5d1e, 0x5d06, 0x5d1b,
+ 0x5d58, 0x5d3e, 0x5d34, 0x5d3d, 0x5d6c, 0x5d5b, 0x5d6f, 0x5d5d,
+ 0x5d6b, 0x5d4b, 0x5d4a, 0x5d69, 0x5d74, 0x5d82, 0x5d99, 0x5d9d,
+ 0x8c73, 0x5db7, 0x5dc5, 0x5f73, 0x5f77, 0x5f82, 0x5f87, 0x5f89,
+ 0x5f8c, 0x5f95, 0x5f99, 0x5f9c, 0x5fa8, 0x5fad, 0x5fb5, 0x5fbc,
+ 0x8862, 0x5f61, 0x72ad, 0x72b0, 0x72b4, 0x72b7, 0x72b8, 0x72c3,
+ 0x72c1, 0x72ce, 0x72cd, 0x72d2, 0x72e8, 0x72ef, 0x72e9, 0x72f2,
+ 0x72f4, 0x72f7, 0x7301, 0x72f3, 0x7303, 0x72fa,
+ /* 0xe2 */
+ 0x91e6, 0x91e7, 0x91e8, 0x91e9, 0x91ea, 0x91eb, 0x91ec, 0x91ed,
+ 0x91ee, 0x91ef, 0x91f0, 0x91f1, 0x91f2, 0x91f3, 0x91f4, 0x91f5,
+ 0x91f6, 0x91f7, 0x91f8, 0x91f9, 0x91fa, 0x91fb, 0x91fc, 0x91fd,
+ 0x91fe, 0x91ff, 0x9200, 0x9201, 0x9202, 0x9203, 0x9204, 0x9205,
+ 0x9206, 0x9207, 0x9208, 0x9209, 0x920a, 0x920b, 0x920c, 0x920d,
+ 0x920e, 0x920f, 0x9210, 0x9211, 0x9212, 0x9213, 0x9214, 0x9215,
+ 0x9216, 0x9217, 0x9218, 0x9219, 0x921a, 0x921b, 0x921c, 0x921d,
+ 0x921e, 0x921f, 0x9220, 0x9221, 0x9222, 0x9223, 0x9224, 0x9225,
+ 0x9226, 0x9227, 0x9228, 0x9229, 0x922a, 0x922b, 0x922c, 0x922d,
+ 0x922e, 0x922f, 0x9230, 0x9231, 0x9232, 0x9233, 0x9234, 0x9235,
+ 0x9236, 0x9237, 0x9238, 0x9239, 0x923a, 0x923b, 0x923c, 0x923d,
+ 0x923e, 0x923f, 0x9240, 0x9241, 0x9242, 0x9243, 0x9244, 0x9245,
+ 0x72fb, 0x7317, 0x7313, 0x7321, 0x730a, 0x731e, 0x731d, 0x7315,
+ 0x7322, 0x7339, 0x7325, 0x732c, 0x7338, 0x7331, 0x7350, 0x734d,
+ 0x7357, 0x7360, 0x736c, 0x736f, 0x737e, 0x821b, 0x5925, 0x98e7,
+ 0x5924, 0x5902, 0x9963, 0x9967, 0x9968, 0x9969, 0x996a, 0x996b,
+ 0x996c, 0x9974, 0x9977, 0x997d, 0x9980, 0x9984, 0x9987, 0x998a,
+ 0x998d, 0x9990, 0x9991, 0x9993, 0x9994, 0x9995, 0x5e80, 0x5e91,
+ 0x5e8b, 0x5e96, 0x5ea5, 0x5ea0, 0x5eb9, 0x5eb5, 0x5ebe, 0x5eb3,
+ 0x8d53, 0x5ed2, 0x5ed1, 0x5edb, 0x5ee8, 0x5eea, 0x81ba, 0x5fc4,
+ 0x5fc9, 0x5fd6, 0x5fcf, 0x6003, 0x5fee, 0x6004, 0x5fe1, 0x5fe4,
+ 0x5ffe, 0x6005, 0x6006, 0x5fea, 0x5fed, 0x5ff8, 0x6019, 0x6035,
+ 0x6026, 0x601b, 0x600f, 0x600d, 0x6029, 0x602b, 0x600a, 0x603f,
+ 0x6021, 0x6078, 0x6079, 0x607b, 0x607a, 0x6042,
+ /* 0xe3 */
+ 0x9246, 0x9247, 0x9248, 0x9249, 0x924a, 0x924b, 0x924c, 0x924d,
+ 0x924e, 0x924f, 0x9250, 0x9251, 0x9252, 0x9253, 0x9254, 0x9255,
+ 0x9256, 0x9257, 0x9258, 0x9259, 0x925a, 0x925b, 0x925c, 0x925d,
+ 0x925e, 0x925f, 0x9260, 0x9261, 0x9262, 0x9263, 0x9264, 0x9265,
+ 0x9266, 0x9267, 0x9268, 0x9269, 0x926a, 0x926b, 0x926c, 0x926d,
+ 0x926e, 0x926f, 0x9270, 0x9271, 0x9272, 0x9273, 0x9275, 0x9276,
+ 0x9277, 0x9278, 0x9279, 0x927a, 0x927b, 0x927c, 0x927d, 0x927e,
+ 0x927f, 0x9280, 0x9281, 0x9282, 0x9283, 0x9284, 0x9285, 0x9286,
+ 0x9287, 0x9288, 0x9289, 0x928a, 0x928b, 0x928c, 0x928d, 0x928f,
+ 0x9290, 0x9291, 0x9292, 0x9293, 0x9294, 0x9295, 0x9296, 0x9297,
+ 0x9298, 0x9299, 0x929a, 0x929b, 0x929c, 0x929d, 0x929e, 0x929f,
+ 0x92a0, 0x92a1, 0x92a2, 0x92a3, 0x92a4, 0x92a5, 0x92a6, 0x92a7,
+ 0x606a, 0x607d, 0x6096, 0x609a, 0x60ad, 0x609d, 0x6083, 0x6092,
+ 0x608c, 0x609b, 0x60ec, 0x60bb, 0x60b1, 0x60dd, 0x60d8, 0x60c6,
+ 0x60da, 0x60b4, 0x6120, 0x6126, 0x6115, 0x6123, 0x60f4, 0x6100,
+ 0x610e, 0x612b, 0x614a, 0x6175, 0x61ac, 0x6194, 0x61a7, 0x61b7,
+ 0x61d4, 0x61f5, 0x5fdd, 0x96b3, 0x95e9, 0x95eb, 0x95f1, 0x95f3,
+ 0x95f5, 0x95f6, 0x95fc, 0x95fe, 0x9603, 0x9604, 0x9606, 0x9608,
+ 0x960a, 0x960b, 0x960c, 0x960d, 0x960f, 0x9612, 0x9615, 0x9616,
+ 0x9617, 0x9619, 0x961a, 0x4e2c, 0x723f, 0x6215, 0x6c35, 0x6c54,
+ 0x6c5c, 0x6c4a, 0x6ca3, 0x6c85, 0x6c90, 0x6c94, 0x6c8c, 0x6c68,
+ 0x6c69, 0x6c74, 0x6c76, 0x6c86, 0x6ca9, 0x6cd0, 0x6cd4, 0x6cad,
+ 0x6cf7, 0x6cf8, 0x6cf1, 0x6cd7, 0x6cb2, 0x6ce0, 0x6cd6, 0x6cfa,
+ 0x6ceb, 0x6cee, 0x6cb1, 0x6cd3, 0x6cef, 0x6cfe,
+ /* 0xe4 */
+ 0x92a8, 0x92a9, 0x92aa, 0x92ab, 0x92ac, 0x92ad, 0x92af, 0x92b0,
+ 0x92b1, 0x92b2, 0x92b3, 0x92b4, 0x92b5, 0x92b6, 0x92b7, 0x92b8,
+ 0x92b9, 0x92ba, 0x92bb, 0x92bc, 0x92bd, 0x92be, 0x92bf, 0x92c0,
+ 0x92c1, 0x92c2, 0x92c3, 0x92c4, 0x92c5, 0x92c6, 0x92c7, 0x92c9,
+ 0x92ca, 0x92cb, 0x92cc, 0x92cd, 0x92ce, 0x92cf, 0x92d0, 0x92d1,
+ 0x92d2, 0x92d3, 0x92d4, 0x92d5, 0x92d6, 0x92d7, 0x92d8, 0x92d9,
+ 0x92da, 0x92db, 0x92dc, 0x92dd, 0x92de, 0x92df, 0x92e0, 0x92e1,
+ 0x92e2, 0x92e3, 0x92e4, 0x92e5, 0x92e6, 0x92e7, 0x92e8, 0x92e9,
+ 0x92ea, 0x92eb, 0x92ec, 0x92ed, 0x92ee, 0x92ef, 0x92f0, 0x92f1,
+ 0x92f2, 0x92f3, 0x92f4, 0x92f5, 0x92f6, 0x92f7, 0x92f8, 0x92f9,
+ 0x92fa, 0x92fb, 0x92fc, 0x92fd, 0x92fe, 0x92ff, 0x9300, 0x9301,
+ 0x9302, 0x9303, 0x9304, 0x9305, 0x9306, 0x9307, 0x9308, 0x9309,
+ 0x6d39, 0x6d27, 0x6d0c, 0x6d43, 0x6d48, 0x6d07, 0x6d04, 0x6d19,
+ 0x6d0e, 0x6d2b, 0x6d4d, 0x6d2e, 0x6d35, 0x6d1a, 0x6d4f, 0x6d52,
+ 0x6d54, 0x6d33, 0x6d91, 0x6d6f, 0x6d9e, 0x6da0, 0x6d5e, 0x6d93,
+ 0x6d94, 0x6d5c, 0x6d60, 0x6d7c, 0x6d63, 0x6e1a, 0x6dc7, 0x6dc5,
+ 0x6dde, 0x6e0e, 0x6dbf, 0x6de0, 0x6e11, 0x6de6, 0x6ddd, 0x6dd9,
+ 0x6e16, 0x6dab, 0x6e0c, 0x6dae, 0x6e2b, 0x6e6e, 0x6e4e, 0x6e6b,
+ 0x6eb2, 0x6e5f, 0x6e86, 0x6e53, 0x6e54, 0x6e32, 0x6e25, 0x6e44,
+ 0x6edf, 0x6eb1, 0x6e98, 0x6ee0, 0x6f2d, 0x6ee2, 0x6ea5, 0x6ea7,
+ 0x6ebd, 0x6ebb, 0x6eb7, 0x6ed7, 0x6eb4, 0x6ecf, 0x6e8f, 0x6ec2,
+ 0x6e9f, 0x6f62, 0x6f46, 0x6f47, 0x6f24, 0x6f15, 0x6ef9, 0x6f2f,
+ 0x6f36, 0x6f4b, 0x6f74, 0x6f2a, 0x6f09, 0x6f29, 0x6f89, 0x6f8d,
+ 0x6f8c, 0x6f78, 0x6f72, 0x6f7c, 0x6f7a, 0x6fd1,
+ /* 0xe5 */
+ 0x930a, 0x930b, 0x930c, 0x930d, 0x930e, 0x930f, 0x9310, 0x9311,
+ 0x9312, 0x9313, 0x9314, 0x9315, 0x9316, 0x9317, 0x9318, 0x9319,
+ 0x931a, 0x931b, 0x931c, 0x931d, 0x931e, 0x931f, 0x9320, 0x9321,
+ 0x9322, 0x9323, 0x9324, 0x9325, 0x9326, 0x9327, 0x9328, 0x9329,
+ 0x932a, 0x932b, 0x932c, 0x932d, 0x932e, 0x932f, 0x9330, 0x9331,
+ 0x9332, 0x9333, 0x9334, 0x9335, 0x9336, 0x9337, 0x9338, 0x9339,
+ 0x933a, 0x933b, 0x933c, 0x933d, 0x933f, 0x9340, 0x9341, 0x9342,
+ 0x9343, 0x9344, 0x9345, 0x9346, 0x9347, 0x9348, 0x9349, 0x934a,
+ 0x934b, 0x934c, 0x934d, 0x934e, 0x934f, 0x9350, 0x9351, 0x9352,
+ 0x9353, 0x9354, 0x9355, 0x9356, 0x9357, 0x9358, 0x9359, 0x935a,
+ 0x935b, 0x935c, 0x935d, 0x935e, 0x935f, 0x9360, 0x9361, 0x9362,
+ 0x9363, 0x9364, 0x9365, 0x9366, 0x9367, 0x9368, 0x9369, 0x936b,
+ 0x6fc9, 0x6fa7, 0x6fb9, 0x6fb6, 0x6fc2, 0x6fe1, 0x6fee, 0x6fde,
+ 0x6fe0, 0x6fef, 0x701a, 0x7023, 0x701b, 0x7039, 0x7035, 0x704f,
+ 0x705e, 0x5b80, 0x5b84, 0x5b95, 0x5b93, 0x5ba5, 0x5bb8, 0x752f,
+ 0x9a9e, 0x6434, 0x5be4, 0x5bee, 0x8930, 0x5bf0, 0x8e47, 0x8b07,
+ 0x8fb6, 0x8fd3, 0x8fd5, 0x8fe5, 0x8fee, 0x8fe4, 0x8fe9, 0x8fe6,
+ 0x8ff3, 0x8fe8, 0x9005, 0x9004, 0x900b, 0x9026, 0x9011, 0x900d,
+ 0x9016, 0x9021, 0x9035, 0x9036, 0x902d, 0x902f, 0x9044, 0x9051,
+ 0x9052, 0x9050, 0x9068, 0x9058, 0x9062, 0x905b, 0x66b9, 0x9074,
+ 0x907d, 0x9082, 0x9088, 0x9083, 0x908b, 0x5f50, 0x5f57, 0x5f56,
+ 0x5f58, 0x5c3b, 0x54ab, 0x5c50, 0x5c59, 0x5b71, 0x5c63, 0x5c66,
+ 0x7fbc, 0x5f2a, 0x5f29, 0x5f2d, 0x8274, 0x5f3c, 0x9b3b, 0x5c6e,
+ 0x5981, 0x5983, 0x598d, 0x59a9, 0x59aa, 0x59a3,
+ /* 0xe6 */
+ 0x936c, 0x936d, 0x936e, 0x936f, 0x9370, 0x9371, 0x9372, 0x9373,
+ 0x9374, 0x9375, 0x9376, 0x9377, 0x9378, 0x9379, 0x937a, 0x937b,
+ 0x937c, 0x937d, 0x937e, 0x937f, 0x9380, 0x9381, 0x9382, 0x9383,
+ 0x9384, 0x9385, 0x9386, 0x9387, 0x9388, 0x9389, 0x938a, 0x938b,
+ 0x938c, 0x938d, 0x938e, 0x9390, 0x9391, 0x9392, 0x9393, 0x9394,
+ 0x9395, 0x9396, 0x9397, 0x9398, 0x9399, 0x939a, 0x939b, 0x939c,
+ 0x939d, 0x939e, 0x939f, 0x93a0, 0x93a1, 0x93a2, 0x93a3, 0x93a4,
+ 0x93a5, 0x93a6, 0x93a7, 0x93a8, 0x93a9, 0x93aa, 0x93ab, 0x93ac,
+ 0x93ad, 0x93ae, 0x93af, 0x93b0, 0x93b1, 0x93b2, 0x93b3, 0x93b4,
+ 0x93b5, 0x93b6, 0x93b7, 0x93b8, 0x93b9, 0x93ba, 0x93bb, 0x93bc,
+ 0x93bd, 0x93be, 0x93bf, 0x93c0, 0x93c1, 0x93c2, 0x93c3, 0x93c4,
+ 0x93c5, 0x93c6, 0x93c7, 0x93c8, 0x93c9, 0x93cb, 0x93cc, 0x93cd,
+ 0x5997, 0x59ca, 0x59ab, 0x599e, 0x59a4, 0x59d2, 0x59b2, 0x59af,
+ 0x59d7, 0x59be, 0x5a05, 0x5a06, 0x59dd, 0x5a08, 0x59e3, 0x59d8,
+ 0x59f9, 0x5a0c, 0x5a09, 0x5a32, 0x5a34, 0x5a11, 0x5a23, 0x5a13,
+ 0x5a40, 0x5a67, 0x5a4a, 0x5a55, 0x5a3c, 0x5a62, 0x5a75, 0x80ec,
+ 0x5aaa, 0x5a9b, 0x5a77, 0x5a7a, 0x5abe, 0x5aeb, 0x5ab2, 0x5ad2,
+ 0x5ad4, 0x5ab8, 0x5ae0, 0x5ae3, 0x5af1, 0x5ad6, 0x5ae6, 0x5ad8,
+ 0x5adc, 0x5b09, 0x5b17, 0x5b16, 0x5b32, 0x5b37, 0x5b40, 0x5c15,
+ 0x5c1c, 0x5b5a, 0x5b65, 0x5b73, 0x5b51, 0x5b53, 0x5b62, 0x9a75,
+ 0x9a77, 0x9a78, 0x9a7a, 0x9a7f, 0x9a7d, 0x9a80, 0x9a81, 0x9a85,
+ 0x9a88, 0x9a8a, 0x9a90, 0x9a92, 0x9a93, 0x9a96, 0x9a98, 0x9a9b,
+ 0x9a9c, 0x9a9d, 0x9a9f, 0x9aa0, 0x9aa2, 0x9aa3, 0x9aa5, 0x9aa7,
+ 0x7e9f, 0x7ea1, 0x7ea3, 0x7ea5, 0x7ea8, 0x7ea9,
+ /* 0xe7 */
+ 0x93ce, 0x93cf, 0x93d0, 0x93d1, 0x93d2, 0x93d3, 0x93d4, 0x93d5,
+ 0x93d7, 0x93d8, 0x93d9, 0x93da, 0x93db, 0x93dc, 0x93dd, 0x93de,
+ 0x93df, 0x93e0, 0x93e1, 0x93e2, 0x93e3, 0x93e4, 0x93e5, 0x93e6,
+ 0x93e7, 0x93e8, 0x93e9, 0x93ea, 0x93eb, 0x93ec, 0x93ed, 0x93ee,
+ 0x93ef, 0x93f0, 0x93f1, 0x93f2, 0x93f3, 0x93f4, 0x93f5, 0x93f6,
+ 0x93f7, 0x93f8, 0x93f9, 0x93fa, 0x93fb, 0x93fc, 0x93fd, 0x93fe,
+ 0x93ff, 0x9400, 0x9401, 0x9402, 0x9403, 0x9404, 0x9405, 0x9406,
+ 0x9407, 0x9408, 0x9409, 0x940a, 0x940b, 0x940c, 0x940d, 0x940e,
+ 0x940f, 0x9410, 0x9411, 0x9412, 0x9413, 0x9414, 0x9415, 0x9416,
+ 0x9417, 0x9418, 0x9419, 0x941a, 0x941b, 0x941c, 0x941d, 0x941e,
+ 0x941f, 0x9420, 0x9421, 0x9422, 0x9423, 0x9424, 0x9425, 0x9426,
+ 0x9427, 0x9428, 0x9429, 0x942a, 0x942b, 0x942c, 0x942d, 0x942e,
+ 0x7ead, 0x7eb0, 0x7ebe, 0x7ec0, 0x7ec1, 0x7ec2, 0x7ec9, 0x7ecb,
+ 0x7ecc, 0x7ed0, 0x7ed4, 0x7ed7, 0x7edb, 0x7ee0, 0x7ee1, 0x7ee8,
+ 0x7eeb, 0x7eee, 0x7eef, 0x7ef1, 0x7ef2, 0x7f0d, 0x7ef6, 0x7efa,
+ 0x7efb, 0x7efe, 0x7f01, 0x7f02, 0x7f03, 0x7f07, 0x7f08, 0x7f0b,
+ 0x7f0c, 0x7f0f, 0x7f11, 0x7f12, 0x7f17, 0x7f19, 0x7f1c, 0x7f1b,
+ 0x7f1f, 0x7f21, 0x7f22, 0x7f23, 0x7f24, 0x7f25, 0x7f26, 0x7f27,
+ 0x7f2a, 0x7f2b, 0x7f2c, 0x7f2d, 0x7f2f, 0x7f30, 0x7f31, 0x7f32,
+ 0x7f33, 0x7f35, 0x5e7a, 0x757f, 0x5ddb, 0x753e, 0x9095, 0x738e,
+ 0x7391, 0x73ae, 0x73a2, 0x739f, 0x73cf, 0x73c2, 0x73d1, 0x73b7,
+ 0x73b3, 0x73c0, 0x73c9, 0x73c8, 0x73e5, 0x73d9, 0x987c, 0x740a,
+ 0x73e9, 0x73e7, 0x73de, 0x73ba, 0x73f2, 0x740f, 0x742a, 0x745b,
+ 0x7426, 0x7425, 0x7428, 0x7430, 0x742e, 0x742c,
+ /* 0xe8 */
+ 0x942f, 0x9430, 0x9431, 0x9432, 0x9433, 0x9434, 0x9435, 0x9436,
+ 0x9437, 0x9438, 0x9439, 0x943a, 0x943b, 0x943c, 0x943d, 0x943f,
+ 0x9440, 0x9441, 0x9442, 0x9443, 0x9444, 0x9445, 0x9446, 0x9447,
+ 0x9448, 0x9449, 0x944a, 0x944b, 0x944c, 0x944d, 0x944e, 0x944f,
+ 0x9450, 0x9451, 0x9452, 0x9453, 0x9454, 0x9455, 0x9456, 0x9457,
+ 0x9458, 0x9459, 0x945a, 0x945b, 0x945c, 0x945d, 0x945e, 0x945f,
+ 0x9460, 0x9461, 0x9462, 0x9463, 0x9464, 0x9465, 0x9466, 0x9467,
+ 0x9468, 0x9469, 0x946a, 0x946c, 0x946d, 0x946e, 0x946f, 0x9470,
+ 0x9471, 0x9472, 0x9473, 0x9474, 0x9475, 0x9476, 0x9477, 0x9478,
+ 0x9479, 0x947a, 0x947b, 0x947c, 0x947d, 0x947e, 0x947f, 0x9480,
+ 0x9481, 0x9482, 0x9483, 0x9484, 0x9491, 0x9496, 0x9498, 0x94c7,
+ 0x94cf, 0x94d3, 0x94d4, 0x94da, 0x94e6, 0x94fb, 0x951c, 0x9520,
+ 0x741b, 0x741a, 0x7441, 0x745c, 0x7457, 0x7455, 0x7459, 0x7477,
+ 0x746d, 0x747e, 0x749c, 0x748e, 0x7480, 0x7481, 0x7487, 0x748b,
+ 0x749e, 0x74a8, 0x74a9, 0x7490, 0x74a7, 0x74d2, 0x74ba, 0x97ea,
+ 0x97eb, 0x97ec, 0x674c, 0x6753, 0x675e, 0x6748, 0x6769, 0x67a5,
+ 0x6787, 0x676a, 0x6773, 0x6798, 0x67a7, 0x6775, 0x67a8, 0x679e,
+ 0x67ad, 0x678b, 0x6777, 0x677c, 0x67f0, 0x6809, 0x67d8, 0x680a,
+ 0x67e9, 0x67b0, 0x680c, 0x67d9, 0x67b5, 0x67da, 0x67b3, 0x67dd,
+ 0x6800, 0x67c3, 0x67b8, 0x67e2, 0x680e, 0x67c1, 0x67fd, 0x6832,
+ 0x6833, 0x6860, 0x6861, 0x684e, 0x6862, 0x6844, 0x6864, 0x6883,
+ 0x681d, 0x6855, 0x6866, 0x6841, 0x6867, 0x6840, 0x683e, 0x684a,
+ 0x6849, 0x6829, 0x68b5, 0x688f, 0x6874, 0x6877, 0x6893, 0x686b,
+ 0x68c2, 0x696e, 0x68fc, 0x691f, 0x6920, 0x68f9,
+ /* 0xe9 */
+ 0x9527, 0x9533, 0x953d, 0x9543, 0x9548, 0x954b, 0x9555, 0x955a,
+ 0x9560, 0x956e, 0x9574, 0x9575, 0x9577, 0x9578, 0x9579, 0x957a,
+ 0x957b, 0x957c, 0x957d, 0x957e, 0x9580, 0x9581, 0x9582, 0x9583,
+ 0x9584, 0x9585, 0x9586, 0x9587, 0x9588, 0x9589, 0x958a, 0x958b,
+ 0x958c, 0x958d, 0x958e, 0x958f, 0x9590, 0x9591, 0x9592, 0x9593,
+ 0x9594, 0x9595, 0x9596, 0x9597, 0x9598, 0x9599, 0x959a, 0x959b,
+ 0x959c, 0x959d, 0x959e, 0x959f, 0x95a0, 0x95a1, 0x95a2, 0x95a3,
+ 0x95a4, 0x95a5, 0x95a6, 0x95a7, 0x95a8, 0x95a9, 0x95aa, 0x95ab,
+ 0x95ac, 0x95ad, 0x95ae, 0x95af, 0x95b0, 0x95b1, 0x95b2, 0x95b3,
+ 0x95b4, 0x95b5, 0x95b6, 0x95b7, 0x95b8, 0x95b9, 0x95ba, 0x95bb,
+ 0x95bc, 0x95bd, 0x95be, 0x95bf, 0x95c0, 0x95c1, 0x95c2, 0x95c3,
+ 0x95c4, 0x95c5, 0x95c6, 0x95c7, 0x95c8, 0x95c9, 0x95ca, 0x95cb,
+ 0x6924, 0x68f0, 0x690b, 0x6901, 0x6957, 0x68e3, 0x6910, 0x6971,
+ 0x6939, 0x6960, 0x6942, 0x695d, 0x6984, 0x696b, 0x6980, 0x6998,
+ 0x6978, 0x6934, 0x69cc, 0x6987, 0x6988, 0x69ce, 0x6989, 0x6966,
+ 0x6963, 0x6979, 0x699b, 0x69a7, 0x69bb, 0x69ab, 0x69ad, 0x69d4,
+ 0x69b1, 0x69c1, 0x69ca, 0x69df, 0x6995, 0x69e0, 0x698d, 0x69ff,
+ 0x6a2f, 0x69ed, 0x6a17, 0x6a18, 0x6a65, 0x69f2, 0x6a44, 0x6a3e,
+ 0x6aa0, 0x6a50, 0x6a5b, 0x6a35, 0x6a8e, 0x6a79, 0x6a3d, 0x6a28,
+ 0x6a58, 0x6a7c, 0x6a91, 0x6a90, 0x6aa9, 0x6a97, 0x6aab, 0x7337,
+ 0x7352, 0x6b81, 0x6b82, 0x6b87, 0x6b84, 0x6b92, 0x6b93, 0x6b8d,
+ 0x6b9a, 0x6b9b, 0x6ba1, 0x6baa, 0x8f6b, 0x8f6d, 0x8f71, 0x8f72,
+ 0x8f73, 0x8f75, 0x8f76, 0x8f78, 0x8f77, 0x8f79, 0x8f7a, 0x8f7c,
+ 0x8f7e, 0x8f81, 0x8f82, 0x8f84, 0x8f87, 0x8f8b,
+ /* 0xea */
+ 0x95cc, 0x95cd, 0x95ce, 0x95cf, 0x95d0, 0x95d1, 0x95d2, 0x95d3,
+ 0x95d4, 0x95d5, 0x95d6, 0x95d7, 0x95d8, 0x95d9, 0x95da, 0x95db,
+ 0x95dc, 0x95dd, 0x95de, 0x95df, 0x95e0, 0x95e1, 0x95e2, 0x95e3,
+ 0x95e4, 0x95e5, 0x95e6, 0x95e7, 0x95ec, 0x95ff, 0x9607, 0x9613,
+ 0x9618, 0x961b, 0x961e, 0x9620, 0x9623, 0x9624, 0x9625, 0x9626,
+ 0x9627, 0x9628, 0x9629, 0x962b, 0x962c, 0x962d, 0x962f, 0x9630,
+ 0x9637, 0x9638, 0x9639, 0x963a, 0x963e, 0x9641, 0x9643, 0x964a,
+ 0x964e, 0x964f, 0x9651, 0x9652, 0x9653, 0x9656, 0x9657, 0x9658,
+ 0x9659, 0x965a, 0x965c, 0x965d, 0x965e, 0x9660, 0x9663, 0x9665,
+ 0x9666, 0x966b, 0x966d, 0x966e, 0x966f, 0x9670, 0x9671, 0x9673,
+ 0x9678, 0x9679, 0x967a, 0x967b, 0x967c, 0x967d, 0x967e, 0x967f,
+ 0x9680, 0x9681, 0x9682, 0x9683, 0x9684, 0x9687, 0x9689, 0x968a,
+ 0x8f8d, 0x8f8e, 0x8f8f, 0x8f98, 0x8f9a, 0x8ece, 0x620b, 0x6217,
+ 0x621b, 0x621f, 0x6222, 0x6221, 0x6225, 0x6224, 0x622c, 0x81e7,
+ 0x74ef, 0x74f4, 0x74ff, 0x750f, 0x7511, 0x7513, 0x6534, 0x65ee,
+ 0x65ef, 0x65f0, 0x660a, 0x6619, 0x6772, 0x6603, 0x6615, 0x6600,
+ 0x7085, 0x66f7, 0x661d, 0x6634, 0x6631, 0x6636, 0x6635, 0x8006,
+ 0x665f, 0x6654, 0x6641, 0x664f, 0x6656, 0x6661, 0x6657, 0x6677,
+ 0x6684, 0x668c, 0x66a7, 0x669d, 0x66be, 0x66db, 0x66dc, 0x66e6,
+ 0x66e9, 0x8d32, 0x8d33, 0x8d36, 0x8d3b, 0x8d3d, 0x8d40, 0x8d45,
+ 0x8d46, 0x8d48, 0x8d49, 0x8d47, 0x8d4d, 0x8d55, 0x8d59, 0x89c7,
+ 0x89ca, 0x89cb, 0x89cc, 0x89ce, 0x89cf, 0x89d0, 0x89d1, 0x726e,
+ 0x729f, 0x725d, 0x7266, 0x726f, 0x727e, 0x727f, 0x7284, 0x728b,
+ 0x728d, 0x728f, 0x7292, 0x6308, 0x6332, 0x63b0,
+ /* 0xeb */
+ 0x968c, 0x968e, 0x9691, 0x9692, 0x9693, 0x9695, 0x9696, 0x969a,
+ 0x969b, 0x969d, 0x969e, 0x969f, 0x96a0, 0x96a1, 0x96a2, 0x96a3,
+ 0x96a4, 0x96a5, 0x96a6, 0x96a8, 0x96a9, 0x96aa, 0x96ab, 0x96ac,
+ 0x96ad, 0x96ae, 0x96af, 0x96b1, 0x96b2, 0x96b4, 0x96b5, 0x96b7,
+ 0x96b8, 0x96ba, 0x96bb, 0x96bf, 0x96c2, 0x96c3, 0x96c8, 0x96ca,
+ 0x96cb, 0x96d0, 0x96d1, 0x96d3, 0x96d4, 0x96d6, 0x96d7, 0x96d8,
+ 0x96d9, 0x96da, 0x96db, 0x96dc, 0x96dd, 0x96de, 0x96df, 0x96e1,
+ 0x96e2, 0x96e3, 0x96e4, 0x96e5, 0x96e6, 0x96e7, 0x96eb, 0x96ec,
+ 0x96ed, 0x96ee, 0x96f0, 0x96f1, 0x96f2, 0x96f4, 0x96f5, 0x96f8,
+ 0x96fa, 0x96fb, 0x96fc, 0x96fd, 0x96ff, 0x9702, 0x9703, 0x9705,
+ 0x970a, 0x970b, 0x970c, 0x9710, 0x9711, 0x9712, 0x9714, 0x9715,
+ 0x9717, 0x9718, 0x9719, 0x971a, 0x971b, 0x971d, 0x971f, 0x9720,
+ 0x643f, 0x64d8, 0x8004, 0x6bea, 0x6bf3, 0x6bfd, 0x6bf5, 0x6bf9,
+ 0x6c05, 0x6c07, 0x6c06, 0x6c0d, 0x6c15, 0x6c18, 0x6c19, 0x6c1a,
+ 0x6c21, 0x6c29, 0x6c24, 0x6c2a, 0x6c32, 0x6535, 0x6555, 0x656b,
+ 0x724d, 0x7252, 0x7256, 0x7230, 0x8662, 0x5216, 0x809f, 0x809c,
+ 0x8093, 0x80bc, 0x670a, 0x80bd, 0x80b1, 0x80ab, 0x80ad, 0x80b4,
+ 0x80b7, 0x80e7, 0x80e8, 0x80e9, 0x80ea, 0x80db, 0x80c2, 0x80c4,
+ 0x80d9, 0x80cd, 0x80d7, 0x6710, 0x80dd, 0x80eb, 0x80f1, 0x80f4,
+ 0x80ed, 0x810d, 0x810e, 0x80f2, 0x80fc, 0x6715, 0x8112, 0x8c5a,
+ 0x8136, 0x811e, 0x812c, 0x8118, 0x8132, 0x8148, 0x814c, 0x8153,
+ 0x8174, 0x8159, 0x815a, 0x8171, 0x8160, 0x8169, 0x817c, 0x817d,
+ 0x816d, 0x8167, 0x584d, 0x5ab5, 0x8188, 0x8182, 0x8191, 0x6ed5,
+ 0x81a3, 0x81aa, 0x81cc, 0x6726, 0x81ca, 0x81bb,
+ /* 0xec */
+ 0x9721, 0x9722, 0x9723, 0x9724, 0x9725, 0x9726, 0x9727, 0x9728,
+ 0x9729, 0x972b, 0x972c, 0x972e, 0x972f, 0x9731, 0x9733, 0x9734,
+ 0x9735, 0x9736, 0x9737, 0x973a, 0x973b, 0x973c, 0x973d, 0x973f,
+ 0x9740, 0x9741, 0x9742, 0x9743, 0x9744, 0x9745, 0x9746, 0x9747,
+ 0x9748, 0x9749, 0x974a, 0x974b, 0x974c, 0x974d, 0x974e, 0x974f,
+ 0x9750, 0x9751, 0x9754, 0x9755, 0x9757, 0x9758, 0x975a, 0x975c,
+ 0x975d, 0x975f, 0x9763, 0x9764, 0x9766, 0x9767, 0x9768, 0x976a,
+ 0x976b, 0x976c, 0x976d, 0x976e, 0x976f, 0x9770, 0x9771, 0x9772,
+ 0x9775, 0x9777, 0x9778, 0x9779, 0x977a, 0x977b, 0x977d, 0x977e,
+ 0x977f, 0x9780, 0x9781, 0x9782, 0x9783, 0x9784, 0x9786, 0x9787,
+ 0x9788, 0x9789, 0x978a, 0x978c, 0x978e, 0x978f, 0x9790, 0x9793,
+ 0x9795, 0x9796, 0x9797, 0x9799, 0x979a, 0x979b, 0x979c, 0x979d,
+ 0x81c1, 0x81a6, 0x6b24, 0x6b37, 0x6b39, 0x6b43, 0x6b46, 0x6b59,
+ 0x98d1, 0x98d2, 0x98d3, 0x98d5, 0x98d9, 0x98da, 0x6bb3, 0x5f40,
+ 0x6bc2, 0x89f3, 0x6590, 0x9f51, 0x6593, 0x65bc, 0x65c6, 0x65c4,
+ 0x65c3, 0x65cc, 0x65ce, 0x65d2, 0x65d6, 0x7080, 0x709c, 0x7096,
+ 0x709d, 0x70bb, 0x70c0, 0x70b7, 0x70ab, 0x70b1, 0x70e8, 0x70ca,
+ 0x7110, 0x7113, 0x7116, 0x712f, 0x7131, 0x7173, 0x715c, 0x7168,
+ 0x7145, 0x7172, 0x714a, 0x7178, 0x717a, 0x7198, 0x71b3, 0x71b5,
+ 0x71a8, 0x71a0, 0x71e0, 0x71d4, 0x71e7, 0x71f9, 0x721d, 0x7228,
+ 0x706c, 0x7118, 0x7166, 0x71b9, 0x623e, 0x623d, 0x6243, 0x6248,
+ 0x6249, 0x793b, 0x7940, 0x7946, 0x7949, 0x795b, 0x795c, 0x7953,
+ 0x795a, 0x7962, 0x7957, 0x7960, 0x796f, 0x7967, 0x797a, 0x7985,
+ 0x798a, 0x799a, 0x79a7, 0x79b3, 0x5fd1, 0x5fd0,
+ /* 0xed */
+ 0x979e, 0x979f, 0x97a1, 0x97a2, 0x97a4, 0x97a5, 0x97a6, 0x97a7,
+ 0x97a8, 0x97a9, 0x97aa, 0x97ac, 0x97ae, 0x97b0, 0x97b1, 0x97b3,
+ 0x97b5, 0x97b6, 0x97b7, 0x97b8, 0x97b9, 0x97ba, 0x97bb, 0x97bc,
+ 0x97bd, 0x97be, 0x97bf, 0x97c0, 0x97c1, 0x97c2, 0x97c3, 0x97c4,
+ 0x97c5, 0x97c6, 0x97c7, 0x97c8, 0x97c9, 0x97ca, 0x97cb, 0x97cc,
+ 0x97cd, 0x97ce, 0x97cf, 0x97d0, 0x97d1, 0x97d2, 0x97d3, 0x97d4,
+ 0x97d5, 0x97d6, 0x97d7, 0x97d8, 0x97d9, 0x97da, 0x97db, 0x97dc,
+ 0x97dd, 0x97de, 0x97df, 0x97e0, 0x97e1, 0x97e2, 0x97e3, 0x97e4,
+ 0x97e5, 0x97e8, 0x97ee, 0x97ef, 0x97f0, 0x97f1, 0x97f2, 0x97f4,
+ 0x97f7, 0x97f8, 0x97f9, 0x97fa, 0x97fb, 0x97fc, 0x97fd, 0x97fe,
+ 0x97ff, 0x9800, 0x9801, 0x9802, 0x9803, 0x9804, 0x9805, 0x9806,
+ 0x9807, 0x9808, 0x9809, 0x980a, 0x980b, 0x980c, 0x980d, 0x980e,
+ 0x603c, 0x605d, 0x605a, 0x6067, 0x6041, 0x6059, 0x6063, 0x60ab,
+ 0x6106, 0x610d, 0x615d, 0x61a9, 0x619d, 0x61cb, 0x61d1, 0x6206,
+ 0x8080, 0x807f, 0x6c93, 0x6cf6, 0x6dfc, 0x77f6, 0x77f8, 0x7800,
+ 0x7809, 0x7817, 0x7818, 0x7811, 0x65ab, 0x782d, 0x781c, 0x781d,
+ 0x7839, 0x783a, 0x783b, 0x781f, 0x783c, 0x7825, 0x782c, 0x7823,
+ 0x7829, 0x784e, 0x786d, 0x7856, 0x7857, 0x7826, 0x7850, 0x7847,
+ 0x784c, 0x786a, 0x789b, 0x7893, 0x789a, 0x7887, 0x789c, 0x78a1,
+ 0x78a3, 0x78b2, 0x78b9, 0x78a5, 0x78d4, 0x78d9, 0x78c9, 0x78ec,
+ 0x78f2, 0x7905, 0x78f4, 0x7913, 0x7924, 0x791e, 0x7934, 0x9f9b,
+ 0x9ef9, 0x9efb, 0x9efc, 0x76f1, 0x7704, 0x770d, 0x76f9, 0x7707,
+ 0x7708, 0x771a, 0x7722, 0x7719, 0x772d, 0x7726, 0x7735, 0x7738,
+ 0x7750, 0x7751, 0x7747, 0x7743, 0x775a, 0x7768,
+ /* 0xee */
+ 0x980f, 0x9810, 0x9811, 0x9812, 0x9813, 0x9814, 0x9815, 0x9816,
+ 0x9817, 0x9818, 0x9819, 0x981a, 0x981b, 0x981c, 0x981d, 0x981e,
+ 0x981f, 0x9820, 0x9821, 0x9822, 0x9823, 0x9824, 0x9825, 0x9826,
+ 0x9827, 0x9828, 0x9829, 0x982a, 0x982b, 0x982c, 0x982d, 0x982e,
+ 0x982f, 0x9830, 0x9831, 0x9832, 0x9833, 0x9834, 0x9835, 0x9836,
+ 0x9837, 0x9838, 0x9839, 0x983a, 0x983b, 0x983c, 0x983d, 0x983e,
+ 0x983f, 0x9840, 0x9841, 0x9842, 0x9843, 0x9844, 0x9845, 0x9846,
+ 0x9847, 0x9848, 0x9849, 0x984a, 0x984b, 0x984c, 0x984d, 0x984e,
+ 0x984f, 0x9850, 0x9851, 0x9852, 0x9853, 0x9854, 0x9855, 0x9856,
+ 0x9857, 0x9858, 0x9859, 0x985a, 0x985b, 0x985c, 0x985d, 0x985e,
+ 0x985f, 0x9860, 0x9861, 0x9862, 0x9863, 0x9864, 0x9865, 0x9866,
+ 0x9867, 0x9868, 0x9869, 0x986a, 0x986b, 0x986c, 0x986d, 0x986e,
+ 0x7762, 0x7765, 0x777f, 0x778d, 0x777d, 0x7780, 0x778c, 0x7791,
+ 0x779f, 0x77a0, 0x77b0, 0x77b5, 0x77bd, 0x753a, 0x7540, 0x754e,
+ 0x754b, 0x7548, 0x755b, 0x7572, 0x7579, 0x7583, 0x7f58, 0x7f61,
+ 0x7f5f, 0x8a48, 0x7f68, 0x7f74, 0x7f71, 0x7f79, 0x7f81, 0x7f7e,
+ 0x76cd, 0x76e5, 0x8832, 0x9485, 0x9486, 0x9487, 0x948b, 0x948a,
+ 0x948c, 0x948d, 0x948f, 0x9490, 0x9494, 0x9497, 0x9495, 0x949a,
+ 0x949b, 0x949c, 0x94a3, 0x94a4, 0x94ab, 0x94aa, 0x94ad, 0x94ac,
+ 0x94af, 0x94b0, 0x94b2, 0x94b4, 0x94b6, 0x94b7, 0x94b8, 0x94b9,
+ 0x94ba, 0x94bc, 0x94bd, 0x94bf, 0x94c4, 0x94c8, 0x94c9, 0x94ca,
+ 0x94cb, 0x94cc, 0x94cd, 0x94ce, 0x94d0, 0x94d1, 0x94d2, 0x94d5,
+ 0x94d6, 0x94d7, 0x94d9, 0x94d8, 0x94db, 0x94de, 0x94df, 0x94e0,
+ 0x94e2, 0x94e4, 0x94e5, 0x94e7, 0x94e8, 0x94ea,
+ /* 0xef */
+ 0x986f, 0x9870, 0x9871, 0x9872, 0x9873, 0x9874, 0x988b, 0x988e,
+ 0x9892, 0x9895, 0x9899, 0x98a3, 0x98a8, 0x98a9, 0x98aa, 0x98ab,
+ 0x98ac, 0x98ad, 0x98ae, 0x98af, 0x98b0, 0x98b1, 0x98b2, 0x98b3,
+ 0x98b4, 0x98b5, 0x98b6, 0x98b7, 0x98b8, 0x98b9, 0x98ba, 0x98bb,
+ 0x98bc, 0x98bd, 0x98be, 0x98bf, 0x98c0, 0x98c1, 0x98c2, 0x98c3,
+ 0x98c4, 0x98c5, 0x98c6, 0x98c7, 0x98c8, 0x98c9, 0x98ca, 0x98cb,
+ 0x98cc, 0x98cd, 0x98cf, 0x98d0, 0x98d4, 0x98d6, 0x98d7, 0x98db,
+ 0x98dc, 0x98dd, 0x98e0, 0x98e1, 0x98e2, 0x98e3, 0x98e4, 0x98e5,
+ 0x98e6, 0x98e9, 0x98ea, 0x98eb, 0x98ec, 0x98ed, 0x98ee, 0x98ef,
+ 0x98f0, 0x98f1, 0x98f2, 0x98f3, 0x98f4, 0x98f5, 0x98f6, 0x98f7,
+ 0x98f8, 0x98f9, 0x98fa, 0x98fb, 0x98fc, 0x98fd, 0x98fe, 0x98ff,
+ 0x9900, 0x9901, 0x9902, 0x9903, 0x9904, 0x9905, 0x9906, 0x9907,
+ 0x94e9, 0x94eb, 0x94ee, 0x94ef, 0x94f3, 0x94f4, 0x94f5, 0x94f7,
+ 0x94f9, 0x94fc, 0x94fd, 0x94ff, 0x9503, 0x9502, 0x9506, 0x9507,
+ 0x9509, 0x950a, 0x950d, 0x950e, 0x950f, 0x9512, 0x9513, 0x9514,
+ 0x9515, 0x9516, 0x9518, 0x951b, 0x951d, 0x951e, 0x951f, 0x9522,
+ 0x952a, 0x952b, 0x9529, 0x952c, 0x9531, 0x9532, 0x9534, 0x9536,
+ 0x9537, 0x9538, 0x953c, 0x953e, 0x953f, 0x9542, 0x9535, 0x9544,
+ 0x9545, 0x9546, 0x9549, 0x954c, 0x954e, 0x954f, 0x9552, 0x9553,
+ 0x9554, 0x9556, 0x9557, 0x9558, 0x9559, 0x955b, 0x955e, 0x955f,
+ 0x955d, 0x9561, 0x9562, 0x9564, 0x9565, 0x9566, 0x9567, 0x9568,
+ 0x9569, 0x956a, 0x956b, 0x956c, 0x956f, 0x9571, 0x9572, 0x9573,
+ 0x953a, 0x77e7, 0x77ec, 0x96c9, 0x79d5, 0x79ed, 0x79e3, 0x79eb,
+ 0x7a06, 0x5d47, 0x7a03, 0x7a02, 0x7a1e, 0x7a14,
+ /* 0xf0 */
+ 0x9908, 0x9909, 0x990a, 0x990b, 0x990c, 0x990e, 0x990f, 0x9911,
+ 0x9912, 0x9913, 0x9914, 0x9915, 0x9916, 0x9917, 0x9918, 0x9919,
+ 0x991a, 0x991b, 0x991c, 0x991d, 0x991e, 0x991f, 0x9920, 0x9921,
+ 0x9922, 0x9923, 0x9924, 0x9925, 0x9926, 0x9927, 0x9928, 0x9929,
+ 0x992a, 0x992b, 0x992c, 0x992d, 0x992f, 0x9930, 0x9931, 0x9932,
+ 0x9933, 0x9934, 0x9935, 0x9936, 0x9937, 0x9938, 0x9939, 0x993a,
+ 0x993b, 0x993c, 0x993d, 0x993e, 0x993f, 0x9940, 0x9941, 0x9942,
+ 0x9943, 0x9944, 0x9945, 0x9946, 0x9947, 0x9948, 0x9949, 0x994a,
+ 0x994b, 0x994c, 0x994d, 0x994e, 0x994f, 0x9950, 0x9951, 0x9952,
+ 0x9953, 0x9956, 0x9957, 0x9958, 0x9959, 0x995a, 0x995b, 0x995c,
+ 0x995d, 0x995e, 0x995f, 0x9960, 0x9961, 0x9962, 0x9964, 0x9966,
+ 0x9973, 0x9978, 0x9979, 0x997b, 0x997e, 0x9982, 0x9983, 0x9989,
+ 0x7a39, 0x7a37, 0x7a51, 0x9ecf, 0x99a5, 0x7a70, 0x7688, 0x768e,
+ 0x7693, 0x7699, 0x76a4, 0x74de, 0x74e0, 0x752c, 0x9e20, 0x9e22,
+ 0x9e28, 0x9e29, 0x9e2a, 0x9e2b, 0x9e2c, 0x9e32, 0x9e31, 0x9e36,
+ 0x9e38, 0x9e37, 0x9e39, 0x9e3a, 0x9e3e, 0x9e41, 0x9e42, 0x9e44,
+ 0x9e46, 0x9e47, 0x9e48, 0x9e49, 0x9e4b, 0x9e4c, 0x9e4e, 0x9e51,
+ 0x9e55, 0x9e57, 0x9e5a, 0x9e5b, 0x9e5c, 0x9e5e, 0x9e63, 0x9e66,
+ 0x9e67, 0x9e68, 0x9e69, 0x9e6a, 0x9e6b, 0x9e6c, 0x9e71, 0x9e6d,
+ 0x9e73, 0x7592, 0x7594, 0x7596, 0x75a0, 0x759d, 0x75ac, 0x75a3,
+ 0x75b3, 0x75b4, 0x75b8, 0x75c4, 0x75b1, 0x75b0, 0x75c3, 0x75c2,
+ 0x75d6, 0x75cd, 0x75e3, 0x75e8, 0x75e6, 0x75e4, 0x75eb, 0x75e7,
+ 0x7603, 0x75f1, 0x75fc, 0x75ff, 0x7610, 0x7600, 0x7605, 0x760c,
+ 0x7617, 0x760a, 0x7625, 0x7618, 0x7615, 0x7619,
+ /* 0xf1 */
+ 0x998c, 0x998e, 0x999a, 0x999b, 0x999c, 0x999d, 0x999e, 0x999f,
+ 0x99a0, 0x99a1, 0x99a2, 0x99a3, 0x99a4, 0x99a6, 0x99a7, 0x99a9,
+ 0x99aa, 0x99ab, 0x99ac, 0x99ad, 0x99ae, 0x99af, 0x99b0, 0x99b1,
+ 0x99b2, 0x99b3, 0x99b4, 0x99b5, 0x99b6, 0x99b7, 0x99b8, 0x99b9,
+ 0x99ba, 0x99bb, 0x99bc, 0x99bd, 0x99be, 0x99bf, 0x99c0, 0x99c1,
+ 0x99c2, 0x99c3, 0x99c4, 0x99c5, 0x99c6, 0x99c7, 0x99c8, 0x99c9,
+ 0x99ca, 0x99cb, 0x99cc, 0x99cd, 0x99ce, 0x99cf, 0x99d0, 0x99d1,
+ 0x99d2, 0x99d3, 0x99d4, 0x99d5, 0x99d6, 0x99d7, 0x99d8, 0x99d9,
+ 0x99da, 0x99db, 0x99dc, 0x99dd, 0x99de, 0x99df, 0x99e0, 0x99e1,
+ 0x99e2, 0x99e3, 0x99e4, 0x99e5, 0x99e6, 0x99e7, 0x99e8, 0x99e9,
+ 0x99ea, 0x99eb, 0x99ec, 0x99ed, 0x99ee, 0x99ef, 0x99f0, 0x99f1,
+ 0x99f2, 0x99f3, 0x99f4, 0x99f5, 0x99f6, 0x99f7, 0x99f8, 0x99f9,
+ 0x761b, 0x763c, 0x7622, 0x7620, 0x7640, 0x762d, 0x7630, 0x763f,
+ 0x7635, 0x7643, 0x763e, 0x7633, 0x764d, 0x765e, 0x7654, 0x765c,
+ 0x7656, 0x766b, 0x766f, 0x7fca, 0x7ae6, 0x7a78, 0x7a79, 0x7a80,
+ 0x7a86, 0x7a88, 0x7a95, 0x7aa6, 0x7aa0, 0x7aac, 0x7aa8, 0x7aad,
+ 0x7ab3, 0x8864, 0x8869, 0x8872, 0x887d, 0x887f, 0x8882, 0x88a2,
+ 0x88c6, 0x88b7, 0x88bc, 0x88c9, 0x88e2, 0x88ce, 0x88e3, 0x88e5,
+ 0x88f1, 0x891a, 0x88fc, 0x88e8, 0x88fe, 0x88f0, 0x8921, 0x8919,
+ 0x8913, 0x891b, 0x890a, 0x8934, 0x892b, 0x8936, 0x8941, 0x8966,
+ 0x897b, 0x758b, 0x80e5, 0x76b2, 0x76b4, 0x77dc, 0x8012, 0x8014,
+ 0x8016, 0x801c, 0x8020, 0x8022, 0x8025, 0x8026, 0x8027, 0x8029,
+ 0x8028, 0x8031, 0x800b, 0x8035, 0x8043, 0x8046, 0x804d, 0x8052,
+ 0x8069, 0x8071, 0x8983, 0x9878, 0x9880, 0x9883,
+ /* 0xf2 */
+ 0x99fa, 0x99fb, 0x99fc, 0x99fd, 0x99fe, 0x99ff, 0x9a00, 0x9a01,
+ 0x9a02, 0x9a03, 0x9a04, 0x9a05, 0x9a06, 0x9a07, 0x9a08, 0x9a09,
+ 0x9a0a, 0x9a0b, 0x9a0c, 0x9a0d, 0x9a0e, 0x9a0f, 0x9a10, 0x9a11,
+ 0x9a12, 0x9a13, 0x9a14, 0x9a15, 0x9a16, 0x9a17, 0x9a18, 0x9a19,
+ 0x9a1a, 0x9a1b, 0x9a1c, 0x9a1d, 0x9a1e, 0x9a1f, 0x9a20, 0x9a21,
+ 0x9a22, 0x9a23, 0x9a24, 0x9a25, 0x9a26, 0x9a27, 0x9a28, 0x9a29,
+ 0x9a2a, 0x9a2b, 0x9a2c, 0x9a2d, 0x9a2e, 0x9a2f, 0x9a30, 0x9a31,
+ 0x9a32, 0x9a33, 0x9a34, 0x9a35, 0x9a36, 0x9a37, 0x9a38, 0x9a39,
+ 0x9a3a, 0x9a3b, 0x9a3c, 0x9a3d, 0x9a3e, 0x9a3f, 0x9a40, 0x9a41,
+ 0x9a42, 0x9a43, 0x9a44, 0x9a45, 0x9a46, 0x9a47, 0x9a48, 0x9a49,
+ 0x9a4a, 0x9a4b, 0x9a4c, 0x9a4d, 0x9a4e, 0x9a4f, 0x9a50, 0x9a51,
+ 0x9a52, 0x9a53, 0x9a54, 0x9a55, 0x9a56, 0x9a57, 0x9a58, 0x9a59,
+ 0x9889, 0x988c, 0x988d, 0x988f, 0x9894, 0x989a, 0x989b, 0x989e,
+ 0x989f, 0x98a1, 0x98a2, 0x98a5, 0x98a6, 0x864d, 0x8654, 0x866c,
+ 0x866e, 0x867f, 0x867a, 0x867c, 0x867b, 0x86a8, 0x868d, 0x868b,
+ 0x86ac, 0x869d, 0x86a7, 0x86a3, 0x86aa, 0x8693, 0x86a9, 0x86b6,
+ 0x86c4, 0x86b5, 0x86ce, 0x86b0, 0x86ba, 0x86b1, 0x86af, 0x86c9,
+ 0x86cf, 0x86b4, 0x86e9, 0x86f1, 0x86f2, 0x86ed, 0x86f3, 0x86d0,
+ 0x8713, 0x86de, 0x86f4, 0x86df, 0x86d8, 0x86d1, 0x8703, 0x8707,
+ 0x86f8, 0x8708, 0x870a, 0x870d, 0x8709, 0x8723, 0x873b, 0x871e,
+ 0x8725, 0x872e, 0x871a, 0x873e, 0x8748, 0x8734, 0x8731, 0x8729,
+ 0x8737, 0x873f, 0x8782, 0x8722, 0x877d, 0x877e, 0x877b, 0x8760,
+ 0x8770, 0x874c, 0x876e, 0x878b, 0x8753, 0x8763, 0x877c, 0x8764,
+ 0x8759, 0x8765, 0x8793, 0x87af, 0x87a8, 0x87d2,
+ /* 0xf3 */
+ 0x9a5a, 0x9a5b, 0x9a5c, 0x9a5d, 0x9a5e, 0x9a5f, 0x9a60, 0x9a61,
+ 0x9a62, 0x9a63, 0x9a64, 0x9a65, 0x9a66, 0x9a67, 0x9a68, 0x9a69,
+ 0x9a6a, 0x9a6b, 0x9a72, 0x9a83, 0x9a89, 0x9a8d, 0x9a8e, 0x9a94,
+ 0x9a95, 0x9a99, 0x9aa6, 0x9aa9, 0x9aaa, 0x9aab, 0x9aac, 0x9aad,
+ 0x9aae, 0x9aaf, 0x9ab2, 0x9ab3, 0x9ab4, 0x9ab5, 0x9ab9, 0x9abb,
+ 0x9abd, 0x9abe, 0x9abf, 0x9ac3, 0x9ac4, 0x9ac6, 0x9ac7, 0x9ac8,
+ 0x9ac9, 0x9aca, 0x9acd, 0x9ace, 0x9acf, 0x9ad0, 0x9ad2, 0x9ad4,
+ 0x9ad5, 0x9ad6, 0x9ad7, 0x9ad9, 0x9ada, 0x9adb, 0x9adc, 0x9add,
+ 0x9ade, 0x9ae0, 0x9ae2, 0x9ae3, 0x9ae4, 0x9ae5, 0x9ae7, 0x9ae8,
+ 0x9ae9, 0x9aea, 0x9aec, 0x9aee, 0x9af0, 0x9af1, 0x9af2, 0x9af3,
+ 0x9af4, 0x9af5, 0x9af6, 0x9af7, 0x9af8, 0x9afa, 0x9afc, 0x9afd,
+ 0x9afe, 0x9aff, 0x9b00, 0x9b01, 0x9b02, 0x9b04, 0x9b05, 0x9b06,
+ 0x87c6, 0x8788, 0x8785, 0x87ad, 0x8797, 0x8783, 0x87ab, 0x87e5,
+ 0x87ac, 0x87b5, 0x87b3, 0x87cb, 0x87d3, 0x87bd, 0x87d1, 0x87c0,
+ 0x87ca, 0x87db, 0x87ea, 0x87e0, 0x87ee, 0x8816, 0x8813, 0x87fe,
+ 0x880a, 0x881b, 0x8821, 0x8839, 0x883c, 0x7f36, 0x7f42, 0x7f44,
+ 0x7f45, 0x8210, 0x7afa, 0x7afd, 0x7b08, 0x7b03, 0x7b04, 0x7b15,
+ 0x7b0a, 0x7b2b, 0x7b0f, 0x7b47, 0x7b38, 0x7b2a, 0x7b19, 0x7b2e,
+ 0x7b31, 0x7b20, 0x7b25, 0x7b24, 0x7b33, 0x7b3e, 0x7b1e, 0x7b58,
+ 0x7b5a, 0x7b45, 0x7b75, 0x7b4c, 0x7b5d, 0x7b60, 0x7b6e, 0x7b7b,
+ 0x7b62, 0x7b72, 0x7b71, 0x7b90, 0x7ba6, 0x7ba7, 0x7bb8, 0x7bac,
+ 0x7b9d, 0x7ba8, 0x7b85, 0x7baa, 0x7b9c, 0x7ba2, 0x7bab, 0x7bb4,
+ 0x7bd1, 0x7bc1, 0x7bcc, 0x7bdd, 0x7bda, 0x7be5, 0x7be6, 0x7bea,
+ 0x7c0c, 0x7bfe, 0x7bfc, 0x7c0f, 0x7c16, 0x7c0b,
+ /* 0xf4 */
+ 0x9b07, 0x9b09, 0x9b0a, 0x9b0b, 0x9b0c, 0x9b0d, 0x9b0e, 0x9b10,
+ 0x9b11, 0x9b12, 0x9b14, 0x9b15, 0x9b16, 0x9b17, 0x9b18, 0x9b19,
+ 0x9b1a, 0x9b1b, 0x9b1c, 0x9b1d, 0x9b1e, 0x9b20, 0x9b21, 0x9b22,
+ 0x9b24, 0x9b25, 0x9b26, 0x9b27, 0x9b28, 0x9b29, 0x9b2a, 0x9b2b,
+ 0x9b2c, 0x9b2d, 0x9b2e, 0x9b30, 0x9b31, 0x9b33, 0x9b34, 0x9b35,
+ 0x9b36, 0x9b37, 0x9b38, 0x9b39, 0x9b3a, 0x9b3d, 0x9b3e, 0x9b3f,
+ 0x9b40, 0x9b46, 0x9b4a, 0x9b4b, 0x9b4c, 0x9b4e, 0x9b50, 0x9b52,
+ 0x9b53, 0x9b55, 0x9b56, 0x9b57, 0x9b58, 0x9b59, 0x9b5a, 0x9b5b,
+ 0x9b5c, 0x9b5d, 0x9b5e, 0x9b5f, 0x9b60, 0x9b61, 0x9b62, 0x9b63,
+ 0x9b64, 0x9b65, 0x9b66, 0x9b67, 0x9b68, 0x9b69, 0x9b6a, 0x9b6b,
+ 0x9b6c, 0x9b6d, 0x9b6e, 0x9b6f, 0x9b70, 0x9b71, 0x9b72, 0x9b73,
+ 0x9b74, 0x9b75, 0x9b76, 0x9b77, 0x9b78, 0x9b79, 0x9b7a, 0x9b7b,
+ 0x7c1f, 0x7c2a, 0x7c26, 0x7c38, 0x7c41, 0x7c40, 0x81fe, 0x8201,
+ 0x8202, 0x8204, 0x81ec, 0x8844, 0x8221, 0x8222, 0x8223, 0x822d,
+ 0x822f, 0x8228, 0x822b, 0x8238, 0x823b, 0x8233, 0x8234, 0x823e,
+ 0x8244, 0x8249, 0x824b, 0x824f, 0x825a, 0x825f, 0x8268, 0x887e,
+ 0x8885, 0x8888, 0x88d8, 0x88df, 0x895e, 0x7f9d, 0x7f9f, 0x7fa7,
+ 0x7faf, 0x7fb0, 0x7fb2, 0x7c7c, 0x6549, 0x7c91, 0x7c9d, 0x7c9c,
+ 0x7c9e, 0x7ca2, 0x7cb2, 0x7cbc, 0x7cbd, 0x7cc1, 0x7cc7, 0x7ccc,
+ 0x7ccd, 0x7cc8, 0x7cc5, 0x7cd7, 0x7ce8, 0x826e, 0x66a8, 0x7fbf,
+ 0x7fce, 0x7fd5, 0x7fe5, 0x7fe1, 0x7fe6, 0x7fe9, 0x7fee, 0x7ff3,
+ 0x7cf8, 0x7d77, 0x7da6, 0x7dae, 0x7e47, 0x7e9b, 0x9eb8, 0x9eb4,
+ 0x8d73, 0x8d84, 0x8d94, 0x8d91, 0x8db1, 0x8d67, 0x8d6d, 0x8c47,
+ 0x8c49, 0x914a, 0x9150, 0x914e, 0x914f, 0x9164,
+ /* 0xf5 */
+ 0x9b7c, 0x9b7d, 0x9b7e, 0x9b7f, 0x9b80, 0x9b81, 0x9b82, 0x9b83,
+ 0x9b84, 0x9b85, 0x9b86, 0x9b87, 0x9b88, 0x9b89, 0x9b8a, 0x9b8b,
+ 0x9b8c, 0x9b8d, 0x9b8e, 0x9b8f, 0x9b90, 0x9b91, 0x9b92, 0x9b93,
+ 0x9b94, 0x9b95, 0x9b96, 0x9b97, 0x9b98, 0x9b99, 0x9b9a, 0x9b9b,
+ 0x9b9c, 0x9b9d, 0x9b9e, 0x9b9f, 0x9ba0, 0x9ba1, 0x9ba2, 0x9ba3,
+ 0x9ba4, 0x9ba5, 0x9ba6, 0x9ba7, 0x9ba8, 0x9ba9, 0x9baa, 0x9bab,
+ 0x9bac, 0x9bad, 0x9bae, 0x9baf, 0x9bb0, 0x9bb1, 0x9bb2, 0x9bb3,
+ 0x9bb4, 0x9bb5, 0x9bb6, 0x9bb7, 0x9bb8, 0x9bb9, 0x9bba, 0x9bbb,
+ 0x9bbc, 0x9bbd, 0x9bbe, 0x9bbf, 0x9bc0, 0x9bc1, 0x9bc2, 0x9bc3,
+ 0x9bc4, 0x9bc5, 0x9bc6, 0x9bc7, 0x9bc8, 0x9bc9, 0x9bca, 0x9bcb,
+ 0x9bcc, 0x9bcd, 0x9bce, 0x9bcf, 0x9bd0, 0x9bd1, 0x9bd2, 0x9bd3,
+ 0x9bd4, 0x9bd5, 0x9bd6, 0x9bd7, 0x9bd8, 0x9bd9, 0x9bda, 0x9bdb,
+ 0x9162, 0x9161, 0x9170, 0x9169, 0x916f, 0x917d, 0x917e, 0x9172,
+ 0x9174, 0x9179, 0x918c, 0x9185, 0x9190, 0x918d, 0x9191, 0x91a2,
+ 0x91a3, 0x91aa, 0x91ad, 0x91ae, 0x91af, 0x91b5, 0x91b4, 0x91ba,
+ 0x8c55, 0x9e7e, 0x8db8, 0x8deb, 0x8e05, 0x8e59, 0x8e69, 0x8db5,
+ 0x8dbf, 0x8dbc, 0x8dba, 0x8dc4, 0x8dd6, 0x8dd7, 0x8dda, 0x8dde,
+ 0x8dce, 0x8dcf, 0x8ddb, 0x8dc6, 0x8dec, 0x8df7, 0x8df8, 0x8de3,
+ 0x8df9, 0x8dfb, 0x8de4, 0x8e09, 0x8dfd, 0x8e14, 0x8e1d, 0x8e1f,
+ 0x8e2c, 0x8e2e, 0x8e23, 0x8e2f, 0x8e3a, 0x8e40, 0x8e39, 0x8e35,
+ 0x8e3d, 0x8e31, 0x8e49, 0x8e41, 0x8e42, 0x8e51, 0x8e52, 0x8e4a,
+ 0x8e70, 0x8e76, 0x8e7c, 0x8e6f, 0x8e74, 0x8e85, 0x8e8f, 0x8e94,
+ 0x8e90, 0x8e9c, 0x8e9e, 0x8c78, 0x8c82, 0x8c8a, 0x8c85, 0x8c98,
+ 0x8c94, 0x659b, 0x89d6, 0x89de, 0x89da, 0x89dc,
+ /* 0xf6 */
+ 0x9bdc, 0x9bdd, 0x9bde, 0x9bdf, 0x9be0, 0x9be1, 0x9be2, 0x9be3,
+ 0x9be4, 0x9be5, 0x9be6, 0x9be7, 0x9be8, 0x9be9, 0x9bea, 0x9beb,
+ 0x9bec, 0x9bed, 0x9bee, 0x9bef, 0x9bf0, 0x9bf1, 0x9bf2, 0x9bf3,
+ 0x9bf4, 0x9bf5, 0x9bf6, 0x9bf7, 0x9bf8, 0x9bf9, 0x9bfa, 0x9bfb,
+ 0x9bfc, 0x9bfd, 0x9bfe, 0x9bff, 0x9c00, 0x9c01, 0x9c02, 0x9c03,
+ 0x9c04, 0x9c05, 0x9c06, 0x9c07, 0x9c08, 0x9c09, 0x9c0a, 0x9c0b,
+ 0x9c0c, 0x9c0d, 0x9c0e, 0x9c0f, 0x9c10, 0x9c11, 0x9c12, 0x9c13,
+ 0x9c14, 0x9c15, 0x9c16, 0x9c17, 0x9c18, 0x9c19, 0x9c1a, 0x9c1b,
+ 0x9c1c, 0x9c1d, 0x9c1e, 0x9c1f, 0x9c20, 0x9c21, 0x9c22, 0x9c23,
+ 0x9c24, 0x9c25, 0x9c26, 0x9c27, 0x9c28, 0x9c29, 0x9c2a, 0x9c2b,
+ 0x9c2c, 0x9c2d, 0x9c2e, 0x9c2f, 0x9c30, 0x9c31, 0x9c32, 0x9c33,
+ 0x9c34, 0x9c35, 0x9c36, 0x9c37, 0x9c38, 0x9c39, 0x9c3a, 0x9c3b,
+ 0x89e5, 0x89eb, 0x89ef, 0x8a3e, 0x8b26, 0x9753, 0x96e9, 0x96f3,
+ 0x96ef, 0x9706, 0x9701, 0x9708, 0x970f, 0x970e, 0x972a, 0x972d,
+ 0x9730, 0x973e, 0x9f80, 0x9f83, 0x9f85, 0x9f86, 0x9f87, 0x9f88,
+ 0x9f89, 0x9f8a, 0x9f8c, 0x9efe, 0x9f0b, 0x9f0d, 0x96b9, 0x96bc,
+ 0x96bd, 0x96ce, 0x96d2, 0x77bf, 0x96e0, 0x928e, 0x92ae, 0x92c8,
+ 0x933e, 0x936a, 0x93ca, 0x938f, 0x943e, 0x946b, 0x9c7f, 0x9c82,
+ 0x9c85, 0x9c86, 0x9c87, 0x9c88, 0x7a23, 0x9c8b, 0x9c8e, 0x9c90,
+ 0x9c91, 0x9c92, 0x9c94, 0x9c95, 0x9c9a, 0x9c9b, 0x9c9e, 0x9c9f,
+ 0x9ca0, 0x9ca1, 0x9ca2, 0x9ca3, 0x9ca5, 0x9ca6, 0x9ca7, 0x9ca8,
+ 0x9ca9, 0x9cab, 0x9cad, 0x9cae, 0x9cb0, 0x9cb1, 0x9cb2, 0x9cb3,
+ 0x9cb4, 0x9cb5, 0x9cb6, 0x9cb7, 0x9cba, 0x9cbb, 0x9cbc, 0x9cbd,
+ 0x9cc4, 0x9cc5, 0x9cc6, 0x9cc7, 0x9cca, 0x9ccb,
+ /* 0xf7 */
+ 0x9c3c, 0x9c3d, 0x9c3e, 0x9c3f, 0x9c40, 0x9c41, 0x9c42, 0x9c43,
+ 0x9c44, 0x9c45, 0x9c46, 0x9c47, 0x9c48, 0x9c49, 0x9c4a, 0x9c4b,
+ 0x9c4c, 0x9c4d, 0x9c4e, 0x9c4f, 0x9c50, 0x9c51, 0x9c52, 0x9c53,
+ 0x9c54, 0x9c55, 0x9c56, 0x9c57, 0x9c58, 0x9c59, 0x9c5a, 0x9c5b,
+ 0x9c5c, 0x9c5d, 0x9c5e, 0x9c5f, 0x9c60, 0x9c61, 0x9c62, 0x9c63,
+ 0x9c64, 0x9c65, 0x9c66, 0x9c67, 0x9c68, 0x9c69, 0x9c6a, 0x9c6b,
+ 0x9c6c, 0x9c6d, 0x9c6e, 0x9c6f, 0x9c70, 0x9c71, 0x9c72, 0x9c73,
+ 0x9c74, 0x9c75, 0x9c76, 0x9c77, 0x9c78, 0x9c79, 0x9c7a, 0x9c7b,
+ 0x9c7d, 0x9c7e, 0x9c80, 0x9c83, 0x9c84, 0x9c89, 0x9c8a, 0x9c8c,
+ 0x9c8f, 0x9c93, 0x9c96, 0x9c97, 0x9c98, 0x9c99, 0x9c9d, 0x9caa,
+ 0x9cac, 0x9caf, 0x9cb9, 0x9cbe, 0x9cbf, 0x9cc0, 0x9cc1, 0x9cc2,
+ 0x9cc8, 0x9cc9, 0x9cd1, 0x9cd2, 0x9cda, 0x9cdb, 0x9ce0, 0x9ce1,
+ 0x9ccc, 0x9ccd, 0x9cce, 0x9ccf, 0x9cd0, 0x9cd3, 0x9cd4, 0x9cd5,
+ 0x9cd7, 0x9cd8, 0x9cd9, 0x9cdc, 0x9cdd, 0x9cdf, 0x9ce2, 0x977c,
+ 0x9785, 0x9791, 0x9792, 0x9794, 0x97af, 0x97ab, 0x97a3, 0x97b2,
+ 0x97b4, 0x9ab1, 0x9ab0, 0x9ab7, 0x9e58, 0x9ab6, 0x9aba, 0x9abc,
+ 0x9ac1, 0x9ac0, 0x9ac5, 0x9ac2, 0x9acb, 0x9acc, 0x9ad1, 0x9b45,
+ 0x9b43, 0x9b47, 0x9b49, 0x9b48, 0x9b4d, 0x9b51, 0x98e8, 0x990d,
+ 0x992e, 0x9955, 0x9954, 0x9adf, 0x9ae1, 0x9ae6, 0x9aef, 0x9aeb,
+ 0x9afb, 0x9aed, 0x9af9, 0x9b08, 0x9b0f, 0x9b13, 0x9b1f, 0x9b23,
+ 0x9ebd, 0x9ebe, 0x7e3b, 0x9e82, 0x9e87, 0x9e88, 0x9e8b, 0x9e92,
+ 0x93d6, 0x9e9d, 0x9e9f, 0x9edb, 0x9edc, 0x9edd, 0x9ee0, 0x9edf,
+ 0x9ee2, 0x9ee9, 0x9ee7, 0x9ee5, 0x9eea, 0x9eef, 0x9f22, 0x9f2c,
+ 0x9f2f, 0x9f39, 0x9f37, 0x9f3d, 0x9f3e, 0x9f44,
+ /* 0xf8 */
+ 0x9ce3, 0x9ce4, 0x9ce5, 0x9ce6, 0x9ce7, 0x9ce8, 0x9ce9, 0x9cea,
+ 0x9ceb, 0x9cec, 0x9ced, 0x9cee, 0x9cef, 0x9cf0, 0x9cf1, 0x9cf2,
+ 0x9cf3, 0x9cf4, 0x9cf5, 0x9cf6, 0x9cf7, 0x9cf8, 0x9cf9, 0x9cfa,
+ 0x9cfb, 0x9cfc, 0x9cfd, 0x9cfe, 0x9cff, 0x9d00, 0x9d01, 0x9d02,
+ 0x9d03, 0x9d04, 0x9d05, 0x9d06, 0x9d07, 0x9d08, 0x9d09, 0x9d0a,
+ 0x9d0b, 0x9d0c, 0x9d0d, 0x9d0e, 0x9d0f, 0x9d10, 0x9d11, 0x9d12,
+ 0x9d13, 0x9d14, 0x9d15, 0x9d16, 0x9d17, 0x9d18, 0x9d19, 0x9d1a,
+ 0x9d1b, 0x9d1c, 0x9d1d, 0x9d1e, 0x9d1f, 0x9d20, 0x9d21, 0x9d22,
+ 0x9d23, 0x9d24, 0x9d25, 0x9d26, 0x9d27, 0x9d28, 0x9d29, 0x9d2a,
+ 0x9d2b, 0x9d2c, 0x9d2d, 0x9d2e, 0x9d2f, 0x9d30, 0x9d31, 0x9d32,
+ 0x9d33, 0x9d34, 0x9d35, 0x9d36, 0x9d37, 0x9d38, 0x9d39, 0x9d3a,
+ 0x9d3b, 0x9d3c, 0x9d3d, 0x9d3e, 0x9d3f, 0x9d40, 0x9d41, 0x9d42,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ /* 0xf9 */
+ 0x9d43, 0x9d44, 0x9d45, 0x9d46, 0x9d47, 0x9d48, 0x9d49, 0x9d4a,
+ 0x9d4b, 0x9d4c, 0x9d4d, 0x9d4e, 0x9d4f, 0x9d50, 0x9d51, 0x9d52,
+ 0x9d53, 0x9d54, 0x9d55, 0x9d56, 0x9d57, 0x9d58, 0x9d59, 0x9d5a,
+ 0x9d5b, 0x9d5c, 0x9d5d, 0x9d5e, 0x9d5f, 0x9d60, 0x9d61, 0x9d62,
+ 0x9d63, 0x9d64, 0x9d65, 0x9d66, 0x9d67, 0x9d68, 0x9d69, 0x9d6a,
+ 0x9d6b, 0x9d6c, 0x9d6d, 0x9d6e, 0x9d6f, 0x9d70, 0x9d71, 0x9d72,
+ 0x9d73, 0x9d74, 0x9d75, 0x9d76, 0x9d77, 0x9d78, 0x9d79, 0x9d7a,
+ 0x9d7b, 0x9d7c, 0x9d7d, 0x9d7e, 0x9d7f, 0x9d80, 0x9d81, 0x9d82,
+ 0x9d83, 0x9d84, 0x9d85, 0x9d86, 0x9d87, 0x9d88, 0x9d89, 0x9d8a,
+ 0x9d8b, 0x9d8c, 0x9d8d, 0x9d8e, 0x9d8f, 0x9d90, 0x9d91, 0x9d92,
+ 0x9d93, 0x9d94, 0x9d95, 0x9d96, 0x9d97, 0x9d98, 0x9d99, 0x9d9a,
+ 0x9d9b, 0x9d9c, 0x9d9d, 0x9d9e, 0x9d9f, 0x9da0, 0x9da1, 0x9da2,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ /* 0xfa */
+ 0x9da3, 0x9da4, 0x9da5, 0x9da6, 0x9da7, 0x9da8, 0x9da9, 0x9daa,
+ 0x9dab, 0x9dac, 0x9dad, 0x9dae, 0x9daf, 0x9db0, 0x9db1, 0x9db2,
+ 0x9db3, 0x9db4, 0x9db5, 0x9db6, 0x9db7, 0x9db8, 0x9db9, 0x9dba,
+ 0x9dbb, 0x9dbc, 0x9dbd, 0x9dbe, 0x9dbf, 0x9dc0, 0x9dc1, 0x9dc2,
+ 0x9dc3, 0x9dc4, 0x9dc5, 0x9dc6, 0x9dc7, 0x9dc8, 0x9dc9, 0x9dca,
+ 0x9dcb, 0x9dcc, 0x9dcd, 0x9dce, 0x9dcf, 0x9dd0, 0x9dd1, 0x9dd2,
+ 0x9dd3, 0x9dd4, 0x9dd5, 0x9dd6, 0x9dd7, 0x9dd8, 0x9dd9, 0x9dda,
+ 0x9ddb, 0x9ddc, 0x9ddd, 0x9dde, 0x9ddf, 0x9de0, 0x9de1, 0x9de2,
+ 0x9de3, 0x9de4, 0x9de5, 0x9de6, 0x9de7, 0x9de8, 0x9de9, 0x9dea,
+ 0x9deb, 0x9dec, 0x9ded, 0x9dee, 0x9def, 0x9df0, 0x9df1, 0x9df2,
+ 0x9df3, 0x9df4, 0x9df5, 0x9df6, 0x9df7, 0x9df8, 0x9df9, 0x9dfa,
+ 0x9dfb, 0x9dfc, 0x9dfd, 0x9dfe, 0x9dff, 0x9e00, 0x9e01, 0x9e02,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ /* 0xfb */
+ 0x9e03, 0x9e04, 0x9e05, 0x9e06, 0x9e07, 0x9e08, 0x9e09, 0x9e0a,
+ 0x9e0b, 0x9e0c, 0x9e0d, 0x9e0e, 0x9e0f, 0x9e10, 0x9e11, 0x9e12,
+ 0x9e13, 0x9e14, 0x9e15, 0x9e16, 0x9e17, 0x9e18, 0x9e19, 0x9e1a,
+ 0x9e1b, 0x9e1c, 0x9e1d, 0x9e1e, 0x9e24, 0x9e27, 0x9e2e, 0x9e30,
+ 0x9e34, 0x9e3b, 0x9e3c, 0x9e40, 0x9e4d, 0x9e50, 0x9e52, 0x9e53,
+ 0x9e54, 0x9e56, 0x9e59, 0x9e5d, 0x9e5f, 0x9e60, 0x9e61, 0x9e62,
+ 0x9e65, 0x9e6e, 0x9e6f, 0x9e72, 0x9e74, 0x9e75, 0x9e76, 0x9e77,
+ 0x9e78, 0x9e79, 0x9e7a, 0x9e7b, 0x9e7c, 0x9e7d, 0x9e80, 0x9e81,
+ 0x9e83, 0x9e84, 0x9e85, 0x9e86, 0x9e89, 0x9e8a, 0x9e8c, 0x9e8d,
+ 0x9e8e, 0x9e8f, 0x9e90, 0x9e91, 0x9e94, 0x9e95, 0x9e96, 0x9e97,
+ 0x9e98, 0x9e99, 0x9e9a, 0x9e9b, 0x9e9c, 0x9e9e, 0x9ea0, 0x9ea1,
+ 0x9ea2, 0x9ea3, 0x9ea4, 0x9ea5, 0x9ea7, 0x9ea8, 0x9ea9, 0x9eaa,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ /* 0xfc */
+ 0x9eab, 0x9eac, 0x9ead, 0x9eae, 0x9eaf, 0x9eb0, 0x9eb1, 0x9eb2,
+ 0x9eb3, 0x9eb5, 0x9eb6, 0x9eb7, 0x9eb9, 0x9eba, 0x9ebc, 0x9ebf,
+ 0x9ec0, 0x9ec1, 0x9ec2, 0x9ec3, 0x9ec5, 0x9ec6, 0x9ec7, 0x9ec8,
+ 0x9eca, 0x9ecb, 0x9ecc, 0x9ed0, 0x9ed2, 0x9ed3, 0x9ed5, 0x9ed6,
+ 0x9ed7, 0x9ed9, 0x9eda, 0x9ede, 0x9ee1, 0x9ee3, 0x9ee4, 0x9ee6,
+ 0x9ee8, 0x9eeb, 0x9eec, 0x9eed, 0x9eee, 0x9ef0, 0x9ef1, 0x9ef2,
+ 0x9ef3, 0x9ef4, 0x9ef5, 0x9ef6, 0x9ef7, 0x9ef8, 0x9efa, 0x9efd,
+ 0x9eff, 0x9f00, 0x9f01, 0x9f02, 0x9f03, 0x9f04, 0x9f05, 0x9f06,
+ 0x9f07, 0x9f08, 0x9f09, 0x9f0a, 0x9f0c, 0x9f0f, 0x9f11, 0x9f12,
+ 0x9f14, 0x9f15, 0x9f16, 0x9f18, 0x9f1a, 0x9f1b, 0x9f1c, 0x9f1d,
+ 0x9f1e, 0x9f1f, 0x9f21, 0x9f23, 0x9f24, 0x9f25, 0x9f26, 0x9f27,
+ 0x9f28, 0x9f29, 0x9f2a, 0x9f2b, 0x9f2d, 0x9f2e, 0x9f30, 0x9f31,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ /* 0xfd */
+ 0x9f32, 0x9f33, 0x9f34, 0x9f35, 0x9f36, 0x9f38, 0x9f3a, 0x9f3c,
+ 0x9f3f, 0x9f40, 0x9f41, 0x9f42, 0x9f43, 0x9f45, 0x9f46, 0x9f47,
+ 0x9f48, 0x9f49, 0x9f4a, 0x9f4b, 0x9f4c, 0x9f4d, 0x9f4e, 0x9f4f,
+ 0x9f52, 0x9f53, 0x9f54, 0x9f55, 0x9f56, 0x9f57, 0x9f58, 0x9f59,
+ 0x9f5a, 0x9f5b, 0x9f5c, 0x9f5d, 0x9f5e, 0x9f5f, 0x9f60, 0x9f61,
+ 0x9f62, 0x9f63, 0x9f64, 0x9f65, 0x9f66, 0x9f67, 0x9f68, 0x9f69,
+ 0x9f6a, 0x9f6b, 0x9f6c, 0x9f6d, 0x9f6e, 0x9f6f, 0x9f70, 0x9f71,
+ 0x9f72, 0x9f73, 0x9f74, 0x9f75, 0x9f76, 0x9f77, 0x9f78, 0x9f79,
+ 0x9f7a, 0x9f7b, 0x9f7c, 0x9f7d, 0x9f7e, 0x9f81, 0x9f82, 0x9f8d,
+ 0x9f8e, 0x9f8f, 0x9f90, 0x9f91, 0x9f92, 0x9f93, 0x9f94, 0x9f95,
+ 0x9f96, 0x9f97, 0x9f98, 0x9f9c, 0x9f9d, 0x9f9e, 0x9fa1, 0x9fa2,
+ 0x9fa3, 0x9fa4, 0x9fa5, 0xf92c, 0xf979, 0xf995, 0xf9e7, 0xf9f1,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ /* 0xfe */
+ 0xfa0c, 0xfa0d, 0xfa0e, 0xfa0f, 0xfa11, 0xfa13, 0xfa14, 0xfa18,
+ 0xfa1f, 0xfa20, 0xfa21, 0xfa23, 0xfa24, 0xfa27, 0xfa28, 0xfa29,
+};
+
+static int
+gbk_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n)
+{
+ unsigned char c1 = s[0];
+ if ((c1 >= 0x81 && c1 <= 0xfe)) {
+ if (n >= 2) {
+ unsigned char c2 = s[1];
+ if ((c2 >= 0x40 && c2 < 0x7f) || (c2 >= 0x80 && c2 < 0xff)) {
+ unsigned int i = 190 * (c1 - 0x81) + (c2 - (c2 >= 0x80 ? 0x41 : 0x40));
+ unsigned short wc = 0xfffd;
+ {
+ if (i < 23766)
+ wc = gbk_2uni_page81[i];
+ }
+ if (wc != 0xfffd) {
+ *pwc = (ucs4_t) wc;
+ return 2;
+ }
+ }
+ return RET_ILSEQ;
+ }
+ return RET_TOOFEW(0);
+ }
+ return RET_ILSEQ;
+}
+
+static const unsigned short gbk_page00[208] = {
+ 0x0000, 0x0000, 0x0000, 0x0000, 0xa1e8, 0x0000, 0x0000, 0xa1ec, /*0xa0-0xa7*/
+ 0xa1a7, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0xa8-0xaf*/
+ 0xa1e3, 0xa1c0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xa1a4, /*0xb0-0xb7*/
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0xb8-0xbf*/
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0xc0-0xc7*/
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0xc8-0xcf*/
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xa1c1, /*0xd0-0xd7*/
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0xd8-0xdf*/
+ 0xa8a4, 0xa8a2, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0xe0-0xe7*/
+ 0xa8a8, 0xa8a6, 0xa8ba, 0x0000, 0xa8ac, 0xa8aa, 0x0000, 0x0000, /*0xe8-0xef*/
+ 0x0000, 0x0000, 0xa8b0, 0xa8ae, 0x0000, 0x0000, 0x0000, 0xa1c2, /*0xf0-0xf7*/
+ 0x0000, 0xa8b4, 0xa8b2, 0x0000, 0xa8b9, 0x0000, 0x0000, 0x0000, /*0xf8-0xff*/
+ /* 0x0100 */
+ 0x0000, 0xa8a1, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0x00-0x07*/
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0x08-0x0f*/
+ 0x0000, 0x0000, 0x0000, 0xa8a5, 0x0000, 0x0000, 0x0000, 0x0000, /*0x10-0x17*/
+ 0x0000, 0x0000, 0x0000, 0xa8a7, 0x0000, 0x0000, 0x0000, 0x0000, /*0x18-0x1f*/
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0x20-0x27*/
+ 0x0000, 0x0000, 0x0000, 0xa8a9, 0x0000, 0x0000, 0x0000, 0x0000, /*0x28-0x2f*/
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0x30-0x37*/
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0x38-0x3f*/
+ 0x0000, 0x0000, 0x0000, 0x0000, 0xa8bd, 0x0000, 0x0000, 0x0000, /*0x40-0x47*/
+ 0xa8be, 0x0000, 0x0000, 0x0000, 0x0000, 0xa8ad, 0x0000, 0x0000, /*0x48-0x4f*/
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0x50-0x57*/
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0x58-0x5f*/
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0x60-0x67*/
+ 0x0000, 0x0000, 0x0000, 0xa8b1, 0x0000, 0x0000, 0x0000, 0x0000, /*0x68-0x6f*/
+};
+static const unsigned short gbk_page01[24] = {
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xa8a3, 0x0000, /*0xc8-0xcf*/
+ 0xa8ab, 0x0000, 0xa8af, 0x0000, 0xa8b3, 0x0000, 0xa8b5, 0x0000, /*0xd0-0xd7*/
+ 0xa8b6, 0x0000, 0xa8b7, 0x0000, 0xa8b8, 0x0000, 0x0000, 0x0000, /*0xd8-0xdf*/
+};
+static const unsigned short gbk_page02a[24] = {
+ 0x0000, 0xa8bb, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0x50-0x57*/
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0x58-0x5f*/
+ 0x0000, 0xa8c0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0x60-0x67*/
+};
+static const unsigned short gbk_page02b[32] = {
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xa1a6, /*0xc0-0xc7*/
+ 0x0000, 0xa1a5, 0xa840, 0xa841, 0x0000, 0x0000, 0x0000, 0x0000, /*0xc8-0xcf*/
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0xd0-0xd7*/
+ 0x0000, 0xa842, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0xd8-0xdf*/
+};
+static const unsigned short gbk_page03[64] = {
+ 0x0000, 0xa6a1, 0xa6a2, 0xa6a3, 0xa6a4, 0xa6a5, 0xa6a6, 0xa6a7, /*0x90-0x97*/
+ 0xa6a8, 0xa6a9, 0xa6aa, 0xa6ab, 0xa6ac, 0xa6ad, 0xa6ae, 0xa6af, /*0x98-0x9f*/
+ 0xa6b0, 0xa6b1, 0x0000, 0xa6b2, 0xa6b3, 0xa6b4, 0xa6b5, 0xa6b6, /*0xa0-0xa7*/
+ 0xa6b7, 0xa6b8, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0xa8-0xaf*/
+ 0x0000, 0xa6c1, 0xa6c2, 0xa6c3, 0xa6c4, 0xa6c5, 0xa6c6, 0xa6c7, /*0xb0-0xb7*/
+ 0xa6c8, 0xa6c9, 0xa6ca, 0xa6cb, 0xa6cc, 0xa6cd, 0xa6ce, 0xa6cf, /*0xb8-0xbf*/
+ 0xa6d0, 0xa6d1, 0x0000, 0xa6d2, 0xa6d3, 0xa6d4, 0xa6d5, 0xa6d6, /*0xc0-0xc7*/
+ 0xa6d7, 0xa6d8, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0xc8-0xcf*/
+};
+static const unsigned short gbk_page04[88] = {
+ 0x0000, 0xa7a7, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0x00-0x07*/
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0x08-0x0f*/
+ 0xa7a1, 0xa7a2, 0xa7a3, 0xa7a4, 0xa7a5, 0xa7a6, 0xa7a8, 0xa7a9, /*0x10-0x17*/
+ 0xa7aa, 0xa7ab, 0xa7ac, 0xa7ad, 0xa7ae, 0xa7af, 0xa7b0, 0xa7b1, /*0x18-0x1f*/
+ 0xa7b2, 0xa7b3, 0xa7b4, 0xa7b5, 0xa7b6, 0xa7b7, 0xa7b8, 0xa7b9, /*0x20-0x27*/
+ 0xa7ba, 0xa7bb, 0xa7bc, 0xa7bd, 0xa7be, 0xa7bf, 0xa7c0, 0xa7c1, /*0x28-0x2f*/
+ 0xa7d1, 0xa7d2, 0xa7d3, 0xa7d4, 0xa7d5, 0xa7d6, 0xa7d8, 0xa7d9, /*0x30-0x37*/
+ 0xa7da, 0xa7db, 0xa7dc, 0xa7dd, 0xa7de, 0xa7df, 0xa7e0, 0xa7e1, /*0x38-0x3f*/
+ 0xa7e2, 0xa7e3, 0xa7e4, 0xa7e5, 0xa7e6, 0xa7e7, 0xa7e8, 0xa7e9, /*0x40-0x47*/
+ 0xa7ea, 0xa7eb, 0xa7ec, 0xa7ed, 0xa7ee, 0xa7ef, 0xa7f0, 0xa7f1, /*0x48-0x4f*/
+ 0x0000, 0xa7d7, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0x50-0x57*/
+};
+static const unsigned short gbk_page20[48] = {
+ 0xa95c, 0x0000, 0x0000, 0xa843, 0xa1aa, 0xa844, 0xa1ac, 0x0000, /*0x10-0x17*/
+ 0xa1ae, 0xa1af, 0x0000, 0x0000, 0xa1b0, 0xa1b1, 0x0000, 0x0000, /*0x18-0x1f*/
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xa845, 0xa1ad, 0x0000, /*0x20-0x27*/
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0x28-0x2f*/
+ 0xa1eb, 0x0000, 0xa1e4, 0xa1e5, 0x0000, 0xa846, 0x0000, 0x0000, /*0x30-0x37*/
+ 0x0000, 0x0000, 0x0000, 0xa1f9, 0x0000, 0x0000, 0x0000, 0x0000, /*0x38-0x3f*/
+};
+static const unsigned short gbk_page21[160] = {
+ 0x0000, 0x0000, 0x0000, 0xa1e6, 0x0000, 0xa847, 0x0000, 0x0000, /*0x00-0x07*/
+ 0x0000, 0xa848, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0x08-0x0f*/
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xa1ed, 0x0000, /*0x10-0x17*/
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0x18-0x1f*/
+ 0x0000, 0xa959, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0x20-0x27*/
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0x28-0x2f*/
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0x30-0x37*/
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0x38-0x3f*/
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0x40-0x47*/
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0x48-0x4f*/
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0x50-0x57*/
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0x58-0x5f*/
+ 0xa2f1, 0xa2f2, 0xa2f3, 0xa2f4, 0xa2f5, 0xa2f6, 0xa2f7, 0xa2f8, /*0x60-0x67*/
+ 0xa2f9, 0xa2fa, 0xa2fb, 0xa2fc, 0x0000, 0x0000, 0x0000, 0x0000, /*0x68-0x6f*/
+ 0xa2a1, 0xa2a2, 0xa2a3, 0xa2a4, 0xa2a5, 0xa2a6, 0xa2a7, 0xa2a8, /*0x70-0x77*/
+ 0xa2a9, 0xa2aa, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0x78-0x7f*/
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0x80-0x87*/
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0x88-0x8f*/
+ 0xa1fb, 0xa1fc, 0xa1fa, 0xa1fd, 0x0000, 0x0000, 0xa849, 0xa84a, /*0x90-0x97*/
+ 0xa84b, 0xa84c, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0x98-0x9f*/
+};
+static const unsigned short gbk_page22[184] = {
+ 0xa1ca, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xa1c7, /*0x08-0x0f*/
+ 0x0000, 0xa1c6, 0x0000, 0x0000, 0x0000, 0xa84d, 0x0000, 0x0000, /*0x10-0x17*/
+ 0x0000, 0x0000, 0xa1cc, 0x0000, 0x0000, 0xa1d8, 0xa1de, 0xa84e, /*0x18-0x1f*/
+ 0xa1cf, 0x0000, 0x0000, 0xa84f, 0x0000, 0xa1ce, 0x0000, 0xa1c4, /*0x20-0x27*/
+ 0xa1c5, 0xa1c9, 0xa1c8, 0xa1d2, 0x0000, 0x0000, 0xa1d3, 0x0000, /*0x28-0x2f*/
+ 0x0000, 0x0000, 0x0000, 0x0000, 0xa1e0, 0xa1df, 0xa1c3, 0xa1cb, /*0x30-0x37*/
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xa1d7, 0x0000, 0x0000, /*0x38-0x3f*/
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0x40-0x47*/
+ 0xa1d6, 0x0000, 0x0000, 0x0000, 0xa1d5, 0x0000, 0x0000, 0x0000, /*0x48-0x4f*/
+ 0x0000, 0x0000, 0xa850, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0x50-0x57*/
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0x58-0x5f*/
+ 0xa1d9, 0xa1d4, 0x0000, 0x0000, 0xa1dc, 0xa1dd, 0xa851, 0xa852, /*0x60-0x67*/
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xa1da, 0xa1db, /*0x68-0x6f*/
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0x70-0x77*/
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0x78-0x7f*/
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0x80-0x87*/
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0x88-0x8f*/
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xa892, 0x0000, 0x0000, /*0x90-0x97*/
+ 0x0000, 0xa1d1, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0x98-0x9f*/
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xa1cd, 0x0000, 0x0000, /*0xa0-0xa7*/
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0xa8-0xaf*/
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0xb0-0xb7*/
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xa853, /*0xb8-0xbf*/
+};
+static const unsigned short gbk_page24[64] = {
+ 0xa2d9, 0xa2da, 0xa2db, 0xa2dc, 0xa2dd, 0xa2de, 0xa2df, 0xa2e0, /*0x60-0x67*/
+ 0xa2e1, 0xa2e2, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0x68-0x6f*/
+ 0x0000, 0x0000, 0x0000, 0x0000, 0xa2c5, 0xa2c6, 0xa2c7, 0xa2c8, /*0x70-0x77*/
+ 0xa2c9, 0xa2ca, 0xa2cb, 0xa2cc, 0xa2cd, 0xa2ce, 0xa2cf, 0xa2d0, /*0x78-0x7f*/
+ 0xa2d1, 0xa2d2, 0xa2d3, 0xa2d4, 0xa2d5, 0xa2d6, 0xa2d7, 0xa2d8, /*0x80-0x87*/
+ 0xa2b1, 0xa2b2, 0xa2b3, 0xa2b4, 0xa2b5, 0xa2b6, 0xa2b7, 0xa2b8, /*0x88-0x8f*/
+ 0xa2b9, 0xa2ba, 0xa2bb, 0xa2bc, 0xa2bd, 0xa2be, 0xa2bf, 0xa2c0, /*0x90-0x97*/
+ 0xa2c1, 0xa2c2, 0xa2c3, 0xa2c4, 0x0000, 0x0000, 0x0000, 0x0000, /*0x98-0x9f*/
+};
+static const unsigned short gbk_page25[232] = {
+ 0xa9a4, 0xa9a5, 0xa9a6, 0xa9a7, 0xa9a8, 0xa9a9, 0xa9aa, 0xa9ab, /*0x00-0x07*/
+ 0xa9ac, 0xa9ad, 0xa9ae, 0xa9af, 0xa9b0, 0xa9b1, 0xa9b2, 0xa9b3, /*0x08-0x0f*/
+ 0xa9b4, 0xa9b5, 0xa9b6, 0xa9b7, 0xa9b8, 0xa9b9, 0xa9ba, 0xa9bb, /*0x10-0x17*/
+ 0xa9bc, 0xa9bd, 0xa9be, 0xa9bf, 0xa9c0, 0xa9c1, 0xa9c2, 0xa9c3, /*0x18-0x1f*/
+ 0xa9c4, 0xa9c5, 0xa9c6, 0xa9c7, 0xa9c8, 0xa9c9, 0xa9ca, 0xa9cb, /*0x20-0x27*/
+ 0xa9cc, 0xa9cd, 0xa9ce, 0xa9cf, 0xa9d0, 0xa9d1, 0xa9d2, 0xa9d3, /*0x28-0x2f*/
+ 0xa9d4, 0xa9d5, 0xa9d6, 0xa9d7, 0xa9d8, 0xa9d9, 0xa9da, 0xa9db, /*0x30-0x37*/
+ 0xa9dc, 0xa9dd, 0xa9de, 0xa9df, 0xa9e0, 0xa9e1, 0xa9e2, 0xa9e3, /*0x38-0x3f*/
+ 0xa9e4, 0xa9e5, 0xa9e6, 0xa9e7, 0xa9e8, 0xa9e9, 0xa9ea, 0xa9eb, /*0x40-0x47*/
+ 0xa9ec, 0xa9ed, 0xa9ee, 0xa9ef, 0x0000, 0x0000, 0x0000, 0x0000, /*0x48-0x4f*/
+ 0xa854, 0xa855, 0xa856, 0xa857, 0xa858, 0xa859, 0xa85a, 0xa85b, /*0x50-0x57*/
+ 0xa85c, 0xa85d, 0xa85e, 0xa85f, 0xa860, 0xa861, 0xa862, 0xa863, /*0x58-0x5f*/
+ 0xa864, 0xa865, 0xa866, 0xa867, 0xa868, 0xa869, 0xa86a, 0xa86b, /*0x60-0x67*/
+ 0xa86c, 0xa86d, 0xa86e, 0xa86f, 0xa870, 0xa871, 0xa872, 0xa873, /*0x68-0x6f*/
+ 0xa874, 0xa875, 0xa876, 0xa877, 0x0000, 0x0000, 0x0000, 0x0000, /*0x70-0x77*/
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0x78-0x7f*/
+ 0x0000, 0xa878, 0xa879, 0xa87a, 0xa87b, 0xa87c, 0xa87d, 0xa87e, /*0x80-0x87*/
+ 0xa880, 0xa881, 0xa882, 0xa883, 0xa884, 0xa885, 0xa886, 0xa887, /*0x88-0x8f*/
+ 0x0000, 0x0000, 0x0000, 0xa888, 0xa889, 0xa88a, 0x0000, 0x0000, /*0x90-0x97*/
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0x98-0x9f*/
+ 0xa1f6, 0xa1f5, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0xa0-0xa7*/
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0xa8-0xaf*/
+ 0x0000, 0x0000, 0xa1f8, 0xa1f7, 0x0000, 0x0000, 0x0000, 0x0000, /*0xb0-0xb7*/
+ 0x0000, 0x0000, 0x0000, 0x0000, 0xa88b, 0xa88c, 0x0000, 0x0000, /*0xb8-0xbf*/
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xa1f4, 0xa1f3, /*0xc0-0xc7*/
+ 0x0000, 0x0000, 0x0000, 0xa1f0, 0x0000, 0x0000, 0xa1f2, 0xa1f1, /*0xc8-0xcf*/
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0xd0-0xd7*/
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0xd8-0xdf*/
+ 0x0000, 0x0000, 0xa88d, 0xa88e, 0xa88f, 0xa890, 0x0000, 0x0000, /*0xe0-0xe7*/
+};
+static const unsigned short gbk_page26[72] = {
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xa1ef, 0xa1ee, 0x0000, /*0x00-0x07*/
+ 0x0000, 0xa891, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0x08-0x0f*/
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0x10-0x17*/
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0x18-0x1f*/
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0x20-0x27*/
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0x28-0x2f*/
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0x30-0x37*/
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0x38-0x3f*/
+ 0xa1e2, 0x0000, 0xa1e1, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0x40-0x47*/
+};
+static const unsigned short gbk_page30[304] = {
+ 0xa1a1, 0xa1a2, 0xa1a3, 0xa1a8, 0x0000, 0xa1a9, 0xa965, 0xa996, /*0x00-0x07*/
+ 0xa1b4, 0xa1b5, 0xa1b6, 0xa1b7, 0xa1b8, 0xa1b9, 0xa1ba, 0xa1bb, /*0x08-0x0f*/
+ 0xa1be, 0xa1bf, 0xa893, 0xa1fe, 0xa1b2, 0xa1b3, 0xa1bc, 0xa1bd, /*0x10-0x17*/
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xa894, 0xa895, 0x0000, /*0x18-0x1f*/
+ 0x0000, 0xa940, 0xa941, 0xa942, 0xa943, 0xa944, 0xa945, 0xa946, /*0x20-0x27*/
+ 0xa947, 0xa948, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0x28-0x2f*/
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0x30-0x37*/
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0x38-0x3f*/
+ 0x0000, 0xa4a1, 0xa4a2, 0xa4a3, 0xa4a4, 0xa4a5, 0xa4a6, 0xa4a7, /*0x40-0x47*/
+ 0xa4a8, 0xa4a9, 0xa4aa, 0xa4ab, 0xa4ac, 0xa4ad, 0xa4ae, 0xa4af, /*0x48-0x4f*/
+ 0xa4b0, 0xa4b1, 0xa4b2, 0xa4b3, 0xa4b4, 0xa4b5, 0xa4b6, 0xa4b7, /*0x50-0x57*/
+ 0xa4b8, 0xa4b9, 0xa4ba, 0xa4bb, 0xa4bc, 0xa4bd, 0xa4be, 0xa4bf, /*0x58-0x5f*/
+ 0xa4c0, 0xa4c1, 0xa4c2, 0xa4c3, 0xa4c4, 0xa4c5, 0xa4c6, 0xa4c7, /*0x60-0x67*/
+ 0xa4c8, 0xa4c9, 0xa4ca, 0xa4cb, 0xa4cc, 0xa4cd, 0xa4ce, 0xa4cf, /*0x68-0x6f*/
+ 0xa4d0, 0xa4d1, 0xa4d2, 0xa4d3, 0xa4d4, 0xa4d5, 0xa4d6, 0xa4d7, /*0x70-0x77*/
+ 0xa4d8, 0xa4d9, 0xa4da, 0xa4db, 0xa4dc, 0xa4dd, 0xa4de, 0xa4df, /*0x78-0x7f*/
+ 0xa4e0, 0xa4e1, 0xa4e2, 0xa4e3, 0xa4e4, 0xa4e5, 0xa4e6, 0xa4e7, /*0x80-0x87*/
+ 0xa4e8, 0xa4e9, 0xa4ea, 0xa4eb, 0xa4ec, 0xa4ed, 0xa4ee, 0xa4ef, /*0x88-0x8f*/
+ 0xa4f0, 0xa4f1, 0xa4f2, 0xa4f3, 0x0000, 0x0000, 0x0000, 0x0000, /*0x90-0x97*/
+ 0x0000, 0x0000, 0x0000, 0xa961, 0xa962, 0xa966, 0xa967, 0x0000, /*0x98-0x9f*/
+ 0x0000, 0xa5a1, 0xa5a2, 0xa5a3, 0xa5a4, 0xa5a5, 0xa5a6, 0xa5a7, /*0xa0-0xa7*/
+ 0xa5a8, 0xa5a9, 0xa5aa, 0xa5ab, 0xa5ac, 0xa5ad, 0xa5ae, 0xa5af, /*0xa8-0xaf*/
+ 0xa5b0, 0xa5b1, 0xa5b2, 0xa5b3, 0xa5b4, 0xa5b5, 0xa5b6, 0xa5b7, /*0xb0-0xb7*/
+ 0xa5b8, 0xa5b9, 0xa5ba, 0xa5bb, 0xa5bc, 0xa5bd, 0xa5be, 0xa5bf, /*0xb8-0xbf*/
+ 0xa5c0, 0xa5c1, 0xa5c2, 0xa5c3, 0xa5c4, 0xa5c5, 0xa5c6, 0xa5c7, /*0xc0-0xc7*/
+ 0xa5c8, 0xa5c9, 0xa5ca, 0xa5cb, 0xa5cc, 0xa5cd, 0xa5ce, 0xa5cf, /*0xc8-0xcf*/
+ 0xa5d0, 0xa5d1, 0xa5d2, 0xa5d3, 0xa5d4, 0xa5d5, 0xa5d6, 0xa5d7, /*0xd0-0xd7*/
+ 0xa5d8, 0xa5d9, 0xa5da, 0xa5db, 0xa5dc, 0xa5dd, 0xa5de, 0xa5df, /*0xd8-0xdf*/
+ 0xa5e0, 0xa5e1, 0xa5e2, 0xa5e3, 0xa5e4, 0xa5e5, 0xa5e6, 0xa5e7, /*0xe0-0xe7*/
+ 0xa5e8, 0xa5e9, 0xa5ea, 0xa5eb, 0xa5ec, 0xa5ed, 0xa5ee, 0xa5ef, /*0xe8-0xef*/
+ 0xa5f0, 0xa5f1, 0xa5f2, 0xa5f3, 0xa5f4, 0xa5f5, 0xa5f6, 0x0000, /*0xf0-0xf7*/
+ 0x0000, 0x0000, 0x0000, 0x0000, 0xa960, 0xa963, 0xa964, 0x0000, /*0xf8-0xff*/
+ /* 0x3100 */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xa8c5, 0xa8c6, 0xa8c7, /*0x00-0x07*/
+ 0xa8c8, 0xa8c9, 0xa8ca, 0xa8cb, 0xa8cc, 0xa8cd, 0xa8ce, 0xa8cf, /*0x08-0x0f*/
+ 0xa8d0, 0xa8d1, 0xa8d2, 0xa8d3, 0xa8d4, 0xa8d5, 0xa8d6, 0xa8d7, /*0x10-0x17*/
+ 0xa8d8, 0xa8d9, 0xa8da, 0xa8db, 0xa8dc, 0xa8dd, 0xa8de, 0xa8df, /*0x18-0x1f*/
+ 0xa8e0, 0xa8e1, 0xa8e2, 0xa8e3, 0xa8e4, 0xa8e5, 0xa8e6, 0xa8e7, /*0x20-0x27*/
+ 0xa8e8, 0xa8e9, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0x28-0x2f*/
+};
+static const unsigned short gbk_page32[24] = {
+ 0xa2e5, 0xa2e6, 0xa2e7, 0xa2e8, 0xa2e9, 0xa2ea, 0xa2eb, 0xa2ec, /*0x20-0x27*/
+ 0xa2ed, 0xa2ee, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0x28-0x2f*/
+ 0x0000, 0xa95a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0x30-0x37*/
+};
+static const unsigned short gbk_page33[80] = {
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xa94a, 0xa94b, /*0x88-0x8f*/
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0x90-0x97*/
+ 0x0000, 0x0000, 0x0000, 0x0000, 0xa94c, 0xa94d, 0xa94e, 0x0000, /*0x98-0x9f*/
+ 0x0000, 0xa94f, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0xa0-0xa7*/
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0xa8-0xaf*/
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0xb0-0xb7*/
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0xb8-0xbf*/
+ 0x0000, 0x0000, 0x0000, 0x0000, 0xa950, 0x0000, 0x0000, 0x0000, /*0xc0-0xc7*/
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xa951, 0x0000, /*0xc8-0xcf*/
+ 0x0000, 0xa952, 0xa953, 0x0000, 0x0000, 0xa954, 0x0000, 0x0000, /*0xd0-0xd7*/
+};
+static const unsigned short gbk_page4e[20904] = {
+ 0xd2bb, 0xb6a1, 0x8140, 0xc6df, 0x8141, 0x8142, 0x8143, 0xcdf2, /*0x00-0x07*/
+ 0xd5c9, 0xc8fd, 0xc9cf, 0xcfc2, 0xd8a2, 0xb2bb, 0xd3eb, 0x8144, /*0x08-0x0f*/
+ 0xd8a4, 0xb3f3, 0x8145, 0xd7a8, 0xc7d2, 0xd8a7, 0xcac0, 0x8146, /*0x10-0x17*/
+ 0xc7f0, 0xb1fb, 0xd2b5, 0xb4d4, 0xb6ab, 0xcbbf, 0xd8a9, 0x8147, /*0x18-0x1f*/
+ 0x8148, 0x8149, 0xb6aa, 0x814a, 0xc1bd, 0xd1cf, 0x814b, 0xc9a5, /*0x20-0x27*/
+ 0xd8ad, 0x814c, 0xb8f6, 0xd1be, 0xe3dc, 0xd6d0, 0x814d, 0x814e, /*0x28-0x2f*/
+ 0xb7e1, 0x814f, 0xb4ae, 0x8150, 0xc1d9, 0x8151, 0xd8bc, 0x8152, /*0x30-0x37*/
+ 0xcde8, 0xb5a4, 0xceaa, 0xd6f7, 0x8153, 0xc0f6, 0xbed9, 0xd8af, /*0x38-0x3f*/
+ 0x8154, 0x8155, 0x8156, 0xc4cb, 0x8157, 0xbec3, 0x8158, 0xd8b1, /*0x40-0x47*/
+ 0xc3b4, 0xd2e5, 0x8159, 0xd6ae, 0xceda, 0xd5a7, 0xbaf5, 0xb7a6, /*0x48-0x4f*/
+ 0xc0d6, 0x815a, 0xc6b9, 0xc5d2, 0xc7c7, 0x815b, 0xb9d4, 0x815c, /*0x50-0x57*/
+ 0xb3cb, 0xd2d2, 0x815d, 0x815e, 0xd8bf, 0xbec5, 0xc6f2, 0xd2b2, /*0x58-0x5f*/
+ 0xcfb0, 0xcfe7, 0x815f, 0x8160, 0x8161, 0x8162, 0xcae9, 0x8163, /*0x60-0x67*/
+ 0x8164, 0xd8c0, 0x8165, 0x8166, 0x8167, 0x8168, 0x8169, 0x816a, /*0x68-0x6f*/
+ 0xc2f2, 0xc2d2, 0x816b, 0xc8e9, 0x816c, 0x816d, 0x816e, 0x816f, /*0x70-0x77*/
+ 0x8170, 0x8171, 0x8172, 0x8173, 0x8174, 0x8175, 0xc7ac, 0x8176, /*0x78-0x7f*/
+ 0x8177, 0x8178, 0x8179, 0x817a, 0x817b, 0x817c, 0xc1cb, 0x817d, /*0x80-0x87*/
+ 0xd3e8, 0xd5f9, 0x817e, 0xcac2, 0xb6fe, 0xd8a1, 0xd3da, 0xbff7, /*0x88-0x8f*/
+ 0x8180, 0xd4c6, 0xbba5, 0xd8c1, 0xcee5, 0xbeae, 0x8181, 0x8182, /*0x90-0x97*/
+ 0xd8a8, 0x8183, 0xd1c7, 0xd0a9, 0x8184, 0x8185, 0x8186, 0xd8bd, /*0x98-0x9f*/
+ 0xd9ef, 0xcdf6, 0xbfba, 0x8187, 0xbdbb, 0xbaa5, 0xd2e0, 0xb2fa, /*0xa0-0xa7*/
+ 0xbae0, 0xc4b6, 0x8188, 0xcfed, 0xbea9, 0xcda4, 0xc1c1, 0x8189, /*0xa8-0xaf*/
+ 0x818a, 0x818b, 0xc7d7, 0xd9f1, 0x818c, 0xd9f4, 0x818d, 0x818e, /*0xb0-0xb7*/
+ 0x818f, 0x8190, 0xc8cb, 0xd8e9, 0x8191, 0x8192, 0x8193, 0xd2da, /*0xb8-0xbf*/
+ 0xcab2, 0xc8ca, 0xd8ec, 0xd8ea, 0xd8c6, 0xbdf6, 0xc6cd, 0xb3f0, /*0xc0-0xc7*/
+ 0x8194, 0xd8eb, 0xbdf1, 0xbde9, 0x8195, 0xc8d4, 0xb4d3, 0x8196, /*0xc8-0xcf*/
+ 0x8197, 0xc2d8, 0x8198, 0xb2d6, 0xd7d0, 0xcacb, 0xcbfb, 0xd5cc, /*0xd0-0xd7*/
+ 0xb8b6, 0xcfc9, 0x8199, 0x819a, 0x819b, 0xd9da, 0xd8f0, 0xc7aa, /*0xd8-0xdf*/
+ 0x819c, 0xd8ee, 0x819d, 0xb4fa, 0xc1ee, 0xd2d4, 0x819e, 0x819f, /*0xe0-0xe7*/
+ 0xd8ed, 0x81a0, 0xd2c7, 0xd8ef, 0xc3c7, 0x81a1, 0x81a2, 0x81a3, /*0xe8-0xef*/
+ 0xd1f6, 0x81a4, 0xd6d9, 0xd8f2, 0x81a5, 0xd8f5, 0xbcfe, 0xbcdb, /*0xf0-0xf7*/
+ 0x81a6, 0x81a7, 0x81a8, 0xc8ce, 0x81a9, 0xb7dd, 0x81aa, 0xb7c2, /*0xf8-0xff*/
+ /* 0x4f00 */
+ 0x81ab, 0xc6f3, 0x81ac, 0x81ad, 0x81ae, 0x81af, 0x81b0, 0x81b1, /*0x00-0x07*/
+ 0x81b2, 0xd8f8, 0xd2c1, 0x81b3, 0x81b4, 0xcee9, 0xbcbf, 0xb7fc, /*0x08-0x0f*/
+ 0xb7a5, 0xd0dd, 0x81b5, 0x81b6, 0x81b7, 0x81b8, 0x81b9, 0xd6da, /*0x10-0x17*/
+ 0xd3c5, 0xbbef, 0xbbe1, 0xd8f1, 0x81ba, 0x81bb, 0xc9a1, 0xceb0, /*0x18-0x1f*/
+ 0xb4ab, 0x81bc, 0xd8f3, 0x81bd, 0xc9cb, 0xd8f6, 0xc2d7, 0xd8f7, /*0x20-0x27*/
+ 0x81be, 0x81bf, 0xceb1, 0xd8f9, 0x81c0, 0x81c1, 0x81c2, 0xb2ae, /*0x28-0x2f*/
+ 0xb9c0, 0x81c3, 0xd9a3, 0x81c4, 0xb0e9, 0x81c5, 0xc1e6, 0x81c6, /*0x30-0x37*/
+ 0xc9ec, 0x81c7, 0xcbc5, 0x81c8, 0xcbc6, 0xd9a4, 0x81c9, 0x81ca, /*0x38-0x3f*/
+ 0x81cb, 0x81cc, 0x81cd, 0xb5e8, 0x81ce, 0x81cf, 0xb5ab, 0x81d0, /*0x40-0x47*/
+ 0x81d1, 0x81d2, 0x81d3, 0x81d4, 0x81d5, 0xcebb, 0xb5cd, 0xd7a1, /*0x48-0x4f*/
+ 0xd7f4, 0xd3d3, 0x81d6, 0xcce5, 0x81d7, 0xbace, 0x81d8, 0xd9a2, /*0x50-0x57*/
+ 0xd9dc, 0xd3e0, 0xd8fd, 0xb7f0, 0xd7f7, 0xd8fe, 0xd8fa, 0xd9a1, /*0x58-0x5f*/
+ 0xc4e3, 0x81d9, 0x81da, 0xd3b6, 0xd8f4, 0xd9dd, 0x81db, 0xd8fb, /*0x60-0x67*/
+ 0x81dc, 0xc5e5, 0x81dd, 0x81de, 0xc0d0, 0x81df, 0x81e0, 0xd1f0, /*0x68-0x6f*/
+ 0xb0db, 0x81e1, 0x81e2, 0xbcd1, 0xd9a6, 0x81e3, 0xd9a5, 0x81e4, /*0x70-0x77*/
+ 0x81e5, 0x81e6, 0x81e7, 0xd9ac, 0xd9ae, 0x81e8, 0xd9ab, 0xcab9, /*0x78-0x7f*/
+ 0x81e9, 0x81ea, 0x81eb, 0xd9a9, 0xd6b6, 0x81ec, 0x81ed, 0x81ee, /*0x80-0x87*/
+ 0xb3de, 0xd9a8, 0x81ef, 0xc0fd, 0x81f0, 0xcacc, 0x81f1, 0xd9aa, /*0x88-0x8f*/
+ 0x81f2, 0xd9a7, 0x81f3, 0x81f4, 0xd9b0, 0x81f5, 0x81f6, 0xb6b1, /*0x90-0x97*/
+ 0x81f7, 0x81f8, 0x81f9, 0xb9a9, 0x81fa, 0xd2c0, 0x81fb, 0x81fc, /*0x98-0x9f*/
+ 0xcfc0, 0x81fd, 0x81fe, 0xc2c2, 0x8240, 0xbdc4, 0xd5ec, 0xb2e0, /*0xa0-0xa7*/
+ 0xc7c8, 0xbfeb, 0xd9ad, 0x8241, 0xd9af, 0x8242, 0xceea, 0xbaee, /*0xa8-0xaf*/
+ 0x8243, 0x8244, 0x8245, 0x8246, 0x8247, 0xc7d6, 0x8248, 0x8249, /*0xb0-0xb7*/
+ 0x824a, 0x824b, 0x824c, 0x824d, 0x824e, 0x824f, 0x8250, 0xb1e3, /*0xb8-0xbf*/
+ 0x8251, 0x8252, 0x8253, 0xb4d9, 0xb6ed, 0xd9b4, 0x8254, 0x8255, /*0xc0-0xc7*/
+ 0x8256, 0x8257, 0xbfa1, 0x8258, 0x8259, 0x825a, 0xd9de, 0xc7ce, /*0xc8-0xcf*/
+ 0xc0fe, 0xd9b8, 0x825b, 0x825c, 0x825d, 0x825e, 0x825f, 0xcbd7, /*0xd0-0xd7*/
+ 0xb7fd, 0x8260, 0xd9b5, 0x8261, 0xd9b7, 0xb1a3, 0xd3e1, 0xd9b9, /*0xd8-0xdf*/
+ 0x8262, 0xd0c5, 0x8263, 0xd9b6, 0x8264, 0x8265, 0xd9b1, 0x8266, /*0xe0-0xe7*/
+ 0xd9b2, 0xc1a9, 0xd9b3, 0x8267, 0x8268, 0xbcf3, 0xd0de, 0xb8a9, /*0xe8-0xef*/
+ 0x8269, 0xbee3, 0x826a, 0xd9bd, 0x826b, 0x826c, 0x826d, 0x826e, /*0xf0-0xf7*/
+ 0xd9ba, 0x826f, 0xb0b3, 0x8270, 0x8271, 0x8272, 0xd9c2, 0x8273, /*0xf8-0xff*/
+ /* 0x5000 */
+ 0x8274, 0x8275, 0x8276, 0x8277, 0x8278, 0x8279, 0x827a, 0x827b, /*0x00-0x07*/
+ 0x827c, 0x827d, 0x827e, 0x8280, 0xd9c4, 0xb1b6, 0x8281, 0xd9bf, /*0x08-0x0f*/
+ 0x8282, 0x8283, 0xb5b9, 0x8284, 0xbef3, 0x8285, 0x8286, 0x8287, /*0x10-0x17*/
+ 0xccc8, 0xbaf2, 0xd2d0, 0x8288, 0xd9c3, 0x8289, 0x828a, 0xbde8, /*0x18-0x1f*/
+ 0x828b, 0xb3ab, 0x828c, 0x828d, 0x828e, 0xd9c5, 0xbeeb, 0x828f, /*0x20-0x27*/
+ 0xd9c6, 0xd9bb, 0xc4df, 0x8290, 0xd9be, 0xd9c1, 0xd9c0, 0x8291, /*0x28-0x2f*/
+ 0x8292, 0x8293, 0x8294, 0x8295, 0x8296, 0x8297, 0x8298, 0x8299, /*0x30-0x37*/
+ 0x829a, 0x829b, 0xd5ae, 0x829c, 0xd6b5, 0x829d, 0xc7e3, 0x829e, /*0x38-0x3f*/
+ 0x829f, 0x82a0, 0x82a1, 0xd9c8, 0x82a2, 0x82a3, 0x82a4, 0xbcd9, /*0x40-0x47*/
+ 0xd9ca, 0x82a5, 0x82a6, 0x82a7, 0xd9bc, 0x82a8, 0xd9cb, 0xc6ab, /*0x48-0x4f*/
+ 0x82a9, 0x82aa, 0x82ab, 0x82ac, 0x82ad, 0xd9c9, 0x82ae, 0x82af, /*0x50-0x57*/
+ 0x82b0, 0x82b1, 0xd7f6, 0x82b2, 0xcda3, 0x82b3, 0x82b4, 0x82b5, /*0x58-0x5f*/
+ 0x82b6, 0x82b7, 0x82b8, 0x82b9, 0x82ba, 0xbda1, 0x82bb, 0x82bc, /*0x60-0x67*/
+ 0x82bd, 0x82be, 0x82bf, 0x82c0, 0xd9cc, 0x82c1, 0x82c2, 0x82c3, /*0x68-0x6f*/
+ 0x82c4, 0x82c5, 0x82c6, 0x82c7, 0x82c8, 0x82c9, 0xc5bc, 0xcdb5, /*0x70-0x77*/
+ 0x82ca, 0x82cb, 0x82cc, 0xd9cd, 0x82cd, 0x82ce, 0xd9c7, 0xb3a5, /*0x78-0x7f*/
+ 0xbffe, 0x82cf, 0x82d0, 0x82d1, 0x82d2, 0xb8b5, 0x82d3, 0x82d4, /*0x80-0x87*/
+ 0xc0fc, 0x82d5, 0x82d6, 0x82d7, 0x82d8, 0xb0f8, 0x82d9, 0x82da, /*0x88-0x8f*/
+ 0x82db, 0x82dc, 0x82dd, 0x82de, 0x82df, 0x82e0, 0x82e1, 0x82e2, /*0x90-0x97*/
+ 0x82e3, 0x82e4, 0x82e5, 0x82e6, 0x82e7, 0x82e8, 0x82e9, 0x82ea, /*0x98-0x9f*/
+ 0x82eb, 0x82ec, 0x82ed, 0xb4f6, 0x82ee, 0xd9ce, 0x82ef, 0xd9cf, /*0xa0-0xa7*/
+ 0xb4a2, 0xd9d0, 0x82f0, 0x82f1, 0xb4df, 0x82f2, 0x82f3, 0x82f4, /*0xa8-0xaf*/
+ 0x82f5, 0x82f6, 0xb0c1, 0x82f7, 0x82f8, 0x82f9, 0x82fa, 0x82fb, /*0xb0-0xb7*/
+ 0x82fc, 0x82fd, 0xd9d1, 0xc9b5, 0x82fe, 0x8340, 0x8341, 0x8342, /*0xb8-0xbf*/
+ 0x8343, 0x8344, 0x8345, 0x8346, 0x8347, 0x8348, 0x8349, 0x834a, /*0xc0-0xc7*/
+ 0x834b, 0x834c, 0x834d, 0x834e, 0x834f, 0x8350, 0x8351, 0xcff1, /*0xc8-0xcf*/
+ 0x8352, 0x8353, 0x8354, 0x8355, 0x8356, 0x8357, 0xd9d2, 0x8358, /*0xd0-0xd7*/
+ 0x8359, 0x835a, 0xc1c5, 0x835b, 0x835c, 0x835d, 0x835e, 0x835f, /*0xd8-0xdf*/
+ 0x8360, 0x8361, 0x8362, 0x8363, 0x8364, 0x8365, 0xd9d6, 0xc9ae, /*0xe0-0xe7*/
+ 0x8366, 0x8367, 0x8368, 0x8369, 0xd9d5, 0xd9d4, 0xd9d7, 0x836a, /*0xe8-0xef*/
+ 0x836b, 0x836c, 0x836d, 0xcbdb, 0x836e, 0xbda9, 0x836f, 0x8370, /*0xf0-0xf7*/
+ 0x8371, 0x8372, 0x8373, 0xc6a7, 0x8374, 0x8375, 0x8376, 0x8377, /*0xf8-0xff*/
+ /* 0x5100 */
+ 0x8378, 0x8379, 0x837a, 0x837b, 0x837c, 0x837d, 0xd9d3, 0xd9d8, /*0x00-0x07*/
+ 0x837e, 0x8380, 0x8381, 0xd9d9, 0x8382, 0x8383, 0x8384, 0x8385, /*0x08-0x0f*/
+ 0x8386, 0x8387, 0xc8e5, 0x8388, 0x8389, 0x838a, 0x838b, 0x838c, /*0x10-0x17*/
+ 0x838d, 0x838e, 0x838f, 0x8390, 0x8391, 0x8392, 0x8393, 0x8394, /*0x18-0x1f*/
+ 0x8395, 0xc0dc, 0x8396, 0x8397, 0x8398, 0x8399, 0x839a, 0x839b, /*0x20-0x27*/
+ 0x839c, 0x839d, 0x839e, 0x839f, 0x83a0, 0x83a1, 0x83a2, 0x83a3, /*0x28-0x2f*/
+ 0x83a4, 0x83a5, 0x83a6, 0x83a7, 0x83a8, 0x83a9, 0x83aa, 0x83ab, /*0x30-0x37*/
+ 0x83ac, 0x83ad, 0x83ae, 0x83af, 0x83b0, 0x83b1, 0x83b2, 0xb6f9, /*0x38-0x3f*/
+ 0xd8a3, 0xd4ca, 0x83b3, 0xd4aa, 0xd0d6, 0xb3e4, 0xd5d7, 0x83b4, /*0x40-0x47*/
+ 0xcfc8, 0xb9e2, 0x83b5, 0xbfcb, 0x83b6, 0xc3e2, 0x83b7, 0x83b8, /*0x48-0x4f*/
+ 0x83b9, 0xb6d2, 0x83ba, 0x83bb, 0xcdc3, 0xd9ee, 0xd9f0, 0x83bc, /*0x50-0x57*/
+ 0x83bd, 0x83be, 0xb5b3, 0x83bf, 0xb6b5, 0x83c0, 0x83c1, 0x83c2, /*0x58-0x5f*/
+ 0x83c3, 0x83c4, 0xbea4, 0x83c5, 0x83c6, 0xc8eb, 0x83c7, 0x83c8, /*0x60-0x67*/
+ 0xc8ab, 0x83c9, 0x83ca, 0xb0cb, 0xb9ab, 0xc1f9, 0xd9e2, 0x83cb, /*0x68-0x6f*/
+ 0xc0bc, 0xb9b2, 0x83cc, 0xb9d8, 0xd0cb, 0xb1f8, 0xc6e4, 0xbedf, /*0x70-0x77*/
+ 0xb5e4, 0xd7c8, 0x83cd, 0xd1f8, 0xbce6, 0xcade, 0x83ce, 0x83cf, /*0x78-0x7f*/
+ 0xbcbd, 0xd9e6, 0xd8e7, 0x83d0, 0x83d1, 0xc4da, 0x83d2, 0x83d3, /*0x80-0x87*/
+ 0xb8d4, 0xc8bd, 0x83d4, 0x83d5, 0xb2e1, 0xd4d9, 0x83d6, 0x83d7, /*0x88-0x8f*/
+ 0x83d8, 0x83d9, 0xc3b0, 0x83da, 0x83db, 0xc3e1, 0xdaa2, 0xc8df, /*0x90-0x97*/
+ 0x83dc, 0xd0b4, 0x83dd, 0xbefc, 0xc5a9, 0x83de, 0x83df, 0x83e0, /*0x98-0x9f*/
+ 0xb9da, 0x83e1, 0xdaa3, 0x83e2, 0xd4a9, 0xdaa4, 0x83e3, 0x83e4, /*0xa0-0xa7*/
+ 0x83e5, 0x83e6, 0x83e7, 0xd9fb, 0xb6ac, 0x83e8, 0x83e9, 0xb7eb, /*0xa8-0xaf*/
+ 0xb1f9, 0xd9fc, 0xb3e5, 0xbef6, 0x83ea, 0xbff6, 0xd2b1, 0xc0e4, /*0xb0-0xb7*/
+ 0x83eb, 0x83ec, 0x83ed, 0xb6b3, 0xd9fe, 0xd9fd, 0x83ee, 0x83ef, /*0xb8-0xbf*/
+ 0xbebb, 0x83f0, 0x83f1, 0x83f2, 0xc6e0, 0x83f3, 0xd7bc, 0xdaa1, /*0xc0-0xc7*/
+ 0x83f4, 0xc1b9, 0x83f5, 0xb5f2, 0xc1e8, 0x83f6, 0x83f7, 0xbcf5, /*0xc8-0xcf*/
+ 0x83f8, 0xb4d5, 0x83f9, 0x83fa, 0x83fb, 0x83fc, 0x83fd, 0x83fe, /*0xd0-0xd7*/
+ 0x8440, 0x8441, 0x8442, 0xc1dd, 0x8443, 0xc4fd, 0x8444, 0x8445, /*0xd8-0xdf*/
+ 0xbcb8, 0xb7b2, 0x8446, 0x8447, 0xb7ef, 0x8448, 0x8449, 0x844a, /*0xe0-0xe7*/
+ 0x844b, 0x844c, 0x844d, 0xd9ec, 0x844e, 0xc6be, 0x844f, 0xbfad, /*0xe8-0xef*/
+ 0xbbcb, 0x8450, 0x8451, 0xb5ca, 0x8452, 0xdbc9, 0xd0d7, 0x8453, /*0xf0-0xf7*/
+ 0xcdb9, 0xb0bc, 0xb3f6, 0xbbf7, 0xdbca, 0xbaaf, 0x8454, 0xd4e4, /*0xf8-0xff*/
+ /* 0x5200 */
+ 0xb5b6, 0xb5f3, 0xd8d6, 0xc8d0, 0x8455, 0x8456, 0xb7d6, 0xc7d0, /*0x00-0x07*/
+ 0xd8d7, 0x8457, 0xbfaf, 0x8458, 0x8459, 0xdbbb, 0xd8d8, 0x845a, /*0x08-0x0f*/
+ 0x845b, 0xd0cc, 0xbbae, 0x845c, 0x845d, 0x845e, 0xebbe, 0xc1d0, /*0x10-0x17*/
+ 0xc1f5, 0xd4f2, 0xb8d5, 0xb4b4, 0x845f, 0xb3f5, 0x8460, 0x8461, /*0x18-0x1f*/
+ 0xc9be, 0x8462, 0x8463, 0x8464, 0xc5d0, 0x8465, 0x8466, 0x8467, /*0x20-0x27*/
+ 0xc5d9, 0xc0fb, 0x8468, 0xb1f0, 0x8469, 0xd8d9, 0xb9ce, 0x846a, /*0x28-0x2f*/
+ 0xb5bd, 0x846b, 0x846c, 0xd8da, 0x846d, 0x846e, 0xd6c6, 0xcba2, /*0x30-0x37*/
+ 0xc8af, 0xc9b2, 0xb4cc, 0xbfcc, 0x846f, 0xb9f4, 0x8470, 0xd8db, /*0x38-0x3f*/
+ 0xd8dc, 0xb6e7, 0xbcc1, 0xccea, 0x8471, 0x8472, 0x8473, 0x8474, /*0x40-0x47*/
+ 0x8475, 0x8476, 0xcff7, 0x8477, 0xd8dd, 0xc7b0, 0x8478, 0x8479, /*0x48-0x4f*/
+ 0xb9d0, 0xbda3, 0x847a, 0x847b, 0xccde, 0x847c, 0xc6ca, 0x847d, /*0x50-0x57*/
+ 0x847e, 0x8480, 0x8481, 0x8482, 0xd8e0, 0x8483, 0xd8de, 0x8484, /*0x58-0x5f*/
+ 0x8485, 0xd8df, 0x8486, 0x8487, 0x8488, 0xb0fe, 0x8489, 0xbee7, /*0x60-0x67*/
+ 0x848a, 0xcaa3, 0xbcf4, 0x848b, 0x848c, 0x848d, 0x848e, 0xb8b1, /*0x68-0x6f*/
+ 0x848f, 0x8490, 0xb8ee, 0x8491, 0x8492, 0x8493, 0x8494, 0x8495, /*0x70-0x77*/
+ 0x8496, 0x8497, 0x8498, 0x8499, 0x849a, 0xd8e2, 0x849b, 0xbdcb, /*0x78-0x7f*/
+ 0x849c, 0xd8e4, 0xd8e3, 0x849d, 0x849e, 0x849f, 0x84a0, 0x84a1, /*0x80-0x87*/
+ 0xc5fc, 0x84a2, 0x84a3, 0x84a4, 0x84a5, 0x84a6, 0x84a7, 0x84a8, /*0x88-0x8f*/
+ 0xd8e5, 0x84a9, 0x84aa, 0xd8e6, 0x84ab, 0x84ac, 0x84ad, 0x84ae, /*0x90-0x97*/
+ 0x84af, 0x84b0, 0x84b1, 0xc1a6, 0x84b2, 0xc8b0, 0xb0ec, 0xb9a6, /*0x98-0x9f*/
+ 0xbcd3, 0xcef1, 0xdbbd, 0xc1d3, 0x84b3, 0x84b4, 0x84b5, 0x84b6, /*0xa0-0xa7*/
+ 0xb6af, 0xd6fa, 0xc5ac, 0xbdd9, 0xdbbe, 0xdbbf, 0x84b7, 0x84b8, /*0xa8-0xaf*/
+ 0x84b9, 0xc0f8, 0xbea2, 0xc0cd, 0x84ba, 0x84bb, 0x84bc, 0x84bd, /*0xb0-0xb7*/
+ 0x84be, 0x84bf, 0x84c0, 0x84c1, 0x84c2, 0x84c3, 0xdbc0, 0xcac6, /*0xb8-0xbf*/
+ 0x84c4, 0x84c5, 0x84c6, 0xb2aa, 0x84c7, 0x84c8, 0x84c9, 0xd3c2, /*0xc0-0xc7*/
+ 0x84ca, 0xc3e3, 0x84cb, 0xd1ab, 0x84cc, 0x84cd, 0x84ce, 0x84cf, /*0xc8-0xcf*/
+ 0xdbc2, 0x84d0, 0xc0d5, 0x84d1, 0x84d2, 0x84d3, 0xdbc3, 0x84d4, /*0xd0-0xd7*/
+ 0xbfb1, 0x84d5, 0x84d6, 0x84d7, 0x84d8, 0x84d9, 0x84da, 0xc4bc, /*0xd8-0xdf*/
+ 0x84db, 0x84dc, 0x84dd, 0x84de, 0xc7da, 0x84df, 0x84e0, 0x84e1, /*0xe0-0xe7*/
+ 0x84e2, 0x84e3, 0x84e4, 0x84e5, 0x84e6, 0x84e7, 0x84e8, 0x84e9, /*0xe8-0xef*/
+ 0xdbc4, 0x84ea, 0x84eb, 0x84ec, 0x84ed, 0x84ee, 0x84ef, 0x84f0, /*0xf0-0xf7*/
+ 0x84f1, 0xd9e8, 0xc9d7, 0x84f2, 0x84f3, 0x84f4, 0xb9b4, 0xcef0, /*0xf8-0xff*/
+ /* 0x5300 */
+ 0xd4c8, 0x84f5, 0x84f6, 0x84f7, 0x84f8, 0xb0fc, 0xb4d2, 0x84f9, /*0x00-0x07*/
+ 0xd0d9, 0x84fa, 0x84fb, 0x84fc, 0x84fd, 0xd9e9, 0x84fe, 0xdecb, /*0x08-0x0f*/
+ 0xd9eb, 0x8540, 0x8541, 0x8542, 0x8543, 0xd8b0, 0xbbaf, 0xb1b1, /*0x10-0x17*/
+ 0x8544, 0xb3d7, 0xd8ce, 0x8545, 0x8546, 0xd4d1, 0x8547, 0x8548, /*0x18-0x1f*/
+ 0xbdb3, 0xbfef, 0x8549, 0xcfbb, 0x854a, 0x854b, 0xd8d0, 0x854c, /*0x20-0x27*/
+ 0x854d, 0x854e, 0xb7cb, 0x854f, 0x8550, 0x8551, 0xd8d1, 0x8552, /*0x28-0x2f*/
+ 0x8553, 0x8554, 0x8555, 0x8556, 0x8557, 0x8558, 0x8559, 0x855a, /*0x30-0x37*/
+ 0x855b, 0xc6a5, 0xc7f8, 0xd2bd, 0x855c, 0x855d, 0xd8d2, 0xc4e4, /*0x38-0x3f*/
+ 0x855e, 0xcaae, 0x855f, 0xc7a7, 0x8560, 0xd8a6, 0x8561, 0xc9fd, /*0x40-0x47*/
+ 0xcee7, 0xbbdc, 0xb0eb, 0x8562, 0x8563, 0x8564, 0xbbaa, 0xd0ad, /*0x48-0x4f*/
+ 0x8565, 0xb1b0, 0xd7e4, 0xd7bf, 0x8566, 0xb5a5, 0xc2f4, 0xc4cf, /*0x50-0x57*/
+ 0x8567, 0x8568, 0xb2a9, 0x8569, 0xb2b7, 0x856a, 0xb1e5, 0xdfb2, /*0x58-0x5f*/
+ 0xd5bc, 0xbfa8, 0xc2ac, 0xd8d5, 0xc2b1, 0x856b, 0xd8d4, 0xced4, /*0x60-0x67*/
+ 0x856c, 0xdae0, 0x856d, 0xcec0, 0x856e, 0x856f, 0xd8b4, 0xc3ae, /*0x68-0x6f*/
+ 0xd3a1, 0xcea3, 0x8570, 0xbcb4, 0xc8b4, 0xc2d1, 0x8571, 0xbeed, /*0x70-0x77*/
+ 0xd0b6, 0x8572, 0xdae1, 0x8573, 0x8574, 0x8575, 0x8576, 0xc7e4, /*0x78-0x7f*/
+ 0x8577, 0x8578, 0xb3a7, 0x8579, 0xb6f2, 0xccfc, 0xc0fa, 0x857a, /*0x80-0x87*/
+ 0x857b, 0xc0f7, 0x857c, 0xd1b9, 0xd1e1, 0xd8c7, 0x857d, 0x857e, /*0x88-0x8f*/
+ 0x8580, 0x8581, 0x8582, 0x8583, 0x8584, 0xb2de, 0x8585, 0x8586, /*0x90-0x97*/
+ 0xc0e5, 0x8587, 0xbaf1, 0x8588, 0x8589, 0xd8c8, 0x858a, 0xd4ad, /*0x98-0x9f*/
+ 0x858b, 0x858c, 0xcfe1, 0xd8c9, 0x858d, 0xd8ca, 0xcfc3, 0x858e, /*0xa0-0xa7*/
+ 0xb3f8, 0xbec7, 0x858f, 0x8590, 0x8591, 0x8592, 0xd8cb, 0x8593, /*0xa8-0xaf*/
+ 0x8594, 0x8595, 0x8596, 0x8597, 0x8598, 0x8599, 0xdbcc, 0x859a, /*0xb0-0xb7*/
+ 0x859b, 0x859c, 0x859d, 0xc8a5, 0x859e, 0x859f, 0x85a0, 0xcfd8, /*0xb8-0xbf*/
+ 0x85a1, 0xc8fe, 0xb2ce, 0x85a2, 0x85a3, 0x85a4, 0x85a5, 0x85a6, /*0xc0-0xc7*/
+ 0xd3d6, 0xb2e6, 0xbcb0, 0xd3d1, 0xcbab, 0xb7b4, 0x85a7, 0x85a8, /*0xc8-0xcf*/
+ 0x85a9, 0xb7a2, 0x85aa, 0x85ab, 0xcae5, 0x85ac, 0xc8a1, 0xcadc, /*0xd0-0xd7*/
+ 0xb1e4, 0xd0f0, 0x85ad, 0xc5d1, 0x85ae, 0x85af, 0x85b0, 0xdbc5, /*0xd8-0xdf*/
+ 0xb5fe, 0x85b1, 0x85b2, 0xbfda, 0xb9c5, 0xbee4, 0xc1ed, 0x85b3, /*0xe0-0xe7*/
+ 0xdfb6, 0xdfb5, 0xd6bb, 0xbdd0, 0xd5d9, 0xb0c8, 0xb6a3, 0xbfc9, /*0xe8-0xef*/
+ 0xcca8, 0xdfb3, 0xcab7, 0xd3d2, 0x85b4, 0xd8cf, 0xd2b6, 0xbac5, /*0xf0-0xf7*/
+ 0xcbbe, 0xccbe, 0x85b5, 0xdfb7, 0xb5f0, 0xdfb4, 0x85b6, 0x85b7, /*0xf8-0xff*/
+ /* 0x5400 */
+ 0x85b8, 0xd3f5, 0x85b9, 0xb3d4, 0xb8f7, 0x85ba, 0xdfba, 0x85bb, /*0x00-0x07*/
+ 0xbacf, 0xbcaa, 0xb5f5, 0x85bc, 0xcdac, 0xc3fb, 0xbaf3, 0xc0f4, /*0x08-0x0f*/
+ 0xcdc2, 0xcff2, 0xdfb8, 0xcfc5, 0x85bd, 0xc2c0, 0xdfb9, 0xc2f0, /*0x10-0x17*/
+ 0x85be, 0x85bf, 0x85c0, 0xbefd, 0x85c1, 0xc1df, 0xcdcc, 0xd2f7, /*0x18-0x1f*/
+ 0xb7cd, 0xdfc1, 0x85c2, 0xdfc4, 0x85c3, 0x85c4, 0xb7f1, 0xb0c9, /*0x20-0x27*/
+ 0xb6d6, 0xb7d4, 0x85c5, 0xbaac, 0xccfd, 0xbfd4, 0xcbb1, 0xc6f4, /*0x28-0x2f*/
+ 0x85c6, 0xd6a8, 0xdfc5, 0x85c7, 0xcee2, 0xb3b3, 0x85c8, 0x85c9, /*0x30-0x37*/
+ 0xcefc, 0xb4b5, 0x85ca, 0xcec7, 0xbaf0, 0x85cb, 0xcee1, 0x85cc, /*0x38-0x3f*/
+ 0xd1bd, 0x85cd, 0x85ce, 0xdfc0, 0x85cf, 0x85d0, 0xb4f4, 0x85d1, /*0x40-0x47*/
+ 0xb3ca, 0x85d2, 0xb8e6, 0xdfbb, 0x85d3, 0x85d4, 0x85d5, 0x85d6, /*0x48-0x4f*/
+ 0xc4c5, 0x85d7, 0xdfbc, 0xdfbd, 0xdfbe, 0xc5bb, 0xdfbf, 0xdfc2, /*0x50-0x57*/
+ 0xd4b1, 0xdfc3, 0x85d8, 0xc7ba, 0xced8, 0x85d9, 0x85da, 0x85db, /*0x58-0x5f*/
+ 0x85dc, 0x85dd, 0xc4d8, 0x85de, 0xdfca, 0x85df, 0xdfcf, 0x85e0, /*0x60-0x67*/
+ 0xd6dc, 0x85e1, 0x85e2, 0x85e3, 0x85e4, 0x85e5, 0x85e6, 0x85e7, /*0x68-0x6f*/
+ 0x85e8, 0xdfc9, 0xdfda, 0xceb6, 0x85e9, 0xbac7, 0xdfce, 0xdfc8, /*0x70-0x77*/
+ 0xc5de, 0x85ea, 0x85eb, 0xc9eb, 0xbaf4, 0xc3fc, 0x85ec, 0x85ed, /*0x78-0x7f*/
+ 0xbed7, 0x85ee, 0xdfc6, 0x85ef, 0xdfcd, 0x85f0, 0xc5d8, 0x85f1, /*0x80-0x87*/
+ 0x85f2, 0x85f3, 0x85f4, 0xd5a6, 0xbacd, 0x85f5, 0xbecc, 0xd3bd, /*0x88-0x8f*/
+ 0xb8c0, 0x85f6, 0xd6e4, 0x85f7, 0xdfc7, 0xb9be, 0xbfa7, 0x85f8, /*0x90-0x97*/
+ 0x85f9, 0xc1fc, 0xdfcb, 0xdfcc, 0x85fa, 0xdfd0, 0x85fb, 0x85fc, /*0x98-0x9f*/
+ 0x85fd, 0x85fe, 0x8640, 0xdfdb, 0xdfe5, 0x8641, 0xdfd7, 0xdfd6, /*0xa0-0xa7*/
+ 0xd7c9, 0xdfe3, 0xdfe4, 0xe5eb, 0xd2a7, 0xdfd2, 0x8642, 0xbfa9, /*0xa8-0xaf*/
+ 0x8643, 0xd4db, 0x8644, 0xbfc8, 0xdfd4, 0x8645, 0x8646, 0x8647, /*0xb0-0xb7*/
+ 0xcfcc, 0x8648, 0x8649, 0xdfdd, 0x864a, 0xd1ca, 0x864b, 0xdfde, /*0xb8-0xbf*/
+ 0xb0a7, 0xc6b7, 0xdfd3, 0x864c, 0xbae5, 0x864d, 0xb6df, 0xcddb, /*0xc0-0xc7*/
+ 0xb9fe, 0xd4d5, 0x864e, 0x864f, 0xdfdf, 0xcfec, 0xb0a5, 0xdfe7, /*0xc8-0xcf*/
+ 0xdfd1, 0xd1c6, 0xdfd5, 0xdfd8, 0xdfd9, 0xdfdc, 0x8650, 0xbba9, /*0xd0-0xd7*/
+ 0x8651, 0xdfe0, 0xdfe1, 0x8652, 0xdfe2, 0xdfe6, 0xdfe8, 0xd3b4, /*0xd8-0xdf*/
+ 0x8653, 0x8654, 0x8655, 0x8656, 0x8657, 0xb8e7, 0xc5b6, 0xdfea, /*0xe0-0xe7*/
+ 0xc9da, 0xc1a8, 0xc4c4, 0x8658, 0x8659, 0xbfde, 0xcff8, 0x865a, /*0xe8-0xef*/
+ 0x865b, 0x865c, 0xd5dc, 0xdfee, 0x865d, 0x865e, 0x865f, 0x8660, /*0xf0-0xf7*/
+ 0x8661, 0x8662, 0xb2b8, 0x8663, 0xbadf, 0xdfec, 0x8664, 0xdbc1, /*0xf8-0xff*/
+ /* 0x5500 */
+ 0x8665, 0xd1e4, 0x8666, 0x8667, 0x8668, 0x8669, 0xcbf4, 0xb4bd, /*0x00-0x07*/
+ 0x866a, 0xb0a6, 0x866b, 0x866c, 0x866d, 0x866e, 0x866f, 0xdff1, /*0x08-0x0f*/
+ 0xccc6, 0xdff2, 0x8670, 0x8671, 0xdfed, 0x8672, 0x8673, 0x8674, /*0x10-0x17*/
+ 0x8675, 0x8676, 0x8677, 0xdfe9, 0x8678, 0x8679, 0x867a, 0x867b, /*0x18-0x1f*/
+ 0xdfeb, 0x867c, 0xdfef, 0xdff0, 0xbbbd, 0x867d, 0x867e, 0xdff3, /*0x20-0x27*/
+ 0x8680, 0x8681, 0xdff4, 0x8682, 0xbba3, 0x8683, 0xcadb, 0xcea8, /*0x28-0x2f*/
+ 0xe0a7, 0xb3aa, 0x8684, 0xe0a6, 0x8685, 0x8686, 0x8687, 0xe0a1, /*0x30-0x37*/
+ 0x8688, 0x8689, 0x868a, 0x868b, 0xdffe, 0x868c, 0xcdd9, 0xdffc, /*0x38-0x3f*/
+ 0x868d, 0xdffa, 0x868e, 0xbfd0, 0xd7c4, 0x868f, 0xc9cc, 0x8690, /*0x40-0x47*/
+ 0x8691, 0xdff8, 0xb0a1, 0x8692, 0x8693, 0x8694, 0x8695, 0x8696, /*0x48-0x4f*/
+ 0xdffd, 0x8697, 0x8698, 0x8699, 0x869a, 0xdffb, 0xe0a2, 0x869b, /*0x50-0x57*/
+ 0x869c, 0x869d, 0x869e, 0x869f, 0xe0a8, 0x86a0, 0x86a1, 0x86a2, /*0x58-0x5f*/
+ 0x86a3, 0xb7c8, 0x86a4, 0x86a5, 0xc6a1, 0xc9b6, 0xc0b2, 0xdff5, /*0x60-0x67*/
+ 0x86a6, 0x86a7, 0xc5be, 0x86a8, 0xd8c4, 0xdff9, 0xc4f6, 0x86a9, /*0x68-0x6f*/
+ 0x86aa, 0x86ab, 0x86ac, 0x86ad, 0x86ae, 0xe0a3, 0xe0a4, 0xe0a5, /*0x70-0x77*/
+ 0xd0a5, 0x86af, 0x86b0, 0xe0b4, 0xcce4, 0x86b1, 0xe0b1, 0x86b2, /*0x78-0x7f*/
+ 0xbfa6, 0xe0af, 0xceb9, 0xe0ab, 0xc9c6, 0x86b3, 0x86b4, 0xc0ae, /*0x80-0x87*/
+ 0xe0ae, 0xbaed, 0xbab0, 0xe0a9, 0x86b5, 0x86b6, 0x86b7, 0xdff6, /*0x88-0x8f*/
+ 0x86b8, 0xe0b3, 0x86b9, 0x86ba, 0xe0b8, 0x86bb, 0x86bc, 0x86bd, /*0x90-0x97*/
+ 0xb4ad, 0xe0b9, 0x86be, 0x86bf, 0xcfb2, 0xbac8, 0x86c0, 0xe0b0, /*0x98-0x9f*/
+ 0x86c1, 0x86c2, 0x86c3, 0x86c4, 0x86c5, 0x86c6, 0x86c7, 0xd0fa, /*0xa0-0xa7*/
+ 0x86c8, 0x86c9, 0x86ca, 0x86cb, 0x86cc, 0x86cd, 0x86ce, 0x86cf, /*0xa8-0xaf*/
+ 0x86d0, 0xe0ac, 0x86d1, 0xd4fb, 0x86d2, 0xdff7, 0x86d3, 0xc5e7, /*0xb0-0xb7*/
+ 0x86d4, 0xe0ad, 0x86d5, 0xd3f7, 0x86d6, 0xe0b6, 0xe0b7, 0x86d7, /*0xb8-0xbf*/
+ 0x86d8, 0x86d9, 0x86da, 0x86db, 0xe0c4, 0xd0e1, 0x86dc, 0x86dd, /*0xc0-0xc7*/
+ 0x86de, 0xe0bc, 0x86df, 0x86e0, 0xe0c9, 0xe0ca, 0x86e1, 0x86e2, /*0xc8-0xcf*/
+ 0x86e3, 0xe0be, 0xe0aa, 0xc9a4, 0xe0c1, 0x86e4, 0xe0b2, 0x86e5, /*0xd0-0xd7*/
+ 0x86e6, 0x86e7, 0x86e8, 0x86e9, 0xcac8, 0xe0c3, 0x86ea, 0xe0b5, /*0xd8-0xdf*/
+ 0x86eb, 0xcecb, 0x86ec, 0xcbc3, 0xe0cd, 0xe0c6, 0xe0c2, 0x86ed, /*0xe0-0xe7*/
+ 0xe0cb, 0x86ee, 0xe0ba, 0xe0bf, 0xe0c0, 0x86ef, 0x86f0, 0xe0c5, /*0xe8-0xef*/
+ 0x86f1, 0x86f2, 0xe0c7, 0xe0c8, 0x86f3, 0xe0cc, 0x86f4, 0xe0bb, /*0xf0-0xf7*/
+ 0x86f5, 0x86f6, 0x86f7, 0x86f8, 0x86f9, 0xcbd4, 0xe0d5, 0x86fa, /*0xf8-0xff*/
+ /* 0x5600 */
+ 0xe0d6, 0xe0d2, 0x86fb, 0x86fc, 0x86fd, 0x86fe, 0x8740, 0x8741, /*0x00-0x07*/
+ 0xe0d0, 0xbcce, 0x8742, 0x8743, 0xe0d1, 0x8744, 0xb8c2, 0xd8c5, /*0x08-0x0f*/
+ 0x8745, 0x8746, 0x8747, 0x8748, 0x8749, 0x874a, 0x874b, 0x874c, /*0x10-0x17*/
+ 0xd0ea, 0x874d, 0x874e, 0xc2ef, 0x874f, 0x8750, 0xe0cf, 0xe0bd, /*0x18-0x1f*/
+ 0x8751, 0x8752, 0x8753, 0xe0d4, 0xe0d3, 0x8754, 0x8755, 0xe0d7, /*0x20-0x27*/
+ 0x8756, 0x8757, 0x8758, 0x8759, 0xe0dc, 0xe0d8, 0x875a, 0x875b, /*0x28-0x2f*/
+ 0x875c, 0xd6f6, 0xb3b0, 0x875d, 0xd7ec, 0x875e, 0xcbbb, 0x875f, /*0x30-0x37*/
+ 0x8760, 0xe0da, 0x8761, 0xcefb, 0x8762, 0x8763, 0x8764, 0xbad9, /*0x38-0x3f*/
+ 0x8765, 0x8766, 0x8767, 0x8768, 0x8769, 0x876a, 0x876b, 0x876c, /*0x40-0x47*/
+ 0x876d, 0x876e, 0x876f, 0x8770, 0xe0e1, 0xe0dd, 0xd2ad, 0x8771, /*0x48-0x4f*/
+ 0x8772, 0x8773, 0x8774, 0x8775, 0xe0e2, 0x8776, 0x8777, 0xe0db, /*0x50-0x57*/
+ 0xe0d9, 0xe0df, 0x8778, 0x8779, 0xe0e0, 0x877a, 0x877b, 0x877c, /*0x58-0x5f*/
+ 0x877d, 0x877e, 0xe0de, 0x8780, 0xe0e4, 0x8781, 0x8782, 0x8783, /*0x60-0x67*/
+ 0xc6f7, 0xd8ac, 0xd4eb, 0xe0e6, 0xcac9, 0x8784, 0x8785, 0x8786, /*0x68-0x6f*/
+ 0x8787, 0xe0e5, 0x8788, 0x8789, 0x878a, 0x878b, 0xb8c1, 0x878c, /*0x70-0x77*/
+ 0x878d, 0x878e, 0x878f, 0xe0e7, 0xe0e8, 0x8790, 0x8791, 0x8792, /*0x78-0x7f*/
+ 0x8793, 0x8794, 0x8795, 0x8796, 0x8797, 0xe0e9, 0xe0e3, 0x8798, /*0x80-0x87*/
+ 0x8799, 0x879a, 0x879b, 0x879c, 0x879d, 0x879e, 0xbabf, 0xcce7, /*0x88-0x8f*/
+ 0x879f, 0x87a0, 0x87a1, 0xe0ea, 0x87a2, 0x87a3, 0x87a4, 0x87a5, /*0x90-0x97*/
+ 0x87a6, 0x87a7, 0x87a8, 0x87a9, 0x87aa, 0x87ab, 0x87ac, 0x87ad, /*0x98-0x9f*/
+ 0x87ae, 0x87af, 0x87b0, 0xcff9, 0x87b1, 0x87b2, 0x87b3, 0x87b4, /*0xa0-0xa7*/
+ 0x87b5, 0x87b6, 0x87b7, 0x87b8, 0x87b9, 0x87ba, 0x87bb, 0xe0eb, /*0xa8-0xaf*/
+ 0x87bc, 0x87bd, 0x87be, 0x87bf, 0x87c0, 0x87c1, 0x87c2, 0xc8c2, /*0xb0-0xb7*/
+ 0x87c3, 0x87c4, 0x87c5, 0x87c6, 0xbdc0, 0x87c7, 0x87c8, 0x87c9, /*0xb8-0xbf*/
+ 0x87ca, 0x87cb, 0x87cc, 0x87cd, 0x87ce, 0x87cf, 0x87d0, 0x87d1, /*0xc0-0xc7*/
+ 0x87d2, 0x87d3, 0xc4d2, 0x87d4, 0x87d5, 0x87d6, 0x87d7, 0x87d8, /*0xc8-0xcf*/
+ 0x87d9, 0x87da, 0x87db, 0x87dc, 0xe0ec, 0x87dd, 0x87de, 0xe0ed, /*0xd0-0xd7*/
+ 0x87df, 0x87e0, 0xc7f4, 0xcbc4, 0x87e1, 0xe0ee, 0xbbd8, 0xd8b6, /*0xd8-0xdf*/
+ 0xd2f2, 0xe0ef, 0xcdc5, 0x87e2, 0xb6da, 0x87e3, 0x87e4, 0x87e5, /*0xe0-0xe7*/
+ 0x87e6, 0x87e7, 0x87e8, 0xe0f1, 0x87e9, 0xd4b0, 0x87ea, 0x87eb, /*0xe8-0xef*/
+ 0xc0a7, 0xb4d1, 0x87ec, 0x87ed, 0xcea7, 0xe0f0, 0x87ee, 0x87ef, /*0xf0-0xf7*/
+ 0x87f0, 0xe0f2, 0xb9cc, 0x87f1, 0x87f2, 0xb9fa, 0xcdbc, 0xe0f3, /*0xf8-0xff*/
+ /* 0x5700 */
+ 0x87f3, 0x87f4, 0x87f5, 0xc6d4, 0xe0f4, 0x87f6, 0xd4b2, 0x87f7, /*0x00-0x07*/
+ 0xc8a6, 0xe0f6, 0xe0f5, 0x87f8, 0x87f9, 0x87fa, 0x87fb, 0x87fc, /*0x08-0x0f*/
+ 0x87fd, 0x87fe, 0x8840, 0x8841, 0x8842, 0x8843, 0x8844, 0x8845, /*0x10-0x17*/
+ 0x8846, 0x8847, 0x8848, 0x8849, 0xe0f7, 0x884a, 0x884b, 0xcdc1, /*0x18-0x1f*/
+ 0x884c, 0x884d, 0x884e, 0xcaa5, 0x884f, 0x8850, 0x8851, 0x8852, /*0x20-0x27*/
+ 0xd4da, 0xdbd7, 0xdbd9, 0x8853, 0xdbd8, 0xb9e7, 0xdbdc, 0xdbdd, /*0x28-0x2f*/
+ 0xb5d8, 0x8854, 0x8855, 0xdbda, 0x8856, 0x8857, 0x8858, 0x8859, /*0x30-0x37*/
+ 0x885a, 0xdbdb, 0xb3a1, 0xdbdf, 0x885b, 0x885c, 0xbbf8, 0x885d, /*0x38-0x3f*/
+ 0xd6b7, 0x885e, 0xdbe0, 0x885f, 0x8860, 0x8861, 0x8862, 0xbef9, /*0x40-0x47*/
+ 0x8863, 0x8864, 0xb7bb, 0x8865, 0xdbd0, 0xccae, 0xbfb2, 0xbbb5, /*0x48-0x4f*/
+ 0xd7f8, 0xbfd3, 0x8866, 0x8867, 0x8868, 0x8869, 0x886a, 0xbfe9, /*0x50-0x57*/
+ 0x886b, 0x886c, 0xbce1, 0xccb3, 0xdbde, 0xb0d3, 0xceeb, 0xb7d8, /*0x58-0x5f*/
+ 0xd7b9, 0xc6c2, 0x886d, 0x886e, 0xc0a4, 0x886f, 0xccb9, 0x8870, /*0x60-0x67*/
+ 0xdbe7, 0xdbe1, 0xc6ba, 0xdbe3, 0x8871, 0xdbe8, 0x8872, 0xc5f7, /*0x68-0x6f*/
+ 0x8873, 0x8874, 0x8875, 0xdbea, 0x8876, 0x8877, 0xdbe9, 0xbfc0, /*0x70-0x77*/
+ 0x8878, 0x8879, 0x887a, 0xdbe6, 0xdbe5, 0x887b, 0x887c, 0x887d, /*0x78-0x7f*/
+ 0x887e, 0x8880, 0xb4b9, 0xc0ac, 0xc2a2, 0xdbe2, 0xdbe4, 0x8881, /*0x80-0x87*/
+ 0x8882, 0x8883, 0x8884, 0xd0cd, 0xdbed, 0x8885, 0x8886, 0x8887, /*0x88-0x8f*/
+ 0x8888, 0x8889, 0xc0dd, 0xdbf2, 0x888a, 0x888b, 0x888c, 0x888d, /*0x90-0x97*/
+ 0x888e, 0x888f, 0x8890, 0xb6e2, 0x8891, 0x8892, 0x8893, 0x8894, /*0x98-0x9f*/
+ 0xdbf3, 0xdbd2, 0xb9b8, 0xd4ab, 0xdbec, 0x8895, 0xbfd1, 0xdbf0, /*0xa0-0xa7*/
+ 0x8896, 0xdbd1, 0x8897, 0xb5e6, 0x8898, 0xdbeb, 0xbfe5, 0x8899, /*0xa8-0xaf*/
+ 0x889a, 0x889b, 0xdbee, 0x889c, 0xdbf1, 0x889d, 0x889e, 0x889f, /*0xb0-0xb7*/
+ 0xdbf9, 0x88a0, 0x88a1, 0x88a2, 0x88a3, 0x88a4, 0x88a5, 0x88a6, /*0xb8-0xbf*/
+ 0x88a7, 0x88a8, 0xb9a1, 0xb0a3, 0x88a9, 0x88aa, 0x88ab, 0x88ac, /*0xc0-0xc7*/
+ 0x88ad, 0x88ae, 0x88af, 0xc2f1, 0x88b0, 0x88b1, 0xb3c7, 0xdbef, /*0xc8-0xcf*/
+ 0x88b2, 0x88b3, 0xdbf8, 0x88b4, 0xc6d2, 0xdbf4, 0x88b5, 0x88b6, /*0xd0-0xd7*/
+ 0xdbf5, 0xdbf7, 0xdbf6, 0x88b7, 0x88b8, 0xdbfe, 0x88b9, 0xd3f2, /*0xd8-0xdf*/
+ 0xb2ba, 0x88ba, 0x88bb, 0x88bc, 0xdbfd, 0x88bd, 0x88be, 0x88bf, /*0xe0-0xe7*/
+ 0x88c0, 0x88c1, 0x88c2, 0x88c3, 0x88c4, 0xdca4, 0x88c5, 0xdbfb, /*0xe8-0xef*/
+ 0x88c6, 0x88c7, 0x88c8, 0x88c9, 0xdbfa, 0x88ca, 0x88cb, 0x88cc, /*0xf0-0xf7*/
+ 0xdbfc, 0xc5e0, 0xbbf9, 0x88cd, 0x88ce, 0xdca3, 0x88cf, 0x88d0, /*0xf8-0xff*/
+ /* 0x5800 */
+ 0xdca5, 0x88d1, 0xccc3, 0x88d2, 0x88d3, 0x88d4, 0xb6d1, 0xddc0, /*0x00-0x07*/
+ 0x88d5, 0x88d6, 0x88d7, 0xdca1, 0x88d8, 0xdca2, 0x88d9, 0x88da, /*0x08-0x0f*/
+ 0x88db, 0xc7b5, 0x88dc, 0x88dd, 0x88de, 0xb6e9, 0x88df, 0x88e0, /*0x10-0x17*/
+ 0x88e1, 0xdca7, 0x88e2, 0x88e3, 0x88e4, 0x88e5, 0xdca6, 0x88e6, /*0x18-0x1f*/
+ 0xdca9, 0xb1a4, 0x88e7, 0x88e8, 0xb5cc, 0x88e9, 0x88ea, 0x88eb, /*0x20-0x27*/
+ 0x88ec, 0x88ed, 0xbfb0, 0x88ee, 0x88ef, 0x88f0, 0x88f1, 0x88f2, /*0x28-0x2f*/
+ 0xd1df, 0x88f3, 0x88f4, 0x88f5, 0x88f6, 0xb6c2, 0x88f7, 0x88f8, /*0x30-0x37*/
+ 0x88f9, 0x88fa, 0x88fb, 0x88fc, 0x88fd, 0x88fe, 0x8940, 0x8941, /*0x38-0x3f*/
+ 0x8942, 0x8943, 0x8944, 0x8945, 0xdca8, 0x8946, 0x8947, 0x8948, /*0x40-0x47*/
+ 0x8949, 0x894a, 0x894b, 0x894c, 0xcbfa, 0xebf3, 0x894d, 0x894e, /*0x48-0x4f*/
+ 0x894f, 0xcbdc, 0x8950, 0x8951, 0xcbfe, 0x8952, 0x8953, 0x8954, /*0x50-0x57*/
+ 0xccc1, 0x8955, 0x8956, 0x8957, 0x8958, 0x8959, 0xc8fb, 0x895a, /*0x58-0x5f*/
+ 0x895b, 0x895c, 0x895d, 0x895e, 0x895f, 0xdcaa, 0x8960, 0x8961, /*0x60-0x67*/
+ 0x8962, 0x8963, 0x8964, 0xccee, 0xdcab, 0x8965, 0x8966, 0x8967, /*0x68-0x6f*/
+ 0x8968, 0x8969, 0x896a, 0x896b, 0x896c, 0x896d, 0x896e, 0x896f, /*0x70-0x77*/
+ 0x8970, 0x8971, 0x8972, 0x8973, 0x8974, 0x8975, 0xdbd3, 0x8976, /*0x78-0x7f*/
+ 0xdcaf, 0xdcac, 0x8977, 0xbeb3, 0x8978, 0xcafb, 0x8979, 0x897a, /*0x80-0x87*/
+ 0x897b, 0xdcad, 0x897c, 0x897d, 0x897e, 0x8980, 0x8981, 0x8982, /*0x88-0x8f*/
+ 0x8983, 0x8984, 0xc9ca, 0xc4b9, 0x8985, 0x8986, 0x8987, 0x8988, /*0x90-0x97*/
+ 0x8989, 0xc7bd, 0xdcae, 0x898a, 0x898b, 0x898c, 0xd4f6, 0xd0e6, /*0x98-0x9f*/
+ 0x898d, 0x898e, 0x898f, 0x8990, 0x8991, 0x8992, 0x8993, 0x8994, /*0xa0-0xa7*/
+ 0xc4ab, 0xb6d5, 0x8995, 0x8996, 0x8997, 0x8998, 0x8999, 0x899a, /*0xa8-0xaf*/
+ 0x899b, 0x899c, 0x899d, 0x899e, 0x899f, 0x89a0, 0x89a1, 0x89a2, /*0xb0-0xb7*/
+ 0x89a3, 0x89a4, 0x89a5, 0x89a6, 0xdbd4, 0x89a7, 0x89a8, 0x89a9, /*0xb8-0xbf*/
+ 0x89aa, 0xb1da, 0x89ab, 0x89ac, 0x89ad, 0xdbd5, 0x89ae, 0x89af, /*0xc0-0xc7*/
+ 0x89b0, 0x89b1, 0x89b2, 0x89b3, 0x89b4, 0x89b5, 0x89b6, 0x89b7, /*0xc8-0xcf*/
+ 0x89b8, 0xdbd6, 0x89b9, 0x89ba, 0x89bb, 0xbabe, 0x89bc, 0x89bd, /*0xd0-0xd7*/
+ 0x89be, 0x89bf, 0x89c0, 0x89c1, 0x89c2, 0x89c3, 0x89c4, 0x89c5, /*0xd8-0xdf*/
+ 0x89c6, 0x89c7, 0x89c8, 0x89c9, 0xc8c0, 0x89ca, 0x89cb, 0x89cc, /*0xe0-0xe7*/
+ 0x89cd, 0x89ce, 0x89cf, 0xcabf, 0xc8c9, 0x89d0, 0xd7b3, 0x89d1, /*0xe8-0xef*/
+ 0xc9f9, 0x89d2, 0x89d3, 0xbfc7, 0x89d4, 0x89d5, 0xbaf8, 0x89d6, /*0xf0-0xf7*/
+ 0x89d7, 0xd2bc, 0x89d8, 0x89d9, 0x89da, 0x89db, 0x89dc, 0x89dd, /*0xf8-0xff*/
+ /* 0x5900 */
+ 0x89de, 0x89df, 0xe2ba, 0x89e0, 0xb4a6, 0x89e1, 0x89e2, 0xb1b8, /*0x00-0x07*/
+ 0x89e3, 0x89e4, 0x89e5, 0x89e6, 0x89e7, 0xb8b4, 0x89e8, 0xcfc4, /*0x08-0x0f*/
+ 0x89e9, 0x89ea, 0x89eb, 0x89ec, 0xd9e7, 0xcfa6, 0xcde2, 0x89ed, /*0x10-0x17*/
+ 0x89ee, 0xd9ed, 0xb6e0, 0x89ef, 0xd2b9, 0x89f0, 0x89f1, 0xb9bb, /*0x18-0x1f*/
+ 0x89f2, 0x89f3, 0x89f4, 0x89f5, 0xe2b9, 0xe2b7, 0x89f6, 0xb4f3, /*0x20-0x27*/
+ 0x89f7, 0xccec, 0xccab, 0xb7f2, 0x89f8, 0xd8b2, 0xd1eb, 0xbabb, /*0x28-0x2f*/
+ 0x89f9, 0xcaa7, 0x89fa, 0x89fb, 0xcdb7, 0x89fc, 0x89fd, 0xd2c4, /*0x30-0x37*/
+ 0xbfe4, 0xbcd0, 0xb6e1, 0x89fe, 0xdec5, 0x8a40, 0x8a41, 0x8a42, /*0x38-0x3f*/
+ 0x8a43, 0xdec6, 0xdbbc, 0x8a44, 0xd1d9, 0x8a45, 0x8a46, 0xc6e6, /*0x40-0x47*/
+ 0xc4ce, 0xb7ee, 0x8a47, 0xb7dc, 0x8a48, 0x8a49, 0xbffc, 0xd7e0, /*0x48-0x4f*/
+ 0x8a4a, 0xc6f5, 0x8a4b, 0x8a4c, 0xb1bc, 0xdec8, 0xbdb1, 0xccd7, /*0x50-0x57*/
+ 0xdeca, 0x8a4d, 0xdec9, 0x8a4e, 0x8a4f, 0x8a50, 0x8a51, 0x8a52, /*0x58-0x5f*/
+ 0xb5ec, 0x8a53, 0xc9dd, 0x8a54, 0x8a55, 0xb0c2, 0x8a56, 0x8a57, /*0x60-0x67*/
+ 0x8a58, 0x8a59, 0x8a5a, 0x8a5b, 0x8a5c, 0x8a5d, 0x8a5e, 0x8a5f, /*0x68-0x6f*/
+ 0x8a60, 0x8a61, 0x8a62, 0xc5ae, 0xc5ab, 0x8a63, 0xc4cc, 0x8a64, /*0x70-0x77*/
+ 0xbce9, 0xcbfd, 0x8a65, 0x8a66, 0x8a67, 0xbac3, 0x8a68, 0x8a69, /*0x78-0x7f*/
+ 0x8a6a, 0xe5f9, 0xc8e7, 0xe5fa, 0xcdfd, 0x8a6b, 0xd7b1, 0xb8be, /*0x80-0x87*/
+ 0xc2e8, 0x8a6c, 0xc8d1, 0x8a6d, 0x8a6e, 0xe5fb, 0x8a6f, 0x8a70, /*0x88-0x8f*/
+ 0x8a71, 0x8a72, 0xb6ca, 0xbccb, 0x8a73, 0x8a74, 0xd1fd, 0xe6a1, /*0x90-0x97*/
+ 0x8a75, 0xc3ee, 0x8a76, 0x8a77, 0x8a78, 0x8a79, 0xe6a4, 0x8a7a, /*0x98-0x9f*/
+ 0x8a7b, 0x8a7c, 0x8a7d, 0xe5fe, 0xe6a5, 0xcdd7, 0x8a7e, 0x8a80, /*0xa0-0xa7*/
+ 0xb7c1, 0xe5fc, 0xe5fd, 0xe6a3, 0x8a81, 0x8a82, 0xc4dd, 0xe6a8, /*0xa8-0xaf*/
+ 0x8a83, 0x8a84, 0xe6a7, 0x8a85, 0x8a86, 0x8a87, 0x8a88, 0x8a89, /*0xb0-0xb7*/
+ 0x8a8a, 0xc3c3, 0x8a8b, 0xc6de, 0x8a8c, 0x8a8d, 0xe6aa, 0x8a8e, /*0xb8-0xbf*/
+ 0x8a8f, 0x8a90, 0x8a91, 0x8a92, 0x8a93, 0x8a94, 0xc4b7, 0x8a95, /*0xc0-0xc7*/
+ 0x8a96, 0x8a97, 0xe6a2, 0xcabc, 0x8a98, 0x8a99, 0x8a9a, 0x8a9b, /*0xc8-0xcf*/
+ 0xbde3, 0xb9c3, 0xe6a6, 0xd0d5, 0xceaf, 0x8a9c, 0x8a9d, 0xe6a9, /*0xd0-0xd7*/
+ 0xe6b0, 0x8a9e, 0xd2a6, 0x8a9f, 0xbdaa, 0xe6ad, 0x8aa0, 0x8aa1, /*0xd8-0xdf*/
+ 0x8aa2, 0x8aa3, 0x8aa4, 0xe6af, 0x8aa5, 0xc0d1, 0x8aa6, 0x8aa7, /*0xe0-0xe7*/
+ 0xd2cc, 0x8aa8, 0x8aa9, 0x8aaa, 0xbca7, 0x8aab, 0x8aac, 0x8aad, /*0xe8-0xef*/
+ 0x8aae, 0x8aaf, 0x8ab0, 0x8ab1, 0x8ab2, 0x8ab3, 0x8ab4, 0x8ab5, /*0xf0-0xf7*/
+ 0x8ab6, 0xe6b1, 0x8ab7, 0xd2f6, 0x8ab8, 0x8ab9, 0x8aba, 0xd7cb, /*0xf8-0xff*/
+ /* 0x5a00 */
+ 0x8abb, 0xcdfe, 0x8abc, 0xcdde, 0xc2a6, 0xe6ab, 0xe6ac, 0xbdbf, /*0x00-0x07*/
+ 0xe6ae, 0xe6b3, 0x8abd, 0x8abe, 0xe6b2, 0x8abf, 0x8ac0, 0x8ac1, /*0x08-0x0f*/
+ 0x8ac2, 0xe6b6, 0x8ac3, 0xe6b8, 0x8ac4, 0x8ac5, 0x8ac6, 0x8ac7, /*0x10-0x17*/
+ 0xc4ef, 0x8ac8, 0x8ac9, 0x8aca, 0xc4c8, 0x8acb, 0x8acc, 0xbeea, /*0x18-0x1f*/
+ 0xc9ef, 0x8acd, 0x8ace, 0xe6b7, 0x8acf, 0xb6f0, 0x8ad0, 0x8ad1, /*0x20-0x27*/
+ 0x8ad2, 0xc3e4, 0x8ad3, 0x8ad4, 0x8ad5, 0x8ad6, 0x8ad7, 0x8ad8, /*0x28-0x2f*/
+ 0x8ad9, 0xd3e9, 0xe6b4, 0x8ada, 0xe6b5, 0x8adb, 0xc8a2, 0x8adc, /*0x30-0x37*/
+ 0x8add, 0x8ade, 0x8adf, 0x8ae0, 0xe6bd, 0x8ae1, 0x8ae2, 0x8ae3, /*0x38-0x3f*/
+ 0xe6b9, 0x8ae4, 0x8ae5, 0x8ae6, 0x8ae7, 0x8ae8, 0xc6c5, 0x8ae9, /*0x40-0x47*/
+ 0x8aea, 0xcdf1, 0xe6bb, 0x8aeb, 0x8aec, 0x8aed, 0x8aee, 0x8aef, /*0x48-0x4f*/
+ 0x8af0, 0x8af1, 0x8af2, 0x8af3, 0x8af4, 0xe6bc, 0x8af5, 0x8af6, /*0x50-0x57*/
+ 0x8af7, 0x8af8, 0xbbe9, 0x8af9, 0x8afa, 0x8afb, 0x8afc, 0x8afd, /*0x58-0x5f*/
+ 0x8afe, 0x8b40, 0xe6be, 0x8b41, 0x8b42, 0x8b43, 0x8b44, 0xe6ba, /*0x60-0x67*/
+ 0x8b45, 0x8b46, 0xc0b7, 0x8b47, 0x8b48, 0x8b49, 0x8b4a, 0x8b4b, /*0x68-0x6f*/
+ 0x8b4c, 0x8b4d, 0x8b4e, 0x8b4f, 0xd3a4, 0xe6bf, 0xc9f4, 0xe6c3, /*0x70-0x77*/
+ 0x8b50, 0x8b51, 0xe6c4, 0x8b52, 0x8b53, 0x8b54, 0x8b55, 0xd0f6, /*0x78-0x7f*/
+ 0x8b56, 0x8b57, 0x8b58, 0x8b59, 0x8b5a, 0x8b5b, 0x8b5c, 0x8b5d, /*0x80-0x87*/
+ 0x8b5e, 0x8b5f, 0x8b60, 0x8b61, 0x8b62, 0x8b63, 0x8b64, 0x8b65, /*0x88-0x8f*/
+ 0x8b66, 0x8b67, 0xc3bd, 0x8b68, 0x8b69, 0x8b6a, 0x8b6b, 0x8b6c, /*0x90-0x97*/
+ 0x8b6d, 0x8b6e, 0xc3c4, 0xe6c2, 0x8b6f, 0x8b70, 0x8b71, 0x8b72, /*0x98-0x9f*/
+ 0x8b73, 0x8b74, 0x8b75, 0x8b76, 0x8b77, 0x8b78, 0x8b79, 0x8b7a, /*0xa0-0xa7*/
+ 0x8b7b, 0x8b7c, 0xe6c1, 0x8b7d, 0x8b7e, 0x8b80, 0x8b81, 0x8b82, /*0xa8-0xaf*/
+ 0x8b83, 0x8b84, 0xe6c7, 0xcfb1, 0x8b85, 0xebf4, 0x8b86, 0x8b87, /*0xb0-0xb7*/
+ 0xe6ca, 0x8b88, 0x8b89, 0x8b8a, 0x8b8b, 0x8b8c, 0xe6c5, 0x8b8d, /*0xb8-0xbf*/
+ 0x8b8e, 0xbcde, 0xc9a9, 0x8b8f, 0x8b90, 0x8b91, 0x8b92, 0x8b93, /*0xc0-0xc7*/
+ 0x8b94, 0xbcb5, 0x8b95, 0x8b96, 0xcfd3, 0x8b97, 0x8b98, 0x8b99, /*0xc8-0xcf*/
+ 0x8b9a, 0x8b9b, 0xe6c8, 0x8b9c, 0xe6c9, 0x8b9d, 0xe6ce, 0x8b9e, /*0xd0-0xd7*/
+ 0xe6d0, 0x8b9f, 0x8ba0, 0x8ba1, 0xe6d1, 0x8ba2, 0x8ba3, 0x8ba4, /*0xd8-0xdf*/
+ 0xe6cb, 0xb5d5, 0x8ba5, 0xe6cc, 0x8ba6, 0x8ba7, 0xe6cf, 0x8ba8, /*0xe0-0xe7*/
+ 0x8ba9, 0xc4db, 0x8baa, 0xe6c6, 0x8bab, 0x8bac, 0x8bad, 0x8bae, /*0xe8-0xef*/
+ 0x8baf, 0xe6cd, 0x8bb0, 0x8bb1, 0x8bb2, 0x8bb3, 0x8bb4, 0x8bb5, /*0xf0-0xf7*/
+ 0x8bb6, 0x8bb7, 0x8bb8, 0x8bb9, 0x8bba, 0x8bbb, 0x8bbc, 0x8bbd, /*0xf8-0xff*/
+ /* 0x5b00 */
+ 0x8bbe, 0x8bbf, 0x8bc0, 0x8bc1, 0x8bc2, 0x8bc3, 0x8bc4, 0x8bc5, /*0x00-0x07*/
+ 0x8bc6, 0xe6d2, 0x8bc7, 0x8bc8, 0x8bc9, 0x8bca, 0x8bcb, 0x8bcc, /*0x08-0x0f*/
+ 0x8bcd, 0x8bce, 0x8bcf, 0x8bd0, 0x8bd1, 0x8bd2, 0xe6d4, 0xe6d3, /*0x10-0x17*/
+ 0x8bd3, 0x8bd4, 0x8bd5, 0x8bd6, 0x8bd7, 0x8bd8, 0x8bd9, 0x8bda, /*0x18-0x1f*/
+ 0x8bdb, 0x8bdc, 0x8bdd, 0x8bde, 0x8bdf, 0x8be0, 0x8be1, 0x8be2, /*0x20-0x27*/
+ 0x8be3, 0x8be4, 0x8be5, 0x8be6, 0x8be7, 0x8be8, 0x8be9, 0x8bea, /*0x28-0x2f*/
+ 0x8beb, 0x8bec, 0xe6d5, 0x8bed, 0xd9f8, 0x8bee, 0x8bef, 0xe6d6, /*0x30-0x37*/
+ 0x8bf0, 0x8bf1, 0x8bf2, 0x8bf3, 0x8bf4, 0x8bf5, 0x8bf6, 0x8bf7, /*0x38-0x3f*/
+ 0xe6d7, 0x8bf8, 0x8bf9, 0x8bfa, 0x8bfb, 0x8bfc, 0x8bfd, 0x8bfe, /*0x40-0x47*/
+ 0x8c40, 0x8c41, 0x8c42, 0x8c43, 0x8c44, 0x8c45, 0x8c46, 0x8c47, /*0x48-0x4f*/
+ 0xd7d3, 0xe6dd, 0x8c48, 0xe6de, 0xbfd7, 0xd4d0, 0x8c49, 0xd7d6, /*0x50-0x57*/
+ 0xb4e6, 0xcbef, 0xe6da, 0xd8c3, 0xd7ce, 0xd0a2, 0x8c4a, 0xc3cf, /*0x58-0x5f*/
+ 0x8c4b, 0x8c4c, 0xe6df, 0xbcbe, 0xb9c2, 0xe6db, 0xd1a7, 0x8c4d, /*0x60-0x67*/
+ 0x8c4e, 0xbaa2, 0xc2cf, 0x8c4f, 0xd8ab, 0x8c50, 0x8c51, 0x8c52, /*0x68-0x6f*/
+ 0xcaeb, 0xe5ee, 0x8c53, 0xe6dc, 0x8c54, 0xb7f5, 0x8c55, 0x8c56, /*0x70-0x77*/
+ 0x8c57, 0x8c58, 0xc8e6, 0x8c59, 0x8c5a, 0xc4f5, 0x8c5b, 0x8c5c, /*0x78-0x7f*/
+ 0xe5b2, 0xc4fe, 0x8c5d, 0xcbfc, 0xe5b3, 0xd5ac, 0x8c5e, 0xd3ee, /*0x80-0x87*/
+ 0xcad8, 0xb0b2, 0x8c5f, 0xcbce, 0xcdea, 0x8c60, 0x8c61, 0xbaea, /*0x88-0x8f*/
+ 0x8c62, 0x8c63, 0x8c64, 0xe5b5, 0x8c65, 0xe5b4, 0x8c66, 0xd7da, /*0x90-0x97*/
+ 0xb9d9, 0xd6e6, 0xb6a8, 0xcdf0, 0xd2cb, 0xb1a6, 0xcab5, 0x8c67, /*0x98-0x9f*/
+ 0xb3e8, 0xc9f3, 0xbfcd, 0xd0fb, 0xcad2, 0xe5b6, 0xbbc2, 0x8c68, /*0xa0-0xa7*/
+ 0x8c69, 0x8c6a, 0xcfdc, 0xb9ac, 0x8c6b, 0x8c6c, 0x8c6d, 0x8c6e, /*0xa8-0xaf*/
+ 0xd4d7, 0x8c6f, 0x8c70, 0xbaa6, 0xd1e7, 0xcffc, 0xbcd2, 0x8c71, /*0xb0-0xb7*/
+ 0xe5b7, 0xc8dd, 0x8c72, 0x8c73, 0x8c74, 0xbfed, 0xb1f6, 0xcbde, /*0xb8-0xbf*/
+ 0x8c75, 0x8c76, 0xbcc5, 0x8c77, 0xbcc4, 0xd2fa, 0xc3dc, 0xbfdc, /*0xc0-0xc7*/
+ 0x8c78, 0x8c79, 0x8c7a, 0x8c7b, 0xb8bb, 0x8c7c, 0x8c7d, 0x8c7e, /*0xc8-0xcf*/
+ 0xc3c2, 0x8c80, 0xbaae, 0xd4a2, 0x8c81, 0x8c82, 0x8c83, 0x8c84, /*0xd0-0xd7*/
+ 0x8c85, 0x8c86, 0x8c87, 0x8c88, 0x8c89, 0xc7de, 0xc4af, 0xb2ec, /*0xd8-0xdf*/
+ 0x8c8a, 0xb9d1, 0x8c8b, 0x8c8c, 0xe5bb, 0xc1c8, 0x8c8d, 0x8c8e, /*0xe0-0xe7*/
+ 0xd5af, 0x8c8f, 0x8c90, 0x8c91, 0x8c92, 0x8c93, 0xe5bc, 0x8c94, /*0xe8-0xef*/
+ 0xe5be, 0x8c95, 0x8c96, 0x8c97, 0x8c98, 0x8c99, 0x8c9a, 0x8c9b, /*0xf0-0xf7*/
+ 0xb4e7, 0xb6d4, 0xcbc2, 0xd1b0, 0xb5bc, 0x8c9c, 0x8c9d, 0xcad9, /*0xf8-0xff*/
+ /* 0x5c00 */
+ 0x8c9e, 0xb7e2, 0x8c9f, 0x8ca0, 0xc9e4, 0x8ca1, 0xbdab, 0x8ca2, /*0x00-0x07*/
+ 0x8ca3, 0xcebe, 0xd7f0, 0x8ca4, 0x8ca5, 0x8ca6, 0x8ca7, 0xd0a1, /*0x08-0x0f*/
+ 0x8ca8, 0xc9d9, 0x8ca9, 0x8caa, 0xb6fb, 0xe6d8, 0xbce2, 0x8cab, /*0x10-0x17*/
+ 0xb3be, 0x8cac, 0xc9d0, 0x8cad, 0xe6d9, 0xb3a2, 0x8cae, 0x8caf, /*0x18-0x1f*/
+ 0x8cb0, 0x8cb1, 0xdecc, 0x8cb2, 0xd3c8, 0xdecd, 0x8cb3, 0xd2a2, /*0x20-0x27*/
+ 0x8cb4, 0x8cb5, 0x8cb6, 0x8cb7, 0xdece, 0x8cb8, 0x8cb9, 0x8cba, /*0x28-0x2f*/
+ 0x8cbb, 0xbecd, 0x8cbc, 0x8cbd, 0xdecf, 0x8cbe, 0x8cbf, 0x8cc0, /*0x30-0x37*/
+ 0xcaac, 0xd2fc, 0xb3df, 0xe5ea, 0xc4e1, 0xbea1, 0xceb2, 0xc4f2, /*0x38-0x3f*/
+ 0xbed6, 0xc6a8, 0xb2e3, 0x8cc1, 0x8cc2, 0xbed3, 0x8cc3, 0x8cc4, /*0x40-0x47*/
+ 0xc7fc, 0xcceb, 0xbdec, 0xcedd, 0x8cc5, 0x8cc6, 0xcaba, 0xc6c1, /*0x48-0x4f*/
+ 0xe5ec, 0xd0bc, 0x8cc7, 0x8cc8, 0x8cc9, 0xd5b9, 0x8cca, 0x8ccb, /*0x50-0x57*/
+ 0x8ccc, 0xe5ed, 0x8ccd, 0x8cce, 0x8ccf, 0x8cd0, 0xcaf4, 0x8cd1, /*0x58-0x5f*/
+ 0xcdc0, 0xc2c5, 0x8cd2, 0xe5ef, 0x8cd3, 0xc2c4, 0xe5f0, 0x8cd4, /*0x60-0x67*/
+ 0x8cd5, 0x8cd6, 0x8cd7, 0x8cd8, 0x8cd9, 0x8cda, 0xe5f8, 0xcdcd, /*0x68-0x6f*/
+ 0x8cdb, 0xc9bd, 0x8cdc, 0x8cdd, 0x8cde, 0x8cdf, 0x8ce0, 0x8ce1, /*0x70-0x77*/
+ 0x8ce2, 0xd2d9, 0xe1a8, 0x8ce3, 0x8ce4, 0x8ce5, 0x8ce6, 0xd3ec, /*0x78-0x7f*/
+ 0x8ce7, 0xcbea, 0xc6f1, 0x8ce8, 0x8ce9, 0x8cea, 0x8ceb, 0x8cec, /*0x80-0x87*/
+ 0xe1ac, 0x8ced, 0x8cee, 0x8cef, 0xe1a7, 0xe1a9, 0x8cf0, 0x8cf1, /*0x88-0x8f*/
+ 0xe1aa, 0xe1af, 0x8cf2, 0x8cf3, 0xb2ed, 0x8cf4, 0xe1ab, 0xb8da, /*0x90-0x97*/
+ 0xe1ad, 0xe1ae, 0xe1b0, 0xb5ba, 0xe1b1, 0x8cf5, 0x8cf6, 0x8cf7, /*0x98-0x9f*/
+ 0x8cf8, 0x8cf9, 0xe1b3, 0xe1b8, 0x8cfa, 0x8cfb, 0x8cfc, 0x8cfd, /*0xa0-0xa7*/
+ 0x8cfe, 0xd1d2, 0x8d40, 0xe1b6, 0xe1b5, 0xc1eb, 0x8d41, 0x8d42, /*0xa8-0xaf*/
+ 0x8d43, 0xe1b7, 0x8d44, 0xd4c0, 0x8d45, 0xe1b2, 0x8d46, 0xe1ba, /*0xb0-0xb7*/
+ 0xb0b6, 0x8d47, 0x8d48, 0x8d49, 0x8d4a, 0xe1b4, 0x8d4b, 0xbff9, /*0xb8-0xbf*/
+ 0x8d4c, 0xe1b9, 0x8d4d, 0x8d4e, 0xe1bb, 0x8d4f, 0x8d50, 0x8d51, /*0xc0-0xc7*/
+ 0x8d52, 0x8d53, 0x8d54, 0xe1be, 0x8d55, 0x8d56, 0x8d57, 0x8d58, /*0xc8-0xcf*/
+ 0x8d59, 0x8d5a, 0xe1bc, 0x8d5b, 0x8d5c, 0x8d5d, 0x8d5e, 0x8d5f, /*0xd0-0xd7*/
+ 0x8d60, 0xd6c5, 0x8d61, 0x8d62, 0x8d63, 0x8d64, 0x8d65, 0x8d66, /*0xd8-0xdf*/
+ 0x8d67, 0xcfbf, 0x8d68, 0x8d69, 0xe1bd, 0xe1bf, 0xc2cd, 0x8d6a, /*0xe0-0xe7*/
+ 0xb6eb, 0x8d6b, 0xd3f8, 0x8d6c, 0x8d6d, 0xc7cd, 0x8d6e, 0x8d6f, /*0xe8-0xef*/
+ 0xb7e5, 0x8d70, 0x8d71, 0x8d72, 0x8d73, 0x8d74, 0x8d75, 0x8d76, /*0xf0-0xf7*/
+ 0x8d77, 0x8d78, 0x8d79, 0xbefe, 0x8d7a, 0x8d7b, 0x8d7c, 0x8d7d, /*0xf8-0xff*/
+ /* 0x5d00 */
+ 0x8d7e, 0x8d80, 0xe1c0, 0xe1c1, 0x8d81, 0x8d82, 0xe1c7, 0xb3e7, /*0x00-0x07*/
+ 0x8d83, 0x8d84, 0x8d85, 0x8d86, 0x8d87, 0x8d88, 0xc6e9, 0x8d89, /*0x08-0x0f*/
+ 0x8d8a, 0x8d8b, 0x8d8c, 0x8d8d, 0xb4de, 0x8d8e, 0xd1c2, 0x8d8f, /*0x10-0x17*/
+ 0x8d90, 0x8d91, 0x8d92, 0xe1c8, 0x8d93, 0x8d94, 0xe1c6, 0x8d95, /*0x18-0x1f*/
+ 0x8d96, 0x8d97, 0x8d98, 0x8d99, 0xe1c5, 0x8d9a, 0xe1c3, 0xe1c2, /*0x20-0x27*/
+ 0x8d9b, 0xb1c0, 0x8d9c, 0x8d9d, 0x8d9e, 0xd5b8, 0xe1c4, 0x8d9f, /*0x28-0x2f*/
+ 0x8da0, 0x8da1, 0x8da2, 0x8da3, 0xe1cb, 0x8da4, 0x8da5, 0x8da6, /*0x30-0x37*/
+ 0x8da7, 0x8da8, 0x8da9, 0x8daa, 0x8dab, 0xe1cc, 0xe1ca, 0x8dac, /*0x38-0x3f*/
+ 0x8dad, 0x8dae, 0x8daf, 0x8db0, 0x8db1, 0x8db2, 0x8db3, 0xeffa, /*0x40-0x47*/
+ 0x8db4, 0x8db5, 0xe1d3, 0xe1d2, 0xc7b6, 0x8db6, 0x8db7, 0x8db8, /*0x48-0x4f*/
+ 0x8db9, 0x8dba, 0x8dbb, 0x8dbc, 0x8dbd, 0x8dbe, 0x8dbf, 0x8dc0, /*0x50-0x57*/
+ 0xe1c9, 0x8dc1, 0x8dc2, 0xe1ce, 0x8dc3, 0xe1d0, 0x8dc4, 0x8dc5, /*0x58-0x5f*/
+ 0x8dc6, 0x8dc7, 0x8dc8, 0x8dc9, 0x8dca, 0x8dcb, 0x8dcc, 0x8dcd, /*0x60-0x67*/
+ 0x8dce, 0xe1d4, 0x8dcf, 0xe1d1, 0xe1cd, 0x8dd0, 0x8dd1, 0xe1cf, /*0x68-0x6f*/
+ 0x8dd2, 0x8dd3, 0x8dd4, 0x8dd5, 0xe1d5, 0x8dd6, 0x8dd7, 0x8dd8, /*0x70-0x77*/
+ 0x8dd9, 0x8dda, 0x8ddb, 0x8ddc, 0x8ddd, 0x8dde, 0x8ddf, 0x8de0, /*0x78-0x7f*/
+ 0x8de1, 0x8de2, 0xe1d6, 0x8de3, 0x8de4, 0x8de5, 0x8de6, 0x8de7, /*0x80-0x87*/
+ 0x8de8, 0x8de9, 0x8dea, 0x8deb, 0x8dec, 0x8ded, 0x8dee, 0x8def, /*0x88-0x8f*/
+ 0x8df0, 0x8df1, 0x8df2, 0x8df3, 0x8df4, 0x8df5, 0x8df6, 0x8df7, /*0x90-0x97*/
+ 0x8df8, 0xe1d7, 0x8df9, 0x8dfa, 0x8dfb, 0xe1d8, 0x8dfc, 0x8dfd, /*0x98-0x9f*/
+ 0x8dfe, 0x8e40, 0x8e41, 0x8e42, 0x8e43, 0x8e44, 0x8e45, 0x8e46, /*0xa0-0xa7*/
+ 0x8e47, 0x8e48, 0x8e49, 0x8e4a, 0x8e4b, 0x8e4c, 0x8e4d, 0x8e4e, /*0xa8-0xaf*/
+ 0x8e4f, 0x8e50, 0x8e51, 0x8e52, 0x8e53, 0x8e54, 0x8e55, 0xe1da, /*0xb0-0xb7*/
+ 0x8e56, 0x8e57, 0x8e58, 0x8e59, 0x8e5a, 0x8e5b, 0x8e5c, 0x8e5d, /*0xb8-0xbf*/
+ 0x8e5e, 0x8e5f, 0x8e60, 0x8e61, 0x8e62, 0xe1db, 0x8e63, 0x8e64, /*0xc0-0xc7*/
+ 0x8e65, 0x8e66, 0x8e67, 0x8e68, 0x8e69, 0xcea1, 0x8e6a, 0x8e6b, /*0xc8-0xcf*/
+ 0x8e6c, 0x8e6d, 0x8e6e, 0x8e6f, 0x8e70, 0x8e71, 0x8e72, 0x8e73, /*0xd0-0xd7*/
+ 0x8e74, 0x8e75, 0x8e76, 0xe7dd, 0x8e77, 0xb4a8, 0xd6dd, 0x8e78, /*0xd8-0xdf*/
+ 0x8e79, 0xd1b2, 0xb3b2, 0x8e7a, 0x8e7b, 0xb9a4, 0xd7f3, 0xc7c9, /*0xe0-0xe7*/
+ 0xbede, 0xb9ae, 0x8e7c, 0xced7, 0x8e7d, 0x8e7e, 0xb2ee, 0xdbcf, /*0xe8-0xef*/
+ 0x8e80, 0xbcba, 0xd2d1, 0xcbc8, 0xb0cd, 0x8e81, 0x8e82, 0xcfef, /*0xf0-0xf7*/
+ 0x8e83, 0x8e84, 0x8e85, 0x8e86, 0x8e87, 0xd9e3, 0xbded, 0x8e88, /*0xf8-0xff*/
+ /* 0x5e00 */
+ 0x8e89, 0xb1d2, 0xcad0, 0xb2bc, 0x8e8a, 0xcba7, 0xb7ab, 0x8e8b, /*0x00-0x07*/
+ 0xcaa6, 0x8e8c, 0x8e8d, 0x8e8e, 0xcfa3, 0x8e8f, 0x8e90, 0xe0f8, /*0x08-0x0f*/
+ 0xd5ca, 0xe0fb, 0x8e91, 0x8e92, 0xe0fa, 0xc5c1, 0xccfb, 0x8e93, /*0x10-0x17*/
+ 0xc1b1, 0xe0f9, 0xd6e3, 0xb2af, 0xd6c4, 0xb5db, 0x8e94, 0x8e95, /*0x18-0x1f*/
+ 0x8e96, 0x8e97, 0x8e98, 0x8e99, 0x8e9a, 0x8e9b, 0xb4f8, 0xd6a1, /*0x20-0x27*/
+ 0x8e9c, 0x8e9d, 0x8e9e, 0x8e9f, 0x8ea0, 0xcfaf, 0xb0ef, 0x8ea1, /*0x28-0x2f*/
+ 0x8ea2, 0xe0fc, 0x8ea3, 0x8ea4, 0x8ea5, 0x8ea6, 0x8ea7, 0xe1a1, /*0x30-0x37*/
+ 0xb3a3, 0x8ea8, 0x8ea9, 0xe0fd, 0xe0fe, 0xc3b1, 0x8eaa, 0x8eab, /*0x38-0x3f*/
+ 0x8eac, 0x8ead, 0xc3dd, 0x8eae, 0xe1a2, 0xb7f9, 0x8eaf, 0x8eb0, /*0x40-0x47*/
+ 0x8eb1, 0x8eb2, 0x8eb3, 0x8eb4, 0xbbcf, 0x8eb5, 0x8eb6, 0x8eb7, /*0x48-0x4f*/
+ 0x8eb8, 0x8eb9, 0x8eba, 0x8ebb, 0xe1a3, 0xc4bb, 0x8ebc, 0x8ebd, /*0x50-0x57*/
+ 0x8ebe, 0x8ebf, 0x8ec0, 0xe1a4, 0x8ec1, 0x8ec2, 0xe1a5, 0x8ec3, /*0x58-0x5f*/
+ 0x8ec4, 0xe1a6, 0xb4b1, 0x8ec5, 0x8ec6, 0x8ec7, 0x8ec8, 0x8ec9, /*0x60-0x67*/
+ 0x8eca, 0x8ecb, 0x8ecc, 0x8ecd, 0x8ece, 0x8ecf, 0x8ed0, 0x8ed1, /*0x68-0x6f*/
+ 0x8ed2, 0x8ed3, 0xb8c9, 0xc6bd, 0xc4ea, 0x8ed4, 0xb2a2, 0x8ed5, /*0x70-0x77*/
+ 0xd0d2, 0x8ed6, 0xe7db, 0xbbc3, 0xd3d7, 0xd3c4, 0x8ed7, 0xb9e3, /*0x78-0x7f*/
+ 0xe2cf, 0x8ed8, 0x8ed9, 0x8eda, 0xd7af, 0x8edb, 0xc7ec, 0xb1d3, /*0x80-0x87*/
+ 0x8edc, 0x8edd, 0xb4b2, 0xe2d1, 0x8ede, 0x8edf, 0x8ee0, 0xd0f2, /*0x88-0x8f*/
+ 0xc2ae, 0xe2d0, 0x8ee1, 0xbfe2, 0xd3a6, 0xb5d7, 0xe2d2, 0xb5ea, /*0x90-0x97*/
+ 0x8ee2, 0xc3ed, 0xb8fd, 0x8ee3, 0xb8ae, 0x8ee4, 0xc5d3, 0xb7cf, /*0x98-0x9f*/
+ 0xe2d4, 0x8ee5, 0x8ee6, 0x8ee7, 0x8ee8, 0xe2d3, 0xb6c8, 0xd7f9, /*0xa0-0xa7*/
+ 0x8ee9, 0x8eea, 0x8eeb, 0x8eec, 0x8eed, 0xcda5, 0x8eee, 0x8eef, /*0xa8-0xaf*/
+ 0x8ef0, 0x8ef1, 0x8ef2, 0xe2d8, 0x8ef3, 0xe2d6, 0xcafc, 0xbfb5, /*0xb0-0xb7*/
+ 0xd3b9, 0xe2d5, 0x8ef4, 0x8ef5, 0x8ef6, 0x8ef7, 0xe2d7, 0x8ef8, /*0xb8-0xbf*/
+ 0x8ef9, 0x8efa, 0x8efb, 0x8efc, 0x8efd, 0x8efe, 0x8f40, 0x8f41, /*0xc0-0xc7*/
+ 0x8f42, 0xc1ae, 0xc0c8, 0x8f43, 0x8f44, 0x8f45, 0x8f46, 0x8f47, /*0xc8-0xcf*/
+ 0x8f48, 0xe2db, 0xe2da, 0xc0aa, 0x8f49, 0x8f4a, 0xc1ce, 0x8f4b, /*0xd0-0xd7*/
+ 0x8f4c, 0x8f4d, 0x8f4e, 0xe2dc, 0x8f4f, 0x8f50, 0x8f51, 0x8f52, /*0xd8-0xdf*/
+ 0x8f53, 0x8f54, 0x8f55, 0x8f56, 0x8f57, 0x8f58, 0x8f59, 0x8f5a, /*0xe0-0xe7*/
+ 0xe2dd, 0x8f5b, 0xe2de, 0x8f5c, 0x8f5d, 0x8f5e, 0x8f5f, 0x8f60, /*0xe8-0xef*/
+ 0x8f61, 0x8f62, 0x8f63, 0x8f64, 0xdbc8, 0x8f65, 0xd1d3, 0xcda2, /*0xf0-0xf7*/
+ 0x8f66, 0x8f67, 0xbda8, 0x8f68, 0x8f69, 0x8f6a, 0xdec3, 0xd8a5, /*0xf8-0xff*/
+ /* 0x5f00 */
+ 0xbfaa, 0xdbcd, 0xd2ec, 0xc6fa, 0xc5aa, 0x8f6b, 0x8f6c, 0x8f6d, /*0x00-0x07*/
+ 0xdec4, 0x8f6e, 0xb1d7, 0xdfae, 0x8f6f, 0x8f70, 0x8f71, 0xcabd, /*0x08-0x0f*/
+ 0x8f72, 0xdfb1, 0x8f73, 0xb9ad, 0x8f74, 0xd2fd, 0x8f75, 0xb8a5, /*0x10-0x17*/
+ 0xbaeb, 0x8f76, 0x8f77, 0xb3da, 0x8f78, 0x8f79, 0x8f7a, 0xb5dc, /*0x18-0x1f*/
+ 0xd5c5, 0x8f7b, 0x8f7c, 0x8f7d, 0x8f7e, 0xc3d6, 0xcfd2, 0xbba1, /*0x20-0x27*/
+ 0x8f80, 0xe5f3, 0xe5f2, 0x8f81, 0x8f82, 0xe5f4, 0x8f83, 0xcde4, /*0x28-0x2f*/
+ 0x8f84, 0xc8f5, 0x8f85, 0x8f86, 0x8f87, 0x8f88, 0x8f89, 0x8f8a, /*0x30-0x37*/
+ 0x8f8b, 0xb5af, 0xc7bf, 0x8f8c, 0xe5f6, 0x8f8d, 0x8f8e, 0x8f8f, /*0x38-0x3f*/
+ 0xecb0, 0x8f90, 0x8f91, 0x8f92, 0x8f93, 0x8f94, 0x8f95, 0x8f96, /*0x40-0x47*/
+ 0x8f97, 0x8f98, 0x8f99, 0x8f9a, 0x8f9b, 0x8f9c, 0x8f9d, 0x8f9e, /*0x48-0x4f*/
+ 0xe5e6, 0x8f9f, 0xb9e9, 0xb5b1, 0x8fa0, 0xc2bc, 0xe5e8, 0xe5e7, /*0x50-0x57*/
+ 0xe5e9, 0x8fa1, 0x8fa2, 0x8fa3, 0x8fa4, 0xd2cd, 0x8fa5, 0x8fa6, /*0x58-0x5f*/
+ 0x8fa7, 0xe1ea, 0xd0ce, 0x8fa8, 0xcdae, 0x8fa9, 0xd1e5, 0x8faa, /*0x60-0x67*/
+ 0x8fab, 0xb2ca, 0xb1eb, 0x8fac, 0xb1f2, 0xc5ed, 0x8fad, 0x8fae, /*0x68-0x6f*/
+ 0xd5c3, 0xd3b0, 0x8faf, 0xe1dc, 0x8fb0, 0x8fb1, 0x8fb2, 0xe1dd, /*0x70-0x77*/
+ 0x8fb3, 0xd2db, 0x8fb4, 0xb3b9, 0xb1cb, 0x8fb5, 0x8fb6, 0x8fb7, /*0x78-0x7f*/
+ 0xcdf9, 0xd5f7, 0xe1de, 0x8fb8, 0xbeb6, 0xb4fd, 0x8fb9, 0xe1df, /*0x80-0x87*/
+ 0xbadc, 0xe1e0, 0xbbb2, 0xc2c9, 0xe1e1, 0x8fba, 0x8fbb, 0x8fbc, /*0x88-0x8f*/
+ 0xd0ec, 0x8fbd, 0xcdbd, 0x8fbe, 0x8fbf, 0xe1e2, 0x8fc0, 0xb5c3, /*0x90-0x97*/
+ 0xc5c7, 0xe1e3, 0x8fc1, 0x8fc2, 0xe1e4, 0x8fc3, 0x8fc4, 0x8fc5, /*0x98-0x9f*/
+ 0x8fc6, 0xd3f9, 0x8fc7, 0x8fc8, 0x8fc9, 0x8fca, 0x8fcb, 0x8fcc, /*0xa0-0xa7*/
+ 0xe1e5, 0x8fcd, 0xd1ad, 0x8fce, 0x8fcf, 0xe1e6, 0xcea2, 0x8fd0, /*0xa8-0xaf*/
+ 0x8fd1, 0x8fd2, 0x8fd3, 0x8fd4, 0x8fd5, 0xe1e7, 0x8fd6, 0xb5c2, /*0xb0-0xb7*/
+ 0x8fd7, 0x8fd8, 0x8fd9, 0x8fda, 0xe1e8, 0xbbd5, 0x8fdb, 0x8fdc, /*0xb8-0xbf*/
+ 0x8fdd, 0x8fde, 0x8fdf, 0xd0c4, 0xe2e0, 0xb1d8, 0xd2e4, 0x8fe0, /*0xc0-0xc7*/
+ 0x8fe1, 0xe2e1, 0x8fe2, 0x8fe3, 0xbcc9, 0xc8cc, 0x8fe4, 0xe2e3, /*0xc8-0xcf*/
+ 0xecfe, 0xecfd, 0xdfaf, 0x8fe5, 0x8fe6, 0x8fe7, 0xe2e2, 0xd6be, /*0xd0-0xd7*/
+ 0xcdfc, 0xc3a6, 0x8fe8, 0x8fe9, 0x8fea, 0xe3c3, 0x8feb, 0x8fec, /*0xd8-0xdf*/
+ 0xd6d2, 0xe2e7, 0x8fed, 0x8fee, 0xe2e8, 0x8fef, 0x8ff0, 0xd3c7, /*0xe0-0xe7*/
+ 0x8ff1, 0x8ff2, 0xe2ec, 0xbfec, 0x8ff3, 0xe2ed, 0xe2e5, 0x8ff4, /*0xe8-0xef*/
+ 0x8ff5, 0xb3c0, 0x8ff6, 0x8ff7, 0x8ff8, 0xc4ee, 0x8ff9, 0x8ffa, /*0xf0-0xf7*/
+ 0xe2ee, 0x8ffb, 0x8ffc, 0xd0c3, 0x8ffd, 0xbaf6, 0xe2e9, 0xb7de, /*0xf8-0xff*/
+ /* 0x6000 */
+ 0xbbb3, 0xccac, 0xcbcb, 0xe2e4, 0xe2e6, 0xe2ea, 0xe2eb, 0x8ffe, /*0x00-0x07*/
+ 0x9040, 0x9041, 0xe2f7, 0x9042, 0x9043, 0xe2f4, 0xd4f5, 0xe2f3, /*0x08-0x0f*/
+ 0x9044, 0x9045, 0xc5ad, 0x9046, 0xd5fa, 0xc5c2, 0xb2c0, 0x9047, /*0x10-0x17*/
+ 0x9048, 0xe2ef, 0x9049, 0xe2f2, 0xc1af, 0xcbbc, 0x904a, 0x904b, /*0x18-0x1f*/
+ 0xb5a1, 0xe2f9, 0x904c, 0x904d, 0x904e, 0xbcb1, 0xe2f1, 0xd0d4, /*0x20-0x27*/
+ 0xd4b9, 0xe2f5, 0xb9d6, 0xe2f6, 0x904f, 0x9050, 0x9051, 0xc7d3, /*0x28-0x2f*/
+ 0x9052, 0x9053, 0x9054, 0x9055, 0x9056, 0xe2f0, 0x9057, 0x9058, /*0x30-0x37*/
+ 0x9059, 0x905a, 0x905b, 0xd7dc, 0xeda1, 0x905c, 0x905d, 0xe2f8, /*0x38-0x3f*/
+ 0x905e, 0xeda5, 0xe2fe, 0xcad1, 0x905f, 0x9060, 0x9061, 0x9062, /*0x40-0x47*/
+ 0x9063, 0x9064, 0x9065, 0xc1b5, 0x9066, 0xbbd0, 0x9067, 0x9068, /*0x48-0x4f*/
+ 0xbfd6, 0x9069, 0xbae3, 0x906a, 0x906b, 0xcba1, 0x906c, 0x906d, /*0x50-0x57*/
+ 0x906e, 0xeda6, 0xeda3, 0x906f, 0x9070, 0xeda2, 0x9071, 0x9072, /*0x58-0x5f*/
+ 0x9073, 0x9074, 0xbbd6, 0xeda7, 0xd0f4, 0x9075, 0x9076, 0xeda4, /*0x60-0x67*/
+ 0xbade, 0xb6f7, 0xe3a1, 0xb6b2, 0xccf1, 0xb9a7, 0x9077, 0xcfa2, /*0x68-0x6f*/
+ 0xc7a1, 0x9078, 0x9079, 0xbfd2, 0x907a, 0x907b, 0xb6f1, 0x907c, /*0x70-0x77*/
+ 0xe2fa, 0xe2fb, 0xe2fd, 0xe2fc, 0xc4d5, 0xe3a2, 0x907d, 0xd3c1, /*0x78-0x7f*/
+ 0x907e, 0x9080, 0x9081, 0xe3a7, 0xc7c4, 0x9082, 0x9083, 0x9084, /*0x80-0x87*/
+ 0x9085, 0xcfa4, 0x9086, 0x9087, 0xe3a9, 0xbab7, 0x9088, 0x9089, /*0x88-0x8f*/
+ 0x908a, 0x908b, 0xe3a8, 0x908c, 0xbbda, 0x908d, 0xe3a3, 0x908e, /*0x90-0x97*/
+ 0x908f, 0x9090, 0xe3a4, 0xe3aa, 0x9091, 0xe3a6, 0x9092, 0xcef2, /*0x98-0x9f*/
+ 0xd3c6, 0x9093, 0x9094, 0xbbbc, 0x9095, 0x9096, 0xd4c3, 0x9097, /*0xa0-0xa7*/
+ 0xc4fa, 0x9098, 0x9099, 0xeda8, 0xd0fc, 0xe3a5, 0x909a, 0xc3f5, /*0xa8-0xaf*/
+ 0x909b, 0xe3ad, 0xb1af, 0x909c, 0xe3b2, 0x909d, 0x909e, 0x909f, /*0xb0-0xb7*/
+ 0xbcc2, 0x90a0, 0x90a1, 0xe3ac, 0xb5bf, 0x90a2, 0x90a3, 0x90a4, /*0xb8-0xbf*/
+ 0x90a5, 0x90a6, 0x90a7, 0x90a8, 0x90a9, 0xc7e9, 0xe3b0, 0x90aa, /*0xc0-0xc7*/
+ 0x90ab, 0x90ac, 0xbeaa, 0xcdef, 0x90ad, 0x90ae, 0x90af, 0x90b0, /*0xc8-0xcf*/
+ 0x90b1, 0xbbf3, 0x90b2, 0x90b3, 0x90b4, 0xcce8, 0x90b5, 0x90b6, /*0xd0-0xd7*/
+ 0xe3af, 0x90b7, 0xe3b1, 0x90b8, 0xcfa7, 0xe3ae, 0x90b9, 0xcea9, /*0xd8-0xdf*/
+ 0xbbdd, 0x90ba, 0x90bb, 0x90bc, 0x90bd, 0x90be, 0xb5eb, 0xbee5, /*0xe0-0xe7*/
+ 0xb2d2, 0xb3cd, 0x90bf, 0xb1b9, 0xe3ab, 0xb2d1, 0xb5ac, 0xb9df, /*0xe8-0xef*/
+ 0xb6e8, 0x90c0, 0x90c1, 0xcfeb, 0xe3b7, 0x90c2, 0xbbcc, 0x90c3, /*0xf0-0xf7*/
+ 0x90c4, 0xc8c7, 0xd0ca, 0x90c5, 0x90c6, 0x90c7, 0x90c8, 0x90c9, /*0xf8-0xff*/
+ /* 0x6100 */
+ 0xe3b8, 0xb3ee, 0x90ca, 0x90cb, 0x90cc, 0x90cd, 0xeda9, 0x90ce, /*0x00-0x07*/
+ 0xd3fa, 0xd3e4, 0x90cf, 0x90d0, 0x90d1, 0xedaa, 0xe3b9, 0xd2e2, /*0x08-0x0f*/
+ 0x90d2, 0x90d3, 0x90d4, 0x90d5, 0x90d6, 0xe3b5, 0x90d7, 0x90d8, /*0x10-0x17*/
+ 0x90d9, 0x90da, 0xd3de, 0x90db, 0x90dc, 0x90dd, 0x90de, 0xb8d0, /*0x18-0x1f*/
+ 0xe3b3, 0x90df, 0x90e0, 0xe3b6, 0xb7df, 0x90e1, 0xe3b4, 0xc0a2, /*0x20-0x27*/
+ 0x90e2, 0x90e3, 0x90e4, 0xe3ba, 0x90e5, 0x90e6, 0x90e7, 0x90e8, /*0x28-0x2f*/
+ 0x90e9, 0x90ea, 0x90eb, 0x90ec, 0x90ed, 0x90ee, 0x90ef, 0x90f0, /*0x30-0x37*/
+ 0x90f1, 0x90f2, 0x90f3, 0x90f4, 0x90f5, 0x90f6, 0x90f7, 0xd4b8, /*0x38-0x3f*/
+ 0x90f8, 0x90f9, 0x90fa, 0x90fb, 0x90fc, 0x90fd, 0x90fe, 0x9140, /*0x40-0x47*/
+ 0xb4c8, 0x9141, 0xe3bb, 0x9142, 0xbbc5, 0x9143, 0xc9f7, 0x9144, /*0x48-0x4f*/
+ 0x9145, 0xc9e5, 0x9146, 0x9147, 0x9148, 0xc4bd, 0x9149, 0x914a, /*0x50-0x57*/
+ 0x914b, 0x914c, 0x914d, 0x914e, 0x914f, 0xedab, 0x9150, 0x9151, /*0x58-0x5f*/
+ 0x9152, 0x9153, 0xc2fd, 0x9154, 0x9155, 0x9156, 0x9157, 0xbbdb, /*0x60-0x67*/
+ 0xbfae, 0x9158, 0x9159, 0x915a, 0x915b, 0x915c, 0x915d, 0x915e, /*0x68-0x6f*/
+ 0xcebf, 0x915f, 0x9160, 0x9161, 0x9162, 0xe3bc, 0x9163, 0xbfb6, /*0x70-0x77*/
+ 0x9164, 0x9165, 0x9166, 0x9167, 0x9168, 0x9169, 0x916a, 0x916b, /*0x78-0x7f*/
+ 0x916c, 0x916d, 0x916e, 0x916f, 0x9170, 0x9171, 0x9172, 0x9173, /*0x80-0x87*/
+ 0x9174, 0x9175, 0x9176, 0xb1ef, 0x9177, 0x9178, 0xd4f7, 0x9179, /*0x88-0x8f*/
+ 0x917a, 0x917b, 0x917c, 0x917d, 0xe3be, 0x917e, 0x9180, 0x9181, /*0x90-0x97*/
+ 0x9182, 0x9183, 0x9184, 0x9185, 0x9186, 0xedad, 0x9187, 0x9188, /*0x98-0x9f*/
+ 0x9189, 0x918a, 0x918b, 0x918c, 0x918d, 0x918e, 0x918f, 0xe3bf, /*0xa0-0xa7*/
+ 0xbaa9, 0xedac, 0x9190, 0x9191, 0xe3bd, 0x9192, 0x9193, 0x9194, /*0xa8-0xaf*/
+ 0x9195, 0x9196, 0x9197, 0x9198, 0x9199, 0x919a, 0x919b, 0xe3c0, /*0xb0-0xb7*/
+ 0x919c, 0x919d, 0x919e, 0x919f, 0x91a0, 0x91a1, 0xbab6, 0x91a2, /*0xb8-0xbf*/
+ 0x91a3, 0x91a4, 0xb6ae, 0x91a5, 0x91a6, 0x91a7, 0x91a8, 0x91a9, /*0xc0-0xc7*/
+ 0xd0b8, 0x91aa, 0xb0c3, 0xedae, 0x91ab, 0x91ac, 0x91ad, 0x91ae, /*0xc8-0xcf*/
+ 0x91af, 0xedaf, 0xc0c1, 0x91b0, 0xe3c1, 0x91b1, 0x91b2, 0x91b3, /*0xd0-0xd7*/
+ 0x91b4, 0x91b5, 0x91b6, 0x91b7, 0x91b8, 0x91b9, 0x91ba, 0x91bb, /*0xd8-0xdf*/
+ 0x91bc, 0x91bd, 0x91be, 0x91bf, 0x91c0, 0x91c1, 0xc5b3, 0x91c2, /*0xe0-0xe7*/
+ 0x91c3, 0x91c4, 0x91c5, 0x91c6, 0x91c7, 0x91c8, 0x91c9, 0x91ca, /*0xe8-0xef*/
+ 0x91cb, 0x91cc, 0x91cd, 0x91ce, 0x91cf, 0xe3c2, 0x91d0, 0x91d1, /*0xf0-0xf7*/
+ 0x91d2, 0x91d3, 0x91d4, 0x91d5, 0x91d6, 0x91d7, 0x91d8, 0xdcb2, /*0xf8-0xff*/
+ /* 0x6200 */
+ 0x91d9, 0x91da, 0x91db, 0x91dc, 0x91dd, 0x91de, 0xedb0, 0x91df, /*0x00-0x07*/
+ 0xb8ea, 0x91e0, 0xceec, 0xeaa7, 0xd0e7, 0xcaf9, 0xc8d6, 0xcfb7, /*0x08-0x0f*/
+ 0xb3c9, 0xced2, 0xbde4, 0x91e1, 0x91e2, 0xe3de, 0xbbf2, 0xeaa8, /*0x10-0x17*/
+ 0xd5bd, 0x91e3, 0xc6dd, 0xeaa9, 0x91e4, 0x91e5, 0x91e6, 0xeaaa, /*0x18-0x1f*/
+ 0x91e7, 0xeaac, 0xeaab, 0x91e8, 0xeaae, 0xeaad, 0x91e9, 0x91ea, /*0x20-0x27*/
+ 0x91eb, 0x91ec, 0xbdd8, 0x91ed, 0xeaaf, 0x91ee, 0xc2be, 0x91ef, /*0x28-0x2f*/
+ 0x91f0, 0x91f1, 0x91f2, 0xb4c1, 0xb4f7, 0x91f3, 0x91f4, 0xbba7, /*0x30-0x37*/
+ 0x91f5, 0x91f6, 0x91f7, 0x91f8, 0x91f9, 0xece6, 0xece5, 0xb7bf, /*0x38-0x3f*/
+ 0xcbf9, 0xb1e2, 0x91fa, 0xece7, 0x91fb, 0x91fc, 0x91fd, 0xc9c8, /*0x40-0x47*/
+ 0xece8, 0xece9, 0x91fe, 0xcad6, 0xded0, 0xb2c5, 0xd4fa, 0x9240, /*0x48-0x4f*/
+ 0x9241, 0xc6cb, 0xb0c7, 0xb4f2, 0xc8d3, 0x9242, 0x9243, 0x9244, /*0x50-0x57*/
+ 0xcdd0, 0x9245, 0x9246, 0xbfb8, 0x9247, 0x9248, 0x9249, 0x924a, /*0x58-0x5f*/
+ 0x924b, 0x924c, 0x924d, 0xbfdb, 0x924e, 0x924f, 0xc7a4, 0xd6b4, /*0x60-0x67*/
+ 0x9250, 0xc0a9, 0xded1, 0xc9a8, 0xd1ef, 0xc5a4, 0xb0e7, 0xb3b6, /*0x68-0x6f*/
+ 0xc8c5, 0x9251, 0x9252, 0xb0e2, 0x9253, 0x9254, 0xb7f6, 0x9255, /*0x70-0x77*/
+ 0x9256, 0xc5fa, 0x9257, 0x9258, 0xb6f3, 0x9259, 0xd5d2, 0xb3d0, /*0x78-0x7f*/
+ 0xbcbc, 0x925a, 0x925b, 0x925c, 0xb3ad, 0x925d, 0x925e, 0x925f, /*0x80-0x87*/
+ 0x9260, 0xbef1, 0xb0d1, 0x9261, 0x9262, 0x9263, 0x9264, 0x9265, /*0x88-0x8f*/
+ 0x9266, 0xd2d6, 0xcae3, 0xd7a5, 0x9267, 0xcdb6, 0xb6b6, 0xbfb9, /*0x90-0x97*/
+ 0xd5db, 0x9268, 0xb8a7, 0xc5d7, 0x9269, 0x926a, 0x926b, 0xded2, /*0x98-0x9f*/
+ 0xbfd9, 0xc2d5, 0xc7c0, 0x926c, 0xbba4, 0xb1a8, 0x926d, 0x926e, /*0xa0-0xa7*/
+ 0xc5ea, 0x926f, 0x9270, 0xc5fb, 0xcca7, 0x9271, 0x9272, 0x9273, /*0xa8-0xaf*/
+ 0x9274, 0xb1a7, 0x9275, 0x9276, 0x9277, 0xb5d6, 0x9278, 0x9279, /*0xb0-0xb7*/
+ 0x927a, 0xc4a8, 0x927b, 0xded3, 0xd1ba, 0xb3e9, 0x927c, 0xc3f2, /*0xb8-0xbf*/
+ 0x927d, 0x927e, 0xb7f7, 0x9280, 0xd6f4, 0xb5a3, 0xb2f0, 0xc4b4, /*0xc0-0xc7*/
+ 0xc4e9, 0xc0ad, 0xded4, 0x9281, 0xb0e8, 0xc5c4, 0xc1e0, 0x9282, /*0xc8-0xcf*/
+ 0xb9d5, 0x9283, 0xbedc, 0xcdd8, 0xb0ce, 0x9284, 0xcdcf, 0xded6, /*0xd0-0xd7*/
+ 0xbed0, 0xd7be, 0xded5, 0xd5d0, 0xb0dd, 0x9285, 0x9286, 0xc4e2, /*0xd8-0xdf*/
+ 0x9287, 0x9288, 0xc2a3, 0xbcf0, 0x9289, 0xd3b5, 0xc0b9, 0xc5a1, /*0xe0-0xe7*/
+ 0xb2a6, 0xd4f1, 0x928a, 0x928b, 0xc0a8, 0xcac3, 0xded7, 0xd5fc, /*0xe8-0xef*/
+ 0x928c, 0xb9b0, 0x928d, 0xc8ad, 0xcba9, 0x928e, 0xded9, 0xbfbd, /*0xf0-0xf7*/
+ 0x928f, 0x9290, 0x9291, 0x9292, 0xc6b4, 0xd7a7, 0xcab0, 0xc4c3, /*0xf8-0xff*/
+ /* 0x6300 */
+ 0x9293, 0xb3d6, 0xb9d2, 0x9294, 0x9295, 0x9296, 0x9297, 0xd6b8, /*0x00-0x07*/
+ 0xeafc, 0xb0b4, 0x9298, 0x9299, 0x929a, 0x929b, 0xbfe6, 0x929c, /*0x08-0x0f*/
+ 0x929d, 0xccf4, 0x929e, 0x929f, 0x92a0, 0x92a1, 0xcdda, 0x92a2, /*0x10-0x17*/
+ 0x92a3, 0x92a4, 0xd6bf, 0xc2ce, 0x92a5, 0xcece, 0xcca2, 0xd0ae, /*0x18-0x1f*/
+ 0xc4d3, 0xb5b2, 0xded8, 0xd5f5, 0xbcb7, 0xbbd3, 0x92a6, 0x92a7, /*0x20-0x27*/
+ 0xb0a4, 0x92a8, 0xc5b2, 0xb4ec, 0x92a9, 0x92aa, 0x92ab, 0xd5f1, /*0x28-0x2f*/
+ 0x92ac, 0x92ad, 0xeafd, 0x92ae, 0x92af, 0x92b0, 0x92b1, 0x92b2, /*0x30-0x37*/
+ 0x92b3, 0xdeda, 0xcda6, 0x92b4, 0x92b5, 0xcdec, 0x92b6, 0x92b7, /*0x38-0x3f*/
+ 0x92b8, 0x92b9, 0xcee6, 0xdedc, 0x92ba, 0xcdb1, 0xc0a6, 0x92bb, /*0x40-0x47*/
+ 0x92bc, 0xd7bd, 0x92bd, 0xdedb, 0xb0c6, 0xbab4, 0xc9d3, 0xc4f3, /*0x48-0x4f*/
+ 0xbee8, 0x92be, 0x92bf, 0x92c0, 0x92c1, 0xb2b6, 0x92c2, 0x92c3, /*0x50-0x57*/
+ 0x92c4, 0x92c5, 0x92c6, 0x92c7, 0x92c8, 0x92c9, 0xc0cc, 0xcbf0, /*0x58-0x5f*/
+ 0x92ca, 0xbcf1, 0xbbbb, 0xb5b7, 0x92cb, 0x92cc, 0x92cd, 0xc5f5, /*0x60-0x67*/
+ 0x92ce, 0xdee6, 0x92cf, 0x92d0, 0x92d1, 0xdee3, 0xbedd, 0x92d2, /*0x68-0x6f*/
+ 0x92d3, 0xdedf, 0x92d4, 0x92d5, 0x92d6, 0x92d7, 0xb4b7, 0xbddd, /*0x70-0x77*/
+ 0x92d8, 0x92d9, 0xdee0, 0xc4ed, 0x92da, 0x92db, 0x92dc, 0x92dd, /*0x78-0x7f*/
+ 0xcfc6, 0x92de, 0xb5e0, 0x92df, 0x92e0, 0x92e1, 0x92e2, 0xb6de, /*0x80-0x87*/
+ 0xcada, 0xb5f4, 0xdee5, 0x92e3, 0xd5c6, 0x92e4, 0xdee1, 0xcccd, /*0x88-0x8f*/
+ 0xc6fe, 0x92e5, 0xc5c5, 0x92e6, 0x92e7, 0x92e8, 0xd2b4, 0x92e9, /*0x90-0x97*/
+ 0xbef2, 0x92ea, 0x92eb, 0x92ec, 0x92ed, 0x92ee, 0x92ef, 0x92f0, /*0x98-0x9f*/
+ 0xc2d3, 0x92f1, 0xccbd, 0xb3b8, 0x92f2, 0xbdd3, 0x92f3, 0xbfd8, /*0xa0-0xa7*/
+ 0xcdc6, 0xd1da, 0xb4eb, 0x92f4, 0xdee4, 0xdedd, 0xdee7, 0x92f5, /*0xa8-0xaf*/
+ 0xeafe, 0x92f6, 0x92f7, 0xc2b0, 0xdee2, 0x92f8, 0x92f9, 0xd6c0, /*0xb0-0xb7*/
+ 0xb5a7, 0x92fa, 0xb2f4, 0x92fb, 0xdee8, 0x92fc, 0xdef2, 0x92fd, /*0xb8-0xbf*/
+ 0x92fe, 0x9340, 0x9341, 0x9342, 0xdeed, 0x9343, 0xdef1, 0x9344, /*0xc0-0xc7*/
+ 0x9345, 0xc8e0, 0x9346, 0x9347, 0x9348, 0xd7e1, 0xdeef, 0xc3e8, /*0xc8-0xcf*/
+ 0xcce1, 0x9349, 0xb2e5, 0x934a, 0x934b, 0x934c, 0xd2be, 0x934d, /*0xd0-0xd7*/
+ 0x934e, 0x934f, 0x9350, 0x9351, 0x9352, 0x9353, 0xdeee, 0x9354, /*0xd8-0xdf*/
+ 0xdeeb, 0xced5, 0x9355, 0xb4a7, 0x9356, 0x9357, 0x9358, 0x9359, /*0xe0-0xe7*/
+ 0x935a, 0xbfab, 0xbebe, 0x935b, 0x935c, 0xbdd2, 0x935d, 0x935e, /*0xe8-0xef*/
+ 0x935f, 0x9360, 0xdee9, 0x9361, 0xd4ae, 0x9362, 0xdede, 0x9363, /*0xf0-0xf7*/
+ 0xdeea, 0x9364, 0x9365, 0x9366, 0x9367, 0xc0bf, 0x9368, 0xdeec, /*0xf8-0xff*/
+ /* 0x6400 */
+ 0xb2f3, 0xb8e9, 0xc2a7, 0x9369, 0x936a, 0xbdc1, 0x936b, 0x936c, /*0x00-0x07*/
+ 0x936d, 0x936e, 0x936f, 0xdef5, 0xdef8, 0x9370, 0x9371, 0xb2ab, /*0x08-0x0f*/
+ 0xb4a4, 0x9372, 0x9373, 0xb4ea, 0xc9a6, 0x9374, 0x9375, 0x9376, /*0x10-0x17*/
+ 0x9377, 0x9378, 0x9379, 0xdef6, 0xcbd1, 0x937a, 0xb8e3, 0x937b, /*0x18-0x1f*/
+ 0xdef7, 0xdefa, 0x937c, 0x937d, 0x937e, 0x9380, 0xdef9, 0x9381, /*0x20-0x27*/
+ 0x9382, 0x9383, 0xccc2, 0x9384, 0xb0e1, 0xb4ee, 0x9385, 0x9386, /*0x28-0x2f*/
+ 0x9387, 0x9388, 0x9389, 0x938a, 0xe5ba, 0x938b, 0x938c, 0x938d, /*0x30-0x37*/
+ 0x938e, 0x938f, 0xd0af, 0x9390, 0x9391, 0xb2eb, 0x9392, 0xeba1, /*0x38-0x3f*/
+ 0x9393, 0xdef4, 0x9394, 0x9395, 0xc9e3, 0xdef3, 0xb0da, 0xd2a1, /*0x40-0x47*/
+ 0xb1f7, 0x9396, 0xccaf, 0x9397, 0x9398, 0x9399, 0x939a, 0x939b, /*0x48-0x4f*/
+ 0x939c, 0x939d, 0xdef0, 0x939e, 0xcba4, 0x939f, 0x93a0, 0x93a1, /*0x50-0x57*/
+ 0xd5aa, 0x93a2, 0x93a3, 0x93a4, 0x93a5, 0x93a6, 0xdefb, 0x93a7, /*0x58-0x5f*/
+ 0x93a8, 0x93a9, 0x93aa, 0x93ab, 0x93ac, 0x93ad, 0x93ae, 0xb4dd, /*0x60-0x67*/
+ 0x93af, 0xc4a6, 0x93b0, 0x93b1, 0x93b2, 0xdefd, 0x93b3, 0x93b4, /*0x68-0x6f*/
+ 0x93b5, 0x93b6, 0x93b7, 0x93b8, 0x93b9, 0x93ba, 0x93bb, 0x93bc, /*0x70-0x77*/
+ 0xc3fe, 0xc4a1, 0xdfa1, 0x93bd, 0x93be, 0x93bf, 0x93c0, 0x93c1, /*0x78-0x7f*/
+ 0x93c2, 0x93c3, 0xc1cc, 0x93c4, 0xdefc, 0xbeef, 0x93c5, 0xc6b2, /*0x80-0x87*/
+ 0x93c6, 0x93c7, 0x93c8, 0x93c9, 0x93ca, 0x93cb, 0x93cc, 0x93cd, /*0x88-0x8f*/
+ 0x93ce, 0xb3c5, 0xc8f6, 0x93cf, 0x93d0, 0xcbba, 0xdefe, 0x93d1, /*0x90-0x97*/
+ 0x93d2, 0xdfa4, 0x93d3, 0x93d4, 0x93d5, 0x93d6, 0xd7b2, 0x93d7, /*0x98-0x9f*/
+ 0x93d8, 0x93d9, 0x93da, 0x93db, 0xb3b7, 0x93dc, 0x93dd, 0x93de, /*0xa0-0xa7*/
+ 0x93df, 0xc1c3, 0x93e0, 0x93e1, 0xc7cb, 0xb2a5, 0xb4e9, 0x93e2, /*0xa8-0xaf*/
+ 0xd7ab, 0x93e3, 0x93e4, 0x93e5, 0x93e6, 0xc4ec, 0x93e7, 0xdfa2, /*0xb0-0xb7*/
+ 0xdfa3, 0x93e8, 0xdfa5, 0x93e9, 0xbab3, 0x93ea, 0x93eb, 0x93ec, /*0xb8-0xbf*/
+ 0xdfa6, 0x93ed, 0xc0de, 0x93ee, 0x93ef, 0xc9c3, 0x93f0, 0x93f1, /*0xc0-0xc7*/
+ 0x93f2, 0x93f3, 0x93f4, 0x93f5, 0x93f6, 0xb2d9, 0xc7e6, 0x93f7, /*0xc8-0xcf*/
+ 0xdfa7, 0x93f8, 0xc7dc, 0x93f9, 0x93fa, 0x93fb, 0x93fc, 0xdfa8, /*0xd0-0xd7*/
+ 0xeba2, 0x93fd, 0x93fe, 0x9440, 0x9441, 0x9442, 0xcbd3, 0x9443, /*0xd8-0xdf*/
+ 0x9444, 0x9445, 0xdfaa, 0x9446, 0xdfa9, 0x9447, 0xb2c1, 0x9448, /*0xe0-0xe7*/
+ 0x9449, 0x944a, 0x944b, 0x944c, 0x944d, 0x944e, 0x944f, 0x9450, /*0xe8-0xef*/
+ 0x9451, 0x9452, 0x9453, 0x9454, 0x9455, 0x9456, 0x9457, 0x9458, /*0xf0-0xf7*/
+ 0x9459, 0x945a, 0x945b, 0x945c, 0x945d, 0x945e, 0x945f, 0x9460, /*0xf8-0xff*/
+ /* 0x6500 */
+ 0xc5ca, 0x9461, 0x9462, 0x9463, 0x9464, 0x9465, 0x9466, 0x9467, /*0x00-0x07*/
+ 0x9468, 0xdfab, 0x9469, 0x946a, 0x946b, 0x946c, 0x946d, 0x946e, /*0x08-0x0f*/
+ 0x946f, 0x9470, 0xd4dc, 0x9471, 0x9472, 0x9473, 0x9474, 0x9475, /*0x10-0x17*/
+ 0xc8c1, 0x9476, 0x9477, 0x9478, 0x9479, 0x947a, 0x947b, 0x947c, /*0x18-0x1f*/
+ 0x947d, 0x947e, 0x9480, 0x9481, 0x9482, 0xdfac, 0x9483, 0x9484, /*0x20-0x27*/
+ 0x9485, 0x9486, 0x9487, 0xbef0, 0x9488, 0x9489, 0xdfad, 0xd6a7, /*0x28-0x2f*/
+ 0x948a, 0x948b, 0x948c, 0x948d, 0xeab7, 0xebb6, 0xcad5, 0x948e, /*0x30-0x37*/
+ 0xd8fc, 0xb8c4, 0x948f, 0xb9a5, 0x9490, 0x9491, 0xb7c5, 0xd5fe, /*0x38-0x3f*/
+ 0x9492, 0x9493, 0x9494, 0x9495, 0x9496, 0xb9ca, 0x9497, 0x9498, /*0x40-0x47*/
+ 0xd0a7, 0xf4cd, 0x9499, 0x949a, 0xb5d0, 0x949b, 0x949c, 0xc3f4, /*0x48-0x4f*/
+ 0x949d, 0xbec8, 0x949e, 0x949f, 0x94a0, 0xebb7, 0xb0bd, 0x94a1, /*0x50-0x57*/
+ 0x94a2, 0xbdcc, 0x94a3, 0xc1b2, 0x94a4, 0xb1d6, 0xb3a8, 0x94a5, /*0x58-0x5f*/
+ 0x94a6, 0x94a7, 0xb8d2, 0xc9a2, 0x94a8, 0x94a9, 0xb6d8, 0x94aa, /*0x60-0x67*/
+ 0x94ab, 0x94ac, 0x94ad, 0xebb8, 0xbeb4, 0x94ae, 0x94af, 0x94b0, /*0x68-0x6f*/
+ 0xcafd, 0x94b1, 0xc7c3, 0x94b2, 0xd5fb, 0x94b3, 0x94b4, 0xb7f3, /*0x70-0x77*/
+ 0x94b5, 0x94b6, 0x94b7, 0x94b8, 0x94b9, 0x94ba, 0x94bb, 0x94bc, /*0x78-0x7f*/
+ 0x94bd, 0x94be, 0x94bf, 0x94c0, 0x94c1, 0x94c2, 0x94c3, 0xcec4, /*0x80-0x87*/
+ 0x94c4, 0x94c5, 0x94c6, 0xd5ab, 0xb1f3, 0x94c7, 0x94c8, 0x94c9, /*0x88-0x8f*/
+ 0xecb3, 0xb0df, 0x94ca, 0xecb5, 0x94cb, 0x94cc, 0x94cd, 0xb6b7, /*0x90-0x97*/
+ 0x94ce, 0xc1cf, 0x94cf, 0xf5fa, 0xd0b1, 0x94d0, 0x94d1, 0xd5e5, /*0x98-0x9f*/
+ 0x94d2, 0xced3, 0x94d3, 0x94d4, 0xbdef, 0xb3e2, 0x94d5, 0xb8ab, /*0xa0-0xa7*/
+ 0x94d6, 0xd5b6, 0x94d7, 0xedbd, 0x94d8, 0xb6cf, 0x94d9, 0xcbb9, /*0xa8-0xaf*/
+ 0xd0c2, 0x94da, 0x94db, 0x94dc, 0x94dd, 0x94de, 0x94df, 0x94e0, /*0xb0-0xb7*/
+ 0x94e1, 0xb7bd, 0x94e2, 0x94e3, 0xecb6, 0xcaa9, 0x94e4, 0x94e5, /*0xb8-0xbf*/
+ 0x94e6, 0xc5d4, 0x94e7, 0xecb9, 0xecb8, 0xc2c3, 0xecb7, 0x94e8, /*0xc0-0xc7*/
+ 0x94e9, 0x94ea, 0x94eb, 0xd0fd, 0xecba, 0x94ec, 0xecbb, 0xd7e5, /*0xc8-0xcf*/
+ 0x94ed, 0x94ee, 0xecbc, 0x94ef, 0x94f0, 0x94f1, 0xecbd, 0xc6ec, /*0xd0-0xd7*/
+ 0x94f2, 0x94f3, 0x94f4, 0x94f5, 0x94f6, 0x94f7, 0x94f8, 0x94f9, /*0xd8-0xdf*/
+ 0xcede, 0x94fa, 0xbcc8, 0x94fb, 0x94fc, 0xc8d5, 0xb5a9, 0xbec9, /*0xe0-0xe7*/
+ 0xd6bc, 0xd4e7, 0x94fd, 0x94fe, 0xd1ae, 0xd0f1, 0xeab8, 0xeab9, /*0xe8-0xef*/
+ 0xeaba, 0xbab5, 0x9540, 0x9541, 0x9542, 0x9543, 0xcab1, 0xbff5, /*0xf0-0xf7*/
+ 0x9544, 0x9545, 0xcdfa, 0x9546, 0x9547, 0x9548, 0x9549, 0x954a, /*0xf8-0xff*/
+ /* 0x6600 */
+ 0xeac0, 0x954b, 0xb0ba, 0xeabe, 0x954c, 0x954d, 0xc0a5, 0x954e, /*0x00-0x07*/
+ 0x954f, 0x9550, 0xeabb, 0x9551, 0xb2fd, 0x9552, 0xc3f7, 0xbbe8, /*0x08-0x0f*/
+ 0x9553, 0x9554, 0x9555, 0xd2d7, 0xcef4, 0xeabf, 0x9556, 0x9557, /*0x10-0x17*/
+ 0x9558, 0xeabc, 0x9559, 0x955a, 0x955b, 0xeac3, 0x955c, 0xd0c7, /*0x18-0x1f*/
+ 0xd3b3, 0x955d, 0x955e, 0x955f, 0x9560, 0xb4ba, 0x9561, 0xc3c1, /*0x20-0x27*/
+ 0xd7f2, 0x9562, 0x9563, 0x9564, 0x9565, 0xd5d1, 0x9566, 0xcac7, /*0x28-0x2f*/
+ 0x9567, 0xeac5, 0x9568, 0x9569, 0xeac4, 0xeac7, 0xeac6, 0x956a, /*0x30-0x37*/
+ 0x956b, 0x956c, 0x956d, 0x956e, 0xd6e7, 0x956f, 0xcfd4, 0x9570, /*0x38-0x3f*/
+ 0x9571, 0xeacb, 0x9572, 0xbbce, 0x9573, 0x9574, 0x9575, 0x9576, /*0x40-0x47*/
+ 0x9577, 0x9578, 0x9579, 0xbdfa, 0xc9ce, 0x957a, 0x957b, 0xeacc, /*0x48-0x4f*/
+ 0x957c, 0x957d, 0xc9b9, 0xcffe, 0xeaca, 0xd4ce, 0xeacd, 0xeacf, /*0x50-0x57*/
+ 0x957e, 0x9580, 0xcded, 0x9581, 0x9582, 0x9583, 0x9584, 0xeac9, /*0x58-0x5f*/
+ 0x9585, 0xeace, 0x9586, 0x9587, 0xceee, 0x9588, 0xbbde, 0x9589, /*0x60-0x67*/
+ 0xb3bf, 0x958a, 0x958b, 0x958c, 0x958d, 0x958e, 0xc6d5, 0xbeb0, /*0x68-0x6f*/
+ 0xcefa, 0x958f, 0x9590, 0x9591, 0xc7e7, 0x9592, 0xbea7, 0xead0, /*0x70-0x77*/
+ 0x9593, 0x9594, 0xd6c7, 0x9595, 0x9596, 0x9597, 0xc1c0, 0x9598, /*0x78-0x7f*/
+ 0x9599, 0x959a, 0xd4dd, 0x959b, 0xead1, 0x959c, 0x959d, 0xcfbe, /*0x80-0x87*/
+ 0x959e, 0x959f, 0x95a0, 0x95a1, 0xead2, 0x95a2, 0x95a3, 0x95a4, /*0x88-0x8f*/
+ 0x95a5, 0xcaee, 0x95a6, 0x95a7, 0x95a8, 0x95a9, 0xc5af, 0xb0b5, /*0x90-0x97*/
+ 0x95aa, 0x95ab, 0x95ac, 0x95ad, 0x95ae, 0xead4, 0x95af, 0x95b0, /*0x98-0x9f*/
+ 0x95b1, 0x95b2, 0x95b3, 0x95b4, 0x95b5, 0x95b6, 0x95b7, 0xead3, /*0xa0-0xa7*/
+ 0xf4df, 0x95b8, 0x95b9, 0x95ba, 0x95bb, 0x95bc, 0xc4ba, 0x95bd, /*0xa8-0xaf*/
+ 0x95be, 0x95bf, 0x95c0, 0x95c1, 0xb1a9, 0x95c2, 0x95c3, 0x95c4, /*0xb0-0xb7*/
+ 0x95c5, 0xe5df, 0x95c6, 0x95c7, 0x95c8, 0x95c9, 0xead5, 0x95ca, /*0xb8-0xbf*/
+ 0x95cb, 0x95cc, 0x95cd, 0x95ce, 0x95cf, 0x95d0, 0x95d1, 0x95d2, /*0xc0-0xc7*/
+ 0x95d3, 0x95d4, 0x95d5, 0x95d6, 0x95d7, 0x95d8, 0x95d9, 0x95da, /*0xc8-0xcf*/
+ 0x95db, 0x95dc, 0x95dd, 0x95de, 0x95df, 0x95e0, 0x95e1, 0x95e2, /*0xd0-0xd7*/
+ 0x95e3, 0xcaef, 0x95e4, 0xead6, 0xead7, 0xc6d8, 0x95e5, 0x95e6, /*0xd8-0xdf*/
+ 0x95e7, 0x95e8, 0x95e9, 0x95ea, 0x95eb, 0x95ec, 0xead8, 0x95ed, /*0xe0-0xe7*/
+ 0x95ee, 0xead9, 0x95ef, 0x95f0, 0x95f1, 0x95f2, 0x95f3, 0x95f4, /*0xe8-0xef*/
+ 0xd4bb, 0x95f5, 0xc7fa, 0xd2b7, 0xb8fc, 0x95f6, 0x95f7, 0xeac2, /*0xf0-0xf7*/
+ 0x95f8, 0xb2dc, 0x95f9, 0x95fa, 0xc2fc, 0x95fb, 0xd4f8, 0xcce6, /*0xf8-0xff*/
+ /* 0x6700 */
+ 0xd7ee, 0x95fc, 0x95fd, 0x95fe, 0x9640, 0x9641, 0x9642, 0x9643, /*0x00-0x07*/
+ 0xd4c2, 0xd3d0, 0xebc3, 0xc5f3, 0x9644, 0xb7fe, 0x9645, 0x9646, /*0x08-0x0f*/
+ 0xebd4, 0x9647, 0x9648, 0x9649, 0xcbb7, 0xebde, 0x964a, 0xc0ca, /*0x10-0x17*/
+ 0x964b, 0x964c, 0x964d, 0xcdfb, 0x964e, 0xb3af, 0x964f, 0xc6da, /*0x18-0x1f*/
+ 0x9650, 0x9651, 0x9652, 0x9653, 0x9654, 0x9655, 0xebfc, 0x9656, /*0x20-0x27*/
+ 0xc4be, 0x9657, 0xceb4, 0xc4a9, 0xb1be, 0xd4fd, 0x9658, 0xcaf5, /*0x28-0x2f*/
+ 0x9659, 0xd6ec, 0x965a, 0x965b, 0xc6d3, 0xb6e4, 0x965c, 0x965d, /*0x30-0x37*/
+ 0x965e, 0x965f, 0xbbfa, 0x9660, 0x9661, 0xd0e0, 0x9662, 0x9663, /*0x38-0x3f*/
+ 0xc9b1, 0x9664, 0xd4d3, 0xc8a8, 0x9665, 0x9666, 0xb8cb, 0x9667, /*0x40-0x47*/
+ 0xe8be, 0xc9bc, 0x9668, 0x9669, 0xe8bb, 0x966a, 0xc0ee, 0xd0d3, /*0x48-0x4f*/
+ 0xb2c4, 0xb4e5, 0x966b, 0xe8bc, 0x966c, 0x966d, 0xd5c8, 0x966e, /*0x50-0x57*/
+ 0x966f, 0x9670, 0x9671, 0x9672, 0xb6c5, 0x9673, 0xe8bd, 0xcaf8, /*0x58-0x5f*/
+ 0xb8dc, 0xccf5, 0x9674, 0x9675, 0x9676, 0xc0b4, 0x9677, 0x9678, /*0x60-0x67*/
+ 0xd1ee, 0xe8bf, 0xe8c2, 0x9679, 0x967a, 0xbabc, 0x967b, 0xb1ad, /*0x68-0x6f*/
+ 0xbddc, 0x967c, 0xeabd, 0xe8c3, 0x967d, 0xe8c6, 0x967e, 0xe8cb, /*0x70-0x77*/
+ 0x9680, 0x9681, 0x9682, 0x9683, 0xe8cc, 0x9684, 0xcbc9, 0xb0e5, /*0x78-0x7f*/
+ 0x9685, 0xbcab, 0x9686, 0x9687, 0xb9b9, 0x9688, 0x9689, 0xe8c1, /*0x80-0x87*/
+ 0x968a, 0xcdf7, 0x968b, 0xe8ca, 0x968c, 0x968d, 0x968e, 0x968f, /*0x88-0x8f*/
+ 0xcef6, 0x9690, 0x9691, 0x9692, 0x9693, 0xd5ed, 0x9694, 0xc1d6, /*0x90-0x97*/
+ 0xe8c4, 0x9695, 0xc3b6, 0x9696, 0xb9fb, 0xd6a6, 0xe8c8, 0x9697, /*0x98-0x9f*/
+ 0x9698, 0x9699, 0xcae0, 0xd4e6, 0x969a, 0xe8c0, 0x969b, 0xe8c5, /*0xa0-0xa7*/
+ 0xe8c7, 0x969c, 0xc7b9, 0xb7e3, 0x969d, 0xe8c9, 0x969e, 0xbfdd, /*0xa8-0xaf*/
+ 0xe8d2, 0x969f, 0x96a0, 0xe8d7, 0x96a1, 0xe8d5, 0xbcdc, 0xbccf, /*0xb0-0xb7*/
+ 0xe8db, 0x96a2, 0x96a3, 0x96a4, 0x96a5, 0x96a6, 0x96a7, 0x96a8, /*0xb8-0xbf*/
+ 0x96a9, 0xe8de, 0x96aa, 0xe8da, 0xb1fa, 0x96ab, 0x96ac, 0x96ad, /*0xc0-0xc7*/
+ 0x96ae, 0x96af, 0x96b0, 0x96b1, 0x96b2, 0x96b3, 0x96b4, 0xb0d8, /*0xc8-0xcf*/
+ 0xc4b3, 0xb8cc, 0xc6e2, 0xc8be, 0xc8e1, 0x96b5, 0x96b6, 0x96b7, /*0xd0-0xd7*/
+ 0xe8cf, 0xe8d4, 0xe8d6, 0x96b8, 0xb9f1, 0xe8d8, 0xd7f5, 0x96b9, /*0xd8-0xdf*/
+ 0xc4fb, 0x96ba, 0xe8dc, 0x96bb, 0x96bc, 0xb2e9, 0x96bd, 0x96be, /*0xe0-0xe7*/
+ 0x96bf, 0xe8d1, 0x96c0, 0x96c1, 0xbced, 0x96c2, 0x96c3, 0xbfc2, /*0xe8-0xef*/
+ 0xe8cd, 0xd6f9, 0x96c4, 0xc1f8, 0xb2f1, 0x96c5, 0x96c6, 0x96c7, /*0xf0-0xf7*/
+ 0x96c8, 0x96c9, 0x96ca, 0x96cb, 0x96cc, 0xe8df, 0x96cd, 0xcac1, /*0xf8-0xff*/
+ /* 0x6800 */
+ 0xe8d9, 0x96ce, 0x96cf, 0x96d0, 0x96d1, 0xd5a4, 0x96d2, 0xb1ea, /*0x00-0x07*/
+ 0xd5bb, 0xe8ce, 0xe8d0, 0xb6b0, 0xe8d3, 0x96d3, 0xe8dd, 0xc0b8, /*0x08-0x0f*/
+ 0x96d4, 0xcaf7, 0x96d5, 0xcba8, 0x96d6, 0x96d7, 0xc6dc, 0xc0f5, /*0x10-0x17*/
+ 0x96d8, 0x96d9, 0x96da, 0x96db, 0x96dc, 0xe8e9, 0x96dd, 0x96de, /*0x18-0x1f*/
+ 0x96df, 0xd0a3, 0x96e0, 0x96e1, 0x96e2, 0x96e3, 0x96e4, 0x96e5, /*0x20-0x27*/
+ 0x96e6, 0xe8f2, 0xd6ea, 0x96e7, 0x96e8, 0x96e9, 0x96ea, 0x96eb, /*0x28-0x2f*/
+ 0x96ec, 0x96ed, 0xe8e0, 0xe8e1, 0x96ee, 0x96ef, 0x96f0, 0xd1f9, /*0x30-0x37*/
+ 0xbacb, 0xb8f9, 0x96f1, 0x96f2, 0xb8f1, 0xd4d4, 0xe8ef, 0x96f3, /*0x38-0x3f*/
+ 0xe8ee, 0xe8ec, 0xb9f0, 0xccd2, 0xe8e6, 0xcea6, 0xbff2, 0x96f4, /*0x40-0x47*/
+ 0xb0b8, 0xe8f1, 0xe8f0, 0x96f5, 0xd7c0, 0x96f6, 0xe8e4, 0x96f7, /*0x48-0x4f*/
+ 0xcda9, 0xc9a3, 0x96f8, 0xbbb8, 0xbddb, 0xe8ea, 0x96f9, 0x96fa, /*0x50-0x57*/
+ 0x96fb, 0x96fc, 0x96fd, 0x96fe, 0x9740, 0x9741, 0x9742, 0x9743, /*0x58-0x5f*/
+ 0xe8e2, 0xe8e3, 0xe8e5, 0xb5b5, 0xe8e7, 0xc7c5, 0xe8eb, 0xe8ed, /*0x60-0x67*/
+ 0xbdb0, 0xd7ae, 0x9744, 0xe8f8, 0x9745, 0x9746, 0x9747, 0x9748, /*0x68-0x6f*/
+ 0x9749, 0x974a, 0x974b, 0x974c, 0xe8f5, 0x974d, 0xcdb0, 0xe8f6, /*0x70-0x77*/
+ 0x974e, 0x974f, 0x9750, 0x9751, 0x9752, 0x9753, 0x9754, 0x9755, /*0x78-0x7f*/
+ 0x9756, 0xc1ba, 0x9757, 0xe8e8, 0x9758, 0xc3b7, 0xb0f0, 0x9759, /*0x80-0x87*/
+ 0x975a, 0x975b, 0x975c, 0x975d, 0x975e, 0x975f, 0x9760, 0xe8f4, /*0x88-0x8f*/
+ 0x9761, 0x9762, 0x9763, 0xe8f7, 0x9764, 0x9765, 0x9766, 0xb9a3, /*0x90-0x97*/
+ 0x9767, 0x9768, 0x9769, 0x976a, 0x976b, 0x976c, 0x976d, 0x976e, /*0x98-0x9f*/
+ 0x976f, 0x9770, 0xc9d2, 0x9771, 0x9772, 0x9773, 0xc3ce, 0xcee0, /*0xa0-0xa7*/
+ 0xc0e6, 0x9774, 0x9775, 0x9776, 0x9777, 0xcbf3, 0x9778, 0xccdd, /*0xa8-0xaf*/
+ 0xd0b5, 0x9779, 0x977a, 0xcae1, 0x977b, 0xe8f3, 0x977c, 0x977d, /*0xb0-0xb7*/
+ 0x977e, 0x9780, 0x9781, 0x9782, 0x9783, 0x9784, 0x9785, 0x9786, /*0xb8-0xbf*/
+ 0xbcec, 0x9787, 0xe8f9, 0x9788, 0x9789, 0x978a, 0x978b, 0x978c, /*0xc0-0xc7*/
+ 0x978d, 0xc3de, 0x978e, 0xc6e5, 0x978f, 0xb9f7, 0x9790, 0x9791, /*0xc8-0xcf*/
+ 0x9792, 0x9793, 0xb0f4, 0x9794, 0x9795, 0xd7d8, 0x9796, 0x9797, /*0xd0-0xd7*/
+ 0xbcac, 0x9798, 0xc5ef, 0x9799, 0x979a, 0x979b, 0x979c, 0x979d, /*0xd8-0xdf*/
+ 0xccc4, 0x979e, 0x979f, 0xe9a6, 0x97a0, 0x97a1, 0x97a2, 0x97a3, /*0xe0-0xe7*/
+ 0x97a4, 0x97a5, 0x97a6, 0x97a7, 0x97a8, 0x97a9, 0xc9ad, 0x97aa, /*0xe8-0xef*/
+ 0xe9a2, 0xc0e2, 0x97ab, 0x97ac, 0x97ad, 0xbfc3, 0x97ae, 0x97af, /*0xf0-0xf7*/
+ 0x97b0, 0xe8fe, 0xb9d7, 0x97b1, 0xe8fb, 0x97b2, 0x97b3, 0x97b4, /*0xf8-0xff*/
+ /* 0x6900 */
+ 0x97b5, 0xe9a4, 0x97b6, 0x97b7, 0x97b8, 0xd2ce, 0x97b9, 0x97ba, /*0x00-0x07*/
+ 0x97bb, 0x97bc, 0x97bd, 0xe9a3, 0x97be, 0xd6b2, 0xd7b5, 0x97bf, /*0x08-0x0f*/
+ 0xe9a7, 0x97c0, 0xbdb7, 0x97c1, 0x97c2, 0x97c3, 0x97c4, 0x97c5, /*0x10-0x17*/
+ 0x97c6, 0x97c7, 0x97c8, 0x97c9, 0x97ca, 0x97cb, 0x97cc, 0xe8fc, /*0x18-0x1f*/
+ 0xe8fd, 0x97cd, 0x97ce, 0x97cf, 0xe9a1, 0x97d0, 0x97d1, 0x97d2, /*0x20-0x27*/
+ 0x97d3, 0x97d4, 0x97d5, 0x97d6, 0x97d7, 0xcdd6, 0x97d8, 0x97d9, /*0x28-0x2f*/
+ 0xd2ac, 0x97da, 0x97db, 0x97dc, 0xe9b2, 0x97dd, 0x97de, 0x97df, /*0x30-0x37*/
+ 0x97e0, 0xe9a9, 0x97e1, 0x97e2, 0x97e3, 0xb4aa, 0x97e4, 0xb4bb, /*0x38-0x3f*/
+ 0x97e5, 0x97e6, 0xe9ab, 0x97e7, 0x97e8, 0x97e9, 0x97ea, 0x97eb, /*0x40-0x47*/
+ 0x97ec, 0x97ed, 0x97ee, 0x97ef, 0x97f0, 0x97f1, 0x97f2, 0x97f3, /*0x48-0x4f*/
+ 0x97f4, 0x97f5, 0x97f6, 0x97f7, 0xd0a8, 0x97f8, 0x97f9, 0xe9a5, /*0x50-0x57*/
+ 0x97fa, 0x97fb, 0xb3fe, 0x97fc, 0x97fd, 0xe9ac, 0xc0e3, 0x97fe, /*0x58-0x5f*/
+ 0xe9aa, 0x9840, 0x9841, 0xe9b9, 0x9842, 0x9843, 0xe9b8, 0x9844, /*0x60-0x67*/
+ 0x9845, 0x9846, 0x9847, 0xe9ae, 0x9848, 0x9849, 0xe8fa, 0x984a, /*0x68-0x6f*/
+ 0x984b, 0xe9a8, 0x984c, 0x984d, 0x984e, 0x984f, 0x9850, 0xbfac, /*0x70-0x77*/
+ 0xe9b1, 0xe9ba, 0x9851, 0x9852, 0xc2a5, 0x9853, 0x9854, 0x9855, /*0x78-0x7f*/
+ 0xe9af, 0x9856, 0xb8c5, 0x9857, 0xe9ad, 0x9858, 0xd3dc, 0xe9b4, /*0x80-0x87*/
+ 0xe9b5, 0xe9b7, 0x9859, 0x985a, 0x985b, 0xe9c7, 0x985c, 0x985d, /*0x88-0x8f*/
+ 0x985e, 0x985f, 0x9860, 0x9861, 0xc0c6, 0xe9c5, 0x9862, 0x9863, /*0x90-0x97*/
+ 0xe9b0, 0x9864, 0x9865, 0xe9bb, 0xb0f1, 0x9866, 0x9867, 0x9868, /*0x98-0x9f*/
+ 0x9869, 0x986a, 0x986b, 0x986c, 0x986d, 0x986e, 0x986f, 0xe9bc, /*0xa0-0xa7*/
+ 0xd5a5, 0x9870, 0x9871, 0xe9be, 0x9872, 0xe9bf, 0x9873, 0x9874, /*0xa8-0xaf*/
+ 0x9875, 0xe9c1, 0x9876, 0x9877, 0xc1f1, 0x9878, 0x9879, 0xc8b6, /*0xb0-0xb7*/
+ 0x987a, 0x987b, 0x987c, 0xe9bd, 0x987d, 0x987e, 0x9880, 0x9881, /*0xb8-0xbf*/
+ 0x9882, 0xe9c2, 0x9883, 0x9884, 0x9885, 0x9886, 0x9887, 0x9888, /*0xc0-0xc7*/
+ 0x9889, 0x988a, 0xe9c3, 0x988b, 0xe9b3, 0x988c, 0xe9b6, 0x988d, /*0xc8-0xcf*/
+ 0xbbb1, 0x988e, 0x988f, 0x9890, 0xe9c0, 0x9891, 0x9892, 0x9893, /*0xd0-0xd7*/
+ 0x9894, 0x9895, 0x9896, 0xbcf7, 0x9897, 0x9898, 0x9899, 0xe9c4, /*0xd8-0xdf*/
+ 0xe9c6, 0x989a, 0x989b, 0x989c, 0x989d, 0x989e, 0x989f, 0x98a0, /*0xe0-0xe7*/
+ 0x98a1, 0x98a2, 0x98a3, 0x98a4, 0x98a5, 0xe9ca, 0x98a6, 0x98a7, /*0xe8-0xef*/
+ 0x98a8, 0x98a9, 0xe9ce, 0x98aa, 0x98ab, 0x98ac, 0x98ad, 0x98ae, /*0xf0-0xf7*/
+ 0x98af, 0x98b0, 0x98b1, 0x98b2, 0x98b3, 0xb2db, 0x98b4, 0xe9c8, /*0xf8-0xff*/
+ /* 0x6a00 */
+ 0x98b5, 0x98b6, 0x98b7, 0x98b8, 0x98b9, 0x98ba, 0x98bb, 0x98bc, /*0x00-0x07*/
+ 0x98bd, 0x98be, 0xb7ae, 0x98bf, 0x98c0, 0x98c1, 0x98c2, 0x98c3, /*0x08-0x0f*/
+ 0x98c4, 0x98c5, 0x98c6, 0x98c7, 0x98c8, 0x98c9, 0x98ca, 0xe9cb, /*0x10-0x17*/
+ 0xe9cc, 0x98cb, 0x98cc, 0x98cd, 0x98ce, 0x98cf, 0x98d0, 0xd5c1, /*0x18-0x1f*/
+ 0x98d1, 0xc4a3, 0x98d2, 0x98d3, 0x98d4, 0x98d5, 0x98d6, 0x98d7, /*0x20-0x27*/
+ 0xe9d8, 0x98d8, 0xbae1, 0x98d9, 0x98da, 0x98db, 0x98dc, 0xe9c9, /*0x28-0x2f*/
+ 0x98dd, 0xd3a3, 0x98de, 0x98df, 0x98e0, 0xe9d4, 0x98e1, 0x98e2, /*0x30-0x37*/
+ 0x98e3, 0x98e4, 0x98e5, 0x98e6, 0x98e7, 0xe9d7, 0xe9d0, 0x98e8, /*0x38-0x3f*/
+ 0x98e9, 0x98ea, 0x98eb, 0x98ec, 0xe9cf, 0x98ed, 0x98ee, 0xc7c1, /*0x40-0x47*/
+ 0x98ef, 0x98f0, 0x98f1, 0x98f2, 0x98f3, 0x98f4, 0x98f5, 0x98f6, /*0x48-0x4f*/
+ 0xe9d2, 0x98f7, 0x98f8, 0x98f9, 0x98fa, 0x98fb, 0x98fc, 0x98fd, /*0x50-0x57*/
+ 0xe9d9, 0xb3c8, 0x98fe, 0xe9d3, 0x9940, 0x9941, 0x9942, 0x9943, /*0x58-0x5f*/
+ 0x9944, 0xcff0, 0x9945, 0x9946, 0x9947, 0xe9cd, 0x9948, 0x9949, /*0x60-0x67*/
+ 0x994a, 0x994b, 0x994c, 0x994d, 0x994e, 0x994f, 0x9950, 0x9951, /*0x68-0x6f*/
+ 0x9952, 0xb3f7, 0x9953, 0x9954, 0x9955, 0x9956, 0x9957, 0x9958, /*0x70-0x77*/
+ 0x9959, 0xe9d6, 0x995a, 0x995b, 0xe9da, 0x995c, 0x995d, 0x995e, /*0x78-0x7f*/
+ 0xccb4, 0x995f, 0x9960, 0x9961, 0xcfad, 0x9962, 0x9963, 0x9964, /*0x80-0x87*/
+ 0x9965, 0x9966, 0x9967, 0x9968, 0x9969, 0x996a, 0xe9d5, 0x996b, /*0x88-0x8f*/
+ 0xe9dc, 0xe9db, 0x996c, 0x996d, 0x996e, 0x996f, 0x9970, 0xe9de, /*0x90-0x97*/
+ 0x9971, 0x9972, 0x9973, 0x9974, 0x9975, 0x9976, 0x9977, 0x9978, /*0x98-0x9f*/
+ 0xe9d1, 0x9979, 0x997a, 0x997b, 0x997c, 0x997d, 0x997e, 0x9980, /*0xa0-0xa7*/
+ 0x9981, 0xe9dd, 0x9982, 0xe9df, 0xc3ca, 0x9983, 0x9984, 0x9985, /*0xa8-0xaf*/
+ 0x9986, 0x9987, 0x9988, 0x9989, 0x998a, 0x998b, 0x998c, 0x998d, /*0xb0-0xb7*/
+ 0x998e, 0x998f, 0x9990, 0x9991, 0x9992, 0x9993, 0x9994, 0x9995, /*0xb8-0xbf*/
+ 0x9996, 0x9997, 0x9998, 0x9999, 0x999a, 0x999b, 0x999c, 0x999d, /*0xc0-0xc7*/
+ 0x999e, 0x999f, 0x99a0, 0x99a1, 0x99a2, 0x99a3, 0x99a4, 0x99a5, /*0xc8-0xcf*/
+ 0x99a6, 0x99a7, 0x99a8, 0x99a9, 0x99aa, 0x99ab, 0x99ac, 0x99ad, /*0xd0-0xd7*/
+ 0x99ae, 0x99af, 0x99b0, 0x99b1, 0x99b2, 0x99b3, 0x99b4, 0x99b5, /*0xd8-0xdf*/
+ 0x99b6, 0x99b7, 0x99b8, 0x99b9, 0x99ba, 0x99bb, 0x99bc, 0x99bd, /*0xe0-0xe7*/
+ 0x99be, 0x99bf, 0x99c0, 0x99c1, 0x99c2, 0x99c3, 0x99c4, 0x99c5, /*0xe8-0xef*/
+ 0x99c6, 0x99c7, 0x99c8, 0x99c9, 0x99ca, 0x99cb, 0x99cc, 0x99cd, /*0xf0-0xf7*/
+ 0x99ce, 0x99cf, 0x99d0, 0x99d1, 0x99d2, 0x99d3, 0x99d4, 0x99d5, /*0xf8-0xff*/
+ /* 0x6b00 */
+ 0x99d6, 0x99d7, 0x99d8, 0x99d9, 0x99da, 0x99db, 0x99dc, 0x99dd, /*0x00-0x07*/
+ 0x99de, 0x99df, 0x99e0, 0x99e1, 0x99e2, 0x99e3, 0x99e4, 0x99e5, /*0x08-0x0f*/
+ 0x99e6, 0x99e7, 0x99e8, 0x99e9, 0x99ea, 0x99eb, 0x99ec, 0x99ed, /*0x10-0x17*/
+ 0x99ee, 0x99ef, 0x99f0, 0x99f1, 0x99f2, 0x99f3, 0x99f4, 0x99f5, /*0x18-0x1f*/
+ 0xc7b7, 0xb4ce, 0xbbb6, 0xd0c0, 0xeca3, 0x99f6, 0x99f7, 0xc5b7, /*0x20-0x27*/
+ 0x99f8, 0x99f9, 0x99fa, 0x99fb, 0x99fc, 0x99fd, 0x99fe, 0x9a40, /*0x28-0x2f*/
+ 0x9a41, 0x9a42, 0xd3fb, 0x9a43, 0x9a44, 0x9a45, 0x9a46, 0xeca4, /*0x30-0x37*/
+ 0x9a47, 0xeca5, 0xc6db, 0x9a48, 0x9a49, 0x9a4a, 0xbfee, 0x9a4b, /*0x38-0x3f*/
+ 0x9a4c, 0x9a4d, 0x9a4e, 0xeca6, 0x9a4f, 0x9a50, 0xeca7, 0xd0aa, /*0x40-0x47*/
+ 0x9a51, 0xc7b8, 0x9a52, 0x9a53, 0xb8e8, 0x9a54, 0x9a55, 0x9a56, /*0x48-0x4f*/
+ 0x9a57, 0x9a58, 0x9a59, 0x9a5a, 0x9a5b, 0x9a5c, 0x9a5d, 0x9a5e, /*0x50-0x57*/
+ 0x9a5f, 0xeca8, 0x9a60, 0x9a61, 0x9a62, 0x9a63, 0x9a64, 0x9a65, /*0x58-0x5f*/
+ 0x9a66, 0x9a67, 0xd6b9, 0xd5fd, 0xb4cb, 0xb2bd, 0xcee4, 0xc6e7, /*0x60-0x67*/
+ 0x9a68, 0x9a69, 0xcde1, 0x9a6a, 0x9a6b, 0x9a6c, 0x9a6d, 0x9a6e, /*0x68-0x6f*/
+ 0x9a6f, 0x9a70, 0x9a71, 0x9a72, 0x9a73, 0x9a74, 0x9a75, 0x9a76, /*0x70-0x77*/
+ 0x9a77, 0xb4f5, 0x9a78, 0xcbc0, 0xbcdf, 0x9a79, 0x9a7a, 0x9a7b, /*0x78-0x7f*/
+ 0x9a7c, 0xe9e2, 0xe9e3, 0xd1ea, 0xe9e5, 0x9a7d, 0xb4f9, 0xe9e4, /*0x80-0x87*/
+ 0x9a7e, 0xd1b3, 0xcae2, 0xb2d0, 0x9a80, 0xe9e8, 0x9a81, 0x9a82, /*0x88-0x8f*/
+ 0x9a83, 0x9a84, 0xe9e6, 0xe9e7, 0x9a85, 0x9a86, 0xd6b3, 0x9a87, /*0x90-0x97*/
+ 0x9a88, 0x9a89, 0xe9e9, 0xe9ea, 0x9a8a, 0x9a8b, 0x9a8c, 0x9a8d, /*0x98-0x9f*/
+ 0x9a8e, 0xe9eb, 0x9a8f, 0x9a90, 0x9a91, 0x9a92, 0x9a93, 0x9a94, /*0xa0-0xa7*/
+ 0x9a95, 0x9a96, 0xe9ec, 0x9a97, 0x9a98, 0x9a99, 0x9a9a, 0x9a9b, /*0xa8-0xaf*/
+ 0x9a9c, 0x9a9d, 0x9a9e, 0xecaf, 0xc5b9, 0xb6ce, 0x9a9f, 0xd2f3, /*0xb0-0xb7*/
+ 0x9aa0, 0x9aa1, 0x9aa2, 0x9aa3, 0x9aa4, 0x9aa5, 0x9aa6, 0xb5ee, /*0xb8-0xbf*/
+ 0x9aa7, 0xbbd9, 0xecb1, 0x9aa8, 0x9aa9, 0xd2e3, 0x9aaa, 0x9aab, /*0xc0-0xc7*/
+ 0x9aac, 0x9aad, 0x9aae, 0xcee3, 0x9aaf, 0xc4b8, 0x9ab0, 0xc3bf, /*0xc8-0xcf*/
+ 0x9ab1, 0x9ab2, 0xb6be, 0xd8b9, 0xb1c8, 0xb1cf, 0xb1d1, 0xc5fe, /*0xd0-0xd7*/
+ 0x9ab3, 0xb1d0, 0x9ab4, 0xc3ab, 0x9ab5, 0x9ab6, 0x9ab7, 0x9ab8, /*0xd8-0xdf*/
+ 0x9ab9, 0xd5b1, 0x9aba, 0x9abb, 0x9abc, 0x9abd, 0x9abe, 0x9abf, /*0xe0-0xe7*/
+ 0x9ac0, 0x9ac1, 0xeba4, 0xbac1, 0x9ac2, 0x9ac3, 0x9ac4, 0xccba, /*0xe8-0xef*/
+ 0x9ac5, 0x9ac6, 0x9ac7, 0xeba5, 0x9ac8, 0xeba7, 0x9ac9, 0x9aca, /*0xf0-0xf7*/
+ 0x9acb, 0xeba8, 0x9acc, 0x9acd, 0x9ace, 0xeba6, 0x9acf, 0x9ad0, /*0xf8-0xff*/
+ /* 0x6c00 */
+ 0x9ad1, 0x9ad2, 0x9ad3, 0x9ad4, 0x9ad5, 0xeba9, 0xebab, 0xebaa, /*0x00-0x07*/
+ 0x9ad6, 0x9ad7, 0x9ad8, 0x9ad9, 0x9ada, 0xebac, 0x9adb, 0xcacf, /*0x08-0x0f*/
+ 0xd8b5, 0xc3f1, 0x9adc, 0xc3a5, 0xc6f8, 0xebad, 0xc4ca, 0x9add, /*0x10-0x17*/
+ 0xebae, 0xebaf, 0xebb0, 0xb7d5, 0x9ade, 0x9adf, 0x9ae0, 0xb7fa, /*0x18-0x1f*/
+ 0x9ae1, 0xebb1, 0xc7e2, 0x9ae2, 0xebb3, 0x9ae3, 0xbaa4, 0xd1f5, /*0x20-0x27*/
+ 0xb0b1, 0xebb2, 0xebb4, 0x9ae4, 0x9ae5, 0x9ae6, 0xb5aa, 0xc2c8, /*0x28-0x2f*/
+ 0xc7e8, 0x9ae7, 0xebb5, 0x9ae8, 0xcbae, 0xe3df, 0x9ae9, 0x9aea, /*0x30-0x37*/
+ 0xd3c0, 0x9aeb, 0x9aec, 0x9aed, 0x9aee, 0xd9db, 0x9aef, 0x9af0, /*0x38-0x3f*/
+ 0xcda1, 0xd6ad, 0xc7f3, 0x9af1, 0x9af2, 0x9af3, 0xd9e0, 0xbbe3, /*0x40-0x47*/
+ 0x9af4, 0xbaba, 0xe3e2, 0x9af5, 0x9af6, 0x9af7, 0x9af8, 0x9af9, /*0x48-0x4f*/
+ 0xcfab, 0x9afa, 0x9afb, 0x9afc, 0xe3e0, 0xc9c7, 0x9afd, 0xbab9, /*0x50-0x57*/
+ 0x9afe, 0x9b40, 0x9b41, 0xd1b4, 0xe3e1, 0xc8ea, 0xb9af, 0xbdad, /*0x58-0x5f*/
+ 0xb3d8, 0xcedb, 0x9b42, 0x9b43, 0xccc0, 0x9b44, 0x9b45, 0x9b46, /*0x60-0x67*/
+ 0xe3e8, 0xe3e9, 0xcdf4, 0x9b47, 0x9b48, 0x9b49, 0x9b4a, 0x9b4b, /*0x68-0x6f*/
+ 0xccad, 0x9b4c, 0xbcb3, 0x9b4d, 0xe3ea, 0x9b4e, 0xe3eb, 0x9b4f, /*0x70-0x77*/
+ 0x9b50, 0xd0da, 0x9b51, 0x9b52, 0x9b53, 0xc6fb, 0xb7da, 0x9b54, /*0x78-0x7f*/
+ 0x9b55, 0xc7df, 0xd2ca, 0xced6, 0x9b56, 0xe3e4, 0xe3ec, 0x9b57, /*0x80-0x87*/
+ 0xc9f2, 0xb3c1, 0x9b58, 0x9b59, 0xe3e7, 0x9b5a, 0x9b5b, 0xc6e3, /*0x88-0x8f*/
+ 0xe3e5, 0x9b5c, 0x9b5d, 0xedb3, 0xe3e6, 0x9b5e, 0x9b5f, 0x9b60, /*0x90-0x97*/
+ 0x9b61, 0xc9b3, 0x9b62, 0xc5e6, 0x9b63, 0x9b64, 0x9b65, 0xb9b5, /*0x98-0x9f*/
+ 0x9b66, 0xc3bb, 0x9b67, 0xe3e3, 0xc5bd, 0xc1a4, 0xc2d9, 0xb2d7, /*0xa0-0xa7*/
+ 0x9b68, 0xe3ed, 0xbba6, 0xc4ad, 0x9b69, 0xe3f0, 0xbeda, 0x9b6a, /*0xa8-0xaf*/
+ 0x9b6b, 0xe3fb, 0xe3f5, 0xbad3, 0x9b6c, 0x9b6d, 0x9b6e, 0x9b6f, /*0xb0-0xb7*/
+ 0xb7d0, 0xd3cd, 0x9b70, 0xd6ce, 0xd5d3, 0xb9c1, 0xd5b4, 0xd1d8, /*0xb8-0xbf*/
+ 0x9b71, 0x9b72, 0x9b73, 0x9b74, 0xd0b9, 0xc7f6, 0x9b75, 0x9b76, /*0xc0-0xc7*/
+ 0x9b77, 0xc8aa, 0xb2b4, 0x9b78, 0xc3da, 0x9b79, 0x9b7a, 0x9b7b, /*0xc8-0xcf*/
+ 0xe3ee, 0x9b7c, 0x9b7d, 0xe3fc, 0xe3ef, 0xb7a8, 0xe3f7, 0xe3f4, /*0xd0-0xd7*/
+ 0x9b7e, 0x9b80, 0x9b81, 0xb7ba, 0x9b82, 0x9b83, 0xc5a2, 0x9b84, /*0xd8-0xdf*/
+ 0xe3f6, 0xc5dd, 0xb2a8, 0xc6fc, 0x9b85, 0xc4e0, 0x9b86, 0x9b87, /*0xe0-0xe7*/
+ 0xd7a2, 0x9b88, 0xc0e1, 0xe3f9, 0x9b89, 0x9b8a, 0xe3fa, 0xe3fd, /*0xe8-0xef*/
+ 0xcca9, 0xe3f3, 0x9b8b, 0xd3be, 0x9b8c, 0xb1c3, 0xedb4, 0xe3f1, /*0xf0-0xf7*/
+ 0xe3f2, 0x9b8d, 0xe3f8, 0xd0ba, 0xc6c3, 0xd4f3, 0xe3fe, 0x9b8e, /*0xf8-0xff*/
+ /* 0x6d00 */
+ 0x9b8f, 0xbde0, 0x9b90, 0x9b91, 0xe4a7, 0x9b92, 0x9b93, 0xe4a6, /*0x00-0x07*/
+ 0x9b94, 0x9b95, 0x9b96, 0xd1f3, 0xe4a3, 0x9b97, 0xe4a9, 0x9b98, /*0x08-0x0f*/
+ 0x9b99, 0x9b9a, 0xc8f7, 0x9b9b, 0x9b9c, 0x9b9d, 0x9b9e, 0xcfb4, /*0x10-0x17*/
+ 0x9b9f, 0xe4a8, 0xe4ae, 0xc2e5, 0x9ba0, 0x9ba1, 0xb6b4, 0x9ba2, /*0x18-0x1f*/
+ 0x9ba3, 0x9ba4, 0x9ba5, 0x9ba6, 0x9ba7, 0xbdf2, 0x9ba8, 0xe4a2, /*0x20-0x27*/
+ 0x9ba9, 0x9baa, 0xbae9, 0xe4aa, 0x9bab, 0x9bac, 0xe4ac, 0x9bad, /*0x28-0x2f*/
+ 0x9bae, 0xb6fd, 0xd6de, 0xe4b2, 0x9baf, 0xe4ad, 0x9bb0, 0x9bb1, /*0x30-0x37*/
+ 0x9bb2, 0xe4a1, 0x9bb3, 0xbbee, 0xcddd, 0xc7a2, 0xc5c9, 0x9bb4, /*0x38-0x3f*/
+ 0x9bb5, 0xc1f7, 0x9bb6, 0xe4a4, 0x9bb7, 0xc7b3, 0xbdac, 0xbdbd, /*0x40-0x47*/
+ 0xe4a5, 0x9bb8, 0xd7c7, 0xb2e2, 0x9bb9, 0xe4ab, 0xbcc3, 0xe4af, /*0x48-0x4f*/
+ 0x9bba, 0xbbeb, 0xe4b0, 0xc5a8, 0xe4b1, 0x9bbb, 0x9bbc, 0x9bbd, /*0x50-0x57*/
+ 0x9bbe, 0xd5e3, 0xbfa3, 0x9bbf, 0xe4ba, 0x9bc0, 0xe4b7, 0x9bc1, /*0x58-0x5f*/
+ 0xe4bb, 0x9bc2, 0x9bc3, 0xe4bd, 0x9bc4, 0x9bc5, 0xc6d6, 0x9bc6, /*0x60-0x67*/
+ 0x9bc7, 0xbac6, 0xc0cb, 0x9bc8, 0x9bc9, 0x9bca, 0xb8a1, 0xe4b4, /*0x68-0x6f*/
+ 0x9bcb, 0x9bcc, 0x9bcd, 0x9bce, 0xd4a1, 0x9bcf, 0x9bd0, 0xbaa3, /*0x70-0x77*/
+ 0xbdfe, 0x9bd1, 0x9bd2, 0x9bd3, 0xe4bc, 0x9bd4, 0x9bd5, 0x9bd6, /*0x78-0x7f*/
+ 0x9bd7, 0x9bd8, 0xcdbf, 0x9bd9, 0x9bda, 0xc4f9, 0x9bdb, 0x9bdc, /*0x80-0x87*/
+ 0xcffb, 0xc9e6, 0x9bdd, 0x9bde, 0xd3bf, 0x9bdf, 0xcfd1, 0x9be0, /*0x88-0x8f*/
+ 0x9be1, 0xe4b3, 0x9be2, 0xe4b8, 0xe4b9, 0xcce9, 0x9be3, 0x9be4, /*0x90-0x97*/
+ 0x9be5, 0x9be6, 0x9be7, 0xccce, 0x9be8, 0xc0d4, 0xe4b5, 0xc1b0, /*0x98-0x9f*/
+ 0xe4b6, 0xced0, 0x9be9, 0xbbc1, 0xb5d3, 0x9bea, 0xc8f3, 0xbda7, /*0xa0-0xa7*/
+ 0xd5c7, 0xc9ac, 0xb8a2, 0xe4ca, 0x9beb, 0x9bec, 0xe4cc, 0xd1c4, /*0xa8-0xaf*/
+ 0x9bed, 0x9bee, 0xd2ba, 0x9bef, 0x9bf0, 0xbaad, 0x9bf1, 0x9bf2, /*0xb0-0xb7*/
+ 0xbad4, 0x9bf3, 0x9bf4, 0x9bf5, 0x9bf6, 0x9bf7, 0x9bf8, 0xe4c3, /*0xb8-0xbf*/
+ 0xb5ed, 0x9bf9, 0x9bfa, 0x9bfb, 0xd7cd, 0xe4c0, 0xcffd, 0xe4bf, /*0xc0-0xc7*/
+ 0x9bfc, 0x9bfd, 0x9bfe, 0xc1dc, 0xccca, 0x9c40, 0x9c41, 0x9c42, /*0xc8-0xcf*/
+ 0x9c43, 0xcae7, 0x9c44, 0x9c45, 0x9c46, 0x9c47, 0xc4d7, 0x9c48, /*0xd0-0xd7*/
+ 0xccd4, 0xe4c8, 0x9c49, 0x9c4a, 0x9c4b, 0xe4c7, 0xe4c1, 0x9c4c, /*0xd8-0xdf*/
+ 0xe4c4, 0xb5ad, 0x9c4d, 0x9c4e, 0xd3d9, 0x9c4f, 0xe4c6, 0x9c50, /*0xe0-0xe7*/
+ 0x9c51, 0x9c52, 0x9c53, 0xd2f9, 0xb4e3, 0x9c54, 0xbbb4, 0x9c55, /*0xe8-0xef*/
+ 0x9c56, 0xc9ee, 0x9c57, 0xb4be, 0x9c58, 0x9c59, 0x9c5a, 0xbbec, /*0xf0-0xf7*/
+ 0x9c5b, 0xd1cd, 0x9c5c, 0xcced, 0xedb5, 0x9c5d, 0x9c5e, 0x9c5f, /*0xf8-0xff*/
+ /* 0x6e00 */
+ 0x9c60, 0x9c61, 0x9c62, 0x9c63, 0x9c64, 0xc7e5, 0x9c65, 0x9c66, /*0x00-0x07*/
+ 0x9c67, 0x9c68, 0xd4a8, 0x9c69, 0xe4cb, 0xd7d5, 0xe4c2, 0x9c6a, /*0x08-0x0f*/
+ 0xbda5, 0xe4c5, 0x9c6b, 0x9c6c, 0xd3e6, 0x9c6d, 0xe4c9, 0xc9f8, /*0x10-0x17*/
+ 0x9c6e, 0x9c6f, 0xe4be, 0x9c70, 0x9c71, 0xd3e5, 0x9c72, 0x9c73, /*0x18-0x1f*/
+ 0xc7fe, 0xb6c9, 0x9c74, 0xd4fc, 0xb2b3, 0xe4d7, 0x9c75, 0x9c76, /*0x20-0x27*/
+ 0x9c77, 0xcec2, 0x9c78, 0xe4cd, 0x9c79, 0xcebc, 0x9c7a, 0xb8db, /*0x28-0x2f*/
+ 0x9c7b, 0x9c7c, 0xe4d6, 0x9c7d, 0xbfca, 0x9c7e, 0x9c80, 0x9c81, /*0x30-0x37*/
+ 0xd3ce, 0x9c82, 0xc3ec, 0x9c83, 0x9c84, 0x9c85, 0x9c86, 0x9c87, /*0x38-0x3f*/
+ 0x9c88, 0x9c89, 0x9c8a, 0xc5c8, 0xe4d8, 0x9c8b, 0x9c8c, 0x9c8d, /*0x40-0x47*/
+ 0x9c8e, 0x9c8f, 0x9c90, 0x9c91, 0x9c92, 0xcdc4, 0xe4cf, 0x9c93, /*0x48-0x4f*/
+ 0x9c94, 0x9c95, 0x9c96, 0xe4d4, 0xe4d5, 0x9c97, 0xbafe, 0x9c98, /*0x50-0x57*/
+ 0xcfe6, 0x9c99, 0x9c9a, 0xd5bf, 0x9c9b, 0x9c9c, 0x9c9d, 0xe4d2, /*0x58-0x5f*/
+ 0x9c9e, 0x9c9f, 0x9ca0, 0x9ca1, 0x9ca2, 0x9ca3, 0x9ca4, 0x9ca5, /*0x60-0x67*/
+ 0x9ca6, 0x9ca7, 0x9ca8, 0xe4d0, 0x9ca9, 0x9caa, 0xe4ce, 0x9cab, /*0x68-0x6f*/
+ 0x9cac, 0x9cad, 0x9cae, 0x9caf, 0x9cb0, 0x9cb1, 0x9cb2, 0x9cb3, /*0x70-0x77*/
+ 0x9cb4, 0x9cb5, 0x9cb6, 0x9cb7, 0x9cb8, 0x9cb9, 0xcde5, 0xcaaa, /*0x78-0x7f*/
+ 0x9cba, 0x9cbb, 0x9cbc, 0xc0a3, 0x9cbd, 0xbda6, 0xe4d3, 0x9cbe, /*0x80-0x87*/
+ 0x9cbf, 0xb8c8, 0x9cc0, 0x9cc1, 0x9cc2, 0x9cc3, 0x9cc4, 0xe4e7, /*0x88-0x8f*/
+ 0xd4b4, 0x9cc5, 0x9cc6, 0x9cc7, 0x9cc8, 0x9cc9, 0x9cca, 0x9ccb, /*0x90-0x97*/
+ 0xe4db, 0x9ccc, 0x9ccd, 0x9cce, 0xc1ef, 0x9ccf, 0x9cd0, 0xe4e9, /*0x98-0x9f*/
+ 0x9cd1, 0x9cd2, 0xd2e7, 0x9cd3, 0x9cd4, 0xe4df, 0x9cd5, 0xe4e0, /*0xa0-0xa7*/
+ 0x9cd6, 0x9cd7, 0xcfaa, 0x9cd8, 0x9cd9, 0x9cda, 0x9cdb, 0xcbdd, /*0xa8-0xaf*/
+ 0x9cdc, 0xe4da, 0xe4d1, 0x9cdd, 0xe4e5, 0x9cde, 0xc8dc, 0xe4e3, /*0xb0-0xb7*/
+ 0x9cdf, 0x9ce0, 0xc4e7, 0xe4e2, 0x9ce1, 0xe4e1, 0x9ce2, 0x9ce3, /*0xb8-0xbf*/
+ 0x9ce4, 0xb3fc, 0xe4e8, 0x9ce5, 0x9ce6, 0x9ce7, 0x9ce8, 0xb5e1, /*0xc0-0xc7*/
+ 0x9ce9, 0x9cea, 0x9ceb, 0xd7cc, 0x9cec, 0x9ced, 0x9cee, 0xe4e6, /*0xc8-0xcf*/
+ 0x9cef, 0xbbac, 0x9cf0, 0xd7d2, 0xcccf, 0xebf8, 0x9cf1, 0xe4e4, /*0xd0-0xd7*/
+ 0x9cf2, 0x9cf3, 0xb9f6, 0x9cf4, 0x9cf5, 0x9cf6, 0xd6cd, 0xe4d9, /*0xd8-0xdf*/
+ 0xe4dc, 0xc2fa, 0xe4de, 0x9cf7, 0xc2cb, 0xc0c4, 0xc2d0, 0x9cf8, /*0xe0-0xe7*/
+ 0xb1f5, 0xccb2, 0x9cf9, 0x9cfa, 0x9cfb, 0x9cfc, 0x9cfd, 0x9cfe, /*0xe8-0xef*/
+ 0x9d40, 0x9d41, 0x9d42, 0x9d43, 0xb5ce, 0x9d44, 0x9d45, 0x9d46, /*0xf0-0xf7*/
+ 0x9d47, 0xe4ef, 0x9d48, 0x9d49, 0x9d4a, 0x9d4b, 0x9d4c, 0x9d4d, /*0xf8-0xff*/
+ /* 0x6f00 */
+ 0x9d4e, 0x9d4f, 0xc6af, 0x9d50, 0x9d51, 0x9d52, 0xc6e1, 0x9d53, /*0x00-0x07*/
+ 0x9d54, 0xe4f5, 0x9d55, 0x9d56, 0x9d57, 0x9d58, 0x9d59, 0xc2a9, /*0x08-0x0f*/
+ 0x9d5a, 0x9d5b, 0x9d5c, 0xc0ec, 0xd1dd, 0xe4ee, 0x9d5d, 0x9d5e, /*0x10-0x17*/
+ 0x9d5f, 0x9d60, 0x9d61, 0x9d62, 0x9d63, 0x9d64, 0x9d65, 0x9d66, /*0x18-0x1f*/
+ 0xc4ae, 0x9d67, 0x9d68, 0x9d69, 0xe4ed, 0x9d6a, 0x9d6b, 0x9d6c, /*0x20-0x27*/
+ 0x9d6d, 0xe4f6, 0xe4f4, 0xc2fe, 0x9d6e, 0xe4dd, 0x9d6f, 0xe4f0, /*0x28-0x2f*/
+ 0x9d70, 0xcafe, 0x9d71, 0xd5c4, 0x9d72, 0x9d73, 0xe4f1, 0x9d74, /*0x30-0x37*/
+ 0x9d75, 0x9d76, 0x9d77, 0x9d78, 0x9d79, 0x9d7a, 0xd1fa, 0x9d7b, /*0x38-0x3f*/
+ 0x9d7c, 0x9d7d, 0x9d7e, 0x9d80, 0x9d81, 0x9d82, 0xe4eb, 0xe4ec, /*0x40-0x47*/
+ 0x9d83, 0x9d84, 0x9d85, 0xe4f2, 0x9d86, 0xceab, 0x9d87, 0x9d88, /*0x48-0x4f*/
+ 0x9d89, 0x9d8a, 0x9d8b, 0x9d8c, 0x9d8d, 0x9d8e, 0x9d8f, 0x9d90, /*0x50-0x57*/
+ 0xc5cb, 0x9d91, 0x9d92, 0x9d93, 0xc7b1, 0x9d94, 0xc2ba, 0x9d95, /*0x58-0x5f*/
+ 0x9d96, 0x9d97, 0xe4ea, 0x9d98, 0x9d99, 0x9d9a, 0xc1ca, 0x9d9b, /*0x60-0x67*/
+ 0x9d9c, 0x9d9d, 0x9d9e, 0x9d9f, 0x9da0, 0xccb6, 0xb3b1, 0x9da1, /*0x68-0x6f*/
+ 0x9da2, 0x9da3, 0xe4fb, 0x9da4, 0xe4f3, 0x9da5, 0x9da6, 0x9da7, /*0x70-0x77*/
+ 0xe4fa, 0x9da8, 0xe4fd, 0x9da9, 0xe4fc, 0x9daa, 0x9dab, 0x9dac, /*0x78-0x7f*/
+ 0x9dad, 0x9dae, 0x9daf, 0x9db0, 0xb3ce, 0x9db1, 0x9db2, 0x9db3, /*0x80-0x87*/
+ 0xb3ba, 0xe4f7, 0x9db4, 0x9db5, 0xe4f9, 0xe4f8, 0xc5ec, 0x9db6, /*0x88-0x8f*/
+ 0x9db7, 0x9db8, 0x9db9, 0x9dba, 0x9dbb, 0x9dbc, 0x9dbd, 0x9dbe, /*0x90-0x97*/
+ 0x9dbf, 0x9dc0, 0x9dc1, 0x9dc2, 0xc0bd, 0x9dc3, 0x9dc4, 0x9dc5, /*0x98-0x9f*/
+ 0x9dc6, 0xd4e8, 0x9dc7, 0x9dc8, 0x9dc9, 0x9dca, 0x9dcb, 0xe5a2, /*0xa0-0xa7*/
+ 0x9dcc, 0x9dcd, 0x9dce, 0x9dcf, 0x9dd0, 0x9dd1, 0x9dd2, 0x9dd3, /*0xa8-0xaf*/
+ 0x9dd4, 0x9dd5, 0x9dd6, 0xb0c4, 0x9dd7, 0x9dd8, 0xe5a4, 0x9dd9, /*0xb0-0xb7*/
+ 0x9dda, 0xe5a3, 0x9ddb, 0x9ddc, 0x9ddd, 0x9dde, 0x9ddf, 0x9de0, /*0xb8-0xbf*/
+ 0xbca4, 0x9de1, 0xe5a5, 0x9de2, 0x9de3, 0x9de4, 0x9de5, 0x9de6, /*0xc0-0xc7*/
+ 0x9de7, 0xe5a1, 0x9de8, 0x9de9, 0x9dea, 0x9deb, 0x9dec, 0x9ded, /*0xc8-0xcf*/
+ 0x9dee, 0xe4fe, 0xb1f4, 0x9def, 0x9df0, 0x9df1, 0x9df2, 0x9df3, /*0xd0-0xd7*/
+ 0x9df4, 0x9df5, 0x9df6, 0x9df7, 0x9df8, 0x9df9, 0xe5a8, 0x9dfa, /*0xd8-0xdf*/
+ 0xe5a9, 0xe5a6, 0x9dfb, 0x9dfc, 0x9dfd, 0x9dfe, 0x9e40, 0x9e41, /*0xe0-0xe7*/
+ 0x9e42, 0x9e43, 0x9e44, 0x9e45, 0x9e46, 0x9e47, 0xe5a7, 0xe5aa, /*0xe8-0xef*/
+ 0x9e48, 0x9e49, 0x9e4a, 0x9e4b, 0x9e4c, 0x9e4d, 0x9e4e, 0x9e4f, /*0xf0-0xf7*/
+ 0x9e50, 0x9e51, 0x9e52, 0x9e53, 0x9e54, 0x9e55, 0x9e56, 0x9e57, /*0xf8-0xff*/
+ /* 0x7000 */
+ 0x9e58, 0x9e59, 0x9e5a, 0x9e5b, 0x9e5c, 0x9e5d, 0x9e5e, 0x9e5f, /*0x00-0x07*/
+ 0x9e60, 0x9e61, 0x9e62, 0x9e63, 0x9e64, 0x9e65, 0x9e66, 0x9e67, /*0x08-0x0f*/
+ 0x9e68, 0xc6d9, 0x9e69, 0x9e6a, 0x9e6b, 0x9e6c, 0x9e6d, 0x9e6e, /*0x10-0x17*/
+ 0x9e6f, 0x9e70, 0xe5ab, 0xe5ad, 0x9e71, 0x9e72, 0x9e73, 0x9e74, /*0x18-0x1f*/
+ 0x9e75, 0x9e76, 0x9e77, 0xe5ac, 0x9e78, 0x9e79, 0x9e7a, 0x9e7b, /*0x20-0x27*/
+ 0x9e7c, 0x9e7d, 0x9e7e, 0x9e80, 0x9e81, 0x9e82, 0x9e83, 0x9e84, /*0x28-0x2f*/
+ 0x9e85, 0x9e86, 0x9e87, 0x9e88, 0x9e89, 0xe5af, 0x9e8a, 0x9e8b, /*0x30-0x37*/
+ 0x9e8c, 0xe5ae, 0x9e8d, 0x9e8e, 0x9e8f, 0x9e90, 0x9e91, 0x9e92, /*0x38-0x3f*/
+ 0x9e93, 0x9e94, 0x9e95, 0x9e96, 0x9e97, 0x9e98, 0x9e99, 0x9e9a, /*0x40-0x47*/
+ 0x9e9b, 0x9e9c, 0x9e9d, 0x9e9e, 0xb9e0, 0x9e9f, 0x9ea0, 0xe5b0, /*0x48-0x4f*/
+ 0x9ea1, 0x9ea2, 0x9ea3, 0x9ea4, 0x9ea5, 0x9ea6, 0x9ea7, 0x9ea8, /*0x50-0x57*/
+ 0x9ea9, 0x9eaa, 0x9eab, 0x9eac, 0x9ead, 0x9eae, 0xe5b1, 0x9eaf, /*0x58-0x5f*/
+ 0x9eb0, 0x9eb1, 0x9eb2, 0x9eb3, 0x9eb4, 0x9eb5, 0x9eb6, 0x9eb7, /*0x60-0x67*/
+ 0x9eb8, 0x9eb9, 0x9eba, 0xbbf0, 0xece1, 0xc3f0, 0x9ebb, 0xb5c6, /*0x68-0x6f*/
+ 0xbbd2, 0x9ebc, 0x9ebd, 0x9ebe, 0x9ebf, 0xc1e9, 0xd4ee, 0x9ec0, /*0x70-0x77*/
+ 0xbec4, 0x9ec1, 0x9ec2, 0x9ec3, 0xd7c6, 0x9ec4, 0xd4d6, 0xb2d3, /*0x78-0x7f*/
+ 0xecbe, 0x9ec5, 0x9ec6, 0x9ec7, 0x9ec8, 0xeac1, 0x9ec9, 0x9eca, /*0x80-0x87*/
+ 0x9ecb, 0xc2af, 0xb4b6, 0x9ecc, 0x9ecd, 0x9ece, 0xd1d7, 0x9ecf, /*0x88-0x8f*/
+ 0x9ed0, 0x9ed1, 0xb3b4, 0x9ed2, 0xc8b2, 0xbfbb, 0xecc0, 0x9ed3, /*0x90-0x97*/
+ 0x9ed4, 0xd6cb, 0x9ed5, 0x9ed6, 0xecbf, 0xecc1, 0x9ed7, 0x9ed8, /*0x98-0x9f*/
+ 0x9ed9, 0x9eda, 0x9edb, 0x9edc, 0x9edd, 0x9ede, 0x9edf, 0x9ee0, /*0xa0-0xa7*/
+ 0x9ee1, 0x9ee2, 0x9ee3, 0xecc5, 0xbee6, 0xccbf, 0xc5da, 0xbebc, /*0xa8-0xaf*/
+ 0x9ee4, 0xecc6, 0x9ee5, 0xb1fe, 0x9ee6, 0x9ee7, 0x9ee8, 0xecc4, /*0xb0-0xb7*/
+ 0xd5a8, 0xb5e3, 0x9ee9, 0xecc2, 0xc1b6, 0xb3e3, 0x9eea, 0x9eeb, /*0xb8-0xbf*/
+ 0xecc3, 0xcbb8, 0xc0c3, 0xccfe, 0x9eec, 0x9eed, 0x9eee, 0x9eef, /*0xc0-0xc7*/
+ 0xc1d2, 0x9ef0, 0xecc8, 0x9ef1, 0x9ef2, 0x9ef3, 0x9ef4, 0x9ef5, /*0xc8-0xcf*/
+ 0x9ef6, 0x9ef7, 0x9ef8, 0x9ef9, 0x9efa, 0x9efb, 0x9efc, 0x9efd, /*0xd0-0xd7*/
+ 0xbae6, 0xc0d3, 0x9efe, 0xd6f2, 0x9f40, 0x9f41, 0x9f42, 0xd1cc, /*0xd8-0xdf*/
+ 0x9f43, 0x9f44, 0x9f45, 0x9f46, 0xbfbe, 0x9f47, 0xb7b3, 0xc9d5, /*0xe0-0xe7*/
+ 0xecc7, 0xbbe2, 0x9f48, 0xcccc, 0xbdfd, 0xc8c8, 0x9f49, 0xcfa9, /*0xe8-0xef*/
+ 0x9f4a, 0x9f4b, 0x9f4c, 0x9f4d, 0x9f4e, 0x9f4f, 0x9f50, 0xcde9, /*0xf0-0xf7*/
+ 0x9f51, 0xc5eb, 0x9f52, 0x9f53, 0x9f54, 0xb7e9, 0x9f55, 0x9f56, /*0xf8-0xff*/
+ /* 0x7100 */
+ 0x9f57, 0x9f58, 0x9f59, 0x9f5a, 0x9f5b, 0x9f5c, 0x9f5d, 0x9f5e, /*0x00-0x07*/
+ 0x9f5f, 0xd1c9, 0xbab8, 0x9f60, 0x9f61, 0x9f62, 0x9f63, 0x9f64, /*0x08-0x0f*/
+ 0xecc9, 0x9f65, 0x9f66, 0xecca, 0x9f67, 0xbbc0, 0xeccb, 0x9f68, /*0x10-0x17*/
+ 0xece2, 0xb1ba, 0xb7d9, 0x9f69, 0x9f6a, 0x9f6b, 0x9f6c, 0x9f6d, /*0x18-0x1f*/
+ 0x9f6e, 0x9f6f, 0x9f70, 0x9f71, 0x9f72, 0x9f73, 0xbdb9, 0x9f74, /*0x20-0x27*/
+ 0x9f75, 0x9f76, 0x9f77, 0x9f78, 0x9f79, 0x9f7a, 0x9f7b, 0xeccc, /*0x28-0x2f*/
+ 0xd1e6, 0xeccd, 0x9f7c, 0x9f7d, 0x9f7e, 0x9f80, 0xc8bb, 0x9f81, /*0x30-0x37*/
+ 0x9f82, 0x9f83, 0x9f84, 0x9f85, 0x9f86, 0x9f87, 0x9f88, 0x9f89, /*0x38-0x3f*/
+ 0x9f8a, 0x9f8b, 0x9f8c, 0x9f8d, 0x9f8e, 0xecd1, 0x9f8f, 0x9f90, /*0x40-0x47*/
+ 0x9f91, 0x9f92, 0xecd3, 0x9f93, 0xbbcd, 0x9f94, 0xbce5, 0x9f95, /*0x48-0x4f*/
+ 0x9f96, 0x9f97, 0x9f98, 0x9f99, 0x9f9a, 0x9f9b, 0x9f9c, 0x9f9d, /*0x50-0x57*/
+ 0x9f9e, 0x9f9f, 0x9fa0, 0x9fa1, 0xeccf, 0x9fa2, 0xc9b7, 0x9fa3, /*0x58-0x5f*/
+ 0x9fa4, 0x9fa5, 0x9fa6, 0x9fa7, 0xc3ba, 0x9fa8, 0xece3, 0xd5d5, /*0x60-0x67*/
+ 0xecd0, 0x9fa9, 0x9faa, 0x9fab, 0x9fac, 0x9fad, 0xd6f3, 0x9fae, /*0x68-0x6f*/
+ 0x9faf, 0x9fb0, 0xecd2, 0xecce, 0x9fb1, 0x9fb2, 0x9fb3, 0x9fb4, /*0x70-0x77*/
+ 0xecd4, 0x9fb5, 0xecd5, 0x9fb6, 0x9fb7, 0xc9bf, 0x9fb8, 0x9fb9, /*0x78-0x7f*/
+ 0x9fba, 0x9fbb, 0x9fbc, 0x9fbd, 0xcfa8, 0x9fbe, 0x9fbf, 0x9fc0, /*0x80-0x87*/
+ 0x9fc1, 0x9fc2, 0xd0dc, 0x9fc3, 0x9fc4, 0x9fc5, 0x9fc6, 0xd1ac, /*0x88-0x8f*/
+ 0x9fc7, 0x9fc8, 0x9fc9, 0x9fca, 0xc8db, 0x9fcb, 0x9fcc, 0x9fcd, /*0x90-0x97*/
+ 0xecd6, 0xcef5, 0x9fce, 0x9fcf, 0x9fd0, 0x9fd1, 0x9fd2, 0xcaec, /*0x98-0x9f*/
+ 0xecda, 0x9fd3, 0x9fd4, 0x9fd5, 0x9fd6, 0x9fd7, 0x9fd8, 0x9fd9, /*0xa0-0xa7*/
+ 0xecd9, 0x9fda, 0x9fdb, 0x9fdc, 0xb0be, 0x9fdd, 0x9fde, 0x9fdf, /*0xa8-0xaf*/
+ 0x9fe0, 0x9fe1, 0x9fe2, 0xecd7, 0x9fe3, 0xecd8, 0x9fe4, 0x9fe5, /*0xb0-0xb7*/
+ 0x9fe6, 0xece4, 0x9fe7, 0x9fe8, 0x9fe9, 0x9fea, 0x9feb, 0x9fec, /*0xb8-0xbf*/
+ 0x9fed, 0x9fee, 0x9fef, 0xc8bc, 0x9ff0, 0x9ff1, 0x9ff2, 0x9ff3, /*0xc0-0xc7*/
+ 0x9ff4, 0x9ff5, 0x9ff6, 0x9ff7, 0x9ff8, 0x9ff9, 0xc1c7, 0x9ffa, /*0xc8-0xcf*/
+ 0x9ffb, 0x9ffc, 0x9ffd, 0x9ffe, 0xecdc, 0xd1e0, 0xa040, 0xa041, /*0xd0-0xd7*/
+ 0xa042, 0xa043, 0xa044, 0xa045, 0xa046, 0xa047, 0xa048, 0xa049, /*0xd8-0xdf*/
+ 0xecdb, 0xa04a, 0xa04b, 0xa04c, 0xa04d, 0xd4ef, 0xa04e, 0xecdd, /*0xe0-0xe7*/
+ 0xa04f, 0xa050, 0xa051, 0xa052, 0xa053, 0xa054, 0xdbc6, 0xa055, /*0xe8-0xef*/
+ 0xa056, 0xa057, 0xa058, 0xa059, 0xa05a, 0xa05b, 0xa05c, 0xa05d, /*0xf0-0xf7*/
+ 0xa05e, 0xecde, 0xa05f, 0xa060, 0xa061, 0xa062, 0xa063, 0xa064, /*0xf8-0xff*/
+ /* 0x7200 */
+ 0xa065, 0xa066, 0xa067, 0xa068, 0xa069, 0xa06a, 0xb1ac, 0xa06b, /*0x00-0x07*/
+ 0xa06c, 0xa06d, 0xa06e, 0xa06f, 0xa070, 0xa071, 0xa072, 0xa073, /*0x08-0x0f*/
+ 0xa074, 0xa075, 0xa076, 0xa077, 0xa078, 0xa079, 0xa07a, 0xa07b, /*0x10-0x17*/
+ 0xa07c, 0xa07d, 0xa07e, 0xa080, 0xa081, 0xecdf, 0xa082, 0xa083, /*0x18-0x1f*/
+ 0xa084, 0xa085, 0xa086, 0xa087, 0xa088, 0xa089, 0xa08a, 0xa08b, /*0x20-0x27*/
+ 0xece0, 0xa08c, 0xd7a6, 0xa08d, 0xc5c0, 0xa08e, 0xa08f, 0xa090, /*0x28-0x2f*/
+ 0xebbc, 0xb0ae, 0xa091, 0xa092, 0xa093, 0xbef4, 0xb8b8, 0xd2af, /*0x30-0x37*/
+ 0xb0d6, 0xb5f9, 0xa094, 0xd8b3, 0xa095, 0xcbac, 0xa096, 0xe3dd, /*0x38-0x3f*/
+ 0xa097, 0xa098, 0xa099, 0xa09a, 0xa09b, 0xa09c, 0xa09d, 0xc6ac, /*0x40-0x47*/
+ 0xb0e6, 0xa09e, 0xa09f, 0xa0a0, 0xc5c6, 0xebb9, 0xa0a1, 0xa0a2, /*0x48-0x4f*/
+ 0xa0a3, 0xa0a4, 0xebba, 0xa0a5, 0xa0a6, 0xa0a7, 0xebbb, 0xa0a8, /*0x50-0x57*/
+ 0xa0a9, 0xd1c0, 0xa0aa, 0xc5a3, 0xa0ab, 0xeaf2, 0xa0ac, 0xc4b2, /*0x58-0x5f*/
+ 0xa0ad, 0xc4b5, 0xc0ce, 0xa0ae, 0xa0af, 0xa0b0, 0xeaf3, 0xc4c1, /*0x60-0x67*/
+ 0xa0b1, 0xceef, 0xa0b2, 0xa0b3, 0xa0b4, 0xa0b5, 0xeaf0, 0xeaf4, /*0x68-0x6f*/
+ 0xa0b6, 0xa0b7, 0xc9fc, 0xa0b8, 0xa0b9, 0xc7a3, 0xa0ba, 0xa0bb, /*0x70-0x77*/
+ 0xa0bc, 0xccd8, 0xcefe, 0xa0bd, 0xa0be, 0xa0bf, 0xeaf5, 0xeaf6, /*0x78-0x7f*/
+ 0xcfac, 0xc0e7, 0xa0c0, 0xa0c1, 0xeaf7, 0xa0c2, 0xa0c3, 0xa0c4, /*0x80-0x87*/
+ 0xa0c5, 0xa0c6, 0xb6bf, 0xeaf8, 0xa0c7, 0xeaf9, 0xa0c8, 0xeafa, /*0x88-0x8f*/
+ 0xa0c9, 0xa0ca, 0xeafb, 0xa0cb, 0xa0cc, 0xa0cd, 0xa0ce, 0xa0cf, /*0x90-0x97*/
+ 0xa0d0, 0xa0d1, 0xa0d2, 0xa0d3, 0xa0d4, 0xa0d5, 0xa0d6, 0xeaf1, /*0x98-0x9f*/
+ 0xa0d7, 0xa0d8, 0xa0d9, 0xa0da, 0xa0db, 0xa0dc, 0xa0dd, 0xa0de, /*0xa0-0xa7*/
+ 0xa0df, 0xa0e0, 0xa0e1, 0xa0e2, 0xc8ae, 0xe1eb, 0xa0e3, 0xb7b8, /*0xa8-0xaf*/
+ 0xe1ec, 0xa0e4, 0xa0e5, 0xa0e6, 0xe1ed, 0xa0e7, 0xd7b4, 0xe1ee, /*0xb0-0xb7*/
+ 0xe1ef, 0xd3cc, 0xa0e8, 0xa0e9, 0xa0ea, 0xa0eb, 0xa0ec, 0xa0ed, /*0xb8-0xbf*/
+ 0xa0ee, 0xe1f1, 0xbff1, 0xe1f0, 0xb5d2, 0xa0ef, 0xa0f0, 0xa0f1, /*0xc0-0xc7*/
+ 0xb1b7, 0xa0f2, 0xa0f3, 0xa0f4, 0xa0f5, 0xe1f3, 0xe1f2, 0xa0f6, /*0xc8-0xcf*/
+ 0xbafc, 0xa0f7, 0xe1f4, 0xa0f8, 0xa0f9, 0xa0fa, 0xa0fb, 0xb9b7, /*0xd0-0xd7*/
+ 0xa0fc, 0xbed1, 0xa0fd, 0xa0fe, 0xaa40, 0xaa41, 0xc4fc, 0xaa42, /*0xd8-0xdf*/
+ 0xbadd, 0xbdc6, 0xaa43, 0xaa44, 0xaa45, 0xaa46, 0xaa47, 0xaa48, /*0xe0-0xe7*/
+ 0xe1f5, 0xe1f7, 0xaa49, 0xaa4a, 0xb6c0, 0xcfc1, 0xcaa8, 0xe1f6, /*0xe8-0xef*/
+ 0xd5f8, 0xd3fc, 0xe1f8, 0xe1fc, 0xe1f9, 0xaa4b, 0xaa4c, 0xe1fa, /*0xf0-0xf7*/
+ 0xc0ea, 0xaa4d, 0xe1fe, 0xe2a1, 0xc0c7, 0xaa4e, 0xaa4f, 0xaa50, /*0xf8-0xff*/
+ /* 0x7300 */
+ 0xaa51, 0xe1fb, 0xaa52, 0xe1fd, 0xaa53, 0xaa54, 0xaa55, 0xaa56, /*0x00-0x07*/
+ 0xaa57, 0xaa58, 0xe2a5, 0xaa59, 0xaa5a, 0xaa5b, 0xc1d4, 0xaa5c, /*0x08-0x0f*/
+ 0xaa5d, 0xaa5e, 0xaa5f, 0xe2a3, 0xaa60, 0xe2a8, 0xb2fe, 0xe2a2, /*0x10-0x17*/
+ 0xaa61, 0xaa62, 0xaa63, 0xc3cd, 0xb2c2, 0xe2a7, 0xe2a6, 0xaa64, /*0x18-0x1f*/
+ 0xaa65, 0xe2a4, 0xe2a9, 0xaa66, 0xaa67, 0xe2ab, 0xaa68, 0xaa69, /*0x20-0x27*/
+ 0xaa6a, 0xd0c9, 0xd6ed, 0xc3a8, 0xe2ac, 0xaa6b, 0xcfd7, 0xaa6c, /*0x28-0x2f*/
+ 0xaa6d, 0xe2ae, 0xaa6e, 0xaa6f, 0xbaef, 0xaa70, 0xaa71, 0xe9e0, /*0x30-0x37*/
+ 0xe2ad, 0xe2aa, 0xaa72, 0xaa73, 0xaa74, 0xaa75, 0xbbab, 0xd4b3, /*0x38-0x3f*/
+ 0xaa76, 0xaa77, 0xaa78, 0xaa79, 0xaa7a, 0xaa7b, 0xaa7c, 0xaa7d, /*0x40-0x47*/
+ 0xaa7e, 0xaa80, 0xaa81, 0xaa82, 0xaa83, 0xe2b0, 0xaa84, 0xaa85, /*0x48-0x4f*/
+ 0xe2af, 0xaa86, 0xe9e1, 0xaa87, 0xaa88, 0xaa89, 0xaa8a, 0xe2b1, /*0x50-0x57*/
+ 0xaa8b, 0xaa8c, 0xaa8d, 0xaa8e, 0xaa8f, 0xaa90, 0xaa91, 0xaa92, /*0x58-0x5f*/
+ 0xe2b2, 0xaa93, 0xaa94, 0xaa95, 0xaa96, 0xaa97, 0xaa98, 0xaa99, /*0x60-0x67*/
+ 0xaa9a, 0xaa9b, 0xaa9c, 0xaa9d, 0xe2b3, 0xcca1, 0xaa9e, 0xe2b4, /*0x68-0x6f*/
+ 0xaa9f, 0xaaa0, 0xab40, 0xab41, 0xab42, 0xab43, 0xab44, 0xab45, /*0x70-0x77*/
+ 0xab46, 0xab47, 0xab48, 0xab49, 0xab4a, 0xab4b, 0xe2b5, 0xab4c, /*0x78-0x7f*/
+ 0xab4d, 0xab4e, 0xab4f, 0xab50, 0xd0fe, 0xab51, 0xab52, 0xc2ca, /*0x80-0x87*/
+ 0xab53, 0xd3f1, 0xab54, 0xcdf5, 0xab55, 0xab56, 0xe7e0, 0xab57, /*0x88-0x8f*/
+ 0xab58, 0xe7e1, 0xab59, 0xab5a, 0xab5b, 0xab5c, 0xbec1, 0xab5d, /*0x90-0x97*/
+ 0xab5e, 0xab5f, 0xab60, 0xc2ea, 0xab61, 0xab62, 0xab63, 0xe7e4, /*0x98-0x9f*/
+ 0xab64, 0xab65, 0xe7e3, 0xab66, 0xab67, 0xab68, 0xab69, 0xab6a, /*0xa0-0xa7*/
+ 0xab6b, 0xcde6, 0xab6c, 0xc3b5, 0xab6d, 0xab6e, 0xe7e2, 0xbbb7, /*0xa8-0xaf*/
+ 0xcfd6, 0xab6f, 0xc1e1, 0xe7e9, 0xab70, 0xab71, 0xab72, 0xe7e8, /*0xb0-0xb7*/
+ 0xab73, 0xab74, 0xe7f4, 0xb2a3, 0xab75, 0xab76, 0xab77, 0xab78, /*0xb8-0xbf*/
+ 0xe7ea, 0xab79, 0xe7e6, 0xab7a, 0xab7b, 0xab7c, 0xab7d, 0xab7e, /*0xc0-0xc7*/
+ 0xe7ec, 0xe7eb, 0xc9ba, 0xab80, 0xab81, 0xd5e4, 0xab82, 0xe7e5, /*0xc8-0xcf*/
+ 0xb7a9, 0xe7e7, 0xab83, 0xab84, 0xab85, 0xab86, 0xab87, 0xab88, /*0xd0-0xd7*/
+ 0xab89, 0xe7ee, 0xab8a, 0xab8b, 0xab8c, 0xab8d, 0xe7f3, 0xab8e, /*0xd8-0xdf*/
+ 0xd6e9, 0xab8f, 0xab90, 0xab91, 0xab92, 0xe7ed, 0xab93, 0xe7f2, /*0xe0-0xe7*/
+ 0xab94, 0xe7f1, 0xab95, 0xab96, 0xab97, 0xb0e0, 0xab98, 0xab99, /*0xe8-0xef*/
+ 0xab9a, 0xab9b, 0xe7f5, 0xab9c, 0xab9d, 0xab9e, 0xab9f, 0xaba0, /*0xf0-0xf7*/
+ 0xac40, 0xac41, 0xac42, 0xac43, 0xac44, 0xac45, 0xac46, 0xac47, /*0xf8-0xff*/
+ /* 0x7400 */
+ 0xac48, 0xac49, 0xac4a, 0xc7f2, 0xac4b, 0xc0c5, 0xc0ed, 0xac4c, /*0x00-0x07*/
+ 0xac4d, 0xc1f0, 0xe7f0, 0xac4e, 0xac4f, 0xac50, 0xac51, 0xe7f6, /*0x08-0x0f*/
+ 0xcbf6, 0xac52, 0xac53, 0xac54, 0xac55, 0xac56, 0xac57, 0xac58, /*0x10-0x17*/
+ 0xac59, 0xac5a, 0xe8a2, 0xe8a1, 0xac5b, 0xac5c, 0xac5d, 0xac5e, /*0x18-0x1f*/
+ 0xac5f, 0xac60, 0xd7c1, 0xac61, 0xac62, 0xe7fa, 0xe7f9, 0xac63, /*0x20-0x27*/
+ 0xe7fb, 0xac64, 0xe7f7, 0xac65, 0xe7fe, 0xac66, 0xe7fd, 0xac67, /*0x28-0x2f*/
+ 0xe7fc, 0xac68, 0xac69, 0xc1d5, 0xc7d9, 0xc5fd, 0xc5c3, 0xac6a, /*0x30-0x37*/
+ 0xac6b, 0xac6c, 0xac6d, 0xac6e, 0xc7ed, 0xac6f, 0xac70, 0xac71, /*0x38-0x3f*/
+ 0xac72, 0xe8a3, 0xac73, 0xac74, 0xac75, 0xac76, 0xac77, 0xac78, /*0x40-0x47*/
+ 0xac79, 0xac7a, 0xac7b, 0xac7c, 0xac7d, 0xac7e, 0xac80, 0xac81, /*0x48-0x4f*/
+ 0xac82, 0xac83, 0xac84, 0xac85, 0xac86, 0xe8a6, 0xac87, 0xe8a5, /*0x50-0x57*/
+ 0xac88, 0xe8a7, 0xbaf7, 0xe7f8, 0xe8a4, 0xac89, 0xc8f0, 0xc9aa, /*0x58-0x5f*/
+ 0xac8a, 0xac8b, 0xac8c, 0xac8d, 0xac8e, 0xac8f, 0xac90, 0xac91, /*0x60-0x67*/
+ 0xac92, 0xac93, 0xac94, 0xac95, 0xac96, 0xe8a9, 0xac97, 0xac98, /*0x68-0x6f*/
+ 0xb9e5, 0xac99, 0xac9a, 0xac9b, 0xac9c, 0xac9d, 0xd1fe, 0xe8a8, /*0x70-0x77*/
+ 0xac9e, 0xac9f, 0xaca0, 0xad40, 0xad41, 0xad42, 0xe8aa, 0xad43, /*0x78-0x7f*/
+ 0xe8ad, 0xe8ae, 0xad44, 0xc1a7, 0xad45, 0xad46, 0xad47, 0xe8af, /*0x80-0x87*/
+ 0xad48, 0xad49, 0xad4a, 0xe8b0, 0xad4b, 0xad4c, 0xe8ac, 0xad4d, /*0x88-0x8f*/
+ 0xe8b4, 0xad4e, 0xad4f, 0xad50, 0xad51, 0xad52, 0xad53, 0xad54, /*0x90-0x97*/
+ 0xad55, 0xad56, 0xad57, 0xad58, 0xe8ab, 0xad59, 0xe8b1, 0xad5a, /*0x98-0x9f*/
+ 0xad5b, 0xad5c, 0xad5d, 0xad5e, 0xad5f, 0xad60, 0xad61, 0xe8b5, /*0xa0-0xa7*/
+ 0xe8b2, 0xe8b3, 0xad62, 0xad63, 0xad64, 0xad65, 0xad66, 0xad67, /*0xa8-0xaf*/
+ 0xad68, 0xad69, 0xad6a, 0xad6b, 0xad6c, 0xad6d, 0xad6e, 0xad6f, /*0xb0-0xb7*/
+ 0xad70, 0xad71, 0xe8b7, 0xad72, 0xad73, 0xad74, 0xad75, 0xad76, /*0xb8-0xbf*/
+ 0xad77, 0xad78, 0xad79, 0xad7a, 0xad7b, 0xad7c, 0xad7d, 0xad7e, /*0xc0-0xc7*/
+ 0xad80, 0xad81, 0xad82, 0xad83, 0xad84, 0xad85, 0xad86, 0xad87, /*0xc8-0xcf*/
+ 0xad88, 0xad89, 0xe8b6, 0xad8a, 0xad8b, 0xad8c, 0xad8d, 0xad8e, /*0xd0-0xd7*/
+ 0xad8f, 0xad90, 0xad91, 0xad92, 0xb9cf, 0xad93, 0xf0ac, 0xad94, /*0xd8-0xdf*/
+ 0xf0ad, 0xad95, 0xc6b0, 0xb0ea, 0xc8bf, 0xad96, 0xcddf, 0xad97, /*0xe0-0xe7*/
+ 0xad98, 0xad99, 0xad9a, 0xad9b, 0xad9c, 0xad9d, 0xcecd, 0xeab1, /*0xe8-0xef*/
+ 0xad9e, 0xad9f, 0xada0, 0xae40, 0xeab2, 0xae41, 0xc6bf, 0xb4c9, /*0xf0-0xf7*/
+ 0xae42, 0xae43, 0xae44, 0xae45, 0xae46, 0xae47, 0xae48, 0xeab3, /*0xf8-0xff*/
+ /* 0x7500 */
+ 0xae49, 0xae4a, 0xae4b, 0xae4c, 0xd5e7, 0xae4d, 0xae4e, 0xae4f, /*0x00-0x07*/
+ 0xae50, 0xae51, 0xae52, 0xae53, 0xae54, 0xddf9, 0xae55, 0xeab4, /*0x08-0x0f*/
+ 0xae56, 0xeab5, 0xae57, 0xeab6, 0xae58, 0xae59, 0xae5a, 0xae5b, /*0x10-0x17*/
+ 0xb8ca, 0xdfb0, 0xc9f5, 0xae5c, 0xccf0, 0xae5d, 0xae5e, 0xc9fa, /*0x18-0x1f*/
+ 0xae5f, 0xae60, 0xae61, 0xae62, 0xae63, 0xc9fb, 0xae64, 0xae65, /*0x20-0x27*/
+ 0xd3c3, 0xcba6, 0xae66, 0xb8a6, 0xf0ae, 0xb1c2, 0xae67, 0xe5b8, /*0x28-0x2f*/
+ 0xccef, 0xd3c9, 0xbcd7, 0xc9ea, 0xae68, 0xb5e7, 0xae69, 0xc4d0, /*0x30-0x37*/
+ 0xb5e9, 0xae6a, 0xeeae, 0xbbad, 0xae6b, 0xae6c, 0xe7de, 0xae6d, /*0x38-0x3f*/
+ 0xeeaf, 0xae6e, 0xae6f, 0xae70, 0xae71, 0xb3a9, 0xae72, 0xae73, /*0x40-0x47*/
+ 0xeeb2, 0xae74, 0xae75, 0xeeb1, 0xbde7, 0xae76, 0xeeb0, 0xceb7, /*0x48-0x4f*/
+ 0xae77, 0xae78, 0xae79, 0xae7a, 0xc5cf, 0xae7b, 0xae7c, 0xae7d, /*0x50-0x57*/
+ 0xae7e, 0xc1f4, 0xdbce, 0xeeb3, 0xd0f3, 0xae80, 0xae81, 0xae82, /*0x58-0x5f*/
+ 0xae83, 0xae84, 0xae85, 0xae86, 0xae87, 0xc2d4, 0xc6e8, 0xae88, /*0x60-0x67*/
+ 0xae89, 0xae8a, 0xb7ac, 0xae8b, 0xae8c, 0xae8d, 0xae8e, 0xae8f, /*0x68-0x6f*/
+ 0xae90, 0xae91, 0xeeb4, 0xae92, 0xb3eb, 0xae93, 0xae94, 0xae95, /*0x70-0x77*/
+ 0xbbfb, 0xeeb5, 0xae96, 0xae97, 0xae98, 0xae99, 0xae9a, 0xe7dc, /*0x78-0x7f*/
+ 0xae9b, 0xae9c, 0xae9d, 0xeeb6, 0xae9e, 0xae9f, 0xbdae, 0xaea0, /*0x80-0x87*/
+ 0xaf40, 0xaf41, 0xaf42, 0xf1e2, 0xaf43, 0xaf44, 0xaf45, 0xcae8, /*0x88-0x8f*/
+ 0xaf46, 0xd2c9, 0xf0da, 0xaf47, 0xf0db, 0xaf48, 0xf0dc, 0xc1c6, /*0x90-0x97*/
+ 0xaf49, 0xb8ed, 0xbece, 0xaf4a, 0xaf4b, 0xf0de, 0xaf4c, 0xc5b1, /*0x98-0x9f*/
+ 0xf0dd, 0xd1f1, 0xaf4d, 0xf0e0, 0xb0cc, 0xbdea, 0xaf4e, 0xaf4f, /*0xa0-0xa7*/
+ 0xaf50, 0xaf51, 0xaf52, 0xd2df, 0xf0df, 0xaf53, 0xb4af, 0xb7e8, /*0xa8-0xaf*/
+ 0xf0e6, 0xf0e5, 0xc6a3, 0xf0e1, 0xf0e2, 0xb4c3, 0xaf54, 0xaf55, /*0xb0-0xb7*/
+ 0xf0e3, 0xd5ee, 0xaf56, 0xaf57, 0xccdb, 0xbed2, 0xbcb2, 0xaf58, /*0xb8-0xbf*/
+ 0xaf59, 0xaf5a, 0xf0e8, 0xf0e7, 0xf0e4, 0xb2a1, 0xaf5b, 0xd6a2, /*0xc0-0xc7*/
+ 0xd3b8, 0xbeb7, 0xc8ac, 0xaf5c, 0xaf5d, 0xf0ea, 0xaf5e, 0xaf5f, /*0xc8-0xcf*/
+ 0xaf60, 0xaf61, 0xd1f7, 0xaf62, 0xd6cc, 0xbadb, 0xf0e9, 0xaf63, /*0xd0-0xd7*/
+ 0xb6bb, 0xaf64, 0xaf65, 0xcdb4, 0xaf66, 0xaf67, 0xc6a6, 0xaf68, /*0xd8-0xdf*/
+ 0xaf69, 0xaf6a, 0xc1a1, 0xf0eb, 0xf0ee, 0xaf6b, 0xf0ed, 0xf0f0, /*0xe0-0xe7*/
+ 0xf0ec, 0xaf6c, 0xbbbe, 0xf0ef, 0xaf6d, 0xaf6e, 0xaf6f, 0xaf70, /*0xe8-0xef*/
+ 0xccb5, 0xf0f2, 0xaf71, 0xaf72, 0xb3d5, 0xaf73, 0xaf74, 0xaf75, /*0xf0-0xf7*/
+ 0xaf76, 0xb1d4, 0xaf77, 0xaf78, 0xf0f3, 0xaf79, 0xaf7a, 0xf0f4, /*0xf8-0xff*/
+ /* 0x7600 */
+ 0xf0f6, 0xb4e1, 0xaf7b, 0xf0f1, 0xaf7c, 0xf0f7, 0xaf7d, 0xaf7e, /*0x00-0x07*/
+ 0xaf80, 0xaf81, 0xf0fa, 0xaf82, 0xf0f8, 0xaf83, 0xaf84, 0xaf85, /*0x08-0x0f*/
+ 0xf0f5, 0xaf86, 0xaf87, 0xaf88, 0xaf89, 0xf0fd, 0xaf8a, 0xf0f9, /*0x10-0x17*/
+ 0xf0fc, 0xf0fe, 0xaf8b, 0xf1a1, 0xaf8c, 0xaf8d, 0xaf8e, 0xcec1, /*0x18-0x1f*/
+ 0xf1a4, 0xaf8f, 0xf1a3, 0xaf90, 0xc1f6, 0xf0fb, 0xcadd, 0xaf91, /*0x20-0x27*/
+ 0xaf92, 0xb4f1, 0xb1f1, 0xccb1, 0xaf93, 0xf1a6, 0xaf94, 0xaf95, /*0x28-0x2f*/
+ 0xf1a7, 0xaf96, 0xaf97, 0xf1ac, 0xd5ce, 0xf1a9, 0xaf98, 0xaf99, /*0x30-0x37*/
+ 0xc8b3, 0xaf9a, 0xaf9b, 0xaf9c, 0xf1a2, 0xaf9d, 0xf1ab, 0xf1a8, /*0x38-0x3f*/
+ 0xf1a5, 0xaf9e, 0xaf9f, 0xf1aa, 0xafa0, 0xb040, 0xb041, 0xb042, /*0x40-0x47*/
+ 0xb043, 0xb044, 0xb045, 0xb046, 0xb0a9, 0xf1ad, 0xb047, 0xb048, /*0x48-0x4f*/
+ 0xb049, 0xb04a, 0xb04b, 0xb04c, 0xf1af, 0xb04d, 0xf1b1, 0xb04e, /*0x50-0x57*/
+ 0xb04f, 0xb050, 0xb051, 0xb052, 0xf1b0, 0xb053, 0xf1ae, 0xb054, /*0x58-0x5f*/
+ 0xb055, 0xb056, 0xb057, 0xd1a2, 0xb058, 0xb059, 0xb05a, 0xb05b, /*0x60-0x67*/
+ 0xb05c, 0xb05d, 0xb05e, 0xf1b2, 0xb05f, 0xb060, 0xb061, 0xf1b3, /*0x68-0x6f*/
+ 0xb062, 0xb063, 0xb064, 0xb065, 0xb066, 0xb067, 0xb068, 0xb069, /*0x70-0x77*/
+ 0xb9ef, 0xb06a, 0xb06b, 0xb5c7, 0xb06c, 0xb0d7, 0xb0d9, 0xb06d, /*0x78-0x7f*/
+ 0xb06e, 0xb06f, 0xd4ed, 0xb070, 0xb5c4, 0xb071, 0xbdd4, 0xbbca, /*0x80-0x87*/
+ 0xf0a7, 0xb072, 0xb073, 0xb8de, 0xb074, 0xb075, 0xf0a8, 0xb076, /*0x88-0x8f*/
+ 0xb077, 0xb0a8, 0xb078, 0xf0a9, 0xb079, 0xb07a, 0xcdee, 0xb07b, /*0x90-0x97*/
+ 0xb07c, 0xf0aa, 0xb07d, 0xb07e, 0xb080, 0xb081, 0xb082, 0xb083, /*0x98-0x9f*/
+ 0xb084, 0xb085, 0xb086, 0xb087, 0xf0ab, 0xb088, 0xb089, 0xb08a, /*0xa0-0xa7*/
+ 0xb08b, 0xb08c, 0xb08d, 0xb08e, 0xb08f, 0xb090, 0xc6a4, 0xb091, /*0xa8-0xaf*/
+ 0xb092, 0xd6e5, 0xf1e4, 0xb093, 0xf1e5, 0xb094, 0xb095, 0xb096, /*0xb0-0xb7*/
+ 0xb097, 0xb098, 0xb099, 0xb09a, 0xb09b, 0xb09c, 0xb09d, 0xc3f3, /*0xb8-0xbf*/
+ 0xb09e, 0xb09f, 0xd3db, 0xb0a0, 0xb140, 0xd6d1, 0xc5e8, 0xb141, /*0xc0-0xc7*/
+ 0xd3af, 0xb142, 0xd2e6, 0xb143, 0xb144, 0xeec1, 0xb0bb, 0xd5b5, /*0xc8-0xcf*/
+ 0xd1ce, 0xbce0, 0xbad0, 0xb145, 0xbff8, 0xb146, 0xb8c7, 0xb5c1, /*0xd0-0xd7*/
+ 0xc5cc, 0xb147, 0xb148, 0xcaa2, 0xb149, 0xb14a, 0xb14b, 0xc3cb, /*0xd8-0xdf*/
+ 0xb14c, 0xb14d, 0xb14e, 0xb14f, 0xb150, 0xeec2, 0xb151, 0xb152, /*0xe0-0xe7*/
+ 0xb153, 0xb154, 0xb155, 0xb156, 0xb157, 0xb158, 0xc4bf, 0xb6a2, /*0xe8-0xef*/
+ 0xb159, 0xedec, 0xc3a4, 0xb15a, 0xd6b1, 0xb15b, 0xb15c, 0xb15d, /*0xf0-0xf7*/
+ 0xcfe0, 0xedef, 0xb15e, 0xb15f, 0xc5ce, 0xb160, 0xb6dc, 0xb161, /*0xf8-0xff*/
+ /* 0x7700 */
+ 0xb162, 0xcaa1, 0xb163, 0xb164, 0xeded, 0xb165, 0xb166, 0xedf0, /*0x00-0x07*/
+ 0xedf1, 0xc3bc, 0xb167, 0xbfb4, 0xb168, 0xedee, 0xb169, 0xb16a, /*0x08-0x0f*/
+ 0xb16b, 0xb16c, 0xb16d, 0xb16e, 0xb16f, 0xb170, 0xb171, 0xb172, /*0x10-0x17*/
+ 0xb173, 0xedf4, 0xedf2, 0xb174, 0xb175, 0xb176, 0xb177, 0xd5e6, /*0x18-0x1f*/
+ 0xc3df, 0xb178, 0xedf3, 0xb179, 0xb17a, 0xb17b, 0xedf6, 0xb17c, /*0x20-0x27*/
+ 0xd5a3, 0xd1a3, 0xb17d, 0xb17e, 0xb180, 0xedf5, 0xb181, 0xc3d0, /*0x28-0x2f*/
+ 0xb182, 0xb183, 0xb184, 0xb185, 0xb186, 0xedf7, 0xbff4, 0xbeec, /*0x30-0x37*/
+ 0xedf8, 0xb187, 0xccf7, 0xb188, 0xd1db, 0xb189, 0xb18a, 0xb18b, /*0x38-0x3f*/
+ 0xd7c5, 0xd5f6, 0xb18c, 0xedfc, 0xb18d, 0xb18e, 0xb18f, 0xedfb, /*0x40-0x47*/
+ 0xb190, 0xb191, 0xb192, 0xb193, 0xb194, 0xb195, 0xb196, 0xb197, /*0x48-0x4f*/
+ 0xedf9, 0xedfa, 0xb198, 0xb199, 0xb19a, 0xb19b, 0xb19c, 0xb19d, /*0x50-0x57*/
+ 0xb19e, 0xb19f, 0xedfd, 0xbea6, 0xb1a0, 0xb240, 0xb241, 0xb242, /*0x58-0x5f*/
+ 0xb243, 0xcbaf, 0xeea1, 0xb6bd, 0xb244, 0xeea2, 0xc4c0, 0xb245, /*0x60-0x67*/
+ 0xedfe, 0xb246, 0xb247, 0xbdde, 0xb2c7, 0xb248, 0xb249, 0xb24a, /*0x68-0x6f*/
+ 0xb24b, 0xb24c, 0xb24d, 0xb24e, 0xb24f, 0xb250, 0xb251, 0xb252, /*0x70-0x77*/
+ 0xb253, 0xb6c3, 0xb254, 0xb255, 0xb256, 0xeea5, 0xd8ba, 0xeea3, /*0x78-0x7f*/
+ 0xeea6, 0xb257, 0xb258, 0xb259, 0xc3e9, 0xb3f2, 0xb25a, 0xb25b, /*0x80-0x87*/
+ 0xb25c, 0xb25d, 0xb25e, 0xb25f, 0xeea7, 0xeea4, 0xcfb9, 0xb260, /*0x88-0x8f*/
+ 0xb261, 0xeea8, 0xc2f7, 0xb262, 0xb263, 0xb264, 0xb265, 0xb266, /*0x90-0x97*/
+ 0xb267, 0xb268, 0xb269, 0xb26a, 0xb26b, 0xb26c, 0xb26d, 0xeea9, /*0x98-0x9f*/
+ 0xeeaa, 0xb26e, 0xdeab, 0xb26f, 0xb270, 0xc6b3, 0xb271, 0xc7c6, /*0xa0-0xa7*/
+ 0xb272, 0xd6f5, 0xb5c9, 0xb273, 0xcbb2, 0xb274, 0xb275, 0xb276, /*0xa8-0xaf*/
+ 0xeeab, 0xb277, 0xb278, 0xcdab, 0xb279, 0xeeac, 0xb27a, 0xb27b, /*0xb0-0xb7*/
+ 0xb27c, 0xb27d, 0xb27e, 0xd5b0, 0xb280, 0xeead, 0xb281, 0xf6c4, /*0xb8-0xbf*/
+ 0xb282, 0xb283, 0xb284, 0xb285, 0xb286, 0xb287, 0xb288, 0xb289, /*0xc0-0xc7*/
+ 0xb28a, 0xb28b, 0xb28c, 0xb28d, 0xb28e, 0xdbc7, 0xb28f, 0xb290, /*0xc8-0xcf*/
+ 0xb291, 0xb292, 0xb293, 0xb294, 0xb295, 0xb296, 0xb297, 0xb4a3, /*0xd0-0xd7*/
+ 0xb298, 0xb299, 0xb29a, 0xc3ac, 0xf1e6, 0xb29b, 0xb29c, 0xb29d, /*0xd8-0xdf*/
+ 0xb29e, 0xb29f, 0xcab8, 0xd2d3, 0xb2a0, 0xd6aa, 0xb340, 0xeff2, /*0xe0-0xe7*/
+ 0xb341, 0xbed8, 0xb342, 0xbdc3, 0xeff3, 0xb6cc, 0xb0ab, 0xb343, /*0xe8-0xef*/
+ 0xb344, 0xb345, 0xb346, 0xcaaf, 0xb347, 0xb348, 0xedb6, 0xb349, /*0xf0-0xf7*/
+ 0xedb7, 0xb34a, 0xb34b, 0xb34c, 0xb34d, 0xcef9, 0xb7af, 0xbff3, /*0xf8-0xff*/
+ /* 0x7800 */
+ 0xedb8, 0xc2eb, 0xc9b0, 0xb34e, 0xb34f, 0xb350, 0xb351, 0xb352, /*0x00-0x07*/
+ 0xb353, 0xedb9, 0xb354, 0xb355, 0xc6f6, 0xbfb3, 0xb356, 0xb357, /*0x08-0x0f*/
+ 0xb358, 0xedbc, 0xc5f8, 0xb359, 0xd1d0, 0xb35a, 0xd7a9, 0xedba, /*0x10-0x17*/
+ 0xedbb, 0xb35b, 0xd1e2, 0xb35c, 0xedbf, 0xedc0, 0xb35d, 0xedc4, /*0x18-0x1f*/
+ 0xb35e, 0xb35f, 0xb360, 0xedc8, 0xb361, 0xedc6, 0xedce, 0xd5e8, /*0x20-0x27*/
+ 0xb362, 0xedc9, 0xb363, 0xb364, 0xedc7, 0xedbe, 0xb365, 0xb366, /*0x28-0x2f*/
+ 0xc5e9, 0xb367, 0xb368, 0xb369, 0xc6c6, 0xb36a, 0xb36b, 0xc9e9, /*0x30-0x37*/
+ 0xd4d2, 0xedc1, 0xedc2, 0xedc3, 0xedc5, 0xb36c, 0xc0f9, 0xb36d, /*0x38-0x3f*/
+ 0xb4a1, 0xb36e, 0xb36f, 0xb370, 0xb371, 0xb9e8, 0xb372, 0xedd0, /*0x40-0x47*/
+ 0xb373, 0xb374, 0xb375, 0xb376, 0xedd1, 0xb377, 0xedca, 0xb378, /*0x48-0x4f*/
+ 0xedcf, 0xb379, 0xcef8, 0xb37a, 0xb37b, 0xcbb6, 0xedcc, 0xedcd, /*0x50-0x57*/
+ 0xb37c, 0xb37d, 0xb37e, 0xb380, 0xb381, 0xcff5, 0xb382, 0xb383, /*0x58-0x5f*/
+ 0xb384, 0xb385, 0xb386, 0xb387, 0xb388, 0xb389, 0xb38a, 0xb38b, /*0x60-0x67*/
+ 0xb38c, 0xb38d, 0xedd2, 0xc1f2, 0xd3b2, 0xedcb, 0xc8b7, 0xb38e, /*0x68-0x6f*/
+ 0xb38f, 0xb390, 0xb391, 0xb392, 0xb393, 0xb394, 0xb395, 0xbcef, /*0x70-0x77*/
+ 0xb396, 0xb397, 0xb398, 0xb399, 0xc5f0, 0xb39a, 0xb39b, 0xb39c, /*0x78-0x7f*/
+ 0xb39d, 0xb39e, 0xb39f, 0xb3a0, 0xb440, 0xb441, 0xb442, 0xedd6, /*0x80-0x87*/
+ 0xb443, 0xb5ef, 0xb444, 0xb445, 0xc2b5, 0xb0ad, 0xcbe9, 0xb446, /*0x88-0x8f*/
+ 0xb447, 0xb1ae, 0xb448, 0xedd4, 0xb449, 0xb44a, 0xb44b, 0xcdeb, /*0x90-0x97*/
+ 0xb5e2, 0xb44c, 0xedd5, 0xedd3, 0xedd7, 0xb44d, 0xb44e, 0xb5fa, /*0x98-0x9f*/
+ 0xb44f, 0xedd8, 0xb450, 0xedd9, 0xb451, 0xeddc, 0xb452, 0xb1cc, /*0xa0-0xa7*/
+ 0xb453, 0xb454, 0xb455, 0xb456, 0xb457, 0xb458, 0xb459, 0xb45a, /*0xa8-0xaf*/
+ 0xc5f6, 0xbcee, 0xedda, 0xccbc, 0xb2ea, 0xb45b, 0xb45c, 0xb45d, /*0xb0-0xb7*/
+ 0xb45e, 0xeddb, 0xb45f, 0xb460, 0xb461, 0xb462, 0xc4eb, 0xb463, /*0xb8-0xbf*/
+ 0xb464, 0xb4c5, 0xb465, 0xb466, 0xb467, 0xb0f5, 0xb468, 0xb469, /*0xc0-0xc7*/
+ 0xb46a, 0xeddf, 0xc0da, 0xb4e8, 0xb46b, 0xb46c, 0xb46d, 0xb46e, /*0xc8-0xcf*/
+ 0xc5cd, 0xb46f, 0xb470, 0xb471, 0xeddd, 0xbfc4, 0xb472, 0xb473, /*0xd0-0xd7*/
+ 0xb474, 0xedde, 0xb475, 0xb476, 0xb477, 0xb478, 0xb479, 0xb47a, /*0xd8-0xdf*/
+ 0xb47b, 0xb47c, 0xb47d, 0xb47e, 0xb480, 0xb481, 0xb482, 0xb483, /*0xe0-0xe7*/
+ 0xc4a5, 0xb484, 0xb485, 0xb486, 0xede0, 0xb487, 0xb488, 0xb489, /*0xe8-0xef*/
+ 0xb48a, 0xb48b, 0xede1, 0xb48c, 0xede3, 0xb48d, 0xb48e, 0xc1d7, /*0xf0-0xf7*/
+ 0xb48f, 0xb490, 0xbbc7, 0xb491, 0xb492, 0xb493, 0xb494, 0xb495, /*0xf8-0xff*/
+ /* 0x7900 */
+ 0xb496, 0xbdb8, 0xb497, 0xb498, 0xb499, 0xede2, 0xb49a, 0xb49b, /*0x00-0x07*/
+ 0xb49c, 0xb49d, 0xb49e, 0xb49f, 0xb4a0, 0xb540, 0xb541, 0xb542, /*0x08-0x0f*/
+ 0xb543, 0xb544, 0xb545, 0xede4, 0xb546, 0xb547, 0xb548, 0xb549, /*0x10-0x17*/
+ 0xb54a, 0xb54b, 0xb54c, 0xb54d, 0xb54e, 0xb54f, 0xede6, 0xb550, /*0x18-0x1f*/
+ 0xb551, 0xb552, 0xb553, 0xb554, 0xede5, 0xb555, 0xb556, 0xb557, /*0x20-0x27*/
+ 0xb558, 0xb559, 0xb55a, 0xb55b, 0xb55c, 0xb55d, 0xb55e, 0xb55f, /*0x28-0x2f*/
+ 0xb560, 0xb561, 0xb562, 0xb563, 0xede7, 0xb564, 0xb565, 0xb566, /*0x30-0x37*/
+ 0xb567, 0xb568, 0xcabe, 0xecea, 0xc0f1, 0xb569, 0xc9e7, 0xb56a, /*0x38-0x3f*/
+ 0xeceb, 0xc6ee, 0xb56b, 0xb56c, 0xb56d, 0xb56e, 0xecec, 0xb56f, /*0x40-0x47*/
+ 0xc6ed, 0xeced, 0xb570, 0xb571, 0xb572, 0xb573, 0xb574, 0xb575, /*0x48-0x4f*/
+ 0xb576, 0xb577, 0xb578, 0xecf0, 0xb579, 0xb57a, 0xd7e6, 0xecf3, /*0x50-0x57*/
+ 0xb57b, 0xb57c, 0xecf1, 0xecee, 0xecef, 0xd7a3, 0xc9f1, 0xcbee, /*0x58-0x5f*/
+ 0xecf4, 0xb57d, 0xecf2, 0xb57e, 0xb580, 0xcfe9, 0xb581, 0xecf6, /*0x60-0x67*/
+ 0xc6b1, 0xb582, 0xb583, 0xb584, 0xb585, 0xbcc0, 0xb586, 0xecf5, /*0x68-0x6f*/
+ 0xb587, 0xb588, 0xb589, 0xb58a, 0xb58b, 0xb58c, 0xb58d, 0xb5bb, /*0x70-0x77*/
+ 0xbbf6, 0xb58e, 0xecf7, 0xb58f, 0xb590, 0xb591, 0xb592, 0xb593, /*0x78-0x7f*/
+ 0xd9f7, 0xbdfb, 0xb594, 0xb595, 0xc2bb, 0xecf8, 0xb596, 0xb597, /*0x80-0x87*/
+ 0xb598, 0xb599, 0xecf9, 0xb59a, 0xb59b, 0xb59c, 0xb59d, 0xb8a3, /*0x88-0x8f*/
+ 0xb59e, 0xb59f, 0xb5a0, 0xb640, 0xb641, 0xb642, 0xb643, 0xb644, /*0x90-0x97*/
+ 0xb645, 0xb646, 0xecfa, 0xb647, 0xb648, 0xb649, 0xb64a, 0xb64b, /*0x98-0x9f*/
+ 0xb64c, 0xb64d, 0xb64e, 0xb64f, 0xb650, 0xb651, 0xb652, 0xecfb, /*0xa0-0xa7*/
+ 0xb653, 0xb654, 0xb655, 0xb656, 0xb657, 0xb658, 0xb659, 0xb65a, /*0xa8-0xaf*/
+ 0xb65b, 0xb65c, 0xb65d, 0xecfc, 0xb65e, 0xb65f, 0xb660, 0xb661, /*0xb0-0xb7*/
+ 0xb662, 0xd3ed, 0xd8ae, 0xc0eb, 0xb663, 0xc7dd, 0xbacc, 0xb664, /*0xb8-0xbf*/
+ 0xd0e3, 0xcbbd, 0xb665, 0xcdba, 0xb666, 0xb667, 0xb8d1, 0xb668, /*0xc0-0xc7*/
+ 0xb669, 0xb1fc, 0xb66a, 0xc7ef, 0xb66b, 0xd6d6, 0xb66c, 0xb66d, /*0xc8-0xcf*/
+ 0xb66e, 0xbfc6, 0xc3eb, 0xb66f, 0xb670, 0xeff5, 0xb671, 0xb672, /*0xd0-0xd7*/
+ 0xc3d8, 0xb673, 0xb674, 0xb675, 0xb676, 0xb677, 0xb678, 0xd7e2, /*0xd8-0xdf*/
+ 0xb679, 0xb67a, 0xb67b, 0xeff7, 0xb3d3, 0xb67c, 0xc7d8, 0xd1ed, /*0xe0-0xe7*/
+ 0xb67d, 0xd6c8, 0xb67e, 0xeff8, 0xb680, 0xeff6, 0xb681, 0xbbfd, /*0xe8-0xef*/
+ 0xb3c6, 0xb682, 0xb683, 0xb684, 0xb685, 0xb686, 0xb687, 0xb688, /*0xf0-0xf7*/
+ 0xbdd5, 0xb689, 0xb68a, 0xd2c6, 0xb68b, 0xbbe0, 0xb68c, 0xb68d, /*0xf8-0xff*/
+ /* 0x7a00 */
+ 0xcfa1, 0xb68e, 0xeffc, 0xeffb, 0xb68f, 0xb690, 0xeff9, 0xb691, /*0x00-0x07*/
+ 0xb692, 0xb693, 0xb694, 0xb3cc, 0xb695, 0xc9d4, 0xcbb0, 0xb696, /*0x08-0x0f*/
+ 0xb697, 0xb698, 0xb699, 0xb69a, 0xeffe, 0xb69b, 0xb69c, 0xb0de, /*0x10-0x17*/
+ 0xb69d, 0xb69e, 0xd6c9, 0xb69f, 0xb6a0, 0xb740, 0xeffd, 0xb741, /*0x18-0x1f*/
+ 0xb3ed, 0xb742, 0xb743, 0xf6d5, 0xb744, 0xb745, 0xb746, 0xb747, /*0x20-0x27*/
+ 0xb748, 0xb749, 0xb74a, 0xb74b, 0xb74c, 0xb74d, 0xb74e, 0xb74f, /*0x28-0x2f*/
+ 0xb750, 0xb751, 0xb752, 0xcec8, 0xb753, 0xb754, 0xb755, 0xf0a2, /*0x30-0x37*/
+ 0xb756, 0xf0a1, 0xb757, 0xb5be, 0xbcda, 0xbbfc, 0xb758, 0xb8e5, /*0x38-0x3f*/
+ 0xb759, 0xb75a, 0xb75b, 0xb75c, 0xb75d, 0xb75e, 0xc4c2, 0xb75f, /*0x40-0x47*/
+ 0xb760, 0xb761, 0xb762, 0xb763, 0xb764, 0xb765, 0xb766, 0xb767, /*0x48-0x4f*/
+ 0xb768, 0xf0a3, 0xb769, 0xb76a, 0xb76b, 0xb76c, 0xb76d, 0xcbeb, /*0x50-0x57*/
+ 0xb76e, 0xb76f, 0xb770, 0xb771, 0xb772, 0xb773, 0xb774, 0xb775, /*0x58-0x5f*/
+ 0xb776, 0xb777, 0xb778, 0xb779, 0xb77a, 0xb77b, 0xb77c, 0xb77d, /*0x60-0x67*/
+ 0xb77e, 0xb780, 0xb781, 0xb782, 0xb783, 0xb784, 0xb785, 0xb786, /*0x68-0x6f*/
+ 0xf0a6, 0xb787, 0xb788, 0xb789, 0xd1a8, 0xb78a, 0xbebf, 0xc7ee, /*0x70-0x77*/
+ 0xf1b6, 0xf1b7, 0xbfd5, 0xb78b, 0xb78c, 0xb78d, 0xb78e, 0xb4a9, /*0x78-0x7f*/
+ 0xf1b8, 0xcdbb, 0xb78f, 0xc7d4, 0xd5ad, 0xb790, 0xf1b9, 0xb791, /*0x80-0x87*/
+ 0xf1ba, 0xb792, 0xb793, 0xb794, 0xb795, 0xc7cf, 0xb796, 0xb797, /*0x88-0x8f*/
+ 0xb798, 0xd2a4, 0xd6cf, 0xb799, 0xb79a, 0xf1bb, 0xbdd1, 0xb4b0, /*0x90-0x97*/
+ 0xbebd, 0xb79b, 0xb79c, 0xb79d, 0xb4dc, 0xced1, 0xb79e, 0xbfdf, /*0x98-0x9f*/
+ 0xf1bd, 0xb79f, 0xb7a0, 0xb840, 0xb841, 0xbffa, 0xf1bc, 0xb842, /*0xa0-0xa7*/
+ 0xf1bf, 0xb843, 0xb844, 0xb845, 0xf1be, 0xf1c0, 0xb846, 0xb847, /*0xa8-0xaf*/
+ 0xb848, 0xb849, 0xb84a, 0xf1c1, 0xb84b, 0xb84c, 0xb84d, 0xb84e, /*0xb0-0xb7*/
+ 0xb84f, 0xb850, 0xb851, 0xb852, 0xb853, 0xb854, 0xb855, 0xc1fe, /*0xb8-0xbf*/
+ 0xb856, 0xb857, 0xb858, 0xb859, 0xb85a, 0xb85b, 0xb85c, 0xb85d, /*0xc0-0xc7*/
+ 0xb85e, 0xb85f, 0xb860, 0xc1a2, 0xb861, 0xb862, 0xb863, 0xb864, /*0xc8-0xcf*/
+ 0xb865, 0xb866, 0xb867, 0xb868, 0xb869, 0xb86a, 0xcafa, 0xb86b, /*0xd0-0xd7*/
+ 0xb86c, 0xd5be, 0xb86d, 0xb86e, 0xb86f, 0xb870, 0xbeba, 0xbeb9, /*0xd8-0xdf*/
+ 0xd5c2, 0xb871, 0xb872, 0xbfa2, 0xb873, 0xcdaf, 0xf1b5, 0xb874, /*0xe0-0xe7*/
+ 0xb875, 0xb876, 0xb877, 0xb878, 0xb879, 0xbddf, 0xb87a, 0xb6cb, /*0xe8-0xef*/
+ 0xb87b, 0xb87c, 0xb87d, 0xb87e, 0xb880, 0xb881, 0xb882, 0xb883, /*0xf0-0xf7*/
+ 0xb884, 0xd6f1, 0xf3c3, 0xb885, 0xb886, 0xf3c4, 0xb887, 0xb8cd, /*0xf8-0xff*/
+ /* 0x7b00 */
+ 0xb888, 0xb889, 0xb88a, 0xf3c6, 0xf3c7, 0xb88b, 0xb0ca, 0xb88c, /*0x00-0x07*/
+ 0xf3c5, 0xb88d, 0xf3c9, 0xcbf1, 0xb88e, 0xb88f, 0xb890, 0xf3cb, /*0x08-0x0f*/
+ 0xb891, 0xd0a6, 0xb892, 0xb893, 0xb1ca, 0xf3c8, 0xb894, 0xb895, /*0x10-0x17*/
+ 0xb896, 0xf3cf, 0xb897, 0xb5d1, 0xb898, 0xb899, 0xf3d7, 0xb89a, /*0x18-0x1f*/
+ 0xf3d2, 0xb89b, 0xb89c, 0xb89d, 0xf3d4, 0xf3d3, 0xb7fb, 0xb89e, /*0x20-0x27*/
+ 0xb1bf, 0xb89f, 0xf3ce, 0xf3ca, 0xb5da, 0xb8a0, 0xf3d0, 0xb940, /*0x28-0x2f*/
+ 0xb941, 0xf3d1, 0xb942, 0xf3d5, 0xb943, 0xb944, 0xb945, 0xb946, /*0x30-0x37*/
+ 0xf3cd, 0xb947, 0xbce3, 0xb948, 0xc1fd, 0xb949, 0xf3d6, 0xb94a, /*0x38-0x3f*/
+ 0xb94b, 0xb94c, 0xb94d, 0xb94e, 0xb94f, 0xf3da, 0xb950, 0xf3cc, /*0x40-0x47*/
+ 0xb951, 0xb5c8, 0xb952, 0xbdee, 0xf3dc, 0xb953, 0xb954, 0xb7a4, /*0x48-0x4f*/
+ 0xbff0, 0xd6fe, 0xcdb2, 0xb955, 0xb4f0, 0xb956, 0xb2df, 0xb957, /*0x50-0x57*/
+ 0xf3d8, 0xb958, 0xf3d9, 0xc9b8, 0xb959, 0xf3dd, 0xb95a, 0xb95b, /*0x58-0x5f*/
+ 0xf3de, 0xb95c, 0xf3e1, 0xb95d, 0xb95e, 0xb95f, 0xb960, 0xb961, /*0x60-0x67*/
+ 0xb962, 0xb963, 0xb964, 0xb965, 0xb966, 0xb967, 0xf3df, 0xb968, /*0x68-0x6f*/
+ 0xb969, 0xf3e3, 0xf3e2, 0xb96a, 0xb96b, 0xf3db, 0xb96c, 0xbfea, /*0x70-0x77*/
+ 0xb96d, 0xb3ef, 0xb96e, 0xf3e0, 0xb96f, 0xb970, 0xc7a9, 0xb971, /*0x78-0x7f*/
+ 0xbcf2, 0xb972, 0xb973, 0xb974, 0xb975, 0xf3eb, 0xb976, 0xb977, /*0x80-0x87*/
+ 0xb978, 0xb979, 0xb97a, 0xb97b, 0xb97c, 0xb9bf, 0xb97d, 0xb97e, /*0x88-0x8f*/
+ 0xf3e4, 0xb980, 0xb981, 0xb982, 0xb2ad, 0xbbfe, 0xb983, 0xcbe3, /*0x90-0x97*/
+ 0xb984, 0xb985, 0xb986, 0xb987, 0xf3ed, 0xf3e9, 0xb988, 0xb989, /*0x98-0x9f*/
+ 0xb98a, 0xb9dc, 0xf3ee, 0xb98b, 0xb98c, 0xb98d, 0xf3e5, 0xf3e6, /*0xa0-0xa7*/
+ 0xf3ea, 0xc2e1, 0xf3ec, 0xf3ef, 0xf3e8, 0xbcfd, 0xb98e, 0xb98f, /*0xa8-0xaf*/
+ 0xb990, 0xcfe4, 0xb991, 0xb992, 0xf3f0, 0xb993, 0xb994, 0xb995, /*0xb0-0xb7*/
+ 0xf3e7, 0xb996, 0xb997, 0xb998, 0xb999, 0xb99a, 0xb99b, 0xb99c, /*0xb8-0xbf*/
+ 0xb99d, 0xf3f2, 0xb99e, 0xb99f, 0xb9a0, 0xba40, 0xd7ad, 0xc6aa, /*0xc0-0xc7*/
+ 0xba41, 0xba42, 0xba43, 0xba44, 0xf3f3, 0xba45, 0xba46, 0xba47, /*0xc8-0xcf*/
+ 0xba48, 0xf3f1, 0xba49, 0xc2a8, 0xba4a, 0xba4b, 0xba4c, 0xba4d, /*0xd0-0xd7*/
+ 0xba4e, 0xb8dd, 0xf3f5, 0xba4f, 0xba50, 0xf3f4, 0xba51, 0xba52, /*0xd8-0xdf*/
+ 0xba53, 0xb4db, 0xba54, 0xba55, 0xba56, 0xf3f6, 0xf3f7, 0xba57, /*0xe0-0xe7*/
+ 0xba58, 0xba59, 0xf3f8, 0xba5a, 0xba5b, 0xba5c, 0xc0ba, 0xba5d, /*0xe8-0xef*/
+ 0xba5e, 0xc0e9, 0xba5f, 0xba60, 0xba61, 0xba62, 0xba63, 0xc5f1, /*0xf0-0xf7*/
+ 0xba64, 0xba65, 0xba66, 0xba67, 0xf3fb, 0xba68, 0xf3fa, 0xba69, /*0xf8-0xff*/
+ /* 0x7c00 */
+ 0xba6a, 0xba6b, 0xba6c, 0xba6d, 0xba6e, 0xba6f, 0xba70, 0xb4d8, /*0x00-0x07*/
+ 0xba71, 0xba72, 0xba73, 0xf3fe, 0xf3f9, 0xba74, 0xba75, 0xf3fc, /*0x08-0x0f*/
+ 0xba76, 0xba77, 0xba78, 0xba79, 0xba7a, 0xba7b, 0xf3fd, 0xba7c, /*0x10-0x17*/
+ 0xba7d, 0xba7e, 0xba80, 0xba81, 0xba82, 0xba83, 0xba84, 0xf4a1, /*0x18-0x1f*/
+ 0xba85, 0xba86, 0xba87, 0xba88, 0xba89, 0xba8a, 0xf4a3, 0xbbc9, /*0x20-0x27*/
+ 0xba8b, 0xba8c, 0xf4a2, 0xba8d, 0xba8e, 0xba8f, 0xba90, 0xba91, /*0x28-0x2f*/
+ 0xba92, 0xba93, 0xba94, 0xba95, 0xba96, 0xba97, 0xba98, 0xba99, /*0x30-0x37*/
+ 0xf4a4, 0xba9a, 0xba9b, 0xba9c, 0xba9d, 0xba9e, 0xba9f, 0xb2be, /*0x38-0x3f*/
+ 0xf4a6, 0xf4a5, 0xbaa0, 0xbb40, 0xbb41, 0xbb42, 0xbb43, 0xbb44, /*0x40-0x47*/
+ 0xbb45, 0xbb46, 0xbb47, 0xbb48, 0xbb49, 0xbcae, 0xbb4a, 0xbb4b, /*0x48-0x4f*/
+ 0xbb4c, 0xbb4d, 0xbb4e, 0xbb4f, 0xbb50, 0xbb51, 0xbb52, 0xbb53, /*0x50-0x57*/
+ 0xbb54, 0xbb55, 0xbb56, 0xbb57, 0xbb58, 0xbb59, 0xbb5a, 0xbb5b, /*0x58-0x5f*/
+ 0xbb5c, 0xbb5d, 0xbb5e, 0xbb5f, 0xbb60, 0xbb61, 0xbb62, 0xbb63, /*0x60-0x67*/
+ 0xbb64, 0xbb65, 0xbb66, 0xbb67, 0xbb68, 0xbb69, 0xbb6a, 0xbb6b, /*0x68-0x6f*/
+ 0xbb6c, 0xbb6d, 0xbb6e, 0xc3d7, 0xd9e1, 0xbb6f, 0xbb70, 0xbb71, /*0x70-0x77*/
+ 0xbb72, 0xbb73, 0xbb74, 0xc0e0, 0xf4cc, 0xd7d1, 0xbb75, 0xbb76, /*0x78-0x7f*/
+ 0xbb77, 0xbb78, 0xbb79, 0xbb7a, 0xbb7b, 0xbb7c, 0xbb7d, 0xbb7e, /*0x80-0x87*/
+ 0xbb80, 0xb7db, 0xbb81, 0xbb82, 0xbb83, 0xbb84, 0xbb85, 0xbb86, /*0x88-0x8f*/
+ 0xbb87, 0xf4ce, 0xc1a3, 0xbb88, 0xbb89, 0xc6c9, 0xbb8a, 0xb4d6, /*0x90-0x97*/
+ 0xd5b3, 0xbb8b, 0xbb8c, 0xbb8d, 0xf4d0, 0xf4cf, 0xf4d1, 0xcbda, /*0x98-0x9f*/
+ 0xbb8e, 0xbb8f, 0xf4d2, 0xbb90, 0xd4c1, 0xd6e0, 0xbb91, 0xbb92, /*0xa0-0xa7*/
+ 0xbb93, 0xbb94, 0xb7e0, 0xbb95, 0xbb96, 0xbb97, 0xc1b8, 0xbb98, /*0xa8-0xaf*/
+ 0xbb99, 0xc1bb, 0xf4d3, 0xbeac, 0xbb9a, 0xbb9b, 0xbb9c, 0xbb9d, /*0xb0-0xb7*/
+ 0xbb9e, 0xb4e2, 0xbb9f, 0xbba0, 0xf4d4, 0xf4d5, 0xbeab, 0xbc40, /*0xb8-0xbf*/
+ 0xbc41, 0xf4d6, 0xbc42, 0xbc43, 0xbc44, 0xf4db, 0xbc45, 0xf4d7, /*0xc0-0xc7*/
+ 0xf4da, 0xbc46, 0xbafd, 0xbc47, 0xf4d8, 0xf4d9, 0xbc48, 0xbc49, /*0xc8-0xcf*/
+ 0xbc4a, 0xbc4b, 0xbc4c, 0xbc4d, 0xbc4e, 0xb8e2, 0xccc7, 0xf4dc, /*0xd0-0xd7*/
+ 0xbc4f, 0xb2da, 0xbc50, 0xbc51, 0xc3d3, 0xbc52, 0xbc53, 0xd4e3, /*0xd8-0xdf*/
+ 0xbfb7, 0xbc54, 0xbc55, 0xbc56, 0xbc57, 0xbc58, 0xbc59, 0xbc5a, /*0xe0-0xe7*/
+ 0xf4dd, 0xbc5b, 0xbc5c, 0xbc5d, 0xbc5e, 0xbc5f, 0xbc60, 0xc5b4, /*0xe8-0xef*/
+ 0xbc61, 0xbc62, 0xbc63, 0xbc64, 0xbc65, 0xbc66, 0xbc67, 0xbc68, /*0xf0-0xf7*/
+ 0xf4e9, 0xbc69, 0xbc6a, 0xcfb5, 0xbc6b, 0xbc6c, 0xbc6d, 0xbc6e, /*0xf8-0xff*/
+ /* 0x7d00 */
+ 0xbc6f, 0xbc70, 0xbc71, 0xbc72, 0xbc73, 0xbc74, 0xbc75, 0xbc76, /*0x00-0x07*/
+ 0xbc77, 0xbc78, 0xcec9, 0xbc79, 0xbc7a, 0xbc7b, 0xbc7c, 0xbc7d, /*0x08-0x0f*/
+ 0xbc7e, 0xbc80, 0xbc81, 0xbc82, 0xbc83, 0xbc84, 0xbc85, 0xbc86, /*0x10-0x17*/
+ 0xbc87, 0xbc88, 0xbc89, 0xbc8a, 0xbc8b, 0xbc8c, 0xbc8d, 0xbc8e, /*0x18-0x1f*/
+ 0xcbd8, 0xbc8f, 0xcbf7, 0xbc90, 0xbc91, 0xbc92, 0xbc93, 0xbdf4, /*0x20-0x27*/
+ 0xbc94, 0xbc95, 0xbc96, 0xd7cf, 0xbc97, 0xbc98, 0xbc99, 0xc0db, /*0x28-0x2f*/
+ 0xbc9a, 0xbc9b, 0xbc9c, 0xbc9d, 0xbc9e, 0xbc9f, 0xbca0, 0xbd40, /*0x30-0x37*/
+ 0xbd41, 0xbd42, 0xbd43, 0xbd44, 0xbd45, 0xbd46, 0xbd47, 0xbd48, /*0x38-0x3f*/
+ 0xbd49, 0xbd4a, 0xbd4b, 0xbd4c, 0xbd4d, 0xbd4e, 0xbd4f, 0xbd50, /*0x40-0x47*/
+ 0xbd51, 0xbd52, 0xbd53, 0xbd54, 0xbd55, 0xbd56, 0xbd57, 0xbd58, /*0x48-0x4f*/
+ 0xbd59, 0xbd5a, 0xbd5b, 0xbd5c, 0xbd5d, 0xbd5e, 0xbd5f, 0xbd60, /*0x50-0x57*/
+ 0xbd61, 0xbd62, 0xbd63, 0xbd64, 0xbd65, 0xbd66, 0xbd67, 0xbd68, /*0x58-0x5f*/
+ 0xbd69, 0xbd6a, 0xbd6b, 0xbd6c, 0xbd6d, 0xbd6e, 0xbd6f, 0xbd70, /*0x60-0x67*/
+ 0xbd71, 0xbd72, 0xbd73, 0xbd74, 0xbd75, 0xbd76, 0xd0f5, 0xbd77, /*0x68-0x6f*/
+ 0xbd78, 0xbd79, 0xbd7a, 0xbd7b, 0xbd7c, 0xbd7d, 0xbd7e, 0xf4ea, /*0x70-0x77*/
+ 0xbd80, 0xbd81, 0xbd82, 0xbd83, 0xbd84, 0xbd85, 0xbd86, 0xbd87, /*0x78-0x7f*/
+ 0xbd88, 0xbd89, 0xbd8a, 0xbd8b, 0xbd8c, 0xbd8d, 0xbd8e, 0xbd8f, /*0x80-0x87*/
+ 0xbd90, 0xbd91, 0xbd92, 0xbd93, 0xbd94, 0xbd95, 0xbd96, 0xbd97, /*0x88-0x8f*/
+ 0xbd98, 0xbd99, 0xbd9a, 0xbd9b, 0xbd9c, 0xbd9d, 0xbd9e, 0xbd9f, /*0x90-0x97*/
+ 0xbda0, 0xbe40, 0xbe41, 0xbe42, 0xbe43, 0xbe44, 0xbe45, 0xbe46, /*0x98-0x9f*/
+ 0xbe47, 0xbe48, 0xbe49, 0xbe4a, 0xbe4b, 0xbe4c, 0xf4eb, 0xbe4d, /*0xa0-0xa7*/
+ 0xbe4e, 0xbe4f, 0xbe50, 0xbe51, 0xbe52, 0xbe53, 0xf4ec, 0xbe54, /*0xa8-0xaf*/
+ 0xbe55, 0xbe56, 0xbe57, 0xbe58, 0xbe59, 0xbe5a, 0xbe5b, 0xbe5c, /*0xb0-0xb7*/
+ 0xbe5d, 0xbe5e, 0xbe5f, 0xbe60, 0xbe61, 0xbe62, 0xbe63, 0xbe64, /*0xb8-0xbf*/
+ 0xbe65, 0xbe66, 0xbe67, 0xbe68, 0xbe69, 0xbe6a, 0xbe6b, 0xbe6c, /*0xc0-0xc7*/
+ 0xbe6d, 0xbe6e, 0xbe6f, 0xbe70, 0xbe71, 0xbe72, 0xbe73, 0xbe74, /*0xc8-0xcf*/
+ 0xbe75, 0xbe76, 0xbe77, 0xbe78, 0xbe79, 0xbe7a, 0xbe7b, 0xbe7c, /*0xd0-0xd7*/
+ 0xbe7d, 0xbe7e, 0xbe80, 0xbe81, 0xbe82, 0xbe83, 0xbe84, 0xbe85, /*0xd8-0xdf*/
+ 0xbe86, 0xbe87, 0xbe88, 0xbe89, 0xbe8a, 0xbe8b, 0xbe8c, 0xbe8d, /*0xe0-0xe7*/
+ 0xbe8e, 0xbe8f, 0xbe90, 0xbe91, 0xbe92, 0xbe93, 0xbe94, 0xbe95, /*0xe8-0xef*/
+ 0xbe96, 0xbe97, 0xbe98, 0xbe99, 0xbe9a, 0xbe9b, 0xbe9c, 0xbe9d, /*0xf0-0xf7*/
+ 0xbe9e, 0xbe9f, 0xbea0, 0xbf40, 0xbf41, 0xbf42, 0xbf43, 0xbf44, /*0xf8-0xff*/
+ /* 0x7e00 */
+ 0xbf45, 0xbf46, 0xbf47, 0xbf48, 0xbf49, 0xbf4a, 0xbf4b, 0xbf4c, /*0x00-0x07*/
+ 0xbf4d, 0xbf4e, 0xbf4f, 0xbf50, 0xbf51, 0xbf52, 0xbf53, 0xbf54, /*0x08-0x0f*/
+ 0xbf55, 0xbf56, 0xbf57, 0xbf58, 0xbf59, 0xbf5a, 0xbf5b, 0xbf5c, /*0x10-0x17*/
+ 0xbf5d, 0xbf5e, 0xbf5f, 0xbf60, 0xbf61, 0xbf62, 0xbf63, 0xbf64, /*0x18-0x1f*/
+ 0xbf65, 0xbf66, 0xbf67, 0xbf68, 0xbf69, 0xbf6a, 0xbf6b, 0xbf6c, /*0x20-0x27*/
+ 0xbf6d, 0xbf6e, 0xbf6f, 0xbf70, 0xbf71, 0xbf72, 0xbf73, 0xbf74, /*0x28-0x2f*/
+ 0xbf75, 0xbf76, 0xbf77, 0xbf78, 0xbf79, 0xbf7a, 0xbf7b, 0xbf7c, /*0x30-0x37*/
+ 0xbf7d, 0xbf7e, 0xbf80, 0xf7e3, 0xbf81, 0xbf82, 0xbf83, 0xbf84, /*0x38-0x3f*/
+ 0xbf85, 0xb7b1, 0xbf86, 0xbf87, 0xbf88, 0xbf89, 0xbf8a, 0xf4ed, /*0x40-0x47*/
+ 0xbf8b, 0xbf8c, 0xbf8d, 0xbf8e, 0xbf8f, 0xbf90, 0xbf91, 0xbf92, /*0x48-0x4f*/
+ 0xbf93, 0xbf94, 0xbf95, 0xbf96, 0xbf97, 0xbf98, 0xbf99, 0xbf9a, /*0x50-0x57*/
+ 0xbf9b, 0xbf9c, 0xbf9d, 0xbf9e, 0xbf9f, 0xbfa0, 0xc040, 0xc041, /*0x58-0x5f*/
+ 0xc042, 0xc043, 0xc044, 0xc045, 0xc046, 0xc047, 0xc048, 0xc049, /*0x60-0x67*/
+ 0xc04a, 0xc04b, 0xc04c, 0xc04d, 0xc04e, 0xc04f, 0xc050, 0xc051, /*0x68-0x6f*/
+ 0xc052, 0xc053, 0xc054, 0xc055, 0xc056, 0xc057, 0xc058, 0xc059, /*0x70-0x77*/
+ 0xc05a, 0xc05b, 0xc05c, 0xc05d, 0xc05e, 0xc05f, 0xc060, 0xc061, /*0x78-0x7f*/
+ 0xc062, 0xc063, 0xd7eb, 0xc064, 0xc065, 0xc066, 0xc067, 0xc068, /*0x80-0x87*/
+ 0xc069, 0xc06a, 0xc06b, 0xc06c, 0xc06d, 0xc06e, 0xc06f, 0xc070, /*0x88-0x8f*/
+ 0xc071, 0xc072, 0xc073, 0xc074, 0xc075, 0xc076, 0xc077, 0xc078, /*0x90-0x97*/
+ 0xc079, 0xc07a, 0xc07b, 0xf4ee, 0xc07c, 0xc07d, 0xc07e, 0xe6f9, /*0x98-0x9f*/
+ 0xbec0, 0xe6fa, 0xbaec, 0xe6fb, 0xcfcb, 0xe6fc, 0xd4bc, 0xbcb6, /*0xa0-0xa7*/
+ 0xe6fd, 0xe6fe, 0xbccd, 0xc8d2, 0xceb3, 0xe7a1, 0xc080, 0xb4bf, /*0xa8-0xaf*/
+ 0xe7a2, 0xc9b4, 0xb8d9, 0xc4c9, 0xc081, 0xd7dd, 0xc2da, 0xb7d7, /*0xb0-0xb7*/
+ 0xd6bd, 0xcec6, 0xb7c4, 0xc082, 0xc083, 0xc5a6, 0xe7a3, 0xcfdf, /*0xb8-0xbf*/
+ 0xe7a4, 0xe7a5, 0xe7a6, 0xc1b7, 0xd7e9, 0xc9f0, 0xcfb8, 0xd6af, /*0xc0-0xc7*/
+ 0xd6d5, 0xe7a7, 0xb0ed, 0xe7a8, 0xe7a9, 0xc9dc, 0xd2ef, 0xbead, /*0xc8-0xcf*/
+ 0xe7aa, 0xb0f3, 0xc8de, 0xbde1, 0xe7ab, 0xc8c6, 0xc084, 0xe7ac, /*0xd0-0xd7*/
+ 0xbbe6, 0xb8f8, 0xd1a4, 0xe7ad, 0xc2e7, 0xbef8, 0xbdca, 0xcdb3, /*0xd8-0xdf*/
+ 0xe7ae, 0xe7af, 0xbeee, 0xd0e5, 0xc085, 0xcbe7, 0xccd0, 0xbccc, /*0xe0-0xe7*/
+ 0xe7b0, 0xbca8, 0xd0f7, 0xe7b1, 0xc086, 0xd0f8, 0xe7b2, 0xe7b3, /*0xe8-0xef*/
+ 0xb4c2, 0xe7b4, 0xe7b5, 0xc9fe, 0xceac, 0xc3e0, 0xe7b7, 0xb1c1, /*0xf0-0xf7*/
+ 0xb3f1, 0xc087, 0xe7b8, 0xe7b9, 0xd7db, 0xd5c0, 0xe7ba, 0xc2cc, /*0xf8-0xff*/
+ /* 0x7f00 */
+ 0xd7ba, 0xe7bb, 0xe7bc, 0xe7bd, 0xbcea, 0xc3e5, 0xc0c2, 0xe7be, /*0x00-0x07*/
+ 0xe7bf, 0xbca9, 0xc088, 0xe7c0, 0xe7c1, 0xe7b6, 0xb6d0, 0xe7c2, /*0x08-0x0f*/
+ 0xc089, 0xe7c3, 0xe7c4, 0xbbba, 0xb5de, 0xc2c6, 0xb1e0, 0xe7c5, /*0x10-0x17*/
+ 0xd4b5, 0xe7c6, 0xb8bf, 0xe7c8, 0xe7c7, 0xb7ec, 0xc08a, 0xe7c9, /*0x18-0x1f*/
+ 0xb2f8, 0xe7ca, 0xe7cb, 0xe7cc, 0xe7cd, 0xe7ce, 0xe7cf, 0xe7d0, /*0x20-0x27*/
+ 0xd3a7, 0xcbf5, 0xe7d1, 0xe7d2, 0xe7d3, 0xe7d4, 0xc9c9, 0xe7d5, /*0x28-0x2f*/
+ 0xe7d6, 0xe7d7, 0xe7d8, 0xe7d9, 0xbdc9, 0xe7da, 0xf3be, 0xc08b, /*0x30-0x37*/
+ 0xb8d7, 0xc08c, 0xc8b1, 0xc08d, 0xc08e, 0xc08f, 0xc090, 0xc091, /*0x38-0x3f*/
+ 0xc092, 0xc093, 0xf3bf, 0xc094, 0xf3c0, 0xf3c1, 0xc095, 0xc096, /*0x40-0x47*/
+ 0xc097, 0xc098, 0xc099, 0xc09a, 0xc09b, 0xc09c, 0xc09d, 0xc09e, /*0x48-0x4f*/
+ 0xb9de, 0xcdf8, 0xc09f, 0xc0a0, 0xd8e8, 0xbab1, 0xc140, 0xc2de, /*0x50-0x57*/
+ 0xeeb7, 0xc141, 0xb7a3, 0xc142, 0xc143, 0xc144, 0xc145, 0xeeb9, /*0x58-0x5f*/
+ 0xc146, 0xeeb8, 0xb0d5, 0xc147, 0xc148, 0xc149, 0xc14a, 0xc14b, /*0x60-0x67*/
+ 0xeebb, 0xd5d6, 0xd7ef, 0xc14c, 0xc14d, 0xc14e, 0xd6c3, 0xc14f, /*0x68-0x6f*/
+ 0xc150, 0xeebd, 0xcaf0, 0xc151, 0xeebc, 0xc152, 0xc153, 0xc154, /*0x70-0x77*/
+ 0xc155, 0xeebe, 0xc156, 0xc157, 0xc158, 0xc159, 0xeec0, 0xc15a, /*0x78-0x7f*/
+ 0xc15b, 0xeebf, 0xc15c, 0xc15d, 0xc15e, 0xc15f, 0xc160, 0xc161, /*0x80-0x87*/
+ 0xc162, 0xc163, 0xd1f2, 0xc164, 0xc7bc, 0xc165, 0xc3c0, 0xc166, /*0x88-0x8f*/
+ 0xc167, 0xc168, 0xc169, 0xc16a, 0xb8e1, 0xc16b, 0xc16c, 0xc16d, /*0x90-0x97*/
+ 0xc16e, 0xc16f, 0xc1e7, 0xc170, 0xc171, 0xf4c6, 0xd0df, 0xf4c7, /*0x98-0x9f*/
+ 0xc172, 0xcfdb, 0xc173, 0xc174, 0xc8ba, 0xc175, 0xc176, 0xf4c8, /*0xa0-0xa7*/
+ 0xc177, 0xc178, 0xc179, 0xc17a, 0xc17b, 0xc17c, 0xc17d, 0xf4c9, /*0xa8-0xaf*/
+ 0xf4ca, 0xc17e, 0xf4cb, 0xc180, 0xc181, 0xc182, 0xc183, 0xc184, /*0xb0-0xb7*/
+ 0xd9fa, 0xb8fe, 0xc185, 0xc186, 0xe5f1, 0xd3f0, 0xc187, 0xf4e0, /*0xb8-0xbf*/
+ 0xc188, 0xcecc, 0xc189, 0xc18a, 0xc18b, 0xb3e1, 0xc18c, 0xc18d, /*0xc0-0xc7*/
+ 0xc18e, 0xc18f, 0xf1b4, 0xc190, 0xd2ee, 0xc191, 0xf4e1, 0xc192, /*0xc8-0xcf*/
+ 0xc193, 0xc194, 0xc195, 0xc196, 0xcfe8, 0xf4e2, 0xc197, 0xc198, /*0xd0-0xd7*/
+ 0xc7cc, 0xc199, 0xc19a, 0xc19b, 0xc19c, 0xc19d, 0xc19e, 0xb5d4, /*0xd8-0xdf*/
+ 0xb4e4, 0xf4e4, 0xc19f, 0xc1a0, 0xc240, 0xf4e3, 0xf4e5, 0xc241, /*0xe0-0xe7*/
+ 0xc242, 0xf4e6, 0xc243, 0xc244, 0xc245, 0xc246, 0xf4e7, 0xc247, /*0xe8-0xef*/
+ 0xbab2, 0xb0bf, 0xc248, 0xf4e8, 0xc249, 0xc24a, 0xc24b, 0xc24c, /*0xf0-0xf7*/
+ 0xc24d, 0xc24e, 0xc24f, 0xb7ad, 0xd2ed, 0xc250, 0xc251, 0xc252, /*0xf8-0xff*/
+ /* 0x8000 */
+ 0xd2ab, 0xc0cf, 0xc253, 0xbfbc, 0xeba3, 0xd5df, 0xeac8, 0xc254, /*0x00-0x07*/
+ 0xc255, 0xc256, 0xc257, 0xf1f3, 0xb6f8, 0xcba3, 0xc258, 0xc259, /*0x08-0x0f*/
+ 0xc4cd, 0xc25a, 0xf1e7, 0xc25b, 0xf1e8, 0xb8fb, 0xf1e9, 0xbac4, /*0x10-0x17*/
+ 0xd4c5, 0xb0d2, 0xc25c, 0xc25d, 0xf1ea, 0xc25e, 0xc25f, 0xc260, /*0x18-0x1f*/
+ 0xf1eb, 0xc261, 0xf1ec, 0xc262, 0xc263, 0xf1ed, 0xf1ee, 0xf1ef, /*0x20-0x27*/
+ 0xf1f1, 0xf1f0, 0xc5d5, 0xc264, 0xc265, 0xc266, 0xc267, 0xc268, /*0x28-0x2f*/
+ 0xc269, 0xf1f2, 0xc26a, 0xb6fa, 0xc26b, 0xf1f4, 0xd2ae, 0xdec7, /*0x30-0x37*/
+ 0xcbca, 0xc26c, 0xc26d, 0xb3dc, 0xc26e, 0xb5a2, 0xc26f, 0xb9a2, /*0x38-0x3f*/
+ 0xc270, 0xc271, 0xc4f4, 0xf1f5, 0xc272, 0xc273, 0xf1f6, 0xc274, /*0x40-0x47*/
+ 0xc275, 0xc276, 0xc1c4, 0xc1fb, 0xd6b0, 0xf1f7, 0xc277, 0xc278, /*0x48-0x4f*/
+ 0xc279, 0xc27a, 0xf1f8, 0xc27b, 0xc1aa, 0xc27c, 0xc27d, 0xc27e, /*0x50-0x57*/
+ 0xc6b8, 0xc280, 0xbedb, 0xc281, 0xc282, 0xc283, 0xc284, 0xc285, /*0x58-0x5f*/
+ 0xc286, 0xc287, 0xc288, 0xc289, 0xc28a, 0xc28b, 0xc28c, 0xc28d, /*0x60-0x67*/
+ 0xc28e, 0xf1f9, 0xb4cf, 0xc28f, 0xc290, 0xc291, 0xc292, 0xc293, /*0x68-0x6f*/
+ 0xc294, 0xf1fa, 0xc295, 0xc296, 0xc297, 0xc298, 0xc299, 0xc29a, /*0x70-0x77*/
+ 0xc29b, 0xc29c, 0xc29d, 0xc29e, 0xc29f, 0xc2a0, 0xc340, 0xedb2, /*0x78-0x7f*/
+ 0xedb1, 0xc341, 0xc342, 0xcbe0, 0xd2de, 0xc343, 0xcbc1, 0xd5d8, /*0x80-0x87*/
+ 0xc344, 0xc8e2, 0xc345, 0xc0df, 0xbca1, 0xc346, 0xc347, 0xc348, /*0x88-0x8f*/
+ 0xc349, 0xc34a, 0xc34b, 0xebc1, 0xc34c, 0xc34d, 0xd0a4, 0xc34e, /*0x90-0x97*/
+ 0xd6e2, 0xc34f, 0xb6c7, 0xb8d8, 0xebc0, 0xb8ce, 0xc350, 0xebbf, /*0x98-0x9f*/
+ 0xb3a6, 0xb9c9, 0xd6ab, 0xc351, 0xb7f4, 0xb7ca, 0xc352, 0xc353, /*0xa0-0xa7*/
+ 0xc354, 0xbce7, 0xb7be, 0xebc6, 0xc355, 0xebc7, 0xb0b9, 0xbfcf, /*0xa8-0xaf*/
+ 0xc356, 0xebc5, 0xd3fd, 0xc357, 0xebc8, 0xc358, 0xc359, 0xebc9, /*0xb0-0xb7*/
+ 0xc35a, 0xc35b, 0xb7ce, 0xc35c, 0xebc2, 0xebc4, 0xc9f6, 0xd6d7, /*0xb8-0xbf*/
+ 0xd5cd, 0xd0b2, 0xebcf, 0xceb8, 0xebd0, 0xc35d, 0xb5a8, 0xc35e, /*0xc0-0xc7*/
+ 0xc35f, 0xc360, 0xc361, 0xc362, 0xb1b3, 0xebd2, 0xcca5, 0xc363, /*0xc8-0xcf*/
+ 0xc364, 0xc365, 0xc366, 0xc367, 0xc368, 0xc369, 0xc5d6, 0xebd3, /*0xd0-0xd7*/
+ 0xc36a, 0xebd1, 0xc5df, 0xebce, 0xcaa4, 0xebd5, 0xb0fb, 0xc36b, /*0xd8-0xdf*/
+ 0xc36c, 0xbafa, 0xc36d, 0xc36e, 0xd8b7, 0xf1e3, 0xc36f, 0xebca, /*0xe0-0xe7*/
+ 0xebcb, 0xebcc, 0xebcd, 0xebd6, 0xe6c0, 0xebd9, 0xc370, 0xbfe8, /*0xe8-0xef*/
+ 0xd2c8, 0xebd7, 0xebdc, 0xb8ec, 0xebd8, 0xc371, 0xbdba, 0xc372, /*0xf0-0xf7*/
+ 0xd0d8, 0xc373, 0xb0b7, 0xc374, 0xebdd, 0xc4dc, 0xc375, 0xc376, /*0xf8-0xff*/
+ /* 0x8100 */
+ 0xc377, 0xc378, 0xd6ac, 0xc379, 0xc37a, 0xc37b, 0xb4e0, 0xc37c, /*0x00-0x07*/
+ 0xc37d, 0xc2f6, 0xbcb9, 0xc37e, 0xc380, 0xebda, 0xebdb, 0xd4e0, /*0x08-0x0f*/
+ 0xc6ea, 0xc4d4, 0xebdf, 0xc5a7, 0xd9f5, 0xc381, 0xb2b1, 0xc382, /*0x10-0x17*/
+ 0xebe4, 0xc383, 0xbdc5, 0xc384, 0xc385, 0xc386, 0xebe2, 0xc387, /*0x18-0x1f*/
+ 0xc388, 0xc389, 0xc38a, 0xc38b, 0xc38c, 0xc38d, 0xc38e, 0xc38f, /*0x20-0x27*/
+ 0xc390, 0xc391, 0xc392, 0xc393, 0xebe3, 0xc394, 0xc395, 0xb8ac, /*0x28-0x2f*/
+ 0xc396, 0xcdd1, 0xebe5, 0xc397, 0xc398, 0xc399, 0xebe1, 0xc39a, /*0x30-0x37*/
+ 0xc1b3, 0xc39b, 0xc39c, 0xc39d, 0xc39e, 0xc39f, 0xc6a2, 0xc3a0, /*0x38-0x3f*/
+ 0xc440, 0xc441, 0xc442, 0xc443, 0xc444, 0xc445, 0xccf3, 0xc446, /*0x40-0x47*/
+ 0xebe6, 0xc447, 0xc0b0, 0xd2b8, 0xebe7, 0xc448, 0xc449, 0xc44a, /*0x48-0x4f*/
+ 0xb8af, 0xb8ad, 0xc44b, 0xebe8, 0xc7bb, 0xcdf3, 0xc44c, 0xc44d, /*0x50-0x57*/
+ 0xc44e, 0xebea, 0xebeb, 0xc44f, 0xc450, 0xc451, 0xc452, 0xc453, /*0x58-0x5f*/
+ 0xebed, 0xc454, 0xc455, 0xc456, 0xc457, 0xd0c8, 0xc458, 0xebf2, /*0x60-0x67*/
+ 0xc459, 0xebee, 0xc45a, 0xc45b, 0xc45c, 0xebf1, 0xc8f9, 0xc45d, /*0x68-0x6f*/
+ 0xd1fc, 0xebec, 0xc45e, 0xc45f, 0xebe9, 0xc460, 0xc461, 0xc462, /*0x70-0x77*/
+ 0xc463, 0xb8b9, 0xcfd9, 0xc4e5, 0xebef, 0xebf0, 0xccda, 0xcdc8, /*0x78-0x7f*/
+ 0xb0f2, 0xc464, 0xebf6, 0xc465, 0xc466, 0xc467, 0xc468, 0xc469, /*0x80-0x87*/
+ 0xebf5, 0xc46a, 0xb2b2, 0xc46b, 0xc46c, 0xc46d, 0xc46e, 0xb8e0, /*0x88-0x8f*/
+ 0xc46f, 0xebf7, 0xc470, 0xc471, 0xc472, 0xc473, 0xc474, 0xc475, /*0x90-0x97*/
+ 0xb1ec, 0xc476, 0xc477, 0xccc5, 0xc4a4, 0xcfa5, 0xc478, 0xc479, /*0x98-0x9f*/
+ 0xc47a, 0xc47b, 0xc47c, 0xebf9, 0xc47d, 0xc47e, 0xeca2, 0xc480, /*0xa0-0xa7*/
+ 0xc5f2, 0xc481, 0xebfa, 0xc482, 0xc483, 0xc484, 0xc485, 0xc486, /*0xa8-0xaf*/
+ 0xc487, 0xc488, 0xc489, 0xc9c5, 0xc48a, 0xc48b, 0xc48c, 0xc48d, /*0xb0-0xb7*/
+ 0xc48e, 0xc48f, 0xe2df, 0xebfe, 0xc490, 0xc491, 0xc492, 0xc493, /*0xb8-0xbf*/
+ 0xcdce, 0xeca1, 0xb1db, 0xd3b7, 0xc494, 0xc495, 0xd2dc, 0xc496, /*0xc0-0xc7*/
+ 0xc497, 0xc498, 0xebfd, 0xc499, 0xebfb, 0xc49a, 0xc49b, 0xc49c, /*0xc8-0xcf*/
+ 0xc49d, 0xc49e, 0xc49f, 0xc4a0, 0xc540, 0xc541, 0xc542, 0xc543, /*0xd0-0xd7*/
+ 0xc544, 0xc545, 0xc546, 0xc547, 0xc548, 0xc549, 0xc54a, 0xc54b, /*0xd8-0xdf*/
+ 0xc54c, 0xc54d, 0xc54e, 0xb3bc, 0xc54f, 0xc550, 0xc551, 0xeab0, /*0xe0-0xe7*/
+ 0xc552, 0xc553, 0xd7d4, 0xc554, 0xf4ab, 0xb3f4, 0xc555, 0xc556, /*0xe8-0xef*/
+ 0xc557, 0xc558, 0xc559, 0xd6c1, 0xd6c2, 0xc55a, 0xc55b, 0xc55c, /*0xf0-0xf7*/
+ 0xc55d, 0xc55e, 0xc55f, 0xd5e9, 0xbeca, 0xc560, 0xf4a7, 0xc561, /*0xf8-0xff*/
+ /* 0x8200 */
+ 0xd2a8, 0xf4a8, 0xf4a9, 0xc562, 0xf4aa, 0xbecb, 0xd3df, 0xc563, /*0x00-0x07*/
+ 0xc564, 0xc565, 0xc566, 0xc567, 0xc9e0, 0xc9e1, 0xc568, 0xc569, /*0x08-0x0f*/
+ 0xf3c2, 0xc56a, 0xcae6, 0xc56b, 0xccf2, 0xc56c, 0xc56d, 0xc56e, /*0x10-0x17*/
+ 0xc56f, 0xc570, 0xc571, 0xe2b6, 0xcbb4, 0xc572, 0xcee8, 0xd6db, /*0x18-0x1f*/
+ 0xc573, 0xf4ad, 0xf4ae, 0xf4af, 0xc574, 0xc575, 0xc576, 0xc577, /*0x20-0x27*/
+ 0xf4b2, 0xc578, 0xbabd, 0xf4b3, 0xb0e3, 0xf4b0, 0xc579, 0xf4b1, /*0x28-0x2f*/
+ 0xbda2, 0xb2d5, 0xc57a, 0xf4b6, 0xf4b7, 0xb6e6, 0xb2b0, 0xcfcf, /*0x30-0x37*/
+ 0xf4b4, 0xb4ac, 0xc57b, 0xf4b5, 0xc57c, 0xc57d, 0xf4b8, 0xc57e, /*0x38-0x3f*/
+ 0xc580, 0xc581, 0xc582, 0xc583, 0xf4b9, 0xc584, 0xc585, 0xcda7, /*0x40-0x47*/
+ 0xc586, 0xf4ba, 0xc587, 0xf4bb, 0xc588, 0xc589, 0xc58a, 0xf4bc, /*0x48-0x4f*/
+ 0xc58b, 0xc58c, 0xc58d, 0xc58e, 0xc58f, 0xc590, 0xc591, 0xc592, /*0x50-0x57*/
+ 0xcbd2, 0xc593, 0xf4bd, 0xc594, 0xc595, 0xc596, 0xc597, 0xf4be, /*0x58-0x5f*/
+ 0xc598, 0xc599, 0xc59a, 0xc59b, 0xc59c, 0xc59d, 0xc59e, 0xc59f, /*0x60-0x67*/
+ 0xf4bf, 0xc5a0, 0xc640, 0xc641, 0xc642, 0xc643, 0xf4de, 0xc1bc, /*0x68-0x6f*/
+ 0xbce8, 0xc644, 0xc9ab, 0xd1de, 0xe5f5, 0xc645, 0xc646, 0xc647, /*0x70-0x77*/
+ 0xc648, 0xdcb3, 0xd2d5, 0xc649, 0xc64a, 0xdcb4, 0xb0ac, 0xdcb5, /*0x78-0x7f*/
+ 0xc64b, 0xc64c, 0xbdda, 0xc64d, 0xdcb9, 0xc64e, 0xc64f, 0xc650, /*0x80-0x87*/
+ 0xd8c2, 0xc651, 0xdcb7, 0xd3f3, 0xc652, 0xc9d6, 0xdcba, 0xdcb6, /*0x88-0x8f*/
+ 0xc653, 0xdcbb, 0xc3a2, 0xc654, 0xc655, 0xc656, 0xc657, 0xdcbc, /*0x90-0x97*/
+ 0xdcc5, 0xdcbd, 0xc658, 0xc659, 0xcedf, 0xd6a5, 0xc65a, 0xdccf, /*0x98-0x9f*/
+ 0xc65b, 0xdccd, 0xc65c, 0xc65d, 0xdcd2, 0xbde6, 0xc2ab, 0xc65e, /*0xa0-0xa7*/
+ 0xdcb8, 0xdccb, 0xdcce, 0xdcbe, 0xb7d2, 0xb0c5, 0xdcc7, 0xd0be, /*0xa8-0xaf*/
+ 0xdcc1, 0xbba8, 0xc65f, 0xb7bc, 0xdccc, 0xc660, 0xc661, 0xdcc6, /*0xb0-0xb7*/
+ 0xdcbf, 0xc7db, 0xc662, 0xc663, 0xc664, 0xd1bf, 0xdcc0, 0xc665, /*0xb8-0xbf*/
+ 0xc666, 0xdcca, 0xc667, 0xc668, 0xdcd0, 0xc669, 0xc66a, 0xcead, /*0xc0-0xc7*/
+ 0xdcc2, 0xc66b, 0xdcc3, 0xdcc8, 0xdcc9, 0xb2d4, 0xdcd1, 0xcbd5, /*0xc8-0xcf*/
+ 0xc66c, 0xd4b7, 0xdcdb, 0xdcdf, 0xcca6, 0xdce6, 0xc66d, 0xc3e7, /*0xd0-0xd7*/
+ 0xdcdc, 0xc66e, 0xc66f, 0xbfc1, 0xdcd9, 0xc670, 0xb0fa, 0xb9b6, /*0xd8-0xdf*/
+ 0xdce5, 0xdcd3, 0xc671, 0xdcc4, 0xdcd6, 0xc8f4, 0xbfe0, 0xc672, /*0xe0-0xe7*/
+ 0xc673, 0xc674, 0xc675, 0xc9bb, 0xc676, 0xc677, 0xc678, 0xb1bd, /*0xe8-0xef*/
+ 0xc679, 0xd3a2, 0xc67a, 0xc67b, 0xdcda, 0xc67c, 0xc67d, 0xdcd5, /*0xf0-0xf7*/
+ 0xc67e, 0xc6bb, 0xc680, 0xdcde, 0xc681, 0xc682, 0xc683, 0xc684, /*0xf8-0xff*/
+ /* 0x8300 */
+ 0xc685, 0xd7c2, 0xc3af, 0xb7b6, 0xc7d1, 0xc3a9, 0xdce2, 0xdcd8, /*0x00-0x07*/
+ 0xdceb, 0xdcd4, 0xc686, 0xc687, 0xdcdd, 0xc688, 0xbea5, 0xdcd7, /*0x08-0x0f*/
+ 0xc689, 0xdce0, 0xc68a, 0xc68b, 0xdce3, 0xdce4, 0xc68c, 0xdcf8, /*0x10-0x17*/
+ 0xc68d, 0xc68e, 0xdce1, 0xdda2, 0xdce7, 0xc68f, 0xc690, 0xc691, /*0x18-0x1f*/
+ 0xc692, 0xc693, 0xc694, 0xc695, 0xc696, 0xc697, 0xc698, 0xbceb, /*0x20-0x27*/
+ 0xb4c4, 0xc699, 0xc69a, 0xc3a3, 0xb2e7, 0xdcfa, 0xc69b, 0xdcf2, /*0x28-0x2f*/
+ 0xc69c, 0xdcef, 0xc69d, 0xdcfc, 0xdcee, 0xd2f0, 0xb2e8, 0xc69e, /*0x30-0x37*/
+ 0xc8d7, 0xc8e3, 0xdcfb, 0xc69f, 0xdced, 0xc6a0, 0xc740, 0xc741, /*0x38-0x3f*/
+ 0xdcf7, 0xc742, 0xc743, 0xdcf5, 0xc744, 0xc745, 0xbea3, 0xdcf4, /*0x40-0x47*/
+ 0xc746, 0xb2dd, 0xc747, 0xc748, 0xc749, 0xc74a, 0xc74b, 0xdcf3, /*0x48-0x4f*/
+ 0xbcf6, 0xdce8, 0xbbc4, 0xc74c, 0xc0f3, 0xc74d, 0xc74e, 0xc74f, /*0x50-0x57*/
+ 0xc750, 0xc751, 0xbcd4, 0xdce9, 0xdcea, 0xc752, 0xdcf1, 0xdcf6, /*0x58-0x5f*/
+ 0xdcf9, 0xb5b4, 0xc753, 0xc8d9, 0xbbe7, 0xdcfe, 0xdcfd, 0xd3ab, /*0x60-0x67*/
+ 0xdda1, 0xdda3, 0xdda5, 0xd2f1, 0xdda4, 0xdda6, 0xdda7, 0xd2a9, /*0x68-0x6f*/
+ 0xc754, 0xc755, 0xc756, 0xc757, 0xc758, 0xc759, 0xc75a, 0xbac9, /*0x70-0x77*/
+ 0xdda9, 0xc75b, 0xc75c, 0xddb6, 0xddb1, 0xddb4, 0xc75d, 0xc75e, /*0x78-0x7f*/
+ 0xc75f, 0xc760, 0xc761, 0xc762, 0xc763, 0xddb0, 0xc6ce, 0xc764, /*0x80-0x87*/
+ 0xc765, 0xc0f2, 0xc766, 0xc767, 0xc768, 0xc769, 0xc9af, 0xc76a, /*0x88-0x8f*/
+ 0xc76b, 0xc76c, 0xdcec, 0xddae, 0xc76d, 0xc76e, 0xc76f, 0xc770, /*0x90-0x97*/
+ 0xddb7, 0xc771, 0xc772, 0xdcf0, 0xddaf, 0xc773, 0xddb8, 0xc774, /*0x98-0x9f*/
+ 0xddac, 0xc775, 0xc776, 0xc777, 0xc778, 0xc779, 0xc77a, 0xc77b, /*0xa0-0xa7*/
+ 0xddb9, 0xddb3, 0xddad, 0xc4aa, 0xc77c, 0xc77d, 0xc77e, 0xc780, /*0xa8-0xaf*/
+ 0xdda8, 0xc0b3, 0xc1ab, 0xddaa, 0xddab, 0xc781, 0xddb2, 0xbbf1, /*0xb0-0xb7*/
+ 0xddb5, 0xd3a8, 0xddba, 0xc782, 0xddbb, 0xc3a7, 0xc783, 0xc784, /*0xb8-0xbf*/
+ 0xddd2, 0xddbc, 0xc785, 0xc786, 0xc787, 0xddd1, 0xc788, 0xb9bd, /*0xc0-0xc7*/
+ 0xc789, 0xc78a, 0xbed5, 0xc78b, 0xbefa, 0xc78c, 0xc78d, 0xbaca, /*0xc8-0xcf*/
+ 0xc78e, 0xc78f, 0xc790, 0xc791, 0xddca, 0xc792, 0xddc5, 0xc793, /*0xd0-0xd7*/
+ 0xddbf, 0xc794, 0xc795, 0xc796, 0xb2cb, 0xddc3, 0xc797, 0xddcb, /*0xd8-0xdf*/
+ 0xb2a4, 0xddd5, 0xc798, 0xc799, 0xc79a, 0xddbe, 0xc79b, 0xc79c, /*0xe0-0xe7*/
+ 0xc79d, 0xc6d0, 0xddd0, 0xc79e, 0xc79f, 0xc7a0, 0xc840, 0xc841, /*0xe8-0xef*/
+ 0xddd4, 0xc1e2, 0xb7c6, 0xc842, 0xc843, 0xc844, 0xc845, 0xc846, /*0xf0-0xf7*/
+ 0xddce, 0xddcf, 0xc847, 0xc848, 0xc849, 0xddc4, 0xc84a, 0xc84b, /*0xf8-0xff*/
+ /* 0x8400 */
+ 0xc84c, 0xddbd, 0xc84d, 0xddcd, 0xccd1, 0xc84e, 0xddc9, 0xc84f, /*0x00-0x07*/
+ 0xc850, 0xc851, 0xc852, 0xddc2, 0xc3c8, 0xc6bc, 0xceae, 0xddcc, /*0x08-0x0f*/
+ 0xc853, 0xddc8, 0xc854, 0xc855, 0xc856, 0xc857, 0xc858, 0xc859, /*0x10-0x17*/
+ 0xddc1, 0xc85a, 0xc85b, 0xc85c, 0xddc6, 0xc2dc, 0xc85d, 0xc85e, /*0x18-0x1f*/
+ 0xc85f, 0xc860, 0xc861, 0xc862, 0xd3a9, 0xd3aa, 0xddd3, 0xcff4, /*0x20-0x27*/
+ 0xc8f8, 0xc863, 0xc864, 0xc865, 0xc866, 0xc867, 0xc868, 0xc869, /*0x28-0x2f*/
+ 0xc86a, 0xdde6, 0xc86b, 0xc86c, 0xc86d, 0xc86e, 0xc86f, 0xc870, /*0x30-0x37*/
+ 0xddc7, 0xc871, 0xc872, 0xc873, 0xdde0, 0xc2e4, 0xc874, 0xc875, /*0x38-0x3f*/
+ 0xc876, 0xc877, 0xc878, 0xc879, 0xc87a, 0xc87b, 0xdde1, 0xc87c, /*0x40-0x47*/
+ 0xc87d, 0xc87e, 0xc880, 0xc881, 0xc882, 0xc883, 0xc884, 0xc885, /*0x48-0x4f*/
+ 0xc886, 0xddd7, 0xc887, 0xc888, 0xc889, 0xc88a, 0xc88b, 0xd6f8, /*0x50-0x57*/
+ 0xc88c, 0xddd9, 0xddd8, 0xb8f0, 0xddd6, 0xc88d, 0xc88e, 0xc88f, /*0x58-0x5f*/
+ 0xc890, 0xc6cf, 0xc891, 0xb6ad, 0xc892, 0xc893, 0xc894, 0xc895, /*0x60-0x67*/
+ 0xc896, 0xdde2, 0xc897, 0xbaf9, 0xd4e1, 0xdde7, 0xc898, 0xc899, /*0x68-0x6f*/
+ 0xc89a, 0xb4d0, 0xc89b, 0xddda, 0xc89c, 0xbffb, 0xdde3, 0xc89d, /*0x70-0x77*/
+ 0xdddf, 0xc89e, 0xdddd, 0xc89f, 0xc8a0, 0xc940, 0xc941, 0xc942, /*0x78-0x7f*/
+ 0xc943, 0xc944, 0xb5d9, 0xc945, 0xc946, 0xc947, 0xc948, 0xdddb, /*0x80-0x87*/
+ 0xdddc, 0xddde, 0xc949, 0xbdaf, 0xdde4, 0xc94a, 0xdde5, 0xc94b, /*0x88-0x8f*/
+ 0xc94c, 0xc94d, 0xc94e, 0xc94f, 0xc950, 0xc951, 0xc952, 0xddf5, /*0x90-0x97*/
+ 0xc953, 0xc3c9, 0xc954, 0xc955, 0xcbe2, 0xc956, 0xc957, 0xc958, /*0x98-0x9f*/
+ 0xc959, 0xddf2, 0xc95a, 0xc95b, 0xc95c, 0xc95d, 0xc95e, 0xc95f, /*0xa0-0xa7*/
+ 0xc960, 0xc961, 0xc962, 0xc963, 0xc964, 0xc965, 0xc966, 0xd8e1, /*0xa8-0xaf*/
+ 0xc967, 0xc968, 0xc6d1, 0xc969, 0xddf4, 0xc96a, 0xc96b, 0xc96c, /*0xb0-0xb7*/
+ 0xd5f4, 0xddf3, 0xddf0, 0xc96d, 0xc96e, 0xddec, 0xc96f, 0xddef, /*0xb8-0xbf*/
+ 0xc970, 0xdde8, 0xc971, 0xc972, 0xd0ee, 0xc973, 0xc974, 0xc975, /*0xc0-0xc7*/
+ 0xc976, 0xc8d8, 0xddee, 0xc977, 0xc978, 0xdde9, 0xc979, 0xc97a, /*0xc8-0xcf*/
+ 0xddea, 0xcbf2, 0xc97b, 0xdded, 0xc97c, 0xc97d, 0xb1cd, 0xc97e, /*0xd0-0xd7*/
+ 0xc980, 0xc981, 0xc982, 0xc983, 0xc984, 0xc0b6, 0xc985, 0xbcbb, /*0xd8-0xdf*/
+ 0xddf1, 0xc986, 0xc987, 0xddf7, 0xc988, 0xddf6, 0xddeb, 0xc989, /*0xe0-0xe7*/
+ 0xc98a, 0xc98b, 0xc98c, 0xc98d, 0xc5ee, 0xc98e, 0xc98f, 0xc990, /*0xe8-0xef*/
+ 0xddfb, 0xc991, 0xc992, 0xc993, 0xc994, 0xc995, 0xc996, 0xc997, /*0xf0-0xf7*/
+ 0xc998, 0xc999, 0xc99a, 0xc99b, 0xdea4, 0xc99c, 0xc99d, 0xdea3, /*0xf8-0xff*/
+ /* 0x8500 */
+ 0xc99e, 0xc99f, 0xc9a0, 0xca40, 0xca41, 0xca42, 0xca43, 0xca44, /*0x00-0x07*/
+ 0xca45, 0xca46, 0xca47, 0xca48, 0xddf8, 0xca49, 0xca4a, 0xca4b, /*0x08-0x0f*/
+ 0xca4c, 0xc3ef, 0xca4d, 0xc2fb, 0xca4e, 0xca4f, 0xca50, 0xd5e1, /*0x10-0x17*/
+ 0xca51, 0xca52, 0xceb5, 0xca53, 0xca54, 0xca55, 0xca56, 0xddfd, /*0x18-0x1f*/
+ 0xca57, 0xb2cc, 0xca58, 0xca59, 0xca5a, 0xca5b, 0xca5c, 0xca5d, /*0x20-0x27*/
+ 0xca5e, 0xca5f, 0xca60, 0xc4e8, 0xcadf, 0xca61, 0xca62, 0xca63, /*0x28-0x2f*/
+ 0xca64, 0xca65, 0xca66, 0xca67, 0xca68, 0xca69, 0xca6a, 0xc7be, /*0x30-0x37*/
+ 0xddfa, 0xddfc, 0xddfe, 0xdea2, 0xb0aa, 0xb1ce, 0xca6b, 0xca6c, /*0x38-0x3f*/
+ 0xca6d, 0xca6e, 0xca6f, 0xdeac, 0xca70, 0xca71, 0xca72, 0xca73, /*0x40-0x47*/
+ 0xdea6, 0xbdb6, 0xc8ef, 0xca74, 0xca75, 0xca76, 0xca77, 0xca78, /*0x48-0x4f*/
+ 0xca79, 0xca7a, 0xca7b, 0xca7c, 0xca7d, 0xca7e, 0xdea1, 0xca80, /*0x50-0x57*/
+ 0xca81, 0xdea5, 0xca82, 0xca83, 0xca84, 0xca85, 0xdea9, 0xca86, /*0x58-0x5f*/
+ 0xca87, 0xca88, 0xca89, 0xca8a, 0xdea8, 0xca8b, 0xca8c, 0xca8d, /*0x60-0x67*/
+ 0xdea7, 0xca8e, 0xca8f, 0xca90, 0xca91, 0xca92, 0xca93, 0xca94, /*0x68-0x6f*/
+ 0xca95, 0xca96, 0xdead, 0xca97, 0xd4cc, 0xca98, 0xca99, 0xca9a, /*0x70-0x77*/
+ 0xca9b, 0xdeb3, 0xdeaa, 0xdeae, 0xca9c, 0xca9d, 0xc0d9, 0xca9e, /*0x78-0x7f*/
+ 0xca9f, 0xcaa0, 0xcb40, 0xcb41, 0xb1a1, 0xdeb6, 0xcb42, 0xdeb1, /*0x80-0x87*/
+ 0xcb43, 0xcb44, 0xcb45, 0xcb46, 0xcb47, 0xcb48, 0xcb49, 0xdeb2, /*0x88-0x8f*/
+ 0xcb4a, 0xcb4b, 0xcb4c, 0xcb4d, 0xcb4e, 0xcb4f, 0xcb50, 0xcb51, /*0x90-0x97*/
+ 0xcb52, 0xcb53, 0xcb54, 0xd1a6, 0xdeb5, 0xcb55, 0xcb56, 0xcb57, /*0x98-0x9f*/
+ 0xcb58, 0xcb59, 0xcb5a, 0xcb5b, 0xdeaf, 0xcb5c, 0xcb5d, 0xcb5e, /*0xa0-0xa7*/
+ 0xdeb0, 0xcb5f, 0xd0bd, 0xcb60, 0xcb61, 0xcb62, 0xdeb4, 0xcaed, /*0xa8-0xaf*/
+ 0xdeb9, 0xcb63, 0xcb64, 0xcb65, 0xcb66, 0xcb67, 0xcb68, 0xdeb8, /*0xb0-0xb7*/
+ 0xcb69, 0xdeb7, 0xcb6a, 0xcb6b, 0xcb6c, 0xcb6d, 0xcb6e, 0xcb6f, /*0xb8-0xbf*/
+ 0xcb70, 0xdebb, 0xcb71, 0xcb72, 0xcb73, 0xcb74, 0xcb75, 0xcb76, /*0xc0-0xc7*/
+ 0xcb77, 0xbde5, 0xcb78, 0xcb79, 0xcb7a, 0xcb7b, 0xcb7c, 0xb2d8, /*0xc8-0xcf*/
+ 0xc3ea, 0xcb7d, 0xcb7e, 0xdeba, 0xcb80, 0xc5ba, 0xcb81, 0xcb82, /*0xd0-0xd7*/
+ 0xcb83, 0xcb84, 0xcb85, 0xcb86, 0xdebc, 0xcb87, 0xcb88, 0xcb89, /*0xd8-0xdf*/
+ 0xcb8a, 0xcb8b, 0xcb8c, 0xcb8d, 0xccd9, 0xcb8e, 0xcb8f, 0xcb90, /*0xe0-0xe7*/
+ 0xcb91, 0xb7aa, 0xcb92, 0xcb93, 0xcb94, 0xcb95, 0xcb96, 0xcb97, /*0xe8-0xef*/
+ 0xcb98, 0xcb99, 0xcb9a, 0xcb9b, 0xcb9c, 0xcb9d, 0xcb9e, 0xcb9f, /*0xf0-0xf7*/
+ 0xcba0, 0xcc40, 0xcc41, 0xd4e5, 0xcc42, 0xcc43, 0xcc44, 0xdebd, /*0xf8-0xff*/
+ /* 0x8600 */
+ 0xcc45, 0xcc46, 0xcc47, 0xcc48, 0xcc49, 0xdebf, 0xcc4a, 0xcc4b, /*0x00-0x07*/
+ 0xcc4c, 0xcc4d, 0xcc4e, 0xcc4f, 0xcc50, 0xcc51, 0xcc52, 0xcc53, /*0x08-0x0f*/
+ 0xcc54, 0xc4a2, 0xcc55, 0xcc56, 0xcc57, 0xcc58, 0xdec1, 0xcc59, /*0x10-0x17*/
+ 0xcc5a, 0xcc5b, 0xcc5c, 0xcc5d, 0xcc5e, 0xcc5f, 0xcc60, 0xcc61, /*0x18-0x1f*/
+ 0xcc62, 0xcc63, 0xcc64, 0xcc65, 0xcc66, 0xcc67, 0xcc68, 0xdebe, /*0x20-0x27*/
+ 0xcc69, 0xdec0, 0xcc6a, 0xcc6b, 0xcc6c, 0xcc6d, 0xcc6e, 0xcc6f, /*0x28-0x2f*/
+ 0xcc70, 0xcc71, 0xcc72, 0xcc73, 0xcc74, 0xcc75, 0xcc76, 0xcc77, /*0x30-0x37*/
+ 0xd5ba, 0xcc78, 0xcc79, 0xcc7a, 0xdec2, 0xcc7b, 0xcc7c, 0xcc7d, /*0x38-0x3f*/
+ 0xcc7e, 0xcc80, 0xcc81, 0xcc82, 0xcc83, 0xcc84, 0xcc85, 0xcc86, /*0x40-0x47*/
+ 0xcc87, 0xcc88, 0xcc89, 0xcc8a, 0xcc8b, 0xf2ae, 0xbba2, 0xc2b2, /*0x48-0x4f*/
+ 0xc5b0, 0xc2c7, 0xcc8c, 0xcc8d, 0xf2af, 0xcc8e, 0xcc8f, 0xcc90, /*0x50-0x57*/
+ 0xcc91, 0xcc92, 0xd0e9, 0xcc93, 0xcc94, 0xcc95, 0xd3dd, 0xcc96, /*0x58-0x5f*/
+ 0xcc97, 0xcc98, 0xebbd, 0xcc99, 0xcc9a, 0xcc9b, 0xcc9c, 0xcc9d, /*0x60-0x67*/
+ 0xcc9e, 0xcc9f, 0xcca0, 0xb3e6, 0xf2b0, 0xcd40, 0xf2b1, 0xcd41, /*0x68-0x6f*/
+ 0xcd42, 0xcaad, 0xcd43, 0xcd44, 0xcd45, 0xcd46, 0xcd47, 0xcd48, /*0x70-0x77*/
+ 0xcd49, 0xbae7, 0xf2b3, 0xf2b5, 0xf2b4, 0xcbe4, 0xcfba, 0xf2b2, /*0x78-0x7f*/
+ 0xcab4, 0xd2cf, 0xc2ec, 0xcd4a, 0xcd4b, 0xcd4c, 0xcd4d, 0xcd4e, /*0x80-0x87*/
+ 0xcd4f, 0xcd50, 0xcec3, 0xf2b8, 0xb0f6, 0xf2b7, 0xcd51, 0xcd52, /*0x88-0x8f*/
+ 0xcd53, 0xcd54, 0xcd55, 0xf2be, 0xcd56, 0xb2cf, 0xcd57, 0xcd58, /*0x90-0x97*/
+ 0xcd59, 0xcd5a, 0xcd5b, 0xcd5c, 0xd1c1, 0xf2ba, 0xcd5d, 0xcd5e, /*0x98-0x9f*/
+ 0xcd5f, 0xcd60, 0xcd61, 0xf2bc, 0xd4e9, 0xcd62, 0xcd63, 0xf2bb, /*0xa0-0xa7*/
+ 0xf2b6, 0xf2bf, 0xf2bd, 0xcd64, 0xf2b9, 0xcd65, 0xcd66, 0xf2c7, /*0xa8-0xaf*/
+ 0xf2c4, 0xf2c6, 0xcd67, 0xcd68, 0xf2ca, 0xf2c2, 0xf2c0, 0xcd69, /*0xb0-0xb7*/
+ 0xcd6a, 0xcd6b, 0xf2c5, 0xcd6c, 0xcd6d, 0xcd6e, 0xcd6f, 0xcd70, /*0xb8-0xbf*/
+ 0xd6fb, 0xcd71, 0xcd72, 0xcd73, 0xf2c1, 0xcd74, 0xc7f9, 0xc9df, /*0xc0-0xc7*/
+ 0xcd75, 0xf2c8, 0xb9c6, 0xb5b0, 0xcd76, 0xcd77, 0xf2c3, 0xf2c9, /*0xc8-0xcf*/
+ 0xf2d0, 0xf2d6, 0xcd78, 0xcd79, 0xbbd7, 0xcd7a, 0xcd7b, 0xcd7c, /*0xd0-0xd7*/
+ 0xf2d5, 0xcddc, 0xcd7d, 0xd6eb, 0xcd7e, 0xcd80, 0xf2d2, 0xf2d4, /*0xd8-0xdf*/
+ 0xcd81, 0xcd82, 0xcd83, 0xcd84, 0xb8f2, 0xcd85, 0xcd86, 0xcd87, /*0xe0-0xe7*/
+ 0xcd88, 0xf2cb, 0xcd89, 0xcd8a, 0xcd8b, 0xf2ce, 0xc2f9, 0xcd8c, /*0xe8-0xef*/
+ 0xd5dd, 0xf2cc, 0xf2cd, 0xf2cf, 0xf2d3, 0xcd8d, 0xcd8e, 0xcd8f, /*0xf0-0xf7*/
+ 0xf2d9, 0xd3bc, 0xcd90, 0xcd91, 0xcd92, 0xcd93, 0xb6ea, 0xcd94, /*0xf8-0xff*/
+ /* 0x8700 */
+ 0xcaf1, 0xcd95, 0xb7e4, 0xf2d7, 0xcd96, 0xcd97, 0xcd98, 0xf2d8, /*0x00-0x07*/
+ 0xf2da, 0xf2dd, 0xf2db, 0xcd99, 0xcd9a, 0xf2dc, 0xcd9b, 0xcd9c, /*0x08-0x0f*/
+ 0xcd9d, 0xcd9e, 0xd1d1, 0xf2d1, 0xcd9f, 0xcdc9, 0xcda0, 0xcecf, /*0x10-0x17*/
+ 0xd6a9, 0xce40, 0xf2e3, 0xce41, 0xc3db, 0xce42, 0xf2e0, 0xce43, /*0x18-0x1f*/
+ 0xce44, 0xc0af, 0xf2ec, 0xf2de, 0xce45, 0xf2e1, 0xce46, 0xce47, /*0x20-0x27*/
+ 0xce48, 0xf2e8, 0xce49, 0xce4a, 0xce4b, 0xce4c, 0xf2e2, 0xce4d, /*0x28-0x2f*/
+ 0xce4e, 0xf2e7, 0xce4f, 0xce50, 0xf2e6, 0xce51, 0xce52, 0xf2e9, /*0x30-0x37*/
+ 0xce53, 0xce54, 0xce55, 0xf2df, 0xce56, 0xce57, 0xf2e4, 0xf2ea, /*0x38-0x3f*/
+ 0xce58, 0xce59, 0xce5a, 0xce5b, 0xce5c, 0xce5d, 0xce5e, 0xd3ac, /*0x40-0x47*/
+ 0xf2e5, 0xb2f5, 0xce5f, 0xce60, 0xf2f2, 0xce61, 0xd0ab, 0xce62, /*0x48-0x4f*/
+ 0xce63, 0xce64, 0xce65, 0xf2f5, 0xce66, 0xce67, 0xce68, 0xbbc8, /*0x50-0x57*/
+ 0xce69, 0xf2f9, 0xce6a, 0xce6b, 0xce6c, 0xce6d, 0xce6e, 0xce6f, /*0x58-0x5f*/
+ 0xf2f0, 0xce70, 0xce71, 0xf2f6, 0xf2f8, 0xf2fa, 0xce72, 0xce73, /*0x60-0x67*/
+ 0xce74, 0xce75, 0xce76, 0xce77, 0xce78, 0xce79, 0xf2f3, 0xce7a, /*0x68-0x6f*/
+ 0xf2f1, 0xce7b, 0xce7c, 0xce7d, 0xbafb, 0xce7e, 0xb5fb, 0xce80, /*0x70-0x77*/
+ 0xce81, 0xce82, 0xce83, 0xf2ef, 0xf2f7, 0xf2ed, 0xf2ee, 0xce84, /*0x78-0x7f*/
+ 0xce85, 0xce86, 0xf2eb, 0xf3a6, 0xce87, 0xf3a3, 0xce88, 0xce89, /*0x80-0x87*/
+ 0xf3a2, 0xce8a, 0xce8b, 0xf2f4, 0xce8c, 0xc8da, 0xce8d, 0xce8e, /*0x88-0x8f*/
+ 0xce8f, 0xce90, 0xce91, 0xf2fb, 0xce92, 0xce93, 0xce94, 0xf3a5, /*0x90-0x97*/
+ 0xce95, 0xce96, 0xce97, 0xce98, 0xce99, 0xce9a, 0xce9b, 0xc3f8, /*0x98-0x9f*/
+ 0xce9c, 0xce9d, 0xce9e, 0xce9f, 0xcea0, 0xcf40, 0xcf41, 0xcf42, /*0xa0-0xa7*/
+ 0xf2fd, 0xcf43, 0xcf44, 0xf3a7, 0xf3a9, 0xf3a4, 0xcf45, 0xf2fc, /*0xa8-0xaf*/
+ 0xcf46, 0xcf47, 0xcf48, 0xf3ab, 0xcf49, 0xf3aa, 0xcf4a, 0xcf4b, /*0xb0-0xb7*/
+ 0xcf4c, 0xcf4d, 0xc2dd, 0xcf4e, 0xcf4f, 0xf3ae, 0xcf50, 0xcf51, /*0xb8-0xbf*/
+ 0xf3b0, 0xcf52, 0xcf53, 0xcf54, 0xcf55, 0xcf56, 0xf3a1, 0xcf57, /*0xc0-0xc7*/
+ 0xcf58, 0xcf59, 0xf3b1, 0xf3ac, 0xcf5a, 0xcf5b, 0xcf5c, 0xcf5d, /*0xc8-0xcf*/
+ 0xcf5e, 0xf3af, 0xf2fe, 0xf3ad, 0xcf5f, 0xcf60, 0xcf61, 0xcf62, /*0xd0-0xd7*/
+ 0xcf63, 0xcf64, 0xcf65, 0xf3b2, 0xcf66, 0xcf67, 0xcf68, 0xcf69, /*0xd8-0xdf*/
+ 0xf3b4, 0xcf6a, 0xcf6b, 0xcf6c, 0xcf6d, 0xf3a8, 0xcf6e, 0xcf6f, /*0xe0-0xe7*/
+ 0xcf70, 0xcf71, 0xf3b3, 0xcf72, 0xcf73, 0xcf74, 0xf3b5, 0xcf75, /*0xe8-0xef*/
+ 0xcf76, 0xcf77, 0xcf78, 0xcf79, 0xcf7a, 0xcf7b, 0xcf7c, 0xcf7d, /*0xf0-0xf7*/
+ 0xcf7e, 0xd0b7, 0xcf80, 0xcf81, 0xcf82, 0xcf83, 0xf3b8, 0xcf84, /*0xf8-0xff*/
+ /* 0x8800 */
+ 0xcf85, 0xcf86, 0xcf87, 0xd9f9, 0xcf88, 0xcf89, 0xcf8a, 0xcf8b, /*0x00-0x07*/
+ 0xcf8c, 0xcf8d, 0xf3b9, 0xcf8e, 0xcf8f, 0xcf90, 0xcf91, 0xcf92, /*0x08-0x0f*/
+ 0xcf93, 0xcf94, 0xcf95, 0xf3b7, 0xcf96, 0xc8e4, 0xf3b6, 0xcf97, /*0x10-0x17*/
+ 0xcf98, 0xcf99, 0xcf9a, 0xf3ba, 0xcf9b, 0xcf9c, 0xcf9d, 0xcf9e, /*0x18-0x1f*/
+ 0xcf9f, 0xf3bb, 0xb4c0, 0xcfa0, 0xd040, 0xd041, 0xd042, 0xd043, /*0x20-0x27*/
+ 0xd044, 0xd045, 0xd046, 0xd047, 0xd048, 0xd049, 0xd04a, 0xd04b, /*0x28-0x2f*/
+ 0xd04c, 0xd04d, 0xeec3, 0xd04e, 0xd04f, 0xd050, 0xd051, 0xd052, /*0x30-0x37*/
+ 0xd053, 0xf3bc, 0xd054, 0xd055, 0xf3bd, 0xd056, 0xd057, 0xd058, /*0x38-0x3f*/
+ 0xd1aa, 0xd059, 0xd05a, 0xd05b, 0xf4ac, 0xd0c6, 0xd05c, 0xd05d, /*0x40-0x47*/
+ 0xd05e, 0xd05f, 0xd060, 0xd061, 0xd0d0, 0xd1dc, 0xd062, 0xd063, /*0x48-0x4f*/
+ 0xd064, 0xd065, 0xd066, 0xd067, 0xcfce, 0xd068, 0xd069, 0xbdd6, /*0x50-0x57*/
+ 0xd06a, 0xd1c3, 0xd06b, 0xd06c, 0xd06d, 0xd06e, 0xd06f, 0xd070, /*0x58-0x5f*/
+ 0xd071, 0xbae2, 0xe1e9, 0xd2c2, 0xf1c2, 0xb2b9, 0xd072, 0xd073, /*0x60-0x67*/
+ 0xb1ed, 0xf1c3, 0xd074, 0xc9c0, 0xb3c4, 0xd075, 0xd9f2, 0xd076, /*0x68-0x6f*/
+ 0xcba5, 0xd077, 0xf1c4, 0xd078, 0xd079, 0xd07a, 0xd07b, 0xd6d4, /*0x70-0x77*/
+ 0xd07c, 0xd07d, 0xd07e, 0xd080, 0xd081, 0xf1c5, 0xf4c0, 0xf1c6, /*0x78-0x7f*/
+ 0xd082, 0xd4ac, 0xf1c7, 0xd083, 0xb0c0, 0xf4c1, 0xd084, 0xd085, /*0x80-0x87*/
+ 0xf4c2, 0xd086, 0xd087, 0xb4fc, 0xd088, 0xc5db, 0xd089, 0xd08a, /*0x88-0x8f*/
+ 0xd08b, 0xd08c, 0xccbb, 0xd08d, 0xd08e, 0xd08f, 0xd0e4, 0xd090, /*0x90-0x97*/
+ 0xd091, 0xd092, 0xd093, 0xd094, 0xcde0, 0xd095, 0xd096, 0xd097, /*0x98-0x9f*/
+ 0xd098, 0xd099, 0xf1c8, 0xd09a, 0xd9f3, 0xd09b, 0xd09c, 0xd09d, /*0xa0-0xa7*/
+ 0xd09e, 0xd09f, 0xd0a0, 0xb1bb, 0xd140, 0xcfae, 0xd141, 0xd142, /*0xa8-0xaf*/
+ 0xd143, 0xb8a4, 0xd144, 0xd145, 0xd146, 0xd147, 0xd148, 0xf1ca, /*0xb0-0xb7*/
+ 0xd149, 0xd14a, 0xd14b, 0xd14c, 0xf1cb, 0xd14d, 0xd14e, 0xd14f, /*0xb8-0xbf*/
+ 0xd150, 0xb2c3, 0xc1d1, 0xd151, 0xd152, 0xd7b0, 0xf1c9, 0xd153, /*0xc0-0xc7*/
+ 0xd154, 0xf1cc, 0xd155, 0xd156, 0xd157, 0xd158, 0xf1ce, 0xd159, /*0xc8-0xcf*/
+ 0xd15a, 0xd15b, 0xd9f6, 0xd15c, 0xd2e1, 0xd4a3, 0xd15d, 0xd15e, /*0xd0-0xd7*/
+ 0xf4c3, 0xc8b9, 0xd15f, 0xd160, 0xd161, 0xd162, 0xd163, 0xf4c4, /*0xd8-0xdf*/
+ 0xd164, 0xd165, 0xf1cd, 0xf1cf, 0xbfe3, 0xf1d0, 0xd166, 0xd167, /*0xe0-0xe7*/
+ 0xf1d4, 0xd168, 0xd169, 0xd16a, 0xd16b, 0xd16c, 0xd16d, 0xd16e, /*0xe8-0xef*/
+ 0xf1d6, 0xf1d1, 0xd16f, 0xc9d1, 0xc5e1, 0xd170, 0xd171, 0xd172, /*0xf0-0xf7*/
+ 0xc2e3, 0xb9fc, 0xd173, 0xd174, 0xf1d3, 0xd175, 0xf1d5, 0xd176, /*0xf8-0xff*/
+ /* 0x8900 */
+ 0xd177, 0xd178, 0xb9d3, 0xd179, 0xd17a, 0xd17b, 0xd17c, 0xd17d, /*0x00-0x07*/
+ 0xd17e, 0xd180, 0xf1db, 0xd181, 0xd182, 0xd183, 0xd184, 0xd185, /*0x08-0x0f*/
+ 0xbad6, 0xd186, 0xb0fd, 0xf1d9, 0xd187, 0xd188, 0xd189, 0xd18a, /*0x10-0x17*/
+ 0xd18b, 0xf1d8, 0xf1d2, 0xf1da, 0xd18c, 0xd18d, 0xd18e, 0xd18f, /*0x18-0x1f*/
+ 0xd190, 0xf1d7, 0xd191, 0xd192, 0xd193, 0xc8ec, 0xd194, 0xd195, /*0x20-0x27*/
+ 0xd196, 0xd197, 0xcdca, 0xf1dd, 0xd198, 0xd199, 0xd19a, 0xd19b, /*0x28-0x2f*/
+ 0xe5bd, 0xd19c, 0xd19d, 0xd19e, 0xf1dc, 0xd19f, 0xf1de, 0xd1a0, /*0x30-0x37*/
+ 0xd240, 0xd241, 0xd242, 0xd243, 0xd244, 0xd245, 0xd246, 0xd247, /*0x38-0x3f*/
+ 0xd248, 0xf1df, 0xd249, 0xd24a, 0xcfe5, 0xd24b, 0xd24c, 0xd24d, /*0x40-0x47*/
+ 0xd24e, 0xd24f, 0xd250, 0xd251, 0xd252, 0xd253, 0xd254, 0xd255, /*0x48-0x4f*/
+ 0xd256, 0xd257, 0xd258, 0xd259, 0xd25a, 0xd25b, 0xd25c, 0xd25d, /*0x50-0x57*/
+ 0xd25e, 0xd25f, 0xd260, 0xd261, 0xd262, 0xd263, 0xf4c5, 0xbdf3, /*0x58-0x5f*/
+ 0xd264, 0xd265, 0xd266, 0xd267, 0xd268, 0xd269, 0xf1e0, 0xd26a, /*0x60-0x67*/
+ 0xd26b, 0xd26c, 0xd26d, 0xd26e, 0xd26f, 0xd270, 0xd271, 0xd272, /*0x68-0x6f*/
+ 0xd273, 0xd274, 0xd275, 0xd276, 0xd277, 0xd278, 0xd279, 0xd27a, /*0x70-0x77*/
+ 0xd27b, 0xd27c, 0xd27d, 0xf1e1, 0xd27e, 0xd280, 0xd281, 0xcef7, /*0x78-0x7f*/
+ 0xd282, 0xd2aa, 0xd283, 0xf1fb, 0xd284, 0xd285, 0xb8b2, 0xd286, /*0x80-0x87*/
+ 0xd287, 0xd288, 0xd289, 0xd28a, 0xd28b, 0xd28c, 0xd28d, 0xd28e, /*0x88-0x8f*/
+ 0xd28f, 0xd290, 0xd291, 0xd292, 0xd293, 0xd294, 0xd295, 0xd296, /*0x90-0x97*/
+ 0xd297, 0xd298, 0xd299, 0xd29a, 0xd29b, 0xd29c, 0xd29d, 0xd29e, /*0x98-0x9f*/
+ 0xd29f, 0xd2a0, 0xd340, 0xd341, 0xd342, 0xd343, 0xd344, 0xd345, /*0xa0-0xa7*/
+ 0xd346, 0xd347, 0xd348, 0xd349, 0xd34a, 0xd34b, 0xd34c, 0xd34d, /*0xa8-0xaf*/
+ 0xd34e, 0xd34f, 0xd350, 0xd351, 0xd352, 0xd353, 0xd354, 0xd355, /*0xb0-0xb7*/
+ 0xd356, 0xd357, 0xd358, 0xd359, 0xd35a, 0xd35b, 0xd35c, 0xd35d, /*0xb8-0xbf*/
+ 0xd35e, 0xbcfb, 0xb9db, 0xd35f, 0xb9e6, 0xc3d9, 0xcad3, 0xeae8, /*0xc0-0xc7*/
+ 0xc0c0, 0xbef5, 0xeae9, 0xeaea, 0xeaeb, 0xd360, 0xeaec, 0xeaed, /*0xc8-0xcf*/
+ 0xeaee, 0xeaef, 0xbdc7, 0xd361, 0xd362, 0xd363, 0xf5fb, 0xd364, /*0xd0-0xd7*/
+ 0xd365, 0xd366, 0xf5fd, 0xd367, 0xf5fe, 0xd368, 0xf5fc, 0xd369, /*0xd8-0xdf*/
+ 0xd36a, 0xd36b, 0xd36c, 0xbde2, 0xd36d, 0xf6a1, 0xb4a5, 0xd36e, /*0xe0-0xe7*/
+ 0xd36f, 0xd370, 0xd371, 0xf6a2, 0xd372, 0xd373, 0xd374, 0xf6a3, /*0xe8-0xef*/
+ 0xd375, 0xd376, 0xd377, 0xecb2, 0xd378, 0xd379, 0xd37a, 0xd37b, /*0xf0-0xf7*/
+ 0xd37c, 0xd37d, 0xd37e, 0xd380, 0xd381, 0xd382, 0xd383, 0xd384, /*0xf8-0xff*/
+ /* 0x8a00 */
+ 0xd1d4, 0xd385, 0xd386, 0xd387, 0xd388, 0xd389, 0xd38a, 0xd9ea, /*0x00-0x07*/
+ 0xd38b, 0xd38c, 0xd38d, 0xd38e, 0xd38f, 0xd390, 0xd391, 0xd392, /*0x08-0x0f*/
+ 0xd393, 0xd394, 0xd395, 0xd396, 0xd397, 0xd398, 0xd399, 0xd39a, /*0x10-0x17*/
+ 0xd39b, 0xd39c, 0xd39d, 0xd39e, 0xd39f, 0xd3a0, 0xd440, 0xd441, /*0x18-0x1f*/
+ 0xd442, 0xd443, 0xd444, 0xd445, 0xd446, 0xd447, 0xd448, 0xd449, /*0x20-0x27*/
+ 0xd44a, 0xd44b, 0xd44c, 0xd44d, 0xd44e, 0xd44f, 0xd450, 0xd451, /*0x28-0x2f*/
+ 0xd452, 0xd453, 0xd454, 0xd455, 0xd456, 0xd457, 0xd458, 0xd459, /*0x30-0x37*/
+ 0xd45a, 0xd45b, 0xd45c, 0xd45d, 0xd45e, 0xd45f, 0xf6a4, 0xd460, /*0x38-0x3f*/
+ 0xd461, 0xd462, 0xd463, 0xd464, 0xd465, 0xd466, 0xd467, 0xd468, /*0x40-0x47*/
+ 0xeeba, 0xd469, 0xd46a, 0xd46b, 0xd46c, 0xd46d, 0xd46e, 0xd46f, /*0x48-0x4f*/
+ 0xd470, 0xd471, 0xd472, 0xd473, 0xd474, 0xd475, 0xd476, 0xd477, /*0x50-0x57*/
+ 0xd478, 0xd479, 0xd47a, 0xd47b, 0xd47c, 0xd47d, 0xd47e, 0xd480, /*0x58-0x5f*/
+ 0xd481, 0xd482, 0xd483, 0xd484, 0xd485, 0xd486, 0xd487, 0xd488, /*0x60-0x67*/
+ 0xd489, 0xd48a, 0xd48b, 0xd48c, 0xd48d, 0xd48e, 0xd48f, 0xd490, /*0x68-0x6f*/
+ 0xd491, 0xd492, 0xd493, 0xd494, 0xd495, 0xd496, 0xd497, 0xd498, /*0x70-0x77*/
+ 0xd499, 0xd5b2, 0xd49a, 0xd49b, 0xd49c, 0xd49d, 0xd49e, 0xd49f, /*0x78-0x7f*/
+ 0xd4a0, 0xd540, 0xd541, 0xd542, 0xd543, 0xd544, 0xd545, 0xd546, /*0x80-0x87*/
+ 0xd547, 0xd3fe, 0xccdc, 0xd548, 0xd549, 0xd54a, 0xd54b, 0xd54c, /*0x88-0x8f*/
+ 0xd54d, 0xd54e, 0xd54f, 0xcac4, 0xd550, 0xd551, 0xd552, 0xd553, /*0x90-0x97*/
+ 0xd554, 0xd555, 0xd556, 0xd557, 0xd558, 0xd559, 0xd55a, 0xd55b, /*0x98-0x9f*/
+ 0xd55c, 0xd55d, 0xd55e, 0xd55f, 0xd560, 0xd561, 0xd562, 0xd563, /*0xa0-0xa7*/
+ 0xd564, 0xd565, 0xd566, 0xd567, 0xd568, 0xd569, 0xd56a, 0xd56b, /*0xa8-0xaf*/
+ 0xd56c, 0xd56d, 0xd56e, 0xd56f, 0xd570, 0xd571, 0xd572, 0xd573, /*0xb0-0xb7*/
+ 0xd574, 0xd575, 0xd576, 0xd577, 0xd578, 0xd579, 0xd57a, 0xd57b, /*0xb8-0xbf*/
+ 0xd57c, 0xd57d, 0xd57e, 0xd580, 0xd581, 0xd582, 0xd583, 0xd584, /*0xc0-0xc7*/
+ 0xd585, 0xd586, 0xd587, 0xd588, 0xd589, 0xd58a, 0xd58b, 0xd58c, /*0xc8-0xcf*/
+ 0xd58d, 0xd58e, 0xd58f, 0xd590, 0xd591, 0xd592, 0xd593, 0xd594, /*0xd0-0xd7*/
+ 0xd595, 0xd596, 0xd597, 0xd598, 0xd599, 0xd59a, 0xd59b, 0xd59c, /*0xd8-0xdf*/
+ 0xd59d, 0xd59e, 0xd59f, 0xd5a0, 0xd640, 0xd641, 0xd642, 0xd643, /*0xe0-0xe7*/
+ 0xd644, 0xd645, 0xd646, 0xd647, 0xd648, 0xd649, 0xd64a, 0xd64b, /*0xe8-0xef*/
+ 0xd64c, 0xd64d, 0xd64e, 0xd64f, 0xd650, 0xd651, 0xd652, 0xd653, /*0xf0-0xf7*/
+ 0xd654, 0xd655, 0xd656, 0xd657, 0xd658, 0xd659, 0xd65a, 0xd65b, /*0xf8-0xff*/
+ /* 0x8b00 */
+ 0xd65c, 0xd65d, 0xd65e, 0xd65f, 0xd660, 0xd661, 0xd662, 0xe5c0, /*0x00-0x07*/
+ 0xd663, 0xd664, 0xd665, 0xd666, 0xd667, 0xd668, 0xd669, 0xd66a, /*0x08-0x0f*/
+ 0xd66b, 0xd66c, 0xd66d, 0xd66e, 0xd66f, 0xd670, 0xd671, 0xd672, /*0x10-0x17*/
+ 0xd673, 0xd674, 0xd675, 0xd676, 0xd677, 0xd678, 0xd679, 0xd67a, /*0x18-0x1f*/
+ 0xd67b, 0xd67c, 0xd67d, 0xd67e, 0xd680, 0xd681, 0xf6a5, 0xd682, /*0x20-0x27*/
+ 0xd683, 0xd684, 0xd685, 0xd686, 0xd687, 0xd688, 0xd689, 0xd68a, /*0x28-0x2f*/
+ 0xd68b, 0xd68c, 0xd68d, 0xd68e, 0xd68f, 0xd690, 0xd691, 0xd692, /*0x30-0x37*/
+ 0xd693, 0xd694, 0xd695, 0xd696, 0xd697, 0xd698, 0xd699, 0xd69a, /*0x38-0x3f*/
+ 0xd69b, 0xd69c, 0xd69d, 0xd69e, 0xd69f, 0xd6a0, 0xd740, 0xd741, /*0x40-0x47*/
+ 0xd742, 0xd743, 0xd744, 0xd745, 0xd746, 0xd747, 0xd748, 0xd749, /*0x48-0x4f*/
+ 0xd74a, 0xd74b, 0xd74c, 0xd74d, 0xd74e, 0xd74f, 0xd750, 0xd751, /*0x50-0x57*/
+ 0xd752, 0xd753, 0xd754, 0xd755, 0xd756, 0xd757, 0xd758, 0xd759, /*0x58-0x5f*/
+ 0xd75a, 0xd75b, 0xd75c, 0xd75d, 0xd75e, 0xd75f, 0xbeaf, 0xd760, /*0x60-0x67*/
+ 0xd761, 0xd762, 0xd763, 0xd764, 0xc6a9, 0xd765, 0xd766, 0xd767, /*0x68-0x6f*/
+ 0xd768, 0xd769, 0xd76a, 0xd76b, 0xd76c, 0xd76d, 0xd76e, 0xd76f, /*0x70-0x77*/
+ 0xd770, 0xd771, 0xd772, 0xd773, 0xd774, 0xd775, 0xd776, 0xd777, /*0x78-0x7f*/
+ 0xd778, 0xd779, 0xd77a, 0xd77b, 0xd77c, 0xd77d, 0xd77e, 0xd780, /*0x80-0x87*/
+ 0xd781, 0xd782, 0xd783, 0xd784, 0xd785, 0xd786, 0xd787, 0xd788, /*0x88-0x8f*/
+ 0xd789, 0xd78a, 0xd78b, 0xd78c, 0xd78d, 0xd78e, 0xd78f, 0xd790, /*0x90-0x97*/
+ 0xd791, 0xd792, 0xd793, 0xd794, 0xd795, 0xd796, 0xd797, 0xd798, /*0x98-0x9f*/
+ 0xdaa5, 0xbcc6, 0xb6a9, 0xb8bc, 0xc8cf, 0xbca5, 0xdaa6, 0xdaa7, /*0xa0-0xa7*/
+ 0xccd6, 0xc8c3, 0xdaa8, 0xc6fd, 0xd799, 0xd1b5, 0xd2e9, 0xd1b6, /*0xa8-0xaf*/
+ 0xbcc7, 0xd79a, 0xbdb2, 0xbbe4, 0xdaa9, 0xdaaa, 0xd1c8, 0xdaab, /*0xb0-0xb7*/
+ 0xd0ed, 0xb6ef, 0xc2db, 0xd79b, 0xcbcf, 0xb7ed, 0xc9e8, 0xb7c3, /*0xb8-0xbf*/
+ 0xbef7, 0xd6a4, 0xdaac, 0xdaad, 0xc6c0, 0xd7e7, 0xcab6, 0xd79c, /*0xc0-0xc7*/
+ 0xd5a9, 0xcbdf, 0xd5ef, 0xdaae, 0xd6df, 0xb4ca, 0xdab0, 0xdaaf, /*0xc8-0xcf*/
+ 0xd79d, 0xd2eb, 0xdab1, 0xdab2, 0xdab3, 0xcad4, 0xdab4, 0xcaab, /*0xd0-0xd7*/
+ 0xdab5, 0xdab6, 0xb3cf, 0xd6ef, 0xdab7, 0xbbb0, 0xb5ae, 0xdab8, /*0xd8-0xdf*/
+ 0xdab9, 0xb9ee, 0xd1af, 0xd2e8, 0xdaba, 0xb8c3, 0xcfea, 0xb2ef, /*0xe0-0xe7*/
+ 0xdabb, 0xdabc, 0xd79e, 0xbdeb, 0xcedc, 0xd3ef, 0xdabd, 0xcef3, /*0xe8-0xef*/
+ 0xdabe, 0xd3d5, 0xbbe5, 0xdabf, 0xcbb5, 0xcbd0, 0xdac0, 0xc7eb, /*0xf0-0xf7*/
+ 0xd6ee, 0xdac1, 0xc5b5, 0xb6c1, 0xdac2, 0xb7cc, 0xbfce, 0xdac3, /*0xf8-0xff*/
+ /* 0x8c00 */
+ 0xdac4, 0xcbad, 0xdac5, 0xb5f7, 0xdac6, 0xc1c2, 0xd7bb, 0xdac7, /*0x00-0x07*/
+ 0xccb8, 0xd79f, 0xd2ea, 0xc4b1, 0xdac8, 0xb5fd, 0xbbd1, 0xdac9, /*0x08-0x0f*/
+ 0xd0b3, 0xdaca, 0xdacb, 0xcebd, 0xdacc, 0xdacd, 0xdace, 0xb2f7, /*0x10-0x17*/
+ 0xdad1, 0xdacf, 0xd1e8, 0xdad0, 0xc3d5, 0xdad2, 0xd7a0, 0xdad3, /*0x18-0x1f*/
+ 0xdad4, 0xdad5, 0xd0bb, 0xd2a5, 0xb0f9, 0xdad6, 0xc7ab, 0xdad7, /*0x20-0x27*/
+ 0xbdf7, 0xc3a1, 0xdad8, 0xdad9, 0xc3fd, 0xccb7, 0xdada, 0xdadb, /*0x28-0x2f*/
+ 0xc0be, 0xc6d7, 0xdadc, 0xdadd, 0xc7b4, 0xdade, 0xdadf, 0xb9c8, /*0x30-0x37*/
+ 0xd840, 0xd841, 0xd842, 0xd843, 0xd844, 0xd845, 0xd846, 0xd847, /*0x38-0x3f*/
+ 0xd848, 0xbbed, 0xd849, 0xd84a, 0xd84b, 0xd84c, 0xb6b9, 0xf4f8, /*0x40-0x47*/
+ 0xd84d, 0xf4f9, 0xd84e, 0xd84f, 0xcde3, 0xd850, 0xd851, 0xd852, /*0x48-0x4f*/
+ 0xd853, 0xd854, 0xd855, 0xd856, 0xd857, 0xf5b9, 0xd858, 0xd859, /*0x50-0x57*/
+ 0xd85a, 0xd85b, 0xebe0, 0xd85c, 0xd85d, 0xd85e, 0xd85f, 0xd860, /*0x58-0x5f*/
+ 0xd861, 0xcff3, 0xbbbf, 0xd862, 0xd863, 0xd864, 0xd865, 0xd866, /*0x60-0x67*/
+ 0xd867, 0xd868, 0xbac0, 0xd4a5, 0xd869, 0xd86a, 0xd86b, 0xd86c, /*0x68-0x6f*/
+ 0xd86d, 0xd86e, 0xd86f, 0xe1d9, 0xd870, 0xd871, 0xd872, 0xd873, /*0x70-0x77*/
+ 0xf5f4, 0xb1aa, 0xb2f2, 0xd874, 0xd875, 0xd876, 0xd877, 0xd878, /*0x78-0x7f*/
+ 0xd879, 0xd87a, 0xf5f5, 0xd87b, 0xd87c, 0xf5f7, 0xd87d, 0xd87e, /*0x80-0x87*/
+ 0xd880, 0xbad1, 0xf5f6, 0xd881, 0xc3b2, 0xd882, 0xd883, 0xd884, /*0x88-0x8f*/
+ 0xd885, 0xd886, 0xd887, 0xd888, 0xf5f9, 0xd889, 0xd88a, 0xd88b, /*0x90-0x97*/
+ 0xf5f8, 0xd88c, 0xd88d, 0xd88e, 0xd88f, 0xd890, 0xd891, 0xd892, /*0x98-0x9f*/
+ 0xd893, 0xd894, 0xd895, 0xd896, 0xd897, 0xd898, 0xd899, 0xd89a, /*0xa0-0xa7*/
+ 0xd89b, 0xd89c, 0xd89d, 0xd89e, 0xd89f, 0xd8a0, 0xd940, 0xd941, /*0xa8-0xaf*/
+ 0xd942, 0xd943, 0xd944, 0xd945, 0xd946, 0xd947, 0xd948, 0xd949, /*0xb0-0xb7*/
+ 0xd94a, 0xd94b, 0xd94c, 0xd94d, 0xd94e, 0xd94f, 0xd950, 0xd951, /*0xb8-0xbf*/
+ 0xd952, 0xd953, 0xd954, 0xd955, 0xd956, 0xd957, 0xd958, 0xd959, /*0xc0-0xc7*/
+ 0xd95a, 0xd95b, 0xd95c, 0xd95d, 0xd95e, 0xd95f, 0xd960, 0xd961, /*0xc8-0xcf*/
+ 0xd962, 0xd963, 0xd964, 0xd965, 0xd966, 0xd967, 0xd968, 0xd969, /*0xd0-0xd7*/
+ 0xd96a, 0xd96b, 0xd96c, 0xd96d, 0xd96e, 0xd96f, 0xd970, 0xd971, /*0xd8-0xdf*/
+ 0xd972, 0xd973, 0xd974, 0xd975, 0xd976, 0xd977, 0xd978, 0xd979, /*0xe0-0xe7*/
+ 0xd97a, 0xd97b, 0xd97c, 0xd97d, 0xd97e, 0xd980, 0xd981, 0xd982, /*0xe8-0xef*/
+ 0xd983, 0xd984, 0xd985, 0xd986, 0xd987, 0xd988, 0xd989, 0xd98a, /*0xf0-0xf7*/
+ 0xd98b, 0xd98c, 0xd98d, 0xd98e, 0xd98f, 0xd990, 0xd991, 0xd992, /*0xf8-0xff*/
+ /* 0x8d00 */
+ 0xd993, 0xd994, 0xd995, 0xd996, 0xd997, 0xd998, 0xd999, 0xd99a, /*0x00-0x07*/
+ 0xd99b, 0xd99c, 0xd99d, 0xd99e, 0xd99f, 0xd9a0, 0xda40, 0xda41, /*0x08-0x0f*/
+ 0xda42, 0xda43, 0xda44, 0xda45, 0xda46, 0xda47, 0xda48, 0xda49, /*0x10-0x17*/
+ 0xda4a, 0xda4b, 0xda4c, 0xda4d, 0xda4e, 0xb1b4, 0xd5ea, 0xb8ba, /*0x18-0x1f*/
+ 0xda4f, 0xb9b1, 0xb2c6, 0xd4f0, 0xcfcd, 0xb0dc, 0xd5cb, 0xbbf5, /*0x20-0x27*/
+ 0xd6ca, 0xb7b7, 0xccb0, 0xc6b6, 0xb1e1, 0xb9ba, 0xd6fc, 0xb9e1, /*0x28-0x2f*/
+ 0xb7a1, 0xbcfa, 0xeada, 0xeadb, 0xccf9, 0xb9f3, 0xeadc, 0xb4fb, /*0x30-0x37*/
+ 0xc3b3, 0xb7d1, 0xbad8, 0xeadd, 0xd4f4, 0xeade, 0xbcd6, 0xbbdf, /*0x38-0x3f*/
+ 0xeadf, 0xc1de, 0xc2b8, 0xd4df, 0xd7ca, 0xeae0, 0xeae1, 0xeae4, /*0x40-0x47*/
+ 0xeae2, 0xeae3, 0xc9de, 0xb8b3, 0xb6c4, 0xeae5, 0xcaea, 0xc9cd, /*0x48-0x4f*/
+ 0xb4cd, 0xda50, 0xda51, 0xe2d9, 0xc5e2, 0xeae6, 0xc0b5, 0xda52, /*0x50-0x57*/
+ 0xd7b8, 0xeae7, 0xd7ac, 0xc8fc, 0xd8d3, 0xd8cd, 0xd4de, 0xda53, /*0x58-0x5f*/
+ 0xd4f9, 0xc9c4, 0xd3ae, 0xb8d3, 0xb3e0, 0xda54, 0xc9e2, 0xf4f6, /*0x60-0x67*/
+ 0xda55, 0xda56, 0xda57, 0xbad5, 0xda58, 0xf4f7, 0xda59, 0xda5a, /*0x68-0x6f*/
+ 0xd7df, 0xda5b, 0xda5c, 0xf4f1, 0xb8b0, 0xd5d4, 0xb8cf, 0xc6f0, /*0x70-0x77*/
+ 0xda5d, 0xda5e, 0xda5f, 0xda60, 0xda61, 0xda62, 0xda63, 0xda64, /*0x78-0x7f*/
+ 0xda65, 0xb3c3, 0xda66, 0xda67, 0xf4f2, 0xb3ac, 0xda68, 0xda69, /*0x80-0x87*/
+ 0xda6a, 0xda6b, 0xd4bd, 0xc7f7, 0xda6c, 0xda6d, 0xda6e, 0xda6f, /*0x88-0x8f*/
+ 0xda70, 0xf4f4, 0xda71, 0xda72, 0xf4f3, 0xda73, 0xda74, 0xda75, /*0x90-0x97*/
+ 0xda76, 0xda77, 0xda78, 0xda79, 0xda7a, 0xda7b, 0xda7c, 0xcccb, /*0x98-0x9f*/
+ 0xda7d, 0xda7e, 0xda80, 0xc8a4, 0xda81, 0xda82, 0xda83, 0xda84, /*0xa0-0xa7*/
+ 0xda85, 0xda86, 0xda87, 0xda88, 0xda89, 0xda8a, 0xda8b, 0xda8c, /*0xa8-0xaf*/
+ 0xda8d, 0xf4f5, 0xda8e, 0xd7e3, 0xc5bf, 0xf5c0, 0xda8f, 0xda90, /*0xb0-0xb7*/
+ 0xf5bb, 0xda91, 0xf5c3, 0xda92, 0xf5c2, 0xda93, 0xd6ba, 0xf5c1, /*0xb8-0xbf*/
+ 0xda94, 0xda95, 0xda96, 0xd4be, 0xf5c4, 0xda97, 0xf5cc, 0xda98, /*0xc0-0xc7*/
+ 0xda99, 0xda9a, 0xda9b, 0xb0cf, 0xb5f8, 0xda9c, 0xf5c9, 0xf5ca, /*0xc8-0xcf*/
+ 0xda9d, 0xc5dc, 0xda9e, 0xda9f, 0xdaa0, 0xdb40, 0xf5c5, 0xf5c6, /*0xd0-0xd7*/
+ 0xdb41, 0xdb42, 0xf5c7, 0xf5cb, 0xdb43, 0xbee0, 0xf5c8, 0xb8fa, /*0xd8-0xdf*/
+ 0xdb44, 0xdb45, 0xdb46, 0xf5d0, 0xf5d3, 0xdb47, 0xdb48, 0xdb49, /*0xe0-0xe7*/
+ 0xbfe7, 0xdb4a, 0xb9f2, 0xf5bc, 0xf5cd, 0xdb4b, 0xdb4c, 0xc2b7, /*0xe8-0xef*/
+ 0xdb4d, 0xdb4e, 0xdb4f, 0xccf8, 0xdb50, 0xbcf9, 0xdb51, 0xf5ce, /*0xf0-0xf7*/
+ 0xf5cf, 0xf5d1, 0xb6e5, 0xf5d2, 0xdb52, 0xf5d5, 0xdb53, 0xdb54, /*0xf8-0xff*/
+ /* 0x8e00 */
+ 0xdb55, 0xdb56, 0xdb57, 0xdb58, 0xdb59, 0xf5bd, 0xdb5a, 0xdb5b, /*0x00-0x07*/
+ 0xdb5c, 0xf5d4, 0xd3bb, 0xdb5d, 0xb3ec, 0xdb5e, 0xdb5f, 0xcca4, /*0x08-0x0f*/
+ 0xdb60, 0xdb61, 0xdb62, 0xdb63, 0xf5d6, 0xdb64, 0xdb65, 0xdb66, /*0x10-0x17*/
+ 0xdb67, 0xdb68, 0xdb69, 0xdb6a, 0xdb6b, 0xf5d7, 0xbee1, 0xf5d8, /*0x18-0x1f*/
+ 0xdb6c, 0xdb6d, 0xccdf, 0xf5db, 0xdb6e, 0xdb6f, 0xdb70, 0xdb71, /*0x20-0x27*/
+ 0xdb72, 0xb2c8, 0xd7d9, 0xdb73, 0xf5d9, 0xdb74, 0xf5da, 0xf5dc, /*0x28-0x2f*/
+ 0xdb75, 0xf5e2, 0xdb76, 0xdb77, 0xdb78, 0xf5e0, 0xdb79, 0xdb7a, /*0x30-0x37*/
+ 0xdb7b, 0xf5df, 0xf5dd, 0xdb7c, 0xdb7d, 0xf5e1, 0xdb7e, 0xdb80, /*0x38-0x3f*/
+ 0xf5de, 0xf5e4, 0xf5e5, 0xdb81, 0xcce3, 0xdb82, 0xdb83, 0xe5bf, /*0x40-0x47*/
+ 0xb5b8, 0xf5e3, 0xf5e8, 0xcca3, 0xdb84, 0xdb85, 0xdb86, 0xdb87, /*0x48-0x4f*/
+ 0xdb88, 0xf5e6, 0xf5e7, 0xdb89, 0xdb8a, 0xdb8b, 0xdb8c, 0xdb8d, /*0x50-0x57*/
+ 0xdb8e, 0xf5be, 0xdb8f, 0xdb90, 0xdb91, 0xdb92, 0xdb93, 0xdb94, /*0x58-0x5f*/
+ 0xdb95, 0xdb96, 0xdb97, 0xdb98, 0xdb99, 0xdb9a, 0xb1c4, 0xdb9b, /*0x60-0x67*/
+ 0xdb9c, 0xf5bf, 0xdb9d, 0xdb9e, 0xb5c5, 0xb2e4, 0xdb9f, 0xf5ec, /*0x68-0x6f*/
+ 0xf5e9, 0xdba0, 0xb6d7, 0xdc40, 0xf5ed, 0xdc41, 0xf5ea, 0xdc42, /*0x70-0x77*/
+ 0xdc43, 0xdc44, 0xdc45, 0xdc46, 0xf5eb, 0xdc47, 0xdc48, 0xb4da, /*0x78-0x7f*/
+ 0xdc49, 0xd4ea, 0xdc4a, 0xdc4b, 0xdc4c, 0xf5ee, 0xdc4d, 0xb3f9, /*0x80-0x87*/
+ 0xdc4e, 0xdc4f, 0xdc50, 0xdc51, 0xdc52, 0xdc53, 0xdc54, 0xf5ef, /*0x88-0x8f*/
+ 0xf5f1, 0xdc55, 0xdc56, 0xdc57, 0xf5f0, 0xdc58, 0xdc59, 0xdc5a, /*0x90-0x97*/
+ 0xdc5b, 0xdc5c, 0xdc5d, 0xdc5e, 0xf5f2, 0xdc5f, 0xf5f3, 0xdc60, /*0x98-0x9f*/
+ 0xdc61, 0xdc62, 0xdc63, 0xdc64, 0xdc65, 0xdc66, 0xdc67, 0xdc68, /*0xa0-0xa7*/
+ 0xdc69, 0xdc6a, 0xdc6b, 0xc9ed, 0xb9aa, 0xdc6c, 0xdc6d, 0xc7fb, /*0xa8-0xaf*/
+ 0xdc6e, 0xdc6f, 0xb6e3, 0xdc70, 0xdc71, 0xdc72, 0xdc73, 0xdc74, /*0xb0-0xb7*/
+ 0xdc75, 0xdc76, 0xccc9, 0xdc77, 0xdc78, 0xdc79, 0xdc7a, 0xdc7b, /*0xb8-0xbf*/
+ 0xdc7c, 0xdc7d, 0xdc7e, 0xdc80, 0xdc81, 0xdc82, 0xdc83, 0xdc84, /*0xc0-0xc7*/
+ 0xdc85, 0xdc86, 0xdc87, 0xdc88, 0xdc89, 0xdc8a, 0xeaa6, 0xdc8b, /*0xc8-0xcf*/
+ 0xdc8c, 0xdc8d, 0xdc8e, 0xdc8f, 0xdc90, 0xdc91, 0xdc92, 0xdc93, /*0xd0-0xd7*/
+ 0xdc94, 0xdc95, 0xdc96, 0xdc97, 0xdc98, 0xdc99, 0xdc9a, 0xdc9b, /*0xd8-0xdf*/
+ 0xdc9c, 0xdc9d, 0xdc9e, 0xdc9f, 0xdca0, 0xdd40, 0xdd41, 0xdd42, /*0xe0-0xe7*/
+ 0xdd43, 0xdd44, 0xdd45, 0xdd46, 0xdd47, 0xdd48, 0xdd49, 0xdd4a, /*0xe8-0xef*/
+ 0xdd4b, 0xdd4c, 0xdd4d, 0xdd4e, 0xdd4f, 0xdd50, 0xdd51, 0xdd52, /*0xf0-0xf7*/
+ 0xdd53, 0xdd54, 0xdd55, 0xdd56, 0xdd57, 0xdd58, 0xdd59, 0xdd5a, /*0xf8-0xff*/
+ /* 0x8f00 */
+ 0xdd5b, 0xdd5c, 0xdd5d, 0xdd5e, 0xdd5f, 0xdd60, 0xdd61, 0xdd62, /*0x00-0x07*/
+ 0xdd63, 0xdd64, 0xdd65, 0xdd66, 0xdd67, 0xdd68, 0xdd69, 0xdd6a, /*0x08-0x0f*/
+ 0xdd6b, 0xdd6c, 0xdd6d, 0xdd6e, 0xdd6f, 0xdd70, 0xdd71, 0xdd72, /*0x10-0x17*/
+ 0xdd73, 0xdd74, 0xdd75, 0xdd76, 0xdd77, 0xdd78, 0xdd79, 0xdd7a, /*0x18-0x1f*/
+ 0xdd7b, 0xdd7c, 0xdd7d, 0xdd7e, 0xdd80, 0xdd81, 0xdd82, 0xdd83, /*0x20-0x27*/
+ 0xdd84, 0xdd85, 0xdd86, 0xdd87, 0xdd88, 0xdd89, 0xdd8a, 0xdd8b, /*0x28-0x2f*/
+ 0xdd8c, 0xdd8d, 0xdd8e, 0xdd8f, 0xdd90, 0xdd91, 0xdd92, 0xdd93, /*0x30-0x37*/
+ 0xdd94, 0xdd95, 0xdd96, 0xdd97, 0xdd98, 0xdd99, 0xdd9a, 0xdd9b, /*0x38-0x3f*/
+ 0xdd9c, 0xdd9d, 0xdd9e, 0xdd9f, 0xdda0, 0xde40, 0xde41, 0xde42, /*0x40-0x47*/
+ 0xde43, 0xde44, 0xde45, 0xde46, 0xde47, 0xde48, 0xde49, 0xde4a, /*0x48-0x4f*/
+ 0xde4b, 0xde4c, 0xde4d, 0xde4e, 0xde4f, 0xde50, 0xde51, 0xde52, /*0x50-0x57*/
+ 0xde53, 0xde54, 0xde55, 0xde56, 0xde57, 0xde58, 0xde59, 0xde5a, /*0x58-0x5f*/
+ 0xde5b, 0xde5c, 0xde5d, 0xde5e, 0xde5f, 0xde60, 0xb3b5, 0xd4fe, /*0x60-0x67*/
+ 0xb9ec, 0xd0f9, 0xde61, 0xe9ed, 0xd7aa, 0xe9ee, 0xc2d6, 0xc8ed, /*0x68-0x6f*/
+ 0xbae4, 0xe9ef, 0xe9f0, 0xe9f1, 0xd6e1, 0xe9f2, 0xe9f3, 0xe9f5, /*0x70-0x77*/
+ 0xe9f4, 0xe9f6, 0xe9f7, 0xc7e1, 0xe9f8, 0xd4d8, 0xe9f9, 0xbdce, /*0x78-0x7f*/
+ 0xde62, 0xe9fa, 0xe9fb, 0xbdcf, 0xe9fc, 0xb8a8, 0xc1be, 0xe9fd, /*0x80-0x87*/
+ 0xb1b2, 0xbbd4, 0xb9f5, 0xe9fe, 0xde63, 0xeaa1, 0xeaa2, 0xeaa3, /*0x88-0x8f*/
+ 0xb7f8, 0xbcad, 0xde64, 0xcae4, 0xe0ce, 0xd4af, 0xcfbd, 0xd5b7, /*0x90-0x97*/
+ 0xeaa4, 0xd5de, 0xeaa5, 0xd0c1, 0xb9bc, 0xde65, 0xb4c7, 0xb1d9, /*0x98-0x9f*/
+ 0xde66, 0xde67, 0xde68, 0xc0b1, 0xde69, 0xde6a, 0xde6b, 0xde6c, /*0xa0-0xa7*/
+ 0xb1e6, 0xb1e7, 0xde6d, 0xb1e8, 0xde6e, 0xde6f, 0xde70, 0xde71, /*0xa8-0xaf*/
+ 0xb3bd, 0xc8e8, 0xde72, 0xde73, 0xde74, 0xde75, 0xe5c1, 0xde76, /*0xb0-0xb7*/
+ 0xde77, 0xb1df, 0xde78, 0xde79, 0xde7a, 0xc1c9, 0xb4ef, 0xde7b, /*0xb8-0xbf*/
+ 0xde7c, 0xc7a8, 0xd3d8, 0xde7d, 0xc6f9, 0xd1b8, 0xde7e, 0xb9fd, /*0xc0-0xc7*/
+ 0xc2f5, 0xde80, 0xde81, 0xde82, 0xde83, 0xde84, 0xd3ad, 0xde85, /*0xc8-0xcf*/
+ 0xd4cb, 0xbdfc, 0xde86, 0xe5c2, 0xb7b5, 0xe5c3, 0xde87, 0xde88, /*0xd0-0xd7*/
+ 0xbbb9, 0xd5e2, 0xde89, 0xbdf8, 0xd4b6, 0xcea5, 0xc1ac, 0xb3d9, /*0xd8-0xdf*/
+ 0xde8a, 0xde8b, 0xccf6, 0xde8c, 0xe5c6, 0xe5c4, 0xe5c8, 0xde8d, /*0xe0-0xe7*/
+ 0xe5ca, 0xe5c7, 0xb5cf, 0xc6c8, 0xde8e, 0xb5fc, 0xe5c5, 0xde8f, /*0xe8-0xef*/
+ 0xcaf6, 0xde90, 0xde91, 0xe5c9, 0xde92, 0xde93, 0xde94, 0xc3d4, /*0xf0-0xf7*/
+ 0xb1c5, 0xbca3, 0xde95, 0xde96, 0xde97, 0xd7b7, 0xde98, 0xde99, /*0xf8-0xff*/
+ /* 0x9000 */
+ 0xcdcb, 0xcbcd, 0xcaca, 0xccd3, 0xe5cc, 0xe5cb, 0xc4e6, 0xde9a, /*0x00-0x07*/
+ 0xde9b, 0xd1a1, 0xd1b7, 0xe5cd, 0xde9c, 0xe5d0, 0xde9d, 0xcdb8, /*0x08-0x0f*/
+ 0xd6f0, 0xe5cf, 0xb5dd, 0xde9e, 0xcdbe, 0xde9f, 0xe5d1, 0xb6ba, /*0x10-0x17*/
+ 0xdea0, 0xdf40, 0xcda8, 0xb9e4, 0xdf41, 0xcac5, 0xb3d1, 0xcbd9, /*0x18-0x1f*/
+ 0xd4ec, 0xe5d2, 0xb7ea, 0xdf42, 0xdf43, 0xdf44, 0xe5ce, 0xdf45, /*0x20-0x27*/
+ 0xdf46, 0xdf47, 0xdf48, 0xdf49, 0xdf4a, 0xe5d5, 0xb4fe, 0xe5d6, /*0x28-0x2f*/
+ 0xdf4b, 0xdf4c, 0xdf4d, 0xdf4e, 0xdf4f, 0xe5d3, 0xe5d4, 0xdf50, /*0x30-0x37*/
+ 0xd2dd, 0xdf51, 0xdf52, 0xc2df, 0xb1c6, 0xdf53, 0xd3e2, 0xdf54, /*0x38-0x3f*/
+ 0xdf55, 0xb6dd, 0xcbec, 0xdf56, 0xe5d7, 0xdf57, 0xdf58, 0xd3f6, /*0x40-0x47*/
+ 0xdf59, 0xdf5a, 0xdf5b, 0xdf5c, 0xdf5d, 0xb1e9, 0xdf5e, 0xb6f4, /*0x48-0x4f*/
+ 0xe5da, 0xe5d8, 0xe5d9, 0xb5c0, 0xdf5f, 0xdf60, 0xdf61, 0xd2c5, /*0x50-0x57*/
+ 0xe5dc, 0xdf62, 0xdf63, 0xe5de, 0xdf64, 0xdf65, 0xdf66, 0xdf67, /*0x58-0x5f*/
+ 0xdf68, 0xdf69, 0xe5dd, 0xc7b2, 0xdf6a, 0xd2a3, 0xdf6b, 0xdf6c, /*0x60-0x67*/
+ 0xe5db, 0xdf6d, 0xdf6e, 0xdf6f, 0xdf70, 0xd4e2, 0xd5da, 0xdf71, /*0x68-0x6f*/
+ 0xdf72, 0xdf73, 0xdf74, 0xdf75, 0xe5e0, 0xd7f1, 0xdf76, 0xdf77, /*0x70-0x77*/
+ 0xdf78, 0xdf79, 0xdf7a, 0xdf7b, 0xdf7c, 0xe5e1, 0xdf7d, 0xb1dc, /*0x78-0x7f*/
+ 0xd1fb, 0xdf7e, 0xe5e2, 0xe5e4, 0xdf80, 0xdf81, 0xdf82, 0xdf83, /*0x80-0x87*/
+ 0xe5e3, 0xdf84, 0xdf85, 0xe5e5, 0xdf86, 0xdf87, 0xdf88, 0xdf89, /*0x88-0x8f*/
+ 0xdf8a, 0xd2d8, 0xdf8b, 0xb5cb, 0xdf8c, 0xe7df, 0xdf8d, 0xdaf5, /*0x90-0x97*/
+ 0xdf8e, 0xdaf8, 0xdf8f, 0xdaf6, 0xdf90, 0xdaf7, 0xdf91, 0xdf92, /*0x98-0x9f*/
+ 0xdf93, 0xdafa, 0xd0cf, 0xc4c7, 0xdf94, 0xdf95, 0xb0ee, 0xdf96, /*0xa0-0xa7*/
+ 0xdf97, 0xdf98, 0xd0b0, 0xdf99, 0xdaf9, 0xdf9a, 0xd3ca, 0xbaaa, /*0xa8-0xaf*/
+ 0xdba2, 0xc7f1, 0xdf9b, 0xdafc, 0xdafb, 0xc9db, 0xdafd, 0xdf9c, /*0xb0-0xb7*/
+ 0xdba1, 0xd7de, 0xdafe, 0xc1da, 0xdf9d, 0xdf9e, 0xdba5, 0xdf9f, /*0xb8-0xbf*/
+ 0xdfa0, 0xd3f4, 0xe040, 0xe041, 0xdba7, 0xdba4, 0xe042, 0xdba8, /*0xc0-0xc7*/
+ 0xe043, 0xe044, 0xbdbc, 0xe045, 0xe046, 0xe047, 0xc0c9, 0xdba3, /*0xc8-0xcf*/
+ 0xdba6, 0xd6a3, 0xe048, 0xdba9, 0xe049, 0xe04a, 0xe04b, 0xdbad, /*0xd0-0xd7*/
+ 0xe04c, 0xe04d, 0xe04e, 0xdbae, 0xdbac, 0xbac2, 0xe04f, 0xe050, /*0xd8-0xdf*/
+ 0xe051, 0xbfa4, 0xdbab, 0xe052, 0xe053, 0xe054, 0xdbaa, 0xd4c7, /*0xe0-0xe7*/
+ 0xb2bf, 0xe055, 0xe056, 0xdbaf, 0xe057, 0xb9f9, 0xe058, 0xdbb0, /*0xe8-0xef*/
+ 0xe059, 0xe05a, 0xe05b, 0xe05c, 0xb3bb, 0xe05d, 0xe05e, 0xe05f, /*0xf0-0xf7*/
+ 0xb5a6, 0xe060, 0xe061, 0xe062, 0xe063, 0xb6bc, 0xdbb1, 0xe064, /*0xf8-0xff*/
+ /* 0x9100 */
+ 0xe065, 0xe066, 0xb6f5, 0xe067, 0xdbb2, 0xe068, 0xe069, 0xe06a, /*0x00-0x07*/
+ 0xe06b, 0xe06c, 0xe06d, 0xe06e, 0xe06f, 0xe070, 0xe071, 0xe072, /*0x08-0x0f*/
+ 0xe073, 0xe074, 0xe075, 0xe076, 0xe077, 0xe078, 0xe079, 0xe07a, /*0x10-0x17*/
+ 0xe07b, 0xb1c9, 0xe07c, 0xe07d, 0xe07e, 0xe080, 0xdbb4, 0xe081, /*0x18-0x1f*/
+ 0xe082, 0xe083, 0xdbb3, 0xdbb5, 0xe084, 0xe085, 0xe086, 0xe087, /*0x20-0x27*/
+ 0xe088, 0xe089, 0xe08a, 0xe08b, 0xe08c, 0xe08d, 0xe08e, 0xdbb7, /*0x28-0x2f*/
+ 0xe08f, 0xdbb6, 0xe090, 0xe091, 0xe092, 0xe093, 0xe094, 0xe095, /*0x30-0x37*/
+ 0xe096, 0xdbb8, 0xe097, 0xe098, 0xe099, 0xe09a, 0xe09b, 0xe09c, /*0x38-0x3f*/
+ 0xe09d, 0xe09e, 0xe09f, 0xdbb9, 0xe0a0, 0xe140, 0xdbba, 0xe141, /*0x40-0x47*/
+ 0xe142, 0xd3cf, 0xf4fa, 0xc7f5, 0xd7c3, 0xc5e4, 0xf4fc, 0xf4fd, /*0x48-0x4f*/
+ 0xf4fb, 0xe143, 0xbec6, 0xe144, 0xe145, 0xe146, 0xe147, 0xd0ef, /*0x50-0x57*/
+ 0xe148, 0xe149, 0xb7d3, 0xe14a, 0xe14b, 0xd4cd, 0xccaa, 0xe14c, /*0x58-0x5f*/
+ 0xe14d, 0xf5a2, 0xf5a1, 0xbaa8, 0xf4fe, 0xcbd6, 0xe14e, 0xe14f, /*0x60-0x67*/
+ 0xe150, 0xf5a4, 0xc0d2, 0xe151, 0xb3ea, 0xe152, 0xcdaa, 0xf5a5, /*0x68-0x6f*/
+ 0xf5a3, 0xbdb4, 0xf5a8, 0xe153, 0xf5a9, 0xbdcd, 0xc3b8, 0xbfe1, /*0x70-0x77*/
+ 0xcbe1, 0xf5aa, 0xe154, 0xe155, 0xe156, 0xf5a6, 0xf5a7, 0xc4f0, /*0x78-0x7f*/
+ 0xe157, 0xe158, 0xe159, 0xe15a, 0xe15b, 0xf5ac, 0xe15c, 0xb4bc, /*0x80-0x87*/
+ 0xe15d, 0xd7ed, 0xe15e, 0xb4d7, 0xf5ab, 0xf5ae, 0xe15f, 0xe160, /*0x88-0x8f*/
+ 0xf5ad, 0xf5af, 0xd0d1, 0xe161, 0xe162, 0xe163, 0xe164, 0xe165, /*0x90-0x97*/
+ 0xe166, 0xe167, 0xc3d1, 0xc8a9, 0xe168, 0xe169, 0xe16a, 0xe16b, /*0x98-0x9f*/
+ 0xe16c, 0xe16d, 0xf5b0, 0xf5b1, 0xe16e, 0xe16f, 0xe170, 0xe171, /*0xa0-0xa7*/
+ 0xe172, 0xe173, 0xf5b2, 0xe174, 0xe175, 0xf5b3, 0xf5b4, 0xf5b5, /*0xa8-0xaf*/
+ 0xe176, 0xe177, 0xe178, 0xe179, 0xf5b7, 0xf5b6, 0xe17a, 0xe17b, /*0xb0-0xb7*/
+ 0xe17c, 0xe17d, 0xf5b8, 0xe17e, 0xe180, 0xe181, 0xe182, 0xe183, /*0xb8-0xbf*/
+ 0xe184, 0xe185, 0xe186, 0xe187, 0xe188, 0xe189, 0xe18a, 0xb2c9, /*0xc0-0xc7*/
+ 0xe18b, 0xd3d4, 0xcacd, 0xe18c, 0xc0ef, 0xd6d8, 0xd2b0, 0xc1bf, /*0xc8-0xcf*/
+ 0xe18d, 0xbdf0, 0xe18e, 0xe18f, 0xe190, 0xe191, 0xe192, 0xe193, /*0xd0-0xd7*/
+ 0xe194, 0xe195, 0xe196, 0xe197, 0xb8aa, 0xe198, 0xe199, 0xe19a, /*0xd8-0xdf*/
+ 0xe19b, 0xe19c, 0xe19d, 0xe19e, 0xe19f, 0xe1a0, 0xe240, 0xe241, /*0xe0-0xe7*/
+ 0xe242, 0xe243, 0xe244, 0xe245, 0xe246, 0xe247, 0xe248, 0xe249, /*0xe8-0xef*/
+ 0xe24a, 0xe24b, 0xe24c, 0xe24d, 0xe24e, 0xe24f, 0xe250, 0xe251, /*0xf0-0xf7*/
+ 0xe252, 0xe253, 0xe254, 0xe255, 0xe256, 0xe257, 0xe258, 0xe259, /*0xf8-0xff*/
+ /* 0x9200 */
+ 0xe25a, 0xe25b, 0xe25c, 0xe25d, 0xe25e, 0xe25f, 0xe260, 0xe261, /*0x00-0x07*/
+ 0xe262, 0xe263, 0xe264, 0xe265, 0xe266, 0xe267, 0xe268, 0xe269, /*0x08-0x0f*/
+ 0xe26a, 0xe26b, 0xe26c, 0xe26d, 0xe26e, 0xe26f, 0xe270, 0xe271, /*0x10-0x17*/
+ 0xe272, 0xe273, 0xe274, 0xe275, 0xe276, 0xe277, 0xe278, 0xe279, /*0x18-0x1f*/
+ 0xe27a, 0xe27b, 0xe27c, 0xe27d, 0xe27e, 0xe280, 0xe281, 0xe282, /*0x20-0x27*/
+ 0xe283, 0xe284, 0xe285, 0xe286, 0xe287, 0xe288, 0xe289, 0xe28a, /*0x28-0x2f*/
+ 0xe28b, 0xe28c, 0xe28d, 0xe28e, 0xe28f, 0xe290, 0xe291, 0xe292, /*0x30-0x37*/
+ 0xe293, 0xe294, 0xe295, 0xe296, 0xe297, 0xe298, 0xe299, 0xe29a, /*0x38-0x3f*/
+ 0xe29b, 0xe29c, 0xe29d, 0xe29e, 0xe29f, 0xe2a0, 0xe340, 0xe341, /*0x40-0x47*/
+ 0xe342, 0xe343, 0xe344, 0xe345, 0xe346, 0xe347, 0xe348, 0xe349, /*0x48-0x4f*/
+ 0xe34a, 0xe34b, 0xe34c, 0xe34d, 0xe34e, 0xe34f, 0xe350, 0xe351, /*0x50-0x57*/
+ 0xe352, 0xe353, 0xe354, 0xe355, 0xe356, 0xe357, 0xe358, 0xe359, /*0x58-0x5f*/
+ 0xe35a, 0xe35b, 0xe35c, 0xe35d, 0xe35e, 0xe35f, 0xe360, 0xe361, /*0x60-0x67*/
+ 0xe362, 0xe363, 0xe364, 0xe365, 0xe366, 0xe367, 0xe368, 0xe369, /*0x68-0x6f*/
+ 0xe36a, 0xe36b, 0xe36c, 0xe36d, 0xbcf8, 0xe36e, 0xe36f, 0xe370, /*0x70-0x77*/
+ 0xe371, 0xe372, 0xe373, 0xe374, 0xe375, 0xe376, 0xe377, 0xe378, /*0x78-0x7f*/
+ 0xe379, 0xe37a, 0xe37b, 0xe37c, 0xe37d, 0xe37e, 0xe380, 0xe381, /*0x80-0x87*/
+ 0xe382, 0xe383, 0xe384, 0xe385, 0xe386, 0xe387, 0xf6c6, 0xe388, /*0x88-0x8f*/
+ 0xe389, 0xe38a, 0xe38b, 0xe38c, 0xe38d, 0xe38e, 0xe38f, 0xe390, /*0x90-0x97*/
+ 0xe391, 0xe392, 0xe393, 0xe394, 0xe395, 0xe396, 0xe397, 0xe398, /*0x98-0x9f*/
+ 0xe399, 0xe39a, 0xe39b, 0xe39c, 0xe39d, 0xe39e, 0xe39f, 0xe3a0, /*0xa0-0xa7*/
+ 0xe440, 0xe441, 0xe442, 0xe443, 0xe444, 0xe445, 0xf6c7, 0xe446, /*0xa8-0xaf*/
+ 0xe447, 0xe448, 0xe449, 0xe44a, 0xe44b, 0xe44c, 0xe44d, 0xe44e, /*0xb0-0xb7*/
+ 0xe44f, 0xe450, 0xe451, 0xe452, 0xe453, 0xe454, 0xe455, 0xe456, /*0xb8-0xbf*/
+ 0xe457, 0xe458, 0xe459, 0xe45a, 0xe45b, 0xe45c, 0xe45d, 0xe45e, /*0xc0-0xc7*/
+ 0xf6c8, 0xe45f, 0xe460, 0xe461, 0xe462, 0xe463, 0xe464, 0xe465, /*0xc8-0xcf*/
+ 0xe466, 0xe467, 0xe468, 0xe469, 0xe46a, 0xe46b, 0xe46c, 0xe46d, /*0xd0-0xd7*/
+ 0xe46e, 0xe46f, 0xe470, 0xe471, 0xe472, 0xe473, 0xe474, 0xe475, /*0xd8-0xdf*/
+ 0xe476, 0xe477, 0xe478, 0xe479, 0xe47a, 0xe47b, 0xe47c, 0xe47d, /*0xe0-0xe7*/
+ 0xe47e, 0xe480, 0xe481, 0xe482, 0xe483, 0xe484, 0xe485, 0xe486, /*0xe8-0xef*/
+ 0xe487, 0xe488, 0xe489, 0xe48a, 0xe48b, 0xe48c, 0xe48d, 0xe48e, /*0xf0-0xf7*/
+ 0xe48f, 0xe490, 0xe491, 0xe492, 0xe493, 0xe494, 0xe495, 0xe496, /*0xf8-0xff*/
+ /* 0x9300 */
+ 0xe497, 0xe498, 0xe499, 0xe49a, 0xe49b, 0xe49c, 0xe49d, 0xe49e, /*0x00-0x07*/
+ 0xe49f, 0xe4a0, 0xe540, 0xe541, 0xe542, 0xe543, 0xe544, 0xe545, /*0x08-0x0f*/
+ 0xe546, 0xe547, 0xe548, 0xe549, 0xe54a, 0xe54b, 0xe54c, 0xe54d, /*0x10-0x17*/
+ 0xe54e, 0xe54f, 0xe550, 0xe551, 0xe552, 0xe553, 0xe554, 0xe555, /*0x18-0x1f*/
+ 0xe556, 0xe557, 0xe558, 0xe559, 0xe55a, 0xe55b, 0xe55c, 0xe55d, /*0x20-0x27*/
+ 0xe55e, 0xe55f, 0xe560, 0xe561, 0xe562, 0xe563, 0xe564, 0xe565, /*0x28-0x2f*/
+ 0xe566, 0xe567, 0xe568, 0xe569, 0xe56a, 0xe56b, 0xe56c, 0xe56d, /*0x30-0x37*/
+ 0xe56e, 0xe56f, 0xe570, 0xe571, 0xe572, 0xe573, 0xf6c9, 0xe574, /*0x38-0x3f*/
+ 0xe575, 0xe576, 0xe577, 0xe578, 0xe579, 0xe57a, 0xe57b, 0xe57c, /*0x40-0x47*/
+ 0xe57d, 0xe57e, 0xe580, 0xe581, 0xe582, 0xe583, 0xe584, 0xe585, /*0x48-0x4f*/
+ 0xe586, 0xe587, 0xe588, 0xe589, 0xe58a, 0xe58b, 0xe58c, 0xe58d, /*0x50-0x57*/
+ 0xe58e, 0xe58f, 0xe590, 0xe591, 0xe592, 0xe593, 0xe594, 0xe595, /*0x58-0x5f*/
+ 0xe596, 0xe597, 0xe598, 0xe599, 0xe59a, 0xe59b, 0xe59c, 0xe59d, /*0x60-0x67*/
+ 0xe59e, 0xe59f, 0xf6ca, 0xe5a0, 0xe640, 0xe641, 0xe642, 0xe643, /*0x68-0x6f*/
+ 0xe644, 0xe645, 0xe646, 0xe647, 0xe648, 0xe649, 0xe64a, 0xe64b, /*0x70-0x77*/
+ 0xe64c, 0xe64d, 0xe64e, 0xe64f, 0xe650, 0xe651, 0xe652, 0xe653, /*0x78-0x7f*/
+ 0xe654, 0xe655, 0xe656, 0xe657, 0xe658, 0xe659, 0xe65a, 0xe65b, /*0x80-0x87*/
+ 0xe65c, 0xe65d, 0xe65e, 0xe65f, 0xe660, 0xe661, 0xe662, 0xf6cc, /*0x88-0x8f*/
+ 0xe663, 0xe664, 0xe665, 0xe666, 0xe667, 0xe668, 0xe669, 0xe66a, /*0x90-0x97*/
+ 0xe66b, 0xe66c, 0xe66d, 0xe66e, 0xe66f, 0xe670, 0xe671, 0xe672, /*0x98-0x9f*/
+ 0xe673, 0xe674, 0xe675, 0xe676, 0xe677, 0xe678, 0xe679, 0xe67a, /*0xa0-0xa7*/
+ 0xe67b, 0xe67c, 0xe67d, 0xe67e, 0xe680, 0xe681, 0xe682, 0xe683, /*0xa8-0xaf*/
+ 0xe684, 0xe685, 0xe686, 0xe687, 0xe688, 0xe689, 0xe68a, 0xe68b, /*0xb0-0xb7*/
+ 0xe68c, 0xe68d, 0xe68e, 0xe68f, 0xe690, 0xe691, 0xe692, 0xe693, /*0xb8-0xbf*/
+ 0xe694, 0xe695, 0xe696, 0xe697, 0xe698, 0xe699, 0xe69a, 0xe69b, /*0xc0-0xc7*/
+ 0xe69c, 0xe69d, 0xf6cb, 0xe69e, 0xe69f, 0xe6a0, 0xe740, 0xe741, /*0xc8-0xcf*/
+ 0xe742, 0xe743, 0xe744, 0xe745, 0xe746, 0xe747, 0xf7e9, 0xe748, /*0xd0-0xd7*/
+ 0xe749, 0xe74a, 0xe74b, 0xe74c, 0xe74d, 0xe74e, 0xe74f, 0xe750, /*0xd8-0xdf*/
+ 0xe751, 0xe752, 0xe753, 0xe754, 0xe755, 0xe756, 0xe757, 0xe758, /*0xe0-0xe7*/
+ 0xe759, 0xe75a, 0xe75b, 0xe75c, 0xe75d, 0xe75e, 0xe75f, 0xe760, /*0xe8-0xef*/
+ 0xe761, 0xe762, 0xe763, 0xe764, 0xe765, 0xe766, 0xe767, 0xe768, /*0xf0-0xf7*/
+ 0xe769, 0xe76a, 0xe76b, 0xe76c, 0xe76d, 0xe76e, 0xe76f, 0xe770, /*0xf8-0xff*/
+ /* 0x9400 */
+ 0xe771, 0xe772, 0xe773, 0xe774, 0xe775, 0xe776, 0xe777, 0xe778, /*0x00-0x07*/
+ 0xe779, 0xe77a, 0xe77b, 0xe77c, 0xe77d, 0xe77e, 0xe780, 0xe781, /*0x08-0x0f*/
+ 0xe782, 0xe783, 0xe784, 0xe785, 0xe786, 0xe787, 0xe788, 0xe789, /*0x10-0x17*/
+ 0xe78a, 0xe78b, 0xe78c, 0xe78d, 0xe78e, 0xe78f, 0xe790, 0xe791, /*0x18-0x1f*/
+ 0xe792, 0xe793, 0xe794, 0xe795, 0xe796, 0xe797, 0xe798, 0xe799, /*0x20-0x27*/
+ 0xe79a, 0xe79b, 0xe79c, 0xe79d, 0xe79e, 0xe79f, 0xe7a0, 0xe840, /*0x28-0x2f*/
+ 0xe841, 0xe842, 0xe843, 0xe844, 0xe845, 0xe846, 0xe847, 0xe848, /*0x30-0x37*/
+ 0xe849, 0xe84a, 0xe84b, 0xe84c, 0xe84d, 0xe84e, 0xf6cd, 0xe84f, /*0x38-0x3f*/
+ 0xe850, 0xe851, 0xe852, 0xe853, 0xe854, 0xe855, 0xe856, 0xe857, /*0x40-0x47*/
+ 0xe858, 0xe859, 0xe85a, 0xe85b, 0xe85c, 0xe85d, 0xe85e, 0xe85f, /*0x48-0x4f*/
+ 0xe860, 0xe861, 0xe862, 0xe863, 0xe864, 0xe865, 0xe866, 0xe867, /*0x50-0x57*/
+ 0xe868, 0xe869, 0xe86a, 0xe86b, 0xe86c, 0xe86d, 0xe86e, 0xe86f, /*0x58-0x5f*/
+ 0xe870, 0xe871, 0xe872, 0xe873, 0xe874, 0xe875, 0xe876, 0xe877, /*0x60-0x67*/
+ 0xe878, 0xe879, 0xe87a, 0xf6ce, 0xe87b, 0xe87c, 0xe87d, 0xe87e, /*0x68-0x6f*/
+ 0xe880, 0xe881, 0xe882, 0xe883, 0xe884, 0xe885, 0xe886, 0xe887, /*0x70-0x77*/
+ 0xe888, 0xe889, 0xe88a, 0xe88b, 0xe88c, 0xe88d, 0xe88e, 0xe88f, /*0x78-0x7f*/
+ 0xe890, 0xe891, 0xe892, 0xe893, 0xe894, 0xeec4, 0xeec5, 0xeec6, /*0x80-0x87*/
+ 0xd5eb, 0xb6a4, 0xeec8, 0xeec7, 0xeec9, 0xeeca, 0xc7a5, 0xeecb, /*0x88-0x8f*/
+ 0xeecc, 0xe895, 0xb7b0, 0xb5f6, 0xeecd, 0xeecf, 0xe896, 0xeece, /*0x90-0x97*/
+ 0xe897, 0xb8c6, 0xeed0, 0xeed1, 0xeed2, 0xb6db, 0xb3ae, 0xd6d3, /*0x98-0x9f*/
+ 0xc4c6, 0xb1b5, 0xb8d6, 0xeed3, 0xeed4, 0xd4bf, 0xc7d5, 0xbefb, /*0xa0-0xa7*/
+ 0xced9, 0xb9b3, 0xeed6, 0xeed5, 0xeed8, 0xeed7, 0xc5a5, 0xeed9, /*0xa8-0xaf*/
+ 0xeeda, 0xc7ae, 0xeedb, 0xc7af, 0xeedc, 0xb2a7, 0xeedd, 0xeede, /*0xb0-0xb7*/
+ 0xeedf, 0xeee0, 0xeee1, 0xd7ea, 0xeee2, 0xeee3, 0xbcd8, 0xeee4, /*0xb8-0xbf*/
+ 0xd3cb, 0xccfa, 0xb2ac, 0xc1e5, 0xeee5, 0xc7a6, 0xc3ad, 0xe898, /*0xc0-0xc7*/
+ 0xeee6, 0xeee7, 0xeee8, 0xeee9, 0xeeea, 0xeeeb, 0xeeec, 0xe899, /*0xc8-0xcf*/
+ 0xeeed, 0xeeee, 0xeeef, 0xe89a, 0xe89b, 0xeef0, 0xeef1, 0xeef2, /*0xd0-0xd7*/
+ 0xeef4, 0xeef3, 0xe89c, 0xeef5, 0xcdad, 0xc2c1, 0xeef6, 0xeef7, /*0xd8-0xdf*/
+ 0xeef8, 0xd5a1, 0xeef9, 0xcfb3, 0xeefa, 0xeefb, 0xe89d, 0xeefc, /*0xe0-0xe7*/
+ 0xeefd, 0xefa1, 0xeefe, 0xefa2, 0xb8f5, 0xc3fa, 0xefa3, 0xefa4, /*0xe8-0xef*/
+ 0xbdc2, 0xd2bf, 0xb2f9, 0xefa5, 0xefa6, 0xefa7, 0xd2f8, 0xefa8, /*0xf0-0xf7*/
+ 0xd6fd, 0xefa9, 0xc6cc, 0xe89e, 0xefaa, 0xefab, 0xc1b4, 0xefac, /*0xf8-0xff*/
+ /* 0x9500 */
+ 0xcffa, 0xcbf8, 0xefae, 0xefad, 0xb3fa, 0xb9f8, 0xefaf, 0xefb0, /*0x00-0x07*/
+ 0xd0e2, 0xefb1, 0xefb2, 0xb7e6, 0xd0bf, 0xefb3, 0xefb4, 0xefb5, /*0x08-0x0f*/
+ 0xc8f1, 0xcce0, 0xefb6, 0xefb7, 0xefb8, 0xefb9, 0xefba, 0xd5e0, /*0x10-0x17*/
+ 0xefbb, 0xb4ed, 0xc3aa, 0xefbc, 0xe89f, 0xefbd, 0xefbe, 0xefbf, /*0x18-0x1f*/
+ 0xe8a0, 0xcefd, 0xefc0, 0xc2e0, 0xb4b8, 0xd7b6, 0xbdf5, 0xe940, /*0x20-0x27*/
+ 0xcfc7, 0xefc3, 0xefc1, 0xefc2, 0xefc4, 0xb6a7, 0xbcfc, 0xbee2, /*0x28-0x2f*/
+ 0xc3cc, 0xefc5, 0xefc6, 0xe941, 0xefc7, 0xefcf, 0xefc8, 0xefc9, /*0x30-0x37*/
+ 0xefca, 0xc7c2, 0xeff1, 0xb6cd, 0xefcb, 0xe942, 0xefcc, 0xefcd, /*0x38-0x3f*/
+ 0xb6c6, 0xc3be, 0xefce, 0xe943, 0xefd0, 0xefd1, 0xefd2, 0xd5f2, /*0x40-0x47*/
+ 0xe944, 0xefd3, 0xc4f7, 0xe945, 0xefd4, 0xc4f8, 0xefd5, 0xefd6, /*0x48-0x4f*/
+ 0xb8e4, 0xb0f7, 0xefd7, 0xefd8, 0xefd9, 0xe946, 0xefda, 0xefdb, /*0x50-0x57*/
+ 0xefdc, 0xefdd, 0xe947, 0xefde, 0xbeb5, 0xefe1, 0xefdf, 0xefe0, /*0x58-0x5f*/
+ 0xe948, 0xefe2, 0xefe3, 0xc1cd, 0xefe4, 0xefe5, 0xefe6, 0xefe7, /*0x60-0x67*/
+ 0xefe8, 0xefe9, 0xefea, 0xefeb, 0xefec, 0xc0d8, 0xe949, 0xefed, /*0x68-0x6f*/
+ 0xc1ad, 0xefee, 0xefef, 0xeff0, 0xe94a, 0xe94b, 0xcfe2, 0xe94c, /*0x70-0x77*/
+ 0xe94d, 0xe94e, 0xe94f, 0xe950, 0xe951, 0xe952, 0xe953, 0xb3a4, /*0x78-0x7f*/
+ 0xe954, 0xe955, 0xe956, 0xe957, 0xe958, 0xe959, 0xe95a, 0xe95b, /*0x80-0x87*/
+ 0xe95c, 0xe95d, 0xe95e, 0xe95f, 0xe960, 0xe961, 0xe962, 0xe963, /*0x88-0x8f*/
+ 0xe964, 0xe965, 0xe966, 0xe967, 0xe968, 0xe969, 0xe96a, 0xe96b, /*0x90-0x97*/
+ 0xe96c, 0xe96d, 0xe96e, 0xe96f, 0xe970, 0xe971, 0xe972, 0xe973, /*0x98-0x9f*/
+ 0xe974, 0xe975, 0xe976, 0xe977, 0xe978, 0xe979, 0xe97a, 0xe97b, /*0xa0-0xa7*/
+ 0xe97c, 0xe97d, 0xe97e, 0xe980, 0xe981, 0xe982, 0xe983, 0xe984, /*0xa8-0xaf*/
+ 0xe985, 0xe986, 0xe987, 0xe988, 0xe989, 0xe98a, 0xe98b, 0xe98c, /*0xb0-0xb7*/
+ 0xe98d, 0xe98e, 0xe98f, 0xe990, 0xe991, 0xe992, 0xe993, 0xe994, /*0xb8-0xbf*/
+ 0xe995, 0xe996, 0xe997, 0xe998, 0xe999, 0xe99a, 0xe99b, 0xe99c, /*0xc0-0xc7*/
+ 0xe99d, 0xe99e, 0xe99f, 0xe9a0, 0xea40, 0xea41, 0xea42, 0xea43, /*0xc8-0xcf*/
+ 0xea44, 0xea45, 0xea46, 0xea47, 0xea48, 0xea49, 0xea4a, 0xea4b, /*0xd0-0xd7*/
+ 0xea4c, 0xea4d, 0xea4e, 0xea4f, 0xea50, 0xea51, 0xea52, 0xea53, /*0xd8-0xdf*/
+ 0xea54, 0xea55, 0xea56, 0xea57, 0xea58, 0xea59, 0xea5a, 0xea5b, /*0xe0-0xe7*/
+ 0xc3c5, 0xe3c5, 0xc9c1, 0xe3c6, 0xea5c, 0xb1d5, 0xceca, 0xb4b3, /*0xe8-0xef*/
+ 0xc8f2, 0xe3c7, 0xcfd0, 0xe3c8, 0xbce4, 0xe3c9, 0xe3ca, 0xc3c6, /*0xf0-0xf7*/
+ 0xd5a2, 0xc4d6, 0xb9eb, 0xcec5, 0xe3cb, 0xc3f6, 0xe3cc, 0xea5d, /*0xf8-0xff*/
+ /* 0x9600 */
+ 0xb7a7, 0xb8f3, 0xbad2, 0xe3cd, 0xe3ce, 0xd4c4, 0xe3cf, 0xea5e, /*0x00-0x07*/
+ 0xe3d0, 0xd1cb, 0xe3d1, 0xe3d2, 0xe3d3, 0xe3d4, 0xd1d6, 0xe3d5, /*0x08-0x0f*/
+ 0xb2fb, 0xc0bb, 0xe3d6, 0xea5f, 0xc0ab, 0xe3d7, 0xe3d8, 0xe3d9, /*0x10-0x17*/
+ 0xea60, 0xe3da, 0xe3db, 0xea61, 0xb8b7, 0xdae2, 0xea62, 0xb6d3, /*0x18-0x1f*/
+ 0xea63, 0xdae4, 0xdae3, 0xea64, 0xea65, 0xea66, 0xea67, 0xea68, /*0x20-0x27*/
+ 0xea69, 0xea6a, 0xdae6, 0xea6b, 0xea6c, 0xea6d, 0xc8ee, 0xea6e, /*0x28-0x2f*/
+ 0xea6f, 0xdae5, 0xb7c0, 0xd1f4, 0xd2f5, 0xd5f3, 0xbdd7, 0xea70, /*0x30-0x37*/
+ 0xea71, 0xea72, 0xea73, 0xd7e8, 0xdae8, 0xdae7, 0xea74, 0xb0a2, /*0x38-0x3f*/
+ 0xcdd3, 0xea75, 0xdae9, 0xea76, 0xb8bd, 0xbcca, 0xc2bd, 0xc2a4, /*0x40-0x47*/
+ 0xb3c2, 0xdaea, 0xea77, 0xc2aa, 0xc4b0, 0xbdb5, 0xea78, 0xea79, /*0x48-0x4f*/
+ 0xcfde, 0xea7a, 0xea7b, 0xea7c, 0xdaeb, 0xc9c2, 0xea7d, 0xea7e, /*0x50-0x57*/
+ 0xea80, 0xea81, 0xea82, 0xb1dd, 0xea83, 0xea84, 0xea85, 0xdaec, /*0x58-0x5f*/
+ 0xea86, 0xb6b8, 0xd4ba, 0xea87, 0xb3fd, 0xea88, 0xea89, 0xdaed, /*0x60-0x67*/
+ 0xd4c9, 0xcfd5, 0xc5e3, 0xea8a, 0xdaee, 0xea8b, 0xea8c, 0xea8d, /*0x68-0x6f*/
+ 0xea8e, 0xea8f, 0xdaef, 0xea90, 0xdaf0, 0xc1ea, 0xccd5, 0xcfdd, /*0x70-0x77*/
+ 0xea91, 0xea92, 0xea93, 0xea94, 0xea95, 0xea96, 0xea97, 0xea98, /*0x78-0x7f*/
+ 0xea99, 0xea9a, 0xea9b, 0xea9c, 0xea9d, 0xd3e7, 0xc2a1, 0xea9e, /*0x80-0x87*/
+ 0xdaf1, 0xea9f, 0xeaa0, 0xcbe5, 0xeb40, 0xdaf2, 0xeb41, 0xcbe6, /*0x88-0x8f*/
+ 0xd2fe, 0xeb42, 0xeb43, 0xeb44, 0xb8f4, 0xeb45, 0xeb46, 0xdaf3, /*0x90-0x97*/
+ 0xb0af, 0xcfb6, 0xeb47, 0xeb48, 0xd5cf, 0xeb49, 0xeb4a, 0xeb4b, /*0x98-0x9f*/
+ 0xeb4c, 0xeb4d, 0xeb4e, 0xeb4f, 0xeb50, 0xeb51, 0xeb52, 0xcbed, /*0xa0-0xa7*/
+ 0xeb53, 0xeb54, 0xeb55, 0xeb56, 0xeb57, 0xeb58, 0xeb59, 0xeb5a, /*0xa8-0xaf*/
+ 0xdaf4, 0xeb5b, 0xeb5c, 0xe3c4, 0xeb5d, 0xeb5e, 0xc1a5, 0xeb5f, /*0xb0-0xb7*/
+ 0xeb60, 0xf6bf, 0xeb61, 0xeb62, 0xf6c0, 0xf6c1, 0xc4d1, 0xeb63, /*0xb8-0xbf*/
+ 0xc8b8, 0xd1e3, 0xeb64, 0xeb65, 0xd0db, 0xd1c5, 0xbcaf, 0xb9cd, /*0xc0-0xc7*/
+ 0xeb66, 0xeff4, 0xeb67, 0xeb68, 0xb4c6, 0xd3ba, 0xf6c2, 0xb3fb, /*0xc8-0xcf*/
+ 0xeb69, 0xeb6a, 0xf6c3, 0xeb6b, 0xeb6c, 0xb5f1, 0xeb6d, 0xeb6e, /*0xd0-0xd7*/
+ 0xeb6f, 0xeb70, 0xeb71, 0xeb72, 0xeb73, 0xeb74, 0xeb75, 0xeb76, /*0xd8-0xdf*/
+ 0xf6c5, 0xeb77, 0xeb78, 0xeb79, 0xeb7a, 0xeb7b, 0xeb7c, 0xeb7d, /*0xe0-0xe7*/
+ 0xd3ea, 0xf6a7, 0xd1a9, 0xeb7e, 0xeb80, 0xeb81, 0xeb82, 0xf6a9, /*0xe8-0xef*/
+ 0xeb83, 0xeb84, 0xeb85, 0xf6a8, 0xeb86, 0xeb87, 0xc1e3, 0xc0d7, /*0xf0-0xf7*/
+ 0xeb88, 0xb1a2, 0xeb89, 0xeb8a, 0xeb8b, 0xeb8c, 0xceed, 0xeb8d, /*0xf8-0xff*/
+ /* 0x9700 */
+ 0xd0e8, 0xf6ab, 0xeb8e, 0xeb8f, 0xcff6, 0xeb90, 0xf6aa, 0xd5f0, /*0x00-0x07*/
+ 0xf6ac, 0xc3b9, 0xeb91, 0xeb92, 0xeb93, 0xbbf4, 0xf6ae, 0xf6ad, /*0x08-0x0f*/
+ 0xeb94, 0xeb95, 0xeb96, 0xc4de, 0xeb97, 0xeb98, 0xc1d8, 0xeb99, /*0x10-0x17*/
+ 0xeb9a, 0xeb9b, 0xeb9c, 0xeb9d, 0xcbaa, 0xeb9e, 0xcfbc, 0xeb9f, /*0x18-0x1f*/
+ 0xeba0, 0xec40, 0xec41, 0xec42, 0xec43, 0xec44, 0xec45, 0xec46, /*0x20-0x27*/
+ 0xec47, 0xec48, 0xf6af, 0xec49, 0xec4a, 0xf6b0, 0xec4b, 0xec4c, /*0x28-0x2f*/
+ 0xf6b1, 0xec4d, 0xc2b6, 0xec4e, 0xec4f, 0xec50, 0xec51, 0xec52, /*0x30-0x37*/
+ 0xb0d4, 0xc5f9, 0xec53, 0xec54, 0xec55, 0xec56, 0xf6b2, 0xec57, /*0x38-0x3f*/
+ 0xec58, 0xec59, 0xec5a, 0xec5b, 0xec5c, 0xec5d, 0xec5e, 0xec5f, /*0x40-0x47*/
+ 0xec60, 0xec61, 0xec62, 0xec63, 0xec64, 0xec65, 0xec66, 0xec67, /*0x48-0x4f*/
+ 0xec68, 0xec69, 0xc7e0, 0xf6a6, 0xec6a, 0xec6b, 0xbeb8, 0xec6c, /*0x50-0x57*/
+ 0xec6d, 0xbeb2, 0xec6e, 0xb5e5, 0xec6f, 0xec70, 0xb7c7, 0xec71, /*0x58-0x5f*/
+ 0xbfbf, 0xc3d2, 0xc3e6, 0xec72, 0xec73, 0xd8cc, 0xec74, 0xec75, /*0x60-0x67*/
+ 0xec76, 0xb8ef, 0xec77, 0xec78, 0xec79, 0xec7a, 0xec7b, 0xec7c, /*0x68-0x6f*/
+ 0xec7d, 0xec7e, 0xec80, 0xbdf9, 0xd1a5, 0xec81, 0xb0d0, 0xec82, /*0x70-0x77*/
+ 0xec83, 0xec84, 0xec85, 0xec86, 0xf7b0, 0xec87, 0xec88, 0xec89, /*0x78-0x7f*/
+ 0xec8a, 0xec8b, 0xec8c, 0xec8d, 0xec8e, 0xf7b1, 0xec8f, 0xec90, /*0x80-0x87*/
+ 0xec91, 0xec92, 0xec93, 0xd0ac, 0xec94, 0xb0b0, 0xec95, 0xec96, /*0x88-0x8f*/
+ 0xec97, 0xf7b2, 0xf7b3, 0xec98, 0xf7b4, 0xec99, 0xec9a, 0xec9b, /*0x90-0x97*/
+ 0xc7ca, 0xec9c, 0xec9d, 0xec9e, 0xec9f, 0xeca0, 0xed40, 0xed41, /*0x98-0x9f*/
+ 0xbecf, 0xed42, 0xed43, 0xf7b7, 0xed44, 0xed45, 0xed46, 0xed47, /*0xa0-0xa7*/
+ 0xed48, 0xed49, 0xed4a, 0xf7b6, 0xed4b, 0xb1de, 0xed4c, 0xf7b5, /*0xa8-0xaf*/
+ 0xed4d, 0xed4e, 0xf7b8, 0xed4f, 0xf7b9, 0xed50, 0xed51, 0xed52, /*0xb0-0xb7*/
+ 0xed53, 0xed54, 0xed55, 0xed56, 0xed57, 0xed58, 0xed59, 0xed5a, /*0xb8-0xbf*/
+ 0xed5b, 0xed5c, 0xed5d, 0xed5e, 0xed5f, 0xed60, 0xed61, 0xed62, /*0xc0-0xc7*/
+ 0xed63, 0xed64, 0xed65, 0xed66, 0xed67, 0xed68, 0xed69, 0xed6a, /*0xc8-0xcf*/
+ 0xed6b, 0xed6c, 0xed6d, 0xed6e, 0xed6f, 0xed70, 0xed71, 0xed72, /*0xd0-0xd7*/
+ 0xed73, 0xed74, 0xed75, 0xed76, 0xed77, 0xed78, 0xed79, 0xed7a, /*0xd8-0xdf*/
+ 0xed7b, 0xed7c, 0xed7d, 0xed7e, 0xed80, 0xed81, 0xcea4, 0xc8cd, /*0xe0-0xe7*/
+ 0xed82, 0xbaab, 0xe8b8, 0xe8b9, 0xe8ba, 0xbec2, 0xed83, 0xed84, /*0xe8-0xef*/
+ 0xed85, 0xed86, 0xed87, 0xd2f4, 0xed88, 0xd4cf, 0xc9d8, 0xed89, /*0xf0-0xf7*/
+ 0xed8a, 0xed8b, 0xed8c, 0xed8d, 0xed8e, 0xed8f, 0xed90, 0xed91, /*0xf8-0xff*/
+ /* 0x9800 */
+ 0xed92, 0xed93, 0xed94, 0xed95, 0xed96, 0xed97, 0xed98, 0xed99, /*0x00-0x07*/
+ 0xed9a, 0xed9b, 0xed9c, 0xed9d, 0xed9e, 0xed9f, 0xeda0, 0xee40, /*0x08-0x0f*/
+ 0xee41, 0xee42, 0xee43, 0xee44, 0xee45, 0xee46, 0xee47, 0xee48, /*0x10-0x17*/
+ 0xee49, 0xee4a, 0xee4b, 0xee4c, 0xee4d, 0xee4e, 0xee4f, 0xee50, /*0x18-0x1f*/
+ 0xee51, 0xee52, 0xee53, 0xee54, 0xee55, 0xee56, 0xee57, 0xee58, /*0x20-0x27*/
+ 0xee59, 0xee5a, 0xee5b, 0xee5c, 0xee5d, 0xee5e, 0xee5f, 0xee60, /*0x28-0x2f*/
+ 0xee61, 0xee62, 0xee63, 0xee64, 0xee65, 0xee66, 0xee67, 0xee68, /*0x30-0x37*/
+ 0xee69, 0xee6a, 0xee6b, 0xee6c, 0xee6d, 0xee6e, 0xee6f, 0xee70, /*0x38-0x3f*/
+ 0xee71, 0xee72, 0xee73, 0xee74, 0xee75, 0xee76, 0xee77, 0xee78, /*0x40-0x47*/
+ 0xee79, 0xee7a, 0xee7b, 0xee7c, 0xee7d, 0xee7e, 0xee80, 0xee81, /*0x48-0x4f*/
+ 0xee82, 0xee83, 0xee84, 0xee85, 0xee86, 0xee87, 0xee88, 0xee89, /*0x50-0x57*/
+ 0xee8a, 0xee8b, 0xee8c, 0xee8d, 0xee8e, 0xee8f, 0xee90, 0xee91, /*0x58-0x5f*/
+ 0xee92, 0xee93, 0xee94, 0xee95, 0xee96, 0xee97, 0xee98, 0xee99, /*0x60-0x67*/
+ 0xee9a, 0xee9b, 0xee9c, 0xee9d, 0xee9e, 0xee9f, 0xeea0, 0xef40, /*0x68-0x6f*/
+ 0xef41, 0xef42, 0xef43, 0xef44, 0xef45, 0xd2b3, 0xb6a5, 0xc7ea, /*0x70-0x77*/
+ 0xf1fc, 0xcfee, 0xcbb3, 0xd0eb, 0xe7ef, 0xcde7, 0xb9cb, 0xb6d9, /*0x78-0x7f*/
+ 0xf1fd, 0xb0e4, 0xcbcc, 0xf1fe, 0xd4a4, 0xc2ad, 0xc1ec, 0xc6c4, /*0x80-0x87*/
+ 0xbeb1, 0xf2a1, 0xbcd5, 0xef46, 0xf2a2, 0xf2a3, 0xef47, 0xf2a4, /*0x88-0x8f*/
+ 0xd2c3, 0xc6b5, 0xef48, 0xcdc7, 0xf2a5, 0xef49, 0xd3b1, 0xbfc5, /*0x90-0x97*/
+ 0xcce2, 0xef4a, 0xf2a6, 0xf2a7, 0xd1d5, 0xb6ee, 0xf2a8, 0xf2a9, /*0x98-0x9f*/
+ 0xb5df, 0xf2aa, 0xf2ab, 0xef4b, 0xb2fc, 0xf2ac, 0xf2ad, 0xc8a7, /*0xa0-0xa7*/
+ 0xef4c, 0xef4d, 0xef4e, 0xef4f, 0xef50, 0xef51, 0xef52, 0xef53, /*0xa8-0xaf*/
+ 0xef54, 0xef55, 0xef56, 0xef57, 0xef58, 0xef59, 0xef5a, 0xef5b, /*0xb0-0xb7*/
+ 0xef5c, 0xef5d, 0xef5e, 0xef5f, 0xef60, 0xef61, 0xef62, 0xef63, /*0xb8-0xbf*/
+ 0xef64, 0xef65, 0xef66, 0xef67, 0xef68, 0xef69, 0xef6a, 0xef6b, /*0xc0-0xc7*/
+ 0xef6c, 0xef6d, 0xef6e, 0xef6f, 0xef70, 0xef71, 0xb7e7, 0xef72, /*0xc8-0xcf*/
+ 0xef73, 0xeca9, 0xecaa, 0xecab, 0xef74, 0xecac, 0xef75, 0xef76, /*0xd0-0xd7*/
+ 0xc6ae, 0xecad, 0xecae, 0xef77, 0xef78, 0xef79, 0xb7c9, 0xcab3, /*0xd8-0xdf*/
+ 0xef7a, 0xef7b, 0xef7c, 0xef7d, 0xef7e, 0xef80, 0xef81, 0xe2b8, /*0xe0-0xe7*/
+ 0xf7cf, 0xef82, 0xef83, 0xef84, 0xef85, 0xef86, 0xef87, 0xef88, /*0xe8-0xef*/
+ 0xef89, 0xef8a, 0xef8b, 0xef8c, 0xef8d, 0xef8e, 0xef8f, 0xef90, /*0xf0-0xf7*/
+ 0xef91, 0xef92, 0xef93, 0xef94, 0xef95, 0xef96, 0xef97, 0xef98, /*0xf8-0xff*/
+ /* 0x9900 */
+ 0xef99, 0xef9a, 0xef9b, 0xef9c, 0xef9d, 0xef9e, 0xef9f, 0xefa0, /*0x00-0x07*/
+ 0xf040, 0xf041, 0xf042, 0xf043, 0xf044, 0xf7d0, 0xf045, 0xf046, /*0x08-0x0f*/
+ 0xb2cd, 0xf047, 0xf048, 0xf049, 0xf04a, 0xf04b, 0xf04c, 0xf04d, /*0x10-0x17*/
+ 0xf04e, 0xf04f, 0xf050, 0xf051, 0xf052, 0xf053, 0xf054, 0xf055, /*0x18-0x1f*/
+ 0xf056, 0xf057, 0xf058, 0xf059, 0xf05a, 0xf05b, 0xf05c, 0xf05d, /*0x20-0x27*/
+ 0xf05e, 0xf05f, 0xf060, 0xf061, 0xf062, 0xf063, 0xf7d1, 0xf064, /*0x28-0x2f*/
+ 0xf065, 0xf066, 0xf067, 0xf068, 0xf069, 0xf06a, 0xf06b, 0xf06c, /*0x30-0x37*/
+ 0xf06d, 0xf06e, 0xf06f, 0xf070, 0xf071, 0xf072, 0xf073, 0xf074, /*0x38-0x3f*/
+ 0xf075, 0xf076, 0xf077, 0xf078, 0xf079, 0xf07a, 0xf07b, 0xf07c, /*0x40-0x47*/
+ 0xf07d, 0xf07e, 0xf080, 0xf081, 0xf082, 0xf083, 0xf084, 0xf085, /*0x48-0x4f*/
+ 0xf086, 0xf087, 0xf088, 0xf089, 0xf7d3, 0xf7d2, 0xf08a, 0xf08b, /*0x50-0x57*/
+ 0xf08c, 0xf08d, 0xf08e, 0xf08f, 0xf090, 0xf091, 0xf092, 0xf093, /*0x58-0x5f*/
+ 0xf094, 0xf095, 0xf096, 0xe2bb, 0xf097, 0xbca2, 0xf098, 0xe2bc, /*0x60-0x67*/
+ 0xe2bd, 0xe2be, 0xe2bf, 0xe2c0, 0xe2c1, 0xb7b9, 0xd2fb, 0xbda4, /*0x68-0x6f*/
+ 0xcace, 0xb1a5, 0xcbc7, 0xf099, 0xe2c2, 0xb6fc, 0xc8c4, 0xe2c3, /*0x70-0x77*/
+ 0xf09a, 0xf09b, 0xbdc8, 0xf09c, 0xb1fd, 0xe2c4, 0xf09d, 0xb6f6, /*0x78-0x7f*/
+ 0xe2c5, 0xc4d9, 0xf09e, 0xf09f, 0xe2c6, 0xcfda, 0xb9dd, 0xe2c7, /*0x80-0x87*/
+ 0xc0a1, 0xf0a0, 0xe2c8, 0xb2f6, 0xf140, 0xe2c9, 0xf141, 0xc1f3, /*0x88-0x8f*/
+ 0xe2ca, 0xe2cb, 0xc2f8, 0xe2cc, 0xe2cd, 0xe2ce, 0xcad7, 0xd8b8, /*0x90-0x97*/
+ 0xd9e5, 0xcfe3, 0xf142, 0xf143, 0xf144, 0xf145, 0xf146, 0xf147, /*0x98-0x9f*/
+ 0xf148, 0xf149, 0xf14a, 0xf14b, 0xf14c, 0xf0a5, 0xf14d, 0xf14e, /*0xa0-0xa7*/
+ 0xdcb0, 0xf14f, 0xf150, 0xf151, 0xf152, 0xf153, 0xf154, 0xf155, /*0xa8-0xaf*/
+ 0xf156, 0xf157, 0xf158, 0xf159, 0xf15a, 0xf15b, 0xf15c, 0xf15d, /*0xb0-0xb7*/
+ 0xf15e, 0xf15f, 0xf160, 0xf161, 0xf162, 0xf163, 0xf164, 0xf165, /*0xb8-0xbf*/
+ 0xf166, 0xf167, 0xf168, 0xf169, 0xf16a, 0xf16b, 0xf16c, 0xf16d, /*0xc0-0xc7*/
+ 0xf16e, 0xf16f, 0xf170, 0xf171, 0xf172, 0xf173, 0xf174, 0xf175, /*0xc8-0xcf*/
+ 0xf176, 0xf177, 0xf178, 0xf179, 0xf17a, 0xf17b, 0xf17c, 0xf17d, /*0xd0-0xd7*/
+ 0xf17e, 0xf180, 0xf181, 0xf182, 0xf183, 0xf184, 0xf185, 0xf186, /*0xd8-0xdf*/
+ 0xf187, 0xf188, 0xf189, 0xf18a, 0xf18b, 0xf18c, 0xf18d, 0xf18e, /*0xe0-0xe7*/
+ 0xf18f, 0xf190, 0xf191, 0xf192, 0xf193, 0xf194, 0xf195, 0xf196, /*0xe8-0xef*/
+ 0xf197, 0xf198, 0xf199, 0xf19a, 0xf19b, 0xf19c, 0xf19d, 0xf19e, /*0xf0-0xf7*/
+ 0xf19f, 0xf1a0, 0xf240, 0xf241, 0xf242, 0xf243, 0xf244, 0xf245, /*0xf8-0xff*/
+ /* 0x9a00 */
+ 0xf246, 0xf247, 0xf248, 0xf249, 0xf24a, 0xf24b, 0xf24c, 0xf24d, /*0x00-0x07*/
+ 0xf24e, 0xf24f, 0xf250, 0xf251, 0xf252, 0xf253, 0xf254, 0xf255, /*0x08-0x0f*/
+ 0xf256, 0xf257, 0xf258, 0xf259, 0xf25a, 0xf25b, 0xf25c, 0xf25d, /*0x10-0x17*/
+ 0xf25e, 0xf25f, 0xf260, 0xf261, 0xf262, 0xf263, 0xf264, 0xf265, /*0x18-0x1f*/
+ 0xf266, 0xf267, 0xf268, 0xf269, 0xf26a, 0xf26b, 0xf26c, 0xf26d, /*0x20-0x27*/
+ 0xf26e, 0xf26f, 0xf270, 0xf271, 0xf272, 0xf273, 0xf274, 0xf275, /*0x28-0x2f*/
+ 0xf276, 0xf277, 0xf278, 0xf279, 0xf27a, 0xf27b, 0xf27c, 0xf27d, /*0x30-0x37*/
+ 0xf27e, 0xf280, 0xf281, 0xf282, 0xf283, 0xf284, 0xf285, 0xf286, /*0x38-0x3f*/
+ 0xf287, 0xf288, 0xf289, 0xf28a, 0xf28b, 0xf28c, 0xf28d, 0xf28e, /*0x40-0x47*/
+ 0xf28f, 0xf290, 0xf291, 0xf292, 0xf293, 0xf294, 0xf295, 0xf296, /*0x48-0x4f*/
+ 0xf297, 0xf298, 0xf299, 0xf29a, 0xf29b, 0xf29c, 0xf29d, 0xf29e, /*0x50-0x57*/
+ 0xf29f, 0xf2a0, 0xf340, 0xf341, 0xf342, 0xf343, 0xf344, 0xf345, /*0x58-0x5f*/
+ 0xf346, 0xf347, 0xf348, 0xf349, 0xf34a, 0xf34b, 0xf34c, 0xf34d, /*0x60-0x67*/
+ 0xf34e, 0xf34f, 0xf350, 0xf351, 0xc2ed, 0xd4a6, 0xcdd4, 0xd1b1, /*0x68-0x6f*/
+ 0xb3db, 0xc7fd, 0xf352, 0xb2b5, 0xc2bf, 0xe6e0, 0xcabb, 0xe6e1, /*0x70-0x77*/
+ 0xe6e2, 0xbed4, 0xe6e3, 0xd7a4, 0xcdd5, 0xe6e5, 0xbcdd, 0xe6e4, /*0x78-0x7f*/
+ 0xe6e6, 0xe6e7, 0xc2ee, 0xf353, 0xbdbe, 0xe6e8, 0xc2e6, 0xbaa7, /*0x80-0x87*/
+ 0xe6e9, 0xf354, 0xe6ea, 0xb3d2, 0xd1e9, 0xf355, 0xf356, 0xbfa5, /*0x88-0x8f*/
+ 0xe6eb, 0xc6ef, 0xe6ec, 0xe6ed, 0xf357, 0xf358, 0xe6ee, 0xc6ad, /*0x90-0x97*/
+ 0xe6ef, 0xf359, 0xc9a7, 0xe6f0, 0xe6f1, 0xe6f2, 0xe5b9, 0xe6f3, /*0x98-0x9f*/
+ 0xe6f4, 0xc2e2, 0xe6f5, 0xe6f6, 0xd6e8, 0xe6f7, 0xf35a, 0xe6f8, /*0xa0-0xa7*/
+ 0xb9c7, 0xf35b, 0xf35c, 0xf35d, 0xf35e, 0xf35f, 0xf360, 0xf361, /*0xa8-0xaf*/
+ 0xf7bb, 0xf7ba, 0xf362, 0xf363, 0xf364, 0xf365, 0xf7be, 0xf7bc, /*0xb0-0xb7*/
+ 0xbaa1, 0xf366, 0xf7bf, 0xf367, 0xf7c0, 0xf368, 0xf369, 0xf36a, /*0xb8-0xbf*/
+ 0xf7c2, 0xf7c1, 0xf7c4, 0xf36b, 0xf36c, 0xf7c3, 0xf36d, 0xf36e, /*0xc0-0xc7*/
+ 0xf36f, 0xf370, 0xf371, 0xf7c5, 0xf7c6, 0xf372, 0xf373, 0xf374, /*0xc8-0xcf*/
+ 0xf375, 0xf7c7, 0xf376, 0xcbe8, 0xf377, 0xf378, 0xf379, 0xf37a, /*0xd0-0xd7*/
+ 0xb8df, 0xf37b, 0xf37c, 0xf37d, 0xf37e, 0xf380, 0xf381, 0xf7d4, /*0xd8-0xdf*/
+ 0xf382, 0xf7d5, 0xf383, 0xf384, 0xf385, 0xf386, 0xf7d6, 0xf387, /*0xe0-0xe7*/
+ 0xf388, 0xf389, 0xf38a, 0xf7d8, 0xf38b, 0xf7da, 0xf38c, 0xf7d7, /*0xe8-0xef*/
+ 0xf38d, 0xf38e, 0xf38f, 0xf390, 0xf391, 0xf392, 0xf393, 0xf394, /*0xf0-0xf7*/
+ 0xf395, 0xf7db, 0xf396, 0xf7d9, 0xf397, 0xf398, 0xf399, 0xf39a, /*0xf8-0xff*/
+ /* 0x9b00 */
+ 0xf39b, 0xf39c, 0xf39d, 0xd7d7, 0xf39e, 0xf39f, 0xf3a0, 0xf440, /*0x00-0x07*/
+ 0xf7dc, 0xf441, 0xf442, 0xf443, 0xf444, 0xf445, 0xf446, 0xf7dd, /*0x08-0x0f*/
+ 0xf447, 0xf448, 0xf449, 0xf7de, 0xf44a, 0xf44b, 0xf44c, 0xf44d, /*0x10-0x17*/
+ 0xf44e, 0xf44f, 0xf450, 0xf451, 0xf452, 0xf453, 0xf454, 0xf7df, /*0x18-0x1f*/
+ 0xf455, 0xf456, 0xf457, 0xf7e0, 0xf458, 0xf459, 0xf45a, 0xf45b, /*0x20-0x27*/
+ 0xf45c, 0xf45d, 0xf45e, 0xf45f, 0xf460, 0xf461, 0xf462, 0xdbcb, /*0x28-0x2f*/
+ 0xf463, 0xf464, 0xd8aa, 0xf465, 0xf466, 0xf467, 0xf468, 0xf469, /*0x30-0x37*/
+ 0xf46a, 0xf46b, 0xf46c, 0xe5f7, 0xb9ed, 0xf46d, 0xf46e, 0xf46f, /*0x38-0x3f*/
+ 0xf470, 0xbffd, 0xbbea, 0xf7c9, 0xc6c7, 0xf7c8, 0xf471, 0xf7ca, /*0x40-0x47*/
+ 0xf7cc, 0xf7cb, 0xf472, 0xf473, 0xf474, 0xf7cd, 0xf475, 0xceba, /*0x48-0x4f*/
+ 0xf476, 0xf7ce, 0xf477, 0xf478, 0xc4a7, 0xf479, 0xf47a, 0xf47b, /*0x50-0x57*/
+ 0xf47c, 0xf47d, 0xf47e, 0xf480, 0xf481, 0xf482, 0xf483, 0xf484, /*0x58-0x5f*/
+ 0xf485, 0xf486, 0xf487, 0xf488, 0xf489, 0xf48a, 0xf48b, 0xf48c, /*0x60-0x67*/
+ 0xf48d, 0xf48e, 0xf48f, 0xf490, 0xf491, 0xf492, 0xf493, 0xf494, /*0x68-0x6f*/
+ 0xf495, 0xf496, 0xf497, 0xf498, 0xf499, 0xf49a, 0xf49b, 0xf49c, /*0x70-0x77*/
+ 0xf49d, 0xf49e, 0xf49f, 0xf4a0, 0xf540, 0xf541, 0xf542, 0xf543, /*0x78-0x7f*/
+ 0xf544, 0xf545, 0xf546, 0xf547, 0xf548, 0xf549, 0xf54a, 0xf54b, /*0x80-0x87*/
+ 0xf54c, 0xf54d, 0xf54e, 0xf54f, 0xf550, 0xf551, 0xf552, 0xf553, /*0x88-0x8f*/
+ 0xf554, 0xf555, 0xf556, 0xf557, 0xf558, 0xf559, 0xf55a, 0xf55b, /*0x90-0x97*/
+ 0xf55c, 0xf55d, 0xf55e, 0xf55f, 0xf560, 0xf561, 0xf562, 0xf563, /*0x98-0x9f*/
+ 0xf564, 0xf565, 0xf566, 0xf567, 0xf568, 0xf569, 0xf56a, 0xf56b, /*0xa0-0xa7*/
+ 0xf56c, 0xf56d, 0xf56e, 0xf56f, 0xf570, 0xf571, 0xf572, 0xf573, /*0xa8-0xaf*/
+ 0xf574, 0xf575, 0xf576, 0xf577, 0xf578, 0xf579, 0xf57a, 0xf57b, /*0xb0-0xb7*/
+ 0xf57c, 0xf57d, 0xf57e, 0xf580, 0xf581, 0xf582, 0xf583, 0xf584, /*0xb8-0xbf*/
+ 0xf585, 0xf586, 0xf587, 0xf588, 0xf589, 0xf58a, 0xf58b, 0xf58c, /*0xc0-0xc7*/
+ 0xf58d, 0xf58e, 0xf58f, 0xf590, 0xf591, 0xf592, 0xf593, 0xf594, /*0xc8-0xcf*/
+ 0xf595, 0xf596, 0xf597, 0xf598, 0xf599, 0xf59a, 0xf59b, 0xf59c, /*0xd0-0xd7*/
+ 0xf59d, 0xf59e, 0xf59f, 0xf5a0, 0xf640, 0xf641, 0xf642, 0xf643, /*0xd8-0xdf*/
+ 0xf644, 0xf645, 0xf646, 0xf647, 0xf648, 0xf649, 0xf64a, 0xf64b, /*0xe0-0xe7*/
+ 0xf64c, 0xf64d, 0xf64e, 0xf64f, 0xf650, 0xf651, 0xf652, 0xf653, /*0xe8-0xef*/
+ 0xf654, 0xf655, 0xf656, 0xf657, 0xf658, 0xf659, 0xf65a, 0xf65b, /*0xf0-0xf7*/
+ 0xf65c, 0xf65d, 0xf65e, 0xf65f, 0xf660, 0xf661, 0xf662, 0xf663, /*0xf8-0xff*/
+ /* 0x9c00 */
+ 0xf664, 0xf665, 0xf666, 0xf667, 0xf668, 0xf669, 0xf66a, 0xf66b, /*0x00-0x07*/
+ 0xf66c, 0xf66d, 0xf66e, 0xf66f, 0xf670, 0xf671, 0xf672, 0xf673, /*0x08-0x0f*/
+ 0xf674, 0xf675, 0xf676, 0xf677, 0xf678, 0xf679, 0xf67a, 0xf67b, /*0x10-0x17*/
+ 0xf67c, 0xf67d, 0xf67e, 0xf680, 0xf681, 0xf682, 0xf683, 0xf684, /*0x18-0x1f*/
+ 0xf685, 0xf686, 0xf687, 0xf688, 0xf689, 0xf68a, 0xf68b, 0xf68c, /*0x20-0x27*/
+ 0xf68d, 0xf68e, 0xf68f, 0xf690, 0xf691, 0xf692, 0xf693, 0xf694, /*0x28-0x2f*/
+ 0xf695, 0xf696, 0xf697, 0xf698, 0xf699, 0xf69a, 0xf69b, 0xf69c, /*0x30-0x37*/
+ 0xf69d, 0xf69e, 0xf69f, 0xf6a0, 0xf740, 0xf741, 0xf742, 0xf743, /*0x38-0x3f*/
+ 0xf744, 0xf745, 0xf746, 0xf747, 0xf748, 0xf749, 0xf74a, 0xf74b, /*0x40-0x47*/
+ 0xf74c, 0xf74d, 0xf74e, 0xf74f, 0xf750, 0xf751, 0xf752, 0xf753, /*0x48-0x4f*/
+ 0xf754, 0xf755, 0xf756, 0xf757, 0xf758, 0xf759, 0xf75a, 0xf75b, /*0x50-0x57*/
+ 0xf75c, 0xf75d, 0xf75e, 0xf75f, 0xf760, 0xf761, 0xf762, 0xf763, /*0x58-0x5f*/
+ 0xf764, 0xf765, 0xf766, 0xf767, 0xf768, 0xf769, 0xf76a, 0xf76b, /*0x60-0x67*/
+ 0xf76c, 0xf76d, 0xf76e, 0xf76f, 0xf770, 0xf771, 0xf772, 0xf773, /*0x68-0x6f*/
+ 0xf774, 0xf775, 0xf776, 0xf777, 0xf778, 0xf779, 0xf77a, 0xf77b, /*0x70-0x77*/
+ 0xf77c, 0xf77d, 0xf77e, 0xf780, 0xd3e3, 0xf781, 0xf782, 0xf6cf, /*0x78-0x7f*/
+ 0xf783, 0xc2b3, 0xf6d0, 0xf784, 0xf785, 0xf6d1, 0xf6d2, 0xf6d3, /*0x80-0x87*/
+ 0xf6d4, 0xf786, 0xf787, 0xf6d6, 0xf788, 0xb1ab, 0xf6d7, 0xf789, /*0x88-0x8f*/
+ 0xf6d8, 0xf6d9, 0xf6da, 0xf78a, 0xf6db, 0xf6dc, 0xf78b, 0xf78c, /*0x90-0x97*/
+ 0xf78d, 0xf78e, 0xf6dd, 0xf6de, 0xcfca, 0xf78f, 0xf6df, 0xf6e0, /*0x98-0x9f*/
+ 0xf6e1, 0xf6e2, 0xf6e3, 0xf6e4, 0xc0f0, 0xf6e5, 0xf6e6, 0xf6e7, /*0xa0-0xa7*/
+ 0xf6e8, 0xf6e9, 0xf790, 0xf6ea, 0xf791, 0xf6eb, 0xf6ec, 0xf792, /*0xa8-0xaf*/
+ 0xf6ed, 0xf6ee, 0xf6ef, 0xf6f0, 0xf6f1, 0xf6f2, 0xf6f3, 0xf6f4, /*0xb0-0xb7*/
+ 0xbea8, 0xf793, 0xf6f5, 0xf6f6, 0xf6f7, 0xf6f8, 0xf794, 0xf795, /*0xb8-0xbf*/
+ 0xf796, 0xf797, 0xf798, 0xc8fa, 0xf6f9, 0xf6fa, 0xf6fb, 0xf6fc, /*0xc0-0xc7*/
+ 0xf799, 0xf79a, 0xf6fd, 0xf6fe, 0xf7a1, 0xf7a2, 0xf7a3, 0xf7a4, /*0xc8-0xcf*/
+ 0xf7a5, 0xf79b, 0xf79c, 0xf7a6, 0xf7a7, 0xf7a8, 0xb1ee, 0xf7a9, /*0xd0-0xd7*/
+ 0xf7aa, 0xf7ab, 0xf79d, 0xf79e, 0xf7ac, 0xf7ad, 0xc1db, 0xf7ae, /*0xd8-0xdf*/
+ 0xf79f, 0xf7a0, 0xf7af, 0xf840, 0xf841, 0xf842, 0xf843, 0xf844, /*0xe0-0xe7*/
+ 0xf845, 0xf846, 0xf847, 0xf848, 0xf849, 0xf84a, 0xf84b, 0xf84c, /*0xe8-0xef*/
+ 0xf84d, 0xf84e, 0xf84f, 0xf850, 0xf851, 0xf852, 0xf853, 0xf854, /*0xf0-0xf7*/
+ 0xf855, 0xf856, 0xf857, 0xf858, 0xf859, 0xf85a, 0xf85b, 0xf85c, /*0xf8-0xff*/
+ /* 0x9d00 */
+ 0xf85d, 0xf85e, 0xf85f, 0xf860, 0xf861, 0xf862, 0xf863, 0xf864, /*0x00-0x07*/
+ 0xf865, 0xf866, 0xf867, 0xf868, 0xf869, 0xf86a, 0xf86b, 0xf86c, /*0x08-0x0f*/
+ 0xf86d, 0xf86e, 0xf86f, 0xf870, 0xf871, 0xf872, 0xf873, 0xf874, /*0x10-0x17*/
+ 0xf875, 0xf876, 0xf877, 0xf878, 0xf879, 0xf87a, 0xf87b, 0xf87c, /*0x18-0x1f*/
+ 0xf87d, 0xf87e, 0xf880, 0xf881, 0xf882, 0xf883, 0xf884, 0xf885, /*0x20-0x27*/
+ 0xf886, 0xf887, 0xf888, 0xf889, 0xf88a, 0xf88b, 0xf88c, 0xf88d, /*0x28-0x2f*/
+ 0xf88e, 0xf88f, 0xf890, 0xf891, 0xf892, 0xf893, 0xf894, 0xf895, /*0x30-0x37*/
+ 0xf896, 0xf897, 0xf898, 0xf899, 0xf89a, 0xf89b, 0xf89c, 0xf89d, /*0x38-0x3f*/
+ 0xf89e, 0xf89f, 0xf8a0, 0xf940, 0xf941, 0xf942, 0xf943, 0xf944, /*0x40-0x47*/
+ 0xf945, 0xf946, 0xf947, 0xf948, 0xf949, 0xf94a, 0xf94b, 0xf94c, /*0x48-0x4f*/
+ 0xf94d, 0xf94e, 0xf94f, 0xf950, 0xf951, 0xf952, 0xf953, 0xf954, /*0x50-0x57*/
+ 0xf955, 0xf956, 0xf957, 0xf958, 0xf959, 0xf95a, 0xf95b, 0xf95c, /*0x58-0x5f*/
+ 0xf95d, 0xf95e, 0xf95f, 0xf960, 0xf961, 0xf962, 0xf963, 0xf964, /*0x60-0x67*/
+ 0xf965, 0xf966, 0xf967, 0xf968, 0xf969, 0xf96a, 0xf96b, 0xf96c, /*0x68-0x6f*/
+ 0xf96d, 0xf96e, 0xf96f, 0xf970, 0xf971, 0xf972, 0xf973, 0xf974, /*0x70-0x77*/
+ 0xf975, 0xf976, 0xf977, 0xf978, 0xf979, 0xf97a, 0xf97b, 0xf97c, /*0x78-0x7f*/
+ 0xf97d, 0xf97e, 0xf980, 0xf981, 0xf982, 0xf983, 0xf984, 0xf985, /*0x80-0x87*/
+ 0xf986, 0xf987, 0xf988, 0xf989, 0xf98a, 0xf98b, 0xf98c, 0xf98d, /*0x88-0x8f*/
+ 0xf98e, 0xf98f, 0xf990, 0xf991, 0xf992, 0xf993, 0xf994, 0xf995, /*0x90-0x97*/
+ 0xf996, 0xf997, 0xf998, 0xf999, 0xf99a, 0xf99b, 0xf99c, 0xf99d, /*0x98-0x9f*/
+ 0xf99e, 0xf99f, 0xf9a0, 0xfa40, 0xfa41, 0xfa42, 0xfa43, 0xfa44, /*0xa0-0xa7*/
+ 0xfa45, 0xfa46, 0xfa47, 0xfa48, 0xfa49, 0xfa4a, 0xfa4b, 0xfa4c, /*0xa8-0xaf*/
+ 0xfa4d, 0xfa4e, 0xfa4f, 0xfa50, 0xfa51, 0xfa52, 0xfa53, 0xfa54, /*0xb0-0xb7*/
+ 0xfa55, 0xfa56, 0xfa57, 0xfa58, 0xfa59, 0xfa5a, 0xfa5b, 0xfa5c, /*0xb8-0xbf*/
+ 0xfa5d, 0xfa5e, 0xfa5f, 0xfa60, 0xfa61, 0xfa62, 0xfa63, 0xfa64, /*0xc0-0xc7*/
+ 0xfa65, 0xfa66, 0xfa67, 0xfa68, 0xfa69, 0xfa6a, 0xfa6b, 0xfa6c, /*0xc8-0xcf*/
+ 0xfa6d, 0xfa6e, 0xfa6f, 0xfa70, 0xfa71, 0xfa72, 0xfa73, 0xfa74, /*0xd0-0xd7*/
+ 0xfa75, 0xfa76, 0xfa77, 0xfa78, 0xfa79, 0xfa7a, 0xfa7b, 0xfa7c, /*0xd8-0xdf*/
+ 0xfa7d, 0xfa7e, 0xfa80, 0xfa81, 0xfa82, 0xfa83, 0xfa84, 0xfa85, /*0xe0-0xe7*/
+ 0xfa86, 0xfa87, 0xfa88, 0xfa89, 0xfa8a, 0xfa8b, 0xfa8c, 0xfa8d, /*0xe8-0xef*/
+ 0xfa8e, 0xfa8f, 0xfa90, 0xfa91, 0xfa92, 0xfa93, 0xfa94, 0xfa95, /*0xf0-0xf7*/
+ 0xfa96, 0xfa97, 0xfa98, 0xfa99, 0xfa9a, 0xfa9b, 0xfa9c, 0xfa9d, /*0xf8-0xff*/
+ /* 0x9e00 */
+ 0xfa9e, 0xfa9f, 0xfaa0, 0xfb40, 0xfb41, 0xfb42, 0xfb43, 0xfb44, /*0x00-0x07*/
+ 0xfb45, 0xfb46, 0xfb47, 0xfb48, 0xfb49, 0xfb4a, 0xfb4b, 0xfb4c, /*0x08-0x0f*/
+ 0xfb4d, 0xfb4e, 0xfb4f, 0xfb50, 0xfb51, 0xfb52, 0xfb53, 0xfb54, /*0x10-0x17*/
+ 0xfb55, 0xfb56, 0xfb57, 0xfb58, 0xfb59, 0xfb5a, 0xfb5b, 0xc4f1, /*0x18-0x1f*/
+ 0xf0af, 0xbca6, 0xf0b0, 0xc3f9, 0xfb5c, 0xc5b8, 0xd1bb, 0xfb5d, /*0x20-0x27*/
+ 0xf0b1, 0xf0b2, 0xf0b3, 0xf0b4, 0xf0b5, 0xd1bc, 0xfb5e, 0xd1ec, /*0x28-0x2f*/
+ 0xfb5f, 0xf0b7, 0xf0b6, 0xd4a7, 0xfb60, 0xcdd2, 0xf0b8, 0xf0ba, /*0x30-0x37*/
+ 0xf0b9, 0xf0bb, 0xf0bc, 0xfb61, 0xfb62, 0xb8eb, 0xf0bd, 0xbae8, /*0x38-0x3f*/
+ 0xfb63, 0xf0be, 0xf0bf, 0xbee9, 0xf0c0, 0xb6ec, 0xf0c1, 0xf0c2, /*0x40-0x47*/
+ 0xf0c3, 0xf0c4, 0xc8b5, 0xf0c5, 0xf0c6, 0xfb64, 0xf0c7, 0xc5f4, /*0x48-0x4f*/
+ 0xfb65, 0xf0c8, 0xfb66, 0xfb67, 0xfb68, 0xf0c9, 0xfb69, 0xf0ca, /*0x50-0x57*/
+ 0xf7bd, 0xfb6a, 0xf0cb, 0xf0cc, 0xf0cd, 0xfb6b, 0xf0ce, 0xfb6c, /*0x58-0x5f*/
+ 0xfb6d, 0xfb6e, 0xfb6f, 0xf0cf, 0xbad7, 0xfb70, 0xf0d0, 0xf0d1, /*0x60-0x67*/
+ 0xf0d2, 0xf0d3, 0xf0d4, 0xf0d5, 0xf0d6, 0xf0d8, 0xfb71, 0xfb72, /*0x68-0x6f*/
+ 0xd3a5, 0xf0d7, 0xfb73, 0xf0d9, 0xfb74, 0xfb75, 0xfb76, 0xfb77, /*0x70-0x77*/
+ 0xfb78, 0xfb79, 0xfb7a, 0xfb7b, 0xfb7c, 0xfb7d, 0xf5ba, 0xc2b9, /*0x78-0x7f*/
+ 0xfb7e, 0xfb80, 0xf7e4, 0xfb81, 0xfb82, 0xfb83, 0xfb84, 0xf7e5, /*0x80-0x87*/
+ 0xf7e6, 0xfb85, 0xfb86, 0xf7e7, 0xfb87, 0xfb88, 0xfb89, 0xfb8a, /*0x88-0x8f*/
+ 0xfb8b, 0xfb8c, 0xf7e8, 0xc2b4, 0xfb8d, 0xfb8e, 0xfb8f, 0xfb90, /*0x90-0x97*/
+ 0xfb91, 0xfb92, 0xfb93, 0xfb94, 0xfb95, 0xf7ea, 0xfb96, 0xf7eb, /*0x98-0x9f*/
+ 0xfb97, 0xfb98, 0xfb99, 0xfb9a, 0xfb9b, 0xfb9c, 0xc2f3, 0xfb9d, /*0xa0-0xa7*/
+ 0xfb9e, 0xfb9f, 0xfba0, 0xfc40, 0xfc41, 0xfc42, 0xfc43, 0xfc44, /*0xa8-0xaf*/
+ 0xfc45, 0xfc46, 0xfc47, 0xfc48, 0xf4f0, 0xfc49, 0xfc4a, 0xfc4b, /*0xb0-0xb7*/
+ 0xf4ef, 0xfc4c, 0xfc4d, 0xc2e9, 0xfc4e, 0xf7e1, 0xf7e2, 0xfc4f, /*0xb8-0xbf*/
+ 0xfc50, 0xfc51, 0xfc52, 0xfc53, 0xbbc6, 0xfc54, 0xfc55, 0xfc56, /*0xc0-0xc7*/
+ 0xfc57, 0xd9e4, 0xfc58, 0xfc59, 0xfc5a, 0xcaf2, 0xc0e8, 0xf0a4, /*0xc8-0xcf*/
+ 0xfc5b, 0xbada, 0xfc5c, 0xfc5d, 0xc7ad, 0xfc5e, 0xfc5f, 0xfc60, /*0xd0-0xd7*/
+ 0xc4ac, 0xfc61, 0xfc62, 0xf7ec, 0xf7ed, 0xf7ee, 0xfc63, 0xf7f0, /*0xd8-0xdf*/
+ 0xf7ef, 0xfc64, 0xf7f1, 0xfc65, 0xfc66, 0xf7f4, 0xfc67, 0xf7f3, /*0xe0-0xe7*/
+ 0xfc68, 0xf7f2, 0xf7f5, 0xfc69, 0xfc6a, 0xfc6b, 0xfc6c, 0xf7f6, /*0xe8-0xef*/
+ 0xfc6d, 0xfc6e, 0xfc6f, 0xfc70, 0xfc71, 0xfc72, 0xfc73, 0xfc74, /*0xf0-0xf7*/
+ 0xfc75, 0xede9, 0xfc76, 0xedea, 0xedeb, 0xfc77, 0xf6bc, 0xfc78, /*0xf8-0xff*/
+ /* 0x9f00 */
+ 0xfc79, 0xfc7a, 0xfc7b, 0xfc7c, 0xfc7d, 0xfc7e, 0xfc80, 0xfc81, /*0x00-0x07*/
+ 0xfc82, 0xfc83, 0xfc84, 0xf6bd, 0xfc85, 0xf6be, 0xb6a6, 0xfc86, /*0x08-0x0f*/
+ 0xd8be, 0xfc87, 0xfc88, 0xb9c4, 0xfc89, 0xfc8a, 0xfc8b, 0xd8bb, /*0x10-0x17*/
+ 0xfc8c, 0xdcb1, 0xfc8d, 0xfc8e, 0xfc8f, 0xfc90, 0xfc91, 0xfc92, /*0x18-0x1f*/
+ 0xcaf3, 0xfc93, 0xf7f7, 0xfc94, 0xfc95, 0xfc96, 0xfc97, 0xfc98, /*0x20-0x27*/
+ 0xfc99, 0xfc9a, 0xfc9b, 0xfc9c, 0xf7f8, 0xfc9d, 0xfc9e, 0xf7f9, /*0x28-0x2f*/
+ 0xfc9f, 0xfca0, 0xfd40, 0xfd41, 0xfd42, 0xfd43, 0xfd44, 0xf7fb, /*0x30-0x37*/
+ 0xfd45, 0xf7fa, 0xfd46, 0xb1c7, 0xfd47, 0xf7fc, 0xf7fd, 0xfd48, /*0x38-0x3f*/
+ 0xfd49, 0xfd4a, 0xfd4b, 0xfd4c, 0xf7fe, 0xfd4d, 0xfd4e, 0xfd4f, /*0x40-0x47*/
+ 0xfd50, 0xfd51, 0xfd52, 0xfd53, 0xfd54, 0xfd55, 0xfd56, 0xfd57, /*0x48-0x4f*/
+ 0xc6eb, 0xecb4, 0xfd58, 0xfd59, 0xfd5a, 0xfd5b, 0xfd5c, 0xfd5d, /*0x50-0x57*/
+ 0xfd5e, 0xfd5f, 0xfd60, 0xfd61, 0xfd62, 0xfd63, 0xfd64, 0xfd65, /*0x58-0x5f*/
+ 0xfd66, 0xfd67, 0xfd68, 0xfd69, 0xfd6a, 0xfd6b, 0xfd6c, 0xfd6d, /*0x60-0x67*/
+ 0xfd6e, 0xfd6f, 0xfd70, 0xfd71, 0xfd72, 0xfd73, 0xfd74, 0xfd75, /*0x68-0x6f*/
+ 0xfd76, 0xfd77, 0xfd78, 0xfd79, 0xfd7a, 0xfd7b, 0xfd7c, 0xfd7d, /*0x70-0x77*/
+ 0xfd7e, 0xfd80, 0xfd81, 0xfd82, 0xfd83, 0xfd84, 0xfd85, 0xb3dd, /*0x78-0x7f*/
+ 0xf6b3, 0xfd86, 0xfd87, 0xf6b4, 0xc1e4, 0xf6b5, 0xf6b6, 0xf6b7, /*0x80-0x87*/
+ 0xf6b8, 0xf6b9, 0xf6ba, 0xc8a3, 0xf6bb, 0xfd88, 0xfd89, 0xfd8a, /*0x88-0x8f*/
+ 0xfd8b, 0xfd8c, 0xfd8d, 0xfd8e, 0xfd8f, 0xfd90, 0xfd91, 0xfd92, /*0x90-0x97*/
+ 0xfd93, 0xc1fa, 0xb9a8, 0xede8, 0xfd94, 0xfd95, 0xfd96, 0xb9ea, /*0x98-0x9f*/
+ 0xd9df, 0xfd97, 0xfd98, 0xfd99, 0xfd9a, 0xfd9b, 0x0000, 0x0000, /*0xa0-0xa7*/
+};
+static const unsigned short gbk_pagef9a[32] = {
+ 0x0000, 0xfd9d, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0x78-0x7f*/
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0x80-0x87*/
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0x88-0x8f*/
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xfd9e, 0x0000, 0x0000, /*0x90-0x97*/
+};
+static const unsigned short gbk_pagef9b[24] = {
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xfd9f, /*0xe0-0xe7*/
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0xe8-0xef*/
+ 0x0000, 0xfda0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0xf0-0xf7*/
+};
+static const unsigned short gbk_pagefa[40] = {
+ 0x0000, 0x0000, 0x0000, 0x0000, 0xfe40, 0xfe41, 0xfe42, 0xfe43, /*0x08-0x0f*/
+ 0x0000, 0xfe44, 0x0000, 0xfe45, 0xfe46, 0x0000, 0x0000, 0x0000, /*0x10-0x17*/
+ 0xfe47, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xfe48, /*0x18-0x1f*/
+ 0xfe49, 0xfe4a, 0x0000, 0xfe4b, 0xfe4c, 0x0000, 0x0000, 0xfe4d, /*0x20-0x27*/
+ 0xfe4e, 0xfe4f, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /*0x28-0x2f*/
+};
+static const unsigned short gbk_pagefe[64] = {
+ 0xa955, 0xa6f2, 0x0000, 0xa6f4, 0xa6f5, 0xa6e0, 0xa6e1, 0xa6f0, /*0x30-0x37*/
+ 0xa6f1, 0xa6e2, 0xa6e3, 0xa6ee, 0xa6ef, 0xa6e6, 0xa6e7, 0xa6e4, /*0x38-0x3f*/
+ 0xa6e5, 0xa6e8, 0xa6e9, 0xa6ea, 0xa6eb, 0x0000, 0x0000, 0x0000, /*0x40-0x47*/
+ 0x0000, 0xa968, 0xa969, 0xa96a, 0xa96b, 0xa96c, 0xa96d, 0xa96e, /*0x48-0x4f*/
+ 0xa96f, 0xa970, 0xa971, 0x0000, 0xa972, 0xa973, 0xa974, 0xa975, /*0x50-0x57*/
+ 0x0000, 0xa976, 0xa977, 0xa978, 0xa979, 0xa97a, 0xa97b, 0xa97c, /*0x58-0x5f*/
+ 0xa97d, 0xa97e, 0xa980, 0xa981, 0xa982, 0xa983, 0xa984, 0x0000, /*0x60-0x67*/
+ 0xa985, 0xa986, 0xa987, 0xa988, 0x0000, 0x0000, 0x0000, 0x0000, /*0x68-0x6f*/
+};
+static const unsigned short gbk_pageffa[96] = {
+ 0x0000, 0xa3a1, 0xa3a2, 0xa3a3, 0xa1e7, 0xa3a5, 0xa3a6, 0xa3a7, /*0x00-0x07*/
+ 0xa3a8, 0xa3a9, 0xa3aa, 0xa3ab, 0xa3ac, 0xa3ad, 0xa3ae, 0xa3af, /*0x08-0x0f*/
+ 0xa3b0, 0xa3b1, 0xa3b2, 0xa3b3, 0xa3b4, 0xa3b5, 0xa3b6, 0xa3b7, /*0x10-0x17*/
+ 0xa3b8, 0xa3b9, 0xa3ba, 0xa3bb, 0xa3bc, 0xa3bd, 0xa3be, 0xa3bf, /*0x18-0x1f*/
+ 0xa3c0, 0xa3c1, 0xa3c2, 0xa3c3, 0xa3c4, 0xa3c5, 0xa3c6, 0xa3c7, /*0x20-0x27*/
+ 0xa3c8, 0xa3c9, 0xa3ca, 0xa3cb, 0xa3cc, 0xa3cd, 0xa3ce, 0xa3cf, /*0x28-0x2f*/
+ 0xa3d0, 0xa3d1, 0xa3d2, 0xa3d3, 0xa3d4, 0xa3d5, 0xa3d6, 0xa3d7, /*0x30-0x37*/
+ 0xa3d8, 0xa3d9, 0xa3da, 0xa3db, 0xa3dc, 0xa3dd, 0xa3de, 0xa3df, /*0x38-0x3f*/
+ 0xa3e0, 0xa3e1, 0xa3e2, 0xa3e3, 0xa3e4, 0xa3e5, 0xa3e6, 0xa3e7, /*0x40-0x47*/
+ 0xa3e8, 0xa3e9, 0xa3ea, 0xa3eb, 0xa3ec, 0xa3ed, 0xa3ee, 0xa3ef, /*0x48-0x4f*/
+ 0xa3f0, 0xa3f1, 0xa3f2, 0xa3f3, 0xa3f4, 0xa3f5, 0xa3f6, 0xa3f7, /*0x50-0x57*/
+ 0xa3f8, 0xa3f9, 0xa3fa, 0xa3fb, 0xa3fc, 0xa3fd, 0xa1ab, 0x0000, /*0x58-0x5f*/
+};
+static const unsigned short gbk_pageffb[8] = {
+ 0xa1e9, 0xa1ea, 0xa956, 0xa3fe, 0xa957, 0xa3a4, 0x0000, 0x0000, /*0xe0-0xe7*/
+};
+
+static int
+gbk_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n)
+{
+ if (n >= 2) {
+ unsigned short c = 0;
+ if (wc >= 0x00a0 && wc < 0x0170)
+ c = gbk_page00[wc-0x00a0];
+ else if (wc >= 0x01c8 && wc < 0x01e0)
+ c = gbk_page01[wc-0x01c8];
+ else if (wc >= 0x0250 && wc < 0x0268)
+ c = gbk_page02a[wc-0x0250];
+ else if (wc >= 0x02c0 && wc < 0x02e0)
+ c = gbk_page02b[wc-0x02c0];
+ else if (wc >= 0x0390 && wc < 0x03d0)
+ c = gbk_page03[wc-0x0390];
+ else if (wc >= 0x0400 && wc < 0x0458)
+ c = gbk_page04[wc-0x0400];
+ else if (wc >= 0x2010 && wc < 0x2040)
+ c = gbk_page20[wc-0x2010];
+ else if (wc >= 0x2100 && wc < 0x21a0)
+ c = gbk_page21[wc-0x2100];
+ else if (wc >= 0x2208 && wc < 0x22c0)
+ c = gbk_page22[wc-0x2208];
+ else if (wc == 0x2312)
+ c = 0xa1d0;
+ else if (wc >= 0x2460 && wc < 0x24a0)
+ c = gbk_page24[wc-0x2460];
+ else if (wc >= 0x2500 && wc < 0x25e8)
+ c = gbk_page25[wc-0x2500];
+ else if (wc >= 0x2600 && wc < 0x2648)
+ c = gbk_page26[wc-0x2600];
+ else if (wc >= 0x3000 && wc < 0x3130)
+ c = gbk_page30[wc-0x3000];
+ else if (wc >= 0x3220 && wc < 0x3238)
+ c = gbk_page32[wc-0x3220];
+ else if (wc == 0x32a3)
+ c = 0xa949;
+ else if (wc >= 0x3388 && wc < 0x33d8)
+ c = gbk_page33[wc-0x3388];
+ else if (wc >= 0x4e00 && wc < 0x9fa8)
+ c = gbk_page4e[wc-0x4e00];
+ else if (wc == 0xf92c)
+ c = 0xfd9c;
+ else if (wc >= 0xf978 && wc < 0xf998)
+ c = gbk_pagef9a[wc-0xf978];
+ else if (wc >= 0xf9e0 && wc < 0xf9f8)
+ c = gbk_pagef9b[wc-0xf9e0];
+ else if (wc >= 0xfa08 && wc < 0xfa30)
+ c = gbk_pagefa[wc-0xfa08];
+ else if (wc >= 0xfe30 && wc < 0xfe70)
+ c = gbk_pagefe[wc-0xfe30];
+ else if (wc >= 0xff00 && wc < 0xff60)
+ c = gbk_pageffa[wc-0xff00];
+ else if (wc >= 0xffe0 && wc < 0xffe8)
+ c = gbk_pageffb[wc-0xffe0];
+ if (c != 0) {
+ r[0] = (c >> 8); r[1] = (c & 0xff);
+ return 2;
+ }
+ return RET_ILSEQ;
+ }
+ return RET_TOOSMALL;
+}
diff --git a/libX11/src/xlibi18n/lcUniConv/georgian_academy.h b/libX11/src/xlibi18n/lcUniConv/georgian_academy.h
index 40de94542..0e4350461 100644
--- a/libX11/src/xlibi18n/lcUniConv/georgian_academy.h
+++ b/libX11/src/xlibi18n/lcUniConv/georgian_academy.h
@@ -1,87 +1,87 @@
-
-/*
- * GEORGIAN-ACADEMY
- */
-
-static const unsigned short georgian_academy_2uni[32] = {
- /* 0x80 */
- 0x0080, 0x0081, 0x201a, 0x0192, 0x201e, 0x2026, 0x2020, 0x2021,
- 0x02c6, 0x2030, 0x0160, 0x2039, 0x0152, 0x008d, 0x008e, 0x008f,
- /* 0x90 */
- 0x0090, 0x2018, 0x2019, 0x201c, 0x201d, 0x2022, 0x2013, 0x2014,
- 0x02dc, 0x2122, 0x0161, 0x203a, 0x0153, 0x009d, 0x009e, 0x0178,
-};
-
-static int
-georgian_academy_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n)
-{
- unsigned char c = *s;
- if (c >= 0x80 && c < 0xa0)
- *pwc = (ucs4_t) georgian_academy_2uni[c-0x80];
- else if (c >= 0xc0 && c < 0xe7)
- *pwc = (ucs4_t) c + 0x1010;
- else
- *pwc = (ucs4_t) c;
- return 1;
-}
-
-static const unsigned char georgian_academy_page00[32] = {
- 0x80, 0x81, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x80-0x87 */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x8d, 0x8e, 0x8f, /* 0x88-0x8f */
- 0x90, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x90-0x97 */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x9d, 0x9e, 0x00, /* 0x98-0x9f */
-};
-static const unsigned char georgian_academy_page01[72] = {
- 0x00, 0x00, 0x8c, 0x9c, 0x00, 0x00, 0x00, 0x00, /* 0x50-0x57 */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x58-0x5f */
- 0x8a, 0x9a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x60-0x67 */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x68-0x6f */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x70-0x77 */
- 0x9f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x78-0x7f */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x80-0x87 */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x88-0x8f */
- 0x00, 0x00, 0x83, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x90-0x97 */
-};
-static const unsigned char georgian_academy_page02[32] = {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x88, 0x00, /* 0xc0-0xc7 */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xc8-0xcf */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xd0-0xd7 */
- 0x00, 0x00, 0x00, 0x00, 0x98, 0x00, 0x00, 0x00, /* 0xd8-0xdf */
-};
-static const unsigned char georgian_academy_page20[48] = {
- 0x00, 0x00, 0x00, 0x96, 0x97, 0x00, 0x00, 0x00, /* 0x10-0x17 */
- 0x91, 0x92, 0x82, 0x00, 0x93, 0x94, 0x84, 0x00, /* 0x18-0x1f */
- 0x86, 0x87, 0x95, 0x00, 0x00, 0x00, 0x85, 0x00, /* 0x20-0x27 */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x28-0x2f */
- 0x89, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x30-0x37 */
- 0x00, 0x8b, 0x9b, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x38-0x3f */
-};
-
-static int
-georgian_academy_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n)
-{
- unsigned char c = 0;
- if (wc < 0x0080) {
- *r = wc;
- return 1;
- }
- else if (wc >= 0x0080 && wc < 0x00a0)
- c = georgian_academy_page00[wc-0x0080];
- else if ((wc >= 0x00a0 && wc < 0x00c0) || (wc >= 0x00e7 && wc < 0x0100))
- c = wc;
- else if (wc >= 0x0150 && wc < 0x0198)
- c = georgian_academy_page01[wc-0x0150];
- else if (wc >= 0x02c0 && wc < 0x02e0)
- c = georgian_academy_page02[wc-0x02c0];
- else if (wc >= 0x10d0 && wc < 0x10f7)
- c = wc-0x1010;
- else if (wc >= 0x2010 && wc < 0x2040)
- c = georgian_academy_page20[wc-0x2010];
- else if (wc == 0x2122)
- c = 0x99;
- if (c != 0) {
- *r = c;
- return 1;
- }
- return RET_ILSEQ;
-}
+
+/*
+ * GEORGIAN-ACADEMY
+ */
+
+static const unsigned short georgian_academy_2uni[32] = {
+ /* 0x80 */
+ 0x0080, 0x0081, 0x201a, 0x0192, 0x201e, 0x2026, 0x2020, 0x2021,
+ 0x02c6, 0x2030, 0x0160, 0x2039, 0x0152, 0x008d, 0x008e, 0x008f,
+ /* 0x90 */
+ 0x0090, 0x2018, 0x2019, 0x201c, 0x201d, 0x2022, 0x2013, 0x2014,
+ 0x02dc, 0x2122, 0x0161, 0x203a, 0x0153, 0x009d, 0x009e, 0x0178,
+};
+
+static int
+georgian_academy_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n)
+{
+ unsigned char c = *s;
+ if (c >= 0x80 && c < 0xa0)
+ *pwc = (ucs4_t) georgian_academy_2uni[c-0x80];
+ else if (c >= 0xc0 && c < 0xe7)
+ *pwc = (ucs4_t) c + 0x1010;
+ else
+ *pwc = (ucs4_t) c;
+ return 1;
+}
+
+static const unsigned char georgian_academy_page00[32] = {
+ 0x80, 0x81, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x80-0x87 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x8d, 0x8e, 0x8f, /* 0x88-0x8f */
+ 0x90, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x90-0x97 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x9d, 0x9e, 0x00, /* 0x98-0x9f */
+};
+static const unsigned char georgian_academy_page01[72] = {
+ 0x00, 0x00, 0x8c, 0x9c, 0x00, 0x00, 0x00, 0x00, /* 0x50-0x57 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x58-0x5f */
+ 0x8a, 0x9a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x60-0x67 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x68-0x6f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x70-0x77 */
+ 0x9f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x78-0x7f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x80-0x87 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x88-0x8f */
+ 0x00, 0x00, 0x83, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x90-0x97 */
+};
+static const unsigned char georgian_academy_page02[32] = {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x88, 0x00, /* 0xc0-0xc7 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xc8-0xcf */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xd0-0xd7 */
+ 0x00, 0x00, 0x00, 0x00, 0x98, 0x00, 0x00, 0x00, /* 0xd8-0xdf */
+};
+static const unsigned char georgian_academy_page20[48] = {
+ 0x00, 0x00, 0x00, 0x96, 0x97, 0x00, 0x00, 0x00, /* 0x10-0x17 */
+ 0x91, 0x92, 0x82, 0x00, 0x93, 0x94, 0x84, 0x00, /* 0x18-0x1f */
+ 0x86, 0x87, 0x95, 0x00, 0x00, 0x00, 0x85, 0x00, /* 0x20-0x27 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x28-0x2f */
+ 0x89, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x30-0x37 */
+ 0x00, 0x8b, 0x9b, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x38-0x3f */
+};
+
+static int
+georgian_academy_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n)
+{
+ unsigned char c = 0;
+ if (wc < 0x0080) {
+ *r = wc;
+ return 1;
+ }
+ else if (wc >= 0x0080 && wc < 0x00a0)
+ c = georgian_academy_page00[wc-0x0080];
+ else if ((wc >= 0x00a0 && wc < 0x00c0) || (wc >= 0x00e7 && wc < 0x0100))
+ c = wc;
+ else if (wc >= 0x0150 && wc < 0x0198)
+ c = georgian_academy_page01[wc-0x0150];
+ else if (wc >= 0x02c0 && wc < 0x02e0)
+ c = georgian_academy_page02[wc-0x02c0];
+ else if (wc >= 0x10d0 && wc < 0x10f7)
+ c = wc-0x1010;
+ else if (wc >= 0x2010 && wc < 0x2040)
+ c = georgian_academy_page20[wc-0x2010];
+ else if (wc == 0x2122)
+ c = 0x99;
+ if (c != 0) {
+ *r = c;
+ return 1;
+ }
+ return RET_ILSEQ;
+}
diff --git a/libX11/src/xlibi18n/lcUniConv/georgian_ps.h b/libX11/src/xlibi18n/lcUniConv/georgian_ps.h
index e0d20d96b..b96c491df 100644
--- a/libX11/src/xlibi18n/lcUniConv/georgian_ps.h
+++ b/libX11/src/xlibi18n/lcUniConv/georgian_ps.h
@@ -1,104 +1,104 @@
-
-/*
- * GEORGIAN-PS
- */
-
-static const unsigned short georgian_ps_2uni_1[32] = {
- /* 0x80 */
- 0x0080, 0x0081, 0x201a, 0x0192, 0x201e, 0x2026, 0x2020, 0x2021,
- 0x02c6, 0x2030, 0x0160, 0x2039, 0x0152, 0x008d, 0x008e, 0x008f,
- /* 0x90 */
- 0x0090, 0x2018, 0x2019, 0x201c, 0x201d, 0x2022, 0x2013, 0x2014,
- 0x02dc, 0x2122, 0x0161, 0x203a, 0x0153, 0x009d, 0x009e, 0x0178,
-};
-static const unsigned short georgian_ps_2uni_2[39] = {
- /* 0xc0 */
- 0x10d0, 0x10d1, 0x10d2, 0x10d3, 0x10d4, 0x10d5, 0x10d6, 0x10f1,
- 0x10d7, 0x10d8, 0x10d9, 0x10da, 0x10db, 0x10dc, 0x10f2, 0x10dd,
- /* 0xd0 */
- 0x10de, 0x10df, 0x10e0, 0x10e1, 0x10e2, 0x10f3, 0x10e3, 0x10e4,
- 0x10e5, 0x10e6, 0x10e7, 0x10e8, 0x10e9, 0x10ea, 0x10eb, 0x10ec,
- /* 0xe0 */
- 0x10ed, 0x10ee, 0x10f4, 0x10ef, 0x10f0, 0x10f5,
-};
-
-static int
-georgian_ps_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n)
-{
- unsigned char c = *s;
- if (c >= 0x80 && c < 0xa0)
- *pwc = (ucs4_t) georgian_ps_2uni_1[c-0x80];
- else if (c >= 0xc0 && c < 0xe6)
- *pwc = (ucs4_t) georgian_ps_2uni_2[c-0xc0];
- else
- *pwc = (ucs4_t) c;
- return 1;
-}
-
-static const unsigned char georgian_ps_page00[32] = {
- 0x80, 0x81, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x80-0x87 */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x8d, 0x8e, 0x8f, /* 0x88-0x8f */
- 0x90, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x90-0x97 */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x9d, 0x9e, 0x00, /* 0x98-0x9f */
-};
-static const unsigned char georgian_ps_page01[72] = {
- 0x00, 0x00, 0x8c, 0x9c, 0x00, 0x00, 0x00, 0x00, /* 0x50-0x57 */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x58-0x5f */
- 0x8a, 0x9a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x60-0x67 */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x68-0x6f */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x70-0x77 */
- 0x9f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x78-0x7f */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x80-0x87 */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x88-0x8f */
- 0x00, 0x00, 0x83, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x90-0x97 */
-};
-static const unsigned char georgian_ps_page02[32] = {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x88, 0x00, /* 0xc0-0xc7 */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xc8-0xcf */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xd0-0xd7 */
- 0x00, 0x00, 0x00, 0x00, 0x98, 0x00, 0x00, 0x00, /* 0xd8-0xdf */
-};
-static const unsigned char georgian_ps_page10[40] = {
- 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc8, /* 0xd0-0xd7 */
- 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xcf, 0xd0, 0xd1, /* 0xd8-0xdf */
- 0xd2, 0xd3, 0xd4, 0xd6, 0xd7, 0xd8, 0xd9, 0xda, /* 0xe0-0xe7 */
- 0xdb, 0xdc, 0xdd, 0xde, 0xdf, 0xe0, 0xe1, 0xe3, /* 0xe8-0xef */
- 0xe4, 0xc7, 0xce, 0xd5, 0xe2, 0xe5, 0x00, 0x00, /* 0xf0-0xf7 */
-};
-static const unsigned char georgian_ps_page20[48] = {
- 0x00, 0x00, 0x00, 0x96, 0x97, 0x00, 0x00, 0x00, /* 0x10-0x17 */
- 0x91, 0x92, 0x82, 0x00, 0x93, 0x94, 0x84, 0x00, /* 0x18-0x1f */
- 0x86, 0x87, 0x95, 0x00, 0x00, 0x00, 0x85, 0x00, /* 0x20-0x27 */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x28-0x2f */
- 0x89, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x30-0x37 */
- 0x00, 0x8b, 0x9b, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x38-0x3f */
-};
-
-static int
-georgian_ps_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n)
-{
- unsigned char c = 0;
- if (wc < 0x0080) {
- *r = wc;
- return 1;
- }
- else if (wc >= 0x0080 && wc < 0x00a0)
- c = georgian_ps_page00[wc-0x0080];
- else if ((wc >= 0x00a0 && wc < 0x00c0) || (wc >= 0x00e6 && wc < 0x0100))
- c = wc;
- else if (wc >= 0x0150 && wc < 0x0198)
- c = georgian_ps_page01[wc-0x0150];
- else if (wc >= 0x02c0 && wc < 0x02e0)
- c = georgian_ps_page02[wc-0x02c0];
- else if (wc >= 0x10d0 && wc < 0x10f8)
- c = georgian_ps_page10[wc-0x10d0];
- else if (wc >= 0x2010 && wc < 0x2040)
- c = georgian_ps_page20[wc-0x2010];
- else if (wc == 0x2122)
- c = 0x99;
- if (c != 0) {
- *r = c;
- return 1;
- }
- return RET_ILSEQ;
-}
+
+/*
+ * GEORGIAN-PS
+ */
+
+static const unsigned short georgian_ps_2uni_1[32] = {
+ /* 0x80 */
+ 0x0080, 0x0081, 0x201a, 0x0192, 0x201e, 0x2026, 0x2020, 0x2021,
+ 0x02c6, 0x2030, 0x0160, 0x2039, 0x0152, 0x008d, 0x008e, 0x008f,
+ /* 0x90 */
+ 0x0090, 0x2018, 0x2019, 0x201c, 0x201d, 0x2022, 0x2013, 0x2014,
+ 0x02dc, 0x2122, 0x0161, 0x203a, 0x0153, 0x009d, 0x009e, 0x0178,
+};
+static const unsigned short georgian_ps_2uni_2[39] = {
+ /* 0xc0 */
+ 0x10d0, 0x10d1, 0x10d2, 0x10d3, 0x10d4, 0x10d5, 0x10d6, 0x10f1,
+ 0x10d7, 0x10d8, 0x10d9, 0x10da, 0x10db, 0x10dc, 0x10f2, 0x10dd,
+ /* 0xd0 */
+ 0x10de, 0x10df, 0x10e0, 0x10e1, 0x10e2, 0x10f3, 0x10e3, 0x10e4,
+ 0x10e5, 0x10e6, 0x10e7, 0x10e8, 0x10e9, 0x10ea, 0x10eb, 0x10ec,
+ /* 0xe0 */
+ 0x10ed, 0x10ee, 0x10f4, 0x10ef, 0x10f0, 0x10f5,
+};
+
+static int
+georgian_ps_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n)
+{
+ unsigned char c = *s;
+ if (c >= 0x80 && c < 0xa0)
+ *pwc = (ucs4_t) georgian_ps_2uni_1[c-0x80];
+ else if (c >= 0xc0 && c < 0xe6)
+ *pwc = (ucs4_t) georgian_ps_2uni_2[c-0xc0];
+ else
+ *pwc = (ucs4_t) c;
+ return 1;
+}
+
+static const unsigned char georgian_ps_page00[32] = {
+ 0x80, 0x81, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x80-0x87 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x8d, 0x8e, 0x8f, /* 0x88-0x8f */
+ 0x90, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x90-0x97 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x9d, 0x9e, 0x00, /* 0x98-0x9f */
+};
+static const unsigned char georgian_ps_page01[72] = {
+ 0x00, 0x00, 0x8c, 0x9c, 0x00, 0x00, 0x00, 0x00, /* 0x50-0x57 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x58-0x5f */
+ 0x8a, 0x9a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x60-0x67 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x68-0x6f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x70-0x77 */
+ 0x9f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x78-0x7f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x80-0x87 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x88-0x8f */
+ 0x00, 0x00, 0x83, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x90-0x97 */
+};
+static const unsigned char georgian_ps_page02[32] = {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x88, 0x00, /* 0xc0-0xc7 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xc8-0xcf */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xd0-0xd7 */
+ 0x00, 0x00, 0x00, 0x00, 0x98, 0x00, 0x00, 0x00, /* 0xd8-0xdf */
+};
+static const unsigned char georgian_ps_page10[40] = {
+ 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc8, /* 0xd0-0xd7 */
+ 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xcf, 0xd0, 0xd1, /* 0xd8-0xdf */
+ 0xd2, 0xd3, 0xd4, 0xd6, 0xd7, 0xd8, 0xd9, 0xda, /* 0xe0-0xe7 */
+ 0xdb, 0xdc, 0xdd, 0xde, 0xdf, 0xe0, 0xe1, 0xe3, /* 0xe8-0xef */
+ 0xe4, 0xc7, 0xce, 0xd5, 0xe2, 0xe5, 0x00, 0x00, /* 0xf0-0xf7 */
+};
+static const unsigned char georgian_ps_page20[48] = {
+ 0x00, 0x00, 0x00, 0x96, 0x97, 0x00, 0x00, 0x00, /* 0x10-0x17 */
+ 0x91, 0x92, 0x82, 0x00, 0x93, 0x94, 0x84, 0x00, /* 0x18-0x1f */
+ 0x86, 0x87, 0x95, 0x00, 0x00, 0x00, 0x85, 0x00, /* 0x20-0x27 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x28-0x2f */
+ 0x89, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x30-0x37 */
+ 0x00, 0x8b, 0x9b, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x38-0x3f */
+};
+
+static int
+georgian_ps_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n)
+{
+ unsigned char c = 0;
+ if (wc < 0x0080) {
+ *r = wc;
+ return 1;
+ }
+ else if (wc >= 0x0080 && wc < 0x00a0)
+ c = georgian_ps_page00[wc-0x0080];
+ else if ((wc >= 0x00a0 && wc < 0x00c0) || (wc >= 0x00e6 && wc < 0x0100))
+ c = wc;
+ else if (wc >= 0x0150 && wc < 0x0198)
+ c = georgian_ps_page01[wc-0x0150];
+ else if (wc >= 0x02c0 && wc < 0x02e0)
+ c = georgian_ps_page02[wc-0x02c0];
+ else if (wc >= 0x10d0 && wc < 0x10f8)
+ c = georgian_ps_page10[wc-0x10d0];
+ else if (wc >= 0x2010 && wc < 0x2040)
+ c = georgian_ps_page20[wc-0x2010];
+ else if (wc == 0x2122)
+ c = 0x99;
+ if (c != 0) {
+ *r = c;
+ return 1;
+ }
+ return RET_ILSEQ;
+}
diff --git a/libX11/src/xlibi18n/lcUniConv/iso8859_1.h b/libX11/src/xlibi18n/lcUniConv/iso8859_1.h
index 111f3343f..fc302bb44 100644
--- a/libX11/src/xlibi18n/lcUniConv/iso8859_1.h
+++ b/libX11/src/xlibi18n/lcUniConv/iso8859_1.h
@@ -1,22 +1,22 @@
-
-/*
- * ISO-8859-1
- */
-
-static int
-iso8859_1_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n)
-{
- unsigned char c = *s;
- *pwc = (ucs4_t) c;
- return 1;
-}
-
-static int
-iso8859_1_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n)
-{
- if (wc < 0x0100) {
- *r = wc;
- return 1;
- }
- return RET_ILSEQ;
-}
+
+/*
+ * ISO-8859-1
+ */
+
+static int
+iso8859_1_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n)
+{
+ unsigned char c = *s;
+ *pwc = (ucs4_t) c;
+ return 1;
+}
+
+static int
+iso8859_1_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n)
+{
+ if (wc < 0x0100) {
+ *r = wc;
+ return 1;
+ }
+ return RET_ILSEQ;
+}
diff --git a/libX11/src/xlibi18n/lcUniConv/iso8859_10.h b/libX11/src/xlibi18n/lcUniConv/iso8859_10.h
index 3a31e112a..508db5758 100644
--- a/libX11/src/xlibi18n/lcUniConv/iso8859_10.h
+++ b/libX11/src/xlibi18n/lcUniConv/iso8859_10.h
@@ -1,87 +1,87 @@
-
-/*
- * ISO-8859-10
- */
-
-static const unsigned short iso8859_10_2uni[96] = {
- /* 0xa0 */
- 0x00a0, 0x0104, 0x0112, 0x0122, 0x012a, 0x0128, 0x0136, 0x00a7,
- 0x013b, 0x0110, 0x0160, 0x0166, 0x017d, 0x00ad, 0x016a, 0x014a,
- /* 0xb0 */
- 0x00b0, 0x0105, 0x0113, 0x0123, 0x012b, 0x0129, 0x0137, 0x00b7,
- 0x013c, 0x0111, 0x0161, 0x0167, 0x017e, 0x2015, 0x016b, 0x014b,
- /* 0xc0 */
- 0x0100, 0x00c1, 0x00c2, 0x00c3, 0x00c4, 0x00c5, 0x00c6, 0x012e,
- 0x010c, 0x00c9, 0x0118, 0x00cb, 0x0116, 0x00cd, 0x00ce, 0x00cf,
- /* 0xd0 */
- 0x00d0, 0x0145, 0x014c, 0x00d3, 0x00d4, 0x00d5, 0x00d6, 0x0168,
- 0x00d8, 0x0172, 0x00da, 0x00db, 0x00dc, 0x00dd, 0x00de, 0x00df,
- /* 0xe0 */
- 0x0101, 0x00e1, 0x00e2, 0x00e3, 0x00e4, 0x00e5, 0x00e6, 0x012f,
- 0x010d, 0x00e9, 0x0119, 0x00eb, 0x0117, 0x00ed, 0x00ee, 0x00ef,
- /* 0xf0 */
- 0x00f0, 0x0146, 0x014d, 0x00f3, 0x00f4, 0x00f5, 0x00f6, 0x0169,
- 0x00f8, 0x0173, 0x00fa, 0x00fb, 0x00fc, 0x00fd, 0x00fe, 0x0138,
-};
-
-static int
-iso8859_10_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n)
-{
- unsigned char c = *s;
- if (c < 0xa0)
- *pwc = (ucs4_t) c;
- else
- *pwc = (ucs4_t) iso8859_10_2uni[c-0xa0];
- return 1;
-}
-
-static const unsigned char iso8859_10_page00[224] = {
- 0xa0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa7, /* 0xa0-0xa7 */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0xad, 0x00, 0x00, /* 0xa8-0xaf */
- 0xb0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb7, /* 0xb0-0xb7 */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xb8-0xbf */
- 0x00, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0x00, /* 0xc0-0xc7 */
- 0x00, 0xc9, 0x00, 0xcb, 0x00, 0xcd, 0xce, 0xcf, /* 0xc8-0xcf */
- 0xd0, 0x00, 0x00, 0xd3, 0xd4, 0xd5, 0xd6, 0x00, /* 0xd0-0xd7 */
- 0xd8, 0x00, 0xda, 0xdb, 0xdc, 0xdd, 0xde, 0xdf, /* 0xd8-0xdf */
- 0x00, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0x00, /* 0xe0-0xe7 */
- 0x00, 0xe9, 0x00, 0xeb, 0x00, 0xed, 0xee, 0xef, /* 0xe8-0xef */
- 0xf0, 0x00, 0x00, 0xf3, 0xf4, 0xf5, 0xf6, 0x00, /* 0xf0-0xf7 */
- 0xf8, 0x00, 0xfa, 0xfb, 0xfc, 0xfd, 0xfe, 0x00, /* 0xf8-0xff */
- /* 0x0100 */
- 0xc0, 0xe0, 0x00, 0x00, 0xa1, 0xb1, 0x00, 0x00, /* 0x00-0x07 */
- 0x00, 0x00, 0x00, 0x00, 0xc8, 0xe8, 0x00, 0x00, /* 0x08-0x0f */
- 0xa9, 0xb9, 0xa2, 0xb2, 0x00, 0x00, 0xcc, 0xec, /* 0x10-0x17 */
- 0xca, 0xea, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x18-0x1f */
- 0x00, 0x00, 0xa3, 0xb3, 0x00, 0x00, 0x00, 0x00, /* 0x20-0x27 */
- 0xa5, 0xb5, 0xa4, 0xb4, 0x00, 0x00, 0xc7, 0xe7, /* 0x28-0x2f */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa6, 0xb6, /* 0x30-0x37 */
- 0xff, 0x00, 0x00, 0xa8, 0xb8, 0x00, 0x00, 0x00, /* 0x38-0x3f */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0xd1, 0xf1, 0x00, /* 0x40-0x47 */
- 0x00, 0x00, 0xaf, 0xbf, 0xd2, 0xf2, 0x00, 0x00, /* 0x48-0x4f */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x50-0x57 */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x58-0x5f */
- 0xaa, 0xba, 0x00, 0x00, 0x00, 0x00, 0xab, 0xbb, /* 0x60-0x67 */
- 0xd7, 0xf7, 0xae, 0xbe, 0x00, 0x00, 0x00, 0x00, /* 0x68-0x6f */
- 0x00, 0x00, 0xd9, 0xf9, 0x00, 0x00, 0x00, 0x00, /* 0x70-0x77 */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0xac, 0xbc, 0x00, /* 0x78-0x7f */
-};
-
-static int
-iso8859_10_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n)
-{
- unsigned char c = 0;
- if (wc < 0x00a0) {
- *r = wc;
- return 1;
- }
- else if (wc >= 0x00a0 && wc < 0x0180)
- c = iso8859_10_page00[wc-0x00a0];
- else if (wc == 0x2015)
- c = 0xbd;
- if (c != 0) {
- *r = c;
- return 1;
- }
- return RET_ILSEQ;
-}
+
+/*
+ * ISO-8859-10
+ */
+
+static const unsigned short iso8859_10_2uni[96] = {
+ /* 0xa0 */
+ 0x00a0, 0x0104, 0x0112, 0x0122, 0x012a, 0x0128, 0x0136, 0x00a7,
+ 0x013b, 0x0110, 0x0160, 0x0166, 0x017d, 0x00ad, 0x016a, 0x014a,
+ /* 0xb0 */
+ 0x00b0, 0x0105, 0x0113, 0x0123, 0x012b, 0x0129, 0x0137, 0x00b7,
+ 0x013c, 0x0111, 0x0161, 0x0167, 0x017e, 0x2015, 0x016b, 0x014b,
+ /* 0xc0 */
+ 0x0100, 0x00c1, 0x00c2, 0x00c3, 0x00c4, 0x00c5, 0x00c6, 0x012e,
+ 0x010c, 0x00c9, 0x0118, 0x00cb, 0x0116, 0x00cd, 0x00ce, 0x00cf,
+ /* 0xd0 */
+ 0x00d0, 0x0145, 0x014c, 0x00d3, 0x00d4, 0x00d5, 0x00d6, 0x0168,
+ 0x00d8, 0x0172, 0x00da, 0x00db, 0x00dc, 0x00dd, 0x00de, 0x00df,
+ /* 0xe0 */
+ 0x0101, 0x00e1, 0x00e2, 0x00e3, 0x00e4, 0x00e5, 0x00e6, 0x012f,
+ 0x010d, 0x00e9, 0x0119, 0x00eb, 0x0117, 0x00ed, 0x00ee, 0x00ef,
+ /* 0xf0 */
+ 0x00f0, 0x0146, 0x014d, 0x00f3, 0x00f4, 0x00f5, 0x00f6, 0x0169,
+ 0x00f8, 0x0173, 0x00fa, 0x00fb, 0x00fc, 0x00fd, 0x00fe, 0x0138,
+};
+
+static int
+iso8859_10_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n)
+{
+ unsigned char c = *s;
+ if (c < 0xa0)
+ *pwc = (ucs4_t) c;
+ else
+ *pwc = (ucs4_t) iso8859_10_2uni[c-0xa0];
+ return 1;
+}
+
+static const unsigned char iso8859_10_page00[224] = {
+ 0xa0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa7, /* 0xa0-0xa7 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0xad, 0x00, 0x00, /* 0xa8-0xaf */
+ 0xb0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb7, /* 0xb0-0xb7 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xb8-0xbf */
+ 0x00, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0x00, /* 0xc0-0xc7 */
+ 0x00, 0xc9, 0x00, 0xcb, 0x00, 0xcd, 0xce, 0xcf, /* 0xc8-0xcf */
+ 0xd0, 0x00, 0x00, 0xd3, 0xd4, 0xd5, 0xd6, 0x00, /* 0xd0-0xd7 */
+ 0xd8, 0x00, 0xda, 0xdb, 0xdc, 0xdd, 0xde, 0xdf, /* 0xd8-0xdf */
+ 0x00, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0x00, /* 0xe0-0xe7 */
+ 0x00, 0xe9, 0x00, 0xeb, 0x00, 0xed, 0xee, 0xef, /* 0xe8-0xef */
+ 0xf0, 0x00, 0x00, 0xf3, 0xf4, 0xf5, 0xf6, 0x00, /* 0xf0-0xf7 */
+ 0xf8, 0x00, 0xfa, 0xfb, 0xfc, 0xfd, 0xfe, 0x00, /* 0xf8-0xff */
+ /* 0x0100 */
+ 0xc0, 0xe0, 0x00, 0x00, 0xa1, 0xb1, 0x00, 0x00, /* 0x00-0x07 */
+ 0x00, 0x00, 0x00, 0x00, 0xc8, 0xe8, 0x00, 0x00, /* 0x08-0x0f */
+ 0xa9, 0xb9, 0xa2, 0xb2, 0x00, 0x00, 0xcc, 0xec, /* 0x10-0x17 */
+ 0xca, 0xea, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x18-0x1f */
+ 0x00, 0x00, 0xa3, 0xb3, 0x00, 0x00, 0x00, 0x00, /* 0x20-0x27 */
+ 0xa5, 0xb5, 0xa4, 0xb4, 0x00, 0x00, 0xc7, 0xe7, /* 0x28-0x2f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa6, 0xb6, /* 0x30-0x37 */
+ 0xff, 0x00, 0x00, 0xa8, 0xb8, 0x00, 0x00, 0x00, /* 0x38-0x3f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0xd1, 0xf1, 0x00, /* 0x40-0x47 */
+ 0x00, 0x00, 0xaf, 0xbf, 0xd2, 0xf2, 0x00, 0x00, /* 0x48-0x4f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x50-0x57 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x58-0x5f */
+ 0xaa, 0xba, 0x00, 0x00, 0x00, 0x00, 0xab, 0xbb, /* 0x60-0x67 */
+ 0xd7, 0xf7, 0xae, 0xbe, 0x00, 0x00, 0x00, 0x00, /* 0x68-0x6f */
+ 0x00, 0x00, 0xd9, 0xf9, 0x00, 0x00, 0x00, 0x00, /* 0x70-0x77 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0xac, 0xbc, 0x00, /* 0x78-0x7f */
+};
+
+static int
+iso8859_10_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n)
+{
+ unsigned char c = 0;
+ if (wc < 0x00a0) {
+ *r = wc;
+ return 1;
+ }
+ else if (wc >= 0x00a0 && wc < 0x0180)
+ c = iso8859_10_page00[wc-0x00a0];
+ else if (wc == 0x2015)
+ c = 0xbd;
+ if (c != 0) {
+ *r = c;
+ return 1;
+ }
+ return RET_ILSEQ;
+}
diff --git a/libX11/src/xlibi18n/lcUniConv/iso8859_11.h b/libX11/src/xlibi18n/lcUniConv/iso8859_11.h
index 8f82da035..5458da514 100644
--- a/libX11/src/xlibi18n/lcUniConv/iso8859_11.h
+++ b/libX11/src/xlibi18n/lcUniConv/iso8859_11.h
@@ -1,77 +1,77 @@
-
-/*
- * ISO8859-11
- */
-
-static const unsigned short iso8859_11_2uni[96] = {
- /* 0xa0 */
- 0x00a0, 0x0e01, 0x0e02, 0x0e03, 0x0e04, 0x0e05, 0x0e06, 0x0e07,
- 0x0e08, 0x0e09, 0x0e0a, 0x0e0b, 0x0e0c, 0x0e0d, 0x0e0e, 0x0e0f,
- /* 0xb0 */
- 0x0e10, 0x0e11, 0x0e12, 0x0e13, 0x0e14, 0x0e15, 0x0e16, 0x0e17,
- 0x0e18, 0x0e19, 0x0e1a, 0x0e1b, 0x0e1c, 0x0e1d, 0x0e1e, 0x0e1f,
- /* 0xc0 */
- 0x0e20, 0x0e21, 0x0e22, 0x0e23, 0x0e24, 0x0e25, 0x0e26, 0x0e27,
- 0x0e28, 0x0e29, 0x0e2a, 0x0e2b, 0x0e2c, 0x0e2d, 0x0e2e, 0x0e2f,
- /* 0xd0 */
- 0x0e30, 0x0e31, 0x0e32, 0x0e33, 0x0e34, 0x0e35, 0x0e36, 0x0e37,
- 0x0e38, 0x0e39, 0x0e3a, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x0e3f,
- /* 0xe0 */
- 0x0e40, 0x0e41, 0x0e42, 0x0e43, 0x0e44, 0x0e45, 0x0e46, 0x0e47,
- 0x0e48, 0x0e49, 0x0e4a, 0x0e4b, 0x0e4c, 0x0e4d, 0x0e4e, 0x0e4f,
- /* 0xf0 */
- 0x0e50, 0x0e51, 0x0e52, 0x0e53, 0x0e54, 0x0e55, 0x0e56, 0x0e57,
- 0x0e58, 0x0e59, 0x0e5a, 0x0e5b, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
-};
-
-static int
-iso8859_11_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n)
-{
- unsigned char c = *s;
- if (c < 0x80) {
- *pwc = (ucs4_t) c;
- return 1;
- }
- else if (c < 0xa0) {
- }
- else {
- unsigned short wc = iso8859_11_2uni[c-0xa0];
- if (wc != 0xfffd) {
- *pwc = (ucs4_t) wc;
- return 1;
- }
- }
- return RET_ILSEQ;
-}
-
-static const unsigned char iso8859_11_page0e[96] = {
- 0x00, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7, /* 0x00-0x07 */
- 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf, /* 0x08-0x0f */
- 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7, /* 0x10-0x17 */
- 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf, /* 0x18-0x1f */
- 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, /* 0x20-0x27 */
- 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, /* 0x28-0x2f */
- 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, /* 0x30-0x37 */
- 0xd8, 0xd9, 0xda, 0x00, 0x00, 0x00, 0x00, 0xdf, /* 0x38-0x3f */
- 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, /* 0x40-0x47 */
- 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef, /* 0x48-0x4f */
- 0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, /* 0x50-0x57 */
- 0xf8, 0xf9, 0xfa, 0xfb, 0x00, 0x00, 0x00, 0x00, /* 0x58-0x5f */
-};
-
-static int
-iso8859_11_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n)
-{
- unsigned char c = 0;
- if (wc < 0x0080 || wc == 0x00a0) {
- *r = wc;
- return 1;
- }
- else if (wc >= 0x0e00 && wc < 0x0e60)
- c = iso8859_11_page0e[wc-0x0e00];
- if (c != 0) {
- *r = c;
- return 1;
- }
- return RET_ILSEQ;
-}
+
+/*
+ * ISO8859-11
+ */
+
+static const unsigned short iso8859_11_2uni[96] = {
+ /* 0xa0 */
+ 0x00a0, 0x0e01, 0x0e02, 0x0e03, 0x0e04, 0x0e05, 0x0e06, 0x0e07,
+ 0x0e08, 0x0e09, 0x0e0a, 0x0e0b, 0x0e0c, 0x0e0d, 0x0e0e, 0x0e0f,
+ /* 0xb0 */
+ 0x0e10, 0x0e11, 0x0e12, 0x0e13, 0x0e14, 0x0e15, 0x0e16, 0x0e17,
+ 0x0e18, 0x0e19, 0x0e1a, 0x0e1b, 0x0e1c, 0x0e1d, 0x0e1e, 0x0e1f,
+ /* 0xc0 */
+ 0x0e20, 0x0e21, 0x0e22, 0x0e23, 0x0e24, 0x0e25, 0x0e26, 0x0e27,
+ 0x0e28, 0x0e29, 0x0e2a, 0x0e2b, 0x0e2c, 0x0e2d, 0x0e2e, 0x0e2f,
+ /* 0xd0 */
+ 0x0e30, 0x0e31, 0x0e32, 0x0e33, 0x0e34, 0x0e35, 0x0e36, 0x0e37,
+ 0x0e38, 0x0e39, 0x0e3a, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x0e3f,
+ /* 0xe0 */
+ 0x0e40, 0x0e41, 0x0e42, 0x0e43, 0x0e44, 0x0e45, 0x0e46, 0x0e47,
+ 0x0e48, 0x0e49, 0x0e4a, 0x0e4b, 0x0e4c, 0x0e4d, 0x0e4e, 0x0e4f,
+ /* 0xf0 */
+ 0x0e50, 0x0e51, 0x0e52, 0x0e53, 0x0e54, 0x0e55, 0x0e56, 0x0e57,
+ 0x0e58, 0x0e59, 0x0e5a, 0x0e5b, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+};
+
+static int
+iso8859_11_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n)
+{
+ unsigned char c = *s;
+ if (c < 0x80) {
+ *pwc = (ucs4_t) c;
+ return 1;
+ }
+ else if (c < 0xa0) {
+ }
+ else {
+ unsigned short wc = iso8859_11_2uni[c-0xa0];
+ if (wc != 0xfffd) {
+ *pwc = (ucs4_t) wc;
+ return 1;
+ }
+ }
+ return RET_ILSEQ;
+}
+
+static const unsigned char iso8859_11_page0e[96] = {
+ 0x00, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7, /* 0x00-0x07 */
+ 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf, /* 0x08-0x0f */
+ 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7, /* 0x10-0x17 */
+ 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf, /* 0x18-0x1f */
+ 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, /* 0x20-0x27 */
+ 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, /* 0x28-0x2f */
+ 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, /* 0x30-0x37 */
+ 0xd8, 0xd9, 0xda, 0x00, 0x00, 0x00, 0x00, 0xdf, /* 0x38-0x3f */
+ 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, /* 0x40-0x47 */
+ 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef, /* 0x48-0x4f */
+ 0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, /* 0x50-0x57 */
+ 0xf8, 0xf9, 0xfa, 0xfb, 0x00, 0x00, 0x00, 0x00, /* 0x58-0x5f */
+};
+
+static int
+iso8859_11_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n)
+{
+ unsigned char c = 0;
+ if (wc < 0x0080 || wc == 0x00a0) {
+ *r = wc;
+ return 1;
+ }
+ else if (wc >= 0x0e00 && wc < 0x0e60)
+ c = iso8859_11_page0e[wc-0x0e00];
+ if (c != 0) {
+ *r = c;
+ return 1;
+ }
+ return RET_ILSEQ;
+}
diff --git a/libX11/src/xlibi18n/lcUniConv/iso8859_13.h b/libX11/src/xlibi18n/lcUniConv/iso8859_13.h
index c331490c7..c041b154a 100644
--- a/libX11/src/xlibi18n/lcUniConv/iso8859_13.h
+++ b/libX11/src/xlibi18n/lcUniConv/iso8859_13.h
@@ -1,90 +1,90 @@
-
-/*
- * ISO-8859-13
- */
-
-static const unsigned short iso8859_13_2uni[96] = {
- /* 0xa0 */
- 0x00a0, 0x201d, 0x00a2, 0x00a3, 0x00a4, 0x201e, 0x00a6, 0x00a7,
- 0x00d8, 0x00a9, 0x0156, 0x00ab, 0x00ac, 0x00ad, 0x00ae, 0x00c6,
- /* 0xb0 */
- 0x00b0, 0x00b1, 0x00b2, 0x00b3, 0x201c, 0x00b5, 0x00b6, 0x00b7,
- 0x00f8, 0x00b9, 0x0157, 0x00bb, 0x00bc, 0x00bd, 0x00be, 0x00e6,
- /* 0xc0 */
- 0x0104, 0x012e, 0x0100, 0x0106, 0x00c4, 0x00c5, 0x0118, 0x0112,
- 0x010c, 0x00c9, 0x0179, 0x0116, 0x0122, 0x0136, 0x012a, 0x013b,
- /* 0xd0 */
- 0x0160, 0x0143, 0x0145, 0x00d3, 0x014c, 0x00d5, 0x00d6, 0x00d7,
- 0x0172, 0x0141, 0x015a, 0x016a, 0x00dc, 0x017b, 0x017d, 0x00df,
- /* 0xe0 */
- 0x0105, 0x012f, 0x0101, 0x0107, 0x00e4, 0x00e5, 0x0119, 0x0113,
- 0x010d, 0x00e9, 0x017a, 0x0117, 0x0123, 0x0137, 0x012b, 0x013c,
- /* 0xf0 */
- 0x0161, 0x0144, 0x0146, 0x00f3, 0x014d, 0x00f5, 0x00f6, 0x00f7,
- 0x0173, 0x0142, 0x015b, 0x016b, 0x00fc, 0x017c, 0x017e, 0x2019,
-};
-
-static int
-iso8859_13_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n)
-{
- unsigned char c = *s;
- if (c < 0xa0)
- *pwc = (ucs4_t) c;
- else
- *pwc = (ucs4_t) iso8859_13_2uni[c-0xa0];
- return 1;
-}
-
-static const unsigned char iso8859_13_page00[224] = {
- 0xa0, 0x00, 0xa2, 0xa3, 0xa4, 0x00, 0xa6, 0xa7, /* 0xa0-0xa7 */
- 0x00, 0xa9, 0x00, 0xab, 0xac, 0xad, 0xae, 0x00, /* 0xa8-0xaf */
- 0xb0, 0xb1, 0xb2, 0xb3, 0x00, 0xb5, 0xb6, 0xb7, /* 0xb0-0xb7 */
- 0x00, 0xb9, 0x00, 0xbb, 0xbc, 0xbd, 0xbe, 0x00, /* 0xb8-0xbf */
- 0x00, 0x00, 0x00, 0x00, 0xc4, 0xc5, 0xaf, 0x00, /* 0xc0-0xc7 */
- 0x00, 0xc9, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xc8-0xcf */
- 0x00, 0x00, 0x00, 0xd3, 0x00, 0xd5, 0xd6, 0xd7, /* 0xd0-0xd7 */
- 0xa8, 0x00, 0x00, 0x00, 0xdc, 0x00, 0x00, 0xdf, /* 0xd8-0xdf */
- 0x00, 0x00, 0x00, 0x00, 0xe4, 0xe5, 0xbf, 0x00, /* 0xe0-0xe7 */
- 0x00, 0xe9, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xe8-0xef */
- 0x00, 0x00, 0x00, 0xf3, 0x00, 0xf5, 0xf6, 0xf7, /* 0xf0-0xf7 */
- 0xb8, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00, /* 0xf8-0xff */
- /* 0x0100 */
- 0xc2, 0xe2, 0x00, 0x00, 0xc0, 0xe0, 0xc3, 0xe3, /* 0x00-0x07 */
- 0x00, 0x00, 0x00, 0x00, 0xc8, 0xe8, 0x00, 0x00, /* 0x08-0x0f */
- 0x00, 0x00, 0xc7, 0xe7, 0x00, 0x00, 0xcb, 0xeb, /* 0x10-0x17 */
- 0xc6, 0xe6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x18-0x1f */
- 0x00, 0x00, 0xcc, 0xec, 0x00, 0x00, 0x00, 0x00, /* 0x20-0x27 */
- 0x00, 0x00, 0xce, 0xee, 0x00, 0x00, 0xc1, 0xe1, /* 0x28-0x2f */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xcd, 0xed, /* 0x30-0x37 */
- 0x00, 0x00, 0x00, 0xcf, 0xef, 0x00, 0x00, 0x00, /* 0x38-0x3f */
- 0x00, 0xd9, 0xf9, 0xd1, 0xf1, 0xd2, 0xf2, 0x00, /* 0x40-0x47 */
- 0x00, 0x00, 0x00, 0x00, 0xd4, 0xf4, 0x00, 0x00, /* 0x48-0x4f */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xaa, 0xba, /* 0x50-0x57 */
- 0x00, 0x00, 0xda, 0xfa, 0x00, 0x00, 0x00, 0x00, /* 0x58-0x5f */
- 0xd0, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x60-0x67 */
- 0x00, 0x00, 0xdb, 0xfb, 0x00, 0x00, 0x00, 0x00, /* 0x68-0x6f */
- 0x00, 0x00, 0xd8, 0xf8, 0x00, 0x00, 0x00, 0x00, /* 0x70-0x77 */
- 0x00, 0xca, 0xea, 0xdd, 0xfd, 0xde, 0xfe, 0x00, /* 0x78-0x7f */
-};
-static const unsigned char iso8859_13_page20[8] = {
- 0x00, 0xff, 0x00, 0x00, 0xb4, 0xa1, 0xa5, 0x00, /* 0x18-0x1f */
-};
-
-static int
-iso8859_13_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n)
-{
- unsigned char c = 0;
- if (wc < 0x00a0) {
- *r = wc;
- return 1;
- }
- else if (wc >= 0x00a0 && wc < 0x0180)
- c = iso8859_13_page00[wc-0x00a0];
- else if (wc >= 0x2018 && wc < 0x2020)
- c = iso8859_13_page20[wc-0x2018];
- if (c != 0) {
- *r = c;
- return 1;
- }
- return RET_ILSEQ;
-}
+
+/*
+ * ISO-8859-13
+ */
+
+static const unsigned short iso8859_13_2uni[96] = {
+ /* 0xa0 */
+ 0x00a0, 0x201d, 0x00a2, 0x00a3, 0x00a4, 0x201e, 0x00a6, 0x00a7,
+ 0x00d8, 0x00a9, 0x0156, 0x00ab, 0x00ac, 0x00ad, 0x00ae, 0x00c6,
+ /* 0xb0 */
+ 0x00b0, 0x00b1, 0x00b2, 0x00b3, 0x201c, 0x00b5, 0x00b6, 0x00b7,
+ 0x00f8, 0x00b9, 0x0157, 0x00bb, 0x00bc, 0x00bd, 0x00be, 0x00e6,
+ /* 0xc0 */
+ 0x0104, 0x012e, 0x0100, 0x0106, 0x00c4, 0x00c5, 0x0118, 0x0112,
+ 0x010c, 0x00c9, 0x0179, 0x0116, 0x0122, 0x0136, 0x012a, 0x013b,
+ /* 0xd0 */
+ 0x0160, 0x0143, 0x0145, 0x00d3, 0x014c, 0x00d5, 0x00d6, 0x00d7,
+ 0x0172, 0x0141, 0x015a, 0x016a, 0x00dc, 0x017b, 0x017d, 0x00df,
+ /* 0xe0 */
+ 0x0105, 0x012f, 0x0101, 0x0107, 0x00e4, 0x00e5, 0x0119, 0x0113,
+ 0x010d, 0x00e9, 0x017a, 0x0117, 0x0123, 0x0137, 0x012b, 0x013c,
+ /* 0xf0 */
+ 0x0161, 0x0144, 0x0146, 0x00f3, 0x014d, 0x00f5, 0x00f6, 0x00f7,
+ 0x0173, 0x0142, 0x015b, 0x016b, 0x00fc, 0x017c, 0x017e, 0x2019,
+};
+
+static int
+iso8859_13_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n)
+{
+ unsigned char c = *s;
+ if (c < 0xa0)
+ *pwc = (ucs4_t) c;
+ else
+ *pwc = (ucs4_t) iso8859_13_2uni[c-0xa0];
+ return 1;
+}
+
+static const unsigned char iso8859_13_page00[224] = {
+ 0xa0, 0x00, 0xa2, 0xa3, 0xa4, 0x00, 0xa6, 0xa7, /* 0xa0-0xa7 */
+ 0x00, 0xa9, 0x00, 0xab, 0xac, 0xad, 0xae, 0x00, /* 0xa8-0xaf */
+ 0xb0, 0xb1, 0xb2, 0xb3, 0x00, 0xb5, 0xb6, 0xb7, /* 0xb0-0xb7 */
+ 0x00, 0xb9, 0x00, 0xbb, 0xbc, 0xbd, 0xbe, 0x00, /* 0xb8-0xbf */
+ 0x00, 0x00, 0x00, 0x00, 0xc4, 0xc5, 0xaf, 0x00, /* 0xc0-0xc7 */
+ 0x00, 0xc9, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xc8-0xcf */
+ 0x00, 0x00, 0x00, 0xd3, 0x00, 0xd5, 0xd6, 0xd7, /* 0xd0-0xd7 */
+ 0xa8, 0x00, 0x00, 0x00, 0xdc, 0x00, 0x00, 0xdf, /* 0xd8-0xdf */
+ 0x00, 0x00, 0x00, 0x00, 0xe4, 0xe5, 0xbf, 0x00, /* 0xe0-0xe7 */
+ 0x00, 0xe9, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xe8-0xef */
+ 0x00, 0x00, 0x00, 0xf3, 0x00, 0xf5, 0xf6, 0xf7, /* 0xf0-0xf7 */
+ 0xb8, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00, /* 0xf8-0xff */
+ /* 0x0100 */
+ 0xc2, 0xe2, 0x00, 0x00, 0xc0, 0xe0, 0xc3, 0xe3, /* 0x00-0x07 */
+ 0x00, 0x00, 0x00, 0x00, 0xc8, 0xe8, 0x00, 0x00, /* 0x08-0x0f */
+ 0x00, 0x00, 0xc7, 0xe7, 0x00, 0x00, 0xcb, 0xeb, /* 0x10-0x17 */
+ 0xc6, 0xe6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x18-0x1f */
+ 0x00, 0x00, 0xcc, 0xec, 0x00, 0x00, 0x00, 0x00, /* 0x20-0x27 */
+ 0x00, 0x00, 0xce, 0xee, 0x00, 0x00, 0xc1, 0xe1, /* 0x28-0x2f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xcd, 0xed, /* 0x30-0x37 */
+ 0x00, 0x00, 0x00, 0xcf, 0xef, 0x00, 0x00, 0x00, /* 0x38-0x3f */
+ 0x00, 0xd9, 0xf9, 0xd1, 0xf1, 0xd2, 0xf2, 0x00, /* 0x40-0x47 */
+ 0x00, 0x00, 0x00, 0x00, 0xd4, 0xf4, 0x00, 0x00, /* 0x48-0x4f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xaa, 0xba, /* 0x50-0x57 */
+ 0x00, 0x00, 0xda, 0xfa, 0x00, 0x00, 0x00, 0x00, /* 0x58-0x5f */
+ 0xd0, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x60-0x67 */
+ 0x00, 0x00, 0xdb, 0xfb, 0x00, 0x00, 0x00, 0x00, /* 0x68-0x6f */
+ 0x00, 0x00, 0xd8, 0xf8, 0x00, 0x00, 0x00, 0x00, /* 0x70-0x77 */
+ 0x00, 0xca, 0xea, 0xdd, 0xfd, 0xde, 0xfe, 0x00, /* 0x78-0x7f */
+};
+static const unsigned char iso8859_13_page20[8] = {
+ 0x00, 0xff, 0x00, 0x00, 0xb4, 0xa1, 0xa5, 0x00, /* 0x18-0x1f */
+};
+
+static int
+iso8859_13_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n)
+{
+ unsigned char c = 0;
+ if (wc < 0x00a0) {
+ *r = wc;
+ return 1;
+ }
+ else if (wc >= 0x00a0 && wc < 0x0180)
+ c = iso8859_13_page00[wc-0x00a0];
+ else if (wc >= 0x2018 && wc < 0x2020)
+ c = iso8859_13_page20[wc-0x2018];
+ if (c != 0) {
+ *r = c;
+ return 1;
+ }
+ return RET_ILSEQ;
+}
diff --git a/libX11/src/xlibi18n/lcUniConv/iso8859_14.h b/libX11/src/xlibi18n/lcUniConv/iso8859_14.h
index f925c8f03..f01581492 100644
--- a/libX11/src/xlibi18n/lcUniConv/iso8859_14.h
+++ b/libX11/src/xlibi18n/lcUniConv/iso8859_14.h
@@ -1,108 +1,108 @@
-
-/*
- * ISO-8859-14
- */
-
-static const unsigned short iso8859_14_2uni[96] = {
- /* 0xa0 */
- 0x00a0, 0x1e02, 0x1e03, 0x00a3, 0x010a, 0x010b, 0x1e0a, 0x00a7,
- 0x1e80, 0x00a9, 0x1e82, 0x1e0b, 0x1ef2, 0x00ad, 0x00ae, 0x0178,
- /* 0xb0 */
- 0x1e1e, 0x1e1f, 0x0120, 0x0121, 0x1e40, 0x1e41, 0x00b6, 0x1e56,
- 0x1e81, 0x1e57, 0x1e83, 0x1e60, 0x1ef3, 0x1e84, 0x1e85, 0x1e61,
- /* 0xc0 */
- 0x00c0, 0x00c1, 0x00c2, 0x00c3, 0x00c4, 0x00c5, 0x00c6, 0x00c7,
- 0x00c8, 0x00c9, 0x00ca, 0x00cb, 0x00cc, 0x00cd, 0x00ce, 0x00cf,
- /* 0xd0 */
- 0x0174, 0x00d1, 0x00d2, 0x00d3, 0x00d4, 0x00d5, 0x00d6, 0x1e6a,
- 0x00d8, 0x00d9, 0x00da, 0x00db, 0x00dc, 0x00dd, 0x0176, 0x00df,
- /* 0xe0 */
- 0x00e0, 0x00e1, 0x00e2, 0x00e3, 0x00e4, 0x00e5, 0x00e6, 0x00e7,
- 0x00e8, 0x00e9, 0x00ea, 0x00eb, 0x00ec, 0x00ed, 0x00ee, 0x00ef,
- /* 0xf0 */
- 0x0175, 0x00f1, 0x00f2, 0x00f3, 0x00f4, 0x00f5, 0x00f6, 0x1e6b,
- 0x00f8, 0x00f9, 0x00fa, 0x00fb, 0x00fc, 0x00fd, 0x0177, 0x00ff,
-};
-
-static int
-iso8859_14_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n)
-{
- unsigned char c = *s;
- if (c >= 0xa0)
- *pwc = (ucs4_t) iso8859_14_2uni[c-0xa0];
- else
- *pwc = (ucs4_t) c;
- return 1;
-}
-
-static const unsigned char iso8859_14_page00[96] = {
- 0xa0, 0x00, 0x00, 0xa3, 0x00, 0x00, 0x00, 0xa7, /* 0xa0-0xa7 */
- 0x00, 0xa9, 0x00, 0x00, 0x00, 0xad, 0xae, 0x00, /* 0xa8-0xaf */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb6, 0x00, /* 0xb0-0xb7 */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xb8-0xbf */
- 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, /* 0xc0-0xc7 */
- 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, /* 0xc8-0xcf */
- 0x00, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0x00, /* 0xd0-0xd7 */
- 0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, 0x00, 0xdf, /* 0xd8-0xdf */
- 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, /* 0xe0-0xe7 */
- 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef, /* 0xe8-0xef */
- 0x00, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0x00, /* 0xf0-0xf7 */
- 0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, 0x00, 0xff, /* 0xf8-0xff */
-};
-static const unsigned char iso8859_14_page01_0[32] = {
- 0x00, 0x00, 0xa4, 0xa5, 0x00, 0x00, 0x00, 0x00, /* 0x08-0x0f */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x10-0x17 */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x18-0x1f */
- 0xb2, 0xb3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x20-0x27 */
-};
-static const unsigned char iso8859_14_page01_1[16] = {
- 0x00, 0x00, 0x00, 0x00, 0xd0, 0xf0, 0xde, 0xfe, /* 0x70-0x77 */
- 0xaf, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x78-0x7f */
-};
-static const unsigned char iso8859_14_page1e_0[136] = {
- 0x00, 0x00, 0xa1, 0xa2, 0x00, 0x00, 0x00, 0x00, /* 0x00-0x07 */
- 0x00, 0x00, 0xa6, 0xab, 0x00, 0x00, 0x00, 0x00, /* 0x08-0x0f */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x10-0x17 */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb0, 0xb1, /* 0x18-0x1f */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x20-0x27 */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x28-0x2f */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x30-0x37 */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x38-0x3f */
- 0xb4, 0xb5, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x40-0x47 */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x48-0x4f */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb7, 0xb9, /* 0x50-0x57 */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x58-0x5f */
- 0xbb, 0xbf, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x60-0x67 */
- 0x00, 0x00, 0xd7, 0xf7, 0x00, 0x00, 0x00, 0x00, /* 0x68-0x6f */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x70-0x77 */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x78-0x7f */
- 0xa8, 0xb8, 0xaa, 0xba, 0xbd, 0xbe, 0x00, 0x00, /* 0x80-0x87 */
-};
-static const unsigned char iso8859_14_page1e_1[8] = {
- 0x00, 0x00, 0xac, 0xbc, 0x00, 0x00, 0x00, 0x00, /* 0xf0-0xf7 */
-};
-
-static int
-iso8859_14_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n)
-{
- unsigned char c = 0;
- if (wc < 0x00a0) {
- *r = wc;
- return 1;
- }
- else if (wc >= 0x00a0 && wc < 0x0100)
- c = iso8859_14_page00[wc-0x00a0];
- else if (wc >= 0x0108 && wc < 0x0128)
- c = iso8859_14_page01_0[wc-0x0108];
- else if (wc >= 0x0170 && wc < 0x0180)
- c = iso8859_14_page01_1[wc-0x0170];
- else if (wc >= 0x1e00 && wc < 0x1e88)
- c = iso8859_14_page1e_0[wc-0x1e00];
- else if (wc >= 0x1ef0 && wc < 0x1ef8)
- c = iso8859_14_page1e_1[wc-0x1ef0];
- if (c != 0) {
- *r = c;
- return 1;
- }
- return RET_ILSEQ;
-}
+
+/*
+ * ISO-8859-14
+ */
+
+static const unsigned short iso8859_14_2uni[96] = {
+ /* 0xa0 */
+ 0x00a0, 0x1e02, 0x1e03, 0x00a3, 0x010a, 0x010b, 0x1e0a, 0x00a7,
+ 0x1e80, 0x00a9, 0x1e82, 0x1e0b, 0x1ef2, 0x00ad, 0x00ae, 0x0178,
+ /* 0xb0 */
+ 0x1e1e, 0x1e1f, 0x0120, 0x0121, 0x1e40, 0x1e41, 0x00b6, 0x1e56,
+ 0x1e81, 0x1e57, 0x1e83, 0x1e60, 0x1ef3, 0x1e84, 0x1e85, 0x1e61,
+ /* 0xc0 */
+ 0x00c0, 0x00c1, 0x00c2, 0x00c3, 0x00c4, 0x00c5, 0x00c6, 0x00c7,
+ 0x00c8, 0x00c9, 0x00ca, 0x00cb, 0x00cc, 0x00cd, 0x00ce, 0x00cf,
+ /* 0xd0 */
+ 0x0174, 0x00d1, 0x00d2, 0x00d3, 0x00d4, 0x00d5, 0x00d6, 0x1e6a,
+ 0x00d8, 0x00d9, 0x00da, 0x00db, 0x00dc, 0x00dd, 0x0176, 0x00df,
+ /* 0xe0 */
+ 0x00e0, 0x00e1, 0x00e2, 0x00e3, 0x00e4, 0x00e5, 0x00e6, 0x00e7,
+ 0x00e8, 0x00e9, 0x00ea, 0x00eb, 0x00ec, 0x00ed, 0x00ee, 0x00ef,
+ /* 0xf0 */
+ 0x0175, 0x00f1, 0x00f2, 0x00f3, 0x00f4, 0x00f5, 0x00f6, 0x1e6b,
+ 0x00f8, 0x00f9, 0x00fa, 0x00fb, 0x00fc, 0x00fd, 0x0177, 0x00ff,
+};
+
+static int
+iso8859_14_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n)
+{
+ unsigned char c = *s;
+ if (c >= 0xa0)
+ *pwc = (ucs4_t) iso8859_14_2uni[c-0xa0];
+ else
+ *pwc = (ucs4_t) c;
+ return 1;
+}
+
+static const unsigned char iso8859_14_page00[96] = {
+ 0xa0, 0x00, 0x00, 0xa3, 0x00, 0x00, 0x00, 0xa7, /* 0xa0-0xa7 */
+ 0x00, 0xa9, 0x00, 0x00, 0x00, 0xad, 0xae, 0x00, /* 0xa8-0xaf */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb6, 0x00, /* 0xb0-0xb7 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xb8-0xbf */
+ 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, /* 0xc0-0xc7 */
+ 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, /* 0xc8-0xcf */
+ 0x00, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0x00, /* 0xd0-0xd7 */
+ 0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, 0x00, 0xdf, /* 0xd8-0xdf */
+ 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, /* 0xe0-0xe7 */
+ 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef, /* 0xe8-0xef */
+ 0x00, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0x00, /* 0xf0-0xf7 */
+ 0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, 0x00, 0xff, /* 0xf8-0xff */
+};
+static const unsigned char iso8859_14_page01_0[32] = {
+ 0x00, 0x00, 0xa4, 0xa5, 0x00, 0x00, 0x00, 0x00, /* 0x08-0x0f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x10-0x17 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x18-0x1f */
+ 0xb2, 0xb3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x20-0x27 */
+};
+static const unsigned char iso8859_14_page01_1[16] = {
+ 0x00, 0x00, 0x00, 0x00, 0xd0, 0xf0, 0xde, 0xfe, /* 0x70-0x77 */
+ 0xaf, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x78-0x7f */
+};
+static const unsigned char iso8859_14_page1e_0[136] = {
+ 0x00, 0x00, 0xa1, 0xa2, 0x00, 0x00, 0x00, 0x00, /* 0x00-0x07 */
+ 0x00, 0x00, 0xa6, 0xab, 0x00, 0x00, 0x00, 0x00, /* 0x08-0x0f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x10-0x17 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb0, 0xb1, /* 0x18-0x1f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x20-0x27 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x28-0x2f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x30-0x37 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x38-0x3f */
+ 0xb4, 0xb5, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x40-0x47 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x48-0x4f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb7, 0xb9, /* 0x50-0x57 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x58-0x5f */
+ 0xbb, 0xbf, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x60-0x67 */
+ 0x00, 0x00, 0xd7, 0xf7, 0x00, 0x00, 0x00, 0x00, /* 0x68-0x6f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x70-0x77 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x78-0x7f */
+ 0xa8, 0xb8, 0xaa, 0xba, 0xbd, 0xbe, 0x00, 0x00, /* 0x80-0x87 */
+};
+static const unsigned char iso8859_14_page1e_1[8] = {
+ 0x00, 0x00, 0xac, 0xbc, 0x00, 0x00, 0x00, 0x00, /* 0xf0-0xf7 */
+};
+
+static int
+iso8859_14_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n)
+{
+ unsigned char c = 0;
+ if (wc < 0x00a0) {
+ *r = wc;
+ return 1;
+ }
+ else if (wc >= 0x00a0 && wc < 0x0100)
+ c = iso8859_14_page00[wc-0x00a0];
+ else if (wc >= 0x0108 && wc < 0x0128)
+ c = iso8859_14_page01_0[wc-0x0108];
+ else if (wc >= 0x0170 && wc < 0x0180)
+ c = iso8859_14_page01_1[wc-0x0170];
+ else if (wc >= 0x1e00 && wc < 0x1e88)
+ c = iso8859_14_page1e_0[wc-0x1e00];
+ else if (wc >= 0x1ef0 && wc < 0x1ef8)
+ c = iso8859_14_page1e_1[wc-0x1ef0];
+ if (c != 0) {
+ *r = c;
+ return 1;
+ }
+ return RET_ILSEQ;
+}
diff --git a/libX11/src/xlibi18n/lcUniConv/iso8859_15.h b/libX11/src/xlibi18n/lcUniConv/iso8859_15.h
index 258b108d6..631d9b5e2 100644
--- a/libX11/src/xlibi18n/lcUniConv/iso8859_15.h
+++ b/libX11/src/xlibi18n/lcUniConv/iso8859_15.h
@@ -1,62 +1,62 @@
-
-/*
- * ISO-8859-15
- */
-
-static const unsigned short iso8859_15_2uni[32] = {
- /* 0xa0 */
- 0x00a0, 0x00a1, 0x00a2, 0x00a3, 0x20ac, 0x00a5, 0x0160, 0x00a7,
- 0x0161, 0x00a9, 0x00aa, 0x00ab, 0x00ac, 0x00ad, 0x00ae, 0x00af,
- /* 0xb0 */
- 0x00b0, 0x00b1, 0x00b2, 0x00b3, 0x017d, 0x00b5, 0x00b6, 0x00b7,
- 0x017e, 0x00b9, 0x00ba, 0x00bb, 0x0152, 0x0153, 0x0178, 0x00bf,
-};
-
-static int
-iso8859_15_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n)
-{
- unsigned char c = *s;
- if (c >= 0xa0 && c < 0xc0)
- *pwc = (ucs4_t) iso8859_15_2uni[c-0xa0];
- else
- *pwc = (ucs4_t) c;
- return 1;
-}
-
-static const unsigned char iso8859_15_page00[32] = {
- 0xa0, 0xa1, 0xa2, 0xa3, 0x00, 0xa5, 0x00, 0xa7, /* 0xa0-0xa7 */
- 0x00, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf, /* 0xa8-0xaf */
- 0xb0, 0xb1, 0xb2, 0xb3, 0x00, 0xb5, 0xb6, 0xb7, /* 0xb0-0xb7 */
- 0x00, 0xb9, 0xba, 0xbb, 0x00, 0x00, 0x00, 0xbf, /* 0xb8-0xbf */
-};
-static const unsigned char iso8859_15_page01[48] = {
- 0x00, 0x00, 0xbc, 0xbd, 0x00, 0x00, 0x00, 0x00, /* 0x50-0x57 */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x58-0x5f */
- 0xa6, 0xa8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x60-0x67 */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x68-0x6f */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x70-0x77 */
- 0xbe, 0x00, 0x00, 0x00, 0x00, 0xb4, 0xb8, 0x00, /* 0x78-0x7f */
-};
-
-static int
-iso8859_15_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n)
-{
- unsigned char c = 0;
- if (wc < 0x00a0) {
- *r = wc;
- return 1;
- }
- else if (wc >= 0x00a0 && wc < 0x00c0)
- c = iso8859_15_page00[wc-0x00a0];
- else if (wc >= 0x00c0 && wc < 0x0100)
- c = wc;
- else if (wc >= 0x0150 && wc < 0x0180)
- c = iso8859_15_page01[wc-0x0150];
- else if (wc == 0x20ac)
- c = 0xa4;
- if (c != 0) {
- *r = c;
- return 1;
- }
- return RET_ILSEQ;
-}
+
+/*
+ * ISO-8859-15
+ */
+
+static const unsigned short iso8859_15_2uni[32] = {
+ /* 0xa0 */
+ 0x00a0, 0x00a1, 0x00a2, 0x00a3, 0x20ac, 0x00a5, 0x0160, 0x00a7,
+ 0x0161, 0x00a9, 0x00aa, 0x00ab, 0x00ac, 0x00ad, 0x00ae, 0x00af,
+ /* 0xb0 */
+ 0x00b0, 0x00b1, 0x00b2, 0x00b3, 0x017d, 0x00b5, 0x00b6, 0x00b7,
+ 0x017e, 0x00b9, 0x00ba, 0x00bb, 0x0152, 0x0153, 0x0178, 0x00bf,
+};
+
+static int
+iso8859_15_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n)
+{
+ unsigned char c = *s;
+ if (c >= 0xa0 && c < 0xc0)
+ *pwc = (ucs4_t) iso8859_15_2uni[c-0xa0];
+ else
+ *pwc = (ucs4_t) c;
+ return 1;
+}
+
+static const unsigned char iso8859_15_page00[32] = {
+ 0xa0, 0xa1, 0xa2, 0xa3, 0x00, 0xa5, 0x00, 0xa7, /* 0xa0-0xa7 */
+ 0x00, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf, /* 0xa8-0xaf */
+ 0xb0, 0xb1, 0xb2, 0xb3, 0x00, 0xb5, 0xb6, 0xb7, /* 0xb0-0xb7 */
+ 0x00, 0xb9, 0xba, 0xbb, 0x00, 0x00, 0x00, 0xbf, /* 0xb8-0xbf */
+};
+static const unsigned char iso8859_15_page01[48] = {
+ 0x00, 0x00, 0xbc, 0xbd, 0x00, 0x00, 0x00, 0x00, /* 0x50-0x57 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x58-0x5f */
+ 0xa6, 0xa8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x60-0x67 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x68-0x6f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x70-0x77 */
+ 0xbe, 0x00, 0x00, 0x00, 0x00, 0xb4, 0xb8, 0x00, /* 0x78-0x7f */
+};
+
+static int
+iso8859_15_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n)
+{
+ unsigned char c = 0;
+ if (wc < 0x00a0) {
+ *r = wc;
+ return 1;
+ }
+ else if (wc >= 0x00a0 && wc < 0x00c0)
+ c = iso8859_15_page00[wc-0x00a0];
+ else if (wc >= 0x00c0 && wc < 0x0100)
+ c = wc;
+ else if (wc >= 0x0150 && wc < 0x0180)
+ c = iso8859_15_page01[wc-0x0150];
+ else if (wc == 0x20ac)
+ c = 0xa4;
+ if (c != 0) {
+ *r = c;
+ return 1;
+ }
+ return RET_ILSEQ;
+}
diff --git a/libX11/src/xlibi18n/lcUniConv/iso8859_16.h b/libX11/src/xlibi18n/lcUniConv/iso8859_16.h
index 082037f4b..99a54d98f 100644
--- a/libX11/src/xlibi18n/lcUniConv/iso8859_16.h
+++ b/libX11/src/xlibi18n/lcUniConv/iso8859_16.h
@@ -1,97 +1,97 @@
-
-/*
- * ISO-8859-16
- */
-
-static const unsigned short iso8859_16_2uni[96] = {
- /* 0xa0 */
- 0x00a0, 0x0104, 0x0105, 0x0141, 0x20ac, 0x201e, 0x0160, 0x00a7,
- 0x0161, 0x00a9, 0x0218, 0x00ab, 0x0179, 0x00ad, 0x017a, 0x017b,
- /* 0xb0 */
- 0x00b0, 0x00b1, 0x010c, 0x0142, 0x017d, 0x201d, 0x00b6, 0x00b7,
- 0x017e, 0x010d, 0x0219, 0x00bb, 0x0152, 0x0153, 0x0178, 0x017c,
- /* 0xc0 */
- 0x00c0, 0x00c1, 0x00c2, 0x0102, 0x00c4, 0x0106, 0x00c6, 0x00c7,
- 0x00c8, 0x00c9, 0x00ca, 0x00cb, 0x00cc, 0x00cd, 0x00ce, 0x00cf,
- /* 0xd0 */
- 0x0110, 0x0143, 0x00d2, 0x00d3, 0x00d4, 0x0150, 0x00d6, 0x015a,
- 0x0170, 0x00d9, 0x00da, 0x00db, 0x00dc, 0x0118, 0x021a, 0x00df,
- /* 0xe0 */
- 0x00e0, 0x00e1, 0x00e2, 0x0103, 0x00e4, 0x0107, 0x00e6, 0x00e7,
- 0x00e8, 0x00e9, 0x00ea, 0x00eb, 0x00ec, 0x00ed, 0x00ee, 0x00ef,
- /* 0xf0 */
- 0x0111, 0x0144, 0x00f2, 0x00f3, 0x00f4, 0x0151, 0x00f6, 0x015b,
- 0x0171, 0x00f9, 0x00fa, 0x00fb, 0x00fc, 0x0119, 0x021b, 0x00ff,
-};
-
-static int
-iso8859_16_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n)
-{
- unsigned char c = *s;
- if (c < 0xa0)
- *pwc = (ucs4_t) c;
- else
- *pwc = (ucs4_t) iso8859_16_2uni[c-0xa0];
- return 1;
-}
-
-static const unsigned char iso8859_16_page00[224] = {
- 0xa0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa7, /* 0xa0-0xa7 */
- 0x00, 0xa9, 0x00, 0xab, 0x00, 0xad, 0x00, 0x00, /* 0xa8-0xaf */
- 0xb0, 0xb1, 0x00, 0x00, 0x00, 0x00, 0xb6, 0xb7, /* 0xb0-0xb7 */
- 0x00, 0x00, 0x00, 0xbb, 0x00, 0x00, 0x00, 0x00, /* 0xb8-0xbf */
- 0xc0, 0xc1, 0xc2, 0x00, 0xc4, 0x00, 0xc6, 0xc7, /* 0xc0-0xc7 */
- 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, /* 0xc8-0xcf */
- 0x00, 0x00, 0xd2, 0xd3, 0xd4, 0x00, 0xd6, 0x00, /* 0xd0-0xd7 */
- 0x00, 0xd9, 0xda, 0xdb, 0xdc, 0x00, 0x00, 0xdf, /* 0xd8-0xdf */
- 0xe0, 0xe1, 0xe2, 0x00, 0xe4, 0x00, 0xe6, 0xe7, /* 0xe0-0xe7 */
- 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef, /* 0xe8-0xef */
- 0x00, 0x00, 0xf2, 0xf3, 0xf4, 0x00, 0xf6, 0x00, /* 0xf0-0xf7 */
- 0x00, 0xf9, 0xfa, 0xfb, 0xfc, 0x00, 0x00, 0xff, /* 0xf8-0xff */
- /* 0x0100 */
- 0x00, 0x00, 0xc3, 0xe3, 0xa1, 0xa2, 0xc5, 0xe5, /* 0x00-0x07 */
- 0x00, 0x00, 0x00, 0x00, 0xb2, 0xb9, 0x00, 0x00, /* 0x08-0x0f */
- 0xd0, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x10-0x17 */
- 0xdd, 0xfd, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x18-0x1f */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x20-0x27 */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x28-0x2f */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x30-0x37 */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x38-0x3f */
- 0x00, 0xa3, 0xb3, 0xd1, 0xf1, 0x00, 0x00, 0x00, /* 0x40-0x47 */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x48-0x4f */
- 0xd5, 0xf5, 0xbc, 0xbd, 0x00, 0x00, 0x00, 0x00, /* 0x50-0x57 */
- 0x00, 0x00, 0xd7, 0xf7, 0x00, 0x00, 0x00, 0x00, /* 0x58-0x5f */
- 0xa6, 0xa8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x60-0x67 */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x68-0x6f */
- 0xd8, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x70-0x77 */
- 0xbe, 0xac, 0xae, 0xaf, 0xbf, 0xb4, 0xb8, 0x00, /* 0x78-0x7f */
-};
-static const unsigned char iso8859_16_page02[8] = {
- 0xaa, 0xba, 0xde, 0xfe, 0x00, 0x00, 0x00, 0x00, /* 0x18-0x1f */
-};
-static const unsigned char iso8859_16_page20[8] = {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0xb5, 0xa5, 0x00, /* 0x18-0x1f */
-};
-
-static int
-iso8859_16_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n)
-{
- unsigned char c = 0;
- if (wc < 0x00a0) {
- *r = wc;
- return 1;
- }
- else if (wc >= 0x00a0 && wc < 0x0180)
- c = iso8859_16_page00[wc-0x00a0];
- else if (wc >= 0x0218 && wc < 0x0220)
- c = iso8859_16_page02[wc-0x0218];
- else if (wc >= 0x2018 && wc < 0x2020)
- c = iso8859_16_page20[wc-0x2018];
- else if (wc == 0x20ac)
- c = 0xa4;
- if (c != 0) {
- *r = c;
- return 1;
- }
- return RET_ILSEQ;
-}
+
+/*
+ * ISO-8859-16
+ */
+
+static const unsigned short iso8859_16_2uni[96] = {
+ /* 0xa0 */
+ 0x00a0, 0x0104, 0x0105, 0x0141, 0x20ac, 0x201e, 0x0160, 0x00a7,
+ 0x0161, 0x00a9, 0x0218, 0x00ab, 0x0179, 0x00ad, 0x017a, 0x017b,
+ /* 0xb0 */
+ 0x00b0, 0x00b1, 0x010c, 0x0142, 0x017d, 0x201d, 0x00b6, 0x00b7,
+ 0x017e, 0x010d, 0x0219, 0x00bb, 0x0152, 0x0153, 0x0178, 0x017c,
+ /* 0xc0 */
+ 0x00c0, 0x00c1, 0x00c2, 0x0102, 0x00c4, 0x0106, 0x00c6, 0x00c7,
+ 0x00c8, 0x00c9, 0x00ca, 0x00cb, 0x00cc, 0x00cd, 0x00ce, 0x00cf,
+ /* 0xd0 */
+ 0x0110, 0x0143, 0x00d2, 0x00d3, 0x00d4, 0x0150, 0x00d6, 0x015a,
+ 0x0170, 0x00d9, 0x00da, 0x00db, 0x00dc, 0x0118, 0x021a, 0x00df,
+ /* 0xe0 */
+ 0x00e0, 0x00e1, 0x00e2, 0x0103, 0x00e4, 0x0107, 0x00e6, 0x00e7,
+ 0x00e8, 0x00e9, 0x00ea, 0x00eb, 0x00ec, 0x00ed, 0x00ee, 0x00ef,
+ /* 0xf0 */
+ 0x0111, 0x0144, 0x00f2, 0x00f3, 0x00f4, 0x0151, 0x00f6, 0x015b,
+ 0x0171, 0x00f9, 0x00fa, 0x00fb, 0x00fc, 0x0119, 0x021b, 0x00ff,
+};
+
+static int
+iso8859_16_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n)
+{
+ unsigned char c = *s;
+ if (c < 0xa0)
+ *pwc = (ucs4_t) c;
+ else
+ *pwc = (ucs4_t) iso8859_16_2uni[c-0xa0];
+ return 1;
+}
+
+static const unsigned char iso8859_16_page00[224] = {
+ 0xa0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa7, /* 0xa0-0xa7 */
+ 0x00, 0xa9, 0x00, 0xab, 0x00, 0xad, 0x00, 0x00, /* 0xa8-0xaf */
+ 0xb0, 0xb1, 0x00, 0x00, 0x00, 0x00, 0xb6, 0xb7, /* 0xb0-0xb7 */
+ 0x00, 0x00, 0x00, 0xbb, 0x00, 0x00, 0x00, 0x00, /* 0xb8-0xbf */
+ 0xc0, 0xc1, 0xc2, 0x00, 0xc4, 0x00, 0xc6, 0xc7, /* 0xc0-0xc7 */
+ 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, /* 0xc8-0xcf */
+ 0x00, 0x00, 0xd2, 0xd3, 0xd4, 0x00, 0xd6, 0x00, /* 0xd0-0xd7 */
+ 0x00, 0xd9, 0xda, 0xdb, 0xdc, 0x00, 0x00, 0xdf, /* 0xd8-0xdf */
+ 0xe0, 0xe1, 0xe2, 0x00, 0xe4, 0x00, 0xe6, 0xe7, /* 0xe0-0xe7 */
+ 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef, /* 0xe8-0xef */
+ 0x00, 0x00, 0xf2, 0xf3, 0xf4, 0x00, 0xf6, 0x00, /* 0xf0-0xf7 */
+ 0x00, 0xf9, 0xfa, 0xfb, 0xfc, 0x00, 0x00, 0xff, /* 0xf8-0xff */
+ /* 0x0100 */
+ 0x00, 0x00, 0xc3, 0xe3, 0xa1, 0xa2, 0xc5, 0xe5, /* 0x00-0x07 */
+ 0x00, 0x00, 0x00, 0x00, 0xb2, 0xb9, 0x00, 0x00, /* 0x08-0x0f */
+ 0xd0, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x10-0x17 */
+ 0xdd, 0xfd, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x18-0x1f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x20-0x27 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x28-0x2f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x30-0x37 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x38-0x3f */
+ 0x00, 0xa3, 0xb3, 0xd1, 0xf1, 0x00, 0x00, 0x00, /* 0x40-0x47 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x48-0x4f */
+ 0xd5, 0xf5, 0xbc, 0xbd, 0x00, 0x00, 0x00, 0x00, /* 0x50-0x57 */
+ 0x00, 0x00, 0xd7, 0xf7, 0x00, 0x00, 0x00, 0x00, /* 0x58-0x5f */
+ 0xa6, 0xa8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x60-0x67 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x68-0x6f */
+ 0xd8, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x70-0x77 */
+ 0xbe, 0xac, 0xae, 0xaf, 0xbf, 0xb4, 0xb8, 0x00, /* 0x78-0x7f */
+};
+static const unsigned char iso8859_16_page02[8] = {
+ 0xaa, 0xba, 0xde, 0xfe, 0x00, 0x00, 0x00, 0x00, /* 0x18-0x1f */
+};
+static const unsigned char iso8859_16_page20[8] = {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0xb5, 0xa5, 0x00, /* 0x18-0x1f */
+};
+
+static int
+iso8859_16_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n)
+{
+ unsigned char c = 0;
+ if (wc < 0x00a0) {
+ *r = wc;
+ return 1;
+ }
+ else if (wc >= 0x00a0 && wc < 0x0180)
+ c = iso8859_16_page00[wc-0x00a0];
+ else if (wc >= 0x0218 && wc < 0x0220)
+ c = iso8859_16_page02[wc-0x0218];
+ else if (wc >= 0x2018 && wc < 0x2020)
+ c = iso8859_16_page20[wc-0x2018];
+ else if (wc == 0x20ac)
+ c = 0xa4;
+ if (c != 0) {
+ *r = c;
+ return 1;
+ }
+ return RET_ILSEQ;
+}
diff --git a/libX11/src/xlibi18n/lcUniConv/iso8859_2.h b/libX11/src/xlibi18n/lcUniConv/iso8859_2.h
index e9639a72f..a63d00424 100644
--- a/libX11/src/xlibi18n/lcUniConv/iso8859_2.h
+++ b/libX11/src/xlibi18n/lcUniConv/iso8859_2.h
@@ -1,93 +1,93 @@
-
-/*
- * ISO-8859-2
- */
-
-static const unsigned short iso8859_2_2uni[96] = {
- /* 0xa0 */
- 0x00a0, 0x0104, 0x02d8, 0x0141, 0x00a4, 0x013d, 0x015a, 0x00a7,
- 0x00a8, 0x0160, 0x015e, 0x0164, 0x0179, 0x00ad, 0x017d, 0x017b,
- /* 0xb0 */
- 0x00b0, 0x0105, 0x02db, 0x0142, 0x00b4, 0x013e, 0x015b, 0x02c7,
- 0x00b8, 0x0161, 0x015f, 0x0165, 0x017a, 0x02dd, 0x017e, 0x017c,
- /* 0xc0 */
- 0x0154, 0x00c1, 0x00c2, 0x0102, 0x00c4, 0x0139, 0x0106, 0x00c7,
- 0x010c, 0x00c9, 0x0118, 0x00cb, 0x011a, 0x00cd, 0x00ce, 0x010e,
- /* 0xd0 */
- 0x0110, 0x0143, 0x0147, 0x00d3, 0x00d4, 0x0150, 0x00d6, 0x00d7,
- 0x0158, 0x016e, 0x00da, 0x0170, 0x00dc, 0x00dd, 0x0162, 0x00df,
- /* 0xe0 */
- 0x0155, 0x00e1, 0x00e2, 0x0103, 0x00e4, 0x013a, 0x0107, 0x00e7,
- 0x010d, 0x00e9, 0x0119, 0x00eb, 0x011b, 0x00ed, 0x00ee, 0x010f,
- /* 0xf0 */
- 0x0111, 0x0144, 0x0148, 0x00f3, 0x00f4, 0x0151, 0x00f6, 0x00f7,
- 0x0159, 0x016f, 0x00fa, 0x0171, 0x00fc, 0x00fd, 0x0163, 0x02d9,
-};
-
-static int
-iso8859_2_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n)
-{
- unsigned char c = *s;
- if (c < 0xa0)
- *pwc = (ucs4_t) c;
- else
- *pwc = (ucs4_t) iso8859_2_2uni[c-0xa0];
- return 1;
-}
-
-static const unsigned char iso8859_2_page00[224] = {
- 0xa0, 0x00, 0x00, 0x00, 0xa4, 0x00, 0x00, 0xa7, /* 0xa0-0xa7 */
- 0xa8, 0x00, 0x00, 0x00, 0x00, 0xad, 0x00, 0x00, /* 0xa8-0xaf */
- 0xb0, 0x00, 0x00, 0x00, 0xb4, 0x00, 0x00, 0x00, /* 0xb0-0xb7 */
- 0xb8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xb8-0xbf */
- 0x00, 0xc1, 0xc2, 0x00, 0xc4, 0x00, 0x00, 0xc7, /* 0xc0-0xc7 */
- 0x00, 0xc9, 0x00, 0xcb, 0x00, 0xcd, 0xce, 0x00, /* 0xc8-0xcf */
- 0x00, 0x00, 0x00, 0xd3, 0xd4, 0x00, 0xd6, 0xd7, /* 0xd0-0xd7 */
- 0x00, 0x00, 0xda, 0x00, 0xdc, 0xdd, 0x00, 0xdf, /* 0xd8-0xdf */
- 0x00, 0xe1, 0xe2, 0x00, 0xe4, 0x00, 0x00, 0xe7, /* 0xe0-0xe7 */
- 0x00, 0xe9, 0x00, 0xeb, 0x00, 0xed, 0xee, 0x00, /* 0xe8-0xef */
- 0x00, 0x00, 0x00, 0xf3, 0xf4, 0x00, 0xf6, 0xf7, /* 0xf0-0xf7 */
- 0x00, 0x00, 0xfa, 0x00, 0xfc, 0xfd, 0x00, 0x00, /* 0xf8-0xff */
- /* 0x0100 */
- 0x00, 0x00, 0xc3, 0xe3, 0xa1, 0xb1, 0xc6, 0xe6, /* 0x00-0x07 */
- 0x00, 0x00, 0x00, 0x00, 0xc8, 0xe8, 0xcf, 0xef, /* 0x08-0x0f */
- 0xd0, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x10-0x17 */
- 0xca, 0xea, 0xcc, 0xec, 0x00, 0x00, 0x00, 0x00, /* 0x18-0x1f */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x20-0x27 */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x28-0x2f */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x30-0x37 */
- 0x00, 0xc5, 0xe5, 0x00, 0x00, 0xa5, 0xb5, 0x00, /* 0x38-0x3f */
- 0x00, 0xa3, 0xb3, 0xd1, 0xf1, 0x00, 0x00, 0xd2, /* 0x40-0x47 */
- 0xf2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x48-0x4f */
- 0xd5, 0xf5, 0x00, 0x00, 0xc0, 0xe0, 0x00, 0x00, /* 0x50-0x57 */
- 0xd8, 0xf8, 0xa6, 0xb6, 0x00, 0x00, 0xaa, 0xba, /* 0x58-0x5f */
- 0xa9, 0xb9, 0xde, 0xfe, 0xab, 0xbb, 0x00, 0x00, /* 0x60-0x67 */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd9, 0xf9, /* 0x68-0x6f */
- 0xdb, 0xfb, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x70-0x77 */
- 0x00, 0xac, 0xbc, 0xaf, 0xbf, 0xae, 0xbe, 0x00, /* 0x78-0x7f */
-};
-static const unsigned char iso8859_2_page02[32] = {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb7, /* 0xc0-0xc7 */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xc8-0xcf */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xd0-0xd7 */
- 0xa2, 0xff, 0x00, 0xb2, 0x00, 0xbd, 0x00, 0x00, /* 0xd8-0xdf */
-};
-
-static int
-iso8859_2_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n)
-{
- unsigned char c = 0;
- if (wc < 0x00a0) {
- *r = wc;
- return 1;
- }
- else if (wc >= 0x00a0 && wc < 0x0180)
- c = iso8859_2_page00[wc-0x00a0];
- else if (wc >= 0x02c0 && wc < 0x02e0)
- c = iso8859_2_page02[wc-0x02c0];
- if (c != 0) {
- *r = c;
- return 1;
- }
- return RET_ILSEQ;
-}
+
+/*
+ * ISO-8859-2
+ */
+
+static const unsigned short iso8859_2_2uni[96] = {
+ /* 0xa0 */
+ 0x00a0, 0x0104, 0x02d8, 0x0141, 0x00a4, 0x013d, 0x015a, 0x00a7,
+ 0x00a8, 0x0160, 0x015e, 0x0164, 0x0179, 0x00ad, 0x017d, 0x017b,
+ /* 0xb0 */
+ 0x00b0, 0x0105, 0x02db, 0x0142, 0x00b4, 0x013e, 0x015b, 0x02c7,
+ 0x00b8, 0x0161, 0x015f, 0x0165, 0x017a, 0x02dd, 0x017e, 0x017c,
+ /* 0xc0 */
+ 0x0154, 0x00c1, 0x00c2, 0x0102, 0x00c4, 0x0139, 0x0106, 0x00c7,
+ 0x010c, 0x00c9, 0x0118, 0x00cb, 0x011a, 0x00cd, 0x00ce, 0x010e,
+ /* 0xd0 */
+ 0x0110, 0x0143, 0x0147, 0x00d3, 0x00d4, 0x0150, 0x00d6, 0x00d7,
+ 0x0158, 0x016e, 0x00da, 0x0170, 0x00dc, 0x00dd, 0x0162, 0x00df,
+ /* 0xe0 */
+ 0x0155, 0x00e1, 0x00e2, 0x0103, 0x00e4, 0x013a, 0x0107, 0x00e7,
+ 0x010d, 0x00e9, 0x0119, 0x00eb, 0x011b, 0x00ed, 0x00ee, 0x010f,
+ /* 0xf0 */
+ 0x0111, 0x0144, 0x0148, 0x00f3, 0x00f4, 0x0151, 0x00f6, 0x00f7,
+ 0x0159, 0x016f, 0x00fa, 0x0171, 0x00fc, 0x00fd, 0x0163, 0x02d9,
+};
+
+static int
+iso8859_2_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n)
+{
+ unsigned char c = *s;
+ if (c < 0xa0)
+ *pwc = (ucs4_t) c;
+ else
+ *pwc = (ucs4_t) iso8859_2_2uni[c-0xa0];
+ return 1;
+}
+
+static const unsigned char iso8859_2_page00[224] = {
+ 0xa0, 0x00, 0x00, 0x00, 0xa4, 0x00, 0x00, 0xa7, /* 0xa0-0xa7 */
+ 0xa8, 0x00, 0x00, 0x00, 0x00, 0xad, 0x00, 0x00, /* 0xa8-0xaf */
+ 0xb0, 0x00, 0x00, 0x00, 0xb4, 0x00, 0x00, 0x00, /* 0xb0-0xb7 */
+ 0xb8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xb8-0xbf */
+ 0x00, 0xc1, 0xc2, 0x00, 0xc4, 0x00, 0x00, 0xc7, /* 0xc0-0xc7 */
+ 0x00, 0xc9, 0x00, 0xcb, 0x00, 0xcd, 0xce, 0x00, /* 0xc8-0xcf */
+ 0x00, 0x00, 0x00, 0xd3, 0xd4, 0x00, 0xd6, 0xd7, /* 0xd0-0xd7 */
+ 0x00, 0x00, 0xda, 0x00, 0xdc, 0xdd, 0x00, 0xdf, /* 0xd8-0xdf */
+ 0x00, 0xe1, 0xe2, 0x00, 0xe4, 0x00, 0x00, 0xe7, /* 0xe0-0xe7 */
+ 0x00, 0xe9, 0x00, 0xeb, 0x00, 0xed, 0xee, 0x00, /* 0xe8-0xef */
+ 0x00, 0x00, 0x00, 0xf3, 0xf4, 0x00, 0xf6, 0xf7, /* 0xf0-0xf7 */
+ 0x00, 0x00, 0xfa, 0x00, 0xfc, 0xfd, 0x00, 0x00, /* 0xf8-0xff */
+ /* 0x0100 */
+ 0x00, 0x00, 0xc3, 0xe3, 0xa1, 0xb1, 0xc6, 0xe6, /* 0x00-0x07 */
+ 0x00, 0x00, 0x00, 0x00, 0xc8, 0xe8, 0xcf, 0xef, /* 0x08-0x0f */
+ 0xd0, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x10-0x17 */
+ 0xca, 0xea, 0xcc, 0xec, 0x00, 0x00, 0x00, 0x00, /* 0x18-0x1f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x20-0x27 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x28-0x2f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x30-0x37 */
+ 0x00, 0xc5, 0xe5, 0x00, 0x00, 0xa5, 0xb5, 0x00, /* 0x38-0x3f */
+ 0x00, 0xa3, 0xb3, 0xd1, 0xf1, 0x00, 0x00, 0xd2, /* 0x40-0x47 */
+ 0xf2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x48-0x4f */
+ 0xd5, 0xf5, 0x00, 0x00, 0xc0, 0xe0, 0x00, 0x00, /* 0x50-0x57 */
+ 0xd8, 0xf8, 0xa6, 0xb6, 0x00, 0x00, 0xaa, 0xba, /* 0x58-0x5f */
+ 0xa9, 0xb9, 0xde, 0xfe, 0xab, 0xbb, 0x00, 0x00, /* 0x60-0x67 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd9, 0xf9, /* 0x68-0x6f */
+ 0xdb, 0xfb, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x70-0x77 */
+ 0x00, 0xac, 0xbc, 0xaf, 0xbf, 0xae, 0xbe, 0x00, /* 0x78-0x7f */
+};
+static const unsigned char iso8859_2_page02[32] = {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb7, /* 0xc0-0xc7 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xc8-0xcf */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xd0-0xd7 */
+ 0xa2, 0xff, 0x00, 0xb2, 0x00, 0xbd, 0x00, 0x00, /* 0xd8-0xdf */
+};
+
+static int
+iso8859_2_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n)
+{
+ unsigned char c = 0;
+ if (wc < 0x00a0) {
+ *r = wc;
+ return 1;
+ }
+ else if (wc >= 0x00a0 && wc < 0x0180)
+ c = iso8859_2_page00[wc-0x00a0];
+ else if (wc >= 0x02c0 && wc < 0x02e0)
+ c = iso8859_2_page02[wc-0x02c0];
+ if (c != 0) {
+ *r = c;
+ return 1;
+ }
+ return RET_ILSEQ;
+}
diff --git a/libX11/src/xlibi18n/lcUniConv/iso8859_3.h b/libX11/src/xlibi18n/lcUniConv/iso8859_3.h
index 55217e5b8..2282f19cf 100644
--- a/libX11/src/xlibi18n/lcUniConv/iso8859_3.h
+++ b/libX11/src/xlibi18n/lcUniConv/iso8859_3.h
@@ -1,99 +1,99 @@
-
-/*
- * ISO-8859-3
- */
-
-static const unsigned short iso8859_3_2uni[96] = {
- /* 0xa0 */
- 0x00a0, 0x0126, 0x02d8, 0x00a3, 0x00a4, 0xfffd, 0x0124, 0x00a7,
- 0x00a8, 0x0130, 0x015e, 0x011e, 0x0134, 0x00ad, 0xfffd, 0x017b,
- /* 0xb0 */
- 0x00b0, 0x0127, 0x00b2, 0x00b3, 0x00b4, 0x00b5, 0x0125, 0x00b7,
- 0x00b8, 0x0131, 0x015f, 0x011f, 0x0135, 0x00bd, 0xfffd, 0x017c,
- /* 0xc0 */
- 0x00c0, 0x00c1, 0x00c2, 0xfffd, 0x00c4, 0x010a, 0x0108, 0x00c7,
- 0x00c8, 0x00c9, 0x00ca, 0x00cb, 0x00cc, 0x00cd, 0x00ce, 0x00cf,
- /* 0xd0 */
- 0xfffd, 0x00d1, 0x00d2, 0x00d3, 0x00d4, 0x0120, 0x00d6, 0x00d7,
- 0x011c, 0x00d9, 0x00da, 0x00db, 0x00dc, 0x016c, 0x015c, 0x00df,
- /* 0xe0 */
- 0x00e0, 0x00e1, 0x00e2, 0xfffd, 0x00e4, 0x010b, 0x0109, 0x00e7,
- 0x00e8, 0x00e9, 0x00ea, 0x00eb, 0x00ec, 0x00ed, 0x00ee, 0x00ef,
- /* 0xf0 */
- 0xfffd, 0x00f1, 0x00f2, 0x00f3, 0x00f4, 0x0121, 0x00f6, 0x00f7,
- 0x011d, 0x00f9, 0x00fa, 0x00fb, 0x00fc, 0x016d, 0x015d, 0x02d9,
-};
-
-static int
-iso8859_3_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n)
-{
- unsigned char c = *s;
- if (c < 0xa0) {
- *pwc = (ucs4_t) c;
- return 1;
- }
- else {
- unsigned short wc = iso8859_3_2uni[c-0xa0];
- if (wc != 0xfffd) {
- *pwc = (ucs4_t) wc;
- return 1;
- }
- }
- return RET_ILSEQ;
-}
-
-static const unsigned char iso8859_3_page00[96] = {
- 0xa0, 0x00, 0x00, 0xa3, 0xa4, 0x00, 0x00, 0xa7, /* 0xa0-0xa7 */
- 0xa8, 0x00, 0x00, 0x00, 0x00, 0xad, 0x00, 0x00, /* 0xa8-0xaf */
- 0xb0, 0x00, 0xb2, 0xb3, 0xb4, 0xb5, 0x00, 0xb7, /* 0xb0-0xb7 */
- 0xb8, 0x00, 0x00, 0x00, 0x00, 0xbd, 0x00, 0x00, /* 0xb8-0xbf */
- 0xc0, 0xc1, 0xc2, 0x00, 0xc4, 0x00, 0x00, 0xc7, /* 0xc0-0xc7 */
- 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, /* 0xc8-0xcf */
- 0x00, 0xd1, 0xd2, 0xd3, 0xd4, 0x00, 0xd6, 0xd7, /* 0xd0-0xd7 */
- 0x00, 0xd9, 0xda, 0xdb, 0xdc, 0x00, 0x00, 0xdf, /* 0xd8-0xdf */
- 0xe0, 0xe1, 0xe2, 0x00, 0xe4, 0x00, 0x00, 0xe7, /* 0xe0-0xe7 */
- 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef, /* 0xe8-0xef */
- 0x00, 0xf1, 0xf2, 0xf3, 0xf4, 0x00, 0xf6, 0xf7, /* 0xf0-0xf7 */
- 0x00, 0xf9, 0xfa, 0xfb, 0xfc, 0x00, 0x00, 0x00, /* 0xf8-0xff */
-};
-static const unsigned char iso8859_3_page01[120] = {
- 0xc6, 0xe6, 0xc5, 0xe5, 0x00, 0x00, 0x00, 0x00, /* 0x08-0x0f */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x10-0x17 */
- 0x00, 0x00, 0x00, 0x00, 0xd8, 0xf8, 0xab, 0xbb, /* 0x18-0x1f */
- 0xd5, 0xf5, 0x00, 0x00, 0xa6, 0xb6, 0xa1, 0xb1, /* 0x20-0x27 */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x28-0x2f */
- 0xa9, 0xb9, 0x00, 0x00, 0xac, 0xbc, 0x00, 0x00, /* 0x30-0x37 */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x38-0x3f */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x40-0x47 */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x48-0x4f */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x50-0x57 */
- 0x00, 0x00, 0x00, 0x00, 0xde, 0xfe, 0xaa, 0xba, /* 0x58-0x5f */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x60-0x67 */
- 0x00, 0x00, 0x00, 0x00, 0xdd, 0xfd, 0x00, 0x00, /* 0x68-0x6f */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x70-0x77 */
- 0x00, 0x00, 0x00, 0xaf, 0xbf, 0x00, 0x00, 0x00, /* 0x78-0x7f */
-};
-static const unsigned char iso8859_3_page02[8] = {
- 0xa2, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xd8-0xdf */
-};
-
-static int
-iso8859_3_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n)
-{
- unsigned char c = 0;
- if (wc < 0x00a0) {
- *r = wc;
- return 1;
- }
- else if (wc >= 0x00a0 && wc < 0x0100)
- c = iso8859_3_page00[wc-0x00a0];
- else if (wc >= 0x0108 && wc < 0x0180)
- c = iso8859_3_page01[wc-0x0108];
- else if (wc >= 0x02d8 && wc < 0x02e0)
- c = iso8859_3_page02[wc-0x02d8];
- if (c != 0) {
- *r = c;
- return 1;
- }
- return RET_ILSEQ;
-}
+
+/*
+ * ISO-8859-3
+ */
+
+static const unsigned short iso8859_3_2uni[96] = {
+ /* 0xa0 */
+ 0x00a0, 0x0126, 0x02d8, 0x00a3, 0x00a4, 0xfffd, 0x0124, 0x00a7,
+ 0x00a8, 0x0130, 0x015e, 0x011e, 0x0134, 0x00ad, 0xfffd, 0x017b,
+ /* 0xb0 */
+ 0x00b0, 0x0127, 0x00b2, 0x00b3, 0x00b4, 0x00b5, 0x0125, 0x00b7,
+ 0x00b8, 0x0131, 0x015f, 0x011f, 0x0135, 0x00bd, 0xfffd, 0x017c,
+ /* 0xc0 */
+ 0x00c0, 0x00c1, 0x00c2, 0xfffd, 0x00c4, 0x010a, 0x0108, 0x00c7,
+ 0x00c8, 0x00c9, 0x00ca, 0x00cb, 0x00cc, 0x00cd, 0x00ce, 0x00cf,
+ /* 0xd0 */
+ 0xfffd, 0x00d1, 0x00d2, 0x00d3, 0x00d4, 0x0120, 0x00d6, 0x00d7,
+ 0x011c, 0x00d9, 0x00da, 0x00db, 0x00dc, 0x016c, 0x015c, 0x00df,
+ /* 0xe0 */
+ 0x00e0, 0x00e1, 0x00e2, 0xfffd, 0x00e4, 0x010b, 0x0109, 0x00e7,
+ 0x00e8, 0x00e9, 0x00ea, 0x00eb, 0x00ec, 0x00ed, 0x00ee, 0x00ef,
+ /* 0xf0 */
+ 0xfffd, 0x00f1, 0x00f2, 0x00f3, 0x00f4, 0x0121, 0x00f6, 0x00f7,
+ 0x011d, 0x00f9, 0x00fa, 0x00fb, 0x00fc, 0x016d, 0x015d, 0x02d9,
+};
+
+static int
+iso8859_3_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n)
+{
+ unsigned char c = *s;
+ if (c < 0xa0) {
+ *pwc = (ucs4_t) c;
+ return 1;
+ }
+ else {
+ unsigned short wc = iso8859_3_2uni[c-0xa0];
+ if (wc != 0xfffd) {
+ *pwc = (ucs4_t) wc;
+ return 1;
+ }
+ }
+ return RET_ILSEQ;
+}
+
+static const unsigned char iso8859_3_page00[96] = {
+ 0xa0, 0x00, 0x00, 0xa3, 0xa4, 0x00, 0x00, 0xa7, /* 0xa0-0xa7 */
+ 0xa8, 0x00, 0x00, 0x00, 0x00, 0xad, 0x00, 0x00, /* 0xa8-0xaf */
+ 0xb0, 0x00, 0xb2, 0xb3, 0xb4, 0xb5, 0x00, 0xb7, /* 0xb0-0xb7 */
+ 0xb8, 0x00, 0x00, 0x00, 0x00, 0xbd, 0x00, 0x00, /* 0xb8-0xbf */
+ 0xc0, 0xc1, 0xc2, 0x00, 0xc4, 0x00, 0x00, 0xc7, /* 0xc0-0xc7 */
+ 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, /* 0xc8-0xcf */
+ 0x00, 0xd1, 0xd2, 0xd3, 0xd4, 0x00, 0xd6, 0xd7, /* 0xd0-0xd7 */
+ 0x00, 0xd9, 0xda, 0xdb, 0xdc, 0x00, 0x00, 0xdf, /* 0xd8-0xdf */
+ 0xe0, 0xe1, 0xe2, 0x00, 0xe4, 0x00, 0x00, 0xe7, /* 0xe0-0xe7 */
+ 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef, /* 0xe8-0xef */
+ 0x00, 0xf1, 0xf2, 0xf3, 0xf4, 0x00, 0xf6, 0xf7, /* 0xf0-0xf7 */
+ 0x00, 0xf9, 0xfa, 0xfb, 0xfc, 0x00, 0x00, 0x00, /* 0xf8-0xff */
+};
+static const unsigned char iso8859_3_page01[120] = {
+ 0xc6, 0xe6, 0xc5, 0xe5, 0x00, 0x00, 0x00, 0x00, /* 0x08-0x0f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x10-0x17 */
+ 0x00, 0x00, 0x00, 0x00, 0xd8, 0xf8, 0xab, 0xbb, /* 0x18-0x1f */
+ 0xd5, 0xf5, 0x00, 0x00, 0xa6, 0xb6, 0xa1, 0xb1, /* 0x20-0x27 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x28-0x2f */
+ 0xa9, 0xb9, 0x00, 0x00, 0xac, 0xbc, 0x00, 0x00, /* 0x30-0x37 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x38-0x3f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x40-0x47 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x48-0x4f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x50-0x57 */
+ 0x00, 0x00, 0x00, 0x00, 0xde, 0xfe, 0xaa, 0xba, /* 0x58-0x5f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x60-0x67 */
+ 0x00, 0x00, 0x00, 0x00, 0xdd, 0xfd, 0x00, 0x00, /* 0x68-0x6f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x70-0x77 */
+ 0x00, 0x00, 0x00, 0xaf, 0xbf, 0x00, 0x00, 0x00, /* 0x78-0x7f */
+};
+static const unsigned char iso8859_3_page02[8] = {
+ 0xa2, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xd8-0xdf */
+};
+
+static int
+iso8859_3_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n)
+{
+ unsigned char c = 0;
+ if (wc < 0x00a0) {
+ *r = wc;
+ return 1;
+ }
+ else if (wc >= 0x00a0 && wc < 0x0100)
+ c = iso8859_3_page00[wc-0x00a0];
+ else if (wc >= 0x0108 && wc < 0x0180)
+ c = iso8859_3_page01[wc-0x0108];
+ else if (wc >= 0x02d8 && wc < 0x02e0)
+ c = iso8859_3_page02[wc-0x02d8];
+ if (c != 0) {
+ *r = c;
+ return 1;
+ }
+ return RET_ILSEQ;
+}
diff --git a/libX11/src/xlibi18n/lcUniConv/iso8859_4.h b/libX11/src/xlibi18n/lcUniConv/iso8859_4.h
index e08a37712..878a7e44a 100644
--- a/libX11/src/xlibi18n/lcUniConv/iso8859_4.h
+++ b/libX11/src/xlibi18n/lcUniConv/iso8859_4.h
@@ -1,93 +1,93 @@
-
-/*
- * ISO-8859-4
- */
-
-static const unsigned short iso8859_4_2uni[96] = {
- /* 0xa0 */
- 0x00a0, 0x0104, 0x0138, 0x0156, 0x00a4, 0x0128, 0x013b, 0x00a7,
- 0x00a8, 0x0160, 0x0112, 0x0122, 0x0166, 0x00ad, 0x017d, 0x00af,
- /* 0xb0 */
- 0x00b0, 0x0105, 0x02db, 0x0157, 0x00b4, 0x0129, 0x013c, 0x02c7,
- 0x00b8, 0x0161, 0x0113, 0x0123, 0x0167, 0x014a, 0x017e, 0x014b,
- /* 0xc0 */
- 0x0100, 0x00c1, 0x00c2, 0x00c3, 0x00c4, 0x00c5, 0x00c6, 0x012e,
- 0x010c, 0x00c9, 0x0118, 0x00cb, 0x0116, 0x00cd, 0x00ce, 0x012a,
- /* 0xd0 */
- 0x0110, 0x0145, 0x014c, 0x0136, 0x00d4, 0x00d5, 0x00d6, 0x00d7,
- 0x00d8, 0x0172, 0x00da, 0x00db, 0x00dc, 0x0168, 0x016a, 0x00df,
- /* 0xe0 */
- 0x0101, 0x00e1, 0x00e2, 0x00e3, 0x00e4, 0x00e5, 0x00e6, 0x012f,
- 0x010d, 0x00e9, 0x0119, 0x00eb, 0x0117, 0x00ed, 0x00ee, 0x012b,
- /* 0xf0 */
- 0x0111, 0x0146, 0x014d, 0x0137, 0x00f4, 0x00f5, 0x00f6, 0x00f7,
- 0x00f8, 0x0173, 0x00fa, 0x00fb, 0x00fc, 0x0169, 0x016b, 0x02d9,
-};
-
-static int
-iso8859_4_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n)
-{
- unsigned char c = *s;
- if (c < 0xa0)
- *pwc = (ucs4_t) c;
- else
- *pwc = (ucs4_t) iso8859_4_2uni[c-0xa0];
- return 1;
-}
-
-static const unsigned char iso8859_4_page00[224] = {
- 0xa0, 0x00, 0x00, 0x00, 0xa4, 0x00, 0x00, 0xa7, /* 0xa0-0xa7 */
- 0xa8, 0x00, 0x00, 0x00, 0x00, 0xad, 0x00, 0xaf, /* 0xa8-0xaf */
- 0xb0, 0x00, 0x00, 0x00, 0xb4, 0x00, 0x00, 0x00, /* 0xb0-0xb7 */
- 0xb8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xb8-0xbf */
- 0x00, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0x00, /* 0xc0-0xc7 */
- 0x00, 0xc9, 0x00, 0xcb, 0x00, 0xcd, 0xce, 0x00, /* 0xc8-0xcf */
- 0x00, 0x00, 0x00, 0x00, 0xd4, 0xd5, 0xd6, 0xd7, /* 0xd0-0xd7 */
- 0xd8, 0x00, 0xda, 0xdb, 0xdc, 0x00, 0x00, 0xdf, /* 0xd8-0xdf */
- 0x00, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0x00, /* 0xe0-0xe7 */
- 0x00, 0xe9, 0x00, 0xeb, 0x00, 0xed, 0xee, 0x00, /* 0xe8-0xef */
- 0x00, 0x00, 0x00, 0x00, 0xf4, 0xf5, 0xf6, 0xf7, /* 0xf0-0xf7 */
- 0xf8, 0x00, 0xfa, 0xfb, 0xfc, 0x00, 0x00, 0x00, /* 0xf8-0xff */
- /* 0x0100 */
- 0xc0, 0xe0, 0x00, 0x00, 0xa1, 0xb1, 0x00, 0x00, /* 0x00-0x07 */
- 0x00, 0x00, 0x00, 0x00, 0xc8, 0xe8, 0x00, 0x00, /* 0x08-0x0f */
- 0xd0, 0xf0, 0xaa, 0xba, 0x00, 0x00, 0xcc, 0xec, /* 0x10-0x17 */
- 0xca, 0xea, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x18-0x1f */
- 0x00, 0x00, 0xab, 0xbb, 0x00, 0x00, 0x00, 0x00, /* 0x20-0x27 */
- 0xa5, 0xb5, 0xcf, 0xef, 0x00, 0x00, 0xc7, 0xe7, /* 0x28-0x2f */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd3, 0xf3, /* 0x30-0x37 */
- 0xa2, 0x00, 0x00, 0xa6, 0xb6, 0x00, 0x00, 0x00, /* 0x38-0x3f */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0xd1, 0xf1, 0x00, /* 0x40-0x47 */
- 0x00, 0x00, 0xbd, 0xbf, 0xd2, 0xf2, 0x00, 0x00, /* 0x48-0x4f */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa3, 0xb3, /* 0x50-0x57 */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x58-0x5f */
- 0xa9, 0xb9, 0x00, 0x00, 0x00, 0x00, 0xac, 0xbc, /* 0x60-0x67 */
- 0xdd, 0xfd, 0xde, 0xfe, 0x00, 0x00, 0x00, 0x00, /* 0x68-0x6f */
- 0x00, 0x00, 0xd9, 0xf9, 0x00, 0x00, 0x00, 0x00, /* 0x70-0x77 */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0xae, 0xbe, 0x00, /* 0x78-0x7f */
-};
-static const unsigned char iso8859_4_page02[32] = {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb7, /* 0xc0-0xc7 */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xc8-0xcf */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xd0-0xd7 */
- 0x00, 0xff, 0x00, 0xb2, 0x00, 0x00, 0x00, 0x00, /* 0xd8-0xdf */
-};
-
-static int
-iso8859_4_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n)
-{
- unsigned char c = 0;
- if (wc < 0x00a0) {
- *r = wc;
- return 1;
- }
- else if (wc >= 0x00a0 && wc < 0x0180)
- c = iso8859_4_page00[wc-0x00a0];
- else if (wc >= 0x02c0 && wc < 0x02e0)
- c = iso8859_4_page02[wc-0x02c0];
- if (c != 0) {
- *r = c;
- return 1;
- }
- return RET_ILSEQ;
-}
+
+/*
+ * ISO-8859-4
+ */
+
+static const unsigned short iso8859_4_2uni[96] = {
+ /* 0xa0 */
+ 0x00a0, 0x0104, 0x0138, 0x0156, 0x00a4, 0x0128, 0x013b, 0x00a7,
+ 0x00a8, 0x0160, 0x0112, 0x0122, 0x0166, 0x00ad, 0x017d, 0x00af,
+ /* 0xb0 */
+ 0x00b0, 0x0105, 0x02db, 0x0157, 0x00b4, 0x0129, 0x013c, 0x02c7,
+ 0x00b8, 0x0161, 0x0113, 0x0123, 0x0167, 0x014a, 0x017e, 0x014b,
+ /* 0xc0 */
+ 0x0100, 0x00c1, 0x00c2, 0x00c3, 0x00c4, 0x00c5, 0x00c6, 0x012e,
+ 0x010c, 0x00c9, 0x0118, 0x00cb, 0x0116, 0x00cd, 0x00ce, 0x012a,
+ /* 0xd0 */
+ 0x0110, 0x0145, 0x014c, 0x0136, 0x00d4, 0x00d5, 0x00d6, 0x00d7,
+ 0x00d8, 0x0172, 0x00da, 0x00db, 0x00dc, 0x0168, 0x016a, 0x00df,
+ /* 0xe0 */
+ 0x0101, 0x00e1, 0x00e2, 0x00e3, 0x00e4, 0x00e5, 0x00e6, 0x012f,
+ 0x010d, 0x00e9, 0x0119, 0x00eb, 0x0117, 0x00ed, 0x00ee, 0x012b,
+ /* 0xf0 */
+ 0x0111, 0x0146, 0x014d, 0x0137, 0x00f4, 0x00f5, 0x00f6, 0x00f7,
+ 0x00f8, 0x0173, 0x00fa, 0x00fb, 0x00fc, 0x0169, 0x016b, 0x02d9,
+};
+
+static int
+iso8859_4_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n)
+{
+ unsigned char c = *s;
+ if (c < 0xa0)
+ *pwc = (ucs4_t) c;
+ else
+ *pwc = (ucs4_t) iso8859_4_2uni[c-0xa0];
+ return 1;
+}
+
+static const unsigned char iso8859_4_page00[224] = {
+ 0xa0, 0x00, 0x00, 0x00, 0xa4, 0x00, 0x00, 0xa7, /* 0xa0-0xa7 */
+ 0xa8, 0x00, 0x00, 0x00, 0x00, 0xad, 0x00, 0xaf, /* 0xa8-0xaf */
+ 0xb0, 0x00, 0x00, 0x00, 0xb4, 0x00, 0x00, 0x00, /* 0xb0-0xb7 */
+ 0xb8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xb8-0xbf */
+ 0x00, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0x00, /* 0xc0-0xc7 */
+ 0x00, 0xc9, 0x00, 0xcb, 0x00, 0xcd, 0xce, 0x00, /* 0xc8-0xcf */
+ 0x00, 0x00, 0x00, 0x00, 0xd4, 0xd5, 0xd6, 0xd7, /* 0xd0-0xd7 */
+ 0xd8, 0x00, 0xda, 0xdb, 0xdc, 0x00, 0x00, 0xdf, /* 0xd8-0xdf */
+ 0x00, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0x00, /* 0xe0-0xe7 */
+ 0x00, 0xe9, 0x00, 0xeb, 0x00, 0xed, 0xee, 0x00, /* 0xe8-0xef */
+ 0x00, 0x00, 0x00, 0x00, 0xf4, 0xf5, 0xf6, 0xf7, /* 0xf0-0xf7 */
+ 0xf8, 0x00, 0xfa, 0xfb, 0xfc, 0x00, 0x00, 0x00, /* 0xf8-0xff */
+ /* 0x0100 */
+ 0xc0, 0xe0, 0x00, 0x00, 0xa1, 0xb1, 0x00, 0x00, /* 0x00-0x07 */
+ 0x00, 0x00, 0x00, 0x00, 0xc8, 0xe8, 0x00, 0x00, /* 0x08-0x0f */
+ 0xd0, 0xf0, 0xaa, 0xba, 0x00, 0x00, 0xcc, 0xec, /* 0x10-0x17 */
+ 0xca, 0xea, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x18-0x1f */
+ 0x00, 0x00, 0xab, 0xbb, 0x00, 0x00, 0x00, 0x00, /* 0x20-0x27 */
+ 0xa5, 0xb5, 0xcf, 0xef, 0x00, 0x00, 0xc7, 0xe7, /* 0x28-0x2f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd3, 0xf3, /* 0x30-0x37 */
+ 0xa2, 0x00, 0x00, 0xa6, 0xb6, 0x00, 0x00, 0x00, /* 0x38-0x3f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0xd1, 0xf1, 0x00, /* 0x40-0x47 */
+ 0x00, 0x00, 0xbd, 0xbf, 0xd2, 0xf2, 0x00, 0x00, /* 0x48-0x4f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa3, 0xb3, /* 0x50-0x57 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x58-0x5f */
+ 0xa9, 0xb9, 0x00, 0x00, 0x00, 0x00, 0xac, 0xbc, /* 0x60-0x67 */
+ 0xdd, 0xfd, 0xde, 0xfe, 0x00, 0x00, 0x00, 0x00, /* 0x68-0x6f */
+ 0x00, 0x00, 0xd9, 0xf9, 0x00, 0x00, 0x00, 0x00, /* 0x70-0x77 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0xae, 0xbe, 0x00, /* 0x78-0x7f */
+};
+static const unsigned char iso8859_4_page02[32] = {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb7, /* 0xc0-0xc7 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xc8-0xcf */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xd0-0xd7 */
+ 0x00, 0xff, 0x00, 0xb2, 0x00, 0x00, 0x00, 0x00, /* 0xd8-0xdf */
+};
+
+static int
+iso8859_4_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n)
+{
+ unsigned char c = 0;
+ if (wc < 0x00a0) {
+ *r = wc;
+ return 1;
+ }
+ else if (wc >= 0x00a0 && wc < 0x0180)
+ c = iso8859_4_page00[wc-0x00a0];
+ else if (wc >= 0x02c0 && wc < 0x02e0)
+ c = iso8859_4_page02[wc-0x02c0];
+ if (c != 0) {
+ *r = c;
+ return 1;
+ }
+ return RET_ILSEQ;
+}
diff --git a/libX11/src/xlibi18n/lcUniConv/iso8859_5.h b/libX11/src/xlibi18n/lcUniConv/iso8859_5.h
index 3d7c3323d..cdd6c45db 100644
--- a/libX11/src/xlibi18n/lcUniConv/iso8859_5.h
+++ b/libX11/src/xlibi18n/lcUniConv/iso8859_5.h
@@ -1,76 +1,76 @@
-
-/*
- * ISO-8859-5
- */
-
-static const unsigned short iso8859_5_2uni[96] = {
- /* 0xa0 */
- 0x00a0, 0x0401, 0x0402, 0x0403, 0x0404, 0x0405, 0x0406, 0x0407,
- 0x0408, 0x0409, 0x040a, 0x040b, 0x040c, 0x00ad, 0x040e, 0x040f,
- /* 0xb0 */
- 0x0410, 0x0411, 0x0412, 0x0413, 0x0414, 0x0415, 0x0416, 0x0417,
- 0x0418, 0x0419, 0x041a, 0x041b, 0x041c, 0x041d, 0x041e, 0x041f,
- /* 0xc0 */
- 0x0420, 0x0421, 0x0422, 0x0423, 0x0424, 0x0425, 0x0426, 0x0427,
- 0x0428, 0x0429, 0x042a, 0x042b, 0x042c, 0x042d, 0x042e, 0x042f,
- /* 0xd0 */
- 0x0430, 0x0431, 0x0432, 0x0433, 0x0434, 0x0435, 0x0436, 0x0437,
- 0x0438, 0x0439, 0x043a, 0x043b, 0x043c, 0x043d, 0x043e, 0x043f,
- /* 0xe0 */
- 0x0440, 0x0441, 0x0442, 0x0443, 0x0444, 0x0445, 0x0446, 0x0447,
- 0x0448, 0x0449, 0x044a, 0x044b, 0x044c, 0x044d, 0x044e, 0x044f,
- /* 0xf0 */
- 0x2116, 0x0451, 0x0452, 0x0453, 0x0454, 0x0455, 0x0456, 0x0457,
- 0x0458, 0x0459, 0x045a, 0x045b, 0x045c, 0x00a7, 0x045e, 0x045f,
-};
-
-static int
-iso8859_5_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n)
-{
- unsigned char c = *s;
- if (c < 0xa0)
- *pwc = (ucs4_t) c;
- else
- *pwc = (ucs4_t) iso8859_5_2uni[c-0xa0];
- return 1;
-}
-
-static const unsigned char iso8859_5_page00[16] = {
- 0xa0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfd, /* 0xa0-0xa7 */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0xad, 0x00, 0x00, /* 0xa8-0xaf */
-};
-static const unsigned char iso8859_5_page04[96] = {
- 0x00, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7, /* 0x00-0x07 */
- 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0x00, 0xae, 0xaf, /* 0x08-0x0f */
- 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7, /* 0x10-0x17 */
- 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf, /* 0x18-0x1f */
- 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, /* 0x20-0x27 */
- 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, /* 0x28-0x2f */
- 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, /* 0x30-0x37 */
- 0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, 0xde, 0xdf, /* 0x38-0x3f */
- 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, /* 0x40-0x47 */
- 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef, /* 0x48-0x4f */
- 0x00, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, /* 0x50-0x57 */
- 0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0x00, 0xfe, 0xff, /* 0x58-0x5f */
-};
-
-static int
-iso8859_5_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n)
-{
- unsigned char c = 0;
- if (wc < 0x00a0) {
- *r = wc;
- return 1;
- }
- else if (wc >= 0x00a0 && wc < 0x00b0)
- c = iso8859_5_page00[wc-0x00a0];
- else if (wc >= 0x0400 && wc < 0x0460)
- c = iso8859_5_page04[wc-0x0400];
- else if (wc == 0x2116)
- c = 0xf0;
- if (c != 0) {
- *r = c;
- return 1;
- }
- return RET_ILSEQ;
-}
+
+/*
+ * ISO-8859-5
+ */
+
+static const unsigned short iso8859_5_2uni[96] = {
+ /* 0xa0 */
+ 0x00a0, 0x0401, 0x0402, 0x0403, 0x0404, 0x0405, 0x0406, 0x0407,
+ 0x0408, 0x0409, 0x040a, 0x040b, 0x040c, 0x00ad, 0x040e, 0x040f,
+ /* 0xb0 */
+ 0x0410, 0x0411, 0x0412, 0x0413, 0x0414, 0x0415, 0x0416, 0x0417,
+ 0x0418, 0x0419, 0x041a, 0x041b, 0x041c, 0x041d, 0x041e, 0x041f,
+ /* 0xc0 */
+ 0x0420, 0x0421, 0x0422, 0x0423, 0x0424, 0x0425, 0x0426, 0x0427,
+ 0x0428, 0x0429, 0x042a, 0x042b, 0x042c, 0x042d, 0x042e, 0x042f,
+ /* 0xd0 */
+ 0x0430, 0x0431, 0x0432, 0x0433, 0x0434, 0x0435, 0x0436, 0x0437,
+ 0x0438, 0x0439, 0x043a, 0x043b, 0x043c, 0x043d, 0x043e, 0x043f,
+ /* 0xe0 */
+ 0x0440, 0x0441, 0x0442, 0x0443, 0x0444, 0x0445, 0x0446, 0x0447,
+ 0x0448, 0x0449, 0x044a, 0x044b, 0x044c, 0x044d, 0x044e, 0x044f,
+ /* 0xf0 */
+ 0x2116, 0x0451, 0x0452, 0x0453, 0x0454, 0x0455, 0x0456, 0x0457,
+ 0x0458, 0x0459, 0x045a, 0x045b, 0x045c, 0x00a7, 0x045e, 0x045f,
+};
+
+static int
+iso8859_5_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n)
+{
+ unsigned char c = *s;
+ if (c < 0xa0)
+ *pwc = (ucs4_t) c;
+ else
+ *pwc = (ucs4_t) iso8859_5_2uni[c-0xa0];
+ return 1;
+}
+
+static const unsigned char iso8859_5_page00[16] = {
+ 0xa0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfd, /* 0xa0-0xa7 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0xad, 0x00, 0x00, /* 0xa8-0xaf */
+};
+static const unsigned char iso8859_5_page04[96] = {
+ 0x00, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7, /* 0x00-0x07 */
+ 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0x00, 0xae, 0xaf, /* 0x08-0x0f */
+ 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7, /* 0x10-0x17 */
+ 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf, /* 0x18-0x1f */
+ 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, /* 0x20-0x27 */
+ 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, /* 0x28-0x2f */
+ 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, /* 0x30-0x37 */
+ 0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, 0xde, 0xdf, /* 0x38-0x3f */
+ 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, /* 0x40-0x47 */
+ 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef, /* 0x48-0x4f */
+ 0x00, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, /* 0x50-0x57 */
+ 0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0x00, 0xfe, 0xff, /* 0x58-0x5f */
+};
+
+static int
+iso8859_5_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n)
+{
+ unsigned char c = 0;
+ if (wc < 0x00a0) {
+ *r = wc;
+ return 1;
+ }
+ else if (wc >= 0x00a0 && wc < 0x00b0)
+ c = iso8859_5_page00[wc-0x00a0];
+ else if (wc >= 0x0400 && wc < 0x0460)
+ c = iso8859_5_page04[wc-0x0400];
+ else if (wc == 0x2116)
+ c = 0xf0;
+ if (c != 0) {
+ *r = c;
+ return 1;
+ }
+ return RET_ILSEQ;
+}
diff --git a/libX11/src/xlibi18n/lcUniConv/iso8859_6.h b/libX11/src/xlibi18n/lcUniConv/iso8859_6.h
index 7b4b3b08a..4c80a64f5 100644
--- a/libX11/src/xlibi18n/lcUniConv/iso8859_6.h
+++ b/libX11/src/xlibi18n/lcUniConv/iso8859_6.h
@@ -1,79 +1,79 @@
-
-/*
- * ISO-8859-6
- */
-
-static const unsigned short iso8859_6_2uni[96] = {
- /* 0xa0 */
- 0x00a0, 0xfffd, 0xfffd, 0xfffd, 0x00a4, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x060c, 0x00ad, 0xfffd, 0xfffd,
- /* 0xb0 */
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0x061b, 0xfffd, 0xfffd, 0xfffd, 0x061f,
- /* 0xc0 */
- 0xfffd, 0x0621, 0x0622, 0x0623, 0x0624, 0x0625, 0x0626, 0x0627,
- 0x0628, 0x0629, 0x062a, 0x062b, 0x062c, 0x062d, 0x062e, 0x062f,
- /* 0xd0 */
- 0x0630, 0x0631, 0x0632, 0x0633, 0x0634, 0x0635, 0x0636, 0x0637,
- 0x0638, 0x0639, 0x063a, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- /* 0xe0 */
- 0x0640, 0x0641, 0x0642, 0x0643, 0x0644, 0x0645, 0x0646, 0x0647,
- 0x0648, 0x0649, 0x064a, 0x064b, 0x064c, 0x064d, 0x064e, 0x064f,
- /* 0xf0 */
- 0x0650, 0x0651, 0x0652, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
-};
-
-static int
-iso8859_6_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n)
-{
- unsigned char c = *s;
- if (c < 0xa0) {
- *pwc = (ucs4_t) c;
- return 1;
- }
- else {
- unsigned short wc = iso8859_6_2uni[c-0xa0];
- if (wc != 0xfffd) {
- *pwc = (ucs4_t) wc;
- return 1;
- }
- }
- return RET_ILSEQ;
-}
-
-static const unsigned char iso8859_6_page00[16] = {
- 0xa0, 0x00, 0x00, 0x00, 0xa4, 0x00, 0x00, 0x00, /* 0xa0-0xa7 */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0xad, 0x00, 0x00, /* 0xa8-0xaf */
-};
-static const unsigned char iso8859_6_page06[80] = {
- 0x00, 0x00, 0x00, 0x00, 0xac, 0x00, 0x00, 0x00, /* 0x08-0x0f */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x10-0x17 */
- 0x00, 0x00, 0x00, 0xbb, 0x00, 0x00, 0x00, 0xbf, /* 0x18-0x1f */
- 0x00, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, /* 0x20-0x27 */
- 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, /* 0x28-0x2f */
- 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, /* 0x30-0x37 */
- 0xd8, 0xd9, 0xda, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x38-0x3f */
- 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, /* 0x40-0x47 */
- 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef, /* 0x48-0x4f */
- 0xf0, 0xf1, 0xf2, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x50-0x57 */
-};
-
-static int
-iso8859_6_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n)
-{
- unsigned char c = 0;
- if (wc < 0x00a0) {
- *r = wc;
- return 1;
- }
- else if (wc >= 0x00a0 && wc < 0x00b0)
- c = iso8859_6_page00[wc-0x00a0];
- else if (wc >= 0x0608 && wc < 0x0658)
- c = iso8859_6_page06[wc-0x0608];
- if (c != 0) {
- *r = c;
- return 1;
- }
- return RET_ILSEQ;
-}
+
+/*
+ * ISO-8859-6
+ */
+
+static const unsigned short iso8859_6_2uni[96] = {
+ /* 0xa0 */
+ 0x00a0, 0xfffd, 0xfffd, 0xfffd, 0x00a4, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x060c, 0x00ad, 0xfffd, 0xfffd,
+ /* 0xb0 */
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0x061b, 0xfffd, 0xfffd, 0xfffd, 0x061f,
+ /* 0xc0 */
+ 0xfffd, 0x0621, 0x0622, 0x0623, 0x0624, 0x0625, 0x0626, 0x0627,
+ 0x0628, 0x0629, 0x062a, 0x062b, 0x062c, 0x062d, 0x062e, 0x062f,
+ /* 0xd0 */
+ 0x0630, 0x0631, 0x0632, 0x0633, 0x0634, 0x0635, 0x0636, 0x0637,
+ 0x0638, 0x0639, 0x063a, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ /* 0xe0 */
+ 0x0640, 0x0641, 0x0642, 0x0643, 0x0644, 0x0645, 0x0646, 0x0647,
+ 0x0648, 0x0649, 0x064a, 0x064b, 0x064c, 0x064d, 0x064e, 0x064f,
+ /* 0xf0 */
+ 0x0650, 0x0651, 0x0652, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+};
+
+static int
+iso8859_6_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n)
+{
+ unsigned char c = *s;
+ if (c < 0xa0) {
+ *pwc = (ucs4_t) c;
+ return 1;
+ }
+ else {
+ unsigned short wc = iso8859_6_2uni[c-0xa0];
+ if (wc != 0xfffd) {
+ *pwc = (ucs4_t) wc;
+ return 1;
+ }
+ }
+ return RET_ILSEQ;
+}
+
+static const unsigned char iso8859_6_page00[16] = {
+ 0xa0, 0x00, 0x00, 0x00, 0xa4, 0x00, 0x00, 0x00, /* 0xa0-0xa7 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0xad, 0x00, 0x00, /* 0xa8-0xaf */
+};
+static const unsigned char iso8859_6_page06[80] = {
+ 0x00, 0x00, 0x00, 0x00, 0xac, 0x00, 0x00, 0x00, /* 0x08-0x0f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x10-0x17 */
+ 0x00, 0x00, 0x00, 0xbb, 0x00, 0x00, 0x00, 0xbf, /* 0x18-0x1f */
+ 0x00, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, /* 0x20-0x27 */
+ 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, /* 0x28-0x2f */
+ 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, /* 0x30-0x37 */
+ 0xd8, 0xd9, 0xda, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x38-0x3f */
+ 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, /* 0x40-0x47 */
+ 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef, /* 0x48-0x4f */
+ 0xf0, 0xf1, 0xf2, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x50-0x57 */
+};
+
+static int
+iso8859_6_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n)
+{
+ unsigned char c = 0;
+ if (wc < 0x00a0) {
+ *r = wc;
+ return 1;
+ }
+ else if (wc >= 0x00a0 && wc < 0x00b0)
+ c = iso8859_6_page00[wc-0x00a0];
+ else if (wc >= 0x0608 && wc < 0x0658)
+ c = iso8859_6_page06[wc-0x0608];
+ if (c != 0) {
+ *r = c;
+ return 1;
+ }
+ return RET_ILSEQ;
+}
diff --git a/libX11/src/xlibi18n/lcUniConv/iso8859_7.h b/libX11/src/xlibi18n/lcUniConv/iso8859_7.h
index 6744cfcea..9b500e4b3 100644
--- a/libX11/src/xlibi18n/lcUniConv/iso8859_7.h
+++ b/libX11/src/xlibi18n/lcUniConv/iso8859_7.h
@@ -1,87 +1,87 @@
-
-/*
- * ISO-8859-7
- */
-
-static const unsigned short iso8859_7_2uni[96] = {
- /* 0xa0 */
- 0x00a0, 0x2018, 0x2019, 0x00a3, 0xfffd, 0xfffd, 0x00a6, 0x00a7,
- 0x00a8, 0x00a9, 0xfffd, 0x00ab, 0x00ac, 0x00ad, 0xfffd, 0x2015,
- /* 0xb0 */
- 0x00b0, 0x00b1, 0x00b2, 0x00b3, 0x0384, 0x0385, 0x0386, 0x00b7,
- 0x0388, 0x0389, 0x038a, 0x00bb, 0x038c, 0x00bd, 0x038e, 0x038f,
- /* 0xc0 */
- 0x0390, 0x0391, 0x0392, 0x0393, 0x0394, 0x0395, 0x0396, 0x0397,
- 0x0398, 0x0399, 0x039a, 0x039b, 0x039c, 0x039d, 0x039e, 0x039f,
- /* 0xd0 */
- 0x03a0, 0x03a1, 0xfffd, 0x03a3, 0x03a4, 0x03a5, 0x03a6, 0x03a7,
- 0x03a8, 0x03a9, 0x03aa, 0x03ab, 0x03ac, 0x03ad, 0x03ae, 0x03af,
- /* 0xe0 */
- 0x03b0, 0x03b1, 0x03b2, 0x03b3, 0x03b4, 0x03b5, 0x03b6, 0x03b7,
- 0x03b8, 0x03b9, 0x03ba, 0x03bb, 0x03bc, 0x03bd, 0x03be, 0x03bf,
- /* 0xf0 */
- 0x03c0, 0x03c1, 0x03c2, 0x03c3, 0x03c4, 0x03c5, 0x03c6, 0x03c7,
- 0x03c8, 0x03c9, 0x03ca, 0x03cb, 0x03cc, 0x03cd, 0x03ce, 0xfffd,
-};
-
-static int
-iso8859_7_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n)
-{
- unsigned char c = *s;
- if (c < 0xa0) {
- *pwc = (ucs4_t) c;
- return 1;
- }
- else {
- unsigned short wc = iso8859_7_2uni[c-0xa0];
- if (wc != 0xfffd) {
- *pwc = (ucs4_t) wc;
- return 1;
- }
- }
- return RET_ILSEQ;
-}
-
-static const unsigned char iso8859_7_page00[32] = {
- 0xa0, 0x00, 0x00, 0xa3, 0x00, 0x00, 0xa6, 0xa7, /* 0xa0-0xa7 */
- 0xa8, 0xa9, 0x00, 0xab, 0xac, 0xad, 0x00, 0x00, /* 0xa8-0xaf */
- 0xb0, 0xb1, 0xb2, 0xb3, 0x00, 0x00, 0x00, 0xb7, /* 0xb0-0xb7 */
- 0x00, 0x00, 0x00, 0xbb, 0x00, 0xbd, 0x00, 0x00, /* 0xb8-0xbf */
-};
-static const unsigned char iso8859_7_page03[80] = {
- 0x00, 0x00, 0x00, 0x00, 0xb4, 0xb5, 0xb6, 0x00, /* 0x80-0x87 */
- 0xb8, 0xb9, 0xba, 0x00, 0xbc, 0x00, 0xbe, 0xbf, /* 0x88-0x8f */
- 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, /* 0x90-0x97 */
- 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, /* 0x98-0x9f */
- 0xd0, 0xd1, 0x00, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, /* 0xa0-0xa7 */
- 0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, 0xde, 0xdf, /* 0xa8-0xaf */
- 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, /* 0xb0-0xb7 */
- 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef, /* 0xb8-0xbf */
- 0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, /* 0xc0-0xc7 */
- 0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, 0xfe, 0x00, /* 0xc8-0xcf */
-};
-static const unsigned char iso8859_7_page20[16] = {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0xaf, 0x00, 0x00, /* 0x10-0x17 */
- 0xa1, 0xa2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x18-0x1f */
-};
-
-static int
-iso8859_7_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n)
-{
- unsigned char c = 0;
- if (wc < 0x00a0) {
- *r = wc;
- return 1;
- }
- else if (wc >= 0x00a0 && wc < 0x00c0)
- c = iso8859_7_page00[wc-0x00a0];
- else if (wc >= 0x0380 && wc < 0x03d0)
- c = iso8859_7_page03[wc-0x0380];
- else if (wc >= 0x2010 && wc < 0x2020)
- c = iso8859_7_page20[wc-0x2010];
- if (c != 0) {
- *r = c;
- return 1;
- }
- return RET_ILSEQ;
-}
+
+/*
+ * ISO-8859-7
+ */
+
+static const unsigned short iso8859_7_2uni[96] = {
+ /* 0xa0 */
+ 0x00a0, 0x2018, 0x2019, 0x00a3, 0xfffd, 0xfffd, 0x00a6, 0x00a7,
+ 0x00a8, 0x00a9, 0xfffd, 0x00ab, 0x00ac, 0x00ad, 0xfffd, 0x2015,
+ /* 0xb0 */
+ 0x00b0, 0x00b1, 0x00b2, 0x00b3, 0x0384, 0x0385, 0x0386, 0x00b7,
+ 0x0388, 0x0389, 0x038a, 0x00bb, 0x038c, 0x00bd, 0x038e, 0x038f,
+ /* 0xc0 */
+ 0x0390, 0x0391, 0x0392, 0x0393, 0x0394, 0x0395, 0x0396, 0x0397,
+ 0x0398, 0x0399, 0x039a, 0x039b, 0x039c, 0x039d, 0x039e, 0x039f,
+ /* 0xd0 */
+ 0x03a0, 0x03a1, 0xfffd, 0x03a3, 0x03a4, 0x03a5, 0x03a6, 0x03a7,
+ 0x03a8, 0x03a9, 0x03aa, 0x03ab, 0x03ac, 0x03ad, 0x03ae, 0x03af,
+ /* 0xe0 */
+ 0x03b0, 0x03b1, 0x03b2, 0x03b3, 0x03b4, 0x03b5, 0x03b6, 0x03b7,
+ 0x03b8, 0x03b9, 0x03ba, 0x03bb, 0x03bc, 0x03bd, 0x03be, 0x03bf,
+ /* 0xf0 */
+ 0x03c0, 0x03c1, 0x03c2, 0x03c3, 0x03c4, 0x03c5, 0x03c6, 0x03c7,
+ 0x03c8, 0x03c9, 0x03ca, 0x03cb, 0x03cc, 0x03cd, 0x03ce, 0xfffd,
+};
+
+static int
+iso8859_7_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n)
+{
+ unsigned char c = *s;
+ if (c < 0xa0) {
+ *pwc = (ucs4_t) c;
+ return 1;
+ }
+ else {
+ unsigned short wc = iso8859_7_2uni[c-0xa0];
+ if (wc != 0xfffd) {
+ *pwc = (ucs4_t) wc;
+ return 1;
+ }
+ }
+ return RET_ILSEQ;
+}
+
+static const unsigned char iso8859_7_page00[32] = {
+ 0xa0, 0x00, 0x00, 0xa3, 0x00, 0x00, 0xa6, 0xa7, /* 0xa0-0xa7 */
+ 0xa8, 0xa9, 0x00, 0xab, 0xac, 0xad, 0x00, 0x00, /* 0xa8-0xaf */
+ 0xb0, 0xb1, 0xb2, 0xb3, 0x00, 0x00, 0x00, 0xb7, /* 0xb0-0xb7 */
+ 0x00, 0x00, 0x00, 0xbb, 0x00, 0xbd, 0x00, 0x00, /* 0xb8-0xbf */
+};
+static const unsigned char iso8859_7_page03[80] = {
+ 0x00, 0x00, 0x00, 0x00, 0xb4, 0xb5, 0xb6, 0x00, /* 0x80-0x87 */
+ 0xb8, 0xb9, 0xba, 0x00, 0xbc, 0x00, 0xbe, 0xbf, /* 0x88-0x8f */
+ 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, /* 0x90-0x97 */
+ 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, /* 0x98-0x9f */
+ 0xd0, 0xd1, 0x00, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, /* 0xa0-0xa7 */
+ 0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, 0xde, 0xdf, /* 0xa8-0xaf */
+ 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, /* 0xb0-0xb7 */
+ 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef, /* 0xb8-0xbf */
+ 0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, /* 0xc0-0xc7 */
+ 0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, 0xfe, 0x00, /* 0xc8-0xcf */
+};
+static const unsigned char iso8859_7_page20[16] = {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0xaf, 0x00, 0x00, /* 0x10-0x17 */
+ 0xa1, 0xa2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x18-0x1f */
+};
+
+static int
+iso8859_7_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n)
+{
+ unsigned char c = 0;
+ if (wc < 0x00a0) {
+ *r = wc;
+ return 1;
+ }
+ else if (wc >= 0x00a0 && wc < 0x00c0)
+ c = iso8859_7_page00[wc-0x00a0];
+ else if (wc >= 0x0380 && wc < 0x03d0)
+ c = iso8859_7_page03[wc-0x0380];
+ else if (wc >= 0x2010 && wc < 0x2020)
+ c = iso8859_7_page20[wc-0x2010];
+ if (c != 0) {
+ *r = c;
+ return 1;
+ }
+ return RET_ILSEQ;
+}
diff --git a/libX11/src/xlibi18n/lcUniConv/iso8859_8.h b/libX11/src/xlibi18n/lcUniConv/iso8859_8.h
index 2469a870d..152dc3cae 100644
--- a/libX11/src/xlibi18n/lcUniConv/iso8859_8.h
+++ b/libX11/src/xlibi18n/lcUniConv/iso8859_8.h
@@ -1,88 +1,88 @@
-
-/*
- * ISO-8859-8
- */
-
-static const unsigned short iso8859_8_2uni[96] = {
- /* 0xa0 */
- 0x00a0, 0xfffd, 0x00a2, 0x00a3, 0x00a4, 0x00a5, 0x00a6, 0x00a7,
- 0x00a8, 0x00a9, 0x00d7, 0x00ab, 0x00ac, 0x00ad, 0x00ae, 0x00af,
- /* 0xb0 */
- 0x00b0, 0x00b1, 0x00b2, 0x00b3, 0x00b4, 0x00b5, 0x00b6, 0x00b7,
- 0x00b8, 0x00b9, 0x00f7, 0x00bb, 0x00bc, 0x00bd, 0x00be, 0xfffd,
- /* 0xc0 */
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- /* 0xd0 */
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x2017,
- /* 0xe0 */
- 0x05d0, 0x05d1, 0x05d2, 0x05d3, 0x05d4, 0x05d5, 0x05d6, 0x05d7,
- 0x05d8, 0x05d9, 0x05da, 0x05db, 0x05dc, 0x05dd, 0x05de, 0x05df,
- /* 0xf0 */
- 0x05e0, 0x05e1, 0x05e2, 0x05e3, 0x05e4, 0x05e5, 0x05e6, 0x05e7,
- 0x05e8, 0x05e9, 0x05ea, 0xfffd, 0xfffd, 0x200e, 0x200f, 0xfffd,
-};
-
-static int
-iso8859_8_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n)
-{
- unsigned char c = *s;
- if (c >= 0xa0) {
- unsigned short wc = iso8859_8_2uni[c-0xa0];
- if (wc != 0xfffd) {
- *pwc = (ucs4_t) wc;
- return 1;
- }
- }
- else {
- *pwc = (ucs4_t) c;
- return 1;
- }
- return RET_ILSEQ;
-}
-
-static const unsigned char iso8859_8_page00[88] = {
- 0xa0, 0x00, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7, /* 0xa0-0xa7 */
- 0xa8, 0xa9, 0x00, 0xab, 0xac, 0xad, 0xae, 0xaf, /* 0xa8-0xaf */
- 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7, /* 0xb0-0xb7 */
- 0xb8, 0xb9, 0x00, 0xbb, 0xbc, 0xbd, 0xbe, 0x00, /* 0xb8-0xbf */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xc0-0xc7 */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xc8-0xcf */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xaa, /* 0xd0-0xd7 */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xd8-0xdf */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xe0-0xe7 */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xe8-0xef */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xba, /* 0xf0-0xf7 */
-};
-static const unsigned char iso8859_8_page05[32] = {
- 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, /* 0xd0-0xd7 */
- 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef, /* 0xd8-0xdf */
- 0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, /* 0xe0-0xe7 */
- 0xf8, 0xf9, 0xfa, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xe8-0xef */
-};
-static const unsigned char iso8859_8_page20[16] = {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfd, 0xfe, /* 0x08-0x0f */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xdf, /* 0x10-0x17 */
-};
-
-static int
-iso8859_8_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n)
-{
- unsigned char c = 0;
- if (wc < 0x00a0) {
- *r = wc;
- return 1;
- }
- else if (wc >= 0x00a0 && wc < 0x00f8)
- c = iso8859_8_page00[wc-0x00a0];
- else if (wc >= 0x05d0 && wc < 0x05f0)
- c = iso8859_8_page05[wc-0x05d0];
- else if (wc >= 0x2008 && wc < 0x2018)
- c = iso8859_8_page20[wc-0x2008];
- if (c != 0) {
- *r = c;
- return 1;
- }
- return RET_ILSEQ;
-}
+
+/*
+ * ISO-8859-8
+ */
+
+static const unsigned short iso8859_8_2uni[96] = {
+ /* 0xa0 */
+ 0x00a0, 0xfffd, 0x00a2, 0x00a3, 0x00a4, 0x00a5, 0x00a6, 0x00a7,
+ 0x00a8, 0x00a9, 0x00d7, 0x00ab, 0x00ac, 0x00ad, 0x00ae, 0x00af,
+ /* 0xb0 */
+ 0x00b0, 0x00b1, 0x00b2, 0x00b3, 0x00b4, 0x00b5, 0x00b6, 0x00b7,
+ 0x00b8, 0x00b9, 0x00f7, 0x00bb, 0x00bc, 0x00bd, 0x00be, 0xfffd,
+ /* 0xc0 */
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ /* 0xd0 */
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x2017,
+ /* 0xe0 */
+ 0x05d0, 0x05d1, 0x05d2, 0x05d3, 0x05d4, 0x05d5, 0x05d6, 0x05d7,
+ 0x05d8, 0x05d9, 0x05da, 0x05db, 0x05dc, 0x05dd, 0x05de, 0x05df,
+ /* 0xf0 */
+ 0x05e0, 0x05e1, 0x05e2, 0x05e3, 0x05e4, 0x05e5, 0x05e6, 0x05e7,
+ 0x05e8, 0x05e9, 0x05ea, 0xfffd, 0xfffd, 0x200e, 0x200f, 0xfffd,
+};
+
+static int
+iso8859_8_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n)
+{
+ unsigned char c = *s;
+ if (c >= 0xa0) {
+ unsigned short wc = iso8859_8_2uni[c-0xa0];
+ if (wc != 0xfffd) {
+ *pwc = (ucs4_t) wc;
+ return 1;
+ }
+ }
+ else {
+ *pwc = (ucs4_t) c;
+ return 1;
+ }
+ return RET_ILSEQ;
+}
+
+static const unsigned char iso8859_8_page00[88] = {
+ 0xa0, 0x00, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7, /* 0xa0-0xa7 */
+ 0xa8, 0xa9, 0x00, 0xab, 0xac, 0xad, 0xae, 0xaf, /* 0xa8-0xaf */
+ 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7, /* 0xb0-0xb7 */
+ 0xb8, 0xb9, 0x00, 0xbb, 0xbc, 0xbd, 0xbe, 0x00, /* 0xb8-0xbf */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xc0-0xc7 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xc8-0xcf */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xaa, /* 0xd0-0xd7 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xd8-0xdf */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xe0-0xe7 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xe8-0xef */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xba, /* 0xf0-0xf7 */
+};
+static const unsigned char iso8859_8_page05[32] = {
+ 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, /* 0xd0-0xd7 */
+ 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef, /* 0xd8-0xdf */
+ 0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, /* 0xe0-0xe7 */
+ 0xf8, 0xf9, 0xfa, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xe8-0xef */
+};
+static const unsigned char iso8859_8_page20[16] = {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfd, 0xfe, /* 0x08-0x0f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xdf, /* 0x10-0x17 */
+};
+
+static int
+iso8859_8_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n)
+{
+ unsigned char c = 0;
+ if (wc < 0x00a0) {
+ *r = wc;
+ return 1;
+ }
+ else if (wc >= 0x00a0 && wc < 0x00f8)
+ c = iso8859_8_page00[wc-0x00a0];
+ else if (wc >= 0x05d0 && wc < 0x05f0)
+ c = iso8859_8_page05[wc-0x05d0];
+ else if (wc >= 0x2008 && wc < 0x2018)
+ c = iso8859_8_page20[wc-0x2008];
+ if (c != 0) {
+ *r = c;
+ return 1;
+ }
+ return RET_ILSEQ;
+}
diff --git a/libX11/src/xlibi18n/lcUniConv/iso8859_9.h b/libX11/src/xlibi18n/lcUniConv/iso8859_9.h
index d95948cc2..b94ac9de6 100644
--- a/libX11/src/xlibi18n/lcUniConv/iso8859_9.h
+++ b/libX11/src/xlibi18n/lcUniConv/iso8859_9.h
@@ -1,66 +1,66 @@
-
-/*
- * ISO-8859-9
- */
-
-static const unsigned short iso8859_9_2uni[48] = {
- /* 0xd0 */
- 0x011e, 0x00d1, 0x00d2, 0x00d3, 0x00d4, 0x00d5, 0x00d6, 0x00d7,
- 0x00d8, 0x00d9, 0x00da, 0x00db, 0x00dc, 0x0130, 0x015e, 0x00df,
- /* 0xe0 */
- 0x00e0, 0x00e1, 0x00e2, 0x00e3, 0x00e4, 0x00e5, 0x00e6, 0x00e7,
- 0x00e8, 0x00e9, 0x00ea, 0x00eb, 0x00ec, 0x00ed, 0x00ee, 0x00ef,
- /* 0xf0 */
- 0x011f, 0x00f1, 0x00f2, 0x00f3, 0x00f4, 0x00f5, 0x00f6, 0x00f7,
- 0x00f8, 0x00f9, 0x00fa, 0x00fb, 0x00fc, 0x0131, 0x015f, 0x00ff,
-};
-
-static int
-iso8859_9_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n)
-{
- unsigned char c = *s;
- if (c >= 0xd0)
- *pwc = (ucs4_t) iso8859_9_2uni[c-0xd0];
- else
- *pwc = (ucs4_t) c;
- return 1;
-}
-
-static const unsigned char iso8859_9_page00[48] = {
- 0x00, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, /* 0xd0-0xd7 */
- 0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0x00, 0x00, 0xdf, /* 0xd8-0xdf */
- 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, /* 0xe0-0xe7 */
- 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef, /* 0xe8-0xef */
- 0x00, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, /* 0xf0-0xf7 */
- 0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0x00, 0x00, 0xff, /* 0xf8-0xff */
-};
-static const unsigned char iso8859_9_page01[72] = {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd0, 0xf0, /* 0x18-0x1f */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x20-0x27 */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x28-0x2f */
- 0xdd, 0xfd, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x30-0x37 */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x38-0x3f */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x40-0x47 */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x48-0x4f */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x50-0x57 */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xde, 0xfe, /* 0x58-0x5f */
-};
-
-static int
-iso8859_9_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n)
-{
- unsigned char c = 0;
- if (wc < 0x00d0) {
- *r = wc;
- return 1;
- }
- else if (wc >= 0x00d0 && wc < 0x0100)
- c = iso8859_9_page00[wc-0x00d0];
- else if (wc >= 0x0118 && wc < 0x0160)
- c = iso8859_9_page01[wc-0x0118];
- if (c != 0) {
- *r = c;
- return 1;
- }
- return RET_ILSEQ;
-}
+
+/*
+ * ISO-8859-9
+ */
+
+static const unsigned short iso8859_9_2uni[48] = {
+ /* 0xd0 */
+ 0x011e, 0x00d1, 0x00d2, 0x00d3, 0x00d4, 0x00d5, 0x00d6, 0x00d7,
+ 0x00d8, 0x00d9, 0x00da, 0x00db, 0x00dc, 0x0130, 0x015e, 0x00df,
+ /* 0xe0 */
+ 0x00e0, 0x00e1, 0x00e2, 0x00e3, 0x00e4, 0x00e5, 0x00e6, 0x00e7,
+ 0x00e8, 0x00e9, 0x00ea, 0x00eb, 0x00ec, 0x00ed, 0x00ee, 0x00ef,
+ /* 0xf0 */
+ 0x011f, 0x00f1, 0x00f2, 0x00f3, 0x00f4, 0x00f5, 0x00f6, 0x00f7,
+ 0x00f8, 0x00f9, 0x00fa, 0x00fb, 0x00fc, 0x0131, 0x015f, 0x00ff,
+};
+
+static int
+iso8859_9_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n)
+{
+ unsigned char c = *s;
+ if (c >= 0xd0)
+ *pwc = (ucs4_t) iso8859_9_2uni[c-0xd0];
+ else
+ *pwc = (ucs4_t) c;
+ return 1;
+}
+
+static const unsigned char iso8859_9_page00[48] = {
+ 0x00, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, /* 0xd0-0xd7 */
+ 0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0x00, 0x00, 0xdf, /* 0xd8-0xdf */
+ 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, /* 0xe0-0xe7 */
+ 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef, /* 0xe8-0xef */
+ 0x00, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, /* 0xf0-0xf7 */
+ 0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0x00, 0x00, 0xff, /* 0xf8-0xff */
+};
+static const unsigned char iso8859_9_page01[72] = {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd0, 0xf0, /* 0x18-0x1f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x20-0x27 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x28-0x2f */
+ 0xdd, 0xfd, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x30-0x37 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x38-0x3f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x40-0x47 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x48-0x4f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x50-0x57 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xde, 0xfe, /* 0x58-0x5f */
+};
+
+static int
+iso8859_9_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n)
+{
+ unsigned char c = 0;
+ if (wc < 0x00d0) {
+ *r = wc;
+ return 1;
+ }
+ else if (wc >= 0x00d0 && wc < 0x0100)
+ c = iso8859_9_page00[wc-0x00d0];
+ else if (wc >= 0x0118 && wc < 0x0160)
+ c = iso8859_9_page01[wc-0x0118];
+ if (c != 0) {
+ *r = c;
+ return 1;
+ }
+ return RET_ILSEQ;
+}
diff --git a/libX11/src/xlibi18n/lcUniConv/iso8859_9e.h b/libX11/src/xlibi18n/lcUniConv/iso8859_9e.h
index 6a2b17f26..cbab5816c 100644
--- a/libX11/src/xlibi18n/lcUniConv/iso8859_9e.h
+++ b/libX11/src/xlibi18n/lcUniConv/iso8859_9e.h
@@ -1,102 +1,102 @@
-
-/*
- * ISO-8859-9E
- */
-
-static const unsigned short iso8859_9e_2uni[96] = {
- /* 0xa0 */
- 0x00a0, 0x017d, 0x00a2, 0x00a3, 0x20ac, 0x00a5, 0x012c, 0x00a7,
- 0x016c, 0x00a9, 0x01e6, 0x00ab, 0x014a, 0x00ad, 0x00ae, 0x01d1,
- /* 0xb0 */
- 0x00b0, 0x017e, 0x00b2, 0x00b3, 0x00b4, 0x00b5, 0x012d, 0x00b7,
- 0x016d, 0x00b9, 0x01e7, 0x00bb, 0x014b, 0x00bd, 0x0178, 0x01d2,
- /* 0xc0 */
- 0x00c0, 0x00c1, 0x00c2, 0x00c3, 0x00c4, 0x00c5, 0x018f, 0x00c7,
- 0x00c8, 0x00c9, 0x00ca, 0x00cb, 0x00cc, 0x00cd, 0x00ce, 0x00cf,
- /* 0xd0 */
- 0x011e, 0x00d1, 0x00d2, 0x00d3, 0x00d4, 0x00d5, 0x00d6, 0x00dd,
- 0x019f, 0x00d9, 0x00da, 0x00db, 0x00dc, 0x0130, 0x015e, 0x00df,
- /* 0xe0 */
- 0x00e0, 0x00e1, 0x00e2, 0x00e3, 0x00e4, 0x00e5, 0x0259, 0x00e7,
- 0x00e8, 0x00e9, 0x00ea, 0x00eb, 0x00ec, 0x00ed, 0x00ee, 0x00ef,
- /* 0xf0 */
- 0x011f, 0x00f1, 0x00f2, 0x00f3, 0x00f4, 0x00f5, 0x00f6, 0x00fd,
- 0x0275, 0x00f9, 0x00fa, 0x00fb, 0x00fc, 0x0131, 0x015f, 0x00ff,
-};
-
-static int
-iso8859_9e_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n)
-{
- unsigned char c = *s;
- if (c >= 0xa0)
- *pwc = (ucs4_t) iso8859_9e_2uni[c-0xa0];
- else
- *pwc = (ucs4_t) c;
- return 1;
-}
-
-static const unsigned char iso8859_9e_page00[96] = {
- 0xa0, 0x00, 0xa2, 0xa3, 0x00, 0xa5, 0x00, 0xa7, /* 0xa0-0xa7 */
- 0x00, 0xa9, 0x00, 0xab, 0x00, 0xad, 0xae, 0x00, /* 0xa8-0xaf */
- 0xb0, 0x00, 0xb2, 0xb3, 0xb4, 0xb5, 0x00, 0xb7, /* 0xb0-0xb7 */
- 0x00, 0xb9, 0x00, 0xbb, 0x00, 0xbd, 0x00, 0x00, /* 0xb8-0xbf */
- 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0x00, 0xc7, /* 0xc0-0xc7 */
- 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, /* 0xc8-0xcf */
- 0x00, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0x00, /* 0xd0-0xd7 */
- 0x00, 0xd9, 0xda, 0xdb, 0xdc, 0xd7, 0x00, 0xdf, /* 0xd8-0xdf */
- 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0x00, 0xe7, /* 0xe0-0xe7 */
- 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef, /* 0xe8-0xef */
- 0x00, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0x00, /* 0xf0-0xf7 */
- 0x00, 0xf9, 0xfa, 0xfb, 0xfc, 0xf7, 0x00, 0xff, /* 0xf8-0xff */
-};
-static const unsigned char iso8859_9e_page01[136] = {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd0, 0xf0, /* 0x18-0x1f */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x20-0x27 */
- 0x00, 0x00, 0x00, 0x00, 0xa6, 0xb6, 0x00, 0x00, /* 0x28-0x2f */
- 0xdd, 0xfd, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x30-0x37 */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x38-0x3f */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x40-0x47 */
- 0x00, 0x00, 0xac, 0xbc, 0x00, 0x00, 0x00, 0x00, /* 0x48-0x4f */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x50-0x57 */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xde, 0xfe, /* 0x58-0x5f */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x60-0x67 */
- 0x00, 0x00, 0x00, 0x00, 0xa8, 0xb8, 0x00, 0x00, /* 0x68-0x6f */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x70-0x77 */
- 0xbe, 0x00, 0x00, 0x00, 0x00, 0xa1, 0xb1, 0x00, /* 0x78-0x7f */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x80-0x87 */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc6, /* 0x88-0x8f */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x90-0x97 */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd8, /* 0x98-0x9f */
-};
-static const unsigned char iso8859_9e_page01_d[24] = {
- 0x00, 0xaf, 0xbf, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xd0-0xd7 */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xd8-0xdf */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xaa, 0xba, /* 0xe0-0xe7 */
-};
-
-static int
-iso8859_9e_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n)
-{
- unsigned char c = 0;
- if (wc < 0x00a0) {
- *r = wc;
- return 1;
- }
- else if (wc >= 0x00a0 && wc < 0x0100)
- c = iso8859_9e_page00[wc-0x00a0];
- else if (wc >= 0x0118 && wc < 0x01a0)
- c = iso8859_9e_page01[wc-0x0118];
- else if (wc >= 0x01d0 && wc < 0x01e8)
- c = iso8859_9e_page01_d[wc-0x01d0];
- else if (wc == 0x0259)
- c = 0xe6;
- else if (wc == 0x0275)
- c = 0xf8;
- else if (wc == 0x20ac)
- c = 0xa4;
- if (c != 0) {
- *r = c;
- return 1;
- }
- return RET_ILSEQ;
-}
+
+/*
+ * ISO-8859-9E
+ */
+
+static const unsigned short iso8859_9e_2uni[96] = {
+ /* 0xa0 */
+ 0x00a0, 0x017d, 0x00a2, 0x00a3, 0x20ac, 0x00a5, 0x012c, 0x00a7,
+ 0x016c, 0x00a9, 0x01e6, 0x00ab, 0x014a, 0x00ad, 0x00ae, 0x01d1,
+ /* 0xb0 */
+ 0x00b0, 0x017e, 0x00b2, 0x00b3, 0x00b4, 0x00b5, 0x012d, 0x00b7,
+ 0x016d, 0x00b9, 0x01e7, 0x00bb, 0x014b, 0x00bd, 0x0178, 0x01d2,
+ /* 0xc0 */
+ 0x00c0, 0x00c1, 0x00c2, 0x00c3, 0x00c4, 0x00c5, 0x018f, 0x00c7,
+ 0x00c8, 0x00c9, 0x00ca, 0x00cb, 0x00cc, 0x00cd, 0x00ce, 0x00cf,
+ /* 0xd0 */
+ 0x011e, 0x00d1, 0x00d2, 0x00d3, 0x00d4, 0x00d5, 0x00d6, 0x00dd,
+ 0x019f, 0x00d9, 0x00da, 0x00db, 0x00dc, 0x0130, 0x015e, 0x00df,
+ /* 0xe0 */
+ 0x00e0, 0x00e1, 0x00e2, 0x00e3, 0x00e4, 0x00e5, 0x0259, 0x00e7,
+ 0x00e8, 0x00e9, 0x00ea, 0x00eb, 0x00ec, 0x00ed, 0x00ee, 0x00ef,
+ /* 0xf0 */
+ 0x011f, 0x00f1, 0x00f2, 0x00f3, 0x00f4, 0x00f5, 0x00f6, 0x00fd,
+ 0x0275, 0x00f9, 0x00fa, 0x00fb, 0x00fc, 0x0131, 0x015f, 0x00ff,
+};
+
+static int
+iso8859_9e_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n)
+{
+ unsigned char c = *s;
+ if (c >= 0xa0)
+ *pwc = (ucs4_t) iso8859_9e_2uni[c-0xa0];
+ else
+ *pwc = (ucs4_t) c;
+ return 1;
+}
+
+static const unsigned char iso8859_9e_page00[96] = {
+ 0xa0, 0x00, 0xa2, 0xa3, 0x00, 0xa5, 0x00, 0xa7, /* 0xa0-0xa7 */
+ 0x00, 0xa9, 0x00, 0xab, 0x00, 0xad, 0xae, 0x00, /* 0xa8-0xaf */
+ 0xb0, 0x00, 0xb2, 0xb3, 0xb4, 0xb5, 0x00, 0xb7, /* 0xb0-0xb7 */
+ 0x00, 0xb9, 0x00, 0xbb, 0x00, 0xbd, 0x00, 0x00, /* 0xb8-0xbf */
+ 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0x00, 0xc7, /* 0xc0-0xc7 */
+ 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, /* 0xc8-0xcf */
+ 0x00, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0x00, /* 0xd0-0xd7 */
+ 0x00, 0xd9, 0xda, 0xdb, 0xdc, 0xd7, 0x00, 0xdf, /* 0xd8-0xdf */
+ 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0x00, 0xe7, /* 0xe0-0xe7 */
+ 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef, /* 0xe8-0xef */
+ 0x00, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0x00, /* 0xf0-0xf7 */
+ 0x00, 0xf9, 0xfa, 0xfb, 0xfc, 0xf7, 0x00, 0xff, /* 0xf8-0xff */
+};
+static const unsigned char iso8859_9e_page01[136] = {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd0, 0xf0, /* 0x18-0x1f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x20-0x27 */
+ 0x00, 0x00, 0x00, 0x00, 0xa6, 0xb6, 0x00, 0x00, /* 0x28-0x2f */
+ 0xdd, 0xfd, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x30-0x37 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x38-0x3f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x40-0x47 */
+ 0x00, 0x00, 0xac, 0xbc, 0x00, 0x00, 0x00, 0x00, /* 0x48-0x4f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x50-0x57 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xde, 0xfe, /* 0x58-0x5f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x60-0x67 */
+ 0x00, 0x00, 0x00, 0x00, 0xa8, 0xb8, 0x00, 0x00, /* 0x68-0x6f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x70-0x77 */
+ 0xbe, 0x00, 0x00, 0x00, 0x00, 0xa1, 0xb1, 0x00, /* 0x78-0x7f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x80-0x87 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc6, /* 0x88-0x8f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x90-0x97 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd8, /* 0x98-0x9f */
+};
+static const unsigned char iso8859_9e_page01_d[24] = {
+ 0x00, 0xaf, 0xbf, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xd0-0xd7 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xd8-0xdf */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xaa, 0xba, /* 0xe0-0xe7 */
+};
+
+static int
+iso8859_9e_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n)
+{
+ unsigned char c = 0;
+ if (wc < 0x00a0) {
+ *r = wc;
+ return 1;
+ }
+ else if (wc >= 0x00a0 && wc < 0x0100)
+ c = iso8859_9e_page00[wc-0x00a0];
+ else if (wc >= 0x0118 && wc < 0x01a0)
+ c = iso8859_9e_page01[wc-0x0118];
+ else if (wc >= 0x01d0 && wc < 0x01e8)
+ c = iso8859_9e_page01_d[wc-0x01d0];
+ else if (wc == 0x0259)
+ c = 0xe6;
+ else if (wc == 0x0275)
+ c = 0xf8;
+ else if (wc == 0x20ac)
+ c = 0xa4;
+ if (c != 0) {
+ *r = c;
+ return 1;
+ }
+ return RET_ILSEQ;
+}
diff --git a/libX11/src/xlibi18n/lcUniConv/jisx0201.h b/libX11/src/xlibi18n/lcUniConv/jisx0201.h
index b5d6ec215..e4af9666f 100644
--- a/libX11/src/xlibi18n/lcUniConv/jisx0201.h
+++ b/libX11/src/xlibi18n/lcUniConv/jisx0201.h
@@ -1,47 +1,47 @@
-
-/*
- * JISX0201.1976-0
- */
-
-static int
-jisx0201_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n)
-{
- unsigned char c = *s;
- if (c < 0x80) {
- if (c == 0x5c)
- *pwc = (ucs4_t) 0x00a5;
- else if (c == 0x7e)
- *pwc = (ucs4_t) 0x203e;
- else
- *pwc = (ucs4_t) c;
- return 1;
- } else {
- if (c >= 0xa1 && c < 0xe0) {
- *pwc = (ucs4_t) c + 0xfec0;
- return 1;
- }
- }
- return RET_ILSEQ;
-}
-
-static int
-jisx0201_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n)
-{
- if (wc < 0x0080 && !(wc == 0x005c || wc == 0x007e)) {
- *r = wc;
- return 1;
- }
- if (wc == 0x00a5) {
- *r = 0x5c;
- return 1;
- }
- if (wc == 0x203e) {
- *r = 0x7e;
- return 1;
- }
- if (wc >= 0xff61 && wc < 0xffa0) {
- *r = wc - 0xfec0;
- return 1;
- }
- return RET_ILSEQ;
-}
+
+/*
+ * JISX0201.1976-0
+ */
+
+static int
+jisx0201_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n)
+{
+ unsigned char c = *s;
+ if (c < 0x80) {
+ if (c == 0x5c)
+ *pwc = (ucs4_t) 0x00a5;
+ else if (c == 0x7e)
+ *pwc = (ucs4_t) 0x203e;
+ else
+ *pwc = (ucs4_t) c;
+ return 1;
+ } else {
+ if (c >= 0xa1 && c < 0xe0) {
+ *pwc = (ucs4_t) c + 0xfec0;
+ return 1;
+ }
+ }
+ return RET_ILSEQ;
+}
+
+static int
+jisx0201_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n)
+{
+ if (wc < 0x0080 && !(wc == 0x005c || wc == 0x007e)) {
+ *r = wc;
+ return 1;
+ }
+ if (wc == 0x00a5) {
+ *r = 0x5c;
+ return 1;
+ }
+ if (wc == 0x203e) {
+ *r = 0x7e;
+ return 1;
+ }
+ if (wc >= 0xff61 && wc < 0xffa0) {
+ *r = wc - 0xfec0;
+ return 1;
+ }
+ return RET_ILSEQ;
+}
diff --git a/libX11/src/xlibi18n/lcUniConv/jisx0208.h b/libX11/src/xlibi18n/lcUniConv/jisx0208.h
index 7c70eb4e1..5888f6f21 100644
--- a/libX11/src/xlibi18n/lcUniConv/jisx0208.h
+++ b/libX11/src/xlibi18n/lcUniConv/jisx0208.h
@@ -1,2396 +1,2396 @@
-
-/*
- * JISX0208.1990-0
- */
-
-static const unsigned short jisx0208_2uni_page21[690] = {
- /* 0x21 */
- 0x3000, 0x3001, 0x3002, 0xff0c, 0xff0e, 0x30fb, 0xff1a, 0xff1b,
- 0xff1f, 0xff01, 0x309b, 0x309c, 0x00b4, 0xff40, 0x00a8, 0xff3e,
- 0xffe3, 0xff3f, 0x30fd, 0x30fe, 0x309d, 0x309e, 0x3003, 0x4edd,
- 0x3005, 0x3006, 0x3007, 0x30fc, 0x2015, 0x2010, 0xff0f, 0xff3c,
- 0x301c, 0x2016, 0xff5c, 0x2026, 0x2025, 0x2018, 0x2019, 0x201c,
- 0x201d, 0xff08, 0xff09, 0x3014, 0x3015, 0xff3b, 0xff3d, 0xff5b,
- 0xff5d, 0x3008, 0x3009, 0x300a, 0x300b, 0x300c, 0x300d, 0x300e,
- 0x300f, 0x3010, 0x3011, 0xff0b, 0x2212, 0x00b1, 0x00d7, 0x00f7,
- 0xff1d, 0x2260, 0xff1c, 0xff1e, 0x2266, 0x2267, 0x221e, 0x2234,
- 0x2642, 0x2640, 0x00b0, 0x2032, 0x2033, 0x2103, 0xffe5, 0xff04,
- 0x00a2, 0x00a3, 0xff05, 0xff03, 0xff06, 0xff0a, 0xff20, 0x00a7,
- 0x2606, 0x2605, 0x25cb, 0x25cf, 0x25ce, 0x25c7,
- /* 0x22 */
- 0x25c6, 0x25a1, 0x25a0, 0x25b3, 0x25b2, 0x25bd, 0x25bc, 0x203b,
- 0x3012, 0x2192, 0x2190, 0x2191, 0x2193, 0x3013, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0x2208, 0x220b, 0x2286, 0x2287, 0x2282, 0x2283, 0x222a,
- 0x2229, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0x2227, 0x2228, 0x00ac, 0x21d2, 0x21d4, 0x2200, 0x2203,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0x2220, 0x22a5, 0x2312, 0x2202, 0x2207,
- 0x2261, 0x2252, 0x226a, 0x226b, 0x221a, 0x223d, 0x221d, 0x2235,
- 0x222b, 0x222c, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0x212b, 0x2030, 0x266f, 0x266d, 0x266a, 0x2020, 0x2021,
- 0x00b6, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x25ef,
- /* 0x23 */
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xff10,
- 0xff11, 0xff12, 0xff13, 0xff14, 0xff15, 0xff16, 0xff17, 0xff18,
- 0xff19, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xff21, 0xff22, 0xff23, 0xff24, 0xff25, 0xff26, 0xff27, 0xff28,
- 0xff29, 0xff2a, 0xff2b, 0xff2c, 0xff2d, 0xff2e, 0xff2f, 0xff30,
- 0xff31, 0xff32, 0xff33, 0xff34, 0xff35, 0xff36, 0xff37, 0xff38,
- 0xff39, 0xff3a, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xff41, 0xff42, 0xff43, 0xff44, 0xff45, 0xff46, 0xff47, 0xff48,
- 0xff49, 0xff4a, 0xff4b, 0xff4c, 0xff4d, 0xff4e, 0xff4f, 0xff50,
- 0xff51, 0xff52, 0xff53, 0xff54, 0xff55, 0xff56, 0xff57, 0xff58,
- 0xff59, 0xff5a, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- /* 0x24 */
- 0x3041, 0x3042, 0x3043, 0x3044, 0x3045, 0x3046, 0x3047, 0x3048,
- 0x3049, 0x304a, 0x304b, 0x304c, 0x304d, 0x304e, 0x304f, 0x3050,
- 0x3051, 0x3052, 0x3053, 0x3054, 0x3055, 0x3056, 0x3057, 0x3058,
- 0x3059, 0x305a, 0x305b, 0x305c, 0x305d, 0x305e, 0x305f, 0x3060,
- 0x3061, 0x3062, 0x3063, 0x3064, 0x3065, 0x3066, 0x3067, 0x3068,
- 0x3069, 0x306a, 0x306b, 0x306c, 0x306d, 0x306e, 0x306f, 0x3070,
- 0x3071, 0x3072, 0x3073, 0x3074, 0x3075, 0x3076, 0x3077, 0x3078,
- 0x3079, 0x307a, 0x307b, 0x307c, 0x307d, 0x307e, 0x307f, 0x3080,
- 0x3081, 0x3082, 0x3083, 0x3084, 0x3085, 0x3086, 0x3087, 0x3088,
- 0x3089, 0x308a, 0x308b, 0x308c, 0x308d, 0x308e, 0x308f, 0x3090,
- 0x3091, 0x3092, 0x3093, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- /* 0x25 */
- 0x30a1, 0x30a2, 0x30a3, 0x30a4, 0x30a5, 0x30a6, 0x30a7, 0x30a8,
- 0x30a9, 0x30aa, 0x30ab, 0x30ac, 0x30ad, 0x30ae, 0x30af, 0x30b0,
- 0x30b1, 0x30b2, 0x30b3, 0x30b4, 0x30b5, 0x30b6, 0x30b7, 0x30b8,
- 0x30b9, 0x30ba, 0x30bb, 0x30bc, 0x30bd, 0x30be, 0x30bf, 0x30c0,
- 0x30c1, 0x30c2, 0x30c3, 0x30c4, 0x30c5, 0x30c6, 0x30c7, 0x30c8,
- 0x30c9, 0x30ca, 0x30cb, 0x30cc, 0x30cd, 0x30ce, 0x30cf, 0x30d0,
- 0x30d1, 0x30d2, 0x30d3, 0x30d4, 0x30d5, 0x30d6, 0x30d7, 0x30d8,
- 0x30d9, 0x30da, 0x30db, 0x30dc, 0x30dd, 0x30de, 0x30df, 0x30e0,
- 0x30e1, 0x30e2, 0x30e3, 0x30e4, 0x30e5, 0x30e6, 0x30e7, 0x30e8,
- 0x30e9, 0x30ea, 0x30eb, 0x30ec, 0x30ed, 0x30ee, 0x30ef, 0x30f0,
- 0x30f1, 0x30f2, 0x30f3, 0x30f4, 0x30f5, 0x30f6, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- /* 0x26 */
- 0x0391, 0x0392, 0x0393, 0x0394, 0x0395, 0x0396, 0x0397, 0x0398,
- 0x0399, 0x039a, 0x039b, 0x039c, 0x039d, 0x039e, 0x039f, 0x03a0,
- 0x03a1, 0x03a3, 0x03a4, 0x03a5, 0x03a6, 0x03a7, 0x03a8, 0x03a9,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0x03b1, 0x03b2, 0x03b3, 0x03b4, 0x03b5, 0x03b6, 0x03b7, 0x03b8,
- 0x03b9, 0x03ba, 0x03bb, 0x03bc, 0x03bd, 0x03be, 0x03bf, 0x03c0,
- 0x03c1, 0x03c3, 0x03c4, 0x03c5, 0x03c6, 0x03c7, 0x03c8, 0x03c9,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- /* 0x27 */
- 0x0410, 0x0411, 0x0412, 0x0413, 0x0414, 0x0415, 0x0401, 0x0416,
- 0x0417, 0x0418, 0x0419, 0x041a, 0x041b, 0x041c, 0x041d, 0x041e,
- 0x041f, 0x0420, 0x0421, 0x0422, 0x0423, 0x0424, 0x0425, 0x0426,
- 0x0427, 0x0428, 0x0429, 0x042a, 0x042b, 0x042c, 0x042d, 0x042e,
- 0x042f, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0x0430, 0x0431, 0x0432, 0x0433, 0x0434, 0x0435, 0x0451, 0x0436,
- 0x0437, 0x0438, 0x0439, 0x043a, 0x043b, 0x043c, 0x043d, 0x043e,
- 0x043f, 0x0440, 0x0441, 0x0442, 0x0443, 0x0444, 0x0445, 0x0446,
- 0x0447, 0x0448, 0x0449, 0x044a, 0x044b, 0x044c, 0x044d, 0x044e,
- 0x044f, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- /* 0x28 */
- 0x2500, 0x2502, 0x250c, 0x2510, 0x2518, 0x2514, 0x251c, 0x252c,
- 0x2524, 0x2534, 0x253c, 0x2501, 0x2503, 0x250f, 0x2513, 0x251b,
- 0x2517, 0x2523, 0x2533, 0x252b, 0x253b, 0x254b, 0x2520, 0x252f,
- 0x2528, 0x2537, 0x253f, 0x251d, 0x2530, 0x2525, 0x2538, 0x2542,
-};
-static const unsigned short jisx0208_2uni_page30[6398] = {
- /* 0x30 */
- 0x4e9c, 0x5516, 0x5a03, 0x963f, 0x54c0, 0x611b, 0x6328, 0x59f6,
- 0x9022, 0x8475, 0x831c, 0x7a50, 0x60aa, 0x63e1, 0x6e25, 0x65ed,
- 0x8466, 0x82a6, 0x9bf5, 0x6893, 0x5727, 0x65a1, 0x6271, 0x5b9b,
- 0x59d0, 0x867b, 0x98f4, 0x7d62, 0x7dbe, 0x9b8e, 0x6216, 0x7c9f,
- 0x88b7, 0x5b89, 0x5eb5, 0x6309, 0x6697, 0x6848, 0x95c7, 0x978d,
- 0x674f, 0x4ee5, 0x4f0a, 0x4f4d, 0x4f9d, 0x5049, 0x56f2, 0x5937,
- 0x59d4, 0x5a01, 0x5c09, 0x60df, 0x610f, 0x6170, 0x6613, 0x6905,
- 0x70ba, 0x754f, 0x7570, 0x79fb, 0x7dad, 0x7def, 0x80c3, 0x840e,
- 0x8863, 0x8b02, 0x9055, 0x907a, 0x533b, 0x4e95, 0x4ea5, 0x57df,
- 0x80b2, 0x90c1, 0x78ef, 0x4e00, 0x58f1, 0x6ea2, 0x9038, 0x7a32,
- 0x8328, 0x828b, 0x9c2f, 0x5141, 0x5370, 0x54bd, 0x54e1, 0x56e0,
- 0x59fb, 0x5f15, 0x98f2, 0x6deb, 0x80e4, 0x852d,
- /* 0x31 */
- 0x9662, 0x9670, 0x96a0, 0x97fb, 0x540b, 0x53f3, 0x5b87, 0x70cf,
- 0x7fbd, 0x8fc2, 0x96e8, 0x536f, 0x9d5c, 0x7aba, 0x4e11, 0x7893,
- 0x81fc, 0x6e26, 0x5618, 0x5504, 0x6b1d, 0x851a, 0x9c3b, 0x59e5,
- 0x53a9, 0x6d66, 0x74dc, 0x958f, 0x5642, 0x4e91, 0x904b, 0x96f2,
- 0x834f, 0x990c, 0x53e1, 0x55b6, 0x5b30, 0x5f71, 0x6620, 0x66f3,
- 0x6804, 0x6c38, 0x6cf3, 0x6d29, 0x745b, 0x76c8, 0x7a4e, 0x9834,
- 0x82f1, 0x885b, 0x8a60, 0x92ed, 0x6db2, 0x75ab, 0x76ca, 0x99c5,
- 0x60a6, 0x8b01, 0x8d8a, 0x95b2, 0x698e, 0x53ad, 0x5186, 0x5712,
- 0x5830, 0x5944, 0x5bb4, 0x5ef6, 0x6028, 0x63a9, 0x63f4, 0x6cbf,
- 0x6f14, 0x708e, 0x7114, 0x7159, 0x71d5, 0x733f, 0x7e01, 0x8276,
- 0x82d1, 0x8597, 0x9060, 0x925b, 0x9d1b, 0x5869, 0x65bc, 0x6c5a,
- 0x7525, 0x51f9, 0x592e, 0x5965, 0x5f80, 0x5fdc,
- /* 0x32 */
- 0x62bc, 0x65fa, 0x6a2a, 0x6b27, 0x6bb4, 0x738b, 0x7fc1, 0x8956,
- 0x9d2c, 0x9d0e, 0x9ec4, 0x5ca1, 0x6c96, 0x837b, 0x5104, 0x5c4b,
- 0x61b6, 0x81c6, 0x6876, 0x7261, 0x4e59, 0x4ffa, 0x5378, 0x6069,
- 0x6e29, 0x7a4f, 0x97f3, 0x4e0b, 0x5316, 0x4eee, 0x4f55, 0x4f3d,
- 0x4fa1, 0x4f73, 0x52a0, 0x53ef, 0x5609, 0x590f, 0x5ac1, 0x5bb6,
- 0x5be1, 0x79d1, 0x6687, 0x679c, 0x67b6, 0x6b4c, 0x6cb3, 0x706b,
- 0x73c2, 0x798d, 0x79be, 0x7a3c, 0x7b87, 0x82b1, 0x82db, 0x8304,
- 0x8377, 0x83ef, 0x83d3, 0x8766, 0x8ab2, 0x5629, 0x8ca8, 0x8fe6,
- 0x904e, 0x971e, 0x868a, 0x4fc4, 0x5ce8, 0x6211, 0x7259, 0x753b,
- 0x81e5, 0x82bd, 0x86fe, 0x8cc0, 0x96c5, 0x9913, 0x99d5, 0x4ecb,
- 0x4f1a, 0x89e3, 0x56de, 0x584a, 0x58ca, 0x5efb, 0x5feb, 0x602a,
- 0x6094, 0x6062, 0x61d0, 0x6212, 0x62d0, 0x6539,
- /* 0x33 */
- 0x9b41, 0x6666, 0x68b0, 0x6d77, 0x7070, 0x754c, 0x7686, 0x7d75,
- 0x82a5, 0x87f9, 0x958b, 0x968e, 0x8c9d, 0x51f1, 0x52be, 0x5916,
- 0x54b3, 0x5bb3, 0x5d16, 0x6168, 0x6982, 0x6daf, 0x788d, 0x84cb,
- 0x8857, 0x8a72, 0x93a7, 0x9ab8, 0x6d6c, 0x99a8, 0x86d9, 0x57a3,
- 0x67ff, 0x86ce, 0x920e, 0x5283, 0x5687, 0x5404, 0x5ed3, 0x62e1,
- 0x64b9, 0x683c, 0x6838, 0x6bbb, 0x7372, 0x78ba, 0x7a6b, 0x899a,
- 0x89d2, 0x8d6b, 0x8f03, 0x90ed, 0x95a3, 0x9694, 0x9769, 0x5b66,
- 0x5cb3, 0x697d, 0x984d, 0x984e, 0x639b, 0x7b20, 0x6a2b, 0x6a7f,
- 0x68b6, 0x9c0d, 0x6f5f, 0x5272, 0x559d, 0x6070, 0x62ec, 0x6d3b,
- 0x6e07, 0x6ed1, 0x845b, 0x8910, 0x8f44, 0x4e14, 0x9c39, 0x53f6,
- 0x691b, 0x6a3a, 0x9784, 0x682a, 0x515c, 0x7ac3, 0x84b2, 0x91dc,
- 0x938c, 0x565b, 0x9d28, 0x6822, 0x8305, 0x8431,
- /* 0x34 */
- 0x7ca5, 0x5208, 0x82c5, 0x74e6, 0x4e7e, 0x4f83, 0x51a0, 0x5bd2,
- 0x520a, 0x52d8, 0x52e7, 0x5dfb, 0x559a, 0x582a, 0x59e6, 0x5b8c,
- 0x5b98, 0x5bdb, 0x5e72, 0x5e79, 0x60a3, 0x611f, 0x6163, 0x61be,
- 0x63db, 0x6562, 0x67d1, 0x6853, 0x68fa, 0x6b3e, 0x6b53, 0x6c57,
- 0x6f22, 0x6f97, 0x6f45, 0x74b0, 0x7518, 0x76e3, 0x770b, 0x7aff,
- 0x7ba1, 0x7c21, 0x7de9, 0x7f36, 0x7ff0, 0x809d, 0x8266, 0x839e,
- 0x89b3, 0x8acc, 0x8cab, 0x9084, 0x9451, 0x9593, 0x9591, 0x95a2,
- 0x9665, 0x97d3, 0x9928, 0x8218, 0x4e38, 0x542b, 0x5cb8, 0x5dcc,
- 0x73a9, 0x764c, 0x773c, 0x5ca9, 0x7feb, 0x8d0b, 0x96c1, 0x9811,
- 0x9854, 0x9858, 0x4f01, 0x4f0e, 0x5371, 0x559c, 0x5668, 0x57fa,
- 0x5947, 0x5b09, 0x5bc4, 0x5c90, 0x5e0c, 0x5e7e, 0x5fcc, 0x63ee,
- 0x673a, 0x65d7, 0x65e2, 0x671f, 0x68cb, 0x68c4,
- /* 0x35 */
- 0x6a5f, 0x5e30, 0x6bc5, 0x6c17, 0x6c7d, 0x757f, 0x7948, 0x5b63,
- 0x7a00, 0x7d00, 0x5fbd, 0x898f, 0x8a18, 0x8cb4, 0x8d77, 0x8ecc,
- 0x8f1d, 0x98e2, 0x9a0e, 0x9b3c, 0x4e80, 0x507d, 0x5100, 0x5993,
- 0x5b9c, 0x622f, 0x6280, 0x64ec, 0x6b3a, 0x72a0, 0x7591, 0x7947,
- 0x7fa9, 0x87fb, 0x8abc, 0x8b70, 0x63ac, 0x83ca, 0x97a0, 0x5409,
- 0x5403, 0x55ab, 0x6854, 0x6a58, 0x8a70, 0x7827, 0x6775, 0x9ecd,
- 0x5374, 0x5ba2, 0x811a, 0x8650, 0x9006, 0x4e18, 0x4e45, 0x4ec7,
- 0x4f11, 0x53ca, 0x5438, 0x5bae, 0x5f13, 0x6025, 0x6551, 0x673d,
- 0x6c42, 0x6c72, 0x6ce3, 0x7078, 0x7403, 0x7a76, 0x7aae, 0x7b08,
- 0x7d1a, 0x7cfe, 0x7d66, 0x65e7, 0x725b, 0x53bb, 0x5c45, 0x5de8,
- 0x62d2, 0x62e0, 0x6319, 0x6e20, 0x865a, 0x8a31, 0x8ddd, 0x92f8,
- 0x6f01, 0x79a6, 0x9b5a, 0x4ea8, 0x4eab, 0x4eac,
- /* 0x36 */
- 0x4f9b, 0x4fa0, 0x50d1, 0x5147, 0x7af6, 0x5171, 0x51f6, 0x5354,
- 0x5321, 0x537f, 0x53eb, 0x55ac, 0x5883, 0x5ce1, 0x5f37, 0x5f4a,
- 0x602f, 0x6050, 0x606d, 0x631f, 0x6559, 0x6a4b, 0x6cc1, 0x72c2,
- 0x72ed, 0x77ef, 0x80f8, 0x8105, 0x8208, 0x854e, 0x90f7, 0x93e1,
- 0x97ff, 0x9957, 0x9a5a, 0x4ef0, 0x51dd, 0x5c2d, 0x6681, 0x696d,
- 0x5c40, 0x66f2, 0x6975, 0x7389, 0x6850, 0x7c81, 0x50c5, 0x52e4,
- 0x5747, 0x5dfe, 0x9326, 0x65a4, 0x6b23, 0x6b3d, 0x7434, 0x7981,
- 0x79bd, 0x7b4b, 0x7dca, 0x82b9, 0x83cc, 0x887f, 0x895f, 0x8b39,
- 0x8fd1, 0x91d1, 0x541f, 0x9280, 0x4e5d, 0x5036, 0x53e5, 0x533a,
- 0x72d7, 0x7396, 0x77e9, 0x82e6, 0x8eaf, 0x99c6, 0x99c8, 0x99d2,
- 0x5177, 0x611a, 0x865e, 0x55b0, 0x7a7a, 0x5076, 0x5bd3, 0x9047,
- 0x9685, 0x4e32, 0x6adb, 0x91e7, 0x5c51, 0x5c48,
- /* 0x37 */
- 0x6398, 0x7a9f, 0x6c93, 0x9774, 0x8f61, 0x7aaa, 0x718a, 0x9688,
- 0x7c82, 0x6817, 0x7e70, 0x6851, 0x936c, 0x52f2, 0x541b, 0x85ab,
- 0x8a13, 0x7fa4, 0x8ecd, 0x90e1, 0x5366, 0x8888, 0x7941, 0x4fc2,
- 0x50be, 0x5211, 0x5144, 0x5553, 0x572d, 0x73ea, 0x578b, 0x5951,
- 0x5f62, 0x5f84, 0x6075, 0x6176, 0x6167, 0x61a9, 0x63b2, 0x643a,
- 0x656c, 0x666f, 0x6842, 0x6e13, 0x7566, 0x7a3d, 0x7cfb, 0x7d4c,
- 0x7d99, 0x7e4b, 0x7f6b, 0x830e, 0x834a, 0x86cd, 0x8a08, 0x8a63,
- 0x8b66, 0x8efd, 0x981a, 0x9d8f, 0x82b8, 0x8fce, 0x9be8, 0x5287,
- 0x621f, 0x6483, 0x6fc0, 0x9699, 0x6841, 0x5091, 0x6b20, 0x6c7a,
- 0x6f54, 0x7a74, 0x7d50, 0x8840, 0x8a23, 0x6708, 0x4ef6, 0x5039,
- 0x5026, 0x5065, 0x517c, 0x5238, 0x5263, 0x55a7, 0x570f, 0x5805,
- 0x5acc, 0x5efa, 0x61b2, 0x61f8, 0x62f3, 0x6372,
- /* 0x38 */
- 0x691c, 0x6a29, 0x727d, 0x72ac, 0x732e, 0x7814, 0x786f, 0x7d79,
- 0x770c, 0x80a9, 0x898b, 0x8b19, 0x8ce2, 0x8ed2, 0x9063, 0x9375,
- 0x967a, 0x9855, 0x9a13, 0x9e78, 0x5143, 0x539f, 0x53b3, 0x5e7b,
- 0x5f26, 0x6e1b, 0x6e90, 0x7384, 0x73fe, 0x7d43, 0x8237, 0x8a00,
- 0x8afa, 0x9650, 0x4e4e, 0x500b, 0x53e4, 0x547c, 0x56fa, 0x59d1,
- 0x5b64, 0x5df1, 0x5eab, 0x5f27, 0x6238, 0x6545, 0x67af, 0x6e56,
- 0x72d0, 0x7cca, 0x88b4, 0x80a1, 0x80e1, 0x83f0, 0x864e, 0x8a87,
- 0x8de8, 0x9237, 0x96c7, 0x9867, 0x9f13, 0x4e94, 0x4e92, 0x4f0d,
- 0x5348, 0x5449, 0x543e, 0x5a2f, 0x5f8c, 0x5fa1, 0x609f, 0x68a7,
- 0x6a8e, 0x745a, 0x7881, 0x8a9e, 0x8aa4, 0x8b77, 0x9190, 0x4e5e,
- 0x9bc9, 0x4ea4, 0x4f7c, 0x4faf, 0x5019, 0x5016, 0x5149, 0x516c,
- 0x529f, 0x52b9, 0x52fe, 0x539a, 0x53e3, 0x5411,
- /* 0x39 */
- 0x540e, 0x5589, 0x5751, 0x57a2, 0x597d, 0x5b54, 0x5b5d, 0x5b8f,
- 0x5de5, 0x5de7, 0x5df7, 0x5e78, 0x5e83, 0x5e9a, 0x5eb7, 0x5f18,
- 0x6052, 0x614c, 0x6297, 0x62d8, 0x63a7, 0x653b, 0x6602, 0x6643,
- 0x66f4, 0x676d, 0x6821, 0x6897, 0x69cb, 0x6c5f, 0x6d2a, 0x6d69,
- 0x6e2f, 0x6e9d, 0x7532, 0x7687, 0x786c, 0x7a3f, 0x7ce0, 0x7d05,
- 0x7d18, 0x7d5e, 0x7db1, 0x8015, 0x8003, 0x80af, 0x80b1, 0x8154,
- 0x818f, 0x822a, 0x8352, 0x884c, 0x8861, 0x8b1b, 0x8ca2, 0x8cfc,
- 0x90ca, 0x9175, 0x9271, 0x783f, 0x92fc, 0x95a4, 0x964d, 0x9805,
- 0x9999, 0x9ad8, 0x9d3b, 0x525b, 0x52ab, 0x53f7, 0x5408, 0x58d5,
- 0x62f7, 0x6fe0, 0x8c6a, 0x8f5f, 0x9eb9, 0x514b, 0x523b, 0x544a,
- 0x56fd, 0x7a40, 0x9177, 0x9d60, 0x9ed2, 0x7344, 0x6f09, 0x8170,
- 0x7511, 0x5ffd, 0x60da, 0x9aa8, 0x72db, 0x8fbc,
- /* 0x3a */
- 0x6b64, 0x9803, 0x4eca, 0x56f0, 0x5764, 0x58be, 0x5a5a, 0x6068,
- 0x61c7, 0x660f, 0x6606, 0x6839, 0x68b1, 0x6df7, 0x75d5, 0x7d3a,
- 0x826e, 0x9b42, 0x4e9b, 0x4f50, 0x53c9, 0x5506, 0x5d6f, 0x5de6,
- 0x5dee, 0x67fb, 0x6c99, 0x7473, 0x7802, 0x8a50, 0x9396, 0x88df,
- 0x5750, 0x5ea7, 0x632b, 0x50b5, 0x50ac, 0x518d, 0x6700, 0x54c9,
- 0x585e, 0x59bb, 0x5bb0, 0x5f69, 0x624d, 0x63a1, 0x683d, 0x6b73,
- 0x6e08, 0x707d, 0x91c7, 0x7280, 0x7815, 0x7826, 0x796d, 0x658e,
- 0x7d30, 0x83dc, 0x88c1, 0x8f09, 0x969b, 0x5264, 0x5728, 0x6750,
- 0x7f6a, 0x8ca1, 0x51b4, 0x5742, 0x962a, 0x583a, 0x698a, 0x80b4,
- 0x54b2, 0x5d0e, 0x57fc, 0x7895, 0x9dfa, 0x4f5c, 0x524a, 0x548b,
- 0x643e, 0x6628, 0x6714, 0x67f5, 0x7a84, 0x7b56, 0x7d22, 0x932f,
- 0x685c, 0x9bad, 0x7b39, 0x5319, 0x518a, 0x5237,
- /* 0x3b */
- 0x5bdf, 0x62f6, 0x64ae, 0x64e6, 0x672d, 0x6bba, 0x85a9, 0x96d1,
- 0x7690, 0x9bd6, 0x634c, 0x9306, 0x9bab, 0x76bf, 0x6652, 0x4e09,
- 0x5098, 0x53c2, 0x5c71, 0x60e8, 0x6492, 0x6563, 0x685f, 0x71e6,
- 0x73ca, 0x7523, 0x7b97, 0x7e82, 0x8695, 0x8b83, 0x8cdb, 0x9178,
- 0x9910, 0x65ac, 0x66ab, 0x6b8b, 0x4ed5, 0x4ed4, 0x4f3a, 0x4f7f,
- 0x523a, 0x53f8, 0x53f2, 0x55e3, 0x56db, 0x58eb, 0x59cb, 0x59c9,
- 0x59ff, 0x5b50, 0x5c4d, 0x5e02, 0x5e2b, 0x5fd7, 0x601d, 0x6307,
- 0x652f, 0x5b5c, 0x65af, 0x65bd, 0x65e8, 0x679d, 0x6b62, 0x6b7b,
- 0x6c0f, 0x7345, 0x7949, 0x79c1, 0x7cf8, 0x7d19, 0x7d2b, 0x80a2,
- 0x8102, 0x81f3, 0x8996, 0x8a5e, 0x8a69, 0x8a66, 0x8a8c, 0x8aee,
- 0x8cc7, 0x8cdc, 0x96cc, 0x98fc, 0x6b6f, 0x4e8b, 0x4f3c, 0x4f8d,
- 0x5150, 0x5b57, 0x5bfa, 0x6148, 0x6301, 0x6642,
- /* 0x3c */
- 0x6b21, 0x6ecb, 0x6cbb, 0x723e, 0x74bd, 0x75d4, 0x78c1, 0x793a,
- 0x800c, 0x8033, 0x81ea, 0x8494, 0x8f9e, 0x6c50, 0x9e7f, 0x5f0f,
- 0x8b58, 0x9d2b, 0x7afa, 0x8ef8, 0x5b8d, 0x96eb, 0x4e03, 0x53f1,
- 0x57f7, 0x5931, 0x5ac9, 0x5ba4, 0x6089, 0x6e7f, 0x6f06, 0x75be,
- 0x8cea, 0x5b9f, 0x8500, 0x7be0, 0x5072, 0x67f4, 0x829d, 0x5c61,
- 0x854a, 0x7e1e, 0x820e, 0x5199, 0x5c04, 0x6368, 0x8d66, 0x659c,
- 0x716e, 0x793e, 0x7d17, 0x8005, 0x8b1d, 0x8eca, 0x906e, 0x86c7,
- 0x90aa, 0x501f, 0x52fa, 0x5c3a, 0x6753, 0x707c, 0x7235, 0x914c,
- 0x91c8, 0x932b, 0x82e5, 0x5bc2, 0x5f31, 0x60f9, 0x4e3b, 0x53d6,
- 0x5b88, 0x624b, 0x6731, 0x6b8a, 0x72e9, 0x73e0, 0x7a2e, 0x816b,
- 0x8da3, 0x9152, 0x9996, 0x5112, 0x53d7, 0x546a, 0x5bff, 0x6388,
- 0x6a39, 0x7dac, 0x9700, 0x56da, 0x53ce, 0x5468,
- /* 0x3d */
- 0x5b97, 0x5c31, 0x5dde, 0x4fee, 0x6101, 0x62fe, 0x6d32, 0x79c0,
- 0x79cb, 0x7d42, 0x7e4d, 0x7fd2, 0x81ed, 0x821f, 0x8490, 0x8846,
- 0x8972, 0x8b90, 0x8e74, 0x8f2f, 0x9031, 0x914b, 0x916c, 0x96c6,
- 0x919c, 0x4ec0, 0x4f4f, 0x5145, 0x5341, 0x5f93, 0x620e, 0x67d4,
- 0x6c41, 0x6e0b, 0x7363, 0x7e26, 0x91cd, 0x9283, 0x53d4, 0x5919,
- 0x5bbf, 0x6dd1, 0x795d, 0x7e2e, 0x7c9b, 0x587e, 0x719f, 0x51fa,
- 0x8853, 0x8ff0, 0x4fca, 0x5cfb, 0x6625, 0x77ac, 0x7ae3, 0x821c,
- 0x99ff, 0x51c6, 0x5faa, 0x65ec, 0x696f, 0x6b89, 0x6df3, 0x6e96,
- 0x6f64, 0x76fe, 0x7d14, 0x5de1, 0x9075, 0x9187, 0x9806, 0x51e6,
- 0x521d, 0x6240, 0x6691, 0x66d9, 0x6e1a, 0x5eb6, 0x7dd2, 0x7f72,
- 0x66f8, 0x85af, 0x85f7, 0x8af8, 0x52a9, 0x53d9, 0x5973, 0x5e8f,
- 0x5f90, 0x6055, 0x92e4, 0x9664, 0x50b7, 0x511f,
- /* 0x3e */
- 0x52dd, 0x5320, 0x5347, 0x53ec, 0x54e8, 0x5546, 0x5531, 0x5617,
- 0x5968, 0x59be, 0x5a3c, 0x5bb5, 0x5c06, 0x5c0f, 0x5c11, 0x5c1a,
- 0x5e84, 0x5e8a, 0x5ee0, 0x5f70, 0x627f, 0x6284, 0x62db, 0x638c,
- 0x6377, 0x6607, 0x660c, 0x662d, 0x6676, 0x677e, 0x68a2, 0x6a1f,
- 0x6a35, 0x6cbc, 0x6d88, 0x6e09, 0x6e58, 0x713c, 0x7126, 0x7167,
- 0x75c7, 0x7701, 0x785d, 0x7901, 0x7965, 0x79f0, 0x7ae0, 0x7b11,
- 0x7ca7, 0x7d39, 0x8096, 0x83d6, 0x848b, 0x8549, 0x885d, 0x88f3,
- 0x8a1f, 0x8a3c, 0x8a54, 0x8a73, 0x8c61, 0x8cde, 0x91a4, 0x9266,
- 0x937e, 0x9418, 0x969c, 0x9798, 0x4e0a, 0x4e08, 0x4e1e, 0x4e57,
- 0x5197, 0x5270, 0x57ce, 0x5834, 0x58cc, 0x5b22, 0x5e38, 0x60c5,
- 0x64fe, 0x6761, 0x6756, 0x6d44, 0x72b6, 0x7573, 0x7a63, 0x84b8,
- 0x8b72, 0x91b8, 0x9320, 0x5631, 0x57f4, 0x98fe,
- /* 0x3f */
- 0x62ed, 0x690d, 0x6b96, 0x71ed, 0x7e54, 0x8077, 0x8272, 0x89e6,
- 0x98df, 0x8755, 0x8fb1, 0x5c3b, 0x4f38, 0x4fe1, 0x4fb5, 0x5507,
- 0x5a20, 0x5bdd, 0x5be9, 0x5fc3, 0x614e, 0x632f, 0x65b0, 0x664b,
- 0x68ee, 0x699b, 0x6d78, 0x6df1, 0x7533, 0x75b9, 0x771f, 0x795e,
- 0x79e6, 0x7d33, 0x81e3, 0x82af, 0x85aa, 0x89aa, 0x8a3a, 0x8eab,
- 0x8f9b, 0x9032, 0x91dd, 0x9707, 0x4eba, 0x4ec1, 0x5203, 0x5875,
- 0x58ec, 0x5c0b, 0x751a, 0x5c3d, 0x814e, 0x8a0a, 0x8fc5, 0x9663,
- 0x976d, 0x7b25, 0x8acf, 0x9808, 0x9162, 0x56f3, 0x53a8, 0x9017,
- 0x5439, 0x5782, 0x5e25, 0x63a8, 0x6c34, 0x708a, 0x7761, 0x7c8b,
- 0x7fe0, 0x8870, 0x9042, 0x9154, 0x9310, 0x9318, 0x968f, 0x745e,
- 0x9ac4, 0x5d07, 0x5d69, 0x6570, 0x67a2, 0x8da8, 0x96db, 0x636e,
- 0x6749, 0x6919, 0x83c5, 0x9817, 0x96c0, 0x88fe,
- /* 0x40 */
- 0x6f84, 0x647a, 0x5bf8, 0x4e16, 0x702c, 0x755d, 0x662f, 0x51c4,
- 0x5236, 0x52e2, 0x59d3, 0x5f81, 0x6027, 0x6210, 0x653f, 0x6574,
- 0x661f, 0x6674, 0x68f2, 0x6816, 0x6b63, 0x6e05, 0x7272, 0x751f,
- 0x76db, 0x7cbe, 0x8056, 0x58f0, 0x88fd, 0x897f, 0x8aa0, 0x8a93,
- 0x8acb, 0x901d, 0x9192, 0x9752, 0x9759, 0x6589, 0x7a0e, 0x8106,
- 0x96bb, 0x5e2d, 0x60dc, 0x621a, 0x65a5, 0x6614, 0x6790, 0x77f3,
- 0x7a4d, 0x7c4d, 0x7e3e, 0x810a, 0x8cac, 0x8d64, 0x8de1, 0x8e5f,
- 0x78a9, 0x5207, 0x62d9, 0x63a5, 0x6442, 0x6298, 0x8a2d, 0x7a83,
- 0x7bc0, 0x8aac, 0x96ea, 0x7d76, 0x820c, 0x8749, 0x4ed9, 0x5148,
- 0x5343, 0x5360, 0x5ba3, 0x5c02, 0x5c16, 0x5ddd, 0x6226, 0x6247,
- 0x64b0, 0x6813, 0x6834, 0x6cc9, 0x6d45, 0x6d17, 0x67d3, 0x6f5c,
- 0x714e, 0x717d, 0x65cb, 0x7a7f, 0x7bad, 0x7dda,
- /* 0x41 */
- 0x7e4a, 0x7fa8, 0x817a, 0x821b, 0x8239, 0x85a6, 0x8a6e, 0x8cce,
- 0x8df5, 0x9078, 0x9077, 0x92ad, 0x9291, 0x9583, 0x9bae, 0x524d,
- 0x5584, 0x6f38, 0x7136, 0x5168, 0x7985, 0x7e55, 0x81b3, 0x7cce,
- 0x564c, 0x5851, 0x5ca8, 0x63aa, 0x66fe, 0x66fd, 0x695a, 0x72d9,
- 0x758f, 0x758e, 0x790e, 0x7956, 0x79df, 0x7c97, 0x7d20, 0x7d44,
- 0x8607, 0x8a34, 0x963b, 0x9061, 0x9f20, 0x50e7, 0x5275, 0x53cc,
- 0x53e2, 0x5009, 0x55aa, 0x58ee, 0x594f, 0x723d, 0x5b8b, 0x5c64,
- 0x531d, 0x60e3, 0x60f3, 0x635c, 0x6383, 0x633f, 0x63bb, 0x64cd,
- 0x65e9, 0x66f9, 0x5de3, 0x69cd, 0x69fd, 0x6f15, 0x71e5, 0x4e89,
- 0x75e9, 0x76f8, 0x7a93, 0x7cdf, 0x7dcf, 0x7d9c, 0x8061, 0x8349,
- 0x8358, 0x846c, 0x84bc, 0x85fb, 0x88c5, 0x8d70, 0x9001, 0x906d,
- 0x9397, 0x971c, 0x9a12, 0x50cf, 0x5897, 0x618e,
- /* 0x42 */
- 0x81d3, 0x8535, 0x8d08, 0x9020, 0x4fc3, 0x5074, 0x5247, 0x5373,
- 0x606f, 0x6349, 0x675f, 0x6e2c, 0x8db3, 0x901f, 0x4fd7, 0x5c5e,
- 0x8cca, 0x65cf, 0x7d9a, 0x5352, 0x8896, 0x5176, 0x63c3, 0x5b58,
- 0x5b6b, 0x5c0a, 0x640d, 0x6751, 0x905c, 0x4ed6, 0x591a, 0x592a,
- 0x6c70, 0x8a51, 0x553e, 0x5815, 0x59a5, 0x60f0, 0x6253, 0x67c1,
- 0x8235, 0x6955, 0x9640, 0x99c4, 0x9a28, 0x4f53, 0x5806, 0x5bfe,
- 0x8010, 0x5cb1, 0x5e2f, 0x5f85, 0x6020, 0x614b, 0x6234, 0x66ff,
- 0x6cf0, 0x6ede, 0x80ce, 0x817f, 0x82d4, 0x888b, 0x8cb8, 0x9000,
- 0x902e, 0x968a, 0x9edb, 0x9bdb, 0x4ee3, 0x53f0, 0x5927, 0x7b2c,
- 0x918d, 0x984c, 0x9df9, 0x6edd, 0x7027, 0x5353, 0x5544, 0x5b85,
- 0x6258, 0x629e, 0x62d3, 0x6ca2, 0x6fef, 0x7422, 0x8a17, 0x9438,
- 0x6fc1, 0x8afe, 0x8338, 0x51e7, 0x86f8, 0x53ea,
- /* 0x43 */
- 0x53e9, 0x4f46, 0x9054, 0x8fb0, 0x596a, 0x8131, 0x5dfd, 0x7aea,
- 0x8fbf, 0x68da, 0x8c37, 0x72f8, 0x9c48, 0x6a3d, 0x8ab0, 0x4e39,
- 0x5358, 0x5606, 0x5766, 0x62c5, 0x63a2, 0x65e6, 0x6b4e, 0x6de1,
- 0x6e5b, 0x70ad, 0x77ed, 0x7aef, 0x7baa, 0x7dbb, 0x803d, 0x80c6,
- 0x86cb, 0x8a95, 0x935b, 0x56e3, 0x58c7, 0x5f3e, 0x65ad, 0x6696,
- 0x6a80, 0x6bb5, 0x7537, 0x8ac7, 0x5024, 0x77e5, 0x5730, 0x5f1b,
- 0x6065, 0x667a, 0x6c60, 0x75f4, 0x7a1a, 0x7f6e, 0x81f4, 0x8718,
- 0x9045, 0x99b3, 0x7bc9, 0x755c, 0x7af9, 0x7b51, 0x84c4, 0x9010,
- 0x79e9, 0x7a92, 0x8336, 0x5ae1, 0x7740, 0x4e2d, 0x4ef2, 0x5b99,
- 0x5fe0, 0x62bd, 0x663c, 0x67f1, 0x6ce8, 0x866b, 0x8877, 0x8a3b,
- 0x914e, 0x92f3, 0x99d0, 0x6a17, 0x7026, 0x732a, 0x82e7, 0x8457,
- 0x8caf, 0x4e01, 0x5146, 0x51cb, 0x558b, 0x5bf5,
- /* 0x44 */
- 0x5e16, 0x5e33, 0x5e81, 0x5f14, 0x5f35, 0x5f6b, 0x5fb4, 0x61f2,
- 0x6311, 0x66a2, 0x671d, 0x6f6e, 0x7252, 0x753a, 0x773a, 0x8074,
- 0x8139, 0x8178, 0x8776, 0x8abf, 0x8adc, 0x8d85, 0x8df3, 0x929a,
- 0x9577, 0x9802, 0x9ce5, 0x52c5, 0x6357, 0x76f4, 0x6715, 0x6c88,
- 0x73cd, 0x8cc3, 0x93ae, 0x9673, 0x6d25, 0x589c, 0x690e, 0x69cc,
- 0x8ffd, 0x939a, 0x75db, 0x901a, 0x585a, 0x6802, 0x63b4, 0x69fb,
- 0x4f43, 0x6f2c, 0x67d8, 0x8fbb, 0x8526, 0x7db4, 0x9354, 0x693f,
- 0x6f70, 0x576a, 0x58f7, 0x5b2c, 0x7d2c, 0x722a, 0x540a, 0x91e3,
- 0x9db4, 0x4ead, 0x4f4e, 0x505c, 0x5075, 0x5243, 0x8c9e, 0x5448,
- 0x5824, 0x5b9a, 0x5e1d, 0x5e95, 0x5ead, 0x5ef7, 0x5f1f, 0x608c,
- 0x62b5, 0x633a, 0x63d0, 0x68af, 0x6c40, 0x7887, 0x798e, 0x7a0b,
- 0x7de0, 0x8247, 0x8a02, 0x8ae6, 0x8e44, 0x9013,
- /* 0x45 */
- 0x90b8, 0x912d, 0x91d8, 0x9f0e, 0x6ce5, 0x6458, 0x64e2, 0x6575,
- 0x6ef4, 0x7684, 0x7b1b, 0x9069, 0x93d1, 0x6eba, 0x54f2, 0x5fb9,
- 0x64a4, 0x8f4d, 0x8fed, 0x9244, 0x5178, 0x586b, 0x5929, 0x5c55,
- 0x5e97, 0x6dfb, 0x7e8f, 0x751c, 0x8cbc, 0x8ee2, 0x985b, 0x70b9,
- 0x4f1d, 0x6bbf, 0x6fb1, 0x7530, 0x96fb, 0x514e, 0x5410, 0x5835,
- 0x5857, 0x59ac, 0x5c60, 0x5f92, 0x6597, 0x675c, 0x6e21, 0x767b,
- 0x83df, 0x8ced, 0x9014, 0x90fd, 0x934d, 0x7825, 0x783a, 0x52aa,
- 0x5ea6, 0x571f, 0x5974, 0x6012, 0x5012, 0x515a, 0x51ac, 0x51cd,
- 0x5200, 0x5510, 0x5854, 0x5858, 0x5957, 0x5b95, 0x5cf6, 0x5d8b,
- 0x60bc, 0x6295, 0x642d, 0x6771, 0x6843, 0x68bc, 0x68df, 0x76d7,
- 0x6dd8, 0x6e6f, 0x6d9b, 0x706f, 0x71c8, 0x5f53, 0x75d8, 0x7977,
- 0x7b49, 0x7b54, 0x7b52, 0x7cd6, 0x7d71, 0x5230,
- /* 0x46 */
- 0x8463, 0x8569, 0x85e4, 0x8a0e, 0x8b04, 0x8c46, 0x8e0f, 0x9003,
- 0x900f, 0x9419, 0x9676, 0x982d, 0x9a30, 0x95d8, 0x50cd, 0x52d5,
- 0x540c, 0x5802, 0x5c0e, 0x61a7, 0x649e, 0x6d1e, 0x77b3, 0x7ae5,
- 0x80f4, 0x8404, 0x9053, 0x9285, 0x5ce0, 0x9d07, 0x533f, 0x5f97,
- 0x5fb3, 0x6d9c, 0x7279, 0x7763, 0x79bf, 0x7be4, 0x6bd2, 0x72ec,
- 0x8aad, 0x6803, 0x6a61, 0x51f8, 0x7a81, 0x6934, 0x5c4a, 0x9cf6,
- 0x82eb, 0x5bc5, 0x9149, 0x701e, 0x5678, 0x5c6f, 0x60c7, 0x6566,
- 0x6c8c, 0x8c5a, 0x9041, 0x9813, 0x5451, 0x66c7, 0x920d, 0x5948,
- 0x90a3, 0x5185, 0x4e4d, 0x51ea, 0x8599, 0x8b0e, 0x7058, 0x637a,
- 0x934b, 0x6962, 0x99b4, 0x7e04, 0x7577, 0x5357, 0x6960, 0x8edf,
- 0x96e3, 0x6c5d, 0x4e8c, 0x5c3c, 0x5f10, 0x8fe9, 0x5302, 0x8cd1,
- 0x8089, 0x8679, 0x5eff, 0x65e5, 0x4e73, 0x5165,
- /* 0x47 */
- 0x5982, 0x5c3f, 0x97ee, 0x4efb, 0x598a, 0x5fcd, 0x8a8d, 0x6fe1,
- 0x79b0, 0x7962, 0x5be7, 0x8471, 0x732b, 0x71b1, 0x5e74, 0x5ff5,
- 0x637b, 0x649a, 0x71c3, 0x7c98, 0x4e43, 0x5efc, 0x4e4b, 0x57dc,
- 0x56a2, 0x60a9, 0x6fc3, 0x7d0d, 0x80fd, 0x8133, 0x81bf, 0x8fb2,
- 0x8997, 0x86a4, 0x5df4, 0x628a, 0x64ad, 0x8987, 0x6777, 0x6ce2,
- 0x6d3e, 0x7436, 0x7834, 0x5a46, 0x7f75, 0x82ad, 0x99ac, 0x4ff3,
- 0x5ec3, 0x62dd, 0x6392, 0x6557, 0x676f, 0x76c3, 0x724c, 0x80cc,
- 0x80ba, 0x8f29, 0x914d, 0x500d, 0x57f9, 0x5a92, 0x6885, 0x6973,
- 0x7164, 0x72fd, 0x8cb7, 0x58f2, 0x8ce0, 0x966a, 0x9019, 0x877f,
- 0x79e4, 0x77e7, 0x8429, 0x4f2f, 0x5265, 0x535a, 0x62cd, 0x67cf,
- 0x6cca, 0x767d, 0x7b94, 0x7c95, 0x8236, 0x8584, 0x8feb, 0x66dd,
- 0x6f20, 0x7206, 0x7e1b, 0x83ab, 0x99c1, 0x9ea6,
- /* 0x48 */
- 0x51fd, 0x7bb1, 0x7872, 0x7bb8, 0x8087, 0x7b48, 0x6ae8, 0x5e61,
- 0x808c, 0x7551, 0x7560, 0x516b, 0x9262, 0x6e8c, 0x767a, 0x9197,
- 0x9aea, 0x4f10, 0x7f70, 0x629c, 0x7b4f, 0x95a5, 0x9ce9, 0x567a,
- 0x5859, 0x86e4, 0x96bc, 0x4f34, 0x5224, 0x534a, 0x53cd, 0x53db,
- 0x5e06, 0x642c, 0x6591, 0x677f, 0x6c3e, 0x6c4e, 0x7248, 0x72af,
- 0x73ed, 0x7554, 0x7e41, 0x822c, 0x85e9, 0x8ca9, 0x7bc4, 0x91c6,
- 0x7169, 0x9812, 0x98ef, 0x633d, 0x6669, 0x756a, 0x76e4, 0x78d0,
- 0x8543, 0x86ee, 0x532a, 0x5351, 0x5426, 0x5983, 0x5e87, 0x5f7c,
- 0x60b2, 0x6249, 0x6279, 0x62ab, 0x6590, 0x6bd4, 0x6ccc, 0x75b2,
- 0x76ae, 0x7891, 0x79d8, 0x7dcb, 0x7f77, 0x80a5, 0x88ab, 0x8ab9,
- 0x8cbb, 0x907f, 0x975e, 0x98db, 0x6a0b, 0x7c38, 0x5099, 0x5c3e,
- 0x5fae, 0x6787, 0x6bd8, 0x7435, 0x7709, 0x7f8e,
- /* 0x49 */
- 0x9f3b, 0x67ca, 0x7a17, 0x5339, 0x758b, 0x9aed, 0x5f66, 0x819d,
- 0x83f1, 0x8098, 0x5f3c, 0x5fc5, 0x7562, 0x7b46, 0x903c, 0x6867,
- 0x59eb, 0x5a9b, 0x7d10, 0x767e, 0x8b2c, 0x4ff5, 0x5f6a, 0x6a19,
- 0x6c37, 0x6f02, 0x74e2, 0x7968, 0x8868, 0x8a55, 0x8c79, 0x5edf,
- 0x63cf, 0x75c5, 0x79d2, 0x82d7, 0x9328, 0x92f2, 0x849c, 0x86ed,
- 0x9c2d, 0x54c1, 0x5f6c, 0x658c, 0x6d5c, 0x7015, 0x8ca7, 0x8cd3,
- 0x983b, 0x654f, 0x74f6, 0x4e0d, 0x4ed8, 0x57e0, 0x592b, 0x5a66,
- 0x5bcc, 0x51a8, 0x5e03, 0x5e9c, 0x6016, 0x6276, 0x6577, 0x65a7,
- 0x666e, 0x6d6e, 0x7236, 0x7b26, 0x8150, 0x819a, 0x8299, 0x8b5c,
- 0x8ca0, 0x8ce6, 0x8d74, 0x961c, 0x9644, 0x4fae, 0x64ab, 0x6b66,
- 0x821e, 0x8461, 0x856a, 0x90e8, 0x5c01, 0x6953, 0x98a8, 0x847a,
- 0x8557, 0x4f0f, 0x526f, 0x5fa9, 0x5e45, 0x670d,
- /* 0x4a */
- 0x798f, 0x8179, 0x8907, 0x8986, 0x6df5, 0x5f17, 0x6255, 0x6cb8,
- 0x4ecf, 0x7269, 0x9b92, 0x5206, 0x543b, 0x5674, 0x58b3, 0x61a4,
- 0x626e, 0x711a, 0x596e, 0x7c89, 0x7cde, 0x7d1b, 0x96f0, 0x6587,
- 0x805e, 0x4e19, 0x4f75, 0x5175, 0x5840, 0x5e63, 0x5e73, 0x5f0a,
- 0x67c4, 0x4e26, 0x853d, 0x9589, 0x965b, 0x7c73, 0x9801, 0x50fb,
- 0x58c1, 0x7656, 0x78a7, 0x5225, 0x77a5, 0x8511, 0x7b86, 0x504f,
- 0x5909, 0x7247, 0x7bc7, 0x7de8, 0x8fba, 0x8fd4, 0x904d, 0x4fbf,
- 0x52c9, 0x5a29, 0x5f01, 0x97ad, 0x4fdd, 0x8217, 0x92ea, 0x5703,
- 0x6355, 0x6b69, 0x752b, 0x88dc, 0x8f14, 0x7a42, 0x52df, 0x5893,
- 0x6155, 0x620a, 0x66ae, 0x6bcd, 0x7c3f, 0x83e9, 0x5023, 0x4ff8,
- 0x5305, 0x5446, 0x5831, 0x5949, 0x5b9d, 0x5cf0, 0x5cef, 0x5d29,
- 0x5e96, 0x62b1, 0x6367, 0x653e, 0x65b9, 0x670b,
- /* 0x4b */
- 0x6cd5, 0x6ce1, 0x70f9, 0x7832, 0x7e2b, 0x80de, 0x82b3, 0x840c,
- 0x84ec, 0x8702, 0x8912, 0x8a2a, 0x8c4a, 0x90a6, 0x92d2, 0x98fd,
- 0x9cf3, 0x9d6c, 0x4e4f, 0x4ea1, 0x508d, 0x5256, 0x574a, 0x59a8,
- 0x5e3d, 0x5fd8, 0x5fd9, 0x623f, 0x66b4, 0x671b, 0x67d0, 0x68d2,
- 0x5192, 0x7d21, 0x80aa, 0x81a8, 0x8b00, 0x8c8c, 0x8cbf, 0x927e,
- 0x9632, 0x5420, 0x982c, 0x5317, 0x50d5, 0x535c, 0x58a8, 0x64b2,
- 0x6734, 0x7267, 0x7766, 0x7a46, 0x91e6, 0x52c3, 0x6ca1, 0x6b86,
- 0x5800, 0x5e4c, 0x5954, 0x672c, 0x7ffb, 0x51e1, 0x76c6, 0x6469,
- 0x78e8, 0x9b54, 0x9ebb, 0x57cb, 0x59b9, 0x6627, 0x679a, 0x6bce,
- 0x54e9, 0x69d9, 0x5e55, 0x819c, 0x6795, 0x9baa, 0x67fe, 0x9c52,
- 0x685d, 0x4ea6, 0x4fe3, 0x53c8, 0x62b9, 0x672b, 0x6cab, 0x8fc4,
- 0x4fad, 0x7e6d, 0x9ebf, 0x4e07, 0x6162, 0x6e80,
- /* 0x4c */
- 0x6f2b, 0x8513, 0x5473, 0x672a, 0x9b45, 0x5df3, 0x7b95, 0x5cac,
- 0x5bc6, 0x871c, 0x6e4a, 0x84d1, 0x7a14, 0x8108, 0x5999, 0x7c8d,
- 0x6c11, 0x7720, 0x52d9, 0x5922, 0x7121, 0x725f, 0x77db, 0x9727,
- 0x9d61, 0x690b, 0x5a7f, 0x5a18, 0x51a5, 0x540d, 0x547d, 0x660e,
- 0x76df, 0x8ff7, 0x9298, 0x9cf4, 0x59ea, 0x725d, 0x6ec5, 0x514d,
- 0x68c9, 0x7dbf, 0x7dec, 0x9762, 0x9eba, 0x6478, 0x6a21, 0x8302,
- 0x5984, 0x5b5f, 0x6bdb, 0x731b, 0x76f2, 0x7db2, 0x8017, 0x8499,
- 0x5132, 0x6728, 0x9ed9, 0x76ee, 0x6762, 0x52ff, 0x9905, 0x5c24,
- 0x623b, 0x7c7e, 0x8cb0, 0x554f, 0x60b6, 0x7d0b, 0x9580, 0x5301,
- 0x4e5f, 0x51b6, 0x591c, 0x723a, 0x8036, 0x91ce, 0x5f25, 0x77e2,
- 0x5384, 0x5f79, 0x7d04, 0x85ac, 0x8a33, 0x8e8d, 0x9756, 0x67f3,
- 0x85ae, 0x9453, 0x6109, 0x6108, 0x6cb9, 0x7652,
- /* 0x4d */
- 0x8aed, 0x8f38, 0x552f, 0x4f51, 0x512a, 0x52c7, 0x53cb, 0x5ba5,
- 0x5e7d, 0x60a0, 0x6182, 0x63d6, 0x6709, 0x67da, 0x6e67, 0x6d8c,
- 0x7336, 0x7337, 0x7531, 0x7950, 0x88d5, 0x8a98, 0x904a, 0x9091,
- 0x90f5, 0x96c4, 0x878d, 0x5915, 0x4e88, 0x4f59, 0x4e0e, 0x8a89,
- 0x8f3f, 0x9810, 0x50ad, 0x5e7c, 0x5996, 0x5bb9, 0x5eb8, 0x63da,
- 0x63fa, 0x64c1, 0x66dc, 0x694a, 0x69d8, 0x6d0b, 0x6eb6, 0x7194,
- 0x7528, 0x7aaf, 0x7f8a, 0x8000, 0x8449, 0x84c9, 0x8981, 0x8b21,
- 0x8e0a, 0x9065, 0x967d, 0x990a, 0x617e, 0x6291, 0x6b32, 0x6c83,
- 0x6d74, 0x7fcc, 0x7ffc, 0x6dc0, 0x7f85, 0x87ba, 0x88f8, 0x6765,
- 0x83b1, 0x983c, 0x96f7, 0x6d1b, 0x7d61, 0x843d, 0x916a, 0x4e71,
- 0x5375, 0x5d50, 0x6b04, 0x6feb, 0x85cd, 0x862d, 0x89a7, 0x5229,
- 0x540f, 0x5c65, 0x674e, 0x68a8, 0x7406, 0x7483,
- /* 0x4e */
- 0x75e2, 0x88cf, 0x88e1, 0x91cc, 0x96e2, 0x9678, 0x5f8b, 0x7387,
- 0x7acb, 0x844e, 0x63a0, 0x7565, 0x5289, 0x6d41, 0x6e9c, 0x7409,
- 0x7559, 0x786b, 0x7c92, 0x9686, 0x7adc, 0x9f8d, 0x4fb6, 0x616e,
- 0x65c5, 0x865c, 0x4e86, 0x4eae, 0x50da, 0x4e21, 0x51cc, 0x5bee,
- 0x6599, 0x6881, 0x6dbc, 0x731f, 0x7642, 0x77ad, 0x7a1c, 0x7ce7,
- 0x826f, 0x8ad2, 0x907c, 0x91cf, 0x9675, 0x9818, 0x529b, 0x7dd1,
- 0x502b, 0x5398, 0x6797, 0x6dcb, 0x71d0, 0x7433, 0x81e8, 0x8f2a,
- 0x96a3, 0x9c57, 0x9e9f, 0x7460, 0x5841, 0x6d99, 0x7d2f, 0x985e,
- 0x4ee4, 0x4f36, 0x4f8b, 0x51b7, 0x52b1, 0x5dba, 0x601c, 0x73b2,
- 0x793c, 0x82d3, 0x9234, 0x96b7, 0x96f6, 0x970a, 0x9e97, 0x9f62,
- 0x66a6, 0x6b74, 0x5217, 0x52a3, 0x70c8, 0x88c2, 0x5ec9, 0x604b,
- 0x6190, 0x6f23, 0x7149, 0x7c3e, 0x7df4, 0x806f,
- /* 0x4f */
- 0x84ee, 0x9023, 0x932c, 0x5442, 0x9b6f, 0x6ad3, 0x7089, 0x8cc2,
- 0x8def, 0x9732, 0x52b4, 0x5a41, 0x5eca, 0x5f04, 0x6717, 0x697c,
- 0x6994, 0x6d6a, 0x6f0f, 0x7262, 0x72fc, 0x7bed, 0x8001, 0x807e,
- 0x874b, 0x90ce, 0x516d, 0x9e93, 0x7984, 0x808b, 0x9332, 0x8ad6,
- 0x502d, 0x548c, 0x8a71, 0x6b6a, 0x8cc4, 0x8107, 0x60d1, 0x67a0,
- 0x9df2, 0x4e99, 0x4e98, 0x9c10, 0x8a6b, 0x85c1, 0x8568, 0x6900,
- 0x6e7e, 0x7897, 0x8155, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- /* 0x50 */
- 0x5f0c, 0x4e10, 0x4e15, 0x4e2a, 0x4e31, 0x4e36, 0x4e3c, 0x4e3f,
- 0x4e42, 0x4e56, 0x4e58, 0x4e82, 0x4e85, 0x8c6b, 0x4e8a, 0x8212,
- 0x5f0d, 0x4e8e, 0x4e9e, 0x4e9f, 0x4ea0, 0x4ea2, 0x4eb0, 0x4eb3,
- 0x4eb6, 0x4ece, 0x4ecd, 0x4ec4, 0x4ec6, 0x4ec2, 0x4ed7, 0x4ede,
- 0x4eed, 0x4edf, 0x4ef7, 0x4f09, 0x4f5a, 0x4f30, 0x4f5b, 0x4f5d,
- 0x4f57, 0x4f47, 0x4f76, 0x4f88, 0x4f8f, 0x4f98, 0x4f7b, 0x4f69,
- 0x4f70, 0x4f91, 0x4f6f, 0x4f86, 0x4f96, 0x5118, 0x4fd4, 0x4fdf,
- 0x4fce, 0x4fd8, 0x4fdb, 0x4fd1, 0x4fda, 0x4fd0, 0x4fe4, 0x4fe5,
- 0x501a, 0x5028, 0x5014, 0x502a, 0x5025, 0x5005, 0x4f1c, 0x4ff6,
- 0x5021, 0x5029, 0x502c, 0x4ffe, 0x4fef, 0x5011, 0x5006, 0x5043,
- 0x5047, 0x6703, 0x5055, 0x5050, 0x5048, 0x505a, 0x5056, 0x506c,
- 0x5078, 0x5080, 0x509a, 0x5085, 0x50b4, 0x50b2,
- /* 0x51 */
- 0x50c9, 0x50ca, 0x50b3, 0x50c2, 0x50d6, 0x50de, 0x50e5, 0x50ed,
- 0x50e3, 0x50ee, 0x50f9, 0x50f5, 0x5109, 0x5101, 0x5102, 0x5116,
- 0x5115, 0x5114, 0x511a, 0x5121, 0x513a, 0x5137, 0x513c, 0x513b,
- 0x513f, 0x5140, 0x5152, 0x514c, 0x5154, 0x5162, 0x7af8, 0x5169,
- 0x516a, 0x516e, 0x5180, 0x5182, 0x56d8, 0x518c, 0x5189, 0x518f,
- 0x5191, 0x5193, 0x5195, 0x5196, 0x51a4, 0x51a6, 0x51a2, 0x51a9,
- 0x51aa, 0x51ab, 0x51b3, 0x51b1, 0x51b2, 0x51b0, 0x51b5, 0x51bd,
- 0x51c5, 0x51c9, 0x51db, 0x51e0, 0x8655, 0x51e9, 0x51ed, 0x51f0,
- 0x51f5, 0x51fe, 0x5204, 0x520b, 0x5214, 0x520e, 0x5227, 0x522a,
- 0x522e, 0x5233, 0x5239, 0x524f, 0x5244, 0x524b, 0x524c, 0x525e,
- 0x5254, 0x526a, 0x5274, 0x5269, 0x5273, 0x527f, 0x527d, 0x528d,
- 0x5294, 0x5292, 0x5271, 0x5288, 0x5291, 0x8fa8,
- /* 0x52 */
- 0x8fa7, 0x52ac, 0x52ad, 0x52bc, 0x52b5, 0x52c1, 0x52cd, 0x52d7,
- 0x52de, 0x52e3, 0x52e6, 0x98ed, 0x52e0, 0x52f3, 0x52f5, 0x52f8,
- 0x52f9, 0x5306, 0x5308, 0x7538, 0x530d, 0x5310, 0x530f, 0x5315,
- 0x531a, 0x5323, 0x532f, 0x5331, 0x5333, 0x5338, 0x5340, 0x5346,
- 0x5345, 0x4e17, 0x5349, 0x534d, 0x51d6, 0x535e, 0x5369, 0x536e,
- 0x5918, 0x537b, 0x5377, 0x5382, 0x5396, 0x53a0, 0x53a6, 0x53a5,
- 0x53ae, 0x53b0, 0x53b6, 0x53c3, 0x7c12, 0x96d9, 0x53df, 0x66fc,
- 0x71ee, 0x53ee, 0x53e8, 0x53ed, 0x53fa, 0x5401, 0x543d, 0x5440,
- 0x542c, 0x542d, 0x543c, 0x542e, 0x5436, 0x5429, 0x541d, 0x544e,
- 0x548f, 0x5475, 0x548e, 0x545f, 0x5471, 0x5477, 0x5470, 0x5492,
- 0x547b, 0x5480, 0x5476, 0x5484, 0x5490, 0x5486, 0x54c7, 0x54a2,
- 0x54b8, 0x54a5, 0x54ac, 0x54c4, 0x54c8, 0x54a8,
- /* 0x53 */
- 0x54ab, 0x54c2, 0x54a4, 0x54be, 0x54bc, 0x54d8, 0x54e5, 0x54e6,
- 0x550f, 0x5514, 0x54fd, 0x54ee, 0x54ed, 0x54fa, 0x54e2, 0x5539,
- 0x5540, 0x5563, 0x554c, 0x552e, 0x555c, 0x5545, 0x5556, 0x5557,
- 0x5538, 0x5533, 0x555d, 0x5599, 0x5580, 0x54af, 0x558a, 0x559f,
- 0x557b, 0x557e, 0x5598, 0x559e, 0x55ae, 0x557c, 0x5583, 0x55a9,
- 0x5587, 0x55a8, 0x55da, 0x55c5, 0x55df, 0x55c4, 0x55dc, 0x55e4,
- 0x55d4, 0x5614, 0x55f7, 0x5616, 0x55fe, 0x55fd, 0x561b, 0x55f9,
- 0x564e, 0x5650, 0x71df, 0x5634, 0x5636, 0x5632, 0x5638, 0x566b,
- 0x5664, 0x562f, 0x566c, 0x566a, 0x5686, 0x5680, 0x568a, 0x56a0,
- 0x5694, 0x568f, 0x56a5, 0x56ae, 0x56b6, 0x56b4, 0x56c2, 0x56bc,
- 0x56c1, 0x56c3, 0x56c0, 0x56c8, 0x56ce, 0x56d1, 0x56d3, 0x56d7,
- 0x56ee, 0x56f9, 0x5700, 0x56ff, 0x5704, 0x5709,
- /* 0x54 */
- 0x5708, 0x570b, 0x570d, 0x5713, 0x5718, 0x5716, 0x55c7, 0x571c,
- 0x5726, 0x5737, 0x5738, 0x574e, 0x573b, 0x5740, 0x574f, 0x5769,
- 0x57c0, 0x5788, 0x5761, 0x577f, 0x5789, 0x5793, 0x57a0, 0x57b3,
- 0x57a4, 0x57aa, 0x57b0, 0x57c3, 0x57c6, 0x57d4, 0x57d2, 0x57d3,
- 0x580a, 0x57d6, 0x57e3, 0x580b, 0x5819, 0x581d, 0x5872, 0x5821,
- 0x5862, 0x584b, 0x5870, 0x6bc0, 0x5852, 0x583d, 0x5879, 0x5885,
- 0x58b9, 0x589f, 0x58ab, 0x58ba, 0x58de, 0x58bb, 0x58b8, 0x58ae,
- 0x58c5, 0x58d3, 0x58d1, 0x58d7, 0x58d9, 0x58d8, 0x58e5, 0x58dc,
- 0x58e4, 0x58df, 0x58ef, 0x58fa, 0x58f9, 0x58fb, 0x58fc, 0x58fd,
- 0x5902, 0x590a, 0x5910, 0x591b, 0x68a6, 0x5925, 0x592c, 0x592d,
- 0x5932, 0x5938, 0x593e, 0x7ad2, 0x5955, 0x5950, 0x594e, 0x595a,
- 0x5958, 0x5962, 0x5960, 0x5967, 0x596c, 0x5969,
- /* 0x55 */
- 0x5978, 0x5981, 0x599d, 0x4f5e, 0x4fab, 0x59a3, 0x59b2, 0x59c6,
- 0x59e8, 0x59dc, 0x598d, 0x59d9, 0x59da, 0x5a25, 0x5a1f, 0x5a11,
- 0x5a1c, 0x5a09, 0x5a1a, 0x5a40, 0x5a6c, 0x5a49, 0x5a35, 0x5a36,
- 0x5a62, 0x5a6a, 0x5a9a, 0x5abc, 0x5abe, 0x5acb, 0x5ac2, 0x5abd,
- 0x5ae3, 0x5ad7, 0x5ae6, 0x5ae9, 0x5ad6, 0x5afa, 0x5afb, 0x5b0c,
- 0x5b0b, 0x5b16, 0x5b32, 0x5ad0, 0x5b2a, 0x5b36, 0x5b3e, 0x5b43,
- 0x5b45, 0x5b40, 0x5b51, 0x5b55, 0x5b5a, 0x5b5b, 0x5b65, 0x5b69,
- 0x5b70, 0x5b73, 0x5b75, 0x5b78, 0x6588, 0x5b7a, 0x5b80, 0x5b83,
- 0x5ba6, 0x5bb8, 0x5bc3, 0x5bc7, 0x5bc9, 0x5bd4, 0x5bd0, 0x5be4,
- 0x5be6, 0x5be2, 0x5bde, 0x5be5, 0x5beb, 0x5bf0, 0x5bf6, 0x5bf3,
- 0x5c05, 0x5c07, 0x5c08, 0x5c0d, 0x5c13, 0x5c20, 0x5c22, 0x5c28,
- 0x5c38, 0x5c39, 0x5c41, 0x5c46, 0x5c4e, 0x5c53,
- /* 0x56 */
- 0x5c50, 0x5c4f, 0x5b71, 0x5c6c, 0x5c6e, 0x4e62, 0x5c76, 0x5c79,
- 0x5c8c, 0x5c91, 0x5c94, 0x599b, 0x5cab, 0x5cbb, 0x5cb6, 0x5cbc,
- 0x5cb7, 0x5cc5, 0x5cbe, 0x5cc7, 0x5cd9, 0x5ce9, 0x5cfd, 0x5cfa,
- 0x5ced, 0x5d8c, 0x5cea, 0x5d0b, 0x5d15, 0x5d17, 0x5d5c, 0x5d1f,
- 0x5d1b, 0x5d11, 0x5d14, 0x5d22, 0x5d1a, 0x5d19, 0x5d18, 0x5d4c,
- 0x5d52, 0x5d4e, 0x5d4b, 0x5d6c, 0x5d73, 0x5d76, 0x5d87, 0x5d84,
- 0x5d82, 0x5da2, 0x5d9d, 0x5dac, 0x5dae, 0x5dbd, 0x5d90, 0x5db7,
- 0x5dbc, 0x5dc9, 0x5dcd, 0x5dd3, 0x5dd2, 0x5dd6, 0x5ddb, 0x5deb,
- 0x5df2, 0x5df5, 0x5e0b, 0x5e1a, 0x5e19, 0x5e11, 0x5e1b, 0x5e36,
- 0x5e37, 0x5e44, 0x5e43, 0x5e40, 0x5e4e, 0x5e57, 0x5e54, 0x5e5f,
- 0x5e62, 0x5e64, 0x5e47, 0x5e75, 0x5e76, 0x5e7a, 0x9ebc, 0x5e7f,
- 0x5ea0, 0x5ec1, 0x5ec2, 0x5ec8, 0x5ed0, 0x5ecf,
- /* 0x57 */
- 0x5ed6, 0x5ee3, 0x5edd, 0x5eda, 0x5edb, 0x5ee2, 0x5ee1, 0x5ee8,
- 0x5ee9, 0x5eec, 0x5ef1, 0x5ef3, 0x5ef0, 0x5ef4, 0x5ef8, 0x5efe,
- 0x5f03, 0x5f09, 0x5f5d, 0x5f5c, 0x5f0b, 0x5f11, 0x5f16, 0x5f29,
- 0x5f2d, 0x5f38, 0x5f41, 0x5f48, 0x5f4c, 0x5f4e, 0x5f2f, 0x5f51,
- 0x5f56, 0x5f57, 0x5f59, 0x5f61, 0x5f6d, 0x5f73, 0x5f77, 0x5f83,
- 0x5f82, 0x5f7f, 0x5f8a, 0x5f88, 0x5f91, 0x5f87, 0x5f9e, 0x5f99,
- 0x5f98, 0x5fa0, 0x5fa8, 0x5fad, 0x5fbc, 0x5fd6, 0x5ffb, 0x5fe4,
- 0x5ff8, 0x5ff1, 0x5fdd, 0x60b3, 0x5fff, 0x6021, 0x6060, 0x6019,
- 0x6010, 0x6029, 0x600e, 0x6031, 0x601b, 0x6015, 0x602b, 0x6026,
- 0x600f, 0x603a, 0x605a, 0x6041, 0x606a, 0x6077, 0x605f, 0x604a,
- 0x6046, 0x604d, 0x6063, 0x6043, 0x6064, 0x6042, 0x606c, 0x606b,
- 0x6059, 0x6081, 0x608d, 0x60e7, 0x6083, 0x609a,
- /* 0x58 */
- 0x6084, 0x609b, 0x6096, 0x6097, 0x6092, 0x60a7, 0x608b, 0x60e1,
- 0x60b8, 0x60e0, 0x60d3, 0x60b4, 0x5ff0, 0x60bd, 0x60c6, 0x60b5,
- 0x60d8, 0x614d, 0x6115, 0x6106, 0x60f6, 0x60f7, 0x6100, 0x60f4,
- 0x60fa, 0x6103, 0x6121, 0x60fb, 0x60f1, 0x610d, 0x610e, 0x6147,
- 0x613e, 0x6128, 0x6127, 0x614a, 0x613f, 0x613c, 0x612c, 0x6134,
- 0x613d, 0x6142, 0x6144, 0x6173, 0x6177, 0x6158, 0x6159, 0x615a,
- 0x616b, 0x6174, 0x616f, 0x6165, 0x6171, 0x615f, 0x615d, 0x6153,
- 0x6175, 0x6199, 0x6196, 0x6187, 0x61ac, 0x6194, 0x619a, 0x618a,
- 0x6191, 0x61ab, 0x61ae, 0x61cc, 0x61ca, 0x61c9, 0x61f7, 0x61c8,
- 0x61c3, 0x61c6, 0x61ba, 0x61cb, 0x7f79, 0x61cd, 0x61e6, 0x61e3,
- 0x61f6, 0x61fa, 0x61f4, 0x61ff, 0x61fd, 0x61fc, 0x61fe, 0x6200,
- 0x6208, 0x6209, 0x620d, 0x620c, 0x6214, 0x621b,
- /* 0x59 */
- 0x621e, 0x6221, 0x622a, 0x622e, 0x6230, 0x6232, 0x6233, 0x6241,
- 0x624e, 0x625e, 0x6263, 0x625b, 0x6260, 0x6268, 0x627c, 0x6282,
- 0x6289, 0x627e, 0x6292, 0x6293, 0x6296, 0x62d4, 0x6283, 0x6294,
- 0x62d7, 0x62d1, 0x62bb, 0x62cf, 0x62ff, 0x62c6, 0x64d4, 0x62c8,
- 0x62dc, 0x62cc, 0x62ca, 0x62c2, 0x62c7, 0x629b, 0x62c9, 0x630c,
- 0x62ee, 0x62f1, 0x6327, 0x6302, 0x6308, 0x62ef, 0x62f5, 0x6350,
- 0x633e, 0x634d, 0x641c, 0x634f, 0x6396, 0x638e, 0x6380, 0x63ab,
- 0x6376, 0x63a3, 0x638f, 0x6389, 0x639f, 0x63b5, 0x636b, 0x6369,
- 0x63be, 0x63e9, 0x63c0, 0x63c6, 0x63e3, 0x63c9, 0x63d2, 0x63f6,
- 0x63c4, 0x6416, 0x6434, 0x6406, 0x6413, 0x6426, 0x6436, 0x651d,
- 0x6417, 0x6428, 0x640f, 0x6467, 0x646f, 0x6476, 0x644e, 0x652a,
- 0x6495, 0x6493, 0x64a5, 0x64a9, 0x6488, 0x64bc,
- /* 0x5a */
- 0x64da, 0x64d2, 0x64c5, 0x64c7, 0x64bb, 0x64d8, 0x64c2, 0x64f1,
- 0x64e7, 0x8209, 0x64e0, 0x64e1, 0x62ac, 0x64e3, 0x64ef, 0x652c,
- 0x64f6, 0x64f4, 0x64f2, 0x64fa, 0x6500, 0x64fd, 0x6518, 0x651c,
- 0x6505, 0x6524, 0x6523, 0x652b, 0x6534, 0x6535, 0x6537, 0x6536,
- 0x6538, 0x754b, 0x6548, 0x6556, 0x6555, 0x654d, 0x6558, 0x655e,
- 0x655d, 0x6572, 0x6578, 0x6582, 0x6583, 0x8b8a, 0x659b, 0x659f,
- 0x65ab, 0x65b7, 0x65c3, 0x65c6, 0x65c1, 0x65c4, 0x65cc, 0x65d2,
- 0x65db, 0x65d9, 0x65e0, 0x65e1, 0x65f1, 0x6772, 0x660a, 0x6603,
- 0x65fb, 0x6773, 0x6635, 0x6636, 0x6634, 0x661c, 0x664f, 0x6644,
- 0x6649, 0x6641, 0x665e, 0x665d, 0x6664, 0x6667, 0x6668, 0x665f,
- 0x6662, 0x6670, 0x6683, 0x6688, 0x668e, 0x6689, 0x6684, 0x6698,
- 0x669d, 0x66c1, 0x66b9, 0x66c9, 0x66be, 0x66bc,
- /* 0x5b */
- 0x66c4, 0x66b8, 0x66d6, 0x66da, 0x66e0, 0x663f, 0x66e6, 0x66e9,
- 0x66f0, 0x66f5, 0x66f7, 0x670f, 0x6716, 0x671e, 0x6726, 0x6727,
- 0x9738, 0x672e, 0x673f, 0x6736, 0x6741, 0x6738, 0x6737, 0x6746,
- 0x675e, 0x6760, 0x6759, 0x6763, 0x6764, 0x6789, 0x6770, 0x67a9,
- 0x677c, 0x676a, 0x678c, 0x678b, 0x67a6, 0x67a1, 0x6785, 0x67b7,
- 0x67ef, 0x67b4, 0x67ec, 0x67b3, 0x67e9, 0x67b8, 0x67e4, 0x67de,
- 0x67dd, 0x67e2, 0x67ee, 0x67b9, 0x67ce, 0x67c6, 0x67e7, 0x6a9c,
- 0x681e, 0x6846, 0x6829, 0x6840, 0x684d, 0x6832, 0x684e, 0x68b3,
- 0x682b, 0x6859, 0x6863, 0x6877, 0x687f, 0x689f, 0x688f, 0x68ad,
- 0x6894, 0x689d, 0x689b, 0x6883, 0x6aae, 0x68b9, 0x6874, 0x68b5,
- 0x68a0, 0x68ba, 0x690f, 0x688d, 0x687e, 0x6901, 0x68ca, 0x6908,
- 0x68d8, 0x6922, 0x6926, 0x68e1, 0x690c, 0x68cd,
- /* 0x5c */
- 0x68d4, 0x68e7, 0x68d5, 0x6936, 0x6912, 0x6904, 0x68d7, 0x68e3,
- 0x6925, 0x68f9, 0x68e0, 0x68ef, 0x6928, 0x692a, 0x691a, 0x6923,
- 0x6921, 0x68c6, 0x6979, 0x6977, 0x695c, 0x6978, 0x696b, 0x6954,
- 0x697e, 0x696e, 0x6939, 0x6974, 0x693d, 0x6959, 0x6930, 0x6961,
- 0x695e, 0x695d, 0x6981, 0x696a, 0x69b2, 0x69ae, 0x69d0, 0x69bf,
- 0x69c1, 0x69d3, 0x69be, 0x69ce, 0x5be8, 0x69ca, 0x69dd, 0x69bb,
- 0x69c3, 0x69a7, 0x6a2e, 0x6991, 0x69a0, 0x699c, 0x6995, 0x69b4,
- 0x69de, 0x69e8, 0x6a02, 0x6a1b, 0x69ff, 0x6b0a, 0x69f9, 0x69f2,
- 0x69e7, 0x6a05, 0x69b1, 0x6a1e, 0x69ed, 0x6a14, 0x69eb, 0x6a0a,
- 0x6a12, 0x6ac1, 0x6a23, 0x6a13, 0x6a44, 0x6a0c, 0x6a72, 0x6a36,
- 0x6a78, 0x6a47, 0x6a62, 0x6a59, 0x6a66, 0x6a48, 0x6a38, 0x6a22,
- 0x6a90, 0x6a8d, 0x6aa0, 0x6a84, 0x6aa2, 0x6aa3,
- /* 0x5d */
- 0x6a97, 0x8617, 0x6abb, 0x6ac3, 0x6ac2, 0x6ab8, 0x6ab3, 0x6aac,
- 0x6ade, 0x6ad1, 0x6adf, 0x6aaa, 0x6ada, 0x6aea, 0x6afb, 0x6b05,
- 0x8616, 0x6afa, 0x6b12, 0x6b16, 0x9b31, 0x6b1f, 0x6b38, 0x6b37,
- 0x76dc, 0x6b39, 0x98ee, 0x6b47, 0x6b43, 0x6b49, 0x6b50, 0x6b59,
- 0x6b54, 0x6b5b, 0x6b5f, 0x6b61, 0x6b78, 0x6b79, 0x6b7f, 0x6b80,
- 0x6b84, 0x6b83, 0x6b8d, 0x6b98, 0x6b95, 0x6b9e, 0x6ba4, 0x6baa,
- 0x6bab, 0x6baf, 0x6bb2, 0x6bb1, 0x6bb3, 0x6bb7, 0x6bbc, 0x6bc6,
- 0x6bcb, 0x6bd3, 0x6bdf, 0x6bec, 0x6beb, 0x6bf3, 0x6bef, 0x9ebe,
- 0x6c08, 0x6c13, 0x6c14, 0x6c1b, 0x6c24, 0x6c23, 0x6c5e, 0x6c55,
- 0x6c62, 0x6c6a, 0x6c82, 0x6c8d, 0x6c9a, 0x6c81, 0x6c9b, 0x6c7e,
- 0x6c68, 0x6c73, 0x6c92, 0x6c90, 0x6cc4, 0x6cf1, 0x6cd3, 0x6cbd,
- 0x6cd7, 0x6cc5, 0x6cdd, 0x6cae, 0x6cb1, 0x6cbe,
- /* 0x5e */
- 0x6cba, 0x6cdb, 0x6cef, 0x6cd9, 0x6cea, 0x6d1f, 0x884d, 0x6d36,
- 0x6d2b, 0x6d3d, 0x6d38, 0x6d19, 0x6d35, 0x6d33, 0x6d12, 0x6d0c,
- 0x6d63, 0x6d93, 0x6d64, 0x6d5a, 0x6d79, 0x6d59, 0x6d8e, 0x6d95,
- 0x6fe4, 0x6d85, 0x6df9, 0x6e15, 0x6e0a, 0x6db5, 0x6dc7, 0x6de6,
- 0x6db8, 0x6dc6, 0x6dec, 0x6dde, 0x6dcc, 0x6de8, 0x6dd2, 0x6dc5,
- 0x6dfa, 0x6dd9, 0x6de4, 0x6dd5, 0x6dea, 0x6dee, 0x6e2d, 0x6e6e,
- 0x6e2e, 0x6e19, 0x6e72, 0x6e5f, 0x6e3e, 0x6e23, 0x6e6b, 0x6e2b,
- 0x6e76, 0x6e4d, 0x6e1f, 0x6e43, 0x6e3a, 0x6e4e, 0x6e24, 0x6eff,
- 0x6e1d, 0x6e38, 0x6e82, 0x6eaa, 0x6e98, 0x6ec9, 0x6eb7, 0x6ed3,
- 0x6ebd, 0x6eaf, 0x6ec4, 0x6eb2, 0x6ed4, 0x6ed5, 0x6e8f, 0x6ea5,
- 0x6ec2, 0x6e9f, 0x6f41, 0x6f11, 0x704c, 0x6eec, 0x6ef8, 0x6efe,
- 0x6f3f, 0x6ef2, 0x6f31, 0x6eef, 0x6f32, 0x6ecc,
- /* 0x5f */
- 0x6f3e, 0x6f13, 0x6ef7, 0x6f86, 0x6f7a, 0x6f78, 0x6f81, 0x6f80,
- 0x6f6f, 0x6f5b, 0x6ff3, 0x6f6d, 0x6f82, 0x6f7c, 0x6f58, 0x6f8e,
- 0x6f91, 0x6fc2, 0x6f66, 0x6fb3, 0x6fa3, 0x6fa1, 0x6fa4, 0x6fb9,
- 0x6fc6, 0x6faa, 0x6fdf, 0x6fd5, 0x6fec, 0x6fd4, 0x6fd8, 0x6ff1,
- 0x6fee, 0x6fdb, 0x7009, 0x700b, 0x6ffa, 0x7011, 0x7001, 0x700f,
- 0x6ffe, 0x701b, 0x701a, 0x6f74, 0x701d, 0x7018, 0x701f, 0x7030,
- 0x703e, 0x7032, 0x7051, 0x7063, 0x7099, 0x7092, 0x70af, 0x70f1,
- 0x70ac, 0x70b8, 0x70b3, 0x70ae, 0x70df, 0x70cb, 0x70dd, 0x70d9,
- 0x7109, 0x70fd, 0x711c, 0x7119, 0x7165, 0x7155, 0x7188, 0x7166,
- 0x7162, 0x714c, 0x7156, 0x716c, 0x718f, 0x71fb, 0x7184, 0x7195,
- 0x71a8, 0x71ac, 0x71d7, 0x71b9, 0x71be, 0x71d2, 0x71c9, 0x71d4,
- 0x71ce, 0x71e0, 0x71ec, 0x71e7, 0x71f5, 0x71fc,
- /* 0x60 */
- 0x71f9, 0x71ff, 0x720d, 0x7210, 0x721b, 0x7228, 0x722d, 0x722c,
- 0x7230, 0x7232, 0x723b, 0x723c, 0x723f, 0x7240, 0x7246, 0x724b,
- 0x7258, 0x7274, 0x727e, 0x7282, 0x7281, 0x7287, 0x7292, 0x7296,
- 0x72a2, 0x72a7, 0x72b9, 0x72b2, 0x72c3, 0x72c6, 0x72c4, 0x72ce,
- 0x72d2, 0x72e2, 0x72e0, 0x72e1, 0x72f9, 0x72f7, 0x500f, 0x7317,
- 0x730a, 0x731c, 0x7316, 0x731d, 0x7334, 0x732f, 0x7329, 0x7325,
- 0x733e, 0x734e, 0x734f, 0x9ed8, 0x7357, 0x736a, 0x7368, 0x7370,
- 0x7378, 0x7375, 0x737b, 0x737a, 0x73c8, 0x73b3, 0x73ce, 0x73bb,
- 0x73c0, 0x73e5, 0x73ee, 0x73de, 0x74a2, 0x7405, 0x746f, 0x7425,
- 0x73f8, 0x7432, 0x743a, 0x7455, 0x743f, 0x745f, 0x7459, 0x7441,
- 0x745c, 0x7469, 0x7470, 0x7463, 0x746a, 0x7476, 0x747e, 0x748b,
- 0x749e, 0x74a7, 0x74ca, 0x74cf, 0x74d4, 0x73f1,
- /* 0x61 */
- 0x74e0, 0x74e3, 0x74e7, 0x74e9, 0x74ee, 0x74f2, 0x74f0, 0x74f1,
- 0x74f8, 0x74f7, 0x7504, 0x7503, 0x7505, 0x750c, 0x750e, 0x750d,
- 0x7515, 0x7513, 0x751e, 0x7526, 0x752c, 0x753c, 0x7544, 0x754d,
- 0x754a, 0x7549, 0x755b, 0x7546, 0x755a, 0x7569, 0x7564, 0x7567,
- 0x756b, 0x756d, 0x7578, 0x7576, 0x7586, 0x7587, 0x7574, 0x758a,
- 0x7589, 0x7582, 0x7594, 0x759a, 0x759d, 0x75a5, 0x75a3, 0x75c2,
- 0x75b3, 0x75c3, 0x75b5, 0x75bd, 0x75b8, 0x75bc, 0x75b1, 0x75cd,
- 0x75ca, 0x75d2, 0x75d9, 0x75e3, 0x75de, 0x75fe, 0x75ff, 0x75fc,
- 0x7601, 0x75f0, 0x75fa, 0x75f2, 0x75f3, 0x760b, 0x760d, 0x7609,
- 0x761f, 0x7627, 0x7620, 0x7621, 0x7622, 0x7624, 0x7634, 0x7630,
- 0x763b, 0x7647, 0x7648, 0x7646, 0x765c, 0x7658, 0x7661, 0x7662,
- 0x7668, 0x7669, 0x766a, 0x7667, 0x766c, 0x7670,
- /* 0x62 */
- 0x7672, 0x7676, 0x7678, 0x767c, 0x7680, 0x7683, 0x7688, 0x768b,
- 0x768e, 0x7696, 0x7693, 0x7699, 0x769a, 0x76b0, 0x76b4, 0x76b8,
- 0x76b9, 0x76ba, 0x76c2, 0x76cd, 0x76d6, 0x76d2, 0x76de, 0x76e1,
- 0x76e5, 0x76e7, 0x76ea, 0x862f, 0x76fb, 0x7708, 0x7707, 0x7704,
- 0x7729, 0x7724, 0x771e, 0x7725, 0x7726, 0x771b, 0x7737, 0x7738,
- 0x7747, 0x775a, 0x7768, 0x776b, 0x775b, 0x7765, 0x777f, 0x777e,
- 0x7779, 0x778e, 0x778b, 0x7791, 0x77a0, 0x779e, 0x77b0, 0x77b6,
- 0x77b9, 0x77bf, 0x77bc, 0x77bd, 0x77bb, 0x77c7, 0x77cd, 0x77d7,
- 0x77da, 0x77dc, 0x77e3, 0x77ee, 0x77fc, 0x780c, 0x7812, 0x7926,
- 0x7820, 0x792a, 0x7845, 0x788e, 0x7874, 0x7886, 0x787c, 0x789a,
- 0x788c, 0x78a3, 0x78b5, 0x78aa, 0x78af, 0x78d1, 0x78c6, 0x78cb,
- 0x78d4, 0x78be, 0x78bc, 0x78c5, 0x78ca, 0x78ec,
- /* 0x63 */
- 0x78e7, 0x78da, 0x78fd, 0x78f4, 0x7907, 0x7912, 0x7911, 0x7919,
- 0x792c, 0x792b, 0x7940, 0x7960, 0x7957, 0x795f, 0x795a, 0x7955,
- 0x7953, 0x797a, 0x797f, 0x798a, 0x799d, 0x79a7, 0x9f4b, 0x79aa,
- 0x79ae, 0x79b3, 0x79b9, 0x79ba, 0x79c9, 0x79d5, 0x79e7, 0x79ec,
- 0x79e1, 0x79e3, 0x7a08, 0x7a0d, 0x7a18, 0x7a19, 0x7a20, 0x7a1f,
- 0x7980, 0x7a31, 0x7a3b, 0x7a3e, 0x7a37, 0x7a43, 0x7a57, 0x7a49,
- 0x7a61, 0x7a62, 0x7a69, 0x9f9d, 0x7a70, 0x7a79, 0x7a7d, 0x7a88,
- 0x7a97, 0x7a95, 0x7a98, 0x7a96, 0x7aa9, 0x7ac8, 0x7ab0, 0x7ab6,
- 0x7ac5, 0x7ac4, 0x7abf, 0x9083, 0x7ac7, 0x7aca, 0x7acd, 0x7acf,
- 0x7ad5, 0x7ad3, 0x7ad9, 0x7ada, 0x7add, 0x7ae1, 0x7ae2, 0x7ae6,
- 0x7aed, 0x7af0, 0x7b02, 0x7b0f, 0x7b0a, 0x7b06, 0x7b33, 0x7b18,
- 0x7b19, 0x7b1e, 0x7b35, 0x7b28, 0x7b36, 0x7b50,
- /* 0x64 */
- 0x7b7a, 0x7b04, 0x7b4d, 0x7b0b, 0x7b4c, 0x7b45, 0x7b75, 0x7b65,
- 0x7b74, 0x7b67, 0x7b70, 0x7b71, 0x7b6c, 0x7b6e, 0x7b9d, 0x7b98,
- 0x7b9f, 0x7b8d, 0x7b9c, 0x7b9a, 0x7b8b, 0x7b92, 0x7b8f, 0x7b5d,
- 0x7b99, 0x7bcb, 0x7bc1, 0x7bcc, 0x7bcf, 0x7bb4, 0x7bc6, 0x7bdd,
- 0x7be9, 0x7c11, 0x7c14, 0x7be6, 0x7be5, 0x7c60, 0x7c00, 0x7c07,
- 0x7c13, 0x7bf3, 0x7bf7, 0x7c17, 0x7c0d, 0x7bf6, 0x7c23, 0x7c27,
- 0x7c2a, 0x7c1f, 0x7c37, 0x7c2b, 0x7c3d, 0x7c4c, 0x7c43, 0x7c54,
- 0x7c4f, 0x7c40, 0x7c50, 0x7c58, 0x7c5f, 0x7c64, 0x7c56, 0x7c65,
- 0x7c6c, 0x7c75, 0x7c83, 0x7c90, 0x7ca4, 0x7cad, 0x7ca2, 0x7cab,
- 0x7ca1, 0x7ca8, 0x7cb3, 0x7cb2, 0x7cb1, 0x7cae, 0x7cb9, 0x7cbd,
- 0x7cc0, 0x7cc5, 0x7cc2, 0x7cd8, 0x7cd2, 0x7cdc, 0x7ce2, 0x9b3b,
- 0x7cef, 0x7cf2, 0x7cf4, 0x7cf6, 0x7cfa, 0x7d06,
- /* 0x65 */
- 0x7d02, 0x7d1c, 0x7d15, 0x7d0a, 0x7d45, 0x7d4b, 0x7d2e, 0x7d32,
- 0x7d3f, 0x7d35, 0x7d46, 0x7d73, 0x7d56, 0x7d4e, 0x7d72, 0x7d68,
- 0x7d6e, 0x7d4f, 0x7d63, 0x7d93, 0x7d89, 0x7d5b, 0x7d8f, 0x7d7d,
- 0x7d9b, 0x7dba, 0x7dae, 0x7da3, 0x7db5, 0x7dc7, 0x7dbd, 0x7dab,
- 0x7e3d, 0x7da2, 0x7daf, 0x7ddc, 0x7db8, 0x7d9f, 0x7db0, 0x7dd8,
- 0x7ddd, 0x7de4, 0x7dde, 0x7dfb, 0x7df2, 0x7de1, 0x7e05, 0x7e0a,
- 0x7e23, 0x7e21, 0x7e12, 0x7e31, 0x7e1f, 0x7e09, 0x7e0b, 0x7e22,
- 0x7e46, 0x7e66, 0x7e3b, 0x7e35, 0x7e39, 0x7e43, 0x7e37, 0x7e32,
- 0x7e3a, 0x7e67, 0x7e5d, 0x7e56, 0x7e5e, 0x7e59, 0x7e5a, 0x7e79,
- 0x7e6a, 0x7e69, 0x7e7c, 0x7e7b, 0x7e83, 0x7dd5, 0x7e7d, 0x8fae,
- 0x7e7f, 0x7e88, 0x7e89, 0x7e8c, 0x7e92, 0x7e90, 0x7e93, 0x7e94,
- 0x7e96, 0x7e8e, 0x7e9b, 0x7e9c, 0x7f38, 0x7f3a,
- /* 0x66 */
- 0x7f45, 0x7f4c, 0x7f4d, 0x7f4e, 0x7f50, 0x7f51, 0x7f55, 0x7f54,
- 0x7f58, 0x7f5f, 0x7f60, 0x7f68, 0x7f69, 0x7f67, 0x7f78, 0x7f82,
- 0x7f86, 0x7f83, 0x7f88, 0x7f87, 0x7f8c, 0x7f94, 0x7f9e, 0x7f9d,
- 0x7f9a, 0x7fa3, 0x7faf, 0x7fb2, 0x7fb9, 0x7fae, 0x7fb6, 0x7fb8,
- 0x8b71, 0x7fc5, 0x7fc6, 0x7fca, 0x7fd5, 0x7fd4, 0x7fe1, 0x7fe6,
- 0x7fe9, 0x7ff3, 0x7ff9, 0x98dc, 0x8006, 0x8004, 0x800b, 0x8012,
- 0x8018, 0x8019, 0x801c, 0x8021, 0x8028, 0x803f, 0x803b, 0x804a,
- 0x8046, 0x8052, 0x8058, 0x805a, 0x805f, 0x8062, 0x8068, 0x8073,
- 0x8072, 0x8070, 0x8076, 0x8079, 0x807d, 0x807f, 0x8084, 0x8086,
- 0x8085, 0x809b, 0x8093, 0x809a, 0x80ad, 0x5190, 0x80ac, 0x80db,
- 0x80e5, 0x80d9, 0x80dd, 0x80c4, 0x80da, 0x80d6, 0x8109, 0x80ef,
- 0x80f1, 0x811b, 0x8129, 0x8123, 0x812f, 0x814b,
- /* 0x67 */
- 0x968b, 0x8146, 0x813e, 0x8153, 0x8151, 0x80fc, 0x8171, 0x816e,
- 0x8165, 0x8166, 0x8174, 0x8183, 0x8188, 0x818a, 0x8180, 0x8182,
- 0x81a0, 0x8195, 0x81a4, 0x81a3, 0x815f, 0x8193, 0x81a9, 0x81b0,
- 0x81b5, 0x81be, 0x81b8, 0x81bd, 0x81c0, 0x81c2, 0x81ba, 0x81c9,
- 0x81cd, 0x81d1, 0x81d9, 0x81d8, 0x81c8, 0x81da, 0x81df, 0x81e0,
- 0x81e7, 0x81fa, 0x81fb, 0x81fe, 0x8201, 0x8202, 0x8205, 0x8207,
- 0x820a, 0x820d, 0x8210, 0x8216, 0x8229, 0x822b, 0x8238, 0x8233,
- 0x8240, 0x8259, 0x8258, 0x825d, 0x825a, 0x825f, 0x8264, 0x8262,
- 0x8268, 0x826a, 0x826b, 0x822e, 0x8271, 0x8277, 0x8278, 0x827e,
- 0x828d, 0x8292, 0x82ab, 0x829f, 0x82bb, 0x82ac, 0x82e1, 0x82e3,
- 0x82df, 0x82d2, 0x82f4, 0x82f3, 0x82fa, 0x8393, 0x8303, 0x82fb,
- 0x82f9, 0x82de, 0x8306, 0x82dc, 0x8309, 0x82d9,
- /* 0x68 */
- 0x8335, 0x8334, 0x8316, 0x8332, 0x8331, 0x8340, 0x8339, 0x8350,
- 0x8345, 0x832f, 0x832b, 0x8317, 0x8318, 0x8385, 0x839a, 0x83aa,
- 0x839f, 0x83a2, 0x8396, 0x8323, 0x838e, 0x8387, 0x838a, 0x837c,
- 0x83b5, 0x8373, 0x8375, 0x83a0, 0x8389, 0x83a8, 0x83f4, 0x8413,
- 0x83eb, 0x83ce, 0x83fd, 0x8403, 0x83d8, 0x840b, 0x83c1, 0x83f7,
- 0x8407, 0x83e0, 0x83f2, 0x840d, 0x8422, 0x8420, 0x83bd, 0x8438,
- 0x8506, 0x83fb, 0x846d, 0x842a, 0x843c, 0x855a, 0x8484, 0x8477,
- 0x846b, 0x84ad, 0x846e, 0x8482, 0x8469, 0x8446, 0x842c, 0x846f,
- 0x8479, 0x8435, 0x84ca, 0x8462, 0x84b9, 0x84bf, 0x849f, 0x84d9,
- 0x84cd, 0x84bb, 0x84da, 0x84d0, 0x84c1, 0x84c6, 0x84d6, 0x84a1,
- 0x8521, 0x84ff, 0x84f4, 0x8517, 0x8518, 0x852c, 0x851f, 0x8515,
- 0x8514, 0x84fc, 0x8540, 0x8563, 0x8558, 0x8548,
- /* 0x69 */
- 0x8541, 0x8602, 0x854b, 0x8555, 0x8580, 0x85a4, 0x8588, 0x8591,
- 0x858a, 0x85a8, 0x856d, 0x8594, 0x859b, 0x85ea, 0x8587, 0x859c,
- 0x8577, 0x857e, 0x8590, 0x85c9, 0x85ba, 0x85cf, 0x85b9, 0x85d0,
- 0x85d5, 0x85dd, 0x85e5, 0x85dc, 0x85f9, 0x860a, 0x8613, 0x860b,
- 0x85fe, 0x85fa, 0x8606, 0x8622, 0x861a, 0x8630, 0x863f, 0x864d,
- 0x4e55, 0x8654, 0x865f, 0x8667, 0x8671, 0x8693, 0x86a3, 0x86a9,
- 0x86aa, 0x868b, 0x868c, 0x86b6, 0x86af, 0x86c4, 0x86c6, 0x86b0,
- 0x86c9, 0x8823, 0x86ab, 0x86d4, 0x86de, 0x86e9, 0x86ec, 0x86df,
- 0x86db, 0x86ef, 0x8712, 0x8706, 0x8708, 0x8700, 0x8703, 0x86fb,
- 0x8711, 0x8709, 0x870d, 0x86f9, 0x870a, 0x8734, 0x873f, 0x8737,
- 0x873b, 0x8725, 0x8729, 0x871a, 0x8760, 0x875f, 0x8778, 0x874c,
- 0x874e, 0x8774, 0x8757, 0x8768, 0x876e, 0x8759,
- /* 0x6a */
- 0x8753, 0x8763, 0x876a, 0x8805, 0x87a2, 0x879f, 0x8782, 0x87af,
- 0x87cb, 0x87bd, 0x87c0, 0x87d0, 0x96d6, 0x87ab, 0x87c4, 0x87b3,
- 0x87c7, 0x87c6, 0x87bb, 0x87ef, 0x87f2, 0x87e0, 0x880f, 0x880d,
- 0x87fe, 0x87f6, 0x87f7, 0x880e, 0x87d2, 0x8811, 0x8816, 0x8815,
- 0x8822, 0x8821, 0x8831, 0x8836, 0x8839, 0x8827, 0x883b, 0x8844,
- 0x8842, 0x8852, 0x8859, 0x885e, 0x8862, 0x886b, 0x8881, 0x887e,
- 0x889e, 0x8875, 0x887d, 0x88b5, 0x8872, 0x8882, 0x8897, 0x8892,
- 0x88ae, 0x8899, 0x88a2, 0x888d, 0x88a4, 0x88b0, 0x88bf, 0x88b1,
- 0x88c3, 0x88c4, 0x88d4, 0x88d8, 0x88d9, 0x88dd, 0x88f9, 0x8902,
- 0x88fc, 0x88f4, 0x88e8, 0x88f2, 0x8904, 0x890c, 0x890a, 0x8913,
- 0x8943, 0x891e, 0x8925, 0x892a, 0x892b, 0x8941, 0x8944, 0x893b,
- 0x8936, 0x8938, 0x894c, 0x891d, 0x8960, 0x895e,
- /* 0x6b */
- 0x8966, 0x8964, 0x896d, 0x896a, 0x896f, 0x8974, 0x8977, 0x897e,
- 0x8983, 0x8988, 0x898a, 0x8993, 0x8998, 0x89a1, 0x89a9, 0x89a6,
- 0x89ac, 0x89af, 0x89b2, 0x89ba, 0x89bd, 0x89bf, 0x89c0, 0x89da,
- 0x89dc, 0x89dd, 0x89e7, 0x89f4, 0x89f8, 0x8a03, 0x8a16, 0x8a10,
- 0x8a0c, 0x8a1b, 0x8a1d, 0x8a25, 0x8a36, 0x8a41, 0x8a5b, 0x8a52,
- 0x8a46, 0x8a48, 0x8a7c, 0x8a6d, 0x8a6c, 0x8a62, 0x8a85, 0x8a82,
- 0x8a84, 0x8aa8, 0x8aa1, 0x8a91, 0x8aa5, 0x8aa6, 0x8a9a, 0x8aa3,
- 0x8ac4, 0x8acd, 0x8ac2, 0x8ada, 0x8aeb, 0x8af3, 0x8ae7, 0x8ae4,
- 0x8af1, 0x8b14, 0x8ae0, 0x8ae2, 0x8af7, 0x8ade, 0x8adb, 0x8b0c,
- 0x8b07, 0x8b1a, 0x8ae1, 0x8b16, 0x8b10, 0x8b17, 0x8b20, 0x8b33,
- 0x97ab, 0x8b26, 0x8b2b, 0x8b3e, 0x8b28, 0x8b41, 0x8b4c, 0x8b4f,
- 0x8b4e, 0x8b49, 0x8b56, 0x8b5b, 0x8b5a, 0x8b6b,
- /* 0x6c */
- 0x8b5f, 0x8b6c, 0x8b6f, 0x8b74, 0x8b7d, 0x8b80, 0x8b8c, 0x8b8e,
- 0x8b92, 0x8b93, 0x8b96, 0x8b99, 0x8b9a, 0x8c3a, 0x8c41, 0x8c3f,
- 0x8c48, 0x8c4c, 0x8c4e, 0x8c50, 0x8c55, 0x8c62, 0x8c6c, 0x8c78,
- 0x8c7a, 0x8c82, 0x8c89, 0x8c85, 0x8c8a, 0x8c8d, 0x8c8e, 0x8c94,
- 0x8c7c, 0x8c98, 0x621d, 0x8cad, 0x8caa, 0x8cbd, 0x8cb2, 0x8cb3,
- 0x8cae, 0x8cb6, 0x8cc8, 0x8cc1, 0x8ce4, 0x8ce3, 0x8cda, 0x8cfd,
- 0x8cfa, 0x8cfb, 0x8d04, 0x8d05, 0x8d0a, 0x8d07, 0x8d0f, 0x8d0d,
- 0x8d10, 0x9f4e, 0x8d13, 0x8ccd, 0x8d14, 0x8d16, 0x8d67, 0x8d6d,
- 0x8d71, 0x8d73, 0x8d81, 0x8d99, 0x8dc2, 0x8dbe, 0x8dba, 0x8dcf,
- 0x8dda, 0x8dd6, 0x8dcc, 0x8ddb, 0x8dcb, 0x8dea, 0x8deb, 0x8ddf,
- 0x8de3, 0x8dfc, 0x8e08, 0x8e09, 0x8dff, 0x8e1d, 0x8e1e, 0x8e10,
- 0x8e1f, 0x8e42, 0x8e35, 0x8e30, 0x8e34, 0x8e4a,
- /* 0x6d */
- 0x8e47, 0x8e49, 0x8e4c, 0x8e50, 0x8e48, 0x8e59, 0x8e64, 0x8e60,
- 0x8e2a, 0x8e63, 0x8e55, 0x8e76, 0x8e72, 0x8e7c, 0x8e81, 0x8e87,
- 0x8e85, 0x8e84, 0x8e8b, 0x8e8a, 0x8e93, 0x8e91, 0x8e94, 0x8e99,
- 0x8eaa, 0x8ea1, 0x8eac, 0x8eb0, 0x8ec6, 0x8eb1, 0x8ebe, 0x8ec5,
- 0x8ec8, 0x8ecb, 0x8edb, 0x8ee3, 0x8efc, 0x8efb, 0x8eeb, 0x8efe,
- 0x8f0a, 0x8f05, 0x8f15, 0x8f12, 0x8f19, 0x8f13, 0x8f1c, 0x8f1f,
- 0x8f1b, 0x8f0c, 0x8f26, 0x8f33, 0x8f3b, 0x8f39, 0x8f45, 0x8f42,
- 0x8f3e, 0x8f4c, 0x8f49, 0x8f46, 0x8f4e, 0x8f57, 0x8f5c, 0x8f62,
- 0x8f63, 0x8f64, 0x8f9c, 0x8f9f, 0x8fa3, 0x8fad, 0x8faf, 0x8fb7,
- 0x8fda, 0x8fe5, 0x8fe2, 0x8fea, 0x8fef, 0x9087, 0x8ff4, 0x9005,
- 0x8ff9, 0x8ffa, 0x9011, 0x9015, 0x9021, 0x900d, 0x901e, 0x9016,
- 0x900b, 0x9027, 0x9036, 0x9035, 0x9039, 0x8ff8,
- /* 0x6e */
- 0x904f, 0x9050, 0x9051, 0x9052, 0x900e, 0x9049, 0x903e, 0x9056,
- 0x9058, 0x905e, 0x9068, 0x906f, 0x9076, 0x96a8, 0x9072, 0x9082,
- 0x907d, 0x9081, 0x9080, 0x908a, 0x9089, 0x908f, 0x90a8, 0x90af,
- 0x90b1, 0x90b5, 0x90e2, 0x90e4, 0x6248, 0x90db, 0x9102, 0x9112,
- 0x9119, 0x9132, 0x9130, 0x914a, 0x9156, 0x9158, 0x9163, 0x9165,
- 0x9169, 0x9173, 0x9172, 0x918b, 0x9189, 0x9182, 0x91a2, 0x91ab,
- 0x91af, 0x91aa, 0x91b5, 0x91b4, 0x91ba, 0x91c0, 0x91c1, 0x91c9,
- 0x91cb, 0x91d0, 0x91d6, 0x91df, 0x91e1, 0x91db, 0x91fc, 0x91f5,
- 0x91f6, 0x921e, 0x91ff, 0x9214, 0x922c, 0x9215, 0x9211, 0x925e,
- 0x9257, 0x9245, 0x9249, 0x9264, 0x9248, 0x9295, 0x923f, 0x924b,
- 0x9250, 0x929c, 0x9296, 0x9293, 0x929b, 0x925a, 0x92cf, 0x92b9,
- 0x92b7, 0x92e9, 0x930f, 0x92fa, 0x9344, 0x932e,
- /* 0x6f */
- 0x9319, 0x9322, 0x931a, 0x9323, 0x933a, 0x9335, 0x933b, 0x935c,
- 0x9360, 0x937c, 0x936e, 0x9356, 0x93b0, 0x93ac, 0x93ad, 0x9394,
- 0x93b9, 0x93d6, 0x93d7, 0x93e8, 0x93e5, 0x93d8, 0x93c3, 0x93dd,
- 0x93d0, 0x93c8, 0x93e4, 0x941a, 0x9414, 0x9413, 0x9403, 0x9407,
- 0x9410, 0x9436, 0x942b, 0x9435, 0x9421, 0x943a, 0x9441, 0x9452,
- 0x9444, 0x945b, 0x9460, 0x9462, 0x945e, 0x946a, 0x9229, 0x9470,
- 0x9475, 0x9477, 0x947d, 0x945a, 0x947c, 0x947e, 0x9481, 0x947f,
- 0x9582, 0x9587, 0x958a, 0x9594, 0x9596, 0x9598, 0x9599, 0x95a0,
- 0x95a8, 0x95a7, 0x95ad, 0x95bc, 0x95bb, 0x95b9, 0x95be, 0x95ca,
- 0x6ff6, 0x95c3, 0x95cd, 0x95cc, 0x95d5, 0x95d4, 0x95d6, 0x95dc,
- 0x95e1, 0x95e5, 0x95e2, 0x9621, 0x9628, 0x962e, 0x962f, 0x9642,
- 0x964c, 0x964f, 0x964b, 0x9677, 0x965c, 0x965e,
- /* 0x70 */
- 0x965d, 0x965f, 0x9666, 0x9672, 0x966c, 0x968d, 0x9698, 0x9695,
- 0x9697, 0x96aa, 0x96a7, 0x96b1, 0x96b2, 0x96b0, 0x96b4, 0x96b6,
- 0x96b8, 0x96b9, 0x96ce, 0x96cb, 0x96c9, 0x96cd, 0x894d, 0x96dc,
- 0x970d, 0x96d5, 0x96f9, 0x9704, 0x9706, 0x9708, 0x9713, 0x970e,
- 0x9711, 0x970f, 0x9716, 0x9719, 0x9724, 0x972a, 0x9730, 0x9739,
- 0x973d, 0x973e, 0x9744, 0x9746, 0x9748, 0x9742, 0x9749, 0x975c,
- 0x9760, 0x9764, 0x9766, 0x9768, 0x52d2, 0x976b, 0x9771, 0x9779,
- 0x9785, 0x977c, 0x9781, 0x977a, 0x9786, 0x978b, 0x978f, 0x9790,
- 0x979c, 0x97a8, 0x97a6, 0x97a3, 0x97b3, 0x97b4, 0x97c3, 0x97c6,
- 0x97c8, 0x97cb, 0x97dc, 0x97ed, 0x9f4f, 0x97f2, 0x7adf, 0x97f6,
- 0x97f5, 0x980f, 0x980c, 0x9838, 0x9824, 0x9821, 0x9837, 0x983d,
- 0x9846, 0x984f, 0x984b, 0x986b, 0x986f, 0x9870,
- /* 0x71 */
- 0x9871, 0x9874, 0x9873, 0x98aa, 0x98af, 0x98b1, 0x98b6, 0x98c4,
- 0x98c3, 0x98c6, 0x98e9, 0x98eb, 0x9903, 0x9909, 0x9912, 0x9914,
- 0x9918, 0x9921, 0x991d, 0x991e, 0x9924, 0x9920, 0x992c, 0x992e,
- 0x993d, 0x993e, 0x9942, 0x9949, 0x9945, 0x9950, 0x994b, 0x9951,
- 0x9952, 0x994c, 0x9955, 0x9997, 0x9998, 0x99a5, 0x99ad, 0x99ae,
- 0x99bc, 0x99df, 0x99db, 0x99dd, 0x99d8, 0x99d1, 0x99ed, 0x99ee,
- 0x99f1, 0x99f2, 0x99fb, 0x99f8, 0x9a01, 0x9a0f, 0x9a05, 0x99e2,
- 0x9a19, 0x9a2b, 0x9a37, 0x9a45, 0x9a42, 0x9a40, 0x9a43, 0x9a3e,
- 0x9a55, 0x9a4d, 0x9a5b, 0x9a57, 0x9a5f, 0x9a62, 0x9a65, 0x9a64,
- 0x9a69, 0x9a6b, 0x9a6a, 0x9aad, 0x9ab0, 0x9abc, 0x9ac0, 0x9acf,
- 0x9ad1, 0x9ad3, 0x9ad4, 0x9ade, 0x9adf, 0x9ae2, 0x9ae3, 0x9ae6,
- 0x9aef, 0x9aeb, 0x9aee, 0x9af4, 0x9af1, 0x9af7,
- /* 0x72 */
- 0x9afb, 0x9b06, 0x9b18, 0x9b1a, 0x9b1f, 0x9b22, 0x9b23, 0x9b25,
- 0x9b27, 0x9b28, 0x9b29, 0x9b2a, 0x9b2e, 0x9b2f, 0x9b32, 0x9b44,
- 0x9b43, 0x9b4f, 0x9b4d, 0x9b4e, 0x9b51, 0x9b58, 0x9b74, 0x9b93,
- 0x9b83, 0x9b91, 0x9b96, 0x9b97, 0x9b9f, 0x9ba0, 0x9ba8, 0x9bb4,
- 0x9bc0, 0x9bca, 0x9bb9, 0x9bc6, 0x9bcf, 0x9bd1, 0x9bd2, 0x9be3,
- 0x9be2, 0x9be4, 0x9bd4, 0x9be1, 0x9c3a, 0x9bf2, 0x9bf1, 0x9bf0,
- 0x9c15, 0x9c14, 0x9c09, 0x9c13, 0x9c0c, 0x9c06, 0x9c08, 0x9c12,
- 0x9c0a, 0x9c04, 0x9c2e, 0x9c1b, 0x9c25, 0x9c24, 0x9c21, 0x9c30,
- 0x9c47, 0x9c32, 0x9c46, 0x9c3e, 0x9c5a, 0x9c60, 0x9c67, 0x9c76,
- 0x9c78, 0x9ce7, 0x9cec, 0x9cf0, 0x9d09, 0x9d08, 0x9ceb, 0x9d03,
- 0x9d06, 0x9d2a, 0x9d26, 0x9daf, 0x9d23, 0x9d1f, 0x9d44, 0x9d15,
- 0x9d12, 0x9d41, 0x9d3f, 0x9d3e, 0x9d46, 0x9d48,
- /* 0x73 */
- 0x9d5d, 0x9d5e, 0x9d64, 0x9d51, 0x9d50, 0x9d59, 0x9d72, 0x9d89,
- 0x9d87, 0x9dab, 0x9d6f, 0x9d7a, 0x9d9a, 0x9da4, 0x9da9, 0x9db2,
- 0x9dc4, 0x9dc1, 0x9dbb, 0x9db8, 0x9dba, 0x9dc6, 0x9dcf, 0x9dc2,
- 0x9dd9, 0x9dd3, 0x9df8, 0x9de6, 0x9ded, 0x9def, 0x9dfd, 0x9e1a,
- 0x9e1b, 0x9e1e, 0x9e75, 0x9e79, 0x9e7d, 0x9e81, 0x9e88, 0x9e8b,
- 0x9e8c, 0x9e92, 0x9e95, 0x9e91, 0x9e9d, 0x9ea5, 0x9ea9, 0x9eb8,
- 0x9eaa, 0x9ead, 0x9761, 0x9ecc, 0x9ece, 0x9ecf, 0x9ed0, 0x9ed4,
- 0x9edc, 0x9ede, 0x9edd, 0x9ee0, 0x9ee5, 0x9ee8, 0x9eef, 0x9ef4,
- 0x9ef6, 0x9ef7, 0x9ef9, 0x9efb, 0x9efc, 0x9efd, 0x9f07, 0x9f08,
- 0x76b7, 0x9f15, 0x9f21, 0x9f2c, 0x9f3e, 0x9f4a, 0x9f52, 0x9f54,
- 0x9f63, 0x9f5f, 0x9f60, 0x9f61, 0x9f66, 0x9f67, 0x9f6c, 0x9f6a,
- 0x9f77, 0x9f72, 0x9f76, 0x9f95, 0x9f9c, 0x9fa0,
- /* 0x74 */
- 0x582f, 0x69c7, 0x9059, 0x7464, 0x51dc, 0x7199,
-};
-
-static int
-jisx0208_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n)
-{
- unsigned char c1 = (s[0] & 0x7F);
- if ((c1 >= 0x21 && c1 <= 0x28) || (c1 >= 0x30 && c1 <= 0x74)) {
- if (n >= 2) {
- unsigned char c2 = (s[1] & 0x7F);
- if (c2 >= 0x21 && c2 < 0x7f) {
- unsigned int i = 94 * (c1 - 0x21) + (c2 - 0x21);
- unsigned short wc = 0xfffd;
- if (i < 1410) {
- if (i < 690)
- wc = jisx0208_2uni_page21[i];
- } else {
- if (i < 7808)
- wc = jisx0208_2uni_page30[i-1410];
- }
- if (wc != 0xfffd) {
- *pwc = (ucs4_t) wc;
- return 2;
- }
- }
- return RET_ILSEQ;
- }
- return RET_TOOFEW(0);
- }
- return RET_ILSEQ;
-}
-
-static const unsigned short jisx0208_2charset[6879] = {
- 0x2140, 0x2171, 0x2172, 0x2178, 0x212f, 0x224c, 0x216b, 0x215e,
- 0x212d, 0x2279, 0x215f, 0x2160, 0x2621, 0x2622, 0x2623, 0x2624,
- 0x2625, 0x2626, 0x2627, 0x2628, 0x2629, 0x262a, 0x262b, 0x262c,
- 0x262d, 0x262e, 0x262f, 0x2630, 0x2631, 0x2632, 0x2633, 0x2634,
- 0x2635, 0x2636, 0x2637, 0x2638, 0x2641, 0x2642, 0x2643, 0x2644,
- 0x2645, 0x2646, 0x2647, 0x2648, 0x2649, 0x264a, 0x264b, 0x264c,
- 0x264d, 0x264e, 0x264f, 0x2650, 0x2651, 0x2652, 0x2653, 0x2654,
- 0x2655, 0x2656, 0x2657, 0x2658, 0x2727, 0x2721, 0x2722, 0x2723,
- 0x2724, 0x2725, 0x2726, 0x2728, 0x2729, 0x272a, 0x272b, 0x272c,
- 0x272d, 0x272e, 0x272f, 0x2730, 0x2731, 0x2732, 0x2733, 0x2734,
- 0x2735, 0x2736, 0x2737, 0x2738, 0x2739, 0x273a, 0x273b, 0x273c,
- 0x273d, 0x273e, 0x273f, 0x2740, 0x2741, 0x2751, 0x2752, 0x2753,
- 0x2754, 0x2755, 0x2756, 0x2758, 0x2759, 0x275a, 0x275b, 0x275c,
- 0x275d, 0x275e, 0x275f, 0x2760, 0x2761, 0x2762, 0x2763, 0x2764,
- 0x2765, 0x2766, 0x2767, 0x2768, 0x2769, 0x276a, 0x276b, 0x276c,
- 0x276d, 0x276e, 0x276f, 0x2770, 0x2771, 0x2757, 0x213e, 0x213d,
- 0x2142, 0x2146, 0x2147, 0x2148, 0x2149, 0x2277, 0x2278, 0x2145,
- 0x2144, 0x2273, 0x216c, 0x216d, 0x2228, 0x216e, 0x2272, 0x222b,
- 0x222c, 0x222a, 0x222d, 0x224d, 0x224e, 0x224f, 0x225f, 0x2250,
- 0x2260, 0x223a, 0x223b, 0x215d, 0x2265, 0x2267, 0x2167, 0x225c,
- 0x224a, 0x224b, 0x2241, 0x2240, 0x2269, 0x226a, 0x2168, 0x2268,
- 0x2266, 0x2262, 0x2162, 0x2261, 0x2165, 0x2166, 0x2263, 0x2264,
- 0x223e, 0x223f, 0x223c, 0x223d, 0x225d, 0x225e, 0x2821, 0x282c,
- 0x2822, 0x282d, 0x2823, 0x282e, 0x2824, 0x282f, 0x2826, 0x2831,
- 0x2825, 0x2830, 0x2827, 0x283c, 0x2837, 0x2832, 0x2829, 0x283e,
- 0x2839, 0x2834, 0x2828, 0x2838, 0x283d, 0x2833, 0x282a, 0x283a,
- 0x283f, 0x2835, 0x282b, 0x283b, 0x2840, 0x2836, 0x2223, 0x2222,
- 0x2225, 0x2224, 0x2227, 0x2226, 0x2221, 0x217e, 0x217b, 0x217d,
- 0x217c, 0x227e, 0x217a, 0x2179, 0x216a, 0x2169, 0x2276, 0x2275,
- 0x2274, 0x2121, 0x2122, 0x2123, 0x2137, 0x2139, 0x213a, 0x213b,
- 0x2152, 0x2153, 0x2154, 0x2155, 0x2156, 0x2157, 0x2158, 0x2159,
- 0x215a, 0x215b, 0x2229, 0x222e, 0x214c, 0x214d, 0x2141, 0x2421,
- 0x2422, 0x2423, 0x2424, 0x2425, 0x2426, 0x2427, 0x2428, 0x2429,
- 0x242a, 0x242b, 0x242c, 0x242d, 0x242e, 0x242f, 0x2430, 0x2431,
- 0x2432, 0x2433, 0x2434, 0x2435, 0x2436, 0x2437, 0x2438, 0x2439,
- 0x243a, 0x243b, 0x243c, 0x243d, 0x243e, 0x243f, 0x2440, 0x2441,
- 0x2442, 0x2443, 0x2444, 0x2445, 0x2446, 0x2447, 0x2448, 0x2449,
- 0x244a, 0x244b, 0x244c, 0x244d, 0x244e, 0x244f, 0x2450, 0x2451,
- 0x2452, 0x2453, 0x2454, 0x2455, 0x2456, 0x2457, 0x2458, 0x2459,
- 0x245a, 0x245b, 0x245c, 0x245d, 0x245e, 0x245f, 0x2460, 0x2461,
- 0x2462, 0x2463, 0x2464, 0x2465, 0x2466, 0x2467, 0x2468, 0x2469,
- 0x246a, 0x246b, 0x246c, 0x246d, 0x246e, 0x246f, 0x2470, 0x2471,
- 0x2472, 0x2473, 0x212b, 0x212c, 0x2135, 0x2136, 0x2521, 0x2522,
- 0x2523, 0x2524, 0x2525, 0x2526, 0x2527, 0x2528, 0x2529, 0x252a,
- 0x252b, 0x252c, 0x252d, 0x252e, 0x252f, 0x2530, 0x2531, 0x2532,
- 0x2533, 0x2534, 0x2535, 0x2536, 0x2537, 0x2538, 0x2539, 0x253a,
- 0x253b, 0x253c, 0x253d, 0x253e, 0x253f, 0x2540, 0x2541, 0x2542,
- 0x2543, 0x2544, 0x2545, 0x2546, 0x2547, 0x2548, 0x2549, 0x254a,
- 0x254b, 0x254c, 0x254d, 0x254e, 0x254f, 0x2550, 0x2551, 0x2552,
- 0x2553, 0x2554, 0x2555, 0x2556, 0x2557, 0x2558, 0x2559, 0x255a,
- 0x255b, 0x255c, 0x255d, 0x255e, 0x255f, 0x2560, 0x2561, 0x2562,
- 0x2563, 0x2564, 0x2565, 0x2566, 0x2567, 0x2568, 0x2569, 0x256a,
- 0x256b, 0x256c, 0x256d, 0x256e, 0x256f, 0x2570, 0x2571, 0x2572,
- 0x2573, 0x2574, 0x2575, 0x2576, 0x2126, 0x213c, 0x2133, 0x2134,
- 0x306c, 0x437a, 0x3c37, 0x4b7c, 0x3e66, 0x3b30, 0x3e65, 0x323c,
- 0x4954, 0x4d3f, 0x5022, 0x312f, 0x336e, 0x5023, 0x4024, 0x5242,
- 0x3556, 0x4a3a, 0x3e67, 0x4e3e, 0x4a42, 0x5024, 0x4366, 0x5025,
- 0x367a, 0x5026, 0x345d, 0x4330, 0x3c67, 0x5027, 0x5028, 0x5029,
- 0x4735, 0x3557, 0x4737, 0x4663, 0x3843, 0x4b33, 0x6949, 0x502a,
- 0x3e68, 0x502b, 0x3235, 0x3665, 0x3870, 0x4c69, 0x5626, 0x4d70,
- 0x467d, 0x3425, 0x3535, 0x502c, 0x502d, 0x4e3b, 0x4d3d, 0x4168,
- 0x502f, 0x3b76, 0x4673, 0x5032, 0x313e, 0x385f, 0x385e, 0x3066,
- 0x4f4b, 0x4f4a, 0x3a33, 0x3021, 0x5033, 0x5034, 0x5035, 0x4b34,
- 0x5036, 0x3872, 0x3067, 0x4b72, 0x357c, 0x357d, 0x357e, 0x4462,
- 0x4e3c, 0x5037, 0x5038, 0x5039, 0x3f4d, 0x3d3a, 0x3f4e, 0x503e,
- 0x503c, 0x503d, 0x3558, 0x3a23, 0x3270, 0x503b, 0x503a, 0x4a29,
- 0x3b46, 0x3b45, 0x423e, 0x503f, 0x4955, 0x4067, 0x2138, 0x5040,
- 0x5042, 0x4265, 0x4e61, 0x304a, 0x5041, 0x323e, 0x3644, 0x4367,
- 0x376f, 0x5043, 0x4724, 0x346b, 0x5044, 0x304b, 0x3860, 0x346c,
- 0x497a, 0x4832, 0x3559, 0x3271, 0x5067, 0x4541, 0x476c, 0x5046,
- 0x483c, 0x4e62, 0x3f2d, 0x3b47, 0x3b77, 0x3240, 0x4451, 0x4322,
- 0x504a, 0x304c, 0x4463, 0x3d3b, 0x3a34, 0x4d24, 0x424e, 0x323f,
- 0x5049, 0x4d3e, 0x5045, 0x5047, 0x3a6e, 0x5048, 0x5524, 0x5050,
- 0x5053, 0x5051, 0x3242, 0x4a3b, 0x504b, 0x504f, 0x3873, 0x3b48,
- 0x3426, 0x5054, 0x504c, 0x4e63, 0x3b78, 0x504d, 0x5052, 0x5055,
- 0x504e, 0x3621, 0x304d, 0x3622, 0x3241, 0x5525, 0x4b79, 0x496e,
- 0x3874, 0x3f2f, 0x4e37, 0x4a58, 0x3738, 0x4225, 0x3264, 0x3d53,
- 0x5059, 0x505e, 0x505c, 0x5057, 0x422f, 0x505a, 0x505d, 0x505b,
- 0x4a5d, 0x5058, 0x3f2e, 0x4b73, 0x505f, 0x5060, 0x3d24, 0x506d,
- 0x4750, 0x4936, 0x5068, 0x4a70, 0x3236, 0x506c, 0x5066, 0x506f,
- 0x4152, 0x3844, 0x475c, 0x6047, 0x506e, 0x455d, 0x5063, 0x3876,
- 0x3875, 0x5061, 0x3c5a, 0x5069, 0x4a6f, 0x434d, 0x5065, 0x3771,
- 0x5062, 0x506a, 0x5064, 0x4e51, 0x506b, 0x4f41, 0x3666, 0x3770,
- 0x5070, 0x5071, 0x5075, 0x304e, 0x4a50, 0x5074, 0x5073, 0x5077,
- 0x5076, 0x4464, 0x3772, 0x5078, 0x3c45, 0x4226, 0x4465, 0x3676,
- 0x5079, 0x3536, 0x507a, 0x507c, 0x4b35, 0x3766, 0x3b31, 0x4877,
- 0x507b, 0x3a45, 0x4d43, 0x507e, 0x5123, 0x507d, 0x3a44, 0x3d7d,
- 0x3739, 0x5124, 0x364f, 0x5121, 0x5122, 0x462f, 0x417c, 0x3623,
- 0x4b4d, 0x5125, 0x4e3d, 0x5126, 0x5129, 0x5127, 0x414e, 0x5128,
- 0x512a, 0x512c, 0x512b, 0x4a48, 0x3537, 0x512e, 0x512f, 0x322f,
- 0x512d, 0x3c74, 0x5132, 0x5131, 0x5130, 0x5056, 0x5133, 0x3d7e,
- 0x5134, 0x4d25, 0x4c59, 0x5136, 0x5135, 0x5138, 0x5137, 0x5139,
- 0x513a, 0x3074, 0x3835, 0x373b, 0x3d3c, 0x437b, 0x3624, 0x4068,
- 0x3877, 0x396e, 0x513c, 0x4c48, 0x4546, 0x3b79, 0x513b, 0x513d,
- 0x455e, 0x3375, 0x513e, 0x467e, 0x4134, 0x5140, 0x5141, 0x482c,
- 0x3878, 0x4f3b, 0x5142, 0x3626, 0x4a3c, 0x4236, 0x3671, 0x4535,
- 0x3773, 0x5143, 0x5144, 0x4662, 0x315f, 0x5147, 0x3a7d, 0x5146,
- 0x3a46, 0x5148, 0x666e, 0x5149, 0x4b41, 0x514a, 0x514b, 0x514c,
- 0x3e69, 0x3c4c, 0x3427, 0x514f, 0x514d, 0x4c3d, 0x514e, 0x495a,
- 0x5150, 0x5151, 0x5152, 0x455f, 0x5156, 0x5154, 0x5155, 0x5153,
- 0x3a63, 0x5157, 0x4c6a, 0x4e64, 0x5158, 0x4028, 0x5159, 0x3d5a,
- 0x515a, 0x437c, 0x4e3f, 0x4560, 0x5245, 0x515b, 0x7425, 0x3645,
- 0x515c, 0x4b5e, 0x3d68, 0x427c, 0x515e, 0x4664, 0x515f, 0x5160,
- 0x332e, 0x5161, 0x3627, 0x464c, 0x317a, 0x3d50, 0x4821, 0x5162,
- 0x4561, 0x3f4f, 0x5163, 0x4a2c, 0x405a, 0x3422, 0x3429, 0x5164,
- 0x5166, 0x373a, 0x5165, 0x4e73, 0x3d69, 0x483d, 0x4a4c, 0x5167,
- 0x4d78, 0x5168, 0x5169, 0x457e, 0x516a, 0x4029, 0x3a7e, 0x3774,
- 0x516b, 0x3b49, 0x396f, 0x4466, 0x516d, 0x4227, 0x3a6f, 0x516e,
- 0x516f, 0x4130, 0x516c, 0x5171, 0x4b36, 0x3964, 0x5170, 0x3775,
- 0x3a5e, 0x476d, 0x5174, 0x5172, 0x497b, 0x3e6a, 0x517b, 0x3364,
- 0x5175, 0x5173, 0x414f, 0x5177, 0x5176, 0x3344, 0x3760, 0x517c,
- 0x4e2d, 0x5178, 0x517d, 0x517a, 0x5179, 0x4e4f, 0x3879, 0x3243,
- 0x4e74, 0x3d75, 0x4558, 0x3965, 0x5222, 0x5223, 0x4e65, 0x4f2b,
- 0x5225, 0x387a, 0x5224, 0x332f, 0x5226, 0x4b56, 0x443c, 0x4d26,
- 0x4a59, 0x5227, 0x7055, 0x4630, 0x5228, 0x342a, 0x4c33, 0x3e21,
- 0x5229, 0x4a67, 0x522d, 0x402a, 0x522a, 0x3650, 0x522b, 0x342b,
- 0x372e, 0x522e, 0x522f, 0x5230, 0x5231, 0x3c5b, 0x387b, 0x4c5e,
- 0x4c68, 0x4677, 0x4a71, 0x5232, 0x5233, 0x5235, 0x5237, 0x5236,
- 0x5238, 0x323d, 0x4b4c, 0x3a7c, 0x5239, 0x4159, 0x3e22, 0x3629,
- 0x523a, 0x485b, 0x523b, 0x523c, 0x523d, 0x523e, 0x4924, 0x3668,
- 0x3065, 0x463f, 0x523f, 0x3d3d, 0x4069, 0x5241, 0x5240, 0x3e23,
- 0x3861, 0x5243, 0x483e, 0x5244, 0x485c, 0x4234, 0x426e, 0x3628,
- 0x466e, 0x4331, 0x476e, 0x4b4e, 0x5246, 0x406a, 0x3735, 0x5247,
- 0x5248, 0x312c, 0x3075, 0x346d, 0x4228, 0x3551, 0x4d71, 0x524b,
- 0x3237, 0x524a, 0x362a, 0x524c, 0x4c71, 0x524d, 0x4e52, 0x387c,
- 0x3836, 0x524e, 0x5250, 0x524f, 0x3f5f, 0x3139, 0x315e, 0x5251,
- 0x5252, 0x3837, 0x5253, 0x356e, 0x3b32, 0x5254, 0x4b74, 0x3a35,
- 0x355a, 0x4d27, 0x4150, 0x483f, 0x3c7d, 0x3d47, 0x3c68, 0x3c75,
- 0x3d76, 0x4840, 0x5257, 0x3143, 0x4151, 0x387d, 0x3845, 0x3667,
- 0x525b, 0x4321, 0x427e, 0x362b, 0x3e24, 0x525c, 0x525a, 0x3244,
- 0x4266, 0x3c38, 0x3b4b, 0x3126, 0x3370, 0x3966, 0x3b4a, 0x525d,
- 0x525e, 0x3549, 0x3346, 0x3967, 0x3548, 0x445f, 0x3125, 0x4631,
- 0x4c3e, 0x3921, 0x4d79, 0x4547, 0x387e, 0x372f, 0x5267, 0x3663,
- 0x4b4a, 0x485d, 0x5266, 0x345e, 0x5261, 0x5262, 0x5264, 0x5265,
- 0x355b, 0x3f61, 0x4a2d, 0x5263, 0x525f, 0x3863, 0x5260, 0x4f24,
- 0x4a72, 0x4468, 0x3862, 0x3970, 0x5268, 0x465d, 0x526c, 0x3c7e,
- 0x3c76, 0x526f, 0x526d, 0x4c23, 0x526a, 0x5273, 0x526e, 0x5271,
- 0x3846, 0x4c3f, 0x5272, 0x5274, 0x5276, 0x3a70, 0x4f42, 0x526b,
- 0x5269, 0x5275, 0x5270, 0x5278, 0x5323, 0x527a, 0x527e, 0x5321,
- 0x527b, 0x533e, 0x3a69, 0x3331, 0x5279, 0x5325, 0x3076, 0x5324,
- 0x3025, 0x494a, 0x5322, 0x527c, 0x5277, 0x527d, 0x3a48, 0x5326,
- 0x3077, 0x532f, 0x5327, 0x5328, 0x3e25, 0x4b69, 0x532d, 0x532c,
- 0x452f, 0x532e, 0x532b, 0x3134, 0x3a36, 0x3f30, 0x5329, 0x4562,
- 0x532a, 0x3022, 0x5334, 0x4d23, 0x3e27, 0x533a, 0x5339, 0x5330,
- 0x4243, 0x5331, 0x426f, 0x5336, 0x3e26, 0x5333, 0x4c64, 0x373c,
- 0x5337, 0x5338, 0x5335, 0x533b, 0x5332, 0x5341, 0x5346, 0x5342,
- 0x533d, 0x5347, 0x4131, 0x5349, 0x3922, 0x533f, 0x437d, 0x5343,
- 0x533c, 0x342d, 0x346e, 0x3365, 0x5344, 0x5340, 0x3776, 0x534a,
- 0x5348, 0x4153, 0x354a, 0x362c, 0x5345, 0x3674, 0x3144, 0x534e,
- 0x534c, 0x5427, 0x5351, 0x534b, 0x534f, 0x534d, 0x3b4c, 0x5350,
- 0x5353, 0x5358, 0x5356, 0x5355, 0x4332, 0x3245, 0x5352, 0x5354,
- 0x3e28, 0x3133, 0x5357, 0x325e, 0x5362, 0x3e7c, 0x535e, 0x535c,
- 0x535d, 0x535f, 0x313d, 0x4139, 0x5359, 0x535a, 0x337a, 0x5361,
- 0x346f, 0x5364, 0x5360, 0x5363, 0x4a2e, 0x4655, 0x4838, 0x5366,
- 0x5365, 0x3345, 0x5367, 0x536a, 0x5369, 0x5368, 0x4739, 0x536b,
- 0x536c, 0x536e, 0x536d, 0x5370, 0x5373, 0x5371, 0x536f, 0x5372,
- 0x5374, 0x5375, 0x5376, 0x5377, 0x5378, 0x5145, 0x3c7c, 0x3b4d,
- 0x3273, 0x3078, 0x4344, 0x5379, 0x3a24, 0x304f, 0x3f5e, 0x537a,
- 0x3847, 0x3971, 0x537c, 0x537b, 0x4a60, 0x537d, 0x5421, 0x537e,
- 0x5422, 0x5423, 0x3777, 0x3160, 0x5424, 0x5426, 0x5425, 0x5428,
- 0x455a, 0x5429, 0x3035, 0x3a5f, 0x373d, 0x434f, 0x542a, 0x542b,
- 0x542d, 0x542e, 0x3a64, 0x3651, 0x4b37, 0x542c, 0x542f, 0x3a41,
- 0x3923, 0x5433, 0x3a25, 0x4333, 0x5430, 0x445a, 0x5434, 0x3f62,
- 0x5432, 0x5435, 0x373f, 0x5436, 0x5437, 0x3924, 0x3340, 0x5439,
- 0x543a, 0x543b, 0x5438, 0x5431, 0x543c, 0x543d, 0x4b64, 0x3e6b,
- 0x543f, 0x5440, 0x543e, 0x5442, 0x4738, 0x3068, 0x4956, 0x5443,
- 0x3e7d, 0x3c39, 0x475d, 0x3470, 0x3a6b, 0x4b59, 0x4632, 0x3778,
- 0x424f, 0x5441, 0x5444, 0x4244, 0x5445, 0x5446, 0x5448, 0x4469,
- 0x342e, 0x7421, 0x3161, 0x4a73, 0x3e6c, 0x4548, 0x3a66, 0x544e,
- 0x4a3d, 0x4e5d, 0x3274, 0x544a, 0x413a, 0x544d, 0x4563, 0x4549,
- 0x4564, 0x4839, 0x444d, 0x3a49, 0x5449, 0x3176, 0x4536, 0x544b,
- 0x5447, 0x3f50, 0x544f, 0x3d4e, 0x362d, 0x5450, 0x4a68, 0x417d,
- 0x4446, 0x5452, 0x4b4f, 0x5453, 0x5458, 0x4a2f, 0x5457, 0x5451,
- 0x5454, 0x5456, 0x3a26, 0x4a49, 0x5459, 0x4345, 0x3275, 0x3e6d,
- 0x545b, 0x545a, 0x3968, 0x545c, 0x545e, 0x545d, 0x5460, 0x5455,
- 0x5462, 0x5461, 0x545f, 0x3b4e, 0x3f51, 0x4154, 0x5463, 0x403c,
- 0x306d, 0x4764, 0x445b, 0x5465, 0x5464, 0x5466, 0x5467, 0x5468,
- 0x5469, 0x4a51, 0x546a, 0x3246, 0x546b, 0x4d3c, 0x3330, 0x5249,
- 0x3d48, 0x423f, 0x546c, 0x4c6b, 0x4c34, 0x546e, 0x4267, 0x4537,
- 0x4240, 0x4957, 0x546f, 0x5470, 0x317b, 0x3c3a, 0x5471, 0x3050,
- 0x5472, 0x5473, 0x3162, 0x3471, 0x4660, 0x4a74, 0x5477, 0x4155,
- 0x5476, 0x3740, 0x4b5b, 0x5475, 0x4565, 0x5479, 0x5478, 0x547b,
- 0x547a, 0x317c, 0x547c, 0x3e29, 0x547e, 0x4325, 0x547d, 0x4a33,
- 0x3d77, 0x455b, 0x5521, 0x3925, 0x5522, 0x4721, 0x485e, 0x4c51,
- 0x4725, 0x552b, 0x3538, 0x4d45, 0x4c2f, 0x562c, 0x5523, 0x5526,
- 0x4245, 0x4b38, 0x454a, 0x5527, 0x4b65, 0x3a4a, 0x3e2a, 0x5528,
- 0x3b50, 0x3b4f, 0x3039, 0x3848, 0x402b, 0x3051, 0x552c, 0x552d,
- 0x552a, 0x3138, 0x342f, 0x5529, 0x4c45, 0x4931, 0x3028, 0x3079,
- 0x3b51, 0x3052, 0x3023, 0x5532, 0x5530, 0x4c3c, 0x5533, 0x5531,
- 0x552f, 0x3f31, 0x552e, 0x4a5a, 0x3864, 0x5537, 0x5538, 0x3e2b,
- 0x5534, 0x4f2c, 0x474c, 0x5536, 0x3a27, 0x5539, 0x4958, 0x553a,
- 0x5535, 0x4c3b, 0x475e, 0x553b, 0x4932, 0x553c, 0x5540, 0x553d,
- 0x3247, 0x553f, 0x3c3b, 0x553e, 0x3779, 0x554c, 0x5545, 0x5542,
- 0x4364, 0x5541, 0x5543, 0x5544, 0x5546, 0x5547, 0x3472, 0x5549,
- 0x5548, 0x554a, 0x3e6e, 0x554d, 0x445c, 0x3145, 0x554b, 0x554e,
- 0x554f, 0x5552, 0x5550, 0x5551, 0x3b52, 0x5553, 0x3926, 0x5554,
- 0x3b7a, 0x4238, 0x5555, 0x5556, 0x3b5a, 0x3927, 0x4c52, 0x3528,
- 0x3849, 0x5557, 0x3358, 0x5558, 0x4239, 0x5559, 0x5623, 0x555a,
- 0x555b, 0x555c, 0x555e, 0x555f, 0x5560, 0x4270, 0x3127, 0x3c69,
- 0x3042, 0x4157, 0x3430, 0x3c35, 0x3928, 0x4566, 0x3d21, 0x3431,
- 0x4368, 0x446a, 0x3038, 0x3539, 0x4a75, 0x3c42, 0x3552, 0x406b,
- 0x3c3c, 0x4d28, 0x5561, 0x355c, 0x3a4b, 0x3332, 0x3163, 0x3e2c,
- 0x3248, 0x5562, 0x4d46, 0x3d49, 0x3c64, 0x5563, 0x3473, 0x4652,
- 0x4c29, 0x5564, 0x5565, 0x4959, 0x5567, 0x3428, 0x3677, 0x5566,
- 0x3432, 0x3f32, 0x556b, 0x3b21, 0x3249, 0x556a, 0x5568, 0x556c,
- 0x5569, 0x472b, 0x5c4d, 0x3f33, 0x556d, 0x4e40, 0x556e, 0x5570,
- 0x437e, 0x556f, 0x4023, 0x3b7b, 0x4250, 0x3c77, 0x4975, 0x406c,
- 0x3c4d, 0x5571, 0x3e2d, 0x5572, 0x5573, 0x3053, 0x423a, 0x3f52,
- 0x5574, 0x4633, 0x3e2e, 0x3e2f, 0x5575, 0x406d, 0x3e30, 0x5576,
- 0x5577, 0x4c60, 0x5578, 0x3646, 0x3d22, 0x5579, 0x557a, 0x3c5c,
- 0x3f2c, 0x4674, 0x3f54, 0x4878, 0x4722, 0x3649, 0x557b, 0x356f,
- 0x557c, 0x367e, 0x464f, 0x3230, 0x3b53, 0x557d, 0x5622, 0x5621,
- 0x367d, 0x557e, 0x4538, 0x4230, 0x454b, 0x3c48, 0x4158, 0x4d7a,
- 0x5624, 0x5625, 0x4656, 0x3b33, 0x5627, 0x5628, 0x5629, 0x3474,
- 0x562a, 0x562b, 0x322c, 0x413b, 0x3464, 0x562d, 0x4c28, 0x4252,
- 0x3359, 0x562f, 0x5631, 0x345f, 0x562e, 0x5630, 0x5633, 0x5632,
- 0x5634, 0x5635, 0x463d, 0x362e, 0x3265, 0x5636, 0x563b, 0x5639,
- 0x4a77, 0x4a76, 0x4567, 0x5638, 0x3d54, 0x5637, 0x3f72, 0x563c,
- 0x3a6a, 0x5642, 0x5643, 0x563d, 0x3333, 0x563e, 0x5647, 0x5646,
- 0x5645, 0x5641, 0x5640, 0x5644, 0x4a78, 0x564b, 0x5648, 0x564a,
- 0x4d72, 0x5649, 0x563f, 0x3f73, 0x564c, 0x3a37, 0x564d, 0x564e,
- 0x5651, 0x5650, 0x564f, 0x4568, 0x563a, 0x5657, 0x5653, 0x5652,
- 0x5654, 0x5655, 0x5658, 0x4e66, 0x5659, 0x5656, 0x565a, 0x3460,
- 0x565b, 0x565d, 0x565c, 0x565e, 0x565f, 0x406e, 0x3d23, 0x3d64,
- 0x4163, 0x3929, 0x3a38, 0x392a, 0x3570, 0x5660, 0x3a39, 0x384a,
- 0x5661, 0x4c26, 0x4743, 0x5662, 0x392b, 0x342c, 0x4327, 0x3652,
- 0x3b54, 0x495b, 0x4841, 0x5663, 0x3475, 0x5666, 0x4421, 0x5665,
- 0x5664, 0x5667, 0x446b, 0x3f63, 0x3b55, 0x404a, 0x4253, 0x3522,
- 0x4422, 0x5668, 0x5669, 0x3e6f, 0x4b39, 0x566c, 0x566b, 0x566a,
- 0x497d, 0x5673, 0x4b5a, 0x566d, 0x566f, 0x4b6b, 0x566e, 0x5670,
- 0x4828, 0x5671, 0x4a3e, 0x5672, 0x3433, 0x4a3f, 0x472f, 0x5674,
- 0x5675, 0x392c, 0x3434, 0x5676, 0x3838, 0x4d44, 0x4d29, 0x3476,
- 0x5678, 0x4423, 0x392d, 0x3e31, 0x485f, 0x3e32, 0x3d78, 0x446c,
- 0x4a79, 0x4539, 0x392e, 0x495c, 0x5679, 0x4559, 0x3a42, 0x384b,
- 0x446d, 0x3043, 0x3d6e, 0x392f, 0x4d47, 0x567a, 0x567b, 0x4751,
- 0x567c, 0x4e77, 0x4f2d, 0x567e, 0x567d, 0x3347, 0x5721, 0x5724,
- 0x5725, 0x5723, 0x4940, 0x3e33, 0x5727, 0x5726, 0x5722, 0x5728,
- 0x5729, 0x572a, 0x572d, 0x572b, 0x572c, 0x572e, 0x3164, 0x446e,
- 0x572f, 0x377a, 0x3276, 0x4736, 0x5730, 0x467b, 0x4a5b, 0x5731,
- 0x4f2e, 0x5732, 0x4a40, 0x5735, 0x5021, 0x5031, 0x3c30, 0x4675,
- 0x5736, 0x355d, 0x4424, 0x307a, 0x5737, 0x4a26, 0x3930, 0x4350,
- 0x446f, 0x4c6f, 0x3839, 0x384c, 0x5738, 0x5739, 0x573f, 0x3c65,
- 0x4425, 0x362f, 0x573a, 0x492b, 0x4346, 0x573b, 0x573c, 0x3630,
- 0x573d, 0x573e, 0x5740, 0x4576, 0x5741, 0x5742, 0x5743, 0x5734,
- 0x5733, 0x5744, 0x3741, 0x4927, 0x3a4c, 0x4937, 0x4426, 0x494b,
- 0x5745, 0x3e34, 0x3146, 0x5746, 0x5747, 0x4c72, 0x4860, 0x574a,
- 0x317d, 0x402c, 0x5749, 0x5748, 0x3742, 0x4254, 0x574e, 0x574c,
- 0x574b, 0x4e27, 0x3865, 0x3d79, 0x574d, 0x454c, 0x3d3e, 0x4640,
- 0x5751, 0x5750, 0x574f, 0x5752, 0x3866, 0x5753, 0x497c, 0x3d5b,
- 0x5754, 0x4879, 0x4641, 0x4427, 0x4530, 0x5755, 0x352b, 0x3f34,
- 0x492c, 0x3477, 0x4726, 0x5756, 0x3b56, 0x4b3a, 0x4b3b, 0x317e,
- 0x575b, 0x4369, 0x5758, 0x3277, 0x582d, 0x575a, 0x4730, 0x5759,
- 0x5757, 0x397a, 0x575d, 0x5763, 0x5769, 0x5761, 0x455c, 0x5766,
- 0x495d, 0x5760, 0x5765, 0x4e67, 0x3b57, 0x4255, 0x575e, 0x355e,
- 0x5768, 0x402d, 0x3165, 0x5762, 0x3278, 0x5767, 0x3631, 0x5764,
- 0x576a, 0x576c, 0x5776, 0x5774, 0x5771, 0x5770, 0x4e78, 0x5772,
- 0x3632, 0x3931, 0x3d7a, 0x5779, 0x576b, 0x576f, 0x575f, 0x327a,
- 0x5773, 0x5775, 0x4351, 0x3a28, 0x3238, 0x576d, 0x5778, 0x5777,
- 0x3633, 0x4229, 0x3366, 0x3743, 0x576e, 0x577a, 0x577d, 0x5821,
- 0x3c3d, 0x5827, 0x4470, 0x577b, 0x5825, 0x3279, 0x5823, 0x5824,
- 0x577e, 0x5822, 0x3867, 0x4d2a, 0x3435, 0x3159, 0x5826, 0x473a,
- 0x302d, 0x4861, 0x575c, 0x582c, 0x5830, 0x4c65, 0x5829, 0x4569,
- 0x582e, 0x3e70, 0x582f, 0x4657, 0x4f47, 0x582b, 0x5831, 0x397b,
- 0x404b, 0x3054, 0x582a, 0x5828, 0x415a, 0x577c, 0x3b34, 0x4246,
- 0x583d, 0x415b, 0x5838, 0x5835, 0x5836, 0x3c66, 0x5839, 0x583c,
- 0x5837, 0x3d25, 0x583a, 0x5834, 0x4c7c, 0x4c7b, 0x583e, 0x583f,
- 0x3055, 0x5833, 0x3672, 0x3026, 0x3436, 0x583b, 0x5843, 0x5842,
- 0x5847, 0x5848, 0x5846, 0x5849, 0x5841, 0x5845, 0x584a, 0x584b,
- 0x5840, 0x3b7c, 0x5844, 0x4256, 0x3932, 0x5832, 0x3f35, 0x5858,
- 0x4a69, 0x584e, 0x584f, 0x5850, 0x5857, 0x5856, 0x4b7d, 0x3437,
- 0x5854, 0x3745, 0x3334, 0x5851, 0x4e38, 0x5853, 0x3056, 0x5855,
- 0x584c, 0x5852, 0x5859, 0x3744, 0x584d, 0x4d5d, 0x4d2b, 0x585c,
- 0x5860, 0x417e, 0x4e79, 0x5861, 0x585e, 0x585b, 0x585a, 0x585f,
- 0x4a30, 0x4634, 0x3746, 0x5862, 0x585d, 0x5863, 0x377b, 0x3231,
- 0x586b, 0x3438, 0x5869, 0x586a, 0x3a29, 0x5868, 0x5866, 0x5865,
- 0x586c, 0x5864, 0x586e, 0x327b, 0x5870, 0x586f, 0x4428, 0x5873,
- 0x5871, 0x5867, 0x377c, 0x5872, 0x5876, 0x5875, 0x5877, 0x5874,
- 0x5878, 0x5879, 0x587a, 0x4a6a, 0x587c, 0x587b, 0x3d3f, 0x402e,
- 0x3266, 0x327c, 0x587d, 0x303f, 0x404c, 0x587e, 0x6c43, 0x5921,
- 0x3761, 0x5922, 0x406f, 0x5923, 0x5924, 0x353a, 0x5925, 0x5926,
- 0x5927, 0x4257, 0x384d, 0x4c61, 0x4b3c, 0x3d6a, 0x5928, 0x4070,
- 0x6e3d, 0x4862, 0x3c6a, 0x3a4d, 0x5929, 0x4247, 0x4a27, 0x4271,
- 0x592c, 0x592a, 0x592d, 0x592b, 0x592e, 0x4a31, 0x3037, 0x495e,
- 0x4863, 0x592f, 0x5932, 0x3e35, 0x353b, 0x5930, 0x5937, 0x3e36,
- 0x5931, 0x4744, 0x4d5e, 0x5933, 0x5934, 0x5938, 0x456a, 0x5935,
- 0x3933, 0x405e, 0x5946, 0x4834, 0x4272, 0x4864, 0x5a2d, 0x4a7a,
- 0x4471, 0x4b75, 0x593b, 0x3221, 0x436a, 0x5944, 0x4334, 0x593e,
- 0x5945, 0x5940, 0x5947, 0x5943, 0x5942, 0x476f, 0x593c, 0x327d,
- 0x593a, 0x3571, 0x4273, 0x5936, 0x5939, 0x3934, 0x405b, 0x3e37,
- 0x5941, 0x4752, 0x3572, 0x3348, 0x3367, 0x3f21, 0x5949, 0x594e,
- 0x594a, 0x377d, 0x594f, 0x3b22, 0x3969, 0x3d26, 0x593d, 0x3b7d,
- 0x594c, 0x3b58, 0x594d, 0x3044, 0x5948, 0x4429, 0x3573, 0x3634,
- 0x594b, 0x3027, 0x3a43, 0x3f36, 0x4472, 0x4854, 0x5951, 0x415e,
- 0x422a, 0x3b2b, 0x5952, 0x5954, 0x5950, 0x4a61, 0x443d, 0x415c,
- 0x4a7b, 0x3c4e, 0x5960, 0x595f, 0x3f78, 0x377e, 0x5959, 0x3e39,
- 0x4668, 0x4731, 0x5957, 0x415d, 0x3c78, 0x595c, 0x3e38, 0x5956,
- 0x595b, 0x4753, 0x5955, 0x3721, 0x335d, 0x595d, 0x4e2b, 0x3a4e,
- 0x4335, 0x595a, 0x405c, 0x3935, 0x3f64, 0x3166, 0x413c, 0x5958,
- 0x3545, 0x3747, 0x444f, 0x595e, 0x415f, 0x5961, 0x5963, 0x4237,
- 0x5969, 0x5964, 0x5966, 0x4941, 0x4473, 0x5967, 0x4d2c, 0x4d48,
- 0x3439, 0x302e, 0x5965, 0x5962, 0x3478, 0x3167, 0x5968, 0x4d49,
- 0x596c, 0x423b, 0x5973, 0x596d, 0x596a, 0x5971, 0x5953, 0x596e,
- 0x5972, 0x4842, 0x456b, 0x596b, 0x596f, 0x3748, 0x3a71, 0x405d,
- 0x5977, 0x4526, 0x5974, 0x4b60, 0x5975, 0x5976, 0x4c4e, 0x4022,
- 0x3762, 0x597d, 0x3b35, 0x597a, 0x5979, 0x4732, 0x4635, 0x4531,
- 0x597b, 0x597c, 0x496f, 0x4745, 0x3b23, 0x4071, 0x4b50, 0x3349,
- 0x5a25, 0x597e, 0x4d4a, 0x5a27, 0x5a23, 0x5a24, 0x4160, 0x5a22,
- 0x593f, 0x5a26, 0x5a21, 0x5a2b, 0x5a2c, 0x4527, 0x5a2e, 0x3b24,
- 0x5a29, 0x353c, 0x5a2f, 0x5a28, 0x5a33, 0x5a32, 0x5a31, 0x5a34,
- 0x5a36, 0x3e71, 0x5a35, 0x5a39, 0x5a37, 0x5a38, 0x5970, 0x5a3b,
- 0x5a3a, 0x5978, 0x5a3c, 0x5a30, 0x3b59, 0x5a3d, 0x5a3e, 0x5a40,
- 0x5a3f, 0x5a41, 0x327e, 0x3936, 0x4a7c, 0x402f, 0x384e, 0x5a43,
- 0x5a46, 0x4952, 0x355f, 0x5a45, 0x5a44, 0x4754, 0x5a47, 0x3635,
- 0x5a49, 0x5a48, 0x343a, 0x3b36, 0x4658, 0x3749, 0x3f74, 0x5a4a,
- 0x4030, 0x4528, 0x495f, 0x5a4b, 0x5a4c, 0x5a4d, 0x4a38, 0x555d,
- 0x4046, 0x494c, 0x3a58, 0x4865, 0x4843, 0x454d, 0x4e41, 0x5a4f,
- 0x3c50, 0x5a50, 0x3036, 0x3654, 0x404d, 0x4960, 0x5a51, 0x3b42,
- 0x4347, 0x3b5b, 0x3f37, 0x5a52, 0x4a7d, 0x3177, 0x3b5c, 0x5a55,
- 0x5a53, 0x5a56, 0x4e39, 0x5a54, 0x407b, 0x5a57, 0x4232, 0x5a58,
- 0x347a, 0x5a5a, 0x5a59, 0x5a5b, 0x5a5c, 0x347b, 0x467c, 0x4336,
- 0x356c, 0x3b5d, 0x4161, 0x3d5c, 0x3030, 0x5a5d, 0x3222, 0x5a61,
- 0x3937, 0x5a60, 0x3a2b, 0x3e3a, 0x5a5f, 0x3e3b, 0x4c40, 0x3a2a,
- 0x3057, 0x404e, 0x5a66, 0x4031, 0x3147, 0x3d55, 0x4b66, 0x3a72,
- 0x3e3c, 0x4027, 0x5a65, 0x5a63, 0x5a64, 0x436b, 0x5b26, 0x5a6a,
- 0x3b7e, 0x3938, 0x5a68, 0x5a69, 0x3f38, 0x5a67, 0x3b2f, 0x5a6c,
- 0x5a6b, 0x5a70, 0x5a71, 0x5a6d, 0x3322, 0x5a6e, 0x5a6f, 0x4855,
- 0x4961, 0x374a, 0x5a72, 0x4032, 0x3e3d, 0x4352, 0x3647, 0x5a73,
- 0x5a77, 0x324b, 0x5a74, 0x5a76, 0x5a75, 0x3d6b, 0x4348, 0x3045,
- 0x5a78, 0x5a79, 0x442a, 0x4e71, 0x3b43, 0x4a6b, 0x4b3d, 0x5b22,
- 0x5a7b, 0x5a7e, 0x5a7d, 0x5a7a, 0x5b21, 0x465e, 0x5a7c, 0x5b23,
- 0x3d6c, 0x5b24, 0x4d4b, 0x4778, 0x5b25, 0x5b27, 0x5b28, 0x5b29,
- 0x364a, 0x3148, 0x3939, 0x5b2a, 0x5b2b, 0x3d71, 0x4162, 0x5258,
- 0x413e, 0x413d, 0x4258, 0x3a47, 0x5072, 0x376e, 0x4d2d, 0x4a7e,
- 0x497e, 0x5b2c, 0x3a73, 0x443f, 0x5b2d, 0x4f2f, 0x4b3e, 0x442b,
- 0x5b2e, 0x347c, 0x5b2f, 0x5b30, 0x4c5a, 0x4c24, 0x4b76, 0x4b5c,
- 0x3b25, 0x5b32, 0x3c6b, 0x4b51, 0x5b34, 0x5b37, 0x5b36, 0x3479,
- 0x3560, 0x5b33, 0x5b35, 0x5b38, 0x3f79, 0x4d7b, 0x3049, 0x3a60,
- 0x423c, 0x3c5d, 0x3e73, 0x5b3b, 0x454e, 0x5b39, 0x422b, 0x5b3a,
- 0x3e72, 0x4c5d, 0x5b3c, 0x5b3d, 0x4d68, 0x5b42, 0x393a, 0x4755,
- 0x5b3f, 0x456c, 0x5a5e, 0x5a62, 0x354f, 0x4747, 0x5b41, 0x3e3e,
- 0x4844, 0x5b47, 0x487a, 0x5b3e, 0x5b44, 0x5b43, 0x404f, 0x4b6d,
- 0x4e53, 0x4b67, 0x324c, 0x3b5e, 0x4f48, 0x5b46, 0x3f75, 0x5b45,
- 0x5b40, 0x384f, 0x5b4c, 0x5b4a, 0x324d, 0x5b48, 0x5b4e, 0x5b54,
- 0x4248, 0x4a41, 0x5b56, 0x4922, 0x5b55, 0x4770, 0x4b3f, 0x343b,
- 0x4077, 0x3d40, 0x4453, 0x4d2e, 0x5b51, 0x5b50, 0x5b52, 0x5b4f,
- 0x5b57, 0x5b4d, 0x5b4b, 0x5b53, 0x5b49, 0x436c, 0x4c78, 0x3c46,
- 0x3a74, 0x3a3a, 0x4b6f, 0x3341, 0x444e, 0x464a, 0x3149, 0x4072,
- 0x4034, 0x372a, 0x5b59, 0x393b, 0x337c, 0x5b5b, 0x3374, 0x5b61,
- 0x5b5e, 0x4073, 0x334b, 0x3a2c, 0x334a, 0x3a4f, 0x5b5c, 0x3765,
- 0x374b, 0x456d, 0x5b5a, 0x3046, 0x5b5d, 0x5b5f, 0x364d, 0x372c,
- 0x343c, 0x354b, 0x5b62, 0x3a79, 0x4b71, 0x3b37, 0x5b63, 0x4930,
- 0x5b6f, 0x3233, 0x5b64, 0x5b75, 0x5b65, 0x4e42, 0x5b6c, 0x475f,
- 0x5b74, 0x5b67, 0x3034, 0x5b69, 0x393c, 0x5b6b, 0x5b6a, 0x5b66,
- 0x5b71, 0x3e3f, 0x546d, 0x3868, 0x4d7c, 0x5b68, 0x4474, 0x3323,
- 0x3a2d, 0x5b60, 0x5b70, 0x3361, 0x5b6e, 0x5b72, 0x456e, 0x347e,
- 0x5c32, 0x4c49, 0x5b77, 0x347d, 0x5b7e, 0x4b40, 0x5c21, 0x5c23,
- 0x5c27, 0x5b79, 0x432a, 0x456f, 0x5c2b, 0x5b7c, 0x5c28, 0x5c22,
- 0x3f39, 0x5c2c, 0x4033, 0x5c2a, 0x343d, 0x4f50, 0x5b76, 0x5c26,
- 0x3058, 0x5b78, 0x4c3a, 0x5b7d, 0x3f22, 0x4447, 0x5b73, 0x5c25,
- 0x3f7a, 0x5c2f, 0x3371, 0x3821, 0x5c31, 0x5b7a, 0x5c30, 0x5c29,
- 0x5b7b, 0x5c2d, 0x5c2e, 0x5c3f, 0x464e, 0x5c24, 0x5c3b, 0x5c3d,
- 0x4458, 0x4d4c, 0x4976, 0x5c38, 0x424a, 0x5c3e, 0x413f, 0x5c35,
- 0x5c42, 0x5c41, 0x466f, 0x5c40, 0x466a, 0x5c44, 0x5c37, 0x3648,
- 0x5c3a, 0x3d5d, 0x4760, 0x5c3c, 0x364b, 0x5c34, 0x5c36, 0x5c33,
- 0x4f30, 0x335a, 0x5c39, 0x5c43, 0x3335, 0x3a67, 0x315d, 0x5c54,
- 0x4f31, 0x5c57, 0x3f3a, 0x5c56, 0x5c55, 0x5c52, 0x5c46, 0x5c63,
- 0x5c45, 0x5c58, 0x5c50, 0x5c4b, 0x5c48, 0x5c49, 0x5c51, 0x7422,
- 0x5c4e, 0x393d, 0x4448, 0x4164, 0x5c4c, 0x5c47, 0x5c4a, 0x4d4d,
- 0x4b6a, 0x5c4f, 0x5c59, 0x5c61, 0x5c5a, 0x5c67, 0x5c65, 0x5c60,
- 0x5c5f, 0x4450, 0x4165, 0x5c5d, 0x5c5b, 0x5c62, 0x5c68, 0x4875,
- 0x5c6e, 0x5c69, 0x5c6c, 0x5c66, 0x4374, 0x4938, 0x5c5c, 0x5c64,
- 0x3e40, 0x4c4f, 0x5c78, 0x5c6b, 0x3822, 0x3223, 0x335f, 0x5c53,
- 0x3e41, 0x5c70, 0x5c77, 0x3c79, 0x3372, 0x432e, 0x5c6d, 0x5c72,
- 0x5c76, 0x3636, 0x354c, 0x5c74, 0x3521, 0x464b, 0x5c73, 0x5c75,
- 0x5c6f, 0x5c71, 0x3360, 0x4349, 0x5c7c, 0x5c7a, 0x3869, 0x5c79,
- 0x5d21, 0x5b58, 0x5c7b, 0x5c7d, 0x5c7e, 0x5d2c, 0x5d28, 0x5b6d,
- 0x5d27, 0x5d26, 0x5d23, 0x5c6a, 0x5d25, 0x5d24, 0x5d2a, 0x4f26,
- 0x5d2d, 0x367b, 0x5d29, 0x5d2b, 0x4827, 0x5d2e, 0x5d32, 0x5d2f,
- 0x4d73, 0x5d30, 0x5c5e, 0x5d33, 0x5d34, 0x3135, 0x5d36, 0x3767,
- 0x3c21, 0x3655, 0x3224, 0x4d5f, 0x5d38, 0x5d37, 0x5d3a, 0x353d,
- 0x3656, 0x343e, 0x5d3d, 0x5d3c, 0x5d3e, 0x324e, 0x4337, 0x5d3f,
- 0x343f, 0x5d41, 0x5d40, 0x5d42, 0x5d43, 0x5d44, 0x3b5f, 0x4035,
- 0x3a21, 0x4970, 0x4a62, 0x4f44, 0x3b75, 0x3a50, 0x4e72, 0x5d45,
- 0x5d46, 0x3b60, 0x5d47, 0x5d48, 0x5d4a, 0x5d49, 0x4b58, 0x3d5e,
- 0x3c6c, 0x3b44, 0x5d4b, 0x5d4d, 0x3f23, 0x5d4c, 0x5d4e, 0x5d4f,
- 0x5d50, 0x5d51, 0x5d52, 0x5d54, 0x5d53, 0x5d55, 0x3225, 0x434a,
- 0x5d56, 0x3b26, 0x334c, 0x5d57, 0x4542, 0x544c, 0x3523, 0x5d58,
- 0x5d59, 0x4a6c, 0x4b68, 0x4647, 0x5d5a, 0x4866, 0x487b, 0x4c53,
- 0x5d5b, 0x5d5d, 0x5d5c, 0x5d5f, 0x5d5e, 0x5d61, 0x3b61, 0x4c31,
- 0x5d62, 0x5d63, 0x3524, 0x5d64, 0x5d66, 0x5d65, 0x3f65, 0x4939,
- 0x314a, 0x4845, 0x4475, 0x3d41, 0x3561, 0x4846, 0x3c2e, 0x5d68,
- 0x3440, 0x3178, 0x4672, 0x5d67, 0x393e, 0x4353, 0x5d69, 0x5d71,
- 0x5d6a, 0x4241, 0x3562, 0x5d72, 0x3768, 0x3525, 0x5d70, 0x5d6e,
- 0x5d6b, 0x4d60, 0x4440, 0x4659, 0x5d6c, 0x5d74, 0x5d73, 0x3723,
- 0x322d, 0x3a3b, 0x5d6d, 0x5d6f, 0x4b57, 0x4274, 0x4b77, 0x5d7c,
- 0x5d7d, 0x324f, 0x4a28, 0x4c7d, 0x5e21, 0x3c23, 0x3e42, 0x5d78,
- 0x5d7e, 0x3168, 0x3637, 0x5d75, 0x5d7a, 0x4074, 0x4771, 0x4867,
- 0x5d77, 0x4b21, 0x5d79, 0x5e24, 0x5e22, 0x5d7b, 0x4b22, 0x4748,
- 0x3563, 0x4525, 0x436d, 0x5e25, 0x5e23, 0x4259, 0x5d76, 0x314b,
- 0x4d4e, 0x5e30, 0x5e2f, 0x4076, 0x5e2c, 0x4d6c, 0x4636, 0x5e26,
- 0x4445, 0x314c, 0x393f, 0x5e29, 0x3d27, 0x5e2e, 0x5e2d, 0x5e28,
- 0x5e2b, 0x3368, 0x5e2a, 0x4749, 0x4e2e, 0x3e74, 0x4075, 0x5e36,
- 0x5e34, 0x494d, 0x5e31, 0x5e33, 0x313a, 0x3940, 0x4f32, 0x333d,
- 0x4962, 0x4d61, 0x3324, 0x3f3b, 0x5e35, 0x5e3a, 0x3e43, 0x4d30,
- 0x5e37, 0x5e32, 0x5e38, 0x4e5e, 0x4573, 0x4642, 0x3336, 0x3155,
- 0x5e3e, 0x5e41, 0x4e43, 0x4d64, 0x5e48, 0x5e42, 0x5e3f, 0x4e54,
- 0x5e45, 0x3d4a, 0x5e47, 0x5e4c, 0x4571, 0x5e4a, 0x5e44, 0x4338,
- 0x5e4b, 0x5e40, 0x5e46, 0x5e4d, 0x307c, 0x5e43, 0x5e4e, 0x3f3c,
- 0x3d5f, 0x4a25, 0x3a2e, 0x5e3b, 0x5e49, 0x453a, 0x4036, 0x3369,
- 0x3a51, 0x3e44, 0x5e3d, 0x3d42, 0x374c, 0x5e3c, 0x5e52, 0x3d6d,
- 0x383a, 0x5e61, 0x5e5b, 0x3574, 0x454f, 0x5e56, 0x5e5f, 0x302f,
- 0x3132, 0x3239, 0x5e58, 0x422c, 0x5e4f, 0x5e51, 0x3941, 0x5e62,
- 0x5e5d, 0x5e55, 0x5e5c, 0x4c2b, 0x5e5a, 0x5e5e, 0x3850, 0x3e45,
- 0x4339, 0x5e54, 0x4d2f, 0x5e57, 0x5e50, 0x4572, 0x5e53, 0x5e59,
- 0x4f51, 0x3c3e, 0x4b7e, 0x5e63, 0x482e, 0x5e6f, 0x383b, 0x3d60,
- 0x5e65, 0x4e2f, 0x3942, 0x5e72, 0x306e, 0x5e70, 0x5e64, 0x5e6a,
- 0x5e6c, 0x4d4f, 0x5e67, 0x452e, 0x5e69, 0x5e71, 0x5e6b, 0x4c47,
- 0x5e66, 0x3c22, 0x5e7e, 0x336a, 0x5e68, 0x5e6d, 0x5e6e, 0x426c,
- 0x425a, 0x5e76, 0x5e7c, 0x5e7a, 0x4529, 0x5f23, 0x5e77, 0x5e78,
- 0x5e60, 0x3579, 0x493a, 0x3c3f, 0x3977, 0x4f33, 0x5e74, 0x5f22,
- 0x3169, 0x4166, 0x4779, 0x3441, 0x4e7a, 0x4c21, 0x4452, 0x5e7b,
- 0x5e7d, 0x4132, 0x5f21, 0x5e79, 0x5e73, 0x3443, 0x3769, 0x5f2f,
- 0x5f2a, 0x4078, 0x3363, 0x3d61, 0x5f33, 0x5f2c, 0x442c, 0x5f29,
- 0x4459, 0x5f4c, 0x5f26, 0x5f25, 0x5f2e, 0x5f28, 0x5f27, 0x5f2d,
- 0x4021, 0x5f24, 0x5f30, 0x5f31, 0x3442, 0x5f36, 0x5f35, 0x5f37,
- 0x5f3a, 0x4543, 0x5f34, 0x5f38, 0x3763, 0x4279, 0x5f32, 0x473b,
- 0x5f39, 0x5f3e, 0x5f3c, 0x5f3f, 0x5f42, 0x5f3b, 0x396a, 0x4728,
- 0x5e39, 0x4d74, 0x5f3d, 0x5f41, 0x4275, 0x5f40, 0x5f2b, 0x6f69,
- 0x5f45, 0x5f49, 0x5f47, 0x5f43, 0x5f44, 0x5f48, 0x5f46, 0x494e,
- 0x5f4e, 0x5f4b, 0x5f4a, 0x5f4d, 0x4654, 0x5f4f, 0x4375, 0x426d,
- 0x4025, 0x5f50, 0x5f52, 0x5f51, 0x5e75, 0x5f53, 0x4667, 0x5f54,
- 0x3250, 0x4574, 0x3325, 0x3564, 0x3c5e, 0x3a52, 0x4f27, 0x3f66,
- 0x316a, 0x5f56, 0x5f55, 0x5f59, 0x433a, 0x5f5c, 0x5f57, 0x5f5b,
- 0x5f5a, 0x4540, 0x3059, 0x4e75, 0x5f5e, 0x3128, 0x5f60, 0x5f5f,
- 0x5f5d, 0x5f58, 0x4b23, 0x5f62, 0x5f61, 0x316b, 0x5f64, 0x4a32,
- 0x5f63, 0x4c35, 0x3e47, 0x4133, 0x3e46, 0x4e7b, 0x5f6a, 0x4079,
- 0x5f66, 0x5f6b, 0x316c, 0x5f69, 0x4761, 0x5f65, 0x5f68, 0x3e48,
- 0x4851, 0x5f6c, 0x3c51, 0x407a, 0x5f6f, 0x5f67, 0x3727, 0x5f6d,
- 0x4d50, 0x5f70, 0x7426, 0x3d4f, 0x5f71, 0x5f72, 0x472e, 0x5f74,
- 0x5f75, 0x4733, 0x4575, 0x5f77, 0x5f79, 0x4e55, 0x5f76, 0x5f78,
- 0x316d, 0x5f73, 0x535b, 0x5f7a, 0x4167, 0x3b38, 0x5f7c, 0x5f7b,
- 0x3f24, 0x5259, 0x5f7d, 0x6021, 0x5f6e, 0x5f7e, 0x6022, 0x477a,
- 0x6023, 0x6024, 0x6025, 0x6026, 0x445e, 0x6028, 0x6027, 0x6029,
- 0x602a, 0x3c5f, 0x4963, 0x4c6c, 0x602b, 0x602c, 0x4156, 0x3c24,
- 0x602d, 0x602e, 0x602f, 0x4a52, 0x4847, 0x6030, 0x4757, 0x442d,
- 0x6031, 0x3267, 0x356d, 0x4c46, 0x4c36, 0x3234, 0x4f34, 0x4b52,
- 0x4a2a, 0x4037, 0x6032, 0x4643, 0x3823, 0x6033, 0x3a54, 0x6035,
- 0x6034, 0x6036, 0x6037, 0x6038, 0x353e, 0x6039, 0x603a, 0x3824,
- 0x4848, 0x603c, 0x3e75, 0x603b, 0x3638, 0x603d, 0x603f, 0x603e,
- 0x6040, 0x3851, 0x6041, 0x3669, 0x4140, 0x397d, 0x6043, 0x6044,
- 0x6042, 0x3c6d, 0x4648, 0x3639, 0x6046, 0x432c, 0x6045, 0x4f35,
- 0x4762, 0x6049, 0x604b, 0x6048, 0x4c54, 0x604a, 0x604c, 0x4e44,
- 0x6050, 0x604f, 0x4376, 0x472d, 0x3825, 0x604e, 0x604d, 0x4d31,
- 0x4d32, 0x6051, 0x316e, 0x3976, 0x3b62, 0x6052, 0x6053, 0x6055,
- 0x3d43, 0x6057, 0x6056, 0x6058, 0x334d, 0x605a, 0x6059, 0x605c,
- 0x605b, 0x383c, 0x4e28, 0x364c, 0x3226, 0x366a, 0x3461, 0x4e68,
- 0x605e, 0x6060, 0x6061, 0x3251, 0x605d, 0x3b39, 0x4441, 0x605f,
- 0x6064, 0x3c6e, 0x6062, 0x373e, 0x4849, 0x6063, 0x607e, 0x6069,
- 0x383d, 0x3565, 0x6066, 0x4d7d, 0x4e30, 0x4276, 0x6068, 0x606a,
- 0x4e56, 0x3657, 0x487c, 0x474a, 0x606b, 0x606d, 0x6070, 0x606c,
- 0x606f, 0x386a, 0x314d, 0x6071, 0x3f70, 0x606e, 0x4e5c, 0x6074,
- 0x7424, 0x6072, 0x6075, 0x6067, 0x6073, 0x3a3c, 0x6076, 0x6077,
- 0x4d7e, 0x6078, 0x6079, 0x6065, 0x607a, 0x3444, 0x3c25, 0x607b,
- 0x607c, 0x607d, 0x313b, 0x6121, 0x493b, 0x6122, 0x3424, 0x6123,
- 0x6124, 0x6125, 0x6127, 0x6128, 0x6126, 0x4953, 0x612a, 0x6129,
- 0x612c, 0x612b, 0x612d, 0x612e, 0x6130, 0x612f, 0x3979, 0x6132,
- 0x6131, 0x3445, 0x3f53, 0x453c, 0x6133, 0x4038, 0x3b3a, 0x3179,
- 0x6134, 0x4d51, 0x4a63, 0x6135, 0x4544, 0x4d33, 0x3943, 0x3f3d,
- 0x434b, 0x5234, 0x442e, 0x3268, 0x6136, 0x6137, 0x613c, 0x613a,
- 0x6139, 0x5a42, 0x3326, 0x6138, 0x305a, 0x482a, 0x484a, 0x4e31,
- 0x613d, 0x613b, 0x435c, 0x4026, 0x482b, 0x492d, 0x613f, 0x4e2c,
- 0x374d, 0x6140, 0x613e, 0x4856, 0x6141, 0x6142, 0x305b, 0x3e76,
- 0x6147, 0x6144, 0x466d, 0x6143, 0x3526, 0x614a, 0x6145, 0x6146,
- 0x6149, 0x6148, 0x4925, 0x4142, 0x4141, 0x353f, 0x614b, 0x614c,
- 0x614d, 0x614f, 0x614e, 0x3156, 0x6157, 0x4868, 0x6151, 0x6153,
- 0x6155, 0x3f3e, 0x6156, 0x6154, 0x3c40, 0x6150, 0x6152, 0x4942,
- 0x3e49, 0x6159, 0x6158, 0x615a, 0x3c26, 0x3a2f, 0x4577, 0x615b,
- 0x444b, 0x615d, 0x4e21, 0x615c, 0x4169, 0x6162, 0x6164, 0x6165,
- 0x4354, 0x6163, 0x6160, 0x615e, 0x615f, 0x6161, 0x6168, 0x6166,
- 0x6167, 0x6169, 0x616b, 0x616c, 0x616d, 0x616e, 0x616a, 0x6170,
- 0x616f, 0x6171, 0x4e45, 0x6174, 0x6172, 0x6173, 0x3462, 0x4c7e,
- 0x4a4a, 0x6176, 0x6175, 0x6177, 0x6178, 0x617c, 0x6179, 0x617a,
- 0x617b, 0x617d, 0x617e, 0x6221, 0x6222, 0x6223, 0x482f, 0x4550,
- 0x6224, 0x4772, 0x4934, 0x6225, 0x6226, 0x452a, 0x3327, 0x3944,
- 0x6227, 0x6228, 0x6229, 0x3b29, 0x622b, 0x622a, 0x622c, 0x622d,
- 0x4869, 0x622e, 0x622f, 0x7369, 0x6230, 0x6231, 0x6232, 0x3b2e,
- 0x6233, 0x4756, 0x4b5f, 0x314e, 0x3157, 0x6234, 0x6236, 0x6235,
- 0x4570, 0x4039, 0x5d39, 0x6237, 0x4c41, 0x6238, 0x3446, 0x4857,
- 0x6239, 0x623a, 0x623b, 0x4c5c, 0x4c55, 0x443e, 0x416a, 0x623d,
- 0x3d62, 0x3e4a, 0x6240, 0x623f, 0x623e, 0x487d, 0x3447, 0x3829,
- 0x6246, 0x6243, 0x3f3f, 0x4c32, 0x6242, 0x6244, 0x6245, 0x6241,
- 0x6247, 0x6248, 0x442f, 0x3463, 0x4365, 0x6249, 0x624a, 0x624d,
- 0x3f67, 0x4644, 0x624e, 0x4b53, 0x624b, 0x624c, 0x6251, 0x6250,
- 0x624f, 0x6253, 0x6252, 0x6254, 0x6256, 0x6255, 0x4a4d, 0x3d56,
- 0x4e46, 0x6257, 0x4637, 0x6258, 0x6259, 0x625d, 0x625b, 0x625c,
- 0x625a, 0x625e, 0x625f, 0x6260, 0x6261, 0x4c37, 0x6262, 0x4c70,
- 0x6263, 0x434e, 0x476a, 0x366b, 0x433b, 0x6264, 0x363a, 0x4050,
- 0x6265, 0x3a3d, 0x6266, 0x6267, 0x3826, 0x3a55, 0x6269, 0x4556,
- 0x3a56, 0x354e, 0x4b24, 0x474b, 0x4557, 0x395c, 0x626b, 0x3e4b,
- 0x4e32, 0x3945, 0x3827, 0x4823, 0x626d, 0x626f, 0x386b, 0x626e,
- 0x4476, 0x6271, 0x3337, 0x626c, 0x486a, 0x3130, 0x3a6c, 0x4f52,
- 0x6270, 0x6272, 0x4a4b, 0x4059, 0x6274, 0x6275, 0x6273, 0x334e,
- 0x627b, 0x627a, 0x3c27, 0x627c, 0x6277, 0x627d, 0x6278, 0x4858,
- 0x6276, 0x6279, 0x6322, 0x6321, 0x4b61, 0x627e, 0x306b, 0x6324,
- 0x6323, 0x3e4c, 0x6325, 0x4143, 0x6327, 0x6326, 0x6328, 0x6268,
- 0x626a, 0x632a, 0x6329, 0x3c28, 0x4e69, 0x3c52, 0x632b, 0x3737,
- 0x3540, 0x3527, 0x3b63, 0x4d34, 0x6331, 0x6330, 0x4144, 0x632d,
- 0x632f, 0x3d4b, 0x3f40, 0x632e, 0x632c, 0x472a, 0x3e4d, 0x493c,
- 0x3a57, 0x4578, 0x6332, 0x6333, 0x6349, 0x3658, 0x4f3d, 0x4135,
- 0x6334, 0x3252, 0x4477, 0x4a21, 0x6335, 0x357a, 0x6336, 0x6338,
- 0x6339, 0x4729, 0x633a, 0x633b, 0x633c, 0x3659, 0x3253, 0x4645,
- 0x3d28, 0x3b64, 0x633d, 0x3d29, 0x324a, 0x4943, 0x633e, 0x486b,
- 0x4145, 0x6341, 0x6342, 0x4769, 0x3f41, 0x633f, 0x4361, 0x6340,
- 0x3e4e, 0x305c, 0x3529, 0x6343, 0x4478, 0x6344, 0x4047, 0x4c2d,
- 0x4923, 0x6345, 0x6346, 0x4355, 0x4e47, 0x6348, 0x6347, 0x3c6f,
- 0x634a, 0x3070, 0x634d, 0x634b, 0x3254, 0x374e, 0x634c, 0x3946,
- 0x3972, 0x4a66, 0x634e, 0x4b54, 0x6350, 0x4051, 0x314f, 0x323a,
- 0x302c, 0x634f, 0x6351, 0x6352, 0x3e77, 0x6353, 0x334f, 0x6355,
- 0x376a, 0x3566, 0x6356, 0x3675, 0x6357, 0x407c, 0x464d, 0x4060,
- 0x3a75, 0x6358, 0x4362, 0x416b, 0x635a, 0x635c, 0x6359, 0x635b,
- 0x3722, 0x635d, 0x3726, 0x3567, 0x4d52, 0x635f, 0x6360, 0x312e,
- 0x6363, 0x3376, 0x6362, 0x6361, 0x6365, 0x635e, 0x6366, 0x4e29,
- 0x6367, 0x6368, 0x5474, 0x636a, 0x6369, 0x636b, 0x636c, 0x4e35,
- 0x636d, 0x706f, 0x3e4f, 0x636e, 0x636f, 0x3d57, 0x4638, 0x6370,
- 0x4328, 0x6371, 0x433c, 0x6372, 0x3625, 0x513f, 0x435d, 0x3c33,
- 0x3448, 0x6373, 0x6422, 0x6376, 0x3568, 0x6375, 0x6424, 0x6374,
- 0x3e50, 0x6378, 0x6379, 0x452b, 0x637a, 0x335e, 0x3f5a, 0x4964,
- 0x637c, 0x4268, 0x6377, 0x637b, 0x637d, 0x3a7b, 0x6426, 0x492e,
- 0x4826, 0x4579, 0x365a, 0x6425, 0x6423, 0x4835, 0x637e, 0x435e,
- 0x457b, 0x457a, 0x3a76, 0x6438, 0x6428, 0x642a, 0x642d, 0x642e,
- 0x642b, 0x642c, 0x6429, 0x6427, 0x6421, 0x4a4f, 0x3255, 0x6435,
- 0x6432, 0x6437, 0x6436, 0x4773, 0x4c27, 0x3b3b, 0x6430, 0x6439,
- 0x6434, 0x6433, 0x642f, 0x6431, 0x3449, 0x433d, 0x407d, 0x4822,
- 0x643e, 0x4824, 0x4061, 0x643b, 0x484f, 0x643f, 0x4a53, 0x435b,
- 0x643a, 0x643c, 0x643d, 0x6440, 0x3c44, 0x4646, 0x6445, 0x6444,
- 0x6441, 0x4f36, 0x644a, 0x644e, 0x644b, 0x6447, 0x6448, 0x644d,
- 0x6442, 0x5255, 0x6449, 0x6443, 0x644c, 0x6452, 0x344a, 0x644f,
- 0x6450, 0x6451, 0x6454, 0x6453, 0x4876, 0x6455, 0x4e7c, 0x4a6d,
- 0x645a, 0x6457, 0x6456, 0x4052, 0x6459, 0x645b, 0x6458, 0x645f,
- 0x645c, 0x645d, 0x6446, 0x645e, 0x6460, 0x6461, 0x4a46, 0x6462,
- 0x4c62, 0x364e, 0x3729, 0x6463, 0x4a34, 0x3f68, 0x4c30, 0x6464,
- 0x4e33, 0x4774, 0x4146, 0x4734, 0x3d4d, 0x3040, 0x6469, 0x6467,
- 0x6465, 0x3421, 0x3e51, 0x646a, 0x6468, 0x6466, 0x646e, 0x646d,
- 0x646c, 0x646b, 0x646f, 0x6470, 0x403a, 0x6471, 0x6473, 0x6472,
- 0x3852, 0x4138, 0x6475, 0x457c, 0x6474, 0x6476, 0x4a35, 0x416c,
- 0x3947, 0x6477, 0x4e48, 0x6479, 0x647a, 0x647b, 0x647c, 0x3b65,
- 0x647d, 0x374f, 0x356a, 0x352a, 0x6521, 0x4c73, 0x3948, 0x647e,
- 0x6524, 0x4c66, 0x473c, 0x4933, 0x3d63, 0x6523, 0x3c53, 0x3949,
- 0x3b66, 0x3569, 0x4a36, 0x6522, 0x4147, 0x4b42, 0x3a77, 0x3b67,
- 0x445d, 0x6527, 0x4e5f, 0x3a59, 0x6528, 0x3f42, 0x652a, 0x3e52,
- 0x3a30, 0x6529, 0x3d2a, 0x383e, 0x4148, 0x6525, 0x652b, 0x6526,
- 0x3750, 0x652e, 0x6532, 0x376b, 0x652d, 0x6536, 0x394a, 0x4d6d,
- 0x303c, 0x6533, 0x356b, 0x6530, 0x6531, 0x457d, 0x652f, 0x652c,
- 0x3328, 0x4064, 0x3828, 0x6538, 0x6535, 0x6537, 0x6534, 0x3751,
- 0x4233, 0x6539, 0x416e, 0x6546, 0x6542, 0x653c, 0x6540, 0x3c7a,
- 0x305d, 0x653b, 0x6543, 0x6547, 0x394b, 0x4c56, 0x4456, 0x653d,
- 0x6545, 0x653a, 0x433e, 0x653f, 0x303d, 0x4c4a, 0x653e, 0x365b,
- 0x486c, 0x416d, 0x4e50, 0x3d6f, 0x656e, 0x6548, 0x407e, 0x6544,
- 0x6549, 0x654b, 0x4479, 0x654e, 0x654a, 0x4a54, 0x344b, 0x4c4b,
- 0x305e, 0x654d, 0x4e7d, 0x654c, 0x316f, 0x466c, 0x654f, 0x6556,
- 0x6550, 0x6557, 0x6553, 0x477b, 0x3c4a, 0x6555, 0x6552, 0x6558,
- 0x6551, 0x3d44, 0x4b25, 0x3d4c, 0x6554, 0x6560, 0x655c, 0x655f,
- 0x655d, 0x6561, 0x655b, 0x6541, 0x4053, 0x484b, 0x655e, 0x6559,
- 0x4121, 0x3752, 0x3d2b, 0x3f25, 0x4136, 0x6564, 0x6566, 0x6567,
- 0x6563, 0x6565, 0x655a, 0x6562, 0x656a, 0x6569, 0x4b7a, 0x372b,
- 0x6568, 0x656c, 0x656b, 0x656f, 0x6571, 0x3b3c, 0x656d, 0x6572,
- 0x6573, 0x6574, 0x657a, 0x453b, 0x6576, 0x6575, 0x6577, 0x6578,
- 0x6579, 0x657b, 0x657c, 0x344c, 0x657d, 0x657e, 0x6621, 0x6622,
- 0x6623, 0x6624, 0x6625, 0x6626, 0x6628, 0x6627, 0x6629, 0x662a,
- 0x662b, 0x662e, 0x662c, 0x662d, 0x3a61, 0x3753, 0x4356, 0x4833,
- 0x3d70, 0x474d, 0x486d, 0x662f, 0x586d, 0x6630, 0x6632, 0x4d65,
- 0x6631, 0x6634, 0x6633, 0x4d53, 0x6635, 0x487e, 0x6636, 0x6639,
- 0x6638, 0x6637, 0x663a, 0x3732, 0x4122, 0x3541, 0x663e, 0x663b,
- 0x663c, 0x663f, 0x6640, 0x663d, 0x3129, 0x3227, 0x6642, 0x6643,
- 0x6644, 0x4d62, 0x3d2c, 0x6646, 0x6645, 0x3f69, 0x6647, 0x6648,
- 0x6649, 0x3465, 0x344d, 0x664a, 0x664b, 0x4b5d, 0x4d63, 0x4d54,
- 0x4f37, 0x394d, 0x664e, 0x3c54, 0x664d, 0x664f, 0x3c29, 0x4251,
- 0x6650, 0x394c, 0x4c57, 0x6651, 0x6652, 0x6653, 0x6654, 0x6655,
- 0x3c2a, 0x4c6d, 0x6657, 0x433f, 0x6656, 0x6659, 0x6658, 0x665a,
- 0x403b, 0x665b, 0x665c, 0x4a39, 0x665d, 0x416f, 0x665e, 0x665f,
- 0x4e7e, 0x6662, 0x6661, 0x6660, 0x4430, 0x6663, 0x3f26, 0x6664,
- 0x6665, 0x4f38, 0x6666, 0x6667, 0x6669, 0x6668, 0x4825, 0x4679,
- 0x4f3e, 0x4829, 0x666b, 0x3e53, 0x492a, 0x666c, 0x666a, 0x344e,
- 0x3854, 0x3b68, 0x486e, 0x382a, 0x4b43, 0x666f, 0x666d, 0x394e,
- 0x394f, 0x3069, 0x3a68, 0x4759, 0x305f, 0x6674, 0x4340, 0x4758,
- 0x425b, 0x6676, 0x6672, 0x6675, 0x6670, 0x6673, 0x4b26, 0x3855,
- 0x307d, 0x6671, 0x6678, 0x6679, 0x4639, 0x363b, 0x6726, 0x473d,
- 0x3b69, 0x363c, 0x4048, 0x4f46, 0x4c2e, 0x6677, 0x4054, 0x3553,
- 0x667a, 0x667c, 0x667b, 0x667d, 0x4326, 0x473e, 0x4431, 0x6723,
- 0x6722, 0x667e, 0x3f55, 0x4965, 0x6725, 0x6724, 0x3950, 0x4f53,
- 0x6735, 0x6729, 0x672a, 0x3c70, 0x6728, 0x3978, 0x6727, 0x672b,
- 0x4432, 0x4a22, 0x4123, 0x425c, 0x672f, 0x6730, 0x672c, 0x672d,
- 0x672e, 0x3951, 0x6736, 0x6732, 0x4966, 0x4b6c, 0x4928, 0x6731,
- 0x6734, 0x6733, 0x4b44, 0x6737, 0x6738, 0x4137, 0x6739, 0x673b,
- 0x673f, 0x673c, 0x673a, 0x473f, 0x673d, 0x673e, 0x3232, 0x6745,
- 0x6740, 0x6741, 0x6742, 0x4221, 0x6744, 0x6743, 0x6746, 0x6747,
- 0x6748, 0x3f43, 0x3269, 0x6749, 0x4e57, 0x3c2b, 0x3d2d, 0x3b6a,
- 0x4357, 0x674a, 0x674b, 0x3131, 0x674c, 0x674d, 0x674e, 0x674f,
- 0x6750, 0x363d, 0x5a2a, 0x6751, 0x4065, 0x6752, 0x3c4b, 0x6753,
- 0x5030, 0x6754, 0x4a5e, 0x345c, 0x4124, 0x3d58, 0x4971, 0x3d2e,
- 0x6755, 0x3952, 0x6756, 0x484c, 0x6764, 0x6758, 0x4249, 0x4775,
- 0x383f, 0x6757, 0x4125, 0x6759, 0x447a, 0x675b, 0x675a, 0x675d,
- 0x675c, 0x675e, 0x6760, 0x675f, 0x344f, 0x6761, 0x6762, 0x6763,
- 0x3a31, 0x4e49, 0x6765, 0x3f27, 0x3170, 0x6766, 0x6767, 0x6768,
- 0x3072, 0x6769, 0x676a, 0x4967, 0x3c47, 0x676c, 0x3329, 0x3032,
- 0x676b, 0x676e, 0x474e, 0x3f44, 0x3256, 0x4b27, 0x375d, 0x365c,
- 0x676d, 0x326a, 0x3423, 0x3171, 0x6772, 0x4e6a, 0x425d, 0x4944,
- 0x677e, 0x3257, 0x677c, 0x677a, 0x6771, 0x676f, 0x6770, 0x3c63,
- 0x366c, 0x4377, 0x4651, 0x3151, 0x6774, 0x6773, 0x6779, 0x6775,
- 0x6778, 0x4c50, 0x6777, 0x3258, 0x337d, 0x677b, 0x677d, 0x3754,
- 0x6823, 0x682c, 0x682d, 0x302b, 0x6834, 0x3071, 0x682b, 0x682a,
- 0x6825, 0x6824, 0x6822, 0x6821, 0x4363, 0x427b, 0x6827, 0x6826,
- 0x6829, 0x4170, 0x3755, 0x3141, 0x6828, 0x3953, 0x4171, 0x683a,
- 0x683b, 0x3259, 0x322e, 0x6838, 0x682e, 0x6836, 0x683d, 0x6837,
- 0x6835, 0x6776, 0x6833, 0x682f, 0x3450, 0x6831, 0x683c, 0x6832,
- 0x683e, 0x6830, 0x477c, 0x4d69, 0x6839, 0x684f, 0x6847, 0x3f7b,
- 0x3546, 0x365d, 0x6842, 0x325b, 0x3e54, 0x6845, 0x3a5a, 0x4551,
- 0x684a, 0x4a6e, 0x6841, 0x325a, 0x3856, 0x4929, 0x684b, 0x683f,
- 0x6848, 0x6852, 0x6843, 0x6844, 0x463a, 0x6849, 0x6846, 0x4b28,
- 0x684c, 0x3060, 0x6840, 0x684e, 0x684d, 0x476b, 0x6854, 0x685f,
- 0x337e, 0x6862, 0x6850, 0x6855, 0x4d6e, 0x685e, 0x4d55, 0x4e2a,
- 0x4378, 0x336b, 0x4972, 0x6864, 0x4621, 0x3031, 0x685d, 0x6859,
- 0x4172, 0x6853, 0x685b, 0x6860, 0x472c, 0x302a, 0x6858, 0x6861,
- 0x4978, 0x685c, 0x6857, 0x3e55, 0x3d2f, 0x3c2c, 0x4c58, 0x4947,
- 0x6867, 0x6870, 0x685a, 0x3377, 0x3e78, 0x6865, 0x686a, 0x4173,
- 0x6866, 0x686d, 0x435f, 0x686e, 0x4d56, 0x6863, 0x3338, 0x6869,
- 0x686c, 0x4c2c, 0x686f, 0x6868, 0x686b, 0x4b29, 0x4f21, 0x6873,
- 0x687a, 0x6872, 0x3c43, 0x6851, 0x4a4e, 0x4c22, 0x6879, 0x6878,
- 0x6874, 0x6875, 0x3136, 0x6877, 0x6871, 0x4455, 0x6876, 0x307e,
- 0x4222, 0x4a43, 0x687b, 0x6921, 0x4859, 0x687e, 0x3e56, 0x3c49,
- 0x6923, 0x363e, 0x6924, 0x4979, 0x687d, 0x6856, 0x687c, 0x4f4f,
- 0x4622, 0x4973, 0x692b, 0x6931, 0x6932, 0x6925, 0x4776, 0x692f,
- 0x6927, 0x6929, 0x6933, 0x6928, 0x692c, 0x3172, 0x4665, 0x692d,
- 0x6930, 0x6926, 0x4126, 0x692a, 0x3b27, 0x3f45, 0x3730, 0x4c74,
- 0x4c79, 0x3d72, 0x6937, 0x6935, 0x4f4e, 0x6934, 0x4d75, 0x6936,
- 0x6938, 0x6939, 0x693c, 0x693a, 0x4623, 0x693b, 0x484d, 0x692e,
- 0x3d73, 0x693d, 0x6942, 0x4174, 0x6941, 0x6922, 0x6943, 0x4149,
- 0x693e, 0x6940, 0x693f, 0x5d31, 0x5d22, 0x6945, 0x6944, 0x4d76,
- 0x623c, 0x6946, 0x6947, 0x6948, 0x3857, 0x3554, 0x694a, 0x515d,
- 0x3575, 0x4e3a, 0x3673, 0x694b, 0x694c, 0x436e, 0x694d, 0x467a,
- 0x303a, 0x3263, 0x6952, 0x6953, 0x694e, 0x3b3d, 0x694f, 0x4742,
- 0x6950, 0x6951, 0x695b, 0x6955, 0x6958, 0x6954, 0x6956, 0x6957,
- 0x3c58, 0x6959, 0x4341, 0x3756, 0x3342, 0x695c, 0x333f, 0x6961,
- 0x695d, 0x6960, 0x483a, 0x695e, 0x695f, 0x4948, 0x485a, 0x6962,
- 0x427d, 0x696c, 0x6968, 0x326b, 0x6966, 0x4b2a, 0x6967, 0x6964,
- 0x6965, 0x696a, 0x696d, 0x696b, 0x6969, 0x6963, 0x4358, 0x6974,
- 0x4c2a, 0x6972, 0x6973, 0x696e, 0x6970, 0x6971, 0x696f, 0x4066,
- 0x4f39, 0x6978, 0x6979, 0x6a21, 0x3f2a, 0x697b, 0x697e, 0x6976,
- 0x6975, 0x6a22, 0x325c, 0x697c, 0x6a23, 0x697d, 0x697a, 0x4433,
- 0x6977, 0x4768, 0x6a27, 0x4d3b, 0x6a26, 0x6a25, 0x6a2e, 0x6a28,
- 0x6a30, 0x4d66, 0x6a33, 0x6a2a, 0x6a2b, 0x6a2f, 0x6a32, 0x6a31,
- 0x6a29, 0x6a2c, 0x6a3d, 0x6a36, 0x6a34, 0x6a35, 0x6a3a, 0x6a3b,
- 0x332a, 0x3542, 0x6a39, 0x6a24, 0x6a38, 0x6a3c, 0x6a37, 0x6a3e,
- 0x6a40, 0x6a3f, 0x6a42, 0x6a41, 0x695a, 0x6a46, 0x6a43, 0x6a44,
- 0x6a45, 0x6a47, 0x376c, 0x6a49, 0x6a48, 0x3d30, 0x3954, 0x5e27,
- 0x6a4a, 0x3d51, 0x3339, 0x6a4b, 0x3152, 0x3e57, 0x6a4c, 0x3955,
- 0x6a4d, 0x3061, 0x493d, 0x6a4e, 0x3f6a, 0x6a55, 0x6a52, 0x436f,
- 0x6a53, 0x6a50, 0x365e, 0x6a4f, 0x6a56, 0x3736, 0x425e, 0x6a5c,
- 0x6a58, 0x4235, 0x6a57, 0x6a5a, 0x6a51, 0x6a5b, 0x6a5d, 0x486f,
- 0x6a59, 0x6a5e, 0x6a60, 0x3853, 0x6a54, 0x3041, 0x6a5f, 0x3a5b,
- 0x4e76, 0x6a61, 0x6a62, 0x4175, 0x4e22, 0x6a63, 0x4d35, 0x6a64,
- 0x6a65, 0x4a64, 0x6a66, 0x3a40, 0x4e23, 0x6a6b, 0x6a6c, 0x3e58,
- 0x6a6a, 0x4d67, 0x6a67, 0x6a69, 0x403d, 0x3f7e, 0x6a68, 0x6a6d,
- 0x4a23, 0x6a6f, 0x6a6e, 0x336c, 0x4b2b, 0x6a70, 0x6a7c, 0x6a72,
- 0x6a73, 0x6a74, 0x6a75, 0x6a79, 0x6a7a, 0x6a78, 0x6a76, 0x6a71,
- 0x6a77, 0x6a7b, 0x7037, 0x3228, 0x6a7e, 0x365f, 0x6a7d, 0x6b22,
- 0x6b21, 0x6b24, 0x6b23, 0x6b25, 0x3d31, 0x6b26, 0x6b27, 0x6b28,
- 0x403e, 0x4d57, 0x6b29, 0x4a24, 0x4746, 0x6b2a, 0x6b2b, 0x382b,
- 0x352c, 0x6b2c, 0x3b6b, 0x4741, 0x6b2d, 0x3350, 0x6b2e, 0x6b30,
- 0x4d77, 0x6b2f, 0x3f46, 0x6b31, 0x6b32, 0x6b33, 0x3451, 0x6b34,
- 0x6b35, 0x6b36, 0x6b37, 0x3351, 0x6b38, 0x6b39, 0x6b3a, 0x3272,
- 0x3f28, 0x6b3b, 0x6b3c, 0x6b3d, 0x3840, 0x447b, 0x6b3e, 0x3757,
- 0x3f56, 0x6b41, 0x4624, 0x6b40, 0x3731, 0x6b3f, 0x4277, 0x352d,
- 0x6b42, 0x6b43, 0x3e59, 0x376d, 0x6b44, 0x4b2c, 0x405f, 0x3576,
- 0x4c75, 0x414a, 0x6b45, 0x3f47, 0x4370, 0x3e5a, 0x6b46, 0x6b49,
- 0x6b4a, 0x3a3e, 0x4242, 0x6b48, 0x3e5b, 0x493e, 0x6b47, 0x3b6c,
- 0x3153, 0x6b4e, 0x3758, 0x3b6e, 0x3b6d, 0x4f4d, 0x6b4d, 0x6b4c,
- 0x4127, 0x354d, 0x4f43, 0x333a, 0x3e5c, 0x6b4b, 0x6b50, 0x6b51,
- 0x6b4f, 0x3858, 0x4d40, 0x3b6f, 0x4727, 0x6b54, 0x4040, 0x4342,
- 0x4d36, 0x6b57, 0x386c, 0x403f, 0x6b53, 0x6b58, 0x386d, 0x6b55,
- 0x6b56, 0x6b52, 0x4062, 0x4649, 0x432f, 0x325d, 0x4870, 0x3543,
- 0x4434, 0x6b5b, 0x6b59, 0x434c, 0x4041, 0x3452, 0x6b5a, 0x3f5b,
- 0x4e4a, 0x4f40, 0x6b5c, 0x6b67, 0x4435, 0x6b66, 0x6b63, 0x6b6b,
- 0x6b64, 0x6b60, 0x447c, 0x6b5f, 0x6b5d, 0x4d21, 0x3b70, 0x6b61,
- 0x6b5e, 0x6b65, 0x3d74, 0x3841, 0x427a, 0x4b45, 0x315a, 0x3062,
- 0x4625, 0x6b69, 0x6b68, 0x4666, 0x6b6d, 0x6b62, 0x6b6c, 0x6b6e,
- 0x382c, 0x6b6a, 0x3956, 0x3c55, 0x6b6f, 0x4d58, 0x6b72, 0x6b75,
- 0x6b73, 0x4935, 0x6b70, 0x3660, 0x6b74, 0x6b76, 0x6b7a, 0x6b77,
- 0x6b79, 0x6b78, 0x6b7b, 0x3c31, 0x6b7d, 0x6b7c, 0x4968, 0x6c21,
- 0x3759, 0x6b7e, 0x6c22, 0x6c23, 0x3544, 0x6641, 0x3e79, 0x6c24,
- 0x386e, 0x6c25, 0x6c26, 0x3b3e, 0x5a4e, 0x6c27, 0x6c28, 0x3d32,
- 0x6c29, 0x6c2a, 0x6c2b, 0x6c2c, 0x6c2d, 0x432b, 0x6c2e, 0x6c30,
- 0x6c2f, 0x4626, 0x6c31, 0x4b2d, 0x6c32, 0x6c33, 0x6c34, 0x6c35,
- 0x465a, 0x3e5d, 0x6c36, 0x396b, 0x502e, 0x6c37, 0x6c38, 0x493f,
- 0x6c39, 0x6c41, 0x6c3a, 0x6c3c, 0x6c3b, 0x6c3d, 0x4b46, 0x6c3e,
- 0x6c3f, 0x6c40, 0x6c42, 0x332d, 0x4467, 0x4969, 0x3a62, 0x3957,
- 0x494f, 0x325f, 0x484e, 0x6c45, 0x3453, 0x4055, 0x6c44, 0x6c49,
- 0x4379, 0x4c63, 0x6c47, 0x6c48, 0x352e, 0x6c4a, 0x4763, 0x425f,
- 0x4871, 0x453d, 0x6c46, 0x4b47, 0x326c, 0x6c4c, 0x4f28, 0x4442,
- 0x4f45, 0x3b71, 0x6c4b, 0x4231, 0x6c5c, 0x4128, 0x4678, 0x4950,
- 0x6c4f, 0x3b3f, 0x3b72, 0x3e5e, 0x4765, 0x382d, 0x6c4e, 0x6c4d,
- 0x496a, 0x3c41, 0x4552, 0x6c51, 0x6c52, 0x3958, 0x6c50, 0x6c53,
- 0x6c54, 0x6c56, 0x4223, 0x6c55, 0x3466, 0x6c58, 0x6c57, 0x6c59,
- 0x6c5b, 0x6c5d, 0x6c5e, 0x4056, 0x3c4f, 0x6c5f, 0x3352, 0x6c60,
- 0x4176, 0x6c61, 0x6c62, 0x496b, 0x352f, 0x6c63, 0x4436, 0x315b,
- 0x6c64, 0x3c71, 0x3f76, 0x422d, 0x6c67, 0x6c66, 0x6c65, 0x6c6d,
- 0x6c6b, 0x6c68, 0x6c6a, 0x6c69, 0x6c6c, 0x3577, 0x6c70, 0x4057,
- 0x6c71, 0x3859, 0x6c6e, 0x6c6f, 0x4f29, 0x4437, 0x4129, 0x6c72,
- 0x6c75, 0x6c73, 0x6c74, 0x4d59, 0x4627, 0x6c78, 0x6c76, 0x6c77,
- 0x6c79, 0x6d29, 0x6c7c, 0x6c7d, 0x6c7b, 0x6c7a, 0x447d, 0x6d21,
- 0x6d25, 0x6d22, 0x6c7e, 0x6d23, 0x6d24, 0x6d2b, 0x6d26, 0x4058,
- 0x6d28, 0x6d2a, 0x6d27, 0x6d2d, 0x3d33, 0x6d2c, 0x6d2e, 0x6d2f,
- 0x6d32, 0x6d31, 0x6d30, 0x6d34, 0x6d33, 0x4c76, 0x6d36, 0x6d35,
- 0x6d37, 0x6d38, 0x6d3a, 0x6d39, 0x3f48, 0x6d3b, 0x366d, 0x6d3c,
- 0x6d3e, 0x6d3f, 0x6d40, 0x6d3d, 0x6d41, 0x3c56, 0x6d42, 0x3530,
- 0x3733, 0x382e, 0x6d43, 0x4670, 0x453e, 0x6d44, 0x6d47, 0x3c34,
- 0x6d46, 0x6d45, 0x375a, 0x6d48, 0x3353, 0x6d4a, 0x3a5c, 0x6d49,
- 0x6d52, 0x6d4c, 0x6d4e, 0x4a65, 0x6d4b, 0x6d4d, 0x6d51, 0x6d4f,
- 0x3531, 0x6d50, 0x6d53, 0x475a, 0x4e58, 0x3d34, 0x6d54, 0x4d22,
- 0x6d56, 0x6d55, 0x6d59, 0x4d41, 0x6d58, 0x336d, 0x6d57, 0x6d5c,
- 0x6d5b, 0x6d5a, 0x4532, 0x6d5d, 0x6d5e, 0x6d5f, 0x396c, 0x3725,
- 0x6d60, 0x6d61, 0x6d62, 0x3f49, 0x6d63, 0x3c2d, 0x6d64, 0x6d65,
- 0x5221, 0x517e, 0x6d66, 0x6570, 0x6d67, 0x4324, 0x3f2b, 0x4740,
- 0x6d68, 0x4a55, 0x4454, 0x397e, 0x4329, 0x312a, 0x4b78, 0x3f57,
- 0x375e, 0x3661, 0x4a56, 0x6d69, 0x6d6b, 0x6d6a, 0x3260, 0x4676,
- 0x6d6c, 0x4777, 0x4533, 0x6d6d, 0x3d52, 0x6d6f, 0x4c42, 0x6d7e,
- 0x6d71, 0x6d72, 0x4449, 0x4260, 0x4177, 0x4628, 0x6d70, 0x3555,
- 0x6d79, 0x6d76, 0x6e25, 0x4629, 0x4360, 0x6d73, 0x447e, 0x4553,
- 0x6d74, 0x6d78, 0x3f60, 0x4767, 0x444c, 0x4042, 0x6d77, 0x422e,
- 0x4224, 0x6d75, 0x3029, 0x4f22, 0x6d7a, 0x4261, 0x3d35, 0x3f4a,
- 0x6d7c, 0x6d7b, 0x306f, 0x6d7d, 0x492f, 0x6e27, 0x465b, 0x3f6b,
- 0x4359, 0x3678, 0x6e26, 0x4d37, 0x313f, 0x4a57, 0x3261, 0x6e21,
- 0x6e22, 0x6e23, 0x6e24, 0x463b, 0x4323, 0x3063, 0x6e28, 0x6e29,
- 0x7423, 0x423d, 0x6e2a, 0x3173, 0x414c, 0x382f, 0x4d5a, 0x6e2b,
- 0x452c, 0x4178, 0x3c57, 0x6e2c, 0x6e2f, 0x3d65, 0x6e2d, 0x412b,
- 0x412a, 0x3064, 0x4e4b, 0x6e31, 0x4872, 0x6e33, 0x6e32, 0x6e30,
- 0x6364, 0x3454, 0x6d6e, 0x6e35, 0x6e34, 0x6e36, 0x4d38, 0x4661,
- 0x4b2e, 0x6e37, 0x3c59, 0x6e38, 0x6e39, 0x6e3a, 0x4521, 0x306a,
- 0x3959, 0x4f3a, 0x6e3e, 0x3734, 0x6e3b, 0x6e3c, 0x4974, 0x3354,
- 0x4d39, 0x363f, 0x4554, 0x6e3f, 0x6e40, 0x6e41, 0x4522, 0x6e43,
- 0x6e42, 0x4653, 0x6e44, 0x3d36, 0x3c60, 0x475b, 0x4371, 0x3c72,
- 0x3f6c, 0x6e45, 0x6e46, 0x3f5d, 0x6e47, 0x6e48, 0x6e49, 0x4d6f,
- 0x3d37, 0x6e4b, 0x6e4a, 0x395a, 0x3973, 0x3b40, 0x6e4e, 0x3d66,
- 0x6e4d, 0x6e4c, 0x4269, 0x386f, 0x4043, 0x4830, 0x3d39, 0x6e4f,
- 0x3e5f, 0x6e52, 0x6e50, 0x6e51, 0x6e54, 0x6e53, 0x3e7a, 0x6e55,
- 0x6e56, 0x6e57, 0x4850, 0x3a53, 0x3c61, 0x6e58, 0x6e59, 0x4e24,
- 0x3d45, 0x4c6e, 0x4e4c, 0x6e5a, 0x3662, 0x6e5b, 0x4523, 0x6e5e,
- 0x3378, 0x3f4b, 0x6e5c, 0x6e5d, 0x4460, 0x4b55, 0x367c, 0x6e60,
- 0x6e61, 0x6e5f, 0x6e63, 0x465f, 0x3343, 0x6e67, 0x6e64, 0x6e66,
- 0x6e62, 0x6f4f, 0x6e65, 0x4e6b, 0x385a, 0x6e6f, 0x4534, 0x6e6a,
- 0x6e6d, 0x6e6b, 0x6e70, 0x6e71, 0x6e69, 0x6e76, 0x3174, 0x6e68,
- 0x482d, 0x6e6c, 0x3e60, 0x395b, 0x4b48, 0x3664, 0x3d46, 0x463c,
- 0x412d, 0x6e74, 0x6e6e, 0x6e73, 0x4c43, 0x4438, 0x6e75, 0x6e72,
- 0x412c, 0x6e79, 0x6e78, 0x6e77, 0x4b2f, 0x3d7b, 0x6e7a, 0x4a5f,
- 0x3154, 0x4946, 0x4372, 0x3578, 0x6e7c, 0x395d, 0x3b2c, 0x6e7b,
- 0x3f6d, 0x3f6e, 0x6f21, 0x6f23, 0x3e7b, 0x6f22, 0x6f24, 0x3653,
- 0x4945, 0x3c62, 0x4f23, 0x6e7e, 0x3a78, 0x4f3f, 0x6f26, 0x6f25,
- 0x6f27, 0x6e7d, 0x4669, 0x4555, 0x4457, 0x6f2c, 0x4343, 0x6f28,
- 0x6f29, 0x372d, 0x6f2b, 0x3830, 0x6f2a, 0x3e61, 0x3379, 0x6f30,
- 0x3a3f, 0x4179, 0x444a, 0x333b, 0x6f2e, 0x6f2f, 0x4443, 0x6f2d,
- 0x6f31, 0x6f37, 0x6f3a, 0x6f39, 0x452d, 0x6f32, 0x6f33, 0x6f36,
- 0x6f38, 0x3640, 0x6f3b, 0x6f35, 0x6f34, 0x6f3f, 0x6f40, 0x6f41,
- 0x6f3e, 0x6f3d, 0x3e62, 0x462a, 0x6f3c, 0x6f45, 0x6f43, 0x6f44,
- 0x6f42, 0x4278, 0x6f46, 0x6f47, 0x6f49, 0x3455, 0x6f48, 0x4c7a,
- 0x6f54, 0x6f4a, 0x6f4d, 0x6f4b, 0x6f4c, 0x6f4e, 0x6f50, 0x6f51,
- 0x6f52, 0x6f55, 0x6f53, 0x6f56, 0x6f58, 0x6f57, 0x4439, 0x4c67,
- 0x6f59, 0x412e, 0x6f5a, 0x4a44, 0x6f5b, 0x332b, 0x313c, 0x3457,
- 0x3456, 0x6f5c, 0x6f5d, 0x6f5e, 0x6f5f, 0x6f60, 0x3458, 0x3355,
- 0x395e, 0x4836, 0x6f62, 0x6f61, 0x6f63, 0x315c, 0x6f66, 0x6f65,
- 0x6f64, 0x6f67, 0x6f6a, 0x3047, 0x6f68, 0x6f6c, 0x6f6b, 0x6f6e,
- 0x6f6d, 0x6f6f, 0x462e, 0x6f70, 0x6f71, 0x6f73, 0x6f72, 0x496c,
- 0x6f74, 0x6f75, 0x3a65, 0x6f76, 0x6f77, 0x4b49, 0x414b, 0x3024,
- 0x424b, 0x6f78, 0x496d, 0x6f7b, 0x6f79, 0x395f, 0x6f7a, 0x3842,
- 0x4a45, 0x6f7d, 0x7021, 0x6f7e, 0x7022, 0x3121, 0x3f58, 0x3d7c,
- 0x3459, 0x7023, 0x4766, 0x7025, 0x3122, 0x7024, 0x4444, 0x4e4d,
- 0x462b, 0x6f7c, 0x4e26, 0x3831, 0x4d5b, 0x3679, 0x4e34, 0x3728,
- 0x4262, 0x6721, 0x7026, 0x332c, 0x3f6f, 0x3356, 0x7028, 0x7029,
- 0x7027, 0x3764, 0x3a5d, 0x3e63, 0x3123, 0x4e59, 0x702b, 0x6e2e,
- 0x702a, 0x702e, 0x702c, 0x702d, 0x702f, 0x7030, 0x4e6c, 0x7031,
- 0x7032, 0x4049, 0x483b, 0x3f7d, 0x3467, 0x4d3a, 0x326d, 0x3d38,
- 0x385b, 0x7035, 0x7034, 0x3b73, 0x7036, 0x7033, 0x3b28, 0x703a,
- 0x6a2d, 0x5256, 0x3f77, 0x7038, 0x4e25, 0x4671, 0x312b, 0x4063,
- 0x3c36, 0x4a37, 0x3140, 0x4e6d, 0x4d6b, 0x703b, 0x4545, 0x3c7b,
- 0x703c, 0x703d, 0x3f4c, 0x703e, 0x4e6e, 0x7039, 0x7040, 0x7042,
- 0x7041, 0x703f, 0x7043, 0x7044, 0x417a, 0x3262, 0x7045, 0x4c38,
- 0x7046, 0x7047, 0x4f2a, 0x5b31, 0x7048, 0x7049, 0x704a, 0x704e,
- 0x704b, 0x704c, 0x704d, 0x704f, 0x4044, 0x4c77, 0x4045, 0x7050,
- 0x4873, 0x7051, 0x7353, 0x4c4c, 0x7052, 0x7053, 0x7054, 0x3357,
- 0x7056, 0x3f59, 0x7057, 0x3724, 0x7058, 0x705c, 0x705a, 0x705b,
- 0x3373, 0x7059, 0x705d, 0x705e, 0x3048, 0x705f, 0x7060, 0x3e64,
- 0x7061, 0x3547, 0x7064, 0x7063, 0x7062, 0x6b71, 0x4a5c, 0x7065,
- 0x7066, 0x7067, 0x7068, 0x7069, 0x706a, 0x345a, 0x706b, 0x706c,
- 0x4723, 0x706e, 0x323b, 0x7071, 0x7070, 0x3124, 0x3641, 0x4a47,
- 0x443a, 0x3a22, 0x3960, 0x3d67, 0x3f5c, 0x7073, 0x7072, 0x4d42,
- 0x3468, 0x4852, 0x465c, 0x3f7c, 0x4e4e, 0x375b, 0x7076, 0x7075,
- 0x4b4b, 0x462c, 0x3150, 0x7077, 0x7074, 0x4951, 0x4d6a, 0x7078,
- 0x7079, 0x707b, 0x426a, 0x335b, 0x335c, 0x707a, 0x3469, 0x3832,
- 0x346a, 0x453f, 0x4e60, 0x385c, 0x707c, 0x707d, 0x707e, 0x7121,
- 0x7123, 0x7122, 0x4977, 0x7124, 0x7125, 0x7126, 0x7127, 0x7129,
- 0x7128, 0x712a, 0x4874, 0x664c, 0x3f29, 0x3532, 0x712b, 0x712c,
- 0x522c, 0x5d3b, 0x4853, 0x307b, 0x303b, 0x3b74, 0x4b30, 0x3e7e,
- 0x712d, 0x4c5f, 0x712e, 0x4d5c, 0x3142, 0x3b41, 0x712f, 0x326e,
- 0x7130, 0x7131, 0x7133, 0x7134, 0x7136, 0x7132, 0x7135, 0x345b,
- 0x7137, 0x7138, 0x7139, 0x713a, 0x713b, 0x713d, 0x713c, 0x713f,
- 0x7142, 0x713e, 0x7140, 0x7141, 0x7143, 0x3642, 0x3c73, 0x7144,
- 0x7145, 0x3961, 0x7146, 0x333e, 0x474f, 0x7147, 0x7148, 0x435a,
- 0x466b, 0x7149, 0x477d, 0x424c, 0x3158, 0x366e, 0x366f, 0x4373,
- 0x714e, 0x3670, 0x326f, 0x714d, 0x714b, 0x714c, 0x714a, 0x7158,
- 0x714f, 0x7150, 0x7151, 0x7152, 0x7154, 0x7153, 0x3d59, 0x7155,
- 0x7157, 0x3533, 0x7156, 0x417b, 0x3833, 0x7159, 0x424d, 0x715a,
- 0x462d, 0x715b, 0x7160, 0x715e, 0x715d, 0x715f, 0x715c, 0x7162,
- 0x7161, 0x7164, 0x3643, 0x7163, 0x7165, 0x7166, 0x7168, 0x7167,
- 0x7169, 0x716b, 0x716a, 0x397c, 0x716c, 0x716d, 0x333c, 0x716e,
- 0x716f, 0x3f71, 0x7170, 0x7171, 0x7172, 0x7173, 0x3962, 0x7174,
- 0x7175, 0x7176, 0x7177, 0x7178, 0x4831, 0x717a, 0x4926, 0x717b,
- 0x7179, 0x717d, 0x717c, 0x717e, 0x7221, 0x7222, 0x7223, 0x7224,
- 0x7225, 0x7226, 0x7227, 0x7228, 0x7229, 0x722a, 0x722b, 0x722c,
- 0x722d, 0x722e, 0x5d35, 0x722f, 0x6478, 0x3534, 0x3321, 0x3a32,
- 0x7231, 0x7230, 0x4c25, 0x7233, 0x7234, 0x7232, 0x7235, 0x4b62,
- 0x7236, 0x357b, 0x4f25, 0x7237, 0x7239, 0x303e, 0x723a, 0x4a2b,
- 0x7238, 0x723b, 0x723c, 0x723d, 0x723e, 0x723f, 0x4b6e, 0x3b2d,
- 0x3a7a, 0x412f, 0x7240, 0x7243, 0x7241, 0x7244, 0x3871, 0x7242,
- 0x7245, 0x7246, 0x7247, 0x724b, 0x3b2a, 0x4264, 0x724c, 0x7249,
- 0x7248, 0x724a, 0x375f, 0x7250, 0x724f, 0x724e, 0x3033, 0x725a,
- 0x7256, 0x7257, 0x7253, 0x7259, 0x7255, 0x3362, 0x4f4c, 0x7258,
- 0x7254, 0x7252, 0x7251, 0x725c, 0x725f, 0x725e, 0x725d, 0x4949,
- 0x725b, 0x3073, 0x7260, 0x7262, 0x336f, 0x724d, 0x3137, 0x7264,
- 0x7263, 0x7261, 0x432d, 0x4b70, 0x4e5a, 0x7265, 0x7266, 0x7267,
- 0x7268, 0x7269, 0x443b, 0x726a, 0x4837, 0x726f, 0x726b, 0x726c,
- 0x4b31, 0x4c44, 0x4650, 0x7270, 0x7271, 0x463e, 0x726e, 0x726d,
- 0x322a, 0x7279, 0x7278, 0x3175, 0x7276, 0x7275, 0x7273, 0x337b,
- 0x7272, 0x3c32, 0x3229, 0x3963, 0x727c, 0x727b, 0x727a, 0x7277,
- 0x727d, 0x727e, 0x7325, 0x7324, 0x7326, 0x312d, 0x7321, 0x7322,
- 0x3974, 0x4c39, 0x7323, 0x4b32, 0x732b, 0x7327, 0x732c, 0x7329,
- 0x7328, 0x375c, 0x732d, 0x732e, 0x732f, 0x732a, 0x7274, 0x7330,
- 0x4461, 0x7334, 0x7335, 0x7333, 0x7332, 0x7338, 0x7331, 0x7336,
- 0x7337, 0x733a, 0x7339, 0x733c, 0x733d, 0x733e, 0x4f49, 0x733b,
- 0x426b, 0x3a6d, 0x733f, 0x7340, 0x7341, 0x7342, 0x7343, 0x3834,
- 0x7344, 0x7345, 0x3c2f, 0x7346, 0x7347, 0x7348, 0x7349, 0x734c,
- 0x734a, 0x4f3c, 0x734b, 0x4e6f, 0x734d, 0x4e5b, 0x734e, 0x477e,
- 0x734f, 0x7351, 0x7352, 0x7350, 0x396d, 0x4c4d, 0x4b63, 0x5677,
- 0x5d60, 0x4b7b, 0x322b, 0x7354, 0x3550, 0x7355, 0x7356, 0x7357,
- 0x3975, 0x7358, 0x6054, 0x4c5b, 0x4263, 0x7359, 0x735b, 0x735a,
- 0x735c, 0x735d, 0x735e, 0x735f, 0x7360, 0x7361, 0x7362, 0x7363,
- 0x7364, 0x7365, 0x7366, 0x7367, 0x7368, 0x4524, 0x385d, 0x736a,
- 0x414d, 0x736b, 0x736c, 0x4921, 0x736d, 0x736e, 0x6337, 0x6c5a,
- 0x706d, 0x736f, 0x7370, 0x7372, 0x7373, 0x7374, 0x4e70, 0x7371,
- 0x7375, 0x7376, 0x7378, 0x7377, 0x737a, 0x737b, 0x7379, 0x4e36,
- 0x737c, 0x737d, 0x6354, 0x737e, 0x212a, 0x2174, 0x2170, 0x2173,
- 0x2175, 0x214a, 0x214b, 0x2176, 0x215c, 0x2124, 0x2125, 0x213f,
- 0x2330, 0x2331, 0x2332, 0x2333, 0x2334, 0x2335, 0x2336, 0x2337,
- 0x2338, 0x2339, 0x2127, 0x2128, 0x2163, 0x2161, 0x2164, 0x2129,
- 0x2177, 0x2341, 0x2342, 0x2343, 0x2344, 0x2345, 0x2346, 0x2347,
- 0x2348, 0x2349, 0x234a, 0x234b, 0x234c, 0x234d, 0x234e, 0x234f,
- 0x2350, 0x2351, 0x2352, 0x2353, 0x2354, 0x2355, 0x2356, 0x2357,
- 0x2358, 0x2359, 0x235a, 0x214e, 0x214f, 0x2130, 0x2132, 0x212e,
- 0x2361, 0x2362, 0x2363, 0x2364, 0x2365, 0x2366, 0x2367, 0x2368,
- 0x2369, 0x236a, 0x236b, 0x236c, 0x236d, 0x236e, 0x236f, 0x2370,
- 0x2371, 0x2372, 0x2373, 0x2374, 0x2375, 0x2376, 0x2377, 0x2378,
- 0x2379, 0x237a, 0x2150, 0x2143, 0x2151, 0x2131, 0x216f,
-};
-
-static const Summary16 jisx0208_uni2indx_page00[16] = {
- /* 0x0000 */
- { 0, 0x0000 }, { 0, 0x0000 }, { 0, 0x0000 }, { 0, 0x0000 },
- { 0, 0x0000 }, { 0, 0x1000 }, { 1, 0x0000 }, { 1, 0x0000 },
- { 1, 0x0000 }, { 1, 0x0000 }, { 1, 0x118c }, { 6, 0x0053 },
- { 10, 0x0000 }, { 10, 0x0080 }, { 11, 0x0000 }, { 11, 0x0080 },
-};
-static const Summary16 jisx0208_uni2indx_page03[22] = {
- /* 0x0300 */
- { 12, 0x0000 }, { 12, 0x0000 }, { 12, 0x0000 }, { 12, 0x0000 },
- { 12, 0x0000 }, { 12, 0x0000 }, { 12, 0x0000 }, { 12, 0x0000 },
- { 12, 0x0000 }, { 12, 0xfffe }, { 27, 0x03fb }, { 36, 0xfffe },
- { 51, 0x03fb }, { 60, 0x0000 }, { 60, 0x0000 }, { 60, 0x0000 },
- /* 0x0400 */
- { 60, 0x0002 }, { 61, 0xffff }, { 77, 0xffff }, { 93, 0xffff },
- { 109, 0xffff }, { 125, 0x0002 },
-};
-static const Summary16 jisx0208_uni2indx_page20[50] = {
- /* 0x2000 */
- { 126, 0x0000 }, { 126, 0x3361 }, { 133, 0x0063 }, { 137, 0x080d },
- { 141, 0x0000 }, { 141, 0x0000 }, { 141, 0x0000 }, { 141, 0x0000 },
- { 141, 0x0000 }, { 141, 0x0000 }, { 141, 0x0000 }, { 141, 0x0000 },
- { 141, 0x0000 }, { 141, 0x0000 }, { 141, 0x0000 }, { 141, 0x0000 },
- /* 0x2100 */
- { 141, 0x0008 }, { 142, 0x0000 }, { 142, 0x0800 }, { 143, 0x0000 },
- { 143, 0x0000 }, { 143, 0x0000 }, { 143, 0x0000 }, { 143, 0x0000 },
- { 143, 0x0000 }, { 143, 0x000f }, { 147, 0x0000 }, { 147, 0x0000 },
- { 147, 0x0000 }, { 147, 0x0014 }, { 149, 0x0000 }, { 149, 0x0000 },
- /* 0x2200 */
- { 149, 0x098d }, { 155, 0x6404 }, { 159, 0x1f81 }, { 166, 0x2030 },
- { 169, 0x0000 }, { 169, 0x0004 }, { 170, 0x0cc3 }, { 176, 0x0000 },
- { 176, 0x00cc }, { 180, 0x0000 }, { 180, 0x0020 }, { 181, 0x0000 },
- { 181, 0x0000 }, { 181, 0x0000 }, { 181, 0x0000 }, { 181, 0x0000 },
- /* 0x2300 */
- { 181, 0x0000 }, { 181, 0x0004 },
-};
-static const Summary16 jisx0208_uni2indx_page25[23] = {
- /* 0x2500 */
- { 182, 0x900f }, { 188, 0x3999 }, { 196, 0x9939 }, { 204, 0x9999 },
- { 212, 0x0804 }, { 214, 0x0000 }, { 214, 0x0000 }, { 214, 0x0000 },
- { 214, 0x0000 }, { 214, 0x0000 }, { 214, 0x0003 }, { 216, 0x300c },
- { 220, 0xc8c0 }, { 225, 0x0000 }, { 225, 0x8000 }, { 226, 0x0000 },
- /* 0x2600 */
- { 226, 0x0060 }, { 228, 0x0000 }, { 228, 0x0000 }, { 228, 0x0000 },
- { 228, 0x0005 }, { 230, 0x0000 }, { 230, 0xa400 },
-};
-static const Summary16 jisx0208_uni2indx_page30[16] = {
- /* 0x3000 */
- { 233, 0xffef }, { 248, 0x103f }, { 255, 0x0000 }, { 255, 0x0000 },
- { 255, 0xfffe }, { 270, 0xffff }, { 286, 0xffff }, { 302, 0xffff },
- { 318, 0xffff }, { 334, 0x780f }, { 342, 0xfffe }, { 357, 0xffff },
- { 373, 0xffff }, { 389, 0xffff }, { 405, 0xffff }, { 421, 0x787f },
-};
-static const Summary16 jisx0208_uni2indx_page4e[1307] = {
- /* 0x4e00 */
- { 432, 0x6f8b }, { 442, 0x43f3 }, { 451, 0x2442 }, { 455, 0x9b46 },
- { 463, 0xe82c }, { 470, 0xe3e0 }, { 478, 0x0004 }, { 479, 0x400a },
- { 482, 0x5f65 }, { 492, 0xdb36 }, { 502, 0x7977 }, { 513, 0x0449 },
- { 517, 0xecd7 }, { 528, 0xe3f0 }, { 537, 0x6038 }, { 542, 0x08c5 },
- /* 0x4f00 */
- { 547, 0xe602 }, { 553, 0x3403 }, { 558, 0x8000 }, { 559, 0x3551 },
- { 566, 0xe0c8 }, { 572, 0x7eab }, { 583, 0x8200 }, { 585, 0x9869 },
- { 592, 0xa948 }, { 598, 0x2942 }, { 603, 0xe803 }, { 609, 0x8060 },
- { 612, 0x441c }, { 617, 0xad93 }, { 626, 0xc03a }, { 632, 0x4568 },
- /* 0x5000 */
- { 638, 0xaa60 }, { 644, 0x8656 }, { 651, 0x3f7a }, { 662, 0x0240 },
- { 664, 0x8388 }, { 669, 0x1461 }, { 674, 0x1020 }, { 676, 0x2174 },
- { 682, 0x2021 }, { 685, 0x0702 }, { 689, 0x3000 }, { 691, 0x40bc },
- { 697, 0xa624 }, { 703, 0x4462 }, { 708, 0x60a8 }, { 713, 0x0a20 },
- /* 0x5100 */
- { 716, 0x0217 }, { 721, 0x8574 }, { 728, 0x0402 }, { 730, 0x9c84 },
- { 736, 0x7bfb }, { 749, 0x1415 }, { 754, 0x7f24 }, { 763, 0x11e2 },
- { 769, 0xb665 }, { 778, 0x02ef }, { 786, 0x1f75 }, { 796, 0x20ff },
- { 805, 0x3a70 }, { 812, 0x3840 }, { 816, 0x26c3 }, { 823, 0x6763 },
- /* 0x5200 */
- { 832, 0x4dd9 }, { 841, 0x2092 }, { 845, 0x46b0 }, { 851, 0x0fc9 },
- { 859, 0xbc98 }, { 867, 0x4850 }, { 871, 0x8638 }, { 877, 0xa03f },
- { 885, 0x2388 }, { 890, 0x8816 }, { 895, 0x3e09 }, { 902, 0x5232 },
- { 908, 0x22aa }, { 914, 0xe3a4 }, { 922, 0x00dd }, { 928, 0xc72c },
- /* 0x5300 */
- { 936, 0xa166 }, { 943, 0x26e1 }, { 950, 0x840b }, { 955, 0x8f0a },
- { 962, 0x27eb }, { 972, 0x559e }, { 981, 0xc241 }, { 986, 0x89bb },
- { 995, 0x0014 }, { 997, 0x8540 }, { 1001, 0x6361 }, { 1008, 0x0849 },
- { 1012, 0x7f0c }, { 1021, 0x8ad0 }, { 1027, 0xff3e }, { 1040, 0x05cf },
- /* 0x5400 */
- { 1048, 0xff1a }, { 1059, 0xa803 }, { 1064, 0x7a41 }, { 1071, 0x7b40 },
- { 1078, 0x4745 }, { 1085, 0x8002 }, { 1087, 0x0500 }, { 1089, 0x38eb },
- { 1098, 0xd851 }, { 1105, 0x0005 }, { 1107, 0x9934 }, { 1114, 0x710c },
- { 1120, 0x0397 }, { 1127, 0x0100 }, { 1128, 0x6366 }, { 1136, 0x2404 },
- /* 0x5500 */
- { 1139, 0x80d0 }, { 1143, 0x0051 }, { 1146, 0xc000 }, { 1148, 0x430a },
- { 1153, 0x9071 }, { 1159, 0x30c8 }, { 1164, 0x0008 }, { 1165, 0x5800 },
- { 1168, 0x0e99 }, { 1175, 0xf700 }, { 1182, 0x5f80 }, { 1189, 0x0041 },
- { 1191, 0x00b0 }, { 1194, 0x9410 }, { 1198, 0x0018 }, { 1200, 0x6280 },
- /* 0x5600 */
- { 1204, 0x0240 }, { 1206, 0x09d0 }, { 1211, 0x8200 }, { 1213, 0x0156 },
- { 1218, 0x5004 }, { 1221, 0x0801 }, { 1223, 0x1d10 }, { 1228, 0x0510 },
- { 1231, 0x84c1 }, { 1236, 0x0010 }, { 1237, 0x4025 }, { 1241, 0x1050 },
- { 1244, 0x410f }, { 1250, 0x4d8a }, { 1257, 0x4009 }, { 1260, 0xa60d },
- /* 0x5700 */
- { 1267, 0xab19 }, { 1275, 0x914c }, { 1281, 0x21c0 }, { 1285, 0x0981 },
- { 1289, 0xc485 }, { 1295, 0x0003 }, { 1297, 0x0652 }, { 1302, 0x8000 },
- { 1303, 0x0b04 }, { 1307, 0x0008 }, { 1308, 0x041d }, { 1313, 0x0009 },
- { 1315, 0x4849 }, { 1320, 0x905c }, { 1326, 0x0009 }, { 1328, 0x1690 },
- /* 0x5800 */
- { 1333, 0x0c65 }, { 1339, 0x2220 }, { 1342, 0x8412 }, { 1346, 0x2433 },
- { 1352, 0x0c03 }, { 1356, 0x4796 }, { 1364, 0x0a04 }, { 1367, 0x4225 },
- { 1372, 0x0028 }, { 1374, 0x9088 }, { 1378, 0x4900 }, { 1381, 0x4f08 },
- { 1387, 0x14a2 }, { 1392, 0xd3aa }, { 1401, 0xd830 }, { 1407, 0x3e87 },
- /* 0x5900 */
- { 1416, 0x8604 }, { 1420, 0x1f61 }, { 1428, 0x7ea4 }, { 1437, 0x4186 },
- { 1442, 0xc390 }, { 1448, 0x05b3 }, { 1455, 0x57a5 }, { 1464, 0x2118 },
- { 1468, 0x241e }, { 1474, 0x2a48 }, { 1479, 0x1128 }, { 1483, 0x4a04 },
- { 1487, 0x0a40 }, { 1490, 0x161b }, { 1497, 0x0d60 }, { 1502, 0x8840 },
- /* 0x5a00 */
- { 1505, 0x020a }, { 1508, 0x9502 }, { 1513, 0x8221 }, { 1517, 0x1060 },
- { 1520, 0x0243 }, { 1524, 0x0400 }, { 1525, 0x1444 }, { 1529, 0x8000 },
- { 1530, 0x0000 }, { 1530, 0x0c04 }, { 1533, 0x0000 }, { 1533, 0x7000 },
- { 1536, 0x1a06 }, { 1541, 0x00c1 }, { 1544, 0x024a }, { 1548, 0x0c00 },
- /* 0x5b00 */
- { 1550, 0x1a00 }, { 1553, 0x0040 }, { 1554, 0x1404 }, { 1557, 0x4045 },
- { 1561, 0x0029 }, { 1564, 0xbdb3 }, { 1575, 0x0a78 }, { 1581, 0x052b },
- { 1587, 0xbba9 }, { 1597, 0xbfa0 }, { 1606, 0x407c }, { 1612, 0x8379 },
- { 1620, 0x12fc }, { 1628, 0xe81d }, { 1636, 0x4bf6 }, { 1646, 0xc569 },
- /* 0x5c00 */
- { 1654, 0xeff6 }, { 1667, 0x044a }, { 1671, 0x2115 }, { 1676, 0xff02 },
- { 1685, 0xed63 }, { 1695, 0x402b }, { 1700, 0xd033 }, { 1707, 0x0242 },
- { 1710, 0x1000 }, { 1711, 0x0013 }, { 1714, 0x1b02 }, { 1719, 0x59ca },
- { 1727, 0x00a0 }, { 1729, 0x0200 }, { 1730, 0xa703 }, { 1737, 0x2c41 },
- /* 0x5d00 */
- { 1742, 0x4880 }, { 1745, 0x8ff2 }, { 1755, 0x0204 }, { 1757, 0x0000 },
- { 1757, 0x5800 }, { 1760, 0x1005 }, { 1763, 0x9200 }, { 1766, 0x0048 },
- { 1768, 0x1894 }, { 1773, 0x2001 }, { 1775, 0x5004 }, { 1778, 0x3480 },
- { 1782, 0x3200 }, { 1785, 0x684c }, { 1791, 0x49ea }, { 1799, 0x68be },
- /* 0x5e00 */
- { 1808, 0x184c }, { 1813, 0x2e42 }, { 1819, 0xa820 }, { 1823, 0x21c9 },
- { 1829, 0x50b9 }, { 1836, 0x80b0 }, { 1840, 0x001e }, { 1844, 0xff7c },
- { 1857, 0x849a }, { 1863, 0x14e0 }, { 1868, 0x28c1 }, { 1873, 0x01e0 },
- { 1877, 0x870e }, { 1884, 0xac49 }, { 1891, 0x130f }, { 1898, 0xdddb },
- /* 0x5f00 */
- { 1910, 0xbe1a }, { 1919, 0x89fb }, { 1929, 0xa2e0 }, { 1935, 0x51a2 },
- { 1941, 0x5502 }, { 1946, 0x32ca }, { 1953, 0x3e46 }, { 1961, 0x928b },
- { 1968, 0x1dbf }, { 1979, 0x438f }, { 1987, 0x6703 }, { 1994, 0x3218 },
- { 1999, 0x3028 }, { 2003, 0x33c0 }, { 2009, 0x0811 }, { 2012, 0xa923 },
- /* 0x6000 */
- { 2019, 0xc000 }, { 2021, 0x3a65 }, { 2029, 0x8fe3 }, { 2039, 0x0402 },
- { 2041, 0x2c4e }, { 2048, 0x8625 }, { 2054, 0xbf3d }, { 2066, 0x00a1 },
- { 2069, 0x3a1a }, { 2076, 0x8cd4 }, { 2083, 0x06c9 }, { 2089, 0x317c },
- { 2097, 0x00e0 }, { 2100, 0x950a }, { 2106, 0x018b }, { 2111, 0x0edb },
- /* 0x6100 */
- { 2120, 0xe34b }, { 2129, 0x8c20 }, { 2133, 0x1182 }, { 2137, 0xf010 },
- { 2142, 0x7d94 }, { 2151, 0xa728 }, { 2158, 0xc9ac }, { 2166, 0x40fb },
- { 2174, 0x4484 }, { 2178, 0x0653 }, { 2184, 0x5a90 }, { 2190, 0x4444 },
- { 2194, 0x3fc8 }, { 2203, 0x0001 }, { 2204, 0x0048 }, { 2206, 0xf5d4 },
- /* 0x6200 */
- { 2216, 0x7701 }, { 2223, 0xec57 }, { 2233, 0xc442 }, { 2238, 0x891d },
- { 2245, 0x6b83 }, { 2253, 0x4928 }, { 2258, 0x4109 }, { 2262, 0xd242 },
- { 2268, 0x061d }, { 2274, 0x59fe }, { 2285, 0x1800 }, { 2287, 0x3a22 },
- { 2293, 0xb7e4 }, { 2303, 0x3b9f }, { 2314, 0xf003 }, { 2320, 0xc0ea },
- /* 0x6300 */
- { 2327, 0x1386 }, { 2333, 0x8202 }, { 2336, 0x8980 }, { 2340, 0xe400 },
- { 2344, 0xb200 }, { 2348, 0x10a1 }, { 2352, 0x4b80 }, { 2357, 0x0cc4 },
- { 2362, 0xd309 }, { 2369, 0x8944 }, { 2374, 0x1faf }, { 2385, 0x4834 },
- { 2390, 0x8259 }, { 2396, 0x0c45 }, { 2401, 0x420a }, { 2405, 0x0450 },
- /* 0x6400 */
- { 2408, 0xa040 }, { 2411, 0x10c8 }, { 2415, 0x3140 }, { 2419, 0x4450 },
- { 2423, 0x4004 }, { 2425, 0x0100 }, { 2426, 0x8280 }, { 2429, 0x0540 },
- { 2432, 0x0108 }, { 2434, 0x442c }, { 2439, 0x6a30 }, { 2445, 0x1a05 },
- { 2450, 0x20a6 }, { 2455, 0x0514 }, { 2459, 0x90cf }, { 2467, 0x6456 },
- /* 0x6500 */
- { 2474, 0x0021 }, { 2476, 0x3100 }, { 2479, 0x9c18 }, { 2485, 0xcbf0 },
- { 2494, 0xa120 }, { 2498, 0x63e2 }, { 2506, 0x104c }, { 2510, 0x01b5 },
- { 2516, 0x538c }, { 2523, 0x9a83 }, { 2530, 0xb8b2 }, { 2538, 0x3281 },
- { 2543, 0x987a }, { 2551, 0x0a84 }, { 2555, 0x33e7 }, { 2565, 0x0c02 },
- /* 0x6600 */
- { 2568, 0xd4cc }, { 2576, 0x9018 }, { 2580, 0xa1a1 }, { 2586, 0x9070 },
- { 2591, 0x8a1e }, { 2598, 0xe004 }, { 2602, 0xc3d4 }, { 2610, 0x0451 },
- { 2614, 0x439a }, { 2621, 0x21c2 }, { 2626, 0x4844 }, { 2630, 0x5310 },
- { 2635, 0x0292 }, { 2639, 0x3640 }, { 2644, 0x0241 }, { 2647, 0xf3bd },
- /* 0x6700 */
- { 2659, 0xab09 }, { 2666, 0xe8f0 }, { 2674, 0x7dc0 }, { 2682, 0xa5d2 },
- { 2690, 0xc242 }, { 2695, 0xd24b }, { 2703, 0xa43f }, { 2712, 0xd0af },
- { 2721, 0x1aa0 }, { 2726, 0x34a1 }, { 2732, 0x8247 }, { 2738, 0x03d8 },
- { 2744, 0xc452 }, { 2750, 0x651b }, { 2758, 0xd294 }, { 2765, 0xc83a },
- /* 0x6800 */
- { 2772, 0x001c }, { 2775, 0x40c8 }, { 2779, 0x0e06 }, { 2784, 0x3314 },
- { 2790, 0x614f }, { 2798, 0xb21b }, { 2806, 0x0088 }, { 2808, 0xc0d0 },
- { 2813, 0xa02a }, { 2818, 0xa898 }, { 2824, 0xa1c5 }, { 2831, 0x166b },
- { 2839, 0x2e50 }, { 2845, 0x85b4 }, { 2852, 0xc08b }, { 2858, 0x0604 },
- /* 0x6900 */
- { 2861, 0xf933 }, { 2871, 0x1e04 }, { 2876, 0x056e }, { 2883, 0xa251 },
- { 2889, 0x0400 }, { 2890, 0x7638 }, { 2898, 0xec07 }, { 2906, 0x73b8 },
- { 2915, 0x4406 }, { 2919, 0x1832 }, { 2924, 0x4081 }, { 2927, 0xc816 },
- { 2933, 0x7c8a }, { 2941, 0x6309 }, { 2947, 0x2980 }, { 2951, 0xaa04 },
- /* 0x6a00 */
- { 2956, 0x1c24 }, { 2961, 0xca9c }, { 2969, 0x4e0e }, { 2976, 0x2760 },
- { 2982, 0x0990 }, { 2986, 0x8300 }, { 2989, 0x0046 }, { 2992, 0x8104 },
- { 2995, 0x6011 }, { 2999, 0x1081 }, { 3002, 0x540d }, { 3008, 0x0908 },
- { 3011, 0x000e }, { 3014, 0xcc0a }, { 3020, 0x0500 }, { 3022, 0x0c00 },
- /* 0x6b00 */
- { 3024, 0x0430 }, { 3027, 0xa044 }, { 3031, 0x008b }, { 3035, 0x6784 },
- { 3042, 0x5288 }, { 3047, 0x8a19 }, { 3053, 0x865e }, { 3061, 0x8b18 },
- { 3067, 0x2e59 }, { 3075, 0x4160 }, { 3079, 0x8c10 }, { 3083, 0x9cbe },
- { 3093, 0x6861 }, { 3099, 0x891c }, { 3105, 0x9800 }, { 3108, 0x0008 },
- /* 0x6c00 */
- { 3109, 0x8100 }, { 3111, 0x089a }, { 3116, 0x0018 }, { 3118, 0x4190 },
- { 3122, 0x4007 }, { 3126, 0xe4a1 }, { 3133, 0x0505 }, { 3137, 0x640d },
- { 3143, 0x310e }, { 3149, 0x0e4d }, { 3156, 0x4806 }, { 3160, 0xff0a },
- { 3170, 0x1632 }, { 3176, 0x2aa8 }, { 3182, 0x852e }, { 3189, 0x000b },
- /* 0x6d00 */
- { 3192, 0x1800 }, { 3194, 0xca84 }, { 3200, 0x0e20 }, { 3204, 0x696c },
- { 3212, 0x0032 }, { 3215, 0x1600 }, { 3218, 0x5658 }, { 3225, 0x0390 },
- { 3229, 0x5120 }, { 3233, 0x1a28 }, { 3238, 0x8000 }, { 3239, 0x1124 },
- { 3243, 0x18e1 }, { 3249, 0x4326 }, { 3255, 0x5d52 }, { 3263, 0x0eaa },
- /* 0x6e00 */
- { 3270, 0x0fa0 }, { 3276, 0xae28 }, { 3283, 0xfa7b }, { 3295, 0x4500 },
- { 3298, 0x6408 }, { 3302, 0x8940 }, { 3306, 0xc880 }, { 3310, 0xc044 },
- { 3314, 0x9005 }, { 3318, 0xb141 }, { 3324, 0x8424 }, { 3328, 0x24c4 },
- { 3333, 0x1a34 }, { 3339, 0x603a }, { 3345, 0x9000 }, { 3347, 0xc194 },
- /* 0x6f00 */
- { 3353, 0x8246 }, { 3358, 0x003a }, { 3362, 0x180d }, { 3367, 0xc106 },
- { 3372, 0x0022 }, { 3374, 0x9910 }, { 3379, 0xe050 }, { 3384, 0x1511 },
- { 3389, 0x4057 }, { 3395, 0x0082 }, { 3397, 0x041a }, { 3401, 0x020a },
- { 3404, 0x004f }, { 3409, 0x8930 }, { 3414, 0xd813 }, { 3421, 0x444a },
- /* 0x7000 */
- { 3426, 0x8a02 }, { 3430, 0xed22 }, { 3438, 0x10c0 }, { 3441, 0x4005 },
- { 3444, 0x1000 }, { 3445, 0x0102 }, { 3447, 0x8808 }, { 3450, 0x3101 },
- { 3454, 0x4600 }, { 3457, 0x0204 }, { 3459, 0xf000 }, { 3463, 0x0708 },
- { 3467, 0x8900 }, { 3470, 0xa200 }, { 3473, 0x0000 }, { 3473, 0x2202 },
- /* 0x7100 */
- { 3476, 0x0200 }, { 3477, 0x1610 }, { 3481, 0x0042 }, { 3483, 0x1040 },
- { 3485, 0x5200 }, { 3488, 0x0260 }, { 3491, 0x52f4 }, { 3499, 0x2000 },
- { 3500, 0x8510 }, { 3504, 0x8230 }, { 3508, 0x1100 }, { 3510, 0x4202 },
- { 3513, 0x4308 }, { 3517, 0x80b5 }, { 3523, 0x70e1 }, { 3530, 0x9a20 },
- /* 0x7200 */
- { 3535, 0x2040 }, { 3537, 0x0801 }, { 3539, 0x3500 }, { 3543, 0xfc65 },
- { 3553, 0x19c1 }, { 3559, 0xab04 }, { 3565, 0x0286 }, { 3569, 0x6214 },
- { 3574, 0x0087 }, { 3578, 0x0044 }, { 3580, 0x9085 }, { 3585, 0x0244 },
- { 3588, 0x405c }, { 3593, 0x0a85 }, { 3598, 0x3207 }, { 3604, 0x3380 },
- /* 0x7300 */
- { 3609, 0x0400 }, { 3610, 0xb8c0 }, { 3616, 0xce20 }, { 3622, 0xc0d0 },
- { 3627, 0xc030 }, { 3631, 0x0080 }, { 3632, 0x0508 }, { 3635, 0x0d25 },
- { 3641, 0x0a90 }, { 3645, 0x0040 }, { 3646, 0x0200 }, { 3647, 0x080c },
- { 3650, 0x6505 }, { 3656, 0x4000 }, { 3657, 0x6421 }, { 3662, 0x4102 },
- /* 0x7400 */
- { 3665, 0x0268 }, { 3669, 0x0000 }, { 3669, 0x0024 }, { 3671, 0x847c },
- { 3678, 0x0002 }, { 3679, 0xde20 }, { 3686, 0x8619 }, { 3692, 0x4049 },
- { 3696, 0x0808 }, { 3698, 0x4000 }, { 3699, 0x0084 }, { 3701, 0x2001 },
- { 3703, 0x8400 }, { 3705, 0x1010 }, { 3707, 0x42cd }, { 3714, 0x01c7 },
- /* 0x7500 */
- { 3720, 0x7038 }, { 3726, 0xd52a }, { 3734, 0x1968 }, { 3740, 0x1d8f },
- { 3749, 0xbe50 }, { 3757, 0x3e12 }, { 3764, 0x2ef5 }, { 3774, 0x81d9 },
- { 3781, 0xcec4 }, { 3789, 0x2412 }, { 3793, 0x0828 }, { 3796, 0x732e },
- { 3805, 0x24ac }, { 3811, 0x4b34 }, { 3818, 0x020c }, { 3821, 0xd41d },
- /* 0x7600 */
- { 3829, 0x2a02 }, { 3833, 0x8000 }, { 3834, 0x0097 }, { 3839, 0x0811 },
- { 3842, 0x11c4 }, { 3847, 0x1144 }, { 3851, 0x1786 }, { 3858, 0x7d45 },
- { 3867, 0x49d9 }, { 3875, 0x0649 }, { 3880, 0x4000 }, { 3881, 0x8791 },
- { 3888, 0x254c }, { 3894, 0xd8c4 }, { 3901, 0x44ba }, { 3908, 0x4914 },
- /* 0x7700 */
- { 3913, 0x1b92 }, { 3920, 0xc800 }, { 3923, 0x0271 }, { 3928, 0x1580 },
- { 3932, 0x0081 }, { 3934, 0x0c00 }, { 3936, 0x096a }, { 3942, 0xc200 },
- { 3945, 0x4800 }, { 3947, 0x4002 }, { 3949, 0x3021 }, { 3953, 0xba49 },
- { 3961, 0x2080 }, { 3963, 0x1c80 }, { 3967, 0xe2ac }, { 3975, 0x1008 },
- /* 0x7800 */
- { 3977, 0x1004 }, { 3979, 0x0034 }, { 3982, 0x00e1 }, { 3986, 0x8414 },
- { 3990, 0x0020 }, { 3991, 0x2000 }, { 3992, 0x9800 }, { 3995, 0x1014 },
- { 3998, 0x70c2 }, { 4004, 0x04aa }, { 4009, 0x8688 }, { 4014, 0x5420 },
- { 4018, 0x0c62 }, { 4023, 0x0413 }, { 4027, 0x9180 }, { 4031, 0x2010 },
- /* 0x7900 */
- { 4033, 0x4082 }, { 4036, 0x0206 }, { 4039, 0x1c40 }, { 4043, 0x5400 },
- { 4046, 0x0383 }, { 4051, 0xe4e9 }, { 4060, 0x2125 }, { 4065, 0x8480 },
- { 4068, 0xe433 }, { 4076, 0x2000 }, { 4077, 0x44c0 }, { 4081, 0xe609 },
- { 4088, 0x0a03 }, { 4092, 0x8126 }, { 4097, 0x12da }, { 4104, 0x0801 },
- /* 0x7a00 */
- { 4106, 0x6901 }, { 4111, 0x9790 }, { 4118, 0x4001 }, { 4120, 0xf886 },
- { 4128, 0xe24d }, { 4136, 0x0081 }, { 4138, 0x0a0e }, { 4143, 0xa651 },
- { 4150, 0x011a }, { 4154, 0x81ec }, { 4161, 0xc600 }, { 4165, 0x8441 },
- { 4169, 0xadb8 }, { 4178, 0xb62c }, { 4186, 0xa46f }, { 4195, 0x8741 },
- /* 0x7b00 */
- { 4201, 0x8d54 }, { 4208, 0x4b02 }, { 4213, 0x1161 }, { 4218, 0x0268 },
- { 4222, 0xbb60 }, { 4230, 0x2057 }, { 4236, 0x50a0 }, { 4240, 0x0433 },
- { 4245, 0xa8c0 }, { 4250, 0xb7b4 }, { 4260, 0x2402 }, { 4263, 0x0112 },
- { 4266, 0x9ad3 }, { 4275, 0x2000 }, { 4276, 0x2271 }, { 4282, 0x00c8 },
- /* 0x7c00 */
- { 4285, 0x2081 }, { 4288, 0x809e }, { 4294, 0x0c8a }, { 4299, 0xe180 },
- { 4304, 0xb009 }, { 4309, 0x8151 }, { 4314, 0x1031 }, { 4318, 0x4028 },
- { 4321, 0x2a0e }, { 4327, 0x89a5 }, { 4334, 0x69b6 }, { 4343, 0x620e },
- { 4349, 0x4425 }, { 4354, 0xd144 }, { 4360, 0x8085 }, { 4364, 0x4d54 },
- /* 0x7d00 */
- { 4371, 0x2c75 }, { 4379, 0x1fb1 }, { 4388, 0xd807 }, { 4395, 0x862d },
- { 4402, 0xd87c }, { 4411, 0x4841 }, { 4415, 0x414e }, { 4421, 0x226e },
- { 4428, 0x8200 }, { 4430, 0x9e08 }, { 4436, 0xf80c }, { 4443, 0xed37 },
- { 4454, 0x8c80 }, { 4458, 0x7526 }, { 4466, 0x9313 }, { 4473, 0x0814 },
- /* 0x7e00 */
- { 4476, 0x0e32 }, { 4482, 0xc804 }, { 4486, 0x484e }, { 4492, 0x6ea6 },
- { 4501, 0x2c4a }, { 4507, 0x6670 }, { 4514, 0x26c0 }, { 4519, 0xba01 },
- { 4525, 0xd30c }, { 4532, 0x185d }, { 4539, 0x0000 }, { 4539, 0x0000 },
- { 4539, 0x0000 }, { 4539, 0x0000 }, { 4539, 0x0000 }, { 4539, 0x0000 },
- /* 0x7f00 */
- { 4539, 0x0000 }, { 4539, 0x0000 }, { 4539, 0x0000 }, { 4539, 0x0540 },
- { 4542, 0x7020 }, { 4546, 0x8133 }, { 4552, 0x4f81 }, { 4559, 0x03a5 },
- { 4565, 0x55ec }, { 4574, 0x6410 }, { 4578, 0xc318 }, { 4584, 0x2344 },
- { 4589, 0x1462 }, { 4594, 0x0034 }, { 4597, 0x0a43 }, { 4602, 0x1a09 },
- /* 0x8000 */
- { 4607, 0x187b }, { 4615, 0x13a5 }, { 4622, 0x0102 }, { 4624, 0xa848 },
- { 4629, 0x0440 }, { 4631, 0xc544 }, { 4637, 0x8106 }, { 4641, 0xe2dd },
- { 4651, 0x1af0 }, { 4658, 0x2d48 }, { 4664, 0xb626 }, { 4672, 0x0416 },
- { 4676, 0x5058 }, { 4681, 0x6e40 }, { 4687, 0x8032 }, { 4691, 0x3112 },
- /* 0x8100 */
- { 4696, 0x07e4 }, { 4703, 0x0c00 }, { 4705, 0x8208 }, { 4708, 0x420a },
- { 4712, 0x4840 }, { 4715, 0x803b }, { 4721, 0x4860 }, { 4725, 0x8713 },
- { 4732, 0x850d }, { 4738, 0x3428 }, { 4743, 0x0319 }, { 4748, 0xe529 },
- { 4756, 0x2345 }, { 4762, 0x870a }, { 4768, 0x25a9 }, { 4775, 0x5c18 },
- /* 0x8200 */
- { 4781, 0x77a6 }, { 4791, 0xd9c5 }, { 4800, 0x5e00 }, { 4805, 0x03e8 },
- { 4811, 0x0081 }, { 4813, 0xa700 }, { 4818, 0xcd54 }, { 4826, 0x41c6 },
- { 4832, 0x2800 }, { 4834, 0xa204 }, { 4838, 0xb860 }, { 4844, 0x2b0a },
- { 4850, 0x0020 }, { 4851, 0xda9e }, { 4861, 0x08ea }, { 4867, 0x0e1a },
- /* 0x8300 */
- { 4873, 0x427c }, { 4880, 0x11c0 }, { 4884, 0x8908 }, { 4888, 0x0376 },
- { 4895, 0x8621 }, { 4900, 0x0105 }, { 4903, 0x0000 }, { 4903, 0x18a8 },
- { 4908, 0x46a0 }, { 4913, 0xc448 }, { 4918, 0x0d05 }, { 4923, 0x2022 },
- { 4926, 0x5422 }, { 4931, 0x9148 }, { 4936, 0x8a01 }, { 4940, 0x2897 },
- /* 0x8400 */
- { 4947, 0x7898 }, { 4954, 0x0008 }, { 4955, 0x1605 }, { 4960, 0x3122 },
- { 4965, 0x4240 }, { 4968, 0x0880 }, { 4970, 0xfa4e }, { 4980, 0x06a2 },
- { 4985, 0x0814 }, { 4988, 0x9211 }, { 4993, 0x2002 }, { 4995, 0x9b04 },
- { 5001, 0x2e52 }, { 5008, 0x0643 }, { 5013, 0x5000 }, { 5015, 0x9010 },
- /* 0x8500 */
- { 5018, 0x0041 }, { 5020, 0x85ba }, { 5028, 0x3042 }, { 5032, 0x2020 },
- { 5034, 0x4f0b }, { 5042, 0x05a0 }, { 5046, 0x2708 }, { 5051, 0x4080 },
- { 5053, 0x0591 }, { 5058, 0x1a93 }, { 5065, 0xdf50 }, { 5074, 0x0600 },
- { 5076, 0xa202 }, { 5080, 0x3021 }, { 5084, 0x0630 }, { 5088, 0x4e80 },
- /* 0x8600 */
- { 5093, 0x0cc4 }, { 5098, 0x04c8 }, { 5102, 0xa004 }, { 5105, 0x8001 },
- { 5107, 0x6000 }, { 5109, 0xd431 }, { 5116, 0x0880 }, { 5118, 0x0a02 },
- { 5121, 0x1c00 }, { 5124, 0x0028 }, { 5126, 0x8e18 }, { 5132, 0x0041 },
- { 5134, 0x6ad0 }, { 5141, 0xca10 }, { 5146, 0xf210 }, { 5152, 0x4b00 },
- /* 0x8700 */
- { 5156, 0x274d }, { 5164, 0x1506 }, { 5169, 0x0220 }, { 5171, 0x8890 },
- { 5175, 0x5a00 }, { 5179, 0x82a8 }, { 5184, 0x4549 }, { 5190, 0x8150 },
- { 5194, 0x2004 }, { 5196, 0x8000 }, { 5197, 0x8804 }, { 5200, 0x2c08 },
- { 5204, 0x08d1 }, { 5209, 0x0005 }, { 5211, 0x8001 }, { 5213, 0x4ac4 },
- /* 0x8800 */
- { 5219, 0xe020 }, { 5223, 0x0062 }, { 5226, 0x008e }, { 5230, 0x0a42 },
- { 5234, 0x3055 }, { 5240, 0x6a8c }, { 5247, 0x090e }, { 5252, 0xe0a5 },
- { 5259, 0x2906 }, { 5264, 0x42c4 }, { 5269, 0x4814 }, { 5273, 0x80b3 },
- { 5279, 0x803e }, { 5285, 0xb330 }, { 5292, 0x0102 }, { 5294, 0x731c },
- /* 0x8900 */
- { 5302, 0x1494 }, { 5307, 0x600d }, { 5312, 0x0c20 }, { 5315, 0x0940 },
- { 5318, 0x301a }, { 5323, 0xc040 }, { 5326, 0xa451 }, { 5332, 0xc094 },
- { 5337, 0x8dca }, { 5345, 0x05c8 }, { 5350, 0x96c2 }, { 5357, 0xa40c },
- { 5362, 0x0001 }, { 5363, 0x3404 }, { 5367, 0x00c8 }, { 5370, 0x0110 },
- /* 0x8a00 */
- { 5372, 0x550d }, { 5379, 0xa9c9 }, { 5387, 0x2428 }, { 5391, 0x1c5a },
- { 5398, 0x0142 }, { 5401, 0x4837 }, { 5408, 0x7a4d }, { 5417, 0x100f },
- { 5422, 0x32b4 }, { 5429, 0x452a }, { 5435, 0x317b }, { 5444, 0x9205 },
- { 5449, 0xb894 }, { 5456, 0x5c44 }, { 5462, 0x68d7 }, { 5471, 0x458a },
- /* 0x8b00 */
- { 5477, 0x5097 }, { 5484, 0x2ed1 }, { 5492, 0x1943 }, { 5498, 0x4208 },
- { 5501, 0xd202 }, { 5506, 0x9d40 }, { 5512, 0x9840 }, { 5516, 0x2097 },
- { 5522, 0x5409 }, { 5527, 0x064d }, { 5533, 0x0000 }, { 5533, 0x0000 },
- { 5533, 0x0000 }, { 5533, 0x0000 }, { 5533, 0x0000 }, { 5533, 0x0000 },
- /* 0x8c00 */
- { 5533, 0x0000 }, { 5533, 0x0000 }, { 5533, 0x0000 }, { 5533, 0x8480 },
- { 5536, 0x5542 }, { 5542, 0x0421 }, { 5545, 0x1c06 }, { 5550, 0x1700 },
- { 5554, 0x7624 }, { 5561, 0x6110 }, { 5565, 0xff87 }, { 5577, 0xb9dd },
- { 5588, 0x659f }, { 5598, 0x5c0a }, { 5604, 0x245d }, { 5611, 0x3c00 },
- /* 0x8d00 */
- { 5615, 0xadb0 }, { 5623, 0x0059 }, { 5627, 0x0000 }, { 5627, 0x0000 },
- { 5627, 0x0000 }, { 5627, 0x0000 }, { 5627, 0x28d0 }, { 5632, 0x009b },
- { 5637, 0x0422 }, { 5640, 0x0200 }, { 5641, 0x0108 }, { 5643, 0x4408 },
- { 5646, 0x9804 }, { 5650, 0xac40 }, { 5655, 0x8d0a }, { 5661, 0x9028 },
- /* 0x8e00 */
- { 5665, 0x8700 }, { 5669, 0xe001 }, { 5673, 0x0400 }, { 5674, 0x0031 },
- { 5677, 0x1794 }, { 5684, 0x8221 }, { 5688, 0x0019 }, { 5691, 0x1054 },
- { 5695, 0x2cb2 }, { 5702, 0x021a }, { 5706, 0x9c02 }, { 5711, 0x4003 },
- { 5714, 0x3d60 }, { 5721, 0x8804 }, { 5724, 0x080c }, { 5727, 0x7900 },
- /* 0x8f00 */
- { 5732, 0x1628 }, { 5737, 0xba3c }, { 5746, 0x8640 }, { 5750, 0xcb08 },
- { 5756, 0x7274 }, { 5764, 0x9080 }, { 5767, 0x001e }, { 5771, 0x0000 },
- { 5771, 0x0000 }, { 5771, 0xd800 }, { 5775, 0xe188 }, { 5781, 0x9c87 },
- { 5789, 0x4034 }, { 5793, 0x0412 }, { 5796, 0xae64 }, { 5804, 0x2791 },
- /* 0x9000 */
- { 5811, 0xe86b }, { 5820, 0xe6fb }, { 5832, 0x408f }, { 5838, 0x5366 },
- { 5846, 0xeea6 }, { 5856, 0x537f }, { 5867, 0xe32b }, { 5876, 0xb5e4 },
- { 5885, 0x869f }, { 5894, 0x0002 }, { 5895, 0x8548 }, { 5900, 0x0122 },
- { 5903, 0x4402 }, { 5906, 0x0800 }, { 5907, 0x2116 }, { 5912, 0x20a0 },
- /* 0x9100 */
- { 5915, 0x0004 }, { 5916, 0x0204 }, { 5918, 0x2000 }, { 5919, 0x0005 },
- { 5921, 0x7e00 }, { 5927, 0x0154 }, { 5931, 0x162c }, { 5937, 0x01ac },
- { 5942, 0x2a84 }, { 5947, 0x1085 }, { 5951, 0x8c14 }, { 5956, 0x0530 },
- { 5960, 0xfbc3 }, { 5971, 0xb943 }, { 5979, 0x00ca }, { 5983, 0x9060 },
- /* 0x9200 */
- { 5987, 0x6000 }, { 5989, 0x4032 }, { 5993, 0x1200 }, { 5995, 0x8090 },
- { 5998, 0x0b30 }, { 6003, 0x4c81 }, { 6008, 0x0054 }, { 6011, 0x4002 },
- { 6013, 0x0029 }, { 6016, 0x1d6a }, { 6024, 0x2000 }, { 6025, 0x0280 },
- { 6027, 0x8000 }, { 6028, 0x0004 }, { 6029, 0x2610 }, { 6033, 0x150c },
- /* 0x9300 */
- { 6038, 0x8040 }, { 6040, 0x0701 }, { 6044, 0xd94d }, { 6053, 0x0c24 },
- { 6057, 0x2810 }, { 6060, 0x1850 }, { 6064, 0x5001 }, { 6067, 0x5020 },
- { 6070, 0x1000 }, { 6071, 0x04d0 }, { 6075, 0x7080 }, { 6079, 0x0201 },
- { 6081, 0x0108 }, { 6083, 0x21c3 }, { 6089, 0x0132 }, { 6093, 0x0000 },
- /* 0x9400 */
- { 6093, 0x0088 }, { 6095, 0x0719 }, { 6101, 0x0802 }, { 6103, 0x0560 },
- { 6107, 0x0012 }, { 6109, 0x4c0e }, { 6115, 0x0405 }, { 6118, 0xf0a1 },
- { 6125, 0x0002 }, { 6126, 0x0000 }, { 6126, 0x0000 }, { 6126, 0x0000 },
- { 6126, 0x0000 }, { 6126, 0x0000 }, { 6126, 0x0000 }, { 6126, 0x0000 },
- /* 0x9500 */
- { 6126, 0x0000 }, { 6126, 0x0000 }, { 6126, 0x0000 }, { 6126, 0x0000 },
- { 6126, 0x0000 }, { 6126, 0x0000 }, { 6126, 0x0000 }, { 6126, 0x0080 },
- { 6127, 0x8e8d }, { 6135, 0x035a }, { 6141, 0x21bd }, { 6149, 0x5a04 },
- { 6154, 0x3488 }, { 6159, 0x1170 }, { 6164, 0x0026 }, { 6167, 0x0000 },
- /* 0x9600 */
- { 6167, 0x0000 }, { 6167, 0x1000 }, { 6168, 0xc502 }, { 6173, 0x8804 },
- { 6176, 0xb815 }, { 6183, 0xf801 }, { 6189, 0x147c }, { 6196, 0x25ed },
- { 6205, 0xed60 }, { 6213, 0x1bb0 }, { 6220, 0x0589 }, { 6225, 0x1bd7 },
- { 6235, 0x7af3 }, { 6246, 0x1a62 }, { 6252, 0x0d0c }, { 6257, 0x0ac5 },
- /* 0x9700 */
- { 6263, 0xe5d1 }, { 6272, 0x524a }, { 6278, 0x0490 }, { 6281, 0x6305 },
- { 6287, 0x0354 }, { 6292, 0x5244 }, { 6297, 0x2b57 }, { 6306, 0x1612 },
- { 6311, 0xa872 }, { 6318, 0x1101 }, { 6321, 0x2949 }, { 6327, 0x0018 },
- { 6329, 0x0948 }, { 6333, 0x1008 }, { 6335, 0x6000 }, { 6337, 0x886c },
- /* 0x9800 */
- { 6343, 0x916e }, { 6351, 0x058f }, { 6358, 0x3012 }, { 6362, 0x3990 },
- { 6368, 0xf840 }, { 6374, 0x4930 }, { 6379, 0x8880 }, { 6382, 0x001b },
- { 6386, 0x0000 }, { 6386, 0x0000 }, { 6386, 0x8500 }, { 6389, 0x0042 },
- { 6391, 0x0058 }, { 6394, 0x9800 }, { 6397, 0xea04 }, { 6403, 0x7014 },
- /* 0x9900 */
- { 6408, 0x1628 }, { 6413, 0x611d }, { 6420, 0x5113 }, { 6426, 0x6000 },
- { 6428, 0x1a24 }, { 6433, 0x00a7 }, { 6438, 0x0000 }, { 6438, 0x0000 },
- { 6438, 0x0000 }, { 6438, 0x03c0 }, { 6442, 0x7120 }, { 6447, 0x1018 },
- { 6450, 0x0172 }, { 6455, 0xa927 }, { 6463, 0x6004 }, { 6466, 0x8906 },
- /* 0x9a00 */
- { 6471, 0xc022 }, { 6475, 0x020c }, { 6478, 0x0900 }, { 6480, 0x4081 },
- { 6483, 0x202d }, { 6488, 0x8ca0 }, { 6493, 0x0e34 }, { 6499, 0x0000 },
- { 6499, 0x0000 }, { 6499, 0x0000 }, { 6499, 0x2100 }, { 6501, 0x1101 },
- { 6504, 0x8011 }, { 6507, 0xc11a }, { 6513, 0xec4c }, { 6521, 0x0892 },
- /* 0x9b00 */
- { 6525, 0x0040 }, { 6526, 0x8500 }, { 6529, 0xc7ac }, { 6538, 0x1806 },
- { 6542, 0xe03e }, { 6550, 0x0512 }, { 6554, 0x8000 }, { 6555, 0x0010 },
- { 6556, 0x4008 }, { 6558, 0x80ce }, { 6564, 0x6d01 }, { 6570, 0x0210 },
- { 6572, 0x8641 }, { 6577, 0x0856 }, { 6582, 0x011e }, { 6587, 0x0027 },
- /* 0x9c00 */
- { 6591, 0x3750 }, { 6598, 0x083d }, { 6604, 0xe032 }, { 6610, 0x4e05 },
- { 6616, 0x01c0 }, { 6619, 0x0484 }, { 6622, 0x0081 }, { 6624, 0x0140 },
- { 6626, 0x0000 }, { 6626, 0x0000 }, { 6626, 0x0000 }, { 6626, 0x0000 },
- { 6626, 0x0000 }, { 6626, 0x0000 }, { 6626, 0x1aa0 }, { 6631, 0x0059 },
- /* 0x9d00 */
- { 6635, 0x43c8 }, { 6641, 0x8824 }, { 6645, 0x1d48 }, { 6651, 0xc800 },
- { 6654, 0x0152 }, { 6658, 0x7203 }, { 6664, 0x9013 }, { 6669, 0x0404 },
- { 6671, 0x8280 }, { 6674, 0x0400 }, { 6675, 0x8a10 }, { 6679, 0x0d14 },
- { 6684, 0x8056 }, { 6689, 0x0208 }, { 6691, 0xa040 }, { 6694, 0x2704 },
- /* 0x9e00 */
- { 6699, 0x0000 }, { 6699, 0x4c00 }, { 6702, 0x0000 }, { 6702, 0x0000 },
- { 6702, 0x0000 }, { 6702, 0x0000 }, { 6702, 0x0000 }, { 6702, 0xa320 },
- { 6707, 0x1902 }, { 6711, 0xa0ae }, { 6718, 0x2660 }, { 6723, 0xdf00 },
- { 6730, 0xf010 }, { 6735, 0x7b15 }, { 6744, 0x8121 }, { 6748, 0x3ad0 },
- /* 0x9f00 */
- { 6755, 0x4180 }, { 6758, 0x0028 }, { 6760, 0x1003 }, { 6763, 0x4800 },
- { 6765, 0xcc00 }, { 6769, 0x8014 }, { 6772, 0x14cf }, { 6780, 0x00c4 },
- { 6783, 0x2000 }, { 6784, 0x3020 }, { 6787, 0x0001 },
-};
-static const Summary16 jisx0208_uni2indx_pageff[15] = {
- /* 0xff00 */
- { 6788, 0xdf7a }, { 6800, 0xffff }, { 6816, 0xffff }, { 6832, 0xefff },
- { 6847, 0xffff }, { 6863, 0x3fff }, { 6877, 0x0000 }, { 6877, 0x0000 },
- { 6877, 0x0000 }, { 6877, 0x0000 }, { 6877, 0x0000 }, { 6877, 0x0000 },
- { 6877, 0x0000 }, { 6877, 0x0000 }, { 6877, 0x0028 },
-};
-
-static int
-jisx0208_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n)
-{
- if (n >= 2) {
- const Summary16 *summary = NULL;
- if (wc < 0x0100)
- summary = &jisx0208_uni2indx_page00[(wc>>4)];
- else if (wc >= 0x0300 && wc < 0x0460)
- summary = &jisx0208_uni2indx_page03[(wc>>4)-0x030];
- else if (wc >= 0x2000 && wc < 0x2320)
- summary = &jisx0208_uni2indx_page20[(wc>>4)-0x200];
- else if (wc >= 0x2500 && wc < 0x2670)
- summary = &jisx0208_uni2indx_page25[(wc>>4)-0x250];
- else if (wc >= 0x3000 && wc < 0x3100)
- summary = &jisx0208_uni2indx_page30[(wc>>4)-0x300];
- else if (wc >= 0x4e00 && wc < 0x9fb0)
- summary = &jisx0208_uni2indx_page4e[(wc>>4)-0x4e0];
- else if (wc >= 0xff00 && wc < 0xfff0)
- summary = &jisx0208_uni2indx_pageff[(wc>>4)-0xff0];
- if (summary) {
- unsigned short used = summary->used;
- unsigned int i = wc & 0x0f;
- if (used & ((unsigned short) 1 << i)) {
- unsigned short c;
- /* Keep in `used' only the bits 0..i-1. */
- used &= ((unsigned short) 1 << i) - 1;
- /* Add `summary->indx' and the number of bits set in `used'. */
- used = (used & 0x5555) + ((used & 0xaaaa) >> 1);
- used = (used & 0x3333) + ((used & 0xcccc) >> 2);
- used = (used & 0x0f0f) + ((used & 0xf0f0) >> 4);
- used = (used & 0x00ff) + (used >> 8);
- c = jisx0208_2charset[summary->indx + used];
- r[0] = (c >> 8); r[1] = (c & 0xff);
- return 2;
- }
- }
- return RET_ILSEQ;
- }
- return RET_TOOSMALL;
-}
+
+/*
+ * JISX0208.1990-0
+ */
+
+static const unsigned short jisx0208_2uni_page21[690] = {
+ /* 0x21 */
+ 0x3000, 0x3001, 0x3002, 0xff0c, 0xff0e, 0x30fb, 0xff1a, 0xff1b,
+ 0xff1f, 0xff01, 0x309b, 0x309c, 0x00b4, 0xff40, 0x00a8, 0xff3e,
+ 0xffe3, 0xff3f, 0x30fd, 0x30fe, 0x309d, 0x309e, 0x3003, 0x4edd,
+ 0x3005, 0x3006, 0x3007, 0x30fc, 0x2015, 0x2010, 0xff0f, 0xff3c,
+ 0x301c, 0x2016, 0xff5c, 0x2026, 0x2025, 0x2018, 0x2019, 0x201c,
+ 0x201d, 0xff08, 0xff09, 0x3014, 0x3015, 0xff3b, 0xff3d, 0xff5b,
+ 0xff5d, 0x3008, 0x3009, 0x300a, 0x300b, 0x300c, 0x300d, 0x300e,
+ 0x300f, 0x3010, 0x3011, 0xff0b, 0x2212, 0x00b1, 0x00d7, 0x00f7,
+ 0xff1d, 0x2260, 0xff1c, 0xff1e, 0x2266, 0x2267, 0x221e, 0x2234,
+ 0x2642, 0x2640, 0x00b0, 0x2032, 0x2033, 0x2103, 0xffe5, 0xff04,
+ 0x00a2, 0x00a3, 0xff05, 0xff03, 0xff06, 0xff0a, 0xff20, 0x00a7,
+ 0x2606, 0x2605, 0x25cb, 0x25cf, 0x25ce, 0x25c7,
+ /* 0x22 */
+ 0x25c6, 0x25a1, 0x25a0, 0x25b3, 0x25b2, 0x25bd, 0x25bc, 0x203b,
+ 0x3012, 0x2192, 0x2190, 0x2191, 0x2193, 0x3013, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0x2208, 0x220b, 0x2286, 0x2287, 0x2282, 0x2283, 0x222a,
+ 0x2229, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0x2227, 0x2228, 0x00ac, 0x21d2, 0x21d4, 0x2200, 0x2203,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0x2220, 0x22a5, 0x2312, 0x2202, 0x2207,
+ 0x2261, 0x2252, 0x226a, 0x226b, 0x221a, 0x223d, 0x221d, 0x2235,
+ 0x222b, 0x222c, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0x212b, 0x2030, 0x266f, 0x266d, 0x266a, 0x2020, 0x2021,
+ 0x00b6, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x25ef,
+ /* 0x23 */
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xff10,
+ 0xff11, 0xff12, 0xff13, 0xff14, 0xff15, 0xff16, 0xff17, 0xff18,
+ 0xff19, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xff21, 0xff22, 0xff23, 0xff24, 0xff25, 0xff26, 0xff27, 0xff28,
+ 0xff29, 0xff2a, 0xff2b, 0xff2c, 0xff2d, 0xff2e, 0xff2f, 0xff30,
+ 0xff31, 0xff32, 0xff33, 0xff34, 0xff35, 0xff36, 0xff37, 0xff38,
+ 0xff39, 0xff3a, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xff41, 0xff42, 0xff43, 0xff44, 0xff45, 0xff46, 0xff47, 0xff48,
+ 0xff49, 0xff4a, 0xff4b, 0xff4c, 0xff4d, 0xff4e, 0xff4f, 0xff50,
+ 0xff51, 0xff52, 0xff53, 0xff54, 0xff55, 0xff56, 0xff57, 0xff58,
+ 0xff59, 0xff5a, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ /* 0x24 */
+ 0x3041, 0x3042, 0x3043, 0x3044, 0x3045, 0x3046, 0x3047, 0x3048,
+ 0x3049, 0x304a, 0x304b, 0x304c, 0x304d, 0x304e, 0x304f, 0x3050,
+ 0x3051, 0x3052, 0x3053, 0x3054, 0x3055, 0x3056, 0x3057, 0x3058,
+ 0x3059, 0x305a, 0x305b, 0x305c, 0x305d, 0x305e, 0x305f, 0x3060,
+ 0x3061, 0x3062, 0x3063, 0x3064, 0x3065, 0x3066, 0x3067, 0x3068,
+ 0x3069, 0x306a, 0x306b, 0x306c, 0x306d, 0x306e, 0x306f, 0x3070,
+ 0x3071, 0x3072, 0x3073, 0x3074, 0x3075, 0x3076, 0x3077, 0x3078,
+ 0x3079, 0x307a, 0x307b, 0x307c, 0x307d, 0x307e, 0x307f, 0x3080,
+ 0x3081, 0x3082, 0x3083, 0x3084, 0x3085, 0x3086, 0x3087, 0x3088,
+ 0x3089, 0x308a, 0x308b, 0x308c, 0x308d, 0x308e, 0x308f, 0x3090,
+ 0x3091, 0x3092, 0x3093, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ /* 0x25 */
+ 0x30a1, 0x30a2, 0x30a3, 0x30a4, 0x30a5, 0x30a6, 0x30a7, 0x30a8,
+ 0x30a9, 0x30aa, 0x30ab, 0x30ac, 0x30ad, 0x30ae, 0x30af, 0x30b0,
+ 0x30b1, 0x30b2, 0x30b3, 0x30b4, 0x30b5, 0x30b6, 0x30b7, 0x30b8,
+ 0x30b9, 0x30ba, 0x30bb, 0x30bc, 0x30bd, 0x30be, 0x30bf, 0x30c0,
+ 0x30c1, 0x30c2, 0x30c3, 0x30c4, 0x30c5, 0x30c6, 0x30c7, 0x30c8,
+ 0x30c9, 0x30ca, 0x30cb, 0x30cc, 0x30cd, 0x30ce, 0x30cf, 0x30d0,
+ 0x30d1, 0x30d2, 0x30d3, 0x30d4, 0x30d5, 0x30d6, 0x30d7, 0x30d8,
+ 0x30d9, 0x30da, 0x30db, 0x30dc, 0x30dd, 0x30de, 0x30df, 0x30e0,
+ 0x30e1, 0x30e2, 0x30e3, 0x30e4, 0x30e5, 0x30e6, 0x30e7, 0x30e8,
+ 0x30e9, 0x30ea, 0x30eb, 0x30ec, 0x30ed, 0x30ee, 0x30ef, 0x30f0,
+ 0x30f1, 0x30f2, 0x30f3, 0x30f4, 0x30f5, 0x30f6, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ /* 0x26 */
+ 0x0391, 0x0392, 0x0393, 0x0394, 0x0395, 0x0396, 0x0397, 0x0398,
+ 0x0399, 0x039a, 0x039b, 0x039c, 0x039d, 0x039e, 0x039f, 0x03a0,
+ 0x03a1, 0x03a3, 0x03a4, 0x03a5, 0x03a6, 0x03a7, 0x03a8, 0x03a9,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0x03b1, 0x03b2, 0x03b3, 0x03b4, 0x03b5, 0x03b6, 0x03b7, 0x03b8,
+ 0x03b9, 0x03ba, 0x03bb, 0x03bc, 0x03bd, 0x03be, 0x03bf, 0x03c0,
+ 0x03c1, 0x03c3, 0x03c4, 0x03c5, 0x03c6, 0x03c7, 0x03c8, 0x03c9,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ /* 0x27 */
+ 0x0410, 0x0411, 0x0412, 0x0413, 0x0414, 0x0415, 0x0401, 0x0416,
+ 0x0417, 0x0418, 0x0419, 0x041a, 0x041b, 0x041c, 0x041d, 0x041e,
+ 0x041f, 0x0420, 0x0421, 0x0422, 0x0423, 0x0424, 0x0425, 0x0426,
+ 0x0427, 0x0428, 0x0429, 0x042a, 0x042b, 0x042c, 0x042d, 0x042e,
+ 0x042f, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0x0430, 0x0431, 0x0432, 0x0433, 0x0434, 0x0435, 0x0451, 0x0436,
+ 0x0437, 0x0438, 0x0439, 0x043a, 0x043b, 0x043c, 0x043d, 0x043e,
+ 0x043f, 0x0440, 0x0441, 0x0442, 0x0443, 0x0444, 0x0445, 0x0446,
+ 0x0447, 0x0448, 0x0449, 0x044a, 0x044b, 0x044c, 0x044d, 0x044e,
+ 0x044f, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ /* 0x28 */
+ 0x2500, 0x2502, 0x250c, 0x2510, 0x2518, 0x2514, 0x251c, 0x252c,
+ 0x2524, 0x2534, 0x253c, 0x2501, 0x2503, 0x250f, 0x2513, 0x251b,
+ 0x2517, 0x2523, 0x2533, 0x252b, 0x253b, 0x254b, 0x2520, 0x252f,
+ 0x2528, 0x2537, 0x253f, 0x251d, 0x2530, 0x2525, 0x2538, 0x2542,
+};
+static const unsigned short jisx0208_2uni_page30[6398] = {
+ /* 0x30 */
+ 0x4e9c, 0x5516, 0x5a03, 0x963f, 0x54c0, 0x611b, 0x6328, 0x59f6,
+ 0x9022, 0x8475, 0x831c, 0x7a50, 0x60aa, 0x63e1, 0x6e25, 0x65ed,
+ 0x8466, 0x82a6, 0x9bf5, 0x6893, 0x5727, 0x65a1, 0x6271, 0x5b9b,
+ 0x59d0, 0x867b, 0x98f4, 0x7d62, 0x7dbe, 0x9b8e, 0x6216, 0x7c9f,
+ 0x88b7, 0x5b89, 0x5eb5, 0x6309, 0x6697, 0x6848, 0x95c7, 0x978d,
+ 0x674f, 0x4ee5, 0x4f0a, 0x4f4d, 0x4f9d, 0x5049, 0x56f2, 0x5937,
+ 0x59d4, 0x5a01, 0x5c09, 0x60df, 0x610f, 0x6170, 0x6613, 0x6905,
+ 0x70ba, 0x754f, 0x7570, 0x79fb, 0x7dad, 0x7def, 0x80c3, 0x840e,
+ 0x8863, 0x8b02, 0x9055, 0x907a, 0x533b, 0x4e95, 0x4ea5, 0x57df,
+ 0x80b2, 0x90c1, 0x78ef, 0x4e00, 0x58f1, 0x6ea2, 0x9038, 0x7a32,
+ 0x8328, 0x828b, 0x9c2f, 0x5141, 0x5370, 0x54bd, 0x54e1, 0x56e0,
+ 0x59fb, 0x5f15, 0x98f2, 0x6deb, 0x80e4, 0x852d,
+ /* 0x31 */
+ 0x9662, 0x9670, 0x96a0, 0x97fb, 0x540b, 0x53f3, 0x5b87, 0x70cf,
+ 0x7fbd, 0x8fc2, 0x96e8, 0x536f, 0x9d5c, 0x7aba, 0x4e11, 0x7893,
+ 0x81fc, 0x6e26, 0x5618, 0x5504, 0x6b1d, 0x851a, 0x9c3b, 0x59e5,
+ 0x53a9, 0x6d66, 0x74dc, 0x958f, 0x5642, 0x4e91, 0x904b, 0x96f2,
+ 0x834f, 0x990c, 0x53e1, 0x55b6, 0x5b30, 0x5f71, 0x6620, 0x66f3,
+ 0x6804, 0x6c38, 0x6cf3, 0x6d29, 0x745b, 0x76c8, 0x7a4e, 0x9834,
+ 0x82f1, 0x885b, 0x8a60, 0x92ed, 0x6db2, 0x75ab, 0x76ca, 0x99c5,
+ 0x60a6, 0x8b01, 0x8d8a, 0x95b2, 0x698e, 0x53ad, 0x5186, 0x5712,
+ 0x5830, 0x5944, 0x5bb4, 0x5ef6, 0x6028, 0x63a9, 0x63f4, 0x6cbf,
+ 0x6f14, 0x708e, 0x7114, 0x7159, 0x71d5, 0x733f, 0x7e01, 0x8276,
+ 0x82d1, 0x8597, 0x9060, 0x925b, 0x9d1b, 0x5869, 0x65bc, 0x6c5a,
+ 0x7525, 0x51f9, 0x592e, 0x5965, 0x5f80, 0x5fdc,
+ /* 0x32 */
+ 0x62bc, 0x65fa, 0x6a2a, 0x6b27, 0x6bb4, 0x738b, 0x7fc1, 0x8956,
+ 0x9d2c, 0x9d0e, 0x9ec4, 0x5ca1, 0x6c96, 0x837b, 0x5104, 0x5c4b,
+ 0x61b6, 0x81c6, 0x6876, 0x7261, 0x4e59, 0x4ffa, 0x5378, 0x6069,
+ 0x6e29, 0x7a4f, 0x97f3, 0x4e0b, 0x5316, 0x4eee, 0x4f55, 0x4f3d,
+ 0x4fa1, 0x4f73, 0x52a0, 0x53ef, 0x5609, 0x590f, 0x5ac1, 0x5bb6,
+ 0x5be1, 0x79d1, 0x6687, 0x679c, 0x67b6, 0x6b4c, 0x6cb3, 0x706b,
+ 0x73c2, 0x798d, 0x79be, 0x7a3c, 0x7b87, 0x82b1, 0x82db, 0x8304,
+ 0x8377, 0x83ef, 0x83d3, 0x8766, 0x8ab2, 0x5629, 0x8ca8, 0x8fe6,
+ 0x904e, 0x971e, 0x868a, 0x4fc4, 0x5ce8, 0x6211, 0x7259, 0x753b,
+ 0x81e5, 0x82bd, 0x86fe, 0x8cc0, 0x96c5, 0x9913, 0x99d5, 0x4ecb,
+ 0x4f1a, 0x89e3, 0x56de, 0x584a, 0x58ca, 0x5efb, 0x5feb, 0x602a,
+ 0x6094, 0x6062, 0x61d0, 0x6212, 0x62d0, 0x6539,
+ /* 0x33 */
+ 0x9b41, 0x6666, 0x68b0, 0x6d77, 0x7070, 0x754c, 0x7686, 0x7d75,
+ 0x82a5, 0x87f9, 0x958b, 0x968e, 0x8c9d, 0x51f1, 0x52be, 0x5916,
+ 0x54b3, 0x5bb3, 0x5d16, 0x6168, 0x6982, 0x6daf, 0x788d, 0x84cb,
+ 0x8857, 0x8a72, 0x93a7, 0x9ab8, 0x6d6c, 0x99a8, 0x86d9, 0x57a3,
+ 0x67ff, 0x86ce, 0x920e, 0x5283, 0x5687, 0x5404, 0x5ed3, 0x62e1,
+ 0x64b9, 0x683c, 0x6838, 0x6bbb, 0x7372, 0x78ba, 0x7a6b, 0x899a,
+ 0x89d2, 0x8d6b, 0x8f03, 0x90ed, 0x95a3, 0x9694, 0x9769, 0x5b66,
+ 0x5cb3, 0x697d, 0x984d, 0x984e, 0x639b, 0x7b20, 0x6a2b, 0x6a7f,
+ 0x68b6, 0x9c0d, 0x6f5f, 0x5272, 0x559d, 0x6070, 0x62ec, 0x6d3b,
+ 0x6e07, 0x6ed1, 0x845b, 0x8910, 0x8f44, 0x4e14, 0x9c39, 0x53f6,
+ 0x691b, 0x6a3a, 0x9784, 0x682a, 0x515c, 0x7ac3, 0x84b2, 0x91dc,
+ 0x938c, 0x565b, 0x9d28, 0x6822, 0x8305, 0x8431,
+ /* 0x34 */
+ 0x7ca5, 0x5208, 0x82c5, 0x74e6, 0x4e7e, 0x4f83, 0x51a0, 0x5bd2,
+ 0x520a, 0x52d8, 0x52e7, 0x5dfb, 0x559a, 0x582a, 0x59e6, 0x5b8c,
+ 0x5b98, 0x5bdb, 0x5e72, 0x5e79, 0x60a3, 0x611f, 0x6163, 0x61be,
+ 0x63db, 0x6562, 0x67d1, 0x6853, 0x68fa, 0x6b3e, 0x6b53, 0x6c57,
+ 0x6f22, 0x6f97, 0x6f45, 0x74b0, 0x7518, 0x76e3, 0x770b, 0x7aff,
+ 0x7ba1, 0x7c21, 0x7de9, 0x7f36, 0x7ff0, 0x809d, 0x8266, 0x839e,
+ 0x89b3, 0x8acc, 0x8cab, 0x9084, 0x9451, 0x9593, 0x9591, 0x95a2,
+ 0x9665, 0x97d3, 0x9928, 0x8218, 0x4e38, 0x542b, 0x5cb8, 0x5dcc,
+ 0x73a9, 0x764c, 0x773c, 0x5ca9, 0x7feb, 0x8d0b, 0x96c1, 0x9811,
+ 0x9854, 0x9858, 0x4f01, 0x4f0e, 0x5371, 0x559c, 0x5668, 0x57fa,
+ 0x5947, 0x5b09, 0x5bc4, 0x5c90, 0x5e0c, 0x5e7e, 0x5fcc, 0x63ee,
+ 0x673a, 0x65d7, 0x65e2, 0x671f, 0x68cb, 0x68c4,
+ /* 0x35 */
+ 0x6a5f, 0x5e30, 0x6bc5, 0x6c17, 0x6c7d, 0x757f, 0x7948, 0x5b63,
+ 0x7a00, 0x7d00, 0x5fbd, 0x898f, 0x8a18, 0x8cb4, 0x8d77, 0x8ecc,
+ 0x8f1d, 0x98e2, 0x9a0e, 0x9b3c, 0x4e80, 0x507d, 0x5100, 0x5993,
+ 0x5b9c, 0x622f, 0x6280, 0x64ec, 0x6b3a, 0x72a0, 0x7591, 0x7947,
+ 0x7fa9, 0x87fb, 0x8abc, 0x8b70, 0x63ac, 0x83ca, 0x97a0, 0x5409,
+ 0x5403, 0x55ab, 0x6854, 0x6a58, 0x8a70, 0x7827, 0x6775, 0x9ecd,
+ 0x5374, 0x5ba2, 0x811a, 0x8650, 0x9006, 0x4e18, 0x4e45, 0x4ec7,
+ 0x4f11, 0x53ca, 0x5438, 0x5bae, 0x5f13, 0x6025, 0x6551, 0x673d,
+ 0x6c42, 0x6c72, 0x6ce3, 0x7078, 0x7403, 0x7a76, 0x7aae, 0x7b08,
+ 0x7d1a, 0x7cfe, 0x7d66, 0x65e7, 0x725b, 0x53bb, 0x5c45, 0x5de8,
+ 0x62d2, 0x62e0, 0x6319, 0x6e20, 0x865a, 0x8a31, 0x8ddd, 0x92f8,
+ 0x6f01, 0x79a6, 0x9b5a, 0x4ea8, 0x4eab, 0x4eac,
+ /* 0x36 */
+ 0x4f9b, 0x4fa0, 0x50d1, 0x5147, 0x7af6, 0x5171, 0x51f6, 0x5354,
+ 0x5321, 0x537f, 0x53eb, 0x55ac, 0x5883, 0x5ce1, 0x5f37, 0x5f4a,
+ 0x602f, 0x6050, 0x606d, 0x631f, 0x6559, 0x6a4b, 0x6cc1, 0x72c2,
+ 0x72ed, 0x77ef, 0x80f8, 0x8105, 0x8208, 0x854e, 0x90f7, 0x93e1,
+ 0x97ff, 0x9957, 0x9a5a, 0x4ef0, 0x51dd, 0x5c2d, 0x6681, 0x696d,
+ 0x5c40, 0x66f2, 0x6975, 0x7389, 0x6850, 0x7c81, 0x50c5, 0x52e4,
+ 0x5747, 0x5dfe, 0x9326, 0x65a4, 0x6b23, 0x6b3d, 0x7434, 0x7981,
+ 0x79bd, 0x7b4b, 0x7dca, 0x82b9, 0x83cc, 0x887f, 0x895f, 0x8b39,
+ 0x8fd1, 0x91d1, 0x541f, 0x9280, 0x4e5d, 0x5036, 0x53e5, 0x533a,
+ 0x72d7, 0x7396, 0x77e9, 0x82e6, 0x8eaf, 0x99c6, 0x99c8, 0x99d2,
+ 0x5177, 0x611a, 0x865e, 0x55b0, 0x7a7a, 0x5076, 0x5bd3, 0x9047,
+ 0x9685, 0x4e32, 0x6adb, 0x91e7, 0x5c51, 0x5c48,
+ /* 0x37 */
+ 0x6398, 0x7a9f, 0x6c93, 0x9774, 0x8f61, 0x7aaa, 0x718a, 0x9688,
+ 0x7c82, 0x6817, 0x7e70, 0x6851, 0x936c, 0x52f2, 0x541b, 0x85ab,
+ 0x8a13, 0x7fa4, 0x8ecd, 0x90e1, 0x5366, 0x8888, 0x7941, 0x4fc2,
+ 0x50be, 0x5211, 0x5144, 0x5553, 0x572d, 0x73ea, 0x578b, 0x5951,
+ 0x5f62, 0x5f84, 0x6075, 0x6176, 0x6167, 0x61a9, 0x63b2, 0x643a,
+ 0x656c, 0x666f, 0x6842, 0x6e13, 0x7566, 0x7a3d, 0x7cfb, 0x7d4c,
+ 0x7d99, 0x7e4b, 0x7f6b, 0x830e, 0x834a, 0x86cd, 0x8a08, 0x8a63,
+ 0x8b66, 0x8efd, 0x981a, 0x9d8f, 0x82b8, 0x8fce, 0x9be8, 0x5287,
+ 0x621f, 0x6483, 0x6fc0, 0x9699, 0x6841, 0x5091, 0x6b20, 0x6c7a,
+ 0x6f54, 0x7a74, 0x7d50, 0x8840, 0x8a23, 0x6708, 0x4ef6, 0x5039,
+ 0x5026, 0x5065, 0x517c, 0x5238, 0x5263, 0x55a7, 0x570f, 0x5805,
+ 0x5acc, 0x5efa, 0x61b2, 0x61f8, 0x62f3, 0x6372,
+ /* 0x38 */
+ 0x691c, 0x6a29, 0x727d, 0x72ac, 0x732e, 0x7814, 0x786f, 0x7d79,
+ 0x770c, 0x80a9, 0x898b, 0x8b19, 0x8ce2, 0x8ed2, 0x9063, 0x9375,
+ 0x967a, 0x9855, 0x9a13, 0x9e78, 0x5143, 0x539f, 0x53b3, 0x5e7b,
+ 0x5f26, 0x6e1b, 0x6e90, 0x7384, 0x73fe, 0x7d43, 0x8237, 0x8a00,
+ 0x8afa, 0x9650, 0x4e4e, 0x500b, 0x53e4, 0x547c, 0x56fa, 0x59d1,
+ 0x5b64, 0x5df1, 0x5eab, 0x5f27, 0x6238, 0x6545, 0x67af, 0x6e56,
+ 0x72d0, 0x7cca, 0x88b4, 0x80a1, 0x80e1, 0x83f0, 0x864e, 0x8a87,
+ 0x8de8, 0x9237, 0x96c7, 0x9867, 0x9f13, 0x4e94, 0x4e92, 0x4f0d,
+ 0x5348, 0x5449, 0x543e, 0x5a2f, 0x5f8c, 0x5fa1, 0x609f, 0x68a7,
+ 0x6a8e, 0x745a, 0x7881, 0x8a9e, 0x8aa4, 0x8b77, 0x9190, 0x4e5e,
+ 0x9bc9, 0x4ea4, 0x4f7c, 0x4faf, 0x5019, 0x5016, 0x5149, 0x516c,
+ 0x529f, 0x52b9, 0x52fe, 0x539a, 0x53e3, 0x5411,
+ /* 0x39 */
+ 0x540e, 0x5589, 0x5751, 0x57a2, 0x597d, 0x5b54, 0x5b5d, 0x5b8f,
+ 0x5de5, 0x5de7, 0x5df7, 0x5e78, 0x5e83, 0x5e9a, 0x5eb7, 0x5f18,
+ 0x6052, 0x614c, 0x6297, 0x62d8, 0x63a7, 0x653b, 0x6602, 0x6643,
+ 0x66f4, 0x676d, 0x6821, 0x6897, 0x69cb, 0x6c5f, 0x6d2a, 0x6d69,
+ 0x6e2f, 0x6e9d, 0x7532, 0x7687, 0x786c, 0x7a3f, 0x7ce0, 0x7d05,
+ 0x7d18, 0x7d5e, 0x7db1, 0x8015, 0x8003, 0x80af, 0x80b1, 0x8154,
+ 0x818f, 0x822a, 0x8352, 0x884c, 0x8861, 0x8b1b, 0x8ca2, 0x8cfc,
+ 0x90ca, 0x9175, 0x9271, 0x783f, 0x92fc, 0x95a4, 0x964d, 0x9805,
+ 0x9999, 0x9ad8, 0x9d3b, 0x525b, 0x52ab, 0x53f7, 0x5408, 0x58d5,
+ 0x62f7, 0x6fe0, 0x8c6a, 0x8f5f, 0x9eb9, 0x514b, 0x523b, 0x544a,
+ 0x56fd, 0x7a40, 0x9177, 0x9d60, 0x9ed2, 0x7344, 0x6f09, 0x8170,
+ 0x7511, 0x5ffd, 0x60da, 0x9aa8, 0x72db, 0x8fbc,
+ /* 0x3a */
+ 0x6b64, 0x9803, 0x4eca, 0x56f0, 0x5764, 0x58be, 0x5a5a, 0x6068,
+ 0x61c7, 0x660f, 0x6606, 0x6839, 0x68b1, 0x6df7, 0x75d5, 0x7d3a,
+ 0x826e, 0x9b42, 0x4e9b, 0x4f50, 0x53c9, 0x5506, 0x5d6f, 0x5de6,
+ 0x5dee, 0x67fb, 0x6c99, 0x7473, 0x7802, 0x8a50, 0x9396, 0x88df,
+ 0x5750, 0x5ea7, 0x632b, 0x50b5, 0x50ac, 0x518d, 0x6700, 0x54c9,
+ 0x585e, 0x59bb, 0x5bb0, 0x5f69, 0x624d, 0x63a1, 0x683d, 0x6b73,
+ 0x6e08, 0x707d, 0x91c7, 0x7280, 0x7815, 0x7826, 0x796d, 0x658e,
+ 0x7d30, 0x83dc, 0x88c1, 0x8f09, 0x969b, 0x5264, 0x5728, 0x6750,
+ 0x7f6a, 0x8ca1, 0x51b4, 0x5742, 0x962a, 0x583a, 0x698a, 0x80b4,
+ 0x54b2, 0x5d0e, 0x57fc, 0x7895, 0x9dfa, 0x4f5c, 0x524a, 0x548b,
+ 0x643e, 0x6628, 0x6714, 0x67f5, 0x7a84, 0x7b56, 0x7d22, 0x932f,
+ 0x685c, 0x9bad, 0x7b39, 0x5319, 0x518a, 0x5237,
+ /* 0x3b */
+ 0x5bdf, 0x62f6, 0x64ae, 0x64e6, 0x672d, 0x6bba, 0x85a9, 0x96d1,
+ 0x7690, 0x9bd6, 0x634c, 0x9306, 0x9bab, 0x76bf, 0x6652, 0x4e09,
+ 0x5098, 0x53c2, 0x5c71, 0x60e8, 0x6492, 0x6563, 0x685f, 0x71e6,
+ 0x73ca, 0x7523, 0x7b97, 0x7e82, 0x8695, 0x8b83, 0x8cdb, 0x9178,
+ 0x9910, 0x65ac, 0x66ab, 0x6b8b, 0x4ed5, 0x4ed4, 0x4f3a, 0x4f7f,
+ 0x523a, 0x53f8, 0x53f2, 0x55e3, 0x56db, 0x58eb, 0x59cb, 0x59c9,
+ 0x59ff, 0x5b50, 0x5c4d, 0x5e02, 0x5e2b, 0x5fd7, 0x601d, 0x6307,
+ 0x652f, 0x5b5c, 0x65af, 0x65bd, 0x65e8, 0x679d, 0x6b62, 0x6b7b,
+ 0x6c0f, 0x7345, 0x7949, 0x79c1, 0x7cf8, 0x7d19, 0x7d2b, 0x80a2,
+ 0x8102, 0x81f3, 0x8996, 0x8a5e, 0x8a69, 0x8a66, 0x8a8c, 0x8aee,
+ 0x8cc7, 0x8cdc, 0x96cc, 0x98fc, 0x6b6f, 0x4e8b, 0x4f3c, 0x4f8d,
+ 0x5150, 0x5b57, 0x5bfa, 0x6148, 0x6301, 0x6642,
+ /* 0x3c */
+ 0x6b21, 0x6ecb, 0x6cbb, 0x723e, 0x74bd, 0x75d4, 0x78c1, 0x793a,
+ 0x800c, 0x8033, 0x81ea, 0x8494, 0x8f9e, 0x6c50, 0x9e7f, 0x5f0f,
+ 0x8b58, 0x9d2b, 0x7afa, 0x8ef8, 0x5b8d, 0x96eb, 0x4e03, 0x53f1,
+ 0x57f7, 0x5931, 0x5ac9, 0x5ba4, 0x6089, 0x6e7f, 0x6f06, 0x75be,
+ 0x8cea, 0x5b9f, 0x8500, 0x7be0, 0x5072, 0x67f4, 0x829d, 0x5c61,
+ 0x854a, 0x7e1e, 0x820e, 0x5199, 0x5c04, 0x6368, 0x8d66, 0x659c,
+ 0x716e, 0x793e, 0x7d17, 0x8005, 0x8b1d, 0x8eca, 0x906e, 0x86c7,
+ 0x90aa, 0x501f, 0x52fa, 0x5c3a, 0x6753, 0x707c, 0x7235, 0x914c,
+ 0x91c8, 0x932b, 0x82e5, 0x5bc2, 0x5f31, 0x60f9, 0x4e3b, 0x53d6,
+ 0x5b88, 0x624b, 0x6731, 0x6b8a, 0x72e9, 0x73e0, 0x7a2e, 0x816b,
+ 0x8da3, 0x9152, 0x9996, 0x5112, 0x53d7, 0x546a, 0x5bff, 0x6388,
+ 0x6a39, 0x7dac, 0x9700, 0x56da, 0x53ce, 0x5468,
+ /* 0x3d */
+ 0x5b97, 0x5c31, 0x5dde, 0x4fee, 0x6101, 0x62fe, 0x6d32, 0x79c0,
+ 0x79cb, 0x7d42, 0x7e4d, 0x7fd2, 0x81ed, 0x821f, 0x8490, 0x8846,
+ 0x8972, 0x8b90, 0x8e74, 0x8f2f, 0x9031, 0x914b, 0x916c, 0x96c6,
+ 0x919c, 0x4ec0, 0x4f4f, 0x5145, 0x5341, 0x5f93, 0x620e, 0x67d4,
+ 0x6c41, 0x6e0b, 0x7363, 0x7e26, 0x91cd, 0x9283, 0x53d4, 0x5919,
+ 0x5bbf, 0x6dd1, 0x795d, 0x7e2e, 0x7c9b, 0x587e, 0x719f, 0x51fa,
+ 0x8853, 0x8ff0, 0x4fca, 0x5cfb, 0x6625, 0x77ac, 0x7ae3, 0x821c,
+ 0x99ff, 0x51c6, 0x5faa, 0x65ec, 0x696f, 0x6b89, 0x6df3, 0x6e96,
+ 0x6f64, 0x76fe, 0x7d14, 0x5de1, 0x9075, 0x9187, 0x9806, 0x51e6,
+ 0x521d, 0x6240, 0x6691, 0x66d9, 0x6e1a, 0x5eb6, 0x7dd2, 0x7f72,
+ 0x66f8, 0x85af, 0x85f7, 0x8af8, 0x52a9, 0x53d9, 0x5973, 0x5e8f,
+ 0x5f90, 0x6055, 0x92e4, 0x9664, 0x50b7, 0x511f,
+ /* 0x3e */
+ 0x52dd, 0x5320, 0x5347, 0x53ec, 0x54e8, 0x5546, 0x5531, 0x5617,
+ 0x5968, 0x59be, 0x5a3c, 0x5bb5, 0x5c06, 0x5c0f, 0x5c11, 0x5c1a,
+ 0x5e84, 0x5e8a, 0x5ee0, 0x5f70, 0x627f, 0x6284, 0x62db, 0x638c,
+ 0x6377, 0x6607, 0x660c, 0x662d, 0x6676, 0x677e, 0x68a2, 0x6a1f,
+ 0x6a35, 0x6cbc, 0x6d88, 0x6e09, 0x6e58, 0x713c, 0x7126, 0x7167,
+ 0x75c7, 0x7701, 0x785d, 0x7901, 0x7965, 0x79f0, 0x7ae0, 0x7b11,
+ 0x7ca7, 0x7d39, 0x8096, 0x83d6, 0x848b, 0x8549, 0x885d, 0x88f3,
+ 0x8a1f, 0x8a3c, 0x8a54, 0x8a73, 0x8c61, 0x8cde, 0x91a4, 0x9266,
+ 0x937e, 0x9418, 0x969c, 0x9798, 0x4e0a, 0x4e08, 0x4e1e, 0x4e57,
+ 0x5197, 0x5270, 0x57ce, 0x5834, 0x58cc, 0x5b22, 0x5e38, 0x60c5,
+ 0x64fe, 0x6761, 0x6756, 0x6d44, 0x72b6, 0x7573, 0x7a63, 0x84b8,
+ 0x8b72, 0x91b8, 0x9320, 0x5631, 0x57f4, 0x98fe,
+ /* 0x3f */
+ 0x62ed, 0x690d, 0x6b96, 0x71ed, 0x7e54, 0x8077, 0x8272, 0x89e6,
+ 0x98df, 0x8755, 0x8fb1, 0x5c3b, 0x4f38, 0x4fe1, 0x4fb5, 0x5507,
+ 0x5a20, 0x5bdd, 0x5be9, 0x5fc3, 0x614e, 0x632f, 0x65b0, 0x664b,
+ 0x68ee, 0x699b, 0x6d78, 0x6df1, 0x7533, 0x75b9, 0x771f, 0x795e,
+ 0x79e6, 0x7d33, 0x81e3, 0x82af, 0x85aa, 0x89aa, 0x8a3a, 0x8eab,
+ 0x8f9b, 0x9032, 0x91dd, 0x9707, 0x4eba, 0x4ec1, 0x5203, 0x5875,
+ 0x58ec, 0x5c0b, 0x751a, 0x5c3d, 0x814e, 0x8a0a, 0x8fc5, 0x9663,
+ 0x976d, 0x7b25, 0x8acf, 0x9808, 0x9162, 0x56f3, 0x53a8, 0x9017,
+ 0x5439, 0x5782, 0x5e25, 0x63a8, 0x6c34, 0x708a, 0x7761, 0x7c8b,
+ 0x7fe0, 0x8870, 0x9042, 0x9154, 0x9310, 0x9318, 0x968f, 0x745e,
+ 0x9ac4, 0x5d07, 0x5d69, 0x6570, 0x67a2, 0x8da8, 0x96db, 0x636e,
+ 0x6749, 0x6919, 0x83c5, 0x9817, 0x96c0, 0x88fe,
+ /* 0x40 */
+ 0x6f84, 0x647a, 0x5bf8, 0x4e16, 0x702c, 0x755d, 0x662f, 0x51c4,
+ 0x5236, 0x52e2, 0x59d3, 0x5f81, 0x6027, 0x6210, 0x653f, 0x6574,
+ 0x661f, 0x6674, 0x68f2, 0x6816, 0x6b63, 0x6e05, 0x7272, 0x751f,
+ 0x76db, 0x7cbe, 0x8056, 0x58f0, 0x88fd, 0x897f, 0x8aa0, 0x8a93,
+ 0x8acb, 0x901d, 0x9192, 0x9752, 0x9759, 0x6589, 0x7a0e, 0x8106,
+ 0x96bb, 0x5e2d, 0x60dc, 0x621a, 0x65a5, 0x6614, 0x6790, 0x77f3,
+ 0x7a4d, 0x7c4d, 0x7e3e, 0x810a, 0x8cac, 0x8d64, 0x8de1, 0x8e5f,
+ 0x78a9, 0x5207, 0x62d9, 0x63a5, 0x6442, 0x6298, 0x8a2d, 0x7a83,
+ 0x7bc0, 0x8aac, 0x96ea, 0x7d76, 0x820c, 0x8749, 0x4ed9, 0x5148,
+ 0x5343, 0x5360, 0x5ba3, 0x5c02, 0x5c16, 0x5ddd, 0x6226, 0x6247,
+ 0x64b0, 0x6813, 0x6834, 0x6cc9, 0x6d45, 0x6d17, 0x67d3, 0x6f5c,
+ 0x714e, 0x717d, 0x65cb, 0x7a7f, 0x7bad, 0x7dda,
+ /* 0x41 */
+ 0x7e4a, 0x7fa8, 0x817a, 0x821b, 0x8239, 0x85a6, 0x8a6e, 0x8cce,
+ 0x8df5, 0x9078, 0x9077, 0x92ad, 0x9291, 0x9583, 0x9bae, 0x524d,
+ 0x5584, 0x6f38, 0x7136, 0x5168, 0x7985, 0x7e55, 0x81b3, 0x7cce,
+ 0x564c, 0x5851, 0x5ca8, 0x63aa, 0x66fe, 0x66fd, 0x695a, 0x72d9,
+ 0x758f, 0x758e, 0x790e, 0x7956, 0x79df, 0x7c97, 0x7d20, 0x7d44,
+ 0x8607, 0x8a34, 0x963b, 0x9061, 0x9f20, 0x50e7, 0x5275, 0x53cc,
+ 0x53e2, 0x5009, 0x55aa, 0x58ee, 0x594f, 0x723d, 0x5b8b, 0x5c64,
+ 0x531d, 0x60e3, 0x60f3, 0x635c, 0x6383, 0x633f, 0x63bb, 0x64cd,
+ 0x65e9, 0x66f9, 0x5de3, 0x69cd, 0x69fd, 0x6f15, 0x71e5, 0x4e89,
+ 0x75e9, 0x76f8, 0x7a93, 0x7cdf, 0x7dcf, 0x7d9c, 0x8061, 0x8349,
+ 0x8358, 0x846c, 0x84bc, 0x85fb, 0x88c5, 0x8d70, 0x9001, 0x906d,
+ 0x9397, 0x971c, 0x9a12, 0x50cf, 0x5897, 0x618e,
+ /* 0x42 */
+ 0x81d3, 0x8535, 0x8d08, 0x9020, 0x4fc3, 0x5074, 0x5247, 0x5373,
+ 0x606f, 0x6349, 0x675f, 0x6e2c, 0x8db3, 0x901f, 0x4fd7, 0x5c5e,
+ 0x8cca, 0x65cf, 0x7d9a, 0x5352, 0x8896, 0x5176, 0x63c3, 0x5b58,
+ 0x5b6b, 0x5c0a, 0x640d, 0x6751, 0x905c, 0x4ed6, 0x591a, 0x592a,
+ 0x6c70, 0x8a51, 0x553e, 0x5815, 0x59a5, 0x60f0, 0x6253, 0x67c1,
+ 0x8235, 0x6955, 0x9640, 0x99c4, 0x9a28, 0x4f53, 0x5806, 0x5bfe,
+ 0x8010, 0x5cb1, 0x5e2f, 0x5f85, 0x6020, 0x614b, 0x6234, 0x66ff,
+ 0x6cf0, 0x6ede, 0x80ce, 0x817f, 0x82d4, 0x888b, 0x8cb8, 0x9000,
+ 0x902e, 0x968a, 0x9edb, 0x9bdb, 0x4ee3, 0x53f0, 0x5927, 0x7b2c,
+ 0x918d, 0x984c, 0x9df9, 0x6edd, 0x7027, 0x5353, 0x5544, 0x5b85,
+ 0x6258, 0x629e, 0x62d3, 0x6ca2, 0x6fef, 0x7422, 0x8a17, 0x9438,
+ 0x6fc1, 0x8afe, 0x8338, 0x51e7, 0x86f8, 0x53ea,
+ /* 0x43 */
+ 0x53e9, 0x4f46, 0x9054, 0x8fb0, 0x596a, 0x8131, 0x5dfd, 0x7aea,
+ 0x8fbf, 0x68da, 0x8c37, 0x72f8, 0x9c48, 0x6a3d, 0x8ab0, 0x4e39,
+ 0x5358, 0x5606, 0x5766, 0x62c5, 0x63a2, 0x65e6, 0x6b4e, 0x6de1,
+ 0x6e5b, 0x70ad, 0x77ed, 0x7aef, 0x7baa, 0x7dbb, 0x803d, 0x80c6,
+ 0x86cb, 0x8a95, 0x935b, 0x56e3, 0x58c7, 0x5f3e, 0x65ad, 0x6696,
+ 0x6a80, 0x6bb5, 0x7537, 0x8ac7, 0x5024, 0x77e5, 0x5730, 0x5f1b,
+ 0x6065, 0x667a, 0x6c60, 0x75f4, 0x7a1a, 0x7f6e, 0x81f4, 0x8718,
+ 0x9045, 0x99b3, 0x7bc9, 0x755c, 0x7af9, 0x7b51, 0x84c4, 0x9010,
+ 0x79e9, 0x7a92, 0x8336, 0x5ae1, 0x7740, 0x4e2d, 0x4ef2, 0x5b99,
+ 0x5fe0, 0x62bd, 0x663c, 0x67f1, 0x6ce8, 0x866b, 0x8877, 0x8a3b,
+ 0x914e, 0x92f3, 0x99d0, 0x6a17, 0x7026, 0x732a, 0x82e7, 0x8457,
+ 0x8caf, 0x4e01, 0x5146, 0x51cb, 0x558b, 0x5bf5,
+ /* 0x44 */
+ 0x5e16, 0x5e33, 0x5e81, 0x5f14, 0x5f35, 0x5f6b, 0x5fb4, 0x61f2,
+ 0x6311, 0x66a2, 0x671d, 0x6f6e, 0x7252, 0x753a, 0x773a, 0x8074,
+ 0x8139, 0x8178, 0x8776, 0x8abf, 0x8adc, 0x8d85, 0x8df3, 0x929a,
+ 0x9577, 0x9802, 0x9ce5, 0x52c5, 0x6357, 0x76f4, 0x6715, 0x6c88,
+ 0x73cd, 0x8cc3, 0x93ae, 0x9673, 0x6d25, 0x589c, 0x690e, 0x69cc,
+ 0x8ffd, 0x939a, 0x75db, 0x901a, 0x585a, 0x6802, 0x63b4, 0x69fb,
+ 0x4f43, 0x6f2c, 0x67d8, 0x8fbb, 0x8526, 0x7db4, 0x9354, 0x693f,
+ 0x6f70, 0x576a, 0x58f7, 0x5b2c, 0x7d2c, 0x722a, 0x540a, 0x91e3,
+ 0x9db4, 0x4ead, 0x4f4e, 0x505c, 0x5075, 0x5243, 0x8c9e, 0x5448,
+ 0x5824, 0x5b9a, 0x5e1d, 0x5e95, 0x5ead, 0x5ef7, 0x5f1f, 0x608c,
+ 0x62b5, 0x633a, 0x63d0, 0x68af, 0x6c40, 0x7887, 0x798e, 0x7a0b,
+ 0x7de0, 0x8247, 0x8a02, 0x8ae6, 0x8e44, 0x9013,
+ /* 0x45 */
+ 0x90b8, 0x912d, 0x91d8, 0x9f0e, 0x6ce5, 0x6458, 0x64e2, 0x6575,
+ 0x6ef4, 0x7684, 0x7b1b, 0x9069, 0x93d1, 0x6eba, 0x54f2, 0x5fb9,
+ 0x64a4, 0x8f4d, 0x8fed, 0x9244, 0x5178, 0x586b, 0x5929, 0x5c55,
+ 0x5e97, 0x6dfb, 0x7e8f, 0x751c, 0x8cbc, 0x8ee2, 0x985b, 0x70b9,
+ 0x4f1d, 0x6bbf, 0x6fb1, 0x7530, 0x96fb, 0x514e, 0x5410, 0x5835,
+ 0x5857, 0x59ac, 0x5c60, 0x5f92, 0x6597, 0x675c, 0x6e21, 0x767b,
+ 0x83df, 0x8ced, 0x9014, 0x90fd, 0x934d, 0x7825, 0x783a, 0x52aa,
+ 0x5ea6, 0x571f, 0x5974, 0x6012, 0x5012, 0x515a, 0x51ac, 0x51cd,
+ 0x5200, 0x5510, 0x5854, 0x5858, 0x5957, 0x5b95, 0x5cf6, 0x5d8b,
+ 0x60bc, 0x6295, 0x642d, 0x6771, 0x6843, 0x68bc, 0x68df, 0x76d7,
+ 0x6dd8, 0x6e6f, 0x6d9b, 0x706f, 0x71c8, 0x5f53, 0x75d8, 0x7977,
+ 0x7b49, 0x7b54, 0x7b52, 0x7cd6, 0x7d71, 0x5230,
+ /* 0x46 */
+ 0x8463, 0x8569, 0x85e4, 0x8a0e, 0x8b04, 0x8c46, 0x8e0f, 0x9003,
+ 0x900f, 0x9419, 0x9676, 0x982d, 0x9a30, 0x95d8, 0x50cd, 0x52d5,
+ 0x540c, 0x5802, 0x5c0e, 0x61a7, 0x649e, 0x6d1e, 0x77b3, 0x7ae5,
+ 0x80f4, 0x8404, 0x9053, 0x9285, 0x5ce0, 0x9d07, 0x533f, 0x5f97,
+ 0x5fb3, 0x6d9c, 0x7279, 0x7763, 0x79bf, 0x7be4, 0x6bd2, 0x72ec,
+ 0x8aad, 0x6803, 0x6a61, 0x51f8, 0x7a81, 0x6934, 0x5c4a, 0x9cf6,
+ 0x82eb, 0x5bc5, 0x9149, 0x701e, 0x5678, 0x5c6f, 0x60c7, 0x6566,
+ 0x6c8c, 0x8c5a, 0x9041, 0x9813, 0x5451, 0x66c7, 0x920d, 0x5948,
+ 0x90a3, 0x5185, 0x4e4d, 0x51ea, 0x8599, 0x8b0e, 0x7058, 0x637a,
+ 0x934b, 0x6962, 0x99b4, 0x7e04, 0x7577, 0x5357, 0x6960, 0x8edf,
+ 0x96e3, 0x6c5d, 0x4e8c, 0x5c3c, 0x5f10, 0x8fe9, 0x5302, 0x8cd1,
+ 0x8089, 0x8679, 0x5eff, 0x65e5, 0x4e73, 0x5165,
+ /* 0x47 */
+ 0x5982, 0x5c3f, 0x97ee, 0x4efb, 0x598a, 0x5fcd, 0x8a8d, 0x6fe1,
+ 0x79b0, 0x7962, 0x5be7, 0x8471, 0x732b, 0x71b1, 0x5e74, 0x5ff5,
+ 0x637b, 0x649a, 0x71c3, 0x7c98, 0x4e43, 0x5efc, 0x4e4b, 0x57dc,
+ 0x56a2, 0x60a9, 0x6fc3, 0x7d0d, 0x80fd, 0x8133, 0x81bf, 0x8fb2,
+ 0x8997, 0x86a4, 0x5df4, 0x628a, 0x64ad, 0x8987, 0x6777, 0x6ce2,
+ 0x6d3e, 0x7436, 0x7834, 0x5a46, 0x7f75, 0x82ad, 0x99ac, 0x4ff3,
+ 0x5ec3, 0x62dd, 0x6392, 0x6557, 0x676f, 0x76c3, 0x724c, 0x80cc,
+ 0x80ba, 0x8f29, 0x914d, 0x500d, 0x57f9, 0x5a92, 0x6885, 0x6973,
+ 0x7164, 0x72fd, 0x8cb7, 0x58f2, 0x8ce0, 0x966a, 0x9019, 0x877f,
+ 0x79e4, 0x77e7, 0x8429, 0x4f2f, 0x5265, 0x535a, 0x62cd, 0x67cf,
+ 0x6cca, 0x767d, 0x7b94, 0x7c95, 0x8236, 0x8584, 0x8feb, 0x66dd,
+ 0x6f20, 0x7206, 0x7e1b, 0x83ab, 0x99c1, 0x9ea6,
+ /* 0x48 */
+ 0x51fd, 0x7bb1, 0x7872, 0x7bb8, 0x8087, 0x7b48, 0x6ae8, 0x5e61,
+ 0x808c, 0x7551, 0x7560, 0x516b, 0x9262, 0x6e8c, 0x767a, 0x9197,
+ 0x9aea, 0x4f10, 0x7f70, 0x629c, 0x7b4f, 0x95a5, 0x9ce9, 0x567a,
+ 0x5859, 0x86e4, 0x96bc, 0x4f34, 0x5224, 0x534a, 0x53cd, 0x53db,
+ 0x5e06, 0x642c, 0x6591, 0x677f, 0x6c3e, 0x6c4e, 0x7248, 0x72af,
+ 0x73ed, 0x7554, 0x7e41, 0x822c, 0x85e9, 0x8ca9, 0x7bc4, 0x91c6,
+ 0x7169, 0x9812, 0x98ef, 0x633d, 0x6669, 0x756a, 0x76e4, 0x78d0,
+ 0x8543, 0x86ee, 0x532a, 0x5351, 0x5426, 0x5983, 0x5e87, 0x5f7c,
+ 0x60b2, 0x6249, 0x6279, 0x62ab, 0x6590, 0x6bd4, 0x6ccc, 0x75b2,
+ 0x76ae, 0x7891, 0x79d8, 0x7dcb, 0x7f77, 0x80a5, 0x88ab, 0x8ab9,
+ 0x8cbb, 0x907f, 0x975e, 0x98db, 0x6a0b, 0x7c38, 0x5099, 0x5c3e,
+ 0x5fae, 0x6787, 0x6bd8, 0x7435, 0x7709, 0x7f8e,
+ /* 0x49 */
+ 0x9f3b, 0x67ca, 0x7a17, 0x5339, 0x758b, 0x9aed, 0x5f66, 0x819d,
+ 0x83f1, 0x8098, 0x5f3c, 0x5fc5, 0x7562, 0x7b46, 0x903c, 0x6867,
+ 0x59eb, 0x5a9b, 0x7d10, 0x767e, 0x8b2c, 0x4ff5, 0x5f6a, 0x6a19,
+ 0x6c37, 0x6f02, 0x74e2, 0x7968, 0x8868, 0x8a55, 0x8c79, 0x5edf,
+ 0x63cf, 0x75c5, 0x79d2, 0x82d7, 0x9328, 0x92f2, 0x849c, 0x86ed,
+ 0x9c2d, 0x54c1, 0x5f6c, 0x658c, 0x6d5c, 0x7015, 0x8ca7, 0x8cd3,
+ 0x983b, 0x654f, 0x74f6, 0x4e0d, 0x4ed8, 0x57e0, 0x592b, 0x5a66,
+ 0x5bcc, 0x51a8, 0x5e03, 0x5e9c, 0x6016, 0x6276, 0x6577, 0x65a7,
+ 0x666e, 0x6d6e, 0x7236, 0x7b26, 0x8150, 0x819a, 0x8299, 0x8b5c,
+ 0x8ca0, 0x8ce6, 0x8d74, 0x961c, 0x9644, 0x4fae, 0x64ab, 0x6b66,
+ 0x821e, 0x8461, 0x856a, 0x90e8, 0x5c01, 0x6953, 0x98a8, 0x847a,
+ 0x8557, 0x4f0f, 0x526f, 0x5fa9, 0x5e45, 0x670d,
+ /* 0x4a */
+ 0x798f, 0x8179, 0x8907, 0x8986, 0x6df5, 0x5f17, 0x6255, 0x6cb8,
+ 0x4ecf, 0x7269, 0x9b92, 0x5206, 0x543b, 0x5674, 0x58b3, 0x61a4,
+ 0x626e, 0x711a, 0x596e, 0x7c89, 0x7cde, 0x7d1b, 0x96f0, 0x6587,
+ 0x805e, 0x4e19, 0x4f75, 0x5175, 0x5840, 0x5e63, 0x5e73, 0x5f0a,
+ 0x67c4, 0x4e26, 0x853d, 0x9589, 0x965b, 0x7c73, 0x9801, 0x50fb,
+ 0x58c1, 0x7656, 0x78a7, 0x5225, 0x77a5, 0x8511, 0x7b86, 0x504f,
+ 0x5909, 0x7247, 0x7bc7, 0x7de8, 0x8fba, 0x8fd4, 0x904d, 0x4fbf,
+ 0x52c9, 0x5a29, 0x5f01, 0x97ad, 0x4fdd, 0x8217, 0x92ea, 0x5703,
+ 0x6355, 0x6b69, 0x752b, 0x88dc, 0x8f14, 0x7a42, 0x52df, 0x5893,
+ 0x6155, 0x620a, 0x66ae, 0x6bcd, 0x7c3f, 0x83e9, 0x5023, 0x4ff8,
+ 0x5305, 0x5446, 0x5831, 0x5949, 0x5b9d, 0x5cf0, 0x5cef, 0x5d29,
+ 0x5e96, 0x62b1, 0x6367, 0x653e, 0x65b9, 0x670b,
+ /* 0x4b */
+ 0x6cd5, 0x6ce1, 0x70f9, 0x7832, 0x7e2b, 0x80de, 0x82b3, 0x840c,
+ 0x84ec, 0x8702, 0x8912, 0x8a2a, 0x8c4a, 0x90a6, 0x92d2, 0x98fd,
+ 0x9cf3, 0x9d6c, 0x4e4f, 0x4ea1, 0x508d, 0x5256, 0x574a, 0x59a8,
+ 0x5e3d, 0x5fd8, 0x5fd9, 0x623f, 0x66b4, 0x671b, 0x67d0, 0x68d2,
+ 0x5192, 0x7d21, 0x80aa, 0x81a8, 0x8b00, 0x8c8c, 0x8cbf, 0x927e,
+ 0x9632, 0x5420, 0x982c, 0x5317, 0x50d5, 0x535c, 0x58a8, 0x64b2,
+ 0x6734, 0x7267, 0x7766, 0x7a46, 0x91e6, 0x52c3, 0x6ca1, 0x6b86,
+ 0x5800, 0x5e4c, 0x5954, 0x672c, 0x7ffb, 0x51e1, 0x76c6, 0x6469,
+ 0x78e8, 0x9b54, 0x9ebb, 0x57cb, 0x59b9, 0x6627, 0x679a, 0x6bce,
+ 0x54e9, 0x69d9, 0x5e55, 0x819c, 0x6795, 0x9baa, 0x67fe, 0x9c52,
+ 0x685d, 0x4ea6, 0x4fe3, 0x53c8, 0x62b9, 0x672b, 0x6cab, 0x8fc4,
+ 0x4fad, 0x7e6d, 0x9ebf, 0x4e07, 0x6162, 0x6e80,
+ /* 0x4c */
+ 0x6f2b, 0x8513, 0x5473, 0x672a, 0x9b45, 0x5df3, 0x7b95, 0x5cac,
+ 0x5bc6, 0x871c, 0x6e4a, 0x84d1, 0x7a14, 0x8108, 0x5999, 0x7c8d,
+ 0x6c11, 0x7720, 0x52d9, 0x5922, 0x7121, 0x725f, 0x77db, 0x9727,
+ 0x9d61, 0x690b, 0x5a7f, 0x5a18, 0x51a5, 0x540d, 0x547d, 0x660e,
+ 0x76df, 0x8ff7, 0x9298, 0x9cf4, 0x59ea, 0x725d, 0x6ec5, 0x514d,
+ 0x68c9, 0x7dbf, 0x7dec, 0x9762, 0x9eba, 0x6478, 0x6a21, 0x8302,
+ 0x5984, 0x5b5f, 0x6bdb, 0x731b, 0x76f2, 0x7db2, 0x8017, 0x8499,
+ 0x5132, 0x6728, 0x9ed9, 0x76ee, 0x6762, 0x52ff, 0x9905, 0x5c24,
+ 0x623b, 0x7c7e, 0x8cb0, 0x554f, 0x60b6, 0x7d0b, 0x9580, 0x5301,
+ 0x4e5f, 0x51b6, 0x591c, 0x723a, 0x8036, 0x91ce, 0x5f25, 0x77e2,
+ 0x5384, 0x5f79, 0x7d04, 0x85ac, 0x8a33, 0x8e8d, 0x9756, 0x67f3,
+ 0x85ae, 0x9453, 0x6109, 0x6108, 0x6cb9, 0x7652,
+ /* 0x4d */
+ 0x8aed, 0x8f38, 0x552f, 0x4f51, 0x512a, 0x52c7, 0x53cb, 0x5ba5,
+ 0x5e7d, 0x60a0, 0x6182, 0x63d6, 0x6709, 0x67da, 0x6e67, 0x6d8c,
+ 0x7336, 0x7337, 0x7531, 0x7950, 0x88d5, 0x8a98, 0x904a, 0x9091,
+ 0x90f5, 0x96c4, 0x878d, 0x5915, 0x4e88, 0x4f59, 0x4e0e, 0x8a89,
+ 0x8f3f, 0x9810, 0x50ad, 0x5e7c, 0x5996, 0x5bb9, 0x5eb8, 0x63da,
+ 0x63fa, 0x64c1, 0x66dc, 0x694a, 0x69d8, 0x6d0b, 0x6eb6, 0x7194,
+ 0x7528, 0x7aaf, 0x7f8a, 0x8000, 0x8449, 0x84c9, 0x8981, 0x8b21,
+ 0x8e0a, 0x9065, 0x967d, 0x990a, 0x617e, 0x6291, 0x6b32, 0x6c83,
+ 0x6d74, 0x7fcc, 0x7ffc, 0x6dc0, 0x7f85, 0x87ba, 0x88f8, 0x6765,
+ 0x83b1, 0x983c, 0x96f7, 0x6d1b, 0x7d61, 0x843d, 0x916a, 0x4e71,
+ 0x5375, 0x5d50, 0x6b04, 0x6feb, 0x85cd, 0x862d, 0x89a7, 0x5229,
+ 0x540f, 0x5c65, 0x674e, 0x68a8, 0x7406, 0x7483,
+ /* 0x4e */
+ 0x75e2, 0x88cf, 0x88e1, 0x91cc, 0x96e2, 0x9678, 0x5f8b, 0x7387,
+ 0x7acb, 0x844e, 0x63a0, 0x7565, 0x5289, 0x6d41, 0x6e9c, 0x7409,
+ 0x7559, 0x786b, 0x7c92, 0x9686, 0x7adc, 0x9f8d, 0x4fb6, 0x616e,
+ 0x65c5, 0x865c, 0x4e86, 0x4eae, 0x50da, 0x4e21, 0x51cc, 0x5bee,
+ 0x6599, 0x6881, 0x6dbc, 0x731f, 0x7642, 0x77ad, 0x7a1c, 0x7ce7,
+ 0x826f, 0x8ad2, 0x907c, 0x91cf, 0x9675, 0x9818, 0x529b, 0x7dd1,
+ 0x502b, 0x5398, 0x6797, 0x6dcb, 0x71d0, 0x7433, 0x81e8, 0x8f2a,
+ 0x96a3, 0x9c57, 0x9e9f, 0x7460, 0x5841, 0x6d99, 0x7d2f, 0x985e,
+ 0x4ee4, 0x4f36, 0x4f8b, 0x51b7, 0x52b1, 0x5dba, 0x601c, 0x73b2,
+ 0x793c, 0x82d3, 0x9234, 0x96b7, 0x96f6, 0x970a, 0x9e97, 0x9f62,
+ 0x66a6, 0x6b74, 0x5217, 0x52a3, 0x70c8, 0x88c2, 0x5ec9, 0x604b,
+ 0x6190, 0x6f23, 0x7149, 0x7c3e, 0x7df4, 0x806f,
+ /* 0x4f */
+ 0x84ee, 0x9023, 0x932c, 0x5442, 0x9b6f, 0x6ad3, 0x7089, 0x8cc2,
+ 0x8def, 0x9732, 0x52b4, 0x5a41, 0x5eca, 0x5f04, 0x6717, 0x697c,
+ 0x6994, 0x6d6a, 0x6f0f, 0x7262, 0x72fc, 0x7bed, 0x8001, 0x807e,
+ 0x874b, 0x90ce, 0x516d, 0x9e93, 0x7984, 0x808b, 0x9332, 0x8ad6,
+ 0x502d, 0x548c, 0x8a71, 0x6b6a, 0x8cc4, 0x8107, 0x60d1, 0x67a0,
+ 0x9df2, 0x4e99, 0x4e98, 0x9c10, 0x8a6b, 0x85c1, 0x8568, 0x6900,
+ 0x6e7e, 0x7897, 0x8155, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ /* 0x50 */
+ 0x5f0c, 0x4e10, 0x4e15, 0x4e2a, 0x4e31, 0x4e36, 0x4e3c, 0x4e3f,
+ 0x4e42, 0x4e56, 0x4e58, 0x4e82, 0x4e85, 0x8c6b, 0x4e8a, 0x8212,
+ 0x5f0d, 0x4e8e, 0x4e9e, 0x4e9f, 0x4ea0, 0x4ea2, 0x4eb0, 0x4eb3,
+ 0x4eb6, 0x4ece, 0x4ecd, 0x4ec4, 0x4ec6, 0x4ec2, 0x4ed7, 0x4ede,
+ 0x4eed, 0x4edf, 0x4ef7, 0x4f09, 0x4f5a, 0x4f30, 0x4f5b, 0x4f5d,
+ 0x4f57, 0x4f47, 0x4f76, 0x4f88, 0x4f8f, 0x4f98, 0x4f7b, 0x4f69,
+ 0x4f70, 0x4f91, 0x4f6f, 0x4f86, 0x4f96, 0x5118, 0x4fd4, 0x4fdf,
+ 0x4fce, 0x4fd8, 0x4fdb, 0x4fd1, 0x4fda, 0x4fd0, 0x4fe4, 0x4fe5,
+ 0x501a, 0x5028, 0x5014, 0x502a, 0x5025, 0x5005, 0x4f1c, 0x4ff6,
+ 0x5021, 0x5029, 0x502c, 0x4ffe, 0x4fef, 0x5011, 0x5006, 0x5043,
+ 0x5047, 0x6703, 0x5055, 0x5050, 0x5048, 0x505a, 0x5056, 0x506c,
+ 0x5078, 0x5080, 0x509a, 0x5085, 0x50b4, 0x50b2,
+ /* 0x51 */
+ 0x50c9, 0x50ca, 0x50b3, 0x50c2, 0x50d6, 0x50de, 0x50e5, 0x50ed,
+ 0x50e3, 0x50ee, 0x50f9, 0x50f5, 0x5109, 0x5101, 0x5102, 0x5116,
+ 0x5115, 0x5114, 0x511a, 0x5121, 0x513a, 0x5137, 0x513c, 0x513b,
+ 0x513f, 0x5140, 0x5152, 0x514c, 0x5154, 0x5162, 0x7af8, 0x5169,
+ 0x516a, 0x516e, 0x5180, 0x5182, 0x56d8, 0x518c, 0x5189, 0x518f,
+ 0x5191, 0x5193, 0x5195, 0x5196, 0x51a4, 0x51a6, 0x51a2, 0x51a9,
+ 0x51aa, 0x51ab, 0x51b3, 0x51b1, 0x51b2, 0x51b0, 0x51b5, 0x51bd,
+ 0x51c5, 0x51c9, 0x51db, 0x51e0, 0x8655, 0x51e9, 0x51ed, 0x51f0,
+ 0x51f5, 0x51fe, 0x5204, 0x520b, 0x5214, 0x520e, 0x5227, 0x522a,
+ 0x522e, 0x5233, 0x5239, 0x524f, 0x5244, 0x524b, 0x524c, 0x525e,
+ 0x5254, 0x526a, 0x5274, 0x5269, 0x5273, 0x527f, 0x527d, 0x528d,
+ 0x5294, 0x5292, 0x5271, 0x5288, 0x5291, 0x8fa8,
+ /* 0x52 */
+ 0x8fa7, 0x52ac, 0x52ad, 0x52bc, 0x52b5, 0x52c1, 0x52cd, 0x52d7,
+ 0x52de, 0x52e3, 0x52e6, 0x98ed, 0x52e0, 0x52f3, 0x52f5, 0x52f8,
+ 0x52f9, 0x5306, 0x5308, 0x7538, 0x530d, 0x5310, 0x530f, 0x5315,
+ 0x531a, 0x5323, 0x532f, 0x5331, 0x5333, 0x5338, 0x5340, 0x5346,
+ 0x5345, 0x4e17, 0x5349, 0x534d, 0x51d6, 0x535e, 0x5369, 0x536e,
+ 0x5918, 0x537b, 0x5377, 0x5382, 0x5396, 0x53a0, 0x53a6, 0x53a5,
+ 0x53ae, 0x53b0, 0x53b6, 0x53c3, 0x7c12, 0x96d9, 0x53df, 0x66fc,
+ 0x71ee, 0x53ee, 0x53e8, 0x53ed, 0x53fa, 0x5401, 0x543d, 0x5440,
+ 0x542c, 0x542d, 0x543c, 0x542e, 0x5436, 0x5429, 0x541d, 0x544e,
+ 0x548f, 0x5475, 0x548e, 0x545f, 0x5471, 0x5477, 0x5470, 0x5492,
+ 0x547b, 0x5480, 0x5476, 0x5484, 0x5490, 0x5486, 0x54c7, 0x54a2,
+ 0x54b8, 0x54a5, 0x54ac, 0x54c4, 0x54c8, 0x54a8,
+ /* 0x53 */
+ 0x54ab, 0x54c2, 0x54a4, 0x54be, 0x54bc, 0x54d8, 0x54e5, 0x54e6,
+ 0x550f, 0x5514, 0x54fd, 0x54ee, 0x54ed, 0x54fa, 0x54e2, 0x5539,
+ 0x5540, 0x5563, 0x554c, 0x552e, 0x555c, 0x5545, 0x5556, 0x5557,
+ 0x5538, 0x5533, 0x555d, 0x5599, 0x5580, 0x54af, 0x558a, 0x559f,
+ 0x557b, 0x557e, 0x5598, 0x559e, 0x55ae, 0x557c, 0x5583, 0x55a9,
+ 0x5587, 0x55a8, 0x55da, 0x55c5, 0x55df, 0x55c4, 0x55dc, 0x55e4,
+ 0x55d4, 0x5614, 0x55f7, 0x5616, 0x55fe, 0x55fd, 0x561b, 0x55f9,
+ 0x564e, 0x5650, 0x71df, 0x5634, 0x5636, 0x5632, 0x5638, 0x566b,
+ 0x5664, 0x562f, 0x566c, 0x566a, 0x5686, 0x5680, 0x568a, 0x56a0,
+ 0x5694, 0x568f, 0x56a5, 0x56ae, 0x56b6, 0x56b4, 0x56c2, 0x56bc,
+ 0x56c1, 0x56c3, 0x56c0, 0x56c8, 0x56ce, 0x56d1, 0x56d3, 0x56d7,
+ 0x56ee, 0x56f9, 0x5700, 0x56ff, 0x5704, 0x5709,
+ /* 0x54 */
+ 0x5708, 0x570b, 0x570d, 0x5713, 0x5718, 0x5716, 0x55c7, 0x571c,
+ 0x5726, 0x5737, 0x5738, 0x574e, 0x573b, 0x5740, 0x574f, 0x5769,
+ 0x57c0, 0x5788, 0x5761, 0x577f, 0x5789, 0x5793, 0x57a0, 0x57b3,
+ 0x57a4, 0x57aa, 0x57b0, 0x57c3, 0x57c6, 0x57d4, 0x57d2, 0x57d3,
+ 0x580a, 0x57d6, 0x57e3, 0x580b, 0x5819, 0x581d, 0x5872, 0x5821,
+ 0x5862, 0x584b, 0x5870, 0x6bc0, 0x5852, 0x583d, 0x5879, 0x5885,
+ 0x58b9, 0x589f, 0x58ab, 0x58ba, 0x58de, 0x58bb, 0x58b8, 0x58ae,
+ 0x58c5, 0x58d3, 0x58d1, 0x58d7, 0x58d9, 0x58d8, 0x58e5, 0x58dc,
+ 0x58e4, 0x58df, 0x58ef, 0x58fa, 0x58f9, 0x58fb, 0x58fc, 0x58fd,
+ 0x5902, 0x590a, 0x5910, 0x591b, 0x68a6, 0x5925, 0x592c, 0x592d,
+ 0x5932, 0x5938, 0x593e, 0x7ad2, 0x5955, 0x5950, 0x594e, 0x595a,
+ 0x5958, 0x5962, 0x5960, 0x5967, 0x596c, 0x5969,
+ /* 0x55 */
+ 0x5978, 0x5981, 0x599d, 0x4f5e, 0x4fab, 0x59a3, 0x59b2, 0x59c6,
+ 0x59e8, 0x59dc, 0x598d, 0x59d9, 0x59da, 0x5a25, 0x5a1f, 0x5a11,
+ 0x5a1c, 0x5a09, 0x5a1a, 0x5a40, 0x5a6c, 0x5a49, 0x5a35, 0x5a36,
+ 0x5a62, 0x5a6a, 0x5a9a, 0x5abc, 0x5abe, 0x5acb, 0x5ac2, 0x5abd,
+ 0x5ae3, 0x5ad7, 0x5ae6, 0x5ae9, 0x5ad6, 0x5afa, 0x5afb, 0x5b0c,
+ 0x5b0b, 0x5b16, 0x5b32, 0x5ad0, 0x5b2a, 0x5b36, 0x5b3e, 0x5b43,
+ 0x5b45, 0x5b40, 0x5b51, 0x5b55, 0x5b5a, 0x5b5b, 0x5b65, 0x5b69,
+ 0x5b70, 0x5b73, 0x5b75, 0x5b78, 0x6588, 0x5b7a, 0x5b80, 0x5b83,
+ 0x5ba6, 0x5bb8, 0x5bc3, 0x5bc7, 0x5bc9, 0x5bd4, 0x5bd0, 0x5be4,
+ 0x5be6, 0x5be2, 0x5bde, 0x5be5, 0x5beb, 0x5bf0, 0x5bf6, 0x5bf3,
+ 0x5c05, 0x5c07, 0x5c08, 0x5c0d, 0x5c13, 0x5c20, 0x5c22, 0x5c28,
+ 0x5c38, 0x5c39, 0x5c41, 0x5c46, 0x5c4e, 0x5c53,
+ /* 0x56 */
+ 0x5c50, 0x5c4f, 0x5b71, 0x5c6c, 0x5c6e, 0x4e62, 0x5c76, 0x5c79,
+ 0x5c8c, 0x5c91, 0x5c94, 0x599b, 0x5cab, 0x5cbb, 0x5cb6, 0x5cbc,
+ 0x5cb7, 0x5cc5, 0x5cbe, 0x5cc7, 0x5cd9, 0x5ce9, 0x5cfd, 0x5cfa,
+ 0x5ced, 0x5d8c, 0x5cea, 0x5d0b, 0x5d15, 0x5d17, 0x5d5c, 0x5d1f,
+ 0x5d1b, 0x5d11, 0x5d14, 0x5d22, 0x5d1a, 0x5d19, 0x5d18, 0x5d4c,
+ 0x5d52, 0x5d4e, 0x5d4b, 0x5d6c, 0x5d73, 0x5d76, 0x5d87, 0x5d84,
+ 0x5d82, 0x5da2, 0x5d9d, 0x5dac, 0x5dae, 0x5dbd, 0x5d90, 0x5db7,
+ 0x5dbc, 0x5dc9, 0x5dcd, 0x5dd3, 0x5dd2, 0x5dd6, 0x5ddb, 0x5deb,
+ 0x5df2, 0x5df5, 0x5e0b, 0x5e1a, 0x5e19, 0x5e11, 0x5e1b, 0x5e36,
+ 0x5e37, 0x5e44, 0x5e43, 0x5e40, 0x5e4e, 0x5e57, 0x5e54, 0x5e5f,
+ 0x5e62, 0x5e64, 0x5e47, 0x5e75, 0x5e76, 0x5e7a, 0x9ebc, 0x5e7f,
+ 0x5ea0, 0x5ec1, 0x5ec2, 0x5ec8, 0x5ed0, 0x5ecf,
+ /* 0x57 */
+ 0x5ed6, 0x5ee3, 0x5edd, 0x5eda, 0x5edb, 0x5ee2, 0x5ee1, 0x5ee8,
+ 0x5ee9, 0x5eec, 0x5ef1, 0x5ef3, 0x5ef0, 0x5ef4, 0x5ef8, 0x5efe,
+ 0x5f03, 0x5f09, 0x5f5d, 0x5f5c, 0x5f0b, 0x5f11, 0x5f16, 0x5f29,
+ 0x5f2d, 0x5f38, 0x5f41, 0x5f48, 0x5f4c, 0x5f4e, 0x5f2f, 0x5f51,
+ 0x5f56, 0x5f57, 0x5f59, 0x5f61, 0x5f6d, 0x5f73, 0x5f77, 0x5f83,
+ 0x5f82, 0x5f7f, 0x5f8a, 0x5f88, 0x5f91, 0x5f87, 0x5f9e, 0x5f99,
+ 0x5f98, 0x5fa0, 0x5fa8, 0x5fad, 0x5fbc, 0x5fd6, 0x5ffb, 0x5fe4,
+ 0x5ff8, 0x5ff1, 0x5fdd, 0x60b3, 0x5fff, 0x6021, 0x6060, 0x6019,
+ 0x6010, 0x6029, 0x600e, 0x6031, 0x601b, 0x6015, 0x602b, 0x6026,
+ 0x600f, 0x603a, 0x605a, 0x6041, 0x606a, 0x6077, 0x605f, 0x604a,
+ 0x6046, 0x604d, 0x6063, 0x6043, 0x6064, 0x6042, 0x606c, 0x606b,
+ 0x6059, 0x6081, 0x608d, 0x60e7, 0x6083, 0x609a,
+ /* 0x58 */
+ 0x6084, 0x609b, 0x6096, 0x6097, 0x6092, 0x60a7, 0x608b, 0x60e1,
+ 0x60b8, 0x60e0, 0x60d3, 0x60b4, 0x5ff0, 0x60bd, 0x60c6, 0x60b5,
+ 0x60d8, 0x614d, 0x6115, 0x6106, 0x60f6, 0x60f7, 0x6100, 0x60f4,
+ 0x60fa, 0x6103, 0x6121, 0x60fb, 0x60f1, 0x610d, 0x610e, 0x6147,
+ 0x613e, 0x6128, 0x6127, 0x614a, 0x613f, 0x613c, 0x612c, 0x6134,
+ 0x613d, 0x6142, 0x6144, 0x6173, 0x6177, 0x6158, 0x6159, 0x615a,
+ 0x616b, 0x6174, 0x616f, 0x6165, 0x6171, 0x615f, 0x615d, 0x6153,
+ 0x6175, 0x6199, 0x6196, 0x6187, 0x61ac, 0x6194, 0x619a, 0x618a,
+ 0x6191, 0x61ab, 0x61ae, 0x61cc, 0x61ca, 0x61c9, 0x61f7, 0x61c8,
+ 0x61c3, 0x61c6, 0x61ba, 0x61cb, 0x7f79, 0x61cd, 0x61e6, 0x61e3,
+ 0x61f6, 0x61fa, 0x61f4, 0x61ff, 0x61fd, 0x61fc, 0x61fe, 0x6200,
+ 0x6208, 0x6209, 0x620d, 0x620c, 0x6214, 0x621b,
+ /* 0x59 */
+ 0x621e, 0x6221, 0x622a, 0x622e, 0x6230, 0x6232, 0x6233, 0x6241,
+ 0x624e, 0x625e, 0x6263, 0x625b, 0x6260, 0x6268, 0x627c, 0x6282,
+ 0x6289, 0x627e, 0x6292, 0x6293, 0x6296, 0x62d4, 0x6283, 0x6294,
+ 0x62d7, 0x62d1, 0x62bb, 0x62cf, 0x62ff, 0x62c6, 0x64d4, 0x62c8,
+ 0x62dc, 0x62cc, 0x62ca, 0x62c2, 0x62c7, 0x629b, 0x62c9, 0x630c,
+ 0x62ee, 0x62f1, 0x6327, 0x6302, 0x6308, 0x62ef, 0x62f5, 0x6350,
+ 0x633e, 0x634d, 0x641c, 0x634f, 0x6396, 0x638e, 0x6380, 0x63ab,
+ 0x6376, 0x63a3, 0x638f, 0x6389, 0x639f, 0x63b5, 0x636b, 0x6369,
+ 0x63be, 0x63e9, 0x63c0, 0x63c6, 0x63e3, 0x63c9, 0x63d2, 0x63f6,
+ 0x63c4, 0x6416, 0x6434, 0x6406, 0x6413, 0x6426, 0x6436, 0x651d,
+ 0x6417, 0x6428, 0x640f, 0x6467, 0x646f, 0x6476, 0x644e, 0x652a,
+ 0x6495, 0x6493, 0x64a5, 0x64a9, 0x6488, 0x64bc,
+ /* 0x5a */
+ 0x64da, 0x64d2, 0x64c5, 0x64c7, 0x64bb, 0x64d8, 0x64c2, 0x64f1,
+ 0x64e7, 0x8209, 0x64e0, 0x64e1, 0x62ac, 0x64e3, 0x64ef, 0x652c,
+ 0x64f6, 0x64f4, 0x64f2, 0x64fa, 0x6500, 0x64fd, 0x6518, 0x651c,
+ 0x6505, 0x6524, 0x6523, 0x652b, 0x6534, 0x6535, 0x6537, 0x6536,
+ 0x6538, 0x754b, 0x6548, 0x6556, 0x6555, 0x654d, 0x6558, 0x655e,
+ 0x655d, 0x6572, 0x6578, 0x6582, 0x6583, 0x8b8a, 0x659b, 0x659f,
+ 0x65ab, 0x65b7, 0x65c3, 0x65c6, 0x65c1, 0x65c4, 0x65cc, 0x65d2,
+ 0x65db, 0x65d9, 0x65e0, 0x65e1, 0x65f1, 0x6772, 0x660a, 0x6603,
+ 0x65fb, 0x6773, 0x6635, 0x6636, 0x6634, 0x661c, 0x664f, 0x6644,
+ 0x6649, 0x6641, 0x665e, 0x665d, 0x6664, 0x6667, 0x6668, 0x665f,
+ 0x6662, 0x6670, 0x6683, 0x6688, 0x668e, 0x6689, 0x6684, 0x6698,
+ 0x669d, 0x66c1, 0x66b9, 0x66c9, 0x66be, 0x66bc,
+ /* 0x5b */
+ 0x66c4, 0x66b8, 0x66d6, 0x66da, 0x66e0, 0x663f, 0x66e6, 0x66e9,
+ 0x66f0, 0x66f5, 0x66f7, 0x670f, 0x6716, 0x671e, 0x6726, 0x6727,
+ 0x9738, 0x672e, 0x673f, 0x6736, 0x6741, 0x6738, 0x6737, 0x6746,
+ 0x675e, 0x6760, 0x6759, 0x6763, 0x6764, 0x6789, 0x6770, 0x67a9,
+ 0x677c, 0x676a, 0x678c, 0x678b, 0x67a6, 0x67a1, 0x6785, 0x67b7,
+ 0x67ef, 0x67b4, 0x67ec, 0x67b3, 0x67e9, 0x67b8, 0x67e4, 0x67de,
+ 0x67dd, 0x67e2, 0x67ee, 0x67b9, 0x67ce, 0x67c6, 0x67e7, 0x6a9c,
+ 0x681e, 0x6846, 0x6829, 0x6840, 0x684d, 0x6832, 0x684e, 0x68b3,
+ 0x682b, 0x6859, 0x6863, 0x6877, 0x687f, 0x689f, 0x688f, 0x68ad,
+ 0x6894, 0x689d, 0x689b, 0x6883, 0x6aae, 0x68b9, 0x6874, 0x68b5,
+ 0x68a0, 0x68ba, 0x690f, 0x688d, 0x687e, 0x6901, 0x68ca, 0x6908,
+ 0x68d8, 0x6922, 0x6926, 0x68e1, 0x690c, 0x68cd,
+ /* 0x5c */
+ 0x68d4, 0x68e7, 0x68d5, 0x6936, 0x6912, 0x6904, 0x68d7, 0x68e3,
+ 0x6925, 0x68f9, 0x68e0, 0x68ef, 0x6928, 0x692a, 0x691a, 0x6923,
+ 0x6921, 0x68c6, 0x6979, 0x6977, 0x695c, 0x6978, 0x696b, 0x6954,
+ 0x697e, 0x696e, 0x6939, 0x6974, 0x693d, 0x6959, 0x6930, 0x6961,
+ 0x695e, 0x695d, 0x6981, 0x696a, 0x69b2, 0x69ae, 0x69d0, 0x69bf,
+ 0x69c1, 0x69d3, 0x69be, 0x69ce, 0x5be8, 0x69ca, 0x69dd, 0x69bb,
+ 0x69c3, 0x69a7, 0x6a2e, 0x6991, 0x69a0, 0x699c, 0x6995, 0x69b4,
+ 0x69de, 0x69e8, 0x6a02, 0x6a1b, 0x69ff, 0x6b0a, 0x69f9, 0x69f2,
+ 0x69e7, 0x6a05, 0x69b1, 0x6a1e, 0x69ed, 0x6a14, 0x69eb, 0x6a0a,
+ 0x6a12, 0x6ac1, 0x6a23, 0x6a13, 0x6a44, 0x6a0c, 0x6a72, 0x6a36,
+ 0x6a78, 0x6a47, 0x6a62, 0x6a59, 0x6a66, 0x6a48, 0x6a38, 0x6a22,
+ 0x6a90, 0x6a8d, 0x6aa0, 0x6a84, 0x6aa2, 0x6aa3,
+ /* 0x5d */
+ 0x6a97, 0x8617, 0x6abb, 0x6ac3, 0x6ac2, 0x6ab8, 0x6ab3, 0x6aac,
+ 0x6ade, 0x6ad1, 0x6adf, 0x6aaa, 0x6ada, 0x6aea, 0x6afb, 0x6b05,
+ 0x8616, 0x6afa, 0x6b12, 0x6b16, 0x9b31, 0x6b1f, 0x6b38, 0x6b37,
+ 0x76dc, 0x6b39, 0x98ee, 0x6b47, 0x6b43, 0x6b49, 0x6b50, 0x6b59,
+ 0x6b54, 0x6b5b, 0x6b5f, 0x6b61, 0x6b78, 0x6b79, 0x6b7f, 0x6b80,
+ 0x6b84, 0x6b83, 0x6b8d, 0x6b98, 0x6b95, 0x6b9e, 0x6ba4, 0x6baa,
+ 0x6bab, 0x6baf, 0x6bb2, 0x6bb1, 0x6bb3, 0x6bb7, 0x6bbc, 0x6bc6,
+ 0x6bcb, 0x6bd3, 0x6bdf, 0x6bec, 0x6beb, 0x6bf3, 0x6bef, 0x9ebe,
+ 0x6c08, 0x6c13, 0x6c14, 0x6c1b, 0x6c24, 0x6c23, 0x6c5e, 0x6c55,
+ 0x6c62, 0x6c6a, 0x6c82, 0x6c8d, 0x6c9a, 0x6c81, 0x6c9b, 0x6c7e,
+ 0x6c68, 0x6c73, 0x6c92, 0x6c90, 0x6cc4, 0x6cf1, 0x6cd3, 0x6cbd,
+ 0x6cd7, 0x6cc5, 0x6cdd, 0x6cae, 0x6cb1, 0x6cbe,
+ /* 0x5e */
+ 0x6cba, 0x6cdb, 0x6cef, 0x6cd9, 0x6cea, 0x6d1f, 0x884d, 0x6d36,
+ 0x6d2b, 0x6d3d, 0x6d38, 0x6d19, 0x6d35, 0x6d33, 0x6d12, 0x6d0c,
+ 0x6d63, 0x6d93, 0x6d64, 0x6d5a, 0x6d79, 0x6d59, 0x6d8e, 0x6d95,
+ 0x6fe4, 0x6d85, 0x6df9, 0x6e15, 0x6e0a, 0x6db5, 0x6dc7, 0x6de6,
+ 0x6db8, 0x6dc6, 0x6dec, 0x6dde, 0x6dcc, 0x6de8, 0x6dd2, 0x6dc5,
+ 0x6dfa, 0x6dd9, 0x6de4, 0x6dd5, 0x6dea, 0x6dee, 0x6e2d, 0x6e6e,
+ 0x6e2e, 0x6e19, 0x6e72, 0x6e5f, 0x6e3e, 0x6e23, 0x6e6b, 0x6e2b,
+ 0x6e76, 0x6e4d, 0x6e1f, 0x6e43, 0x6e3a, 0x6e4e, 0x6e24, 0x6eff,
+ 0x6e1d, 0x6e38, 0x6e82, 0x6eaa, 0x6e98, 0x6ec9, 0x6eb7, 0x6ed3,
+ 0x6ebd, 0x6eaf, 0x6ec4, 0x6eb2, 0x6ed4, 0x6ed5, 0x6e8f, 0x6ea5,
+ 0x6ec2, 0x6e9f, 0x6f41, 0x6f11, 0x704c, 0x6eec, 0x6ef8, 0x6efe,
+ 0x6f3f, 0x6ef2, 0x6f31, 0x6eef, 0x6f32, 0x6ecc,
+ /* 0x5f */
+ 0x6f3e, 0x6f13, 0x6ef7, 0x6f86, 0x6f7a, 0x6f78, 0x6f81, 0x6f80,
+ 0x6f6f, 0x6f5b, 0x6ff3, 0x6f6d, 0x6f82, 0x6f7c, 0x6f58, 0x6f8e,
+ 0x6f91, 0x6fc2, 0x6f66, 0x6fb3, 0x6fa3, 0x6fa1, 0x6fa4, 0x6fb9,
+ 0x6fc6, 0x6faa, 0x6fdf, 0x6fd5, 0x6fec, 0x6fd4, 0x6fd8, 0x6ff1,
+ 0x6fee, 0x6fdb, 0x7009, 0x700b, 0x6ffa, 0x7011, 0x7001, 0x700f,
+ 0x6ffe, 0x701b, 0x701a, 0x6f74, 0x701d, 0x7018, 0x701f, 0x7030,
+ 0x703e, 0x7032, 0x7051, 0x7063, 0x7099, 0x7092, 0x70af, 0x70f1,
+ 0x70ac, 0x70b8, 0x70b3, 0x70ae, 0x70df, 0x70cb, 0x70dd, 0x70d9,
+ 0x7109, 0x70fd, 0x711c, 0x7119, 0x7165, 0x7155, 0x7188, 0x7166,
+ 0x7162, 0x714c, 0x7156, 0x716c, 0x718f, 0x71fb, 0x7184, 0x7195,
+ 0x71a8, 0x71ac, 0x71d7, 0x71b9, 0x71be, 0x71d2, 0x71c9, 0x71d4,
+ 0x71ce, 0x71e0, 0x71ec, 0x71e7, 0x71f5, 0x71fc,
+ /* 0x60 */
+ 0x71f9, 0x71ff, 0x720d, 0x7210, 0x721b, 0x7228, 0x722d, 0x722c,
+ 0x7230, 0x7232, 0x723b, 0x723c, 0x723f, 0x7240, 0x7246, 0x724b,
+ 0x7258, 0x7274, 0x727e, 0x7282, 0x7281, 0x7287, 0x7292, 0x7296,
+ 0x72a2, 0x72a7, 0x72b9, 0x72b2, 0x72c3, 0x72c6, 0x72c4, 0x72ce,
+ 0x72d2, 0x72e2, 0x72e0, 0x72e1, 0x72f9, 0x72f7, 0x500f, 0x7317,
+ 0x730a, 0x731c, 0x7316, 0x731d, 0x7334, 0x732f, 0x7329, 0x7325,
+ 0x733e, 0x734e, 0x734f, 0x9ed8, 0x7357, 0x736a, 0x7368, 0x7370,
+ 0x7378, 0x7375, 0x737b, 0x737a, 0x73c8, 0x73b3, 0x73ce, 0x73bb,
+ 0x73c0, 0x73e5, 0x73ee, 0x73de, 0x74a2, 0x7405, 0x746f, 0x7425,
+ 0x73f8, 0x7432, 0x743a, 0x7455, 0x743f, 0x745f, 0x7459, 0x7441,
+ 0x745c, 0x7469, 0x7470, 0x7463, 0x746a, 0x7476, 0x747e, 0x748b,
+ 0x749e, 0x74a7, 0x74ca, 0x74cf, 0x74d4, 0x73f1,
+ /* 0x61 */
+ 0x74e0, 0x74e3, 0x74e7, 0x74e9, 0x74ee, 0x74f2, 0x74f0, 0x74f1,
+ 0x74f8, 0x74f7, 0x7504, 0x7503, 0x7505, 0x750c, 0x750e, 0x750d,
+ 0x7515, 0x7513, 0x751e, 0x7526, 0x752c, 0x753c, 0x7544, 0x754d,
+ 0x754a, 0x7549, 0x755b, 0x7546, 0x755a, 0x7569, 0x7564, 0x7567,
+ 0x756b, 0x756d, 0x7578, 0x7576, 0x7586, 0x7587, 0x7574, 0x758a,
+ 0x7589, 0x7582, 0x7594, 0x759a, 0x759d, 0x75a5, 0x75a3, 0x75c2,
+ 0x75b3, 0x75c3, 0x75b5, 0x75bd, 0x75b8, 0x75bc, 0x75b1, 0x75cd,
+ 0x75ca, 0x75d2, 0x75d9, 0x75e3, 0x75de, 0x75fe, 0x75ff, 0x75fc,
+ 0x7601, 0x75f0, 0x75fa, 0x75f2, 0x75f3, 0x760b, 0x760d, 0x7609,
+ 0x761f, 0x7627, 0x7620, 0x7621, 0x7622, 0x7624, 0x7634, 0x7630,
+ 0x763b, 0x7647, 0x7648, 0x7646, 0x765c, 0x7658, 0x7661, 0x7662,
+ 0x7668, 0x7669, 0x766a, 0x7667, 0x766c, 0x7670,
+ /* 0x62 */
+ 0x7672, 0x7676, 0x7678, 0x767c, 0x7680, 0x7683, 0x7688, 0x768b,
+ 0x768e, 0x7696, 0x7693, 0x7699, 0x769a, 0x76b0, 0x76b4, 0x76b8,
+ 0x76b9, 0x76ba, 0x76c2, 0x76cd, 0x76d6, 0x76d2, 0x76de, 0x76e1,
+ 0x76e5, 0x76e7, 0x76ea, 0x862f, 0x76fb, 0x7708, 0x7707, 0x7704,
+ 0x7729, 0x7724, 0x771e, 0x7725, 0x7726, 0x771b, 0x7737, 0x7738,
+ 0x7747, 0x775a, 0x7768, 0x776b, 0x775b, 0x7765, 0x777f, 0x777e,
+ 0x7779, 0x778e, 0x778b, 0x7791, 0x77a0, 0x779e, 0x77b0, 0x77b6,
+ 0x77b9, 0x77bf, 0x77bc, 0x77bd, 0x77bb, 0x77c7, 0x77cd, 0x77d7,
+ 0x77da, 0x77dc, 0x77e3, 0x77ee, 0x77fc, 0x780c, 0x7812, 0x7926,
+ 0x7820, 0x792a, 0x7845, 0x788e, 0x7874, 0x7886, 0x787c, 0x789a,
+ 0x788c, 0x78a3, 0x78b5, 0x78aa, 0x78af, 0x78d1, 0x78c6, 0x78cb,
+ 0x78d4, 0x78be, 0x78bc, 0x78c5, 0x78ca, 0x78ec,
+ /* 0x63 */
+ 0x78e7, 0x78da, 0x78fd, 0x78f4, 0x7907, 0x7912, 0x7911, 0x7919,
+ 0x792c, 0x792b, 0x7940, 0x7960, 0x7957, 0x795f, 0x795a, 0x7955,
+ 0x7953, 0x797a, 0x797f, 0x798a, 0x799d, 0x79a7, 0x9f4b, 0x79aa,
+ 0x79ae, 0x79b3, 0x79b9, 0x79ba, 0x79c9, 0x79d5, 0x79e7, 0x79ec,
+ 0x79e1, 0x79e3, 0x7a08, 0x7a0d, 0x7a18, 0x7a19, 0x7a20, 0x7a1f,
+ 0x7980, 0x7a31, 0x7a3b, 0x7a3e, 0x7a37, 0x7a43, 0x7a57, 0x7a49,
+ 0x7a61, 0x7a62, 0x7a69, 0x9f9d, 0x7a70, 0x7a79, 0x7a7d, 0x7a88,
+ 0x7a97, 0x7a95, 0x7a98, 0x7a96, 0x7aa9, 0x7ac8, 0x7ab0, 0x7ab6,
+ 0x7ac5, 0x7ac4, 0x7abf, 0x9083, 0x7ac7, 0x7aca, 0x7acd, 0x7acf,
+ 0x7ad5, 0x7ad3, 0x7ad9, 0x7ada, 0x7add, 0x7ae1, 0x7ae2, 0x7ae6,
+ 0x7aed, 0x7af0, 0x7b02, 0x7b0f, 0x7b0a, 0x7b06, 0x7b33, 0x7b18,
+ 0x7b19, 0x7b1e, 0x7b35, 0x7b28, 0x7b36, 0x7b50,
+ /* 0x64 */
+ 0x7b7a, 0x7b04, 0x7b4d, 0x7b0b, 0x7b4c, 0x7b45, 0x7b75, 0x7b65,
+ 0x7b74, 0x7b67, 0x7b70, 0x7b71, 0x7b6c, 0x7b6e, 0x7b9d, 0x7b98,
+ 0x7b9f, 0x7b8d, 0x7b9c, 0x7b9a, 0x7b8b, 0x7b92, 0x7b8f, 0x7b5d,
+ 0x7b99, 0x7bcb, 0x7bc1, 0x7bcc, 0x7bcf, 0x7bb4, 0x7bc6, 0x7bdd,
+ 0x7be9, 0x7c11, 0x7c14, 0x7be6, 0x7be5, 0x7c60, 0x7c00, 0x7c07,
+ 0x7c13, 0x7bf3, 0x7bf7, 0x7c17, 0x7c0d, 0x7bf6, 0x7c23, 0x7c27,
+ 0x7c2a, 0x7c1f, 0x7c37, 0x7c2b, 0x7c3d, 0x7c4c, 0x7c43, 0x7c54,
+ 0x7c4f, 0x7c40, 0x7c50, 0x7c58, 0x7c5f, 0x7c64, 0x7c56, 0x7c65,
+ 0x7c6c, 0x7c75, 0x7c83, 0x7c90, 0x7ca4, 0x7cad, 0x7ca2, 0x7cab,
+ 0x7ca1, 0x7ca8, 0x7cb3, 0x7cb2, 0x7cb1, 0x7cae, 0x7cb9, 0x7cbd,
+ 0x7cc0, 0x7cc5, 0x7cc2, 0x7cd8, 0x7cd2, 0x7cdc, 0x7ce2, 0x9b3b,
+ 0x7cef, 0x7cf2, 0x7cf4, 0x7cf6, 0x7cfa, 0x7d06,
+ /* 0x65 */
+ 0x7d02, 0x7d1c, 0x7d15, 0x7d0a, 0x7d45, 0x7d4b, 0x7d2e, 0x7d32,
+ 0x7d3f, 0x7d35, 0x7d46, 0x7d73, 0x7d56, 0x7d4e, 0x7d72, 0x7d68,
+ 0x7d6e, 0x7d4f, 0x7d63, 0x7d93, 0x7d89, 0x7d5b, 0x7d8f, 0x7d7d,
+ 0x7d9b, 0x7dba, 0x7dae, 0x7da3, 0x7db5, 0x7dc7, 0x7dbd, 0x7dab,
+ 0x7e3d, 0x7da2, 0x7daf, 0x7ddc, 0x7db8, 0x7d9f, 0x7db0, 0x7dd8,
+ 0x7ddd, 0x7de4, 0x7dde, 0x7dfb, 0x7df2, 0x7de1, 0x7e05, 0x7e0a,
+ 0x7e23, 0x7e21, 0x7e12, 0x7e31, 0x7e1f, 0x7e09, 0x7e0b, 0x7e22,
+ 0x7e46, 0x7e66, 0x7e3b, 0x7e35, 0x7e39, 0x7e43, 0x7e37, 0x7e32,
+ 0x7e3a, 0x7e67, 0x7e5d, 0x7e56, 0x7e5e, 0x7e59, 0x7e5a, 0x7e79,
+ 0x7e6a, 0x7e69, 0x7e7c, 0x7e7b, 0x7e83, 0x7dd5, 0x7e7d, 0x8fae,
+ 0x7e7f, 0x7e88, 0x7e89, 0x7e8c, 0x7e92, 0x7e90, 0x7e93, 0x7e94,
+ 0x7e96, 0x7e8e, 0x7e9b, 0x7e9c, 0x7f38, 0x7f3a,
+ /* 0x66 */
+ 0x7f45, 0x7f4c, 0x7f4d, 0x7f4e, 0x7f50, 0x7f51, 0x7f55, 0x7f54,
+ 0x7f58, 0x7f5f, 0x7f60, 0x7f68, 0x7f69, 0x7f67, 0x7f78, 0x7f82,
+ 0x7f86, 0x7f83, 0x7f88, 0x7f87, 0x7f8c, 0x7f94, 0x7f9e, 0x7f9d,
+ 0x7f9a, 0x7fa3, 0x7faf, 0x7fb2, 0x7fb9, 0x7fae, 0x7fb6, 0x7fb8,
+ 0x8b71, 0x7fc5, 0x7fc6, 0x7fca, 0x7fd5, 0x7fd4, 0x7fe1, 0x7fe6,
+ 0x7fe9, 0x7ff3, 0x7ff9, 0x98dc, 0x8006, 0x8004, 0x800b, 0x8012,
+ 0x8018, 0x8019, 0x801c, 0x8021, 0x8028, 0x803f, 0x803b, 0x804a,
+ 0x8046, 0x8052, 0x8058, 0x805a, 0x805f, 0x8062, 0x8068, 0x8073,
+ 0x8072, 0x8070, 0x8076, 0x8079, 0x807d, 0x807f, 0x8084, 0x8086,
+ 0x8085, 0x809b, 0x8093, 0x809a, 0x80ad, 0x5190, 0x80ac, 0x80db,
+ 0x80e5, 0x80d9, 0x80dd, 0x80c4, 0x80da, 0x80d6, 0x8109, 0x80ef,
+ 0x80f1, 0x811b, 0x8129, 0x8123, 0x812f, 0x814b,
+ /* 0x67 */
+ 0x968b, 0x8146, 0x813e, 0x8153, 0x8151, 0x80fc, 0x8171, 0x816e,
+ 0x8165, 0x8166, 0x8174, 0x8183, 0x8188, 0x818a, 0x8180, 0x8182,
+ 0x81a0, 0x8195, 0x81a4, 0x81a3, 0x815f, 0x8193, 0x81a9, 0x81b0,
+ 0x81b5, 0x81be, 0x81b8, 0x81bd, 0x81c0, 0x81c2, 0x81ba, 0x81c9,
+ 0x81cd, 0x81d1, 0x81d9, 0x81d8, 0x81c8, 0x81da, 0x81df, 0x81e0,
+ 0x81e7, 0x81fa, 0x81fb, 0x81fe, 0x8201, 0x8202, 0x8205, 0x8207,
+ 0x820a, 0x820d, 0x8210, 0x8216, 0x8229, 0x822b, 0x8238, 0x8233,
+ 0x8240, 0x8259, 0x8258, 0x825d, 0x825a, 0x825f, 0x8264, 0x8262,
+ 0x8268, 0x826a, 0x826b, 0x822e, 0x8271, 0x8277, 0x8278, 0x827e,
+ 0x828d, 0x8292, 0x82ab, 0x829f, 0x82bb, 0x82ac, 0x82e1, 0x82e3,
+ 0x82df, 0x82d2, 0x82f4, 0x82f3, 0x82fa, 0x8393, 0x8303, 0x82fb,
+ 0x82f9, 0x82de, 0x8306, 0x82dc, 0x8309, 0x82d9,
+ /* 0x68 */
+ 0x8335, 0x8334, 0x8316, 0x8332, 0x8331, 0x8340, 0x8339, 0x8350,
+ 0x8345, 0x832f, 0x832b, 0x8317, 0x8318, 0x8385, 0x839a, 0x83aa,
+ 0x839f, 0x83a2, 0x8396, 0x8323, 0x838e, 0x8387, 0x838a, 0x837c,
+ 0x83b5, 0x8373, 0x8375, 0x83a0, 0x8389, 0x83a8, 0x83f4, 0x8413,
+ 0x83eb, 0x83ce, 0x83fd, 0x8403, 0x83d8, 0x840b, 0x83c1, 0x83f7,
+ 0x8407, 0x83e0, 0x83f2, 0x840d, 0x8422, 0x8420, 0x83bd, 0x8438,
+ 0x8506, 0x83fb, 0x846d, 0x842a, 0x843c, 0x855a, 0x8484, 0x8477,
+ 0x846b, 0x84ad, 0x846e, 0x8482, 0x8469, 0x8446, 0x842c, 0x846f,
+ 0x8479, 0x8435, 0x84ca, 0x8462, 0x84b9, 0x84bf, 0x849f, 0x84d9,
+ 0x84cd, 0x84bb, 0x84da, 0x84d0, 0x84c1, 0x84c6, 0x84d6, 0x84a1,
+ 0x8521, 0x84ff, 0x84f4, 0x8517, 0x8518, 0x852c, 0x851f, 0x8515,
+ 0x8514, 0x84fc, 0x8540, 0x8563, 0x8558, 0x8548,
+ /* 0x69 */
+ 0x8541, 0x8602, 0x854b, 0x8555, 0x8580, 0x85a4, 0x8588, 0x8591,
+ 0x858a, 0x85a8, 0x856d, 0x8594, 0x859b, 0x85ea, 0x8587, 0x859c,
+ 0x8577, 0x857e, 0x8590, 0x85c9, 0x85ba, 0x85cf, 0x85b9, 0x85d0,
+ 0x85d5, 0x85dd, 0x85e5, 0x85dc, 0x85f9, 0x860a, 0x8613, 0x860b,
+ 0x85fe, 0x85fa, 0x8606, 0x8622, 0x861a, 0x8630, 0x863f, 0x864d,
+ 0x4e55, 0x8654, 0x865f, 0x8667, 0x8671, 0x8693, 0x86a3, 0x86a9,
+ 0x86aa, 0x868b, 0x868c, 0x86b6, 0x86af, 0x86c4, 0x86c6, 0x86b0,
+ 0x86c9, 0x8823, 0x86ab, 0x86d4, 0x86de, 0x86e9, 0x86ec, 0x86df,
+ 0x86db, 0x86ef, 0x8712, 0x8706, 0x8708, 0x8700, 0x8703, 0x86fb,
+ 0x8711, 0x8709, 0x870d, 0x86f9, 0x870a, 0x8734, 0x873f, 0x8737,
+ 0x873b, 0x8725, 0x8729, 0x871a, 0x8760, 0x875f, 0x8778, 0x874c,
+ 0x874e, 0x8774, 0x8757, 0x8768, 0x876e, 0x8759,
+ /* 0x6a */
+ 0x8753, 0x8763, 0x876a, 0x8805, 0x87a2, 0x879f, 0x8782, 0x87af,
+ 0x87cb, 0x87bd, 0x87c0, 0x87d0, 0x96d6, 0x87ab, 0x87c4, 0x87b3,
+ 0x87c7, 0x87c6, 0x87bb, 0x87ef, 0x87f2, 0x87e0, 0x880f, 0x880d,
+ 0x87fe, 0x87f6, 0x87f7, 0x880e, 0x87d2, 0x8811, 0x8816, 0x8815,
+ 0x8822, 0x8821, 0x8831, 0x8836, 0x8839, 0x8827, 0x883b, 0x8844,
+ 0x8842, 0x8852, 0x8859, 0x885e, 0x8862, 0x886b, 0x8881, 0x887e,
+ 0x889e, 0x8875, 0x887d, 0x88b5, 0x8872, 0x8882, 0x8897, 0x8892,
+ 0x88ae, 0x8899, 0x88a2, 0x888d, 0x88a4, 0x88b0, 0x88bf, 0x88b1,
+ 0x88c3, 0x88c4, 0x88d4, 0x88d8, 0x88d9, 0x88dd, 0x88f9, 0x8902,
+ 0x88fc, 0x88f4, 0x88e8, 0x88f2, 0x8904, 0x890c, 0x890a, 0x8913,
+ 0x8943, 0x891e, 0x8925, 0x892a, 0x892b, 0x8941, 0x8944, 0x893b,
+ 0x8936, 0x8938, 0x894c, 0x891d, 0x8960, 0x895e,
+ /* 0x6b */
+ 0x8966, 0x8964, 0x896d, 0x896a, 0x896f, 0x8974, 0x8977, 0x897e,
+ 0x8983, 0x8988, 0x898a, 0x8993, 0x8998, 0x89a1, 0x89a9, 0x89a6,
+ 0x89ac, 0x89af, 0x89b2, 0x89ba, 0x89bd, 0x89bf, 0x89c0, 0x89da,
+ 0x89dc, 0x89dd, 0x89e7, 0x89f4, 0x89f8, 0x8a03, 0x8a16, 0x8a10,
+ 0x8a0c, 0x8a1b, 0x8a1d, 0x8a25, 0x8a36, 0x8a41, 0x8a5b, 0x8a52,
+ 0x8a46, 0x8a48, 0x8a7c, 0x8a6d, 0x8a6c, 0x8a62, 0x8a85, 0x8a82,
+ 0x8a84, 0x8aa8, 0x8aa1, 0x8a91, 0x8aa5, 0x8aa6, 0x8a9a, 0x8aa3,
+ 0x8ac4, 0x8acd, 0x8ac2, 0x8ada, 0x8aeb, 0x8af3, 0x8ae7, 0x8ae4,
+ 0x8af1, 0x8b14, 0x8ae0, 0x8ae2, 0x8af7, 0x8ade, 0x8adb, 0x8b0c,
+ 0x8b07, 0x8b1a, 0x8ae1, 0x8b16, 0x8b10, 0x8b17, 0x8b20, 0x8b33,
+ 0x97ab, 0x8b26, 0x8b2b, 0x8b3e, 0x8b28, 0x8b41, 0x8b4c, 0x8b4f,
+ 0x8b4e, 0x8b49, 0x8b56, 0x8b5b, 0x8b5a, 0x8b6b,
+ /* 0x6c */
+ 0x8b5f, 0x8b6c, 0x8b6f, 0x8b74, 0x8b7d, 0x8b80, 0x8b8c, 0x8b8e,
+ 0x8b92, 0x8b93, 0x8b96, 0x8b99, 0x8b9a, 0x8c3a, 0x8c41, 0x8c3f,
+ 0x8c48, 0x8c4c, 0x8c4e, 0x8c50, 0x8c55, 0x8c62, 0x8c6c, 0x8c78,
+ 0x8c7a, 0x8c82, 0x8c89, 0x8c85, 0x8c8a, 0x8c8d, 0x8c8e, 0x8c94,
+ 0x8c7c, 0x8c98, 0x621d, 0x8cad, 0x8caa, 0x8cbd, 0x8cb2, 0x8cb3,
+ 0x8cae, 0x8cb6, 0x8cc8, 0x8cc1, 0x8ce4, 0x8ce3, 0x8cda, 0x8cfd,
+ 0x8cfa, 0x8cfb, 0x8d04, 0x8d05, 0x8d0a, 0x8d07, 0x8d0f, 0x8d0d,
+ 0x8d10, 0x9f4e, 0x8d13, 0x8ccd, 0x8d14, 0x8d16, 0x8d67, 0x8d6d,
+ 0x8d71, 0x8d73, 0x8d81, 0x8d99, 0x8dc2, 0x8dbe, 0x8dba, 0x8dcf,
+ 0x8dda, 0x8dd6, 0x8dcc, 0x8ddb, 0x8dcb, 0x8dea, 0x8deb, 0x8ddf,
+ 0x8de3, 0x8dfc, 0x8e08, 0x8e09, 0x8dff, 0x8e1d, 0x8e1e, 0x8e10,
+ 0x8e1f, 0x8e42, 0x8e35, 0x8e30, 0x8e34, 0x8e4a,
+ /* 0x6d */
+ 0x8e47, 0x8e49, 0x8e4c, 0x8e50, 0x8e48, 0x8e59, 0x8e64, 0x8e60,
+ 0x8e2a, 0x8e63, 0x8e55, 0x8e76, 0x8e72, 0x8e7c, 0x8e81, 0x8e87,
+ 0x8e85, 0x8e84, 0x8e8b, 0x8e8a, 0x8e93, 0x8e91, 0x8e94, 0x8e99,
+ 0x8eaa, 0x8ea1, 0x8eac, 0x8eb0, 0x8ec6, 0x8eb1, 0x8ebe, 0x8ec5,
+ 0x8ec8, 0x8ecb, 0x8edb, 0x8ee3, 0x8efc, 0x8efb, 0x8eeb, 0x8efe,
+ 0x8f0a, 0x8f05, 0x8f15, 0x8f12, 0x8f19, 0x8f13, 0x8f1c, 0x8f1f,
+ 0x8f1b, 0x8f0c, 0x8f26, 0x8f33, 0x8f3b, 0x8f39, 0x8f45, 0x8f42,
+ 0x8f3e, 0x8f4c, 0x8f49, 0x8f46, 0x8f4e, 0x8f57, 0x8f5c, 0x8f62,
+ 0x8f63, 0x8f64, 0x8f9c, 0x8f9f, 0x8fa3, 0x8fad, 0x8faf, 0x8fb7,
+ 0x8fda, 0x8fe5, 0x8fe2, 0x8fea, 0x8fef, 0x9087, 0x8ff4, 0x9005,
+ 0x8ff9, 0x8ffa, 0x9011, 0x9015, 0x9021, 0x900d, 0x901e, 0x9016,
+ 0x900b, 0x9027, 0x9036, 0x9035, 0x9039, 0x8ff8,
+ /* 0x6e */
+ 0x904f, 0x9050, 0x9051, 0x9052, 0x900e, 0x9049, 0x903e, 0x9056,
+ 0x9058, 0x905e, 0x9068, 0x906f, 0x9076, 0x96a8, 0x9072, 0x9082,
+ 0x907d, 0x9081, 0x9080, 0x908a, 0x9089, 0x908f, 0x90a8, 0x90af,
+ 0x90b1, 0x90b5, 0x90e2, 0x90e4, 0x6248, 0x90db, 0x9102, 0x9112,
+ 0x9119, 0x9132, 0x9130, 0x914a, 0x9156, 0x9158, 0x9163, 0x9165,
+ 0x9169, 0x9173, 0x9172, 0x918b, 0x9189, 0x9182, 0x91a2, 0x91ab,
+ 0x91af, 0x91aa, 0x91b5, 0x91b4, 0x91ba, 0x91c0, 0x91c1, 0x91c9,
+ 0x91cb, 0x91d0, 0x91d6, 0x91df, 0x91e1, 0x91db, 0x91fc, 0x91f5,
+ 0x91f6, 0x921e, 0x91ff, 0x9214, 0x922c, 0x9215, 0x9211, 0x925e,
+ 0x9257, 0x9245, 0x9249, 0x9264, 0x9248, 0x9295, 0x923f, 0x924b,
+ 0x9250, 0x929c, 0x9296, 0x9293, 0x929b, 0x925a, 0x92cf, 0x92b9,
+ 0x92b7, 0x92e9, 0x930f, 0x92fa, 0x9344, 0x932e,
+ /* 0x6f */
+ 0x9319, 0x9322, 0x931a, 0x9323, 0x933a, 0x9335, 0x933b, 0x935c,
+ 0x9360, 0x937c, 0x936e, 0x9356, 0x93b0, 0x93ac, 0x93ad, 0x9394,
+ 0x93b9, 0x93d6, 0x93d7, 0x93e8, 0x93e5, 0x93d8, 0x93c3, 0x93dd,
+ 0x93d0, 0x93c8, 0x93e4, 0x941a, 0x9414, 0x9413, 0x9403, 0x9407,
+ 0x9410, 0x9436, 0x942b, 0x9435, 0x9421, 0x943a, 0x9441, 0x9452,
+ 0x9444, 0x945b, 0x9460, 0x9462, 0x945e, 0x946a, 0x9229, 0x9470,
+ 0x9475, 0x9477, 0x947d, 0x945a, 0x947c, 0x947e, 0x9481, 0x947f,
+ 0x9582, 0x9587, 0x958a, 0x9594, 0x9596, 0x9598, 0x9599, 0x95a0,
+ 0x95a8, 0x95a7, 0x95ad, 0x95bc, 0x95bb, 0x95b9, 0x95be, 0x95ca,
+ 0x6ff6, 0x95c3, 0x95cd, 0x95cc, 0x95d5, 0x95d4, 0x95d6, 0x95dc,
+ 0x95e1, 0x95e5, 0x95e2, 0x9621, 0x9628, 0x962e, 0x962f, 0x9642,
+ 0x964c, 0x964f, 0x964b, 0x9677, 0x965c, 0x965e,
+ /* 0x70 */
+ 0x965d, 0x965f, 0x9666, 0x9672, 0x966c, 0x968d, 0x9698, 0x9695,
+ 0x9697, 0x96aa, 0x96a7, 0x96b1, 0x96b2, 0x96b0, 0x96b4, 0x96b6,
+ 0x96b8, 0x96b9, 0x96ce, 0x96cb, 0x96c9, 0x96cd, 0x894d, 0x96dc,
+ 0x970d, 0x96d5, 0x96f9, 0x9704, 0x9706, 0x9708, 0x9713, 0x970e,
+ 0x9711, 0x970f, 0x9716, 0x9719, 0x9724, 0x972a, 0x9730, 0x9739,
+ 0x973d, 0x973e, 0x9744, 0x9746, 0x9748, 0x9742, 0x9749, 0x975c,
+ 0x9760, 0x9764, 0x9766, 0x9768, 0x52d2, 0x976b, 0x9771, 0x9779,
+ 0x9785, 0x977c, 0x9781, 0x977a, 0x9786, 0x978b, 0x978f, 0x9790,
+ 0x979c, 0x97a8, 0x97a6, 0x97a3, 0x97b3, 0x97b4, 0x97c3, 0x97c6,
+ 0x97c8, 0x97cb, 0x97dc, 0x97ed, 0x9f4f, 0x97f2, 0x7adf, 0x97f6,
+ 0x97f5, 0x980f, 0x980c, 0x9838, 0x9824, 0x9821, 0x9837, 0x983d,
+ 0x9846, 0x984f, 0x984b, 0x986b, 0x986f, 0x9870,
+ /* 0x71 */
+ 0x9871, 0x9874, 0x9873, 0x98aa, 0x98af, 0x98b1, 0x98b6, 0x98c4,
+ 0x98c3, 0x98c6, 0x98e9, 0x98eb, 0x9903, 0x9909, 0x9912, 0x9914,
+ 0x9918, 0x9921, 0x991d, 0x991e, 0x9924, 0x9920, 0x992c, 0x992e,
+ 0x993d, 0x993e, 0x9942, 0x9949, 0x9945, 0x9950, 0x994b, 0x9951,
+ 0x9952, 0x994c, 0x9955, 0x9997, 0x9998, 0x99a5, 0x99ad, 0x99ae,
+ 0x99bc, 0x99df, 0x99db, 0x99dd, 0x99d8, 0x99d1, 0x99ed, 0x99ee,
+ 0x99f1, 0x99f2, 0x99fb, 0x99f8, 0x9a01, 0x9a0f, 0x9a05, 0x99e2,
+ 0x9a19, 0x9a2b, 0x9a37, 0x9a45, 0x9a42, 0x9a40, 0x9a43, 0x9a3e,
+ 0x9a55, 0x9a4d, 0x9a5b, 0x9a57, 0x9a5f, 0x9a62, 0x9a65, 0x9a64,
+ 0x9a69, 0x9a6b, 0x9a6a, 0x9aad, 0x9ab0, 0x9abc, 0x9ac0, 0x9acf,
+ 0x9ad1, 0x9ad3, 0x9ad4, 0x9ade, 0x9adf, 0x9ae2, 0x9ae3, 0x9ae6,
+ 0x9aef, 0x9aeb, 0x9aee, 0x9af4, 0x9af1, 0x9af7,
+ /* 0x72 */
+ 0x9afb, 0x9b06, 0x9b18, 0x9b1a, 0x9b1f, 0x9b22, 0x9b23, 0x9b25,
+ 0x9b27, 0x9b28, 0x9b29, 0x9b2a, 0x9b2e, 0x9b2f, 0x9b32, 0x9b44,
+ 0x9b43, 0x9b4f, 0x9b4d, 0x9b4e, 0x9b51, 0x9b58, 0x9b74, 0x9b93,
+ 0x9b83, 0x9b91, 0x9b96, 0x9b97, 0x9b9f, 0x9ba0, 0x9ba8, 0x9bb4,
+ 0x9bc0, 0x9bca, 0x9bb9, 0x9bc6, 0x9bcf, 0x9bd1, 0x9bd2, 0x9be3,
+ 0x9be2, 0x9be4, 0x9bd4, 0x9be1, 0x9c3a, 0x9bf2, 0x9bf1, 0x9bf0,
+ 0x9c15, 0x9c14, 0x9c09, 0x9c13, 0x9c0c, 0x9c06, 0x9c08, 0x9c12,
+ 0x9c0a, 0x9c04, 0x9c2e, 0x9c1b, 0x9c25, 0x9c24, 0x9c21, 0x9c30,
+ 0x9c47, 0x9c32, 0x9c46, 0x9c3e, 0x9c5a, 0x9c60, 0x9c67, 0x9c76,
+ 0x9c78, 0x9ce7, 0x9cec, 0x9cf0, 0x9d09, 0x9d08, 0x9ceb, 0x9d03,
+ 0x9d06, 0x9d2a, 0x9d26, 0x9daf, 0x9d23, 0x9d1f, 0x9d44, 0x9d15,
+ 0x9d12, 0x9d41, 0x9d3f, 0x9d3e, 0x9d46, 0x9d48,
+ /* 0x73 */
+ 0x9d5d, 0x9d5e, 0x9d64, 0x9d51, 0x9d50, 0x9d59, 0x9d72, 0x9d89,
+ 0x9d87, 0x9dab, 0x9d6f, 0x9d7a, 0x9d9a, 0x9da4, 0x9da9, 0x9db2,
+ 0x9dc4, 0x9dc1, 0x9dbb, 0x9db8, 0x9dba, 0x9dc6, 0x9dcf, 0x9dc2,
+ 0x9dd9, 0x9dd3, 0x9df8, 0x9de6, 0x9ded, 0x9def, 0x9dfd, 0x9e1a,
+ 0x9e1b, 0x9e1e, 0x9e75, 0x9e79, 0x9e7d, 0x9e81, 0x9e88, 0x9e8b,
+ 0x9e8c, 0x9e92, 0x9e95, 0x9e91, 0x9e9d, 0x9ea5, 0x9ea9, 0x9eb8,
+ 0x9eaa, 0x9ead, 0x9761, 0x9ecc, 0x9ece, 0x9ecf, 0x9ed0, 0x9ed4,
+ 0x9edc, 0x9ede, 0x9edd, 0x9ee0, 0x9ee5, 0x9ee8, 0x9eef, 0x9ef4,
+ 0x9ef6, 0x9ef7, 0x9ef9, 0x9efb, 0x9efc, 0x9efd, 0x9f07, 0x9f08,
+ 0x76b7, 0x9f15, 0x9f21, 0x9f2c, 0x9f3e, 0x9f4a, 0x9f52, 0x9f54,
+ 0x9f63, 0x9f5f, 0x9f60, 0x9f61, 0x9f66, 0x9f67, 0x9f6c, 0x9f6a,
+ 0x9f77, 0x9f72, 0x9f76, 0x9f95, 0x9f9c, 0x9fa0,
+ /* 0x74 */
+ 0x582f, 0x69c7, 0x9059, 0x7464, 0x51dc, 0x7199,
+};
+
+static int
+jisx0208_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n)
+{
+ unsigned char c1 = (s[0] & 0x7F);
+ if ((c1 >= 0x21 && c1 <= 0x28) || (c1 >= 0x30 && c1 <= 0x74)) {
+ if (n >= 2) {
+ unsigned char c2 = (s[1] & 0x7F);
+ if (c2 >= 0x21 && c2 < 0x7f) {
+ unsigned int i = 94 * (c1 - 0x21) + (c2 - 0x21);
+ unsigned short wc = 0xfffd;
+ if (i < 1410) {
+ if (i < 690)
+ wc = jisx0208_2uni_page21[i];
+ } else {
+ if (i < 7808)
+ wc = jisx0208_2uni_page30[i-1410];
+ }
+ if (wc != 0xfffd) {
+ *pwc = (ucs4_t) wc;
+ return 2;
+ }
+ }
+ return RET_ILSEQ;
+ }
+ return RET_TOOFEW(0);
+ }
+ return RET_ILSEQ;
+}
+
+static const unsigned short jisx0208_2charset[6879] = {
+ 0x2140, 0x2171, 0x2172, 0x2178, 0x212f, 0x224c, 0x216b, 0x215e,
+ 0x212d, 0x2279, 0x215f, 0x2160, 0x2621, 0x2622, 0x2623, 0x2624,
+ 0x2625, 0x2626, 0x2627, 0x2628, 0x2629, 0x262a, 0x262b, 0x262c,
+ 0x262d, 0x262e, 0x262f, 0x2630, 0x2631, 0x2632, 0x2633, 0x2634,
+ 0x2635, 0x2636, 0x2637, 0x2638, 0x2641, 0x2642, 0x2643, 0x2644,
+ 0x2645, 0x2646, 0x2647, 0x2648, 0x2649, 0x264a, 0x264b, 0x264c,
+ 0x264d, 0x264e, 0x264f, 0x2650, 0x2651, 0x2652, 0x2653, 0x2654,
+ 0x2655, 0x2656, 0x2657, 0x2658, 0x2727, 0x2721, 0x2722, 0x2723,
+ 0x2724, 0x2725, 0x2726, 0x2728, 0x2729, 0x272a, 0x272b, 0x272c,
+ 0x272d, 0x272e, 0x272f, 0x2730, 0x2731, 0x2732, 0x2733, 0x2734,
+ 0x2735, 0x2736, 0x2737, 0x2738, 0x2739, 0x273a, 0x273b, 0x273c,
+ 0x273d, 0x273e, 0x273f, 0x2740, 0x2741, 0x2751, 0x2752, 0x2753,
+ 0x2754, 0x2755, 0x2756, 0x2758, 0x2759, 0x275a, 0x275b, 0x275c,
+ 0x275d, 0x275e, 0x275f, 0x2760, 0x2761, 0x2762, 0x2763, 0x2764,
+ 0x2765, 0x2766, 0x2767, 0x2768, 0x2769, 0x276a, 0x276b, 0x276c,
+ 0x276d, 0x276e, 0x276f, 0x2770, 0x2771, 0x2757, 0x213e, 0x213d,
+ 0x2142, 0x2146, 0x2147, 0x2148, 0x2149, 0x2277, 0x2278, 0x2145,
+ 0x2144, 0x2273, 0x216c, 0x216d, 0x2228, 0x216e, 0x2272, 0x222b,
+ 0x222c, 0x222a, 0x222d, 0x224d, 0x224e, 0x224f, 0x225f, 0x2250,
+ 0x2260, 0x223a, 0x223b, 0x215d, 0x2265, 0x2267, 0x2167, 0x225c,
+ 0x224a, 0x224b, 0x2241, 0x2240, 0x2269, 0x226a, 0x2168, 0x2268,
+ 0x2266, 0x2262, 0x2162, 0x2261, 0x2165, 0x2166, 0x2263, 0x2264,
+ 0x223e, 0x223f, 0x223c, 0x223d, 0x225d, 0x225e, 0x2821, 0x282c,
+ 0x2822, 0x282d, 0x2823, 0x282e, 0x2824, 0x282f, 0x2826, 0x2831,
+ 0x2825, 0x2830, 0x2827, 0x283c, 0x2837, 0x2832, 0x2829, 0x283e,
+ 0x2839, 0x2834, 0x2828, 0x2838, 0x283d, 0x2833, 0x282a, 0x283a,
+ 0x283f, 0x2835, 0x282b, 0x283b, 0x2840, 0x2836, 0x2223, 0x2222,
+ 0x2225, 0x2224, 0x2227, 0x2226, 0x2221, 0x217e, 0x217b, 0x217d,
+ 0x217c, 0x227e, 0x217a, 0x2179, 0x216a, 0x2169, 0x2276, 0x2275,
+ 0x2274, 0x2121, 0x2122, 0x2123, 0x2137, 0x2139, 0x213a, 0x213b,
+ 0x2152, 0x2153, 0x2154, 0x2155, 0x2156, 0x2157, 0x2158, 0x2159,
+ 0x215a, 0x215b, 0x2229, 0x222e, 0x214c, 0x214d, 0x2141, 0x2421,
+ 0x2422, 0x2423, 0x2424, 0x2425, 0x2426, 0x2427, 0x2428, 0x2429,
+ 0x242a, 0x242b, 0x242c, 0x242d, 0x242e, 0x242f, 0x2430, 0x2431,
+ 0x2432, 0x2433, 0x2434, 0x2435, 0x2436, 0x2437, 0x2438, 0x2439,
+ 0x243a, 0x243b, 0x243c, 0x243d, 0x243e, 0x243f, 0x2440, 0x2441,
+ 0x2442, 0x2443, 0x2444, 0x2445, 0x2446, 0x2447, 0x2448, 0x2449,
+ 0x244a, 0x244b, 0x244c, 0x244d, 0x244e, 0x244f, 0x2450, 0x2451,
+ 0x2452, 0x2453, 0x2454, 0x2455, 0x2456, 0x2457, 0x2458, 0x2459,
+ 0x245a, 0x245b, 0x245c, 0x245d, 0x245e, 0x245f, 0x2460, 0x2461,
+ 0x2462, 0x2463, 0x2464, 0x2465, 0x2466, 0x2467, 0x2468, 0x2469,
+ 0x246a, 0x246b, 0x246c, 0x246d, 0x246e, 0x246f, 0x2470, 0x2471,
+ 0x2472, 0x2473, 0x212b, 0x212c, 0x2135, 0x2136, 0x2521, 0x2522,
+ 0x2523, 0x2524, 0x2525, 0x2526, 0x2527, 0x2528, 0x2529, 0x252a,
+ 0x252b, 0x252c, 0x252d, 0x252e, 0x252f, 0x2530, 0x2531, 0x2532,
+ 0x2533, 0x2534, 0x2535, 0x2536, 0x2537, 0x2538, 0x2539, 0x253a,
+ 0x253b, 0x253c, 0x253d, 0x253e, 0x253f, 0x2540, 0x2541, 0x2542,
+ 0x2543, 0x2544, 0x2545, 0x2546, 0x2547, 0x2548, 0x2549, 0x254a,
+ 0x254b, 0x254c, 0x254d, 0x254e, 0x254f, 0x2550, 0x2551, 0x2552,
+ 0x2553, 0x2554, 0x2555, 0x2556, 0x2557, 0x2558, 0x2559, 0x255a,
+ 0x255b, 0x255c, 0x255d, 0x255e, 0x255f, 0x2560, 0x2561, 0x2562,
+ 0x2563, 0x2564, 0x2565, 0x2566, 0x2567, 0x2568, 0x2569, 0x256a,
+ 0x256b, 0x256c, 0x256d, 0x256e, 0x256f, 0x2570, 0x2571, 0x2572,
+ 0x2573, 0x2574, 0x2575, 0x2576, 0x2126, 0x213c, 0x2133, 0x2134,
+ 0x306c, 0x437a, 0x3c37, 0x4b7c, 0x3e66, 0x3b30, 0x3e65, 0x323c,
+ 0x4954, 0x4d3f, 0x5022, 0x312f, 0x336e, 0x5023, 0x4024, 0x5242,
+ 0x3556, 0x4a3a, 0x3e67, 0x4e3e, 0x4a42, 0x5024, 0x4366, 0x5025,
+ 0x367a, 0x5026, 0x345d, 0x4330, 0x3c67, 0x5027, 0x5028, 0x5029,
+ 0x4735, 0x3557, 0x4737, 0x4663, 0x3843, 0x4b33, 0x6949, 0x502a,
+ 0x3e68, 0x502b, 0x3235, 0x3665, 0x3870, 0x4c69, 0x5626, 0x4d70,
+ 0x467d, 0x3425, 0x3535, 0x502c, 0x502d, 0x4e3b, 0x4d3d, 0x4168,
+ 0x502f, 0x3b76, 0x4673, 0x5032, 0x313e, 0x385f, 0x385e, 0x3066,
+ 0x4f4b, 0x4f4a, 0x3a33, 0x3021, 0x5033, 0x5034, 0x5035, 0x4b34,
+ 0x5036, 0x3872, 0x3067, 0x4b72, 0x357c, 0x357d, 0x357e, 0x4462,
+ 0x4e3c, 0x5037, 0x5038, 0x5039, 0x3f4d, 0x3d3a, 0x3f4e, 0x503e,
+ 0x503c, 0x503d, 0x3558, 0x3a23, 0x3270, 0x503b, 0x503a, 0x4a29,
+ 0x3b46, 0x3b45, 0x423e, 0x503f, 0x4955, 0x4067, 0x2138, 0x5040,
+ 0x5042, 0x4265, 0x4e61, 0x304a, 0x5041, 0x323e, 0x3644, 0x4367,
+ 0x376f, 0x5043, 0x4724, 0x346b, 0x5044, 0x304b, 0x3860, 0x346c,
+ 0x497a, 0x4832, 0x3559, 0x3271, 0x5067, 0x4541, 0x476c, 0x5046,
+ 0x483c, 0x4e62, 0x3f2d, 0x3b47, 0x3b77, 0x3240, 0x4451, 0x4322,
+ 0x504a, 0x304c, 0x4463, 0x3d3b, 0x3a34, 0x4d24, 0x424e, 0x323f,
+ 0x5049, 0x4d3e, 0x5045, 0x5047, 0x3a6e, 0x5048, 0x5524, 0x5050,
+ 0x5053, 0x5051, 0x3242, 0x4a3b, 0x504b, 0x504f, 0x3873, 0x3b48,
+ 0x3426, 0x5054, 0x504c, 0x4e63, 0x3b78, 0x504d, 0x5052, 0x5055,
+ 0x504e, 0x3621, 0x304d, 0x3622, 0x3241, 0x5525, 0x4b79, 0x496e,
+ 0x3874, 0x3f2f, 0x4e37, 0x4a58, 0x3738, 0x4225, 0x3264, 0x3d53,
+ 0x5059, 0x505e, 0x505c, 0x5057, 0x422f, 0x505a, 0x505d, 0x505b,
+ 0x4a5d, 0x5058, 0x3f2e, 0x4b73, 0x505f, 0x5060, 0x3d24, 0x506d,
+ 0x4750, 0x4936, 0x5068, 0x4a70, 0x3236, 0x506c, 0x5066, 0x506f,
+ 0x4152, 0x3844, 0x475c, 0x6047, 0x506e, 0x455d, 0x5063, 0x3876,
+ 0x3875, 0x5061, 0x3c5a, 0x5069, 0x4a6f, 0x434d, 0x5065, 0x3771,
+ 0x5062, 0x506a, 0x5064, 0x4e51, 0x506b, 0x4f41, 0x3666, 0x3770,
+ 0x5070, 0x5071, 0x5075, 0x304e, 0x4a50, 0x5074, 0x5073, 0x5077,
+ 0x5076, 0x4464, 0x3772, 0x5078, 0x3c45, 0x4226, 0x4465, 0x3676,
+ 0x5079, 0x3536, 0x507a, 0x507c, 0x4b35, 0x3766, 0x3b31, 0x4877,
+ 0x507b, 0x3a45, 0x4d43, 0x507e, 0x5123, 0x507d, 0x3a44, 0x3d7d,
+ 0x3739, 0x5124, 0x364f, 0x5121, 0x5122, 0x462f, 0x417c, 0x3623,
+ 0x4b4d, 0x5125, 0x4e3d, 0x5126, 0x5129, 0x5127, 0x414e, 0x5128,
+ 0x512a, 0x512c, 0x512b, 0x4a48, 0x3537, 0x512e, 0x512f, 0x322f,
+ 0x512d, 0x3c74, 0x5132, 0x5131, 0x5130, 0x5056, 0x5133, 0x3d7e,
+ 0x5134, 0x4d25, 0x4c59, 0x5136, 0x5135, 0x5138, 0x5137, 0x5139,
+ 0x513a, 0x3074, 0x3835, 0x373b, 0x3d3c, 0x437b, 0x3624, 0x4068,
+ 0x3877, 0x396e, 0x513c, 0x4c48, 0x4546, 0x3b79, 0x513b, 0x513d,
+ 0x455e, 0x3375, 0x513e, 0x467e, 0x4134, 0x5140, 0x5141, 0x482c,
+ 0x3878, 0x4f3b, 0x5142, 0x3626, 0x4a3c, 0x4236, 0x3671, 0x4535,
+ 0x3773, 0x5143, 0x5144, 0x4662, 0x315f, 0x5147, 0x3a7d, 0x5146,
+ 0x3a46, 0x5148, 0x666e, 0x5149, 0x4b41, 0x514a, 0x514b, 0x514c,
+ 0x3e69, 0x3c4c, 0x3427, 0x514f, 0x514d, 0x4c3d, 0x514e, 0x495a,
+ 0x5150, 0x5151, 0x5152, 0x455f, 0x5156, 0x5154, 0x5155, 0x5153,
+ 0x3a63, 0x5157, 0x4c6a, 0x4e64, 0x5158, 0x4028, 0x5159, 0x3d5a,
+ 0x515a, 0x437c, 0x4e3f, 0x4560, 0x5245, 0x515b, 0x7425, 0x3645,
+ 0x515c, 0x4b5e, 0x3d68, 0x427c, 0x515e, 0x4664, 0x515f, 0x5160,
+ 0x332e, 0x5161, 0x3627, 0x464c, 0x317a, 0x3d50, 0x4821, 0x5162,
+ 0x4561, 0x3f4f, 0x5163, 0x4a2c, 0x405a, 0x3422, 0x3429, 0x5164,
+ 0x5166, 0x373a, 0x5165, 0x4e73, 0x3d69, 0x483d, 0x4a4c, 0x5167,
+ 0x4d78, 0x5168, 0x5169, 0x457e, 0x516a, 0x4029, 0x3a7e, 0x3774,
+ 0x516b, 0x3b49, 0x396f, 0x4466, 0x516d, 0x4227, 0x3a6f, 0x516e,
+ 0x516f, 0x4130, 0x516c, 0x5171, 0x4b36, 0x3964, 0x5170, 0x3775,
+ 0x3a5e, 0x476d, 0x5174, 0x5172, 0x497b, 0x3e6a, 0x517b, 0x3364,
+ 0x5175, 0x5173, 0x414f, 0x5177, 0x5176, 0x3344, 0x3760, 0x517c,
+ 0x4e2d, 0x5178, 0x517d, 0x517a, 0x5179, 0x4e4f, 0x3879, 0x3243,
+ 0x4e74, 0x3d75, 0x4558, 0x3965, 0x5222, 0x5223, 0x4e65, 0x4f2b,
+ 0x5225, 0x387a, 0x5224, 0x332f, 0x5226, 0x4b56, 0x443c, 0x4d26,
+ 0x4a59, 0x5227, 0x7055, 0x4630, 0x5228, 0x342a, 0x4c33, 0x3e21,
+ 0x5229, 0x4a67, 0x522d, 0x402a, 0x522a, 0x3650, 0x522b, 0x342b,
+ 0x372e, 0x522e, 0x522f, 0x5230, 0x5231, 0x3c5b, 0x387b, 0x4c5e,
+ 0x4c68, 0x4677, 0x4a71, 0x5232, 0x5233, 0x5235, 0x5237, 0x5236,
+ 0x5238, 0x323d, 0x4b4c, 0x3a7c, 0x5239, 0x4159, 0x3e22, 0x3629,
+ 0x523a, 0x485b, 0x523b, 0x523c, 0x523d, 0x523e, 0x4924, 0x3668,
+ 0x3065, 0x463f, 0x523f, 0x3d3d, 0x4069, 0x5241, 0x5240, 0x3e23,
+ 0x3861, 0x5243, 0x483e, 0x5244, 0x485c, 0x4234, 0x426e, 0x3628,
+ 0x466e, 0x4331, 0x476e, 0x4b4e, 0x5246, 0x406a, 0x3735, 0x5247,
+ 0x5248, 0x312c, 0x3075, 0x346d, 0x4228, 0x3551, 0x4d71, 0x524b,
+ 0x3237, 0x524a, 0x362a, 0x524c, 0x4c71, 0x524d, 0x4e52, 0x387c,
+ 0x3836, 0x524e, 0x5250, 0x524f, 0x3f5f, 0x3139, 0x315e, 0x5251,
+ 0x5252, 0x3837, 0x5253, 0x356e, 0x3b32, 0x5254, 0x4b74, 0x3a35,
+ 0x355a, 0x4d27, 0x4150, 0x483f, 0x3c7d, 0x3d47, 0x3c68, 0x3c75,
+ 0x3d76, 0x4840, 0x5257, 0x3143, 0x4151, 0x387d, 0x3845, 0x3667,
+ 0x525b, 0x4321, 0x427e, 0x362b, 0x3e24, 0x525c, 0x525a, 0x3244,
+ 0x4266, 0x3c38, 0x3b4b, 0x3126, 0x3370, 0x3966, 0x3b4a, 0x525d,
+ 0x525e, 0x3549, 0x3346, 0x3967, 0x3548, 0x445f, 0x3125, 0x4631,
+ 0x4c3e, 0x3921, 0x4d79, 0x4547, 0x387e, 0x372f, 0x5267, 0x3663,
+ 0x4b4a, 0x485d, 0x5266, 0x345e, 0x5261, 0x5262, 0x5264, 0x5265,
+ 0x355b, 0x3f61, 0x4a2d, 0x5263, 0x525f, 0x3863, 0x5260, 0x4f24,
+ 0x4a72, 0x4468, 0x3862, 0x3970, 0x5268, 0x465d, 0x526c, 0x3c7e,
+ 0x3c76, 0x526f, 0x526d, 0x4c23, 0x526a, 0x5273, 0x526e, 0x5271,
+ 0x3846, 0x4c3f, 0x5272, 0x5274, 0x5276, 0x3a70, 0x4f42, 0x526b,
+ 0x5269, 0x5275, 0x5270, 0x5278, 0x5323, 0x527a, 0x527e, 0x5321,
+ 0x527b, 0x533e, 0x3a69, 0x3331, 0x5279, 0x5325, 0x3076, 0x5324,
+ 0x3025, 0x494a, 0x5322, 0x527c, 0x5277, 0x527d, 0x3a48, 0x5326,
+ 0x3077, 0x532f, 0x5327, 0x5328, 0x3e25, 0x4b69, 0x532d, 0x532c,
+ 0x452f, 0x532e, 0x532b, 0x3134, 0x3a36, 0x3f30, 0x5329, 0x4562,
+ 0x532a, 0x3022, 0x5334, 0x4d23, 0x3e27, 0x533a, 0x5339, 0x5330,
+ 0x4243, 0x5331, 0x426f, 0x5336, 0x3e26, 0x5333, 0x4c64, 0x373c,
+ 0x5337, 0x5338, 0x5335, 0x533b, 0x5332, 0x5341, 0x5346, 0x5342,
+ 0x533d, 0x5347, 0x4131, 0x5349, 0x3922, 0x533f, 0x437d, 0x5343,
+ 0x533c, 0x342d, 0x346e, 0x3365, 0x5344, 0x5340, 0x3776, 0x534a,
+ 0x5348, 0x4153, 0x354a, 0x362c, 0x5345, 0x3674, 0x3144, 0x534e,
+ 0x534c, 0x5427, 0x5351, 0x534b, 0x534f, 0x534d, 0x3b4c, 0x5350,
+ 0x5353, 0x5358, 0x5356, 0x5355, 0x4332, 0x3245, 0x5352, 0x5354,
+ 0x3e28, 0x3133, 0x5357, 0x325e, 0x5362, 0x3e7c, 0x535e, 0x535c,
+ 0x535d, 0x535f, 0x313d, 0x4139, 0x5359, 0x535a, 0x337a, 0x5361,
+ 0x346f, 0x5364, 0x5360, 0x5363, 0x4a2e, 0x4655, 0x4838, 0x5366,
+ 0x5365, 0x3345, 0x5367, 0x536a, 0x5369, 0x5368, 0x4739, 0x536b,
+ 0x536c, 0x536e, 0x536d, 0x5370, 0x5373, 0x5371, 0x536f, 0x5372,
+ 0x5374, 0x5375, 0x5376, 0x5377, 0x5378, 0x5145, 0x3c7c, 0x3b4d,
+ 0x3273, 0x3078, 0x4344, 0x5379, 0x3a24, 0x304f, 0x3f5e, 0x537a,
+ 0x3847, 0x3971, 0x537c, 0x537b, 0x4a60, 0x537d, 0x5421, 0x537e,
+ 0x5422, 0x5423, 0x3777, 0x3160, 0x5424, 0x5426, 0x5425, 0x5428,
+ 0x455a, 0x5429, 0x3035, 0x3a5f, 0x373d, 0x434f, 0x542a, 0x542b,
+ 0x542d, 0x542e, 0x3a64, 0x3651, 0x4b37, 0x542c, 0x542f, 0x3a41,
+ 0x3923, 0x5433, 0x3a25, 0x4333, 0x5430, 0x445a, 0x5434, 0x3f62,
+ 0x5432, 0x5435, 0x373f, 0x5436, 0x5437, 0x3924, 0x3340, 0x5439,
+ 0x543a, 0x543b, 0x5438, 0x5431, 0x543c, 0x543d, 0x4b64, 0x3e6b,
+ 0x543f, 0x5440, 0x543e, 0x5442, 0x4738, 0x3068, 0x4956, 0x5443,
+ 0x3e7d, 0x3c39, 0x475d, 0x3470, 0x3a6b, 0x4b59, 0x4632, 0x3778,
+ 0x424f, 0x5441, 0x5444, 0x4244, 0x5445, 0x5446, 0x5448, 0x4469,
+ 0x342e, 0x7421, 0x3161, 0x4a73, 0x3e6c, 0x4548, 0x3a66, 0x544e,
+ 0x4a3d, 0x4e5d, 0x3274, 0x544a, 0x413a, 0x544d, 0x4563, 0x4549,
+ 0x4564, 0x4839, 0x444d, 0x3a49, 0x5449, 0x3176, 0x4536, 0x544b,
+ 0x5447, 0x3f50, 0x544f, 0x3d4e, 0x362d, 0x5450, 0x4a68, 0x417d,
+ 0x4446, 0x5452, 0x4b4f, 0x5453, 0x5458, 0x4a2f, 0x5457, 0x5451,
+ 0x5454, 0x5456, 0x3a26, 0x4a49, 0x5459, 0x4345, 0x3275, 0x3e6d,
+ 0x545b, 0x545a, 0x3968, 0x545c, 0x545e, 0x545d, 0x5460, 0x5455,
+ 0x5462, 0x5461, 0x545f, 0x3b4e, 0x3f51, 0x4154, 0x5463, 0x403c,
+ 0x306d, 0x4764, 0x445b, 0x5465, 0x5464, 0x5466, 0x5467, 0x5468,
+ 0x5469, 0x4a51, 0x546a, 0x3246, 0x546b, 0x4d3c, 0x3330, 0x5249,
+ 0x3d48, 0x423f, 0x546c, 0x4c6b, 0x4c34, 0x546e, 0x4267, 0x4537,
+ 0x4240, 0x4957, 0x546f, 0x5470, 0x317b, 0x3c3a, 0x5471, 0x3050,
+ 0x5472, 0x5473, 0x3162, 0x3471, 0x4660, 0x4a74, 0x5477, 0x4155,
+ 0x5476, 0x3740, 0x4b5b, 0x5475, 0x4565, 0x5479, 0x5478, 0x547b,
+ 0x547a, 0x317c, 0x547c, 0x3e29, 0x547e, 0x4325, 0x547d, 0x4a33,
+ 0x3d77, 0x455b, 0x5521, 0x3925, 0x5522, 0x4721, 0x485e, 0x4c51,
+ 0x4725, 0x552b, 0x3538, 0x4d45, 0x4c2f, 0x562c, 0x5523, 0x5526,
+ 0x4245, 0x4b38, 0x454a, 0x5527, 0x4b65, 0x3a4a, 0x3e2a, 0x5528,
+ 0x3b50, 0x3b4f, 0x3039, 0x3848, 0x402b, 0x3051, 0x552c, 0x552d,
+ 0x552a, 0x3138, 0x342f, 0x5529, 0x4c45, 0x4931, 0x3028, 0x3079,
+ 0x3b51, 0x3052, 0x3023, 0x5532, 0x5530, 0x4c3c, 0x5533, 0x5531,
+ 0x552f, 0x3f31, 0x552e, 0x4a5a, 0x3864, 0x5537, 0x5538, 0x3e2b,
+ 0x5534, 0x4f2c, 0x474c, 0x5536, 0x3a27, 0x5539, 0x4958, 0x553a,
+ 0x5535, 0x4c3b, 0x475e, 0x553b, 0x4932, 0x553c, 0x5540, 0x553d,
+ 0x3247, 0x553f, 0x3c3b, 0x553e, 0x3779, 0x554c, 0x5545, 0x5542,
+ 0x4364, 0x5541, 0x5543, 0x5544, 0x5546, 0x5547, 0x3472, 0x5549,
+ 0x5548, 0x554a, 0x3e6e, 0x554d, 0x445c, 0x3145, 0x554b, 0x554e,
+ 0x554f, 0x5552, 0x5550, 0x5551, 0x3b52, 0x5553, 0x3926, 0x5554,
+ 0x3b7a, 0x4238, 0x5555, 0x5556, 0x3b5a, 0x3927, 0x4c52, 0x3528,
+ 0x3849, 0x5557, 0x3358, 0x5558, 0x4239, 0x5559, 0x5623, 0x555a,
+ 0x555b, 0x555c, 0x555e, 0x555f, 0x5560, 0x4270, 0x3127, 0x3c69,
+ 0x3042, 0x4157, 0x3430, 0x3c35, 0x3928, 0x4566, 0x3d21, 0x3431,
+ 0x4368, 0x446a, 0x3038, 0x3539, 0x4a75, 0x3c42, 0x3552, 0x406b,
+ 0x3c3c, 0x4d28, 0x5561, 0x355c, 0x3a4b, 0x3332, 0x3163, 0x3e2c,
+ 0x3248, 0x5562, 0x4d46, 0x3d49, 0x3c64, 0x5563, 0x3473, 0x4652,
+ 0x4c29, 0x5564, 0x5565, 0x4959, 0x5567, 0x3428, 0x3677, 0x5566,
+ 0x3432, 0x3f32, 0x556b, 0x3b21, 0x3249, 0x556a, 0x5568, 0x556c,
+ 0x5569, 0x472b, 0x5c4d, 0x3f33, 0x556d, 0x4e40, 0x556e, 0x5570,
+ 0x437e, 0x556f, 0x4023, 0x3b7b, 0x4250, 0x3c77, 0x4975, 0x406c,
+ 0x3c4d, 0x5571, 0x3e2d, 0x5572, 0x5573, 0x3053, 0x423a, 0x3f52,
+ 0x5574, 0x4633, 0x3e2e, 0x3e2f, 0x5575, 0x406d, 0x3e30, 0x5576,
+ 0x5577, 0x4c60, 0x5578, 0x3646, 0x3d22, 0x5579, 0x557a, 0x3c5c,
+ 0x3f2c, 0x4674, 0x3f54, 0x4878, 0x4722, 0x3649, 0x557b, 0x356f,
+ 0x557c, 0x367e, 0x464f, 0x3230, 0x3b53, 0x557d, 0x5622, 0x5621,
+ 0x367d, 0x557e, 0x4538, 0x4230, 0x454b, 0x3c48, 0x4158, 0x4d7a,
+ 0x5624, 0x5625, 0x4656, 0x3b33, 0x5627, 0x5628, 0x5629, 0x3474,
+ 0x562a, 0x562b, 0x322c, 0x413b, 0x3464, 0x562d, 0x4c28, 0x4252,
+ 0x3359, 0x562f, 0x5631, 0x345f, 0x562e, 0x5630, 0x5633, 0x5632,
+ 0x5634, 0x5635, 0x463d, 0x362e, 0x3265, 0x5636, 0x563b, 0x5639,
+ 0x4a77, 0x4a76, 0x4567, 0x5638, 0x3d54, 0x5637, 0x3f72, 0x563c,
+ 0x3a6a, 0x5642, 0x5643, 0x563d, 0x3333, 0x563e, 0x5647, 0x5646,
+ 0x5645, 0x5641, 0x5640, 0x5644, 0x4a78, 0x564b, 0x5648, 0x564a,
+ 0x4d72, 0x5649, 0x563f, 0x3f73, 0x564c, 0x3a37, 0x564d, 0x564e,
+ 0x5651, 0x5650, 0x564f, 0x4568, 0x563a, 0x5657, 0x5653, 0x5652,
+ 0x5654, 0x5655, 0x5658, 0x4e66, 0x5659, 0x5656, 0x565a, 0x3460,
+ 0x565b, 0x565d, 0x565c, 0x565e, 0x565f, 0x406e, 0x3d23, 0x3d64,
+ 0x4163, 0x3929, 0x3a38, 0x392a, 0x3570, 0x5660, 0x3a39, 0x384a,
+ 0x5661, 0x4c26, 0x4743, 0x5662, 0x392b, 0x342c, 0x4327, 0x3652,
+ 0x3b54, 0x495b, 0x4841, 0x5663, 0x3475, 0x5666, 0x4421, 0x5665,
+ 0x5664, 0x5667, 0x446b, 0x3f63, 0x3b55, 0x404a, 0x4253, 0x3522,
+ 0x4422, 0x5668, 0x5669, 0x3e6f, 0x4b39, 0x566c, 0x566b, 0x566a,
+ 0x497d, 0x5673, 0x4b5a, 0x566d, 0x566f, 0x4b6b, 0x566e, 0x5670,
+ 0x4828, 0x5671, 0x4a3e, 0x5672, 0x3433, 0x4a3f, 0x472f, 0x5674,
+ 0x5675, 0x392c, 0x3434, 0x5676, 0x3838, 0x4d44, 0x4d29, 0x3476,
+ 0x5678, 0x4423, 0x392d, 0x3e31, 0x485f, 0x3e32, 0x3d78, 0x446c,
+ 0x4a79, 0x4539, 0x392e, 0x495c, 0x5679, 0x4559, 0x3a42, 0x384b,
+ 0x446d, 0x3043, 0x3d6e, 0x392f, 0x4d47, 0x567a, 0x567b, 0x4751,
+ 0x567c, 0x4e77, 0x4f2d, 0x567e, 0x567d, 0x3347, 0x5721, 0x5724,
+ 0x5725, 0x5723, 0x4940, 0x3e33, 0x5727, 0x5726, 0x5722, 0x5728,
+ 0x5729, 0x572a, 0x572d, 0x572b, 0x572c, 0x572e, 0x3164, 0x446e,
+ 0x572f, 0x377a, 0x3276, 0x4736, 0x5730, 0x467b, 0x4a5b, 0x5731,
+ 0x4f2e, 0x5732, 0x4a40, 0x5735, 0x5021, 0x5031, 0x3c30, 0x4675,
+ 0x5736, 0x355d, 0x4424, 0x307a, 0x5737, 0x4a26, 0x3930, 0x4350,
+ 0x446f, 0x4c6f, 0x3839, 0x384c, 0x5738, 0x5739, 0x573f, 0x3c65,
+ 0x4425, 0x362f, 0x573a, 0x492b, 0x4346, 0x573b, 0x573c, 0x3630,
+ 0x573d, 0x573e, 0x5740, 0x4576, 0x5741, 0x5742, 0x5743, 0x5734,
+ 0x5733, 0x5744, 0x3741, 0x4927, 0x3a4c, 0x4937, 0x4426, 0x494b,
+ 0x5745, 0x3e34, 0x3146, 0x5746, 0x5747, 0x4c72, 0x4860, 0x574a,
+ 0x317d, 0x402c, 0x5749, 0x5748, 0x3742, 0x4254, 0x574e, 0x574c,
+ 0x574b, 0x4e27, 0x3865, 0x3d79, 0x574d, 0x454c, 0x3d3e, 0x4640,
+ 0x5751, 0x5750, 0x574f, 0x5752, 0x3866, 0x5753, 0x497c, 0x3d5b,
+ 0x5754, 0x4879, 0x4641, 0x4427, 0x4530, 0x5755, 0x352b, 0x3f34,
+ 0x492c, 0x3477, 0x4726, 0x5756, 0x3b56, 0x4b3a, 0x4b3b, 0x317e,
+ 0x575b, 0x4369, 0x5758, 0x3277, 0x582d, 0x575a, 0x4730, 0x5759,
+ 0x5757, 0x397a, 0x575d, 0x5763, 0x5769, 0x5761, 0x455c, 0x5766,
+ 0x495d, 0x5760, 0x5765, 0x4e67, 0x3b57, 0x4255, 0x575e, 0x355e,
+ 0x5768, 0x402d, 0x3165, 0x5762, 0x3278, 0x5767, 0x3631, 0x5764,
+ 0x576a, 0x576c, 0x5776, 0x5774, 0x5771, 0x5770, 0x4e78, 0x5772,
+ 0x3632, 0x3931, 0x3d7a, 0x5779, 0x576b, 0x576f, 0x575f, 0x327a,
+ 0x5773, 0x5775, 0x4351, 0x3a28, 0x3238, 0x576d, 0x5778, 0x5777,
+ 0x3633, 0x4229, 0x3366, 0x3743, 0x576e, 0x577a, 0x577d, 0x5821,
+ 0x3c3d, 0x5827, 0x4470, 0x577b, 0x5825, 0x3279, 0x5823, 0x5824,
+ 0x577e, 0x5822, 0x3867, 0x4d2a, 0x3435, 0x3159, 0x5826, 0x473a,
+ 0x302d, 0x4861, 0x575c, 0x582c, 0x5830, 0x4c65, 0x5829, 0x4569,
+ 0x582e, 0x3e70, 0x582f, 0x4657, 0x4f47, 0x582b, 0x5831, 0x397b,
+ 0x404b, 0x3054, 0x582a, 0x5828, 0x415a, 0x577c, 0x3b34, 0x4246,
+ 0x583d, 0x415b, 0x5838, 0x5835, 0x5836, 0x3c66, 0x5839, 0x583c,
+ 0x5837, 0x3d25, 0x583a, 0x5834, 0x4c7c, 0x4c7b, 0x583e, 0x583f,
+ 0x3055, 0x5833, 0x3672, 0x3026, 0x3436, 0x583b, 0x5843, 0x5842,
+ 0x5847, 0x5848, 0x5846, 0x5849, 0x5841, 0x5845, 0x584a, 0x584b,
+ 0x5840, 0x3b7c, 0x5844, 0x4256, 0x3932, 0x5832, 0x3f35, 0x5858,
+ 0x4a69, 0x584e, 0x584f, 0x5850, 0x5857, 0x5856, 0x4b7d, 0x3437,
+ 0x5854, 0x3745, 0x3334, 0x5851, 0x4e38, 0x5853, 0x3056, 0x5855,
+ 0x584c, 0x5852, 0x5859, 0x3744, 0x584d, 0x4d5d, 0x4d2b, 0x585c,
+ 0x5860, 0x417e, 0x4e79, 0x5861, 0x585e, 0x585b, 0x585a, 0x585f,
+ 0x4a30, 0x4634, 0x3746, 0x5862, 0x585d, 0x5863, 0x377b, 0x3231,
+ 0x586b, 0x3438, 0x5869, 0x586a, 0x3a29, 0x5868, 0x5866, 0x5865,
+ 0x586c, 0x5864, 0x586e, 0x327b, 0x5870, 0x586f, 0x4428, 0x5873,
+ 0x5871, 0x5867, 0x377c, 0x5872, 0x5876, 0x5875, 0x5877, 0x5874,
+ 0x5878, 0x5879, 0x587a, 0x4a6a, 0x587c, 0x587b, 0x3d3f, 0x402e,
+ 0x3266, 0x327c, 0x587d, 0x303f, 0x404c, 0x587e, 0x6c43, 0x5921,
+ 0x3761, 0x5922, 0x406f, 0x5923, 0x5924, 0x353a, 0x5925, 0x5926,
+ 0x5927, 0x4257, 0x384d, 0x4c61, 0x4b3c, 0x3d6a, 0x5928, 0x4070,
+ 0x6e3d, 0x4862, 0x3c6a, 0x3a4d, 0x5929, 0x4247, 0x4a27, 0x4271,
+ 0x592c, 0x592a, 0x592d, 0x592b, 0x592e, 0x4a31, 0x3037, 0x495e,
+ 0x4863, 0x592f, 0x5932, 0x3e35, 0x353b, 0x5930, 0x5937, 0x3e36,
+ 0x5931, 0x4744, 0x4d5e, 0x5933, 0x5934, 0x5938, 0x456a, 0x5935,
+ 0x3933, 0x405e, 0x5946, 0x4834, 0x4272, 0x4864, 0x5a2d, 0x4a7a,
+ 0x4471, 0x4b75, 0x593b, 0x3221, 0x436a, 0x5944, 0x4334, 0x593e,
+ 0x5945, 0x5940, 0x5947, 0x5943, 0x5942, 0x476f, 0x593c, 0x327d,
+ 0x593a, 0x3571, 0x4273, 0x5936, 0x5939, 0x3934, 0x405b, 0x3e37,
+ 0x5941, 0x4752, 0x3572, 0x3348, 0x3367, 0x3f21, 0x5949, 0x594e,
+ 0x594a, 0x377d, 0x594f, 0x3b22, 0x3969, 0x3d26, 0x593d, 0x3b7d,
+ 0x594c, 0x3b58, 0x594d, 0x3044, 0x5948, 0x4429, 0x3573, 0x3634,
+ 0x594b, 0x3027, 0x3a43, 0x3f36, 0x4472, 0x4854, 0x5951, 0x415e,
+ 0x422a, 0x3b2b, 0x5952, 0x5954, 0x5950, 0x4a61, 0x443d, 0x415c,
+ 0x4a7b, 0x3c4e, 0x5960, 0x595f, 0x3f78, 0x377e, 0x5959, 0x3e39,
+ 0x4668, 0x4731, 0x5957, 0x415d, 0x3c78, 0x595c, 0x3e38, 0x5956,
+ 0x595b, 0x4753, 0x5955, 0x3721, 0x335d, 0x595d, 0x4e2b, 0x3a4e,
+ 0x4335, 0x595a, 0x405c, 0x3935, 0x3f64, 0x3166, 0x413c, 0x5958,
+ 0x3545, 0x3747, 0x444f, 0x595e, 0x415f, 0x5961, 0x5963, 0x4237,
+ 0x5969, 0x5964, 0x5966, 0x4941, 0x4473, 0x5967, 0x4d2c, 0x4d48,
+ 0x3439, 0x302e, 0x5965, 0x5962, 0x3478, 0x3167, 0x5968, 0x4d49,
+ 0x596c, 0x423b, 0x5973, 0x596d, 0x596a, 0x5971, 0x5953, 0x596e,
+ 0x5972, 0x4842, 0x456b, 0x596b, 0x596f, 0x3748, 0x3a71, 0x405d,
+ 0x5977, 0x4526, 0x5974, 0x4b60, 0x5975, 0x5976, 0x4c4e, 0x4022,
+ 0x3762, 0x597d, 0x3b35, 0x597a, 0x5979, 0x4732, 0x4635, 0x4531,
+ 0x597b, 0x597c, 0x496f, 0x4745, 0x3b23, 0x4071, 0x4b50, 0x3349,
+ 0x5a25, 0x597e, 0x4d4a, 0x5a27, 0x5a23, 0x5a24, 0x4160, 0x5a22,
+ 0x593f, 0x5a26, 0x5a21, 0x5a2b, 0x5a2c, 0x4527, 0x5a2e, 0x3b24,
+ 0x5a29, 0x353c, 0x5a2f, 0x5a28, 0x5a33, 0x5a32, 0x5a31, 0x5a34,
+ 0x5a36, 0x3e71, 0x5a35, 0x5a39, 0x5a37, 0x5a38, 0x5970, 0x5a3b,
+ 0x5a3a, 0x5978, 0x5a3c, 0x5a30, 0x3b59, 0x5a3d, 0x5a3e, 0x5a40,
+ 0x5a3f, 0x5a41, 0x327e, 0x3936, 0x4a7c, 0x402f, 0x384e, 0x5a43,
+ 0x5a46, 0x4952, 0x355f, 0x5a45, 0x5a44, 0x4754, 0x5a47, 0x3635,
+ 0x5a49, 0x5a48, 0x343a, 0x3b36, 0x4658, 0x3749, 0x3f74, 0x5a4a,
+ 0x4030, 0x4528, 0x495f, 0x5a4b, 0x5a4c, 0x5a4d, 0x4a38, 0x555d,
+ 0x4046, 0x494c, 0x3a58, 0x4865, 0x4843, 0x454d, 0x4e41, 0x5a4f,
+ 0x3c50, 0x5a50, 0x3036, 0x3654, 0x404d, 0x4960, 0x5a51, 0x3b42,
+ 0x4347, 0x3b5b, 0x3f37, 0x5a52, 0x4a7d, 0x3177, 0x3b5c, 0x5a55,
+ 0x5a53, 0x5a56, 0x4e39, 0x5a54, 0x407b, 0x5a57, 0x4232, 0x5a58,
+ 0x347a, 0x5a5a, 0x5a59, 0x5a5b, 0x5a5c, 0x347b, 0x467c, 0x4336,
+ 0x356c, 0x3b5d, 0x4161, 0x3d5c, 0x3030, 0x5a5d, 0x3222, 0x5a61,
+ 0x3937, 0x5a60, 0x3a2b, 0x3e3a, 0x5a5f, 0x3e3b, 0x4c40, 0x3a2a,
+ 0x3057, 0x404e, 0x5a66, 0x4031, 0x3147, 0x3d55, 0x4b66, 0x3a72,
+ 0x3e3c, 0x4027, 0x5a65, 0x5a63, 0x5a64, 0x436b, 0x5b26, 0x5a6a,
+ 0x3b7e, 0x3938, 0x5a68, 0x5a69, 0x3f38, 0x5a67, 0x3b2f, 0x5a6c,
+ 0x5a6b, 0x5a70, 0x5a71, 0x5a6d, 0x3322, 0x5a6e, 0x5a6f, 0x4855,
+ 0x4961, 0x374a, 0x5a72, 0x4032, 0x3e3d, 0x4352, 0x3647, 0x5a73,
+ 0x5a77, 0x324b, 0x5a74, 0x5a76, 0x5a75, 0x3d6b, 0x4348, 0x3045,
+ 0x5a78, 0x5a79, 0x442a, 0x4e71, 0x3b43, 0x4a6b, 0x4b3d, 0x5b22,
+ 0x5a7b, 0x5a7e, 0x5a7d, 0x5a7a, 0x5b21, 0x465e, 0x5a7c, 0x5b23,
+ 0x3d6c, 0x5b24, 0x4d4b, 0x4778, 0x5b25, 0x5b27, 0x5b28, 0x5b29,
+ 0x364a, 0x3148, 0x3939, 0x5b2a, 0x5b2b, 0x3d71, 0x4162, 0x5258,
+ 0x413e, 0x413d, 0x4258, 0x3a47, 0x5072, 0x376e, 0x4d2d, 0x4a7e,
+ 0x497e, 0x5b2c, 0x3a73, 0x443f, 0x5b2d, 0x4f2f, 0x4b3e, 0x442b,
+ 0x5b2e, 0x347c, 0x5b2f, 0x5b30, 0x4c5a, 0x4c24, 0x4b76, 0x4b5c,
+ 0x3b25, 0x5b32, 0x3c6b, 0x4b51, 0x5b34, 0x5b37, 0x5b36, 0x3479,
+ 0x3560, 0x5b33, 0x5b35, 0x5b38, 0x3f79, 0x4d7b, 0x3049, 0x3a60,
+ 0x423c, 0x3c5d, 0x3e73, 0x5b3b, 0x454e, 0x5b39, 0x422b, 0x5b3a,
+ 0x3e72, 0x4c5d, 0x5b3c, 0x5b3d, 0x4d68, 0x5b42, 0x393a, 0x4755,
+ 0x5b3f, 0x456c, 0x5a5e, 0x5a62, 0x354f, 0x4747, 0x5b41, 0x3e3e,
+ 0x4844, 0x5b47, 0x487a, 0x5b3e, 0x5b44, 0x5b43, 0x404f, 0x4b6d,
+ 0x4e53, 0x4b67, 0x324c, 0x3b5e, 0x4f48, 0x5b46, 0x3f75, 0x5b45,
+ 0x5b40, 0x384f, 0x5b4c, 0x5b4a, 0x324d, 0x5b48, 0x5b4e, 0x5b54,
+ 0x4248, 0x4a41, 0x5b56, 0x4922, 0x5b55, 0x4770, 0x4b3f, 0x343b,
+ 0x4077, 0x3d40, 0x4453, 0x4d2e, 0x5b51, 0x5b50, 0x5b52, 0x5b4f,
+ 0x5b57, 0x5b4d, 0x5b4b, 0x5b53, 0x5b49, 0x436c, 0x4c78, 0x3c46,
+ 0x3a74, 0x3a3a, 0x4b6f, 0x3341, 0x444e, 0x464a, 0x3149, 0x4072,
+ 0x4034, 0x372a, 0x5b59, 0x393b, 0x337c, 0x5b5b, 0x3374, 0x5b61,
+ 0x5b5e, 0x4073, 0x334b, 0x3a2c, 0x334a, 0x3a4f, 0x5b5c, 0x3765,
+ 0x374b, 0x456d, 0x5b5a, 0x3046, 0x5b5d, 0x5b5f, 0x364d, 0x372c,
+ 0x343c, 0x354b, 0x5b62, 0x3a79, 0x4b71, 0x3b37, 0x5b63, 0x4930,
+ 0x5b6f, 0x3233, 0x5b64, 0x5b75, 0x5b65, 0x4e42, 0x5b6c, 0x475f,
+ 0x5b74, 0x5b67, 0x3034, 0x5b69, 0x393c, 0x5b6b, 0x5b6a, 0x5b66,
+ 0x5b71, 0x3e3f, 0x546d, 0x3868, 0x4d7c, 0x5b68, 0x4474, 0x3323,
+ 0x3a2d, 0x5b60, 0x5b70, 0x3361, 0x5b6e, 0x5b72, 0x456e, 0x347e,
+ 0x5c32, 0x4c49, 0x5b77, 0x347d, 0x5b7e, 0x4b40, 0x5c21, 0x5c23,
+ 0x5c27, 0x5b79, 0x432a, 0x456f, 0x5c2b, 0x5b7c, 0x5c28, 0x5c22,
+ 0x3f39, 0x5c2c, 0x4033, 0x5c2a, 0x343d, 0x4f50, 0x5b76, 0x5c26,
+ 0x3058, 0x5b78, 0x4c3a, 0x5b7d, 0x3f22, 0x4447, 0x5b73, 0x5c25,
+ 0x3f7a, 0x5c2f, 0x3371, 0x3821, 0x5c31, 0x5b7a, 0x5c30, 0x5c29,
+ 0x5b7b, 0x5c2d, 0x5c2e, 0x5c3f, 0x464e, 0x5c24, 0x5c3b, 0x5c3d,
+ 0x4458, 0x4d4c, 0x4976, 0x5c38, 0x424a, 0x5c3e, 0x413f, 0x5c35,
+ 0x5c42, 0x5c41, 0x466f, 0x5c40, 0x466a, 0x5c44, 0x5c37, 0x3648,
+ 0x5c3a, 0x3d5d, 0x4760, 0x5c3c, 0x364b, 0x5c34, 0x5c36, 0x5c33,
+ 0x4f30, 0x335a, 0x5c39, 0x5c43, 0x3335, 0x3a67, 0x315d, 0x5c54,
+ 0x4f31, 0x5c57, 0x3f3a, 0x5c56, 0x5c55, 0x5c52, 0x5c46, 0x5c63,
+ 0x5c45, 0x5c58, 0x5c50, 0x5c4b, 0x5c48, 0x5c49, 0x5c51, 0x7422,
+ 0x5c4e, 0x393d, 0x4448, 0x4164, 0x5c4c, 0x5c47, 0x5c4a, 0x4d4d,
+ 0x4b6a, 0x5c4f, 0x5c59, 0x5c61, 0x5c5a, 0x5c67, 0x5c65, 0x5c60,
+ 0x5c5f, 0x4450, 0x4165, 0x5c5d, 0x5c5b, 0x5c62, 0x5c68, 0x4875,
+ 0x5c6e, 0x5c69, 0x5c6c, 0x5c66, 0x4374, 0x4938, 0x5c5c, 0x5c64,
+ 0x3e40, 0x4c4f, 0x5c78, 0x5c6b, 0x3822, 0x3223, 0x335f, 0x5c53,
+ 0x3e41, 0x5c70, 0x5c77, 0x3c79, 0x3372, 0x432e, 0x5c6d, 0x5c72,
+ 0x5c76, 0x3636, 0x354c, 0x5c74, 0x3521, 0x464b, 0x5c73, 0x5c75,
+ 0x5c6f, 0x5c71, 0x3360, 0x4349, 0x5c7c, 0x5c7a, 0x3869, 0x5c79,
+ 0x5d21, 0x5b58, 0x5c7b, 0x5c7d, 0x5c7e, 0x5d2c, 0x5d28, 0x5b6d,
+ 0x5d27, 0x5d26, 0x5d23, 0x5c6a, 0x5d25, 0x5d24, 0x5d2a, 0x4f26,
+ 0x5d2d, 0x367b, 0x5d29, 0x5d2b, 0x4827, 0x5d2e, 0x5d32, 0x5d2f,
+ 0x4d73, 0x5d30, 0x5c5e, 0x5d33, 0x5d34, 0x3135, 0x5d36, 0x3767,
+ 0x3c21, 0x3655, 0x3224, 0x4d5f, 0x5d38, 0x5d37, 0x5d3a, 0x353d,
+ 0x3656, 0x343e, 0x5d3d, 0x5d3c, 0x5d3e, 0x324e, 0x4337, 0x5d3f,
+ 0x343f, 0x5d41, 0x5d40, 0x5d42, 0x5d43, 0x5d44, 0x3b5f, 0x4035,
+ 0x3a21, 0x4970, 0x4a62, 0x4f44, 0x3b75, 0x3a50, 0x4e72, 0x5d45,
+ 0x5d46, 0x3b60, 0x5d47, 0x5d48, 0x5d4a, 0x5d49, 0x4b58, 0x3d5e,
+ 0x3c6c, 0x3b44, 0x5d4b, 0x5d4d, 0x3f23, 0x5d4c, 0x5d4e, 0x5d4f,
+ 0x5d50, 0x5d51, 0x5d52, 0x5d54, 0x5d53, 0x5d55, 0x3225, 0x434a,
+ 0x5d56, 0x3b26, 0x334c, 0x5d57, 0x4542, 0x544c, 0x3523, 0x5d58,
+ 0x5d59, 0x4a6c, 0x4b68, 0x4647, 0x5d5a, 0x4866, 0x487b, 0x4c53,
+ 0x5d5b, 0x5d5d, 0x5d5c, 0x5d5f, 0x5d5e, 0x5d61, 0x3b61, 0x4c31,
+ 0x5d62, 0x5d63, 0x3524, 0x5d64, 0x5d66, 0x5d65, 0x3f65, 0x4939,
+ 0x314a, 0x4845, 0x4475, 0x3d41, 0x3561, 0x4846, 0x3c2e, 0x5d68,
+ 0x3440, 0x3178, 0x4672, 0x5d67, 0x393e, 0x4353, 0x5d69, 0x5d71,
+ 0x5d6a, 0x4241, 0x3562, 0x5d72, 0x3768, 0x3525, 0x5d70, 0x5d6e,
+ 0x5d6b, 0x4d60, 0x4440, 0x4659, 0x5d6c, 0x5d74, 0x5d73, 0x3723,
+ 0x322d, 0x3a3b, 0x5d6d, 0x5d6f, 0x4b57, 0x4274, 0x4b77, 0x5d7c,
+ 0x5d7d, 0x324f, 0x4a28, 0x4c7d, 0x5e21, 0x3c23, 0x3e42, 0x5d78,
+ 0x5d7e, 0x3168, 0x3637, 0x5d75, 0x5d7a, 0x4074, 0x4771, 0x4867,
+ 0x5d77, 0x4b21, 0x5d79, 0x5e24, 0x5e22, 0x5d7b, 0x4b22, 0x4748,
+ 0x3563, 0x4525, 0x436d, 0x5e25, 0x5e23, 0x4259, 0x5d76, 0x314b,
+ 0x4d4e, 0x5e30, 0x5e2f, 0x4076, 0x5e2c, 0x4d6c, 0x4636, 0x5e26,
+ 0x4445, 0x314c, 0x393f, 0x5e29, 0x3d27, 0x5e2e, 0x5e2d, 0x5e28,
+ 0x5e2b, 0x3368, 0x5e2a, 0x4749, 0x4e2e, 0x3e74, 0x4075, 0x5e36,
+ 0x5e34, 0x494d, 0x5e31, 0x5e33, 0x313a, 0x3940, 0x4f32, 0x333d,
+ 0x4962, 0x4d61, 0x3324, 0x3f3b, 0x5e35, 0x5e3a, 0x3e43, 0x4d30,
+ 0x5e37, 0x5e32, 0x5e38, 0x4e5e, 0x4573, 0x4642, 0x3336, 0x3155,
+ 0x5e3e, 0x5e41, 0x4e43, 0x4d64, 0x5e48, 0x5e42, 0x5e3f, 0x4e54,
+ 0x5e45, 0x3d4a, 0x5e47, 0x5e4c, 0x4571, 0x5e4a, 0x5e44, 0x4338,
+ 0x5e4b, 0x5e40, 0x5e46, 0x5e4d, 0x307c, 0x5e43, 0x5e4e, 0x3f3c,
+ 0x3d5f, 0x4a25, 0x3a2e, 0x5e3b, 0x5e49, 0x453a, 0x4036, 0x3369,
+ 0x3a51, 0x3e44, 0x5e3d, 0x3d42, 0x374c, 0x5e3c, 0x5e52, 0x3d6d,
+ 0x383a, 0x5e61, 0x5e5b, 0x3574, 0x454f, 0x5e56, 0x5e5f, 0x302f,
+ 0x3132, 0x3239, 0x5e58, 0x422c, 0x5e4f, 0x5e51, 0x3941, 0x5e62,
+ 0x5e5d, 0x5e55, 0x5e5c, 0x4c2b, 0x5e5a, 0x5e5e, 0x3850, 0x3e45,
+ 0x4339, 0x5e54, 0x4d2f, 0x5e57, 0x5e50, 0x4572, 0x5e53, 0x5e59,
+ 0x4f51, 0x3c3e, 0x4b7e, 0x5e63, 0x482e, 0x5e6f, 0x383b, 0x3d60,
+ 0x5e65, 0x4e2f, 0x3942, 0x5e72, 0x306e, 0x5e70, 0x5e64, 0x5e6a,
+ 0x5e6c, 0x4d4f, 0x5e67, 0x452e, 0x5e69, 0x5e71, 0x5e6b, 0x4c47,
+ 0x5e66, 0x3c22, 0x5e7e, 0x336a, 0x5e68, 0x5e6d, 0x5e6e, 0x426c,
+ 0x425a, 0x5e76, 0x5e7c, 0x5e7a, 0x4529, 0x5f23, 0x5e77, 0x5e78,
+ 0x5e60, 0x3579, 0x493a, 0x3c3f, 0x3977, 0x4f33, 0x5e74, 0x5f22,
+ 0x3169, 0x4166, 0x4779, 0x3441, 0x4e7a, 0x4c21, 0x4452, 0x5e7b,
+ 0x5e7d, 0x4132, 0x5f21, 0x5e79, 0x5e73, 0x3443, 0x3769, 0x5f2f,
+ 0x5f2a, 0x4078, 0x3363, 0x3d61, 0x5f33, 0x5f2c, 0x442c, 0x5f29,
+ 0x4459, 0x5f4c, 0x5f26, 0x5f25, 0x5f2e, 0x5f28, 0x5f27, 0x5f2d,
+ 0x4021, 0x5f24, 0x5f30, 0x5f31, 0x3442, 0x5f36, 0x5f35, 0x5f37,
+ 0x5f3a, 0x4543, 0x5f34, 0x5f38, 0x3763, 0x4279, 0x5f32, 0x473b,
+ 0x5f39, 0x5f3e, 0x5f3c, 0x5f3f, 0x5f42, 0x5f3b, 0x396a, 0x4728,
+ 0x5e39, 0x4d74, 0x5f3d, 0x5f41, 0x4275, 0x5f40, 0x5f2b, 0x6f69,
+ 0x5f45, 0x5f49, 0x5f47, 0x5f43, 0x5f44, 0x5f48, 0x5f46, 0x494e,
+ 0x5f4e, 0x5f4b, 0x5f4a, 0x5f4d, 0x4654, 0x5f4f, 0x4375, 0x426d,
+ 0x4025, 0x5f50, 0x5f52, 0x5f51, 0x5e75, 0x5f53, 0x4667, 0x5f54,
+ 0x3250, 0x4574, 0x3325, 0x3564, 0x3c5e, 0x3a52, 0x4f27, 0x3f66,
+ 0x316a, 0x5f56, 0x5f55, 0x5f59, 0x433a, 0x5f5c, 0x5f57, 0x5f5b,
+ 0x5f5a, 0x4540, 0x3059, 0x4e75, 0x5f5e, 0x3128, 0x5f60, 0x5f5f,
+ 0x5f5d, 0x5f58, 0x4b23, 0x5f62, 0x5f61, 0x316b, 0x5f64, 0x4a32,
+ 0x5f63, 0x4c35, 0x3e47, 0x4133, 0x3e46, 0x4e7b, 0x5f6a, 0x4079,
+ 0x5f66, 0x5f6b, 0x316c, 0x5f69, 0x4761, 0x5f65, 0x5f68, 0x3e48,
+ 0x4851, 0x5f6c, 0x3c51, 0x407a, 0x5f6f, 0x5f67, 0x3727, 0x5f6d,
+ 0x4d50, 0x5f70, 0x7426, 0x3d4f, 0x5f71, 0x5f72, 0x472e, 0x5f74,
+ 0x5f75, 0x4733, 0x4575, 0x5f77, 0x5f79, 0x4e55, 0x5f76, 0x5f78,
+ 0x316d, 0x5f73, 0x535b, 0x5f7a, 0x4167, 0x3b38, 0x5f7c, 0x5f7b,
+ 0x3f24, 0x5259, 0x5f7d, 0x6021, 0x5f6e, 0x5f7e, 0x6022, 0x477a,
+ 0x6023, 0x6024, 0x6025, 0x6026, 0x445e, 0x6028, 0x6027, 0x6029,
+ 0x602a, 0x3c5f, 0x4963, 0x4c6c, 0x602b, 0x602c, 0x4156, 0x3c24,
+ 0x602d, 0x602e, 0x602f, 0x4a52, 0x4847, 0x6030, 0x4757, 0x442d,
+ 0x6031, 0x3267, 0x356d, 0x4c46, 0x4c36, 0x3234, 0x4f34, 0x4b52,
+ 0x4a2a, 0x4037, 0x6032, 0x4643, 0x3823, 0x6033, 0x3a54, 0x6035,
+ 0x6034, 0x6036, 0x6037, 0x6038, 0x353e, 0x6039, 0x603a, 0x3824,
+ 0x4848, 0x603c, 0x3e75, 0x603b, 0x3638, 0x603d, 0x603f, 0x603e,
+ 0x6040, 0x3851, 0x6041, 0x3669, 0x4140, 0x397d, 0x6043, 0x6044,
+ 0x6042, 0x3c6d, 0x4648, 0x3639, 0x6046, 0x432c, 0x6045, 0x4f35,
+ 0x4762, 0x6049, 0x604b, 0x6048, 0x4c54, 0x604a, 0x604c, 0x4e44,
+ 0x6050, 0x604f, 0x4376, 0x472d, 0x3825, 0x604e, 0x604d, 0x4d31,
+ 0x4d32, 0x6051, 0x316e, 0x3976, 0x3b62, 0x6052, 0x6053, 0x6055,
+ 0x3d43, 0x6057, 0x6056, 0x6058, 0x334d, 0x605a, 0x6059, 0x605c,
+ 0x605b, 0x383c, 0x4e28, 0x364c, 0x3226, 0x366a, 0x3461, 0x4e68,
+ 0x605e, 0x6060, 0x6061, 0x3251, 0x605d, 0x3b39, 0x4441, 0x605f,
+ 0x6064, 0x3c6e, 0x6062, 0x373e, 0x4849, 0x6063, 0x607e, 0x6069,
+ 0x383d, 0x3565, 0x6066, 0x4d7d, 0x4e30, 0x4276, 0x6068, 0x606a,
+ 0x4e56, 0x3657, 0x487c, 0x474a, 0x606b, 0x606d, 0x6070, 0x606c,
+ 0x606f, 0x386a, 0x314d, 0x6071, 0x3f70, 0x606e, 0x4e5c, 0x6074,
+ 0x7424, 0x6072, 0x6075, 0x6067, 0x6073, 0x3a3c, 0x6076, 0x6077,
+ 0x4d7e, 0x6078, 0x6079, 0x6065, 0x607a, 0x3444, 0x3c25, 0x607b,
+ 0x607c, 0x607d, 0x313b, 0x6121, 0x493b, 0x6122, 0x3424, 0x6123,
+ 0x6124, 0x6125, 0x6127, 0x6128, 0x6126, 0x4953, 0x612a, 0x6129,
+ 0x612c, 0x612b, 0x612d, 0x612e, 0x6130, 0x612f, 0x3979, 0x6132,
+ 0x6131, 0x3445, 0x3f53, 0x453c, 0x6133, 0x4038, 0x3b3a, 0x3179,
+ 0x6134, 0x4d51, 0x4a63, 0x6135, 0x4544, 0x4d33, 0x3943, 0x3f3d,
+ 0x434b, 0x5234, 0x442e, 0x3268, 0x6136, 0x6137, 0x613c, 0x613a,
+ 0x6139, 0x5a42, 0x3326, 0x6138, 0x305a, 0x482a, 0x484a, 0x4e31,
+ 0x613d, 0x613b, 0x435c, 0x4026, 0x482b, 0x492d, 0x613f, 0x4e2c,
+ 0x374d, 0x6140, 0x613e, 0x4856, 0x6141, 0x6142, 0x305b, 0x3e76,
+ 0x6147, 0x6144, 0x466d, 0x6143, 0x3526, 0x614a, 0x6145, 0x6146,
+ 0x6149, 0x6148, 0x4925, 0x4142, 0x4141, 0x353f, 0x614b, 0x614c,
+ 0x614d, 0x614f, 0x614e, 0x3156, 0x6157, 0x4868, 0x6151, 0x6153,
+ 0x6155, 0x3f3e, 0x6156, 0x6154, 0x3c40, 0x6150, 0x6152, 0x4942,
+ 0x3e49, 0x6159, 0x6158, 0x615a, 0x3c26, 0x3a2f, 0x4577, 0x615b,
+ 0x444b, 0x615d, 0x4e21, 0x615c, 0x4169, 0x6162, 0x6164, 0x6165,
+ 0x4354, 0x6163, 0x6160, 0x615e, 0x615f, 0x6161, 0x6168, 0x6166,
+ 0x6167, 0x6169, 0x616b, 0x616c, 0x616d, 0x616e, 0x616a, 0x6170,
+ 0x616f, 0x6171, 0x4e45, 0x6174, 0x6172, 0x6173, 0x3462, 0x4c7e,
+ 0x4a4a, 0x6176, 0x6175, 0x6177, 0x6178, 0x617c, 0x6179, 0x617a,
+ 0x617b, 0x617d, 0x617e, 0x6221, 0x6222, 0x6223, 0x482f, 0x4550,
+ 0x6224, 0x4772, 0x4934, 0x6225, 0x6226, 0x452a, 0x3327, 0x3944,
+ 0x6227, 0x6228, 0x6229, 0x3b29, 0x622b, 0x622a, 0x622c, 0x622d,
+ 0x4869, 0x622e, 0x622f, 0x7369, 0x6230, 0x6231, 0x6232, 0x3b2e,
+ 0x6233, 0x4756, 0x4b5f, 0x314e, 0x3157, 0x6234, 0x6236, 0x6235,
+ 0x4570, 0x4039, 0x5d39, 0x6237, 0x4c41, 0x6238, 0x3446, 0x4857,
+ 0x6239, 0x623a, 0x623b, 0x4c5c, 0x4c55, 0x443e, 0x416a, 0x623d,
+ 0x3d62, 0x3e4a, 0x6240, 0x623f, 0x623e, 0x487d, 0x3447, 0x3829,
+ 0x6246, 0x6243, 0x3f3f, 0x4c32, 0x6242, 0x6244, 0x6245, 0x6241,
+ 0x6247, 0x6248, 0x442f, 0x3463, 0x4365, 0x6249, 0x624a, 0x624d,
+ 0x3f67, 0x4644, 0x624e, 0x4b53, 0x624b, 0x624c, 0x6251, 0x6250,
+ 0x624f, 0x6253, 0x6252, 0x6254, 0x6256, 0x6255, 0x4a4d, 0x3d56,
+ 0x4e46, 0x6257, 0x4637, 0x6258, 0x6259, 0x625d, 0x625b, 0x625c,
+ 0x625a, 0x625e, 0x625f, 0x6260, 0x6261, 0x4c37, 0x6262, 0x4c70,
+ 0x6263, 0x434e, 0x476a, 0x366b, 0x433b, 0x6264, 0x363a, 0x4050,
+ 0x6265, 0x3a3d, 0x6266, 0x6267, 0x3826, 0x3a55, 0x6269, 0x4556,
+ 0x3a56, 0x354e, 0x4b24, 0x474b, 0x4557, 0x395c, 0x626b, 0x3e4b,
+ 0x4e32, 0x3945, 0x3827, 0x4823, 0x626d, 0x626f, 0x386b, 0x626e,
+ 0x4476, 0x6271, 0x3337, 0x626c, 0x486a, 0x3130, 0x3a6c, 0x4f52,
+ 0x6270, 0x6272, 0x4a4b, 0x4059, 0x6274, 0x6275, 0x6273, 0x334e,
+ 0x627b, 0x627a, 0x3c27, 0x627c, 0x6277, 0x627d, 0x6278, 0x4858,
+ 0x6276, 0x6279, 0x6322, 0x6321, 0x4b61, 0x627e, 0x306b, 0x6324,
+ 0x6323, 0x3e4c, 0x6325, 0x4143, 0x6327, 0x6326, 0x6328, 0x6268,
+ 0x626a, 0x632a, 0x6329, 0x3c28, 0x4e69, 0x3c52, 0x632b, 0x3737,
+ 0x3540, 0x3527, 0x3b63, 0x4d34, 0x6331, 0x6330, 0x4144, 0x632d,
+ 0x632f, 0x3d4b, 0x3f40, 0x632e, 0x632c, 0x472a, 0x3e4d, 0x493c,
+ 0x3a57, 0x4578, 0x6332, 0x6333, 0x6349, 0x3658, 0x4f3d, 0x4135,
+ 0x6334, 0x3252, 0x4477, 0x4a21, 0x6335, 0x357a, 0x6336, 0x6338,
+ 0x6339, 0x4729, 0x633a, 0x633b, 0x633c, 0x3659, 0x3253, 0x4645,
+ 0x3d28, 0x3b64, 0x633d, 0x3d29, 0x324a, 0x4943, 0x633e, 0x486b,
+ 0x4145, 0x6341, 0x6342, 0x4769, 0x3f41, 0x633f, 0x4361, 0x6340,
+ 0x3e4e, 0x305c, 0x3529, 0x6343, 0x4478, 0x6344, 0x4047, 0x4c2d,
+ 0x4923, 0x6345, 0x6346, 0x4355, 0x4e47, 0x6348, 0x6347, 0x3c6f,
+ 0x634a, 0x3070, 0x634d, 0x634b, 0x3254, 0x374e, 0x634c, 0x3946,
+ 0x3972, 0x4a66, 0x634e, 0x4b54, 0x6350, 0x4051, 0x314f, 0x323a,
+ 0x302c, 0x634f, 0x6351, 0x6352, 0x3e77, 0x6353, 0x334f, 0x6355,
+ 0x376a, 0x3566, 0x6356, 0x3675, 0x6357, 0x407c, 0x464d, 0x4060,
+ 0x3a75, 0x6358, 0x4362, 0x416b, 0x635a, 0x635c, 0x6359, 0x635b,
+ 0x3722, 0x635d, 0x3726, 0x3567, 0x4d52, 0x635f, 0x6360, 0x312e,
+ 0x6363, 0x3376, 0x6362, 0x6361, 0x6365, 0x635e, 0x6366, 0x4e29,
+ 0x6367, 0x6368, 0x5474, 0x636a, 0x6369, 0x636b, 0x636c, 0x4e35,
+ 0x636d, 0x706f, 0x3e4f, 0x636e, 0x636f, 0x3d57, 0x4638, 0x6370,
+ 0x4328, 0x6371, 0x433c, 0x6372, 0x3625, 0x513f, 0x435d, 0x3c33,
+ 0x3448, 0x6373, 0x6422, 0x6376, 0x3568, 0x6375, 0x6424, 0x6374,
+ 0x3e50, 0x6378, 0x6379, 0x452b, 0x637a, 0x335e, 0x3f5a, 0x4964,
+ 0x637c, 0x4268, 0x6377, 0x637b, 0x637d, 0x3a7b, 0x6426, 0x492e,
+ 0x4826, 0x4579, 0x365a, 0x6425, 0x6423, 0x4835, 0x637e, 0x435e,
+ 0x457b, 0x457a, 0x3a76, 0x6438, 0x6428, 0x642a, 0x642d, 0x642e,
+ 0x642b, 0x642c, 0x6429, 0x6427, 0x6421, 0x4a4f, 0x3255, 0x6435,
+ 0x6432, 0x6437, 0x6436, 0x4773, 0x4c27, 0x3b3b, 0x6430, 0x6439,
+ 0x6434, 0x6433, 0x642f, 0x6431, 0x3449, 0x433d, 0x407d, 0x4822,
+ 0x643e, 0x4824, 0x4061, 0x643b, 0x484f, 0x643f, 0x4a53, 0x435b,
+ 0x643a, 0x643c, 0x643d, 0x6440, 0x3c44, 0x4646, 0x6445, 0x6444,
+ 0x6441, 0x4f36, 0x644a, 0x644e, 0x644b, 0x6447, 0x6448, 0x644d,
+ 0x6442, 0x5255, 0x6449, 0x6443, 0x644c, 0x6452, 0x344a, 0x644f,
+ 0x6450, 0x6451, 0x6454, 0x6453, 0x4876, 0x6455, 0x4e7c, 0x4a6d,
+ 0x645a, 0x6457, 0x6456, 0x4052, 0x6459, 0x645b, 0x6458, 0x645f,
+ 0x645c, 0x645d, 0x6446, 0x645e, 0x6460, 0x6461, 0x4a46, 0x6462,
+ 0x4c62, 0x364e, 0x3729, 0x6463, 0x4a34, 0x3f68, 0x4c30, 0x6464,
+ 0x4e33, 0x4774, 0x4146, 0x4734, 0x3d4d, 0x3040, 0x6469, 0x6467,
+ 0x6465, 0x3421, 0x3e51, 0x646a, 0x6468, 0x6466, 0x646e, 0x646d,
+ 0x646c, 0x646b, 0x646f, 0x6470, 0x403a, 0x6471, 0x6473, 0x6472,
+ 0x3852, 0x4138, 0x6475, 0x457c, 0x6474, 0x6476, 0x4a35, 0x416c,
+ 0x3947, 0x6477, 0x4e48, 0x6479, 0x647a, 0x647b, 0x647c, 0x3b65,
+ 0x647d, 0x374f, 0x356a, 0x352a, 0x6521, 0x4c73, 0x3948, 0x647e,
+ 0x6524, 0x4c66, 0x473c, 0x4933, 0x3d63, 0x6523, 0x3c53, 0x3949,
+ 0x3b66, 0x3569, 0x4a36, 0x6522, 0x4147, 0x4b42, 0x3a77, 0x3b67,
+ 0x445d, 0x6527, 0x4e5f, 0x3a59, 0x6528, 0x3f42, 0x652a, 0x3e52,
+ 0x3a30, 0x6529, 0x3d2a, 0x383e, 0x4148, 0x6525, 0x652b, 0x6526,
+ 0x3750, 0x652e, 0x6532, 0x376b, 0x652d, 0x6536, 0x394a, 0x4d6d,
+ 0x303c, 0x6533, 0x356b, 0x6530, 0x6531, 0x457d, 0x652f, 0x652c,
+ 0x3328, 0x4064, 0x3828, 0x6538, 0x6535, 0x6537, 0x6534, 0x3751,
+ 0x4233, 0x6539, 0x416e, 0x6546, 0x6542, 0x653c, 0x6540, 0x3c7a,
+ 0x305d, 0x653b, 0x6543, 0x6547, 0x394b, 0x4c56, 0x4456, 0x653d,
+ 0x6545, 0x653a, 0x433e, 0x653f, 0x303d, 0x4c4a, 0x653e, 0x365b,
+ 0x486c, 0x416d, 0x4e50, 0x3d6f, 0x656e, 0x6548, 0x407e, 0x6544,
+ 0x6549, 0x654b, 0x4479, 0x654e, 0x654a, 0x4a54, 0x344b, 0x4c4b,
+ 0x305e, 0x654d, 0x4e7d, 0x654c, 0x316f, 0x466c, 0x654f, 0x6556,
+ 0x6550, 0x6557, 0x6553, 0x477b, 0x3c4a, 0x6555, 0x6552, 0x6558,
+ 0x6551, 0x3d44, 0x4b25, 0x3d4c, 0x6554, 0x6560, 0x655c, 0x655f,
+ 0x655d, 0x6561, 0x655b, 0x6541, 0x4053, 0x484b, 0x655e, 0x6559,
+ 0x4121, 0x3752, 0x3d2b, 0x3f25, 0x4136, 0x6564, 0x6566, 0x6567,
+ 0x6563, 0x6565, 0x655a, 0x6562, 0x656a, 0x6569, 0x4b7a, 0x372b,
+ 0x6568, 0x656c, 0x656b, 0x656f, 0x6571, 0x3b3c, 0x656d, 0x6572,
+ 0x6573, 0x6574, 0x657a, 0x453b, 0x6576, 0x6575, 0x6577, 0x6578,
+ 0x6579, 0x657b, 0x657c, 0x344c, 0x657d, 0x657e, 0x6621, 0x6622,
+ 0x6623, 0x6624, 0x6625, 0x6626, 0x6628, 0x6627, 0x6629, 0x662a,
+ 0x662b, 0x662e, 0x662c, 0x662d, 0x3a61, 0x3753, 0x4356, 0x4833,
+ 0x3d70, 0x474d, 0x486d, 0x662f, 0x586d, 0x6630, 0x6632, 0x4d65,
+ 0x6631, 0x6634, 0x6633, 0x4d53, 0x6635, 0x487e, 0x6636, 0x6639,
+ 0x6638, 0x6637, 0x663a, 0x3732, 0x4122, 0x3541, 0x663e, 0x663b,
+ 0x663c, 0x663f, 0x6640, 0x663d, 0x3129, 0x3227, 0x6642, 0x6643,
+ 0x6644, 0x4d62, 0x3d2c, 0x6646, 0x6645, 0x3f69, 0x6647, 0x6648,
+ 0x6649, 0x3465, 0x344d, 0x664a, 0x664b, 0x4b5d, 0x4d63, 0x4d54,
+ 0x4f37, 0x394d, 0x664e, 0x3c54, 0x664d, 0x664f, 0x3c29, 0x4251,
+ 0x6650, 0x394c, 0x4c57, 0x6651, 0x6652, 0x6653, 0x6654, 0x6655,
+ 0x3c2a, 0x4c6d, 0x6657, 0x433f, 0x6656, 0x6659, 0x6658, 0x665a,
+ 0x403b, 0x665b, 0x665c, 0x4a39, 0x665d, 0x416f, 0x665e, 0x665f,
+ 0x4e7e, 0x6662, 0x6661, 0x6660, 0x4430, 0x6663, 0x3f26, 0x6664,
+ 0x6665, 0x4f38, 0x6666, 0x6667, 0x6669, 0x6668, 0x4825, 0x4679,
+ 0x4f3e, 0x4829, 0x666b, 0x3e53, 0x492a, 0x666c, 0x666a, 0x344e,
+ 0x3854, 0x3b68, 0x486e, 0x382a, 0x4b43, 0x666f, 0x666d, 0x394e,
+ 0x394f, 0x3069, 0x3a68, 0x4759, 0x305f, 0x6674, 0x4340, 0x4758,
+ 0x425b, 0x6676, 0x6672, 0x6675, 0x6670, 0x6673, 0x4b26, 0x3855,
+ 0x307d, 0x6671, 0x6678, 0x6679, 0x4639, 0x363b, 0x6726, 0x473d,
+ 0x3b69, 0x363c, 0x4048, 0x4f46, 0x4c2e, 0x6677, 0x4054, 0x3553,
+ 0x667a, 0x667c, 0x667b, 0x667d, 0x4326, 0x473e, 0x4431, 0x6723,
+ 0x6722, 0x667e, 0x3f55, 0x4965, 0x6725, 0x6724, 0x3950, 0x4f53,
+ 0x6735, 0x6729, 0x672a, 0x3c70, 0x6728, 0x3978, 0x6727, 0x672b,
+ 0x4432, 0x4a22, 0x4123, 0x425c, 0x672f, 0x6730, 0x672c, 0x672d,
+ 0x672e, 0x3951, 0x6736, 0x6732, 0x4966, 0x4b6c, 0x4928, 0x6731,
+ 0x6734, 0x6733, 0x4b44, 0x6737, 0x6738, 0x4137, 0x6739, 0x673b,
+ 0x673f, 0x673c, 0x673a, 0x473f, 0x673d, 0x673e, 0x3232, 0x6745,
+ 0x6740, 0x6741, 0x6742, 0x4221, 0x6744, 0x6743, 0x6746, 0x6747,
+ 0x6748, 0x3f43, 0x3269, 0x6749, 0x4e57, 0x3c2b, 0x3d2d, 0x3b6a,
+ 0x4357, 0x674a, 0x674b, 0x3131, 0x674c, 0x674d, 0x674e, 0x674f,
+ 0x6750, 0x363d, 0x5a2a, 0x6751, 0x4065, 0x6752, 0x3c4b, 0x6753,
+ 0x5030, 0x6754, 0x4a5e, 0x345c, 0x4124, 0x3d58, 0x4971, 0x3d2e,
+ 0x6755, 0x3952, 0x6756, 0x484c, 0x6764, 0x6758, 0x4249, 0x4775,
+ 0x383f, 0x6757, 0x4125, 0x6759, 0x447a, 0x675b, 0x675a, 0x675d,
+ 0x675c, 0x675e, 0x6760, 0x675f, 0x344f, 0x6761, 0x6762, 0x6763,
+ 0x3a31, 0x4e49, 0x6765, 0x3f27, 0x3170, 0x6766, 0x6767, 0x6768,
+ 0x3072, 0x6769, 0x676a, 0x4967, 0x3c47, 0x676c, 0x3329, 0x3032,
+ 0x676b, 0x676e, 0x474e, 0x3f44, 0x3256, 0x4b27, 0x375d, 0x365c,
+ 0x676d, 0x326a, 0x3423, 0x3171, 0x6772, 0x4e6a, 0x425d, 0x4944,
+ 0x677e, 0x3257, 0x677c, 0x677a, 0x6771, 0x676f, 0x6770, 0x3c63,
+ 0x366c, 0x4377, 0x4651, 0x3151, 0x6774, 0x6773, 0x6779, 0x6775,
+ 0x6778, 0x4c50, 0x6777, 0x3258, 0x337d, 0x677b, 0x677d, 0x3754,
+ 0x6823, 0x682c, 0x682d, 0x302b, 0x6834, 0x3071, 0x682b, 0x682a,
+ 0x6825, 0x6824, 0x6822, 0x6821, 0x4363, 0x427b, 0x6827, 0x6826,
+ 0x6829, 0x4170, 0x3755, 0x3141, 0x6828, 0x3953, 0x4171, 0x683a,
+ 0x683b, 0x3259, 0x322e, 0x6838, 0x682e, 0x6836, 0x683d, 0x6837,
+ 0x6835, 0x6776, 0x6833, 0x682f, 0x3450, 0x6831, 0x683c, 0x6832,
+ 0x683e, 0x6830, 0x477c, 0x4d69, 0x6839, 0x684f, 0x6847, 0x3f7b,
+ 0x3546, 0x365d, 0x6842, 0x325b, 0x3e54, 0x6845, 0x3a5a, 0x4551,
+ 0x684a, 0x4a6e, 0x6841, 0x325a, 0x3856, 0x4929, 0x684b, 0x683f,
+ 0x6848, 0x6852, 0x6843, 0x6844, 0x463a, 0x6849, 0x6846, 0x4b28,
+ 0x684c, 0x3060, 0x6840, 0x684e, 0x684d, 0x476b, 0x6854, 0x685f,
+ 0x337e, 0x6862, 0x6850, 0x6855, 0x4d6e, 0x685e, 0x4d55, 0x4e2a,
+ 0x4378, 0x336b, 0x4972, 0x6864, 0x4621, 0x3031, 0x685d, 0x6859,
+ 0x4172, 0x6853, 0x685b, 0x6860, 0x472c, 0x302a, 0x6858, 0x6861,
+ 0x4978, 0x685c, 0x6857, 0x3e55, 0x3d2f, 0x3c2c, 0x4c58, 0x4947,
+ 0x6867, 0x6870, 0x685a, 0x3377, 0x3e78, 0x6865, 0x686a, 0x4173,
+ 0x6866, 0x686d, 0x435f, 0x686e, 0x4d56, 0x6863, 0x3338, 0x6869,
+ 0x686c, 0x4c2c, 0x686f, 0x6868, 0x686b, 0x4b29, 0x4f21, 0x6873,
+ 0x687a, 0x6872, 0x3c43, 0x6851, 0x4a4e, 0x4c22, 0x6879, 0x6878,
+ 0x6874, 0x6875, 0x3136, 0x6877, 0x6871, 0x4455, 0x6876, 0x307e,
+ 0x4222, 0x4a43, 0x687b, 0x6921, 0x4859, 0x687e, 0x3e56, 0x3c49,
+ 0x6923, 0x363e, 0x6924, 0x4979, 0x687d, 0x6856, 0x687c, 0x4f4f,
+ 0x4622, 0x4973, 0x692b, 0x6931, 0x6932, 0x6925, 0x4776, 0x692f,
+ 0x6927, 0x6929, 0x6933, 0x6928, 0x692c, 0x3172, 0x4665, 0x692d,
+ 0x6930, 0x6926, 0x4126, 0x692a, 0x3b27, 0x3f45, 0x3730, 0x4c74,
+ 0x4c79, 0x3d72, 0x6937, 0x6935, 0x4f4e, 0x6934, 0x4d75, 0x6936,
+ 0x6938, 0x6939, 0x693c, 0x693a, 0x4623, 0x693b, 0x484d, 0x692e,
+ 0x3d73, 0x693d, 0x6942, 0x4174, 0x6941, 0x6922, 0x6943, 0x4149,
+ 0x693e, 0x6940, 0x693f, 0x5d31, 0x5d22, 0x6945, 0x6944, 0x4d76,
+ 0x623c, 0x6946, 0x6947, 0x6948, 0x3857, 0x3554, 0x694a, 0x515d,
+ 0x3575, 0x4e3a, 0x3673, 0x694b, 0x694c, 0x436e, 0x694d, 0x467a,
+ 0x303a, 0x3263, 0x6952, 0x6953, 0x694e, 0x3b3d, 0x694f, 0x4742,
+ 0x6950, 0x6951, 0x695b, 0x6955, 0x6958, 0x6954, 0x6956, 0x6957,
+ 0x3c58, 0x6959, 0x4341, 0x3756, 0x3342, 0x695c, 0x333f, 0x6961,
+ 0x695d, 0x6960, 0x483a, 0x695e, 0x695f, 0x4948, 0x485a, 0x6962,
+ 0x427d, 0x696c, 0x6968, 0x326b, 0x6966, 0x4b2a, 0x6967, 0x6964,
+ 0x6965, 0x696a, 0x696d, 0x696b, 0x6969, 0x6963, 0x4358, 0x6974,
+ 0x4c2a, 0x6972, 0x6973, 0x696e, 0x6970, 0x6971, 0x696f, 0x4066,
+ 0x4f39, 0x6978, 0x6979, 0x6a21, 0x3f2a, 0x697b, 0x697e, 0x6976,
+ 0x6975, 0x6a22, 0x325c, 0x697c, 0x6a23, 0x697d, 0x697a, 0x4433,
+ 0x6977, 0x4768, 0x6a27, 0x4d3b, 0x6a26, 0x6a25, 0x6a2e, 0x6a28,
+ 0x6a30, 0x4d66, 0x6a33, 0x6a2a, 0x6a2b, 0x6a2f, 0x6a32, 0x6a31,
+ 0x6a29, 0x6a2c, 0x6a3d, 0x6a36, 0x6a34, 0x6a35, 0x6a3a, 0x6a3b,
+ 0x332a, 0x3542, 0x6a39, 0x6a24, 0x6a38, 0x6a3c, 0x6a37, 0x6a3e,
+ 0x6a40, 0x6a3f, 0x6a42, 0x6a41, 0x695a, 0x6a46, 0x6a43, 0x6a44,
+ 0x6a45, 0x6a47, 0x376c, 0x6a49, 0x6a48, 0x3d30, 0x3954, 0x5e27,
+ 0x6a4a, 0x3d51, 0x3339, 0x6a4b, 0x3152, 0x3e57, 0x6a4c, 0x3955,
+ 0x6a4d, 0x3061, 0x493d, 0x6a4e, 0x3f6a, 0x6a55, 0x6a52, 0x436f,
+ 0x6a53, 0x6a50, 0x365e, 0x6a4f, 0x6a56, 0x3736, 0x425e, 0x6a5c,
+ 0x6a58, 0x4235, 0x6a57, 0x6a5a, 0x6a51, 0x6a5b, 0x6a5d, 0x486f,
+ 0x6a59, 0x6a5e, 0x6a60, 0x3853, 0x6a54, 0x3041, 0x6a5f, 0x3a5b,
+ 0x4e76, 0x6a61, 0x6a62, 0x4175, 0x4e22, 0x6a63, 0x4d35, 0x6a64,
+ 0x6a65, 0x4a64, 0x6a66, 0x3a40, 0x4e23, 0x6a6b, 0x6a6c, 0x3e58,
+ 0x6a6a, 0x4d67, 0x6a67, 0x6a69, 0x403d, 0x3f7e, 0x6a68, 0x6a6d,
+ 0x4a23, 0x6a6f, 0x6a6e, 0x336c, 0x4b2b, 0x6a70, 0x6a7c, 0x6a72,
+ 0x6a73, 0x6a74, 0x6a75, 0x6a79, 0x6a7a, 0x6a78, 0x6a76, 0x6a71,
+ 0x6a77, 0x6a7b, 0x7037, 0x3228, 0x6a7e, 0x365f, 0x6a7d, 0x6b22,
+ 0x6b21, 0x6b24, 0x6b23, 0x6b25, 0x3d31, 0x6b26, 0x6b27, 0x6b28,
+ 0x403e, 0x4d57, 0x6b29, 0x4a24, 0x4746, 0x6b2a, 0x6b2b, 0x382b,
+ 0x352c, 0x6b2c, 0x3b6b, 0x4741, 0x6b2d, 0x3350, 0x6b2e, 0x6b30,
+ 0x4d77, 0x6b2f, 0x3f46, 0x6b31, 0x6b32, 0x6b33, 0x3451, 0x6b34,
+ 0x6b35, 0x6b36, 0x6b37, 0x3351, 0x6b38, 0x6b39, 0x6b3a, 0x3272,
+ 0x3f28, 0x6b3b, 0x6b3c, 0x6b3d, 0x3840, 0x447b, 0x6b3e, 0x3757,
+ 0x3f56, 0x6b41, 0x4624, 0x6b40, 0x3731, 0x6b3f, 0x4277, 0x352d,
+ 0x6b42, 0x6b43, 0x3e59, 0x376d, 0x6b44, 0x4b2c, 0x405f, 0x3576,
+ 0x4c75, 0x414a, 0x6b45, 0x3f47, 0x4370, 0x3e5a, 0x6b46, 0x6b49,
+ 0x6b4a, 0x3a3e, 0x4242, 0x6b48, 0x3e5b, 0x493e, 0x6b47, 0x3b6c,
+ 0x3153, 0x6b4e, 0x3758, 0x3b6e, 0x3b6d, 0x4f4d, 0x6b4d, 0x6b4c,
+ 0x4127, 0x354d, 0x4f43, 0x333a, 0x3e5c, 0x6b4b, 0x6b50, 0x6b51,
+ 0x6b4f, 0x3858, 0x4d40, 0x3b6f, 0x4727, 0x6b54, 0x4040, 0x4342,
+ 0x4d36, 0x6b57, 0x386c, 0x403f, 0x6b53, 0x6b58, 0x386d, 0x6b55,
+ 0x6b56, 0x6b52, 0x4062, 0x4649, 0x432f, 0x325d, 0x4870, 0x3543,
+ 0x4434, 0x6b5b, 0x6b59, 0x434c, 0x4041, 0x3452, 0x6b5a, 0x3f5b,
+ 0x4e4a, 0x4f40, 0x6b5c, 0x6b67, 0x4435, 0x6b66, 0x6b63, 0x6b6b,
+ 0x6b64, 0x6b60, 0x447c, 0x6b5f, 0x6b5d, 0x4d21, 0x3b70, 0x6b61,
+ 0x6b5e, 0x6b65, 0x3d74, 0x3841, 0x427a, 0x4b45, 0x315a, 0x3062,
+ 0x4625, 0x6b69, 0x6b68, 0x4666, 0x6b6d, 0x6b62, 0x6b6c, 0x6b6e,
+ 0x382c, 0x6b6a, 0x3956, 0x3c55, 0x6b6f, 0x4d58, 0x6b72, 0x6b75,
+ 0x6b73, 0x4935, 0x6b70, 0x3660, 0x6b74, 0x6b76, 0x6b7a, 0x6b77,
+ 0x6b79, 0x6b78, 0x6b7b, 0x3c31, 0x6b7d, 0x6b7c, 0x4968, 0x6c21,
+ 0x3759, 0x6b7e, 0x6c22, 0x6c23, 0x3544, 0x6641, 0x3e79, 0x6c24,
+ 0x386e, 0x6c25, 0x6c26, 0x3b3e, 0x5a4e, 0x6c27, 0x6c28, 0x3d32,
+ 0x6c29, 0x6c2a, 0x6c2b, 0x6c2c, 0x6c2d, 0x432b, 0x6c2e, 0x6c30,
+ 0x6c2f, 0x4626, 0x6c31, 0x4b2d, 0x6c32, 0x6c33, 0x6c34, 0x6c35,
+ 0x465a, 0x3e5d, 0x6c36, 0x396b, 0x502e, 0x6c37, 0x6c38, 0x493f,
+ 0x6c39, 0x6c41, 0x6c3a, 0x6c3c, 0x6c3b, 0x6c3d, 0x4b46, 0x6c3e,
+ 0x6c3f, 0x6c40, 0x6c42, 0x332d, 0x4467, 0x4969, 0x3a62, 0x3957,
+ 0x494f, 0x325f, 0x484e, 0x6c45, 0x3453, 0x4055, 0x6c44, 0x6c49,
+ 0x4379, 0x4c63, 0x6c47, 0x6c48, 0x352e, 0x6c4a, 0x4763, 0x425f,
+ 0x4871, 0x453d, 0x6c46, 0x4b47, 0x326c, 0x6c4c, 0x4f28, 0x4442,
+ 0x4f45, 0x3b71, 0x6c4b, 0x4231, 0x6c5c, 0x4128, 0x4678, 0x4950,
+ 0x6c4f, 0x3b3f, 0x3b72, 0x3e5e, 0x4765, 0x382d, 0x6c4e, 0x6c4d,
+ 0x496a, 0x3c41, 0x4552, 0x6c51, 0x6c52, 0x3958, 0x6c50, 0x6c53,
+ 0x6c54, 0x6c56, 0x4223, 0x6c55, 0x3466, 0x6c58, 0x6c57, 0x6c59,
+ 0x6c5b, 0x6c5d, 0x6c5e, 0x4056, 0x3c4f, 0x6c5f, 0x3352, 0x6c60,
+ 0x4176, 0x6c61, 0x6c62, 0x496b, 0x352f, 0x6c63, 0x4436, 0x315b,
+ 0x6c64, 0x3c71, 0x3f76, 0x422d, 0x6c67, 0x6c66, 0x6c65, 0x6c6d,
+ 0x6c6b, 0x6c68, 0x6c6a, 0x6c69, 0x6c6c, 0x3577, 0x6c70, 0x4057,
+ 0x6c71, 0x3859, 0x6c6e, 0x6c6f, 0x4f29, 0x4437, 0x4129, 0x6c72,
+ 0x6c75, 0x6c73, 0x6c74, 0x4d59, 0x4627, 0x6c78, 0x6c76, 0x6c77,
+ 0x6c79, 0x6d29, 0x6c7c, 0x6c7d, 0x6c7b, 0x6c7a, 0x447d, 0x6d21,
+ 0x6d25, 0x6d22, 0x6c7e, 0x6d23, 0x6d24, 0x6d2b, 0x6d26, 0x4058,
+ 0x6d28, 0x6d2a, 0x6d27, 0x6d2d, 0x3d33, 0x6d2c, 0x6d2e, 0x6d2f,
+ 0x6d32, 0x6d31, 0x6d30, 0x6d34, 0x6d33, 0x4c76, 0x6d36, 0x6d35,
+ 0x6d37, 0x6d38, 0x6d3a, 0x6d39, 0x3f48, 0x6d3b, 0x366d, 0x6d3c,
+ 0x6d3e, 0x6d3f, 0x6d40, 0x6d3d, 0x6d41, 0x3c56, 0x6d42, 0x3530,
+ 0x3733, 0x382e, 0x6d43, 0x4670, 0x453e, 0x6d44, 0x6d47, 0x3c34,
+ 0x6d46, 0x6d45, 0x375a, 0x6d48, 0x3353, 0x6d4a, 0x3a5c, 0x6d49,
+ 0x6d52, 0x6d4c, 0x6d4e, 0x4a65, 0x6d4b, 0x6d4d, 0x6d51, 0x6d4f,
+ 0x3531, 0x6d50, 0x6d53, 0x475a, 0x4e58, 0x3d34, 0x6d54, 0x4d22,
+ 0x6d56, 0x6d55, 0x6d59, 0x4d41, 0x6d58, 0x336d, 0x6d57, 0x6d5c,
+ 0x6d5b, 0x6d5a, 0x4532, 0x6d5d, 0x6d5e, 0x6d5f, 0x396c, 0x3725,
+ 0x6d60, 0x6d61, 0x6d62, 0x3f49, 0x6d63, 0x3c2d, 0x6d64, 0x6d65,
+ 0x5221, 0x517e, 0x6d66, 0x6570, 0x6d67, 0x4324, 0x3f2b, 0x4740,
+ 0x6d68, 0x4a55, 0x4454, 0x397e, 0x4329, 0x312a, 0x4b78, 0x3f57,
+ 0x375e, 0x3661, 0x4a56, 0x6d69, 0x6d6b, 0x6d6a, 0x3260, 0x4676,
+ 0x6d6c, 0x4777, 0x4533, 0x6d6d, 0x3d52, 0x6d6f, 0x4c42, 0x6d7e,
+ 0x6d71, 0x6d72, 0x4449, 0x4260, 0x4177, 0x4628, 0x6d70, 0x3555,
+ 0x6d79, 0x6d76, 0x6e25, 0x4629, 0x4360, 0x6d73, 0x447e, 0x4553,
+ 0x6d74, 0x6d78, 0x3f60, 0x4767, 0x444c, 0x4042, 0x6d77, 0x422e,
+ 0x4224, 0x6d75, 0x3029, 0x4f22, 0x6d7a, 0x4261, 0x3d35, 0x3f4a,
+ 0x6d7c, 0x6d7b, 0x306f, 0x6d7d, 0x492f, 0x6e27, 0x465b, 0x3f6b,
+ 0x4359, 0x3678, 0x6e26, 0x4d37, 0x313f, 0x4a57, 0x3261, 0x6e21,
+ 0x6e22, 0x6e23, 0x6e24, 0x463b, 0x4323, 0x3063, 0x6e28, 0x6e29,
+ 0x7423, 0x423d, 0x6e2a, 0x3173, 0x414c, 0x382f, 0x4d5a, 0x6e2b,
+ 0x452c, 0x4178, 0x3c57, 0x6e2c, 0x6e2f, 0x3d65, 0x6e2d, 0x412b,
+ 0x412a, 0x3064, 0x4e4b, 0x6e31, 0x4872, 0x6e33, 0x6e32, 0x6e30,
+ 0x6364, 0x3454, 0x6d6e, 0x6e35, 0x6e34, 0x6e36, 0x4d38, 0x4661,
+ 0x4b2e, 0x6e37, 0x3c59, 0x6e38, 0x6e39, 0x6e3a, 0x4521, 0x306a,
+ 0x3959, 0x4f3a, 0x6e3e, 0x3734, 0x6e3b, 0x6e3c, 0x4974, 0x3354,
+ 0x4d39, 0x363f, 0x4554, 0x6e3f, 0x6e40, 0x6e41, 0x4522, 0x6e43,
+ 0x6e42, 0x4653, 0x6e44, 0x3d36, 0x3c60, 0x475b, 0x4371, 0x3c72,
+ 0x3f6c, 0x6e45, 0x6e46, 0x3f5d, 0x6e47, 0x6e48, 0x6e49, 0x4d6f,
+ 0x3d37, 0x6e4b, 0x6e4a, 0x395a, 0x3973, 0x3b40, 0x6e4e, 0x3d66,
+ 0x6e4d, 0x6e4c, 0x4269, 0x386f, 0x4043, 0x4830, 0x3d39, 0x6e4f,
+ 0x3e5f, 0x6e52, 0x6e50, 0x6e51, 0x6e54, 0x6e53, 0x3e7a, 0x6e55,
+ 0x6e56, 0x6e57, 0x4850, 0x3a53, 0x3c61, 0x6e58, 0x6e59, 0x4e24,
+ 0x3d45, 0x4c6e, 0x4e4c, 0x6e5a, 0x3662, 0x6e5b, 0x4523, 0x6e5e,
+ 0x3378, 0x3f4b, 0x6e5c, 0x6e5d, 0x4460, 0x4b55, 0x367c, 0x6e60,
+ 0x6e61, 0x6e5f, 0x6e63, 0x465f, 0x3343, 0x6e67, 0x6e64, 0x6e66,
+ 0x6e62, 0x6f4f, 0x6e65, 0x4e6b, 0x385a, 0x6e6f, 0x4534, 0x6e6a,
+ 0x6e6d, 0x6e6b, 0x6e70, 0x6e71, 0x6e69, 0x6e76, 0x3174, 0x6e68,
+ 0x482d, 0x6e6c, 0x3e60, 0x395b, 0x4b48, 0x3664, 0x3d46, 0x463c,
+ 0x412d, 0x6e74, 0x6e6e, 0x6e73, 0x4c43, 0x4438, 0x6e75, 0x6e72,
+ 0x412c, 0x6e79, 0x6e78, 0x6e77, 0x4b2f, 0x3d7b, 0x6e7a, 0x4a5f,
+ 0x3154, 0x4946, 0x4372, 0x3578, 0x6e7c, 0x395d, 0x3b2c, 0x6e7b,
+ 0x3f6d, 0x3f6e, 0x6f21, 0x6f23, 0x3e7b, 0x6f22, 0x6f24, 0x3653,
+ 0x4945, 0x3c62, 0x4f23, 0x6e7e, 0x3a78, 0x4f3f, 0x6f26, 0x6f25,
+ 0x6f27, 0x6e7d, 0x4669, 0x4555, 0x4457, 0x6f2c, 0x4343, 0x6f28,
+ 0x6f29, 0x372d, 0x6f2b, 0x3830, 0x6f2a, 0x3e61, 0x3379, 0x6f30,
+ 0x3a3f, 0x4179, 0x444a, 0x333b, 0x6f2e, 0x6f2f, 0x4443, 0x6f2d,
+ 0x6f31, 0x6f37, 0x6f3a, 0x6f39, 0x452d, 0x6f32, 0x6f33, 0x6f36,
+ 0x6f38, 0x3640, 0x6f3b, 0x6f35, 0x6f34, 0x6f3f, 0x6f40, 0x6f41,
+ 0x6f3e, 0x6f3d, 0x3e62, 0x462a, 0x6f3c, 0x6f45, 0x6f43, 0x6f44,
+ 0x6f42, 0x4278, 0x6f46, 0x6f47, 0x6f49, 0x3455, 0x6f48, 0x4c7a,
+ 0x6f54, 0x6f4a, 0x6f4d, 0x6f4b, 0x6f4c, 0x6f4e, 0x6f50, 0x6f51,
+ 0x6f52, 0x6f55, 0x6f53, 0x6f56, 0x6f58, 0x6f57, 0x4439, 0x4c67,
+ 0x6f59, 0x412e, 0x6f5a, 0x4a44, 0x6f5b, 0x332b, 0x313c, 0x3457,
+ 0x3456, 0x6f5c, 0x6f5d, 0x6f5e, 0x6f5f, 0x6f60, 0x3458, 0x3355,
+ 0x395e, 0x4836, 0x6f62, 0x6f61, 0x6f63, 0x315c, 0x6f66, 0x6f65,
+ 0x6f64, 0x6f67, 0x6f6a, 0x3047, 0x6f68, 0x6f6c, 0x6f6b, 0x6f6e,
+ 0x6f6d, 0x6f6f, 0x462e, 0x6f70, 0x6f71, 0x6f73, 0x6f72, 0x496c,
+ 0x6f74, 0x6f75, 0x3a65, 0x6f76, 0x6f77, 0x4b49, 0x414b, 0x3024,
+ 0x424b, 0x6f78, 0x496d, 0x6f7b, 0x6f79, 0x395f, 0x6f7a, 0x3842,
+ 0x4a45, 0x6f7d, 0x7021, 0x6f7e, 0x7022, 0x3121, 0x3f58, 0x3d7c,
+ 0x3459, 0x7023, 0x4766, 0x7025, 0x3122, 0x7024, 0x4444, 0x4e4d,
+ 0x462b, 0x6f7c, 0x4e26, 0x3831, 0x4d5b, 0x3679, 0x4e34, 0x3728,
+ 0x4262, 0x6721, 0x7026, 0x332c, 0x3f6f, 0x3356, 0x7028, 0x7029,
+ 0x7027, 0x3764, 0x3a5d, 0x3e63, 0x3123, 0x4e59, 0x702b, 0x6e2e,
+ 0x702a, 0x702e, 0x702c, 0x702d, 0x702f, 0x7030, 0x4e6c, 0x7031,
+ 0x7032, 0x4049, 0x483b, 0x3f7d, 0x3467, 0x4d3a, 0x326d, 0x3d38,
+ 0x385b, 0x7035, 0x7034, 0x3b73, 0x7036, 0x7033, 0x3b28, 0x703a,
+ 0x6a2d, 0x5256, 0x3f77, 0x7038, 0x4e25, 0x4671, 0x312b, 0x4063,
+ 0x3c36, 0x4a37, 0x3140, 0x4e6d, 0x4d6b, 0x703b, 0x4545, 0x3c7b,
+ 0x703c, 0x703d, 0x3f4c, 0x703e, 0x4e6e, 0x7039, 0x7040, 0x7042,
+ 0x7041, 0x703f, 0x7043, 0x7044, 0x417a, 0x3262, 0x7045, 0x4c38,
+ 0x7046, 0x7047, 0x4f2a, 0x5b31, 0x7048, 0x7049, 0x704a, 0x704e,
+ 0x704b, 0x704c, 0x704d, 0x704f, 0x4044, 0x4c77, 0x4045, 0x7050,
+ 0x4873, 0x7051, 0x7353, 0x4c4c, 0x7052, 0x7053, 0x7054, 0x3357,
+ 0x7056, 0x3f59, 0x7057, 0x3724, 0x7058, 0x705c, 0x705a, 0x705b,
+ 0x3373, 0x7059, 0x705d, 0x705e, 0x3048, 0x705f, 0x7060, 0x3e64,
+ 0x7061, 0x3547, 0x7064, 0x7063, 0x7062, 0x6b71, 0x4a5c, 0x7065,
+ 0x7066, 0x7067, 0x7068, 0x7069, 0x706a, 0x345a, 0x706b, 0x706c,
+ 0x4723, 0x706e, 0x323b, 0x7071, 0x7070, 0x3124, 0x3641, 0x4a47,
+ 0x443a, 0x3a22, 0x3960, 0x3d67, 0x3f5c, 0x7073, 0x7072, 0x4d42,
+ 0x3468, 0x4852, 0x465c, 0x3f7c, 0x4e4e, 0x375b, 0x7076, 0x7075,
+ 0x4b4b, 0x462c, 0x3150, 0x7077, 0x7074, 0x4951, 0x4d6a, 0x7078,
+ 0x7079, 0x707b, 0x426a, 0x335b, 0x335c, 0x707a, 0x3469, 0x3832,
+ 0x346a, 0x453f, 0x4e60, 0x385c, 0x707c, 0x707d, 0x707e, 0x7121,
+ 0x7123, 0x7122, 0x4977, 0x7124, 0x7125, 0x7126, 0x7127, 0x7129,
+ 0x7128, 0x712a, 0x4874, 0x664c, 0x3f29, 0x3532, 0x712b, 0x712c,
+ 0x522c, 0x5d3b, 0x4853, 0x307b, 0x303b, 0x3b74, 0x4b30, 0x3e7e,
+ 0x712d, 0x4c5f, 0x712e, 0x4d5c, 0x3142, 0x3b41, 0x712f, 0x326e,
+ 0x7130, 0x7131, 0x7133, 0x7134, 0x7136, 0x7132, 0x7135, 0x345b,
+ 0x7137, 0x7138, 0x7139, 0x713a, 0x713b, 0x713d, 0x713c, 0x713f,
+ 0x7142, 0x713e, 0x7140, 0x7141, 0x7143, 0x3642, 0x3c73, 0x7144,
+ 0x7145, 0x3961, 0x7146, 0x333e, 0x474f, 0x7147, 0x7148, 0x435a,
+ 0x466b, 0x7149, 0x477d, 0x424c, 0x3158, 0x366e, 0x366f, 0x4373,
+ 0x714e, 0x3670, 0x326f, 0x714d, 0x714b, 0x714c, 0x714a, 0x7158,
+ 0x714f, 0x7150, 0x7151, 0x7152, 0x7154, 0x7153, 0x3d59, 0x7155,
+ 0x7157, 0x3533, 0x7156, 0x417b, 0x3833, 0x7159, 0x424d, 0x715a,
+ 0x462d, 0x715b, 0x7160, 0x715e, 0x715d, 0x715f, 0x715c, 0x7162,
+ 0x7161, 0x7164, 0x3643, 0x7163, 0x7165, 0x7166, 0x7168, 0x7167,
+ 0x7169, 0x716b, 0x716a, 0x397c, 0x716c, 0x716d, 0x333c, 0x716e,
+ 0x716f, 0x3f71, 0x7170, 0x7171, 0x7172, 0x7173, 0x3962, 0x7174,
+ 0x7175, 0x7176, 0x7177, 0x7178, 0x4831, 0x717a, 0x4926, 0x717b,
+ 0x7179, 0x717d, 0x717c, 0x717e, 0x7221, 0x7222, 0x7223, 0x7224,
+ 0x7225, 0x7226, 0x7227, 0x7228, 0x7229, 0x722a, 0x722b, 0x722c,
+ 0x722d, 0x722e, 0x5d35, 0x722f, 0x6478, 0x3534, 0x3321, 0x3a32,
+ 0x7231, 0x7230, 0x4c25, 0x7233, 0x7234, 0x7232, 0x7235, 0x4b62,
+ 0x7236, 0x357b, 0x4f25, 0x7237, 0x7239, 0x303e, 0x723a, 0x4a2b,
+ 0x7238, 0x723b, 0x723c, 0x723d, 0x723e, 0x723f, 0x4b6e, 0x3b2d,
+ 0x3a7a, 0x412f, 0x7240, 0x7243, 0x7241, 0x7244, 0x3871, 0x7242,
+ 0x7245, 0x7246, 0x7247, 0x724b, 0x3b2a, 0x4264, 0x724c, 0x7249,
+ 0x7248, 0x724a, 0x375f, 0x7250, 0x724f, 0x724e, 0x3033, 0x725a,
+ 0x7256, 0x7257, 0x7253, 0x7259, 0x7255, 0x3362, 0x4f4c, 0x7258,
+ 0x7254, 0x7252, 0x7251, 0x725c, 0x725f, 0x725e, 0x725d, 0x4949,
+ 0x725b, 0x3073, 0x7260, 0x7262, 0x336f, 0x724d, 0x3137, 0x7264,
+ 0x7263, 0x7261, 0x432d, 0x4b70, 0x4e5a, 0x7265, 0x7266, 0x7267,
+ 0x7268, 0x7269, 0x443b, 0x726a, 0x4837, 0x726f, 0x726b, 0x726c,
+ 0x4b31, 0x4c44, 0x4650, 0x7270, 0x7271, 0x463e, 0x726e, 0x726d,
+ 0x322a, 0x7279, 0x7278, 0x3175, 0x7276, 0x7275, 0x7273, 0x337b,
+ 0x7272, 0x3c32, 0x3229, 0x3963, 0x727c, 0x727b, 0x727a, 0x7277,
+ 0x727d, 0x727e, 0x7325, 0x7324, 0x7326, 0x312d, 0x7321, 0x7322,
+ 0x3974, 0x4c39, 0x7323, 0x4b32, 0x732b, 0x7327, 0x732c, 0x7329,
+ 0x7328, 0x375c, 0x732d, 0x732e, 0x732f, 0x732a, 0x7274, 0x7330,
+ 0x4461, 0x7334, 0x7335, 0x7333, 0x7332, 0x7338, 0x7331, 0x7336,
+ 0x7337, 0x733a, 0x7339, 0x733c, 0x733d, 0x733e, 0x4f49, 0x733b,
+ 0x426b, 0x3a6d, 0x733f, 0x7340, 0x7341, 0x7342, 0x7343, 0x3834,
+ 0x7344, 0x7345, 0x3c2f, 0x7346, 0x7347, 0x7348, 0x7349, 0x734c,
+ 0x734a, 0x4f3c, 0x734b, 0x4e6f, 0x734d, 0x4e5b, 0x734e, 0x477e,
+ 0x734f, 0x7351, 0x7352, 0x7350, 0x396d, 0x4c4d, 0x4b63, 0x5677,
+ 0x5d60, 0x4b7b, 0x322b, 0x7354, 0x3550, 0x7355, 0x7356, 0x7357,
+ 0x3975, 0x7358, 0x6054, 0x4c5b, 0x4263, 0x7359, 0x735b, 0x735a,
+ 0x735c, 0x735d, 0x735e, 0x735f, 0x7360, 0x7361, 0x7362, 0x7363,
+ 0x7364, 0x7365, 0x7366, 0x7367, 0x7368, 0x4524, 0x385d, 0x736a,
+ 0x414d, 0x736b, 0x736c, 0x4921, 0x736d, 0x736e, 0x6337, 0x6c5a,
+ 0x706d, 0x736f, 0x7370, 0x7372, 0x7373, 0x7374, 0x4e70, 0x7371,
+ 0x7375, 0x7376, 0x7378, 0x7377, 0x737a, 0x737b, 0x7379, 0x4e36,
+ 0x737c, 0x737d, 0x6354, 0x737e, 0x212a, 0x2174, 0x2170, 0x2173,
+ 0x2175, 0x214a, 0x214b, 0x2176, 0x215c, 0x2124, 0x2125, 0x213f,
+ 0x2330, 0x2331, 0x2332, 0x2333, 0x2334, 0x2335, 0x2336, 0x2337,
+ 0x2338, 0x2339, 0x2127, 0x2128, 0x2163, 0x2161, 0x2164, 0x2129,
+ 0x2177, 0x2341, 0x2342, 0x2343, 0x2344, 0x2345, 0x2346, 0x2347,
+ 0x2348, 0x2349, 0x234a, 0x234b, 0x234c, 0x234d, 0x234e, 0x234f,
+ 0x2350, 0x2351, 0x2352, 0x2353, 0x2354, 0x2355, 0x2356, 0x2357,
+ 0x2358, 0x2359, 0x235a, 0x214e, 0x214f, 0x2130, 0x2132, 0x212e,
+ 0x2361, 0x2362, 0x2363, 0x2364, 0x2365, 0x2366, 0x2367, 0x2368,
+ 0x2369, 0x236a, 0x236b, 0x236c, 0x236d, 0x236e, 0x236f, 0x2370,
+ 0x2371, 0x2372, 0x2373, 0x2374, 0x2375, 0x2376, 0x2377, 0x2378,
+ 0x2379, 0x237a, 0x2150, 0x2143, 0x2151, 0x2131, 0x216f,
+};
+
+static const Summary16 jisx0208_uni2indx_page00[16] = {
+ /* 0x0000 */
+ { 0, 0x0000 }, { 0, 0x0000 }, { 0, 0x0000 }, { 0, 0x0000 },
+ { 0, 0x0000 }, { 0, 0x1000 }, { 1, 0x0000 }, { 1, 0x0000 },
+ { 1, 0x0000 }, { 1, 0x0000 }, { 1, 0x118c }, { 6, 0x0053 },
+ { 10, 0x0000 }, { 10, 0x0080 }, { 11, 0x0000 }, { 11, 0x0080 },
+};
+static const Summary16 jisx0208_uni2indx_page03[22] = {
+ /* 0x0300 */
+ { 12, 0x0000 }, { 12, 0x0000 }, { 12, 0x0000 }, { 12, 0x0000 },
+ { 12, 0x0000 }, { 12, 0x0000 }, { 12, 0x0000 }, { 12, 0x0000 },
+ { 12, 0x0000 }, { 12, 0xfffe }, { 27, 0x03fb }, { 36, 0xfffe },
+ { 51, 0x03fb }, { 60, 0x0000 }, { 60, 0x0000 }, { 60, 0x0000 },
+ /* 0x0400 */
+ { 60, 0x0002 }, { 61, 0xffff }, { 77, 0xffff }, { 93, 0xffff },
+ { 109, 0xffff }, { 125, 0x0002 },
+};
+static const Summary16 jisx0208_uni2indx_page20[50] = {
+ /* 0x2000 */
+ { 126, 0x0000 }, { 126, 0x3361 }, { 133, 0x0063 }, { 137, 0x080d },
+ { 141, 0x0000 }, { 141, 0x0000 }, { 141, 0x0000 }, { 141, 0x0000 },
+ { 141, 0x0000 }, { 141, 0x0000 }, { 141, 0x0000 }, { 141, 0x0000 },
+ { 141, 0x0000 }, { 141, 0x0000 }, { 141, 0x0000 }, { 141, 0x0000 },
+ /* 0x2100 */
+ { 141, 0x0008 }, { 142, 0x0000 }, { 142, 0x0800 }, { 143, 0x0000 },
+ { 143, 0x0000 }, { 143, 0x0000 }, { 143, 0x0000 }, { 143, 0x0000 },
+ { 143, 0x0000 }, { 143, 0x000f }, { 147, 0x0000 }, { 147, 0x0000 },
+ { 147, 0x0000 }, { 147, 0x0014 }, { 149, 0x0000 }, { 149, 0x0000 },
+ /* 0x2200 */
+ { 149, 0x098d }, { 155, 0x6404 }, { 159, 0x1f81 }, { 166, 0x2030 },
+ { 169, 0x0000 }, { 169, 0x0004 }, { 170, 0x0cc3 }, { 176, 0x0000 },
+ { 176, 0x00cc }, { 180, 0x0000 }, { 180, 0x0020 }, { 181, 0x0000 },
+ { 181, 0x0000 }, { 181, 0x0000 }, { 181, 0x0000 }, { 181, 0x0000 },
+ /* 0x2300 */
+ { 181, 0x0000 }, { 181, 0x0004 },
+};
+static const Summary16 jisx0208_uni2indx_page25[23] = {
+ /* 0x2500 */
+ { 182, 0x900f }, { 188, 0x3999 }, { 196, 0x9939 }, { 204, 0x9999 },
+ { 212, 0x0804 }, { 214, 0x0000 }, { 214, 0x0000 }, { 214, 0x0000 },
+ { 214, 0x0000 }, { 214, 0x0000 }, { 214, 0x0003 }, { 216, 0x300c },
+ { 220, 0xc8c0 }, { 225, 0x0000 }, { 225, 0x8000 }, { 226, 0x0000 },
+ /* 0x2600 */
+ { 226, 0x0060 }, { 228, 0x0000 }, { 228, 0x0000 }, { 228, 0x0000 },
+ { 228, 0x0005 }, { 230, 0x0000 }, { 230, 0xa400 },
+};
+static const Summary16 jisx0208_uni2indx_page30[16] = {
+ /* 0x3000 */
+ { 233, 0xffef }, { 248, 0x103f }, { 255, 0x0000 }, { 255, 0x0000 },
+ { 255, 0xfffe }, { 270, 0xffff }, { 286, 0xffff }, { 302, 0xffff },
+ { 318, 0xffff }, { 334, 0x780f }, { 342, 0xfffe }, { 357, 0xffff },
+ { 373, 0xffff }, { 389, 0xffff }, { 405, 0xffff }, { 421, 0x787f },
+};
+static const Summary16 jisx0208_uni2indx_page4e[1307] = {
+ /* 0x4e00 */
+ { 432, 0x6f8b }, { 442, 0x43f3 }, { 451, 0x2442 }, { 455, 0x9b46 },
+ { 463, 0xe82c }, { 470, 0xe3e0 }, { 478, 0x0004 }, { 479, 0x400a },
+ { 482, 0x5f65 }, { 492, 0xdb36 }, { 502, 0x7977 }, { 513, 0x0449 },
+ { 517, 0xecd7 }, { 528, 0xe3f0 }, { 537, 0x6038 }, { 542, 0x08c5 },
+ /* 0x4f00 */
+ { 547, 0xe602 }, { 553, 0x3403 }, { 558, 0x8000 }, { 559, 0x3551 },
+ { 566, 0xe0c8 }, { 572, 0x7eab }, { 583, 0x8200 }, { 585, 0x9869 },
+ { 592, 0xa948 }, { 598, 0x2942 }, { 603, 0xe803 }, { 609, 0x8060 },
+ { 612, 0x441c }, { 617, 0xad93 }, { 626, 0xc03a }, { 632, 0x4568 },
+ /* 0x5000 */
+ { 638, 0xaa60 }, { 644, 0x8656 }, { 651, 0x3f7a }, { 662, 0x0240 },
+ { 664, 0x8388 }, { 669, 0x1461 }, { 674, 0x1020 }, { 676, 0x2174 },
+ { 682, 0x2021 }, { 685, 0x0702 }, { 689, 0x3000 }, { 691, 0x40bc },
+ { 697, 0xa624 }, { 703, 0x4462 }, { 708, 0x60a8 }, { 713, 0x0a20 },
+ /* 0x5100 */
+ { 716, 0x0217 }, { 721, 0x8574 }, { 728, 0x0402 }, { 730, 0x9c84 },
+ { 736, 0x7bfb }, { 749, 0x1415 }, { 754, 0x7f24 }, { 763, 0x11e2 },
+ { 769, 0xb665 }, { 778, 0x02ef }, { 786, 0x1f75 }, { 796, 0x20ff },
+ { 805, 0x3a70 }, { 812, 0x3840 }, { 816, 0x26c3 }, { 823, 0x6763 },
+ /* 0x5200 */
+ { 832, 0x4dd9 }, { 841, 0x2092 }, { 845, 0x46b0 }, { 851, 0x0fc9 },
+ { 859, 0xbc98 }, { 867, 0x4850 }, { 871, 0x8638 }, { 877, 0xa03f },
+ { 885, 0x2388 }, { 890, 0x8816 }, { 895, 0x3e09 }, { 902, 0x5232 },
+ { 908, 0x22aa }, { 914, 0xe3a4 }, { 922, 0x00dd }, { 928, 0xc72c },
+ /* 0x5300 */
+ { 936, 0xa166 }, { 943, 0x26e1 }, { 950, 0x840b }, { 955, 0x8f0a },
+ { 962, 0x27eb }, { 972, 0x559e }, { 981, 0xc241 }, { 986, 0x89bb },
+ { 995, 0x0014 }, { 997, 0x8540 }, { 1001, 0x6361 }, { 1008, 0x0849 },
+ { 1012, 0x7f0c }, { 1021, 0x8ad0 }, { 1027, 0xff3e }, { 1040, 0x05cf },
+ /* 0x5400 */
+ { 1048, 0xff1a }, { 1059, 0xa803 }, { 1064, 0x7a41 }, { 1071, 0x7b40 },
+ { 1078, 0x4745 }, { 1085, 0x8002 }, { 1087, 0x0500 }, { 1089, 0x38eb },
+ { 1098, 0xd851 }, { 1105, 0x0005 }, { 1107, 0x9934 }, { 1114, 0x710c },
+ { 1120, 0x0397 }, { 1127, 0x0100 }, { 1128, 0x6366 }, { 1136, 0x2404 },
+ /* 0x5500 */
+ { 1139, 0x80d0 }, { 1143, 0x0051 }, { 1146, 0xc000 }, { 1148, 0x430a },
+ { 1153, 0x9071 }, { 1159, 0x30c8 }, { 1164, 0x0008 }, { 1165, 0x5800 },
+ { 1168, 0x0e99 }, { 1175, 0xf700 }, { 1182, 0x5f80 }, { 1189, 0x0041 },
+ { 1191, 0x00b0 }, { 1194, 0x9410 }, { 1198, 0x0018 }, { 1200, 0x6280 },
+ /* 0x5600 */
+ { 1204, 0x0240 }, { 1206, 0x09d0 }, { 1211, 0x8200 }, { 1213, 0x0156 },
+ { 1218, 0x5004 }, { 1221, 0x0801 }, { 1223, 0x1d10 }, { 1228, 0x0510 },
+ { 1231, 0x84c1 }, { 1236, 0x0010 }, { 1237, 0x4025 }, { 1241, 0x1050 },
+ { 1244, 0x410f }, { 1250, 0x4d8a }, { 1257, 0x4009 }, { 1260, 0xa60d },
+ /* 0x5700 */
+ { 1267, 0xab19 }, { 1275, 0x914c }, { 1281, 0x21c0 }, { 1285, 0x0981 },
+ { 1289, 0xc485 }, { 1295, 0x0003 }, { 1297, 0x0652 }, { 1302, 0x8000 },
+ { 1303, 0x0b04 }, { 1307, 0x0008 }, { 1308, 0x041d }, { 1313, 0x0009 },
+ { 1315, 0x4849 }, { 1320, 0x905c }, { 1326, 0x0009 }, { 1328, 0x1690 },
+ /* 0x5800 */
+ { 1333, 0x0c65 }, { 1339, 0x2220 }, { 1342, 0x8412 }, { 1346, 0x2433 },
+ { 1352, 0x0c03 }, { 1356, 0x4796 }, { 1364, 0x0a04 }, { 1367, 0x4225 },
+ { 1372, 0x0028 }, { 1374, 0x9088 }, { 1378, 0x4900 }, { 1381, 0x4f08 },
+ { 1387, 0x14a2 }, { 1392, 0xd3aa }, { 1401, 0xd830 }, { 1407, 0x3e87 },
+ /* 0x5900 */
+ { 1416, 0x8604 }, { 1420, 0x1f61 }, { 1428, 0x7ea4 }, { 1437, 0x4186 },
+ { 1442, 0xc390 }, { 1448, 0x05b3 }, { 1455, 0x57a5 }, { 1464, 0x2118 },
+ { 1468, 0x241e }, { 1474, 0x2a48 }, { 1479, 0x1128 }, { 1483, 0x4a04 },
+ { 1487, 0x0a40 }, { 1490, 0x161b }, { 1497, 0x0d60 }, { 1502, 0x8840 },
+ /* 0x5a00 */
+ { 1505, 0x020a }, { 1508, 0x9502 }, { 1513, 0x8221 }, { 1517, 0x1060 },
+ { 1520, 0x0243 }, { 1524, 0x0400 }, { 1525, 0x1444 }, { 1529, 0x8000 },
+ { 1530, 0x0000 }, { 1530, 0x0c04 }, { 1533, 0x0000 }, { 1533, 0x7000 },
+ { 1536, 0x1a06 }, { 1541, 0x00c1 }, { 1544, 0x024a }, { 1548, 0x0c00 },
+ /* 0x5b00 */
+ { 1550, 0x1a00 }, { 1553, 0x0040 }, { 1554, 0x1404 }, { 1557, 0x4045 },
+ { 1561, 0x0029 }, { 1564, 0xbdb3 }, { 1575, 0x0a78 }, { 1581, 0x052b },
+ { 1587, 0xbba9 }, { 1597, 0xbfa0 }, { 1606, 0x407c }, { 1612, 0x8379 },
+ { 1620, 0x12fc }, { 1628, 0xe81d }, { 1636, 0x4bf6 }, { 1646, 0xc569 },
+ /* 0x5c00 */
+ { 1654, 0xeff6 }, { 1667, 0x044a }, { 1671, 0x2115 }, { 1676, 0xff02 },
+ { 1685, 0xed63 }, { 1695, 0x402b }, { 1700, 0xd033 }, { 1707, 0x0242 },
+ { 1710, 0x1000 }, { 1711, 0x0013 }, { 1714, 0x1b02 }, { 1719, 0x59ca },
+ { 1727, 0x00a0 }, { 1729, 0x0200 }, { 1730, 0xa703 }, { 1737, 0x2c41 },
+ /* 0x5d00 */
+ { 1742, 0x4880 }, { 1745, 0x8ff2 }, { 1755, 0x0204 }, { 1757, 0x0000 },
+ { 1757, 0x5800 }, { 1760, 0x1005 }, { 1763, 0x9200 }, { 1766, 0x0048 },
+ { 1768, 0x1894 }, { 1773, 0x2001 }, { 1775, 0x5004 }, { 1778, 0x3480 },
+ { 1782, 0x3200 }, { 1785, 0x684c }, { 1791, 0x49ea }, { 1799, 0x68be },
+ /* 0x5e00 */
+ { 1808, 0x184c }, { 1813, 0x2e42 }, { 1819, 0xa820 }, { 1823, 0x21c9 },
+ { 1829, 0x50b9 }, { 1836, 0x80b0 }, { 1840, 0x001e }, { 1844, 0xff7c },
+ { 1857, 0x849a }, { 1863, 0x14e0 }, { 1868, 0x28c1 }, { 1873, 0x01e0 },
+ { 1877, 0x870e }, { 1884, 0xac49 }, { 1891, 0x130f }, { 1898, 0xdddb },
+ /* 0x5f00 */
+ { 1910, 0xbe1a }, { 1919, 0x89fb }, { 1929, 0xa2e0 }, { 1935, 0x51a2 },
+ { 1941, 0x5502 }, { 1946, 0x32ca }, { 1953, 0x3e46 }, { 1961, 0x928b },
+ { 1968, 0x1dbf }, { 1979, 0x438f }, { 1987, 0x6703 }, { 1994, 0x3218 },
+ { 1999, 0x3028 }, { 2003, 0x33c0 }, { 2009, 0x0811 }, { 2012, 0xa923 },
+ /* 0x6000 */
+ { 2019, 0xc000 }, { 2021, 0x3a65 }, { 2029, 0x8fe3 }, { 2039, 0x0402 },
+ { 2041, 0x2c4e }, { 2048, 0x8625 }, { 2054, 0xbf3d }, { 2066, 0x00a1 },
+ { 2069, 0x3a1a }, { 2076, 0x8cd4 }, { 2083, 0x06c9 }, { 2089, 0x317c },
+ { 2097, 0x00e0 }, { 2100, 0x950a }, { 2106, 0x018b }, { 2111, 0x0edb },
+ /* 0x6100 */
+ { 2120, 0xe34b }, { 2129, 0x8c20 }, { 2133, 0x1182 }, { 2137, 0xf010 },
+ { 2142, 0x7d94 }, { 2151, 0xa728 }, { 2158, 0xc9ac }, { 2166, 0x40fb },
+ { 2174, 0x4484 }, { 2178, 0x0653 }, { 2184, 0x5a90 }, { 2190, 0x4444 },
+ { 2194, 0x3fc8 }, { 2203, 0x0001 }, { 2204, 0x0048 }, { 2206, 0xf5d4 },
+ /* 0x6200 */
+ { 2216, 0x7701 }, { 2223, 0xec57 }, { 2233, 0xc442 }, { 2238, 0x891d },
+ { 2245, 0x6b83 }, { 2253, 0x4928 }, { 2258, 0x4109 }, { 2262, 0xd242 },
+ { 2268, 0x061d }, { 2274, 0x59fe }, { 2285, 0x1800 }, { 2287, 0x3a22 },
+ { 2293, 0xb7e4 }, { 2303, 0x3b9f }, { 2314, 0xf003 }, { 2320, 0xc0ea },
+ /* 0x6300 */
+ { 2327, 0x1386 }, { 2333, 0x8202 }, { 2336, 0x8980 }, { 2340, 0xe400 },
+ { 2344, 0xb200 }, { 2348, 0x10a1 }, { 2352, 0x4b80 }, { 2357, 0x0cc4 },
+ { 2362, 0xd309 }, { 2369, 0x8944 }, { 2374, 0x1faf }, { 2385, 0x4834 },
+ { 2390, 0x8259 }, { 2396, 0x0c45 }, { 2401, 0x420a }, { 2405, 0x0450 },
+ /* 0x6400 */
+ { 2408, 0xa040 }, { 2411, 0x10c8 }, { 2415, 0x3140 }, { 2419, 0x4450 },
+ { 2423, 0x4004 }, { 2425, 0x0100 }, { 2426, 0x8280 }, { 2429, 0x0540 },
+ { 2432, 0x0108 }, { 2434, 0x442c }, { 2439, 0x6a30 }, { 2445, 0x1a05 },
+ { 2450, 0x20a6 }, { 2455, 0x0514 }, { 2459, 0x90cf }, { 2467, 0x6456 },
+ /* 0x6500 */
+ { 2474, 0x0021 }, { 2476, 0x3100 }, { 2479, 0x9c18 }, { 2485, 0xcbf0 },
+ { 2494, 0xa120 }, { 2498, 0x63e2 }, { 2506, 0x104c }, { 2510, 0x01b5 },
+ { 2516, 0x538c }, { 2523, 0x9a83 }, { 2530, 0xb8b2 }, { 2538, 0x3281 },
+ { 2543, 0x987a }, { 2551, 0x0a84 }, { 2555, 0x33e7 }, { 2565, 0x0c02 },
+ /* 0x6600 */
+ { 2568, 0xd4cc }, { 2576, 0x9018 }, { 2580, 0xa1a1 }, { 2586, 0x9070 },
+ { 2591, 0x8a1e }, { 2598, 0xe004 }, { 2602, 0xc3d4 }, { 2610, 0x0451 },
+ { 2614, 0x439a }, { 2621, 0x21c2 }, { 2626, 0x4844 }, { 2630, 0x5310 },
+ { 2635, 0x0292 }, { 2639, 0x3640 }, { 2644, 0x0241 }, { 2647, 0xf3bd },
+ /* 0x6700 */
+ { 2659, 0xab09 }, { 2666, 0xe8f0 }, { 2674, 0x7dc0 }, { 2682, 0xa5d2 },
+ { 2690, 0xc242 }, { 2695, 0xd24b }, { 2703, 0xa43f }, { 2712, 0xd0af },
+ { 2721, 0x1aa0 }, { 2726, 0x34a1 }, { 2732, 0x8247 }, { 2738, 0x03d8 },
+ { 2744, 0xc452 }, { 2750, 0x651b }, { 2758, 0xd294 }, { 2765, 0xc83a },
+ /* 0x6800 */
+ { 2772, 0x001c }, { 2775, 0x40c8 }, { 2779, 0x0e06 }, { 2784, 0x3314 },
+ { 2790, 0x614f }, { 2798, 0xb21b }, { 2806, 0x0088 }, { 2808, 0xc0d0 },
+ { 2813, 0xa02a }, { 2818, 0xa898 }, { 2824, 0xa1c5 }, { 2831, 0x166b },
+ { 2839, 0x2e50 }, { 2845, 0x85b4 }, { 2852, 0xc08b }, { 2858, 0x0604 },
+ /* 0x6900 */
+ { 2861, 0xf933 }, { 2871, 0x1e04 }, { 2876, 0x056e }, { 2883, 0xa251 },
+ { 2889, 0x0400 }, { 2890, 0x7638 }, { 2898, 0xec07 }, { 2906, 0x73b8 },
+ { 2915, 0x4406 }, { 2919, 0x1832 }, { 2924, 0x4081 }, { 2927, 0xc816 },
+ { 2933, 0x7c8a }, { 2941, 0x6309 }, { 2947, 0x2980 }, { 2951, 0xaa04 },
+ /* 0x6a00 */
+ { 2956, 0x1c24 }, { 2961, 0xca9c }, { 2969, 0x4e0e }, { 2976, 0x2760 },
+ { 2982, 0x0990 }, { 2986, 0x8300 }, { 2989, 0x0046 }, { 2992, 0x8104 },
+ { 2995, 0x6011 }, { 2999, 0x1081 }, { 3002, 0x540d }, { 3008, 0x0908 },
+ { 3011, 0x000e }, { 3014, 0xcc0a }, { 3020, 0x0500 }, { 3022, 0x0c00 },
+ /* 0x6b00 */
+ { 3024, 0x0430 }, { 3027, 0xa044 }, { 3031, 0x008b }, { 3035, 0x6784 },
+ { 3042, 0x5288 }, { 3047, 0x8a19 }, { 3053, 0x865e }, { 3061, 0x8b18 },
+ { 3067, 0x2e59 }, { 3075, 0x4160 }, { 3079, 0x8c10 }, { 3083, 0x9cbe },
+ { 3093, 0x6861 }, { 3099, 0x891c }, { 3105, 0x9800 }, { 3108, 0x0008 },
+ /* 0x6c00 */
+ { 3109, 0x8100 }, { 3111, 0x089a }, { 3116, 0x0018 }, { 3118, 0x4190 },
+ { 3122, 0x4007 }, { 3126, 0xe4a1 }, { 3133, 0x0505 }, { 3137, 0x640d },
+ { 3143, 0x310e }, { 3149, 0x0e4d }, { 3156, 0x4806 }, { 3160, 0xff0a },
+ { 3170, 0x1632 }, { 3176, 0x2aa8 }, { 3182, 0x852e }, { 3189, 0x000b },
+ /* 0x6d00 */
+ { 3192, 0x1800 }, { 3194, 0xca84 }, { 3200, 0x0e20 }, { 3204, 0x696c },
+ { 3212, 0x0032 }, { 3215, 0x1600 }, { 3218, 0x5658 }, { 3225, 0x0390 },
+ { 3229, 0x5120 }, { 3233, 0x1a28 }, { 3238, 0x8000 }, { 3239, 0x1124 },
+ { 3243, 0x18e1 }, { 3249, 0x4326 }, { 3255, 0x5d52 }, { 3263, 0x0eaa },
+ /* 0x6e00 */
+ { 3270, 0x0fa0 }, { 3276, 0xae28 }, { 3283, 0xfa7b }, { 3295, 0x4500 },
+ { 3298, 0x6408 }, { 3302, 0x8940 }, { 3306, 0xc880 }, { 3310, 0xc044 },
+ { 3314, 0x9005 }, { 3318, 0xb141 }, { 3324, 0x8424 }, { 3328, 0x24c4 },
+ { 3333, 0x1a34 }, { 3339, 0x603a }, { 3345, 0x9000 }, { 3347, 0xc194 },
+ /* 0x6f00 */
+ { 3353, 0x8246 }, { 3358, 0x003a }, { 3362, 0x180d }, { 3367, 0xc106 },
+ { 3372, 0x0022 }, { 3374, 0x9910 }, { 3379, 0xe050 }, { 3384, 0x1511 },
+ { 3389, 0x4057 }, { 3395, 0x0082 }, { 3397, 0x041a }, { 3401, 0x020a },
+ { 3404, 0x004f }, { 3409, 0x8930 }, { 3414, 0xd813 }, { 3421, 0x444a },
+ /* 0x7000 */
+ { 3426, 0x8a02 }, { 3430, 0xed22 }, { 3438, 0x10c0 }, { 3441, 0x4005 },
+ { 3444, 0x1000 }, { 3445, 0x0102 }, { 3447, 0x8808 }, { 3450, 0x3101 },
+ { 3454, 0x4600 }, { 3457, 0x0204 }, { 3459, 0xf000 }, { 3463, 0x0708 },
+ { 3467, 0x8900 }, { 3470, 0xa200 }, { 3473, 0x0000 }, { 3473, 0x2202 },
+ /* 0x7100 */
+ { 3476, 0x0200 }, { 3477, 0x1610 }, { 3481, 0x0042 }, { 3483, 0x1040 },
+ { 3485, 0x5200 }, { 3488, 0x0260 }, { 3491, 0x52f4 }, { 3499, 0x2000 },
+ { 3500, 0x8510 }, { 3504, 0x8230 }, { 3508, 0x1100 }, { 3510, 0x4202 },
+ { 3513, 0x4308 }, { 3517, 0x80b5 }, { 3523, 0x70e1 }, { 3530, 0x9a20 },
+ /* 0x7200 */
+ { 3535, 0x2040 }, { 3537, 0x0801 }, { 3539, 0x3500 }, { 3543, 0xfc65 },
+ { 3553, 0x19c1 }, { 3559, 0xab04 }, { 3565, 0x0286 }, { 3569, 0x6214 },
+ { 3574, 0x0087 }, { 3578, 0x0044 }, { 3580, 0x9085 }, { 3585, 0x0244 },
+ { 3588, 0x405c }, { 3593, 0x0a85 }, { 3598, 0x3207 }, { 3604, 0x3380 },
+ /* 0x7300 */
+ { 3609, 0x0400 }, { 3610, 0xb8c0 }, { 3616, 0xce20 }, { 3622, 0xc0d0 },
+ { 3627, 0xc030 }, { 3631, 0x0080 }, { 3632, 0x0508 }, { 3635, 0x0d25 },
+ { 3641, 0x0a90 }, { 3645, 0x0040 }, { 3646, 0x0200 }, { 3647, 0x080c },
+ { 3650, 0x6505 }, { 3656, 0x4000 }, { 3657, 0x6421 }, { 3662, 0x4102 },
+ /* 0x7400 */
+ { 3665, 0x0268 }, { 3669, 0x0000 }, { 3669, 0x0024 }, { 3671, 0x847c },
+ { 3678, 0x0002 }, { 3679, 0xde20 }, { 3686, 0x8619 }, { 3692, 0x4049 },
+ { 3696, 0x0808 }, { 3698, 0x4000 }, { 3699, 0x0084 }, { 3701, 0x2001 },
+ { 3703, 0x8400 }, { 3705, 0x1010 }, { 3707, 0x42cd }, { 3714, 0x01c7 },
+ /* 0x7500 */
+ { 3720, 0x7038 }, { 3726, 0xd52a }, { 3734, 0x1968 }, { 3740, 0x1d8f },
+ { 3749, 0xbe50 }, { 3757, 0x3e12 }, { 3764, 0x2ef5 }, { 3774, 0x81d9 },
+ { 3781, 0xcec4 }, { 3789, 0x2412 }, { 3793, 0x0828 }, { 3796, 0x732e },
+ { 3805, 0x24ac }, { 3811, 0x4b34 }, { 3818, 0x020c }, { 3821, 0xd41d },
+ /* 0x7600 */
+ { 3829, 0x2a02 }, { 3833, 0x8000 }, { 3834, 0x0097 }, { 3839, 0x0811 },
+ { 3842, 0x11c4 }, { 3847, 0x1144 }, { 3851, 0x1786 }, { 3858, 0x7d45 },
+ { 3867, 0x49d9 }, { 3875, 0x0649 }, { 3880, 0x4000 }, { 3881, 0x8791 },
+ { 3888, 0x254c }, { 3894, 0xd8c4 }, { 3901, 0x44ba }, { 3908, 0x4914 },
+ /* 0x7700 */
+ { 3913, 0x1b92 }, { 3920, 0xc800 }, { 3923, 0x0271 }, { 3928, 0x1580 },
+ { 3932, 0x0081 }, { 3934, 0x0c00 }, { 3936, 0x096a }, { 3942, 0xc200 },
+ { 3945, 0x4800 }, { 3947, 0x4002 }, { 3949, 0x3021 }, { 3953, 0xba49 },
+ { 3961, 0x2080 }, { 3963, 0x1c80 }, { 3967, 0xe2ac }, { 3975, 0x1008 },
+ /* 0x7800 */
+ { 3977, 0x1004 }, { 3979, 0x0034 }, { 3982, 0x00e1 }, { 3986, 0x8414 },
+ { 3990, 0x0020 }, { 3991, 0x2000 }, { 3992, 0x9800 }, { 3995, 0x1014 },
+ { 3998, 0x70c2 }, { 4004, 0x04aa }, { 4009, 0x8688 }, { 4014, 0x5420 },
+ { 4018, 0x0c62 }, { 4023, 0x0413 }, { 4027, 0x9180 }, { 4031, 0x2010 },
+ /* 0x7900 */
+ { 4033, 0x4082 }, { 4036, 0x0206 }, { 4039, 0x1c40 }, { 4043, 0x5400 },
+ { 4046, 0x0383 }, { 4051, 0xe4e9 }, { 4060, 0x2125 }, { 4065, 0x8480 },
+ { 4068, 0xe433 }, { 4076, 0x2000 }, { 4077, 0x44c0 }, { 4081, 0xe609 },
+ { 4088, 0x0a03 }, { 4092, 0x8126 }, { 4097, 0x12da }, { 4104, 0x0801 },
+ /* 0x7a00 */
+ { 4106, 0x6901 }, { 4111, 0x9790 }, { 4118, 0x4001 }, { 4120, 0xf886 },
+ { 4128, 0xe24d }, { 4136, 0x0081 }, { 4138, 0x0a0e }, { 4143, 0xa651 },
+ { 4150, 0x011a }, { 4154, 0x81ec }, { 4161, 0xc600 }, { 4165, 0x8441 },
+ { 4169, 0xadb8 }, { 4178, 0xb62c }, { 4186, 0xa46f }, { 4195, 0x8741 },
+ /* 0x7b00 */
+ { 4201, 0x8d54 }, { 4208, 0x4b02 }, { 4213, 0x1161 }, { 4218, 0x0268 },
+ { 4222, 0xbb60 }, { 4230, 0x2057 }, { 4236, 0x50a0 }, { 4240, 0x0433 },
+ { 4245, 0xa8c0 }, { 4250, 0xb7b4 }, { 4260, 0x2402 }, { 4263, 0x0112 },
+ { 4266, 0x9ad3 }, { 4275, 0x2000 }, { 4276, 0x2271 }, { 4282, 0x00c8 },
+ /* 0x7c00 */
+ { 4285, 0x2081 }, { 4288, 0x809e }, { 4294, 0x0c8a }, { 4299, 0xe180 },
+ { 4304, 0xb009 }, { 4309, 0x8151 }, { 4314, 0x1031 }, { 4318, 0x4028 },
+ { 4321, 0x2a0e }, { 4327, 0x89a5 }, { 4334, 0x69b6 }, { 4343, 0x620e },
+ { 4349, 0x4425 }, { 4354, 0xd144 }, { 4360, 0x8085 }, { 4364, 0x4d54 },
+ /* 0x7d00 */
+ { 4371, 0x2c75 }, { 4379, 0x1fb1 }, { 4388, 0xd807 }, { 4395, 0x862d },
+ { 4402, 0xd87c }, { 4411, 0x4841 }, { 4415, 0x414e }, { 4421, 0x226e },
+ { 4428, 0x8200 }, { 4430, 0x9e08 }, { 4436, 0xf80c }, { 4443, 0xed37 },
+ { 4454, 0x8c80 }, { 4458, 0x7526 }, { 4466, 0x9313 }, { 4473, 0x0814 },
+ /* 0x7e00 */
+ { 4476, 0x0e32 }, { 4482, 0xc804 }, { 4486, 0x484e }, { 4492, 0x6ea6 },
+ { 4501, 0x2c4a }, { 4507, 0x6670 }, { 4514, 0x26c0 }, { 4519, 0xba01 },
+ { 4525, 0xd30c }, { 4532, 0x185d }, { 4539, 0x0000 }, { 4539, 0x0000 },
+ { 4539, 0x0000 }, { 4539, 0x0000 }, { 4539, 0x0000 }, { 4539, 0x0000 },
+ /* 0x7f00 */
+ { 4539, 0x0000 }, { 4539, 0x0000 }, { 4539, 0x0000 }, { 4539, 0x0540 },
+ { 4542, 0x7020 }, { 4546, 0x8133 }, { 4552, 0x4f81 }, { 4559, 0x03a5 },
+ { 4565, 0x55ec }, { 4574, 0x6410 }, { 4578, 0xc318 }, { 4584, 0x2344 },
+ { 4589, 0x1462 }, { 4594, 0x0034 }, { 4597, 0x0a43 }, { 4602, 0x1a09 },
+ /* 0x8000 */
+ { 4607, 0x187b }, { 4615, 0x13a5 }, { 4622, 0x0102 }, { 4624, 0xa848 },
+ { 4629, 0x0440 }, { 4631, 0xc544 }, { 4637, 0x8106 }, { 4641, 0xe2dd },
+ { 4651, 0x1af0 }, { 4658, 0x2d48 }, { 4664, 0xb626 }, { 4672, 0x0416 },
+ { 4676, 0x5058 }, { 4681, 0x6e40 }, { 4687, 0x8032 }, { 4691, 0x3112 },
+ /* 0x8100 */
+ { 4696, 0x07e4 }, { 4703, 0x0c00 }, { 4705, 0x8208 }, { 4708, 0x420a },
+ { 4712, 0x4840 }, { 4715, 0x803b }, { 4721, 0x4860 }, { 4725, 0x8713 },
+ { 4732, 0x850d }, { 4738, 0x3428 }, { 4743, 0x0319 }, { 4748, 0xe529 },
+ { 4756, 0x2345 }, { 4762, 0x870a }, { 4768, 0x25a9 }, { 4775, 0x5c18 },
+ /* 0x8200 */
+ { 4781, 0x77a6 }, { 4791, 0xd9c5 }, { 4800, 0x5e00 }, { 4805, 0x03e8 },
+ { 4811, 0x0081 }, { 4813, 0xa700 }, { 4818, 0xcd54 }, { 4826, 0x41c6 },
+ { 4832, 0x2800 }, { 4834, 0xa204 }, { 4838, 0xb860 }, { 4844, 0x2b0a },
+ { 4850, 0x0020 }, { 4851, 0xda9e }, { 4861, 0x08ea }, { 4867, 0x0e1a },
+ /* 0x8300 */
+ { 4873, 0x427c }, { 4880, 0x11c0 }, { 4884, 0x8908 }, { 4888, 0x0376 },
+ { 4895, 0x8621 }, { 4900, 0x0105 }, { 4903, 0x0000 }, { 4903, 0x18a8 },
+ { 4908, 0x46a0 }, { 4913, 0xc448 }, { 4918, 0x0d05 }, { 4923, 0x2022 },
+ { 4926, 0x5422 }, { 4931, 0x9148 }, { 4936, 0x8a01 }, { 4940, 0x2897 },
+ /* 0x8400 */
+ { 4947, 0x7898 }, { 4954, 0x0008 }, { 4955, 0x1605 }, { 4960, 0x3122 },
+ { 4965, 0x4240 }, { 4968, 0x0880 }, { 4970, 0xfa4e }, { 4980, 0x06a2 },
+ { 4985, 0x0814 }, { 4988, 0x9211 }, { 4993, 0x2002 }, { 4995, 0x9b04 },
+ { 5001, 0x2e52 }, { 5008, 0x0643 }, { 5013, 0x5000 }, { 5015, 0x9010 },
+ /* 0x8500 */
+ { 5018, 0x0041 }, { 5020, 0x85ba }, { 5028, 0x3042 }, { 5032, 0x2020 },
+ { 5034, 0x4f0b }, { 5042, 0x05a0 }, { 5046, 0x2708 }, { 5051, 0x4080 },
+ { 5053, 0x0591 }, { 5058, 0x1a93 }, { 5065, 0xdf50 }, { 5074, 0x0600 },
+ { 5076, 0xa202 }, { 5080, 0x3021 }, { 5084, 0x0630 }, { 5088, 0x4e80 },
+ /* 0x8600 */
+ { 5093, 0x0cc4 }, { 5098, 0x04c8 }, { 5102, 0xa004 }, { 5105, 0x8001 },
+ { 5107, 0x6000 }, { 5109, 0xd431 }, { 5116, 0x0880 }, { 5118, 0x0a02 },
+ { 5121, 0x1c00 }, { 5124, 0x0028 }, { 5126, 0x8e18 }, { 5132, 0x0041 },
+ { 5134, 0x6ad0 }, { 5141, 0xca10 }, { 5146, 0xf210 }, { 5152, 0x4b00 },
+ /* 0x8700 */
+ { 5156, 0x274d }, { 5164, 0x1506 }, { 5169, 0x0220 }, { 5171, 0x8890 },
+ { 5175, 0x5a00 }, { 5179, 0x82a8 }, { 5184, 0x4549 }, { 5190, 0x8150 },
+ { 5194, 0x2004 }, { 5196, 0x8000 }, { 5197, 0x8804 }, { 5200, 0x2c08 },
+ { 5204, 0x08d1 }, { 5209, 0x0005 }, { 5211, 0x8001 }, { 5213, 0x4ac4 },
+ /* 0x8800 */
+ { 5219, 0xe020 }, { 5223, 0x0062 }, { 5226, 0x008e }, { 5230, 0x0a42 },
+ { 5234, 0x3055 }, { 5240, 0x6a8c }, { 5247, 0x090e }, { 5252, 0xe0a5 },
+ { 5259, 0x2906 }, { 5264, 0x42c4 }, { 5269, 0x4814 }, { 5273, 0x80b3 },
+ { 5279, 0x803e }, { 5285, 0xb330 }, { 5292, 0x0102 }, { 5294, 0x731c },
+ /* 0x8900 */
+ { 5302, 0x1494 }, { 5307, 0x600d }, { 5312, 0x0c20 }, { 5315, 0x0940 },
+ { 5318, 0x301a }, { 5323, 0xc040 }, { 5326, 0xa451 }, { 5332, 0xc094 },
+ { 5337, 0x8dca }, { 5345, 0x05c8 }, { 5350, 0x96c2 }, { 5357, 0xa40c },
+ { 5362, 0x0001 }, { 5363, 0x3404 }, { 5367, 0x00c8 }, { 5370, 0x0110 },
+ /* 0x8a00 */
+ { 5372, 0x550d }, { 5379, 0xa9c9 }, { 5387, 0x2428 }, { 5391, 0x1c5a },
+ { 5398, 0x0142 }, { 5401, 0x4837 }, { 5408, 0x7a4d }, { 5417, 0x100f },
+ { 5422, 0x32b4 }, { 5429, 0x452a }, { 5435, 0x317b }, { 5444, 0x9205 },
+ { 5449, 0xb894 }, { 5456, 0x5c44 }, { 5462, 0x68d7 }, { 5471, 0x458a },
+ /* 0x8b00 */
+ { 5477, 0x5097 }, { 5484, 0x2ed1 }, { 5492, 0x1943 }, { 5498, 0x4208 },
+ { 5501, 0xd202 }, { 5506, 0x9d40 }, { 5512, 0x9840 }, { 5516, 0x2097 },
+ { 5522, 0x5409 }, { 5527, 0x064d }, { 5533, 0x0000 }, { 5533, 0x0000 },
+ { 5533, 0x0000 }, { 5533, 0x0000 }, { 5533, 0x0000 }, { 5533, 0x0000 },
+ /* 0x8c00 */
+ { 5533, 0x0000 }, { 5533, 0x0000 }, { 5533, 0x0000 }, { 5533, 0x8480 },
+ { 5536, 0x5542 }, { 5542, 0x0421 }, { 5545, 0x1c06 }, { 5550, 0x1700 },
+ { 5554, 0x7624 }, { 5561, 0x6110 }, { 5565, 0xff87 }, { 5577, 0xb9dd },
+ { 5588, 0x659f }, { 5598, 0x5c0a }, { 5604, 0x245d }, { 5611, 0x3c00 },
+ /* 0x8d00 */
+ { 5615, 0xadb0 }, { 5623, 0x0059 }, { 5627, 0x0000 }, { 5627, 0x0000 },
+ { 5627, 0x0000 }, { 5627, 0x0000 }, { 5627, 0x28d0 }, { 5632, 0x009b },
+ { 5637, 0x0422 }, { 5640, 0x0200 }, { 5641, 0x0108 }, { 5643, 0x4408 },
+ { 5646, 0x9804 }, { 5650, 0xac40 }, { 5655, 0x8d0a }, { 5661, 0x9028 },
+ /* 0x8e00 */
+ { 5665, 0x8700 }, { 5669, 0xe001 }, { 5673, 0x0400 }, { 5674, 0x0031 },
+ { 5677, 0x1794 }, { 5684, 0x8221 }, { 5688, 0x0019 }, { 5691, 0x1054 },
+ { 5695, 0x2cb2 }, { 5702, 0x021a }, { 5706, 0x9c02 }, { 5711, 0x4003 },
+ { 5714, 0x3d60 }, { 5721, 0x8804 }, { 5724, 0x080c }, { 5727, 0x7900 },
+ /* 0x8f00 */
+ { 5732, 0x1628 }, { 5737, 0xba3c }, { 5746, 0x8640 }, { 5750, 0xcb08 },
+ { 5756, 0x7274 }, { 5764, 0x9080 }, { 5767, 0x001e }, { 5771, 0x0000 },
+ { 5771, 0x0000 }, { 5771, 0xd800 }, { 5775, 0xe188 }, { 5781, 0x9c87 },
+ { 5789, 0x4034 }, { 5793, 0x0412 }, { 5796, 0xae64 }, { 5804, 0x2791 },
+ /* 0x9000 */
+ { 5811, 0xe86b }, { 5820, 0xe6fb }, { 5832, 0x408f }, { 5838, 0x5366 },
+ { 5846, 0xeea6 }, { 5856, 0x537f }, { 5867, 0xe32b }, { 5876, 0xb5e4 },
+ { 5885, 0x869f }, { 5894, 0x0002 }, { 5895, 0x8548 }, { 5900, 0x0122 },
+ { 5903, 0x4402 }, { 5906, 0x0800 }, { 5907, 0x2116 }, { 5912, 0x20a0 },
+ /* 0x9100 */
+ { 5915, 0x0004 }, { 5916, 0x0204 }, { 5918, 0x2000 }, { 5919, 0x0005 },
+ { 5921, 0x7e00 }, { 5927, 0x0154 }, { 5931, 0x162c }, { 5937, 0x01ac },
+ { 5942, 0x2a84 }, { 5947, 0x1085 }, { 5951, 0x8c14 }, { 5956, 0x0530 },
+ { 5960, 0xfbc3 }, { 5971, 0xb943 }, { 5979, 0x00ca }, { 5983, 0x9060 },
+ /* 0x9200 */
+ { 5987, 0x6000 }, { 5989, 0x4032 }, { 5993, 0x1200 }, { 5995, 0x8090 },
+ { 5998, 0x0b30 }, { 6003, 0x4c81 }, { 6008, 0x0054 }, { 6011, 0x4002 },
+ { 6013, 0x0029 }, { 6016, 0x1d6a }, { 6024, 0x2000 }, { 6025, 0x0280 },
+ { 6027, 0x8000 }, { 6028, 0x0004 }, { 6029, 0x2610 }, { 6033, 0x150c },
+ /* 0x9300 */
+ { 6038, 0x8040 }, { 6040, 0x0701 }, { 6044, 0xd94d }, { 6053, 0x0c24 },
+ { 6057, 0x2810 }, { 6060, 0x1850 }, { 6064, 0x5001 }, { 6067, 0x5020 },
+ { 6070, 0x1000 }, { 6071, 0x04d0 }, { 6075, 0x7080 }, { 6079, 0x0201 },
+ { 6081, 0x0108 }, { 6083, 0x21c3 }, { 6089, 0x0132 }, { 6093, 0x0000 },
+ /* 0x9400 */
+ { 6093, 0x0088 }, { 6095, 0x0719 }, { 6101, 0x0802 }, { 6103, 0x0560 },
+ { 6107, 0x0012 }, { 6109, 0x4c0e }, { 6115, 0x0405 }, { 6118, 0xf0a1 },
+ { 6125, 0x0002 }, { 6126, 0x0000 }, { 6126, 0x0000 }, { 6126, 0x0000 },
+ { 6126, 0x0000 }, { 6126, 0x0000 }, { 6126, 0x0000 }, { 6126, 0x0000 },
+ /* 0x9500 */
+ { 6126, 0x0000 }, { 6126, 0x0000 }, { 6126, 0x0000 }, { 6126, 0x0000 },
+ { 6126, 0x0000 }, { 6126, 0x0000 }, { 6126, 0x0000 }, { 6126, 0x0080 },
+ { 6127, 0x8e8d }, { 6135, 0x035a }, { 6141, 0x21bd }, { 6149, 0x5a04 },
+ { 6154, 0x3488 }, { 6159, 0x1170 }, { 6164, 0x0026 }, { 6167, 0x0000 },
+ /* 0x9600 */
+ { 6167, 0x0000 }, { 6167, 0x1000 }, { 6168, 0xc502 }, { 6173, 0x8804 },
+ { 6176, 0xb815 }, { 6183, 0xf801 }, { 6189, 0x147c }, { 6196, 0x25ed },
+ { 6205, 0xed60 }, { 6213, 0x1bb0 }, { 6220, 0x0589 }, { 6225, 0x1bd7 },
+ { 6235, 0x7af3 }, { 6246, 0x1a62 }, { 6252, 0x0d0c }, { 6257, 0x0ac5 },
+ /* 0x9700 */
+ { 6263, 0xe5d1 }, { 6272, 0x524a }, { 6278, 0x0490 }, { 6281, 0x6305 },
+ { 6287, 0x0354 }, { 6292, 0x5244 }, { 6297, 0x2b57 }, { 6306, 0x1612 },
+ { 6311, 0xa872 }, { 6318, 0x1101 }, { 6321, 0x2949 }, { 6327, 0x0018 },
+ { 6329, 0x0948 }, { 6333, 0x1008 }, { 6335, 0x6000 }, { 6337, 0x886c },
+ /* 0x9800 */
+ { 6343, 0x916e }, { 6351, 0x058f }, { 6358, 0x3012 }, { 6362, 0x3990 },
+ { 6368, 0xf840 }, { 6374, 0x4930 }, { 6379, 0x8880 }, { 6382, 0x001b },
+ { 6386, 0x0000 }, { 6386, 0x0000 }, { 6386, 0x8500 }, { 6389, 0x0042 },
+ { 6391, 0x0058 }, { 6394, 0x9800 }, { 6397, 0xea04 }, { 6403, 0x7014 },
+ /* 0x9900 */
+ { 6408, 0x1628 }, { 6413, 0x611d }, { 6420, 0x5113 }, { 6426, 0x6000 },
+ { 6428, 0x1a24 }, { 6433, 0x00a7 }, { 6438, 0x0000 }, { 6438, 0x0000 },
+ { 6438, 0x0000 }, { 6438, 0x03c0 }, { 6442, 0x7120 }, { 6447, 0x1018 },
+ { 6450, 0x0172 }, { 6455, 0xa927 }, { 6463, 0x6004 }, { 6466, 0x8906 },
+ /* 0x9a00 */
+ { 6471, 0xc022 }, { 6475, 0x020c }, { 6478, 0x0900 }, { 6480, 0x4081 },
+ { 6483, 0x202d }, { 6488, 0x8ca0 }, { 6493, 0x0e34 }, { 6499, 0x0000 },
+ { 6499, 0x0000 }, { 6499, 0x0000 }, { 6499, 0x2100 }, { 6501, 0x1101 },
+ { 6504, 0x8011 }, { 6507, 0xc11a }, { 6513, 0xec4c }, { 6521, 0x0892 },
+ /* 0x9b00 */
+ { 6525, 0x0040 }, { 6526, 0x8500 }, { 6529, 0xc7ac }, { 6538, 0x1806 },
+ { 6542, 0xe03e }, { 6550, 0x0512 }, { 6554, 0x8000 }, { 6555, 0x0010 },
+ { 6556, 0x4008 }, { 6558, 0x80ce }, { 6564, 0x6d01 }, { 6570, 0x0210 },
+ { 6572, 0x8641 }, { 6577, 0x0856 }, { 6582, 0x011e }, { 6587, 0x0027 },
+ /* 0x9c00 */
+ { 6591, 0x3750 }, { 6598, 0x083d }, { 6604, 0xe032 }, { 6610, 0x4e05 },
+ { 6616, 0x01c0 }, { 6619, 0x0484 }, { 6622, 0x0081 }, { 6624, 0x0140 },
+ { 6626, 0x0000 }, { 6626, 0x0000 }, { 6626, 0x0000 }, { 6626, 0x0000 },
+ { 6626, 0x0000 }, { 6626, 0x0000 }, { 6626, 0x1aa0 }, { 6631, 0x0059 },
+ /* 0x9d00 */
+ { 6635, 0x43c8 }, { 6641, 0x8824 }, { 6645, 0x1d48 }, { 6651, 0xc800 },
+ { 6654, 0x0152 }, { 6658, 0x7203 }, { 6664, 0x9013 }, { 6669, 0x0404 },
+ { 6671, 0x8280 }, { 6674, 0x0400 }, { 6675, 0x8a10 }, { 6679, 0x0d14 },
+ { 6684, 0x8056 }, { 6689, 0x0208 }, { 6691, 0xa040 }, { 6694, 0x2704 },
+ /* 0x9e00 */
+ { 6699, 0x0000 }, { 6699, 0x4c00 }, { 6702, 0x0000 }, { 6702, 0x0000 },
+ { 6702, 0x0000 }, { 6702, 0x0000 }, { 6702, 0x0000 }, { 6702, 0xa320 },
+ { 6707, 0x1902 }, { 6711, 0xa0ae }, { 6718, 0x2660 }, { 6723, 0xdf00 },
+ { 6730, 0xf010 }, { 6735, 0x7b15 }, { 6744, 0x8121 }, { 6748, 0x3ad0 },
+ /* 0x9f00 */
+ { 6755, 0x4180 }, { 6758, 0x0028 }, { 6760, 0x1003 }, { 6763, 0x4800 },
+ { 6765, 0xcc00 }, { 6769, 0x8014 }, { 6772, 0x14cf }, { 6780, 0x00c4 },
+ { 6783, 0x2000 }, { 6784, 0x3020 }, { 6787, 0x0001 },
+};
+static const Summary16 jisx0208_uni2indx_pageff[15] = {
+ /* 0xff00 */
+ { 6788, 0xdf7a }, { 6800, 0xffff }, { 6816, 0xffff }, { 6832, 0xefff },
+ { 6847, 0xffff }, { 6863, 0x3fff }, { 6877, 0x0000 }, { 6877, 0x0000 },
+ { 6877, 0x0000 }, { 6877, 0x0000 }, { 6877, 0x0000 }, { 6877, 0x0000 },
+ { 6877, 0x0000 }, { 6877, 0x0000 }, { 6877, 0x0028 },
+};
+
+static int
+jisx0208_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n)
+{
+ if (n >= 2) {
+ const Summary16 *summary = NULL;
+ if (wc < 0x0100)
+ summary = &jisx0208_uni2indx_page00[(wc>>4)];
+ else if (wc >= 0x0300 && wc < 0x0460)
+ summary = &jisx0208_uni2indx_page03[(wc>>4)-0x030];
+ else if (wc >= 0x2000 && wc < 0x2320)
+ summary = &jisx0208_uni2indx_page20[(wc>>4)-0x200];
+ else if (wc >= 0x2500 && wc < 0x2670)
+ summary = &jisx0208_uni2indx_page25[(wc>>4)-0x250];
+ else if (wc >= 0x3000 && wc < 0x3100)
+ summary = &jisx0208_uni2indx_page30[(wc>>4)-0x300];
+ else if (wc >= 0x4e00 && wc < 0x9fb0)
+ summary = &jisx0208_uni2indx_page4e[(wc>>4)-0x4e0];
+ else if (wc >= 0xff00 && wc < 0xfff0)
+ summary = &jisx0208_uni2indx_pageff[(wc>>4)-0xff0];
+ if (summary) {
+ unsigned short used = summary->used;
+ unsigned int i = wc & 0x0f;
+ if (used & ((unsigned short) 1 << i)) {
+ unsigned short c;
+ /* Keep in `used' only the bits 0..i-1. */
+ used &= ((unsigned short) 1 << i) - 1;
+ /* Add `summary->indx' and the number of bits set in `used'. */
+ used = (used & 0x5555) + ((used & 0xaaaa) >> 1);
+ used = (used & 0x3333) + ((used & 0xcccc) >> 2);
+ used = (used & 0x0f0f) + ((used & 0xf0f0) >> 4);
+ used = (used & 0x00ff) + (used >> 8);
+ c = jisx0208_2charset[summary->indx + used];
+ r[0] = (c >> 8); r[1] = (c & 0xff);
+ return 2;
+ }
+ }
+ return RET_ILSEQ;
+ }
+ return RET_TOOSMALL;
+}
diff --git a/libX11/src/xlibi18n/lcUniConv/jisx0212.h b/libX11/src/xlibi18n/lcUniConv/jisx0212.h
index 471353836..05cca5203 100644
--- a/libX11/src/xlibi18n/lcUniConv/jisx0212.h
+++ b/libX11/src/xlibi18n/lcUniConv/jisx0212.h
@@ -1,2163 +1,2163 @@
-
-/*
- * JISX0212.1990-0
- */
-
-static const unsigned short jisx0212_2uni_page22[81] = {
- /* 0x22 */
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x02d8, 0x02c7,
- 0x00b8, 0x02d9, 0x02dd, 0x00af, 0x02db, 0x02da, 0x007e, 0x0384,
- 0x0385, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0x00a1, 0x00a6, 0x00bf, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0x00ba, 0x00aa, 0x00a9, 0x00ae, 0x2122, 0x00a4,
- 0x2116,
-};
-static const unsigned short jisx0212_2uni_page26[188] = {
- /* 0x26 */
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0x0386, 0x0388, 0x0389, 0x038a, 0x03aa, 0xfffd, 0x038c, 0xfffd,
- 0x038e, 0x03ab, 0xfffd, 0x038f, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0x03ac, 0x03ad, 0x03ae, 0x03af, 0x03ca, 0x0390, 0x03cc, 0x03c2,
- 0x03cd, 0x03cb, 0x03b0, 0x03ce, 0xfffd, 0xfffd,
- /* 0x27 */
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0x0402, 0x0403, 0x0404, 0x0405, 0x0406, 0x0407, 0x0408,
- 0x0409, 0x040a, 0x040b, 0x040c, 0x040e, 0x040f, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0x0452, 0x0453, 0x0454, 0x0455, 0x0456, 0x0457, 0x0458,
- 0x0459, 0x045a, 0x045b, 0x045c, 0x045e, 0x045f,
-};
-static const unsigned short jisx0212_2uni_page29[275] = {
- /* 0x29 */
- 0x00c6, 0x0110, 0xfffd, 0x0126, 0xfffd, 0x0132, 0xfffd, 0x0141,
- 0x013f, 0xfffd, 0x014a, 0x00d8, 0x0152, 0xfffd, 0x0166, 0x00de,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0x00e6, 0x0111, 0x00f0, 0x0127, 0x0131, 0x0133, 0x0138, 0x0142,
- 0x0140, 0x0149, 0x014b, 0x00f8, 0x0153, 0x00df, 0x0167, 0x00fe,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- /* 0x2a */
- 0x00c1, 0x00c0, 0x00c4, 0x00c2, 0x0102, 0x01cd, 0x0100, 0x0104,
- 0x00c5, 0x00c3, 0x0106, 0x0108, 0x010c, 0x00c7, 0x010a, 0x010e,
- 0x00c9, 0x00c8, 0x00cb, 0x00ca, 0x011a, 0x0116, 0x0112, 0x0118,
- 0xfffd, 0x011c, 0x011e, 0x0122, 0x0120, 0x0124, 0x00cd, 0x00cc,
- 0x00cf, 0x00ce, 0x01cf, 0x0130, 0x012a, 0x012e, 0x0128, 0x0134,
- 0x0136, 0x0139, 0x013d, 0x013b, 0x0143, 0x0147, 0x0145, 0x00d1,
- 0x00d3, 0x00d2, 0x00d6, 0x00d4, 0x01d1, 0x0150, 0x014c, 0x00d5,
- 0x0154, 0x0158, 0x0156, 0x015a, 0x015c, 0x0160, 0x015e, 0x0164,
- 0x0162, 0x00da, 0x00d9, 0x00dc, 0x00db, 0x016c, 0x01d3, 0x0170,
- 0x016a, 0x0172, 0x016e, 0x0168, 0x01d7, 0x01db, 0x01d9, 0x01d5,
- 0x0174, 0x00dd, 0x0178, 0x0176, 0x0179, 0x017d, 0x017b, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- /* 0x2b */
- 0x00e1, 0x00e0, 0x00e4, 0x00e2, 0x0103, 0x01ce, 0x0101, 0x0105,
- 0x00e5, 0x00e3, 0x0107, 0x0109, 0x010d, 0x00e7, 0x010b, 0x010f,
- 0x00e9, 0x00e8, 0x00eb, 0x00ea, 0x011b, 0x0117, 0x0113, 0x0119,
- 0x01f5, 0x011d, 0x011f, 0xfffd, 0x0121, 0x0125, 0x00ed, 0x00ec,
- 0x00ef, 0x00ee, 0x01d0, 0xfffd, 0x012b, 0x012f, 0x0129, 0x0135,
- 0x0137, 0x013a, 0x013e, 0x013c, 0x0144, 0x0148, 0x0146, 0x00f1,
- 0x00f3, 0x00f2, 0x00f6, 0x00f4, 0x01d2, 0x0151, 0x014d, 0x00f5,
- 0x0155, 0x0159, 0x0157, 0x015b, 0x015d, 0x0161, 0x015f, 0x0165,
- 0x0163, 0x00fa, 0x00f9, 0x00fc, 0x00fb, 0x016d, 0x01d4, 0x0171,
- 0x016b, 0x0173, 0x016f, 0x0169, 0x01d8, 0x01dc, 0x01da, 0x01d6,
- 0x0175, 0x00fd, 0x00ff, 0x0177, 0x017a, 0x017e, 0x017c,
-};
-static const unsigned short jisx0212_2uni_page30[5801] = {
- /* 0x30 */
- 0x4e02, 0x4e04, 0x4e05, 0x4e0c, 0x4e12, 0x4e1f, 0x4e23, 0x4e24,
- 0x4e28, 0x4e2b, 0x4e2e, 0x4e2f, 0x4e30, 0x4e35, 0x4e40, 0x4e41,
- 0x4e44, 0x4e47, 0x4e51, 0x4e5a, 0x4e5c, 0x4e63, 0x4e68, 0x4e69,
- 0x4e74, 0x4e75, 0x4e79, 0x4e7f, 0x4e8d, 0x4e96, 0x4e97, 0x4e9d,
- 0x4eaf, 0x4eb9, 0x4ec3, 0x4ed0, 0x4eda, 0x4edb, 0x4ee0, 0x4ee1,
- 0x4ee2, 0x4ee8, 0x4eef, 0x4ef1, 0x4ef3, 0x4ef5, 0x4efd, 0x4efe,
- 0x4eff, 0x4f00, 0x4f02, 0x4f03, 0x4f08, 0x4f0b, 0x4f0c, 0x4f12,
- 0x4f15, 0x4f16, 0x4f17, 0x4f19, 0x4f2e, 0x4f31, 0x4f60, 0x4f33,
- 0x4f35, 0x4f37, 0x4f39, 0x4f3b, 0x4f3e, 0x4f40, 0x4f42, 0x4f48,
- 0x4f49, 0x4f4b, 0x4f4c, 0x4f52, 0x4f54, 0x4f56, 0x4f58, 0x4f5f,
- 0x4f63, 0x4f6a, 0x4f6c, 0x4f6e, 0x4f71, 0x4f77, 0x4f78, 0x4f79,
- 0x4f7a, 0x4f7d, 0x4f7e, 0x4f81, 0x4f82, 0x4f84,
- /* 0x31 */
- 0x4f85, 0x4f89, 0x4f8a, 0x4f8c, 0x4f8e, 0x4f90, 0x4f92, 0x4f93,
- 0x4f94, 0x4f97, 0x4f99, 0x4f9a, 0x4f9e, 0x4f9f, 0x4fb2, 0x4fb7,
- 0x4fb9, 0x4fbb, 0x4fbc, 0x4fbd, 0x4fbe, 0x4fc0, 0x4fc1, 0x4fc5,
- 0x4fc6, 0x4fc8, 0x4fc9, 0x4fcb, 0x4fcc, 0x4fcd, 0x4fcf, 0x4fd2,
- 0x4fdc, 0x4fe0, 0x4fe2, 0x4ff0, 0x4ff2, 0x4ffc, 0x4ffd, 0x4fff,
- 0x5000, 0x5001, 0x5004, 0x5007, 0x500a, 0x500c, 0x500e, 0x5010,
- 0x5013, 0x5017, 0x5018, 0x501b, 0x501c, 0x501d, 0x501e, 0x5022,
- 0x5027, 0x502e, 0x5030, 0x5032, 0x5033, 0x5035, 0x5040, 0x5041,
- 0x5042, 0x5045, 0x5046, 0x504a, 0x504c, 0x504e, 0x5051, 0x5052,
- 0x5053, 0x5057, 0x5059, 0x505f, 0x5060, 0x5062, 0x5063, 0x5066,
- 0x5067, 0x506a, 0x506d, 0x5070, 0x5071, 0x503b, 0x5081, 0x5083,
- 0x5084, 0x5086, 0x508a, 0x508e, 0x508f, 0x5090,
- /* 0x32 */
- 0x5092, 0x5093, 0x5094, 0x5096, 0x509b, 0x509c, 0x509e, 0x509f,
- 0x50a0, 0x50a1, 0x50a2, 0x50aa, 0x50af, 0x50b0, 0x50b9, 0x50ba,
- 0x50bd, 0x50c0, 0x50c3, 0x50c4, 0x50c7, 0x50cc, 0x50ce, 0x50d0,
- 0x50d3, 0x50d4, 0x50d8, 0x50dc, 0x50dd, 0x50df, 0x50e2, 0x50e4,
- 0x50e6, 0x50e8, 0x50e9, 0x50ef, 0x50f1, 0x50f6, 0x50fa, 0x50fe,
- 0x5103, 0x5106, 0x5107, 0x5108, 0x510b, 0x510c, 0x510d, 0x510e,
- 0x50f2, 0x5110, 0x5117, 0x5119, 0x511b, 0x511c, 0x511d, 0x511e,
- 0x5123, 0x5127, 0x5128, 0x512c, 0x512d, 0x512f, 0x5131, 0x5133,
- 0x5134, 0x5135, 0x5138, 0x5139, 0x5142, 0x514a, 0x514f, 0x5153,
- 0x5155, 0x5157, 0x5158, 0x515f, 0x5164, 0x5166, 0x517e, 0x5183,
- 0x5184, 0x518b, 0x518e, 0x5198, 0x519d, 0x51a1, 0x51a3, 0x51ad,
- 0x51b8, 0x51ba, 0x51bc, 0x51be, 0x51bf, 0x51c2,
- /* 0x33 */
- 0x51c8, 0x51cf, 0x51d1, 0x51d2, 0x51d3, 0x51d5, 0x51d8, 0x51de,
- 0x51e2, 0x51e5, 0x51ee, 0x51f2, 0x51f3, 0x51f4, 0x51f7, 0x5201,
- 0x5202, 0x5205, 0x5212, 0x5213, 0x5215, 0x5216, 0x5218, 0x5222,
- 0x5228, 0x5231, 0x5232, 0x5235, 0x523c, 0x5245, 0x5249, 0x5255,
- 0x5257, 0x5258, 0x525a, 0x525c, 0x525f, 0x5260, 0x5261, 0x5266,
- 0x526e, 0x5277, 0x5278, 0x5279, 0x5280, 0x5282, 0x5285, 0x528a,
- 0x528c, 0x5293, 0x5295, 0x5296, 0x5297, 0x5298, 0x529a, 0x529c,
- 0x52a4, 0x52a5, 0x52a6, 0x52a7, 0x52af, 0x52b0, 0x52b6, 0x52b7,
- 0x52b8, 0x52ba, 0x52bb, 0x52bd, 0x52c0, 0x52c4, 0x52c6, 0x52c8,
- 0x52cc, 0x52cf, 0x52d1, 0x52d4, 0x52d6, 0x52db, 0x52dc, 0x52e1,
- 0x52e5, 0x52e8, 0x52e9, 0x52ea, 0x52ec, 0x52f0, 0x52f1, 0x52f4,
- 0x52f6, 0x52f7, 0x5300, 0x5303, 0x530a, 0x530b,
- /* 0x34 */
- 0x530c, 0x5311, 0x5313, 0x5318, 0x531b, 0x531c, 0x531e, 0x531f,
- 0x5325, 0x5327, 0x5328, 0x5329, 0x532b, 0x532c, 0x532d, 0x5330,
- 0x5332, 0x5335, 0x533c, 0x533d, 0x533e, 0x5342, 0x534c, 0x534b,
- 0x5359, 0x535b, 0x5361, 0x5363, 0x5365, 0x536c, 0x536d, 0x5372,
- 0x5379, 0x537e, 0x5383, 0x5387, 0x5388, 0x538e, 0x5393, 0x5394,
- 0x5399, 0x539d, 0x53a1, 0x53a4, 0x53aa, 0x53ab, 0x53af, 0x53b2,
- 0x53b4, 0x53b5, 0x53b7, 0x53b8, 0x53ba, 0x53bd, 0x53c0, 0x53c5,
- 0x53cf, 0x53d2, 0x53d3, 0x53d5, 0x53da, 0x53dd, 0x53de, 0x53e0,
- 0x53e6, 0x53e7, 0x53f5, 0x5402, 0x5413, 0x541a, 0x5421, 0x5427,
- 0x5428, 0x542a, 0x542f, 0x5431, 0x5434, 0x5435, 0x5443, 0x5444,
- 0x5447, 0x544d, 0x544f, 0x545e, 0x5462, 0x5464, 0x5466, 0x5467,
- 0x5469, 0x546b, 0x546d, 0x546e, 0x5474, 0x547f,
- /* 0x35 */
- 0x5481, 0x5483, 0x5485, 0x5488, 0x5489, 0x548d, 0x5491, 0x5495,
- 0x5496, 0x549c, 0x549f, 0x54a1, 0x54a6, 0x54a7, 0x54a9, 0x54aa,
- 0x54ad, 0x54ae, 0x54b1, 0x54b7, 0x54b9, 0x54ba, 0x54bb, 0x54bf,
- 0x54c6, 0x54ca, 0x54cd, 0x54ce, 0x54e0, 0x54ea, 0x54ec, 0x54ef,
- 0x54f6, 0x54fc, 0x54fe, 0x54ff, 0x5500, 0x5501, 0x5505, 0x5508,
- 0x5509, 0x550c, 0x550d, 0x550e, 0x5515, 0x552a, 0x552b, 0x5532,
- 0x5535, 0x5536, 0x553b, 0x553c, 0x553d, 0x5541, 0x5547, 0x5549,
- 0x554a, 0x554d, 0x5550, 0x5551, 0x5558, 0x555a, 0x555b, 0x555e,
- 0x5560, 0x5561, 0x5564, 0x5566, 0x557f, 0x5581, 0x5582, 0x5586,
- 0x5588, 0x558e, 0x558f, 0x5591, 0x5592, 0x5593, 0x5594, 0x5597,
- 0x55a3, 0x55a4, 0x55ad, 0x55b2, 0x55bf, 0x55c1, 0x55c3, 0x55c6,
- 0x55c9, 0x55cb, 0x55cc, 0x55ce, 0x55d1, 0x55d2,
- /* 0x36 */
- 0x55d3, 0x55d7, 0x55d8, 0x55db, 0x55de, 0x55e2, 0x55e9, 0x55f6,
- 0x55ff, 0x5605, 0x5608, 0x560a, 0x560d, 0x560e, 0x560f, 0x5610,
- 0x5611, 0x5612, 0x5619, 0x562c, 0x5630, 0x5633, 0x5635, 0x5637,
- 0x5639, 0x563b, 0x563c, 0x563d, 0x563f, 0x5640, 0x5641, 0x5643,
- 0x5644, 0x5646, 0x5649, 0x564b, 0x564d, 0x564f, 0x5654, 0x565e,
- 0x5660, 0x5661, 0x5662, 0x5663, 0x5666, 0x5669, 0x566d, 0x566f,
- 0x5671, 0x5672, 0x5675, 0x5684, 0x5685, 0x5688, 0x568b, 0x568c,
- 0x5695, 0x5699, 0x569a, 0x569d, 0x569e, 0x569f, 0x56a6, 0x56a7,
- 0x56a8, 0x56a9, 0x56ab, 0x56ac, 0x56ad, 0x56b1, 0x56b3, 0x56b7,
- 0x56be, 0x56c5, 0x56c9, 0x56ca, 0x56cb, 0x56cf, 0x56d0, 0x56cc,
- 0x56cd, 0x56d9, 0x56dc, 0x56dd, 0x56df, 0x56e1, 0x56e4, 0x56e5,
- 0x56e6, 0x56e7, 0x56e8, 0x56f1, 0x56eb, 0x56ed,
- /* 0x37 */
- 0x56f6, 0x56f7, 0x5701, 0x5702, 0x5707, 0x570a, 0x570c, 0x5711,
- 0x5715, 0x571a, 0x571b, 0x571d, 0x5720, 0x5722, 0x5723, 0x5724,
- 0x5725, 0x5729, 0x572a, 0x572c, 0x572e, 0x572f, 0x5733, 0x5734,
- 0x573d, 0x573e, 0x573f, 0x5745, 0x5746, 0x574c, 0x574d, 0x5752,
- 0x5762, 0x5765, 0x5767, 0x5768, 0x576b, 0x576d, 0x576e, 0x576f,
- 0x5770, 0x5771, 0x5773, 0x5774, 0x5775, 0x5777, 0x5779, 0x577a,
- 0x577b, 0x577c, 0x577e, 0x5781, 0x5783, 0x578c, 0x5794, 0x5797,
- 0x5799, 0x579a, 0x579c, 0x579d, 0x579e, 0x579f, 0x57a1, 0x5795,
- 0x57a7, 0x57a8, 0x57a9, 0x57ac, 0x57b8, 0x57bd, 0x57c7, 0x57c8,
- 0x57cc, 0x57cf, 0x57d5, 0x57dd, 0x57de, 0x57e4, 0x57e6, 0x57e7,
- 0x57e9, 0x57ed, 0x57f0, 0x57f5, 0x57f6, 0x57f8, 0x57fd, 0x57fe,
- 0x57ff, 0x5803, 0x5804, 0x5808, 0x5809, 0x57e1,
- /* 0x38 */
- 0x580c, 0x580d, 0x581b, 0x581e, 0x581f, 0x5820, 0x5826, 0x5827,
- 0x582d, 0x5832, 0x5839, 0x583f, 0x5849, 0x584c, 0x584d, 0x584f,
- 0x5850, 0x5855, 0x585f, 0x5861, 0x5864, 0x5867, 0x5868, 0x5878,
- 0x587c, 0x587f, 0x5880, 0x5881, 0x5887, 0x5888, 0x5889, 0x588a,
- 0x588c, 0x588d, 0x588f, 0x5890, 0x5894, 0x5896, 0x589d, 0x58a0,
- 0x58a1, 0x58a2, 0x58a6, 0x58a9, 0x58b1, 0x58b2, 0x58c4, 0x58bc,
- 0x58c2, 0x58c8, 0x58cd, 0x58ce, 0x58d0, 0x58d2, 0x58d4, 0x58d6,
- 0x58da, 0x58dd, 0x58e1, 0x58e2, 0x58e9, 0x58f3, 0x5905, 0x5906,
- 0x590b, 0x590c, 0x5912, 0x5913, 0x5914, 0x8641, 0x591d, 0x5921,
- 0x5923, 0x5924, 0x5928, 0x592f, 0x5930, 0x5933, 0x5935, 0x5936,
- 0x593f, 0x5943, 0x5946, 0x5952, 0x5953, 0x5959, 0x595b, 0x595d,
- 0x595e, 0x595f, 0x5961, 0x5963, 0x596b, 0x596d,
- /* 0x39 */
- 0x596f, 0x5972, 0x5975, 0x5976, 0x5979, 0x597b, 0x597c, 0x598b,
- 0x598c, 0x598e, 0x5992, 0x5995, 0x5997, 0x599f, 0x59a4, 0x59a7,
- 0x59ad, 0x59ae, 0x59af, 0x59b0, 0x59b3, 0x59b7, 0x59ba, 0x59bc,
- 0x59c1, 0x59c3, 0x59c4, 0x59c8, 0x59ca, 0x59cd, 0x59d2, 0x59dd,
- 0x59de, 0x59df, 0x59e3, 0x59e4, 0x59e7, 0x59ee, 0x59ef, 0x59f1,
- 0x59f2, 0x59f4, 0x59f7, 0x5a00, 0x5a04, 0x5a0c, 0x5a0d, 0x5a0e,
- 0x5a12, 0x5a13, 0x5a1e, 0x5a23, 0x5a24, 0x5a27, 0x5a28, 0x5a2a,
- 0x5a2d, 0x5a30, 0x5a44, 0x5a45, 0x5a47, 0x5a48, 0x5a4c, 0x5a50,
- 0x5a55, 0x5a5e, 0x5a63, 0x5a65, 0x5a67, 0x5a6d, 0x5a77, 0x5a7a,
- 0x5a7b, 0x5a7e, 0x5a8b, 0x5a90, 0x5a93, 0x5a96, 0x5a99, 0x5a9c,
- 0x5a9e, 0x5a9f, 0x5aa0, 0x5aa2, 0x5aa7, 0x5aac, 0x5ab1, 0x5ab2,
- 0x5ab3, 0x5ab5, 0x5ab8, 0x5aba, 0x5abb, 0x5abf,
- /* 0x3a */
- 0x5ac4, 0x5ac6, 0x5ac8, 0x5acf, 0x5ada, 0x5adc, 0x5ae0, 0x5ae5,
- 0x5aea, 0x5aee, 0x5af5, 0x5af6, 0x5afd, 0x5b00, 0x5b01, 0x5b08,
- 0x5b17, 0x5b34, 0x5b19, 0x5b1b, 0x5b1d, 0x5b21, 0x5b25, 0x5b2d,
- 0x5b38, 0x5b41, 0x5b4b, 0x5b4c, 0x5b52, 0x5b56, 0x5b5e, 0x5b68,
- 0x5b6e, 0x5b6f, 0x5b7c, 0x5b7d, 0x5b7e, 0x5b7f, 0x5b81, 0x5b84,
- 0x5b86, 0x5b8a, 0x5b8e, 0x5b90, 0x5b91, 0x5b93, 0x5b94, 0x5b96,
- 0x5ba8, 0x5ba9, 0x5bac, 0x5bad, 0x5baf, 0x5bb1, 0x5bb2, 0x5bb7,
- 0x5bba, 0x5bbc, 0x5bc0, 0x5bc1, 0x5bcd, 0x5bcf, 0x5bd6, 0x5bd7,
- 0x5bd8, 0x5bd9, 0x5bda, 0x5be0, 0x5bef, 0x5bf1, 0x5bf4, 0x5bfd,
- 0x5c0c, 0x5c17, 0x5c1e, 0x5c1f, 0x5c23, 0x5c26, 0x5c29, 0x5c2b,
- 0x5c2c, 0x5c2e, 0x5c30, 0x5c32, 0x5c35, 0x5c36, 0x5c59, 0x5c5a,
- 0x5c5c, 0x5c62, 0x5c63, 0x5c67, 0x5c68, 0x5c69,
- /* 0x3b */
- 0x5c6d, 0x5c70, 0x5c74, 0x5c75, 0x5c7a, 0x5c7b, 0x5c7c, 0x5c7d,
- 0x5c87, 0x5c88, 0x5c8a, 0x5c8f, 0x5c92, 0x5c9d, 0x5c9f, 0x5ca0,
- 0x5ca2, 0x5ca3, 0x5ca6, 0x5caa, 0x5cb2, 0x5cb4, 0x5cb5, 0x5cba,
- 0x5cc9, 0x5ccb, 0x5cd2, 0x5cdd, 0x5cd7, 0x5cee, 0x5cf1, 0x5cf2,
- 0x5cf4, 0x5d01, 0x5d06, 0x5d0d, 0x5d12, 0x5d2b, 0x5d23, 0x5d24,
- 0x5d26, 0x5d27, 0x5d31, 0x5d34, 0x5d39, 0x5d3d, 0x5d3f, 0x5d42,
- 0x5d43, 0x5d46, 0x5d48, 0x5d55, 0x5d51, 0x5d59, 0x5d4a, 0x5d5f,
- 0x5d60, 0x5d61, 0x5d62, 0x5d64, 0x5d6a, 0x5d6d, 0x5d70, 0x5d79,
- 0x5d7a, 0x5d7e, 0x5d7f, 0x5d81, 0x5d83, 0x5d88, 0x5d8a, 0x5d92,
- 0x5d93, 0x5d94, 0x5d95, 0x5d99, 0x5d9b, 0x5d9f, 0x5da0, 0x5da7,
- 0x5dab, 0x5db0, 0x5db4, 0x5db8, 0x5db9, 0x5dc3, 0x5dc7, 0x5dcb,
- 0x5dd0, 0x5dce, 0x5dd8, 0x5dd9, 0x5de0, 0x5de4,
- /* 0x3c */
- 0x5de9, 0x5df8, 0x5df9, 0x5e00, 0x5e07, 0x5e0d, 0x5e12, 0x5e14,
- 0x5e15, 0x5e18, 0x5e1f, 0x5e20, 0x5e2e, 0x5e28, 0x5e32, 0x5e35,
- 0x5e3e, 0x5e4b, 0x5e50, 0x5e49, 0x5e51, 0x5e56, 0x5e58, 0x5e5b,
- 0x5e5c, 0x5e5e, 0x5e68, 0x5e6a, 0x5e6b, 0x5e6c, 0x5e6d, 0x5e6e,
- 0x5e70, 0x5e80, 0x5e8b, 0x5e8e, 0x5ea2, 0x5ea4, 0x5ea5, 0x5ea8,
- 0x5eaa, 0x5eac, 0x5eb1, 0x5eb3, 0x5ebd, 0x5ebe, 0x5ebf, 0x5ec6,
- 0x5ecc, 0x5ecb, 0x5ece, 0x5ed1, 0x5ed2, 0x5ed4, 0x5ed5, 0x5edc,
- 0x5ede, 0x5ee5, 0x5eeb, 0x5f02, 0x5f06, 0x5f07, 0x5f08, 0x5f0e,
- 0x5f19, 0x5f1c, 0x5f1d, 0x5f21, 0x5f22, 0x5f23, 0x5f24, 0x5f28,
- 0x5f2b, 0x5f2c, 0x5f2e, 0x5f30, 0x5f34, 0x5f36, 0x5f3b, 0x5f3d,
- 0x5f3f, 0x5f40, 0x5f44, 0x5f45, 0x5f47, 0x5f4d, 0x5f50, 0x5f54,
- 0x5f58, 0x5f5b, 0x5f60, 0x5f63, 0x5f64, 0x5f67,
- /* 0x3d */
- 0x5f6f, 0x5f72, 0x5f74, 0x5f75, 0x5f78, 0x5f7a, 0x5f7d, 0x5f7e,
- 0x5f89, 0x5f8d, 0x5f8f, 0x5f96, 0x5f9c, 0x5f9d, 0x5fa2, 0x5fa7,
- 0x5fab, 0x5fa4, 0x5fac, 0x5faf, 0x5fb0, 0x5fb1, 0x5fb8, 0x5fc4,
- 0x5fc7, 0x5fc8, 0x5fc9, 0x5fcb, 0x5fd0, 0x5fd1, 0x5fd2, 0x5fd3,
- 0x5fd4, 0x5fde, 0x5fe1, 0x5fe2, 0x5fe8, 0x5fe9, 0x5fea, 0x5fec,
- 0x5fed, 0x5fee, 0x5fef, 0x5ff2, 0x5ff3, 0x5ff6, 0x5ffa, 0x5ffc,
- 0x6007, 0x600a, 0x600d, 0x6013, 0x6014, 0x6017, 0x6018, 0x601a,
- 0x601f, 0x6024, 0x602d, 0x6033, 0x6035, 0x6040, 0x6047, 0x6048,
- 0x6049, 0x604c, 0x6051, 0x6054, 0x6056, 0x6057, 0x605d, 0x6061,
- 0x6067, 0x6071, 0x607e, 0x607f, 0x6082, 0x6086, 0x6088, 0x608a,
- 0x608e, 0x6091, 0x6093, 0x6095, 0x6098, 0x609d, 0x609e, 0x60a2,
- 0x60a4, 0x60a5, 0x60a8, 0x60b0, 0x60b1, 0x60b7,
- /* 0x3e */
- 0x60bb, 0x60be, 0x60c2, 0x60c4, 0x60c8, 0x60c9, 0x60ca, 0x60cb,
- 0x60ce, 0x60cf, 0x60d4, 0x60d5, 0x60d9, 0x60db, 0x60dd, 0x60de,
- 0x60e2, 0x60e5, 0x60f2, 0x60f5, 0x60f8, 0x60fc, 0x60fd, 0x6102,
- 0x6107, 0x610a, 0x610c, 0x6110, 0x6111, 0x6112, 0x6113, 0x6114,
- 0x6116, 0x6117, 0x6119, 0x611c, 0x611e, 0x6122, 0x612a, 0x612b,
- 0x6130, 0x6131, 0x6135, 0x6136, 0x6137, 0x6139, 0x6141, 0x6145,
- 0x6146, 0x6149, 0x615e, 0x6160, 0x616c, 0x6172, 0x6178, 0x617b,
- 0x617c, 0x617f, 0x6180, 0x6181, 0x6183, 0x6184, 0x618b, 0x618d,
- 0x6192, 0x6193, 0x6197, 0x6198, 0x619c, 0x619d, 0x619f, 0x61a0,
- 0x61a5, 0x61a8, 0x61aa, 0x61ad, 0x61b8, 0x61b9, 0x61bc, 0x61c0,
- 0x61c1, 0x61c2, 0x61ce, 0x61cf, 0x61d5, 0x61dc, 0x61dd, 0x61de,
- 0x61df, 0x61e1, 0x61e2, 0x61e7, 0x61e9, 0x61e5,
- /* 0x3f */
- 0x61ec, 0x61ed, 0x61ef, 0x6201, 0x6203, 0x6204, 0x6207, 0x6213,
- 0x6215, 0x621c, 0x6220, 0x6222, 0x6223, 0x6227, 0x6229, 0x622b,
- 0x6239, 0x623d, 0x6242, 0x6243, 0x6244, 0x6246, 0x624c, 0x6250,
- 0x6251, 0x6252, 0x6254, 0x6256, 0x625a, 0x625c, 0x6264, 0x626d,
- 0x626f, 0x6273, 0x627a, 0x627d, 0x628d, 0x628e, 0x628f, 0x6290,
- 0x62a6, 0x62a8, 0x62b3, 0x62b6, 0x62b7, 0x62ba, 0x62be, 0x62bf,
- 0x62c4, 0x62ce, 0x62d5, 0x62d6, 0x62da, 0x62ea, 0x62f2, 0x62f4,
- 0x62fc, 0x62fd, 0x6303, 0x6304, 0x630a, 0x630b, 0x630d, 0x6310,
- 0x6313, 0x6316, 0x6318, 0x6329, 0x632a, 0x632d, 0x6335, 0x6336,
- 0x6339, 0x633c, 0x6341, 0x6342, 0x6343, 0x6344, 0x6346, 0x634a,
- 0x634b, 0x634e, 0x6352, 0x6353, 0x6354, 0x6358, 0x635b, 0x6365,
- 0x6366, 0x636c, 0x636d, 0x6371, 0x6374, 0x6375,
- /* 0x40 */
- 0x6378, 0x637c, 0x637d, 0x637f, 0x6382, 0x6384, 0x6387, 0x638a,
- 0x6390, 0x6394, 0x6395, 0x6399, 0x639a, 0x639e, 0x63a4, 0x63a6,
- 0x63ad, 0x63ae, 0x63af, 0x63bd, 0x63c1, 0x63c5, 0x63c8, 0x63ce,
- 0x63d1, 0x63d3, 0x63d4, 0x63d5, 0x63dc, 0x63e0, 0x63e5, 0x63ea,
- 0x63ec, 0x63f2, 0x63f3, 0x63f5, 0x63f8, 0x63f9, 0x6409, 0x640a,
- 0x6410, 0x6412, 0x6414, 0x6418, 0x641e, 0x6420, 0x6422, 0x6424,
- 0x6425, 0x6429, 0x642a, 0x642f, 0x6430, 0x6435, 0x643d, 0x643f,
- 0x644b, 0x644f, 0x6451, 0x6452, 0x6453, 0x6454, 0x645a, 0x645b,
- 0x645c, 0x645d, 0x645f, 0x6460, 0x6461, 0x6463, 0x646d, 0x6473,
- 0x6474, 0x647b, 0x647d, 0x6485, 0x6487, 0x648f, 0x6490, 0x6491,
- 0x6498, 0x6499, 0x649b, 0x649d, 0x649f, 0x64a1, 0x64a3, 0x64a6,
- 0x64a8, 0x64ac, 0x64b3, 0x64bd, 0x64be, 0x64bf,
- /* 0x41 */
- 0x64c4, 0x64c9, 0x64ca, 0x64cb, 0x64cc, 0x64ce, 0x64d0, 0x64d1,
- 0x64d5, 0x64d7, 0x64e4, 0x64e5, 0x64e9, 0x64ea, 0x64ed, 0x64f0,
- 0x64f5, 0x64f7, 0x64fb, 0x64ff, 0x6501, 0x6504, 0x6508, 0x6509,
- 0x650a, 0x650f, 0x6513, 0x6514, 0x6516, 0x6519, 0x651b, 0x651e,
- 0x651f, 0x6522, 0x6526, 0x6529, 0x652e, 0x6531, 0x653a, 0x653c,
- 0x653d, 0x6543, 0x6547, 0x6549, 0x6550, 0x6552, 0x6554, 0x655f,
- 0x6560, 0x6567, 0x656b, 0x657a, 0x657d, 0x6581, 0x6585, 0x658a,
- 0x6592, 0x6595, 0x6598, 0x659d, 0x65a0, 0x65a3, 0x65a6, 0x65ae,
- 0x65b2, 0x65b3, 0x65b4, 0x65bf, 0x65c2, 0x65c8, 0x65c9, 0x65ce,
- 0x65d0, 0x65d4, 0x65d6, 0x65d8, 0x65df, 0x65f0, 0x65f2, 0x65f4,
- 0x65f5, 0x65f9, 0x65fe, 0x65ff, 0x6600, 0x6604, 0x6608, 0x6609,
- 0x660d, 0x6611, 0x6612, 0x6615, 0x6616, 0x661d,
- /* 0x42 */
- 0x661e, 0x6621, 0x6622, 0x6623, 0x6624, 0x6626, 0x6629, 0x662a,
- 0x662b, 0x662c, 0x662e, 0x6630, 0x6631, 0x6633, 0x6639, 0x6637,
- 0x6640, 0x6645, 0x6646, 0x664a, 0x664c, 0x6651, 0x664e, 0x6657,
- 0x6658, 0x6659, 0x665b, 0x665c, 0x6660, 0x6661, 0x66fb, 0x666a,
- 0x666b, 0x666c, 0x667e, 0x6673, 0x6675, 0x667f, 0x6677, 0x6678,
- 0x6679, 0x667b, 0x6680, 0x667c, 0x668b, 0x668c, 0x668d, 0x6690,
- 0x6692, 0x6699, 0x669a, 0x669b, 0x669c, 0x669f, 0x66a0, 0x66a4,
- 0x66ad, 0x66b1, 0x66b2, 0x66b5, 0x66bb, 0x66bf, 0x66c0, 0x66c2,
- 0x66c3, 0x66c8, 0x66cc, 0x66ce, 0x66cf, 0x66d4, 0x66db, 0x66df,
- 0x66e8, 0x66eb, 0x66ec, 0x66ee, 0x66fa, 0x6705, 0x6707, 0x670e,
- 0x6713, 0x6719, 0x671c, 0x6720, 0x6722, 0x6733, 0x673e, 0x6745,
- 0x6747, 0x6748, 0x674c, 0x6754, 0x6755, 0x675d,
- /* 0x43 */
- 0x6766, 0x676c, 0x676e, 0x6774, 0x6776, 0x677b, 0x6781, 0x6784,
- 0x678e, 0x678f, 0x6791, 0x6793, 0x6796, 0x6798, 0x6799, 0x679b,
- 0x67b0, 0x67b1, 0x67b2, 0x67b5, 0x67bb, 0x67bc, 0x67bd, 0x67f9,
- 0x67c0, 0x67c2, 0x67c3, 0x67c5, 0x67c8, 0x67c9, 0x67d2, 0x67d7,
- 0x67d9, 0x67dc, 0x67e1, 0x67e6, 0x67f0, 0x67f2, 0x67f6, 0x67f7,
- 0x6852, 0x6814, 0x6819, 0x681d, 0x681f, 0x6828, 0x6827, 0x682c,
- 0x682d, 0x682f, 0x6830, 0x6831, 0x6833, 0x683b, 0x683f, 0x6844,
- 0x6845, 0x684a, 0x684c, 0x6855, 0x6857, 0x6858, 0x685b, 0x686b,
- 0x686e, 0x686f, 0x6870, 0x6871, 0x6872, 0x6875, 0x6879, 0x687a,
- 0x687b, 0x687c, 0x6882, 0x6884, 0x6886, 0x6888, 0x6896, 0x6898,
- 0x689a, 0x689c, 0x68a1, 0x68a3, 0x68a5, 0x68a9, 0x68aa, 0x68ae,
- 0x68b2, 0x68bb, 0x68c5, 0x68c8, 0x68cc, 0x68cf,
- /* 0x44 */
- 0x68d0, 0x68d1, 0x68d3, 0x68d6, 0x68d9, 0x68dc, 0x68dd, 0x68e5,
- 0x68e8, 0x68ea, 0x68eb, 0x68ec, 0x68ed, 0x68f0, 0x68f1, 0x68f5,
- 0x68f6, 0x68fb, 0x68fc, 0x68fd, 0x6906, 0x6909, 0x690a, 0x6910,
- 0x6911, 0x6913, 0x6916, 0x6917, 0x6931, 0x6933, 0x6935, 0x6938,
- 0x693b, 0x6942, 0x6945, 0x6949, 0x694e, 0x6957, 0x695b, 0x6963,
- 0x6964, 0x6965, 0x6966, 0x6968, 0x6969, 0x696c, 0x6970, 0x6971,
- 0x6972, 0x697a, 0x697b, 0x697f, 0x6980, 0x698d, 0x6992, 0x6996,
- 0x6998, 0x69a1, 0x69a5, 0x69a6, 0x69a8, 0x69ab, 0x69ad, 0x69af,
- 0x69b7, 0x69b8, 0x69ba, 0x69bc, 0x69c5, 0x69c8, 0x69d1, 0x69d6,
- 0x69d7, 0x69e2, 0x69e5, 0x69ee, 0x69ef, 0x69f1, 0x69f3, 0x69f5,
- 0x69fe, 0x6a00, 0x6a01, 0x6a03, 0x6a0f, 0x6a11, 0x6a15, 0x6a1a,
- 0x6a1d, 0x6a20, 0x6a24, 0x6a28, 0x6a30, 0x6a32,
- /* 0x45 */
- 0x6a34, 0x6a37, 0x6a3b, 0x6a3e, 0x6a3f, 0x6a45, 0x6a46, 0x6a49,
- 0x6a4a, 0x6a4e, 0x6a50, 0x6a51, 0x6a52, 0x6a55, 0x6a56, 0x6a5b,
- 0x6a64, 0x6a67, 0x6a6a, 0x6a71, 0x6a73, 0x6a7e, 0x6a81, 0x6a83,
- 0x6a86, 0x6a87, 0x6a89, 0x6a8b, 0x6a91, 0x6a9b, 0x6a9d, 0x6a9e,
- 0x6a9f, 0x6aa5, 0x6aab, 0x6aaf, 0x6ab0, 0x6ab1, 0x6ab4, 0x6abd,
- 0x6abe, 0x6abf, 0x6ac6, 0x6ac9, 0x6ac8, 0x6acc, 0x6ad0, 0x6ad4,
- 0x6ad5, 0x6ad6, 0x6adc, 0x6add, 0x6ae4, 0x6ae7, 0x6aec, 0x6af0,
- 0x6af1, 0x6af2, 0x6afc, 0x6afd, 0x6b02, 0x6b03, 0x6b06, 0x6b07,
- 0x6b09, 0x6b0f, 0x6b10, 0x6b11, 0x6b17, 0x6b1b, 0x6b1e, 0x6b24,
- 0x6b28, 0x6b2b, 0x6b2c, 0x6b2f, 0x6b35, 0x6b36, 0x6b3b, 0x6b3f,
- 0x6b46, 0x6b4a, 0x6b4d, 0x6b52, 0x6b56, 0x6b58, 0x6b5d, 0x6b60,
- 0x6b67, 0x6b6b, 0x6b6e, 0x6b70, 0x6b75, 0x6b7d,
- /* 0x46 */
- 0x6b7e, 0x6b82, 0x6b85, 0x6b97, 0x6b9b, 0x6b9f, 0x6ba0, 0x6ba2,
- 0x6ba3, 0x6ba8, 0x6ba9, 0x6bac, 0x6bad, 0x6bae, 0x6bb0, 0x6bb8,
- 0x6bb9, 0x6bbd, 0x6bbe, 0x6bc3, 0x6bc4, 0x6bc9, 0x6bcc, 0x6bd6,
- 0x6bda, 0x6be1, 0x6be3, 0x6be6, 0x6be7, 0x6bee, 0x6bf1, 0x6bf7,
- 0x6bf9, 0x6bff, 0x6c02, 0x6c04, 0x6c05, 0x6c09, 0x6c0d, 0x6c0e,
- 0x6c10, 0x6c12, 0x6c19, 0x6c1f, 0x6c26, 0x6c27, 0x6c28, 0x6c2c,
- 0x6c2e, 0x6c33, 0x6c35, 0x6c36, 0x6c3a, 0x6c3b, 0x6c3f, 0x6c4a,
- 0x6c4b, 0x6c4d, 0x6c4f, 0x6c52, 0x6c54, 0x6c59, 0x6c5b, 0x6c5c,
- 0x6c6b, 0x6c6d, 0x6c6f, 0x6c74, 0x6c76, 0x6c78, 0x6c79, 0x6c7b,
- 0x6c85, 0x6c86, 0x6c87, 0x6c89, 0x6c94, 0x6c95, 0x6c97, 0x6c98,
- 0x6c9c, 0x6c9f, 0x6cb0, 0x6cb2, 0x6cb4, 0x6cc2, 0x6cc6, 0x6ccd,
- 0x6ccf, 0x6cd0, 0x6cd1, 0x6cd2, 0x6cd4, 0x6cd6,
- /* 0x47 */
- 0x6cda, 0x6cdc, 0x6ce0, 0x6ce7, 0x6ce9, 0x6ceb, 0x6cec, 0x6cee,
- 0x6cf2, 0x6cf4, 0x6d04, 0x6d07, 0x6d0a, 0x6d0e, 0x6d0f, 0x6d11,
- 0x6d13, 0x6d1a, 0x6d26, 0x6d27, 0x6d28, 0x6c67, 0x6d2e, 0x6d2f,
- 0x6d31, 0x6d39, 0x6d3c, 0x6d3f, 0x6d57, 0x6d5e, 0x6d5f, 0x6d61,
- 0x6d65, 0x6d67, 0x6d6f, 0x6d70, 0x6d7c, 0x6d82, 0x6d87, 0x6d91,
- 0x6d92, 0x6d94, 0x6d96, 0x6d97, 0x6d98, 0x6daa, 0x6dac, 0x6db4,
- 0x6db7, 0x6db9, 0x6dbd, 0x6dbf, 0x6dc4, 0x6dc8, 0x6dca, 0x6dce,
- 0x6dcf, 0x6dd6, 0x6ddb, 0x6ddd, 0x6ddf, 0x6de0, 0x6de2, 0x6de5,
- 0x6de9, 0x6def, 0x6df0, 0x6df4, 0x6df6, 0x6dfc, 0x6e00, 0x6e04,
- 0x6e1e, 0x6e22, 0x6e27, 0x6e32, 0x6e36, 0x6e39, 0x6e3b, 0x6e3c,
- 0x6e44, 0x6e45, 0x6e48, 0x6e49, 0x6e4b, 0x6e4f, 0x6e51, 0x6e52,
- 0x6e53, 0x6e54, 0x6e57, 0x6e5c, 0x6e5d, 0x6e5e,
- /* 0x48 */
- 0x6e62, 0x6e63, 0x6e68, 0x6e73, 0x6e7b, 0x6e7d, 0x6e8d, 0x6e93,
- 0x6e99, 0x6ea0, 0x6ea7, 0x6ead, 0x6eae, 0x6eb1, 0x6eb3, 0x6ebb,
- 0x6ebf, 0x6ec0, 0x6ec1, 0x6ec3, 0x6ec7, 0x6ec8, 0x6eca, 0x6ecd,
- 0x6ece, 0x6ecf, 0x6eeb, 0x6eed, 0x6eee, 0x6ef9, 0x6efb, 0x6efd,
- 0x6f04, 0x6f08, 0x6f0a, 0x6f0c, 0x6f0d, 0x6f16, 0x6f18, 0x6f1a,
- 0x6f1b, 0x6f26, 0x6f29, 0x6f2a, 0x6f2f, 0x6f30, 0x6f33, 0x6f36,
- 0x6f3b, 0x6f3c, 0x6f2d, 0x6f4f, 0x6f51, 0x6f52, 0x6f53, 0x6f57,
- 0x6f59, 0x6f5a, 0x6f5d, 0x6f5e, 0x6f61, 0x6f62, 0x6f68, 0x6f6c,
- 0x6f7d, 0x6f7e, 0x6f83, 0x6f87, 0x6f88, 0x6f8b, 0x6f8c, 0x6f8d,
- 0x6f90, 0x6f92, 0x6f93, 0x6f94, 0x6f96, 0x6f9a, 0x6f9f, 0x6fa0,
- 0x6fa5, 0x6fa6, 0x6fa7, 0x6fa8, 0x6fae, 0x6faf, 0x6fb0, 0x6fb5,
- 0x6fb6, 0x6fbc, 0x6fc5, 0x6fc7, 0x6fc8, 0x6fca,
- /* 0x49 */
- 0x6fda, 0x6fde, 0x6fe8, 0x6fe9, 0x6ff0, 0x6ff5, 0x6ff9, 0x6ffc,
- 0x6ffd, 0x7000, 0x7005, 0x7006, 0x7007, 0x700d, 0x7017, 0x7020,
- 0x7023, 0x702f, 0x7034, 0x7037, 0x7039, 0x703c, 0x7043, 0x7044,
- 0x7048, 0x7049, 0x704a, 0x704b, 0x7054, 0x7055, 0x705d, 0x705e,
- 0x704e, 0x7064, 0x7065, 0x706c, 0x706e, 0x7075, 0x7076, 0x707e,
- 0x7081, 0x7085, 0x7086, 0x7094, 0x7095, 0x7096, 0x7097, 0x7098,
- 0x709b, 0x70a4, 0x70ab, 0x70b0, 0x70b1, 0x70b4, 0x70b7, 0x70ca,
- 0x70d1, 0x70d3, 0x70d4, 0x70d5, 0x70d6, 0x70d8, 0x70dc, 0x70e4,
- 0x70fa, 0x7103, 0x7104, 0x7105, 0x7106, 0x7107, 0x710b, 0x710c,
- 0x710f, 0x711e, 0x7120, 0x712b, 0x712d, 0x712f, 0x7130, 0x7131,
- 0x7138, 0x7141, 0x7145, 0x7146, 0x7147, 0x714a, 0x714b, 0x7150,
- 0x7152, 0x7157, 0x715a, 0x715c, 0x715e, 0x7160,
- /* 0x4a */
- 0x7168, 0x7179, 0x7180, 0x7185, 0x7187, 0x718c, 0x7192, 0x719a,
- 0x719b, 0x71a0, 0x71a2, 0x71af, 0x71b0, 0x71b2, 0x71b3, 0x71ba,
- 0x71bf, 0x71c0, 0x71c1, 0x71c4, 0x71cb, 0x71cc, 0x71d3, 0x71d6,
- 0x71d9, 0x71da, 0x71dc, 0x71f8, 0x71fe, 0x7200, 0x7207, 0x7208,
- 0x7209, 0x7213, 0x7217, 0x721a, 0x721d, 0x721f, 0x7224, 0x722b,
- 0x722f, 0x7234, 0x7238, 0x7239, 0x7241, 0x7242, 0x7243, 0x7245,
- 0x724e, 0x724f, 0x7250, 0x7253, 0x7255, 0x7256, 0x725a, 0x725c,
- 0x725e, 0x7260, 0x7263, 0x7268, 0x726b, 0x726e, 0x726f, 0x7271,
- 0x7277, 0x7278, 0x727b, 0x727c, 0x727f, 0x7284, 0x7289, 0x728d,
- 0x728e, 0x7293, 0x729b, 0x72a8, 0x72ad, 0x72ae, 0x72b1, 0x72b4,
- 0x72be, 0x72c1, 0x72c7, 0x72c9, 0x72cc, 0x72d5, 0x72d6, 0x72d8,
- 0x72df, 0x72e5, 0x72f3, 0x72f4, 0x72fa, 0x72fb,
- /* 0x4b */
- 0x72fe, 0x7302, 0x7304, 0x7305, 0x7307, 0x730b, 0x730d, 0x7312,
- 0x7313, 0x7318, 0x7319, 0x731e, 0x7322, 0x7324, 0x7327, 0x7328,
- 0x732c, 0x7331, 0x7332, 0x7335, 0x733a, 0x733b, 0x733d, 0x7343,
- 0x734d, 0x7350, 0x7352, 0x7356, 0x7358, 0x735d, 0x735e, 0x735f,
- 0x7360, 0x7366, 0x7367, 0x7369, 0x736b, 0x736c, 0x736e, 0x736f,
- 0x7371, 0x7377, 0x7379, 0x737c, 0x7380, 0x7381, 0x7383, 0x7385,
- 0x7386, 0x738e, 0x7390, 0x7393, 0x7395, 0x7397, 0x7398, 0x739c,
- 0x739e, 0x739f, 0x73a0, 0x73a2, 0x73a5, 0x73a6, 0x73aa, 0x73ab,
- 0x73ad, 0x73b5, 0x73b7, 0x73b9, 0x73bc, 0x73bd, 0x73bf, 0x73c5,
- 0x73c6, 0x73c9, 0x73cb, 0x73cc, 0x73cf, 0x73d2, 0x73d3, 0x73d6,
- 0x73d9, 0x73dd, 0x73e1, 0x73e3, 0x73e6, 0x73e7, 0x73e9, 0x73f4,
- 0x73f5, 0x73f7, 0x73f9, 0x73fa, 0x73fb, 0x73fd,
- /* 0x4c */
- 0x73ff, 0x7400, 0x7401, 0x7404, 0x7407, 0x740a, 0x7411, 0x741a,
- 0x741b, 0x7424, 0x7426, 0x7428, 0x7429, 0x742a, 0x742b, 0x742c,
- 0x742d, 0x742e, 0x742f, 0x7430, 0x7431, 0x7439, 0x7440, 0x7443,
- 0x7444, 0x7446, 0x7447, 0x744b, 0x744d, 0x7451, 0x7452, 0x7457,
- 0x745d, 0x7462, 0x7466, 0x7467, 0x7468, 0x746b, 0x746d, 0x746e,
- 0x7471, 0x7472, 0x7480, 0x7481, 0x7485, 0x7486, 0x7487, 0x7489,
- 0x748f, 0x7490, 0x7491, 0x7492, 0x7498, 0x7499, 0x749a, 0x749c,
- 0x749f, 0x74a0, 0x74a1, 0x74a3, 0x74a6, 0x74a8, 0x74a9, 0x74aa,
- 0x74ab, 0x74ae, 0x74af, 0x74b1, 0x74b2, 0x74b5, 0x74b9, 0x74bb,
- 0x74bf, 0x74c8, 0x74c9, 0x74cc, 0x74d0, 0x74d3, 0x74d8, 0x74da,
- 0x74db, 0x74de, 0x74df, 0x74e4, 0x74e8, 0x74ea, 0x74eb, 0x74ef,
- 0x74f4, 0x74fa, 0x74fb, 0x74fc, 0x74ff, 0x7506,
- /* 0x4d */
- 0x7512, 0x7516, 0x7517, 0x7520, 0x7521, 0x7524, 0x7527, 0x7529,
- 0x752a, 0x752f, 0x7536, 0x7539, 0x753d, 0x753e, 0x753f, 0x7540,
- 0x7543, 0x7547, 0x7548, 0x754e, 0x7550, 0x7552, 0x7557, 0x755e,
- 0x755f, 0x7561, 0x756f, 0x7571, 0x7579, 0x757a, 0x757b, 0x757c,
- 0x757d, 0x757e, 0x7581, 0x7585, 0x7590, 0x7592, 0x7593, 0x7595,
- 0x7599, 0x759c, 0x75a2, 0x75a4, 0x75b4, 0x75ba, 0x75bf, 0x75c0,
- 0x75c1, 0x75c4, 0x75c6, 0x75cc, 0x75ce, 0x75cf, 0x75d7, 0x75dc,
- 0x75df, 0x75e0, 0x75e1, 0x75e4, 0x75e7, 0x75ec, 0x75ee, 0x75ef,
- 0x75f1, 0x75f9, 0x7600, 0x7602, 0x7603, 0x7604, 0x7607, 0x7608,
- 0x760a, 0x760c, 0x760f, 0x7612, 0x7613, 0x7615, 0x7616, 0x7619,
- 0x761b, 0x761c, 0x761d, 0x761e, 0x7623, 0x7625, 0x7626, 0x7629,
- 0x762d, 0x7632, 0x7633, 0x7635, 0x7638, 0x7639,
- /* 0x4e */
- 0x763a, 0x763c, 0x764a, 0x7640, 0x7641, 0x7643, 0x7644, 0x7645,
- 0x7649, 0x764b, 0x7655, 0x7659, 0x765f, 0x7664, 0x7665, 0x766d,
- 0x766e, 0x766f, 0x7671, 0x7674, 0x7681, 0x7685, 0x768c, 0x768d,
- 0x7695, 0x769b, 0x769c, 0x769d, 0x769f, 0x76a0, 0x76a2, 0x76a3,
- 0x76a4, 0x76a5, 0x76a6, 0x76a7, 0x76a8, 0x76aa, 0x76ad, 0x76bd,
- 0x76c1, 0x76c5, 0x76c9, 0x76cb, 0x76cc, 0x76ce, 0x76d4, 0x76d9,
- 0x76e0, 0x76e6, 0x76e8, 0x76ec, 0x76f0, 0x76f1, 0x76f6, 0x76f9,
- 0x76fc, 0x7700, 0x7706, 0x770a, 0x770e, 0x7712, 0x7714, 0x7715,
- 0x7717, 0x7719, 0x771a, 0x771c, 0x7722, 0x7728, 0x772d, 0x772e,
- 0x772f, 0x7734, 0x7735, 0x7736, 0x7739, 0x773d, 0x773e, 0x7742,
- 0x7745, 0x7746, 0x774a, 0x774d, 0x774e, 0x774f, 0x7752, 0x7756,
- 0x7757, 0x775c, 0x775e, 0x775f, 0x7760, 0x7762,
- /* 0x4f */
- 0x7764, 0x7767, 0x776a, 0x776c, 0x7770, 0x7772, 0x7773, 0x7774,
- 0x777a, 0x777d, 0x7780, 0x7784, 0x778c, 0x778d, 0x7794, 0x7795,
- 0x7796, 0x779a, 0x779f, 0x77a2, 0x77a7, 0x77aa, 0x77ae, 0x77af,
- 0x77b1, 0x77b5, 0x77be, 0x77c3, 0x77c9, 0x77d1, 0x77d2, 0x77d5,
- 0x77d9, 0x77de, 0x77df, 0x77e0, 0x77e4, 0x77e6, 0x77ea, 0x77ec,
- 0x77f0, 0x77f1, 0x77f4, 0x77f8, 0x77fb, 0x7805, 0x7806, 0x7809,
- 0x780d, 0x780e, 0x7811, 0x781d, 0x7821, 0x7822, 0x7823, 0x782d,
- 0x782e, 0x7830, 0x7835, 0x7837, 0x7843, 0x7844, 0x7847, 0x7848,
- 0x784c, 0x784e, 0x7852, 0x785c, 0x785e, 0x7860, 0x7861, 0x7863,
- 0x7864, 0x7868, 0x786a, 0x786e, 0x787a, 0x787e, 0x788a, 0x788f,
- 0x7894, 0x7898, 0x78a1, 0x789d, 0x789e, 0x789f, 0x78a4, 0x78a8,
- 0x78ac, 0x78ad, 0x78b0, 0x78b1, 0x78b2, 0x78b3,
- /* 0x50 */
- 0x78bb, 0x78bd, 0x78bf, 0x78c7, 0x78c8, 0x78c9, 0x78cc, 0x78ce,
- 0x78d2, 0x78d3, 0x78d5, 0x78d6, 0x78e4, 0x78db, 0x78df, 0x78e0,
- 0x78e1, 0x78e6, 0x78ea, 0x78f2, 0x78f3, 0x7900, 0x78f6, 0x78f7,
- 0x78fa, 0x78fb, 0x78ff, 0x7906, 0x790c, 0x7910, 0x791a, 0x791c,
- 0x791e, 0x791f, 0x7920, 0x7925, 0x7927, 0x7929, 0x792d, 0x7931,
- 0x7934, 0x7935, 0x793b, 0x793d, 0x793f, 0x7944, 0x7945, 0x7946,
- 0x794a, 0x794b, 0x794f, 0x7951, 0x7954, 0x7958, 0x795b, 0x795c,
- 0x7967, 0x7969, 0x796b, 0x7972, 0x7979, 0x797b, 0x797c, 0x797e,
- 0x798b, 0x798c, 0x7991, 0x7993, 0x7994, 0x7995, 0x7996, 0x7998,
- 0x799b, 0x799c, 0x79a1, 0x79a8, 0x79a9, 0x79ab, 0x79af, 0x79b1,
- 0x79b4, 0x79b8, 0x79bb, 0x79c2, 0x79c4, 0x79c7, 0x79c8, 0x79ca,
- 0x79cf, 0x79d4, 0x79d6, 0x79da, 0x79dd, 0x79de,
- /* 0x51 */
- 0x79e0, 0x79e2, 0x79e5, 0x79ea, 0x79eb, 0x79ed, 0x79f1, 0x79f8,
- 0x79fc, 0x7a02, 0x7a03, 0x7a07, 0x7a09, 0x7a0a, 0x7a0c, 0x7a11,
- 0x7a15, 0x7a1b, 0x7a1e, 0x7a21, 0x7a27, 0x7a2b, 0x7a2d, 0x7a2f,
- 0x7a30, 0x7a34, 0x7a35, 0x7a38, 0x7a39, 0x7a3a, 0x7a44, 0x7a45,
- 0x7a47, 0x7a48, 0x7a4c, 0x7a55, 0x7a56, 0x7a59, 0x7a5c, 0x7a5d,
- 0x7a5f, 0x7a60, 0x7a65, 0x7a67, 0x7a6a, 0x7a6d, 0x7a75, 0x7a78,
- 0x7a7e, 0x7a80, 0x7a82, 0x7a85, 0x7a86, 0x7a8a, 0x7a8b, 0x7a90,
- 0x7a91, 0x7a94, 0x7a9e, 0x7aa0, 0x7aa3, 0x7aac, 0x7ab3, 0x7ab5,
- 0x7ab9, 0x7abb, 0x7abc, 0x7ac6, 0x7ac9, 0x7acc, 0x7ace, 0x7ad1,
- 0x7adb, 0x7ae8, 0x7ae9, 0x7aeb, 0x7aec, 0x7af1, 0x7af4, 0x7afb,
- 0x7afd, 0x7afe, 0x7b07, 0x7b14, 0x7b1f, 0x7b23, 0x7b27, 0x7b29,
- 0x7b2a, 0x7b2b, 0x7b2d, 0x7b2e, 0x7b2f, 0x7b30,
- /* 0x52 */
- 0x7b31, 0x7b34, 0x7b3d, 0x7b3f, 0x7b40, 0x7b41, 0x7b47, 0x7b4e,
- 0x7b55, 0x7b60, 0x7b64, 0x7b66, 0x7b69, 0x7b6a, 0x7b6d, 0x7b6f,
- 0x7b72, 0x7b73, 0x7b77, 0x7b84, 0x7b89, 0x7b8e, 0x7b90, 0x7b91,
- 0x7b96, 0x7b9b, 0x7b9e, 0x7ba0, 0x7ba5, 0x7bac, 0x7baf, 0x7bb0,
- 0x7bb2, 0x7bb5, 0x7bb6, 0x7bba, 0x7bbb, 0x7bbc, 0x7bbd, 0x7bc2,
- 0x7bc5, 0x7bc8, 0x7bca, 0x7bd4, 0x7bd6, 0x7bd7, 0x7bd9, 0x7bda,
- 0x7bdb, 0x7be8, 0x7bea, 0x7bf2, 0x7bf4, 0x7bf5, 0x7bf8, 0x7bf9,
- 0x7bfa, 0x7bfc, 0x7bfe, 0x7c01, 0x7c02, 0x7c03, 0x7c04, 0x7c06,
- 0x7c09, 0x7c0b, 0x7c0c, 0x7c0e, 0x7c0f, 0x7c19, 0x7c1b, 0x7c20,
- 0x7c25, 0x7c26, 0x7c28, 0x7c2c, 0x7c31, 0x7c33, 0x7c34, 0x7c36,
- 0x7c39, 0x7c3a, 0x7c46, 0x7c4a, 0x7c55, 0x7c51, 0x7c52, 0x7c53,
- 0x7c59, 0x7c5a, 0x7c5b, 0x7c5c, 0x7c5d, 0x7c5e,
- /* 0x53 */
- 0x7c61, 0x7c63, 0x7c67, 0x7c69, 0x7c6d, 0x7c6e, 0x7c70, 0x7c72,
- 0x7c79, 0x7c7c, 0x7c7d, 0x7c86, 0x7c87, 0x7c8f, 0x7c94, 0x7c9e,
- 0x7ca0, 0x7ca6, 0x7cb0, 0x7cb6, 0x7cb7, 0x7cba, 0x7cbb, 0x7cbc,
- 0x7cbf, 0x7cc4, 0x7cc7, 0x7cc8, 0x7cc9, 0x7ccd, 0x7ccf, 0x7cd3,
- 0x7cd4, 0x7cd5, 0x7cd7, 0x7cd9, 0x7cda, 0x7cdd, 0x7ce6, 0x7ce9,
- 0x7ceb, 0x7cf5, 0x7d03, 0x7d07, 0x7d08, 0x7d09, 0x7d0f, 0x7d11,
- 0x7d12, 0x7d13, 0x7d16, 0x7d1d, 0x7d1e, 0x7d23, 0x7d26, 0x7d2a,
- 0x7d2d, 0x7d31, 0x7d3c, 0x7d3d, 0x7d3e, 0x7d40, 0x7d41, 0x7d47,
- 0x7d48, 0x7d4d, 0x7d51, 0x7d53, 0x7d57, 0x7d59, 0x7d5a, 0x7d5c,
- 0x7d5d, 0x7d65, 0x7d67, 0x7d6a, 0x7d70, 0x7d78, 0x7d7a, 0x7d7b,
- 0x7d7f, 0x7d81, 0x7d82, 0x7d83, 0x7d85, 0x7d86, 0x7d88, 0x7d8b,
- 0x7d8c, 0x7d8d, 0x7d91, 0x7d96, 0x7d97, 0x7d9d,
- /* 0x54 */
- 0x7d9e, 0x7da6, 0x7da7, 0x7daa, 0x7db3, 0x7db6, 0x7db7, 0x7db9,
- 0x7dc2, 0x7dc3, 0x7dc4, 0x7dc5, 0x7dc6, 0x7dcc, 0x7dcd, 0x7dce,
- 0x7dd7, 0x7dd9, 0x7e00, 0x7de2, 0x7de5, 0x7de6, 0x7dea, 0x7deb,
- 0x7ded, 0x7df1, 0x7df5, 0x7df6, 0x7df9, 0x7dfa, 0x7e08, 0x7e10,
- 0x7e11, 0x7e15, 0x7e17, 0x7e1c, 0x7e1d, 0x7e20, 0x7e27, 0x7e28,
- 0x7e2c, 0x7e2d, 0x7e2f, 0x7e33, 0x7e36, 0x7e3f, 0x7e44, 0x7e45,
- 0x7e47, 0x7e4e, 0x7e50, 0x7e52, 0x7e58, 0x7e5f, 0x7e61, 0x7e62,
- 0x7e65, 0x7e6b, 0x7e6e, 0x7e6f, 0x7e73, 0x7e78, 0x7e7e, 0x7e81,
- 0x7e86, 0x7e87, 0x7e8a, 0x7e8d, 0x7e91, 0x7e95, 0x7e98, 0x7e9a,
- 0x7e9d, 0x7e9e, 0x7f3c, 0x7f3b, 0x7f3d, 0x7f3e, 0x7f3f, 0x7f43,
- 0x7f44, 0x7f47, 0x7f4f, 0x7f52, 0x7f53, 0x7f5b, 0x7f5c, 0x7f5d,
- 0x7f61, 0x7f63, 0x7f64, 0x7f65, 0x7f66, 0x7f6d,
- /* 0x55 */
- 0x7f71, 0x7f7d, 0x7f7e, 0x7f7f, 0x7f80, 0x7f8b, 0x7f8d, 0x7f8f,
- 0x7f90, 0x7f91, 0x7f96, 0x7f97, 0x7f9c, 0x7fa1, 0x7fa2, 0x7fa6,
- 0x7faa, 0x7fad, 0x7fb4, 0x7fbc, 0x7fbf, 0x7fc0, 0x7fc3, 0x7fc8,
- 0x7fce, 0x7fcf, 0x7fdb, 0x7fdf, 0x7fe3, 0x7fe5, 0x7fe8, 0x7fec,
- 0x7fee, 0x7fef, 0x7ff2, 0x7ffa, 0x7ffd, 0x7ffe, 0x7fff, 0x8007,
- 0x8008, 0x800a, 0x800d, 0x800e, 0x800f, 0x8011, 0x8013, 0x8014,
- 0x8016, 0x801d, 0x801e, 0x801f, 0x8020, 0x8024, 0x8026, 0x802c,
- 0x802e, 0x8030, 0x8034, 0x8035, 0x8037, 0x8039, 0x803a, 0x803c,
- 0x803e, 0x8040, 0x8044, 0x8060, 0x8064, 0x8066, 0x806d, 0x8071,
- 0x8075, 0x8081, 0x8088, 0x808e, 0x809c, 0x809e, 0x80a6, 0x80a7,
- 0x80ab, 0x80b8, 0x80b9, 0x80c8, 0x80cd, 0x80cf, 0x80d2, 0x80d4,
- 0x80d5, 0x80d7, 0x80d8, 0x80e0, 0x80ed, 0x80ee,
- /* 0x56 */
- 0x80f0, 0x80f2, 0x80f3, 0x80f6, 0x80f9, 0x80fa, 0x80fe, 0x8103,
- 0x810b, 0x8116, 0x8117, 0x8118, 0x811c, 0x811e, 0x8120, 0x8124,
- 0x8127, 0x812c, 0x8130, 0x8135, 0x813a, 0x813c, 0x8145, 0x8147,
- 0x814a, 0x814c, 0x8152, 0x8157, 0x8160, 0x8161, 0x8167, 0x8168,
- 0x8169, 0x816d, 0x816f, 0x8177, 0x8181, 0x8190, 0x8184, 0x8185,
- 0x8186, 0x818b, 0x818e, 0x8196, 0x8198, 0x819b, 0x819e, 0x81a2,
- 0x81ae, 0x81b2, 0x81b4, 0x81bb, 0x81cb, 0x81c3, 0x81c5, 0x81ca,
- 0x81ce, 0x81cf, 0x81d5, 0x81d7, 0x81db, 0x81dd, 0x81de, 0x81e1,
- 0x81e4, 0x81eb, 0x81ec, 0x81f0, 0x81f1, 0x81f2, 0x81f5, 0x81f6,
- 0x81f8, 0x81f9, 0x81fd, 0x81ff, 0x8200, 0x8203, 0x820f, 0x8213,
- 0x8214, 0x8219, 0x821a, 0x821d, 0x8221, 0x8222, 0x8228, 0x8232,
- 0x8234, 0x823a, 0x8243, 0x8244, 0x8245, 0x8246,
- /* 0x57 */
- 0x824b, 0x824e, 0x824f, 0x8251, 0x8256, 0x825c, 0x8260, 0x8263,
- 0x8267, 0x826d, 0x8274, 0x827b, 0x827d, 0x827f, 0x8280, 0x8281,
- 0x8283, 0x8284, 0x8287, 0x8289, 0x828a, 0x828e, 0x8291, 0x8294,
- 0x8296, 0x8298, 0x829a, 0x829b, 0x82a0, 0x82a1, 0x82a3, 0x82a4,
- 0x82a7, 0x82a8, 0x82a9, 0x82aa, 0x82ae, 0x82b0, 0x82b2, 0x82b4,
- 0x82b7, 0x82ba, 0x82bc, 0x82be, 0x82bf, 0x82c6, 0x82d0, 0x82d5,
- 0x82da, 0x82e0, 0x82e2, 0x82e4, 0x82e8, 0x82ea, 0x82ed, 0x82ef,
- 0x82f6, 0x82f7, 0x82fd, 0x82fe, 0x8300, 0x8301, 0x8307, 0x8308,
- 0x830a, 0x830b, 0x8354, 0x831b, 0x831d, 0x831e, 0x831f, 0x8321,
- 0x8322, 0x832c, 0x832d, 0x832e, 0x8330, 0x8333, 0x8337, 0x833a,
- 0x833c, 0x833d, 0x8342, 0x8343, 0x8344, 0x8347, 0x834d, 0x834e,
- 0x8351, 0x8355, 0x8356, 0x8357, 0x8370, 0x8378,
- /* 0x58 */
- 0x837d, 0x837f, 0x8380, 0x8382, 0x8384, 0x8386, 0x838d, 0x8392,
- 0x8394, 0x8395, 0x8398, 0x8399, 0x839b, 0x839c, 0x839d, 0x83a6,
- 0x83a7, 0x83a9, 0x83ac, 0x83be, 0x83bf, 0x83c0, 0x83c7, 0x83c9,
- 0x83cf, 0x83d0, 0x83d1, 0x83d4, 0x83dd, 0x8353, 0x83e8, 0x83ea,
- 0x83f6, 0x83f8, 0x83f9, 0x83fc, 0x8401, 0x8406, 0x840a, 0x840f,
- 0x8411, 0x8415, 0x8419, 0x83ad, 0x842f, 0x8439, 0x8445, 0x8447,
- 0x8448, 0x844a, 0x844d, 0x844f, 0x8451, 0x8452, 0x8456, 0x8458,
- 0x8459, 0x845a, 0x845c, 0x8460, 0x8464, 0x8465, 0x8467, 0x846a,
- 0x8470, 0x8473, 0x8474, 0x8476, 0x8478, 0x847c, 0x847d, 0x8481,
- 0x8485, 0x8492, 0x8493, 0x8495, 0x849e, 0x84a6, 0x84a8, 0x84a9,
- 0x84aa, 0x84af, 0x84b1, 0x84b4, 0x84ba, 0x84bd, 0x84be, 0x84c0,
- 0x84c2, 0x84c7, 0x84c8, 0x84cc, 0x84cf, 0x84d3,
- /* 0x59 */
- 0x84dc, 0x84e7, 0x84ea, 0x84ef, 0x84f0, 0x84f1, 0x84f2, 0x84f7,
- 0x8532, 0x84fa, 0x84fb, 0x84fd, 0x8502, 0x8503, 0x8507, 0x850c,
- 0x850e, 0x8510, 0x851c, 0x851e, 0x8522, 0x8523, 0x8524, 0x8525,
- 0x8527, 0x852a, 0x852b, 0x852f, 0x8533, 0x8534, 0x8536, 0x853f,
- 0x8546, 0x854f, 0x8550, 0x8551, 0x8552, 0x8553, 0x8556, 0x8559,
- 0x855c, 0x855d, 0x855e, 0x855f, 0x8560, 0x8561, 0x8562, 0x8564,
- 0x856b, 0x856f, 0x8579, 0x857a, 0x857b, 0x857d, 0x857f, 0x8581,
- 0x8585, 0x8586, 0x8589, 0x858b, 0x858c, 0x858f, 0x8593, 0x8598,
- 0x859d, 0x859f, 0x85a0, 0x85a2, 0x85a5, 0x85a7, 0x85b4, 0x85b6,
- 0x85b7, 0x85b8, 0x85bc, 0x85bd, 0x85be, 0x85bf, 0x85c2, 0x85c7,
- 0x85ca, 0x85cb, 0x85ce, 0x85ad, 0x85d8, 0x85da, 0x85df, 0x85e0,
- 0x85e6, 0x85e8, 0x85ed, 0x85f3, 0x85f6, 0x85fc,
- /* 0x5a */
- 0x85ff, 0x8600, 0x8604, 0x8605, 0x860d, 0x860e, 0x8610, 0x8611,
- 0x8612, 0x8618, 0x8619, 0x861b, 0x861e, 0x8621, 0x8627, 0x8629,
- 0x8636, 0x8638, 0x863a, 0x863c, 0x863d, 0x8640, 0x8642, 0x8646,
- 0x8652, 0x8653, 0x8656, 0x8657, 0x8658, 0x8659, 0x865d, 0x8660,
- 0x8661, 0x8662, 0x8663, 0x8664, 0x8669, 0x866c, 0x866f, 0x8675,
- 0x8676, 0x8677, 0x867a, 0x868d, 0x8691, 0x8696, 0x8698, 0x869a,
- 0x869c, 0x86a1, 0x86a6, 0x86a7, 0x86a8, 0x86ad, 0x86b1, 0x86b3,
- 0x86b4, 0x86b5, 0x86b7, 0x86b8, 0x86b9, 0x86bf, 0x86c0, 0x86c1,
- 0x86c3, 0x86c5, 0x86d1, 0x86d2, 0x86d5, 0x86d7, 0x86da, 0x86dc,
- 0x86e0, 0x86e3, 0x86e5, 0x86e7, 0x8688, 0x86fa, 0x86fc, 0x86fd,
- 0x8704, 0x8705, 0x8707, 0x870b, 0x870e, 0x870f, 0x8710, 0x8713,
- 0x8714, 0x8719, 0x871e, 0x871f, 0x8721, 0x8723,
- /* 0x5b */
- 0x8728, 0x872e, 0x872f, 0x8731, 0x8732, 0x8739, 0x873a, 0x873c,
- 0x873d, 0x873e, 0x8740, 0x8743, 0x8745, 0x874d, 0x8758, 0x875d,
- 0x8761, 0x8764, 0x8765, 0x876f, 0x8771, 0x8772, 0x877b, 0x8783,
- 0x8784, 0x8785, 0x8786, 0x8787, 0x8788, 0x8789, 0x878b, 0x878c,
- 0x8790, 0x8793, 0x8795, 0x8797, 0x8798, 0x8799, 0x879e, 0x87a0,
- 0x87a3, 0x87a7, 0x87ac, 0x87ad, 0x87ae, 0x87b1, 0x87b5, 0x87be,
- 0x87bf, 0x87c1, 0x87c8, 0x87c9, 0x87ca, 0x87ce, 0x87d5, 0x87d6,
- 0x87d9, 0x87da, 0x87dc, 0x87df, 0x87e2, 0x87e3, 0x87e4, 0x87ea,
- 0x87eb, 0x87ed, 0x87f1, 0x87f3, 0x87f8, 0x87fa, 0x87ff, 0x8801,
- 0x8803, 0x8806, 0x8809, 0x880a, 0x880b, 0x8810, 0x8819, 0x8812,
- 0x8813, 0x8814, 0x8818, 0x881a, 0x881b, 0x881c, 0x881e, 0x881f,
- 0x8828, 0x882d, 0x882e, 0x8830, 0x8832, 0x8835,
- /* 0x5c */
- 0x883a, 0x883c, 0x8841, 0x8843, 0x8845, 0x8848, 0x8849, 0x884a,
- 0x884b, 0x884e, 0x8851, 0x8855, 0x8856, 0x8858, 0x885a, 0x885c,
- 0x885f, 0x8860, 0x8864, 0x8869, 0x8871, 0x8879, 0x887b, 0x8880,
- 0x8898, 0x889a, 0x889b, 0x889c, 0x889f, 0x88a0, 0x88a8, 0x88aa,
- 0x88ba, 0x88bd, 0x88be, 0x88c0, 0x88ca, 0x88cb, 0x88cc, 0x88cd,
- 0x88ce, 0x88d1, 0x88d2, 0x88d3, 0x88db, 0x88de, 0x88e7, 0x88ef,
- 0x88f0, 0x88f1, 0x88f5, 0x88f7, 0x8901, 0x8906, 0x890d, 0x890e,
- 0x890f, 0x8915, 0x8916, 0x8918, 0x8919, 0x891a, 0x891c, 0x8920,
- 0x8926, 0x8927, 0x8928, 0x8930, 0x8931, 0x8932, 0x8935, 0x8939,
- 0x893a, 0x893e, 0x8940, 0x8942, 0x8945, 0x8946, 0x8949, 0x894f,
- 0x8952, 0x8957, 0x895a, 0x895b, 0x895c, 0x8961, 0x8962, 0x8963,
- 0x896b, 0x896e, 0x8970, 0x8973, 0x8975, 0x897a,
- /* 0x5d */
- 0x897b, 0x897c, 0x897d, 0x8989, 0x898d, 0x8990, 0x8994, 0x8995,
- 0x899b, 0x899c, 0x899f, 0x89a0, 0x89a5, 0x89b0, 0x89b4, 0x89b5,
- 0x89b6, 0x89b7, 0x89bc, 0x89d4, 0x89d5, 0x89d6, 0x89d7, 0x89d8,
- 0x89e5, 0x89e9, 0x89eb, 0x89ed, 0x89f1, 0x89f3, 0x89f6, 0x89f9,
- 0x89fd, 0x89ff, 0x8a04, 0x8a05, 0x8a07, 0x8a0f, 0x8a11, 0x8a12,
- 0x8a14, 0x8a15, 0x8a1e, 0x8a20, 0x8a22, 0x8a24, 0x8a26, 0x8a2b,
- 0x8a2c, 0x8a2f, 0x8a35, 0x8a37, 0x8a3d, 0x8a3e, 0x8a40, 0x8a43,
- 0x8a45, 0x8a47, 0x8a49, 0x8a4d, 0x8a4e, 0x8a53, 0x8a56, 0x8a57,
- 0x8a58, 0x8a5c, 0x8a5d, 0x8a61, 0x8a65, 0x8a67, 0x8a75, 0x8a76,
- 0x8a77, 0x8a79, 0x8a7a, 0x8a7b, 0x8a7e, 0x8a7f, 0x8a80, 0x8a83,
- 0x8a86, 0x8a8b, 0x8a8f, 0x8a90, 0x8a92, 0x8a96, 0x8a97, 0x8a99,
- 0x8a9f, 0x8aa7, 0x8aa9, 0x8aae, 0x8aaf, 0x8ab3,
- /* 0x5e */
- 0x8ab6, 0x8ab7, 0x8abb, 0x8abe, 0x8ac3, 0x8ac6, 0x8ac8, 0x8ac9,
- 0x8aca, 0x8ad1, 0x8ad3, 0x8ad4, 0x8ad5, 0x8ad7, 0x8add, 0x8adf,
- 0x8aec, 0x8af0, 0x8af4, 0x8af5, 0x8af6, 0x8afc, 0x8aff, 0x8b05,
- 0x8b06, 0x8b0b, 0x8b11, 0x8b1c, 0x8b1e, 0x8b1f, 0x8b0a, 0x8b2d,
- 0x8b30, 0x8b37, 0x8b3c, 0x8b42, 0x8b43, 0x8b44, 0x8b45, 0x8b46,
- 0x8b48, 0x8b52, 0x8b53, 0x8b54, 0x8b59, 0x8b4d, 0x8b5e, 0x8b63,
- 0x8b6d, 0x8b76, 0x8b78, 0x8b79, 0x8b7c, 0x8b7e, 0x8b81, 0x8b84,
- 0x8b85, 0x8b8b, 0x8b8d, 0x8b8f, 0x8b94, 0x8b95, 0x8b9c, 0x8b9e,
- 0x8b9f, 0x8c38, 0x8c39, 0x8c3d, 0x8c3e, 0x8c45, 0x8c47, 0x8c49,
- 0x8c4b, 0x8c4f, 0x8c51, 0x8c53, 0x8c54, 0x8c57, 0x8c58, 0x8c5b,
- 0x8c5d, 0x8c59, 0x8c63, 0x8c64, 0x8c66, 0x8c68, 0x8c69, 0x8c6d,
- 0x8c73, 0x8c75, 0x8c76, 0x8c7b, 0x8c7e, 0x8c86,
- /* 0x5f */
- 0x8c87, 0x8c8b, 0x8c90, 0x8c92, 0x8c93, 0x8c99, 0x8c9b, 0x8c9c,
- 0x8ca4, 0x8cb9, 0x8cba, 0x8cc5, 0x8cc6, 0x8cc9, 0x8ccb, 0x8ccf,
- 0x8cd6, 0x8cd5, 0x8cd9, 0x8cdd, 0x8ce1, 0x8ce8, 0x8cec, 0x8cef,
- 0x8cf0, 0x8cf2, 0x8cf5, 0x8cf7, 0x8cf8, 0x8cfe, 0x8cff, 0x8d01,
- 0x8d03, 0x8d09, 0x8d12, 0x8d17, 0x8d1b, 0x8d65, 0x8d69, 0x8d6c,
- 0x8d6e, 0x8d7f, 0x8d82, 0x8d84, 0x8d88, 0x8d8d, 0x8d90, 0x8d91,
- 0x8d95, 0x8d9e, 0x8d9f, 0x8da0, 0x8da6, 0x8dab, 0x8dac, 0x8daf,
- 0x8db2, 0x8db5, 0x8db7, 0x8db9, 0x8dbb, 0x8dc0, 0x8dc5, 0x8dc6,
- 0x8dc7, 0x8dc8, 0x8dca, 0x8dce, 0x8dd1, 0x8dd4, 0x8dd5, 0x8dd7,
- 0x8dd9, 0x8de4, 0x8de5, 0x8de7, 0x8dec, 0x8df0, 0x8dbc, 0x8df1,
- 0x8df2, 0x8df4, 0x8dfd, 0x8e01, 0x8e04, 0x8e05, 0x8e06, 0x8e0b,
- 0x8e11, 0x8e14, 0x8e16, 0x8e20, 0x8e21, 0x8e22,
- /* 0x60 */
- 0x8e23, 0x8e26, 0x8e27, 0x8e31, 0x8e33, 0x8e36, 0x8e37, 0x8e38,
- 0x8e39, 0x8e3d, 0x8e40, 0x8e41, 0x8e4b, 0x8e4d, 0x8e4e, 0x8e4f,
- 0x8e54, 0x8e5b, 0x8e5c, 0x8e5d, 0x8e5e, 0x8e61, 0x8e62, 0x8e69,
- 0x8e6c, 0x8e6d, 0x8e6f, 0x8e70, 0x8e71, 0x8e79, 0x8e7a, 0x8e7b,
- 0x8e82, 0x8e83, 0x8e89, 0x8e90, 0x8e92, 0x8e95, 0x8e9a, 0x8e9b,
- 0x8e9d, 0x8e9e, 0x8ea2, 0x8ea7, 0x8ea9, 0x8ead, 0x8eae, 0x8eb3,
- 0x8eb5, 0x8eba, 0x8ebb, 0x8ec0, 0x8ec1, 0x8ec3, 0x8ec4, 0x8ec7,
- 0x8ecf, 0x8ed1, 0x8ed4, 0x8edc, 0x8ee8, 0x8eee, 0x8ef0, 0x8ef1,
- 0x8ef7, 0x8ef9, 0x8efa, 0x8eed, 0x8f00, 0x8f02, 0x8f07, 0x8f08,
- 0x8f0f, 0x8f10, 0x8f16, 0x8f17, 0x8f18, 0x8f1e, 0x8f20, 0x8f21,
- 0x8f23, 0x8f25, 0x8f27, 0x8f28, 0x8f2c, 0x8f2d, 0x8f2e, 0x8f34,
- 0x8f35, 0x8f36, 0x8f37, 0x8f3a, 0x8f40, 0x8f41,
- /* 0x61 */
- 0x8f43, 0x8f47, 0x8f4f, 0x8f51, 0x8f52, 0x8f53, 0x8f54, 0x8f55,
- 0x8f58, 0x8f5d, 0x8f5e, 0x8f65, 0x8f9d, 0x8fa0, 0x8fa1, 0x8fa4,
- 0x8fa5, 0x8fa6, 0x8fb5, 0x8fb6, 0x8fb8, 0x8fbe, 0x8fc0, 0x8fc1,
- 0x8fc6, 0x8fca, 0x8fcb, 0x8fcd, 0x8fd0, 0x8fd2, 0x8fd3, 0x8fd5,
- 0x8fe0, 0x8fe3, 0x8fe4, 0x8fe8, 0x8fee, 0x8ff1, 0x8ff5, 0x8ff6,
- 0x8ffb, 0x8ffe, 0x9002, 0x9004, 0x9008, 0x900c, 0x9018, 0x901b,
- 0x9028, 0x9029, 0x902f, 0x902a, 0x902c, 0x902d, 0x9033, 0x9034,
- 0x9037, 0x903f, 0x9043, 0x9044, 0x904c, 0x905b, 0x905d, 0x9062,
- 0x9066, 0x9067, 0x906c, 0x9070, 0x9074, 0x9079, 0x9085, 0x9088,
- 0x908b, 0x908c, 0x908e, 0x9090, 0x9095, 0x9097, 0x9098, 0x9099,
- 0x909b, 0x90a0, 0x90a1, 0x90a2, 0x90a5, 0x90b0, 0x90b2, 0x90b3,
- 0x90b4, 0x90b6, 0x90bd, 0x90cc, 0x90be, 0x90c3,
- /* 0x62 */
- 0x90c4, 0x90c5, 0x90c7, 0x90c8, 0x90d5, 0x90d7, 0x90d8, 0x90d9,
- 0x90dc, 0x90dd, 0x90df, 0x90e5, 0x90d2, 0x90f6, 0x90eb, 0x90ef,
- 0x90f0, 0x90f4, 0x90fe, 0x90ff, 0x9100, 0x9104, 0x9105, 0x9106,
- 0x9108, 0x910d, 0x9110, 0x9114, 0x9116, 0x9117, 0x9118, 0x911a,
- 0x911c, 0x911e, 0x9120, 0x9125, 0x9122, 0x9123, 0x9127, 0x9129,
- 0x912e, 0x912f, 0x9131, 0x9134, 0x9136, 0x9137, 0x9139, 0x913a,
- 0x913c, 0x913d, 0x9143, 0x9147, 0x9148, 0x914f, 0x9153, 0x9157,
- 0x9159, 0x915a, 0x915b, 0x9161, 0x9164, 0x9167, 0x916d, 0x9174,
- 0x9179, 0x917a, 0x917b, 0x9181, 0x9183, 0x9185, 0x9186, 0x918a,
- 0x918e, 0x9191, 0x9193, 0x9194, 0x9195, 0x9198, 0x919e, 0x91a1,
- 0x91a6, 0x91a8, 0x91ac, 0x91ad, 0x91ae, 0x91b0, 0x91b1, 0x91b2,
- 0x91b3, 0x91b6, 0x91bb, 0x91bc, 0x91bd, 0x91bf,
- /* 0x63 */
- 0x91c2, 0x91c3, 0x91c5, 0x91d3, 0x91d4, 0x91d7, 0x91d9, 0x91da,
- 0x91de, 0x91e4, 0x91e5, 0x91e9, 0x91ea, 0x91ec, 0x91ed, 0x91ee,
- 0x91ef, 0x91f0, 0x91f1, 0x91f7, 0x91f9, 0x91fb, 0x91fd, 0x9200,
- 0x9201, 0x9204, 0x9205, 0x9206, 0x9207, 0x9209, 0x920a, 0x920c,
- 0x9210, 0x9212, 0x9213, 0x9216, 0x9218, 0x921c, 0x921d, 0x9223,
- 0x9224, 0x9225, 0x9226, 0x9228, 0x922e, 0x922f, 0x9230, 0x9233,
- 0x9235, 0x9236, 0x9238, 0x9239, 0x923a, 0x923c, 0x923e, 0x9240,
- 0x9242, 0x9243, 0x9246, 0x9247, 0x924a, 0x924d, 0x924e, 0x924f,
- 0x9251, 0x9258, 0x9259, 0x925c, 0x925d, 0x9260, 0x9261, 0x9265,
- 0x9267, 0x9268, 0x9269, 0x926e, 0x926f, 0x9270, 0x9275, 0x9276,
- 0x9277, 0x9278, 0x9279, 0x927b, 0x927c, 0x927d, 0x927f, 0x9288,
- 0x9289, 0x928a, 0x928d, 0x928e, 0x9292, 0x9297,
- /* 0x64 */
- 0x9299, 0x929f, 0x92a0, 0x92a4, 0x92a5, 0x92a7, 0x92a8, 0x92ab,
- 0x92af, 0x92b2, 0x92b6, 0x92b8, 0x92ba, 0x92bb, 0x92bc, 0x92bd,
- 0x92bf, 0x92c0, 0x92c1, 0x92c2, 0x92c3, 0x92c5, 0x92c6, 0x92c7,
- 0x92c8, 0x92cb, 0x92cc, 0x92cd, 0x92ce, 0x92d0, 0x92d3, 0x92d5,
- 0x92d7, 0x92d8, 0x92d9, 0x92dc, 0x92dd, 0x92df, 0x92e0, 0x92e1,
- 0x92e3, 0x92e5, 0x92e7, 0x92e8, 0x92ec, 0x92ee, 0x92f0, 0x92f9,
- 0x92fb, 0x92ff, 0x9300, 0x9302, 0x9308, 0x930d, 0x9311, 0x9314,
- 0x9315, 0x931c, 0x931d, 0x931e, 0x931f, 0x9321, 0x9324, 0x9325,
- 0x9327, 0x9329, 0x932a, 0x9333, 0x9334, 0x9336, 0x9337, 0x9347,
- 0x9348, 0x9349, 0x9350, 0x9351, 0x9352, 0x9355, 0x9357, 0x9358,
- 0x935a, 0x935e, 0x9364, 0x9365, 0x9367, 0x9369, 0x936a, 0x936d,
- 0x936f, 0x9370, 0x9371, 0x9373, 0x9374, 0x9376,
- /* 0x65 */
- 0x937a, 0x937d, 0x937f, 0x9380, 0x9381, 0x9382, 0x9388, 0x938a,
- 0x938b, 0x938d, 0x938f, 0x9392, 0x9395, 0x9398, 0x939b, 0x939e,
- 0x93a1, 0x93a3, 0x93a4, 0x93a6, 0x93a8, 0x93ab, 0x93b4, 0x93b5,
- 0x93b6, 0x93ba, 0x93a9, 0x93c1, 0x93c4, 0x93c5, 0x93c6, 0x93c7,
- 0x93c9, 0x93ca, 0x93cb, 0x93cc, 0x93cd, 0x93d3, 0x93d9, 0x93dc,
- 0x93de, 0x93df, 0x93e2, 0x93e6, 0x93e7, 0x93f9, 0x93f7, 0x93f8,
- 0x93fa, 0x93fb, 0x93fd, 0x9401, 0x9402, 0x9404, 0x9408, 0x9409,
- 0x940d, 0x940e, 0x940f, 0x9415, 0x9416, 0x9417, 0x941f, 0x942e,
- 0x942f, 0x9431, 0x9432, 0x9433, 0x9434, 0x943b, 0x943f, 0x943d,
- 0x9443, 0x9445, 0x9448, 0x944a, 0x944c, 0x9455, 0x9459, 0x945c,
- 0x945f, 0x9461, 0x9463, 0x9468, 0x946b, 0x946d, 0x946e, 0x946f,
- 0x9471, 0x9472, 0x9484, 0x9483, 0x9578, 0x9579,
- /* 0x66 */
- 0x957e, 0x9584, 0x9588, 0x958c, 0x958d, 0x958e, 0x959d, 0x959e,
- 0x959f, 0x95a1, 0x95a6, 0x95a9, 0x95ab, 0x95ac, 0x95b4, 0x95b6,
- 0x95ba, 0x95bd, 0x95bf, 0x95c6, 0x95c8, 0x95c9, 0x95cb, 0x95d0,
- 0x95d1, 0x95d2, 0x95d3, 0x95d9, 0x95da, 0x95dd, 0x95de, 0x95df,
- 0x95e0, 0x95e4, 0x95e6, 0x961d, 0x961e, 0x9622, 0x9624, 0x9625,
- 0x9626, 0x962c, 0x9631, 0x9633, 0x9637, 0x9638, 0x9639, 0x963a,
- 0x963c, 0x963d, 0x9641, 0x9652, 0x9654, 0x9656, 0x9657, 0x9658,
- 0x9661, 0x966e, 0x9674, 0x967b, 0x967c, 0x967e, 0x967f, 0x9681,
- 0x9682, 0x9683, 0x9684, 0x9689, 0x9691, 0x9696, 0x969a, 0x969d,
- 0x969f, 0x96a4, 0x96a5, 0x96a6, 0x96a9, 0x96ae, 0x96af, 0x96b3,
- 0x96ba, 0x96ca, 0x96d2, 0x5db2, 0x96d8, 0x96da, 0x96dd, 0x96de,
- 0x96df, 0x96e9, 0x96ef, 0x96f1, 0x96fa, 0x9702,
- /* 0x67 */
- 0x9703, 0x9705, 0x9709, 0x971a, 0x971b, 0x971d, 0x9721, 0x9722,
- 0x9723, 0x9728, 0x9731, 0x9733, 0x9741, 0x9743, 0x974a, 0x974e,
- 0x974f, 0x9755, 0x9757, 0x9758, 0x975a, 0x975b, 0x9763, 0x9767,
- 0x976a, 0x976e, 0x9773, 0x9776, 0x9777, 0x9778, 0x977b, 0x977d,
- 0x977f, 0x9780, 0x9789, 0x9795, 0x9796, 0x9797, 0x9799, 0x979a,
- 0x979e, 0x979f, 0x97a2, 0x97ac, 0x97ae, 0x97b1, 0x97b2, 0x97b5,
- 0x97b6, 0x97b8, 0x97b9, 0x97ba, 0x97bc, 0x97be, 0x97bf, 0x97c1,
- 0x97c4, 0x97c5, 0x97c7, 0x97c9, 0x97ca, 0x97cc, 0x97cd, 0x97ce,
- 0x97d0, 0x97d1, 0x97d4, 0x97d7, 0x97d8, 0x97d9, 0x97dd, 0x97de,
- 0x97e0, 0x97db, 0x97e1, 0x97e4, 0x97ef, 0x97f1, 0x97f4, 0x97f7,
- 0x97f8, 0x97fa, 0x9807, 0x980a, 0x9819, 0x980d, 0x980e, 0x9814,
- 0x9816, 0x981c, 0x981e, 0x9820, 0x9823, 0x9826,
- /* 0x68 */
- 0x982b, 0x982e, 0x982f, 0x9830, 0x9832, 0x9833, 0x9835, 0x9825,
- 0x983e, 0x9844, 0x9847, 0x984a, 0x9851, 0x9852, 0x9853, 0x9856,
- 0x9857, 0x9859, 0x985a, 0x9862, 0x9863, 0x9865, 0x9866, 0x986a,
- 0x986c, 0x98ab, 0x98ad, 0x98ae, 0x98b0, 0x98b4, 0x98b7, 0x98b8,
- 0x98ba, 0x98bb, 0x98bf, 0x98c2, 0x98c5, 0x98c8, 0x98cc, 0x98e1,
- 0x98e3, 0x98e5, 0x98e6, 0x98e7, 0x98ea, 0x98f3, 0x98f6, 0x9902,
- 0x9907, 0x9908, 0x9911, 0x9915, 0x9916, 0x9917, 0x991a, 0x991b,
- 0x991c, 0x991f, 0x9922, 0x9926, 0x9927, 0x992b, 0x9931, 0x9932,
- 0x9933, 0x9934, 0x9935, 0x9939, 0x993a, 0x993b, 0x993c, 0x9940,
- 0x9941, 0x9946, 0x9947, 0x9948, 0x994d, 0x994e, 0x9954, 0x9958,
- 0x9959, 0x995b, 0x995c, 0x995e, 0x995f, 0x9960, 0x999b, 0x999d,
- 0x999f, 0x99a6, 0x99b0, 0x99b1, 0x99b2, 0x99b5,
- /* 0x69 */
- 0x99b9, 0x99ba, 0x99bd, 0x99bf, 0x99c3, 0x99c9, 0x99d3, 0x99d4,
- 0x99d9, 0x99da, 0x99dc, 0x99de, 0x99e7, 0x99ea, 0x99eb, 0x99ec,
- 0x99f0, 0x99f4, 0x99f5, 0x99f9, 0x99fd, 0x99fe, 0x9a02, 0x9a03,
- 0x9a04, 0x9a0b, 0x9a0c, 0x9a10, 0x9a11, 0x9a16, 0x9a1e, 0x9a20,
- 0x9a22, 0x9a23, 0x9a24, 0x9a27, 0x9a2d, 0x9a2e, 0x9a33, 0x9a35,
- 0x9a36, 0x9a38, 0x9a47, 0x9a41, 0x9a44, 0x9a4a, 0x9a4b, 0x9a4c,
- 0x9a4e, 0x9a51, 0x9a54, 0x9a56, 0x9a5d, 0x9aaa, 0x9aac, 0x9aae,
- 0x9aaf, 0x9ab2, 0x9ab4, 0x9ab5, 0x9ab6, 0x9ab9, 0x9abb, 0x9abe,
- 0x9abf, 0x9ac1, 0x9ac3, 0x9ac6, 0x9ac8, 0x9ace, 0x9ad0, 0x9ad2,
- 0x9ad5, 0x9ad6, 0x9ad7, 0x9adb, 0x9adc, 0x9ae0, 0x9ae4, 0x9ae5,
- 0x9ae7, 0x9ae9, 0x9aec, 0x9af2, 0x9af3, 0x9af5, 0x9af9, 0x9afa,
- 0x9afd, 0x9aff, 0x9b00, 0x9b01, 0x9b02, 0x9b03,
- /* 0x6a */
- 0x9b04, 0x9b05, 0x9b08, 0x9b09, 0x9b0b, 0x9b0c, 0x9b0d, 0x9b0e,
- 0x9b10, 0x9b12, 0x9b16, 0x9b19, 0x9b1b, 0x9b1c, 0x9b20, 0x9b26,
- 0x9b2b, 0x9b2d, 0x9b33, 0x9b34, 0x9b35, 0x9b37, 0x9b39, 0x9b3a,
- 0x9b3d, 0x9b48, 0x9b4b, 0x9b4c, 0x9b55, 0x9b56, 0x9b57, 0x9b5b,
- 0x9b5e, 0x9b61, 0x9b63, 0x9b65, 0x9b66, 0x9b68, 0x9b6a, 0x9b6b,
- 0x9b6c, 0x9b6d, 0x9b6e, 0x9b73, 0x9b75, 0x9b77, 0x9b78, 0x9b79,
- 0x9b7f, 0x9b80, 0x9b84, 0x9b85, 0x9b86, 0x9b87, 0x9b89, 0x9b8a,
- 0x9b8b, 0x9b8d, 0x9b8f, 0x9b90, 0x9b94, 0x9b9a, 0x9b9d, 0x9b9e,
- 0x9ba6, 0x9ba7, 0x9ba9, 0x9bac, 0x9bb0, 0x9bb1, 0x9bb2, 0x9bb7,
- 0x9bb8, 0x9bbb, 0x9bbc, 0x9bbe, 0x9bbf, 0x9bc1, 0x9bc7, 0x9bc8,
- 0x9bce, 0x9bd0, 0x9bd7, 0x9bd8, 0x9bdd, 0x9bdf, 0x9be5, 0x9be7,
- 0x9bea, 0x9beb, 0x9bef, 0x9bf3, 0x9bf7, 0x9bf8,
- /* 0x6b */
- 0x9bf9, 0x9bfa, 0x9bfd, 0x9bff, 0x9c00, 0x9c02, 0x9c0b, 0x9c0f,
- 0x9c11, 0x9c16, 0x9c18, 0x9c19, 0x9c1a, 0x9c1c, 0x9c1e, 0x9c22,
- 0x9c23, 0x9c26, 0x9c27, 0x9c28, 0x9c29, 0x9c2a, 0x9c31, 0x9c35,
- 0x9c36, 0x9c37, 0x9c3d, 0x9c41, 0x9c43, 0x9c44, 0x9c45, 0x9c49,
- 0x9c4a, 0x9c4e, 0x9c4f, 0x9c50, 0x9c53, 0x9c54, 0x9c56, 0x9c58,
- 0x9c5b, 0x9c5d, 0x9c5e, 0x9c5f, 0x9c63, 0x9c69, 0x9c6a, 0x9c5c,
- 0x9c6b, 0x9c68, 0x9c6e, 0x9c70, 0x9c72, 0x9c75, 0x9c77, 0x9c7b,
- 0x9ce6, 0x9cf2, 0x9cf7, 0x9cf9, 0x9d0b, 0x9d02, 0x9d11, 0x9d17,
- 0x9d18, 0x9d1c, 0x9d1d, 0x9d1e, 0x9d2f, 0x9d30, 0x9d32, 0x9d33,
- 0x9d34, 0x9d3a, 0x9d3c, 0x9d45, 0x9d3d, 0x9d42, 0x9d43, 0x9d47,
- 0x9d4a, 0x9d53, 0x9d54, 0x9d5f, 0x9d63, 0x9d62, 0x9d65, 0x9d69,
- 0x9d6a, 0x9d6b, 0x9d70, 0x9d76, 0x9d77, 0x9d7b,
- /* 0x6c */
- 0x9d7c, 0x9d7e, 0x9d83, 0x9d84, 0x9d86, 0x9d8a, 0x9d8d, 0x9d8e,
- 0x9d92, 0x9d93, 0x9d95, 0x9d96, 0x9d97, 0x9d98, 0x9da1, 0x9daa,
- 0x9dac, 0x9dae, 0x9db1, 0x9db5, 0x9db9, 0x9dbc, 0x9dbf, 0x9dc3,
- 0x9dc7, 0x9dc9, 0x9dca, 0x9dd4, 0x9dd5, 0x9dd6, 0x9dd7, 0x9dda,
- 0x9dde, 0x9ddf, 0x9de0, 0x9de5, 0x9de7, 0x9de9, 0x9deb, 0x9dee,
- 0x9df0, 0x9df3, 0x9df4, 0x9dfe, 0x9e0a, 0x9e02, 0x9e07, 0x9e0e,
- 0x9e10, 0x9e11, 0x9e12, 0x9e15, 0x9e16, 0x9e19, 0x9e1c, 0x9e1d,
- 0x9e7a, 0x9e7b, 0x9e7c, 0x9e80, 0x9e82, 0x9e83, 0x9e84, 0x9e85,
- 0x9e87, 0x9e8e, 0x9e8f, 0x9e96, 0x9e98, 0x9e9b, 0x9e9e, 0x9ea4,
- 0x9ea8, 0x9eac, 0x9eae, 0x9eaf, 0x9eb0, 0x9eb3, 0x9eb4, 0x9eb5,
- 0x9ec6, 0x9ec8, 0x9ecb, 0x9ed5, 0x9edf, 0x9ee4, 0x9ee7, 0x9eec,
- 0x9eed, 0x9eee, 0x9ef0, 0x9ef1, 0x9ef2, 0x9ef5,
- /* 0x6d */
- 0x9ef8, 0x9eff, 0x9f02, 0x9f03, 0x9f09, 0x9f0f, 0x9f10, 0x9f11,
- 0x9f12, 0x9f14, 0x9f16, 0x9f17, 0x9f19, 0x9f1a, 0x9f1b, 0x9f1f,
- 0x9f22, 0x9f26, 0x9f2a, 0x9f2b, 0x9f2f, 0x9f31, 0x9f32, 0x9f34,
- 0x9f37, 0x9f39, 0x9f3a, 0x9f3c, 0x9f3d, 0x9f3f, 0x9f41, 0x9f43,
- 0x9f44, 0x9f45, 0x9f46, 0x9f47, 0x9f53, 0x9f55, 0x9f56, 0x9f57,
- 0x9f58, 0x9f5a, 0x9f5d, 0x9f5e, 0x9f68, 0x9f69, 0x9f6d, 0x9f6e,
- 0x9f6f, 0x9f70, 0x9f71, 0x9f73, 0x9f75, 0x9f7a, 0x9f7d, 0x9f8f,
- 0x9f90, 0x9f91, 0x9f92, 0x9f94, 0x9f96, 0x9f97, 0x9f9e, 0x9fa1,
- 0x9fa2, 0x9fa3, 0x9fa5,
-};
-
-static int
-jisx0212_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n)
-{
- unsigned char c1 = (s[0] & 0x7F);
- if ((c1 == 0x22) || (c1 >= 0x26 && c1 <= 0x27) || (c1 >= 0x29 && c1 <= 0x2b) || (c1 >= 0x30 && c1 <= 0x6d)) {
- if (n >= 2) {
- unsigned char c2 = (s[1] & 0x7F);
- if (c2 >= 0x21 && c2 < 0x7f) {
- unsigned int i = 94 * (c1 - 0x21) + (c2 - 0x21);
- unsigned short wc = 0xfffd;
- if (i < 470) {
- if (i < 175)
- wc = jisx0212_2uni_page22[i-94];
- } else if (i < 752) {
- if (i < 658)
- wc = jisx0212_2uni_page26[i-470];
- } else if (i < 1410) {
- if (i < 1027)
- wc = jisx0212_2uni_page29[i-752];
- } else {
- if (i < 7211)
- wc = jisx0212_2uni_page30[i-1410];
- }
- if (wc != 0xfffd) {
- *pwc = (ucs4_t) wc;
- return 2;
- }
- }
- return RET_ILSEQ;
- }
- return RET_TOOFEW(0);
- }
- return RET_ILSEQ;
-}
-
-static const unsigned short jisx0212_2charset[6067] = {
- 0x2237, 0x2242, 0x2270, 0x2243, 0x226d, 0x226c, 0x226e, 0x2234,
- 0x2231, 0x226b, 0x2244, 0x2a22, 0x2a21, 0x2a24, 0x2a2a, 0x2a23,
- 0x2a29, 0x2921, 0x2a2e, 0x2a32, 0x2a31, 0x2a34, 0x2a33, 0x2a40,
- 0x2a3f, 0x2a42, 0x2a41, 0x2a50, 0x2a52, 0x2a51, 0x2a54, 0x2a58,
- 0x2a53, 0x292c, 0x2a63, 0x2a62, 0x2a65, 0x2a64, 0x2a72, 0x2930,
- 0x294e, 0x2b22, 0x2b21, 0x2b24, 0x2b2a, 0x2b23, 0x2b29, 0x2941,
- 0x2b2e, 0x2b32, 0x2b31, 0x2b34, 0x2b33, 0x2b40, 0x2b3f, 0x2b42,
- 0x2b41, 0x2943, 0x2b50, 0x2b52, 0x2b51, 0x2b54, 0x2b58, 0x2b53,
- 0x294c, 0x2b63, 0x2b62, 0x2b65, 0x2b64, 0x2b72, 0x2950, 0x2b73,
- 0x2a27, 0x2b27, 0x2a25, 0x2b25, 0x2a28, 0x2b28, 0x2a2b, 0x2b2b,
- 0x2a2c, 0x2b2c, 0x2a2f, 0x2b2f, 0x2a2d, 0x2b2d, 0x2a30, 0x2b30,
- 0x2922, 0x2942, 0x2a37, 0x2b37, 0x2a36, 0x2b36, 0x2a38, 0x2b38,
- 0x2a35, 0x2b35, 0x2a3a, 0x2b3a, 0x2a3b, 0x2b3b, 0x2a3d, 0x2b3d,
- 0x2a3c, 0x2a3e, 0x2b3e, 0x2924, 0x2944, 0x2a47, 0x2b47, 0x2a45,
- 0x2b45, 0x2a46, 0x2b46, 0x2a44, 0x2945, 0x2926, 0x2946, 0x2a48,
- 0x2b48, 0x2a49, 0x2b49, 0x2947, 0x2a4a, 0x2b4a, 0x2a4c, 0x2b4c,
- 0x2a4b, 0x2b4b, 0x2929, 0x2949, 0x2928, 0x2948, 0x2a4d, 0x2b4d,
- 0x2a4f, 0x2b4f, 0x2a4e, 0x2b4e, 0x294a, 0x292b, 0x294b, 0x2a57,
- 0x2b57, 0x2a56, 0x2b56, 0x292d, 0x294d, 0x2a59, 0x2b59, 0x2a5b,
- 0x2b5b, 0x2a5a, 0x2b5a, 0x2a5c, 0x2b5c, 0x2a5d, 0x2b5d, 0x2a5f,
- 0x2b5f, 0x2a5e, 0x2b5e, 0x2a61, 0x2b61, 0x2a60, 0x2b60, 0x292f,
- 0x294f, 0x2a6c, 0x2b6c, 0x2a69, 0x2b69, 0x2a66, 0x2b66, 0x2a6b,
- 0x2b6b, 0x2a68, 0x2b68, 0x2a6a, 0x2b6a, 0x2a71, 0x2b71, 0x2a74,
- 0x2b74, 0x2a73, 0x2a75, 0x2b75, 0x2a77, 0x2b77, 0x2a76, 0x2b76,
- 0x2a26, 0x2b26, 0x2a43, 0x2b43, 0x2a55, 0x2b55, 0x2a67, 0x2b67,
- 0x2a70, 0x2b70, 0x2a6d, 0x2b6d, 0x2a6f, 0x2b6f, 0x2a6e, 0x2b6e,
- 0x2b39, 0x2230, 0x222f, 0x2232, 0x2236, 0x2235, 0x2233, 0x2238,
- 0x2239, 0x2661, 0x2662, 0x2663, 0x2664, 0x2667, 0x2669, 0x266c,
- 0x2676, 0x2665, 0x266a, 0x2671, 0x2672, 0x2673, 0x2674, 0x267b,
- 0x2678, 0x2675, 0x267a, 0x2677, 0x2679, 0x267c, 0x2742, 0x2743,
- 0x2744, 0x2745, 0x2746, 0x2747, 0x2748, 0x2749, 0x274a, 0x274b,
- 0x274c, 0x274d, 0x274e, 0x2772, 0x2773, 0x2774, 0x2775, 0x2776,
- 0x2777, 0x2778, 0x2779, 0x277a, 0x277b, 0x277c, 0x277d, 0x277e,
- 0x2271, 0x226f, 0x3021, 0x3022, 0x3023, 0x3024, 0x3025, 0x3026,
- 0x3027, 0x3028, 0x3029, 0x302a, 0x302b, 0x302c, 0x302d, 0x302e,
- 0x302f, 0x3030, 0x3031, 0x3032, 0x3033, 0x3034, 0x3035, 0x3036,
- 0x3037, 0x3038, 0x3039, 0x303a, 0x303b, 0x303c, 0x303d, 0x303e,
- 0x303f, 0x3040, 0x3041, 0x3042, 0x3043, 0x3044, 0x3045, 0x3046,
- 0x3047, 0x3048, 0x3049, 0x304a, 0x304b, 0x304c, 0x304d, 0x304e,
- 0x304f, 0x3050, 0x3051, 0x3052, 0x3053, 0x3054, 0x3055, 0x3056,
- 0x3057, 0x3058, 0x3059, 0x305a, 0x305b, 0x305c, 0x305d, 0x305e,
- 0x3060, 0x3061, 0x3062, 0x3063, 0x3064, 0x3065, 0x3066, 0x3067,
- 0x3068, 0x3069, 0x306a, 0x306b, 0x306c, 0x306d, 0x306e, 0x306f,
- 0x3070, 0x305f, 0x3071, 0x3072, 0x3073, 0x3074, 0x3075, 0x3076,
- 0x3077, 0x3078, 0x3079, 0x307a, 0x307b, 0x307c, 0x307d, 0x307e,
- 0x3121, 0x3122, 0x3123, 0x3124, 0x3125, 0x3126, 0x3127, 0x3128,
- 0x3129, 0x312a, 0x312b, 0x312c, 0x312d, 0x312e, 0x312f, 0x3130,
- 0x3131, 0x3132, 0x3133, 0x3134, 0x3135, 0x3136, 0x3137, 0x3138,
- 0x3139, 0x313a, 0x313b, 0x313c, 0x313d, 0x313e, 0x313f, 0x3140,
- 0x3141, 0x3142, 0x3143, 0x3144, 0x3145, 0x3146, 0x3147, 0x3148,
- 0x3149, 0x314a, 0x314b, 0x314c, 0x314d, 0x314e, 0x314f, 0x3150,
- 0x3151, 0x3152, 0x3153, 0x3154, 0x3155, 0x3156, 0x3157, 0x3158,
- 0x3159, 0x315a, 0x315b, 0x315c, 0x315d, 0x315e, 0x3176, 0x315f,
- 0x3160, 0x3161, 0x3162, 0x3163, 0x3164, 0x3165, 0x3166, 0x3167,
- 0x3168, 0x3169, 0x316a, 0x316b, 0x316c, 0x316d, 0x316e, 0x316f,
- 0x3170, 0x3171, 0x3172, 0x3173, 0x3174, 0x3175, 0x3177, 0x3178,
- 0x3179, 0x317a, 0x317b, 0x317c, 0x317d, 0x317e, 0x3221, 0x3222,
- 0x3223, 0x3224, 0x3225, 0x3226, 0x3227, 0x3228, 0x3229, 0x322a,
- 0x322b, 0x322c, 0x322d, 0x322e, 0x322f, 0x3230, 0x3231, 0x3232,
- 0x3233, 0x3234, 0x3235, 0x3236, 0x3237, 0x3238, 0x3239, 0x323a,
- 0x323b, 0x323c, 0x323d, 0x323e, 0x323f, 0x3240, 0x3241, 0x3242,
- 0x3243, 0x3244, 0x3245, 0x3251, 0x3246, 0x3247, 0x3248, 0x3249,
- 0x324a, 0x324b, 0x324c, 0x324d, 0x324e, 0x324f, 0x3250, 0x3252,
- 0x3253, 0x3254, 0x3255, 0x3256, 0x3257, 0x3258, 0x3259, 0x325a,
- 0x325b, 0x325c, 0x325d, 0x325e, 0x325f, 0x3260, 0x3261, 0x3262,
- 0x3263, 0x3264, 0x3265, 0x3266, 0x3267, 0x3268, 0x3269, 0x326a,
- 0x326b, 0x326c, 0x326d, 0x326e, 0x326f, 0x3270, 0x3271, 0x3272,
- 0x3273, 0x3274, 0x3275, 0x3276, 0x3277, 0x3278, 0x3279, 0x327a,
- 0x327b, 0x327c, 0x327d, 0x327e, 0x3321, 0x3322, 0x3323, 0x3324,
- 0x3325, 0x3326, 0x3327, 0x3328, 0x3329, 0x332a, 0x332b, 0x332c,
- 0x332d, 0x332e, 0x332f, 0x3330, 0x3331, 0x3332, 0x3333, 0x3334,
- 0x3335, 0x3336, 0x3337, 0x3338, 0x3339, 0x333a, 0x333b, 0x333c,
- 0x333d, 0x333e, 0x333f, 0x3340, 0x3341, 0x3342, 0x3343, 0x3344,
- 0x3345, 0x3346, 0x3347, 0x3348, 0x3349, 0x334a, 0x334b, 0x334c,
- 0x334d, 0x334e, 0x334f, 0x3350, 0x3351, 0x3352, 0x3353, 0x3354,
- 0x3355, 0x3356, 0x3357, 0x3358, 0x3359, 0x335a, 0x335b, 0x335c,
- 0x335d, 0x335e, 0x335f, 0x3360, 0x3361, 0x3362, 0x3363, 0x3364,
- 0x3365, 0x3366, 0x3367, 0x3368, 0x3369, 0x336a, 0x336b, 0x336c,
- 0x336d, 0x336e, 0x336f, 0x3370, 0x3371, 0x3372, 0x3373, 0x3374,
- 0x3375, 0x3376, 0x3377, 0x3378, 0x3379, 0x337a, 0x337b, 0x337c,
- 0x337d, 0x337e, 0x3421, 0x3422, 0x3423, 0x3424, 0x3425, 0x3426,
- 0x3427, 0x3428, 0x3429, 0x342a, 0x342b, 0x342c, 0x342d, 0x342e,
- 0x342f, 0x3430, 0x3431, 0x3432, 0x3433, 0x3434, 0x3435, 0x3436,
- 0x3438, 0x3437, 0x3439, 0x343a, 0x343b, 0x343c, 0x343d, 0x343e,
- 0x343f, 0x3440, 0x3441, 0x3442, 0x3443, 0x3444, 0x3445, 0x3446,
- 0x3447, 0x3448, 0x3449, 0x344a, 0x344b, 0x344c, 0x344d, 0x344e,
- 0x344f, 0x3450, 0x3451, 0x3452, 0x3453, 0x3454, 0x3455, 0x3456,
- 0x3457, 0x3458, 0x3459, 0x345a, 0x345b, 0x345c, 0x345d, 0x345e,
- 0x345f, 0x3460, 0x3461, 0x3462, 0x3463, 0x3464, 0x3465, 0x3466,
- 0x3467, 0x3468, 0x3469, 0x346a, 0x346b, 0x346c, 0x346d, 0x346e,
- 0x346f, 0x3470, 0x3471, 0x3472, 0x3473, 0x3474, 0x3475, 0x3476,
- 0x3477, 0x3478, 0x3479, 0x347a, 0x347b, 0x347c, 0x347d, 0x347e,
- 0x3521, 0x3522, 0x3523, 0x3524, 0x3525, 0x3526, 0x3527, 0x3528,
- 0x3529, 0x352a, 0x352b, 0x352c, 0x352d, 0x352e, 0x352f, 0x3530,
- 0x3531, 0x3532, 0x3533, 0x3534, 0x3535, 0x3536, 0x3537, 0x3538,
- 0x3539, 0x353a, 0x353b, 0x353c, 0x353d, 0x353e, 0x353f, 0x3540,
- 0x3541, 0x3542, 0x3543, 0x3544, 0x3545, 0x3546, 0x3547, 0x3548,
- 0x3549, 0x354a, 0x354b, 0x354c, 0x354d, 0x354e, 0x354f, 0x3550,
- 0x3551, 0x3552, 0x3553, 0x3554, 0x3555, 0x3556, 0x3557, 0x3558,
- 0x3559, 0x355a, 0x355b, 0x355c, 0x355d, 0x355e, 0x355f, 0x3560,
- 0x3561, 0x3562, 0x3563, 0x3564, 0x3565, 0x3566, 0x3567, 0x3568,
- 0x3569, 0x356a, 0x356b, 0x356c, 0x356d, 0x356e, 0x356f, 0x3570,
- 0x3571, 0x3572, 0x3573, 0x3574, 0x3575, 0x3576, 0x3577, 0x3578,
- 0x3579, 0x357a, 0x357b, 0x357c, 0x357d, 0x357e, 0x3621, 0x3622,
- 0x3623, 0x3624, 0x3625, 0x3626, 0x3627, 0x3628, 0x3629, 0x362a,
- 0x362b, 0x362c, 0x362d, 0x362e, 0x362f, 0x3630, 0x3631, 0x3632,
- 0x3633, 0x3634, 0x3635, 0x3636, 0x3637, 0x3638, 0x3639, 0x363a,
- 0x363b, 0x363c, 0x363d, 0x363e, 0x363f, 0x3640, 0x3641, 0x3642,
- 0x3643, 0x3644, 0x3645, 0x3646, 0x3647, 0x3648, 0x3649, 0x364a,
- 0x364b, 0x364c, 0x364d, 0x364e, 0x364f, 0x3650, 0x3651, 0x3652,
- 0x3653, 0x3654, 0x3655, 0x3656, 0x3657, 0x3658, 0x3659, 0x365a,
- 0x365b, 0x365c, 0x365d, 0x365e, 0x365f, 0x3660, 0x3661, 0x3662,
- 0x3663, 0x3664, 0x3665, 0x3666, 0x3667, 0x3668, 0x3669, 0x366a,
- 0x366b, 0x366c, 0x366d, 0x3670, 0x3671, 0x366e, 0x366f, 0x3672,
- 0x3673, 0x3674, 0x3675, 0x3676, 0x3677, 0x3678, 0x3679, 0x367a,
- 0x367b, 0x367d, 0x367e, 0x367c, 0x3721, 0x3722, 0x3723, 0x3724,
- 0x3725, 0x3726, 0x3727, 0x3728, 0x3729, 0x372a, 0x372b, 0x372c,
- 0x372d, 0x372e, 0x372f, 0x3730, 0x3731, 0x3732, 0x3733, 0x3734,
- 0x3735, 0x3736, 0x3737, 0x3738, 0x3739, 0x373a, 0x373b, 0x373c,
- 0x373d, 0x373e, 0x373f, 0x3740, 0x3741, 0x3742, 0x3743, 0x3744,
- 0x3745, 0x3746, 0x3747, 0x3748, 0x3749, 0x374a, 0x374b, 0x374c,
- 0x374d, 0x374e, 0x374f, 0x3750, 0x3751, 0x3752, 0x3753, 0x3754,
- 0x3755, 0x3756, 0x3757, 0x3760, 0x3758, 0x3759, 0x375a, 0x375b,
- 0x375c, 0x375d, 0x375e, 0x375f, 0x3761, 0x3762, 0x3763, 0x3764,
- 0x3765, 0x3766, 0x3767, 0x3768, 0x3769, 0x376a, 0x376b, 0x376c,
- 0x376d, 0x377e, 0x376e, 0x376f, 0x3770, 0x3771, 0x3772, 0x3773,
- 0x3774, 0x3775, 0x3776, 0x3777, 0x3778, 0x3779, 0x377a, 0x377b,
- 0x377c, 0x377d, 0x3821, 0x3822, 0x3823, 0x3824, 0x3825, 0x3826,
- 0x3827, 0x3828, 0x3829, 0x382a, 0x382b, 0x382c, 0x382d, 0x382e,
- 0x382f, 0x3830, 0x3831, 0x3832, 0x3833, 0x3834, 0x3835, 0x3836,
- 0x3837, 0x3838, 0x3839, 0x383a, 0x383b, 0x383c, 0x383d, 0x383e,
- 0x383f, 0x3840, 0x3841, 0x3842, 0x3843, 0x3844, 0x3845, 0x3846,
- 0x3847, 0x3848, 0x3849, 0x384a, 0x384b, 0x384c, 0x384d, 0x384e,
- 0x3850, 0x3851, 0x384f, 0x3852, 0x3853, 0x3854, 0x3855, 0x3856,
- 0x3857, 0x3858, 0x3859, 0x385a, 0x385b, 0x385c, 0x385d, 0x385e,
- 0x385f, 0x3860, 0x3861, 0x3862, 0x3863, 0x3864, 0x3865, 0x3867,
- 0x3868, 0x3869, 0x386a, 0x386b, 0x386c, 0x386d, 0x386e, 0x386f,
- 0x3870, 0x3871, 0x3872, 0x3873, 0x3874, 0x3875, 0x3876, 0x3877,
- 0x3878, 0x3879, 0x387a, 0x387b, 0x387c, 0x387d, 0x387e, 0x3921,
- 0x3922, 0x3923, 0x3924, 0x3925, 0x3926, 0x3927, 0x3928, 0x3929,
- 0x392a, 0x392b, 0x392c, 0x392d, 0x392e, 0x392f, 0x3930, 0x3931,
- 0x3932, 0x3933, 0x3934, 0x3935, 0x3936, 0x3937, 0x3938, 0x3939,
- 0x393a, 0x393b, 0x393c, 0x393d, 0x393e, 0x393f, 0x3940, 0x3941,
- 0x3942, 0x3943, 0x3944, 0x3945, 0x3946, 0x3947, 0x3948, 0x3949,
- 0x394a, 0x394b, 0x394c, 0x394d, 0x394e, 0x394f, 0x3950, 0x3951,
- 0x3952, 0x3953, 0x3954, 0x3955, 0x3956, 0x3957, 0x3958, 0x3959,
- 0x395a, 0x395b, 0x395c, 0x395d, 0x395e, 0x395f, 0x3960, 0x3961,
- 0x3962, 0x3963, 0x3964, 0x3965, 0x3966, 0x3967, 0x3968, 0x3969,
- 0x396a, 0x396b, 0x396c, 0x396d, 0x396e, 0x396f, 0x3970, 0x3971,
- 0x3972, 0x3973, 0x3974, 0x3975, 0x3976, 0x3977, 0x3978, 0x3979,
- 0x397a, 0x397b, 0x397c, 0x397d, 0x397e, 0x3a21, 0x3a22, 0x3a23,
- 0x3a24, 0x3a25, 0x3a26, 0x3a27, 0x3a28, 0x3a29, 0x3a2a, 0x3a2b,
- 0x3a2c, 0x3a2d, 0x3a2e, 0x3a2f, 0x3a30, 0x3a31, 0x3a33, 0x3a34,
- 0x3a35, 0x3a36, 0x3a37, 0x3a38, 0x3a32, 0x3a39, 0x3a3a, 0x3a3b,
- 0x3a3c, 0x3a3d, 0x3a3e, 0x3a3f, 0x3a40, 0x3a41, 0x3a42, 0x3a43,
- 0x3a44, 0x3a45, 0x3a46, 0x3a47, 0x3a48, 0x3a49, 0x3a4a, 0x3a4b,
- 0x3a4c, 0x3a4d, 0x3a4e, 0x3a4f, 0x3a50, 0x3a51, 0x3a52, 0x3a53,
- 0x3a54, 0x3a55, 0x3a56, 0x3a57, 0x3a58, 0x3a59, 0x3a5a, 0x3a5b,
- 0x3a5c, 0x3a5d, 0x3a5e, 0x3a5f, 0x3a60, 0x3a61, 0x3a62, 0x3a63,
- 0x3a64, 0x3a65, 0x3a66, 0x3a67, 0x3a68, 0x3a69, 0x3a6a, 0x3a6b,
- 0x3a6c, 0x3a6d, 0x3a6e, 0x3a6f, 0x3a70, 0x3a71, 0x3a72, 0x3a73,
- 0x3a74, 0x3a75, 0x3a76, 0x3a77, 0x3a78, 0x3a79, 0x3a7a, 0x3a7b,
- 0x3a7c, 0x3a7d, 0x3a7e, 0x3b21, 0x3b22, 0x3b23, 0x3b24, 0x3b25,
- 0x3b26, 0x3b27, 0x3b28, 0x3b29, 0x3b2a, 0x3b2b, 0x3b2c, 0x3b2d,
- 0x3b2e, 0x3b2f, 0x3b30, 0x3b31, 0x3b32, 0x3b33, 0x3b34, 0x3b35,
- 0x3b36, 0x3b37, 0x3b38, 0x3b39, 0x3b3a, 0x3b3b, 0x3b3d, 0x3b3c,
- 0x3b3e, 0x3b3f, 0x3b40, 0x3b41, 0x3b42, 0x3b43, 0x3b44, 0x3b45,
- 0x3b47, 0x3b48, 0x3b49, 0x3b4a, 0x3b46, 0x3b4b, 0x3b4c, 0x3b4d,
- 0x3b4e, 0x3b4f, 0x3b50, 0x3b51, 0x3b52, 0x3b53, 0x3b57, 0x3b55,
- 0x3b54, 0x3b56, 0x3b58, 0x3b59, 0x3b5a, 0x3b5b, 0x3b5c, 0x3b5d,
- 0x3b5e, 0x3b5f, 0x3b60, 0x3b61, 0x3b62, 0x3b63, 0x3b64, 0x3b65,
- 0x3b66, 0x3b67, 0x3b68, 0x3b69, 0x3b6a, 0x3b6b, 0x3b6c, 0x3b6d,
- 0x3b6e, 0x3b6f, 0x3b70, 0x3b71, 0x3b72, 0x6674, 0x3b73, 0x3b74,
- 0x3b75, 0x3b76, 0x3b77, 0x3b78, 0x3b7a, 0x3b79, 0x3b7b, 0x3b7c,
- 0x3b7d, 0x3b7e, 0x3c21, 0x3c22, 0x3c23, 0x3c24, 0x3c25, 0x3c26,
- 0x3c27, 0x3c28, 0x3c29, 0x3c2a, 0x3c2b, 0x3c2c, 0x3c2e, 0x3c2d,
- 0x3c2f, 0x3c30, 0x3c31, 0x3c34, 0x3c32, 0x3c33, 0x3c35, 0x3c36,
- 0x3c37, 0x3c38, 0x3c39, 0x3c3a, 0x3c3b, 0x3c3c, 0x3c3d, 0x3c3e,
- 0x3c3f, 0x3c40, 0x3c41, 0x3c42, 0x3c43, 0x3c44, 0x3c45, 0x3c46,
- 0x3c47, 0x3c48, 0x3c49, 0x3c4a, 0x3c4b, 0x3c4c, 0x3c4d, 0x3c4e,
- 0x3c4f, 0x3c50, 0x3c52, 0x3c51, 0x3c53, 0x3c54, 0x3c55, 0x3c56,
- 0x3c57, 0x3c58, 0x3c59, 0x3c5a, 0x3c5b, 0x3c5c, 0x3c5d, 0x3c5e,
- 0x3c5f, 0x3c60, 0x3c61, 0x3c62, 0x3c63, 0x3c64, 0x3c65, 0x3c66,
- 0x3c67, 0x3c68, 0x3c69, 0x3c6a, 0x3c6b, 0x3c6c, 0x3c6d, 0x3c6e,
- 0x3c6f, 0x3c70, 0x3c71, 0x3c72, 0x3c73, 0x3c74, 0x3c75, 0x3c76,
- 0x3c77, 0x3c78, 0x3c79, 0x3c7a, 0x3c7b, 0x3c7c, 0x3c7d, 0x3c7e,
- 0x3d21, 0x3d22, 0x3d23, 0x3d24, 0x3d25, 0x3d26, 0x3d27, 0x3d28,
- 0x3d29, 0x3d2a, 0x3d2b, 0x3d2c, 0x3d2d, 0x3d2e, 0x3d2f, 0x3d32,
- 0x3d30, 0x3d31, 0x3d33, 0x3d34, 0x3d35, 0x3d36, 0x3d37, 0x3d38,
- 0x3d39, 0x3d3a, 0x3d3b, 0x3d3c, 0x3d3d, 0x3d3e, 0x3d3f, 0x3d40,
- 0x3d41, 0x3d42, 0x3d43, 0x3d44, 0x3d45, 0x3d46, 0x3d47, 0x3d48,
- 0x3d49, 0x3d4a, 0x3d4b, 0x3d4c, 0x3d4d, 0x3d4e, 0x3d4f, 0x3d50,
- 0x3d51, 0x3d52, 0x3d53, 0x3d54, 0x3d55, 0x3d56, 0x3d57, 0x3d58,
- 0x3d59, 0x3d5a, 0x3d5b, 0x3d5c, 0x3d5d, 0x3d5e, 0x3d5f, 0x3d60,
- 0x3d61, 0x3d62, 0x3d63, 0x3d64, 0x3d65, 0x3d66, 0x3d67, 0x3d68,
- 0x3d69, 0x3d6a, 0x3d6b, 0x3d6c, 0x3d6d, 0x3d6e, 0x3d6f, 0x3d70,
- 0x3d71, 0x3d72, 0x3d73, 0x3d74, 0x3d75, 0x3d76, 0x3d77, 0x3d78,
- 0x3d79, 0x3d7a, 0x3d7b, 0x3d7c, 0x3d7d, 0x3d7e, 0x3e21, 0x3e22,
- 0x3e23, 0x3e24, 0x3e25, 0x3e26, 0x3e27, 0x3e28, 0x3e29, 0x3e2a,
- 0x3e2b, 0x3e2c, 0x3e2d, 0x3e2e, 0x3e2f, 0x3e30, 0x3e31, 0x3e32,
- 0x3e33, 0x3e34, 0x3e35, 0x3e36, 0x3e37, 0x3e38, 0x3e39, 0x3e3a,
- 0x3e3b, 0x3e3c, 0x3e3d, 0x3e3e, 0x3e3f, 0x3e40, 0x3e41, 0x3e42,
- 0x3e43, 0x3e44, 0x3e45, 0x3e46, 0x3e47, 0x3e48, 0x3e49, 0x3e4a,
- 0x3e4b, 0x3e4c, 0x3e4d, 0x3e4e, 0x3e4f, 0x3e50, 0x3e51, 0x3e52,
- 0x3e53, 0x3e54, 0x3e55, 0x3e56, 0x3e57, 0x3e58, 0x3e59, 0x3e5a,
- 0x3e5b, 0x3e5c, 0x3e5d, 0x3e5e, 0x3e5f, 0x3e60, 0x3e61, 0x3e62,
- 0x3e63, 0x3e64, 0x3e65, 0x3e66, 0x3e67, 0x3e68, 0x3e69, 0x3e6a,
- 0x3e6b, 0x3e6c, 0x3e6d, 0x3e6e, 0x3e6f, 0x3e70, 0x3e71, 0x3e72,
- 0x3e73, 0x3e74, 0x3e75, 0x3e76, 0x3e77, 0x3e78, 0x3e79, 0x3e7a,
- 0x3e7b, 0x3e7e, 0x3e7c, 0x3e7d, 0x3f21, 0x3f22, 0x3f23, 0x3f24,
- 0x3f25, 0x3f26, 0x3f27, 0x3f28, 0x3f29, 0x3f2a, 0x3f2b, 0x3f2c,
- 0x3f2d, 0x3f2e, 0x3f2f, 0x3f30, 0x3f31, 0x3f32, 0x3f33, 0x3f34,
- 0x3f35, 0x3f36, 0x3f37, 0x3f38, 0x3f39, 0x3f3a, 0x3f3b, 0x3f3c,
- 0x3f3d, 0x3f3e, 0x3f3f, 0x3f40, 0x3f41, 0x3f42, 0x3f43, 0x3f44,
- 0x3f45, 0x3f46, 0x3f47, 0x3f48, 0x3f49, 0x3f4a, 0x3f4b, 0x3f4c,
- 0x3f4d, 0x3f4e, 0x3f4f, 0x3f50, 0x3f51, 0x3f52, 0x3f53, 0x3f54,
- 0x3f55, 0x3f56, 0x3f57, 0x3f58, 0x3f59, 0x3f5a, 0x3f5b, 0x3f5c,
- 0x3f5d, 0x3f5e, 0x3f5f, 0x3f60, 0x3f61, 0x3f62, 0x3f63, 0x3f64,
- 0x3f65, 0x3f66, 0x3f67, 0x3f68, 0x3f69, 0x3f6a, 0x3f6b, 0x3f6c,
- 0x3f6d, 0x3f6e, 0x3f6f, 0x3f70, 0x3f71, 0x3f72, 0x3f73, 0x3f74,
- 0x3f75, 0x3f76, 0x3f77, 0x3f78, 0x3f79, 0x3f7a, 0x3f7b, 0x3f7c,
- 0x3f7d, 0x3f7e, 0x4021, 0x4022, 0x4023, 0x4024, 0x4025, 0x4026,
- 0x4027, 0x4028, 0x4029, 0x402a, 0x402b, 0x402c, 0x402d, 0x402e,
- 0x402f, 0x4030, 0x4031, 0x4032, 0x4033, 0x4034, 0x4035, 0x4036,
- 0x4037, 0x4038, 0x4039, 0x403a, 0x403b, 0x403c, 0x403d, 0x403e,
- 0x403f, 0x4040, 0x4041, 0x4042, 0x4043, 0x4044, 0x4045, 0x4046,
- 0x4047, 0x4048, 0x4049, 0x404a, 0x404b, 0x404c, 0x404d, 0x404e,
- 0x404f, 0x4050, 0x4051, 0x4052, 0x4053, 0x4054, 0x4055, 0x4056,
- 0x4057, 0x4058, 0x4059, 0x405a, 0x405b, 0x405c, 0x405d, 0x405e,
- 0x405f, 0x4060, 0x4061, 0x4062, 0x4063, 0x4064, 0x4065, 0x4066,
- 0x4067, 0x4068, 0x4069, 0x406a, 0x406b, 0x406c, 0x406d, 0x406e,
- 0x406f, 0x4070, 0x4071, 0x4072, 0x4073, 0x4074, 0x4075, 0x4076,
- 0x4077, 0x4078, 0x4079, 0x407a, 0x407b, 0x407c, 0x407d, 0x407e,
- 0x4121, 0x4122, 0x4123, 0x4124, 0x4125, 0x4126, 0x4127, 0x4128,
- 0x4129, 0x412a, 0x412b, 0x412c, 0x412d, 0x412e, 0x412f, 0x4130,
- 0x4131, 0x4132, 0x4133, 0x4134, 0x4135, 0x4136, 0x4137, 0x4138,
- 0x4139, 0x413a, 0x413b, 0x413c, 0x413d, 0x413e, 0x413f, 0x4140,
- 0x4141, 0x4142, 0x4143, 0x4144, 0x4145, 0x4146, 0x4147, 0x4148,
- 0x4149, 0x414a, 0x414b, 0x414c, 0x414d, 0x414e, 0x414f, 0x4150,
- 0x4151, 0x4152, 0x4153, 0x4154, 0x4155, 0x4156, 0x4157, 0x4158,
- 0x4159, 0x415a, 0x415b, 0x415c, 0x415d, 0x415e, 0x415f, 0x4160,
- 0x4161, 0x4162, 0x4163, 0x4164, 0x4165, 0x4166, 0x4167, 0x4168,
- 0x4169, 0x416a, 0x416b, 0x416c, 0x416d, 0x416e, 0x416f, 0x4170,
- 0x4171, 0x4172, 0x4173, 0x4174, 0x4175, 0x4176, 0x4177, 0x4178,
- 0x4179, 0x417a, 0x417b, 0x417c, 0x417d, 0x417e, 0x4221, 0x4222,
- 0x4223, 0x4224, 0x4225, 0x4226, 0x4227, 0x4228, 0x4229, 0x422a,
- 0x422b, 0x422c, 0x422d, 0x422e, 0x4230, 0x422f, 0x4231, 0x4232,
- 0x4233, 0x4234, 0x4235, 0x4237, 0x4236, 0x4238, 0x4239, 0x423a,
- 0x423b, 0x423c, 0x423d, 0x423e, 0x4240, 0x4241, 0x4242, 0x4244,
- 0x4245, 0x4247, 0x4248, 0x4249, 0x424a, 0x424c, 0x4243, 0x4246,
- 0x424b, 0x424d, 0x424e, 0x424f, 0x4250, 0x4251, 0x4252, 0x4253,
- 0x4254, 0x4255, 0x4256, 0x4257, 0x4258, 0x4259, 0x425a, 0x425b,
- 0x425c, 0x425d, 0x425e, 0x425f, 0x4260, 0x4261, 0x4262, 0x4263,
- 0x4264, 0x4265, 0x4266, 0x4267, 0x4268, 0x4269, 0x426a, 0x426b,
- 0x426c, 0x426d, 0x423f, 0x426e, 0x426f, 0x4270, 0x4271, 0x4272,
- 0x4273, 0x4274, 0x4275, 0x4276, 0x4277, 0x4278, 0x4279, 0x427a,
- 0x427b, 0x427c, 0x427d, 0x427e, 0x4321, 0x4322, 0x4323, 0x4324,
- 0x4325, 0x4326, 0x4327, 0x4328, 0x4329, 0x432a, 0x432b, 0x432c,
- 0x432d, 0x432e, 0x432f, 0x4330, 0x4331, 0x4332, 0x4333, 0x4334,
- 0x4335, 0x4336, 0x4337, 0x4339, 0x433a, 0x433b, 0x433c, 0x433d,
- 0x433e, 0x433f, 0x4340, 0x4341, 0x4342, 0x4343, 0x4344, 0x4345,
- 0x4346, 0x4347, 0x4348, 0x4338, 0x434a, 0x434b, 0x434c, 0x434d,
- 0x434f, 0x434e, 0x4350, 0x4351, 0x4352, 0x4353, 0x4354, 0x4355,
- 0x4356, 0x4357, 0x4358, 0x4359, 0x435a, 0x435b, 0x4349, 0x435c,
- 0x435d, 0x435e, 0x435f, 0x4360, 0x4361, 0x4362, 0x4363, 0x4364,
- 0x4365, 0x4366, 0x4367, 0x4368, 0x4369, 0x436a, 0x436b, 0x436c,
- 0x436d, 0x436e, 0x436f, 0x4370, 0x4371, 0x4372, 0x4373, 0x4374,
- 0x4375, 0x4376, 0x4377, 0x4378, 0x4379, 0x437a, 0x437b, 0x437c,
- 0x437d, 0x437e, 0x4421, 0x4422, 0x4423, 0x4424, 0x4425, 0x4426,
- 0x4427, 0x4428, 0x4429, 0x442a, 0x442b, 0x442c, 0x442d, 0x442e,
- 0x442f, 0x4430, 0x4431, 0x4432, 0x4433, 0x4434, 0x4435, 0x4436,
- 0x4437, 0x4438, 0x4439, 0x443a, 0x443b, 0x443c, 0x443d, 0x443e,
- 0x443f, 0x4440, 0x4441, 0x4442, 0x4443, 0x4444, 0x4445, 0x4446,
- 0x4447, 0x4448, 0x4449, 0x444a, 0x444b, 0x444c, 0x444d, 0x444e,
- 0x444f, 0x4450, 0x4451, 0x4452, 0x4453, 0x4454, 0x4455, 0x4456,
- 0x4457, 0x4458, 0x4459, 0x445a, 0x445b, 0x445c, 0x445d, 0x445e,
- 0x445f, 0x4460, 0x4461, 0x4462, 0x4463, 0x4464, 0x4465, 0x4466,
- 0x4467, 0x4468, 0x4469, 0x446a, 0x446b, 0x446c, 0x446d, 0x446e,
- 0x446f, 0x4470, 0x4471, 0x4472, 0x4473, 0x4474, 0x4475, 0x4476,
- 0x4477, 0x4478, 0x4479, 0x447a, 0x447b, 0x447c, 0x447d, 0x447e,
- 0x4521, 0x4522, 0x4523, 0x4524, 0x4525, 0x4526, 0x4527, 0x4528,
- 0x4529, 0x452a, 0x452b, 0x452c, 0x452d, 0x452e, 0x452f, 0x4530,
- 0x4531, 0x4532, 0x4533, 0x4534, 0x4535, 0x4536, 0x4537, 0x4538,
- 0x4539, 0x453a, 0x453b, 0x453c, 0x453d, 0x453e, 0x453f, 0x4540,
- 0x4541, 0x4542, 0x4543, 0x4544, 0x4545, 0x4546, 0x4547, 0x4548,
- 0x4549, 0x454a, 0x454b, 0x454d, 0x454c, 0x454e, 0x454f, 0x4550,
- 0x4551, 0x4552, 0x4553, 0x4554, 0x4555, 0x4556, 0x4557, 0x4558,
- 0x4559, 0x455a, 0x455b, 0x455c, 0x455d, 0x455e, 0x455f, 0x4560,
- 0x4561, 0x4562, 0x4563, 0x4564, 0x4565, 0x4566, 0x4567, 0x4568,
- 0x4569, 0x456a, 0x456b, 0x456c, 0x456d, 0x456e, 0x456f, 0x4570,
- 0x4571, 0x4572, 0x4573, 0x4574, 0x4575, 0x4576, 0x4577, 0x4578,
- 0x4579, 0x457a, 0x457b, 0x457c, 0x457d, 0x457e, 0x4621, 0x4622,
- 0x4623, 0x4624, 0x4625, 0x4626, 0x4627, 0x4628, 0x4629, 0x462a,
- 0x462b, 0x462c, 0x462d, 0x462e, 0x462f, 0x4630, 0x4631, 0x4632,
- 0x4633, 0x4634, 0x4635, 0x4636, 0x4637, 0x4638, 0x4639, 0x463a,
- 0x463b, 0x463c, 0x463d, 0x463e, 0x463f, 0x4640, 0x4641, 0x4642,
- 0x4643, 0x4644, 0x4645, 0x4646, 0x4647, 0x4648, 0x4649, 0x464a,
- 0x464b, 0x464c, 0x464d, 0x464e, 0x464f, 0x4650, 0x4651, 0x4652,
- 0x4653, 0x4654, 0x4655, 0x4656, 0x4657, 0x4658, 0x4659, 0x465a,
- 0x465b, 0x465c, 0x465d, 0x465e, 0x465f, 0x4660, 0x4736, 0x4661,
- 0x4662, 0x4663, 0x4664, 0x4665, 0x4666, 0x4667, 0x4668, 0x4669,
- 0x466a, 0x466b, 0x466c, 0x466d, 0x466e, 0x466f, 0x4670, 0x4671,
- 0x4672, 0x4673, 0x4674, 0x4675, 0x4676, 0x4677, 0x4678, 0x4679,
- 0x467a, 0x467b, 0x467c, 0x467d, 0x467e, 0x4721, 0x4722, 0x4723,
- 0x4724, 0x4725, 0x4726, 0x4727, 0x4728, 0x4729, 0x472a, 0x472b,
- 0x472c, 0x472d, 0x472e, 0x472f, 0x4730, 0x4731, 0x4732, 0x4733,
- 0x4734, 0x4735, 0x4737, 0x4738, 0x4739, 0x473a, 0x473b, 0x473c,
- 0x473d, 0x473e, 0x473f, 0x4740, 0x4741, 0x4742, 0x4743, 0x4744,
- 0x4745, 0x4746, 0x4747, 0x4748, 0x4749, 0x474a, 0x474b, 0x474c,
- 0x474d, 0x474e, 0x474f, 0x4750, 0x4751, 0x4752, 0x4753, 0x4754,
- 0x4755, 0x4756, 0x4757, 0x4758, 0x4759, 0x475a, 0x475b, 0x475c,
- 0x475d, 0x475e, 0x475f, 0x4760, 0x4761, 0x4762, 0x4763, 0x4764,
- 0x4765, 0x4766, 0x4767, 0x4768, 0x4769, 0x476a, 0x476b, 0x476c,
- 0x476d, 0x476e, 0x476f, 0x4770, 0x4771, 0x4772, 0x4773, 0x4774,
- 0x4775, 0x4776, 0x4777, 0x4778, 0x4779, 0x477a, 0x477b, 0x477c,
- 0x477d, 0x477e, 0x4821, 0x4822, 0x4823, 0x4824, 0x4825, 0x4826,
- 0x4827, 0x4828, 0x4829, 0x482a, 0x482b, 0x482c, 0x482d, 0x482e,
- 0x482f, 0x4830, 0x4831, 0x4832, 0x4833, 0x4834, 0x4835, 0x4836,
- 0x4837, 0x4838, 0x4839, 0x483a, 0x483b, 0x483c, 0x483d, 0x483e,
- 0x483f, 0x4840, 0x4841, 0x4842, 0x4843, 0x4844, 0x4845, 0x4846,
- 0x4847, 0x4848, 0x4849, 0x484a, 0x484b, 0x484c, 0x4853, 0x484d,
- 0x484e, 0x484f, 0x4850, 0x4851, 0x4852, 0x4854, 0x4855, 0x4856,
- 0x4857, 0x4858, 0x4859, 0x485a, 0x485b, 0x485c, 0x485d, 0x485e,
- 0x485f, 0x4860, 0x4861, 0x4862, 0x4863, 0x4864, 0x4865, 0x4866,
- 0x4867, 0x4868, 0x4869, 0x486a, 0x486b, 0x486c, 0x486d, 0x486e,
- 0x486f, 0x4870, 0x4871, 0x4872, 0x4873, 0x4874, 0x4875, 0x4876,
- 0x4877, 0x4878, 0x4879, 0x487a, 0x487b, 0x487c, 0x487d, 0x487e,
- 0x4921, 0x4922, 0x4923, 0x4924, 0x4925, 0x4926, 0x4927, 0x4928,
- 0x4929, 0x492a, 0x492b, 0x492c, 0x492d, 0x492e, 0x492f, 0x4930,
- 0x4931, 0x4932, 0x4933, 0x4934, 0x4935, 0x4936, 0x4937, 0x4938,
- 0x4939, 0x493a, 0x493b, 0x493c, 0x4941, 0x493d, 0x493e, 0x493f,
- 0x4940, 0x4942, 0x4943, 0x4944, 0x4945, 0x4946, 0x4947, 0x4948,
- 0x4949, 0x494a, 0x494b, 0x494c, 0x494d, 0x494e, 0x494f, 0x4950,
- 0x4951, 0x4952, 0x4953, 0x4954, 0x4955, 0x4956, 0x4957, 0x4958,
- 0x4959, 0x495a, 0x495b, 0x495c, 0x495d, 0x495e, 0x495f, 0x4960,
- 0x4961, 0x4962, 0x4963, 0x4964, 0x4965, 0x4966, 0x4967, 0x4968,
- 0x4969, 0x496a, 0x496b, 0x496c, 0x496d, 0x496e, 0x496f, 0x4970,
- 0x4971, 0x4972, 0x4973, 0x4974, 0x4975, 0x4976, 0x4977, 0x4978,
- 0x4979, 0x497a, 0x497b, 0x497c, 0x497d, 0x497e, 0x4a21, 0x4a22,
- 0x4a23, 0x4a24, 0x4a25, 0x4a26, 0x4a27, 0x4a28, 0x4a29, 0x4a2a,
- 0x4a2b, 0x4a2c, 0x4a2d, 0x4a2e, 0x4a2f, 0x4a30, 0x4a31, 0x4a32,
- 0x4a33, 0x4a34, 0x4a35, 0x4a36, 0x4a37, 0x4a38, 0x4a39, 0x4a3a,
- 0x4a3b, 0x4a3c, 0x4a3d, 0x4a3e, 0x4a3f, 0x4a40, 0x4a41, 0x4a42,
- 0x4a43, 0x4a44, 0x4a45, 0x4a46, 0x4a47, 0x4a48, 0x4a49, 0x4a4a,
- 0x4a4b, 0x4a4c, 0x4a4d, 0x4a4e, 0x4a4f, 0x4a50, 0x4a51, 0x4a52,
- 0x4a53, 0x4a54, 0x4a55, 0x4a56, 0x4a57, 0x4a58, 0x4a59, 0x4a5a,
- 0x4a5b, 0x4a5c, 0x4a5d, 0x4a5e, 0x4a5f, 0x4a60, 0x4a61, 0x4a62,
- 0x4a63, 0x4a64, 0x4a65, 0x4a66, 0x4a67, 0x4a68, 0x4a69, 0x4a6a,
- 0x4a6b, 0x4a6c, 0x4a6d, 0x4a6e, 0x4a6f, 0x4a70, 0x4a71, 0x4a72,
- 0x4a73, 0x4a74, 0x4a75, 0x4a76, 0x4a77, 0x4a78, 0x4a79, 0x4a7a,
- 0x4a7b, 0x4a7c, 0x4a7d, 0x4a7e, 0x4b21, 0x4b22, 0x4b23, 0x4b24,
- 0x4b25, 0x4b26, 0x4b27, 0x4b28, 0x4b29, 0x4b2a, 0x4b2b, 0x4b2c,
- 0x4b2d, 0x4b2e, 0x4b2f, 0x4b30, 0x4b31, 0x4b32, 0x4b33, 0x4b34,
- 0x4b35, 0x4b36, 0x4b37, 0x4b38, 0x4b39, 0x4b3a, 0x4b3b, 0x4b3c,
- 0x4b3d, 0x4b3e, 0x4b3f, 0x4b40, 0x4b41, 0x4b42, 0x4b43, 0x4b44,
- 0x4b45, 0x4b46, 0x4b47, 0x4b48, 0x4b49, 0x4b4a, 0x4b4b, 0x4b4c,
- 0x4b4d, 0x4b4e, 0x4b4f, 0x4b50, 0x4b51, 0x4b52, 0x4b53, 0x4b54,
- 0x4b55, 0x4b56, 0x4b57, 0x4b58, 0x4b59, 0x4b5a, 0x4b5b, 0x4b5c,
- 0x4b5d, 0x4b5e, 0x4b5f, 0x4b60, 0x4b61, 0x4b62, 0x4b63, 0x4b64,
- 0x4b65, 0x4b66, 0x4b67, 0x4b68, 0x4b69, 0x4b6a, 0x4b6b, 0x4b6c,
- 0x4b6d, 0x4b6e, 0x4b6f, 0x4b70, 0x4b71, 0x4b72, 0x4b73, 0x4b74,
- 0x4b75, 0x4b76, 0x4b77, 0x4b78, 0x4b79, 0x4b7a, 0x4b7b, 0x4b7c,
- 0x4b7d, 0x4b7e, 0x4c21, 0x4c22, 0x4c23, 0x4c24, 0x4c25, 0x4c26,
- 0x4c27, 0x4c28, 0x4c29, 0x4c2a, 0x4c2b, 0x4c2c, 0x4c2d, 0x4c2e,
- 0x4c2f, 0x4c30, 0x4c31, 0x4c32, 0x4c33, 0x4c34, 0x4c35, 0x4c36,
- 0x4c37, 0x4c38, 0x4c39, 0x4c3a, 0x4c3b, 0x4c3c, 0x4c3d, 0x4c3e,
- 0x4c3f, 0x4c40, 0x4c41, 0x4c42, 0x4c43, 0x4c44, 0x4c45, 0x4c46,
- 0x4c47, 0x4c48, 0x4c49, 0x4c4a, 0x4c4b, 0x4c4c, 0x4c4d, 0x4c4e,
- 0x4c4f, 0x4c50, 0x4c51, 0x4c52, 0x4c53, 0x4c54, 0x4c55, 0x4c56,
- 0x4c57, 0x4c58, 0x4c59, 0x4c5a, 0x4c5b, 0x4c5c, 0x4c5d, 0x4c5e,
- 0x4c5f, 0x4c60, 0x4c61, 0x4c62, 0x4c63, 0x4c64, 0x4c65, 0x4c66,
- 0x4c67, 0x4c68, 0x4c69, 0x4c6a, 0x4c6b, 0x4c6c, 0x4c6d, 0x4c6e,
- 0x4c6f, 0x4c70, 0x4c71, 0x4c72, 0x4c73, 0x4c74, 0x4c75, 0x4c76,
- 0x4c77, 0x4c78, 0x4c79, 0x4c7a, 0x4c7b, 0x4c7c, 0x4c7d, 0x4c7e,
- 0x4d21, 0x4d22, 0x4d23, 0x4d24, 0x4d25, 0x4d26, 0x4d27, 0x4d28,
- 0x4d29, 0x4d2a, 0x4d2b, 0x4d2c, 0x4d2d, 0x4d2e, 0x4d2f, 0x4d30,
- 0x4d31, 0x4d32, 0x4d33, 0x4d34, 0x4d35, 0x4d36, 0x4d37, 0x4d38,
- 0x4d39, 0x4d3a, 0x4d3b, 0x4d3c, 0x4d3d, 0x4d3e, 0x4d3f, 0x4d40,
- 0x4d41, 0x4d42, 0x4d43, 0x4d44, 0x4d45, 0x4d46, 0x4d47, 0x4d48,
- 0x4d49, 0x4d4a, 0x4d4b, 0x4d4c, 0x4d4d, 0x4d4e, 0x4d4f, 0x4d50,
- 0x4d51, 0x4d52, 0x4d53, 0x4d54, 0x4d55, 0x4d56, 0x4d57, 0x4d58,
- 0x4d59, 0x4d5a, 0x4d5b, 0x4d5c, 0x4d5d, 0x4d5e, 0x4d5f, 0x4d60,
- 0x4d61, 0x4d62, 0x4d63, 0x4d64, 0x4d65, 0x4d66, 0x4d67, 0x4d68,
- 0x4d69, 0x4d6a, 0x4d6b, 0x4d6c, 0x4d6d, 0x4d6e, 0x4d6f, 0x4d70,
- 0x4d71, 0x4d72, 0x4d73, 0x4d74, 0x4d75, 0x4d76, 0x4d77, 0x4d78,
- 0x4d79, 0x4d7a, 0x4d7b, 0x4d7c, 0x4d7d, 0x4d7e, 0x4e21, 0x4e22,
- 0x4e24, 0x4e25, 0x4e26, 0x4e27, 0x4e28, 0x4e29, 0x4e23, 0x4e2a,
- 0x4e2b, 0x4e2c, 0x4e2d, 0x4e2e, 0x4e2f, 0x4e30, 0x4e31, 0x4e32,
- 0x4e33, 0x4e34, 0x4e35, 0x4e36, 0x4e37, 0x4e38, 0x4e39, 0x4e3a,
- 0x4e3b, 0x4e3c, 0x4e3d, 0x4e3e, 0x4e3f, 0x4e40, 0x4e41, 0x4e42,
- 0x4e43, 0x4e44, 0x4e45, 0x4e46, 0x4e47, 0x4e48, 0x4e49, 0x4e4a,
- 0x4e4b, 0x4e4c, 0x4e4d, 0x4e4e, 0x4e4f, 0x4e50, 0x4e51, 0x4e52,
- 0x4e53, 0x4e54, 0x4e55, 0x4e56, 0x4e57, 0x4e58, 0x4e59, 0x4e5a,
- 0x4e5b, 0x4e5c, 0x4e5d, 0x4e5e, 0x4e5f, 0x4e60, 0x4e61, 0x4e62,
- 0x4e63, 0x4e64, 0x4e65, 0x4e66, 0x4e67, 0x4e68, 0x4e69, 0x4e6a,
- 0x4e6b, 0x4e6c, 0x4e6d, 0x4e6e, 0x4e6f, 0x4e70, 0x4e71, 0x4e72,
- 0x4e73, 0x4e74, 0x4e75, 0x4e76, 0x4e77, 0x4e78, 0x4e79, 0x4e7a,
- 0x4e7b, 0x4e7c, 0x4e7d, 0x4e7e, 0x4f21, 0x4f22, 0x4f23, 0x4f24,
- 0x4f25, 0x4f26, 0x4f27, 0x4f28, 0x4f29, 0x4f2a, 0x4f2b, 0x4f2c,
- 0x4f2d, 0x4f2e, 0x4f2f, 0x4f30, 0x4f31, 0x4f32, 0x4f33, 0x4f34,
- 0x4f35, 0x4f36, 0x4f37, 0x4f38, 0x4f39, 0x4f3a, 0x4f3b, 0x4f3c,
- 0x4f3d, 0x4f3e, 0x4f3f, 0x4f40, 0x4f41, 0x4f42, 0x4f43, 0x4f44,
- 0x4f45, 0x4f46, 0x4f47, 0x4f48, 0x4f49, 0x4f4a, 0x4f4b, 0x4f4c,
- 0x4f4d, 0x4f4e, 0x4f4f, 0x4f50, 0x4f51, 0x4f52, 0x4f53, 0x4f54,
- 0x4f55, 0x4f56, 0x4f57, 0x4f58, 0x4f59, 0x4f5a, 0x4f5b, 0x4f5c,
- 0x4f5d, 0x4f5e, 0x4f5f, 0x4f60, 0x4f61, 0x4f62, 0x4f63, 0x4f64,
- 0x4f65, 0x4f66, 0x4f67, 0x4f68, 0x4f69, 0x4f6a, 0x4f6b, 0x4f6c,
- 0x4f6d, 0x4f6e, 0x4f6f, 0x4f70, 0x4f71, 0x4f72, 0x4f74, 0x4f75,
- 0x4f76, 0x4f73, 0x4f77, 0x4f78, 0x4f79, 0x4f7a, 0x4f7b, 0x4f7c,
- 0x4f7d, 0x4f7e, 0x5021, 0x5022, 0x5023, 0x5024, 0x5025, 0x5026,
- 0x5027, 0x5028, 0x5029, 0x502a, 0x502b, 0x502c, 0x502e, 0x502f,
- 0x5030, 0x5031, 0x502d, 0x5032, 0x5033, 0x5034, 0x5035, 0x5037,
- 0x5038, 0x5039, 0x503a, 0x503b, 0x5036, 0x503c, 0x503d, 0x503e,
- 0x503f, 0x5040, 0x5041, 0x5042, 0x5043, 0x5044, 0x5045, 0x5046,
- 0x5047, 0x5048, 0x5049, 0x504a, 0x504b, 0x504c, 0x504d, 0x504e,
- 0x504f, 0x5050, 0x5051, 0x5052, 0x5053, 0x5054, 0x5055, 0x5056,
- 0x5057, 0x5058, 0x5059, 0x505a, 0x505b, 0x505c, 0x505d, 0x505e,
- 0x505f, 0x5060, 0x5061, 0x5062, 0x5063, 0x5064, 0x5065, 0x5066,
- 0x5067, 0x5068, 0x5069, 0x506a, 0x506b, 0x506c, 0x506d, 0x506e,
- 0x506f, 0x5070, 0x5071, 0x5072, 0x5073, 0x5074, 0x5075, 0x5076,
- 0x5077, 0x5078, 0x5079, 0x507a, 0x507b, 0x507c, 0x507d, 0x507e,
- 0x5121, 0x5122, 0x5123, 0x5124, 0x5125, 0x5126, 0x5127, 0x5128,
- 0x5129, 0x512a, 0x512b, 0x512c, 0x512d, 0x512e, 0x512f, 0x5130,
- 0x5131, 0x5132, 0x5133, 0x5134, 0x5135, 0x5136, 0x5137, 0x5138,
- 0x5139, 0x513a, 0x513b, 0x513c, 0x513d, 0x513e, 0x513f, 0x5140,
- 0x5141, 0x5142, 0x5143, 0x5144, 0x5145, 0x5146, 0x5147, 0x5148,
- 0x5149, 0x514a, 0x514b, 0x514c, 0x514d, 0x514e, 0x514f, 0x5150,
- 0x5151, 0x5152, 0x5153, 0x5154, 0x5155, 0x5156, 0x5157, 0x5158,
- 0x5159, 0x515a, 0x515b, 0x515c, 0x515d, 0x515e, 0x515f, 0x5160,
- 0x5161, 0x5162, 0x5163, 0x5164, 0x5165, 0x5166, 0x5167, 0x5168,
- 0x5169, 0x516a, 0x516b, 0x516c, 0x516d, 0x516e, 0x516f, 0x5170,
- 0x5171, 0x5172, 0x5173, 0x5174, 0x5175, 0x5176, 0x5177, 0x5178,
- 0x5179, 0x517a, 0x517b, 0x517c, 0x517d, 0x517e, 0x5221, 0x5222,
- 0x5223, 0x5224, 0x5225, 0x5226, 0x5227, 0x5228, 0x5229, 0x522a,
- 0x522b, 0x522c, 0x522d, 0x522e, 0x522f, 0x5230, 0x5231, 0x5232,
- 0x5233, 0x5234, 0x5235, 0x5236, 0x5237, 0x5238, 0x5239, 0x523a,
- 0x523b, 0x523c, 0x523d, 0x523e, 0x523f, 0x5240, 0x5241, 0x5242,
- 0x5243, 0x5244, 0x5245, 0x5246, 0x5247, 0x5248, 0x5249, 0x524a,
- 0x524b, 0x524c, 0x524d, 0x524e, 0x524f, 0x5250, 0x5251, 0x5252,
- 0x5253, 0x5254, 0x5255, 0x5256, 0x5257, 0x5258, 0x5259, 0x525a,
- 0x525b, 0x525c, 0x525d, 0x525e, 0x525f, 0x5260, 0x5261, 0x5262,
- 0x5263, 0x5264, 0x5265, 0x5266, 0x5267, 0x5268, 0x5269, 0x526a,
- 0x526b, 0x526c, 0x526d, 0x526e, 0x526f, 0x5270, 0x5271, 0x5272,
- 0x5273, 0x5274, 0x5276, 0x5277, 0x5278, 0x5275, 0x5279, 0x527a,
- 0x527b, 0x527c, 0x527d, 0x527e, 0x5321, 0x5322, 0x5323, 0x5324,
- 0x5325, 0x5326, 0x5327, 0x5328, 0x5329, 0x532a, 0x532b, 0x532c,
- 0x532d, 0x532e, 0x532f, 0x5330, 0x5331, 0x5332, 0x5333, 0x5334,
- 0x5335, 0x5336, 0x5337, 0x5338, 0x5339, 0x533a, 0x533b, 0x533c,
- 0x533d, 0x533e, 0x533f, 0x5340, 0x5341, 0x5342, 0x5343, 0x5344,
- 0x5345, 0x5346, 0x5347, 0x5348, 0x5349, 0x534a, 0x534b, 0x534c,
- 0x534d, 0x534e, 0x534f, 0x5350, 0x5351, 0x5352, 0x5353, 0x5354,
- 0x5355, 0x5356, 0x5357, 0x5358, 0x5359, 0x535a, 0x535b, 0x535c,
- 0x535d, 0x535e, 0x535f, 0x5360, 0x5361, 0x5362, 0x5363, 0x5364,
- 0x5365, 0x5366, 0x5367, 0x5368, 0x5369, 0x536a, 0x536b, 0x536c,
- 0x536d, 0x536e, 0x536f, 0x5370, 0x5371, 0x5372, 0x5373, 0x5374,
- 0x5375, 0x5376, 0x5377, 0x5378, 0x5379, 0x537a, 0x537b, 0x537c,
- 0x537d, 0x537e, 0x5421, 0x5422, 0x5423, 0x5424, 0x5425, 0x5426,
- 0x5427, 0x5428, 0x5429, 0x542a, 0x542b, 0x542c, 0x542d, 0x542e,
- 0x542f, 0x5430, 0x5431, 0x5432, 0x5434, 0x5435, 0x5436, 0x5437,
- 0x5438, 0x5439, 0x543a, 0x543b, 0x543c, 0x543d, 0x543e, 0x5433,
- 0x543f, 0x5440, 0x5441, 0x5442, 0x5443, 0x5444, 0x5445, 0x5446,
- 0x5447, 0x5448, 0x5449, 0x544a, 0x544b, 0x544c, 0x544d, 0x544e,
- 0x544f, 0x5450, 0x5451, 0x5452, 0x5453, 0x5454, 0x5455, 0x5456,
- 0x5457, 0x5458, 0x5459, 0x545a, 0x545b, 0x545c, 0x545d, 0x545e,
- 0x545f, 0x5460, 0x5461, 0x5462, 0x5463, 0x5464, 0x5465, 0x5466,
- 0x5467, 0x5468, 0x5469, 0x546a, 0x546c, 0x546b, 0x546d, 0x546e,
- 0x546f, 0x5470, 0x5471, 0x5472, 0x5473, 0x5474, 0x5475, 0x5476,
- 0x5477, 0x5478, 0x5479, 0x547a, 0x547b, 0x547c, 0x547d, 0x547e,
- 0x5521, 0x5522, 0x5523, 0x5524, 0x5525, 0x5526, 0x5527, 0x5528,
- 0x5529, 0x552a, 0x552b, 0x552c, 0x552d, 0x552e, 0x552f, 0x5530,
- 0x5531, 0x5532, 0x5533, 0x5534, 0x5535, 0x5536, 0x5537, 0x5538,
- 0x5539, 0x553a, 0x553b, 0x553c, 0x553d, 0x553e, 0x553f, 0x5540,
- 0x5541, 0x5542, 0x5543, 0x5544, 0x5545, 0x5546, 0x5547, 0x5548,
- 0x5549, 0x554a, 0x554b, 0x554c, 0x554d, 0x554e, 0x554f, 0x5550,
- 0x5551, 0x5552, 0x5553, 0x5554, 0x5555, 0x5556, 0x5557, 0x5558,
- 0x5559, 0x555a, 0x555b, 0x555c, 0x555d, 0x555e, 0x555f, 0x5560,
- 0x5561, 0x5562, 0x5563, 0x5564, 0x5565, 0x5566, 0x5567, 0x5568,
- 0x5569, 0x556a, 0x556b, 0x556c, 0x556d, 0x556e, 0x556f, 0x5570,
- 0x5571, 0x5572, 0x5573, 0x5574, 0x5575, 0x5576, 0x5577, 0x5578,
- 0x5579, 0x557a, 0x557b, 0x557c, 0x557d, 0x557e, 0x5621, 0x5622,
- 0x5623, 0x5624, 0x5625, 0x5626, 0x5627, 0x5628, 0x5629, 0x562a,
- 0x562b, 0x562c, 0x562d, 0x562e, 0x562f, 0x5630, 0x5631, 0x5632,
- 0x5633, 0x5634, 0x5635, 0x5636, 0x5637, 0x5638, 0x5639, 0x563a,
- 0x563b, 0x563c, 0x563d, 0x563e, 0x563f, 0x5640, 0x5641, 0x5642,
- 0x5643, 0x5644, 0x5645, 0x5647, 0x5648, 0x5649, 0x564a, 0x564b,
- 0x5646, 0x564c, 0x564d, 0x564e, 0x564f, 0x5650, 0x5651, 0x5652,
- 0x5653, 0x5654, 0x5656, 0x5657, 0x5658, 0x5655, 0x5659, 0x565a,
- 0x565b, 0x565c, 0x565d, 0x565e, 0x565f, 0x5660, 0x5661, 0x5662,
- 0x5663, 0x5664, 0x5665, 0x5666, 0x5667, 0x5668, 0x5669, 0x566a,
- 0x566b, 0x566c, 0x566d, 0x566e, 0x566f, 0x5670, 0x5671, 0x5672,
- 0x5673, 0x5674, 0x5675, 0x5676, 0x5677, 0x5678, 0x5679, 0x567a,
- 0x567b, 0x567c, 0x567d, 0x567e, 0x5721, 0x5722, 0x5723, 0x5724,
- 0x5725, 0x5726, 0x5727, 0x5728, 0x5729, 0x572a, 0x572b, 0x572c,
- 0x572d, 0x572e, 0x572f, 0x5730, 0x5731, 0x5732, 0x5733, 0x5734,
- 0x5735, 0x5736, 0x5737, 0x5738, 0x5739, 0x573a, 0x573b, 0x573c,
- 0x573d, 0x573e, 0x573f, 0x5740, 0x5741, 0x5742, 0x5743, 0x5744,
- 0x5745, 0x5746, 0x5747, 0x5748, 0x5749, 0x574a, 0x574b, 0x574c,
- 0x574d, 0x574e, 0x574f, 0x5750, 0x5751, 0x5752, 0x5753, 0x5754,
- 0x5755, 0x5756, 0x5757, 0x5758, 0x5759, 0x575a, 0x575b, 0x575c,
- 0x575d, 0x575e, 0x575f, 0x5760, 0x5761, 0x5762, 0x5764, 0x5765,
- 0x5766, 0x5767, 0x5768, 0x5769, 0x576a, 0x576b, 0x576c, 0x576d,
- 0x576e, 0x576f, 0x5770, 0x5771, 0x5772, 0x5773, 0x5774, 0x5775,
- 0x5776, 0x5777, 0x5778, 0x5779, 0x583e, 0x5763, 0x577a, 0x577b,
- 0x577c, 0x577d, 0x577e, 0x5821, 0x5822, 0x5823, 0x5824, 0x5825,
- 0x5826, 0x5827, 0x5828, 0x5829, 0x582a, 0x582b, 0x582c, 0x582d,
- 0x582e, 0x582f, 0x5830, 0x5831, 0x5832, 0x5833, 0x584c, 0x5834,
- 0x5835, 0x5836, 0x5837, 0x5838, 0x5839, 0x583a, 0x583b, 0x583c,
- 0x583d, 0x583f, 0x5840, 0x5841, 0x5842, 0x5843, 0x5844, 0x5845,
- 0x5846, 0x5847, 0x5848, 0x5849, 0x584a, 0x584b, 0x584d, 0x584e,
- 0x584f, 0x5850, 0x5851, 0x5852, 0x5853, 0x5854, 0x5855, 0x5856,
- 0x5857, 0x5858, 0x5859, 0x585a, 0x585b, 0x585c, 0x585d, 0x585e,
- 0x585f, 0x5860, 0x5861, 0x5862, 0x5863, 0x5864, 0x5865, 0x5866,
- 0x5867, 0x5868, 0x5869, 0x586a, 0x586b, 0x586c, 0x586d, 0x586e,
- 0x586f, 0x5870, 0x5871, 0x5872, 0x5873, 0x5874, 0x5875, 0x5876,
- 0x5877, 0x5878, 0x5879, 0x587a, 0x587b, 0x587c, 0x587d, 0x587e,
- 0x5921, 0x5922, 0x5923, 0x5924, 0x5925, 0x5926, 0x5927, 0x5928,
- 0x592a, 0x592b, 0x592c, 0x592d, 0x592e, 0x592f, 0x5930, 0x5931,
- 0x5932, 0x5933, 0x5934, 0x5935, 0x5936, 0x5937, 0x5938, 0x5939,
- 0x593a, 0x593b, 0x593c, 0x5929, 0x593d, 0x593e, 0x593f, 0x5940,
- 0x5941, 0x5942, 0x5943, 0x5944, 0x5945, 0x5946, 0x5947, 0x5948,
- 0x5949, 0x594a, 0x594b, 0x594c, 0x594d, 0x594e, 0x594f, 0x5950,
- 0x5951, 0x5952, 0x5953, 0x5954, 0x5955, 0x5956, 0x5957, 0x5958,
- 0x5959, 0x595a, 0x595b, 0x595c, 0x595d, 0x595e, 0x595f, 0x5960,
- 0x5961, 0x5962, 0x5963, 0x5964, 0x5965, 0x5966, 0x5974, 0x5967,
- 0x5968, 0x5969, 0x596a, 0x596b, 0x596c, 0x596d, 0x596e, 0x596f,
- 0x5970, 0x5971, 0x5972, 0x5973, 0x5975, 0x5976, 0x5977, 0x5978,
- 0x5979, 0x597a, 0x597b, 0x597c, 0x597d, 0x597e, 0x5a21, 0x5a22,
- 0x5a23, 0x5a24, 0x5a25, 0x5a26, 0x5a27, 0x5a28, 0x5a29, 0x5a2a,
- 0x5a2b, 0x5a2c, 0x5a2d, 0x5a2e, 0x5a2f, 0x5a30, 0x5a31, 0x5a32,
- 0x5a33, 0x5a34, 0x5a35, 0x5a36, 0x3866, 0x5a37, 0x5a38, 0x5a39,
- 0x5a3a, 0x5a3b, 0x5a3c, 0x5a3d, 0x5a3e, 0x5a3f, 0x5a40, 0x5a41,
- 0x5a42, 0x5a43, 0x5a44, 0x5a45, 0x5a46, 0x5a47, 0x5a48, 0x5a49,
- 0x5a4a, 0x5a4b, 0x5a6d, 0x5a4c, 0x5a4d, 0x5a4e, 0x5a4f, 0x5a50,
- 0x5a51, 0x5a52, 0x5a53, 0x5a54, 0x5a55, 0x5a56, 0x5a57, 0x5a58,
- 0x5a59, 0x5a5a, 0x5a5b, 0x5a5c, 0x5a5d, 0x5a5e, 0x5a5f, 0x5a60,
- 0x5a61, 0x5a62, 0x5a63, 0x5a64, 0x5a65, 0x5a66, 0x5a67, 0x5a68,
- 0x5a69, 0x5a6a, 0x5a6b, 0x5a6c, 0x5a6e, 0x5a6f, 0x5a70, 0x5a71,
- 0x5a72, 0x5a73, 0x5a74, 0x5a75, 0x5a76, 0x5a77, 0x5a78, 0x5a79,
- 0x5a7a, 0x5a7b, 0x5a7c, 0x5a7d, 0x5a7e, 0x5b21, 0x5b22, 0x5b23,
- 0x5b24, 0x5b25, 0x5b26, 0x5b27, 0x5b28, 0x5b29, 0x5b2a, 0x5b2b,
- 0x5b2c, 0x5b2d, 0x5b2e, 0x5b2f, 0x5b30, 0x5b31, 0x5b32, 0x5b33,
- 0x5b34, 0x5b35, 0x5b36, 0x5b37, 0x5b38, 0x5b39, 0x5b3a, 0x5b3b,
- 0x5b3c, 0x5b3d, 0x5b3e, 0x5b3f, 0x5b40, 0x5b41, 0x5b42, 0x5b43,
- 0x5b44, 0x5b45, 0x5b46, 0x5b47, 0x5b48, 0x5b49, 0x5b4a, 0x5b4b,
- 0x5b4c, 0x5b4d, 0x5b4e, 0x5b4f, 0x5b50, 0x5b51, 0x5b52, 0x5b53,
- 0x5b54, 0x5b55, 0x5b56, 0x5b57, 0x5b58, 0x5b59, 0x5b5a, 0x5b5b,
- 0x5b5c, 0x5b5d, 0x5b5e, 0x5b5f, 0x5b60, 0x5b61, 0x5b62, 0x5b63,
- 0x5b64, 0x5b65, 0x5b66, 0x5b67, 0x5b68, 0x5b69, 0x5b6a, 0x5b6b,
- 0x5b6c, 0x5b6d, 0x5b6e, 0x5b70, 0x5b71, 0x5b72, 0x5b73, 0x5b6f,
- 0x5b74, 0x5b75, 0x5b76, 0x5b77, 0x5b78, 0x5b79, 0x5b7a, 0x5b7b,
- 0x5b7c, 0x5b7d, 0x5b7e, 0x5c21, 0x5c22, 0x5c23, 0x5c24, 0x5c25,
- 0x5c26, 0x5c27, 0x5c28, 0x5c29, 0x5c2a, 0x5c2b, 0x5c2c, 0x5c2d,
- 0x5c2e, 0x5c2f, 0x5c30, 0x5c31, 0x5c32, 0x5c33, 0x5c34, 0x5c35,
- 0x5c36, 0x5c37, 0x5c38, 0x5c39, 0x5c3a, 0x5c3b, 0x5c3c, 0x5c3d,
- 0x5c3e, 0x5c3f, 0x5c40, 0x5c41, 0x5c42, 0x5c43, 0x5c44, 0x5c45,
- 0x5c46, 0x5c47, 0x5c48, 0x5c49, 0x5c4a, 0x5c4b, 0x5c4c, 0x5c4d,
- 0x5c4e, 0x5c4f, 0x5c50, 0x5c51, 0x5c52, 0x5c53, 0x5c54, 0x5c55,
- 0x5c56, 0x5c57, 0x5c58, 0x5c59, 0x5c5a, 0x5c5b, 0x5c5c, 0x5c5d,
- 0x5c5e, 0x5c5f, 0x5c60, 0x5c61, 0x5c62, 0x5c63, 0x5c64, 0x5c65,
- 0x5c66, 0x5c67, 0x5c68, 0x5c69, 0x5c6a, 0x5c6b, 0x5c6c, 0x5c6d,
- 0x5c6e, 0x5c6f, 0x5c70, 0x5c71, 0x5c72, 0x5c73, 0x5c74, 0x5c75,
- 0x5c76, 0x5c77, 0x5c78, 0x5c79, 0x5c7a, 0x5c7b, 0x5c7c, 0x5c7d,
- 0x5c7e, 0x5d21, 0x5d22, 0x5d23, 0x5d24, 0x5d25, 0x5d26, 0x5d27,
- 0x5d28, 0x5d29, 0x5d2a, 0x5d2b, 0x5d2c, 0x5d2d, 0x5d2e, 0x5d2f,
- 0x5d30, 0x5d31, 0x5d32, 0x5d33, 0x5d34, 0x5d35, 0x5d36, 0x5d37,
- 0x5d38, 0x5d39, 0x5d3a, 0x5d3b, 0x5d3c, 0x5d3d, 0x5d3e, 0x5d3f,
- 0x5d40, 0x5d41, 0x5d42, 0x5d43, 0x5d44, 0x5d45, 0x5d46, 0x5d47,
- 0x5d48, 0x5d49, 0x5d4a, 0x5d4b, 0x5d4c, 0x5d4d, 0x5d4e, 0x5d4f,
- 0x5d50, 0x5d51, 0x5d52, 0x5d53, 0x5d54, 0x5d55, 0x5d56, 0x5d57,
- 0x5d58, 0x5d59, 0x5d5a, 0x5d5b, 0x5d5c, 0x5d5d, 0x5d5e, 0x5d5f,
- 0x5d60, 0x5d61, 0x5d62, 0x5d63, 0x5d64, 0x5d65, 0x5d66, 0x5d67,
- 0x5d68, 0x5d69, 0x5d6a, 0x5d6b, 0x5d6c, 0x5d6d, 0x5d6e, 0x5d6f,
- 0x5d70, 0x5d71, 0x5d72, 0x5d73, 0x5d74, 0x5d75, 0x5d76, 0x5d77,
- 0x5d78, 0x5d79, 0x5d7a, 0x5d7b, 0x5d7c, 0x5d7d, 0x5d7e, 0x5e21,
- 0x5e22, 0x5e23, 0x5e24, 0x5e25, 0x5e26, 0x5e27, 0x5e28, 0x5e29,
- 0x5e2a, 0x5e2b, 0x5e2c, 0x5e2d, 0x5e2e, 0x5e2f, 0x5e30, 0x5e31,
- 0x5e32, 0x5e33, 0x5e34, 0x5e35, 0x5e36, 0x5e37, 0x5e38, 0x5e39,
- 0x5e3f, 0x5e3a, 0x5e3b, 0x5e3c, 0x5e3d, 0x5e3e, 0x5e40, 0x5e41,
- 0x5e42, 0x5e43, 0x5e44, 0x5e45, 0x5e46, 0x5e47, 0x5e48, 0x5e49,
- 0x5e4e, 0x5e4a, 0x5e4b, 0x5e4c, 0x5e4d, 0x5e4f, 0x5e50, 0x5e51,
- 0x5e52, 0x5e53, 0x5e54, 0x5e55, 0x5e56, 0x5e57, 0x5e58, 0x5e59,
- 0x5e5a, 0x5e5b, 0x5e5c, 0x5e5d, 0x5e5e, 0x5e5f, 0x5e60, 0x5e61,
- 0x5e62, 0x5e63, 0x5e64, 0x5e65, 0x5e66, 0x5e67, 0x5e68, 0x5e69,
- 0x5e6a, 0x5e6b, 0x5e6c, 0x5e6d, 0x5e6e, 0x5e6f, 0x5e72, 0x5e70,
- 0x5e71, 0x5e73, 0x5e74, 0x5e75, 0x5e76, 0x5e77, 0x5e78, 0x5e79,
- 0x5e7a, 0x5e7b, 0x5e7c, 0x5e7d, 0x5e7e, 0x5f21, 0x5f22, 0x5f23,
- 0x5f24, 0x5f25, 0x5f26, 0x5f27, 0x5f28, 0x5f29, 0x5f2a, 0x5f2b,
- 0x5f2c, 0x5f2d, 0x5f2e, 0x5f2f, 0x5f30, 0x5f32, 0x5f31, 0x5f33,
- 0x5f34, 0x5f35, 0x5f36, 0x5f37, 0x5f38, 0x5f39, 0x5f3a, 0x5f3b,
- 0x5f3c, 0x5f3d, 0x5f3e, 0x5f3f, 0x5f40, 0x5f41, 0x5f42, 0x5f43,
- 0x5f44, 0x5f45, 0x5f46, 0x5f47, 0x5f48, 0x5f49, 0x5f4a, 0x5f4b,
- 0x5f4c, 0x5f4d, 0x5f4e, 0x5f4f, 0x5f50, 0x5f51, 0x5f52, 0x5f53,
- 0x5f54, 0x5f55, 0x5f56, 0x5f57, 0x5f58, 0x5f59, 0x5f5a, 0x5f5b,
- 0x5f5c, 0x5f5d, 0x5f6f, 0x5f5e, 0x5f5f, 0x5f60, 0x5f61, 0x5f62,
- 0x5f63, 0x5f64, 0x5f65, 0x5f66, 0x5f67, 0x5f68, 0x5f69, 0x5f6a,
- 0x5f6b, 0x5f6c, 0x5f6d, 0x5f6e, 0x5f70, 0x5f71, 0x5f72, 0x5f73,
- 0x5f74, 0x5f75, 0x5f76, 0x5f77, 0x5f78, 0x5f79, 0x5f7a, 0x5f7b,
- 0x5f7c, 0x5f7d, 0x5f7e, 0x6021, 0x6022, 0x6023, 0x6024, 0x6025,
- 0x6026, 0x6027, 0x6028, 0x6029, 0x602a, 0x602b, 0x602c, 0x602d,
- 0x602e, 0x602f, 0x6030, 0x6031, 0x6032, 0x6033, 0x6034, 0x6035,
- 0x6036, 0x6037, 0x6038, 0x6039, 0x603a, 0x603b, 0x603c, 0x603d,
- 0x603e, 0x603f, 0x6040, 0x6041, 0x6042, 0x6043, 0x6044, 0x6045,
- 0x6046, 0x6047, 0x6048, 0x6049, 0x604a, 0x604b, 0x604c, 0x604d,
- 0x604e, 0x604f, 0x6050, 0x6051, 0x6052, 0x6053, 0x6054, 0x6055,
- 0x6056, 0x6057, 0x6058, 0x6059, 0x605a, 0x605b, 0x605c, 0x605d,
- 0x6064, 0x605e, 0x605f, 0x6060, 0x6061, 0x6062, 0x6063, 0x6065,
- 0x6066, 0x6067, 0x6068, 0x6069, 0x606a, 0x606b, 0x606c, 0x606d,
- 0x606e, 0x606f, 0x6070, 0x6071, 0x6072, 0x6073, 0x6074, 0x6075,
- 0x6076, 0x6077, 0x6078, 0x6079, 0x607a, 0x607b, 0x607c, 0x607d,
- 0x607e, 0x6121, 0x6122, 0x6123, 0x6124, 0x6125, 0x6126, 0x6127,
- 0x6128, 0x6129, 0x612a, 0x612b, 0x612c, 0x612d, 0x612e, 0x612f,
- 0x6130, 0x6131, 0x6132, 0x6133, 0x6134, 0x6135, 0x6136, 0x6137,
- 0x6138, 0x6139, 0x613a, 0x613b, 0x613c, 0x613d, 0x613e, 0x613f,
- 0x6140, 0x6141, 0x6142, 0x6143, 0x6144, 0x6145, 0x6146, 0x6147,
- 0x6148, 0x6149, 0x614a, 0x614b, 0x614c, 0x614d, 0x614e, 0x614f,
- 0x6150, 0x6151, 0x6152, 0x6154, 0x6155, 0x6156, 0x6153, 0x6157,
- 0x6158, 0x6159, 0x615a, 0x615b, 0x615c, 0x615d, 0x615e, 0x615f,
- 0x6160, 0x6161, 0x6162, 0x6163, 0x6164, 0x6165, 0x6166, 0x6167,
- 0x6168, 0x6169, 0x616a, 0x616b, 0x616c, 0x616d, 0x616e, 0x616f,
- 0x6170, 0x6171, 0x6172, 0x6173, 0x6174, 0x6175, 0x6176, 0x6177,
- 0x6178, 0x6179, 0x617a, 0x617b, 0x617d, 0x617e, 0x6221, 0x6222,
- 0x6223, 0x6224, 0x617c, 0x622d, 0x6225, 0x6226, 0x6227, 0x6228,
- 0x6229, 0x622a, 0x622b, 0x622c, 0x622f, 0x6230, 0x6231, 0x6232,
- 0x622e, 0x6233, 0x6234, 0x6235, 0x6236, 0x6237, 0x6238, 0x6239,
- 0x623a, 0x623b, 0x623c, 0x623d, 0x623e, 0x623f, 0x6240, 0x6241,
- 0x6242, 0x6243, 0x6245, 0x6246, 0x6244, 0x6247, 0x6248, 0x6249,
- 0x624a, 0x624b, 0x624c, 0x624d, 0x624e, 0x624f, 0x6250, 0x6251,
- 0x6252, 0x6253, 0x6254, 0x6255, 0x6256, 0x6257, 0x6258, 0x6259,
- 0x625a, 0x625b, 0x625c, 0x625d, 0x625e, 0x625f, 0x6260, 0x6261,
- 0x6262, 0x6263, 0x6264, 0x6265, 0x6266, 0x6267, 0x6268, 0x6269,
- 0x626a, 0x626b, 0x626c, 0x626d, 0x626e, 0x626f, 0x6270, 0x6271,
- 0x6272, 0x6273, 0x6274, 0x6275, 0x6276, 0x6277, 0x6278, 0x6279,
- 0x627a, 0x627b, 0x627c, 0x627d, 0x627e, 0x6321, 0x6322, 0x6323,
- 0x6324, 0x6325, 0x6326, 0x6327, 0x6328, 0x6329, 0x632a, 0x632b,
- 0x632c, 0x632d, 0x632e, 0x632f, 0x6330, 0x6331, 0x6332, 0x6333,
- 0x6334, 0x6335, 0x6336, 0x6337, 0x6338, 0x6339, 0x633a, 0x633b,
- 0x633c, 0x633d, 0x633e, 0x633f, 0x6340, 0x6341, 0x6342, 0x6343,
- 0x6344, 0x6345, 0x6346, 0x6347, 0x6348, 0x6349, 0x634a, 0x634b,
- 0x634c, 0x634d, 0x634e, 0x634f, 0x6350, 0x6351, 0x6352, 0x6353,
- 0x6354, 0x6355, 0x6356, 0x6357, 0x6358, 0x6359, 0x635a, 0x635b,
- 0x635c, 0x635d, 0x635e, 0x635f, 0x6360, 0x6361, 0x6362, 0x6363,
- 0x6364, 0x6365, 0x6366, 0x6367, 0x6368, 0x6369, 0x636a, 0x636b,
- 0x636c, 0x636d, 0x636e, 0x636f, 0x6370, 0x6371, 0x6372, 0x6373,
- 0x6374, 0x6375, 0x6376, 0x6377, 0x6378, 0x6379, 0x637a, 0x637b,
- 0x637c, 0x637d, 0x637e, 0x6421, 0x6422, 0x6423, 0x6424, 0x6425,
- 0x6426, 0x6427, 0x6428, 0x6429, 0x642a, 0x642b, 0x642c, 0x642d,
- 0x642e, 0x642f, 0x6430, 0x6431, 0x6432, 0x6433, 0x6434, 0x6435,
- 0x6436, 0x6437, 0x6438, 0x6439, 0x643a, 0x643b, 0x643c, 0x643d,
- 0x643e, 0x643f, 0x6440, 0x6441, 0x6442, 0x6443, 0x6444, 0x6445,
- 0x6446, 0x6447, 0x6448, 0x6449, 0x644a, 0x644b, 0x644c, 0x644d,
- 0x644e, 0x644f, 0x6450, 0x6451, 0x6452, 0x6453, 0x6454, 0x6455,
- 0x6456, 0x6457, 0x6458, 0x6459, 0x645a, 0x645b, 0x645c, 0x645d,
- 0x645e, 0x645f, 0x6460, 0x6461, 0x6462, 0x6463, 0x6464, 0x6465,
- 0x6466, 0x6467, 0x6468, 0x6469, 0x646a, 0x646b, 0x646c, 0x646d,
- 0x646e, 0x646f, 0x6470, 0x6471, 0x6472, 0x6473, 0x6474, 0x6475,
- 0x6476, 0x6477, 0x6478, 0x6479, 0x647a, 0x647b, 0x647c, 0x647d,
- 0x647e, 0x6521, 0x6522, 0x6523, 0x6524, 0x6525, 0x6526, 0x6527,
- 0x6528, 0x6529, 0x652a, 0x652b, 0x652c, 0x652d, 0x652e, 0x652f,
- 0x6530, 0x6531, 0x6532, 0x6533, 0x6534, 0x6535, 0x653b, 0x6536,
- 0x6537, 0x6538, 0x6539, 0x653a, 0x653c, 0x653d, 0x653e, 0x653f,
- 0x6540, 0x6541, 0x6542, 0x6543, 0x6544, 0x6545, 0x6546, 0x6547,
- 0x6548, 0x6549, 0x654a, 0x654b, 0x654c, 0x654d, 0x654f, 0x6550,
- 0x654e, 0x6551, 0x6552, 0x6553, 0x6554, 0x6555, 0x6556, 0x6557,
- 0x6558, 0x6559, 0x655a, 0x655b, 0x655c, 0x655d, 0x655e, 0x655f,
- 0x6560, 0x6561, 0x6562, 0x6563, 0x6564, 0x6565, 0x6566, 0x6568,
- 0x6567, 0x6569, 0x656a, 0x656b, 0x656c, 0x656d, 0x656e, 0x656f,
- 0x6570, 0x6571, 0x6572, 0x6573, 0x6574, 0x6575, 0x6576, 0x6577,
- 0x6578, 0x6579, 0x657a, 0x657c, 0x657b, 0x657d, 0x657e, 0x6621,
- 0x6622, 0x6623, 0x6624, 0x6625, 0x6626, 0x6627, 0x6628, 0x6629,
- 0x662a, 0x662b, 0x662c, 0x662d, 0x662e, 0x662f, 0x6630, 0x6631,
- 0x6632, 0x6633, 0x6634, 0x6635, 0x6636, 0x6637, 0x6638, 0x6639,
- 0x663a, 0x663b, 0x663c, 0x663d, 0x663e, 0x663f, 0x6640, 0x6641,
- 0x6642, 0x6643, 0x6644, 0x6645, 0x6646, 0x6647, 0x6648, 0x6649,
- 0x664a, 0x664b, 0x664c, 0x664d, 0x664e, 0x664f, 0x6650, 0x6651,
- 0x6652, 0x6653, 0x6654, 0x6655, 0x6656, 0x6657, 0x6658, 0x6659,
- 0x665a, 0x665b, 0x665c, 0x665d, 0x665e, 0x665f, 0x6660, 0x6661,
- 0x6662, 0x6663, 0x6664, 0x6665, 0x6666, 0x6667, 0x6668, 0x6669,
- 0x666a, 0x666b, 0x666c, 0x666d, 0x666e, 0x666f, 0x6670, 0x6671,
- 0x6672, 0x6673, 0x6675, 0x6676, 0x6677, 0x6678, 0x6679, 0x667a,
- 0x667b, 0x667c, 0x667d, 0x667e, 0x6721, 0x6722, 0x6723, 0x6724,
- 0x6725, 0x6726, 0x6727, 0x6728, 0x6729, 0x672a, 0x672b, 0x672c,
- 0x672d, 0x672e, 0x672f, 0x6730, 0x6731, 0x6732, 0x6733, 0x6734,
- 0x6735, 0x6736, 0x6737, 0x6738, 0x6739, 0x673a, 0x673b, 0x673c,
- 0x673d, 0x673e, 0x673f, 0x6740, 0x6741, 0x6742, 0x6743, 0x6744,
- 0x6745, 0x6746, 0x6747, 0x6748, 0x6749, 0x674a, 0x674b, 0x674c,
- 0x674d, 0x674e, 0x674f, 0x6750, 0x6751, 0x6752, 0x6753, 0x6754,
- 0x6755, 0x6756, 0x6757, 0x6758, 0x6759, 0x675a, 0x675b, 0x675c,
- 0x675d, 0x675e, 0x675f, 0x6760, 0x6761, 0x6762, 0x6763, 0x6764,
- 0x6765, 0x6766, 0x676a, 0x6767, 0x6768, 0x6769, 0x676b, 0x676c,
- 0x676d, 0x676e, 0x676f, 0x6770, 0x6771, 0x6772, 0x6773, 0x6774,
- 0x6776, 0x6777, 0x6778, 0x6779, 0x6775, 0x677a, 0x677b, 0x677c,
- 0x677d, 0x6828, 0x677e, 0x6821, 0x6822, 0x6823, 0x6824, 0x6825,
- 0x6826, 0x6827, 0x6829, 0x682a, 0x682b, 0x682c, 0x682d, 0x682e,
- 0x682f, 0x6830, 0x6831, 0x6832, 0x6833, 0x6834, 0x6835, 0x6836,
- 0x6837, 0x6838, 0x6839, 0x683a, 0x683b, 0x683c, 0x683d, 0x683e,
- 0x683f, 0x6840, 0x6841, 0x6842, 0x6843, 0x6844, 0x6845, 0x6846,
- 0x6847, 0x6848, 0x6849, 0x684a, 0x684b, 0x684c, 0x684d, 0x684e,
- 0x684f, 0x6850, 0x6851, 0x6852, 0x6853, 0x6854, 0x6855, 0x6856,
- 0x6857, 0x6858, 0x6859, 0x685a, 0x685b, 0x685c, 0x685d, 0x685e,
- 0x685f, 0x6860, 0x6861, 0x6862, 0x6863, 0x6864, 0x6865, 0x6866,
- 0x6867, 0x6868, 0x6869, 0x686a, 0x686b, 0x686c, 0x686d, 0x686e,
- 0x686f, 0x6870, 0x6871, 0x6872, 0x6873, 0x6874, 0x6875, 0x6876,
- 0x6877, 0x6878, 0x6879, 0x687a, 0x687b, 0x687c, 0x687d, 0x687e,
- 0x6921, 0x6922, 0x6923, 0x6924, 0x6925, 0x6926, 0x6927, 0x6928,
- 0x6929, 0x692a, 0x692b, 0x692c, 0x692d, 0x692e, 0x692f, 0x6930,
- 0x6931, 0x6932, 0x6933, 0x6934, 0x6935, 0x6936, 0x6937, 0x6938,
- 0x6939, 0x693a, 0x693b, 0x693c, 0x693d, 0x693e, 0x693f, 0x6940,
- 0x6941, 0x6942, 0x6943, 0x6944, 0x6945, 0x6946, 0x6947, 0x6948,
- 0x6949, 0x694a, 0x694c, 0x694d, 0x694b, 0x694e, 0x694f, 0x6950,
- 0x6951, 0x6952, 0x6953, 0x6954, 0x6955, 0x6956, 0x6957, 0x6958,
- 0x6959, 0x695a, 0x695b, 0x695c, 0x695d, 0x695e, 0x695f, 0x6960,
- 0x6961, 0x6962, 0x6963, 0x6964, 0x6965, 0x6966, 0x6967, 0x6968,
- 0x6969, 0x696a, 0x696b, 0x696c, 0x696d, 0x696e, 0x696f, 0x6970,
- 0x6971, 0x6972, 0x6973, 0x6974, 0x6975, 0x6976, 0x6977, 0x6978,
- 0x6979, 0x697a, 0x697b, 0x697c, 0x697d, 0x697e, 0x6a21, 0x6a22,
- 0x6a23, 0x6a24, 0x6a25, 0x6a26, 0x6a27, 0x6a28, 0x6a29, 0x6a2a,
- 0x6a2b, 0x6a2c, 0x6a2d, 0x6a2e, 0x6a2f, 0x6a30, 0x6a31, 0x6a32,
- 0x6a33, 0x6a34, 0x6a35, 0x6a36, 0x6a37, 0x6a38, 0x6a39, 0x6a3a,
- 0x6a3b, 0x6a3c, 0x6a3d, 0x6a3e, 0x6a3f, 0x6a40, 0x6a41, 0x6a42,
- 0x6a43, 0x6a44, 0x6a45, 0x6a46, 0x6a47, 0x6a48, 0x6a49, 0x6a4a,
- 0x6a4b, 0x6a4c, 0x6a4d, 0x6a4e, 0x6a4f, 0x6a50, 0x6a51, 0x6a52,
- 0x6a53, 0x6a54, 0x6a55, 0x6a56, 0x6a57, 0x6a58, 0x6a59, 0x6a5a,
- 0x6a5b, 0x6a5c, 0x6a5d, 0x6a5e, 0x6a5f, 0x6a60, 0x6a61, 0x6a62,
- 0x6a63, 0x6a64, 0x6a65, 0x6a66, 0x6a67, 0x6a68, 0x6a69, 0x6a6a,
- 0x6a6b, 0x6a6c, 0x6a6d, 0x6a6e, 0x6a6f, 0x6a70, 0x6a71, 0x6a72,
- 0x6a73, 0x6a74, 0x6a75, 0x6a76, 0x6a77, 0x6a78, 0x6a79, 0x6a7a,
- 0x6a7b, 0x6a7c, 0x6a7d, 0x6a7e, 0x6b21, 0x6b22, 0x6b23, 0x6b24,
- 0x6b25, 0x6b26, 0x6b27, 0x6b28, 0x6b29, 0x6b2a, 0x6b2b, 0x6b2c,
- 0x6b2d, 0x6b2e, 0x6b2f, 0x6b30, 0x6b31, 0x6b32, 0x6b33, 0x6b34,
- 0x6b35, 0x6b36, 0x6b37, 0x6b38, 0x6b39, 0x6b3a, 0x6b3b, 0x6b3c,
- 0x6b3d, 0x6b3e, 0x6b3f, 0x6b40, 0x6b41, 0x6b42, 0x6b43, 0x6b44,
- 0x6b45, 0x6b46, 0x6b47, 0x6b48, 0x6b49, 0x6b50, 0x6b4a, 0x6b4b,
- 0x6b4c, 0x6b4d, 0x6b52, 0x6b4e, 0x6b4f, 0x6b51, 0x6b53, 0x6b54,
- 0x6b55, 0x6b56, 0x6b57, 0x6b58, 0x6b59, 0x6b5a, 0x6b5b, 0x6b5c,
- 0x6b5e, 0x6b5d, 0x6b5f, 0x6b60, 0x6b61, 0x6b62, 0x6b63, 0x6b64,
- 0x6b65, 0x6b66, 0x6b67, 0x6b68, 0x6b69, 0x6b6a, 0x6b6b, 0x6b6d,
- 0x6b6e, 0x6b6f, 0x6b6c, 0x6b70, 0x6b71, 0x6b72, 0x6b73, 0x6b74,
- 0x6b76, 0x6b75, 0x6b77, 0x6b78, 0x6b79, 0x6b7a, 0x6b7b, 0x6b7c,
- 0x6b7d, 0x6b7e, 0x6c21, 0x6c22, 0x6c23, 0x6c24, 0x6c25, 0x6c26,
- 0x6c27, 0x6c28, 0x6c29, 0x6c2a, 0x6c2b, 0x6c2c, 0x6c2d, 0x6c2e,
- 0x6c2f, 0x6c30, 0x6c31, 0x6c32, 0x6c33, 0x6c34, 0x6c35, 0x6c36,
- 0x6c37, 0x6c38, 0x6c39, 0x6c3a, 0x6c3b, 0x6c3c, 0x6c3d, 0x6c3e,
- 0x6c3f, 0x6c40, 0x6c41, 0x6c42, 0x6c43, 0x6c44, 0x6c45, 0x6c46,
- 0x6c47, 0x6c48, 0x6c49, 0x6c4a, 0x6c4b, 0x6c4c, 0x6c4e, 0x6c4f,
- 0x6c4d, 0x6c50, 0x6c51, 0x6c52, 0x6c53, 0x6c54, 0x6c55, 0x6c56,
- 0x6c57, 0x6c58, 0x6c59, 0x6c5a, 0x6c5b, 0x6c5c, 0x6c5d, 0x6c5e,
- 0x6c5f, 0x6c60, 0x6c61, 0x6c62, 0x6c63, 0x6c64, 0x6c65, 0x6c66,
- 0x6c67, 0x6c68, 0x6c69, 0x6c6a, 0x6c6b, 0x6c6c, 0x6c6d, 0x6c6e,
- 0x6c6f, 0x6c70, 0x6c71, 0x6c72, 0x6c73, 0x6c74, 0x6c75, 0x6c76,
- 0x6c77, 0x6c78, 0x6c79, 0x6c7a, 0x6c7b, 0x6c7c, 0x6c7d, 0x6c7e,
- 0x6d21, 0x6d22, 0x6d23, 0x6d24, 0x6d25, 0x6d26, 0x6d27, 0x6d28,
- 0x6d29, 0x6d2a, 0x6d2b, 0x6d2c, 0x6d2d, 0x6d2e, 0x6d2f, 0x6d30,
- 0x6d31, 0x6d32, 0x6d33, 0x6d34, 0x6d35, 0x6d36, 0x6d37, 0x6d38,
- 0x6d39, 0x6d3a, 0x6d3b, 0x6d3c, 0x6d3d, 0x6d3e, 0x6d3f, 0x6d40,
- 0x6d41, 0x6d42, 0x6d43, 0x6d44, 0x6d45, 0x6d46, 0x6d47, 0x6d48,
- 0x6d49, 0x6d4a, 0x6d4b, 0x6d4c, 0x6d4d, 0x6d4e, 0x6d4f, 0x6d50,
- 0x6d51, 0x6d52, 0x6d53, 0x6d54, 0x6d55, 0x6d56, 0x6d57, 0x6d58,
- 0x6d59, 0x6d5a, 0x6d5b, 0x6d5c, 0x6d5d, 0x6d5e, 0x6d5f, 0x6d60,
- 0x6d61, 0x6d62, 0x6d63,
-};
-
-static const Summary16 jisx0212_uni2indx_page00[70] = {
- /* 0x0000 */
- { 0, 0x0000 }, { 0, 0x0000 }, { 0, 0x0000 }, { 0, 0x0000 },
- { 0, 0x0000 }, { 0, 0x0000 }, { 0, 0x0000 }, { 0, 0x4000 },
- { 1, 0x0000 }, { 1, 0x0000 }, { 1, 0xc652 }, { 8, 0x8500 },
- { 11, 0xffff }, { 27, 0xff7e }, { 41, 0xffff }, { 57, 0xff7f },
- /* 0x0100 */
- { 72, 0xffff }, { 88, 0xffcf }, { 102, 0xcff7 }, { 115, 0xffff },
- { 131, 0x3fff }, { 145, 0xffff }, { 161, 0xffff }, { 177, 0x7fff },
- { 192, 0x0000 }, { 192, 0x0000 }, { 192, 0x0000 }, { 192, 0x0000 },
- { 192, 0xe000 }, { 195, 0x1fff }, { 208, 0x0000 }, { 208, 0x0020 },
- /* 0x0200 */
- { 209, 0x0000 }, { 209, 0x0000 }, { 209, 0x0000 }, { 209, 0x0000 },
- { 209, 0x0000 }, { 209, 0x0000 }, { 209, 0x0000 }, { 209, 0x0000 },
- { 209, 0x0000 }, { 209, 0x0000 }, { 209, 0x0000 }, { 209, 0x0000 },
- { 209, 0x0080 }, { 210, 0x2f00 }, { 215, 0x0000 }, { 215, 0x0000 },
- /* 0x0300 */
- { 215, 0x0000 }, { 215, 0x0000 }, { 215, 0x0000 }, { 215, 0x0000 },
- { 215, 0x0000 }, { 215, 0x0000 }, { 215, 0x0000 }, { 215, 0x0000 },
- { 215, 0xd770 }, { 224, 0x0001 }, { 225, 0xfc00 }, { 231, 0x0001 },
- { 232, 0x7c04 }, { 238, 0x0000 }, { 238, 0x0000 }, { 238, 0x0000 },
- /* 0x0400 */
- { 238, 0xdffc }, { 251, 0x0000 }, { 251, 0x0000 }, { 251, 0x0000 },
- { 251, 0x0000 }, { 251, 0xdffc },
-};
-static const Summary16 jisx0212_uni2indx_page21[3] = {
- /* 0x2100 */
- { 264, 0x0000 }, { 264, 0x0040 }, { 265, 0x0004 },
-};
-static const Summary16 jisx0212_uni2indx_page4e[1307] = {
- /* 0x4e00 */
- { 266, 0x1034 }, { 270, 0x8004 }, { 272, 0xc918 }, { 278, 0x0021 },
- { 280, 0x0093 }, { 284, 0x1402 }, { 287, 0x0308 }, { 290, 0x8230 },
- { 294, 0x2000 }, { 295, 0x20c0 }, { 298, 0x8000 }, { 299, 0x0200 },
- { 300, 0x0008 }, { 301, 0x0c01 }, { 304, 0x8107 }, { 309, 0xe02a },
- /* 0x4f00 */
- { 315, 0x190d }, { 321, 0x02e4 }, { 326, 0x4000 }, { 327, 0x4aaa },
- { 334, 0x1b05 }, { 340, 0x8154 }, { 345, 0x5409 }, { 350, 0x6782 },
- { 357, 0x5636 }, { 365, 0xc69d }, { 374, 0x0000 }, { 374, 0x7a84 },
- { 381, 0xbb63 }, { 391, 0x1004 }, { 393, 0x0005 }, { 395, 0xb005 },
- /* 0x5000 */
- { 400, 0x5493 }, { 407, 0x7989 }, { 415, 0x4084 }, { 418, 0x082d },
- { 423, 0x5467 }, { 431, 0x828e }, { 437, 0x24cd }, { 444, 0x0003 },
- { 446, 0xc45a }, { 453, 0xd85d }, { 462, 0x8407 }, { 467, 0x2601 },
- { 471, 0x5099 }, { 477, 0xb119 }, { 484, 0x8354 }, { 490, 0x4446 },
- /* 0x5100 */
- { 495, 0x79c8 }, { 503, 0x7a81 }, { 510, 0xb188 }, { 516, 0x033a },
- { 522, 0x8404 }, { 525, 0x81a8 }, { 530, 0x0050 }, { 532, 0x4000 },
- { 533, 0x4818 }, { 537, 0x2100 }, { 539, 0x200a }, { 542, 0xd500 },
- { 547, 0x8104 }, { 550, 0x412e }, { 556, 0x4024 }, { 559, 0x009c },
- /* 0x5200 */
- { 563, 0x0026 }, { 566, 0x016c }, { 571, 0x0104 }, { 573, 0x1026 },
- { 577, 0x0220 }, { 579, 0x95a0 }, { 585, 0x4043 }, { 589, 0x0380 },
- { 592, 0x1425 }, { 597, 0x15e8 }, { 604, 0x80f0 }, { 609, 0x2dc1 },
- { 616, 0x9151 }, { 622, 0x1852 }, { 627, 0x1722 }, { 633, 0x00d3 },
- /* 0x5300 */
- { 638, 0x1c09 }, { 643, 0xd90a }, { 650, 0x3ba0 }, { 657, 0x7025 },
- { 663, 0x1804 }, { 666, 0x0a00 }, { 668, 0x302a }, { 673, 0x4204 },
- { 676, 0x4188 }, { 680, 0x2218 }, { 684, 0x8c12 }, { 689, 0x25b4 },
- { 696, 0x8021 }, { 699, 0x642c }, { 705, 0x00c1 }, { 708, 0x0020 },
- /* 0x5400 */
- { 709, 0x0004 }, { 710, 0x0408 }, { 712, 0x8582 }, { 717, 0x0032 },
- { 720, 0xa098 }, { 725, 0x4000 }, { 726, 0x6ad4 }, { 734, 0x8010 },
- { 736, 0x232a }, { 742, 0x9062 }, { 747, 0x66c2 }, { 754, 0x8e82 },
- { 760, 0x6440 }, { 764, 0x0000 }, { 764, 0x9401 }, { 768, 0xd040 },
- /* 0x5500 */
- { 772, 0x7323 }, { 780, 0x0020 }, { 781, 0x0c00 }, { 783, 0x3864 },
- { 789, 0x2682 }, { 794, 0x4d03 }, { 800, 0x0053 }, { 804, 0x8000 },
- { 805, 0xc146 }, { 811, 0x009e }, { 816, 0x2018 }, { 819, 0x8004 },
- { 821, 0x5a4a }, { 828, 0x498e }, { 835, 0x0204 }, { 837, 0x8040 },
- /* 0x5600 */
- { 839, 0xe520 }, { 845, 0x0207 }, { 849, 0x1000 }, { 850, 0xbaa9 },
- { 859, 0xaa5b }, { 868, 0x4010 }, { 870, 0xa24f }, { 878, 0x0026 },
- { 881, 0x1930 }, { 886, 0xe620 }, { 892, 0x3bc0 }, { 899, 0x408a },
- { 903, 0xbe20 }, { 910, 0xb201 }, { 915, 0x29f2 }, { 923, 0x00c2 },
- /* 0x5700 */
- { 926, 0x1486 }, { 931, 0x2c22 }, { 936, 0xd63d }, { 946, 0xe018 },
- { 951, 0x3060 }, { 955, 0x0004 }, { 956, 0xe9a4 }, { 964, 0x5ebb },
- { 975, 0x100a }, { 978, 0xf6b0 }, { 987, 0x1382 }, { 992, 0x2100 },
- { 994, 0x9180 }, { 998, 0x6020 }, { 1001, 0x22d2 }, { 1007, 0xe161 },
- /* 0x5800 */
- { 1014, 0x3318 }, { 1020, 0xc800 }, { 1023, 0x20c1 }, { 1027, 0x8204 },
- { 1030, 0xb200 }, { 1034, 0x8021 }, { 1037, 0x0192 }, { 1041, 0x9100 },
- { 1044, 0xb783 }, { 1053, 0x2051 }, { 1057, 0x0247 }, { 1062, 0x1006 },
- { 1065, 0x6114 }, { 1070, 0x2455 }, { 1076, 0x0206 }, { 1079, 0x0008 },
- /* 0x5900 */
- { 1080, 0x1860 }, { 1084, 0x201c }, { 1088, 0x811a }, { 1093, 0x8069 },
- { 1098, 0x0048 }, { 1100, 0xea0c }, { 1107, 0xa80a }, { 1112, 0x1a64 },
- { 1118, 0x5800 }, { 1121, 0x80a4 }, { 1125, 0xe090 }, { 1130, 0x1489 },
- { 1135, 0x251a }, { 1141, 0xe004 }, { 1145, 0xc098 }, { 1150, 0x0096 },
- /* 0x5a00 */
- { 1154, 0x7011 }, { 1159, 0x400c }, { 1162, 0x2598 }, { 1168, 0x0001 },
- { 1169, 0x11b0 }, { 1174, 0x4021 }, { 1177, 0x20a8 }, { 1181, 0x4c80 },
- { 1185, 0x0800 }, { 1186, 0xd249 }, { 1193, 0x1085 }, { 1197, 0x8d2e },
- { 1205, 0x8150 }, { 1209, 0x1400 }, { 1211, 0x4421 }, { 1215, 0x2060 },
- /* 0x5b00 */
- { 1218, 0x0103 }, { 1221, 0x2a80 }, { 1225, 0x2022 }, { 1228, 0x0110 },
- { 1230, 0x1802 }, { 1233, 0x4044 }, { 1236, 0xc100 }, { 1239, 0xf000 },
- { 1243, 0x4452 }, { 1248, 0x005b }, { 1253, 0xb300 }, { 1258, 0x1486 },
- { 1263, 0xa003 }, { 1267, 0x07c0 }, { 1272, 0x8001 }, { 1274, 0x2012 },
- /* 0x5c00 */
- { 1277, 0x1000 }, { 1278, 0xc080 }, { 1281, 0x5a48 }, { 1287, 0x0065 },
- { 1291, 0x0000 }, { 1291, 0x1600 }, { 1294, 0x238c }, { 1300, 0x3c31 },
- { 1307, 0x8580 }, { 1311, 0xa004 }, { 1314, 0x044d }, { 1319, 0x0434 },
- { 1323, 0x0a00 }, { 1325, 0x2084 }, { 1328, 0x4000 }, { 1329, 0x0016 },
- /* 0x5d00 */
- { 1332, 0x2042 }, { 1335, 0x0004 }, { 1336, 0x08d8 }, { 1341, 0xa212 },
- { 1346, 0x054c }, { 1351, 0x8222 }, { 1355, 0x2417 }, { 1361, 0xc601 },
- { 1366, 0x050a }, { 1370, 0x8a3c }, { 1377, 0x0881 }, { 1380, 0x0315 },
- { 1385, 0x4888 }, { 1389, 0x0301 }, { 1392, 0x0211 }, { 1395, 0x0300 },
- /* 0x5e00 */
- { 1397, 0x2081 }, { 1400, 0x8134 }, { 1405, 0x4101 }, { 1408, 0x4024 },
- { 1411, 0x0a00 }, { 1413, 0x5943 }, { 1420, 0x7d00 }, { 1426, 0x0001 },
- { 1427, 0x4801 }, { 1430, 0x0000 }, { 1430, 0x1534 }, { 1436, 0xe00a },
- { 1441, 0x5840 }, { 1445, 0x5036 }, { 1451, 0x0820 }, { 1453, 0x0000 },
- /* 0x5f00 */
- { 1453, 0x41c4 }, { 1458, 0x3200 }, { 1461, 0x591e }, { 1469, 0xa851 },
- { 1475, 0x20b1 }, { 1480, 0x0911 }, { 1484, 0x8099 }, { 1489, 0x6534 },
- { 1496, 0xa200 }, { 1499, 0x3040 }, { 1502, 0x9894 }, { 1508, 0x0103 },
- { 1511, 0x0b90 }, { 1516, 0x401f }, { 1522, 0xf706 }, { 1531, 0x144c },
- /* 0x6000 */
- { 1536, 0x2480 }, { 1539, 0x8598 }, { 1545, 0x2010 }, { 1547, 0x0028 },
- { 1549, 0x1381 }, { 1554, 0x20d2 }, { 1559, 0x0082 }, { 1561, 0xc002 },
- { 1564, 0x4544 }, { 1569, 0x612a }, { 1575, 0x0134 }, { 1579, 0x4883 },
- { 1584, 0xcf14 }, { 1592, 0x6a30 }, { 1598, 0x0024 }, { 1600, 0x3124 },
- /* 0x6100 */
- { 1605, 0x1484 }, { 1609, 0x52df }, { 1619, 0x0c04 }, { 1622, 0x02e3 },
- { 1628, 0x0262 }, { 1632, 0x4000 }, { 1633, 0x1001 }, { 1635, 0x9904 },
- { 1640, 0x281b }, { 1646, 0xb18c }, { 1653, 0x2521 }, { 1658, 0x1300 },
- { 1661, 0xc007 }, { 1666, 0xf020 }, { 1671, 0xb2a6 }, { 1679, 0x0000 },
- /* 0x6200 */
- { 1679, 0x009a }, { 1683, 0x1028 }, { 1686, 0x0a8d }, { 1692, 0x2200 },
- { 1694, 0x105c }, { 1699, 0x1457 }, { 1706, 0xa010 }, { 1709, 0x2408 },
- { 1712, 0xe000 }, { 1715, 0x0001 }, { 1716, 0x0140 }, { 1718, 0xc4c8 },
- { 1724, 0x4010 }, { 1726, 0x0460 }, { 1729, 0x0400 }, { 1730, 0x3014 },
- /* 0x6300 */
- { 1734, 0x2c18 }, { 1739, 0x0149 }, { 1743, 0x2600 }, { 1746, 0x1260 },
- { 1750, 0x4c5e }, { 1758, 0x091c }, { 1763, 0x3060 }, { 1767, 0xb132 },
- { 1774, 0x0494 }, { 1778, 0x4631 }, { 1784, 0xe050 }, { 1789, 0x2000 },
- { 1790, 0x4122 }, { 1794, 0x103a }, { 1799, 0x1421 }, { 1803, 0x032c },
- /* 0x6400 */
- { 1808, 0x0600 }, { 1810, 0x4115 }, { 1815, 0x8635 }, { 1822, 0xa021 },
- { 1826, 0x8800 }, { 1828, 0xbc1e }, { 1837, 0x200b }, { 1841, 0x2818 },
- { 1845, 0x80a0 }, { 1848, 0xab03 }, { 1855, 0x114a }, { 1860, 0xe008 },
- { 1864, 0x5e10 }, { 1870, 0x00a3 }, { 1874, 0x2630 }, { 1879, 0x88a1 },
- /* 0x6500 */
- { 1884, 0x8712 }, { 1890, 0xca58 }, { 1897, 0x4244 }, { 1901, 0x3402 },
- { 1905, 0x0288 }, { 1908, 0x8015 }, { 1912, 0x0881 }, { 1915, 0x2400 },
- { 1917, 0x0422 }, { 1920, 0x2124 }, { 1924, 0x4049 }, { 1928, 0x801c },
- { 1932, 0x4304 }, { 1936, 0x8151 }, { 1941, 0x0000 }, { 1941, 0xc235 },
- /* 0x6600 */
- { 1948, 0x2311 }, { 1953, 0x6066 }, { 1959, 0x5e5e }, { 1969, 0x028b },
- { 1974, 0x5461 }, { 1980, 0x1b82 }, { 1986, 0x1c03 }, { 1991, 0xdba8 },
- { 2000, 0x3801 }, { 2004, 0x9e05 }, { 2011, 0x2011 }, { 2014, 0x8826 },
- { 2019, 0xd10d }, { 2026, 0x8810 }, { 2029, 0x5900 }, { 2033, 0x0c00 },
- /* 0x6700 */
- { 2035, 0x40a0 }, { 2038, 0x1208 }, { 2041, 0x0005 }, { 2043, 0x4008 },
- { 2045, 0x11a0 }, { 2049, 0x2030 }, { 2052, 0x5040 }, { 2055, 0x0850 },
- { 2058, 0xc012 }, { 2062, 0x0b4a }, { 2068, 0x0000 }, { 2068, 0x3827 },
- { 2075, 0x032d }, { 2081, 0x1284 }, { 2085, 0x0042 }, { 2087, 0x02c5 },
- /* 0x6800 */
- { 2092, 0x0000 }, { 2092, 0xa210 }, { 2096, 0xb180 }, { 2101, 0x880b },
- { 2106, 0x1430 }, { 2110, 0x09a4 }, { 2115, 0xc800 }, { 2118, 0x1e27 },
- { 2126, 0x0154 }, { 2130, 0x1540 }, { 2134, 0x462a }, { 2140, 0x0804 },
- { 2142, 0x9120 }, { 2146, 0x324b }, { 2153, 0x3d20 }, { 2159, 0x3863 },
- /* 0x6900 */
- { 2166, 0x0640 }, { 2169, 0x00cb }, { 2174, 0x0000 }, { 2174, 0x092a },
- { 2179, 0x4224 }, { 2183, 0x0880 }, { 2185, 0x1378 }, { 2192, 0x8c07 },
- { 2198, 0x2001 }, { 2200, 0x0144 }, { 2203, 0xa962 }, { 2210, 0x1580 },
- { 2214, 0x0120 }, { 2216, 0x00c2 }, { 2219, 0xc024 }, { 2223, 0x402a },
- /* 0x6a00 */
- { 2227, 0x800b }, { 2231, 0x2422 }, { 2235, 0x0111 }, { 2238, 0xc895 },
- { 2245, 0x4660 }, { 2250, 0x0867 }, { 2256, 0x0490 }, { 2259, 0x400a },
- { 2262, 0x0aca }, { 2268, 0xe802 }, { 2273, 0x8820 }, { 2276, 0xe013 },
- { 2282, 0x1340 }, { 2286, 0x3071 }, { 2292, 0x1090 }, { 2295, 0x3007 },
- /* 0x6b00 */
- { 2300, 0x82cc }, { 2306, 0x4883 }, { 2311, 0x9910 }, { 2316, 0x8860 },
- { 2320, 0x2440 }, { 2323, 0x2144 }, { 2327, 0x4881 }, { 2331, 0x6021 },
- { 2335, 0x0024 }, { 2337, 0x8880 }, { 2340, 0x730d }, { 2348, 0x6301 },
- { 2353, 0x1218 }, { 2357, 0x0440 }, { 2359, 0x40ca }, { 2364, 0x8282 },
- /* 0x6c00 */
- { 2368, 0x6234 }, { 2374, 0x8205 }, { 2378, 0x51c0 }, { 2383, 0x8c68 },
- { 2389, 0xac00 }, { 2393, 0x1a14 }, { 2398, 0xa880 }, { 2402, 0x0b50 },
- { 2407, 0x02e0 }, { 2411, 0x91b0 }, { 2417, 0x0000 }, { 2417, 0x0015 },
- { 2420, 0xa044 }, { 2424, 0x1457 }, { 2431, 0x5a81 }, { 2437, 0x0014 },
- /* 0x6d00 */
- { 2439, 0xc490 }, { 2444, 0x040a }, { 2447, 0xc1c0 }, { 2452, 0x9202 },
- { 2456, 0x0000 }, { 2456, 0xc080 }, { 2459, 0x80a2 }, { 2463, 0x1001 },
- { 2465, 0x0084 }, { 2467, 0x01d6 }, { 2473, 0x1400 }, { 2475, 0xa290 },
- { 2480, 0xc510 }, { 2485, 0xa840 }, { 2489, 0x8225 }, { 2494, 0x1051 },
- /* 0x6e00 */
- { 2498, 0x0011 }, { 2500, 0x4000 }, { 2501, 0x0084 }, { 2503, 0x1a44 },
- { 2508, 0x8b30 }, { 2514, 0x709e }, { 2522, 0x010c }, { 2525, 0x2808 },
- { 2528, 0x2000 }, { 2529, 0x0208 }, { 2531, 0x6081 }, { 2535, 0x880a },
- { 2539, 0xe58b }, { 2548, 0x0000 }, { 2548, 0x6800 }, { 2551, 0x2a00 },
- /* 0x6f00 */
- { 2554, 0x3510 }, { 2559, 0x0d40 }, { 2563, 0xa640 }, { 2568, 0x1849 },
- { 2573, 0x8000 }, { 2574, 0x668e }, { 2582, 0x1106 }, { 2586, 0x6000 },
- { 2588, 0x3988 }, { 2594, 0x845d }, { 2601, 0xc1e1 }, { 2608, 0x1061 },
- { 2612, 0x05a0 }, { 2616, 0x4400 }, { 2618, 0x0300 }, { 2620, 0x3221 },
- /* 0x7000 */
- { 2625, 0x20e1 }, { 2630, 0x0080 }, { 2631, 0x8009 }, { 2634, 0x1290 },
- { 2638, 0x4f18 }, { 2645, 0x6030 }, { 2649, 0x5030 }, { 2653, 0x4060 },
- { 2656, 0x0062 }, { 2659, 0x09f0 }, { 2665, 0x0810 }, { 2667, 0x0093 },
- { 2671, 0x0400 }, { 2672, 0x117a }, { 2679, 0x0010 }, { 2680, 0x0400 },
- /* 0x7100 */
- { 2681, 0x98f8 }, { 2689, 0x4000 }, { 2690, 0xa801 }, { 2694, 0x0103 },
- { 2697, 0x0ce2 }, { 2703, 0x5485 }, { 2709, 0x0101 }, { 2711, 0x0200 },
- { 2712, 0x10a1 }, { 2716, 0x0c04 }, { 2719, 0x8005 }, { 2722, 0x840d },
- { 2727, 0x1813 }, { 2732, 0x1648 }, { 2737, 0x0000 }, { 2737, 0x4100 },
- /* 0x7200 */
- { 2739, 0x0381 }, { 2743, 0xa488 }, { 2748, 0x8810 }, { 2751, 0x0310 },
- { 2754, 0xc02e }, { 2760, 0x5469 }, { 2767, 0xc909 }, { 2773, 0x9982 },
- { 2779, 0x6210 }, { 2783, 0x0808 }, { 2785, 0x6100 }, { 2788, 0x4012 },
- { 2791, 0x1282 }, { 2795, 0x8160 }, { 2799, 0x0020 }, { 2800, 0x4c18 },
- /* 0x7300 */
- { 2805, 0x28b4 }, { 2811, 0x430c }, { 2816, 0x1194 }, { 2821, 0x2c26 },
- { 2827, 0x2008 }, { 2829, 0xe145 }, { 2836, 0xdac1 }, { 2844, 0x1282 },
- { 2848, 0x406b }, { 2854, 0xd1a9 }, { 2862, 0x2c65 }, { 2869, 0xb2a0 },
- { 2875, 0x9a60 }, { 2881, 0x224c }, { 2886, 0x02ca }, { 2891, 0xaeb0 },
- /* 0x7400 */
- { 2899, 0x0493 }, { 2904, 0x0c02 }, { 2907, 0xff50 }, { 2917, 0x0203 },
- { 2920, 0x28d9 }, { 2927, 0x2086 }, { 2931, 0x69c4 }, { 2938, 0x0006 },
- { 2940, 0x82e3 }, { 2947, 0x9707 }, { 2955, 0xcf4b }, { 2965, 0x8a26 },
- { 2971, 0x1300 }, { 2974, 0xcd09 }, { 2981, 0x8d10 }, { 2986, 0x9c10 },
- /* 0x7500 */
- { 2991, 0x0040 }, { 2992, 0x00c4 }, { 2995, 0x8693 }, { 3002, 0xe240 },
- { 3007, 0x4189 }, { 3012, 0xc085 }, { 3017, 0x8002 }, { 3019, 0x7e02 },
- { 3026, 0x0022 }, { 3028, 0x122d }, { 3034, 0x0014 }, { 3036, 0x8410 },
- { 3039, 0xd053 }, { 3046, 0x9080 }, { 3049, 0xd093 }, { 3056, 0x0202 },
- /* 0x7600 */
- { 3058, 0x959d }, { 3067, 0x7a6c }, { 3076, 0x2268 }, { 3081, 0x172c },
- { 3088, 0x0e3b }, { 3096, 0x8220 }, { 3099, 0xe030 }, { 3104, 0x0012 },
- { 3106, 0x3022 }, { 3110, 0xb820 }, { 3115, 0x25fd }, { 3125, 0x2000 },
- { 3126, 0x5a22 }, { 3132, 0x0210 }, { 3134, 0x1141 }, { 3138, 0x1243 },
- /* 0x7700 */
- { 3143, 0x4441 }, { 3147, 0x16b4 }, { 3154, 0xe104 }, { 3159, 0x6270 },
- { 3165, 0xe464 }, { 3172, 0xd0c4 }, { 3178, 0x1495 }, { 3184, 0x241d },
- { 3190, 0x3011 }, { 3194, 0x8470 }, { 3199, 0xc484 }, { 3204, 0x4022 },
- { 3207, 0x0208 }, { 3209, 0xc226 }, { 3215, 0x1451 }, { 3220, 0x0913 },
- /* 0x7800 */
- { 3225, 0x6260 }, { 3230, 0x2002 }, { 3232, 0x600e }, { 3237, 0x00a1 },
- { 3240, 0x5198 }, { 3246, 0x5004 }, { 3249, 0x451b }, { 3256, 0x4400 },
- { 3258, 0x8400 }, { 3260, 0xe110 }, { 3265, 0x3112 }, { 3270, 0xa80f },
- { 3277, 0x5380 }, { 3282, 0x886c }, { 3288, 0x0453 }, { 3293, 0x8ccc },
- /* 0x7900 */
- { 3300, 0x1041 }, { 3303, 0xd401 }, { 3308, 0x22a1 }, { 3313, 0xa832 },
- { 3319, 0x8c70 }, { 3325, 0x1912 }, { 3330, 0x0a80 }, { 3333, 0x5a04 },
- { 3338, 0x1800 }, { 3340, 0x197a }, { 3348, 0x8b02 }, { 3353, 0x0912 },
- { 3357, 0x8594 }, { 3363, 0x6450 }, { 3368, 0x2c25 }, { 3374, 0x1102 },
- /* 0x7a00 */
- { 3377, 0x168c }, { 3383, 0x4822 }, { 3387, 0xa882 }, { 3392, 0x0731 },
- { 3398, 0x11b0 }, { 3403, 0xb260 }, { 3409, 0x24a1 }, { 3414, 0x4120 },
- { 3417, 0x0c65 }, { 3423, 0x4013 }, { 3427, 0x1009 }, { 3430, 0x1a28 },
- { 3435, 0x5240 }, { 3439, 0x0802 }, { 3441, 0x1b00 }, { 3445, 0x6812 },
- /* 0x7b00 */
- { 3450, 0x0080 }, { 3451, 0x8010 }, { 3453, 0xee88 }, { 3461, 0xa013 },
- { 3466, 0x4083 }, { 3470, 0x0020 }, { 3471, 0xa651 }, { 3478, 0x008c },
- { 3481, 0x4210 }, { 3484, 0x4843 }, { 3489, 0x9021 }, { 3493, 0x3c65 },
- { 3501, 0x0524 }, { 3505, 0x0ed0 }, { 3511, 0x0500 }, { 3513, 0x5734 },
- /* 0x7c00 */
- { 3521, 0xda5e }, { 3531, 0x0a00 }, { 3533, 0x1161 }, { 3538, 0x065a },
- { 3544, 0x0440 }, { 3546, 0x7e2e }, { 3556, 0x628a }, { 3562, 0x3205 },
- { 3567, 0x80c0 }, { 3570, 0x4010 }, { 3572, 0x0041 }, { 3574, 0x9cc1 },
- { 3581, 0xa390 }, { 3587, 0x26b8 }, { 3594, 0x0a40 }, { 3597, 0x0020 },
- /* 0x7d00 */
- { 3598, 0x8388 }, { 3603, 0x604e }, { 3609, 0x2448 }, { 3613, 0x7002 },
- { 3617, 0x2183 }, { 3622, 0x368a }, { 3629, 0x04a0 }, { 3632, 0x8d01 },
- { 3637, 0x396e }, { 3646, 0x60c2 }, { 3651, 0x04c0 }, { 3654, 0x02c8 },
- { 3658, 0x707c }, { 3666, 0x0280 }, { 3668, 0x2c64 }, { 3674, 0x0662 },
- /* 0x7e00 */
- { 3679, 0x0101 }, { 3681, 0x30a3 }, { 3687, 0xb181 }, { 3693, 0x8048 },
- { 3696, 0x40b0 }, { 3700, 0x8105 }, { 3704, 0xc826 }, { 3710, 0x4108 },
- { 3713, 0x24c2 }, { 3718, 0x6522 }, { 3724, 0x0000 }, { 3724, 0x0000 },
- { 3724, 0x0000 }, { 3724, 0x0000 }, { 3724, 0x0000 }, { 3724, 0x0000 },
- /* 0x7f00 */
- { 3724, 0x0000 }, { 3724, 0x0000 }, { 3724, 0x0000 }, { 3724, 0xf800 },
- { 3729, 0x8098 }, { 3733, 0x380c }, { 3738, 0x207a }, { 3744, 0xe002 },
- { 3748, 0xa801 }, { 3752, 0x10c3 }, { 3757, 0x2446 }, { 3762, 0x9010 },
- { 3765, 0xc109 }, { 3770, 0x8800 }, { 3772, 0xd128 }, { 3778, 0xe404 },
- /* 0x8000 */
- { 3783, 0xe580 }, { 3789, 0xe05a }, { 3796, 0x5051 }, { 3801, 0x56b1 },
- { 3809, 0x0011 }, { 3811, 0x0000 }, { 3811, 0x2051 }, { 3815, 0x0022 },
- { 3817, 0x4102 }, { 3820, 0x5000 }, { 3822, 0x08c0 }, { 3825, 0x0300 },
- { 3827, 0xa100 }, { 3830, 0x01b4 }, { 3835, 0x6001 }, { 3838, 0x464d },
- /* 0x8100 */
- { 3845, 0x0808 }, { 3847, 0x51c0 }, { 3852, 0x1091 }, { 3856, 0x1421 },
- { 3860, 0x14a0 }, { 3864, 0x0084 }, { 3866, 0xa383 }, { 3873, 0x0080 },
- { 3874, 0x4872 }, { 3880, 0x4941 }, { 3885, 0x4004 }, { 3887, 0x0814 },
- { 3890, 0xcc28 }, { 3896, 0x68a0 }, { 3901, 0x1812 }, { 3905, 0xa367 },
- /* 0x8200 */
- { 3914, 0x8009 }, { 3917, 0x2618 }, { 3922, 0x0106 }, { 3925, 0x0414 },
- { 3928, 0xc878 }, { 3935, 0x1042 }, { 3938, 0x2089 }, { 3942, 0xa810 },
- { 3946, 0x469b }, { 3954, 0x0d52 }, { 3960, 0x479b }, { 3969, 0xd495 },
- { 3977, 0x0040 }, { 3978, 0x0421 }, { 3981, 0xa515 }, { 3988, 0x60c0 },
- /* 0x8300 */
- { 3992, 0x0d83 }, { 3998, 0xe800 }, { 4002, 0x7006 }, { 4007, 0x3489 },
- { 4013, 0x609c }, { 4019, 0x00fa }, { 4025, 0x0000 }, { 4025, 0xa101 },
- { 4029, 0x2055 }, { 4034, 0x3b34 }, { 4042, 0x32c0 }, { 4047, 0xc000 },
- { 4049, 0x8281 }, { 4053, 0x2013 }, { 4057, 0x0500 }, { 4059, 0x1340 },
- /* 0x8400 */
- { 4063, 0x8442 }, { 4067, 0x0222 }, { 4070, 0x8000 }, { 4071, 0x0200 },
- { 4072, 0xa5a0 }, { 4078, 0x1746 }, { 4085, 0x04b1 }, { 4090, 0x3159 },
- { 4097, 0x0022 }, { 4099, 0x402c }, { 4103, 0x8740 }, { 4108, 0x6412 },
- { 4113, 0x9185 }, { 4119, 0x1008 }, { 4121, 0x8480 }, { 4124, 0x2c87 },
- /* 0x8500 */
- { 4131, 0x508c }, { 4136, 0x5001 }, { 4139, 0x8cbc }, { 4147, 0x805c },
- { 4152, 0x8040 }, { 4154, 0xf24f }, { 4164, 0x8817 }, { 4170, 0xae00 },
- { 4175, 0x9a62 }, { 4182, 0xa108 }, { 4186, 0x20a5 }, { 4191, 0xf1d0 },
- { 4199, 0x4c84 }, { 4204, 0x8500 }, { 4207, 0x2141 }, { 4211, 0x9048 },
- /* 0x8600 */
- { 4215, 0x6031 }, { 4220, 0x4b07 }, { 4227, 0x0282 }, { 4230, 0x3540 },
- { 4235, 0x0047 }, { 4239, 0x23cc }, { 4246, 0x921f }, { 4254, 0x04e0 },
- { 4258, 0x2100 }, { 4260, 0x1542 }, { 4265, 0x21c2 }, { 4270, 0x83ba },
- { 4278, 0x002b }, { 4282, 0x14a6 }, { 4288, 0x00a9 }, { 4292, 0x3400 },
- /* 0x8700 */
- { 4295, 0xc8b0 }, { 4301, 0xc219 }, { 4307, 0xc10a }, { 4312, 0x7606 },
- { 4319, 0x2029 }, { 4323, 0x2100 }, { 4325, 0x8032 }, { 4329, 0x0806 },
- { 4332, 0x1bf8 }, { 4341, 0x43a9 }, { 4348, 0x7089 }, { 4354, 0xc022 },
- { 4358, 0x4702 }, { 4363, 0x9660 }, { 4369, 0x2c1c }, { 4375, 0x850a },
- /* 0x8800 */
- { 4380, 0x0e4a }, { 4386, 0xdf1d }, { 4397, 0x6100 }, { 4400, 0x1425 },
- { 4405, 0x4f2a }, { 4413, 0x9562 }, { 4420, 0x0211 }, { 4423, 0x0a02 },
- { 4426, 0x0001 }, { 4427, 0x9d00 }, { 4432, 0x0501 }, { 4435, 0x6400 },
- { 4438, 0x7c01 }, { 4444, 0x480e }, { 4449, 0x8080 }, { 4451, 0x00a3 },
- /* 0x8900 */
- { 4455, 0xe042 }, { 4460, 0x1760 }, { 4466, 0x01c1 }, { 4470, 0x4627 },
- { 4477, 0x8265 }, { 4483, 0x1c84 }, { 4488, 0x480e }, { 4493, 0x3c29 },
- { 4500, 0x2200 }, { 4502, 0x9831 }, { 4508, 0x0021 }, { 4510, 0x10f1 },
- { 4516, 0x0000 }, { 4516, 0x01f0 }, { 4521, 0x2a20 }, { 4525, 0xa24a },
- /* 0x8a00 */
- { 4531, 0x80b0 }, { 4535, 0x4036 }, { 4540, 0x9855 }, { 4547, 0x60a0 },
- { 4551, 0x62a9 }, { 4558, 0x31c8 }, { 4564, 0x00a2 }, { 4567, 0xcee0 },
- { 4575, 0x8849 }, { 4580, 0x82c5 }, { 4586, 0xc280 }, { 4590, 0x48c8 },
- { 4595, 0x0748 }, { 4600, 0xa0ba }, { 4607, 0x1000 }, { 4608, 0x9071 },
- /* 0x8b00 */
- { 4614, 0x0c60 }, { 4618, 0xd002 }, { 4622, 0x2000 }, { 4623, 0x1081 },
- { 4626, 0x217c }, { 4633, 0x421c }, { 4638, 0x2008 }, { 4640, 0x5340 },
- { 4645, 0xa832 }, { 4651, 0xd030 }, { 4656, 0x0000 }, { 4656, 0x0000 },
- { 4656, 0x0000 }, { 4656, 0x0000 }, { 4656, 0x0000 }, { 4656, 0x0000 },
- /* 0x8c00 */
- { 4656, 0x0000 }, { 4656, 0x0000 }, { 4656, 0x0000 }, { 4656, 0x6300 },
- { 4660, 0x8aa0 }, { 4665, 0x2b9a }, { 4673, 0x2358 }, { 4679, 0x4868 },
- { 4684, 0x08c0 }, { 4687, 0x1a0d }, { 4693, 0x0010 }, { 4694, 0x0600 },
- { 4696, 0x8a60 }, { 4701, 0x2260 }, { 4705, 0x9102 }, { 4709, 0xc1a5 },
- /* 0x8d00 */
- { 4716, 0x020a }, { 4719, 0x0884 }, { 4722, 0x0000 }, { 4722, 0x0000 },
- { 4722, 0x0000 }, { 4722, 0x0000 }, { 4722, 0x5220 }, { 4726, 0x8000 },
- { 4727, 0x2114 }, { 4731, 0xc023 }, { 4736, 0x9841 }, { 4741, 0x1aa4 },
- { 4747, 0x45e1 }, { 4754, 0x02b2 }, { 4759, 0x10b0 }, { 4763, 0x2017 },
- /* 0x8e00 */
- { 4768, 0x0872 }, { 4773, 0x0052 }, { 4776, 0x00cf }, { 4782, 0x23ca },
- { 4789, 0xe803 }, { 4795, 0x7810 }, { 4800, 0xb206 }, { 4806, 0x0e03 },
- { 4811, 0x020c }, { 4814, 0x6c25 }, { 4821, 0x6284 }, { 4826, 0x0c28 },
- { 4830, 0x809b }, { 4836, 0x1012 }, { 4839, 0x6100 }, { 4842, 0x0683 },
- /* 0x8f00 */
- { 4847, 0x8185 }, { 4852, 0x41c1 }, { 4857, 0x71ab }, { 4866, 0x04f0 },
- { 4871, 0x808b }, { 4876, 0x613e }, { 4884, 0x0020 }, { 4885, 0x0000 },
- { 4885, 0x0000 }, { 4885, 0x2000 }, { 4886, 0x0073 }, { 4891, 0x4160 },
- { 4895, 0x2c43 }, { 4901, 0x002d }, { 4905, 0x4119 }, { 4910, 0x4862 },
- /* 0x9000 */
- { 4915, 0x1114 }, { 4919, 0x0900 }, { 4921, 0xb700 }, { 4927, 0x8098 },
- { 4931, 0x1018 }, { 4934, 0x2800 }, { 4936, 0x10c4 }, { 4940, 0x0211 },
- { 4943, 0x5920 }, { 4948, 0x0ba1 }, { 4954, 0x0027 }, { 4958, 0x605d },
- { 4965, 0x11b8 }, { 4971, 0xb3a4 }, { 4979, 0x8820 }, { 4982, 0xc051 },
- /* 0x9100 */
- { 4987, 0x2171 }, { 4993, 0x55d1 }, { 5001, 0xc2ad }, { 5009, 0x36d2 },
- { 5017, 0x8188 }, { 5021, 0x0e88 }, { 5026, 0x2092 }, { 5030, 0x0e10 },
- { 5034, 0x446a }, { 5040, 0x413a }, { 5046, 0x7142 }, { 5052, 0xb84f },
- { 5061, 0x002c }, { 5064, 0x4698 }, { 5070, 0xf630 }, { 5078, 0x2a83 },
- /* 0x9200 */
- { 5084, 0x16f3 }, { 5093, 0x314d }, { 5100, 0xc178 }, { 5107, 0x5769 },
- { 5116, 0xe4cd }, { 5125, 0x3302 }, { 5130, 0xc3a3 }, { 5138, 0xbbe1 },
- { 5148, 0x6700 }, { 5153, 0x8284 }, { 5157, 0x89b1 }, { 5164, 0xbd44 },
- { 5172, 0x79ef }, { 5184, 0xb3a9 }, { 5193, 0x51ab }, { 5201, 0x8a01 },
- /* 0x9300 */
- { 5205, 0x2105 }, { 5209, 0xf032 }, { 5216, 0x06b2 }, { 5222, 0x00d8 },
- { 5226, 0x0380 }, { 5229, 0x45a7 }, { 5237, 0xa6b0 }, { 5244, 0xa45b },
- { 5252, 0xad07 }, { 5260, 0x4924 }, { 5265, 0x0b5a }, { 5272, 0x0470 },
- { 5276, 0x3ef2 }, { 5286, 0xd208 }, { 5291, 0x00c4 }, { 5294, 0x2f80 },
- /* 0x9400 */
- { 5300, 0xe316 }, { 5308, 0x80e0 }, { 5312, 0xc000 }, { 5314, 0xa81e },
- { 5321, 0x1528 }, { 5326, 0x9220 }, { 5330, 0xe90a }, { 5337, 0x0006 },
- { 5339, 0x0018 }, { 5341, 0x0000 }, { 5341, 0x0000 }, { 5341, 0x0000 },
- { 5341, 0x0000 }, { 5341, 0x0000 }, { 5341, 0x0000 }, { 5341, 0x0000 },
- /* 0x9500 */
- { 5341, 0x0000 }, { 5341, 0x0000 }, { 5341, 0x0000 }, { 5341, 0x0000 },
- { 5341, 0x0000 }, { 5341, 0x0000 }, { 5341, 0x0000 }, { 5341, 0x4300 },
- { 5344, 0x7110 }, { 5349, 0xe000 }, { 5352, 0x1a42 }, { 5357, 0xa450 },
- { 5362, 0x0b40 }, { 5366, 0xe60f }, { 5375, 0x0051 }, { 5378, 0x0000 },
- /* 0x9600 */
- { 5378, 0x0000 }, { 5378, 0x6000 }, { 5380, 0x1074 }, { 5385, 0x378a },
- { 5393, 0x0002 }, { 5394, 0x01d4 }, { 5399, 0x4002 }, { 5401, 0xd810 },
- { 5406, 0x021e }, { 5411, 0xa442 }, { 5416, 0xc270 }, { 5422, 0x0408 },
- { 5424, 0x0400 }, { 5425, 0xe504 }, { 5431, 0x8200 }, { 5433, 0x0402 },
- /* 0x9700 */
- { 5435, 0x022c }, { 5439, 0x2c00 }, { 5442, 0x010e }, { 5446, 0x000a },
- { 5448, 0xc40a }, { 5453, 0x0da0 }, { 5458, 0x4488 }, { 5462, 0xa9c8 },
- { 5469, 0x0201 }, { 5471, 0xc6e0 }, { 5478, 0x5004 }, { 5481, 0xd766 },
- { 5491, 0x76b2 }, { 5500, 0x6b93 }, { 5509, 0x8013 }, { 5513, 0x0592 },
- /* 0x9800 */
- { 5518, 0x6480 }, { 5522, 0x5250 }, { 5527, 0xc869 }, { 5534, 0x402d },
- { 5539, 0x0490 }, { 5542, 0x06ce }, { 5549, 0x146c }, { 5555, 0x0000 },
- { 5555, 0x0000 }, { 5555, 0x0000 }, { 5555, 0x6800 }, { 5558, 0x8d91 },
- { 5565, 0x1124 }, { 5569, 0x0000 }, { 5569, 0x04ea }, { 5575, 0x0048 },
- /* 0x9900 */
- { 5577, 0x0184 }, { 5580, 0x9ce2 }, { 5588, 0x08c4 }, { 5592, 0x1e3e },
- { 5601, 0x61c3 }, { 5608, 0xdb10 }, { 5615, 0x0001 }, { 5616, 0x0000 },
- { 5616, 0x0000 }, { 5616, 0xa800 }, { 5619, 0x0040 }, { 5620, 0xa627 },
- { 5628, 0x0208 }, { 5630, 0x5618 }, { 5636, 0x1c80 }, { 5640, 0x6231 },
- /* 0x9a00 */
- { 5646, 0x181c }, { 5651, 0x4043 }, { 5655, 0x609d }, { 5662, 0x0168 },
- { 5666, 0x5c92 }, { 5673, 0x2052 }, { 5677, 0x0000 }, { 5677, 0x0000 },
- { 5677, 0x0000 }, { 5677, 0x0000 }, { 5677, 0xd400 }, { 5681, 0xca74 },
- { 5689, 0x414a }, { 5694, 0x18e5 }, { 5701, 0x12b1 }, { 5707, 0xa62c },
- /* 0x9b00 */
- { 5714, 0x7b3f }, { 5726, 0x1a45 }, { 5732, 0x2841 }, { 5736, 0x26b8 },
- { 5743, 0x1900 }, { 5746, 0x48e0 }, { 5751, 0x7d6a }, { 5761, 0x83a8 },
- { 5767, 0xaef1 }, { 5777, 0x6411 }, { 5782, 0x12c0 }, { 5786, 0xd987 },
- { 5795, 0x4182 }, { 5799, 0xa181 }, { 5804, 0x8ca0 }, { 5809, 0xa788 },
- /* 0x9c00 */
- { 5816, 0x8805 }, { 5820, 0x5742 }, { 5827, 0x07cc }, { 5834, 0x20e2 },
- { 5839, 0xc63a }, { 5847, 0xf959 }, { 5857, 0x4f08 }, { 5863, 0x08a5 },
- { 5868, 0x0000 }, { 5868, 0x0000 }, { 5868, 0x0000 }, { 5868, 0x0000 },
- { 5868, 0x0000 }, { 5868, 0x0000 }, { 5868, 0x0040 }, { 5869, 0x0284 },
- /* 0x9d00 */
- { 5872, 0x0804 }, { 5874, 0x7182 }, { 5880, 0x8000 }, { 5881, 0x341d },
- { 5888, 0x04ac }, { 5893, 0x8018 }, { 5896, 0x0e2c }, { 5902, 0x58c1 },
- { 5908, 0x6458 }, { 5914, 0x01ec }, { 5920, 0x5402 }, { 5924, 0x9222 },
- { 5929, 0x0688 }, { 5933, 0xc4f0 }, { 5940, 0x4aa1 }, { 5946, 0x4019 },
- /* 0x9e00 */
- { 5950, 0x4484 }, { 5954, 0x3267 }, { 5962, 0x0000 }, { 5962, 0x0000 },
- { 5962, 0x0000 }, { 5962, 0x0000 }, { 5962, 0x0000 }, { 5962, 0x1c00 },
- { 5965, 0xc0bd }, { 5973, 0x4940 }, { 5977, 0xd110 }, { 5982, 0x0039 },
- { 5986, 0x0940 }, { 5989, 0x8020 }, { 5991, 0x7090 }, { 5996, 0x8127 },
- /* 0x9f00 */
- { 6002, 0x820c }, { 6006, 0x8ed7 }, { 6016, 0x8c44 }, { 6021, 0xb696 },
- { 6030, 0x00fa }, { 6036, 0x65e8 }, { 6044, 0xe300 }, { 6049, 0x242b },
- { 6055, 0x8000 }, { 6056, 0x40d7 }, { 6063, 0x002e },
-};
-
-static int
-jisx0212_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n)
-{
- if (n >= 2) {
- const Summary16 *summary = NULL;
- if (wc < 0x0460)
- summary = &jisx0212_uni2indx_page00[(wc>>4)];
- else if (wc >= 0x2100 && wc < 0x2130)
- summary = &jisx0212_uni2indx_page21[(wc>>4)-0x210];
- else if (wc >= 0x4e00 && wc < 0x9fb0)
- summary = &jisx0212_uni2indx_page4e[(wc>>4)-0x4e0];
- if (summary) {
- unsigned short used = summary->used;
- unsigned int i = wc & 0x0f;
- if (used & ((unsigned short) 1 << i)) {
- unsigned short c;
- /* Keep in `used' only the bits 0..i-1. */
- used &= ((unsigned short) 1 << i) - 1;
- /* Add `summary->indx' and the number of bits set in `used'. */
- used = (used & 0x5555) + ((used & 0xaaaa) >> 1);
- used = (used & 0x3333) + ((used & 0xcccc) >> 2);
- used = (used & 0x0f0f) + ((used & 0xf0f0) >> 4);
- used = (used & 0x00ff) + (used >> 8);
- c = jisx0212_2charset[summary->indx + used];
- r[0] = (c >> 8); r[1] = (c & 0xff);
- return 2;
- }
- }
- return RET_ILSEQ;
- }
- return RET_TOOSMALL;
-}
+
+/*
+ * JISX0212.1990-0
+ */
+
+static const unsigned short jisx0212_2uni_page22[81] = {
+ /* 0x22 */
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x02d8, 0x02c7,
+ 0x00b8, 0x02d9, 0x02dd, 0x00af, 0x02db, 0x02da, 0x007e, 0x0384,
+ 0x0385, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0x00a1, 0x00a6, 0x00bf, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0x00ba, 0x00aa, 0x00a9, 0x00ae, 0x2122, 0x00a4,
+ 0x2116,
+};
+static const unsigned short jisx0212_2uni_page26[188] = {
+ /* 0x26 */
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0x0386, 0x0388, 0x0389, 0x038a, 0x03aa, 0xfffd, 0x038c, 0xfffd,
+ 0x038e, 0x03ab, 0xfffd, 0x038f, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0x03ac, 0x03ad, 0x03ae, 0x03af, 0x03ca, 0x0390, 0x03cc, 0x03c2,
+ 0x03cd, 0x03cb, 0x03b0, 0x03ce, 0xfffd, 0xfffd,
+ /* 0x27 */
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0x0402, 0x0403, 0x0404, 0x0405, 0x0406, 0x0407, 0x0408,
+ 0x0409, 0x040a, 0x040b, 0x040c, 0x040e, 0x040f, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0x0452, 0x0453, 0x0454, 0x0455, 0x0456, 0x0457, 0x0458,
+ 0x0459, 0x045a, 0x045b, 0x045c, 0x045e, 0x045f,
+};
+static const unsigned short jisx0212_2uni_page29[275] = {
+ /* 0x29 */
+ 0x00c6, 0x0110, 0xfffd, 0x0126, 0xfffd, 0x0132, 0xfffd, 0x0141,
+ 0x013f, 0xfffd, 0x014a, 0x00d8, 0x0152, 0xfffd, 0x0166, 0x00de,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0x00e6, 0x0111, 0x00f0, 0x0127, 0x0131, 0x0133, 0x0138, 0x0142,
+ 0x0140, 0x0149, 0x014b, 0x00f8, 0x0153, 0x00df, 0x0167, 0x00fe,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ /* 0x2a */
+ 0x00c1, 0x00c0, 0x00c4, 0x00c2, 0x0102, 0x01cd, 0x0100, 0x0104,
+ 0x00c5, 0x00c3, 0x0106, 0x0108, 0x010c, 0x00c7, 0x010a, 0x010e,
+ 0x00c9, 0x00c8, 0x00cb, 0x00ca, 0x011a, 0x0116, 0x0112, 0x0118,
+ 0xfffd, 0x011c, 0x011e, 0x0122, 0x0120, 0x0124, 0x00cd, 0x00cc,
+ 0x00cf, 0x00ce, 0x01cf, 0x0130, 0x012a, 0x012e, 0x0128, 0x0134,
+ 0x0136, 0x0139, 0x013d, 0x013b, 0x0143, 0x0147, 0x0145, 0x00d1,
+ 0x00d3, 0x00d2, 0x00d6, 0x00d4, 0x01d1, 0x0150, 0x014c, 0x00d5,
+ 0x0154, 0x0158, 0x0156, 0x015a, 0x015c, 0x0160, 0x015e, 0x0164,
+ 0x0162, 0x00da, 0x00d9, 0x00dc, 0x00db, 0x016c, 0x01d3, 0x0170,
+ 0x016a, 0x0172, 0x016e, 0x0168, 0x01d7, 0x01db, 0x01d9, 0x01d5,
+ 0x0174, 0x00dd, 0x0178, 0x0176, 0x0179, 0x017d, 0x017b, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ /* 0x2b */
+ 0x00e1, 0x00e0, 0x00e4, 0x00e2, 0x0103, 0x01ce, 0x0101, 0x0105,
+ 0x00e5, 0x00e3, 0x0107, 0x0109, 0x010d, 0x00e7, 0x010b, 0x010f,
+ 0x00e9, 0x00e8, 0x00eb, 0x00ea, 0x011b, 0x0117, 0x0113, 0x0119,
+ 0x01f5, 0x011d, 0x011f, 0xfffd, 0x0121, 0x0125, 0x00ed, 0x00ec,
+ 0x00ef, 0x00ee, 0x01d0, 0xfffd, 0x012b, 0x012f, 0x0129, 0x0135,
+ 0x0137, 0x013a, 0x013e, 0x013c, 0x0144, 0x0148, 0x0146, 0x00f1,
+ 0x00f3, 0x00f2, 0x00f6, 0x00f4, 0x01d2, 0x0151, 0x014d, 0x00f5,
+ 0x0155, 0x0159, 0x0157, 0x015b, 0x015d, 0x0161, 0x015f, 0x0165,
+ 0x0163, 0x00fa, 0x00f9, 0x00fc, 0x00fb, 0x016d, 0x01d4, 0x0171,
+ 0x016b, 0x0173, 0x016f, 0x0169, 0x01d8, 0x01dc, 0x01da, 0x01d6,
+ 0x0175, 0x00fd, 0x00ff, 0x0177, 0x017a, 0x017e, 0x017c,
+};
+static const unsigned short jisx0212_2uni_page30[5801] = {
+ /* 0x30 */
+ 0x4e02, 0x4e04, 0x4e05, 0x4e0c, 0x4e12, 0x4e1f, 0x4e23, 0x4e24,
+ 0x4e28, 0x4e2b, 0x4e2e, 0x4e2f, 0x4e30, 0x4e35, 0x4e40, 0x4e41,
+ 0x4e44, 0x4e47, 0x4e51, 0x4e5a, 0x4e5c, 0x4e63, 0x4e68, 0x4e69,
+ 0x4e74, 0x4e75, 0x4e79, 0x4e7f, 0x4e8d, 0x4e96, 0x4e97, 0x4e9d,
+ 0x4eaf, 0x4eb9, 0x4ec3, 0x4ed0, 0x4eda, 0x4edb, 0x4ee0, 0x4ee1,
+ 0x4ee2, 0x4ee8, 0x4eef, 0x4ef1, 0x4ef3, 0x4ef5, 0x4efd, 0x4efe,
+ 0x4eff, 0x4f00, 0x4f02, 0x4f03, 0x4f08, 0x4f0b, 0x4f0c, 0x4f12,
+ 0x4f15, 0x4f16, 0x4f17, 0x4f19, 0x4f2e, 0x4f31, 0x4f60, 0x4f33,
+ 0x4f35, 0x4f37, 0x4f39, 0x4f3b, 0x4f3e, 0x4f40, 0x4f42, 0x4f48,
+ 0x4f49, 0x4f4b, 0x4f4c, 0x4f52, 0x4f54, 0x4f56, 0x4f58, 0x4f5f,
+ 0x4f63, 0x4f6a, 0x4f6c, 0x4f6e, 0x4f71, 0x4f77, 0x4f78, 0x4f79,
+ 0x4f7a, 0x4f7d, 0x4f7e, 0x4f81, 0x4f82, 0x4f84,
+ /* 0x31 */
+ 0x4f85, 0x4f89, 0x4f8a, 0x4f8c, 0x4f8e, 0x4f90, 0x4f92, 0x4f93,
+ 0x4f94, 0x4f97, 0x4f99, 0x4f9a, 0x4f9e, 0x4f9f, 0x4fb2, 0x4fb7,
+ 0x4fb9, 0x4fbb, 0x4fbc, 0x4fbd, 0x4fbe, 0x4fc0, 0x4fc1, 0x4fc5,
+ 0x4fc6, 0x4fc8, 0x4fc9, 0x4fcb, 0x4fcc, 0x4fcd, 0x4fcf, 0x4fd2,
+ 0x4fdc, 0x4fe0, 0x4fe2, 0x4ff0, 0x4ff2, 0x4ffc, 0x4ffd, 0x4fff,
+ 0x5000, 0x5001, 0x5004, 0x5007, 0x500a, 0x500c, 0x500e, 0x5010,
+ 0x5013, 0x5017, 0x5018, 0x501b, 0x501c, 0x501d, 0x501e, 0x5022,
+ 0x5027, 0x502e, 0x5030, 0x5032, 0x5033, 0x5035, 0x5040, 0x5041,
+ 0x5042, 0x5045, 0x5046, 0x504a, 0x504c, 0x504e, 0x5051, 0x5052,
+ 0x5053, 0x5057, 0x5059, 0x505f, 0x5060, 0x5062, 0x5063, 0x5066,
+ 0x5067, 0x506a, 0x506d, 0x5070, 0x5071, 0x503b, 0x5081, 0x5083,
+ 0x5084, 0x5086, 0x508a, 0x508e, 0x508f, 0x5090,
+ /* 0x32 */
+ 0x5092, 0x5093, 0x5094, 0x5096, 0x509b, 0x509c, 0x509e, 0x509f,
+ 0x50a0, 0x50a1, 0x50a2, 0x50aa, 0x50af, 0x50b0, 0x50b9, 0x50ba,
+ 0x50bd, 0x50c0, 0x50c3, 0x50c4, 0x50c7, 0x50cc, 0x50ce, 0x50d0,
+ 0x50d3, 0x50d4, 0x50d8, 0x50dc, 0x50dd, 0x50df, 0x50e2, 0x50e4,
+ 0x50e6, 0x50e8, 0x50e9, 0x50ef, 0x50f1, 0x50f6, 0x50fa, 0x50fe,
+ 0x5103, 0x5106, 0x5107, 0x5108, 0x510b, 0x510c, 0x510d, 0x510e,
+ 0x50f2, 0x5110, 0x5117, 0x5119, 0x511b, 0x511c, 0x511d, 0x511e,
+ 0x5123, 0x5127, 0x5128, 0x512c, 0x512d, 0x512f, 0x5131, 0x5133,
+ 0x5134, 0x5135, 0x5138, 0x5139, 0x5142, 0x514a, 0x514f, 0x5153,
+ 0x5155, 0x5157, 0x5158, 0x515f, 0x5164, 0x5166, 0x517e, 0x5183,
+ 0x5184, 0x518b, 0x518e, 0x5198, 0x519d, 0x51a1, 0x51a3, 0x51ad,
+ 0x51b8, 0x51ba, 0x51bc, 0x51be, 0x51bf, 0x51c2,
+ /* 0x33 */
+ 0x51c8, 0x51cf, 0x51d1, 0x51d2, 0x51d3, 0x51d5, 0x51d8, 0x51de,
+ 0x51e2, 0x51e5, 0x51ee, 0x51f2, 0x51f3, 0x51f4, 0x51f7, 0x5201,
+ 0x5202, 0x5205, 0x5212, 0x5213, 0x5215, 0x5216, 0x5218, 0x5222,
+ 0x5228, 0x5231, 0x5232, 0x5235, 0x523c, 0x5245, 0x5249, 0x5255,
+ 0x5257, 0x5258, 0x525a, 0x525c, 0x525f, 0x5260, 0x5261, 0x5266,
+ 0x526e, 0x5277, 0x5278, 0x5279, 0x5280, 0x5282, 0x5285, 0x528a,
+ 0x528c, 0x5293, 0x5295, 0x5296, 0x5297, 0x5298, 0x529a, 0x529c,
+ 0x52a4, 0x52a5, 0x52a6, 0x52a7, 0x52af, 0x52b0, 0x52b6, 0x52b7,
+ 0x52b8, 0x52ba, 0x52bb, 0x52bd, 0x52c0, 0x52c4, 0x52c6, 0x52c8,
+ 0x52cc, 0x52cf, 0x52d1, 0x52d4, 0x52d6, 0x52db, 0x52dc, 0x52e1,
+ 0x52e5, 0x52e8, 0x52e9, 0x52ea, 0x52ec, 0x52f0, 0x52f1, 0x52f4,
+ 0x52f6, 0x52f7, 0x5300, 0x5303, 0x530a, 0x530b,
+ /* 0x34 */
+ 0x530c, 0x5311, 0x5313, 0x5318, 0x531b, 0x531c, 0x531e, 0x531f,
+ 0x5325, 0x5327, 0x5328, 0x5329, 0x532b, 0x532c, 0x532d, 0x5330,
+ 0x5332, 0x5335, 0x533c, 0x533d, 0x533e, 0x5342, 0x534c, 0x534b,
+ 0x5359, 0x535b, 0x5361, 0x5363, 0x5365, 0x536c, 0x536d, 0x5372,
+ 0x5379, 0x537e, 0x5383, 0x5387, 0x5388, 0x538e, 0x5393, 0x5394,
+ 0x5399, 0x539d, 0x53a1, 0x53a4, 0x53aa, 0x53ab, 0x53af, 0x53b2,
+ 0x53b4, 0x53b5, 0x53b7, 0x53b8, 0x53ba, 0x53bd, 0x53c0, 0x53c5,
+ 0x53cf, 0x53d2, 0x53d3, 0x53d5, 0x53da, 0x53dd, 0x53de, 0x53e0,
+ 0x53e6, 0x53e7, 0x53f5, 0x5402, 0x5413, 0x541a, 0x5421, 0x5427,
+ 0x5428, 0x542a, 0x542f, 0x5431, 0x5434, 0x5435, 0x5443, 0x5444,
+ 0x5447, 0x544d, 0x544f, 0x545e, 0x5462, 0x5464, 0x5466, 0x5467,
+ 0x5469, 0x546b, 0x546d, 0x546e, 0x5474, 0x547f,
+ /* 0x35 */
+ 0x5481, 0x5483, 0x5485, 0x5488, 0x5489, 0x548d, 0x5491, 0x5495,
+ 0x5496, 0x549c, 0x549f, 0x54a1, 0x54a6, 0x54a7, 0x54a9, 0x54aa,
+ 0x54ad, 0x54ae, 0x54b1, 0x54b7, 0x54b9, 0x54ba, 0x54bb, 0x54bf,
+ 0x54c6, 0x54ca, 0x54cd, 0x54ce, 0x54e0, 0x54ea, 0x54ec, 0x54ef,
+ 0x54f6, 0x54fc, 0x54fe, 0x54ff, 0x5500, 0x5501, 0x5505, 0x5508,
+ 0x5509, 0x550c, 0x550d, 0x550e, 0x5515, 0x552a, 0x552b, 0x5532,
+ 0x5535, 0x5536, 0x553b, 0x553c, 0x553d, 0x5541, 0x5547, 0x5549,
+ 0x554a, 0x554d, 0x5550, 0x5551, 0x5558, 0x555a, 0x555b, 0x555e,
+ 0x5560, 0x5561, 0x5564, 0x5566, 0x557f, 0x5581, 0x5582, 0x5586,
+ 0x5588, 0x558e, 0x558f, 0x5591, 0x5592, 0x5593, 0x5594, 0x5597,
+ 0x55a3, 0x55a4, 0x55ad, 0x55b2, 0x55bf, 0x55c1, 0x55c3, 0x55c6,
+ 0x55c9, 0x55cb, 0x55cc, 0x55ce, 0x55d1, 0x55d2,
+ /* 0x36 */
+ 0x55d3, 0x55d7, 0x55d8, 0x55db, 0x55de, 0x55e2, 0x55e9, 0x55f6,
+ 0x55ff, 0x5605, 0x5608, 0x560a, 0x560d, 0x560e, 0x560f, 0x5610,
+ 0x5611, 0x5612, 0x5619, 0x562c, 0x5630, 0x5633, 0x5635, 0x5637,
+ 0x5639, 0x563b, 0x563c, 0x563d, 0x563f, 0x5640, 0x5641, 0x5643,
+ 0x5644, 0x5646, 0x5649, 0x564b, 0x564d, 0x564f, 0x5654, 0x565e,
+ 0x5660, 0x5661, 0x5662, 0x5663, 0x5666, 0x5669, 0x566d, 0x566f,
+ 0x5671, 0x5672, 0x5675, 0x5684, 0x5685, 0x5688, 0x568b, 0x568c,
+ 0x5695, 0x5699, 0x569a, 0x569d, 0x569e, 0x569f, 0x56a6, 0x56a7,
+ 0x56a8, 0x56a9, 0x56ab, 0x56ac, 0x56ad, 0x56b1, 0x56b3, 0x56b7,
+ 0x56be, 0x56c5, 0x56c9, 0x56ca, 0x56cb, 0x56cf, 0x56d0, 0x56cc,
+ 0x56cd, 0x56d9, 0x56dc, 0x56dd, 0x56df, 0x56e1, 0x56e4, 0x56e5,
+ 0x56e6, 0x56e7, 0x56e8, 0x56f1, 0x56eb, 0x56ed,
+ /* 0x37 */
+ 0x56f6, 0x56f7, 0x5701, 0x5702, 0x5707, 0x570a, 0x570c, 0x5711,
+ 0x5715, 0x571a, 0x571b, 0x571d, 0x5720, 0x5722, 0x5723, 0x5724,
+ 0x5725, 0x5729, 0x572a, 0x572c, 0x572e, 0x572f, 0x5733, 0x5734,
+ 0x573d, 0x573e, 0x573f, 0x5745, 0x5746, 0x574c, 0x574d, 0x5752,
+ 0x5762, 0x5765, 0x5767, 0x5768, 0x576b, 0x576d, 0x576e, 0x576f,
+ 0x5770, 0x5771, 0x5773, 0x5774, 0x5775, 0x5777, 0x5779, 0x577a,
+ 0x577b, 0x577c, 0x577e, 0x5781, 0x5783, 0x578c, 0x5794, 0x5797,
+ 0x5799, 0x579a, 0x579c, 0x579d, 0x579e, 0x579f, 0x57a1, 0x5795,
+ 0x57a7, 0x57a8, 0x57a9, 0x57ac, 0x57b8, 0x57bd, 0x57c7, 0x57c8,
+ 0x57cc, 0x57cf, 0x57d5, 0x57dd, 0x57de, 0x57e4, 0x57e6, 0x57e7,
+ 0x57e9, 0x57ed, 0x57f0, 0x57f5, 0x57f6, 0x57f8, 0x57fd, 0x57fe,
+ 0x57ff, 0x5803, 0x5804, 0x5808, 0x5809, 0x57e1,
+ /* 0x38 */
+ 0x580c, 0x580d, 0x581b, 0x581e, 0x581f, 0x5820, 0x5826, 0x5827,
+ 0x582d, 0x5832, 0x5839, 0x583f, 0x5849, 0x584c, 0x584d, 0x584f,
+ 0x5850, 0x5855, 0x585f, 0x5861, 0x5864, 0x5867, 0x5868, 0x5878,
+ 0x587c, 0x587f, 0x5880, 0x5881, 0x5887, 0x5888, 0x5889, 0x588a,
+ 0x588c, 0x588d, 0x588f, 0x5890, 0x5894, 0x5896, 0x589d, 0x58a0,
+ 0x58a1, 0x58a2, 0x58a6, 0x58a9, 0x58b1, 0x58b2, 0x58c4, 0x58bc,
+ 0x58c2, 0x58c8, 0x58cd, 0x58ce, 0x58d0, 0x58d2, 0x58d4, 0x58d6,
+ 0x58da, 0x58dd, 0x58e1, 0x58e2, 0x58e9, 0x58f3, 0x5905, 0x5906,
+ 0x590b, 0x590c, 0x5912, 0x5913, 0x5914, 0x8641, 0x591d, 0x5921,
+ 0x5923, 0x5924, 0x5928, 0x592f, 0x5930, 0x5933, 0x5935, 0x5936,
+ 0x593f, 0x5943, 0x5946, 0x5952, 0x5953, 0x5959, 0x595b, 0x595d,
+ 0x595e, 0x595f, 0x5961, 0x5963, 0x596b, 0x596d,
+ /* 0x39 */
+ 0x596f, 0x5972, 0x5975, 0x5976, 0x5979, 0x597b, 0x597c, 0x598b,
+ 0x598c, 0x598e, 0x5992, 0x5995, 0x5997, 0x599f, 0x59a4, 0x59a7,
+ 0x59ad, 0x59ae, 0x59af, 0x59b0, 0x59b3, 0x59b7, 0x59ba, 0x59bc,
+ 0x59c1, 0x59c3, 0x59c4, 0x59c8, 0x59ca, 0x59cd, 0x59d2, 0x59dd,
+ 0x59de, 0x59df, 0x59e3, 0x59e4, 0x59e7, 0x59ee, 0x59ef, 0x59f1,
+ 0x59f2, 0x59f4, 0x59f7, 0x5a00, 0x5a04, 0x5a0c, 0x5a0d, 0x5a0e,
+ 0x5a12, 0x5a13, 0x5a1e, 0x5a23, 0x5a24, 0x5a27, 0x5a28, 0x5a2a,
+ 0x5a2d, 0x5a30, 0x5a44, 0x5a45, 0x5a47, 0x5a48, 0x5a4c, 0x5a50,
+ 0x5a55, 0x5a5e, 0x5a63, 0x5a65, 0x5a67, 0x5a6d, 0x5a77, 0x5a7a,
+ 0x5a7b, 0x5a7e, 0x5a8b, 0x5a90, 0x5a93, 0x5a96, 0x5a99, 0x5a9c,
+ 0x5a9e, 0x5a9f, 0x5aa0, 0x5aa2, 0x5aa7, 0x5aac, 0x5ab1, 0x5ab2,
+ 0x5ab3, 0x5ab5, 0x5ab8, 0x5aba, 0x5abb, 0x5abf,
+ /* 0x3a */
+ 0x5ac4, 0x5ac6, 0x5ac8, 0x5acf, 0x5ada, 0x5adc, 0x5ae0, 0x5ae5,
+ 0x5aea, 0x5aee, 0x5af5, 0x5af6, 0x5afd, 0x5b00, 0x5b01, 0x5b08,
+ 0x5b17, 0x5b34, 0x5b19, 0x5b1b, 0x5b1d, 0x5b21, 0x5b25, 0x5b2d,
+ 0x5b38, 0x5b41, 0x5b4b, 0x5b4c, 0x5b52, 0x5b56, 0x5b5e, 0x5b68,
+ 0x5b6e, 0x5b6f, 0x5b7c, 0x5b7d, 0x5b7e, 0x5b7f, 0x5b81, 0x5b84,
+ 0x5b86, 0x5b8a, 0x5b8e, 0x5b90, 0x5b91, 0x5b93, 0x5b94, 0x5b96,
+ 0x5ba8, 0x5ba9, 0x5bac, 0x5bad, 0x5baf, 0x5bb1, 0x5bb2, 0x5bb7,
+ 0x5bba, 0x5bbc, 0x5bc0, 0x5bc1, 0x5bcd, 0x5bcf, 0x5bd6, 0x5bd7,
+ 0x5bd8, 0x5bd9, 0x5bda, 0x5be0, 0x5bef, 0x5bf1, 0x5bf4, 0x5bfd,
+ 0x5c0c, 0x5c17, 0x5c1e, 0x5c1f, 0x5c23, 0x5c26, 0x5c29, 0x5c2b,
+ 0x5c2c, 0x5c2e, 0x5c30, 0x5c32, 0x5c35, 0x5c36, 0x5c59, 0x5c5a,
+ 0x5c5c, 0x5c62, 0x5c63, 0x5c67, 0x5c68, 0x5c69,
+ /* 0x3b */
+ 0x5c6d, 0x5c70, 0x5c74, 0x5c75, 0x5c7a, 0x5c7b, 0x5c7c, 0x5c7d,
+ 0x5c87, 0x5c88, 0x5c8a, 0x5c8f, 0x5c92, 0x5c9d, 0x5c9f, 0x5ca0,
+ 0x5ca2, 0x5ca3, 0x5ca6, 0x5caa, 0x5cb2, 0x5cb4, 0x5cb5, 0x5cba,
+ 0x5cc9, 0x5ccb, 0x5cd2, 0x5cdd, 0x5cd7, 0x5cee, 0x5cf1, 0x5cf2,
+ 0x5cf4, 0x5d01, 0x5d06, 0x5d0d, 0x5d12, 0x5d2b, 0x5d23, 0x5d24,
+ 0x5d26, 0x5d27, 0x5d31, 0x5d34, 0x5d39, 0x5d3d, 0x5d3f, 0x5d42,
+ 0x5d43, 0x5d46, 0x5d48, 0x5d55, 0x5d51, 0x5d59, 0x5d4a, 0x5d5f,
+ 0x5d60, 0x5d61, 0x5d62, 0x5d64, 0x5d6a, 0x5d6d, 0x5d70, 0x5d79,
+ 0x5d7a, 0x5d7e, 0x5d7f, 0x5d81, 0x5d83, 0x5d88, 0x5d8a, 0x5d92,
+ 0x5d93, 0x5d94, 0x5d95, 0x5d99, 0x5d9b, 0x5d9f, 0x5da0, 0x5da7,
+ 0x5dab, 0x5db0, 0x5db4, 0x5db8, 0x5db9, 0x5dc3, 0x5dc7, 0x5dcb,
+ 0x5dd0, 0x5dce, 0x5dd8, 0x5dd9, 0x5de0, 0x5de4,
+ /* 0x3c */
+ 0x5de9, 0x5df8, 0x5df9, 0x5e00, 0x5e07, 0x5e0d, 0x5e12, 0x5e14,
+ 0x5e15, 0x5e18, 0x5e1f, 0x5e20, 0x5e2e, 0x5e28, 0x5e32, 0x5e35,
+ 0x5e3e, 0x5e4b, 0x5e50, 0x5e49, 0x5e51, 0x5e56, 0x5e58, 0x5e5b,
+ 0x5e5c, 0x5e5e, 0x5e68, 0x5e6a, 0x5e6b, 0x5e6c, 0x5e6d, 0x5e6e,
+ 0x5e70, 0x5e80, 0x5e8b, 0x5e8e, 0x5ea2, 0x5ea4, 0x5ea5, 0x5ea8,
+ 0x5eaa, 0x5eac, 0x5eb1, 0x5eb3, 0x5ebd, 0x5ebe, 0x5ebf, 0x5ec6,
+ 0x5ecc, 0x5ecb, 0x5ece, 0x5ed1, 0x5ed2, 0x5ed4, 0x5ed5, 0x5edc,
+ 0x5ede, 0x5ee5, 0x5eeb, 0x5f02, 0x5f06, 0x5f07, 0x5f08, 0x5f0e,
+ 0x5f19, 0x5f1c, 0x5f1d, 0x5f21, 0x5f22, 0x5f23, 0x5f24, 0x5f28,
+ 0x5f2b, 0x5f2c, 0x5f2e, 0x5f30, 0x5f34, 0x5f36, 0x5f3b, 0x5f3d,
+ 0x5f3f, 0x5f40, 0x5f44, 0x5f45, 0x5f47, 0x5f4d, 0x5f50, 0x5f54,
+ 0x5f58, 0x5f5b, 0x5f60, 0x5f63, 0x5f64, 0x5f67,
+ /* 0x3d */
+ 0x5f6f, 0x5f72, 0x5f74, 0x5f75, 0x5f78, 0x5f7a, 0x5f7d, 0x5f7e,
+ 0x5f89, 0x5f8d, 0x5f8f, 0x5f96, 0x5f9c, 0x5f9d, 0x5fa2, 0x5fa7,
+ 0x5fab, 0x5fa4, 0x5fac, 0x5faf, 0x5fb0, 0x5fb1, 0x5fb8, 0x5fc4,
+ 0x5fc7, 0x5fc8, 0x5fc9, 0x5fcb, 0x5fd0, 0x5fd1, 0x5fd2, 0x5fd3,
+ 0x5fd4, 0x5fde, 0x5fe1, 0x5fe2, 0x5fe8, 0x5fe9, 0x5fea, 0x5fec,
+ 0x5fed, 0x5fee, 0x5fef, 0x5ff2, 0x5ff3, 0x5ff6, 0x5ffa, 0x5ffc,
+ 0x6007, 0x600a, 0x600d, 0x6013, 0x6014, 0x6017, 0x6018, 0x601a,
+ 0x601f, 0x6024, 0x602d, 0x6033, 0x6035, 0x6040, 0x6047, 0x6048,
+ 0x6049, 0x604c, 0x6051, 0x6054, 0x6056, 0x6057, 0x605d, 0x6061,
+ 0x6067, 0x6071, 0x607e, 0x607f, 0x6082, 0x6086, 0x6088, 0x608a,
+ 0x608e, 0x6091, 0x6093, 0x6095, 0x6098, 0x609d, 0x609e, 0x60a2,
+ 0x60a4, 0x60a5, 0x60a8, 0x60b0, 0x60b1, 0x60b7,
+ /* 0x3e */
+ 0x60bb, 0x60be, 0x60c2, 0x60c4, 0x60c8, 0x60c9, 0x60ca, 0x60cb,
+ 0x60ce, 0x60cf, 0x60d4, 0x60d5, 0x60d9, 0x60db, 0x60dd, 0x60de,
+ 0x60e2, 0x60e5, 0x60f2, 0x60f5, 0x60f8, 0x60fc, 0x60fd, 0x6102,
+ 0x6107, 0x610a, 0x610c, 0x6110, 0x6111, 0x6112, 0x6113, 0x6114,
+ 0x6116, 0x6117, 0x6119, 0x611c, 0x611e, 0x6122, 0x612a, 0x612b,
+ 0x6130, 0x6131, 0x6135, 0x6136, 0x6137, 0x6139, 0x6141, 0x6145,
+ 0x6146, 0x6149, 0x615e, 0x6160, 0x616c, 0x6172, 0x6178, 0x617b,
+ 0x617c, 0x617f, 0x6180, 0x6181, 0x6183, 0x6184, 0x618b, 0x618d,
+ 0x6192, 0x6193, 0x6197, 0x6198, 0x619c, 0x619d, 0x619f, 0x61a0,
+ 0x61a5, 0x61a8, 0x61aa, 0x61ad, 0x61b8, 0x61b9, 0x61bc, 0x61c0,
+ 0x61c1, 0x61c2, 0x61ce, 0x61cf, 0x61d5, 0x61dc, 0x61dd, 0x61de,
+ 0x61df, 0x61e1, 0x61e2, 0x61e7, 0x61e9, 0x61e5,
+ /* 0x3f */
+ 0x61ec, 0x61ed, 0x61ef, 0x6201, 0x6203, 0x6204, 0x6207, 0x6213,
+ 0x6215, 0x621c, 0x6220, 0x6222, 0x6223, 0x6227, 0x6229, 0x622b,
+ 0x6239, 0x623d, 0x6242, 0x6243, 0x6244, 0x6246, 0x624c, 0x6250,
+ 0x6251, 0x6252, 0x6254, 0x6256, 0x625a, 0x625c, 0x6264, 0x626d,
+ 0x626f, 0x6273, 0x627a, 0x627d, 0x628d, 0x628e, 0x628f, 0x6290,
+ 0x62a6, 0x62a8, 0x62b3, 0x62b6, 0x62b7, 0x62ba, 0x62be, 0x62bf,
+ 0x62c4, 0x62ce, 0x62d5, 0x62d6, 0x62da, 0x62ea, 0x62f2, 0x62f4,
+ 0x62fc, 0x62fd, 0x6303, 0x6304, 0x630a, 0x630b, 0x630d, 0x6310,
+ 0x6313, 0x6316, 0x6318, 0x6329, 0x632a, 0x632d, 0x6335, 0x6336,
+ 0x6339, 0x633c, 0x6341, 0x6342, 0x6343, 0x6344, 0x6346, 0x634a,
+ 0x634b, 0x634e, 0x6352, 0x6353, 0x6354, 0x6358, 0x635b, 0x6365,
+ 0x6366, 0x636c, 0x636d, 0x6371, 0x6374, 0x6375,
+ /* 0x40 */
+ 0x6378, 0x637c, 0x637d, 0x637f, 0x6382, 0x6384, 0x6387, 0x638a,
+ 0x6390, 0x6394, 0x6395, 0x6399, 0x639a, 0x639e, 0x63a4, 0x63a6,
+ 0x63ad, 0x63ae, 0x63af, 0x63bd, 0x63c1, 0x63c5, 0x63c8, 0x63ce,
+ 0x63d1, 0x63d3, 0x63d4, 0x63d5, 0x63dc, 0x63e0, 0x63e5, 0x63ea,
+ 0x63ec, 0x63f2, 0x63f3, 0x63f5, 0x63f8, 0x63f9, 0x6409, 0x640a,
+ 0x6410, 0x6412, 0x6414, 0x6418, 0x641e, 0x6420, 0x6422, 0x6424,
+ 0x6425, 0x6429, 0x642a, 0x642f, 0x6430, 0x6435, 0x643d, 0x643f,
+ 0x644b, 0x644f, 0x6451, 0x6452, 0x6453, 0x6454, 0x645a, 0x645b,
+ 0x645c, 0x645d, 0x645f, 0x6460, 0x6461, 0x6463, 0x646d, 0x6473,
+ 0x6474, 0x647b, 0x647d, 0x6485, 0x6487, 0x648f, 0x6490, 0x6491,
+ 0x6498, 0x6499, 0x649b, 0x649d, 0x649f, 0x64a1, 0x64a3, 0x64a6,
+ 0x64a8, 0x64ac, 0x64b3, 0x64bd, 0x64be, 0x64bf,
+ /* 0x41 */
+ 0x64c4, 0x64c9, 0x64ca, 0x64cb, 0x64cc, 0x64ce, 0x64d0, 0x64d1,
+ 0x64d5, 0x64d7, 0x64e4, 0x64e5, 0x64e9, 0x64ea, 0x64ed, 0x64f0,
+ 0x64f5, 0x64f7, 0x64fb, 0x64ff, 0x6501, 0x6504, 0x6508, 0x6509,
+ 0x650a, 0x650f, 0x6513, 0x6514, 0x6516, 0x6519, 0x651b, 0x651e,
+ 0x651f, 0x6522, 0x6526, 0x6529, 0x652e, 0x6531, 0x653a, 0x653c,
+ 0x653d, 0x6543, 0x6547, 0x6549, 0x6550, 0x6552, 0x6554, 0x655f,
+ 0x6560, 0x6567, 0x656b, 0x657a, 0x657d, 0x6581, 0x6585, 0x658a,
+ 0x6592, 0x6595, 0x6598, 0x659d, 0x65a0, 0x65a3, 0x65a6, 0x65ae,
+ 0x65b2, 0x65b3, 0x65b4, 0x65bf, 0x65c2, 0x65c8, 0x65c9, 0x65ce,
+ 0x65d0, 0x65d4, 0x65d6, 0x65d8, 0x65df, 0x65f0, 0x65f2, 0x65f4,
+ 0x65f5, 0x65f9, 0x65fe, 0x65ff, 0x6600, 0x6604, 0x6608, 0x6609,
+ 0x660d, 0x6611, 0x6612, 0x6615, 0x6616, 0x661d,
+ /* 0x42 */
+ 0x661e, 0x6621, 0x6622, 0x6623, 0x6624, 0x6626, 0x6629, 0x662a,
+ 0x662b, 0x662c, 0x662e, 0x6630, 0x6631, 0x6633, 0x6639, 0x6637,
+ 0x6640, 0x6645, 0x6646, 0x664a, 0x664c, 0x6651, 0x664e, 0x6657,
+ 0x6658, 0x6659, 0x665b, 0x665c, 0x6660, 0x6661, 0x66fb, 0x666a,
+ 0x666b, 0x666c, 0x667e, 0x6673, 0x6675, 0x667f, 0x6677, 0x6678,
+ 0x6679, 0x667b, 0x6680, 0x667c, 0x668b, 0x668c, 0x668d, 0x6690,
+ 0x6692, 0x6699, 0x669a, 0x669b, 0x669c, 0x669f, 0x66a0, 0x66a4,
+ 0x66ad, 0x66b1, 0x66b2, 0x66b5, 0x66bb, 0x66bf, 0x66c0, 0x66c2,
+ 0x66c3, 0x66c8, 0x66cc, 0x66ce, 0x66cf, 0x66d4, 0x66db, 0x66df,
+ 0x66e8, 0x66eb, 0x66ec, 0x66ee, 0x66fa, 0x6705, 0x6707, 0x670e,
+ 0x6713, 0x6719, 0x671c, 0x6720, 0x6722, 0x6733, 0x673e, 0x6745,
+ 0x6747, 0x6748, 0x674c, 0x6754, 0x6755, 0x675d,
+ /* 0x43 */
+ 0x6766, 0x676c, 0x676e, 0x6774, 0x6776, 0x677b, 0x6781, 0x6784,
+ 0x678e, 0x678f, 0x6791, 0x6793, 0x6796, 0x6798, 0x6799, 0x679b,
+ 0x67b0, 0x67b1, 0x67b2, 0x67b5, 0x67bb, 0x67bc, 0x67bd, 0x67f9,
+ 0x67c0, 0x67c2, 0x67c3, 0x67c5, 0x67c8, 0x67c9, 0x67d2, 0x67d7,
+ 0x67d9, 0x67dc, 0x67e1, 0x67e6, 0x67f0, 0x67f2, 0x67f6, 0x67f7,
+ 0x6852, 0x6814, 0x6819, 0x681d, 0x681f, 0x6828, 0x6827, 0x682c,
+ 0x682d, 0x682f, 0x6830, 0x6831, 0x6833, 0x683b, 0x683f, 0x6844,
+ 0x6845, 0x684a, 0x684c, 0x6855, 0x6857, 0x6858, 0x685b, 0x686b,
+ 0x686e, 0x686f, 0x6870, 0x6871, 0x6872, 0x6875, 0x6879, 0x687a,
+ 0x687b, 0x687c, 0x6882, 0x6884, 0x6886, 0x6888, 0x6896, 0x6898,
+ 0x689a, 0x689c, 0x68a1, 0x68a3, 0x68a5, 0x68a9, 0x68aa, 0x68ae,
+ 0x68b2, 0x68bb, 0x68c5, 0x68c8, 0x68cc, 0x68cf,
+ /* 0x44 */
+ 0x68d0, 0x68d1, 0x68d3, 0x68d6, 0x68d9, 0x68dc, 0x68dd, 0x68e5,
+ 0x68e8, 0x68ea, 0x68eb, 0x68ec, 0x68ed, 0x68f0, 0x68f1, 0x68f5,
+ 0x68f6, 0x68fb, 0x68fc, 0x68fd, 0x6906, 0x6909, 0x690a, 0x6910,
+ 0x6911, 0x6913, 0x6916, 0x6917, 0x6931, 0x6933, 0x6935, 0x6938,
+ 0x693b, 0x6942, 0x6945, 0x6949, 0x694e, 0x6957, 0x695b, 0x6963,
+ 0x6964, 0x6965, 0x6966, 0x6968, 0x6969, 0x696c, 0x6970, 0x6971,
+ 0x6972, 0x697a, 0x697b, 0x697f, 0x6980, 0x698d, 0x6992, 0x6996,
+ 0x6998, 0x69a1, 0x69a5, 0x69a6, 0x69a8, 0x69ab, 0x69ad, 0x69af,
+ 0x69b7, 0x69b8, 0x69ba, 0x69bc, 0x69c5, 0x69c8, 0x69d1, 0x69d6,
+ 0x69d7, 0x69e2, 0x69e5, 0x69ee, 0x69ef, 0x69f1, 0x69f3, 0x69f5,
+ 0x69fe, 0x6a00, 0x6a01, 0x6a03, 0x6a0f, 0x6a11, 0x6a15, 0x6a1a,
+ 0x6a1d, 0x6a20, 0x6a24, 0x6a28, 0x6a30, 0x6a32,
+ /* 0x45 */
+ 0x6a34, 0x6a37, 0x6a3b, 0x6a3e, 0x6a3f, 0x6a45, 0x6a46, 0x6a49,
+ 0x6a4a, 0x6a4e, 0x6a50, 0x6a51, 0x6a52, 0x6a55, 0x6a56, 0x6a5b,
+ 0x6a64, 0x6a67, 0x6a6a, 0x6a71, 0x6a73, 0x6a7e, 0x6a81, 0x6a83,
+ 0x6a86, 0x6a87, 0x6a89, 0x6a8b, 0x6a91, 0x6a9b, 0x6a9d, 0x6a9e,
+ 0x6a9f, 0x6aa5, 0x6aab, 0x6aaf, 0x6ab0, 0x6ab1, 0x6ab4, 0x6abd,
+ 0x6abe, 0x6abf, 0x6ac6, 0x6ac9, 0x6ac8, 0x6acc, 0x6ad0, 0x6ad4,
+ 0x6ad5, 0x6ad6, 0x6adc, 0x6add, 0x6ae4, 0x6ae7, 0x6aec, 0x6af0,
+ 0x6af1, 0x6af2, 0x6afc, 0x6afd, 0x6b02, 0x6b03, 0x6b06, 0x6b07,
+ 0x6b09, 0x6b0f, 0x6b10, 0x6b11, 0x6b17, 0x6b1b, 0x6b1e, 0x6b24,
+ 0x6b28, 0x6b2b, 0x6b2c, 0x6b2f, 0x6b35, 0x6b36, 0x6b3b, 0x6b3f,
+ 0x6b46, 0x6b4a, 0x6b4d, 0x6b52, 0x6b56, 0x6b58, 0x6b5d, 0x6b60,
+ 0x6b67, 0x6b6b, 0x6b6e, 0x6b70, 0x6b75, 0x6b7d,
+ /* 0x46 */
+ 0x6b7e, 0x6b82, 0x6b85, 0x6b97, 0x6b9b, 0x6b9f, 0x6ba0, 0x6ba2,
+ 0x6ba3, 0x6ba8, 0x6ba9, 0x6bac, 0x6bad, 0x6bae, 0x6bb0, 0x6bb8,
+ 0x6bb9, 0x6bbd, 0x6bbe, 0x6bc3, 0x6bc4, 0x6bc9, 0x6bcc, 0x6bd6,
+ 0x6bda, 0x6be1, 0x6be3, 0x6be6, 0x6be7, 0x6bee, 0x6bf1, 0x6bf7,
+ 0x6bf9, 0x6bff, 0x6c02, 0x6c04, 0x6c05, 0x6c09, 0x6c0d, 0x6c0e,
+ 0x6c10, 0x6c12, 0x6c19, 0x6c1f, 0x6c26, 0x6c27, 0x6c28, 0x6c2c,
+ 0x6c2e, 0x6c33, 0x6c35, 0x6c36, 0x6c3a, 0x6c3b, 0x6c3f, 0x6c4a,
+ 0x6c4b, 0x6c4d, 0x6c4f, 0x6c52, 0x6c54, 0x6c59, 0x6c5b, 0x6c5c,
+ 0x6c6b, 0x6c6d, 0x6c6f, 0x6c74, 0x6c76, 0x6c78, 0x6c79, 0x6c7b,
+ 0x6c85, 0x6c86, 0x6c87, 0x6c89, 0x6c94, 0x6c95, 0x6c97, 0x6c98,
+ 0x6c9c, 0x6c9f, 0x6cb0, 0x6cb2, 0x6cb4, 0x6cc2, 0x6cc6, 0x6ccd,
+ 0x6ccf, 0x6cd0, 0x6cd1, 0x6cd2, 0x6cd4, 0x6cd6,
+ /* 0x47 */
+ 0x6cda, 0x6cdc, 0x6ce0, 0x6ce7, 0x6ce9, 0x6ceb, 0x6cec, 0x6cee,
+ 0x6cf2, 0x6cf4, 0x6d04, 0x6d07, 0x6d0a, 0x6d0e, 0x6d0f, 0x6d11,
+ 0x6d13, 0x6d1a, 0x6d26, 0x6d27, 0x6d28, 0x6c67, 0x6d2e, 0x6d2f,
+ 0x6d31, 0x6d39, 0x6d3c, 0x6d3f, 0x6d57, 0x6d5e, 0x6d5f, 0x6d61,
+ 0x6d65, 0x6d67, 0x6d6f, 0x6d70, 0x6d7c, 0x6d82, 0x6d87, 0x6d91,
+ 0x6d92, 0x6d94, 0x6d96, 0x6d97, 0x6d98, 0x6daa, 0x6dac, 0x6db4,
+ 0x6db7, 0x6db9, 0x6dbd, 0x6dbf, 0x6dc4, 0x6dc8, 0x6dca, 0x6dce,
+ 0x6dcf, 0x6dd6, 0x6ddb, 0x6ddd, 0x6ddf, 0x6de0, 0x6de2, 0x6de5,
+ 0x6de9, 0x6def, 0x6df0, 0x6df4, 0x6df6, 0x6dfc, 0x6e00, 0x6e04,
+ 0x6e1e, 0x6e22, 0x6e27, 0x6e32, 0x6e36, 0x6e39, 0x6e3b, 0x6e3c,
+ 0x6e44, 0x6e45, 0x6e48, 0x6e49, 0x6e4b, 0x6e4f, 0x6e51, 0x6e52,
+ 0x6e53, 0x6e54, 0x6e57, 0x6e5c, 0x6e5d, 0x6e5e,
+ /* 0x48 */
+ 0x6e62, 0x6e63, 0x6e68, 0x6e73, 0x6e7b, 0x6e7d, 0x6e8d, 0x6e93,
+ 0x6e99, 0x6ea0, 0x6ea7, 0x6ead, 0x6eae, 0x6eb1, 0x6eb3, 0x6ebb,
+ 0x6ebf, 0x6ec0, 0x6ec1, 0x6ec3, 0x6ec7, 0x6ec8, 0x6eca, 0x6ecd,
+ 0x6ece, 0x6ecf, 0x6eeb, 0x6eed, 0x6eee, 0x6ef9, 0x6efb, 0x6efd,
+ 0x6f04, 0x6f08, 0x6f0a, 0x6f0c, 0x6f0d, 0x6f16, 0x6f18, 0x6f1a,
+ 0x6f1b, 0x6f26, 0x6f29, 0x6f2a, 0x6f2f, 0x6f30, 0x6f33, 0x6f36,
+ 0x6f3b, 0x6f3c, 0x6f2d, 0x6f4f, 0x6f51, 0x6f52, 0x6f53, 0x6f57,
+ 0x6f59, 0x6f5a, 0x6f5d, 0x6f5e, 0x6f61, 0x6f62, 0x6f68, 0x6f6c,
+ 0x6f7d, 0x6f7e, 0x6f83, 0x6f87, 0x6f88, 0x6f8b, 0x6f8c, 0x6f8d,
+ 0x6f90, 0x6f92, 0x6f93, 0x6f94, 0x6f96, 0x6f9a, 0x6f9f, 0x6fa0,
+ 0x6fa5, 0x6fa6, 0x6fa7, 0x6fa8, 0x6fae, 0x6faf, 0x6fb0, 0x6fb5,
+ 0x6fb6, 0x6fbc, 0x6fc5, 0x6fc7, 0x6fc8, 0x6fca,
+ /* 0x49 */
+ 0x6fda, 0x6fde, 0x6fe8, 0x6fe9, 0x6ff0, 0x6ff5, 0x6ff9, 0x6ffc,
+ 0x6ffd, 0x7000, 0x7005, 0x7006, 0x7007, 0x700d, 0x7017, 0x7020,
+ 0x7023, 0x702f, 0x7034, 0x7037, 0x7039, 0x703c, 0x7043, 0x7044,
+ 0x7048, 0x7049, 0x704a, 0x704b, 0x7054, 0x7055, 0x705d, 0x705e,
+ 0x704e, 0x7064, 0x7065, 0x706c, 0x706e, 0x7075, 0x7076, 0x707e,
+ 0x7081, 0x7085, 0x7086, 0x7094, 0x7095, 0x7096, 0x7097, 0x7098,
+ 0x709b, 0x70a4, 0x70ab, 0x70b0, 0x70b1, 0x70b4, 0x70b7, 0x70ca,
+ 0x70d1, 0x70d3, 0x70d4, 0x70d5, 0x70d6, 0x70d8, 0x70dc, 0x70e4,
+ 0x70fa, 0x7103, 0x7104, 0x7105, 0x7106, 0x7107, 0x710b, 0x710c,
+ 0x710f, 0x711e, 0x7120, 0x712b, 0x712d, 0x712f, 0x7130, 0x7131,
+ 0x7138, 0x7141, 0x7145, 0x7146, 0x7147, 0x714a, 0x714b, 0x7150,
+ 0x7152, 0x7157, 0x715a, 0x715c, 0x715e, 0x7160,
+ /* 0x4a */
+ 0x7168, 0x7179, 0x7180, 0x7185, 0x7187, 0x718c, 0x7192, 0x719a,
+ 0x719b, 0x71a0, 0x71a2, 0x71af, 0x71b0, 0x71b2, 0x71b3, 0x71ba,
+ 0x71bf, 0x71c0, 0x71c1, 0x71c4, 0x71cb, 0x71cc, 0x71d3, 0x71d6,
+ 0x71d9, 0x71da, 0x71dc, 0x71f8, 0x71fe, 0x7200, 0x7207, 0x7208,
+ 0x7209, 0x7213, 0x7217, 0x721a, 0x721d, 0x721f, 0x7224, 0x722b,
+ 0x722f, 0x7234, 0x7238, 0x7239, 0x7241, 0x7242, 0x7243, 0x7245,
+ 0x724e, 0x724f, 0x7250, 0x7253, 0x7255, 0x7256, 0x725a, 0x725c,
+ 0x725e, 0x7260, 0x7263, 0x7268, 0x726b, 0x726e, 0x726f, 0x7271,
+ 0x7277, 0x7278, 0x727b, 0x727c, 0x727f, 0x7284, 0x7289, 0x728d,
+ 0x728e, 0x7293, 0x729b, 0x72a8, 0x72ad, 0x72ae, 0x72b1, 0x72b4,
+ 0x72be, 0x72c1, 0x72c7, 0x72c9, 0x72cc, 0x72d5, 0x72d6, 0x72d8,
+ 0x72df, 0x72e5, 0x72f3, 0x72f4, 0x72fa, 0x72fb,
+ /* 0x4b */
+ 0x72fe, 0x7302, 0x7304, 0x7305, 0x7307, 0x730b, 0x730d, 0x7312,
+ 0x7313, 0x7318, 0x7319, 0x731e, 0x7322, 0x7324, 0x7327, 0x7328,
+ 0x732c, 0x7331, 0x7332, 0x7335, 0x733a, 0x733b, 0x733d, 0x7343,
+ 0x734d, 0x7350, 0x7352, 0x7356, 0x7358, 0x735d, 0x735e, 0x735f,
+ 0x7360, 0x7366, 0x7367, 0x7369, 0x736b, 0x736c, 0x736e, 0x736f,
+ 0x7371, 0x7377, 0x7379, 0x737c, 0x7380, 0x7381, 0x7383, 0x7385,
+ 0x7386, 0x738e, 0x7390, 0x7393, 0x7395, 0x7397, 0x7398, 0x739c,
+ 0x739e, 0x739f, 0x73a0, 0x73a2, 0x73a5, 0x73a6, 0x73aa, 0x73ab,
+ 0x73ad, 0x73b5, 0x73b7, 0x73b9, 0x73bc, 0x73bd, 0x73bf, 0x73c5,
+ 0x73c6, 0x73c9, 0x73cb, 0x73cc, 0x73cf, 0x73d2, 0x73d3, 0x73d6,
+ 0x73d9, 0x73dd, 0x73e1, 0x73e3, 0x73e6, 0x73e7, 0x73e9, 0x73f4,
+ 0x73f5, 0x73f7, 0x73f9, 0x73fa, 0x73fb, 0x73fd,
+ /* 0x4c */
+ 0x73ff, 0x7400, 0x7401, 0x7404, 0x7407, 0x740a, 0x7411, 0x741a,
+ 0x741b, 0x7424, 0x7426, 0x7428, 0x7429, 0x742a, 0x742b, 0x742c,
+ 0x742d, 0x742e, 0x742f, 0x7430, 0x7431, 0x7439, 0x7440, 0x7443,
+ 0x7444, 0x7446, 0x7447, 0x744b, 0x744d, 0x7451, 0x7452, 0x7457,
+ 0x745d, 0x7462, 0x7466, 0x7467, 0x7468, 0x746b, 0x746d, 0x746e,
+ 0x7471, 0x7472, 0x7480, 0x7481, 0x7485, 0x7486, 0x7487, 0x7489,
+ 0x748f, 0x7490, 0x7491, 0x7492, 0x7498, 0x7499, 0x749a, 0x749c,
+ 0x749f, 0x74a0, 0x74a1, 0x74a3, 0x74a6, 0x74a8, 0x74a9, 0x74aa,
+ 0x74ab, 0x74ae, 0x74af, 0x74b1, 0x74b2, 0x74b5, 0x74b9, 0x74bb,
+ 0x74bf, 0x74c8, 0x74c9, 0x74cc, 0x74d0, 0x74d3, 0x74d8, 0x74da,
+ 0x74db, 0x74de, 0x74df, 0x74e4, 0x74e8, 0x74ea, 0x74eb, 0x74ef,
+ 0x74f4, 0x74fa, 0x74fb, 0x74fc, 0x74ff, 0x7506,
+ /* 0x4d */
+ 0x7512, 0x7516, 0x7517, 0x7520, 0x7521, 0x7524, 0x7527, 0x7529,
+ 0x752a, 0x752f, 0x7536, 0x7539, 0x753d, 0x753e, 0x753f, 0x7540,
+ 0x7543, 0x7547, 0x7548, 0x754e, 0x7550, 0x7552, 0x7557, 0x755e,
+ 0x755f, 0x7561, 0x756f, 0x7571, 0x7579, 0x757a, 0x757b, 0x757c,
+ 0x757d, 0x757e, 0x7581, 0x7585, 0x7590, 0x7592, 0x7593, 0x7595,
+ 0x7599, 0x759c, 0x75a2, 0x75a4, 0x75b4, 0x75ba, 0x75bf, 0x75c0,
+ 0x75c1, 0x75c4, 0x75c6, 0x75cc, 0x75ce, 0x75cf, 0x75d7, 0x75dc,
+ 0x75df, 0x75e0, 0x75e1, 0x75e4, 0x75e7, 0x75ec, 0x75ee, 0x75ef,
+ 0x75f1, 0x75f9, 0x7600, 0x7602, 0x7603, 0x7604, 0x7607, 0x7608,
+ 0x760a, 0x760c, 0x760f, 0x7612, 0x7613, 0x7615, 0x7616, 0x7619,
+ 0x761b, 0x761c, 0x761d, 0x761e, 0x7623, 0x7625, 0x7626, 0x7629,
+ 0x762d, 0x7632, 0x7633, 0x7635, 0x7638, 0x7639,
+ /* 0x4e */
+ 0x763a, 0x763c, 0x764a, 0x7640, 0x7641, 0x7643, 0x7644, 0x7645,
+ 0x7649, 0x764b, 0x7655, 0x7659, 0x765f, 0x7664, 0x7665, 0x766d,
+ 0x766e, 0x766f, 0x7671, 0x7674, 0x7681, 0x7685, 0x768c, 0x768d,
+ 0x7695, 0x769b, 0x769c, 0x769d, 0x769f, 0x76a0, 0x76a2, 0x76a3,
+ 0x76a4, 0x76a5, 0x76a6, 0x76a7, 0x76a8, 0x76aa, 0x76ad, 0x76bd,
+ 0x76c1, 0x76c5, 0x76c9, 0x76cb, 0x76cc, 0x76ce, 0x76d4, 0x76d9,
+ 0x76e0, 0x76e6, 0x76e8, 0x76ec, 0x76f0, 0x76f1, 0x76f6, 0x76f9,
+ 0x76fc, 0x7700, 0x7706, 0x770a, 0x770e, 0x7712, 0x7714, 0x7715,
+ 0x7717, 0x7719, 0x771a, 0x771c, 0x7722, 0x7728, 0x772d, 0x772e,
+ 0x772f, 0x7734, 0x7735, 0x7736, 0x7739, 0x773d, 0x773e, 0x7742,
+ 0x7745, 0x7746, 0x774a, 0x774d, 0x774e, 0x774f, 0x7752, 0x7756,
+ 0x7757, 0x775c, 0x775e, 0x775f, 0x7760, 0x7762,
+ /* 0x4f */
+ 0x7764, 0x7767, 0x776a, 0x776c, 0x7770, 0x7772, 0x7773, 0x7774,
+ 0x777a, 0x777d, 0x7780, 0x7784, 0x778c, 0x778d, 0x7794, 0x7795,
+ 0x7796, 0x779a, 0x779f, 0x77a2, 0x77a7, 0x77aa, 0x77ae, 0x77af,
+ 0x77b1, 0x77b5, 0x77be, 0x77c3, 0x77c9, 0x77d1, 0x77d2, 0x77d5,
+ 0x77d9, 0x77de, 0x77df, 0x77e0, 0x77e4, 0x77e6, 0x77ea, 0x77ec,
+ 0x77f0, 0x77f1, 0x77f4, 0x77f8, 0x77fb, 0x7805, 0x7806, 0x7809,
+ 0x780d, 0x780e, 0x7811, 0x781d, 0x7821, 0x7822, 0x7823, 0x782d,
+ 0x782e, 0x7830, 0x7835, 0x7837, 0x7843, 0x7844, 0x7847, 0x7848,
+ 0x784c, 0x784e, 0x7852, 0x785c, 0x785e, 0x7860, 0x7861, 0x7863,
+ 0x7864, 0x7868, 0x786a, 0x786e, 0x787a, 0x787e, 0x788a, 0x788f,
+ 0x7894, 0x7898, 0x78a1, 0x789d, 0x789e, 0x789f, 0x78a4, 0x78a8,
+ 0x78ac, 0x78ad, 0x78b0, 0x78b1, 0x78b2, 0x78b3,
+ /* 0x50 */
+ 0x78bb, 0x78bd, 0x78bf, 0x78c7, 0x78c8, 0x78c9, 0x78cc, 0x78ce,
+ 0x78d2, 0x78d3, 0x78d5, 0x78d6, 0x78e4, 0x78db, 0x78df, 0x78e0,
+ 0x78e1, 0x78e6, 0x78ea, 0x78f2, 0x78f3, 0x7900, 0x78f6, 0x78f7,
+ 0x78fa, 0x78fb, 0x78ff, 0x7906, 0x790c, 0x7910, 0x791a, 0x791c,
+ 0x791e, 0x791f, 0x7920, 0x7925, 0x7927, 0x7929, 0x792d, 0x7931,
+ 0x7934, 0x7935, 0x793b, 0x793d, 0x793f, 0x7944, 0x7945, 0x7946,
+ 0x794a, 0x794b, 0x794f, 0x7951, 0x7954, 0x7958, 0x795b, 0x795c,
+ 0x7967, 0x7969, 0x796b, 0x7972, 0x7979, 0x797b, 0x797c, 0x797e,
+ 0x798b, 0x798c, 0x7991, 0x7993, 0x7994, 0x7995, 0x7996, 0x7998,
+ 0x799b, 0x799c, 0x79a1, 0x79a8, 0x79a9, 0x79ab, 0x79af, 0x79b1,
+ 0x79b4, 0x79b8, 0x79bb, 0x79c2, 0x79c4, 0x79c7, 0x79c8, 0x79ca,
+ 0x79cf, 0x79d4, 0x79d6, 0x79da, 0x79dd, 0x79de,
+ /* 0x51 */
+ 0x79e0, 0x79e2, 0x79e5, 0x79ea, 0x79eb, 0x79ed, 0x79f1, 0x79f8,
+ 0x79fc, 0x7a02, 0x7a03, 0x7a07, 0x7a09, 0x7a0a, 0x7a0c, 0x7a11,
+ 0x7a15, 0x7a1b, 0x7a1e, 0x7a21, 0x7a27, 0x7a2b, 0x7a2d, 0x7a2f,
+ 0x7a30, 0x7a34, 0x7a35, 0x7a38, 0x7a39, 0x7a3a, 0x7a44, 0x7a45,
+ 0x7a47, 0x7a48, 0x7a4c, 0x7a55, 0x7a56, 0x7a59, 0x7a5c, 0x7a5d,
+ 0x7a5f, 0x7a60, 0x7a65, 0x7a67, 0x7a6a, 0x7a6d, 0x7a75, 0x7a78,
+ 0x7a7e, 0x7a80, 0x7a82, 0x7a85, 0x7a86, 0x7a8a, 0x7a8b, 0x7a90,
+ 0x7a91, 0x7a94, 0x7a9e, 0x7aa0, 0x7aa3, 0x7aac, 0x7ab3, 0x7ab5,
+ 0x7ab9, 0x7abb, 0x7abc, 0x7ac6, 0x7ac9, 0x7acc, 0x7ace, 0x7ad1,
+ 0x7adb, 0x7ae8, 0x7ae9, 0x7aeb, 0x7aec, 0x7af1, 0x7af4, 0x7afb,
+ 0x7afd, 0x7afe, 0x7b07, 0x7b14, 0x7b1f, 0x7b23, 0x7b27, 0x7b29,
+ 0x7b2a, 0x7b2b, 0x7b2d, 0x7b2e, 0x7b2f, 0x7b30,
+ /* 0x52 */
+ 0x7b31, 0x7b34, 0x7b3d, 0x7b3f, 0x7b40, 0x7b41, 0x7b47, 0x7b4e,
+ 0x7b55, 0x7b60, 0x7b64, 0x7b66, 0x7b69, 0x7b6a, 0x7b6d, 0x7b6f,
+ 0x7b72, 0x7b73, 0x7b77, 0x7b84, 0x7b89, 0x7b8e, 0x7b90, 0x7b91,
+ 0x7b96, 0x7b9b, 0x7b9e, 0x7ba0, 0x7ba5, 0x7bac, 0x7baf, 0x7bb0,
+ 0x7bb2, 0x7bb5, 0x7bb6, 0x7bba, 0x7bbb, 0x7bbc, 0x7bbd, 0x7bc2,
+ 0x7bc5, 0x7bc8, 0x7bca, 0x7bd4, 0x7bd6, 0x7bd7, 0x7bd9, 0x7bda,
+ 0x7bdb, 0x7be8, 0x7bea, 0x7bf2, 0x7bf4, 0x7bf5, 0x7bf8, 0x7bf9,
+ 0x7bfa, 0x7bfc, 0x7bfe, 0x7c01, 0x7c02, 0x7c03, 0x7c04, 0x7c06,
+ 0x7c09, 0x7c0b, 0x7c0c, 0x7c0e, 0x7c0f, 0x7c19, 0x7c1b, 0x7c20,
+ 0x7c25, 0x7c26, 0x7c28, 0x7c2c, 0x7c31, 0x7c33, 0x7c34, 0x7c36,
+ 0x7c39, 0x7c3a, 0x7c46, 0x7c4a, 0x7c55, 0x7c51, 0x7c52, 0x7c53,
+ 0x7c59, 0x7c5a, 0x7c5b, 0x7c5c, 0x7c5d, 0x7c5e,
+ /* 0x53 */
+ 0x7c61, 0x7c63, 0x7c67, 0x7c69, 0x7c6d, 0x7c6e, 0x7c70, 0x7c72,
+ 0x7c79, 0x7c7c, 0x7c7d, 0x7c86, 0x7c87, 0x7c8f, 0x7c94, 0x7c9e,
+ 0x7ca0, 0x7ca6, 0x7cb0, 0x7cb6, 0x7cb7, 0x7cba, 0x7cbb, 0x7cbc,
+ 0x7cbf, 0x7cc4, 0x7cc7, 0x7cc8, 0x7cc9, 0x7ccd, 0x7ccf, 0x7cd3,
+ 0x7cd4, 0x7cd5, 0x7cd7, 0x7cd9, 0x7cda, 0x7cdd, 0x7ce6, 0x7ce9,
+ 0x7ceb, 0x7cf5, 0x7d03, 0x7d07, 0x7d08, 0x7d09, 0x7d0f, 0x7d11,
+ 0x7d12, 0x7d13, 0x7d16, 0x7d1d, 0x7d1e, 0x7d23, 0x7d26, 0x7d2a,
+ 0x7d2d, 0x7d31, 0x7d3c, 0x7d3d, 0x7d3e, 0x7d40, 0x7d41, 0x7d47,
+ 0x7d48, 0x7d4d, 0x7d51, 0x7d53, 0x7d57, 0x7d59, 0x7d5a, 0x7d5c,
+ 0x7d5d, 0x7d65, 0x7d67, 0x7d6a, 0x7d70, 0x7d78, 0x7d7a, 0x7d7b,
+ 0x7d7f, 0x7d81, 0x7d82, 0x7d83, 0x7d85, 0x7d86, 0x7d88, 0x7d8b,
+ 0x7d8c, 0x7d8d, 0x7d91, 0x7d96, 0x7d97, 0x7d9d,
+ /* 0x54 */
+ 0x7d9e, 0x7da6, 0x7da7, 0x7daa, 0x7db3, 0x7db6, 0x7db7, 0x7db9,
+ 0x7dc2, 0x7dc3, 0x7dc4, 0x7dc5, 0x7dc6, 0x7dcc, 0x7dcd, 0x7dce,
+ 0x7dd7, 0x7dd9, 0x7e00, 0x7de2, 0x7de5, 0x7de6, 0x7dea, 0x7deb,
+ 0x7ded, 0x7df1, 0x7df5, 0x7df6, 0x7df9, 0x7dfa, 0x7e08, 0x7e10,
+ 0x7e11, 0x7e15, 0x7e17, 0x7e1c, 0x7e1d, 0x7e20, 0x7e27, 0x7e28,
+ 0x7e2c, 0x7e2d, 0x7e2f, 0x7e33, 0x7e36, 0x7e3f, 0x7e44, 0x7e45,
+ 0x7e47, 0x7e4e, 0x7e50, 0x7e52, 0x7e58, 0x7e5f, 0x7e61, 0x7e62,
+ 0x7e65, 0x7e6b, 0x7e6e, 0x7e6f, 0x7e73, 0x7e78, 0x7e7e, 0x7e81,
+ 0x7e86, 0x7e87, 0x7e8a, 0x7e8d, 0x7e91, 0x7e95, 0x7e98, 0x7e9a,
+ 0x7e9d, 0x7e9e, 0x7f3c, 0x7f3b, 0x7f3d, 0x7f3e, 0x7f3f, 0x7f43,
+ 0x7f44, 0x7f47, 0x7f4f, 0x7f52, 0x7f53, 0x7f5b, 0x7f5c, 0x7f5d,
+ 0x7f61, 0x7f63, 0x7f64, 0x7f65, 0x7f66, 0x7f6d,
+ /* 0x55 */
+ 0x7f71, 0x7f7d, 0x7f7e, 0x7f7f, 0x7f80, 0x7f8b, 0x7f8d, 0x7f8f,
+ 0x7f90, 0x7f91, 0x7f96, 0x7f97, 0x7f9c, 0x7fa1, 0x7fa2, 0x7fa6,
+ 0x7faa, 0x7fad, 0x7fb4, 0x7fbc, 0x7fbf, 0x7fc0, 0x7fc3, 0x7fc8,
+ 0x7fce, 0x7fcf, 0x7fdb, 0x7fdf, 0x7fe3, 0x7fe5, 0x7fe8, 0x7fec,
+ 0x7fee, 0x7fef, 0x7ff2, 0x7ffa, 0x7ffd, 0x7ffe, 0x7fff, 0x8007,
+ 0x8008, 0x800a, 0x800d, 0x800e, 0x800f, 0x8011, 0x8013, 0x8014,
+ 0x8016, 0x801d, 0x801e, 0x801f, 0x8020, 0x8024, 0x8026, 0x802c,
+ 0x802e, 0x8030, 0x8034, 0x8035, 0x8037, 0x8039, 0x803a, 0x803c,
+ 0x803e, 0x8040, 0x8044, 0x8060, 0x8064, 0x8066, 0x806d, 0x8071,
+ 0x8075, 0x8081, 0x8088, 0x808e, 0x809c, 0x809e, 0x80a6, 0x80a7,
+ 0x80ab, 0x80b8, 0x80b9, 0x80c8, 0x80cd, 0x80cf, 0x80d2, 0x80d4,
+ 0x80d5, 0x80d7, 0x80d8, 0x80e0, 0x80ed, 0x80ee,
+ /* 0x56 */
+ 0x80f0, 0x80f2, 0x80f3, 0x80f6, 0x80f9, 0x80fa, 0x80fe, 0x8103,
+ 0x810b, 0x8116, 0x8117, 0x8118, 0x811c, 0x811e, 0x8120, 0x8124,
+ 0x8127, 0x812c, 0x8130, 0x8135, 0x813a, 0x813c, 0x8145, 0x8147,
+ 0x814a, 0x814c, 0x8152, 0x8157, 0x8160, 0x8161, 0x8167, 0x8168,
+ 0x8169, 0x816d, 0x816f, 0x8177, 0x8181, 0x8190, 0x8184, 0x8185,
+ 0x8186, 0x818b, 0x818e, 0x8196, 0x8198, 0x819b, 0x819e, 0x81a2,
+ 0x81ae, 0x81b2, 0x81b4, 0x81bb, 0x81cb, 0x81c3, 0x81c5, 0x81ca,
+ 0x81ce, 0x81cf, 0x81d5, 0x81d7, 0x81db, 0x81dd, 0x81de, 0x81e1,
+ 0x81e4, 0x81eb, 0x81ec, 0x81f0, 0x81f1, 0x81f2, 0x81f5, 0x81f6,
+ 0x81f8, 0x81f9, 0x81fd, 0x81ff, 0x8200, 0x8203, 0x820f, 0x8213,
+ 0x8214, 0x8219, 0x821a, 0x821d, 0x8221, 0x8222, 0x8228, 0x8232,
+ 0x8234, 0x823a, 0x8243, 0x8244, 0x8245, 0x8246,
+ /* 0x57 */
+ 0x824b, 0x824e, 0x824f, 0x8251, 0x8256, 0x825c, 0x8260, 0x8263,
+ 0x8267, 0x826d, 0x8274, 0x827b, 0x827d, 0x827f, 0x8280, 0x8281,
+ 0x8283, 0x8284, 0x8287, 0x8289, 0x828a, 0x828e, 0x8291, 0x8294,
+ 0x8296, 0x8298, 0x829a, 0x829b, 0x82a0, 0x82a1, 0x82a3, 0x82a4,
+ 0x82a7, 0x82a8, 0x82a9, 0x82aa, 0x82ae, 0x82b0, 0x82b2, 0x82b4,
+ 0x82b7, 0x82ba, 0x82bc, 0x82be, 0x82bf, 0x82c6, 0x82d0, 0x82d5,
+ 0x82da, 0x82e0, 0x82e2, 0x82e4, 0x82e8, 0x82ea, 0x82ed, 0x82ef,
+ 0x82f6, 0x82f7, 0x82fd, 0x82fe, 0x8300, 0x8301, 0x8307, 0x8308,
+ 0x830a, 0x830b, 0x8354, 0x831b, 0x831d, 0x831e, 0x831f, 0x8321,
+ 0x8322, 0x832c, 0x832d, 0x832e, 0x8330, 0x8333, 0x8337, 0x833a,
+ 0x833c, 0x833d, 0x8342, 0x8343, 0x8344, 0x8347, 0x834d, 0x834e,
+ 0x8351, 0x8355, 0x8356, 0x8357, 0x8370, 0x8378,
+ /* 0x58 */
+ 0x837d, 0x837f, 0x8380, 0x8382, 0x8384, 0x8386, 0x838d, 0x8392,
+ 0x8394, 0x8395, 0x8398, 0x8399, 0x839b, 0x839c, 0x839d, 0x83a6,
+ 0x83a7, 0x83a9, 0x83ac, 0x83be, 0x83bf, 0x83c0, 0x83c7, 0x83c9,
+ 0x83cf, 0x83d0, 0x83d1, 0x83d4, 0x83dd, 0x8353, 0x83e8, 0x83ea,
+ 0x83f6, 0x83f8, 0x83f9, 0x83fc, 0x8401, 0x8406, 0x840a, 0x840f,
+ 0x8411, 0x8415, 0x8419, 0x83ad, 0x842f, 0x8439, 0x8445, 0x8447,
+ 0x8448, 0x844a, 0x844d, 0x844f, 0x8451, 0x8452, 0x8456, 0x8458,
+ 0x8459, 0x845a, 0x845c, 0x8460, 0x8464, 0x8465, 0x8467, 0x846a,
+ 0x8470, 0x8473, 0x8474, 0x8476, 0x8478, 0x847c, 0x847d, 0x8481,
+ 0x8485, 0x8492, 0x8493, 0x8495, 0x849e, 0x84a6, 0x84a8, 0x84a9,
+ 0x84aa, 0x84af, 0x84b1, 0x84b4, 0x84ba, 0x84bd, 0x84be, 0x84c0,
+ 0x84c2, 0x84c7, 0x84c8, 0x84cc, 0x84cf, 0x84d3,
+ /* 0x59 */
+ 0x84dc, 0x84e7, 0x84ea, 0x84ef, 0x84f0, 0x84f1, 0x84f2, 0x84f7,
+ 0x8532, 0x84fa, 0x84fb, 0x84fd, 0x8502, 0x8503, 0x8507, 0x850c,
+ 0x850e, 0x8510, 0x851c, 0x851e, 0x8522, 0x8523, 0x8524, 0x8525,
+ 0x8527, 0x852a, 0x852b, 0x852f, 0x8533, 0x8534, 0x8536, 0x853f,
+ 0x8546, 0x854f, 0x8550, 0x8551, 0x8552, 0x8553, 0x8556, 0x8559,
+ 0x855c, 0x855d, 0x855e, 0x855f, 0x8560, 0x8561, 0x8562, 0x8564,
+ 0x856b, 0x856f, 0x8579, 0x857a, 0x857b, 0x857d, 0x857f, 0x8581,
+ 0x8585, 0x8586, 0x8589, 0x858b, 0x858c, 0x858f, 0x8593, 0x8598,
+ 0x859d, 0x859f, 0x85a0, 0x85a2, 0x85a5, 0x85a7, 0x85b4, 0x85b6,
+ 0x85b7, 0x85b8, 0x85bc, 0x85bd, 0x85be, 0x85bf, 0x85c2, 0x85c7,
+ 0x85ca, 0x85cb, 0x85ce, 0x85ad, 0x85d8, 0x85da, 0x85df, 0x85e0,
+ 0x85e6, 0x85e8, 0x85ed, 0x85f3, 0x85f6, 0x85fc,
+ /* 0x5a */
+ 0x85ff, 0x8600, 0x8604, 0x8605, 0x860d, 0x860e, 0x8610, 0x8611,
+ 0x8612, 0x8618, 0x8619, 0x861b, 0x861e, 0x8621, 0x8627, 0x8629,
+ 0x8636, 0x8638, 0x863a, 0x863c, 0x863d, 0x8640, 0x8642, 0x8646,
+ 0x8652, 0x8653, 0x8656, 0x8657, 0x8658, 0x8659, 0x865d, 0x8660,
+ 0x8661, 0x8662, 0x8663, 0x8664, 0x8669, 0x866c, 0x866f, 0x8675,
+ 0x8676, 0x8677, 0x867a, 0x868d, 0x8691, 0x8696, 0x8698, 0x869a,
+ 0x869c, 0x86a1, 0x86a6, 0x86a7, 0x86a8, 0x86ad, 0x86b1, 0x86b3,
+ 0x86b4, 0x86b5, 0x86b7, 0x86b8, 0x86b9, 0x86bf, 0x86c0, 0x86c1,
+ 0x86c3, 0x86c5, 0x86d1, 0x86d2, 0x86d5, 0x86d7, 0x86da, 0x86dc,
+ 0x86e0, 0x86e3, 0x86e5, 0x86e7, 0x8688, 0x86fa, 0x86fc, 0x86fd,
+ 0x8704, 0x8705, 0x8707, 0x870b, 0x870e, 0x870f, 0x8710, 0x8713,
+ 0x8714, 0x8719, 0x871e, 0x871f, 0x8721, 0x8723,
+ /* 0x5b */
+ 0x8728, 0x872e, 0x872f, 0x8731, 0x8732, 0x8739, 0x873a, 0x873c,
+ 0x873d, 0x873e, 0x8740, 0x8743, 0x8745, 0x874d, 0x8758, 0x875d,
+ 0x8761, 0x8764, 0x8765, 0x876f, 0x8771, 0x8772, 0x877b, 0x8783,
+ 0x8784, 0x8785, 0x8786, 0x8787, 0x8788, 0x8789, 0x878b, 0x878c,
+ 0x8790, 0x8793, 0x8795, 0x8797, 0x8798, 0x8799, 0x879e, 0x87a0,
+ 0x87a3, 0x87a7, 0x87ac, 0x87ad, 0x87ae, 0x87b1, 0x87b5, 0x87be,
+ 0x87bf, 0x87c1, 0x87c8, 0x87c9, 0x87ca, 0x87ce, 0x87d5, 0x87d6,
+ 0x87d9, 0x87da, 0x87dc, 0x87df, 0x87e2, 0x87e3, 0x87e4, 0x87ea,
+ 0x87eb, 0x87ed, 0x87f1, 0x87f3, 0x87f8, 0x87fa, 0x87ff, 0x8801,
+ 0x8803, 0x8806, 0x8809, 0x880a, 0x880b, 0x8810, 0x8819, 0x8812,
+ 0x8813, 0x8814, 0x8818, 0x881a, 0x881b, 0x881c, 0x881e, 0x881f,
+ 0x8828, 0x882d, 0x882e, 0x8830, 0x8832, 0x8835,
+ /* 0x5c */
+ 0x883a, 0x883c, 0x8841, 0x8843, 0x8845, 0x8848, 0x8849, 0x884a,
+ 0x884b, 0x884e, 0x8851, 0x8855, 0x8856, 0x8858, 0x885a, 0x885c,
+ 0x885f, 0x8860, 0x8864, 0x8869, 0x8871, 0x8879, 0x887b, 0x8880,
+ 0x8898, 0x889a, 0x889b, 0x889c, 0x889f, 0x88a0, 0x88a8, 0x88aa,
+ 0x88ba, 0x88bd, 0x88be, 0x88c0, 0x88ca, 0x88cb, 0x88cc, 0x88cd,
+ 0x88ce, 0x88d1, 0x88d2, 0x88d3, 0x88db, 0x88de, 0x88e7, 0x88ef,
+ 0x88f0, 0x88f1, 0x88f5, 0x88f7, 0x8901, 0x8906, 0x890d, 0x890e,
+ 0x890f, 0x8915, 0x8916, 0x8918, 0x8919, 0x891a, 0x891c, 0x8920,
+ 0x8926, 0x8927, 0x8928, 0x8930, 0x8931, 0x8932, 0x8935, 0x8939,
+ 0x893a, 0x893e, 0x8940, 0x8942, 0x8945, 0x8946, 0x8949, 0x894f,
+ 0x8952, 0x8957, 0x895a, 0x895b, 0x895c, 0x8961, 0x8962, 0x8963,
+ 0x896b, 0x896e, 0x8970, 0x8973, 0x8975, 0x897a,
+ /* 0x5d */
+ 0x897b, 0x897c, 0x897d, 0x8989, 0x898d, 0x8990, 0x8994, 0x8995,
+ 0x899b, 0x899c, 0x899f, 0x89a0, 0x89a5, 0x89b0, 0x89b4, 0x89b5,
+ 0x89b6, 0x89b7, 0x89bc, 0x89d4, 0x89d5, 0x89d6, 0x89d7, 0x89d8,
+ 0x89e5, 0x89e9, 0x89eb, 0x89ed, 0x89f1, 0x89f3, 0x89f6, 0x89f9,
+ 0x89fd, 0x89ff, 0x8a04, 0x8a05, 0x8a07, 0x8a0f, 0x8a11, 0x8a12,
+ 0x8a14, 0x8a15, 0x8a1e, 0x8a20, 0x8a22, 0x8a24, 0x8a26, 0x8a2b,
+ 0x8a2c, 0x8a2f, 0x8a35, 0x8a37, 0x8a3d, 0x8a3e, 0x8a40, 0x8a43,
+ 0x8a45, 0x8a47, 0x8a49, 0x8a4d, 0x8a4e, 0x8a53, 0x8a56, 0x8a57,
+ 0x8a58, 0x8a5c, 0x8a5d, 0x8a61, 0x8a65, 0x8a67, 0x8a75, 0x8a76,
+ 0x8a77, 0x8a79, 0x8a7a, 0x8a7b, 0x8a7e, 0x8a7f, 0x8a80, 0x8a83,
+ 0x8a86, 0x8a8b, 0x8a8f, 0x8a90, 0x8a92, 0x8a96, 0x8a97, 0x8a99,
+ 0x8a9f, 0x8aa7, 0x8aa9, 0x8aae, 0x8aaf, 0x8ab3,
+ /* 0x5e */
+ 0x8ab6, 0x8ab7, 0x8abb, 0x8abe, 0x8ac3, 0x8ac6, 0x8ac8, 0x8ac9,
+ 0x8aca, 0x8ad1, 0x8ad3, 0x8ad4, 0x8ad5, 0x8ad7, 0x8add, 0x8adf,
+ 0x8aec, 0x8af0, 0x8af4, 0x8af5, 0x8af6, 0x8afc, 0x8aff, 0x8b05,
+ 0x8b06, 0x8b0b, 0x8b11, 0x8b1c, 0x8b1e, 0x8b1f, 0x8b0a, 0x8b2d,
+ 0x8b30, 0x8b37, 0x8b3c, 0x8b42, 0x8b43, 0x8b44, 0x8b45, 0x8b46,
+ 0x8b48, 0x8b52, 0x8b53, 0x8b54, 0x8b59, 0x8b4d, 0x8b5e, 0x8b63,
+ 0x8b6d, 0x8b76, 0x8b78, 0x8b79, 0x8b7c, 0x8b7e, 0x8b81, 0x8b84,
+ 0x8b85, 0x8b8b, 0x8b8d, 0x8b8f, 0x8b94, 0x8b95, 0x8b9c, 0x8b9e,
+ 0x8b9f, 0x8c38, 0x8c39, 0x8c3d, 0x8c3e, 0x8c45, 0x8c47, 0x8c49,
+ 0x8c4b, 0x8c4f, 0x8c51, 0x8c53, 0x8c54, 0x8c57, 0x8c58, 0x8c5b,
+ 0x8c5d, 0x8c59, 0x8c63, 0x8c64, 0x8c66, 0x8c68, 0x8c69, 0x8c6d,
+ 0x8c73, 0x8c75, 0x8c76, 0x8c7b, 0x8c7e, 0x8c86,
+ /* 0x5f */
+ 0x8c87, 0x8c8b, 0x8c90, 0x8c92, 0x8c93, 0x8c99, 0x8c9b, 0x8c9c,
+ 0x8ca4, 0x8cb9, 0x8cba, 0x8cc5, 0x8cc6, 0x8cc9, 0x8ccb, 0x8ccf,
+ 0x8cd6, 0x8cd5, 0x8cd9, 0x8cdd, 0x8ce1, 0x8ce8, 0x8cec, 0x8cef,
+ 0x8cf0, 0x8cf2, 0x8cf5, 0x8cf7, 0x8cf8, 0x8cfe, 0x8cff, 0x8d01,
+ 0x8d03, 0x8d09, 0x8d12, 0x8d17, 0x8d1b, 0x8d65, 0x8d69, 0x8d6c,
+ 0x8d6e, 0x8d7f, 0x8d82, 0x8d84, 0x8d88, 0x8d8d, 0x8d90, 0x8d91,
+ 0x8d95, 0x8d9e, 0x8d9f, 0x8da0, 0x8da6, 0x8dab, 0x8dac, 0x8daf,
+ 0x8db2, 0x8db5, 0x8db7, 0x8db9, 0x8dbb, 0x8dc0, 0x8dc5, 0x8dc6,
+ 0x8dc7, 0x8dc8, 0x8dca, 0x8dce, 0x8dd1, 0x8dd4, 0x8dd5, 0x8dd7,
+ 0x8dd9, 0x8de4, 0x8de5, 0x8de7, 0x8dec, 0x8df0, 0x8dbc, 0x8df1,
+ 0x8df2, 0x8df4, 0x8dfd, 0x8e01, 0x8e04, 0x8e05, 0x8e06, 0x8e0b,
+ 0x8e11, 0x8e14, 0x8e16, 0x8e20, 0x8e21, 0x8e22,
+ /* 0x60 */
+ 0x8e23, 0x8e26, 0x8e27, 0x8e31, 0x8e33, 0x8e36, 0x8e37, 0x8e38,
+ 0x8e39, 0x8e3d, 0x8e40, 0x8e41, 0x8e4b, 0x8e4d, 0x8e4e, 0x8e4f,
+ 0x8e54, 0x8e5b, 0x8e5c, 0x8e5d, 0x8e5e, 0x8e61, 0x8e62, 0x8e69,
+ 0x8e6c, 0x8e6d, 0x8e6f, 0x8e70, 0x8e71, 0x8e79, 0x8e7a, 0x8e7b,
+ 0x8e82, 0x8e83, 0x8e89, 0x8e90, 0x8e92, 0x8e95, 0x8e9a, 0x8e9b,
+ 0x8e9d, 0x8e9e, 0x8ea2, 0x8ea7, 0x8ea9, 0x8ead, 0x8eae, 0x8eb3,
+ 0x8eb5, 0x8eba, 0x8ebb, 0x8ec0, 0x8ec1, 0x8ec3, 0x8ec4, 0x8ec7,
+ 0x8ecf, 0x8ed1, 0x8ed4, 0x8edc, 0x8ee8, 0x8eee, 0x8ef0, 0x8ef1,
+ 0x8ef7, 0x8ef9, 0x8efa, 0x8eed, 0x8f00, 0x8f02, 0x8f07, 0x8f08,
+ 0x8f0f, 0x8f10, 0x8f16, 0x8f17, 0x8f18, 0x8f1e, 0x8f20, 0x8f21,
+ 0x8f23, 0x8f25, 0x8f27, 0x8f28, 0x8f2c, 0x8f2d, 0x8f2e, 0x8f34,
+ 0x8f35, 0x8f36, 0x8f37, 0x8f3a, 0x8f40, 0x8f41,
+ /* 0x61 */
+ 0x8f43, 0x8f47, 0x8f4f, 0x8f51, 0x8f52, 0x8f53, 0x8f54, 0x8f55,
+ 0x8f58, 0x8f5d, 0x8f5e, 0x8f65, 0x8f9d, 0x8fa0, 0x8fa1, 0x8fa4,
+ 0x8fa5, 0x8fa6, 0x8fb5, 0x8fb6, 0x8fb8, 0x8fbe, 0x8fc0, 0x8fc1,
+ 0x8fc6, 0x8fca, 0x8fcb, 0x8fcd, 0x8fd0, 0x8fd2, 0x8fd3, 0x8fd5,
+ 0x8fe0, 0x8fe3, 0x8fe4, 0x8fe8, 0x8fee, 0x8ff1, 0x8ff5, 0x8ff6,
+ 0x8ffb, 0x8ffe, 0x9002, 0x9004, 0x9008, 0x900c, 0x9018, 0x901b,
+ 0x9028, 0x9029, 0x902f, 0x902a, 0x902c, 0x902d, 0x9033, 0x9034,
+ 0x9037, 0x903f, 0x9043, 0x9044, 0x904c, 0x905b, 0x905d, 0x9062,
+ 0x9066, 0x9067, 0x906c, 0x9070, 0x9074, 0x9079, 0x9085, 0x9088,
+ 0x908b, 0x908c, 0x908e, 0x9090, 0x9095, 0x9097, 0x9098, 0x9099,
+ 0x909b, 0x90a0, 0x90a1, 0x90a2, 0x90a5, 0x90b0, 0x90b2, 0x90b3,
+ 0x90b4, 0x90b6, 0x90bd, 0x90cc, 0x90be, 0x90c3,
+ /* 0x62 */
+ 0x90c4, 0x90c5, 0x90c7, 0x90c8, 0x90d5, 0x90d7, 0x90d8, 0x90d9,
+ 0x90dc, 0x90dd, 0x90df, 0x90e5, 0x90d2, 0x90f6, 0x90eb, 0x90ef,
+ 0x90f0, 0x90f4, 0x90fe, 0x90ff, 0x9100, 0x9104, 0x9105, 0x9106,
+ 0x9108, 0x910d, 0x9110, 0x9114, 0x9116, 0x9117, 0x9118, 0x911a,
+ 0x911c, 0x911e, 0x9120, 0x9125, 0x9122, 0x9123, 0x9127, 0x9129,
+ 0x912e, 0x912f, 0x9131, 0x9134, 0x9136, 0x9137, 0x9139, 0x913a,
+ 0x913c, 0x913d, 0x9143, 0x9147, 0x9148, 0x914f, 0x9153, 0x9157,
+ 0x9159, 0x915a, 0x915b, 0x9161, 0x9164, 0x9167, 0x916d, 0x9174,
+ 0x9179, 0x917a, 0x917b, 0x9181, 0x9183, 0x9185, 0x9186, 0x918a,
+ 0x918e, 0x9191, 0x9193, 0x9194, 0x9195, 0x9198, 0x919e, 0x91a1,
+ 0x91a6, 0x91a8, 0x91ac, 0x91ad, 0x91ae, 0x91b0, 0x91b1, 0x91b2,
+ 0x91b3, 0x91b6, 0x91bb, 0x91bc, 0x91bd, 0x91bf,
+ /* 0x63 */
+ 0x91c2, 0x91c3, 0x91c5, 0x91d3, 0x91d4, 0x91d7, 0x91d9, 0x91da,
+ 0x91de, 0x91e4, 0x91e5, 0x91e9, 0x91ea, 0x91ec, 0x91ed, 0x91ee,
+ 0x91ef, 0x91f0, 0x91f1, 0x91f7, 0x91f9, 0x91fb, 0x91fd, 0x9200,
+ 0x9201, 0x9204, 0x9205, 0x9206, 0x9207, 0x9209, 0x920a, 0x920c,
+ 0x9210, 0x9212, 0x9213, 0x9216, 0x9218, 0x921c, 0x921d, 0x9223,
+ 0x9224, 0x9225, 0x9226, 0x9228, 0x922e, 0x922f, 0x9230, 0x9233,
+ 0x9235, 0x9236, 0x9238, 0x9239, 0x923a, 0x923c, 0x923e, 0x9240,
+ 0x9242, 0x9243, 0x9246, 0x9247, 0x924a, 0x924d, 0x924e, 0x924f,
+ 0x9251, 0x9258, 0x9259, 0x925c, 0x925d, 0x9260, 0x9261, 0x9265,
+ 0x9267, 0x9268, 0x9269, 0x926e, 0x926f, 0x9270, 0x9275, 0x9276,
+ 0x9277, 0x9278, 0x9279, 0x927b, 0x927c, 0x927d, 0x927f, 0x9288,
+ 0x9289, 0x928a, 0x928d, 0x928e, 0x9292, 0x9297,
+ /* 0x64 */
+ 0x9299, 0x929f, 0x92a0, 0x92a4, 0x92a5, 0x92a7, 0x92a8, 0x92ab,
+ 0x92af, 0x92b2, 0x92b6, 0x92b8, 0x92ba, 0x92bb, 0x92bc, 0x92bd,
+ 0x92bf, 0x92c0, 0x92c1, 0x92c2, 0x92c3, 0x92c5, 0x92c6, 0x92c7,
+ 0x92c8, 0x92cb, 0x92cc, 0x92cd, 0x92ce, 0x92d0, 0x92d3, 0x92d5,
+ 0x92d7, 0x92d8, 0x92d9, 0x92dc, 0x92dd, 0x92df, 0x92e0, 0x92e1,
+ 0x92e3, 0x92e5, 0x92e7, 0x92e8, 0x92ec, 0x92ee, 0x92f0, 0x92f9,
+ 0x92fb, 0x92ff, 0x9300, 0x9302, 0x9308, 0x930d, 0x9311, 0x9314,
+ 0x9315, 0x931c, 0x931d, 0x931e, 0x931f, 0x9321, 0x9324, 0x9325,
+ 0x9327, 0x9329, 0x932a, 0x9333, 0x9334, 0x9336, 0x9337, 0x9347,
+ 0x9348, 0x9349, 0x9350, 0x9351, 0x9352, 0x9355, 0x9357, 0x9358,
+ 0x935a, 0x935e, 0x9364, 0x9365, 0x9367, 0x9369, 0x936a, 0x936d,
+ 0x936f, 0x9370, 0x9371, 0x9373, 0x9374, 0x9376,
+ /* 0x65 */
+ 0x937a, 0x937d, 0x937f, 0x9380, 0x9381, 0x9382, 0x9388, 0x938a,
+ 0x938b, 0x938d, 0x938f, 0x9392, 0x9395, 0x9398, 0x939b, 0x939e,
+ 0x93a1, 0x93a3, 0x93a4, 0x93a6, 0x93a8, 0x93ab, 0x93b4, 0x93b5,
+ 0x93b6, 0x93ba, 0x93a9, 0x93c1, 0x93c4, 0x93c5, 0x93c6, 0x93c7,
+ 0x93c9, 0x93ca, 0x93cb, 0x93cc, 0x93cd, 0x93d3, 0x93d9, 0x93dc,
+ 0x93de, 0x93df, 0x93e2, 0x93e6, 0x93e7, 0x93f9, 0x93f7, 0x93f8,
+ 0x93fa, 0x93fb, 0x93fd, 0x9401, 0x9402, 0x9404, 0x9408, 0x9409,
+ 0x940d, 0x940e, 0x940f, 0x9415, 0x9416, 0x9417, 0x941f, 0x942e,
+ 0x942f, 0x9431, 0x9432, 0x9433, 0x9434, 0x943b, 0x943f, 0x943d,
+ 0x9443, 0x9445, 0x9448, 0x944a, 0x944c, 0x9455, 0x9459, 0x945c,
+ 0x945f, 0x9461, 0x9463, 0x9468, 0x946b, 0x946d, 0x946e, 0x946f,
+ 0x9471, 0x9472, 0x9484, 0x9483, 0x9578, 0x9579,
+ /* 0x66 */
+ 0x957e, 0x9584, 0x9588, 0x958c, 0x958d, 0x958e, 0x959d, 0x959e,
+ 0x959f, 0x95a1, 0x95a6, 0x95a9, 0x95ab, 0x95ac, 0x95b4, 0x95b6,
+ 0x95ba, 0x95bd, 0x95bf, 0x95c6, 0x95c8, 0x95c9, 0x95cb, 0x95d0,
+ 0x95d1, 0x95d2, 0x95d3, 0x95d9, 0x95da, 0x95dd, 0x95de, 0x95df,
+ 0x95e0, 0x95e4, 0x95e6, 0x961d, 0x961e, 0x9622, 0x9624, 0x9625,
+ 0x9626, 0x962c, 0x9631, 0x9633, 0x9637, 0x9638, 0x9639, 0x963a,
+ 0x963c, 0x963d, 0x9641, 0x9652, 0x9654, 0x9656, 0x9657, 0x9658,
+ 0x9661, 0x966e, 0x9674, 0x967b, 0x967c, 0x967e, 0x967f, 0x9681,
+ 0x9682, 0x9683, 0x9684, 0x9689, 0x9691, 0x9696, 0x969a, 0x969d,
+ 0x969f, 0x96a4, 0x96a5, 0x96a6, 0x96a9, 0x96ae, 0x96af, 0x96b3,
+ 0x96ba, 0x96ca, 0x96d2, 0x5db2, 0x96d8, 0x96da, 0x96dd, 0x96de,
+ 0x96df, 0x96e9, 0x96ef, 0x96f1, 0x96fa, 0x9702,
+ /* 0x67 */
+ 0x9703, 0x9705, 0x9709, 0x971a, 0x971b, 0x971d, 0x9721, 0x9722,
+ 0x9723, 0x9728, 0x9731, 0x9733, 0x9741, 0x9743, 0x974a, 0x974e,
+ 0x974f, 0x9755, 0x9757, 0x9758, 0x975a, 0x975b, 0x9763, 0x9767,
+ 0x976a, 0x976e, 0x9773, 0x9776, 0x9777, 0x9778, 0x977b, 0x977d,
+ 0x977f, 0x9780, 0x9789, 0x9795, 0x9796, 0x9797, 0x9799, 0x979a,
+ 0x979e, 0x979f, 0x97a2, 0x97ac, 0x97ae, 0x97b1, 0x97b2, 0x97b5,
+ 0x97b6, 0x97b8, 0x97b9, 0x97ba, 0x97bc, 0x97be, 0x97bf, 0x97c1,
+ 0x97c4, 0x97c5, 0x97c7, 0x97c9, 0x97ca, 0x97cc, 0x97cd, 0x97ce,
+ 0x97d0, 0x97d1, 0x97d4, 0x97d7, 0x97d8, 0x97d9, 0x97dd, 0x97de,
+ 0x97e0, 0x97db, 0x97e1, 0x97e4, 0x97ef, 0x97f1, 0x97f4, 0x97f7,
+ 0x97f8, 0x97fa, 0x9807, 0x980a, 0x9819, 0x980d, 0x980e, 0x9814,
+ 0x9816, 0x981c, 0x981e, 0x9820, 0x9823, 0x9826,
+ /* 0x68 */
+ 0x982b, 0x982e, 0x982f, 0x9830, 0x9832, 0x9833, 0x9835, 0x9825,
+ 0x983e, 0x9844, 0x9847, 0x984a, 0x9851, 0x9852, 0x9853, 0x9856,
+ 0x9857, 0x9859, 0x985a, 0x9862, 0x9863, 0x9865, 0x9866, 0x986a,
+ 0x986c, 0x98ab, 0x98ad, 0x98ae, 0x98b0, 0x98b4, 0x98b7, 0x98b8,
+ 0x98ba, 0x98bb, 0x98bf, 0x98c2, 0x98c5, 0x98c8, 0x98cc, 0x98e1,
+ 0x98e3, 0x98e5, 0x98e6, 0x98e7, 0x98ea, 0x98f3, 0x98f6, 0x9902,
+ 0x9907, 0x9908, 0x9911, 0x9915, 0x9916, 0x9917, 0x991a, 0x991b,
+ 0x991c, 0x991f, 0x9922, 0x9926, 0x9927, 0x992b, 0x9931, 0x9932,
+ 0x9933, 0x9934, 0x9935, 0x9939, 0x993a, 0x993b, 0x993c, 0x9940,
+ 0x9941, 0x9946, 0x9947, 0x9948, 0x994d, 0x994e, 0x9954, 0x9958,
+ 0x9959, 0x995b, 0x995c, 0x995e, 0x995f, 0x9960, 0x999b, 0x999d,
+ 0x999f, 0x99a6, 0x99b0, 0x99b1, 0x99b2, 0x99b5,
+ /* 0x69 */
+ 0x99b9, 0x99ba, 0x99bd, 0x99bf, 0x99c3, 0x99c9, 0x99d3, 0x99d4,
+ 0x99d9, 0x99da, 0x99dc, 0x99de, 0x99e7, 0x99ea, 0x99eb, 0x99ec,
+ 0x99f0, 0x99f4, 0x99f5, 0x99f9, 0x99fd, 0x99fe, 0x9a02, 0x9a03,
+ 0x9a04, 0x9a0b, 0x9a0c, 0x9a10, 0x9a11, 0x9a16, 0x9a1e, 0x9a20,
+ 0x9a22, 0x9a23, 0x9a24, 0x9a27, 0x9a2d, 0x9a2e, 0x9a33, 0x9a35,
+ 0x9a36, 0x9a38, 0x9a47, 0x9a41, 0x9a44, 0x9a4a, 0x9a4b, 0x9a4c,
+ 0x9a4e, 0x9a51, 0x9a54, 0x9a56, 0x9a5d, 0x9aaa, 0x9aac, 0x9aae,
+ 0x9aaf, 0x9ab2, 0x9ab4, 0x9ab5, 0x9ab6, 0x9ab9, 0x9abb, 0x9abe,
+ 0x9abf, 0x9ac1, 0x9ac3, 0x9ac6, 0x9ac8, 0x9ace, 0x9ad0, 0x9ad2,
+ 0x9ad5, 0x9ad6, 0x9ad7, 0x9adb, 0x9adc, 0x9ae0, 0x9ae4, 0x9ae5,
+ 0x9ae7, 0x9ae9, 0x9aec, 0x9af2, 0x9af3, 0x9af5, 0x9af9, 0x9afa,
+ 0x9afd, 0x9aff, 0x9b00, 0x9b01, 0x9b02, 0x9b03,
+ /* 0x6a */
+ 0x9b04, 0x9b05, 0x9b08, 0x9b09, 0x9b0b, 0x9b0c, 0x9b0d, 0x9b0e,
+ 0x9b10, 0x9b12, 0x9b16, 0x9b19, 0x9b1b, 0x9b1c, 0x9b20, 0x9b26,
+ 0x9b2b, 0x9b2d, 0x9b33, 0x9b34, 0x9b35, 0x9b37, 0x9b39, 0x9b3a,
+ 0x9b3d, 0x9b48, 0x9b4b, 0x9b4c, 0x9b55, 0x9b56, 0x9b57, 0x9b5b,
+ 0x9b5e, 0x9b61, 0x9b63, 0x9b65, 0x9b66, 0x9b68, 0x9b6a, 0x9b6b,
+ 0x9b6c, 0x9b6d, 0x9b6e, 0x9b73, 0x9b75, 0x9b77, 0x9b78, 0x9b79,
+ 0x9b7f, 0x9b80, 0x9b84, 0x9b85, 0x9b86, 0x9b87, 0x9b89, 0x9b8a,
+ 0x9b8b, 0x9b8d, 0x9b8f, 0x9b90, 0x9b94, 0x9b9a, 0x9b9d, 0x9b9e,
+ 0x9ba6, 0x9ba7, 0x9ba9, 0x9bac, 0x9bb0, 0x9bb1, 0x9bb2, 0x9bb7,
+ 0x9bb8, 0x9bbb, 0x9bbc, 0x9bbe, 0x9bbf, 0x9bc1, 0x9bc7, 0x9bc8,
+ 0x9bce, 0x9bd0, 0x9bd7, 0x9bd8, 0x9bdd, 0x9bdf, 0x9be5, 0x9be7,
+ 0x9bea, 0x9beb, 0x9bef, 0x9bf3, 0x9bf7, 0x9bf8,
+ /* 0x6b */
+ 0x9bf9, 0x9bfa, 0x9bfd, 0x9bff, 0x9c00, 0x9c02, 0x9c0b, 0x9c0f,
+ 0x9c11, 0x9c16, 0x9c18, 0x9c19, 0x9c1a, 0x9c1c, 0x9c1e, 0x9c22,
+ 0x9c23, 0x9c26, 0x9c27, 0x9c28, 0x9c29, 0x9c2a, 0x9c31, 0x9c35,
+ 0x9c36, 0x9c37, 0x9c3d, 0x9c41, 0x9c43, 0x9c44, 0x9c45, 0x9c49,
+ 0x9c4a, 0x9c4e, 0x9c4f, 0x9c50, 0x9c53, 0x9c54, 0x9c56, 0x9c58,
+ 0x9c5b, 0x9c5d, 0x9c5e, 0x9c5f, 0x9c63, 0x9c69, 0x9c6a, 0x9c5c,
+ 0x9c6b, 0x9c68, 0x9c6e, 0x9c70, 0x9c72, 0x9c75, 0x9c77, 0x9c7b,
+ 0x9ce6, 0x9cf2, 0x9cf7, 0x9cf9, 0x9d0b, 0x9d02, 0x9d11, 0x9d17,
+ 0x9d18, 0x9d1c, 0x9d1d, 0x9d1e, 0x9d2f, 0x9d30, 0x9d32, 0x9d33,
+ 0x9d34, 0x9d3a, 0x9d3c, 0x9d45, 0x9d3d, 0x9d42, 0x9d43, 0x9d47,
+ 0x9d4a, 0x9d53, 0x9d54, 0x9d5f, 0x9d63, 0x9d62, 0x9d65, 0x9d69,
+ 0x9d6a, 0x9d6b, 0x9d70, 0x9d76, 0x9d77, 0x9d7b,
+ /* 0x6c */
+ 0x9d7c, 0x9d7e, 0x9d83, 0x9d84, 0x9d86, 0x9d8a, 0x9d8d, 0x9d8e,
+ 0x9d92, 0x9d93, 0x9d95, 0x9d96, 0x9d97, 0x9d98, 0x9da1, 0x9daa,
+ 0x9dac, 0x9dae, 0x9db1, 0x9db5, 0x9db9, 0x9dbc, 0x9dbf, 0x9dc3,
+ 0x9dc7, 0x9dc9, 0x9dca, 0x9dd4, 0x9dd5, 0x9dd6, 0x9dd7, 0x9dda,
+ 0x9dde, 0x9ddf, 0x9de0, 0x9de5, 0x9de7, 0x9de9, 0x9deb, 0x9dee,
+ 0x9df0, 0x9df3, 0x9df4, 0x9dfe, 0x9e0a, 0x9e02, 0x9e07, 0x9e0e,
+ 0x9e10, 0x9e11, 0x9e12, 0x9e15, 0x9e16, 0x9e19, 0x9e1c, 0x9e1d,
+ 0x9e7a, 0x9e7b, 0x9e7c, 0x9e80, 0x9e82, 0x9e83, 0x9e84, 0x9e85,
+ 0x9e87, 0x9e8e, 0x9e8f, 0x9e96, 0x9e98, 0x9e9b, 0x9e9e, 0x9ea4,
+ 0x9ea8, 0x9eac, 0x9eae, 0x9eaf, 0x9eb0, 0x9eb3, 0x9eb4, 0x9eb5,
+ 0x9ec6, 0x9ec8, 0x9ecb, 0x9ed5, 0x9edf, 0x9ee4, 0x9ee7, 0x9eec,
+ 0x9eed, 0x9eee, 0x9ef0, 0x9ef1, 0x9ef2, 0x9ef5,
+ /* 0x6d */
+ 0x9ef8, 0x9eff, 0x9f02, 0x9f03, 0x9f09, 0x9f0f, 0x9f10, 0x9f11,
+ 0x9f12, 0x9f14, 0x9f16, 0x9f17, 0x9f19, 0x9f1a, 0x9f1b, 0x9f1f,
+ 0x9f22, 0x9f26, 0x9f2a, 0x9f2b, 0x9f2f, 0x9f31, 0x9f32, 0x9f34,
+ 0x9f37, 0x9f39, 0x9f3a, 0x9f3c, 0x9f3d, 0x9f3f, 0x9f41, 0x9f43,
+ 0x9f44, 0x9f45, 0x9f46, 0x9f47, 0x9f53, 0x9f55, 0x9f56, 0x9f57,
+ 0x9f58, 0x9f5a, 0x9f5d, 0x9f5e, 0x9f68, 0x9f69, 0x9f6d, 0x9f6e,
+ 0x9f6f, 0x9f70, 0x9f71, 0x9f73, 0x9f75, 0x9f7a, 0x9f7d, 0x9f8f,
+ 0x9f90, 0x9f91, 0x9f92, 0x9f94, 0x9f96, 0x9f97, 0x9f9e, 0x9fa1,
+ 0x9fa2, 0x9fa3, 0x9fa5,
+};
+
+static int
+jisx0212_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n)
+{
+ unsigned char c1 = (s[0] & 0x7F);
+ if ((c1 == 0x22) || (c1 >= 0x26 && c1 <= 0x27) || (c1 >= 0x29 && c1 <= 0x2b) || (c1 >= 0x30 && c1 <= 0x6d)) {
+ if (n >= 2) {
+ unsigned char c2 = (s[1] & 0x7F);
+ if (c2 >= 0x21 && c2 < 0x7f) {
+ unsigned int i = 94 * (c1 - 0x21) + (c2 - 0x21);
+ unsigned short wc = 0xfffd;
+ if (i < 470) {
+ if (i < 175)
+ wc = jisx0212_2uni_page22[i-94];
+ } else if (i < 752) {
+ if (i < 658)
+ wc = jisx0212_2uni_page26[i-470];
+ } else if (i < 1410) {
+ if (i < 1027)
+ wc = jisx0212_2uni_page29[i-752];
+ } else {
+ if (i < 7211)
+ wc = jisx0212_2uni_page30[i-1410];
+ }
+ if (wc != 0xfffd) {
+ *pwc = (ucs4_t) wc;
+ return 2;
+ }
+ }
+ return RET_ILSEQ;
+ }
+ return RET_TOOFEW(0);
+ }
+ return RET_ILSEQ;
+}
+
+static const unsigned short jisx0212_2charset[6067] = {
+ 0x2237, 0x2242, 0x2270, 0x2243, 0x226d, 0x226c, 0x226e, 0x2234,
+ 0x2231, 0x226b, 0x2244, 0x2a22, 0x2a21, 0x2a24, 0x2a2a, 0x2a23,
+ 0x2a29, 0x2921, 0x2a2e, 0x2a32, 0x2a31, 0x2a34, 0x2a33, 0x2a40,
+ 0x2a3f, 0x2a42, 0x2a41, 0x2a50, 0x2a52, 0x2a51, 0x2a54, 0x2a58,
+ 0x2a53, 0x292c, 0x2a63, 0x2a62, 0x2a65, 0x2a64, 0x2a72, 0x2930,
+ 0x294e, 0x2b22, 0x2b21, 0x2b24, 0x2b2a, 0x2b23, 0x2b29, 0x2941,
+ 0x2b2e, 0x2b32, 0x2b31, 0x2b34, 0x2b33, 0x2b40, 0x2b3f, 0x2b42,
+ 0x2b41, 0x2943, 0x2b50, 0x2b52, 0x2b51, 0x2b54, 0x2b58, 0x2b53,
+ 0x294c, 0x2b63, 0x2b62, 0x2b65, 0x2b64, 0x2b72, 0x2950, 0x2b73,
+ 0x2a27, 0x2b27, 0x2a25, 0x2b25, 0x2a28, 0x2b28, 0x2a2b, 0x2b2b,
+ 0x2a2c, 0x2b2c, 0x2a2f, 0x2b2f, 0x2a2d, 0x2b2d, 0x2a30, 0x2b30,
+ 0x2922, 0x2942, 0x2a37, 0x2b37, 0x2a36, 0x2b36, 0x2a38, 0x2b38,
+ 0x2a35, 0x2b35, 0x2a3a, 0x2b3a, 0x2a3b, 0x2b3b, 0x2a3d, 0x2b3d,
+ 0x2a3c, 0x2a3e, 0x2b3e, 0x2924, 0x2944, 0x2a47, 0x2b47, 0x2a45,
+ 0x2b45, 0x2a46, 0x2b46, 0x2a44, 0x2945, 0x2926, 0x2946, 0x2a48,
+ 0x2b48, 0x2a49, 0x2b49, 0x2947, 0x2a4a, 0x2b4a, 0x2a4c, 0x2b4c,
+ 0x2a4b, 0x2b4b, 0x2929, 0x2949, 0x2928, 0x2948, 0x2a4d, 0x2b4d,
+ 0x2a4f, 0x2b4f, 0x2a4e, 0x2b4e, 0x294a, 0x292b, 0x294b, 0x2a57,
+ 0x2b57, 0x2a56, 0x2b56, 0x292d, 0x294d, 0x2a59, 0x2b59, 0x2a5b,
+ 0x2b5b, 0x2a5a, 0x2b5a, 0x2a5c, 0x2b5c, 0x2a5d, 0x2b5d, 0x2a5f,
+ 0x2b5f, 0x2a5e, 0x2b5e, 0x2a61, 0x2b61, 0x2a60, 0x2b60, 0x292f,
+ 0x294f, 0x2a6c, 0x2b6c, 0x2a69, 0x2b69, 0x2a66, 0x2b66, 0x2a6b,
+ 0x2b6b, 0x2a68, 0x2b68, 0x2a6a, 0x2b6a, 0x2a71, 0x2b71, 0x2a74,
+ 0x2b74, 0x2a73, 0x2a75, 0x2b75, 0x2a77, 0x2b77, 0x2a76, 0x2b76,
+ 0x2a26, 0x2b26, 0x2a43, 0x2b43, 0x2a55, 0x2b55, 0x2a67, 0x2b67,
+ 0x2a70, 0x2b70, 0x2a6d, 0x2b6d, 0x2a6f, 0x2b6f, 0x2a6e, 0x2b6e,
+ 0x2b39, 0x2230, 0x222f, 0x2232, 0x2236, 0x2235, 0x2233, 0x2238,
+ 0x2239, 0x2661, 0x2662, 0x2663, 0x2664, 0x2667, 0x2669, 0x266c,
+ 0x2676, 0x2665, 0x266a, 0x2671, 0x2672, 0x2673, 0x2674, 0x267b,
+ 0x2678, 0x2675, 0x267a, 0x2677, 0x2679, 0x267c, 0x2742, 0x2743,
+ 0x2744, 0x2745, 0x2746, 0x2747, 0x2748, 0x2749, 0x274a, 0x274b,
+ 0x274c, 0x274d, 0x274e, 0x2772, 0x2773, 0x2774, 0x2775, 0x2776,
+ 0x2777, 0x2778, 0x2779, 0x277a, 0x277b, 0x277c, 0x277d, 0x277e,
+ 0x2271, 0x226f, 0x3021, 0x3022, 0x3023, 0x3024, 0x3025, 0x3026,
+ 0x3027, 0x3028, 0x3029, 0x302a, 0x302b, 0x302c, 0x302d, 0x302e,
+ 0x302f, 0x3030, 0x3031, 0x3032, 0x3033, 0x3034, 0x3035, 0x3036,
+ 0x3037, 0x3038, 0x3039, 0x303a, 0x303b, 0x303c, 0x303d, 0x303e,
+ 0x303f, 0x3040, 0x3041, 0x3042, 0x3043, 0x3044, 0x3045, 0x3046,
+ 0x3047, 0x3048, 0x3049, 0x304a, 0x304b, 0x304c, 0x304d, 0x304e,
+ 0x304f, 0x3050, 0x3051, 0x3052, 0x3053, 0x3054, 0x3055, 0x3056,
+ 0x3057, 0x3058, 0x3059, 0x305a, 0x305b, 0x305c, 0x305d, 0x305e,
+ 0x3060, 0x3061, 0x3062, 0x3063, 0x3064, 0x3065, 0x3066, 0x3067,
+ 0x3068, 0x3069, 0x306a, 0x306b, 0x306c, 0x306d, 0x306e, 0x306f,
+ 0x3070, 0x305f, 0x3071, 0x3072, 0x3073, 0x3074, 0x3075, 0x3076,
+ 0x3077, 0x3078, 0x3079, 0x307a, 0x307b, 0x307c, 0x307d, 0x307e,
+ 0x3121, 0x3122, 0x3123, 0x3124, 0x3125, 0x3126, 0x3127, 0x3128,
+ 0x3129, 0x312a, 0x312b, 0x312c, 0x312d, 0x312e, 0x312f, 0x3130,
+ 0x3131, 0x3132, 0x3133, 0x3134, 0x3135, 0x3136, 0x3137, 0x3138,
+ 0x3139, 0x313a, 0x313b, 0x313c, 0x313d, 0x313e, 0x313f, 0x3140,
+ 0x3141, 0x3142, 0x3143, 0x3144, 0x3145, 0x3146, 0x3147, 0x3148,
+ 0x3149, 0x314a, 0x314b, 0x314c, 0x314d, 0x314e, 0x314f, 0x3150,
+ 0x3151, 0x3152, 0x3153, 0x3154, 0x3155, 0x3156, 0x3157, 0x3158,
+ 0x3159, 0x315a, 0x315b, 0x315c, 0x315d, 0x315e, 0x3176, 0x315f,
+ 0x3160, 0x3161, 0x3162, 0x3163, 0x3164, 0x3165, 0x3166, 0x3167,
+ 0x3168, 0x3169, 0x316a, 0x316b, 0x316c, 0x316d, 0x316e, 0x316f,
+ 0x3170, 0x3171, 0x3172, 0x3173, 0x3174, 0x3175, 0x3177, 0x3178,
+ 0x3179, 0x317a, 0x317b, 0x317c, 0x317d, 0x317e, 0x3221, 0x3222,
+ 0x3223, 0x3224, 0x3225, 0x3226, 0x3227, 0x3228, 0x3229, 0x322a,
+ 0x322b, 0x322c, 0x322d, 0x322e, 0x322f, 0x3230, 0x3231, 0x3232,
+ 0x3233, 0x3234, 0x3235, 0x3236, 0x3237, 0x3238, 0x3239, 0x323a,
+ 0x323b, 0x323c, 0x323d, 0x323e, 0x323f, 0x3240, 0x3241, 0x3242,
+ 0x3243, 0x3244, 0x3245, 0x3251, 0x3246, 0x3247, 0x3248, 0x3249,
+ 0x324a, 0x324b, 0x324c, 0x324d, 0x324e, 0x324f, 0x3250, 0x3252,
+ 0x3253, 0x3254, 0x3255, 0x3256, 0x3257, 0x3258, 0x3259, 0x325a,
+ 0x325b, 0x325c, 0x325d, 0x325e, 0x325f, 0x3260, 0x3261, 0x3262,
+ 0x3263, 0x3264, 0x3265, 0x3266, 0x3267, 0x3268, 0x3269, 0x326a,
+ 0x326b, 0x326c, 0x326d, 0x326e, 0x326f, 0x3270, 0x3271, 0x3272,
+ 0x3273, 0x3274, 0x3275, 0x3276, 0x3277, 0x3278, 0x3279, 0x327a,
+ 0x327b, 0x327c, 0x327d, 0x327e, 0x3321, 0x3322, 0x3323, 0x3324,
+ 0x3325, 0x3326, 0x3327, 0x3328, 0x3329, 0x332a, 0x332b, 0x332c,
+ 0x332d, 0x332e, 0x332f, 0x3330, 0x3331, 0x3332, 0x3333, 0x3334,
+ 0x3335, 0x3336, 0x3337, 0x3338, 0x3339, 0x333a, 0x333b, 0x333c,
+ 0x333d, 0x333e, 0x333f, 0x3340, 0x3341, 0x3342, 0x3343, 0x3344,
+ 0x3345, 0x3346, 0x3347, 0x3348, 0x3349, 0x334a, 0x334b, 0x334c,
+ 0x334d, 0x334e, 0x334f, 0x3350, 0x3351, 0x3352, 0x3353, 0x3354,
+ 0x3355, 0x3356, 0x3357, 0x3358, 0x3359, 0x335a, 0x335b, 0x335c,
+ 0x335d, 0x335e, 0x335f, 0x3360, 0x3361, 0x3362, 0x3363, 0x3364,
+ 0x3365, 0x3366, 0x3367, 0x3368, 0x3369, 0x336a, 0x336b, 0x336c,
+ 0x336d, 0x336e, 0x336f, 0x3370, 0x3371, 0x3372, 0x3373, 0x3374,
+ 0x3375, 0x3376, 0x3377, 0x3378, 0x3379, 0x337a, 0x337b, 0x337c,
+ 0x337d, 0x337e, 0x3421, 0x3422, 0x3423, 0x3424, 0x3425, 0x3426,
+ 0x3427, 0x3428, 0x3429, 0x342a, 0x342b, 0x342c, 0x342d, 0x342e,
+ 0x342f, 0x3430, 0x3431, 0x3432, 0x3433, 0x3434, 0x3435, 0x3436,
+ 0x3438, 0x3437, 0x3439, 0x343a, 0x343b, 0x343c, 0x343d, 0x343e,
+ 0x343f, 0x3440, 0x3441, 0x3442, 0x3443, 0x3444, 0x3445, 0x3446,
+ 0x3447, 0x3448, 0x3449, 0x344a, 0x344b, 0x344c, 0x344d, 0x344e,
+ 0x344f, 0x3450, 0x3451, 0x3452, 0x3453, 0x3454, 0x3455, 0x3456,
+ 0x3457, 0x3458, 0x3459, 0x345a, 0x345b, 0x345c, 0x345d, 0x345e,
+ 0x345f, 0x3460, 0x3461, 0x3462, 0x3463, 0x3464, 0x3465, 0x3466,
+ 0x3467, 0x3468, 0x3469, 0x346a, 0x346b, 0x346c, 0x346d, 0x346e,
+ 0x346f, 0x3470, 0x3471, 0x3472, 0x3473, 0x3474, 0x3475, 0x3476,
+ 0x3477, 0x3478, 0x3479, 0x347a, 0x347b, 0x347c, 0x347d, 0x347e,
+ 0x3521, 0x3522, 0x3523, 0x3524, 0x3525, 0x3526, 0x3527, 0x3528,
+ 0x3529, 0x352a, 0x352b, 0x352c, 0x352d, 0x352e, 0x352f, 0x3530,
+ 0x3531, 0x3532, 0x3533, 0x3534, 0x3535, 0x3536, 0x3537, 0x3538,
+ 0x3539, 0x353a, 0x353b, 0x353c, 0x353d, 0x353e, 0x353f, 0x3540,
+ 0x3541, 0x3542, 0x3543, 0x3544, 0x3545, 0x3546, 0x3547, 0x3548,
+ 0x3549, 0x354a, 0x354b, 0x354c, 0x354d, 0x354e, 0x354f, 0x3550,
+ 0x3551, 0x3552, 0x3553, 0x3554, 0x3555, 0x3556, 0x3557, 0x3558,
+ 0x3559, 0x355a, 0x355b, 0x355c, 0x355d, 0x355e, 0x355f, 0x3560,
+ 0x3561, 0x3562, 0x3563, 0x3564, 0x3565, 0x3566, 0x3567, 0x3568,
+ 0x3569, 0x356a, 0x356b, 0x356c, 0x356d, 0x356e, 0x356f, 0x3570,
+ 0x3571, 0x3572, 0x3573, 0x3574, 0x3575, 0x3576, 0x3577, 0x3578,
+ 0x3579, 0x357a, 0x357b, 0x357c, 0x357d, 0x357e, 0x3621, 0x3622,
+ 0x3623, 0x3624, 0x3625, 0x3626, 0x3627, 0x3628, 0x3629, 0x362a,
+ 0x362b, 0x362c, 0x362d, 0x362e, 0x362f, 0x3630, 0x3631, 0x3632,
+ 0x3633, 0x3634, 0x3635, 0x3636, 0x3637, 0x3638, 0x3639, 0x363a,
+ 0x363b, 0x363c, 0x363d, 0x363e, 0x363f, 0x3640, 0x3641, 0x3642,
+ 0x3643, 0x3644, 0x3645, 0x3646, 0x3647, 0x3648, 0x3649, 0x364a,
+ 0x364b, 0x364c, 0x364d, 0x364e, 0x364f, 0x3650, 0x3651, 0x3652,
+ 0x3653, 0x3654, 0x3655, 0x3656, 0x3657, 0x3658, 0x3659, 0x365a,
+ 0x365b, 0x365c, 0x365d, 0x365e, 0x365f, 0x3660, 0x3661, 0x3662,
+ 0x3663, 0x3664, 0x3665, 0x3666, 0x3667, 0x3668, 0x3669, 0x366a,
+ 0x366b, 0x366c, 0x366d, 0x3670, 0x3671, 0x366e, 0x366f, 0x3672,
+ 0x3673, 0x3674, 0x3675, 0x3676, 0x3677, 0x3678, 0x3679, 0x367a,
+ 0x367b, 0x367d, 0x367e, 0x367c, 0x3721, 0x3722, 0x3723, 0x3724,
+ 0x3725, 0x3726, 0x3727, 0x3728, 0x3729, 0x372a, 0x372b, 0x372c,
+ 0x372d, 0x372e, 0x372f, 0x3730, 0x3731, 0x3732, 0x3733, 0x3734,
+ 0x3735, 0x3736, 0x3737, 0x3738, 0x3739, 0x373a, 0x373b, 0x373c,
+ 0x373d, 0x373e, 0x373f, 0x3740, 0x3741, 0x3742, 0x3743, 0x3744,
+ 0x3745, 0x3746, 0x3747, 0x3748, 0x3749, 0x374a, 0x374b, 0x374c,
+ 0x374d, 0x374e, 0x374f, 0x3750, 0x3751, 0x3752, 0x3753, 0x3754,
+ 0x3755, 0x3756, 0x3757, 0x3760, 0x3758, 0x3759, 0x375a, 0x375b,
+ 0x375c, 0x375d, 0x375e, 0x375f, 0x3761, 0x3762, 0x3763, 0x3764,
+ 0x3765, 0x3766, 0x3767, 0x3768, 0x3769, 0x376a, 0x376b, 0x376c,
+ 0x376d, 0x377e, 0x376e, 0x376f, 0x3770, 0x3771, 0x3772, 0x3773,
+ 0x3774, 0x3775, 0x3776, 0x3777, 0x3778, 0x3779, 0x377a, 0x377b,
+ 0x377c, 0x377d, 0x3821, 0x3822, 0x3823, 0x3824, 0x3825, 0x3826,
+ 0x3827, 0x3828, 0x3829, 0x382a, 0x382b, 0x382c, 0x382d, 0x382e,
+ 0x382f, 0x3830, 0x3831, 0x3832, 0x3833, 0x3834, 0x3835, 0x3836,
+ 0x3837, 0x3838, 0x3839, 0x383a, 0x383b, 0x383c, 0x383d, 0x383e,
+ 0x383f, 0x3840, 0x3841, 0x3842, 0x3843, 0x3844, 0x3845, 0x3846,
+ 0x3847, 0x3848, 0x3849, 0x384a, 0x384b, 0x384c, 0x384d, 0x384e,
+ 0x3850, 0x3851, 0x384f, 0x3852, 0x3853, 0x3854, 0x3855, 0x3856,
+ 0x3857, 0x3858, 0x3859, 0x385a, 0x385b, 0x385c, 0x385d, 0x385e,
+ 0x385f, 0x3860, 0x3861, 0x3862, 0x3863, 0x3864, 0x3865, 0x3867,
+ 0x3868, 0x3869, 0x386a, 0x386b, 0x386c, 0x386d, 0x386e, 0x386f,
+ 0x3870, 0x3871, 0x3872, 0x3873, 0x3874, 0x3875, 0x3876, 0x3877,
+ 0x3878, 0x3879, 0x387a, 0x387b, 0x387c, 0x387d, 0x387e, 0x3921,
+ 0x3922, 0x3923, 0x3924, 0x3925, 0x3926, 0x3927, 0x3928, 0x3929,
+ 0x392a, 0x392b, 0x392c, 0x392d, 0x392e, 0x392f, 0x3930, 0x3931,
+ 0x3932, 0x3933, 0x3934, 0x3935, 0x3936, 0x3937, 0x3938, 0x3939,
+ 0x393a, 0x393b, 0x393c, 0x393d, 0x393e, 0x393f, 0x3940, 0x3941,
+ 0x3942, 0x3943, 0x3944, 0x3945, 0x3946, 0x3947, 0x3948, 0x3949,
+ 0x394a, 0x394b, 0x394c, 0x394d, 0x394e, 0x394f, 0x3950, 0x3951,
+ 0x3952, 0x3953, 0x3954, 0x3955, 0x3956, 0x3957, 0x3958, 0x3959,
+ 0x395a, 0x395b, 0x395c, 0x395d, 0x395e, 0x395f, 0x3960, 0x3961,
+ 0x3962, 0x3963, 0x3964, 0x3965, 0x3966, 0x3967, 0x3968, 0x3969,
+ 0x396a, 0x396b, 0x396c, 0x396d, 0x396e, 0x396f, 0x3970, 0x3971,
+ 0x3972, 0x3973, 0x3974, 0x3975, 0x3976, 0x3977, 0x3978, 0x3979,
+ 0x397a, 0x397b, 0x397c, 0x397d, 0x397e, 0x3a21, 0x3a22, 0x3a23,
+ 0x3a24, 0x3a25, 0x3a26, 0x3a27, 0x3a28, 0x3a29, 0x3a2a, 0x3a2b,
+ 0x3a2c, 0x3a2d, 0x3a2e, 0x3a2f, 0x3a30, 0x3a31, 0x3a33, 0x3a34,
+ 0x3a35, 0x3a36, 0x3a37, 0x3a38, 0x3a32, 0x3a39, 0x3a3a, 0x3a3b,
+ 0x3a3c, 0x3a3d, 0x3a3e, 0x3a3f, 0x3a40, 0x3a41, 0x3a42, 0x3a43,
+ 0x3a44, 0x3a45, 0x3a46, 0x3a47, 0x3a48, 0x3a49, 0x3a4a, 0x3a4b,
+ 0x3a4c, 0x3a4d, 0x3a4e, 0x3a4f, 0x3a50, 0x3a51, 0x3a52, 0x3a53,
+ 0x3a54, 0x3a55, 0x3a56, 0x3a57, 0x3a58, 0x3a59, 0x3a5a, 0x3a5b,
+ 0x3a5c, 0x3a5d, 0x3a5e, 0x3a5f, 0x3a60, 0x3a61, 0x3a62, 0x3a63,
+ 0x3a64, 0x3a65, 0x3a66, 0x3a67, 0x3a68, 0x3a69, 0x3a6a, 0x3a6b,
+ 0x3a6c, 0x3a6d, 0x3a6e, 0x3a6f, 0x3a70, 0x3a71, 0x3a72, 0x3a73,
+ 0x3a74, 0x3a75, 0x3a76, 0x3a77, 0x3a78, 0x3a79, 0x3a7a, 0x3a7b,
+ 0x3a7c, 0x3a7d, 0x3a7e, 0x3b21, 0x3b22, 0x3b23, 0x3b24, 0x3b25,
+ 0x3b26, 0x3b27, 0x3b28, 0x3b29, 0x3b2a, 0x3b2b, 0x3b2c, 0x3b2d,
+ 0x3b2e, 0x3b2f, 0x3b30, 0x3b31, 0x3b32, 0x3b33, 0x3b34, 0x3b35,
+ 0x3b36, 0x3b37, 0x3b38, 0x3b39, 0x3b3a, 0x3b3b, 0x3b3d, 0x3b3c,
+ 0x3b3e, 0x3b3f, 0x3b40, 0x3b41, 0x3b42, 0x3b43, 0x3b44, 0x3b45,
+ 0x3b47, 0x3b48, 0x3b49, 0x3b4a, 0x3b46, 0x3b4b, 0x3b4c, 0x3b4d,
+ 0x3b4e, 0x3b4f, 0x3b50, 0x3b51, 0x3b52, 0x3b53, 0x3b57, 0x3b55,
+ 0x3b54, 0x3b56, 0x3b58, 0x3b59, 0x3b5a, 0x3b5b, 0x3b5c, 0x3b5d,
+ 0x3b5e, 0x3b5f, 0x3b60, 0x3b61, 0x3b62, 0x3b63, 0x3b64, 0x3b65,
+ 0x3b66, 0x3b67, 0x3b68, 0x3b69, 0x3b6a, 0x3b6b, 0x3b6c, 0x3b6d,
+ 0x3b6e, 0x3b6f, 0x3b70, 0x3b71, 0x3b72, 0x6674, 0x3b73, 0x3b74,
+ 0x3b75, 0x3b76, 0x3b77, 0x3b78, 0x3b7a, 0x3b79, 0x3b7b, 0x3b7c,
+ 0x3b7d, 0x3b7e, 0x3c21, 0x3c22, 0x3c23, 0x3c24, 0x3c25, 0x3c26,
+ 0x3c27, 0x3c28, 0x3c29, 0x3c2a, 0x3c2b, 0x3c2c, 0x3c2e, 0x3c2d,
+ 0x3c2f, 0x3c30, 0x3c31, 0x3c34, 0x3c32, 0x3c33, 0x3c35, 0x3c36,
+ 0x3c37, 0x3c38, 0x3c39, 0x3c3a, 0x3c3b, 0x3c3c, 0x3c3d, 0x3c3e,
+ 0x3c3f, 0x3c40, 0x3c41, 0x3c42, 0x3c43, 0x3c44, 0x3c45, 0x3c46,
+ 0x3c47, 0x3c48, 0x3c49, 0x3c4a, 0x3c4b, 0x3c4c, 0x3c4d, 0x3c4e,
+ 0x3c4f, 0x3c50, 0x3c52, 0x3c51, 0x3c53, 0x3c54, 0x3c55, 0x3c56,
+ 0x3c57, 0x3c58, 0x3c59, 0x3c5a, 0x3c5b, 0x3c5c, 0x3c5d, 0x3c5e,
+ 0x3c5f, 0x3c60, 0x3c61, 0x3c62, 0x3c63, 0x3c64, 0x3c65, 0x3c66,
+ 0x3c67, 0x3c68, 0x3c69, 0x3c6a, 0x3c6b, 0x3c6c, 0x3c6d, 0x3c6e,
+ 0x3c6f, 0x3c70, 0x3c71, 0x3c72, 0x3c73, 0x3c74, 0x3c75, 0x3c76,
+ 0x3c77, 0x3c78, 0x3c79, 0x3c7a, 0x3c7b, 0x3c7c, 0x3c7d, 0x3c7e,
+ 0x3d21, 0x3d22, 0x3d23, 0x3d24, 0x3d25, 0x3d26, 0x3d27, 0x3d28,
+ 0x3d29, 0x3d2a, 0x3d2b, 0x3d2c, 0x3d2d, 0x3d2e, 0x3d2f, 0x3d32,
+ 0x3d30, 0x3d31, 0x3d33, 0x3d34, 0x3d35, 0x3d36, 0x3d37, 0x3d38,
+ 0x3d39, 0x3d3a, 0x3d3b, 0x3d3c, 0x3d3d, 0x3d3e, 0x3d3f, 0x3d40,
+ 0x3d41, 0x3d42, 0x3d43, 0x3d44, 0x3d45, 0x3d46, 0x3d47, 0x3d48,
+ 0x3d49, 0x3d4a, 0x3d4b, 0x3d4c, 0x3d4d, 0x3d4e, 0x3d4f, 0x3d50,
+ 0x3d51, 0x3d52, 0x3d53, 0x3d54, 0x3d55, 0x3d56, 0x3d57, 0x3d58,
+ 0x3d59, 0x3d5a, 0x3d5b, 0x3d5c, 0x3d5d, 0x3d5e, 0x3d5f, 0x3d60,
+ 0x3d61, 0x3d62, 0x3d63, 0x3d64, 0x3d65, 0x3d66, 0x3d67, 0x3d68,
+ 0x3d69, 0x3d6a, 0x3d6b, 0x3d6c, 0x3d6d, 0x3d6e, 0x3d6f, 0x3d70,
+ 0x3d71, 0x3d72, 0x3d73, 0x3d74, 0x3d75, 0x3d76, 0x3d77, 0x3d78,
+ 0x3d79, 0x3d7a, 0x3d7b, 0x3d7c, 0x3d7d, 0x3d7e, 0x3e21, 0x3e22,
+ 0x3e23, 0x3e24, 0x3e25, 0x3e26, 0x3e27, 0x3e28, 0x3e29, 0x3e2a,
+ 0x3e2b, 0x3e2c, 0x3e2d, 0x3e2e, 0x3e2f, 0x3e30, 0x3e31, 0x3e32,
+ 0x3e33, 0x3e34, 0x3e35, 0x3e36, 0x3e37, 0x3e38, 0x3e39, 0x3e3a,
+ 0x3e3b, 0x3e3c, 0x3e3d, 0x3e3e, 0x3e3f, 0x3e40, 0x3e41, 0x3e42,
+ 0x3e43, 0x3e44, 0x3e45, 0x3e46, 0x3e47, 0x3e48, 0x3e49, 0x3e4a,
+ 0x3e4b, 0x3e4c, 0x3e4d, 0x3e4e, 0x3e4f, 0x3e50, 0x3e51, 0x3e52,
+ 0x3e53, 0x3e54, 0x3e55, 0x3e56, 0x3e57, 0x3e58, 0x3e59, 0x3e5a,
+ 0x3e5b, 0x3e5c, 0x3e5d, 0x3e5e, 0x3e5f, 0x3e60, 0x3e61, 0x3e62,
+ 0x3e63, 0x3e64, 0x3e65, 0x3e66, 0x3e67, 0x3e68, 0x3e69, 0x3e6a,
+ 0x3e6b, 0x3e6c, 0x3e6d, 0x3e6e, 0x3e6f, 0x3e70, 0x3e71, 0x3e72,
+ 0x3e73, 0x3e74, 0x3e75, 0x3e76, 0x3e77, 0x3e78, 0x3e79, 0x3e7a,
+ 0x3e7b, 0x3e7e, 0x3e7c, 0x3e7d, 0x3f21, 0x3f22, 0x3f23, 0x3f24,
+ 0x3f25, 0x3f26, 0x3f27, 0x3f28, 0x3f29, 0x3f2a, 0x3f2b, 0x3f2c,
+ 0x3f2d, 0x3f2e, 0x3f2f, 0x3f30, 0x3f31, 0x3f32, 0x3f33, 0x3f34,
+ 0x3f35, 0x3f36, 0x3f37, 0x3f38, 0x3f39, 0x3f3a, 0x3f3b, 0x3f3c,
+ 0x3f3d, 0x3f3e, 0x3f3f, 0x3f40, 0x3f41, 0x3f42, 0x3f43, 0x3f44,
+ 0x3f45, 0x3f46, 0x3f47, 0x3f48, 0x3f49, 0x3f4a, 0x3f4b, 0x3f4c,
+ 0x3f4d, 0x3f4e, 0x3f4f, 0x3f50, 0x3f51, 0x3f52, 0x3f53, 0x3f54,
+ 0x3f55, 0x3f56, 0x3f57, 0x3f58, 0x3f59, 0x3f5a, 0x3f5b, 0x3f5c,
+ 0x3f5d, 0x3f5e, 0x3f5f, 0x3f60, 0x3f61, 0x3f62, 0x3f63, 0x3f64,
+ 0x3f65, 0x3f66, 0x3f67, 0x3f68, 0x3f69, 0x3f6a, 0x3f6b, 0x3f6c,
+ 0x3f6d, 0x3f6e, 0x3f6f, 0x3f70, 0x3f71, 0x3f72, 0x3f73, 0x3f74,
+ 0x3f75, 0x3f76, 0x3f77, 0x3f78, 0x3f79, 0x3f7a, 0x3f7b, 0x3f7c,
+ 0x3f7d, 0x3f7e, 0x4021, 0x4022, 0x4023, 0x4024, 0x4025, 0x4026,
+ 0x4027, 0x4028, 0x4029, 0x402a, 0x402b, 0x402c, 0x402d, 0x402e,
+ 0x402f, 0x4030, 0x4031, 0x4032, 0x4033, 0x4034, 0x4035, 0x4036,
+ 0x4037, 0x4038, 0x4039, 0x403a, 0x403b, 0x403c, 0x403d, 0x403e,
+ 0x403f, 0x4040, 0x4041, 0x4042, 0x4043, 0x4044, 0x4045, 0x4046,
+ 0x4047, 0x4048, 0x4049, 0x404a, 0x404b, 0x404c, 0x404d, 0x404e,
+ 0x404f, 0x4050, 0x4051, 0x4052, 0x4053, 0x4054, 0x4055, 0x4056,
+ 0x4057, 0x4058, 0x4059, 0x405a, 0x405b, 0x405c, 0x405d, 0x405e,
+ 0x405f, 0x4060, 0x4061, 0x4062, 0x4063, 0x4064, 0x4065, 0x4066,
+ 0x4067, 0x4068, 0x4069, 0x406a, 0x406b, 0x406c, 0x406d, 0x406e,
+ 0x406f, 0x4070, 0x4071, 0x4072, 0x4073, 0x4074, 0x4075, 0x4076,
+ 0x4077, 0x4078, 0x4079, 0x407a, 0x407b, 0x407c, 0x407d, 0x407e,
+ 0x4121, 0x4122, 0x4123, 0x4124, 0x4125, 0x4126, 0x4127, 0x4128,
+ 0x4129, 0x412a, 0x412b, 0x412c, 0x412d, 0x412e, 0x412f, 0x4130,
+ 0x4131, 0x4132, 0x4133, 0x4134, 0x4135, 0x4136, 0x4137, 0x4138,
+ 0x4139, 0x413a, 0x413b, 0x413c, 0x413d, 0x413e, 0x413f, 0x4140,
+ 0x4141, 0x4142, 0x4143, 0x4144, 0x4145, 0x4146, 0x4147, 0x4148,
+ 0x4149, 0x414a, 0x414b, 0x414c, 0x414d, 0x414e, 0x414f, 0x4150,
+ 0x4151, 0x4152, 0x4153, 0x4154, 0x4155, 0x4156, 0x4157, 0x4158,
+ 0x4159, 0x415a, 0x415b, 0x415c, 0x415d, 0x415e, 0x415f, 0x4160,
+ 0x4161, 0x4162, 0x4163, 0x4164, 0x4165, 0x4166, 0x4167, 0x4168,
+ 0x4169, 0x416a, 0x416b, 0x416c, 0x416d, 0x416e, 0x416f, 0x4170,
+ 0x4171, 0x4172, 0x4173, 0x4174, 0x4175, 0x4176, 0x4177, 0x4178,
+ 0x4179, 0x417a, 0x417b, 0x417c, 0x417d, 0x417e, 0x4221, 0x4222,
+ 0x4223, 0x4224, 0x4225, 0x4226, 0x4227, 0x4228, 0x4229, 0x422a,
+ 0x422b, 0x422c, 0x422d, 0x422e, 0x4230, 0x422f, 0x4231, 0x4232,
+ 0x4233, 0x4234, 0x4235, 0x4237, 0x4236, 0x4238, 0x4239, 0x423a,
+ 0x423b, 0x423c, 0x423d, 0x423e, 0x4240, 0x4241, 0x4242, 0x4244,
+ 0x4245, 0x4247, 0x4248, 0x4249, 0x424a, 0x424c, 0x4243, 0x4246,
+ 0x424b, 0x424d, 0x424e, 0x424f, 0x4250, 0x4251, 0x4252, 0x4253,
+ 0x4254, 0x4255, 0x4256, 0x4257, 0x4258, 0x4259, 0x425a, 0x425b,
+ 0x425c, 0x425d, 0x425e, 0x425f, 0x4260, 0x4261, 0x4262, 0x4263,
+ 0x4264, 0x4265, 0x4266, 0x4267, 0x4268, 0x4269, 0x426a, 0x426b,
+ 0x426c, 0x426d, 0x423f, 0x426e, 0x426f, 0x4270, 0x4271, 0x4272,
+ 0x4273, 0x4274, 0x4275, 0x4276, 0x4277, 0x4278, 0x4279, 0x427a,
+ 0x427b, 0x427c, 0x427d, 0x427e, 0x4321, 0x4322, 0x4323, 0x4324,
+ 0x4325, 0x4326, 0x4327, 0x4328, 0x4329, 0x432a, 0x432b, 0x432c,
+ 0x432d, 0x432e, 0x432f, 0x4330, 0x4331, 0x4332, 0x4333, 0x4334,
+ 0x4335, 0x4336, 0x4337, 0x4339, 0x433a, 0x433b, 0x433c, 0x433d,
+ 0x433e, 0x433f, 0x4340, 0x4341, 0x4342, 0x4343, 0x4344, 0x4345,
+ 0x4346, 0x4347, 0x4348, 0x4338, 0x434a, 0x434b, 0x434c, 0x434d,
+ 0x434f, 0x434e, 0x4350, 0x4351, 0x4352, 0x4353, 0x4354, 0x4355,
+ 0x4356, 0x4357, 0x4358, 0x4359, 0x435a, 0x435b, 0x4349, 0x435c,
+ 0x435d, 0x435e, 0x435f, 0x4360, 0x4361, 0x4362, 0x4363, 0x4364,
+ 0x4365, 0x4366, 0x4367, 0x4368, 0x4369, 0x436a, 0x436b, 0x436c,
+ 0x436d, 0x436e, 0x436f, 0x4370, 0x4371, 0x4372, 0x4373, 0x4374,
+ 0x4375, 0x4376, 0x4377, 0x4378, 0x4379, 0x437a, 0x437b, 0x437c,
+ 0x437d, 0x437e, 0x4421, 0x4422, 0x4423, 0x4424, 0x4425, 0x4426,
+ 0x4427, 0x4428, 0x4429, 0x442a, 0x442b, 0x442c, 0x442d, 0x442e,
+ 0x442f, 0x4430, 0x4431, 0x4432, 0x4433, 0x4434, 0x4435, 0x4436,
+ 0x4437, 0x4438, 0x4439, 0x443a, 0x443b, 0x443c, 0x443d, 0x443e,
+ 0x443f, 0x4440, 0x4441, 0x4442, 0x4443, 0x4444, 0x4445, 0x4446,
+ 0x4447, 0x4448, 0x4449, 0x444a, 0x444b, 0x444c, 0x444d, 0x444e,
+ 0x444f, 0x4450, 0x4451, 0x4452, 0x4453, 0x4454, 0x4455, 0x4456,
+ 0x4457, 0x4458, 0x4459, 0x445a, 0x445b, 0x445c, 0x445d, 0x445e,
+ 0x445f, 0x4460, 0x4461, 0x4462, 0x4463, 0x4464, 0x4465, 0x4466,
+ 0x4467, 0x4468, 0x4469, 0x446a, 0x446b, 0x446c, 0x446d, 0x446e,
+ 0x446f, 0x4470, 0x4471, 0x4472, 0x4473, 0x4474, 0x4475, 0x4476,
+ 0x4477, 0x4478, 0x4479, 0x447a, 0x447b, 0x447c, 0x447d, 0x447e,
+ 0x4521, 0x4522, 0x4523, 0x4524, 0x4525, 0x4526, 0x4527, 0x4528,
+ 0x4529, 0x452a, 0x452b, 0x452c, 0x452d, 0x452e, 0x452f, 0x4530,
+ 0x4531, 0x4532, 0x4533, 0x4534, 0x4535, 0x4536, 0x4537, 0x4538,
+ 0x4539, 0x453a, 0x453b, 0x453c, 0x453d, 0x453e, 0x453f, 0x4540,
+ 0x4541, 0x4542, 0x4543, 0x4544, 0x4545, 0x4546, 0x4547, 0x4548,
+ 0x4549, 0x454a, 0x454b, 0x454d, 0x454c, 0x454e, 0x454f, 0x4550,
+ 0x4551, 0x4552, 0x4553, 0x4554, 0x4555, 0x4556, 0x4557, 0x4558,
+ 0x4559, 0x455a, 0x455b, 0x455c, 0x455d, 0x455e, 0x455f, 0x4560,
+ 0x4561, 0x4562, 0x4563, 0x4564, 0x4565, 0x4566, 0x4567, 0x4568,
+ 0x4569, 0x456a, 0x456b, 0x456c, 0x456d, 0x456e, 0x456f, 0x4570,
+ 0x4571, 0x4572, 0x4573, 0x4574, 0x4575, 0x4576, 0x4577, 0x4578,
+ 0x4579, 0x457a, 0x457b, 0x457c, 0x457d, 0x457e, 0x4621, 0x4622,
+ 0x4623, 0x4624, 0x4625, 0x4626, 0x4627, 0x4628, 0x4629, 0x462a,
+ 0x462b, 0x462c, 0x462d, 0x462e, 0x462f, 0x4630, 0x4631, 0x4632,
+ 0x4633, 0x4634, 0x4635, 0x4636, 0x4637, 0x4638, 0x4639, 0x463a,
+ 0x463b, 0x463c, 0x463d, 0x463e, 0x463f, 0x4640, 0x4641, 0x4642,
+ 0x4643, 0x4644, 0x4645, 0x4646, 0x4647, 0x4648, 0x4649, 0x464a,
+ 0x464b, 0x464c, 0x464d, 0x464e, 0x464f, 0x4650, 0x4651, 0x4652,
+ 0x4653, 0x4654, 0x4655, 0x4656, 0x4657, 0x4658, 0x4659, 0x465a,
+ 0x465b, 0x465c, 0x465d, 0x465e, 0x465f, 0x4660, 0x4736, 0x4661,
+ 0x4662, 0x4663, 0x4664, 0x4665, 0x4666, 0x4667, 0x4668, 0x4669,
+ 0x466a, 0x466b, 0x466c, 0x466d, 0x466e, 0x466f, 0x4670, 0x4671,
+ 0x4672, 0x4673, 0x4674, 0x4675, 0x4676, 0x4677, 0x4678, 0x4679,
+ 0x467a, 0x467b, 0x467c, 0x467d, 0x467e, 0x4721, 0x4722, 0x4723,
+ 0x4724, 0x4725, 0x4726, 0x4727, 0x4728, 0x4729, 0x472a, 0x472b,
+ 0x472c, 0x472d, 0x472e, 0x472f, 0x4730, 0x4731, 0x4732, 0x4733,
+ 0x4734, 0x4735, 0x4737, 0x4738, 0x4739, 0x473a, 0x473b, 0x473c,
+ 0x473d, 0x473e, 0x473f, 0x4740, 0x4741, 0x4742, 0x4743, 0x4744,
+ 0x4745, 0x4746, 0x4747, 0x4748, 0x4749, 0x474a, 0x474b, 0x474c,
+ 0x474d, 0x474e, 0x474f, 0x4750, 0x4751, 0x4752, 0x4753, 0x4754,
+ 0x4755, 0x4756, 0x4757, 0x4758, 0x4759, 0x475a, 0x475b, 0x475c,
+ 0x475d, 0x475e, 0x475f, 0x4760, 0x4761, 0x4762, 0x4763, 0x4764,
+ 0x4765, 0x4766, 0x4767, 0x4768, 0x4769, 0x476a, 0x476b, 0x476c,
+ 0x476d, 0x476e, 0x476f, 0x4770, 0x4771, 0x4772, 0x4773, 0x4774,
+ 0x4775, 0x4776, 0x4777, 0x4778, 0x4779, 0x477a, 0x477b, 0x477c,
+ 0x477d, 0x477e, 0x4821, 0x4822, 0x4823, 0x4824, 0x4825, 0x4826,
+ 0x4827, 0x4828, 0x4829, 0x482a, 0x482b, 0x482c, 0x482d, 0x482e,
+ 0x482f, 0x4830, 0x4831, 0x4832, 0x4833, 0x4834, 0x4835, 0x4836,
+ 0x4837, 0x4838, 0x4839, 0x483a, 0x483b, 0x483c, 0x483d, 0x483e,
+ 0x483f, 0x4840, 0x4841, 0x4842, 0x4843, 0x4844, 0x4845, 0x4846,
+ 0x4847, 0x4848, 0x4849, 0x484a, 0x484b, 0x484c, 0x4853, 0x484d,
+ 0x484e, 0x484f, 0x4850, 0x4851, 0x4852, 0x4854, 0x4855, 0x4856,
+ 0x4857, 0x4858, 0x4859, 0x485a, 0x485b, 0x485c, 0x485d, 0x485e,
+ 0x485f, 0x4860, 0x4861, 0x4862, 0x4863, 0x4864, 0x4865, 0x4866,
+ 0x4867, 0x4868, 0x4869, 0x486a, 0x486b, 0x486c, 0x486d, 0x486e,
+ 0x486f, 0x4870, 0x4871, 0x4872, 0x4873, 0x4874, 0x4875, 0x4876,
+ 0x4877, 0x4878, 0x4879, 0x487a, 0x487b, 0x487c, 0x487d, 0x487e,
+ 0x4921, 0x4922, 0x4923, 0x4924, 0x4925, 0x4926, 0x4927, 0x4928,
+ 0x4929, 0x492a, 0x492b, 0x492c, 0x492d, 0x492e, 0x492f, 0x4930,
+ 0x4931, 0x4932, 0x4933, 0x4934, 0x4935, 0x4936, 0x4937, 0x4938,
+ 0x4939, 0x493a, 0x493b, 0x493c, 0x4941, 0x493d, 0x493e, 0x493f,
+ 0x4940, 0x4942, 0x4943, 0x4944, 0x4945, 0x4946, 0x4947, 0x4948,
+ 0x4949, 0x494a, 0x494b, 0x494c, 0x494d, 0x494e, 0x494f, 0x4950,
+ 0x4951, 0x4952, 0x4953, 0x4954, 0x4955, 0x4956, 0x4957, 0x4958,
+ 0x4959, 0x495a, 0x495b, 0x495c, 0x495d, 0x495e, 0x495f, 0x4960,
+ 0x4961, 0x4962, 0x4963, 0x4964, 0x4965, 0x4966, 0x4967, 0x4968,
+ 0x4969, 0x496a, 0x496b, 0x496c, 0x496d, 0x496e, 0x496f, 0x4970,
+ 0x4971, 0x4972, 0x4973, 0x4974, 0x4975, 0x4976, 0x4977, 0x4978,
+ 0x4979, 0x497a, 0x497b, 0x497c, 0x497d, 0x497e, 0x4a21, 0x4a22,
+ 0x4a23, 0x4a24, 0x4a25, 0x4a26, 0x4a27, 0x4a28, 0x4a29, 0x4a2a,
+ 0x4a2b, 0x4a2c, 0x4a2d, 0x4a2e, 0x4a2f, 0x4a30, 0x4a31, 0x4a32,
+ 0x4a33, 0x4a34, 0x4a35, 0x4a36, 0x4a37, 0x4a38, 0x4a39, 0x4a3a,
+ 0x4a3b, 0x4a3c, 0x4a3d, 0x4a3e, 0x4a3f, 0x4a40, 0x4a41, 0x4a42,
+ 0x4a43, 0x4a44, 0x4a45, 0x4a46, 0x4a47, 0x4a48, 0x4a49, 0x4a4a,
+ 0x4a4b, 0x4a4c, 0x4a4d, 0x4a4e, 0x4a4f, 0x4a50, 0x4a51, 0x4a52,
+ 0x4a53, 0x4a54, 0x4a55, 0x4a56, 0x4a57, 0x4a58, 0x4a59, 0x4a5a,
+ 0x4a5b, 0x4a5c, 0x4a5d, 0x4a5e, 0x4a5f, 0x4a60, 0x4a61, 0x4a62,
+ 0x4a63, 0x4a64, 0x4a65, 0x4a66, 0x4a67, 0x4a68, 0x4a69, 0x4a6a,
+ 0x4a6b, 0x4a6c, 0x4a6d, 0x4a6e, 0x4a6f, 0x4a70, 0x4a71, 0x4a72,
+ 0x4a73, 0x4a74, 0x4a75, 0x4a76, 0x4a77, 0x4a78, 0x4a79, 0x4a7a,
+ 0x4a7b, 0x4a7c, 0x4a7d, 0x4a7e, 0x4b21, 0x4b22, 0x4b23, 0x4b24,
+ 0x4b25, 0x4b26, 0x4b27, 0x4b28, 0x4b29, 0x4b2a, 0x4b2b, 0x4b2c,
+ 0x4b2d, 0x4b2e, 0x4b2f, 0x4b30, 0x4b31, 0x4b32, 0x4b33, 0x4b34,
+ 0x4b35, 0x4b36, 0x4b37, 0x4b38, 0x4b39, 0x4b3a, 0x4b3b, 0x4b3c,
+ 0x4b3d, 0x4b3e, 0x4b3f, 0x4b40, 0x4b41, 0x4b42, 0x4b43, 0x4b44,
+ 0x4b45, 0x4b46, 0x4b47, 0x4b48, 0x4b49, 0x4b4a, 0x4b4b, 0x4b4c,
+ 0x4b4d, 0x4b4e, 0x4b4f, 0x4b50, 0x4b51, 0x4b52, 0x4b53, 0x4b54,
+ 0x4b55, 0x4b56, 0x4b57, 0x4b58, 0x4b59, 0x4b5a, 0x4b5b, 0x4b5c,
+ 0x4b5d, 0x4b5e, 0x4b5f, 0x4b60, 0x4b61, 0x4b62, 0x4b63, 0x4b64,
+ 0x4b65, 0x4b66, 0x4b67, 0x4b68, 0x4b69, 0x4b6a, 0x4b6b, 0x4b6c,
+ 0x4b6d, 0x4b6e, 0x4b6f, 0x4b70, 0x4b71, 0x4b72, 0x4b73, 0x4b74,
+ 0x4b75, 0x4b76, 0x4b77, 0x4b78, 0x4b79, 0x4b7a, 0x4b7b, 0x4b7c,
+ 0x4b7d, 0x4b7e, 0x4c21, 0x4c22, 0x4c23, 0x4c24, 0x4c25, 0x4c26,
+ 0x4c27, 0x4c28, 0x4c29, 0x4c2a, 0x4c2b, 0x4c2c, 0x4c2d, 0x4c2e,
+ 0x4c2f, 0x4c30, 0x4c31, 0x4c32, 0x4c33, 0x4c34, 0x4c35, 0x4c36,
+ 0x4c37, 0x4c38, 0x4c39, 0x4c3a, 0x4c3b, 0x4c3c, 0x4c3d, 0x4c3e,
+ 0x4c3f, 0x4c40, 0x4c41, 0x4c42, 0x4c43, 0x4c44, 0x4c45, 0x4c46,
+ 0x4c47, 0x4c48, 0x4c49, 0x4c4a, 0x4c4b, 0x4c4c, 0x4c4d, 0x4c4e,
+ 0x4c4f, 0x4c50, 0x4c51, 0x4c52, 0x4c53, 0x4c54, 0x4c55, 0x4c56,
+ 0x4c57, 0x4c58, 0x4c59, 0x4c5a, 0x4c5b, 0x4c5c, 0x4c5d, 0x4c5e,
+ 0x4c5f, 0x4c60, 0x4c61, 0x4c62, 0x4c63, 0x4c64, 0x4c65, 0x4c66,
+ 0x4c67, 0x4c68, 0x4c69, 0x4c6a, 0x4c6b, 0x4c6c, 0x4c6d, 0x4c6e,
+ 0x4c6f, 0x4c70, 0x4c71, 0x4c72, 0x4c73, 0x4c74, 0x4c75, 0x4c76,
+ 0x4c77, 0x4c78, 0x4c79, 0x4c7a, 0x4c7b, 0x4c7c, 0x4c7d, 0x4c7e,
+ 0x4d21, 0x4d22, 0x4d23, 0x4d24, 0x4d25, 0x4d26, 0x4d27, 0x4d28,
+ 0x4d29, 0x4d2a, 0x4d2b, 0x4d2c, 0x4d2d, 0x4d2e, 0x4d2f, 0x4d30,
+ 0x4d31, 0x4d32, 0x4d33, 0x4d34, 0x4d35, 0x4d36, 0x4d37, 0x4d38,
+ 0x4d39, 0x4d3a, 0x4d3b, 0x4d3c, 0x4d3d, 0x4d3e, 0x4d3f, 0x4d40,
+ 0x4d41, 0x4d42, 0x4d43, 0x4d44, 0x4d45, 0x4d46, 0x4d47, 0x4d48,
+ 0x4d49, 0x4d4a, 0x4d4b, 0x4d4c, 0x4d4d, 0x4d4e, 0x4d4f, 0x4d50,
+ 0x4d51, 0x4d52, 0x4d53, 0x4d54, 0x4d55, 0x4d56, 0x4d57, 0x4d58,
+ 0x4d59, 0x4d5a, 0x4d5b, 0x4d5c, 0x4d5d, 0x4d5e, 0x4d5f, 0x4d60,
+ 0x4d61, 0x4d62, 0x4d63, 0x4d64, 0x4d65, 0x4d66, 0x4d67, 0x4d68,
+ 0x4d69, 0x4d6a, 0x4d6b, 0x4d6c, 0x4d6d, 0x4d6e, 0x4d6f, 0x4d70,
+ 0x4d71, 0x4d72, 0x4d73, 0x4d74, 0x4d75, 0x4d76, 0x4d77, 0x4d78,
+ 0x4d79, 0x4d7a, 0x4d7b, 0x4d7c, 0x4d7d, 0x4d7e, 0x4e21, 0x4e22,
+ 0x4e24, 0x4e25, 0x4e26, 0x4e27, 0x4e28, 0x4e29, 0x4e23, 0x4e2a,
+ 0x4e2b, 0x4e2c, 0x4e2d, 0x4e2e, 0x4e2f, 0x4e30, 0x4e31, 0x4e32,
+ 0x4e33, 0x4e34, 0x4e35, 0x4e36, 0x4e37, 0x4e38, 0x4e39, 0x4e3a,
+ 0x4e3b, 0x4e3c, 0x4e3d, 0x4e3e, 0x4e3f, 0x4e40, 0x4e41, 0x4e42,
+ 0x4e43, 0x4e44, 0x4e45, 0x4e46, 0x4e47, 0x4e48, 0x4e49, 0x4e4a,
+ 0x4e4b, 0x4e4c, 0x4e4d, 0x4e4e, 0x4e4f, 0x4e50, 0x4e51, 0x4e52,
+ 0x4e53, 0x4e54, 0x4e55, 0x4e56, 0x4e57, 0x4e58, 0x4e59, 0x4e5a,
+ 0x4e5b, 0x4e5c, 0x4e5d, 0x4e5e, 0x4e5f, 0x4e60, 0x4e61, 0x4e62,
+ 0x4e63, 0x4e64, 0x4e65, 0x4e66, 0x4e67, 0x4e68, 0x4e69, 0x4e6a,
+ 0x4e6b, 0x4e6c, 0x4e6d, 0x4e6e, 0x4e6f, 0x4e70, 0x4e71, 0x4e72,
+ 0x4e73, 0x4e74, 0x4e75, 0x4e76, 0x4e77, 0x4e78, 0x4e79, 0x4e7a,
+ 0x4e7b, 0x4e7c, 0x4e7d, 0x4e7e, 0x4f21, 0x4f22, 0x4f23, 0x4f24,
+ 0x4f25, 0x4f26, 0x4f27, 0x4f28, 0x4f29, 0x4f2a, 0x4f2b, 0x4f2c,
+ 0x4f2d, 0x4f2e, 0x4f2f, 0x4f30, 0x4f31, 0x4f32, 0x4f33, 0x4f34,
+ 0x4f35, 0x4f36, 0x4f37, 0x4f38, 0x4f39, 0x4f3a, 0x4f3b, 0x4f3c,
+ 0x4f3d, 0x4f3e, 0x4f3f, 0x4f40, 0x4f41, 0x4f42, 0x4f43, 0x4f44,
+ 0x4f45, 0x4f46, 0x4f47, 0x4f48, 0x4f49, 0x4f4a, 0x4f4b, 0x4f4c,
+ 0x4f4d, 0x4f4e, 0x4f4f, 0x4f50, 0x4f51, 0x4f52, 0x4f53, 0x4f54,
+ 0x4f55, 0x4f56, 0x4f57, 0x4f58, 0x4f59, 0x4f5a, 0x4f5b, 0x4f5c,
+ 0x4f5d, 0x4f5e, 0x4f5f, 0x4f60, 0x4f61, 0x4f62, 0x4f63, 0x4f64,
+ 0x4f65, 0x4f66, 0x4f67, 0x4f68, 0x4f69, 0x4f6a, 0x4f6b, 0x4f6c,
+ 0x4f6d, 0x4f6e, 0x4f6f, 0x4f70, 0x4f71, 0x4f72, 0x4f74, 0x4f75,
+ 0x4f76, 0x4f73, 0x4f77, 0x4f78, 0x4f79, 0x4f7a, 0x4f7b, 0x4f7c,
+ 0x4f7d, 0x4f7e, 0x5021, 0x5022, 0x5023, 0x5024, 0x5025, 0x5026,
+ 0x5027, 0x5028, 0x5029, 0x502a, 0x502b, 0x502c, 0x502e, 0x502f,
+ 0x5030, 0x5031, 0x502d, 0x5032, 0x5033, 0x5034, 0x5035, 0x5037,
+ 0x5038, 0x5039, 0x503a, 0x503b, 0x5036, 0x503c, 0x503d, 0x503e,
+ 0x503f, 0x5040, 0x5041, 0x5042, 0x5043, 0x5044, 0x5045, 0x5046,
+ 0x5047, 0x5048, 0x5049, 0x504a, 0x504b, 0x504c, 0x504d, 0x504e,
+ 0x504f, 0x5050, 0x5051, 0x5052, 0x5053, 0x5054, 0x5055, 0x5056,
+ 0x5057, 0x5058, 0x5059, 0x505a, 0x505b, 0x505c, 0x505d, 0x505e,
+ 0x505f, 0x5060, 0x5061, 0x5062, 0x5063, 0x5064, 0x5065, 0x5066,
+ 0x5067, 0x5068, 0x5069, 0x506a, 0x506b, 0x506c, 0x506d, 0x506e,
+ 0x506f, 0x5070, 0x5071, 0x5072, 0x5073, 0x5074, 0x5075, 0x5076,
+ 0x5077, 0x5078, 0x5079, 0x507a, 0x507b, 0x507c, 0x507d, 0x507e,
+ 0x5121, 0x5122, 0x5123, 0x5124, 0x5125, 0x5126, 0x5127, 0x5128,
+ 0x5129, 0x512a, 0x512b, 0x512c, 0x512d, 0x512e, 0x512f, 0x5130,
+ 0x5131, 0x5132, 0x5133, 0x5134, 0x5135, 0x5136, 0x5137, 0x5138,
+ 0x5139, 0x513a, 0x513b, 0x513c, 0x513d, 0x513e, 0x513f, 0x5140,
+ 0x5141, 0x5142, 0x5143, 0x5144, 0x5145, 0x5146, 0x5147, 0x5148,
+ 0x5149, 0x514a, 0x514b, 0x514c, 0x514d, 0x514e, 0x514f, 0x5150,
+ 0x5151, 0x5152, 0x5153, 0x5154, 0x5155, 0x5156, 0x5157, 0x5158,
+ 0x5159, 0x515a, 0x515b, 0x515c, 0x515d, 0x515e, 0x515f, 0x5160,
+ 0x5161, 0x5162, 0x5163, 0x5164, 0x5165, 0x5166, 0x5167, 0x5168,
+ 0x5169, 0x516a, 0x516b, 0x516c, 0x516d, 0x516e, 0x516f, 0x5170,
+ 0x5171, 0x5172, 0x5173, 0x5174, 0x5175, 0x5176, 0x5177, 0x5178,
+ 0x5179, 0x517a, 0x517b, 0x517c, 0x517d, 0x517e, 0x5221, 0x5222,
+ 0x5223, 0x5224, 0x5225, 0x5226, 0x5227, 0x5228, 0x5229, 0x522a,
+ 0x522b, 0x522c, 0x522d, 0x522e, 0x522f, 0x5230, 0x5231, 0x5232,
+ 0x5233, 0x5234, 0x5235, 0x5236, 0x5237, 0x5238, 0x5239, 0x523a,
+ 0x523b, 0x523c, 0x523d, 0x523e, 0x523f, 0x5240, 0x5241, 0x5242,
+ 0x5243, 0x5244, 0x5245, 0x5246, 0x5247, 0x5248, 0x5249, 0x524a,
+ 0x524b, 0x524c, 0x524d, 0x524e, 0x524f, 0x5250, 0x5251, 0x5252,
+ 0x5253, 0x5254, 0x5255, 0x5256, 0x5257, 0x5258, 0x5259, 0x525a,
+ 0x525b, 0x525c, 0x525d, 0x525e, 0x525f, 0x5260, 0x5261, 0x5262,
+ 0x5263, 0x5264, 0x5265, 0x5266, 0x5267, 0x5268, 0x5269, 0x526a,
+ 0x526b, 0x526c, 0x526d, 0x526e, 0x526f, 0x5270, 0x5271, 0x5272,
+ 0x5273, 0x5274, 0x5276, 0x5277, 0x5278, 0x5275, 0x5279, 0x527a,
+ 0x527b, 0x527c, 0x527d, 0x527e, 0x5321, 0x5322, 0x5323, 0x5324,
+ 0x5325, 0x5326, 0x5327, 0x5328, 0x5329, 0x532a, 0x532b, 0x532c,
+ 0x532d, 0x532e, 0x532f, 0x5330, 0x5331, 0x5332, 0x5333, 0x5334,
+ 0x5335, 0x5336, 0x5337, 0x5338, 0x5339, 0x533a, 0x533b, 0x533c,
+ 0x533d, 0x533e, 0x533f, 0x5340, 0x5341, 0x5342, 0x5343, 0x5344,
+ 0x5345, 0x5346, 0x5347, 0x5348, 0x5349, 0x534a, 0x534b, 0x534c,
+ 0x534d, 0x534e, 0x534f, 0x5350, 0x5351, 0x5352, 0x5353, 0x5354,
+ 0x5355, 0x5356, 0x5357, 0x5358, 0x5359, 0x535a, 0x535b, 0x535c,
+ 0x535d, 0x535e, 0x535f, 0x5360, 0x5361, 0x5362, 0x5363, 0x5364,
+ 0x5365, 0x5366, 0x5367, 0x5368, 0x5369, 0x536a, 0x536b, 0x536c,
+ 0x536d, 0x536e, 0x536f, 0x5370, 0x5371, 0x5372, 0x5373, 0x5374,
+ 0x5375, 0x5376, 0x5377, 0x5378, 0x5379, 0x537a, 0x537b, 0x537c,
+ 0x537d, 0x537e, 0x5421, 0x5422, 0x5423, 0x5424, 0x5425, 0x5426,
+ 0x5427, 0x5428, 0x5429, 0x542a, 0x542b, 0x542c, 0x542d, 0x542e,
+ 0x542f, 0x5430, 0x5431, 0x5432, 0x5434, 0x5435, 0x5436, 0x5437,
+ 0x5438, 0x5439, 0x543a, 0x543b, 0x543c, 0x543d, 0x543e, 0x5433,
+ 0x543f, 0x5440, 0x5441, 0x5442, 0x5443, 0x5444, 0x5445, 0x5446,
+ 0x5447, 0x5448, 0x5449, 0x544a, 0x544b, 0x544c, 0x544d, 0x544e,
+ 0x544f, 0x5450, 0x5451, 0x5452, 0x5453, 0x5454, 0x5455, 0x5456,
+ 0x5457, 0x5458, 0x5459, 0x545a, 0x545b, 0x545c, 0x545d, 0x545e,
+ 0x545f, 0x5460, 0x5461, 0x5462, 0x5463, 0x5464, 0x5465, 0x5466,
+ 0x5467, 0x5468, 0x5469, 0x546a, 0x546c, 0x546b, 0x546d, 0x546e,
+ 0x546f, 0x5470, 0x5471, 0x5472, 0x5473, 0x5474, 0x5475, 0x5476,
+ 0x5477, 0x5478, 0x5479, 0x547a, 0x547b, 0x547c, 0x547d, 0x547e,
+ 0x5521, 0x5522, 0x5523, 0x5524, 0x5525, 0x5526, 0x5527, 0x5528,
+ 0x5529, 0x552a, 0x552b, 0x552c, 0x552d, 0x552e, 0x552f, 0x5530,
+ 0x5531, 0x5532, 0x5533, 0x5534, 0x5535, 0x5536, 0x5537, 0x5538,
+ 0x5539, 0x553a, 0x553b, 0x553c, 0x553d, 0x553e, 0x553f, 0x5540,
+ 0x5541, 0x5542, 0x5543, 0x5544, 0x5545, 0x5546, 0x5547, 0x5548,
+ 0x5549, 0x554a, 0x554b, 0x554c, 0x554d, 0x554e, 0x554f, 0x5550,
+ 0x5551, 0x5552, 0x5553, 0x5554, 0x5555, 0x5556, 0x5557, 0x5558,
+ 0x5559, 0x555a, 0x555b, 0x555c, 0x555d, 0x555e, 0x555f, 0x5560,
+ 0x5561, 0x5562, 0x5563, 0x5564, 0x5565, 0x5566, 0x5567, 0x5568,
+ 0x5569, 0x556a, 0x556b, 0x556c, 0x556d, 0x556e, 0x556f, 0x5570,
+ 0x5571, 0x5572, 0x5573, 0x5574, 0x5575, 0x5576, 0x5577, 0x5578,
+ 0x5579, 0x557a, 0x557b, 0x557c, 0x557d, 0x557e, 0x5621, 0x5622,
+ 0x5623, 0x5624, 0x5625, 0x5626, 0x5627, 0x5628, 0x5629, 0x562a,
+ 0x562b, 0x562c, 0x562d, 0x562e, 0x562f, 0x5630, 0x5631, 0x5632,
+ 0x5633, 0x5634, 0x5635, 0x5636, 0x5637, 0x5638, 0x5639, 0x563a,
+ 0x563b, 0x563c, 0x563d, 0x563e, 0x563f, 0x5640, 0x5641, 0x5642,
+ 0x5643, 0x5644, 0x5645, 0x5647, 0x5648, 0x5649, 0x564a, 0x564b,
+ 0x5646, 0x564c, 0x564d, 0x564e, 0x564f, 0x5650, 0x5651, 0x5652,
+ 0x5653, 0x5654, 0x5656, 0x5657, 0x5658, 0x5655, 0x5659, 0x565a,
+ 0x565b, 0x565c, 0x565d, 0x565e, 0x565f, 0x5660, 0x5661, 0x5662,
+ 0x5663, 0x5664, 0x5665, 0x5666, 0x5667, 0x5668, 0x5669, 0x566a,
+ 0x566b, 0x566c, 0x566d, 0x566e, 0x566f, 0x5670, 0x5671, 0x5672,
+ 0x5673, 0x5674, 0x5675, 0x5676, 0x5677, 0x5678, 0x5679, 0x567a,
+ 0x567b, 0x567c, 0x567d, 0x567e, 0x5721, 0x5722, 0x5723, 0x5724,
+ 0x5725, 0x5726, 0x5727, 0x5728, 0x5729, 0x572a, 0x572b, 0x572c,
+ 0x572d, 0x572e, 0x572f, 0x5730, 0x5731, 0x5732, 0x5733, 0x5734,
+ 0x5735, 0x5736, 0x5737, 0x5738, 0x5739, 0x573a, 0x573b, 0x573c,
+ 0x573d, 0x573e, 0x573f, 0x5740, 0x5741, 0x5742, 0x5743, 0x5744,
+ 0x5745, 0x5746, 0x5747, 0x5748, 0x5749, 0x574a, 0x574b, 0x574c,
+ 0x574d, 0x574e, 0x574f, 0x5750, 0x5751, 0x5752, 0x5753, 0x5754,
+ 0x5755, 0x5756, 0x5757, 0x5758, 0x5759, 0x575a, 0x575b, 0x575c,
+ 0x575d, 0x575e, 0x575f, 0x5760, 0x5761, 0x5762, 0x5764, 0x5765,
+ 0x5766, 0x5767, 0x5768, 0x5769, 0x576a, 0x576b, 0x576c, 0x576d,
+ 0x576e, 0x576f, 0x5770, 0x5771, 0x5772, 0x5773, 0x5774, 0x5775,
+ 0x5776, 0x5777, 0x5778, 0x5779, 0x583e, 0x5763, 0x577a, 0x577b,
+ 0x577c, 0x577d, 0x577e, 0x5821, 0x5822, 0x5823, 0x5824, 0x5825,
+ 0x5826, 0x5827, 0x5828, 0x5829, 0x582a, 0x582b, 0x582c, 0x582d,
+ 0x582e, 0x582f, 0x5830, 0x5831, 0x5832, 0x5833, 0x584c, 0x5834,
+ 0x5835, 0x5836, 0x5837, 0x5838, 0x5839, 0x583a, 0x583b, 0x583c,
+ 0x583d, 0x583f, 0x5840, 0x5841, 0x5842, 0x5843, 0x5844, 0x5845,
+ 0x5846, 0x5847, 0x5848, 0x5849, 0x584a, 0x584b, 0x584d, 0x584e,
+ 0x584f, 0x5850, 0x5851, 0x5852, 0x5853, 0x5854, 0x5855, 0x5856,
+ 0x5857, 0x5858, 0x5859, 0x585a, 0x585b, 0x585c, 0x585d, 0x585e,
+ 0x585f, 0x5860, 0x5861, 0x5862, 0x5863, 0x5864, 0x5865, 0x5866,
+ 0x5867, 0x5868, 0x5869, 0x586a, 0x586b, 0x586c, 0x586d, 0x586e,
+ 0x586f, 0x5870, 0x5871, 0x5872, 0x5873, 0x5874, 0x5875, 0x5876,
+ 0x5877, 0x5878, 0x5879, 0x587a, 0x587b, 0x587c, 0x587d, 0x587e,
+ 0x5921, 0x5922, 0x5923, 0x5924, 0x5925, 0x5926, 0x5927, 0x5928,
+ 0x592a, 0x592b, 0x592c, 0x592d, 0x592e, 0x592f, 0x5930, 0x5931,
+ 0x5932, 0x5933, 0x5934, 0x5935, 0x5936, 0x5937, 0x5938, 0x5939,
+ 0x593a, 0x593b, 0x593c, 0x5929, 0x593d, 0x593e, 0x593f, 0x5940,
+ 0x5941, 0x5942, 0x5943, 0x5944, 0x5945, 0x5946, 0x5947, 0x5948,
+ 0x5949, 0x594a, 0x594b, 0x594c, 0x594d, 0x594e, 0x594f, 0x5950,
+ 0x5951, 0x5952, 0x5953, 0x5954, 0x5955, 0x5956, 0x5957, 0x5958,
+ 0x5959, 0x595a, 0x595b, 0x595c, 0x595d, 0x595e, 0x595f, 0x5960,
+ 0x5961, 0x5962, 0x5963, 0x5964, 0x5965, 0x5966, 0x5974, 0x5967,
+ 0x5968, 0x5969, 0x596a, 0x596b, 0x596c, 0x596d, 0x596e, 0x596f,
+ 0x5970, 0x5971, 0x5972, 0x5973, 0x5975, 0x5976, 0x5977, 0x5978,
+ 0x5979, 0x597a, 0x597b, 0x597c, 0x597d, 0x597e, 0x5a21, 0x5a22,
+ 0x5a23, 0x5a24, 0x5a25, 0x5a26, 0x5a27, 0x5a28, 0x5a29, 0x5a2a,
+ 0x5a2b, 0x5a2c, 0x5a2d, 0x5a2e, 0x5a2f, 0x5a30, 0x5a31, 0x5a32,
+ 0x5a33, 0x5a34, 0x5a35, 0x5a36, 0x3866, 0x5a37, 0x5a38, 0x5a39,
+ 0x5a3a, 0x5a3b, 0x5a3c, 0x5a3d, 0x5a3e, 0x5a3f, 0x5a40, 0x5a41,
+ 0x5a42, 0x5a43, 0x5a44, 0x5a45, 0x5a46, 0x5a47, 0x5a48, 0x5a49,
+ 0x5a4a, 0x5a4b, 0x5a6d, 0x5a4c, 0x5a4d, 0x5a4e, 0x5a4f, 0x5a50,
+ 0x5a51, 0x5a52, 0x5a53, 0x5a54, 0x5a55, 0x5a56, 0x5a57, 0x5a58,
+ 0x5a59, 0x5a5a, 0x5a5b, 0x5a5c, 0x5a5d, 0x5a5e, 0x5a5f, 0x5a60,
+ 0x5a61, 0x5a62, 0x5a63, 0x5a64, 0x5a65, 0x5a66, 0x5a67, 0x5a68,
+ 0x5a69, 0x5a6a, 0x5a6b, 0x5a6c, 0x5a6e, 0x5a6f, 0x5a70, 0x5a71,
+ 0x5a72, 0x5a73, 0x5a74, 0x5a75, 0x5a76, 0x5a77, 0x5a78, 0x5a79,
+ 0x5a7a, 0x5a7b, 0x5a7c, 0x5a7d, 0x5a7e, 0x5b21, 0x5b22, 0x5b23,
+ 0x5b24, 0x5b25, 0x5b26, 0x5b27, 0x5b28, 0x5b29, 0x5b2a, 0x5b2b,
+ 0x5b2c, 0x5b2d, 0x5b2e, 0x5b2f, 0x5b30, 0x5b31, 0x5b32, 0x5b33,
+ 0x5b34, 0x5b35, 0x5b36, 0x5b37, 0x5b38, 0x5b39, 0x5b3a, 0x5b3b,
+ 0x5b3c, 0x5b3d, 0x5b3e, 0x5b3f, 0x5b40, 0x5b41, 0x5b42, 0x5b43,
+ 0x5b44, 0x5b45, 0x5b46, 0x5b47, 0x5b48, 0x5b49, 0x5b4a, 0x5b4b,
+ 0x5b4c, 0x5b4d, 0x5b4e, 0x5b4f, 0x5b50, 0x5b51, 0x5b52, 0x5b53,
+ 0x5b54, 0x5b55, 0x5b56, 0x5b57, 0x5b58, 0x5b59, 0x5b5a, 0x5b5b,
+ 0x5b5c, 0x5b5d, 0x5b5e, 0x5b5f, 0x5b60, 0x5b61, 0x5b62, 0x5b63,
+ 0x5b64, 0x5b65, 0x5b66, 0x5b67, 0x5b68, 0x5b69, 0x5b6a, 0x5b6b,
+ 0x5b6c, 0x5b6d, 0x5b6e, 0x5b70, 0x5b71, 0x5b72, 0x5b73, 0x5b6f,
+ 0x5b74, 0x5b75, 0x5b76, 0x5b77, 0x5b78, 0x5b79, 0x5b7a, 0x5b7b,
+ 0x5b7c, 0x5b7d, 0x5b7e, 0x5c21, 0x5c22, 0x5c23, 0x5c24, 0x5c25,
+ 0x5c26, 0x5c27, 0x5c28, 0x5c29, 0x5c2a, 0x5c2b, 0x5c2c, 0x5c2d,
+ 0x5c2e, 0x5c2f, 0x5c30, 0x5c31, 0x5c32, 0x5c33, 0x5c34, 0x5c35,
+ 0x5c36, 0x5c37, 0x5c38, 0x5c39, 0x5c3a, 0x5c3b, 0x5c3c, 0x5c3d,
+ 0x5c3e, 0x5c3f, 0x5c40, 0x5c41, 0x5c42, 0x5c43, 0x5c44, 0x5c45,
+ 0x5c46, 0x5c47, 0x5c48, 0x5c49, 0x5c4a, 0x5c4b, 0x5c4c, 0x5c4d,
+ 0x5c4e, 0x5c4f, 0x5c50, 0x5c51, 0x5c52, 0x5c53, 0x5c54, 0x5c55,
+ 0x5c56, 0x5c57, 0x5c58, 0x5c59, 0x5c5a, 0x5c5b, 0x5c5c, 0x5c5d,
+ 0x5c5e, 0x5c5f, 0x5c60, 0x5c61, 0x5c62, 0x5c63, 0x5c64, 0x5c65,
+ 0x5c66, 0x5c67, 0x5c68, 0x5c69, 0x5c6a, 0x5c6b, 0x5c6c, 0x5c6d,
+ 0x5c6e, 0x5c6f, 0x5c70, 0x5c71, 0x5c72, 0x5c73, 0x5c74, 0x5c75,
+ 0x5c76, 0x5c77, 0x5c78, 0x5c79, 0x5c7a, 0x5c7b, 0x5c7c, 0x5c7d,
+ 0x5c7e, 0x5d21, 0x5d22, 0x5d23, 0x5d24, 0x5d25, 0x5d26, 0x5d27,
+ 0x5d28, 0x5d29, 0x5d2a, 0x5d2b, 0x5d2c, 0x5d2d, 0x5d2e, 0x5d2f,
+ 0x5d30, 0x5d31, 0x5d32, 0x5d33, 0x5d34, 0x5d35, 0x5d36, 0x5d37,
+ 0x5d38, 0x5d39, 0x5d3a, 0x5d3b, 0x5d3c, 0x5d3d, 0x5d3e, 0x5d3f,
+ 0x5d40, 0x5d41, 0x5d42, 0x5d43, 0x5d44, 0x5d45, 0x5d46, 0x5d47,
+ 0x5d48, 0x5d49, 0x5d4a, 0x5d4b, 0x5d4c, 0x5d4d, 0x5d4e, 0x5d4f,
+ 0x5d50, 0x5d51, 0x5d52, 0x5d53, 0x5d54, 0x5d55, 0x5d56, 0x5d57,
+ 0x5d58, 0x5d59, 0x5d5a, 0x5d5b, 0x5d5c, 0x5d5d, 0x5d5e, 0x5d5f,
+ 0x5d60, 0x5d61, 0x5d62, 0x5d63, 0x5d64, 0x5d65, 0x5d66, 0x5d67,
+ 0x5d68, 0x5d69, 0x5d6a, 0x5d6b, 0x5d6c, 0x5d6d, 0x5d6e, 0x5d6f,
+ 0x5d70, 0x5d71, 0x5d72, 0x5d73, 0x5d74, 0x5d75, 0x5d76, 0x5d77,
+ 0x5d78, 0x5d79, 0x5d7a, 0x5d7b, 0x5d7c, 0x5d7d, 0x5d7e, 0x5e21,
+ 0x5e22, 0x5e23, 0x5e24, 0x5e25, 0x5e26, 0x5e27, 0x5e28, 0x5e29,
+ 0x5e2a, 0x5e2b, 0x5e2c, 0x5e2d, 0x5e2e, 0x5e2f, 0x5e30, 0x5e31,
+ 0x5e32, 0x5e33, 0x5e34, 0x5e35, 0x5e36, 0x5e37, 0x5e38, 0x5e39,
+ 0x5e3f, 0x5e3a, 0x5e3b, 0x5e3c, 0x5e3d, 0x5e3e, 0x5e40, 0x5e41,
+ 0x5e42, 0x5e43, 0x5e44, 0x5e45, 0x5e46, 0x5e47, 0x5e48, 0x5e49,
+ 0x5e4e, 0x5e4a, 0x5e4b, 0x5e4c, 0x5e4d, 0x5e4f, 0x5e50, 0x5e51,
+ 0x5e52, 0x5e53, 0x5e54, 0x5e55, 0x5e56, 0x5e57, 0x5e58, 0x5e59,
+ 0x5e5a, 0x5e5b, 0x5e5c, 0x5e5d, 0x5e5e, 0x5e5f, 0x5e60, 0x5e61,
+ 0x5e62, 0x5e63, 0x5e64, 0x5e65, 0x5e66, 0x5e67, 0x5e68, 0x5e69,
+ 0x5e6a, 0x5e6b, 0x5e6c, 0x5e6d, 0x5e6e, 0x5e6f, 0x5e72, 0x5e70,
+ 0x5e71, 0x5e73, 0x5e74, 0x5e75, 0x5e76, 0x5e77, 0x5e78, 0x5e79,
+ 0x5e7a, 0x5e7b, 0x5e7c, 0x5e7d, 0x5e7e, 0x5f21, 0x5f22, 0x5f23,
+ 0x5f24, 0x5f25, 0x5f26, 0x5f27, 0x5f28, 0x5f29, 0x5f2a, 0x5f2b,
+ 0x5f2c, 0x5f2d, 0x5f2e, 0x5f2f, 0x5f30, 0x5f32, 0x5f31, 0x5f33,
+ 0x5f34, 0x5f35, 0x5f36, 0x5f37, 0x5f38, 0x5f39, 0x5f3a, 0x5f3b,
+ 0x5f3c, 0x5f3d, 0x5f3e, 0x5f3f, 0x5f40, 0x5f41, 0x5f42, 0x5f43,
+ 0x5f44, 0x5f45, 0x5f46, 0x5f47, 0x5f48, 0x5f49, 0x5f4a, 0x5f4b,
+ 0x5f4c, 0x5f4d, 0x5f4e, 0x5f4f, 0x5f50, 0x5f51, 0x5f52, 0x5f53,
+ 0x5f54, 0x5f55, 0x5f56, 0x5f57, 0x5f58, 0x5f59, 0x5f5a, 0x5f5b,
+ 0x5f5c, 0x5f5d, 0x5f6f, 0x5f5e, 0x5f5f, 0x5f60, 0x5f61, 0x5f62,
+ 0x5f63, 0x5f64, 0x5f65, 0x5f66, 0x5f67, 0x5f68, 0x5f69, 0x5f6a,
+ 0x5f6b, 0x5f6c, 0x5f6d, 0x5f6e, 0x5f70, 0x5f71, 0x5f72, 0x5f73,
+ 0x5f74, 0x5f75, 0x5f76, 0x5f77, 0x5f78, 0x5f79, 0x5f7a, 0x5f7b,
+ 0x5f7c, 0x5f7d, 0x5f7e, 0x6021, 0x6022, 0x6023, 0x6024, 0x6025,
+ 0x6026, 0x6027, 0x6028, 0x6029, 0x602a, 0x602b, 0x602c, 0x602d,
+ 0x602e, 0x602f, 0x6030, 0x6031, 0x6032, 0x6033, 0x6034, 0x6035,
+ 0x6036, 0x6037, 0x6038, 0x6039, 0x603a, 0x603b, 0x603c, 0x603d,
+ 0x603e, 0x603f, 0x6040, 0x6041, 0x6042, 0x6043, 0x6044, 0x6045,
+ 0x6046, 0x6047, 0x6048, 0x6049, 0x604a, 0x604b, 0x604c, 0x604d,
+ 0x604e, 0x604f, 0x6050, 0x6051, 0x6052, 0x6053, 0x6054, 0x6055,
+ 0x6056, 0x6057, 0x6058, 0x6059, 0x605a, 0x605b, 0x605c, 0x605d,
+ 0x6064, 0x605e, 0x605f, 0x6060, 0x6061, 0x6062, 0x6063, 0x6065,
+ 0x6066, 0x6067, 0x6068, 0x6069, 0x606a, 0x606b, 0x606c, 0x606d,
+ 0x606e, 0x606f, 0x6070, 0x6071, 0x6072, 0x6073, 0x6074, 0x6075,
+ 0x6076, 0x6077, 0x6078, 0x6079, 0x607a, 0x607b, 0x607c, 0x607d,
+ 0x607e, 0x6121, 0x6122, 0x6123, 0x6124, 0x6125, 0x6126, 0x6127,
+ 0x6128, 0x6129, 0x612a, 0x612b, 0x612c, 0x612d, 0x612e, 0x612f,
+ 0x6130, 0x6131, 0x6132, 0x6133, 0x6134, 0x6135, 0x6136, 0x6137,
+ 0x6138, 0x6139, 0x613a, 0x613b, 0x613c, 0x613d, 0x613e, 0x613f,
+ 0x6140, 0x6141, 0x6142, 0x6143, 0x6144, 0x6145, 0x6146, 0x6147,
+ 0x6148, 0x6149, 0x614a, 0x614b, 0x614c, 0x614d, 0x614e, 0x614f,
+ 0x6150, 0x6151, 0x6152, 0x6154, 0x6155, 0x6156, 0x6153, 0x6157,
+ 0x6158, 0x6159, 0x615a, 0x615b, 0x615c, 0x615d, 0x615e, 0x615f,
+ 0x6160, 0x6161, 0x6162, 0x6163, 0x6164, 0x6165, 0x6166, 0x6167,
+ 0x6168, 0x6169, 0x616a, 0x616b, 0x616c, 0x616d, 0x616e, 0x616f,
+ 0x6170, 0x6171, 0x6172, 0x6173, 0x6174, 0x6175, 0x6176, 0x6177,
+ 0x6178, 0x6179, 0x617a, 0x617b, 0x617d, 0x617e, 0x6221, 0x6222,
+ 0x6223, 0x6224, 0x617c, 0x622d, 0x6225, 0x6226, 0x6227, 0x6228,
+ 0x6229, 0x622a, 0x622b, 0x622c, 0x622f, 0x6230, 0x6231, 0x6232,
+ 0x622e, 0x6233, 0x6234, 0x6235, 0x6236, 0x6237, 0x6238, 0x6239,
+ 0x623a, 0x623b, 0x623c, 0x623d, 0x623e, 0x623f, 0x6240, 0x6241,
+ 0x6242, 0x6243, 0x6245, 0x6246, 0x6244, 0x6247, 0x6248, 0x6249,
+ 0x624a, 0x624b, 0x624c, 0x624d, 0x624e, 0x624f, 0x6250, 0x6251,
+ 0x6252, 0x6253, 0x6254, 0x6255, 0x6256, 0x6257, 0x6258, 0x6259,
+ 0x625a, 0x625b, 0x625c, 0x625d, 0x625e, 0x625f, 0x6260, 0x6261,
+ 0x6262, 0x6263, 0x6264, 0x6265, 0x6266, 0x6267, 0x6268, 0x6269,
+ 0x626a, 0x626b, 0x626c, 0x626d, 0x626e, 0x626f, 0x6270, 0x6271,
+ 0x6272, 0x6273, 0x6274, 0x6275, 0x6276, 0x6277, 0x6278, 0x6279,
+ 0x627a, 0x627b, 0x627c, 0x627d, 0x627e, 0x6321, 0x6322, 0x6323,
+ 0x6324, 0x6325, 0x6326, 0x6327, 0x6328, 0x6329, 0x632a, 0x632b,
+ 0x632c, 0x632d, 0x632e, 0x632f, 0x6330, 0x6331, 0x6332, 0x6333,
+ 0x6334, 0x6335, 0x6336, 0x6337, 0x6338, 0x6339, 0x633a, 0x633b,
+ 0x633c, 0x633d, 0x633e, 0x633f, 0x6340, 0x6341, 0x6342, 0x6343,
+ 0x6344, 0x6345, 0x6346, 0x6347, 0x6348, 0x6349, 0x634a, 0x634b,
+ 0x634c, 0x634d, 0x634e, 0x634f, 0x6350, 0x6351, 0x6352, 0x6353,
+ 0x6354, 0x6355, 0x6356, 0x6357, 0x6358, 0x6359, 0x635a, 0x635b,
+ 0x635c, 0x635d, 0x635e, 0x635f, 0x6360, 0x6361, 0x6362, 0x6363,
+ 0x6364, 0x6365, 0x6366, 0x6367, 0x6368, 0x6369, 0x636a, 0x636b,
+ 0x636c, 0x636d, 0x636e, 0x636f, 0x6370, 0x6371, 0x6372, 0x6373,
+ 0x6374, 0x6375, 0x6376, 0x6377, 0x6378, 0x6379, 0x637a, 0x637b,
+ 0x637c, 0x637d, 0x637e, 0x6421, 0x6422, 0x6423, 0x6424, 0x6425,
+ 0x6426, 0x6427, 0x6428, 0x6429, 0x642a, 0x642b, 0x642c, 0x642d,
+ 0x642e, 0x642f, 0x6430, 0x6431, 0x6432, 0x6433, 0x6434, 0x6435,
+ 0x6436, 0x6437, 0x6438, 0x6439, 0x643a, 0x643b, 0x643c, 0x643d,
+ 0x643e, 0x643f, 0x6440, 0x6441, 0x6442, 0x6443, 0x6444, 0x6445,
+ 0x6446, 0x6447, 0x6448, 0x6449, 0x644a, 0x644b, 0x644c, 0x644d,
+ 0x644e, 0x644f, 0x6450, 0x6451, 0x6452, 0x6453, 0x6454, 0x6455,
+ 0x6456, 0x6457, 0x6458, 0x6459, 0x645a, 0x645b, 0x645c, 0x645d,
+ 0x645e, 0x645f, 0x6460, 0x6461, 0x6462, 0x6463, 0x6464, 0x6465,
+ 0x6466, 0x6467, 0x6468, 0x6469, 0x646a, 0x646b, 0x646c, 0x646d,
+ 0x646e, 0x646f, 0x6470, 0x6471, 0x6472, 0x6473, 0x6474, 0x6475,
+ 0x6476, 0x6477, 0x6478, 0x6479, 0x647a, 0x647b, 0x647c, 0x647d,
+ 0x647e, 0x6521, 0x6522, 0x6523, 0x6524, 0x6525, 0x6526, 0x6527,
+ 0x6528, 0x6529, 0x652a, 0x652b, 0x652c, 0x652d, 0x652e, 0x652f,
+ 0x6530, 0x6531, 0x6532, 0x6533, 0x6534, 0x6535, 0x653b, 0x6536,
+ 0x6537, 0x6538, 0x6539, 0x653a, 0x653c, 0x653d, 0x653e, 0x653f,
+ 0x6540, 0x6541, 0x6542, 0x6543, 0x6544, 0x6545, 0x6546, 0x6547,
+ 0x6548, 0x6549, 0x654a, 0x654b, 0x654c, 0x654d, 0x654f, 0x6550,
+ 0x654e, 0x6551, 0x6552, 0x6553, 0x6554, 0x6555, 0x6556, 0x6557,
+ 0x6558, 0x6559, 0x655a, 0x655b, 0x655c, 0x655d, 0x655e, 0x655f,
+ 0x6560, 0x6561, 0x6562, 0x6563, 0x6564, 0x6565, 0x6566, 0x6568,
+ 0x6567, 0x6569, 0x656a, 0x656b, 0x656c, 0x656d, 0x656e, 0x656f,
+ 0x6570, 0x6571, 0x6572, 0x6573, 0x6574, 0x6575, 0x6576, 0x6577,
+ 0x6578, 0x6579, 0x657a, 0x657c, 0x657b, 0x657d, 0x657e, 0x6621,
+ 0x6622, 0x6623, 0x6624, 0x6625, 0x6626, 0x6627, 0x6628, 0x6629,
+ 0x662a, 0x662b, 0x662c, 0x662d, 0x662e, 0x662f, 0x6630, 0x6631,
+ 0x6632, 0x6633, 0x6634, 0x6635, 0x6636, 0x6637, 0x6638, 0x6639,
+ 0x663a, 0x663b, 0x663c, 0x663d, 0x663e, 0x663f, 0x6640, 0x6641,
+ 0x6642, 0x6643, 0x6644, 0x6645, 0x6646, 0x6647, 0x6648, 0x6649,
+ 0x664a, 0x664b, 0x664c, 0x664d, 0x664e, 0x664f, 0x6650, 0x6651,
+ 0x6652, 0x6653, 0x6654, 0x6655, 0x6656, 0x6657, 0x6658, 0x6659,
+ 0x665a, 0x665b, 0x665c, 0x665d, 0x665e, 0x665f, 0x6660, 0x6661,
+ 0x6662, 0x6663, 0x6664, 0x6665, 0x6666, 0x6667, 0x6668, 0x6669,
+ 0x666a, 0x666b, 0x666c, 0x666d, 0x666e, 0x666f, 0x6670, 0x6671,
+ 0x6672, 0x6673, 0x6675, 0x6676, 0x6677, 0x6678, 0x6679, 0x667a,
+ 0x667b, 0x667c, 0x667d, 0x667e, 0x6721, 0x6722, 0x6723, 0x6724,
+ 0x6725, 0x6726, 0x6727, 0x6728, 0x6729, 0x672a, 0x672b, 0x672c,
+ 0x672d, 0x672e, 0x672f, 0x6730, 0x6731, 0x6732, 0x6733, 0x6734,
+ 0x6735, 0x6736, 0x6737, 0x6738, 0x6739, 0x673a, 0x673b, 0x673c,
+ 0x673d, 0x673e, 0x673f, 0x6740, 0x6741, 0x6742, 0x6743, 0x6744,
+ 0x6745, 0x6746, 0x6747, 0x6748, 0x6749, 0x674a, 0x674b, 0x674c,
+ 0x674d, 0x674e, 0x674f, 0x6750, 0x6751, 0x6752, 0x6753, 0x6754,
+ 0x6755, 0x6756, 0x6757, 0x6758, 0x6759, 0x675a, 0x675b, 0x675c,
+ 0x675d, 0x675e, 0x675f, 0x6760, 0x6761, 0x6762, 0x6763, 0x6764,
+ 0x6765, 0x6766, 0x676a, 0x6767, 0x6768, 0x6769, 0x676b, 0x676c,
+ 0x676d, 0x676e, 0x676f, 0x6770, 0x6771, 0x6772, 0x6773, 0x6774,
+ 0x6776, 0x6777, 0x6778, 0x6779, 0x6775, 0x677a, 0x677b, 0x677c,
+ 0x677d, 0x6828, 0x677e, 0x6821, 0x6822, 0x6823, 0x6824, 0x6825,
+ 0x6826, 0x6827, 0x6829, 0x682a, 0x682b, 0x682c, 0x682d, 0x682e,
+ 0x682f, 0x6830, 0x6831, 0x6832, 0x6833, 0x6834, 0x6835, 0x6836,
+ 0x6837, 0x6838, 0x6839, 0x683a, 0x683b, 0x683c, 0x683d, 0x683e,
+ 0x683f, 0x6840, 0x6841, 0x6842, 0x6843, 0x6844, 0x6845, 0x6846,
+ 0x6847, 0x6848, 0x6849, 0x684a, 0x684b, 0x684c, 0x684d, 0x684e,
+ 0x684f, 0x6850, 0x6851, 0x6852, 0x6853, 0x6854, 0x6855, 0x6856,
+ 0x6857, 0x6858, 0x6859, 0x685a, 0x685b, 0x685c, 0x685d, 0x685e,
+ 0x685f, 0x6860, 0x6861, 0x6862, 0x6863, 0x6864, 0x6865, 0x6866,
+ 0x6867, 0x6868, 0x6869, 0x686a, 0x686b, 0x686c, 0x686d, 0x686e,
+ 0x686f, 0x6870, 0x6871, 0x6872, 0x6873, 0x6874, 0x6875, 0x6876,
+ 0x6877, 0x6878, 0x6879, 0x687a, 0x687b, 0x687c, 0x687d, 0x687e,
+ 0x6921, 0x6922, 0x6923, 0x6924, 0x6925, 0x6926, 0x6927, 0x6928,
+ 0x6929, 0x692a, 0x692b, 0x692c, 0x692d, 0x692e, 0x692f, 0x6930,
+ 0x6931, 0x6932, 0x6933, 0x6934, 0x6935, 0x6936, 0x6937, 0x6938,
+ 0x6939, 0x693a, 0x693b, 0x693c, 0x693d, 0x693e, 0x693f, 0x6940,
+ 0x6941, 0x6942, 0x6943, 0x6944, 0x6945, 0x6946, 0x6947, 0x6948,
+ 0x6949, 0x694a, 0x694c, 0x694d, 0x694b, 0x694e, 0x694f, 0x6950,
+ 0x6951, 0x6952, 0x6953, 0x6954, 0x6955, 0x6956, 0x6957, 0x6958,
+ 0x6959, 0x695a, 0x695b, 0x695c, 0x695d, 0x695e, 0x695f, 0x6960,
+ 0x6961, 0x6962, 0x6963, 0x6964, 0x6965, 0x6966, 0x6967, 0x6968,
+ 0x6969, 0x696a, 0x696b, 0x696c, 0x696d, 0x696e, 0x696f, 0x6970,
+ 0x6971, 0x6972, 0x6973, 0x6974, 0x6975, 0x6976, 0x6977, 0x6978,
+ 0x6979, 0x697a, 0x697b, 0x697c, 0x697d, 0x697e, 0x6a21, 0x6a22,
+ 0x6a23, 0x6a24, 0x6a25, 0x6a26, 0x6a27, 0x6a28, 0x6a29, 0x6a2a,
+ 0x6a2b, 0x6a2c, 0x6a2d, 0x6a2e, 0x6a2f, 0x6a30, 0x6a31, 0x6a32,
+ 0x6a33, 0x6a34, 0x6a35, 0x6a36, 0x6a37, 0x6a38, 0x6a39, 0x6a3a,
+ 0x6a3b, 0x6a3c, 0x6a3d, 0x6a3e, 0x6a3f, 0x6a40, 0x6a41, 0x6a42,
+ 0x6a43, 0x6a44, 0x6a45, 0x6a46, 0x6a47, 0x6a48, 0x6a49, 0x6a4a,
+ 0x6a4b, 0x6a4c, 0x6a4d, 0x6a4e, 0x6a4f, 0x6a50, 0x6a51, 0x6a52,
+ 0x6a53, 0x6a54, 0x6a55, 0x6a56, 0x6a57, 0x6a58, 0x6a59, 0x6a5a,
+ 0x6a5b, 0x6a5c, 0x6a5d, 0x6a5e, 0x6a5f, 0x6a60, 0x6a61, 0x6a62,
+ 0x6a63, 0x6a64, 0x6a65, 0x6a66, 0x6a67, 0x6a68, 0x6a69, 0x6a6a,
+ 0x6a6b, 0x6a6c, 0x6a6d, 0x6a6e, 0x6a6f, 0x6a70, 0x6a71, 0x6a72,
+ 0x6a73, 0x6a74, 0x6a75, 0x6a76, 0x6a77, 0x6a78, 0x6a79, 0x6a7a,
+ 0x6a7b, 0x6a7c, 0x6a7d, 0x6a7e, 0x6b21, 0x6b22, 0x6b23, 0x6b24,
+ 0x6b25, 0x6b26, 0x6b27, 0x6b28, 0x6b29, 0x6b2a, 0x6b2b, 0x6b2c,
+ 0x6b2d, 0x6b2e, 0x6b2f, 0x6b30, 0x6b31, 0x6b32, 0x6b33, 0x6b34,
+ 0x6b35, 0x6b36, 0x6b37, 0x6b38, 0x6b39, 0x6b3a, 0x6b3b, 0x6b3c,
+ 0x6b3d, 0x6b3e, 0x6b3f, 0x6b40, 0x6b41, 0x6b42, 0x6b43, 0x6b44,
+ 0x6b45, 0x6b46, 0x6b47, 0x6b48, 0x6b49, 0x6b50, 0x6b4a, 0x6b4b,
+ 0x6b4c, 0x6b4d, 0x6b52, 0x6b4e, 0x6b4f, 0x6b51, 0x6b53, 0x6b54,
+ 0x6b55, 0x6b56, 0x6b57, 0x6b58, 0x6b59, 0x6b5a, 0x6b5b, 0x6b5c,
+ 0x6b5e, 0x6b5d, 0x6b5f, 0x6b60, 0x6b61, 0x6b62, 0x6b63, 0x6b64,
+ 0x6b65, 0x6b66, 0x6b67, 0x6b68, 0x6b69, 0x6b6a, 0x6b6b, 0x6b6d,
+ 0x6b6e, 0x6b6f, 0x6b6c, 0x6b70, 0x6b71, 0x6b72, 0x6b73, 0x6b74,
+ 0x6b76, 0x6b75, 0x6b77, 0x6b78, 0x6b79, 0x6b7a, 0x6b7b, 0x6b7c,
+ 0x6b7d, 0x6b7e, 0x6c21, 0x6c22, 0x6c23, 0x6c24, 0x6c25, 0x6c26,
+ 0x6c27, 0x6c28, 0x6c29, 0x6c2a, 0x6c2b, 0x6c2c, 0x6c2d, 0x6c2e,
+ 0x6c2f, 0x6c30, 0x6c31, 0x6c32, 0x6c33, 0x6c34, 0x6c35, 0x6c36,
+ 0x6c37, 0x6c38, 0x6c39, 0x6c3a, 0x6c3b, 0x6c3c, 0x6c3d, 0x6c3e,
+ 0x6c3f, 0x6c40, 0x6c41, 0x6c42, 0x6c43, 0x6c44, 0x6c45, 0x6c46,
+ 0x6c47, 0x6c48, 0x6c49, 0x6c4a, 0x6c4b, 0x6c4c, 0x6c4e, 0x6c4f,
+ 0x6c4d, 0x6c50, 0x6c51, 0x6c52, 0x6c53, 0x6c54, 0x6c55, 0x6c56,
+ 0x6c57, 0x6c58, 0x6c59, 0x6c5a, 0x6c5b, 0x6c5c, 0x6c5d, 0x6c5e,
+ 0x6c5f, 0x6c60, 0x6c61, 0x6c62, 0x6c63, 0x6c64, 0x6c65, 0x6c66,
+ 0x6c67, 0x6c68, 0x6c69, 0x6c6a, 0x6c6b, 0x6c6c, 0x6c6d, 0x6c6e,
+ 0x6c6f, 0x6c70, 0x6c71, 0x6c72, 0x6c73, 0x6c74, 0x6c75, 0x6c76,
+ 0x6c77, 0x6c78, 0x6c79, 0x6c7a, 0x6c7b, 0x6c7c, 0x6c7d, 0x6c7e,
+ 0x6d21, 0x6d22, 0x6d23, 0x6d24, 0x6d25, 0x6d26, 0x6d27, 0x6d28,
+ 0x6d29, 0x6d2a, 0x6d2b, 0x6d2c, 0x6d2d, 0x6d2e, 0x6d2f, 0x6d30,
+ 0x6d31, 0x6d32, 0x6d33, 0x6d34, 0x6d35, 0x6d36, 0x6d37, 0x6d38,
+ 0x6d39, 0x6d3a, 0x6d3b, 0x6d3c, 0x6d3d, 0x6d3e, 0x6d3f, 0x6d40,
+ 0x6d41, 0x6d42, 0x6d43, 0x6d44, 0x6d45, 0x6d46, 0x6d47, 0x6d48,
+ 0x6d49, 0x6d4a, 0x6d4b, 0x6d4c, 0x6d4d, 0x6d4e, 0x6d4f, 0x6d50,
+ 0x6d51, 0x6d52, 0x6d53, 0x6d54, 0x6d55, 0x6d56, 0x6d57, 0x6d58,
+ 0x6d59, 0x6d5a, 0x6d5b, 0x6d5c, 0x6d5d, 0x6d5e, 0x6d5f, 0x6d60,
+ 0x6d61, 0x6d62, 0x6d63,
+};
+
+static const Summary16 jisx0212_uni2indx_page00[70] = {
+ /* 0x0000 */
+ { 0, 0x0000 }, { 0, 0x0000 }, { 0, 0x0000 }, { 0, 0x0000 },
+ { 0, 0x0000 }, { 0, 0x0000 }, { 0, 0x0000 }, { 0, 0x4000 },
+ { 1, 0x0000 }, { 1, 0x0000 }, { 1, 0xc652 }, { 8, 0x8500 },
+ { 11, 0xffff }, { 27, 0xff7e }, { 41, 0xffff }, { 57, 0xff7f },
+ /* 0x0100 */
+ { 72, 0xffff }, { 88, 0xffcf }, { 102, 0xcff7 }, { 115, 0xffff },
+ { 131, 0x3fff }, { 145, 0xffff }, { 161, 0xffff }, { 177, 0x7fff },
+ { 192, 0x0000 }, { 192, 0x0000 }, { 192, 0x0000 }, { 192, 0x0000 },
+ { 192, 0xe000 }, { 195, 0x1fff }, { 208, 0x0000 }, { 208, 0x0020 },
+ /* 0x0200 */
+ { 209, 0x0000 }, { 209, 0x0000 }, { 209, 0x0000 }, { 209, 0x0000 },
+ { 209, 0x0000 }, { 209, 0x0000 }, { 209, 0x0000 }, { 209, 0x0000 },
+ { 209, 0x0000 }, { 209, 0x0000 }, { 209, 0x0000 }, { 209, 0x0000 },
+ { 209, 0x0080 }, { 210, 0x2f00 }, { 215, 0x0000 }, { 215, 0x0000 },
+ /* 0x0300 */
+ { 215, 0x0000 }, { 215, 0x0000 }, { 215, 0x0000 }, { 215, 0x0000 },
+ { 215, 0x0000 }, { 215, 0x0000 }, { 215, 0x0000 }, { 215, 0x0000 },
+ { 215, 0xd770 }, { 224, 0x0001 }, { 225, 0xfc00 }, { 231, 0x0001 },
+ { 232, 0x7c04 }, { 238, 0x0000 }, { 238, 0x0000 }, { 238, 0x0000 },
+ /* 0x0400 */
+ { 238, 0xdffc }, { 251, 0x0000 }, { 251, 0x0000 }, { 251, 0x0000 },
+ { 251, 0x0000 }, { 251, 0xdffc },
+};
+static const Summary16 jisx0212_uni2indx_page21[3] = {
+ /* 0x2100 */
+ { 264, 0x0000 }, { 264, 0x0040 }, { 265, 0x0004 },
+};
+static const Summary16 jisx0212_uni2indx_page4e[1307] = {
+ /* 0x4e00 */
+ { 266, 0x1034 }, { 270, 0x8004 }, { 272, 0xc918 }, { 278, 0x0021 },
+ { 280, 0x0093 }, { 284, 0x1402 }, { 287, 0x0308 }, { 290, 0x8230 },
+ { 294, 0x2000 }, { 295, 0x20c0 }, { 298, 0x8000 }, { 299, 0x0200 },
+ { 300, 0x0008 }, { 301, 0x0c01 }, { 304, 0x8107 }, { 309, 0xe02a },
+ /* 0x4f00 */
+ { 315, 0x190d }, { 321, 0x02e4 }, { 326, 0x4000 }, { 327, 0x4aaa },
+ { 334, 0x1b05 }, { 340, 0x8154 }, { 345, 0x5409 }, { 350, 0x6782 },
+ { 357, 0x5636 }, { 365, 0xc69d }, { 374, 0x0000 }, { 374, 0x7a84 },
+ { 381, 0xbb63 }, { 391, 0x1004 }, { 393, 0x0005 }, { 395, 0xb005 },
+ /* 0x5000 */
+ { 400, 0x5493 }, { 407, 0x7989 }, { 415, 0x4084 }, { 418, 0x082d },
+ { 423, 0x5467 }, { 431, 0x828e }, { 437, 0x24cd }, { 444, 0x0003 },
+ { 446, 0xc45a }, { 453, 0xd85d }, { 462, 0x8407 }, { 467, 0x2601 },
+ { 471, 0x5099 }, { 477, 0xb119 }, { 484, 0x8354 }, { 490, 0x4446 },
+ /* 0x5100 */
+ { 495, 0x79c8 }, { 503, 0x7a81 }, { 510, 0xb188 }, { 516, 0x033a },
+ { 522, 0x8404 }, { 525, 0x81a8 }, { 530, 0x0050 }, { 532, 0x4000 },
+ { 533, 0x4818 }, { 537, 0x2100 }, { 539, 0x200a }, { 542, 0xd500 },
+ { 547, 0x8104 }, { 550, 0x412e }, { 556, 0x4024 }, { 559, 0x009c },
+ /* 0x5200 */
+ { 563, 0x0026 }, { 566, 0x016c }, { 571, 0x0104 }, { 573, 0x1026 },
+ { 577, 0x0220 }, { 579, 0x95a0 }, { 585, 0x4043 }, { 589, 0x0380 },
+ { 592, 0x1425 }, { 597, 0x15e8 }, { 604, 0x80f0 }, { 609, 0x2dc1 },
+ { 616, 0x9151 }, { 622, 0x1852 }, { 627, 0x1722 }, { 633, 0x00d3 },
+ /* 0x5300 */
+ { 638, 0x1c09 }, { 643, 0xd90a }, { 650, 0x3ba0 }, { 657, 0x7025 },
+ { 663, 0x1804 }, { 666, 0x0a00 }, { 668, 0x302a }, { 673, 0x4204 },
+ { 676, 0x4188 }, { 680, 0x2218 }, { 684, 0x8c12 }, { 689, 0x25b4 },
+ { 696, 0x8021 }, { 699, 0x642c }, { 705, 0x00c1 }, { 708, 0x0020 },
+ /* 0x5400 */
+ { 709, 0x0004 }, { 710, 0x0408 }, { 712, 0x8582 }, { 717, 0x0032 },
+ { 720, 0xa098 }, { 725, 0x4000 }, { 726, 0x6ad4 }, { 734, 0x8010 },
+ { 736, 0x232a }, { 742, 0x9062 }, { 747, 0x66c2 }, { 754, 0x8e82 },
+ { 760, 0x6440 }, { 764, 0x0000 }, { 764, 0x9401 }, { 768, 0xd040 },
+ /* 0x5500 */
+ { 772, 0x7323 }, { 780, 0x0020 }, { 781, 0x0c00 }, { 783, 0x3864 },
+ { 789, 0x2682 }, { 794, 0x4d03 }, { 800, 0x0053 }, { 804, 0x8000 },
+ { 805, 0xc146 }, { 811, 0x009e }, { 816, 0x2018 }, { 819, 0x8004 },
+ { 821, 0x5a4a }, { 828, 0x498e }, { 835, 0x0204 }, { 837, 0x8040 },
+ /* 0x5600 */
+ { 839, 0xe520 }, { 845, 0x0207 }, { 849, 0x1000 }, { 850, 0xbaa9 },
+ { 859, 0xaa5b }, { 868, 0x4010 }, { 870, 0xa24f }, { 878, 0x0026 },
+ { 881, 0x1930 }, { 886, 0xe620 }, { 892, 0x3bc0 }, { 899, 0x408a },
+ { 903, 0xbe20 }, { 910, 0xb201 }, { 915, 0x29f2 }, { 923, 0x00c2 },
+ /* 0x5700 */
+ { 926, 0x1486 }, { 931, 0x2c22 }, { 936, 0xd63d }, { 946, 0xe018 },
+ { 951, 0x3060 }, { 955, 0x0004 }, { 956, 0xe9a4 }, { 964, 0x5ebb },
+ { 975, 0x100a }, { 978, 0xf6b0 }, { 987, 0x1382 }, { 992, 0x2100 },
+ { 994, 0x9180 }, { 998, 0x6020 }, { 1001, 0x22d2 }, { 1007, 0xe161 },
+ /* 0x5800 */
+ { 1014, 0x3318 }, { 1020, 0xc800 }, { 1023, 0x20c1 }, { 1027, 0x8204 },
+ { 1030, 0xb200 }, { 1034, 0x8021 }, { 1037, 0x0192 }, { 1041, 0x9100 },
+ { 1044, 0xb783 }, { 1053, 0x2051 }, { 1057, 0x0247 }, { 1062, 0x1006 },
+ { 1065, 0x6114 }, { 1070, 0x2455 }, { 1076, 0x0206 }, { 1079, 0x0008 },
+ /* 0x5900 */
+ { 1080, 0x1860 }, { 1084, 0x201c }, { 1088, 0x811a }, { 1093, 0x8069 },
+ { 1098, 0x0048 }, { 1100, 0xea0c }, { 1107, 0xa80a }, { 1112, 0x1a64 },
+ { 1118, 0x5800 }, { 1121, 0x80a4 }, { 1125, 0xe090 }, { 1130, 0x1489 },
+ { 1135, 0x251a }, { 1141, 0xe004 }, { 1145, 0xc098 }, { 1150, 0x0096 },
+ /* 0x5a00 */
+ { 1154, 0x7011 }, { 1159, 0x400c }, { 1162, 0x2598 }, { 1168, 0x0001 },
+ { 1169, 0x11b0 }, { 1174, 0x4021 }, { 1177, 0x20a8 }, { 1181, 0x4c80 },
+ { 1185, 0x0800 }, { 1186, 0xd249 }, { 1193, 0x1085 }, { 1197, 0x8d2e },
+ { 1205, 0x8150 }, { 1209, 0x1400 }, { 1211, 0x4421 }, { 1215, 0x2060 },
+ /* 0x5b00 */
+ { 1218, 0x0103 }, { 1221, 0x2a80 }, { 1225, 0x2022 }, { 1228, 0x0110 },
+ { 1230, 0x1802 }, { 1233, 0x4044 }, { 1236, 0xc100 }, { 1239, 0xf000 },
+ { 1243, 0x4452 }, { 1248, 0x005b }, { 1253, 0xb300 }, { 1258, 0x1486 },
+ { 1263, 0xa003 }, { 1267, 0x07c0 }, { 1272, 0x8001 }, { 1274, 0x2012 },
+ /* 0x5c00 */
+ { 1277, 0x1000 }, { 1278, 0xc080 }, { 1281, 0x5a48 }, { 1287, 0x0065 },
+ { 1291, 0x0000 }, { 1291, 0x1600 }, { 1294, 0x238c }, { 1300, 0x3c31 },
+ { 1307, 0x8580 }, { 1311, 0xa004 }, { 1314, 0x044d }, { 1319, 0x0434 },
+ { 1323, 0x0a00 }, { 1325, 0x2084 }, { 1328, 0x4000 }, { 1329, 0x0016 },
+ /* 0x5d00 */
+ { 1332, 0x2042 }, { 1335, 0x0004 }, { 1336, 0x08d8 }, { 1341, 0xa212 },
+ { 1346, 0x054c }, { 1351, 0x8222 }, { 1355, 0x2417 }, { 1361, 0xc601 },
+ { 1366, 0x050a }, { 1370, 0x8a3c }, { 1377, 0x0881 }, { 1380, 0x0315 },
+ { 1385, 0x4888 }, { 1389, 0x0301 }, { 1392, 0x0211 }, { 1395, 0x0300 },
+ /* 0x5e00 */
+ { 1397, 0x2081 }, { 1400, 0x8134 }, { 1405, 0x4101 }, { 1408, 0x4024 },
+ { 1411, 0x0a00 }, { 1413, 0x5943 }, { 1420, 0x7d00 }, { 1426, 0x0001 },
+ { 1427, 0x4801 }, { 1430, 0x0000 }, { 1430, 0x1534 }, { 1436, 0xe00a },
+ { 1441, 0x5840 }, { 1445, 0x5036 }, { 1451, 0x0820 }, { 1453, 0x0000 },
+ /* 0x5f00 */
+ { 1453, 0x41c4 }, { 1458, 0x3200 }, { 1461, 0x591e }, { 1469, 0xa851 },
+ { 1475, 0x20b1 }, { 1480, 0x0911 }, { 1484, 0x8099 }, { 1489, 0x6534 },
+ { 1496, 0xa200 }, { 1499, 0x3040 }, { 1502, 0x9894 }, { 1508, 0x0103 },
+ { 1511, 0x0b90 }, { 1516, 0x401f }, { 1522, 0xf706 }, { 1531, 0x144c },
+ /* 0x6000 */
+ { 1536, 0x2480 }, { 1539, 0x8598 }, { 1545, 0x2010 }, { 1547, 0x0028 },
+ { 1549, 0x1381 }, { 1554, 0x20d2 }, { 1559, 0x0082 }, { 1561, 0xc002 },
+ { 1564, 0x4544 }, { 1569, 0x612a }, { 1575, 0x0134 }, { 1579, 0x4883 },
+ { 1584, 0xcf14 }, { 1592, 0x6a30 }, { 1598, 0x0024 }, { 1600, 0x3124 },
+ /* 0x6100 */
+ { 1605, 0x1484 }, { 1609, 0x52df }, { 1619, 0x0c04 }, { 1622, 0x02e3 },
+ { 1628, 0x0262 }, { 1632, 0x4000 }, { 1633, 0x1001 }, { 1635, 0x9904 },
+ { 1640, 0x281b }, { 1646, 0xb18c }, { 1653, 0x2521 }, { 1658, 0x1300 },
+ { 1661, 0xc007 }, { 1666, 0xf020 }, { 1671, 0xb2a6 }, { 1679, 0x0000 },
+ /* 0x6200 */
+ { 1679, 0x009a }, { 1683, 0x1028 }, { 1686, 0x0a8d }, { 1692, 0x2200 },
+ { 1694, 0x105c }, { 1699, 0x1457 }, { 1706, 0xa010 }, { 1709, 0x2408 },
+ { 1712, 0xe000 }, { 1715, 0x0001 }, { 1716, 0x0140 }, { 1718, 0xc4c8 },
+ { 1724, 0x4010 }, { 1726, 0x0460 }, { 1729, 0x0400 }, { 1730, 0x3014 },
+ /* 0x6300 */
+ { 1734, 0x2c18 }, { 1739, 0x0149 }, { 1743, 0x2600 }, { 1746, 0x1260 },
+ { 1750, 0x4c5e }, { 1758, 0x091c }, { 1763, 0x3060 }, { 1767, 0xb132 },
+ { 1774, 0x0494 }, { 1778, 0x4631 }, { 1784, 0xe050 }, { 1789, 0x2000 },
+ { 1790, 0x4122 }, { 1794, 0x103a }, { 1799, 0x1421 }, { 1803, 0x032c },
+ /* 0x6400 */
+ { 1808, 0x0600 }, { 1810, 0x4115 }, { 1815, 0x8635 }, { 1822, 0xa021 },
+ { 1826, 0x8800 }, { 1828, 0xbc1e }, { 1837, 0x200b }, { 1841, 0x2818 },
+ { 1845, 0x80a0 }, { 1848, 0xab03 }, { 1855, 0x114a }, { 1860, 0xe008 },
+ { 1864, 0x5e10 }, { 1870, 0x00a3 }, { 1874, 0x2630 }, { 1879, 0x88a1 },
+ /* 0x6500 */
+ { 1884, 0x8712 }, { 1890, 0xca58 }, { 1897, 0x4244 }, { 1901, 0x3402 },
+ { 1905, 0x0288 }, { 1908, 0x8015 }, { 1912, 0x0881 }, { 1915, 0x2400 },
+ { 1917, 0x0422 }, { 1920, 0x2124 }, { 1924, 0x4049 }, { 1928, 0x801c },
+ { 1932, 0x4304 }, { 1936, 0x8151 }, { 1941, 0x0000 }, { 1941, 0xc235 },
+ /* 0x6600 */
+ { 1948, 0x2311 }, { 1953, 0x6066 }, { 1959, 0x5e5e }, { 1969, 0x028b },
+ { 1974, 0x5461 }, { 1980, 0x1b82 }, { 1986, 0x1c03 }, { 1991, 0xdba8 },
+ { 2000, 0x3801 }, { 2004, 0x9e05 }, { 2011, 0x2011 }, { 2014, 0x8826 },
+ { 2019, 0xd10d }, { 2026, 0x8810 }, { 2029, 0x5900 }, { 2033, 0x0c00 },
+ /* 0x6700 */
+ { 2035, 0x40a0 }, { 2038, 0x1208 }, { 2041, 0x0005 }, { 2043, 0x4008 },
+ { 2045, 0x11a0 }, { 2049, 0x2030 }, { 2052, 0x5040 }, { 2055, 0x0850 },
+ { 2058, 0xc012 }, { 2062, 0x0b4a }, { 2068, 0x0000 }, { 2068, 0x3827 },
+ { 2075, 0x032d }, { 2081, 0x1284 }, { 2085, 0x0042 }, { 2087, 0x02c5 },
+ /* 0x6800 */
+ { 2092, 0x0000 }, { 2092, 0xa210 }, { 2096, 0xb180 }, { 2101, 0x880b },
+ { 2106, 0x1430 }, { 2110, 0x09a4 }, { 2115, 0xc800 }, { 2118, 0x1e27 },
+ { 2126, 0x0154 }, { 2130, 0x1540 }, { 2134, 0x462a }, { 2140, 0x0804 },
+ { 2142, 0x9120 }, { 2146, 0x324b }, { 2153, 0x3d20 }, { 2159, 0x3863 },
+ /* 0x6900 */
+ { 2166, 0x0640 }, { 2169, 0x00cb }, { 2174, 0x0000 }, { 2174, 0x092a },
+ { 2179, 0x4224 }, { 2183, 0x0880 }, { 2185, 0x1378 }, { 2192, 0x8c07 },
+ { 2198, 0x2001 }, { 2200, 0x0144 }, { 2203, 0xa962 }, { 2210, 0x1580 },
+ { 2214, 0x0120 }, { 2216, 0x00c2 }, { 2219, 0xc024 }, { 2223, 0x402a },
+ /* 0x6a00 */
+ { 2227, 0x800b }, { 2231, 0x2422 }, { 2235, 0x0111 }, { 2238, 0xc895 },
+ { 2245, 0x4660 }, { 2250, 0x0867 }, { 2256, 0x0490 }, { 2259, 0x400a },
+ { 2262, 0x0aca }, { 2268, 0xe802 }, { 2273, 0x8820 }, { 2276, 0xe013 },
+ { 2282, 0x1340 }, { 2286, 0x3071 }, { 2292, 0x1090 }, { 2295, 0x3007 },
+ /* 0x6b00 */
+ { 2300, 0x82cc }, { 2306, 0x4883 }, { 2311, 0x9910 }, { 2316, 0x8860 },
+ { 2320, 0x2440 }, { 2323, 0x2144 }, { 2327, 0x4881 }, { 2331, 0x6021 },
+ { 2335, 0x0024 }, { 2337, 0x8880 }, { 2340, 0x730d }, { 2348, 0x6301 },
+ { 2353, 0x1218 }, { 2357, 0x0440 }, { 2359, 0x40ca }, { 2364, 0x8282 },
+ /* 0x6c00 */
+ { 2368, 0x6234 }, { 2374, 0x8205 }, { 2378, 0x51c0 }, { 2383, 0x8c68 },
+ { 2389, 0xac00 }, { 2393, 0x1a14 }, { 2398, 0xa880 }, { 2402, 0x0b50 },
+ { 2407, 0x02e0 }, { 2411, 0x91b0 }, { 2417, 0x0000 }, { 2417, 0x0015 },
+ { 2420, 0xa044 }, { 2424, 0x1457 }, { 2431, 0x5a81 }, { 2437, 0x0014 },
+ /* 0x6d00 */
+ { 2439, 0xc490 }, { 2444, 0x040a }, { 2447, 0xc1c0 }, { 2452, 0x9202 },
+ { 2456, 0x0000 }, { 2456, 0xc080 }, { 2459, 0x80a2 }, { 2463, 0x1001 },
+ { 2465, 0x0084 }, { 2467, 0x01d6 }, { 2473, 0x1400 }, { 2475, 0xa290 },
+ { 2480, 0xc510 }, { 2485, 0xa840 }, { 2489, 0x8225 }, { 2494, 0x1051 },
+ /* 0x6e00 */
+ { 2498, 0x0011 }, { 2500, 0x4000 }, { 2501, 0x0084 }, { 2503, 0x1a44 },
+ { 2508, 0x8b30 }, { 2514, 0x709e }, { 2522, 0x010c }, { 2525, 0x2808 },
+ { 2528, 0x2000 }, { 2529, 0x0208 }, { 2531, 0x6081 }, { 2535, 0x880a },
+ { 2539, 0xe58b }, { 2548, 0x0000 }, { 2548, 0x6800 }, { 2551, 0x2a00 },
+ /* 0x6f00 */
+ { 2554, 0x3510 }, { 2559, 0x0d40 }, { 2563, 0xa640 }, { 2568, 0x1849 },
+ { 2573, 0x8000 }, { 2574, 0x668e }, { 2582, 0x1106 }, { 2586, 0x6000 },
+ { 2588, 0x3988 }, { 2594, 0x845d }, { 2601, 0xc1e1 }, { 2608, 0x1061 },
+ { 2612, 0x05a0 }, { 2616, 0x4400 }, { 2618, 0x0300 }, { 2620, 0x3221 },
+ /* 0x7000 */
+ { 2625, 0x20e1 }, { 2630, 0x0080 }, { 2631, 0x8009 }, { 2634, 0x1290 },
+ { 2638, 0x4f18 }, { 2645, 0x6030 }, { 2649, 0x5030 }, { 2653, 0x4060 },
+ { 2656, 0x0062 }, { 2659, 0x09f0 }, { 2665, 0x0810 }, { 2667, 0x0093 },
+ { 2671, 0x0400 }, { 2672, 0x117a }, { 2679, 0x0010 }, { 2680, 0x0400 },
+ /* 0x7100 */
+ { 2681, 0x98f8 }, { 2689, 0x4000 }, { 2690, 0xa801 }, { 2694, 0x0103 },
+ { 2697, 0x0ce2 }, { 2703, 0x5485 }, { 2709, 0x0101 }, { 2711, 0x0200 },
+ { 2712, 0x10a1 }, { 2716, 0x0c04 }, { 2719, 0x8005 }, { 2722, 0x840d },
+ { 2727, 0x1813 }, { 2732, 0x1648 }, { 2737, 0x0000 }, { 2737, 0x4100 },
+ /* 0x7200 */
+ { 2739, 0x0381 }, { 2743, 0xa488 }, { 2748, 0x8810 }, { 2751, 0x0310 },
+ { 2754, 0xc02e }, { 2760, 0x5469 }, { 2767, 0xc909 }, { 2773, 0x9982 },
+ { 2779, 0x6210 }, { 2783, 0x0808 }, { 2785, 0x6100 }, { 2788, 0x4012 },
+ { 2791, 0x1282 }, { 2795, 0x8160 }, { 2799, 0x0020 }, { 2800, 0x4c18 },
+ /* 0x7300 */
+ { 2805, 0x28b4 }, { 2811, 0x430c }, { 2816, 0x1194 }, { 2821, 0x2c26 },
+ { 2827, 0x2008 }, { 2829, 0xe145 }, { 2836, 0xdac1 }, { 2844, 0x1282 },
+ { 2848, 0x406b }, { 2854, 0xd1a9 }, { 2862, 0x2c65 }, { 2869, 0xb2a0 },
+ { 2875, 0x9a60 }, { 2881, 0x224c }, { 2886, 0x02ca }, { 2891, 0xaeb0 },
+ /* 0x7400 */
+ { 2899, 0x0493 }, { 2904, 0x0c02 }, { 2907, 0xff50 }, { 2917, 0x0203 },
+ { 2920, 0x28d9 }, { 2927, 0x2086 }, { 2931, 0x69c4 }, { 2938, 0x0006 },
+ { 2940, 0x82e3 }, { 2947, 0x9707 }, { 2955, 0xcf4b }, { 2965, 0x8a26 },
+ { 2971, 0x1300 }, { 2974, 0xcd09 }, { 2981, 0x8d10 }, { 2986, 0x9c10 },
+ /* 0x7500 */
+ { 2991, 0x0040 }, { 2992, 0x00c4 }, { 2995, 0x8693 }, { 3002, 0xe240 },
+ { 3007, 0x4189 }, { 3012, 0xc085 }, { 3017, 0x8002 }, { 3019, 0x7e02 },
+ { 3026, 0x0022 }, { 3028, 0x122d }, { 3034, 0x0014 }, { 3036, 0x8410 },
+ { 3039, 0xd053 }, { 3046, 0x9080 }, { 3049, 0xd093 }, { 3056, 0x0202 },
+ /* 0x7600 */
+ { 3058, 0x959d }, { 3067, 0x7a6c }, { 3076, 0x2268 }, { 3081, 0x172c },
+ { 3088, 0x0e3b }, { 3096, 0x8220 }, { 3099, 0xe030 }, { 3104, 0x0012 },
+ { 3106, 0x3022 }, { 3110, 0xb820 }, { 3115, 0x25fd }, { 3125, 0x2000 },
+ { 3126, 0x5a22 }, { 3132, 0x0210 }, { 3134, 0x1141 }, { 3138, 0x1243 },
+ /* 0x7700 */
+ { 3143, 0x4441 }, { 3147, 0x16b4 }, { 3154, 0xe104 }, { 3159, 0x6270 },
+ { 3165, 0xe464 }, { 3172, 0xd0c4 }, { 3178, 0x1495 }, { 3184, 0x241d },
+ { 3190, 0x3011 }, { 3194, 0x8470 }, { 3199, 0xc484 }, { 3204, 0x4022 },
+ { 3207, 0x0208 }, { 3209, 0xc226 }, { 3215, 0x1451 }, { 3220, 0x0913 },
+ /* 0x7800 */
+ { 3225, 0x6260 }, { 3230, 0x2002 }, { 3232, 0x600e }, { 3237, 0x00a1 },
+ { 3240, 0x5198 }, { 3246, 0x5004 }, { 3249, 0x451b }, { 3256, 0x4400 },
+ { 3258, 0x8400 }, { 3260, 0xe110 }, { 3265, 0x3112 }, { 3270, 0xa80f },
+ { 3277, 0x5380 }, { 3282, 0x886c }, { 3288, 0x0453 }, { 3293, 0x8ccc },
+ /* 0x7900 */
+ { 3300, 0x1041 }, { 3303, 0xd401 }, { 3308, 0x22a1 }, { 3313, 0xa832 },
+ { 3319, 0x8c70 }, { 3325, 0x1912 }, { 3330, 0x0a80 }, { 3333, 0x5a04 },
+ { 3338, 0x1800 }, { 3340, 0x197a }, { 3348, 0x8b02 }, { 3353, 0x0912 },
+ { 3357, 0x8594 }, { 3363, 0x6450 }, { 3368, 0x2c25 }, { 3374, 0x1102 },
+ /* 0x7a00 */
+ { 3377, 0x168c }, { 3383, 0x4822 }, { 3387, 0xa882 }, { 3392, 0x0731 },
+ { 3398, 0x11b0 }, { 3403, 0xb260 }, { 3409, 0x24a1 }, { 3414, 0x4120 },
+ { 3417, 0x0c65 }, { 3423, 0x4013 }, { 3427, 0x1009 }, { 3430, 0x1a28 },
+ { 3435, 0x5240 }, { 3439, 0x0802 }, { 3441, 0x1b00 }, { 3445, 0x6812 },
+ /* 0x7b00 */
+ { 3450, 0x0080 }, { 3451, 0x8010 }, { 3453, 0xee88 }, { 3461, 0xa013 },
+ { 3466, 0x4083 }, { 3470, 0x0020 }, { 3471, 0xa651 }, { 3478, 0x008c },
+ { 3481, 0x4210 }, { 3484, 0x4843 }, { 3489, 0x9021 }, { 3493, 0x3c65 },
+ { 3501, 0x0524 }, { 3505, 0x0ed0 }, { 3511, 0x0500 }, { 3513, 0x5734 },
+ /* 0x7c00 */
+ { 3521, 0xda5e }, { 3531, 0x0a00 }, { 3533, 0x1161 }, { 3538, 0x065a },
+ { 3544, 0x0440 }, { 3546, 0x7e2e }, { 3556, 0x628a }, { 3562, 0x3205 },
+ { 3567, 0x80c0 }, { 3570, 0x4010 }, { 3572, 0x0041 }, { 3574, 0x9cc1 },
+ { 3581, 0xa390 }, { 3587, 0x26b8 }, { 3594, 0x0a40 }, { 3597, 0x0020 },
+ /* 0x7d00 */
+ { 3598, 0x8388 }, { 3603, 0x604e }, { 3609, 0x2448 }, { 3613, 0x7002 },
+ { 3617, 0x2183 }, { 3622, 0x368a }, { 3629, 0x04a0 }, { 3632, 0x8d01 },
+ { 3637, 0x396e }, { 3646, 0x60c2 }, { 3651, 0x04c0 }, { 3654, 0x02c8 },
+ { 3658, 0x707c }, { 3666, 0x0280 }, { 3668, 0x2c64 }, { 3674, 0x0662 },
+ /* 0x7e00 */
+ { 3679, 0x0101 }, { 3681, 0x30a3 }, { 3687, 0xb181 }, { 3693, 0x8048 },
+ { 3696, 0x40b0 }, { 3700, 0x8105 }, { 3704, 0xc826 }, { 3710, 0x4108 },
+ { 3713, 0x24c2 }, { 3718, 0x6522 }, { 3724, 0x0000 }, { 3724, 0x0000 },
+ { 3724, 0x0000 }, { 3724, 0x0000 }, { 3724, 0x0000 }, { 3724, 0x0000 },
+ /* 0x7f00 */
+ { 3724, 0x0000 }, { 3724, 0x0000 }, { 3724, 0x0000 }, { 3724, 0xf800 },
+ { 3729, 0x8098 }, { 3733, 0x380c }, { 3738, 0x207a }, { 3744, 0xe002 },
+ { 3748, 0xa801 }, { 3752, 0x10c3 }, { 3757, 0x2446 }, { 3762, 0x9010 },
+ { 3765, 0xc109 }, { 3770, 0x8800 }, { 3772, 0xd128 }, { 3778, 0xe404 },
+ /* 0x8000 */
+ { 3783, 0xe580 }, { 3789, 0xe05a }, { 3796, 0x5051 }, { 3801, 0x56b1 },
+ { 3809, 0x0011 }, { 3811, 0x0000 }, { 3811, 0x2051 }, { 3815, 0x0022 },
+ { 3817, 0x4102 }, { 3820, 0x5000 }, { 3822, 0x08c0 }, { 3825, 0x0300 },
+ { 3827, 0xa100 }, { 3830, 0x01b4 }, { 3835, 0x6001 }, { 3838, 0x464d },
+ /* 0x8100 */
+ { 3845, 0x0808 }, { 3847, 0x51c0 }, { 3852, 0x1091 }, { 3856, 0x1421 },
+ { 3860, 0x14a0 }, { 3864, 0x0084 }, { 3866, 0xa383 }, { 3873, 0x0080 },
+ { 3874, 0x4872 }, { 3880, 0x4941 }, { 3885, 0x4004 }, { 3887, 0x0814 },
+ { 3890, 0xcc28 }, { 3896, 0x68a0 }, { 3901, 0x1812 }, { 3905, 0xa367 },
+ /* 0x8200 */
+ { 3914, 0x8009 }, { 3917, 0x2618 }, { 3922, 0x0106 }, { 3925, 0x0414 },
+ { 3928, 0xc878 }, { 3935, 0x1042 }, { 3938, 0x2089 }, { 3942, 0xa810 },
+ { 3946, 0x469b }, { 3954, 0x0d52 }, { 3960, 0x479b }, { 3969, 0xd495 },
+ { 3977, 0x0040 }, { 3978, 0x0421 }, { 3981, 0xa515 }, { 3988, 0x60c0 },
+ /* 0x8300 */
+ { 3992, 0x0d83 }, { 3998, 0xe800 }, { 4002, 0x7006 }, { 4007, 0x3489 },
+ { 4013, 0x609c }, { 4019, 0x00fa }, { 4025, 0x0000 }, { 4025, 0xa101 },
+ { 4029, 0x2055 }, { 4034, 0x3b34 }, { 4042, 0x32c0 }, { 4047, 0xc000 },
+ { 4049, 0x8281 }, { 4053, 0x2013 }, { 4057, 0x0500 }, { 4059, 0x1340 },
+ /* 0x8400 */
+ { 4063, 0x8442 }, { 4067, 0x0222 }, { 4070, 0x8000 }, { 4071, 0x0200 },
+ { 4072, 0xa5a0 }, { 4078, 0x1746 }, { 4085, 0x04b1 }, { 4090, 0x3159 },
+ { 4097, 0x0022 }, { 4099, 0x402c }, { 4103, 0x8740 }, { 4108, 0x6412 },
+ { 4113, 0x9185 }, { 4119, 0x1008 }, { 4121, 0x8480 }, { 4124, 0x2c87 },
+ /* 0x8500 */
+ { 4131, 0x508c }, { 4136, 0x5001 }, { 4139, 0x8cbc }, { 4147, 0x805c },
+ { 4152, 0x8040 }, { 4154, 0xf24f }, { 4164, 0x8817 }, { 4170, 0xae00 },
+ { 4175, 0x9a62 }, { 4182, 0xa108 }, { 4186, 0x20a5 }, { 4191, 0xf1d0 },
+ { 4199, 0x4c84 }, { 4204, 0x8500 }, { 4207, 0x2141 }, { 4211, 0x9048 },
+ /* 0x8600 */
+ { 4215, 0x6031 }, { 4220, 0x4b07 }, { 4227, 0x0282 }, { 4230, 0x3540 },
+ { 4235, 0x0047 }, { 4239, 0x23cc }, { 4246, 0x921f }, { 4254, 0x04e0 },
+ { 4258, 0x2100 }, { 4260, 0x1542 }, { 4265, 0x21c2 }, { 4270, 0x83ba },
+ { 4278, 0x002b }, { 4282, 0x14a6 }, { 4288, 0x00a9 }, { 4292, 0x3400 },
+ /* 0x8700 */
+ { 4295, 0xc8b0 }, { 4301, 0xc219 }, { 4307, 0xc10a }, { 4312, 0x7606 },
+ { 4319, 0x2029 }, { 4323, 0x2100 }, { 4325, 0x8032 }, { 4329, 0x0806 },
+ { 4332, 0x1bf8 }, { 4341, 0x43a9 }, { 4348, 0x7089 }, { 4354, 0xc022 },
+ { 4358, 0x4702 }, { 4363, 0x9660 }, { 4369, 0x2c1c }, { 4375, 0x850a },
+ /* 0x8800 */
+ { 4380, 0x0e4a }, { 4386, 0xdf1d }, { 4397, 0x6100 }, { 4400, 0x1425 },
+ { 4405, 0x4f2a }, { 4413, 0x9562 }, { 4420, 0x0211 }, { 4423, 0x0a02 },
+ { 4426, 0x0001 }, { 4427, 0x9d00 }, { 4432, 0x0501 }, { 4435, 0x6400 },
+ { 4438, 0x7c01 }, { 4444, 0x480e }, { 4449, 0x8080 }, { 4451, 0x00a3 },
+ /* 0x8900 */
+ { 4455, 0xe042 }, { 4460, 0x1760 }, { 4466, 0x01c1 }, { 4470, 0x4627 },
+ { 4477, 0x8265 }, { 4483, 0x1c84 }, { 4488, 0x480e }, { 4493, 0x3c29 },
+ { 4500, 0x2200 }, { 4502, 0x9831 }, { 4508, 0x0021 }, { 4510, 0x10f1 },
+ { 4516, 0x0000 }, { 4516, 0x01f0 }, { 4521, 0x2a20 }, { 4525, 0xa24a },
+ /* 0x8a00 */
+ { 4531, 0x80b0 }, { 4535, 0x4036 }, { 4540, 0x9855 }, { 4547, 0x60a0 },
+ { 4551, 0x62a9 }, { 4558, 0x31c8 }, { 4564, 0x00a2 }, { 4567, 0xcee0 },
+ { 4575, 0x8849 }, { 4580, 0x82c5 }, { 4586, 0xc280 }, { 4590, 0x48c8 },
+ { 4595, 0x0748 }, { 4600, 0xa0ba }, { 4607, 0x1000 }, { 4608, 0x9071 },
+ /* 0x8b00 */
+ { 4614, 0x0c60 }, { 4618, 0xd002 }, { 4622, 0x2000 }, { 4623, 0x1081 },
+ { 4626, 0x217c }, { 4633, 0x421c }, { 4638, 0x2008 }, { 4640, 0x5340 },
+ { 4645, 0xa832 }, { 4651, 0xd030 }, { 4656, 0x0000 }, { 4656, 0x0000 },
+ { 4656, 0x0000 }, { 4656, 0x0000 }, { 4656, 0x0000 }, { 4656, 0x0000 },
+ /* 0x8c00 */
+ { 4656, 0x0000 }, { 4656, 0x0000 }, { 4656, 0x0000 }, { 4656, 0x6300 },
+ { 4660, 0x8aa0 }, { 4665, 0x2b9a }, { 4673, 0x2358 }, { 4679, 0x4868 },
+ { 4684, 0x08c0 }, { 4687, 0x1a0d }, { 4693, 0x0010 }, { 4694, 0x0600 },
+ { 4696, 0x8a60 }, { 4701, 0x2260 }, { 4705, 0x9102 }, { 4709, 0xc1a5 },
+ /* 0x8d00 */
+ { 4716, 0x020a }, { 4719, 0x0884 }, { 4722, 0x0000 }, { 4722, 0x0000 },
+ { 4722, 0x0000 }, { 4722, 0x0000 }, { 4722, 0x5220 }, { 4726, 0x8000 },
+ { 4727, 0x2114 }, { 4731, 0xc023 }, { 4736, 0x9841 }, { 4741, 0x1aa4 },
+ { 4747, 0x45e1 }, { 4754, 0x02b2 }, { 4759, 0x10b0 }, { 4763, 0x2017 },
+ /* 0x8e00 */
+ { 4768, 0x0872 }, { 4773, 0x0052 }, { 4776, 0x00cf }, { 4782, 0x23ca },
+ { 4789, 0xe803 }, { 4795, 0x7810 }, { 4800, 0xb206 }, { 4806, 0x0e03 },
+ { 4811, 0x020c }, { 4814, 0x6c25 }, { 4821, 0x6284 }, { 4826, 0x0c28 },
+ { 4830, 0x809b }, { 4836, 0x1012 }, { 4839, 0x6100 }, { 4842, 0x0683 },
+ /* 0x8f00 */
+ { 4847, 0x8185 }, { 4852, 0x41c1 }, { 4857, 0x71ab }, { 4866, 0x04f0 },
+ { 4871, 0x808b }, { 4876, 0x613e }, { 4884, 0x0020 }, { 4885, 0x0000 },
+ { 4885, 0x0000 }, { 4885, 0x2000 }, { 4886, 0x0073 }, { 4891, 0x4160 },
+ { 4895, 0x2c43 }, { 4901, 0x002d }, { 4905, 0x4119 }, { 4910, 0x4862 },
+ /* 0x9000 */
+ { 4915, 0x1114 }, { 4919, 0x0900 }, { 4921, 0xb700 }, { 4927, 0x8098 },
+ { 4931, 0x1018 }, { 4934, 0x2800 }, { 4936, 0x10c4 }, { 4940, 0x0211 },
+ { 4943, 0x5920 }, { 4948, 0x0ba1 }, { 4954, 0x0027 }, { 4958, 0x605d },
+ { 4965, 0x11b8 }, { 4971, 0xb3a4 }, { 4979, 0x8820 }, { 4982, 0xc051 },
+ /* 0x9100 */
+ { 4987, 0x2171 }, { 4993, 0x55d1 }, { 5001, 0xc2ad }, { 5009, 0x36d2 },
+ { 5017, 0x8188 }, { 5021, 0x0e88 }, { 5026, 0x2092 }, { 5030, 0x0e10 },
+ { 5034, 0x446a }, { 5040, 0x413a }, { 5046, 0x7142 }, { 5052, 0xb84f },
+ { 5061, 0x002c }, { 5064, 0x4698 }, { 5070, 0xf630 }, { 5078, 0x2a83 },
+ /* 0x9200 */
+ { 5084, 0x16f3 }, { 5093, 0x314d }, { 5100, 0xc178 }, { 5107, 0x5769 },
+ { 5116, 0xe4cd }, { 5125, 0x3302 }, { 5130, 0xc3a3 }, { 5138, 0xbbe1 },
+ { 5148, 0x6700 }, { 5153, 0x8284 }, { 5157, 0x89b1 }, { 5164, 0xbd44 },
+ { 5172, 0x79ef }, { 5184, 0xb3a9 }, { 5193, 0x51ab }, { 5201, 0x8a01 },
+ /* 0x9300 */
+ { 5205, 0x2105 }, { 5209, 0xf032 }, { 5216, 0x06b2 }, { 5222, 0x00d8 },
+ { 5226, 0x0380 }, { 5229, 0x45a7 }, { 5237, 0xa6b0 }, { 5244, 0xa45b },
+ { 5252, 0xad07 }, { 5260, 0x4924 }, { 5265, 0x0b5a }, { 5272, 0x0470 },
+ { 5276, 0x3ef2 }, { 5286, 0xd208 }, { 5291, 0x00c4 }, { 5294, 0x2f80 },
+ /* 0x9400 */
+ { 5300, 0xe316 }, { 5308, 0x80e0 }, { 5312, 0xc000 }, { 5314, 0xa81e },
+ { 5321, 0x1528 }, { 5326, 0x9220 }, { 5330, 0xe90a }, { 5337, 0x0006 },
+ { 5339, 0x0018 }, { 5341, 0x0000 }, { 5341, 0x0000 }, { 5341, 0x0000 },
+ { 5341, 0x0000 }, { 5341, 0x0000 }, { 5341, 0x0000 }, { 5341, 0x0000 },
+ /* 0x9500 */
+ { 5341, 0x0000 }, { 5341, 0x0000 }, { 5341, 0x0000 }, { 5341, 0x0000 },
+ { 5341, 0x0000 }, { 5341, 0x0000 }, { 5341, 0x0000 }, { 5341, 0x4300 },
+ { 5344, 0x7110 }, { 5349, 0xe000 }, { 5352, 0x1a42 }, { 5357, 0xa450 },
+ { 5362, 0x0b40 }, { 5366, 0xe60f }, { 5375, 0x0051 }, { 5378, 0x0000 },
+ /* 0x9600 */
+ { 5378, 0x0000 }, { 5378, 0x6000 }, { 5380, 0x1074 }, { 5385, 0x378a },
+ { 5393, 0x0002 }, { 5394, 0x01d4 }, { 5399, 0x4002 }, { 5401, 0xd810 },
+ { 5406, 0x021e }, { 5411, 0xa442 }, { 5416, 0xc270 }, { 5422, 0x0408 },
+ { 5424, 0x0400 }, { 5425, 0xe504 }, { 5431, 0x8200 }, { 5433, 0x0402 },
+ /* 0x9700 */
+ { 5435, 0x022c }, { 5439, 0x2c00 }, { 5442, 0x010e }, { 5446, 0x000a },
+ { 5448, 0xc40a }, { 5453, 0x0da0 }, { 5458, 0x4488 }, { 5462, 0xa9c8 },
+ { 5469, 0x0201 }, { 5471, 0xc6e0 }, { 5478, 0x5004 }, { 5481, 0xd766 },
+ { 5491, 0x76b2 }, { 5500, 0x6b93 }, { 5509, 0x8013 }, { 5513, 0x0592 },
+ /* 0x9800 */
+ { 5518, 0x6480 }, { 5522, 0x5250 }, { 5527, 0xc869 }, { 5534, 0x402d },
+ { 5539, 0x0490 }, { 5542, 0x06ce }, { 5549, 0x146c }, { 5555, 0x0000 },
+ { 5555, 0x0000 }, { 5555, 0x0000 }, { 5555, 0x6800 }, { 5558, 0x8d91 },
+ { 5565, 0x1124 }, { 5569, 0x0000 }, { 5569, 0x04ea }, { 5575, 0x0048 },
+ /* 0x9900 */
+ { 5577, 0x0184 }, { 5580, 0x9ce2 }, { 5588, 0x08c4 }, { 5592, 0x1e3e },
+ { 5601, 0x61c3 }, { 5608, 0xdb10 }, { 5615, 0x0001 }, { 5616, 0x0000 },
+ { 5616, 0x0000 }, { 5616, 0xa800 }, { 5619, 0x0040 }, { 5620, 0xa627 },
+ { 5628, 0x0208 }, { 5630, 0x5618 }, { 5636, 0x1c80 }, { 5640, 0x6231 },
+ /* 0x9a00 */
+ { 5646, 0x181c }, { 5651, 0x4043 }, { 5655, 0x609d }, { 5662, 0x0168 },
+ { 5666, 0x5c92 }, { 5673, 0x2052 }, { 5677, 0x0000 }, { 5677, 0x0000 },
+ { 5677, 0x0000 }, { 5677, 0x0000 }, { 5677, 0xd400 }, { 5681, 0xca74 },
+ { 5689, 0x414a }, { 5694, 0x18e5 }, { 5701, 0x12b1 }, { 5707, 0xa62c },
+ /* 0x9b00 */
+ { 5714, 0x7b3f }, { 5726, 0x1a45 }, { 5732, 0x2841 }, { 5736, 0x26b8 },
+ { 5743, 0x1900 }, { 5746, 0x48e0 }, { 5751, 0x7d6a }, { 5761, 0x83a8 },
+ { 5767, 0xaef1 }, { 5777, 0x6411 }, { 5782, 0x12c0 }, { 5786, 0xd987 },
+ { 5795, 0x4182 }, { 5799, 0xa181 }, { 5804, 0x8ca0 }, { 5809, 0xa788 },
+ /* 0x9c00 */
+ { 5816, 0x8805 }, { 5820, 0x5742 }, { 5827, 0x07cc }, { 5834, 0x20e2 },
+ { 5839, 0xc63a }, { 5847, 0xf959 }, { 5857, 0x4f08 }, { 5863, 0x08a5 },
+ { 5868, 0x0000 }, { 5868, 0x0000 }, { 5868, 0x0000 }, { 5868, 0x0000 },
+ { 5868, 0x0000 }, { 5868, 0x0000 }, { 5868, 0x0040 }, { 5869, 0x0284 },
+ /* 0x9d00 */
+ { 5872, 0x0804 }, { 5874, 0x7182 }, { 5880, 0x8000 }, { 5881, 0x341d },
+ { 5888, 0x04ac }, { 5893, 0x8018 }, { 5896, 0x0e2c }, { 5902, 0x58c1 },
+ { 5908, 0x6458 }, { 5914, 0x01ec }, { 5920, 0x5402 }, { 5924, 0x9222 },
+ { 5929, 0x0688 }, { 5933, 0xc4f0 }, { 5940, 0x4aa1 }, { 5946, 0x4019 },
+ /* 0x9e00 */
+ { 5950, 0x4484 }, { 5954, 0x3267 }, { 5962, 0x0000 }, { 5962, 0x0000 },
+ { 5962, 0x0000 }, { 5962, 0x0000 }, { 5962, 0x0000 }, { 5962, 0x1c00 },
+ { 5965, 0xc0bd }, { 5973, 0x4940 }, { 5977, 0xd110 }, { 5982, 0x0039 },
+ { 5986, 0x0940 }, { 5989, 0x8020 }, { 5991, 0x7090 }, { 5996, 0x8127 },
+ /* 0x9f00 */
+ { 6002, 0x820c }, { 6006, 0x8ed7 }, { 6016, 0x8c44 }, { 6021, 0xb696 },
+ { 6030, 0x00fa }, { 6036, 0x65e8 }, { 6044, 0xe300 }, { 6049, 0x242b },
+ { 6055, 0x8000 }, { 6056, 0x40d7 }, { 6063, 0x002e },
+};
+
+static int
+jisx0212_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n)
+{
+ if (n >= 2) {
+ const Summary16 *summary = NULL;
+ if (wc < 0x0460)
+ summary = &jisx0212_uni2indx_page00[(wc>>4)];
+ else if (wc >= 0x2100 && wc < 0x2130)
+ summary = &jisx0212_uni2indx_page21[(wc>>4)-0x210];
+ else if (wc >= 0x4e00 && wc < 0x9fb0)
+ summary = &jisx0212_uni2indx_page4e[(wc>>4)-0x4e0];
+ if (summary) {
+ unsigned short used = summary->used;
+ unsigned int i = wc & 0x0f;
+ if (used & ((unsigned short) 1 << i)) {
+ unsigned short c;
+ /* Keep in `used' only the bits 0..i-1. */
+ used &= ((unsigned short) 1 << i) - 1;
+ /* Add `summary->indx' and the number of bits set in `used'. */
+ used = (used & 0x5555) + ((used & 0xaaaa) >> 1);
+ used = (used & 0x3333) + ((used & 0xcccc) >> 2);
+ used = (used & 0x0f0f) + ((used & 0xf0f0) >> 4);
+ used = (used & 0x00ff) + (used >> 8);
+ c = jisx0212_2charset[summary->indx + used];
+ r[0] = (c >> 8); r[1] = (c & 0xff);
+ return 2;
+ }
+ }
+ return RET_ILSEQ;
+ }
+ return RET_TOOSMALL;
+}
diff --git a/libX11/src/xlibi18n/lcUniConv/koi8_c.h b/libX11/src/xlibi18n/lcUniConv/koi8_c.h
index aae4929d2..d870a01db 100644
--- a/libX11/src/xlibi18n/lcUniConv/koi8_c.h
+++ b/libX11/src/xlibi18n/lcUniConv/koi8_c.h
@@ -1,102 +1,102 @@
-
-/*
- * KOI8-C
- */
-
-static const unsigned short koi8_c_2uni[128] = {
- /* 0x80 */
- 0x0493, 0x0497, 0x049b, 0x049d, 0x04a3, 0x04af, 0x04b1, 0x04b3,
- 0x04b7, 0x04b9, 0x04bb, 0x2580, 0x04d9, 0x04e3, 0x04e9, 0x04ef,
- /* 0x90 */
- 0x0492, 0x0496, 0x049a, 0x049c, 0x04a2, 0x04ae, 0x04b0, 0x04b2,
- 0x04b6, 0x04b8, 0x04ba, 0x2321, 0x04d8, 0x04e2, 0x04e8, 0x04ee,
- /* 0xa0 */
- 0x00a0, 0x0452, 0x0453, 0x0451, 0x0454, 0x0455, 0x0456, 0x0457,
- 0x0458, 0x0459, 0x045a, 0x045b, 0x045c, 0x0491, 0x045e, 0x045f,
- /* 0xb0 */
- 0x2116, 0x0402, 0x0403, 0x0401, 0x0404, 0x0405, 0x0406, 0x0407,
- 0x0486, 0x0409, 0x040a, 0x040b, 0x040c, 0x0490, 0x040e, 0x040f,
- /* 0xc0 */
- 0x044e, 0x0430, 0x0431, 0x0446, 0x0434, 0x0435, 0x0444, 0x0433,
- 0x0445, 0x0438, 0x0439, 0x043a, 0x043b, 0x043c, 0x043d, 0x043e,
- /* 0xd0 */
- 0x043f, 0x044f, 0x0440, 0x0441, 0x0442, 0x0443, 0x0436, 0x0432,
- 0x044c, 0x044b, 0x0437, 0x0448, 0x044d, 0x0449, 0x0447, 0x044a,
- /* 0xe0 */
- 0x042e, 0x0410, 0x0411, 0x0426, 0x0414, 0x0415, 0x0424, 0x0413,
- 0x0425, 0x0418, 0x0419, 0x041a, 0x041b, 0x041c, 0x041d, 0x041e,
- /* 0xf0 */
- 0x041f, 0x042f, 0x0420, 0x0421, 0x0422, 0x0423, 0x0416, 0x0412,
- 0x042c, 0x042b, 0x0417, 0x0428, 0x042d, 0x0429, 0x0427, 0x042a,
-};
-
-static int
-koi8_c_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n)
-{
- unsigned char c = *s;
- if (c < 0x80)
- *pwc = (ucs4_t) c;
- else
- *pwc = (ucs4_t) koi8_c_2uni[c-0x80];
- return 1;
-}
-
-static const unsigned char koi8_c_page00[1] = {
- 0xa0, /* 0xa0-0xa7 */
-};
-static const unsigned char koi8_c_page04[240] = {
- 0x00, 0xb3, 0xb1, 0xb2, 0xb4, 0xb5, 0xb6, 0xb7, /* 0x00-0x07 */
- 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0x00, 0xbe, 0xbf, /* 0x08-0x0f */
- 0xe1, 0xe2, 0xf7, 0xe7, 0xe4, 0xe5, 0xf6, 0xfa, /* 0x10-0x17 */
- 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef, 0xf0, /* 0x18-0x1f */
- 0xf2, 0xf3, 0xf4, 0xf5, 0xe6, 0xe8, 0xe3, 0xfe, /* 0x20-0x27 */
- 0xfb, 0xfd, 0xff, 0xf9, 0xf8, 0xfc, 0xe0, 0xf1, /* 0x28-0x2f */
- 0xc1, 0xc2, 0xd7, 0xc7, 0xc4, 0xc5, 0xd6, 0xda, /* 0x30-0x37 */
- 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, 0xd0, /* 0x38-0x3f */
- 0xd2, 0xd3, 0xd4, 0xd5, 0xc6, 0xc8, 0xc3, 0xde, /* 0x40-0x47 */
- 0xdb, 0xdd, 0xdf, 0xd9, 0xd8, 0xdc, 0xc0, 0xd1, /* 0x48-0x4f */
- 0x00, 0xa3, 0xa1, 0xa2, 0xa4, 0xa5, 0xa6, 0xa7, /* 0x50-0x57 */
- 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0x00, 0xae, 0xaf, /* 0x58-0x5f */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x60-0x67 */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x68-0x6f */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x70-0x77 */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x78-0x7f */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x80-0x87 */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x88-0x8f */
- 0xbd, 0xad, 0x90, 0x80, 0x00, 0x00, 0x91, 0x81, /* 0x90-0x97 */
- 0x00, 0x00, 0x92, 0x82, 0x93, 0x83, 0x00, 0x00, /* 0x98-0x9f */
- 0x00, 0x00, 0x94, 0x84, 0x00, 0x00, 0x00, 0x00, /* 0xa0-0xa7 */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x95, 0x85, /* 0xa8-0xaf */
- 0x96, 0x86, 0x97, 0x87, 0x00, 0x00, 0x98, 0x88, /* 0xb0-0xb7 */
- 0x99, 0x89, 0x9a, 0x8a, 0x00, 0x00, 0x00, 0x00, /* 0xb8-0xbf */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xc0-0xc7 */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xc8-0xcf */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xd0-0xd7 */
- 0x9c, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xd8-0xdf */
- 0x00, 0x00, 0x9d, 0x8d, 0x00, 0x00, 0x00, 0x00, /* 0xe0-0xe7 */
- 0x9e, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x9f, 0x8f, /* 0xe8-0xef */
-};
-static const unsigned char koi8_c_page22[1] = {
- 0xb0, /* 0x16-0x16 */
-};
-
-static int
-koi8_c_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n)
-{
- unsigned char c = 0;
- if (wc < 0x0080) {
- *r = wc;
- return 1;
- }
- else if (wc >= 0x00a0 && wc < 0x00a1)
- c = koi8_c_page00[wc-0x00a0];
- else if (wc >= 0x0400 && wc < 0x04ef)
- c = koi8_c_page04[wc-0x0400];
- else if (wc >= 0x2216 && wc < 0x2217)
- c = koi8_c_page22[wc-0x2216];
- if (c != 0) {
- *r = c;
- return 1;
- }
- return RET_ILSEQ;
-}
+
+/*
+ * KOI8-C
+ */
+
+static const unsigned short koi8_c_2uni[128] = {
+ /* 0x80 */
+ 0x0493, 0x0497, 0x049b, 0x049d, 0x04a3, 0x04af, 0x04b1, 0x04b3,
+ 0x04b7, 0x04b9, 0x04bb, 0x2580, 0x04d9, 0x04e3, 0x04e9, 0x04ef,
+ /* 0x90 */
+ 0x0492, 0x0496, 0x049a, 0x049c, 0x04a2, 0x04ae, 0x04b0, 0x04b2,
+ 0x04b6, 0x04b8, 0x04ba, 0x2321, 0x04d8, 0x04e2, 0x04e8, 0x04ee,
+ /* 0xa0 */
+ 0x00a0, 0x0452, 0x0453, 0x0451, 0x0454, 0x0455, 0x0456, 0x0457,
+ 0x0458, 0x0459, 0x045a, 0x045b, 0x045c, 0x0491, 0x045e, 0x045f,
+ /* 0xb0 */
+ 0x2116, 0x0402, 0x0403, 0x0401, 0x0404, 0x0405, 0x0406, 0x0407,
+ 0x0486, 0x0409, 0x040a, 0x040b, 0x040c, 0x0490, 0x040e, 0x040f,
+ /* 0xc0 */
+ 0x044e, 0x0430, 0x0431, 0x0446, 0x0434, 0x0435, 0x0444, 0x0433,
+ 0x0445, 0x0438, 0x0439, 0x043a, 0x043b, 0x043c, 0x043d, 0x043e,
+ /* 0xd0 */
+ 0x043f, 0x044f, 0x0440, 0x0441, 0x0442, 0x0443, 0x0436, 0x0432,
+ 0x044c, 0x044b, 0x0437, 0x0448, 0x044d, 0x0449, 0x0447, 0x044a,
+ /* 0xe0 */
+ 0x042e, 0x0410, 0x0411, 0x0426, 0x0414, 0x0415, 0x0424, 0x0413,
+ 0x0425, 0x0418, 0x0419, 0x041a, 0x041b, 0x041c, 0x041d, 0x041e,
+ /* 0xf0 */
+ 0x041f, 0x042f, 0x0420, 0x0421, 0x0422, 0x0423, 0x0416, 0x0412,
+ 0x042c, 0x042b, 0x0417, 0x0428, 0x042d, 0x0429, 0x0427, 0x042a,
+};
+
+static int
+koi8_c_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n)
+{
+ unsigned char c = *s;
+ if (c < 0x80)
+ *pwc = (ucs4_t) c;
+ else
+ *pwc = (ucs4_t) koi8_c_2uni[c-0x80];
+ return 1;
+}
+
+static const unsigned char koi8_c_page00[1] = {
+ 0xa0, /* 0xa0-0xa7 */
+};
+static const unsigned char koi8_c_page04[240] = {
+ 0x00, 0xb3, 0xb1, 0xb2, 0xb4, 0xb5, 0xb6, 0xb7, /* 0x00-0x07 */
+ 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0x00, 0xbe, 0xbf, /* 0x08-0x0f */
+ 0xe1, 0xe2, 0xf7, 0xe7, 0xe4, 0xe5, 0xf6, 0xfa, /* 0x10-0x17 */
+ 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef, 0xf0, /* 0x18-0x1f */
+ 0xf2, 0xf3, 0xf4, 0xf5, 0xe6, 0xe8, 0xe3, 0xfe, /* 0x20-0x27 */
+ 0xfb, 0xfd, 0xff, 0xf9, 0xf8, 0xfc, 0xe0, 0xf1, /* 0x28-0x2f */
+ 0xc1, 0xc2, 0xd7, 0xc7, 0xc4, 0xc5, 0xd6, 0xda, /* 0x30-0x37 */
+ 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, 0xd0, /* 0x38-0x3f */
+ 0xd2, 0xd3, 0xd4, 0xd5, 0xc6, 0xc8, 0xc3, 0xde, /* 0x40-0x47 */
+ 0xdb, 0xdd, 0xdf, 0xd9, 0xd8, 0xdc, 0xc0, 0xd1, /* 0x48-0x4f */
+ 0x00, 0xa3, 0xa1, 0xa2, 0xa4, 0xa5, 0xa6, 0xa7, /* 0x50-0x57 */
+ 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0x00, 0xae, 0xaf, /* 0x58-0x5f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x60-0x67 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x68-0x6f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x70-0x77 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x78-0x7f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x80-0x87 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x88-0x8f */
+ 0xbd, 0xad, 0x90, 0x80, 0x00, 0x00, 0x91, 0x81, /* 0x90-0x97 */
+ 0x00, 0x00, 0x92, 0x82, 0x93, 0x83, 0x00, 0x00, /* 0x98-0x9f */
+ 0x00, 0x00, 0x94, 0x84, 0x00, 0x00, 0x00, 0x00, /* 0xa0-0xa7 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x95, 0x85, /* 0xa8-0xaf */
+ 0x96, 0x86, 0x97, 0x87, 0x00, 0x00, 0x98, 0x88, /* 0xb0-0xb7 */
+ 0x99, 0x89, 0x9a, 0x8a, 0x00, 0x00, 0x00, 0x00, /* 0xb8-0xbf */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xc0-0xc7 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xc8-0xcf */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xd0-0xd7 */
+ 0x9c, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xd8-0xdf */
+ 0x00, 0x00, 0x9d, 0x8d, 0x00, 0x00, 0x00, 0x00, /* 0xe0-0xe7 */
+ 0x9e, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x9f, 0x8f, /* 0xe8-0xef */
+};
+static const unsigned char koi8_c_page22[1] = {
+ 0xb0, /* 0x16-0x16 */
+};
+
+static int
+koi8_c_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n)
+{
+ unsigned char c = 0;
+ if (wc < 0x0080) {
+ *r = wc;
+ return 1;
+ }
+ else if (wc >= 0x00a0 && wc < 0x00a1)
+ c = koi8_c_page00[wc-0x00a0];
+ else if (wc >= 0x0400 && wc < 0x04ef)
+ c = koi8_c_page04[wc-0x0400];
+ else if (wc >= 0x2216 && wc < 0x2217)
+ c = koi8_c_page22[wc-0x2216];
+ if (c != 0) {
+ *r = c;
+ return 1;
+ }
+ return RET_ILSEQ;
+}
diff --git a/libX11/src/xlibi18n/lcUniConv/koi8_r.h b/libX11/src/xlibi18n/lcUniConv/koi8_r.h
index fd8f19d66..37ca594f6 100644
--- a/libX11/src/xlibi18n/lcUniConv/koi8_r.h
+++ b/libX11/src/xlibi18n/lcUniConv/koi8_r.h
@@ -1,134 +1,134 @@
-
-/*
- * KOI8-R
- */
-
-/* Specification: RFC 1489 */
-
-static const unsigned short koi8_r_2uni[128] = {
- /* 0x80 */
- 0x2500, 0x2502, 0x250c, 0x2510, 0x2514, 0x2518, 0x251c, 0x2524,
- 0x252c, 0x2534, 0x253c, 0x2580, 0x2584, 0x2588, 0x258c, 0x2590,
- /* 0x90 */
- 0x2591, 0x2592, 0x2593, 0x2320, 0x25a0, 0x2219, 0x221a, 0x2248,
- 0x2264, 0x2265, 0x00a0, 0x2321, 0x00b0, 0x00b2, 0x00b7, 0x00f7,
- /* 0xa0 */
- 0x2550, 0x2551, 0x2552, 0x0451, 0x2553, 0x2554, 0x2555, 0x2556,
- 0x2557, 0x2558, 0x2559, 0x255a, 0x255b, 0x255c, 0x255d, 0x255e,
- /* 0xb0 */
- 0x255f, 0x2560, 0x2561, 0x0401, 0x2562, 0x2563, 0x2564, 0x2565,
- 0x2566, 0x2567, 0x2568, 0x2569, 0x256a, 0x256b, 0x256c, 0x00a9,
- /* 0xc0 */
- 0x044e, 0x0430, 0x0431, 0x0446, 0x0434, 0x0435, 0x0444, 0x0433,
- 0x0445, 0x0438, 0x0439, 0x043a, 0x043b, 0x043c, 0x043d, 0x043e,
- /* 0xd0 */
- 0x043f, 0x044f, 0x0440, 0x0441, 0x0442, 0x0443, 0x0436, 0x0432,
- 0x044c, 0x044b, 0x0437, 0x0448, 0x044d, 0x0449, 0x0447, 0x044a,
- /* 0xe0 */
- 0x042e, 0x0410, 0x0411, 0x0426, 0x0414, 0x0415, 0x0424, 0x0413,
- 0x0425, 0x0418, 0x0419, 0x041a, 0x041b, 0x041c, 0x041d, 0x041e,
- /* 0xf0 */
- 0x041f, 0x042f, 0x0420, 0x0421, 0x0422, 0x0423, 0x0416, 0x0412,
- 0x042c, 0x042b, 0x0417, 0x0428, 0x042d, 0x0429, 0x0427, 0x042a,
-};
-
-static int
-koi8_r_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n)
-{
- unsigned char c = *s;
- if (c < 0x80)
- *pwc = (ucs4_t) c;
- else
- *pwc = (ucs4_t) koi8_r_2uni[c-0x80];
- return 1;
-}
-
-static const unsigned char koi8_r_page00[88] = {
- 0x9a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xa0-0xa7 */
- 0x00, 0xbf, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xa8-0xaf */
- 0x9c, 0x00, 0x9d, 0x00, 0x00, 0x00, 0x00, 0x9e, /* 0xb0-0xb7 */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xb8-0xbf */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xc0-0xc7 */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xc8-0xcf */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xd0-0xd7 */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xd8-0xdf */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xe0-0xe7 */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xe8-0xef */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9f, /* 0xf0-0xf7 */
-};
-static const unsigned char koi8_r_page04[88] = {
- 0x00, 0xb3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x00-0x07 */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x08-0x0f */
- 0xe1, 0xe2, 0xf7, 0xe7, 0xe4, 0xe5, 0xf6, 0xfa, /* 0x10-0x17 */
- 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef, 0xf0, /* 0x18-0x1f */
- 0xf2, 0xf3, 0xf4, 0xf5, 0xe6, 0xe8, 0xe3, 0xfe, /* 0x20-0x27 */
- 0xfb, 0xfd, 0xff, 0xf9, 0xf8, 0xfc, 0xe0, 0xf1, /* 0x28-0x2f */
- 0xc1, 0xc2, 0xd7, 0xc7, 0xc4, 0xc5, 0xd6, 0xda, /* 0x30-0x37 */
- 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, 0xd0, /* 0x38-0x3f */
- 0xd2, 0xd3, 0xd4, 0xd5, 0xc6, 0xc8, 0xc3, 0xde, /* 0x40-0x47 */
- 0xdb, 0xdd, 0xdf, 0xd9, 0xd8, 0xdc, 0xc0, 0xd1, /* 0x48-0x4f */
- 0x00, 0xa3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x50-0x57 */
-};
-static const unsigned char koi8_r_page22[80] = {
- 0x00, 0x95, 0x96, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x18-0x1f */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x20-0x27 */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x28-0x2f */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x30-0x37 */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x38-0x3f */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x40-0x47 */
- 0x97, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x48-0x4f */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x50-0x57 */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x58-0x5f */
- 0x00, 0x00, 0x00, 0x00, 0x98, 0x99, 0x00, 0x00, /* 0x60-0x67 */
-};
-static const unsigned char koi8_r_page23[8] = {
- 0x93, 0x9b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x20-0x27 */
-};
-static const unsigned char koi8_r_page25[168] = {
- 0x80, 0x00, 0x81, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x00-0x07 */
- 0x00, 0x00, 0x00, 0x00, 0x82, 0x00, 0x00, 0x00, /* 0x08-0x0f */
- 0x83, 0x00, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, /* 0x10-0x17 */
- 0x85, 0x00, 0x00, 0x00, 0x86, 0x00, 0x00, 0x00, /* 0x18-0x1f */
- 0x00, 0x00, 0x00, 0x00, 0x87, 0x00, 0x00, 0x00, /* 0x20-0x27 */
- 0x00, 0x00, 0x00, 0x00, 0x88, 0x00, 0x00, 0x00, /* 0x28-0x2f */
- 0x00, 0x00, 0x00, 0x00, 0x89, 0x00, 0x00, 0x00, /* 0x30-0x37 */
- 0x00, 0x00, 0x00, 0x00, 0x8a, 0x00, 0x00, 0x00, /* 0x38-0x3f */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x40-0x47 */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x48-0x4f */
- 0xa0, 0xa1, 0xa2, 0xa4, 0xa5, 0xa6, 0xa7, 0xa8, /* 0x50-0x57 */
- 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf, 0xb0, /* 0x58-0x5f */
- 0xb1, 0xb2, 0xb4, 0xb5, 0xb6, 0xb7, 0xb8, 0xb9, /* 0x60-0x67 */
- 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0x00, 0x00, 0x00, /* 0x68-0x6f */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x70-0x77 */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x78-0x7f */
- 0x8b, 0x00, 0x00, 0x00, 0x8c, 0x00, 0x00, 0x00, /* 0x80-0x87 */
- 0x8d, 0x00, 0x00, 0x00, 0x8e, 0x00, 0x00, 0x00, /* 0x88-0x8f */
- 0x8f, 0x90, 0x91, 0x92, 0x00, 0x00, 0x00, 0x00, /* 0x90-0x97 */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x98-0x9f */
- 0x94, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xa0-0xa7 */
-};
-
-static int
-koi8_r_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n)
-{
- unsigned char c = 0;
- if (wc < 0x0080) {
- *r = wc;
- return 1;
- }
- else if (wc >= 0x00a0 && wc < 0x00f8)
- c = koi8_r_page00[wc-0x00a0];
- else if (wc >= 0x0400 && wc < 0x0458)
- c = koi8_r_page04[wc-0x0400];
- else if (wc >= 0x2218 && wc < 0x2268)
- c = koi8_r_page22[wc-0x2218];
- else if (wc >= 0x2320 && wc < 0x2328)
- c = koi8_r_page23[wc-0x2320];
- else if (wc >= 0x2500 && wc < 0x25a8)
- c = koi8_r_page25[wc-0x2500];
- if (c != 0) {
- *r = c;
- return 1;
- }
- return RET_ILSEQ;
-}
+
+/*
+ * KOI8-R
+ */
+
+/* Specification: RFC 1489 */
+
+static const unsigned short koi8_r_2uni[128] = {
+ /* 0x80 */
+ 0x2500, 0x2502, 0x250c, 0x2510, 0x2514, 0x2518, 0x251c, 0x2524,
+ 0x252c, 0x2534, 0x253c, 0x2580, 0x2584, 0x2588, 0x258c, 0x2590,
+ /* 0x90 */
+ 0x2591, 0x2592, 0x2593, 0x2320, 0x25a0, 0x2219, 0x221a, 0x2248,
+ 0x2264, 0x2265, 0x00a0, 0x2321, 0x00b0, 0x00b2, 0x00b7, 0x00f7,
+ /* 0xa0 */
+ 0x2550, 0x2551, 0x2552, 0x0451, 0x2553, 0x2554, 0x2555, 0x2556,
+ 0x2557, 0x2558, 0x2559, 0x255a, 0x255b, 0x255c, 0x255d, 0x255e,
+ /* 0xb0 */
+ 0x255f, 0x2560, 0x2561, 0x0401, 0x2562, 0x2563, 0x2564, 0x2565,
+ 0x2566, 0x2567, 0x2568, 0x2569, 0x256a, 0x256b, 0x256c, 0x00a9,
+ /* 0xc0 */
+ 0x044e, 0x0430, 0x0431, 0x0446, 0x0434, 0x0435, 0x0444, 0x0433,
+ 0x0445, 0x0438, 0x0439, 0x043a, 0x043b, 0x043c, 0x043d, 0x043e,
+ /* 0xd0 */
+ 0x043f, 0x044f, 0x0440, 0x0441, 0x0442, 0x0443, 0x0436, 0x0432,
+ 0x044c, 0x044b, 0x0437, 0x0448, 0x044d, 0x0449, 0x0447, 0x044a,
+ /* 0xe0 */
+ 0x042e, 0x0410, 0x0411, 0x0426, 0x0414, 0x0415, 0x0424, 0x0413,
+ 0x0425, 0x0418, 0x0419, 0x041a, 0x041b, 0x041c, 0x041d, 0x041e,
+ /* 0xf0 */
+ 0x041f, 0x042f, 0x0420, 0x0421, 0x0422, 0x0423, 0x0416, 0x0412,
+ 0x042c, 0x042b, 0x0417, 0x0428, 0x042d, 0x0429, 0x0427, 0x042a,
+};
+
+static int
+koi8_r_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n)
+{
+ unsigned char c = *s;
+ if (c < 0x80)
+ *pwc = (ucs4_t) c;
+ else
+ *pwc = (ucs4_t) koi8_r_2uni[c-0x80];
+ return 1;
+}
+
+static const unsigned char koi8_r_page00[88] = {
+ 0x9a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xa0-0xa7 */
+ 0x00, 0xbf, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xa8-0xaf */
+ 0x9c, 0x00, 0x9d, 0x00, 0x00, 0x00, 0x00, 0x9e, /* 0xb0-0xb7 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xb8-0xbf */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xc0-0xc7 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xc8-0xcf */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xd0-0xd7 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xd8-0xdf */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xe0-0xe7 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xe8-0xef */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9f, /* 0xf0-0xf7 */
+};
+static const unsigned char koi8_r_page04[88] = {
+ 0x00, 0xb3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x00-0x07 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x08-0x0f */
+ 0xe1, 0xe2, 0xf7, 0xe7, 0xe4, 0xe5, 0xf6, 0xfa, /* 0x10-0x17 */
+ 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef, 0xf0, /* 0x18-0x1f */
+ 0xf2, 0xf3, 0xf4, 0xf5, 0xe6, 0xe8, 0xe3, 0xfe, /* 0x20-0x27 */
+ 0xfb, 0xfd, 0xff, 0xf9, 0xf8, 0xfc, 0xe0, 0xf1, /* 0x28-0x2f */
+ 0xc1, 0xc2, 0xd7, 0xc7, 0xc4, 0xc5, 0xd6, 0xda, /* 0x30-0x37 */
+ 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, 0xd0, /* 0x38-0x3f */
+ 0xd2, 0xd3, 0xd4, 0xd5, 0xc6, 0xc8, 0xc3, 0xde, /* 0x40-0x47 */
+ 0xdb, 0xdd, 0xdf, 0xd9, 0xd8, 0xdc, 0xc0, 0xd1, /* 0x48-0x4f */
+ 0x00, 0xa3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x50-0x57 */
+};
+static const unsigned char koi8_r_page22[80] = {
+ 0x00, 0x95, 0x96, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x18-0x1f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x20-0x27 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x28-0x2f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x30-0x37 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x38-0x3f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x40-0x47 */
+ 0x97, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x48-0x4f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x50-0x57 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x58-0x5f */
+ 0x00, 0x00, 0x00, 0x00, 0x98, 0x99, 0x00, 0x00, /* 0x60-0x67 */
+};
+static const unsigned char koi8_r_page23[8] = {
+ 0x93, 0x9b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x20-0x27 */
+};
+static const unsigned char koi8_r_page25[168] = {
+ 0x80, 0x00, 0x81, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x00-0x07 */
+ 0x00, 0x00, 0x00, 0x00, 0x82, 0x00, 0x00, 0x00, /* 0x08-0x0f */
+ 0x83, 0x00, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, /* 0x10-0x17 */
+ 0x85, 0x00, 0x00, 0x00, 0x86, 0x00, 0x00, 0x00, /* 0x18-0x1f */
+ 0x00, 0x00, 0x00, 0x00, 0x87, 0x00, 0x00, 0x00, /* 0x20-0x27 */
+ 0x00, 0x00, 0x00, 0x00, 0x88, 0x00, 0x00, 0x00, /* 0x28-0x2f */
+ 0x00, 0x00, 0x00, 0x00, 0x89, 0x00, 0x00, 0x00, /* 0x30-0x37 */
+ 0x00, 0x00, 0x00, 0x00, 0x8a, 0x00, 0x00, 0x00, /* 0x38-0x3f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x40-0x47 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x48-0x4f */
+ 0xa0, 0xa1, 0xa2, 0xa4, 0xa5, 0xa6, 0xa7, 0xa8, /* 0x50-0x57 */
+ 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf, 0xb0, /* 0x58-0x5f */
+ 0xb1, 0xb2, 0xb4, 0xb5, 0xb6, 0xb7, 0xb8, 0xb9, /* 0x60-0x67 */
+ 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0x00, 0x00, 0x00, /* 0x68-0x6f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x70-0x77 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x78-0x7f */
+ 0x8b, 0x00, 0x00, 0x00, 0x8c, 0x00, 0x00, 0x00, /* 0x80-0x87 */
+ 0x8d, 0x00, 0x00, 0x00, 0x8e, 0x00, 0x00, 0x00, /* 0x88-0x8f */
+ 0x8f, 0x90, 0x91, 0x92, 0x00, 0x00, 0x00, 0x00, /* 0x90-0x97 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x98-0x9f */
+ 0x94, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xa0-0xa7 */
+};
+
+static int
+koi8_r_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n)
+{
+ unsigned char c = 0;
+ if (wc < 0x0080) {
+ *r = wc;
+ return 1;
+ }
+ else if (wc >= 0x00a0 && wc < 0x00f8)
+ c = koi8_r_page00[wc-0x00a0];
+ else if (wc >= 0x0400 && wc < 0x0458)
+ c = koi8_r_page04[wc-0x0400];
+ else if (wc >= 0x2218 && wc < 0x2268)
+ c = koi8_r_page22[wc-0x2218];
+ else if (wc >= 0x2320 && wc < 0x2328)
+ c = koi8_r_page23[wc-0x2320];
+ else if (wc >= 0x2500 && wc < 0x25a8)
+ c = koi8_r_page25[wc-0x2500];
+ if (c != 0) {
+ *r = c;
+ return 1;
+ }
+ return RET_ILSEQ;
+}
diff --git a/libX11/src/xlibi18n/lcUniConv/koi8_u.h b/libX11/src/xlibi18n/lcUniConv/koi8_u.h
index 048d9f028..e094419bc 100644
--- a/libX11/src/xlibi18n/lcUniConv/koi8_u.h
+++ b/libX11/src/xlibi18n/lcUniConv/koi8_u.h
@@ -1,142 +1,142 @@
-
-/*
- * KOI8-U
- */
-
-/* Specification: RFC 2319 */
-
-static const unsigned short koi8_u_2uni[128] = {
- /* 0x80 */
- 0x2500, 0x2502, 0x250c, 0x2510, 0x2514, 0x2518, 0x251c, 0x2524,
- 0x252c, 0x2534, 0x253c, 0x2580, 0x2584, 0x2588, 0x258c, 0x2590,
- /* 0x90 */
- 0x2591, 0x2592, 0x2593, 0x2320, 0x25a0, 0x2219, 0x221a, 0x2248,
- 0x2264, 0x2265, 0x00a0, 0x2321, 0x00b0, 0x00b2, 0x00b7, 0x00f7,
- /* 0xa0 */
- 0x2550, 0x2551, 0x2552, 0x0451, 0x0454, 0x2554, 0x0456, 0x0457,
- 0x2557, 0x2558, 0x2559, 0x255a, 0x255b, 0x0491, 0x255d, 0x255e,
- /* 0xb0 */
- 0x255f, 0x2560, 0x2561, 0x0401, 0x0404, 0x2563, 0x0406, 0x0407,
- 0x2566, 0x2567, 0x2568, 0x2569, 0x256a, 0x0490, 0x256c, 0x00a9,
- /* 0xc0 */
- 0x044e, 0x0430, 0x0431, 0x0446, 0x0434, 0x0435, 0x0444, 0x0433,
- 0x0445, 0x0438, 0x0439, 0x043a, 0x043b, 0x043c, 0x043d, 0x043e,
- /* 0xd0 */
- 0x043f, 0x044f, 0x0440, 0x0441, 0x0442, 0x0443, 0x0436, 0x0432,
- 0x044c, 0x044b, 0x0437, 0x0448, 0x044d, 0x0449, 0x0447, 0x044a,
- /* 0xe0 */
- 0x042e, 0x0410, 0x0411, 0x0426, 0x0414, 0x0415, 0x0424, 0x0413,
- 0x0425, 0x0418, 0x0419, 0x041a, 0x041b, 0x041c, 0x041d, 0x041e,
- /* 0xf0 */
- 0x041f, 0x042f, 0x0420, 0x0421, 0x0422, 0x0423, 0x0416, 0x0412,
- 0x042c, 0x042b, 0x0417, 0x0428, 0x042d, 0x0429, 0x0427, 0x042a,
-};
-
-static int
-koi8_u_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n)
-{
- unsigned char c = *s;
- if (c < 0x80)
- *pwc = (ucs4_t) c;
- else
- *pwc = (ucs4_t) koi8_u_2uni[c-0x80];
- return 1;
-}
-
-static const unsigned char koi8_u_page00[88] = {
- 0x9a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xa0-0xa7 */
- 0x00, 0xbf, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xa8-0xaf */
- 0x9c, 0x00, 0x9d, 0x00, 0x00, 0x00, 0x00, 0x9e, /* 0xb0-0xb7 */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xb8-0xbf */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xc0-0xc7 */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xc8-0xcf */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xd0-0xd7 */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xd8-0xdf */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xe0-0xe7 */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xe8-0xef */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9f, /* 0xf0-0xf7 */
-};
-static const unsigned char koi8_u_page04[152] = {
- 0x00, 0xb3, 0x00, 0x00, 0xb4, 0x00, 0xb6, 0xb7, /* 0x00-0x07 */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x08-0x0f */
- 0xe1, 0xe2, 0xf7, 0xe7, 0xe4, 0xe5, 0xf6, 0xfa, /* 0x10-0x17 */
- 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef, 0xf0, /* 0x18-0x1f */
- 0xf2, 0xf3, 0xf4, 0xf5, 0xe6, 0xe8, 0xe3, 0xfe, /* 0x20-0x27 */
- 0xfb, 0xfd, 0xff, 0xf9, 0xf8, 0xfc, 0xe0, 0xf1, /* 0x28-0x2f */
- 0xc1, 0xc2, 0xd7, 0xc7, 0xc4, 0xc5, 0xd6, 0xda, /* 0x30-0x37 */
- 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, 0xd0, /* 0x38-0x3f */
- 0xd2, 0xd3, 0xd4, 0xd5, 0xc6, 0xc8, 0xc3, 0xde, /* 0x40-0x47 */
- 0xdb, 0xdd, 0xdf, 0xd9, 0xd8, 0xdc, 0xc0, 0xd1, /* 0x48-0x4f */
- 0x00, 0xa3, 0x00, 0x00, 0xa4, 0x00, 0xa6, 0xa7, /* 0x50-0x57 */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x58-0x5f */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x60-0x67 */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x68-0x6f */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x70-0x77 */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x78-0x7f */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x80-0x87 */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x88-0x8f */
- 0xbd, 0xad, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x90-0x97 */
-};
-static const unsigned char koi8_u_page22[80] = {
- 0x00, 0x95, 0x96, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x18-0x1f */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x20-0x27 */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x28-0x2f */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x30-0x37 */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x38-0x3f */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x40-0x47 */
- 0x97, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x48-0x4f */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x50-0x57 */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x58-0x5f */
- 0x00, 0x00, 0x00, 0x00, 0x98, 0x99, 0x00, 0x00, /* 0x60-0x67 */
-};
-static const unsigned char koi8_u_page23[8] = {
- 0x93, 0x9b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x20-0x27 */
-};
-static const unsigned char koi8_u_page25[168] = {
- 0x80, 0x00, 0x81, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x00-0x07 */
- 0x00, 0x00, 0x00, 0x00, 0x82, 0x00, 0x00, 0x00, /* 0x08-0x0f */
- 0x83, 0x00, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, /* 0x10-0x17 */
- 0x85, 0x00, 0x00, 0x00, 0x86, 0x00, 0x00, 0x00, /* 0x18-0x1f */
- 0x00, 0x00, 0x00, 0x00, 0x87, 0x00, 0x00, 0x00, /* 0x20-0x27 */
- 0x00, 0x00, 0x00, 0x00, 0x88, 0x00, 0x00, 0x00, /* 0x28-0x2f */
- 0x00, 0x00, 0x00, 0x00, 0x89, 0x00, 0x00, 0x00, /* 0x30-0x37 */
- 0x00, 0x00, 0x00, 0x00, 0x8a, 0x00, 0x00, 0x00, /* 0x38-0x3f */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x40-0x47 */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x48-0x4f */
- 0xa0, 0xa1, 0xa2, 0x00, 0xa5, 0x00, 0x00, 0xa8, /* 0x50-0x57 */
- 0xa9, 0xaa, 0xab, 0xac, 0x00, 0xae, 0xaf, 0xb0, /* 0x58-0x5f */
- 0xb1, 0xb2, 0x00, 0xb5, 0x00, 0x00, 0xb8, 0xb9, /* 0x60-0x67 */
- 0xba, 0xbb, 0xbc, 0x00, 0xbe, 0x00, 0x00, 0x00, /* 0x68-0x6f */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x70-0x77 */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x78-0x7f */
- 0x8b, 0x00, 0x00, 0x00, 0x8c, 0x00, 0x00, 0x00, /* 0x80-0x87 */
- 0x8d, 0x00, 0x00, 0x00, 0x8e, 0x00, 0x00, 0x00, /* 0x88-0x8f */
- 0x8f, 0x90, 0x91, 0x92, 0x00, 0x00, 0x00, 0x00, /* 0x90-0x97 */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x98-0x9f */
- 0x94, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xa0-0xa7 */
-};
-
-static int
-koi8_u_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n)
-{
- unsigned char c = 0;
- if (wc < 0x0080) {
- *r = wc;
- return 1;
- }
- else if (wc >= 0x00a0 && wc < 0x00f8)
- c = koi8_u_page00[wc-0x00a0];
- else if (wc >= 0x0400 && wc < 0x0498)
- c = koi8_u_page04[wc-0x0400];
- else if (wc >= 0x2218 && wc < 0x2268)
- c = koi8_u_page22[wc-0x2218];
- else if (wc >= 0x2320 && wc < 0x2328)
- c = koi8_u_page23[wc-0x2320];
- else if (wc >= 0x2500 && wc < 0x25a8)
- c = koi8_u_page25[wc-0x2500];
- if (c != 0) {
- *r = c;
- return 1;
- }
- return RET_ILSEQ;
-}
+
+/*
+ * KOI8-U
+ */
+
+/* Specification: RFC 2319 */
+
+static const unsigned short koi8_u_2uni[128] = {
+ /* 0x80 */
+ 0x2500, 0x2502, 0x250c, 0x2510, 0x2514, 0x2518, 0x251c, 0x2524,
+ 0x252c, 0x2534, 0x253c, 0x2580, 0x2584, 0x2588, 0x258c, 0x2590,
+ /* 0x90 */
+ 0x2591, 0x2592, 0x2593, 0x2320, 0x25a0, 0x2219, 0x221a, 0x2248,
+ 0x2264, 0x2265, 0x00a0, 0x2321, 0x00b0, 0x00b2, 0x00b7, 0x00f7,
+ /* 0xa0 */
+ 0x2550, 0x2551, 0x2552, 0x0451, 0x0454, 0x2554, 0x0456, 0x0457,
+ 0x2557, 0x2558, 0x2559, 0x255a, 0x255b, 0x0491, 0x255d, 0x255e,
+ /* 0xb0 */
+ 0x255f, 0x2560, 0x2561, 0x0401, 0x0404, 0x2563, 0x0406, 0x0407,
+ 0x2566, 0x2567, 0x2568, 0x2569, 0x256a, 0x0490, 0x256c, 0x00a9,
+ /* 0xc0 */
+ 0x044e, 0x0430, 0x0431, 0x0446, 0x0434, 0x0435, 0x0444, 0x0433,
+ 0x0445, 0x0438, 0x0439, 0x043a, 0x043b, 0x043c, 0x043d, 0x043e,
+ /* 0xd0 */
+ 0x043f, 0x044f, 0x0440, 0x0441, 0x0442, 0x0443, 0x0436, 0x0432,
+ 0x044c, 0x044b, 0x0437, 0x0448, 0x044d, 0x0449, 0x0447, 0x044a,
+ /* 0xe0 */
+ 0x042e, 0x0410, 0x0411, 0x0426, 0x0414, 0x0415, 0x0424, 0x0413,
+ 0x0425, 0x0418, 0x0419, 0x041a, 0x041b, 0x041c, 0x041d, 0x041e,
+ /* 0xf0 */
+ 0x041f, 0x042f, 0x0420, 0x0421, 0x0422, 0x0423, 0x0416, 0x0412,
+ 0x042c, 0x042b, 0x0417, 0x0428, 0x042d, 0x0429, 0x0427, 0x042a,
+};
+
+static int
+koi8_u_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n)
+{
+ unsigned char c = *s;
+ if (c < 0x80)
+ *pwc = (ucs4_t) c;
+ else
+ *pwc = (ucs4_t) koi8_u_2uni[c-0x80];
+ return 1;
+}
+
+static const unsigned char koi8_u_page00[88] = {
+ 0x9a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xa0-0xa7 */
+ 0x00, 0xbf, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xa8-0xaf */
+ 0x9c, 0x00, 0x9d, 0x00, 0x00, 0x00, 0x00, 0x9e, /* 0xb0-0xb7 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xb8-0xbf */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xc0-0xc7 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xc8-0xcf */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xd0-0xd7 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xd8-0xdf */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xe0-0xe7 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xe8-0xef */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9f, /* 0xf0-0xf7 */
+};
+static const unsigned char koi8_u_page04[152] = {
+ 0x00, 0xb3, 0x00, 0x00, 0xb4, 0x00, 0xb6, 0xb7, /* 0x00-0x07 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x08-0x0f */
+ 0xe1, 0xe2, 0xf7, 0xe7, 0xe4, 0xe5, 0xf6, 0xfa, /* 0x10-0x17 */
+ 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef, 0xf0, /* 0x18-0x1f */
+ 0xf2, 0xf3, 0xf4, 0xf5, 0xe6, 0xe8, 0xe3, 0xfe, /* 0x20-0x27 */
+ 0xfb, 0xfd, 0xff, 0xf9, 0xf8, 0xfc, 0xe0, 0xf1, /* 0x28-0x2f */
+ 0xc1, 0xc2, 0xd7, 0xc7, 0xc4, 0xc5, 0xd6, 0xda, /* 0x30-0x37 */
+ 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, 0xd0, /* 0x38-0x3f */
+ 0xd2, 0xd3, 0xd4, 0xd5, 0xc6, 0xc8, 0xc3, 0xde, /* 0x40-0x47 */
+ 0xdb, 0xdd, 0xdf, 0xd9, 0xd8, 0xdc, 0xc0, 0xd1, /* 0x48-0x4f */
+ 0x00, 0xa3, 0x00, 0x00, 0xa4, 0x00, 0xa6, 0xa7, /* 0x50-0x57 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x58-0x5f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x60-0x67 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x68-0x6f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x70-0x77 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x78-0x7f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x80-0x87 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x88-0x8f */
+ 0xbd, 0xad, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x90-0x97 */
+};
+static const unsigned char koi8_u_page22[80] = {
+ 0x00, 0x95, 0x96, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x18-0x1f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x20-0x27 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x28-0x2f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x30-0x37 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x38-0x3f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x40-0x47 */
+ 0x97, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x48-0x4f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x50-0x57 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x58-0x5f */
+ 0x00, 0x00, 0x00, 0x00, 0x98, 0x99, 0x00, 0x00, /* 0x60-0x67 */
+};
+static const unsigned char koi8_u_page23[8] = {
+ 0x93, 0x9b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x20-0x27 */
+};
+static const unsigned char koi8_u_page25[168] = {
+ 0x80, 0x00, 0x81, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x00-0x07 */
+ 0x00, 0x00, 0x00, 0x00, 0x82, 0x00, 0x00, 0x00, /* 0x08-0x0f */
+ 0x83, 0x00, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, /* 0x10-0x17 */
+ 0x85, 0x00, 0x00, 0x00, 0x86, 0x00, 0x00, 0x00, /* 0x18-0x1f */
+ 0x00, 0x00, 0x00, 0x00, 0x87, 0x00, 0x00, 0x00, /* 0x20-0x27 */
+ 0x00, 0x00, 0x00, 0x00, 0x88, 0x00, 0x00, 0x00, /* 0x28-0x2f */
+ 0x00, 0x00, 0x00, 0x00, 0x89, 0x00, 0x00, 0x00, /* 0x30-0x37 */
+ 0x00, 0x00, 0x00, 0x00, 0x8a, 0x00, 0x00, 0x00, /* 0x38-0x3f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x40-0x47 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x48-0x4f */
+ 0xa0, 0xa1, 0xa2, 0x00, 0xa5, 0x00, 0x00, 0xa8, /* 0x50-0x57 */
+ 0xa9, 0xaa, 0xab, 0xac, 0x00, 0xae, 0xaf, 0xb0, /* 0x58-0x5f */
+ 0xb1, 0xb2, 0x00, 0xb5, 0x00, 0x00, 0xb8, 0xb9, /* 0x60-0x67 */
+ 0xba, 0xbb, 0xbc, 0x00, 0xbe, 0x00, 0x00, 0x00, /* 0x68-0x6f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x70-0x77 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x78-0x7f */
+ 0x8b, 0x00, 0x00, 0x00, 0x8c, 0x00, 0x00, 0x00, /* 0x80-0x87 */
+ 0x8d, 0x00, 0x00, 0x00, 0x8e, 0x00, 0x00, 0x00, /* 0x88-0x8f */
+ 0x8f, 0x90, 0x91, 0x92, 0x00, 0x00, 0x00, 0x00, /* 0x90-0x97 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x98-0x9f */
+ 0x94, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xa0-0xa7 */
+};
+
+static int
+koi8_u_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n)
+{
+ unsigned char c = 0;
+ if (wc < 0x0080) {
+ *r = wc;
+ return 1;
+ }
+ else if (wc >= 0x00a0 && wc < 0x00f8)
+ c = koi8_u_page00[wc-0x00a0];
+ else if (wc >= 0x0400 && wc < 0x0498)
+ c = koi8_u_page04[wc-0x0400];
+ else if (wc >= 0x2218 && wc < 0x2268)
+ c = koi8_u_page22[wc-0x2218];
+ else if (wc >= 0x2320 && wc < 0x2328)
+ c = koi8_u_page23[wc-0x2320];
+ else if (wc >= 0x2500 && wc < 0x25a8)
+ c = koi8_u_page25[wc-0x2500];
+ if (c != 0) {
+ *r = c;
+ return 1;
+ }
+ return RET_ILSEQ;
+}
diff --git a/libX11/src/xlibi18n/lcUniConv/ksc5601.h b/libX11/src/xlibi18n/lcUniConv/ksc5601.h
index 55b6306df..843dcff19 100644
--- a/libX11/src/xlibi18n/lcUniConv/ksc5601.h
+++ b/libX11/src/xlibi18n/lcUniConv/ksc5601.h
@@ -1,3002 +1,3002 @@
-
-/*
- * KSC5601.1987-0
- */
-
-static const unsigned short ksc5601_2uni_page21[1115] = {
- /* 0x21 */
- 0x3000, 0x3001, 0x3002, 0x00b7, 0x2025, 0x2026, 0x00a8, 0x3003,
- 0x00ad, 0x2015, 0x2225, 0xff3c, 0x223c, 0x2018, 0x2019, 0x201c,
- 0x201d, 0x3014, 0x3015, 0x3008, 0x3009, 0x300a, 0x300b, 0x300c,
- 0x300d, 0x300e, 0x300f, 0x3010, 0x3011, 0x00b1, 0x00d7, 0x00f7,
- 0x2260, 0x2264, 0x2265, 0x221e, 0x2234, 0x00b0, 0x2032, 0x2033,
- 0x2103, 0x212b, 0xffe0, 0xffe1, 0xffe5, 0x2642, 0x2640, 0x2220,
- 0x22a5, 0x2312, 0x2202, 0x2207, 0x2261, 0x2252, 0x00a7, 0x203b,
- 0x2606, 0x2605, 0x25cb, 0x25cf, 0x25ce, 0x25c7, 0x25c6, 0x25a1,
- 0x25a0, 0x25b3, 0x25b2, 0x25bd, 0x25bc, 0x2192, 0x2190, 0x2191,
- 0x2193, 0x2194, 0x3013, 0x226a, 0x226b, 0x221a, 0x223d, 0x221d,
- 0x2235, 0x222b, 0x222c, 0x2208, 0x220b, 0x2286, 0x2287, 0x2282,
- 0x2283, 0x222a, 0x2229, 0x2227, 0x2228, 0xffe2,
- /* 0x22 */
- 0x21d2, 0x21d4, 0x2200, 0x2203, 0x00b4, 0xff5e, 0x02c7, 0x02d8,
- 0x02dd, 0x02da, 0x02d9, 0x00b8, 0x02db, 0x00a1, 0x00bf, 0x02d0,
- 0x222e, 0x2211, 0x220f, 0x00a4, 0x2109, 0x2030, 0x25c1, 0x25c0,
- 0x25b7, 0x25b6, 0x2664, 0x2660, 0x2661, 0x2665, 0x2667, 0x2663,
- 0x2299, 0x25c8, 0x25a3, 0x25d0, 0x25d1, 0x2592, 0x25a4, 0x25a5,
- 0x25a8, 0x25a7, 0x25a6, 0x25a9, 0x2668, 0x260f, 0x260e, 0x261c,
- 0x261e, 0x00b6, 0x2020, 0x2021, 0x2195, 0x2197, 0x2199, 0x2196,
- 0x2198, 0x266d, 0x2669, 0x266a, 0x266c, 0x327f, 0x321c, 0x2116,
- 0x33c7, 0x2122, 0x33c2, 0x33d8, 0x2121, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- /* 0x23 */
- 0xff01, 0xff02, 0xff03, 0xff04, 0xff05, 0xff06, 0xff07, 0xff08,
- 0xff09, 0xff0a, 0xff0b, 0xff0c, 0xff0d, 0xff0e, 0xff0f, 0xff10,
- 0xff11, 0xff12, 0xff13, 0xff14, 0xff15, 0xff16, 0xff17, 0xff18,
- 0xff19, 0xff1a, 0xff1b, 0xff1c, 0xff1d, 0xff1e, 0xff1f, 0xff20,
- 0xff21, 0xff22, 0xff23, 0xff24, 0xff25, 0xff26, 0xff27, 0xff28,
- 0xff29, 0xff2a, 0xff2b, 0xff2c, 0xff2d, 0xff2e, 0xff2f, 0xff30,
- 0xff31, 0xff32, 0xff33, 0xff34, 0xff35, 0xff36, 0xff37, 0xff38,
- 0xff39, 0xff3a, 0xff3b, 0xffe6, 0xff3d, 0xff3e, 0xff3f, 0xff40,
- 0xff41, 0xff42, 0xff43, 0xff44, 0xff45, 0xff46, 0xff47, 0xff48,
- 0xff49, 0xff4a, 0xff4b, 0xff4c, 0xff4d, 0xff4e, 0xff4f, 0xff50,
- 0xff51, 0xff52, 0xff53, 0xff54, 0xff55, 0xff56, 0xff57, 0xff58,
- 0xff59, 0xff5a, 0xff5b, 0xff5c, 0xff5d, 0xffe3,
- /* 0x24 */
- 0x3131, 0x3132, 0x3133, 0x3134, 0x3135, 0x3136, 0x3137, 0x3138,
- 0x3139, 0x313a, 0x313b, 0x313c, 0x313d, 0x313e, 0x313f, 0x3140,
- 0x3141, 0x3142, 0x3143, 0x3144, 0x3145, 0x3146, 0x3147, 0x3148,
- 0x3149, 0x314a, 0x314b, 0x314c, 0x314d, 0x314e, 0x314f, 0x3150,
- 0x3151, 0x3152, 0x3153, 0x3154, 0x3155, 0x3156, 0x3157, 0x3158,
- 0x3159, 0x315a, 0x315b, 0x315c, 0x315d, 0x315e, 0x315f, 0x3160,
- 0x3161, 0x3162, 0x3163, 0x3164, 0x3165, 0x3166, 0x3167, 0x3168,
- 0x3169, 0x316a, 0x316b, 0x316c, 0x316d, 0x316e, 0x316f, 0x3170,
- 0x3171, 0x3172, 0x3173, 0x3174, 0x3175, 0x3176, 0x3177, 0x3178,
- 0x3179, 0x317a, 0x317b, 0x317c, 0x317d, 0x317e, 0x317f, 0x3180,
- 0x3181, 0x3182, 0x3183, 0x3184, 0x3185, 0x3186, 0x3187, 0x3188,
- 0x3189, 0x318a, 0x318b, 0x318c, 0x318d, 0x318e,
- /* 0x25 */
- 0x2170, 0x2171, 0x2172, 0x2173, 0x2174, 0x2175, 0x2176, 0x2177,
- 0x2178, 0x2179, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x2160,
- 0x2161, 0x2162, 0x2163, 0x2164, 0x2165, 0x2166, 0x2167, 0x2168,
- 0x2169, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0x0391, 0x0392, 0x0393, 0x0394, 0x0395, 0x0396, 0x0397, 0x0398,
- 0x0399, 0x039a, 0x039b, 0x039c, 0x039d, 0x039e, 0x039f, 0x03a0,
- 0x03a1, 0x03a3, 0x03a4, 0x03a5, 0x03a6, 0x03a7, 0x03a8, 0x03a9,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0x03b1, 0x03b2, 0x03b3, 0x03b4, 0x03b5, 0x03b6, 0x03b7, 0x03b8,
- 0x03b9, 0x03ba, 0x03bb, 0x03bc, 0x03bd, 0x03be, 0x03bf, 0x03c0,
- 0x03c1, 0x03c3, 0x03c4, 0x03c5, 0x03c6, 0x03c7, 0x03c8, 0x03c9,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- /* 0x26 */
- 0x2500, 0x2502, 0x250c, 0x2510, 0x2518, 0x2514, 0x251c, 0x252c,
- 0x2524, 0x2534, 0x253c, 0x2501, 0x2503, 0x250f, 0x2513, 0x251b,
- 0x2517, 0x2523, 0x2533, 0x252b, 0x253b, 0x254b, 0x2520, 0x252f,
- 0x2528, 0x2537, 0x253f, 0x251d, 0x2530, 0x2525, 0x2538, 0x2542,
- 0x2512, 0x2511, 0x251a, 0x2519, 0x2516, 0x2515, 0x250e, 0x250d,
- 0x251e, 0x251f, 0x2521, 0x2522, 0x2526, 0x2527, 0x2529, 0x252a,
- 0x252d, 0x252e, 0x2531, 0x2532, 0x2535, 0x2536, 0x2539, 0x253a,
- 0x253d, 0x253e, 0x2540, 0x2541, 0x2543, 0x2544, 0x2545, 0x2546,
- 0x2547, 0x2548, 0x2549, 0x254a, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- /* 0x27 */
- 0x3395, 0x3396, 0x3397, 0x2113, 0x3398, 0x33c4, 0x33a3, 0x33a4,
- 0x33a5, 0x33a6, 0x3399, 0x339a, 0x339b, 0x339c, 0x339d, 0x339e,
- 0x339f, 0x33a0, 0x33a1, 0x33a2, 0x33ca, 0x338d, 0x338e, 0x338f,
- 0x33cf, 0x3388, 0x3389, 0x33c8, 0x33a7, 0x33a8, 0x33b0, 0x33b1,
- 0x33b2, 0x33b3, 0x33b4, 0x33b5, 0x33b6, 0x33b7, 0x33b8, 0x33b9,
- 0x3380, 0x3381, 0x3382, 0x3383, 0x3384, 0x33ba, 0x33bb, 0x33bc,
- 0x33bd, 0x33be, 0x33bf, 0x3390, 0x3391, 0x3392, 0x3393, 0x3394,
- 0x2126, 0x33c0, 0x33c1, 0x338a, 0x338b, 0x338c, 0x33d6, 0x33c5,
- 0x33ad, 0x33ae, 0x33af, 0x33db, 0x33a9, 0x33aa, 0x33ab, 0x33ac,
- 0x33dd, 0x33d0, 0x33d3, 0x33c3, 0x33c9, 0x33dc, 0x33c6, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- /* 0x28 */
- 0x00c6, 0x00d0, 0x00aa, 0x0126, 0xfffd, 0x0132, 0xfffd, 0x013f,
- 0x0141, 0x00d8, 0x0152, 0x00ba, 0x00de, 0x0166, 0x014a, 0xfffd,
- 0x3260, 0x3261, 0x3262, 0x3263, 0x3264, 0x3265, 0x3266, 0x3267,
- 0x3268, 0x3269, 0x326a, 0x326b, 0x326c, 0x326d, 0x326e, 0x326f,
- 0x3270, 0x3271, 0x3272, 0x3273, 0x3274, 0x3275, 0x3276, 0x3277,
- 0x3278, 0x3279, 0x327a, 0x327b, 0x24d0, 0x24d1, 0x24d2, 0x24d3,
- 0x24d4, 0x24d5, 0x24d6, 0x24d7, 0x24d8, 0x24d9, 0x24da, 0x24db,
- 0x24dc, 0x24dd, 0x24de, 0x24df, 0x24e0, 0x24e1, 0x24e2, 0x24e3,
- 0x24e4, 0x24e5, 0x24e6, 0x24e7, 0x24e8, 0x24e9, 0x2460, 0x2461,
- 0x2462, 0x2463, 0x2464, 0x2465, 0x2466, 0x2467, 0x2468, 0x2469,
- 0x246a, 0x246b, 0x246c, 0x246d, 0x246e, 0x00bd, 0x2153, 0x2154,
- 0x00bc, 0x00be, 0x215b, 0x215c, 0x215d, 0x215e,
- /* 0x29 */
- 0x00e6, 0x0111, 0x00f0, 0x0127, 0x0131, 0x0133, 0x0138, 0x0140,
- 0x0142, 0x00f8, 0x0153, 0x00df, 0x00fe, 0x0167, 0x014b, 0x0149,
- 0x3200, 0x3201, 0x3202, 0x3203, 0x3204, 0x3205, 0x3206, 0x3207,
- 0x3208, 0x3209, 0x320a, 0x320b, 0x320c, 0x320d, 0x320e, 0x320f,
- 0x3210, 0x3211, 0x3212, 0x3213, 0x3214, 0x3215, 0x3216, 0x3217,
- 0x3218, 0x3219, 0x321a, 0x321b, 0x249c, 0x249d, 0x249e, 0x249f,
- 0x24a0, 0x24a1, 0x24a2, 0x24a3, 0x24a4, 0x24a5, 0x24a6, 0x24a7,
- 0x24a8, 0x24a9, 0x24aa, 0x24ab, 0x24ac, 0x24ad, 0x24ae, 0x24af,
- 0x24b0, 0x24b1, 0x24b2, 0x24b3, 0x24b4, 0x24b5, 0x2474, 0x2475,
- 0x2476, 0x2477, 0x2478, 0x2479, 0x247a, 0x247b, 0x247c, 0x247d,
- 0x247e, 0x247f, 0x2480, 0x2481, 0x2482, 0x00b9, 0x00b2, 0x00b3,
- 0x2074, 0x207f, 0x2081, 0x2082, 0x2083, 0x2084,
- /* 0x2a */
- 0x3041, 0x3042, 0x3043, 0x3044, 0x3045, 0x3046, 0x3047, 0x3048,
- 0x3049, 0x304a, 0x304b, 0x304c, 0x304d, 0x304e, 0x304f, 0x3050,
- 0x3051, 0x3052, 0x3053, 0x3054, 0x3055, 0x3056, 0x3057, 0x3058,
- 0x3059, 0x305a, 0x305b, 0x305c, 0x305d, 0x305e, 0x305f, 0x3060,
- 0x3061, 0x3062, 0x3063, 0x3064, 0x3065, 0x3066, 0x3067, 0x3068,
- 0x3069, 0x306a, 0x306b, 0x306c, 0x306d, 0x306e, 0x306f, 0x3070,
- 0x3071, 0x3072, 0x3073, 0x3074, 0x3075, 0x3076, 0x3077, 0x3078,
- 0x3079, 0x307a, 0x307b, 0x307c, 0x307d, 0x307e, 0x307f, 0x3080,
- 0x3081, 0x3082, 0x3083, 0x3084, 0x3085, 0x3086, 0x3087, 0x3088,
- 0x3089, 0x308a, 0x308b, 0x308c, 0x308d, 0x308e, 0x308f, 0x3090,
- 0x3091, 0x3092, 0x3093, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- /* 0x2b */
- 0x30a1, 0x30a2, 0x30a3, 0x30a4, 0x30a5, 0x30a6, 0x30a7, 0x30a8,
- 0x30a9, 0x30aa, 0x30ab, 0x30ac, 0x30ad, 0x30ae, 0x30af, 0x30b0,
- 0x30b1, 0x30b2, 0x30b3, 0x30b4, 0x30b5, 0x30b6, 0x30b7, 0x30b8,
- 0x30b9, 0x30ba, 0x30bb, 0x30bc, 0x30bd, 0x30be, 0x30bf, 0x30c0,
- 0x30c1, 0x30c2, 0x30c3, 0x30c4, 0x30c5, 0x30c6, 0x30c7, 0x30c8,
- 0x30c9, 0x30ca, 0x30cb, 0x30cc, 0x30cd, 0x30ce, 0x30cf, 0x30d0,
- 0x30d1, 0x30d2, 0x30d3, 0x30d4, 0x30d5, 0x30d6, 0x30d7, 0x30d8,
- 0x30d9, 0x30da, 0x30db, 0x30dc, 0x30dd, 0x30de, 0x30df, 0x30e0,
- 0x30e1, 0x30e2, 0x30e3, 0x30e4, 0x30e5, 0x30e6, 0x30e7, 0x30e8,
- 0x30e9, 0x30ea, 0x30eb, 0x30ec, 0x30ed, 0x30ee, 0x30ef, 0x30f0,
- 0x30f1, 0x30f2, 0x30f3, 0x30f4, 0x30f5, 0x30f6, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- /* 0x2c */
- 0x0410, 0x0411, 0x0412, 0x0413, 0x0414, 0x0415, 0x0401, 0x0416,
- 0x0417, 0x0418, 0x0419, 0x041a, 0x041b, 0x041c, 0x041d, 0x041e,
- 0x041f, 0x0420, 0x0421, 0x0422, 0x0423, 0x0424, 0x0425, 0x0426,
- 0x0427, 0x0428, 0x0429, 0x042a, 0x042b, 0x042c, 0x042d, 0x042e,
- 0x042f, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
- 0x0430, 0x0431, 0x0432, 0x0433, 0x0434, 0x0435, 0x0451, 0x0436,
- 0x0437, 0x0438, 0x0439, 0x043a, 0x043b, 0x043c, 0x043d, 0x043e,
- 0x043f, 0x0440, 0x0441, 0x0442, 0x0443, 0x0444, 0x0445, 0x0446,
- 0x0447, 0x0448, 0x0449, 0x044a, 0x044b, 0x044c, 0x044d, 0x044e,
- 0x044f,
-};
-static const unsigned short ksc5601_2uni_page30[2350] = {
- /* 0x30 */
- 0xac00, 0xac01, 0xac04, 0xac07, 0xac08, 0xac09, 0xac0a, 0xac10,
- 0xac11, 0xac12, 0xac13, 0xac14, 0xac15, 0xac16, 0xac17, 0xac19,
- 0xac1a, 0xac1b, 0xac1c, 0xac1d, 0xac20, 0xac24, 0xac2c, 0xac2d,
- 0xac2f, 0xac30, 0xac31, 0xac38, 0xac39, 0xac3c, 0xac40, 0xac4b,
- 0xac4d, 0xac54, 0xac58, 0xac5c, 0xac70, 0xac71, 0xac74, 0xac77,
- 0xac78, 0xac7a, 0xac80, 0xac81, 0xac83, 0xac84, 0xac85, 0xac86,
- 0xac89, 0xac8a, 0xac8b, 0xac8c, 0xac90, 0xac94, 0xac9c, 0xac9d,
- 0xac9f, 0xaca0, 0xaca1, 0xaca8, 0xaca9, 0xacaa, 0xacac, 0xacaf,
- 0xacb0, 0xacb8, 0xacb9, 0xacbb, 0xacbc, 0xacbd, 0xacc1, 0xacc4,
- 0xacc8, 0xaccc, 0xacd5, 0xacd7, 0xace0, 0xace1, 0xace4, 0xace7,
- 0xace8, 0xacea, 0xacec, 0xacef, 0xacf0, 0xacf1, 0xacf3, 0xacf5,
- 0xacf6, 0xacfc, 0xacfd, 0xad00, 0xad04, 0xad06,
- /* 0x31 */
- 0xad0c, 0xad0d, 0xad0f, 0xad11, 0xad18, 0xad1c, 0xad20, 0xad29,
- 0xad2c, 0xad2d, 0xad34, 0xad35, 0xad38, 0xad3c, 0xad44, 0xad45,
- 0xad47, 0xad49, 0xad50, 0xad54, 0xad58, 0xad61, 0xad63, 0xad6c,
- 0xad6d, 0xad70, 0xad73, 0xad74, 0xad75, 0xad76, 0xad7b, 0xad7c,
- 0xad7d, 0xad7f, 0xad81, 0xad82, 0xad88, 0xad89, 0xad8c, 0xad90,
- 0xad9c, 0xad9d, 0xada4, 0xadb7, 0xadc0, 0xadc1, 0xadc4, 0xadc8,
- 0xadd0, 0xadd1, 0xadd3, 0xaddc, 0xade0, 0xade4, 0xadf8, 0xadf9,
- 0xadfc, 0xadff, 0xae00, 0xae01, 0xae08, 0xae09, 0xae0b, 0xae0d,
- 0xae14, 0xae30, 0xae31, 0xae34, 0xae37, 0xae38, 0xae3a, 0xae40,
- 0xae41, 0xae43, 0xae45, 0xae46, 0xae4a, 0xae4c, 0xae4d, 0xae4e,
- 0xae50, 0xae54, 0xae56, 0xae5c, 0xae5d, 0xae5f, 0xae60, 0xae61,
- 0xae65, 0xae68, 0xae69, 0xae6c, 0xae70, 0xae78,
- /* 0x32 */
- 0xae79, 0xae7b, 0xae7c, 0xae7d, 0xae84, 0xae85, 0xae8c, 0xaebc,
- 0xaebd, 0xaebe, 0xaec0, 0xaec4, 0xaecc, 0xaecd, 0xaecf, 0xaed0,
- 0xaed1, 0xaed8, 0xaed9, 0xaedc, 0xaee8, 0xaeeb, 0xaeed, 0xaef4,
- 0xaef8, 0xaefc, 0xaf07, 0xaf08, 0xaf0d, 0xaf10, 0xaf2c, 0xaf2d,
- 0xaf30, 0xaf32, 0xaf34, 0xaf3c, 0xaf3d, 0xaf3f, 0xaf41, 0xaf42,
- 0xaf43, 0xaf48, 0xaf49, 0xaf50, 0xaf5c, 0xaf5d, 0xaf64, 0xaf65,
- 0xaf79, 0xaf80, 0xaf84, 0xaf88, 0xaf90, 0xaf91, 0xaf95, 0xaf9c,
- 0xafb8, 0xafb9, 0xafbc, 0xafc0, 0xafc7, 0xafc8, 0xafc9, 0xafcb,
- 0xafcd, 0xafce, 0xafd4, 0xafdc, 0xafe8, 0xafe9, 0xaff0, 0xaff1,
- 0xaff4, 0xaff8, 0xb000, 0xb001, 0xb004, 0xb00c, 0xb010, 0xb014,
- 0xb01c, 0xb01d, 0xb028, 0xb044, 0xb045, 0xb048, 0xb04a, 0xb04c,
- 0xb04e, 0xb053, 0xb054, 0xb055, 0xb057, 0xb059,
- /* 0x33 */
- 0xb05d, 0xb07c, 0xb07d, 0xb080, 0xb084, 0xb08c, 0xb08d, 0xb08f,
- 0xb091, 0xb098, 0xb099, 0xb09a, 0xb09c, 0xb09f, 0xb0a0, 0xb0a1,
- 0xb0a2, 0xb0a8, 0xb0a9, 0xb0ab, 0xb0ac, 0xb0ad, 0xb0ae, 0xb0af,
- 0xb0b1, 0xb0b3, 0xb0b4, 0xb0b5, 0xb0b8, 0xb0bc, 0xb0c4, 0xb0c5,
- 0xb0c7, 0xb0c8, 0xb0c9, 0xb0d0, 0xb0d1, 0xb0d4, 0xb0d8, 0xb0e0,
- 0xb0e5, 0xb108, 0xb109, 0xb10b, 0xb10c, 0xb110, 0xb112, 0xb113,
- 0xb118, 0xb119, 0xb11b, 0xb11c, 0xb11d, 0xb123, 0xb124, 0xb125,
- 0xb128, 0xb12c, 0xb134, 0xb135, 0xb137, 0xb138, 0xb139, 0xb140,
- 0xb141, 0xb144, 0xb148, 0xb150, 0xb151, 0xb154, 0xb155, 0xb158,
- 0xb15c, 0xb160, 0xb178, 0xb179, 0xb17c, 0xb180, 0xb182, 0xb188,
- 0xb189, 0xb18b, 0xb18d, 0xb192, 0xb193, 0xb194, 0xb198, 0xb19c,
- 0xb1a8, 0xb1cc, 0xb1d0, 0xb1d4, 0xb1dc, 0xb1dd,
- /* 0x34 */
- 0xb1df, 0xb1e8, 0xb1e9, 0xb1ec, 0xb1f0, 0xb1f9, 0xb1fb, 0xb1fd,
- 0xb204, 0xb205, 0xb208, 0xb20b, 0xb20c, 0xb214, 0xb215, 0xb217,
- 0xb219, 0xb220, 0xb234, 0xb23c, 0xb258, 0xb25c, 0xb260, 0xb268,
- 0xb269, 0xb274, 0xb275, 0xb27c, 0xb284, 0xb285, 0xb289, 0xb290,
- 0xb291, 0xb294, 0xb298, 0xb299, 0xb29a, 0xb2a0, 0xb2a1, 0xb2a3,
- 0xb2a5, 0xb2a6, 0xb2aa, 0xb2ac, 0xb2b0, 0xb2b4, 0xb2c8, 0xb2c9,
- 0xb2cc, 0xb2d0, 0xb2d2, 0xb2d8, 0xb2d9, 0xb2db, 0xb2dd, 0xb2e2,
- 0xb2e4, 0xb2e5, 0xb2e6, 0xb2e8, 0xb2eb, 0xb2ec, 0xb2ed, 0xb2ee,
- 0xb2ef, 0xb2f3, 0xb2f4, 0xb2f5, 0xb2f7, 0xb2f8, 0xb2f9, 0xb2fa,
- 0xb2fb, 0xb2ff, 0xb300, 0xb301, 0xb304, 0xb308, 0xb310, 0xb311,
- 0xb313, 0xb314, 0xb315, 0xb31c, 0xb354, 0xb355, 0xb356, 0xb358,
- 0xb35b, 0xb35c, 0xb35e, 0xb35f, 0xb364, 0xb365,
- /* 0x35 */
- 0xb367, 0xb369, 0xb36b, 0xb36e, 0xb370, 0xb371, 0xb374, 0xb378,
- 0xb380, 0xb381, 0xb383, 0xb384, 0xb385, 0xb38c, 0xb390, 0xb394,
- 0xb3a0, 0xb3a1, 0xb3a8, 0xb3ac, 0xb3c4, 0xb3c5, 0xb3c8, 0xb3cb,
- 0xb3cc, 0xb3ce, 0xb3d0, 0xb3d4, 0xb3d5, 0xb3d7, 0xb3d9, 0xb3db,
- 0xb3dd, 0xb3e0, 0xb3e4, 0xb3e8, 0xb3fc, 0xb410, 0xb418, 0xb41c,
- 0xb420, 0xb428, 0xb429, 0xb42b, 0xb434, 0xb450, 0xb451, 0xb454,
- 0xb458, 0xb460, 0xb461, 0xb463, 0xb465, 0xb46c, 0xb480, 0xb488,
- 0xb49d, 0xb4a4, 0xb4a8, 0xb4ac, 0xb4b5, 0xb4b7, 0xb4b9, 0xb4c0,
- 0xb4c4, 0xb4c8, 0xb4d0, 0xb4d5, 0xb4dc, 0xb4dd, 0xb4e0, 0xb4e3,
- 0xb4e4, 0xb4e6, 0xb4ec, 0xb4ed, 0xb4ef, 0xb4f1, 0xb4f8, 0xb514,
- 0xb515, 0xb518, 0xb51b, 0xb51c, 0xb524, 0xb525, 0xb527, 0xb528,
- 0xb529, 0xb52a, 0xb530, 0xb531, 0xb534, 0xb538,
- /* 0x36 */
- 0xb540, 0xb541, 0xb543, 0xb544, 0xb545, 0xb54b, 0xb54c, 0xb54d,
- 0xb550, 0xb554, 0xb55c, 0xb55d, 0xb55f, 0xb560, 0xb561, 0xb5a0,
- 0xb5a1, 0xb5a4, 0xb5a8, 0xb5aa, 0xb5ab, 0xb5b0, 0xb5b1, 0xb5b3,
- 0xb5b4, 0xb5b5, 0xb5bb, 0xb5bc, 0xb5bd, 0xb5c0, 0xb5c4, 0xb5cc,
- 0xb5cd, 0xb5cf, 0xb5d0, 0xb5d1, 0xb5d8, 0xb5ec, 0xb610, 0xb611,
- 0xb614, 0xb618, 0xb625, 0xb62c, 0xb634, 0xb648, 0xb664, 0xb668,
- 0xb69c, 0xb69d, 0xb6a0, 0xb6a4, 0xb6ab, 0xb6ac, 0xb6b1, 0xb6d4,
- 0xb6f0, 0xb6f4, 0xb6f8, 0xb700, 0xb701, 0xb705, 0xb728, 0xb729,
- 0xb72c, 0xb72f, 0xb730, 0xb738, 0xb739, 0xb73b, 0xb744, 0xb748,
- 0xb74c, 0xb754, 0xb755, 0xb760, 0xb764, 0xb768, 0xb770, 0xb771,
- 0xb773, 0xb775, 0xb77c, 0xb77d, 0xb780, 0xb784, 0xb78c, 0xb78d,
- 0xb78f, 0xb790, 0xb791, 0xb792, 0xb796, 0xb797,
- /* 0x37 */
- 0xb798, 0xb799, 0xb79c, 0xb7a0, 0xb7a8, 0xb7a9, 0xb7ab, 0xb7ac,
- 0xb7ad, 0xb7b4, 0xb7b5, 0xb7b8, 0xb7c7, 0xb7c9, 0xb7ec, 0xb7ed,
- 0xb7f0, 0xb7f4, 0xb7fc, 0xb7fd, 0xb7ff, 0xb800, 0xb801, 0xb807,
- 0xb808, 0xb809, 0xb80c, 0xb810, 0xb818, 0xb819, 0xb81b, 0xb81d,
- 0xb824, 0xb825, 0xb828, 0xb82c, 0xb834, 0xb835, 0xb837, 0xb838,
- 0xb839, 0xb840, 0xb844, 0xb851, 0xb853, 0xb85c, 0xb85d, 0xb860,
- 0xb864, 0xb86c, 0xb86d, 0xb86f, 0xb871, 0xb878, 0xb87c, 0xb88d,
- 0xb8a8, 0xb8b0, 0xb8b4, 0xb8b8, 0xb8c0, 0xb8c1, 0xb8c3, 0xb8c5,
- 0xb8cc, 0xb8d0, 0xb8d4, 0xb8dd, 0xb8df, 0xb8e1, 0xb8e8, 0xb8e9,
- 0xb8ec, 0xb8f0, 0xb8f8, 0xb8f9, 0xb8fb, 0xb8fd, 0xb904, 0xb918,
- 0xb920, 0xb93c, 0xb93d, 0xb940, 0xb944, 0xb94c, 0xb94f, 0xb951,
- 0xb958, 0xb959, 0xb95c, 0xb960, 0xb968, 0xb969,
- /* 0x38 */
- 0xb96b, 0xb96d, 0xb974, 0xb975, 0xb978, 0xb97c, 0xb984, 0xb985,
- 0xb987, 0xb989, 0xb98a, 0xb98d, 0xb98e, 0xb9ac, 0xb9ad, 0xb9b0,
- 0xb9b4, 0xb9bc, 0xb9bd, 0xb9bf, 0xb9c1, 0xb9c8, 0xb9c9, 0xb9cc,
- 0xb9ce, 0xb9cf, 0xb9d0, 0xb9d1, 0xb9d2, 0xb9d8, 0xb9d9, 0xb9db,
- 0xb9dd, 0xb9de, 0xb9e1, 0xb9e3, 0xb9e4, 0xb9e5, 0xb9e8, 0xb9ec,
- 0xb9f4, 0xb9f5, 0xb9f7, 0xb9f8, 0xb9f9, 0xb9fa, 0xba00, 0xba01,
- 0xba08, 0xba15, 0xba38, 0xba39, 0xba3c, 0xba40, 0xba42, 0xba48,
- 0xba49, 0xba4b, 0xba4d, 0xba4e, 0xba53, 0xba54, 0xba55, 0xba58,
- 0xba5c, 0xba64, 0xba65, 0xba67, 0xba68, 0xba69, 0xba70, 0xba71,
- 0xba74, 0xba78, 0xba83, 0xba84, 0xba85, 0xba87, 0xba8c, 0xbaa8,
- 0xbaa9, 0xbaab, 0xbaac, 0xbab0, 0xbab2, 0xbab8, 0xbab9, 0xbabb,
- 0xbabd, 0xbac4, 0xbac8, 0xbad8, 0xbad9, 0xbafc,
- /* 0x39 */
- 0xbb00, 0xbb04, 0xbb0d, 0xbb0f, 0xbb11, 0xbb18, 0xbb1c, 0xbb20,
- 0xbb29, 0xbb2b, 0xbb34, 0xbb35, 0xbb36, 0xbb38, 0xbb3b, 0xbb3c,
- 0xbb3d, 0xbb3e, 0xbb44, 0xbb45, 0xbb47, 0xbb49, 0xbb4d, 0xbb4f,
- 0xbb50, 0xbb54, 0xbb58, 0xbb61, 0xbb63, 0xbb6c, 0xbb88, 0xbb8c,
- 0xbb90, 0xbba4, 0xbba8, 0xbbac, 0xbbb4, 0xbbb7, 0xbbc0, 0xbbc4,
- 0xbbc8, 0xbbd0, 0xbbd3, 0xbbf8, 0xbbf9, 0xbbfc, 0xbbff, 0xbc00,
- 0xbc02, 0xbc08, 0xbc09, 0xbc0b, 0xbc0c, 0xbc0d, 0xbc0f, 0xbc11,
- 0xbc14, 0xbc15, 0xbc16, 0xbc17, 0xbc18, 0xbc1b, 0xbc1c, 0xbc1d,
- 0xbc1e, 0xbc1f, 0xbc24, 0xbc25, 0xbc27, 0xbc29, 0xbc2d, 0xbc30,
- 0xbc31, 0xbc34, 0xbc38, 0xbc40, 0xbc41, 0xbc43, 0xbc44, 0xbc45,
- 0xbc49, 0xbc4c, 0xbc4d, 0xbc50, 0xbc5d, 0xbc84, 0xbc85, 0xbc88,
- 0xbc8b, 0xbc8c, 0xbc8e, 0xbc94, 0xbc95, 0xbc97,
- /* 0x3a */
- 0xbc99, 0xbc9a, 0xbca0, 0xbca1, 0xbca4, 0xbca7, 0xbca8, 0xbcb0,
- 0xbcb1, 0xbcb3, 0xbcb4, 0xbcb5, 0xbcbc, 0xbcbd, 0xbcc0, 0xbcc4,
- 0xbccd, 0xbccf, 0xbcd0, 0xbcd1, 0xbcd5, 0xbcd8, 0xbcdc, 0xbcf4,
- 0xbcf5, 0xbcf6, 0xbcf8, 0xbcfc, 0xbd04, 0xbd05, 0xbd07, 0xbd09,
- 0xbd10, 0xbd14, 0xbd24, 0xbd2c, 0xbd40, 0xbd48, 0xbd49, 0xbd4c,
- 0xbd50, 0xbd58, 0xbd59, 0xbd64, 0xbd68, 0xbd80, 0xbd81, 0xbd84,
- 0xbd87, 0xbd88, 0xbd89, 0xbd8a, 0xbd90, 0xbd91, 0xbd93, 0xbd95,
- 0xbd99, 0xbd9a, 0xbd9c, 0xbda4, 0xbdb0, 0xbdb8, 0xbdd4, 0xbdd5,
- 0xbdd8, 0xbddc, 0xbde9, 0xbdf0, 0xbdf4, 0xbdf8, 0xbe00, 0xbe03,
- 0xbe05, 0xbe0c, 0xbe0d, 0xbe10, 0xbe14, 0xbe1c, 0xbe1d, 0xbe1f,
- 0xbe44, 0xbe45, 0xbe48, 0xbe4c, 0xbe4e, 0xbe54, 0xbe55, 0xbe57,
- 0xbe59, 0xbe5a, 0xbe5b, 0xbe60, 0xbe61, 0xbe64,
- /* 0x3b */
- 0xbe68, 0xbe6a, 0xbe70, 0xbe71, 0xbe73, 0xbe74, 0xbe75, 0xbe7b,
- 0xbe7c, 0xbe7d, 0xbe80, 0xbe84, 0xbe8c, 0xbe8d, 0xbe8f, 0xbe90,
- 0xbe91, 0xbe98, 0xbe99, 0xbea8, 0xbed0, 0xbed1, 0xbed4, 0xbed7,
- 0xbed8, 0xbee0, 0xbee3, 0xbee4, 0xbee5, 0xbeec, 0xbf01, 0xbf08,
- 0xbf09, 0xbf18, 0xbf19, 0xbf1b, 0xbf1c, 0xbf1d, 0xbf40, 0xbf41,
- 0xbf44, 0xbf48, 0xbf50, 0xbf51, 0xbf55, 0xbf94, 0xbfb0, 0xbfc5,
- 0xbfcc, 0xbfcd, 0xbfd0, 0xbfd4, 0xbfdc, 0xbfdf, 0xbfe1, 0xc03c,
- 0xc051, 0xc058, 0xc05c, 0xc060, 0xc068, 0xc069, 0xc090, 0xc091,
- 0xc094, 0xc098, 0xc0a0, 0xc0a1, 0xc0a3, 0xc0a5, 0xc0ac, 0xc0ad,
- 0xc0af, 0xc0b0, 0xc0b3, 0xc0b4, 0xc0b5, 0xc0b6, 0xc0bc, 0xc0bd,
- 0xc0bf, 0xc0c0, 0xc0c1, 0xc0c5, 0xc0c8, 0xc0c9, 0xc0cc, 0xc0d0,
- 0xc0d8, 0xc0d9, 0xc0db, 0xc0dc, 0xc0dd, 0xc0e4,
- /* 0x3c */
- 0xc0e5, 0xc0e8, 0xc0ec, 0xc0f4, 0xc0f5, 0xc0f7, 0xc0f9, 0xc100,
- 0xc104, 0xc108, 0xc110, 0xc115, 0xc11c, 0xc11d, 0xc11e, 0xc11f,
- 0xc120, 0xc123, 0xc124, 0xc126, 0xc127, 0xc12c, 0xc12d, 0xc12f,
- 0xc130, 0xc131, 0xc136, 0xc138, 0xc139, 0xc13c, 0xc140, 0xc148,
- 0xc149, 0xc14b, 0xc14c, 0xc14d, 0xc154, 0xc155, 0xc158, 0xc15c,
- 0xc164, 0xc165, 0xc167, 0xc168, 0xc169, 0xc170, 0xc174, 0xc178,
- 0xc185, 0xc18c, 0xc18d, 0xc18e, 0xc190, 0xc194, 0xc196, 0xc19c,
- 0xc19d, 0xc19f, 0xc1a1, 0xc1a5, 0xc1a8, 0xc1a9, 0xc1ac, 0xc1b0,
- 0xc1bd, 0xc1c4, 0xc1c8, 0xc1cc, 0xc1d4, 0xc1d7, 0xc1d8, 0xc1e0,
- 0xc1e4, 0xc1e8, 0xc1f0, 0xc1f1, 0xc1f3, 0xc1fc, 0xc1fd, 0xc200,
- 0xc204, 0xc20c, 0xc20d, 0xc20f, 0xc211, 0xc218, 0xc219, 0xc21c,
- 0xc21f, 0xc220, 0xc228, 0xc229, 0xc22b, 0xc22d,
- /* 0x3d */
- 0xc22f, 0xc231, 0xc232, 0xc234, 0xc248, 0xc250, 0xc251, 0xc254,
- 0xc258, 0xc260, 0xc265, 0xc26c, 0xc26d, 0xc270, 0xc274, 0xc27c,
- 0xc27d, 0xc27f, 0xc281, 0xc288, 0xc289, 0xc290, 0xc298, 0xc29b,
- 0xc29d, 0xc2a4, 0xc2a5, 0xc2a8, 0xc2ac, 0xc2ad, 0xc2b4, 0xc2b5,
- 0xc2b7, 0xc2b9, 0xc2dc, 0xc2dd, 0xc2e0, 0xc2e3, 0xc2e4, 0xc2eb,
- 0xc2ec, 0xc2ed, 0xc2ef, 0xc2f1, 0xc2f6, 0xc2f8, 0xc2f9, 0xc2fb,
- 0xc2fc, 0xc300, 0xc308, 0xc309, 0xc30c, 0xc30d, 0xc313, 0xc314,
- 0xc315, 0xc318, 0xc31c, 0xc324, 0xc325, 0xc328, 0xc329, 0xc345,
- 0xc368, 0xc369, 0xc36c, 0xc370, 0xc372, 0xc378, 0xc379, 0xc37c,
- 0xc37d, 0xc384, 0xc388, 0xc38c, 0xc3c0, 0xc3d8, 0xc3d9, 0xc3dc,
- 0xc3df, 0xc3e0, 0xc3e2, 0xc3e8, 0xc3e9, 0xc3ed, 0xc3f4, 0xc3f5,
- 0xc3f8, 0xc408, 0xc410, 0xc424, 0xc42c, 0xc430,
- /* 0x3e */
- 0xc434, 0xc43c, 0xc43d, 0xc448, 0xc464, 0xc465, 0xc468, 0xc46c,
- 0xc474, 0xc475, 0xc479, 0xc480, 0xc494, 0xc49c, 0xc4b8, 0xc4bc,
- 0xc4e9, 0xc4f0, 0xc4f1, 0xc4f4, 0xc4f8, 0xc4fa, 0xc4ff, 0xc500,
- 0xc501, 0xc50c, 0xc510, 0xc514, 0xc51c, 0xc528, 0xc529, 0xc52c,
- 0xc530, 0xc538, 0xc539, 0xc53b, 0xc53d, 0xc544, 0xc545, 0xc548,
- 0xc549, 0xc54a, 0xc54c, 0xc54d, 0xc54e, 0xc553, 0xc554, 0xc555,
- 0xc557, 0xc558, 0xc559, 0xc55d, 0xc55e, 0xc560, 0xc561, 0xc564,
- 0xc568, 0xc570, 0xc571, 0xc573, 0xc574, 0xc575, 0xc57c, 0xc57d,
- 0xc580, 0xc584, 0xc587, 0xc58c, 0xc58d, 0xc58f, 0xc591, 0xc595,
- 0xc597, 0xc598, 0xc59c, 0xc5a0, 0xc5a9, 0xc5b4, 0xc5b5, 0xc5b8,
- 0xc5b9, 0xc5bb, 0xc5bc, 0xc5bd, 0xc5be, 0xc5c4, 0xc5c5, 0xc5c6,
- 0xc5c7, 0xc5c8, 0xc5c9, 0xc5ca, 0xc5cc, 0xc5ce,
- /* 0x3f */
- 0xc5d0, 0xc5d1, 0xc5d4, 0xc5d8, 0xc5e0, 0xc5e1, 0xc5e3, 0xc5e5,
- 0xc5ec, 0xc5ed, 0xc5ee, 0xc5f0, 0xc5f4, 0xc5f6, 0xc5f7, 0xc5fc,
- 0xc5fd, 0xc5fe, 0xc5ff, 0xc600, 0xc601, 0xc605, 0xc606, 0xc607,
- 0xc608, 0xc60c, 0xc610, 0xc618, 0xc619, 0xc61b, 0xc61c, 0xc624,
- 0xc625, 0xc628, 0xc62c, 0xc62d, 0xc62e, 0xc630, 0xc633, 0xc634,
- 0xc635, 0xc637, 0xc639, 0xc63b, 0xc640, 0xc641, 0xc644, 0xc648,
- 0xc650, 0xc651, 0xc653, 0xc654, 0xc655, 0xc65c, 0xc65d, 0xc660,
- 0xc66c, 0xc66f, 0xc671, 0xc678, 0xc679, 0xc67c, 0xc680, 0xc688,
- 0xc689, 0xc68b, 0xc68d, 0xc694, 0xc695, 0xc698, 0xc69c, 0xc6a4,
- 0xc6a5, 0xc6a7, 0xc6a9, 0xc6b0, 0xc6b1, 0xc6b4, 0xc6b8, 0xc6b9,
- 0xc6ba, 0xc6c0, 0xc6c1, 0xc6c3, 0xc6c5, 0xc6cc, 0xc6cd, 0xc6d0,
- 0xc6d4, 0xc6dc, 0xc6dd, 0xc6e0, 0xc6e1, 0xc6e8,
- /* 0x40 */
- 0xc6e9, 0xc6ec, 0xc6f0, 0xc6f8, 0xc6f9, 0xc6fd, 0xc704, 0xc705,
- 0xc708, 0xc70c, 0xc714, 0xc715, 0xc717, 0xc719, 0xc720, 0xc721,
- 0xc724, 0xc728, 0xc730, 0xc731, 0xc733, 0xc735, 0xc737, 0xc73c,
- 0xc73d, 0xc740, 0xc744, 0xc74a, 0xc74c, 0xc74d, 0xc74f, 0xc751,
- 0xc752, 0xc753, 0xc754, 0xc755, 0xc756, 0xc757, 0xc758, 0xc75c,
- 0xc760, 0xc768, 0xc76b, 0xc774, 0xc775, 0xc778, 0xc77c, 0xc77d,
- 0xc77e, 0xc783, 0xc784, 0xc785, 0xc787, 0xc788, 0xc789, 0xc78a,
- 0xc78e, 0xc790, 0xc791, 0xc794, 0xc796, 0xc797, 0xc798, 0xc79a,
- 0xc7a0, 0xc7a1, 0xc7a3, 0xc7a4, 0xc7a5, 0xc7a6, 0xc7ac, 0xc7ad,
- 0xc7b0, 0xc7b4, 0xc7bc, 0xc7bd, 0xc7bf, 0xc7c0, 0xc7c1, 0xc7c8,
- 0xc7c9, 0xc7cc, 0xc7ce, 0xc7d0, 0xc7d8, 0xc7dd, 0xc7e4, 0xc7e8,
- 0xc7ec, 0xc800, 0xc801, 0xc804, 0xc808, 0xc80a,
- /* 0x41 */
- 0xc810, 0xc811, 0xc813, 0xc815, 0xc816, 0xc81c, 0xc81d, 0xc820,
- 0xc824, 0xc82c, 0xc82d, 0xc82f, 0xc831, 0xc838, 0xc83c, 0xc840,
- 0xc848, 0xc849, 0xc84c, 0xc84d, 0xc854, 0xc870, 0xc871, 0xc874,
- 0xc878, 0xc87a, 0xc880, 0xc881, 0xc883, 0xc885, 0xc886, 0xc887,
- 0xc88b, 0xc88c, 0xc88d, 0xc894, 0xc89d, 0xc89f, 0xc8a1, 0xc8a8,
- 0xc8bc, 0xc8bd, 0xc8c4, 0xc8c8, 0xc8cc, 0xc8d4, 0xc8d5, 0xc8d7,
- 0xc8d9, 0xc8e0, 0xc8e1, 0xc8e4, 0xc8f5, 0xc8fc, 0xc8fd, 0xc900,
- 0xc904, 0xc905, 0xc906, 0xc90c, 0xc90d, 0xc90f, 0xc911, 0xc918,
- 0xc92c, 0xc934, 0xc950, 0xc951, 0xc954, 0xc958, 0xc960, 0xc961,
- 0xc963, 0xc96c, 0xc970, 0xc974, 0xc97c, 0xc988, 0xc989, 0xc98c,
- 0xc990, 0xc998, 0xc999, 0xc99b, 0xc99d, 0xc9c0, 0xc9c1, 0xc9c4,
- 0xc9c7, 0xc9c8, 0xc9ca, 0xc9d0, 0xc9d1, 0xc9d3,
- /* 0x42 */
- 0xc9d5, 0xc9d6, 0xc9d9, 0xc9da, 0xc9dc, 0xc9dd, 0xc9e0, 0xc9e2,
- 0xc9e4, 0xc9e7, 0xc9ec, 0xc9ed, 0xc9ef, 0xc9f0, 0xc9f1, 0xc9f8,
- 0xc9f9, 0xc9fc, 0xca00, 0xca08, 0xca09, 0xca0b, 0xca0c, 0xca0d,
- 0xca14, 0xca18, 0xca29, 0xca4c, 0xca4d, 0xca50, 0xca54, 0xca5c,
- 0xca5d, 0xca5f, 0xca60, 0xca61, 0xca68, 0xca7d, 0xca84, 0xca98,
- 0xcabc, 0xcabd, 0xcac0, 0xcac4, 0xcacc, 0xcacd, 0xcacf, 0xcad1,
- 0xcad3, 0xcad8, 0xcad9, 0xcae0, 0xcaec, 0xcaf4, 0xcb08, 0xcb10,
- 0xcb14, 0xcb18, 0xcb20, 0xcb21, 0xcb41, 0xcb48, 0xcb49, 0xcb4c,
- 0xcb50, 0xcb58, 0xcb59, 0xcb5d, 0xcb64, 0xcb78, 0xcb79, 0xcb9c,
- 0xcbb8, 0xcbd4, 0xcbe4, 0xcbe7, 0xcbe9, 0xcc0c, 0xcc0d, 0xcc10,
- 0xcc14, 0xcc1c, 0xcc1d, 0xcc21, 0xcc22, 0xcc27, 0xcc28, 0xcc29,
- 0xcc2c, 0xcc2e, 0xcc30, 0xcc38, 0xcc39, 0xcc3b,
- /* 0x43 */
- 0xcc3c, 0xcc3d, 0xcc3e, 0xcc44, 0xcc45, 0xcc48, 0xcc4c, 0xcc54,
- 0xcc55, 0xcc57, 0xcc58, 0xcc59, 0xcc60, 0xcc64, 0xcc66, 0xcc68,
- 0xcc70, 0xcc75, 0xcc98, 0xcc99, 0xcc9c, 0xcca0, 0xcca8, 0xcca9,
- 0xccab, 0xccac, 0xccad, 0xccb4, 0xccb5, 0xccb8, 0xccbc, 0xccc4,
- 0xccc5, 0xccc7, 0xccc9, 0xccd0, 0xccd4, 0xcce4, 0xccec, 0xccf0,
- 0xcd01, 0xcd08, 0xcd09, 0xcd0c, 0xcd10, 0xcd18, 0xcd19, 0xcd1b,
- 0xcd1d, 0xcd24, 0xcd28, 0xcd2c, 0xcd39, 0xcd5c, 0xcd60, 0xcd64,
- 0xcd6c, 0xcd6d, 0xcd6f, 0xcd71, 0xcd78, 0xcd88, 0xcd94, 0xcd95,
- 0xcd98, 0xcd9c, 0xcda4, 0xcda5, 0xcda7, 0xcda9, 0xcdb0, 0xcdc4,
- 0xcdcc, 0xcdd0, 0xcde8, 0xcdec, 0xcdf0, 0xcdf8, 0xcdf9, 0xcdfb,
- 0xcdfd, 0xce04, 0xce08, 0xce0c, 0xce14, 0xce19, 0xce20, 0xce21,
- 0xce24, 0xce28, 0xce30, 0xce31, 0xce33, 0xce35,
- /* 0x44 */
- 0xce58, 0xce59, 0xce5c, 0xce5f, 0xce60, 0xce61, 0xce68, 0xce69,
- 0xce6b, 0xce6d, 0xce74, 0xce75, 0xce78, 0xce7c, 0xce84, 0xce85,
- 0xce87, 0xce89, 0xce90, 0xce91, 0xce94, 0xce98, 0xcea0, 0xcea1,
- 0xcea3, 0xcea4, 0xcea5, 0xceac, 0xcead, 0xcec1, 0xcee4, 0xcee5,
- 0xcee8, 0xceeb, 0xceec, 0xcef4, 0xcef5, 0xcef7, 0xcef8, 0xcef9,
- 0xcf00, 0xcf01, 0xcf04, 0xcf08, 0xcf10, 0xcf11, 0xcf13, 0xcf15,
- 0xcf1c, 0xcf20, 0xcf24, 0xcf2c, 0xcf2d, 0xcf2f, 0xcf30, 0xcf31,
- 0xcf38, 0xcf54, 0xcf55, 0xcf58, 0xcf5c, 0xcf64, 0xcf65, 0xcf67,
- 0xcf69, 0xcf70, 0xcf71, 0xcf74, 0xcf78, 0xcf80, 0xcf85, 0xcf8c,
- 0xcfa1, 0xcfa8, 0xcfb0, 0xcfc4, 0xcfe0, 0xcfe1, 0xcfe4, 0xcfe8,
- 0xcff0, 0xcff1, 0xcff3, 0xcff5, 0xcffc, 0xd000, 0xd004, 0xd011,
- 0xd018, 0xd02d, 0xd034, 0xd035, 0xd038, 0xd03c,
- /* 0x45 */
- 0xd044, 0xd045, 0xd047, 0xd049, 0xd050, 0xd054, 0xd058, 0xd060,
- 0xd06c, 0xd06d, 0xd070, 0xd074, 0xd07c, 0xd07d, 0xd081, 0xd0a4,
- 0xd0a5, 0xd0a8, 0xd0ac, 0xd0b4, 0xd0b5, 0xd0b7, 0xd0b9, 0xd0c0,
- 0xd0c1, 0xd0c4, 0xd0c8, 0xd0c9, 0xd0d0, 0xd0d1, 0xd0d3, 0xd0d4,
- 0xd0d5, 0xd0dc, 0xd0dd, 0xd0e0, 0xd0e4, 0xd0ec, 0xd0ed, 0xd0ef,
- 0xd0f0, 0xd0f1, 0xd0f8, 0xd10d, 0xd130, 0xd131, 0xd134, 0xd138,
- 0xd13a, 0xd140, 0xd141, 0xd143, 0xd144, 0xd145, 0xd14c, 0xd14d,
- 0xd150, 0xd154, 0xd15c, 0xd15d, 0xd15f, 0xd161, 0xd168, 0xd16c,
- 0xd17c, 0xd184, 0xd188, 0xd1a0, 0xd1a1, 0xd1a4, 0xd1a8, 0xd1b0,
- 0xd1b1, 0xd1b3, 0xd1b5, 0xd1ba, 0xd1bc, 0xd1c0, 0xd1d8, 0xd1f4,
- 0xd1f8, 0xd207, 0xd209, 0xd210, 0xd22c, 0xd22d, 0xd230, 0xd234,
- 0xd23c, 0xd23d, 0xd23f, 0xd241, 0xd248, 0xd25c,
- /* 0x46 */
- 0xd264, 0xd280, 0xd281, 0xd284, 0xd288, 0xd290, 0xd291, 0xd295,
- 0xd29c, 0xd2a0, 0xd2a4, 0xd2ac, 0xd2b1, 0xd2b8, 0xd2b9, 0xd2bc,
- 0xd2bf, 0xd2c0, 0xd2c2, 0xd2c8, 0xd2c9, 0xd2cb, 0xd2d4, 0xd2d8,
- 0xd2dc, 0xd2e4, 0xd2e5, 0xd2f0, 0xd2f1, 0xd2f4, 0xd2f8, 0xd300,
- 0xd301, 0xd303, 0xd305, 0xd30c, 0xd30d, 0xd30e, 0xd310, 0xd314,
- 0xd316, 0xd31c, 0xd31d, 0xd31f, 0xd320, 0xd321, 0xd325, 0xd328,
- 0xd329, 0xd32c, 0xd330, 0xd338, 0xd339, 0xd33b, 0xd33c, 0xd33d,
- 0xd344, 0xd345, 0xd37c, 0xd37d, 0xd380, 0xd384, 0xd38c, 0xd38d,
- 0xd38f, 0xd390, 0xd391, 0xd398, 0xd399, 0xd39c, 0xd3a0, 0xd3a8,
- 0xd3a9, 0xd3ab, 0xd3ad, 0xd3b4, 0xd3b8, 0xd3bc, 0xd3c4, 0xd3c5,
- 0xd3c8, 0xd3c9, 0xd3d0, 0xd3d8, 0xd3e1, 0xd3e3, 0xd3ec, 0xd3ed,
- 0xd3f0, 0xd3f4, 0xd3fc, 0xd3fd, 0xd3ff, 0xd401,
- /* 0x47 */
- 0xd408, 0xd41d, 0xd440, 0xd444, 0xd45c, 0xd460, 0xd464, 0xd46d,
- 0xd46f, 0xd478, 0xd479, 0xd47c, 0xd47f, 0xd480, 0xd482, 0xd488,
- 0xd489, 0xd48b, 0xd48d, 0xd494, 0xd4a9, 0xd4cc, 0xd4d0, 0xd4d4,
- 0xd4dc, 0xd4df, 0xd4e8, 0xd4ec, 0xd4f0, 0xd4f8, 0xd4fb, 0xd4fd,
- 0xd504, 0xd508, 0xd50c, 0xd514, 0xd515, 0xd517, 0xd53c, 0xd53d,
- 0xd540, 0xd544, 0xd54c, 0xd54d, 0xd54f, 0xd551, 0xd558, 0xd559,
- 0xd55c, 0xd560, 0xd565, 0xd568, 0xd569, 0xd56b, 0xd56d, 0xd574,
- 0xd575, 0xd578, 0xd57c, 0xd584, 0xd585, 0xd587, 0xd588, 0xd589,
- 0xd590, 0xd5a5, 0xd5c8, 0xd5c9, 0xd5cc, 0xd5d0, 0xd5d2, 0xd5d8,
- 0xd5d9, 0xd5db, 0xd5dd, 0xd5e4, 0xd5e5, 0xd5e8, 0xd5ec, 0xd5f4,
- 0xd5f5, 0xd5f7, 0xd5f9, 0xd600, 0xd601, 0xd604, 0xd608, 0xd610,
- 0xd611, 0xd613, 0xd614, 0xd615, 0xd61c, 0xd620,
- /* 0x48 */
- 0xd624, 0xd62d, 0xd638, 0xd639, 0xd63c, 0xd640, 0xd645, 0xd648,
- 0xd649, 0xd64b, 0xd64d, 0xd651, 0xd654, 0xd655, 0xd658, 0xd65c,
- 0xd667, 0xd669, 0xd670, 0xd671, 0xd674, 0xd683, 0xd685, 0xd68c,
- 0xd68d, 0xd690, 0xd694, 0xd69d, 0xd69f, 0xd6a1, 0xd6a8, 0xd6ac,
- 0xd6b0, 0xd6b9, 0xd6bb, 0xd6c4, 0xd6c5, 0xd6c8, 0xd6cc, 0xd6d1,
- 0xd6d4, 0xd6d7, 0xd6d9, 0xd6e0, 0xd6e4, 0xd6e8, 0xd6f0, 0xd6f5,
- 0xd6fc, 0xd6fd, 0xd700, 0xd704, 0xd711, 0xd718, 0xd719, 0xd71c,
- 0xd720, 0xd728, 0xd729, 0xd72b, 0xd72d, 0xd734, 0xd735, 0xd738,
- 0xd73c, 0xd744, 0xd747, 0xd749, 0xd750, 0xd751, 0xd754, 0xd756,
- 0xd757, 0xd758, 0xd759, 0xd760, 0xd761, 0xd763, 0xd765, 0xd769,
- 0xd76c, 0xd770, 0xd774, 0xd77c, 0xd77d, 0xd781, 0xd788, 0xd789,
- 0xd78c, 0xd790, 0xd798, 0xd799, 0xd79b, 0xd79d,
-};
-static const unsigned short ksc5601_2uni_page4a[4888] = {
- /* 0x4a */
- 0x4f3d, 0x4f73, 0x5047, 0x50f9, 0x52a0, 0x53ef, 0x5475, 0x54e5,
- 0x5609, 0x5ac1, 0x5bb6, 0x6687, 0x67b6, 0x67b7, 0x67ef, 0x6b4c,
- 0x73c2, 0x75c2, 0x7a3c, 0x82db, 0x8304, 0x8857, 0x8888, 0x8a36,
- 0x8cc8, 0x8dcf, 0x8efb, 0x8fe6, 0x99d5, 0x523b, 0x5374, 0x5404,
- 0x606a, 0x6164, 0x6bbc, 0x73cf, 0x811a, 0x89ba, 0x89d2, 0x95a3,
- 0x4f83, 0x520a, 0x58be, 0x5978, 0x59e6, 0x5e72, 0x5e79, 0x61c7,
- 0x63c0, 0x6746, 0x67ec, 0x687f, 0x6f97, 0x764e, 0x770b, 0x78f5,
- 0x7a08, 0x7aff, 0x7c21, 0x809d, 0x826e, 0x8271, 0x8aeb, 0x9593,
- 0x4e6b, 0x559d, 0x66f7, 0x6e34, 0x78a3, 0x7aed, 0x845b, 0x8910,
- 0x874e, 0x97a8, 0x52d8, 0x574e, 0x582a, 0x5d4c, 0x611f, 0x61be,
- 0x6221, 0x6562, 0x67d1, 0x6a44, 0x6e1b, 0x7518, 0x75b3, 0x76e3,
- 0x77b0, 0x7d3a, 0x90af, 0x9451, 0x9452, 0x9f95,
- /* 0x4b */
- 0x5323, 0x5cac, 0x7532, 0x80db, 0x9240, 0x9598, 0x525b, 0x5808,
- 0x59dc, 0x5ca1, 0x5d17, 0x5eb7, 0x5f3a, 0x5f4a, 0x6177, 0x6c5f,
- 0x757a, 0x7586, 0x7ce0, 0x7d73, 0x7db1, 0x7f8c, 0x8154, 0x8221,
- 0x8591, 0x8941, 0x8b1b, 0x92fc, 0x964d, 0x9c47, 0x4ecb, 0x4ef7,
- 0x500b, 0x51f1, 0x584f, 0x6137, 0x613e, 0x6168, 0x6539, 0x69ea,
- 0x6f11, 0x75a5, 0x7686, 0x76d6, 0x7b87, 0x82a5, 0x84cb, 0xf900,
- 0x93a7, 0x958b, 0x5580, 0x5ba2, 0x5751, 0xf901, 0x7cb3, 0x7fb9,
- 0x91b5, 0x5028, 0x53bb, 0x5c45, 0x5de8, 0x62d2, 0x636e, 0x64da,
- 0x64e7, 0x6e20, 0x70ac, 0x795b, 0x8ddd, 0x8e1e, 0xf902, 0x907d,
- 0x9245, 0x92f8, 0x4e7e, 0x4ef6, 0x5065, 0x5dfe, 0x5efa, 0x6106,
- 0x6957, 0x8171, 0x8654, 0x8e47, 0x9375, 0x9a2b, 0x4e5e, 0x5091,
- 0x6770, 0x6840, 0x5109, 0x528d, 0x5292, 0x6aa2,
- /* 0x4c */
- 0x77bc, 0x9210, 0x9ed4, 0x52ab, 0x602f, 0x8ff2, 0x5048, 0x61a9,
- 0x63ed, 0x64ca, 0x683c, 0x6a84, 0x6fc0, 0x8188, 0x89a1, 0x9694,
- 0x5805, 0x727d, 0x72ac, 0x7504, 0x7d79, 0x7e6d, 0x80a9, 0x898b,
- 0x8b74, 0x9063, 0x9d51, 0x6289, 0x6c7a, 0x6f54, 0x7d50, 0x7f3a,
- 0x8a23, 0x517c, 0x614a, 0x7b9d, 0x8b19, 0x9257, 0x938c, 0x4eac,
- 0x4fd3, 0x501e, 0x50be, 0x5106, 0x52c1, 0x52cd, 0x537f, 0x5770,
- 0x5883, 0x5e9a, 0x5f91, 0x6176, 0x61ac, 0x64ce, 0x656c, 0x666f,
- 0x66bb, 0x66f4, 0x6897, 0x6d87, 0x7085, 0x70f1, 0x749f, 0x74a5,
- 0x74ca, 0x75d9, 0x786c, 0x78ec, 0x7adf, 0x7af6, 0x7d45, 0x7d93,
- 0x8015, 0x803f, 0x811b, 0x8396, 0x8b66, 0x8f15, 0x9015, 0x93e1,
- 0x9803, 0x9838, 0x9a5a, 0x9be8, 0x4fc2, 0x5553, 0x583a, 0x5951,
- 0x5b63, 0x5c46, 0x60b8, 0x6212, 0x6842, 0x68b0,
- /* 0x4d */
- 0x68e8, 0x6eaa, 0x754c, 0x7678, 0x78ce, 0x7a3d, 0x7cfb, 0x7e6b,
- 0x7e7c, 0x8a08, 0x8aa1, 0x8c3f, 0x968e, 0x9dc4, 0x53e4, 0x53e9,
- 0x544a, 0x5471, 0x56fa, 0x59d1, 0x5b64, 0x5c3b, 0x5eab, 0x62f7,
- 0x6537, 0x6545, 0x6572, 0x66a0, 0x67af, 0x69c1, 0x6cbd, 0x75fc,
- 0x7690, 0x777e, 0x7a3f, 0x7f94, 0x8003, 0x80a1, 0x818f, 0x82e6,
- 0x82fd, 0x83f0, 0x85c1, 0x8831, 0x88b4, 0x8aa5, 0xf903, 0x8f9c,
- 0x932e, 0x96c7, 0x9867, 0x9ad8, 0x9f13, 0x54ed, 0x659b, 0x66f2,
- 0x688f, 0x7a40, 0x8c37, 0x9d60, 0x56f0, 0x5764, 0x5d11, 0x6606,
- 0x68b1, 0x68cd, 0x6efe, 0x7428, 0x889e, 0x9be4, 0x6c68, 0xf904,
- 0x9aa8, 0x4f9b, 0x516c, 0x5171, 0x529f, 0x5b54, 0x5de5, 0x6050,
- 0x606d, 0x62f1, 0x63a7, 0x653b, 0x73d9, 0x7a7a, 0x86a3, 0x8ca2,
- 0x978f, 0x4e32, 0x5be1, 0x6208, 0x679c, 0x74dc,
- /* 0x4e */
- 0x79d1, 0x83d3, 0x8a87, 0x8ab2, 0x8de8, 0x904e, 0x934b, 0x9846,
- 0x5ed3, 0x69e8, 0x85ff, 0x90ed, 0xf905, 0x51a0, 0x5b98, 0x5bec,
- 0x6163, 0x68fa, 0x6b3e, 0x704c, 0x742f, 0x74d8, 0x7ba1, 0x7f50,
- 0x83c5, 0x89c0, 0x8cab, 0x95dc, 0x9928, 0x522e, 0x605d, 0x62ec,
- 0x9002, 0x4f8a, 0x5149, 0x5321, 0x58d9, 0x5ee3, 0x66e0, 0x6d38,
- 0x709a, 0x72c2, 0x73d6, 0x7b50, 0x80f1, 0x945b, 0x5366, 0x639b,
- 0x7f6b, 0x4e56, 0x5080, 0x584a, 0x58de, 0x602a, 0x6127, 0x62d0,
- 0x69d0, 0x9b41, 0x5b8f, 0x7d18, 0x80b1, 0x8f5f, 0x4ea4, 0x50d1,
- 0x54ac, 0x55ac, 0x5b0c, 0x5da0, 0x5de7, 0x652a, 0x654e, 0x6821,
- 0x6a4b, 0x72e1, 0x768e, 0x77ef, 0x7d5e, 0x7ff9, 0x81a0, 0x854e,
- 0x86df, 0x8f03, 0x8f4e, 0x90ca, 0x9903, 0x9a55, 0x9bab, 0x4e18,
- 0x4e45, 0x4e5d, 0x4ec7, 0x4ff1, 0x5177, 0x52fe,
- /* 0x4f */
- 0x5340, 0x53e3, 0x53e5, 0x548e, 0x5614, 0x5775, 0x57a2, 0x5bc7,
- 0x5d87, 0x5ed0, 0x61fc, 0x62d8, 0x6551, 0x67b8, 0x67e9, 0x69cb,
- 0x6b50, 0x6bc6, 0x6bec, 0x6c42, 0x6e9d, 0x7078, 0x72d7, 0x7396,
- 0x7403, 0x77bf, 0x77e9, 0x7a76, 0x7d7f, 0x8009, 0x81fc, 0x8205,
- 0x820a, 0x82df, 0x8862, 0x8b33, 0x8cfc, 0x8ec0, 0x9011, 0x90b1,
- 0x9264, 0x92b6, 0x99d2, 0x9a45, 0x9ce9, 0x9dd7, 0x9f9c, 0x570b,
- 0x5c40, 0x83ca, 0x97a0, 0x97ab, 0x9eb4, 0x541b, 0x7a98, 0x7fa4,
- 0x88d9, 0x8ecd, 0x90e1, 0x5800, 0x5c48, 0x6398, 0x7a9f, 0x5bae,
- 0x5f13, 0x7a79, 0x7aae, 0x828e, 0x8eac, 0x5026, 0x5238, 0x52f8,
- 0x5377, 0x5708, 0x62f3, 0x6372, 0x6b0a, 0x6dc3, 0x7737, 0x53a5,
- 0x7357, 0x8568, 0x8e76, 0x95d5, 0x673a, 0x6ac3, 0x6f70, 0x8a6d,
- 0x8ecc, 0x994b, 0xf906, 0x6677, 0x6b78, 0x8cb4,
- /* 0x50 */
- 0x9b3c, 0xf907, 0x53eb, 0x572d, 0x594e, 0x63c6, 0x69fb, 0x73ea,
- 0x7845, 0x7aba, 0x7ac5, 0x7cfe, 0x8475, 0x898f, 0x8d73, 0x9035,
- 0x95a8, 0x52fb, 0x5747, 0x7547, 0x7b60, 0x83cc, 0x921e, 0xf908,
- 0x6a58, 0x514b, 0x524b, 0x5287, 0x621f, 0x68d8, 0x6975, 0x9699,
- 0x50c5, 0x52a4, 0x52e4, 0x61c3, 0x65a4, 0x6839, 0x69ff, 0x747e,
- 0x7b4b, 0x82b9, 0x83eb, 0x89b2, 0x8b39, 0x8fd1, 0x9949, 0xf909,
- 0x4eca, 0x5997, 0x64d2, 0x6611, 0x6a8e, 0x7434, 0x7981, 0x79bd,
- 0x82a9, 0x887e, 0x887f, 0x895f, 0xf90a, 0x9326, 0x4f0b, 0x53ca,
- 0x6025, 0x6271, 0x6c72, 0x7d1a, 0x7d66, 0x4e98, 0x5162, 0x77dc,
- 0x80af, 0x4f01, 0x4f0e, 0x5176, 0x5180, 0x55dc, 0x5668, 0x573b,
- 0x57fa, 0x57fc, 0x5914, 0x5947, 0x5993, 0x5bc4, 0x5c90, 0x5d0e,
- 0x5df1, 0x5e7e, 0x5fcc, 0x6280, 0x65d7, 0x65e3,
- /* 0x51 */
- 0x671e, 0x671f, 0x675e, 0x68cb, 0x68c4, 0x6a5f, 0x6b3a, 0x6c23,
- 0x6c7d, 0x6c82, 0x6dc7, 0x7398, 0x7426, 0x742a, 0x7482, 0x74a3,
- 0x7578, 0x757f, 0x7881, 0x78ef, 0x7941, 0x7947, 0x7948, 0x797a,
- 0x7b95, 0x7d00, 0x7dba, 0x7f88, 0x8006, 0x802d, 0x808c, 0x8a18,
- 0x8b4f, 0x8c48, 0x8d77, 0x9321, 0x9324, 0x98e2, 0x9951, 0x9a0e,
- 0x9a0f, 0x9a65, 0x9e92, 0x7dca, 0x4f76, 0x5409, 0x62ee, 0x6854,
- 0x91d1, 0x55ab, 0x513a, 0xf90b, 0xf90c, 0x5a1c, 0x61e6, 0xf90d,
- 0x62cf, 0x62ff, 0xf90e, 0xf90f, 0xf910, 0xf911, 0xf912, 0xf913,
- 0x90a3, 0xf914, 0xf915, 0xf916, 0xf917, 0xf918, 0x8afe, 0xf919,
- 0xf91a, 0xf91b, 0xf91c, 0x6696, 0xf91d, 0x7156, 0xf91e, 0xf91f,
- 0x96e3, 0xf920, 0x634f, 0x637a, 0x5357, 0xf921, 0x678f, 0x6960,
- 0x6e73, 0xf922, 0x7537, 0xf923, 0xf924, 0xf925,
- /* 0x52 */
- 0x7d0d, 0xf926, 0xf927, 0x8872, 0x56ca, 0x5a18, 0xf928, 0xf929,
- 0xf92a, 0xf92b, 0xf92c, 0x4e43, 0xf92d, 0x5167, 0x5948, 0x67f0,
- 0x8010, 0xf92e, 0x5973, 0x5e74, 0x649a, 0x79ca, 0x5ff5, 0x606c,
- 0x62c8, 0x637b, 0x5be7, 0x5bd7, 0x52aa, 0xf92f, 0x5974, 0x5f29,
- 0x6012, 0xf930, 0xf931, 0xf932, 0x7459, 0xf933, 0xf934, 0xf935,
- 0xf936, 0xf937, 0xf938, 0x99d1, 0xf939, 0xf93a, 0xf93b, 0xf93c,
- 0xf93d, 0xf93e, 0xf93f, 0xf940, 0xf941, 0xf942, 0xf943, 0x6fc3,
- 0xf944, 0xf945, 0x81bf, 0x8fb2, 0x60f1, 0xf946, 0xf947, 0x8166,
- 0xf948, 0xf949, 0x5c3f, 0xf94a, 0xf94b, 0xf94c, 0xf94d, 0xf94e,
- 0xf94f, 0xf950, 0xf951, 0x5ae9, 0x8a25, 0x677b, 0x7d10, 0xf952,
- 0xf953, 0xf954, 0xf955, 0xf956, 0xf957, 0x80fd, 0xf958, 0xf959,
- 0x5c3c, 0x6ce5, 0x533f, 0x6eba, 0x591a, 0x8336,
- /* 0x53 */
- 0x4e39, 0x4eb6, 0x4f46, 0x55ae, 0x5718, 0x58c7, 0x5f56, 0x65b7,
- 0x65e6, 0x6a80, 0x6bb5, 0x6e4d, 0x77ed, 0x7aef, 0x7c1e, 0x7dde,
- 0x86cb, 0x8892, 0x9132, 0x935b, 0x64bb, 0x6fbe, 0x737a, 0x75b8,
- 0x9054, 0x5556, 0x574d, 0x61ba, 0x64d4, 0x66c7, 0x6de1, 0x6e5b,
- 0x6f6d, 0x6fb9, 0x75f0, 0x8043, 0x81bd, 0x8541, 0x8983, 0x8ac7,
- 0x8b5a, 0x931f, 0x6c93, 0x7553, 0x7b54, 0x8e0f, 0x905d, 0x5510,
- 0x5802, 0x5858, 0x5e62, 0x6207, 0x649e, 0x68e0, 0x7576, 0x7cd6,
- 0x87b3, 0x9ee8, 0x4ee3, 0x5788, 0x576e, 0x5927, 0x5c0d, 0x5cb1,
- 0x5e36, 0x5f85, 0x6234, 0x64e1, 0x73b3, 0x81fa, 0x888b, 0x8cb8,
- 0x968a, 0x9edb, 0x5b85, 0x5fb7, 0x60b3, 0x5012, 0x5200, 0x5230,
- 0x5716, 0x5835, 0x5857, 0x5c0e, 0x5c60, 0x5cf6, 0x5d8b, 0x5ea6,
- 0x5f92, 0x60bc, 0x6311, 0x6389, 0x6417, 0x6843,
- /* 0x54 */
- 0x68f9, 0x6ac2, 0x6dd8, 0x6e21, 0x6ed4, 0x6fe4, 0x71fe, 0x76dc,
- 0x7779, 0x79b1, 0x7a3b, 0x8404, 0x89a9, 0x8ced, 0x8df3, 0x8e48,
- 0x9003, 0x9014, 0x9053, 0x90fd, 0x934d, 0x9676, 0x97dc, 0x6bd2,
- 0x7006, 0x7258, 0x72a2, 0x7368, 0x7763, 0x79bf, 0x7be4, 0x7e9b,
- 0x8b80, 0x58a9, 0x60c7, 0x6566, 0x65fd, 0x66be, 0x6c8c, 0x711e,
- 0x71c9, 0x8c5a, 0x9813, 0x4e6d, 0x7a81, 0x4edd, 0x51ac, 0x51cd,
- 0x52d5, 0x540c, 0x61a7, 0x6771, 0x6850, 0x68df, 0x6d1e, 0x6f7c,
- 0x75bc, 0x77b3, 0x7ae5, 0x80f4, 0x8463, 0x9285, 0x515c, 0x6597,
- 0x675c, 0x6793, 0x75d8, 0x7ac7, 0x8373, 0xf95a, 0x8c46, 0x9017,
- 0x982d, 0x5c6f, 0x81c0, 0x829a, 0x9041, 0x906f, 0x920d, 0x5f97,
- 0x5d9d, 0x6a59, 0x71c8, 0x767b, 0x7b49, 0x85e4, 0x8b04, 0x9127,
- 0x9a30, 0x5587, 0x61f6, 0xf95b, 0x7669, 0x7f85,
- /* 0x55 */
- 0x863f, 0x87ba, 0x88f8, 0x908f, 0xf95c, 0x6d1b, 0x70d9, 0x73de,
- 0x7d61, 0x843d, 0xf95d, 0x916a, 0x99f1, 0xf95e, 0x4e82, 0x5375,
- 0x6b04, 0x6b12, 0x703e, 0x721b, 0x862d, 0x9e1e, 0x524c, 0x8fa3,
- 0x5d50, 0x64e5, 0x652c, 0x6b16, 0x6feb, 0x7c43, 0x7e9c, 0x85cd,
- 0x8964, 0x89bd, 0x62c9, 0x81d8, 0x881f, 0x5eca, 0x6717, 0x6d6a,
- 0x72fc, 0x7405, 0x746f, 0x8782, 0x90de, 0x4f86, 0x5d0d, 0x5fa0,
- 0x840a, 0x51b7, 0x63a0, 0x7565, 0x4eae, 0x5006, 0x5169, 0x51c9,
- 0x6881, 0x6a11, 0x7cae, 0x7cb1, 0x7ce7, 0x826f, 0x8ad2, 0x8f1b,
- 0x91cf, 0x4fb6, 0x5137, 0x52f5, 0x5442, 0x5eec, 0x616e, 0x623e,
- 0x65c5, 0x6ada, 0x6ffe, 0x792a, 0x85dc, 0x8823, 0x95ad, 0x9a62,
- 0x9a6a, 0x9e97, 0x9ece, 0x529b, 0x66c6, 0x6b77, 0x701d, 0x792b,
- 0x8f62, 0x9742, 0x6190, 0x6200, 0x6523, 0x6f23,
- /* 0x56 */
- 0x7149, 0x7489, 0x7df4, 0x806f, 0x84ee, 0x8f26, 0x9023, 0x934a,
- 0x51bd, 0x5217, 0x52a3, 0x6d0c, 0x70c8, 0x88c2, 0x5ec9, 0x6582,
- 0x6bae, 0x6fc2, 0x7c3e, 0x7375, 0x4ee4, 0x4f36, 0x56f9, 0xf95f,
- 0x5cba, 0x5dba, 0x601c, 0x73b2, 0x7b2d, 0x7f9a, 0x7fce, 0x8046,
- 0x901e, 0x9234, 0x96f6, 0x9748, 0x9818, 0x9f61, 0x4f8b, 0x6fa7,
- 0x79ae, 0x91b4, 0x96b7, 0x52de, 0xf960, 0x6488, 0x64c4, 0x6ad3,
- 0x6f5e, 0x7018, 0x7210, 0x76e7, 0x8001, 0x8606, 0x865c, 0x8def,
- 0x8f05, 0x9732, 0x9b6f, 0x9dfa, 0x9e75, 0x788c, 0x797f, 0x7da0,
- 0x83c9, 0x9304, 0x9e7f, 0x9e93, 0x8ad6, 0x58df, 0x5f04, 0x6727,
- 0x7027, 0x74cf, 0x7c60, 0x807e, 0x5121, 0x7028, 0x7262, 0x78ca,
- 0x8cc2, 0x8cda, 0x8cf4, 0x96f7, 0x4e86, 0x50da, 0x5bee, 0x5ed6,
- 0x6599, 0x71ce, 0x7642, 0x77ad, 0x804a, 0x84fc,
- /* 0x57 */
- 0x907c, 0x9b27, 0x9f8d, 0x58d8, 0x5a41, 0x5c62, 0x6a13, 0x6dda,
- 0x6f0f, 0x763b, 0x7d2f, 0x7e37, 0x851e, 0x8938, 0x93e4, 0x964b,
- 0x5289, 0x65d2, 0x67f3, 0x69b4, 0x6d41, 0x6e9c, 0x700f, 0x7409,
- 0x7460, 0x7559, 0x7624, 0x786b, 0x8b2c, 0x985e, 0x516d, 0x622e,
- 0x9678, 0x4f96, 0x502b, 0x5d19, 0x6dea, 0x7db8, 0x8f2a, 0x5f8b,
- 0x6144, 0x6817, 0xf961, 0x9686, 0x52d2, 0x808b, 0x51dc, 0x51cc,
- 0x695e, 0x7a1c, 0x7dbe, 0x83f1, 0x9675, 0x4fda, 0x5229, 0x5398,
- 0x540f, 0x550e, 0x5c65, 0x60a7, 0x674e, 0x68a8, 0x6d6c, 0x7281,
- 0x72f8, 0x7406, 0x7483, 0xf962, 0x75e2, 0x7c6c, 0x7f79, 0x7fb8,
- 0x8389, 0x88cf, 0x88e1, 0x91cc, 0x91d0, 0x96e2, 0x9bc9, 0x541d,
- 0x6f7e, 0x71d0, 0x7498, 0x85fa, 0x8eaa, 0x96a3, 0x9c57, 0x9e9f,
- 0x6797, 0x6dcb, 0x7433, 0x81e8, 0x9716, 0x782c,
- /* 0x58 */
- 0x7acb, 0x7b20, 0x7c92, 0x6469, 0x746a, 0x75f2, 0x78bc, 0x78e8,
- 0x99ac, 0x9b54, 0x9ebb, 0x5bde, 0x5e55, 0x6f20, 0x819c, 0x83ab,
- 0x9088, 0x4e07, 0x534d, 0x5a29, 0x5dd2, 0x5f4e, 0x6162, 0x633d,
- 0x6669, 0x66fc, 0x6eff, 0x6f2b, 0x7063, 0x779e, 0x842c, 0x8513,
- 0x883b, 0x8f13, 0x9945, 0x9c3b, 0x551c, 0x62b9, 0x672b, 0x6cab,
- 0x8309, 0x896a, 0x977a, 0x4ea1, 0x5984, 0x5fd8, 0x5fd9, 0x671b,
- 0x7db2, 0x7f54, 0x8292, 0x832b, 0x83bd, 0x8f1e, 0x9099, 0x57cb,
- 0x59b9, 0x5a92, 0x5bd0, 0x6627, 0x679a, 0x6885, 0x6bcf, 0x7164,
- 0x7f75, 0x8cb7, 0x8ce3, 0x9081, 0x9b45, 0x8108, 0x8c8a, 0x964c,
- 0x9a40, 0x9ea5, 0x5b5f, 0x6c13, 0x731b, 0x76f2, 0x76df, 0x840c,
- 0x51aa, 0x8993, 0x514d, 0x5195, 0x52c9, 0x68c9, 0x6c94, 0x7704,
- 0x7720, 0x7dbf, 0x7dec, 0x9762, 0x9eb5, 0x6ec5,
- /* 0x59 */
- 0x8511, 0x51a5, 0x540d, 0x547d, 0x660e, 0x669d, 0x6927, 0x6e9f,
- 0x76bf, 0x7791, 0x8317, 0x84c2, 0x879f, 0x9169, 0x9298, 0x9cf4,
- 0x8882, 0x4fae, 0x5192, 0x52df, 0x59c6, 0x5e3d, 0x6155, 0x6478,
- 0x6479, 0x66ae, 0x67d0, 0x6a21, 0x6bcd, 0x6bdb, 0x725f, 0x7261,
- 0x7441, 0x7738, 0x77db, 0x8017, 0x82bc, 0x8305, 0x8b00, 0x8b28,
- 0x8c8c, 0x6728, 0x6c90, 0x7267, 0x76ee, 0x7766, 0x7a46, 0x9da9,
- 0x6b7f, 0x6c92, 0x5922, 0x6726, 0x8499, 0x536f, 0x5893, 0x5999,
- 0x5edf, 0x63cf, 0x6634, 0x6773, 0x6e3a, 0x732b, 0x7ad7, 0x82d7,
- 0x9328, 0x52d9, 0x5deb, 0x61ae, 0x61cb, 0x620a, 0x62c7, 0x64ab,
- 0x65e0, 0x6959, 0x6b66, 0x6bcb, 0x7121, 0x73f7, 0x755d, 0x7e46,
- 0x821e, 0x8302, 0x856a, 0x8aa3, 0x8cbf, 0x9727, 0x9d61, 0x58a8,
- 0x9ed8, 0x5011, 0x520e, 0x543b, 0x554f, 0x6587,
- /* 0x5a */
- 0x6c76, 0x7d0a, 0x7d0b, 0x805e, 0x868a, 0x9580, 0x96ef, 0x52ff,
- 0x6c95, 0x7269, 0x5473, 0x5a9a, 0x5c3e, 0x5d4b, 0x5f4c, 0x5fae,
- 0x672a, 0x68b6, 0x6963, 0x6e3c, 0x6e44, 0x7709, 0x7c73, 0x7f8e,
- 0x8587, 0x8b0e, 0x8ff7, 0x9761, 0x9ef4, 0x5cb7, 0x60b6, 0x610d,
- 0x61ab, 0x654f, 0x65fb, 0x65fc, 0x6c11, 0x6cef, 0x739f, 0x73c9,
- 0x7de1, 0x9594, 0x5bc6, 0x871c, 0x8b10, 0x525d, 0x535a, 0x62cd,
- 0x640f, 0x64b2, 0x6734, 0x6a38, 0x6cca, 0x73c0, 0x749e, 0x7b94,
- 0x7c95, 0x7e1b, 0x818a, 0x8236, 0x8584, 0x8feb, 0x96f9, 0x99c1,
- 0x4f34, 0x534a, 0x53cd, 0x53db, 0x62cc, 0x642c, 0x6500, 0x6591,
- 0x69c3, 0x6cee, 0x6f58, 0x73ed, 0x7554, 0x7622, 0x76e4, 0x76fc,
- 0x78d0, 0x78fb, 0x792c, 0x7d46, 0x822c, 0x87e0, 0x8fd4, 0x9812,
- 0x98ef, 0x52c3, 0x62d4, 0x64a5, 0x6e24, 0x6f51,
- /* 0x5b */
- 0x767c, 0x8dcb, 0x91b1, 0x9262, 0x9aee, 0x9b43, 0x5023, 0x508d,
- 0x574a, 0x59a8, 0x5c28, 0x5e47, 0x5f77, 0x623f, 0x653e, 0x65b9,
- 0x65c1, 0x6609, 0x678b, 0x699c, 0x6ec2, 0x78c5, 0x7d21, 0x80aa,
- 0x8180, 0x822b, 0x82b3, 0x84a1, 0x868c, 0x8a2a, 0x8b17, 0x90a6,
- 0x9632, 0x9f90, 0x500d, 0x4ff3, 0xf963, 0x57f9, 0x5f98, 0x62dc,
- 0x6392, 0x676f, 0x6e43, 0x7119, 0x76c3, 0x80cc, 0x80da, 0x88f4,
- 0x88f5, 0x8919, 0x8ce0, 0x8f29, 0x914d, 0x966a, 0x4f2f, 0x4f70,
- 0x5e1b, 0x67cf, 0x6822, 0x767d, 0x767e, 0x9b44, 0x5e61, 0x6a0a,
- 0x7169, 0x71d4, 0x756a, 0xf964, 0x7e41, 0x8543, 0x85e9, 0x98dc,
- 0x4f10, 0x7b4f, 0x7f70, 0x95a5, 0x51e1, 0x5e06, 0x68b5, 0x6c3e,
- 0x6c4e, 0x6cdb, 0x72af, 0x7bc4, 0x8303, 0x6cd5, 0x743a, 0x50fb,
- 0x5288, 0x58c1, 0x64d8, 0x6a97, 0x74a7, 0x7656,
- /* 0x5c */
- 0x78a7, 0x8617, 0x95e2, 0x9739, 0xf965, 0x535e, 0x5f01, 0x8b8a,
- 0x8fa8, 0x8faf, 0x908a, 0x5225, 0x77a5, 0x9c49, 0x9f08, 0x4e19,
- 0x5002, 0x5175, 0x5c5b, 0x5e77, 0x661e, 0x663a, 0x67c4, 0x68c5,
- 0x70b3, 0x7501, 0x75c5, 0x79c9, 0x7add, 0x8f27, 0x9920, 0x9a08,
- 0x4fdd, 0x5821, 0x5831, 0x5bf6, 0x666e, 0x6b65, 0x6d11, 0x6e7a,
- 0x6f7d, 0x73e4, 0x752b, 0x83e9, 0x88dc, 0x8913, 0x8b5c, 0x8f14,
- 0x4f0f, 0x50d5, 0x5310, 0x535c, 0x5b93, 0x5fa9, 0x670d, 0x798f,
- 0x8179, 0x832f, 0x8514, 0x8907, 0x8986, 0x8f39, 0x8f3b, 0x99a5,
- 0x9c12, 0x672c, 0x4e76, 0x4ff8, 0x5949, 0x5c01, 0x5cef, 0x5cf0,
- 0x6367, 0x68d2, 0x70fd, 0x71a2, 0x742b, 0x7e2b, 0x84ec, 0x8702,
- 0x9022, 0x92d2, 0x9cf3, 0x4e0d, 0x4ed8, 0x4fef, 0x5085, 0x5256,
- 0x526f, 0x5426, 0x5490, 0x57e0, 0x592b, 0x5a66,
- /* 0x5d */
- 0x5b5a, 0x5b75, 0x5bcc, 0x5e9c, 0xf966, 0x6276, 0x6577, 0x65a7,
- 0x6d6e, 0x6ea5, 0x7236, 0x7b26, 0x7c3f, 0x7f36, 0x8150, 0x8151,
- 0x819a, 0x8240, 0x8299, 0x83a9, 0x8a03, 0x8ca0, 0x8ce6, 0x8cfb,
- 0x8d74, 0x8dba, 0x90e8, 0x91dc, 0x961c, 0x9644, 0x99d9, 0x9ce7,
- 0x5317, 0x5206, 0x5429, 0x5674, 0x58b3, 0x5954, 0x596e, 0x5fff,
- 0x61a4, 0x626e, 0x6610, 0x6c7e, 0x711a, 0x76c6, 0x7c89, 0x7cde,
- 0x7d1b, 0x82ac, 0x8cc1, 0x96f0, 0xf967, 0x4f5b, 0x5f17, 0x5f7f,
- 0x62c2, 0x5d29, 0x670b, 0x68da, 0x787c, 0x7e43, 0x9d6c, 0x4e15,
- 0x5099, 0x5315, 0x532a, 0x5351, 0x5983, 0x5a62, 0x5e87, 0x60b2,
- 0x618a, 0x6249, 0x6279, 0x6590, 0x6787, 0x69a7, 0x6bd4, 0x6bd6,
- 0x6bd7, 0x6bd8, 0x6cb8, 0xf968, 0x7435, 0x75fa, 0x7812, 0x7891,
- 0x79d5, 0x79d8, 0x7c83, 0x7dcb, 0x7fe1, 0x80a5,
- /* 0x5e */
- 0x813e, 0x81c2, 0x83f2, 0x871a, 0x88e8, 0x8ab9, 0x8b6c, 0x8cbb,
- 0x9119, 0x975e, 0x98db, 0x9f3b, 0x56ac, 0x5b2a, 0x5f6c, 0x658c,
- 0x6ab3, 0x6baf, 0x6d5c, 0x6ff1, 0x7015, 0x725d, 0x73ad, 0x8ca7,
- 0x8cd3, 0x983b, 0x6191, 0x6c37, 0x8058, 0x9a01, 0x4e4d, 0x4e8b,
- 0x4e9b, 0x4ed5, 0x4f3a, 0x4f3c, 0x4f7f, 0x4fdf, 0x50ff, 0x53f2,
- 0x53f8, 0x5506, 0x55e3, 0x56db, 0x58eb, 0x5962, 0x5a11, 0x5beb,
- 0x5bfa, 0x5c04, 0x5df3, 0x5e2b, 0x5f99, 0x601d, 0x6368, 0x659c,
- 0x65af, 0x67f6, 0x67fb, 0x68ad, 0x6b7b, 0x6c99, 0x6cd7, 0x6e23,
- 0x7009, 0x7345, 0x7802, 0x793e, 0x7940, 0x7960, 0x79c1, 0x7be9,
- 0x7d17, 0x7d72, 0x8086, 0x820d, 0x838e, 0x84d1, 0x86c7, 0x88df,
- 0x8a50, 0x8a5e, 0x8b1d, 0x8cdc, 0x8d66, 0x8fad, 0x90aa, 0x98fc,
- 0x99df, 0x9e9d, 0x524a, 0xf969, 0x6714, 0xf96a,
- /* 0x5f */
- 0x5098, 0x522a, 0x5c71, 0x6563, 0x6c55, 0x73ca, 0x7523, 0x759d,
- 0x7b97, 0x849c, 0x9178, 0x9730, 0x4e77, 0x6492, 0x6bba, 0x715e,
- 0x85a9, 0x4e09, 0xf96b, 0x6749, 0x68ee, 0x6e17, 0x829f, 0x8518,
- 0x886b, 0x63f7, 0x6f81, 0x9212, 0x98af, 0x4e0a, 0x50b7, 0x50cf,
- 0x511f, 0x5546, 0x55aa, 0x5617, 0x5b40, 0x5c19, 0x5ce0, 0x5e38,
- 0x5e8a, 0x5ea0, 0x5ec2, 0x60f3, 0x6851, 0x6a61, 0x6e58, 0x723d,
- 0x7240, 0x72c0, 0x76f8, 0x7965, 0x7bb1, 0x7fd4, 0x88f3, 0x89f4,
- 0x8a73, 0x8c61, 0x8cde, 0x971c, 0x585e, 0x74bd, 0x8cfd, 0x55c7,
- 0xf96c, 0x7a61, 0x7d22, 0x8272, 0x7272, 0x751f, 0x7525, 0xf96d,
- 0x7b19, 0x5885, 0x58fb, 0x5dbc, 0x5e8f, 0x5eb6, 0x5f90, 0x6055,
- 0x6292, 0x637f, 0x654d, 0x6691, 0x66d9, 0x66f8, 0x6816, 0x68f2,
- 0x7280, 0x745e, 0x7b6e, 0x7d6e, 0x7dd6, 0x7f72,
- /* 0x60 */
- 0x80e5, 0x8212, 0x85af, 0x897f, 0x8a93, 0x901d, 0x92e4, 0x9ecd,
- 0x9f20, 0x5915, 0x596d, 0x5e2d, 0x60dc, 0x6614, 0x6673, 0x6790,
- 0x6c50, 0x6dc5, 0x6f5f, 0x77f3, 0x78a9, 0x84c6, 0x91cb, 0x932b,
- 0x4ed9, 0x50ca, 0x5148, 0x5584, 0x5b0b, 0x5ba3, 0x6247, 0x657e,
- 0x65cb, 0x6e32, 0x717d, 0x7401, 0x7444, 0x7487, 0x74bf, 0x766c,
- 0x79aa, 0x7dda, 0x7e55, 0x7fa8, 0x817a, 0x81b3, 0x8239, 0x861a,
- 0x87ec, 0x8a75, 0x8de3, 0x9078, 0x9291, 0x9425, 0x994d, 0x9bae,
- 0x5368, 0x5c51, 0x6954, 0x6cc4, 0x6d29, 0x6e2b, 0x820c, 0x859b,
- 0x893b, 0x8a2d, 0x8aaa, 0x96ea, 0x9f67, 0x5261, 0x66b9, 0x6bb2,
- 0x7e96, 0x87fe, 0x8d0d, 0x9583, 0x965d, 0x651d, 0x6d89, 0x71ee,
- 0xf96e, 0x57ce, 0x59d3, 0x5bac, 0x6027, 0x60fa, 0x6210, 0x661f,
- 0x665f, 0x7329, 0x73f9, 0x76db, 0x7701, 0x7b6c,
- /* 0x61 */
- 0x8056, 0x8072, 0x8165, 0x8aa0, 0x9192, 0x4e16, 0x52e2, 0x6b72,
- 0x6d17, 0x7a05, 0x7b39, 0x7d30, 0xf96f, 0x8cb0, 0x53ec, 0x562f,
- 0x5851, 0x5bb5, 0x5c0f, 0x5c11, 0x5de2, 0x6240, 0x6383, 0x6414,
- 0x662d, 0x68b3, 0x6cbc, 0x6d88, 0x6eaf, 0x701f, 0x70a4, 0x71d2,
- 0x7526, 0x758f, 0x758e, 0x7619, 0x7b11, 0x7be0, 0x7c2b, 0x7d20,
- 0x7d39, 0x852c, 0x856d, 0x8607, 0x8a34, 0x900d, 0x9061, 0x90b5,
- 0x92b7, 0x97f6, 0x9a37, 0x4fd7, 0x5c6c, 0x675f, 0x6d91, 0x7c9f,
- 0x7e8c, 0x8b16, 0x8d16, 0x901f, 0x5b6b, 0x5dfd, 0x640d, 0x84c0,
- 0x905c, 0x98e1, 0x7387, 0x5b8b, 0x609a, 0x677e, 0x6dde, 0x8a1f,
- 0x8aa6, 0x9001, 0x980c, 0x5237, 0xf970, 0x7051, 0x788e, 0x9396,
- 0x8870, 0x91d7, 0x4fee, 0x53d7, 0x55fd, 0x56da, 0x5782, 0x58fd,
- 0x5ac2, 0x5b88, 0x5cab, 0x5cc0, 0x5e25, 0x6101,
- /* 0x62 */
- 0x620d, 0x624b, 0x6388, 0x641c, 0x6536, 0x6578, 0x6a39, 0x6b8a,
- 0x6c34, 0x6d19, 0x6f31, 0x71e7, 0x72e9, 0x7378, 0x7407, 0x74b2,
- 0x7626, 0x7761, 0x79c0, 0x7a57, 0x7aea, 0x7cb9, 0x7d8f, 0x7dac,
- 0x7e61, 0x7f9e, 0x8129, 0x8331, 0x8490, 0x84da, 0x85ea, 0x8896,
- 0x8ab0, 0x8b90, 0x8f38, 0x9042, 0x9083, 0x916c, 0x9296, 0x92b9,
- 0x968b, 0x96a7, 0x96a8, 0x96d6, 0x9700, 0x9808, 0x9996, 0x9ad3,
- 0x9b1a, 0x53d4, 0x587e, 0x5919, 0x5b70, 0x5bbf, 0x6dd1, 0x6f5a,
- 0x719f, 0x7421, 0x74b9, 0x8085, 0x83fd, 0x5de1, 0x5f87, 0x5faa,
- 0x6042, 0x65ec, 0x6812, 0x696f, 0x6a53, 0x6b89, 0x6d35, 0x6df3,
- 0x73e3, 0x76fe, 0x77ac, 0x7b4d, 0x7d14, 0x8123, 0x821c, 0x8340,
- 0x84f4, 0x8563, 0x8a62, 0x8ac4, 0x9187, 0x931e, 0x9806, 0x99b4,
- 0x620c, 0x8853, 0x8ff0, 0x9265, 0x5d07, 0x5d27,
- /* 0x63 */
- 0x5d69, 0x745f, 0x819d, 0x8768, 0x6fd5, 0x62fe, 0x7fd2, 0x8936,
- 0x8972, 0x4e1e, 0x4e58, 0x50e7, 0x52dd, 0x5347, 0x627f, 0x6607,
- 0x7e69, 0x8805, 0x965e, 0x4f8d, 0x5319, 0x5636, 0x59cb, 0x5aa4,
- 0x5c38, 0x5c4e, 0x5c4d, 0x5e02, 0x5f11, 0x6043, 0x65bd, 0x662f,
- 0x6642, 0x67be, 0x67f4, 0x731c, 0x77e2, 0x793a, 0x7fc5, 0x8494,
- 0x84cd, 0x8996, 0x8a66, 0x8a69, 0x8ae1, 0x8c55, 0x8c7a, 0x57f4,
- 0x5bd4, 0x5f0f, 0x606f, 0x62ed, 0x690d, 0x6b96, 0x6e5c, 0x7184,
- 0x7bd2, 0x8755, 0x8b58, 0x8efe, 0x98df, 0x98fe, 0x4f38, 0x4f81,
- 0x4fe1, 0x547b, 0x5a20, 0x5bb8, 0x613c, 0x65b0, 0x6668, 0x71fc,
- 0x7533, 0x795e, 0x7d33, 0x814e, 0x81e3, 0x8398, 0x85aa, 0x85ce,
- 0x8703, 0x8a0a, 0x8eab, 0x8f9b, 0xf971, 0x8fc5, 0x5931, 0x5ba4,
- 0x5be6, 0x6089, 0x5be9, 0x5c0b, 0x5fc3, 0x6c81,
- /* 0x64 */
- 0xf972, 0x6df1, 0x700b, 0x751a, 0x82af, 0x8af6, 0x4ec0, 0x5341,
- 0xf973, 0x96d9, 0x6c0f, 0x4e9e, 0x4fc4, 0x5152, 0x555e, 0x5a25,
- 0x5ce8, 0x6211, 0x7259, 0x82bd, 0x83aa, 0x86fe, 0x8859, 0x8a1d,
- 0x963f, 0x96c5, 0x9913, 0x9d09, 0x9d5d, 0x580a, 0x5cb3, 0x5dbd,
- 0x5e44, 0x60e1, 0x6115, 0x63e1, 0x6a02, 0x6e25, 0x9102, 0x9354,
- 0x984e, 0x9c10, 0x9f77, 0x5b89, 0x5cb8, 0x6309, 0x664f, 0x6848,
- 0x773c, 0x96c1, 0x978d, 0x9854, 0x9b9f, 0x65a1, 0x8b01, 0x8ecb,
- 0x95bc, 0x5535, 0x5ca9, 0x5dd6, 0x5eb5, 0x6697, 0x764c, 0x83f4,
- 0x95c7, 0x58d3, 0x62bc, 0x72ce, 0x9d28, 0x4ef0, 0x592e, 0x600f,
- 0x663b, 0x6b83, 0x79e7, 0x9d26, 0x5393, 0x54c0, 0x57c3, 0x5d16,
- 0x611b, 0x66d6, 0x6daf, 0x788d, 0x827e, 0x9698, 0x9744, 0x5384,
- 0x627c, 0x6396, 0x6db2, 0x7e0a, 0x814b, 0x984d,
- /* 0x65 */
- 0x6afb, 0x7f4c, 0x9daf, 0x9e1a, 0x4e5f, 0x503b, 0x51b6, 0x591c,
- 0x60f9, 0x63f6, 0x6930, 0x723a, 0x8036, 0xf974, 0x91ce, 0x5f31,
- 0xf975, 0xf976, 0x7d04, 0x82e5, 0x846f, 0x84bb, 0x85e5, 0x8e8d,
- 0xf977, 0x4f6f, 0xf978, 0xf979, 0x58e4, 0x5b43, 0x6059, 0x63da,
- 0x6518, 0x656d, 0x6698, 0xf97a, 0x694a, 0x6a23, 0x6d0b, 0x7001,
- 0x716c, 0x75d2, 0x760d, 0x79b3, 0x7a70, 0xf97b, 0x7f8a, 0xf97c,
- 0x8944, 0xf97d, 0x8b93, 0x91c0, 0x967d, 0xf97e, 0x990a, 0x5704,
- 0x5fa1, 0x65bc, 0x6f01, 0x7600, 0x79a6, 0x8a9e, 0x99ad, 0x9b5a,
- 0x9f6c, 0x5104, 0x61b6, 0x6291, 0x6a8d, 0x81c6, 0x5043, 0x5830,
- 0x5f66, 0x7109, 0x8a00, 0x8afa, 0x5b7c, 0x8616, 0x4ffa, 0x513c,
- 0x56b4, 0x5944, 0x63a9, 0x6df9, 0x5daa, 0x696d, 0x5186, 0x4e88,
- 0x4f59, 0xf97f, 0xf980, 0xf981, 0x5982, 0xf982,
- /* 0x66 */
- 0xf983, 0x6b5f, 0x6c5d, 0xf984, 0x74b5, 0x7916, 0xf985, 0x8207,
- 0x8245, 0x8339, 0x8f3f, 0x8f5d, 0xf986, 0x9918, 0xf987, 0xf988,
- 0xf989, 0x4ea6, 0xf98a, 0x57df, 0x5f79, 0x6613, 0xf98b, 0xf98c,
- 0x75ab, 0x7e79, 0x8b6f, 0xf98d, 0x9006, 0x9a5b, 0x56a5, 0x5827,
- 0x59f8, 0x5a1f, 0x5bb4, 0xf98e, 0x5ef6, 0xf98f, 0xf990, 0x6350,
- 0x633b, 0xf991, 0x693d, 0x6c87, 0x6cbf, 0x6d8e, 0x6d93, 0x6df5,
- 0x6f14, 0xf992, 0x70df, 0x7136, 0x7159, 0xf993, 0x71c3, 0x71d5,
- 0xf994, 0x784f, 0x786f, 0xf995, 0x7b75, 0x7de3, 0xf996, 0x7e2f,
- 0xf997, 0x884d, 0x8edf, 0xf998, 0xf999, 0xf99a, 0x925b, 0xf99b,
- 0x9cf6, 0xf99c, 0xf99d, 0xf99e, 0x6085, 0x6d85, 0xf99f, 0x71b1,
- 0xf9a0, 0xf9a1, 0x95b1, 0x53ad, 0xf9a2, 0xf9a3, 0xf9a4, 0x67d3,
- 0xf9a5, 0x708e, 0x7130, 0x7430, 0x8276, 0x82d2,
- /* 0x67 */
- 0xf9a6, 0x95bb, 0x9ae5, 0x9e7d, 0x66c4, 0xf9a7, 0x71c1, 0x8449,
- 0xf9a8, 0xf9a9, 0x584b, 0xf9aa, 0xf9ab, 0x5db8, 0x5f71, 0xf9ac,
- 0x6620, 0x668e, 0x6979, 0x69ae, 0x6c38, 0x6cf3, 0x6e36, 0x6f41,
- 0x6fda, 0x701b, 0x702f, 0x7150, 0x71df, 0x7370, 0xf9ad, 0x745b,
- 0xf9ae, 0x74d4, 0x76c8, 0x7a4e, 0x7e93, 0xf9af, 0xf9b0, 0x82f1,
- 0x8a60, 0x8fce, 0xf9b1, 0x9348, 0xf9b2, 0x9719, 0xf9b3, 0xf9b4,
- 0x4e42, 0x502a, 0xf9b5, 0x5208, 0x53e1, 0x66f3, 0x6c6d, 0x6fca,
- 0x730a, 0x777f, 0x7a62, 0x82ae, 0x85dd, 0x8602, 0xf9b6, 0x88d4,
- 0x8a63, 0x8b7d, 0x8c6b, 0xf9b7, 0x92b3, 0xf9b8, 0x9713, 0x9810,
- 0x4e94, 0x4f0d, 0x4fc9, 0x50b2, 0x5348, 0x543e, 0x5433, 0x55da,
- 0x5862, 0x58ba, 0x5967, 0x5a1b, 0x5be4, 0x609f, 0xf9b9, 0x61ca,
- 0x6556, 0x65ff, 0x6664, 0x68a7, 0x6c5a, 0x6fb3,
- /* 0x68 */
- 0x70cf, 0x71ac, 0x7352, 0x7b7d, 0x8708, 0x8aa4, 0x9c32, 0x9f07,
- 0x5c4b, 0x6c83, 0x7344, 0x7389, 0x923a, 0x6eab, 0x7465, 0x761f,
- 0x7a69, 0x7e15, 0x860a, 0x5140, 0x58c5, 0x64c1, 0x74ee, 0x7515,
- 0x7670, 0x7fc1, 0x9095, 0x96cd, 0x9954, 0x6e26, 0x74e6, 0x7aa9,
- 0x7aaa, 0x81e5, 0x86d9, 0x8778, 0x8a1b, 0x5a49, 0x5b8c, 0x5b9b,
- 0x68a1, 0x6900, 0x6d63, 0x73a9, 0x7413, 0x742c, 0x7897, 0x7de9,
- 0x7feb, 0x8118, 0x8155, 0x839e, 0x8c4c, 0x962e, 0x9811, 0x66f0,
- 0x5f80, 0x65fa, 0x6789, 0x6c6a, 0x738b, 0x502d, 0x5a03, 0x6b6a,
- 0x77ee, 0x5916, 0x5d6c, 0x5dcd, 0x7325, 0x754f, 0xf9ba, 0xf9bb,
- 0x50e5, 0x51f9, 0x582f, 0x592d, 0x5996, 0x59da, 0x5be5, 0xf9bc,
- 0xf9bd, 0x5da2, 0x62d7, 0x6416, 0x6493, 0x64fe, 0xf9be, 0x66dc,
- 0xf9bf, 0x6a48, 0xf9c0, 0x71ff, 0x7464, 0xf9c1,
- /* 0x69 */
- 0x7a88, 0x7aaf, 0x7e47, 0x7e5e, 0x8000, 0x8170, 0xf9c2, 0x87ef,
- 0x8981, 0x8b20, 0x9059, 0xf9c3, 0x9080, 0x9952, 0x617e, 0x6b32,
- 0x6d74, 0x7e1f, 0x8925, 0x8fb1, 0x4fd1, 0x50ad, 0x5197, 0x52c7,
- 0x57c7, 0x5889, 0x5bb9, 0x5eb8, 0x6142, 0x6995, 0x6d8c, 0x6e67,
- 0x6eb6, 0x7194, 0x7462, 0x7528, 0x752c, 0x8073, 0x8338, 0x84c9,
- 0x8e0a, 0x9394, 0x93de, 0xf9c4, 0x4e8e, 0x4f51, 0x5076, 0x512a,
- 0x53c8, 0x53cb, 0x53f3, 0x5b87, 0x5bd3, 0x5c24, 0x611a, 0x6182,
- 0x65f4, 0x725b, 0x7397, 0x7440, 0x76c2, 0x7950, 0x7991, 0x79b9,
- 0x7d06, 0x7fbd, 0x828b, 0x85d5, 0x865e, 0x8fc2, 0x9047, 0x90f5,
- 0x91ea, 0x9685, 0x96e8, 0x96e9, 0x52d6, 0x5f67, 0x65ed, 0x6631,
- 0x682f, 0x715c, 0x7a36, 0x90c1, 0x980a, 0x4e91, 0xf9c5, 0x6a52,
- 0x6b9e, 0x6f90, 0x7189, 0x8018, 0x82b8, 0x8553,
- /* 0x6a */
- 0x904b, 0x9695, 0x96f2, 0x97fb, 0x851a, 0x9b31, 0x4e90, 0x718a,
- 0x96c4, 0x5143, 0x539f, 0x54e1, 0x5713, 0x5712, 0x57a3, 0x5a9b,
- 0x5ac4, 0x5bc3, 0x6028, 0x613f, 0x63f4, 0x6c85, 0x6d39, 0x6e72,
- 0x6e90, 0x7230, 0x733f, 0x7457, 0x82d1, 0x8881, 0x8f45, 0x9060,
- 0xf9c6, 0x9662, 0x9858, 0x9d1b, 0x6708, 0x8d8a, 0x925e, 0x4f4d,
- 0x5049, 0x50de, 0x5371, 0x570d, 0x59d4, 0x5a01, 0x5c09, 0x6170,
- 0x6690, 0x6e2d, 0x7232, 0x744b, 0x7def, 0x80c3, 0x840e, 0x8466,
- 0x853f, 0x875f, 0x885b, 0x8918, 0x8b02, 0x9055, 0x97cb, 0x9b4f,
- 0x4e73, 0x4f91, 0x5112, 0x516a, 0xf9c7, 0x552f, 0x55a9, 0x5b7a,
- 0x5ba5, 0x5e7c, 0x5e7d, 0x5ebe, 0x60a0, 0x60df, 0x6108, 0x6109,
- 0x63c4, 0x6538, 0x6709, 0xf9c8, 0x67d4, 0x67da, 0xf9c9, 0x6961,
- 0x6962, 0x6cb9, 0x6d27, 0xf9ca, 0x6e38, 0xf9cb,
- /* 0x6b */
- 0x6fe1, 0x7336, 0x7337, 0xf9cc, 0x745c, 0x7531, 0xf9cd, 0x7652,
- 0xf9ce, 0xf9cf, 0x7dad, 0x81fe, 0x8438, 0x88d5, 0x8a98, 0x8adb,
- 0x8aed, 0x8e30, 0x8e42, 0x904a, 0x903e, 0x907a, 0x9149, 0x91c9,
- 0x936e, 0xf9d0, 0xf9d1, 0x5809, 0xf9d2, 0x6bd3, 0x8089, 0x80b2,
- 0xf9d3, 0xf9d4, 0x5141, 0x596b, 0x5c39, 0xf9d5, 0xf9d6, 0x6f64,
- 0x73a7, 0x80e4, 0x8d07, 0xf9d7, 0x9217, 0x958f, 0xf9d8, 0xf9d9,
- 0xf9da, 0xf9db, 0x807f, 0x620e, 0x701c, 0x7d68, 0x878d, 0xf9dc,
- 0x57a0, 0x6069, 0x6147, 0x6bb7, 0x8abe, 0x9280, 0x96b1, 0x4e59,
- 0x541f, 0x6deb, 0x852d, 0x9670, 0x97f3, 0x98ee, 0x63d6, 0x6ce3,
- 0x9091, 0x51dd, 0x61c9, 0x81ba, 0x9df9, 0x4f9d, 0x501a, 0x5100,
- 0x5b9c, 0x610f, 0x61ff, 0x64ec, 0x6905, 0x6bc5, 0x7591, 0x77e3,
- 0x7fa9, 0x8264, 0x858f, 0x87fb, 0x8863, 0x8abc,
- /* 0x6c */
- 0x8b70, 0x91ab, 0x4e8c, 0x4ee5, 0x4f0a, 0xf9dd, 0xf9de, 0x5937,
- 0x59e8, 0xf9df, 0x5df2, 0x5f1b, 0x5f5b, 0x6021, 0xf9e0, 0xf9e1,
- 0xf9e2, 0xf9e3, 0x723e, 0x73e5, 0xf9e4, 0x7570, 0x75cd, 0xf9e5,
- 0x79fb, 0xf9e6, 0x800c, 0x8033, 0x8084, 0x82e1, 0x8351, 0xf9e7,
- 0xf9e8, 0x8cbd, 0x8cb3, 0x9087, 0xf9e9, 0xf9ea, 0x98f4, 0x990c,
- 0xf9eb, 0xf9ec, 0x7037, 0x76ca, 0x7fca, 0x7fcc, 0x7ffc, 0x8b1a,
- 0x4eba, 0x4ec1, 0x5203, 0x5370, 0xf9ed, 0x54bd, 0x56e0, 0x59fb,
- 0x5bc5, 0x5f15, 0x5fcd, 0x6e6e, 0xf9ee, 0xf9ef, 0x7d6a, 0x8335,
- 0xf9f0, 0x8693, 0x8a8d, 0xf9f1, 0x976d, 0x9777, 0xf9f2, 0xf9f3,
- 0x4e00, 0x4f5a, 0x4f7e, 0x58f9, 0x65e5, 0x6ea2, 0x9038, 0x93b0,
- 0x99b9, 0x4efb, 0x58ec, 0x598a, 0x59d9, 0x6041, 0xf9f4, 0xf9f5,
- 0x7a14, 0xf9f6, 0x834f, 0x8cc3, 0x5165, 0x5344,
- /* 0x6d */
- 0xf9f7, 0xf9f8, 0xf9f9, 0x4ecd, 0x5269, 0x5b55, 0x82bf, 0x4ed4,
- 0x523a, 0x54a8, 0x59c9, 0x59ff, 0x5b50, 0x5b57, 0x5b5c, 0x6063,
- 0x6148, 0x6ecb, 0x7099, 0x716e, 0x7386, 0x74f7, 0x75b5, 0x78c1,
- 0x7d2b, 0x8005, 0x81ea, 0x8328, 0x8517, 0x85c9, 0x8aee, 0x8cc7,
- 0x96cc, 0x4f5c, 0x52fa, 0x56bc, 0x65ab, 0x6628, 0x707c, 0x70b8,
- 0x7235, 0x7dbd, 0x828d, 0x914c, 0x96c0, 0x9d72, 0x5b71, 0x68e7,
- 0x6b98, 0x6f7a, 0x76de, 0x5c91, 0x66ab, 0x6f5b, 0x7bb4, 0x7c2a,
- 0x8836, 0x96dc, 0x4e08, 0x4ed7, 0x5320, 0x5834, 0x58bb, 0x58ef,
- 0x596c, 0x5c07, 0x5e33, 0x5e84, 0x5f35, 0x638c, 0x66b2, 0x6756,
- 0x6a1f, 0x6aa3, 0x6b0c, 0x6f3f, 0x7246, 0xf9fa, 0x7350, 0x748b,
- 0x7ae0, 0x7ca7, 0x8178, 0x81df, 0x81e7, 0x838a, 0x846c, 0x8523,
- 0x8594, 0x85cf, 0x88dd, 0x8d13, 0x91ac, 0x9577,
- /* 0x6e */
- 0x969c, 0x518d, 0x54c9, 0x5728, 0x5bb0, 0x624d, 0x6750, 0x683d,
- 0x6893, 0x6e3d, 0x6ed3, 0x707d, 0x7e21, 0x88c1, 0x8ca1, 0x8f09,
- 0x9f4b, 0x9f4e, 0x722d, 0x7b8f, 0x8acd, 0x931a, 0x4f47, 0x4f4e,
- 0x5132, 0x5480, 0x59d0, 0x5e95, 0x62b5, 0x6775, 0x696e, 0x6a17,
- 0x6cae, 0x6e1a, 0x72d9, 0x732a, 0x75bd, 0x7bb8, 0x7d35, 0x82e7,
- 0x83f9, 0x8457, 0x85f7, 0x8a5b, 0x8caf, 0x8e87, 0x9019, 0x90b8,
- 0x96ce, 0x9f5f, 0x52e3, 0x540a, 0x5ae1, 0x5bc2, 0x6458, 0x6575,
- 0x6ef4, 0x72c4, 0xf9fb, 0x7684, 0x7a4d, 0x7b1b, 0x7c4d, 0x7e3e,
- 0x7fdf, 0x837b, 0x8b2b, 0x8cca, 0x8d64, 0x8de1, 0x8e5f, 0x8fea,
- 0x8ff9, 0x9069, 0x93d1, 0x4f43, 0x4f7a, 0x50b3, 0x5168, 0x5178,
- 0x524d, 0x526a, 0x5861, 0x587c, 0x5960, 0x5c08, 0x5c55, 0x5edb,
- 0x609b, 0x6230, 0x6813, 0x6bbf, 0x6c08, 0x6fb1,
- /* 0x6f */
- 0x714e, 0x7420, 0x7530, 0x7538, 0x7551, 0x7672, 0x7b4c, 0x7b8b,
- 0x7bad, 0x7bc6, 0x7e8f, 0x8a6e, 0x8f3e, 0x8f49, 0x923f, 0x9293,
- 0x9322, 0x942b, 0x96fb, 0x985a, 0x986b, 0x991e, 0x5207, 0x622a,
- 0x6298, 0x6d59, 0x7664, 0x7aca, 0x7bc0, 0x7d76, 0x5360, 0x5cbe,
- 0x5e97, 0x6f38, 0x70b9, 0x7c98, 0x9711, 0x9b8e, 0x9ede, 0x63a5,
- 0x647a, 0x8776, 0x4e01, 0x4e95, 0x4ead, 0x505c, 0x5075, 0x5448,
- 0x59c3, 0x5b9a, 0x5e40, 0x5ead, 0x5ef7, 0x5f81, 0x60c5, 0x633a,
- 0x653f, 0x6574, 0x65cc, 0x6676, 0x6678, 0x67fe, 0x6968, 0x6a89,
- 0x6b63, 0x6c40, 0x6dc0, 0x6de8, 0x6e1f, 0x6e5e, 0x701e, 0x70a1,
- 0x738e, 0x73fd, 0x753a, 0x775b, 0x7887, 0x798e, 0x7a0b, 0x7a7d,
- 0x7cbe, 0x7d8e, 0x8247, 0x8a02, 0x8aea, 0x8c9e, 0x912d, 0x914a,
- 0x91d8, 0x9266, 0x92cc, 0x9320, 0x9706, 0x9756,
- /* 0x70 */
- 0x975c, 0x9802, 0x9f0e, 0x5236, 0x5291, 0x557c, 0x5824, 0x5e1d,
- 0x5f1f, 0x608c, 0x63d0, 0x68af, 0x6fdf, 0x796d, 0x7b2c, 0x81cd,
- 0x85ba, 0x88fd, 0x8af8, 0x8e44, 0x918d, 0x9664, 0x969b, 0x973d,
- 0x984c, 0x9f4a, 0x4fce, 0x5146, 0x51cb, 0x52a9, 0x5632, 0x5f14,
- 0x5f6b, 0x63aa, 0x64cd, 0x65e9, 0x6641, 0x66fa, 0x66f9, 0x671d,
- 0x689d, 0x68d7, 0x69fd, 0x6f15, 0x6f6e, 0x7167, 0x71e5, 0x722a,
- 0x74aa, 0x773a, 0x7956, 0x795a, 0x79df, 0x7a20, 0x7a95, 0x7c97,
- 0x7cdf, 0x7d44, 0x7e70, 0x8087, 0x85fb, 0x86a4, 0x8a54, 0x8abf,
- 0x8d99, 0x8e81, 0x9020, 0x906d, 0x91e3, 0x963b, 0x96d5, 0x9ce5,
- 0x65cf, 0x7c07, 0x8db3, 0x93c3, 0x5b58, 0x5c0a, 0x5352, 0x62d9,
- 0x731d, 0x5027, 0x5b97, 0x5f9e, 0x60b0, 0x616b, 0x68d5, 0x6dd9,
- 0x742e, 0x7a2e, 0x7d42, 0x7d9c, 0x7e31, 0x816b,
- /* 0x71 */
- 0x8e2a, 0x8e35, 0x937e, 0x9418, 0x4f50, 0x5750, 0x5de6, 0x5ea7,
- 0x632b, 0x7f6a, 0x4e3b, 0x4f4f, 0x4f8f, 0x505a, 0x59dd, 0x80c4,
- 0x546a, 0x5468, 0x55fe, 0x594f, 0x5b99, 0x5dde, 0x5eda, 0x665d,
- 0x6731, 0x67f1, 0x682a, 0x6ce8, 0x6d32, 0x6e4a, 0x6f8d, 0x70b7,
- 0x73e0, 0x7587, 0x7c4c, 0x7d02, 0x7d2c, 0x7da2, 0x821f, 0x86db,
- 0x8a3b, 0x8a85, 0x8d70, 0x8e8a, 0x8f33, 0x9031, 0x914e, 0x9152,
- 0x9444, 0x99d0, 0x7af9, 0x7ca5, 0x4fca, 0x5101, 0x51c6, 0x57c8,
- 0x5bef, 0x5cfb, 0x6659, 0x6a3d, 0x6d5a, 0x6e96, 0x6fec, 0x710c,
- 0x756f, 0x7ae3, 0x8822, 0x9021, 0x9075, 0x96cb, 0x99ff, 0x8301,
- 0x4e2d, 0x4ef2, 0x8846, 0x91cd, 0x537d, 0x6adb, 0x696b, 0x6c41,
- 0x847a, 0x589e, 0x618e, 0x66fe, 0x62ef, 0x70dd, 0x7511, 0x75c7,
- 0x7e52, 0x84b8, 0x8b49, 0x8d08, 0x4e4b, 0x53ea,
- /* 0x72 */
- 0x54ab, 0x5730, 0x5740, 0x5fd7, 0x6301, 0x6307, 0x646f, 0x652f,
- 0x65e8, 0x667a, 0x679d, 0x67b3, 0x6b62, 0x6c60, 0x6c9a, 0x6f2c,
- 0x77e5, 0x7825, 0x7949, 0x7957, 0x7d19, 0x80a2, 0x8102, 0x81f3,
- 0x829d, 0x82b7, 0x8718, 0x8a8c, 0xf9fc, 0x8d04, 0x8dbe, 0x9072,
- 0x76f4, 0x7a19, 0x7a37, 0x7e54, 0x8077, 0x5507, 0x55d4, 0x5875,
- 0x632f, 0x6422, 0x6649, 0x664b, 0x686d, 0x699b, 0x6b84, 0x6d25,
- 0x6eb1, 0x73cd, 0x7468, 0x74a1, 0x755b, 0x75b9, 0x76e1, 0x771e,
- 0x778b, 0x79e6, 0x7e09, 0x7e1d, 0x81fb, 0x852f, 0x8897, 0x8a3a,
- 0x8cd1, 0x8eeb, 0x8fb0, 0x9032, 0x93ad, 0x9663, 0x9673, 0x9707,
- 0x4f84, 0x53f1, 0x59ea, 0x5ac9, 0x5e19, 0x684e, 0x74c6, 0x75be,
- 0x79e9, 0x7a92, 0x81a3, 0x86ed, 0x8cea, 0x8dcc, 0x8fed, 0x659f,
- 0x6715, 0xf9fd, 0x57f7, 0x6f57, 0x7ddd, 0x8f2f,
- /* 0x73 */
- 0x93f6, 0x96c6, 0x5fb5, 0x61f2, 0x6f84, 0x4e14, 0x4f98, 0x501f,
- 0x53c9, 0x55df, 0x5d6f, 0x5dee, 0x6b21, 0x6b64, 0x78cb, 0x7b9a,
- 0xf9fe, 0x8e49, 0x8eca, 0x906e, 0x6349, 0x643e, 0x7740, 0x7a84,
- 0x932f, 0x947f, 0x9f6a, 0x64b0, 0x6faf, 0x71e6, 0x74a8, 0x74da,
- 0x7ac4, 0x7c12, 0x7e82, 0x7cb2, 0x7e98, 0x8b9a, 0x8d0a, 0x947d,
- 0x9910, 0x994c, 0x5239, 0x5bdf, 0x64e6, 0x672d, 0x7d2e, 0x50ed,
- 0x53c3, 0x5879, 0x6158, 0x6159, 0x61fa, 0x65ac, 0x7ad9, 0x8b92,
- 0x8b96, 0x5009, 0x5021, 0x5275, 0x5531, 0x5a3c, 0x5ee0, 0x5f70,
- 0x6134, 0x655e, 0x660c, 0x6636, 0x66a2, 0x69cd, 0x6ec4, 0x6f32,
- 0x7316, 0x7621, 0x7a93, 0x8139, 0x8259, 0x83d6, 0x84bc, 0x50b5,
- 0x57f0, 0x5bc0, 0x5be8, 0x5f69, 0x63a1, 0x7826, 0x7db5, 0x83dc,
- 0x8521, 0x91c7, 0x91f5, 0x518a, 0x67f5, 0x7b56,
- /* 0x74 */
- 0x8cac, 0x51c4, 0x59bb, 0x60bd, 0x8655, 0x501c, 0xf9ff, 0x5254,
- 0x5c3a, 0x617d, 0x621a, 0x62d3, 0x64f2, 0x65a5, 0x6ecc, 0x7620,
- 0x810a, 0x8e60, 0x965f, 0x96bb, 0x4edf, 0x5343, 0x5598, 0x5929,
- 0x5ddd, 0x64c5, 0x6cc9, 0x6dfa, 0x7394, 0x7a7f, 0x821b, 0x85a6,
- 0x8ce4, 0x8e10, 0x9077, 0x91e7, 0x95e1, 0x9621, 0x97c6, 0x51f8,
- 0x54f2, 0x5586, 0x5fb9, 0x64a4, 0x6f88, 0x7db4, 0x8f1f, 0x8f4d,
- 0x9435, 0x50c9, 0x5c16, 0x6cbe, 0x6dfb, 0x751b, 0x77bb, 0x7c3d,
- 0x7c64, 0x8a79, 0x8ac2, 0x581e, 0x59be, 0x5e16, 0x6377, 0x7252,
- 0x758a, 0x776b, 0x8adc, 0x8cbc, 0x8f12, 0x5ef3, 0x6674, 0x6df8,
- 0x807d, 0x83c1, 0x8acb, 0x9751, 0x9bd6, 0xfa00, 0x5243, 0x66ff,
- 0x6d95, 0x6eef, 0x7de0, 0x8ae6, 0x902e, 0x905e, 0x9ad4, 0x521d,
- 0x527f, 0x54e8, 0x6194, 0x6284, 0x62db, 0x68a2,
- /* 0x75 */
- 0x6912, 0x695a, 0x6a35, 0x7092, 0x7126, 0x785d, 0x7901, 0x790e,
- 0x79d2, 0x7a0d, 0x8096, 0x8278, 0x82d5, 0x8349, 0x8549, 0x8c82,
- 0x8d85, 0x9162, 0x918b, 0x91ae, 0x4fc3, 0x56d1, 0x71ed, 0x77d7,
- 0x8700, 0x89f8, 0x5bf8, 0x5fd6, 0x6751, 0x90a8, 0x53e2, 0x585a,
- 0x5bf5, 0x60a4, 0x6181, 0x6460, 0x7e3d, 0x8070, 0x8525, 0x9283,
- 0x64ae, 0x50ac, 0x5d14, 0x6700, 0x589c, 0x62bd, 0x63a8, 0x690e,
- 0x6978, 0x6a1e, 0x6e6b, 0x76ba, 0x79cb, 0x82bb, 0x8429, 0x8acf,
- 0x8da8, 0x8ffd, 0x9112, 0x914b, 0x919c, 0x9310, 0x9318, 0x939a,
- 0x96db, 0x9a36, 0x9c0d, 0x4e11, 0x755c, 0x795d, 0x7afa, 0x7b51,
- 0x7bc9, 0x7e2e, 0x84c4, 0x8e59, 0x8e74, 0x8ef8, 0x9010, 0x6625,
- 0x693f, 0x7443, 0x51fa, 0x672e, 0x9edc, 0x5145, 0x5fe0, 0x6c96,
- 0x87f2, 0x885d, 0x8877, 0x60b4, 0x81b5, 0x8403,
- /* 0x76 */
- 0x8d05, 0x53d6, 0x5439, 0x5634, 0x5a36, 0x5c31, 0x708a, 0x7fe0,
- 0x805a, 0x8106, 0x81ed, 0x8da3, 0x9189, 0x9a5f, 0x9df2, 0x5074,
- 0x4ec4, 0x53a0, 0x60fb, 0x6e2c, 0x5c64, 0x4f88, 0x5024, 0x55e4,
- 0x5cd9, 0x5e5f, 0x6065, 0x6894, 0x6cbb, 0x6dc4, 0x71be, 0x75d4,
- 0x75f4, 0x7661, 0x7a1a, 0x7a49, 0x7dc7, 0x7dfb, 0x7f6e, 0x81f4,
- 0x86a9, 0x8f1c, 0x96c9, 0x99b3, 0x9f52, 0x5247, 0x52c5, 0x98ed,
- 0x89aa, 0x4e03, 0x67d2, 0x6f06, 0x4fb5, 0x5be2, 0x6795, 0x6c88,
- 0x6d78, 0x741b, 0x7827, 0x91dd, 0x937c, 0x87c4, 0x79e4, 0x7a31,
- 0x5feb, 0x4ed6, 0x54a4, 0x553e, 0x58ae, 0x59a5, 0x60f0, 0x6253,
- 0x62d6, 0x6736, 0x6955, 0x8235, 0x9640, 0x99b1, 0x99dd, 0x502c,
- 0x5353, 0x5544, 0x577c, 0xfa01, 0x6258, 0xfa02, 0x64e2, 0x666b,
- 0x67dd, 0x6fc1, 0x6fef, 0x7422, 0x7438, 0x8a17,
- /* 0x77 */
- 0x9438, 0x5451, 0x5606, 0x5766, 0x5f48, 0x619a, 0x6b4e, 0x7058,
- 0x70ad, 0x7dbb, 0x8a95, 0x596a, 0x812b, 0x63a2, 0x7708, 0x803d,
- 0x8caa, 0x5854, 0x642d, 0x69bb, 0x5b95, 0x5e11, 0x6e6f, 0xfa03,
- 0x8569, 0x514c, 0x53f0, 0x592a, 0x6020, 0x614b, 0x6b86, 0x6c70,
- 0x6cf0, 0x7b1e, 0x80ce, 0x82d4, 0x8dc6, 0x90b0, 0x98b1, 0xfa04,
- 0x64c7, 0x6fa4, 0x6491, 0x6504, 0x514e, 0x5410, 0x571f, 0x8a0e,
- 0x615f, 0x6876, 0xfa05, 0x75db, 0x7b52, 0x7d71, 0x901a, 0x5806,
- 0x69cc, 0x817f, 0x892a, 0x9000, 0x9839, 0x5078, 0x5957, 0x59ac,
- 0x6295, 0x900f, 0x9b2a, 0x615d, 0x7279, 0x95d6, 0x5761, 0x5a46,
- 0x5df4, 0x628a, 0x64ad, 0x64fa, 0x6777, 0x6ce2, 0x6d3e, 0x722c,
- 0x7436, 0x7834, 0x7f77, 0x82ad, 0x8ddb, 0x9817, 0x5224, 0x5742,
- 0x677f, 0x7248, 0x74e3, 0x8ca9, 0x8fa6, 0x9211,
- /* 0x78 */
- 0x962a, 0x516b, 0x53ed, 0x634c, 0x4f69, 0x5504, 0x6096, 0x6557,
- 0x6c9b, 0x6d7f, 0x724c, 0x72fd, 0x7a17, 0x8987, 0x8c9d, 0x5f6d,
- 0x6f8e, 0x70f9, 0x81a8, 0x610e, 0x4fbf, 0x504f, 0x6241, 0x7247,
- 0x7bc7, 0x7de8, 0x7fe9, 0x904d, 0x97ad, 0x9a19, 0x8cb6, 0x576a,
- 0x5e73, 0x67b0, 0x840d, 0x8a55, 0x5420, 0x5b16, 0x5e63, 0x5ee2,
- 0x5f0a, 0x6583, 0x80ba, 0x853d, 0x9589, 0x965b, 0x4f48, 0x5305,
- 0x530d, 0x530f, 0x5486, 0x54fa, 0x5703, 0x5e03, 0x6016, 0x629b,
- 0x62b1, 0x6355, 0xfa06, 0x6ce1, 0x6d66, 0x75b1, 0x7832, 0x80de,
- 0x812f, 0x82de, 0x8461, 0x84b2, 0x888d, 0x8912, 0x900b, 0x92ea,
- 0x98fd, 0x9b91, 0x5e45, 0x66b4, 0x66dd, 0x7011, 0x7206, 0xfa07,
- 0x4ff5, 0x527d, 0x5f6a, 0x6153, 0x6753, 0x6a19, 0x6f02, 0x74e2,
- 0x7968, 0x8868, 0x8c79, 0x98c7, 0x98c4, 0x9a43,
- /* 0x79 */
- 0x54c1, 0x7a1f, 0x6953, 0x8af7, 0x8c4a, 0x98a8, 0x99ae, 0x5f7c,
- 0x62ab, 0x75b2, 0x76ae, 0x88ab, 0x907f, 0x9642, 0x5339, 0x5f3c,
- 0x5fc5, 0x6ccc, 0x73cc, 0x7562, 0x758b, 0x7b46, 0x82fe, 0x999d,
- 0x4e4f, 0x903c, 0x4e0b, 0x4f55, 0x53a6, 0x590f, 0x5ec8, 0x6630,
- 0x6cb3, 0x7455, 0x8377, 0x8766, 0x8cc0, 0x9050, 0x971e, 0x9c15,
- 0x58d1, 0x5b78, 0x8650, 0x8b14, 0x9db4, 0x5bd2, 0x6068, 0x608d,
- 0x65f1, 0x6c57, 0x6f22, 0x6fa3, 0x701a, 0x7f55, 0x7ff0, 0x9591,
- 0x9592, 0x9650, 0x97d3, 0x5272, 0x8f44, 0x51fd, 0x542b, 0x54b8,
- 0x5563, 0x558a, 0x6abb, 0x6db5, 0x7dd8, 0x8266, 0x929c, 0x9677,
- 0x9e79, 0x5408, 0x54c8, 0x76d2, 0x86e4, 0x95a4, 0x95d4, 0x965c,
- 0x4ea2, 0x4f09, 0x59ee, 0x5ae6, 0x5df7, 0x6052, 0x6297, 0x676d,
- 0x6841, 0x6c86, 0x6e2f, 0x7f38, 0x809b, 0x822a,
- /* 0x7a */
- 0xfa08, 0xfa09, 0x9805, 0x4ea5, 0x5055, 0x54b3, 0x5793, 0x595a,
- 0x5b69, 0x5bb3, 0x61c8, 0x6977, 0x6d77, 0x7023, 0x87f9, 0x89e3,
- 0x8a72, 0x8ae7, 0x9082, 0x99ed, 0x9ab8, 0x52be, 0x6838, 0x5016,
- 0x5e78, 0x674f, 0x8347, 0x884c, 0x4eab, 0x5411, 0x56ae, 0x73e6,
- 0x9115, 0x97ff, 0x9909, 0x9957, 0x9999, 0x5653, 0x589f, 0x865b,
- 0x8a31, 0x61b2, 0x6af6, 0x737b, 0x8ed2, 0x6b47, 0x96aa, 0x9a57,
- 0x5955, 0x7200, 0x8d6b, 0x9769, 0x4fd4, 0x5cf4, 0x5f26, 0x61f8,
- 0x665b, 0x6ceb, 0x70ab, 0x7384, 0x73b9, 0x73fe, 0x7729, 0x774d,
- 0x7d43, 0x7d62, 0x7e23, 0x8237, 0x8852, 0xfa0a, 0x8ce2, 0x9249,
- 0x986f, 0x5b51, 0x7a74, 0x8840, 0x9801, 0x5acc, 0x4fe0, 0x5354,
- 0x593e, 0x5cfd, 0x633e, 0x6d79, 0x72f9, 0x8105, 0x8107, 0x83a2,
- 0x92cf, 0x9830, 0x4ea8, 0x5144, 0x5211, 0x578b,
- /* 0x7b */
- 0x5f62, 0x6cc2, 0x6ece, 0x7005, 0x7050, 0x70af, 0x7192, 0x73e9,
- 0x7469, 0x834a, 0x87a2, 0x8861, 0x9008, 0x90a2, 0x93a3, 0x99a8,
- 0x516e, 0x5f57, 0x60e0, 0x6167, 0x66b3, 0x8559, 0x8e4a, 0x91af,
- 0x978b, 0x4e4e, 0x4e92, 0x547c, 0x58d5, 0x58fa, 0x597d, 0x5cb5,
- 0x5f27, 0x6236, 0x6248, 0x660a, 0x6667, 0x6beb, 0x6d69, 0x6dcf,
- 0x6e56, 0x6ef8, 0x6f94, 0x6fe0, 0x6fe9, 0x705d, 0x72d0, 0x7425,
- 0x745a, 0x74e0, 0x7693, 0x795c, 0x7cca, 0x7e1e, 0x80e1, 0x82a6,
- 0x846b, 0x84bf, 0x864e, 0x865f, 0x8774, 0x8b77, 0x8c6a, 0x93ac,
- 0x9800, 0x9865, 0x60d1, 0x6216, 0x9177, 0x5a5a, 0x660f, 0x6df7,
- 0x6e3e, 0x743f, 0x9b42, 0x5ffd, 0x60da, 0x7b0f, 0x54c4, 0x5f18,
- 0x6c5e, 0x6cd3, 0x6d2a, 0x70d8, 0x7d05, 0x8679, 0x8a0c, 0x9d3b,
- 0x5316, 0x548c, 0x5b05, 0x6a3a, 0x706b, 0x7575,
- /* 0x7c */
- 0x798d, 0x79be, 0x82b1, 0x83ef, 0x8a71, 0x8b41, 0x8ca8, 0x9774,
- 0xfa0b, 0x64f4, 0x652b, 0x78ba, 0x78bb, 0x7a6b, 0x4e38, 0x559a,
- 0x5950, 0x5ba6, 0x5e7b, 0x60a3, 0x63db, 0x6b61, 0x6665, 0x6853,
- 0x6e19, 0x7165, 0x74b0, 0x7d08, 0x9084, 0x9a69, 0x9c25, 0x6d3b,
- 0x6ed1, 0x733e, 0x8c41, 0x95ca, 0x51f0, 0x5e4c, 0x5fa8, 0x604d,
- 0x60f6, 0x6130, 0x614c, 0x6643, 0x6644, 0x69a5, 0x6cc1, 0x6e5f,
- 0x6ec9, 0x6f62, 0x714c, 0x749c, 0x7687, 0x7bc1, 0x7c27, 0x8352,
- 0x8757, 0x9051, 0x968d, 0x9ec3, 0x532f, 0x56de, 0x5efb, 0x5f8a,
- 0x6062, 0x6094, 0x61f7, 0x6666, 0x6703, 0x6a9c, 0x6dee, 0x6fae,
- 0x7070, 0x736a, 0x7e6a, 0x81be, 0x8334, 0x86d4, 0x8aa8, 0x8cc4,
- 0x5283, 0x7372, 0x5b96, 0x6a6b, 0x9404, 0x54ee, 0x5686, 0x5b5d,
- 0x6548, 0x6585, 0x66c9, 0x689f, 0x6d8d, 0x6dc6,
- /* 0x7d */
- 0x723b, 0x80b4, 0x9175, 0x9a4d, 0x4faf, 0x5019, 0x539a, 0x540e,
- 0x543c, 0x5589, 0x55c5, 0x5e3f, 0x5f8c, 0x673d, 0x7166, 0x73dd,
- 0x9005, 0x52db, 0x52f3, 0x5864, 0x58ce, 0x7104, 0x718f, 0x71fb,
- 0x85b0, 0x8a13, 0x6688, 0x85a8, 0x55a7, 0x6684, 0x714a, 0x8431,
- 0x5349, 0x5599, 0x6bc1, 0x5f59, 0x5fbd, 0x63ee, 0x6689, 0x7147,
- 0x8af1, 0x8f1d, 0x9ebe, 0x4f11, 0x643a, 0x70cb, 0x7566, 0x8667,
- 0x6064, 0x8b4e, 0x9df8, 0x5147, 0x51f6, 0x5308, 0x6d36, 0x80f8,
- 0x9ed1, 0x6615, 0x6b23, 0x7098, 0x75d5, 0x5403, 0x5c79, 0x7d07,
- 0x8a16, 0x6b20, 0x6b3d, 0x6b46, 0x5438, 0x6070, 0x6d3d, 0x7fd5,
- 0x8208, 0x50d6, 0x51de, 0x559c, 0x566b, 0x56cd, 0x59ec, 0x5b09,
- 0x5e0c, 0x6199, 0x6198, 0x6231, 0x665e, 0x66e6, 0x7199, 0x71b9,
- 0x71ba, 0x72a7, 0x79a7, 0x7a00, 0x7fb2, 0x8a70,
-};
-
-static int
-ksc5601_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n)
-{
- unsigned char c1 = (s[0] & 0x7F);
- if ((c1 >= 0x21 && c1 <= 0x2c) || (c1 >= 0x30 && c1 <= 0x48) || (c1 >= 0x4a && c1 <= 0x7d)) {
- if (n >= 2) {
- unsigned char c2 = (s[1] & 0x7F);
- if (c2 >= 0x21 && c2 < 0x7f) {
- unsigned int i = 94 * (c1 - 0x21) + (c2 - 0x21);
- unsigned short wc = 0xfffd;
- if (i < 1410) {
- if (i < 1115)
- wc = ksc5601_2uni_page21[i];
- } else if (i < 3854) {
- if (i < 3760)
- wc = ksc5601_2uni_page30[i-1410];
- } else {
- if (i < 8742)
- wc = ksc5601_2uni_page4a[i-3854];
- }
- if (wc != 0xfffd) {
- *pwc = (ucs4_t) wc;
- return 2;
- }
- }
- return RET_ILSEQ;
- }
- return RET_TOOFEW(0);
- }
- return RET_ILSEQ;
-}
-
-static const unsigned short ksc5601_2charset[8224] = {
- 0x222e, 0x2234, 0x2157, 0x2127, 0x2823, 0x2129, 0x2146, 0x213e,
- 0x2977, 0x2978, 0x2225, 0x2252, 0x2124, 0x222c, 0x2976, 0x282c,
- 0x2879, 0x2876, 0x287a, 0x222f, 0x2821, 0x2822, 0x213f, 0x282a,
- 0x282d, 0x292c, 0x2921, 0x2923, 0x2140, 0x292a, 0x292d, 0x2922,
- 0x2824, 0x2924, 0x2925, 0x2826, 0x2926, 0x2927, 0x2828, 0x2928,
- 0x2829, 0x2929, 0x2930, 0x282f, 0x292f, 0x282b, 0x292b, 0x282e,
- 0x292e, 0x2227, 0x2230, 0x2228, 0x222b, 0x222a, 0x222d, 0x2229,
- 0x2541, 0x2542, 0x2543, 0x2544, 0x2545, 0x2546, 0x2547, 0x2548,
- 0x2549, 0x254a, 0x254b, 0x254c, 0x254d, 0x254e, 0x254f, 0x2550,
- 0x2551, 0x2552, 0x2553, 0x2554, 0x2555, 0x2556, 0x2557, 0x2558,
- 0x2561, 0x2562, 0x2563, 0x2564, 0x2565, 0x2566, 0x2567, 0x2568,
- 0x2569, 0x256a, 0x256b, 0x256c, 0x256d, 0x256e, 0x256f, 0x2570,
- 0x2571, 0x2572, 0x2573, 0x2574, 0x2575, 0x2576, 0x2577, 0x2578,
- 0x2c27, 0x2c21, 0x2c22, 0x2c23, 0x2c24, 0x2c25, 0x2c26, 0x2c28,
- 0x2c29, 0x2c2a, 0x2c2b, 0x2c2c, 0x2c2d, 0x2c2e, 0x2c2f, 0x2c30,
- 0x2c31, 0x2c32, 0x2c33, 0x2c34, 0x2c35, 0x2c36, 0x2c37, 0x2c38,
- 0x2c39, 0x2c3a, 0x2c3b, 0x2c3c, 0x2c3d, 0x2c3e, 0x2c3f, 0x2c40,
- 0x2c41, 0x2c51, 0x2c52, 0x2c53, 0x2c54, 0x2c55, 0x2c56, 0x2c58,
- 0x2c59, 0x2c5a, 0x2c5b, 0x2c5c, 0x2c5d, 0x2c5e, 0x2c5f, 0x2c60,
- 0x2c61, 0x2c62, 0x2c63, 0x2c64, 0x2c65, 0x2c66, 0x2c67, 0x2c68,
- 0x2c69, 0x2c6a, 0x2c6b, 0x2c6c, 0x2c6d, 0x2c6e, 0x2c6f, 0x2c70,
- 0x2c71, 0x2c57, 0x212a, 0x212e, 0x212f, 0x2130, 0x2131, 0x2253,
- 0x2254, 0x2125, 0x2126, 0x2236, 0x2147, 0x2148, 0x2158, 0x2979,
- 0x297a, 0x297b, 0x297c, 0x297d, 0x297e, 0x2149, 0x2235, 0x2724,
- 0x2260, 0x2265, 0x2262, 0x2759, 0x214a, 0x2877, 0x2878, 0x287b,
- 0x287c, 0x287d, 0x287e, 0x2530, 0x2531, 0x2532, 0x2533, 0x2534,
- 0x2535, 0x2536, 0x2537, 0x2538, 0x2539, 0x2521, 0x2522, 0x2523,
- 0x2524, 0x2525, 0x2526, 0x2527, 0x2528, 0x2529, 0x252a, 0x2167,
- 0x2168, 0x2166, 0x2169, 0x216a, 0x2255, 0x2258, 0x2256, 0x2259,
- 0x2257, 0x2221, 0x2222, 0x2223, 0x2153, 0x2224, 0x2154, 0x2174,
- 0x2175, 0x2233, 0x2232, 0x216e, 0x2170, 0x2144, 0x2150, 0x212b,
- 0x217c, 0x217d, 0x217b, 0x217a, 0x2172, 0x2173, 0x2231, 0x2145,
- 0x2171, 0x212d, 0x216f, 0x2156, 0x2141, 0x2155, 0x2142, 0x2143,
- 0x216c, 0x216d, 0x2178, 0x2179, 0x2176, 0x2177, 0x2241, 0x2151,
- 0x2152, 0x2867, 0x2868, 0x2869, 0x286a, 0x286b, 0x286c, 0x286d,
- 0x286e, 0x286f, 0x2870, 0x2871, 0x2872, 0x2873, 0x2874, 0x2875,
- 0x2967, 0x2968, 0x2969, 0x296a, 0x296b, 0x296c, 0x296d, 0x296e,
- 0x296f, 0x2970, 0x2971, 0x2972, 0x2973, 0x2974, 0x2975, 0x294d,
- 0x294e, 0x294f, 0x2950, 0x2951, 0x2952, 0x2953, 0x2954, 0x2955,
- 0x2956, 0x2957, 0x2958, 0x2959, 0x295a, 0x295b, 0x295c, 0x295d,
- 0x295e, 0x295f, 0x2960, 0x2961, 0x2962, 0x2963, 0x2964, 0x2965,
- 0x2966, 0x284d, 0x284e, 0x284f, 0x2850, 0x2851, 0x2852, 0x2853,
- 0x2854, 0x2855, 0x2856, 0x2857, 0x2858, 0x2859, 0x285a, 0x285b,
- 0x285c, 0x285d, 0x285e, 0x285f, 0x2860, 0x2861, 0x2862, 0x2863,
- 0x2864, 0x2865, 0x2866, 0x2621, 0x262c, 0x2622, 0x262d, 0x2623,
- 0x2648, 0x2647, 0x262e, 0x2624, 0x2642, 0x2641, 0x262f, 0x2626,
- 0x2646, 0x2645, 0x2631, 0x2625, 0x2644, 0x2643, 0x2630, 0x2627,
- 0x263c, 0x2649, 0x264a, 0x2637, 0x264b, 0x264c, 0x2632, 0x2629,
- 0x263e, 0x264d, 0x264e, 0x2639, 0x264f, 0x2650, 0x2634, 0x2628,
- 0x2651, 0x2652, 0x2638, 0x263d, 0x2653, 0x2654, 0x2633, 0x262a,
- 0x2655, 0x2656, 0x263a, 0x263f, 0x2657, 0x2658, 0x2635, 0x262b,
- 0x2659, 0x265a, 0x263b, 0x265b, 0x265c, 0x2640, 0x265d, 0x265e,
- 0x265f, 0x2660, 0x2661, 0x2662, 0x2663, 0x2664, 0x2636, 0x2246,
- 0x2161, 0x2160, 0x2243, 0x2247, 0x2248, 0x224b, 0x224a, 0x2249,
- 0x224c, 0x2163, 0x2162, 0x223a, 0x2239, 0x2165, 0x2164, 0x2238,
- 0x2237, 0x215f, 0x215e, 0x2242, 0x215b, 0x215d, 0x215c, 0x2244,
- 0x2245, 0x215a, 0x2159, 0x224f, 0x224e, 0x2250, 0x2251, 0x214f,
- 0x214e, 0x223c, 0x223d, 0x2240, 0x223b, 0x223e, 0x223f, 0x224d,
- 0x225b, 0x225c, 0x225d, 0x225a, 0x2121, 0x2122, 0x2123, 0x2128,
- 0x2134, 0x2135, 0x2136, 0x2137, 0x2138, 0x2139, 0x213a, 0x213b,
- 0x213c, 0x213d, 0x216b, 0x2132, 0x2133, 0x2a21, 0x2a22, 0x2a23,
- 0x2a24, 0x2a25, 0x2a26, 0x2a27, 0x2a28, 0x2a29, 0x2a2a, 0x2a2b,
- 0x2a2c, 0x2a2d, 0x2a2e, 0x2a2f, 0x2a30, 0x2a31, 0x2a32, 0x2a33,
- 0x2a34, 0x2a35, 0x2a36, 0x2a37, 0x2a38, 0x2a39, 0x2a3a, 0x2a3b,
- 0x2a3c, 0x2a3d, 0x2a3e, 0x2a3f, 0x2a40, 0x2a41, 0x2a42, 0x2a43,
- 0x2a44, 0x2a45, 0x2a46, 0x2a47, 0x2a48, 0x2a49, 0x2a4a, 0x2a4b,
- 0x2a4c, 0x2a4d, 0x2a4e, 0x2a4f, 0x2a50, 0x2a51, 0x2a52, 0x2a53,
- 0x2a54, 0x2a55, 0x2a56, 0x2a57, 0x2a58, 0x2a59, 0x2a5a, 0x2a5b,
- 0x2a5c, 0x2a5d, 0x2a5e, 0x2a5f, 0x2a60, 0x2a61, 0x2a62, 0x2a63,
- 0x2a64, 0x2a65, 0x2a66, 0x2a67, 0x2a68, 0x2a69, 0x2a6a, 0x2a6b,
- 0x2a6c, 0x2a6d, 0x2a6e, 0x2a6f, 0x2a70, 0x2a71, 0x2a72, 0x2a73,
- 0x2b21, 0x2b22, 0x2b23, 0x2b24, 0x2b25, 0x2b26, 0x2b27, 0x2b28,
- 0x2b29, 0x2b2a, 0x2b2b, 0x2b2c, 0x2b2d, 0x2b2e, 0x2b2f, 0x2b30,
- 0x2b31, 0x2b32, 0x2b33, 0x2b34, 0x2b35, 0x2b36, 0x2b37, 0x2b38,
- 0x2b39, 0x2b3a, 0x2b3b, 0x2b3c, 0x2b3d, 0x2b3e, 0x2b3f, 0x2b40,
- 0x2b41, 0x2b42, 0x2b43, 0x2b44, 0x2b45, 0x2b46, 0x2b47, 0x2b48,
- 0x2b49, 0x2b4a, 0x2b4b, 0x2b4c, 0x2b4d, 0x2b4e, 0x2b4f, 0x2b50,
- 0x2b51, 0x2b52, 0x2b53, 0x2b54, 0x2b55, 0x2b56, 0x2b57, 0x2b58,
- 0x2b59, 0x2b5a, 0x2b5b, 0x2b5c, 0x2b5d, 0x2b5e, 0x2b5f, 0x2b60,
- 0x2b61, 0x2b62, 0x2b63, 0x2b64, 0x2b65, 0x2b66, 0x2b67, 0x2b68,
- 0x2b69, 0x2b6a, 0x2b6b, 0x2b6c, 0x2b6d, 0x2b6e, 0x2b6f, 0x2b70,
- 0x2b71, 0x2b72, 0x2b73, 0x2b74, 0x2b75, 0x2b76, 0x2421, 0x2422,
- 0x2423, 0x2424, 0x2425, 0x2426, 0x2427, 0x2428, 0x2429, 0x242a,
- 0x242b, 0x242c, 0x242d, 0x242e, 0x242f, 0x2430, 0x2431, 0x2432,
- 0x2433, 0x2434, 0x2435, 0x2436, 0x2437, 0x2438, 0x2439, 0x243a,
- 0x243b, 0x243c, 0x243d, 0x243e, 0x243f, 0x2440, 0x2441, 0x2442,
- 0x2443, 0x2444, 0x2445, 0x2446, 0x2447, 0x2448, 0x2449, 0x244a,
- 0x244b, 0x244c, 0x244d, 0x244e, 0x244f, 0x2450, 0x2451, 0x2452,
- 0x2453, 0x2454, 0x2455, 0x2456, 0x2457, 0x2458, 0x2459, 0x245a,
- 0x245b, 0x245c, 0x245d, 0x245e, 0x245f, 0x2460, 0x2461, 0x2462,
- 0x2463, 0x2464, 0x2465, 0x2466, 0x2467, 0x2468, 0x2469, 0x246a,
- 0x246b, 0x246c, 0x246d, 0x246e, 0x246f, 0x2470, 0x2471, 0x2472,
- 0x2473, 0x2474, 0x2475, 0x2476, 0x2477, 0x2478, 0x2479, 0x247a,
- 0x247b, 0x247c, 0x247d, 0x247e, 0x2931, 0x2932, 0x2933, 0x2934,
- 0x2935, 0x2936, 0x2937, 0x2938, 0x2939, 0x293a, 0x293b, 0x293c,
- 0x293d, 0x293e, 0x293f, 0x2940, 0x2941, 0x2942, 0x2943, 0x2944,
- 0x2945, 0x2946, 0x2947, 0x2948, 0x2949, 0x294a, 0x294b, 0x294c,
- 0x225f, 0x2831, 0x2832, 0x2833, 0x2834, 0x2835, 0x2836, 0x2837,
- 0x2838, 0x2839, 0x283a, 0x283b, 0x283c, 0x283d, 0x283e, 0x283f,
- 0x2840, 0x2841, 0x2842, 0x2843, 0x2844, 0x2845, 0x2846, 0x2847,
- 0x2848, 0x2849, 0x284a, 0x284b, 0x284c, 0x225e, 0x2749, 0x274a,
- 0x274b, 0x274c, 0x274d, 0x273a, 0x273b, 0x275c, 0x275d, 0x275e,
- 0x2736, 0x2737, 0x2738, 0x2754, 0x2755, 0x2756, 0x2757, 0x2758,
- 0x2721, 0x2722, 0x2723, 0x2725, 0x272b, 0x272c, 0x272d, 0x272e,
- 0x272f, 0x2730, 0x2731, 0x2732, 0x2733, 0x2734, 0x2727, 0x2728,
- 0x2729, 0x272a, 0x273d, 0x273e, 0x2765, 0x2766, 0x2767, 0x2768,
- 0x2761, 0x2762, 0x2763, 0x273f, 0x2740, 0x2741, 0x2742, 0x2743,
- 0x2744, 0x2745, 0x2746, 0x2747, 0x2748, 0x274e, 0x274f, 0x2750,
- 0x2751, 0x2752, 0x2753, 0x275a, 0x275b, 0x2263, 0x276c, 0x2726,
- 0x2760, 0x276f, 0x2261, 0x273c, 0x276d, 0x2735, 0x2739, 0x276a,
- 0x276b, 0x275f, 0x2264, 0x2764, 0x276e, 0x2769, 0x6c69, 0x6f4b,
- 0x7652, 0x5832, 0x6d5b, 0x5f32, 0x5f3e, 0x793b, 0x5c74, 0x7564,
- 0x7326, 0x5d60, 0x6126, 0x4e78, 0x5c30, 0x632a, 0x7169, 0x4d7a,
- 0x7c2f, 0x5321, 0x712b, 0x6751, 0x522c, 0x4e79, 0x717d, 0x5e3f,
- 0x7b3a, 0x7939, 0x4e52, 0x632b, 0x6b60, 0x4e7a, 0x4b77, 0x6525,
- 0x4a61, 0x544c, 0x6a61, 0x5c63, 0x5f2d, 0x4b6b, 0x552f, 0x5675,
- 0x6578, 0x5e40, 0x6c23, 0x694d, 0x6a27, 0x6976, 0x7b3b, 0x6769,
- 0x6f4c, 0x5066, 0x5e41, 0x642c, 0x584c, 0x7971, 0x4e5f, 0x7a24,
- 0x6632, 0x7a7b, 0x7a3d, 0x4c48, 0x6f4d, 0x5555, 0x5322, 0x6c51,
- 0x6427, 0x6c52, 0x7631, 0x4e7b, 0x5051, 0x4b3f, 0x6d24, 0x6d28,
- 0x5e42, 0x7662, 0x6d5c, 0x5c75, 0x6039, 0x544e, 0x7435, 0x535b,
- 0x5635, 0x6c24, 0x6466, 0x716a, 0x4b6c, 0x4b40, 0x6c72, 0x506a,
- 0x7972, 0x6c25, 0x505f, 0x676a, 0x506b, 0x5c51, 0x5b69, 0x7d4c,
- 0x5b57, 0x5a61, 0x5636, 0x635f, 0x5e43, 0x5e44, 0x4a21, 0x6e6c,
- 0x5323, 0x6e37, 0x784f, 0x6a48, 0x6e38, 0x712c, 0x7125, 0x694e,
- 0x793c, 0x6579, 0x6c6a, 0x5d56, 0x6d42, 0x7825, 0x653a, 0x5b58,
- 0x4a22, 0x514d, 0x6e6d, 0x6c6b, 0x5e45, 0x6360, 0x4a49, 0x7269,
- 0x554e, 0x7636, 0x4e42, 0x5647, 0x6334, 0x712d, 0x6a62, 0x5742,
- 0x7327, 0x4d6a, 0x6b6e, 0x5932, 0x7d25, 0x7655, 0x5562, 0x7835,
- 0x4c75, 0x7535, 0x642d, 0x676b, 0x7155, 0x703b, 0x6935, 0x4c49,
- 0x7a55, 0x6154, 0x5756, 0x5c41, 0x5e46, 0x7a6f, 0x6361, 0x6173,
- 0x5c76, 0x4e7c, 0x5b44, 0x7871, 0x5c64, 0x656f, 0x5c31, 0x5556,
- 0x735a, 0x4b41, 0x5b43, 0x597a, 0x536e, 0x7a38, 0x7d26, 0x6b6f,
- 0x7426, 0x4c4a, 0x7328, 0x735b, 0x5b27, 0x7637, 0x4f66, 0x7072,
- 0x4b5a, 0x6752, 0x5743, 0x7670, 0x685e, 0x6526, 0x6567, 0x4a23,
- 0x4c27, 0x6a49, 0x7836, 0x7a25, 0x712e, 0x6f4e, 0x4b6d, 0x7630,
- 0x6f4f, 0x694f, 0x775e, 0x4e53, 0x5c77, 0x5b28, 0x4b78, 0x5f21,
- 0x5d61, 0x754a, 0x6936, 0x676c, 0x6e6e, 0x7370, 0x5f3f, 0x4c4b,
- 0x5041, 0x7452, 0x603a, 0x5f40, 0x4e60, 0x5c52, 0x7d6a, 0x5676,
- 0x6a4a, 0x6869, 0x632c, 0x7350, 0x4a24, 0x5b78, 0x5e47, 0x6b70,
- 0x7156, 0x6562, 0x4c4c, 0x4b7b, 0x6a63, 0x5f41, 0x566d, 0x6950,
- 0x6e39, 0x5563, 0x5153, 0x6570, 0x6834, 0x6b43, 0x6a2a, 0x7a7c,
- 0x7576, 0x703c, 0x7d54, 0x603b, 0x4e43, 0x503a, 0x773a, 0x5873,
- 0x774d, 0x642e, 0x545f, 0x5067, 0x6c7d, 0x522e, 0x6e6f, 0x5557,
- 0x6a64, 0x7822, 0x4d6b, 0x573f, 0x7b31, 0x4d6c, 0x5c32, 0x506c,
- 0x4e7d, 0x6e70, 0x4c42, 0x506d, 0x6577, 0x737c, 0x6e22, 0x5933,
- 0x5874, 0x6937, 0x4e2e, 0x5922, 0x5871, 0x544f, 0x6527, 0x5552,
- 0x5629, 0x7422, 0x7157, 0x5558, 0x703d, 0x5750, 0x5450, 0x574f,
- 0x6b6a, 0x7d6b, 0x5b6d, 0x7c45, 0x4b42, 0x7d55, 0x7448, 0x686a,
- 0x7573, 0x795e, 0x536f, 0x6c53, 0x5d42, 0x6f37, 0x6754, 0x4a4a,
- 0x597b, 0x7a7d, 0x562a, 0x7478, 0x7777, 0x5c2c, 0x5757, 0x5f22,
- 0x4e3e, 0x5370, 0x7024, 0x616c, 0x4f67, 0x734b, 0x6d29, 0x4a3e,
- 0x746f, 0x764e, 0x5e7b, 0x503b, 0x5537, 0x6e71, 0x7428, 0x5c78,
- 0x4b27, 0x5a4e, 0x6066, 0x6d25, 0x6e72, 0x5c79, 0x795c, 0x735c,
- 0x7872, 0x7479, 0x7c71, 0x503c, 0x5b79, 0x5731, 0x4b7c, 0x7025,
- 0x4b7d, 0x5574, 0x4d6d, 0x4a25, 0x562b, 0x5042, 0x703e, 0x523d,
- 0x4c24, 0x7a36, 0x4c4d, 0x5a7a, 0x764f, 0x6938, 0x5875, 0x4c4e,
- 0x574d, 0x5451, 0x696d, 0x4a6b, 0x5962, 0x7d32, 0x632d, 0x564c,
- 0x5934, 0x6127, 0x6e53, 0x5043, 0x7d33, 0x5564, 0x4f68, 0x6d43,
- 0x5032, 0x4e7e, 0x5a28, 0x7850, 0x7d56, 0x7851, 0x7852, 0x5c53,
- 0x5d62, 0x7b79, 0x5d41, 0x6335, 0x6d5d, 0x4e44, 0x4b21, 0x5d63,
- 0x7c5d, 0x792f, 0x527b, 0x4f21, 0x6428, 0x7436, 0x6c7e, 0x632e,
- 0x676d, 0x7d41, 0x5a62, 0x5833, 0x5d64, 0x706f, 0x7671, 0x7a70,
- 0x5175, 0x5a4f, 0x5c54, 0x5c26, 0x6f3f, 0x4e4f, 0x6059, 0x5956,
- 0x6c54, 0x6a4b, 0x4a3f, 0x5530, 0x4f69, 0x716d, 0x4c4f, 0x6478,
- 0x646d, 0x5758, 0x7d27, 0x6a2b, 0x7632, 0x4f70, 0x793d, 0x6674,
- 0x4b5b, 0x7351, 0x6951, 0x7329, 0x5060, 0x6952, 0x5a63, 0x6252,
- 0x7622, 0x6174, 0x5a64, 0x6755, 0x753f, 0x4f22, 0x4d2f, 0x4f23,
- 0x4d30, 0x717e, 0x5023, 0x612f, 0x7823, 0x4a26, 0x773b, 0x726a,
- 0x5e48, 0x6953, 0x5e49, 0x7d5e, 0x4a40, 0x796a, 0x514e, 0x6e54,
- 0x5452, 0x5923, 0x7d28, 0x5759, 0x774e, 0x7a3e, 0x4f56, 0x5770,
- 0x6b61, 0x7845, 0x5c7a, 0x5d43, 0x795f, 0x676f, 0x7d65, 0x7623,
- 0x597c, 0x7d29, 0x676e, 0x5565, 0x6f50, 0x4d31, 0x7722, 0x7132,
- 0x7131, 0x4d32, 0x5a2b, 0x4a27, 0x6362, 0x7b3c, 0x5924, 0x6e3a,
- 0x7853, 0x7b7a, 0x4f24, 0x5c7b, 0x7663, 0x6d2a, 0x7221, 0x4e61,
- 0x7a26, 0x7960, 0x6c56, 0x646e, 0x7921, 0x7b6f, 0x796b, 0x6e23,
- 0x6a2c, 0x4a28, 0x747a, 0x4d56, 0x7c76, 0x7449, 0x7854, 0x7826,
- 0x5e4a, 0x7246, 0x575a, 0x5350, 0x5845, 0x6a66, 0x735d, 0x645a,
- 0x7664, 0x7672, 0x5f42, 0x597d, 0x4c76, 0x533a, 0x642f, 0x7961,
- 0x7026, 0x4b53, 0x603c, 0x744a, 0x547a, 0x7d2a, 0x7962, 0x7437,
- 0x7d42, 0x7c30, 0x7d6c, 0x4a62, 0x7d3d, 0x6a67, 0x5f43, 0x5152,
- 0x4e62, 0x5324, 0x7d2b, 0x5f60, 0x7247, 0x6770, 0x506e, 0x732a,
- 0x5e4b, 0x7638, 0x6175, 0x7133, 0x7723, 0x4a29, 0x4f25, 0x5f44,
- 0x6130, 0x703f, 0x7624, 0x6336, 0x7a46, 0x506f, 0x7d6d, 0x5d44,
- 0x7c77, 0x663f, 0x5e2d, 0x7a3f, 0x6571, 0x6d44, 0x5225, 0x7d6e,
- 0x7536, 0x6176, 0x5e4c, 0x7c5e, 0x6c57, 0x4d5d, 0x5637, 0x4d33,
- 0x7855, 0x6558, 0x4f6a, 0x4f50, 0x6a4c, 0x6a2e, 0x6a2d, 0x5371,
- 0x5325, 0x774f, 0x6e24, 0x5024, 0x7222, 0x5070, 0x7223, 0x7778,
- 0x5033, 0x5b29, 0x533b, 0x4a6c, 0x7126, 0x4b55, 0x7767, 0x4d5e,
- 0x7724, 0x7840, 0x535d, 0x4c50, 0x4f26, 0x7673, 0x6177, 0x535c,
- 0x7a7e, 0x7a27, 0x6b59, 0x4f27, 0x6a2f, 0x646f, 0x6939, 0x7158,
- 0x5858, 0x6072, 0x6634, 0x5c7c, 0x7371, 0x6350, 0x727b, 0x5b46,
- 0x5071, 0x5072, 0x4f5c, 0x5351, 0x4c31, 0x7758, 0x4b28, 0x6b3c,
- 0x643e, 0x745c, 0x5c42, 0x7027, 0x6640, 0x4a6d, 0x686b, 0x6568,
- 0x5c43, 0x6d5e, 0x5372, 0x4c77, 0x4e54, 0x672b, 0x4b43, 0x6131,
- 0x7732, 0x5373, 0x5352, 0x7540, 0x5f5d, 0x6e73, 0x6771, 0x7d34,
- 0x7248, 0x7352, 0x6e74, 0x6253, 0x4c51, 0x5f6a, 0x693a, 0x5957,
- 0x754d, 0x7172, 0x7a47, 0x5978, 0x5442, 0x7665, 0x5d45, 0x6772,
- 0x6d5f, 0x4a4b, 0x5b7a, 0x6835, 0x5326, 0x7d35, 0x7949, 0x6462,
- 0x7b3d, 0x5724, 0x4e45, 0x4e55, 0x5666, 0x653d, 0x5e4d, 0x6c73,
- 0x6d60, 0x6c6c, 0x7b3e, 0x5f6b, 0x6178, 0x793e, 0x5073, 0x602a,
- 0x6862, 0x6254, 0x527d, 0x6528, 0x5953, 0x535e, 0x7438, 0x773c,
- 0x5c7d, 0x686c, 0x6467, 0x6377, 0x6c28, 0x7a71, 0x6572, 0x5074,
- 0x522f, 0x5c65, 0x5025, 0x7134, 0x7c31, 0x4c78, 0x5d46, 0x7a51,
- 0x775f, 0x7a28, 0x6e75, 0x5e4e, 0x6773, 0x772c, 0x6b44, 0x6d61,
- 0x602b, 0x5d47, 0x5233, 0x523f, 0x4a4c, 0x7b3f, 0x657d, 0x5d65,
- 0x584d, 0x6c74, 0x5075, 0x686d, 0x5052, 0x5958, 0x7666, 0x5b2a,
- 0x7760, 0x5859, 0x7423, 0x745d, 0x6f51, 0x5935, 0x6d2b, 0x6337,
- 0x6e3b, 0x4d34, 0x6073, 0x6a4d, 0x6c75, 0x686e, 0x4b29, 0x712f,
- 0x4a4d, 0x6c29, 0x726b, 0x7d6f, 0x7973, 0x6641, 0x6c58, 0x6d2c,
- 0x6a4e, 0x685f, 0x5e4f, 0x5226, 0x6774, 0x5156, 0x6642, 0x6363,
- 0x6430, 0x5834, 0x7625, 0x735e, 0x5725, 0x7768, 0x6846, 0x7b66,
- 0x5d66, 0x5c7e, 0x585a, 0x5a2c, 0x6a30, 0x6338, 0x4a2a, 0x6179,
- 0x6a31, 0x726c, 0x7a6e, 0x6e55, 0x7974, 0x526c, 0x7b7b, 0x7d70,
- 0x603d, 0x4e63, 0x7846, 0x5e2e, 0x5f45, 0x653e, 0x6d2d, 0x7a6a,
- 0x4d6e, 0x6d26, 0x6d2e, 0x706d, 0x5d21, 0x6d2f, 0x7c78, 0x586b,
- 0x4c79, 0x4d35, 0x7a29, 0x615d, 0x6255, 0x6d4f, 0x5d22, 0x794a,
- 0x6a68, 0x656d, 0x536b, 0x6954, 0x617a, 0x644c, 0x6164, 0x6847,
- 0x4e5b, 0x5c55, 0x7735, 0x7c73, 0x7073, 0x4e2f, 0x7135, 0x6f52,
- 0x6848, 0x6b71, 0x4b54, 0x603e, 0x6378, 0x6a69, 0x7c32, 0x6074,
- 0x4f60, 0x6e25, 0x7a2a, 0x6643, 0x6132, 0x4a2b, 0x6364, 0x693b,
- 0x6256, 0x7372, 0x6e56, 0x6a32, 0x5076, 0x6c59, 0x5a4b, 0x4f28,
- 0x5d23, 0x585b, 0x794e, 0x6955, 0x6351, 0x523c, 0x582c, 0x734c,
- 0x4d7b, 0x7656, 0x6775, 0x686f, 0x6379, 0x523b, 0x7373, 0x637b,
- 0x5e50, 0x4e30, 0x5677, 0x7159, 0x7541, 0x5c44, 0x753b, 0x5e51,
- 0x5c66, 0x5e52, 0x6d62, 0x6e76, 0x6a4f, 0x706e, 0x637c, 0x535f,
- 0x5374, 0x6133, 0x6134, 0x7453, 0x5f46, 0x6956, 0x5b2b, 0x7626,
- 0x6339, 0x6b45, 0x7429, 0x4d36, 0x5279, 0x5a2d, 0x5263, 0x4f51,
- 0x4b5c, 0x4c7a, 0x4f5d, 0x6829, 0x633b, 0x633a, 0x605a, 0x6e77,
- 0x5c33, 0x5375, 0x5726, 0x7635, 0x575b, 0x6155, 0x546a, 0x5f23,
- 0x7d5f, 0x5077, 0x6d54, 0x4b2a, 0x645b, 0x617b, 0x4b22, 0x5360,
- 0x643f, 0x7b40, 0x5a3e, 0x644d, 0x5639, 0x6f40, 0x617c, 0x7639,
- 0x5f47, 0x6431, 0x5c67, 0x5c68, 0x7a56, 0x5376, 0x715a, 0x7a72,
- 0x627d, 0x554f, 0x5078, 0x4d5f, 0x754b, 0x6470, 0x4b2b, 0x5744,
- 0x627e, 0x5d5a, 0x5a2e, 0x4a6e, 0x5539, 0x6321, 0x6863, 0x732b,
- 0x4f29, 0x5377, 0x5471, 0x4e64, 0x6872, 0x6575, 0x672e, 0x563a,
- 0x5f6c, 0x6440, 0x6864, 0x5835, 0x645c, 0x7439, 0x7136, 0x625e,
- 0x6135, 0x4d6f, 0x7127, 0x4e65, 0x4b5d, 0x5963, 0x732c, 0x5079,
- 0x6c2b, 0x5e53, 0x7769, 0x7975, 0x615e, 0x4b6e, 0x633c, 0x7856,
- 0x5b6e, 0x7d71, 0x7736, 0x745e, 0x726d, 0x5b59, 0x7028, 0x617d,
- 0x5e54, 0x602c, 0x6d63, 0x5361, 0x5f48, 0x5936, 0x7d2c, 0x6f53,
- 0x6441, 0x786b, 0x5b2c, 0x7c46, 0x582d, 0x763a, 0x5b5f, 0x5353,
- 0x7847, 0x4a4e, 0x7841, 0x5234, 0x5c34, 0x7a39, 0x4a4f, 0x7c33,
- 0x6a6a, 0x6a6b, 0x507a, 0x6d64, 0x5d67, 0x5f49, 0x5f6d, 0x6e3c,
- 0x6f41, 0x4c52, 0x5d24, 0x5f4a, 0x5378, 0x7128, 0x4d37, 0x6f54,
- 0x645d, 0x5f6e, 0x4b2c, 0x693c, 0x6a6c, 0x5f4b, 0x793f, 0x562f,
- 0x5546, 0x4f2a, 0x4e29, 0x5678, 0x7137, 0x6e78, 0x5959, 0x735f,
- 0x7848, 0x4e46, 0x5566, 0x7466, 0x6645, 0x6f55, 0x4b6f, 0x7c5f,
- 0x5c27, 0x5667, 0x7849, 0x6352, 0x633d, 0x4f61, 0x7040, 0x6c5a,
- 0x5d57, 0x7b70, 0x6c2c, 0x7029, 0x7a57, 0x7b41, 0x5240, 0x6530,
- 0x6d65, 0x4b2d, 0x7930, 0x7725, 0x4b2e, 0x5a2f, 0x5836, 0x5327,
- 0x7b32, 0x7d44, 0x6c2d, 0x7b21, 0x6569, 0x696e, 0x7374, 0x7873,
- 0x7041, 0x5e2f, 0x7830, 0x7360, 0x672f, 0x5b2d, 0x6635, 0x7928,
- 0x5d58, 0x6859, 0x6f56, 0x5362, 0x625f, 0x7c60, 0x5748, 0x7d2d,
- 0x5f6f, 0x4c53, 0x5379, 0x5470, 0x5b47, 0x5e55, 0x7074, 0x5550,
- 0x6559, 0x7c47, 0x5c56, 0x6260, 0x5a30, 0x7323, 0x536c, 0x744b,
- 0x7d45, 0x637d, 0x7931, 0x507b, 0x6c5b, 0x753c, 0x7224, 0x584e,
- 0x584f, 0x7577, 0x7661, 0x5237, 0x7b6c, 0x5d48, 0x6468, 0x5241,
- 0x7857, 0x563b, 0x5e56, 0x773d, 0x6c2e, 0x5061, 0x6075, 0x6a33,
- 0x4e56, 0x4c25, 0x6c76, 0x6261, 0x633e, 0x7c48, 0x4d70, 0x7976,
- 0x5f70, 0x653f, 0x4e3f, 0x7c61, 0x6d30, 0x7d51, 0x763b, 0x794f,
- 0x6b5a, 0x4a41, 0x5238, 0x4d71, 0x6353, 0x7d66, 0x666d, 0x637a,
- 0x702a, 0x7950, 0x7c62, 0x7827, 0x6165, 0x6e79, 0x6776, 0x6a6d,
- 0x7c34, 0x7542, 0x575c, 0x7075, 0x5d68, 0x536d, 0x757c, 0x5a3f,
- 0x4c7b, 0x537a, 0x7424, 0x6f57, 0x5443, 0x7b63, 0x7b6d, 0x602d,
- 0x6a6e, 0x7b33, 0x6442, 0x7667, 0x525d, 0x5f4c, 0x7c49, 0x6529,
- 0x6076, 0x7633, 0x617e, 0x4b70, 0x6a6f, 0x6a70, 0x5a40, 0x7834,
- 0x6b72, 0x6443, 0x6957, 0x6471, 0x4a6f, 0x4e57, 0x7c4a, 0x7361,
- 0x4b44, 0x6365, 0x4b45, 0x6a34, 0x693d, 0x5749, 0x6b5b, 0x6d31,
- 0x4c43, 0x773e, 0x7c4b, 0x7874, 0x5937, 0x7353, 0x7354, 0x7764,
- 0x7751, 0x5837, 0x4e31, 0x4a42, 0x7b34, 0x4b46, 0x7076, 0x5567,
- 0x6a50, 0x4c54, 0x4b2f, 0x742a, 0x692f, 0x7543, 0x6958, 0x5d69,
- 0x7173, 0x557b, 0x5e3b, 0x747b, 0x7d73, 0x7d72, 0x7726, 0x5d49,
- 0x5453, 0x4c28, 0x5a41, 0x4c55, 0x5964, 0x7a4a, 0x6563, 0x533c,
- 0x4a70, 0x5044, 0x4a50, 0x7a2b, 0x6b6b, 0x6778, 0x5965, 0x5157,
- 0x7324, 0x547b, 0x7c63, 0x7a58, 0x7355, 0x4f2b, 0x6b73, 0x557c,
- 0x5354, 0x4d7c, 0x5966, 0x6279, 0x6221, 0x6b54, 0x6077, 0x6432,
- 0x4c7c, 0x7b64, 0x742b, 0x503d, 0x4a71, 0x6f38, 0x5740, 0x6e7a,
- 0x7d74, 0x5363, 0x7b42, 0x5568, 0x5b2e, 0x6136, 0x7837, 0x603f,
- 0x7b43, 0x5d6a, 0x6222, 0x6e26, 0x7668, 0x7675, 0x5d4a, 0x5062,
- 0x5d26, 0x5d6b, 0x6479, 0x632f, 0x507c, 0x747c, 0x4c3c, 0x776a,
- 0x6564, 0x5f71, 0x7761, 0x7977, 0x6f39, 0x7858, 0x7929, 0x7859,
- 0x6e3d, 0x5846, 0x6463, 0x754e, 0x5d59, 0x5967, 0x5239, 0x5543,
- 0x5a65, 0x5a50, 0x5159, 0x4e58, 0x4b5e, 0x742c, 0x5a7b, 0x7669,
- 0x6873, 0x4f2c, 0x7070, 0x747d, 0x5b48, 0x4e40, 0x6354, 0x514f,
- 0x7175, 0x4d72, 0x4f6b, 0x4d38, 0x6326, 0x515a, 0x7225, 0x7226,
- 0x644e, 0x537b, 0x7129, 0x7249, 0x6f58, 0x6649, 0x5838, 0x7a73,
- 0x7335, 0x7824, 0x5173, 0x6648, 0x785a, 0x5c69, 0x5e57, 0x4b5f,
- 0x4f6c, 0x745f, 0x5174, 0x523a, 0x5f72, 0x6137, 0x6223, 0x537c,
- 0x6d66, 0x5b49, 0x647a, 0x4f5e, 0x4e50, 0x5553, 0x7375, 0x772e,
- 0x6f48, 0x4d73, 0x754f, 0x6573, 0x7042, 0x4a51, 0x6a71, 0x5026,
- 0x595a, 0x702b, 0x6b67, 0x6540, 0x7c35, 0x6444, 0x4c29, 0x7d46,
- 0x6a35, 0x652a, 0x5f3a, 0x615f, 0x5a51, 0x6138, 0x6874, 0x537d,
- 0x6224, 0x724a, 0x5a66, 0x7733, 0x7d4d, 0x7336, 0x6e57, 0x7544,
- 0x5824, 0x7227, 0x5938, 0x5939, 0x6f49, 0x564e, 0x774b, 0x5f2e,
- 0x6875, 0x5235, 0x5355, 0x744c, 0x5a7c, 0x5968, 0x776b, 0x7549,
- 0x733c, 0x5a52, 0x5335, 0x6836, 0x564f, 0x743a, 0x7749, 0x4c2a,
- 0x7043, 0x4c56, 0x5053, 0x533d, 0x5b7b, 0x4b60, 0x5364, 0x7677,
- 0x553a, 0x734d, 0x4b61, 0x6b74, 0x742d, 0x7c2a, 0x776c, 0x6876,
- 0x5a67, 0x774c, 0x6541, 0x606e, 0x557d, 0x4e66, 0x7c2b, 0x553b,
- 0x7228, 0x6225, 0x4d39, 0x6a72, 0x4b47, 0x4d74, 0x5b2f, 0x6f59,
- 0x4d3a, 0x7c79, 0x5f73, 0x4e67, 0x5a42, 0x4f2d, 0x6779, 0x7828,
- 0x7362, 0x4a72, 0x5f24, 0x5444, 0x4c57, 0x6542, 0x4d3b, 0x6f5a,
- 0x6e58, 0x5d27, 0x6226, 0x6040, 0x5630, 0x784a, 0x7c7a, 0x597e,
- 0x5e30, 0x5d6c, 0x5a68, 0x5460, 0x5679, 0x4d57, 0x5e58, 0x7278,
- 0x6456, 0x5045, 0x742e, 0x5d28, 0x6d45, 0x7356, 0x5e59, 0x6366,
- 0x5328, 0x5b30, 0x655a, 0x633f, 0x5b31, 0x5569, 0x6041, 0x6f5b,
- 0x7069, 0x5732, 0x507d, 0x5969, 0x507e, 0x6c6d, 0x5329, 0x7229,
- 0x7044, 0x6262, 0x696f, 0x7951, 0x6959, 0x685a, 0x5a43, 0x5a44,
- 0x5445, 0x677a, 0x4d60, 0x6330, 0x5b32, 0x7b44, 0x7363, 0x5925,
- 0x7b67, 0x5d4b, 0x5054, 0x6636, 0x602e, 0x7d5a, 0x5c35, 0x6078,
- 0x6731, 0x7570, 0x585c, 0x6d46, 0x6139, 0x6340, 0x7940, 0x6970,
- 0x595b, 0x7364, 0x5c36, 0x6469, 0x7045, 0x6341, 0x7c4c, 0x7c4d,
- 0x724b, 0x724c, 0x644f, 0x715b, 0x7a59, 0x7138, 0x7d75, 0x6079,
- 0x677b, 0x7c37, 0x7c64, 0x7b45, 0x6367, 0x5839, 0x7678, 0x5c45,
- 0x4c58, 0x602f, 0x7467, 0x6f5c, 0x4f7c, 0x6f5d, 0x722a, 0x7d3e,
- 0x4a2c, 0x7d3b, 0x7d47, 0x6732, 0x6a51, 0x5f74, 0x516c, 0x645e,
- 0x6543, 0x5926, 0x4d3c, 0x7365, 0x6d55, 0x593a, 0x6d67, 0x7b35,
- 0x786c, 0x6067, 0x4c59, 0x5446, 0x6725, 0x5575, 0x533e, 0x7c7b,
- 0x6472, 0x5f75, 0x6878, 0x786d, 0x4e47, 0x7d76, 0x6858, 0x4d58,
- 0x6756, 0x4c5a, 0x4a63, 0x5f76, 0x7047, 0x7046, 0x583a, 0x7174,
- 0x7470, 0x754c, 0x7c65, 0x6a45, 0x6a73, 0x5d5b, 0x5c57, 0x5e7d,
- 0x7279, 0x5547, 0x5850, 0x7048, 0x5121, 0x5122, 0x5954, 0x5668,
- 0x594a, 0x5a31, 0x5847, 0x5c62, 0x734e, 0x7574, 0x7139, 0x5a53,
- 0x766a, 0x4f75, 0x7d2e, 0x4a52, 0x5f34, 0x575d, 0x7a3a, 0x6e27,
- 0x753d, 0x7875, 0x6d68, 0x5461, 0x5123, 0x6156, 0x7978, 0x5b4a,
- 0x4b79, 0x5454, 0x595c, 0x6e3e, 0x776d, 0x526e, 0x6166, 0x7779,
- 0x5d6d, 0x685b, 0x5b33, 0x5177, 0x6030, 0x5462, 0x7657, 0x5779,
- 0x585d, 0x4d7d, 0x722b, 0x4d3d, 0x7842, 0x722c, 0x4a2d, 0x4a2e,
- 0x4f2e, 0x6342, 0x5c37, 0x5b5a, 0x593b, 0x4a73, 0x7653, 0x6678,
- 0x6a75, 0x6a76, 0x7679, 0x4f2f, 0x4a53, 0x4a2f, 0x5230, 0x713a,
- 0x5733, 0x6343, 0x737d, 0x5e5a, 0x5e5b, 0x6f5e, 0x6263, 0x6e7b,
- 0x5f77, 0x574a, 0x4e68, 0x5b5b, 0x713b, 0x6971, 0x7a37, 0x5046,
- 0x4c2b, 0x6e28, 0x4b7a, 0x7979, 0x4c7d, 0x537e, 0x6450, 0x726e,
- 0x5455, 0x5f4d, 0x7c38, 0x5150, 0x724d, 0x7752, 0x4a54, 0x5559,
- 0x585e, 0x4d59, 0x6e29, 0x763c, 0x4c5b, 0x7049, 0x7c7c, 0x6849,
- 0x747e, 0x677c, 0x575e, 0x5e5c, 0x702c, 0x4c7e, 0x4d61, 0x613a,
- 0x5b6f, 0x5a32, 0x5125, 0x5c38, 0x5876, 0x5124, 0x4d62, 0x5c6a,
- 0x7077, 0x704a, 0x503e, 0x5d5c, 0x5456, 0x5356, 0x6d50, 0x4d21,
- 0x5f35, 0x5f78, 0x5421, 0x4e32, 0x684a, 0x6b75, 0x6355, 0x7550,
- 0x7521, 0x5927, 0x652b, 0x664b, 0x7571, 0x6545, 0x7923, 0x605b,
- 0x766b, 0x4b71, 0x596a, 0x7522, 0x5751, 0x5178, 0x6a78, 0x6a79,
- 0x5a33, 0x6f5f, 0x716f, 0x6576, 0x6e3f, 0x6264, 0x503f, 0x7a2c,
- 0x7551, 0x6733, 0x693e, 0x724e, 0x5b34, 0x7c4e, 0x5d6e, 0x6734,
- 0x5734, 0x7734, 0x4d3e, 0x5a69, 0x4f30, 0x7759, 0x7366, 0x4e59,
- 0x4e2a, 0x4b48, 0x5027, 0x704b, 0x5047, 0x6445, 0x5b60, 0x555a,
- 0x5727, 0x6e40, 0x7876, 0x7552, 0x6d69, 0x593c, 0x6546, 0x7523,
- 0x5a54, 0x6227, 0x7b7c, 0x715c, 0x4a74, 0x687a, 0x4e69, 0x6978,
- 0x6265, 0x5039, 0x5472, 0x5126, 0x5f4e, 0x7c74, 0x532a, 0x4c2c,
- 0x6f60, 0x6565, 0x5055, 0x5b7c, 0x7c66, 0x4b7e, 0x6d6a, 0x5e31,
- 0x7963, 0x5422, 0x4f76, 0x5650, 0x556a, 0x716e, 0x7a4b, 0x6521,
- 0x5531, 0x4f6d, 0x6d6b, 0x5532, 0x553c, 0x7d62, 0x732d, 0x7d5b,
- 0x6930, 0x5127, 0x7d63, 0x4e33, 0x7d64, 0x7a4e, 0x4a30, 0x7727,
- 0x4f31, 0x6622, 0x7c36, 0x722d, 0x6f61, 0x732e, 0x5c46, 0x596b,
- 0x6860, 0x6128, 0x5576, 0x4f7d, 0x5e5d, 0x5951, 0x646a, 0x724f,
- 0x773f, 0x6266, 0x6228, 0x6356, 0x6d51, 0x6979, 0x5631, 0x5e32,
- 0x6068, 0x532b, 0x6b5c, 0x5f2f, 0x4a43, 0x6e7c, 0x7d43, 0x6b76,
- 0x4f32, 0x596c, 0x593d, 0x585f, 0x5438, 0x6b3e, 0x5d6f, 0x5d70,
- 0x5d71, 0x5d72, 0x593e, 0x7b46, 0x4f33, 0x6e7d, 0x642b, 0x5a45,
- 0x586c, 0x5128, 0x6229, 0x5e3c, 0x6735, 0x5b70, 0x6f62, 0x7170,
- 0x4f34, 0x5b71, 0x6031, 0x5f25, 0x7952, 0x677d, 0x6623, 0x7b71,
- 0x4b30, 0x722e, 0x4d67, 0x685c, 0x6757, 0x7740, 0x5063, 0x5a21,
- 0x4c3d, 0x5129, 0x5d4c, 0x637e, 0x512a, 0x682a, 0x6a36, 0x797a,
- 0x664c, 0x7658, 0x5447, 0x594b, 0x5952, 0x534b, 0x5877, 0x5a29,
- 0x7578, 0x5e5e, 0x722f, 0x7829, 0x5848, 0x6e41, 0x7941, 0x5d73,
- 0x6a7a, 0x763d, 0x613b, 0x4d3f, 0x7454, 0x664d, 0x7c4f, 0x7b22,
- 0x605c, 0x743b, 0x5a55, 0x7932, 0x7b72, 0x5b76, 0x5e5f, 0x5b72,
- 0x785c, 0x776e, 0x6b68, 0x527a, 0x713c, 0x7a5a, 0x5a6a, 0x5a46,
- 0x7741, 0x6736, 0x6547, 0x562c, 0x5c47, 0x6129, 0x622a, 0x5526,
- 0x5457, 0x7250, 0x6a7b, 0x605d, 0x7b73, 0x713d, 0x6267, 0x7d57,
- 0x4e48, 0x6a37, 0x7c40, 0x7d67, 0x776f, 0x5735, 0x6f3a, 0x715d,
- 0x5e33, 0x684b, 0x785d, 0x7b47, 0x5548, 0x575f, 0x5d29, 0x6931,
- 0x7a2d, 0x7659, 0x7a74, 0x782a, 0x666e, 0x4c5c, 0x613c, 0x606f,
- 0x693f, 0x7c7d, 0x664e, 0x6157, 0x664f, 0x7471, 0x6473, 0x647b,
- 0x7964, 0x6f63, 0x4f6e, 0x763e, 0x6032, 0x7c7e, 0x512b, 0x577a,
- 0x7b48, 0x6257, 0x5423, 0x7078, 0x5728, 0x6167, 0x533f, 0x6f64,
- 0x5745, 0x6b62, 0x7c67, 0x6422, 0x6268, 0x6650, 0x7b68, 0x7468,
- 0x6574, 0x743c, 0x7455, 0x5f36, 0x7c39, 0x6e42, 0x4a75, 0x6f65,
- 0x4b62, 0x5424, 0x5e60, 0x5a7d, 0x6446, 0x683e, 0x605e, 0x7634,
- 0x6a52, 0x797b, 0x6042, 0x4a64, 0x6737, 0x6a7d, 0x595d, 0x5a34,
- 0x6e2a, 0x7b69, 0x5b4b, 0x5a35, 0x713e, 0x532c, 0x7b49, 0x5f4f,
- 0x5340, 0x6357, 0x6f66, 0x7c50, 0x6940, 0x7553, 0x6c5c, 0x7737,
- 0x6a38, 0x5179, 0x5c48, 0x6a39, 0x715e, 0x5736, 0x4f35, 0x5928,
- 0x6c6e, 0x5d2a, 0x4d22, 0x682e, 0x613d, 0x7251, 0x6941, 0x527c,
- 0x5b35, 0x7367, 0x587e, 0x7c51, 0x6d32, 0x742f, 0x7b23, 0x7c41,
- 0x6e2b, 0x5425, 0x7472, 0x6e59, 0x7b4a, 0x4d63, 0x583b, 0x655b,
- 0x7877, 0x7654, 0x5729, 0x4b49, 0x6651, 0x704c, 0x582e, 0x7953,
- 0x557e, 0x583c, 0x7230, 0x622b, 0x7368, 0x6f42, 0x6d6c, 0x6738,
- 0x5a7e, 0x4c3e, 0x727c, 0x5a6b, 0x6258, 0x6d56, 0x5651, 0x6033,
- 0x7c52, 0x6b48, 0x5341, 0x704d, 0x4f77, 0x6d52, 0x5458, 0x5c49,
- 0x5771, 0x5f3b, 0x7325, 0x744d, 0x713f, 0x7831, 0x697a, 0x7b4b,
- 0x4a55, 0x7954, 0x774a, 0x5648, 0x7c68, 0x733d, 0x6e7e, 0x677e,
- 0x5342, 0x5336, 0x4c2d, 0x767a, 0x5632, 0x5258, 0x6758, 0x6325,
- 0x6739, 0x702d, 0x7b4c, 0x6b21, 0x5426, 0x7b4d, 0x553d, 0x715f,
- 0x767b, 0x5e34, 0x556b, 0x6548, 0x7b24, 0x5439, 0x5e61, 0x6423,
- 0x5737, 0x786e, 0x5e35, 0x5652, 0x7955, 0x673a, 0x6b55, 0x5577,
- 0x6f67, 0x613e, 0x7a2e, 0x5669, 0x566e, 0x673b, 0x6c4b, 0x5533,
- 0x4e34, 0x7b25, 0x616e, 0x7728, 0x7b4e, 0x583d, 0x7b7d, 0x7c69,
- 0x4f36, 0x6d47, 0x6e2c, 0x4c5d, 0x7627, 0x667a, 0x7524, 0x7d5c,
- 0x6d33, 0x4e49, 0x6f68, 0x613f, 0x7a5b, 0x4b63, 0x7729, 0x7b26,
- 0x5c39, 0x7140, 0x6d48, 0x6f43, 0x562d, 0x7d4e, 0x6821, 0x7b74,
- 0x5527, 0x7176, 0x6653, 0x4c5e, 0x7832, 0x5c6b, 0x7d36, 0x656a,
- 0x7160, 0x5b4c, 0x5d4d, 0x5448, 0x596d, 0x7525, 0x667b, 0x6654,
- 0x7d48, 0x5621, 0x7d3f, 0x7c53, 0x6f21, 0x673c, 0x516e, 0x6655,
- 0x6972, 0x5f30, 0x5860, 0x7c3a, 0x7d2f, 0x704e, 0x5b61, 0x6549,
- 0x6d34, 0x6043, 0x6358, 0x697b, 0x6a28, 0x7d37, 0x7b27, 0x6942,
- 0x7d77, 0x6259, 0x5c6c, 0x6822, 0x6670, 0x7d78, 0x7d79, 0x763f,
- 0x6727, 0x6657, 0x5473, 0x5449, 0x567a, 0x5772, 0x6140, 0x5b62,
- 0x6658, 0x673d, 0x704f, 0x733e, 0x622c, 0x7537, 0x6070, 0x7d38,
- 0x6368, 0x5427, 0x687c, 0x7a52, 0x786f, 0x5653, 0x5534, 0x7050,
- 0x7770, 0x6e33, 0x6a3a, 0x6a53, 0x6d49, 0x5d2b, 0x652c, 0x7d21,
- 0x5f50, 0x6c33, 0x5f51, 0x6d6d, 0x7838, 0x777a, 0x782b, 0x7460,
- 0x543a, 0x6433, 0x695a, 0x5e36, 0x593f, 0x5940, 0x566f, 0x594c,
- 0x5a2a, 0x5f65, 0x7765, 0x4c32, 0x5f79, 0x5760, 0x543b, 0x7d7a,
- 0x4c33, 0x5b73, 0x5f52, 0x4e4a, 0x6e5a, 0x6464, 0x7b4f, 0x4f37,
- 0x6e43, 0x4e6a, 0x622d, 0x5761, 0x7a75, 0x5549, 0x782c, 0x6759,
- 0x7369, 0x586d, 0x6344, 0x7071, 0x6865, 0x607a, 0x6e44, 0x595e,
- 0x6b22, 0x6b23, 0x7c42, 0x6a3b, 0x682b, 0x5e62, 0x6d6f, 0x6823,
- 0x4f71, 0x543c, 0x7c6a, 0x673e, 0x7c72, 0x5634, 0x622e, 0x5337,
- 0x7a4c, 0x7a5c, 0x6d35, 0x6163, 0x682c, 0x685d, 0x6f69, 0x743d,
- 0x4f38, 0x695b, 0x512c, 0x5a47, 0x6b49, 0x684c, 0x5e37, 0x563c,
- 0x5365, 0x7a5d, 0x5a56, 0x4a31, 0x5a48, 0x5f26, 0x7933, 0x7252,
- 0x4a44, 0x4e4b, 0x4d75, 0x7d30, 0x5528, 0x7141, 0x6269, 0x5c4a,
- 0x6c34, 0x7a40, 0x7b28, 0x5028, 0x5a6c, 0x596e, 0x607b, 0x6f6a,
- 0x7a5e, 0x6044, 0x4f39, 0x554a, 0x5762, 0x622f, 0x5738, 0x684d,
- 0x765a, 0x6f22, 0x625a, 0x767c, 0x7b50, 0x512d, 0x4d64, 0x512e,
- 0x5c6d, 0x684e, 0x7079, 0x4e35, 0x667c, 0x577b, 0x5056, 0x5d75,
- 0x7771, 0x767d, 0x5b77, 0x7b6a, 0x695c, 0x5941, 0x7572, 0x6045,
- 0x6a54, 0x7942, 0x6a3c, 0x5245, 0x7b51, 0x6740, 0x6b25, 0x5f7a,
- 0x6322, 0x5739, 0x6943, 0x687d, 0x682f, 0x7253, 0x7b29, 0x5825,
- 0x554b, 0x5048, 0x512f, 0x5763, 0x6046, 0x5622, 0x6d70, 0x5773,
- 0x7c54, 0x5a57, 0x4c5f, 0x7254, 0x5130, 0x4c60, 0x5b7d, 0x733f,
- 0x7051, 0x7c3b, 0x6230, 0x6625, 0x625b, 0x5f5e, 0x6047, 0x726f,
- 0x4c61, 0x566a, 0x6742, 0x4e36, 0x7340, 0x4d7e, 0x7b52, 0x7878,
- 0x777b, 0x683f, 0x6837, 0x6d36, 0x5c3a, 0x4c34, 0x7177, 0x6838,
- 0x4a76, 0x6424, 0x7456, 0x5f66, 0x5f27, 0x5f67, 0x6141, 0x6944,
- 0x5c4b, 0x6945, 0x6f23, 0x6b26, 0x4b23, 0x6369, 0x517b, 0x6f24,
- 0x6f6b, 0x5034, 0x4d23, 0x6866, 0x6f25, 0x534c, 0x5a6d, 0x573a,
- 0x7255, 0x7565, 0x596f, 0x7934, 0x5554, 0x7d4f, 0x5b63, 0x7161,
- 0x6c36, 0x7b7e, 0x5357, 0x5131, 0x4b31, 0x5132, 0x4b32, 0x7142,
- 0x7461, 0x7935, 0x6143, 0x6142, 0x6b77, 0x5f28, 0x4b4a, 0x6639,
- 0x785e, 0x792a, 0x4a77, 0x6d37, 0x5338, 0x7256, 0x5459, 0x6e45,
- 0x7270, 0x4a32, 0x5c3b, 0x7178, 0x6c37, 0x654a, 0x7640, 0x7d5d,
- 0x5463, 0x4c62, 0x7754, 0x5765, 0x5343, 0x5826, 0x7641, 0x5d76,
- 0x4d40, 0x655c, 0x654b, 0x6144, 0x6830, 0x7430, 0x736a, 0x5a6e,
- 0x573b, 0x6231, 0x572a, 0x567b, 0x645f, 0x4a56, 0x6b28, 0x5b7e,
- 0x7642, 0x6f3b, 0x547d, 0x6048, 0x6839, 0x6f26, 0x4d24, 0x5474,
- 0x5b21, 0x5b5c, 0x5b5d, 0x6e5c, 0x4b4b, 0x7c55, 0x4e6b, 0x4d41,
- 0x7b53, 0x792b, 0x7554, 0x5929, 0x695d, 0x5b4d, 0x5d4e, 0x6743,
- 0x6c4c, 0x796c, 0x4b4c, 0x607c, 0x5428, 0x6d53, 0x586f, 0x7257,
- 0x4a78, 0x5a6f, 0x5654, 0x594d, 0x586e, 0x7241, 0x5f53, 0x5a70,
- 0x626a, 0x607d, 0x5878, 0x772f, 0x5a36, 0x4a57, 0x7258, 0x5879,
- 0x7a5f, 0x4f6f, 0x5942, 0x7052, 0x6451, 0x7337, 0x7a60, 0x6f6c,
- 0x6232, 0x543d, 0x594e, 0x7462, 0x5429, 0x4d42, 0x675a, 0x7259,
- 0x592a, 0x583e, 0x5c2d, 0x626b, 0x567c, 0x4a79, 0x545a, 0x7457,
- 0x4c21, 0x4f3a, 0x7538, 0x5943, 0x5068, 0x6345, 0x6b78, 0x7231,
- 0x4f3b, 0x532d, 0x6861, 0x4e6c, 0x6034, 0x5e63, 0x5d77, 0x7232,
- 0x7376, 0x765b, 0x577e, 0x785f, 0x7772, 0x5029, 0x665a, 0x7526,
- 0x573c, 0x4c63, 0x665b, 0x5d5d, 0x5133, 0x6f6d, 0x565e, 0x6474,
- 0x616f, 0x5d78, 0x684f, 0x4a65, 0x5c21, 0x6035, 0x7c2c, 0x7c2d,
- 0x5827, 0x6d38, 0x5b36, 0x5670, 0x732f, 0x4d25, 0x5a71, 0x5828,
- 0x4c64, 0x5134, 0x4a58, 0x5a72, 0x7527, 0x7528, 0x6626, 0x556c,
- 0x5578, 0x5a73, 0x6346, 0x5e64, 0x5e65, 0x5135, 0x5136, 0x5137,
- 0x7233, 0x695e, 0x7053, 0x7234, 0x7054, 0x4b64, 0x7b54, 0x7566,
- 0x636a, 0x5e66, 0x5f54, 0x7879, 0x702e, 0x5138, 0x565f, 0x5057,
- 0x7c21, 0x6f6e, 0x5c58, 0x695f, 0x655d, 0x7d7b, 0x6049, 0x5649,
- 0x542a, 0x654c, 0x6960, 0x5058, 0x7c22, 0x543e, 0x6233, 0x5e67,
- 0x5c3c, 0x5236, 0x7555, 0x4e21, 0x7529, 0x5d79, 0x5d7a, 0x7055,
- 0x765f, 0x725a, 0x646b, 0x7271, 0x6c39, 0x7d7c, 0x612a, 0x4a59,
- 0x6f6f, 0x752a, 0x6c79, 0x782d, 0x7242, 0x7643, 0x5752, 0x7922,
- 0x7056, 0x707a, 0x7660, 0x6973, 0x7243, 0x542b, 0x4a33, 0x4d26,
- 0x4d43, 0x4d5a, 0x594f, 0x7644, 0x6e5d, 0x6744, 0x6234, 0x5f62,
- 0x675b, 0x6831, 0x7c2e, 0x654d, 0x7a6b, 0x4f3c, 0x4f62, 0x4d76,
- 0x6f70, 0x743e, 0x544d, 0x7338, 0x6921, 0x7272, 0x736b, 0x7057,
- 0x4f57, 0x4f5f, 0x6840, 0x6841, 0x4f63, 0x6922, 0x502a, 0x7341,
- 0x502b, 0x5464, 0x6f3c, 0x5821, 0x595f, 0x7357, 0x5c3d, 0x4c65,
- 0x6d71, 0x7162, 0x545b, 0x6235, 0x4a66, 0x532e, 0x4c66, 0x7153,
- 0x7567, 0x4a5a, 0x7b6e, 0x6145, 0x5f69, 0x6e5e, 0x7742, 0x5822,
- 0x5d2c, 0x702f, 0x563d, 0x612b, 0x7936, 0x5475, 0x5049, 0x6f27,
- 0x626c, 0x5b6a, 0x4e4c, 0x7568, 0x7755, 0x534d, 0x737e, 0x5035,
- 0x607e, 0x5f7b, 0x665d, 0x6824, 0x4b4d, 0x6f28, 0x6e34, 0x5a58,
- 0x5139, 0x5f29, 0x7330, 0x4c44, 0x4e37, 0x6f29, 0x5f55, 0x6d57,
- 0x6e46, 0x6f3d, 0x7c56, 0x5b74, 0x6f2a, 0x7839, 0x7569, 0x6359,
- 0x6146, 0x543f, 0x5e68, 0x706a, 0x7342, 0x532f, 0x4a5b, 0x7c57,
- 0x6d58, 0x6147, 0x7458, 0x5633, 0x5d2d, 0x553e, 0x7143, 0x6e5f,
- 0x566b, 0x7459, 0x5766, 0x5a37, 0x5d7b, 0x5d4f, 0x5823, 0x5a59,
- 0x7058, 0x6f44, 0x6158, 0x7154, 0x6d72, 0x555b, 0x555c, 0x7344,
- 0x4b57, 0x6236, 0x6f71, 0x7b55, 0x5358, 0x5d50, 0x7059, 0x4b33,
- 0x555d, 0x4d27, 0x502c, 0x513a, 0x7144, 0x6533, 0x7b75, 0x6961,
- 0x7d60, 0x7c3c, 0x5a22, 0x5a23, 0x5221, 0x526f, 0x626d, 0x5e69,
- 0x4e5c, 0x7235, 0x5064, 0x5d51, 0x6148, 0x5b37, 0x5f63, 0x6d39,
- 0x7145, 0x734f, 0x572b, 0x612c, 0x636b, 0x6e47, 0x6149, 0x4a7a,
- 0x707b, 0x7a61, 0x705a, 0x4c67, 0x5a74, 0x4c3f, 0x4e6d, 0x5529,
- 0x7a62, 0x5065, 0x6b56, 0x6c5f, 0x5f7c, 0x7756, 0x5e6a, 0x4b34,
- 0x6f3e, 0x4c35, 0x4f3d, 0x6f72, 0x6237, 0x4c68, 0x707c, 0x5660,
- 0x7146, 0x6238, 0x6b2b, 0x4b35, 0x5851, 0x744e, 0x7377, 0x5746,
- 0x513b, 0x772a, 0x6d4a, 0x5753, 0x587a, 0x7645, 0x514c, 0x5d7c,
- 0x5f7d, 0x7965, 0x604a, 0x727d, 0x5330, 0x7473, 0x5a49, 0x665e,
- 0x783a, 0x6850, 0x587b, 0x6a55, 0x5623, 0x7646, 0x725b, 0x647c,
- 0x6832, 0x5a5a, 0x725c, 0x7b56, 0x6932, 0x6e2d, 0x7a63, 0x5c6e,
- 0x756a, 0x6660, 0x707d, 0x572c, 0x7545, 0x6e60, 0x5b65, 0x5d5e,
- 0x5970, 0x6923, 0x7179, 0x7244, 0x604b, 0x6924, 0x6239, 0x6331,
- 0x7c6b, 0x4d28, 0x4c36, 0x705b, 0x663a, 0x4d29, 0x7343, 0x6159,
- 0x6f2b, 0x6745, 0x6069, 0x7345, 0x5440, 0x553f, 0x5d2e, 0x797c,
- 0x4c40, 0x6522, 0x4e38, 0x5852, 0x7956, 0x712a, 0x4e51, 0x7647,
- 0x5b6b, 0x5f7e, 0x5861, 0x7773, 0x5767, 0x547e, 0x513c, 0x654f,
- 0x4b36, 0x5a38, 0x4d44, 0x563e, 0x623a, 0x4f58, 0x604c, 0x6b79,
- 0x7d7d, 0x5768, 0x4b58, 0x6962, 0x683a, 0x6347, 0x6c4d, 0x6c4e,
- 0x563f, 0x6327, 0x5f56, 0x7d68, 0x6e61, 0x7628, 0x5d7d, 0x783b,
- 0x6851, 0x7957, 0x4e6e, 0x6c4f, 0x6925, 0x5655, 0x4d45, 0x6d3a,
- 0x513d, 0x4f3e, 0x6c3b, 0x5231, 0x4c69, 0x5944, 0x697c, 0x513e,
- 0x6c3c, 0x652d, 0x7730, 0x4c6a, 0x5344, 0x5640, 0x567d, 0x6121,
- 0x5e3d, 0x7629, 0x5a24, 0x5624, 0x7546, 0x6122, 0x6946, 0x7245,
- 0x7469, 0x566c, 0x6b53, 0x6c3d, 0x625c, 0x5e6b, 0x705c, 0x6b3f,
- 0x574e, 0x513f, 0x752b, 0x797d, 0x4a5c, 0x4d46, 0x7236, 0x5d7e,
- 0x4c37, 0x5b38, 0x5069, 0x4e5d, 0x6b40, 0x7d22, 0x784b, 0x6a56,
- 0x7130, 0x5b4e, 0x7743, 0x5b4f, 0x4b24, 0x7860, 0x7b57, 0x6b4a,
- 0x6021, 0x4e4d, 0x545c, 0x7d58, 0x5276, 0x7237, 0x7a76, 0x762a,
- 0x7a77, 0x5866, 0x7431, 0x6852, 0x4a45, 0x4c6b, 0x626e, 0x623b,
- 0x772d, 0x7861, 0x736c, 0x5e21, 0x647d, 0x636c, 0x5d2f, 0x5d30,
- 0x4b37, 0x6853, 0x6123, 0x5260, 0x707e, 0x6926, 0x4b72, 0x6d73,
- 0x5c59, 0x604d, 0x775a, 0x5b39, 0x4c2e, 0x5a5b, 0x4d47, 0x5d31,
- 0x582f, 0x6323, 0x4e6f, 0x7273, 0x7833, 0x604e, 0x757d, 0x6b6c,
- 0x5345, 0x7c6c, 0x525b, 0x546b, 0x5e22, 0x6566, 0x7030, 0x5544,
- 0x6d74, 0x636d, 0x6842, 0x6d75, 0x577c, 0x6d3b, 0x762b, 0x7238,
- 0x7648, 0x5366, 0x725d, 0x4f3f, 0x6b2c, 0x4f40, 0x6628, 0x7d69,
- 0x4f41, 0x605f, 0x5e6c, 0x6022, 0x743f, 0x626f, 0x5971, 0x7147,
- 0x4b38, 0x797e, 0x5b3a, 0x5a75, 0x766c, 0x5a5c, 0x7a64, 0x604f,
- 0x5d32, 0x6629, 0x6f73, 0x736d, 0x6b7a, 0x7966, 0x4a5d, 0x555e,
- 0x4a5e, 0x5f64, 0x667d, 0x752c, 0x6475, 0x6963, 0x6d4b, 0x4f64,
- 0x5853, 0x5d33, 0x546c, 0x7239, 0x5f37, 0x4b4e, 0x7b58, 0x5059,
- 0x5d52, 0x7774, 0x675c, 0x6425, 0x7c23, 0x5b3b, 0x723a, 0x697d,
- 0x504a, 0x7556, 0x5945, 0x6434, 0x6d27, 0x6a3d, 0x667e, 0x7744,
- 0x752d, 0x5960, 0x4a34, 0x7862, 0x4f42, 0x6c3e, 0x6534, 0x4d48,
- 0x6e48, 0x6748, 0x4d49, 0x7937, 0x7168, 0x5972, 0x5b75, 0x4a35,
- 0x5946, 0x5849, 0x592b, 0x6d3c, 0x5854, 0x5c5a, 0x623c, 0x7c6d,
- 0x6c60, 0x527e, 0x6947, 0x662a, 0x6270, 0x7a3b, 0x752e, 0x7b2a,
- 0x6c7b, 0x6c3f, 0x7c58, 0x5465, 0x7943, 0x6e62, 0x5769, 0x6d76,
- 0x5e6d, 0x4c6c, 0x636e, 0x6854, 0x7a78, 0x5d34, 0x6435, 0x5830,
- 0x5855, 0x746a, 0x4e39, 0x5661, 0x4f52, 0x5036, 0x4e22, 0x736e,
- 0x7378, 0x5c4c, 0x504b, 0x7c24, 0x4d4a, 0x5754, 0x5e23, 0x6460,
- 0x6e49, 0x625d, 0x757e, 0x542c, 0x5551, 0x5870, 0x7843, 0x6a57,
- 0x7557, 0x583f, 0x7d40, 0x6b2d, 0x552a, 0x6728, 0x6e4a, 0x4a67,
- 0x7863, 0x545d, 0x6a58, 0x7b59, 0x6d77, 0x6535, 0x502d, 0x7171,
- 0x623d, 0x6348, 0x5955, 0x5f2a, 0x5b3c, 0x7864, 0x717a, 0x6536,
- 0x736f, 0x7b5a, 0x6160, 0x592c, 0x756b, 0x6036, 0x6948, 0x4b4f,
- 0x6349, 0x5e6e, 0x623e, 0x5c6f, 0x5625, 0x6271, 0x567e, 0x5921,
- 0x5840, 0x5c5b, 0x6d3d, 0x5f38, 0x6a25, 0x572d, 0x7379, 0x6d78,
- 0x7547, 0x614a, 0x6b63, 0x725e, 0x784c, 0x6a59, 0x5346, 0x5b66,
- 0x752f, 0x4e70, 0x697e, 0x7b36, 0x6272, 0x4f72, 0x7739, 0x5973,
- 0x614b, 0x5a5d, 0x5a39, 0x6b7b, 0x4b39, 0x6d79, 0x6060, 0x7440,
- 0x7d3c, 0x5f31, 0x636f, 0x6023, 0x7d39, 0x7031, 0x4d4b, 0x6d3e,
- 0x5540, 0x6370, 0x6d7a, 0x6964, 0x556d, 0x675d, 0x5476, 0x6537,
- 0x5b67, 0x623f, 0x6e4b, 0x5774, 0x705d, 0x4e2b, 0x675e, 0x5656,
- 0x614c, 0x6833, 0x656e, 0x5c22, 0x6050, 0x5535, 0x5521, 0x7b5b,
- 0x794b, 0x4b73, 0x7425, 0x7a48, 0x5657, 0x6965, 0x7b5c, 0x7d50,
- 0x7b76, 0x5a25, 0x5b3d, 0x6c62, 0x4d77, 0x705e, 0x7649, 0x5e6f,
- 0x5331, 0x7c6e, 0x6843, 0x7148, 0x4e71, 0x796d, 0x7274, 0x6436,
- 0x7539, 0x5c70, 0x6371, 0x6825, 0x723b, 0x5e24, 0x5a4c, 0x4a69,
- 0x635a, 0x7c59, 0x6a5a, 0x7944, 0x6324, 0x7b5d, 0x6f4a, 0x6844,
- 0x554c, 0x6b57, 0x592d, 0x7b2b, 0x5359, 0x5522, 0x765e, 0x5a76,
- 0x6051, 0x6928, 0x7579, 0x7a2f, 0x6b7c, 0x606a, 0x6332, 0x5545,
- 0x7163, 0x556e, 0x4d4c, 0x6d59, 0x5841, 0x7a6c, 0x716b, 0x7a3c,
- 0x6662, 0x7a65, 0x627a, 0x4a36, 0x6437, 0x6a5b, 0x757a, 0x7b2c,
- 0x4f43, 0x6b7d, 0x787a, 0x5f39, 0x6171, 0x5224, 0x757b, 0x505a,
- 0x505b, 0x6a3e, 0x5931, 0x4a37, 0x5367, 0x7865, 0x5332, 0x6240,
- 0x725f, 0x4d65, 0x792c, 0x4d4d, 0x6e2e, 0x562e, 0x576a, 0x6760,
- 0x6b2e, 0x4f59, 0x5c4d, 0x6d7b, 0x5e70, 0x576b, 0x5e25, 0x5f57,
- 0x5b50, 0x5b51, 0x5523, 0x7032, 0x5c5c, 0x4a68, 0x7866, 0x5c4e,
- 0x6a5c, 0x5b52, 0x6933, 0x775b, 0x6328, 0x572e, 0x6061, 0x4b3a,
- 0x6551, 0x505c, 0x5541, 0x584a, 0x6329, 0x6024, 0x6929, 0x5347,
- 0x5c5d, 0x782e, 0x4c38, 0x502e, 0x5872, 0x634a, 0x4c2f, 0x542d,
- 0x7651, 0x504c, 0x4a46, 0x5542, 0x4e3a, 0x4a47, 0x7a30, 0x5f58,
- 0x753a, 0x656b, 0x6f74, 0x5d35, 0x4d2a, 0x6372, 0x7b77, 0x7750,
- 0x7d3a, 0x7d61, 0x767e, 0x5140, 0x6845, 0x6438, 0x6168, 0x4c41,
- 0x526d, 0x5b3e, 0x6062, 0x7a49, 0x614d, 0x4a38, 0x7260, 0x7149,
- 0x5e71, 0x705f, 0x7844, 0x6e4c, 0x5e72, 0x6749, 0x6273, 0x6761,
- 0x634b, 0x634c, 0x4f78, 0x6f2c, 0x7d7e, 0x7c25, 0x7a31, 0x5f59,
- 0x6052, 0x745a, 0x714a, 0x4e23, 0x723c, 0x6c63, 0x6025, 0x772b,
- 0x6b2f, 0x655e, 0x6124, 0x4d2b, 0x5974, 0x6826, 0x4d4e, 0x6169,
- 0x7c6f, 0x6063, 0x6241, 0x4e24, 0x5e26, 0x6b7e, 0x6b5d, 0x7060,
- 0x745b, 0x6274, 0x5348, 0x746b, 0x6e35, 0x7558, 0x555f, 0x5665,
- 0x6b30, 0x7463, 0x634d, 0x7474, 0x7a32, 0x6f75, 0x4a5f, 0x6b31,
- 0x6d3f, 0x7d49, 0x6426, 0x7924, 0x7033, 0x656c, 0x5167, 0x5947,
- 0x6457, 0x6a5d, 0x5477, 0x5a3a, 0x5a4d, 0x794c, 0x615a, 0x5b3f,
- 0x4c45, 0x6c50, 0x4b3b, 0x5e73, 0x692a, 0x5948, 0x6e63, 0x573d,
- 0x4f44, 0x504d, 0x7c26, 0x717b, 0x7d52, 0x5141, 0x635b, 0x5349,
- 0x5c4f, 0x4c6d, 0x5e27, 0x663b, 0x6c21, 0x4c39, 0x7b5e, 0x6762,
- 0x5441, 0x5c28, 0x6242, 0x7358, 0x6553, 0x7359, 0x7346, 0x4d5b,
- 0x4d2c, 0x7c43, 0x5467, 0x5142, 0x7925, 0x6855, 0x634e, 0x544a,
- 0x5f5a, 0x7b5f, 0x6763, 0x787b, 0x634f, 0x7530, 0x5867, 0x5949,
- 0x782f, 0x6f76, 0x5d36, 0x6e2f, 0x4d78, 0x5e38, 0x7c27, 0x777c,
- 0x7731, 0x4e3b, 0x7421, 0x6e4d, 0x612e, 0x6c43, 0x4f7e, 0x783f,
- 0x5862, 0x5368, 0x5e28, 0x7464, 0x6c42, 0x5975, 0x7945, 0x5d53,
- 0x5671, 0x6c7c, 0x7c70, 0x6d40, 0x4a39, 0x6e64, 0x7261, 0x5e39,
- 0x5672, 0x5e74, 0x5f5b, 0x5b53, 0x7a67, 0x5863, 0x7441, 0x5d37,
- 0x7275, 0x542e, 0x5673, 0x5d38, 0x4f45, 0x5f5f, 0x723e, 0x7621,
- 0x6b4b, 0x717c, 0x7347, 0x606b, 0x6d7c, 0x615b, 0x6e65, 0x5e75,
- 0x7a53, 0x714b, 0x502f, 0x5d39, 0x5143, 0x7531, 0x6a46, 0x7061,
- 0x762c, 0x7559, 0x706b, 0x5d3a, 0x723f, 0x7745, 0x5b22, 0x7276,
- 0x4a3a, 0x7775, 0x4b65, 0x6e66, 0x6053, 0x4e25, 0x5658, 0x542f,
- 0x6949, 0x534e, 0x7442, 0x4b66, 0x7121, 0x6b32, 0x7122, 0x6b33,
- 0x7034, 0x4b74, 0x5430, 0x7332, 0x7b37, 0x756c, 0x6e67, 0x7432,
- 0x756d, 0x4f73, 0x7062, 0x6e4e, 0x714c, 0x6538, 0x5775, 0x6373,
- 0x4f65, 0x4f46, 0x7333, 0x6458, 0x4f79, 0x4f5a, 0x7a4d, 0x6663,
- 0x7262, 0x756e, 0x4a3b, 0x635c, 0x4e72, 0x5659, 0x6e30, 0x7465,
- 0x5842, 0x5c50, 0x4c6e, 0x5560, 0x764a, 0x7d4a, 0x5856, 0x744f,
- 0x5626, 0x5c3e, 0x5b54, 0x5747, 0x727e, 0x714d, 0x6243, 0x5c5e,
- 0x5c5f, 0x6f2d, 0x662b, 0x795d, 0x6a3f, 0x6f2e, 0x7450, 0x4e73,
- 0x662c, 0x4e5e, 0x5579, 0x6374, 0x4d50, 0x5538, 0x777d, 0x5c29,
- 0x5e76, 0x5c2a, 0x7263, 0x6934, 0x525c, 0x6966, 0x6376, 0x674a,
- 0x504e, 0x5a77, 0x4a3c, 0x6e68, 0x5a5e, 0x7277, 0x627b, 0x4c26,
- 0x5a3b, 0x6e69, 0x755a, 0x775c, 0x616a, 0x4e41, 0x5431, 0x7d31,
- 0x663d, 0x7b2d, 0x7867, 0x614e, 0x7762, 0x756f, 0x4f47, 0x5432,
- 0x4c6f, 0x5468, 0x6e4f, 0x7757, 0x6026, 0x5641, 0x615c, 0x7063,
- 0x7164, 0x5c71, 0x5627, 0x7475, 0x714e, 0x7264, 0x5030, 0x6c6f,
- 0x793a, 0x6b35, 0x546d, 0x6244, 0x6967, 0x6b34, 0x6a21, 0x783c,
- 0x4e26, 0x7946, 0x7c5a, 0x5433, 0x5339, 0x6a5e, 0x692b, 0x6161,
- 0x534f, 0x7476, 0x6a40, 0x614f, 0x4c3a, 0x6e6a, 0x7064, 0x7334,
- 0x546e, 0x7240, 0x7165, 0x7443, 0x6054, 0x6b36, 0x5721, 0x4b68,
- 0x792d, 0x692d, 0x5864, 0x7a33, 0x6245, 0x7c3d, 0x6c44, 0x5831,
- 0x5c2b, 0x5524, 0x6b69, 0x683b, 0x5857, 0x7b2e, 0x5161, 0x5b40,
- 0x753e, 0x5e77, 0x4a7b, 0x7746, 0x4f48, 0x6150, 0x6e50, 0x6974,
- 0x4e74, 0x554d, 0x4f5b, 0x5d3b, 0x4e2c, 0x6968, 0x5434, 0x6447,
- 0x755b, 0x7a41, 0x5e29, 0x5478, 0x6f77, 0x5333, 0x6b37, 0x6f78,
- 0x755c, 0x6d4c, 0x5b55, 0x714f, 0x7150, 0x7532, 0x592e, 0x552c,
- 0x6246, 0x7d23, 0x7b65, 0x5f2b, 0x6275, 0x762d, 0x7533, 0x7035,
- 0x6125, 0x755d, 0x6c22, 0x6d7d, 0x7534, 0x7b38, 0x5b23, 0x564a,
- 0x4b59, 0x6554, 0x737a, 0x6b38, 0x6037, 0x576c, 0x716c, 0x652f,
- 0x5561, 0x576d, 0x5151, 0x6172, 0x6f79, 0x5d3c, 0x765c, 0x7065,
- 0x7444, 0x6969, 0x737b, 0x546f, 0x4c22, 0x777e, 0x5f3c, 0x6b4d,
- 0x5037, 0x5642, 0x682d, 0x6f2f, 0x4b25, 0x4b69, 0x7a68, 0x4c46,
- 0x6667, 0x6a47, 0x5b24, 0x4f49, 0x627c, 0x6f7a, 0x6b5e, 0x7548,
- 0x545e, 0x6055, 0x6f30, 0x6247, 0x592f, 0x7967, 0x6765, 0x4f4a,
- 0x6151, 0x6248, 0x6f7b, 0x7a79, 0x5c72, 0x6027, 0x7868, 0x4b6a,
- 0x4b3c, 0x5662, 0x755e, 0x755f, 0x6e36, 0x6276, 0x534a, 0x6f7c,
- 0x5144, 0x6f31, 0x5145, 0x505e, 0x5961, 0x6038, 0x4d51, 0x7339,
- 0x674c, 0x5628, 0x4e27, 0x5435, 0x6448, 0x5334, 0x6b39, 0x4b75,
- 0x765d, 0x7123, 0x4c47, 0x694a, 0x6170, 0x7560, 0x7b2f, 0x4b51,
- 0x7b60, 0x7265, 0x6c70, 0x706c, 0x6e6b, 0x694b, 0x4c70, 0x572f,
- 0x7321, 0x7c75, 0x7124, 0x6056, 0x6f32, 0x7451, 0x7721, 0x7151,
- 0x4a7c, 0x4a7d, 0x4e4e, 0x7348, 0x733a, 0x6d7e, 0x5a26, 0x606c,
- 0x784d, 0x4b52, 0x6b4e, 0x7958, 0x7959, 0x4a60, 0x5a4a, 0x4b26,
- 0x4a48, 0x796e, 0x5b6c, 0x5031, 0x556f, 0x6673, 0x6722, 0x6459,
- 0x6461, 0x7c44, 0x796f, 0x4f74, 0x7766, 0x4e3c, 0x7445, 0x5c23,
- 0x5d3d, 0x7446, 0x7821, 0x6856, 0x5b41, 0x7066, 0x6439, 0x766d,
- 0x792e, 0x5d3e, 0x5730, 0x5868, 0x4b3d, 0x795a, 0x784e, 0x7970,
- 0x606d, 0x6333, 0x7433, 0x6a42, 0x7266, 0x7036, 0x5b56, 0x6b64,
- 0x7267, 0x5755, 0x5436, 0x7968, 0x5741, 0x6555, 0x696a, 0x574c,
- 0x5369, 0x6249, 0x7c5b, 0x4d2d, 0x4c30, 0x6a22, 0x6476, 0x5040,
- 0x7037, 0x6e21, 0x5776, 0x624a, 0x624b, 0x7a4f, 0x6b5f, 0x564b,
- 0x7434, 0x6d4d, 0x6452, 0x6a29, 0x643a, 0x7322, 0x4d52, 0x764b,
- 0x7166, 0x6d41, 0x683c, 0x6e51, 0x7067, 0x624c, 0x642a, 0x7561,
- 0x6d5a, 0x576e, 0x5171, 0x696b, 0x696c, 0x6064, 0x5a27, 0x5d54,
- 0x6a23, 0x5643, 0x5674, 0x5a5f, 0x6f33, 0x624d, 0x6f7d, 0x7268,
- 0x6f45, 0x6767, 0x577d, 0x674e, 0x5f5c, 0x7947, 0x5976, 0x5f2c,
- 0x565a, 0x5c24, 0x7038, 0x557a, 0x6477, 0x5644, 0x746c, 0x6f7e,
- 0x7021, 0x5e2a, 0x5a3c, 0x587c, 0x7a54, 0x6c65, 0x7c28, 0x6c66,
- 0x584b, 0x7b39, 0x6453, 0x4d79, 0x4f53, 0x4a6a, 0x4f54, 0x783d,
- 0x7447, 0x6a5f, 0x795b, 0x5437, 0x6b65, 0x6152, 0x6a24, 0x7a42,
- 0x7b61, 0x7a6d, 0x7022, 0x4c71, 0x7a23, 0x6277, 0x624e, 0x6975,
- 0x616b, 0x6768, 0x6857, 0x5a78, 0x544b, 0x7776, 0x5645, 0x5469,
- 0x7a7a, 0x4c72, 0x775d, 0x5e3a, 0x4e28, 0x7039, 0x647e, 0x6449,
- 0x6454, 0x6a43, 0x6f34, 0x573e, 0x7b62, 0x4d53, 0x6f35, 0x7a69,
- 0x7926, 0x5f3d, 0x7747, 0x787d, 0x787c, 0x5e2b, 0x5b68, 0x635d,
- 0x6162, 0x5146, 0x7650, 0x6b66, 0x5a79, 0x6c47, 0x5e78, 0x7869,
- 0x635e, 0x4e75, 0x7a43, 0x6557, 0x6c48, 0x7349, 0x643b, 0x662e,
- 0x6f36, 0x5c3f, 0x4e3d, 0x5843, 0x504f, 0x4f7a, 0x734a, 0x6057,
- 0x5147, 0x692e, 0x683d, 0x7a44, 0x624f, 0x7a45, 0x7938, 0x5c60,
- 0x7b30, 0x5829, 0x655f, 0x7927, 0x766e, 0x764c, 0x6278, 0x6c71,
- 0x5a60, 0x7152, 0x524c, 0x4f4b, 0x4a3d, 0x5d3f, 0x766f, 0x5e79,
- 0x7a34, 0x552d, 0x7167, 0x5e3e, 0x5c40, 0x5148, 0x5149, 0x783e,
- 0x4b76, 0x5479, 0x7562, 0x6153, 0x5869, 0x787e, 0x4f4c, 0x7d24,
- 0x4e76, 0x7a50, 0x4c73, 0x663e, 0x762e, 0x5570, 0x514a, 0x7c3e,
- 0x5571, 0x4d69, 0x7a35, 0x6250, 0x7477, 0x4d54, 0x6723, 0x5b25,
- 0x6251, 0x5722, 0x7763, 0x6a26, 0x5021, 0x4e5a, 0x7b6b, 0x5b26,
- 0x5b5e, 0x5865, 0x6a60, 0x582a, 0x6560, 0x565b, 0x6f46, 0x786a,
- 0x6455, 0x4e77, 0x6058, 0x576f, 0x746d, 0x4d66, 0x4c74, 0x7563,
- 0x644a, 0x5c61, 0x7948, 0x7c3f, 0x6827, 0x5844, 0x4b3e, 0x5c2e,
- 0x5777, 0x7068, 0x5d40, 0x4f4d, 0x5c73, 0x5930, 0x6669, 0x643c,
- 0x6a44, 0x646c, 0x6465, 0x7b78, 0x4c3b, 0x643d, 0x4d5c, 0x5977,
- 0x5d5f, 0x6d4e, 0x5950, 0x6523, 0x794d, 0x4d2e, 0x4f4e, 0x762f,
- 0x7d53, 0x6b6d, 0x565c, 0x6524, 0x5536, 0x565d, 0x7969, 0x6724,
- 0x5663, 0x514b, 0x5664, 0x5572, 0x5e7a, 0x5778, 0x586a, 0x4f55,
- 0x587d, 0x582b, 0x7d4b, 0x7c5c, 0x6028, 0x5573, 0x7d59, 0x4c23,
- 0x5979, 0x536a, 0x7575, 0x6f47, 0x535a, 0x5a3d, 0x6828, 0x5c2f,
- 0x7023, 0x4d55, 0x6029, 0x5e2c, 0x703a, 0x6e31, 0x6e32, 0x764d,
- 0x6e52, 0x5646, 0x6065, 0x733b, 0x6561, 0x644b, 0x5723, 0x5b42,
- 0x4a7e, 0x4f4f, 0x3021, 0x3022, 0x3023, 0x3024, 0x3025, 0x3026,
- 0x3027, 0x3028, 0x3029, 0x302a, 0x302b, 0x302c, 0x302d, 0x302e,
- 0x302f, 0x3030, 0x3031, 0x3032, 0x3033, 0x3034, 0x3035, 0x3036,
- 0x3037, 0x3038, 0x3039, 0x303a, 0x303b, 0x303c, 0x303d, 0x303e,
- 0x303f, 0x3040, 0x3041, 0x3042, 0x3043, 0x3044, 0x3045, 0x3046,
- 0x3047, 0x3048, 0x3049, 0x304a, 0x304b, 0x304c, 0x304d, 0x304e,
- 0x304f, 0x3050, 0x3051, 0x3052, 0x3053, 0x3054, 0x3055, 0x3056,
- 0x3057, 0x3058, 0x3059, 0x305a, 0x305b, 0x305c, 0x305d, 0x305e,
- 0x305f, 0x3060, 0x3061, 0x3062, 0x3063, 0x3064, 0x3065, 0x3066,
- 0x3067, 0x3068, 0x3069, 0x306a, 0x306b, 0x306c, 0x306d, 0x306e,
- 0x306f, 0x3070, 0x3071, 0x3072, 0x3073, 0x3074, 0x3075, 0x3076,
- 0x3077, 0x3078, 0x3079, 0x307a, 0x307b, 0x307c, 0x307d, 0x307e,
- 0x3121, 0x3122, 0x3123, 0x3124, 0x3125, 0x3126, 0x3127, 0x3128,
- 0x3129, 0x312a, 0x312b, 0x312c, 0x312d, 0x312e, 0x312f, 0x3130,
- 0x3131, 0x3132, 0x3133, 0x3134, 0x3135, 0x3136, 0x3137, 0x3138,
- 0x3139, 0x313a, 0x313b, 0x313c, 0x313d, 0x313e, 0x313f, 0x3140,
- 0x3141, 0x3142, 0x3143, 0x3144, 0x3145, 0x3146, 0x3147, 0x3148,
- 0x3149, 0x314a, 0x314b, 0x314c, 0x314d, 0x314e, 0x314f, 0x3150,
- 0x3151, 0x3152, 0x3153, 0x3154, 0x3155, 0x3156, 0x3157, 0x3158,
- 0x3159, 0x315a, 0x315b, 0x315c, 0x315d, 0x315e, 0x315f, 0x3160,
- 0x3161, 0x3162, 0x3163, 0x3164, 0x3165, 0x3166, 0x3167, 0x3168,
- 0x3169, 0x316a, 0x316b, 0x316c, 0x316d, 0x316e, 0x316f, 0x3170,
- 0x3171, 0x3172, 0x3173, 0x3174, 0x3175, 0x3176, 0x3177, 0x3178,
- 0x3179, 0x317a, 0x317b, 0x317c, 0x317d, 0x317e, 0x3221, 0x3222,
- 0x3223, 0x3224, 0x3225, 0x3226, 0x3227, 0x3228, 0x3229, 0x322a,
- 0x322b, 0x322c, 0x322d, 0x322e, 0x322f, 0x3230, 0x3231, 0x3232,
- 0x3233, 0x3234, 0x3235, 0x3236, 0x3237, 0x3238, 0x3239, 0x323a,
- 0x323b, 0x323c, 0x323d, 0x323e, 0x323f, 0x3240, 0x3241, 0x3242,
- 0x3243, 0x3244, 0x3245, 0x3246, 0x3247, 0x3248, 0x3249, 0x324a,
- 0x324b, 0x324c, 0x324d, 0x324e, 0x324f, 0x3250, 0x3251, 0x3252,
- 0x3253, 0x3254, 0x3255, 0x3256, 0x3257, 0x3258, 0x3259, 0x325a,
- 0x325b, 0x325c, 0x325d, 0x325e, 0x325f, 0x3260, 0x3261, 0x3262,
- 0x3263, 0x3264, 0x3265, 0x3266, 0x3267, 0x3268, 0x3269, 0x326a,
- 0x326b, 0x326c, 0x326d, 0x326e, 0x326f, 0x3270, 0x3271, 0x3272,
- 0x3273, 0x3274, 0x3275, 0x3276, 0x3277, 0x3278, 0x3279, 0x327a,
- 0x327b, 0x327c, 0x327d, 0x327e, 0x3321, 0x3322, 0x3323, 0x3324,
- 0x3325, 0x3326, 0x3327, 0x3328, 0x3329, 0x332a, 0x332b, 0x332c,
- 0x332d, 0x332e, 0x332f, 0x3330, 0x3331, 0x3332, 0x3333, 0x3334,
- 0x3335, 0x3336, 0x3337, 0x3338, 0x3339, 0x333a, 0x333b, 0x333c,
- 0x333d, 0x333e, 0x333f, 0x3340, 0x3341, 0x3342, 0x3343, 0x3344,
- 0x3345, 0x3346, 0x3347, 0x3348, 0x3349, 0x334a, 0x334b, 0x334c,
- 0x334d, 0x334e, 0x334f, 0x3350, 0x3351, 0x3352, 0x3353, 0x3354,
- 0x3355, 0x3356, 0x3357, 0x3358, 0x3359, 0x335a, 0x335b, 0x335c,
- 0x335d, 0x335e, 0x335f, 0x3360, 0x3361, 0x3362, 0x3363, 0x3364,
- 0x3365, 0x3366, 0x3367, 0x3368, 0x3369, 0x336a, 0x336b, 0x336c,
- 0x336d, 0x336e, 0x336f, 0x3370, 0x3371, 0x3372, 0x3373, 0x3374,
- 0x3375, 0x3376, 0x3377, 0x3378, 0x3379, 0x337a, 0x337b, 0x337c,
- 0x337d, 0x337e, 0x3421, 0x3422, 0x3423, 0x3424, 0x3425, 0x3426,
- 0x3427, 0x3428, 0x3429, 0x342a, 0x342b, 0x342c, 0x342d, 0x342e,
- 0x342f, 0x3430, 0x3431, 0x3432, 0x3433, 0x3434, 0x3435, 0x3436,
- 0x3437, 0x3438, 0x3439, 0x343a, 0x343b, 0x343c, 0x343d, 0x343e,
- 0x343f, 0x3440, 0x3441, 0x3442, 0x3443, 0x3444, 0x3445, 0x3446,
- 0x3447, 0x3448, 0x3449, 0x344a, 0x344b, 0x344c, 0x344d, 0x344e,
- 0x344f, 0x3450, 0x3451, 0x3452, 0x3453, 0x3454, 0x3455, 0x3456,
- 0x3457, 0x3458, 0x3459, 0x345a, 0x345b, 0x345c, 0x345d, 0x345e,
- 0x345f, 0x3460, 0x3461, 0x3462, 0x3463, 0x3464, 0x3465, 0x3466,
- 0x3467, 0x3468, 0x3469, 0x346a, 0x346b, 0x346c, 0x346d, 0x346e,
- 0x346f, 0x3470, 0x3471, 0x3472, 0x3473, 0x3474, 0x3475, 0x3476,
- 0x3477, 0x3478, 0x3479, 0x347a, 0x347b, 0x347c, 0x347d, 0x347e,
- 0x3521, 0x3522, 0x3523, 0x3524, 0x3525, 0x3526, 0x3527, 0x3528,
- 0x3529, 0x352a, 0x352b, 0x352c, 0x352d, 0x352e, 0x352f, 0x3530,
- 0x3531, 0x3532, 0x3533, 0x3534, 0x3535, 0x3536, 0x3537, 0x3538,
- 0x3539, 0x353a, 0x353b, 0x353c, 0x353d, 0x353e, 0x353f, 0x3540,
- 0x3541, 0x3542, 0x3543, 0x3544, 0x3545, 0x3546, 0x3547, 0x3548,
- 0x3549, 0x354a, 0x354b, 0x354c, 0x354d, 0x354e, 0x354f, 0x3550,
- 0x3551, 0x3552, 0x3553, 0x3554, 0x3555, 0x3556, 0x3557, 0x3558,
- 0x3559, 0x355a, 0x355b, 0x355c, 0x355d, 0x355e, 0x355f, 0x3560,
- 0x3561, 0x3562, 0x3563, 0x3564, 0x3565, 0x3566, 0x3567, 0x3568,
- 0x3569, 0x356a, 0x356b, 0x356c, 0x356d, 0x356e, 0x356f, 0x3570,
- 0x3571, 0x3572, 0x3573, 0x3574, 0x3575, 0x3576, 0x3577, 0x3578,
- 0x3579, 0x357a, 0x357b, 0x357c, 0x357d, 0x357e, 0x3621, 0x3622,
- 0x3623, 0x3624, 0x3625, 0x3626, 0x3627, 0x3628, 0x3629, 0x362a,
- 0x362b, 0x362c, 0x362d, 0x362e, 0x362f, 0x3630, 0x3631, 0x3632,
- 0x3633, 0x3634, 0x3635, 0x3636, 0x3637, 0x3638, 0x3639, 0x363a,
- 0x363b, 0x363c, 0x363d, 0x363e, 0x363f, 0x3640, 0x3641, 0x3642,
- 0x3643, 0x3644, 0x3645, 0x3646, 0x3647, 0x3648, 0x3649, 0x364a,
- 0x364b, 0x364c, 0x364d, 0x364e, 0x364f, 0x3650, 0x3651, 0x3652,
- 0x3653, 0x3654, 0x3655, 0x3656, 0x3657, 0x3658, 0x3659, 0x365a,
- 0x365b, 0x365c, 0x365d, 0x365e, 0x365f, 0x3660, 0x3661, 0x3662,
- 0x3663, 0x3664, 0x3665, 0x3666, 0x3667, 0x3668, 0x3669, 0x366a,
- 0x366b, 0x366c, 0x366d, 0x366e, 0x366f, 0x3670, 0x3671, 0x3672,
- 0x3673, 0x3674, 0x3675, 0x3676, 0x3677, 0x3678, 0x3679, 0x367a,
- 0x367b, 0x367c, 0x367d, 0x367e, 0x3721, 0x3722, 0x3723, 0x3724,
- 0x3725, 0x3726, 0x3727, 0x3728, 0x3729, 0x372a, 0x372b, 0x372c,
- 0x372d, 0x372e, 0x372f, 0x3730, 0x3731, 0x3732, 0x3733, 0x3734,
- 0x3735, 0x3736, 0x3737, 0x3738, 0x3739, 0x373a, 0x373b, 0x373c,
- 0x373d, 0x373e, 0x373f, 0x3740, 0x3741, 0x3742, 0x3743, 0x3744,
- 0x3745, 0x3746, 0x3747, 0x3748, 0x3749, 0x374a, 0x374b, 0x374c,
- 0x374d, 0x374e, 0x374f, 0x3750, 0x3751, 0x3752, 0x3753, 0x3754,
- 0x3755, 0x3756, 0x3757, 0x3758, 0x3759, 0x375a, 0x375b, 0x375c,
- 0x375d, 0x375e, 0x375f, 0x3760, 0x3761, 0x3762, 0x3763, 0x3764,
- 0x3765, 0x3766, 0x3767, 0x3768, 0x3769, 0x376a, 0x376b, 0x376c,
- 0x376d, 0x376e, 0x376f, 0x3770, 0x3771, 0x3772, 0x3773, 0x3774,
- 0x3775, 0x3776, 0x3777, 0x3778, 0x3779, 0x377a, 0x377b, 0x377c,
- 0x377d, 0x377e, 0x3821, 0x3822, 0x3823, 0x3824, 0x3825, 0x3826,
- 0x3827, 0x3828, 0x3829, 0x382a, 0x382b, 0x382c, 0x382d, 0x382e,
- 0x382f, 0x3830, 0x3831, 0x3832, 0x3833, 0x3834, 0x3835, 0x3836,
- 0x3837, 0x3838, 0x3839, 0x383a, 0x383b, 0x383c, 0x383d, 0x383e,
- 0x383f, 0x3840, 0x3841, 0x3842, 0x3843, 0x3844, 0x3845, 0x3846,
- 0x3847, 0x3848, 0x3849, 0x384a, 0x384b, 0x384c, 0x384d, 0x384e,
- 0x384f, 0x3850, 0x3851, 0x3852, 0x3853, 0x3854, 0x3855, 0x3856,
- 0x3857, 0x3858, 0x3859, 0x385a, 0x385b, 0x385c, 0x385d, 0x385e,
- 0x385f, 0x3860, 0x3861, 0x3862, 0x3863, 0x3864, 0x3865, 0x3866,
- 0x3867, 0x3868, 0x3869, 0x386a, 0x386b, 0x386c, 0x386d, 0x386e,
- 0x386f, 0x3870, 0x3871, 0x3872, 0x3873, 0x3874, 0x3875, 0x3876,
- 0x3877, 0x3878, 0x3879, 0x387a, 0x387b, 0x387c, 0x387d, 0x387e,
- 0x3921, 0x3922, 0x3923, 0x3924, 0x3925, 0x3926, 0x3927, 0x3928,
- 0x3929, 0x392a, 0x392b, 0x392c, 0x392d, 0x392e, 0x392f, 0x3930,
- 0x3931, 0x3932, 0x3933, 0x3934, 0x3935, 0x3936, 0x3937, 0x3938,
- 0x3939, 0x393a, 0x393b, 0x393c, 0x393d, 0x393e, 0x393f, 0x3940,
- 0x3941, 0x3942, 0x3943, 0x3944, 0x3945, 0x3946, 0x3947, 0x3948,
- 0x3949, 0x394a, 0x394b, 0x394c, 0x394d, 0x394e, 0x394f, 0x3950,
- 0x3951, 0x3952, 0x3953, 0x3954, 0x3955, 0x3956, 0x3957, 0x3958,
- 0x3959, 0x395a, 0x395b, 0x395c, 0x395d, 0x395e, 0x395f, 0x3960,
- 0x3961, 0x3962, 0x3963, 0x3964, 0x3965, 0x3966, 0x3967, 0x3968,
- 0x3969, 0x396a, 0x396b, 0x396c, 0x396d, 0x396e, 0x396f, 0x3970,
- 0x3971, 0x3972, 0x3973, 0x3974, 0x3975, 0x3976, 0x3977, 0x3978,
- 0x3979, 0x397a, 0x397b, 0x397c, 0x397d, 0x397e, 0x3a21, 0x3a22,
- 0x3a23, 0x3a24, 0x3a25, 0x3a26, 0x3a27, 0x3a28, 0x3a29, 0x3a2a,
- 0x3a2b, 0x3a2c, 0x3a2d, 0x3a2e, 0x3a2f, 0x3a30, 0x3a31, 0x3a32,
- 0x3a33, 0x3a34, 0x3a35, 0x3a36, 0x3a37, 0x3a38, 0x3a39, 0x3a3a,
- 0x3a3b, 0x3a3c, 0x3a3d, 0x3a3e, 0x3a3f, 0x3a40, 0x3a41, 0x3a42,
- 0x3a43, 0x3a44, 0x3a45, 0x3a46, 0x3a47, 0x3a48, 0x3a49, 0x3a4a,
- 0x3a4b, 0x3a4c, 0x3a4d, 0x3a4e, 0x3a4f, 0x3a50, 0x3a51, 0x3a52,
- 0x3a53, 0x3a54, 0x3a55, 0x3a56, 0x3a57, 0x3a58, 0x3a59, 0x3a5a,
- 0x3a5b, 0x3a5c, 0x3a5d, 0x3a5e, 0x3a5f, 0x3a60, 0x3a61, 0x3a62,
- 0x3a63, 0x3a64, 0x3a65, 0x3a66, 0x3a67, 0x3a68, 0x3a69, 0x3a6a,
- 0x3a6b, 0x3a6c, 0x3a6d, 0x3a6e, 0x3a6f, 0x3a70, 0x3a71, 0x3a72,
- 0x3a73, 0x3a74, 0x3a75, 0x3a76, 0x3a77, 0x3a78, 0x3a79, 0x3a7a,
- 0x3a7b, 0x3a7c, 0x3a7d, 0x3a7e, 0x3b21, 0x3b22, 0x3b23, 0x3b24,
- 0x3b25, 0x3b26, 0x3b27, 0x3b28, 0x3b29, 0x3b2a, 0x3b2b, 0x3b2c,
- 0x3b2d, 0x3b2e, 0x3b2f, 0x3b30, 0x3b31, 0x3b32, 0x3b33, 0x3b34,
- 0x3b35, 0x3b36, 0x3b37, 0x3b38, 0x3b39, 0x3b3a, 0x3b3b, 0x3b3c,
- 0x3b3d, 0x3b3e, 0x3b3f, 0x3b40, 0x3b41, 0x3b42, 0x3b43, 0x3b44,
- 0x3b45, 0x3b46, 0x3b47, 0x3b48, 0x3b49, 0x3b4a, 0x3b4b, 0x3b4c,
- 0x3b4d, 0x3b4e, 0x3b4f, 0x3b50, 0x3b51, 0x3b52, 0x3b53, 0x3b54,
- 0x3b55, 0x3b56, 0x3b57, 0x3b58, 0x3b59, 0x3b5a, 0x3b5b, 0x3b5c,
- 0x3b5d, 0x3b5e, 0x3b5f, 0x3b60, 0x3b61, 0x3b62, 0x3b63, 0x3b64,
- 0x3b65, 0x3b66, 0x3b67, 0x3b68, 0x3b69, 0x3b6a, 0x3b6b, 0x3b6c,
- 0x3b6d, 0x3b6e, 0x3b6f, 0x3b70, 0x3b71, 0x3b72, 0x3b73, 0x3b74,
- 0x3b75, 0x3b76, 0x3b77, 0x3b78, 0x3b79, 0x3b7a, 0x3b7b, 0x3b7c,
- 0x3b7d, 0x3b7e, 0x3c21, 0x3c22, 0x3c23, 0x3c24, 0x3c25, 0x3c26,
- 0x3c27, 0x3c28, 0x3c29, 0x3c2a, 0x3c2b, 0x3c2c, 0x3c2d, 0x3c2e,
- 0x3c2f, 0x3c30, 0x3c31, 0x3c32, 0x3c33, 0x3c34, 0x3c35, 0x3c36,
- 0x3c37, 0x3c38, 0x3c39, 0x3c3a, 0x3c3b, 0x3c3c, 0x3c3d, 0x3c3e,
- 0x3c3f, 0x3c40, 0x3c41, 0x3c42, 0x3c43, 0x3c44, 0x3c45, 0x3c46,
- 0x3c47, 0x3c48, 0x3c49, 0x3c4a, 0x3c4b, 0x3c4c, 0x3c4d, 0x3c4e,
- 0x3c4f, 0x3c50, 0x3c51, 0x3c52, 0x3c53, 0x3c54, 0x3c55, 0x3c56,
- 0x3c57, 0x3c58, 0x3c59, 0x3c5a, 0x3c5b, 0x3c5c, 0x3c5d, 0x3c5e,
- 0x3c5f, 0x3c60, 0x3c61, 0x3c62, 0x3c63, 0x3c64, 0x3c65, 0x3c66,
- 0x3c67, 0x3c68, 0x3c69, 0x3c6a, 0x3c6b, 0x3c6c, 0x3c6d, 0x3c6e,
- 0x3c6f, 0x3c70, 0x3c71, 0x3c72, 0x3c73, 0x3c74, 0x3c75, 0x3c76,
- 0x3c77, 0x3c78, 0x3c79, 0x3c7a, 0x3c7b, 0x3c7c, 0x3c7d, 0x3c7e,
- 0x3d21, 0x3d22, 0x3d23, 0x3d24, 0x3d25, 0x3d26, 0x3d27, 0x3d28,
- 0x3d29, 0x3d2a, 0x3d2b, 0x3d2c, 0x3d2d, 0x3d2e, 0x3d2f, 0x3d30,
- 0x3d31, 0x3d32, 0x3d33, 0x3d34, 0x3d35, 0x3d36, 0x3d37, 0x3d38,
- 0x3d39, 0x3d3a, 0x3d3b, 0x3d3c, 0x3d3d, 0x3d3e, 0x3d3f, 0x3d40,
- 0x3d41, 0x3d42, 0x3d43, 0x3d44, 0x3d45, 0x3d46, 0x3d47, 0x3d48,
- 0x3d49, 0x3d4a, 0x3d4b, 0x3d4c, 0x3d4d, 0x3d4e, 0x3d4f, 0x3d50,
- 0x3d51, 0x3d52, 0x3d53, 0x3d54, 0x3d55, 0x3d56, 0x3d57, 0x3d58,
- 0x3d59, 0x3d5a, 0x3d5b, 0x3d5c, 0x3d5d, 0x3d5e, 0x3d5f, 0x3d60,
- 0x3d61, 0x3d62, 0x3d63, 0x3d64, 0x3d65, 0x3d66, 0x3d67, 0x3d68,
- 0x3d69, 0x3d6a, 0x3d6b, 0x3d6c, 0x3d6d, 0x3d6e, 0x3d6f, 0x3d70,
- 0x3d71, 0x3d72, 0x3d73, 0x3d74, 0x3d75, 0x3d76, 0x3d77, 0x3d78,
- 0x3d79, 0x3d7a, 0x3d7b, 0x3d7c, 0x3d7d, 0x3d7e, 0x3e21, 0x3e22,
- 0x3e23, 0x3e24, 0x3e25, 0x3e26, 0x3e27, 0x3e28, 0x3e29, 0x3e2a,
- 0x3e2b, 0x3e2c, 0x3e2d, 0x3e2e, 0x3e2f, 0x3e30, 0x3e31, 0x3e32,
- 0x3e33, 0x3e34, 0x3e35, 0x3e36, 0x3e37, 0x3e38, 0x3e39, 0x3e3a,
- 0x3e3b, 0x3e3c, 0x3e3d, 0x3e3e, 0x3e3f, 0x3e40, 0x3e41, 0x3e42,
- 0x3e43, 0x3e44, 0x3e45, 0x3e46, 0x3e47, 0x3e48, 0x3e49, 0x3e4a,
- 0x3e4b, 0x3e4c, 0x3e4d, 0x3e4e, 0x3e4f, 0x3e50, 0x3e51, 0x3e52,
- 0x3e53, 0x3e54, 0x3e55, 0x3e56, 0x3e57, 0x3e58, 0x3e59, 0x3e5a,
- 0x3e5b, 0x3e5c, 0x3e5d, 0x3e5e, 0x3e5f, 0x3e60, 0x3e61, 0x3e62,
- 0x3e63, 0x3e64, 0x3e65, 0x3e66, 0x3e67, 0x3e68, 0x3e69, 0x3e6a,
- 0x3e6b, 0x3e6c, 0x3e6d, 0x3e6e, 0x3e6f, 0x3e70, 0x3e71, 0x3e72,
- 0x3e73, 0x3e74, 0x3e75, 0x3e76, 0x3e77, 0x3e78, 0x3e79, 0x3e7a,
- 0x3e7b, 0x3e7c, 0x3e7d, 0x3e7e, 0x3f21, 0x3f22, 0x3f23, 0x3f24,
- 0x3f25, 0x3f26, 0x3f27, 0x3f28, 0x3f29, 0x3f2a, 0x3f2b, 0x3f2c,
- 0x3f2d, 0x3f2e, 0x3f2f, 0x3f30, 0x3f31, 0x3f32, 0x3f33, 0x3f34,
- 0x3f35, 0x3f36, 0x3f37, 0x3f38, 0x3f39, 0x3f3a, 0x3f3b, 0x3f3c,
- 0x3f3d, 0x3f3e, 0x3f3f, 0x3f40, 0x3f41, 0x3f42, 0x3f43, 0x3f44,
- 0x3f45, 0x3f46, 0x3f47, 0x3f48, 0x3f49, 0x3f4a, 0x3f4b, 0x3f4c,
- 0x3f4d, 0x3f4e, 0x3f4f, 0x3f50, 0x3f51, 0x3f52, 0x3f53, 0x3f54,
- 0x3f55, 0x3f56, 0x3f57, 0x3f58, 0x3f59, 0x3f5a, 0x3f5b, 0x3f5c,
- 0x3f5d, 0x3f5e, 0x3f5f, 0x3f60, 0x3f61, 0x3f62, 0x3f63, 0x3f64,
- 0x3f65, 0x3f66, 0x3f67, 0x3f68, 0x3f69, 0x3f6a, 0x3f6b, 0x3f6c,
- 0x3f6d, 0x3f6e, 0x3f6f, 0x3f70, 0x3f71, 0x3f72, 0x3f73, 0x3f74,
- 0x3f75, 0x3f76, 0x3f77, 0x3f78, 0x3f79, 0x3f7a, 0x3f7b, 0x3f7c,
- 0x3f7d, 0x3f7e, 0x4021, 0x4022, 0x4023, 0x4024, 0x4025, 0x4026,
- 0x4027, 0x4028, 0x4029, 0x402a, 0x402b, 0x402c, 0x402d, 0x402e,
- 0x402f, 0x4030, 0x4031, 0x4032, 0x4033, 0x4034, 0x4035, 0x4036,
- 0x4037, 0x4038, 0x4039, 0x403a, 0x403b, 0x403c, 0x403d, 0x403e,
- 0x403f, 0x4040, 0x4041, 0x4042, 0x4043, 0x4044, 0x4045, 0x4046,
- 0x4047, 0x4048, 0x4049, 0x404a, 0x404b, 0x404c, 0x404d, 0x404e,
- 0x404f, 0x4050, 0x4051, 0x4052, 0x4053, 0x4054, 0x4055, 0x4056,
- 0x4057, 0x4058, 0x4059, 0x405a, 0x405b, 0x405c, 0x405d, 0x405e,
- 0x405f, 0x4060, 0x4061, 0x4062, 0x4063, 0x4064, 0x4065, 0x4066,
- 0x4067, 0x4068, 0x4069, 0x406a, 0x406b, 0x406c, 0x406d, 0x406e,
- 0x406f, 0x4070, 0x4071, 0x4072, 0x4073, 0x4074, 0x4075, 0x4076,
- 0x4077, 0x4078, 0x4079, 0x407a, 0x407b, 0x407c, 0x407d, 0x407e,
- 0x4121, 0x4122, 0x4123, 0x4124, 0x4125, 0x4126, 0x4127, 0x4128,
- 0x4129, 0x412a, 0x412b, 0x412c, 0x412d, 0x412e, 0x412f, 0x4130,
- 0x4131, 0x4132, 0x4133, 0x4134, 0x4135, 0x4136, 0x4137, 0x4138,
- 0x4139, 0x413a, 0x413b, 0x413c, 0x413d, 0x413e, 0x413f, 0x4140,
- 0x4141, 0x4142, 0x4143, 0x4144, 0x4145, 0x4146, 0x4147, 0x4148,
- 0x4149, 0x414a, 0x414b, 0x414c, 0x414d, 0x414e, 0x414f, 0x4150,
- 0x4151, 0x4152, 0x4153, 0x4154, 0x4155, 0x4156, 0x4157, 0x4158,
- 0x4159, 0x415a, 0x415b, 0x415c, 0x415d, 0x415e, 0x415f, 0x4160,
- 0x4161, 0x4162, 0x4163, 0x4164, 0x4165, 0x4166, 0x4167, 0x4168,
- 0x4169, 0x416a, 0x416b, 0x416c, 0x416d, 0x416e, 0x416f, 0x4170,
- 0x4171, 0x4172, 0x4173, 0x4174, 0x4175, 0x4176, 0x4177, 0x4178,
- 0x4179, 0x417a, 0x417b, 0x417c, 0x417d, 0x417e, 0x4221, 0x4222,
- 0x4223, 0x4224, 0x4225, 0x4226, 0x4227, 0x4228, 0x4229, 0x422a,
- 0x422b, 0x422c, 0x422d, 0x422e, 0x422f, 0x4230, 0x4231, 0x4232,
- 0x4233, 0x4234, 0x4235, 0x4236, 0x4237, 0x4238, 0x4239, 0x423a,
- 0x423b, 0x423c, 0x423d, 0x423e, 0x423f, 0x4240, 0x4241, 0x4242,
- 0x4243, 0x4244, 0x4245, 0x4246, 0x4247, 0x4248, 0x4249, 0x424a,
- 0x424b, 0x424c, 0x424d, 0x424e, 0x424f, 0x4250, 0x4251, 0x4252,
- 0x4253, 0x4254, 0x4255, 0x4256, 0x4257, 0x4258, 0x4259, 0x425a,
- 0x425b, 0x425c, 0x425d, 0x425e, 0x425f, 0x4260, 0x4261, 0x4262,
- 0x4263, 0x4264, 0x4265, 0x4266, 0x4267, 0x4268, 0x4269, 0x426a,
- 0x426b, 0x426c, 0x426d, 0x426e, 0x426f, 0x4270, 0x4271, 0x4272,
- 0x4273, 0x4274, 0x4275, 0x4276, 0x4277, 0x4278, 0x4279, 0x427a,
- 0x427b, 0x427c, 0x427d, 0x427e, 0x4321, 0x4322, 0x4323, 0x4324,
- 0x4325, 0x4326, 0x4327, 0x4328, 0x4329, 0x432a, 0x432b, 0x432c,
- 0x432d, 0x432e, 0x432f, 0x4330, 0x4331, 0x4332, 0x4333, 0x4334,
- 0x4335, 0x4336, 0x4337, 0x4338, 0x4339, 0x433a, 0x433b, 0x433c,
- 0x433d, 0x433e, 0x433f, 0x4340, 0x4341, 0x4342, 0x4343, 0x4344,
- 0x4345, 0x4346, 0x4347, 0x4348, 0x4349, 0x434a, 0x434b, 0x434c,
- 0x434d, 0x434e, 0x434f, 0x4350, 0x4351, 0x4352, 0x4353, 0x4354,
- 0x4355, 0x4356, 0x4357, 0x4358, 0x4359, 0x435a, 0x435b, 0x435c,
- 0x435d, 0x435e, 0x435f, 0x4360, 0x4361, 0x4362, 0x4363, 0x4364,
- 0x4365, 0x4366, 0x4367, 0x4368, 0x4369, 0x436a, 0x436b, 0x436c,
- 0x436d, 0x436e, 0x436f, 0x4370, 0x4371, 0x4372, 0x4373, 0x4374,
- 0x4375, 0x4376, 0x4377, 0x4378, 0x4379, 0x437a, 0x437b, 0x437c,
- 0x437d, 0x437e, 0x4421, 0x4422, 0x4423, 0x4424, 0x4425, 0x4426,
- 0x4427, 0x4428, 0x4429, 0x442a, 0x442b, 0x442c, 0x442d, 0x442e,
- 0x442f, 0x4430, 0x4431, 0x4432, 0x4433, 0x4434, 0x4435, 0x4436,
- 0x4437, 0x4438, 0x4439, 0x443a, 0x443b, 0x443c, 0x443d, 0x443e,
- 0x443f, 0x4440, 0x4441, 0x4442, 0x4443, 0x4444, 0x4445, 0x4446,
- 0x4447, 0x4448, 0x4449, 0x444a, 0x444b, 0x444c, 0x444d, 0x444e,
- 0x444f, 0x4450, 0x4451, 0x4452, 0x4453, 0x4454, 0x4455, 0x4456,
- 0x4457, 0x4458, 0x4459, 0x445a, 0x445b, 0x445c, 0x445d, 0x445e,
- 0x445f, 0x4460, 0x4461, 0x4462, 0x4463, 0x4464, 0x4465, 0x4466,
- 0x4467, 0x4468, 0x4469, 0x446a, 0x446b, 0x446c, 0x446d, 0x446e,
- 0x446f, 0x4470, 0x4471, 0x4472, 0x4473, 0x4474, 0x4475, 0x4476,
- 0x4477, 0x4478, 0x4479, 0x447a, 0x447b, 0x447c, 0x447d, 0x447e,
- 0x4521, 0x4522, 0x4523, 0x4524, 0x4525, 0x4526, 0x4527, 0x4528,
- 0x4529, 0x452a, 0x452b, 0x452c, 0x452d, 0x452e, 0x452f, 0x4530,
- 0x4531, 0x4532, 0x4533, 0x4534, 0x4535, 0x4536, 0x4537, 0x4538,
- 0x4539, 0x453a, 0x453b, 0x453c, 0x453d, 0x453e, 0x453f, 0x4540,
- 0x4541, 0x4542, 0x4543, 0x4544, 0x4545, 0x4546, 0x4547, 0x4548,
- 0x4549, 0x454a, 0x454b, 0x454c, 0x454d, 0x454e, 0x454f, 0x4550,
- 0x4551, 0x4552, 0x4553, 0x4554, 0x4555, 0x4556, 0x4557, 0x4558,
- 0x4559, 0x455a, 0x455b, 0x455c, 0x455d, 0x455e, 0x455f, 0x4560,
- 0x4561, 0x4562, 0x4563, 0x4564, 0x4565, 0x4566, 0x4567, 0x4568,
- 0x4569, 0x456a, 0x456b, 0x456c, 0x456d, 0x456e, 0x456f, 0x4570,
- 0x4571, 0x4572, 0x4573, 0x4574, 0x4575, 0x4576, 0x4577, 0x4578,
- 0x4579, 0x457a, 0x457b, 0x457c, 0x457d, 0x457e, 0x4621, 0x4622,
- 0x4623, 0x4624, 0x4625, 0x4626, 0x4627, 0x4628, 0x4629, 0x462a,
- 0x462b, 0x462c, 0x462d, 0x462e, 0x462f, 0x4630, 0x4631, 0x4632,
- 0x4633, 0x4634, 0x4635, 0x4636, 0x4637, 0x4638, 0x4639, 0x463a,
- 0x463b, 0x463c, 0x463d, 0x463e, 0x463f, 0x4640, 0x4641, 0x4642,
- 0x4643, 0x4644, 0x4645, 0x4646, 0x4647, 0x4648, 0x4649, 0x464a,
- 0x464b, 0x464c, 0x464d, 0x464e, 0x464f, 0x4650, 0x4651, 0x4652,
- 0x4653, 0x4654, 0x4655, 0x4656, 0x4657, 0x4658, 0x4659, 0x465a,
- 0x465b, 0x465c, 0x465d, 0x465e, 0x465f, 0x4660, 0x4661, 0x4662,
- 0x4663, 0x4664, 0x4665, 0x4666, 0x4667, 0x4668, 0x4669, 0x466a,
- 0x466b, 0x466c, 0x466d, 0x466e, 0x466f, 0x4670, 0x4671, 0x4672,
- 0x4673, 0x4674, 0x4675, 0x4676, 0x4677, 0x4678, 0x4679, 0x467a,
- 0x467b, 0x467c, 0x467d, 0x467e, 0x4721, 0x4722, 0x4723, 0x4724,
- 0x4725, 0x4726, 0x4727, 0x4728, 0x4729, 0x472a, 0x472b, 0x472c,
- 0x472d, 0x472e, 0x472f, 0x4730, 0x4731, 0x4732, 0x4733, 0x4734,
- 0x4735, 0x4736, 0x4737, 0x4738, 0x4739, 0x473a, 0x473b, 0x473c,
- 0x473d, 0x473e, 0x473f, 0x4740, 0x4741, 0x4742, 0x4743, 0x4744,
- 0x4745, 0x4746, 0x4747, 0x4748, 0x4749, 0x474a, 0x474b, 0x474c,
- 0x474d, 0x474e, 0x474f, 0x4750, 0x4751, 0x4752, 0x4753, 0x4754,
- 0x4755, 0x4756, 0x4757, 0x4758, 0x4759, 0x475a, 0x475b, 0x475c,
- 0x475d, 0x475e, 0x475f, 0x4760, 0x4761, 0x4762, 0x4763, 0x4764,
- 0x4765, 0x4766, 0x4767, 0x4768, 0x4769, 0x476a, 0x476b, 0x476c,
- 0x476d, 0x476e, 0x476f, 0x4770, 0x4771, 0x4772, 0x4773, 0x4774,
- 0x4775, 0x4776, 0x4777, 0x4778, 0x4779, 0x477a, 0x477b, 0x477c,
- 0x477d, 0x477e, 0x4821, 0x4822, 0x4823, 0x4824, 0x4825, 0x4826,
- 0x4827, 0x4828, 0x4829, 0x482a, 0x482b, 0x482c, 0x482d, 0x482e,
- 0x482f, 0x4830, 0x4831, 0x4832, 0x4833, 0x4834, 0x4835, 0x4836,
- 0x4837, 0x4838, 0x4839, 0x483a, 0x483b, 0x483c, 0x483d, 0x483e,
- 0x483f, 0x4840, 0x4841, 0x4842, 0x4843, 0x4844, 0x4845, 0x4846,
- 0x4847, 0x4848, 0x4849, 0x484a, 0x484b, 0x484c, 0x484d, 0x484e,
- 0x484f, 0x4850, 0x4851, 0x4852, 0x4853, 0x4854, 0x4855, 0x4856,
- 0x4857, 0x4858, 0x4859, 0x485a, 0x485b, 0x485c, 0x485d, 0x485e,
- 0x485f, 0x4860, 0x4861, 0x4862, 0x4863, 0x4864, 0x4865, 0x4866,
- 0x4867, 0x4868, 0x4869, 0x486a, 0x486b, 0x486c, 0x486d, 0x486e,
- 0x486f, 0x4870, 0x4871, 0x4872, 0x4873, 0x4874, 0x4875, 0x4876,
- 0x4877, 0x4878, 0x4879, 0x487a, 0x487b, 0x487c, 0x487d, 0x487e,
- 0x4b50, 0x4b56, 0x4b67, 0x4d4f, 0x4d68, 0x4e2d, 0x4f7b, 0x5022,
- 0x5038, 0x5050, 0x505d, 0x5154, 0x5155, 0x5158, 0x515b, 0x515c,
- 0x515d, 0x515e, 0x515f, 0x5160, 0x5162, 0x5163, 0x5164, 0x5165,
- 0x5166, 0x5168, 0x5169, 0x516a, 0x516b, 0x516d, 0x516f, 0x5170,
- 0x5172, 0x5176, 0x517a, 0x517c, 0x517d, 0x517e, 0x5222, 0x5223,
- 0x5227, 0x5228, 0x5229, 0x522a, 0x522b, 0x522d, 0x5232, 0x523e,
- 0x5242, 0x5243, 0x5244, 0x5246, 0x5247, 0x5248, 0x5249, 0x524a,
- 0x524b, 0x524d, 0x524e, 0x524f, 0x5250, 0x5251, 0x5252, 0x5253,
- 0x5254, 0x5255, 0x5256, 0x5257, 0x5259, 0x525a, 0x525e, 0x525f,
- 0x5261, 0x5262, 0x5264, 0x5265, 0x5266, 0x5267, 0x5268, 0x5269,
- 0x526a, 0x526b, 0x5270, 0x5271, 0x5272, 0x5273, 0x5274, 0x5275,
- 0x5277, 0x5278, 0x5466, 0x547c, 0x5525, 0x552b, 0x552e, 0x5638,
- 0x564d, 0x574b, 0x5764, 0x5b45, 0x5b64, 0x5c25, 0x5d25, 0x5d55,
- 0x5d74, 0x5e7c, 0x5e7e, 0x5f33, 0x5f61, 0x5f68, 0x6071, 0x612d,
- 0x616d, 0x6375, 0x6421, 0x6429, 0x652e, 0x6531, 0x6532, 0x6539,
- 0x653b, 0x653c, 0x6544, 0x654e, 0x6550, 0x6552, 0x6556, 0x657a,
- 0x657b, 0x657c, 0x657e, 0x6621, 0x6624, 0x6627, 0x662d, 0x662f,
- 0x6630, 0x6631, 0x6633, 0x6637, 0x6638, 0x663c, 0x6644, 0x6646,
- 0x6647, 0x664a, 0x6652, 0x6656, 0x6659, 0x665c, 0x665f, 0x6661,
- 0x6664, 0x6665, 0x6666, 0x6668, 0x666a, 0x666b, 0x666c, 0x666f,
- 0x6671, 0x6672, 0x6675, 0x6676, 0x6677, 0x6679, 0x6721, 0x6726,
- 0x6729, 0x672a, 0x672c, 0x672d, 0x6730, 0x673f, 0x6741, 0x6746,
- 0x6747, 0x674b, 0x674d, 0x674f, 0x6750, 0x6753, 0x675f, 0x6764,
- 0x6766, 0x6777, 0x6867, 0x6868, 0x6870, 0x6871, 0x6877, 0x6879,
- 0x687b, 0x687e, 0x6927, 0x692c, 0x694c, 0x6977, 0x6a41, 0x6a65,
- 0x6a74, 0x6a77, 0x6a7c, 0x6a7e, 0x6b24, 0x6b27, 0x6b29, 0x6b2a,
- 0x6b3a, 0x6b3b, 0x6b3d, 0x6b41, 0x6b42, 0x6b46, 0x6b47, 0x6b4c,
- 0x6b4f, 0x6b50, 0x6b51, 0x6b52, 0x6b58, 0x6c26, 0x6c27, 0x6c2a,
- 0x6c2f, 0x6c30, 0x6c31, 0x6c32, 0x6c35, 0x6c38, 0x6c3a, 0x6c40,
- 0x6c41, 0x6c45, 0x6c46, 0x6c49, 0x6c4a, 0x6c55, 0x6c5d, 0x6c5e,
- 0x6c61, 0x6c64, 0x6c67, 0x6c68, 0x6c77, 0x6c78, 0x6c7a, 0x6d21,
- 0x6d22, 0x6d23, 0x6d6e, 0x6e5b, 0x723d, 0x727a, 0x7331, 0x7427,
- 0x746e, 0x7674, 0x7676, 0x7738, 0x7748, 0x7753, 0x785b, 0x7870,
- 0x7a21, 0x7a22, 0x7a66, 0x7c29, 0x2321, 0x2322, 0x2323, 0x2324,
- 0x2325, 0x2326, 0x2327, 0x2328, 0x2329, 0x232a, 0x232b, 0x232c,
- 0x232d, 0x232e, 0x232f, 0x2330, 0x2331, 0x2332, 0x2333, 0x2334,
- 0x2335, 0x2336, 0x2337, 0x2338, 0x2339, 0x233a, 0x233b, 0x233c,
- 0x233d, 0x233e, 0x233f, 0x2340, 0x2341, 0x2342, 0x2343, 0x2344,
- 0x2345, 0x2346, 0x2347, 0x2348, 0x2349, 0x234a, 0x234b, 0x234c,
- 0x234d, 0x234e, 0x234f, 0x2350, 0x2351, 0x2352, 0x2353, 0x2354,
- 0x2355, 0x2356, 0x2357, 0x2358, 0x2359, 0x235a, 0x235b, 0x212c,
- 0x235d, 0x235e, 0x235f, 0x2360, 0x2361, 0x2362, 0x2363, 0x2364,
- 0x2365, 0x2366, 0x2367, 0x2368, 0x2369, 0x236a, 0x236b, 0x236c,
- 0x236d, 0x236e, 0x236f, 0x2370, 0x2371, 0x2372, 0x2373, 0x2374,
- 0x2375, 0x2376, 0x2377, 0x2378, 0x2379, 0x237a, 0x237b, 0x237c,
- 0x237d, 0x2226, 0x214b, 0x214c, 0x217e, 0x237e, 0x214d, 0x235c,
-};
-
-static const Summary16 ksc5601_uni2indx_page00[70] = {
- /* 0x0000 */
- { 0, 0x0000 }, { 0, 0x0000 }, { 0, 0x0000 }, { 0, 0x0000 },
- { 0, 0x0000 }, { 0, 0x0000 }, { 0, 0x0000 }, { 0, 0x0000 },
- { 0, 0x0000 }, { 0, 0x0000 }, { 0, 0x2592 }, { 6, 0xf7df },
- { 20, 0x0040 }, { 21, 0xc181 }, { 26, 0x0040 }, { 27, 0x4181 },
- /* 0x0100 */
- { 31, 0x0000 }, { 31, 0x0002 }, { 32, 0x00c0 }, { 34, 0x810e },
- { 39, 0x0e07 }, { 45, 0x000c }, { 47, 0x00c0 }, { 49, 0x0000 },
- { 49, 0x0000 }, { 49, 0x0000 }, { 49, 0x0000 }, { 49, 0x0000 },
- { 49, 0x0000 }, { 49, 0x0000 }, { 49, 0x0000 }, { 49, 0x0000 },
- /* 0x0200 */
- { 49, 0x0000 }, { 49, 0x0000 }, { 49, 0x0000 }, { 49, 0x0000 },
- { 49, 0x0000 }, { 49, 0x0000 }, { 49, 0x0000 }, { 49, 0x0000 },
- { 49, 0x0000 }, { 49, 0x0000 }, { 49, 0x0000 }, { 49, 0x0000 },
- { 49, 0x0080 }, { 50, 0x2f01 }, { 56, 0x0000 }, { 56, 0x0000 },
- /* 0x0300 */
- { 56, 0x0000 }, { 56, 0x0000 }, { 56, 0x0000 }, { 56, 0x0000 },
- { 56, 0x0000 }, { 56, 0x0000 }, { 56, 0x0000 }, { 56, 0x0000 },
- { 56, 0x0000 }, { 56, 0xfffe }, { 71, 0x03fb }, { 80, 0xfffe },
- { 95, 0x03fb }, { 104, 0x0000 }, { 104, 0x0000 }, { 104, 0x0000 },
- /* 0x0400 */
- { 104, 0x0002 }, { 105, 0xffff }, { 121, 0xffff }, { 137, 0xffff },
- { 153, 0xffff }, { 169, 0x0002 },
-};
-static const Summary16 ksc5601_uni2indx_page20[103] = {
- /* 0x2000 */
- { 170, 0x0000 }, { 170, 0x3320 }, { 175, 0x0063 }, { 179, 0x080d },
- { 183, 0x0000 }, { 183, 0x0000 }, { 183, 0x0000 }, { 183, 0x8010 },
- { 185, 0x001e }, { 189, 0x0000 }, { 189, 0x0000 }, { 189, 0x0000 },
- { 189, 0x0000 }, { 189, 0x0000 }, { 189, 0x0000 }, { 189, 0x0000 },
- /* 0x2100 */
- { 189, 0x0208 }, { 191, 0x0048 }, { 193, 0x0846 }, { 197, 0x0000 },
- { 197, 0x0000 }, { 197, 0x7818 }, { 203, 0x03ff }, { 213, 0x03ff },
- { 223, 0x0000 }, { 223, 0x03ff }, { 233, 0x0000 }, { 233, 0x0000 },
- { 233, 0x0000 }, { 233, 0x0014 }, { 235, 0x0000 }, { 235, 0x0000 },
- /* 0x2200 */
- { 235, 0x898d }, { 242, 0x6402 }, { 246, 0x5fa1 }, { 255, 0x3030 },
- { 259, 0x0000 }, { 259, 0x0004 }, { 260, 0x0c33 }, { 266, 0x0000 },
- { 266, 0x00cc }, { 270, 0x0200 }, { 271, 0x0020 }, { 272, 0x0000 },
- { 272, 0x0000 }, { 272, 0x0000 }, { 272, 0x0000 }, { 272, 0x0000 },
- /* 0x2300 */
- { 272, 0x0000 }, { 272, 0x0004 }, { 273, 0x0000 }, { 273, 0x0000 },
- { 273, 0x0000 }, { 273, 0x0000 }, { 273, 0x0000 }, { 273, 0x0000 },
- { 273, 0x0000 }, { 273, 0x0000 }, { 273, 0x0000 }, { 273, 0x0000 },
- { 273, 0x0000 }, { 273, 0x0000 }, { 273, 0x0000 }, { 273, 0x0000 },
- /* 0x2400 */
- { 273, 0x0000 }, { 273, 0x0000 }, { 273, 0x0000 }, { 273, 0x0000 },
- { 273, 0x0000 }, { 273, 0x0000 }, { 273, 0x7fff }, { 288, 0xfff0 },
- { 300, 0x0007 }, { 303, 0xf000 }, { 307, 0xffff }, { 323, 0x003f },
- { 329, 0x0000 }, { 329, 0xffff }, { 345, 0x03ff }, { 355, 0x0000 },
- /* 0x2500 */
- { 355, 0xf00f }, { 363, 0xffff }, { 379, 0xffff }, { 395, 0xffff },
- { 411, 0x0fff }, { 423, 0x0000 }, { 423, 0x0000 }, { 423, 0x0000 },
- { 423, 0x0000 }, { 423, 0x0004 }, { 424, 0x03fb }, { 433, 0x30cc },
- { 439, 0xc9c3 }, { 447, 0x0003 }, { 449, 0x0000 }, { 449, 0x0000 },
- /* 0x2600 */
- { 449, 0xc060 }, { 453, 0x5000 }, { 455, 0x0000 }, { 455, 0x0000 },
- { 455, 0x0005 }, { 457, 0x0000 }, { 457, 0x37bb },
-};
-static const Summary16 ksc5601_uni2indx_page30[62] = {
- /* 0x3000 */
- { 468, 0xff0f }, { 480, 0x003b }, { 485, 0x0000 }, { 485, 0x0000 },
- { 485, 0xfffe }, { 500, 0xffff }, { 516, 0xffff }, { 532, 0xffff },
- { 548, 0xffff }, { 564, 0x000f }, { 568, 0xfffe }, { 583, 0xffff },
- { 599, 0xffff }, { 615, 0xffff }, { 631, 0xffff }, { 647, 0x007f },
- /* 0x3100 */
- { 654, 0x0000 }, { 654, 0x0000 }, { 654, 0x0000 }, { 654, 0xfffe },
- { 669, 0xffff }, { 685, 0xffff }, { 701, 0xffff }, { 717, 0xffff },
- { 733, 0x7fff }, { 748, 0x0000 }, { 748, 0x0000 }, { 748, 0x0000 },
- { 748, 0x0000 }, { 748, 0x0000 }, { 748, 0x0000 }, { 748, 0x0000 },
- /* 0x3200 */
- { 748, 0xffff }, { 764, 0x1fff }, { 777, 0x0000 }, { 777, 0x0000 },
- { 777, 0x0000 }, { 777, 0x0000 }, { 777, 0xffff }, { 793, 0x8fff },
- { 806, 0x0000 }, { 806, 0x0000 }, { 806, 0x0000 }, { 806, 0x0000 },
- { 806, 0x0000 }, { 806, 0x0000 }, { 806, 0x0000 }, { 806, 0x0000 },
- /* 0x3300 */
- { 806, 0x0000 }, { 806, 0x0000 }, { 806, 0x0000 }, { 806, 0x0000 },
- { 806, 0x0000 }, { 806, 0x0000 }, { 806, 0x0000 }, { 806, 0x0000 },
- { 806, 0xff1f }, { 819, 0xffff }, { 835, 0xffff }, { 851, 0xffff },
- { 867, 0x87ff }, { 879, 0x3949 },
-};
-static const Summary16 ksc5601_uni2indx_page4e[1306] = {
- /* 0x4e00 */
- { 886, 0x2f8b }, { 895, 0x4372 }, { 902, 0x2000 }, { 903, 0x0b04 },
- { 907, 0xe82c }, { 914, 0xe340 }, { 920, 0x2800 }, { 922, 0x40c8 },
- { 926, 0x5944 }, { 932, 0x4937 }, { 940, 0x7976 }, { 950, 0x0440 },
- { 952, 0x2c93 }, { 959, 0xa3f0 }, { 967, 0x0038 }, { 970, 0x08c5 },
- /* 0x4f00 */
- { 975, 0xee02 }, { 982, 0x0003 }, { 984, 0x8000 }, { 985, 0x3550 },
- { 991, 0xe1c8 }, { 998, 0x1e23 }, { 1005, 0x8200 }, { 1007, 0xc449 },
- { 1013, 0xad5a }, { 1022, 0x2942 }, { 1027, 0xc000 }, { 1029, 0x8060 },
- { 1032, 0x461c }, { 1038, 0xa49a }, { 1045, 0xc003 }, { 1049, 0x052a },
- /* 0x5000 */
- { 1054, 0x2a44 }, { 1059, 0xd646 }, { 1067, 0x3dda }, { 1077, 0x0800 },
- { 1078, 0x8388 }, { 1083, 0x1420 }, { 1086, 0x0020 }, { 1087, 0x0170 },
- { 1091, 0x2021 }, { 1094, 0x0302 }, { 1097, 0x3000 }, { 1099, 0x40ac },
- { 1104, 0x8620 }, { 1108, 0x4462 }, { 1113, 0x20a0 }, { 1116, 0x8a00 },
- /* 0x5100 */
- { 1119, 0x0253 }, { 1124, 0x8004 }, { 1126, 0x0402 }, { 1128, 0x1484 },
- { 1132, 0x7bfb }, { 1145, 0x1004 }, { 1147, 0x7fa4 }, { 1157, 0x11e2 },
- { 1163, 0x2441 }, { 1167, 0x00a4 }, { 1170, 0x1421 }, { 1174, 0x20c0 },
- { 1177, 0x3a50 }, { 1183, 0x7000 }, { 1186, 0x0002 }, { 1187, 0x2743 },
- /* 0x5200 */
- { 1194, 0x45c9 }, { 1201, 0x2082 }, { 1204, 0x4630 }, { 1209, 0x0fc1 },
- { 1216, 0x3c88 }, { 1222, 0x2850 }, { 1226, 0x8602 }, { 1230, 0xa024 },
- { 1234, 0x2388 }, { 1239, 0x8806 }, { 1243, 0x0e19 }, { 1249, 0x4000 },
- { 1250, 0x22aa }, { 1256, 0xeb64 }, { 1265, 0x001c }, { 1268, 0xcd28 },
- /* 0x5300 */
- { 1275, 0xa120 }, { 1279, 0x02e1 }, { 1284, 0x840b }, { 1289, 0x8200 },
- { 1291, 0x279b }, { 1300, 0x549e }, { 1308, 0x8141 }, { 1312, 0xa0b3 },
- { 1319, 0x0010 }, { 1320, 0x8508 }, { 1324, 0x2061 }, { 1328, 0x0800 },
- { 1329, 0x2f08 }, { 1335, 0x08d0 }, { 1339, 0xbe3e }, { 1350, 0x010f },
- /* 0x5400 */
- { 1355, 0xf718 }, { 1364, 0xa803 }, { 1369, 0x0a41 }, { 1373, 0x5b08 },
- { 1379, 0x0504 }, { 1382, 0x0002 }, { 1383, 0x0500 }, { 1385, 0x382a },
- { 1391, 0x5041 }, { 1395, 0x0001 }, { 1396, 0x1910 }, { 1400, 0x2108 },
- { 1403, 0x0313 }, { 1408, 0x0000 }, { 1408, 0x6122 }, { 1413, 0x0404 },
- /* 0x5500 */
- { 1415, 0x40d0 }, { 1419, 0x1001 }, { 1421, 0x8000 }, { 1422, 0x4022 },
- { 1425, 0x8050 }, { 1428, 0x4048 }, { 1431, 0x0008 }, { 1432, 0x1000 },
- { 1433, 0x06d1 }, { 1439, 0x3700 }, { 1444, 0x5e80 }, { 1450, 0x0000 },
- { 1450, 0x00a0 }, { 1452, 0x9410 }, { 1456, 0x0018 }, { 1458, 0x6000 },
- /* 0x5600 */
- { 1460, 0x0240 }, { 1462, 0x0090 }, { 1464, 0x8000 }, { 1465, 0x0054 },
- { 1468, 0x0000 }, { 1468, 0x0008 }, { 1469, 0x0900 }, { 1471, 0x0010 },
- { 1472, 0x0040 }, { 1473, 0x0000 }, { 1473, 0x5020 }, { 1476, 0x1010 },
- { 1478, 0x2400 }, { 1480, 0x4c02 }, { 1484, 0x0001 }, { 1485, 0x0601 },
- /* 0x5700 */
- { 1488, 0x2918 }, { 1493, 0x814c }, { 1498, 0x2100 }, { 1500, 0x0801 },
- { 1502, 0x6485 }, { 1508, 0x0003 }, { 1510, 0x4452 }, { 1515, 0x1021 },
- { 1518, 0x0904 }, { 1521, 0x0008 }, { 1522, 0x000d }, { 1525, 0x0000 },
- { 1525, 0x4988 }, { 1530, 0x8000 }, { 1531, 0x0001 }, { 1532, 0x1691 },
- /* 0x5800 */
- { 1538, 0x0765 }, { 1545, 0x4000 }, { 1546, 0x8492 }, { 1551, 0x0433 },
- { 1556, 0x8c00 }, { 1559, 0x4592 }, { 1565, 0x0016 }, { 1568, 0x5220 },
- { 1572, 0x0228 }, { 1575, 0xd008 }, { 1579, 0x4300 }, { 1582, 0x4c08 },
- { 1586, 0x40a2 }, { 1590, 0xc32a }, { 1597, 0x9810 }, { 1601, 0x2e00 },
- /* 0x5900 */
- { 1605, 0x8000 }, { 1606, 0x1670 }, { 1612, 0x6e84 }, { 1619, 0x4082 },
- { 1622, 0xc390 }, { 1628, 0x04b3 }, { 1634, 0x7c85 }, { 1642, 0x2118 },
- { 1646, 0x041c }, { 1650, 0x02c8 }, { 1654, 0x1120 }, { 1657, 0x4a00 },
- { 1660, 0x0a48 }, { 1664, 0x361b }, { 1672, 0x5540 }, { 1677, 0x8900 },
- /* 0x5a00 */
- { 1680, 0x000a }, { 1682, 0x9902 }, { 1687, 0x0221 }, { 1690, 0x1040 },
- { 1692, 0x0242 }, { 1695, 0x0400 }, { 1696, 0x0044 }, { 1698, 0x0000 },
- { 1698, 0x0000 }, { 1698, 0x0c04 }, { 1701, 0x0010 }, { 1702, 0x0000 },
- { 1702, 0x1216 }, { 1707, 0x0000 }, { 1707, 0x0242 }, { 1710, 0x0000 },
- /* 0x5b00 */
- { 1710, 0x1a20 }, { 1714, 0x0040 }, { 1715, 0x0400 }, { 1716, 0x0000 },
- { 1716, 0x0009 }, { 1718, 0xb5b3 }, { 1728, 0x0a18 }, { 1732, 0x1523 },
- { 1738, 0x9ba0 }, { 1745, 0x1fe8 }, { 1754, 0x507c }, { 1761, 0x8379 },
- { 1769, 0x10fd }, { 1777, 0xc09d }, { 1784, 0xdbf6 }, { 1796, 0x0560 },
- /* 0x5c00 */
- { 1800, 0xef92 }, { 1810, 0x0242 }, { 1813, 0x0110 }, { 1815, 0xdf02 },
- { 1823, 0x6961 }, { 1830, 0x0822 }, { 1833, 0x9035 }, { 1839, 0x0202 },
- { 1841, 0x0000 }, { 1841, 0x0003 }, { 1843, 0x1a02 }, { 1847, 0x45aa },
- { 1854, 0x0001 }, { 1855, 0x0200 }, { 1856, 0x8101 }, { 1859, 0x2851 },
- /* 0x5d00 */
- { 1864, 0x6080 }, { 1867, 0x02d2 }, { 1872, 0x0280 }, { 1874, 0x0000 },
- { 1874, 0x1800 }, { 1876, 0x0001 }, { 1877, 0x9200 }, { 1880, 0x0000 },
- { 1880, 0x0880 }, { 1882, 0x2000 }, { 1883, 0x0405 }, { 1886, 0x3500 },
- { 1890, 0x2000 }, { 1891, 0x6044 }, { 1895, 0x49e6 }, { 1903, 0x609e },
- /* 0x5e00 */
- { 1910, 0x104c }, { 1914, 0x2a42 }, { 1919, 0x2820 }, { 1922, 0xa148 },
- { 1927, 0x10b1 }, { 1932, 0x8020 }, { 1934, 0x000e }, { 1937, 0x7b9c },
- { 1947, 0x8490 }, { 1951, 0x14a0 }, { 1955, 0x28c1 }, { 1960, 0x41e0 },
- { 1965, 0x0704 }, { 1969, 0x8c49 }, { 1975, 0x100d }, { 1979, 0x0cc8 },
- /* 0x5f00 */
- { 1984, 0x8412 }, { 1988, 0x89ba }, { 1996, 0x02c0 }, { 1999, 0x1422 },
- { 2003, 0x5500 }, { 2007, 0x0ac0 }, { 2011, 0x3ec4 }, { 2019, 0x9283 },
- { 2025, 0x1ca3 }, { 2032, 0x4387 }, { 2039, 0x4703 }, { 2045, 0x22a0 },
- { 2049, 0x3028 }, { 2053, 0x03c0 }, { 2057, 0x0801 }, { 2059, 0xa020 },
- /* 0x6000 */
- { 2062, 0x8000 }, { 2063, 0x3044 }, { 2067, 0x85a3 }, { 2074, 0x0000 },
- { 2074, 0x200e }, { 2078, 0x2225 }, { 2083, 0xb73c }, { 2093, 0x0001 },
- { 2094, 0x3220 }, { 2098, 0x8c50 }, { 2103, 0x0099 }, { 2107, 0x315d },
- { 2115, 0x00a0 }, { 2117, 0x9402 }, { 2121, 0x0003 }, { 2123, 0x0e4b },
- /* 0x6100 */
- { 2130, 0xe342 }, { 2137, 0x8c20 }, { 2141, 0x0080 }, { 2142, 0xd091 },
- { 2148, 0x1d94 }, { 2155, 0xa328 }, { 2161, 0x499c }, { 2168, 0x60c1 },
- { 2173, 0x4406 }, { 2177, 0x0713 }, { 2183, 0x5a90 }, { 2189, 0x4444 },
- { 2193, 0x0f88 }, { 2199, 0x0000 }, { 2199, 0x0040 }, { 2200, 0x95c4 },
- /* 0x6200 */
- { 2207, 0x7581 }, { 2214, 0x8447 }, { 2220, 0x4402 }, { 2223, 0xc053 },
- { 2229, 0x2b83 }, { 2236, 0x0108 }, { 2238, 0x4000 }, { 2239, 0x9242 },
- { 2244, 0x0611 }, { 2248, 0x09a6 }, { 2254, 0x0800 }, { 2255, 0x3222 },
- { 2260, 0xb384 }, { 2267, 0x1bdd }, { 2277, 0xf000 }, { 2281, 0xc08a },
- /* 0x6300 */
- { 2286, 0x0282 }, { 2289, 0x0002 }, { 2290, 0x8800 }, { 2292, 0x6c00 },
- { 2296, 0x9200 }, { 2299, 0x0021 }, { 2301, 0x4180 }, { 2304, 0x8c84 },
- { 2309, 0x1308 }, { 2313, 0x0944 }, { 2317, 0x07a7 }, { 2325, 0x0000 },
- { 2325, 0x8051 }, { 2329, 0x0c41 }, { 2333, 0x6002 }, { 2336, 0x00d0 },
- /* 0x6400 */
- { 2339, 0xa000 }, { 2341, 0x10d0 }, { 2345, 0x3004 }, { 2348, 0x4400 },
- { 2350, 0x0000 }, { 2350, 0x0100 }, { 2351, 0x8201 }, { 2354, 0x0700 },
- { 2357, 0x0100 }, { 2358, 0x440e }, { 2363, 0x6830 }, { 2368, 0x0805 },
- { 2371, 0x64b2 }, { 2378, 0x0514 }, { 2382, 0x10e6 }, { 2388, 0x4414 },
- /* 0x6500 */
- { 2392, 0x0011 }, { 2394, 0x2100 }, { 2396, 0x9c08 }, { 2401, 0xcbc0 },
- { 2408, 0xe120 }, { 2413, 0x40c2 }, { 2417, 0x304c }, { 2422, 0x41b4 },
- { 2428, 0x10ac }, { 2433, 0x9a83 }, { 2440, 0x98b2 }, { 2447, 0x3281 },
- { 2452, 0x9822 }, { 2457, 0x0084 }, { 2459, 0x3369 }, { 2467, 0xbc12 },
- /* 0x6600 */
- { 2474, 0xd6c0 }, { 2481, 0xc03b }, { 2488, 0xa1a1 }, { 2494, 0x0c53 },
- { 2500, 0x8a1e }, { 2507, 0xea00 }, { 2512, 0xcbf0 }, { 2521, 0x05d8 },
- { 2527, 0x4390 }, { 2532, 0x21c3 }, { 2538, 0x4805 }, { 2542, 0x4a1c },
- { 2548, 0x02d0 }, { 2552, 0x3240 }, { 2556, 0x0041 }, { 2558, 0xd79d },
- /* 0x6700 */
- { 2569, 0x2b09 }, { 2575, 0xe8b0 }, { 2582, 0x7dc0 }, { 2590, 0x2452 },
- { 2595, 0xc240 }, { 2599, 0xd04b }, { 2606, 0xa000 }, { 2608, 0xc8ab },
- { 2616, 0x8a80 }, { 2620, 0x34a9 }, { 2627, 0x8000 }, { 2628, 0x41c9 },
- { 2634, 0x8010 }, { 2636, 0x241f }, { 2643, 0x9200 }, { 2646, 0x487b },
- /* 0x6800 */
- { 2654, 0x0000 }, { 2654, 0x00cc }, { 2658, 0x8406 }, { 2662, 0x3300 },
- { 2666, 0x410f }, { 2672, 0x001b }, { 2676, 0x2000 }, { 2677, 0x8040 },
- { 2679, 0x8022 }, { 2682, 0xa098 }, { 2687, 0xa186 }, { 2693, 0x006b },
- { 2698, 0x2a30 }, { 2703, 0x85a4 }, { 2709, 0x4181 }, { 2713, 0x0604 },
- /* 0x6900 */
- { 2716, 0x6021 }, { 2720, 0x0004 }, { 2721, 0x0080 }, { 2722, 0xa001 },
- { 2725, 0x0400 }, { 2726, 0x46b8 }, { 2733, 0xe90f }, { 2742, 0x03a0 },
- { 2746, 0x0000 }, { 2746, 0x1820 }, { 2749, 0x40a0 }, { 2752, 0x0810 },
- { 2754, 0x380a }, { 2759, 0x0001 }, { 2760, 0x0500 }, { 2762, 0xa800 },
- /* 0x6a00 */
- { 2765, 0x0404 }, { 2767, 0xc28a }, { 2773, 0x000a }, { 2775, 0x2720 },
- { 2780, 0x0910 }, { 2783, 0x830c }, { 2788, 0x0802 }, { 2790, 0x0000 },
- { 2790, 0x6211 }, { 2795, 0x1080 }, { 2797, 0x000c }, { 2799, 0x0808 },
- { 2801, 0x000c }, { 2803, 0x0c08 }, { 2806, 0x0000 }, { 2806, 0x0840 },
- /* 0x6b00 */
- { 2808, 0x1410 }, { 2811, 0x0044 }, { 2813, 0x000b }, { 2816, 0x6404 },
- { 2820, 0x50c0 }, { 2824, 0x8001 }, { 2826, 0x047e }, { 2833, 0x8984 },
- { 2838, 0x0658 }, { 2843, 0x4140 }, { 2846, 0xc000 }, { 2848, 0x94a4 },
- { 2854, 0xa862 }, { 2860, 0x09dc }, { 2867, 0x1800 }, { 2869, 0x0000 },
- /* 0x6c00 */
- { 2869, 0x8100 }, { 2871, 0x000a }, { 2873, 0x0008 }, { 2874, 0x4190 },
- { 2878, 0x4007 }, { 2882, 0xe4a1 }, { 2889, 0x2501 }, { 2893, 0x6445 },
- { 2899, 0x11ee }, { 2907, 0x0e7d }, { 2916, 0x4800 }, { 2918, 0xfb08 },
- { 2926, 0x1616 }, { 2932, 0x08a8 }, { 2936, 0xc92e }, { 2944, 0x0009 },
- /* 0x6d00 */
- { 2946, 0x1800 }, { 2948, 0x4a82 }, { 2953, 0x06a0 }, { 2957, 0x6b64 },
- { 2965, 0x0002 }, { 2966, 0x1600 }, { 2969, 0x5648 }, { 2975, 0x8390 },
- { 2980, 0x73a0 }, { 2987, 0x002a }, { 2990, 0x8000 }, { 2991, 0x0024 },
- { 2993, 0x88f9 }, { 3001, 0x4702 }, { 3006, 0x4d02 }, { 3011, 0x0faa },
- /* 0x6e00 */
- { 3019, 0x0000 }, { 3019, 0x8e80 }, { 3024, 0xb87b }, { 3034, 0x7554 },
- { 3042, 0x2418 }, { 3046, 0xd940 }, { 3052, 0xc880 }, { 3056, 0x040c },
- { 3059, 0x0000 }, { 3059, 0xb041 }, { 3064, 0x8c24 }, { 3069, 0x0442 },
- { 3072, 0x5a34 }, { 3079, 0x001a }, { 3082, 0x8000 }, { 3083, 0xc110 },
- /* 0x6f00 */
- { 3087, 0x8046 }, { 3091, 0x0032 }, { 3094, 0x180d }, { 3099, 0x8106 },
- { 3103, 0x0002 }, { 3104, 0xcd92 }, { 3112, 0x6014 }, { 3116, 0x7401 },
- { 3121, 0x6112 }, { 3126, 0x0091 }, { 3129, 0xc098 }, { 3134, 0x420a },
- { 3138, 0x040f }, { 3143, 0x8420 }, { 3146, 0x9a13 }, { 3153, 0x4002 },
- /* 0x7000 */
- { 3155, 0x8a62 }, { 3161, 0xfd22 }, { 3170, 0x8188 }, { 3174, 0x4080 },
- { 3176, 0x1000 }, { 3177, 0x2103 }, { 3181, 0x0808 }, { 3183, 0x3101 },
- { 3187, 0x4420 }, { 3190, 0x0704 }, { 3194, 0xb812 }, { 3200, 0x0388 },
- { 3204, 0x8900 }, { 3207, 0xa300 }, { 3211, 0x0000 }, { 3211, 0x2202 },
- /* 0x7100 */
- { 3214, 0x1210 }, { 3217, 0x4600 }, { 3220, 0x0042 }, { 3222, 0x0041 },
- { 3224, 0x5680 }, { 3229, 0x5241 }, { 3234, 0x52f0 }, { 3241, 0x2000 },
- { 3242, 0x8610 }, { 3246, 0x8214 }, { 3250, 0x1004 }, { 3252, 0x4602 },
- { 3256, 0x430a }, { 3261, 0x8035 }, { 3266, 0x60e0 }, { 3271, 0xd800 },
- /* 0x7200 */
- { 3275, 0x0041 }, { 3277, 0x0801 }, { 3279, 0x3400 }, { 3282, 0x6c65 },
- { 3290, 0x11c1 }, { 3295, 0xab04 }, { 3301, 0x0286 }, { 3305, 0x2204 },
- { 3308, 0x0003 }, { 3310, 0x0000 }, { 3310, 0x9084 }, { 3314, 0x0000 },
- { 3314, 0x4015 }, { 3318, 0x0281 }, { 3321, 0x0202 }, { 3323, 0x3300 },
- /* 0x7300 */
- { 3327, 0x0400 }, { 3328, 0x3840 }, { 3332, 0x0e20 }, { 3336, 0xc0c0 },
- { 3340, 0x0030 }, { 3342, 0x0085 }, { 3345, 0x0500 }, { 3347, 0x0d25 },
- { 3353, 0x4ad0 }, { 3359, 0x81d0 }, { 3364, 0x2280 }, { 3367, 0x020c },
- { 3370, 0xb605 }, { 3377, 0x6240 }, { 3381, 0x2679 }, { 3389, 0x6280 },
- /* 0x7400 */
- { 3393, 0x02ea }, { 3399, 0x0808 }, { 3401, 0xdd67 }, { 3412, 0x8579 },
- { 3420, 0x081b }, { 3425, 0xdea0 }, { 3433, 0x8735 }, { 3441, 0x4000 },
- { 3442, 0x0a8c }, { 3447, 0xd100 }, { 3451, 0x05aa }, { 3457, 0xa225 },
- { 3463, 0x8440 }, { 3466, 0x1510 }, { 3470, 0x404d }, { 3475, 0x0080 },
- /* 0x7500 */
- { 3476, 0x0012 }, { 3478, 0x8d22 }, { 3484, 0x1968 }, { 3490, 0x058f },
- { 3497, 0x9080 }, { 3500, 0x3a1a }, { 3507, 0x8464 }, { 3512, 0x8561 },
- { 3518, 0xccc0 }, { 3524, 0x2002 }, { 3526, 0x0820 }, { 3528, 0x732e },
- { 3537, 0x20a4 }, { 3541, 0x0b34 }, { 3547, 0x0004 }, { 3548, 0x1415 },
- /* 0x7600 */
- { 3553, 0x2001 }, { 3555, 0x8200 }, { 3557, 0x0057 }, { 3562, 0x0800 },
- { 3563, 0x5004 }, { 3566, 0x0044 }, { 3568, 0x1212 }, { 3572, 0x7905 },
- { 3579, 0x40d0 }, { 3583, 0x0009 }, { 3585, 0x4000 }, { 3586, 0x8400 },
- { 3588, 0x054c }, { 3593, 0xd844 }, { 3599, 0x409a }, { 3604, 0x5114 },
- /* 0x7700 */
- { 3609, 0x0b12 }, { 3614, 0x4000 }, { 3615, 0x0201 }, { 3617, 0x1580 },
- { 3621, 0x2001 }, { 3623, 0x0800 }, { 3624, 0x084a }, { 3628, 0xc200 },
- { 3631, 0x0800 }, { 3632, 0x4002 }, { 3634, 0x3020 }, { 3637, 0x9809 },
- { 3642, 0x0000 }, { 3642, 0x1880 }, { 3645, 0xe22c }, { 3652, 0x0008 },
- /* 0x7800 */
- { 3653, 0x0004 }, { 3654, 0x0004 }, { 3655, 0x10e0 }, { 3659, 0x0014 },
- { 3661, 0x8020 }, { 3663, 0x2000 }, { 3664, 0x9800 }, { 3667, 0x1000 },
- { 3668, 0x7082 }, { 3673, 0x0082 }, { 3675, 0x0288 }, { 3678, 0x1c00 },
- { 3681, 0x4c22 }, { 3686, 0x0001 }, { 3687, 0x9100 }, { 3690, 0x0820 },
- /* 0x7900 */
- { 3692, 0x4002 }, { 3694, 0x0040 }, { 3695, 0x1c00 }, { 3698, 0x4400 },
- { 3700, 0x0383 }, { 3705, 0x7cc1 }, { 3713, 0x2121 }, { 3717, 0x8400 },
- { 3719, 0xe002 }, { 3723, 0x0002 }, { 3724, 0x44c0 }, { 3728, 0xe20a },
- { 3734, 0x0e03 }, { 3739, 0x8126 }, { 3744, 0x02d0 }, { 3748, 0x0800 },
- /* 0x7a00 */
- { 3749, 0x2921 }, { 3754, 0x9690 }, { 3760, 0x4001 }, { 3762, 0xb8c2 },
- { 3769, 0x6241 }, { 3774, 0x0080 }, { 3775, 0x0a06 }, { 3779, 0xa651 },
- { 3786, 0x0112 }, { 3789, 0x812c }, { 3794, 0xc600 }, { 3798, 0x0400 },
- { 3799, 0x0cb0 }, { 3804, 0xa280 }, { 3808, 0xa429 }, { 3814, 0x8640 },
- /* 0x7b00 */
- { 3818, 0x8000 }, { 3819, 0x4a02 }, { 3823, 0x3041 }, { 3827, 0x0200 },
- { 3828, 0xba40 }, { 3834, 0x0057 }, { 3839, 0x5001 }, { 3842, 0x2020 },
- { 3844, 0x8880 }, { 3847, 0x24b0 }, { 3852, 0x2002 }, { 3854, 0x0112 },
- { 3857, 0x02d3 }, { 3863, 0x0004 }, { 3864, 0x0211 }, { 3867, 0x0000 },
- /* 0x7c00 */
- { 3867, 0x0080 }, { 3868, 0x4004 }, { 3870, 0x0c82 }, { 3874, 0xe000 },
- { 3877, 0x3008 }, { 3880, 0x0000 }, { 3880, 0x1011 }, { 3883, 0x0008 },
- { 3884, 0x0208 }, { 3886, 0x81a4 }, { 3891, 0x40a0 }, { 3894, 0x420e },
- { 3899, 0x0400 }, { 3900, 0xc040 }, { 3903, 0x0081 }, { 3905, 0x4800 },
- /* 0x7d00 */
- { 3907, 0x2df5 }, { 3917, 0x0f91 }, { 3924, 0xd807 }, { 3931, 0x0629 },
- { 3936, 0x007c }, { 3941, 0x4001 }, { 3943, 0x4546 }, { 3949, 0x824e },
- { 3955, 0xc000 }, { 3957, 0x1008 }, { 3959, 0x3005 }, { 3963, 0xed36 },
- { 3973, 0x0c80 }, { 3976, 0x6540 }, { 3981, 0x930b }, { 3988, 0x0810 },
- /* 0x7e00 */
- { 3990, 0x0600 }, { 3992, 0xe820 }, { 3997, 0xc80a }, { 4002, 0x6082 },
- { 4006, 0x00ca }, { 4010, 0x4034 }, { 4014, 0x2e02 }, { 4019, 0x1201 },
- { 4022, 0x9004 }, { 4025, 0x1948 }, { 4030, 0x0000 }, { 4030, 0x0000 },
- { 4030, 0x0000 }, { 4030, 0x0000 }, { 4030, 0x0000 }, { 4030, 0x0000 },
- /* 0x7f00 */
- { 4030, 0x0000 }, { 4030, 0x0000 }, { 4030, 0x0000 }, { 4030, 0x0540 },
- { 4033, 0x1000 }, { 4034, 0x0031 }, { 4037, 0x4c00 }, { 4040, 0x02a5 },
- { 4045, 0x5520 }, { 4050, 0x4410 }, { 4053, 0x0310 }, { 4056, 0x2304 },
- { 4060, 0x5422 }, { 4065, 0x8034 }, { 4069, 0x0a03 }, { 4073, 0x1201 },
- /* 0x8000 */
- { 4076, 0x126b }, { 4083, 0x01a1 }, { 4087, 0x2000 }, { 4088, 0xa048 },
- { 4092, 0x0448 }, { 4095, 0x4540 }, { 4099, 0x8000 }, { 4100, 0xe08d },
- { 4107, 0x1af0 }, { 4114, 0x2840 }, { 4117, 0x8626 }, { 4123, 0x0416 },
- { 4127, 0x5018 }, { 4131, 0x4c00 }, { 4134, 0x0032 }, { 4137, 0x2112 },
- /* 0x8100 */
- { 4141, 0x05e4 }, { 4147, 0x0d00 }, { 4150, 0x8a08 }, { 4154, 0x4200 },
- { 4156, 0x4800 }, { 4158, 0x0033 }, { 4162, 0x0860 }, { 4165, 0x8703 },
- { 4171, 0x8501 }, { 4175, 0x3400 }, { 4178, 0x0109 }, { 4181, 0xe428 },
- { 4187, 0x2045 }, { 4191, 0x8100 }, { 4193, 0x25a8 }, { 4199, 0x5c18 },
- /* 0x8200 */
- { 4205, 0x35a0 }, { 4211, 0xd804 }, { 4216, 0x1c02 }, { 4220, 0x02e0 },
- { 4224, 0x00a1 }, { 4227, 0x0200 }, { 4228, 0xc050 }, { 4232, 0x4146 },
- { 4237, 0x6800 }, { 4240, 0xa604 }, { 4245, 0xf260 }, { 4252, 0xbb8a },
- { 4261, 0x0000 }, { 4261, 0xc8b6 }, { 4269, 0x00e2 }, { 4273, 0x6002 },
- /* 0x8300 */
- { 4276, 0x023e }, { 4282, 0x0080 }, { 4283, 0x8900 }, { 4286, 0x0372 },
- { 4292, 0x8681 }, { 4297, 0x0006 }, { 4299, 0x0000 }, { 4299, 0x0888 },
- { 4302, 0x4600 }, { 4305, 0x4140 }, { 4308, 0x0e04 }, { 4312, 0x2000 },
- { 4313, 0x1622 }, { 4318, 0x1048 }, { 4321, 0x8a00 }, { 4324, 0x2217 },
- /* 0x8400 */
- { 4330, 0x7418 }, { 4336, 0x0000 }, { 4336, 0x1200 }, { 4338, 0x2102 },
- { 4341, 0x0200 }, { 4342, 0x0880 }, { 4344, 0x984a }, { 4350, 0x0420 },
- { 4352, 0x0000 }, { 4352, 0x1211 }, { 4356, 0x0002 }, { 4357, 0x9904 },
- { 4362, 0x2a55 }, { 4369, 0x0402 }, { 4371, 0x5000 }, { 4373, 0x1010 },
- /* 0x8500 */
- { 4375, 0x0000 }, { 4375, 0x459a }, { 4382, 0xb02a }, { 4388, 0xa000 },
- { 4390, 0x420a }, { 4394, 0x0208 }, { 4396, 0x2708 }, { 4401, 0x0000 },
- { 4401, 0x8090 }, { 4404, 0x0812 }, { 4407, 0x8740 }, { 4412, 0x0401 },
- { 4414, 0xe202 }, { 4419, 0x3020 }, { 4422, 0x0630 }, { 4426, 0x8c80 },
- /* 0x8600 */
- { 4430, 0x04c4 }, { 4434, 0x04c0 }, { 4437, 0x2000 }, { 4438, 0x8000 },
- { 4439, 0x4000 }, { 4440, 0xd831 }, { 4447, 0x0080 }, { 4448, 0x0200 },
- { 4449, 0x1400 }, { 4451, 0x0008 }, { 4452, 0x0218 }, { 4455, 0x0000 },
- { 4455, 0x0880 }, { 4457, 0x8a10 }, { 4461, 0x2010 }, { 4463, 0x4000 },
- /* 0x8700 */
- { 4464, 0x010d }, { 4468, 0x1500 }, { 4471, 0x0000 }, { 4471, 0x0000 },
- { 4471, 0x4000 }, { 4472, 0x80a0 }, { 4475, 0x0140 }, { 4477, 0x0150 },
- { 4480, 0x2004 }, { 4482, 0x8000 }, { 4483, 0x0004 }, { 4484, 0x0408 },
- { 4486, 0x0010 }, { 4487, 0x0000 }, { 4487, 0x9001 }, { 4490, 0x4a04 },
- /* 0x8800 */
- { 4494, 0x0020 }, { 4495, 0x8000 }, { 4496, 0x000c }, { 4498, 0x0842 },
- { 4501, 0x3041 }, { 4505, 0x2a8c }, { 4511, 0x090e }, { 4516, 0xc085 },
- { 4521, 0x2906 }, { 4526, 0x40c4 }, { 4530, 0x0800 }, { 4531, 0x0010 },
- { 4532, 0x8006 }, { 4535, 0xb230 }, { 4541, 0x0102 }, { 4543, 0x2138 },
- /* 0x8900 */
- { 4548, 0x0080 }, { 4549, 0x030d }, { 4554, 0x0420 }, { 4556, 0x0940 },
- { 4559, 0x0012 }, { 4561, 0x8000 }, { 4562, 0x0410 }, { 4564, 0x8004 },
- { 4566, 0x88ca }, { 4572, 0x0048 }, { 4574, 0x0602 }, { 4577, 0x2404 },
- { 4580, 0x0001 }, { 4581, 0x0004 }, { 4582, 0x0008 }, { 4583, 0x0110 },
- /* 0x8a00 */
- { 4585, 0x550d }, { 4592, 0xa9c8 }, { 4599, 0x2428 }, { 4603, 0x0c52 },
- { 4608, 0x0000 }, { 4608, 0x4831 }, { 4613, 0x624d }, { 4620, 0x022f },
- { 4626, 0x30a0 }, { 4630, 0x4128 }, { 4634, 0x057b }, { 4642, 0xd205 },
- { 4648, 0xa894 }, { 4654, 0x1844 }, { 4658, 0x6cc2 }, { 4665, 0x45c2 },
- /* 0x8b00 */
- { 4671, 0x4017 }, { 4676, 0x2ed1 }, { 4684, 0x1901 }, { 4688, 0x0208 },
- { 4690, 0xc202 }, { 4694, 0x1500 }, { 4697, 0x9040 }, { 4700, 0x2091 },
- { 4704, 0x0401 }, { 4706, 0x044d }, { 4711, 0x0000 }, { 4711, 0x0000 },
- { 4711, 0x0000 }, { 4711, 0x0000 }, { 4711, 0x0000 }, { 4711, 0x0000 },
- /* 0x8c00 */
- { 4711, 0x0000 }, { 4711, 0x0000 }, { 4711, 0x0000 }, { 4711, 0x8080 },
- { 4713, 0x1542 }, { 4718, 0x0420 }, { 4720, 0x0c02 }, { 4723, 0x0600 },
- { 4725, 0x1404 }, { 4728, 0x6000 }, { 4730, 0x9f87 }, { 4740, 0xb9d9 },
- { 4750, 0x059f }, { 4758, 0x540a }, { 4763, 0x245d }, { 4770, 0x3810 },
- /* 0x8d00 */
- { 4774, 0x25b0 }, { 4780, 0x0048 }, { 4782, 0x0000 }, { 4782, 0x0000 },
- { 4782, 0x0000 }, { 4782, 0x0000 }, { 4782, 0x0850 }, { 4785, 0x0099 },
- { 4789, 0x0420 }, { 4791, 0x0200 }, { 4792, 0x0108 }, { 4794, 0x4408 },
- { 4797, 0x9840 }, { 4801, 0x2800 }, { 4803, 0x810a }, { 4807, 0x0008 },
- /* 0x8e00 */
- { 4808, 0x8400 }, { 4810, 0x4001 }, { 4812, 0x0400 }, { 4813, 0x0021 },
- { 4815, 0x0794 }, { 4821, 0x8200 }, { 4823, 0x0001 }, { 4824, 0x0050 },
- { 4826, 0x2482 }, { 4830, 0x0000 }, { 4830, 0x1c00 }, { 4833, 0x0000 },
- { 4833, 0x3c01 }, { 4838, 0x8004 }, { 4840, 0x0800 }, { 4841, 0x4900 },
- /* 0x8f00 */
- { 4844, 0x0228 }, { 4847, 0xf83c }, { 4856, 0x86c0 }, { 4861, 0xcb08 },
- { 4867, 0x6230 }, { 4872, 0xa000 }, { 4874, 0x0004 }, { 4875, 0x0000 },
- { 4875, 0x0000 }, { 4875, 0x1800 }, { 4877, 0xa148 }, { 4882, 0x0007 },
- { 4885, 0x4024 }, { 4888, 0x0012 }, { 4890, 0x2c40 }, { 4894, 0x2285 },
- /* 0x9000 */
- { 4899, 0xa96f }, { 4909, 0xe6b3 }, { 4919, 0x400f }, { 4924, 0x5126 },
- { 4930, 0x6c86 }, { 4937, 0x723b }, { 4946, 0xe20b }, { 4953, 0xb5a4 },
- { 4961, 0x859f }, { 4970, 0x0222 }, { 4973, 0x854c }, { 4979, 0x0123 },
- { 4983, 0x0402 }, { 4985, 0x4000 }, { 4986, 0x2102 }, { 4989, 0x2020 },
- /* 0x9100 */
- { 4991, 0x0004 }, { 4992, 0x0224 }, { 4995, 0x2080 }, { 4997, 0x0004 },
- { 4998, 0x7e00 }, { 5004, 0x0004 }, { 5005, 0x1604 }, { 5009, 0x01a0 },
- { 5012, 0x2a80 }, { 5016, 0x1004 }, { 5018, 0xd800 }, { 5022, 0x0032 },
- { 5025, 0xfa81 }, { 5033, 0x3183 }, { 5039, 0x0488 }, { 5042, 0x0020 },
- /* 0x9200 */
- { 5043, 0x2000 }, { 5044, 0x4087 }, { 5049, 0x0000 }, { 5049, 0x8410 },
- { 5052, 0x0221 }, { 5055, 0x4880 }, { 5058, 0x0074 }, { 5062, 0x0000 },
- { 5062, 0x0029 }, { 5065, 0x114a }, { 5070, 0x0000 }, { 5070, 0x02c8 },
- { 5074, 0x9000 }, { 5076, 0x0004 }, { 5077, 0x0410 }, { 5079, 0x1100 },
- /* 0x9300 */
- { 5081, 0x0010 }, { 5082, 0xc501 }, { 5087, 0xc957 }, { 5096, 0x0000 },
- { 5096, 0x2d00 }, { 5100, 0x0810 }, { 5102, 0x4000 }, { 5103, 0x5020 },
- { 5106, 0x1000 }, { 5107, 0x0450 }, { 5110, 0x3088 }, { 5114, 0x0001 },
- { 5115, 0x0008 }, { 5116, 0x4002 }, { 5118, 0x0012 }, { 5120, 0x0040 },
- /* 0x9400 */
- { 5121, 0x0010 }, { 5122, 0x0100 }, { 5123, 0x0820 }, { 5125, 0x0120 },
- { 5127, 0x0010 }, { 5128, 0x0806 }, { 5131, 0x0000 }, { 5131, 0xa000 },
- { 5133, 0x0000 }, { 5133, 0x0000 }, { 5133, 0x0000 }, { 5133, 0x0000 },
- { 5133, 0x0000 }, { 5133, 0x0000 }, { 5133, 0x0000 }, { 5133, 0x0000 },
- /* 0x9500 */
- { 5133, 0x0000 }, { 5133, 0x0000 }, { 5133, 0x0000 }, { 5133, 0x0000 },
- { 5133, 0x0000 }, { 5133, 0x0000 }, { 5133, 0x0000 }, { 5133, 0x0080 },
- { 5134, 0x8a09 }, { 5139, 0x011e }, { 5144, 0x2138 }, { 5149, 0x1802 },
- { 5152, 0x0480 }, { 5154, 0x1070 }, { 5158, 0x0006 }, { 5160, 0x0000 },
- /* 0x9600 */
- { 5160, 0x0000 }, { 5160, 0x1000 }, { 5161, 0x4402 }, { 5164, 0x8804 },
- { 5167, 0x3815 }, { 5173, 0xf801 }, { 5179, 0x041c }, { 5183, 0x21e9 },
- { 5190, 0x6c60 }, { 5196, 0x1b30 }, { 5202, 0x0588 }, { 5206, 0x0882 },
- { 5209, 0x7af3 }, { 5220, 0x1a60 }, { 5225, 0x870c }, { 5231, 0x0ac5 },
- /* 0x9700 */
- { 5237, 0x00c1 }, { 5240, 0x524a }, { 5246, 0x0080 }, { 5247, 0x2205 },
- { 5251, 0x0114 }, { 5254, 0x5042 }, { 5258, 0x2206 }, { 5262, 0x0490 },
- { 5265, 0xa800 }, { 5268, 0x0000 }, { 5268, 0x2901 }, { 5272, 0x0000 },
- { 5272, 0x0840 }, { 5274, 0x1008 }, { 5276, 0x0000 }, { 5276, 0x8848 },
- /* 0x9800 */
- { 5280, 0x156f }, { 5289, 0x018f }, { 5295, 0x2000 }, { 5296, 0x0b01 },
- { 5300, 0x7040 }, { 5304, 0x4510 }, { 5308, 0x88a0 }, { 5312, 0x0000 },
- { 5312, 0x0000 }, { 5312, 0x0000 }, { 5312, 0x8100 }, { 5314, 0x0002 },
- { 5315, 0x0090 }, { 5317, 0x9800 }, { 5320, 0xe006 }, { 5325, 0x7010 },
- /* 0x9900 */
- { 5329, 0x1608 }, { 5333, 0x4109 }, { 5337, 0x0101 }, { 5339, 0x0000 },
- { 5339, 0x3a20 }, { 5344, 0x0096 }, { 5348, 0x0000 }, { 5348, 0x0000 },
- { 5348, 0x0000 }, { 5348, 0x2240 }, { 5351, 0x7120 }, { 5356, 0x021a },
- { 5360, 0x0002 }, { 5361, 0xa227 }, { 5368, 0x2000 }, { 5369, 0x8002 },
- /* 0x9a00 */
- { 5371, 0xc102 }, { 5375, 0x0200 }, { 5376, 0x0800 }, { 5377, 0x00c1 },
- { 5380, 0x2029 }, { 5384, 0x8ca0 }, { 5389, 0x0624 }, { 5393, 0x0000 },
- { 5393, 0x0000 }, { 5393, 0x0000 }, { 5393, 0x0100 }, { 5394, 0x0100 },
- { 5395, 0x0000 }, { 5395, 0x0118 }, { 5398, 0x4020 }, { 5400, 0x0000 },
- /* 0x9b00 */
- { 5400, 0x0000 }, { 5400, 0x0400 }, { 5401, 0x0480 }, { 5403, 0x1002 },
- { 5405, 0x803e }, { 5411, 0x0410 }, { 5413, 0x8000 }, { 5414, 0x0000 },
- { 5414, 0x4000 }, { 5415, 0x8002 }, { 5417, 0x4800 }, { 5419, 0x0000 },
- { 5419, 0x0200 }, { 5420, 0x0040 }, { 5421, 0x0110 }, { 5423, 0x0000 },
- /* 0x9c00 */
- { 5423, 0x2000 }, { 5424, 0x0025 }, { 5427, 0x0020 }, { 5428, 0x0804 },
- { 5430, 0x0280 }, { 5432, 0x0080 }, { 5433, 0x0000 }, { 5433, 0x0000 },
- { 5433, 0x0000 }, { 5433, 0x0000 }, { 5433, 0x0000 }, { 5433, 0x0000 },
- { 5433, 0x0000 }, { 5433, 0x0000 }, { 5433, 0x02a0 }, { 5436, 0x0058 },
- /* 0x9d00 */
- { 5439, 0x0200 }, { 5440, 0x0800 }, { 5441, 0x0140 }, { 5443, 0x0800 },
- { 5444, 0x0000 }, { 5444, 0x2002 }, { 5446, 0x1003 }, { 5449, 0x0004 },
- { 5450, 0x0000 }, { 5450, 0x0000 }, { 5450, 0x8200 }, { 5452, 0x0010 },
- { 5453, 0x0010 }, { 5454, 0x0080 }, { 5455, 0x0000 }, { 5455, 0x0704 },
- /* 0x9e00 */
- { 5459, 0x0000 }, { 5459, 0x4400 }, { 5461, 0x0000 }, { 5461, 0x0000 },
- { 5461, 0x0000 }, { 5461, 0x0000 }, { 5461, 0x0000 }, { 5461, 0xa220 },
- { 5465, 0x0000 }, { 5465, 0xa08c }, { 5470, 0x0020 }, { 5471, 0x4830 },
- { 5475, 0x6008 }, { 5478, 0x5912 }, { 5484, 0x0100 }, { 5485, 0x0010 },
- /* 0x9f00 */
- { 5486, 0x4180 }, { 5489, 0x0008 }, { 5490, 0x0001 }, { 5491, 0x0800 },
- { 5492, 0x4c00 }, { 5495, 0x8004 }, { 5497, 0x1482 }, { 5501, 0x0080 },
- { 5502, 0x2000 }, { 5503, 0x1021 },
-};
-static const Summary16 ksc5601_uni2indx_pageac[698] = {
- /* 0xac00 */
- { 5506, 0x0793 }, { 5513, 0x3eff }, { 5526, 0xb011 }, { 5531, 0x1303 },
- { 5536, 0x2801 }, { 5539, 0x1110 }, { 5542, 0x0000 }, { 5542, 0x0593 },
- { 5548, 0x1e7b }, { 5558, 0xb011 }, { 5563, 0x9703 }, { 5570, 0x3b01 },
- { 5576, 0x1112 }, { 5580, 0x00a0 }, { 5582, 0x9593 }, { 5590, 0x306b },
- /* 0xad00 */
- { 5597, 0xb051 }, { 5603, 0x1102 }, { 5606, 0x3201 }, { 5610, 0x1130 },
- { 5614, 0x02b0 }, { 5618, 0x0111 }, { 5621, 0x300a }, { 5625, 0xb879 },
- { 5634, 0x1306 }, { 5639, 0x3001 }, { 5642, 0x0010 }, { 5643, 0x0080 },
- { 5644, 0x0113 }, { 5648, 0x100b }, { 5652, 0x0011 }, { 5654, 0x9300 },
- /* 0xae00 */
- { 5658, 0x2b03 }, { 5664, 0x0010 }, { 5665, 0x0000 }, { 5665, 0x0593 },
- { 5671, 0x746b }, { 5680, 0xb051 }, { 5686, 0x1323 }, { 5692, 0x3b01 },
- { 5698, 0x1030 }, { 5701, 0x0000 }, { 5701, 0x0000 }, { 5701, 0x7000 },
- { 5704, 0xb011 }, { 5709, 0x1303 }, { 5714, 0x2900 }, { 5717, 0x1110 },
- /* 0xaf00 */
- { 5720, 0x2180 }, { 5723, 0x0001 }, { 5724, 0x3000 }, { 5726, 0xb015 },
- { 5732, 0x030e }, { 5737, 0x3001 }, { 5740, 0x0030 }, { 5742, 0x0200 },
- { 5743, 0x0111 }, { 5746, 0x1023 }, { 5750, 0x0000 }, { 5750, 0x1300 },
- { 5753, 0x6b81 }, { 5760, 0x1010 }, { 5762, 0x0300 }, { 5764, 0x0113 },
- /* 0xb000 */
- { 5768, 0x1013 }, { 5772, 0x3011 }, { 5776, 0x0100 }, { 5777, 0x0000 },
- { 5777, 0x5530 }, { 5783, 0x22b8 }, { 5789, 0x0000 }, { 5789, 0x3000 },
- { 5791, 0xb011 }, { 5796, 0x9702 }, { 5802, 0xfb07 }, { 5812, 0x113a },
- { 5818, 0x03b0 }, { 5823, 0x0113 }, { 5827, 0x0021 }, { 5829, 0x0000 },
- /* 0xb100 */
- { 5829, 0x1b00 }, { 5833, 0x3b0d }, { 5841, 0x1138 }, { 5846, 0x03b0 },
- { 5851, 0x0113 }, { 5855, 0x1133 }, { 5861, 0x0001 }, { 5862, 0x1300 },
- { 5865, 0x2b05 }, { 5871, 0x111c }, { 5876, 0x0100 }, { 5877, 0x0000 },
- { 5877, 0x1000 }, { 5878, 0xb011 }, { 5883, 0x1300 }, { 5886, 0x2a01 },
- /* 0xb200 */
- { 5890, 0x1930 }, { 5895, 0x02b0 }, { 5899, 0x0001 }, { 5900, 0x1010 },
- { 5902, 0x0000 }, { 5902, 0x1100 }, { 5904, 0x0301 }, { 5907, 0x1030 },
- { 5910, 0x0230 }, { 5913, 0x0713 }, { 5919, 0x146b }, { 5926, 0x0011 },
- { 5928, 0x1300 }, { 5931, 0x2b05 }, { 5937, 0xf974 }, { 5947, 0x8fb8 },
- /* 0xb300 */
- { 5956, 0x0113 }, { 5960, 0x103b }, { 5966, 0x0000 }, { 5966, 0x0000 },
- { 5966, 0x0000 }, { 5966, 0xd970 }, { 5974, 0x4ab0 }, { 5980, 0x0113 },
- { 5984, 0x103b }, { 5990, 0x0011 }, { 5992, 0x1103 }, { 5996, 0x0000 },
- { 5996, 0x5930 }, { 6002, 0x2ab1 }, { 6009, 0x0111 }, { 6012, 0x1000 },
- /* 0xb400 */
- { 6013, 0x0000 }, { 6013, 0x1101 }, { 6016, 0x0b01 }, { 6020, 0x0010 },
- { 6021, 0x0000 }, { 6021, 0x0113 }, { 6025, 0x102b }, { 6030, 0x0000 },
- { 6030, 0x0101 }, { 6032, 0x2000 }, { 6033, 0x1110 }, { 6036, 0x02a0 },
- { 6039, 0x0111 }, { 6042, 0x3021 }, { 6046, 0xb059 }, { 6053, 0x0102 },
- /* 0xb500 */
- { 6055, 0x0000 }, { 6055, 0x1930 }, { 6060, 0x07b0 }, { 6066, 0x0113 },
- { 6070, 0x383b }, { 6078, 0xb011 }, { 6083, 0x0003 }, { 6085, 0x0000 },
- { 6085, 0x0000 }, { 6085, 0x0000 }, { 6085, 0x0d13 }, { 6091, 0x383b },
- { 6099, 0xb011 }, { 6104, 0x0103 }, { 6107, 0x1000 }, { 6108, 0x0000 },
- /* 0xb600 */
- { 6108, 0x0000 }, { 6108, 0x0113 }, { 6112, 0x1020 }, { 6114, 0x0010 },
- { 6115, 0x0100 }, { 6116, 0x0000 }, { 6116, 0x0110 }, { 6118, 0x0000 },
- { 6118, 0x0000 }, { 6118, 0x3000 }, { 6120, 0x1811 }, { 6124, 0x0002 },
- { 6125, 0x0000 }, { 6125, 0x0010 }, { 6126, 0x0000 }, { 6126, 0x0111 },
- /* 0xb700 */
- { 6129, 0x0023 }, { 6132, 0x0000 }, { 6132, 0x9300 }, { 6136, 0x0b01 },
- { 6140, 0x1110 }, { 6143, 0x0030 }, { 6145, 0x0111 }, { 6148, 0x302b },
- { 6154, 0xb011 }, { 6159, 0x13c7 }, { 6167, 0x3b01 }, { 6173, 0x0130 },
- { 6176, 0x0280 }, { 6178, 0x0000 }, { 6178, 0x3000 }, { 6180, 0xb011 },
- /* 0xb800 */
- { 6185, 0x1383 }, { 6191, 0x2b01 }, { 6196, 0x1130 }, { 6200, 0x03b0 },
- { 6205, 0x0011 }, { 6207, 0x300a }, { 6211, 0xb011 }, { 6216, 0x1102 },
- { 6219, 0x2000 }, { 6220, 0x0000 }, { 6220, 0x0100 }, { 6221, 0x0111 },
- { 6224, 0x102b }, { 6229, 0xa011 }, { 6233, 0x1302 }, { 6237, 0x2b01 },
- /* 0xb900 */
- { 6242, 0x0010 }, { 6243, 0x0100 }, { 6244, 0x0001 }, { 6245, 0x3000 },
- { 6247, 0x9011 }, { 6251, 0x1302 }, { 6255, 0x2b01 }, { 6260, 0x1130 },
- { 6264, 0x66b0 }, { 6271, 0x0000 }, { 6271, 0x3000 }, { 6273, 0xb011 },
- { 6278, 0xd302 }, { 6284, 0x6b07 }, { 6292, 0x113a }, { 6298, 0x07b0 },
- /* 0xba00 */
- { 6304, 0x0103 }, { 6307, 0x0020 }, { 6308, 0x0000 }, { 6308, 0x1300 },
- { 6311, 0x6b05 }, { 6318, 0x1138 }, { 6323, 0x03b0 }, { 6328, 0x0113 },
- { 6332, 0x10b8 }, { 6337, 0x0000 }, { 6337, 0x1b00 }, { 6341, 0x2b05 },
- { 6347, 0x0110 }, { 6349, 0x0300 }, { 6351, 0x0000 }, { 6351, 0x1000 },
- /* 0xbb00 */
- { 6352, 0xa011 }, { 6356, 0x1102 }, { 6359, 0x0a01 }, { 6362, 0x7970 },
- { 6370, 0xa2b0 }, { 6376, 0x0111 }, { 6379, 0x100a }, { 6382, 0x0000 },
- { 6382, 0x1100 }, { 6384, 0x0001 }, { 6385, 0x1110 }, { 6388, 0x0090 },
- { 6390, 0x0111 }, { 6393, 0x0009 }, { 6395, 0x0000 }, { 6395, 0x9300 },
- /* 0xbc00 */
- { 6399, 0xbb05 }, { 6407, 0xf9f2 }, { 6418, 0x22b0 }, { 6423, 0x0113 },
- { 6427, 0x323b }, { 6435, 0x2001 }, { 6437, 0x0000 }, { 6437, 0x0000 },
- { 6437, 0x5930 }, { 6443, 0x06b0 }, { 6448, 0x0193 }, { 6453, 0x303b },
- { 6460, 0xa011 }, { 6464, 0x1123 }, { 6469, 0x0000 }, { 6469, 0x1170 },
- /* 0xbd00 */
- { 6474, 0x02b0 }, { 6478, 0x0011 }, { 6480, 0x1010 }, { 6482, 0x0000 },
- { 6482, 0x1301 }, { 6486, 0x0301 }, { 6489, 0x0110 }, { 6491, 0x0000 },
- { 6491, 0x0793 }, { 6498, 0x162b }, { 6505, 0x0010 }, { 6506, 0x0101 },
- { 6508, 0x0000 }, { 6508, 0x1130 }, { 6512, 0x0200 }, { 6513, 0x0111 },
- /* 0xbe00 */
- { 6516, 0x3029 }, { 6521, 0xb011 }, { 6526, 0x0000 }, { 6526, 0x0000 },
- { 6526, 0x5130 }, { 6531, 0x0eb0 }, { 6537, 0x0513 }, { 6542, 0x383b },
- { 6550, 0xb011 }, { 6555, 0x0303 }, { 6559, 0x0100 }, { 6560, 0x0000 },
- { 6560, 0x0000 }, { 6560, 0x0193 }, { 6565, 0x1039 }, { 6570, 0x0000 },
- /* 0xbf00 */
- { 6570, 0x0302 }, { 6573, 0x3b00 }, { 6578, 0x0000 }, { 6578, 0x0000 },
- { 6578, 0x0113 }, { 6582, 0x0023 }, { 6585, 0x0000 }, { 6585, 0x0000 },
- { 6585, 0x0000 }, { 6585, 0x0010 }, { 6586, 0x0000 }, { 6586, 0x0001 },
- { 6587, 0x3020 }, { 6590, 0x9011 }, { 6594, 0x0002 }, { 6595, 0x0000 },
- /* 0xc000 */
- { 6595, 0x0000 }, { 6595, 0x0000 }, { 6595, 0x0000 }, { 6595, 0x1000 },
- { 6596, 0x0000 }, { 6596, 0x1102 }, { 6599, 0x0301 }, { 6602, 0x0000 },
- { 6602, 0x0000 }, { 6602, 0x0113 }, { 6606, 0xb02b }, { 6613, 0xb079 },
- { 6621, 0x1323 }, { 6627, 0x3b01 }, { 6633, 0x1130 }, { 6637, 0x02b0 },
- /* 0xc100 */
- { 6641, 0x0111 }, { 6644, 0xf021 }, { 6650, 0xb0d9 }, { 6658, 0x1343 },
- { 6664, 0x3b01 }, { 6670, 0x1130 }, { 6674, 0x03b0 }, { 6679, 0x0111 },
- { 6682, 0x7020 }, { 6686, 0xb051 }, { 6692, 0x1322 }, { 6697, 0x2001 },
- { 6699, 0x1110 }, { 6702, 0x0190 }, { 6705, 0x0111 }, { 6708, 0x300b },
- /* 0xc200 */
- { 6713, 0xb011 }, { 6718, 0x9302 }, { 6723, 0xab01 }, { 6729, 0x0016 },
- { 6732, 0x0100 }, { 6733, 0x0113 }, { 6737, 0x3021 }, { 6741, 0xb011 },
- { 6746, 0x0302 }, { 6749, 0x2901 }, { 6753, 0x3130 }, { 6758, 0x02b0 },
- { 6762, 0x0000 }, { 6762, 0x3000 }, { 6764, 0xb819 }, { 6771, 0x1b42 },
- /* 0xc300 */
- { 6777, 0x3301 }, { 6782, 0x1138 }, { 6787, 0x0330 }, { 6791, 0x0000 },
- { 6791, 0x0020 }, { 6792, 0x0000 }, { 6792, 0x1300 }, { 6795, 0x3305 },
- { 6801, 0x1110 }, { 6804, 0x0000 }, { 6804, 0x0000 }, { 6804, 0x0000 },
- { 6804, 0x0001 }, { 6805, 0x9300 }, { 6809, 0x2305 }, { 6814, 0x0130 },
- /* 0xc400 */
- { 6817, 0x0100 }, { 6818, 0x0001 }, { 6819, 0x1010 }, { 6821, 0x3011 },
- { 6825, 0x0100 }, { 6826, 0x0000 }, { 6826, 0x1130 }, { 6830, 0x0230 },
- { 6833, 0x0001 }, { 6834, 0x1010 }, { 6836, 0x0000 }, { 6836, 0x1100 },
- { 6838, 0x0000 }, { 6838, 0x0000 }, { 6838, 0x0200 }, { 6839, 0x8513 },
- /* 0xc500 */
- { 6845, 0x1003 }, { 6848, 0x1011 }, { 6851, 0x1300 }, { 6854, 0x2b01 },
- { 6859, 0x7730 }, { 6867, 0x63b8 }, { 6875, 0x0113 }, { 6879, 0x303b },
- { 6886, 0xb091 }, { 6892, 0x11a2 }, { 6897, 0x0201 }, { 6899, 0x7b30 },
- { 6907, 0x57f0 }, { 6916, 0x0113 }, { 6920, 0x702b }, { 6927, 0xf0d1 },
- /* 0xc600 */
- { 6935, 0x11e3 }, { 6942, 0x1b01 }, { 6947, 0x7130 }, { 6953, 0x0ab9 },
- { 6960, 0x0113 }, { 6964, 0x303b }, { 6971, 0x9001 }, { 6974, 0x1302 },
- { 6978, 0x2b01 }, { 6983, 0x1130 }, { 6987, 0x02b0 }, { 6991, 0x0713 },
- { 6997, 0x302b }, { 7003, 0x3011 }, { 7007, 0x1303 }, { 7012, 0x2301 },
- /* 0xc700 */
- { 7016, 0x1130 }, { 7020, 0x02b0 }, { 7024, 0x0113 }, { 7028, 0x30ab },
- { 7035, 0xb411 }, { 7041, 0x11fe }, { 7050, 0x0901 }, { 7053, 0x7130 },
- { 7059, 0x47b8 }, { 7067, 0x05d3 }, { 7074, 0x307b }, { 7082, 0xb011 },
- { 7087, 0x5303 }, { 7093, 0x2101 }, { 7096, 0x1110 }, { 7099, 0x0000 },
- /* 0xc800 */
- { 7099, 0x0513 }, { 7104, 0x306b }, { 7111, 0xb011 }, { 7116, 0x1102 },
- { 7119, 0x3301 }, { 7124, 0x0010 }, { 7125, 0x0000 }, { 7125, 0x0513 },
- { 7130, 0x38eb }, { 7139, 0xa010 }, { 7142, 0x0102 }, { 7144, 0x3000 },
- { 7146, 0x1110 }, { 7149, 0x02b0 }, { 7153, 0x0013 }, { 7156, 0x3020 },
- /* 0xc900 */
- { 7159, 0xb071 }, { 7166, 0x0102 }, { 7168, 0x1000 }, { 7169, 0x0010 },
- { 7170, 0x0000 }, { 7170, 0x0113 }, { 7174, 0x100b }, { 7178, 0x1011 },
- { 7181, 0x1300 }, { 7184, 0x2b01 }, { 7189, 0x0000 }, { 7189, 0x0000 },
- { 7189, 0x0593 }, { 7195, 0x366b }, { 7204, 0xb095 }, { 7211, 0x1303 },
- /* 0xca00 */
- { 7216, 0x3b01 }, { 7222, 0x0110 }, { 7224, 0x0200 }, { 7225, 0x0000 },
- { 7225, 0x3000 }, { 7227, 0xb011 }, { 7232, 0x0103 }, { 7235, 0x2000 },
- { 7236, 0x0010 }, { 7237, 0x0100 }, { 7238, 0x0000 }, { 7238, 0x3000 },
- { 7240, 0xb011 }, { 7245, 0x030a }, { 7249, 0x1001 }, { 7251, 0x0010 },
- /* 0xcb00 */
- { 7252, 0x0100 }, { 7253, 0x0111 }, { 7256, 0x0003 }, { 7258, 0x0000 },
- { 7258, 0x1302 }, { 7262, 0x2301 }, { 7266, 0x0010 }, { 7267, 0x0300 },
- { 7269, 0x0000 }, { 7269, 0x1000 }, { 7270, 0x0000 }, { 7270, 0x0100 },
- { 7271, 0x0000 }, { 7271, 0x0010 }, { 7272, 0x0290 }, { 7275, 0x0000 },
- /* 0xcc00 */
- { 7275, 0x3000 }, { 7277, 0x3011 }, { 7281, 0x5386 }, { 7288, 0x7b01 },
- { 7295, 0x1130 }, { 7299, 0x03b0 }, { 7304, 0x0151 }, { 7308, 0x0021 },
- { 7310, 0x0000 }, { 7310, 0x1300 }, { 7313, 0x3b01 }, { 7319, 0x1130 },
- { 7323, 0x02b0 }, { 7327, 0x0011 }, { 7329, 0x1010 }, { 7331, 0x0001 },
- /* 0xcd00 */
- { 7332, 0x1302 }, { 7336, 0x2b01 }, { 7341, 0x1110 }, { 7344, 0x0200 },
- { 7345, 0x0000 }, { 7345, 0x1000 }, { 7346, 0xb011 }, { 7351, 0x0102 },
- { 7353, 0x0100 }, { 7354, 0x1130 }, { 7358, 0x02b0 }, { 7362, 0x0001 },
- { 7363, 0x1010 }, { 7365, 0x0001 }, { 7366, 0x1100 }, { 7368, 0x2b01 },
- /* 0xce00 */
- { 7373, 0x1110 }, { 7376, 0x0210 }, { 7378, 0x0113 }, { 7382, 0x002b },
- { 7386, 0x0000 }, { 7386, 0x9300 }, { 7390, 0x2b03 }, { 7396, 0x1130 },
- { 7400, 0x02b0 }, { 7404, 0x0113 }, { 7408, 0x303b }, { 7415, 0x0000 },
- { 7415, 0x0002 }, { 7416, 0x0000 }, { 7416, 0x1930 }, { 7421, 0x03b0 },
- /* 0xcf00 */
- { 7426, 0x0113 }, { 7430, 0x102b }, { 7435, 0xb011 }, { 7440, 0x0103 },
- { 7443, 0x0000 }, { 7443, 0x1130 }, { 7447, 0x02b0 }, { 7451, 0x0113 },
- { 7455, 0x1021 }, { 7458, 0x0000 }, { 7458, 0x0102 }, { 7460, 0x0001 },
- { 7461, 0x0010 }, { 7462, 0x0000 }, { 7462, 0x0113 }, { 7466, 0x102b },
- /* 0xd000 */
- { 7471, 0x0011 }, { 7473, 0x0102 }, { 7475, 0x2000 }, { 7476, 0x1130 },
- { 7480, 0x02b0 }, { 7484, 0x0111 }, { 7487, 0x3001 }, { 7490, 0x3011 },
- { 7494, 0x0002 }, { 7495, 0x0000 }, { 7495, 0x1130 }, { 7499, 0x02b0 },
- { 7503, 0x0313 }, { 7508, 0x303b }, { 7515, 0xb011 }, { 7520, 0x0103 },
- /* 0xd100 */
- { 7523, 0x2000 }, { 7524, 0x0000 }, { 7524, 0x0000 }, { 7524, 0x0513 },
- { 7529, 0x303b }, { 7536, 0xb011 }, { 7541, 0x1102 }, { 7544, 0x1000 },
- { 7545, 0x0110 }, { 7547, 0x0000 }, { 7547, 0x0113 }, { 7551, 0x142b },
- { 7557, 0x0001 }, { 7558, 0x0100 }, { 7559, 0x0000 }, { 7559, 0x0110 },
- /* 0xd200 */
- { 7561, 0x0280 }, { 7563, 0x0001 }, { 7564, 0x3000 }, { 7566, 0xb011 },
- { 7571, 0x0102 }, { 7573, 0x1000 }, { 7574, 0x0010 }, { 7575, 0x0000 },
- { 7575, 0x0113 }, { 7579, 0x1023 }, { 7583, 0x1011 }, { 7586, 0x9302 },
- { 7591, 0x0b05 }, { 7596, 0x1110 }, { 7599, 0x0030 }, { 7601, 0x0113 },
- /* 0xd300 */
- { 7605, 0x702b }, { 7612, 0xb051 }, { 7618, 0x1323 }, { 7624, 0x3b01 },
- { 7630, 0x0030 }, { 7632, 0x0000 }, { 7632, 0x0000 }, { 7632, 0x3000 },
- { 7634, 0xb011 }, { 7639, 0x1303 }, { 7644, 0x2b01 }, { 7649, 0x1110 },
- { 7652, 0x0330 }, { 7656, 0x0101 }, { 7658, 0x300a }, { 7662, 0xb011 },
- /* 0xd400 */
- { 7667, 0x0102 }, { 7669, 0x2000 }, { 7670, 0x0000 }, { 7670, 0x0000 },
- { 7670, 0x0011 }, { 7672, 0x1000 }, { 7673, 0xa011 }, { 7677, 0x9300 },
- { 7681, 0x2b05 }, { 7687, 0x0010 }, { 7688, 0x0200 }, { 7689, 0x0000 },
- { 7689, 0x1000 }, { 7690, 0x9011 }, { 7694, 0x1100 }, { 7696, 0x2901 },
- /* 0xd500 */
- { 7700, 0x1110 }, { 7703, 0x00b0 }, { 7706, 0x0000 }, { 7706, 0x3000 },
- { 7708, 0xb011 }, { 7713, 0x1302 }, { 7717, 0x2b21 }, { 7723, 0x1130 },
- { 7727, 0x03b0 }, { 7732, 0x0001 }, { 7733, 0x0020 }, { 7734, 0x0000 },
- { 7734, 0x1300 }, { 7737, 0x2b05 }, { 7743, 0x1130 }, { 7747, 0x02b0 },
- /* 0xd600 */
- { 7751, 0x0113 }, { 7755, 0x103b }, { 7761, 0x2011 }, { 7764, 0x1300 },
- { 7767, 0x2b21 }, { 7773, 0x1132 }, { 7778, 0x0280 }, { 7780, 0x0013 },
- { 7783, 0x3028 }, { 7787, 0xa011 }, { 7791, 0x1102 }, { 7794, 0x0a01 },
- { 7797, 0x1130 }, { 7801, 0x0292 }, { 7805, 0x0111 }, { 7808, 0x3021 },
- /* 0xd700 */
- { 7812, 0x0011 }, { 7814, 0x1302 }, { 7818, 0x2b01 }, { 7823, 0x1130 },
- { 7827, 0x0290 }, { 7830, 0x03d3 }, { 7837, 0x122b }, { 7843, 0x3011 },
- { 7847, 0x1302 }, { 7851, 0x2b01 },
-};
-static const Summary16 ksc5601_uni2indx_pagef9[17] = {
- /* 0xf900 */
- { 7856, 0xffff }, { 7872, 0xffff }, { 7888, 0xffff }, { 7904, 0xffff },
- { 7920, 0xffff }, { 7936, 0xffff }, { 7952, 0xffff }, { 7968, 0xffff },
- { 7984, 0xffff }, { 8000, 0xffff }, { 8016, 0xffff }, { 8032, 0xffff },
- { 8048, 0xffff }, { 8064, 0xffff }, { 8080, 0xffff }, { 8096, 0xffff },
- /* 0xfa00 */
- { 8112, 0x0fff },
-};
-static const Summary16 ksc5601_uni2indx_pageff[15] = {
- /* 0xff00 */
- { 8124, 0xfffe }, { 8139, 0xffff }, { 8155, 0xffff }, { 8171, 0xffff },
- { 8187, 0xffff }, { 8203, 0x7fff }, { 8218, 0x0000 }, { 8218, 0x0000 },
- { 8218, 0x0000 }, { 8218, 0x0000 }, { 8218, 0x0000 }, { 8218, 0x0000 },
- { 8218, 0x0000 }, { 8218, 0x0000 }, { 8218, 0x006f },
-};
-
-static int
-ksc5601_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n)
-{
- if (n >= 2) {
- const Summary16 *summary = NULL;
- if (wc < 0x0460)
- summary = &ksc5601_uni2indx_page00[(wc>>4)];
- else if (wc >= 0x2000 && wc < 0x2670) /* General Punctuation (2000, 206F) */
- summary = &ksc5601_uni2indx_page20[(wc>>4)-0x200];
- else if (wc >= 0x3000 && wc < 0x33e0) /* CJK Symbols and Punctuation (3000, 303F) */
- summary = &ksc5601_uni2indx_page30[(wc>>4)-0x300];
- else if (wc >= 0x4e00 && wc < 0x9fa0) /* CJK Unified Ideographs (4E00, 9FFF) */
- summary = &ksc5601_uni2indx_page4e[(wc>>4)-0x4e0];
- else if (wc >= 0xac00 && wc < 0xd7a0) /* Hangul Syllables (AC00, D7AF) 11183 */
- summary = &ksc5601_uni2indx_pageac[(wc>>4)-0xac0];
- else if (wc >= 0xf900 && wc < 0xfa10) /* CJK Compatibility Ideographs (F900, FAFF) */
- summary = &ksc5601_uni2indx_pagef9[(wc>>4)-0xf90];
- else if (wc >= 0xff00 && wc < 0xfff0) /* Halfwidth and Fullwidth Forms (FF00, FFEF) */
- summary = &ksc5601_uni2indx_pageff[(wc>>4)-0xff0];
- if (summary) {
- unsigned short used = summary->used;
- unsigned int i = wc & 0x0f;
- if (used & ((unsigned short) 1 << i)) {
- unsigned short c;
- /* Keep in `used' only the bits 0..i-1. */
- used &= ((unsigned short) 1 << i) - 1;
- /* Add `summary->indx' and the number of bits set in `used'. */
- used = (used & 0x5555) + ((used & 0xaaaa) >> 1);
- used = (used & 0x3333) + ((used & 0xcccc) >> 2);
- used = (used & 0x0f0f) + ((used & 0xf0f0) >> 4);
- used = (used & 0x00ff) + (used >> 8);
- c = ksc5601_2charset[summary->indx + used];
- r[0] = (c >> 8); r[1] = (c & 0xff);
- return 2;
- }
- }
- return RET_ILSEQ;
- }
- return RET_TOOSMALL;
-}
+
+/*
+ * KSC5601.1987-0
+ */
+
+static const unsigned short ksc5601_2uni_page21[1115] = {
+ /* 0x21 */
+ 0x3000, 0x3001, 0x3002, 0x00b7, 0x2025, 0x2026, 0x00a8, 0x3003,
+ 0x00ad, 0x2015, 0x2225, 0xff3c, 0x223c, 0x2018, 0x2019, 0x201c,
+ 0x201d, 0x3014, 0x3015, 0x3008, 0x3009, 0x300a, 0x300b, 0x300c,
+ 0x300d, 0x300e, 0x300f, 0x3010, 0x3011, 0x00b1, 0x00d7, 0x00f7,
+ 0x2260, 0x2264, 0x2265, 0x221e, 0x2234, 0x00b0, 0x2032, 0x2033,
+ 0x2103, 0x212b, 0xffe0, 0xffe1, 0xffe5, 0x2642, 0x2640, 0x2220,
+ 0x22a5, 0x2312, 0x2202, 0x2207, 0x2261, 0x2252, 0x00a7, 0x203b,
+ 0x2606, 0x2605, 0x25cb, 0x25cf, 0x25ce, 0x25c7, 0x25c6, 0x25a1,
+ 0x25a0, 0x25b3, 0x25b2, 0x25bd, 0x25bc, 0x2192, 0x2190, 0x2191,
+ 0x2193, 0x2194, 0x3013, 0x226a, 0x226b, 0x221a, 0x223d, 0x221d,
+ 0x2235, 0x222b, 0x222c, 0x2208, 0x220b, 0x2286, 0x2287, 0x2282,
+ 0x2283, 0x222a, 0x2229, 0x2227, 0x2228, 0xffe2,
+ /* 0x22 */
+ 0x21d2, 0x21d4, 0x2200, 0x2203, 0x00b4, 0xff5e, 0x02c7, 0x02d8,
+ 0x02dd, 0x02da, 0x02d9, 0x00b8, 0x02db, 0x00a1, 0x00bf, 0x02d0,
+ 0x222e, 0x2211, 0x220f, 0x00a4, 0x2109, 0x2030, 0x25c1, 0x25c0,
+ 0x25b7, 0x25b6, 0x2664, 0x2660, 0x2661, 0x2665, 0x2667, 0x2663,
+ 0x2299, 0x25c8, 0x25a3, 0x25d0, 0x25d1, 0x2592, 0x25a4, 0x25a5,
+ 0x25a8, 0x25a7, 0x25a6, 0x25a9, 0x2668, 0x260f, 0x260e, 0x261c,
+ 0x261e, 0x00b6, 0x2020, 0x2021, 0x2195, 0x2197, 0x2199, 0x2196,
+ 0x2198, 0x266d, 0x2669, 0x266a, 0x266c, 0x327f, 0x321c, 0x2116,
+ 0x33c7, 0x2122, 0x33c2, 0x33d8, 0x2121, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ /* 0x23 */
+ 0xff01, 0xff02, 0xff03, 0xff04, 0xff05, 0xff06, 0xff07, 0xff08,
+ 0xff09, 0xff0a, 0xff0b, 0xff0c, 0xff0d, 0xff0e, 0xff0f, 0xff10,
+ 0xff11, 0xff12, 0xff13, 0xff14, 0xff15, 0xff16, 0xff17, 0xff18,
+ 0xff19, 0xff1a, 0xff1b, 0xff1c, 0xff1d, 0xff1e, 0xff1f, 0xff20,
+ 0xff21, 0xff22, 0xff23, 0xff24, 0xff25, 0xff26, 0xff27, 0xff28,
+ 0xff29, 0xff2a, 0xff2b, 0xff2c, 0xff2d, 0xff2e, 0xff2f, 0xff30,
+ 0xff31, 0xff32, 0xff33, 0xff34, 0xff35, 0xff36, 0xff37, 0xff38,
+ 0xff39, 0xff3a, 0xff3b, 0xffe6, 0xff3d, 0xff3e, 0xff3f, 0xff40,
+ 0xff41, 0xff42, 0xff43, 0xff44, 0xff45, 0xff46, 0xff47, 0xff48,
+ 0xff49, 0xff4a, 0xff4b, 0xff4c, 0xff4d, 0xff4e, 0xff4f, 0xff50,
+ 0xff51, 0xff52, 0xff53, 0xff54, 0xff55, 0xff56, 0xff57, 0xff58,
+ 0xff59, 0xff5a, 0xff5b, 0xff5c, 0xff5d, 0xffe3,
+ /* 0x24 */
+ 0x3131, 0x3132, 0x3133, 0x3134, 0x3135, 0x3136, 0x3137, 0x3138,
+ 0x3139, 0x313a, 0x313b, 0x313c, 0x313d, 0x313e, 0x313f, 0x3140,
+ 0x3141, 0x3142, 0x3143, 0x3144, 0x3145, 0x3146, 0x3147, 0x3148,
+ 0x3149, 0x314a, 0x314b, 0x314c, 0x314d, 0x314e, 0x314f, 0x3150,
+ 0x3151, 0x3152, 0x3153, 0x3154, 0x3155, 0x3156, 0x3157, 0x3158,
+ 0x3159, 0x315a, 0x315b, 0x315c, 0x315d, 0x315e, 0x315f, 0x3160,
+ 0x3161, 0x3162, 0x3163, 0x3164, 0x3165, 0x3166, 0x3167, 0x3168,
+ 0x3169, 0x316a, 0x316b, 0x316c, 0x316d, 0x316e, 0x316f, 0x3170,
+ 0x3171, 0x3172, 0x3173, 0x3174, 0x3175, 0x3176, 0x3177, 0x3178,
+ 0x3179, 0x317a, 0x317b, 0x317c, 0x317d, 0x317e, 0x317f, 0x3180,
+ 0x3181, 0x3182, 0x3183, 0x3184, 0x3185, 0x3186, 0x3187, 0x3188,
+ 0x3189, 0x318a, 0x318b, 0x318c, 0x318d, 0x318e,
+ /* 0x25 */
+ 0x2170, 0x2171, 0x2172, 0x2173, 0x2174, 0x2175, 0x2176, 0x2177,
+ 0x2178, 0x2179, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x2160,
+ 0x2161, 0x2162, 0x2163, 0x2164, 0x2165, 0x2166, 0x2167, 0x2168,
+ 0x2169, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0x0391, 0x0392, 0x0393, 0x0394, 0x0395, 0x0396, 0x0397, 0x0398,
+ 0x0399, 0x039a, 0x039b, 0x039c, 0x039d, 0x039e, 0x039f, 0x03a0,
+ 0x03a1, 0x03a3, 0x03a4, 0x03a5, 0x03a6, 0x03a7, 0x03a8, 0x03a9,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0x03b1, 0x03b2, 0x03b3, 0x03b4, 0x03b5, 0x03b6, 0x03b7, 0x03b8,
+ 0x03b9, 0x03ba, 0x03bb, 0x03bc, 0x03bd, 0x03be, 0x03bf, 0x03c0,
+ 0x03c1, 0x03c3, 0x03c4, 0x03c5, 0x03c6, 0x03c7, 0x03c8, 0x03c9,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ /* 0x26 */
+ 0x2500, 0x2502, 0x250c, 0x2510, 0x2518, 0x2514, 0x251c, 0x252c,
+ 0x2524, 0x2534, 0x253c, 0x2501, 0x2503, 0x250f, 0x2513, 0x251b,
+ 0x2517, 0x2523, 0x2533, 0x252b, 0x253b, 0x254b, 0x2520, 0x252f,
+ 0x2528, 0x2537, 0x253f, 0x251d, 0x2530, 0x2525, 0x2538, 0x2542,
+ 0x2512, 0x2511, 0x251a, 0x2519, 0x2516, 0x2515, 0x250e, 0x250d,
+ 0x251e, 0x251f, 0x2521, 0x2522, 0x2526, 0x2527, 0x2529, 0x252a,
+ 0x252d, 0x252e, 0x2531, 0x2532, 0x2535, 0x2536, 0x2539, 0x253a,
+ 0x253d, 0x253e, 0x2540, 0x2541, 0x2543, 0x2544, 0x2545, 0x2546,
+ 0x2547, 0x2548, 0x2549, 0x254a, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ /* 0x27 */
+ 0x3395, 0x3396, 0x3397, 0x2113, 0x3398, 0x33c4, 0x33a3, 0x33a4,
+ 0x33a5, 0x33a6, 0x3399, 0x339a, 0x339b, 0x339c, 0x339d, 0x339e,
+ 0x339f, 0x33a0, 0x33a1, 0x33a2, 0x33ca, 0x338d, 0x338e, 0x338f,
+ 0x33cf, 0x3388, 0x3389, 0x33c8, 0x33a7, 0x33a8, 0x33b0, 0x33b1,
+ 0x33b2, 0x33b3, 0x33b4, 0x33b5, 0x33b6, 0x33b7, 0x33b8, 0x33b9,
+ 0x3380, 0x3381, 0x3382, 0x3383, 0x3384, 0x33ba, 0x33bb, 0x33bc,
+ 0x33bd, 0x33be, 0x33bf, 0x3390, 0x3391, 0x3392, 0x3393, 0x3394,
+ 0x2126, 0x33c0, 0x33c1, 0x338a, 0x338b, 0x338c, 0x33d6, 0x33c5,
+ 0x33ad, 0x33ae, 0x33af, 0x33db, 0x33a9, 0x33aa, 0x33ab, 0x33ac,
+ 0x33dd, 0x33d0, 0x33d3, 0x33c3, 0x33c9, 0x33dc, 0x33c6, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ /* 0x28 */
+ 0x00c6, 0x00d0, 0x00aa, 0x0126, 0xfffd, 0x0132, 0xfffd, 0x013f,
+ 0x0141, 0x00d8, 0x0152, 0x00ba, 0x00de, 0x0166, 0x014a, 0xfffd,
+ 0x3260, 0x3261, 0x3262, 0x3263, 0x3264, 0x3265, 0x3266, 0x3267,
+ 0x3268, 0x3269, 0x326a, 0x326b, 0x326c, 0x326d, 0x326e, 0x326f,
+ 0x3270, 0x3271, 0x3272, 0x3273, 0x3274, 0x3275, 0x3276, 0x3277,
+ 0x3278, 0x3279, 0x327a, 0x327b, 0x24d0, 0x24d1, 0x24d2, 0x24d3,
+ 0x24d4, 0x24d5, 0x24d6, 0x24d7, 0x24d8, 0x24d9, 0x24da, 0x24db,
+ 0x24dc, 0x24dd, 0x24de, 0x24df, 0x24e0, 0x24e1, 0x24e2, 0x24e3,
+ 0x24e4, 0x24e5, 0x24e6, 0x24e7, 0x24e8, 0x24e9, 0x2460, 0x2461,
+ 0x2462, 0x2463, 0x2464, 0x2465, 0x2466, 0x2467, 0x2468, 0x2469,
+ 0x246a, 0x246b, 0x246c, 0x246d, 0x246e, 0x00bd, 0x2153, 0x2154,
+ 0x00bc, 0x00be, 0x215b, 0x215c, 0x215d, 0x215e,
+ /* 0x29 */
+ 0x00e6, 0x0111, 0x00f0, 0x0127, 0x0131, 0x0133, 0x0138, 0x0140,
+ 0x0142, 0x00f8, 0x0153, 0x00df, 0x00fe, 0x0167, 0x014b, 0x0149,
+ 0x3200, 0x3201, 0x3202, 0x3203, 0x3204, 0x3205, 0x3206, 0x3207,
+ 0x3208, 0x3209, 0x320a, 0x320b, 0x320c, 0x320d, 0x320e, 0x320f,
+ 0x3210, 0x3211, 0x3212, 0x3213, 0x3214, 0x3215, 0x3216, 0x3217,
+ 0x3218, 0x3219, 0x321a, 0x321b, 0x249c, 0x249d, 0x249e, 0x249f,
+ 0x24a0, 0x24a1, 0x24a2, 0x24a3, 0x24a4, 0x24a5, 0x24a6, 0x24a7,
+ 0x24a8, 0x24a9, 0x24aa, 0x24ab, 0x24ac, 0x24ad, 0x24ae, 0x24af,
+ 0x24b0, 0x24b1, 0x24b2, 0x24b3, 0x24b4, 0x24b5, 0x2474, 0x2475,
+ 0x2476, 0x2477, 0x2478, 0x2479, 0x247a, 0x247b, 0x247c, 0x247d,
+ 0x247e, 0x247f, 0x2480, 0x2481, 0x2482, 0x00b9, 0x00b2, 0x00b3,
+ 0x2074, 0x207f, 0x2081, 0x2082, 0x2083, 0x2084,
+ /* 0x2a */
+ 0x3041, 0x3042, 0x3043, 0x3044, 0x3045, 0x3046, 0x3047, 0x3048,
+ 0x3049, 0x304a, 0x304b, 0x304c, 0x304d, 0x304e, 0x304f, 0x3050,
+ 0x3051, 0x3052, 0x3053, 0x3054, 0x3055, 0x3056, 0x3057, 0x3058,
+ 0x3059, 0x305a, 0x305b, 0x305c, 0x305d, 0x305e, 0x305f, 0x3060,
+ 0x3061, 0x3062, 0x3063, 0x3064, 0x3065, 0x3066, 0x3067, 0x3068,
+ 0x3069, 0x306a, 0x306b, 0x306c, 0x306d, 0x306e, 0x306f, 0x3070,
+ 0x3071, 0x3072, 0x3073, 0x3074, 0x3075, 0x3076, 0x3077, 0x3078,
+ 0x3079, 0x307a, 0x307b, 0x307c, 0x307d, 0x307e, 0x307f, 0x3080,
+ 0x3081, 0x3082, 0x3083, 0x3084, 0x3085, 0x3086, 0x3087, 0x3088,
+ 0x3089, 0x308a, 0x308b, 0x308c, 0x308d, 0x308e, 0x308f, 0x3090,
+ 0x3091, 0x3092, 0x3093, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ /* 0x2b */
+ 0x30a1, 0x30a2, 0x30a3, 0x30a4, 0x30a5, 0x30a6, 0x30a7, 0x30a8,
+ 0x30a9, 0x30aa, 0x30ab, 0x30ac, 0x30ad, 0x30ae, 0x30af, 0x30b0,
+ 0x30b1, 0x30b2, 0x30b3, 0x30b4, 0x30b5, 0x30b6, 0x30b7, 0x30b8,
+ 0x30b9, 0x30ba, 0x30bb, 0x30bc, 0x30bd, 0x30be, 0x30bf, 0x30c0,
+ 0x30c1, 0x30c2, 0x30c3, 0x30c4, 0x30c5, 0x30c6, 0x30c7, 0x30c8,
+ 0x30c9, 0x30ca, 0x30cb, 0x30cc, 0x30cd, 0x30ce, 0x30cf, 0x30d0,
+ 0x30d1, 0x30d2, 0x30d3, 0x30d4, 0x30d5, 0x30d6, 0x30d7, 0x30d8,
+ 0x30d9, 0x30da, 0x30db, 0x30dc, 0x30dd, 0x30de, 0x30df, 0x30e0,
+ 0x30e1, 0x30e2, 0x30e3, 0x30e4, 0x30e5, 0x30e6, 0x30e7, 0x30e8,
+ 0x30e9, 0x30ea, 0x30eb, 0x30ec, 0x30ed, 0x30ee, 0x30ef, 0x30f0,
+ 0x30f1, 0x30f2, 0x30f3, 0x30f4, 0x30f5, 0x30f6, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ /* 0x2c */
+ 0x0410, 0x0411, 0x0412, 0x0413, 0x0414, 0x0415, 0x0401, 0x0416,
+ 0x0417, 0x0418, 0x0419, 0x041a, 0x041b, 0x041c, 0x041d, 0x041e,
+ 0x041f, 0x0420, 0x0421, 0x0422, 0x0423, 0x0424, 0x0425, 0x0426,
+ 0x0427, 0x0428, 0x0429, 0x042a, 0x042b, 0x042c, 0x042d, 0x042e,
+ 0x042f, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+ 0x0430, 0x0431, 0x0432, 0x0433, 0x0434, 0x0435, 0x0451, 0x0436,
+ 0x0437, 0x0438, 0x0439, 0x043a, 0x043b, 0x043c, 0x043d, 0x043e,
+ 0x043f, 0x0440, 0x0441, 0x0442, 0x0443, 0x0444, 0x0445, 0x0446,
+ 0x0447, 0x0448, 0x0449, 0x044a, 0x044b, 0x044c, 0x044d, 0x044e,
+ 0x044f,
+};
+static const unsigned short ksc5601_2uni_page30[2350] = {
+ /* 0x30 */
+ 0xac00, 0xac01, 0xac04, 0xac07, 0xac08, 0xac09, 0xac0a, 0xac10,
+ 0xac11, 0xac12, 0xac13, 0xac14, 0xac15, 0xac16, 0xac17, 0xac19,
+ 0xac1a, 0xac1b, 0xac1c, 0xac1d, 0xac20, 0xac24, 0xac2c, 0xac2d,
+ 0xac2f, 0xac30, 0xac31, 0xac38, 0xac39, 0xac3c, 0xac40, 0xac4b,
+ 0xac4d, 0xac54, 0xac58, 0xac5c, 0xac70, 0xac71, 0xac74, 0xac77,
+ 0xac78, 0xac7a, 0xac80, 0xac81, 0xac83, 0xac84, 0xac85, 0xac86,
+ 0xac89, 0xac8a, 0xac8b, 0xac8c, 0xac90, 0xac94, 0xac9c, 0xac9d,
+ 0xac9f, 0xaca0, 0xaca1, 0xaca8, 0xaca9, 0xacaa, 0xacac, 0xacaf,
+ 0xacb0, 0xacb8, 0xacb9, 0xacbb, 0xacbc, 0xacbd, 0xacc1, 0xacc4,
+ 0xacc8, 0xaccc, 0xacd5, 0xacd7, 0xace0, 0xace1, 0xace4, 0xace7,
+ 0xace8, 0xacea, 0xacec, 0xacef, 0xacf0, 0xacf1, 0xacf3, 0xacf5,
+ 0xacf6, 0xacfc, 0xacfd, 0xad00, 0xad04, 0xad06,
+ /* 0x31 */
+ 0xad0c, 0xad0d, 0xad0f, 0xad11, 0xad18, 0xad1c, 0xad20, 0xad29,
+ 0xad2c, 0xad2d, 0xad34, 0xad35, 0xad38, 0xad3c, 0xad44, 0xad45,
+ 0xad47, 0xad49, 0xad50, 0xad54, 0xad58, 0xad61, 0xad63, 0xad6c,
+ 0xad6d, 0xad70, 0xad73, 0xad74, 0xad75, 0xad76, 0xad7b, 0xad7c,
+ 0xad7d, 0xad7f, 0xad81, 0xad82, 0xad88, 0xad89, 0xad8c, 0xad90,
+ 0xad9c, 0xad9d, 0xada4, 0xadb7, 0xadc0, 0xadc1, 0xadc4, 0xadc8,
+ 0xadd0, 0xadd1, 0xadd3, 0xaddc, 0xade0, 0xade4, 0xadf8, 0xadf9,
+ 0xadfc, 0xadff, 0xae00, 0xae01, 0xae08, 0xae09, 0xae0b, 0xae0d,
+ 0xae14, 0xae30, 0xae31, 0xae34, 0xae37, 0xae38, 0xae3a, 0xae40,
+ 0xae41, 0xae43, 0xae45, 0xae46, 0xae4a, 0xae4c, 0xae4d, 0xae4e,
+ 0xae50, 0xae54, 0xae56, 0xae5c, 0xae5d, 0xae5f, 0xae60, 0xae61,
+ 0xae65, 0xae68, 0xae69, 0xae6c, 0xae70, 0xae78,
+ /* 0x32 */
+ 0xae79, 0xae7b, 0xae7c, 0xae7d, 0xae84, 0xae85, 0xae8c, 0xaebc,
+ 0xaebd, 0xaebe, 0xaec0, 0xaec4, 0xaecc, 0xaecd, 0xaecf, 0xaed0,
+ 0xaed1, 0xaed8, 0xaed9, 0xaedc, 0xaee8, 0xaeeb, 0xaeed, 0xaef4,
+ 0xaef8, 0xaefc, 0xaf07, 0xaf08, 0xaf0d, 0xaf10, 0xaf2c, 0xaf2d,
+ 0xaf30, 0xaf32, 0xaf34, 0xaf3c, 0xaf3d, 0xaf3f, 0xaf41, 0xaf42,
+ 0xaf43, 0xaf48, 0xaf49, 0xaf50, 0xaf5c, 0xaf5d, 0xaf64, 0xaf65,
+ 0xaf79, 0xaf80, 0xaf84, 0xaf88, 0xaf90, 0xaf91, 0xaf95, 0xaf9c,
+ 0xafb8, 0xafb9, 0xafbc, 0xafc0, 0xafc7, 0xafc8, 0xafc9, 0xafcb,
+ 0xafcd, 0xafce, 0xafd4, 0xafdc, 0xafe8, 0xafe9, 0xaff0, 0xaff1,
+ 0xaff4, 0xaff8, 0xb000, 0xb001, 0xb004, 0xb00c, 0xb010, 0xb014,
+ 0xb01c, 0xb01d, 0xb028, 0xb044, 0xb045, 0xb048, 0xb04a, 0xb04c,
+ 0xb04e, 0xb053, 0xb054, 0xb055, 0xb057, 0xb059,
+ /* 0x33 */
+ 0xb05d, 0xb07c, 0xb07d, 0xb080, 0xb084, 0xb08c, 0xb08d, 0xb08f,
+ 0xb091, 0xb098, 0xb099, 0xb09a, 0xb09c, 0xb09f, 0xb0a0, 0xb0a1,
+ 0xb0a2, 0xb0a8, 0xb0a9, 0xb0ab, 0xb0ac, 0xb0ad, 0xb0ae, 0xb0af,
+ 0xb0b1, 0xb0b3, 0xb0b4, 0xb0b5, 0xb0b8, 0xb0bc, 0xb0c4, 0xb0c5,
+ 0xb0c7, 0xb0c8, 0xb0c9, 0xb0d0, 0xb0d1, 0xb0d4, 0xb0d8, 0xb0e0,
+ 0xb0e5, 0xb108, 0xb109, 0xb10b, 0xb10c, 0xb110, 0xb112, 0xb113,
+ 0xb118, 0xb119, 0xb11b, 0xb11c, 0xb11d, 0xb123, 0xb124, 0xb125,
+ 0xb128, 0xb12c, 0xb134, 0xb135, 0xb137, 0xb138, 0xb139, 0xb140,
+ 0xb141, 0xb144, 0xb148, 0xb150, 0xb151, 0xb154, 0xb155, 0xb158,
+ 0xb15c, 0xb160, 0xb178, 0xb179, 0xb17c, 0xb180, 0xb182, 0xb188,
+ 0xb189, 0xb18b, 0xb18d, 0xb192, 0xb193, 0xb194, 0xb198, 0xb19c,
+ 0xb1a8, 0xb1cc, 0xb1d0, 0xb1d4, 0xb1dc, 0xb1dd,
+ /* 0x34 */
+ 0xb1df, 0xb1e8, 0xb1e9, 0xb1ec, 0xb1f0, 0xb1f9, 0xb1fb, 0xb1fd,
+ 0xb204, 0xb205, 0xb208, 0xb20b, 0xb20c, 0xb214, 0xb215, 0xb217,
+ 0xb219, 0xb220, 0xb234, 0xb23c, 0xb258, 0xb25c, 0xb260, 0xb268,
+ 0xb269, 0xb274, 0xb275, 0xb27c, 0xb284, 0xb285, 0xb289, 0xb290,
+ 0xb291, 0xb294, 0xb298, 0xb299, 0xb29a, 0xb2a0, 0xb2a1, 0xb2a3,
+ 0xb2a5, 0xb2a6, 0xb2aa, 0xb2ac, 0xb2b0, 0xb2b4, 0xb2c8, 0xb2c9,
+ 0xb2cc, 0xb2d0, 0xb2d2, 0xb2d8, 0xb2d9, 0xb2db, 0xb2dd, 0xb2e2,
+ 0xb2e4, 0xb2e5, 0xb2e6, 0xb2e8, 0xb2eb, 0xb2ec, 0xb2ed, 0xb2ee,
+ 0xb2ef, 0xb2f3, 0xb2f4, 0xb2f5, 0xb2f7, 0xb2f8, 0xb2f9, 0xb2fa,
+ 0xb2fb, 0xb2ff, 0xb300, 0xb301, 0xb304, 0xb308, 0xb310, 0xb311,
+ 0xb313, 0xb314, 0xb315, 0xb31c, 0xb354, 0xb355, 0xb356, 0xb358,
+ 0xb35b, 0xb35c, 0xb35e, 0xb35f, 0xb364, 0xb365,
+ /* 0x35 */
+ 0xb367, 0xb369, 0xb36b, 0xb36e, 0xb370, 0xb371, 0xb374, 0xb378,
+ 0xb380, 0xb381, 0xb383, 0xb384, 0xb385, 0xb38c, 0xb390, 0xb394,
+ 0xb3a0, 0xb3a1, 0xb3a8, 0xb3ac, 0xb3c4, 0xb3c5, 0xb3c8, 0xb3cb,
+ 0xb3cc, 0xb3ce, 0xb3d0, 0xb3d4, 0xb3d5, 0xb3d7, 0xb3d9, 0xb3db,
+ 0xb3dd, 0xb3e0, 0xb3e4, 0xb3e8, 0xb3fc, 0xb410, 0xb418, 0xb41c,
+ 0xb420, 0xb428, 0xb429, 0xb42b, 0xb434, 0xb450, 0xb451, 0xb454,
+ 0xb458, 0xb460, 0xb461, 0xb463, 0xb465, 0xb46c, 0xb480, 0xb488,
+ 0xb49d, 0xb4a4, 0xb4a8, 0xb4ac, 0xb4b5, 0xb4b7, 0xb4b9, 0xb4c0,
+ 0xb4c4, 0xb4c8, 0xb4d0, 0xb4d5, 0xb4dc, 0xb4dd, 0xb4e0, 0xb4e3,
+ 0xb4e4, 0xb4e6, 0xb4ec, 0xb4ed, 0xb4ef, 0xb4f1, 0xb4f8, 0xb514,
+ 0xb515, 0xb518, 0xb51b, 0xb51c, 0xb524, 0xb525, 0xb527, 0xb528,
+ 0xb529, 0xb52a, 0xb530, 0xb531, 0xb534, 0xb538,
+ /* 0x36 */
+ 0xb540, 0xb541, 0xb543, 0xb544, 0xb545, 0xb54b, 0xb54c, 0xb54d,
+ 0xb550, 0xb554, 0xb55c, 0xb55d, 0xb55f, 0xb560, 0xb561, 0xb5a0,
+ 0xb5a1, 0xb5a4, 0xb5a8, 0xb5aa, 0xb5ab, 0xb5b0, 0xb5b1, 0xb5b3,
+ 0xb5b4, 0xb5b5, 0xb5bb, 0xb5bc, 0xb5bd, 0xb5c0, 0xb5c4, 0xb5cc,
+ 0xb5cd, 0xb5cf, 0xb5d0, 0xb5d1, 0xb5d8, 0xb5ec, 0xb610, 0xb611,
+ 0xb614, 0xb618, 0xb625, 0xb62c, 0xb634, 0xb648, 0xb664, 0xb668,
+ 0xb69c, 0xb69d, 0xb6a0, 0xb6a4, 0xb6ab, 0xb6ac, 0xb6b1, 0xb6d4,
+ 0xb6f0, 0xb6f4, 0xb6f8, 0xb700, 0xb701, 0xb705, 0xb728, 0xb729,
+ 0xb72c, 0xb72f, 0xb730, 0xb738, 0xb739, 0xb73b, 0xb744, 0xb748,
+ 0xb74c, 0xb754, 0xb755, 0xb760, 0xb764, 0xb768, 0xb770, 0xb771,
+ 0xb773, 0xb775, 0xb77c, 0xb77d, 0xb780, 0xb784, 0xb78c, 0xb78d,
+ 0xb78f, 0xb790, 0xb791, 0xb792, 0xb796, 0xb797,
+ /* 0x37 */
+ 0xb798, 0xb799, 0xb79c, 0xb7a0, 0xb7a8, 0xb7a9, 0xb7ab, 0xb7ac,
+ 0xb7ad, 0xb7b4, 0xb7b5, 0xb7b8, 0xb7c7, 0xb7c9, 0xb7ec, 0xb7ed,
+ 0xb7f0, 0xb7f4, 0xb7fc, 0xb7fd, 0xb7ff, 0xb800, 0xb801, 0xb807,
+ 0xb808, 0xb809, 0xb80c, 0xb810, 0xb818, 0xb819, 0xb81b, 0xb81d,
+ 0xb824, 0xb825, 0xb828, 0xb82c, 0xb834, 0xb835, 0xb837, 0xb838,
+ 0xb839, 0xb840, 0xb844, 0xb851, 0xb853, 0xb85c, 0xb85d, 0xb860,
+ 0xb864, 0xb86c, 0xb86d, 0xb86f, 0xb871, 0xb878, 0xb87c, 0xb88d,
+ 0xb8a8, 0xb8b0, 0xb8b4, 0xb8b8, 0xb8c0, 0xb8c1, 0xb8c3, 0xb8c5,
+ 0xb8cc, 0xb8d0, 0xb8d4, 0xb8dd, 0xb8df, 0xb8e1, 0xb8e8, 0xb8e9,
+ 0xb8ec, 0xb8f0, 0xb8f8, 0xb8f9, 0xb8fb, 0xb8fd, 0xb904, 0xb918,
+ 0xb920, 0xb93c, 0xb93d, 0xb940, 0xb944, 0xb94c, 0xb94f, 0xb951,
+ 0xb958, 0xb959, 0xb95c, 0xb960, 0xb968, 0xb969,
+ /* 0x38 */
+ 0xb96b, 0xb96d, 0xb974, 0xb975, 0xb978, 0xb97c, 0xb984, 0xb985,
+ 0xb987, 0xb989, 0xb98a, 0xb98d, 0xb98e, 0xb9ac, 0xb9ad, 0xb9b0,
+ 0xb9b4, 0xb9bc, 0xb9bd, 0xb9bf, 0xb9c1, 0xb9c8, 0xb9c9, 0xb9cc,
+ 0xb9ce, 0xb9cf, 0xb9d0, 0xb9d1, 0xb9d2, 0xb9d8, 0xb9d9, 0xb9db,
+ 0xb9dd, 0xb9de, 0xb9e1, 0xb9e3, 0xb9e4, 0xb9e5, 0xb9e8, 0xb9ec,
+ 0xb9f4, 0xb9f5, 0xb9f7, 0xb9f8, 0xb9f9, 0xb9fa, 0xba00, 0xba01,
+ 0xba08, 0xba15, 0xba38, 0xba39, 0xba3c, 0xba40, 0xba42, 0xba48,
+ 0xba49, 0xba4b, 0xba4d, 0xba4e, 0xba53, 0xba54, 0xba55, 0xba58,
+ 0xba5c, 0xba64, 0xba65, 0xba67, 0xba68, 0xba69, 0xba70, 0xba71,
+ 0xba74, 0xba78, 0xba83, 0xba84, 0xba85, 0xba87, 0xba8c, 0xbaa8,
+ 0xbaa9, 0xbaab, 0xbaac, 0xbab0, 0xbab2, 0xbab8, 0xbab9, 0xbabb,
+ 0xbabd, 0xbac4, 0xbac8, 0xbad8, 0xbad9, 0xbafc,
+ /* 0x39 */
+ 0xbb00, 0xbb04, 0xbb0d, 0xbb0f, 0xbb11, 0xbb18, 0xbb1c, 0xbb20,
+ 0xbb29, 0xbb2b, 0xbb34, 0xbb35, 0xbb36, 0xbb38, 0xbb3b, 0xbb3c,
+ 0xbb3d, 0xbb3e, 0xbb44, 0xbb45, 0xbb47, 0xbb49, 0xbb4d, 0xbb4f,
+ 0xbb50, 0xbb54, 0xbb58, 0xbb61, 0xbb63, 0xbb6c, 0xbb88, 0xbb8c,
+ 0xbb90, 0xbba4, 0xbba8, 0xbbac, 0xbbb4, 0xbbb7, 0xbbc0, 0xbbc4,
+ 0xbbc8, 0xbbd0, 0xbbd3, 0xbbf8, 0xbbf9, 0xbbfc, 0xbbff, 0xbc00,
+ 0xbc02, 0xbc08, 0xbc09, 0xbc0b, 0xbc0c, 0xbc0d, 0xbc0f, 0xbc11,
+ 0xbc14, 0xbc15, 0xbc16, 0xbc17, 0xbc18, 0xbc1b, 0xbc1c, 0xbc1d,
+ 0xbc1e, 0xbc1f, 0xbc24, 0xbc25, 0xbc27, 0xbc29, 0xbc2d, 0xbc30,
+ 0xbc31, 0xbc34, 0xbc38, 0xbc40, 0xbc41, 0xbc43, 0xbc44, 0xbc45,
+ 0xbc49, 0xbc4c, 0xbc4d, 0xbc50, 0xbc5d, 0xbc84, 0xbc85, 0xbc88,
+ 0xbc8b, 0xbc8c, 0xbc8e, 0xbc94, 0xbc95, 0xbc97,
+ /* 0x3a */
+ 0xbc99, 0xbc9a, 0xbca0, 0xbca1, 0xbca4, 0xbca7, 0xbca8, 0xbcb0,
+ 0xbcb1, 0xbcb3, 0xbcb4, 0xbcb5, 0xbcbc, 0xbcbd, 0xbcc0, 0xbcc4,
+ 0xbccd, 0xbccf, 0xbcd0, 0xbcd1, 0xbcd5, 0xbcd8, 0xbcdc, 0xbcf4,
+ 0xbcf5, 0xbcf6, 0xbcf8, 0xbcfc, 0xbd04, 0xbd05, 0xbd07, 0xbd09,
+ 0xbd10, 0xbd14, 0xbd24, 0xbd2c, 0xbd40, 0xbd48, 0xbd49, 0xbd4c,
+ 0xbd50, 0xbd58, 0xbd59, 0xbd64, 0xbd68, 0xbd80, 0xbd81, 0xbd84,
+ 0xbd87, 0xbd88, 0xbd89, 0xbd8a, 0xbd90, 0xbd91, 0xbd93, 0xbd95,
+ 0xbd99, 0xbd9a, 0xbd9c, 0xbda4, 0xbdb0, 0xbdb8, 0xbdd4, 0xbdd5,
+ 0xbdd8, 0xbddc, 0xbde9, 0xbdf0, 0xbdf4, 0xbdf8, 0xbe00, 0xbe03,
+ 0xbe05, 0xbe0c, 0xbe0d, 0xbe10, 0xbe14, 0xbe1c, 0xbe1d, 0xbe1f,
+ 0xbe44, 0xbe45, 0xbe48, 0xbe4c, 0xbe4e, 0xbe54, 0xbe55, 0xbe57,
+ 0xbe59, 0xbe5a, 0xbe5b, 0xbe60, 0xbe61, 0xbe64,
+ /* 0x3b */
+ 0xbe68, 0xbe6a, 0xbe70, 0xbe71, 0xbe73, 0xbe74, 0xbe75, 0xbe7b,
+ 0xbe7c, 0xbe7d, 0xbe80, 0xbe84, 0xbe8c, 0xbe8d, 0xbe8f, 0xbe90,
+ 0xbe91, 0xbe98, 0xbe99, 0xbea8, 0xbed0, 0xbed1, 0xbed4, 0xbed7,
+ 0xbed8, 0xbee0, 0xbee3, 0xbee4, 0xbee5, 0xbeec, 0xbf01, 0xbf08,
+ 0xbf09, 0xbf18, 0xbf19, 0xbf1b, 0xbf1c, 0xbf1d, 0xbf40, 0xbf41,
+ 0xbf44, 0xbf48, 0xbf50, 0xbf51, 0xbf55, 0xbf94, 0xbfb0, 0xbfc5,
+ 0xbfcc, 0xbfcd, 0xbfd0, 0xbfd4, 0xbfdc, 0xbfdf, 0xbfe1, 0xc03c,
+ 0xc051, 0xc058, 0xc05c, 0xc060, 0xc068, 0xc069, 0xc090, 0xc091,
+ 0xc094, 0xc098, 0xc0a0, 0xc0a1, 0xc0a3, 0xc0a5, 0xc0ac, 0xc0ad,
+ 0xc0af, 0xc0b0, 0xc0b3, 0xc0b4, 0xc0b5, 0xc0b6, 0xc0bc, 0xc0bd,
+ 0xc0bf, 0xc0c0, 0xc0c1, 0xc0c5, 0xc0c8, 0xc0c9, 0xc0cc, 0xc0d0,
+ 0xc0d8, 0xc0d9, 0xc0db, 0xc0dc, 0xc0dd, 0xc0e4,
+ /* 0x3c */
+ 0xc0e5, 0xc0e8, 0xc0ec, 0xc0f4, 0xc0f5, 0xc0f7, 0xc0f9, 0xc100,
+ 0xc104, 0xc108, 0xc110, 0xc115, 0xc11c, 0xc11d, 0xc11e, 0xc11f,
+ 0xc120, 0xc123, 0xc124, 0xc126, 0xc127, 0xc12c, 0xc12d, 0xc12f,
+ 0xc130, 0xc131, 0xc136, 0xc138, 0xc139, 0xc13c, 0xc140, 0xc148,
+ 0xc149, 0xc14b, 0xc14c, 0xc14d, 0xc154, 0xc155, 0xc158, 0xc15c,
+ 0xc164, 0xc165, 0xc167, 0xc168, 0xc169, 0xc170, 0xc174, 0xc178,
+ 0xc185, 0xc18c, 0xc18d, 0xc18e, 0xc190, 0xc194, 0xc196, 0xc19c,
+ 0xc19d, 0xc19f, 0xc1a1, 0xc1a5, 0xc1a8, 0xc1a9, 0xc1ac, 0xc1b0,
+ 0xc1bd, 0xc1c4, 0xc1c8, 0xc1cc, 0xc1d4, 0xc1d7, 0xc1d8, 0xc1e0,
+ 0xc1e4, 0xc1e8, 0xc1f0, 0xc1f1, 0xc1f3, 0xc1fc, 0xc1fd, 0xc200,
+ 0xc204, 0xc20c, 0xc20d, 0xc20f, 0xc211, 0xc218, 0xc219, 0xc21c,
+ 0xc21f, 0xc220, 0xc228, 0xc229, 0xc22b, 0xc22d,
+ /* 0x3d */
+ 0xc22f, 0xc231, 0xc232, 0xc234, 0xc248, 0xc250, 0xc251, 0xc254,
+ 0xc258, 0xc260, 0xc265, 0xc26c, 0xc26d, 0xc270, 0xc274, 0xc27c,
+ 0xc27d, 0xc27f, 0xc281, 0xc288, 0xc289, 0xc290, 0xc298, 0xc29b,
+ 0xc29d, 0xc2a4, 0xc2a5, 0xc2a8, 0xc2ac, 0xc2ad, 0xc2b4, 0xc2b5,
+ 0xc2b7, 0xc2b9, 0xc2dc, 0xc2dd, 0xc2e0, 0xc2e3, 0xc2e4, 0xc2eb,
+ 0xc2ec, 0xc2ed, 0xc2ef, 0xc2f1, 0xc2f6, 0xc2f8, 0xc2f9, 0xc2fb,
+ 0xc2fc, 0xc300, 0xc308, 0xc309, 0xc30c, 0xc30d, 0xc313, 0xc314,
+ 0xc315, 0xc318, 0xc31c, 0xc324, 0xc325, 0xc328, 0xc329, 0xc345,
+ 0xc368, 0xc369, 0xc36c, 0xc370, 0xc372, 0xc378, 0xc379, 0xc37c,
+ 0xc37d, 0xc384, 0xc388, 0xc38c, 0xc3c0, 0xc3d8, 0xc3d9, 0xc3dc,
+ 0xc3df, 0xc3e0, 0xc3e2, 0xc3e8, 0xc3e9, 0xc3ed, 0xc3f4, 0xc3f5,
+ 0xc3f8, 0xc408, 0xc410, 0xc424, 0xc42c, 0xc430,
+ /* 0x3e */
+ 0xc434, 0xc43c, 0xc43d, 0xc448, 0xc464, 0xc465, 0xc468, 0xc46c,
+ 0xc474, 0xc475, 0xc479, 0xc480, 0xc494, 0xc49c, 0xc4b8, 0xc4bc,
+ 0xc4e9, 0xc4f0, 0xc4f1, 0xc4f4, 0xc4f8, 0xc4fa, 0xc4ff, 0xc500,
+ 0xc501, 0xc50c, 0xc510, 0xc514, 0xc51c, 0xc528, 0xc529, 0xc52c,
+ 0xc530, 0xc538, 0xc539, 0xc53b, 0xc53d, 0xc544, 0xc545, 0xc548,
+ 0xc549, 0xc54a, 0xc54c, 0xc54d, 0xc54e, 0xc553, 0xc554, 0xc555,
+ 0xc557, 0xc558, 0xc559, 0xc55d, 0xc55e, 0xc560, 0xc561, 0xc564,
+ 0xc568, 0xc570, 0xc571, 0xc573, 0xc574, 0xc575, 0xc57c, 0xc57d,
+ 0xc580, 0xc584, 0xc587, 0xc58c, 0xc58d, 0xc58f, 0xc591, 0xc595,
+ 0xc597, 0xc598, 0xc59c, 0xc5a0, 0xc5a9, 0xc5b4, 0xc5b5, 0xc5b8,
+ 0xc5b9, 0xc5bb, 0xc5bc, 0xc5bd, 0xc5be, 0xc5c4, 0xc5c5, 0xc5c6,
+ 0xc5c7, 0xc5c8, 0xc5c9, 0xc5ca, 0xc5cc, 0xc5ce,
+ /* 0x3f */
+ 0xc5d0, 0xc5d1, 0xc5d4, 0xc5d8, 0xc5e0, 0xc5e1, 0xc5e3, 0xc5e5,
+ 0xc5ec, 0xc5ed, 0xc5ee, 0xc5f0, 0xc5f4, 0xc5f6, 0xc5f7, 0xc5fc,
+ 0xc5fd, 0xc5fe, 0xc5ff, 0xc600, 0xc601, 0xc605, 0xc606, 0xc607,
+ 0xc608, 0xc60c, 0xc610, 0xc618, 0xc619, 0xc61b, 0xc61c, 0xc624,
+ 0xc625, 0xc628, 0xc62c, 0xc62d, 0xc62e, 0xc630, 0xc633, 0xc634,
+ 0xc635, 0xc637, 0xc639, 0xc63b, 0xc640, 0xc641, 0xc644, 0xc648,
+ 0xc650, 0xc651, 0xc653, 0xc654, 0xc655, 0xc65c, 0xc65d, 0xc660,
+ 0xc66c, 0xc66f, 0xc671, 0xc678, 0xc679, 0xc67c, 0xc680, 0xc688,
+ 0xc689, 0xc68b, 0xc68d, 0xc694, 0xc695, 0xc698, 0xc69c, 0xc6a4,
+ 0xc6a5, 0xc6a7, 0xc6a9, 0xc6b0, 0xc6b1, 0xc6b4, 0xc6b8, 0xc6b9,
+ 0xc6ba, 0xc6c0, 0xc6c1, 0xc6c3, 0xc6c5, 0xc6cc, 0xc6cd, 0xc6d0,
+ 0xc6d4, 0xc6dc, 0xc6dd, 0xc6e0, 0xc6e1, 0xc6e8,
+ /* 0x40 */
+ 0xc6e9, 0xc6ec, 0xc6f0, 0xc6f8, 0xc6f9, 0xc6fd, 0xc704, 0xc705,
+ 0xc708, 0xc70c, 0xc714, 0xc715, 0xc717, 0xc719, 0xc720, 0xc721,
+ 0xc724, 0xc728, 0xc730, 0xc731, 0xc733, 0xc735, 0xc737, 0xc73c,
+ 0xc73d, 0xc740, 0xc744, 0xc74a, 0xc74c, 0xc74d, 0xc74f, 0xc751,
+ 0xc752, 0xc753, 0xc754, 0xc755, 0xc756, 0xc757, 0xc758, 0xc75c,
+ 0xc760, 0xc768, 0xc76b, 0xc774, 0xc775, 0xc778, 0xc77c, 0xc77d,
+ 0xc77e, 0xc783, 0xc784, 0xc785, 0xc787, 0xc788, 0xc789, 0xc78a,
+ 0xc78e, 0xc790, 0xc791, 0xc794, 0xc796, 0xc797, 0xc798, 0xc79a,
+ 0xc7a0, 0xc7a1, 0xc7a3, 0xc7a4, 0xc7a5, 0xc7a6, 0xc7ac, 0xc7ad,
+ 0xc7b0, 0xc7b4, 0xc7bc, 0xc7bd, 0xc7bf, 0xc7c0, 0xc7c1, 0xc7c8,
+ 0xc7c9, 0xc7cc, 0xc7ce, 0xc7d0, 0xc7d8, 0xc7dd, 0xc7e4, 0xc7e8,
+ 0xc7ec, 0xc800, 0xc801, 0xc804, 0xc808, 0xc80a,
+ /* 0x41 */
+ 0xc810, 0xc811, 0xc813, 0xc815, 0xc816, 0xc81c, 0xc81d, 0xc820,
+ 0xc824, 0xc82c, 0xc82d, 0xc82f, 0xc831, 0xc838, 0xc83c, 0xc840,
+ 0xc848, 0xc849, 0xc84c, 0xc84d, 0xc854, 0xc870, 0xc871, 0xc874,
+ 0xc878, 0xc87a, 0xc880, 0xc881, 0xc883, 0xc885, 0xc886, 0xc887,
+ 0xc88b, 0xc88c, 0xc88d, 0xc894, 0xc89d, 0xc89f, 0xc8a1, 0xc8a8,
+ 0xc8bc, 0xc8bd, 0xc8c4, 0xc8c8, 0xc8cc, 0xc8d4, 0xc8d5, 0xc8d7,
+ 0xc8d9, 0xc8e0, 0xc8e1, 0xc8e4, 0xc8f5, 0xc8fc, 0xc8fd, 0xc900,
+ 0xc904, 0xc905, 0xc906, 0xc90c, 0xc90d, 0xc90f, 0xc911, 0xc918,
+ 0xc92c, 0xc934, 0xc950, 0xc951, 0xc954, 0xc958, 0xc960, 0xc961,
+ 0xc963, 0xc96c, 0xc970, 0xc974, 0xc97c, 0xc988, 0xc989, 0xc98c,
+ 0xc990, 0xc998, 0xc999, 0xc99b, 0xc99d, 0xc9c0, 0xc9c1, 0xc9c4,
+ 0xc9c7, 0xc9c8, 0xc9ca, 0xc9d0, 0xc9d1, 0xc9d3,
+ /* 0x42 */
+ 0xc9d5, 0xc9d6, 0xc9d9, 0xc9da, 0xc9dc, 0xc9dd, 0xc9e0, 0xc9e2,
+ 0xc9e4, 0xc9e7, 0xc9ec, 0xc9ed, 0xc9ef, 0xc9f0, 0xc9f1, 0xc9f8,
+ 0xc9f9, 0xc9fc, 0xca00, 0xca08, 0xca09, 0xca0b, 0xca0c, 0xca0d,
+ 0xca14, 0xca18, 0xca29, 0xca4c, 0xca4d, 0xca50, 0xca54, 0xca5c,
+ 0xca5d, 0xca5f, 0xca60, 0xca61, 0xca68, 0xca7d, 0xca84, 0xca98,
+ 0xcabc, 0xcabd, 0xcac0, 0xcac4, 0xcacc, 0xcacd, 0xcacf, 0xcad1,
+ 0xcad3, 0xcad8, 0xcad9, 0xcae0, 0xcaec, 0xcaf4, 0xcb08, 0xcb10,
+ 0xcb14, 0xcb18, 0xcb20, 0xcb21, 0xcb41, 0xcb48, 0xcb49, 0xcb4c,
+ 0xcb50, 0xcb58, 0xcb59, 0xcb5d, 0xcb64, 0xcb78, 0xcb79, 0xcb9c,
+ 0xcbb8, 0xcbd4, 0xcbe4, 0xcbe7, 0xcbe9, 0xcc0c, 0xcc0d, 0xcc10,
+ 0xcc14, 0xcc1c, 0xcc1d, 0xcc21, 0xcc22, 0xcc27, 0xcc28, 0xcc29,
+ 0xcc2c, 0xcc2e, 0xcc30, 0xcc38, 0xcc39, 0xcc3b,
+ /* 0x43 */
+ 0xcc3c, 0xcc3d, 0xcc3e, 0xcc44, 0xcc45, 0xcc48, 0xcc4c, 0xcc54,
+ 0xcc55, 0xcc57, 0xcc58, 0xcc59, 0xcc60, 0xcc64, 0xcc66, 0xcc68,
+ 0xcc70, 0xcc75, 0xcc98, 0xcc99, 0xcc9c, 0xcca0, 0xcca8, 0xcca9,
+ 0xccab, 0xccac, 0xccad, 0xccb4, 0xccb5, 0xccb8, 0xccbc, 0xccc4,
+ 0xccc5, 0xccc7, 0xccc9, 0xccd0, 0xccd4, 0xcce4, 0xccec, 0xccf0,
+ 0xcd01, 0xcd08, 0xcd09, 0xcd0c, 0xcd10, 0xcd18, 0xcd19, 0xcd1b,
+ 0xcd1d, 0xcd24, 0xcd28, 0xcd2c, 0xcd39, 0xcd5c, 0xcd60, 0xcd64,
+ 0xcd6c, 0xcd6d, 0xcd6f, 0xcd71, 0xcd78, 0xcd88, 0xcd94, 0xcd95,
+ 0xcd98, 0xcd9c, 0xcda4, 0xcda5, 0xcda7, 0xcda9, 0xcdb0, 0xcdc4,
+ 0xcdcc, 0xcdd0, 0xcde8, 0xcdec, 0xcdf0, 0xcdf8, 0xcdf9, 0xcdfb,
+ 0xcdfd, 0xce04, 0xce08, 0xce0c, 0xce14, 0xce19, 0xce20, 0xce21,
+ 0xce24, 0xce28, 0xce30, 0xce31, 0xce33, 0xce35,
+ /* 0x44 */
+ 0xce58, 0xce59, 0xce5c, 0xce5f, 0xce60, 0xce61, 0xce68, 0xce69,
+ 0xce6b, 0xce6d, 0xce74, 0xce75, 0xce78, 0xce7c, 0xce84, 0xce85,
+ 0xce87, 0xce89, 0xce90, 0xce91, 0xce94, 0xce98, 0xcea0, 0xcea1,
+ 0xcea3, 0xcea4, 0xcea5, 0xceac, 0xcead, 0xcec1, 0xcee4, 0xcee5,
+ 0xcee8, 0xceeb, 0xceec, 0xcef4, 0xcef5, 0xcef7, 0xcef8, 0xcef9,
+ 0xcf00, 0xcf01, 0xcf04, 0xcf08, 0xcf10, 0xcf11, 0xcf13, 0xcf15,
+ 0xcf1c, 0xcf20, 0xcf24, 0xcf2c, 0xcf2d, 0xcf2f, 0xcf30, 0xcf31,
+ 0xcf38, 0xcf54, 0xcf55, 0xcf58, 0xcf5c, 0xcf64, 0xcf65, 0xcf67,
+ 0xcf69, 0xcf70, 0xcf71, 0xcf74, 0xcf78, 0xcf80, 0xcf85, 0xcf8c,
+ 0xcfa1, 0xcfa8, 0xcfb0, 0xcfc4, 0xcfe0, 0xcfe1, 0xcfe4, 0xcfe8,
+ 0xcff0, 0xcff1, 0xcff3, 0xcff5, 0xcffc, 0xd000, 0xd004, 0xd011,
+ 0xd018, 0xd02d, 0xd034, 0xd035, 0xd038, 0xd03c,
+ /* 0x45 */
+ 0xd044, 0xd045, 0xd047, 0xd049, 0xd050, 0xd054, 0xd058, 0xd060,
+ 0xd06c, 0xd06d, 0xd070, 0xd074, 0xd07c, 0xd07d, 0xd081, 0xd0a4,
+ 0xd0a5, 0xd0a8, 0xd0ac, 0xd0b4, 0xd0b5, 0xd0b7, 0xd0b9, 0xd0c0,
+ 0xd0c1, 0xd0c4, 0xd0c8, 0xd0c9, 0xd0d0, 0xd0d1, 0xd0d3, 0xd0d4,
+ 0xd0d5, 0xd0dc, 0xd0dd, 0xd0e0, 0xd0e4, 0xd0ec, 0xd0ed, 0xd0ef,
+ 0xd0f0, 0xd0f1, 0xd0f8, 0xd10d, 0xd130, 0xd131, 0xd134, 0xd138,
+ 0xd13a, 0xd140, 0xd141, 0xd143, 0xd144, 0xd145, 0xd14c, 0xd14d,
+ 0xd150, 0xd154, 0xd15c, 0xd15d, 0xd15f, 0xd161, 0xd168, 0xd16c,
+ 0xd17c, 0xd184, 0xd188, 0xd1a0, 0xd1a1, 0xd1a4, 0xd1a8, 0xd1b0,
+ 0xd1b1, 0xd1b3, 0xd1b5, 0xd1ba, 0xd1bc, 0xd1c0, 0xd1d8, 0xd1f4,
+ 0xd1f8, 0xd207, 0xd209, 0xd210, 0xd22c, 0xd22d, 0xd230, 0xd234,
+ 0xd23c, 0xd23d, 0xd23f, 0xd241, 0xd248, 0xd25c,
+ /* 0x46 */
+ 0xd264, 0xd280, 0xd281, 0xd284, 0xd288, 0xd290, 0xd291, 0xd295,
+ 0xd29c, 0xd2a0, 0xd2a4, 0xd2ac, 0xd2b1, 0xd2b8, 0xd2b9, 0xd2bc,
+ 0xd2bf, 0xd2c0, 0xd2c2, 0xd2c8, 0xd2c9, 0xd2cb, 0xd2d4, 0xd2d8,
+ 0xd2dc, 0xd2e4, 0xd2e5, 0xd2f0, 0xd2f1, 0xd2f4, 0xd2f8, 0xd300,
+ 0xd301, 0xd303, 0xd305, 0xd30c, 0xd30d, 0xd30e, 0xd310, 0xd314,
+ 0xd316, 0xd31c, 0xd31d, 0xd31f, 0xd320, 0xd321, 0xd325, 0xd328,
+ 0xd329, 0xd32c, 0xd330, 0xd338, 0xd339, 0xd33b, 0xd33c, 0xd33d,
+ 0xd344, 0xd345, 0xd37c, 0xd37d, 0xd380, 0xd384, 0xd38c, 0xd38d,
+ 0xd38f, 0xd390, 0xd391, 0xd398, 0xd399, 0xd39c, 0xd3a0, 0xd3a8,
+ 0xd3a9, 0xd3ab, 0xd3ad, 0xd3b4, 0xd3b8, 0xd3bc, 0xd3c4, 0xd3c5,
+ 0xd3c8, 0xd3c9, 0xd3d0, 0xd3d8, 0xd3e1, 0xd3e3, 0xd3ec, 0xd3ed,
+ 0xd3f0, 0xd3f4, 0xd3fc, 0xd3fd, 0xd3ff, 0xd401,
+ /* 0x47 */
+ 0xd408, 0xd41d, 0xd440, 0xd444, 0xd45c, 0xd460, 0xd464, 0xd46d,
+ 0xd46f, 0xd478, 0xd479, 0xd47c, 0xd47f, 0xd480, 0xd482, 0xd488,
+ 0xd489, 0xd48b, 0xd48d, 0xd494, 0xd4a9, 0xd4cc, 0xd4d0, 0xd4d4,
+ 0xd4dc, 0xd4df, 0xd4e8, 0xd4ec, 0xd4f0, 0xd4f8, 0xd4fb, 0xd4fd,
+ 0xd504, 0xd508, 0xd50c, 0xd514, 0xd515, 0xd517, 0xd53c, 0xd53d,
+ 0xd540, 0xd544, 0xd54c, 0xd54d, 0xd54f, 0xd551, 0xd558, 0xd559,
+ 0xd55c, 0xd560, 0xd565, 0xd568, 0xd569, 0xd56b, 0xd56d, 0xd574,
+ 0xd575, 0xd578, 0xd57c, 0xd584, 0xd585, 0xd587, 0xd588, 0xd589,
+ 0xd590, 0xd5a5, 0xd5c8, 0xd5c9, 0xd5cc, 0xd5d0, 0xd5d2, 0xd5d8,
+ 0xd5d9, 0xd5db, 0xd5dd, 0xd5e4, 0xd5e5, 0xd5e8, 0xd5ec, 0xd5f4,
+ 0xd5f5, 0xd5f7, 0xd5f9, 0xd600, 0xd601, 0xd604, 0xd608, 0xd610,
+ 0xd611, 0xd613, 0xd614, 0xd615, 0xd61c, 0xd620,
+ /* 0x48 */
+ 0xd624, 0xd62d, 0xd638, 0xd639, 0xd63c, 0xd640, 0xd645, 0xd648,
+ 0xd649, 0xd64b, 0xd64d, 0xd651, 0xd654, 0xd655, 0xd658, 0xd65c,
+ 0xd667, 0xd669, 0xd670, 0xd671, 0xd674, 0xd683, 0xd685, 0xd68c,
+ 0xd68d, 0xd690, 0xd694, 0xd69d, 0xd69f, 0xd6a1, 0xd6a8, 0xd6ac,
+ 0xd6b0, 0xd6b9, 0xd6bb, 0xd6c4, 0xd6c5, 0xd6c8, 0xd6cc, 0xd6d1,
+ 0xd6d4, 0xd6d7, 0xd6d9, 0xd6e0, 0xd6e4, 0xd6e8, 0xd6f0, 0xd6f5,
+ 0xd6fc, 0xd6fd, 0xd700, 0xd704, 0xd711, 0xd718, 0xd719, 0xd71c,
+ 0xd720, 0xd728, 0xd729, 0xd72b, 0xd72d, 0xd734, 0xd735, 0xd738,
+ 0xd73c, 0xd744, 0xd747, 0xd749, 0xd750, 0xd751, 0xd754, 0xd756,
+ 0xd757, 0xd758, 0xd759, 0xd760, 0xd761, 0xd763, 0xd765, 0xd769,
+ 0xd76c, 0xd770, 0xd774, 0xd77c, 0xd77d, 0xd781, 0xd788, 0xd789,
+ 0xd78c, 0xd790, 0xd798, 0xd799, 0xd79b, 0xd79d,
+};
+static const unsigned short ksc5601_2uni_page4a[4888] = {
+ /* 0x4a */
+ 0x4f3d, 0x4f73, 0x5047, 0x50f9, 0x52a0, 0x53ef, 0x5475, 0x54e5,
+ 0x5609, 0x5ac1, 0x5bb6, 0x6687, 0x67b6, 0x67b7, 0x67ef, 0x6b4c,
+ 0x73c2, 0x75c2, 0x7a3c, 0x82db, 0x8304, 0x8857, 0x8888, 0x8a36,
+ 0x8cc8, 0x8dcf, 0x8efb, 0x8fe6, 0x99d5, 0x523b, 0x5374, 0x5404,
+ 0x606a, 0x6164, 0x6bbc, 0x73cf, 0x811a, 0x89ba, 0x89d2, 0x95a3,
+ 0x4f83, 0x520a, 0x58be, 0x5978, 0x59e6, 0x5e72, 0x5e79, 0x61c7,
+ 0x63c0, 0x6746, 0x67ec, 0x687f, 0x6f97, 0x764e, 0x770b, 0x78f5,
+ 0x7a08, 0x7aff, 0x7c21, 0x809d, 0x826e, 0x8271, 0x8aeb, 0x9593,
+ 0x4e6b, 0x559d, 0x66f7, 0x6e34, 0x78a3, 0x7aed, 0x845b, 0x8910,
+ 0x874e, 0x97a8, 0x52d8, 0x574e, 0x582a, 0x5d4c, 0x611f, 0x61be,
+ 0x6221, 0x6562, 0x67d1, 0x6a44, 0x6e1b, 0x7518, 0x75b3, 0x76e3,
+ 0x77b0, 0x7d3a, 0x90af, 0x9451, 0x9452, 0x9f95,
+ /* 0x4b */
+ 0x5323, 0x5cac, 0x7532, 0x80db, 0x9240, 0x9598, 0x525b, 0x5808,
+ 0x59dc, 0x5ca1, 0x5d17, 0x5eb7, 0x5f3a, 0x5f4a, 0x6177, 0x6c5f,
+ 0x757a, 0x7586, 0x7ce0, 0x7d73, 0x7db1, 0x7f8c, 0x8154, 0x8221,
+ 0x8591, 0x8941, 0x8b1b, 0x92fc, 0x964d, 0x9c47, 0x4ecb, 0x4ef7,
+ 0x500b, 0x51f1, 0x584f, 0x6137, 0x613e, 0x6168, 0x6539, 0x69ea,
+ 0x6f11, 0x75a5, 0x7686, 0x76d6, 0x7b87, 0x82a5, 0x84cb, 0xf900,
+ 0x93a7, 0x958b, 0x5580, 0x5ba2, 0x5751, 0xf901, 0x7cb3, 0x7fb9,
+ 0x91b5, 0x5028, 0x53bb, 0x5c45, 0x5de8, 0x62d2, 0x636e, 0x64da,
+ 0x64e7, 0x6e20, 0x70ac, 0x795b, 0x8ddd, 0x8e1e, 0xf902, 0x907d,
+ 0x9245, 0x92f8, 0x4e7e, 0x4ef6, 0x5065, 0x5dfe, 0x5efa, 0x6106,
+ 0x6957, 0x8171, 0x8654, 0x8e47, 0x9375, 0x9a2b, 0x4e5e, 0x5091,
+ 0x6770, 0x6840, 0x5109, 0x528d, 0x5292, 0x6aa2,
+ /* 0x4c */
+ 0x77bc, 0x9210, 0x9ed4, 0x52ab, 0x602f, 0x8ff2, 0x5048, 0x61a9,
+ 0x63ed, 0x64ca, 0x683c, 0x6a84, 0x6fc0, 0x8188, 0x89a1, 0x9694,
+ 0x5805, 0x727d, 0x72ac, 0x7504, 0x7d79, 0x7e6d, 0x80a9, 0x898b,
+ 0x8b74, 0x9063, 0x9d51, 0x6289, 0x6c7a, 0x6f54, 0x7d50, 0x7f3a,
+ 0x8a23, 0x517c, 0x614a, 0x7b9d, 0x8b19, 0x9257, 0x938c, 0x4eac,
+ 0x4fd3, 0x501e, 0x50be, 0x5106, 0x52c1, 0x52cd, 0x537f, 0x5770,
+ 0x5883, 0x5e9a, 0x5f91, 0x6176, 0x61ac, 0x64ce, 0x656c, 0x666f,
+ 0x66bb, 0x66f4, 0x6897, 0x6d87, 0x7085, 0x70f1, 0x749f, 0x74a5,
+ 0x74ca, 0x75d9, 0x786c, 0x78ec, 0x7adf, 0x7af6, 0x7d45, 0x7d93,
+ 0x8015, 0x803f, 0x811b, 0x8396, 0x8b66, 0x8f15, 0x9015, 0x93e1,
+ 0x9803, 0x9838, 0x9a5a, 0x9be8, 0x4fc2, 0x5553, 0x583a, 0x5951,
+ 0x5b63, 0x5c46, 0x60b8, 0x6212, 0x6842, 0x68b0,
+ /* 0x4d */
+ 0x68e8, 0x6eaa, 0x754c, 0x7678, 0x78ce, 0x7a3d, 0x7cfb, 0x7e6b,
+ 0x7e7c, 0x8a08, 0x8aa1, 0x8c3f, 0x968e, 0x9dc4, 0x53e4, 0x53e9,
+ 0x544a, 0x5471, 0x56fa, 0x59d1, 0x5b64, 0x5c3b, 0x5eab, 0x62f7,
+ 0x6537, 0x6545, 0x6572, 0x66a0, 0x67af, 0x69c1, 0x6cbd, 0x75fc,
+ 0x7690, 0x777e, 0x7a3f, 0x7f94, 0x8003, 0x80a1, 0x818f, 0x82e6,
+ 0x82fd, 0x83f0, 0x85c1, 0x8831, 0x88b4, 0x8aa5, 0xf903, 0x8f9c,
+ 0x932e, 0x96c7, 0x9867, 0x9ad8, 0x9f13, 0x54ed, 0x659b, 0x66f2,
+ 0x688f, 0x7a40, 0x8c37, 0x9d60, 0x56f0, 0x5764, 0x5d11, 0x6606,
+ 0x68b1, 0x68cd, 0x6efe, 0x7428, 0x889e, 0x9be4, 0x6c68, 0xf904,
+ 0x9aa8, 0x4f9b, 0x516c, 0x5171, 0x529f, 0x5b54, 0x5de5, 0x6050,
+ 0x606d, 0x62f1, 0x63a7, 0x653b, 0x73d9, 0x7a7a, 0x86a3, 0x8ca2,
+ 0x978f, 0x4e32, 0x5be1, 0x6208, 0x679c, 0x74dc,
+ /* 0x4e */
+ 0x79d1, 0x83d3, 0x8a87, 0x8ab2, 0x8de8, 0x904e, 0x934b, 0x9846,
+ 0x5ed3, 0x69e8, 0x85ff, 0x90ed, 0xf905, 0x51a0, 0x5b98, 0x5bec,
+ 0x6163, 0x68fa, 0x6b3e, 0x704c, 0x742f, 0x74d8, 0x7ba1, 0x7f50,
+ 0x83c5, 0x89c0, 0x8cab, 0x95dc, 0x9928, 0x522e, 0x605d, 0x62ec,
+ 0x9002, 0x4f8a, 0x5149, 0x5321, 0x58d9, 0x5ee3, 0x66e0, 0x6d38,
+ 0x709a, 0x72c2, 0x73d6, 0x7b50, 0x80f1, 0x945b, 0x5366, 0x639b,
+ 0x7f6b, 0x4e56, 0x5080, 0x584a, 0x58de, 0x602a, 0x6127, 0x62d0,
+ 0x69d0, 0x9b41, 0x5b8f, 0x7d18, 0x80b1, 0x8f5f, 0x4ea4, 0x50d1,
+ 0x54ac, 0x55ac, 0x5b0c, 0x5da0, 0x5de7, 0x652a, 0x654e, 0x6821,
+ 0x6a4b, 0x72e1, 0x768e, 0x77ef, 0x7d5e, 0x7ff9, 0x81a0, 0x854e,
+ 0x86df, 0x8f03, 0x8f4e, 0x90ca, 0x9903, 0x9a55, 0x9bab, 0x4e18,
+ 0x4e45, 0x4e5d, 0x4ec7, 0x4ff1, 0x5177, 0x52fe,
+ /* 0x4f */
+ 0x5340, 0x53e3, 0x53e5, 0x548e, 0x5614, 0x5775, 0x57a2, 0x5bc7,
+ 0x5d87, 0x5ed0, 0x61fc, 0x62d8, 0x6551, 0x67b8, 0x67e9, 0x69cb,
+ 0x6b50, 0x6bc6, 0x6bec, 0x6c42, 0x6e9d, 0x7078, 0x72d7, 0x7396,
+ 0x7403, 0x77bf, 0x77e9, 0x7a76, 0x7d7f, 0x8009, 0x81fc, 0x8205,
+ 0x820a, 0x82df, 0x8862, 0x8b33, 0x8cfc, 0x8ec0, 0x9011, 0x90b1,
+ 0x9264, 0x92b6, 0x99d2, 0x9a45, 0x9ce9, 0x9dd7, 0x9f9c, 0x570b,
+ 0x5c40, 0x83ca, 0x97a0, 0x97ab, 0x9eb4, 0x541b, 0x7a98, 0x7fa4,
+ 0x88d9, 0x8ecd, 0x90e1, 0x5800, 0x5c48, 0x6398, 0x7a9f, 0x5bae,
+ 0x5f13, 0x7a79, 0x7aae, 0x828e, 0x8eac, 0x5026, 0x5238, 0x52f8,
+ 0x5377, 0x5708, 0x62f3, 0x6372, 0x6b0a, 0x6dc3, 0x7737, 0x53a5,
+ 0x7357, 0x8568, 0x8e76, 0x95d5, 0x673a, 0x6ac3, 0x6f70, 0x8a6d,
+ 0x8ecc, 0x994b, 0xf906, 0x6677, 0x6b78, 0x8cb4,
+ /* 0x50 */
+ 0x9b3c, 0xf907, 0x53eb, 0x572d, 0x594e, 0x63c6, 0x69fb, 0x73ea,
+ 0x7845, 0x7aba, 0x7ac5, 0x7cfe, 0x8475, 0x898f, 0x8d73, 0x9035,
+ 0x95a8, 0x52fb, 0x5747, 0x7547, 0x7b60, 0x83cc, 0x921e, 0xf908,
+ 0x6a58, 0x514b, 0x524b, 0x5287, 0x621f, 0x68d8, 0x6975, 0x9699,
+ 0x50c5, 0x52a4, 0x52e4, 0x61c3, 0x65a4, 0x6839, 0x69ff, 0x747e,
+ 0x7b4b, 0x82b9, 0x83eb, 0x89b2, 0x8b39, 0x8fd1, 0x9949, 0xf909,
+ 0x4eca, 0x5997, 0x64d2, 0x6611, 0x6a8e, 0x7434, 0x7981, 0x79bd,
+ 0x82a9, 0x887e, 0x887f, 0x895f, 0xf90a, 0x9326, 0x4f0b, 0x53ca,
+ 0x6025, 0x6271, 0x6c72, 0x7d1a, 0x7d66, 0x4e98, 0x5162, 0x77dc,
+ 0x80af, 0x4f01, 0x4f0e, 0x5176, 0x5180, 0x55dc, 0x5668, 0x573b,
+ 0x57fa, 0x57fc, 0x5914, 0x5947, 0x5993, 0x5bc4, 0x5c90, 0x5d0e,
+ 0x5df1, 0x5e7e, 0x5fcc, 0x6280, 0x65d7, 0x65e3,
+ /* 0x51 */
+ 0x671e, 0x671f, 0x675e, 0x68cb, 0x68c4, 0x6a5f, 0x6b3a, 0x6c23,
+ 0x6c7d, 0x6c82, 0x6dc7, 0x7398, 0x7426, 0x742a, 0x7482, 0x74a3,
+ 0x7578, 0x757f, 0x7881, 0x78ef, 0x7941, 0x7947, 0x7948, 0x797a,
+ 0x7b95, 0x7d00, 0x7dba, 0x7f88, 0x8006, 0x802d, 0x808c, 0x8a18,
+ 0x8b4f, 0x8c48, 0x8d77, 0x9321, 0x9324, 0x98e2, 0x9951, 0x9a0e,
+ 0x9a0f, 0x9a65, 0x9e92, 0x7dca, 0x4f76, 0x5409, 0x62ee, 0x6854,
+ 0x91d1, 0x55ab, 0x513a, 0xf90b, 0xf90c, 0x5a1c, 0x61e6, 0xf90d,
+ 0x62cf, 0x62ff, 0xf90e, 0xf90f, 0xf910, 0xf911, 0xf912, 0xf913,
+ 0x90a3, 0xf914, 0xf915, 0xf916, 0xf917, 0xf918, 0x8afe, 0xf919,
+ 0xf91a, 0xf91b, 0xf91c, 0x6696, 0xf91d, 0x7156, 0xf91e, 0xf91f,
+ 0x96e3, 0xf920, 0x634f, 0x637a, 0x5357, 0xf921, 0x678f, 0x6960,
+ 0x6e73, 0xf922, 0x7537, 0xf923, 0xf924, 0xf925,
+ /* 0x52 */
+ 0x7d0d, 0xf926, 0xf927, 0x8872, 0x56ca, 0x5a18, 0xf928, 0xf929,
+ 0xf92a, 0xf92b, 0xf92c, 0x4e43, 0xf92d, 0x5167, 0x5948, 0x67f0,
+ 0x8010, 0xf92e, 0x5973, 0x5e74, 0x649a, 0x79ca, 0x5ff5, 0x606c,
+ 0x62c8, 0x637b, 0x5be7, 0x5bd7, 0x52aa, 0xf92f, 0x5974, 0x5f29,
+ 0x6012, 0xf930, 0xf931, 0xf932, 0x7459, 0xf933, 0xf934, 0xf935,
+ 0xf936, 0xf937, 0xf938, 0x99d1, 0xf939, 0xf93a, 0xf93b, 0xf93c,
+ 0xf93d, 0xf93e, 0xf93f, 0xf940, 0xf941, 0xf942, 0xf943, 0x6fc3,
+ 0xf944, 0xf945, 0x81bf, 0x8fb2, 0x60f1, 0xf946, 0xf947, 0x8166,
+ 0xf948, 0xf949, 0x5c3f, 0xf94a, 0xf94b, 0xf94c, 0xf94d, 0xf94e,
+ 0xf94f, 0xf950, 0xf951, 0x5ae9, 0x8a25, 0x677b, 0x7d10, 0xf952,
+ 0xf953, 0xf954, 0xf955, 0xf956, 0xf957, 0x80fd, 0xf958, 0xf959,
+ 0x5c3c, 0x6ce5, 0x533f, 0x6eba, 0x591a, 0x8336,
+ /* 0x53 */
+ 0x4e39, 0x4eb6, 0x4f46, 0x55ae, 0x5718, 0x58c7, 0x5f56, 0x65b7,
+ 0x65e6, 0x6a80, 0x6bb5, 0x6e4d, 0x77ed, 0x7aef, 0x7c1e, 0x7dde,
+ 0x86cb, 0x8892, 0x9132, 0x935b, 0x64bb, 0x6fbe, 0x737a, 0x75b8,
+ 0x9054, 0x5556, 0x574d, 0x61ba, 0x64d4, 0x66c7, 0x6de1, 0x6e5b,
+ 0x6f6d, 0x6fb9, 0x75f0, 0x8043, 0x81bd, 0x8541, 0x8983, 0x8ac7,
+ 0x8b5a, 0x931f, 0x6c93, 0x7553, 0x7b54, 0x8e0f, 0x905d, 0x5510,
+ 0x5802, 0x5858, 0x5e62, 0x6207, 0x649e, 0x68e0, 0x7576, 0x7cd6,
+ 0x87b3, 0x9ee8, 0x4ee3, 0x5788, 0x576e, 0x5927, 0x5c0d, 0x5cb1,
+ 0x5e36, 0x5f85, 0x6234, 0x64e1, 0x73b3, 0x81fa, 0x888b, 0x8cb8,
+ 0x968a, 0x9edb, 0x5b85, 0x5fb7, 0x60b3, 0x5012, 0x5200, 0x5230,
+ 0x5716, 0x5835, 0x5857, 0x5c0e, 0x5c60, 0x5cf6, 0x5d8b, 0x5ea6,
+ 0x5f92, 0x60bc, 0x6311, 0x6389, 0x6417, 0x6843,
+ /* 0x54 */
+ 0x68f9, 0x6ac2, 0x6dd8, 0x6e21, 0x6ed4, 0x6fe4, 0x71fe, 0x76dc,
+ 0x7779, 0x79b1, 0x7a3b, 0x8404, 0x89a9, 0x8ced, 0x8df3, 0x8e48,
+ 0x9003, 0x9014, 0x9053, 0x90fd, 0x934d, 0x9676, 0x97dc, 0x6bd2,
+ 0x7006, 0x7258, 0x72a2, 0x7368, 0x7763, 0x79bf, 0x7be4, 0x7e9b,
+ 0x8b80, 0x58a9, 0x60c7, 0x6566, 0x65fd, 0x66be, 0x6c8c, 0x711e,
+ 0x71c9, 0x8c5a, 0x9813, 0x4e6d, 0x7a81, 0x4edd, 0x51ac, 0x51cd,
+ 0x52d5, 0x540c, 0x61a7, 0x6771, 0x6850, 0x68df, 0x6d1e, 0x6f7c,
+ 0x75bc, 0x77b3, 0x7ae5, 0x80f4, 0x8463, 0x9285, 0x515c, 0x6597,
+ 0x675c, 0x6793, 0x75d8, 0x7ac7, 0x8373, 0xf95a, 0x8c46, 0x9017,
+ 0x982d, 0x5c6f, 0x81c0, 0x829a, 0x9041, 0x906f, 0x920d, 0x5f97,
+ 0x5d9d, 0x6a59, 0x71c8, 0x767b, 0x7b49, 0x85e4, 0x8b04, 0x9127,
+ 0x9a30, 0x5587, 0x61f6, 0xf95b, 0x7669, 0x7f85,
+ /* 0x55 */
+ 0x863f, 0x87ba, 0x88f8, 0x908f, 0xf95c, 0x6d1b, 0x70d9, 0x73de,
+ 0x7d61, 0x843d, 0xf95d, 0x916a, 0x99f1, 0xf95e, 0x4e82, 0x5375,
+ 0x6b04, 0x6b12, 0x703e, 0x721b, 0x862d, 0x9e1e, 0x524c, 0x8fa3,
+ 0x5d50, 0x64e5, 0x652c, 0x6b16, 0x6feb, 0x7c43, 0x7e9c, 0x85cd,
+ 0x8964, 0x89bd, 0x62c9, 0x81d8, 0x881f, 0x5eca, 0x6717, 0x6d6a,
+ 0x72fc, 0x7405, 0x746f, 0x8782, 0x90de, 0x4f86, 0x5d0d, 0x5fa0,
+ 0x840a, 0x51b7, 0x63a0, 0x7565, 0x4eae, 0x5006, 0x5169, 0x51c9,
+ 0x6881, 0x6a11, 0x7cae, 0x7cb1, 0x7ce7, 0x826f, 0x8ad2, 0x8f1b,
+ 0x91cf, 0x4fb6, 0x5137, 0x52f5, 0x5442, 0x5eec, 0x616e, 0x623e,
+ 0x65c5, 0x6ada, 0x6ffe, 0x792a, 0x85dc, 0x8823, 0x95ad, 0x9a62,
+ 0x9a6a, 0x9e97, 0x9ece, 0x529b, 0x66c6, 0x6b77, 0x701d, 0x792b,
+ 0x8f62, 0x9742, 0x6190, 0x6200, 0x6523, 0x6f23,
+ /* 0x56 */
+ 0x7149, 0x7489, 0x7df4, 0x806f, 0x84ee, 0x8f26, 0x9023, 0x934a,
+ 0x51bd, 0x5217, 0x52a3, 0x6d0c, 0x70c8, 0x88c2, 0x5ec9, 0x6582,
+ 0x6bae, 0x6fc2, 0x7c3e, 0x7375, 0x4ee4, 0x4f36, 0x56f9, 0xf95f,
+ 0x5cba, 0x5dba, 0x601c, 0x73b2, 0x7b2d, 0x7f9a, 0x7fce, 0x8046,
+ 0x901e, 0x9234, 0x96f6, 0x9748, 0x9818, 0x9f61, 0x4f8b, 0x6fa7,
+ 0x79ae, 0x91b4, 0x96b7, 0x52de, 0xf960, 0x6488, 0x64c4, 0x6ad3,
+ 0x6f5e, 0x7018, 0x7210, 0x76e7, 0x8001, 0x8606, 0x865c, 0x8def,
+ 0x8f05, 0x9732, 0x9b6f, 0x9dfa, 0x9e75, 0x788c, 0x797f, 0x7da0,
+ 0x83c9, 0x9304, 0x9e7f, 0x9e93, 0x8ad6, 0x58df, 0x5f04, 0x6727,
+ 0x7027, 0x74cf, 0x7c60, 0x807e, 0x5121, 0x7028, 0x7262, 0x78ca,
+ 0x8cc2, 0x8cda, 0x8cf4, 0x96f7, 0x4e86, 0x50da, 0x5bee, 0x5ed6,
+ 0x6599, 0x71ce, 0x7642, 0x77ad, 0x804a, 0x84fc,
+ /* 0x57 */
+ 0x907c, 0x9b27, 0x9f8d, 0x58d8, 0x5a41, 0x5c62, 0x6a13, 0x6dda,
+ 0x6f0f, 0x763b, 0x7d2f, 0x7e37, 0x851e, 0x8938, 0x93e4, 0x964b,
+ 0x5289, 0x65d2, 0x67f3, 0x69b4, 0x6d41, 0x6e9c, 0x700f, 0x7409,
+ 0x7460, 0x7559, 0x7624, 0x786b, 0x8b2c, 0x985e, 0x516d, 0x622e,
+ 0x9678, 0x4f96, 0x502b, 0x5d19, 0x6dea, 0x7db8, 0x8f2a, 0x5f8b,
+ 0x6144, 0x6817, 0xf961, 0x9686, 0x52d2, 0x808b, 0x51dc, 0x51cc,
+ 0x695e, 0x7a1c, 0x7dbe, 0x83f1, 0x9675, 0x4fda, 0x5229, 0x5398,
+ 0x540f, 0x550e, 0x5c65, 0x60a7, 0x674e, 0x68a8, 0x6d6c, 0x7281,
+ 0x72f8, 0x7406, 0x7483, 0xf962, 0x75e2, 0x7c6c, 0x7f79, 0x7fb8,
+ 0x8389, 0x88cf, 0x88e1, 0x91cc, 0x91d0, 0x96e2, 0x9bc9, 0x541d,
+ 0x6f7e, 0x71d0, 0x7498, 0x85fa, 0x8eaa, 0x96a3, 0x9c57, 0x9e9f,
+ 0x6797, 0x6dcb, 0x7433, 0x81e8, 0x9716, 0x782c,
+ /* 0x58 */
+ 0x7acb, 0x7b20, 0x7c92, 0x6469, 0x746a, 0x75f2, 0x78bc, 0x78e8,
+ 0x99ac, 0x9b54, 0x9ebb, 0x5bde, 0x5e55, 0x6f20, 0x819c, 0x83ab,
+ 0x9088, 0x4e07, 0x534d, 0x5a29, 0x5dd2, 0x5f4e, 0x6162, 0x633d,
+ 0x6669, 0x66fc, 0x6eff, 0x6f2b, 0x7063, 0x779e, 0x842c, 0x8513,
+ 0x883b, 0x8f13, 0x9945, 0x9c3b, 0x551c, 0x62b9, 0x672b, 0x6cab,
+ 0x8309, 0x896a, 0x977a, 0x4ea1, 0x5984, 0x5fd8, 0x5fd9, 0x671b,
+ 0x7db2, 0x7f54, 0x8292, 0x832b, 0x83bd, 0x8f1e, 0x9099, 0x57cb,
+ 0x59b9, 0x5a92, 0x5bd0, 0x6627, 0x679a, 0x6885, 0x6bcf, 0x7164,
+ 0x7f75, 0x8cb7, 0x8ce3, 0x9081, 0x9b45, 0x8108, 0x8c8a, 0x964c,
+ 0x9a40, 0x9ea5, 0x5b5f, 0x6c13, 0x731b, 0x76f2, 0x76df, 0x840c,
+ 0x51aa, 0x8993, 0x514d, 0x5195, 0x52c9, 0x68c9, 0x6c94, 0x7704,
+ 0x7720, 0x7dbf, 0x7dec, 0x9762, 0x9eb5, 0x6ec5,
+ /* 0x59 */
+ 0x8511, 0x51a5, 0x540d, 0x547d, 0x660e, 0x669d, 0x6927, 0x6e9f,
+ 0x76bf, 0x7791, 0x8317, 0x84c2, 0x879f, 0x9169, 0x9298, 0x9cf4,
+ 0x8882, 0x4fae, 0x5192, 0x52df, 0x59c6, 0x5e3d, 0x6155, 0x6478,
+ 0x6479, 0x66ae, 0x67d0, 0x6a21, 0x6bcd, 0x6bdb, 0x725f, 0x7261,
+ 0x7441, 0x7738, 0x77db, 0x8017, 0x82bc, 0x8305, 0x8b00, 0x8b28,
+ 0x8c8c, 0x6728, 0x6c90, 0x7267, 0x76ee, 0x7766, 0x7a46, 0x9da9,
+ 0x6b7f, 0x6c92, 0x5922, 0x6726, 0x8499, 0x536f, 0x5893, 0x5999,
+ 0x5edf, 0x63cf, 0x6634, 0x6773, 0x6e3a, 0x732b, 0x7ad7, 0x82d7,
+ 0x9328, 0x52d9, 0x5deb, 0x61ae, 0x61cb, 0x620a, 0x62c7, 0x64ab,
+ 0x65e0, 0x6959, 0x6b66, 0x6bcb, 0x7121, 0x73f7, 0x755d, 0x7e46,
+ 0x821e, 0x8302, 0x856a, 0x8aa3, 0x8cbf, 0x9727, 0x9d61, 0x58a8,
+ 0x9ed8, 0x5011, 0x520e, 0x543b, 0x554f, 0x6587,
+ /* 0x5a */
+ 0x6c76, 0x7d0a, 0x7d0b, 0x805e, 0x868a, 0x9580, 0x96ef, 0x52ff,
+ 0x6c95, 0x7269, 0x5473, 0x5a9a, 0x5c3e, 0x5d4b, 0x5f4c, 0x5fae,
+ 0x672a, 0x68b6, 0x6963, 0x6e3c, 0x6e44, 0x7709, 0x7c73, 0x7f8e,
+ 0x8587, 0x8b0e, 0x8ff7, 0x9761, 0x9ef4, 0x5cb7, 0x60b6, 0x610d,
+ 0x61ab, 0x654f, 0x65fb, 0x65fc, 0x6c11, 0x6cef, 0x739f, 0x73c9,
+ 0x7de1, 0x9594, 0x5bc6, 0x871c, 0x8b10, 0x525d, 0x535a, 0x62cd,
+ 0x640f, 0x64b2, 0x6734, 0x6a38, 0x6cca, 0x73c0, 0x749e, 0x7b94,
+ 0x7c95, 0x7e1b, 0x818a, 0x8236, 0x8584, 0x8feb, 0x96f9, 0x99c1,
+ 0x4f34, 0x534a, 0x53cd, 0x53db, 0x62cc, 0x642c, 0x6500, 0x6591,
+ 0x69c3, 0x6cee, 0x6f58, 0x73ed, 0x7554, 0x7622, 0x76e4, 0x76fc,
+ 0x78d0, 0x78fb, 0x792c, 0x7d46, 0x822c, 0x87e0, 0x8fd4, 0x9812,
+ 0x98ef, 0x52c3, 0x62d4, 0x64a5, 0x6e24, 0x6f51,
+ /* 0x5b */
+ 0x767c, 0x8dcb, 0x91b1, 0x9262, 0x9aee, 0x9b43, 0x5023, 0x508d,
+ 0x574a, 0x59a8, 0x5c28, 0x5e47, 0x5f77, 0x623f, 0x653e, 0x65b9,
+ 0x65c1, 0x6609, 0x678b, 0x699c, 0x6ec2, 0x78c5, 0x7d21, 0x80aa,
+ 0x8180, 0x822b, 0x82b3, 0x84a1, 0x868c, 0x8a2a, 0x8b17, 0x90a6,
+ 0x9632, 0x9f90, 0x500d, 0x4ff3, 0xf963, 0x57f9, 0x5f98, 0x62dc,
+ 0x6392, 0x676f, 0x6e43, 0x7119, 0x76c3, 0x80cc, 0x80da, 0x88f4,
+ 0x88f5, 0x8919, 0x8ce0, 0x8f29, 0x914d, 0x966a, 0x4f2f, 0x4f70,
+ 0x5e1b, 0x67cf, 0x6822, 0x767d, 0x767e, 0x9b44, 0x5e61, 0x6a0a,
+ 0x7169, 0x71d4, 0x756a, 0xf964, 0x7e41, 0x8543, 0x85e9, 0x98dc,
+ 0x4f10, 0x7b4f, 0x7f70, 0x95a5, 0x51e1, 0x5e06, 0x68b5, 0x6c3e,
+ 0x6c4e, 0x6cdb, 0x72af, 0x7bc4, 0x8303, 0x6cd5, 0x743a, 0x50fb,
+ 0x5288, 0x58c1, 0x64d8, 0x6a97, 0x74a7, 0x7656,
+ /* 0x5c */
+ 0x78a7, 0x8617, 0x95e2, 0x9739, 0xf965, 0x535e, 0x5f01, 0x8b8a,
+ 0x8fa8, 0x8faf, 0x908a, 0x5225, 0x77a5, 0x9c49, 0x9f08, 0x4e19,
+ 0x5002, 0x5175, 0x5c5b, 0x5e77, 0x661e, 0x663a, 0x67c4, 0x68c5,
+ 0x70b3, 0x7501, 0x75c5, 0x79c9, 0x7add, 0x8f27, 0x9920, 0x9a08,
+ 0x4fdd, 0x5821, 0x5831, 0x5bf6, 0x666e, 0x6b65, 0x6d11, 0x6e7a,
+ 0x6f7d, 0x73e4, 0x752b, 0x83e9, 0x88dc, 0x8913, 0x8b5c, 0x8f14,
+ 0x4f0f, 0x50d5, 0x5310, 0x535c, 0x5b93, 0x5fa9, 0x670d, 0x798f,
+ 0x8179, 0x832f, 0x8514, 0x8907, 0x8986, 0x8f39, 0x8f3b, 0x99a5,
+ 0x9c12, 0x672c, 0x4e76, 0x4ff8, 0x5949, 0x5c01, 0x5cef, 0x5cf0,
+ 0x6367, 0x68d2, 0x70fd, 0x71a2, 0x742b, 0x7e2b, 0x84ec, 0x8702,
+ 0x9022, 0x92d2, 0x9cf3, 0x4e0d, 0x4ed8, 0x4fef, 0x5085, 0x5256,
+ 0x526f, 0x5426, 0x5490, 0x57e0, 0x592b, 0x5a66,
+ /* 0x5d */
+ 0x5b5a, 0x5b75, 0x5bcc, 0x5e9c, 0xf966, 0x6276, 0x6577, 0x65a7,
+ 0x6d6e, 0x6ea5, 0x7236, 0x7b26, 0x7c3f, 0x7f36, 0x8150, 0x8151,
+ 0x819a, 0x8240, 0x8299, 0x83a9, 0x8a03, 0x8ca0, 0x8ce6, 0x8cfb,
+ 0x8d74, 0x8dba, 0x90e8, 0x91dc, 0x961c, 0x9644, 0x99d9, 0x9ce7,
+ 0x5317, 0x5206, 0x5429, 0x5674, 0x58b3, 0x5954, 0x596e, 0x5fff,
+ 0x61a4, 0x626e, 0x6610, 0x6c7e, 0x711a, 0x76c6, 0x7c89, 0x7cde,
+ 0x7d1b, 0x82ac, 0x8cc1, 0x96f0, 0xf967, 0x4f5b, 0x5f17, 0x5f7f,
+ 0x62c2, 0x5d29, 0x670b, 0x68da, 0x787c, 0x7e43, 0x9d6c, 0x4e15,
+ 0x5099, 0x5315, 0x532a, 0x5351, 0x5983, 0x5a62, 0x5e87, 0x60b2,
+ 0x618a, 0x6249, 0x6279, 0x6590, 0x6787, 0x69a7, 0x6bd4, 0x6bd6,
+ 0x6bd7, 0x6bd8, 0x6cb8, 0xf968, 0x7435, 0x75fa, 0x7812, 0x7891,
+ 0x79d5, 0x79d8, 0x7c83, 0x7dcb, 0x7fe1, 0x80a5,
+ /* 0x5e */
+ 0x813e, 0x81c2, 0x83f2, 0x871a, 0x88e8, 0x8ab9, 0x8b6c, 0x8cbb,
+ 0x9119, 0x975e, 0x98db, 0x9f3b, 0x56ac, 0x5b2a, 0x5f6c, 0x658c,
+ 0x6ab3, 0x6baf, 0x6d5c, 0x6ff1, 0x7015, 0x725d, 0x73ad, 0x8ca7,
+ 0x8cd3, 0x983b, 0x6191, 0x6c37, 0x8058, 0x9a01, 0x4e4d, 0x4e8b,
+ 0x4e9b, 0x4ed5, 0x4f3a, 0x4f3c, 0x4f7f, 0x4fdf, 0x50ff, 0x53f2,
+ 0x53f8, 0x5506, 0x55e3, 0x56db, 0x58eb, 0x5962, 0x5a11, 0x5beb,
+ 0x5bfa, 0x5c04, 0x5df3, 0x5e2b, 0x5f99, 0x601d, 0x6368, 0x659c,
+ 0x65af, 0x67f6, 0x67fb, 0x68ad, 0x6b7b, 0x6c99, 0x6cd7, 0x6e23,
+ 0x7009, 0x7345, 0x7802, 0x793e, 0x7940, 0x7960, 0x79c1, 0x7be9,
+ 0x7d17, 0x7d72, 0x8086, 0x820d, 0x838e, 0x84d1, 0x86c7, 0x88df,
+ 0x8a50, 0x8a5e, 0x8b1d, 0x8cdc, 0x8d66, 0x8fad, 0x90aa, 0x98fc,
+ 0x99df, 0x9e9d, 0x524a, 0xf969, 0x6714, 0xf96a,
+ /* 0x5f */
+ 0x5098, 0x522a, 0x5c71, 0x6563, 0x6c55, 0x73ca, 0x7523, 0x759d,
+ 0x7b97, 0x849c, 0x9178, 0x9730, 0x4e77, 0x6492, 0x6bba, 0x715e,
+ 0x85a9, 0x4e09, 0xf96b, 0x6749, 0x68ee, 0x6e17, 0x829f, 0x8518,
+ 0x886b, 0x63f7, 0x6f81, 0x9212, 0x98af, 0x4e0a, 0x50b7, 0x50cf,
+ 0x511f, 0x5546, 0x55aa, 0x5617, 0x5b40, 0x5c19, 0x5ce0, 0x5e38,
+ 0x5e8a, 0x5ea0, 0x5ec2, 0x60f3, 0x6851, 0x6a61, 0x6e58, 0x723d,
+ 0x7240, 0x72c0, 0x76f8, 0x7965, 0x7bb1, 0x7fd4, 0x88f3, 0x89f4,
+ 0x8a73, 0x8c61, 0x8cde, 0x971c, 0x585e, 0x74bd, 0x8cfd, 0x55c7,
+ 0xf96c, 0x7a61, 0x7d22, 0x8272, 0x7272, 0x751f, 0x7525, 0xf96d,
+ 0x7b19, 0x5885, 0x58fb, 0x5dbc, 0x5e8f, 0x5eb6, 0x5f90, 0x6055,
+ 0x6292, 0x637f, 0x654d, 0x6691, 0x66d9, 0x66f8, 0x6816, 0x68f2,
+ 0x7280, 0x745e, 0x7b6e, 0x7d6e, 0x7dd6, 0x7f72,
+ /* 0x60 */
+ 0x80e5, 0x8212, 0x85af, 0x897f, 0x8a93, 0x901d, 0x92e4, 0x9ecd,
+ 0x9f20, 0x5915, 0x596d, 0x5e2d, 0x60dc, 0x6614, 0x6673, 0x6790,
+ 0x6c50, 0x6dc5, 0x6f5f, 0x77f3, 0x78a9, 0x84c6, 0x91cb, 0x932b,
+ 0x4ed9, 0x50ca, 0x5148, 0x5584, 0x5b0b, 0x5ba3, 0x6247, 0x657e,
+ 0x65cb, 0x6e32, 0x717d, 0x7401, 0x7444, 0x7487, 0x74bf, 0x766c,
+ 0x79aa, 0x7dda, 0x7e55, 0x7fa8, 0x817a, 0x81b3, 0x8239, 0x861a,
+ 0x87ec, 0x8a75, 0x8de3, 0x9078, 0x9291, 0x9425, 0x994d, 0x9bae,
+ 0x5368, 0x5c51, 0x6954, 0x6cc4, 0x6d29, 0x6e2b, 0x820c, 0x859b,
+ 0x893b, 0x8a2d, 0x8aaa, 0x96ea, 0x9f67, 0x5261, 0x66b9, 0x6bb2,
+ 0x7e96, 0x87fe, 0x8d0d, 0x9583, 0x965d, 0x651d, 0x6d89, 0x71ee,
+ 0xf96e, 0x57ce, 0x59d3, 0x5bac, 0x6027, 0x60fa, 0x6210, 0x661f,
+ 0x665f, 0x7329, 0x73f9, 0x76db, 0x7701, 0x7b6c,
+ /* 0x61 */
+ 0x8056, 0x8072, 0x8165, 0x8aa0, 0x9192, 0x4e16, 0x52e2, 0x6b72,
+ 0x6d17, 0x7a05, 0x7b39, 0x7d30, 0xf96f, 0x8cb0, 0x53ec, 0x562f,
+ 0x5851, 0x5bb5, 0x5c0f, 0x5c11, 0x5de2, 0x6240, 0x6383, 0x6414,
+ 0x662d, 0x68b3, 0x6cbc, 0x6d88, 0x6eaf, 0x701f, 0x70a4, 0x71d2,
+ 0x7526, 0x758f, 0x758e, 0x7619, 0x7b11, 0x7be0, 0x7c2b, 0x7d20,
+ 0x7d39, 0x852c, 0x856d, 0x8607, 0x8a34, 0x900d, 0x9061, 0x90b5,
+ 0x92b7, 0x97f6, 0x9a37, 0x4fd7, 0x5c6c, 0x675f, 0x6d91, 0x7c9f,
+ 0x7e8c, 0x8b16, 0x8d16, 0x901f, 0x5b6b, 0x5dfd, 0x640d, 0x84c0,
+ 0x905c, 0x98e1, 0x7387, 0x5b8b, 0x609a, 0x677e, 0x6dde, 0x8a1f,
+ 0x8aa6, 0x9001, 0x980c, 0x5237, 0xf970, 0x7051, 0x788e, 0x9396,
+ 0x8870, 0x91d7, 0x4fee, 0x53d7, 0x55fd, 0x56da, 0x5782, 0x58fd,
+ 0x5ac2, 0x5b88, 0x5cab, 0x5cc0, 0x5e25, 0x6101,
+ /* 0x62 */
+ 0x620d, 0x624b, 0x6388, 0x641c, 0x6536, 0x6578, 0x6a39, 0x6b8a,
+ 0x6c34, 0x6d19, 0x6f31, 0x71e7, 0x72e9, 0x7378, 0x7407, 0x74b2,
+ 0x7626, 0x7761, 0x79c0, 0x7a57, 0x7aea, 0x7cb9, 0x7d8f, 0x7dac,
+ 0x7e61, 0x7f9e, 0x8129, 0x8331, 0x8490, 0x84da, 0x85ea, 0x8896,
+ 0x8ab0, 0x8b90, 0x8f38, 0x9042, 0x9083, 0x916c, 0x9296, 0x92b9,
+ 0x968b, 0x96a7, 0x96a8, 0x96d6, 0x9700, 0x9808, 0x9996, 0x9ad3,
+ 0x9b1a, 0x53d4, 0x587e, 0x5919, 0x5b70, 0x5bbf, 0x6dd1, 0x6f5a,
+ 0x719f, 0x7421, 0x74b9, 0x8085, 0x83fd, 0x5de1, 0x5f87, 0x5faa,
+ 0x6042, 0x65ec, 0x6812, 0x696f, 0x6a53, 0x6b89, 0x6d35, 0x6df3,
+ 0x73e3, 0x76fe, 0x77ac, 0x7b4d, 0x7d14, 0x8123, 0x821c, 0x8340,
+ 0x84f4, 0x8563, 0x8a62, 0x8ac4, 0x9187, 0x931e, 0x9806, 0x99b4,
+ 0x620c, 0x8853, 0x8ff0, 0x9265, 0x5d07, 0x5d27,
+ /* 0x63 */
+ 0x5d69, 0x745f, 0x819d, 0x8768, 0x6fd5, 0x62fe, 0x7fd2, 0x8936,
+ 0x8972, 0x4e1e, 0x4e58, 0x50e7, 0x52dd, 0x5347, 0x627f, 0x6607,
+ 0x7e69, 0x8805, 0x965e, 0x4f8d, 0x5319, 0x5636, 0x59cb, 0x5aa4,
+ 0x5c38, 0x5c4e, 0x5c4d, 0x5e02, 0x5f11, 0x6043, 0x65bd, 0x662f,
+ 0x6642, 0x67be, 0x67f4, 0x731c, 0x77e2, 0x793a, 0x7fc5, 0x8494,
+ 0x84cd, 0x8996, 0x8a66, 0x8a69, 0x8ae1, 0x8c55, 0x8c7a, 0x57f4,
+ 0x5bd4, 0x5f0f, 0x606f, 0x62ed, 0x690d, 0x6b96, 0x6e5c, 0x7184,
+ 0x7bd2, 0x8755, 0x8b58, 0x8efe, 0x98df, 0x98fe, 0x4f38, 0x4f81,
+ 0x4fe1, 0x547b, 0x5a20, 0x5bb8, 0x613c, 0x65b0, 0x6668, 0x71fc,
+ 0x7533, 0x795e, 0x7d33, 0x814e, 0x81e3, 0x8398, 0x85aa, 0x85ce,
+ 0x8703, 0x8a0a, 0x8eab, 0x8f9b, 0xf971, 0x8fc5, 0x5931, 0x5ba4,
+ 0x5be6, 0x6089, 0x5be9, 0x5c0b, 0x5fc3, 0x6c81,
+ /* 0x64 */
+ 0xf972, 0x6df1, 0x700b, 0x751a, 0x82af, 0x8af6, 0x4ec0, 0x5341,
+ 0xf973, 0x96d9, 0x6c0f, 0x4e9e, 0x4fc4, 0x5152, 0x555e, 0x5a25,
+ 0x5ce8, 0x6211, 0x7259, 0x82bd, 0x83aa, 0x86fe, 0x8859, 0x8a1d,
+ 0x963f, 0x96c5, 0x9913, 0x9d09, 0x9d5d, 0x580a, 0x5cb3, 0x5dbd,
+ 0x5e44, 0x60e1, 0x6115, 0x63e1, 0x6a02, 0x6e25, 0x9102, 0x9354,
+ 0x984e, 0x9c10, 0x9f77, 0x5b89, 0x5cb8, 0x6309, 0x664f, 0x6848,
+ 0x773c, 0x96c1, 0x978d, 0x9854, 0x9b9f, 0x65a1, 0x8b01, 0x8ecb,
+ 0x95bc, 0x5535, 0x5ca9, 0x5dd6, 0x5eb5, 0x6697, 0x764c, 0x83f4,
+ 0x95c7, 0x58d3, 0x62bc, 0x72ce, 0x9d28, 0x4ef0, 0x592e, 0x600f,
+ 0x663b, 0x6b83, 0x79e7, 0x9d26, 0x5393, 0x54c0, 0x57c3, 0x5d16,
+ 0x611b, 0x66d6, 0x6daf, 0x788d, 0x827e, 0x9698, 0x9744, 0x5384,
+ 0x627c, 0x6396, 0x6db2, 0x7e0a, 0x814b, 0x984d,
+ /* 0x65 */
+ 0x6afb, 0x7f4c, 0x9daf, 0x9e1a, 0x4e5f, 0x503b, 0x51b6, 0x591c,
+ 0x60f9, 0x63f6, 0x6930, 0x723a, 0x8036, 0xf974, 0x91ce, 0x5f31,
+ 0xf975, 0xf976, 0x7d04, 0x82e5, 0x846f, 0x84bb, 0x85e5, 0x8e8d,
+ 0xf977, 0x4f6f, 0xf978, 0xf979, 0x58e4, 0x5b43, 0x6059, 0x63da,
+ 0x6518, 0x656d, 0x6698, 0xf97a, 0x694a, 0x6a23, 0x6d0b, 0x7001,
+ 0x716c, 0x75d2, 0x760d, 0x79b3, 0x7a70, 0xf97b, 0x7f8a, 0xf97c,
+ 0x8944, 0xf97d, 0x8b93, 0x91c0, 0x967d, 0xf97e, 0x990a, 0x5704,
+ 0x5fa1, 0x65bc, 0x6f01, 0x7600, 0x79a6, 0x8a9e, 0x99ad, 0x9b5a,
+ 0x9f6c, 0x5104, 0x61b6, 0x6291, 0x6a8d, 0x81c6, 0x5043, 0x5830,
+ 0x5f66, 0x7109, 0x8a00, 0x8afa, 0x5b7c, 0x8616, 0x4ffa, 0x513c,
+ 0x56b4, 0x5944, 0x63a9, 0x6df9, 0x5daa, 0x696d, 0x5186, 0x4e88,
+ 0x4f59, 0xf97f, 0xf980, 0xf981, 0x5982, 0xf982,
+ /* 0x66 */
+ 0xf983, 0x6b5f, 0x6c5d, 0xf984, 0x74b5, 0x7916, 0xf985, 0x8207,
+ 0x8245, 0x8339, 0x8f3f, 0x8f5d, 0xf986, 0x9918, 0xf987, 0xf988,
+ 0xf989, 0x4ea6, 0xf98a, 0x57df, 0x5f79, 0x6613, 0xf98b, 0xf98c,
+ 0x75ab, 0x7e79, 0x8b6f, 0xf98d, 0x9006, 0x9a5b, 0x56a5, 0x5827,
+ 0x59f8, 0x5a1f, 0x5bb4, 0xf98e, 0x5ef6, 0xf98f, 0xf990, 0x6350,
+ 0x633b, 0xf991, 0x693d, 0x6c87, 0x6cbf, 0x6d8e, 0x6d93, 0x6df5,
+ 0x6f14, 0xf992, 0x70df, 0x7136, 0x7159, 0xf993, 0x71c3, 0x71d5,
+ 0xf994, 0x784f, 0x786f, 0xf995, 0x7b75, 0x7de3, 0xf996, 0x7e2f,
+ 0xf997, 0x884d, 0x8edf, 0xf998, 0xf999, 0xf99a, 0x925b, 0xf99b,
+ 0x9cf6, 0xf99c, 0xf99d, 0xf99e, 0x6085, 0x6d85, 0xf99f, 0x71b1,
+ 0xf9a0, 0xf9a1, 0x95b1, 0x53ad, 0xf9a2, 0xf9a3, 0xf9a4, 0x67d3,
+ 0xf9a5, 0x708e, 0x7130, 0x7430, 0x8276, 0x82d2,
+ /* 0x67 */
+ 0xf9a6, 0x95bb, 0x9ae5, 0x9e7d, 0x66c4, 0xf9a7, 0x71c1, 0x8449,
+ 0xf9a8, 0xf9a9, 0x584b, 0xf9aa, 0xf9ab, 0x5db8, 0x5f71, 0xf9ac,
+ 0x6620, 0x668e, 0x6979, 0x69ae, 0x6c38, 0x6cf3, 0x6e36, 0x6f41,
+ 0x6fda, 0x701b, 0x702f, 0x7150, 0x71df, 0x7370, 0xf9ad, 0x745b,
+ 0xf9ae, 0x74d4, 0x76c8, 0x7a4e, 0x7e93, 0xf9af, 0xf9b0, 0x82f1,
+ 0x8a60, 0x8fce, 0xf9b1, 0x9348, 0xf9b2, 0x9719, 0xf9b3, 0xf9b4,
+ 0x4e42, 0x502a, 0xf9b5, 0x5208, 0x53e1, 0x66f3, 0x6c6d, 0x6fca,
+ 0x730a, 0x777f, 0x7a62, 0x82ae, 0x85dd, 0x8602, 0xf9b6, 0x88d4,
+ 0x8a63, 0x8b7d, 0x8c6b, 0xf9b7, 0x92b3, 0xf9b8, 0x9713, 0x9810,
+ 0x4e94, 0x4f0d, 0x4fc9, 0x50b2, 0x5348, 0x543e, 0x5433, 0x55da,
+ 0x5862, 0x58ba, 0x5967, 0x5a1b, 0x5be4, 0x609f, 0xf9b9, 0x61ca,
+ 0x6556, 0x65ff, 0x6664, 0x68a7, 0x6c5a, 0x6fb3,
+ /* 0x68 */
+ 0x70cf, 0x71ac, 0x7352, 0x7b7d, 0x8708, 0x8aa4, 0x9c32, 0x9f07,
+ 0x5c4b, 0x6c83, 0x7344, 0x7389, 0x923a, 0x6eab, 0x7465, 0x761f,
+ 0x7a69, 0x7e15, 0x860a, 0x5140, 0x58c5, 0x64c1, 0x74ee, 0x7515,
+ 0x7670, 0x7fc1, 0x9095, 0x96cd, 0x9954, 0x6e26, 0x74e6, 0x7aa9,
+ 0x7aaa, 0x81e5, 0x86d9, 0x8778, 0x8a1b, 0x5a49, 0x5b8c, 0x5b9b,
+ 0x68a1, 0x6900, 0x6d63, 0x73a9, 0x7413, 0x742c, 0x7897, 0x7de9,
+ 0x7feb, 0x8118, 0x8155, 0x839e, 0x8c4c, 0x962e, 0x9811, 0x66f0,
+ 0x5f80, 0x65fa, 0x6789, 0x6c6a, 0x738b, 0x502d, 0x5a03, 0x6b6a,
+ 0x77ee, 0x5916, 0x5d6c, 0x5dcd, 0x7325, 0x754f, 0xf9ba, 0xf9bb,
+ 0x50e5, 0x51f9, 0x582f, 0x592d, 0x5996, 0x59da, 0x5be5, 0xf9bc,
+ 0xf9bd, 0x5da2, 0x62d7, 0x6416, 0x6493, 0x64fe, 0xf9be, 0x66dc,
+ 0xf9bf, 0x6a48, 0xf9c0, 0x71ff, 0x7464, 0xf9c1,
+ /* 0x69 */
+ 0x7a88, 0x7aaf, 0x7e47, 0x7e5e, 0x8000, 0x8170, 0xf9c2, 0x87ef,
+ 0x8981, 0x8b20, 0x9059, 0xf9c3, 0x9080, 0x9952, 0x617e, 0x6b32,
+ 0x6d74, 0x7e1f, 0x8925, 0x8fb1, 0x4fd1, 0x50ad, 0x5197, 0x52c7,
+ 0x57c7, 0x5889, 0x5bb9, 0x5eb8, 0x6142, 0x6995, 0x6d8c, 0x6e67,
+ 0x6eb6, 0x7194, 0x7462, 0x7528, 0x752c, 0x8073, 0x8338, 0x84c9,
+ 0x8e0a, 0x9394, 0x93de, 0xf9c4, 0x4e8e, 0x4f51, 0x5076, 0x512a,
+ 0x53c8, 0x53cb, 0x53f3, 0x5b87, 0x5bd3, 0x5c24, 0x611a, 0x6182,
+ 0x65f4, 0x725b, 0x7397, 0x7440, 0x76c2, 0x7950, 0x7991, 0x79b9,
+ 0x7d06, 0x7fbd, 0x828b, 0x85d5, 0x865e, 0x8fc2, 0x9047, 0x90f5,
+ 0x91ea, 0x9685, 0x96e8, 0x96e9, 0x52d6, 0x5f67, 0x65ed, 0x6631,
+ 0x682f, 0x715c, 0x7a36, 0x90c1, 0x980a, 0x4e91, 0xf9c5, 0x6a52,
+ 0x6b9e, 0x6f90, 0x7189, 0x8018, 0x82b8, 0x8553,
+ /* 0x6a */
+ 0x904b, 0x9695, 0x96f2, 0x97fb, 0x851a, 0x9b31, 0x4e90, 0x718a,
+ 0x96c4, 0x5143, 0x539f, 0x54e1, 0x5713, 0x5712, 0x57a3, 0x5a9b,
+ 0x5ac4, 0x5bc3, 0x6028, 0x613f, 0x63f4, 0x6c85, 0x6d39, 0x6e72,
+ 0x6e90, 0x7230, 0x733f, 0x7457, 0x82d1, 0x8881, 0x8f45, 0x9060,
+ 0xf9c6, 0x9662, 0x9858, 0x9d1b, 0x6708, 0x8d8a, 0x925e, 0x4f4d,
+ 0x5049, 0x50de, 0x5371, 0x570d, 0x59d4, 0x5a01, 0x5c09, 0x6170,
+ 0x6690, 0x6e2d, 0x7232, 0x744b, 0x7def, 0x80c3, 0x840e, 0x8466,
+ 0x853f, 0x875f, 0x885b, 0x8918, 0x8b02, 0x9055, 0x97cb, 0x9b4f,
+ 0x4e73, 0x4f91, 0x5112, 0x516a, 0xf9c7, 0x552f, 0x55a9, 0x5b7a,
+ 0x5ba5, 0x5e7c, 0x5e7d, 0x5ebe, 0x60a0, 0x60df, 0x6108, 0x6109,
+ 0x63c4, 0x6538, 0x6709, 0xf9c8, 0x67d4, 0x67da, 0xf9c9, 0x6961,
+ 0x6962, 0x6cb9, 0x6d27, 0xf9ca, 0x6e38, 0xf9cb,
+ /* 0x6b */
+ 0x6fe1, 0x7336, 0x7337, 0xf9cc, 0x745c, 0x7531, 0xf9cd, 0x7652,
+ 0xf9ce, 0xf9cf, 0x7dad, 0x81fe, 0x8438, 0x88d5, 0x8a98, 0x8adb,
+ 0x8aed, 0x8e30, 0x8e42, 0x904a, 0x903e, 0x907a, 0x9149, 0x91c9,
+ 0x936e, 0xf9d0, 0xf9d1, 0x5809, 0xf9d2, 0x6bd3, 0x8089, 0x80b2,
+ 0xf9d3, 0xf9d4, 0x5141, 0x596b, 0x5c39, 0xf9d5, 0xf9d6, 0x6f64,
+ 0x73a7, 0x80e4, 0x8d07, 0xf9d7, 0x9217, 0x958f, 0xf9d8, 0xf9d9,
+ 0xf9da, 0xf9db, 0x807f, 0x620e, 0x701c, 0x7d68, 0x878d, 0xf9dc,
+ 0x57a0, 0x6069, 0x6147, 0x6bb7, 0x8abe, 0x9280, 0x96b1, 0x4e59,
+ 0x541f, 0x6deb, 0x852d, 0x9670, 0x97f3, 0x98ee, 0x63d6, 0x6ce3,
+ 0x9091, 0x51dd, 0x61c9, 0x81ba, 0x9df9, 0x4f9d, 0x501a, 0x5100,
+ 0x5b9c, 0x610f, 0x61ff, 0x64ec, 0x6905, 0x6bc5, 0x7591, 0x77e3,
+ 0x7fa9, 0x8264, 0x858f, 0x87fb, 0x8863, 0x8abc,
+ /* 0x6c */
+ 0x8b70, 0x91ab, 0x4e8c, 0x4ee5, 0x4f0a, 0xf9dd, 0xf9de, 0x5937,
+ 0x59e8, 0xf9df, 0x5df2, 0x5f1b, 0x5f5b, 0x6021, 0xf9e0, 0xf9e1,
+ 0xf9e2, 0xf9e3, 0x723e, 0x73e5, 0xf9e4, 0x7570, 0x75cd, 0xf9e5,
+ 0x79fb, 0xf9e6, 0x800c, 0x8033, 0x8084, 0x82e1, 0x8351, 0xf9e7,
+ 0xf9e8, 0x8cbd, 0x8cb3, 0x9087, 0xf9e9, 0xf9ea, 0x98f4, 0x990c,
+ 0xf9eb, 0xf9ec, 0x7037, 0x76ca, 0x7fca, 0x7fcc, 0x7ffc, 0x8b1a,
+ 0x4eba, 0x4ec1, 0x5203, 0x5370, 0xf9ed, 0x54bd, 0x56e0, 0x59fb,
+ 0x5bc5, 0x5f15, 0x5fcd, 0x6e6e, 0xf9ee, 0xf9ef, 0x7d6a, 0x8335,
+ 0xf9f0, 0x8693, 0x8a8d, 0xf9f1, 0x976d, 0x9777, 0xf9f2, 0xf9f3,
+ 0x4e00, 0x4f5a, 0x4f7e, 0x58f9, 0x65e5, 0x6ea2, 0x9038, 0x93b0,
+ 0x99b9, 0x4efb, 0x58ec, 0x598a, 0x59d9, 0x6041, 0xf9f4, 0xf9f5,
+ 0x7a14, 0xf9f6, 0x834f, 0x8cc3, 0x5165, 0x5344,
+ /* 0x6d */
+ 0xf9f7, 0xf9f8, 0xf9f9, 0x4ecd, 0x5269, 0x5b55, 0x82bf, 0x4ed4,
+ 0x523a, 0x54a8, 0x59c9, 0x59ff, 0x5b50, 0x5b57, 0x5b5c, 0x6063,
+ 0x6148, 0x6ecb, 0x7099, 0x716e, 0x7386, 0x74f7, 0x75b5, 0x78c1,
+ 0x7d2b, 0x8005, 0x81ea, 0x8328, 0x8517, 0x85c9, 0x8aee, 0x8cc7,
+ 0x96cc, 0x4f5c, 0x52fa, 0x56bc, 0x65ab, 0x6628, 0x707c, 0x70b8,
+ 0x7235, 0x7dbd, 0x828d, 0x914c, 0x96c0, 0x9d72, 0x5b71, 0x68e7,
+ 0x6b98, 0x6f7a, 0x76de, 0x5c91, 0x66ab, 0x6f5b, 0x7bb4, 0x7c2a,
+ 0x8836, 0x96dc, 0x4e08, 0x4ed7, 0x5320, 0x5834, 0x58bb, 0x58ef,
+ 0x596c, 0x5c07, 0x5e33, 0x5e84, 0x5f35, 0x638c, 0x66b2, 0x6756,
+ 0x6a1f, 0x6aa3, 0x6b0c, 0x6f3f, 0x7246, 0xf9fa, 0x7350, 0x748b,
+ 0x7ae0, 0x7ca7, 0x8178, 0x81df, 0x81e7, 0x838a, 0x846c, 0x8523,
+ 0x8594, 0x85cf, 0x88dd, 0x8d13, 0x91ac, 0x9577,
+ /* 0x6e */
+ 0x969c, 0x518d, 0x54c9, 0x5728, 0x5bb0, 0x624d, 0x6750, 0x683d,
+ 0x6893, 0x6e3d, 0x6ed3, 0x707d, 0x7e21, 0x88c1, 0x8ca1, 0x8f09,
+ 0x9f4b, 0x9f4e, 0x722d, 0x7b8f, 0x8acd, 0x931a, 0x4f47, 0x4f4e,
+ 0x5132, 0x5480, 0x59d0, 0x5e95, 0x62b5, 0x6775, 0x696e, 0x6a17,
+ 0x6cae, 0x6e1a, 0x72d9, 0x732a, 0x75bd, 0x7bb8, 0x7d35, 0x82e7,
+ 0x83f9, 0x8457, 0x85f7, 0x8a5b, 0x8caf, 0x8e87, 0x9019, 0x90b8,
+ 0x96ce, 0x9f5f, 0x52e3, 0x540a, 0x5ae1, 0x5bc2, 0x6458, 0x6575,
+ 0x6ef4, 0x72c4, 0xf9fb, 0x7684, 0x7a4d, 0x7b1b, 0x7c4d, 0x7e3e,
+ 0x7fdf, 0x837b, 0x8b2b, 0x8cca, 0x8d64, 0x8de1, 0x8e5f, 0x8fea,
+ 0x8ff9, 0x9069, 0x93d1, 0x4f43, 0x4f7a, 0x50b3, 0x5168, 0x5178,
+ 0x524d, 0x526a, 0x5861, 0x587c, 0x5960, 0x5c08, 0x5c55, 0x5edb,
+ 0x609b, 0x6230, 0x6813, 0x6bbf, 0x6c08, 0x6fb1,
+ /* 0x6f */
+ 0x714e, 0x7420, 0x7530, 0x7538, 0x7551, 0x7672, 0x7b4c, 0x7b8b,
+ 0x7bad, 0x7bc6, 0x7e8f, 0x8a6e, 0x8f3e, 0x8f49, 0x923f, 0x9293,
+ 0x9322, 0x942b, 0x96fb, 0x985a, 0x986b, 0x991e, 0x5207, 0x622a,
+ 0x6298, 0x6d59, 0x7664, 0x7aca, 0x7bc0, 0x7d76, 0x5360, 0x5cbe,
+ 0x5e97, 0x6f38, 0x70b9, 0x7c98, 0x9711, 0x9b8e, 0x9ede, 0x63a5,
+ 0x647a, 0x8776, 0x4e01, 0x4e95, 0x4ead, 0x505c, 0x5075, 0x5448,
+ 0x59c3, 0x5b9a, 0x5e40, 0x5ead, 0x5ef7, 0x5f81, 0x60c5, 0x633a,
+ 0x653f, 0x6574, 0x65cc, 0x6676, 0x6678, 0x67fe, 0x6968, 0x6a89,
+ 0x6b63, 0x6c40, 0x6dc0, 0x6de8, 0x6e1f, 0x6e5e, 0x701e, 0x70a1,
+ 0x738e, 0x73fd, 0x753a, 0x775b, 0x7887, 0x798e, 0x7a0b, 0x7a7d,
+ 0x7cbe, 0x7d8e, 0x8247, 0x8a02, 0x8aea, 0x8c9e, 0x912d, 0x914a,
+ 0x91d8, 0x9266, 0x92cc, 0x9320, 0x9706, 0x9756,
+ /* 0x70 */
+ 0x975c, 0x9802, 0x9f0e, 0x5236, 0x5291, 0x557c, 0x5824, 0x5e1d,
+ 0x5f1f, 0x608c, 0x63d0, 0x68af, 0x6fdf, 0x796d, 0x7b2c, 0x81cd,
+ 0x85ba, 0x88fd, 0x8af8, 0x8e44, 0x918d, 0x9664, 0x969b, 0x973d,
+ 0x984c, 0x9f4a, 0x4fce, 0x5146, 0x51cb, 0x52a9, 0x5632, 0x5f14,
+ 0x5f6b, 0x63aa, 0x64cd, 0x65e9, 0x6641, 0x66fa, 0x66f9, 0x671d,
+ 0x689d, 0x68d7, 0x69fd, 0x6f15, 0x6f6e, 0x7167, 0x71e5, 0x722a,
+ 0x74aa, 0x773a, 0x7956, 0x795a, 0x79df, 0x7a20, 0x7a95, 0x7c97,
+ 0x7cdf, 0x7d44, 0x7e70, 0x8087, 0x85fb, 0x86a4, 0x8a54, 0x8abf,
+ 0x8d99, 0x8e81, 0x9020, 0x906d, 0x91e3, 0x963b, 0x96d5, 0x9ce5,
+ 0x65cf, 0x7c07, 0x8db3, 0x93c3, 0x5b58, 0x5c0a, 0x5352, 0x62d9,
+ 0x731d, 0x5027, 0x5b97, 0x5f9e, 0x60b0, 0x616b, 0x68d5, 0x6dd9,
+ 0x742e, 0x7a2e, 0x7d42, 0x7d9c, 0x7e31, 0x816b,
+ /* 0x71 */
+ 0x8e2a, 0x8e35, 0x937e, 0x9418, 0x4f50, 0x5750, 0x5de6, 0x5ea7,
+ 0x632b, 0x7f6a, 0x4e3b, 0x4f4f, 0x4f8f, 0x505a, 0x59dd, 0x80c4,
+ 0x546a, 0x5468, 0x55fe, 0x594f, 0x5b99, 0x5dde, 0x5eda, 0x665d,
+ 0x6731, 0x67f1, 0x682a, 0x6ce8, 0x6d32, 0x6e4a, 0x6f8d, 0x70b7,
+ 0x73e0, 0x7587, 0x7c4c, 0x7d02, 0x7d2c, 0x7da2, 0x821f, 0x86db,
+ 0x8a3b, 0x8a85, 0x8d70, 0x8e8a, 0x8f33, 0x9031, 0x914e, 0x9152,
+ 0x9444, 0x99d0, 0x7af9, 0x7ca5, 0x4fca, 0x5101, 0x51c6, 0x57c8,
+ 0x5bef, 0x5cfb, 0x6659, 0x6a3d, 0x6d5a, 0x6e96, 0x6fec, 0x710c,
+ 0x756f, 0x7ae3, 0x8822, 0x9021, 0x9075, 0x96cb, 0x99ff, 0x8301,
+ 0x4e2d, 0x4ef2, 0x8846, 0x91cd, 0x537d, 0x6adb, 0x696b, 0x6c41,
+ 0x847a, 0x589e, 0x618e, 0x66fe, 0x62ef, 0x70dd, 0x7511, 0x75c7,
+ 0x7e52, 0x84b8, 0x8b49, 0x8d08, 0x4e4b, 0x53ea,
+ /* 0x72 */
+ 0x54ab, 0x5730, 0x5740, 0x5fd7, 0x6301, 0x6307, 0x646f, 0x652f,
+ 0x65e8, 0x667a, 0x679d, 0x67b3, 0x6b62, 0x6c60, 0x6c9a, 0x6f2c,
+ 0x77e5, 0x7825, 0x7949, 0x7957, 0x7d19, 0x80a2, 0x8102, 0x81f3,
+ 0x829d, 0x82b7, 0x8718, 0x8a8c, 0xf9fc, 0x8d04, 0x8dbe, 0x9072,
+ 0x76f4, 0x7a19, 0x7a37, 0x7e54, 0x8077, 0x5507, 0x55d4, 0x5875,
+ 0x632f, 0x6422, 0x6649, 0x664b, 0x686d, 0x699b, 0x6b84, 0x6d25,
+ 0x6eb1, 0x73cd, 0x7468, 0x74a1, 0x755b, 0x75b9, 0x76e1, 0x771e,
+ 0x778b, 0x79e6, 0x7e09, 0x7e1d, 0x81fb, 0x852f, 0x8897, 0x8a3a,
+ 0x8cd1, 0x8eeb, 0x8fb0, 0x9032, 0x93ad, 0x9663, 0x9673, 0x9707,
+ 0x4f84, 0x53f1, 0x59ea, 0x5ac9, 0x5e19, 0x684e, 0x74c6, 0x75be,
+ 0x79e9, 0x7a92, 0x81a3, 0x86ed, 0x8cea, 0x8dcc, 0x8fed, 0x659f,
+ 0x6715, 0xf9fd, 0x57f7, 0x6f57, 0x7ddd, 0x8f2f,
+ /* 0x73 */
+ 0x93f6, 0x96c6, 0x5fb5, 0x61f2, 0x6f84, 0x4e14, 0x4f98, 0x501f,
+ 0x53c9, 0x55df, 0x5d6f, 0x5dee, 0x6b21, 0x6b64, 0x78cb, 0x7b9a,
+ 0xf9fe, 0x8e49, 0x8eca, 0x906e, 0x6349, 0x643e, 0x7740, 0x7a84,
+ 0x932f, 0x947f, 0x9f6a, 0x64b0, 0x6faf, 0x71e6, 0x74a8, 0x74da,
+ 0x7ac4, 0x7c12, 0x7e82, 0x7cb2, 0x7e98, 0x8b9a, 0x8d0a, 0x947d,
+ 0x9910, 0x994c, 0x5239, 0x5bdf, 0x64e6, 0x672d, 0x7d2e, 0x50ed,
+ 0x53c3, 0x5879, 0x6158, 0x6159, 0x61fa, 0x65ac, 0x7ad9, 0x8b92,
+ 0x8b96, 0x5009, 0x5021, 0x5275, 0x5531, 0x5a3c, 0x5ee0, 0x5f70,
+ 0x6134, 0x655e, 0x660c, 0x6636, 0x66a2, 0x69cd, 0x6ec4, 0x6f32,
+ 0x7316, 0x7621, 0x7a93, 0x8139, 0x8259, 0x83d6, 0x84bc, 0x50b5,
+ 0x57f0, 0x5bc0, 0x5be8, 0x5f69, 0x63a1, 0x7826, 0x7db5, 0x83dc,
+ 0x8521, 0x91c7, 0x91f5, 0x518a, 0x67f5, 0x7b56,
+ /* 0x74 */
+ 0x8cac, 0x51c4, 0x59bb, 0x60bd, 0x8655, 0x501c, 0xf9ff, 0x5254,
+ 0x5c3a, 0x617d, 0x621a, 0x62d3, 0x64f2, 0x65a5, 0x6ecc, 0x7620,
+ 0x810a, 0x8e60, 0x965f, 0x96bb, 0x4edf, 0x5343, 0x5598, 0x5929,
+ 0x5ddd, 0x64c5, 0x6cc9, 0x6dfa, 0x7394, 0x7a7f, 0x821b, 0x85a6,
+ 0x8ce4, 0x8e10, 0x9077, 0x91e7, 0x95e1, 0x9621, 0x97c6, 0x51f8,
+ 0x54f2, 0x5586, 0x5fb9, 0x64a4, 0x6f88, 0x7db4, 0x8f1f, 0x8f4d,
+ 0x9435, 0x50c9, 0x5c16, 0x6cbe, 0x6dfb, 0x751b, 0x77bb, 0x7c3d,
+ 0x7c64, 0x8a79, 0x8ac2, 0x581e, 0x59be, 0x5e16, 0x6377, 0x7252,
+ 0x758a, 0x776b, 0x8adc, 0x8cbc, 0x8f12, 0x5ef3, 0x6674, 0x6df8,
+ 0x807d, 0x83c1, 0x8acb, 0x9751, 0x9bd6, 0xfa00, 0x5243, 0x66ff,
+ 0x6d95, 0x6eef, 0x7de0, 0x8ae6, 0x902e, 0x905e, 0x9ad4, 0x521d,
+ 0x527f, 0x54e8, 0x6194, 0x6284, 0x62db, 0x68a2,
+ /* 0x75 */
+ 0x6912, 0x695a, 0x6a35, 0x7092, 0x7126, 0x785d, 0x7901, 0x790e,
+ 0x79d2, 0x7a0d, 0x8096, 0x8278, 0x82d5, 0x8349, 0x8549, 0x8c82,
+ 0x8d85, 0x9162, 0x918b, 0x91ae, 0x4fc3, 0x56d1, 0x71ed, 0x77d7,
+ 0x8700, 0x89f8, 0x5bf8, 0x5fd6, 0x6751, 0x90a8, 0x53e2, 0x585a,
+ 0x5bf5, 0x60a4, 0x6181, 0x6460, 0x7e3d, 0x8070, 0x8525, 0x9283,
+ 0x64ae, 0x50ac, 0x5d14, 0x6700, 0x589c, 0x62bd, 0x63a8, 0x690e,
+ 0x6978, 0x6a1e, 0x6e6b, 0x76ba, 0x79cb, 0x82bb, 0x8429, 0x8acf,
+ 0x8da8, 0x8ffd, 0x9112, 0x914b, 0x919c, 0x9310, 0x9318, 0x939a,
+ 0x96db, 0x9a36, 0x9c0d, 0x4e11, 0x755c, 0x795d, 0x7afa, 0x7b51,
+ 0x7bc9, 0x7e2e, 0x84c4, 0x8e59, 0x8e74, 0x8ef8, 0x9010, 0x6625,
+ 0x693f, 0x7443, 0x51fa, 0x672e, 0x9edc, 0x5145, 0x5fe0, 0x6c96,
+ 0x87f2, 0x885d, 0x8877, 0x60b4, 0x81b5, 0x8403,
+ /* 0x76 */
+ 0x8d05, 0x53d6, 0x5439, 0x5634, 0x5a36, 0x5c31, 0x708a, 0x7fe0,
+ 0x805a, 0x8106, 0x81ed, 0x8da3, 0x9189, 0x9a5f, 0x9df2, 0x5074,
+ 0x4ec4, 0x53a0, 0x60fb, 0x6e2c, 0x5c64, 0x4f88, 0x5024, 0x55e4,
+ 0x5cd9, 0x5e5f, 0x6065, 0x6894, 0x6cbb, 0x6dc4, 0x71be, 0x75d4,
+ 0x75f4, 0x7661, 0x7a1a, 0x7a49, 0x7dc7, 0x7dfb, 0x7f6e, 0x81f4,
+ 0x86a9, 0x8f1c, 0x96c9, 0x99b3, 0x9f52, 0x5247, 0x52c5, 0x98ed,
+ 0x89aa, 0x4e03, 0x67d2, 0x6f06, 0x4fb5, 0x5be2, 0x6795, 0x6c88,
+ 0x6d78, 0x741b, 0x7827, 0x91dd, 0x937c, 0x87c4, 0x79e4, 0x7a31,
+ 0x5feb, 0x4ed6, 0x54a4, 0x553e, 0x58ae, 0x59a5, 0x60f0, 0x6253,
+ 0x62d6, 0x6736, 0x6955, 0x8235, 0x9640, 0x99b1, 0x99dd, 0x502c,
+ 0x5353, 0x5544, 0x577c, 0xfa01, 0x6258, 0xfa02, 0x64e2, 0x666b,
+ 0x67dd, 0x6fc1, 0x6fef, 0x7422, 0x7438, 0x8a17,
+ /* 0x77 */
+ 0x9438, 0x5451, 0x5606, 0x5766, 0x5f48, 0x619a, 0x6b4e, 0x7058,
+ 0x70ad, 0x7dbb, 0x8a95, 0x596a, 0x812b, 0x63a2, 0x7708, 0x803d,
+ 0x8caa, 0x5854, 0x642d, 0x69bb, 0x5b95, 0x5e11, 0x6e6f, 0xfa03,
+ 0x8569, 0x514c, 0x53f0, 0x592a, 0x6020, 0x614b, 0x6b86, 0x6c70,
+ 0x6cf0, 0x7b1e, 0x80ce, 0x82d4, 0x8dc6, 0x90b0, 0x98b1, 0xfa04,
+ 0x64c7, 0x6fa4, 0x6491, 0x6504, 0x514e, 0x5410, 0x571f, 0x8a0e,
+ 0x615f, 0x6876, 0xfa05, 0x75db, 0x7b52, 0x7d71, 0x901a, 0x5806,
+ 0x69cc, 0x817f, 0x892a, 0x9000, 0x9839, 0x5078, 0x5957, 0x59ac,
+ 0x6295, 0x900f, 0x9b2a, 0x615d, 0x7279, 0x95d6, 0x5761, 0x5a46,
+ 0x5df4, 0x628a, 0x64ad, 0x64fa, 0x6777, 0x6ce2, 0x6d3e, 0x722c,
+ 0x7436, 0x7834, 0x7f77, 0x82ad, 0x8ddb, 0x9817, 0x5224, 0x5742,
+ 0x677f, 0x7248, 0x74e3, 0x8ca9, 0x8fa6, 0x9211,
+ /* 0x78 */
+ 0x962a, 0x516b, 0x53ed, 0x634c, 0x4f69, 0x5504, 0x6096, 0x6557,
+ 0x6c9b, 0x6d7f, 0x724c, 0x72fd, 0x7a17, 0x8987, 0x8c9d, 0x5f6d,
+ 0x6f8e, 0x70f9, 0x81a8, 0x610e, 0x4fbf, 0x504f, 0x6241, 0x7247,
+ 0x7bc7, 0x7de8, 0x7fe9, 0x904d, 0x97ad, 0x9a19, 0x8cb6, 0x576a,
+ 0x5e73, 0x67b0, 0x840d, 0x8a55, 0x5420, 0x5b16, 0x5e63, 0x5ee2,
+ 0x5f0a, 0x6583, 0x80ba, 0x853d, 0x9589, 0x965b, 0x4f48, 0x5305,
+ 0x530d, 0x530f, 0x5486, 0x54fa, 0x5703, 0x5e03, 0x6016, 0x629b,
+ 0x62b1, 0x6355, 0xfa06, 0x6ce1, 0x6d66, 0x75b1, 0x7832, 0x80de,
+ 0x812f, 0x82de, 0x8461, 0x84b2, 0x888d, 0x8912, 0x900b, 0x92ea,
+ 0x98fd, 0x9b91, 0x5e45, 0x66b4, 0x66dd, 0x7011, 0x7206, 0xfa07,
+ 0x4ff5, 0x527d, 0x5f6a, 0x6153, 0x6753, 0x6a19, 0x6f02, 0x74e2,
+ 0x7968, 0x8868, 0x8c79, 0x98c7, 0x98c4, 0x9a43,
+ /* 0x79 */
+ 0x54c1, 0x7a1f, 0x6953, 0x8af7, 0x8c4a, 0x98a8, 0x99ae, 0x5f7c,
+ 0x62ab, 0x75b2, 0x76ae, 0x88ab, 0x907f, 0x9642, 0x5339, 0x5f3c,
+ 0x5fc5, 0x6ccc, 0x73cc, 0x7562, 0x758b, 0x7b46, 0x82fe, 0x999d,
+ 0x4e4f, 0x903c, 0x4e0b, 0x4f55, 0x53a6, 0x590f, 0x5ec8, 0x6630,
+ 0x6cb3, 0x7455, 0x8377, 0x8766, 0x8cc0, 0x9050, 0x971e, 0x9c15,
+ 0x58d1, 0x5b78, 0x8650, 0x8b14, 0x9db4, 0x5bd2, 0x6068, 0x608d,
+ 0x65f1, 0x6c57, 0x6f22, 0x6fa3, 0x701a, 0x7f55, 0x7ff0, 0x9591,
+ 0x9592, 0x9650, 0x97d3, 0x5272, 0x8f44, 0x51fd, 0x542b, 0x54b8,
+ 0x5563, 0x558a, 0x6abb, 0x6db5, 0x7dd8, 0x8266, 0x929c, 0x9677,
+ 0x9e79, 0x5408, 0x54c8, 0x76d2, 0x86e4, 0x95a4, 0x95d4, 0x965c,
+ 0x4ea2, 0x4f09, 0x59ee, 0x5ae6, 0x5df7, 0x6052, 0x6297, 0x676d,
+ 0x6841, 0x6c86, 0x6e2f, 0x7f38, 0x809b, 0x822a,
+ /* 0x7a */
+ 0xfa08, 0xfa09, 0x9805, 0x4ea5, 0x5055, 0x54b3, 0x5793, 0x595a,
+ 0x5b69, 0x5bb3, 0x61c8, 0x6977, 0x6d77, 0x7023, 0x87f9, 0x89e3,
+ 0x8a72, 0x8ae7, 0x9082, 0x99ed, 0x9ab8, 0x52be, 0x6838, 0x5016,
+ 0x5e78, 0x674f, 0x8347, 0x884c, 0x4eab, 0x5411, 0x56ae, 0x73e6,
+ 0x9115, 0x97ff, 0x9909, 0x9957, 0x9999, 0x5653, 0x589f, 0x865b,
+ 0x8a31, 0x61b2, 0x6af6, 0x737b, 0x8ed2, 0x6b47, 0x96aa, 0x9a57,
+ 0x5955, 0x7200, 0x8d6b, 0x9769, 0x4fd4, 0x5cf4, 0x5f26, 0x61f8,
+ 0x665b, 0x6ceb, 0x70ab, 0x7384, 0x73b9, 0x73fe, 0x7729, 0x774d,
+ 0x7d43, 0x7d62, 0x7e23, 0x8237, 0x8852, 0xfa0a, 0x8ce2, 0x9249,
+ 0x986f, 0x5b51, 0x7a74, 0x8840, 0x9801, 0x5acc, 0x4fe0, 0x5354,
+ 0x593e, 0x5cfd, 0x633e, 0x6d79, 0x72f9, 0x8105, 0x8107, 0x83a2,
+ 0x92cf, 0x9830, 0x4ea8, 0x5144, 0x5211, 0x578b,
+ /* 0x7b */
+ 0x5f62, 0x6cc2, 0x6ece, 0x7005, 0x7050, 0x70af, 0x7192, 0x73e9,
+ 0x7469, 0x834a, 0x87a2, 0x8861, 0x9008, 0x90a2, 0x93a3, 0x99a8,
+ 0x516e, 0x5f57, 0x60e0, 0x6167, 0x66b3, 0x8559, 0x8e4a, 0x91af,
+ 0x978b, 0x4e4e, 0x4e92, 0x547c, 0x58d5, 0x58fa, 0x597d, 0x5cb5,
+ 0x5f27, 0x6236, 0x6248, 0x660a, 0x6667, 0x6beb, 0x6d69, 0x6dcf,
+ 0x6e56, 0x6ef8, 0x6f94, 0x6fe0, 0x6fe9, 0x705d, 0x72d0, 0x7425,
+ 0x745a, 0x74e0, 0x7693, 0x795c, 0x7cca, 0x7e1e, 0x80e1, 0x82a6,
+ 0x846b, 0x84bf, 0x864e, 0x865f, 0x8774, 0x8b77, 0x8c6a, 0x93ac,
+ 0x9800, 0x9865, 0x60d1, 0x6216, 0x9177, 0x5a5a, 0x660f, 0x6df7,
+ 0x6e3e, 0x743f, 0x9b42, 0x5ffd, 0x60da, 0x7b0f, 0x54c4, 0x5f18,
+ 0x6c5e, 0x6cd3, 0x6d2a, 0x70d8, 0x7d05, 0x8679, 0x8a0c, 0x9d3b,
+ 0x5316, 0x548c, 0x5b05, 0x6a3a, 0x706b, 0x7575,
+ /* 0x7c */
+ 0x798d, 0x79be, 0x82b1, 0x83ef, 0x8a71, 0x8b41, 0x8ca8, 0x9774,
+ 0xfa0b, 0x64f4, 0x652b, 0x78ba, 0x78bb, 0x7a6b, 0x4e38, 0x559a,
+ 0x5950, 0x5ba6, 0x5e7b, 0x60a3, 0x63db, 0x6b61, 0x6665, 0x6853,
+ 0x6e19, 0x7165, 0x74b0, 0x7d08, 0x9084, 0x9a69, 0x9c25, 0x6d3b,
+ 0x6ed1, 0x733e, 0x8c41, 0x95ca, 0x51f0, 0x5e4c, 0x5fa8, 0x604d,
+ 0x60f6, 0x6130, 0x614c, 0x6643, 0x6644, 0x69a5, 0x6cc1, 0x6e5f,
+ 0x6ec9, 0x6f62, 0x714c, 0x749c, 0x7687, 0x7bc1, 0x7c27, 0x8352,
+ 0x8757, 0x9051, 0x968d, 0x9ec3, 0x532f, 0x56de, 0x5efb, 0x5f8a,
+ 0x6062, 0x6094, 0x61f7, 0x6666, 0x6703, 0x6a9c, 0x6dee, 0x6fae,
+ 0x7070, 0x736a, 0x7e6a, 0x81be, 0x8334, 0x86d4, 0x8aa8, 0x8cc4,
+ 0x5283, 0x7372, 0x5b96, 0x6a6b, 0x9404, 0x54ee, 0x5686, 0x5b5d,
+ 0x6548, 0x6585, 0x66c9, 0x689f, 0x6d8d, 0x6dc6,
+ /* 0x7d */
+ 0x723b, 0x80b4, 0x9175, 0x9a4d, 0x4faf, 0x5019, 0x539a, 0x540e,
+ 0x543c, 0x5589, 0x55c5, 0x5e3f, 0x5f8c, 0x673d, 0x7166, 0x73dd,
+ 0x9005, 0x52db, 0x52f3, 0x5864, 0x58ce, 0x7104, 0x718f, 0x71fb,
+ 0x85b0, 0x8a13, 0x6688, 0x85a8, 0x55a7, 0x6684, 0x714a, 0x8431,
+ 0x5349, 0x5599, 0x6bc1, 0x5f59, 0x5fbd, 0x63ee, 0x6689, 0x7147,
+ 0x8af1, 0x8f1d, 0x9ebe, 0x4f11, 0x643a, 0x70cb, 0x7566, 0x8667,
+ 0x6064, 0x8b4e, 0x9df8, 0x5147, 0x51f6, 0x5308, 0x6d36, 0x80f8,
+ 0x9ed1, 0x6615, 0x6b23, 0x7098, 0x75d5, 0x5403, 0x5c79, 0x7d07,
+ 0x8a16, 0x6b20, 0x6b3d, 0x6b46, 0x5438, 0x6070, 0x6d3d, 0x7fd5,
+ 0x8208, 0x50d6, 0x51de, 0x559c, 0x566b, 0x56cd, 0x59ec, 0x5b09,
+ 0x5e0c, 0x6199, 0x6198, 0x6231, 0x665e, 0x66e6, 0x7199, 0x71b9,
+ 0x71ba, 0x72a7, 0x79a7, 0x7a00, 0x7fb2, 0x8a70,
+};
+
+static int
+ksc5601_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n)
+{
+ unsigned char c1 = (s[0] & 0x7F);
+ if ((c1 >= 0x21 && c1 <= 0x2c) || (c1 >= 0x30 && c1 <= 0x48) || (c1 >= 0x4a && c1 <= 0x7d)) {
+ if (n >= 2) {
+ unsigned char c2 = (s[1] & 0x7F);
+ if (c2 >= 0x21 && c2 < 0x7f) {
+ unsigned int i = 94 * (c1 - 0x21) + (c2 - 0x21);
+ unsigned short wc = 0xfffd;
+ if (i < 1410) {
+ if (i < 1115)
+ wc = ksc5601_2uni_page21[i];
+ } else if (i < 3854) {
+ if (i < 3760)
+ wc = ksc5601_2uni_page30[i-1410];
+ } else {
+ if (i < 8742)
+ wc = ksc5601_2uni_page4a[i-3854];
+ }
+ if (wc != 0xfffd) {
+ *pwc = (ucs4_t) wc;
+ return 2;
+ }
+ }
+ return RET_ILSEQ;
+ }
+ return RET_TOOFEW(0);
+ }
+ return RET_ILSEQ;
+}
+
+static const unsigned short ksc5601_2charset[8224] = {
+ 0x222e, 0x2234, 0x2157, 0x2127, 0x2823, 0x2129, 0x2146, 0x213e,
+ 0x2977, 0x2978, 0x2225, 0x2252, 0x2124, 0x222c, 0x2976, 0x282c,
+ 0x2879, 0x2876, 0x287a, 0x222f, 0x2821, 0x2822, 0x213f, 0x282a,
+ 0x282d, 0x292c, 0x2921, 0x2923, 0x2140, 0x292a, 0x292d, 0x2922,
+ 0x2824, 0x2924, 0x2925, 0x2826, 0x2926, 0x2927, 0x2828, 0x2928,
+ 0x2829, 0x2929, 0x2930, 0x282f, 0x292f, 0x282b, 0x292b, 0x282e,
+ 0x292e, 0x2227, 0x2230, 0x2228, 0x222b, 0x222a, 0x222d, 0x2229,
+ 0x2541, 0x2542, 0x2543, 0x2544, 0x2545, 0x2546, 0x2547, 0x2548,
+ 0x2549, 0x254a, 0x254b, 0x254c, 0x254d, 0x254e, 0x254f, 0x2550,
+ 0x2551, 0x2552, 0x2553, 0x2554, 0x2555, 0x2556, 0x2557, 0x2558,
+ 0x2561, 0x2562, 0x2563, 0x2564, 0x2565, 0x2566, 0x2567, 0x2568,
+ 0x2569, 0x256a, 0x256b, 0x256c, 0x256d, 0x256e, 0x256f, 0x2570,
+ 0x2571, 0x2572, 0x2573, 0x2574, 0x2575, 0x2576, 0x2577, 0x2578,
+ 0x2c27, 0x2c21, 0x2c22, 0x2c23, 0x2c24, 0x2c25, 0x2c26, 0x2c28,
+ 0x2c29, 0x2c2a, 0x2c2b, 0x2c2c, 0x2c2d, 0x2c2e, 0x2c2f, 0x2c30,
+ 0x2c31, 0x2c32, 0x2c33, 0x2c34, 0x2c35, 0x2c36, 0x2c37, 0x2c38,
+ 0x2c39, 0x2c3a, 0x2c3b, 0x2c3c, 0x2c3d, 0x2c3e, 0x2c3f, 0x2c40,
+ 0x2c41, 0x2c51, 0x2c52, 0x2c53, 0x2c54, 0x2c55, 0x2c56, 0x2c58,
+ 0x2c59, 0x2c5a, 0x2c5b, 0x2c5c, 0x2c5d, 0x2c5e, 0x2c5f, 0x2c60,
+ 0x2c61, 0x2c62, 0x2c63, 0x2c64, 0x2c65, 0x2c66, 0x2c67, 0x2c68,
+ 0x2c69, 0x2c6a, 0x2c6b, 0x2c6c, 0x2c6d, 0x2c6e, 0x2c6f, 0x2c70,
+ 0x2c71, 0x2c57, 0x212a, 0x212e, 0x212f, 0x2130, 0x2131, 0x2253,
+ 0x2254, 0x2125, 0x2126, 0x2236, 0x2147, 0x2148, 0x2158, 0x2979,
+ 0x297a, 0x297b, 0x297c, 0x297d, 0x297e, 0x2149, 0x2235, 0x2724,
+ 0x2260, 0x2265, 0x2262, 0x2759, 0x214a, 0x2877, 0x2878, 0x287b,
+ 0x287c, 0x287d, 0x287e, 0x2530, 0x2531, 0x2532, 0x2533, 0x2534,
+ 0x2535, 0x2536, 0x2537, 0x2538, 0x2539, 0x2521, 0x2522, 0x2523,
+ 0x2524, 0x2525, 0x2526, 0x2527, 0x2528, 0x2529, 0x252a, 0x2167,
+ 0x2168, 0x2166, 0x2169, 0x216a, 0x2255, 0x2258, 0x2256, 0x2259,
+ 0x2257, 0x2221, 0x2222, 0x2223, 0x2153, 0x2224, 0x2154, 0x2174,
+ 0x2175, 0x2233, 0x2232, 0x216e, 0x2170, 0x2144, 0x2150, 0x212b,
+ 0x217c, 0x217d, 0x217b, 0x217a, 0x2172, 0x2173, 0x2231, 0x2145,
+ 0x2171, 0x212d, 0x216f, 0x2156, 0x2141, 0x2155, 0x2142, 0x2143,
+ 0x216c, 0x216d, 0x2178, 0x2179, 0x2176, 0x2177, 0x2241, 0x2151,
+ 0x2152, 0x2867, 0x2868, 0x2869, 0x286a, 0x286b, 0x286c, 0x286d,
+ 0x286e, 0x286f, 0x2870, 0x2871, 0x2872, 0x2873, 0x2874, 0x2875,
+ 0x2967, 0x2968, 0x2969, 0x296a, 0x296b, 0x296c, 0x296d, 0x296e,
+ 0x296f, 0x2970, 0x2971, 0x2972, 0x2973, 0x2974, 0x2975, 0x294d,
+ 0x294e, 0x294f, 0x2950, 0x2951, 0x2952, 0x2953, 0x2954, 0x2955,
+ 0x2956, 0x2957, 0x2958, 0x2959, 0x295a, 0x295b, 0x295c, 0x295d,
+ 0x295e, 0x295f, 0x2960, 0x2961, 0x2962, 0x2963, 0x2964, 0x2965,
+ 0x2966, 0x284d, 0x284e, 0x284f, 0x2850, 0x2851, 0x2852, 0x2853,
+ 0x2854, 0x2855, 0x2856, 0x2857, 0x2858, 0x2859, 0x285a, 0x285b,
+ 0x285c, 0x285d, 0x285e, 0x285f, 0x2860, 0x2861, 0x2862, 0x2863,
+ 0x2864, 0x2865, 0x2866, 0x2621, 0x262c, 0x2622, 0x262d, 0x2623,
+ 0x2648, 0x2647, 0x262e, 0x2624, 0x2642, 0x2641, 0x262f, 0x2626,
+ 0x2646, 0x2645, 0x2631, 0x2625, 0x2644, 0x2643, 0x2630, 0x2627,
+ 0x263c, 0x2649, 0x264a, 0x2637, 0x264b, 0x264c, 0x2632, 0x2629,
+ 0x263e, 0x264d, 0x264e, 0x2639, 0x264f, 0x2650, 0x2634, 0x2628,
+ 0x2651, 0x2652, 0x2638, 0x263d, 0x2653, 0x2654, 0x2633, 0x262a,
+ 0x2655, 0x2656, 0x263a, 0x263f, 0x2657, 0x2658, 0x2635, 0x262b,
+ 0x2659, 0x265a, 0x263b, 0x265b, 0x265c, 0x2640, 0x265d, 0x265e,
+ 0x265f, 0x2660, 0x2661, 0x2662, 0x2663, 0x2664, 0x2636, 0x2246,
+ 0x2161, 0x2160, 0x2243, 0x2247, 0x2248, 0x224b, 0x224a, 0x2249,
+ 0x224c, 0x2163, 0x2162, 0x223a, 0x2239, 0x2165, 0x2164, 0x2238,
+ 0x2237, 0x215f, 0x215e, 0x2242, 0x215b, 0x215d, 0x215c, 0x2244,
+ 0x2245, 0x215a, 0x2159, 0x224f, 0x224e, 0x2250, 0x2251, 0x214f,
+ 0x214e, 0x223c, 0x223d, 0x2240, 0x223b, 0x223e, 0x223f, 0x224d,
+ 0x225b, 0x225c, 0x225d, 0x225a, 0x2121, 0x2122, 0x2123, 0x2128,
+ 0x2134, 0x2135, 0x2136, 0x2137, 0x2138, 0x2139, 0x213a, 0x213b,
+ 0x213c, 0x213d, 0x216b, 0x2132, 0x2133, 0x2a21, 0x2a22, 0x2a23,
+ 0x2a24, 0x2a25, 0x2a26, 0x2a27, 0x2a28, 0x2a29, 0x2a2a, 0x2a2b,
+ 0x2a2c, 0x2a2d, 0x2a2e, 0x2a2f, 0x2a30, 0x2a31, 0x2a32, 0x2a33,
+ 0x2a34, 0x2a35, 0x2a36, 0x2a37, 0x2a38, 0x2a39, 0x2a3a, 0x2a3b,
+ 0x2a3c, 0x2a3d, 0x2a3e, 0x2a3f, 0x2a40, 0x2a41, 0x2a42, 0x2a43,
+ 0x2a44, 0x2a45, 0x2a46, 0x2a47, 0x2a48, 0x2a49, 0x2a4a, 0x2a4b,
+ 0x2a4c, 0x2a4d, 0x2a4e, 0x2a4f, 0x2a50, 0x2a51, 0x2a52, 0x2a53,
+ 0x2a54, 0x2a55, 0x2a56, 0x2a57, 0x2a58, 0x2a59, 0x2a5a, 0x2a5b,
+ 0x2a5c, 0x2a5d, 0x2a5e, 0x2a5f, 0x2a60, 0x2a61, 0x2a62, 0x2a63,
+ 0x2a64, 0x2a65, 0x2a66, 0x2a67, 0x2a68, 0x2a69, 0x2a6a, 0x2a6b,
+ 0x2a6c, 0x2a6d, 0x2a6e, 0x2a6f, 0x2a70, 0x2a71, 0x2a72, 0x2a73,
+ 0x2b21, 0x2b22, 0x2b23, 0x2b24, 0x2b25, 0x2b26, 0x2b27, 0x2b28,
+ 0x2b29, 0x2b2a, 0x2b2b, 0x2b2c, 0x2b2d, 0x2b2e, 0x2b2f, 0x2b30,
+ 0x2b31, 0x2b32, 0x2b33, 0x2b34, 0x2b35, 0x2b36, 0x2b37, 0x2b38,
+ 0x2b39, 0x2b3a, 0x2b3b, 0x2b3c, 0x2b3d, 0x2b3e, 0x2b3f, 0x2b40,
+ 0x2b41, 0x2b42, 0x2b43, 0x2b44, 0x2b45, 0x2b46, 0x2b47, 0x2b48,
+ 0x2b49, 0x2b4a, 0x2b4b, 0x2b4c, 0x2b4d, 0x2b4e, 0x2b4f, 0x2b50,
+ 0x2b51, 0x2b52, 0x2b53, 0x2b54, 0x2b55, 0x2b56, 0x2b57, 0x2b58,
+ 0x2b59, 0x2b5a, 0x2b5b, 0x2b5c, 0x2b5d, 0x2b5e, 0x2b5f, 0x2b60,
+ 0x2b61, 0x2b62, 0x2b63, 0x2b64, 0x2b65, 0x2b66, 0x2b67, 0x2b68,
+ 0x2b69, 0x2b6a, 0x2b6b, 0x2b6c, 0x2b6d, 0x2b6e, 0x2b6f, 0x2b70,
+ 0x2b71, 0x2b72, 0x2b73, 0x2b74, 0x2b75, 0x2b76, 0x2421, 0x2422,
+ 0x2423, 0x2424, 0x2425, 0x2426, 0x2427, 0x2428, 0x2429, 0x242a,
+ 0x242b, 0x242c, 0x242d, 0x242e, 0x242f, 0x2430, 0x2431, 0x2432,
+ 0x2433, 0x2434, 0x2435, 0x2436, 0x2437, 0x2438, 0x2439, 0x243a,
+ 0x243b, 0x243c, 0x243d, 0x243e, 0x243f, 0x2440, 0x2441, 0x2442,
+ 0x2443, 0x2444, 0x2445, 0x2446, 0x2447, 0x2448, 0x2449, 0x244a,
+ 0x244b, 0x244c, 0x244d, 0x244e, 0x244f, 0x2450, 0x2451, 0x2452,
+ 0x2453, 0x2454, 0x2455, 0x2456, 0x2457, 0x2458, 0x2459, 0x245a,
+ 0x245b, 0x245c, 0x245d, 0x245e, 0x245f, 0x2460, 0x2461, 0x2462,
+ 0x2463, 0x2464, 0x2465, 0x2466, 0x2467, 0x2468, 0x2469, 0x246a,
+ 0x246b, 0x246c, 0x246d, 0x246e, 0x246f, 0x2470, 0x2471, 0x2472,
+ 0x2473, 0x2474, 0x2475, 0x2476, 0x2477, 0x2478, 0x2479, 0x247a,
+ 0x247b, 0x247c, 0x247d, 0x247e, 0x2931, 0x2932, 0x2933, 0x2934,
+ 0x2935, 0x2936, 0x2937, 0x2938, 0x2939, 0x293a, 0x293b, 0x293c,
+ 0x293d, 0x293e, 0x293f, 0x2940, 0x2941, 0x2942, 0x2943, 0x2944,
+ 0x2945, 0x2946, 0x2947, 0x2948, 0x2949, 0x294a, 0x294b, 0x294c,
+ 0x225f, 0x2831, 0x2832, 0x2833, 0x2834, 0x2835, 0x2836, 0x2837,
+ 0x2838, 0x2839, 0x283a, 0x283b, 0x283c, 0x283d, 0x283e, 0x283f,
+ 0x2840, 0x2841, 0x2842, 0x2843, 0x2844, 0x2845, 0x2846, 0x2847,
+ 0x2848, 0x2849, 0x284a, 0x284b, 0x284c, 0x225e, 0x2749, 0x274a,
+ 0x274b, 0x274c, 0x274d, 0x273a, 0x273b, 0x275c, 0x275d, 0x275e,
+ 0x2736, 0x2737, 0x2738, 0x2754, 0x2755, 0x2756, 0x2757, 0x2758,
+ 0x2721, 0x2722, 0x2723, 0x2725, 0x272b, 0x272c, 0x272d, 0x272e,
+ 0x272f, 0x2730, 0x2731, 0x2732, 0x2733, 0x2734, 0x2727, 0x2728,
+ 0x2729, 0x272a, 0x273d, 0x273e, 0x2765, 0x2766, 0x2767, 0x2768,
+ 0x2761, 0x2762, 0x2763, 0x273f, 0x2740, 0x2741, 0x2742, 0x2743,
+ 0x2744, 0x2745, 0x2746, 0x2747, 0x2748, 0x274e, 0x274f, 0x2750,
+ 0x2751, 0x2752, 0x2753, 0x275a, 0x275b, 0x2263, 0x276c, 0x2726,
+ 0x2760, 0x276f, 0x2261, 0x273c, 0x276d, 0x2735, 0x2739, 0x276a,
+ 0x276b, 0x275f, 0x2264, 0x2764, 0x276e, 0x2769, 0x6c69, 0x6f4b,
+ 0x7652, 0x5832, 0x6d5b, 0x5f32, 0x5f3e, 0x793b, 0x5c74, 0x7564,
+ 0x7326, 0x5d60, 0x6126, 0x4e78, 0x5c30, 0x632a, 0x7169, 0x4d7a,
+ 0x7c2f, 0x5321, 0x712b, 0x6751, 0x522c, 0x4e79, 0x717d, 0x5e3f,
+ 0x7b3a, 0x7939, 0x4e52, 0x632b, 0x6b60, 0x4e7a, 0x4b77, 0x6525,
+ 0x4a61, 0x544c, 0x6a61, 0x5c63, 0x5f2d, 0x4b6b, 0x552f, 0x5675,
+ 0x6578, 0x5e40, 0x6c23, 0x694d, 0x6a27, 0x6976, 0x7b3b, 0x6769,
+ 0x6f4c, 0x5066, 0x5e41, 0x642c, 0x584c, 0x7971, 0x4e5f, 0x7a24,
+ 0x6632, 0x7a7b, 0x7a3d, 0x4c48, 0x6f4d, 0x5555, 0x5322, 0x6c51,
+ 0x6427, 0x6c52, 0x7631, 0x4e7b, 0x5051, 0x4b3f, 0x6d24, 0x6d28,
+ 0x5e42, 0x7662, 0x6d5c, 0x5c75, 0x6039, 0x544e, 0x7435, 0x535b,
+ 0x5635, 0x6c24, 0x6466, 0x716a, 0x4b6c, 0x4b40, 0x6c72, 0x506a,
+ 0x7972, 0x6c25, 0x505f, 0x676a, 0x506b, 0x5c51, 0x5b69, 0x7d4c,
+ 0x5b57, 0x5a61, 0x5636, 0x635f, 0x5e43, 0x5e44, 0x4a21, 0x6e6c,
+ 0x5323, 0x6e37, 0x784f, 0x6a48, 0x6e38, 0x712c, 0x7125, 0x694e,
+ 0x793c, 0x6579, 0x6c6a, 0x5d56, 0x6d42, 0x7825, 0x653a, 0x5b58,
+ 0x4a22, 0x514d, 0x6e6d, 0x6c6b, 0x5e45, 0x6360, 0x4a49, 0x7269,
+ 0x554e, 0x7636, 0x4e42, 0x5647, 0x6334, 0x712d, 0x6a62, 0x5742,
+ 0x7327, 0x4d6a, 0x6b6e, 0x5932, 0x7d25, 0x7655, 0x5562, 0x7835,
+ 0x4c75, 0x7535, 0x642d, 0x676b, 0x7155, 0x703b, 0x6935, 0x4c49,
+ 0x7a55, 0x6154, 0x5756, 0x5c41, 0x5e46, 0x7a6f, 0x6361, 0x6173,
+ 0x5c76, 0x4e7c, 0x5b44, 0x7871, 0x5c64, 0x656f, 0x5c31, 0x5556,
+ 0x735a, 0x4b41, 0x5b43, 0x597a, 0x536e, 0x7a38, 0x7d26, 0x6b6f,
+ 0x7426, 0x4c4a, 0x7328, 0x735b, 0x5b27, 0x7637, 0x4f66, 0x7072,
+ 0x4b5a, 0x6752, 0x5743, 0x7670, 0x685e, 0x6526, 0x6567, 0x4a23,
+ 0x4c27, 0x6a49, 0x7836, 0x7a25, 0x712e, 0x6f4e, 0x4b6d, 0x7630,
+ 0x6f4f, 0x694f, 0x775e, 0x4e53, 0x5c77, 0x5b28, 0x4b78, 0x5f21,
+ 0x5d61, 0x754a, 0x6936, 0x676c, 0x6e6e, 0x7370, 0x5f3f, 0x4c4b,
+ 0x5041, 0x7452, 0x603a, 0x5f40, 0x4e60, 0x5c52, 0x7d6a, 0x5676,
+ 0x6a4a, 0x6869, 0x632c, 0x7350, 0x4a24, 0x5b78, 0x5e47, 0x6b70,
+ 0x7156, 0x6562, 0x4c4c, 0x4b7b, 0x6a63, 0x5f41, 0x566d, 0x6950,
+ 0x6e39, 0x5563, 0x5153, 0x6570, 0x6834, 0x6b43, 0x6a2a, 0x7a7c,
+ 0x7576, 0x703c, 0x7d54, 0x603b, 0x4e43, 0x503a, 0x773a, 0x5873,
+ 0x774d, 0x642e, 0x545f, 0x5067, 0x6c7d, 0x522e, 0x6e6f, 0x5557,
+ 0x6a64, 0x7822, 0x4d6b, 0x573f, 0x7b31, 0x4d6c, 0x5c32, 0x506c,
+ 0x4e7d, 0x6e70, 0x4c42, 0x506d, 0x6577, 0x737c, 0x6e22, 0x5933,
+ 0x5874, 0x6937, 0x4e2e, 0x5922, 0x5871, 0x544f, 0x6527, 0x5552,
+ 0x5629, 0x7422, 0x7157, 0x5558, 0x703d, 0x5750, 0x5450, 0x574f,
+ 0x6b6a, 0x7d6b, 0x5b6d, 0x7c45, 0x4b42, 0x7d55, 0x7448, 0x686a,
+ 0x7573, 0x795e, 0x536f, 0x6c53, 0x5d42, 0x6f37, 0x6754, 0x4a4a,
+ 0x597b, 0x7a7d, 0x562a, 0x7478, 0x7777, 0x5c2c, 0x5757, 0x5f22,
+ 0x4e3e, 0x5370, 0x7024, 0x616c, 0x4f67, 0x734b, 0x6d29, 0x4a3e,
+ 0x746f, 0x764e, 0x5e7b, 0x503b, 0x5537, 0x6e71, 0x7428, 0x5c78,
+ 0x4b27, 0x5a4e, 0x6066, 0x6d25, 0x6e72, 0x5c79, 0x795c, 0x735c,
+ 0x7872, 0x7479, 0x7c71, 0x503c, 0x5b79, 0x5731, 0x4b7c, 0x7025,
+ 0x4b7d, 0x5574, 0x4d6d, 0x4a25, 0x562b, 0x5042, 0x703e, 0x523d,
+ 0x4c24, 0x7a36, 0x4c4d, 0x5a7a, 0x764f, 0x6938, 0x5875, 0x4c4e,
+ 0x574d, 0x5451, 0x696d, 0x4a6b, 0x5962, 0x7d32, 0x632d, 0x564c,
+ 0x5934, 0x6127, 0x6e53, 0x5043, 0x7d33, 0x5564, 0x4f68, 0x6d43,
+ 0x5032, 0x4e7e, 0x5a28, 0x7850, 0x7d56, 0x7851, 0x7852, 0x5c53,
+ 0x5d62, 0x7b79, 0x5d41, 0x6335, 0x6d5d, 0x4e44, 0x4b21, 0x5d63,
+ 0x7c5d, 0x792f, 0x527b, 0x4f21, 0x6428, 0x7436, 0x6c7e, 0x632e,
+ 0x676d, 0x7d41, 0x5a62, 0x5833, 0x5d64, 0x706f, 0x7671, 0x7a70,
+ 0x5175, 0x5a4f, 0x5c54, 0x5c26, 0x6f3f, 0x4e4f, 0x6059, 0x5956,
+ 0x6c54, 0x6a4b, 0x4a3f, 0x5530, 0x4f69, 0x716d, 0x4c4f, 0x6478,
+ 0x646d, 0x5758, 0x7d27, 0x6a2b, 0x7632, 0x4f70, 0x793d, 0x6674,
+ 0x4b5b, 0x7351, 0x6951, 0x7329, 0x5060, 0x6952, 0x5a63, 0x6252,
+ 0x7622, 0x6174, 0x5a64, 0x6755, 0x753f, 0x4f22, 0x4d2f, 0x4f23,
+ 0x4d30, 0x717e, 0x5023, 0x612f, 0x7823, 0x4a26, 0x773b, 0x726a,
+ 0x5e48, 0x6953, 0x5e49, 0x7d5e, 0x4a40, 0x796a, 0x514e, 0x6e54,
+ 0x5452, 0x5923, 0x7d28, 0x5759, 0x774e, 0x7a3e, 0x4f56, 0x5770,
+ 0x6b61, 0x7845, 0x5c7a, 0x5d43, 0x795f, 0x676f, 0x7d65, 0x7623,
+ 0x597c, 0x7d29, 0x676e, 0x5565, 0x6f50, 0x4d31, 0x7722, 0x7132,
+ 0x7131, 0x4d32, 0x5a2b, 0x4a27, 0x6362, 0x7b3c, 0x5924, 0x6e3a,
+ 0x7853, 0x7b7a, 0x4f24, 0x5c7b, 0x7663, 0x6d2a, 0x7221, 0x4e61,
+ 0x7a26, 0x7960, 0x6c56, 0x646e, 0x7921, 0x7b6f, 0x796b, 0x6e23,
+ 0x6a2c, 0x4a28, 0x747a, 0x4d56, 0x7c76, 0x7449, 0x7854, 0x7826,
+ 0x5e4a, 0x7246, 0x575a, 0x5350, 0x5845, 0x6a66, 0x735d, 0x645a,
+ 0x7664, 0x7672, 0x5f42, 0x597d, 0x4c76, 0x533a, 0x642f, 0x7961,
+ 0x7026, 0x4b53, 0x603c, 0x744a, 0x547a, 0x7d2a, 0x7962, 0x7437,
+ 0x7d42, 0x7c30, 0x7d6c, 0x4a62, 0x7d3d, 0x6a67, 0x5f43, 0x5152,
+ 0x4e62, 0x5324, 0x7d2b, 0x5f60, 0x7247, 0x6770, 0x506e, 0x732a,
+ 0x5e4b, 0x7638, 0x6175, 0x7133, 0x7723, 0x4a29, 0x4f25, 0x5f44,
+ 0x6130, 0x703f, 0x7624, 0x6336, 0x7a46, 0x506f, 0x7d6d, 0x5d44,
+ 0x7c77, 0x663f, 0x5e2d, 0x7a3f, 0x6571, 0x6d44, 0x5225, 0x7d6e,
+ 0x7536, 0x6176, 0x5e4c, 0x7c5e, 0x6c57, 0x4d5d, 0x5637, 0x4d33,
+ 0x7855, 0x6558, 0x4f6a, 0x4f50, 0x6a4c, 0x6a2e, 0x6a2d, 0x5371,
+ 0x5325, 0x774f, 0x6e24, 0x5024, 0x7222, 0x5070, 0x7223, 0x7778,
+ 0x5033, 0x5b29, 0x533b, 0x4a6c, 0x7126, 0x4b55, 0x7767, 0x4d5e,
+ 0x7724, 0x7840, 0x535d, 0x4c50, 0x4f26, 0x7673, 0x6177, 0x535c,
+ 0x7a7e, 0x7a27, 0x6b59, 0x4f27, 0x6a2f, 0x646f, 0x6939, 0x7158,
+ 0x5858, 0x6072, 0x6634, 0x5c7c, 0x7371, 0x6350, 0x727b, 0x5b46,
+ 0x5071, 0x5072, 0x4f5c, 0x5351, 0x4c31, 0x7758, 0x4b28, 0x6b3c,
+ 0x643e, 0x745c, 0x5c42, 0x7027, 0x6640, 0x4a6d, 0x686b, 0x6568,
+ 0x5c43, 0x6d5e, 0x5372, 0x4c77, 0x4e54, 0x672b, 0x4b43, 0x6131,
+ 0x7732, 0x5373, 0x5352, 0x7540, 0x5f5d, 0x6e73, 0x6771, 0x7d34,
+ 0x7248, 0x7352, 0x6e74, 0x6253, 0x4c51, 0x5f6a, 0x693a, 0x5957,
+ 0x754d, 0x7172, 0x7a47, 0x5978, 0x5442, 0x7665, 0x5d45, 0x6772,
+ 0x6d5f, 0x4a4b, 0x5b7a, 0x6835, 0x5326, 0x7d35, 0x7949, 0x6462,
+ 0x7b3d, 0x5724, 0x4e45, 0x4e55, 0x5666, 0x653d, 0x5e4d, 0x6c73,
+ 0x6d60, 0x6c6c, 0x7b3e, 0x5f6b, 0x6178, 0x793e, 0x5073, 0x602a,
+ 0x6862, 0x6254, 0x527d, 0x6528, 0x5953, 0x535e, 0x7438, 0x773c,
+ 0x5c7d, 0x686c, 0x6467, 0x6377, 0x6c28, 0x7a71, 0x6572, 0x5074,
+ 0x522f, 0x5c65, 0x5025, 0x7134, 0x7c31, 0x4c78, 0x5d46, 0x7a51,
+ 0x775f, 0x7a28, 0x6e75, 0x5e4e, 0x6773, 0x772c, 0x6b44, 0x6d61,
+ 0x602b, 0x5d47, 0x5233, 0x523f, 0x4a4c, 0x7b3f, 0x657d, 0x5d65,
+ 0x584d, 0x6c74, 0x5075, 0x686d, 0x5052, 0x5958, 0x7666, 0x5b2a,
+ 0x7760, 0x5859, 0x7423, 0x745d, 0x6f51, 0x5935, 0x6d2b, 0x6337,
+ 0x6e3b, 0x4d34, 0x6073, 0x6a4d, 0x6c75, 0x686e, 0x4b29, 0x712f,
+ 0x4a4d, 0x6c29, 0x726b, 0x7d6f, 0x7973, 0x6641, 0x6c58, 0x6d2c,
+ 0x6a4e, 0x685f, 0x5e4f, 0x5226, 0x6774, 0x5156, 0x6642, 0x6363,
+ 0x6430, 0x5834, 0x7625, 0x735e, 0x5725, 0x7768, 0x6846, 0x7b66,
+ 0x5d66, 0x5c7e, 0x585a, 0x5a2c, 0x6a30, 0x6338, 0x4a2a, 0x6179,
+ 0x6a31, 0x726c, 0x7a6e, 0x6e55, 0x7974, 0x526c, 0x7b7b, 0x7d70,
+ 0x603d, 0x4e63, 0x7846, 0x5e2e, 0x5f45, 0x653e, 0x6d2d, 0x7a6a,
+ 0x4d6e, 0x6d26, 0x6d2e, 0x706d, 0x5d21, 0x6d2f, 0x7c78, 0x586b,
+ 0x4c79, 0x4d35, 0x7a29, 0x615d, 0x6255, 0x6d4f, 0x5d22, 0x794a,
+ 0x6a68, 0x656d, 0x536b, 0x6954, 0x617a, 0x644c, 0x6164, 0x6847,
+ 0x4e5b, 0x5c55, 0x7735, 0x7c73, 0x7073, 0x4e2f, 0x7135, 0x6f52,
+ 0x6848, 0x6b71, 0x4b54, 0x603e, 0x6378, 0x6a69, 0x7c32, 0x6074,
+ 0x4f60, 0x6e25, 0x7a2a, 0x6643, 0x6132, 0x4a2b, 0x6364, 0x693b,
+ 0x6256, 0x7372, 0x6e56, 0x6a32, 0x5076, 0x6c59, 0x5a4b, 0x4f28,
+ 0x5d23, 0x585b, 0x794e, 0x6955, 0x6351, 0x523c, 0x582c, 0x734c,
+ 0x4d7b, 0x7656, 0x6775, 0x686f, 0x6379, 0x523b, 0x7373, 0x637b,
+ 0x5e50, 0x4e30, 0x5677, 0x7159, 0x7541, 0x5c44, 0x753b, 0x5e51,
+ 0x5c66, 0x5e52, 0x6d62, 0x6e76, 0x6a4f, 0x706e, 0x637c, 0x535f,
+ 0x5374, 0x6133, 0x6134, 0x7453, 0x5f46, 0x6956, 0x5b2b, 0x7626,
+ 0x6339, 0x6b45, 0x7429, 0x4d36, 0x5279, 0x5a2d, 0x5263, 0x4f51,
+ 0x4b5c, 0x4c7a, 0x4f5d, 0x6829, 0x633b, 0x633a, 0x605a, 0x6e77,
+ 0x5c33, 0x5375, 0x5726, 0x7635, 0x575b, 0x6155, 0x546a, 0x5f23,
+ 0x7d5f, 0x5077, 0x6d54, 0x4b2a, 0x645b, 0x617b, 0x4b22, 0x5360,
+ 0x643f, 0x7b40, 0x5a3e, 0x644d, 0x5639, 0x6f40, 0x617c, 0x7639,
+ 0x5f47, 0x6431, 0x5c67, 0x5c68, 0x7a56, 0x5376, 0x715a, 0x7a72,
+ 0x627d, 0x554f, 0x5078, 0x4d5f, 0x754b, 0x6470, 0x4b2b, 0x5744,
+ 0x627e, 0x5d5a, 0x5a2e, 0x4a6e, 0x5539, 0x6321, 0x6863, 0x732b,
+ 0x4f29, 0x5377, 0x5471, 0x4e64, 0x6872, 0x6575, 0x672e, 0x563a,
+ 0x5f6c, 0x6440, 0x6864, 0x5835, 0x645c, 0x7439, 0x7136, 0x625e,
+ 0x6135, 0x4d6f, 0x7127, 0x4e65, 0x4b5d, 0x5963, 0x732c, 0x5079,
+ 0x6c2b, 0x5e53, 0x7769, 0x7975, 0x615e, 0x4b6e, 0x633c, 0x7856,
+ 0x5b6e, 0x7d71, 0x7736, 0x745e, 0x726d, 0x5b59, 0x7028, 0x617d,
+ 0x5e54, 0x602c, 0x6d63, 0x5361, 0x5f48, 0x5936, 0x7d2c, 0x6f53,
+ 0x6441, 0x786b, 0x5b2c, 0x7c46, 0x582d, 0x763a, 0x5b5f, 0x5353,
+ 0x7847, 0x4a4e, 0x7841, 0x5234, 0x5c34, 0x7a39, 0x4a4f, 0x7c33,
+ 0x6a6a, 0x6a6b, 0x507a, 0x6d64, 0x5d67, 0x5f49, 0x5f6d, 0x6e3c,
+ 0x6f41, 0x4c52, 0x5d24, 0x5f4a, 0x5378, 0x7128, 0x4d37, 0x6f54,
+ 0x645d, 0x5f6e, 0x4b2c, 0x693c, 0x6a6c, 0x5f4b, 0x793f, 0x562f,
+ 0x5546, 0x4f2a, 0x4e29, 0x5678, 0x7137, 0x6e78, 0x5959, 0x735f,
+ 0x7848, 0x4e46, 0x5566, 0x7466, 0x6645, 0x6f55, 0x4b6f, 0x7c5f,
+ 0x5c27, 0x5667, 0x7849, 0x6352, 0x633d, 0x4f61, 0x7040, 0x6c5a,
+ 0x5d57, 0x7b70, 0x6c2c, 0x7029, 0x7a57, 0x7b41, 0x5240, 0x6530,
+ 0x6d65, 0x4b2d, 0x7930, 0x7725, 0x4b2e, 0x5a2f, 0x5836, 0x5327,
+ 0x7b32, 0x7d44, 0x6c2d, 0x7b21, 0x6569, 0x696e, 0x7374, 0x7873,
+ 0x7041, 0x5e2f, 0x7830, 0x7360, 0x672f, 0x5b2d, 0x6635, 0x7928,
+ 0x5d58, 0x6859, 0x6f56, 0x5362, 0x625f, 0x7c60, 0x5748, 0x7d2d,
+ 0x5f6f, 0x4c53, 0x5379, 0x5470, 0x5b47, 0x5e55, 0x7074, 0x5550,
+ 0x6559, 0x7c47, 0x5c56, 0x6260, 0x5a30, 0x7323, 0x536c, 0x744b,
+ 0x7d45, 0x637d, 0x7931, 0x507b, 0x6c5b, 0x753c, 0x7224, 0x584e,
+ 0x584f, 0x7577, 0x7661, 0x5237, 0x7b6c, 0x5d48, 0x6468, 0x5241,
+ 0x7857, 0x563b, 0x5e56, 0x773d, 0x6c2e, 0x5061, 0x6075, 0x6a33,
+ 0x4e56, 0x4c25, 0x6c76, 0x6261, 0x633e, 0x7c48, 0x4d70, 0x7976,
+ 0x5f70, 0x653f, 0x4e3f, 0x7c61, 0x6d30, 0x7d51, 0x763b, 0x794f,
+ 0x6b5a, 0x4a41, 0x5238, 0x4d71, 0x6353, 0x7d66, 0x666d, 0x637a,
+ 0x702a, 0x7950, 0x7c62, 0x7827, 0x6165, 0x6e79, 0x6776, 0x6a6d,
+ 0x7c34, 0x7542, 0x575c, 0x7075, 0x5d68, 0x536d, 0x757c, 0x5a3f,
+ 0x4c7b, 0x537a, 0x7424, 0x6f57, 0x5443, 0x7b63, 0x7b6d, 0x602d,
+ 0x6a6e, 0x7b33, 0x6442, 0x7667, 0x525d, 0x5f4c, 0x7c49, 0x6529,
+ 0x6076, 0x7633, 0x617e, 0x4b70, 0x6a6f, 0x6a70, 0x5a40, 0x7834,
+ 0x6b72, 0x6443, 0x6957, 0x6471, 0x4a6f, 0x4e57, 0x7c4a, 0x7361,
+ 0x4b44, 0x6365, 0x4b45, 0x6a34, 0x693d, 0x5749, 0x6b5b, 0x6d31,
+ 0x4c43, 0x773e, 0x7c4b, 0x7874, 0x5937, 0x7353, 0x7354, 0x7764,
+ 0x7751, 0x5837, 0x4e31, 0x4a42, 0x7b34, 0x4b46, 0x7076, 0x5567,
+ 0x6a50, 0x4c54, 0x4b2f, 0x742a, 0x692f, 0x7543, 0x6958, 0x5d69,
+ 0x7173, 0x557b, 0x5e3b, 0x747b, 0x7d73, 0x7d72, 0x7726, 0x5d49,
+ 0x5453, 0x4c28, 0x5a41, 0x4c55, 0x5964, 0x7a4a, 0x6563, 0x533c,
+ 0x4a70, 0x5044, 0x4a50, 0x7a2b, 0x6b6b, 0x6778, 0x5965, 0x5157,
+ 0x7324, 0x547b, 0x7c63, 0x7a58, 0x7355, 0x4f2b, 0x6b73, 0x557c,
+ 0x5354, 0x4d7c, 0x5966, 0x6279, 0x6221, 0x6b54, 0x6077, 0x6432,
+ 0x4c7c, 0x7b64, 0x742b, 0x503d, 0x4a71, 0x6f38, 0x5740, 0x6e7a,
+ 0x7d74, 0x5363, 0x7b42, 0x5568, 0x5b2e, 0x6136, 0x7837, 0x603f,
+ 0x7b43, 0x5d6a, 0x6222, 0x6e26, 0x7668, 0x7675, 0x5d4a, 0x5062,
+ 0x5d26, 0x5d6b, 0x6479, 0x632f, 0x507c, 0x747c, 0x4c3c, 0x776a,
+ 0x6564, 0x5f71, 0x7761, 0x7977, 0x6f39, 0x7858, 0x7929, 0x7859,
+ 0x6e3d, 0x5846, 0x6463, 0x754e, 0x5d59, 0x5967, 0x5239, 0x5543,
+ 0x5a65, 0x5a50, 0x5159, 0x4e58, 0x4b5e, 0x742c, 0x5a7b, 0x7669,
+ 0x6873, 0x4f2c, 0x7070, 0x747d, 0x5b48, 0x4e40, 0x6354, 0x514f,
+ 0x7175, 0x4d72, 0x4f6b, 0x4d38, 0x6326, 0x515a, 0x7225, 0x7226,
+ 0x644e, 0x537b, 0x7129, 0x7249, 0x6f58, 0x6649, 0x5838, 0x7a73,
+ 0x7335, 0x7824, 0x5173, 0x6648, 0x785a, 0x5c69, 0x5e57, 0x4b5f,
+ 0x4f6c, 0x745f, 0x5174, 0x523a, 0x5f72, 0x6137, 0x6223, 0x537c,
+ 0x6d66, 0x5b49, 0x647a, 0x4f5e, 0x4e50, 0x5553, 0x7375, 0x772e,
+ 0x6f48, 0x4d73, 0x754f, 0x6573, 0x7042, 0x4a51, 0x6a71, 0x5026,
+ 0x595a, 0x702b, 0x6b67, 0x6540, 0x7c35, 0x6444, 0x4c29, 0x7d46,
+ 0x6a35, 0x652a, 0x5f3a, 0x615f, 0x5a51, 0x6138, 0x6874, 0x537d,
+ 0x6224, 0x724a, 0x5a66, 0x7733, 0x7d4d, 0x7336, 0x6e57, 0x7544,
+ 0x5824, 0x7227, 0x5938, 0x5939, 0x6f49, 0x564e, 0x774b, 0x5f2e,
+ 0x6875, 0x5235, 0x5355, 0x744c, 0x5a7c, 0x5968, 0x776b, 0x7549,
+ 0x733c, 0x5a52, 0x5335, 0x6836, 0x564f, 0x743a, 0x7749, 0x4c2a,
+ 0x7043, 0x4c56, 0x5053, 0x533d, 0x5b7b, 0x4b60, 0x5364, 0x7677,
+ 0x553a, 0x734d, 0x4b61, 0x6b74, 0x742d, 0x7c2a, 0x776c, 0x6876,
+ 0x5a67, 0x774c, 0x6541, 0x606e, 0x557d, 0x4e66, 0x7c2b, 0x553b,
+ 0x7228, 0x6225, 0x4d39, 0x6a72, 0x4b47, 0x4d74, 0x5b2f, 0x6f59,
+ 0x4d3a, 0x7c79, 0x5f73, 0x4e67, 0x5a42, 0x4f2d, 0x6779, 0x7828,
+ 0x7362, 0x4a72, 0x5f24, 0x5444, 0x4c57, 0x6542, 0x4d3b, 0x6f5a,
+ 0x6e58, 0x5d27, 0x6226, 0x6040, 0x5630, 0x784a, 0x7c7a, 0x597e,
+ 0x5e30, 0x5d6c, 0x5a68, 0x5460, 0x5679, 0x4d57, 0x5e58, 0x7278,
+ 0x6456, 0x5045, 0x742e, 0x5d28, 0x6d45, 0x7356, 0x5e59, 0x6366,
+ 0x5328, 0x5b30, 0x655a, 0x633f, 0x5b31, 0x5569, 0x6041, 0x6f5b,
+ 0x7069, 0x5732, 0x507d, 0x5969, 0x507e, 0x6c6d, 0x5329, 0x7229,
+ 0x7044, 0x6262, 0x696f, 0x7951, 0x6959, 0x685a, 0x5a43, 0x5a44,
+ 0x5445, 0x677a, 0x4d60, 0x6330, 0x5b32, 0x7b44, 0x7363, 0x5925,
+ 0x7b67, 0x5d4b, 0x5054, 0x6636, 0x602e, 0x7d5a, 0x5c35, 0x6078,
+ 0x6731, 0x7570, 0x585c, 0x6d46, 0x6139, 0x6340, 0x7940, 0x6970,
+ 0x595b, 0x7364, 0x5c36, 0x6469, 0x7045, 0x6341, 0x7c4c, 0x7c4d,
+ 0x724b, 0x724c, 0x644f, 0x715b, 0x7a59, 0x7138, 0x7d75, 0x6079,
+ 0x677b, 0x7c37, 0x7c64, 0x7b45, 0x6367, 0x5839, 0x7678, 0x5c45,
+ 0x4c58, 0x602f, 0x7467, 0x6f5c, 0x4f7c, 0x6f5d, 0x722a, 0x7d3e,
+ 0x4a2c, 0x7d3b, 0x7d47, 0x6732, 0x6a51, 0x5f74, 0x516c, 0x645e,
+ 0x6543, 0x5926, 0x4d3c, 0x7365, 0x6d55, 0x593a, 0x6d67, 0x7b35,
+ 0x786c, 0x6067, 0x4c59, 0x5446, 0x6725, 0x5575, 0x533e, 0x7c7b,
+ 0x6472, 0x5f75, 0x6878, 0x786d, 0x4e47, 0x7d76, 0x6858, 0x4d58,
+ 0x6756, 0x4c5a, 0x4a63, 0x5f76, 0x7047, 0x7046, 0x583a, 0x7174,
+ 0x7470, 0x754c, 0x7c65, 0x6a45, 0x6a73, 0x5d5b, 0x5c57, 0x5e7d,
+ 0x7279, 0x5547, 0x5850, 0x7048, 0x5121, 0x5122, 0x5954, 0x5668,
+ 0x594a, 0x5a31, 0x5847, 0x5c62, 0x734e, 0x7574, 0x7139, 0x5a53,
+ 0x766a, 0x4f75, 0x7d2e, 0x4a52, 0x5f34, 0x575d, 0x7a3a, 0x6e27,
+ 0x753d, 0x7875, 0x6d68, 0x5461, 0x5123, 0x6156, 0x7978, 0x5b4a,
+ 0x4b79, 0x5454, 0x595c, 0x6e3e, 0x776d, 0x526e, 0x6166, 0x7779,
+ 0x5d6d, 0x685b, 0x5b33, 0x5177, 0x6030, 0x5462, 0x7657, 0x5779,
+ 0x585d, 0x4d7d, 0x722b, 0x4d3d, 0x7842, 0x722c, 0x4a2d, 0x4a2e,
+ 0x4f2e, 0x6342, 0x5c37, 0x5b5a, 0x593b, 0x4a73, 0x7653, 0x6678,
+ 0x6a75, 0x6a76, 0x7679, 0x4f2f, 0x4a53, 0x4a2f, 0x5230, 0x713a,
+ 0x5733, 0x6343, 0x737d, 0x5e5a, 0x5e5b, 0x6f5e, 0x6263, 0x6e7b,
+ 0x5f77, 0x574a, 0x4e68, 0x5b5b, 0x713b, 0x6971, 0x7a37, 0x5046,
+ 0x4c2b, 0x6e28, 0x4b7a, 0x7979, 0x4c7d, 0x537e, 0x6450, 0x726e,
+ 0x5455, 0x5f4d, 0x7c38, 0x5150, 0x724d, 0x7752, 0x4a54, 0x5559,
+ 0x585e, 0x4d59, 0x6e29, 0x763c, 0x4c5b, 0x7049, 0x7c7c, 0x6849,
+ 0x747e, 0x677c, 0x575e, 0x5e5c, 0x702c, 0x4c7e, 0x4d61, 0x613a,
+ 0x5b6f, 0x5a32, 0x5125, 0x5c38, 0x5876, 0x5124, 0x4d62, 0x5c6a,
+ 0x7077, 0x704a, 0x503e, 0x5d5c, 0x5456, 0x5356, 0x6d50, 0x4d21,
+ 0x5f35, 0x5f78, 0x5421, 0x4e32, 0x684a, 0x6b75, 0x6355, 0x7550,
+ 0x7521, 0x5927, 0x652b, 0x664b, 0x7571, 0x6545, 0x7923, 0x605b,
+ 0x766b, 0x4b71, 0x596a, 0x7522, 0x5751, 0x5178, 0x6a78, 0x6a79,
+ 0x5a33, 0x6f5f, 0x716f, 0x6576, 0x6e3f, 0x6264, 0x503f, 0x7a2c,
+ 0x7551, 0x6733, 0x693e, 0x724e, 0x5b34, 0x7c4e, 0x5d6e, 0x6734,
+ 0x5734, 0x7734, 0x4d3e, 0x5a69, 0x4f30, 0x7759, 0x7366, 0x4e59,
+ 0x4e2a, 0x4b48, 0x5027, 0x704b, 0x5047, 0x6445, 0x5b60, 0x555a,
+ 0x5727, 0x6e40, 0x7876, 0x7552, 0x6d69, 0x593c, 0x6546, 0x7523,
+ 0x5a54, 0x6227, 0x7b7c, 0x715c, 0x4a74, 0x687a, 0x4e69, 0x6978,
+ 0x6265, 0x5039, 0x5472, 0x5126, 0x5f4e, 0x7c74, 0x532a, 0x4c2c,
+ 0x6f60, 0x6565, 0x5055, 0x5b7c, 0x7c66, 0x4b7e, 0x6d6a, 0x5e31,
+ 0x7963, 0x5422, 0x4f76, 0x5650, 0x556a, 0x716e, 0x7a4b, 0x6521,
+ 0x5531, 0x4f6d, 0x6d6b, 0x5532, 0x553c, 0x7d62, 0x732d, 0x7d5b,
+ 0x6930, 0x5127, 0x7d63, 0x4e33, 0x7d64, 0x7a4e, 0x4a30, 0x7727,
+ 0x4f31, 0x6622, 0x7c36, 0x722d, 0x6f61, 0x732e, 0x5c46, 0x596b,
+ 0x6860, 0x6128, 0x5576, 0x4f7d, 0x5e5d, 0x5951, 0x646a, 0x724f,
+ 0x773f, 0x6266, 0x6228, 0x6356, 0x6d51, 0x6979, 0x5631, 0x5e32,
+ 0x6068, 0x532b, 0x6b5c, 0x5f2f, 0x4a43, 0x6e7c, 0x7d43, 0x6b76,
+ 0x4f32, 0x596c, 0x593d, 0x585f, 0x5438, 0x6b3e, 0x5d6f, 0x5d70,
+ 0x5d71, 0x5d72, 0x593e, 0x7b46, 0x4f33, 0x6e7d, 0x642b, 0x5a45,
+ 0x586c, 0x5128, 0x6229, 0x5e3c, 0x6735, 0x5b70, 0x6f62, 0x7170,
+ 0x4f34, 0x5b71, 0x6031, 0x5f25, 0x7952, 0x677d, 0x6623, 0x7b71,
+ 0x4b30, 0x722e, 0x4d67, 0x685c, 0x6757, 0x7740, 0x5063, 0x5a21,
+ 0x4c3d, 0x5129, 0x5d4c, 0x637e, 0x512a, 0x682a, 0x6a36, 0x797a,
+ 0x664c, 0x7658, 0x5447, 0x594b, 0x5952, 0x534b, 0x5877, 0x5a29,
+ 0x7578, 0x5e5e, 0x722f, 0x7829, 0x5848, 0x6e41, 0x7941, 0x5d73,
+ 0x6a7a, 0x763d, 0x613b, 0x4d3f, 0x7454, 0x664d, 0x7c4f, 0x7b22,
+ 0x605c, 0x743b, 0x5a55, 0x7932, 0x7b72, 0x5b76, 0x5e5f, 0x5b72,
+ 0x785c, 0x776e, 0x6b68, 0x527a, 0x713c, 0x7a5a, 0x5a6a, 0x5a46,
+ 0x7741, 0x6736, 0x6547, 0x562c, 0x5c47, 0x6129, 0x622a, 0x5526,
+ 0x5457, 0x7250, 0x6a7b, 0x605d, 0x7b73, 0x713d, 0x6267, 0x7d57,
+ 0x4e48, 0x6a37, 0x7c40, 0x7d67, 0x776f, 0x5735, 0x6f3a, 0x715d,
+ 0x5e33, 0x684b, 0x785d, 0x7b47, 0x5548, 0x575f, 0x5d29, 0x6931,
+ 0x7a2d, 0x7659, 0x7a74, 0x782a, 0x666e, 0x4c5c, 0x613c, 0x606f,
+ 0x693f, 0x7c7d, 0x664e, 0x6157, 0x664f, 0x7471, 0x6473, 0x647b,
+ 0x7964, 0x6f63, 0x4f6e, 0x763e, 0x6032, 0x7c7e, 0x512b, 0x577a,
+ 0x7b48, 0x6257, 0x5423, 0x7078, 0x5728, 0x6167, 0x533f, 0x6f64,
+ 0x5745, 0x6b62, 0x7c67, 0x6422, 0x6268, 0x6650, 0x7b68, 0x7468,
+ 0x6574, 0x743c, 0x7455, 0x5f36, 0x7c39, 0x6e42, 0x4a75, 0x6f65,
+ 0x4b62, 0x5424, 0x5e60, 0x5a7d, 0x6446, 0x683e, 0x605e, 0x7634,
+ 0x6a52, 0x797b, 0x6042, 0x4a64, 0x6737, 0x6a7d, 0x595d, 0x5a34,
+ 0x6e2a, 0x7b69, 0x5b4b, 0x5a35, 0x713e, 0x532c, 0x7b49, 0x5f4f,
+ 0x5340, 0x6357, 0x6f66, 0x7c50, 0x6940, 0x7553, 0x6c5c, 0x7737,
+ 0x6a38, 0x5179, 0x5c48, 0x6a39, 0x715e, 0x5736, 0x4f35, 0x5928,
+ 0x6c6e, 0x5d2a, 0x4d22, 0x682e, 0x613d, 0x7251, 0x6941, 0x527c,
+ 0x5b35, 0x7367, 0x587e, 0x7c51, 0x6d32, 0x742f, 0x7b23, 0x7c41,
+ 0x6e2b, 0x5425, 0x7472, 0x6e59, 0x7b4a, 0x4d63, 0x583b, 0x655b,
+ 0x7877, 0x7654, 0x5729, 0x4b49, 0x6651, 0x704c, 0x582e, 0x7953,
+ 0x557e, 0x583c, 0x7230, 0x622b, 0x7368, 0x6f42, 0x6d6c, 0x6738,
+ 0x5a7e, 0x4c3e, 0x727c, 0x5a6b, 0x6258, 0x6d56, 0x5651, 0x6033,
+ 0x7c52, 0x6b48, 0x5341, 0x704d, 0x4f77, 0x6d52, 0x5458, 0x5c49,
+ 0x5771, 0x5f3b, 0x7325, 0x744d, 0x713f, 0x7831, 0x697a, 0x7b4b,
+ 0x4a55, 0x7954, 0x774a, 0x5648, 0x7c68, 0x733d, 0x6e7e, 0x677e,
+ 0x5342, 0x5336, 0x4c2d, 0x767a, 0x5632, 0x5258, 0x6758, 0x6325,
+ 0x6739, 0x702d, 0x7b4c, 0x6b21, 0x5426, 0x7b4d, 0x553d, 0x715f,
+ 0x767b, 0x5e34, 0x556b, 0x6548, 0x7b24, 0x5439, 0x5e61, 0x6423,
+ 0x5737, 0x786e, 0x5e35, 0x5652, 0x7955, 0x673a, 0x6b55, 0x5577,
+ 0x6f67, 0x613e, 0x7a2e, 0x5669, 0x566e, 0x673b, 0x6c4b, 0x5533,
+ 0x4e34, 0x7b25, 0x616e, 0x7728, 0x7b4e, 0x583d, 0x7b7d, 0x7c69,
+ 0x4f36, 0x6d47, 0x6e2c, 0x4c5d, 0x7627, 0x667a, 0x7524, 0x7d5c,
+ 0x6d33, 0x4e49, 0x6f68, 0x613f, 0x7a5b, 0x4b63, 0x7729, 0x7b26,
+ 0x5c39, 0x7140, 0x6d48, 0x6f43, 0x562d, 0x7d4e, 0x6821, 0x7b74,
+ 0x5527, 0x7176, 0x6653, 0x4c5e, 0x7832, 0x5c6b, 0x7d36, 0x656a,
+ 0x7160, 0x5b4c, 0x5d4d, 0x5448, 0x596d, 0x7525, 0x667b, 0x6654,
+ 0x7d48, 0x5621, 0x7d3f, 0x7c53, 0x6f21, 0x673c, 0x516e, 0x6655,
+ 0x6972, 0x5f30, 0x5860, 0x7c3a, 0x7d2f, 0x704e, 0x5b61, 0x6549,
+ 0x6d34, 0x6043, 0x6358, 0x697b, 0x6a28, 0x7d37, 0x7b27, 0x6942,
+ 0x7d77, 0x6259, 0x5c6c, 0x6822, 0x6670, 0x7d78, 0x7d79, 0x763f,
+ 0x6727, 0x6657, 0x5473, 0x5449, 0x567a, 0x5772, 0x6140, 0x5b62,
+ 0x6658, 0x673d, 0x704f, 0x733e, 0x622c, 0x7537, 0x6070, 0x7d38,
+ 0x6368, 0x5427, 0x687c, 0x7a52, 0x786f, 0x5653, 0x5534, 0x7050,
+ 0x7770, 0x6e33, 0x6a3a, 0x6a53, 0x6d49, 0x5d2b, 0x652c, 0x7d21,
+ 0x5f50, 0x6c33, 0x5f51, 0x6d6d, 0x7838, 0x777a, 0x782b, 0x7460,
+ 0x543a, 0x6433, 0x695a, 0x5e36, 0x593f, 0x5940, 0x566f, 0x594c,
+ 0x5a2a, 0x5f65, 0x7765, 0x4c32, 0x5f79, 0x5760, 0x543b, 0x7d7a,
+ 0x4c33, 0x5b73, 0x5f52, 0x4e4a, 0x6e5a, 0x6464, 0x7b4f, 0x4f37,
+ 0x6e43, 0x4e6a, 0x622d, 0x5761, 0x7a75, 0x5549, 0x782c, 0x6759,
+ 0x7369, 0x586d, 0x6344, 0x7071, 0x6865, 0x607a, 0x6e44, 0x595e,
+ 0x6b22, 0x6b23, 0x7c42, 0x6a3b, 0x682b, 0x5e62, 0x6d6f, 0x6823,
+ 0x4f71, 0x543c, 0x7c6a, 0x673e, 0x7c72, 0x5634, 0x622e, 0x5337,
+ 0x7a4c, 0x7a5c, 0x6d35, 0x6163, 0x682c, 0x685d, 0x6f69, 0x743d,
+ 0x4f38, 0x695b, 0x512c, 0x5a47, 0x6b49, 0x684c, 0x5e37, 0x563c,
+ 0x5365, 0x7a5d, 0x5a56, 0x4a31, 0x5a48, 0x5f26, 0x7933, 0x7252,
+ 0x4a44, 0x4e4b, 0x4d75, 0x7d30, 0x5528, 0x7141, 0x6269, 0x5c4a,
+ 0x6c34, 0x7a40, 0x7b28, 0x5028, 0x5a6c, 0x596e, 0x607b, 0x6f6a,
+ 0x7a5e, 0x6044, 0x4f39, 0x554a, 0x5762, 0x622f, 0x5738, 0x684d,
+ 0x765a, 0x6f22, 0x625a, 0x767c, 0x7b50, 0x512d, 0x4d64, 0x512e,
+ 0x5c6d, 0x684e, 0x7079, 0x4e35, 0x667c, 0x577b, 0x5056, 0x5d75,
+ 0x7771, 0x767d, 0x5b77, 0x7b6a, 0x695c, 0x5941, 0x7572, 0x6045,
+ 0x6a54, 0x7942, 0x6a3c, 0x5245, 0x7b51, 0x6740, 0x6b25, 0x5f7a,
+ 0x6322, 0x5739, 0x6943, 0x687d, 0x682f, 0x7253, 0x7b29, 0x5825,
+ 0x554b, 0x5048, 0x512f, 0x5763, 0x6046, 0x5622, 0x6d70, 0x5773,
+ 0x7c54, 0x5a57, 0x4c5f, 0x7254, 0x5130, 0x4c60, 0x5b7d, 0x733f,
+ 0x7051, 0x7c3b, 0x6230, 0x6625, 0x625b, 0x5f5e, 0x6047, 0x726f,
+ 0x4c61, 0x566a, 0x6742, 0x4e36, 0x7340, 0x4d7e, 0x7b52, 0x7878,
+ 0x777b, 0x683f, 0x6837, 0x6d36, 0x5c3a, 0x4c34, 0x7177, 0x6838,
+ 0x4a76, 0x6424, 0x7456, 0x5f66, 0x5f27, 0x5f67, 0x6141, 0x6944,
+ 0x5c4b, 0x6945, 0x6f23, 0x6b26, 0x4b23, 0x6369, 0x517b, 0x6f24,
+ 0x6f6b, 0x5034, 0x4d23, 0x6866, 0x6f25, 0x534c, 0x5a6d, 0x573a,
+ 0x7255, 0x7565, 0x596f, 0x7934, 0x5554, 0x7d4f, 0x5b63, 0x7161,
+ 0x6c36, 0x7b7e, 0x5357, 0x5131, 0x4b31, 0x5132, 0x4b32, 0x7142,
+ 0x7461, 0x7935, 0x6143, 0x6142, 0x6b77, 0x5f28, 0x4b4a, 0x6639,
+ 0x785e, 0x792a, 0x4a77, 0x6d37, 0x5338, 0x7256, 0x5459, 0x6e45,
+ 0x7270, 0x4a32, 0x5c3b, 0x7178, 0x6c37, 0x654a, 0x7640, 0x7d5d,
+ 0x5463, 0x4c62, 0x7754, 0x5765, 0x5343, 0x5826, 0x7641, 0x5d76,
+ 0x4d40, 0x655c, 0x654b, 0x6144, 0x6830, 0x7430, 0x736a, 0x5a6e,
+ 0x573b, 0x6231, 0x572a, 0x567b, 0x645f, 0x4a56, 0x6b28, 0x5b7e,
+ 0x7642, 0x6f3b, 0x547d, 0x6048, 0x6839, 0x6f26, 0x4d24, 0x5474,
+ 0x5b21, 0x5b5c, 0x5b5d, 0x6e5c, 0x4b4b, 0x7c55, 0x4e6b, 0x4d41,
+ 0x7b53, 0x792b, 0x7554, 0x5929, 0x695d, 0x5b4d, 0x5d4e, 0x6743,
+ 0x6c4c, 0x796c, 0x4b4c, 0x607c, 0x5428, 0x6d53, 0x586f, 0x7257,
+ 0x4a78, 0x5a6f, 0x5654, 0x594d, 0x586e, 0x7241, 0x5f53, 0x5a70,
+ 0x626a, 0x607d, 0x5878, 0x772f, 0x5a36, 0x4a57, 0x7258, 0x5879,
+ 0x7a5f, 0x4f6f, 0x5942, 0x7052, 0x6451, 0x7337, 0x7a60, 0x6f6c,
+ 0x6232, 0x543d, 0x594e, 0x7462, 0x5429, 0x4d42, 0x675a, 0x7259,
+ 0x592a, 0x583e, 0x5c2d, 0x626b, 0x567c, 0x4a79, 0x545a, 0x7457,
+ 0x4c21, 0x4f3a, 0x7538, 0x5943, 0x5068, 0x6345, 0x6b78, 0x7231,
+ 0x4f3b, 0x532d, 0x6861, 0x4e6c, 0x6034, 0x5e63, 0x5d77, 0x7232,
+ 0x7376, 0x765b, 0x577e, 0x785f, 0x7772, 0x5029, 0x665a, 0x7526,
+ 0x573c, 0x4c63, 0x665b, 0x5d5d, 0x5133, 0x6f6d, 0x565e, 0x6474,
+ 0x616f, 0x5d78, 0x684f, 0x4a65, 0x5c21, 0x6035, 0x7c2c, 0x7c2d,
+ 0x5827, 0x6d38, 0x5b36, 0x5670, 0x732f, 0x4d25, 0x5a71, 0x5828,
+ 0x4c64, 0x5134, 0x4a58, 0x5a72, 0x7527, 0x7528, 0x6626, 0x556c,
+ 0x5578, 0x5a73, 0x6346, 0x5e64, 0x5e65, 0x5135, 0x5136, 0x5137,
+ 0x7233, 0x695e, 0x7053, 0x7234, 0x7054, 0x4b64, 0x7b54, 0x7566,
+ 0x636a, 0x5e66, 0x5f54, 0x7879, 0x702e, 0x5138, 0x565f, 0x5057,
+ 0x7c21, 0x6f6e, 0x5c58, 0x695f, 0x655d, 0x7d7b, 0x6049, 0x5649,
+ 0x542a, 0x654c, 0x6960, 0x5058, 0x7c22, 0x543e, 0x6233, 0x5e67,
+ 0x5c3c, 0x5236, 0x7555, 0x4e21, 0x7529, 0x5d79, 0x5d7a, 0x7055,
+ 0x765f, 0x725a, 0x646b, 0x7271, 0x6c39, 0x7d7c, 0x612a, 0x4a59,
+ 0x6f6f, 0x752a, 0x6c79, 0x782d, 0x7242, 0x7643, 0x5752, 0x7922,
+ 0x7056, 0x707a, 0x7660, 0x6973, 0x7243, 0x542b, 0x4a33, 0x4d26,
+ 0x4d43, 0x4d5a, 0x594f, 0x7644, 0x6e5d, 0x6744, 0x6234, 0x5f62,
+ 0x675b, 0x6831, 0x7c2e, 0x654d, 0x7a6b, 0x4f3c, 0x4f62, 0x4d76,
+ 0x6f70, 0x743e, 0x544d, 0x7338, 0x6921, 0x7272, 0x736b, 0x7057,
+ 0x4f57, 0x4f5f, 0x6840, 0x6841, 0x4f63, 0x6922, 0x502a, 0x7341,
+ 0x502b, 0x5464, 0x6f3c, 0x5821, 0x595f, 0x7357, 0x5c3d, 0x4c65,
+ 0x6d71, 0x7162, 0x545b, 0x6235, 0x4a66, 0x532e, 0x4c66, 0x7153,
+ 0x7567, 0x4a5a, 0x7b6e, 0x6145, 0x5f69, 0x6e5e, 0x7742, 0x5822,
+ 0x5d2c, 0x702f, 0x563d, 0x612b, 0x7936, 0x5475, 0x5049, 0x6f27,
+ 0x626c, 0x5b6a, 0x4e4c, 0x7568, 0x7755, 0x534d, 0x737e, 0x5035,
+ 0x607e, 0x5f7b, 0x665d, 0x6824, 0x4b4d, 0x6f28, 0x6e34, 0x5a58,
+ 0x5139, 0x5f29, 0x7330, 0x4c44, 0x4e37, 0x6f29, 0x5f55, 0x6d57,
+ 0x6e46, 0x6f3d, 0x7c56, 0x5b74, 0x6f2a, 0x7839, 0x7569, 0x6359,
+ 0x6146, 0x543f, 0x5e68, 0x706a, 0x7342, 0x532f, 0x4a5b, 0x7c57,
+ 0x6d58, 0x6147, 0x7458, 0x5633, 0x5d2d, 0x553e, 0x7143, 0x6e5f,
+ 0x566b, 0x7459, 0x5766, 0x5a37, 0x5d7b, 0x5d4f, 0x5823, 0x5a59,
+ 0x7058, 0x6f44, 0x6158, 0x7154, 0x6d72, 0x555b, 0x555c, 0x7344,
+ 0x4b57, 0x6236, 0x6f71, 0x7b55, 0x5358, 0x5d50, 0x7059, 0x4b33,
+ 0x555d, 0x4d27, 0x502c, 0x513a, 0x7144, 0x6533, 0x7b75, 0x6961,
+ 0x7d60, 0x7c3c, 0x5a22, 0x5a23, 0x5221, 0x526f, 0x626d, 0x5e69,
+ 0x4e5c, 0x7235, 0x5064, 0x5d51, 0x6148, 0x5b37, 0x5f63, 0x6d39,
+ 0x7145, 0x734f, 0x572b, 0x612c, 0x636b, 0x6e47, 0x6149, 0x4a7a,
+ 0x707b, 0x7a61, 0x705a, 0x4c67, 0x5a74, 0x4c3f, 0x4e6d, 0x5529,
+ 0x7a62, 0x5065, 0x6b56, 0x6c5f, 0x5f7c, 0x7756, 0x5e6a, 0x4b34,
+ 0x6f3e, 0x4c35, 0x4f3d, 0x6f72, 0x6237, 0x4c68, 0x707c, 0x5660,
+ 0x7146, 0x6238, 0x6b2b, 0x4b35, 0x5851, 0x744e, 0x7377, 0x5746,
+ 0x513b, 0x772a, 0x6d4a, 0x5753, 0x587a, 0x7645, 0x514c, 0x5d7c,
+ 0x5f7d, 0x7965, 0x604a, 0x727d, 0x5330, 0x7473, 0x5a49, 0x665e,
+ 0x783a, 0x6850, 0x587b, 0x6a55, 0x5623, 0x7646, 0x725b, 0x647c,
+ 0x6832, 0x5a5a, 0x725c, 0x7b56, 0x6932, 0x6e2d, 0x7a63, 0x5c6e,
+ 0x756a, 0x6660, 0x707d, 0x572c, 0x7545, 0x6e60, 0x5b65, 0x5d5e,
+ 0x5970, 0x6923, 0x7179, 0x7244, 0x604b, 0x6924, 0x6239, 0x6331,
+ 0x7c6b, 0x4d28, 0x4c36, 0x705b, 0x663a, 0x4d29, 0x7343, 0x6159,
+ 0x6f2b, 0x6745, 0x6069, 0x7345, 0x5440, 0x553f, 0x5d2e, 0x797c,
+ 0x4c40, 0x6522, 0x4e38, 0x5852, 0x7956, 0x712a, 0x4e51, 0x7647,
+ 0x5b6b, 0x5f7e, 0x5861, 0x7773, 0x5767, 0x547e, 0x513c, 0x654f,
+ 0x4b36, 0x5a38, 0x4d44, 0x563e, 0x623a, 0x4f58, 0x604c, 0x6b79,
+ 0x7d7d, 0x5768, 0x4b58, 0x6962, 0x683a, 0x6347, 0x6c4d, 0x6c4e,
+ 0x563f, 0x6327, 0x5f56, 0x7d68, 0x6e61, 0x7628, 0x5d7d, 0x783b,
+ 0x6851, 0x7957, 0x4e6e, 0x6c4f, 0x6925, 0x5655, 0x4d45, 0x6d3a,
+ 0x513d, 0x4f3e, 0x6c3b, 0x5231, 0x4c69, 0x5944, 0x697c, 0x513e,
+ 0x6c3c, 0x652d, 0x7730, 0x4c6a, 0x5344, 0x5640, 0x567d, 0x6121,
+ 0x5e3d, 0x7629, 0x5a24, 0x5624, 0x7546, 0x6122, 0x6946, 0x7245,
+ 0x7469, 0x566c, 0x6b53, 0x6c3d, 0x625c, 0x5e6b, 0x705c, 0x6b3f,
+ 0x574e, 0x513f, 0x752b, 0x797d, 0x4a5c, 0x4d46, 0x7236, 0x5d7e,
+ 0x4c37, 0x5b38, 0x5069, 0x4e5d, 0x6b40, 0x7d22, 0x784b, 0x6a56,
+ 0x7130, 0x5b4e, 0x7743, 0x5b4f, 0x4b24, 0x7860, 0x7b57, 0x6b4a,
+ 0x6021, 0x4e4d, 0x545c, 0x7d58, 0x5276, 0x7237, 0x7a76, 0x762a,
+ 0x7a77, 0x5866, 0x7431, 0x6852, 0x4a45, 0x4c6b, 0x626e, 0x623b,
+ 0x772d, 0x7861, 0x736c, 0x5e21, 0x647d, 0x636c, 0x5d2f, 0x5d30,
+ 0x4b37, 0x6853, 0x6123, 0x5260, 0x707e, 0x6926, 0x4b72, 0x6d73,
+ 0x5c59, 0x604d, 0x775a, 0x5b39, 0x4c2e, 0x5a5b, 0x4d47, 0x5d31,
+ 0x582f, 0x6323, 0x4e6f, 0x7273, 0x7833, 0x604e, 0x757d, 0x6b6c,
+ 0x5345, 0x7c6c, 0x525b, 0x546b, 0x5e22, 0x6566, 0x7030, 0x5544,
+ 0x6d74, 0x636d, 0x6842, 0x6d75, 0x577c, 0x6d3b, 0x762b, 0x7238,
+ 0x7648, 0x5366, 0x725d, 0x4f3f, 0x6b2c, 0x4f40, 0x6628, 0x7d69,
+ 0x4f41, 0x605f, 0x5e6c, 0x6022, 0x743f, 0x626f, 0x5971, 0x7147,
+ 0x4b38, 0x797e, 0x5b3a, 0x5a75, 0x766c, 0x5a5c, 0x7a64, 0x604f,
+ 0x5d32, 0x6629, 0x6f73, 0x736d, 0x6b7a, 0x7966, 0x4a5d, 0x555e,
+ 0x4a5e, 0x5f64, 0x667d, 0x752c, 0x6475, 0x6963, 0x6d4b, 0x4f64,
+ 0x5853, 0x5d33, 0x546c, 0x7239, 0x5f37, 0x4b4e, 0x7b58, 0x5059,
+ 0x5d52, 0x7774, 0x675c, 0x6425, 0x7c23, 0x5b3b, 0x723a, 0x697d,
+ 0x504a, 0x7556, 0x5945, 0x6434, 0x6d27, 0x6a3d, 0x667e, 0x7744,
+ 0x752d, 0x5960, 0x4a34, 0x7862, 0x4f42, 0x6c3e, 0x6534, 0x4d48,
+ 0x6e48, 0x6748, 0x4d49, 0x7937, 0x7168, 0x5972, 0x5b75, 0x4a35,
+ 0x5946, 0x5849, 0x592b, 0x6d3c, 0x5854, 0x5c5a, 0x623c, 0x7c6d,
+ 0x6c60, 0x527e, 0x6947, 0x662a, 0x6270, 0x7a3b, 0x752e, 0x7b2a,
+ 0x6c7b, 0x6c3f, 0x7c58, 0x5465, 0x7943, 0x6e62, 0x5769, 0x6d76,
+ 0x5e6d, 0x4c6c, 0x636e, 0x6854, 0x7a78, 0x5d34, 0x6435, 0x5830,
+ 0x5855, 0x746a, 0x4e39, 0x5661, 0x4f52, 0x5036, 0x4e22, 0x736e,
+ 0x7378, 0x5c4c, 0x504b, 0x7c24, 0x4d4a, 0x5754, 0x5e23, 0x6460,
+ 0x6e49, 0x625d, 0x757e, 0x542c, 0x5551, 0x5870, 0x7843, 0x6a57,
+ 0x7557, 0x583f, 0x7d40, 0x6b2d, 0x552a, 0x6728, 0x6e4a, 0x4a67,
+ 0x7863, 0x545d, 0x6a58, 0x7b59, 0x6d77, 0x6535, 0x502d, 0x7171,
+ 0x623d, 0x6348, 0x5955, 0x5f2a, 0x5b3c, 0x7864, 0x717a, 0x6536,
+ 0x736f, 0x7b5a, 0x6160, 0x592c, 0x756b, 0x6036, 0x6948, 0x4b4f,
+ 0x6349, 0x5e6e, 0x623e, 0x5c6f, 0x5625, 0x6271, 0x567e, 0x5921,
+ 0x5840, 0x5c5b, 0x6d3d, 0x5f38, 0x6a25, 0x572d, 0x7379, 0x6d78,
+ 0x7547, 0x614a, 0x6b63, 0x725e, 0x784c, 0x6a59, 0x5346, 0x5b66,
+ 0x752f, 0x4e70, 0x697e, 0x7b36, 0x6272, 0x4f72, 0x7739, 0x5973,
+ 0x614b, 0x5a5d, 0x5a39, 0x6b7b, 0x4b39, 0x6d79, 0x6060, 0x7440,
+ 0x7d3c, 0x5f31, 0x636f, 0x6023, 0x7d39, 0x7031, 0x4d4b, 0x6d3e,
+ 0x5540, 0x6370, 0x6d7a, 0x6964, 0x556d, 0x675d, 0x5476, 0x6537,
+ 0x5b67, 0x623f, 0x6e4b, 0x5774, 0x705d, 0x4e2b, 0x675e, 0x5656,
+ 0x614c, 0x6833, 0x656e, 0x5c22, 0x6050, 0x5535, 0x5521, 0x7b5b,
+ 0x794b, 0x4b73, 0x7425, 0x7a48, 0x5657, 0x6965, 0x7b5c, 0x7d50,
+ 0x7b76, 0x5a25, 0x5b3d, 0x6c62, 0x4d77, 0x705e, 0x7649, 0x5e6f,
+ 0x5331, 0x7c6e, 0x6843, 0x7148, 0x4e71, 0x796d, 0x7274, 0x6436,
+ 0x7539, 0x5c70, 0x6371, 0x6825, 0x723b, 0x5e24, 0x5a4c, 0x4a69,
+ 0x635a, 0x7c59, 0x6a5a, 0x7944, 0x6324, 0x7b5d, 0x6f4a, 0x6844,
+ 0x554c, 0x6b57, 0x592d, 0x7b2b, 0x5359, 0x5522, 0x765e, 0x5a76,
+ 0x6051, 0x6928, 0x7579, 0x7a2f, 0x6b7c, 0x606a, 0x6332, 0x5545,
+ 0x7163, 0x556e, 0x4d4c, 0x6d59, 0x5841, 0x7a6c, 0x716b, 0x7a3c,
+ 0x6662, 0x7a65, 0x627a, 0x4a36, 0x6437, 0x6a5b, 0x757a, 0x7b2c,
+ 0x4f43, 0x6b7d, 0x787a, 0x5f39, 0x6171, 0x5224, 0x757b, 0x505a,
+ 0x505b, 0x6a3e, 0x5931, 0x4a37, 0x5367, 0x7865, 0x5332, 0x6240,
+ 0x725f, 0x4d65, 0x792c, 0x4d4d, 0x6e2e, 0x562e, 0x576a, 0x6760,
+ 0x6b2e, 0x4f59, 0x5c4d, 0x6d7b, 0x5e70, 0x576b, 0x5e25, 0x5f57,
+ 0x5b50, 0x5b51, 0x5523, 0x7032, 0x5c5c, 0x4a68, 0x7866, 0x5c4e,
+ 0x6a5c, 0x5b52, 0x6933, 0x775b, 0x6328, 0x572e, 0x6061, 0x4b3a,
+ 0x6551, 0x505c, 0x5541, 0x584a, 0x6329, 0x6024, 0x6929, 0x5347,
+ 0x5c5d, 0x782e, 0x4c38, 0x502e, 0x5872, 0x634a, 0x4c2f, 0x542d,
+ 0x7651, 0x504c, 0x4a46, 0x5542, 0x4e3a, 0x4a47, 0x7a30, 0x5f58,
+ 0x753a, 0x656b, 0x6f74, 0x5d35, 0x4d2a, 0x6372, 0x7b77, 0x7750,
+ 0x7d3a, 0x7d61, 0x767e, 0x5140, 0x6845, 0x6438, 0x6168, 0x4c41,
+ 0x526d, 0x5b3e, 0x6062, 0x7a49, 0x614d, 0x4a38, 0x7260, 0x7149,
+ 0x5e71, 0x705f, 0x7844, 0x6e4c, 0x5e72, 0x6749, 0x6273, 0x6761,
+ 0x634b, 0x634c, 0x4f78, 0x6f2c, 0x7d7e, 0x7c25, 0x7a31, 0x5f59,
+ 0x6052, 0x745a, 0x714a, 0x4e23, 0x723c, 0x6c63, 0x6025, 0x772b,
+ 0x6b2f, 0x655e, 0x6124, 0x4d2b, 0x5974, 0x6826, 0x4d4e, 0x6169,
+ 0x7c6f, 0x6063, 0x6241, 0x4e24, 0x5e26, 0x6b7e, 0x6b5d, 0x7060,
+ 0x745b, 0x6274, 0x5348, 0x746b, 0x6e35, 0x7558, 0x555f, 0x5665,
+ 0x6b30, 0x7463, 0x634d, 0x7474, 0x7a32, 0x6f75, 0x4a5f, 0x6b31,
+ 0x6d3f, 0x7d49, 0x6426, 0x7924, 0x7033, 0x656c, 0x5167, 0x5947,
+ 0x6457, 0x6a5d, 0x5477, 0x5a3a, 0x5a4d, 0x794c, 0x615a, 0x5b3f,
+ 0x4c45, 0x6c50, 0x4b3b, 0x5e73, 0x692a, 0x5948, 0x6e63, 0x573d,
+ 0x4f44, 0x504d, 0x7c26, 0x717b, 0x7d52, 0x5141, 0x635b, 0x5349,
+ 0x5c4f, 0x4c6d, 0x5e27, 0x663b, 0x6c21, 0x4c39, 0x7b5e, 0x6762,
+ 0x5441, 0x5c28, 0x6242, 0x7358, 0x6553, 0x7359, 0x7346, 0x4d5b,
+ 0x4d2c, 0x7c43, 0x5467, 0x5142, 0x7925, 0x6855, 0x634e, 0x544a,
+ 0x5f5a, 0x7b5f, 0x6763, 0x787b, 0x634f, 0x7530, 0x5867, 0x5949,
+ 0x782f, 0x6f76, 0x5d36, 0x6e2f, 0x4d78, 0x5e38, 0x7c27, 0x777c,
+ 0x7731, 0x4e3b, 0x7421, 0x6e4d, 0x612e, 0x6c43, 0x4f7e, 0x783f,
+ 0x5862, 0x5368, 0x5e28, 0x7464, 0x6c42, 0x5975, 0x7945, 0x5d53,
+ 0x5671, 0x6c7c, 0x7c70, 0x6d40, 0x4a39, 0x6e64, 0x7261, 0x5e39,
+ 0x5672, 0x5e74, 0x5f5b, 0x5b53, 0x7a67, 0x5863, 0x7441, 0x5d37,
+ 0x7275, 0x542e, 0x5673, 0x5d38, 0x4f45, 0x5f5f, 0x723e, 0x7621,
+ 0x6b4b, 0x717c, 0x7347, 0x606b, 0x6d7c, 0x615b, 0x6e65, 0x5e75,
+ 0x7a53, 0x714b, 0x502f, 0x5d39, 0x5143, 0x7531, 0x6a46, 0x7061,
+ 0x762c, 0x7559, 0x706b, 0x5d3a, 0x723f, 0x7745, 0x5b22, 0x7276,
+ 0x4a3a, 0x7775, 0x4b65, 0x6e66, 0x6053, 0x4e25, 0x5658, 0x542f,
+ 0x6949, 0x534e, 0x7442, 0x4b66, 0x7121, 0x6b32, 0x7122, 0x6b33,
+ 0x7034, 0x4b74, 0x5430, 0x7332, 0x7b37, 0x756c, 0x6e67, 0x7432,
+ 0x756d, 0x4f73, 0x7062, 0x6e4e, 0x714c, 0x6538, 0x5775, 0x6373,
+ 0x4f65, 0x4f46, 0x7333, 0x6458, 0x4f79, 0x4f5a, 0x7a4d, 0x6663,
+ 0x7262, 0x756e, 0x4a3b, 0x635c, 0x4e72, 0x5659, 0x6e30, 0x7465,
+ 0x5842, 0x5c50, 0x4c6e, 0x5560, 0x764a, 0x7d4a, 0x5856, 0x744f,
+ 0x5626, 0x5c3e, 0x5b54, 0x5747, 0x727e, 0x714d, 0x6243, 0x5c5e,
+ 0x5c5f, 0x6f2d, 0x662b, 0x795d, 0x6a3f, 0x6f2e, 0x7450, 0x4e73,
+ 0x662c, 0x4e5e, 0x5579, 0x6374, 0x4d50, 0x5538, 0x777d, 0x5c29,
+ 0x5e76, 0x5c2a, 0x7263, 0x6934, 0x525c, 0x6966, 0x6376, 0x674a,
+ 0x504e, 0x5a77, 0x4a3c, 0x6e68, 0x5a5e, 0x7277, 0x627b, 0x4c26,
+ 0x5a3b, 0x6e69, 0x755a, 0x775c, 0x616a, 0x4e41, 0x5431, 0x7d31,
+ 0x663d, 0x7b2d, 0x7867, 0x614e, 0x7762, 0x756f, 0x4f47, 0x5432,
+ 0x4c6f, 0x5468, 0x6e4f, 0x7757, 0x6026, 0x5641, 0x615c, 0x7063,
+ 0x7164, 0x5c71, 0x5627, 0x7475, 0x714e, 0x7264, 0x5030, 0x6c6f,
+ 0x793a, 0x6b35, 0x546d, 0x6244, 0x6967, 0x6b34, 0x6a21, 0x783c,
+ 0x4e26, 0x7946, 0x7c5a, 0x5433, 0x5339, 0x6a5e, 0x692b, 0x6161,
+ 0x534f, 0x7476, 0x6a40, 0x614f, 0x4c3a, 0x6e6a, 0x7064, 0x7334,
+ 0x546e, 0x7240, 0x7165, 0x7443, 0x6054, 0x6b36, 0x5721, 0x4b68,
+ 0x792d, 0x692d, 0x5864, 0x7a33, 0x6245, 0x7c3d, 0x6c44, 0x5831,
+ 0x5c2b, 0x5524, 0x6b69, 0x683b, 0x5857, 0x7b2e, 0x5161, 0x5b40,
+ 0x753e, 0x5e77, 0x4a7b, 0x7746, 0x4f48, 0x6150, 0x6e50, 0x6974,
+ 0x4e74, 0x554d, 0x4f5b, 0x5d3b, 0x4e2c, 0x6968, 0x5434, 0x6447,
+ 0x755b, 0x7a41, 0x5e29, 0x5478, 0x6f77, 0x5333, 0x6b37, 0x6f78,
+ 0x755c, 0x6d4c, 0x5b55, 0x714f, 0x7150, 0x7532, 0x592e, 0x552c,
+ 0x6246, 0x7d23, 0x7b65, 0x5f2b, 0x6275, 0x762d, 0x7533, 0x7035,
+ 0x6125, 0x755d, 0x6c22, 0x6d7d, 0x7534, 0x7b38, 0x5b23, 0x564a,
+ 0x4b59, 0x6554, 0x737a, 0x6b38, 0x6037, 0x576c, 0x716c, 0x652f,
+ 0x5561, 0x576d, 0x5151, 0x6172, 0x6f79, 0x5d3c, 0x765c, 0x7065,
+ 0x7444, 0x6969, 0x737b, 0x546f, 0x4c22, 0x777e, 0x5f3c, 0x6b4d,
+ 0x5037, 0x5642, 0x682d, 0x6f2f, 0x4b25, 0x4b69, 0x7a68, 0x4c46,
+ 0x6667, 0x6a47, 0x5b24, 0x4f49, 0x627c, 0x6f7a, 0x6b5e, 0x7548,
+ 0x545e, 0x6055, 0x6f30, 0x6247, 0x592f, 0x7967, 0x6765, 0x4f4a,
+ 0x6151, 0x6248, 0x6f7b, 0x7a79, 0x5c72, 0x6027, 0x7868, 0x4b6a,
+ 0x4b3c, 0x5662, 0x755e, 0x755f, 0x6e36, 0x6276, 0x534a, 0x6f7c,
+ 0x5144, 0x6f31, 0x5145, 0x505e, 0x5961, 0x6038, 0x4d51, 0x7339,
+ 0x674c, 0x5628, 0x4e27, 0x5435, 0x6448, 0x5334, 0x6b39, 0x4b75,
+ 0x765d, 0x7123, 0x4c47, 0x694a, 0x6170, 0x7560, 0x7b2f, 0x4b51,
+ 0x7b60, 0x7265, 0x6c70, 0x706c, 0x6e6b, 0x694b, 0x4c70, 0x572f,
+ 0x7321, 0x7c75, 0x7124, 0x6056, 0x6f32, 0x7451, 0x7721, 0x7151,
+ 0x4a7c, 0x4a7d, 0x4e4e, 0x7348, 0x733a, 0x6d7e, 0x5a26, 0x606c,
+ 0x784d, 0x4b52, 0x6b4e, 0x7958, 0x7959, 0x4a60, 0x5a4a, 0x4b26,
+ 0x4a48, 0x796e, 0x5b6c, 0x5031, 0x556f, 0x6673, 0x6722, 0x6459,
+ 0x6461, 0x7c44, 0x796f, 0x4f74, 0x7766, 0x4e3c, 0x7445, 0x5c23,
+ 0x5d3d, 0x7446, 0x7821, 0x6856, 0x5b41, 0x7066, 0x6439, 0x766d,
+ 0x792e, 0x5d3e, 0x5730, 0x5868, 0x4b3d, 0x795a, 0x784e, 0x7970,
+ 0x606d, 0x6333, 0x7433, 0x6a42, 0x7266, 0x7036, 0x5b56, 0x6b64,
+ 0x7267, 0x5755, 0x5436, 0x7968, 0x5741, 0x6555, 0x696a, 0x574c,
+ 0x5369, 0x6249, 0x7c5b, 0x4d2d, 0x4c30, 0x6a22, 0x6476, 0x5040,
+ 0x7037, 0x6e21, 0x5776, 0x624a, 0x624b, 0x7a4f, 0x6b5f, 0x564b,
+ 0x7434, 0x6d4d, 0x6452, 0x6a29, 0x643a, 0x7322, 0x4d52, 0x764b,
+ 0x7166, 0x6d41, 0x683c, 0x6e51, 0x7067, 0x624c, 0x642a, 0x7561,
+ 0x6d5a, 0x576e, 0x5171, 0x696b, 0x696c, 0x6064, 0x5a27, 0x5d54,
+ 0x6a23, 0x5643, 0x5674, 0x5a5f, 0x6f33, 0x624d, 0x6f7d, 0x7268,
+ 0x6f45, 0x6767, 0x577d, 0x674e, 0x5f5c, 0x7947, 0x5976, 0x5f2c,
+ 0x565a, 0x5c24, 0x7038, 0x557a, 0x6477, 0x5644, 0x746c, 0x6f7e,
+ 0x7021, 0x5e2a, 0x5a3c, 0x587c, 0x7a54, 0x6c65, 0x7c28, 0x6c66,
+ 0x584b, 0x7b39, 0x6453, 0x4d79, 0x4f53, 0x4a6a, 0x4f54, 0x783d,
+ 0x7447, 0x6a5f, 0x795b, 0x5437, 0x6b65, 0x6152, 0x6a24, 0x7a42,
+ 0x7b61, 0x7a6d, 0x7022, 0x4c71, 0x7a23, 0x6277, 0x624e, 0x6975,
+ 0x616b, 0x6768, 0x6857, 0x5a78, 0x544b, 0x7776, 0x5645, 0x5469,
+ 0x7a7a, 0x4c72, 0x775d, 0x5e3a, 0x4e28, 0x7039, 0x647e, 0x6449,
+ 0x6454, 0x6a43, 0x6f34, 0x573e, 0x7b62, 0x4d53, 0x6f35, 0x7a69,
+ 0x7926, 0x5f3d, 0x7747, 0x787d, 0x787c, 0x5e2b, 0x5b68, 0x635d,
+ 0x6162, 0x5146, 0x7650, 0x6b66, 0x5a79, 0x6c47, 0x5e78, 0x7869,
+ 0x635e, 0x4e75, 0x7a43, 0x6557, 0x6c48, 0x7349, 0x643b, 0x662e,
+ 0x6f36, 0x5c3f, 0x4e3d, 0x5843, 0x504f, 0x4f7a, 0x734a, 0x6057,
+ 0x5147, 0x692e, 0x683d, 0x7a44, 0x624f, 0x7a45, 0x7938, 0x5c60,
+ 0x7b30, 0x5829, 0x655f, 0x7927, 0x766e, 0x764c, 0x6278, 0x6c71,
+ 0x5a60, 0x7152, 0x524c, 0x4f4b, 0x4a3d, 0x5d3f, 0x766f, 0x5e79,
+ 0x7a34, 0x552d, 0x7167, 0x5e3e, 0x5c40, 0x5148, 0x5149, 0x783e,
+ 0x4b76, 0x5479, 0x7562, 0x6153, 0x5869, 0x787e, 0x4f4c, 0x7d24,
+ 0x4e76, 0x7a50, 0x4c73, 0x663e, 0x762e, 0x5570, 0x514a, 0x7c3e,
+ 0x5571, 0x4d69, 0x7a35, 0x6250, 0x7477, 0x4d54, 0x6723, 0x5b25,
+ 0x6251, 0x5722, 0x7763, 0x6a26, 0x5021, 0x4e5a, 0x7b6b, 0x5b26,
+ 0x5b5e, 0x5865, 0x6a60, 0x582a, 0x6560, 0x565b, 0x6f46, 0x786a,
+ 0x6455, 0x4e77, 0x6058, 0x576f, 0x746d, 0x4d66, 0x4c74, 0x7563,
+ 0x644a, 0x5c61, 0x7948, 0x7c3f, 0x6827, 0x5844, 0x4b3e, 0x5c2e,
+ 0x5777, 0x7068, 0x5d40, 0x4f4d, 0x5c73, 0x5930, 0x6669, 0x643c,
+ 0x6a44, 0x646c, 0x6465, 0x7b78, 0x4c3b, 0x643d, 0x4d5c, 0x5977,
+ 0x5d5f, 0x6d4e, 0x5950, 0x6523, 0x794d, 0x4d2e, 0x4f4e, 0x762f,
+ 0x7d53, 0x6b6d, 0x565c, 0x6524, 0x5536, 0x565d, 0x7969, 0x6724,
+ 0x5663, 0x514b, 0x5664, 0x5572, 0x5e7a, 0x5778, 0x586a, 0x4f55,
+ 0x587d, 0x582b, 0x7d4b, 0x7c5c, 0x6028, 0x5573, 0x7d59, 0x4c23,
+ 0x5979, 0x536a, 0x7575, 0x6f47, 0x535a, 0x5a3d, 0x6828, 0x5c2f,
+ 0x7023, 0x4d55, 0x6029, 0x5e2c, 0x703a, 0x6e31, 0x6e32, 0x764d,
+ 0x6e52, 0x5646, 0x6065, 0x733b, 0x6561, 0x644b, 0x5723, 0x5b42,
+ 0x4a7e, 0x4f4f, 0x3021, 0x3022, 0x3023, 0x3024, 0x3025, 0x3026,
+ 0x3027, 0x3028, 0x3029, 0x302a, 0x302b, 0x302c, 0x302d, 0x302e,
+ 0x302f, 0x3030, 0x3031, 0x3032, 0x3033, 0x3034, 0x3035, 0x3036,
+ 0x3037, 0x3038, 0x3039, 0x303a, 0x303b, 0x303c, 0x303d, 0x303e,
+ 0x303f, 0x3040, 0x3041, 0x3042, 0x3043, 0x3044, 0x3045, 0x3046,
+ 0x3047, 0x3048, 0x3049, 0x304a, 0x304b, 0x304c, 0x304d, 0x304e,
+ 0x304f, 0x3050, 0x3051, 0x3052, 0x3053, 0x3054, 0x3055, 0x3056,
+ 0x3057, 0x3058, 0x3059, 0x305a, 0x305b, 0x305c, 0x305d, 0x305e,
+ 0x305f, 0x3060, 0x3061, 0x3062, 0x3063, 0x3064, 0x3065, 0x3066,
+ 0x3067, 0x3068, 0x3069, 0x306a, 0x306b, 0x306c, 0x306d, 0x306e,
+ 0x306f, 0x3070, 0x3071, 0x3072, 0x3073, 0x3074, 0x3075, 0x3076,
+ 0x3077, 0x3078, 0x3079, 0x307a, 0x307b, 0x307c, 0x307d, 0x307e,
+ 0x3121, 0x3122, 0x3123, 0x3124, 0x3125, 0x3126, 0x3127, 0x3128,
+ 0x3129, 0x312a, 0x312b, 0x312c, 0x312d, 0x312e, 0x312f, 0x3130,
+ 0x3131, 0x3132, 0x3133, 0x3134, 0x3135, 0x3136, 0x3137, 0x3138,
+ 0x3139, 0x313a, 0x313b, 0x313c, 0x313d, 0x313e, 0x313f, 0x3140,
+ 0x3141, 0x3142, 0x3143, 0x3144, 0x3145, 0x3146, 0x3147, 0x3148,
+ 0x3149, 0x314a, 0x314b, 0x314c, 0x314d, 0x314e, 0x314f, 0x3150,
+ 0x3151, 0x3152, 0x3153, 0x3154, 0x3155, 0x3156, 0x3157, 0x3158,
+ 0x3159, 0x315a, 0x315b, 0x315c, 0x315d, 0x315e, 0x315f, 0x3160,
+ 0x3161, 0x3162, 0x3163, 0x3164, 0x3165, 0x3166, 0x3167, 0x3168,
+ 0x3169, 0x316a, 0x316b, 0x316c, 0x316d, 0x316e, 0x316f, 0x3170,
+ 0x3171, 0x3172, 0x3173, 0x3174, 0x3175, 0x3176, 0x3177, 0x3178,
+ 0x3179, 0x317a, 0x317b, 0x317c, 0x317d, 0x317e, 0x3221, 0x3222,
+ 0x3223, 0x3224, 0x3225, 0x3226, 0x3227, 0x3228, 0x3229, 0x322a,
+ 0x322b, 0x322c, 0x322d, 0x322e, 0x322f, 0x3230, 0x3231, 0x3232,
+ 0x3233, 0x3234, 0x3235, 0x3236, 0x3237, 0x3238, 0x3239, 0x323a,
+ 0x323b, 0x323c, 0x323d, 0x323e, 0x323f, 0x3240, 0x3241, 0x3242,
+ 0x3243, 0x3244, 0x3245, 0x3246, 0x3247, 0x3248, 0x3249, 0x324a,
+ 0x324b, 0x324c, 0x324d, 0x324e, 0x324f, 0x3250, 0x3251, 0x3252,
+ 0x3253, 0x3254, 0x3255, 0x3256, 0x3257, 0x3258, 0x3259, 0x325a,
+ 0x325b, 0x325c, 0x325d, 0x325e, 0x325f, 0x3260, 0x3261, 0x3262,
+ 0x3263, 0x3264, 0x3265, 0x3266, 0x3267, 0x3268, 0x3269, 0x326a,
+ 0x326b, 0x326c, 0x326d, 0x326e, 0x326f, 0x3270, 0x3271, 0x3272,
+ 0x3273, 0x3274, 0x3275, 0x3276, 0x3277, 0x3278, 0x3279, 0x327a,
+ 0x327b, 0x327c, 0x327d, 0x327e, 0x3321, 0x3322, 0x3323, 0x3324,
+ 0x3325, 0x3326, 0x3327, 0x3328, 0x3329, 0x332a, 0x332b, 0x332c,
+ 0x332d, 0x332e, 0x332f, 0x3330, 0x3331, 0x3332, 0x3333, 0x3334,
+ 0x3335, 0x3336, 0x3337, 0x3338, 0x3339, 0x333a, 0x333b, 0x333c,
+ 0x333d, 0x333e, 0x333f, 0x3340, 0x3341, 0x3342, 0x3343, 0x3344,
+ 0x3345, 0x3346, 0x3347, 0x3348, 0x3349, 0x334a, 0x334b, 0x334c,
+ 0x334d, 0x334e, 0x334f, 0x3350, 0x3351, 0x3352, 0x3353, 0x3354,
+ 0x3355, 0x3356, 0x3357, 0x3358, 0x3359, 0x335a, 0x335b, 0x335c,
+ 0x335d, 0x335e, 0x335f, 0x3360, 0x3361, 0x3362, 0x3363, 0x3364,
+ 0x3365, 0x3366, 0x3367, 0x3368, 0x3369, 0x336a, 0x336b, 0x336c,
+ 0x336d, 0x336e, 0x336f, 0x3370, 0x3371, 0x3372, 0x3373, 0x3374,
+ 0x3375, 0x3376, 0x3377, 0x3378, 0x3379, 0x337a, 0x337b, 0x337c,
+ 0x337d, 0x337e, 0x3421, 0x3422, 0x3423, 0x3424, 0x3425, 0x3426,
+ 0x3427, 0x3428, 0x3429, 0x342a, 0x342b, 0x342c, 0x342d, 0x342e,
+ 0x342f, 0x3430, 0x3431, 0x3432, 0x3433, 0x3434, 0x3435, 0x3436,
+ 0x3437, 0x3438, 0x3439, 0x343a, 0x343b, 0x343c, 0x343d, 0x343e,
+ 0x343f, 0x3440, 0x3441, 0x3442, 0x3443, 0x3444, 0x3445, 0x3446,
+ 0x3447, 0x3448, 0x3449, 0x344a, 0x344b, 0x344c, 0x344d, 0x344e,
+ 0x344f, 0x3450, 0x3451, 0x3452, 0x3453, 0x3454, 0x3455, 0x3456,
+ 0x3457, 0x3458, 0x3459, 0x345a, 0x345b, 0x345c, 0x345d, 0x345e,
+ 0x345f, 0x3460, 0x3461, 0x3462, 0x3463, 0x3464, 0x3465, 0x3466,
+ 0x3467, 0x3468, 0x3469, 0x346a, 0x346b, 0x346c, 0x346d, 0x346e,
+ 0x346f, 0x3470, 0x3471, 0x3472, 0x3473, 0x3474, 0x3475, 0x3476,
+ 0x3477, 0x3478, 0x3479, 0x347a, 0x347b, 0x347c, 0x347d, 0x347e,
+ 0x3521, 0x3522, 0x3523, 0x3524, 0x3525, 0x3526, 0x3527, 0x3528,
+ 0x3529, 0x352a, 0x352b, 0x352c, 0x352d, 0x352e, 0x352f, 0x3530,
+ 0x3531, 0x3532, 0x3533, 0x3534, 0x3535, 0x3536, 0x3537, 0x3538,
+ 0x3539, 0x353a, 0x353b, 0x353c, 0x353d, 0x353e, 0x353f, 0x3540,
+ 0x3541, 0x3542, 0x3543, 0x3544, 0x3545, 0x3546, 0x3547, 0x3548,
+ 0x3549, 0x354a, 0x354b, 0x354c, 0x354d, 0x354e, 0x354f, 0x3550,
+ 0x3551, 0x3552, 0x3553, 0x3554, 0x3555, 0x3556, 0x3557, 0x3558,
+ 0x3559, 0x355a, 0x355b, 0x355c, 0x355d, 0x355e, 0x355f, 0x3560,
+ 0x3561, 0x3562, 0x3563, 0x3564, 0x3565, 0x3566, 0x3567, 0x3568,
+ 0x3569, 0x356a, 0x356b, 0x356c, 0x356d, 0x356e, 0x356f, 0x3570,
+ 0x3571, 0x3572, 0x3573, 0x3574, 0x3575, 0x3576, 0x3577, 0x3578,
+ 0x3579, 0x357a, 0x357b, 0x357c, 0x357d, 0x357e, 0x3621, 0x3622,
+ 0x3623, 0x3624, 0x3625, 0x3626, 0x3627, 0x3628, 0x3629, 0x362a,
+ 0x362b, 0x362c, 0x362d, 0x362e, 0x362f, 0x3630, 0x3631, 0x3632,
+ 0x3633, 0x3634, 0x3635, 0x3636, 0x3637, 0x3638, 0x3639, 0x363a,
+ 0x363b, 0x363c, 0x363d, 0x363e, 0x363f, 0x3640, 0x3641, 0x3642,
+ 0x3643, 0x3644, 0x3645, 0x3646, 0x3647, 0x3648, 0x3649, 0x364a,
+ 0x364b, 0x364c, 0x364d, 0x364e, 0x364f, 0x3650, 0x3651, 0x3652,
+ 0x3653, 0x3654, 0x3655, 0x3656, 0x3657, 0x3658, 0x3659, 0x365a,
+ 0x365b, 0x365c, 0x365d, 0x365e, 0x365f, 0x3660, 0x3661, 0x3662,
+ 0x3663, 0x3664, 0x3665, 0x3666, 0x3667, 0x3668, 0x3669, 0x366a,
+ 0x366b, 0x366c, 0x366d, 0x366e, 0x366f, 0x3670, 0x3671, 0x3672,
+ 0x3673, 0x3674, 0x3675, 0x3676, 0x3677, 0x3678, 0x3679, 0x367a,
+ 0x367b, 0x367c, 0x367d, 0x367e, 0x3721, 0x3722, 0x3723, 0x3724,
+ 0x3725, 0x3726, 0x3727, 0x3728, 0x3729, 0x372a, 0x372b, 0x372c,
+ 0x372d, 0x372e, 0x372f, 0x3730, 0x3731, 0x3732, 0x3733, 0x3734,
+ 0x3735, 0x3736, 0x3737, 0x3738, 0x3739, 0x373a, 0x373b, 0x373c,
+ 0x373d, 0x373e, 0x373f, 0x3740, 0x3741, 0x3742, 0x3743, 0x3744,
+ 0x3745, 0x3746, 0x3747, 0x3748, 0x3749, 0x374a, 0x374b, 0x374c,
+ 0x374d, 0x374e, 0x374f, 0x3750, 0x3751, 0x3752, 0x3753, 0x3754,
+ 0x3755, 0x3756, 0x3757, 0x3758, 0x3759, 0x375a, 0x375b, 0x375c,
+ 0x375d, 0x375e, 0x375f, 0x3760, 0x3761, 0x3762, 0x3763, 0x3764,
+ 0x3765, 0x3766, 0x3767, 0x3768, 0x3769, 0x376a, 0x376b, 0x376c,
+ 0x376d, 0x376e, 0x376f, 0x3770, 0x3771, 0x3772, 0x3773, 0x3774,
+ 0x3775, 0x3776, 0x3777, 0x3778, 0x3779, 0x377a, 0x377b, 0x377c,
+ 0x377d, 0x377e, 0x3821, 0x3822, 0x3823, 0x3824, 0x3825, 0x3826,
+ 0x3827, 0x3828, 0x3829, 0x382a, 0x382b, 0x382c, 0x382d, 0x382e,
+ 0x382f, 0x3830, 0x3831, 0x3832, 0x3833, 0x3834, 0x3835, 0x3836,
+ 0x3837, 0x3838, 0x3839, 0x383a, 0x383b, 0x383c, 0x383d, 0x383e,
+ 0x383f, 0x3840, 0x3841, 0x3842, 0x3843, 0x3844, 0x3845, 0x3846,
+ 0x3847, 0x3848, 0x3849, 0x384a, 0x384b, 0x384c, 0x384d, 0x384e,
+ 0x384f, 0x3850, 0x3851, 0x3852, 0x3853, 0x3854, 0x3855, 0x3856,
+ 0x3857, 0x3858, 0x3859, 0x385a, 0x385b, 0x385c, 0x385d, 0x385e,
+ 0x385f, 0x3860, 0x3861, 0x3862, 0x3863, 0x3864, 0x3865, 0x3866,
+ 0x3867, 0x3868, 0x3869, 0x386a, 0x386b, 0x386c, 0x386d, 0x386e,
+ 0x386f, 0x3870, 0x3871, 0x3872, 0x3873, 0x3874, 0x3875, 0x3876,
+ 0x3877, 0x3878, 0x3879, 0x387a, 0x387b, 0x387c, 0x387d, 0x387e,
+ 0x3921, 0x3922, 0x3923, 0x3924, 0x3925, 0x3926, 0x3927, 0x3928,
+ 0x3929, 0x392a, 0x392b, 0x392c, 0x392d, 0x392e, 0x392f, 0x3930,
+ 0x3931, 0x3932, 0x3933, 0x3934, 0x3935, 0x3936, 0x3937, 0x3938,
+ 0x3939, 0x393a, 0x393b, 0x393c, 0x393d, 0x393e, 0x393f, 0x3940,
+ 0x3941, 0x3942, 0x3943, 0x3944, 0x3945, 0x3946, 0x3947, 0x3948,
+ 0x3949, 0x394a, 0x394b, 0x394c, 0x394d, 0x394e, 0x394f, 0x3950,
+ 0x3951, 0x3952, 0x3953, 0x3954, 0x3955, 0x3956, 0x3957, 0x3958,
+ 0x3959, 0x395a, 0x395b, 0x395c, 0x395d, 0x395e, 0x395f, 0x3960,
+ 0x3961, 0x3962, 0x3963, 0x3964, 0x3965, 0x3966, 0x3967, 0x3968,
+ 0x3969, 0x396a, 0x396b, 0x396c, 0x396d, 0x396e, 0x396f, 0x3970,
+ 0x3971, 0x3972, 0x3973, 0x3974, 0x3975, 0x3976, 0x3977, 0x3978,
+ 0x3979, 0x397a, 0x397b, 0x397c, 0x397d, 0x397e, 0x3a21, 0x3a22,
+ 0x3a23, 0x3a24, 0x3a25, 0x3a26, 0x3a27, 0x3a28, 0x3a29, 0x3a2a,
+ 0x3a2b, 0x3a2c, 0x3a2d, 0x3a2e, 0x3a2f, 0x3a30, 0x3a31, 0x3a32,
+ 0x3a33, 0x3a34, 0x3a35, 0x3a36, 0x3a37, 0x3a38, 0x3a39, 0x3a3a,
+ 0x3a3b, 0x3a3c, 0x3a3d, 0x3a3e, 0x3a3f, 0x3a40, 0x3a41, 0x3a42,
+ 0x3a43, 0x3a44, 0x3a45, 0x3a46, 0x3a47, 0x3a48, 0x3a49, 0x3a4a,
+ 0x3a4b, 0x3a4c, 0x3a4d, 0x3a4e, 0x3a4f, 0x3a50, 0x3a51, 0x3a52,
+ 0x3a53, 0x3a54, 0x3a55, 0x3a56, 0x3a57, 0x3a58, 0x3a59, 0x3a5a,
+ 0x3a5b, 0x3a5c, 0x3a5d, 0x3a5e, 0x3a5f, 0x3a60, 0x3a61, 0x3a62,
+ 0x3a63, 0x3a64, 0x3a65, 0x3a66, 0x3a67, 0x3a68, 0x3a69, 0x3a6a,
+ 0x3a6b, 0x3a6c, 0x3a6d, 0x3a6e, 0x3a6f, 0x3a70, 0x3a71, 0x3a72,
+ 0x3a73, 0x3a74, 0x3a75, 0x3a76, 0x3a77, 0x3a78, 0x3a79, 0x3a7a,
+ 0x3a7b, 0x3a7c, 0x3a7d, 0x3a7e, 0x3b21, 0x3b22, 0x3b23, 0x3b24,
+ 0x3b25, 0x3b26, 0x3b27, 0x3b28, 0x3b29, 0x3b2a, 0x3b2b, 0x3b2c,
+ 0x3b2d, 0x3b2e, 0x3b2f, 0x3b30, 0x3b31, 0x3b32, 0x3b33, 0x3b34,
+ 0x3b35, 0x3b36, 0x3b37, 0x3b38, 0x3b39, 0x3b3a, 0x3b3b, 0x3b3c,
+ 0x3b3d, 0x3b3e, 0x3b3f, 0x3b40, 0x3b41, 0x3b42, 0x3b43, 0x3b44,
+ 0x3b45, 0x3b46, 0x3b47, 0x3b48, 0x3b49, 0x3b4a, 0x3b4b, 0x3b4c,
+ 0x3b4d, 0x3b4e, 0x3b4f, 0x3b50, 0x3b51, 0x3b52, 0x3b53, 0x3b54,
+ 0x3b55, 0x3b56, 0x3b57, 0x3b58, 0x3b59, 0x3b5a, 0x3b5b, 0x3b5c,
+ 0x3b5d, 0x3b5e, 0x3b5f, 0x3b60, 0x3b61, 0x3b62, 0x3b63, 0x3b64,
+ 0x3b65, 0x3b66, 0x3b67, 0x3b68, 0x3b69, 0x3b6a, 0x3b6b, 0x3b6c,
+ 0x3b6d, 0x3b6e, 0x3b6f, 0x3b70, 0x3b71, 0x3b72, 0x3b73, 0x3b74,
+ 0x3b75, 0x3b76, 0x3b77, 0x3b78, 0x3b79, 0x3b7a, 0x3b7b, 0x3b7c,
+ 0x3b7d, 0x3b7e, 0x3c21, 0x3c22, 0x3c23, 0x3c24, 0x3c25, 0x3c26,
+ 0x3c27, 0x3c28, 0x3c29, 0x3c2a, 0x3c2b, 0x3c2c, 0x3c2d, 0x3c2e,
+ 0x3c2f, 0x3c30, 0x3c31, 0x3c32, 0x3c33, 0x3c34, 0x3c35, 0x3c36,
+ 0x3c37, 0x3c38, 0x3c39, 0x3c3a, 0x3c3b, 0x3c3c, 0x3c3d, 0x3c3e,
+ 0x3c3f, 0x3c40, 0x3c41, 0x3c42, 0x3c43, 0x3c44, 0x3c45, 0x3c46,
+ 0x3c47, 0x3c48, 0x3c49, 0x3c4a, 0x3c4b, 0x3c4c, 0x3c4d, 0x3c4e,
+ 0x3c4f, 0x3c50, 0x3c51, 0x3c52, 0x3c53, 0x3c54, 0x3c55, 0x3c56,
+ 0x3c57, 0x3c58, 0x3c59, 0x3c5a, 0x3c5b, 0x3c5c, 0x3c5d, 0x3c5e,
+ 0x3c5f, 0x3c60, 0x3c61, 0x3c62, 0x3c63, 0x3c64, 0x3c65, 0x3c66,
+ 0x3c67, 0x3c68, 0x3c69, 0x3c6a, 0x3c6b, 0x3c6c, 0x3c6d, 0x3c6e,
+ 0x3c6f, 0x3c70, 0x3c71, 0x3c72, 0x3c73, 0x3c74, 0x3c75, 0x3c76,
+ 0x3c77, 0x3c78, 0x3c79, 0x3c7a, 0x3c7b, 0x3c7c, 0x3c7d, 0x3c7e,
+ 0x3d21, 0x3d22, 0x3d23, 0x3d24, 0x3d25, 0x3d26, 0x3d27, 0x3d28,
+ 0x3d29, 0x3d2a, 0x3d2b, 0x3d2c, 0x3d2d, 0x3d2e, 0x3d2f, 0x3d30,
+ 0x3d31, 0x3d32, 0x3d33, 0x3d34, 0x3d35, 0x3d36, 0x3d37, 0x3d38,
+ 0x3d39, 0x3d3a, 0x3d3b, 0x3d3c, 0x3d3d, 0x3d3e, 0x3d3f, 0x3d40,
+ 0x3d41, 0x3d42, 0x3d43, 0x3d44, 0x3d45, 0x3d46, 0x3d47, 0x3d48,
+ 0x3d49, 0x3d4a, 0x3d4b, 0x3d4c, 0x3d4d, 0x3d4e, 0x3d4f, 0x3d50,
+ 0x3d51, 0x3d52, 0x3d53, 0x3d54, 0x3d55, 0x3d56, 0x3d57, 0x3d58,
+ 0x3d59, 0x3d5a, 0x3d5b, 0x3d5c, 0x3d5d, 0x3d5e, 0x3d5f, 0x3d60,
+ 0x3d61, 0x3d62, 0x3d63, 0x3d64, 0x3d65, 0x3d66, 0x3d67, 0x3d68,
+ 0x3d69, 0x3d6a, 0x3d6b, 0x3d6c, 0x3d6d, 0x3d6e, 0x3d6f, 0x3d70,
+ 0x3d71, 0x3d72, 0x3d73, 0x3d74, 0x3d75, 0x3d76, 0x3d77, 0x3d78,
+ 0x3d79, 0x3d7a, 0x3d7b, 0x3d7c, 0x3d7d, 0x3d7e, 0x3e21, 0x3e22,
+ 0x3e23, 0x3e24, 0x3e25, 0x3e26, 0x3e27, 0x3e28, 0x3e29, 0x3e2a,
+ 0x3e2b, 0x3e2c, 0x3e2d, 0x3e2e, 0x3e2f, 0x3e30, 0x3e31, 0x3e32,
+ 0x3e33, 0x3e34, 0x3e35, 0x3e36, 0x3e37, 0x3e38, 0x3e39, 0x3e3a,
+ 0x3e3b, 0x3e3c, 0x3e3d, 0x3e3e, 0x3e3f, 0x3e40, 0x3e41, 0x3e42,
+ 0x3e43, 0x3e44, 0x3e45, 0x3e46, 0x3e47, 0x3e48, 0x3e49, 0x3e4a,
+ 0x3e4b, 0x3e4c, 0x3e4d, 0x3e4e, 0x3e4f, 0x3e50, 0x3e51, 0x3e52,
+ 0x3e53, 0x3e54, 0x3e55, 0x3e56, 0x3e57, 0x3e58, 0x3e59, 0x3e5a,
+ 0x3e5b, 0x3e5c, 0x3e5d, 0x3e5e, 0x3e5f, 0x3e60, 0x3e61, 0x3e62,
+ 0x3e63, 0x3e64, 0x3e65, 0x3e66, 0x3e67, 0x3e68, 0x3e69, 0x3e6a,
+ 0x3e6b, 0x3e6c, 0x3e6d, 0x3e6e, 0x3e6f, 0x3e70, 0x3e71, 0x3e72,
+ 0x3e73, 0x3e74, 0x3e75, 0x3e76, 0x3e77, 0x3e78, 0x3e79, 0x3e7a,
+ 0x3e7b, 0x3e7c, 0x3e7d, 0x3e7e, 0x3f21, 0x3f22, 0x3f23, 0x3f24,
+ 0x3f25, 0x3f26, 0x3f27, 0x3f28, 0x3f29, 0x3f2a, 0x3f2b, 0x3f2c,
+ 0x3f2d, 0x3f2e, 0x3f2f, 0x3f30, 0x3f31, 0x3f32, 0x3f33, 0x3f34,
+ 0x3f35, 0x3f36, 0x3f37, 0x3f38, 0x3f39, 0x3f3a, 0x3f3b, 0x3f3c,
+ 0x3f3d, 0x3f3e, 0x3f3f, 0x3f40, 0x3f41, 0x3f42, 0x3f43, 0x3f44,
+ 0x3f45, 0x3f46, 0x3f47, 0x3f48, 0x3f49, 0x3f4a, 0x3f4b, 0x3f4c,
+ 0x3f4d, 0x3f4e, 0x3f4f, 0x3f50, 0x3f51, 0x3f52, 0x3f53, 0x3f54,
+ 0x3f55, 0x3f56, 0x3f57, 0x3f58, 0x3f59, 0x3f5a, 0x3f5b, 0x3f5c,
+ 0x3f5d, 0x3f5e, 0x3f5f, 0x3f60, 0x3f61, 0x3f62, 0x3f63, 0x3f64,
+ 0x3f65, 0x3f66, 0x3f67, 0x3f68, 0x3f69, 0x3f6a, 0x3f6b, 0x3f6c,
+ 0x3f6d, 0x3f6e, 0x3f6f, 0x3f70, 0x3f71, 0x3f72, 0x3f73, 0x3f74,
+ 0x3f75, 0x3f76, 0x3f77, 0x3f78, 0x3f79, 0x3f7a, 0x3f7b, 0x3f7c,
+ 0x3f7d, 0x3f7e, 0x4021, 0x4022, 0x4023, 0x4024, 0x4025, 0x4026,
+ 0x4027, 0x4028, 0x4029, 0x402a, 0x402b, 0x402c, 0x402d, 0x402e,
+ 0x402f, 0x4030, 0x4031, 0x4032, 0x4033, 0x4034, 0x4035, 0x4036,
+ 0x4037, 0x4038, 0x4039, 0x403a, 0x403b, 0x403c, 0x403d, 0x403e,
+ 0x403f, 0x4040, 0x4041, 0x4042, 0x4043, 0x4044, 0x4045, 0x4046,
+ 0x4047, 0x4048, 0x4049, 0x404a, 0x404b, 0x404c, 0x404d, 0x404e,
+ 0x404f, 0x4050, 0x4051, 0x4052, 0x4053, 0x4054, 0x4055, 0x4056,
+ 0x4057, 0x4058, 0x4059, 0x405a, 0x405b, 0x405c, 0x405d, 0x405e,
+ 0x405f, 0x4060, 0x4061, 0x4062, 0x4063, 0x4064, 0x4065, 0x4066,
+ 0x4067, 0x4068, 0x4069, 0x406a, 0x406b, 0x406c, 0x406d, 0x406e,
+ 0x406f, 0x4070, 0x4071, 0x4072, 0x4073, 0x4074, 0x4075, 0x4076,
+ 0x4077, 0x4078, 0x4079, 0x407a, 0x407b, 0x407c, 0x407d, 0x407e,
+ 0x4121, 0x4122, 0x4123, 0x4124, 0x4125, 0x4126, 0x4127, 0x4128,
+ 0x4129, 0x412a, 0x412b, 0x412c, 0x412d, 0x412e, 0x412f, 0x4130,
+ 0x4131, 0x4132, 0x4133, 0x4134, 0x4135, 0x4136, 0x4137, 0x4138,
+ 0x4139, 0x413a, 0x413b, 0x413c, 0x413d, 0x413e, 0x413f, 0x4140,
+ 0x4141, 0x4142, 0x4143, 0x4144, 0x4145, 0x4146, 0x4147, 0x4148,
+ 0x4149, 0x414a, 0x414b, 0x414c, 0x414d, 0x414e, 0x414f, 0x4150,
+ 0x4151, 0x4152, 0x4153, 0x4154, 0x4155, 0x4156, 0x4157, 0x4158,
+ 0x4159, 0x415a, 0x415b, 0x415c, 0x415d, 0x415e, 0x415f, 0x4160,
+ 0x4161, 0x4162, 0x4163, 0x4164, 0x4165, 0x4166, 0x4167, 0x4168,
+ 0x4169, 0x416a, 0x416b, 0x416c, 0x416d, 0x416e, 0x416f, 0x4170,
+ 0x4171, 0x4172, 0x4173, 0x4174, 0x4175, 0x4176, 0x4177, 0x4178,
+ 0x4179, 0x417a, 0x417b, 0x417c, 0x417d, 0x417e, 0x4221, 0x4222,
+ 0x4223, 0x4224, 0x4225, 0x4226, 0x4227, 0x4228, 0x4229, 0x422a,
+ 0x422b, 0x422c, 0x422d, 0x422e, 0x422f, 0x4230, 0x4231, 0x4232,
+ 0x4233, 0x4234, 0x4235, 0x4236, 0x4237, 0x4238, 0x4239, 0x423a,
+ 0x423b, 0x423c, 0x423d, 0x423e, 0x423f, 0x4240, 0x4241, 0x4242,
+ 0x4243, 0x4244, 0x4245, 0x4246, 0x4247, 0x4248, 0x4249, 0x424a,
+ 0x424b, 0x424c, 0x424d, 0x424e, 0x424f, 0x4250, 0x4251, 0x4252,
+ 0x4253, 0x4254, 0x4255, 0x4256, 0x4257, 0x4258, 0x4259, 0x425a,
+ 0x425b, 0x425c, 0x425d, 0x425e, 0x425f, 0x4260, 0x4261, 0x4262,
+ 0x4263, 0x4264, 0x4265, 0x4266, 0x4267, 0x4268, 0x4269, 0x426a,
+ 0x426b, 0x426c, 0x426d, 0x426e, 0x426f, 0x4270, 0x4271, 0x4272,
+ 0x4273, 0x4274, 0x4275, 0x4276, 0x4277, 0x4278, 0x4279, 0x427a,
+ 0x427b, 0x427c, 0x427d, 0x427e, 0x4321, 0x4322, 0x4323, 0x4324,
+ 0x4325, 0x4326, 0x4327, 0x4328, 0x4329, 0x432a, 0x432b, 0x432c,
+ 0x432d, 0x432e, 0x432f, 0x4330, 0x4331, 0x4332, 0x4333, 0x4334,
+ 0x4335, 0x4336, 0x4337, 0x4338, 0x4339, 0x433a, 0x433b, 0x433c,
+ 0x433d, 0x433e, 0x433f, 0x4340, 0x4341, 0x4342, 0x4343, 0x4344,
+ 0x4345, 0x4346, 0x4347, 0x4348, 0x4349, 0x434a, 0x434b, 0x434c,
+ 0x434d, 0x434e, 0x434f, 0x4350, 0x4351, 0x4352, 0x4353, 0x4354,
+ 0x4355, 0x4356, 0x4357, 0x4358, 0x4359, 0x435a, 0x435b, 0x435c,
+ 0x435d, 0x435e, 0x435f, 0x4360, 0x4361, 0x4362, 0x4363, 0x4364,
+ 0x4365, 0x4366, 0x4367, 0x4368, 0x4369, 0x436a, 0x436b, 0x436c,
+ 0x436d, 0x436e, 0x436f, 0x4370, 0x4371, 0x4372, 0x4373, 0x4374,
+ 0x4375, 0x4376, 0x4377, 0x4378, 0x4379, 0x437a, 0x437b, 0x437c,
+ 0x437d, 0x437e, 0x4421, 0x4422, 0x4423, 0x4424, 0x4425, 0x4426,
+ 0x4427, 0x4428, 0x4429, 0x442a, 0x442b, 0x442c, 0x442d, 0x442e,
+ 0x442f, 0x4430, 0x4431, 0x4432, 0x4433, 0x4434, 0x4435, 0x4436,
+ 0x4437, 0x4438, 0x4439, 0x443a, 0x443b, 0x443c, 0x443d, 0x443e,
+ 0x443f, 0x4440, 0x4441, 0x4442, 0x4443, 0x4444, 0x4445, 0x4446,
+ 0x4447, 0x4448, 0x4449, 0x444a, 0x444b, 0x444c, 0x444d, 0x444e,
+ 0x444f, 0x4450, 0x4451, 0x4452, 0x4453, 0x4454, 0x4455, 0x4456,
+ 0x4457, 0x4458, 0x4459, 0x445a, 0x445b, 0x445c, 0x445d, 0x445e,
+ 0x445f, 0x4460, 0x4461, 0x4462, 0x4463, 0x4464, 0x4465, 0x4466,
+ 0x4467, 0x4468, 0x4469, 0x446a, 0x446b, 0x446c, 0x446d, 0x446e,
+ 0x446f, 0x4470, 0x4471, 0x4472, 0x4473, 0x4474, 0x4475, 0x4476,
+ 0x4477, 0x4478, 0x4479, 0x447a, 0x447b, 0x447c, 0x447d, 0x447e,
+ 0x4521, 0x4522, 0x4523, 0x4524, 0x4525, 0x4526, 0x4527, 0x4528,
+ 0x4529, 0x452a, 0x452b, 0x452c, 0x452d, 0x452e, 0x452f, 0x4530,
+ 0x4531, 0x4532, 0x4533, 0x4534, 0x4535, 0x4536, 0x4537, 0x4538,
+ 0x4539, 0x453a, 0x453b, 0x453c, 0x453d, 0x453e, 0x453f, 0x4540,
+ 0x4541, 0x4542, 0x4543, 0x4544, 0x4545, 0x4546, 0x4547, 0x4548,
+ 0x4549, 0x454a, 0x454b, 0x454c, 0x454d, 0x454e, 0x454f, 0x4550,
+ 0x4551, 0x4552, 0x4553, 0x4554, 0x4555, 0x4556, 0x4557, 0x4558,
+ 0x4559, 0x455a, 0x455b, 0x455c, 0x455d, 0x455e, 0x455f, 0x4560,
+ 0x4561, 0x4562, 0x4563, 0x4564, 0x4565, 0x4566, 0x4567, 0x4568,
+ 0x4569, 0x456a, 0x456b, 0x456c, 0x456d, 0x456e, 0x456f, 0x4570,
+ 0x4571, 0x4572, 0x4573, 0x4574, 0x4575, 0x4576, 0x4577, 0x4578,
+ 0x4579, 0x457a, 0x457b, 0x457c, 0x457d, 0x457e, 0x4621, 0x4622,
+ 0x4623, 0x4624, 0x4625, 0x4626, 0x4627, 0x4628, 0x4629, 0x462a,
+ 0x462b, 0x462c, 0x462d, 0x462e, 0x462f, 0x4630, 0x4631, 0x4632,
+ 0x4633, 0x4634, 0x4635, 0x4636, 0x4637, 0x4638, 0x4639, 0x463a,
+ 0x463b, 0x463c, 0x463d, 0x463e, 0x463f, 0x4640, 0x4641, 0x4642,
+ 0x4643, 0x4644, 0x4645, 0x4646, 0x4647, 0x4648, 0x4649, 0x464a,
+ 0x464b, 0x464c, 0x464d, 0x464e, 0x464f, 0x4650, 0x4651, 0x4652,
+ 0x4653, 0x4654, 0x4655, 0x4656, 0x4657, 0x4658, 0x4659, 0x465a,
+ 0x465b, 0x465c, 0x465d, 0x465e, 0x465f, 0x4660, 0x4661, 0x4662,
+ 0x4663, 0x4664, 0x4665, 0x4666, 0x4667, 0x4668, 0x4669, 0x466a,
+ 0x466b, 0x466c, 0x466d, 0x466e, 0x466f, 0x4670, 0x4671, 0x4672,
+ 0x4673, 0x4674, 0x4675, 0x4676, 0x4677, 0x4678, 0x4679, 0x467a,
+ 0x467b, 0x467c, 0x467d, 0x467e, 0x4721, 0x4722, 0x4723, 0x4724,
+ 0x4725, 0x4726, 0x4727, 0x4728, 0x4729, 0x472a, 0x472b, 0x472c,
+ 0x472d, 0x472e, 0x472f, 0x4730, 0x4731, 0x4732, 0x4733, 0x4734,
+ 0x4735, 0x4736, 0x4737, 0x4738, 0x4739, 0x473a, 0x473b, 0x473c,
+ 0x473d, 0x473e, 0x473f, 0x4740, 0x4741, 0x4742, 0x4743, 0x4744,
+ 0x4745, 0x4746, 0x4747, 0x4748, 0x4749, 0x474a, 0x474b, 0x474c,
+ 0x474d, 0x474e, 0x474f, 0x4750, 0x4751, 0x4752, 0x4753, 0x4754,
+ 0x4755, 0x4756, 0x4757, 0x4758, 0x4759, 0x475a, 0x475b, 0x475c,
+ 0x475d, 0x475e, 0x475f, 0x4760, 0x4761, 0x4762, 0x4763, 0x4764,
+ 0x4765, 0x4766, 0x4767, 0x4768, 0x4769, 0x476a, 0x476b, 0x476c,
+ 0x476d, 0x476e, 0x476f, 0x4770, 0x4771, 0x4772, 0x4773, 0x4774,
+ 0x4775, 0x4776, 0x4777, 0x4778, 0x4779, 0x477a, 0x477b, 0x477c,
+ 0x477d, 0x477e, 0x4821, 0x4822, 0x4823, 0x4824, 0x4825, 0x4826,
+ 0x4827, 0x4828, 0x4829, 0x482a, 0x482b, 0x482c, 0x482d, 0x482e,
+ 0x482f, 0x4830, 0x4831, 0x4832, 0x4833, 0x4834, 0x4835, 0x4836,
+ 0x4837, 0x4838, 0x4839, 0x483a, 0x483b, 0x483c, 0x483d, 0x483e,
+ 0x483f, 0x4840, 0x4841, 0x4842, 0x4843, 0x4844, 0x4845, 0x4846,
+ 0x4847, 0x4848, 0x4849, 0x484a, 0x484b, 0x484c, 0x484d, 0x484e,
+ 0x484f, 0x4850, 0x4851, 0x4852, 0x4853, 0x4854, 0x4855, 0x4856,
+ 0x4857, 0x4858, 0x4859, 0x485a, 0x485b, 0x485c, 0x485d, 0x485e,
+ 0x485f, 0x4860, 0x4861, 0x4862, 0x4863, 0x4864, 0x4865, 0x4866,
+ 0x4867, 0x4868, 0x4869, 0x486a, 0x486b, 0x486c, 0x486d, 0x486e,
+ 0x486f, 0x4870, 0x4871, 0x4872, 0x4873, 0x4874, 0x4875, 0x4876,
+ 0x4877, 0x4878, 0x4879, 0x487a, 0x487b, 0x487c, 0x487d, 0x487e,
+ 0x4b50, 0x4b56, 0x4b67, 0x4d4f, 0x4d68, 0x4e2d, 0x4f7b, 0x5022,
+ 0x5038, 0x5050, 0x505d, 0x5154, 0x5155, 0x5158, 0x515b, 0x515c,
+ 0x515d, 0x515e, 0x515f, 0x5160, 0x5162, 0x5163, 0x5164, 0x5165,
+ 0x5166, 0x5168, 0x5169, 0x516a, 0x516b, 0x516d, 0x516f, 0x5170,
+ 0x5172, 0x5176, 0x517a, 0x517c, 0x517d, 0x517e, 0x5222, 0x5223,
+ 0x5227, 0x5228, 0x5229, 0x522a, 0x522b, 0x522d, 0x5232, 0x523e,
+ 0x5242, 0x5243, 0x5244, 0x5246, 0x5247, 0x5248, 0x5249, 0x524a,
+ 0x524b, 0x524d, 0x524e, 0x524f, 0x5250, 0x5251, 0x5252, 0x5253,
+ 0x5254, 0x5255, 0x5256, 0x5257, 0x5259, 0x525a, 0x525e, 0x525f,
+ 0x5261, 0x5262, 0x5264, 0x5265, 0x5266, 0x5267, 0x5268, 0x5269,
+ 0x526a, 0x526b, 0x5270, 0x5271, 0x5272, 0x5273, 0x5274, 0x5275,
+ 0x5277, 0x5278, 0x5466, 0x547c, 0x5525, 0x552b, 0x552e, 0x5638,
+ 0x564d, 0x574b, 0x5764, 0x5b45, 0x5b64, 0x5c25, 0x5d25, 0x5d55,
+ 0x5d74, 0x5e7c, 0x5e7e, 0x5f33, 0x5f61, 0x5f68, 0x6071, 0x612d,
+ 0x616d, 0x6375, 0x6421, 0x6429, 0x652e, 0x6531, 0x6532, 0x6539,
+ 0x653b, 0x653c, 0x6544, 0x654e, 0x6550, 0x6552, 0x6556, 0x657a,
+ 0x657b, 0x657c, 0x657e, 0x6621, 0x6624, 0x6627, 0x662d, 0x662f,
+ 0x6630, 0x6631, 0x6633, 0x6637, 0x6638, 0x663c, 0x6644, 0x6646,
+ 0x6647, 0x664a, 0x6652, 0x6656, 0x6659, 0x665c, 0x665f, 0x6661,
+ 0x6664, 0x6665, 0x6666, 0x6668, 0x666a, 0x666b, 0x666c, 0x666f,
+ 0x6671, 0x6672, 0x6675, 0x6676, 0x6677, 0x6679, 0x6721, 0x6726,
+ 0x6729, 0x672a, 0x672c, 0x672d, 0x6730, 0x673f, 0x6741, 0x6746,
+ 0x6747, 0x674b, 0x674d, 0x674f, 0x6750, 0x6753, 0x675f, 0x6764,
+ 0x6766, 0x6777, 0x6867, 0x6868, 0x6870, 0x6871, 0x6877, 0x6879,
+ 0x687b, 0x687e, 0x6927, 0x692c, 0x694c, 0x6977, 0x6a41, 0x6a65,
+ 0x6a74, 0x6a77, 0x6a7c, 0x6a7e, 0x6b24, 0x6b27, 0x6b29, 0x6b2a,
+ 0x6b3a, 0x6b3b, 0x6b3d, 0x6b41, 0x6b42, 0x6b46, 0x6b47, 0x6b4c,
+ 0x6b4f, 0x6b50, 0x6b51, 0x6b52, 0x6b58, 0x6c26, 0x6c27, 0x6c2a,
+ 0x6c2f, 0x6c30, 0x6c31, 0x6c32, 0x6c35, 0x6c38, 0x6c3a, 0x6c40,
+ 0x6c41, 0x6c45, 0x6c46, 0x6c49, 0x6c4a, 0x6c55, 0x6c5d, 0x6c5e,
+ 0x6c61, 0x6c64, 0x6c67, 0x6c68, 0x6c77, 0x6c78, 0x6c7a, 0x6d21,
+ 0x6d22, 0x6d23, 0x6d6e, 0x6e5b, 0x723d, 0x727a, 0x7331, 0x7427,
+ 0x746e, 0x7674, 0x7676, 0x7738, 0x7748, 0x7753, 0x785b, 0x7870,
+ 0x7a21, 0x7a22, 0x7a66, 0x7c29, 0x2321, 0x2322, 0x2323, 0x2324,
+ 0x2325, 0x2326, 0x2327, 0x2328, 0x2329, 0x232a, 0x232b, 0x232c,
+ 0x232d, 0x232e, 0x232f, 0x2330, 0x2331, 0x2332, 0x2333, 0x2334,
+ 0x2335, 0x2336, 0x2337, 0x2338, 0x2339, 0x233a, 0x233b, 0x233c,
+ 0x233d, 0x233e, 0x233f, 0x2340, 0x2341, 0x2342, 0x2343, 0x2344,
+ 0x2345, 0x2346, 0x2347, 0x2348, 0x2349, 0x234a, 0x234b, 0x234c,
+ 0x234d, 0x234e, 0x234f, 0x2350, 0x2351, 0x2352, 0x2353, 0x2354,
+ 0x2355, 0x2356, 0x2357, 0x2358, 0x2359, 0x235a, 0x235b, 0x212c,
+ 0x235d, 0x235e, 0x235f, 0x2360, 0x2361, 0x2362, 0x2363, 0x2364,
+ 0x2365, 0x2366, 0x2367, 0x2368, 0x2369, 0x236a, 0x236b, 0x236c,
+ 0x236d, 0x236e, 0x236f, 0x2370, 0x2371, 0x2372, 0x2373, 0x2374,
+ 0x2375, 0x2376, 0x2377, 0x2378, 0x2379, 0x237a, 0x237b, 0x237c,
+ 0x237d, 0x2226, 0x214b, 0x214c, 0x217e, 0x237e, 0x214d, 0x235c,
+};
+
+static const Summary16 ksc5601_uni2indx_page00[70] = {
+ /* 0x0000 */
+ { 0, 0x0000 }, { 0, 0x0000 }, { 0, 0x0000 }, { 0, 0x0000 },
+ { 0, 0x0000 }, { 0, 0x0000 }, { 0, 0x0000 }, { 0, 0x0000 },
+ { 0, 0x0000 }, { 0, 0x0000 }, { 0, 0x2592 }, { 6, 0xf7df },
+ { 20, 0x0040 }, { 21, 0xc181 }, { 26, 0x0040 }, { 27, 0x4181 },
+ /* 0x0100 */
+ { 31, 0x0000 }, { 31, 0x0002 }, { 32, 0x00c0 }, { 34, 0x810e },
+ { 39, 0x0e07 }, { 45, 0x000c }, { 47, 0x00c0 }, { 49, 0x0000 },
+ { 49, 0x0000 }, { 49, 0x0000 }, { 49, 0x0000 }, { 49, 0x0000 },
+ { 49, 0x0000 }, { 49, 0x0000 }, { 49, 0x0000 }, { 49, 0x0000 },
+ /* 0x0200 */
+ { 49, 0x0000 }, { 49, 0x0000 }, { 49, 0x0000 }, { 49, 0x0000 },
+ { 49, 0x0000 }, { 49, 0x0000 }, { 49, 0x0000 }, { 49, 0x0000 },
+ { 49, 0x0000 }, { 49, 0x0000 }, { 49, 0x0000 }, { 49, 0x0000 },
+ { 49, 0x0080 }, { 50, 0x2f01 }, { 56, 0x0000 }, { 56, 0x0000 },
+ /* 0x0300 */
+ { 56, 0x0000 }, { 56, 0x0000 }, { 56, 0x0000 }, { 56, 0x0000 },
+ { 56, 0x0000 }, { 56, 0x0000 }, { 56, 0x0000 }, { 56, 0x0000 },
+ { 56, 0x0000 }, { 56, 0xfffe }, { 71, 0x03fb }, { 80, 0xfffe },
+ { 95, 0x03fb }, { 104, 0x0000 }, { 104, 0x0000 }, { 104, 0x0000 },
+ /* 0x0400 */
+ { 104, 0x0002 }, { 105, 0xffff }, { 121, 0xffff }, { 137, 0xffff },
+ { 153, 0xffff }, { 169, 0x0002 },
+};
+static const Summary16 ksc5601_uni2indx_page20[103] = {
+ /* 0x2000 */
+ { 170, 0x0000 }, { 170, 0x3320 }, { 175, 0x0063 }, { 179, 0x080d },
+ { 183, 0x0000 }, { 183, 0x0000 }, { 183, 0x0000 }, { 183, 0x8010 },
+ { 185, 0x001e }, { 189, 0x0000 }, { 189, 0x0000 }, { 189, 0x0000 },
+ { 189, 0x0000 }, { 189, 0x0000 }, { 189, 0x0000 }, { 189, 0x0000 },
+ /* 0x2100 */
+ { 189, 0x0208 }, { 191, 0x0048 }, { 193, 0x0846 }, { 197, 0x0000 },
+ { 197, 0x0000 }, { 197, 0x7818 }, { 203, 0x03ff }, { 213, 0x03ff },
+ { 223, 0x0000 }, { 223, 0x03ff }, { 233, 0x0000 }, { 233, 0x0000 },
+ { 233, 0x0000 }, { 233, 0x0014 }, { 235, 0x0000 }, { 235, 0x0000 },
+ /* 0x2200 */
+ { 235, 0x898d }, { 242, 0x6402 }, { 246, 0x5fa1 }, { 255, 0x3030 },
+ { 259, 0x0000 }, { 259, 0x0004 }, { 260, 0x0c33 }, { 266, 0x0000 },
+ { 266, 0x00cc }, { 270, 0x0200 }, { 271, 0x0020 }, { 272, 0x0000 },
+ { 272, 0x0000 }, { 272, 0x0000 }, { 272, 0x0000 }, { 272, 0x0000 },
+ /* 0x2300 */
+ { 272, 0x0000 }, { 272, 0x0004 }, { 273, 0x0000 }, { 273, 0x0000 },
+ { 273, 0x0000 }, { 273, 0x0000 }, { 273, 0x0000 }, { 273, 0x0000 },
+ { 273, 0x0000 }, { 273, 0x0000 }, { 273, 0x0000 }, { 273, 0x0000 },
+ { 273, 0x0000 }, { 273, 0x0000 }, { 273, 0x0000 }, { 273, 0x0000 },
+ /* 0x2400 */
+ { 273, 0x0000 }, { 273, 0x0000 }, { 273, 0x0000 }, { 273, 0x0000 },
+ { 273, 0x0000 }, { 273, 0x0000 }, { 273, 0x7fff }, { 288, 0xfff0 },
+ { 300, 0x0007 }, { 303, 0xf000 }, { 307, 0xffff }, { 323, 0x003f },
+ { 329, 0x0000 }, { 329, 0xffff }, { 345, 0x03ff }, { 355, 0x0000 },
+ /* 0x2500 */
+ { 355, 0xf00f }, { 363, 0xffff }, { 379, 0xffff }, { 395, 0xffff },
+ { 411, 0x0fff }, { 423, 0x0000 }, { 423, 0x0000 }, { 423, 0x0000 },
+ { 423, 0x0000 }, { 423, 0x0004 }, { 424, 0x03fb }, { 433, 0x30cc },
+ { 439, 0xc9c3 }, { 447, 0x0003 }, { 449, 0x0000 }, { 449, 0x0000 },
+ /* 0x2600 */
+ { 449, 0xc060 }, { 453, 0x5000 }, { 455, 0x0000 }, { 455, 0x0000 },
+ { 455, 0x0005 }, { 457, 0x0000 }, { 457, 0x37bb },
+};
+static const Summary16 ksc5601_uni2indx_page30[62] = {
+ /* 0x3000 */
+ { 468, 0xff0f }, { 480, 0x003b }, { 485, 0x0000 }, { 485, 0x0000 },
+ { 485, 0xfffe }, { 500, 0xffff }, { 516, 0xffff }, { 532, 0xffff },
+ { 548, 0xffff }, { 564, 0x000f }, { 568, 0xfffe }, { 583, 0xffff },
+ { 599, 0xffff }, { 615, 0xffff }, { 631, 0xffff }, { 647, 0x007f },
+ /* 0x3100 */
+ { 654, 0x0000 }, { 654, 0x0000 }, { 654, 0x0000 }, { 654, 0xfffe },
+ { 669, 0xffff }, { 685, 0xffff }, { 701, 0xffff }, { 717, 0xffff },
+ { 733, 0x7fff }, { 748, 0x0000 }, { 748, 0x0000 }, { 748, 0x0000 },
+ { 748, 0x0000 }, { 748, 0x0000 }, { 748, 0x0000 }, { 748, 0x0000 },
+ /* 0x3200 */
+ { 748, 0xffff }, { 764, 0x1fff }, { 777, 0x0000 }, { 777, 0x0000 },
+ { 777, 0x0000 }, { 777, 0x0000 }, { 777, 0xffff }, { 793, 0x8fff },
+ { 806, 0x0000 }, { 806, 0x0000 }, { 806, 0x0000 }, { 806, 0x0000 },
+ { 806, 0x0000 }, { 806, 0x0000 }, { 806, 0x0000 }, { 806, 0x0000 },
+ /* 0x3300 */
+ { 806, 0x0000 }, { 806, 0x0000 }, { 806, 0x0000 }, { 806, 0x0000 },
+ { 806, 0x0000 }, { 806, 0x0000 }, { 806, 0x0000 }, { 806, 0x0000 },
+ { 806, 0xff1f }, { 819, 0xffff }, { 835, 0xffff }, { 851, 0xffff },
+ { 867, 0x87ff }, { 879, 0x3949 },
+};
+static const Summary16 ksc5601_uni2indx_page4e[1306] = {
+ /* 0x4e00 */
+ { 886, 0x2f8b }, { 895, 0x4372 }, { 902, 0x2000 }, { 903, 0x0b04 },
+ { 907, 0xe82c }, { 914, 0xe340 }, { 920, 0x2800 }, { 922, 0x40c8 },
+ { 926, 0x5944 }, { 932, 0x4937 }, { 940, 0x7976 }, { 950, 0x0440 },
+ { 952, 0x2c93 }, { 959, 0xa3f0 }, { 967, 0x0038 }, { 970, 0x08c5 },
+ /* 0x4f00 */
+ { 975, 0xee02 }, { 982, 0x0003 }, { 984, 0x8000 }, { 985, 0x3550 },
+ { 991, 0xe1c8 }, { 998, 0x1e23 }, { 1005, 0x8200 }, { 1007, 0xc449 },
+ { 1013, 0xad5a }, { 1022, 0x2942 }, { 1027, 0xc000 }, { 1029, 0x8060 },
+ { 1032, 0x461c }, { 1038, 0xa49a }, { 1045, 0xc003 }, { 1049, 0x052a },
+ /* 0x5000 */
+ { 1054, 0x2a44 }, { 1059, 0xd646 }, { 1067, 0x3dda }, { 1077, 0x0800 },
+ { 1078, 0x8388 }, { 1083, 0x1420 }, { 1086, 0x0020 }, { 1087, 0x0170 },
+ { 1091, 0x2021 }, { 1094, 0x0302 }, { 1097, 0x3000 }, { 1099, 0x40ac },
+ { 1104, 0x8620 }, { 1108, 0x4462 }, { 1113, 0x20a0 }, { 1116, 0x8a00 },
+ /* 0x5100 */
+ { 1119, 0x0253 }, { 1124, 0x8004 }, { 1126, 0x0402 }, { 1128, 0x1484 },
+ { 1132, 0x7bfb }, { 1145, 0x1004 }, { 1147, 0x7fa4 }, { 1157, 0x11e2 },
+ { 1163, 0x2441 }, { 1167, 0x00a4 }, { 1170, 0x1421 }, { 1174, 0x20c0 },
+ { 1177, 0x3a50 }, { 1183, 0x7000 }, { 1186, 0x0002 }, { 1187, 0x2743 },
+ /* 0x5200 */
+ { 1194, 0x45c9 }, { 1201, 0x2082 }, { 1204, 0x4630 }, { 1209, 0x0fc1 },
+ { 1216, 0x3c88 }, { 1222, 0x2850 }, { 1226, 0x8602 }, { 1230, 0xa024 },
+ { 1234, 0x2388 }, { 1239, 0x8806 }, { 1243, 0x0e19 }, { 1249, 0x4000 },
+ { 1250, 0x22aa }, { 1256, 0xeb64 }, { 1265, 0x001c }, { 1268, 0xcd28 },
+ /* 0x5300 */
+ { 1275, 0xa120 }, { 1279, 0x02e1 }, { 1284, 0x840b }, { 1289, 0x8200 },
+ { 1291, 0x279b }, { 1300, 0x549e }, { 1308, 0x8141 }, { 1312, 0xa0b3 },
+ { 1319, 0x0010 }, { 1320, 0x8508 }, { 1324, 0x2061 }, { 1328, 0x0800 },
+ { 1329, 0x2f08 }, { 1335, 0x08d0 }, { 1339, 0xbe3e }, { 1350, 0x010f },
+ /* 0x5400 */
+ { 1355, 0xf718 }, { 1364, 0xa803 }, { 1369, 0x0a41 }, { 1373, 0x5b08 },
+ { 1379, 0x0504 }, { 1382, 0x0002 }, { 1383, 0x0500 }, { 1385, 0x382a },
+ { 1391, 0x5041 }, { 1395, 0x0001 }, { 1396, 0x1910 }, { 1400, 0x2108 },
+ { 1403, 0x0313 }, { 1408, 0x0000 }, { 1408, 0x6122 }, { 1413, 0x0404 },
+ /* 0x5500 */
+ { 1415, 0x40d0 }, { 1419, 0x1001 }, { 1421, 0x8000 }, { 1422, 0x4022 },
+ { 1425, 0x8050 }, { 1428, 0x4048 }, { 1431, 0x0008 }, { 1432, 0x1000 },
+ { 1433, 0x06d1 }, { 1439, 0x3700 }, { 1444, 0x5e80 }, { 1450, 0x0000 },
+ { 1450, 0x00a0 }, { 1452, 0x9410 }, { 1456, 0x0018 }, { 1458, 0x6000 },
+ /* 0x5600 */
+ { 1460, 0x0240 }, { 1462, 0x0090 }, { 1464, 0x8000 }, { 1465, 0x0054 },
+ { 1468, 0x0000 }, { 1468, 0x0008 }, { 1469, 0x0900 }, { 1471, 0x0010 },
+ { 1472, 0x0040 }, { 1473, 0x0000 }, { 1473, 0x5020 }, { 1476, 0x1010 },
+ { 1478, 0x2400 }, { 1480, 0x4c02 }, { 1484, 0x0001 }, { 1485, 0x0601 },
+ /* 0x5700 */
+ { 1488, 0x2918 }, { 1493, 0x814c }, { 1498, 0x2100 }, { 1500, 0x0801 },
+ { 1502, 0x6485 }, { 1508, 0x0003 }, { 1510, 0x4452 }, { 1515, 0x1021 },
+ { 1518, 0x0904 }, { 1521, 0x0008 }, { 1522, 0x000d }, { 1525, 0x0000 },
+ { 1525, 0x4988 }, { 1530, 0x8000 }, { 1531, 0x0001 }, { 1532, 0x1691 },
+ /* 0x5800 */
+ { 1538, 0x0765 }, { 1545, 0x4000 }, { 1546, 0x8492 }, { 1551, 0x0433 },
+ { 1556, 0x8c00 }, { 1559, 0x4592 }, { 1565, 0x0016 }, { 1568, 0x5220 },
+ { 1572, 0x0228 }, { 1575, 0xd008 }, { 1579, 0x4300 }, { 1582, 0x4c08 },
+ { 1586, 0x40a2 }, { 1590, 0xc32a }, { 1597, 0x9810 }, { 1601, 0x2e00 },
+ /* 0x5900 */
+ { 1605, 0x8000 }, { 1606, 0x1670 }, { 1612, 0x6e84 }, { 1619, 0x4082 },
+ { 1622, 0xc390 }, { 1628, 0x04b3 }, { 1634, 0x7c85 }, { 1642, 0x2118 },
+ { 1646, 0x041c }, { 1650, 0x02c8 }, { 1654, 0x1120 }, { 1657, 0x4a00 },
+ { 1660, 0x0a48 }, { 1664, 0x361b }, { 1672, 0x5540 }, { 1677, 0x8900 },
+ /* 0x5a00 */
+ { 1680, 0x000a }, { 1682, 0x9902 }, { 1687, 0x0221 }, { 1690, 0x1040 },
+ { 1692, 0x0242 }, { 1695, 0x0400 }, { 1696, 0x0044 }, { 1698, 0x0000 },
+ { 1698, 0x0000 }, { 1698, 0x0c04 }, { 1701, 0x0010 }, { 1702, 0x0000 },
+ { 1702, 0x1216 }, { 1707, 0x0000 }, { 1707, 0x0242 }, { 1710, 0x0000 },
+ /* 0x5b00 */
+ { 1710, 0x1a20 }, { 1714, 0x0040 }, { 1715, 0x0400 }, { 1716, 0x0000 },
+ { 1716, 0x0009 }, { 1718, 0xb5b3 }, { 1728, 0x0a18 }, { 1732, 0x1523 },
+ { 1738, 0x9ba0 }, { 1745, 0x1fe8 }, { 1754, 0x507c }, { 1761, 0x8379 },
+ { 1769, 0x10fd }, { 1777, 0xc09d }, { 1784, 0xdbf6 }, { 1796, 0x0560 },
+ /* 0x5c00 */
+ { 1800, 0xef92 }, { 1810, 0x0242 }, { 1813, 0x0110 }, { 1815, 0xdf02 },
+ { 1823, 0x6961 }, { 1830, 0x0822 }, { 1833, 0x9035 }, { 1839, 0x0202 },
+ { 1841, 0x0000 }, { 1841, 0x0003 }, { 1843, 0x1a02 }, { 1847, 0x45aa },
+ { 1854, 0x0001 }, { 1855, 0x0200 }, { 1856, 0x8101 }, { 1859, 0x2851 },
+ /* 0x5d00 */
+ { 1864, 0x6080 }, { 1867, 0x02d2 }, { 1872, 0x0280 }, { 1874, 0x0000 },
+ { 1874, 0x1800 }, { 1876, 0x0001 }, { 1877, 0x9200 }, { 1880, 0x0000 },
+ { 1880, 0x0880 }, { 1882, 0x2000 }, { 1883, 0x0405 }, { 1886, 0x3500 },
+ { 1890, 0x2000 }, { 1891, 0x6044 }, { 1895, 0x49e6 }, { 1903, 0x609e },
+ /* 0x5e00 */
+ { 1910, 0x104c }, { 1914, 0x2a42 }, { 1919, 0x2820 }, { 1922, 0xa148 },
+ { 1927, 0x10b1 }, { 1932, 0x8020 }, { 1934, 0x000e }, { 1937, 0x7b9c },
+ { 1947, 0x8490 }, { 1951, 0x14a0 }, { 1955, 0x28c1 }, { 1960, 0x41e0 },
+ { 1965, 0x0704 }, { 1969, 0x8c49 }, { 1975, 0x100d }, { 1979, 0x0cc8 },
+ /* 0x5f00 */
+ { 1984, 0x8412 }, { 1988, 0x89ba }, { 1996, 0x02c0 }, { 1999, 0x1422 },
+ { 2003, 0x5500 }, { 2007, 0x0ac0 }, { 2011, 0x3ec4 }, { 2019, 0x9283 },
+ { 2025, 0x1ca3 }, { 2032, 0x4387 }, { 2039, 0x4703 }, { 2045, 0x22a0 },
+ { 2049, 0x3028 }, { 2053, 0x03c0 }, { 2057, 0x0801 }, { 2059, 0xa020 },
+ /* 0x6000 */
+ { 2062, 0x8000 }, { 2063, 0x3044 }, { 2067, 0x85a3 }, { 2074, 0x0000 },
+ { 2074, 0x200e }, { 2078, 0x2225 }, { 2083, 0xb73c }, { 2093, 0x0001 },
+ { 2094, 0x3220 }, { 2098, 0x8c50 }, { 2103, 0x0099 }, { 2107, 0x315d },
+ { 2115, 0x00a0 }, { 2117, 0x9402 }, { 2121, 0x0003 }, { 2123, 0x0e4b },
+ /* 0x6100 */
+ { 2130, 0xe342 }, { 2137, 0x8c20 }, { 2141, 0x0080 }, { 2142, 0xd091 },
+ { 2148, 0x1d94 }, { 2155, 0xa328 }, { 2161, 0x499c }, { 2168, 0x60c1 },
+ { 2173, 0x4406 }, { 2177, 0x0713 }, { 2183, 0x5a90 }, { 2189, 0x4444 },
+ { 2193, 0x0f88 }, { 2199, 0x0000 }, { 2199, 0x0040 }, { 2200, 0x95c4 },
+ /* 0x6200 */
+ { 2207, 0x7581 }, { 2214, 0x8447 }, { 2220, 0x4402 }, { 2223, 0xc053 },
+ { 2229, 0x2b83 }, { 2236, 0x0108 }, { 2238, 0x4000 }, { 2239, 0x9242 },
+ { 2244, 0x0611 }, { 2248, 0x09a6 }, { 2254, 0x0800 }, { 2255, 0x3222 },
+ { 2260, 0xb384 }, { 2267, 0x1bdd }, { 2277, 0xf000 }, { 2281, 0xc08a },
+ /* 0x6300 */
+ { 2286, 0x0282 }, { 2289, 0x0002 }, { 2290, 0x8800 }, { 2292, 0x6c00 },
+ { 2296, 0x9200 }, { 2299, 0x0021 }, { 2301, 0x4180 }, { 2304, 0x8c84 },
+ { 2309, 0x1308 }, { 2313, 0x0944 }, { 2317, 0x07a7 }, { 2325, 0x0000 },
+ { 2325, 0x8051 }, { 2329, 0x0c41 }, { 2333, 0x6002 }, { 2336, 0x00d0 },
+ /* 0x6400 */
+ { 2339, 0xa000 }, { 2341, 0x10d0 }, { 2345, 0x3004 }, { 2348, 0x4400 },
+ { 2350, 0x0000 }, { 2350, 0x0100 }, { 2351, 0x8201 }, { 2354, 0x0700 },
+ { 2357, 0x0100 }, { 2358, 0x440e }, { 2363, 0x6830 }, { 2368, 0x0805 },
+ { 2371, 0x64b2 }, { 2378, 0x0514 }, { 2382, 0x10e6 }, { 2388, 0x4414 },
+ /* 0x6500 */
+ { 2392, 0x0011 }, { 2394, 0x2100 }, { 2396, 0x9c08 }, { 2401, 0xcbc0 },
+ { 2408, 0xe120 }, { 2413, 0x40c2 }, { 2417, 0x304c }, { 2422, 0x41b4 },
+ { 2428, 0x10ac }, { 2433, 0x9a83 }, { 2440, 0x98b2 }, { 2447, 0x3281 },
+ { 2452, 0x9822 }, { 2457, 0x0084 }, { 2459, 0x3369 }, { 2467, 0xbc12 },
+ /* 0x6600 */
+ { 2474, 0xd6c0 }, { 2481, 0xc03b }, { 2488, 0xa1a1 }, { 2494, 0x0c53 },
+ { 2500, 0x8a1e }, { 2507, 0xea00 }, { 2512, 0xcbf0 }, { 2521, 0x05d8 },
+ { 2527, 0x4390 }, { 2532, 0x21c3 }, { 2538, 0x4805 }, { 2542, 0x4a1c },
+ { 2548, 0x02d0 }, { 2552, 0x3240 }, { 2556, 0x0041 }, { 2558, 0xd79d },
+ /* 0x6700 */
+ { 2569, 0x2b09 }, { 2575, 0xe8b0 }, { 2582, 0x7dc0 }, { 2590, 0x2452 },
+ { 2595, 0xc240 }, { 2599, 0xd04b }, { 2606, 0xa000 }, { 2608, 0xc8ab },
+ { 2616, 0x8a80 }, { 2620, 0x34a9 }, { 2627, 0x8000 }, { 2628, 0x41c9 },
+ { 2634, 0x8010 }, { 2636, 0x241f }, { 2643, 0x9200 }, { 2646, 0x487b },
+ /* 0x6800 */
+ { 2654, 0x0000 }, { 2654, 0x00cc }, { 2658, 0x8406 }, { 2662, 0x3300 },
+ { 2666, 0x410f }, { 2672, 0x001b }, { 2676, 0x2000 }, { 2677, 0x8040 },
+ { 2679, 0x8022 }, { 2682, 0xa098 }, { 2687, 0xa186 }, { 2693, 0x006b },
+ { 2698, 0x2a30 }, { 2703, 0x85a4 }, { 2709, 0x4181 }, { 2713, 0x0604 },
+ /* 0x6900 */
+ { 2716, 0x6021 }, { 2720, 0x0004 }, { 2721, 0x0080 }, { 2722, 0xa001 },
+ { 2725, 0x0400 }, { 2726, 0x46b8 }, { 2733, 0xe90f }, { 2742, 0x03a0 },
+ { 2746, 0x0000 }, { 2746, 0x1820 }, { 2749, 0x40a0 }, { 2752, 0x0810 },
+ { 2754, 0x380a }, { 2759, 0x0001 }, { 2760, 0x0500 }, { 2762, 0xa800 },
+ /* 0x6a00 */
+ { 2765, 0x0404 }, { 2767, 0xc28a }, { 2773, 0x000a }, { 2775, 0x2720 },
+ { 2780, 0x0910 }, { 2783, 0x830c }, { 2788, 0x0802 }, { 2790, 0x0000 },
+ { 2790, 0x6211 }, { 2795, 0x1080 }, { 2797, 0x000c }, { 2799, 0x0808 },
+ { 2801, 0x000c }, { 2803, 0x0c08 }, { 2806, 0x0000 }, { 2806, 0x0840 },
+ /* 0x6b00 */
+ { 2808, 0x1410 }, { 2811, 0x0044 }, { 2813, 0x000b }, { 2816, 0x6404 },
+ { 2820, 0x50c0 }, { 2824, 0x8001 }, { 2826, 0x047e }, { 2833, 0x8984 },
+ { 2838, 0x0658 }, { 2843, 0x4140 }, { 2846, 0xc000 }, { 2848, 0x94a4 },
+ { 2854, 0xa862 }, { 2860, 0x09dc }, { 2867, 0x1800 }, { 2869, 0x0000 },
+ /* 0x6c00 */
+ { 2869, 0x8100 }, { 2871, 0x000a }, { 2873, 0x0008 }, { 2874, 0x4190 },
+ { 2878, 0x4007 }, { 2882, 0xe4a1 }, { 2889, 0x2501 }, { 2893, 0x6445 },
+ { 2899, 0x11ee }, { 2907, 0x0e7d }, { 2916, 0x4800 }, { 2918, 0xfb08 },
+ { 2926, 0x1616 }, { 2932, 0x08a8 }, { 2936, 0xc92e }, { 2944, 0x0009 },
+ /* 0x6d00 */
+ { 2946, 0x1800 }, { 2948, 0x4a82 }, { 2953, 0x06a0 }, { 2957, 0x6b64 },
+ { 2965, 0x0002 }, { 2966, 0x1600 }, { 2969, 0x5648 }, { 2975, 0x8390 },
+ { 2980, 0x73a0 }, { 2987, 0x002a }, { 2990, 0x8000 }, { 2991, 0x0024 },
+ { 2993, 0x88f9 }, { 3001, 0x4702 }, { 3006, 0x4d02 }, { 3011, 0x0faa },
+ /* 0x6e00 */
+ { 3019, 0x0000 }, { 3019, 0x8e80 }, { 3024, 0xb87b }, { 3034, 0x7554 },
+ { 3042, 0x2418 }, { 3046, 0xd940 }, { 3052, 0xc880 }, { 3056, 0x040c },
+ { 3059, 0x0000 }, { 3059, 0xb041 }, { 3064, 0x8c24 }, { 3069, 0x0442 },
+ { 3072, 0x5a34 }, { 3079, 0x001a }, { 3082, 0x8000 }, { 3083, 0xc110 },
+ /* 0x6f00 */
+ { 3087, 0x8046 }, { 3091, 0x0032 }, { 3094, 0x180d }, { 3099, 0x8106 },
+ { 3103, 0x0002 }, { 3104, 0xcd92 }, { 3112, 0x6014 }, { 3116, 0x7401 },
+ { 3121, 0x6112 }, { 3126, 0x0091 }, { 3129, 0xc098 }, { 3134, 0x420a },
+ { 3138, 0x040f }, { 3143, 0x8420 }, { 3146, 0x9a13 }, { 3153, 0x4002 },
+ /* 0x7000 */
+ { 3155, 0x8a62 }, { 3161, 0xfd22 }, { 3170, 0x8188 }, { 3174, 0x4080 },
+ { 3176, 0x1000 }, { 3177, 0x2103 }, { 3181, 0x0808 }, { 3183, 0x3101 },
+ { 3187, 0x4420 }, { 3190, 0x0704 }, { 3194, 0xb812 }, { 3200, 0x0388 },
+ { 3204, 0x8900 }, { 3207, 0xa300 }, { 3211, 0x0000 }, { 3211, 0x2202 },
+ /* 0x7100 */
+ { 3214, 0x1210 }, { 3217, 0x4600 }, { 3220, 0x0042 }, { 3222, 0x0041 },
+ { 3224, 0x5680 }, { 3229, 0x5241 }, { 3234, 0x52f0 }, { 3241, 0x2000 },
+ { 3242, 0x8610 }, { 3246, 0x8214 }, { 3250, 0x1004 }, { 3252, 0x4602 },
+ { 3256, 0x430a }, { 3261, 0x8035 }, { 3266, 0x60e0 }, { 3271, 0xd800 },
+ /* 0x7200 */
+ { 3275, 0x0041 }, { 3277, 0x0801 }, { 3279, 0x3400 }, { 3282, 0x6c65 },
+ { 3290, 0x11c1 }, { 3295, 0xab04 }, { 3301, 0x0286 }, { 3305, 0x2204 },
+ { 3308, 0x0003 }, { 3310, 0x0000 }, { 3310, 0x9084 }, { 3314, 0x0000 },
+ { 3314, 0x4015 }, { 3318, 0x0281 }, { 3321, 0x0202 }, { 3323, 0x3300 },
+ /* 0x7300 */
+ { 3327, 0x0400 }, { 3328, 0x3840 }, { 3332, 0x0e20 }, { 3336, 0xc0c0 },
+ { 3340, 0x0030 }, { 3342, 0x0085 }, { 3345, 0x0500 }, { 3347, 0x0d25 },
+ { 3353, 0x4ad0 }, { 3359, 0x81d0 }, { 3364, 0x2280 }, { 3367, 0x020c },
+ { 3370, 0xb605 }, { 3377, 0x6240 }, { 3381, 0x2679 }, { 3389, 0x6280 },
+ /* 0x7400 */
+ { 3393, 0x02ea }, { 3399, 0x0808 }, { 3401, 0xdd67 }, { 3412, 0x8579 },
+ { 3420, 0x081b }, { 3425, 0xdea0 }, { 3433, 0x8735 }, { 3441, 0x4000 },
+ { 3442, 0x0a8c }, { 3447, 0xd100 }, { 3451, 0x05aa }, { 3457, 0xa225 },
+ { 3463, 0x8440 }, { 3466, 0x1510 }, { 3470, 0x404d }, { 3475, 0x0080 },
+ /* 0x7500 */
+ { 3476, 0x0012 }, { 3478, 0x8d22 }, { 3484, 0x1968 }, { 3490, 0x058f },
+ { 3497, 0x9080 }, { 3500, 0x3a1a }, { 3507, 0x8464 }, { 3512, 0x8561 },
+ { 3518, 0xccc0 }, { 3524, 0x2002 }, { 3526, 0x0820 }, { 3528, 0x732e },
+ { 3537, 0x20a4 }, { 3541, 0x0b34 }, { 3547, 0x0004 }, { 3548, 0x1415 },
+ /* 0x7600 */
+ { 3553, 0x2001 }, { 3555, 0x8200 }, { 3557, 0x0057 }, { 3562, 0x0800 },
+ { 3563, 0x5004 }, { 3566, 0x0044 }, { 3568, 0x1212 }, { 3572, 0x7905 },
+ { 3579, 0x40d0 }, { 3583, 0x0009 }, { 3585, 0x4000 }, { 3586, 0x8400 },
+ { 3588, 0x054c }, { 3593, 0xd844 }, { 3599, 0x409a }, { 3604, 0x5114 },
+ /* 0x7700 */
+ { 3609, 0x0b12 }, { 3614, 0x4000 }, { 3615, 0x0201 }, { 3617, 0x1580 },
+ { 3621, 0x2001 }, { 3623, 0x0800 }, { 3624, 0x084a }, { 3628, 0xc200 },
+ { 3631, 0x0800 }, { 3632, 0x4002 }, { 3634, 0x3020 }, { 3637, 0x9809 },
+ { 3642, 0x0000 }, { 3642, 0x1880 }, { 3645, 0xe22c }, { 3652, 0x0008 },
+ /* 0x7800 */
+ { 3653, 0x0004 }, { 3654, 0x0004 }, { 3655, 0x10e0 }, { 3659, 0x0014 },
+ { 3661, 0x8020 }, { 3663, 0x2000 }, { 3664, 0x9800 }, { 3667, 0x1000 },
+ { 3668, 0x7082 }, { 3673, 0x0082 }, { 3675, 0x0288 }, { 3678, 0x1c00 },
+ { 3681, 0x4c22 }, { 3686, 0x0001 }, { 3687, 0x9100 }, { 3690, 0x0820 },
+ /* 0x7900 */
+ { 3692, 0x4002 }, { 3694, 0x0040 }, { 3695, 0x1c00 }, { 3698, 0x4400 },
+ { 3700, 0x0383 }, { 3705, 0x7cc1 }, { 3713, 0x2121 }, { 3717, 0x8400 },
+ { 3719, 0xe002 }, { 3723, 0x0002 }, { 3724, 0x44c0 }, { 3728, 0xe20a },
+ { 3734, 0x0e03 }, { 3739, 0x8126 }, { 3744, 0x02d0 }, { 3748, 0x0800 },
+ /* 0x7a00 */
+ { 3749, 0x2921 }, { 3754, 0x9690 }, { 3760, 0x4001 }, { 3762, 0xb8c2 },
+ { 3769, 0x6241 }, { 3774, 0x0080 }, { 3775, 0x0a06 }, { 3779, 0xa651 },
+ { 3786, 0x0112 }, { 3789, 0x812c }, { 3794, 0xc600 }, { 3798, 0x0400 },
+ { 3799, 0x0cb0 }, { 3804, 0xa280 }, { 3808, 0xa429 }, { 3814, 0x8640 },
+ /* 0x7b00 */
+ { 3818, 0x8000 }, { 3819, 0x4a02 }, { 3823, 0x3041 }, { 3827, 0x0200 },
+ { 3828, 0xba40 }, { 3834, 0x0057 }, { 3839, 0x5001 }, { 3842, 0x2020 },
+ { 3844, 0x8880 }, { 3847, 0x24b0 }, { 3852, 0x2002 }, { 3854, 0x0112 },
+ { 3857, 0x02d3 }, { 3863, 0x0004 }, { 3864, 0x0211 }, { 3867, 0x0000 },
+ /* 0x7c00 */
+ { 3867, 0x0080 }, { 3868, 0x4004 }, { 3870, 0x0c82 }, { 3874, 0xe000 },
+ { 3877, 0x3008 }, { 3880, 0x0000 }, { 3880, 0x1011 }, { 3883, 0x0008 },
+ { 3884, 0x0208 }, { 3886, 0x81a4 }, { 3891, 0x40a0 }, { 3894, 0x420e },
+ { 3899, 0x0400 }, { 3900, 0xc040 }, { 3903, 0x0081 }, { 3905, 0x4800 },
+ /* 0x7d00 */
+ { 3907, 0x2df5 }, { 3917, 0x0f91 }, { 3924, 0xd807 }, { 3931, 0x0629 },
+ { 3936, 0x007c }, { 3941, 0x4001 }, { 3943, 0x4546 }, { 3949, 0x824e },
+ { 3955, 0xc000 }, { 3957, 0x1008 }, { 3959, 0x3005 }, { 3963, 0xed36 },
+ { 3973, 0x0c80 }, { 3976, 0x6540 }, { 3981, 0x930b }, { 3988, 0x0810 },
+ /* 0x7e00 */
+ { 3990, 0x0600 }, { 3992, 0xe820 }, { 3997, 0xc80a }, { 4002, 0x6082 },
+ { 4006, 0x00ca }, { 4010, 0x4034 }, { 4014, 0x2e02 }, { 4019, 0x1201 },
+ { 4022, 0x9004 }, { 4025, 0x1948 }, { 4030, 0x0000 }, { 4030, 0x0000 },
+ { 4030, 0x0000 }, { 4030, 0x0000 }, { 4030, 0x0000 }, { 4030, 0x0000 },
+ /* 0x7f00 */
+ { 4030, 0x0000 }, { 4030, 0x0000 }, { 4030, 0x0000 }, { 4030, 0x0540 },
+ { 4033, 0x1000 }, { 4034, 0x0031 }, { 4037, 0x4c00 }, { 4040, 0x02a5 },
+ { 4045, 0x5520 }, { 4050, 0x4410 }, { 4053, 0x0310 }, { 4056, 0x2304 },
+ { 4060, 0x5422 }, { 4065, 0x8034 }, { 4069, 0x0a03 }, { 4073, 0x1201 },
+ /* 0x8000 */
+ { 4076, 0x126b }, { 4083, 0x01a1 }, { 4087, 0x2000 }, { 4088, 0xa048 },
+ { 4092, 0x0448 }, { 4095, 0x4540 }, { 4099, 0x8000 }, { 4100, 0xe08d },
+ { 4107, 0x1af0 }, { 4114, 0x2840 }, { 4117, 0x8626 }, { 4123, 0x0416 },
+ { 4127, 0x5018 }, { 4131, 0x4c00 }, { 4134, 0x0032 }, { 4137, 0x2112 },
+ /* 0x8100 */
+ { 4141, 0x05e4 }, { 4147, 0x0d00 }, { 4150, 0x8a08 }, { 4154, 0x4200 },
+ { 4156, 0x4800 }, { 4158, 0x0033 }, { 4162, 0x0860 }, { 4165, 0x8703 },
+ { 4171, 0x8501 }, { 4175, 0x3400 }, { 4178, 0x0109 }, { 4181, 0xe428 },
+ { 4187, 0x2045 }, { 4191, 0x8100 }, { 4193, 0x25a8 }, { 4199, 0x5c18 },
+ /* 0x8200 */
+ { 4205, 0x35a0 }, { 4211, 0xd804 }, { 4216, 0x1c02 }, { 4220, 0x02e0 },
+ { 4224, 0x00a1 }, { 4227, 0x0200 }, { 4228, 0xc050 }, { 4232, 0x4146 },
+ { 4237, 0x6800 }, { 4240, 0xa604 }, { 4245, 0xf260 }, { 4252, 0xbb8a },
+ { 4261, 0x0000 }, { 4261, 0xc8b6 }, { 4269, 0x00e2 }, { 4273, 0x6002 },
+ /* 0x8300 */
+ { 4276, 0x023e }, { 4282, 0x0080 }, { 4283, 0x8900 }, { 4286, 0x0372 },
+ { 4292, 0x8681 }, { 4297, 0x0006 }, { 4299, 0x0000 }, { 4299, 0x0888 },
+ { 4302, 0x4600 }, { 4305, 0x4140 }, { 4308, 0x0e04 }, { 4312, 0x2000 },
+ { 4313, 0x1622 }, { 4318, 0x1048 }, { 4321, 0x8a00 }, { 4324, 0x2217 },
+ /* 0x8400 */
+ { 4330, 0x7418 }, { 4336, 0x0000 }, { 4336, 0x1200 }, { 4338, 0x2102 },
+ { 4341, 0x0200 }, { 4342, 0x0880 }, { 4344, 0x984a }, { 4350, 0x0420 },
+ { 4352, 0x0000 }, { 4352, 0x1211 }, { 4356, 0x0002 }, { 4357, 0x9904 },
+ { 4362, 0x2a55 }, { 4369, 0x0402 }, { 4371, 0x5000 }, { 4373, 0x1010 },
+ /* 0x8500 */
+ { 4375, 0x0000 }, { 4375, 0x459a }, { 4382, 0xb02a }, { 4388, 0xa000 },
+ { 4390, 0x420a }, { 4394, 0x0208 }, { 4396, 0x2708 }, { 4401, 0x0000 },
+ { 4401, 0x8090 }, { 4404, 0x0812 }, { 4407, 0x8740 }, { 4412, 0x0401 },
+ { 4414, 0xe202 }, { 4419, 0x3020 }, { 4422, 0x0630 }, { 4426, 0x8c80 },
+ /* 0x8600 */
+ { 4430, 0x04c4 }, { 4434, 0x04c0 }, { 4437, 0x2000 }, { 4438, 0x8000 },
+ { 4439, 0x4000 }, { 4440, 0xd831 }, { 4447, 0x0080 }, { 4448, 0x0200 },
+ { 4449, 0x1400 }, { 4451, 0x0008 }, { 4452, 0x0218 }, { 4455, 0x0000 },
+ { 4455, 0x0880 }, { 4457, 0x8a10 }, { 4461, 0x2010 }, { 4463, 0x4000 },
+ /* 0x8700 */
+ { 4464, 0x010d }, { 4468, 0x1500 }, { 4471, 0x0000 }, { 4471, 0x0000 },
+ { 4471, 0x4000 }, { 4472, 0x80a0 }, { 4475, 0x0140 }, { 4477, 0x0150 },
+ { 4480, 0x2004 }, { 4482, 0x8000 }, { 4483, 0x0004 }, { 4484, 0x0408 },
+ { 4486, 0x0010 }, { 4487, 0x0000 }, { 4487, 0x9001 }, { 4490, 0x4a04 },
+ /* 0x8800 */
+ { 4494, 0x0020 }, { 4495, 0x8000 }, { 4496, 0x000c }, { 4498, 0x0842 },
+ { 4501, 0x3041 }, { 4505, 0x2a8c }, { 4511, 0x090e }, { 4516, 0xc085 },
+ { 4521, 0x2906 }, { 4526, 0x40c4 }, { 4530, 0x0800 }, { 4531, 0x0010 },
+ { 4532, 0x8006 }, { 4535, 0xb230 }, { 4541, 0x0102 }, { 4543, 0x2138 },
+ /* 0x8900 */
+ { 4548, 0x0080 }, { 4549, 0x030d }, { 4554, 0x0420 }, { 4556, 0x0940 },
+ { 4559, 0x0012 }, { 4561, 0x8000 }, { 4562, 0x0410 }, { 4564, 0x8004 },
+ { 4566, 0x88ca }, { 4572, 0x0048 }, { 4574, 0x0602 }, { 4577, 0x2404 },
+ { 4580, 0x0001 }, { 4581, 0x0004 }, { 4582, 0x0008 }, { 4583, 0x0110 },
+ /* 0x8a00 */
+ { 4585, 0x550d }, { 4592, 0xa9c8 }, { 4599, 0x2428 }, { 4603, 0x0c52 },
+ { 4608, 0x0000 }, { 4608, 0x4831 }, { 4613, 0x624d }, { 4620, 0x022f },
+ { 4626, 0x30a0 }, { 4630, 0x4128 }, { 4634, 0x057b }, { 4642, 0xd205 },
+ { 4648, 0xa894 }, { 4654, 0x1844 }, { 4658, 0x6cc2 }, { 4665, 0x45c2 },
+ /* 0x8b00 */
+ { 4671, 0x4017 }, { 4676, 0x2ed1 }, { 4684, 0x1901 }, { 4688, 0x0208 },
+ { 4690, 0xc202 }, { 4694, 0x1500 }, { 4697, 0x9040 }, { 4700, 0x2091 },
+ { 4704, 0x0401 }, { 4706, 0x044d }, { 4711, 0x0000 }, { 4711, 0x0000 },
+ { 4711, 0x0000 }, { 4711, 0x0000 }, { 4711, 0x0000 }, { 4711, 0x0000 },
+ /* 0x8c00 */
+ { 4711, 0x0000 }, { 4711, 0x0000 }, { 4711, 0x0000 }, { 4711, 0x8080 },
+ { 4713, 0x1542 }, { 4718, 0x0420 }, { 4720, 0x0c02 }, { 4723, 0x0600 },
+ { 4725, 0x1404 }, { 4728, 0x6000 }, { 4730, 0x9f87 }, { 4740, 0xb9d9 },
+ { 4750, 0x059f }, { 4758, 0x540a }, { 4763, 0x245d }, { 4770, 0x3810 },
+ /* 0x8d00 */
+ { 4774, 0x25b0 }, { 4780, 0x0048 }, { 4782, 0x0000 }, { 4782, 0x0000 },
+ { 4782, 0x0000 }, { 4782, 0x0000 }, { 4782, 0x0850 }, { 4785, 0x0099 },
+ { 4789, 0x0420 }, { 4791, 0x0200 }, { 4792, 0x0108 }, { 4794, 0x4408 },
+ { 4797, 0x9840 }, { 4801, 0x2800 }, { 4803, 0x810a }, { 4807, 0x0008 },
+ /* 0x8e00 */
+ { 4808, 0x8400 }, { 4810, 0x4001 }, { 4812, 0x0400 }, { 4813, 0x0021 },
+ { 4815, 0x0794 }, { 4821, 0x8200 }, { 4823, 0x0001 }, { 4824, 0x0050 },
+ { 4826, 0x2482 }, { 4830, 0x0000 }, { 4830, 0x1c00 }, { 4833, 0x0000 },
+ { 4833, 0x3c01 }, { 4838, 0x8004 }, { 4840, 0x0800 }, { 4841, 0x4900 },
+ /* 0x8f00 */
+ { 4844, 0x0228 }, { 4847, 0xf83c }, { 4856, 0x86c0 }, { 4861, 0xcb08 },
+ { 4867, 0x6230 }, { 4872, 0xa000 }, { 4874, 0x0004 }, { 4875, 0x0000 },
+ { 4875, 0x0000 }, { 4875, 0x1800 }, { 4877, 0xa148 }, { 4882, 0x0007 },
+ { 4885, 0x4024 }, { 4888, 0x0012 }, { 4890, 0x2c40 }, { 4894, 0x2285 },
+ /* 0x9000 */
+ { 4899, 0xa96f }, { 4909, 0xe6b3 }, { 4919, 0x400f }, { 4924, 0x5126 },
+ { 4930, 0x6c86 }, { 4937, 0x723b }, { 4946, 0xe20b }, { 4953, 0xb5a4 },
+ { 4961, 0x859f }, { 4970, 0x0222 }, { 4973, 0x854c }, { 4979, 0x0123 },
+ { 4983, 0x0402 }, { 4985, 0x4000 }, { 4986, 0x2102 }, { 4989, 0x2020 },
+ /* 0x9100 */
+ { 4991, 0x0004 }, { 4992, 0x0224 }, { 4995, 0x2080 }, { 4997, 0x0004 },
+ { 4998, 0x7e00 }, { 5004, 0x0004 }, { 5005, 0x1604 }, { 5009, 0x01a0 },
+ { 5012, 0x2a80 }, { 5016, 0x1004 }, { 5018, 0xd800 }, { 5022, 0x0032 },
+ { 5025, 0xfa81 }, { 5033, 0x3183 }, { 5039, 0x0488 }, { 5042, 0x0020 },
+ /* 0x9200 */
+ { 5043, 0x2000 }, { 5044, 0x4087 }, { 5049, 0x0000 }, { 5049, 0x8410 },
+ { 5052, 0x0221 }, { 5055, 0x4880 }, { 5058, 0x0074 }, { 5062, 0x0000 },
+ { 5062, 0x0029 }, { 5065, 0x114a }, { 5070, 0x0000 }, { 5070, 0x02c8 },
+ { 5074, 0x9000 }, { 5076, 0x0004 }, { 5077, 0x0410 }, { 5079, 0x1100 },
+ /* 0x9300 */
+ { 5081, 0x0010 }, { 5082, 0xc501 }, { 5087, 0xc957 }, { 5096, 0x0000 },
+ { 5096, 0x2d00 }, { 5100, 0x0810 }, { 5102, 0x4000 }, { 5103, 0x5020 },
+ { 5106, 0x1000 }, { 5107, 0x0450 }, { 5110, 0x3088 }, { 5114, 0x0001 },
+ { 5115, 0x0008 }, { 5116, 0x4002 }, { 5118, 0x0012 }, { 5120, 0x0040 },
+ /* 0x9400 */
+ { 5121, 0x0010 }, { 5122, 0x0100 }, { 5123, 0x0820 }, { 5125, 0x0120 },
+ { 5127, 0x0010 }, { 5128, 0x0806 }, { 5131, 0x0000 }, { 5131, 0xa000 },
+ { 5133, 0x0000 }, { 5133, 0x0000 }, { 5133, 0x0000 }, { 5133, 0x0000 },
+ { 5133, 0x0000 }, { 5133, 0x0000 }, { 5133, 0x0000 }, { 5133, 0x0000 },
+ /* 0x9500 */
+ { 5133, 0x0000 }, { 5133, 0x0000 }, { 5133, 0x0000 }, { 5133, 0x0000 },
+ { 5133, 0x0000 }, { 5133, 0x0000 }, { 5133, 0x0000 }, { 5133, 0x0080 },
+ { 5134, 0x8a09 }, { 5139, 0x011e }, { 5144, 0x2138 }, { 5149, 0x1802 },
+ { 5152, 0x0480 }, { 5154, 0x1070 }, { 5158, 0x0006 }, { 5160, 0x0000 },
+ /* 0x9600 */
+ { 5160, 0x0000 }, { 5160, 0x1000 }, { 5161, 0x4402 }, { 5164, 0x8804 },
+ { 5167, 0x3815 }, { 5173, 0xf801 }, { 5179, 0x041c }, { 5183, 0x21e9 },
+ { 5190, 0x6c60 }, { 5196, 0x1b30 }, { 5202, 0x0588 }, { 5206, 0x0882 },
+ { 5209, 0x7af3 }, { 5220, 0x1a60 }, { 5225, 0x870c }, { 5231, 0x0ac5 },
+ /* 0x9700 */
+ { 5237, 0x00c1 }, { 5240, 0x524a }, { 5246, 0x0080 }, { 5247, 0x2205 },
+ { 5251, 0x0114 }, { 5254, 0x5042 }, { 5258, 0x2206 }, { 5262, 0x0490 },
+ { 5265, 0xa800 }, { 5268, 0x0000 }, { 5268, 0x2901 }, { 5272, 0x0000 },
+ { 5272, 0x0840 }, { 5274, 0x1008 }, { 5276, 0x0000 }, { 5276, 0x8848 },
+ /* 0x9800 */
+ { 5280, 0x156f }, { 5289, 0x018f }, { 5295, 0x2000 }, { 5296, 0x0b01 },
+ { 5300, 0x7040 }, { 5304, 0x4510 }, { 5308, 0x88a0 }, { 5312, 0x0000 },
+ { 5312, 0x0000 }, { 5312, 0x0000 }, { 5312, 0x8100 }, { 5314, 0x0002 },
+ { 5315, 0x0090 }, { 5317, 0x9800 }, { 5320, 0xe006 }, { 5325, 0x7010 },
+ /* 0x9900 */
+ { 5329, 0x1608 }, { 5333, 0x4109 }, { 5337, 0x0101 }, { 5339, 0x0000 },
+ { 5339, 0x3a20 }, { 5344, 0x0096 }, { 5348, 0x0000 }, { 5348, 0x0000 },
+ { 5348, 0x0000 }, { 5348, 0x2240 }, { 5351, 0x7120 }, { 5356, 0x021a },
+ { 5360, 0x0002 }, { 5361, 0xa227 }, { 5368, 0x2000 }, { 5369, 0x8002 },
+ /* 0x9a00 */
+ { 5371, 0xc102 }, { 5375, 0x0200 }, { 5376, 0x0800 }, { 5377, 0x00c1 },
+ { 5380, 0x2029 }, { 5384, 0x8ca0 }, { 5389, 0x0624 }, { 5393, 0x0000 },
+ { 5393, 0x0000 }, { 5393, 0x0000 }, { 5393, 0x0100 }, { 5394, 0x0100 },
+ { 5395, 0x0000 }, { 5395, 0x0118 }, { 5398, 0x4020 }, { 5400, 0x0000 },
+ /* 0x9b00 */
+ { 5400, 0x0000 }, { 5400, 0x0400 }, { 5401, 0x0480 }, { 5403, 0x1002 },
+ { 5405, 0x803e }, { 5411, 0x0410 }, { 5413, 0x8000 }, { 5414, 0x0000 },
+ { 5414, 0x4000 }, { 5415, 0x8002 }, { 5417, 0x4800 }, { 5419, 0x0000 },
+ { 5419, 0x0200 }, { 5420, 0x0040 }, { 5421, 0x0110 }, { 5423, 0x0000 },
+ /* 0x9c00 */
+ { 5423, 0x2000 }, { 5424, 0x0025 }, { 5427, 0x0020 }, { 5428, 0x0804 },
+ { 5430, 0x0280 }, { 5432, 0x0080 }, { 5433, 0x0000 }, { 5433, 0x0000 },
+ { 5433, 0x0000 }, { 5433, 0x0000 }, { 5433, 0x0000 }, { 5433, 0x0000 },
+ { 5433, 0x0000 }, { 5433, 0x0000 }, { 5433, 0x02a0 }, { 5436, 0x0058 },
+ /* 0x9d00 */
+ { 5439, 0x0200 }, { 5440, 0x0800 }, { 5441, 0x0140 }, { 5443, 0x0800 },
+ { 5444, 0x0000 }, { 5444, 0x2002 }, { 5446, 0x1003 }, { 5449, 0x0004 },
+ { 5450, 0x0000 }, { 5450, 0x0000 }, { 5450, 0x8200 }, { 5452, 0x0010 },
+ { 5453, 0x0010 }, { 5454, 0x0080 }, { 5455, 0x0000 }, { 5455, 0x0704 },
+ /* 0x9e00 */
+ { 5459, 0x0000 }, { 5459, 0x4400 }, { 5461, 0x0000 }, { 5461, 0x0000 },
+ { 5461, 0x0000 }, { 5461, 0x0000 }, { 5461, 0x0000 }, { 5461, 0xa220 },
+ { 5465, 0x0000 }, { 5465, 0xa08c }, { 5470, 0x0020 }, { 5471, 0x4830 },
+ { 5475, 0x6008 }, { 5478, 0x5912 }, { 5484, 0x0100 }, { 5485, 0x0010 },
+ /* 0x9f00 */
+ { 5486, 0x4180 }, { 5489, 0x0008 }, { 5490, 0x0001 }, { 5491, 0x0800 },
+ { 5492, 0x4c00 }, { 5495, 0x8004 }, { 5497, 0x1482 }, { 5501, 0x0080 },
+ { 5502, 0x2000 }, { 5503, 0x1021 },
+};
+static const Summary16 ksc5601_uni2indx_pageac[698] = {
+ /* 0xac00 */
+ { 5506, 0x0793 }, { 5513, 0x3eff }, { 5526, 0xb011 }, { 5531, 0x1303 },
+ { 5536, 0x2801 }, { 5539, 0x1110 }, { 5542, 0x0000 }, { 5542, 0x0593 },
+ { 5548, 0x1e7b }, { 5558, 0xb011 }, { 5563, 0x9703 }, { 5570, 0x3b01 },
+ { 5576, 0x1112 }, { 5580, 0x00a0 }, { 5582, 0x9593 }, { 5590, 0x306b },
+ /* 0xad00 */
+ { 5597, 0xb051 }, { 5603, 0x1102 }, { 5606, 0x3201 }, { 5610, 0x1130 },
+ { 5614, 0x02b0 }, { 5618, 0x0111 }, { 5621, 0x300a }, { 5625, 0xb879 },
+ { 5634, 0x1306 }, { 5639, 0x3001 }, { 5642, 0x0010 }, { 5643, 0x0080 },
+ { 5644, 0x0113 }, { 5648, 0x100b }, { 5652, 0x0011 }, { 5654, 0x9300 },
+ /* 0xae00 */
+ { 5658, 0x2b03 }, { 5664, 0x0010 }, { 5665, 0x0000 }, { 5665, 0x0593 },
+ { 5671, 0x746b }, { 5680, 0xb051 }, { 5686, 0x1323 }, { 5692, 0x3b01 },
+ { 5698, 0x1030 }, { 5701, 0x0000 }, { 5701, 0x0000 }, { 5701, 0x7000 },
+ { 5704, 0xb011 }, { 5709, 0x1303 }, { 5714, 0x2900 }, { 5717, 0x1110 },
+ /* 0xaf00 */
+ { 5720, 0x2180 }, { 5723, 0x0001 }, { 5724, 0x3000 }, { 5726, 0xb015 },
+ { 5732, 0x030e }, { 5737, 0x3001 }, { 5740, 0x0030 }, { 5742, 0x0200 },
+ { 5743, 0x0111 }, { 5746, 0x1023 }, { 5750, 0x0000 }, { 5750, 0x1300 },
+ { 5753, 0x6b81 }, { 5760, 0x1010 }, { 5762, 0x0300 }, { 5764, 0x0113 },
+ /* 0xb000 */
+ { 5768, 0x1013 }, { 5772, 0x3011 }, { 5776, 0x0100 }, { 5777, 0x0000 },
+ { 5777, 0x5530 }, { 5783, 0x22b8 }, { 5789, 0x0000 }, { 5789, 0x3000 },
+ { 5791, 0xb011 }, { 5796, 0x9702 }, { 5802, 0xfb07 }, { 5812, 0x113a },
+ { 5818, 0x03b0 }, { 5823, 0x0113 }, { 5827, 0x0021 }, { 5829, 0x0000 },
+ /* 0xb100 */
+ { 5829, 0x1b00 }, { 5833, 0x3b0d }, { 5841, 0x1138 }, { 5846, 0x03b0 },
+ { 5851, 0x0113 }, { 5855, 0x1133 }, { 5861, 0x0001 }, { 5862, 0x1300 },
+ { 5865, 0x2b05 }, { 5871, 0x111c }, { 5876, 0x0100 }, { 5877, 0x0000 },
+ { 5877, 0x1000 }, { 5878, 0xb011 }, { 5883, 0x1300 }, { 5886, 0x2a01 },
+ /* 0xb200 */
+ { 5890, 0x1930 }, { 5895, 0x02b0 }, { 5899, 0x0001 }, { 5900, 0x1010 },
+ { 5902, 0x0000 }, { 5902, 0x1100 }, { 5904, 0x0301 }, { 5907, 0x1030 },
+ { 5910, 0x0230 }, { 5913, 0x0713 }, { 5919, 0x146b }, { 5926, 0x0011 },
+ { 5928, 0x1300 }, { 5931, 0x2b05 }, { 5937, 0xf974 }, { 5947, 0x8fb8 },
+ /* 0xb300 */
+ { 5956, 0x0113 }, { 5960, 0x103b }, { 5966, 0x0000 }, { 5966, 0x0000 },
+ { 5966, 0x0000 }, { 5966, 0xd970 }, { 5974, 0x4ab0 }, { 5980, 0x0113 },
+ { 5984, 0x103b }, { 5990, 0x0011 }, { 5992, 0x1103 }, { 5996, 0x0000 },
+ { 5996, 0x5930 }, { 6002, 0x2ab1 }, { 6009, 0x0111 }, { 6012, 0x1000 },
+ /* 0xb400 */
+ { 6013, 0x0000 }, { 6013, 0x1101 }, { 6016, 0x0b01 }, { 6020, 0x0010 },
+ { 6021, 0x0000 }, { 6021, 0x0113 }, { 6025, 0x102b }, { 6030, 0x0000 },
+ { 6030, 0x0101 }, { 6032, 0x2000 }, { 6033, 0x1110 }, { 6036, 0x02a0 },
+ { 6039, 0x0111 }, { 6042, 0x3021 }, { 6046, 0xb059 }, { 6053, 0x0102 },
+ /* 0xb500 */
+ { 6055, 0x0000 }, { 6055, 0x1930 }, { 6060, 0x07b0 }, { 6066, 0x0113 },
+ { 6070, 0x383b }, { 6078, 0xb011 }, { 6083, 0x0003 }, { 6085, 0x0000 },
+ { 6085, 0x0000 }, { 6085, 0x0000 }, { 6085, 0x0d13 }, { 6091, 0x383b },
+ { 6099, 0xb011 }, { 6104, 0x0103 }, { 6107, 0x1000 }, { 6108, 0x0000 },
+ /* 0xb600 */
+ { 6108, 0x0000 }, { 6108, 0x0113 }, { 6112, 0x1020 }, { 6114, 0x0010 },
+ { 6115, 0x0100 }, { 6116, 0x0000 }, { 6116, 0x0110 }, { 6118, 0x0000 },
+ { 6118, 0x0000 }, { 6118, 0x3000 }, { 6120, 0x1811 }, { 6124, 0x0002 },
+ { 6125, 0x0000 }, { 6125, 0x0010 }, { 6126, 0x0000 }, { 6126, 0x0111 },
+ /* 0xb700 */
+ { 6129, 0x0023 }, { 6132, 0x0000 }, { 6132, 0x9300 }, { 6136, 0x0b01 },
+ { 6140, 0x1110 }, { 6143, 0x0030 }, { 6145, 0x0111 }, { 6148, 0x302b },
+ { 6154, 0xb011 }, { 6159, 0x13c7 }, { 6167, 0x3b01 }, { 6173, 0x0130 },
+ { 6176, 0x0280 }, { 6178, 0x0000 }, { 6178, 0x3000 }, { 6180, 0xb011 },
+ /* 0xb800 */
+ { 6185, 0x1383 }, { 6191, 0x2b01 }, { 6196, 0x1130 }, { 6200, 0x03b0 },
+ { 6205, 0x0011 }, { 6207, 0x300a }, { 6211, 0xb011 }, { 6216, 0x1102 },
+ { 6219, 0x2000 }, { 6220, 0x0000 }, { 6220, 0x0100 }, { 6221, 0x0111 },
+ { 6224, 0x102b }, { 6229, 0xa011 }, { 6233, 0x1302 }, { 6237, 0x2b01 },
+ /* 0xb900 */
+ { 6242, 0x0010 }, { 6243, 0x0100 }, { 6244, 0x0001 }, { 6245, 0x3000 },
+ { 6247, 0x9011 }, { 6251, 0x1302 }, { 6255, 0x2b01 }, { 6260, 0x1130 },
+ { 6264, 0x66b0 }, { 6271, 0x0000 }, { 6271, 0x3000 }, { 6273, 0xb011 },
+ { 6278, 0xd302 }, { 6284, 0x6b07 }, { 6292, 0x113a }, { 6298, 0x07b0 },
+ /* 0xba00 */
+ { 6304, 0x0103 }, { 6307, 0x0020 }, { 6308, 0x0000 }, { 6308, 0x1300 },
+ { 6311, 0x6b05 }, { 6318, 0x1138 }, { 6323, 0x03b0 }, { 6328, 0x0113 },
+ { 6332, 0x10b8 }, { 6337, 0x0000 }, { 6337, 0x1b00 }, { 6341, 0x2b05 },
+ { 6347, 0x0110 }, { 6349, 0x0300 }, { 6351, 0x0000 }, { 6351, 0x1000 },
+ /* 0xbb00 */
+ { 6352, 0xa011 }, { 6356, 0x1102 }, { 6359, 0x0a01 }, { 6362, 0x7970 },
+ { 6370, 0xa2b0 }, { 6376, 0x0111 }, { 6379, 0x100a }, { 6382, 0x0000 },
+ { 6382, 0x1100 }, { 6384, 0x0001 }, { 6385, 0x1110 }, { 6388, 0x0090 },
+ { 6390, 0x0111 }, { 6393, 0x0009 }, { 6395, 0x0000 }, { 6395, 0x9300 },
+ /* 0xbc00 */
+ { 6399, 0xbb05 }, { 6407, 0xf9f2 }, { 6418, 0x22b0 }, { 6423, 0x0113 },
+ { 6427, 0x323b }, { 6435, 0x2001 }, { 6437, 0x0000 }, { 6437, 0x0000 },
+ { 6437, 0x5930 }, { 6443, 0x06b0 }, { 6448, 0x0193 }, { 6453, 0x303b },
+ { 6460, 0xa011 }, { 6464, 0x1123 }, { 6469, 0x0000 }, { 6469, 0x1170 },
+ /* 0xbd00 */
+ { 6474, 0x02b0 }, { 6478, 0x0011 }, { 6480, 0x1010 }, { 6482, 0x0000 },
+ { 6482, 0x1301 }, { 6486, 0x0301 }, { 6489, 0x0110 }, { 6491, 0x0000 },
+ { 6491, 0x0793 }, { 6498, 0x162b }, { 6505, 0x0010 }, { 6506, 0x0101 },
+ { 6508, 0x0000 }, { 6508, 0x1130 }, { 6512, 0x0200 }, { 6513, 0x0111 },
+ /* 0xbe00 */
+ { 6516, 0x3029 }, { 6521, 0xb011 }, { 6526, 0x0000 }, { 6526, 0x0000 },
+ { 6526, 0x5130 }, { 6531, 0x0eb0 }, { 6537, 0x0513 }, { 6542, 0x383b },
+ { 6550, 0xb011 }, { 6555, 0x0303 }, { 6559, 0x0100 }, { 6560, 0x0000 },
+ { 6560, 0x0000 }, { 6560, 0x0193 }, { 6565, 0x1039 }, { 6570, 0x0000 },
+ /* 0xbf00 */
+ { 6570, 0x0302 }, { 6573, 0x3b00 }, { 6578, 0x0000 }, { 6578, 0x0000 },
+ { 6578, 0x0113 }, { 6582, 0x0023 }, { 6585, 0x0000 }, { 6585, 0x0000 },
+ { 6585, 0x0000 }, { 6585, 0x0010 }, { 6586, 0x0000 }, { 6586, 0x0001 },
+ { 6587, 0x3020 }, { 6590, 0x9011 }, { 6594, 0x0002 }, { 6595, 0x0000 },
+ /* 0xc000 */
+ { 6595, 0x0000 }, { 6595, 0x0000 }, { 6595, 0x0000 }, { 6595, 0x1000 },
+ { 6596, 0x0000 }, { 6596, 0x1102 }, { 6599, 0x0301 }, { 6602, 0x0000 },
+ { 6602, 0x0000 }, { 6602, 0x0113 }, { 6606, 0xb02b }, { 6613, 0xb079 },
+ { 6621, 0x1323 }, { 6627, 0x3b01 }, { 6633, 0x1130 }, { 6637, 0x02b0 },
+ /* 0xc100 */
+ { 6641, 0x0111 }, { 6644, 0xf021 }, { 6650, 0xb0d9 }, { 6658, 0x1343 },
+ { 6664, 0x3b01 }, { 6670, 0x1130 }, { 6674, 0x03b0 }, { 6679, 0x0111 },
+ { 6682, 0x7020 }, { 6686, 0xb051 }, { 6692, 0x1322 }, { 6697, 0x2001 },
+ { 6699, 0x1110 }, { 6702, 0x0190 }, { 6705, 0x0111 }, { 6708, 0x300b },
+ /* 0xc200 */
+ { 6713, 0xb011 }, { 6718, 0x9302 }, { 6723, 0xab01 }, { 6729, 0x0016 },
+ { 6732, 0x0100 }, { 6733, 0x0113 }, { 6737, 0x3021 }, { 6741, 0xb011 },
+ { 6746, 0x0302 }, { 6749, 0x2901 }, { 6753, 0x3130 }, { 6758, 0x02b0 },
+ { 6762, 0x0000 }, { 6762, 0x3000 }, { 6764, 0xb819 }, { 6771, 0x1b42 },
+ /* 0xc300 */
+ { 6777, 0x3301 }, { 6782, 0x1138 }, { 6787, 0x0330 }, { 6791, 0x0000 },
+ { 6791, 0x0020 }, { 6792, 0x0000 }, { 6792, 0x1300 }, { 6795, 0x3305 },
+ { 6801, 0x1110 }, { 6804, 0x0000 }, { 6804, 0x0000 }, { 6804, 0x0000 },
+ { 6804, 0x0001 }, { 6805, 0x9300 }, { 6809, 0x2305 }, { 6814, 0x0130 },
+ /* 0xc400 */
+ { 6817, 0x0100 }, { 6818, 0x0001 }, { 6819, 0x1010 }, { 6821, 0x3011 },
+ { 6825, 0x0100 }, { 6826, 0x0000 }, { 6826, 0x1130 }, { 6830, 0x0230 },
+ { 6833, 0x0001 }, { 6834, 0x1010 }, { 6836, 0x0000 }, { 6836, 0x1100 },
+ { 6838, 0x0000 }, { 6838, 0x0000 }, { 6838, 0x0200 }, { 6839, 0x8513 },
+ /* 0xc500 */
+ { 6845, 0x1003 }, { 6848, 0x1011 }, { 6851, 0x1300 }, { 6854, 0x2b01 },
+ { 6859, 0x7730 }, { 6867, 0x63b8 }, { 6875, 0x0113 }, { 6879, 0x303b },
+ { 6886, 0xb091 }, { 6892, 0x11a2 }, { 6897, 0x0201 }, { 6899, 0x7b30 },
+ { 6907, 0x57f0 }, { 6916, 0x0113 }, { 6920, 0x702b }, { 6927, 0xf0d1 },
+ /* 0xc600 */
+ { 6935, 0x11e3 }, { 6942, 0x1b01 }, { 6947, 0x7130 }, { 6953, 0x0ab9 },
+ { 6960, 0x0113 }, { 6964, 0x303b }, { 6971, 0x9001 }, { 6974, 0x1302 },
+ { 6978, 0x2b01 }, { 6983, 0x1130 }, { 6987, 0x02b0 }, { 6991, 0x0713 },
+ { 6997, 0x302b }, { 7003, 0x3011 }, { 7007, 0x1303 }, { 7012, 0x2301 },
+ /* 0xc700 */
+ { 7016, 0x1130 }, { 7020, 0x02b0 }, { 7024, 0x0113 }, { 7028, 0x30ab },
+ { 7035, 0xb411 }, { 7041, 0x11fe }, { 7050, 0x0901 }, { 7053, 0x7130 },
+ { 7059, 0x47b8 }, { 7067, 0x05d3 }, { 7074, 0x307b }, { 7082, 0xb011 },
+ { 7087, 0x5303 }, { 7093, 0x2101 }, { 7096, 0x1110 }, { 7099, 0x0000 },
+ /* 0xc800 */
+ { 7099, 0x0513 }, { 7104, 0x306b }, { 7111, 0xb011 }, { 7116, 0x1102 },
+ { 7119, 0x3301 }, { 7124, 0x0010 }, { 7125, 0x0000 }, { 7125, 0x0513 },
+ { 7130, 0x38eb }, { 7139, 0xa010 }, { 7142, 0x0102 }, { 7144, 0x3000 },
+ { 7146, 0x1110 }, { 7149, 0x02b0 }, { 7153, 0x0013 }, { 7156, 0x3020 },
+ /* 0xc900 */
+ { 7159, 0xb071 }, { 7166, 0x0102 }, { 7168, 0x1000 }, { 7169, 0x0010 },
+ { 7170, 0x0000 }, { 7170, 0x0113 }, { 7174, 0x100b }, { 7178, 0x1011 },
+ { 7181, 0x1300 }, { 7184, 0x2b01 }, { 7189, 0x0000 }, { 7189, 0x0000 },
+ { 7189, 0x0593 }, { 7195, 0x366b }, { 7204, 0xb095 }, { 7211, 0x1303 },
+ /* 0xca00 */
+ { 7216, 0x3b01 }, { 7222, 0x0110 }, { 7224, 0x0200 }, { 7225, 0x0000 },
+ { 7225, 0x3000 }, { 7227, 0xb011 }, { 7232, 0x0103 }, { 7235, 0x2000 },
+ { 7236, 0x0010 }, { 7237, 0x0100 }, { 7238, 0x0000 }, { 7238, 0x3000 },
+ { 7240, 0xb011 }, { 7245, 0x030a }, { 7249, 0x1001 }, { 7251, 0x0010 },
+ /* 0xcb00 */
+ { 7252, 0x0100 }, { 7253, 0x0111 }, { 7256, 0x0003 }, { 7258, 0x0000 },
+ { 7258, 0x1302 }, { 7262, 0x2301 }, { 7266, 0x0010 }, { 7267, 0x0300 },
+ { 7269, 0x0000 }, { 7269, 0x1000 }, { 7270, 0x0000 }, { 7270, 0x0100 },
+ { 7271, 0x0000 }, { 7271, 0x0010 }, { 7272, 0x0290 }, { 7275, 0x0000 },
+ /* 0xcc00 */
+ { 7275, 0x3000 }, { 7277, 0x3011 }, { 7281, 0x5386 }, { 7288, 0x7b01 },
+ { 7295, 0x1130 }, { 7299, 0x03b0 }, { 7304, 0x0151 }, { 7308, 0x0021 },
+ { 7310, 0x0000 }, { 7310, 0x1300 }, { 7313, 0x3b01 }, { 7319, 0x1130 },
+ { 7323, 0x02b0 }, { 7327, 0x0011 }, { 7329, 0x1010 }, { 7331, 0x0001 },
+ /* 0xcd00 */
+ { 7332, 0x1302 }, { 7336, 0x2b01 }, { 7341, 0x1110 }, { 7344, 0x0200 },
+ { 7345, 0x0000 }, { 7345, 0x1000 }, { 7346, 0xb011 }, { 7351, 0x0102 },
+ { 7353, 0x0100 }, { 7354, 0x1130 }, { 7358, 0x02b0 }, { 7362, 0x0001 },
+ { 7363, 0x1010 }, { 7365, 0x0001 }, { 7366, 0x1100 }, { 7368, 0x2b01 },
+ /* 0xce00 */
+ { 7373, 0x1110 }, { 7376, 0x0210 }, { 7378, 0x0113 }, { 7382, 0x002b },
+ { 7386, 0x0000 }, { 7386, 0x9300 }, { 7390, 0x2b03 }, { 7396, 0x1130 },
+ { 7400, 0x02b0 }, { 7404, 0x0113 }, { 7408, 0x303b }, { 7415, 0x0000 },
+ { 7415, 0x0002 }, { 7416, 0x0000 }, { 7416, 0x1930 }, { 7421, 0x03b0 },
+ /* 0xcf00 */
+ { 7426, 0x0113 }, { 7430, 0x102b }, { 7435, 0xb011 }, { 7440, 0x0103 },
+ { 7443, 0x0000 }, { 7443, 0x1130 }, { 7447, 0x02b0 }, { 7451, 0x0113 },
+ { 7455, 0x1021 }, { 7458, 0x0000 }, { 7458, 0x0102 }, { 7460, 0x0001 },
+ { 7461, 0x0010 }, { 7462, 0x0000 }, { 7462, 0x0113 }, { 7466, 0x102b },
+ /* 0xd000 */
+ { 7471, 0x0011 }, { 7473, 0x0102 }, { 7475, 0x2000 }, { 7476, 0x1130 },
+ { 7480, 0x02b0 }, { 7484, 0x0111 }, { 7487, 0x3001 }, { 7490, 0x3011 },
+ { 7494, 0x0002 }, { 7495, 0x0000 }, { 7495, 0x1130 }, { 7499, 0x02b0 },
+ { 7503, 0x0313 }, { 7508, 0x303b }, { 7515, 0xb011 }, { 7520, 0x0103 },
+ /* 0xd100 */
+ { 7523, 0x2000 }, { 7524, 0x0000 }, { 7524, 0x0000 }, { 7524, 0x0513 },
+ { 7529, 0x303b }, { 7536, 0xb011 }, { 7541, 0x1102 }, { 7544, 0x1000 },
+ { 7545, 0x0110 }, { 7547, 0x0000 }, { 7547, 0x0113 }, { 7551, 0x142b },
+ { 7557, 0x0001 }, { 7558, 0x0100 }, { 7559, 0x0000 }, { 7559, 0x0110 },
+ /* 0xd200 */
+ { 7561, 0x0280 }, { 7563, 0x0001 }, { 7564, 0x3000 }, { 7566, 0xb011 },
+ { 7571, 0x0102 }, { 7573, 0x1000 }, { 7574, 0x0010 }, { 7575, 0x0000 },
+ { 7575, 0x0113 }, { 7579, 0x1023 }, { 7583, 0x1011 }, { 7586, 0x9302 },
+ { 7591, 0x0b05 }, { 7596, 0x1110 }, { 7599, 0x0030 }, { 7601, 0x0113 },
+ /* 0xd300 */
+ { 7605, 0x702b }, { 7612, 0xb051 }, { 7618, 0x1323 }, { 7624, 0x3b01 },
+ { 7630, 0x0030 }, { 7632, 0x0000 }, { 7632, 0x0000 }, { 7632, 0x3000 },
+ { 7634, 0xb011 }, { 7639, 0x1303 }, { 7644, 0x2b01 }, { 7649, 0x1110 },
+ { 7652, 0x0330 }, { 7656, 0x0101 }, { 7658, 0x300a }, { 7662, 0xb011 },
+ /* 0xd400 */
+ { 7667, 0x0102 }, { 7669, 0x2000 }, { 7670, 0x0000 }, { 7670, 0x0000 },
+ { 7670, 0x0011 }, { 7672, 0x1000 }, { 7673, 0xa011 }, { 7677, 0x9300 },
+ { 7681, 0x2b05 }, { 7687, 0x0010 }, { 7688, 0x0200 }, { 7689, 0x0000 },
+ { 7689, 0x1000 }, { 7690, 0x9011 }, { 7694, 0x1100 }, { 7696, 0x2901 },
+ /* 0xd500 */
+ { 7700, 0x1110 }, { 7703, 0x00b0 }, { 7706, 0x0000 }, { 7706, 0x3000 },
+ { 7708, 0xb011 }, { 7713, 0x1302 }, { 7717, 0x2b21 }, { 7723, 0x1130 },
+ { 7727, 0x03b0 }, { 7732, 0x0001 }, { 7733, 0x0020 }, { 7734, 0x0000 },
+ { 7734, 0x1300 }, { 7737, 0x2b05 }, { 7743, 0x1130 }, { 7747, 0x02b0 },
+ /* 0xd600 */
+ { 7751, 0x0113 }, { 7755, 0x103b }, { 7761, 0x2011 }, { 7764, 0x1300 },
+ { 7767, 0x2b21 }, { 7773, 0x1132 }, { 7778, 0x0280 }, { 7780, 0x0013 },
+ { 7783, 0x3028 }, { 7787, 0xa011 }, { 7791, 0x1102 }, { 7794, 0x0a01 },
+ { 7797, 0x1130 }, { 7801, 0x0292 }, { 7805, 0x0111 }, { 7808, 0x3021 },
+ /* 0xd700 */
+ { 7812, 0x0011 }, { 7814, 0x1302 }, { 7818, 0x2b01 }, { 7823, 0x1130 },
+ { 7827, 0x0290 }, { 7830, 0x03d3 }, { 7837, 0x122b }, { 7843, 0x3011 },
+ { 7847, 0x1302 }, { 7851, 0x2b01 },
+};
+static const Summary16 ksc5601_uni2indx_pagef9[17] = {
+ /* 0xf900 */
+ { 7856, 0xffff }, { 7872, 0xffff }, { 7888, 0xffff }, { 7904, 0xffff },
+ { 7920, 0xffff }, { 7936, 0xffff }, { 7952, 0xffff }, { 7968, 0xffff },
+ { 7984, 0xffff }, { 8000, 0xffff }, { 8016, 0xffff }, { 8032, 0xffff },
+ { 8048, 0xffff }, { 8064, 0xffff }, { 8080, 0xffff }, { 8096, 0xffff },
+ /* 0xfa00 */
+ { 8112, 0x0fff },
+};
+static const Summary16 ksc5601_uni2indx_pageff[15] = {
+ /* 0xff00 */
+ { 8124, 0xfffe }, { 8139, 0xffff }, { 8155, 0xffff }, { 8171, 0xffff },
+ { 8187, 0xffff }, { 8203, 0x7fff }, { 8218, 0x0000 }, { 8218, 0x0000 },
+ { 8218, 0x0000 }, { 8218, 0x0000 }, { 8218, 0x0000 }, { 8218, 0x0000 },
+ { 8218, 0x0000 }, { 8218, 0x0000 }, { 8218, 0x006f },
+};
+
+static int
+ksc5601_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n)
+{
+ if (n >= 2) {
+ const Summary16 *summary = NULL;
+ if (wc < 0x0460)
+ summary = &ksc5601_uni2indx_page00[(wc>>4)];
+ else if (wc >= 0x2000 && wc < 0x2670) /* General Punctuation (2000, 206F) */
+ summary = &ksc5601_uni2indx_page20[(wc>>4)-0x200];
+ else if (wc >= 0x3000 && wc < 0x33e0) /* CJK Symbols and Punctuation (3000, 303F) */
+ summary = &ksc5601_uni2indx_page30[(wc>>4)-0x300];
+ else if (wc >= 0x4e00 && wc < 0x9fa0) /* CJK Unified Ideographs (4E00, 9FFF) */
+ summary = &ksc5601_uni2indx_page4e[(wc>>4)-0x4e0];
+ else if (wc >= 0xac00 && wc < 0xd7a0) /* Hangul Syllables (AC00, D7AF) 11183 */
+ summary = &ksc5601_uni2indx_pageac[(wc>>4)-0xac0];
+ else if (wc >= 0xf900 && wc < 0xfa10) /* CJK Compatibility Ideographs (F900, FAFF) */
+ summary = &ksc5601_uni2indx_pagef9[(wc>>4)-0xf90];
+ else if (wc >= 0xff00 && wc < 0xfff0) /* Halfwidth and Fullwidth Forms (FF00, FFEF) */
+ summary = &ksc5601_uni2indx_pageff[(wc>>4)-0xff0];
+ if (summary) {
+ unsigned short used = summary->used;
+ unsigned int i = wc & 0x0f;
+ if (used & ((unsigned short) 1 << i)) {
+ unsigned short c;
+ /* Keep in `used' only the bits 0..i-1. */
+ used &= ((unsigned short) 1 << i) - 1;
+ /* Add `summary->indx' and the number of bits set in `used'. */
+ used = (used & 0x5555) + ((used & 0xaaaa) >> 1);
+ used = (used & 0x3333) + ((used & 0xcccc) >> 2);
+ used = (used & 0x0f0f) + ((used & 0xf0f0) >> 4);
+ used = (used & 0x00ff) + (used >> 8);
+ c = ksc5601_2charset[summary->indx + used];
+ r[0] = (c >> 8); r[1] = (c & 0xff);
+ return 2;
+ }
+ }
+ return RET_ILSEQ;
+ }
+ return RET_TOOSMALL;
+}
diff --git a/libX11/src/xlibi18n/lcUniConv/mulelao.h b/libX11/src/xlibi18n/lcUniConv/mulelao.h
index 98a8658d5..5b8245762 100644
--- a/libX11/src/xlibi18n/lcUniConv/mulelao.h
+++ b/libX11/src/xlibi18n/lcUniConv/mulelao.h
@@ -1,77 +1,77 @@
-
-/*
- * MULELAO-1
- */
-
-static const unsigned short mulelao_2uni[96] = {
- /* 0xa0 */
- 0x00a0, 0x0e81, 0x0e82, 0xfffd, 0x0e84, 0xfffd, 0xfffd, 0x0e87,
- 0x0e88, 0xfffd, 0x0e8a, 0xfffd, 0xfffd, 0x0e8d, 0xfffd, 0xfffd,
- /* 0xb0 */
- 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x0e94, 0x0e95, 0x0e96, 0x0e97,
- 0xfffd, 0x0e99, 0x0e9a, 0x0e9b, 0x0e9c, 0x0e9d, 0x0e9e, 0x0e9f,
- /* 0xc0 */
- 0xfffd, 0x0ea1, 0x0ea2, 0x0ea3, 0xfffd, 0x0ea5, 0xfffd, 0x0ea7,
- 0xfffd, 0xfffd, 0x0eaa, 0x0eab, 0xfffd, 0x0ead, 0x0eae, 0x0eaf,
- /* 0xd0 */
- 0x0eb0, 0x0eb1, 0x0eb2, 0x0eb3, 0x0eb4, 0x0eb5, 0x0eb6, 0x0eb7,
- 0x0eb8, 0x0eb9, 0xfffd, 0x0ebb, 0x0ebc, 0x0ebd, 0xfffd, 0xfffd,
- /* 0xe0 */
- 0x0ec0, 0x0ec1, 0x0ec2, 0x0ec3, 0x0ec4, 0xfffd, 0x0ec6, 0xfffd,
- 0x0ec8, 0x0ec9, 0x0eca, 0x0ecb, 0x0ecc, 0x0ecd, 0xfffd, 0xfffd,
- /* 0xf0 */
- 0x0ed0, 0x0ed1, 0x0ed2, 0x0ed3, 0x0ed4, 0x0ed5, 0x0ed6, 0x0ed7,
- 0x0ed8, 0x0ed9, 0xfffd, 0xfffd, 0x0edc, 0x0edd, 0xfffd, 0xfffd,
-};
-
-static int
-mulelao_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n)
-{
- unsigned char c = *s;
- if (c < 0xa0) {
- *pwc = (ucs4_t) c;
- return 1;
- }
- else {
- unsigned short wc = mulelao_2uni[c-0xa0];
- if (wc != 0xfffd) {
- *pwc = (ucs4_t) wc;
- return 1;
- }
- }
- return RET_ILSEQ;
-}
-
-static const unsigned char mulelao_page0e[96] = {
- 0x00, 0xa1, 0xa2, 0x00, 0xa4, 0x00, 0x00, 0xa7, /* 0x80-0x87 */
- 0xa8, 0x00, 0xaa, 0x00, 0x00, 0xad, 0x00, 0x00, /* 0x88-0x8f */
- 0x00, 0x00, 0x00, 0x00, 0xb4, 0xb5, 0xb6, 0xb7, /* 0x90-0x97 */
- 0x00, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf, /* 0x98-0x9f */
- 0x00, 0xc1, 0xc2, 0xc3, 0x00, 0xc5, 0x00, 0xc7, /* 0xa0-0xa7 */
- 0x00, 0x00, 0xca, 0xcb, 0x00, 0xcd, 0xce, 0xcf, /* 0xa8-0xaf */
- 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, /* 0xb0-0xb7 */
- 0xd8, 0xd9, 0x00, 0xdb, 0xdc, 0xdd, 0x00, 0x00, /* 0xb8-0xbf */
- 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0x00, 0xe6, 0x00, /* 0xc0-0xc7 */
- 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0x00, 0x00, /* 0xc8-0xcf */
- 0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, /* 0xd0-0xd7 */
- 0xf8, 0xf9, 0x00, 0x00, 0xfc, 0xfd, 0x00, 0x00, /* 0xd8-0xdf */
-};
-
-static int
-mulelao_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n)
-{
- unsigned char c = 0;
- if (wc < 0x00a0) {
- *r = wc;
- return 1;
- }
- else if (wc == 0x00a0)
- c = 0xa0;
- else if (wc >= 0x0e80 && wc < 0x0ee0)
- c = mulelao_page0e[wc-0x0e80];
- if (c != 0) {
- *r = c;
- return 1;
- }
- return RET_ILSEQ;
-}
+
+/*
+ * MULELAO-1
+ */
+
+static const unsigned short mulelao_2uni[96] = {
+ /* 0xa0 */
+ 0x00a0, 0x0e81, 0x0e82, 0xfffd, 0x0e84, 0xfffd, 0xfffd, 0x0e87,
+ 0x0e88, 0xfffd, 0x0e8a, 0xfffd, 0xfffd, 0x0e8d, 0xfffd, 0xfffd,
+ /* 0xb0 */
+ 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x0e94, 0x0e95, 0x0e96, 0x0e97,
+ 0xfffd, 0x0e99, 0x0e9a, 0x0e9b, 0x0e9c, 0x0e9d, 0x0e9e, 0x0e9f,
+ /* 0xc0 */
+ 0xfffd, 0x0ea1, 0x0ea2, 0x0ea3, 0xfffd, 0x0ea5, 0xfffd, 0x0ea7,
+ 0xfffd, 0xfffd, 0x0eaa, 0x0eab, 0xfffd, 0x0ead, 0x0eae, 0x0eaf,
+ /* 0xd0 */
+ 0x0eb0, 0x0eb1, 0x0eb2, 0x0eb3, 0x0eb4, 0x0eb5, 0x0eb6, 0x0eb7,
+ 0x0eb8, 0x0eb9, 0xfffd, 0x0ebb, 0x0ebc, 0x0ebd, 0xfffd, 0xfffd,
+ /* 0xe0 */
+ 0x0ec0, 0x0ec1, 0x0ec2, 0x0ec3, 0x0ec4, 0xfffd, 0x0ec6, 0xfffd,
+ 0x0ec8, 0x0ec9, 0x0eca, 0x0ecb, 0x0ecc, 0x0ecd, 0xfffd, 0xfffd,
+ /* 0xf0 */
+ 0x0ed0, 0x0ed1, 0x0ed2, 0x0ed3, 0x0ed4, 0x0ed5, 0x0ed6, 0x0ed7,
+ 0x0ed8, 0x0ed9, 0xfffd, 0xfffd, 0x0edc, 0x0edd, 0xfffd, 0xfffd,
+};
+
+static int
+mulelao_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n)
+{
+ unsigned char c = *s;
+ if (c < 0xa0) {
+ *pwc = (ucs4_t) c;
+ return 1;
+ }
+ else {
+ unsigned short wc = mulelao_2uni[c-0xa0];
+ if (wc != 0xfffd) {
+ *pwc = (ucs4_t) wc;
+ return 1;
+ }
+ }
+ return RET_ILSEQ;
+}
+
+static const unsigned char mulelao_page0e[96] = {
+ 0x00, 0xa1, 0xa2, 0x00, 0xa4, 0x00, 0x00, 0xa7, /* 0x80-0x87 */
+ 0xa8, 0x00, 0xaa, 0x00, 0x00, 0xad, 0x00, 0x00, /* 0x88-0x8f */
+ 0x00, 0x00, 0x00, 0x00, 0xb4, 0xb5, 0xb6, 0xb7, /* 0x90-0x97 */
+ 0x00, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf, /* 0x98-0x9f */
+ 0x00, 0xc1, 0xc2, 0xc3, 0x00, 0xc5, 0x00, 0xc7, /* 0xa0-0xa7 */
+ 0x00, 0x00, 0xca, 0xcb, 0x00, 0xcd, 0xce, 0xcf, /* 0xa8-0xaf */
+ 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, /* 0xb0-0xb7 */
+ 0xd8, 0xd9, 0x00, 0xdb, 0xdc, 0xdd, 0x00, 0x00, /* 0xb8-0xbf */
+ 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0x00, 0xe6, 0x00, /* 0xc0-0xc7 */
+ 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0x00, 0x00, /* 0xc8-0xcf */
+ 0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, /* 0xd0-0xd7 */
+ 0xf8, 0xf9, 0x00, 0x00, 0xfc, 0xfd, 0x00, 0x00, /* 0xd8-0xdf */
+};
+
+static int
+mulelao_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n)
+{
+ unsigned char c = 0;
+ if (wc < 0x00a0) {
+ *r = wc;
+ return 1;
+ }
+ else if (wc == 0x00a0)
+ c = 0xa0;
+ else if (wc >= 0x0e80 && wc < 0x0ee0)
+ c = mulelao_page0e[wc-0x0e80];
+ if (c != 0) {
+ *r = c;
+ return 1;
+ }
+ return RET_ILSEQ;
+}
diff --git a/libX11/src/xlibi18n/lcUniConv/tatar_cyr.h b/libX11/src/xlibi18n/lcUniConv/tatar_cyr.h
index cfeb3e110..471e5a79a 100644
--- a/libX11/src/xlibi18n/lcUniConv/tatar_cyr.h
+++ b/libX11/src/xlibi18n/lcUniConv/tatar_cyr.h
@@ -1,122 +1,122 @@
-
-/*
- * TATAR-CYR
- */
-
-static const unsigned short tatar_cyr_2uni[128] = {
- /* 0x80 */
- 0x04d8, 0x0403, 0x201a, 0x0453, 0x201e, 0x2026, 0x2020, 0x2021,
- 0x20ac, 0x2030, 0x04e8, 0x2039, 0x04ae, 0x0496, 0x04a2, 0x04ba,
- /* 0x90 */
- 0x04d9, 0x2018, 0x2019, 0x201c, 0x201d, 0x2022, 0x2013, 0x2014,
- 0x98, 0x2122, 0x04e9, 0x203a, 0x04af, 0x0497, 0x04a3, 0x04bb,
- /* 0xa0 */
- 0x00a0, 0x040e, 0x045e, 0x0408, 0x00a4, 0x0490, 0x00a6, 0x00a7,
- 0x0401, 0x00a9, 0x0404, 0x00ab, 0x00ac, 0x00ad, 0x00ae, 0x0407,
- /* 0xb0 */
- 0x00b0, 0x00b1, 0x0406, 0x0456, 0x0491, 0x00b5, 0x00b6, 0x00b7,
- 0x0451, 0x2116, 0x0454, 0x00bb, 0x0458, 0x0405, 0x0455, 0x0457,
- /* 0xc0 */
- 0x0410, 0x0411, 0x0412, 0x0413, 0x0414, 0x0415, 0x0416, 0x0417,
- 0x0418, 0x0419, 0x041a, 0x041b, 0x041c, 0x041d, 0x041e, 0x041f,
- /* 0xd0 */
- 0x0420, 0x0421, 0x0422, 0x0423, 0x0424, 0x0425, 0x0426, 0x0427,
- 0x0428, 0x0429, 0x042a, 0x042b, 0x042c, 0x042d, 0x042e, 0x042f,
- /* 0xe0 */
- 0x0430, 0x0431, 0x0432, 0x0433, 0x0434, 0x0435, 0x0436, 0x0437,
- 0x0438, 0x0439, 0x043a, 0x043b, 0x043c, 0x043d, 0x043e, 0x043f,
- /* 0xf0 */
- 0x0440, 0x0441, 0x0442, 0x0443, 0x0444, 0x0445, 0x0446, 0x0447,
- 0x0448, 0x0449, 0x044a, 0x044b, 0x044c, 0x044d, 0x044e, 0x044f,
-};
-
-static int
-tatar_cyr_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n)
-{
- unsigned char c = *s;
- if (c < 0x80)
- *pwc = (ucs4_t) c;
- else
- *pwc = (ucs4_t) tatar_cyr_2uni[c-0x80];
- return 1;
-}
-
-static const unsigned char tatar_cyr_page00[32] = {
- 0xa0, 0x00, 0x00, 0x00, 0xa4, 0x00, 0xa6, 0xa7, /* 0xa0-0xa7 */
- 0x00, 0xa9, 0x00, 0xab, 0xac, 0xad, 0xae, 0x00, /* 0xa8-0xaf */
- 0xb0, 0xb1, 0x00, 0x00, 0x00, 0xb5, 0xb6, 0xb7, /* 0xb0-0xb7 */
- 0x00, 0x00, 0x00, 0xbb, 0x00, 0x00, 0x00, 0x00, /* 0xb8-0xbf */
-};
-static const unsigned char tatar_cyr_page04[240] = {
- 0x00, 0xa8, 0x00, 0x81, 0xaa, 0xbd, 0xb2, 0xaf, /* 0x00-0x07 */
- 0xa3, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa1, 0x00, /* 0x08-0x0f */
- 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, /* 0x10-0x17 */
- 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, /* 0x18-0x1f */
- 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, /* 0x20-0x27 */
- 0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, 0xde, 0xdf, /* 0x28-0x2f */
- 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, /* 0x30-0x37 */
- 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef, /* 0x38-0x3f */
- 0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, /* 0x40-0x47 */
- 0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, 0xfe, 0xff, /* 0x48-0x4f */
- 0x00, 0xb8, 0x00, 0x83, 0xba, 0xbe, 0xb3, 0xbf, /* 0x50-0x57 */
- 0xbc, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa2, 0x00, /* 0x58-0x5f */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x60-0x67 */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x68-0x6f */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x70-0x77 */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x78-0x7f */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x80-0x87 */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x88-0x8f */
- 0xa5, 0xb4, 0x00, 0x00, 0x00, 0x00, 0x8d, 0x9d, /* 0x90-0x97 */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x98-0x9f */
- 0x00, 0x00, 0x8e, 0x9e, 0x00, 0x00, 0x00, 0x00, /* 0xa0-0xa7 */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8c, 0x9c, /* 0xa8-0xaf */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xb0-0xb7 */
- 0x00, 0x00, 0x8f, 0x9f, 0x00, 0x00, 0x00, 0x00, /* 0xb8-0xbf */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xc0-0xc7 */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xc8-0xcf */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xd0-0xd7 */
- 0x80, 0x90, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xd8-0xdf */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xe0-0xe7 */
- 0x8a, 0x9a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xe8-0xef */
-};
-static const unsigned char tatar_cyr_page20[48] = {
- 0x00, 0x00, 0x00, 0x96, 0x97, 0x00, 0x00, 0x00, /* 0x10-0x17 */
- 0x91, 0x92, 0x82, 0x00, 0x93, 0x94, 0x84, 0x00, /* 0x18-0x1f */
- 0x86, 0x87, 0x95, 0x00, 0x00, 0x00, 0x85, 0x00, /* 0x20-0x27 */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x28-0x2f */
- 0x89, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x30-0x37 */
- 0x00, 0x8b, 0x9b, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x38-0x3f */
-};
-static const unsigned char tatar_cyr_page21[24] = {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb9, 0x00, /* 0x10-0x17 */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x18-0x1f */
- 0x00, 0x00, 0x99, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x20-0x27 */
-};
-static const unsigned char tatar_cyr_page22[1] = {
- 0xb0, /* 0x16-0x16 */
-};
-
-static int
-tatar_cyr_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n)
-{
- unsigned char c = 0;
- if (wc < 0x0080) {
- *r = wc;
- return 1;
- }
- else if (wc >= 0x00a0 && wc < 0x00bc)
- c = tatar_cyr_page00[wc-0x00a0];
- else if (wc >= 0x0400 && wc < 0x04ef)
- c = tatar_cyr_page04[wc-0x0400];
- else if (wc >= 0x2010 && wc < 0x203b)
- c = tatar_cyr_page20[wc-0x2010];
- else if (wc == 0x20ac)
- c = 0x88;
- else if (wc >= 0x2110 && wc < 0x2123)
- c = tatar_cyr_page21[wc-0x2110];
- if (c != 0) {
- *r = c;
- return 1;
- }
- return RET_ILSEQ;
-}
+
+/*
+ * TATAR-CYR
+ */
+
+static const unsigned short tatar_cyr_2uni[128] = {
+ /* 0x80 */
+ 0x04d8, 0x0403, 0x201a, 0x0453, 0x201e, 0x2026, 0x2020, 0x2021,
+ 0x20ac, 0x2030, 0x04e8, 0x2039, 0x04ae, 0x0496, 0x04a2, 0x04ba,
+ /* 0x90 */
+ 0x04d9, 0x2018, 0x2019, 0x201c, 0x201d, 0x2022, 0x2013, 0x2014,
+ 0x98, 0x2122, 0x04e9, 0x203a, 0x04af, 0x0497, 0x04a3, 0x04bb,
+ /* 0xa0 */
+ 0x00a0, 0x040e, 0x045e, 0x0408, 0x00a4, 0x0490, 0x00a6, 0x00a7,
+ 0x0401, 0x00a9, 0x0404, 0x00ab, 0x00ac, 0x00ad, 0x00ae, 0x0407,
+ /* 0xb0 */
+ 0x00b0, 0x00b1, 0x0406, 0x0456, 0x0491, 0x00b5, 0x00b6, 0x00b7,
+ 0x0451, 0x2116, 0x0454, 0x00bb, 0x0458, 0x0405, 0x0455, 0x0457,
+ /* 0xc0 */
+ 0x0410, 0x0411, 0x0412, 0x0413, 0x0414, 0x0415, 0x0416, 0x0417,
+ 0x0418, 0x0419, 0x041a, 0x041b, 0x041c, 0x041d, 0x041e, 0x041f,
+ /* 0xd0 */
+ 0x0420, 0x0421, 0x0422, 0x0423, 0x0424, 0x0425, 0x0426, 0x0427,
+ 0x0428, 0x0429, 0x042a, 0x042b, 0x042c, 0x042d, 0x042e, 0x042f,
+ /* 0xe0 */
+ 0x0430, 0x0431, 0x0432, 0x0433, 0x0434, 0x0435, 0x0436, 0x0437,
+ 0x0438, 0x0439, 0x043a, 0x043b, 0x043c, 0x043d, 0x043e, 0x043f,
+ /* 0xf0 */
+ 0x0440, 0x0441, 0x0442, 0x0443, 0x0444, 0x0445, 0x0446, 0x0447,
+ 0x0448, 0x0449, 0x044a, 0x044b, 0x044c, 0x044d, 0x044e, 0x044f,
+};
+
+static int
+tatar_cyr_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n)
+{
+ unsigned char c = *s;
+ if (c < 0x80)
+ *pwc = (ucs4_t) c;
+ else
+ *pwc = (ucs4_t) tatar_cyr_2uni[c-0x80];
+ return 1;
+}
+
+static const unsigned char tatar_cyr_page00[32] = {
+ 0xa0, 0x00, 0x00, 0x00, 0xa4, 0x00, 0xa6, 0xa7, /* 0xa0-0xa7 */
+ 0x00, 0xa9, 0x00, 0xab, 0xac, 0xad, 0xae, 0x00, /* 0xa8-0xaf */
+ 0xb0, 0xb1, 0x00, 0x00, 0x00, 0xb5, 0xb6, 0xb7, /* 0xb0-0xb7 */
+ 0x00, 0x00, 0x00, 0xbb, 0x00, 0x00, 0x00, 0x00, /* 0xb8-0xbf */
+};
+static const unsigned char tatar_cyr_page04[240] = {
+ 0x00, 0xa8, 0x00, 0x81, 0xaa, 0xbd, 0xb2, 0xaf, /* 0x00-0x07 */
+ 0xa3, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa1, 0x00, /* 0x08-0x0f */
+ 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, /* 0x10-0x17 */
+ 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, /* 0x18-0x1f */
+ 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, /* 0x20-0x27 */
+ 0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, 0xde, 0xdf, /* 0x28-0x2f */
+ 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, /* 0x30-0x37 */
+ 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef, /* 0x38-0x3f */
+ 0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, /* 0x40-0x47 */
+ 0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, 0xfe, 0xff, /* 0x48-0x4f */
+ 0x00, 0xb8, 0x00, 0x83, 0xba, 0xbe, 0xb3, 0xbf, /* 0x50-0x57 */
+ 0xbc, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa2, 0x00, /* 0x58-0x5f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x60-0x67 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x68-0x6f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x70-0x77 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x78-0x7f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x80-0x87 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x88-0x8f */
+ 0xa5, 0xb4, 0x00, 0x00, 0x00, 0x00, 0x8d, 0x9d, /* 0x90-0x97 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x98-0x9f */
+ 0x00, 0x00, 0x8e, 0x9e, 0x00, 0x00, 0x00, 0x00, /* 0xa0-0xa7 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8c, 0x9c, /* 0xa8-0xaf */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xb0-0xb7 */
+ 0x00, 0x00, 0x8f, 0x9f, 0x00, 0x00, 0x00, 0x00, /* 0xb8-0xbf */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xc0-0xc7 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xc8-0xcf */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xd0-0xd7 */
+ 0x80, 0x90, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xd8-0xdf */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xe0-0xe7 */
+ 0x8a, 0x9a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xe8-0xef */
+};
+static const unsigned char tatar_cyr_page20[48] = {
+ 0x00, 0x00, 0x00, 0x96, 0x97, 0x00, 0x00, 0x00, /* 0x10-0x17 */
+ 0x91, 0x92, 0x82, 0x00, 0x93, 0x94, 0x84, 0x00, /* 0x18-0x1f */
+ 0x86, 0x87, 0x95, 0x00, 0x00, 0x00, 0x85, 0x00, /* 0x20-0x27 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x28-0x2f */
+ 0x89, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x30-0x37 */
+ 0x00, 0x8b, 0x9b, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x38-0x3f */
+};
+static const unsigned char tatar_cyr_page21[24] = {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb9, 0x00, /* 0x10-0x17 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x18-0x1f */
+ 0x00, 0x00, 0x99, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x20-0x27 */
+};
+static const unsigned char tatar_cyr_page22[1] = {
+ 0xb0, /* 0x16-0x16 */
+};
+
+static int
+tatar_cyr_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n)
+{
+ unsigned char c = 0;
+ if (wc < 0x0080) {
+ *r = wc;
+ return 1;
+ }
+ else if (wc >= 0x00a0 && wc < 0x00bc)
+ c = tatar_cyr_page00[wc-0x00a0];
+ else if (wc >= 0x0400 && wc < 0x04ef)
+ c = tatar_cyr_page04[wc-0x0400];
+ else if (wc >= 0x2010 && wc < 0x203b)
+ c = tatar_cyr_page20[wc-0x2010];
+ else if (wc == 0x20ac)
+ c = 0x88;
+ else if (wc >= 0x2110 && wc < 0x2123)
+ c = tatar_cyr_page21[wc-0x2110];
+ if (c != 0) {
+ *r = c;
+ return 1;
+ }
+ return RET_ILSEQ;
+}
diff --git a/libX11/src/xlibi18n/lcUniConv/tcvn.h b/libX11/src/xlibi18n/lcUniConv/tcvn.h
index 953a1f4fd..4662683dc 100644
--- a/libX11/src/xlibi18n/lcUniConv/tcvn.h
+++ b/libX11/src/xlibi18n/lcUniConv/tcvn.h
@@ -1,133 +1,133 @@
-
-/*
- * TCVN-5712
- */
-
-static const unsigned short tcvn_2uni_1[32] = {
- /* 0x00 */
- 0x0000, 0x00da, 0x1ee4, 0x0003, 0x1eea, 0x1eec, 0x1eee, 0x0007,
- 0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f,
- /* 0x10 */
- 0x0010, 0x1ee8, 0x1ef0, 0x1ef2, 0x1ef6, 0x1ef8, 0x00dd, 0x1ef4,
- 0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f,
-};
-static const unsigned short tcvn_2uni_2[128] = {
- /* 0x80 */
- 0x00c0, 0x1ea2, 0x00c3, 0x00c1, 0x1ea0, 0x1eb6, 0x1eac, 0x00c8,
- 0x1eba, 0x1ebc, 0x00c9, 0x1eb8, 0x1ec6, 0x00cc, 0x1ec8, 0x0128,
- /* 0x90 */
- 0x00cd, 0x1eca, 0x00d2, 0x1ece, 0x00d5, 0x00d3, 0x1ecc, 0x1ed8,
- 0x1edc, 0x1ede, 0x1ee0, 0x1eda, 0x1ee2, 0x00d9, 0x1ee6, 0x0168,
- /* 0xa0 */
- 0x00a0, 0x0102, 0x00c2, 0x00ca, 0x00d4, 0x01a0, 0x01af, 0x0110,
- 0x0103, 0x00e2, 0x00ea, 0x00f4, 0x01a1, 0x01b0, 0x0111, 0x1eb0,
- /* 0xb0 */
- 0x0300, 0x0309, 0x0303, 0x0301, 0x0323, 0x00e0, 0x1ea3, 0x00e3,
- 0x00e1, 0x1ea1, 0x1eb2, 0x1eb1, 0x1eb3, 0x1eb5, 0x1eaf, 0x1eb4,
- /* 0xc0 */
- 0x1eae, 0x1ea6, 0x1ea8, 0x1eaa, 0x1ea4, 0x1ec0, 0x1eb7, 0x1ea7,
- 0x1ea9, 0x1eab, 0x1ea5, 0x1ead, 0x00e8, 0x1ec2, 0x1ebb, 0x1ebd,
- /* 0xd0 */
- 0x00e9, 0x1eb9, 0x1ec1, 0x1ec3, 0x1ec5, 0x1ebf, 0x1ec7, 0x00ec,
- 0x1ec9, 0x1ec4, 0x1ebe, 0x1ed2, 0x0129, 0x00ed, 0x1ecb, 0x00f2,
- /* 0xe0 */
- 0x1ed4, 0x1ecf, 0x00f5, 0x00f3, 0x1ecd, 0x1ed3, 0x1ed5, 0x1ed7,
- 0x1ed1, 0x1ed9, 0x1edd, 0x1edf, 0x1ee1, 0x1edb, 0x1ee3, 0x00f9,
- /* 0xf0 */
- 0x1ed6, 0x1ee7, 0x0169, 0x00fa, 0x1ee5, 0x1eeb, 0x1eed, 0x1eef,
- 0x1ee9, 0x1ef1, 0x1ef3, 0x1ef7, 0x1ef9, 0x00fd, 0x1ef5, 0x1ed0,
-};
-
-static int
-tcvn_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n)
-{
- unsigned char c = *s;
- if (c < 0x20)
- *pwc = (ucs4_t) tcvn_2uni_1[c];
- else if (c < 0x80)
- *pwc = (ucs4_t) c;
- else
- *pwc = (ucs4_t) tcvn_2uni_2[c-0x80];
- return 1;
-}
-
-static const unsigned char tcvn_page00[96+184] = {
- 0xa0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xa0-0xa7 */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xa8-0xaf */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xb0-0xb7 */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xb8-0xbf */
- 0x80, 0x83, 0xa2, 0x82, 0x00, 0x00, 0x00, 0x00, /* 0xc0-0xc7 */
- 0x87, 0x8a, 0xa3, 0x00, 0x8d, 0x90, 0x00, 0x00, /* 0xc8-0xcf */
- 0x00, 0x00, 0x92, 0x95, 0xa4, 0x94, 0x00, 0x00, /* 0xd0-0xd7 */
- 0x00, 0x9d, 0x01, 0x00, 0x00, 0x16, 0x00, 0x00, /* 0xd8-0xdf */
- 0xb5, 0xb8, 0xa9, 0xb7, 0x00, 0x00, 0x00, 0x00, /* 0xe0-0xe7 */
- 0xcc, 0xd0, 0xaa, 0x00, 0xd7, 0xdd, 0x00, 0x00, /* 0xe8-0xef */
- 0x00, 0x00, 0xdf, 0xe3, 0xab, 0xe2, 0x00, 0x00, /* 0xf0-0xf7 */
- 0x00, 0xef, 0xf3, 0x00, 0x00, 0xfd, 0x00, 0x00, /* 0xf8-0xff */
- /* 0x0100 */
- 0x00, 0x00, 0xa1, 0xa8, 0x00, 0x00, 0x00, 0x00, /* 0x00-0x07 */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x08-0x0f */
- 0xa7, 0xae, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x10-0x17 */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x18-0x1f */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x20-0x27 */
- 0x8f, 0xdc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x28-0x2f */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x30-0x37 */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x38-0x3f */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x40-0x47 */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x48-0x4f */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x50-0x57 */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x58-0x5f */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x60-0x67 */
- 0x9f, 0xf2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x68-0x6f */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x70-0x77 */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x78-0x7f */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x80-0x87 */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x88-0x8f */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x90-0x97 */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x98-0x9f */
- 0xa5, 0xac, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xa0-0xa7 */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa6, /* 0xa8-0xaf */
- 0xad, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xb0-0xb7 */
-};
-static const unsigned char tcvn_page03[40] = {
- 0xb0, 0xb3, 0x00, 0xb2, 0x00, 0x00, 0x00, 0x00, /* 0x00-0x07 */
- 0x00, 0xb1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x08-0x0f */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x10-0x17 */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x18-0x1f */
- 0x00, 0x00, 0x00, 0xb4, 0x00, 0x00, 0x00, 0x00, /* 0x20-0x27 */
-};
-static const unsigned char tcvn_page1e[96] = {
- 0x84, 0xb9, 0x81, 0xb6, 0xc4, 0xca, 0xc1, 0xc7, /* 0xa0-0xa7 */
- 0xc2, 0xc8, 0xc3, 0xc9, 0x86, 0xcb, 0xc0, 0xbe, /* 0xa8-0xaf */
- 0xaf, 0xbb, 0xba, 0xbc, 0xbf, 0xbd, 0x85, 0xc6, /* 0xb0-0xb7 */
- 0x8b, 0xd1, 0x88, 0xce, 0x89, 0xcf, 0xda, 0xd5, /* 0xb8-0xbf */
- 0xc5, 0xd2, 0xcd, 0xd3, 0xd9, 0xd4, 0x8c, 0xd6, /* 0xc0-0xc7 */
- 0x8e, 0xd8, 0x91, 0xde, 0x96, 0xe4, 0x93, 0xe1, /* 0xc8-0xcf */
- 0xff, 0xe8, 0xdb, 0xe5, 0xe0, 0xe6, 0xf0, 0xe7, /* 0xd0-0xd7 */
- 0x97, 0xe9, 0x9b, 0xed, 0x98, 0xea, 0x99, 0xeb, /* 0xd8-0xdf */
- 0x9a, 0xec, 0x9c, 0xee, 0x02, 0xf4, 0x9e, 0xf1, /* 0xe0-0xe7 */
- 0x11, 0xf8, 0x04, 0xf5, 0x05, 0xf6, 0x06, 0xf7, /* 0xe8-0xef */
- 0x12, 0xf9, 0x13, 0xfa, 0x17, 0xfe, 0x14, 0xfb, /* 0xf0-0xf7 */
- 0x15, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xf8-0xff */
-};
-
-static int
-tcvn_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n)
-{
- unsigned char c = 0;
- if (wc < 0x0080 && (wc >= 0x0020 || (0x00fe0076 & (1 << wc)) == 0)) {
- *r = wc;
- return 1;
- }
- else if (wc >= 0x00a0 && wc < 0x01b8)
- c = tcvn_page00[wc-0x00a0];
- else if (wc >= 0x0300 && wc < 0x0328)
- c = tcvn_page03[wc-0x0300];
- else if (wc >= 0x1ea0 && wc < 0x1f00)
- c = tcvn_page1e[wc-0x1ea0];
- if (c != 0) {
- *r = c;
- return 1;
- }
- return RET_ILSEQ;
-}
+
+/*
+ * TCVN-5712
+ */
+
+static const unsigned short tcvn_2uni_1[32] = {
+ /* 0x00 */
+ 0x0000, 0x00da, 0x1ee4, 0x0003, 0x1eea, 0x1eec, 0x1eee, 0x0007,
+ 0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f,
+ /* 0x10 */
+ 0x0010, 0x1ee8, 0x1ef0, 0x1ef2, 0x1ef6, 0x1ef8, 0x00dd, 0x1ef4,
+ 0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f,
+};
+static const unsigned short tcvn_2uni_2[128] = {
+ /* 0x80 */
+ 0x00c0, 0x1ea2, 0x00c3, 0x00c1, 0x1ea0, 0x1eb6, 0x1eac, 0x00c8,
+ 0x1eba, 0x1ebc, 0x00c9, 0x1eb8, 0x1ec6, 0x00cc, 0x1ec8, 0x0128,
+ /* 0x90 */
+ 0x00cd, 0x1eca, 0x00d2, 0x1ece, 0x00d5, 0x00d3, 0x1ecc, 0x1ed8,
+ 0x1edc, 0x1ede, 0x1ee0, 0x1eda, 0x1ee2, 0x00d9, 0x1ee6, 0x0168,
+ /* 0xa0 */
+ 0x00a0, 0x0102, 0x00c2, 0x00ca, 0x00d4, 0x01a0, 0x01af, 0x0110,
+ 0x0103, 0x00e2, 0x00ea, 0x00f4, 0x01a1, 0x01b0, 0x0111, 0x1eb0,
+ /* 0xb0 */
+ 0x0300, 0x0309, 0x0303, 0x0301, 0x0323, 0x00e0, 0x1ea3, 0x00e3,
+ 0x00e1, 0x1ea1, 0x1eb2, 0x1eb1, 0x1eb3, 0x1eb5, 0x1eaf, 0x1eb4,
+ /* 0xc0 */
+ 0x1eae, 0x1ea6, 0x1ea8, 0x1eaa, 0x1ea4, 0x1ec0, 0x1eb7, 0x1ea7,
+ 0x1ea9, 0x1eab, 0x1ea5, 0x1ead, 0x00e8, 0x1ec2, 0x1ebb, 0x1ebd,
+ /* 0xd0 */
+ 0x00e9, 0x1eb9, 0x1ec1, 0x1ec3, 0x1ec5, 0x1ebf, 0x1ec7, 0x00ec,
+ 0x1ec9, 0x1ec4, 0x1ebe, 0x1ed2, 0x0129, 0x00ed, 0x1ecb, 0x00f2,
+ /* 0xe0 */
+ 0x1ed4, 0x1ecf, 0x00f5, 0x00f3, 0x1ecd, 0x1ed3, 0x1ed5, 0x1ed7,
+ 0x1ed1, 0x1ed9, 0x1edd, 0x1edf, 0x1ee1, 0x1edb, 0x1ee3, 0x00f9,
+ /* 0xf0 */
+ 0x1ed6, 0x1ee7, 0x0169, 0x00fa, 0x1ee5, 0x1eeb, 0x1eed, 0x1eef,
+ 0x1ee9, 0x1ef1, 0x1ef3, 0x1ef7, 0x1ef9, 0x00fd, 0x1ef5, 0x1ed0,
+};
+
+static int
+tcvn_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n)
+{
+ unsigned char c = *s;
+ if (c < 0x20)
+ *pwc = (ucs4_t) tcvn_2uni_1[c];
+ else if (c < 0x80)
+ *pwc = (ucs4_t) c;
+ else
+ *pwc = (ucs4_t) tcvn_2uni_2[c-0x80];
+ return 1;
+}
+
+static const unsigned char tcvn_page00[96+184] = {
+ 0xa0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xa0-0xa7 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xa8-0xaf */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xb0-0xb7 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xb8-0xbf */
+ 0x80, 0x83, 0xa2, 0x82, 0x00, 0x00, 0x00, 0x00, /* 0xc0-0xc7 */
+ 0x87, 0x8a, 0xa3, 0x00, 0x8d, 0x90, 0x00, 0x00, /* 0xc8-0xcf */
+ 0x00, 0x00, 0x92, 0x95, 0xa4, 0x94, 0x00, 0x00, /* 0xd0-0xd7 */
+ 0x00, 0x9d, 0x01, 0x00, 0x00, 0x16, 0x00, 0x00, /* 0xd8-0xdf */
+ 0xb5, 0xb8, 0xa9, 0xb7, 0x00, 0x00, 0x00, 0x00, /* 0xe0-0xe7 */
+ 0xcc, 0xd0, 0xaa, 0x00, 0xd7, 0xdd, 0x00, 0x00, /* 0xe8-0xef */
+ 0x00, 0x00, 0xdf, 0xe3, 0xab, 0xe2, 0x00, 0x00, /* 0xf0-0xf7 */
+ 0x00, 0xef, 0xf3, 0x00, 0x00, 0xfd, 0x00, 0x00, /* 0xf8-0xff */
+ /* 0x0100 */
+ 0x00, 0x00, 0xa1, 0xa8, 0x00, 0x00, 0x00, 0x00, /* 0x00-0x07 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x08-0x0f */
+ 0xa7, 0xae, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x10-0x17 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x18-0x1f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x20-0x27 */
+ 0x8f, 0xdc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x28-0x2f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x30-0x37 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x38-0x3f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x40-0x47 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x48-0x4f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x50-0x57 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x58-0x5f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x60-0x67 */
+ 0x9f, 0xf2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x68-0x6f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x70-0x77 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x78-0x7f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x80-0x87 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x88-0x8f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x90-0x97 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x98-0x9f */
+ 0xa5, 0xac, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xa0-0xa7 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa6, /* 0xa8-0xaf */
+ 0xad, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xb0-0xb7 */
+};
+static const unsigned char tcvn_page03[40] = {
+ 0xb0, 0xb3, 0x00, 0xb2, 0x00, 0x00, 0x00, 0x00, /* 0x00-0x07 */
+ 0x00, 0xb1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x08-0x0f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x10-0x17 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x18-0x1f */
+ 0x00, 0x00, 0x00, 0xb4, 0x00, 0x00, 0x00, 0x00, /* 0x20-0x27 */
+};
+static const unsigned char tcvn_page1e[96] = {
+ 0x84, 0xb9, 0x81, 0xb6, 0xc4, 0xca, 0xc1, 0xc7, /* 0xa0-0xa7 */
+ 0xc2, 0xc8, 0xc3, 0xc9, 0x86, 0xcb, 0xc0, 0xbe, /* 0xa8-0xaf */
+ 0xaf, 0xbb, 0xba, 0xbc, 0xbf, 0xbd, 0x85, 0xc6, /* 0xb0-0xb7 */
+ 0x8b, 0xd1, 0x88, 0xce, 0x89, 0xcf, 0xda, 0xd5, /* 0xb8-0xbf */
+ 0xc5, 0xd2, 0xcd, 0xd3, 0xd9, 0xd4, 0x8c, 0xd6, /* 0xc0-0xc7 */
+ 0x8e, 0xd8, 0x91, 0xde, 0x96, 0xe4, 0x93, 0xe1, /* 0xc8-0xcf */
+ 0xff, 0xe8, 0xdb, 0xe5, 0xe0, 0xe6, 0xf0, 0xe7, /* 0xd0-0xd7 */
+ 0x97, 0xe9, 0x9b, 0xed, 0x98, 0xea, 0x99, 0xeb, /* 0xd8-0xdf */
+ 0x9a, 0xec, 0x9c, 0xee, 0x02, 0xf4, 0x9e, 0xf1, /* 0xe0-0xe7 */
+ 0x11, 0xf8, 0x04, 0xf5, 0x05, 0xf6, 0x06, 0xf7, /* 0xe8-0xef */
+ 0x12, 0xf9, 0x13, 0xfa, 0x17, 0xfe, 0x14, 0xfb, /* 0xf0-0xf7 */
+ 0x15, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xf8-0xff */
+};
+
+static int
+tcvn_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n)
+{
+ unsigned char c = 0;
+ if (wc < 0x0080 && (wc >= 0x0020 || (0x00fe0076 & (1 << wc)) == 0)) {
+ *r = wc;
+ return 1;
+ }
+ else if (wc >= 0x00a0 && wc < 0x01b8)
+ c = tcvn_page00[wc-0x00a0];
+ else if (wc >= 0x0300 && wc < 0x0328)
+ c = tcvn_page03[wc-0x0300];
+ else if (wc >= 0x1ea0 && wc < 0x1f00)
+ c = tcvn_page1e[wc-0x1ea0];
+ if (c != 0) {
+ *r = c;
+ return 1;
+ }
+ return RET_ILSEQ;
+}
diff --git a/libX11/src/xlibi18n/lcUniConv/tis620.h b/libX11/src/xlibi18n/lcUniConv/tis620.h
index 0e3184a5c..4fa96ec98 100644
--- a/libX11/src/xlibi18n/lcUniConv/tis620.h
+++ b/libX11/src/xlibi18n/lcUniConv/tis620.h
@@ -1,77 +1,77 @@
-
-/*
- * TIS620-0
- */
-
-static const unsigned short tis620_2uni[96] = {
- /* 0xa0 */
- 0xfffd, 0x0e01, 0x0e02, 0x0e03, 0x0e04, 0x0e05, 0x0e06, 0x0e07,
- 0x0e08, 0x0e09, 0x0e0a, 0x0e0b, 0x0e0c, 0x0e0d, 0x0e0e, 0x0e0f,
- /* 0xb0 */
- 0x0e10, 0x0e11, 0x0e12, 0x0e13, 0x0e14, 0x0e15, 0x0e16, 0x0e17,
- 0x0e18, 0x0e19, 0x0e1a, 0x0e1b, 0x0e1c, 0x0e1d, 0x0e1e, 0x0e1f,
- /* 0xc0 */
- 0x0e20, 0x0e21, 0x0e22, 0x0e23, 0x0e24, 0x0e25, 0x0e26, 0x0e27,
- 0x0e28, 0x0e29, 0x0e2a, 0x0e2b, 0x0e2c, 0x0e2d, 0x0e2e, 0x0e2f,
- /* 0xd0 */
- 0x0e30, 0x0e31, 0x0e32, 0x0e33, 0x0e34, 0x0e35, 0x0e36, 0x0e37,
- 0x0e38, 0x0e39, 0x0e3a, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x0e3f,
- /* 0xe0 */
- 0x0e40, 0x0e41, 0x0e42, 0x0e43, 0x0e44, 0x0e45, 0x0e46, 0x0e47,
- 0x0e48, 0x0e49, 0x0e4a, 0x0e4b, 0x0e4c, 0x0e4d, 0x0e4e, 0x0e4f,
- /* 0xf0 */
- 0x0e50, 0x0e51, 0x0e52, 0x0e53, 0x0e54, 0x0e55, 0x0e56, 0x0e57,
- 0x0e58, 0x0e59, 0x0e5a, 0x0e5b, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
-};
-
-static int
-tis620_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n)
-{
- unsigned char c = *s;
- if (c < 0x80) {
- *pwc = (ucs4_t) c;
- return 1;
- }
- else if (c < 0xa0) {
- }
- else {
- unsigned short wc = tis620_2uni[c-0xa0];
- if (wc != 0xfffd) {
- *pwc = (ucs4_t) wc;
- return 1;
- }
- }
- return RET_ILSEQ;
-}
-
-static const unsigned char tis620_page0e[96] = {
- 0x00, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7, /* 0x00-0x07 */
- 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf, /* 0x08-0x0f */
- 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7, /* 0x10-0x17 */
- 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf, /* 0x18-0x1f */
- 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, /* 0x20-0x27 */
- 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, /* 0x28-0x2f */
- 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, /* 0x30-0x37 */
- 0xd8, 0xd9, 0xda, 0x00, 0x00, 0x00, 0x00, 0xdf, /* 0x38-0x3f */
- 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, /* 0x40-0x47 */
- 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef, /* 0x48-0x4f */
- 0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, /* 0x50-0x57 */
- 0xf8, 0xf9, 0xfa, 0xfb, 0x00, 0x00, 0x00, 0x00, /* 0x58-0x5f */
-};
-
-static int
-tis620_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n)
-{
- unsigned char c = 0;
- if (wc < 0x0080) {
- *r = wc;
- return 1;
- }
- else if (wc >= 0x0e00 && wc < 0x0e60)
- c = tis620_page0e[wc-0x0e00];
- if (c != 0) {
- *r = c;
- return 1;
- }
- return RET_ILSEQ;
-}
+
+/*
+ * TIS620-0
+ */
+
+static const unsigned short tis620_2uni[96] = {
+ /* 0xa0 */
+ 0xfffd, 0x0e01, 0x0e02, 0x0e03, 0x0e04, 0x0e05, 0x0e06, 0x0e07,
+ 0x0e08, 0x0e09, 0x0e0a, 0x0e0b, 0x0e0c, 0x0e0d, 0x0e0e, 0x0e0f,
+ /* 0xb0 */
+ 0x0e10, 0x0e11, 0x0e12, 0x0e13, 0x0e14, 0x0e15, 0x0e16, 0x0e17,
+ 0x0e18, 0x0e19, 0x0e1a, 0x0e1b, 0x0e1c, 0x0e1d, 0x0e1e, 0x0e1f,
+ /* 0xc0 */
+ 0x0e20, 0x0e21, 0x0e22, 0x0e23, 0x0e24, 0x0e25, 0x0e26, 0x0e27,
+ 0x0e28, 0x0e29, 0x0e2a, 0x0e2b, 0x0e2c, 0x0e2d, 0x0e2e, 0x0e2f,
+ /* 0xd0 */
+ 0x0e30, 0x0e31, 0x0e32, 0x0e33, 0x0e34, 0x0e35, 0x0e36, 0x0e37,
+ 0x0e38, 0x0e39, 0x0e3a, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0x0e3f,
+ /* 0xe0 */
+ 0x0e40, 0x0e41, 0x0e42, 0x0e43, 0x0e44, 0x0e45, 0x0e46, 0x0e47,
+ 0x0e48, 0x0e49, 0x0e4a, 0x0e4b, 0x0e4c, 0x0e4d, 0x0e4e, 0x0e4f,
+ /* 0xf0 */
+ 0x0e50, 0x0e51, 0x0e52, 0x0e53, 0x0e54, 0x0e55, 0x0e56, 0x0e57,
+ 0x0e58, 0x0e59, 0x0e5a, 0x0e5b, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+};
+
+static int
+tis620_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n)
+{
+ unsigned char c = *s;
+ if (c < 0x80) {
+ *pwc = (ucs4_t) c;
+ return 1;
+ }
+ else if (c < 0xa0) {
+ }
+ else {
+ unsigned short wc = tis620_2uni[c-0xa0];
+ if (wc != 0xfffd) {
+ *pwc = (ucs4_t) wc;
+ return 1;
+ }
+ }
+ return RET_ILSEQ;
+}
+
+static const unsigned char tis620_page0e[96] = {
+ 0x00, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7, /* 0x00-0x07 */
+ 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf, /* 0x08-0x0f */
+ 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7, /* 0x10-0x17 */
+ 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf, /* 0x18-0x1f */
+ 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, /* 0x20-0x27 */
+ 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, /* 0x28-0x2f */
+ 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, /* 0x30-0x37 */
+ 0xd8, 0xd9, 0xda, 0x00, 0x00, 0x00, 0x00, 0xdf, /* 0x38-0x3f */
+ 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, /* 0x40-0x47 */
+ 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef, /* 0x48-0x4f */
+ 0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, /* 0x50-0x57 */
+ 0xf8, 0xf9, 0xfa, 0xfb, 0x00, 0x00, 0x00, 0x00, /* 0x58-0x5f */
+};
+
+static int
+tis620_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n)
+{
+ unsigned char c = 0;
+ if (wc < 0x0080) {
+ *r = wc;
+ return 1;
+ }
+ else if (wc >= 0x0e00 && wc < 0x0e60)
+ c = tis620_page0e[wc-0x0e00];
+ if (c != 0) {
+ *r = c;
+ return 1;
+ }
+ return RET_ILSEQ;
+}
diff --git a/libX11/src/xlibi18n/lcUniConv/ucs2be.h b/libX11/src/xlibi18n/lcUniConv/ucs2be.h
index 958d25051..20a8b27bd 100644
--- a/libX11/src/xlibi18n/lcUniConv/ucs2be.h
+++ b/libX11/src/xlibi18n/lcUniConv/ucs2be.h
@@ -1,31 +1,31 @@
-/*
- * UCS-2BE = UCS-2 big endian
- */
-
-static int
-ucs2be_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n)
-{
- if (n >= 2) {
- if (s[0] >= 0xd8 && s[0] < 0xe0) {
- return RET_ILSEQ;
- } else {
- *pwc = (s[0] << 8) + s[1];
- return 2;
- }
- }
- return RET_TOOFEW(0);
-}
-
-static int
-ucs2be_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n)
-{
- if (wc < 0x10000 && !(wc >= 0xd800 && wc < 0xe000)) {
- if (n >= 2) {
- r[0] = (unsigned char) (wc >> 8);
- r[1] = (unsigned char) wc;
- return 2;
- } else
- return RET_TOOSMALL;
- }
- return RET_ILSEQ;
-}
+/*
+ * UCS-2BE = UCS-2 big endian
+ */
+
+static int
+ucs2be_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n)
+{
+ if (n >= 2) {
+ if (s[0] >= 0xd8 && s[0] < 0xe0) {
+ return RET_ILSEQ;
+ } else {
+ *pwc = (s[0] << 8) + s[1];
+ return 2;
+ }
+ }
+ return RET_TOOFEW(0);
+}
+
+static int
+ucs2be_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n)
+{
+ if (wc < 0x10000 && !(wc >= 0xd800 && wc < 0xe000)) {
+ if (n >= 2) {
+ r[0] = (unsigned char) (wc >> 8);
+ r[1] = (unsigned char) wc;
+ return 2;
+ } else
+ return RET_TOOSMALL;
+ }
+ return RET_ILSEQ;
+}
diff --git a/libX11/src/xlibi18n/lcUniConv/utf8.h b/libX11/src/xlibi18n/lcUniConv/utf8.h
index ef0f7303f..d00995ca0 100644
--- a/libX11/src/xlibi18n/lcUniConv/utf8.h
+++ b/libX11/src/xlibi18n/lcUniConv/utf8.h
@@ -1,109 +1,109 @@
-
-/*
- * UTF-8
- */
-
-/* Specification: RFC 2279 */
-
-static int
-utf8_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n)
-{
- unsigned char c = s[0];
-
- if (c < 0x80) {
- *pwc = c;
- return 1;
- } else if (c < 0xc2) {
- return RET_ILSEQ;
- } else if (c < 0xe0) {
- if (n < 2)
- return RET_TOOFEW(0);
- if (!((s[1] ^ 0x80) < 0x40))
- return RET_ILSEQ;
- *pwc = ((ucs4_t) (c & 0x1f) << 6)
- | (ucs4_t) (s[1] ^ 0x80);
- return 2;
- } else if (c < 0xf0) {
- if (n < 3)
- return RET_TOOFEW(0);
- if (!((s[1] ^ 0x80) < 0x40 && (s[2] ^ 0x80) < 0x40
- && (c >= 0xe1 || s[1] >= 0xa0)))
- return RET_ILSEQ;
- *pwc = ((ucs4_t) (c & 0x0f) << 12)
- | ((ucs4_t) (s[1] ^ 0x80) << 6)
- | (ucs4_t) (s[2] ^ 0x80);
- return 3;
- } else if (c < 0xf8) {
- if (n < 4)
- return RET_TOOFEW(0);
- if (!((s[1] ^ 0x80) < 0x40 && (s[2] ^ 0x80) < 0x40
- && (s[3] ^ 0x80) < 0x40
- && (c >= 0xf1 || s[1] >= 0x90)))
- return RET_ILSEQ;
- *pwc = ((ucs4_t) (c & 0x07) << 18)
- | ((ucs4_t) (s[1] ^ 0x80) << 12)
- | ((ucs4_t) (s[2] ^ 0x80) << 6)
- | (ucs4_t) (s[3] ^ 0x80);
- return 4;
- } else if (c < 0xfc) {
- if (n < 5)
- return RET_TOOFEW(0);
- if (!((s[1] ^ 0x80) < 0x40 && (s[2] ^ 0x80) < 0x40
- && (s[3] ^ 0x80) < 0x40 && (s[4] ^ 0x80) < 0x40
- && (c >= 0xf9 || s[1] >= 0x88)))
- return RET_ILSEQ;
- *pwc = ((ucs4_t) (c & 0x03) << 24)
- | ((ucs4_t) (s[1] ^ 0x80) << 18)
- | ((ucs4_t) (s[2] ^ 0x80) << 12)
- | ((ucs4_t) (s[3] ^ 0x80) << 6)
- | (ucs4_t) (s[4] ^ 0x80);
- return 5;
- } else if (c < 0xfe) {
- if (n < 6)
- return RET_TOOFEW(0);
- if (!((s[1] ^ 0x80) < 0x40 && (s[2] ^ 0x80) < 0x40
- && (s[3] ^ 0x80) < 0x40 && (s[4] ^ 0x80) < 0x40
- && (s[5] ^ 0x80) < 0x40
- && (c >= 0xfd || s[1] >= 0x84)))
- return RET_ILSEQ;
- *pwc = ((ucs4_t) (c & 0x01) << 30)
- | ((ucs4_t) (s[1] ^ 0x80) << 24)
- | ((ucs4_t) (s[2] ^ 0x80) << 18)
- | ((ucs4_t) (s[3] ^ 0x80) << 12)
- | ((ucs4_t) (s[4] ^ 0x80) << 6)
- | (ucs4_t) (s[5] ^ 0x80);
- return 6;
- } else
- return RET_ILSEQ;
-}
-
-static int
-utf8_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n) /* n == 0 is acceptable */
-{
- int count;
- if (wc < 0x80)
- count = 1;
- else if (wc < 0x800)
- count = 2;
- else if (wc < 0x10000)
- count = 3;
- else if (wc < 0x200000)
- count = 4;
- else if (wc < 0x4000000)
- count = 5;
- else if (wc <= 0x7fffffff)
- count = 6;
- else
- return RET_ILSEQ;
- if (n < count)
- return RET_TOOSMALL;
- switch (count) { /* note: code falls through cases! */
- case 6: r[5] = 0x80 | (wc & 0x3f); wc = wc >> 6; wc |= 0x4000000;
- case 5: r[4] = 0x80 | (wc & 0x3f); wc = wc >> 6; wc |= 0x200000;
- case 4: r[3] = 0x80 | (wc & 0x3f); wc = wc >> 6; wc |= 0x10000;
- case 3: r[2] = 0x80 | (wc & 0x3f); wc = wc >> 6; wc |= 0x800;
- case 2: r[1] = 0x80 | (wc & 0x3f); wc = wc >> 6; wc |= 0xc0;
- case 1: r[0] = wc;
- }
- return count;
-}
+
+/*
+ * UTF-8
+ */
+
+/* Specification: RFC 2279 */
+
+static int
+utf8_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n)
+{
+ unsigned char c = s[0];
+
+ if (c < 0x80) {
+ *pwc = c;
+ return 1;
+ } else if (c < 0xc2) {
+ return RET_ILSEQ;
+ } else if (c < 0xe0) {
+ if (n < 2)
+ return RET_TOOFEW(0);
+ if (!((s[1] ^ 0x80) < 0x40))
+ return RET_ILSEQ;
+ *pwc = ((ucs4_t) (c & 0x1f) << 6)
+ | (ucs4_t) (s[1] ^ 0x80);
+ return 2;
+ } else if (c < 0xf0) {
+ if (n < 3)
+ return RET_TOOFEW(0);
+ if (!((s[1] ^ 0x80) < 0x40 && (s[2] ^ 0x80) < 0x40
+ && (c >= 0xe1 || s[1] >= 0xa0)))
+ return RET_ILSEQ;
+ *pwc = ((ucs4_t) (c & 0x0f) << 12)
+ | ((ucs4_t) (s[1] ^ 0x80) << 6)
+ | (ucs4_t) (s[2] ^ 0x80);
+ return 3;
+ } else if (c < 0xf8) {
+ if (n < 4)
+ return RET_TOOFEW(0);
+ if (!((s[1] ^ 0x80) < 0x40 && (s[2] ^ 0x80) < 0x40
+ && (s[3] ^ 0x80) < 0x40
+ && (c >= 0xf1 || s[1] >= 0x90)))
+ return RET_ILSEQ;
+ *pwc = ((ucs4_t) (c & 0x07) << 18)
+ | ((ucs4_t) (s[1] ^ 0x80) << 12)
+ | ((ucs4_t) (s[2] ^ 0x80) << 6)
+ | (ucs4_t) (s[3] ^ 0x80);
+ return 4;
+ } else if (c < 0xfc) {
+ if (n < 5)
+ return RET_TOOFEW(0);
+ if (!((s[1] ^ 0x80) < 0x40 && (s[2] ^ 0x80) < 0x40
+ && (s[3] ^ 0x80) < 0x40 && (s[4] ^ 0x80) < 0x40
+ && (c >= 0xf9 || s[1] >= 0x88)))
+ return RET_ILSEQ;
+ *pwc = ((ucs4_t) (c & 0x03) << 24)
+ | ((ucs4_t) (s[1] ^ 0x80) << 18)
+ | ((ucs4_t) (s[2] ^ 0x80) << 12)
+ | ((ucs4_t) (s[3] ^ 0x80) << 6)
+ | (ucs4_t) (s[4] ^ 0x80);
+ return 5;
+ } else if (c < 0xfe) {
+ if (n < 6)
+ return RET_TOOFEW(0);
+ if (!((s[1] ^ 0x80) < 0x40 && (s[2] ^ 0x80) < 0x40
+ && (s[3] ^ 0x80) < 0x40 && (s[4] ^ 0x80) < 0x40
+ && (s[5] ^ 0x80) < 0x40
+ && (c >= 0xfd || s[1] >= 0x84)))
+ return RET_ILSEQ;
+ *pwc = ((ucs4_t) (c & 0x01) << 30)
+ | ((ucs4_t) (s[1] ^ 0x80) << 24)
+ | ((ucs4_t) (s[2] ^ 0x80) << 18)
+ | ((ucs4_t) (s[3] ^ 0x80) << 12)
+ | ((ucs4_t) (s[4] ^ 0x80) << 6)
+ | (ucs4_t) (s[5] ^ 0x80);
+ return 6;
+ } else
+ return RET_ILSEQ;
+}
+
+static int
+utf8_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n) /* n == 0 is acceptable */
+{
+ int count;
+ if (wc < 0x80)
+ count = 1;
+ else if (wc < 0x800)
+ count = 2;
+ else if (wc < 0x10000)
+ count = 3;
+ else if (wc < 0x200000)
+ count = 4;
+ else if (wc < 0x4000000)
+ count = 5;
+ else if (wc <= 0x7fffffff)
+ count = 6;
+ else
+ return RET_ILSEQ;
+ if (n < count)
+ return RET_TOOSMALL;
+ switch (count) { /* note: code falls through cases! */
+ case 6: r[5] = 0x80 | (wc & 0x3f); wc = wc >> 6; wc |= 0x4000000;
+ case 5: r[4] = 0x80 | (wc & 0x3f); wc = wc >> 6; wc |= 0x200000;
+ case 4: r[3] = 0x80 | (wc & 0x3f); wc = wc >> 6; wc |= 0x10000;
+ case 3: r[2] = 0x80 | (wc & 0x3f); wc = wc >> 6; wc |= 0x800;
+ case 2: r[1] = 0x80 | (wc & 0x3f); wc = wc >> 6; wc |= 0xc0;
+ case 1: r[0] = wc;
+ }
+ return count;
+}
diff --git a/libX11/src/xlibi18n/lcUniConv/viscii.h b/libX11/src/xlibi18n/lcUniConv/viscii.h
index fa1886326..d5147e81e 100644
--- a/libX11/src/xlibi18n/lcUniConv/viscii.h
+++ b/libX11/src/xlibi18n/lcUniConv/viscii.h
@@ -1,122 +1,122 @@
-
-/*
- * VISCII1.1-1
- */
-
-/* Specification: RFC 1456 */
-
-static const unsigned short viscii_2uni_1[32] = {
- /* 0x00 */
- 0x0000, 0x0001, 0x1eb2, 0x0003, 0x0004, 0x1eb4, 0x1eaa, 0x0007,
- 0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f,
- /* 0x10 */
- 0x0010, 0x0011, 0x0012, 0x0013, 0x1ef6, 0x0015, 0x0016, 0x0017,
- 0x0018, 0x1ef8, 0x001a, 0x001b, 0x001c, 0x001d, 0x1ef4, 0x001f,
-};
-static const unsigned short viscii_2uni_2[128] = {
- /* 0x80 */
- 0x1ea0, 0x1eae, 0x1eb0, 0x1eb6, 0x1ea4, 0x1ea6, 0x1ea8, 0x1eac,
- 0x1ebc, 0x1eb8, 0x1ebe, 0x1ec0, 0x1ec2, 0x1ec4, 0x1ec6, 0x1ed0,
- /* 0x90 */
- 0x1ed2, 0x1ed4, 0x1ed6, 0x1ed8, 0x1ee2, 0x1eda, 0x1edc, 0x1ede,
- 0x1eca, 0x1ece, 0x1ecc, 0x1ec8, 0x1ee6, 0x0168, 0x1ee4, 0x1ef2,
- /* 0xa0 */
- 0x00d5, 0x1eaf, 0x1eb1, 0x1eb7, 0x1ea5, 0x1ea7, 0x1ea9, 0x1ead,
- 0x1ebd, 0x1eb9, 0x1ebf, 0x1ec1, 0x1ec3, 0x1ec5, 0x1ec7, 0x1ed1,
- /* 0xb0 */
- 0x1ed3, 0x1ed5, 0x1ed7, 0x1ee0, 0x01a0, 0x1ed9, 0x1edd, 0x1edf,
- 0x1ecb, 0x1ef0, 0x1ee8, 0x1eea, 0x1eec, 0x01a1, 0x1edb, 0x01af,
- /* 0xc0 */
- 0x00c0, 0x00c1, 0x00c2, 0x00c3, 0x1ea2, 0x0102, 0x1eb3, 0x1eb5,
- 0x00c8, 0x00c9, 0x00ca, 0x1eba, 0x00cc, 0x00cd, 0x0128, 0x1ef3,
- /* 0xd0 */
- 0x0110, 0x1ee9, 0x00d2, 0x00d3, 0x00d4, 0x1ea1, 0x1ef7, 0x1eeb,
- 0x1eed, 0x00d9, 0x00da, 0x1ef9, 0x1ef5, 0x00dd, 0x1ee1, 0x01b0,
- /* 0xe0 */
- 0x00e0, 0x00e1, 0x00e2, 0x00e3, 0x1ea3, 0x0103, 0x1eef, 0x1eab,
- 0x00e8, 0x00e9, 0x00ea, 0x1ebb, 0x00ec, 0x00ed, 0x0129, 0x1ec9,
- /* 0xf0 */
- 0x0111, 0x1ef1, 0x00f2, 0x00f3, 0x00f4, 0x00f5, 0x1ecf, 0x1ecd,
- 0x1ee5, 0x00f9, 0x00fa, 0x0169, 0x1ee7, 0x00fd, 0x1ee3, 0x1eee,
-};
-
-static int
-viscii_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n)
-{
- unsigned char c = *s;
- if (c < 0x20)
- *pwc = (ucs4_t) viscii_2uni_1[c];
- else if (c < 0x80)
- *pwc = (ucs4_t) c;
- else
- *pwc = (ucs4_t) viscii_2uni_2[c-0x80];
- return 1;
-}
-
-static const unsigned char viscii_page00[64+184] = {
- 0xc0, 0xc1, 0xc2, 0xc3, 0x00, 0x00, 0x00, 0x00, /* 0xc0-0xc7 */
- 0xc8, 0xc9, 0xca, 0x00, 0xcc, 0xcd, 0x00, 0x00, /* 0xc8-0xcf */
- 0x00, 0x00, 0xd2, 0xd3, 0xd4, 0xa0, 0x00, 0x00, /* 0xd0-0xd7 */
- 0x00, 0xd9, 0xda, 0x00, 0x00, 0xdd, 0x00, 0x00, /* 0xd8-0xdf */
- 0xe0, 0xe1, 0xe2, 0xe3, 0x00, 0x00, 0x00, 0x00, /* 0xe0-0xe7 */
- 0xe8, 0xe9, 0xea, 0x00, 0xec, 0xed, 0x00, 0x00, /* 0xe8-0xef */
- 0x00, 0x00, 0xf2, 0xf3, 0xf4, 0xf5, 0x00, 0x00, /* 0xf0-0xf7 */
- 0x00, 0xf9, 0xfa, 0x00, 0x00, 0xfd, 0x00, 0x00, /* 0xf8-0xff */
- /* 0x0100 */
- 0x00, 0x00, 0xc5, 0xe5, 0x00, 0x00, 0x00, 0x00, /* 0x00-0x07 */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x08-0x0f */
- 0xd0, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x10-0x17 */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x18-0x1f */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x20-0x27 */
- 0xce, 0xee, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x28-0x2f */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x30-0x37 */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x38-0x3f */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x40-0x47 */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x48-0x4f */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x50-0x57 */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x58-0x5f */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x60-0x67 */
- 0x9d, 0xfb, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x68-0x6f */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x70-0x77 */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x78-0x7f */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x80-0x87 */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x88-0x8f */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x90-0x97 */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x98-0x9f */
- 0xb4, 0xbd, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xa0-0xa7 */
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xbf, /* 0xa8-0xaf */
- 0xdf, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xb0-0xb7 */
-};
-static const unsigned char viscii_page1e[96] = {
- 0x80, 0xd5, 0xc4, 0xe4, 0x84, 0xa4, 0x85, 0xa5, /* 0xa0-0xa7 */
- 0x86, 0xa6, 0x06, 0xe7, 0x87, 0xa7, 0x81, 0xa1, /* 0xa8-0xaf */
- 0x82, 0xa2, 0x02, 0xc6, 0x05, 0xc7, 0x83, 0xa3, /* 0xb0-0xb7 */
- 0x89, 0xa9, 0xcb, 0xeb, 0x88, 0xa8, 0x8a, 0xaa, /* 0xb8-0xbf */
- 0x8b, 0xab, 0x8c, 0xac, 0x8d, 0xad, 0x8e, 0xae, /* 0xc0-0xc7 */
- 0x9b, 0xef, 0x98, 0xb8, 0x9a, 0xf7, 0x99, 0xf6, /* 0xc8-0xcf */
- 0x8f, 0xaf, 0x90, 0xb0, 0x91, 0xb1, 0x92, 0xb2, /* 0xd0-0xd7 */
- 0x93, 0xb5, 0x95, 0xbe, 0x96, 0xb6, 0x97, 0xb7, /* 0xd8-0xdf */
- 0xb3, 0xde, 0x94, 0xfe, 0x9e, 0xf8, 0x9c, 0xfc, /* 0xe0-0xe7 */
- 0xba, 0xd1, 0xbb, 0xd7, 0xbc, 0xd8, 0xff, 0xe6, /* 0xe8-0xef */
- 0xb9, 0xf1, 0x9f, 0xcf, 0x1e, 0xdc, 0x14, 0xd6, /* 0xf0-0xf7 */
- 0x19, 0xdb, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xf8-0xff */
-};
-
-static int
-viscii_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n)
-{
- unsigned char c = 0;
- if (wc < 0x0080 && (wc >= 0x0020 || (0x42100064 & (1 << wc)) == 0)) {
- *r = wc;
- return 1;
- }
- else if (wc >= 0x00c0 && wc < 0x01b8)
- c = viscii_page00[wc-0x00c0];
- else if (wc >= 0x1ea0 && wc < 0x1f00)
- c = viscii_page1e[wc-0x1ea0];
- if (c != 0) {
- *r = c;
- return 1;
- }
- return RET_ILSEQ;
-}
+
+/*
+ * VISCII1.1-1
+ */
+
+/* Specification: RFC 1456 */
+
+static const unsigned short viscii_2uni_1[32] = {
+ /* 0x00 */
+ 0x0000, 0x0001, 0x1eb2, 0x0003, 0x0004, 0x1eb4, 0x1eaa, 0x0007,
+ 0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f,
+ /* 0x10 */
+ 0x0010, 0x0011, 0x0012, 0x0013, 0x1ef6, 0x0015, 0x0016, 0x0017,
+ 0x0018, 0x1ef8, 0x001a, 0x001b, 0x001c, 0x001d, 0x1ef4, 0x001f,
+};
+static const unsigned short viscii_2uni_2[128] = {
+ /* 0x80 */
+ 0x1ea0, 0x1eae, 0x1eb0, 0x1eb6, 0x1ea4, 0x1ea6, 0x1ea8, 0x1eac,
+ 0x1ebc, 0x1eb8, 0x1ebe, 0x1ec0, 0x1ec2, 0x1ec4, 0x1ec6, 0x1ed0,
+ /* 0x90 */
+ 0x1ed2, 0x1ed4, 0x1ed6, 0x1ed8, 0x1ee2, 0x1eda, 0x1edc, 0x1ede,
+ 0x1eca, 0x1ece, 0x1ecc, 0x1ec8, 0x1ee6, 0x0168, 0x1ee4, 0x1ef2,
+ /* 0xa0 */
+ 0x00d5, 0x1eaf, 0x1eb1, 0x1eb7, 0x1ea5, 0x1ea7, 0x1ea9, 0x1ead,
+ 0x1ebd, 0x1eb9, 0x1ebf, 0x1ec1, 0x1ec3, 0x1ec5, 0x1ec7, 0x1ed1,
+ /* 0xb0 */
+ 0x1ed3, 0x1ed5, 0x1ed7, 0x1ee0, 0x01a0, 0x1ed9, 0x1edd, 0x1edf,
+ 0x1ecb, 0x1ef0, 0x1ee8, 0x1eea, 0x1eec, 0x01a1, 0x1edb, 0x01af,
+ /* 0xc0 */
+ 0x00c0, 0x00c1, 0x00c2, 0x00c3, 0x1ea2, 0x0102, 0x1eb3, 0x1eb5,
+ 0x00c8, 0x00c9, 0x00ca, 0x1eba, 0x00cc, 0x00cd, 0x0128, 0x1ef3,
+ /* 0xd0 */
+ 0x0110, 0x1ee9, 0x00d2, 0x00d3, 0x00d4, 0x1ea1, 0x1ef7, 0x1eeb,
+ 0x1eed, 0x00d9, 0x00da, 0x1ef9, 0x1ef5, 0x00dd, 0x1ee1, 0x01b0,
+ /* 0xe0 */
+ 0x00e0, 0x00e1, 0x00e2, 0x00e3, 0x1ea3, 0x0103, 0x1eef, 0x1eab,
+ 0x00e8, 0x00e9, 0x00ea, 0x1ebb, 0x00ec, 0x00ed, 0x0129, 0x1ec9,
+ /* 0xf0 */
+ 0x0111, 0x1ef1, 0x00f2, 0x00f3, 0x00f4, 0x00f5, 0x1ecf, 0x1ecd,
+ 0x1ee5, 0x00f9, 0x00fa, 0x0169, 0x1ee7, 0x00fd, 0x1ee3, 0x1eee,
+};
+
+static int
+viscii_mbtowc (conv_t conv, ucs4_t *pwc, const unsigned char *s, int n)
+{
+ unsigned char c = *s;
+ if (c < 0x20)
+ *pwc = (ucs4_t) viscii_2uni_1[c];
+ else if (c < 0x80)
+ *pwc = (ucs4_t) c;
+ else
+ *pwc = (ucs4_t) viscii_2uni_2[c-0x80];
+ return 1;
+}
+
+static const unsigned char viscii_page00[64+184] = {
+ 0xc0, 0xc1, 0xc2, 0xc3, 0x00, 0x00, 0x00, 0x00, /* 0xc0-0xc7 */
+ 0xc8, 0xc9, 0xca, 0x00, 0xcc, 0xcd, 0x00, 0x00, /* 0xc8-0xcf */
+ 0x00, 0x00, 0xd2, 0xd3, 0xd4, 0xa0, 0x00, 0x00, /* 0xd0-0xd7 */
+ 0x00, 0xd9, 0xda, 0x00, 0x00, 0xdd, 0x00, 0x00, /* 0xd8-0xdf */
+ 0xe0, 0xe1, 0xe2, 0xe3, 0x00, 0x00, 0x00, 0x00, /* 0xe0-0xe7 */
+ 0xe8, 0xe9, 0xea, 0x00, 0xec, 0xed, 0x00, 0x00, /* 0xe8-0xef */
+ 0x00, 0x00, 0xf2, 0xf3, 0xf4, 0xf5, 0x00, 0x00, /* 0xf0-0xf7 */
+ 0x00, 0xf9, 0xfa, 0x00, 0x00, 0xfd, 0x00, 0x00, /* 0xf8-0xff */
+ /* 0x0100 */
+ 0x00, 0x00, 0xc5, 0xe5, 0x00, 0x00, 0x00, 0x00, /* 0x00-0x07 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x08-0x0f */
+ 0xd0, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x10-0x17 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x18-0x1f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x20-0x27 */
+ 0xce, 0xee, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x28-0x2f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x30-0x37 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x38-0x3f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x40-0x47 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x48-0x4f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x50-0x57 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x58-0x5f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x60-0x67 */
+ 0x9d, 0xfb, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x68-0x6f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x70-0x77 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x78-0x7f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x80-0x87 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x88-0x8f */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x90-0x97 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x98-0x9f */
+ 0xb4, 0xbd, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xa0-0xa7 */
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xbf, /* 0xa8-0xaf */
+ 0xdf, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xb0-0xb7 */
+};
+static const unsigned char viscii_page1e[96] = {
+ 0x80, 0xd5, 0xc4, 0xe4, 0x84, 0xa4, 0x85, 0xa5, /* 0xa0-0xa7 */
+ 0x86, 0xa6, 0x06, 0xe7, 0x87, 0xa7, 0x81, 0xa1, /* 0xa8-0xaf */
+ 0x82, 0xa2, 0x02, 0xc6, 0x05, 0xc7, 0x83, 0xa3, /* 0xb0-0xb7 */
+ 0x89, 0xa9, 0xcb, 0xeb, 0x88, 0xa8, 0x8a, 0xaa, /* 0xb8-0xbf */
+ 0x8b, 0xab, 0x8c, 0xac, 0x8d, 0xad, 0x8e, 0xae, /* 0xc0-0xc7 */
+ 0x9b, 0xef, 0x98, 0xb8, 0x9a, 0xf7, 0x99, 0xf6, /* 0xc8-0xcf */
+ 0x8f, 0xaf, 0x90, 0xb0, 0x91, 0xb1, 0x92, 0xb2, /* 0xd0-0xd7 */
+ 0x93, 0xb5, 0x95, 0xbe, 0x96, 0xb6, 0x97, 0xb7, /* 0xd8-0xdf */
+ 0xb3, 0xde, 0x94, 0xfe, 0x9e, 0xf8, 0x9c, 0xfc, /* 0xe0-0xe7 */
+ 0xba, 0xd1, 0xbb, 0xd7, 0xbc, 0xd8, 0xff, 0xe6, /* 0xe8-0xef */
+ 0xb9, 0xf1, 0x9f, 0xcf, 0x1e, 0xdc, 0x14, 0xd6, /* 0xf0-0xf7 */
+ 0x19, 0xdb, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xf8-0xff */
+};
+
+static int
+viscii_wctomb (conv_t conv, unsigned char *r, ucs4_t wc, int n)
+{
+ unsigned char c = 0;
+ if (wc < 0x0080 && (wc >= 0x0020 || (0x42100064 & (1 << wc)) == 0)) {
+ *r = wc;
+ return 1;
+ }
+ else if (wc >= 0x00c0 && wc < 0x01b8)
+ c = viscii_page00[wc-0x00c0];
+ else if (wc >= 0x1ea0 && wc < 0x1f00)
+ c = viscii_page1e[wc-0x1ea0];
+ if (c != 0) {
+ *r = c;
+ return 1;
+ }
+ return RET_ILSEQ;
+}
diff --git a/libX11/src/xlibi18n/lcUtil.c b/libX11/src/xlibi18n/lcUtil.c
index e473eb48f..196bca20c 100644
--- a/libX11/src/xlibi18n/lcUtil.c
+++ b/libX11/src/xlibi18n/lcUtil.c
@@ -1,86 +1,86 @@
-/*
- * Copyright 1992, 1993 by TOSHIBA Corp.
- *
- * Permission to use, copy, modify, and distribute this software and its
- * documentation for any purpose and without fee is hereby granted, provided
- * that the above copyright notice appear in all copies and that both that
- * copyright notice and this permission notice appear in supporting
- * documentation, and that the name of TOSHIBA not be used in advertising
- * or publicity pertaining to distribution of the software without specific,
- * written prior permission. TOSHIBA make no representations about the
- * suitability of this software for any purpose. It is provided "as is"
- * without express or implied warranty.
- *
- * TOSHIBA DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
- * ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
- * TOSHIBA BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
- * ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
- * WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
- * ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
- * SOFTWARE.
- *
- * Author: Katsuhisa Yano TOSHIBA Corp.
- * mopi@osa.ilab.toshiba.co.jp
- * Bug fixes: Bruno Haible XFree86 Inc.
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include <X11/Xlib.h>
-#include "XlcPublic.h"
-
-/* Don't use <ctype.h> here because it is locale dependent. */
-
-#define set_toupper(ch) \
- if (ch >= 'a' && ch <= 'z') \
- ch = ch - 'a' + 'A';
-
-/* Compares two ISO 8859-1 strings, ignoring case of ASCII letters.
- Like strcasecmp in an ASCII locale. */
-int
-_XlcCompareISOLatin1(
- const char *str1,
- const char *str2)
-{
- unsigned char ch1, ch2;
-
- for ( ; ; str1++, str2++) {
- ch1 = *str1;
- ch2 = *str2;
- if (ch1 == '\0' || ch2 == '\0')
- break;
- set_toupper(ch1);
- set_toupper(ch2);
- if (ch1 != ch2)
- break;
- }
-
- return ch1 - ch2;
-}
-
-/* Compares two ISO 8859-1 strings, at most len bytes of each, ignoring
- case of ASCII letters. Like strncasecmp in an ASCII locale. */
-int
-_XlcNCompareISOLatin1(
- const char *str1,
- const char *str2,
- int len)
-{
- unsigned char ch1, ch2;
-
- for ( ; ; str1++, str2++, len--) {
- if (len == 0)
- return 0;
- ch1 = *str1;
- ch2 = *str2;
- if (ch1 == '\0' || ch2 == '\0')
- break;
- set_toupper(ch1);
- set_toupper(ch2);
- if (ch1 != ch2)
- break;
- }
-
- return ch1 - ch2;
-}
+/*
+ * Copyright 1992, 1993 by TOSHIBA Corp.
+ *
+ * Permission to use, copy, modify, and distribute this software and its
+ * documentation for any purpose and without fee is hereby granted, provided
+ * that the above copyright notice appear in all copies and that both that
+ * copyright notice and this permission notice appear in supporting
+ * documentation, and that the name of TOSHIBA not be used in advertising
+ * or publicity pertaining to distribution of the software without specific,
+ * written prior permission. TOSHIBA make no representations about the
+ * suitability of this software for any purpose. It is provided "as is"
+ * without express or implied warranty.
+ *
+ * TOSHIBA DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
+ * ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
+ * TOSHIBA BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
+ * ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
+ * WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
+ * ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
+ * SOFTWARE.
+ *
+ * Author: Katsuhisa Yano TOSHIBA Corp.
+ * mopi@osa.ilab.toshiba.co.jp
+ * Bug fixes: Bruno Haible XFree86 Inc.
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include <X11/Xlib.h>
+#include "XlcPublic.h"
+
+/* Don't use <ctype.h> here because it is locale dependent. */
+
+#define set_toupper(ch) \
+ if (ch >= 'a' && ch <= 'z') \
+ ch = ch - 'a' + 'A';
+
+/* Compares two ISO 8859-1 strings, ignoring case of ASCII letters.
+ Like strcasecmp in an ASCII locale. */
+int
+_XlcCompareISOLatin1(
+ const char *str1,
+ const char *str2)
+{
+ unsigned char ch1, ch2;
+
+ for ( ; ; str1++, str2++) {
+ ch1 = *str1;
+ ch2 = *str2;
+ if (ch1 == '\0' || ch2 == '\0')
+ break;
+ set_toupper(ch1);
+ set_toupper(ch2);
+ if (ch1 != ch2)
+ break;
+ }
+
+ return ch1 - ch2;
+}
+
+/* Compares two ISO 8859-1 strings, at most len bytes of each, ignoring
+ case of ASCII letters. Like strncasecmp in an ASCII locale. */
+int
+_XlcNCompareISOLatin1(
+ const char *str1,
+ const char *str2,
+ int len)
+{
+ unsigned char ch1, ch2;
+
+ for ( ; ; str1++, str2++, len--) {
+ if (len == 0)
+ return 0;
+ ch1 = *str1;
+ ch2 = *str2;
+ if (ch1 == '\0' || ch2 == '\0')
+ break;
+ set_toupper(ch1);
+ set_toupper(ch2);
+ if (ch1 != ch2)
+ break;
+ }
+
+ return ch1 - ch2;
+}
diff --git a/libX11/src/xlibi18n/lcWrap.c b/libX11/src/xlibi18n/lcWrap.c
index 0c03f23b0..c3f5ca531 100644
--- a/libX11/src/xlibi18n/lcWrap.c
+++ b/libX11/src/xlibi18n/lcWrap.c
@@ -1,649 +1,649 @@
-/*
-
-Copyright 1991, 1998 The Open Group
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
-
-The above copyright notice and this permission notice shall be included
-in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
-IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR
-OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
-ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall
-not be used in advertising or otherwise to promote the sale, use or
-other dealings in this Software without prior written authorization
-from The Open Group.
-
-*/
-/*
- * Copyright 1991 by the Open Software Foundation
- * Copyright 1993 by the TOSHIBA Corp.
- *
- * Permission to use, copy, modify, distribute, and sell this software and its
- * documentation for any purpose is hereby granted without fee, provided that
- * the above copyright notice appear in all copies and that both that
- * copyright notice and this permission notice appear in supporting
- * documentation, and that the names of Open Software Foundation and TOSHIBA
- * not be used in advertising or publicity pertaining to distribution of the
- * software without specific, written prior permission. Open Software
- * Foundation and TOSHIBA make no representations about the suitability of this
- * software for any purpose. It is provided "as is" without express or
- * implied warranty.
- *
- * OPEN SOFTWARE FOUNDATION AND TOSHIBA DISCLAIM ALL WARRANTIES WITH REGARD TO
- * THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
- * FITNESS, IN NO EVENT SHALL OPEN SOFTWARE FOUNDATIONN OR TOSHIBA BE
- * LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
- * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
- * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
- * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
- *
- * M. Collins OSF
- *
- * Katsuhisa Yano TOSHIBA Corp.
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include <stdlib.h>
-#include "Xlibint.h"
-#include "Xlcint.h"
-#include <X11/Xlocale.h>
-#include <X11/Xos.h>
-#ifdef WIN32
-#undef close
-#endif
-#include <X11/Xutil.h>
-#include "XlcPubI.h"
-
-#ifdef XTHREADS
-LockInfoPtr _Xi18n_lock;
-#endif
-
-char *
-XSetLocaleModifiers(
- const char *modifiers)
-{
- XLCd lcd = _XlcCurrentLC();
- char *user_mods;
-
- if (!lcd)
- return (char *) NULL;
- if (!modifiers)
- return lcd->core->modifiers;
- user_mods = getenv("XMODIFIERS");
- modifiers = (*lcd->methods->map_modifiers) (lcd,
- user_mods, (char *)modifiers);
- if (modifiers) {
- if (lcd->core->modifiers)
- Xfree(lcd->core->modifiers);
- lcd->core->modifiers = (char *)modifiers;
- }
- return (char *)modifiers;
-}
-
-Bool
-XSupportsLocale(void)
-{
- return _XlcCurrentLC() != (XLCd)NULL;
-}
-
-Bool _XlcValidModSyntax(
- const char * mods,
- const char * const *valid_mods)
-{
- int i;
- const char * const *ptr;
-
- while (mods && (*mods == '@')) {
- mods++;
- if (*mods == '@')
- break;
- for (ptr = valid_mods; *ptr; ptr++) {
- i = strlen(*ptr);
- if (strncmp(mods, *ptr, i) || ((mods[i] != '=')
-#ifdef WIN32
- && (mods[i] != '#')
-#endif
- ))
- continue;
- mods = strchr(mods+i+1, '@');
- break;
- }
- }
- return !mods || !*mods;
-}
-
-static const char *im_valid[] = {"im", (const char *)NULL};
-
-/*ARGSUSED*/
-char *
-_XlcDefaultMapModifiers(
- XLCd lcd,
- const char *user_mods,
- const char *prog_mods)
-{
- int i;
- char *mods;
-
- if (!_XlcValidModSyntax(prog_mods, im_valid))
- return (char *)NULL;
- if (!_XlcValidModSyntax(user_mods, im_valid))
- return (char *)NULL;
- i = strlen(prog_mods) + 1;
- if (user_mods)
- i += strlen(user_mods);
- mods = Xmalloc(i);
- if (mods) {
- strcpy(mods, prog_mods);
- if (user_mods)
- strcat(mods, user_mods);
-#ifdef WIN32
- {
- char *s;
- for (s = mods; (s = strchr(s, '@')); s++) {
- for (s++; *s && *s != '='; s++) {
- if (*s == '#') {
- *s = '=';
- break;
- }
- }
- }
- }
-#endif
- }
- return mods;
-}
-
-typedef struct _XLCdListRec {
- struct _XLCdListRec *next;
- XLCd lcd;
- int ref_count;
-} XLCdListRec, *XLCdList;
-
-static XLCdList lcd_list = NULL;
-
-typedef struct _XlcLoaderListRec {
- struct _XlcLoaderListRec *next;
- XLCdLoadProc proc;
-} XlcLoaderListRec, *XlcLoaderList;
-
-static XlcLoaderList loader_list = NULL;
-
-void
-_XlcRemoveLoader(
- XLCdLoadProc proc)
-{
- XlcLoaderList loader, prev;
-
- if (loader_list == NULL)
- return;
-
- prev = loader = loader_list;
- if (loader->proc == proc) {
- loader_list = loader->next;
- Xfree(loader);
- return;
- }
-
- while ((loader = loader->next)) {
- if (loader->proc == proc) {
- prev->next = loader->next;
- Xfree(loader);
- return;
- }
- prev = loader;
- }
-
- return;
-}
-
-Bool
-_XlcAddLoader(
- XLCdLoadProc proc,
- XlcPosition position)
-{
- XlcLoaderList loader, last;
-
- _XlcRemoveLoader(proc); /* remove old loader, if exist */
-
- loader = (XlcLoaderList) Xmalloc(sizeof(XlcLoaderListRec));
- if (loader == NULL)
- return False;
-
- loader->proc = proc;
-
- if (loader_list == NULL)
- position = XlcHead;
-
- if (position == XlcHead) {
- loader->next = loader_list;
- loader_list = loader;
- } else {
- last = loader_list;
- while (last->next)
- last = last->next;
-
- loader->next = NULL;
- last->next = loader;
- }
-
- return True;
-}
-
-XLCd
-_XOpenLC(
- char *name)
-{
- XLCd lcd;
- XlcLoaderList loader;
- XLCdList cur;
-#if !defined(X_LOCALE)
- int len;
- char sinamebuf[256];
- char* siname = sinamebuf;
-#endif
-
- if (name == NULL) {
- name = setlocale (LC_CTYPE, (char *)NULL);
-#if !defined(X_LOCALE)
- /*
- * _XlMapOSLocaleName will return the same string or a substring
- * of name, so strlen(name) is okay
- */
- if ((len = strlen(name)) >= sizeof sinamebuf) {
- siname = Xmalloc (len + 1);
- if (siname == NULL)
- return NULL;
- }
- name = _XlcMapOSLocaleName(name, siname);
-#endif
- }
-
- _XLockMutex(_Xi18n_lock);
-
- /*
- * search for needed lcd, if found return it
- */
- for (cur = lcd_list; cur; cur = cur->next) {
- if (!strcmp (cur->lcd->core->name, name)) {
- lcd = cur->lcd;
- cur->ref_count++;
- goto found;
- }
- }
-
- if (!loader_list)
- _XlcInitLoader();
-
- /*
- * not there, so try to get and add to list
- */
- for (loader = loader_list; loader; loader = loader->next) {
- lcd = (*loader->proc)(name);
- if (lcd) {
- cur = (XLCdList) Xmalloc (sizeof(XLCdListRec));
- if (cur) {
- cur->lcd = lcd;
- cur->ref_count = 1;
- cur->next = lcd_list;
- lcd_list = cur;
- } else {
- (*lcd->methods->close)(lcd);
- lcd = (XLCd) NULL;
- }
- goto found;
- }
- }
-
- lcd = NULL;
-
-found:
- _XUnlockMutex(_Xi18n_lock);
-
-#if !defined(X_LOCALE)
- if (siname != sinamebuf) Xfree(siname);
-#endif
-
- return lcd;
-}
-
-void
-_XCloseLC(
- XLCd lcd)
-{
- XLCdList cur, *prev;
-
- for (prev = &lcd_list; (cur = *prev); prev = &cur->next) {
- if (cur->lcd == lcd) {
- if (--cur->ref_count < 1) {
- (*lcd->methods->close)(lcd);
- *prev = cur->next;
- Xfree(cur);
- }
- break;
- }
- }
-
- if(loader_list) {
- _XlcDeInitLoader();
- loader_list = NULL;
- }
-}
-
-/*
- * Get the XLCd for the current locale
- */
-
-XLCd
-_XlcCurrentLC(void)
-{
- XLCd lcd;
- static XLCd last_lcd = NULL;
-
- lcd = _XOpenLC((char *) NULL);
-
- if (last_lcd)
- _XCloseLC(last_lcd);
-
- last_lcd = lcd;
-
- return lcd;
-}
-
-XrmMethods
-_XrmInitParseInfo(
- XPointer *state)
-{
- XLCd lcd = _XOpenLC((char *) NULL);
-
- if (lcd == (XLCd) NULL)
- return (XrmMethods) NULL;
-
- return (*lcd->methods->init_parse_info)(lcd, state);
-}
-
-int
-XmbTextPropertyToTextList(
- Display *dpy,
- const XTextProperty *text_prop,
- char ***list_ret,
- int *count_ret)
-{
- XLCd lcd = _XlcCurrentLC();
-
- if (lcd == NULL)
- return XLocaleNotSupported;
-
- return (*lcd->methods->mb_text_prop_to_list)(lcd, dpy, text_prop, list_ret,
- count_ret);
-}
-
-int
-XwcTextPropertyToTextList(
- Display *dpy,
- const XTextProperty *text_prop,
- wchar_t ***list_ret,
- int *count_ret)
-{
- XLCd lcd = _XlcCurrentLC();
-
- if (lcd == NULL)
- return XLocaleNotSupported;
-
- return (*lcd->methods->wc_text_prop_to_list)(lcd, dpy, text_prop, list_ret,
- count_ret);
-}
-
-int
-Xutf8TextPropertyToTextList(
- Display *dpy,
- const XTextProperty *text_prop,
- char ***list_ret,
- int *count_ret)
-{
- XLCd lcd = _XlcCurrentLC();
-
- if (lcd == NULL)
- return XLocaleNotSupported;
-
- return (*lcd->methods->utf8_text_prop_to_list)(lcd, dpy, text_prop,
- list_ret, count_ret);
-}
-
-int
-XmbTextListToTextProperty(
- Display *dpy,
- char **list,
- int count,
- XICCEncodingStyle style,
- XTextProperty *text_prop)
-{
- XLCd lcd = _XlcCurrentLC();
-
- if (lcd == NULL)
- return XLocaleNotSupported;
-
- return (*lcd->methods->mb_text_list_to_prop)(lcd, dpy, list, count, style,
- text_prop);
-}
-
-int
-XwcTextListToTextProperty(
- Display *dpy,
- wchar_t **list,
- int count,
- XICCEncodingStyle style,
- XTextProperty *text_prop)
-{
- XLCd lcd = _XlcCurrentLC();
-
- if (lcd == NULL)
- return XLocaleNotSupported;
-
- return (*lcd->methods->wc_text_list_to_prop)(lcd, dpy, list, count, style,
- text_prop);
-}
-
-int
-Xutf8TextListToTextProperty(
- Display *dpy,
- char **list,
- int count,
- XICCEncodingStyle style,
- XTextProperty *text_prop)
-{
- XLCd lcd = _XlcCurrentLC();
-
- if (lcd == NULL)
- return XLocaleNotSupported;
-
- return (*lcd->methods->utf8_text_list_to_prop)(lcd, dpy, list, count,
- style, text_prop);
-}
-
-void
-XwcFreeStringList(
- wchar_t **list)
-{
- XLCd lcd = _XlcCurrentLC();
-
- if (lcd == NULL)
- return;
-
- (*lcd->methods->wc_free_string_list)(lcd, list);
-}
-
-const char *
-XDefaultString(void)
-{
- XLCd lcd = _XlcCurrentLC();
-
- if (lcd == NULL)
- return (char *) NULL;
-
- return (*lcd->methods->default_string)(lcd);
-}
-
-void
-_XlcCopyFromArg(
- char *src,
- char *dst,
- int size)
-{
- if (size == sizeof(long))
- *((long *) dst) = (long) src;
-#ifdef LONG64
- else if (size == sizeof(int))
- *((int *) dst) = (int)(long) src;
-#endif
- else if (size == sizeof(short))
- *((short *) dst) = (short)(long) src;
- else if (size == sizeof(char))
- *((char *) dst) = (char)(long) src;
- else if (size == sizeof(XPointer))
- *((XPointer *) dst) = (XPointer) src;
- else if (size > sizeof(XPointer))
- memcpy(dst, (char *) src, size);
- else
- memcpy(dst, (char *) &src, size);
-}
-
-void
-_XlcCopyToArg(
- char *src,
- char **dst,
- int size)
-{
- /* FIXME:
- On Big Endian machines, this behaves differently than _XCopyToArg. */
- if (size == sizeof(long))
- *((long *) *dst) = *((long *) src);
-#ifdef LONG64
- else if (size == sizeof(int))
- *((int *) *dst) = *((int *) src);
-#endif
- else if (size == sizeof(short))
- *((short *) *dst) = *((short *) src);
- else if (size == sizeof(char))
- *((char *) *dst) = *((char *) src);
- else if (size == sizeof(XPointer))
- *((XPointer *) *dst) = *((XPointer *) src);
- else
- memcpy(*dst, src, size);
-}
-
-void
-_XlcCountVaList(
- va_list var,
- int *count_ret)
-{
- int count;
-
- for (count = 0; va_arg(var, char *); count++)
- (void)va_arg(var, XPointer);
-
- *count_ret = count;
-}
-
-void
-_XlcVaToArgList(
- va_list var,
- int count,
- XlcArgList *args_ret)
-{
- XlcArgList args;
-
- *args_ret = args = (XlcArgList) Xmalloc(sizeof(XlcArg) * count);
- if (args == (XlcArgList) NULL)
- return;
-
- for ( ; count-- > 0; args++) {
- args->name = va_arg(var, char *);
- args->value = va_arg(var, XPointer);
- }
-}
-
-void
-_XlcCompileResourceList(
- XlcResourceList resources,
- int num_resources)
-{
- for ( ; num_resources-- > 0; resources++)
- resources->xrm_name = XrmPermStringToQuark(resources->name);
-}
-
-char *
-_XlcGetValues(
- XPointer base,
- XlcResourceList resources,
- int num_resources,
- XlcArgList args,
- int num_args,
- unsigned long mask)
-{
- XlcResourceList res;
- XrmQuark xrm_name;
- int count;
-
- for ( ; num_args-- > 0; args++) {
- res = resources;
- count = num_resources;
- xrm_name = XrmPermStringToQuark(args->name);
-
- for ( ; count-- > 0; res++) {
- if (xrm_name == res->xrm_name && (mask & res->mask)) {
- _XlcCopyToArg(base + res->offset, &args->value, res->size);
- break;
- }
- }
-
- if (count < 0)
- return args->name;
- }
-
- return NULL;
-}
-
-char *
-_XlcSetValues(
- XPointer base,
- XlcResourceList resources,
- int num_resources,
- XlcArgList args,
- int num_args,
- unsigned long mask)
-{
- XlcResourceList res;
- XrmQuark xrm_name;
- int count;
-
- for ( ; num_args-- > 0; args++) {
- res = resources;
- count = num_resources;
- xrm_name = XrmPermStringToQuark(args->name);
-
- for ( ; count-- > 0; res++) {
- if (xrm_name == res->xrm_name && (mask & res->mask)) {
- _XlcCopyFromArg(args->value, base + res->offset, res->size);
- break;
- }
- }
-
- if (count < 0)
- return args->name;
- }
-
- return NULL;
-}
+/*
+
+Copyright 1991, 1998 The Open Group
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
+
+The above copyright notice and this permission notice shall be included
+in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR
+OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
+ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group shall
+not be used in advertising or otherwise to promote the sale, use or
+other dealings in this Software without prior written authorization
+from The Open Group.
+
+*/
+/*
+ * Copyright 1991 by the Open Software Foundation
+ * Copyright 1993 by the TOSHIBA Corp.
+ *
+ * Permission to use, copy, modify, distribute, and sell this software and its
+ * documentation for any purpose is hereby granted without fee, provided that
+ * the above copyright notice appear in all copies and that both that
+ * copyright notice and this permission notice appear in supporting
+ * documentation, and that the names of Open Software Foundation and TOSHIBA
+ * not be used in advertising or publicity pertaining to distribution of the
+ * software without specific, written prior permission. Open Software
+ * Foundation and TOSHIBA make no representations about the suitability of this
+ * software for any purpose. It is provided "as is" without express or
+ * implied warranty.
+ *
+ * OPEN SOFTWARE FOUNDATION AND TOSHIBA DISCLAIM ALL WARRANTIES WITH REGARD TO
+ * THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
+ * FITNESS, IN NO EVENT SHALL OPEN SOFTWARE FOUNDATIONN OR TOSHIBA BE
+ * LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+ * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+ *
+ * M. Collins OSF
+ *
+ * Katsuhisa Yano TOSHIBA Corp.
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include <stdlib.h>
+#include "Xlibint.h"
+#include "Xlcint.h"
+#include <X11/Xlocale.h>
+#include <X11/Xos.h>
+#ifdef WIN32
+#undef close
+#endif
+#include <X11/Xutil.h>
+#include "XlcPubI.h"
+
+#ifdef XTHREADS
+LockInfoPtr _Xi18n_lock;
+#endif
+
+char *
+XSetLocaleModifiers(
+ const char *modifiers)
+{
+ XLCd lcd = _XlcCurrentLC();
+ char *user_mods;
+
+ if (!lcd)
+ return (char *) NULL;
+ if (!modifiers)
+ return lcd->core->modifiers;
+ user_mods = getenv("XMODIFIERS");
+ modifiers = (*lcd->methods->map_modifiers) (lcd,
+ user_mods, (char *)modifiers);
+ if (modifiers) {
+ if (lcd->core->modifiers)
+ Xfree(lcd->core->modifiers);
+ lcd->core->modifiers = (char *)modifiers;
+ }
+ return (char *)modifiers;
+}
+
+Bool
+XSupportsLocale(void)
+{
+ return _XlcCurrentLC() != (XLCd)NULL;
+}
+
+Bool _XlcValidModSyntax(
+ const char * mods,
+ const char * const *valid_mods)
+{
+ int i;
+ const char * const *ptr;
+
+ while (mods && (*mods == '@')) {
+ mods++;
+ if (*mods == '@')
+ break;
+ for (ptr = valid_mods; *ptr; ptr++) {
+ i = strlen(*ptr);
+ if (strncmp(mods, *ptr, i) || ((mods[i] != '=')
+#ifdef WIN32
+ && (mods[i] != '#')
+#endif
+ ))
+ continue;
+ mods = strchr(mods+i+1, '@');
+ break;
+ }
+ }
+ return !mods || !*mods;
+}
+
+static const char *im_valid[] = {"im", (const char *)NULL};
+
+/*ARGSUSED*/
+char *
+_XlcDefaultMapModifiers(
+ XLCd lcd,
+ const char *user_mods,
+ const char *prog_mods)
+{
+ int i;
+ char *mods;
+
+ if (!_XlcValidModSyntax(prog_mods, im_valid))
+ return (char *)NULL;
+ if (!_XlcValidModSyntax(user_mods, im_valid))
+ return (char *)NULL;
+ i = strlen(prog_mods) + 1;
+ if (user_mods)
+ i += strlen(user_mods);
+ mods = Xmalloc(i);
+ if (mods) {
+ strcpy(mods, prog_mods);
+ if (user_mods)
+ strcat(mods, user_mods);
+#ifdef WIN32
+ {
+ char *s;
+ for (s = mods; (s = strchr(s, '@')); s++) {
+ for (s++; *s && *s != '='; s++) {
+ if (*s == '#') {
+ *s = '=';
+ break;
+ }
+ }
+ }
+ }
+#endif
+ }
+ return mods;
+}
+
+typedef struct _XLCdListRec {
+ struct _XLCdListRec *next;
+ XLCd lcd;
+ int ref_count;
+} XLCdListRec, *XLCdList;
+
+static XLCdList lcd_list = NULL;
+
+typedef struct _XlcLoaderListRec {
+ struct _XlcLoaderListRec *next;
+ XLCdLoadProc proc;
+} XlcLoaderListRec, *XlcLoaderList;
+
+static XlcLoaderList loader_list = NULL;
+
+void
+_XlcRemoveLoader(
+ XLCdLoadProc proc)
+{
+ XlcLoaderList loader, prev;
+
+ if (loader_list == NULL)
+ return;
+
+ prev = loader = loader_list;
+ if (loader->proc == proc) {
+ loader_list = loader->next;
+ Xfree(loader);
+ return;
+ }
+
+ while ((loader = loader->next)) {
+ if (loader->proc == proc) {
+ prev->next = loader->next;
+ Xfree(loader);
+ return;
+ }
+ prev = loader;
+ }
+
+ return;
+}
+
+Bool
+_XlcAddLoader(
+ XLCdLoadProc proc,
+ XlcPosition position)
+{
+ XlcLoaderList loader, last;
+
+ _XlcRemoveLoader(proc); /* remove old loader, if exist */
+
+ loader = (XlcLoaderList) Xmalloc(sizeof(XlcLoaderListRec));
+ if (loader == NULL)
+ return False;
+
+ loader->proc = proc;
+
+ if (loader_list == NULL)
+ position = XlcHead;
+
+ if (position == XlcHead) {
+ loader->next = loader_list;
+ loader_list = loader;
+ } else {
+ last = loader_list;
+ while (last->next)
+ last = last->next;
+
+ loader->next = NULL;
+ last->next = loader;
+ }
+
+ return True;
+}
+
+XLCd
+_XOpenLC(
+ char *name)
+{
+ XLCd lcd;
+ XlcLoaderList loader;
+ XLCdList cur;
+#if !defined(X_LOCALE)
+ int len;
+ char sinamebuf[256];
+ char* siname = sinamebuf;
+#endif
+
+ if (name == NULL) {
+ name = setlocale (LC_CTYPE, (char *)NULL);
+#if !defined(X_LOCALE)
+ /*
+ * _XlMapOSLocaleName will return the same string or a substring
+ * of name, so strlen(name) is okay
+ */
+ if ((len = strlen(name)) >= sizeof sinamebuf) {
+ siname = Xmalloc (len + 1);
+ if (siname == NULL)
+ return NULL;
+ }
+ name = _XlcMapOSLocaleName(name, siname);
+#endif
+ }
+
+ _XLockMutex(_Xi18n_lock);
+
+ /*
+ * search for needed lcd, if found return it
+ */
+ for (cur = lcd_list; cur; cur = cur->next) {
+ if (!strcmp (cur->lcd->core->name, name)) {
+ lcd = cur->lcd;
+ cur->ref_count++;
+ goto found;
+ }
+ }
+
+ if (!loader_list)
+ _XlcInitLoader();
+
+ /*
+ * not there, so try to get and add to list
+ */
+ for (loader = loader_list; loader; loader = loader->next) {
+ lcd = (*loader->proc)(name);
+ if (lcd) {
+ cur = (XLCdList) Xmalloc (sizeof(XLCdListRec));
+ if (cur) {
+ cur->lcd = lcd;
+ cur->ref_count = 1;
+ cur->next = lcd_list;
+ lcd_list = cur;
+ } else {
+ (*lcd->methods->close)(lcd);
+ lcd = (XLCd) NULL;
+ }
+ goto found;
+ }
+ }
+
+ lcd = NULL;
+
+found:
+ _XUnlockMutex(_Xi18n_lock);
+
+#if !defined(X_LOCALE)
+ if (siname != sinamebuf) Xfree(siname);
+#endif
+
+ return lcd;
+}
+
+void
+_XCloseLC(
+ XLCd lcd)
+{
+ XLCdList cur, *prev;
+
+ for (prev = &lcd_list; (cur = *prev); prev = &cur->next) {
+ if (cur->lcd == lcd) {
+ if (--cur->ref_count < 1) {
+ (*lcd->methods->close)(lcd);
+ *prev = cur->next;
+ Xfree(cur);
+ }
+ break;
+ }
+ }
+
+ if(loader_list) {
+ _XlcDeInitLoader();
+ loader_list = NULL;
+ }
+}
+
+/*
+ * Get the XLCd for the current locale
+ */
+
+XLCd
+_XlcCurrentLC(void)
+{
+ XLCd lcd;
+ static XLCd last_lcd = NULL;
+
+ lcd = _XOpenLC((char *) NULL);
+
+ if (last_lcd)
+ _XCloseLC(last_lcd);
+
+ last_lcd = lcd;
+
+ return lcd;
+}
+
+XrmMethods
+_XrmInitParseInfo(
+ XPointer *state)
+{
+ XLCd lcd = _XOpenLC((char *) NULL);
+
+ if (lcd == (XLCd) NULL)
+ return (XrmMethods) NULL;
+
+ return (*lcd->methods->init_parse_info)(lcd, state);
+}
+
+int
+XmbTextPropertyToTextList(
+ Display *dpy,
+ const XTextProperty *text_prop,
+ char ***list_ret,
+ int *count_ret)
+{
+ XLCd lcd = _XlcCurrentLC();
+
+ if (lcd == NULL)
+ return XLocaleNotSupported;
+
+ return (*lcd->methods->mb_text_prop_to_list)(lcd, dpy, text_prop, list_ret,
+ count_ret);
+}
+
+int
+XwcTextPropertyToTextList(
+ Display *dpy,
+ const XTextProperty *text_prop,
+ wchar_t ***list_ret,
+ int *count_ret)
+{
+ XLCd lcd = _XlcCurrentLC();
+
+ if (lcd == NULL)
+ return XLocaleNotSupported;
+
+ return (*lcd->methods->wc_text_prop_to_list)(lcd, dpy, text_prop, list_ret,
+ count_ret);
+}
+
+int
+Xutf8TextPropertyToTextList(
+ Display *dpy,
+ const XTextProperty *text_prop,
+ char ***list_ret,
+ int *count_ret)
+{
+ XLCd lcd = _XlcCurrentLC();
+
+ if (lcd == NULL)
+ return XLocaleNotSupported;
+
+ return (*lcd->methods->utf8_text_prop_to_list)(lcd, dpy, text_prop,
+ list_ret, count_ret);
+}
+
+int
+XmbTextListToTextProperty(
+ Display *dpy,
+ char **list,
+ int count,
+ XICCEncodingStyle style,
+ XTextProperty *text_prop)
+{
+ XLCd lcd = _XlcCurrentLC();
+
+ if (lcd == NULL)
+ return XLocaleNotSupported;
+
+ return (*lcd->methods->mb_text_list_to_prop)(lcd, dpy, list, count, style,
+ text_prop);
+}
+
+int
+XwcTextListToTextProperty(
+ Display *dpy,
+ wchar_t **list,
+ int count,
+ XICCEncodingStyle style,
+ XTextProperty *text_prop)
+{
+ XLCd lcd = _XlcCurrentLC();
+
+ if (lcd == NULL)
+ return XLocaleNotSupported;
+
+ return (*lcd->methods->wc_text_list_to_prop)(lcd, dpy, list, count, style,
+ text_prop);
+}
+
+int
+Xutf8TextListToTextProperty(
+ Display *dpy,
+ char **list,
+ int count,
+ XICCEncodingStyle style,
+ XTextProperty *text_prop)
+{
+ XLCd lcd = _XlcCurrentLC();
+
+ if (lcd == NULL)
+ return XLocaleNotSupported;
+
+ return (*lcd->methods->utf8_text_list_to_prop)(lcd, dpy, list, count,
+ style, text_prop);
+}
+
+void
+XwcFreeStringList(
+ wchar_t **list)
+{
+ XLCd lcd = _XlcCurrentLC();
+
+ if (lcd == NULL)
+ return;
+
+ (*lcd->methods->wc_free_string_list)(lcd, list);
+}
+
+const char *
+XDefaultString(void)
+{
+ XLCd lcd = _XlcCurrentLC();
+
+ if (lcd == NULL)
+ return (char *) NULL;
+
+ return (*lcd->methods->default_string)(lcd);
+}
+
+void
+_XlcCopyFromArg(
+ char *src,
+ char *dst,
+ int size)
+{
+ if (size == sizeof(long))
+ *((long *) dst) = (long) src;
+#ifdef LONG64
+ else if (size == sizeof(int))
+ *((int *) dst) = (int)(long) src;
+#endif
+ else if (size == sizeof(short))
+ *((short *) dst) = (short)(long) src;
+ else if (size == sizeof(char))
+ *((char *) dst) = (char)(long) src;
+ else if (size == sizeof(XPointer))
+ *((XPointer *) dst) = (XPointer) src;
+ else if (size > sizeof(XPointer))
+ memcpy(dst, (char *) src, size);
+ else
+ memcpy(dst, (char *) &src, size);
+}
+
+void
+_XlcCopyToArg(
+ char *src,
+ char **dst,
+ int size)
+{
+ /* FIXME:
+ On Big Endian machines, this behaves differently than _XCopyToArg. */
+ if (size == sizeof(long))
+ *((long *) *dst) = *((long *) src);
+#ifdef LONG64
+ else if (size == sizeof(int))
+ *((int *) *dst) = *((int *) src);
+#endif
+ else if (size == sizeof(short))
+ *((short *) *dst) = *((short *) src);
+ else if (size == sizeof(char))
+ *((char *) *dst) = *((char *) src);
+ else if (size == sizeof(XPointer))
+ *((XPointer *) *dst) = *((XPointer *) src);
+ else
+ memcpy(*dst, src, size);
+}
+
+void
+_XlcCountVaList(
+ va_list var,
+ int *count_ret)
+{
+ int count;
+
+ for (count = 0; va_arg(var, char *); count++)
+ (void)va_arg(var, XPointer);
+
+ *count_ret = count;
+}
+
+void
+_XlcVaToArgList(
+ va_list var,
+ int count,
+ XlcArgList *args_ret)
+{
+ XlcArgList args;
+
+ *args_ret = args = (XlcArgList) Xmalloc(sizeof(XlcArg) * count);
+ if (args == (XlcArgList) NULL)
+ return;
+
+ for ( ; count-- > 0; args++) {
+ args->name = va_arg(var, char *);
+ args->value = va_arg(var, XPointer);
+ }
+}
+
+void
+_XlcCompileResourceList(
+ XlcResourceList resources,
+ int num_resources)
+{
+ for ( ; num_resources-- > 0; resources++)
+ resources->xrm_name = XrmPermStringToQuark(resources->name);
+}
+
+char *
+_XlcGetValues(
+ XPointer base,
+ XlcResourceList resources,
+ int num_resources,
+ XlcArgList args,
+ int num_args,
+ unsigned long mask)
+{
+ XlcResourceList res;
+ XrmQuark xrm_name;
+ int count;
+
+ for ( ; num_args-- > 0; args++) {
+ res = resources;
+ count = num_resources;
+ xrm_name = XrmPermStringToQuark(args->name);
+
+ for ( ; count-- > 0; res++) {
+ if (xrm_name == res->xrm_name && (mask & res->mask)) {
+ _XlcCopyToArg(base + res->offset, &args->value, res->size);
+ break;
+ }
+ }
+
+ if (count < 0)
+ return args->name;
+ }
+
+ return NULL;
+}
+
+char *
+_XlcSetValues(
+ XPointer base,
+ XlcResourceList resources,
+ int num_resources,
+ XlcArgList args,
+ int num_args,
+ unsigned long mask)
+{
+ XlcResourceList res;
+ XrmQuark xrm_name;
+ int count;
+
+ for ( ; num_args-- > 0; args++) {
+ res = resources;
+ count = num_resources;
+ xrm_name = XrmPermStringToQuark(args->name);
+
+ for ( ; count-- > 0; res++) {
+ if (xrm_name == res->xrm_name && (mask & res->mask)) {
+ _XlcCopyFromArg(args->value, base + res->offset, res->size);
+ break;
+ }
+ }
+
+ if (count < 0)
+ return args->name;
+ }
+
+ return NULL;
+}
diff --git a/libX11/src/xlibi18n/mbWMProps.c b/libX11/src/xlibi18n/mbWMProps.c
index 018f44aea..bff7aa352 100644
--- a/libX11/src/xlibi18n/mbWMProps.c
+++ b/libX11/src/xlibi18n/mbWMProps.c
@@ -1,69 +1,69 @@
-/*
-
-Copyright 1991, 1998 The Open Group
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
-
-The above copyright notice and this permission notice shall be included
-in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
-IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR
-OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
-ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall
-not be used in advertising or otherwise to promote the sale, use or
-other dealings in this Software without prior written authorization
-from The Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include <X11/Xlibint.h>
-#include <X11/Xutil.h>
-#include <X11/Xatom.h>
-#include <X11/Xlocale.h>
-
-void
-XmbSetWMProperties (
- Display *dpy,
- Window w,
- _Xconst char *windowName,
- _Xconst char *iconName,
- char **argv,
- int argc,
- XSizeHints *sizeHints,
- XWMHints *wmHints,
- XClassHint *classHints)
-{
- XTextProperty wname, iname;
- XTextProperty *wprop = NULL;
- XTextProperty *iprop = NULL;
-
- if (windowName &&
- XmbTextListToTextProperty(dpy, (char**)&windowName, 1,
- XStdICCTextStyle, &wname) >= Success)
- wprop = &wname;
- if (iconName &&
- XmbTextListToTextProperty(dpy, (char**)&iconName, 1,
- XStdICCTextStyle, &iname) >= Success)
- iprop = &iname;
- XSetWMProperties(dpy, w, wprop, iprop, argv, argc,
- sizeHints, wmHints, classHints);
- if (wprop)
- Xfree((char *)wname.value);
- if (iprop)
- Xfree((char *)iname.value);
-
- /* Note: The WM_LOCALE_NAME property is set by XSetWMProperties. */
-}
+/*
+
+Copyright 1991, 1998 The Open Group
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
+
+The above copyright notice and this permission notice shall be included
+in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR
+OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
+ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group shall
+not be used in advertising or otherwise to promote the sale, use or
+other dealings in this Software without prior written authorization
+from The Open Group.
+
+*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include <X11/Xlibint.h>
+#include <X11/Xutil.h>
+#include <X11/Xatom.h>
+#include <X11/Xlocale.h>
+
+void
+XmbSetWMProperties (
+ Display *dpy,
+ Window w,
+ _Xconst char *windowName,
+ _Xconst char *iconName,
+ char **argv,
+ int argc,
+ XSizeHints *sizeHints,
+ XWMHints *wmHints,
+ XClassHint *classHints)
+{
+ XTextProperty wname, iname;
+ XTextProperty *wprop = NULL;
+ XTextProperty *iprop = NULL;
+
+ if (windowName &&
+ XmbTextListToTextProperty(dpy, (char**)&windowName, 1,
+ XStdICCTextStyle, &wname) >= Success)
+ wprop = &wname;
+ if (iconName &&
+ XmbTextListToTextProperty(dpy, (char**)&iconName, 1,
+ XStdICCTextStyle, &iname) >= Success)
+ iprop = &iname;
+ XSetWMProperties(dpy, w, wprop, iprop, argv, argc,
+ sizeHints, wmHints, classHints);
+ if (wprop)
+ Xfree((char *)wname.value);
+ if (iprop)
+ Xfree((char *)iname.value);
+
+ /* Note: The WM_LOCALE_NAME property is set by XSetWMProperties. */
+}
diff --git a/libX11/src/xlibi18n/mbWrap.c b/libX11/src/xlibi18n/mbWrap.c
index 6887495e1..19f01f656 100644
--- a/libX11/src/xlibi18n/mbWrap.c
+++ b/libX11/src/xlibi18n/mbWrap.c
@@ -1,163 +1,163 @@
-/*
-
-Copyright 1991, 1998 The Open Group
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
-
-The above copyright notice and this permission notice shall be included
-in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
-IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR
-OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
-ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall
-not be used in advertising or otherwise to promote the sale, use or
-other dealings in this Software without prior written authorization
-from The Open Group.
-
-*/
-/*
- * Copyright 1991 by the Open Software Foundation
- *
- * Permission to use, copy, modify, distribute, and sell this software and its
- * documentation for any purpose is hereby granted without fee, provided that
- * the above copyright notice appear in all copies and that both that
- * copyright notice and this permission notice appear in supporting
- * documentation, and that the name of Open Software Foundation
- * not be used in advertising or publicity pertaining to distribution of the
- * software without specific, written prior permission. Open Software
- * Foundation makes no representations about the suitability of this
- * software for any purpose. It is provided "as is" without express or
- * implied warranty.
- *
- * OPEN SOFTWARE FOUNDATION DISCLAIMS ALL WARRANTIES WITH REGARD TO
- * THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
- * FITNESS, IN NO EVENT SHALL OPEN SOFTWARE FOUNDATIONN BE
- * LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
- * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
- * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
- * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
- *
- * M. Collins OSF
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-#include "Xlcint.h"
-
-void
-XmbDrawText(
- Display *dpy,
- Drawable d,
- GC gc,
- int x,
- int y,
- XmbTextItem *text_items,
- int nitems)
-{
- register XFontSet fs = NULL;
- register XmbTextItem *p = text_items;
- register int i = nitems;
- register int esc;
-
- /* ignore leading items with no fontset */
- while (i && !p->font_set) {
- i--;
- p++;
- }
-
- for (; --i >= 0; p++) {
- if (p->font_set)
- fs = p->font_set;
- x += p->delta;
- esc = (*fs->methods->mb_draw_string) (dpy, d, fs, gc, x, y,
- p->chars, p->nchars);
- if (!esc)
- esc = fs->methods->mb_escapement (fs, p->chars, p->nchars);
- x += esc;
- }
-}
-
-void
-XmbDrawString(
- Display *dpy,
- Drawable d,
- XFontSet font_set,
- GC gc,
- int x,
- int y,
- _Xconst char *text,
- int text_len)
-{
- (void)(*font_set->methods->mb_draw_string) (dpy, d, font_set, gc, x, y,
- (char *)text, text_len);
-}
-
-
-void
-XmbDrawImageString(
- Display *dpy,
- Drawable d,
- XFontSet font_set,
- GC gc,
- int x,
- int y,
- _Xconst char *text,
- int text_len)
-{
- (*font_set->methods->mb_draw_image_string) (dpy, d, font_set, gc, x, y,
- (char *)text, text_len);
-}
-
-int
-XmbTextEscapement(
- XFontSet font_set,
- _Xconst char *text,
- int text_len)
-{
- return (*font_set->methods->mb_escapement) (font_set,
- (char *)text, text_len);
-}
-
-int
-XmbTextExtents(
- XFontSet font_set,
- _Xconst char *text,
- int text_len,
- XRectangle *overall_ink_extents,
- XRectangle *overall_logical_extents)
-{
- return (*font_set->methods->mb_extents) (font_set,
- (char *)text, text_len,
- overall_ink_extents,
- overall_logical_extents);
-}
-
-Status
-XmbTextPerCharExtents(
- XFontSet font_set,
- _Xconst char *text,
- int text_len,
- XRectangle *ink_extents_buffer,
- XRectangle *logical_extents_buffer,
- int buffer_size,
- int *num_chars,
- XRectangle *max_ink_extents,
- XRectangle *max_logical_extents)
-{
- return (*font_set->methods->mb_extents_per_char)
- (font_set, (char *)text, text_len,
- ink_extents_buffer, logical_extents_buffer,
- buffer_size, num_chars, max_ink_extents, max_logical_extents);
-}
+/*
+
+Copyright 1991, 1998 The Open Group
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
+
+The above copyright notice and this permission notice shall be included
+in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR
+OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
+ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group shall
+not be used in advertising or otherwise to promote the sale, use or
+other dealings in this Software without prior written authorization
+from The Open Group.
+
+*/
+/*
+ * Copyright 1991 by the Open Software Foundation
+ *
+ * Permission to use, copy, modify, distribute, and sell this software and its
+ * documentation for any purpose is hereby granted without fee, provided that
+ * the above copyright notice appear in all copies and that both that
+ * copyright notice and this permission notice appear in supporting
+ * documentation, and that the name of Open Software Foundation
+ * not be used in advertising or publicity pertaining to distribution of the
+ * software without specific, written prior permission. Open Software
+ * Foundation makes no representations about the suitability of this
+ * software for any purpose. It is provided "as is" without express or
+ * implied warranty.
+ *
+ * OPEN SOFTWARE FOUNDATION DISCLAIMS ALL WARRANTIES WITH REGARD TO
+ * THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
+ * FITNESS, IN NO EVENT SHALL OPEN SOFTWARE FOUNDATIONN BE
+ * LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+ * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+ *
+ * M. Collins OSF
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+#include "Xlcint.h"
+
+void
+XmbDrawText(
+ Display *dpy,
+ Drawable d,
+ GC gc,
+ int x,
+ int y,
+ XmbTextItem *text_items,
+ int nitems)
+{
+ register XFontSet fs = NULL;
+ register XmbTextItem *p = text_items;
+ register int i = nitems;
+ register int esc;
+
+ /* ignore leading items with no fontset */
+ while (i && !p->font_set) {
+ i--;
+ p++;
+ }
+
+ for (; --i >= 0; p++) {
+ if (p->font_set)
+ fs = p->font_set;
+ x += p->delta;
+ esc = (*fs->methods->mb_draw_string) (dpy, d, fs, gc, x, y,
+ p->chars, p->nchars);
+ if (!esc)
+ esc = fs->methods->mb_escapement (fs, p->chars, p->nchars);
+ x += esc;
+ }
+}
+
+void
+XmbDrawString(
+ Display *dpy,
+ Drawable d,
+ XFontSet font_set,
+ GC gc,
+ int x,
+ int y,
+ _Xconst char *text,
+ int text_len)
+{
+ (void)(*font_set->methods->mb_draw_string) (dpy, d, font_set, gc, x, y,
+ (char *)text, text_len);
+}
+
+
+void
+XmbDrawImageString(
+ Display *dpy,
+ Drawable d,
+ XFontSet font_set,
+ GC gc,
+ int x,
+ int y,
+ _Xconst char *text,
+ int text_len)
+{
+ (*font_set->methods->mb_draw_image_string) (dpy, d, font_set, gc, x, y,
+ (char *)text, text_len);
+}
+
+int
+XmbTextEscapement(
+ XFontSet font_set,
+ _Xconst char *text,
+ int text_len)
+{
+ return (*font_set->methods->mb_escapement) (font_set,
+ (char *)text, text_len);
+}
+
+int
+XmbTextExtents(
+ XFontSet font_set,
+ _Xconst char *text,
+ int text_len,
+ XRectangle *overall_ink_extents,
+ XRectangle *overall_logical_extents)
+{
+ return (*font_set->methods->mb_extents) (font_set,
+ (char *)text, text_len,
+ overall_ink_extents,
+ overall_logical_extents);
+}
+
+Status
+XmbTextPerCharExtents(
+ XFontSet font_set,
+ _Xconst char *text,
+ int text_len,
+ XRectangle *ink_extents_buffer,
+ XRectangle *logical_extents_buffer,
+ int buffer_size,
+ int *num_chars,
+ XRectangle *max_ink_extents,
+ XRectangle *max_logical_extents)
+{
+ return (*font_set->methods->mb_extents_per_char)
+ (font_set, (char *)text, text_len,
+ ink_extents_buffer, logical_extents_buffer,
+ buffer_size, num_chars, max_ink_extents, max_logical_extents);
+}
diff --git a/libX11/src/xlibi18n/utf8WMProps.c b/libX11/src/xlibi18n/utf8WMProps.c
index 244988311..bbfb7c057 100644
--- a/libX11/src/xlibi18n/utf8WMProps.c
+++ b/libX11/src/xlibi18n/utf8WMProps.c
@@ -1,91 +1,91 @@
-/*
-
-Copyright 1991, 1998 The Open Group
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
-
-The above copyright notice and this permission notice shall be included
-in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
-IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR
-OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
-ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall
-not be used in advertising or otherwise to promote the sale, use or
-other dealings in this Software without prior written authorization
-from The Open Group.
-
-*/
-/*
- * Copyright 2000 by Bruno Haible
- *
- * Permission to use, copy, modify, distribute, and sell this software
- * and its documentation for any purpose is hereby granted without fee,
- * provided that the above copyright notice appear in all copies and
- * that both that copyright notice and this permission notice appear
- * in supporting documentation, and that the name of Bruno Haible not
- * be used in advertising or publicity pertaining to distribution of the
- * software without specific, written prior permission. Bruno Haible
- * makes no representations about the suitability of this software for
- * any purpose. It is provided "as is" without express or implied
- * warranty.
- *
- * Bruno Haible DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
- * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN
- * NO EVENT SHALL Bruno Haible BE LIABLE FOR ANY SPECIAL, INDIRECT OR
- * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS
- * OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
- * OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE
- * OR PERFORMANCE OF THIS SOFTWARE.
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include <X11/Xlibint.h>
-#include <X11/Xutil.h>
-#include <X11/Xatom.h>
-#include <X11/Xlocale.h>
-
-void
-Xutf8SetWMProperties (
- Display *dpy,
- Window w,
- _Xconst char *windowName,
- _Xconst char *iconName,
- char **argv,
- int argc,
- XSizeHints *sizeHints,
- XWMHints *wmHints,
- XClassHint *classHints)
-{
- XTextProperty wname, iname;
- XTextProperty *wprop = NULL;
- XTextProperty *iprop = NULL;
-
- if (windowName &&
- Xutf8TextListToTextProperty(dpy, (char**)&windowName, 1,
- XStdICCTextStyle, &wname) >= Success)
- wprop = &wname;
- if (iconName &&
- Xutf8TextListToTextProperty(dpy, (char**)&iconName, 1,
- XStdICCTextStyle, &iname) >= Success)
- iprop = &iname;
- XSetWMProperties(dpy, w, wprop, iprop, argv, argc,
- sizeHints, wmHints, classHints);
- if (wprop)
- Xfree((char *)wname.value);
- if (iprop)
- Xfree((char *)iname.value);
-
- /* Note: The WM_LOCALE_NAME property is set by XSetWMProperties. */
-}
+/*
+
+Copyright 1991, 1998 The Open Group
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
+
+The above copyright notice and this permission notice shall be included
+in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR
+OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
+ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group shall
+not be used in advertising or otherwise to promote the sale, use or
+other dealings in this Software without prior written authorization
+from The Open Group.
+
+*/
+/*
+ * Copyright 2000 by Bruno Haible
+ *
+ * Permission to use, copy, modify, distribute, and sell this software
+ * and its documentation for any purpose is hereby granted without fee,
+ * provided that the above copyright notice appear in all copies and
+ * that both that copyright notice and this permission notice appear
+ * in supporting documentation, and that the name of Bruno Haible not
+ * be used in advertising or publicity pertaining to distribution of the
+ * software without specific, written prior permission. Bruno Haible
+ * makes no representations about the suitability of this software for
+ * any purpose. It is provided "as is" without express or implied
+ * warranty.
+ *
+ * Bruno Haible DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
+ * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN
+ * NO EVENT SHALL Bruno Haible BE LIABLE FOR ANY SPECIAL, INDIRECT OR
+ * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS
+ * OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
+ * OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE
+ * OR PERFORMANCE OF THIS SOFTWARE.
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include <X11/Xlibint.h>
+#include <X11/Xutil.h>
+#include <X11/Xatom.h>
+#include <X11/Xlocale.h>
+
+void
+Xutf8SetWMProperties (
+ Display *dpy,
+ Window w,
+ _Xconst char *windowName,
+ _Xconst char *iconName,
+ char **argv,
+ int argc,
+ XSizeHints *sizeHints,
+ XWMHints *wmHints,
+ XClassHint *classHints)
+{
+ XTextProperty wname, iname;
+ XTextProperty *wprop = NULL;
+ XTextProperty *iprop = NULL;
+
+ if (windowName &&
+ Xutf8TextListToTextProperty(dpy, (char**)&windowName, 1,
+ XStdICCTextStyle, &wname) >= Success)
+ wprop = &wname;
+ if (iconName &&
+ Xutf8TextListToTextProperty(dpy, (char**)&iconName, 1,
+ XStdICCTextStyle, &iname) >= Success)
+ iprop = &iname;
+ XSetWMProperties(dpy, w, wprop, iprop, argv, argc,
+ sizeHints, wmHints, classHints);
+ if (wprop)
+ Xfree((char *)wname.value);
+ if (iprop)
+ Xfree((char *)iname.value);
+
+ /* Note: The WM_LOCALE_NAME property is set by XSetWMProperties. */
+}
diff --git a/libX11/src/xlibi18n/utf8Wrap.c b/libX11/src/xlibi18n/utf8Wrap.c
index 01664e9e6..82967b0b1 100644
--- a/libX11/src/xlibi18n/utf8Wrap.c
+++ b/libX11/src/xlibi18n/utf8Wrap.c
@@ -1,185 +1,185 @@
-/*
-
-Copyright 1991, 1998 The Open Group
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
-
-The above copyright notice and this permission notice shall be included
-in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
-IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR
-OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
-ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall
-not be used in advertising or otherwise to promote the sale, use or
-other dealings in this Software without prior written authorization
-from The Open Group.
-
-*/
-/*
- * Copyright 1991 by the Open Software Foundation
- *
- * Permission to use, copy, modify, distribute, and sell this software and its
- * documentation for any purpose is hereby granted without fee, provided that
- * the above copyright notice appear in all copies and that both that
- * copyright notice and this permission notice appear in supporting
- * documentation, and that the name of Open Software Foundation
- * not be used in advertising or publicity pertaining to distribution of the
- * software without specific, written prior permission. Open Software
- * Foundation makes no representations about the suitability of this
- * software for any purpose. It is provided "as is" without express or
- * implied warranty.
- *
- * OPEN SOFTWARE FOUNDATION DISCLAIMS ALL WARRANTIES WITH REGARD TO
- * THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
- * FITNESS, IN NO EVENT SHALL OPEN SOFTWARE FOUNDATIONN BE
- * LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
- * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
- * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
- * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
- *
- * M. Collins OSF
- */
-/*
- * Copyright 2000 by Bruno Haible
- *
- * Permission to use, copy, modify, distribute, and sell this software
- * and its documentation for any purpose is hereby granted without fee,
- * provided that the above copyright notice appear in all copies and
- * that both that copyright notice and this permission notice appear
- * in supporting documentation, and that the name of Bruno Haible not
- * be used in advertising or publicity pertaining to distribution of the
- * software without specific, written prior permission. Bruno Haible
- * makes no representations about the suitability of this software for
- * any purpose. It is provided "as is" without express or implied
- * warranty.
- *
- * Bruno Haible DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
- * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN
- * NO EVENT SHALL Bruno Haible BE LIABLE FOR ANY SPECIAL, INDIRECT OR
- * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS
- * OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
- * OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE
- * OR PERFORMANCE OF THIS SOFTWARE.
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-#include "Xlcint.h"
-
-void
-Xutf8DrawText(
- Display *dpy,
- Drawable d,
- GC gc,
- int x,
- int y,
- XmbTextItem *text_items,
- int nitems)
-{
- register XFontSet fs = NULL;
- register XmbTextItem *p = text_items;
- register int i = nitems;
- register int esc;
-
- /* ignore leading items with no fontset */
- while (i && !p->font_set) {
- i--;
- p++;
- }
-
- for (; --i >= 0; p++) {
- if (p->font_set)
- fs = p->font_set;
- x += p->delta;
- esc = (*fs->methods->utf8_draw_string) (dpy, d, fs, gc, x, y,
- p->chars, p->nchars);
- if (!esc)
- esc = fs->methods->utf8_escapement (fs, p->chars, p->nchars);
- x += esc;
- }
-}
-
-void
-Xutf8DrawString(
- Display *dpy,
- Drawable d,
- XFontSet font_set,
- GC gc,
- int x,
- int y,
- _Xconst char *text,
- int text_len)
-{
- (void)(*font_set->methods->utf8_draw_string) (dpy, d, font_set, gc, x, y,
- (char *)text, text_len);
-}
-
-
-void
-Xutf8DrawImageString(
- Display *dpy,
- Drawable d,
- XFontSet font_set,
- GC gc,
- int x,
- int y,
- _Xconst char *text,
- int text_len)
-{
- (*font_set->methods->utf8_draw_image_string) (dpy, d, font_set, gc, x, y,
- (char *)text, text_len);
-}
-
-int
-Xutf8TextEscapement(
- XFontSet font_set,
- _Xconst char *text,
- int text_len)
-{
- return (*font_set->methods->utf8_escapement) (font_set,
- (char *)text, text_len);
-}
-
-int
-Xutf8TextExtents(
- XFontSet font_set,
- _Xconst char *text,
- int text_len,
- XRectangle *overall_ink_extents,
- XRectangle *overall_logical_extents)
-{
- return (*font_set->methods->utf8_extents) (font_set,
- (char *)text, text_len,
- overall_ink_extents,
- overall_logical_extents);
-}
-
-Status
-Xutf8TextPerCharExtents(
- XFontSet font_set,
- _Xconst char *text,
- int text_len,
- XRectangle *ink_extents_buffer,
- XRectangle *logical_extents_buffer,
- int buffer_size,
- int *num_chars,
- XRectangle *max_ink_extents,
- XRectangle *max_logical_extents)
-{
- return (*font_set->methods->utf8_extents_per_char)
- (font_set, (char *)text, text_len,
- ink_extents_buffer, logical_extents_buffer,
- buffer_size, num_chars, max_ink_extents, max_logical_extents);
-}
+/*
+
+Copyright 1991, 1998 The Open Group
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
+
+The above copyright notice and this permission notice shall be included
+in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR
+OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
+ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group shall
+not be used in advertising or otherwise to promote the sale, use or
+other dealings in this Software without prior written authorization
+from The Open Group.
+
+*/
+/*
+ * Copyright 1991 by the Open Software Foundation
+ *
+ * Permission to use, copy, modify, distribute, and sell this software and its
+ * documentation for any purpose is hereby granted without fee, provided that
+ * the above copyright notice appear in all copies and that both that
+ * copyright notice and this permission notice appear in supporting
+ * documentation, and that the name of Open Software Foundation
+ * not be used in advertising or publicity pertaining to distribution of the
+ * software without specific, written prior permission. Open Software
+ * Foundation makes no representations about the suitability of this
+ * software for any purpose. It is provided "as is" without express or
+ * implied warranty.
+ *
+ * OPEN SOFTWARE FOUNDATION DISCLAIMS ALL WARRANTIES WITH REGARD TO
+ * THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
+ * FITNESS, IN NO EVENT SHALL OPEN SOFTWARE FOUNDATIONN BE
+ * LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+ * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+ *
+ * M. Collins OSF
+ */
+/*
+ * Copyright 2000 by Bruno Haible
+ *
+ * Permission to use, copy, modify, distribute, and sell this software
+ * and its documentation for any purpose is hereby granted without fee,
+ * provided that the above copyright notice appear in all copies and
+ * that both that copyright notice and this permission notice appear
+ * in supporting documentation, and that the name of Bruno Haible not
+ * be used in advertising or publicity pertaining to distribution of the
+ * software without specific, written prior permission. Bruno Haible
+ * makes no representations about the suitability of this software for
+ * any purpose. It is provided "as is" without express or implied
+ * warranty.
+ *
+ * Bruno Haible DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
+ * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN
+ * NO EVENT SHALL Bruno Haible BE LIABLE FOR ANY SPECIAL, INDIRECT OR
+ * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS
+ * OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
+ * OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE
+ * OR PERFORMANCE OF THIS SOFTWARE.
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+#include "Xlcint.h"
+
+void
+Xutf8DrawText(
+ Display *dpy,
+ Drawable d,
+ GC gc,
+ int x,
+ int y,
+ XmbTextItem *text_items,
+ int nitems)
+{
+ register XFontSet fs = NULL;
+ register XmbTextItem *p = text_items;
+ register int i = nitems;
+ register int esc;
+
+ /* ignore leading items with no fontset */
+ while (i && !p->font_set) {
+ i--;
+ p++;
+ }
+
+ for (; --i >= 0; p++) {
+ if (p->font_set)
+ fs = p->font_set;
+ x += p->delta;
+ esc = (*fs->methods->utf8_draw_string) (dpy, d, fs, gc, x, y,
+ p->chars, p->nchars);
+ if (!esc)
+ esc = fs->methods->utf8_escapement (fs, p->chars, p->nchars);
+ x += esc;
+ }
+}
+
+void
+Xutf8DrawString(
+ Display *dpy,
+ Drawable d,
+ XFontSet font_set,
+ GC gc,
+ int x,
+ int y,
+ _Xconst char *text,
+ int text_len)
+{
+ (void)(*font_set->methods->utf8_draw_string) (dpy, d, font_set, gc, x, y,
+ (char *)text, text_len);
+}
+
+
+void
+Xutf8DrawImageString(
+ Display *dpy,
+ Drawable d,
+ XFontSet font_set,
+ GC gc,
+ int x,
+ int y,
+ _Xconst char *text,
+ int text_len)
+{
+ (*font_set->methods->utf8_draw_image_string) (dpy, d, font_set, gc, x, y,
+ (char *)text, text_len);
+}
+
+int
+Xutf8TextEscapement(
+ XFontSet font_set,
+ _Xconst char *text,
+ int text_len)
+{
+ return (*font_set->methods->utf8_escapement) (font_set,
+ (char *)text, text_len);
+}
+
+int
+Xutf8TextExtents(
+ XFontSet font_set,
+ _Xconst char *text,
+ int text_len,
+ XRectangle *overall_ink_extents,
+ XRectangle *overall_logical_extents)
+{
+ return (*font_set->methods->utf8_extents) (font_set,
+ (char *)text, text_len,
+ overall_ink_extents,
+ overall_logical_extents);
+}
+
+Status
+Xutf8TextPerCharExtents(
+ XFontSet font_set,
+ _Xconst char *text,
+ int text_len,
+ XRectangle *ink_extents_buffer,
+ XRectangle *logical_extents_buffer,
+ int buffer_size,
+ int *num_chars,
+ XRectangle *max_ink_extents,
+ XRectangle *max_logical_extents)
+{
+ return (*font_set->methods->utf8_extents_per_char)
+ (font_set, (char *)text, text_len,
+ ink_extents_buffer, logical_extents_buffer,
+ buffer_size, num_chars, max_ink_extents, max_logical_extents);
+}
diff --git a/libX11/src/xlibi18n/wcWrap.c b/libX11/src/xlibi18n/wcWrap.c
index de1011f64..cc3b33f7d 100644
--- a/libX11/src/xlibi18n/wcWrap.c
+++ b/libX11/src/xlibi18n/wcWrap.c
@@ -1,161 +1,161 @@
-/*
-
-Copyright 1991, 1998 The Open Group
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
-
-The above copyright notice and this permission notice shall be included
-in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
-IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR
-OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
-ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall
-not be used in advertising or otherwise to promote the sale, use or
-other dealings in this Software without prior written authorization
-from The Open Group.
-
-*/
-
-/*
- * Copyright 1991 by the Open Software Foundation
- *
- * Permission to use, copy, modify, distribute, and sell this software and its
- * documentation for any purpose is hereby granted without fee, provided that
- * the above copyright notice appear in all copies and that both that
- * copyright notice and this permission notice appear in supporting
- * documentation, and that the name of Open Software Foundation
- * not be used in advertising or publicity pertaining to distribution of the
- * software without specific, written prior permission. Open Software
- * Foundation makes no representations about the suitability of this
- * software for any purpose. It is provided "as is" without express or
- * implied warranty.
- *
- * OPEN SOFTWARE FOUNDATION DISCLAIMS ALL WARRANTIES WITH REGARD TO
- * THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
- * FITNESS, IN NO EVENT SHALL OPEN SOFTWARE FOUNDATIONN BE
- * LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
- * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
- * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
- * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
- *
- * M. Collins OSF
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "Xlibint.h"
-#include "Xlcint.h"
-
-void
-XwcDrawText(
- Display *dpy,
- Drawable d,
- GC gc,
- int x,
- int y,
- XwcTextItem *text_items,
- int nitems)
-{
- register XFontSet fs = NULL;
- register XwcTextItem *p = text_items;
- register int i = nitems;
- register int esc;
-
- /* ignore leading items with no fontset */
- while (i && !p->font_set) {
- i--;
- p++;
- }
-
- for (; --i >= 0; p++) {
- if (p->font_set)
- fs = p->font_set;
- x += p->delta;
- esc = (*fs->methods->wc_draw_string) (dpy, d, fs, gc, x, y,
- p->chars, p->nchars);
- if (!esc)
- esc = fs->methods->wc_escapement (fs, p->chars, p->nchars);
- x += esc;
- }
-}
-
-void
-XwcDrawString(
- Display *dpy,
- Drawable d,
- XFontSet font_set,
- GC gc,
- int x,
- int y,
- _Xconst wchar_t *text,
- int text_len)
-{
- (void)(*font_set->methods->wc_draw_string) (dpy, d, font_set, gc, x, y,
- text, text_len);
-}
-
-void
-XwcDrawImageString(
- Display *dpy,
- Drawable d,
- XFontSet font_set,
- GC gc,
- int x,
- int y,
- _Xconst wchar_t *text,
- int text_len)
-{
- (*font_set->methods->wc_draw_image_string) (dpy, d, font_set, gc, x, y,
- text, text_len);
-}
-
-int
-XwcTextEscapement(
- XFontSet font_set,
- _Xconst wchar_t *text,
- int text_len)
-{
- return (*font_set->methods->wc_escapement) (font_set, text, text_len);
-}
-
-int
-XwcTextExtents(
- XFontSet font_set,
- _Xconst wchar_t *text,
- int text_len,
- XRectangle *overall_ink_extents,
- XRectangle *overall_logical_extents)
-{
- return (*font_set->methods->wc_extents) (font_set, text, text_len,
- overall_ink_extents,
- overall_logical_extents);
-}
-
-Status
-XwcTextPerCharExtents(
- XFontSet font_set,
- _Xconst wchar_t *text,
- int text_len,
- XRectangle *ink_extents_buffer,
- XRectangle *logical_extents_buffer,
- int buffer_size,
- int *num_chars,
- XRectangle *max_ink_extents,
- XRectangle *max_logical_extents)
-{
- return (*font_set->methods->wc_extents_per_char)
- (font_set, text, text_len,
- ink_extents_buffer, logical_extents_buffer,
- buffer_size, num_chars, max_ink_extents, max_logical_extents);
-}
+/*
+
+Copyright 1991, 1998 The Open Group
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
+
+The above copyright notice and this permission notice shall be included
+in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR
+OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
+ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group shall
+not be used in advertising or otherwise to promote the sale, use or
+other dealings in this Software without prior written authorization
+from The Open Group.
+
+*/
+
+/*
+ * Copyright 1991 by the Open Software Foundation
+ *
+ * Permission to use, copy, modify, distribute, and sell this software and its
+ * documentation for any purpose is hereby granted without fee, provided that
+ * the above copyright notice appear in all copies and that both that
+ * copyright notice and this permission notice appear in supporting
+ * documentation, and that the name of Open Software Foundation
+ * not be used in advertising or publicity pertaining to distribution of the
+ * software without specific, written prior permission. Open Software
+ * Foundation makes no representations about the suitability of this
+ * software for any purpose. It is provided "as is" without express or
+ * implied warranty.
+ *
+ * OPEN SOFTWARE FOUNDATION DISCLAIMS ALL WARRANTIES WITH REGARD TO
+ * THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
+ * FITNESS, IN NO EVENT SHALL OPEN SOFTWARE FOUNDATIONN BE
+ * LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+ * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+ *
+ * M. Collins OSF
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include "Xlibint.h"
+#include "Xlcint.h"
+
+void
+XwcDrawText(
+ Display *dpy,
+ Drawable d,
+ GC gc,
+ int x,
+ int y,
+ XwcTextItem *text_items,
+ int nitems)
+{
+ register XFontSet fs = NULL;
+ register XwcTextItem *p = text_items;
+ register int i = nitems;
+ register int esc;
+
+ /* ignore leading items with no fontset */
+ while (i && !p->font_set) {
+ i--;
+ p++;
+ }
+
+ for (; --i >= 0; p++) {
+ if (p->font_set)
+ fs = p->font_set;
+ x += p->delta;
+ esc = (*fs->methods->wc_draw_string) (dpy, d, fs, gc, x, y,
+ p->chars, p->nchars);
+ if (!esc)
+ esc = fs->methods->wc_escapement (fs, p->chars, p->nchars);
+ x += esc;
+ }
+}
+
+void
+XwcDrawString(
+ Display *dpy,
+ Drawable d,
+ XFontSet font_set,
+ GC gc,
+ int x,
+ int y,
+ _Xconst wchar_t *text,
+ int text_len)
+{
+ (void)(*font_set->methods->wc_draw_string) (dpy, d, font_set, gc, x, y,
+ text, text_len);
+}
+
+void
+XwcDrawImageString(
+ Display *dpy,
+ Drawable d,
+ XFontSet font_set,
+ GC gc,
+ int x,
+ int y,
+ _Xconst wchar_t *text,
+ int text_len)
+{
+ (*font_set->methods->wc_draw_image_string) (dpy, d, font_set, gc, x, y,
+ text, text_len);
+}
+
+int
+XwcTextEscapement(
+ XFontSet font_set,
+ _Xconst wchar_t *text,
+ int text_len)
+{
+ return (*font_set->methods->wc_escapement) (font_set, text, text_len);
+}
+
+int
+XwcTextExtents(
+ XFontSet font_set,
+ _Xconst wchar_t *text,
+ int text_len,
+ XRectangle *overall_ink_extents,
+ XRectangle *overall_logical_extents)
+{
+ return (*font_set->methods->wc_extents) (font_set, text, text_len,
+ overall_ink_extents,
+ overall_logical_extents);
+}
+
+Status
+XwcTextPerCharExtents(
+ XFontSet font_set,
+ _Xconst wchar_t *text,
+ int text_len,
+ XRectangle *ink_extents_buffer,
+ XRectangle *logical_extents_buffer,
+ int buffer_size,
+ int *num_chars,
+ XRectangle *max_ink_extents,
+ XRectangle *max_logical_extents)
+{
+ return (*font_set->methods->wc_extents_per_char)
+ (font_set, text, text_len,
+ ink_extents_buffer, logical_extents_buffer,
+ buffer_size, num_chars, max_ink_extents, max_logical_extents);
+}
diff --git a/libX11/src/xlibi18n/xim_trans.c b/libX11/src/xlibi18n/xim_trans.c
index 0381e0c69..752ae00b1 100644
--- a/libX11/src/xlibi18n/xim_trans.c
+++ b/libX11/src/xlibi18n/xim_trans.c
@@ -1,30 +1,30 @@
-/*
- * Copyright © 2003 Keith Packard
- *
- * Permission to use, copy, modify, distribute, and sell this software and its
- * documentation for any purpose is hereby granted without fee, provided that
- * the above copyright notice appear in all copies and that both that
- * copyright notice and this permission notice appear in supporting
- * documentation, and that the name of Keith Packard not be used in
- * advertising or publicity pertaining to distribution of the software without
- * specific, written prior permission. Keith Packard makes no
- * representations about the suitability of this software for any purpose. It
- * is provided "as is" without express or implied warranty.
- *
- * KEITH PACKARD DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
- * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
- * EVENT SHALL KEITH PACKARD BE LIABLE FOR ANY SPECIAL, INDIRECT OR
- * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
- * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
- * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
- * PERFORMANCE OF THIS SOFTWARE.
- */
-
-#ifdef HAVE_CONFIG_H
-# include "config.h"
-#endif
-
-#define XIM_t 1
-#define TRANS_CLIENT 1
-
-#include <X11/Xtrans/transport.c>
+/*
+ * Copyright © 2003 Keith Packard
+ *
+ * Permission to use, copy, modify, distribute, and sell this software and its
+ * documentation for any purpose is hereby granted without fee, provided that
+ * the above copyright notice appear in all copies and that both that
+ * copyright notice and this permission notice appear in supporting
+ * documentation, and that the name of Keith Packard not be used in
+ * advertising or publicity pertaining to distribution of the software without
+ * specific, written prior permission. Keith Packard makes no
+ * representations about the suitability of this software for any purpose. It
+ * is provided "as is" without express or implied warranty.
+ *
+ * KEITH PACKARD DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
+ * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
+ * EVENT SHALL KEITH PACKARD BE LIABLE FOR ANY SPECIAL, INDIRECT OR
+ * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
+ * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
+ * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+ * PERFORMANCE OF THIS SOFTWARE.
+ */
+
+#ifdef HAVE_CONFIG_H
+# include "config.h"
+#endif
+
+#define XIM_t 1
+#define TRANS_CLIENT 1
+
+#include <X11/Xtrans/transport.c>
diff --git a/libX11/x11-xcb.pc.in b/libX11/x11-xcb.pc.in
index 588fd233b..315a9d176 100644
--- a/libX11/x11-xcb.pc.in
+++ b/libX11/x11-xcb.pc.in
@@ -1,11 +1,11 @@
-prefix=@prefix@
-exec_prefix=@exec_prefix@
-libdir=@libdir@
-includedir=@includedir@
-
-Name: X11 XCB
-Description: X Library XCB interface
-Version: @PACKAGE_VERSION@
-Requires: x11 xcb
-Cflags: -I${includedir}
-Libs: -L${libdir} -lX11-xcb
+prefix=@prefix@
+exec_prefix=@exec_prefix@
+libdir=@libdir@
+includedir=@includedir@
+
+Name: X11 XCB
+Description: X Library XCB interface
+Version: @PACKAGE_VERSION@
+Requires: x11 xcb
+Cflags: -I${includedir}
+Libs: -L${libdir} -lX11-xcb
diff --git a/libX11/x11.pc.in b/libX11/x11.pc.in
index 7352985ed..25c7e7cd0 100644
--- a/libX11/x11.pc.in
+++ b/libX11/x11.pc.in
@@ -1,15 +1,15 @@
-prefix=@prefix@
-exec_prefix=@exec_prefix@
-libdir=@libdir@
-includedir=@includedir@
-
-xthreadlib=@XTHREADLIB@
-
-Name: X11
-Description: X Library
-Version: @PACKAGE_VERSION@
-Requires: xproto @XKBPROTO_REQUIRES@
-Requires.private: @X11_EXTRA_DEPS@
-Cflags: -I${includedir} @XTHREAD_CFLAGS@
-Libs: -L${libdir} -lX11
-Libs.private: @XTHREADLIB@
+prefix=@prefix@
+exec_prefix=@exec_prefix@
+libdir=@libdir@
+includedir=@includedir@
+
+xthreadlib=@XTHREADLIB@
+
+Name: X11
+Description: X Library
+Version: @PACKAGE_VERSION@
+Requires: xproto @XKBPROTO_REQUIRES@
+Requires.private: @X11_EXTRA_DEPS@
+Cflags: -I${includedir} @XTHREAD_CFLAGS@
+Libs: -L${libdir} -lX11
+Libs.private: @XTHREADLIB@
diff --git a/libXau/.gitignore b/libXau/.gitignore
index 668956753..8e9fcf2fe 100644
--- a/libXau/.gitignore
+++ b/libXau/.gitignore
@@ -1,78 +1,78 @@
-#
-# X.Org module default exclusion patterns
-# The next section if for module specific patterns
-#
-# Do not edit the following section
-# GNU Build System (Autotools)
-aclocal.m4
-autom4te.cache/
-autoscan.log
-ChangeLog
-compile
-config.guess
-config.h
-config.h.in
-config.log
-config-ml.in
-config.py
-config.status
-config.status.lineno
-config.sub
-configure
-configure.scan
-depcomp
-.deps/
-INSTALL
-install-sh
-.libs/
-libtool
-libtool.m4
-ltmain.sh
-lt~obsolete.m4
-ltoptions.m4
-ltsugar.m4
-ltversion.m4
-Makefile
-Makefile.in
-mdate-sh
-missing
-mkinstalldirs
-*.pc
-py-compile
-stamp-h?
-symlink-tree
-texinfo.tex
-ylwrap
-
-# Do not edit the following section
-# Edit Compile Debug Document Distribute
-*~
-*.[0-9]
-*.[0-9]x
-*.bak
-*.bin
-core
-*.dll
-*.exe
-*-ISO*.bdf
-*-JIS*.bdf
-*-KOI8*.bdf
-*.kld
-*.ko
-*.ko.cmd
-*.lai
-*.l[oa]
-*.[oa]
-*.obj
-*.patch
-*.so
-*.pcf.gz
-*.pdb
-*.tar.bz2
-*.tar.gz
-#
-# Add & Override patterns for libXau
-#
-# Edit the following section as needed
-# For example, !report.pc overrides *.pc. See 'man gitignore'
-#
+#
+# X.Org module default exclusion patterns
+# The next section if for module specific patterns
+#
+# Do not edit the following section
+# GNU Build System (Autotools)
+aclocal.m4
+autom4te.cache/
+autoscan.log
+ChangeLog
+compile
+config.guess
+config.h
+config.h.in
+config.log
+config-ml.in
+config.py
+config.status
+config.status.lineno
+config.sub
+configure
+configure.scan
+depcomp
+.deps/
+INSTALL
+install-sh
+.libs/
+libtool
+libtool.m4
+ltmain.sh
+lt~obsolete.m4
+ltoptions.m4
+ltsugar.m4
+ltversion.m4
+Makefile
+Makefile.in
+mdate-sh
+missing
+mkinstalldirs
+*.pc
+py-compile
+stamp-h?
+symlink-tree
+texinfo.tex
+ylwrap
+
+# Do not edit the following section
+# Edit Compile Debug Document Distribute
+*~
+*.[0-9]
+*.[0-9]x
+*.bak
+*.bin
+core
+*.dll
+*.exe
+*-ISO*.bdf
+*-JIS*.bdf
+*-KOI8*.bdf
+*.kld
+*.ko
+*.ko.cmd
+*.lai
+*.l[oa]
+*.[oa]
+*.obj
+*.patch
+*.so
+*.pcf.gz
+*.pdb
+*.tar.bz2
+*.tar.gz
+#
+# Add & Override patterns for libXau
+#
+# Edit the following section as needed
+# For example, !report.pc overrides *.pc. See 'man gitignore'
+#
diff --git a/libXau/AUTHORS b/libXau/AUTHORS
index 772f33a5b..a49197556 100644
--- a/libXau/AUTHORS
+++ b/libXau/AUTHORS
@@ -1,3 +1,3 @@
-Keith Packard, X Consortium
-
-Some bug fixes, but not clear from where.
+Keith Packard, X Consortium
+
+Some bug fixes, but not clear from where.
diff --git a/libXau/COPYING b/libXau/COPYING
index e893a82a7..64492ad80 100644
--- a/libXau/COPYING
+++ b/libXau/COPYING
@@ -1,21 +1,21 @@
-Copyright 1988, 1993, 1994, 1998 The Open Group
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall not be
-used in advertising or otherwise to promote the sale, use or other dealings
-in this Software without prior written authorization from The Open Group.
+Copyright 1988, 1993, 1994, 1998 The Open Group
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group shall not be
+used in advertising or otherwise to promote the sale, use or other dealings
+in this Software without prior written authorization from The Open Group.
diff --git a/libXau/Makefile.am b/libXau/Makefile.am
index f74f1bf93..9e8d95b84 100644
--- a/libXau/Makefile.am
+++ b/libXau/Makefile.am
@@ -1,64 +1,64 @@
-SUBDIRS=man
-
-lib_LTLIBRARIES = libXau.la
-
-AM_CFLAGS = $(XAU_CFLAGS) $(CWARNFLAGS)
-
-INCLUDES = -I${top_srcdir}/include
-
-libXau_la_LDFLAGS = -version-number 6:0:0 -no-undefined
-
-libXau_la_LIBADD = $(XAU_LIBS)
-
-libXau_la_SOURCES = \
- AuDispose.c \
- AuFileName.c \
- AuGetAddr.c \
- AuGetBest.c \
- AuLock.c \
- AuRead.c \
- AuUnlock.c \
- AuWrite.c
-
-xauincludedir=$(includedir)/X11
-
-xauinclude_HEADERS = include/X11/Xauth.h
-
-pkgconfigdir = $(libdir)/pkgconfig
-pkgconfig_DATA = xau.pc
-
-check_PROGRAMS=Autest
-TESTS=Autest
-
-Autest_SOURCES=Autest.c
-Autest_LDADD=libXau.la
-
-if LINT
-ALL_LINT_FLAGS=$(LINT_FLAGS) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
- $(AM_CPPFLAGS) $(CPPFLAGS)
-
-lint:
- $(LINT) $(ALL_LINT_FLAGS) $(libXau_la_SOURCES)
-endif LINT
-
-if MAKE_LINT_LIB
-lintlibdir = $(libdir)
-
-lintlib_DATA = $(LINTLIB)
-
-$(LINTLIB): $(libXau_la_SOURCES)
- $(LINT) -y -oXau -x $(ALL_LINT_FLAGS) $(libXau_la_SOURCES)
-endif MAKE_LINT_LIB
-
-CLEANFILES = $(lintlib_DATA)
-MAINTAINERCLEANFILES = ChangeLog INSTALL
-
-.PHONY: ChangeLog INSTALL
-
-INSTALL:
- $(INSTALL_CMD)
-
-ChangeLog:
- $(CHANGELOG_CMD)
-
-dist-hook: ChangeLog INSTALL
+SUBDIRS=man
+
+lib_LTLIBRARIES = libXau.la
+
+AM_CFLAGS = $(XAU_CFLAGS) $(CWARNFLAGS)
+
+INCLUDES = -I${top_srcdir}/include
+
+libXau_la_LDFLAGS = -version-number 6:0:0 -no-undefined
+
+libXau_la_LIBADD = $(XAU_LIBS)
+
+libXau_la_SOURCES = \
+ AuDispose.c \
+ AuFileName.c \
+ AuGetAddr.c \
+ AuGetBest.c \
+ AuLock.c \
+ AuRead.c \
+ AuUnlock.c \
+ AuWrite.c
+
+xauincludedir=$(includedir)/X11
+
+xauinclude_HEADERS = include/X11/Xauth.h
+
+pkgconfigdir = $(libdir)/pkgconfig
+pkgconfig_DATA = xau.pc
+
+check_PROGRAMS=Autest
+TESTS=Autest
+
+Autest_SOURCES=Autest.c
+Autest_LDADD=libXau.la
+
+if LINT
+ALL_LINT_FLAGS=$(LINT_FLAGS) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
+ $(AM_CPPFLAGS) $(CPPFLAGS)
+
+lint:
+ $(LINT) $(ALL_LINT_FLAGS) $(libXau_la_SOURCES)
+endif LINT
+
+if MAKE_LINT_LIB
+lintlibdir = $(libdir)
+
+lintlib_DATA = $(LINTLIB)
+
+$(LINTLIB): $(libXau_la_SOURCES)
+ $(LINT) -y -oXau -x $(ALL_LINT_FLAGS) $(libXau_la_SOURCES)
+endif MAKE_LINT_LIB
+
+CLEANFILES = $(lintlib_DATA)
+MAINTAINERCLEANFILES = ChangeLog INSTALL
+
+.PHONY: ChangeLog INSTALL
+
+INSTALL:
+ $(INSTALL_CMD)
+
+ChangeLog:
+ $(CHANGELOG_CMD)
+
+dist-hook: ChangeLog INSTALL
diff --git a/libXau/autogen.sh b/libXau/autogen.sh
index 6fcae015c..904cd6746 100644
--- a/libXau/autogen.sh
+++ b/libXau/autogen.sh
@@ -1,12 +1,12 @@
-#! /bin/sh
-
-srcdir=`dirname $0`
-test -z "$srcdir" && srcdir=.
-
-ORIGDIR=`pwd`
-cd $srcdir
-
-autoreconf -v --install || exit 1
-cd $ORIGDIR || exit $?
-
-$srcdir/configure --enable-maintainer-mode "$@"
+#! /bin/sh
+
+srcdir=`dirname $0`
+test -z "$srcdir" && srcdir=.
+
+ORIGDIR=`pwd`
+cd $srcdir
+
+autoreconf -v --install || exit 1
+cd $ORIGDIR || exit $?
+
+$srcdir/configure --enable-maintainer-mode "$@"
diff --git a/libXau/man/Makefile.am b/libXau/man/Makefile.am
index 694c376b0..4becb8acc 100644
--- a/libXau/man/Makefile.am
+++ b/libXau/man/Makefile.am
@@ -1,47 +1,47 @@
-#
-# Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved.
-#
-# Permission is hereby granted, free of charge, to any person obtaining a
-# copy of this software and associated documentation files (the "Software"),
-# to deal in the Software without restriction, including without limitation
-# the rights to use, copy, modify, merge, publish, distribute, sublicense,
-# and/or sell copies of the Software, and to permit persons to whom the
-# Software is furnished to do so, subject to the following conditions:
-#
-# The above copyright notice and this permission notice (including the next
-# paragraph) shall be included in all copies or substantial portions of the
-# Software.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-# THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-# DEALINGS IN THE SOFTWARE.
-#
-
-libmandir = $(LIB_MAN_DIR)
-
-libman_PRE = \
- Xau.man \
- XauDisposeAuth.man \
- XauFileName.man \
- XauGetAuthByAddr.man \
- XauGetBestAuthByAddr.man \
- XauLockAuth.man \
- XauReadAuth.man \
- XauUnlockAuth.man \
- XauWriteAuth.man
-
-libman_DATA = $(libman_PRE:man=$(LIB_MAN_SUFFIX))
-
-EXTRA_DIST = $(libman_PRE)
-
-CLEANFILES = $(libman_DATA)
-
-# String replacements in MAN_SUBSTS now come from xorg-macros.m4 via configure
-SUFFIXES = .$(LIB_MAN_SUFFIX) .man
-
-.man.$(LIB_MAN_SUFFIX):
- $(AM_V_GEN)$(SED) $(MAN_SUBSTS) < $< > $@
+#
+# Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved.
+#
+# Permission is hereby granted, free of charge, to any person obtaining a
+# copy of this software and associated documentation files (the "Software"),
+# to deal in the Software without restriction, including without limitation
+# the rights to use, copy, modify, merge, publish, distribute, sublicense,
+# and/or sell copies of the Software, and to permit persons to whom the
+# Software is furnished to do so, subject to the following conditions:
+#
+# The above copyright notice and this permission notice (including the next
+# paragraph) shall be included in all copies or substantial portions of the
+# Software.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+# THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+# DEALINGS IN THE SOFTWARE.
+#
+
+libmandir = $(LIB_MAN_DIR)
+
+libman_PRE = \
+ Xau.man \
+ XauDisposeAuth.man \
+ XauFileName.man \
+ XauGetAuthByAddr.man \
+ XauGetBestAuthByAddr.man \
+ XauLockAuth.man \
+ XauReadAuth.man \
+ XauUnlockAuth.man \
+ XauWriteAuth.man
+
+libman_DATA = $(libman_PRE:man=$(LIB_MAN_SUFFIX))
+
+EXTRA_DIST = $(libman_PRE)
+
+CLEANFILES = $(libman_DATA)
+
+# String replacements in MAN_SUBSTS now come from xorg-macros.m4 via configure
+SUFFIXES = .$(LIB_MAN_SUFFIX) .man
+
+.man.$(LIB_MAN_SUFFIX):
+ $(AM_V_GEN)$(SED) $(MAN_SUBSTS) < $< > $@
diff --git a/libXau/man/XauDisposeAuth.man b/libXau/man/XauDisposeAuth.man
index d20306a06..df111d626 100644
--- a/libXau/man/XauDisposeAuth.man
+++ b/libXau/man/XauDisposeAuth.man
@@ -1 +1 @@
-.so man__libmansuffix__/Xau.__libmansuffix__
+.so man__libmansuffix__/Xau.__libmansuffix__
diff --git a/libXau/man/XauFileName.man b/libXau/man/XauFileName.man
index d20306a06..df111d626 100644
--- a/libXau/man/XauFileName.man
+++ b/libXau/man/XauFileName.man
@@ -1 +1 @@
-.so man__libmansuffix__/Xau.__libmansuffix__
+.so man__libmansuffix__/Xau.__libmansuffix__
diff --git a/libXau/man/XauGetAuthByAddr.man b/libXau/man/XauGetAuthByAddr.man
index d20306a06..df111d626 100644
--- a/libXau/man/XauGetAuthByAddr.man
+++ b/libXau/man/XauGetAuthByAddr.man
@@ -1 +1 @@
-.so man__libmansuffix__/Xau.__libmansuffix__
+.so man__libmansuffix__/Xau.__libmansuffix__
diff --git a/libXau/man/XauGetBestAuthByAddr.man b/libXau/man/XauGetBestAuthByAddr.man
index d20306a06..df111d626 100644
--- a/libXau/man/XauGetBestAuthByAddr.man
+++ b/libXau/man/XauGetBestAuthByAddr.man
@@ -1 +1 @@
-.so man__libmansuffix__/Xau.__libmansuffix__
+.so man__libmansuffix__/Xau.__libmansuffix__
diff --git a/libXau/man/XauLockAuth.man b/libXau/man/XauLockAuth.man
index d20306a06..df111d626 100644
--- a/libXau/man/XauLockAuth.man
+++ b/libXau/man/XauLockAuth.man
@@ -1 +1 @@
-.so man__libmansuffix__/Xau.__libmansuffix__
+.so man__libmansuffix__/Xau.__libmansuffix__
diff --git a/libXau/man/XauReadAuth.man b/libXau/man/XauReadAuth.man
index d20306a06..df111d626 100644
--- a/libXau/man/XauReadAuth.man
+++ b/libXau/man/XauReadAuth.man
@@ -1 +1 @@
-.so man__libmansuffix__/Xau.__libmansuffix__
+.so man__libmansuffix__/Xau.__libmansuffix__
diff --git a/libXau/man/XauUnlockAuth.man b/libXau/man/XauUnlockAuth.man
index d20306a06..df111d626 100644
--- a/libXau/man/XauUnlockAuth.man
+++ b/libXau/man/XauUnlockAuth.man
@@ -1 +1 @@
-.so man__libmansuffix__/Xau.__libmansuffix__
+.so man__libmansuffix__/Xau.__libmansuffix__
diff --git a/libXau/man/XauWriteAuth.man b/libXau/man/XauWriteAuth.man
index d20306a06..df111d626 100644
--- a/libXau/man/XauWriteAuth.man
+++ b/libXau/man/XauWriteAuth.man
@@ -1 +1 @@
-.so man__libmansuffix__/Xau.__libmansuffix__
+.so man__libmansuffix__/Xau.__libmansuffix__
diff --git a/libXau/xau.pc.in b/libXau/xau.pc.in
index 1c724e4b2..cda113a27 100644
--- a/libXau/xau.pc.in
+++ b/libXau/xau.pc.in
@@ -1,11 +1,11 @@
-prefix=@prefix@
-exec_prefix=@exec_prefix@
-libdir=@libdir@
-includedir=@includedir@
-
-Name: Xau
-Description: X authorization file management libary
-Version: @PACKAGE_VERSION@
-Requires: xproto
-Cflags: -I${includedir}
-Libs: -L${libdir} -lXau
+prefix=@prefix@
+exec_prefix=@exec_prefix@
+libdir=@libdir@
+includedir=@includedir@
+
+Name: Xau
+Description: X authorization file management libary
+Version: @PACKAGE_VERSION@
+Requires: xproto
+Cflags: -I${includedir}
+Libs: -L${libdir} -lXau
diff --git a/libXdmcp/.gitignore b/libXdmcp/.gitignore
index ba66f132b..07ac69ef1 100644
--- a/libXdmcp/.gitignore
+++ b/libXdmcp/.gitignore
@@ -1,78 +1,78 @@
-#
-# X.Org module default exclusion patterns
-# The next section if for module specific patterns
-#
-# Do not edit the following section
-# GNU Build System (Autotools)
-aclocal.m4
-autom4te.cache/
-autoscan.log
-ChangeLog
-compile
-config.guess
-config.h
-config.h.in
-config.log
-config-ml.in
-config.py
-config.status
-config.status.lineno
-config.sub
-configure
-configure.scan
-depcomp
-.deps/
-INSTALL
-install-sh
-.libs/
-libtool
-libtool.m4
-ltmain.sh
-lt~obsolete.m4
-ltoptions.m4
-ltsugar.m4
-ltversion.m4
-Makefile
-Makefile.in
-mdate-sh
-missing
-mkinstalldirs
-*.pc
-py-compile
-stamp-h?
-symlink-tree
-texinfo.tex
-ylwrap
-
-# Do not edit the following section
-# Edit Compile Debug Document Distribute
-*~
-*.[0-9]
-*.[0-9]x
-*.bak
-*.bin
-core
-*.dll
-*.exe
-*-ISO*.bdf
-*-JIS*.bdf
-*-KOI8*.bdf
-*.kld
-*.ko
-*.ko.cmd
-*.lai
-*.l[oa]
-*.[oa]
-*.obj
-*.patch
-*.so
-*.pcf.gz
-*.pdb
-*.tar.bz2
-*.tar.gz
-#
-# Add & Override patterns for libXdmcp
-#
-# Edit the following section as needed
-# For example, !report.pc overrides *.pc. See 'man gitignore'
-#
+#
+# X.Org module default exclusion patterns
+# The next section if for module specific patterns
+#
+# Do not edit the following section
+# GNU Build System (Autotools)
+aclocal.m4
+autom4te.cache/
+autoscan.log
+ChangeLog
+compile
+config.guess
+config.h
+config.h.in
+config.log
+config-ml.in
+config.py
+config.status
+config.status.lineno
+config.sub
+configure
+configure.scan
+depcomp
+.deps/
+INSTALL
+install-sh
+.libs/
+libtool
+libtool.m4
+ltmain.sh
+lt~obsolete.m4
+ltoptions.m4
+ltsugar.m4
+ltversion.m4
+Makefile
+Makefile.in
+mdate-sh
+missing
+mkinstalldirs
+*.pc
+py-compile
+stamp-h?
+symlink-tree
+texinfo.tex
+ylwrap
+
+# Do not edit the following section
+# Edit Compile Debug Document Distribute
+*~
+*.[0-9]
+*.[0-9]x
+*.bak
+*.bin
+core
+*.dll
+*.exe
+*-ISO*.bdf
+*-JIS*.bdf
+*-KOI8*.bdf
+*.kld
+*.ko
+*.ko.cmd
+*.lai
+*.l[oa]
+*.[oa]
+*.obj
+*.patch
+*.so
+*.pcf.gz
+*.pdb
+*.tar.bz2
+*.tar.gz
+#
+# Add & Override patterns for libXdmcp
+#
+# Edit the following section as needed
+# For example, !report.pc overrides *.pc. See 'man gitignore'
+#
diff --git a/libXdmcp/AUTHORS b/libXdmcp/AUTHORS
index cf90d230d..0364123c6 100644
--- a/libXdmcp/AUTHORS
+++ b/libXdmcp/AUTHORS
@@ -1,8 +1,8 @@
-Keith Packard, MIT X Consortium
-
-Significant contributions by David Rosenthal of Sun who examined the protocol
-for security issues.
-
-GNU/Hurd support, Marcus Brinkmann
-
-Our apologies if we have inadvertantly overlooked anyone.
+Keith Packard, MIT X Consortium
+
+Significant contributions by David Rosenthal of Sun who examined the protocol
+for security issues.
+
+GNU/Hurd support, Marcus Brinkmann
+
+Our apologies if we have inadvertantly overlooked anyone.
diff --git a/libXdmcp/Array.c b/libXdmcp/Array.c
index a9069b09a..8862773b9 100644
--- a/libXdmcp/Array.c
+++ b/libXdmcp/Array.c
@@ -1,247 +1,247 @@
-/*
-Copyright 1989, 1998 The Open Group
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall not be
-used in advertising or otherwise to promote the sale, use or other dealings
-in this Software without prior written authorization from The Open Group.
- *
- * Author: Keith Packard, MIT X Consortium
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include <X11/Xos.h>
-#include <X11/X.h>
-#include <X11/Xmd.h>
-#include <X11/Xdmcp.h>
-#include <stdint.h>
-#include <stdlib.h>
-
-/*
- * This variant of malloc does not return NULL if zero size is passed into.
- */
-static void *
-xmalloc(size_t size)
-{
- return malloc(size ? size : 1);
-}
-
-/*
- * This variant of realloc does not return NULL if zero size is passed into
- */
-static void *
-xrealloc(void *ptr, size_t size)
-{
- return realloc(ptr, size ? size : 1);
-}
-
-int
-XdmcpAllocARRAY8 (ARRAY8Ptr array, int length)
-{
- CARD8Ptr newData;
-
- /* length defined in ARRAY8 struct is a CARD16 (not CARD8 like the rest) */
- if (length > UINT16_MAX)
- return FALSE;
-
- newData = (CARD8Ptr) xmalloc(length * sizeof (CARD8));
- if (!newData)
- return FALSE;
- array->length = (CARD16) length;
- array->data = newData;
- return TRUE;
-}
-
-int
-XdmcpAllocARRAY16 (ARRAY16Ptr array, int length)
-{
- CARD16Ptr newData;
-
- /* length defined in ARRAY16 struct is a CARD8 */
- if (length > UINT8_MAX)
- return FALSE;
-
- newData = (CARD16Ptr) xmalloc(length * sizeof (CARD16));
- if (!newData)
- return FALSE;
- array->length = (CARD8) length;
- array->data = newData;
- return TRUE;
-}
-
-int
-XdmcpAllocARRAY32 (ARRAY32Ptr array, int length)
-{
- CARD32Ptr newData;
-
- /* length defined in ARRAY32 struct is a CARD8 */
- if (length > UINT8_MAX)
- return FALSE;
-
- newData = (CARD32Ptr) xmalloc(length * sizeof (CARD32));
- if (!newData)
- return FALSE;
- array->length = (CARD8) length;
- array->data = newData;
- return TRUE;
-}
-
-int
-XdmcpAllocARRAYofARRAY8 (ARRAYofARRAY8Ptr array, int length)
-{
- ARRAY8Ptr newData;
-
- /* length defined in ARRAYofARRAY8 struct is a CARD8 */
- if (length > UINT8_MAX)
- return FALSE;
-
- newData = (ARRAY8Ptr) xmalloc(length * sizeof (ARRAY8));
- if (!newData)
- return FALSE;
- array->length = (CARD8) length;
- array->data = newData;
- return TRUE;
-}
-
-int
-XdmcpARRAY8Equal (const ARRAY8Ptr array1, const ARRAY8Ptr array2)
-{
- if (array1->length != array2->length)
- return FALSE;
- if (memcmp(array1->data, array2->data, array1->length) != 0)
- return FALSE;
- return TRUE;
-}
-
-int
-XdmcpCopyARRAY8 (const ARRAY8Ptr src, ARRAY8Ptr dst)
-{
- dst->length = src->length;
- dst->data = (CARD8 *) xmalloc(dst->length * sizeof (CARD8));
- if (!dst->data)
- return FALSE;
- memmove (dst->data, src->data, src->length * sizeof (CARD8));
- return TRUE;
-}
-
-int
-XdmcpReallocARRAY8 (ARRAY8Ptr array, int length)
-{
- CARD8Ptr newData;
-
- /* length defined in ARRAY8 struct is a CARD16 (not CARD8 like the rest) */
- if (length > UINT16_MAX)
- return FALSE;
-
- newData = (CARD8Ptr) xrealloc(array->data, length * sizeof (CARD8));
- if (!newData)
- return FALSE;
- array->length = (CARD16) length;
- array->data = newData;
- return TRUE;
-}
-
-int
-XdmcpReallocARRAYofARRAY8 (ARRAYofARRAY8Ptr array, int length)
-{
- ARRAY8Ptr newData;
-
- /* length defined in ARRAYofARRAY8 struct is a CARD8 */
- if (length > UINT8_MAX)
- return FALSE;
-
- newData = (ARRAY8Ptr) xrealloc(array->data, length * sizeof (ARRAY8));
- if (!newData)
- return FALSE;
- array->length = (CARD8) length;
- array->data = newData;
- return TRUE;
-}
-
-int
-XdmcpReallocARRAY16 (ARRAY16Ptr array, int length)
-{
- CARD16Ptr newData;
-
- /* length defined in ARRAY16 struct is a CARD8 */
- if (length > UINT8_MAX)
- return FALSE;
- newData = (CARD16Ptr) xrealloc(array->data, length * sizeof (CARD16));
- if (!newData)
- return FALSE;
- array->length = (CARD8) length;
- array->data = newData;
- return TRUE;
-}
-
-int
-XdmcpReallocARRAY32 (ARRAY32Ptr array, int length)
-{
- CARD32Ptr newData;
-
- /* length defined in ARRAY32 struct is a CARD8 */
- if (length > UINT8_MAX)
- return FALSE;
-
- newData = (CARD32Ptr) xrealloc(array->data, length * sizeof (CARD32));
- if (!newData)
- return FALSE;
- array->length = (CARD8) length;
- array->data = newData;
- return TRUE;
-}
-
-void
-XdmcpDisposeARRAY8 (ARRAY8Ptr array)
-{
- free(array->data);
- array->length = 0;
- array->data = NULL;
-}
-
-void
-XdmcpDisposeARRAY16 (ARRAY16Ptr array)
-{
- free(array->data);
- array->length = 0;
- array->data = NULL;
-}
-
-void
-XdmcpDisposeARRAY32 (ARRAY32Ptr array)
-{
- free(array->data);
- array->length = 0;
- array->data = NULL;
-}
-
-void
-XdmcpDisposeARRAYofARRAY8 (ARRAYofARRAY8Ptr array)
-{
- int i;
-
- if (array->data != NULL) {
- for (i = 0; i < (int)array->length; i++)
- XdmcpDisposeARRAY8 (&array->data[i]);
- free(array->data);
- }
- array->length = 0;
- array->data = NULL;
-}
+/*
+Copyright 1989, 1998 The Open Group
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group shall not be
+used in advertising or otherwise to promote the sale, use or other dealings
+in this Software without prior written authorization from The Open Group.
+ *
+ * Author: Keith Packard, MIT X Consortium
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include <X11/Xos.h>
+#include <X11/X.h>
+#include <X11/Xmd.h>
+#include <X11/Xdmcp.h>
+#include <stdint.h>
+#include <stdlib.h>
+
+/*
+ * This variant of malloc does not return NULL if zero size is passed into.
+ */
+static void *
+xmalloc(size_t size)
+{
+ return malloc(size ? size : 1);
+}
+
+/*
+ * This variant of realloc does not return NULL if zero size is passed into
+ */
+static void *
+xrealloc(void *ptr, size_t size)
+{
+ return realloc(ptr, size ? size : 1);
+}
+
+int
+XdmcpAllocARRAY8 (ARRAY8Ptr array, int length)
+{
+ CARD8Ptr newData;
+
+ /* length defined in ARRAY8 struct is a CARD16 (not CARD8 like the rest) */
+ if (length > UINT16_MAX)
+ return FALSE;
+
+ newData = (CARD8Ptr) xmalloc(length * sizeof (CARD8));
+ if (!newData)
+ return FALSE;
+ array->length = (CARD16) length;
+ array->data = newData;
+ return TRUE;
+}
+
+int
+XdmcpAllocARRAY16 (ARRAY16Ptr array, int length)
+{
+ CARD16Ptr newData;
+
+ /* length defined in ARRAY16 struct is a CARD8 */
+ if (length > UINT8_MAX)
+ return FALSE;
+
+ newData = (CARD16Ptr) xmalloc(length * sizeof (CARD16));
+ if (!newData)
+ return FALSE;
+ array->length = (CARD8) length;
+ array->data = newData;
+ return TRUE;
+}
+
+int
+XdmcpAllocARRAY32 (ARRAY32Ptr array, int length)
+{
+ CARD32Ptr newData;
+
+ /* length defined in ARRAY32 struct is a CARD8 */
+ if (length > UINT8_MAX)
+ return FALSE;
+
+ newData = (CARD32Ptr) xmalloc(length * sizeof (CARD32));
+ if (!newData)
+ return FALSE;
+ array->length = (CARD8) length;
+ array->data = newData;
+ return TRUE;
+}
+
+int
+XdmcpAllocARRAYofARRAY8 (ARRAYofARRAY8Ptr array, int length)
+{
+ ARRAY8Ptr newData;
+
+ /* length defined in ARRAYofARRAY8 struct is a CARD8 */
+ if (length > UINT8_MAX)
+ return FALSE;
+
+ newData = (ARRAY8Ptr) xmalloc(length * sizeof (ARRAY8));
+ if (!newData)
+ return FALSE;
+ array->length = (CARD8) length;
+ array->data = newData;
+ return TRUE;
+}
+
+int
+XdmcpARRAY8Equal (const ARRAY8Ptr array1, const ARRAY8Ptr array2)
+{
+ if (array1->length != array2->length)
+ return FALSE;
+ if (memcmp(array1->data, array2->data, array1->length) != 0)
+ return FALSE;
+ return TRUE;
+}
+
+int
+XdmcpCopyARRAY8 (const ARRAY8Ptr src, ARRAY8Ptr dst)
+{
+ dst->length = src->length;
+ dst->data = (CARD8 *) xmalloc(dst->length * sizeof (CARD8));
+ if (!dst->data)
+ return FALSE;
+ memmove (dst->data, src->data, src->length * sizeof (CARD8));
+ return TRUE;
+}
+
+int
+XdmcpReallocARRAY8 (ARRAY8Ptr array, int length)
+{
+ CARD8Ptr newData;
+
+ /* length defined in ARRAY8 struct is a CARD16 (not CARD8 like the rest) */
+ if (length > UINT16_MAX)
+ return FALSE;
+
+ newData = (CARD8Ptr) xrealloc(array->data, length * sizeof (CARD8));
+ if (!newData)
+ return FALSE;
+ array->length = (CARD16) length;
+ array->data = newData;
+ return TRUE;
+}
+
+int
+XdmcpReallocARRAYofARRAY8 (ARRAYofARRAY8Ptr array, int length)
+{
+ ARRAY8Ptr newData;
+
+ /* length defined in ARRAYofARRAY8 struct is a CARD8 */
+ if (length > UINT8_MAX)
+ return FALSE;
+
+ newData = (ARRAY8Ptr) xrealloc(array->data, length * sizeof (ARRAY8));
+ if (!newData)
+ return FALSE;
+ array->length = (CARD8) length;
+ array->data = newData;
+ return TRUE;
+}
+
+int
+XdmcpReallocARRAY16 (ARRAY16Ptr array, int length)
+{
+ CARD16Ptr newData;
+
+ /* length defined in ARRAY16 struct is a CARD8 */
+ if (length > UINT8_MAX)
+ return FALSE;
+ newData = (CARD16Ptr) xrealloc(array->data, length * sizeof (CARD16));
+ if (!newData)
+ return FALSE;
+ array->length = (CARD8) length;
+ array->data = newData;
+ return TRUE;
+}
+
+int
+XdmcpReallocARRAY32 (ARRAY32Ptr array, int length)
+{
+ CARD32Ptr newData;
+
+ /* length defined in ARRAY32 struct is a CARD8 */
+ if (length > UINT8_MAX)
+ return FALSE;
+
+ newData = (CARD32Ptr) xrealloc(array->data, length * sizeof (CARD32));
+ if (!newData)
+ return FALSE;
+ array->length = (CARD8) length;
+ array->data = newData;
+ return TRUE;
+}
+
+void
+XdmcpDisposeARRAY8 (ARRAY8Ptr array)
+{
+ free(array->data);
+ array->length = 0;
+ array->data = NULL;
+}
+
+void
+XdmcpDisposeARRAY16 (ARRAY16Ptr array)
+{
+ free(array->data);
+ array->length = 0;
+ array->data = NULL;
+}
+
+void
+XdmcpDisposeARRAY32 (ARRAY32Ptr array)
+{
+ free(array->data);
+ array->length = 0;
+ array->data = NULL;
+}
+
+void
+XdmcpDisposeARRAYofARRAY8 (ARRAYofARRAY8Ptr array)
+{
+ int i;
+
+ if (array->data != NULL) {
+ for (i = 0; i < (int)array->length; i++)
+ XdmcpDisposeARRAY8 (&array->data[i]);
+ free(array->data);
+ }
+ array->length = 0;
+ array->data = NULL;
+}
diff --git a/libXdmcp/COPYING b/libXdmcp/COPYING
index 8fbc421a4..5532d143c 100644
--- a/libXdmcp/COPYING
+++ b/libXdmcp/COPYING
@@ -1,23 +1,23 @@
-Copyright 1989, 1998 The Open Group
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall not be
-used in advertising or otherwise to promote the sale, use or other dealings
-in this Software without prior written authorization from The Open Group.
-
-Author: Keith Packard, MIT X Consortium
+Copyright 1989, 1998 The Open Group
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group shall not be
+used in advertising or otherwise to promote the sale, use or other dealings
+in this Software without prior written authorization from The Open Group.
+
+Author: Keith Packard, MIT X Consortium
diff --git a/libXdmcp/Fill.c b/libXdmcp/Fill.c
index 2ff3cbbcc..98c324f45 100644
--- a/libXdmcp/Fill.c
+++ b/libXdmcp/Fill.c
@@ -1,90 +1,90 @@
-/*
-Copyright 1989, 1998 The Open Group
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall not be
-used in advertising or otherwise to promote the sale, use or other dealings
-in this Software without prior written authorization from The Open Group.
- * *
- * Author: Keith Packard, MIT X Consortium
- */
-
-#ifdef WIN32
-#define _WILLWINSOCK_
-#endif
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include <X11/Xos.h>
-#include <X11/X.h>
-#include <X11/Xmd.h>
-#include <X11/Xdmcp.h>
-#include <stdlib.h>
-
-#ifdef STREAMSCONN
-#include <tiuser.h>
-#else
-#ifdef WIN32
-#include <X11/Xwinsock.h>
-#else
-#include <sys/socket.h>
-#endif
-#endif
-
-int
-XdmcpFill (int fd, XdmcpBufferPtr buffer, XdmcpNetaddr from, int *fromlen)
-{
- BYTE *newBuf;
-#ifdef STREAMSCONN
- struct t_unitdata dataunit;
- int gotallflag, result;
-#endif
-
- if (buffer->size < XDM_MAX_MSGLEN)
- {
- newBuf = (BYTE *) malloc(XDM_MAX_MSGLEN);
- if (newBuf)
- {
- free(buffer->data);
- buffer->data = newBuf;
- buffer->size = XDM_MAX_MSGLEN;
- }
- }
- buffer->pointer = 0;
-#ifdef STREAMSCONN
- dataunit.addr.buf = from;
- dataunit.addr.maxlen = *fromlen;
- dataunit.opt.maxlen = 0; /* don't care to know about options */
- dataunit.udata.buf = (char *)buffer->data;
- dataunit.udata.maxlen = buffer->size;
- result = t_rcvudata (fd, &dataunit, &gotallflag);
- if (result < 0) {
- return FALSE;
- }
- buffer->count = dataunit.udata.len;
- *fromlen = dataunit.addr.len;
-#else
- buffer->count = recvfrom (fd, (char*)buffer->data, buffer->size, 0,
- (struct sockaddr *)from, (void *)fromlen);
-#endif
- if (buffer->count < 6) {
- buffer->count = 0;
- return FALSE;
- }
- return TRUE;
-}
+/*
+Copyright 1989, 1998 The Open Group
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group shall not be
+used in advertising or otherwise to promote the sale, use or other dealings
+in this Software without prior written authorization from The Open Group.
+ * *
+ * Author: Keith Packard, MIT X Consortium
+ */
+
+#ifdef WIN32
+#define _WILLWINSOCK_
+#endif
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include <X11/Xos.h>
+#include <X11/X.h>
+#include <X11/Xmd.h>
+#include <X11/Xdmcp.h>
+#include <stdlib.h>
+
+#ifdef STREAMSCONN
+#include <tiuser.h>
+#else
+#ifdef WIN32
+#include <X11/Xwinsock.h>
+#else
+#include <sys/socket.h>
+#endif
+#endif
+
+int
+XdmcpFill (int fd, XdmcpBufferPtr buffer, XdmcpNetaddr from, int *fromlen)
+{
+ BYTE *newBuf;
+#ifdef STREAMSCONN
+ struct t_unitdata dataunit;
+ int gotallflag, result;
+#endif
+
+ if (buffer->size < XDM_MAX_MSGLEN)
+ {
+ newBuf = (BYTE *) malloc(XDM_MAX_MSGLEN);
+ if (newBuf)
+ {
+ free(buffer->data);
+ buffer->data = newBuf;
+ buffer->size = XDM_MAX_MSGLEN;
+ }
+ }
+ buffer->pointer = 0;
+#ifdef STREAMSCONN
+ dataunit.addr.buf = from;
+ dataunit.addr.maxlen = *fromlen;
+ dataunit.opt.maxlen = 0; /* don't care to know about options */
+ dataunit.udata.buf = (char *)buffer->data;
+ dataunit.udata.maxlen = buffer->size;
+ result = t_rcvudata (fd, &dataunit, &gotallflag);
+ if (result < 0) {
+ return FALSE;
+ }
+ buffer->count = dataunit.udata.len;
+ *fromlen = dataunit.addr.len;
+#else
+ buffer->count = recvfrom (fd, (char*)buffer->data, buffer->size, 0,
+ (struct sockaddr *)from, (void *)fromlen);
+#endif
+ if (buffer->count < 6) {
+ buffer->count = 0;
+ return FALSE;
+ }
+ return TRUE;
+}
diff --git a/libXdmcp/Flush.c b/libXdmcp/Flush.c
index 1763657ba..cdcd1f096 100644
--- a/libXdmcp/Flush.c
+++ b/libXdmcp/Flush.c
@@ -1,70 +1,70 @@
-/*
-Copyright 1989, 1998 The Open Group
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall not be
-used in advertising or otherwise to promote the sale, use or other dealings
-in this Software without prior written authorization from The Open Group.
- * *
- * Author: Keith Packard, MIT X Consortium
- */
-
-#ifdef WIN32
-#define _WILLWINSOCK_
-#endif
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include <X11/Xos.h>
-#include <X11/X.h>
-#include <X11/Xmd.h>
-#include <X11/Xdmcp.h>
-
-#ifdef STREAMSCONN
-#include <tiuser.h>
-#else
-#ifdef WIN32
-#include <X11/Xwinsock.h>
-#else
-#include <sys/socket.h>
-#endif
-#endif
-
-int
-XdmcpFlush (int fd, XdmcpBufferPtr buffer, XdmcpNetaddr to, int tolen)
-{
- int result;
-#ifdef STREAMSCONN
- struct t_unitdata dataunit;
-
- dataunit.addr.buf = to;
- dataunit.addr.len = tolen;
- dataunit.opt.len = 0; /* default options */
- dataunit.udata.buf = (char *)buffer->data;
- dataunit.udata.len = buffer->pointer;
- result = t_sndudata(fd, &dataunit);
- if (result < 0)
- return FALSE;
-#else
- result = sendto (fd, (char *)buffer->data, buffer->pointer, 0,
- (struct sockaddr *)to, tolen);
- if (result != buffer->pointer)
- return FALSE;
-#endif
- return TRUE;
-}
+/*
+Copyright 1989, 1998 The Open Group
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group shall not be
+used in advertising or otherwise to promote the sale, use or other dealings
+in this Software without prior written authorization from The Open Group.
+ * *
+ * Author: Keith Packard, MIT X Consortium
+ */
+
+#ifdef WIN32
+#define _WILLWINSOCK_
+#endif
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include <X11/Xos.h>
+#include <X11/X.h>
+#include <X11/Xmd.h>
+#include <X11/Xdmcp.h>
+
+#ifdef STREAMSCONN
+#include <tiuser.h>
+#else
+#ifdef WIN32
+#include <X11/Xwinsock.h>
+#else
+#include <sys/socket.h>
+#endif
+#endif
+
+int
+XdmcpFlush (int fd, XdmcpBufferPtr buffer, XdmcpNetaddr to, int tolen)
+{
+ int result;
+#ifdef STREAMSCONN
+ struct t_unitdata dataunit;
+
+ dataunit.addr.buf = to;
+ dataunit.addr.len = tolen;
+ dataunit.opt.len = 0; /* default options */
+ dataunit.udata.buf = (char *)buffer->data;
+ dataunit.udata.len = buffer->pointer;
+ result = t_sndudata(fd, &dataunit);
+ if (result < 0)
+ return FALSE;
+#else
+ result = sendto (fd, (char *)buffer->data, buffer->pointer, 0,
+ (struct sockaddr *)to, tolen);
+ if (result != buffer->pointer)
+ return FALSE;
+#endif
+ return TRUE;
+}
diff --git a/libXdmcp/Key.c b/libXdmcp/Key.c
index 227de7de9..995ec2ae6 100644
--- a/libXdmcp/Key.c
+++ b/libXdmcp/Key.c
@@ -1,96 +1,96 @@
-/*
-Copyright 1989, 1998 The Open Group
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall not be
-used in advertising or otherwise to promote the sale, use or other dealings
-in this Software without prior written authorization from The Open Group.
- *
- * Author: Keith Packard, MIT X Consortium
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include <X11/Xos.h>
-#include <X11/X.h>
-#include <X11/Xmd.h>
-#include <X11/Xdmcp.h>
-
-static void
-getbits (long data, unsigned char *dst)
-{
- dst[0] = (data ) & 0xff;
- dst[1] = (data >> 8) & 0xff;
- dst[2] = (data >> 16) & 0xff;
- dst[3] = (data >> 24) & 0xff;
-}
-
-#define Time_t time_t
-
-#include <stdlib.h>
-
-#if defined(HAVE_LRAND48) && defined(HAVE_SRAND48)
-#define srandom srand48
-#define random lrand48
-#endif
-
-void
-XdmcpGenerateKey (XdmAuthKeyPtr key)
-{
- long lowbits, highbits;
-
- srandom ((int)getpid() ^ time((Time_t *)0));
- lowbits = random ();
- highbits = random ();
- getbits (lowbits, key->data);
- getbits (highbits, key->data + 4);
-}
-
-int
-XdmcpCompareKeys (const XdmAuthKeyPtr a, const XdmAuthKeyPtr b)
-{
- int i;
-
- for (i = 0; i < 8; i++)
- if (a->data[i] != b->data[i])
- return FALSE;
- return TRUE;
-}
-
-void
-XdmcpIncrementKey (XdmAuthKeyPtr key)
-{
- int i;
-
- i = 7;
- while (++key->data[i] == 0)
- if (--i < 0)
- break;
-}
-
-void
-XdmcpDecrementKey (XdmAuthKeyPtr key)
-{
- int i;
-
- i = 7;
- while (key->data[i]-- == 0)
- if (--i < 0)
- break;
-}
+/*
+Copyright 1989, 1998 The Open Group
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group shall not be
+used in advertising or otherwise to promote the sale, use or other dealings
+in this Software without prior written authorization from The Open Group.
+ *
+ * Author: Keith Packard, MIT X Consortium
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include <X11/Xos.h>
+#include <X11/X.h>
+#include <X11/Xmd.h>
+#include <X11/Xdmcp.h>
+
+static void
+getbits (long data, unsigned char *dst)
+{
+ dst[0] = (data ) & 0xff;
+ dst[1] = (data >> 8) & 0xff;
+ dst[2] = (data >> 16) & 0xff;
+ dst[3] = (data >> 24) & 0xff;
+}
+
+#define Time_t time_t
+
+#include <stdlib.h>
+
+#if defined(HAVE_LRAND48) && defined(HAVE_SRAND48)
+#define srandom srand48
+#define random lrand48
+#endif
+
+void
+XdmcpGenerateKey (XdmAuthKeyPtr key)
+{
+ long lowbits, highbits;
+
+ srandom ((int)getpid() ^ time((Time_t *)0));
+ lowbits = random ();
+ highbits = random ();
+ getbits (lowbits, key->data);
+ getbits (highbits, key->data + 4);
+}
+
+int
+XdmcpCompareKeys (const XdmAuthKeyPtr a, const XdmAuthKeyPtr b)
+{
+ int i;
+
+ for (i = 0; i < 8; i++)
+ if (a->data[i] != b->data[i])
+ return FALSE;
+ return TRUE;
+}
+
+void
+XdmcpIncrementKey (XdmAuthKeyPtr key)
+{
+ int i;
+
+ i = 7;
+ while (++key->data[i] == 0)
+ if (--i < 0)
+ break;
+}
+
+void
+XdmcpDecrementKey (XdmAuthKeyPtr key)
+{
+ int i;
+
+ i = 7;
+ while (key->data[i]-- == 0)
+ if (--i < 0)
+ break;
+}
diff --git a/libXdmcp/README b/libXdmcp/README
index 441a11428..7ba85f043 100644
--- a/libXdmcp/README
+++ b/libXdmcp/README
@@ -1,25 +1,25 @@
-libXdmcp - X Display Manager Control Protocol library
-
-All questions regarding this software should be directed at the
-Xorg mailing list:
-
- http://lists.freedesktop.org/mailman/listinfo/xorg
-
-Please submit bug reports to the Xorg bugzilla:
-
- https://bugs.freedesktop.org/enter_bug.cgi?product=xorg
-
-The master development code repository can be found at:
-
- git://anongit.freedesktop.org/git/xorg/lib/libXdmcp
-
- http://cgit.freedesktop.org/xorg/lib/libXdmcp
-
-For patch submission instructions, see:
-
- http://www.x.org/wiki/Development/Documentation/SubmittingPatches
-
-For more information on the git code manager, see:
-
- http://wiki.x.org/wiki/GitPage
-
+libXdmcp - X Display Manager Control Protocol library
+
+All questions regarding this software should be directed at the
+Xorg mailing list:
+
+ http://lists.freedesktop.org/mailman/listinfo/xorg
+
+Please submit bug reports to the Xorg bugzilla:
+
+ https://bugs.freedesktop.org/enter_bug.cgi?product=xorg
+
+The master development code repository can be found at:
+
+ git://anongit.freedesktop.org/git/xorg/lib/libXdmcp
+
+ http://cgit.freedesktop.org/xorg/lib/libXdmcp
+
+For patch submission instructions, see:
+
+ http://www.x.org/wiki/Development/Documentation/SubmittingPatches
+
+For more information on the git code manager, see:
+
+ http://wiki.x.org/wiki/GitPage
+
diff --git a/libXdmcp/Read.c b/libXdmcp/Read.c
index 946a611e9..7da6163e4 100644
--- a/libXdmcp/Read.c
+++ b/libXdmcp/Read.c
@@ -1,244 +1,244 @@
-/*
-Copyright 1989, 1998 The Open Group
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall not be
-used in advertising or otherwise to promote the sale, use or other dealings
-in this Software without prior written authorization from The Open Group.
- *
- * Author: Keith Packard, MIT X Consortium
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include <X11/Xos.h>
-#include <X11/X.h>
-#include <X11/Xmd.h>
-#include <X11/Xdmcp.h>
-#include <stdlib.h>
-
-int
-XdmcpReadHeader (XdmcpBufferPtr buffer, XdmcpHeaderPtr header)
-{
- if (XdmcpReadCARD16 (buffer, &header->version) &&
- XdmcpReadCARD16 (buffer, &header->opcode) &&
- XdmcpReadCARD16 (buffer, &header->length))
- return TRUE;
- return FALSE;
-}
-
-int
-XdmcpReadRemaining (const XdmcpBufferPtr buffer)
-{
- return buffer->count - buffer->pointer;
-}
-
-int
-XdmcpReadARRAY8 (XdmcpBufferPtr buffer, ARRAY8Ptr array)
-{
- int i;
-
- /*
- * When returning FALSE, guarantee that array->data = 0.
- * This allows the user to safely call XdmcpDisposeARRAY8(array)
- * regardless of the return value below.
- * Note that XdmcpDisposeARRAY*(array) will call free(array->data),
- * so we must guarantee that array->data is NULL or a malloced pointer.
- */
- if (!XdmcpReadCARD16 (buffer, &array->length)) {
- array->data = NULL;
- return FALSE;
- }
- if (!array->length)
- {
- array->data = NULL;
- return TRUE;
- }
- array->data = (CARD8 *) malloc(array->length * sizeof (CARD8));
- if (!array->data)
- return FALSE;
- for (i = 0; i < (int)array->length; i++)
- {
- if (!XdmcpReadCARD8 (buffer, &array->data[i]))
- {
- free(array->data);
- array->data = NULL;
- array->length = 0;
- return FALSE;
- }
- }
- return TRUE;
-}
-
-int
-XdmcpReadARRAY16 (XdmcpBufferPtr buffer, ARRAY16Ptr array)
-{
- int i;
-
- /*
- * When returning FALSE, guarantee that array->data = 0.
- * This allows the user to safely call XdmcpDisposeARRAY16(array)
- * regardless of the return value below.
- * Note that XdmcpDisposeARRAY*(array) will call free(array->data),
- * so we must guarantee that array->data is NULL or a malloced pointer.
- */
- if (!XdmcpReadCARD8 (buffer, &array->length)) {
- array->data = NULL;
- return FALSE;
- }
- if (!array->length)
- {
- array->data = NULL;
- return TRUE;
- }
- array->data = (CARD16 *) malloc(array->length * sizeof (CARD16));
- if (!array->data)
- return FALSE;
- for (i = 0; i < (int)array->length; i++)
- {
- if (!XdmcpReadCARD16 (buffer, &array->data[i]))
- {
- free(array->data);
- array->data = NULL;
- array->length = 0;
- return FALSE;
- }
- }
- return TRUE;
-}
-
-int
-XdmcpReadARRAY32 (XdmcpBufferPtr buffer, ARRAY32Ptr array)
-{
- int i;
-
- /*
- * When returning FALSE, guarantee that array->data = 0.
- * This allows the user to safely call XdmcpDisposeARRAY32(array)
- * regardless of the return value below.
- * Note that XdmcpDisposeARRAY*(array) will call free(array->data),
- * so we must guarantee that array->data is NULL or a malloced pointer.
- */
- if (!XdmcpReadCARD8 (buffer, &array->length)) {
- array->data = NULL;
- return FALSE;
- }
- if (!array->length)
- {
- array->data = NULL;
- return TRUE;
- }
- array->data = (CARD32 *) malloc(array->length * sizeof (CARD32));
- if (!array->data)
- return FALSE;
- for (i = 0; i < (int)array->length; i++)
- {
- if (!XdmcpReadCARD32 (buffer, &array->data[i]))
- {
- free(array->data);
- array->data = NULL;
- array->length = 0;
- return FALSE;
- }
- }
- return TRUE;
-}
-
-int
-XdmcpReadARRAYofARRAY8 (XdmcpBufferPtr buffer, ARRAYofARRAY8Ptr array)
-{
- CARD8 i;
-
- /*
- * When returning FALSE, guarantee that array->data = 0.
- * This allows the user to safely call XdmcpDisposeARRAYofARRAY8(array)
- * regardless of the return value below.
- * Note that XdmcpDisposeARRAY*(array) will call free(array->data),
- * so we must guarantee that array->data is NULL or a malloced pointer.
- */
- if (!XdmcpReadCARD8 (buffer, &array->length)) {
- array->data = NULL;
- return FALSE;
- }
- if (!array->length)
- {
- array->data = NULL;
- return TRUE;
- }
- array->data = (ARRAY8 *) malloc(array->length * sizeof (ARRAY8));
- if (!array->data)
- return FALSE;
- for (i = 0; i < array->length; i++)
- {
- if (!XdmcpReadARRAY8 (buffer, &array->data[i]))
- {
- /*
- * We must free all of the arrays allocated thus far in the loop
- * and free array->data and finally set array->data = 0;
- * The easiest way to do this is to reset the length and call
- * XdmcpDisposeARRAYofARRAY8(array).
- */
- array->length = i;
- XdmcpDisposeARRAYofARRAY8(array);
- return FALSE;
- }
- }
- return TRUE;
-}
-
-int
-XdmcpReadCARD8 (XdmcpBufferPtr buffer, CARD8Ptr valuep)
-{
- if (buffer->pointer >= buffer->count)
- return FALSE;
- *valuep = (CARD8) buffer->data[buffer->pointer++];
- return TRUE;
-}
-
-int
-XdmcpReadCARD16 (XdmcpBufferPtr buffer, CARD16Ptr valuep)
-{
- CARD8 high, low;
-
- if (XdmcpReadCARD8 (buffer, &high) &&
- XdmcpReadCARD8 (buffer, &low))
- {
- *valuep = (((CARD16) high) << 8) | ((CARD16) low);
- return TRUE;
- }
- return FALSE;
-}
-
-int
-XdmcpReadCARD32 (XdmcpBufferPtr buffer, CARD32Ptr valuep)
-{
- CARD8 byte0, byte1, byte2, byte3;
- if (XdmcpReadCARD8 (buffer, &byte0) &&
- XdmcpReadCARD8 (buffer, &byte1) &&
- XdmcpReadCARD8 (buffer, &byte2) &&
- XdmcpReadCARD8 (buffer, &byte3))
- {
- *valuep = (((CARD32) byte0) << 24) |
- (((CARD32) byte1) << 16) |
- (((CARD32) byte2) << 8) |
- (((CARD32) byte3));
- return TRUE;
- }
- return FALSE;
-}
+/*
+Copyright 1989, 1998 The Open Group
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group shall not be
+used in advertising or otherwise to promote the sale, use or other dealings
+in this Software without prior written authorization from The Open Group.
+ *
+ * Author: Keith Packard, MIT X Consortium
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include <X11/Xos.h>
+#include <X11/X.h>
+#include <X11/Xmd.h>
+#include <X11/Xdmcp.h>
+#include <stdlib.h>
+
+int
+XdmcpReadHeader (XdmcpBufferPtr buffer, XdmcpHeaderPtr header)
+{
+ if (XdmcpReadCARD16 (buffer, &header->version) &&
+ XdmcpReadCARD16 (buffer, &header->opcode) &&
+ XdmcpReadCARD16 (buffer, &header->length))
+ return TRUE;
+ return FALSE;
+}
+
+int
+XdmcpReadRemaining (const XdmcpBufferPtr buffer)
+{
+ return buffer->count - buffer->pointer;
+}
+
+int
+XdmcpReadARRAY8 (XdmcpBufferPtr buffer, ARRAY8Ptr array)
+{
+ int i;
+
+ /*
+ * When returning FALSE, guarantee that array->data = 0.
+ * This allows the user to safely call XdmcpDisposeARRAY8(array)
+ * regardless of the return value below.
+ * Note that XdmcpDisposeARRAY*(array) will call free(array->data),
+ * so we must guarantee that array->data is NULL or a malloced pointer.
+ */
+ if (!XdmcpReadCARD16 (buffer, &array->length)) {
+ array->data = NULL;
+ return FALSE;
+ }
+ if (!array->length)
+ {
+ array->data = NULL;
+ return TRUE;
+ }
+ array->data = (CARD8 *) malloc(array->length * sizeof (CARD8));
+ if (!array->data)
+ return FALSE;
+ for (i = 0; i < (int)array->length; i++)
+ {
+ if (!XdmcpReadCARD8 (buffer, &array->data[i]))
+ {
+ free(array->data);
+ array->data = NULL;
+ array->length = 0;
+ return FALSE;
+ }
+ }
+ return TRUE;
+}
+
+int
+XdmcpReadARRAY16 (XdmcpBufferPtr buffer, ARRAY16Ptr array)
+{
+ int i;
+
+ /*
+ * When returning FALSE, guarantee that array->data = 0.
+ * This allows the user to safely call XdmcpDisposeARRAY16(array)
+ * regardless of the return value below.
+ * Note that XdmcpDisposeARRAY*(array) will call free(array->data),
+ * so we must guarantee that array->data is NULL or a malloced pointer.
+ */
+ if (!XdmcpReadCARD8 (buffer, &array->length)) {
+ array->data = NULL;
+ return FALSE;
+ }
+ if (!array->length)
+ {
+ array->data = NULL;
+ return TRUE;
+ }
+ array->data = (CARD16 *) malloc(array->length * sizeof (CARD16));
+ if (!array->data)
+ return FALSE;
+ for (i = 0; i < (int)array->length; i++)
+ {
+ if (!XdmcpReadCARD16 (buffer, &array->data[i]))
+ {
+ free(array->data);
+ array->data = NULL;
+ array->length = 0;
+ return FALSE;
+ }
+ }
+ return TRUE;
+}
+
+int
+XdmcpReadARRAY32 (XdmcpBufferPtr buffer, ARRAY32Ptr array)
+{
+ int i;
+
+ /*
+ * When returning FALSE, guarantee that array->data = 0.
+ * This allows the user to safely call XdmcpDisposeARRAY32(array)
+ * regardless of the return value below.
+ * Note that XdmcpDisposeARRAY*(array) will call free(array->data),
+ * so we must guarantee that array->data is NULL or a malloced pointer.
+ */
+ if (!XdmcpReadCARD8 (buffer, &array->length)) {
+ array->data = NULL;
+ return FALSE;
+ }
+ if (!array->length)
+ {
+ array->data = NULL;
+ return TRUE;
+ }
+ array->data = (CARD32 *) malloc(array->length * sizeof (CARD32));
+ if (!array->data)
+ return FALSE;
+ for (i = 0; i < (int)array->length; i++)
+ {
+ if (!XdmcpReadCARD32 (buffer, &array->data[i]))
+ {
+ free(array->data);
+ array->data = NULL;
+ array->length = 0;
+ return FALSE;
+ }
+ }
+ return TRUE;
+}
+
+int
+XdmcpReadARRAYofARRAY8 (XdmcpBufferPtr buffer, ARRAYofARRAY8Ptr array)
+{
+ CARD8 i;
+
+ /*
+ * When returning FALSE, guarantee that array->data = 0.
+ * This allows the user to safely call XdmcpDisposeARRAYofARRAY8(array)
+ * regardless of the return value below.
+ * Note that XdmcpDisposeARRAY*(array) will call free(array->data),
+ * so we must guarantee that array->data is NULL or a malloced pointer.
+ */
+ if (!XdmcpReadCARD8 (buffer, &array->length)) {
+ array->data = NULL;
+ return FALSE;
+ }
+ if (!array->length)
+ {
+ array->data = NULL;
+ return TRUE;
+ }
+ array->data = (ARRAY8 *) malloc(array->length * sizeof (ARRAY8));
+ if (!array->data)
+ return FALSE;
+ for (i = 0; i < array->length; i++)
+ {
+ if (!XdmcpReadARRAY8 (buffer, &array->data[i]))
+ {
+ /*
+ * We must free all of the arrays allocated thus far in the loop
+ * and free array->data and finally set array->data = 0;
+ * The easiest way to do this is to reset the length and call
+ * XdmcpDisposeARRAYofARRAY8(array).
+ */
+ array->length = i;
+ XdmcpDisposeARRAYofARRAY8(array);
+ return FALSE;
+ }
+ }
+ return TRUE;
+}
+
+int
+XdmcpReadCARD8 (XdmcpBufferPtr buffer, CARD8Ptr valuep)
+{
+ if (buffer->pointer >= buffer->count)
+ return FALSE;
+ *valuep = (CARD8) buffer->data[buffer->pointer++];
+ return TRUE;
+}
+
+int
+XdmcpReadCARD16 (XdmcpBufferPtr buffer, CARD16Ptr valuep)
+{
+ CARD8 high, low;
+
+ if (XdmcpReadCARD8 (buffer, &high) &&
+ XdmcpReadCARD8 (buffer, &low))
+ {
+ *valuep = (((CARD16) high) << 8) | ((CARD16) low);
+ return TRUE;
+ }
+ return FALSE;
+}
+
+int
+XdmcpReadCARD32 (XdmcpBufferPtr buffer, CARD32Ptr valuep)
+{
+ CARD8 byte0, byte1, byte2, byte3;
+ if (XdmcpReadCARD8 (buffer, &byte0) &&
+ XdmcpReadCARD8 (buffer, &byte1) &&
+ XdmcpReadCARD8 (buffer, &byte2) &&
+ XdmcpReadCARD8 (buffer, &byte3))
+ {
+ *valuep = (((CARD32) byte0) << 24) |
+ (((CARD32) byte1) << 16) |
+ (((CARD32) byte2) << 8) |
+ (((CARD32) byte3));
+ return TRUE;
+ }
+ return FALSE;
+}
diff --git a/libXdmcp/Unwrap.c b/libXdmcp/Unwrap.c
index feebf98a7..82a10ee03 100644
--- a/libXdmcp/Unwrap.c
+++ b/libXdmcp/Unwrap.c
@@ -1,90 +1,90 @@
-/*
-Copyright 1989, 1998 The Open Group
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall not be
-used in advertising or otherwise to promote the sale, use or other dealings
-in this Software without prior written authorization from The Open Group.
- * *
- * Author: Keith Packard, MIT X Consortium
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include <X11/Xos.h>
-#include <X11/X.h>
-#include <X11/Xmd.h>
-#include <X11/Xdmcp.h>
-
-#ifdef HASXDMAUTH
-
-/*
- * The following function exists only to demonstrate the
- * desired functional interface for this routine. You will
- * need to add the appropriate algorithm if you wish to
- * use XDM-AUTHENTICATION-1/XDM-AUTHORIZATION-1.
- *
- * The interface for this routine is quite simple. All three
- * arguments are arrays of 8 unsigned characters, the first two
- * are 64 bits of useful data, the last is 56 bits of useful
- * data packed into 8 bytes, using the low 7 bits of each
- * byte, filling the high bit with odd parity.
- *
- * Examine the XDMCP specification for the correct algorithm
- */
-
-#include "Wrap.h"
-
-void
-XdmcpUnwrap (
- unsigned char *input,
- unsigned char *wrapper,
- unsigned char *output,
- int bytes)
-{
- int i, j, k;
- unsigned char tmp[8];
- unsigned char blocks[2][8];
- unsigned char expand_wrapper[8];
- auth_wrapper_schedule schedule;
-
- _XdmcpWrapperToOddParity (wrapper, expand_wrapper);
- _XdmcpAuthSetup (expand_wrapper, schedule);
-
- k = 0;
- for (j = 0; j < bytes; j += 8)
- {
- if (bytes - j < 8)
- return; /* bad input length */
- for (i = 0; i < 8; i++)
- blocks[k][i] = input[j + i];
- _XdmcpAuthDoIt ((unsigned char *) (input + j), (unsigned char *) tmp, schedule, 0);
- /* block chaining */
- k = (k == 0) ? 1 : 0;
- for (i = 0; i < 8; i++)
- {
- if (j == 0)
- output[j + i] = tmp[i];
- else
- output[j + i] = tmp[i] ^ blocks[k][i];
- }
- }
-}
-
-#endif /* HASXDMAUTH */
+/*
+Copyright 1989, 1998 The Open Group
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group shall not be
+used in advertising or otherwise to promote the sale, use or other dealings
+in this Software without prior written authorization from The Open Group.
+ * *
+ * Author: Keith Packard, MIT X Consortium
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include <X11/Xos.h>
+#include <X11/X.h>
+#include <X11/Xmd.h>
+#include <X11/Xdmcp.h>
+
+#ifdef HASXDMAUTH
+
+/*
+ * The following function exists only to demonstrate the
+ * desired functional interface for this routine. You will
+ * need to add the appropriate algorithm if you wish to
+ * use XDM-AUTHENTICATION-1/XDM-AUTHORIZATION-1.
+ *
+ * The interface for this routine is quite simple. All three
+ * arguments are arrays of 8 unsigned characters, the first two
+ * are 64 bits of useful data, the last is 56 bits of useful
+ * data packed into 8 bytes, using the low 7 bits of each
+ * byte, filling the high bit with odd parity.
+ *
+ * Examine the XDMCP specification for the correct algorithm
+ */
+
+#include "Wrap.h"
+
+void
+XdmcpUnwrap (
+ unsigned char *input,
+ unsigned char *wrapper,
+ unsigned char *output,
+ int bytes)
+{
+ int i, j, k;
+ unsigned char tmp[8];
+ unsigned char blocks[2][8];
+ unsigned char expand_wrapper[8];
+ auth_wrapper_schedule schedule;
+
+ _XdmcpWrapperToOddParity (wrapper, expand_wrapper);
+ _XdmcpAuthSetup (expand_wrapper, schedule);
+
+ k = 0;
+ for (j = 0; j < bytes; j += 8)
+ {
+ if (bytes - j < 8)
+ return; /* bad input length */
+ for (i = 0; i < 8; i++)
+ blocks[k][i] = input[j + i];
+ _XdmcpAuthDoIt ((unsigned char *) (input + j), (unsigned char *) tmp, schedule, 0);
+ /* block chaining */
+ k = (k == 0) ? 1 : 0;
+ for (i = 0; i < 8; i++)
+ {
+ if (j == 0)
+ output[j + i] = tmp[i];
+ else
+ output[j + i] = tmp[i] ^ blocks[k][i];
+ }
+ }
+}
+
+#endif /* HASXDMAUTH */
diff --git a/libXdmcp/Wrap.c b/libXdmcp/Wrap.c
index 0ee7a175b..f025caff0 100644
--- a/libXdmcp/Wrap.c
+++ b/libXdmcp/Wrap.c
@@ -1,128 +1,128 @@
-/*
-Copyright 1989, 1998 The Open Group
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall not be
-used in advertising or otherwise to promote the sale, use or other dealings
-in this Software without prior written authorization from The Open Group.
- * *
- * Author: Keith Packard, MIT X Consortium
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include <X11/Xos.h>
-#include <X11/X.h>
-#include <X11/Xmd.h>
-#include <X11/Xdmcp.h>
-
-#ifdef HASXDMAUTH
-
-/*
- * The following function exists only to demonstrate the
- * desired functional interface for this routine. You will
- * need to add the appropriate algorithm if you wish to
- * use XDM-AUTHENTICATION-1/XDM-AUTHORIZATION-1.
- *
- * Examine the XDMCP specification for the correct algorithm
- */
-
-#include "Wrap.h"
-
-void
-XdmcpWrap (
- unsigned char *input,
- unsigned char *wrapper,
- unsigned char *output,
- int bytes)
-{
- int i, j;
- int len;
- unsigned char tmp[8];
- unsigned char expand_wrapper[8];
- auth_wrapper_schedule schedule;
-
- _XdmcpWrapperToOddParity (wrapper, expand_wrapper);
- _XdmcpAuthSetup (expand_wrapper, schedule);
- for (j = 0; j < bytes; j += 8)
- {
- len = 8;
- if (bytes - j < len)
- len = bytes - j;
- /* block chaining */
- for (i = 0; i < len; i++)
- {
- if (j == 0)
- tmp[i] = input[i];
- else
- tmp[i] = input[j + i] ^ output[j - 8 + i];
- }
- for (; i < 8; i++)
- {
- if (j == 0)
- tmp[i] = 0;
- else
- tmp[i] = 0 ^ output[j - 8 + i];
- }
- _XdmcpAuthDoIt (tmp, (output + j), schedule, 1);
- }
-}
-
-/*
- * Given a 56 bit wrapper in XDMCP format, create a 56
- * bit wrapper in 7-bits + odd parity format
- */
-
-static int
-OddParity (unsigned char c)
-{
- c = c ^ (c >> 4);
- c = c ^ (c >> 2);
- c = c ^ (c >> 1);
- return ~c & 0x1;
-}
-
-/*
- * Spread the 56 bit wrapper among 8 bytes, using the upper 7 bits
- * of each byte, and storing an odd parity bit in the low bit
- */
-
-void
-_XdmcpWrapperToOddParity (
- unsigned char *in,
- unsigned char *out)
-{
- int ashift, bshift;
- int i;
- unsigned char c;
-
- ashift = 7;
- bshift = 1;
- for (i = 0; i < 7; i++)
- {
- c = ((in[i] << ashift) | (in[i+1] >> bshift)) & 0x7f;
- out[i] = (c << 1) | OddParity (c);
- ashift--;
- bshift++;
- }
- c = in[i];
- out[i] = (c << 1) | OddParity(c);
-}
-
-#endif
+/*
+Copyright 1989, 1998 The Open Group
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group shall not be
+used in advertising or otherwise to promote the sale, use or other dealings
+in this Software without prior written authorization from The Open Group.
+ * *
+ * Author: Keith Packard, MIT X Consortium
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include <X11/Xos.h>
+#include <X11/X.h>
+#include <X11/Xmd.h>
+#include <X11/Xdmcp.h>
+
+#ifdef HASXDMAUTH
+
+/*
+ * The following function exists only to demonstrate the
+ * desired functional interface for this routine. You will
+ * need to add the appropriate algorithm if you wish to
+ * use XDM-AUTHENTICATION-1/XDM-AUTHORIZATION-1.
+ *
+ * Examine the XDMCP specification for the correct algorithm
+ */
+
+#include "Wrap.h"
+
+void
+XdmcpWrap (
+ unsigned char *input,
+ unsigned char *wrapper,
+ unsigned char *output,
+ int bytes)
+{
+ int i, j;
+ int len;
+ unsigned char tmp[8];
+ unsigned char expand_wrapper[8];
+ auth_wrapper_schedule schedule;
+
+ _XdmcpWrapperToOddParity (wrapper, expand_wrapper);
+ _XdmcpAuthSetup (expand_wrapper, schedule);
+ for (j = 0; j < bytes; j += 8)
+ {
+ len = 8;
+ if (bytes - j < len)
+ len = bytes - j;
+ /* block chaining */
+ for (i = 0; i < len; i++)
+ {
+ if (j == 0)
+ tmp[i] = input[i];
+ else
+ tmp[i] = input[j + i] ^ output[j - 8 + i];
+ }
+ for (; i < 8; i++)
+ {
+ if (j == 0)
+ tmp[i] = 0;
+ else
+ tmp[i] = 0 ^ output[j - 8 + i];
+ }
+ _XdmcpAuthDoIt (tmp, (output + j), schedule, 1);
+ }
+}
+
+/*
+ * Given a 56 bit wrapper in XDMCP format, create a 56
+ * bit wrapper in 7-bits + odd parity format
+ */
+
+static int
+OddParity (unsigned char c)
+{
+ c = c ^ (c >> 4);
+ c = c ^ (c >> 2);
+ c = c ^ (c >> 1);
+ return ~c & 0x1;
+}
+
+/*
+ * Spread the 56 bit wrapper among 8 bytes, using the upper 7 bits
+ * of each byte, and storing an odd parity bit in the low bit
+ */
+
+void
+_XdmcpWrapperToOddParity (
+ unsigned char *in,
+ unsigned char *out)
+{
+ int ashift, bshift;
+ int i;
+ unsigned char c;
+
+ ashift = 7;
+ bshift = 1;
+ for (i = 0; i < 7; i++)
+ {
+ c = ((in[i] << ashift) | (in[i+1] >> bshift)) & 0x7f;
+ out[i] = (c << 1) | OddParity (c);
+ ashift--;
+ bshift++;
+ }
+ c = in[i];
+ out[i] = (c << 1) | OddParity(c);
+}
+
+#endif
diff --git a/libXdmcp/Wrap.h b/libXdmcp/Wrap.h
index 2837caa09..479da5f32 100644
--- a/libXdmcp/Wrap.h
+++ b/libXdmcp/Wrap.h
@@ -1,15 +1,15 @@
-/*
- * header file for compatibility with something useful
- */
-
-typedef unsigned char auth_cblock[8]; /* block size */
-
-typedef struct auth_ks_struct { auth_cblock _; } auth_wrapper_schedule[16];
-
-extern void _XdmcpWrapperToOddParity (unsigned char *in, unsigned char *out);
-
-#ifdef HASXDMAUTH
-extern void _XdmcpAuthSetup (auth_cblock key, auth_wrapper_schedule schedule);
-extern void _XdmcpAuthDoIt (auth_cblock input, auth_cblock output,
- auth_wrapper_schedule schedule, int edflag);
-#endif
+/*
+ * header file for compatibility with something useful
+ */
+
+typedef unsigned char auth_cblock[8]; /* block size */
+
+typedef struct auth_ks_struct { auth_cblock _; } auth_wrapper_schedule[16];
+
+extern void _XdmcpWrapperToOddParity (unsigned char *in, unsigned char *out);
+
+#ifdef HASXDMAUTH
+extern void _XdmcpAuthSetup (auth_cblock key, auth_wrapper_schedule schedule);
+extern void _XdmcpAuthDoIt (auth_cblock input, auth_cblock output,
+ auth_wrapper_schedule schedule, int edflag);
+#endif
diff --git a/libXdmcp/Wraphelp.README.crypto b/libXdmcp/Wraphelp.README.crypto
index 0fa654fd4..20c34c071 100644
--- a/libXdmcp/Wraphelp.README.crypto
+++ b/libXdmcp/Wraphelp.README.crypto
@@ -1,64 +1,64 @@
-Export Requirements.
-
-You may not export or re-export this software or any copy or
-adaptation in violation of any applicable laws or regulations.
-
-Without limiting the generality of the foregoing, hardware, software,
-technology or services provided under this license agreement may not
-be exported, reexported, transferred or downloaded to or within (or to
-a national resident of) countries under U.S. economic embargo
-including the following countries:
-
-Cuba, Iran, Libya, North Korea, Sudan and Syria. This list is subject
-to change.
-
-Hardware, software, technology or services may not be exported,
-reexported, transferred or downloaded to persons or entities listed on
-the U.S. Department of Commerce Denied Persons List, Entity List of
-proliferation concern or on any U.S. Treasury Department Designated
-Nationals exclusion list, or to parties directly or indirectly
-involved in the development or production of nuclear, chemical,
-biological weapons or in missile technology programs as specified in
-the U.S. Export Administration Regulations (15 CFR 744).
-
-By accepting this license agreement you confirm that you are not
-located in (or a national resident of) any country under U.S. economic
-embargo, not identified on any U.S. Department of Commerce Denied
-Persons List, Entity List or Treasury Department Designated Nationals
-exclusion list, and not directly or indirectly involved in the
-development or production of nuclear, chemical, biological weapons or
-in missile technology programs as specified in the U.S. Export
-Administration Regulations.
-
-Software available on this web site contains cryptography and is
-therefore subject to US government export control under the
-U.S. Export Administration Regulations ("EAR"). EAR Part 740.13(e)
-allows the export and reexport of publicly available encryption source
-code that is not subject to payment of license fee or royalty
-payment. Object code resulting from the compiling of such source code
-may also be exported and reexported under this provision if publicly
-available and not subject to a fee or payment other than reasonable
-and customary fees for reproduction and distribution. This kind of
-encryption source code and the corresponding object code may be
-exported or reexported without prior U.S. government export license
-authorization provided that the U.S. government is notified about the
-Internet location of the software.
-
-The open source software available on this web site is publicly
-available without license fee or royalty payment, and all binary
-software is compiled from the source code. The U.S. government has
-been notified about this site and the location site for the source
-code. Therefore, the source code and compiled object code may be
-downloaded and exported under U.S. export license exception (without a
-U.S. export license) in accordance with the further restrictions
-outlined above regarding embargoed countries, restricted persons and
-restricted end uses.
-
-Local Country Import Requirements. The software you are about to
-download contains cryptography technology. Some countries regulate the
-import, use and/or export of certain products with cryptography. The
-X.org Foundation makes no claims as to the applicability of local
-country import, use and/or export regulations in relation to the
-download of this product. If you are located outside the U.S. and
-Canada you are advised to consult your local country regulations to
-insure compliance.
+Export Requirements.
+
+You may not export or re-export this software or any copy or
+adaptation in violation of any applicable laws or regulations.
+
+Without limiting the generality of the foregoing, hardware, software,
+technology or services provided under this license agreement may not
+be exported, reexported, transferred or downloaded to or within (or to
+a national resident of) countries under U.S. economic embargo
+including the following countries:
+
+Cuba, Iran, Libya, North Korea, Sudan and Syria. This list is subject
+to change.
+
+Hardware, software, technology or services may not be exported,
+reexported, transferred or downloaded to persons or entities listed on
+the U.S. Department of Commerce Denied Persons List, Entity List of
+proliferation concern or on any U.S. Treasury Department Designated
+Nationals exclusion list, or to parties directly or indirectly
+involved in the development or production of nuclear, chemical,
+biological weapons or in missile technology programs as specified in
+the U.S. Export Administration Regulations (15 CFR 744).
+
+By accepting this license agreement you confirm that you are not
+located in (or a national resident of) any country under U.S. economic
+embargo, not identified on any U.S. Department of Commerce Denied
+Persons List, Entity List or Treasury Department Designated Nationals
+exclusion list, and not directly or indirectly involved in the
+development or production of nuclear, chemical, biological weapons or
+in missile technology programs as specified in the U.S. Export
+Administration Regulations.
+
+Software available on this web site contains cryptography and is
+therefore subject to US government export control under the
+U.S. Export Administration Regulations ("EAR"). EAR Part 740.13(e)
+allows the export and reexport of publicly available encryption source
+code that is not subject to payment of license fee or royalty
+payment. Object code resulting from the compiling of such source code
+may also be exported and reexported under this provision if publicly
+available and not subject to a fee or payment other than reasonable
+and customary fees for reproduction and distribution. This kind of
+encryption source code and the corresponding object code may be
+exported or reexported without prior U.S. government export license
+authorization provided that the U.S. government is notified about the
+Internet location of the software.
+
+The open source software available on this web site is publicly
+available without license fee or royalty payment, and all binary
+software is compiled from the source code. The U.S. government has
+been notified about this site and the location site for the source
+code. Therefore, the source code and compiled object code may be
+downloaded and exported under U.S. export license exception (without a
+U.S. export license) in accordance with the further restrictions
+outlined above regarding embargoed countries, restricted persons and
+restricted end uses.
+
+Local Country Import Requirements. The software you are about to
+download contains cryptography technology. Some countries regulate the
+import, use and/or export of certain products with cryptography. The
+X.org Foundation makes no claims as to the applicability of local
+country import, use and/or export regulations in relation to the
+download of this product. If you are located outside the U.S. and
+Canada you are advised to consult your local country regulations to
+insure compliance.
diff --git a/libXdmcp/Write.c b/libXdmcp/Write.c
index 52127c7b3..4222ce490 100644
--- a/libXdmcp/Write.c
+++ b/libXdmcp/Write.c
@@ -1,151 +1,151 @@
-/*
-Copyright 1989, 1998 The Open Group
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall not be
-used in advertising or otherwise to promote the sale, use or other dealings
-in this Software without prior written authorization from The Open Group.
- *
- * Author: Keith Packard, MIT X Consortium
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include <X11/Xos.h>
-#include <X11/X.h>
-#include <X11/Xmd.h>
-#include <X11/Xdmcp.h>
-#include <stdlib.h>
-
-int
-XdmcpWriteHeader (
- XdmcpBufferPtr buffer,
- const XdmcpHeaderPtr header)
-{
- BYTE *newData;
-
- if ((int)buffer->size < 6 + (int)header->length)
- {
- newData = (BYTE *) malloc(XDM_MAX_MSGLEN * sizeof (BYTE));
- if (!newData)
- return FALSE;
- free((unsigned long *)(buffer->data));
- buffer->data = newData;
- buffer->size = XDM_MAX_MSGLEN;
- }
- buffer->pointer = 0;
- if (!XdmcpWriteCARD16 (buffer, header->version))
- return FALSE;
- if (!XdmcpWriteCARD16 (buffer, header->opcode))
- return FALSE;
- if (!XdmcpWriteCARD16 (buffer, header->length))
- return FALSE;
- return TRUE;
-}
-
-int
-XdmcpWriteARRAY8 (XdmcpBufferPtr buffer, const ARRAY8Ptr array)
-{
- int i;
-
- if (!XdmcpWriteCARD16 (buffer, array->length))
- return FALSE;
- for (i = 0; i < (int)array->length; i++)
- if (!XdmcpWriteCARD8 (buffer, array->data[i]))
- return FALSE;
- return TRUE;
-}
-
-int
-XdmcpWriteARRAY16 (XdmcpBufferPtr buffer, const ARRAY16Ptr array)
-{
- int i;
-
- if (!XdmcpWriteCARD8 (buffer, array->length))
- return FALSE;
- for (i = 0; i < (int)array->length; i++)
- if (!XdmcpWriteCARD16 (buffer, array->data[i]))
- return FALSE;
- return TRUE;
-}
-
-int
-XdmcpWriteARRAY32 (XdmcpBufferPtr buffer, const ARRAY32Ptr array)
-{
- int i;
-
- if (!XdmcpWriteCARD8 (buffer, array->length))
- return FALSE;
- for (i = 0; i < (int)array->length; i++)
- if (!XdmcpWriteCARD32 (buffer, array->data[i]))
- return FALSE;
- return TRUE;
-}
-
-int
-XdmcpWriteARRAYofARRAY8 (XdmcpBufferPtr buffer, const ARRAYofARRAY8Ptr array)
-{
- int i;
-
- if (!XdmcpWriteCARD8 (buffer, array->length))
- return FALSE;
- for (i = 0; i < (int)array->length; i++)
- if (!XdmcpWriteARRAY8 (buffer, &array->data[i]))
- return FALSE;
- return TRUE;
-}
-
-int
-XdmcpWriteCARD8 (
- XdmcpBufferPtr buffer,
- unsigned value)
-{
- if (buffer->pointer >= buffer->size)
- return FALSE;
- buffer->data[buffer->pointer++] = (BYTE) value;
- return TRUE;
-}
-
-int
-XdmcpWriteCARD16 (
- XdmcpBufferPtr buffer,
- unsigned value)
-{
- if (!XdmcpWriteCARD8 (buffer, value >> 8))
- return FALSE;
- if (!XdmcpWriteCARD8 (buffer, value & 0xff))
- return FALSE;
- return TRUE;
-}
-
-int
-XdmcpWriteCARD32 (
- XdmcpBufferPtr buffer,
- unsigned value)
-{
- if (!XdmcpWriteCARD8 (buffer, value >> 24))
- return FALSE;
- if (!XdmcpWriteCARD8 (buffer, (value >> 16) & 0xff))
- return FALSE;
- if (!XdmcpWriteCARD8 (buffer, (value >> 8) & 0xff))
- return FALSE;
- if (!XdmcpWriteCARD8 (buffer, value & 0xff))
- return FALSE;
- return TRUE;
-}
+/*
+Copyright 1989, 1998 The Open Group
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group shall not be
+used in advertising or otherwise to promote the sale, use or other dealings
+in this Software without prior written authorization from The Open Group.
+ *
+ * Author: Keith Packard, MIT X Consortium
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include <X11/Xos.h>
+#include <X11/X.h>
+#include <X11/Xmd.h>
+#include <X11/Xdmcp.h>
+#include <stdlib.h>
+
+int
+XdmcpWriteHeader (
+ XdmcpBufferPtr buffer,
+ const XdmcpHeaderPtr header)
+{
+ BYTE *newData;
+
+ if ((int)buffer->size < 6 + (int)header->length)
+ {
+ newData = (BYTE *) malloc(XDM_MAX_MSGLEN * sizeof (BYTE));
+ if (!newData)
+ return FALSE;
+ free((unsigned long *)(buffer->data));
+ buffer->data = newData;
+ buffer->size = XDM_MAX_MSGLEN;
+ }
+ buffer->pointer = 0;
+ if (!XdmcpWriteCARD16 (buffer, header->version))
+ return FALSE;
+ if (!XdmcpWriteCARD16 (buffer, header->opcode))
+ return FALSE;
+ if (!XdmcpWriteCARD16 (buffer, header->length))
+ return FALSE;
+ return TRUE;
+}
+
+int
+XdmcpWriteARRAY8 (XdmcpBufferPtr buffer, const ARRAY8Ptr array)
+{
+ int i;
+
+ if (!XdmcpWriteCARD16 (buffer, array->length))
+ return FALSE;
+ for (i = 0; i < (int)array->length; i++)
+ if (!XdmcpWriteCARD8 (buffer, array->data[i]))
+ return FALSE;
+ return TRUE;
+}
+
+int
+XdmcpWriteARRAY16 (XdmcpBufferPtr buffer, const ARRAY16Ptr array)
+{
+ int i;
+
+ if (!XdmcpWriteCARD8 (buffer, array->length))
+ return FALSE;
+ for (i = 0; i < (int)array->length; i++)
+ if (!XdmcpWriteCARD16 (buffer, array->data[i]))
+ return FALSE;
+ return TRUE;
+}
+
+int
+XdmcpWriteARRAY32 (XdmcpBufferPtr buffer, const ARRAY32Ptr array)
+{
+ int i;
+
+ if (!XdmcpWriteCARD8 (buffer, array->length))
+ return FALSE;
+ for (i = 0; i < (int)array->length; i++)
+ if (!XdmcpWriteCARD32 (buffer, array->data[i]))
+ return FALSE;
+ return TRUE;
+}
+
+int
+XdmcpWriteARRAYofARRAY8 (XdmcpBufferPtr buffer, const ARRAYofARRAY8Ptr array)
+{
+ int i;
+
+ if (!XdmcpWriteCARD8 (buffer, array->length))
+ return FALSE;
+ for (i = 0; i < (int)array->length; i++)
+ if (!XdmcpWriteARRAY8 (buffer, &array->data[i]))
+ return FALSE;
+ return TRUE;
+}
+
+int
+XdmcpWriteCARD8 (
+ XdmcpBufferPtr buffer,
+ unsigned value)
+{
+ if (buffer->pointer >= buffer->size)
+ return FALSE;
+ buffer->data[buffer->pointer++] = (BYTE) value;
+ return TRUE;
+}
+
+int
+XdmcpWriteCARD16 (
+ XdmcpBufferPtr buffer,
+ unsigned value)
+{
+ if (!XdmcpWriteCARD8 (buffer, value >> 8))
+ return FALSE;
+ if (!XdmcpWriteCARD8 (buffer, value & 0xff))
+ return FALSE;
+ return TRUE;
+}
+
+int
+XdmcpWriteCARD32 (
+ XdmcpBufferPtr buffer,
+ unsigned value)
+{
+ if (!XdmcpWriteCARD8 (buffer, value >> 24))
+ return FALSE;
+ if (!XdmcpWriteCARD8 (buffer, (value >> 16) & 0xff))
+ return FALSE;
+ if (!XdmcpWriteCARD8 (buffer, (value >> 8) & 0xff))
+ return FALSE;
+ if (!XdmcpWriteCARD8 (buffer, value & 0xff))
+ return FALSE;
+ return TRUE;
+}
diff --git a/libXdmcp/autogen.sh b/libXdmcp/autogen.sh
index 6fcae015c..904cd6746 100644
--- a/libXdmcp/autogen.sh
+++ b/libXdmcp/autogen.sh
@@ -1,12 +1,12 @@
-#! /bin/sh
-
-srcdir=`dirname $0`
-test -z "$srcdir" && srcdir=.
-
-ORIGDIR=`pwd`
-cd $srcdir
-
-autoreconf -v --install || exit 1
-cd $ORIGDIR || exit $?
-
-$srcdir/configure --enable-maintainer-mode "$@"
+#! /bin/sh
+
+srcdir=`dirname $0`
+test -z "$srcdir" && srcdir=.
+
+ORIGDIR=`pwd`
+cd $srcdir
+
+autoreconf -v --install || exit 1
+cd $ORIGDIR || exit $?
+
+$srcdir/configure --enable-maintainer-mode "$@"
diff --git a/libXdmcp/xdmcp.pc.in b/libXdmcp/xdmcp.pc.in
index c414e9165..095d17207 100644
--- a/libXdmcp/xdmcp.pc.in
+++ b/libXdmcp/xdmcp.pc.in
@@ -1,11 +1,11 @@
-prefix=@prefix@
-exec_prefix=@exec_prefix@
-libdir=@libdir@
-includedir=@includedir@
-
-Name: Xdmcp
-Description: X Display Manager Control Protocol library
-Version: @PACKAGE_VERSION@
-Requires: xproto
-Cflags: -I${includedir}
-Libs: -L${libdir} -lXdmcp
+prefix=@prefix@
+exec_prefix=@exec_prefix@
+libdir=@libdir@
+includedir=@includedir@
+
+Name: Xdmcp
+Description: X Display Manager Control Protocol library
+Version: @PACKAGE_VERSION@
+Requires: xproto
+Cflags: -I${includedir}
+Libs: -L${libdir} -lXdmcp
diff --git a/libXext/.gitignore b/libXext/.gitignore
index 84f4963c5..6b60cc3d9 100644
--- a/libXext/.gitignore
+++ b/libXext/.gitignore
@@ -1,78 +1,78 @@
-#
-# X.Org module default exclusion patterns
-# The next section if for module specific patterns
-#
-# Do not edit the following section
-# GNU Build System (Autotools)
-aclocal.m4
-autom4te.cache/
-autoscan.log
-ChangeLog
-compile
-config.guess
-config.h
-config.h.in
-config.log
-config-ml.in
-config.py
-config.status
-config.status.lineno
-config.sub
-configure
-configure.scan
-depcomp
-.deps/
-INSTALL
-install-sh
-.libs/
-libtool
-libtool.m4
-ltmain.sh
-lt~obsolete.m4
-ltoptions.m4
-ltsugar.m4
-ltversion.m4
-Makefile
-Makefile.in
-mdate-sh
-missing
-mkinstalldirs
-*.pc
-py-compile
-stamp-h?
-symlink-tree
-texinfo.tex
-ylwrap
-
-# Do not edit the following section
-# Edit Compile Debug Document Distribute
-*~
-*.[0-9]
-*.[0-9]x
-*.bak
-*.bin
-core
-*.dll
-*.exe
-*-ISO*.bdf
-*-JIS*.bdf
-*-KOI8*.bdf
-*.kld
-*.ko
-*.ko.cmd
-*.lai
-*.l[oa]
-*.[oa]
-*.obj
-*.patch
-*.so
-*.pcf.gz
-*.pdb
-*.tar.bz2
-*.tar.gz
-#
-# Add & Override patterns for libXext
-#
-# Edit the following section as needed
-# For example, !report.pc overrides *.pc. See 'man gitignore'
-#
+#
+# X.Org module default exclusion patterns
+# The next section if for module specific patterns
+#
+# Do not edit the following section
+# GNU Build System (Autotools)
+aclocal.m4
+autom4te.cache/
+autoscan.log
+ChangeLog
+compile
+config.guess
+config.h
+config.h.in
+config.log
+config-ml.in
+config.py
+config.status
+config.status.lineno
+config.sub
+configure
+configure.scan
+depcomp
+.deps/
+INSTALL
+install-sh
+.libs/
+libtool
+libtool.m4
+ltmain.sh
+lt~obsolete.m4
+ltoptions.m4
+ltsugar.m4
+ltversion.m4
+Makefile
+Makefile.in
+mdate-sh
+missing
+mkinstalldirs
+*.pc
+py-compile
+stamp-h?
+symlink-tree
+texinfo.tex
+ylwrap
+
+# Do not edit the following section
+# Edit Compile Debug Document Distribute
+*~
+*.[0-9]
+*.[0-9]x
+*.bak
+*.bin
+core
+*.dll
+*.exe
+*-ISO*.bdf
+*-JIS*.bdf
+*-KOI8*.bdf
+*.kld
+*.ko
+*.ko.cmd
+*.lai
+*.l[oa]
+*.[oa]
+*.obj
+*.patch
+*.so
+*.pcf.gz
+*.pdb
+*.tar.bz2
+*.tar.gz
+#
+# Add & Override patterns for libXext
+#
+# Edit the following section as needed
+# For example, !report.pc overrides *.pc. See 'man gitignore'
+#
diff --git a/libXext/Makefile.am b/libXext/Makefile.am
index 1f4e460e1..091d920c5 100644
--- a/libXext/Makefile.am
+++ b/libXext/Makefile.am
@@ -1,22 +1,22 @@
-SUBDIRS = man src specs
-
-pkgconfigdir = $(libdir)/pkgconfig
-pkgconfig_DATA = xext.pc
-
-MAINTAINERCLEANFILES = ChangeLog INSTALL
-
-.PHONY: ChangeLog INSTALL
-
-INSTALL:
- $(INSTALL_CMD)
-
-ChangeLog:
- $(CHANGELOG_CMD)
-
-dist-hook: ChangeLog INSTALL
-
-if LINT
-# Check source code with tools like lint & sparse
-lint:
- (cd src && $(MAKE) $(MFLAGS) lint)
-endif LINT
+SUBDIRS = man src specs
+
+pkgconfigdir = $(libdir)/pkgconfig
+pkgconfig_DATA = xext.pc
+
+MAINTAINERCLEANFILES = ChangeLog INSTALL
+
+.PHONY: ChangeLog INSTALL
+
+INSTALL:
+ $(INSTALL_CMD)
+
+ChangeLog:
+ $(CHANGELOG_CMD)
+
+dist-hook: ChangeLog INSTALL
+
+if LINT
+# Check source code with tools like lint & sparse
+lint:
+ (cd src && $(MAKE) $(MFLAGS) lint)
+endif LINT
diff --git a/libXext/README b/libXext/README
index 6ca09ffca..8bd443beb 100644
--- a/libXext/README
+++ b/libXext/README
@@ -1,29 +1,29 @@
-libXext - library for common extensions to the X11 protocol
-
-No new extensions should be added to this library - it is now instead
-preferred to make per-extension libraries that can be evolved as needed
-without breaking compatibility of this core library.
-
-All questions regarding this software should be directed at the
-Xorg mailing list:
-
- http://lists.freedesktop.org/mailman/listinfo/xorg
-
-Please submit bug reports to the Xorg bugzilla:
-
- https://bugs.freedesktop.org/enter_bug.cgi?product=xorg
-
-The master development code repository can be found at:
-
- git://anongit.freedesktop.org/git/xorg/lib/libXext
-
- http://cgit.freedesktop.org/xorg/lib/libXext
-
-For patch submission instructions, see:
-
- http://www.x.org/wiki/Development/Documentation/SubmittingPatches
-
-For more information on the git code manager, see:
-
- http://wiki.x.org/wiki/GitPage
-
+libXext - library for common extensions to the X11 protocol
+
+No new extensions should be added to this library - it is now instead
+preferred to make per-extension libraries that can be evolved as needed
+without breaking compatibility of this core library.
+
+All questions regarding this software should be directed at the
+Xorg mailing list:
+
+ http://lists.freedesktop.org/mailman/listinfo/xorg
+
+Please submit bug reports to the Xorg bugzilla:
+
+ https://bugs.freedesktop.org/enter_bug.cgi?product=xorg
+
+The master development code repository can be found at:
+
+ git://anongit.freedesktop.org/git/xorg/lib/libXext
+
+ http://cgit.freedesktop.org/xorg/lib/libXext
+
+For patch submission instructions, see:
+
+ http://www.x.org/wiki/Development/Documentation/SubmittingPatches
+
+For more information on the git code manager, see:
+
+ http://wiki.x.org/wiki/GitPage
+
diff --git a/libXext/autogen.sh b/libXext/autogen.sh
index 6fcae015c..904cd6746 100644
--- a/libXext/autogen.sh
+++ b/libXext/autogen.sh
@@ -1,12 +1,12 @@
-#! /bin/sh
-
-srcdir=`dirname $0`
-test -z "$srcdir" && srcdir=.
-
-ORIGDIR=`pwd`
-cd $srcdir
-
-autoreconf -v --install || exit 1
-cd $ORIGDIR || exit $?
-
-$srcdir/configure --enable-maintainer-mode "$@"
+#! /bin/sh
+
+srcdir=`dirname $0`
+test -z "$srcdir" && srcdir=.
+
+ORIGDIR=`pwd`
+cd $srcdir
+
+autoreconf -v --install || exit 1
+cd $ORIGDIR || exit $?
+
+$srcdir/configure --enable-maintainer-mode "$@"
diff --git a/libXext/include/X11/extensions/MITMisc.h b/libXext/include/X11/extensions/MITMisc.h
index c6b7fefc1..4cfb334ee 100644
--- a/libXext/include/X11/extensions/MITMisc.h
+++ b/libXext/include/X11/extensions/MITMisc.h
@@ -1,54 +1,54 @@
-/************************************************************
-
-Copyright 1989, 1998 The Open Group
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall not be
-used in advertising or otherwise to promote the sale, use or other dealings
-in this Software without prior written authorization from The Open Group.
-
-********************************************************/
-
-/* RANDOM CRUFT! THIS HAS NO OFFICIAL X CONSORTIUM OR X PROJECT TEAM BLESSING */
-
-#ifndef _XMITMISC_H_
-#define _XMITMISC_H_
-
-#include <X11/Xfuncproto.h>
-#include <X11/extensions/mitmiscconst.h>
-
-_XFUNCPROTOBEGIN
-
-Bool XMITMiscQueryExtension(
- Display* /* dpy */,
- int* /* event_basep */,
- int* /* error_basep */
-);
-
-Status XMITMiscSetBugMode(
- Display* /* dpy */,
- Bool /* onOff */
-);
-
-Bool XMITMiscGetBugMode(
- Display* /* dpy */
-);
-
-_XFUNCPROTOEND
-
-#endif
+/************************************************************
+
+Copyright 1989, 1998 The Open Group
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group shall not be
+used in advertising or otherwise to promote the sale, use or other dealings
+in this Software without prior written authorization from The Open Group.
+
+********************************************************/
+
+/* RANDOM CRUFT! THIS HAS NO OFFICIAL X CONSORTIUM OR X PROJECT TEAM BLESSING */
+
+#ifndef _XMITMISC_H_
+#define _XMITMISC_H_
+
+#include <X11/Xfuncproto.h>
+#include <X11/extensions/mitmiscconst.h>
+
+_XFUNCPROTOBEGIN
+
+Bool XMITMiscQueryExtension(
+ Display* /* dpy */,
+ int* /* event_basep */,
+ int* /* error_basep */
+);
+
+Status XMITMiscSetBugMode(
+ Display* /* dpy */,
+ Bool /* onOff */
+);
+
+Bool XMITMiscGetBugMode(
+ Display* /* dpy */
+);
+
+_XFUNCPROTOEND
+
+#endif
diff --git a/libXext/include/X11/extensions/XEVI.h b/libXext/include/X11/extensions/XEVI.h
index 49132d1de..9ca441200 100644
--- a/libXext/include/X11/extensions/XEVI.h
+++ b/libXext/include/X11/extensions/XEVI.h
@@ -1,61 +1,61 @@
-/************************************************************
-Copyright (c) 1997 by Silicon Graphics Computer Systems, Inc.
-Permission to use, copy, modify, and distribute this
-software and its documentation for any purpose and without
-fee is hereby granted, provided that the above copyright
-notice appear in all copies and that both that copyright
-notice and this permission notice appear in supporting
-documentation, and that the name of Silicon Graphics not be
-used in advertising or publicity pertaining to distribution
-of the software without specific prior written permission.
-Silicon Graphics makes no representation about the suitability
-of this software for any purpose. It is provided "as is"
-without any express or implied warranty.
-SILICON GRAPHICS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS
-SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
-AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON
-GRAPHICS BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL
-DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
-DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
-OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH
-THE USE OR PERFORMANCE OF THIS SOFTWARE.
-********************************************************/
-
-#ifndef _XEVI_H_
-#define _XEVI_H_
-#include <X11/Xfuncproto.h>
-#include <X11/extensions/EVI.h>
-
-typedef struct {
- VisualID core_visual_id;
- int screen;
- int level;
- unsigned int transparency_type;
- unsigned int transparency_value;
- unsigned int min_hw_colormaps;
- unsigned int max_hw_colormaps;
- unsigned int num_colormap_conflicts;
- VisualID* colormap_conflicts;
-} ExtendedVisualInfo;
-
-_XFUNCPROTOBEGIN
-
-Bool XeviQueryExtension(
- Display* /* dpy */
-);
-Status XeviQueryVersion(
- Display* /* dpy */,
- int* /* majorVersion */,
- int* /* minorVersion */
-);
-Status XeviGetVisualInfo(
- Display* /* dpy */,
- VisualID* /* visual_query */,
- int /* nVisual_query */,
- ExtendedVisualInfo** /* extendedVisualInfo_return */,
- int* /* nInfo_return */
-);
-
-_XFUNCPROTOEND
-
-#endif
+/************************************************************
+Copyright (c) 1997 by Silicon Graphics Computer Systems, Inc.
+Permission to use, copy, modify, and distribute this
+software and its documentation for any purpose and without
+fee is hereby granted, provided that the above copyright
+notice appear in all copies and that both that copyright
+notice and this permission notice appear in supporting
+documentation, and that the name of Silicon Graphics not be
+used in advertising or publicity pertaining to distribution
+of the software without specific prior written permission.
+Silicon Graphics makes no representation about the suitability
+of this software for any purpose. It is provided "as is"
+without any express or implied warranty.
+SILICON GRAPHICS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS
+SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
+AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON
+GRAPHICS BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL
+DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
+DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
+OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH
+THE USE OR PERFORMANCE OF THIS SOFTWARE.
+********************************************************/
+
+#ifndef _XEVI_H_
+#define _XEVI_H_
+#include <X11/Xfuncproto.h>
+#include <X11/extensions/EVI.h>
+
+typedef struct {
+ VisualID core_visual_id;
+ int screen;
+ int level;
+ unsigned int transparency_type;
+ unsigned int transparency_value;
+ unsigned int min_hw_colormaps;
+ unsigned int max_hw_colormaps;
+ unsigned int num_colormap_conflicts;
+ VisualID* colormap_conflicts;
+} ExtendedVisualInfo;
+
+_XFUNCPROTOBEGIN
+
+Bool XeviQueryExtension(
+ Display* /* dpy */
+);
+Status XeviQueryVersion(
+ Display* /* dpy */,
+ int* /* majorVersion */,
+ int* /* minorVersion */
+);
+Status XeviGetVisualInfo(
+ Display* /* dpy */,
+ VisualID* /* visual_query */,
+ int /* nVisual_query */,
+ ExtendedVisualInfo** /* extendedVisualInfo_return */,
+ int* /* nInfo_return */
+);
+
+_XFUNCPROTOEND
+
+#endif
diff --git a/libXext/include/X11/extensions/Xag.h b/libXext/include/X11/extensions/Xag.h
index dfc2e7036..9f69f7875 100644
--- a/libXext/include/X11/extensions/Xag.h
+++ b/libXext/include/X11/extensions/Xag.h
@@ -1,90 +1,90 @@
-/*
-Copyright 1996, 1998 The Open Group
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
-
-The above copyright notice and this permission notice shall be included
-in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
-IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR
-OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
-ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall
-not be used in advertising or otherwise to promote the sale, use or
-other dealings in this Software without prior written authorization
-from The Open Group.
-*/
-
-#ifndef _XAG_H_
-#define _XAG_H_
-
-#include <X11/extensions/ag.h>
-#include <X11/Xfuncproto.h>
-
-#include <stdarg.h>
-
-_XFUNCPROTOBEGIN
-
-typedef XID XAppGroup;
-
-Bool XagQueryVersion(
- Display* /* dpy */,
- int* /* major_version */,
- int* /* minor_version */
-);
-
-Status XagCreateEmbeddedApplicationGroup(
- Display* /* dpy */,
- VisualID /* root_visual */,
- Colormap /* default_colormap */,
- unsigned long /* black_pixel */,
- unsigned long /* white_pixel */,
- XAppGroup* /* app_group_return */
-);
-
-Status XagCreateNonembeddedApplicationGroup(
- Display* /* dpy */,
- XAppGroup* /* app_group_return */
-);
-
-Status XagDestroyApplicationGroup(
- Display* /* dpy */,
- XAppGroup /* app_group */
-);
-
-Status XagGetApplicationGroupAttributes(
- Display* /* dpy */,
- XAppGroup /* app_group */,
- ...
-);
-
-Status XagQueryApplicationGroup(
- Display* /* dpy */,
- XID /* resource_base */,
- XAppGroup* /* app_group_ret */
-);
-
-Status XagCreateAssociation(
- Display* /* dpy */,
- Window* /* window_ret */,
- void* /* system_window */
-);
-
-Status XagDestroyAssociation(
- Display* /* dpy */,
- Window /* window */
-);
-
-_XFUNCPROTOEND
-
-#endif /* _XAG_H_ */
-
+/*
+Copyright 1996, 1998 The Open Group
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
+
+The above copyright notice and this permission notice shall be included
+in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR
+OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
+ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group shall
+not be used in advertising or otherwise to promote the sale, use or
+other dealings in this Software without prior written authorization
+from The Open Group.
+*/
+
+#ifndef _XAG_H_
+#define _XAG_H_
+
+#include <X11/extensions/ag.h>
+#include <X11/Xfuncproto.h>
+
+#include <stdarg.h>
+
+_XFUNCPROTOBEGIN
+
+typedef XID XAppGroup;
+
+Bool XagQueryVersion(
+ Display* /* dpy */,
+ int* /* major_version */,
+ int* /* minor_version */
+);
+
+Status XagCreateEmbeddedApplicationGroup(
+ Display* /* dpy */,
+ VisualID /* root_visual */,
+ Colormap /* default_colormap */,
+ unsigned long /* black_pixel */,
+ unsigned long /* white_pixel */,
+ XAppGroup* /* app_group_return */
+);
+
+Status XagCreateNonembeddedApplicationGroup(
+ Display* /* dpy */,
+ XAppGroup* /* app_group_return */
+);
+
+Status XagDestroyApplicationGroup(
+ Display* /* dpy */,
+ XAppGroup /* app_group */
+);
+
+Status XagGetApplicationGroupAttributes(
+ Display* /* dpy */,
+ XAppGroup /* app_group */,
+ ...
+);
+
+Status XagQueryApplicationGroup(
+ Display* /* dpy */,
+ XID /* resource_base */,
+ XAppGroup* /* app_group_ret */
+);
+
+Status XagCreateAssociation(
+ Display* /* dpy */,
+ Window* /* window_ret */,
+ void* /* system_window */
+);
+
+Status XagDestroyAssociation(
+ Display* /* dpy */,
+ Window /* window */
+);
+
+_XFUNCPROTOEND
+
+#endif /* _XAG_H_ */
+
diff --git a/libXext/include/X11/extensions/Xcup.h b/libXext/include/X11/extensions/Xcup.h
index 8d69575b1..c8074cf3d 100644
--- a/libXext/include/X11/extensions/Xcup.h
+++ b/libXext/include/X11/extensions/Xcup.h
@@ -1,58 +1,58 @@
-/*
-
-Copyright 1987, 1988, 1998 The Open Group
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall not be
-used in advertising or otherwise to promote the sale, use or other dealings
-in this Software without prior written authorization from The Open Group.
-
-*/
-
-#ifndef _XCUP_H_
-#define _XCUP_H_
-
-#include <X11/Xfuncproto.h>
-#include <X11/extensions/cup.h>
-
-_XFUNCPROTOBEGIN
-
-Bool XcupQueryVersion(
- Display* /* dpy */,
- int* /* major_version */,
- int* /* minor_version */
-);
-
-Status XcupGetReservedColormapEntries(
- Display* /* dpy */,
- int /* screen */,
- XColor** /* colors_out */,
- int* /* ncolors */
-);
-
-Status XcupStoreColors(
- Display* /* dpy */,
- Colormap /* colormap */,
- XColor* /* colors */,
- int /* ncolors */
-);
-
-_XFUNCPROTOEND
-
-#endif /* _XCUP_H_ */
-
+/*
+
+Copyright 1987, 1988, 1998 The Open Group
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group shall not be
+used in advertising or otherwise to promote the sale, use or other dealings
+in this Software without prior written authorization from The Open Group.
+
+*/
+
+#ifndef _XCUP_H_
+#define _XCUP_H_
+
+#include <X11/Xfuncproto.h>
+#include <X11/extensions/cup.h>
+
+_XFUNCPROTOBEGIN
+
+Bool XcupQueryVersion(
+ Display* /* dpy */,
+ int* /* major_version */,
+ int* /* minor_version */
+);
+
+Status XcupGetReservedColormapEntries(
+ Display* /* dpy */,
+ int /* screen */,
+ XColor** /* colors_out */,
+ int* /* ncolors */
+);
+
+Status XcupStoreColors(
+ Display* /* dpy */,
+ Colormap /* colormap */,
+ XColor* /* colors */,
+ int /* ncolors */
+);
+
+_XFUNCPROTOEND
+
+#endif /* _XCUP_H_ */
+
diff --git a/libXext/include/X11/extensions/Xext.h b/libXext/include/X11/extensions/Xext.h
index c7c5723e2..858592b78 100644
--- a/libXext/include/X11/extensions/Xext.h
+++ b/libXext/include/X11/extensions/Xext.h
@@ -1,53 +1,53 @@
-/*
- *
-Copyright 1989, 1998 The Open Group
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall not be
-used in advertising or otherwise to promote the sale, use or other dealings
-in this Software without prior written authorization from The Open Group.
- */
-
-#ifndef _XEXT_H_
-#define _XEXT_H_
-
-#include <X11/Xfuncproto.h>
-
-_XFUNCPROTOBEGIN
-
-typedef int (*XextErrorHandler) (
- Display * /* dpy */,
- _Xconst char* /* ext_name */,
- _Xconst char* /* reason */
-);
-
-extern XextErrorHandler XSetExtensionErrorHandler(
- XextErrorHandler /* handler */
-);
-
-extern int XMissingExtension(
- Display* /* dpy */,
- _Xconst char* /* ext_name */
-);
-
-_XFUNCPROTOEND
-
-#define X_EXTENSION_UNKNOWN "unknown"
-#define X_EXTENSION_MISSING "missing"
-
-#endif /* _XEXT_H_ */
+/*
+ *
+Copyright 1989, 1998 The Open Group
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group shall not be
+used in advertising or otherwise to promote the sale, use or other dealings
+in this Software without prior written authorization from The Open Group.
+ */
+
+#ifndef _XEXT_H_
+#define _XEXT_H_
+
+#include <X11/Xfuncproto.h>
+
+_XFUNCPROTOBEGIN
+
+typedef int (*XextErrorHandler) (
+ Display * /* dpy */,
+ _Xconst char* /* ext_name */,
+ _Xconst char* /* reason */
+);
+
+extern XextErrorHandler XSetExtensionErrorHandler(
+ XextErrorHandler /* handler */
+);
+
+extern int XMissingExtension(
+ Display* /* dpy */,
+ _Xconst char* /* ext_name */
+);
+
+_XFUNCPROTOEND
+
+#define X_EXTENSION_UNKNOWN "unknown"
+#define X_EXTENSION_MISSING "missing"
+
+#endif /* _XEXT_H_ */
diff --git a/libXext/include/X11/extensions/multibuf.h b/libXext/include/X11/extensions/multibuf.h
index d2f805ee7..12fda357d 100644
--- a/libXext/include/X11/extensions/multibuf.h
+++ b/libXext/include/X11/extensions/multibuf.h
@@ -1,213 +1,213 @@
-/*
- *
-Copyright 1989, 1998 The Open Group
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall not be
-used in advertising or otherwise to promote the sale, use or other dealings
-in this Software without prior written authorization from The Open Group.
- */
-
-#ifndef _MULTIBUF_H_
-#define _MULTIBUF_H_
-
-#include <X11/Xfuncproto.h>
-
-#include <X11/extensions/multibufconst.h>
-
-#if !defined(UNIXCPP) || defined(ANSICPP)
-#define MbufGetReq(name,req,info) GetReq (name, req); \
- req->reqType = info->codes->major_opcode; \
- req->mbufReqType = X_##name;
-#else
-#define MbufGetReq(name,req,info) GetReq (name, req); \
- req->reqType = info->codes->major_opcode; \
- req->mbufReqType = X_/**/name;
-#endif
-
-/*
- * Extra definitions that will only be needed in the client
- */
-typedef XID Multibuffer;
-
-typedef struct {
- int type; /* of event */
- unsigned long serial; /* # of last request processed by server */
- int send_event; /* true if this came frome a SendEvent request */
- Display *display; /* Display the event was read from */
- Multibuffer buffer; /* buffer of event */
- int state; /* see Clobbered constants above */
-} XmbufClobberNotifyEvent;
-
-typedef struct {
- int type; /* of event */
- unsigned long serial; /* # of last request processed by server */
- int send_event; /* true if this came frome a SendEvent request */
- Display *display; /* Display the event was read from */
- Multibuffer buffer; /* buffer of event */
-} XmbufUpdateNotifyEvent;
-
-
-/*
- * per-window attributes that can be got
- */
-typedef struct {
- int displayed_index; /* which buffer is being displayed */
- int update_action; /* Undefined, Background, Untouched, Copied */
- int update_hint; /* Frequent, Intermittent, Static */
- int window_mode; /* Mono, Stereo */
- int nbuffers; /* Number of buffers */
- Multibuffer *buffers; /* Buffers */
-} XmbufWindowAttributes;
-
-/*
- * per-window attributes that can be set
- */
-typedef struct {
- int update_hint; /* Frequent, Intermittent, Static */
-} XmbufSetWindowAttributes;
-
-
-/*
- * per-buffer attributes that can be got
- */
-typedef struct {
- Window window; /* which window this belongs to */
- unsigned long event_mask; /* events that have been selected */
- int buffer_index; /* which buffer is this */
- int side; /* Mono, Left, Right */
-} XmbufBufferAttributes;
-
-/*
- * per-buffer attributes that can be set
- */
-typedef struct {
- unsigned long event_mask; /* events that have been selected */
-} XmbufSetBufferAttributes;
-
-
-/*
- * per-screen buffer info (there will be lists of them)
- */
-typedef struct {
- VisualID visualid; /* visual usuable at this depth */
- int max_buffers; /* most buffers for this visual */
- int depth; /* depth of buffers to be created */
-} XmbufBufferInfo;
-
-_XFUNCPROTOBEGIN
-
-extern Bool XmbufQueryExtension(
- Display* /* dpy */,
- int* /* event_base_return */,
- int* /* error_base_return */
-);
-
-extern Status XmbufGetVersion(
- Display* /* dpy */,
- int* /* major_version_return */,
- int* /* minor_version_return */
-);
-
-extern int XmbufCreateBuffers(
- Display* /* dpy */,
- Window /* w */,
- int /* count */,
- int /* update_action */,
- int /* update_hint */,
- Multibuffer* /* buffers */
-);
-
-extern void XmbufDestroyBuffers(
- Display* /* dpy */,
- Window /* window */
-);
-
-extern void XmbufDisplayBuffers(
- Display* /* dpy */,
- int /* count */,
- Multibuffer* /* buffers */,
- int /* min_delay */,
- int /* max_delay */
-);
-
-extern Status XmbufGetWindowAttributes(
- Display* /* dpy */,
- Window /* w */,
- XmbufWindowAttributes* /* attr */
-);
-
-extern void XmbufChangeWindowAttributes(
- Display* /* dpy */,
- Window /* w */,
- unsigned long /* valuemask */,
- XmbufSetWindowAttributes* /* attr */
-);
-
-extern Status XmbufGetBufferAttributes(
- Display* /* dpy */,
- Multibuffer /* b */,
- XmbufBufferAttributes* /* attr */
-);
-
-extern void XmbufChangeBufferAttributes(
- Display* /* dpy */,
- Multibuffer /* b */,
- unsigned long /* valuemask */,
- XmbufSetBufferAttributes* /* attr */
-);
-
-extern Status XmbufGetScreenInfo(
- Display* /* dpy */,
- Drawable /* d */,
- int* /* nmono_return */,
- XmbufBufferInfo** /* mono_info_return */,
- int* /* nstereo_return */,
- XmbufBufferInfo** /* stereo_info_return */
-);
-
-extern Window XmbufCreateStereoWindow(
- Display* /* dpy */,
- Window /* parent */,
- int /* x */,
- int /* y */,
- unsigned int /* width */,
- unsigned int /* height */,
- unsigned int /* border_width */,
- int /* depth */,
- unsigned int /* class */,
- Visual* /* visual */,
- unsigned long /* valuemask */,
- XSetWindowAttributes* /* attr */,
- Multibuffer* /* leftp */,
- Multibuffer* /* rightp */
-);
-
-extern void XmbufClearBufferArea(
- Display* /* dpy */,
- Multibuffer /* buffer */,
- int /* x */,
- int /* y */,
- unsigned int /* width */,
- unsigned int /* height */,
- Bool /* exposures */
-);
-
-_XFUNCPROTOEND
-
-#endif /* _MULTIBUF_H_ */
+/*
+ *
+Copyright 1989, 1998 The Open Group
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group shall not be
+used in advertising or otherwise to promote the sale, use or other dealings
+in this Software without prior written authorization from The Open Group.
+ */
+
+#ifndef _MULTIBUF_H_
+#define _MULTIBUF_H_
+
+#include <X11/Xfuncproto.h>
+
+#include <X11/extensions/multibufconst.h>
+
+#if !defined(UNIXCPP) || defined(ANSICPP)
+#define MbufGetReq(name,req,info) GetReq (name, req); \
+ req->reqType = info->codes->major_opcode; \
+ req->mbufReqType = X_##name;
+#else
+#define MbufGetReq(name,req,info) GetReq (name, req); \
+ req->reqType = info->codes->major_opcode; \
+ req->mbufReqType = X_/**/name;
+#endif
+
+/*
+ * Extra definitions that will only be needed in the client
+ */
+typedef XID Multibuffer;
+
+typedef struct {
+ int type; /* of event */
+ unsigned long serial; /* # of last request processed by server */
+ int send_event; /* true if this came frome a SendEvent request */
+ Display *display; /* Display the event was read from */
+ Multibuffer buffer; /* buffer of event */
+ int state; /* see Clobbered constants above */
+} XmbufClobberNotifyEvent;
+
+typedef struct {
+ int type; /* of event */
+ unsigned long serial; /* # of last request processed by server */
+ int send_event; /* true if this came frome a SendEvent request */
+ Display *display; /* Display the event was read from */
+ Multibuffer buffer; /* buffer of event */
+} XmbufUpdateNotifyEvent;
+
+
+/*
+ * per-window attributes that can be got
+ */
+typedef struct {
+ int displayed_index; /* which buffer is being displayed */
+ int update_action; /* Undefined, Background, Untouched, Copied */
+ int update_hint; /* Frequent, Intermittent, Static */
+ int window_mode; /* Mono, Stereo */
+ int nbuffers; /* Number of buffers */
+ Multibuffer *buffers; /* Buffers */
+} XmbufWindowAttributes;
+
+/*
+ * per-window attributes that can be set
+ */
+typedef struct {
+ int update_hint; /* Frequent, Intermittent, Static */
+} XmbufSetWindowAttributes;
+
+
+/*
+ * per-buffer attributes that can be got
+ */
+typedef struct {
+ Window window; /* which window this belongs to */
+ unsigned long event_mask; /* events that have been selected */
+ int buffer_index; /* which buffer is this */
+ int side; /* Mono, Left, Right */
+} XmbufBufferAttributes;
+
+/*
+ * per-buffer attributes that can be set
+ */
+typedef struct {
+ unsigned long event_mask; /* events that have been selected */
+} XmbufSetBufferAttributes;
+
+
+/*
+ * per-screen buffer info (there will be lists of them)
+ */
+typedef struct {
+ VisualID visualid; /* visual usuable at this depth */
+ int max_buffers; /* most buffers for this visual */
+ int depth; /* depth of buffers to be created */
+} XmbufBufferInfo;
+
+_XFUNCPROTOBEGIN
+
+extern Bool XmbufQueryExtension(
+ Display* /* dpy */,
+ int* /* event_base_return */,
+ int* /* error_base_return */
+);
+
+extern Status XmbufGetVersion(
+ Display* /* dpy */,
+ int* /* major_version_return */,
+ int* /* minor_version_return */
+);
+
+extern int XmbufCreateBuffers(
+ Display* /* dpy */,
+ Window /* w */,
+ int /* count */,
+ int /* update_action */,
+ int /* update_hint */,
+ Multibuffer* /* buffers */
+);
+
+extern void XmbufDestroyBuffers(
+ Display* /* dpy */,
+ Window /* window */
+);
+
+extern void XmbufDisplayBuffers(
+ Display* /* dpy */,
+ int /* count */,
+ Multibuffer* /* buffers */,
+ int /* min_delay */,
+ int /* max_delay */
+);
+
+extern Status XmbufGetWindowAttributes(
+ Display* /* dpy */,
+ Window /* w */,
+ XmbufWindowAttributes* /* attr */
+);
+
+extern void XmbufChangeWindowAttributes(
+ Display* /* dpy */,
+ Window /* w */,
+ unsigned long /* valuemask */,
+ XmbufSetWindowAttributes* /* attr */
+);
+
+extern Status XmbufGetBufferAttributes(
+ Display* /* dpy */,
+ Multibuffer /* b */,
+ XmbufBufferAttributes* /* attr */
+);
+
+extern void XmbufChangeBufferAttributes(
+ Display* /* dpy */,
+ Multibuffer /* b */,
+ unsigned long /* valuemask */,
+ XmbufSetBufferAttributes* /* attr */
+);
+
+extern Status XmbufGetScreenInfo(
+ Display* /* dpy */,
+ Drawable /* d */,
+ int* /* nmono_return */,
+ XmbufBufferInfo** /* mono_info_return */,
+ int* /* nstereo_return */,
+ XmbufBufferInfo** /* stereo_info_return */
+);
+
+extern Window XmbufCreateStereoWindow(
+ Display* /* dpy */,
+ Window /* parent */,
+ int /* x */,
+ int /* y */,
+ unsigned int /* width */,
+ unsigned int /* height */,
+ unsigned int /* border_width */,
+ int /* depth */,
+ unsigned int /* class */,
+ Visual* /* visual */,
+ unsigned long /* valuemask */,
+ XSetWindowAttributes* /* attr */,
+ Multibuffer* /* leftp */,
+ Multibuffer* /* rightp */
+);
+
+extern void XmbufClearBufferArea(
+ Display* /* dpy */,
+ Multibuffer /* buffer */,
+ int /* x */,
+ int /* y */,
+ unsigned int /* width */,
+ unsigned int /* height */,
+ Bool /* exposures */
+);
+
+_XFUNCPROTOEND
+
+#endif /* _MULTIBUF_H_ */
diff --git a/libXext/include/X11/extensions/security.h b/libXext/include/X11/extensions/security.h
index 90abc07ee..f5541310b 100644
--- a/libXext/include/X11/extensions/security.h
+++ b/libXext/include/X11/extensions/security.h
@@ -1,77 +1,77 @@
-/*
-Copyright 1996, 1998 The Open Group
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
-
-The above copyright notice and this permission notice shall be included
-in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
-IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR
-OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
-ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall
-not be used in advertising or otherwise to promote the sale, use or
-other dealings in this Software without prior written authorization
-from The Open Group.
-*/
-
-#ifndef _SECURITY_H
-#define _SECURITY_H
-
-#define _XAUTH_STRUCT_ONLY
-#include <X11/Xauth.h>
-
-#include <X11/extensions/secur.h>
-
-_XFUNCPROTOBEGIN
-
-Status XSecurityQueryExtension (
- Display *dpy,
- int *major_version_return,
- int *minor_version_return);
-
-Xauth *XSecurityAllocXauth(void);
-
-void XSecurityFreeXauth(Xauth *auth);
-
-/* type for returned auth ids */
-typedef unsigned long XSecurityAuthorization;
-
-typedef struct {
- unsigned int timeout;
- unsigned int trust_level;
- XID group;
- long event_mask;
-} XSecurityAuthorizationAttributes;
-
-Xauth *XSecurityGenerateAuthorization(
- Display *dpy,
- Xauth *auth_in,
- unsigned long valuemask,
- XSecurityAuthorizationAttributes *attributes,
- XSecurityAuthorization *auth_id_return);
-
-Status XSecurityRevokeAuthorization(
- Display *dpy,
- XSecurityAuthorization auth_id);
-
-_XFUNCPROTOEND
-
-typedef struct {
- int type; /* event base + XSecurityAuthorizationRevoked */
- unsigned long serial; /* # of last request processed by server */
- Bool send_event; /* true if this came from a SendEvent request */
- Display *display; /* Display the event was read from */
- XSecurityAuthorization auth_id; /* revoked authorization id */
-} XSecurityAuthorizationRevokedEvent;
-
-#endif /* _SECURITY_H */
+/*
+Copyright 1996, 1998 The Open Group
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
+
+The above copyright notice and this permission notice shall be included
+in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR
+OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
+ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group shall
+not be used in advertising or otherwise to promote the sale, use or
+other dealings in this Software without prior written authorization
+from The Open Group.
+*/
+
+#ifndef _SECURITY_H
+#define _SECURITY_H
+
+#define _XAUTH_STRUCT_ONLY
+#include <X11/Xauth.h>
+
+#include <X11/extensions/secur.h>
+
+_XFUNCPROTOBEGIN
+
+Status XSecurityQueryExtension (
+ Display *dpy,
+ int *major_version_return,
+ int *minor_version_return);
+
+Xauth *XSecurityAllocXauth(void);
+
+void XSecurityFreeXauth(Xauth *auth);
+
+/* type for returned auth ids */
+typedef unsigned long XSecurityAuthorization;
+
+typedef struct {
+ unsigned int timeout;
+ unsigned int trust_level;
+ XID group;
+ long event_mask;
+} XSecurityAuthorizationAttributes;
+
+Xauth *XSecurityGenerateAuthorization(
+ Display *dpy,
+ Xauth *auth_in,
+ unsigned long valuemask,
+ XSecurityAuthorizationAttributes *attributes,
+ XSecurityAuthorization *auth_id_return);
+
+Status XSecurityRevokeAuthorization(
+ Display *dpy,
+ XSecurityAuthorization auth_id);
+
+_XFUNCPROTOEND
+
+typedef struct {
+ int type; /* event base + XSecurityAuthorizationRevoked */
+ unsigned long serial; /* # of last request processed by server */
+ Bool send_event; /* true if this came from a SendEvent request */
+ Display *display; /* Display the event was read from */
+ XSecurityAuthorization auth_id; /* revoked authorization id */
+} XSecurityAuthorizationRevokedEvent;
+
+#endif /* _SECURITY_H */
diff --git a/libXext/include/X11/extensions/shape.h b/libXext/include/X11/extensions/shape.h
index e2f62d0bc..66af5b1b4 100644
--- a/libXext/include/X11/extensions/shape.h
+++ b/libXext/include/X11/extensions/shape.h
@@ -1,152 +1,152 @@
-/************************************************************
-
-Copyright 1989, 1998 The Open Group
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall not be
-used in advertising or otherwise to promote the sale, use or other dealings
-in this Software without prior written authorization from The Open Group.
-
-********************************************************/
-
-#ifndef _SHAPE_H_
-#define _SHAPE_H_
-
-#include <X11/Xfuncproto.h>
-#include <X11/extensions/shapeconst.h>
-
-#ifndef _SHAPE_SERVER_
-#include <X11/Xutil.h>
-
-typedef struct {
- int type; /* of event */
- unsigned long serial; /* # of last request processed by server */
- Bool send_event; /* true if this came frome a SendEvent request */
- Display *display; /* Display the event was read from */
- Window window; /* window of event */
- int kind; /* ShapeBounding or ShapeClip */
- int x, y; /* extents of new region */
- unsigned width, height;
- Time time; /* server timestamp when region changed */
- Bool shaped; /* true if the region exists */
-} XShapeEvent;
-
-_XFUNCPROTOBEGIN
-
-extern Bool XShapeQueryExtension (
- Display* /* display */,
- int* /* event_base */,
- int* /* error_base */
-);
-
-extern Status XShapeQueryVersion (
- Display* /* display */,
- int* /* major_version */,
- int* /* minor_version */
-);
-
-extern void XShapeCombineRegion (
- Display* /* display */,
- Window /* dest */,
- int /* dest_kind */,
- int /* x_off */,
- int /* y_off */,
- Region /* region */,
- int /* op */
-);
-
-extern void XShapeCombineRectangles (
- Display* /* display */,
- Window /* dest */,
- int /* dest_kind */,
- int /* x_off */,
- int /* y_off */,
- XRectangle* /* rectangles */,
- int /* n_rects */,
- int /* op */,
- int /* ordering */
-);
-
-extern void XShapeCombineMask (
- Display* /* display */,
- Window /* dest */,
- int /* dest_kind */,
- int /* x_off */,
- int /* y_off */,
- Pixmap /* src */,
- int /* op */
-);
-
-extern void XShapeCombineShape (
- Display* /* display */,
- Window /* dest */,
- int /* dest_kind */,
- int /* x_off */,
- int /* y_off */,
- Window /* src */,
- int /* src_kind */,
- int /* op */
-);
-
-extern void XShapeOffsetShape (
- Display* /* display */,
- Window /* dest */,
- int /* dest_kind */,
- int /* x_off */,
- int /* y_off */
-);
-
-extern Status XShapeQueryExtents (
- Display* /* display */,
- Window /* window */,
- Bool* /* bounding_shaped */,
- int* /* x_bounding */,
- int* /* y_bounding */,
- unsigned int* /* w_bounding */,
- unsigned int* /* h_bounding */,
- Bool* /* clip_shaped */,
- int* /* x_clip */,
- int* /* y_clip */,
- unsigned int* /* w_clip */,
- unsigned int* /* h_clip */
-);
-
-extern void XShapeSelectInput (
- Display* /* display */,
- Window /* window */,
- unsigned long /* mask */
-);
-
-extern unsigned long XShapeInputSelected (
- Display* /* display */,
- Window /* window */
-);
-
-extern XRectangle *XShapeGetRectangles (
- Display* /* display */,
- Window /* window */,
- int /* kind */,
- int* /* count */,
- int* /* ordering */
-);
-
-_XFUNCPROTOEND
-
-#endif /* !_SHAPE_SERVER_ */
-
-#endif /* _SHAPE_H_ */
+/************************************************************
+
+Copyright 1989, 1998 The Open Group
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group shall not be
+used in advertising or otherwise to promote the sale, use or other dealings
+in this Software without prior written authorization from The Open Group.
+
+********************************************************/
+
+#ifndef _SHAPE_H_
+#define _SHAPE_H_
+
+#include <X11/Xfuncproto.h>
+#include <X11/extensions/shapeconst.h>
+
+#ifndef _SHAPE_SERVER_
+#include <X11/Xutil.h>
+
+typedef struct {
+ int type; /* of event */
+ unsigned long serial; /* # of last request processed by server */
+ Bool send_event; /* true if this came frome a SendEvent request */
+ Display *display; /* Display the event was read from */
+ Window window; /* window of event */
+ int kind; /* ShapeBounding or ShapeClip */
+ int x, y; /* extents of new region */
+ unsigned width, height;
+ Time time; /* server timestamp when region changed */
+ Bool shaped; /* true if the region exists */
+} XShapeEvent;
+
+_XFUNCPROTOBEGIN
+
+extern Bool XShapeQueryExtension (
+ Display* /* display */,
+ int* /* event_base */,
+ int* /* error_base */
+);
+
+extern Status XShapeQueryVersion (
+ Display* /* display */,
+ int* /* major_version */,
+ int* /* minor_version */
+);
+
+extern void XShapeCombineRegion (
+ Display* /* display */,
+ Window /* dest */,
+ int /* dest_kind */,
+ int /* x_off */,
+ int /* y_off */,
+ Region /* region */,
+ int /* op */
+);
+
+extern void XShapeCombineRectangles (
+ Display* /* display */,
+ Window /* dest */,
+ int /* dest_kind */,
+ int /* x_off */,
+ int /* y_off */,
+ XRectangle* /* rectangles */,
+ int /* n_rects */,
+ int /* op */,
+ int /* ordering */
+);
+
+extern void XShapeCombineMask (
+ Display* /* display */,
+ Window /* dest */,
+ int /* dest_kind */,
+ int /* x_off */,
+ int /* y_off */,
+ Pixmap /* src */,
+ int /* op */
+);
+
+extern void XShapeCombineShape (
+ Display* /* display */,
+ Window /* dest */,
+ int /* dest_kind */,
+ int /* x_off */,
+ int /* y_off */,
+ Window /* src */,
+ int /* src_kind */,
+ int /* op */
+);
+
+extern void XShapeOffsetShape (
+ Display* /* display */,
+ Window /* dest */,
+ int /* dest_kind */,
+ int /* x_off */,
+ int /* y_off */
+);
+
+extern Status XShapeQueryExtents (
+ Display* /* display */,
+ Window /* window */,
+ Bool* /* bounding_shaped */,
+ int* /* x_bounding */,
+ int* /* y_bounding */,
+ unsigned int* /* w_bounding */,
+ unsigned int* /* h_bounding */,
+ Bool* /* clip_shaped */,
+ int* /* x_clip */,
+ int* /* y_clip */,
+ unsigned int* /* w_clip */,
+ unsigned int* /* h_clip */
+);
+
+extern void XShapeSelectInput (
+ Display* /* display */,
+ Window /* window */,
+ unsigned long /* mask */
+);
+
+extern unsigned long XShapeInputSelected (
+ Display* /* display */,
+ Window /* window */
+);
+
+extern XRectangle *XShapeGetRectangles (
+ Display* /* display */,
+ Window /* window */,
+ int /* kind */,
+ int* /* count */,
+ int* /* ordering */
+);
+
+_XFUNCPROTOEND
+
+#endif /* !_SHAPE_SERVER_ */
+
+#endif /* _SHAPE_H_ */
diff --git a/libXext/man/Makefile.am b/libXext/man/Makefile.am
index 0d7c1bba5..fef283f3d 100644
--- a/libXext/man/Makefile.am
+++ b/libXext/man/Makefile.am
@@ -1,87 +1,87 @@
-libmandir = $(LIB_MAN_DIR)
-
-libman_PRE = \
- $(all_shadows:=.man) \
- DBE.man \
- DPMSCapable.man \
- DPMSDisable.man \
- DPMSEnable.man \
- DPMSForceLevel.man \
- DPMSGetTimeouts.man \
- DPMSGetVersion.man \
- DPMSInfo.man \
- DPMSQueryExtension.man \
- DPMSSetTimeouts.man \
- XShape.man \
- XShm.man \
- XcupGetReservedColormapEntries.man \
- XcupQueryVersion.man \
- XcupStoreColors.man \
- XdbeAllocateBackBufferName.man \
- XdbeBeginIdiom.man \
- XdbeDeallocateBackBufferName.man \
- XdbeEndIdiom.man \
- XdbeFreeVisualInfo.man \
- XdbeGetBackBufferAttributes.man \
- XdbeGetVisualInfo.man \
- XdbeQueryExtension.man \
- XdbeSwapBuffers.man \
- Xevi.man \
- Xmbuf.man
-
-XShape_shadows = \
- XShapeQueryExtension \
- XShapeQueryVersion \
- XShapeCombineRegion \
- XShapeCombineRectangles \
- XShapeCombineMask \
- XShapeCombineShape \
- XShapeOffsetShape \
- XShapeQueryExtents \
- XShapeSelectInput \
- XShapeInputSelected \
- XShapeGetRectangles
-
-XShm_shadows = \
- XShmQueryExtension \
- XShmQueryVersion \
- XShmPixmapFormat \
- XShmAttach \
- XShmDetach \
- XShmCreateImage \
- XShmPutImage \
- XShmGetImage \
- XShmCreatePixmap \
- XShmGetEventBase
-
-Xmbuf_shadows = \
- XmbufQueryExtension \
- XmbufGetVersion \
- XmbufCreateBuffers \
- XmbufDestroyBuffers \
- XmbufDisplayBuffers \
- XmbufGetWindowAttributes \
- XmbufChangeWindowAttributes \
- XmbufGetBufferAttributes \
- XmbufChangeBufferAttributes \
- XmbufGetScreenInfo \
- XmbufCreateStereoWindow
-
-Xevi_shadows = \
- XeviQueryVersion \
- XeviGetVisualInfo \
- XeviQueryExtension
-
-all_shadows = $(XShape_shadows) $(XShm_shadows) $(Xmbuf_shadows) $(Xevi_shadows)
-
-libman_DATA = $(libman_PRE:man=@LIB_MAN_SUFFIX@)
-
-EXTRA_DIST = $(libman_PRE)
-
-CLEANFILES = $(libman_DATA)
-
-SUFFIXES = .$(LIB_MAN_SUFFIX) .man
-
-# String replacements in MAN_SUBSTS now come from xorg-macros.m4 via configure
-.man.$(LIB_MAN_SUFFIX):
- $(AM_V_GEN)$(SED) $(MAN_SUBSTS) < $< > $@
+libmandir = $(LIB_MAN_DIR)
+
+libman_PRE = \
+ $(all_shadows:=.man) \
+ DBE.man \
+ DPMSCapable.man \
+ DPMSDisable.man \
+ DPMSEnable.man \
+ DPMSForceLevel.man \
+ DPMSGetTimeouts.man \
+ DPMSGetVersion.man \
+ DPMSInfo.man \
+ DPMSQueryExtension.man \
+ DPMSSetTimeouts.man \
+ XShape.man \
+ XShm.man \
+ XcupGetReservedColormapEntries.man \
+ XcupQueryVersion.man \
+ XcupStoreColors.man \
+ XdbeAllocateBackBufferName.man \
+ XdbeBeginIdiom.man \
+ XdbeDeallocateBackBufferName.man \
+ XdbeEndIdiom.man \
+ XdbeFreeVisualInfo.man \
+ XdbeGetBackBufferAttributes.man \
+ XdbeGetVisualInfo.man \
+ XdbeQueryExtension.man \
+ XdbeSwapBuffers.man \
+ Xevi.man \
+ Xmbuf.man
+
+XShape_shadows = \
+ XShapeQueryExtension \
+ XShapeQueryVersion \
+ XShapeCombineRegion \
+ XShapeCombineRectangles \
+ XShapeCombineMask \
+ XShapeCombineShape \
+ XShapeOffsetShape \
+ XShapeQueryExtents \
+ XShapeSelectInput \
+ XShapeInputSelected \
+ XShapeGetRectangles
+
+XShm_shadows = \
+ XShmQueryExtension \
+ XShmQueryVersion \
+ XShmPixmapFormat \
+ XShmAttach \
+ XShmDetach \
+ XShmCreateImage \
+ XShmPutImage \
+ XShmGetImage \
+ XShmCreatePixmap \
+ XShmGetEventBase
+
+Xmbuf_shadows = \
+ XmbufQueryExtension \
+ XmbufGetVersion \
+ XmbufCreateBuffers \
+ XmbufDestroyBuffers \
+ XmbufDisplayBuffers \
+ XmbufGetWindowAttributes \
+ XmbufChangeWindowAttributes \
+ XmbufGetBufferAttributes \
+ XmbufChangeBufferAttributes \
+ XmbufGetScreenInfo \
+ XmbufCreateStereoWindow
+
+Xevi_shadows = \
+ XeviQueryVersion \
+ XeviGetVisualInfo \
+ XeviQueryExtension
+
+all_shadows = $(XShape_shadows) $(XShm_shadows) $(Xmbuf_shadows) $(Xevi_shadows)
+
+libman_DATA = $(libman_PRE:man=@LIB_MAN_SUFFIX@)
+
+EXTRA_DIST = $(libman_PRE)
+
+CLEANFILES = $(libman_DATA)
+
+SUFFIXES = .$(LIB_MAN_SUFFIX) .man
+
+# String replacements in MAN_SUBSTS now come from xorg-macros.m4 via configure
+.man.$(LIB_MAN_SUFFIX):
+ $(AM_V_GEN)$(SED) $(MAN_SUBSTS) < $< > $@
diff --git a/libXext/man/XShapeCombineMask.man b/libXext/man/XShapeCombineMask.man
index 033600bd9..4153faea6 100644
--- a/libXext/man/XShapeCombineMask.man
+++ b/libXext/man/XShapeCombineMask.man
@@ -1 +1 @@
-.so man__libmansuffix__/XShape.__libmansuffix__
+.so man__libmansuffix__/XShape.__libmansuffix__
diff --git a/libXext/man/XShapeCombineRectangles.man b/libXext/man/XShapeCombineRectangles.man
index 033600bd9..4153faea6 100644
--- a/libXext/man/XShapeCombineRectangles.man
+++ b/libXext/man/XShapeCombineRectangles.man
@@ -1 +1 @@
-.so man__libmansuffix__/XShape.__libmansuffix__
+.so man__libmansuffix__/XShape.__libmansuffix__
diff --git a/libXext/man/XShapeCombineRegion.man b/libXext/man/XShapeCombineRegion.man
index 033600bd9..4153faea6 100644
--- a/libXext/man/XShapeCombineRegion.man
+++ b/libXext/man/XShapeCombineRegion.man
@@ -1 +1 @@
-.so man__libmansuffix__/XShape.__libmansuffix__
+.so man__libmansuffix__/XShape.__libmansuffix__
diff --git a/libXext/man/XShapeCombineShape.man b/libXext/man/XShapeCombineShape.man
index 033600bd9..4153faea6 100644
--- a/libXext/man/XShapeCombineShape.man
+++ b/libXext/man/XShapeCombineShape.man
@@ -1 +1 @@
-.so man__libmansuffix__/XShape.__libmansuffix__
+.so man__libmansuffix__/XShape.__libmansuffix__
diff --git a/libXext/man/XShapeGetRectangles.man b/libXext/man/XShapeGetRectangles.man
index 033600bd9..4153faea6 100644
--- a/libXext/man/XShapeGetRectangles.man
+++ b/libXext/man/XShapeGetRectangles.man
@@ -1 +1 @@
-.so man__libmansuffix__/XShape.__libmansuffix__
+.so man__libmansuffix__/XShape.__libmansuffix__
diff --git a/libXext/man/XShapeInputSelected.man b/libXext/man/XShapeInputSelected.man
index 033600bd9..4153faea6 100644
--- a/libXext/man/XShapeInputSelected.man
+++ b/libXext/man/XShapeInputSelected.man
@@ -1 +1 @@
-.so man__libmansuffix__/XShape.__libmansuffix__
+.so man__libmansuffix__/XShape.__libmansuffix__
diff --git a/libXext/man/XShapeOffsetShape.man b/libXext/man/XShapeOffsetShape.man
index 033600bd9..4153faea6 100644
--- a/libXext/man/XShapeOffsetShape.man
+++ b/libXext/man/XShapeOffsetShape.man
@@ -1 +1 @@
-.so man__libmansuffix__/XShape.__libmansuffix__
+.so man__libmansuffix__/XShape.__libmansuffix__
diff --git a/libXext/man/XShapeQueryExtension.man b/libXext/man/XShapeQueryExtension.man
index 033600bd9..4153faea6 100644
--- a/libXext/man/XShapeQueryExtension.man
+++ b/libXext/man/XShapeQueryExtension.man
@@ -1 +1 @@
-.so man__libmansuffix__/XShape.__libmansuffix__
+.so man__libmansuffix__/XShape.__libmansuffix__
diff --git a/libXext/man/XShapeQueryExtents.man b/libXext/man/XShapeQueryExtents.man
index 033600bd9..4153faea6 100644
--- a/libXext/man/XShapeQueryExtents.man
+++ b/libXext/man/XShapeQueryExtents.man
@@ -1 +1 @@
-.so man__libmansuffix__/XShape.__libmansuffix__
+.so man__libmansuffix__/XShape.__libmansuffix__
diff --git a/libXext/man/XShapeQueryVersion.man b/libXext/man/XShapeQueryVersion.man
index 033600bd9..4153faea6 100644
--- a/libXext/man/XShapeQueryVersion.man
+++ b/libXext/man/XShapeQueryVersion.man
@@ -1 +1 @@
-.so man__libmansuffix__/XShape.__libmansuffix__
+.so man__libmansuffix__/XShape.__libmansuffix__
diff --git a/libXext/man/XShapeSelectInput.man b/libXext/man/XShapeSelectInput.man
index 033600bd9..4153faea6 100644
--- a/libXext/man/XShapeSelectInput.man
+++ b/libXext/man/XShapeSelectInput.man
@@ -1 +1 @@
-.so man__libmansuffix__/XShape.__libmansuffix__
+.so man__libmansuffix__/XShape.__libmansuffix__
diff --git a/libXext/man/XShmAttach.man b/libXext/man/XShmAttach.man
index d2725373c..0bbd0a8bf 100644
--- a/libXext/man/XShmAttach.man
+++ b/libXext/man/XShmAttach.man
@@ -1 +1 @@
-.so man__libmansuffix__/XShm.__libmansuffix__
+.so man__libmansuffix__/XShm.__libmansuffix__
diff --git a/libXext/man/XShmCreateImage.man b/libXext/man/XShmCreateImage.man
index d2725373c..0bbd0a8bf 100644
--- a/libXext/man/XShmCreateImage.man
+++ b/libXext/man/XShmCreateImage.man
@@ -1 +1 @@
-.so man__libmansuffix__/XShm.__libmansuffix__
+.so man__libmansuffix__/XShm.__libmansuffix__
diff --git a/libXext/man/XShmCreatePixmap.man b/libXext/man/XShmCreatePixmap.man
index d2725373c..0bbd0a8bf 100644
--- a/libXext/man/XShmCreatePixmap.man
+++ b/libXext/man/XShmCreatePixmap.man
@@ -1 +1 @@
-.so man__libmansuffix__/XShm.__libmansuffix__
+.so man__libmansuffix__/XShm.__libmansuffix__
diff --git a/libXext/man/XShmDetach.man b/libXext/man/XShmDetach.man
index d2725373c..0bbd0a8bf 100644
--- a/libXext/man/XShmDetach.man
+++ b/libXext/man/XShmDetach.man
@@ -1 +1 @@
-.so man__libmansuffix__/XShm.__libmansuffix__
+.so man__libmansuffix__/XShm.__libmansuffix__
diff --git a/libXext/man/XShmGetEventBase.man b/libXext/man/XShmGetEventBase.man
index d2725373c..0bbd0a8bf 100644
--- a/libXext/man/XShmGetEventBase.man
+++ b/libXext/man/XShmGetEventBase.man
@@ -1 +1 @@
-.so man__libmansuffix__/XShm.__libmansuffix__
+.so man__libmansuffix__/XShm.__libmansuffix__
diff --git a/libXext/man/XShmGetImage.man b/libXext/man/XShmGetImage.man
index d2725373c..0bbd0a8bf 100644
--- a/libXext/man/XShmGetImage.man
+++ b/libXext/man/XShmGetImage.man
@@ -1 +1 @@
-.so man__libmansuffix__/XShm.__libmansuffix__
+.so man__libmansuffix__/XShm.__libmansuffix__
diff --git a/libXext/man/XShmPixmapFormat.man b/libXext/man/XShmPixmapFormat.man
index d2725373c..0bbd0a8bf 100644
--- a/libXext/man/XShmPixmapFormat.man
+++ b/libXext/man/XShmPixmapFormat.man
@@ -1 +1 @@
-.so man__libmansuffix__/XShm.__libmansuffix__
+.so man__libmansuffix__/XShm.__libmansuffix__
diff --git a/libXext/man/XShmPutImage.man b/libXext/man/XShmPutImage.man
index d2725373c..0bbd0a8bf 100644
--- a/libXext/man/XShmPutImage.man
+++ b/libXext/man/XShmPutImage.man
@@ -1 +1 @@
-.so man__libmansuffix__/XShm.__libmansuffix__
+.so man__libmansuffix__/XShm.__libmansuffix__
diff --git a/libXext/man/XShmQueryExtension.man b/libXext/man/XShmQueryExtension.man
index d2725373c..0bbd0a8bf 100644
--- a/libXext/man/XShmQueryExtension.man
+++ b/libXext/man/XShmQueryExtension.man
@@ -1 +1 @@
-.so man__libmansuffix__/XShm.__libmansuffix__
+.so man__libmansuffix__/XShm.__libmansuffix__
diff --git a/libXext/man/XShmQueryVersion.man b/libXext/man/XShmQueryVersion.man
index d2725373c..0bbd0a8bf 100644
--- a/libXext/man/XShmQueryVersion.man
+++ b/libXext/man/XShmQueryVersion.man
@@ -1 +1 @@
-.so man__libmansuffix__/XShm.__libmansuffix__
+.so man__libmansuffix__/XShm.__libmansuffix__
diff --git a/libXext/man/XeviGetVisualInfo.man b/libXext/man/XeviGetVisualInfo.man
index dae44c178..a4324e78a 100644
--- a/libXext/man/XeviGetVisualInfo.man
+++ b/libXext/man/XeviGetVisualInfo.man
@@ -1 +1 @@
-.so man__libmansuffix__/Xevi.__libmansuffix__
+.so man__libmansuffix__/Xevi.__libmansuffix__
diff --git a/libXext/man/XeviQueryExtension.man b/libXext/man/XeviQueryExtension.man
index dae44c178..a4324e78a 100644
--- a/libXext/man/XeviQueryExtension.man
+++ b/libXext/man/XeviQueryExtension.man
@@ -1 +1 @@
-.so man__libmansuffix__/Xevi.__libmansuffix__
+.so man__libmansuffix__/Xevi.__libmansuffix__
diff --git a/libXext/man/XeviQueryVersion.man b/libXext/man/XeviQueryVersion.man
index dae44c178..a4324e78a 100644
--- a/libXext/man/XeviQueryVersion.man
+++ b/libXext/man/XeviQueryVersion.man
@@ -1 +1 @@
-.so man__libmansuffix__/Xevi.__libmansuffix__
+.so man__libmansuffix__/Xevi.__libmansuffix__
diff --git a/libXext/man/XmbufChangeBufferAttributes.man b/libXext/man/XmbufChangeBufferAttributes.man
index 2a25ca646..2d3501d25 100644
--- a/libXext/man/XmbufChangeBufferAttributes.man
+++ b/libXext/man/XmbufChangeBufferAttributes.man
@@ -1 +1 @@
-.so man__libmansuffix__/Xmbuf.__libmansuffix__
+.so man__libmansuffix__/Xmbuf.__libmansuffix__
diff --git a/libXext/man/XmbufChangeWindowAttributes.man b/libXext/man/XmbufChangeWindowAttributes.man
index 2a25ca646..2d3501d25 100644
--- a/libXext/man/XmbufChangeWindowAttributes.man
+++ b/libXext/man/XmbufChangeWindowAttributes.man
@@ -1 +1 @@
-.so man__libmansuffix__/Xmbuf.__libmansuffix__
+.so man__libmansuffix__/Xmbuf.__libmansuffix__
diff --git a/libXext/man/XmbufCreateBuffers.man b/libXext/man/XmbufCreateBuffers.man
index 2a25ca646..2d3501d25 100644
--- a/libXext/man/XmbufCreateBuffers.man
+++ b/libXext/man/XmbufCreateBuffers.man
@@ -1 +1 @@
-.so man__libmansuffix__/Xmbuf.__libmansuffix__
+.so man__libmansuffix__/Xmbuf.__libmansuffix__
diff --git a/libXext/man/XmbufCreateStereoWindow.man b/libXext/man/XmbufCreateStereoWindow.man
index 2a25ca646..2d3501d25 100644
--- a/libXext/man/XmbufCreateStereoWindow.man
+++ b/libXext/man/XmbufCreateStereoWindow.man
@@ -1 +1 @@
-.so man__libmansuffix__/Xmbuf.__libmansuffix__
+.so man__libmansuffix__/Xmbuf.__libmansuffix__
diff --git a/libXext/man/XmbufDestroyBuffers.man b/libXext/man/XmbufDestroyBuffers.man
index 2a25ca646..2d3501d25 100644
--- a/libXext/man/XmbufDestroyBuffers.man
+++ b/libXext/man/XmbufDestroyBuffers.man
@@ -1 +1 @@
-.so man__libmansuffix__/Xmbuf.__libmansuffix__
+.so man__libmansuffix__/Xmbuf.__libmansuffix__
diff --git a/libXext/man/XmbufDisplayBuffers.man b/libXext/man/XmbufDisplayBuffers.man
index 2a25ca646..2d3501d25 100644
--- a/libXext/man/XmbufDisplayBuffers.man
+++ b/libXext/man/XmbufDisplayBuffers.man
@@ -1 +1 @@
-.so man__libmansuffix__/Xmbuf.__libmansuffix__
+.so man__libmansuffix__/Xmbuf.__libmansuffix__
diff --git a/libXext/man/XmbufGetBufferAttributes.man b/libXext/man/XmbufGetBufferAttributes.man
index 2a25ca646..2d3501d25 100644
--- a/libXext/man/XmbufGetBufferAttributes.man
+++ b/libXext/man/XmbufGetBufferAttributes.man
@@ -1 +1 @@
-.so man__libmansuffix__/Xmbuf.__libmansuffix__
+.so man__libmansuffix__/Xmbuf.__libmansuffix__
diff --git a/libXext/man/XmbufGetScreenInfo.man b/libXext/man/XmbufGetScreenInfo.man
index 2a25ca646..2d3501d25 100644
--- a/libXext/man/XmbufGetScreenInfo.man
+++ b/libXext/man/XmbufGetScreenInfo.man
@@ -1 +1 @@
-.so man__libmansuffix__/Xmbuf.__libmansuffix__
+.so man__libmansuffix__/Xmbuf.__libmansuffix__
diff --git a/libXext/man/XmbufGetVersion.man b/libXext/man/XmbufGetVersion.man
index 2a25ca646..2d3501d25 100644
--- a/libXext/man/XmbufGetVersion.man
+++ b/libXext/man/XmbufGetVersion.man
@@ -1 +1 @@
-.so man__libmansuffix__/Xmbuf.__libmansuffix__
+.so man__libmansuffix__/Xmbuf.__libmansuffix__
diff --git a/libXext/man/XmbufGetWindowAttributes.man b/libXext/man/XmbufGetWindowAttributes.man
index 2a25ca646..2d3501d25 100644
--- a/libXext/man/XmbufGetWindowAttributes.man
+++ b/libXext/man/XmbufGetWindowAttributes.man
@@ -1 +1 @@
-.so man__libmansuffix__/Xmbuf.__libmansuffix__
+.so man__libmansuffix__/Xmbuf.__libmansuffix__
diff --git a/libXext/man/XmbufQueryExtension.man b/libXext/man/XmbufQueryExtension.man
index 2a25ca646..2d3501d25 100644
--- a/libXext/man/XmbufQueryExtension.man
+++ b/libXext/man/XmbufQueryExtension.man
@@ -1 +1 @@
-.so man__libmansuffix__/Xmbuf.__libmansuffix__
+.so man__libmansuffix__/Xmbuf.__libmansuffix__
diff --git a/libXext/xext.pc.in b/libXext/xext.pc.in
index 0e6efeb7b..cf9370134 100644
--- a/libXext/xext.pc.in
+++ b/libXext/xext.pc.in
@@ -1,12 +1,12 @@
-prefix=@prefix@
-exec_prefix=@exec_prefix@
-libdir=@libdir@
-includedir=@includedir@
-
-Name: Xext
-Description: Misc X Extension Library
-Version: @PACKAGE_VERSION@
-Requires: xextproto
-Requires.private: x11
-Cflags: -I${includedir}
-Libs: -L${libdir} -lXext
+prefix=@prefix@
+exec_prefix=@exec_prefix@
+libdir=@libdir@
+includedir=@includedir@
+
+Name: Xext
+Description: Misc X Extension Library
+Version: @PACKAGE_VERSION@
+Requires: xextproto
+Requires.private: x11
+Cflags: -I${includedir}
+Libs: -L${libdir} -lXext
diff --git a/libXinerama/.gitignore b/libXinerama/.gitignore
index 3c327ee35..a9a016414 100644
--- a/libXinerama/.gitignore
+++ b/libXinerama/.gitignore
@@ -1,78 +1,78 @@
-#
-# X.Org module default exclusion patterns
-# The next section if for module specific patterns
-#
-# Do not edit the following section
-# GNU Build System (Autotools)
-aclocal.m4
-autom4te.cache/
-autoscan.log
-ChangeLog
-compile
-config.guess
-config.h
-config.h.in
-config.log
-config-ml.in
-config.py
-config.status
-config.status.lineno
-config.sub
-configure
-configure.scan
-depcomp
-.deps/
-INSTALL
-install-sh
-.libs/
-libtool
-libtool.m4
-ltmain.sh
-lt~obsolete.m4
-ltoptions.m4
-ltsugar.m4
-ltversion.m4
-Makefile
-Makefile.in
-mdate-sh
-missing
-mkinstalldirs
-*.pc
-py-compile
-stamp-h?
-symlink-tree
-texinfo.tex
-ylwrap
-
-# Do not edit the following section
-# Edit Compile Debug Document Distribute
-*~
-*.[0-9]
-*.[0-9]x
-*.bak
-*.bin
-core
-*.dll
-*.exe
-*-ISO*.bdf
-*-JIS*.bdf
-*-KOI8*.bdf
-*.kld
-*.ko
-*.ko.cmd
-*.lai
-*.l[oa]
-*.[oa]
-*.obj
-*.patch
-*.so
-*.pcf.gz
-*.pdb
-*.tar.bz2
-*.tar.gz
-#
-# Add & Override patterns for libXinerama
-#
-# Edit the following section as needed
-# For example, !report.pc overrides *.pc. See 'man gitignore'
-#
+#
+# X.Org module default exclusion patterns
+# The next section if for module specific patterns
+#
+# Do not edit the following section
+# GNU Build System (Autotools)
+aclocal.m4
+autom4te.cache/
+autoscan.log
+ChangeLog
+compile
+config.guess
+config.h
+config.h.in
+config.log
+config-ml.in
+config.py
+config.status
+config.status.lineno
+config.sub
+configure
+configure.scan
+depcomp
+.deps/
+INSTALL
+install-sh
+.libs/
+libtool
+libtool.m4
+ltmain.sh
+lt~obsolete.m4
+ltoptions.m4
+ltsugar.m4
+ltversion.m4
+Makefile
+Makefile.in
+mdate-sh
+missing
+mkinstalldirs
+*.pc
+py-compile
+stamp-h?
+symlink-tree
+texinfo.tex
+ylwrap
+
+# Do not edit the following section
+# Edit Compile Debug Document Distribute
+*~
+*.[0-9]
+*.[0-9]x
+*.bak
+*.bin
+core
+*.dll
+*.exe
+*-ISO*.bdf
+*-JIS*.bdf
+*-KOI8*.bdf
+*.kld
+*.ko
+*.ko.cmd
+*.lai
+*.l[oa]
+*.[oa]
+*.obj
+*.patch
+*.so
+*.pcf.gz
+*.pdb
+*.tar.bz2
+*.tar.gz
+#
+# Add & Override patterns for libXinerama
+#
+# Edit the following section as needed
+# For example, !report.pc overrides *.pc. See 'man gitignore'
+#
diff --git a/libXinerama/README b/libXinerama/README
index f86ceae96..397233598 100644
--- a/libXinerama/README
+++ b/libXinerama/README
@@ -1,25 +1,25 @@
-libXinerama - API for Xinerama extension to X11 Protocol
-
-All questions regarding this software should be directed at the
-Xorg mailing list:
-
- http://lists.freedesktop.org/mailman/listinfo/xorg
-
-Please submit bug reports to the Xorg bugzilla:
-
- https://bugs.freedesktop.org/enter_bug.cgi?product=xorg
-
-The master development code repository can be found at:
-
- git://anongit.freedesktop.org/git/xorg/lib/libXinerama
-
- http://cgit.freedesktop.org/xorg/lib/libXinerama
-
-For patch submission instructions, see:
-
- http://www.x.org/wiki/Development/Documentation/SubmittingPatches
-
-For more information on the git code manager, see:
-
- http://wiki.x.org/wiki/GitPage
-
+libXinerama - API for Xinerama extension to X11 Protocol
+
+All questions regarding this software should be directed at the
+Xorg mailing list:
+
+ http://lists.freedesktop.org/mailman/listinfo/xorg
+
+Please submit bug reports to the Xorg bugzilla:
+
+ https://bugs.freedesktop.org/enter_bug.cgi?product=xorg
+
+The master development code repository can be found at:
+
+ git://anongit.freedesktop.org/git/xorg/lib/libXinerama
+
+ http://cgit.freedesktop.org/xorg/lib/libXinerama
+
+For patch submission instructions, see:
+
+ http://www.x.org/wiki/Development/Documentation/SubmittingPatches
+
+For more information on the git code manager, see:
+
+ http://wiki.x.org/wiki/GitPage
+
diff --git a/libXinerama/autogen.sh b/libXinerama/autogen.sh
index 6fcae015c..904cd6746 100644
--- a/libXinerama/autogen.sh
+++ b/libXinerama/autogen.sh
@@ -1,12 +1,12 @@
-#! /bin/sh
-
-srcdir=`dirname $0`
-test -z "$srcdir" && srcdir=.
-
-ORIGDIR=`pwd`
-cd $srcdir
-
-autoreconf -v --install || exit 1
-cd $ORIGDIR || exit $?
-
-$srcdir/configure --enable-maintainer-mode "$@"
+#! /bin/sh
+
+srcdir=`dirname $0`
+test -z "$srcdir" && srcdir=.
+
+ORIGDIR=`pwd`
+cd $srcdir
+
+autoreconf -v --install || exit 1
+cd $ORIGDIR || exit $?
+
+$srcdir/configure --enable-maintainer-mode "$@"
diff --git a/libXinerama/man/XineramaIsActive.man b/libXinerama/man/XineramaIsActive.man
index a4f83321b..bf86f34ae 100644
--- a/libXinerama/man/XineramaIsActive.man
+++ b/libXinerama/man/XineramaIsActive.man
@@ -1 +1 @@
-.so man__libmansuffix__/Xinerama.__libmansuffix__
+.so man__libmansuffix__/Xinerama.__libmansuffix__
diff --git a/libXinerama/man/XineramaQueryExtension.man b/libXinerama/man/XineramaQueryExtension.man
index a4f83321b..bf86f34ae 100644
--- a/libXinerama/man/XineramaQueryExtension.man
+++ b/libXinerama/man/XineramaQueryExtension.man
@@ -1 +1 @@
-.so man__libmansuffix__/Xinerama.__libmansuffix__
+.so man__libmansuffix__/Xinerama.__libmansuffix__
diff --git a/libXinerama/man/XineramaQueryScreens.man b/libXinerama/man/XineramaQueryScreens.man
index a4f83321b..bf86f34ae 100644
--- a/libXinerama/man/XineramaQueryScreens.man
+++ b/libXinerama/man/XineramaQueryScreens.man
@@ -1 +1 @@
-.so man__libmansuffix__/Xinerama.__libmansuffix__
+.so man__libmansuffix__/Xinerama.__libmansuffix__
diff --git a/libXinerama/man/XineramaQueryVersion.man b/libXinerama/man/XineramaQueryVersion.man
index a4f83321b..bf86f34ae 100644
--- a/libXinerama/man/XineramaQueryVersion.man
+++ b/libXinerama/man/XineramaQueryVersion.man
@@ -1 +1 @@
-.so man__libmansuffix__/Xinerama.__libmansuffix__
+.so man__libmansuffix__/Xinerama.__libmansuffix__
diff --git a/libXinerama/src/Makefile.am b/libXinerama/src/Makefile.am
index cac6fd6d0..c362ef187 100644
--- a/libXinerama/src/Makefile.am
+++ b/libXinerama/src/Makefile.am
@@ -1,27 +1,27 @@
-AM_CFLAGS = -I$(top_srcdir)/include \
- -I$(top_srcdir)/include/X11 \
- -I$(top_srcdir)/include/X11/extensions \
- $(XINERAMA_CFLAGS) \
- $(MALLOC_ZERO_CFLAGS) \
- $(CWARNFLAGS)
-
-lib_LTLIBRARIES = libXinerama.la
-
-libXinerama_la_SOURCES = \
- Xinerama.c
-
-libXinerama_la_LIBADD = $(XINERAMA_LIBS)
-
-libXinerama_la_LDFLAGS = -version-number 1:0:0 -no-undefined
-
-libXineramaincludedir = $(includedir)/X11/extensions
-libXineramainclude_HEADERS = $(top_srcdir)/include/X11/extensions/Xinerama.h \
- $(top_srcdir)/include/X11/extensions/panoramiXext.h
-
-if LINT
-ALL_LINT_FLAGS=$(LINT_FLAGS) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
- $(AM_CPPFLAGS) $(CPPFLAGS)
-
-lint:
- $(LINT) $(ALL_LINT_FLAGS) $(libXinerama_la_SOURCES) $(XINERAMA_LIBS)
-endif LINT
+AM_CFLAGS = -I$(top_srcdir)/include \
+ -I$(top_srcdir)/include/X11 \
+ -I$(top_srcdir)/include/X11/extensions \
+ $(XINERAMA_CFLAGS) \
+ $(MALLOC_ZERO_CFLAGS) \
+ $(CWARNFLAGS)
+
+lib_LTLIBRARIES = libXinerama.la
+
+libXinerama_la_SOURCES = \
+ Xinerama.c
+
+libXinerama_la_LIBADD = $(XINERAMA_LIBS)
+
+libXinerama_la_LDFLAGS = -version-number 1:0:0 -no-undefined
+
+libXineramaincludedir = $(includedir)/X11/extensions
+libXineramainclude_HEADERS = $(top_srcdir)/include/X11/extensions/Xinerama.h \
+ $(top_srcdir)/include/X11/extensions/panoramiXext.h
+
+if LINT
+ALL_LINT_FLAGS=$(LINT_FLAGS) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
+ $(AM_CPPFLAGS) $(CPPFLAGS)
+
+lint:
+ $(LINT) $(ALL_LINT_FLAGS) $(libXinerama_la_SOURCES) $(XINERAMA_LIBS)
+endif LINT
diff --git a/libXinerama/xinerama.pc.in b/libXinerama/xinerama.pc.in
index f36049764..a2ffe1b3f 100644
--- a/libXinerama/xinerama.pc.in
+++ b/libXinerama/xinerama.pc.in
@@ -1,12 +1,12 @@
-prefix=@prefix@
-exec_prefix=@exec_prefix@
-libdir=@libdir@
-includedir=@includedir@
-
-Name: Xinerama
-Description: The Xinerama Library
-Version: @PACKAGE_VERSION@
-Requires: xineramaproto
-Requires.private: x11 xext
-Cflags: -I${includedir}
-Libs: -L${libdir} -lXinerama
+prefix=@prefix@
+exec_prefix=@exec_prefix@
+libdir=@libdir@
+includedir=@includedir@
+
+Name: Xinerama
+Description: The Xinerama Library
+Version: @PACKAGE_VERSION@
+Requires: xineramaproto
+Requires.private: x11 xext
+Cflags: -I${includedir}
+Libs: -L${libdir} -lXinerama
diff --git a/libfontenc/.gitignore b/libfontenc/.gitignore
index f5a54a370..8fa75f179 100644
--- a/libfontenc/.gitignore
+++ b/libfontenc/.gitignore
@@ -1,78 +1,78 @@
-#
-# X.Org module default exclusion patterns
-# The next section if for module specific patterns
-#
-# Do not edit the following section
-# GNU Build System (Autotools)
-aclocal.m4
-autom4te.cache/
-autoscan.log
-ChangeLog
-compile
-config.guess
-config.h
-config.h.in
-config.log
-config-ml.in
-config.py
-config.status
-config.status.lineno
-config.sub
-configure
-configure.scan
-depcomp
-.deps/
-INSTALL
-install-sh
-.libs/
-libtool
-libtool.m4
-ltmain.sh
-lt~obsolete.m4
-ltoptions.m4
-ltsugar.m4
-ltversion.m4
-Makefile
-Makefile.in
-mdate-sh
-missing
-mkinstalldirs
-*.pc
-py-compile
-stamp-h?
-symlink-tree
-texinfo.tex
-ylwrap
-
-# Do not edit the following section
-# Edit Compile Debug Document Distribute
-*~
-*.[0-9]
-*.[0-9]x
-*.bak
-*.bin
-core
-*.dll
-*.exe
-*-ISO*.bdf
-*-JIS*.bdf
-*-KOI8*.bdf
-*.kld
-*.ko
-*.ko.cmd
-*.lai
-*.l[oa]
-*.[oa]
-*.obj
-*.patch
-*.so
-*.pcf.gz
-*.pdb
-*.tar.bz2
-*.tar.gz
-#
-# Add & Override patterns for libfontenc
-#
-# Edit the following section as needed
-# For example, !report.pc overrides *.pc. See 'man gitignore'
-#
+#
+# X.Org module default exclusion patterns
+# The next section if for module specific patterns
+#
+# Do not edit the following section
+# GNU Build System (Autotools)
+aclocal.m4
+autom4te.cache/
+autoscan.log
+ChangeLog
+compile
+config.guess
+config.h
+config.h.in
+config.log
+config-ml.in
+config.py
+config.status
+config.status.lineno
+config.sub
+configure
+configure.scan
+depcomp
+.deps/
+INSTALL
+install-sh
+.libs/
+libtool
+libtool.m4
+ltmain.sh
+lt~obsolete.m4
+ltoptions.m4
+ltsugar.m4
+ltversion.m4
+Makefile
+Makefile.in
+mdate-sh
+missing
+mkinstalldirs
+*.pc
+py-compile
+stamp-h?
+symlink-tree
+texinfo.tex
+ylwrap
+
+# Do not edit the following section
+# Edit Compile Debug Document Distribute
+*~
+*.[0-9]
+*.[0-9]x
+*.bak
+*.bin
+core
+*.dll
+*.exe
+*-ISO*.bdf
+*-JIS*.bdf
+*-KOI8*.bdf
+*.kld
+*.ko
+*.ko.cmd
+*.lai
+*.l[oa]
+*.[oa]
+*.obj
+*.patch
+*.so
+*.pcf.gz
+*.pdb
+*.tar.bz2
+*.tar.gz
+#
+# Add & Override patterns for libfontenc
+#
+# Edit the following section as needed
+# For example, !report.pc overrides *.pc. See 'man gitignore'
+#
diff --git a/libfontenc/COPYING b/libfontenc/COPYING
index 047bead5a..51327effd 100644
--- a/libfontenc/COPYING
+++ b/libfontenc/COPYING
@@ -1,19 +1,19 @@
-Copyright (c) 1998-2001 by Juliusz Chroboczek
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
+Copyright (c) 1998-2001 by Juliusz Chroboczek
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
diff --git a/libfontenc/README b/libfontenc/README
index f4e90ac42..8a6658d49 100644
--- a/libfontenc/README
+++ b/libfontenc/README
@@ -1,25 +1,25 @@
-libfontenc - font encoding library
-
-All questions regarding this software should be directed at the
-Xorg mailing list:
-
- http://lists.freedesktop.org/mailman/listinfo/xorg
-
-Please submit bug reports to the Xorg bugzilla:
-
- https://bugs.freedesktop.org/enter_bug.cgi?product=xorg
-
-The master development code repository can be found at:
-
- git://anongit.freedesktop.org/git/xorg/lib/libfontenc
-
- http://cgit.freedesktop.org/xorg/lib/libfontenc
-
-For patch submission instructions, see:
-
- http://www.x.org/wiki/Development/Documentation/SubmittingPatches
-
-For more information on the git code manager, see:
-
- http://wiki.x.org/wiki/GitPage
-
+libfontenc - font encoding library
+
+All questions regarding this software should be directed at the
+Xorg mailing list:
+
+ http://lists.freedesktop.org/mailman/listinfo/xorg
+
+Please submit bug reports to the Xorg bugzilla:
+
+ https://bugs.freedesktop.org/enter_bug.cgi?product=xorg
+
+The master development code repository can be found at:
+
+ git://anongit.freedesktop.org/git/xorg/lib/libfontenc
+
+ http://cgit.freedesktop.org/xorg/lib/libfontenc
+
+For patch submission instructions, see:
+
+ http://www.x.org/wiki/Development/Documentation/SubmittingPatches
+
+For more information on the git code manager, see:
+
+ http://wiki.x.org/wiki/GitPage
+
diff --git a/libfontenc/autogen.sh b/libfontenc/autogen.sh
index 6fcae015c..904cd6746 100644
--- a/libfontenc/autogen.sh
+++ b/libfontenc/autogen.sh
@@ -1,12 +1,12 @@
-#! /bin/sh
-
-srcdir=`dirname $0`
-test -z "$srcdir" && srcdir=.
-
-ORIGDIR=`pwd`
-cd $srcdir
-
-autoreconf -v --install || exit 1
-cd $ORIGDIR || exit $?
-
-$srcdir/configure --enable-maintainer-mode "$@"
+#! /bin/sh
+
+srcdir=`dirname $0`
+test -z "$srcdir" && srcdir=.
+
+ORIGDIR=`pwd`
+cd $srcdir
+
+autoreconf -v --install || exit 1
+cd $ORIGDIR || exit $?
+
+$srcdir/configure --enable-maintainer-mode "$@"
diff --git a/libfontenc/fontenc.pc.in b/libfontenc/fontenc.pc.in
index f28f2ce22..1be100f2d 100644
--- a/libfontenc/fontenc.pc.in
+++ b/libfontenc/fontenc.pc.in
@@ -1,10 +1,10 @@
-prefix=@prefix@
-exec_prefix=@exec_prefix@
-libdir=@libdir@
-includedir=@includedir@
-
-Name: fontenc
-Description: The fontenc Library
-Version: @PACKAGE_VERSION@
-Cflags: -I${includedir}
-Libs: -L${libdir} -lfontenc
+prefix=@prefix@
+exec_prefix=@exec_prefix@
+libdir=@libdir@
+includedir=@includedir@
+
+Name: fontenc
+Description: The fontenc Library
+Version: @PACKAGE_VERSION@
+Cflags: -I${includedir}
+Libs: -L${libdir} -lfontenc
diff --git a/libfontenc/include/X11/fonts/fontenc.h b/libfontenc/include/X11/fonts/fontenc.h
index d33409a3d..656cfaae7 100644
--- a/libfontenc/include/X11/fonts/fontenc.h
+++ b/libfontenc/include/X11/fonts/fontenc.h
@@ -1,122 +1,122 @@
-/*
-Copyright (c) 1998-2001 by Juliusz Chroboczek
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
-*/
-
-/* Header for backend-independent encoding code */
-
-/* An encoding is identified with a name. An encoding contains some
- global encoding data, such as its size, and a set of mappings.
- Mappings are identified by their type and two integers, known as
- pid and eid, the interpretation of which is type dependent. */
-
-#ifndef _FONTENC_H
-#define _FONTENC_H
-
-/* Encoding types. For future extensions, clients should be prepared
- to ignore unknown encoding types. */
-
-/* 0 is treated specially. */
-
-#define FONT_ENCODING_UNICODE 1
-#define FONT_ENCODING_TRUETYPE 2
-#define FONT_ENCODING_POSTSCRIPT 3
-
-/* This structure represents a mapping, either from numeric codes from
- numeric codes, or from numeric codes to strings. */
-
-/* It is expected that only one of `recode' and `name' will actually
- be present. However, having both fields simplifies the interface
- somewhat. */
-
-typedef struct _FontMap {
- int type; /* the type of the mapping */
- int pid, eid; /* the identification of the mapping */
- unsigned (*recode)(unsigned, void*); /* mapping function */
- char *(*name)(unsigned, void*); /* function returning glyph names */
- void *client_data; /* second parameter of the two above */
- struct _FontMap *next; /* link to next element in list */
- /* The following was added for version 0.3 of the font interface. */
- /* It should be kept at the end to preserve binary compatibility. */
- struct _FontEnc *encoding;
-} FontMapRec, *FontMapPtr;
-
-/* This is the structure that holds all the info for one encoding. It
- consists of a charset name, its size, and a linked list of mappings
- like above. */
-
-typedef struct _FontEnc {
- char *name; /* the name of the encoding */
- char **aliases; /* its aliases, null terminated */
- int size; /* its size, either in bytes or rows */
- int row_size; /* the size of a row, or 0 if bytes */
- FontMapPtr mappings; /* linked list of mappings */
- struct _FontEnc *next; /* link to next element */
- /* the following two were added in version 0.2 of the font interface */
- /* they should be kept at the end to preserve binary compatibility */
- int first; /* first byte or row */
- int first_col; /* first column in each row */
-} FontEncRec, *FontEncPtr;
-
-typedef struct _FontMapReverse {
- unsigned int (*reverse)(unsigned, void*);
- void *data;
-} FontMapReverseRec, *FontMapReversePtr;
-
-
-/* Function prototypes */
-
-/* extract an encoding name from an XLFD name. Returns a pointer to a
- *static* buffer, or NULL */
-char *FontEncFromXLFD(const char*, int);
-
-/* find the encoding data for a given encoding name; second parameter
- is the filename of the font for which the encoding is needed.
- Returns NULL on failure. */
-FontEncPtr FontEncFind(const char*, const char*);
-
-/* Find a given mapping for an encoding. This is only a convenience
- function, as clients are allowed to scavenge the data structures
- themselves (as the TrueType backend does). */
-
-FontMapPtr FontMapFind(FontEncPtr, int, int, int);
-
-/* Do both in a single step */
-FontMapPtr FontEncMapFind(const char *, int, int, int, const char *);
-
-/* Recode a code. Always succeeds. */
-unsigned FontEncRecode(unsigned, FontMapPtr);
-
-/* Return a name for a code. Returns a string or NULL. */
-char *FontEncName(unsigned, FontMapPtr);
-
-/* Return a pointer to the name of the system encodings directory. */
-/* This string is static and should not be modified. */
-char* FontEncDirectory(void);
-
-/* Identify an encoding file. If fileName doesn't exist, or is not an
- encoding file, return NULL, otherwise returns a NULL-terminated
- array of strings. */
-char **FontEncIdentify(const char *fileName);
-
-FontMapReversePtr FontMapReverse(FontMapPtr);
-
-void FontMapReverseFree(FontMapReversePtr);
-#endif
+/*
+Copyright (c) 1998-2001 by Juliusz Chroboczek
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
+*/
+
+/* Header for backend-independent encoding code */
+
+/* An encoding is identified with a name. An encoding contains some
+ global encoding data, such as its size, and a set of mappings.
+ Mappings are identified by their type and two integers, known as
+ pid and eid, the interpretation of which is type dependent. */
+
+#ifndef _FONTENC_H
+#define _FONTENC_H
+
+/* Encoding types. For future extensions, clients should be prepared
+ to ignore unknown encoding types. */
+
+/* 0 is treated specially. */
+
+#define FONT_ENCODING_UNICODE 1
+#define FONT_ENCODING_TRUETYPE 2
+#define FONT_ENCODING_POSTSCRIPT 3
+
+/* This structure represents a mapping, either from numeric codes from
+ numeric codes, or from numeric codes to strings. */
+
+/* It is expected that only one of `recode' and `name' will actually
+ be present. However, having both fields simplifies the interface
+ somewhat. */
+
+typedef struct _FontMap {
+ int type; /* the type of the mapping */
+ int pid, eid; /* the identification of the mapping */
+ unsigned (*recode)(unsigned, void*); /* mapping function */
+ char *(*name)(unsigned, void*); /* function returning glyph names */
+ void *client_data; /* second parameter of the two above */
+ struct _FontMap *next; /* link to next element in list */
+ /* The following was added for version 0.3 of the font interface. */
+ /* It should be kept at the end to preserve binary compatibility. */
+ struct _FontEnc *encoding;
+} FontMapRec, *FontMapPtr;
+
+/* This is the structure that holds all the info for one encoding. It
+ consists of a charset name, its size, and a linked list of mappings
+ like above. */
+
+typedef struct _FontEnc {
+ char *name; /* the name of the encoding */
+ char **aliases; /* its aliases, null terminated */
+ int size; /* its size, either in bytes or rows */
+ int row_size; /* the size of a row, or 0 if bytes */
+ FontMapPtr mappings; /* linked list of mappings */
+ struct _FontEnc *next; /* link to next element */
+ /* the following two were added in version 0.2 of the font interface */
+ /* they should be kept at the end to preserve binary compatibility */
+ int first; /* first byte or row */
+ int first_col; /* first column in each row */
+} FontEncRec, *FontEncPtr;
+
+typedef struct _FontMapReverse {
+ unsigned int (*reverse)(unsigned, void*);
+ void *data;
+} FontMapReverseRec, *FontMapReversePtr;
+
+
+/* Function prototypes */
+
+/* extract an encoding name from an XLFD name. Returns a pointer to a
+ *static* buffer, or NULL */
+char *FontEncFromXLFD(const char*, int);
+
+/* find the encoding data for a given encoding name; second parameter
+ is the filename of the font for which the encoding is needed.
+ Returns NULL on failure. */
+FontEncPtr FontEncFind(const char*, const char*);
+
+/* Find a given mapping for an encoding. This is only a convenience
+ function, as clients are allowed to scavenge the data structures
+ themselves (as the TrueType backend does). */
+
+FontMapPtr FontMapFind(FontEncPtr, int, int, int);
+
+/* Do both in a single step */
+FontMapPtr FontEncMapFind(const char *, int, int, int, const char *);
+
+/* Recode a code. Always succeeds. */
+unsigned FontEncRecode(unsigned, FontMapPtr);
+
+/* Return a name for a code. Returns a string or NULL. */
+char *FontEncName(unsigned, FontMapPtr);
+
+/* Return a pointer to the name of the system encodings directory. */
+/* This string is static and should not be modified. */
+char* FontEncDirectory(void);
+
+/* Identify an encoding file. If fileName doesn't exist, or is not an
+ encoding file, return NULL, otherwise returns a NULL-terminated
+ array of strings. */
+char **FontEncIdentify(const char *fileName);
+
+FontMapReversePtr FontMapReverse(FontMapPtr);
+
+void FontMapReverseFree(FontMapReversePtr);
+#endif
diff --git a/libfontenc/src/Makefile.am b/libfontenc/src/Makefile.am
index 54b735584..96d0a38be 100644
--- a/libfontenc/src/Makefile.am
+++ b/libfontenc/src/Makefile.am
@@ -1,32 +1,32 @@
-lib_LTLIBRARIES = libfontenc.la
-
-libfontenc_la_SOURCES = \
- encparse.c \
- fontenc.c \
- fontencI.h
-
-AM_CFLAGS = \
- $(FONTENC_CFLAGS) \
- $(CWARNFLAGS)
-
-FONTENCDIR=@ENCODINGSDIR@
-FONTENCDEFS = -DFONT_ENCODINGS_DIRECTORY=\"$(FONTENCDIR)/encodings.dir\"
-
-INCLUDES = -I$(top_srcdir)/include $(FONTENCDEFS)
-
-
-libfontenc_la_LIBADD = @FONTENC_LIBS@
-
-libfontenc_la_LDFLAGS = -version-number 1:0:0 -no-undefined
-
-libfontencincludedir = $(includedir)/X11/fonts
-libfontencinclude_HEADERS = \
- $(top_srcdir)/include/X11/fonts/fontenc.h
-
-if LINT
-ALL_LINT_FLAGS=$(LINT_FLAGS) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
- $(AM_CPPFLAGS) $(CPPFLAGS)
-
-lint:
- $(LINT) $(ALL_LINT_FLAGS) $(libfontenc_la_SOURCES) $(libfontenc_la_LIBADD) $(LIBS)
-endif LINT
+lib_LTLIBRARIES = libfontenc.la
+
+libfontenc_la_SOURCES = \
+ encparse.c \
+ fontenc.c \
+ fontencI.h
+
+AM_CFLAGS = \
+ $(FONTENC_CFLAGS) \
+ $(CWARNFLAGS)
+
+FONTENCDIR=@ENCODINGSDIR@
+FONTENCDEFS = -DFONT_ENCODINGS_DIRECTORY=\"$(FONTENCDIR)/encodings.dir\"
+
+INCLUDES = -I$(top_srcdir)/include $(FONTENCDEFS)
+
+
+libfontenc_la_LIBADD = @FONTENC_LIBS@
+
+libfontenc_la_LDFLAGS = -version-number 1:0:0 -no-undefined
+
+libfontencincludedir = $(includedir)/X11/fonts
+libfontencinclude_HEADERS = \
+ $(top_srcdir)/include/X11/fonts/fontenc.h
+
+if LINT
+ALL_LINT_FLAGS=$(LINT_FLAGS) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
+ $(AM_CPPFLAGS) $(CPPFLAGS)
+
+lint:
+ $(LINT) $(ALL_LINT_FLAGS) $(libfontenc_la_SOURCES) $(libfontenc_la_LIBADD) $(LIBS)
+endif LINT
diff --git a/libfontenc/src/fontencI.h b/libfontenc/src/fontencI.h
index 558607cb8..9bba85ee1 100644
--- a/libfontenc/src/fontencI.h
+++ b/libfontenc/src/fontencI.h
@@ -1,44 +1,44 @@
-/*
-Copyright (c) 1998-2001 by Juliusz Chroboczek
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
-*/
-
-/* Private types and functions for the encoding code. */
-/* Used by the files `fontenc.h' and `encparse.h' */
-
-typedef struct _FontEncSimpleMap {
- unsigned len; /* might be 0x10000 */
- unsigned short row_size;
- unsigned short first;
- const unsigned short *map;
-} FontEncSimpleMapRec, *FontEncSimpleMapPtr;
-
-typedef struct _FontEncSimpleName {
- unsigned len;
- unsigned short first;
- char **map;
-} FontEncSimpleNameRec, *FontEncSimpleNamePtr;
-
-unsigned FontEncSimpleRecode(unsigned, void*);
-unsigned FontEncUndefinedRecode(unsigned, void*);
-char *FontEncSimpleName(unsigned, void*);
-char *FontEncUndefinedName(unsigned, void*);
-
-FontEncPtr FontEncReallyLoad(const char*, const char*);
+/*
+Copyright (c) 1998-2001 by Juliusz Chroboczek
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
+*/
+
+/* Private types and functions for the encoding code. */
+/* Used by the files `fontenc.h' and `encparse.h' */
+
+typedef struct _FontEncSimpleMap {
+ unsigned len; /* might be 0x10000 */
+ unsigned short row_size;
+ unsigned short first;
+ const unsigned short *map;
+} FontEncSimpleMapRec, *FontEncSimpleMapPtr;
+
+typedef struct _FontEncSimpleName {
+ unsigned len;
+ unsigned short first;
+ char **map;
+} FontEncSimpleNameRec, *FontEncSimpleNamePtr;
+
+unsigned FontEncSimpleRecode(unsigned, void*);
+unsigned FontEncUndefinedRecode(unsigned, void*);
+char *FontEncSimpleName(unsigned, void*);
+char *FontEncUndefinedName(unsigned, void*);
+
+FontEncPtr FontEncReallyLoad(const char*, const char*);
diff --git a/libxcb/.gitignore b/libxcb/.gitignore
index 7878d7c25..a922ee4cf 100644
--- a/libxcb/.gitignore
+++ b/libxcb/.gitignore
@@ -1,30 +1,30 @@
-aclocal.m4
-autom4te.cache
-compile
-depcomp
-install-sh
-libtool
-ltmain.sh
-missing
-mkinstalldirs
-config.guess
-config.h
-config.h.in
-config.log
-config.status
-config.sub
-configure
-configure.lineno
-.deps
-.dirstamp
-.libs
-*.lo
-*.loT
-*.la
-Makefile
-Makefile.in
-stamp-h1
-*.o
-*.pc
-*.tar.bz2
-*.tar.gz
+aclocal.m4
+autom4te.cache
+compile
+depcomp
+install-sh
+libtool
+ltmain.sh
+missing
+mkinstalldirs
+config.guess
+config.h
+config.h.in
+config.log
+config.status
+config.sub
+configure
+configure.lineno
+.deps
+.dirstamp
+.libs
+*.lo
+*.loT
+*.la
+Makefile
+Makefile.in
+stamp-h1
+*.o
+*.pc
+*.tar.bz2
+*.tar.gz
diff --git a/libxcb/COPYING b/libxcb/COPYING
index 50a14e39e..54bfbe5b0 100644
--- a/libxcb/COPYING
+++ b/libxcb/COPYING
@@ -1,30 +1,30 @@
-Copyright (C) 2001-2006 Bart Massey, Jamey Sharp, and Josh Triplett.
-All Rights Reserved.
-
-Permission is hereby granted, free of charge, to any person
-obtaining a copy of this software and associated
-documentation files (the "Software"), to deal in the
-Software without restriction, including without limitation
-the rights to use, copy, modify, merge, publish, distribute,
-sublicense, and/or sell copies of the Software, and to
-permit persons to whom the Software is furnished to do so,
-subject to the following conditions:
-
-The above copyright notice and this permission notice shall
-be included in all copies or substantial portions of the
-Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
-KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
-WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
-PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS
-BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
-IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the names of the authors
-or their institutions shall not be used in advertising or
-otherwise to promote the sale, use or other dealings in this
-Software without prior written authorization from the
-authors.
+Copyright (C) 2001-2006 Bart Massey, Jamey Sharp, and Josh Triplett.
+All Rights Reserved.
+
+Permission is hereby granted, free of charge, to any person
+obtaining a copy of this software and associated
+documentation files (the "Software"), to deal in the
+Software without restriction, including without limitation
+the rights to use, copy, modify, merge, publish, distribute,
+sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so,
+subject to the following conditions:
+
+The above copyright notice and this permission notice shall
+be included in all copies or substantial portions of the
+Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
+KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
+WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
+PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS
+BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
+IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the names of the authors
+or their institutions shall not be used in advertising or
+otherwise to promote the sale, use or other dealings in this
+Software without prior written authorization from the
+authors.
diff --git a/libxcb/INSTALL b/libxcb/INSTALL
index bf8c23f1f..54caf7c19 100644
--- a/libxcb/INSTALL
+++ b/libxcb/INSTALL
@@ -1,229 +1,229 @@
-Copyright (C) 1994, 1995, 1996, 1999, 2000, 2001, 2002 Free Software
-Foundation, Inc.
-
- This file is free documentation; the Free Software Foundation gives
-unlimited permission to copy, distribute and modify it.
-
-Basic Installation
-==================
-
- These are generic installation instructions.
-
- The `configure' shell script attempts to guess correct values for
-various system-dependent variables used during compilation. It uses
-those values to create a `Makefile' in each directory of the package.
-It may also create one or more `.h' files containing system-dependent
-definitions. Finally, it creates a shell script `config.status' that
-you can run in the future to recreate the current configuration, and a
-file `config.log' containing compiler output (useful mainly for
-debugging `configure').
-
- It can also use an optional file (typically called `config.cache'
-and enabled with `--cache-file=config.cache' or simply `-C') that saves
-the results of its tests to speed up reconfiguring. (Caching is
-disabled by default to prevent problems with accidental use of stale
-cache files.)
-
- If you need to do unusual things to compile the package, please try
-to figure out how `configure' could check whether to do them, and mail
-diffs or instructions to the address given in the `README' so they can
-be considered for the next release. If you are using the cache, and at
-some point `config.cache' contains results you don't want to keep, you
-may remove or edit it.
-
- The file `configure.ac' (or `configure.in') is used to create
-`configure' by a program called `autoconf'. You only need
-`configure.ac' if you want to change it or regenerate `configure' using
-a newer version of `autoconf'.
-
-The simplest way to compile this package is:
-
- 1. `cd' to the directory containing the package's source code and type
- `./configure' to configure the package for your system. If you're
- using `csh' on an old version of System V, you might need to type
- `sh ./configure' instead to prevent `csh' from trying to execute
- `configure' itself.
-
- Running `configure' takes awhile. While running, it prints some
- messages telling which features it is checking for.
-
- 2. Type `make' to compile the package.
-
- 3. Optionally, type `make check' to run any self-tests that come with
- the package.
-
- 4. Type `make install' to install the programs and any data files and
- documentation.
-
- 5. You can remove the program binaries and object files from the
- source code directory by typing `make clean'. To also remove the
- files that `configure' created (so you can compile the package for
- a different kind of computer), type `make distclean'. There is
- also a `make maintainer-clean' target, but that is intended mainly
- for the package's developers. If you use it, you may have to get
- all sorts of other programs in order to regenerate files that came
- with the distribution.
-
-Compilers and Options
-=====================
-
- Some systems require unusual options for compilation or linking that
-the `configure' script does not know about. Run `./configure --help'
-for details on some of the pertinent environment variables.
-
- You can give `configure' initial values for configuration parameters
-by setting variables in the command line or in the environment. Here
-is an example:
-
- ./configure CC=c89 CFLAGS=-O2 LIBS=-lposix
-
- *Note Defining Variables::, for more details.
-
-Compiling For Multiple Architectures
-====================================
-
- You can compile the package for more than one kind of computer at the
-same time, by placing the object files for each architecture in their
-own directory. To do this, you must use a version of `make' that
-supports the `VPATH' variable, such as GNU `make'. `cd' to the
-directory where you want the object files and executables to go and run
-the `configure' script. `configure' automatically checks for the
-source code in the directory that `configure' is in and in `..'.
-
- If you have to use a `make' that does not support the `VPATH'
-variable, you have to compile the package for one architecture at a
-time in the source code directory. After you have installed the
-package for one architecture, use `make distclean' before reconfiguring
-for another architecture.
-
-Installation Names
-==================
-
- By default, `make install' will install the package's files in
-`/usr/local/bin', `/usr/local/man', etc. You can specify an
-installation prefix other than `/usr/local' by giving `configure' the
-option `--prefix=PATH'.
-
- You can specify separate installation prefixes for
-architecture-specific files and architecture-independent files. If you
-give `configure' the option `--exec-prefix=PATH', the package will use
-PATH as the prefix for installing programs and libraries.
-Documentation and other data files will still use the regular prefix.
-
- In addition, if you use an unusual directory layout you can give
-options like `--bindir=PATH' to specify different values for particular
-kinds of files. Run `configure --help' for a list of the directories
-you can set and what kinds of files go in them.
-
- If the package supports it, you can cause programs to be installed
-with an extra prefix or suffix on their names by giving `configure' the
-option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'.
-
-Optional Features
-=================
-
- Some packages pay attention to `--enable-FEATURE' options to
-`configure', where FEATURE indicates an optional part of the package.
-They may also pay attention to `--with-PACKAGE' options, where PACKAGE
-is something like `gnu-as' or `x' (for the X Window System). The
-`README' should mention any `--enable-' and `--with-' options that the
-package recognizes.
-
- For packages that use the X Window System, `configure' can usually
-find the X include and library files automatically, but if it doesn't,
-you can use the `configure' options `--x-includes=DIR' and
-`--x-libraries=DIR' to specify their locations.
-
-Specifying the System Type
-==========================
-
- There may be some features `configure' cannot figure out
-automatically, but needs to determine by the type of machine the package
-will run on. Usually, assuming the package is built to be run on the
-_same_ architectures, `configure' can figure that out, but if it prints
-a message saying it cannot guess the machine type, give it the
-`--build=TYPE' option. TYPE can either be a short name for the system
-type, such as `sun4', or a canonical name which has the form:
-
- CPU-COMPANY-SYSTEM
-
-where SYSTEM can have one of these forms:
-
- OS KERNEL-OS
-
- See the file `config.sub' for the possible values of each field. If
-`config.sub' isn't included in this package, then this package doesn't
-need to know the machine type.
-
- If you are _building_ compiler tools for cross-compiling, you should
-use the `--target=TYPE' option to select the type of system they will
-produce code for.
-
- If you want to _use_ a cross compiler, that generates code for a
-platform different from the build platform, you should specify the
-"host" platform (i.e., that on which the generated programs will
-eventually be run) with `--host=TYPE'.
-
-Sharing Defaults
-================
-
- If you want to set default values for `configure' scripts to share,
-you can create a site shell script called `config.site' that gives
-default values for variables like `CC', `cache_file', and `prefix'.
-`configure' looks for `PREFIX/share/config.site' if it exists, then
-`PREFIX/etc/config.site' if it exists. Or, you can set the
-`CONFIG_SITE' environment variable to the location of the site script.
-A warning: not all `configure' scripts look for a site script.
-
-Defining Variables
-==================
-
- Variables not defined in a site shell script can be set in the
-environment passed to `configure'. However, some packages may run
-configure again during the build, and the customized values of these
-variables may be lost. In order to avoid this problem, you should set
-them in the `configure' command line, using `VAR=value'. For example:
-
- ./configure CC=/usr/local2/bin/gcc
-
-will cause the specified gcc to be used as the C compiler (unless it is
-overridden in the site shell script).
-
-`configure' Invocation
-======================
-
- `configure' recognizes the following options to control how it
-operates.
-
-`--help'
-`-h'
- Print a summary of the options to `configure', and exit.
-
-`--version'
-`-V'
- Print the version of Autoconf used to generate the `configure'
- script, and exit.
-
-`--cache-file=FILE'
- Enable the cache: use and save the results of the tests in FILE,
- traditionally `config.cache'. FILE defaults to `/dev/null' to
- disable caching.
-
-`--config-cache'
-`-C'
- Alias for `--cache-file=config.cache'.
-
-`--quiet'
-`--silent'
-`-q'
- Do not print messages saying which checks are being made. To
- suppress all normal output, redirect it to `/dev/null' (any error
- messages will still be shown).
-
-`--srcdir=DIR'
- Look for the package's source code in directory DIR. Usually
- `configure' can determine that directory automatically.
-
-`configure' also accepts some other, not widely useful, options. Run
-`configure --help' for more details.
-
+Copyright (C) 1994, 1995, 1996, 1999, 2000, 2001, 2002 Free Software
+Foundation, Inc.
+
+ This file is free documentation; the Free Software Foundation gives
+unlimited permission to copy, distribute and modify it.
+
+Basic Installation
+==================
+
+ These are generic installation instructions.
+
+ The `configure' shell script attempts to guess correct values for
+various system-dependent variables used during compilation. It uses
+those values to create a `Makefile' in each directory of the package.
+It may also create one or more `.h' files containing system-dependent
+definitions. Finally, it creates a shell script `config.status' that
+you can run in the future to recreate the current configuration, and a
+file `config.log' containing compiler output (useful mainly for
+debugging `configure').
+
+ It can also use an optional file (typically called `config.cache'
+and enabled with `--cache-file=config.cache' or simply `-C') that saves
+the results of its tests to speed up reconfiguring. (Caching is
+disabled by default to prevent problems with accidental use of stale
+cache files.)
+
+ If you need to do unusual things to compile the package, please try
+to figure out how `configure' could check whether to do them, and mail
+diffs or instructions to the address given in the `README' so they can
+be considered for the next release. If you are using the cache, and at
+some point `config.cache' contains results you don't want to keep, you
+may remove or edit it.
+
+ The file `configure.ac' (or `configure.in') is used to create
+`configure' by a program called `autoconf'. You only need
+`configure.ac' if you want to change it or regenerate `configure' using
+a newer version of `autoconf'.
+
+The simplest way to compile this package is:
+
+ 1. `cd' to the directory containing the package's source code and type
+ `./configure' to configure the package for your system. If you're
+ using `csh' on an old version of System V, you might need to type
+ `sh ./configure' instead to prevent `csh' from trying to execute
+ `configure' itself.
+
+ Running `configure' takes awhile. While running, it prints some
+ messages telling which features it is checking for.
+
+ 2. Type `make' to compile the package.
+
+ 3. Optionally, type `make check' to run any self-tests that come with
+ the package.
+
+ 4. Type `make install' to install the programs and any data files and
+ documentation.
+
+ 5. You can remove the program binaries and object files from the
+ source code directory by typing `make clean'. To also remove the
+ files that `configure' created (so you can compile the package for
+ a different kind of computer), type `make distclean'. There is
+ also a `make maintainer-clean' target, but that is intended mainly
+ for the package's developers. If you use it, you may have to get
+ all sorts of other programs in order to regenerate files that came
+ with the distribution.
+
+Compilers and Options
+=====================
+
+ Some systems require unusual options for compilation or linking that
+the `configure' script does not know about. Run `./configure --help'
+for details on some of the pertinent environment variables.
+
+ You can give `configure' initial values for configuration parameters
+by setting variables in the command line or in the environment. Here
+is an example:
+
+ ./configure CC=c89 CFLAGS=-O2 LIBS=-lposix
+
+ *Note Defining Variables::, for more details.
+
+Compiling For Multiple Architectures
+====================================
+
+ You can compile the package for more than one kind of computer at the
+same time, by placing the object files for each architecture in their
+own directory. To do this, you must use a version of `make' that
+supports the `VPATH' variable, such as GNU `make'. `cd' to the
+directory where you want the object files and executables to go and run
+the `configure' script. `configure' automatically checks for the
+source code in the directory that `configure' is in and in `..'.
+
+ If you have to use a `make' that does not support the `VPATH'
+variable, you have to compile the package for one architecture at a
+time in the source code directory. After you have installed the
+package for one architecture, use `make distclean' before reconfiguring
+for another architecture.
+
+Installation Names
+==================
+
+ By default, `make install' will install the package's files in
+`/usr/local/bin', `/usr/local/man', etc. You can specify an
+installation prefix other than `/usr/local' by giving `configure' the
+option `--prefix=PATH'.
+
+ You can specify separate installation prefixes for
+architecture-specific files and architecture-independent files. If you
+give `configure' the option `--exec-prefix=PATH', the package will use
+PATH as the prefix for installing programs and libraries.
+Documentation and other data files will still use the regular prefix.
+
+ In addition, if you use an unusual directory layout you can give
+options like `--bindir=PATH' to specify different values for particular
+kinds of files. Run `configure --help' for a list of the directories
+you can set and what kinds of files go in them.
+
+ If the package supports it, you can cause programs to be installed
+with an extra prefix or suffix on their names by giving `configure' the
+option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'.
+
+Optional Features
+=================
+
+ Some packages pay attention to `--enable-FEATURE' options to
+`configure', where FEATURE indicates an optional part of the package.
+They may also pay attention to `--with-PACKAGE' options, where PACKAGE
+is something like `gnu-as' or `x' (for the X Window System). The
+`README' should mention any `--enable-' and `--with-' options that the
+package recognizes.
+
+ For packages that use the X Window System, `configure' can usually
+find the X include and library files automatically, but if it doesn't,
+you can use the `configure' options `--x-includes=DIR' and
+`--x-libraries=DIR' to specify their locations.
+
+Specifying the System Type
+==========================
+
+ There may be some features `configure' cannot figure out
+automatically, but needs to determine by the type of machine the package
+will run on. Usually, assuming the package is built to be run on the
+_same_ architectures, `configure' can figure that out, but if it prints
+a message saying it cannot guess the machine type, give it the
+`--build=TYPE' option. TYPE can either be a short name for the system
+type, such as `sun4', or a canonical name which has the form:
+
+ CPU-COMPANY-SYSTEM
+
+where SYSTEM can have one of these forms:
+
+ OS KERNEL-OS
+
+ See the file `config.sub' for the possible values of each field. If
+`config.sub' isn't included in this package, then this package doesn't
+need to know the machine type.
+
+ If you are _building_ compiler tools for cross-compiling, you should
+use the `--target=TYPE' option to select the type of system they will
+produce code for.
+
+ If you want to _use_ a cross compiler, that generates code for a
+platform different from the build platform, you should specify the
+"host" platform (i.e., that on which the generated programs will
+eventually be run) with `--host=TYPE'.
+
+Sharing Defaults
+================
+
+ If you want to set default values for `configure' scripts to share,
+you can create a site shell script called `config.site' that gives
+default values for variables like `CC', `cache_file', and `prefix'.
+`configure' looks for `PREFIX/share/config.site' if it exists, then
+`PREFIX/etc/config.site' if it exists. Or, you can set the
+`CONFIG_SITE' environment variable to the location of the site script.
+A warning: not all `configure' scripts look for a site script.
+
+Defining Variables
+==================
+
+ Variables not defined in a site shell script can be set in the
+environment passed to `configure'. However, some packages may run
+configure again during the build, and the customized values of these
+variables may be lost. In order to avoid this problem, you should set
+them in the `configure' command line, using `VAR=value'. For example:
+
+ ./configure CC=/usr/local2/bin/gcc
+
+will cause the specified gcc to be used as the C compiler (unless it is
+overridden in the site shell script).
+
+`configure' Invocation
+======================
+
+ `configure' recognizes the following options to control how it
+operates.
+
+`--help'
+`-h'
+ Print a summary of the options to `configure', and exit.
+
+`--version'
+`-V'
+ Print the version of Autoconf used to generate the `configure'
+ script, and exit.
+
+`--cache-file=FILE'
+ Enable the cache: use and save the results of the tests in FILE,
+ traditionally `config.cache'. FILE defaults to `/dev/null' to
+ disable caching.
+
+`--config-cache'
+`-C'
+ Alias for `--cache-file=config.cache'.
+
+`--quiet'
+`--silent'
+`-q'
+ Do not print messages saying which checks are being made. To
+ suppress all normal output, redirect it to `/dev/null' (any error
+ messages will still be shown).
+
+`--srcdir=DIR'
+ Look for the package's source code in directory DIR. Usually
+ `configure' can determine that directory automatically.
+
+`configure' also accepts some other, not widely useful, options. Run
+`configure --help' for more details.
+
diff --git a/libxcb/README b/libxcb/README
index cb830a436..167c8aca6 100644
--- a/libxcb/README
+++ b/libxcb/README
@@ -1,36 +1,36 @@
-About libxcb
-============
-
-libxcb provides an interface to the X Window System protocol, which
-replaces the current Xlib interface. It has several advantages over
-Xlib, including:
-- size: small, simple library, and lower memory footprint
-- latency hiding: batch several requests and wait for the replies later
-- direct protocol access: interface and protocol correspond exactly
-- proven thread support: transparently access XCB from multiple threads
-- easy extension implementation: interfaces auto-generated from XML-XCB
-
-Xlib can also use XCB as a transport layer, allowing software to make
-requests and receive responses with both, which eases porting to XCB.
-However, client programs, libraries, and toolkits will gain the most
-benefit from a native XCB port.
-
-
-Please report any issues you find to the freedesktop.org bug tracker,
-at:
-
- <https://bugs.freedesktop.org/enter_bug.cgi?product=XCB>
-
-Discussion about XCB occurs on the XCB mailing list:
-
- <mailto:xcb at lists.freedesktop.org>
- <http://lists.freedesktop.org/mailman/listinfo/xcb>
-
-You can obtain the latest development versions of XCB using GIT.
-For anonymous checkouts, use:
-
- git clone git://anongit.freedesktop.org/git/xcb/libxcb
-
-For developers, use:
-
- git clone git+ssh://git.freedesktop.org/git/xcb/libxcb
+About libxcb
+============
+
+libxcb provides an interface to the X Window System protocol, which
+replaces the current Xlib interface. It has several advantages over
+Xlib, including:
+- size: small, simple library, and lower memory footprint
+- latency hiding: batch several requests and wait for the replies later
+- direct protocol access: interface and protocol correspond exactly
+- proven thread support: transparently access XCB from multiple threads
+- easy extension implementation: interfaces auto-generated from XML-XCB
+
+Xlib can also use XCB as a transport layer, allowing software to make
+requests and receive responses with both, which eases porting to XCB.
+However, client programs, libraries, and toolkits will gain the most
+benefit from a native XCB port.
+
+
+Please report any issues you find to the freedesktop.org bug tracker,
+at:
+
+ <https://bugs.freedesktop.org/enter_bug.cgi?product=XCB>
+
+Discussion about XCB occurs on the XCB mailing list:
+
+ <mailto:xcb at lists.freedesktop.org>
+ <http://lists.freedesktop.org/mailman/listinfo/xcb>
+
+You can obtain the latest development versions of XCB using GIT.
+For anonymous checkouts, use:
+
+ git clone git://anongit.freedesktop.org/git/xcb/libxcb
+
+For developers, use:
+
+ git clone git+ssh://git.freedesktop.org/git/xcb/libxcb
diff --git a/libxcb/acinclude.m4 b/libxcb/acinclude.m4
index 8fa30de73..ad24bc2e5 100644
--- a/libxcb/acinclude.m4
+++ b/libxcb/acinclude.m4
@@ -1,142 +1,142 @@
-dnl Detection and configuration of the visibility feature of gcc
-dnl Vincent Torri 2006-02-11
-dnl
-dnl XCB_CHECK_VISIBILITY([ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]])
-dnl Check the visibility feature of gcc
-dnl
-AC_DEFUN([XCB_CHECK_VISIBILITY],
-[
-AC_MSG_CHECKING([whether ${CC} supports symbol visibility])
-
-save_CFLAGS=${CFLAGS}
-CFLAGS="$CFLAGS -fvisibility=hidden -fvisibility-inlines-hidden"
-AC_COMPILE_IFELSE(
- [AC_LANG_PROGRAM(
- [[
-#pragma GCC visibility push(hidden)
-extern void f(int);
-#pragma GCC visibility pop
- ]],
- [[]]
- )],
- [AC_DEFINE(
- GCC_HAS_VISIBILITY,
- [],
- [Defined if GCC supports the visibility feature])
- m4_if([$1], [], [:], [$1])
- AC_MSG_RESULT(yes)],
- [m4_if([$2], [], [:], [$2])
- AC_MSG_RESULT(no)])
-
-CFLAGS=${save_CFLAGS}
-])
-
-dnl Configure script for doxygen
-dnl Vincent Torri 2006-05-11
-dnl
-dnl XCB_CHECK_DOXYGEN([ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]])
-dnl Test for the doxygen program, and define BUILD_DOCS and DOXYGEN.
-dnl
-AC_DEFUN([XCB_CHECK_DOXYGEN],
-[
-DOXYGEN="doxygen"
-
-dnl
-dnl Disable the build of the documentation
-dnl
-AC_ARG_ENABLE(
- [build_docs],
- AC_HELP_STRING(
- [--disable-build-docs],
- [Disable the build of the documentation]),
- [if test x"$enableval" != x"yes" ; then
- enable_build_docs="no"
- else
- enable_build_docs="yes"
- fi],
- [enable_build_docs="yes"])
-
-if test "$enable_build_docs" = "no" ; then
- BUILD_DOCS=no
-else
-dnl
-dnl Get the prefix where doxygen is installed.
-dnl
-AC_ARG_WITH(
- [doxygen],
- AC_HELP_STRING(
- [--with-doxygen=FILE],
- [doxygen program to use (eg /usr/bin/doxygen)]),
- dnl
- dnl Check the given doxygen program.
- dnl
- [DOXYGEN=${withval}
- AC_CHECK_PROG(
- [BUILD_DOCS],
- [${DOXYGEN}],
- [yes],
- [no])
- if test $BUILD_DOCS = no; then
- echo "WARNING:"
- echo "The doxygen program you specified:"
- echo "$DOXYGEN"
- echo "was not found. Please check the path and make sure "
- echo "the program exists and is executable."
- AC_MSG_WARN(
- [Warning: no doxygen detected. Documentation will not be built])
- fi],
- [AC_CHECK_PROG(
- [BUILD_DOCS],
- [${DOXYGEN}],
- [yes],
- [no])
- if test ${BUILD_DOCS} = no; then
- echo "WARNING:"
- echo "The doxygen program was not found in your execute"
- echo "You may have doxygen installed somewhere not covered by your path."
- echo ""
- echo "If this is the case make sure you have the packages installed, AND"
- echo "that the doxygen program is in your execute path (see your"
- echo "shell manual page on setting the \$PATH environment variable), OR"
- echo "alternatively, specify the program to use with --with-doxygen."
- AC_MSG_WARN(
- [Warning: no doxygen detected. Documentation will not be built])
- fi])
- AC_PATH_PROG(DOT, dot, no)
- if test "$DOT" = "no"; then
- AC_MSG_WARN([Warning: no dot detected. Documentation will not be built])
- BUILD_DOCS="no"
- fi
-fi
-AC_MSG_CHECKING([whether documentation is built])
-AC_MSG_RESULT([${BUILD_DOCS}])
-
-dnl
-dnl Substitution
-dnl
-AC_SUBST([DOXYGEN])
-
-AM_CONDITIONAL(BUILD_DOCS, test "x$BUILD_DOCS" = "xyes")
-
-])
-
-dnl Detection and configuration of the visibility feature of gcc
-dnl Vincent Torri 2006-02-11
-dnl
-dnl XCB_EXTENSION(name, default)
-dnl set the X extension
-dnl
-AC_DEFUN([XCB_EXTENSION],
-[
-pushdef([UP], translit([$1], [-a-z], [_A-Z]))dnl
-pushdef([DOWN], translit([$1], [A-Z], [a-z]))dnl
-
-AC_ARG_ENABLE(DOWN,
- [AS_HELP_STRING([--enable-[]DOWN], [Build XCB $1 Extension (default: $2)])],
- [BUILD_[]UP=$enableval],
- [BUILD_[]UP=$2])
-
-AM_CONDITIONAL(BUILD_[]UP, [test "x$BUILD_[]UP" = "xyes"])
-])
-
-dnl End of acinclude.m4
+dnl Detection and configuration of the visibility feature of gcc
+dnl Vincent Torri 2006-02-11
+dnl
+dnl XCB_CHECK_VISIBILITY([ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]])
+dnl Check the visibility feature of gcc
+dnl
+AC_DEFUN([XCB_CHECK_VISIBILITY],
+[
+AC_MSG_CHECKING([whether ${CC} supports symbol visibility])
+
+save_CFLAGS=${CFLAGS}
+CFLAGS="$CFLAGS -fvisibility=hidden -fvisibility-inlines-hidden"
+AC_COMPILE_IFELSE(
+ [AC_LANG_PROGRAM(
+ [[
+#pragma GCC visibility push(hidden)
+extern void f(int);
+#pragma GCC visibility pop
+ ]],
+ [[]]
+ )],
+ [AC_DEFINE(
+ GCC_HAS_VISIBILITY,
+ [],
+ [Defined if GCC supports the visibility feature])
+ m4_if([$1], [], [:], [$1])
+ AC_MSG_RESULT(yes)],
+ [m4_if([$2], [], [:], [$2])
+ AC_MSG_RESULT(no)])
+
+CFLAGS=${save_CFLAGS}
+])
+
+dnl Configure script for doxygen
+dnl Vincent Torri 2006-05-11
+dnl
+dnl XCB_CHECK_DOXYGEN([ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]])
+dnl Test for the doxygen program, and define BUILD_DOCS and DOXYGEN.
+dnl
+AC_DEFUN([XCB_CHECK_DOXYGEN],
+[
+DOXYGEN="doxygen"
+
+dnl
+dnl Disable the build of the documentation
+dnl
+AC_ARG_ENABLE(
+ [build_docs],
+ AC_HELP_STRING(
+ [--disable-build-docs],
+ [Disable the build of the documentation]),
+ [if test x"$enableval" != x"yes" ; then
+ enable_build_docs="no"
+ else
+ enable_build_docs="yes"
+ fi],
+ [enable_build_docs="yes"])
+
+if test "$enable_build_docs" = "no" ; then
+ BUILD_DOCS=no
+else
+dnl
+dnl Get the prefix where doxygen is installed.
+dnl
+AC_ARG_WITH(
+ [doxygen],
+ AC_HELP_STRING(
+ [--with-doxygen=FILE],
+ [doxygen program to use (eg /usr/bin/doxygen)]),
+ dnl
+ dnl Check the given doxygen program.
+ dnl
+ [DOXYGEN=${withval}
+ AC_CHECK_PROG(
+ [BUILD_DOCS],
+ [${DOXYGEN}],
+ [yes],
+ [no])
+ if test $BUILD_DOCS = no; then
+ echo "WARNING:"
+ echo "The doxygen program you specified:"
+ echo "$DOXYGEN"
+ echo "was not found. Please check the path and make sure "
+ echo "the program exists and is executable."
+ AC_MSG_WARN(
+ [Warning: no doxygen detected. Documentation will not be built])
+ fi],
+ [AC_CHECK_PROG(
+ [BUILD_DOCS],
+ [${DOXYGEN}],
+ [yes],
+ [no])
+ if test ${BUILD_DOCS} = no; then
+ echo "WARNING:"
+ echo "The doxygen program was not found in your execute"
+ echo "You may have doxygen installed somewhere not covered by your path."
+ echo ""
+ echo "If this is the case make sure you have the packages installed, AND"
+ echo "that the doxygen program is in your execute path (see your"
+ echo "shell manual page on setting the \$PATH environment variable), OR"
+ echo "alternatively, specify the program to use with --with-doxygen."
+ AC_MSG_WARN(
+ [Warning: no doxygen detected. Documentation will not be built])
+ fi])
+ AC_PATH_PROG(DOT, dot, no)
+ if test "$DOT" = "no"; then
+ AC_MSG_WARN([Warning: no dot detected. Documentation will not be built])
+ BUILD_DOCS="no"
+ fi
+fi
+AC_MSG_CHECKING([whether documentation is built])
+AC_MSG_RESULT([${BUILD_DOCS}])
+
+dnl
+dnl Substitution
+dnl
+AC_SUBST([DOXYGEN])
+
+AM_CONDITIONAL(BUILD_DOCS, test "x$BUILD_DOCS" = "xyes")
+
+])
+
+dnl Detection and configuration of the visibility feature of gcc
+dnl Vincent Torri 2006-02-11
+dnl
+dnl XCB_EXTENSION(name, default)
+dnl set the X extension
+dnl
+AC_DEFUN([XCB_EXTENSION],
+[
+pushdef([UP], translit([$1], [-a-z], [_A-Z]))dnl
+pushdef([DOWN], translit([$1], [A-Z], [a-z]))dnl
+
+AC_ARG_ENABLE(DOWN,
+ [AS_HELP_STRING([--enable-[]DOWN], [Build XCB $1 Extension (default: $2)])],
+ [BUILD_[]UP=$enableval],
+ [BUILD_[]UP=$2])
+
+AM_CONDITIONAL(BUILD_[]UP, [test "x$BUILD_[]UP" = "xyes"])
+])
+
+dnl End of acinclude.m4
diff --git a/libxcb/autogen.sh b/libxcb/autogen.sh
index 6fcae015c..904cd6746 100644
--- a/libxcb/autogen.sh
+++ b/libxcb/autogen.sh
@@ -1,12 +1,12 @@
-#! /bin/sh
-
-srcdir=`dirname $0`
-test -z "$srcdir" && srcdir=.
-
-ORIGDIR=`pwd`
-cd $srcdir
-
-autoreconf -v --install || exit 1
-cd $ORIGDIR || exit $?
-
-$srcdir/configure --enable-maintainer-mode "$@"
+#! /bin/sh
+
+srcdir=`dirname $0`
+test -z "$srcdir" && srcdir=.
+
+ORIGDIR=`pwd`
+cd $srcdir
+
+autoreconf -v --install || exit 1
+cd $ORIGDIR || exit $?
+
+$srcdir/configure --enable-maintainer-mode "$@"
diff --git a/libxcb/doc/.gitignore b/libxcb/doc/.gitignore
index 55caf95c6..94ce3a9b9 100644
--- a/libxcb/doc/.gitignore
+++ b/libxcb/doc/.gitignore
@@ -1,2 +1,2 @@
-manual
+manual
xcb.doxygen \ No newline at end of file
diff --git a/libxcb/doc/tutorial/index.html b/libxcb/doc/tutorial/index.html
index bb3338869..adec0acd3 100644
--- a/libxcb/doc/tutorial/index.html
+++ b/libxcb/doc/tutorial/index.html
@@ -1,4521 +1,4521 @@
-<!DOCTYPE html public "-//W3C//DTD HTML 4.01 Transitional//EN"
-"http://www.w3.org/TR/html4/loose.dtd">
-
-<html>
-
-<head>
- <title>Basic Graphics Programming With The XCB Library</title>
- <meta http-equiv="content-type" content="text/html; charset=iso-8859-1">
- <link href="xcb.css" rel="stylesheet" type="text/css">
-</head>
-
-<body>
- <div class="title">
- Basic Graphics Programming With The XCB Library
- </div>
- <div class="toc">
- <ol>
- <li><a class="section" href="#intro">Introduction</a>
- <li><a class="section" href="#Xmodel">The client and server model of the X window system</a>
- <li><a class="section" href="#asynch">GUI programming: the asynchronous model</a>
- <li><a class="section" href="#notions">Basic XCB notions</a>
- <ol>
- <li><a class="subsection" href="#conn">The X Connection</a>
- <li><a class="subsection" href="#requestsreplies">Requests and replies: the Xlib killers</a>
- <li><a class="subsection" href="#gc">The Graphics Context</a>
- <li>Object handles
- <li>Memory allocation for XCB structures
- <li><a class="subsection" href="#events">Events</a>
- </ol>
- <li><a class="section" href="#use">Using XCB-based programs</a>
- <ol>
- <li><a class="subsection" href="#inst">Installation of XCB</a>
- <li><a class="subsection" href="#comp">Compiling XCB-based programs</a>
- </ol>
- <li><a class="section" href="#openconn">Opening and closing the connection to an X server</a>
- <li><a class="section" href="#screen">Checking basic information about a connection</a>
- <li><a class="section" href="#helloworld">Creating a basic window - the "hello world" program</a>
- <li><a class="section" href="#drawing">Drawing in a window</a>
- <ol>
- <li><a class="subsection" href="#allocgc">Allocating a Graphics Context</a>
- <li><a class="subsection" href="#changegc">Changing the attributes of a Graphics Context</a>
- <li><a class="subsection" href="#drawingprim">Drawing primitives: point, line, box, circle,...</a>
- </ol>
- <li><a class="section" href="#xevents">X Events</a>
- <ol>
- <li><a class="subsection" href="#register">Registering for event types using event masks</a>
- <li><a class="subsection" href="#loop">Receiving events: writing the events loop</a>
- <li><a class="subsection" href="#expose">Expose events</a>
- <li><a class="subsection" href="#userinput">Getting user input</a>
- <ol>
- <li><a class="subsubsection" href="#mousepressrelease">Mouse button press and release events</a>
- <li><a class="subsubsection" href="#mousemvnt">Mouse movement events</a>
- <li><a class="subsubsection" href="#mouseenter">Mouse pointer enter and leave events</a>
- <li><a class="subsubsection" href="#focus">The keyboard focus</a>
- <li><a class="subsubsection" href="#keypress">Keyboard press and release events</a>
- </ol>
- <li><a class="subsection" href="#eventex">X events: a complete example</a>
- </ol>
- <li><a class="section" href="#font">Handling text and fonts</a>
- <ol>
- <li><a class="subsection" href="#fontstruct">The Font structure</a>
- <li><a class="subsection" href="#openingfont">Opening a Font</a>
- <li><a class="subsection" href="#assigningfont">Assigning a Font to a Graphic Context</a>
- <li><a class="subsection" href="#drawingtext">Drawing text in a drawable</a>
- <li><a class="subsection" href="#fontcompleteexample">Complete example</a>
- </ol>
- <li>Windows hierarchy
- <ol>
- <li>Root, parent and child windows
- <li>Events propagation
- </ol>
- <li><a class="section" href="#wm">Interacting with the window manager</a>
- <ol>
- <li><a class="subsection" href="#wmprop">Window properties</a>
- <li><a class="subsection" href="#wmname">Setting the window name and icon name</a>
- <li>Setting preferred window size(s)
- <li>Setting miscellaneous window manager hints
- <li>Setting an application's icon
- <li>Obeying the delete-window protocol
- </ol>
- <li><a class="section" href="#winop">Simple window operations</a>
- <ol>
- <li><a class="subsection" href="#winmap">Mapping and unmapping a window</a>
- <li><a class="subsection" href="#winconf">Configuring a window</a>
- <li><a class="subsection" href="#winmove">Moving a window around the screen</a>
- <li><a class="subsection" href="#winsize">Resizing a window</a>
- <li><a class="subsection" href="#winstack">Changing windows stacking order: raise and lower</a>
- <li>Iconifying and de-iconifying a window
- <li><a class="subsection" href="#wingetinfo">Getting informations about a window</a>
- </ol>
- <li><a class="section" href="#usecolor">Using colors to paint the rainbow</a>
- <ol>
- <li><a class="subsection" href="#colormap">Color maps</a>
- <li><a class="subsection" href="#colormapalloc">Allocating and freeing Color Maps</a>
- <li><a class="subsection" href="#alloccolor">Allocating and freeing a color entry</a>
- <li>Drawing with a color
- </ol>
- <li><a class="section" href="#pixmaps">X Bitmaps and Pixmaps</a>
- <ol>
- <li><a class="subsection" href="#pixmapswhat">What is a X Bitmap ? An X Pixmap ?</a>
- <li>Loading a bitmap from a file
- <li>Drawing a bitmap in a window
- <li><a class="subsection" href="#pixmapscreate">Creating a pixmap</a>
- <li><a class="subsection" href="#pixmapsdraw">Drawing a pixmap in a window</a>
- <li><a class="subsection" href="#pixmapsfree">Freeing a pixmap</a>
- </ol>
- <li><a class="subsection" href="#mousecursor">Messing with the mouse cursor</a>
- <ol>
- <li><a class="subsection" href="#mousecursorcreate">Creating and destroying a mouse cursor</a>
- <li><a class="subsection" href="#mousecursorset">Setting a window's mouse cursor</a>
- <li><a class="subsection" href="#mousecursorexample">Complete example</a>
- </ol>
- <li><a class="subsection" href="#translation">Translation of basic Xlib functions and macros</a>
- <ol>
- <li><a class="subsection" href="#displaystructure">Members of the Display structure</a>
- <ol>
- <li><a class="subsection" href="#ConnectionNumber">ConnectionNumber</a>
- <li><a class="subsection" href="#DefaultScreen">DefaultScreen</a>
- <li><a class="subsection" href="#QLength">QLength</a>
- <li><a class="subsection" href="#ScreenCount">ScreenCount</a>
- <li><a class="subsection" href="#ServerVendor">ServerVendor</a>
- <li><a class="subsection" href="#ProtocolVersion">ProtocolVersion</a>
- <li><a class="subsection" href="#ProtocolRevision">ProtocolRevision</a>
- <li><a class="subsection" href="#VendorRelease">VendorRelease</a>
- <li><a class="subsection" href="#DisplayString">DisplayString</a>
- <li><a class="subsection" href="#BitmapUnit">BitmapUnit</a>
- <li><a class="subsection" href="#BitmapBitOrder">BitmapBitOrder</a>
- <li><a class="subsection" href="#BitmapPad">BitmapPad</a>
- <li><a class="subsection" href="#ImageByteOrder">ImageByteOrder</a>
- </ol>
- <li><a class="subsection" href="#screenofdisplay">ScreenOfDisplay related functions</a>
- <ol>
- <li><a class="subsection" href="#ScreenOfDisplay">ScreenOfDisplay</a>
- <li><a class="subsection" href="#DefaultScreenOfDisplay">DefaultScreenOfDisplay</a>
- <li><a class="subsection" href="#RootWindow">RootWindow / RootWindowOfScreen</a>
- <li><a class="subsection" href="#DefaultRootWindow">DefaultRootWindow</a>
- <li><a class="subsection" href="#DefaultVisual">DefaultVisual / DefaultVisualOfScreen</a>
- <li><a class="subsection" href="#DefaultGC">DefaultGC / DefaultGCOfScreen</a>
- <li><a class="subsection" href="#BlackPixel">BlackPixel / BlackPixelOfScreen</a>
- <li><a class="subsection" href="#WhitePixel">WhitePixel / WhitePixelOfScreen</a>
- <li><a class="subsection" href="#DisplayWidth">DisplayWidth / WidthOfScreen</a>
- <li><a class="subsection" href="#DisplayHeight">DisplayHeight / HeightOfScreen</a>
- <li><a class="subsection" href="#DisplayWidthMM">DisplayWidthMM / WidthMMOfScreen</a>
- <li><a class="subsection" href="#DisplayHeightMM">DisplayHeightMM / HeightMMOfScreen</a>
- <li><a class="subsection" href="#DisplayPlanes">DisplayPlanes / DefaultDepth / DefaultDepthOfScreen / PlanesOfScreen</a>
- <li><a class="subsection" href="#DefaultColormap">DefaultColormap / DefaultColormapOfScreen</a>
- <li><a class="subsection" href="#MinCmapsOfScreen">MinCmapsOfScreen</a>
- <li><a class="subsection" href="#MaxCmapsOfScreen">MaxCmapsOfScreen</a>
- <li><a class="subsection" href="#DoesSaveUnders">DoesSaveUnders</a>
- <li><a class="subsection" href="#DoesBackingStore">DoesBackingStore</a>
- <li><a class="subsection" href="#EventMaskOfScreen">EventMaskOfScreen</a>
- </ol>
- <li><a class="subsection" href="#misc">Miscellaneaous macros</a>
- <ol>
- <li><a class="subsection" href="#DisplayOfScreen">DisplayOfScreen</a>
- <li><a class="subsection" href="#DisplayCells">DisplayCells / CellsOfScreen</a>
- </ol>
- </ol>
- </ol>
- </div>
- <div class="section">
- <ol>
- <li class="title"><a name="intro">Introduction</a>
- <p>
- This tutorial is based on the
- <a href="http://users.actcom.co.il/~choo/lupg/tutorials/xlib-programming/xlib-programming.html">Xlib Tutorial</a>
- written by <a href="mailto:choor at atcom dot co dot il">Guy Keren</a>. The
- author allowed me to take some parts of his text, mainly the text which
- deals with the X Windows generality.
- </p>
- <p>
- This tutorial is intended for people who want to start to program
- with the <a href="http://xcb.freedesktop.org">XCB</a>
- library. keep in mind that XCB, like the
- <a href="http://tronche.com/gui/x/xlib/introduction">Xlib</a>
- library, isn't what most programmers wanting to write X
- applications are looking for. They should use a much higher
- level GUI toolkit like Motif,
- <a href="http://www.lesstif.org">LessTiff</a>,
- <a href="http://www.gtk.org">GTK</a>,
- <a href="http://www.trolltech.com">QT</a>,
- <a href="http://www.enlightenment.org">EWL</a>,
- <a href="http://www.enlightenment.org">ETK</a>, or use
- <a href="http://cairographics.org">Cairo</a>.
- However,
- we need to start somewhere. More than this, knowing how things
- work down below is never a bad idea.
- </p>
- <p>
- After reading this tutorial, one should be able to write very
- simple graphical programs, but not programs with decent user
- interfaces. For such programs, one of the previously mentioned
- libraries should be used.
- </p>
- <p>
- But what is XCB? Xlib has been
- the standard C binding for the <a href="http://www.x.org">X
- Window System</a> protocol for many years now. It is an
- excellent piece of work, but there are applications for which it
- is not ideal, for example:
- </p>
- <ul>
- <li><b>Small platforms</b>: Xlib is a large piece of code, and
- it's difficult to make it smaller
- <li><b>Latency hiding</b>: Xlib requests requiring a reply are
- effectively synchronous: they block until the reply appears,
- whether the result is needed immediately or not.
- <li><b>Direct access to the protocol</b>: Xlib does quite a
- bit of caching, layering, and similar optimizations. While this
- is normally a feature, it makes it difficult to simply emit
- specified X protocol requests and process specific
- responses.
- <li><b>Threaded applications</b>: While Xlib does attempt to
- support multithreading, the API makes this difficult and
- error-prone.
- <li><b>New extensions</b>: The Xlib infrastructure provides
- limited support for the new creation of X extension client side
- code.
- </ul>
- <p>
- For these reasons, among others, XCB, an X C binding, has been
- designed to solve the above problems and thus provide a base for
- </p>
- <ul>
- <li>Toolkit implementation.
- <li>Direct protocol-level programming.
- <li>Lightweight emulation of commonly used portions of the
- Xlib API.
- </ul>
- <br>
- <li class="title"><a name="Xmodel">The client and server model of the X window system</a>
- <p>
- The X Window System was developed with one major goal:
- flexibility. The idea was that the way things look is one thing,
- but the way things work is another matter. Thus, the lower
- levels provide the tools required to draw windows, handle user
- input, allow drawing graphics using colors (or black and white
- screens), etc. To this point, a decision was made to separate
- the system into two parts. A client that decides what to do, and
- a server that actually draws on the screen and reads user input
- in order to send it to the client for processing.
- </p>
- <p>
- This model is the complete opposite of what is used to when
- dealing with clients and servers. In our case, the user sits
- near the machine controlled by the server, while the client
- might be running on a remote machine. The server controls the
- screens, mouse and keyboard. A client may connect to the server,
- request that it draws a window (or several windows), and ask the
- server to send it any input the user sends to these
- windows. Thus, several clients may connect to a single X server
- (one might be running mail software, one running a WWW
- browser, etc). When input is sent by the user to some window,
- the server sends a message to the client controlling this window
- for processing. The client decides what to do with this input,
- and sends the server requests for drawing in the window.
- </p>
- <p>
- The whole session is carried out using the X message
- protocol. This protocol was originally carried over the TCP/IP
- protocol suite, allowing the client to run on any machine
- connected to the same network that the server is. Later on, the
- X servers were extended to allow clients running on the local
- machine with more optimized access to the server (note that an X
- protocol message may be several hundreds of KB in size), such as
- using shared memory, or using Unix domain sockets (a method for
- creating a logical channel on a Unix system between two processes).
- </p>
- <li class="title"><a name="asynch">GUI programming: the asynchronous model</a>
- <p>
- Unlike conventional computer programs, that carry some serial
- nature, a GUI program usually uses an asynchronous programming
- model, also known as "event-driven programming". This means that
- that program mostly sits idle, waiting for events sent by the X
- server, and then acts upon these events. An event may say "The
- user pressed the 1st button mouse in spot (x,y)", or "The window
- you control needs to be redrawn". In order for the program to be
- responsive to the user input, as well as to refresh requests, it
- needs to handle each event in a rather short period of time
- (e.g. less that 200 milliseconds, as a rule of thumb).
- </p>
- <p>
- This also implies that the program may not perform operations
- that might take a long time while handling an event (such as
- opening a network connection to some remote server, or
- connecting to a database server, or even performing a long file
- copy operation). Instead, it needs to perform all these
- operations in an asynchronous manner. This may be done by using
- various asynchronous models to perform the longish operations,
- or by performing them in a different process or thread.
- </p>
- <p>
- So the way a GUI program looks is something like that:
- </p>
- <ol>
- <li>Perform initialization routines.
- <li>Connect to the X server.
- <li>Perform X-related initialization.
- <li>While not finished:
- <ol>
- <li>Receive the next event from the X server.
- <li>Handle the event, possibly sending various drawing
- requests to the X server.
- <li>If the event was a quit message, exit the loop.
- </ol>
- <li>Close down the connection to the X server.
- <li>Perform cleanup operations.
- </ol>
- <br>
- <li class="title"><a name="notions">Basic XCB notions</a>
- <p>
- XCB has been created to eliminate the need for
- programs to actually implement the X protocol layer. This
- library gives a program a very low-level access to any X
- server. Since the protocol is standardized, a client using any
- implementation of XCB may talk with any X server (the same
- occurs for Xlib, of course). We now give a brief description of
- the basic XCB notions. They will be detailed later.
- </p>
- <ol>
- <li class="subtitle"><a name="conn">The X Connection</a>
- <p>
- The major notion of using XCB is the X Connection. This is a
- structure representing the connection we have open with a
- given X server. It hides a queue of messages coming from the
- server, and a queue of pending requests that our client
- intends to send to the server. In XCB, this structure is named
- 'xcb_connection_t'. It is analogous to the Xlib Display.
- When we open a connection to an X server, the
- library returns a pointer to such a structure. Later, we
- supply this pointer to any XCB function that should send
- messages to the X server or receive messages from this server.
- </p>
- <li class="subtitle"><a name="requestsreplies">Requests and
- replies: the Xlib killers</a>
- <p>
- To ask for information from the X server, we have to make a request
- and ask for a reply. With Xlib, these two tasks are
- automatically done: Xlib locks the system, sends a request,
- waits for a reply from the X server and unlocks. This is
- annoying, especially if one makes a lot of requests to the X
- server. Indeed, Xlib has to wait for the end of a reply
- before asking for the next request (because of the locks that
- Xlib sends). For example, here is a time-line of N=4
- requests/replies with Xlib, with a round-trip latency
- <b>T_round_trip</b> that is 5 times long as the time required
- to write or read a request/reply (<b>T_write/T_read</b>):
- </p>
- <pre class="text">
- W-----RW-----RW-----RW-----R
-</pre>
- <ul>
- <li>W: Writing request
- <li>-: Stalled, waiting for data
- <li>R: Reading reply
- </ul>
- <p>
- The total time is N * (T_write + T_round_trip + T_read).
- </p>
- <p>
- With XCB, we can suppress most of the round-trips as the
- requests and the replies are not locked. We usually send a
- request, then XCB returns to us a <b>cookie</b>, which is an
- identifier. Then, later, we ask for a reply using this
- <b>cookie</b> and XCB returns a
- pointer to that reply. Hence, with XCB, we can send a lot of
- requests, and later in the program, ask for all the replies
- when we need them. Here is the time-line for 4
- requests/replies when we use this property of XCB:
- </p>
- <pre class="text">
- WWWW--RRRR
-</pre>
- <p>
- The total time is N * T_write + max (0, T_round_trip - (N-1) *
- T_write) + N * T_read. Which can be considerably faster than
- all those Xlib round-trips.
- </p>
- <p>
- Here is a program that computes the time to create 500 atoms
- with Xlib and XCB. It shows the Xlib way, the bad XCB way
- (which is similar to Xlib) and the good XCB way. On my
- computer, XCB is 25 times faster than Xlib.
- </p>
- <pre class="code">
-#include &lt;stdlib.h&gt;
-#include &lt;stdio.h&gt;
-#include &lt;string.h&gt;
-#include &lt;sys/time.h&gt;
-
-#include &lt;xcb/xcb.h&gt;
-
-#include &lt;X11/Xlib.h&gt;
-
-double
-get_time(void)
-{
- struct timeval timev;
-
- gettimeofday(&amp;timev, NULL);
-
- return (double)timev.tv_sec + (((double)timev.tv_usec) / 1000000);
-}
-
-int
-main ()
-{
- xcb_connection_t *c;
- xcb_atom_t *atoms;
- xcb_intern_atom_cookie_t *cs;
- char **names;
- int count;
- int i;
- double start;
- double end;
- double diff;
-
- /* Xlib */
- Display *disp;
- Atom *atoms_x;
- double diff_x;
-
- c = xcb_connect (NULL, NULL);
-
- count = 500;
- atoms = (xcb_atom_t *)malloc (count * sizeof (atoms));
- names = (char **)malloc (count * sizeof (char *));
-
- /* init names */
- for (i = 0; i &lt; count; ++i) {
- char buf[100];
-
- sprintf (buf, "NAME%d", i);
- names[i] = strdup (buf);
- }
-
- /* bad use */
- start = get_time ();
-
- for (i = 0; i &lt; count; ++i)
- atoms[i] = xcb_intern_atom_reply (c,
- xcb_intern_atom (c,
- 0,
- strlen(names[i]),
- names[i]),
- NULL)->atom;
-
- end = get_time ();
- diff = end - start;
- printf ("bad use time : %f\n", diff);
-
- /* good use */
- start = get_time ();
-
- cs = (xcb_intern_atom_cookie_t *) malloc (count * sizeof(xcb_intern_atom_cookie_t));
- for(i = 0; i &lt; count; ++i)
- cs[i] = xcb_intern_atom (c, 0, strlen(names[i]), names[i]);
-
- for(i = 0; i &lt; count; ++i) {
- xcb_intern_atom_reply_t *r;
-
- r = xcb_intern_atom_reply(c, cs[i], 0);
- if(r)
- atoms[i] = r->atom;
- free(r);
- }
-
- end = get_time ();
- printf ("good use time : %f\n", end - start);
- printf ("ratio : %f\n", diff / (end - start));
- diff = end - start;
-
- /* free var */
- free (atoms);
- free (cs);
-
- xcb_disconnect (c);
-
- /* Xlib */
- disp = XOpenDisplay (getenv("DISPLAY"));
-
- atoms_x = (Atom *)malloc (count * sizeof (atoms_x));
-
- start = get_time ();
-
- for (i = 0; i &lt; count; ++i)
- atoms_x[i] = XInternAtom(disp, names[i], 0);
-
- end = get_time ();
- diff_x = end - start;
- printf ("Xlib use time : %f\n", diff_x);
- printf ("ratio : %f\n", diff_x / diff);
-
- free (atoms_x);
- for (i = 0; i &lt; count; ++i)
- free (names[i]);
- free (names);
-
- XCloseDisplay (disp);
-
- return 0;
-}
-</pre>
- <li class="subtitle"><a name="gc">The Graphic Context</a>
- <p>
- When we perform various drawing operations (graphics, text,
- etc), we may specify various options for controlling how the
- data will be drawn (what foreground and background colors to
- use, how line edges will be connected, what font to use when
- drawing some text, etc). In order to avoid the need to supply
- hundreds of parameters to each drawing function, a graphical
- context structure is used. We set the various drawing options
- in this structure, and then we pass a pointer to this
- structure to any drawing routines. This is rather handy, as we
- often need to perform several drawing requests with the same
- options. Thus, we would initialize a graphical context, set
- the desired options, and pass this structure to all drawing
- functions.
- </p>
- <p>
- Note that graphic contexts have no client-side structure in
- XCB, they're just XIDs. Xlib has a client-side structure
- because it caches the GC contents so it can avoid making
- redundant requests, but of course XCB doesn't do that.
- </p>
- <li class="subtitle"><a name="events">Events</a>
- <p>
- A structure is used to pass events received from the X
- server. XCB supports exactly the events specified in the
- protocol (33 events). This structure contains the type
- of event received (including a bit for whether it came
- from the server or another client), as well as the data associated with the
- event (e.g. position on the screen where the event was
- generated, mouse button associated with the event, region of
- the screen associated with a "redraw" event, etc). The way to
- read the event's data depends on the event type.
- </p>
- </ol>
- <br>
- <li class="title"><a name="use">Using XCB-based programs</a>
- <br>
- <ol>
- <li class="subtitle"><a name="inst">Installation of XCB</a>
- <p>
- <b>TODO:</b> These instructions are out of date.
- Just reference the <a href="http://xcb.freedesktop.org/">main XCB page</a>
- so we don't have to maintain these instructions in more than
- one place.
- </p>
- <p>
- To build XCB from source, you need to have installed at
- least:
- </p>
- <ul>
- <li>pkgconfig 0.15.0
- <li><a href="http://www.gnu.org/software/automake/">automake 1.7</a>
- <li><a href="http://www.gnu.org/software/autoconf/">autoconf 2.50</a>
- <li><a href="http://www.check.org">check</a>
- <li><a href="http://xmlsoft.org/XSLT/">xsltproc</a>
- <li><a href="http://www.gnu.org/software/gperf/">gperf 3.0.1</a>
- </ul>
- <p>
- You have to checkout in the git repository the following modules:
- </p>
- <ul>
- <li>Xau from xlibs
- <li>xcb-proto
- <li>xcb
- </ul>
- <p>
- Note that xcb-proto exists only to install header
- files, so typing 'make' or 'make all' will produce the message
- "Nothing to be done for 'all'". That's normal.
- </p>
- <li class="subtitle"><a name="comp">Compiling XCB-based programs</a>
- <p>
- Compiling XCB-based programs requires linking them with the XCB
- library. This is easily done thanks to pkgconfig:
- </p>
- <pre class="text">
-gcc -Wall prog.c -o prog `pkg-config --cflags --libs xcb`
-</pre>
- </ol>
- <li class="title"><a name="openconn">Opening and closing the connection to an X server</a>
- <p>
- An X program first needs to open the connection to the X
- server. There is a function that opens a connection. It requires
- the display name, or NULL. In the latter case, the display name
- will be the one in the environment variable DISPLAY.
- </p>
- <pre class="code">
-<span class="type">xcb_connection_t</span> *xcb_connect (<span class="keyword">const</span> <span class="type">char</span> *displayname,
- <span class="type">int</span> *screenp);
-</pre>
- <p>
- The second parameter returns the screen number used for the
- connection. The returned structure describes an XCB connection
- and is opaque. Here is how the connection can be opened:
- </p>
- <pre class="code">
-#<span class="include">include</span> <span class="string">&lt;xcb/xcb.h&gt;</span>
-
-<span class="type">int</span>
-<span class="function">main</span> ()
-{
- <span class="type">xcb_connection_t</span> *c;
-
- /* Open the connection to the X server. Use the DISPLAY environment variable as the default display name */
- c = xcb_connect (NULL, NULL);
-
- <span class="keyword">return</span> 0;
-}
-</pre>
- <p>
- To close a connection, it suffices to use:
- </p>
- <pre class="code">
-<span class="type">void</span> xcb_disconnect (<span class="type">xcb_connection_t</span> *c);
-</pre>
- <div class="comp">
- <div class="title">
- Comparison Xlib/XCB
- </div>
- <div class="xlib">
- <ul>
- <li>XOpenDisplay ()
- </ul>
- </div>
- <div class="xcb">
- <ul>
- <li>xcb_connect ()
- </ul>
- </div>
- <div class="xlib">
- <ul>
- <li>XCloseDisplay ()
- </ul>
- </div>
- <div class="xcb">
- <ul>
- <li>xcb_disconnect ()
- </ul>
- </div>
- </div>
- <br>
- <li class="title"><a name="screen">Checking basic information about a connection</a>
- <p>
- Once we have opened a connection to an X server, we should check some
- basic information about it: what screens it has, what is the
- size (width and height) of the screen, how many colors it
- supports (black and white ? grey scale ?, 256 colors ? more ?),
- and so on. We get such information from the xcb_screen_t
- structure:
- </p>
- <pre class="code">
-typedef struct {
- xcb_window_t root;
- xcb_colormap_t default_colormap;
- uint32_t white_pixel;
- uint32_t black_pixel;
- uint32_t current_input_masks;
- uint16_t width_in_pixels;
- uint16_t height_in_pixels;
- uint16_t width_in_millimeters;
- uint16_t height_in_millimeters;
- uint16_t min_installed_maps;
- uint16_t max_installed_maps;
- xcb_visualid_t root_visual;
- uint8_t backing_stores;
- uint8_t save_unders;
- uint8_t root_depth;
- uint8_t allowed_depths_len;
-} xcb_screen_t;
-</pre>
- <p>
- We could retrieve the first screen of the connection by using the
- following function:
- </p>
- <pre class="code">
-xcb_screen_iterator_t xcb_setup_roots_iterator (xcb_setup_t *R);
-</pre>
- <p>
- Here is a small program that shows how to use this function:
- </p>
- <pre class="code">
-#include &lt;stdio.h&gt;
-
-#include &lt;xcb/xcb.h&gt;
-
-int
-main ()
-{
- xcb_connection_t *c;
- xcb_screen_t *screen;
- int screen_nbr;
- xcb_screen_iterator_t iter;
-
- /* Open the connection to the X server. Use the DISPLAY environment variable */
- c = xcb_connect (NULL, &amp;screen_nbr);
-
- /* Get the screen #screen_nbr */
- iter = xcb_setup_roots_iterator (xcb_get_setup (c));
- for (; iter.rem; --screen_nbr, xcb_screen_next (&amp;iter))
- if (screen_nbr == 0) {
- screen = iter.data;
- break;
- }
-
- printf ("\n");
- printf ("Informations of screen %ld:\n", screen-&gt;root);
- printf (" width.........: %d\n", screen-&gt;width_in_pixels);
- printf (" height........: %d\n", screen-&gt;height_in_pixels);
- printf (" white pixel...: %ld\n", screen-&gt;white_pixel);
- printf (" black pixel...: %ld\n", screen-&gt;black_pixel);
- printf ("\n");
-
- return 0;
-}
-</pre>
- <li class="title"><a name="helloworld">Creating a basic window - the "hello world" program</a>
- <p>
- After we got some basic information about our screen, we can
- create our first window. In the X Window System, a window is
- characterized by an Id. So, in XCB, a window is of type:
- </p>
- <pre class="code">
-typedef uint32_t xcb_window_t;
-</pre>
- <p>
- We first ask for a new Id for our window, with this function:
- </p>
- <pre class="code">
-xcb_window_t xcb_generate_id(xcb_connection_t *c);
-</pre>
- <p>
- Then, XCB supplies the following function to create new windows:
- </p>
- <pre class="code">
-xcb_void_cookie_t xcb_create_window (xcb_connection_t *c, /* Pointer to the xcb_connection_t structure */
- uint8_t depth, /* Depth of the screen */
- xcb_window_t wid, /* Id of the window */
- xcb_window_t parent, /* Id of an existing window that should be the parent of the new window */
- int16_t x, /* X position of the top-left corner of the window (in pixels) */
- int16_t y, /* Y position of the top-left corner of the window (in pixels) */
- uint16_t width, /* Width of the window (in pixels) */
- uint16_t height, /* Height of the window (in pixels) */
- uint16_t border_width, /* Width of the window's border (in pixels) */
- uint16_t _class,
- xcb_visualid_t visual,
- uint32_t value_mask,
- const uint32_t *value_list);
-</pre>
- <p>
- The fact that we created the window does not mean that it will
- be drawn on screen. By default, newly created windows are not
- mapped on the screen (they are invisible). In order to make our
- window visible, we use the function <span class="code">xcb_map_window()</span>, whose
- prototype is
- </p>
- <pre class="code">
-xcb_void_cookie_t xcb_map_window (xcb_connection_t *c,
- xcb_window_t window);
-</pre>
- <p>
- Finally, here is a small program to create a window of size
- 150x150 pixels, positioned at the top-left corner of the screen:
- </p>
- <pre class="code">
-#include &lt;unistd.h&gt; /* pause() */
-
-#include &lt;xcb/xcb.h&gt;
-
-int
-main ()
-{
- xcb_connection_t *c;
- xcb_screen_t *screen;
- xcb_window_t win;
-
- /* Open the connection to the X server */
- c = xcb_connect (NULL, NULL);
-
- /* Get the first screen */
- screen = xcb_setup_roots_iterator (xcb_get_setup (c)).data;
-
- /* Ask for our window's Id */
- win = xcb_generate_id(c);
-
- /* Create the window */
- xcb_create_window (c, /* Connection */
- XCB_COPY_FROM_PARENT, /* depth (same as root)*/
- win, /* window Id */
- screen-&gt;root, /* parent window */
- 0, 0, /* x, y */
- 150, 150, /* width, height */
- 10, /* border_width */
- XCB_WINDOW_CLASS_INPUT_OUTPUT, /* class */
- screen-&gt;root_visual, /* visual */
- 0, NULL); /* masks, not used yet */
-
- /* Map the window on the screen */
- xcb_map_window (c, win);
-
- /* Make sure commands are sent before we pause, so window is shown */
- xcb_flush (c);
-
- pause (); /* hold client until Ctrl-C */
-
- return 0;
-}
-</pre>
- <p>
- In this code, you see one more function - <span class="code">xcb_flush()</span>, not explained
- yet. It is used to flush all the pending requests. More
- precisely, there are 2 functions that do such things. The first
- one is <span class="code">xcb_flush()</span>:
- </p>
- <pre class="code">
-int xcb_flush (xcb_connection_t *c);
-</pre>
- <p>
- This function flushes all pending requests to the X server (much
- like the <span class="code">fflush()</span> function is used to
- flush standard output). The second function is
- <span class="code">xcb_aux_sync()</span>:
- </p>
- <pre class="code">
-int xcb_aux_sync (xcb_connection_t *c);
-</pre>
- <p>
- This functions also flushes all pending requests to the X
- server, and then waits until the X server finishing processing
- these requests. In a normal program, this will not be necessary
- (we'll see why when we get to write a normal X program), but for
- now, we put it there.
- </p>
- <p>
- The window that is created by the above code has a non defined
- background. This one can be set to a specific color,
- thanks to the two last parameters of
- <span class="code">xcb_create_window()</span>, which are not
- described yet. See the subsections
- <a href="#winconf">Configuring a window</a> or
- <a href="#winconf">Registering for event types using event masks</a>
- for examples on how to use these parameters. In addition, as no
- events are handled, you have to make a Ctrl-C to interrupt the
- program.
- </p>
- <p>
- <b>TODO</b>: one should tell what these functions return and
- about the generic error
- </p>
- <div class="comp">
- <div class="title">
- Comparison Xlib/XCB
- </div>
- <div class="xlib">
- <ul>
- <li>XCreateWindow ()
- </ul>
- </div>
- <div class="xcb">
- <ul>
- <li>xcb_generate_id ()
- <li>xcb_create_window ()
- </ul>
- </div>
- </div>
- <br>
- <li class="title"><a name="drawing">Drawing in a window</a>
- <p>
- Drawing in a window can be done using various graphical
- functions (drawing pixels, lines, rectangles, etc). In order to
- draw in a window, we first need to define various general
- drawing parameters (what line width to use, which color to draw
- with, etc). This is done using a graphical context.
- </p>
- <ol>
- <li class="subtitle"><a name="allocgc">Allocating a Graphics Context</a>
- <p>
- As we said, a graphical context defines several attributes to
- be used with the various drawing functions. For this, we
- define a graphical context. We can use more than one graphical
- context with a single window, in order to draw in multiple
- styles (different colors, different line widths, etc). In XCB,
- a Graphics Context is, as a window, characterized by an Id:
- </p>
- <pre class="code">
-typedef uint32_t xcb_gcontext_t;
-</pre>
- <p>
- We first ask the X server to attribute an Id to our graphic
- context with this function:
- </p>
- <pre class="code">
-xcb_gcontext_t xcb_generate_id (xcb_connection_t *c);
-</pre>
- <p>
- Then, we set the attributes of the graphic context with this function:
- </p>
- <pre class="code">
-xcb_void_cookie_t xcb_create_gc (xcb_connection_t *c,
- xcb_gcontext_t cid,
- xcb_drawable_t drawable,
- uint32_t value_mask,
- const uint32_t *value_list);
-</pre>
- <p>
- We give now an example on how to allocate a graphic context
- that specifies that each drawing function that uses it will
- draw in foreground with a black color.
- </p>
- <pre class="code">
-#include &lt;xcb/xcb.h&gt;
-
-int
-main ()
-{
- xcb_connection_t *c;
- xcb_screen_t *screen;
- xcb_drawable_t win;
- xcb_gcontext_t black;
- uint32_t mask;
- uint32_t value[1];
-
- /* Open the connection to the X server and get the first screen */
- c = xcb_connect (NULL, NULL);
- screen = xcb_setup_roots_iterator (xcb_get_setup (c)).data;
-
- /* Create a black graphic context for drawing in the foreground */
- win = screen-&gt;root;
- black = xcb_generate_id (c);
- mask = XCB_GC_FOREGROUND;
- value[0] = screen-&gt;black_pixel;
- xcb_create_gc (c, black, win, mask, value);
-
- return 0;
-}
-</pre>
- <p>
- Note should be taken regarding the role of "value_mask" and
- "value_list" in the prototype of <span class="code">xcb_create_gc()</span>. Since a
- graphic context has many attributes, and since we often just
- want to define a few of them, we need to be able to tell the
- <span class="code">xcb_create_gc()</span> which attributes we
- want to set. This is what the "value_mask" parameter is
- for. We then use the "value_list" parameter to specify actual
- values for the attribute we defined in "value_mask". Thus, for
- each constant used in "value_list", we will use the matching
- constant in "value_mask". In this case, we define a graphic
- context with one attribute: when drawing (a point, a line,
- etc), the foreground color will be black. The rest of the
- attributes of this graphic context will be set to their
- default values.
- </p>
- <p>
- See the next Subsection for more details.
- </p>
- <div class="comp">
- <div class="title">
- Comparison Xlib/XCB
- </div>
- <div class="xlib">
- <ul>
- <li>XCreateGC ()
- </ul>
- </div>
- <div class="xcb">
- <ul>
- <li>xcb_generate_id ()
- <li>xcb_create_gc ()
- </ul>
- </div>
- </div>
- <br>
- <li class="subtitle"><a name="changegc">Changing the attributes of a Graphics Context</a>
- <p>
- Once we have allocated a Graphic Context, we may need to
- change its attributes (for example, changing the foreground
- color we use to draw a line, or changing the attributes of the
- font we use to display strings. See Subsections Drawing with a
- color and
- <a href="#assigningfont">Assigning a Font to a Graphic Context</a>).
- This is done by using this function:
- </p>
- <pre class="code">
-xcb_void_cookie_t xcb_change_gc (xcb_connection_t *c, /* The XCB Connection */
- xcb_gcontext_t gc, /* The Graphic Context */
- uint32_t value_mask, /* Components of the Graphic Context that have to be set */
- const uint32_t *value_list); /* Value as specified by value_mask */
-</pre>
- <p>
- The <span class="code">value_mask</span> parameter could take
- any combination of these masks from the xcb_gc_t enumeration:
- </p>
- <ul>
- <li>XCB_GC_FUNCTION
- <li>XCB_GC_PLANE_MASK
- <li>XCB_GC_FOREGROUND
- <li>XCB_GC_BACKGROUND
- <li>XCB_GC_LINE_WIDTH
- <li>XCB_GC_LINE_STYLE
- <li>XCB_GC_CAP_STYLE
- <li>XCB_GC_JOIN_STYLE
- <li>XCB_GC_FILL_STYLE
- <li>XCB_GC_FILL_RULE
- <li>XCB_GC_TILE
- <li>XCB_GC_STIPPLE
- <li>XCB_GC_TILE_STIPPLE_ORIGIN_X
- <li>XCB_GC_TILE_STIPPLE_ORIGIN_Y
- <li>XCB_GC_FONT
- <li>XCB_GC_SUBWINDOW_MODE
- <li>XCB_GC_GRAPHICS_EXPOSURES
- <li>XCB_GC_CLIP_ORIGIN_X
- <li>XCB_GC_CLIP_ORIGIN_Y
- <li>XCB_GC_CLIP_MASK
- <li>XCB_GC_DASH_OFFSET
- <li>XCB_GC_DASH_LIST
- <li>XCB_GC_ARC_MODE
- </ul>
- <p>
- It is possible to set several attributes at the same
- time (for example setting the attributes of a font and the
- color which will be used to display a string), by OR'ing these
- values in <span class="code">value_mask</span>. Then
- <span class="code">value_list</span> has to be an array which
- lists the value for the respective attributes. <b>These values
- must be in the same order as masks listed above.</b> See Subsection
- Drawing with a color to have an example.
- </p>
- <p>
- <b>TODO</b>: set the links of the 3 subsections, once they will
- be written :)
- </p>
- <p>
- <b>TODO</b>: give an example which sets several attributes.
- </p>
- <li class="subtitle"><a name="drawingprim">Drawing primitives: point, line, box, circle,...</a>
- <p>
- After we have created a Graphic Context, we can draw on a
- window using this Graphic Context, with a set of XCB
- functions, collectively called "drawing primitives". Let see
- how they are used.
- </p>
- <p>
- To draw a point, or several points, we use
- </p>
- <pre class="code">
-xcb_void_cookie_t xcb_poly_point (xcb_connection_t *c, /* The connection to the X server */
- uint8_t coordinate_mode, /* Coordinate mode, usually set to XCB_COORD_MODE_ORIGIN */
- xcb_drawable_t drawable, /* The drawable on which we want to draw the point(s) */
- xcb_gcontext_t gc, /* The Graphic Context we use to draw the point(s) */
- uint32_t points_len, /* The number of points */
- const xcb_point_t *points); /* An array of points */
-</pre>
- <p>
- The <span class="code">coordinate_mode</span> parameter
- specifies the coordinate mode. Available values are
- </p>
- <ul>
- <li><span class="code">XCB_COORD_MODE_ORIGIN</span>
- <li><span class="code">XCB_COORD_MODE_PREVIOUS</span>
- </ul>
- <p>
- If XCB_COORD_MODE_PREVIOUS is used, then all points but the first one
- are relative to the immediately previous point.
- </p>
- <p>
- The <span class="code">xcb_point_t</span> type is just a
- structure with two fields (the coordinates of the point):
- </p>
- <pre class="code">
-typedef struct {
- int16_t x;
- int16_t y;
-} xcb_point_t;
-</pre>
- <p>
- You could see an example in xpoints.c. <b>TODO</b> Set the link.
- </p>
- <p>
- To draw a line, or a polygonal line, we use
- </p>
- <pre class="code">
-xcb_void_cookie_t xcb_poly_line (xcb_connection_t *c, /* The connection to the X server */
- uint8_t coordinate_mode, /* Coordinate mode, usually set to XCB_COORD_MODE_ORIGIN */
- xcb_drawable_t drawable, /* The drawable on which we want to draw the line(s) */
- xcb_gcontext_t gc, /* The Graphic Context we use to draw the line(s) */
- uint32_t points_len, /* The number of points in the polygonal line */
- const xcb_point_t *points); /* An array of points */
-</pre>
- <p>
- This function will draw the line between the first and the
- second points, then the line between the second and the third
- points, and so on.
- </p>
- <p>
- To draw a segment, or several segments, we use
- </p>
- <pre class="code">
-xcb_void_cookie_t xcb_poly_segment (xcb_connection_t *c, /* The connection to the X server */
- xcb_drawable_t drawable, /* The drawable on which we want to draw the segment(s) */
- xcb_gcontext_t gc, /* The Graphic Context we use to draw the segment(s) */
- uint32_t segments_len, /* The number of segments */
- const xcb_segment_t *segments); /* An array of segments */
-</pre>
- <p>
- The <span class="code">xcb_segment_t</span> type is just a
- structure with four fields (the coordinates of the two points
- that define the segment):
- </p>
- <pre class="code">
-typedef struct {
- int16_t x1;
- int16_t y1;
- int16_t x2;
- int16_t y2;
-} xcb_segment_t;
-</pre>
- <p>
- To draw a rectangle, or several rectangles, we use
- </p>
- <pre class="code">
-xcb_void_cookie_t xcb_poly_rectangle (xcb_connection_t *c, /* The connection to the X server */
- xcb_drawable_t drawable, /* The drawable on which we want to draw the rectangle(s) */
- xcb_gcontext_t gc, /* The Graphic Context we use to draw the rectangle(s) */
- uint32_t rectangles_len, /* The number of rectangles */
- const xcb_rectangle_t *rectangles); /* An array of rectangles */
-</pre>
- <p>
- The <span class="code">xcb_rectangle_t</span> type is just a
- structure with four fields (the coordinates of the top-left
- corner of the rectangle, and its width and height):
- </p>
- <pre class="code">
-typedef struct {
- int16_t x;
- int16_t y;
- uint16_t width;
- uint16_t height;
-} xcb_rectangle_t;
-</pre>
- <!-- There's no coordinate_mode. Is it normal? -->
- <!-- [iano] Yes, it's not in the protocol. -->
- <p>
- To draw an elliptical arc, or several elliptical arcs, we use
- </p>
- <pre class="code">
-xcb_void_cookie_t xcb_poly_arc (xcb_connection_t *c, /* The connection to the X server */
- xcb_drawable_t drawable, /* The drawable on which we want to draw the arc(s) */
- xcb_gcontext_t gc, /* The Graphic Context we use to draw the arc(s) */
- uint32_t arcs_len, /* The number of arcs */
- const xcb_arc_t *arcs); /* An array of arcs */
-</pre>
- <p>
- The <span class="code">xcb_arc_t</span> type is a structure with
- six fields:
- </p>
- <pre class="code">
-typedef struct {
- int16_t x; /* Top left x coordinate of the rectangle surrounding the ellipse */
- int16_t y; /* Top left y coordinate of the rectangle surrounding the ellipse */
- uint16_t width; /* Width of the rectangle surrounding the ellipse */
- uint16_t height; /* Height of the rectangle surrounding the ellipse */
- int16_t angle1; /* Angle at which the arc begins */
- int16_t angle2; /* Angle at which the arc ends */
-} xcb_arc_t;
-</pre>
- <div class="emph">
- <p>
- Note: the angles are expressed in units of 1/64 of a degree,
- so to have an angle of 90 degrees, starting at 0,
- <span class="code">angle1 = 0</span> and
- <span class="code">angle2 = 90 &lt;&lt; 6</span>. Positive angles
- indicate counterclockwise motion, while negative angles
- indicate clockwise motion.
- </p>
- </div>
- <!-- I think that (x,y) should be the center of the
- ellipse, and (width, height) the radius. It's more logical. -->
- <!-- iano: Yes, and I bet some toolkits do that.
- But the protocol (and many other graphics APIs) define arcs
- by bounding rectangles. -->
- <p>
- The corresponding function which fill inside the geometrical
- object are listed below, without further explanation, as they
- are used as the above functions.
- </p>
- <p>
- To Fill a polygon defined by the points given as arguments ,
- we use
- </p>
- <pre class="code">
-xcb_void_cookie_t xcb_fill_poly (xcb_connection_t *c,
- xcb_drawable_t drawable,
- xcb_gcontext_t gc,
- uint8_t shape,
- uint8_t coordinate_mode,
- uint32_t points_len,
- const xcb_point_t *points);
-</pre>
- <p>
- The <span class="code">shape</span> parameter specifies a
- shape that helps the server to improve performance. Available
- values are
- </p>
- <ul>
- <li><span class="code">XCB_POLY_SHAPE_COMPLEX</span>
- <li><span class="code">XCB_POLY_SHAPE_NONCONVEX</span>
- <li><span class="code">XCB_POLY_SHAPE_CONVEX</span>
- </ul>
- <p>
- To fill one or several rectangles, we use
- </p>
- <pre class="code">
-xcb_void_cookie_t xcb_poly_fill_rectangle (xcb_connection_t *c,
- xcb_drawable_t drawable,
- xcb_gcontext_t gc,
- uint32_t rectangles_len,
- const xcb_rectangle_t *rectangles);
-</pre>
- <p>
- To fill one or several arcs, we use
- </p>
- <pre class="code">
-xcb_void_cookie_t xcb_poly_fill_arc (xcb_connection_t *c,
- xcb_drawable_t drawable,
- xcb_gcontext_t gc,
- uint32_t arcs_len,
- const xcb_arc_t *arcs);
-</pre>
- <br>
- <a name="points.c"></a>
- <p>
- To illustrate these functions, here is an example that draws
- four points, a polygonal line, two segments, two rectangles
- and two arcs. Remark that we use events for the first time, as
- an introduction to the next section.
- </p>
- <p>
- <b>TODO:</b> Use screen-&gt;root_depth for depth parameter.
- </p>
- <pre class="code">
-#include &lt;stdlib.h&gt;
-#include &lt;stdio.h&gt;
-
-#include &lt;xcb/xcb.h&gt;
-
-int
-main ()
-{
- xcb_connection_t *c;
- xcb_screen_t *screen;
- xcb_drawable_t win;
- xcb_gcontext_t foreground;
- xcb_generic_event_t *e;
- uint32_t mask = 0;
- uint32_t values[2];
-
- /* geometric objects */
- xcb_point_t points[] = {
- {10, 10},
- {10, 20},
- {20, 10},
- {20, 20}};
-
- xcb_point_t polyline[] = {
- {50, 10},
- { 5, 20}, /* rest of points are relative */
- {25,-20},
- {10, 10}};
-
- xcb_segment_t segments[] = {
- {100, 10, 140, 30},
- {110, 25, 130, 60}};
-
- xcb_rectangle_t rectangles[] = {
- { 10, 50, 40, 20},
- { 80, 50, 10, 40}};
-
- xcb_arc_t arcs[] = {
- {10, 100, 60, 40, 0, 90 &lt;&lt; 6},
- {90, 100, 55, 40, 0, 270 &lt;&lt; 6}};
-
- /* Open the connection to the X server */
- c = xcb_connect (NULL, NULL);
-
- /* Get the first screen */
- screen = xcb_setup_roots_iterator (xcb_get_setup (c)).data;
-
- /* Create black (foreground) graphic context */
- win = screen-&gt;root;
-
- foreground = xcb_generate_id (c);
- mask = XCB_GC_FOREGROUND | XCB_GC_GRAPHICS_EXPOSURES;
- values[0] = screen-&gt;black_pixel;
- values[1] = 0;
- xcb_create_gc (c, foreground, win, mask, values);
-
- /* Ask for our window's Id */
- win = xcb_generate_id(c);
-
- /* Create the window */
- mask = XCB_CW_BACK_PIXEL | XCB_CW_EVENT_MASK;
- values[0] = screen-&gt;white_pixel;
- values[1] = XCB_EVENT_MASK_EXPOSURE;
- xcb_create_window (c, /* Connection */
- XCB_COPY_FROM_PARENT, /* depth */
- win, /* window Id */
- screen-&gt;root, /* parent window */
- 0, 0, /* x, y */
- 150, 150, /* width, height */
- 10, /* border_width */
- XCB_WINDOW_CLASS_INPUT_OUTPUT, /* class */
- screen-&gt;root_visual, /* visual */
- mask, values); /* masks */
-
- /* Map the window on the screen */
- xcb_map_window (c, win);
-
-
- /* We flush the request */
- xcb_flush (c);
-
- while ((e = xcb_wait_for_event (c))) {
- switch (e-&gt;response_type &amp; ~0x80) {
- case XCB_EXPOSE: {
- /* We draw the points */
- xcb_poly_point (c, XCB_COORD_MODE_ORIGIN, win, foreground, 4, points);
-
- /* We draw the polygonal line */
- xcb_poly_line (c, XCB_COORD_MODE_PREVIOUS, win, foreground, 4, polyline);
-
- /* We draw the segements */
- xcb_poly_segment (c, win, foreground, 2, segments);
-
- /* We draw the rectangles */
- xcb_poly_rectangle (c, win, foreground, 2, rectangles);
-
- /* We draw the arcs */
- xcb_poly_arc (c, win, foreground, 2, arcs);
-
- /* We flush the request */
- xcb_flush (c);
-
- break;
- }
- default: {
- /* Unknown event type, ignore it */
- break;
- }
- }
- /* Free the Generic Event */
- free (e);
- }
-
- return 0;
-}
-</pre>
- </ol>
- <li class="title"><a name="xevents">X Events</a>
- <p>
- In an X program, everything is driven by events. Event painting
- on the screen is sometimes done as a response to an event (an
- <span class="code">Expose</span> event). If part of a program's
- window that was hidden, gets exposed (e.g. the window was raised
- above other widows), the X server will send an "expose" event to
- let the program know it should repaint that part of the
- window. User input (key presses, mouse movement, etc) is also
- received as a set of events.
- </p>
- <ol>
- <li class="subtitle"><a name="register">Registering for event types using event masks</a>
- <p>
- During the creation of a window, you should give it what kind
- of events it wishes to receive. Thus, you may register for
- various mouse (also called pointer) events, keyboard events,
- expose events, and so on. This is done for optimizing the
- server-to-client connection (i.e. why send a program (that
- might even be running at the other side of the globe) an event
- it is not interested in ?)
- </p>
- <p>
- In XCB, you use the "value_mask" and "value_list" data in the
- <span class="code">xcb_create_window()</span> function to
- register for events. Here is how we register for
- <span class="code">Expose</span> event when creating a window:
- </p>
- <pre class="code">
- mask = XCB_CW_EVENT_MASK;
- valwin[0] = XCB_EVENT_MASK_EXPOSURE;
- win = xcb_generate_id (c);
- xcb_create_window (c, depth, win, root-&gt;root,
- 0, 0, 150, 150, 10,
- XCB_WINDOW_CLASS_INPUT_OUTPUT, root-&gt;root_visual,
- mask, valwin);
-</pre>
- <p>
- <span class="code">XCB_EVENT_MASK_EXPOSURE</span> is a constant defined
- in the xcb_event_mask_t enumeration in the "xproto.h" header file. If we wanted to register for several
- event types, we can logically "or" them, as follows:
- </p>
- <pre class="code">
- mask = XCB_CW_EVENT_MASK;
- valwin[0] = XCB_EVENT_MASK_EXPOSURE | XCB_EVENT_MASK_BUTTON_PRESS;
- win = xcb_generate_id (c);
- xcb_create_window (c, depth, win, root-&gt;root,
- 0, 0, 150, 150, 10,
- XCB_WINDOW_CLASS_INPUT_OUTPUT, root-&gt;root_visual,
- mask, valwin);
-</pre>
- <p>
- This registers for <span class="code">Expose</span> events as
- well as for mouse button presses inside the created
- window. You should note that a mask may represent several
- event sub-types.
- </p>
- <p>
- The values that a mask could take are given
- by the <span class="code">xcb_cw_t</span> enumeration:
- </p>
- <pre class="code">
-typedef enum {
- XCB_CW_BACK_PIXMAP = 1L<<0,
- XCB_CW_BACK_PIXEL = 1L<<1,
- XCB_CW_BORDER_PIXMAP = 1L<<2,
- XCB_CW_BORDER_PIXEL = 1L<<3,
- XCB_CW_BIT_GRAVITY = 1L<<4,
- XCB_CW_WIN_GRAVITY = 1L<<5,
- XCB_CW_BACKING_STORE = 1L<<6,
- XCB_CW_BACKING_PLANES = 1L<<7,
- XCB_CW_BACKING_PIXEL = 1L<<8,
- XCB_CW_OVERRIDE_REDIRECT = 1L<<9,
- XCB_CW_SAVE_UNDER = 1L<<10,
- XCB_CW_EVENT_MASK = 1L<<11,
- XCB_CW_DONT_PROPAGATE = 1L<<12,
- XCB_CW_COLORMAP = 1L<<13,
- XCB_CW_CURSOR = 1L<<14
-} xcb_cw_t;
-</pre>
- <div class="emph">
- <p>Note: we must be careful when setting the values of the valwin
- parameter, as they have to follow the order the
- <span class="code">xcb_cw_t</span> enumeration. Here is an
- example:
- </p>
- </div>
- <pre class="code">
- mask = XCB_CW_EVENT_MASK | XCB_CW_BACK_PIXMAP;
- valwin[0] = XCB_NONE; /* for XCB_CW_BACK_PIXMAP (whose value is 1) */
- valwin[1] = XCB_EVENT_MASK_EXPOSURE | XCB_EVENT_MASK_BUTTON_PRESS; /* for XCB_CW_EVENT_MASK, whose value (2048) */
- /* is greater than the one of XCB_CW_BACK_PIXMAP */
-</pre>
- <p>
- If the window has already been created, we can use the
- <span class="code">xcb_change_window_attributes()</span> function to set
- the events that the window will receive. The subsection
- <a href="#winconf">Configuring a window</a> shows its
- prototype. As an example, here is a piece of code that
- configures the window to receive the
- <span class="code">Expose</span> and
- <span class="code">ButtonPress</span> events:
- </p>
- <pre class="code">
-const static uint32_t values[] = { XCB_EVENT_MASK_EXPOSURE | XCB_EVENT_MASK_BUTTON_PRESS };
-
-/* The connection c and the window win are supposed to be defined */
-
-xcb_change_window_attributes (c, win, XCB_CW_EVENT_MASK, values);
-</pre>
- <div class="emph">
- <p>
- Note: A common bug programmers do is adding code to handle new
- event types in their program, while forgetting to add the
- masks for these events in the creation of the window. Such a
- programmer then should sit down for hours debugging his
- program, wondering "Why doesn't my program notice that I
- released the button?", only to find that they registered for
- button press events but not for button release events.
- </p>
- </div>
- <li class="subtitle"><a name="loop">Receiving events: writing the events loop</a>
- <p>
- After we have registered for the event types we are interested
- in, we need to enter a loop of receiving events and handling
- them. There are two ways to receive events: a blocking way and
- a non-blocking way:
- </p>
- <ul>
- <li>
- <span class="code">xcb_wait_for_event (xcb_connection_t *c)</span>
- is the blocking way. It waits (so blocks...) until an event is
- queued in the X server. Then it retrieves it into a newly
- allocated structure (it dequeues it from the queue) and returns
- it. This structure has to be freed. The function returns
- <span class="code">NULL</span> if an error occurs.
-
- <br>
- <li>
- <span class="code">xcb_poll_for_event (xcb_connection_t *c, int
- *error)</span> is the non-blocking way. It looks at the event
- queue and returns (and dequeues too) an existing event into
- a newly allocated structure. This structure has to be
- freed. It returns <span class="code">NULL</span> if there is
- no event. If an error occurs, the parameter <span
- class="code">error</span> will be filled with the error
- status.
- </ul>
- <p>
- There are various ways to write such a loop. We present two
- ways to write such a loop, with the two functions above. The
- first one uses <span class="code">xcb_wait_for_event_t</span>, which
- is similar to an event Xlib loop using only <span
- class="code">XNextEvent</span>:
- </p>
- <pre class="code">
- xcb_generic_event_t *e;
-
- while ((e = xcb_wait_for_event (c))) {
- switch (e-&gt;response_type &amp; ~0x80) {
- case XCB_EXPOSE: {
- /* Handle the Expose event type */
- xcb_expose_event_t *ev = (xcb_expose_event_t *)e;
-
- /* ... */
-
- break;
- }
- case XCB_BUTTON_PRESS: {
- /* Handle the ButtonPress event type */
- xcb_button_press_event_t *ev = (xcb_button_press_event_t *)e;
-
- /* ... */
-
- break;
- }
- default: {
- /* Unknown event type, ignore it */
- break;
- }
- }
- /* Free the Generic Event */
- free (e);
- }
-</pre>
- <p>
- You will certainly want to use <span
- class="code">xcb_poll_for_event(xcb_connection_t *c, int
- *error)</span> if, in Xlib, you use <span
- class="code">XPending</span> or
- <span class="code">XCheckMaskEvent</span>:
- </p>
- <pre class="code">
- while (XPending (display)) {
- XEvent ev;
-
- XNextEvent(d, &amp;ev);
-
- /* Manage your event */
- }
-</pre>
- <p>
- Such a loop in XCB looks like:
- </p>
- <pre class="code">
- xcb_generic_event_t *ev;
-
- while ((ev = xcb_poll_for_event (conn, 0))) {
- /* Manage your event */
- }
-</pre>
- <p>
- The events are managed in the same way as with <span
- class="code">xcb_wait_for_event_t</span>.
- Obviously, we will need to give the user some way of
- terminating the program. This is usually done by handling a
- special "quit" event, as we will soon see.
- </p>
- <div class="comp">
- <div class="title">
- Comparison Xlib/XCB
- </div>
- <div class="xlib">
- <ul>
- <li>XNextEvent ()
- </ul>
- </div>
- <div class="xcb">
- <ul>
- <li>xcb_wait_for_event ()
- </ul>
- </div>
- <div class="xlib">
- <ul>
- <li>XPending ()
- <li>XCheckMaskEvent ()
- </ul>
- </div>
- <div class="xcb">
- <ul>
- <li>xcb_poll_for_event ()
- </ul>
- </div>
- </div>
- <br>
- <li class="subtitle"><a name="expose">Expose events</a>
- <p>
- The <span class="code">Expose</span> event is one of the most
- basic (and most used) events an application may receive. It
- will be sent to us in one of several cases:
- </p>
- <ul>
- <li>A window that covered part of our window has moved
- away, exposing part (or all) of our window.
- <li>Our window was raised above other windows.
- <li>Our window mapped for the first time.
- <li>Our window was de-iconified.
- </ul>
- <p>
- You should note the implicit assumption hidden here: the
- contents of our window is lost when it is being obscured
- (covered) by either windows. One may wonder why the X server
- does not save this contents. The answer is: to save
- memory. After all, the number of windows on a display at a
- given time may be very large, and storing the contents of all
- of them might require a lot of memory. Actually, there is a
- way to tell the X server to store the contents of a window in
- special cases, as we will see later.
- </p>
- <p>
- When we get an <span class="code">Expose</span> event, we
- should take the event's data from the members of the following
- structure:
- </p>
- <pre class="code">
-typedef struct {
- uint8_t response_type; /* The type of the event, here it is XCB_EXPOSE */
- uint8_t pad0;
- uint16_t sequence;
- xcb_window_t window; /* The Id of the window that receives the event (in case */
- /* our application registered for events on several windows */
- uint16_t x; /* The x coordinate of the top-left part of the window that needs to be redrawn */
- uint16_t y; /* The y coordinate of the top-left part of the window that needs to be redrawn */
- uint16_t width; /* The width of the part of the window that needs to be redrawn */
- uint16_t height; /* The height of the part of the window that needs to be redrawn */
- uint16_t count;
-} xcb_expose_event_t;
-</pre>
- <li class="subtitle"><a name="userinput">Getting user input</a>
- <p>
- User input traditionally comes from two sources: the mouse
- and the keyboard. Various event types exist to notify us of
- user input (a key being presses on the keyboard, a key being
- released on the keyboard, the mouse moving over our window,
- the mouse entering (or leaving) our window, and so on.
- </p>
- <ol>
- <li class="subsubtitle"><a name="mousepressrelease">Mouse button press and release events</a>
- <p>
- The first event type we will deal with is a mouse
- button-press (or button-release) event in our window. In
- order to register to such an event type, we should add one
- (or more) of the following masks when we create our window:
- </p>
- <ul>
- <li><span class="code">XCB_EVENT_MASK_BUTTON_PRESS</span>: notify us
- of any button that was pressed in one of our windows.
- <li><span class="code">XCB_EVENT_MASK_BUTTON_RELEASE</span>: notify us
- of any button that was released in one of our windows.
- </ul>
- <p>
- The structure to be checked for in our events loop is the
- same for these two events, and is the following:
- </p>
- <pre class="code">
-typedef struct {
- uint8_t response_type; /* The type of the event, here it is xcb_button_press_event_t or xcb_button_release_event_t */
- xcb_button_t detail;
- uint16_t sequence;
- xcb_timestamp_t time; /* Time, in milliseconds the event took place in */
- xcb_window_t root;
- xcb_window_t event;
- xcb_window_t child;
- int16_t root_x;
- int16_t root_y;
- int16_t event_x; /* The x coordinate where the mouse has been pressed in the window */
- int16_t event_y; /* The y coordinate where the mouse has been pressed in the window */
- uint16_t state; /* A mask of the buttons (or keys) during the event */
- uint8_t same_screen;
-} xcb_button_press_event_t;
-
-typedef xcb_button_press_event_t xcb_button_release_event_t;
-</pre>
- <p>
- The <span class="code">time</span> field may be used to calculate "double-click"
- situations by an application (e.g. if the mouse button was
- clicked two times in a duration shorter than a given amount
- of time, assume this was a double click).
- </p>
- <p>
- The <span class="code">state</span> field is a mask of the buttons held down during
- the event. It is a bitwise OR of any of the following (from the xcb_button_mask_t and
- xcb_mod_mask_t enumerations):
- </p>
- <ul>
- <li><span class="code">XCB_BUTTON_MASK_1</span>
- <li><span class="code">XCB_BUTTON_MASK_2</span>
- <li><span class="code">XCB_BUTTON_MASK_3</span>
- <li><span class="code">XCB_BUTTON_MASK_4</span>
- <li><span class="code">XCB_BUTTON_MASK_5</span>
- <li><span class="code">XCB_MOD_MASK_SHIFT</span>
- <li><span class="code">XCB_MOD_MASK_LOCK</span>
- <li><span class="code">XCB_MOD_MASK_CONTROL</span>
- <li><span class="code">XCB_MOD_MASK_1</span>
- <li><span class="code">XCB_MOD_MASK_2</span>
- <li><span class="code">XCB_MOD_MASK_3</span>
- <li><span class="code">XCB_MOD_MASK_4</span>
- <li><span class="code">XCB_MOD_MASK_5</span>
- </ul>
- <p>
- Their names are self explanatory, where the first 5 refer to
- the mouse buttons that are being pressed, while the rest
- refer to various "special keys" that are being pressed (Mod1
- is usually the 'Alt' key or the 'Meta' key).
- </p>
- <p>
- <b>TODO:</b> Problem: it seems that the state does not
- change when clicking with various buttons.
- </p>
- <li class="subsubtitle"><a name="mousemvnt">Mouse movement events</a>
- <p>
- Similar to mouse button press and release events, we also
- can be notified of various mouse movement events. These can
- be split into two families. One is of mouse pointer
- movement while no buttons are pressed, and the second is a
- mouse pointer motion while one (or more) of the buttons are
- pressed (this is sometimes called "a mouse drag operation",
- or just "dragging"). The following event masks may be added
- during the creation of our window:
- </p>
- <ul>
- <li><span class="code">XCB_EVENT_MASK_POINTER_MOTION</span>: events of
- the pointer moving in one of the windows controlled by our
- application, while no mouse button is held pressed.
- <li><span class="code">XCB_EVENT_MASK_BUTTON_MOTION</span>: Events of
- the pointer moving while one or more of the mouse buttons
- is held pressed.
- <li><span class="code">XCB_EVENT_MASK_BUTTON_1_MOTION</span>: same as
- <span class="code">XCB_EVENT_MASK_BUTTON_MOTION</span>, but only when
- the 1st mouse button is held pressed.
- <li><span class="code">XCB_EVENT_MASK_BUTTON_2_MOTION</span>,
- <span class="code">XCB_EVENT_MASK_BUTTON_3_MOTION</span>,
- <span class="code">XCB_EVENT_MASK_BUTTON_4_MOTION</span>,
- <span class="code">XCB_EVENT_MASK_BUTTON_5_MOTION</span>: same as
- <span class="code">XCB_EVENT_MASK_BUTTON_1_MOTION</span>, but
- respectively for 2nd, 3rd, 4th and 5th mouse button.
- </ul>
- <p>
- The structure to be checked for in our events loop is the
- same for these events, and is the following:
- </p>
- <pre class="code">
-typedef struct {
- uint8_t response_type; /* The type of the event */
- uint8_t detail;
- uint16_t sequence;
- xcb_timestamp_t time; /* Time, in milliseconds the event took place in */
- xcb_window_t root;
- xcb_window_t event;
- xcb_window_t child;
- int16_t root_x;
- int16_t root_y;
- int16_t event_x; /* The x coordinate of the mouse when the event was generated */
- int16_t event_y; /* The y coordinate of the mouse when the event was generated */
- uint16_t state; /* A mask of the buttons (or keys) during the event */
- uint8_t same_screen;
-} xcb_motion_notify_event_t;
-</pre>
- <li class="subsubtitle"><a name="mouseenter">Mouse pointer enter and leave events</a>
- <p>
- Another type of event that applications might be interested
- in, is a mouse pointer entering a window the program
- controls, or leaving such a window. Some programs use these
- events to show the user that the application is now in
- focus. In order to register for such an event type, we
- should add one (or more) of the following masks when we
- create our window:
- </p>
- <ul>
- <li><span class="code">xcb_event_enter_window_t</span>: notify us
- when the mouse pointer enters any of our controlled
- windows.
- <li><span class="code">xcb_event_leave_window_t</span>: notify us
- when the mouse pointer leaves any of our controlled
- windows.
- </ul>
- <p>
- The structure to be checked for in our events loop is the
- same for these two events, and is the following:
- </p>
- <pre class="code">
-typedef struct {
- uint8_t response_type; /* The type of the event */
- uint8_t detail;
- uint16_t sequence;
- xcb_timestamp_t time; /* Time, in milliseconds the event took place in */
- xcb_window_t root;
- xcb_window_t event;
- xcb_window_t child;
- int16_t root_x;
- int16_t root_y;
- int16_t event_x; /* The x coordinate of the mouse when the event was generated */
- int16_t event_y; /* The y coordinate of the mouse when the event was generated */
- uint16_t state; /* A mask of the buttons (or keys) during the event */
- uint8_t mode; /* The number of mouse button that was clicked */
- uint8_t same_screen_focus;
-} xcb_enter_notify_event_t;
-
-typedef xcb_enter_notify_event_t xcb_leave_notify_event_t;
-</pre>
- <li class="subsubtitle"><a name="focus">The keyboard focus</a>
- <p>
- There may be many windows on a screen, but only a single
- keyboard attached to them. How does the X server then know
- which window should be sent a given keyboard input ? This is
- done using the keyboard focus. Only a single window on the
- screen may have the keyboard focus at a given time. There
- is a XCB function that allows a program to set the keyboard
- focus to a given window. The user can usually set the
- keyboard focus using the window manager (often by clicking
- on the title bar of the desired window). Once our window
- has the keyboard focus, every key press or key release will
- cause an event to be sent to our program (if it regsitered
- for these event types...).
- </p>
- <li class="subsubtitle"><a name="keypress">Keyboard press and release events</a>
- <p>
- If a window controlled by our program currently holds the
- keyboard focus, it can receive key press and key release
- events. So, we should add one (or more) of the following
- masks when we create our window:
- </p>
- <ul>
- <li><span class="code">XCB_EVENT_MASK_KEY_PRESS</span>: notify us when
- a key was pressed while any of our controlled windows had
- the keyboard focus.
- <li><span class="code">XCB_EVENT_MASK_KEY_RELEASE</span>: notify us
- when a key was released while any of our controlled
- windows had the keyboard focus.
- </ul>
- <p>
- The structure to be checked for in our events loop is the
- same for these two events, and is the following:
- </p>
- <pre class="code">
-typedef struct {
- uint8_t response_type; /* The type of the event */
- xcb_keycode_t detail;
- uint16_t sequence;
- xcb_timestamp_t time; /* Time, in milliseconds the event took place in */
- xcb_window_t root;
- xcb_window_t event;
- xcb_window_t child;
- int16_t root_x;
- int16_t root_y;
- int16_t event_x;
- int16_t event_y;
- uint16_t state;
- uint8_t same_screen;
-} xcb_key_press_event_t;
-
-typedef xcb_key_press_event_t xcb_key_release_event_t;
-</pre>
- <p>
- The <span class="code">detail</span> field refers to the
- physical key on the keyboard.
- </p>
- <p>
- <b>TODO:</b> Talk about getting the ASCII code from the key code.
- </p>
- </ol>
- <li class="subtitle"><a name="eventex">X events: a complete example</a>
- <p>
- As an example for handling events, we show a program that
- creates a window, enters an events loop and checks for all the
- events described above, and writes on the terminal the relevant
- characteristics of the event. With this code, it should be
- easy to add drawing operations, like those which have been
- described above.
- </p>
- <pre class="code">
-#include &lt;stdlib.h&gt;
-#include &lt;stdio.h&gt;
-
-#include &lt;xcb/xcb.h&gt;
-
-void
-print_modifiers (uint32_t mask)
-{
- const char **mod, *mods[] = {
- "Shift", "Lock", "Ctrl", "Alt",
- "Mod2", "Mod3", "Mod4", "Mod5",
- "Button1", "Button2", "Button3", "Button4", "Button5"
- };
- printf ("Modifier mask: ");
- for (mod = mods ; mask; mask &gt;&gt;= 1, mod++)
- if (mask &amp; 1)
- printf(*mod);
- putchar ('\n');
-}
-
-int
-main ()
-{
- xcb_connection_t *c;
- xcb_screen_t *screen;
- xcb_window_t win;
- xcb_generic_event_t *e;
- uint32_t mask = 0;
- uint32_t values[2];
-
- /* Open the connection to the X server */
- c = xcb_connect (NULL, NULL);
-
- /* Get the first screen */
- screen = xcb_setup_roots_iterator (xcb_get_setup (c)).data;
-
- /* Ask for our window's Id */
- win = xcb_generate_id (c);
-
- /* Create the window */
- mask = XCB_CW_BACK_PIXEL | XCB_CW_EVENT_MASK;
- values[0] = screen-&gt;white_pixel;
- values[1] = XCB_EVENT_MASK_EXPOSURE | XCB_EVENT_MASK_BUTTON_PRESS |
- XCB_EVENT_MASK_BUTTON_RELEASE | XCB_EVENT_MASK_POINTER_MOTION |
- XCB_EVENT_MASK_ENTER_WINDOW | XCB_EVENT_MASK_LEAVE_WINDOW |
- XCB_EVENT_MASK_KEY_PRESS | XCB_EVENT_MASK_KEY_RELEASE;
- xcb_create_window (c, /* Connection */
- 0, /* depth */
- win, /* window Id */
- screen-&gt;root, /* parent window */
- 0, 0, /* x, y */
- 150, 150, /* width, height */
- 10, /* border_width */
- XCB_WINDOW_CLASS_INPUT_OUTPUT, /* class */
- screen-&gt;root_visual, /* visual */
- mask, values); /* masks */
-
- /* Map the window on the screen */
- xcb_map_window (c, win);
-
- xcb_flush (c);
-
- while ((e = xcb_wait_for_event (c))) {
- switch (e-&gt;response_type &amp; ~0x80) {
- case XCB_EXPOSE: {
- xcb_expose_event_t *ev = (xcb_expose_event_t *)e;
-
- printf ("Window %ld exposed. Region to be redrawn at location (%d,%d), with dimension (%d,%d)\n",
- ev-&gt;window, ev-&gt;x, ev-&gt;y, ev-&gt;width, ev-&gt;height);
- break;
- }
- case XCB_BUTTON_PRESS: {
- xcb_button_press_event_t *ev = (xcb_button_press_event_t *)e;
- print_modifiers(ev-&gt;state);
-
- switch (ev-&gt;detail) {
- case 4:
- printf ("Wheel Button up in window %ld, at coordinates (%d,%d)\n",
- ev-&gt;event, ev-&gt;event_x, ev-&gt;event_y);
- break;
- case 5:
- printf ("Wheel Button down in window %ld, at coordinates (%d,%d)\n",
- ev-&gt;event, ev-&gt;event_x, ev-&gt;event_y);
- break;
- default:
- printf ("Button %d pressed in window %ld, at coordinates (%d,%d)\n",
- ev-&gt;detail, ev-&gt;event, ev-&gt;event_x, ev-&gt;event_y);
- }
- break;
- }
- case XCB_BUTTON_RELEASE: {
- xcb_button_release_event_t *ev = (xcb_button_release_event_t *)e;
- print_modifiers(ev-&gt;state);
-
- printf ("Button %d released in window %ld, at coordinates (%d,%d)\n",
- ev-&gt;detail, ev-&gt;event, ev-&gt;event_x, ev-&gt;event_y);
- break;
- }
- case XCB_MOTION_NOTIFY: {
- xcb_motion_notify_event_t *ev = (xcb_motion_notify_event_t *)e;
-
- printf ("Mouse moved in window %ld, at coordinates (%d,%d)\n",
- ev-&gt;event, ev-&gt;event_x, ev-&gt;event_y);
- break;
- }
- case XCB_ENTER_NOTIFY: {
- xcb_enter_notify_event_t *ev = (xcb_enter_notify_event_t *)e;
-
- printf ("Mouse entered window %ld, at coordinates (%d,%d)\n",
- ev-&gt;event, ev-&gt;event_x, ev-&gt;event_y);
- break;
- }
- case XCB_LEAVE_NOTIFY: {
- xcb_leave_notify_event_t *ev = (xcb_leave_notify_event_t *)e;
-
- printf ("Mouse left window %ld, at coordinates (%d,%d)\n",
- ev-&gt;event, ev-&gt;event_x, ev-&gt;event_y);
- break;
- }
- case XCB_KEY_PRESS: {
- xcb_key_press_event_t *ev = (xcb_key_press_event_t *)e;
- print_modifiers(ev-&gt;state);
-
- printf ("Key pressed in window %ld\n",
- ev-&gt;event);
- break;
- }
- case XCB_KEY_RELEASE: {
- xcb_key_release_event_t *ev = (xcb_key_release_event_t *)e;
- print_modifiers(ev-&gt;state);
-
- printf ("Key released in window %ld\n",
- ev-&gt;event);
- break;
- }
- default:
- /* Unknown event type, ignore it */
- printf("Unknown event: %d\n", e-&gt;response_type);
- break;
- }
- /* Free the Generic Event */
- free (e);
- }
-
- return 0;
-}
-</pre>
- </ol>
- <li class="title"><a name="font">Handling text and fonts</a>
- <p>
- Besides drawing graphics on a window, we often want to draw
- text. Text strings have two major properties: the characters to
- be drawn and the font with which they are drawn. In order to
- draw text, we need to first request the X server to load a
- font. We then assign a font to a Graphic Context, and finally, we
- draw the text in a window, using the Graphic Context.
- </p>
- <ol>
- <li class="subtitle"><a name="fontstruct">The Font structure</a>
- <p>
- In order to support flexible fonts, a font type is
- defined. You know what ? It's an Id:
- </p>
- <pre class="code">
-typedef uint32_t xcb_font_t;
-</pre>
- <p>
- It is used to contain information about a font, and is passed
- to several functions that handle fonts selection and text drawing.
- We ask the X server to attribute an Id to our font with the
- function:
- </p>
- <pre class="code">
-xcb_font_t xcb_generate_id (xcb_connection_t *c);
-</pre>
- <br>
- <li class="subtitle"><a name="openingfont">Opening a Font</a>
- <p>
- To open a font, we use the following function:
- </p>
- <pre class="code">
-xcb_void_cookie_t xcb_open_font (xcb_connection_t *c,
- xcb_font_t fid,
- uint16_t name_len,
- const char *name);
-</pre>
- <p>
- The <span class="code">fid</span> parameter is the font Id
- defined by <span class="code">xcb_generate_id()</span> (see
- above). The <span class="code">name</span> parameter is the
- name of the font you want to open. Use the command
- <span class="code">xlsfonts</span> in a terminal to know which
- are the fonts available on your computer. The parameter
- <span class="code">name_len</span> is the length of the name
- of the font (given by <span class="code">strlen()</span>).
- </p>
- <li class="subtitle"><a name="assigningfont">Assigning a Font to a Graphic Context</a>
- <p>
- Once a font is opened, you have to create a Graphic Context
- that will contain the informations about the color of the
- foreground and the background used when you draw a text in a
- Drawable. Here is an exemple of a Graphic Context that will
- allow us to draw an opened font with a black foreground and a
- white background:
- </p>
- <pre class="code">
- /*
- * c is the connection
- * screen is the screen where the window is displayed
- * window is the window in which we will draw the text
- * font is the opened font
- */
-
- uint32_t value_list[3];
- xcb_gcontext_t gc;
- uint32_t mask;
-
- gc = xcb_generate_id (c);
- mask = XCB_GC_FOREGROUND | XCB_GC_BACKGROUND | XCB_GC_FONT;
- value_list[0] = screen->black_pixel;
- value_list[1] = screen->white_pixel;
- value_list[2] = font;
- xcb_create_gc (c, gc, window, mask, value_list);
-
- /* The font is not needed anymore, so we close it */
- xcb_close_font (c, font);
-</pre>
- <li class="subtitle"><a name="drawingtext">Drawing text in a drawable</a>
- <p>
- To draw a text in a drawable, we use the following function:
- </p>
- <pre class="code">
-xcb_void_cookie_t xcb_image_text_8 (xcb_connection_t *c,
- uint8_t string_len,
- xcb_drawable_t drawable,
- xcb_gcontext_t gc,
- int16_t x,
- int16_t y,
- const char *string);
-</pre>
- <p>
- The <span class="code">string</span> parameter is the text to
- draw. The location of the drawing is given by the parameters
- <span class="code">x</span> and <span class="code">y</span>.
- The base line of the text is exactly the parameter
- <span class="code">y</span>.
- </p>
- <li class="subtitle"><a name="fontcompleteexample">Complete example</a>
- <p>
- This example draw a text at 10 pixels (for the base line) of
- the bottom of a window. Pressing the Esc key exits the program.
- </p>
- <pre class="code">
-#include &lt;stdlib.h&gt;
-#include &lt;stdio.h&gt;
-#include &lt;string.h&gt;
-
-#include &lt;xcb/xcb.h&gt;
-
-#define WIDTH 300
-#define HEIGHT 100
-
-
-
-static xcb_gc_t gc_font_get (xcb_connection_t *c,
- xcb_screen_t *screen,
- xcb_window_t window,
- const char *font_name);
-
-static void text_draw (xcb_connection_t *c,
- xcb_screen_t *screen,
- xcb_window_t window,
- int16_t x1,
- int16_t y1,
- const char *label);
-
-static void
-text_draw (xcb_connection_t *c,
- xcb_screen_t *screen,
- xcb_window_t window,
- int16_t x1,
- int16_t y1,
- const char *label)
-{
- xcb_void_cookie_t cookie_gc;
- xcb_void_cookie_t cookie_text;
- xcb_generic_error_t *error;
- xcb_gcontext_t gc;
- uint8_t length;
-
- length = strlen (label);
-
- gc = gc_font_get(c, screen, window, "7x13");
-
- cookie_text = xcb_image_text_8_checked (c, length, window, gc,
- x1,
- y1, label);
- error = xcb_request_check (c, cookie_text);
- if (error) {
- fprintf (stderr, "ERROR: can't paste text : %d\n", error->error_code);
- xcb_disconnect (c);
- exit (-1);
- }
-
- cookie_gc = xcb_free_gc (c, gc);
- error = xcb_request_check (c, cookie_gc);
- if (error) {
- fprintf (stderr, "ERROR: can't free gc : %d\n", error->error_code);
- xcb_disconnect (c);
- exit (-1);
- }
-}
-
-static xcb_gc_t
-gc_font_get (xcb_connection_t *c,
- xcb_screen_t *screen,
- xcb_window_t window,
- const char *font_name)
-{
- uint32_t value_list[3];
- xcb_void_cookie_t cookie_font;
- xcb_void_cookie_t cookie_gc;
- xcb_generic_error_t *error;
- xcb_font_t font;
- xcb_gcontext_t gc;
- uint32_t mask;
-
- font = xcb_generate_id (c);
- cookie_font = xcb_open_font_checked (c, font,
- strlen (font_name),
- font_name);
-
- error = xcb_request_check (c, cookie_font);
- if (error) {
- fprintf (stderr, "ERROR: can't open font : %d\n", error->error_code);
- xcb_disconnect (c);
- return -1;
- }
-
- gc = xcb_generate_id (c);
- mask = XCB_GC_FOREGROUND | XCB_GC_BACKGROUND | XCB_GC_FONT;
- value_list[0] = screen->black_pixel;
- value_list[1] = screen->white_pixel;
- value_list[2] = font;
- cookie_gc = xcb_create_gc_checked (c, gc, window, mask, value_list);
- error = xcb_request_check (c, cookie_gc);
- if (error) {
- fprintf (stderr, "ERROR: can't create gc : %d\n", error->error_code);
- xcb_disconnect (c);
- exit (-1);
- }
-
- cookie_font = xcb_close_font_checked (c, font);
- error = xcb_request_check (c, cookie_font);
- if (error) {
- fprintf (stderr, "ERROR: can't close font : %d\n", error->error_code);
- xcb_disconnect (c);
- exit (-1);
- }
-
- return gc;
-}
-
-int main ()
-{
- xcb_screen_iterator_t screen_iter;
- xcb_connection_t *c;
- const xcb_setup_t *setup;
- xcb_screen_t *screen;
- xcb_generic_event_t *e;
- xcb_generic_error_t *error;
- xcb_void_cookie_t cookie_window;
- xcb_void_cookie_t cookie_map;
- xcb_window_t window;
- uint32_t mask;
- uint32_t values[2];
- int screen_number;
-
- /* getting the connection */
- c = xcb_connect (NULL, &amp;screen_number);
- if (!c) {
- fprintf (stderr, "ERROR: can't connect to an X server\n");
- return -1;
- }
-
- /* getting the current screen */
- setup = xcb_get_setup (c);
-
- screen = NULL;
- screen_iter = xcb_setup_roots_iterator (setup);
- for (; screen_iter.rem != 0; --screen_number, xcb_screen_next (&amp;screen_iter))
- if (screen_number == 0)
- {
- screen = screen_iter.data;
- break;
- }
- if (!screen) {
- fprintf (stderr, "ERROR: can't get the current screen\n");
- xcb_disconnect (c);
- return -1;
- }
-
- /* creating the window */
- window = xcb_generate_id (c);
- mask = XCB_CW_BACK_PIXEL | XCB_CW_EVENT_MASK;
- values[0] = screen->white_pixel;
- values[1] =
- XCB_EVENT_MASK_KEY_RELEASE |
- XCB_EVENT_MASK_BUTTON_PRESS |
- XCB_EVENT_MASK_EXPOSURE |
- XCB_EVENT_MASK_POINTER_MOTION;
- cookie_window = xcb_create_window_checked (c,
- screen->root_depth,
- window, screen->root,
- 20, 200, WIDTH, HEIGHT,
- 0, XCB_WINDOW_CLASS_INPUT_OUTPUT,
- screen->root_visual,
- mask, values);
- cookie_map = xcb_map_window_checked (c, window);
-
- /* error managing */
- error = xcb_request_check (c, cookie_window);
- if (error) {
- fprintf (stderr, "ERROR: can't create window : %d\n", error->error_code);
- xcb_disconnect (c);
- return -1;
- }
- error = xcb_request_check (c, cookie_map);
- if (error) {
- fprintf (stderr, "ERROR: can't map window : %d\n", error->error_code);
- xcb_disconnect (c);
- return -1;
- }
-
- xcb_flush(c);
-
- while (1) {
- e = xcb_poll_for_event(c);
- if (e) {
- switch (e->response_type &amp; ~0x80) {
- case XCB_EXPOSE: {
- char *text;
-
- text = "Press ESC key to exit...";
- text_draw (c, screen, window, 10, HEIGHT - 10, text);
- break;
- }
- case XCB_KEY_RELEASE: {
- xcb_key_release_event_t *ev;
-
- ev = (xcb_key_release_event_t *)e;
-
- switch (ev->detail) {
- /* ESC */
- case 9:
- free (e);
- xcb_disconnect (c);
- return 0;
- }
- }
- }
- free (e);
- }
- }
-
- return 0;
-}
-</pre>
- </ol>
- <li class="title"><a name="wm">Interacting with the window manager</a>
- <p>
- After we have seen how to create windows and draw on them, we
- take one step back, and look at how our windows are interacting
- with their environment (the full screen and the other
- windows). First of all, our application needs to interact with
- the window manager. The window manager is responsible to
- decorating drawn windows (i.e. adding a frame, an iconify
- button, a system menu, a title bar, etc), as well as handling
- icons shown when windows are being iconified. It also handles
- ordering of windows on the screen, and other administrative
- tasks. We need to give it various hints as to how we want it to
- treat our application's windows.
- </p>
- <ol>
- <li class="subtitle"><a name="wmprop">Window properties</a>
- <p>
- Many of the parameters communicated to the window manager are
- passed using data called "properties". These properties are
- attached by the X server to different windows, and are stored
- in a format that makes it possible to read them from different
- machines that may use different architectures (remember that
- an X client program may run on a remote machine).
- </p>
- <p>
- The property and its type (a string, an integer, etc) are
- Id. Their type are <span class="code">xcb_atom_t</span>:
- </p>
- <pre class="code">
-typedef uint32_t xcb_atom_t;
-</pre>
- <p>
- To change the property of a window, we use the following
- function:
- </p>
- <pre class="code">
-xcb_void_cookie_t xcb_change_property (xcb_connection_t *c, /* Connection to the X server */
- uint8_t mode, /* Property mode */
- xcb_window_t window, /* Window */
- xcb_atom_t property, /* Property to change */
- xcb_atom_t type, /* Type of the property */
- uint8_t format, /* Format of the property (8, 16, 32) */
- uint32_t data_len, /* Length of the data parameter */
- const void *data); /* Data */
-</pre>
- <p>
- The <span class="code">mode</span> parameter coud be one of
- the following values (defined in enumeration xcb_prop_mode_t in
- the xproto.h header file):
- </p>
- <ul>
- <li>XCB_PROP_MODE_REPLACE
- <li>XCB_PROP_MODE_PREPEND
- <li>XCB_PROP_MODE_APPEND
- </ul>
- <br>
- <li class="subtitle"><a name="wmname">Setting the window name and icon name</a>
- <p>
- The first thing we want to do would be to set the name for our
- window. This is done using the
- <span class="code">xcb_change_property()</span> function. This
- name may be used by the window manager as the title of the
- window (in the title bar), in a task list, etc. The property
- atom to use to set the name of a window is
- <span class="code">WM_NAME</span> (and
- <span class="code">WM_ICON_NAME</span> for the iconified
- window) and its type is <span class="code">STRING</span>. Here
- is an example of utilization:
- </p>
- <pre class="code">
-#include &lt;string.h&gt;
-
-#include &lt;xcb/xcb.h&gt;
-#include &lt;xcb/xcb_atom.h&gt;
-
-int
-main ()
-{
- xcb_connection_t *c;
- xcb_screen_t *screen;
- xcb_window_t win;
- char *title = "Hello World !";
- char *title_icon = "Hello World ! (iconified)";
-
-
-
- /* Open the connection to the X server */
- c = xcb_connect (NULL, NULL);
-
- /* Get the first screen */
- screen = xcb_setup_roots_iterator (xcb_get_setup (c)).data;
-
- /* Ask for our window's Id */
- win = xcb_generate_id (c);
-
- /* Create the window */
- xcb_create_window (c, /* Connection */
- 0, /* depth */
- win, /* window Id */
- screen-&gt;root, /* parent window */
- 0, 0, /* x, y */
- 250, 150, /* width, height */
- 10, /* border_width */
- XCB_WINDOW_CLASS_INPUT_OUTPUT, /* class */
- screen-&gt;root_visual, /* visual */
- 0, NULL); /* masks, not used */
-
- /* Set the title of the window */
- xcb_change_property (c, XCB_PROP_MODE_REPLACE, win,
- WM_NAME, STRING, 8,
- strlen (title), title);
-
- /* Set the title of the window icon */
- xcb_change_property (c, XCB_PROP_MODE_REPLACE, win,
- WM_ICON_NAME, STRING, 8,
- strlen(title_icon), title_icon);
-
- /* Map the window on the screen */
- xcb_map_window (c, win);
-
- xcb_flush (c);
-
- while (1) {}
-
- return 0;
-}
-</pre>
- <div class="emph">
- <p>Note: the use of the atoms needs our program to be compiled
- and linked against xcb_atom, so that we have to use
- </p>
- </div>
- <pre class="text">
-gcc prog.c -o prog `pkg-config --cflags --libs xcb_atom`
-</pre>
- <div class="emph">
- <p>
- for the program to compile fine.
- </p>
- </div>
- </ol>
- <li class="title"><a name="winop">Simple window operations</a>
- <p>
- One more thing we can do to our window is manipulate them on the
- screen (resize them, move them, raise or lower them, iconify
- them, and so on). Some window operations functions are supplied
- by XCB for this purpose.
- </p>
- <ol>
- <li class="subtitle"><a name="winmap">Mapping and un-mapping a window</a>
- <p>
- The first pair of operations we can apply on a window is
- mapping it, or un-mapping it. Mapping a window causes the
- window to appear on the screen, as we have seen in our simple
- window program example. Un-mapping it causes it to be removed
- from the screen (although the window as a logical entity still
- exists). This gives the effect of making a window hidden
- (unmapped) and shown again (mapped). For example, if we have a
- dialog box window in our program, instead of creating it every
- time the user asks to open it, we can create the window once,
- in an un-mapped mode, and when the user asks to open it, we
- simply map the window on the screen. When the user clicked the
- 'OK' or 'Cancel' button, we simply un-map the window. This is
- much faster than creating and destroying the window, however,
- the cost is wasted resources, both on the client side, and on
- the X server side.
- </p>
- <p>
- To map a window, you use the following function:
- </p>
- <pre class="code">
-xcb_void_cookie_t xcb_map_window (xcb_connection_t *c,
- xcb_window_t window);
-</pre>
- <p>
- To have a simple example, see the <a href="#helloworld">example</a>
- above. The mapping operation will cause an
- <span class="code">Expose</span> event to be sent to our
- application, unless the window is completely covered by other
- windows.
- </p>
- <p>
- Un-mapping a window is also simple. You use the function
- </p>
- <pre class="code">
-xcb_void_cookie_t xcb_unmap_window (xcb_connection_t *c,
- xcb_window_t window);
-</pre>
- <p>
- The utilization of this function is the same as
- <span class="code">xcb_map_window()</span>.
- </p>
- <li class="subtitle"><a name="winconf">Configuring a window</a>
- <p>
- As we have seen when we have created our first window, in the
- X Events subsection, we can set some attributes for the window
- (that is, the position, the size, the events the window will
- receive, etc). If we want to modify them, but the window is
- already created, we can change them by using the following
- function:
- </p>
- <pre class="code">
-xcb_void_cookie_t xcb_configure_window (xcb_connection_t *c, /* The connection to the X server*/
- xcb_window_t window, /* The window to configure */
- uint16_t value_mask, /* The mask */
- const uint32_t *value_list); /* The values to set */
-</pre>
- <p>
- We set the <span class="code">value_mask</span> to one or
- several mask values that are in the xcb_config_window_t enumeration in the xproto.h header:
- </p>
- <ul>
- <li><span class="code">XCB_CONFIG_WINDOW_X</span>: new x coordinate of the window's top left corner
- <li><span class="code">XCB_CONFIG_WINDOW_Y</span>: new y coordinate of the window's top left corner
- <li><span class="code">XCB_CONFIG_WINDOW_WIDTH</span>: new width of the window
- <li><span class="code">XCB_CONFIG_WINDOW_HEIGHT</span>: new height of the window
- <li><span class="code">XCB_CONFIG_WINDOW_BORDER_WIDTH</span>: new width of the border of the window
- <li><span class="code">XCB_CONFIG_WINDOW_SIBLING</span>
- <li><span class="code">XCB_CONFIG_WINDOW_STACK_MODE</span>: the new stacking order
- </ul>
- <p>
- We then give to <span class="code">value_mask</span> the new
- value. We now describe how to use
- <span class="code">xcb_configure_window_t</span> in some useful
- situations.
- </p>
- <li class="subtitle"><a name="winmove">Moving a window around the screen</a>
- <p>
- An operation we might want to do with windows is to move them
- to a different location. This can be done like this:
- </p>
- <pre class="code">
-const static uint32_t values[] = { 10, 20 };
-
-/* The connection c and the window win are supposed to be defined */
-
-/* Move the window to coordinates x = 10 and y = 20 */
-xcb_configure_window (c, win, XCB_CONFIG_WINDOW_X | XCB_CONFIG_WINDOW_Y, values);
-</pre>
- <p>
- Note that when the window is moved, it might get partially
- exposed or partially hidden by other windows, and thus we
- might get <span class="code">Expose</span> events due to this
- operation.
- </p>
- <li class="subtitle"><a name="winsize">Resizing a window</a>
- <p>
- Yet another operation we can do is to change the size of a
- window. This is done using the following code:
- </p>
- <pre class="code">
-const static uint32_t values[] = { 200, 300 };
-
-/* The connection c and the window win are supposed to be defined */
-
-/* Resize the window to width = 10 and height = 20 */
-xcb_configure_window (c, win, XCB_CONFIG_WINDOW_WIDTH | XCB_CONFIG_WINDOW_HEIGHT, values);
-</pre>
- <p>
- We can also combine the move and resize operations using one
- single call to <span class="code">xcb_configure_window_t</span>:
- </p>
- <pre class="code">
-const static uint32_t values[] = { 10, 20, 200, 300 };
-
-/* The connection c and the window win are supposed to be defined */
-
-/* Move the window to coordinates x = 10 and y = 20 */
-/* and resize the window to width = 10 and height = 20 */
-xcb_configure_window (c, win, XCB_CONFIG_WINDOW_X | XCB_CONFIG_WINDOW_Y | XCB_CONFIG_WINDOW_WIDTH | XCB_CONFIG_WINDOW_HEIGHT, values);
-</pre>
- <li class="subtitle"><a name="winstack">Changing windows stacking order: raise and lower</a>
- <p>
- Until now, we changed properties of a single window. We'll see
- that there are properties that relate to the window and other
- windows. One of them is the stacking order. That is, the order
- in which the windows are layered on top of each other. The
- front-most window is said to be on the top of the stack, while
- the back-most window is at the bottom of the stack. Here is
- how to manipulate our windows stack order:
- </p>
- <pre class="code">
-const static uint32_t values[] = { XCB_STACK_MODE_ABOVE };
-
-/* The connection c and the window win are supposed to be defined */
-
-/* Move the window on the top of the stack */
-xcb_configure_window (c, win, XCB_CONFIG_WINDOW_STACK_MODE, values);
-</pre>
- <pre class="code">
-const static uint32_t values[] = { XCB_STACK_MODE_BELOW };
-
-/* The connection c and the window win are supposed to be defined */
-
-/* Move the window on the bottom of the stack */
-xcb_configure_window (c, win, XCB_CONFIG_WINDOW_STACK_MODE, values);
-</pre>
- <li class="subtitle"><a name="wingetinfo">Getting information about a window</a>
- <p>
- Just like we can set various attributes of our windows, we can
- also ask the X server supply the current values of these
- attributes. For example, we can check where a window is
- located on the screen, what is its current size, whether it is
- mapped or not, etc. The structure that contains some of this
- information is
- </p>
- <pre class="code">
-typedef struct {
- uint8_t response_type;
- uint8_t depth; /* depth of the window */
- uint16_t sequence;
- uint32_t length;
- xcb_window_t root; /* Id of the root window *>
- int16_t x; /* X coordinate of the window's location */
- int16_t y; /* Y coordinate of the window's location */
- uint16_t width; /* Width of the window */
- uint16_t height; /* Height of the window */
- uint16_t border_width; /* Width of the window's border */
-} xcb_get_geometry_reply_t;
-</pre>
- <p>
- XCB fill this structure with two functions:
- </p>
- <pre class="code">
-xcb_get_geometry_cookie_t xcb_get_geometry (xcb_connection_t *c,
- xcb_drawable_t drawable);
-xcb_get_geometry_reply_t *xcb_get_geometry_reply (xcb_connection_t *c,
- xcb_get_geometry_cookie_t cookie,
- xcb_generic_error_t **e);
-</pre>
- <p>
- You use them as follows:
- </p>
- <pre class="code">
- xcb_connection_t *c;
- xcb_drawable_t win;
- xcb_get_geometry_reply_t *geom;
-
- /* You initialize c and win */
-
- geom = xcb_get_geometry_reply (c, xcb_get_geometry (c, win), NULL);
-
- /* Do something with the fields of geom */
-
- free (geom);
-</pre>
- <p>
- Remark that you have to free the structure, as
- <span class="code">xcb_get_geometry_reply_t</span> allocates a
- newly one.
- </p>
- <p>
- One problem is that the returned location of the window is
- relative to its parent window. This makes these coordinates
- rather useless for any window manipulation functions, like
- moving it on the screen. In order to overcome this problem, we
- need to take a two-step operation. First, we find out the Id
- of the parent window of our window. We then translate the
- above relative coordinates to the screen coordinates.
- </p>
- <p>
- To get the Id of the parent window, we need this structure:
- </p>
- <pre class="code">
-typedef struct {
- uint8_t response_type;
- uint8_t pad0;
- uint16_t sequence;
- uint32_t length;
- xcb_window_t root;
- xcb_window_t parent; /* Id of the parent window */
- uint16_t children_len;
- uint8_t pad1[14];
-} xcb_query_tree_reply_t;
-</pre>
- <p>
- To fill this structure, we use these two functions:
- </p>
- <pre class="code">
-xcb_query_tree_cookie_t xcb_query_tree (xcb_connection_t *c,
- xcb_window_t window);
-xcb_query_tree_reply_t *xcb_query_tree_reply (xcb_connection_t *c,
- xcb_query_tree_cookie_t cookie,
- xcb_generic_error_t **e);
-</pre>
- <p>
- The translated coordinates will be found in this structure:
- </p>
- <pre class="code">
-typedef struct {
- uint8_t response_type;
- uint8_t same_screen;
- uint16_t sequence;
- uint32_t length;
- xcb_window_t child;
- uint16_t dst_x; /* Translated x coordinate */
- uint16_t dst_y; /* Translated y coordinate */
-} xcb_translate_coordinates_reply_t;
-</pre>
- <p>
- As usual, we need two functions to fill this structure:
- </p>
- <pre class="code">
-xcb_translate_coordinates_cookie_t xcb_translate_coordinates (xcb_connection_t *c,
- xcb_window_t src_window,
- xcb_window_t dst_window,
- int16_t src_x,
- int16_t src_y);
-xcb_translate_coordinates_reply_t *xcb_translate_coordinates_reply (xcb_connection_t *c,
- xcb_translate_coordinates_cookie_t cookie,
- xcb_generic_error_t **e);
-</pre>
- <p>
- We use them as follows:
- </p>
- <pre class="code">
- xcb_connection_t *c;
- xcb_drawable_t win;
- xcb_get_geometry_reply_t *geom;
- xcb_query_tree_reply_t *tree;
- xcb_translate_coordinates_reply_t *trans;
-
- /* You initialize c and win */
-
- geom = xcb_get_geometry_reply (c, xcb_get_geometry (c, win), NULL);
- if (!geom)
- return 0;
-
- tree = xcb_query_tree_reply (c, xcb_query_tree (c, win), NULL);
- if (!tree)
- return 0;
-
- trans = xcb_translate_coordinates_reply (c,
- xcb_translate_coordinates (c,
- win,
- tree-&gt;parent,
- geom-&gt;x, geom-&gt;y),
- NULL);
- if (!trans)
- return 0;
-
- /* the translated coordinates are in trans-&gt;dst_x and trans-&gt;dst_y */
-
- free (trans);
- free (tree);
- free (geom);
-</pre>
- <p>
- Of course, as for <span class="code">geom</span>,
- <span class="code">tree</span> and
- <span class="code">trans</span> have to be freed.
- </p>
- <p>
- The work is a bit hard, but XCB is a very low-level library.
- </p>
- <p>
- <b>TODO:</b> the utilization of these functions should be a
- prog, which displays the coordinates of the window.
- </p>
- <p>
- There is another structure that gives informations about our window:
- </p>
- <pre class="code">
-typedef struct {
- uint8_t response_type;
- uint8_t backing_store;
- uint16_t sequence;
- uint32_t length;
- xcb_visualid_t visual; /* Visual of the window */
- uint16_t _class;
- uint8_t bit_gravity;
- uint8_t win_gravity;
- uint32_t backing_planes;
- uint32_t backing_pixel;
- uint8_t save_under;
- uint8_t map_is_installed;
- uint8_t map_state; /* Map state of the window */
- uint8_t override_redirect;
- xcb_colormap_t colormap; /* Colormap of the window */
- uint32_t all_event_masks;
- uint32_t your_event_mask;
- uint16_t do_not_propagate_mask;
-} xcb_get_window_attributes_reply_t;
-</pre>
- <p>
- XCB supplies these two functions to fill it:
- </p>
- <pre class="code">
-xcb_get_window_attributes_cookie_t xcb_get_window_attributes (xcb_connection_t *c,
- xcb_window_t window);
-xcb_get_window_attributes_reply_t *xcb_get_window_attributes_reply (xcb_connection_t *c,
- xcb_get_window_attributes_cookie_t cookie,
- xcb_generic_error_t **e);
-</pre>
- <p>
- You use them as follows:
- </p>
- <pre class="code">
- xcb_connection_t *c;
- xcb_drawable_t win;
- xcb_get_window_attributes_reply_t *attr;
-
- /* You initialize c and win */
-
- attr = xcb_get_window_attributes_reply (c, xcb_get_window_attributes (c, win), NULL);
-
- if (!attr)
- return 0;
-
- /* Do something with the fields of attr */
-
- free (attr);
-</pre>
- <p>
- As for <span class="code">geom</span>,
- <span class="code">attr</span> has to be freed.
- </p>
- </ol>
- <li class="title"><a name="usecolor">Using colors to paint the rainbow</a>
- <p>
- Up until now, all our painting operation were done using black
- and white. We will (finally) see now how to draw using colors.
- </p>
- <ol>
- <li class="subtitle"><a name="colormap">Color maps</a>
- <p>
- In the beginning, there were not enough colors. Screen
- controllers could only support a limited number of colors
- simultaneously (initially 2, then 4, 16 and 256). Because of
- this, an application could not just ask to draw in a "light
- purple-red" color, and expect that color to be available. Each
- application allocated the colors it needed, and when all the
- color entries (4, 16, 256 colors) were in use, the next color
- allocation would fail.
- </p>
- <p>
- Thus, the notion of "a color map" was introduced. A color map
- is a table whose size is the same as the number of
- simultaneous colors a given screen controller. Each entry
- contained the RGB (Red, Green and Blue) values of a different
- color (all colors can be drawn using some combination of red,
- green and blue). When an application wants to draw on the
- screen, it does not specify which color to use. Rather, it
- specifies which color entry of some color map to be used
- during this drawing. Change the value in this color map entry
- and the drawing will use a different color.
- </p>
- <p>
- In order to be able to draw using colors that got something to
- do with what the programmer intended, color map allocation
- functions are supplied. You could ask to allocate entry for a
- color with a set of RGB values. If one already existed, you
- would get its index in the table. If none existed, and the
- table was not full, a new cell would be allocated to contain
- the given RGB values, and its index returned. If the table was
- full, the procedure would fail. You could then ask to get a
- color map entry with a color that is closest to the one you
- were asking for. This would mean that the actual drawing on
- the screen would be done using colors similar to what you
- wanted, but not the same.
- </p>
- <p>
- On today's more modern screens where one runs an X server with
- support for 16 million colors, this limitation looks a little
- silly, but remember that there are still older computers with
- older graphics cards out there. Using color map, support for
- these screen becomes transparent to you. On a display
- supporting 16 million colors, any color entry allocation
- request would succeed. On a display supporting a limited
- number of colors, some color allocation requests would return
- similar colors. It won't look as good, but your application
- would still work.
- </p>
- <li class="subtitle"><a name="colormapalloc">Allocating and freeing Color Maps</a>
- <p>
- When you draw using XCB, you can choose to use the standard
- color map of the screen your window is displayed on, or you
- can allocate a new color map and apply it to a window. In the
- latter case, each time the mouse moves onto your window, the
- screen color map will be replaced by your window's color map,
- and you'll see all the other windows on screen change their
- colors into something quite bizzare. In fact, this is the
- effect you get with X applications that use the "-install"
- command line option.
- </p>
- <p>
- In XCB, a color map is (as often in X) an Id:
- </p>
- <pre class="code">
-typedef uint32_t xcb_colormap_t;
-</pre>
- <p>
- In order to access the screen's default color map, you just
- have to retrieve the <span class="code">default_colormap</span>
- field of the <span class="code">xcb_screen_t</span> structure
- (see Section
- <a href="#screen">Checking basic information about a connection</a>):
- </p>
- <pre class="code">
-#include &lt;stdio.h&gt;
-
-#include &lt;xcb/xcb.h&gt;
-
-int
-main ()
-{
- xcb_connection_t *c;
- xcb_screen_t *screen;
- xcb_colormap_t colormap;
-
- /* Open the connection to the X server and get the first screen */
- c = xcb_connect (NULL, NULL);
- screen = xcb_setup_roots_iterator (xcb_get_setup (c)).data;
-
- colormap = screen-&gt;default_colormap;
-
- return 0;
-}
-</pre>
- <p>
- This will return the color map used by default on the first
- screen (again, remember that an X server may support several
- different screens, each of which might have its own resources).
- </p>
- <p>
- The other option, that of allocating a new colormap, works as
- follows. We first ask the X server to give an Id to our color
- map, with this function:
- </p>
- <pre class="code">
-xcb_colormap_t xcb_generate_id (xcb_connection_t *c);
-</pre>
- <p>
- Then, we create the color map with
- </p>
- <pre class="code">
-xcb_void_cookie_t xcb_create_colormap (xcb_connection_t *c, /* Pointer to the xcb_connection_t structure */
- uint8_t alloc, /* Colormap entries to be allocated (AllocNone or AllocAll) */
- xcb_colormap_t mid, /* Id of the color map */
- xcb_window_t window, /* Window on whose screen the colormap will be created */
- xcb_visualid_t visual); /* Id of the visual supported by the screen */
-</pre>
- <p>
- Here is an example of creation of a new color map:
- </p>
- <pre class="code">
-#include &lt;xcb/xcb.h&gt;
-
-int
-main ()
-{
- xcb_connection_t *c;
- xcb_screen_t *screen;
- xcb_window_t win;
- xcb_colormap_t cmap
-
- /* Open the connection to the X server and get the first screen */
- c = xcb_connect (NULL, NULL);
- screen = xcb_setup_roots_iterator (xcb_get_setup (c)).data;
-
- /* We create the window win here*/
-
- cmap = xcb_generate_id (c);
- xcb_create_colormap (c, XCB_COLORMAP_ALLOC_NONE, cmap, win, screen-&gt;root_visual);
-
- return 0;
-}
-</pre>
- <p>
- Note that the window parameter is only used to allow the X
- server to create the color map for the given screen. We can
- then use this color map for any window drawn on the same screen.
- </p>
- <p>
- To free a color map, it suffices to use this function:
- </p>
- <pre class="code">
-xcb_void_cookie_t xcb_free_colormap (xcb_connection_t *c, /* The connection */
- xcb_colormap_t cmap); /* The color map */
-</pre>
- <div class="comp">
- <div class="title">
- Comparison Xlib/XCB
- </div>
- <div class="xlib">
- <ul>
- <li>XCreateColormap ()
- </ul>
- </div>
- <div class="xcb">
- <ul>
- <li>xcb_generate_id ()
- <li>xcb_create_colormap ()
- </ul>
- </div>
- <div class="xlib">
- <ul>
- <li>XFreeColormap ()
- </ul>
- </div>
- <div class="xcb">
- <ul>
- <li>xcb_free_colormap ()
- </ul>
- </div>
- </div>
- <br>
- <li class="subtitle"><a name="alloccolor">Allocating and freeing a color entry</a>
- <p>
- Once we got access to some color map, we can start allocating
- colors. The informations related to a color are stored in the
- following structure:
- </p>
- <pre class="code">
-typedef struct {
- uint8_t response_type;
- uint8_t pad0;
- uint16_t sequence;
- uint32_t length;
- uint16_t red; /* The red component */
- uint16_t green; /* The green component */
- uint16_t blue; /* The blue component */
- uint8_t pad1[2];
- uint32_t pixel; /* The entry in the color map, supplied by the X server */
-} xcb_alloc_color_reply_t;
-</pre>
- <p>
- XCB supplies these two functions to fill it:
- </p>
- <pre class="code">
-xcb_alloc_color_cookie_t xcb_alloc_color (xcb_connection_t *c,
- xcb_colormap_t cmap,
- uint16_t red,
- uint16_t green,
- uint16_t blue);
-xcb_alloc_color_reply_t *xcb_alloc_color_reply (xcb_connection_t *c,
- xcb_alloc_color_cookie_t cookie,
- xcb_generic_error_t **e);
-</pre>
- <p>
- The fuction <span class="code">xcb_alloc_color()</span> takes the
- 3 RGB components as parameters (red, green and blue). Here is an
- example of using these functions:
- </p>
- <pre class="code">
-#include &lt;malloc.h&gt;
-
-#include &lt;xcb/xcb.h&gt;
-
-int
-main ()
-{
- xcb_connection_t *c;
- xcb_screen_t *screen;
- xcb_window_t win;
- xcb_colormap_t cmap;
- xcb_alloc_color_reply_t *rep;
-
- /* Open the connection to the X server and get the first screen */
- c = xcb_connect (NULL, NULL);
- screen = xcb_setup_roots_iterator (xcb_get_setup (c)).data;
-
- /* We create the window win here*/
-
- cmap = xcb_generate_id (c);
- xcb_create_colormap (c, XCB_COLORMAP_ALLOC_NONE, cmap, win, screen-&gt;root_visual);
-
- rep = xcb_alloc_color_reply (c, xcb_alloc_color (c, cmap, 65535, 0, 0), NULL);
-
- if (!rep)
- return 0;
-
- /* Do something with r-&gt;pixel or the components */
-
- free (rep);
-
- return 0;
-}
-</pre>
- <p>
- As <span class="code">xcb_alloc_color_reply()</span> allocates
- memory, you have to free <span class="code">rep</span>.
- </p>
- <p>
- <b>TODO</b>: Talk about freeing colors.
- </p>
- </ol>
- <li class="title"><a name="pixmaps">X Bitmaps and Pixmaps</a>
- <p>
- One thing many so-called "Multi-Media" applications need to do,
- is display images. In the X world, this is done using bitmaps
- and pixmaps. We have already seen some usage of them when
- setting an icon for our application. Lets study them further,
- and see how to draw these images inside a window, along side the
- simple graphics and text we have seen so far.
- </p>
- <p>
- One thing to note before delving further, is that XCB (nor Xlib)
- supplies no means of manipulating popular image formats, such as
- gif, png, jpeg or tiff. It is up to the programmer (or to higher
- level graphics libraries) to translate these image formats into
- formats that the X server is familiar with (x bitmaps and x
- pixmaps).
- </p>
- <ol>
- <li class="subtitle"><a name="pixmapswhat">What is a X Bitmap? An X Pixmap?</a>
- <p>
- An X bitmap is a two-color image stored in a format specific
- to the X window system. When stored in a file, the bitmap data
- looks like a C source file. It contains variables defining the
- width and the height of the bitmap, an array containing the
- bit values of the bitmap (the size of the array is
- (width+7)/8*height and the bit and byte order are LSB), and
- an optional hot-spot location (that will
- be explained later, when discussing mouse cursors).
- </p>
- <p>
- An X pixmap is a format used to stored images in the memory of
- an X server. This format can store both black and white images
- (such as x bitmaps) as well as color images. It is the only
- image format supported by the X protocol, and any image to be
- drawn on screen, should be first translated into this format.
- </p>
- <p>
- In actuality, an X pixmap can be thought of as a window that
- does not appear on the screen. Many graphics operations that
- work on windows, will also work on pixmaps. Indeed, the type
- of X pixmap in XCB is an Id like a window:
- </p>
- <pre class="code">
-typedef uint32_t xcb_pixmap_t;
-</pre>
- <p>
- Like Xlib, there is no difference between a Drawable, a Window
- or a Pixmap:
- </p>
- <pre class="code">
-typedef uint32_t xcb_drawable_t;
-</pre>
- <p>
- in order to avoid confusion between a window and a pixmap. The
- operations that will work the same on a window or a pixmap
- will require a <span class="code">xcb_drawable_t</span>
- </p>
- <div class="emph">
- <p>
- Remark: In Xlib, there is no specific difference between a
- <span class="code">Drawable</span>, a
- <span class="code">Pixmap</span> or a
- <span class="code">Window</span>: all are 32 bit long
- integer. XCB wraps all these different IDs in structures to
- provide some measure of type-safety.
- </p>
- </div>
- <li class="subtitle"><a name="pixmapscreate">Creating a pixmap</a>
- <p>
- Sometimes we want to create an un-initialized pixmap, so we
- can later draw into it. This is useful for image drawing
- programs (creating a new empty canvas will cause the creation
- of a new pixmap on which the drawing can be stored). It is
- also useful when reading various image formats: we load the
- image data into memory, create a pixmap on the server, and
- then draw the decoded image data onto that pixmap.
- </p>
- <p>
- To create a new pixmap, we first ask the X server to give an
- Id to our pixmap, with this function:
- </p>
- <pre class="code">
-xcb_pixmap_t xcb_generate_id (xcb_connection_t *c);
-</pre>
- <p>
- Then, XCB supplies the following function to create new pixmaps:
- </p>
- <pre class="code">
-xcb_void_cookie_t xcb_create_pixmap (xcb_connection_t *c, /* Pointer to the xcb_connection_t structure */
- uint8_t depth, /* Depth of the screen */
- xcb_pixmap_t pid, /* Id of the pixmap */
- xcb_drawable_t drawable,
- uint16_t width, /* Width of the window (in pixels) */
- uint16_t height); /* Height of the window (in pixels) */
-</pre>
- <p>
- <b>TODO</b>: Explain the drawable parameter, and give an
- example (like <a href="xpoints.c">xpoints.c</a>)
- </p>
- <li class="subtitle"><a name="pixmapsdraw"></a>Drawing a pixmap in a window
- <p>
- Once we got a handle to a pixmap, we can draw it on some
- window, using the following function:
- </p>
- <pre class="code">
-xcb_void_cookie_t xcb_copy_area (xcb_connection_t *c, /* Pointer to the xcb_connection_t structure */
- xcb_drawable_t src_drawable, /* The Drawable we want to paste */
- xcb_drawable_t dst_drawable, /* The Drawable on which we copy the previous Drawable */
- xcb_gcontext_t gc, /* A Graphic Context */
- int16_t src_x, /* Top left x coordinate of the region we want to copy */
- int16_t src_y, /* Top left y coordinate of the region we want to copy */
- int16_t dst_x, /* Top left x coordinate of the region where we want to copy */
- int16_t dst_y, /* Top left y coordinate of the region where we want to copy */
- uint16_t width, /* Width of the region we want to copy */
- uint16_t height); /* Height of the region we want to copy */
-</pre>
- <p>
- As you can see, we could copy the whole pixmap, as well as
- only a given rectangle of the pixmap. This is useful to
- optimize the drawing speed: we could copy only what we have
- modified in the pixmap.
- </p>
- <p>
- <b>One important note should be made</b>: it is possible to
- create pixmaps with different depths on the same screen. When
- we perform copy operations (a pixmap onto a window, etc), we
- should make sure that both source and target have the same
- depth. If they have a different depth, the operation would
- fail. The exception to this is if we copy a specific bit plane
- of the source pixmap using the
- <span class="code">xcb_copy_plane_t</span> function. In such an
- event, we can copy a specific plane to the target window (in
- actuality, setting a specific bit in the color of each pixel
- copied). This can be used to generate strange graphic effects
- in a window, but that is beyond the scope of this tutorial.
- </p>
- <li class="subtitle"><a name="pixmapsfree"></a>Freeing a pixmap
- <p>
- Finally, when we are done using a given pixmap, we should free
- it, in order to free resources of the X server. This is done
- using this function:
- </p>
- <pre class="code">
-xcb_void_cookie_t xcb_free_pixmap (xcb_connection_t *c, /* Pointer to the xcb_connection_t structure */
- xcb_pixmap_t pixmap); /* A given pixmap */
-</pre>
- <p>
- Of course, after having freed it, we must not try accessing
- the pixmap again.
- </p>
- <p>
- <b>TODO</b>: Give an example, or a link to xpoints.c
- </p>
- </ol>
- <li class="title"><a name="mousecursor">Messing with the mouse cursor</a>
- <p>
- It it possible to modify the shape of the mouse pointer (also
- called the X pointer) when in certain states, as we otfen see in
- programs. For example, a busy application would often display
- the sand clock over its main window, to give the user a visual
- hint that he should wait. Let's see how we can change the mouse
- cursor of our windows.
- </p>
- <ol>
- <li class="subtitle"><a name="mousecursorcreate">Creating and destroying a mouse cursor</a>
- <p>
- There are two methods for creating cursors. One of them is by
- using a set of predefined cursors, that are supplied by the X
- server, the other is by using a user-supplied bitmap.
- </p>
- <p>
- In the first method, we use a special font named "cursor", and
- the function <span class="code">xcb_create_glyph_cursor</span>:
- </p>
- <pre class="code">
-xcb_void_cookie_t xcb_create_glyph_cursor (xcb_connection_t *c,
- xcb_cursor_t cid,
- xcb_font_t source_font, /* font for the source glyph */
- xcb_font_t mask_font, /* font for the mask glyph or XCB_NONE */
- uint16_t source_char, /* character glyph for the source */
- uint16_t mask_char, /* character glyph for the mask */
- uint16_t fore_red, /* red value for the foreground of the source */
- uint16_t fore_green, /* green value for the foreground of the source */
- uint16_t fore_blue, /* blue value for the foreground of the source */
- uint16_t back_red, /* red value for the background of the source */
- uint16_t back_green, /* green value for the background of the source */
- uint16_t back_blue) /* blue value for the background of the source */
-</pre>
- <p>
- <b>TODO</b>: Describe <span class="code">source_char</span>
- and <span class="code">mask_char</span>, for example by giving
- an example on how to get the values. There is a list there:
- <a href="http://tronche.com/gui/x/xlib/appendix/b/">X Font Cursors</a>
- </p>
- <p>
- So we first open that font (see <a href="#loadfont">Loading a Font</a>)
- and create the new cursor. As for every X ressource, we have to
- ask for an X id with <span class="code">xcb_generate_id</span>
- first:
- </p>
- <pre class="code">
-xcb_font_t font;
-xcb_cursor_t cursor;
-
-/* The connection is set */
-
-font = xcb_generate_id (conn);
-xcb_open_font (conn, font, strlen ("cursor"), "cursor");
-
-cursor = xcb_generate_id (conn);
-xcb_create_glyph_cursor (conn, cursor, font, font,
- 58, 58 + 1,
- 0, 0, 0,
- 0, 0, 0);
-</pre>
- <p>
- We have created the cursor "right hand" by specifying 58 to
- the <span class="code">source_fon</span>t argument and 58 + 1
- to the <span class="code">mask_font</span>.
- </p>
- <p>
- The cursor is destroyed by using the function
- </p>
- <pre class="code">
-xcb_void_cookie_t xcb_free_cursor (xcb_connection_t *c,
- xcb_cursor_t cursor);
-</pre>
- <p>
- In the second method, we create a new cursor by using a pair
- of pixmaps, with depth of one (that is, two colors
- pixmaps). One pixmap defines the shape of the cursor, while
- the other works as a mask, specifying which pixels of the
- cursor will be actually drawn. The rest of the pixels will be
- transparent.
- </p>
- <p>
- <b>TODO</b>: give an example.
- </p>
- <li class="subtitle"><a name="mousecursorset">Setting a window's mouse cursor</a>
- <p>
- Once the cursor is created, we can modify the cursor of our
- window by using <span class="code">xcb_change_window_attributes</span>
- and using the <span class="code">XCB_CWCURSOR</span> attribute:
- </p>
- <pre class="code">
-uint32_t mask;
-uint32_t value_list;
-
-/* The connection and window are set */
-/* The cursor is already created */
-
-mask = XCB_CWCURSOR;
-value_list = cursor;
-xcb_change_window_attributes (conn, window, mask, &amp;value_list);
-</pre>
- <p>
- Of course, the cursor and the font must be freed.
- </p>
- <li class="subtitle"><a name="mousecursorexample">Complete example</a>
- <p>
- The following example displays a window with a
- button. When entering the window, the window cursor is changed
- to an arrow. When clicking once on the button, the cursor is
- changed to a hand. When clicking again on the button, the
- cursor window gets back to the arrow. The Esc key exits the
- application.
- </p>
- <pre class="code">
-#include &lt;stdlib.h&gt;
-#include &lt;stdio.h&gt;
-#include &lt;string.h&gt;
-
-#include &lt;xcb/xcb.h&gt;
-
-#define WIDTH 300
-#define HEIGHT 150
-
-
-
-static xcb_gc_t gc_font_get (xcb_connection_t *c,
- xcb_screen_t *screen,
- xcb_window_t window,
- const char *font_name);
-
-static void button_draw (xcb_connection_t *c,
- xcb_screen_t *screen,
- xcb_window_t window,
- int16_t x1,
- int16_t y1,
- const char *label);
-
-static void text_draw (xcb_connection_t *c,
- xcb_screen_t *screen,
- xcb_window_t window,
- int16_t x1,
- int16_t y1,
- const char *label);
-
-static void cursor_set (xcb_connection_t *c,
- xcb_screen_t *screen,
- xcb_window_t window,
- int cursor_id);
-
-
-static void
-button_draw (xcb_connection_t *c,
- xcb_screen_t *screen,
- xcb_window_t window,
- int16_t x1,
- int16_t y1,
- const char *label)
-{
- xcb_point_t points[5];
- xcb_void_cookie_t cookie_gc;
- xcb_void_cookie_t cookie_line;
- xcb_void_cookie_t cookie_text;
- xcb_generic_error_t *error;
- xcb_gcontext_t gc;
- int16_t width;
- int16_t height;
- uint8_t length;
- int16_t inset;
-
- length = strlen (label);
- inset = 2;
-
- gc = gc_font_get(c, screen, window, "7x13");
-
- width = 7 * length + 2 * (inset + 1);
- height = 13 + 2 * (inset + 1);
- points[0].x = x1;
- points[0].y = y1;
- points[1].x = x1 + width;
- points[1].y = y1;
- points[2].x = x1 + width;
- points[2].y = y1 - height;
- points[3].x = x1;
- points[3].y = y1 - height;
- points[4].x = x1;
- points[4].y = y1;
- cookie_line = xcb_poly_line_checked (c, XCB_COORD_MODE_ORIGIN,
- window, gc, 5, points);
-
- error = xcb_request_check (c, cookie_line);
- if (error) {
- fprintf (stderr, "ERROR: can't draw lines : %d\n", error->error_code);
- xcb_disconnect (c);
- exit (-1);
- }
-
- cookie_text = xcb_image_text_8_checked (c, length, window, gc,
- x1 + inset + 1,
- y1 - inset - 1, label);
- error = xcb_request_check (c, cookie_text);
- if (error) {
- fprintf (stderr, "ERROR: can't paste text : %d\n", error->error_code);
- xcb_disconnect (c);
- exit (-1);
- }
-
- cookie_gc = xcb_free_gc (c, gc);
- error = xcb_request_check (c, cookie_gc);
- if (error) {
- fprintf (stderr, "ERROR: can't free gc : %d\n", error->error_code);
- xcb_disconnect (c);
- exit (-1);
- }
-}
-
-static void
-text_draw (xcb_connection_t *c,
- xcb_screen_t *screen,
- xcb_window_t window,
- int16_t x1,
- int16_t y1,
- const char *label)
-{
- xcb_void_cookie_t cookie_gc;
- xcb_void_cookie_t cookie_text;
- xcb_generic_error_t *error;
- xcb_gcontext_t gc;
- uint8_t length;
-
- length = strlen (label);
-
- gc = gc_font_get(c, screen, window, "7x13");
-
- cookie_text = xcb_image_text_8_checked (c, length, window, gc,
- x1,
- y1, label);
- error = xcb_request_check (c, cookie_text);
- if (error) {
- fprintf (stderr, "ERROR: can't paste text : %d\n", error->error_code);
- xcb_disconnect (c);
- exit (-1);
- }
-
- cookie_gc = xcb_free_gc (c, gc);
- error = xcb_request_check (c, cookie_gc);
- if (error) {
- fprintf (stderr, "ERROR: can't free gc : %d\n", error->error_code);
- xcb_disconnect (c);
- exit (-1);
- }
-}
-
-static xcb_gc_t
-gc_font_get (xcb_connection_t *c,
- xcb_screen_t *screen,
- xcb_window_t window,
- const char *font_name)
-{
- uint32_t value_list[3];
- xcb_void_cookie_t cookie_font;
- xcb_void_cookie_t cookie_gc;
- xcb_generic_error_t *error;
- xcb_font_t font;
- xcb_gcontext_t gc;
- uint32_t mask;
-
- font = xcb_generate_id (c);
- cookie_font = xcb_open_font_checked (c, font,
- strlen (font_name),
- font_name);
-
- error = xcb_request_check (c, cookie_font);
- if (error) {
- fprintf (stderr, "ERROR: can't open font : %d\n", error->error_code);
- xcb_disconnect (c);
- return -1;
- }
-
- gc = xcb_generate_id (c);
- mask = XCB_GC_FOREGROUND | XCB_GC_BACKGROUND | XCB_GC_FONT;
- value_list[0] = screen->black_pixel;
- value_list[1] = screen->white_pixel;
- value_list[2] = font;
- cookie_gc = xcb_create_gc_checked (c, gc, window, mask, value_list);
- error = xcb_request_check (c, cookie_gc);
- if (error) {
- fprintf (stderr, "ERROR: can't create gc : %d\n", error->error_code);
- xcb_disconnect (c);
- exit (-1);
- }
-
- cookie_font = xcb_close_font_checked (c, font);
- error = xcb_request_check (c, cookie_font);
- if (error) {
- fprintf (stderr, "ERROR: can't close font : %d\n", error->error_code);
- xcb_disconnect (c);
- exit (-1);
- }
-
- return gc;
-}
-
-static void
-cursor_set (xcb_connection_t *c,
- xcb_screen_t *screen,
- xcb_window_t window,
- int cursor_id)
-{
- uint32_t values_list[3];
- xcb_void_cookie_t cookie_font;
- xcb_void_cookie_t cookie_gc;
- xcb_generic_error_t *error;
- xcb_font_t font;
- xcb_cursor_t cursor;
- xcb_gcontext_t gc;
- uint32_t mask;
- uint32_t value_list;
-
- font = xcb_generate_id (c);
- cookie_font = xcb_open_font_checked (c, font,
- strlen ("cursor"),
- "cursor");
- error = xcb_request_check (c, cookie_font);
- if (error) {
- fprintf (stderr, "ERROR: can't open font : %d\n", error->error_code);
- xcb_disconnect (c);
- exit (-1);
- }
-
- cursor = xcb_generate_id (c);
- xcb_create_glyph_cursor (c, cursor, font, font,
- cursor_id, cursor_id + 1,
- 0, 0, 0,
- 0, 0, 0);
-
- gc = xcb_generate_id (c);
- mask = XCB_GC_FOREGROUND | XCB_GC_BACKGROUND | XCB_GC_FONT;
- values_list[0] = screen->black_pixel;
- values_list[1] = screen->white_pixel;
- values_list[2] = font;
- cookie_gc = xcb_create_gc_checked (c, gc, window, mask, values_list);
- error = xcb_request_check (c, cookie_gc);
- if (error) {
- fprintf (stderr, "ERROR: can't create gc : %d\n", error->error_code);
- xcb_disconnect (c);
- exit (-1);
- }
-
- mask = XCB_CW_CURSOR;
- value_list = cursor;
- xcb_change_window_attributes (c, window, mask, &amp;value_list);
-
- xcb_free_cursor (c, cursor);
-
- cookie_font = xcb_close_font_checked (c, font);
- error = xcb_request_check (c, cookie_font);
- if (error) {
- fprintf (stderr, "ERROR: can't close font : %d\n", error->error_code);
- xcb_disconnect (c);
- exit (-1);
- }
-}
-
-int main ()
-{
- xcb_screen_iterator_t screen_iter;
- xcb_connection_t *c;
- const xcb_setup_t *setup;
- xcb_screen_t *screen;
- xcb_generic_event_t *e;
- xcb_generic_error_t *error;
- xcb_void_cookie_t cookie_window;
- xcb_void_cookie_t cookie_map;
- xcb_window_t window;
- uint32_t mask;
- uint32_t values[2];
- int screen_number;
- uint8_t is_hand = 0;
-
- /* getting the connection */
- c = xcb_connect (NULL, &amp;screen_number);
- if (!c) {
- fprintf (stderr, "ERROR: can't connect to an X server\n");
- return -1;
- }
-
- /* getting the current screen */
- setup = xcb_get_setup (c);
-
- screen = NULL;
- screen_iter = xcb_setup_roots_iterator (setup);
- for (; screen_iter.rem != 0; --screen_number, xcb_screen_next (&amp;screen_iter))
- if (screen_number == 0)
- {
- screen = screen_iter.data;
- break;
- }
- if (!screen) {
- fprintf (stderr, "ERROR: can't get the current screen\n");
- xcb_disconnect (c);
- return -1;
- }
-
- /* creating the window */
- window = xcb_generate_id (c);
- mask = XCB_CW_BACK_PIXEL | XCB_CW_EVENT_MASK;
- values[0] = screen->white_pixel;
- values[1] =
- XCB_EVENT_MASK_KEY_RELEASE |
- XCB_EVENT_MASK_BUTTON_PRESS |
- XCB_EVENT_MASK_EXPOSURE |
- XCB_EVENT_MASK_POINTER_MOTION;
- cookie_window = xcb_create_window_checked (c,
- screen->root_depth,
- window, screen->root,
- 20, 200, WIDTH, HEIGHT,
- 0, XCB_WINDOW_CLASS_INPUT_OUTPUT,
- screen->root_visual,
- mask, values);
- cookie_map = xcb_map_window_checked (c, window);
-
- /* error managing */
- error = xcb_request_check (c, cookie_window);
- if (error) {
- fprintf (stderr, "ERROR: can't create window : %d\n", error->error_code);
- xcb_disconnect (c);
- return -1;
- }
- error = xcb_request_check (c, cookie_map);
- if (error) {
- fprintf (stderr, "ERROR: can't map window : %d\n", error->error_code);
- xcb_disconnect (c);
- return -1;
- }
-
- cursor_set (c, screen, window, 68);
-
- xcb_flush(c);
-
- while (1) {
- e = xcb_poll_for_event(c);
- if (e) {
- switch (e->response_type &amp; ~0x80) {
- case XCB_EXPOSE: {
- char *text;
-
- text = "click here to change cursor";
- button_draw (c, screen, window,
- (WIDTH - 7 * strlen(text)) / 2,
- (HEIGHT - 16) / 2, text);
-
- text = "Press ESC key to exit...";
- text_draw (c, screen, window, 10, HEIGHT - 10, text);
- break;
- }
- case XCB_BUTTON_PRESS: {
- xcb_button_press_event_t *ev;
- int length;
-
- ev = (xcb_button_press_event_t *)e;
- length = strlen ("click here to change cursor");
-
- if ((ev->event_x &gt;= (WIDTH - 7 * length) / 2) &amp;&amp;
- (ev->event_x &lt;= ((WIDTH - 7 * length) / 2 + 7 * length + 6)) &amp;&amp;
- (ev->event_y &gt;= (HEIGHT - 16) / 2 - 19) &amp;&amp;
- (ev->event_y &lt;= ((HEIGHT - 16) / 2)))
- is_hand = 1 - is_hand;
-
- is_hand ? cursor_set (c, screen, window, 58) : cursor_set (c, screen, window, 68);
- }
- case XCB_KEY_RELEASE: {
- xcb_key_release_event_t *ev;
-
- ev = (xcb_key_release_event_t *)e;
-
- switch (ev->detail) {
- /* ESC */
- case 9:
- free (e);
- xcb_disconnect (c);
- return 0;
- }
- }
- }
- free (e);
- }
- }
-
- return 0;
-}
-</pre>
- </ol>
- <li class="title"><a name="translation">Translation of basic Xlib functions and macros</a>
- <p>
- The problem when you want to port an Xlib program to XCB is that
- you don't know if the Xlib function that you want to "translate"
- is a X Window one or an Xlib macro. In that section, we describe
- a way to translate the usual functions or macros that Xlib
- provides. It's usually just a member of a structure.
- </p>
- <ol>
- <li class="subtitle"><a name="displaystructure">Members of the Display structure</a>
- <p>
- In this section, we look at how to translate the macros that
- return some members of the <span class="code">Display</span>
- structure. They are obtained by using a function that requires a
- <span class="code">xcb_connection_t *</span> or a member of the
- <span class="code">xcb_setup_t</span> structure
- (via the function <span class="code">xcb_get_setup</span>), or
- a function that requires that structure.
- </p>
- <ol>
- <li class="subtitle"><a name="ConnectionNumber">ConnectionNumber</a>
- <p>
- This number is the file descriptor that connects the client
- to the server. You just have to use that function:
- </p>
- <pre class="code">
-int xcb_get_file_descriptor (xcb_connection_t *c);
-</pre>
- <li class="subtitle"><a name="DefaultScreen"></a>DefaultScreen
- <p>
- That number is not stored by XCB. It is returned in the
- second parameter of the function <span class="code"><a href="#openconn">xcb_connect</a></span>.
- Hence, you have to store it yourself if you want to use
- it. Then, to get the <span class="code">xcb_screen_t</span>
- structure, you have to iterate on the screens.
- The equivalent function of the Xlib's
- <span class="code">ScreenOfDisplay</span> function can be
- found <a href="#ScreenOfDisplay">below</a>. This is also provided in the
- xcb_aux_t library as <span class="code">xcb_aux_get_screen()</span>. OK, here is the
- small piece of code to get that number:
- </p>
- <pre class="code">
-xcb_connection_t *c;
-int screen_default_nbr;
-
-/* you pass the name of the display you want to xcb_connect_t */
-
-c = xcb_connect (display_name, &amp;screen_default_nbr);
-
-/* screen_default_nbr contains now the number of the default screen */
-</pre>
- <li class="subtitle"><a name="QLength"></a>QLength
- <p>
- Not documented yet.
- </p>
- <p>
- However, this points out a basic difference in philosophy between
- Xlib and XCB. Xlib has several functions for filtering and
- manipulating the incoming and outgoing X message queues. XCB
- wishes to hide this as much as possible from the user, which
- allows for more freedom in implementation strategies.
- </p>
- <li class="subtitle"><a name="ScreenCount"></a>ScreenCount
- <p>
- You get the count of screens with the functions
- <span class="code">xcb_get_setup</span>
- and
- <span class="code">xcb_setup_roots_iterator</span>
- (if you need to iterate):
- </p>
- <pre class="code">
-xcb_connection_t *c;
-int screen_count;
-
-/* you init the connection */
-
-screen_count = xcb_setup_roots_iterator (xcb_get_setup (c)).rem;
-
-/* screen_count contains now the count of screens */
-</pre>
- <p>
- If you don't want to iterate over the screens, a better way
- to get that number is to use
- <span class="code">xcb_setup_roots_length_t</span>:
- </p>
- <pre class="code">
-xcb_connection_t *c;
-int screen_count;
-
-/* you init the connection */
-
-screen_count = xcb_setup_roots_length (xcb_get_setup (c));
-
-/* screen_count contains now the count of screens */
-</pre>
- <li class="subtitle"><a name="ServerVendor"></a>ServerVendor
- <p>
- You get the name of the vendor of the server hardware with
- the functions <span class="code">xcb_get_setup</span>
- and
- <span
- class="code">xcb_setup_vendor</span>. Beware
- that, unlike Xlib, the string returned by XCB is not
- necessarily null-terminaled:
- </p>
- <pre class="code">
-xcb_connection_t *c;
-char *vendor = NULL;
-int length;
-
-/* you init the connection */
-length = xcb_setup_vendor_length (xcb_get_setup (c));
-vendor = (char *)malloc (length + 1);
-if (vendor)
-memcpy (vendor, xcb_setup_vendor (xcb_get_setup (c)), length);
-vendor[length] = '\0';
-
-/* vendor contains now the name of the vendor. Must be freed when not used anymore */
-</pre>
- <li class="subtitle"><a name="ProtocolVersion"></a>ProtocolVersion
- <p>
- You get the major version of the protocol in the
- <span class="code">xcb_setup_t</span>
- structure, with the function <span class="code">xcb_get_setup</span>:
- </p>
- <pre class="code">
-xcb_connection_t *c;
-uint16_t protocol_major_version;
-
-/* you init the connection */
-
-protocol_major_version = xcb_get_setup (c)-&gt;protocol_major_version;
-
-/* protocol_major_version contains now the major version of the protocol */
-</pre>
- <li class="subtitle"><a name="ProtocolRevision"></a>ProtocolRevision
- <p>
- You get the minor version of the protocol in the
- <span class="code">xcb_setup_t</span>
- structure, with the function <span class="code">xcb_get_setup</span>:
- </p>
- <pre class="code">
-xcb_connection_t *c;
-uint16_t protocol_minor_version;
-
-/* you init the connection */
-
-protocol_minor_version = xcb_get_setup (c)-&gt;protocol_minor_version;
-
-/* protocol_minor_version contains now the minor version of the protocol */
-</pre>
- <li class="subtitle"><a name="VendorRelease"></a>VendorRelease
- <p>
- You get the number of the release of the server hardware in the
- <span class="code">xcb_setup_t</span>
- structure, with the function <span class="code">xcb_get_setup</span>:
- </p>
- <pre class="code">
-xcb_connection_t *c;
-uint32_t release_number;
-
-/* you init the connection */
-
-release_number = xcb_get_setup (c)-&gt;release_number;
-
-/* release_number contains now the number of the release of the server hardware */
-</pre>
- <li class="subtitle"><a name="DisplayString"></a>DisplayString
- <p>
- The name of the display is not stored in XCB. You have to
- store it by yourself.
- </p>
- <li class="subtitle"><a name="BitmapUnit"></a>BitmapUnit
- <p>
- You get the bitmap scanline unit in the
- <span class="code">xcb_setup_t</span>
- structure, with the function <span class="code">xcb_get_setup</span>:
- </p>
- <pre class="code">
-xcb_connection_t *c;
-uint8_t bitmap_format_scanline_unit;
-
-/* you init the connection */
-
-bitmap_format_scanline_unit = xcb_get_setup (c)-&gt;bitmap_format_scanline_unit;
-
-/* bitmap_format_scanline_unit contains now the bitmap scanline unit */
-</pre>
- <li class="subtitle"><a name="BitmapBitOrder"></a>BitmapBitOrder
- <p>
- You get the bitmap bit order in the
- <span class="code">xcb_setup_t</span>
- structure, with the function <span class="code">xcb_get_setup</span>:
- </p>
- <pre class="code">
-xcb_connection_t *c;
-uint8_t bitmap_format_bit_order;
-
-/* you init the connection */
-
-bitmap_format_bit_order = xcb_get_setup (c)-&gt;bitmap_format_bit_order;
-
-/* bitmap_format_bit_order contains now the bitmap bit order */
-</pre>
- <li class="subtitle"><a name="BitmapPad"></a>BitmapPad
- <p>
- You get the bitmap scanline pad in the
- <span class="code">xcb_setup_t</span>
- structure, with the function <span class="code">xcb_get_setup</span>:
- </p>
- <pre class="code">
-xcb_connection_t *c;
-uint8_t bitmap_format_scanline_pad;
-
-/* you init the connection */
-
-bitmap_format_scanline_pad = xcb_get_setup (c)-&gt;bitmap_format_scanline_pad;
-
-/* bitmap_format_scanline_pad contains now the bitmap scanline pad */
-</pre>
- <li class="subtitle"><a name="ImageByteOrder"></a>ImageByteOrder
- <p>
- You get the image byte order in the
- <span class="code">xcb_setup_t</span>
- structure, with the function <span class="code">xcb_get_setup</span>:
- </p>
- <pre class="code">
-xcb_connection_t *c;
-uint8_t image_byte_order;
-
-/* you init the connection */
-
-image_byte_order = xcb_get_setup (c)-&gt;image_byte_order;
-
-/* image_byte_order contains now the image byte order */
-</pre>
- </ol>
- <li class="subtitle"><a name="screenofdisplay">ScreenOfDisplay related functions</a>
- <p>
- in Xlib, <span class="code">ScreenOfDisplay</span> returns a
- <span class="code">Screen</span> structure that contains
- several characteristics of your screen. XCB has a similar
- structure (<span class="code">xcb_screen_t</span>),
- but the way to obtain it is a bit different. With
- Xlib, you just provide the number of the screen and you grab it
- from an array. With XCB, you iterate over all the screens to
- obtain the one you want. The complexity of this operation is
- O(n). So the best is to store this structure if you use
- it often. See <a href="#ScreenOfDisplay">screen_of_display</a> just below.
- </p>
- <p>
- Xlib provides generally two functions to obtain the characteristics
- related to the screen. One with the display and the number of
- the screen, which calls <span class="code">ScreenOfDisplay</span>,
- and the other that uses the <span class="code">Screen</span> structure.
- This might be a bit confusing. As mentioned above, with XCB, it
- is better to store the <span class="code">xcb_screen_t</span>
- structure. Then, you have to read the members of this
- structure. That's why the Xlib functions are put by pairs (or
- more) as, with XCB, you will use the same code.
- </p>
- <ol>
- <li class="subtitle"><a name="ScreenOfDisplay">ScreenOfDisplay</a>
- <p>
- This function returns the Xlib <span class="code">Screen</span>
- structure. With XCB, you iterate over all the screens and
- once you get the one you want, you return it:
- </p>
- <pre class="code"><a name="ScreenOfDisplay"></a>
-xcb_screen_t *screen_of_display (xcb_connection_t *c,
- int screen)
-{
- xcb_screen_iterator_t iter;
-
- iter = xcb_setup_roots_iterator (xcb_get_setup (c));
- for (; iter.rem; --screen, xcb_screen_next (&amp;iter))
- if (screen == 0)
- return iter.data;
-
- return NULL;
-}
-</pre>
- <p>
- As mentioned above, you might want to store the value
- returned by this function.
- </p>
- <p>
- All the functions below will use the result of that
- function, as they just grab a specific member of the
- <span class="code">xcb_screen_t</span> structure.
- </p>
- <li class="subtitle"><a name="DefaultScreenOfDisplay"></a>DefaultScreenOfDisplay
- <p>
- It is the default screen that you obtain when you connect to
- the X server. It suffices to call the <a href="#ScreenOfDisplay">screen_of_display</a>
- function above with the connection and the number of the
- default screen.
- </p>
- <pre class="code">
-xcb_connection_t *c;
-int screen_default_nbr;
-xcb_screen_t *default_screen; /* the returned default screen */
-
-/* you pass the name of the display you want to xcb_connect_t */
-
-c = xcb_connect (display_name, &amp;screen_default_nbr);
-default_screen = screen_of_display (c, screen_default_nbr);
-
-/* default_screen contains now the default root window, or a NULL window if no screen is found */
-</pre>
- <li class="subtitle"><a name="RootWindow">RootWindow / RootWindowOfScreen</a>
- <br>
- <pre class="code">
-xcb_connection_t *c;
-xcb_screen_t *screen;
-int screen_nbr;
-xcb_window_t root_window = { 0 }; /* the returned window */
-
-/* you init the connection and screen_nbr */
-
-screen = screen_of_display (c, screen_nbr);
-if (screen)
- root_window = screen-&gt;root;
-
-/* root_window contains now the root window, or a NULL window if no screen is found */
-</pre>
- <li class="subtitle"><a name="DefaultRootWindow">DefaultRootWindow</a>
- <p>
- It is the root window of the default screen. So, you call
- <a name="ScreenOfDisplay">ScreenOfDisplay</a> with the
- default screen number and you get the
- <a href="#RootWindow">root window</a> as above:
- </p>
- <pre class="code">
-xcb_connection_t *c;
-xcb_screen_t *screen;
-int screen_default_nbr;
-xcb_window_t root_window = { 0 }; /* the returned root window */
-
-/* you pass the name of the display you want to xcb_connect_t */
-
-c = xcb_connect (display_name, &amp;screen_default_nbr);
-screen = screen_of_display (c, screen_default_nbr);
-if (screen)
- root_window = screen-&gt;root;
-
-/* root_window contains now the default root window, or a NULL window if no screen is found */
-</pre>
- <li class="subtitle"><a name="DefaultVisual">DefaultVisual / DefaultVisualOfScreen</a>
- <p>
- While a Visual is, in Xlib, a structure, in XCB, there are
- two types: <span class="code">xcb_visualid_t</span>, which is
- the Id of the visual, and <span class="code">xcb_visualtype_t</span>,
- which corresponds to the Xlib Visual. To get the Id of the
- visual of a screen, just get the
- <span class="code">root_visual</span>
- member of a <span class="code">xcb_screen_t</span>:
- </p>
- <pre class="code">
-xcb_connection_t *c;
-xcb_screen_t *screen;
-int screen_nbr;
-xcb_visualid_t root_visual = { 0 }; /* the returned visual Id */
-
-/* you init the connection and screen_nbr */
-
-screen = screen_of_display (c, screen_nbr);
-if (screen)
- root_visual = screen-&gt;root_visual;
-
-/* root_visual contains now the value of the Id of the visual, or a NULL visual if no screen is found */
-</pre>
- <p>
- To get the <span class="code">xcb_visualtype_t</span>
- structure, it's a bit less easy. You have to get the
- <span class="code">xcb_screen_t</span> structure that you want,
- get its <span class="code">root_visual</span> member,
- then iterate over the <span class="code">xcb_depth_t</span>s
- and the <span class="code">xcb_visualtype_t</span>s, and compare
- the <span class="code">xcb_visualid_t</span> of these <span class="code">xcb_visualtype_t</span>s:
- with <span class="code">root_visual</span>:
- </p>
- <pre class="code">
-xcb_connection_t *c;
-xcb_screen_t *screen;
-int screen_nbr;
-xcb_visualid_t root_visual = { 0 };
-xcb_visualtype_t *visual_type = NULL; /* the returned visual type */
-
-/* you init the connection and screen_nbr */
-
-screen = screen_of_display (c, screen_nbr);
-if (screen) {
- xcb_depth_iterator_t depth_iter;
-
- depth_iter = xcb_screen_allowed_depths_iterator (screen);
- for (; depth_iter.rem; xcb_depth_next (&amp;depth_iter)) {
- xcb_visualtype_iterator_t visual_iter;
-
- visual_iter = xcb_depth_visuals_iterator (depth_iter.data);
- for (; visual_iter.rem; xcb_visualtype_next (&amp;visual_iter)) {
- if (screen-&gt;root_visual == visual_iter.data-&gt;visual_id) {
- visual_type = visual_iter.data;
- break;
- }
- }
- }
-}
-
-/* visual_type contains now the visual structure, or a NULL visual structure if no screen is found */
-</pre>
- <li class="subtitle"><a name="DefaultGC">DefaultGC / DefaultGCOfScreen</a>
- <p>
- This default Graphic Context is just a newly created Graphic
- Context, associated to the root window of a
- <span class="code">xcb_screen_t</span>,
- using the black white pixels of that screen:
- </p>
- <pre class="code">
-xcb_connection_t *c;
-xcb_screen_t *screen;
-int screen_nbr;
-xcb_gcontext_t gc = { 0 }; /* the returned default graphic context */
-
-/* you init the connection and screen_nbr */
-
-screen = screen_of_display (c, screen_nbr);
-if (screen) {
- xcb_drawable_t draw;
- uint32_t mask;
- uint32_t values[2];
-
- gc = xcb_generate_id (c);
- draw = screen-&gt;root;
- mask = XCB_GC_FOREGROUND | XCB_GC_BACKGROUND;
- values[0] = screen-&gt;black_pixel;
- values[1] = screen-&gt;white_pixel;
- xcb_create_gc (c, gc, draw, mask, values);
-}
-
-/* gc contains now the default graphic context */
-</pre>
- <li class="subtitle"><a name="BlackPixel">BlackPixel / BlackPixelOfScreen</a>
- <p>
- It is the Id of the black pixel, which is in the structure
- of an <span class="code">xcb_screen_t</span>.
- </p>
- <pre class="code">
-xcb_connection_t *c;
-xcb_screen_t *screen;
-int screen_nbr;
-uint32_t black_pixel = 0; /* the returned black pixel */
-
-/* you init the connection and screen_nbr */
-
-screen = screen_of_display (c, screen_nbr);
-if (screen)
- black_pixel = screen-&gt;black_pixel;
-
-/* black_pixel contains now the value of the black pixel, or 0 if no screen is found */
-</pre>
- <li class="subtitle"><a name="WhitePixel">WhitePixel / WhitePixelOfScreen</a>
- <p>
- It is the Id of the white pixel, which is in the structure
- of an <span class="code">xcb_screen_t</span>.
- </p>
- <pre class="code">
-xcb_connection_t *c;
-xcb_screen_t *screen;
-int screen_nbr;
-uint32_t white_pixel = 0; /* the returned white pixel */
-
-/* you init the connection and screen_nbr */
-
-screen = screen_of_display (c, screen_nbr);
-if (screen)
- white_pixel = screen-&gt;white_pixel;
-
-/* white_pixel contains now the value of the white pixel, or 0 if no screen is found */
-</pre>
- <li class="subtitle"><a name="DisplayWidth">DisplayWidth / WidthOfScreen</a>
- <p>
- It is the width in pixels of the screen that you want, and
- which is in the structure of the corresponding
- <span class="code">xcb_screen_t</span>.
- </p>
- <pre class="code">
-xcb_connection_t *c;
-xcb_screen_t *screen;
-int screen_nbr;
-uint32_t width_in_pixels = 0; /* the returned width in pixels */
-
-/* you init the connection and screen_nbr */
-
-screen = screen_of_display (c, screen_nbr);
-if (screen)
- width_in_pixels = screen-&gt;width_in_pixels;
-
-/* width_in_pixels contains now the width in pixels, or 0 if no screen is found */
-</pre>
- <li class="subtitle"><a name="DisplayHeight">DisplayHeight / HeightOfScreen</a>
- <p>
- It is the height in pixels of the screen that you want, and
- which is in the structure of the corresponding
- <span class="code">xcb_screen_t</span>.
- </p>
- <pre class="code">
-xcb_connection_t *c;
-xcb_screen_t *screen;
-int screen_nbr;
-uint32_t height_in_pixels = 0; /* the returned height in pixels */
-
-/* you init the connection and screen_nbr */
-
-screen = screen_of_display (c, screen_nbr);
-if (screen)
- height_in_pixels = screen-&gt;height_in_pixels;
-
-/* height_in_pixels contains now the height in pixels, or 0 if no screen is found */
-</pre>
- <li class="subtitle"><a name="DisplayWidthMM">DisplayWidthMM / WidthMMOfScreen</a>
- <p>
- It is the width in millimeters of the screen that you want, and
- which is in the structure of the corresponding
- <span class="code">xcb_screen_t</span>.
- </p>
- <pre class="code">
-xcb_connection_t *c;
-xcb_screen_t *screen;
-int screen_nbr;
-uint32_t width_in_millimeters = 0; /* the returned width in millimeters */
-
-/* you init the connection and screen_nbr */
-
-screen = screen_of_display (c, screen_nbr);
-if (screen)
- width_in_millimeters = screen-&gt;width_in_millimeters;
-
-/* width_in_millimeters contains now the width in millimeters, or 0 if no screen is found */
-</pre>
- <li class="subtitle"><a name="DisplayHeightMM">DisplayHeightMM / HeightMMOfScreen</a>
- <p>
- It is the height in millimeters of the screen that you want, and
- which is in the structure of the corresponding
- <span class="code">xcb_screen_t</span>.
- </p>
- <pre class="code">
-xcb_connection_t *c;
-xcb_screen_t *screen;
-int screen_nbr;
-uint32_t height_in_millimeters = 0; /* the returned height in millimeters */
-
-/* you init the connection and screen_nbr */
-
-screen = screen_of_display (c, screen_nbr);
-if (screen)
- height_in_millimeters = screen-&gt;height_in_millimeters;
-
-/* height_in_millimeters contains now the height in millimeters, or 0 if no screen is found */
-</pre>
- <li class="subtitle"><a name="DisplayPlanes">DisplayPlanes / DefaultDepth / DefaultDepthOfScreen / PlanesOfScreen</a>
- <p>
- It is the depth (in bits) of the root window of the
- screen. You get it from the <span class="code">xcb_screen_t</span> structure.
- </p>
- <pre class="code">
-xcb_connection_t *c;
-xcb_screen_t *screen;
-int screen_nbr;
-uint8_t root_depth = 0; /* the returned depth of the root window */
-
-/* you init the connection and screen_nbr */
-
-screen = screen_of_display (c, screen_nbr);
-if (screen)
- root_depth = screen-&gt;root_depth;
-
-/* root_depth contains now the depth of the root window, or 0 if no screen is found */
-</pre>
- <li class="subtitle"><a name="DefaultColormap">DefaultColormap / DefaultColormapOfScreen</a>
- <p>
- This is the default colormap of the screen (and not the
- (default) colormap of the default screen !). As usual, you
- get it from the <span class="code">xcb_screen_t</span> structure:
- </p>
- <pre class="code">
-xcb_connection_t *c;
-xcb_screen_t *screen;
-int screen_nbr;
-xcb_colormap_t default_colormap = { 0 }; /* the returned default colormap */
-
-/* you init the connection and screen_nbr */
-
-screen = screen_of_display (c, screen_nbr);
-if (screen)
- default_colormap = screen-&gt;default_colormap;
-
-/* default_colormap contains now the default colormap, or a NULL colormap if no screen is found */
-</pre>
- <li class="subtitle"><a name="MinCmapsOfScreen"></a>MinCmapsOfScreen
- <p>
- You get the minimum installed colormaps in the <span class="code">xcb_screen_t</span> structure:
- </p>
- <pre class="code">
-xcb_connection_t *c;
-xcb_screen_t *screen;
-int screen_nbr;
-uint16_t min_installed_maps = 0; /* the returned minimum installed colormaps */
-
-/* you init the connection and screen_nbr */
-
-screen = screen_of_display (c, screen_nbr);
-if (screen)
- min_installed_maps = screen-&gt;min_installed_maps;
-
-/* min_installed_maps contains now the minimum installed colormaps, or 0 if no screen is found */
-</pre>
- <li class="subtitle"><a name="MaxCmapsOfScreen"></a>MaxCmapsOfScreen
- <p>
- You get the maximum installed colormaps in the <span class="code">xcb_screen_t</span> structure:
- </p>
- <pre class="code">
-xcb_connection_t *c;
-xcb_screen_t *screen;
-int screen_nbr;
-uint16_t max_installed_maps = 0; /* the returned maximum installed colormaps */
-
-/* you init the connection and screen_nbr */
-
-screen = screen_of_display (c, screen_nbr);
-if (screen)
- max_installed_maps = screen-&gt;max_installed_maps;
-
-/* max_installed_maps contains now the maximum installed colormaps, or 0 if no screen is found */
-</pre>
- <li class="subtitle"><a name="DoesSaveUnders"></a>DoesSaveUnders
- <p>
- You know if <span class="code">save_unders</span> is set,
- by looking in the <span class="code">xcb_screen_t</span> structure:
- </p>
- <pre class="code">
-xcb_connection_t *c;
-xcb_screen_t *screen;
-int screen_nbr;
-uint8_t save_unders = 0; /* the returned value of save_unders */
-
-/* you init the connection and screen_nbr */
-
-screen = screen_of_display (c, screen_nbr);
-if (screen)
- save_unders = screen-&gt;save_unders;
-
-/* save_unders contains now the value of save_unders, or FALSE if no screen is found */
-</pre>
- <li class="subtitle"><a name="DoesBackingStore"></a>DoesBackingStore
- <p>
- You know the value of <span class="code">backing_stores</span>,
- by looking in the <span class="code">xcb_screen_t</span> structure:
- </p>
- <pre class="code">
-xcb_connection_t *c;
-xcb_screen_t *screen;
-int screen_nbr;
-uint8_t backing_stores = 0; /* the returned value of backing_stores */
-
-/* you init the connection and screen_nbr */
-
-screen = screen_of_display (c, screen_nbr);
-if (screen)
- backing_stores = screen-&gt;backing_stores;
-
-/* backing_stores contains now the value of backing_stores, or FALSE if no screen is found */
-</pre>
- <li class="subtitle"><a name="EventMaskOfScreen"></a>EventMaskOfScreen
- <p>
- To get the current input masks,
- you look in the <span class="code">xcb_screen_t</span> structure:
- </p>
- <pre class="code">
-xcb_connection_t *c;
-xcb_screen_t *screen;
-int screen_nbr;
-uint32_t current_input_masks = 0; /* the returned value of current input masks */
-
-/* you init the connection and screen_nbr */
-
-screen = screen_of_display (c, screen_nbr);
-if (screen)
- current_input_masks = screen-&gt;current_input_masks;
-
-/* current_input_masks contains now the value of the current input masks, or FALSE if no screen is found */
-</pre>
- </ol>
- <li class="subtitle"><a name="misc">Miscellaneous macros</a>
- <ol>
- <li class="subtitle"><a name="DisplayOfScreen"></a>DisplayOfScreen
- <p>
- in Xlib, the <span class="code">Screen</span> structure
- stores its associated <span class="code">Display</span>
- structure. This is not the case in the X Window protocol,
- hence, it's also not the case in XCB. So you have to store
- it by yourself.
- </p>
- <li class="subtitle"><a name="DisplayCells"></a>DisplayCells / CellsOfScreen
- <p>
- To get the colormap entries,
- you look in the <span class="code">xcb_visualtype_t</span>
- structure, that you grab like <a class="subsection" href="#DefaultVisual">here</a>:
- </p>
- <pre class="code">
-xcb_connection_t *c;
-xcb_visualtype_t *visual_type;
-uint16_t colormap_entries = 0; /* the returned value of the colormap entries */
-
-/* you init the connection and visual_type */
-
-if (visual_type)
- colormap_entries = visual_type-&gt;colormap_entries;
-
-/* colormap_entries contains now the value of the colormap entries, or FALSE if no screen is found */
-</pre>
- </ol>
- </ol>
- </ol>
- </div>
-</body>
-
-</html>
+<!DOCTYPE html public "-//W3C//DTD HTML 4.01 Transitional//EN"
+"http://www.w3.org/TR/html4/loose.dtd">
+
+<html>
+
+<head>
+ <title>Basic Graphics Programming With The XCB Library</title>
+ <meta http-equiv="content-type" content="text/html; charset=iso-8859-1">
+ <link href="xcb.css" rel="stylesheet" type="text/css">
+</head>
+
+<body>
+ <div class="title">
+ Basic Graphics Programming With The XCB Library
+ </div>
+ <div class="toc">
+ <ol>
+ <li><a class="section" href="#intro">Introduction</a>
+ <li><a class="section" href="#Xmodel">The client and server model of the X window system</a>
+ <li><a class="section" href="#asynch">GUI programming: the asynchronous model</a>
+ <li><a class="section" href="#notions">Basic XCB notions</a>
+ <ol>
+ <li><a class="subsection" href="#conn">The X Connection</a>
+ <li><a class="subsection" href="#requestsreplies">Requests and replies: the Xlib killers</a>
+ <li><a class="subsection" href="#gc">The Graphics Context</a>
+ <li>Object handles
+ <li>Memory allocation for XCB structures
+ <li><a class="subsection" href="#events">Events</a>
+ </ol>
+ <li><a class="section" href="#use">Using XCB-based programs</a>
+ <ol>
+ <li><a class="subsection" href="#inst">Installation of XCB</a>
+ <li><a class="subsection" href="#comp">Compiling XCB-based programs</a>
+ </ol>
+ <li><a class="section" href="#openconn">Opening and closing the connection to an X server</a>
+ <li><a class="section" href="#screen">Checking basic information about a connection</a>
+ <li><a class="section" href="#helloworld">Creating a basic window - the "hello world" program</a>
+ <li><a class="section" href="#drawing">Drawing in a window</a>
+ <ol>
+ <li><a class="subsection" href="#allocgc">Allocating a Graphics Context</a>
+ <li><a class="subsection" href="#changegc">Changing the attributes of a Graphics Context</a>
+ <li><a class="subsection" href="#drawingprim">Drawing primitives: point, line, box, circle,...</a>
+ </ol>
+ <li><a class="section" href="#xevents">X Events</a>
+ <ol>
+ <li><a class="subsection" href="#register">Registering for event types using event masks</a>
+ <li><a class="subsection" href="#loop">Receiving events: writing the events loop</a>
+ <li><a class="subsection" href="#expose">Expose events</a>
+ <li><a class="subsection" href="#userinput">Getting user input</a>
+ <ol>
+ <li><a class="subsubsection" href="#mousepressrelease">Mouse button press and release events</a>
+ <li><a class="subsubsection" href="#mousemvnt">Mouse movement events</a>
+ <li><a class="subsubsection" href="#mouseenter">Mouse pointer enter and leave events</a>
+ <li><a class="subsubsection" href="#focus">The keyboard focus</a>
+ <li><a class="subsubsection" href="#keypress">Keyboard press and release events</a>
+ </ol>
+ <li><a class="subsection" href="#eventex">X events: a complete example</a>
+ </ol>
+ <li><a class="section" href="#font">Handling text and fonts</a>
+ <ol>
+ <li><a class="subsection" href="#fontstruct">The Font structure</a>
+ <li><a class="subsection" href="#openingfont">Opening a Font</a>
+ <li><a class="subsection" href="#assigningfont">Assigning a Font to a Graphic Context</a>
+ <li><a class="subsection" href="#drawingtext">Drawing text in a drawable</a>
+ <li><a class="subsection" href="#fontcompleteexample">Complete example</a>
+ </ol>
+ <li>Windows hierarchy
+ <ol>
+ <li>Root, parent and child windows
+ <li>Events propagation
+ </ol>
+ <li><a class="section" href="#wm">Interacting with the window manager</a>
+ <ol>
+ <li><a class="subsection" href="#wmprop">Window properties</a>
+ <li><a class="subsection" href="#wmname">Setting the window name and icon name</a>
+ <li>Setting preferred window size(s)
+ <li>Setting miscellaneous window manager hints
+ <li>Setting an application's icon
+ <li>Obeying the delete-window protocol
+ </ol>
+ <li><a class="section" href="#winop">Simple window operations</a>
+ <ol>
+ <li><a class="subsection" href="#winmap">Mapping and unmapping a window</a>
+ <li><a class="subsection" href="#winconf">Configuring a window</a>
+ <li><a class="subsection" href="#winmove">Moving a window around the screen</a>
+ <li><a class="subsection" href="#winsize">Resizing a window</a>
+ <li><a class="subsection" href="#winstack">Changing windows stacking order: raise and lower</a>
+ <li>Iconifying and de-iconifying a window
+ <li><a class="subsection" href="#wingetinfo">Getting informations about a window</a>
+ </ol>
+ <li><a class="section" href="#usecolor">Using colors to paint the rainbow</a>
+ <ol>
+ <li><a class="subsection" href="#colormap">Color maps</a>
+ <li><a class="subsection" href="#colormapalloc">Allocating and freeing Color Maps</a>
+ <li><a class="subsection" href="#alloccolor">Allocating and freeing a color entry</a>
+ <li>Drawing with a color
+ </ol>
+ <li><a class="section" href="#pixmaps">X Bitmaps and Pixmaps</a>
+ <ol>
+ <li><a class="subsection" href="#pixmapswhat">What is a X Bitmap ? An X Pixmap ?</a>
+ <li>Loading a bitmap from a file
+ <li>Drawing a bitmap in a window
+ <li><a class="subsection" href="#pixmapscreate">Creating a pixmap</a>
+ <li><a class="subsection" href="#pixmapsdraw">Drawing a pixmap in a window</a>
+ <li><a class="subsection" href="#pixmapsfree">Freeing a pixmap</a>
+ </ol>
+ <li><a class="subsection" href="#mousecursor">Messing with the mouse cursor</a>
+ <ol>
+ <li><a class="subsection" href="#mousecursorcreate">Creating and destroying a mouse cursor</a>
+ <li><a class="subsection" href="#mousecursorset">Setting a window's mouse cursor</a>
+ <li><a class="subsection" href="#mousecursorexample">Complete example</a>
+ </ol>
+ <li><a class="subsection" href="#translation">Translation of basic Xlib functions and macros</a>
+ <ol>
+ <li><a class="subsection" href="#displaystructure">Members of the Display structure</a>
+ <ol>
+ <li><a class="subsection" href="#ConnectionNumber">ConnectionNumber</a>
+ <li><a class="subsection" href="#DefaultScreen">DefaultScreen</a>
+ <li><a class="subsection" href="#QLength">QLength</a>
+ <li><a class="subsection" href="#ScreenCount">ScreenCount</a>
+ <li><a class="subsection" href="#ServerVendor">ServerVendor</a>
+ <li><a class="subsection" href="#ProtocolVersion">ProtocolVersion</a>
+ <li><a class="subsection" href="#ProtocolRevision">ProtocolRevision</a>
+ <li><a class="subsection" href="#VendorRelease">VendorRelease</a>
+ <li><a class="subsection" href="#DisplayString">DisplayString</a>
+ <li><a class="subsection" href="#BitmapUnit">BitmapUnit</a>
+ <li><a class="subsection" href="#BitmapBitOrder">BitmapBitOrder</a>
+ <li><a class="subsection" href="#BitmapPad">BitmapPad</a>
+ <li><a class="subsection" href="#ImageByteOrder">ImageByteOrder</a>
+ </ol>
+ <li><a class="subsection" href="#screenofdisplay">ScreenOfDisplay related functions</a>
+ <ol>
+ <li><a class="subsection" href="#ScreenOfDisplay">ScreenOfDisplay</a>
+ <li><a class="subsection" href="#DefaultScreenOfDisplay">DefaultScreenOfDisplay</a>
+ <li><a class="subsection" href="#RootWindow">RootWindow / RootWindowOfScreen</a>
+ <li><a class="subsection" href="#DefaultRootWindow">DefaultRootWindow</a>
+ <li><a class="subsection" href="#DefaultVisual">DefaultVisual / DefaultVisualOfScreen</a>
+ <li><a class="subsection" href="#DefaultGC">DefaultGC / DefaultGCOfScreen</a>
+ <li><a class="subsection" href="#BlackPixel">BlackPixel / BlackPixelOfScreen</a>
+ <li><a class="subsection" href="#WhitePixel">WhitePixel / WhitePixelOfScreen</a>
+ <li><a class="subsection" href="#DisplayWidth">DisplayWidth / WidthOfScreen</a>
+ <li><a class="subsection" href="#DisplayHeight">DisplayHeight / HeightOfScreen</a>
+ <li><a class="subsection" href="#DisplayWidthMM">DisplayWidthMM / WidthMMOfScreen</a>
+ <li><a class="subsection" href="#DisplayHeightMM">DisplayHeightMM / HeightMMOfScreen</a>
+ <li><a class="subsection" href="#DisplayPlanes">DisplayPlanes / DefaultDepth / DefaultDepthOfScreen / PlanesOfScreen</a>
+ <li><a class="subsection" href="#DefaultColormap">DefaultColormap / DefaultColormapOfScreen</a>
+ <li><a class="subsection" href="#MinCmapsOfScreen">MinCmapsOfScreen</a>
+ <li><a class="subsection" href="#MaxCmapsOfScreen">MaxCmapsOfScreen</a>
+ <li><a class="subsection" href="#DoesSaveUnders">DoesSaveUnders</a>
+ <li><a class="subsection" href="#DoesBackingStore">DoesBackingStore</a>
+ <li><a class="subsection" href="#EventMaskOfScreen">EventMaskOfScreen</a>
+ </ol>
+ <li><a class="subsection" href="#misc">Miscellaneaous macros</a>
+ <ol>
+ <li><a class="subsection" href="#DisplayOfScreen">DisplayOfScreen</a>
+ <li><a class="subsection" href="#DisplayCells">DisplayCells / CellsOfScreen</a>
+ </ol>
+ </ol>
+ </ol>
+ </div>
+ <div class="section">
+ <ol>
+ <li class="title"><a name="intro">Introduction</a>
+ <p>
+ This tutorial is based on the
+ <a href="http://users.actcom.co.il/~choo/lupg/tutorials/xlib-programming/xlib-programming.html">Xlib Tutorial</a>
+ written by <a href="mailto:choor at atcom dot co dot il">Guy Keren</a>. The
+ author allowed me to take some parts of his text, mainly the text which
+ deals with the X Windows generality.
+ </p>
+ <p>
+ This tutorial is intended for people who want to start to program
+ with the <a href="http://xcb.freedesktop.org">XCB</a>
+ library. keep in mind that XCB, like the
+ <a href="http://tronche.com/gui/x/xlib/introduction">Xlib</a>
+ library, isn't what most programmers wanting to write X
+ applications are looking for. They should use a much higher
+ level GUI toolkit like Motif,
+ <a href="http://www.lesstif.org">LessTiff</a>,
+ <a href="http://www.gtk.org">GTK</a>,
+ <a href="http://www.trolltech.com">QT</a>,
+ <a href="http://www.enlightenment.org">EWL</a>,
+ <a href="http://www.enlightenment.org">ETK</a>, or use
+ <a href="http://cairographics.org">Cairo</a>.
+ However,
+ we need to start somewhere. More than this, knowing how things
+ work down below is never a bad idea.
+ </p>
+ <p>
+ After reading this tutorial, one should be able to write very
+ simple graphical programs, but not programs with decent user
+ interfaces. For such programs, one of the previously mentioned
+ libraries should be used.
+ </p>
+ <p>
+ But what is XCB? Xlib has been
+ the standard C binding for the <a href="http://www.x.org">X
+ Window System</a> protocol for many years now. It is an
+ excellent piece of work, but there are applications for which it
+ is not ideal, for example:
+ </p>
+ <ul>
+ <li><b>Small platforms</b>: Xlib is a large piece of code, and
+ it's difficult to make it smaller
+ <li><b>Latency hiding</b>: Xlib requests requiring a reply are
+ effectively synchronous: they block until the reply appears,
+ whether the result is needed immediately or not.
+ <li><b>Direct access to the protocol</b>: Xlib does quite a
+ bit of caching, layering, and similar optimizations. While this
+ is normally a feature, it makes it difficult to simply emit
+ specified X protocol requests and process specific
+ responses.
+ <li><b>Threaded applications</b>: While Xlib does attempt to
+ support multithreading, the API makes this difficult and
+ error-prone.
+ <li><b>New extensions</b>: The Xlib infrastructure provides
+ limited support for the new creation of X extension client side
+ code.
+ </ul>
+ <p>
+ For these reasons, among others, XCB, an X C binding, has been
+ designed to solve the above problems and thus provide a base for
+ </p>
+ <ul>
+ <li>Toolkit implementation.
+ <li>Direct protocol-level programming.
+ <li>Lightweight emulation of commonly used portions of the
+ Xlib API.
+ </ul>
+ <br>
+ <li class="title"><a name="Xmodel">The client and server model of the X window system</a>
+ <p>
+ The X Window System was developed with one major goal:
+ flexibility. The idea was that the way things look is one thing,
+ but the way things work is another matter. Thus, the lower
+ levels provide the tools required to draw windows, handle user
+ input, allow drawing graphics using colors (or black and white
+ screens), etc. To this point, a decision was made to separate
+ the system into two parts. A client that decides what to do, and
+ a server that actually draws on the screen and reads user input
+ in order to send it to the client for processing.
+ </p>
+ <p>
+ This model is the complete opposite of what is used to when
+ dealing with clients and servers. In our case, the user sits
+ near the machine controlled by the server, while the client
+ might be running on a remote machine. The server controls the
+ screens, mouse and keyboard. A client may connect to the server,
+ request that it draws a window (or several windows), and ask the
+ server to send it any input the user sends to these
+ windows. Thus, several clients may connect to a single X server
+ (one might be running mail software, one running a WWW
+ browser, etc). When input is sent by the user to some window,
+ the server sends a message to the client controlling this window
+ for processing. The client decides what to do with this input,
+ and sends the server requests for drawing in the window.
+ </p>
+ <p>
+ The whole session is carried out using the X message
+ protocol. This protocol was originally carried over the TCP/IP
+ protocol suite, allowing the client to run on any machine
+ connected to the same network that the server is. Later on, the
+ X servers were extended to allow clients running on the local
+ machine with more optimized access to the server (note that an X
+ protocol message may be several hundreds of KB in size), such as
+ using shared memory, or using Unix domain sockets (a method for
+ creating a logical channel on a Unix system between two processes).
+ </p>
+ <li class="title"><a name="asynch">GUI programming: the asynchronous model</a>
+ <p>
+ Unlike conventional computer programs, that carry some serial
+ nature, a GUI program usually uses an asynchronous programming
+ model, also known as "event-driven programming". This means that
+ that program mostly sits idle, waiting for events sent by the X
+ server, and then acts upon these events. An event may say "The
+ user pressed the 1st button mouse in spot (x,y)", or "The window
+ you control needs to be redrawn". In order for the program to be
+ responsive to the user input, as well as to refresh requests, it
+ needs to handle each event in a rather short period of time
+ (e.g. less that 200 milliseconds, as a rule of thumb).
+ </p>
+ <p>
+ This also implies that the program may not perform operations
+ that might take a long time while handling an event (such as
+ opening a network connection to some remote server, or
+ connecting to a database server, or even performing a long file
+ copy operation). Instead, it needs to perform all these
+ operations in an asynchronous manner. This may be done by using
+ various asynchronous models to perform the longish operations,
+ or by performing them in a different process or thread.
+ </p>
+ <p>
+ So the way a GUI program looks is something like that:
+ </p>
+ <ol>
+ <li>Perform initialization routines.
+ <li>Connect to the X server.
+ <li>Perform X-related initialization.
+ <li>While not finished:
+ <ol>
+ <li>Receive the next event from the X server.
+ <li>Handle the event, possibly sending various drawing
+ requests to the X server.
+ <li>If the event was a quit message, exit the loop.
+ </ol>
+ <li>Close down the connection to the X server.
+ <li>Perform cleanup operations.
+ </ol>
+ <br>
+ <li class="title"><a name="notions">Basic XCB notions</a>
+ <p>
+ XCB has been created to eliminate the need for
+ programs to actually implement the X protocol layer. This
+ library gives a program a very low-level access to any X
+ server. Since the protocol is standardized, a client using any
+ implementation of XCB may talk with any X server (the same
+ occurs for Xlib, of course). We now give a brief description of
+ the basic XCB notions. They will be detailed later.
+ </p>
+ <ol>
+ <li class="subtitle"><a name="conn">The X Connection</a>
+ <p>
+ The major notion of using XCB is the X Connection. This is a
+ structure representing the connection we have open with a
+ given X server. It hides a queue of messages coming from the
+ server, and a queue of pending requests that our client
+ intends to send to the server. In XCB, this structure is named
+ 'xcb_connection_t'. It is analogous to the Xlib Display.
+ When we open a connection to an X server, the
+ library returns a pointer to such a structure. Later, we
+ supply this pointer to any XCB function that should send
+ messages to the X server or receive messages from this server.
+ </p>
+ <li class="subtitle"><a name="requestsreplies">Requests and
+ replies: the Xlib killers</a>
+ <p>
+ To ask for information from the X server, we have to make a request
+ and ask for a reply. With Xlib, these two tasks are
+ automatically done: Xlib locks the system, sends a request,
+ waits for a reply from the X server and unlocks. This is
+ annoying, especially if one makes a lot of requests to the X
+ server. Indeed, Xlib has to wait for the end of a reply
+ before asking for the next request (because of the locks that
+ Xlib sends). For example, here is a time-line of N=4
+ requests/replies with Xlib, with a round-trip latency
+ <b>T_round_trip</b> that is 5 times long as the time required
+ to write or read a request/reply (<b>T_write/T_read</b>):
+ </p>
+ <pre class="text">
+ W-----RW-----RW-----RW-----R
+</pre>
+ <ul>
+ <li>W: Writing request
+ <li>-: Stalled, waiting for data
+ <li>R: Reading reply
+ </ul>
+ <p>
+ The total time is N * (T_write + T_round_trip + T_read).
+ </p>
+ <p>
+ With XCB, we can suppress most of the round-trips as the
+ requests and the replies are not locked. We usually send a
+ request, then XCB returns to us a <b>cookie</b>, which is an
+ identifier. Then, later, we ask for a reply using this
+ <b>cookie</b> and XCB returns a
+ pointer to that reply. Hence, with XCB, we can send a lot of
+ requests, and later in the program, ask for all the replies
+ when we need them. Here is the time-line for 4
+ requests/replies when we use this property of XCB:
+ </p>
+ <pre class="text">
+ WWWW--RRRR
+</pre>
+ <p>
+ The total time is N * T_write + max (0, T_round_trip - (N-1) *
+ T_write) + N * T_read. Which can be considerably faster than
+ all those Xlib round-trips.
+ </p>
+ <p>
+ Here is a program that computes the time to create 500 atoms
+ with Xlib and XCB. It shows the Xlib way, the bad XCB way
+ (which is similar to Xlib) and the good XCB way. On my
+ computer, XCB is 25 times faster than Xlib.
+ </p>
+ <pre class="code">
+#include &lt;stdlib.h&gt;
+#include &lt;stdio.h&gt;
+#include &lt;string.h&gt;
+#include &lt;sys/time.h&gt;
+
+#include &lt;xcb/xcb.h&gt;
+
+#include &lt;X11/Xlib.h&gt;
+
+double
+get_time(void)
+{
+ struct timeval timev;
+
+ gettimeofday(&amp;timev, NULL);
+
+ return (double)timev.tv_sec + (((double)timev.tv_usec) / 1000000);
+}
+
+int
+main ()
+{
+ xcb_connection_t *c;
+ xcb_atom_t *atoms;
+ xcb_intern_atom_cookie_t *cs;
+ char **names;
+ int count;
+ int i;
+ double start;
+ double end;
+ double diff;
+
+ /* Xlib */
+ Display *disp;
+ Atom *atoms_x;
+ double diff_x;
+
+ c = xcb_connect (NULL, NULL);
+
+ count = 500;
+ atoms = (xcb_atom_t *)malloc (count * sizeof (atoms));
+ names = (char **)malloc (count * sizeof (char *));
+
+ /* init names */
+ for (i = 0; i &lt; count; ++i) {
+ char buf[100];
+
+ sprintf (buf, "NAME%d", i);
+ names[i] = strdup (buf);
+ }
+
+ /* bad use */
+ start = get_time ();
+
+ for (i = 0; i &lt; count; ++i)
+ atoms[i] = xcb_intern_atom_reply (c,
+ xcb_intern_atom (c,
+ 0,
+ strlen(names[i]),
+ names[i]),
+ NULL)->atom;
+
+ end = get_time ();
+ diff = end - start;
+ printf ("bad use time : %f\n", diff);
+
+ /* good use */
+ start = get_time ();
+
+ cs = (xcb_intern_atom_cookie_t *) malloc (count * sizeof(xcb_intern_atom_cookie_t));
+ for(i = 0; i &lt; count; ++i)
+ cs[i] = xcb_intern_atom (c, 0, strlen(names[i]), names[i]);
+
+ for(i = 0; i &lt; count; ++i) {
+ xcb_intern_atom_reply_t *r;
+
+ r = xcb_intern_atom_reply(c, cs[i], 0);
+ if(r)
+ atoms[i] = r->atom;
+ free(r);
+ }
+
+ end = get_time ();
+ printf ("good use time : %f\n", end - start);
+ printf ("ratio : %f\n", diff / (end - start));
+ diff = end - start;
+
+ /* free var */
+ free (atoms);
+ free (cs);
+
+ xcb_disconnect (c);
+
+ /* Xlib */
+ disp = XOpenDisplay (getenv("DISPLAY"));
+
+ atoms_x = (Atom *)malloc (count * sizeof (atoms_x));
+
+ start = get_time ();
+
+ for (i = 0; i &lt; count; ++i)
+ atoms_x[i] = XInternAtom(disp, names[i], 0);
+
+ end = get_time ();
+ diff_x = end - start;
+ printf ("Xlib use time : %f\n", diff_x);
+ printf ("ratio : %f\n", diff_x / diff);
+
+ free (atoms_x);
+ for (i = 0; i &lt; count; ++i)
+ free (names[i]);
+ free (names);
+
+ XCloseDisplay (disp);
+
+ return 0;
+}
+</pre>
+ <li class="subtitle"><a name="gc">The Graphic Context</a>
+ <p>
+ When we perform various drawing operations (graphics, text,
+ etc), we may specify various options for controlling how the
+ data will be drawn (what foreground and background colors to
+ use, how line edges will be connected, what font to use when
+ drawing some text, etc). In order to avoid the need to supply
+ hundreds of parameters to each drawing function, a graphical
+ context structure is used. We set the various drawing options
+ in this structure, and then we pass a pointer to this
+ structure to any drawing routines. This is rather handy, as we
+ often need to perform several drawing requests with the same
+ options. Thus, we would initialize a graphical context, set
+ the desired options, and pass this structure to all drawing
+ functions.
+ </p>
+ <p>
+ Note that graphic contexts have no client-side structure in
+ XCB, they're just XIDs. Xlib has a client-side structure
+ because it caches the GC contents so it can avoid making
+ redundant requests, but of course XCB doesn't do that.
+ </p>
+ <li class="subtitle"><a name="events">Events</a>
+ <p>
+ A structure is used to pass events received from the X
+ server. XCB supports exactly the events specified in the
+ protocol (33 events). This structure contains the type
+ of event received (including a bit for whether it came
+ from the server or another client), as well as the data associated with the
+ event (e.g. position on the screen where the event was
+ generated, mouse button associated with the event, region of
+ the screen associated with a "redraw" event, etc). The way to
+ read the event's data depends on the event type.
+ </p>
+ </ol>
+ <br>
+ <li class="title"><a name="use">Using XCB-based programs</a>
+ <br>
+ <ol>
+ <li class="subtitle"><a name="inst">Installation of XCB</a>
+ <p>
+ <b>TODO:</b> These instructions are out of date.
+ Just reference the <a href="http://xcb.freedesktop.org/">main XCB page</a>
+ so we don't have to maintain these instructions in more than
+ one place.
+ </p>
+ <p>
+ To build XCB from source, you need to have installed at
+ least:
+ </p>
+ <ul>
+ <li>pkgconfig 0.15.0
+ <li><a href="http://www.gnu.org/software/automake/">automake 1.7</a>
+ <li><a href="http://www.gnu.org/software/autoconf/">autoconf 2.50</a>
+ <li><a href="http://www.check.org">check</a>
+ <li><a href="http://xmlsoft.org/XSLT/">xsltproc</a>
+ <li><a href="http://www.gnu.org/software/gperf/">gperf 3.0.1</a>
+ </ul>
+ <p>
+ You have to checkout in the git repository the following modules:
+ </p>
+ <ul>
+ <li>Xau from xlibs
+ <li>xcb-proto
+ <li>xcb
+ </ul>
+ <p>
+ Note that xcb-proto exists only to install header
+ files, so typing 'make' or 'make all' will produce the message
+ "Nothing to be done for 'all'". That's normal.
+ </p>
+ <li class="subtitle"><a name="comp">Compiling XCB-based programs</a>
+ <p>
+ Compiling XCB-based programs requires linking them with the XCB
+ library. This is easily done thanks to pkgconfig:
+ </p>
+ <pre class="text">
+gcc -Wall prog.c -o prog `pkg-config --cflags --libs xcb`
+</pre>
+ </ol>
+ <li class="title"><a name="openconn">Opening and closing the connection to an X server</a>
+ <p>
+ An X program first needs to open the connection to the X
+ server. There is a function that opens a connection. It requires
+ the display name, or NULL. In the latter case, the display name
+ will be the one in the environment variable DISPLAY.
+ </p>
+ <pre class="code">
+<span class="type">xcb_connection_t</span> *xcb_connect (<span class="keyword">const</span> <span class="type">char</span> *displayname,
+ <span class="type">int</span> *screenp);
+</pre>
+ <p>
+ The second parameter returns the screen number used for the
+ connection. The returned structure describes an XCB connection
+ and is opaque. Here is how the connection can be opened:
+ </p>
+ <pre class="code">
+#<span class="include">include</span> <span class="string">&lt;xcb/xcb.h&gt;</span>
+
+<span class="type">int</span>
+<span class="function">main</span> ()
+{
+ <span class="type">xcb_connection_t</span> *c;
+
+ /* Open the connection to the X server. Use the DISPLAY environment variable as the default display name */
+ c = xcb_connect (NULL, NULL);
+
+ <span class="keyword">return</span> 0;
+}
+</pre>
+ <p>
+ To close a connection, it suffices to use:
+ </p>
+ <pre class="code">
+<span class="type">void</span> xcb_disconnect (<span class="type">xcb_connection_t</span> *c);
+</pre>
+ <div class="comp">
+ <div class="title">
+ Comparison Xlib/XCB
+ </div>
+ <div class="xlib">
+ <ul>
+ <li>XOpenDisplay ()
+ </ul>
+ </div>
+ <div class="xcb">
+ <ul>
+ <li>xcb_connect ()
+ </ul>
+ </div>
+ <div class="xlib">
+ <ul>
+ <li>XCloseDisplay ()
+ </ul>
+ </div>
+ <div class="xcb">
+ <ul>
+ <li>xcb_disconnect ()
+ </ul>
+ </div>
+ </div>
+ <br>
+ <li class="title"><a name="screen">Checking basic information about a connection</a>
+ <p>
+ Once we have opened a connection to an X server, we should check some
+ basic information about it: what screens it has, what is the
+ size (width and height) of the screen, how many colors it
+ supports (black and white ? grey scale ?, 256 colors ? more ?),
+ and so on. We get such information from the xcb_screen_t
+ structure:
+ </p>
+ <pre class="code">
+typedef struct {
+ xcb_window_t root;
+ xcb_colormap_t default_colormap;
+ uint32_t white_pixel;
+ uint32_t black_pixel;
+ uint32_t current_input_masks;
+ uint16_t width_in_pixels;
+ uint16_t height_in_pixels;
+ uint16_t width_in_millimeters;
+ uint16_t height_in_millimeters;
+ uint16_t min_installed_maps;
+ uint16_t max_installed_maps;
+ xcb_visualid_t root_visual;
+ uint8_t backing_stores;
+ uint8_t save_unders;
+ uint8_t root_depth;
+ uint8_t allowed_depths_len;
+} xcb_screen_t;
+</pre>
+ <p>
+ We could retrieve the first screen of the connection by using the
+ following function:
+ </p>
+ <pre class="code">
+xcb_screen_iterator_t xcb_setup_roots_iterator (xcb_setup_t *R);
+</pre>
+ <p>
+ Here is a small program that shows how to use this function:
+ </p>
+ <pre class="code">
+#include &lt;stdio.h&gt;
+
+#include &lt;xcb/xcb.h&gt;
+
+int
+main ()
+{
+ xcb_connection_t *c;
+ xcb_screen_t *screen;
+ int screen_nbr;
+ xcb_screen_iterator_t iter;
+
+ /* Open the connection to the X server. Use the DISPLAY environment variable */
+ c = xcb_connect (NULL, &amp;screen_nbr);
+
+ /* Get the screen #screen_nbr */
+ iter = xcb_setup_roots_iterator (xcb_get_setup (c));
+ for (; iter.rem; --screen_nbr, xcb_screen_next (&amp;iter))
+ if (screen_nbr == 0) {
+ screen = iter.data;
+ break;
+ }
+
+ printf ("\n");
+ printf ("Informations of screen %ld:\n", screen-&gt;root);
+ printf (" width.........: %d\n", screen-&gt;width_in_pixels);
+ printf (" height........: %d\n", screen-&gt;height_in_pixels);
+ printf (" white pixel...: %ld\n", screen-&gt;white_pixel);
+ printf (" black pixel...: %ld\n", screen-&gt;black_pixel);
+ printf ("\n");
+
+ return 0;
+}
+</pre>
+ <li class="title"><a name="helloworld">Creating a basic window - the "hello world" program</a>
+ <p>
+ After we got some basic information about our screen, we can
+ create our first window. In the X Window System, a window is
+ characterized by an Id. So, in XCB, a window is of type:
+ </p>
+ <pre class="code">
+typedef uint32_t xcb_window_t;
+</pre>
+ <p>
+ We first ask for a new Id for our window, with this function:
+ </p>
+ <pre class="code">
+xcb_window_t xcb_generate_id(xcb_connection_t *c);
+</pre>
+ <p>
+ Then, XCB supplies the following function to create new windows:
+ </p>
+ <pre class="code">
+xcb_void_cookie_t xcb_create_window (xcb_connection_t *c, /* Pointer to the xcb_connection_t structure */
+ uint8_t depth, /* Depth of the screen */
+ xcb_window_t wid, /* Id of the window */
+ xcb_window_t parent, /* Id of an existing window that should be the parent of the new window */
+ int16_t x, /* X position of the top-left corner of the window (in pixels) */
+ int16_t y, /* Y position of the top-left corner of the window (in pixels) */
+ uint16_t width, /* Width of the window (in pixels) */
+ uint16_t height, /* Height of the window (in pixels) */
+ uint16_t border_width, /* Width of the window's border (in pixels) */
+ uint16_t _class,
+ xcb_visualid_t visual,
+ uint32_t value_mask,
+ const uint32_t *value_list);
+</pre>
+ <p>
+ The fact that we created the window does not mean that it will
+ be drawn on screen. By default, newly created windows are not
+ mapped on the screen (they are invisible). In order to make our
+ window visible, we use the function <span class="code">xcb_map_window()</span>, whose
+ prototype is
+ </p>
+ <pre class="code">
+xcb_void_cookie_t xcb_map_window (xcb_connection_t *c,
+ xcb_window_t window);
+</pre>
+ <p>
+ Finally, here is a small program to create a window of size
+ 150x150 pixels, positioned at the top-left corner of the screen:
+ </p>
+ <pre class="code">
+#include &lt;unistd.h&gt; /* pause() */
+
+#include &lt;xcb/xcb.h&gt;
+
+int
+main ()
+{
+ xcb_connection_t *c;
+ xcb_screen_t *screen;
+ xcb_window_t win;
+
+ /* Open the connection to the X server */
+ c = xcb_connect (NULL, NULL);
+
+ /* Get the first screen */
+ screen = xcb_setup_roots_iterator (xcb_get_setup (c)).data;
+
+ /* Ask for our window's Id */
+ win = xcb_generate_id(c);
+
+ /* Create the window */
+ xcb_create_window (c, /* Connection */
+ XCB_COPY_FROM_PARENT, /* depth (same as root)*/
+ win, /* window Id */
+ screen-&gt;root, /* parent window */
+ 0, 0, /* x, y */
+ 150, 150, /* width, height */
+ 10, /* border_width */
+ XCB_WINDOW_CLASS_INPUT_OUTPUT, /* class */
+ screen-&gt;root_visual, /* visual */
+ 0, NULL); /* masks, not used yet */
+
+ /* Map the window on the screen */
+ xcb_map_window (c, win);
+
+ /* Make sure commands are sent before we pause, so window is shown */
+ xcb_flush (c);
+
+ pause (); /* hold client until Ctrl-C */
+
+ return 0;
+}
+</pre>
+ <p>
+ In this code, you see one more function - <span class="code">xcb_flush()</span>, not explained
+ yet. It is used to flush all the pending requests. More
+ precisely, there are 2 functions that do such things. The first
+ one is <span class="code">xcb_flush()</span>:
+ </p>
+ <pre class="code">
+int xcb_flush (xcb_connection_t *c);
+</pre>
+ <p>
+ This function flushes all pending requests to the X server (much
+ like the <span class="code">fflush()</span> function is used to
+ flush standard output). The second function is
+ <span class="code">xcb_aux_sync()</span>:
+ </p>
+ <pre class="code">
+int xcb_aux_sync (xcb_connection_t *c);
+</pre>
+ <p>
+ This functions also flushes all pending requests to the X
+ server, and then waits until the X server finishing processing
+ these requests. In a normal program, this will not be necessary
+ (we'll see why when we get to write a normal X program), but for
+ now, we put it there.
+ </p>
+ <p>
+ The window that is created by the above code has a non defined
+ background. This one can be set to a specific color,
+ thanks to the two last parameters of
+ <span class="code">xcb_create_window()</span>, which are not
+ described yet. See the subsections
+ <a href="#winconf">Configuring a window</a> or
+ <a href="#winconf">Registering for event types using event masks</a>
+ for examples on how to use these parameters. In addition, as no
+ events are handled, you have to make a Ctrl-C to interrupt the
+ program.
+ </p>
+ <p>
+ <b>TODO</b>: one should tell what these functions return and
+ about the generic error
+ </p>
+ <div class="comp">
+ <div class="title">
+ Comparison Xlib/XCB
+ </div>
+ <div class="xlib">
+ <ul>
+ <li>XCreateWindow ()
+ </ul>
+ </div>
+ <div class="xcb">
+ <ul>
+ <li>xcb_generate_id ()
+ <li>xcb_create_window ()
+ </ul>
+ </div>
+ </div>
+ <br>
+ <li class="title"><a name="drawing">Drawing in a window</a>
+ <p>
+ Drawing in a window can be done using various graphical
+ functions (drawing pixels, lines, rectangles, etc). In order to
+ draw in a window, we first need to define various general
+ drawing parameters (what line width to use, which color to draw
+ with, etc). This is done using a graphical context.
+ </p>
+ <ol>
+ <li class="subtitle"><a name="allocgc">Allocating a Graphics Context</a>
+ <p>
+ As we said, a graphical context defines several attributes to
+ be used with the various drawing functions. For this, we
+ define a graphical context. We can use more than one graphical
+ context with a single window, in order to draw in multiple
+ styles (different colors, different line widths, etc). In XCB,
+ a Graphics Context is, as a window, characterized by an Id:
+ </p>
+ <pre class="code">
+typedef uint32_t xcb_gcontext_t;
+</pre>
+ <p>
+ We first ask the X server to attribute an Id to our graphic
+ context with this function:
+ </p>
+ <pre class="code">
+xcb_gcontext_t xcb_generate_id (xcb_connection_t *c);
+</pre>
+ <p>
+ Then, we set the attributes of the graphic context with this function:
+ </p>
+ <pre class="code">
+xcb_void_cookie_t xcb_create_gc (xcb_connection_t *c,
+ xcb_gcontext_t cid,
+ xcb_drawable_t drawable,
+ uint32_t value_mask,
+ const uint32_t *value_list);
+</pre>
+ <p>
+ We give now an example on how to allocate a graphic context
+ that specifies that each drawing function that uses it will
+ draw in foreground with a black color.
+ </p>
+ <pre class="code">
+#include &lt;xcb/xcb.h&gt;
+
+int
+main ()
+{
+ xcb_connection_t *c;
+ xcb_screen_t *screen;
+ xcb_drawable_t win;
+ xcb_gcontext_t black;
+ uint32_t mask;
+ uint32_t value[1];
+
+ /* Open the connection to the X server and get the first screen */
+ c = xcb_connect (NULL, NULL);
+ screen = xcb_setup_roots_iterator (xcb_get_setup (c)).data;
+
+ /* Create a black graphic context for drawing in the foreground */
+ win = screen-&gt;root;
+ black = xcb_generate_id (c);
+ mask = XCB_GC_FOREGROUND;
+ value[0] = screen-&gt;black_pixel;
+ xcb_create_gc (c, black, win, mask, value);
+
+ return 0;
+}
+</pre>
+ <p>
+ Note should be taken regarding the role of "value_mask" and
+ "value_list" in the prototype of <span class="code">xcb_create_gc()</span>. Since a
+ graphic context has many attributes, and since we often just
+ want to define a few of them, we need to be able to tell the
+ <span class="code">xcb_create_gc()</span> which attributes we
+ want to set. This is what the "value_mask" parameter is
+ for. We then use the "value_list" parameter to specify actual
+ values for the attribute we defined in "value_mask". Thus, for
+ each constant used in "value_list", we will use the matching
+ constant in "value_mask". In this case, we define a graphic
+ context with one attribute: when drawing (a point, a line,
+ etc), the foreground color will be black. The rest of the
+ attributes of this graphic context will be set to their
+ default values.
+ </p>
+ <p>
+ See the next Subsection for more details.
+ </p>
+ <div class="comp">
+ <div class="title">
+ Comparison Xlib/XCB
+ </div>
+ <div class="xlib">
+ <ul>
+ <li>XCreateGC ()
+ </ul>
+ </div>
+ <div class="xcb">
+ <ul>
+ <li>xcb_generate_id ()
+ <li>xcb_create_gc ()
+ </ul>
+ </div>
+ </div>
+ <br>
+ <li class="subtitle"><a name="changegc">Changing the attributes of a Graphics Context</a>
+ <p>
+ Once we have allocated a Graphic Context, we may need to
+ change its attributes (for example, changing the foreground
+ color we use to draw a line, or changing the attributes of the
+ font we use to display strings. See Subsections Drawing with a
+ color and
+ <a href="#assigningfont">Assigning a Font to a Graphic Context</a>).
+ This is done by using this function:
+ </p>
+ <pre class="code">
+xcb_void_cookie_t xcb_change_gc (xcb_connection_t *c, /* The XCB Connection */
+ xcb_gcontext_t gc, /* The Graphic Context */
+ uint32_t value_mask, /* Components of the Graphic Context that have to be set */
+ const uint32_t *value_list); /* Value as specified by value_mask */
+</pre>
+ <p>
+ The <span class="code">value_mask</span> parameter could take
+ any combination of these masks from the xcb_gc_t enumeration:
+ </p>
+ <ul>
+ <li>XCB_GC_FUNCTION
+ <li>XCB_GC_PLANE_MASK
+ <li>XCB_GC_FOREGROUND
+ <li>XCB_GC_BACKGROUND
+ <li>XCB_GC_LINE_WIDTH
+ <li>XCB_GC_LINE_STYLE
+ <li>XCB_GC_CAP_STYLE
+ <li>XCB_GC_JOIN_STYLE
+ <li>XCB_GC_FILL_STYLE
+ <li>XCB_GC_FILL_RULE
+ <li>XCB_GC_TILE
+ <li>XCB_GC_STIPPLE
+ <li>XCB_GC_TILE_STIPPLE_ORIGIN_X
+ <li>XCB_GC_TILE_STIPPLE_ORIGIN_Y
+ <li>XCB_GC_FONT
+ <li>XCB_GC_SUBWINDOW_MODE
+ <li>XCB_GC_GRAPHICS_EXPOSURES
+ <li>XCB_GC_CLIP_ORIGIN_X
+ <li>XCB_GC_CLIP_ORIGIN_Y
+ <li>XCB_GC_CLIP_MASK
+ <li>XCB_GC_DASH_OFFSET
+ <li>XCB_GC_DASH_LIST
+ <li>XCB_GC_ARC_MODE
+ </ul>
+ <p>
+ It is possible to set several attributes at the same
+ time (for example setting the attributes of a font and the
+ color which will be used to display a string), by OR'ing these
+ values in <span class="code">value_mask</span>. Then
+ <span class="code">value_list</span> has to be an array which
+ lists the value for the respective attributes. <b>These values
+ must be in the same order as masks listed above.</b> See Subsection
+ Drawing with a color to have an example.
+ </p>
+ <p>
+ <b>TODO</b>: set the links of the 3 subsections, once they will
+ be written :)
+ </p>
+ <p>
+ <b>TODO</b>: give an example which sets several attributes.
+ </p>
+ <li class="subtitle"><a name="drawingprim">Drawing primitives: point, line, box, circle,...</a>
+ <p>
+ After we have created a Graphic Context, we can draw on a
+ window using this Graphic Context, with a set of XCB
+ functions, collectively called "drawing primitives". Let see
+ how they are used.
+ </p>
+ <p>
+ To draw a point, or several points, we use
+ </p>
+ <pre class="code">
+xcb_void_cookie_t xcb_poly_point (xcb_connection_t *c, /* The connection to the X server */
+ uint8_t coordinate_mode, /* Coordinate mode, usually set to XCB_COORD_MODE_ORIGIN */
+ xcb_drawable_t drawable, /* The drawable on which we want to draw the point(s) */
+ xcb_gcontext_t gc, /* The Graphic Context we use to draw the point(s) */
+ uint32_t points_len, /* The number of points */
+ const xcb_point_t *points); /* An array of points */
+</pre>
+ <p>
+ The <span class="code">coordinate_mode</span> parameter
+ specifies the coordinate mode. Available values are
+ </p>
+ <ul>
+ <li><span class="code">XCB_COORD_MODE_ORIGIN</span>
+ <li><span class="code">XCB_COORD_MODE_PREVIOUS</span>
+ </ul>
+ <p>
+ If XCB_COORD_MODE_PREVIOUS is used, then all points but the first one
+ are relative to the immediately previous point.
+ </p>
+ <p>
+ The <span class="code">xcb_point_t</span> type is just a
+ structure with two fields (the coordinates of the point):
+ </p>
+ <pre class="code">
+typedef struct {
+ int16_t x;
+ int16_t y;
+} xcb_point_t;
+</pre>
+ <p>
+ You could see an example in xpoints.c. <b>TODO</b> Set the link.
+ </p>
+ <p>
+ To draw a line, or a polygonal line, we use
+ </p>
+ <pre class="code">
+xcb_void_cookie_t xcb_poly_line (xcb_connection_t *c, /* The connection to the X server */
+ uint8_t coordinate_mode, /* Coordinate mode, usually set to XCB_COORD_MODE_ORIGIN */
+ xcb_drawable_t drawable, /* The drawable on which we want to draw the line(s) */
+ xcb_gcontext_t gc, /* The Graphic Context we use to draw the line(s) */
+ uint32_t points_len, /* The number of points in the polygonal line */
+ const xcb_point_t *points); /* An array of points */
+</pre>
+ <p>
+ This function will draw the line between the first and the
+ second points, then the line between the second and the third
+ points, and so on.
+ </p>
+ <p>
+ To draw a segment, or several segments, we use
+ </p>
+ <pre class="code">
+xcb_void_cookie_t xcb_poly_segment (xcb_connection_t *c, /* The connection to the X server */
+ xcb_drawable_t drawable, /* The drawable on which we want to draw the segment(s) */
+ xcb_gcontext_t gc, /* The Graphic Context we use to draw the segment(s) */
+ uint32_t segments_len, /* The number of segments */
+ const xcb_segment_t *segments); /* An array of segments */
+</pre>
+ <p>
+ The <span class="code">xcb_segment_t</span> type is just a
+ structure with four fields (the coordinates of the two points
+ that define the segment):
+ </p>
+ <pre class="code">
+typedef struct {
+ int16_t x1;
+ int16_t y1;
+ int16_t x2;
+ int16_t y2;
+} xcb_segment_t;
+</pre>
+ <p>
+ To draw a rectangle, or several rectangles, we use
+ </p>
+ <pre class="code">
+xcb_void_cookie_t xcb_poly_rectangle (xcb_connection_t *c, /* The connection to the X server */
+ xcb_drawable_t drawable, /* The drawable on which we want to draw the rectangle(s) */
+ xcb_gcontext_t gc, /* The Graphic Context we use to draw the rectangle(s) */
+ uint32_t rectangles_len, /* The number of rectangles */
+ const xcb_rectangle_t *rectangles); /* An array of rectangles */
+</pre>
+ <p>
+ The <span class="code">xcb_rectangle_t</span> type is just a
+ structure with four fields (the coordinates of the top-left
+ corner of the rectangle, and its width and height):
+ </p>
+ <pre class="code">
+typedef struct {
+ int16_t x;
+ int16_t y;
+ uint16_t width;
+ uint16_t height;
+} xcb_rectangle_t;
+</pre>
+ <!-- There's no coordinate_mode. Is it normal? -->
+ <!-- [iano] Yes, it's not in the protocol. -->
+ <p>
+ To draw an elliptical arc, or several elliptical arcs, we use
+ </p>
+ <pre class="code">
+xcb_void_cookie_t xcb_poly_arc (xcb_connection_t *c, /* The connection to the X server */
+ xcb_drawable_t drawable, /* The drawable on which we want to draw the arc(s) */
+ xcb_gcontext_t gc, /* The Graphic Context we use to draw the arc(s) */
+ uint32_t arcs_len, /* The number of arcs */
+ const xcb_arc_t *arcs); /* An array of arcs */
+</pre>
+ <p>
+ The <span class="code">xcb_arc_t</span> type is a structure with
+ six fields:
+ </p>
+ <pre class="code">
+typedef struct {
+ int16_t x; /* Top left x coordinate of the rectangle surrounding the ellipse */
+ int16_t y; /* Top left y coordinate of the rectangle surrounding the ellipse */
+ uint16_t width; /* Width of the rectangle surrounding the ellipse */
+ uint16_t height; /* Height of the rectangle surrounding the ellipse */
+ int16_t angle1; /* Angle at which the arc begins */
+ int16_t angle2; /* Angle at which the arc ends */
+} xcb_arc_t;
+</pre>
+ <div class="emph">
+ <p>
+ Note: the angles are expressed in units of 1/64 of a degree,
+ so to have an angle of 90 degrees, starting at 0,
+ <span class="code">angle1 = 0</span> and
+ <span class="code">angle2 = 90 &lt;&lt; 6</span>. Positive angles
+ indicate counterclockwise motion, while negative angles
+ indicate clockwise motion.
+ </p>
+ </div>
+ <!-- I think that (x,y) should be the center of the
+ ellipse, and (width, height) the radius. It's more logical. -->
+ <!-- iano: Yes, and I bet some toolkits do that.
+ But the protocol (and many other graphics APIs) define arcs
+ by bounding rectangles. -->
+ <p>
+ The corresponding function which fill inside the geometrical
+ object are listed below, without further explanation, as they
+ are used as the above functions.
+ </p>
+ <p>
+ To Fill a polygon defined by the points given as arguments ,
+ we use
+ </p>
+ <pre class="code">
+xcb_void_cookie_t xcb_fill_poly (xcb_connection_t *c,
+ xcb_drawable_t drawable,
+ xcb_gcontext_t gc,
+ uint8_t shape,
+ uint8_t coordinate_mode,
+ uint32_t points_len,
+ const xcb_point_t *points);
+</pre>
+ <p>
+ The <span class="code">shape</span> parameter specifies a
+ shape that helps the server to improve performance. Available
+ values are
+ </p>
+ <ul>
+ <li><span class="code">XCB_POLY_SHAPE_COMPLEX</span>
+ <li><span class="code">XCB_POLY_SHAPE_NONCONVEX</span>
+ <li><span class="code">XCB_POLY_SHAPE_CONVEX</span>
+ </ul>
+ <p>
+ To fill one or several rectangles, we use
+ </p>
+ <pre class="code">
+xcb_void_cookie_t xcb_poly_fill_rectangle (xcb_connection_t *c,
+ xcb_drawable_t drawable,
+ xcb_gcontext_t gc,
+ uint32_t rectangles_len,
+ const xcb_rectangle_t *rectangles);
+</pre>
+ <p>
+ To fill one or several arcs, we use
+ </p>
+ <pre class="code">
+xcb_void_cookie_t xcb_poly_fill_arc (xcb_connection_t *c,
+ xcb_drawable_t drawable,
+ xcb_gcontext_t gc,
+ uint32_t arcs_len,
+ const xcb_arc_t *arcs);
+</pre>
+ <br>
+ <a name="points.c"></a>
+ <p>
+ To illustrate these functions, here is an example that draws
+ four points, a polygonal line, two segments, two rectangles
+ and two arcs. Remark that we use events for the first time, as
+ an introduction to the next section.
+ </p>
+ <p>
+ <b>TODO:</b> Use screen-&gt;root_depth for depth parameter.
+ </p>
+ <pre class="code">
+#include &lt;stdlib.h&gt;
+#include &lt;stdio.h&gt;
+
+#include &lt;xcb/xcb.h&gt;
+
+int
+main ()
+{
+ xcb_connection_t *c;
+ xcb_screen_t *screen;
+ xcb_drawable_t win;
+ xcb_gcontext_t foreground;
+ xcb_generic_event_t *e;
+ uint32_t mask = 0;
+ uint32_t values[2];
+
+ /* geometric objects */
+ xcb_point_t points[] = {
+ {10, 10},
+ {10, 20},
+ {20, 10},
+ {20, 20}};
+
+ xcb_point_t polyline[] = {
+ {50, 10},
+ { 5, 20}, /* rest of points are relative */
+ {25,-20},
+ {10, 10}};
+
+ xcb_segment_t segments[] = {
+ {100, 10, 140, 30},
+ {110, 25, 130, 60}};
+
+ xcb_rectangle_t rectangles[] = {
+ { 10, 50, 40, 20},
+ { 80, 50, 10, 40}};
+
+ xcb_arc_t arcs[] = {
+ {10, 100, 60, 40, 0, 90 &lt;&lt; 6},
+ {90, 100, 55, 40, 0, 270 &lt;&lt; 6}};
+
+ /* Open the connection to the X server */
+ c = xcb_connect (NULL, NULL);
+
+ /* Get the first screen */
+ screen = xcb_setup_roots_iterator (xcb_get_setup (c)).data;
+
+ /* Create black (foreground) graphic context */
+ win = screen-&gt;root;
+
+ foreground = xcb_generate_id (c);
+ mask = XCB_GC_FOREGROUND | XCB_GC_GRAPHICS_EXPOSURES;
+ values[0] = screen-&gt;black_pixel;
+ values[1] = 0;
+ xcb_create_gc (c, foreground, win, mask, values);
+
+ /* Ask for our window's Id */
+ win = xcb_generate_id(c);
+
+ /* Create the window */
+ mask = XCB_CW_BACK_PIXEL | XCB_CW_EVENT_MASK;
+ values[0] = screen-&gt;white_pixel;
+ values[1] = XCB_EVENT_MASK_EXPOSURE;
+ xcb_create_window (c, /* Connection */
+ XCB_COPY_FROM_PARENT, /* depth */
+ win, /* window Id */
+ screen-&gt;root, /* parent window */
+ 0, 0, /* x, y */
+ 150, 150, /* width, height */
+ 10, /* border_width */
+ XCB_WINDOW_CLASS_INPUT_OUTPUT, /* class */
+ screen-&gt;root_visual, /* visual */
+ mask, values); /* masks */
+
+ /* Map the window on the screen */
+ xcb_map_window (c, win);
+
+
+ /* We flush the request */
+ xcb_flush (c);
+
+ while ((e = xcb_wait_for_event (c))) {
+ switch (e-&gt;response_type &amp; ~0x80) {
+ case XCB_EXPOSE: {
+ /* We draw the points */
+ xcb_poly_point (c, XCB_COORD_MODE_ORIGIN, win, foreground, 4, points);
+
+ /* We draw the polygonal line */
+ xcb_poly_line (c, XCB_COORD_MODE_PREVIOUS, win, foreground, 4, polyline);
+
+ /* We draw the segements */
+ xcb_poly_segment (c, win, foreground, 2, segments);
+
+ /* We draw the rectangles */
+ xcb_poly_rectangle (c, win, foreground, 2, rectangles);
+
+ /* We draw the arcs */
+ xcb_poly_arc (c, win, foreground, 2, arcs);
+
+ /* We flush the request */
+ xcb_flush (c);
+
+ break;
+ }
+ default: {
+ /* Unknown event type, ignore it */
+ break;
+ }
+ }
+ /* Free the Generic Event */
+ free (e);
+ }
+
+ return 0;
+}
+</pre>
+ </ol>
+ <li class="title"><a name="xevents">X Events</a>
+ <p>
+ In an X program, everything is driven by events. Event painting
+ on the screen is sometimes done as a response to an event (an
+ <span class="code">Expose</span> event). If part of a program's
+ window that was hidden, gets exposed (e.g. the window was raised
+ above other widows), the X server will send an "expose" event to
+ let the program know it should repaint that part of the
+ window. User input (key presses, mouse movement, etc) is also
+ received as a set of events.
+ </p>
+ <ol>
+ <li class="subtitle"><a name="register">Registering for event types using event masks</a>
+ <p>
+ During the creation of a window, you should give it what kind
+ of events it wishes to receive. Thus, you may register for
+ various mouse (also called pointer) events, keyboard events,
+ expose events, and so on. This is done for optimizing the
+ server-to-client connection (i.e. why send a program (that
+ might even be running at the other side of the globe) an event
+ it is not interested in ?)
+ </p>
+ <p>
+ In XCB, you use the "value_mask" and "value_list" data in the
+ <span class="code">xcb_create_window()</span> function to
+ register for events. Here is how we register for
+ <span class="code">Expose</span> event when creating a window:
+ </p>
+ <pre class="code">
+ mask = XCB_CW_EVENT_MASK;
+ valwin[0] = XCB_EVENT_MASK_EXPOSURE;
+ win = xcb_generate_id (c);
+ xcb_create_window (c, depth, win, root-&gt;root,
+ 0, 0, 150, 150, 10,
+ XCB_WINDOW_CLASS_INPUT_OUTPUT, root-&gt;root_visual,
+ mask, valwin);
+</pre>
+ <p>
+ <span class="code">XCB_EVENT_MASK_EXPOSURE</span> is a constant defined
+ in the xcb_event_mask_t enumeration in the "xproto.h" header file. If we wanted to register for several
+ event types, we can logically "or" them, as follows:
+ </p>
+ <pre class="code">
+ mask = XCB_CW_EVENT_MASK;
+ valwin[0] = XCB_EVENT_MASK_EXPOSURE | XCB_EVENT_MASK_BUTTON_PRESS;
+ win = xcb_generate_id (c);
+ xcb_create_window (c, depth, win, root-&gt;root,
+ 0, 0, 150, 150, 10,
+ XCB_WINDOW_CLASS_INPUT_OUTPUT, root-&gt;root_visual,
+ mask, valwin);
+</pre>
+ <p>
+ This registers for <span class="code">Expose</span> events as
+ well as for mouse button presses inside the created
+ window. You should note that a mask may represent several
+ event sub-types.
+ </p>
+ <p>
+ The values that a mask could take are given
+ by the <span class="code">xcb_cw_t</span> enumeration:
+ </p>
+ <pre class="code">
+typedef enum {
+ XCB_CW_BACK_PIXMAP = 1L<<0,
+ XCB_CW_BACK_PIXEL = 1L<<1,
+ XCB_CW_BORDER_PIXMAP = 1L<<2,
+ XCB_CW_BORDER_PIXEL = 1L<<3,
+ XCB_CW_BIT_GRAVITY = 1L<<4,
+ XCB_CW_WIN_GRAVITY = 1L<<5,
+ XCB_CW_BACKING_STORE = 1L<<6,
+ XCB_CW_BACKING_PLANES = 1L<<7,
+ XCB_CW_BACKING_PIXEL = 1L<<8,
+ XCB_CW_OVERRIDE_REDIRECT = 1L<<9,
+ XCB_CW_SAVE_UNDER = 1L<<10,
+ XCB_CW_EVENT_MASK = 1L<<11,
+ XCB_CW_DONT_PROPAGATE = 1L<<12,
+ XCB_CW_COLORMAP = 1L<<13,
+ XCB_CW_CURSOR = 1L<<14
+} xcb_cw_t;
+</pre>
+ <div class="emph">
+ <p>Note: we must be careful when setting the values of the valwin
+ parameter, as they have to follow the order the
+ <span class="code">xcb_cw_t</span> enumeration. Here is an
+ example:
+ </p>
+ </div>
+ <pre class="code">
+ mask = XCB_CW_EVENT_MASK | XCB_CW_BACK_PIXMAP;
+ valwin[0] = XCB_NONE; /* for XCB_CW_BACK_PIXMAP (whose value is 1) */
+ valwin[1] = XCB_EVENT_MASK_EXPOSURE | XCB_EVENT_MASK_BUTTON_PRESS; /* for XCB_CW_EVENT_MASK, whose value (2048) */
+ /* is greater than the one of XCB_CW_BACK_PIXMAP */
+</pre>
+ <p>
+ If the window has already been created, we can use the
+ <span class="code">xcb_change_window_attributes()</span> function to set
+ the events that the window will receive. The subsection
+ <a href="#winconf">Configuring a window</a> shows its
+ prototype. As an example, here is a piece of code that
+ configures the window to receive the
+ <span class="code">Expose</span> and
+ <span class="code">ButtonPress</span> events:
+ </p>
+ <pre class="code">
+const static uint32_t values[] = { XCB_EVENT_MASK_EXPOSURE | XCB_EVENT_MASK_BUTTON_PRESS };
+
+/* The connection c and the window win are supposed to be defined */
+
+xcb_change_window_attributes (c, win, XCB_CW_EVENT_MASK, values);
+</pre>
+ <div class="emph">
+ <p>
+ Note: A common bug programmers do is adding code to handle new
+ event types in their program, while forgetting to add the
+ masks for these events in the creation of the window. Such a
+ programmer then should sit down for hours debugging his
+ program, wondering "Why doesn't my program notice that I
+ released the button?", only to find that they registered for
+ button press events but not for button release events.
+ </p>
+ </div>
+ <li class="subtitle"><a name="loop">Receiving events: writing the events loop</a>
+ <p>
+ After we have registered for the event types we are interested
+ in, we need to enter a loop of receiving events and handling
+ them. There are two ways to receive events: a blocking way and
+ a non-blocking way:
+ </p>
+ <ul>
+ <li>
+ <span class="code">xcb_wait_for_event (xcb_connection_t *c)</span>
+ is the blocking way. It waits (so blocks...) until an event is
+ queued in the X server. Then it retrieves it into a newly
+ allocated structure (it dequeues it from the queue) and returns
+ it. This structure has to be freed. The function returns
+ <span class="code">NULL</span> if an error occurs.
+
+ <br>
+ <li>
+ <span class="code">xcb_poll_for_event (xcb_connection_t *c, int
+ *error)</span> is the non-blocking way. It looks at the event
+ queue and returns (and dequeues too) an existing event into
+ a newly allocated structure. This structure has to be
+ freed. It returns <span class="code">NULL</span> if there is
+ no event. If an error occurs, the parameter <span
+ class="code">error</span> will be filled with the error
+ status.
+ </ul>
+ <p>
+ There are various ways to write such a loop. We present two
+ ways to write such a loop, with the two functions above. The
+ first one uses <span class="code">xcb_wait_for_event_t</span>, which
+ is similar to an event Xlib loop using only <span
+ class="code">XNextEvent</span>:
+ </p>
+ <pre class="code">
+ xcb_generic_event_t *e;
+
+ while ((e = xcb_wait_for_event (c))) {
+ switch (e-&gt;response_type &amp; ~0x80) {
+ case XCB_EXPOSE: {
+ /* Handle the Expose event type */
+ xcb_expose_event_t *ev = (xcb_expose_event_t *)e;
+
+ /* ... */
+
+ break;
+ }
+ case XCB_BUTTON_PRESS: {
+ /* Handle the ButtonPress event type */
+ xcb_button_press_event_t *ev = (xcb_button_press_event_t *)e;
+
+ /* ... */
+
+ break;
+ }
+ default: {
+ /* Unknown event type, ignore it */
+ break;
+ }
+ }
+ /* Free the Generic Event */
+ free (e);
+ }
+</pre>
+ <p>
+ You will certainly want to use <span
+ class="code">xcb_poll_for_event(xcb_connection_t *c, int
+ *error)</span> if, in Xlib, you use <span
+ class="code">XPending</span> or
+ <span class="code">XCheckMaskEvent</span>:
+ </p>
+ <pre class="code">
+ while (XPending (display)) {
+ XEvent ev;
+
+ XNextEvent(d, &amp;ev);
+
+ /* Manage your event */
+ }
+</pre>
+ <p>
+ Such a loop in XCB looks like:
+ </p>
+ <pre class="code">
+ xcb_generic_event_t *ev;
+
+ while ((ev = xcb_poll_for_event (conn, 0))) {
+ /* Manage your event */
+ }
+</pre>
+ <p>
+ The events are managed in the same way as with <span
+ class="code">xcb_wait_for_event_t</span>.
+ Obviously, we will need to give the user some way of
+ terminating the program. This is usually done by handling a
+ special "quit" event, as we will soon see.
+ </p>
+ <div class="comp">
+ <div class="title">
+ Comparison Xlib/XCB
+ </div>
+ <div class="xlib">
+ <ul>
+ <li>XNextEvent ()
+ </ul>
+ </div>
+ <div class="xcb">
+ <ul>
+ <li>xcb_wait_for_event ()
+ </ul>
+ </div>
+ <div class="xlib">
+ <ul>
+ <li>XPending ()
+ <li>XCheckMaskEvent ()
+ </ul>
+ </div>
+ <div class="xcb">
+ <ul>
+ <li>xcb_poll_for_event ()
+ </ul>
+ </div>
+ </div>
+ <br>
+ <li class="subtitle"><a name="expose">Expose events</a>
+ <p>
+ The <span class="code">Expose</span> event is one of the most
+ basic (and most used) events an application may receive. It
+ will be sent to us in one of several cases:
+ </p>
+ <ul>
+ <li>A window that covered part of our window has moved
+ away, exposing part (or all) of our window.
+ <li>Our window was raised above other windows.
+ <li>Our window mapped for the first time.
+ <li>Our window was de-iconified.
+ </ul>
+ <p>
+ You should note the implicit assumption hidden here: the
+ contents of our window is lost when it is being obscured
+ (covered) by either windows. One may wonder why the X server
+ does not save this contents. The answer is: to save
+ memory. After all, the number of windows on a display at a
+ given time may be very large, and storing the contents of all
+ of them might require a lot of memory. Actually, there is a
+ way to tell the X server to store the contents of a window in
+ special cases, as we will see later.
+ </p>
+ <p>
+ When we get an <span class="code">Expose</span> event, we
+ should take the event's data from the members of the following
+ structure:
+ </p>
+ <pre class="code">
+typedef struct {
+ uint8_t response_type; /* The type of the event, here it is XCB_EXPOSE */
+ uint8_t pad0;
+ uint16_t sequence;
+ xcb_window_t window; /* The Id of the window that receives the event (in case */
+ /* our application registered for events on several windows */
+ uint16_t x; /* The x coordinate of the top-left part of the window that needs to be redrawn */
+ uint16_t y; /* The y coordinate of the top-left part of the window that needs to be redrawn */
+ uint16_t width; /* The width of the part of the window that needs to be redrawn */
+ uint16_t height; /* The height of the part of the window that needs to be redrawn */
+ uint16_t count;
+} xcb_expose_event_t;
+</pre>
+ <li class="subtitle"><a name="userinput">Getting user input</a>
+ <p>
+ User input traditionally comes from two sources: the mouse
+ and the keyboard. Various event types exist to notify us of
+ user input (a key being presses on the keyboard, a key being
+ released on the keyboard, the mouse moving over our window,
+ the mouse entering (or leaving) our window, and so on.
+ </p>
+ <ol>
+ <li class="subsubtitle"><a name="mousepressrelease">Mouse button press and release events</a>
+ <p>
+ The first event type we will deal with is a mouse
+ button-press (or button-release) event in our window. In
+ order to register to such an event type, we should add one
+ (or more) of the following masks when we create our window:
+ </p>
+ <ul>
+ <li><span class="code">XCB_EVENT_MASK_BUTTON_PRESS</span>: notify us
+ of any button that was pressed in one of our windows.
+ <li><span class="code">XCB_EVENT_MASK_BUTTON_RELEASE</span>: notify us
+ of any button that was released in one of our windows.
+ </ul>
+ <p>
+ The structure to be checked for in our events loop is the
+ same for these two events, and is the following:
+ </p>
+ <pre class="code">
+typedef struct {
+ uint8_t response_type; /* The type of the event, here it is xcb_button_press_event_t or xcb_button_release_event_t */
+ xcb_button_t detail;
+ uint16_t sequence;
+ xcb_timestamp_t time; /* Time, in milliseconds the event took place in */
+ xcb_window_t root;
+ xcb_window_t event;
+ xcb_window_t child;
+ int16_t root_x;
+ int16_t root_y;
+ int16_t event_x; /* The x coordinate where the mouse has been pressed in the window */
+ int16_t event_y; /* The y coordinate where the mouse has been pressed in the window */
+ uint16_t state; /* A mask of the buttons (or keys) during the event */
+ uint8_t same_screen;
+} xcb_button_press_event_t;
+
+typedef xcb_button_press_event_t xcb_button_release_event_t;
+</pre>
+ <p>
+ The <span class="code">time</span> field may be used to calculate "double-click"
+ situations by an application (e.g. if the mouse button was
+ clicked two times in a duration shorter than a given amount
+ of time, assume this was a double click).
+ </p>
+ <p>
+ The <span class="code">state</span> field is a mask of the buttons held down during
+ the event. It is a bitwise OR of any of the following (from the xcb_button_mask_t and
+ xcb_mod_mask_t enumerations):
+ </p>
+ <ul>
+ <li><span class="code">XCB_BUTTON_MASK_1</span>
+ <li><span class="code">XCB_BUTTON_MASK_2</span>
+ <li><span class="code">XCB_BUTTON_MASK_3</span>
+ <li><span class="code">XCB_BUTTON_MASK_4</span>
+ <li><span class="code">XCB_BUTTON_MASK_5</span>
+ <li><span class="code">XCB_MOD_MASK_SHIFT</span>
+ <li><span class="code">XCB_MOD_MASK_LOCK</span>
+ <li><span class="code">XCB_MOD_MASK_CONTROL</span>
+ <li><span class="code">XCB_MOD_MASK_1</span>
+ <li><span class="code">XCB_MOD_MASK_2</span>
+ <li><span class="code">XCB_MOD_MASK_3</span>
+ <li><span class="code">XCB_MOD_MASK_4</span>
+ <li><span class="code">XCB_MOD_MASK_5</span>
+ </ul>
+ <p>
+ Their names are self explanatory, where the first 5 refer to
+ the mouse buttons that are being pressed, while the rest
+ refer to various "special keys" that are being pressed (Mod1
+ is usually the 'Alt' key or the 'Meta' key).
+ </p>
+ <p>
+ <b>TODO:</b> Problem: it seems that the state does not
+ change when clicking with various buttons.
+ </p>
+ <li class="subsubtitle"><a name="mousemvnt">Mouse movement events</a>
+ <p>
+ Similar to mouse button press and release events, we also
+ can be notified of various mouse movement events. These can
+ be split into two families. One is of mouse pointer
+ movement while no buttons are pressed, and the second is a
+ mouse pointer motion while one (or more) of the buttons are
+ pressed (this is sometimes called "a mouse drag operation",
+ or just "dragging"). The following event masks may be added
+ during the creation of our window:
+ </p>
+ <ul>
+ <li><span class="code">XCB_EVENT_MASK_POINTER_MOTION</span>: events of
+ the pointer moving in one of the windows controlled by our
+ application, while no mouse button is held pressed.
+ <li><span class="code">XCB_EVENT_MASK_BUTTON_MOTION</span>: Events of
+ the pointer moving while one or more of the mouse buttons
+ is held pressed.
+ <li><span class="code">XCB_EVENT_MASK_BUTTON_1_MOTION</span>: same as
+ <span class="code">XCB_EVENT_MASK_BUTTON_MOTION</span>, but only when
+ the 1st mouse button is held pressed.
+ <li><span class="code">XCB_EVENT_MASK_BUTTON_2_MOTION</span>,
+ <span class="code">XCB_EVENT_MASK_BUTTON_3_MOTION</span>,
+ <span class="code">XCB_EVENT_MASK_BUTTON_4_MOTION</span>,
+ <span class="code">XCB_EVENT_MASK_BUTTON_5_MOTION</span>: same as
+ <span class="code">XCB_EVENT_MASK_BUTTON_1_MOTION</span>, but
+ respectively for 2nd, 3rd, 4th and 5th mouse button.
+ </ul>
+ <p>
+ The structure to be checked for in our events loop is the
+ same for these events, and is the following:
+ </p>
+ <pre class="code">
+typedef struct {
+ uint8_t response_type; /* The type of the event */
+ uint8_t detail;
+ uint16_t sequence;
+ xcb_timestamp_t time; /* Time, in milliseconds the event took place in */
+ xcb_window_t root;
+ xcb_window_t event;
+ xcb_window_t child;
+ int16_t root_x;
+ int16_t root_y;
+ int16_t event_x; /* The x coordinate of the mouse when the event was generated */
+ int16_t event_y; /* The y coordinate of the mouse when the event was generated */
+ uint16_t state; /* A mask of the buttons (or keys) during the event */
+ uint8_t same_screen;
+} xcb_motion_notify_event_t;
+</pre>
+ <li class="subsubtitle"><a name="mouseenter">Mouse pointer enter and leave events</a>
+ <p>
+ Another type of event that applications might be interested
+ in, is a mouse pointer entering a window the program
+ controls, or leaving such a window. Some programs use these
+ events to show the user that the application is now in
+ focus. In order to register for such an event type, we
+ should add one (or more) of the following masks when we
+ create our window:
+ </p>
+ <ul>
+ <li><span class="code">xcb_event_enter_window_t</span>: notify us
+ when the mouse pointer enters any of our controlled
+ windows.
+ <li><span class="code">xcb_event_leave_window_t</span>: notify us
+ when the mouse pointer leaves any of our controlled
+ windows.
+ </ul>
+ <p>
+ The structure to be checked for in our events loop is the
+ same for these two events, and is the following:
+ </p>
+ <pre class="code">
+typedef struct {
+ uint8_t response_type; /* The type of the event */
+ uint8_t detail;
+ uint16_t sequence;
+ xcb_timestamp_t time; /* Time, in milliseconds the event took place in */
+ xcb_window_t root;
+ xcb_window_t event;
+ xcb_window_t child;
+ int16_t root_x;
+ int16_t root_y;
+ int16_t event_x; /* The x coordinate of the mouse when the event was generated */
+ int16_t event_y; /* The y coordinate of the mouse when the event was generated */
+ uint16_t state; /* A mask of the buttons (or keys) during the event */
+ uint8_t mode; /* The number of mouse button that was clicked */
+ uint8_t same_screen_focus;
+} xcb_enter_notify_event_t;
+
+typedef xcb_enter_notify_event_t xcb_leave_notify_event_t;
+</pre>
+ <li class="subsubtitle"><a name="focus">The keyboard focus</a>
+ <p>
+ There may be many windows on a screen, but only a single
+ keyboard attached to them. How does the X server then know
+ which window should be sent a given keyboard input ? This is
+ done using the keyboard focus. Only a single window on the
+ screen may have the keyboard focus at a given time. There
+ is a XCB function that allows a program to set the keyboard
+ focus to a given window. The user can usually set the
+ keyboard focus using the window manager (often by clicking
+ on the title bar of the desired window). Once our window
+ has the keyboard focus, every key press or key release will
+ cause an event to be sent to our program (if it regsitered
+ for these event types...).
+ </p>
+ <li class="subsubtitle"><a name="keypress">Keyboard press and release events</a>
+ <p>
+ If a window controlled by our program currently holds the
+ keyboard focus, it can receive key press and key release
+ events. So, we should add one (or more) of the following
+ masks when we create our window:
+ </p>
+ <ul>
+ <li><span class="code">XCB_EVENT_MASK_KEY_PRESS</span>: notify us when
+ a key was pressed while any of our controlled windows had
+ the keyboard focus.
+ <li><span class="code">XCB_EVENT_MASK_KEY_RELEASE</span>: notify us
+ when a key was released while any of our controlled
+ windows had the keyboard focus.
+ </ul>
+ <p>
+ The structure to be checked for in our events loop is the
+ same for these two events, and is the following:
+ </p>
+ <pre class="code">
+typedef struct {
+ uint8_t response_type; /* The type of the event */
+ xcb_keycode_t detail;
+ uint16_t sequence;
+ xcb_timestamp_t time; /* Time, in milliseconds the event took place in */
+ xcb_window_t root;
+ xcb_window_t event;
+ xcb_window_t child;
+ int16_t root_x;
+ int16_t root_y;
+ int16_t event_x;
+ int16_t event_y;
+ uint16_t state;
+ uint8_t same_screen;
+} xcb_key_press_event_t;
+
+typedef xcb_key_press_event_t xcb_key_release_event_t;
+</pre>
+ <p>
+ The <span class="code">detail</span> field refers to the
+ physical key on the keyboard.
+ </p>
+ <p>
+ <b>TODO:</b> Talk about getting the ASCII code from the key code.
+ </p>
+ </ol>
+ <li class="subtitle"><a name="eventex">X events: a complete example</a>
+ <p>
+ As an example for handling events, we show a program that
+ creates a window, enters an events loop and checks for all the
+ events described above, and writes on the terminal the relevant
+ characteristics of the event. With this code, it should be
+ easy to add drawing operations, like those which have been
+ described above.
+ </p>
+ <pre class="code">
+#include &lt;stdlib.h&gt;
+#include &lt;stdio.h&gt;
+
+#include &lt;xcb/xcb.h&gt;
+
+void
+print_modifiers (uint32_t mask)
+{
+ const char **mod, *mods[] = {
+ "Shift", "Lock", "Ctrl", "Alt",
+ "Mod2", "Mod3", "Mod4", "Mod5",
+ "Button1", "Button2", "Button3", "Button4", "Button5"
+ };
+ printf ("Modifier mask: ");
+ for (mod = mods ; mask; mask &gt;&gt;= 1, mod++)
+ if (mask &amp; 1)
+ printf(*mod);
+ putchar ('\n');
+}
+
+int
+main ()
+{
+ xcb_connection_t *c;
+ xcb_screen_t *screen;
+ xcb_window_t win;
+ xcb_generic_event_t *e;
+ uint32_t mask = 0;
+ uint32_t values[2];
+
+ /* Open the connection to the X server */
+ c = xcb_connect (NULL, NULL);
+
+ /* Get the first screen */
+ screen = xcb_setup_roots_iterator (xcb_get_setup (c)).data;
+
+ /* Ask for our window's Id */
+ win = xcb_generate_id (c);
+
+ /* Create the window */
+ mask = XCB_CW_BACK_PIXEL | XCB_CW_EVENT_MASK;
+ values[0] = screen-&gt;white_pixel;
+ values[1] = XCB_EVENT_MASK_EXPOSURE | XCB_EVENT_MASK_BUTTON_PRESS |
+ XCB_EVENT_MASK_BUTTON_RELEASE | XCB_EVENT_MASK_POINTER_MOTION |
+ XCB_EVENT_MASK_ENTER_WINDOW | XCB_EVENT_MASK_LEAVE_WINDOW |
+ XCB_EVENT_MASK_KEY_PRESS | XCB_EVENT_MASK_KEY_RELEASE;
+ xcb_create_window (c, /* Connection */
+ 0, /* depth */
+ win, /* window Id */
+ screen-&gt;root, /* parent window */
+ 0, 0, /* x, y */
+ 150, 150, /* width, height */
+ 10, /* border_width */
+ XCB_WINDOW_CLASS_INPUT_OUTPUT, /* class */
+ screen-&gt;root_visual, /* visual */
+ mask, values); /* masks */
+
+ /* Map the window on the screen */
+ xcb_map_window (c, win);
+
+ xcb_flush (c);
+
+ while ((e = xcb_wait_for_event (c))) {
+ switch (e-&gt;response_type &amp; ~0x80) {
+ case XCB_EXPOSE: {
+ xcb_expose_event_t *ev = (xcb_expose_event_t *)e;
+
+ printf ("Window %ld exposed. Region to be redrawn at location (%d,%d), with dimension (%d,%d)\n",
+ ev-&gt;window, ev-&gt;x, ev-&gt;y, ev-&gt;width, ev-&gt;height);
+ break;
+ }
+ case XCB_BUTTON_PRESS: {
+ xcb_button_press_event_t *ev = (xcb_button_press_event_t *)e;
+ print_modifiers(ev-&gt;state);
+
+ switch (ev-&gt;detail) {
+ case 4:
+ printf ("Wheel Button up in window %ld, at coordinates (%d,%d)\n",
+ ev-&gt;event, ev-&gt;event_x, ev-&gt;event_y);
+ break;
+ case 5:
+ printf ("Wheel Button down in window %ld, at coordinates (%d,%d)\n",
+ ev-&gt;event, ev-&gt;event_x, ev-&gt;event_y);
+ break;
+ default:
+ printf ("Button %d pressed in window %ld, at coordinates (%d,%d)\n",
+ ev-&gt;detail, ev-&gt;event, ev-&gt;event_x, ev-&gt;event_y);
+ }
+ break;
+ }
+ case XCB_BUTTON_RELEASE: {
+ xcb_button_release_event_t *ev = (xcb_button_release_event_t *)e;
+ print_modifiers(ev-&gt;state);
+
+ printf ("Button %d released in window %ld, at coordinates (%d,%d)\n",
+ ev-&gt;detail, ev-&gt;event, ev-&gt;event_x, ev-&gt;event_y);
+ break;
+ }
+ case XCB_MOTION_NOTIFY: {
+ xcb_motion_notify_event_t *ev = (xcb_motion_notify_event_t *)e;
+
+ printf ("Mouse moved in window %ld, at coordinates (%d,%d)\n",
+ ev-&gt;event, ev-&gt;event_x, ev-&gt;event_y);
+ break;
+ }
+ case XCB_ENTER_NOTIFY: {
+ xcb_enter_notify_event_t *ev = (xcb_enter_notify_event_t *)e;
+
+ printf ("Mouse entered window %ld, at coordinates (%d,%d)\n",
+ ev-&gt;event, ev-&gt;event_x, ev-&gt;event_y);
+ break;
+ }
+ case XCB_LEAVE_NOTIFY: {
+ xcb_leave_notify_event_t *ev = (xcb_leave_notify_event_t *)e;
+
+ printf ("Mouse left window %ld, at coordinates (%d,%d)\n",
+ ev-&gt;event, ev-&gt;event_x, ev-&gt;event_y);
+ break;
+ }
+ case XCB_KEY_PRESS: {
+ xcb_key_press_event_t *ev = (xcb_key_press_event_t *)e;
+ print_modifiers(ev-&gt;state);
+
+ printf ("Key pressed in window %ld\n",
+ ev-&gt;event);
+ break;
+ }
+ case XCB_KEY_RELEASE: {
+ xcb_key_release_event_t *ev = (xcb_key_release_event_t *)e;
+ print_modifiers(ev-&gt;state);
+
+ printf ("Key released in window %ld\n",
+ ev-&gt;event);
+ break;
+ }
+ default:
+ /* Unknown event type, ignore it */
+ printf("Unknown event: %d\n", e-&gt;response_type);
+ break;
+ }
+ /* Free the Generic Event */
+ free (e);
+ }
+
+ return 0;
+}
+</pre>
+ </ol>
+ <li class="title"><a name="font">Handling text and fonts</a>
+ <p>
+ Besides drawing graphics on a window, we often want to draw
+ text. Text strings have two major properties: the characters to
+ be drawn and the font with which they are drawn. In order to
+ draw text, we need to first request the X server to load a
+ font. We then assign a font to a Graphic Context, and finally, we
+ draw the text in a window, using the Graphic Context.
+ </p>
+ <ol>
+ <li class="subtitle"><a name="fontstruct">The Font structure</a>
+ <p>
+ In order to support flexible fonts, a font type is
+ defined. You know what ? It's an Id:
+ </p>
+ <pre class="code">
+typedef uint32_t xcb_font_t;
+</pre>
+ <p>
+ It is used to contain information about a font, and is passed
+ to several functions that handle fonts selection and text drawing.
+ We ask the X server to attribute an Id to our font with the
+ function:
+ </p>
+ <pre class="code">
+xcb_font_t xcb_generate_id (xcb_connection_t *c);
+</pre>
+ <br>
+ <li class="subtitle"><a name="openingfont">Opening a Font</a>
+ <p>
+ To open a font, we use the following function:
+ </p>
+ <pre class="code">
+xcb_void_cookie_t xcb_open_font (xcb_connection_t *c,
+ xcb_font_t fid,
+ uint16_t name_len,
+ const char *name);
+</pre>
+ <p>
+ The <span class="code">fid</span> parameter is the font Id
+ defined by <span class="code">xcb_generate_id()</span> (see
+ above). The <span class="code">name</span> parameter is the
+ name of the font you want to open. Use the command
+ <span class="code">xlsfonts</span> in a terminal to know which
+ are the fonts available on your computer. The parameter
+ <span class="code">name_len</span> is the length of the name
+ of the font (given by <span class="code">strlen()</span>).
+ </p>
+ <li class="subtitle"><a name="assigningfont">Assigning a Font to a Graphic Context</a>
+ <p>
+ Once a font is opened, you have to create a Graphic Context
+ that will contain the informations about the color of the
+ foreground and the background used when you draw a text in a
+ Drawable. Here is an exemple of a Graphic Context that will
+ allow us to draw an opened font with a black foreground and a
+ white background:
+ </p>
+ <pre class="code">
+ /*
+ * c is the connection
+ * screen is the screen where the window is displayed
+ * window is the window in which we will draw the text
+ * font is the opened font
+ */
+
+ uint32_t value_list[3];
+ xcb_gcontext_t gc;
+ uint32_t mask;
+
+ gc = xcb_generate_id (c);
+ mask = XCB_GC_FOREGROUND | XCB_GC_BACKGROUND | XCB_GC_FONT;
+ value_list[0] = screen->black_pixel;
+ value_list[1] = screen->white_pixel;
+ value_list[2] = font;
+ xcb_create_gc (c, gc, window, mask, value_list);
+
+ /* The font is not needed anymore, so we close it */
+ xcb_close_font (c, font);
+</pre>
+ <li class="subtitle"><a name="drawingtext">Drawing text in a drawable</a>
+ <p>
+ To draw a text in a drawable, we use the following function:
+ </p>
+ <pre class="code">
+xcb_void_cookie_t xcb_image_text_8 (xcb_connection_t *c,
+ uint8_t string_len,
+ xcb_drawable_t drawable,
+ xcb_gcontext_t gc,
+ int16_t x,
+ int16_t y,
+ const char *string);
+</pre>
+ <p>
+ The <span class="code">string</span> parameter is the text to
+ draw. The location of the drawing is given by the parameters
+ <span class="code">x</span> and <span class="code">y</span>.
+ The base line of the text is exactly the parameter
+ <span class="code">y</span>.
+ </p>
+ <li class="subtitle"><a name="fontcompleteexample">Complete example</a>
+ <p>
+ This example draw a text at 10 pixels (for the base line) of
+ the bottom of a window. Pressing the Esc key exits the program.
+ </p>
+ <pre class="code">
+#include &lt;stdlib.h&gt;
+#include &lt;stdio.h&gt;
+#include &lt;string.h&gt;
+
+#include &lt;xcb/xcb.h&gt;
+
+#define WIDTH 300
+#define HEIGHT 100
+
+
+
+static xcb_gc_t gc_font_get (xcb_connection_t *c,
+ xcb_screen_t *screen,
+ xcb_window_t window,
+ const char *font_name);
+
+static void text_draw (xcb_connection_t *c,
+ xcb_screen_t *screen,
+ xcb_window_t window,
+ int16_t x1,
+ int16_t y1,
+ const char *label);
+
+static void
+text_draw (xcb_connection_t *c,
+ xcb_screen_t *screen,
+ xcb_window_t window,
+ int16_t x1,
+ int16_t y1,
+ const char *label)
+{
+ xcb_void_cookie_t cookie_gc;
+ xcb_void_cookie_t cookie_text;
+ xcb_generic_error_t *error;
+ xcb_gcontext_t gc;
+ uint8_t length;
+
+ length = strlen (label);
+
+ gc = gc_font_get(c, screen, window, "7x13");
+
+ cookie_text = xcb_image_text_8_checked (c, length, window, gc,
+ x1,
+ y1, label);
+ error = xcb_request_check (c, cookie_text);
+ if (error) {
+ fprintf (stderr, "ERROR: can't paste text : %d\n", error->error_code);
+ xcb_disconnect (c);
+ exit (-1);
+ }
+
+ cookie_gc = xcb_free_gc (c, gc);
+ error = xcb_request_check (c, cookie_gc);
+ if (error) {
+ fprintf (stderr, "ERROR: can't free gc : %d\n", error->error_code);
+ xcb_disconnect (c);
+ exit (-1);
+ }
+}
+
+static xcb_gc_t
+gc_font_get (xcb_connection_t *c,
+ xcb_screen_t *screen,
+ xcb_window_t window,
+ const char *font_name)
+{
+ uint32_t value_list[3];
+ xcb_void_cookie_t cookie_font;
+ xcb_void_cookie_t cookie_gc;
+ xcb_generic_error_t *error;
+ xcb_font_t font;
+ xcb_gcontext_t gc;
+ uint32_t mask;
+
+ font = xcb_generate_id (c);
+ cookie_font = xcb_open_font_checked (c, font,
+ strlen (font_name),
+ font_name);
+
+ error = xcb_request_check (c, cookie_font);
+ if (error) {
+ fprintf (stderr, "ERROR: can't open font : %d\n", error->error_code);
+ xcb_disconnect (c);
+ return -1;
+ }
+
+ gc = xcb_generate_id (c);
+ mask = XCB_GC_FOREGROUND | XCB_GC_BACKGROUND | XCB_GC_FONT;
+ value_list[0] = screen->black_pixel;
+ value_list[1] = screen->white_pixel;
+ value_list[2] = font;
+ cookie_gc = xcb_create_gc_checked (c, gc, window, mask, value_list);
+ error = xcb_request_check (c, cookie_gc);
+ if (error) {
+ fprintf (stderr, "ERROR: can't create gc : %d\n", error->error_code);
+ xcb_disconnect (c);
+ exit (-1);
+ }
+
+ cookie_font = xcb_close_font_checked (c, font);
+ error = xcb_request_check (c, cookie_font);
+ if (error) {
+ fprintf (stderr, "ERROR: can't close font : %d\n", error->error_code);
+ xcb_disconnect (c);
+ exit (-1);
+ }
+
+ return gc;
+}
+
+int main ()
+{
+ xcb_screen_iterator_t screen_iter;
+ xcb_connection_t *c;
+ const xcb_setup_t *setup;
+ xcb_screen_t *screen;
+ xcb_generic_event_t *e;
+ xcb_generic_error_t *error;
+ xcb_void_cookie_t cookie_window;
+ xcb_void_cookie_t cookie_map;
+ xcb_window_t window;
+ uint32_t mask;
+ uint32_t values[2];
+ int screen_number;
+
+ /* getting the connection */
+ c = xcb_connect (NULL, &amp;screen_number);
+ if (!c) {
+ fprintf (stderr, "ERROR: can't connect to an X server\n");
+ return -1;
+ }
+
+ /* getting the current screen */
+ setup = xcb_get_setup (c);
+
+ screen = NULL;
+ screen_iter = xcb_setup_roots_iterator (setup);
+ for (; screen_iter.rem != 0; --screen_number, xcb_screen_next (&amp;screen_iter))
+ if (screen_number == 0)
+ {
+ screen = screen_iter.data;
+ break;
+ }
+ if (!screen) {
+ fprintf (stderr, "ERROR: can't get the current screen\n");
+ xcb_disconnect (c);
+ return -1;
+ }
+
+ /* creating the window */
+ window = xcb_generate_id (c);
+ mask = XCB_CW_BACK_PIXEL | XCB_CW_EVENT_MASK;
+ values[0] = screen->white_pixel;
+ values[1] =
+ XCB_EVENT_MASK_KEY_RELEASE |
+ XCB_EVENT_MASK_BUTTON_PRESS |
+ XCB_EVENT_MASK_EXPOSURE |
+ XCB_EVENT_MASK_POINTER_MOTION;
+ cookie_window = xcb_create_window_checked (c,
+ screen->root_depth,
+ window, screen->root,
+ 20, 200, WIDTH, HEIGHT,
+ 0, XCB_WINDOW_CLASS_INPUT_OUTPUT,
+ screen->root_visual,
+ mask, values);
+ cookie_map = xcb_map_window_checked (c, window);
+
+ /* error managing */
+ error = xcb_request_check (c, cookie_window);
+ if (error) {
+ fprintf (stderr, "ERROR: can't create window : %d\n", error->error_code);
+ xcb_disconnect (c);
+ return -1;
+ }
+ error = xcb_request_check (c, cookie_map);
+ if (error) {
+ fprintf (stderr, "ERROR: can't map window : %d\n", error->error_code);
+ xcb_disconnect (c);
+ return -1;
+ }
+
+ xcb_flush(c);
+
+ while (1) {
+ e = xcb_poll_for_event(c);
+ if (e) {
+ switch (e->response_type &amp; ~0x80) {
+ case XCB_EXPOSE: {
+ char *text;
+
+ text = "Press ESC key to exit...";
+ text_draw (c, screen, window, 10, HEIGHT - 10, text);
+ break;
+ }
+ case XCB_KEY_RELEASE: {
+ xcb_key_release_event_t *ev;
+
+ ev = (xcb_key_release_event_t *)e;
+
+ switch (ev->detail) {
+ /* ESC */
+ case 9:
+ free (e);
+ xcb_disconnect (c);
+ return 0;
+ }
+ }
+ }
+ free (e);
+ }
+ }
+
+ return 0;
+}
+</pre>
+ </ol>
+ <li class="title"><a name="wm">Interacting with the window manager</a>
+ <p>
+ After we have seen how to create windows and draw on them, we
+ take one step back, and look at how our windows are interacting
+ with their environment (the full screen and the other
+ windows). First of all, our application needs to interact with
+ the window manager. The window manager is responsible to
+ decorating drawn windows (i.e. adding a frame, an iconify
+ button, a system menu, a title bar, etc), as well as handling
+ icons shown when windows are being iconified. It also handles
+ ordering of windows on the screen, and other administrative
+ tasks. We need to give it various hints as to how we want it to
+ treat our application's windows.
+ </p>
+ <ol>
+ <li class="subtitle"><a name="wmprop">Window properties</a>
+ <p>
+ Many of the parameters communicated to the window manager are
+ passed using data called "properties". These properties are
+ attached by the X server to different windows, and are stored
+ in a format that makes it possible to read them from different
+ machines that may use different architectures (remember that
+ an X client program may run on a remote machine).
+ </p>
+ <p>
+ The property and its type (a string, an integer, etc) are
+ Id. Their type are <span class="code">xcb_atom_t</span>:
+ </p>
+ <pre class="code">
+typedef uint32_t xcb_atom_t;
+</pre>
+ <p>
+ To change the property of a window, we use the following
+ function:
+ </p>
+ <pre class="code">
+xcb_void_cookie_t xcb_change_property (xcb_connection_t *c, /* Connection to the X server */
+ uint8_t mode, /* Property mode */
+ xcb_window_t window, /* Window */
+ xcb_atom_t property, /* Property to change */
+ xcb_atom_t type, /* Type of the property */
+ uint8_t format, /* Format of the property (8, 16, 32) */
+ uint32_t data_len, /* Length of the data parameter */
+ const void *data); /* Data */
+</pre>
+ <p>
+ The <span class="code">mode</span> parameter coud be one of
+ the following values (defined in enumeration xcb_prop_mode_t in
+ the xproto.h header file):
+ </p>
+ <ul>
+ <li>XCB_PROP_MODE_REPLACE
+ <li>XCB_PROP_MODE_PREPEND
+ <li>XCB_PROP_MODE_APPEND
+ </ul>
+ <br>
+ <li class="subtitle"><a name="wmname">Setting the window name and icon name</a>
+ <p>
+ The first thing we want to do would be to set the name for our
+ window. This is done using the
+ <span class="code">xcb_change_property()</span> function. This
+ name may be used by the window manager as the title of the
+ window (in the title bar), in a task list, etc. The property
+ atom to use to set the name of a window is
+ <span class="code">WM_NAME</span> (and
+ <span class="code">WM_ICON_NAME</span> for the iconified
+ window) and its type is <span class="code">STRING</span>. Here
+ is an example of utilization:
+ </p>
+ <pre class="code">
+#include &lt;string.h&gt;
+
+#include &lt;xcb/xcb.h&gt;
+#include &lt;xcb/xcb_atom.h&gt;
+
+int
+main ()
+{
+ xcb_connection_t *c;
+ xcb_screen_t *screen;
+ xcb_window_t win;
+ char *title = "Hello World !";
+ char *title_icon = "Hello World ! (iconified)";
+
+
+
+ /* Open the connection to the X server */
+ c = xcb_connect (NULL, NULL);
+
+ /* Get the first screen */
+ screen = xcb_setup_roots_iterator (xcb_get_setup (c)).data;
+
+ /* Ask for our window's Id */
+ win = xcb_generate_id (c);
+
+ /* Create the window */
+ xcb_create_window (c, /* Connection */
+ 0, /* depth */
+ win, /* window Id */
+ screen-&gt;root, /* parent window */
+ 0, 0, /* x, y */
+ 250, 150, /* width, height */
+ 10, /* border_width */
+ XCB_WINDOW_CLASS_INPUT_OUTPUT, /* class */
+ screen-&gt;root_visual, /* visual */
+ 0, NULL); /* masks, not used */
+
+ /* Set the title of the window */
+ xcb_change_property (c, XCB_PROP_MODE_REPLACE, win,
+ WM_NAME, STRING, 8,
+ strlen (title), title);
+
+ /* Set the title of the window icon */
+ xcb_change_property (c, XCB_PROP_MODE_REPLACE, win,
+ WM_ICON_NAME, STRING, 8,
+ strlen(title_icon), title_icon);
+
+ /* Map the window on the screen */
+ xcb_map_window (c, win);
+
+ xcb_flush (c);
+
+ while (1) {}
+
+ return 0;
+}
+</pre>
+ <div class="emph">
+ <p>Note: the use of the atoms needs our program to be compiled
+ and linked against xcb_atom, so that we have to use
+ </p>
+ </div>
+ <pre class="text">
+gcc prog.c -o prog `pkg-config --cflags --libs xcb_atom`
+</pre>
+ <div class="emph">
+ <p>
+ for the program to compile fine.
+ </p>
+ </div>
+ </ol>
+ <li class="title"><a name="winop">Simple window operations</a>
+ <p>
+ One more thing we can do to our window is manipulate them on the
+ screen (resize them, move them, raise or lower them, iconify
+ them, and so on). Some window operations functions are supplied
+ by XCB for this purpose.
+ </p>
+ <ol>
+ <li class="subtitle"><a name="winmap">Mapping and un-mapping a window</a>
+ <p>
+ The first pair of operations we can apply on a window is
+ mapping it, or un-mapping it. Mapping a window causes the
+ window to appear on the screen, as we have seen in our simple
+ window program example. Un-mapping it causes it to be removed
+ from the screen (although the window as a logical entity still
+ exists). This gives the effect of making a window hidden
+ (unmapped) and shown again (mapped). For example, if we have a
+ dialog box window in our program, instead of creating it every
+ time the user asks to open it, we can create the window once,
+ in an un-mapped mode, and when the user asks to open it, we
+ simply map the window on the screen. When the user clicked the
+ 'OK' or 'Cancel' button, we simply un-map the window. This is
+ much faster than creating and destroying the window, however,
+ the cost is wasted resources, both on the client side, and on
+ the X server side.
+ </p>
+ <p>
+ To map a window, you use the following function:
+ </p>
+ <pre class="code">
+xcb_void_cookie_t xcb_map_window (xcb_connection_t *c,
+ xcb_window_t window);
+</pre>
+ <p>
+ To have a simple example, see the <a href="#helloworld">example</a>
+ above. The mapping operation will cause an
+ <span class="code">Expose</span> event to be sent to our
+ application, unless the window is completely covered by other
+ windows.
+ </p>
+ <p>
+ Un-mapping a window is also simple. You use the function
+ </p>
+ <pre class="code">
+xcb_void_cookie_t xcb_unmap_window (xcb_connection_t *c,
+ xcb_window_t window);
+</pre>
+ <p>
+ The utilization of this function is the same as
+ <span class="code">xcb_map_window()</span>.
+ </p>
+ <li class="subtitle"><a name="winconf">Configuring a window</a>
+ <p>
+ As we have seen when we have created our first window, in the
+ X Events subsection, we can set some attributes for the window
+ (that is, the position, the size, the events the window will
+ receive, etc). If we want to modify them, but the window is
+ already created, we can change them by using the following
+ function:
+ </p>
+ <pre class="code">
+xcb_void_cookie_t xcb_configure_window (xcb_connection_t *c, /* The connection to the X server*/
+ xcb_window_t window, /* The window to configure */
+ uint16_t value_mask, /* The mask */
+ const uint32_t *value_list); /* The values to set */
+</pre>
+ <p>
+ We set the <span class="code">value_mask</span> to one or
+ several mask values that are in the xcb_config_window_t enumeration in the xproto.h header:
+ </p>
+ <ul>
+ <li><span class="code">XCB_CONFIG_WINDOW_X</span>: new x coordinate of the window's top left corner
+ <li><span class="code">XCB_CONFIG_WINDOW_Y</span>: new y coordinate of the window's top left corner
+ <li><span class="code">XCB_CONFIG_WINDOW_WIDTH</span>: new width of the window
+ <li><span class="code">XCB_CONFIG_WINDOW_HEIGHT</span>: new height of the window
+ <li><span class="code">XCB_CONFIG_WINDOW_BORDER_WIDTH</span>: new width of the border of the window
+ <li><span class="code">XCB_CONFIG_WINDOW_SIBLING</span>
+ <li><span class="code">XCB_CONFIG_WINDOW_STACK_MODE</span>: the new stacking order
+ </ul>
+ <p>
+ We then give to <span class="code">value_mask</span> the new
+ value. We now describe how to use
+ <span class="code">xcb_configure_window_t</span> in some useful
+ situations.
+ </p>
+ <li class="subtitle"><a name="winmove">Moving a window around the screen</a>
+ <p>
+ An operation we might want to do with windows is to move them
+ to a different location. This can be done like this:
+ </p>
+ <pre class="code">
+const static uint32_t values[] = { 10, 20 };
+
+/* The connection c and the window win are supposed to be defined */
+
+/* Move the window to coordinates x = 10 and y = 20 */
+xcb_configure_window (c, win, XCB_CONFIG_WINDOW_X | XCB_CONFIG_WINDOW_Y, values);
+</pre>
+ <p>
+ Note that when the window is moved, it might get partially
+ exposed or partially hidden by other windows, and thus we
+ might get <span class="code">Expose</span> events due to this
+ operation.
+ </p>
+ <li class="subtitle"><a name="winsize">Resizing a window</a>
+ <p>
+ Yet another operation we can do is to change the size of a
+ window. This is done using the following code:
+ </p>
+ <pre class="code">
+const static uint32_t values[] = { 200, 300 };
+
+/* The connection c and the window win are supposed to be defined */
+
+/* Resize the window to width = 10 and height = 20 */
+xcb_configure_window (c, win, XCB_CONFIG_WINDOW_WIDTH | XCB_CONFIG_WINDOW_HEIGHT, values);
+</pre>
+ <p>
+ We can also combine the move and resize operations using one
+ single call to <span class="code">xcb_configure_window_t</span>:
+ </p>
+ <pre class="code">
+const static uint32_t values[] = { 10, 20, 200, 300 };
+
+/* The connection c and the window win are supposed to be defined */
+
+/* Move the window to coordinates x = 10 and y = 20 */
+/* and resize the window to width = 10 and height = 20 */
+xcb_configure_window (c, win, XCB_CONFIG_WINDOW_X | XCB_CONFIG_WINDOW_Y | XCB_CONFIG_WINDOW_WIDTH | XCB_CONFIG_WINDOW_HEIGHT, values);
+</pre>
+ <li class="subtitle"><a name="winstack">Changing windows stacking order: raise and lower</a>
+ <p>
+ Until now, we changed properties of a single window. We'll see
+ that there are properties that relate to the window and other
+ windows. One of them is the stacking order. That is, the order
+ in which the windows are layered on top of each other. The
+ front-most window is said to be on the top of the stack, while
+ the back-most window is at the bottom of the stack. Here is
+ how to manipulate our windows stack order:
+ </p>
+ <pre class="code">
+const static uint32_t values[] = { XCB_STACK_MODE_ABOVE };
+
+/* The connection c and the window win are supposed to be defined */
+
+/* Move the window on the top of the stack */
+xcb_configure_window (c, win, XCB_CONFIG_WINDOW_STACK_MODE, values);
+</pre>
+ <pre class="code">
+const static uint32_t values[] = { XCB_STACK_MODE_BELOW };
+
+/* The connection c and the window win are supposed to be defined */
+
+/* Move the window on the bottom of the stack */
+xcb_configure_window (c, win, XCB_CONFIG_WINDOW_STACK_MODE, values);
+</pre>
+ <li class="subtitle"><a name="wingetinfo">Getting information about a window</a>
+ <p>
+ Just like we can set various attributes of our windows, we can
+ also ask the X server supply the current values of these
+ attributes. For example, we can check where a window is
+ located on the screen, what is its current size, whether it is
+ mapped or not, etc. The structure that contains some of this
+ information is
+ </p>
+ <pre class="code">
+typedef struct {
+ uint8_t response_type;
+ uint8_t depth; /* depth of the window */
+ uint16_t sequence;
+ uint32_t length;
+ xcb_window_t root; /* Id of the root window *>
+ int16_t x; /* X coordinate of the window's location */
+ int16_t y; /* Y coordinate of the window's location */
+ uint16_t width; /* Width of the window */
+ uint16_t height; /* Height of the window */
+ uint16_t border_width; /* Width of the window's border */
+} xcb_get_geometry_reply_t;
+</pre>
+ <p>
+ XCB fill this structure with two functions:
+ </p>
+ <pre class="code">
+xcb_get_geometry_cookie_t xcb_get_geometry (xcb_connection_t *c,
+ xcb_drawable_t drawable);
+xcb_get_geometry_reply_t *xcb_get_geometry_reply (xcb_connection_t *c,
+ xcb_get_geometry_cookie_t cookie,
+ xcb_generic_error_t **e);
+</pre>
+ <p>
+ You use them as follows:
+ </p>
+ <pre class="code">
+ xcb_connection_t *c;
+ xcb_drawable_t win;
+ xcb_get_geometry_reply_t *geom;
+
+ /* You initialize c and win */
+
+ geom = xcb_get_geometry_reply (c, xcb_get_geometry (c, win), NULL);
+
+ /* Do something with the fields of geom */
+
+ free (geom);
+</pre>
+ <p>
+ Remark that you have to free the structure, as
+ <span class="code">xcb_get_geometry_reply_t</span> allocates a
+ newly one.
+ </p>
+ <p>
+ One problem is that the returned location of the window is
+ relative to its parent window. This makes these coordinates
+ rather useless for any window manipulation functions, like
+ moving it on the screen. In order to overcome this problem, we
+ need to take a two-step operation. First, we find out the Id
+ of the parent window of our window. We then translate the
+ above relative coordinates to the screen coordinates.
+ </p>
+ <p>
+ To get the Id of the parent window, we need this structure:
+ </p>
+ <pre class="code">
+typedef struct {
+ uint8_t response_type;
+ uint8_t pad0;
+ uint16_t sequence;
+ uint32_t length;
+ xcb_window_t root;
+ xcb_window_t parent; /* Id of the parent window */
+ uint16_t children_len;
+ uint8_t pad1[14];
+} xcb_query_tree_reply_t;
+</pre>
+ <p>
+ To fill this structure, we use these two functions:
+ </p>
+ <pre class="code">
+xcb_query_tree_cookie_t xcb_query_tree (xcb_connection_t *c,
+ xcb_window_t window);
+xcb_query_tree_reply_t *xcb_query_tree_reply (xcb_connection_t *c,
+ xcb_query_tree_cookie_t cookie,
+ xcb_generic_error_t **e);
+</pre>
+ <p>
+ The translated coordinates will be found in this structure:
+ </p>
+ <pre class="code">
+typedef struct {
+ uint8_t response_type;
+ uint8_t same_screen;
+ uint16_t sequence;
+ uint32_t length;
+ xcb_window_t child;
+ uint16_t dst_x; /* Translated x coordinate */
+ uint16_t dst_y; /* Translated y coordinate */
+} xcb_translate_coordinates_reply_t;
+</pre>
+ <p>
+ As usual, we need two functions to fill this structure:
+ </p>
+ <pre class="code">
+xcb_translate_coordinates_cookie_t xcb_translate_coordinates (xcb_connection_t *c,
+ xcb_window_t src_window,
+ xcb_window_t dst_window,
+ int16_t src_x,
+ int16_t src_y);
+xcb_translate_coordinates_reply_t *xcb_translate_coordinates_reply (xcb_connection_t *c,
+ xcb_translate_coordinates_cookie_t cookie,
+ xcb_generic_error_t **e);
+</pre>
+ <p>
+ We use them as follows:
+ </p>
+ <pre class="code">
+ xcb_connection_t *c;
+ xcb_drawable_t win;
+ xcb_get_geometry_reply_t *geom;
+ xcb_query_tree_reply_t *tree;
+ xcb_translate_coordinates_reply_t *trans;
+
+ /* You initialize c and win */
+
+ geom = xcb_get_geometry_reply (c, xcb_get_geometry (c, win), NULL);
+ if (!geom)
+ return 0;
+
+ tree = xcb_query_tree_reply (c, xcb_query_tree (c, win), NULL);
+ if (!tree)
+ return 0;
+
+ trans = xcb_translate_coordinates_reply (c,
+ xcb_translate_coordinates (c,
+ win,
+ tree-&gt;parent,
+ geom-&gt;x, geom-&gt;y),
+ NULL);
+ if (!trans)
+ return 0;
+
+ /* the translated coordinates are in trans-&gt;dst_x and trans-&gt;dst_y */
+
+ free (trans);
+ free (tree);
+ free (geom);
+</pre>
+ <p>
+ Of course, as for <span class="code">geom</span>,
+ <span class="code">tree</span> and
+ <span class="code">trans</span> have to be freed.
+ </p>
+ <p>
+ The work is a bit hard, but XCB is a very low-level library.
+ </p>
+ <p>
+ <b>TODO:</b> the utilization of these functions should be a
+ prog, which displays the coordinates of the window.
+ </p>
+ <p>
+ There is another structure that gives informations about our window:
+ </p>
+ <pre class="code">
+typedef struct {
+ uint8_t response_type;
+ uint8_t backing_store;
+ uint16_t sequence;
+ uint32_t length;
+ xcb_visualid_t visual; /* Visual of the window */
+ uint16_t _class;
+ uint8_t bit_gravity;
+ uint8_t win_gravity;
+ uint32_t backing_planes;
+ uint32_t backing_pixel;
+ uint8_t save_under;
+ uint8_t map_is_installed;
+ uint8_t map_state; /* Map state of the window */
+ uint8_t override_redirect;
+ xcb_colormap_t colormap; /* Colormap of the window */
+ uint32_t all_event_masks;
+ uint32_t your_event_mask;
+ uint16_t do_not_propagate_mask;
+} xcb_get_window_attributes_reply_t;
+</pre>
+ <p>
+ XCB supplies these two functions to fill it:
+ </p>
+ <pre class="code">
+xcb_get_window_attributes_cookie_t xcb_get_window_attributes (xcb_connection_t *c,
+ xcb_window_t window);
+xcb_get_window_attributes_reply_t *xcb_get_window_attributes_reply (xcb_connection_t *c,
+ xcb_get_window_attributes_cookie_t cookie,
+ xcb_generic_error_t **e);
+</pre>
+ <p>
+ You use them as follows:
+ </p>
+ <pre class="code">
+ xcb_connection_t *c;
+ xcb_drawable_t win;
+ xcb_get_window_attributes_reply_t *attr;
+
+ /* You initialize c and win */
+
+ attr = xcb_get_window_attributes_reply (c, xcb_get_window_attributes (c, win), NULL);
+
+ if (!attr)
+ return 0;
+
+ /* Do something with the fields of attr */
+
+ free (attr);
+</pre>
+ <p>
+ As for <span class="code">geom</span>,
+ <span class="code">attr</span> has to be freed.
+ </p>
+ </ol>
+ <li class="title"><a name="usecolor">Using colors to paint the rainbow</a>
+ <p>
+ Up until now, all our painting operation were done using black
+ and white. We will (finally) see now how to draw using colors.
+ </p>
+ <ol>
+ <li class="subtitle"><a name="colormap">Color maps</a>
+ <p>
+ In the beginning, there were not enough colors. Screen
+ controllers could only support a limited number of colors
+ simultaneously (initially 2, then 4, 16 and 256). Because of
+ this, an application could not just ask to draw in a "light
+ purple-red" color, and expect that color to be available. Each
+ application allocated the colors it needed, and when all the
+ color entries (4, 16, 256 colors) were in use, the next color
+ allocation would fail.
+ </p>
+ <p>
+ Thus, the notion of "a color map" was introduced. A color map
+ is a table whose size is the same as the number of
+ simultaneous colors a given screen controller. Each entry
+ contained the RGB (Red, Green and Blue) values of a different
+ color (all colors can be drawn using some combination of red,
+ green and blue). When an application wants to draw on the
+ screen, it does not specify which color to use. Rather, it
+ specifies which color entry of some color map to be used
+ during this drawing. Change the value in this color map entry
+ and the drawing will use a different color.
+ </p>
+ <p>
+ In order to be able to draw using colors that got something to
+ do with what the programmer intended, color map allocation
+ functions are supplied. You could ask to allocate entry for a
+ color with a set of RGB values. If one already existed, you
+ would get its index in the table. If none existed, and the
+ table was not full, a new cell would be allocated to contain
+ the given RGB values, and its index returned. If the table was
+ full, the procedure would fail. You could then ask to get a
+ color map entry with a color that is closest to the one you
+ were asking for. This would mean that the actual drawing on
+ the screen would be done using colors similar to what you
+ wanted, but not the same.
+ </p>
+ <p>
+ On today's more modern screens where one runs an X server with
+ support for 16 million colors, this limitation looks a little
+ silly, but remember that there are still older computers with
+ older graphics cards out there. Using color map, support for
+ these screen becomes transparent to you. On a display
+ supporting 16 million colors, any color entry allocation
+ request would succeed. On a display supporting a limited
+ number of colors, some color allocation requests would return
+ similar colors. It won't look as good, but your application
+ would still work.
+ </p>
+ <li class="subtitle"><a name="colormapalloc">Allocating and freeing Color Maps</a>
+ <p>
+ When you draw using XCB, you can choose to use the standard
+ color map of the screen your window is displayed on, or you
+ can allocate a new color map and apply it to a window. In the
+ latter case, each time the mouse moves onto your window, the
+ screen color map will be replaced by your window's color map,
+ and you'll see all the other windows on screen change their
+ colors into something quite bizzare. In fact, this is the
+ effect you get with X applications that use the "-install"
+ command line option.
+ </p>
+ <p>
+ In XCB, a color map is (as often in X) an Id:
+ </p>
+ <pre class="code">
+typedef uint32_t xcb_colormap_t;
+</pre>
+ <p>
+ In order to access the screen's default color map, you just
+ have to retrieve the <span class="code">default_colormap</span>
+ field of the <span class="code">xcb_screen_t</span> structure
+ (see Section
+ <a href="#screen">Checking basic information about a connection</a>):
+ </p>
+ <pre class="code">
+#include &lt;stdio.h&gt;
+
+#include &lt;xcb/xcb.h&gt;
+
+int
+main ()
+{
+ xcb_connection_t *c;
+ xcb_screen_t *screen;
+ xcb_colormap_t colormap;
+
+ /* Open the connection to the X server and get the first screen */
+ c = xcb_connect (NULL, NULL);
+ screen = xcb_setup_roots_iterator (xcb_get_setup (c)).data;
+
+ colormap = screen-&gt;default_colormap;
+
+ return 0;
+}
+</pre>
+ <p>
+ This will return the color map used by default on the first
+ screen (again, remember that an X server may support several
+ different screens, each of which might have its own resources).
+ </p>
+ <p>
+ The other option, that of allocating a new colormap, works as
+ follows. We first ask the X server to give an Id to our color
+ map, with this function:
+ </p>
+ <pre class="code">
+xcb_colormap_t xcb_generate_id (xcb_connection_t *c);
+</pre>
+ <p>
+ Then, we create the color map with
+ </p>
+ <pre class="code">
+xcb_void_cookie_t xcb_create_colormap (xcb_connection_t *c, /* Pointer to the xcb_connection_t structure */
+ uint8_t alloc, /* Colormap entries to be allocated (AllocNone or AllocAll) */
+ xcb_colormap_t mid, /* Id of the color map */
+ xcb_window_t window, /* Window on whose screen the colormap will be created */
+ xcb_visualid_t visual); /* Id of the visual supported by the screen */
+</pre>
+ <p>
+ Here is an example of creation of a new color map:
+ </p>
+ <pre class="code">
+#include &lt;xcb/xcb.h&gt;
+
+int
+main ()
+{
+ xcb_connection_t *c;
+ xcb_screen_t *screen;
+ xcb_window_t win;
+ xcb_colormap_t cmap
+
+ /* Open the connection to the X server and get the first screen */
+ c = xcb_connect (NULL, NULL);
+ screen = xcb_setup_roots_iterator (xcb_get_setup (c)).data;
+
+ /* We create the window win here*/
+
+ cmap = xcb_generate_id (c);
+ xcb_create_colormap (c, XCB_COLORMAP_ALLOC_NONE, cmap, win, screen-&gt;root_visual);
+
+ return 0;
+}
+</pre>
+ <p>
+ Note that the window parameter is only used to allow the X
+ server to create the color map for the given screen. We can
+ then use this color map for any window drawn on the same screen.
+ </p>
+ <p>
+ To free a color map, it suffices to use this function:
+ </p>
+ <pre class="code">
+xcb_void_cookie_t xcb_free_colormap (xcb_connection_t *c, /* The connection */
+ xcb_colormap_t cmap); /* The color map */
+</pre>
+ <div class="comp">
+ <div class="title">
+ Comparison Xlib/XCB
+ </div>
+ <div class="xlib">
+ <ul>
+ <li>XCreateColormap ()
+ </ul>
+ </div>
+ <div class="xcb">
+ <ul>
+ <li>xcb_generate_id ()
+ <li>xcb_create_colormap ()
+ </ul>
+ </div>
+ <div class="xlib">
+ <ul>
+ <li>XFreeColormap ()
+ </ul>
+ </div>
+ <div class="xcb">
+ <ul>
+ <li>xcb_free_colormap ()
+ </ul>
+ </div>
+ </div>
+ <br>
+ <li class="subtitle"><a name="alloccolor">Allocating and freeing a color entry</a>
+ <p>
+ Once we got access to some color map, we can start allocating
+ colors. The informations related to a color are stored in the
+ following structure:
+ </p>
+ <pre class="code">
+typedef struct {
+ uint8_t response_type;
+ uint8_t pad0;
+ uint16_t sequence;
+ uint32_t length;
+ uint16_t red; /* The red component */
+ uint16_t green; /* The green component */
+ uint16_t blue; /* The blue component */
+ uint8_t pad1[2];
+ uint32_t pixel; /* The entry in the color map, supplied by the X server */
+} xcb_alloc_color_reply_t;
+</pre>
+ <p>
+ XCB supplies these two functions to fill it:
+ </p>
+ <pre class="code">
+xcb_alloc_color_cookie_t xcb_alloc_color (xcb_connection_t *c,
+ xcb_colormap_t cmap,
+ uint16_t red,
+ uint16_t green,
+ uint16_t blue);
+xcb_alloc_color_reply_t *xcb_alloc_color_reply (xcb_connection_t *c,
+ xcb_alloc_color_cookie_t cookie,
+ xcb_generic_error_t **e);
+</pre>
+ <p>
+ The fuction <span class="code">xcb_alloc_color()</span> takes the
+ 3 RGB components as parameters (red, green and blue). Here is an
+ example of using these functions:
+ </p>
+ <pre class="code">
+#include &lt;malloc.h&gt;
+
+#include &lt;xcb/xcb.h&gt;
+
+int
+main ()
+{
+ xcb_connection_t *c;
+ xcb_screen_t *screen;
+ xcb_window_t win;
+ xcb_colormap_t cmap;
+ xcb_alloc_color_reply_t *rep;
+
+ /* Open the connection to the X server and get the first screen */
+ c = xcb_connect (NULL, NULL);
+ screen = xcb_setup_roots_iterator (xcb_get_setup (c)).data;
+
+ /* We create the window win here*/
+
+ cmap = xcb_generate_id (c);
+ xcb_create_colormap (c, XCB_COLORMAP_ALLOC_NONE, cmap, win, screen-&gt;root_visual);
+
+ rep = xcb_alloc_color_reply (c, xcb_alloc_color (c, cmap, 65535, 0, 0), NULL);
+
+ if (!rep)
+ return 0;
+
+ /* Do something with r-&gt;pixel or the components */
+
+ free (rep);
+
+ return 0;
+}
+</pre>
+ <p>
+ As <span class="code">xcb_alloc_color_reply()</span> allocates
+ memory, you have to free <span class="code">rep</span>.
+ </p>
+ <p>
+ <b>TODO</b>: Talk about freeing colors.
+ </p>
+ </ol>
+ <li class="title"><a name="pixmaps">X Bitmaps and Pixmaps</a>
+ <p>
+ One thing many so-called "Multi-Media" applications need to do,
+ is display images. In the X world, this is done using bitmaps
+ and pixmaps. We have already seen some usage of them when
+ setting an icon for our application. Lets study them further,
+ and see how to draw these images inside a window, along side the
+ simple graphics and text we have seen so far.
+ </p>
+ <p>
+ One thing to note before delving further, is that XCB (nor Xlib)
+ supplies no means of manipulating popular image formats, such as
+ gif, png, jpeg or tiff. It is up to the programmer (or to higher
+ level graphics libraries) to translate these image formats into
+ formats that the X server is familiar with (x bitmaps and x
+ pixmaps).
+ </p>
+ <ol>
+ <li class="subtitle"><a name="pixmapswhat">What is a X Bitmap? An X Pixmap?</a>
+ <p>
+ An X bitmap is a two-color image stored in a format specific
+ to the X window system. When stored in a file, the bitmap data
+ looks like a C source file. It contains variables defining the
+ width and the height of the bitmap, an array containing the
+ bit values of the bitmap (the size of the array is
+ (width+7)/8*height and the bit and byte order are LSB), and
+ an optional hot-spot location (that will
+ be explained later, when discussing mouse cursors).
+ </p>
+ <p>
+ An X pixmap is a format used to stored images in the memory of
+ an X server. This format can store both black and white images
+ (such as x bitmaps) as well as color images. It is the only
+ image format supported by the X protocol, and any image to be
+ drawn on screen, should be first translated into this format.
+ </p>
+ <p>
+ In actuality, an X pixmap can be thought of as a window that
+ does not appear on the screen. Many graphics operations that
+ work on windows, will also work on pixmaps. Indeed, the type
+ of X pixmap in XCB is an Id like a window:
+ </p>
+ <pre class="code">
+typedef uint32_t xcb_pixmap_t;
+</pre>
+ <p>
+ Like Xlib, there is no difference between a Drawable, a Window
+ or a Pixmap:
+ </p>
+ <pre class="code">
+typedef uint32_t xcb_drawable_t;
+</pre>
+ <p>
+ in order to avoid confusion between a window and a pixmap. The
+ operations that will work the same on a window or a pixmap
+ will require a <span class="code">xcb_drawable_t</span>
+ </p>
+ <div class="emph">
+ <p>
+ Remark: In Xlib, there is no specific difference between a
+ <span class="code">Drawable</span>, a
+ <span class="code">Pixmap</span> or a
+ <span class="code">Window</span>: all are 32 bit long
+ integer. XCB wraps all these different IDs in structures to
+ provide some measure of type-safety.
+ </p>
+ </div>
+ <li class="subtitle"><a name="pixmapscreate">Creating a pixmap</a>
+ <p>
+ Sometimes we want to create an un-initialized pixmap, so we
+ can later draw into it. This is useful for image drawing
+ programs (creating a new empty canvas will cause the creation
+ of a new pixmap on which the drawing can be stored). It is
+ also useful when reading various image formats: we load the
+ image data into memory, create a pixmap on the server, and
+ then draw the decoded image data onto that pixmap.
+ </p>
+ <p>
+ To create a new pixmap, we first ask the X server to give an
+ Id to our pixmap, with this function:
+ </p>
+ <pre class="code">
+xcb_pixmap_t xcb_generate_id (xcb_connection_t *c);
+</pre>
+ <p>
+ Then, XCB supplies the following function to create new pixmaps:
+ </p>
+ <pre class="code">
+xcb_void_cookie_t xcb_create_pixmap (xcb_connection_t *c, /* Pointer to the xcb_connection_t structure */
+ uint8_t depth, /* Depth of the screen */
+ xcb_pixmap_t pid, /* Id of the pixmap */
+ xcb_drawable_t drawable,
+ uint16_t width, /* Width of the window (in pixels) */
+ uint16_t height); /* Height of the window (in pixels) */
+</pre>
+ <p>
+ <b>TODO</b>: Explain the drawable parameter, and give an
+ example (like <a href="xpoints.c">xpoints.c</a>)
+ </p>
+ <li class="subtitle"><a name="pixmapsdraw"></a>Drawing a pixmap in a window
+ <p>
+ Once we got a handle to a pixmap, we can draw it on some
+ window, using the following function:
+ </p>
+ <pre class="code">
+xcb_void_cookie_t xcb_copy_area (xcb_connection_t *c, /* Pointer to the xcb_connection_t structure */
+ xcb_drawable_t src_drawable, /* The Drawable we want to paste */
+ xcb_drawable_t dst_drawable, /* The Drawable on which we copy the previous Drawable */
+ xcb_gcontext_t gc, /* A Graphic Context */
+ int16_t src_x, /* Top left x coordinate of the region we want to copy */
+ int16_t src_y, /* Top left y coordinate of the region we want to copy */
+ int16_t dst_x, /* Top left x coordinate of the region where we want to copy */
+ int16_t dst_y, /* Top left y coordinate of the region where we want to copy */
+ uint16_t width, /* Width of the region we want to copy */
+ uint16_t height); /* Height of the region we want to copy */
+</pre>
+ <p>
+ As you can see, we could copy the whole pixmap, as well as
+ only a given rectangle of the pixmap. This is useful to
+ optimize the drawing speed: we could copy only what we have
+ modified in the pixmap.
+ </p>
+ <p>
+ <b>One important note should be made</b>: it is possible to
+ create pixmaps with different depths on the same screen. When
+ we perform copy operations (a pixmap onto a window, etc), we
+ should make sure that both source and target have the same
+ depth. If they have a different depth, the operation would
+ fail. The exception to this is if we copy a specific bit plane
+ of the source pixmap using the
+ <span class="code">xcb_copy_plane_t</span> function. In such an
+ event, we can copy a specific plane to the target window (in
+ actuality, setting a specific bit in the color of each pixel
+ copied). This can be used to generate strange graphic effects
+ in a window, but that is beyond the scope of this tutorial.
+ </p>
+ <li class="subtitle"><a name="pixmapsfree"></a>Freeing a pixmap
+ <p>
+ Finally, when we are done using a given pixmap, we should free
+ it, in order to free resources of the X server. This is done
+ using this function:
+ </p>
+ <pre class="code">
+xcb_void_cookie_t xcb_free_pixmap (xcb_connection_t *c, /* Pointer to the xcb_connection_t structure */
+ xcb_pixmap_t pixmap); /* A given pixmap */
+</pre>
+ <p>
+ Of course, after having freed it, we must not try accessing
+ the pixmap again.
+ </p>
+ <p>
+ <b>TODO</b>: Give an example, or a link to xpoints.c
+ </p>
+ </ol>
+ <li class="title"><a name="mousecursor">Messing with the mouse cursor</a>
+ <p>
+ It it possible to modify the shape of the mouse pointer (also
+ called the X pointer) when in certain states, as we otfen see in
+ programs. For example, a busy application would often display
+ the sand clock over its main window, to give the user a visual
+ hint that he should wait. Let's see how we can change the mouse
+ cursor of our windows.
+ </p>
+ <ol>
+ <li class="subtitle"><a name="mousecursorcreate">Creating and destroying a mouse cursor</a>
+ <p>
+ There are two methods for creating cursors. One of them is by
+ using a set of predefined cursors, that are supplied by the X
+ server, the other is by using a user-supplied bitmap.
+ </p>
+ <p>
+ In the first method, we use a special font named "cursor", and
+ the function <span class="code">xcb_create_glyph_cursor</span>:
+ </p>
+ <pre class="code">
+xcb_void_cookie_t xcb_create_glyph_cursor (xcb_connection_t *c,
+ xcb_cursor_t cid,
+ xcb_font_t source_font, /* font for the source glyph */
+ xcb_font_t mask_font, /* font for the mask glyph or XCB_NONE */
+ uint16_t source_char, /* character glyph for the source */
+ uint16_t mask_char, /* character glyph for the mask */
+ uint16_t fore_red, /* red value for the foreground of the source */
+ uint16_t fore_green, /* green value for the foreground of the source */
+ uint16_t fore_blue, /* blue value for the foreground of the source */
+ uint16_t back_red, /* red value for the background of the source */
+ uint16_t back_green, /* green value for the background of the source */
+ uint16_t back_blue) /* blue value for the background of the source */
+</pre>
+ <p>
+ <b>TODO</b>: Describe <span class="code">source_char</span>
+ and <span class="code">mask_char</span>, for example by giving
+ an example on how to get the values. There is a list there:
+ <a href="http://tronche.com/gui/x/xlib/appendix/b/">X Font Cursors</a>
+ </p>
+ <p>
+ So we first open that font (see <a href="#loadfont">Loading a Font</a>)
+ and create the new cursor. As for every X ressource, we have to
+ ask for an X id with <span class="code">xcb_generate_id</span>
+ first:
+ </p>
+ <pre class="code">
+xcb_font_t font;
+xcb_cursor_t cursor;
+
+/* The connection is set */
+
+font = xcb_generate_id (conn);
+xcb_open_font (conn, font, strlen ("cursor"), "cursor");
+
+cursor = xcb_generate_id (conn);
+xcb_create_glyph_cursor (conn, cursor, font, font,
+ 58, 58 + 1,
+ 0, 0, 0,
+ 0, 0, 0);
+</pre>
+ <p>
+ We have created the cursor "right hand" by specifying 58 to
+ the <span class="code">source_fon</span>t argument and 58 + 1
+ to the <span class="code">mask_font</span>.
+ </p>
+ <p>
+ The cursor is destroyed by using the function
+ </p>
+ <pre class="code">
+xcb_void_cookie_t xcb_free_cursor (xcb_connection_t *c,
+ xcb_cursor_t cursor);
+</pre>
+ <p>
+ In the second method, we create a new cursor by using a pair
+ of pixmaps, with depth of one (that is, two colors
+ pixmaps). One pixmap defines the shape of the cursor, while
+ the other works as a mask, specifying which pixels of the
+ cursor will be actually drawn. The rest of the pixels will be
+ transparent.
+ </p>
+ <p>
+ <b>TODO</b>: give an example.
+ </p>
+ <li class="subtitle"><a name="mousecursorset">Setting a window's mouse cursor</a>
+ <p>
+ Once the cursor is created, we can modify the cursor of our
+ window by using <span class="code">xcb_change_window_attributes</span>
+ and using the <span class="code">XCB_CWCURSOR</span> attribute:
+ </p>
+ <pre class="code">
+uint32_t mask;
+uint32_t value_list;
+
+/* The connection and window are set */
+/* The cursor is already created */
+
+mask = XCB_CWCURSOR;
+value_list = cursor;
+xcb_change_window_attributes (conn, window, mask, &amp;value_list);
+</pre>
+ <p>
+ Of course, the cursor and the font must be freed.
+ </p>
+ <li class="subtitle"><a name="mousecursorexample">Complete example</a>
+ <p>
+ The following example displays a window with a
+ button. When entering the window, the window cursor is changed
+ to an arrow. When clicking once on the button, the cursor is
+ changed to a hand. When clicking again on the button, the
+ cursor window gets back to the arrow. The Esc key exits the
+ application.
+ </p>
+ <pre class="code">
+#include &lt;stdlib.h&gt;
+#include &lt;stdio.h&gt;
+#include &lt;string.h&gt;
+
+#include &lt;xcb/xcb.h&gt;
+
+#define WIDTH 300
+#define HEIGHT 150
+
+
+
+static xcb_gc_t gc_font_get (xcb_connection_t *c,
+ xcb_screen_t *screen,
+ xcb_window_t window,
+ const char *font_name);
+
+static void button_draw (xcb_connection_t *c,
+ xcb_screen_t *screen,
+ xcb_window_t window,
+ int16_t x1,
+ int16_t y1,
+ const char *label);
+
+static void text_draw (xcb_connection_t *c,
+ xcb_screen_t *screen,
+ xcb_window_t window,
+ int16_t x1,
+ int16_t y1,
+ const char *label);
+
+static void cursor_set (xcb_connection_t *c,
+ xcb_screen_t *screen,
+ xcb_window_t window,
+ int cursor_id);
+
+
+static void
+button_draw (xcb_connection_t *c,
+ xcb_screen_t *screen,
+ xcb_window_t window,
+ int16_t x1,
+ int16_t y1,
+ const char *label)
+{
+ xcb_point_t points[5];
+ xcb_void_cookie_t cookie_gc;
+ xcb_void_cookie_t cookie_line;
+ xcb_void_cookie_t cookie_text;
+ xcb_generic_error_t *error;
+ xcb_gcontext_t gc;
+ int16_t width;
+ int16_t height;
+ uint8_t length;
+ int16_t inset;
+
+ length = strlen (label);
+ inset = 2;
+
+ gc = gc_font_get(c, screen, window, "7x13");
+
+ width = 7 * length + 2 * (inset + 1);
+ height = 13 + 2 * (inset + 1);
+ points[0].x = x1;
+ points[0].y = y1;
+ points[1].x = x1 + width;
+ points[1].y = y1;
+ points[2].x = x1 + width;
+ points[2].y = y1 - height;
+ points[3].x = x1;
+ points[3].y = y1 - height;
+ points[4].x = x1;
+ points[4].y = y1;
+ cookie_line = xcb_poly_line_checked (c, XCB_COORD_MODE_ORIGIN,
+ window, gc, 5, points);
+
+ error = xcb_request_check (c, cookie_line);
+ if (error) {
+ fprintf (stderr, "ERROR: can't draw lines : %d\n", error->error_code);
+ xcb_disconnect (c);
+ exit (-1);
+ }
+
+ cookie_text = xcb_image_text_8_checked (c, length, window, gc,
+ x1 + inset + 1,
+ y1 - inset - 1, label);
+ error = xcb_request_check (c, cookie_text);
+ if (error) {
+ fprintf (stderr, "ERROR: can't paste text : %d\n", error->error_code);
+ xcb_disconnect (c);
+ exit (-1);
+ }
+
+ cookie_gc = xcb_free_gc (c, gc);
+ error = xcb_request_check (c, cookie_gc);
+ if (error) {
+ fprintf (stderr, "ERROR: can't free gc : %d\n", error->error_code);
+ xcb_disconnect (c);
+ exit (-1);
+ }
+}
+
+static void
+text_draw (xcb_connection_t *c,
+ xcb_screen_t *screen,
+ xcb_window_t window,
+ int16_t x1,
+ int16_t y1,
+ const char *label)
+{
+ xcb_void_cookie_t cookie_gc;
+ xcb_void_cookie_t cookie_text;
+ xcb_generic_error_t *error;
+ xcb_gcontext_t gc;
+ uint8_t length;
+
+ length = strlen (label);
+
+ gc = gc_font_get(c, screen, window, "7x13");
+
+ cookie_text = xcb_image_text_8_checked (c, length, window, gc,
+ x1,
+ y1, label);
+ error = xcb_request_check (c, cookie_text);
+ if (error) {
+ fprintf (stderr, "ERROR: can't paste text : %d\n", error->error_code);
+ xcb_disconnect (c);
+ exit (-1);
+ }
+
+ cookie_gc = xcb_free_gc (c, gc);
+ error = xcb_request_check (c, cookie_gc);
+ if (error) {
+ fprintf (stderr, "ERROR: can't free gc : %d\n", error->error_code);
+ xcb_disconnect (c);
+ exit (-1);
+ }
+}
+
+static xcb_gc_t
+gc_font_get (xcb_connection_t *c,
+ xcb_screen_t *screen,
+ xcb_window_t window,
+ const char *font_name)
+{
+ uint32_t value_list[3];
+ xcb_void_cookie_t cookie_font;
+ xcb_void_cookie_t cookie_gc;
+ xcb_generic_error_t *error;
+ xcb_font_t font;
+ xcb_gcontext_t gc;
+ uint32_t mask;
+
+ font = xcb_generate_id (c);
+ cookie_font = xcb_open_font_checked (c, font,
+ strlen (font_name),
+ font_name);
+
+ error = xcb_request_check (c, cookie_font);
+ if (error) {
+ fprintf (stderr, "ERROR: can't open font : %d\n", error->error_code);
+ xcb_disconnect (c);
+ return -1;
+ }
+
+ gc = xcb_generate_id (c);
+ mask = XCB_GC_FOREGROUND | XCB_GC_BACKGROUND | XCB_GC_FONT;
+ value_list[0] = screen->black_pixel;
+ value_list[1] = screen->white_pixel;
+ value_list[2] = font;
+ cookie_gc = xcb_create_gc_checked (c, gc, window, mask, value_list);
+ error = xcb_request_check (c, cookie_gc);
+ if (error) {
+ fprintf (stderr, "ERROR: can't create gc : %d\n", error->error_code);
+ xcb_disconnect (c);
+ exit (-1);
+ }
+
+ cookie_font = xcb_close_font_checked (c, font);
+ error = xcb_request_check (c, cookie_font);
+ if (error) {
+ fprintf (stderr, "ERROR: can't close font : %d\n", error->error_code);
+ xcb_disconnect (c);
+ exit (-1);
+ }
+
+ return gc;
+}
+
+static void
+cursor_set (xcb_connection_t *c,
+ xcb_screen_t *screen,
+ xcb_window_t window,
+ int cursor_id)
+{
+ uint32_t values_list[3];
+ xcb_void_cookie_t cookie_font;
+ xcb_void_cookie_t cookie_gc;
+ xcb_generic_error_t *error;
+ xcb_font_t font;
+ xcb_cursor_t cursor;
+ xcb_gcontext_t gc;
+ uint32_t mask;
+ uint32_t value_list;
+
+ font = xcb_generate_id (c);
+ cookie_font = xcb_open_font_checked (c, font,
+ strlen ("cursor"),
+ "cursor");
+ error = xcb_request_check (c, cookie_font);
+ if (error) {
+ fprintf (stderr, "ERROR: can't open font : %d\n", error->error_code);
+ xcb_disconnect (c);
+ exit (-1);
+ }
+
+ cursor = xcb_generate_id (c);
+ xcb_create_glyph_cursor (c, cursor, font, font,
+ cursor_id, cursor_id + 1,
+ 0, 0, 0,
+ 0, 0, 0);
+
+ gc = xcb_generate_id (c);
+ mask = XCB_GC_FOREGROUND | XCB_GC_BACKGROUND | XCB_GC_FONT;
+ values_list[0] = screen->black_pixel;
+ values_list[1] = screen->white_pixel;
+ values_list[2] = font;
+ cookie_gc = xcb_create_gc_checked (c, gc, window, mask, values_list);
+ error = xcb_request_check (c, cookie_gc);
+ if (error) {
+ fprintf (stderr, "ERROR: can't create gc : %d\n", error->error_code);
+ xcb_disconnect (c);
+ exit (-1);
+ }
+
+ mask = XCB_CW_CURSOR;
+ value_list = cursor;
+ xcb_change_window_attributes (c, window, mask, &amp;value_list);
+
+ xcb_free_cursor (c, cursor);
+
+ cookie_font = xcb_close_font_checked (c, font);
+ error = xcb_request_check (c, cookie_font);
+ if (error) {
+ fprintf (stderr, "ERROR: can't close font : %d\n", error->error_code);
+ xcb_disconnect (c);
+ exit (-1);
+ }
+}
+
+int main ()
+{
+ xcb_screen_iterator_t screen_iter;
+ xcb_connection_t *c;
+ const xcb_setup_t *setup;
+ xcb_screen_t *screen;
+ xcb_generic_event_t *e;
+ xcb_generic_error_t *error;
+ xcb_void_cookie_t cookie_window;
+ xcb_void_cookie_t cookie_map;
+ xcb_window_t window;
+ uint32_t mask;
+ uint32_t values[2];
+ int screen_number;
+ uint8_t is_hand = 0;
+
+ /* getting the connection */
+ c = xcb_connect (NULL, &amp;screen_number);
+ if (!c) {
+ fprintf (stderr, "ERROR: can't connect to an X server\n");
+ return -1;
+ }
+
+ /* getting the current screen */
+ setup = xcb_get_setup (c);
+
+ screen = NULL;
+ screen_iter = xcb_setup_roots_iterator (setup);
+ for (; screen_iter.rem != 0; --screen_number, xcb_screen_next (&amp;screen_iter))
+ if (screen_number == 0)
+ {
+ screen = screen_iter.data;
+ break;
+ }
+ if (!screen) {
+ fprintf (stderr, "ERROR: can't get the current screen\n");
+ xcb_disconnect (c);
+ return -1;
+ }
+
+ /* creating the window */
+ window = xcb_generate_id (c);
+ mask = XCB_CW_BACK_PIXEL | XCB_CW_EVENT_MASK;
+ values[0] = screen->white_pixel;
+ values[1] =
+ XCB_EVENT_MASK_KEY_RELEASE |
+ XCB_EVENT_MASK_BUTTON_PRESS |
+ XCB_EVENT_MASK_EXPOSURE |
+ XCB_EVENT_MASK_POINTER_MOTION;
+ cookie_window = xcb_create_window_checked (c,
+ screen->root_depth,
+ window, screen->root,
+ 20, 200, WIDTH, HEIGHT,
+ 0, XCB_WINDOW_CLASS_INPUT_OUTPUT,
+ screen->root_visual,
+ mask, values);
+ cookie_map = xcb_map_window_checked (c, window);
+
+ /* error managing */
+ error = xcb_request_check (c, cookie_window);
+ if (error) {
+ fprintf (stderr, "ERROR: can't create window : %d\n", error->error_code);
+ xcb_disconnect (c);
+ return -1;
+ }
+ error = xcb_request_check (c, cookie_map);
+ if (error) {
+ fprintf (stderr, "ERROR: can't map window : %d\n", error->error_code);
+ xcb_disconnect (c);
+ return -1;
+ }
+
+ cursor_set (c, screen, window, 68);
+
+ xcb_flush(c);
+
+ while (1) {
+ e = xcb_poll_for_event(c);
+ if (e) {
+ switch (e->response_type &amp; ~0x80) {
+ case XCB_EXPOSE: {
+ char *text;
+
+ text = "click here to change cursor";
+ button_draw (c, screen, window,
+ (WIDTH - 7 * strlen(text)) / 2,
+ (HEIGHT - 16) / 2, text);
+
+ text = "Press ESC key to exit...";
+ text_draw (c, screen, window, 10, HEIGHT - 10, text);
+ break;
+ }
+ case XCB_BUTTON_PRESS: {
+ xcb_button_press_event_t *ev;
+ int length;
+
+ ev = (xcb_button_press_event_t *)e;
+ length = strlen ("click here to change cursor");
+
+ if ((ev->event_x &gt;= (WIDTH - 7 * length) / 2) &amp;&amp;
+ (ev->event_x &lt;= ((WIDTH - 7 * length) / 2 + 7 * length + 6)) &amp;&amp;
+ (ev->event_y &gt;= (HEIGHT - 16) / 2 - 19) &amp;&amp;
+ (ev->event_y &lt;= ((HEIGHT - 16) / 2)))
+ is_hand = 1 - is_hand;
+
+ is_hand ? cursor_set (c, screen, window, 58) : cursor_set (c, screen, window, 68);
+ }
+ case XCB_KEY_RELEASE: {
+ xcb_key_release_event_t *ev;
+
+ ev = (xcb_key_release_event_t *)e;
+
+ switch (ev->detail) {
+ /* ESC */
+ case 9:
+ free (e);
+ xcb_disconnect (c);
+ return 0;
+ }
+ }
+ }
+ free (e);
+ }
+ }
+
+ return 0;
+}
+</pre>
+ </ol>
+ <li class="title"><a name="translation">Translation of basic Xlib functions and macros</a>
+ <p>
+ The problem when you want to port an Xlib program to XCB is that
+ you don't know if the Xlib function that you want to "translate"
+ is a X Window one or an Xlib macro. In that section, we describe
+ a way to translate the usual functions or macros that Xlib
+ provides. It's usually just a member of a structure.
+ </p>
+ <ol>
+ <li class="subtitle"><a name="displaystructure">Members of the Display structure</a>
+ <p>
+ In this section, we look at how to translate the macros that
+ return some members of the <span class="code">Display</span>
+ structure. They are obtained by using a function that requires a
+ <span class="code">xcb_connection_t *</span> or a member of the
+ <span class="code">xcb_setup_t</span> structure
+ (via the function <span class="code">xcb_get_setup</span>), or
+ a function that requires that structure.
+ </p>
+ <ol>
+ <li class="subtitle"><a name="ConnectionNumber">ConnectionNumber</a>
+ <p>
+ This number is the file descriptor that connects the client
+ to the server. You just have to use that function:
+ </p>
+ <pre class="code">
+int xcb_get_file_descriptor (xcb_connection_t *c);
+</pre>
+ <li class="subtitle"><a name="DefaultScreen"></a>DefaultScreen
+ <p>
+ That number is not stored by XCB. It is returned in the
+ second parameter of the function <span class="code"><a href="#openconn">xcb_connect</a></span>.
+ Hence, you have to store it yourself if you want to use
+ it. Then, to get the <span class="code">xcb_screen_t</span>
+ structure, you have to iterate on the screens.
+ The equivalent function of the Xlib's
+ <span class="code">ScreenOfDisplay</span> function can be
+ found <a href="#ScreenOfDisplay">below</a>. This is also provided in the
+ xcb_aux_t library as <span class="code">xcb_aux_get_screen()</span>. OK, here is the
+ small piece of code to get that number:
+ </p>
+ <pre class="code">
+xcb_connection_t *c;
+int screen_default_nbr;
+
+/* you pass the name of the display you want to xcb_connect_t */
+
+c = xcb_connect (display_name, &amp;screen_default_nbr);
+
+/* screen_default_nbr contains now the number of the default screen */
+</pre>
+ <li class="subtitle"><a name="QLength"></a>QLength
+ <p>
+ Not documented yet.
+ </p>
+ <p>
+ However, this points out a basic difference in philosophy between
+ Xlib and XCB. Xlib has several functions for filtering and
+ manipulating the incoming and outgoing X message queues. XCB
+ wishes to hide this as much as possible from the user, which
+ allows for more freedom in implementation strategies.
+ </p>
+ <li class="subtitle"><a name="ScreenCount"></a>ScreenCount
+ <p>
+ You get the count of screens with the functions
+ <span class="code">xcb_get_setup</span>
+ and
+ <span class="code">xcb_setup_roots_iterator</span>
+ (if you need to iterate):
+ </p>
+ <pre class="code">
+xcb_connection_t *c;
+int screen_count;
+
+/* you init the connection */
+
+screen_count = xcb_setup_roots_iterator (xcb_get_setup (c)).rem;
+
+/* screen_count contains now the count of screens */
+</pre>
+ <p>
+ If you don't want to iterate over the screens, a better way
+ to get that number is to use
+ <span class="code">xcb_setup_roots_length_t</span>:
+ </p>
+ <pre class="code">
+xcb_connection_t *c;
+int screen_count;
+
+/* you init the connection */
+
+screen_count = xcb_setup_roots_length (xcb_get_setup (c));
+
+/* screen_count contains now the count of screens */
+</pre>
+ <li class="subtitle"><a name="ServerVendor"></a>ServerVendor
+ <p>
+ You get the name of the vendor of the server hardware with
+ the functions <span class="code">xcb_get_setup</span>
+ and
+ <span
+ class="code">xcb_setup_vendor</span>. Beware
+ that, unlike Xlib, the string returned by XCB is not
+ necessarily null-terminaled:
+ </p>
+ <pre class="code">
+xcb_connection_t *c;
+char *vendor = NULL;
+int length;
+
+/* you init the connection */
+length = xcb_setup_vendor_length (xcb_get_setup (c));
+vendor = (char *)malloc (length + 1);
+if (vendor)
+memcpy (vendor, xcb_setup_vendor (xcb_get_setup (c)), length);
+vendor[length] = '\0';
+
+/* vendor contains now the name of the vendor. Must be freed when not used anymore */
+</pre>
+ <li class="subtitle"><a name="ProtocolVersion"></a>ProtocolVersion
+ <p>
+ You get the major version of the protocol in the
+ <span class="code">xcb_setup_t</span>
+ structure, with the function <span class="code">xcb_get_setup</span>:
+ </p>
+ <pre class="code">
+xcb_connection_t *c;
+uint16_t protocol_major_version;
+
+/* you init the connection */
+
+protocol_major_version = xcb_get_setup (c)-&gt;protocol_major_version;
+
+/* protocol_major_version contains now the major version of the protocol */
+</pre>
+ <li class="subtitle"><a name="ProtocolRevision"></a>ProtocolRevision
+ <p>
+ You get the minor version of the protocol in the
+ <span class="code">xcb_setup_t</span>
+ structure, with the function <span class="code">xcb_get_setup</span>:
+ </p>
+ <pre class="code">
+xcb_connection_t *c;
+uint16_t protocol_minor_version;
+
+/* you init the connection */
+
+protocol_minor_version = xcb_get_setup (c)-&gt;protocol_minor_version;
+
+/* protocol_minor_version contains now the minor version of the protocol */
+</pre>
+ <li class="subtitle"><a name="VendorRelease"></a>VendorRelease
+ <p>
+ You get the number of the release of the server hardware in the
+ <span class="code">xcb_setup_t</span>
+ structure, with the function <span class="code">xcb_get_setup</span>:
+ </p>
+ <pre class="code">
+xcb_connection_t *c;
+uint32_t release_number;
+
+/* you init the connection */
+
+release_number = xcb_get_setup (c)-&gt;release_number;
+
+/* release_number contains now the number of the release of the server hardware */
+</pre>
+ <li class="subtitle"><a name="DisplayString"></a>DisplayString
+ <p>
+ The name of the display is not stored in XCB. You have to
+ store it by yourself.
+ </p>
+ <li class="subtitle"><a name="BitmapUnit"></a>BitmapUnit
+ <p>
+ You get the bitmap scanline unit in the
+ <span class="code">xcb_setup_t</span>
+ structure, with the function <span class="code">xcb_get_setup</span>:
+ </p>
+ <pre class="code">
+xcb_connection_t *c;
+uint8_t bitmap_format_scanline_unit;
+
+/* you init the connection */
+
+bitmap_format_scanline_unit = xcb_get_setup (c)-&gt;bitmap_format_scanline_unit;
+
+/* bitmap_format_scanline_unit contains now the bitmap scanline unit */
+</pre>
+ <li class="subtitle"><a name="BitmapBitOrder"></a>BitmapBitOrder
+ <p>
+ You get the bitmap bit order in the
+ <span class="code">xcb_setup_t</span>
+ structure, with the function <span class="code">xcb_get_setup</span>:
+ </p>
+ <pre class="code">
+xcb_connection_t *c;
+uint8_t bitmap_format_bit_order;
+
+/* you init the connection */
+
+bitmap_format_bit_order = xcb_get_setup (c)-&gt;bitmap_format_bit_order;
+
+/* bitmap_format_bit_order contains now the bitmap bit order */
+</pre>
+ <li class="subtitle"><a name="BitmapPad"></a>BitmapPad
+ <p>
+ You get the bitmap scanline pad in the
+ <span class="code">xcb_setup_t</span>
+ structure, with the function <span class="code">xcb_get_setup</span>:
+ </p>
+ <pre class="code">
+xcb_connection_t *c;
+uint8_t bitmap_format_scanline_pad;
+
+/* you init the connection */
+
+bitmap_format_scanline_pad = xcb_get_setup (c)-&gt;bitmap_format_scanline_pad;
+
+/* bitmap_format_scanline_pad contains now the bitmap scanline pad */
+</pre>
+ <li class="subtitle"><a name="ImageByteOrder"></a>ImageByteOrder
+ <p>
+ You get the image byte order in the
+ <span class="code">xcb_setup_t</span>
+ structure, with the function <span class="code">xcb_get_setup</span>:
+ </p>
+ <pre class="code">
+xcb_connection_t *c;
+uint8_t image_byte_order;
+
+/* you init the connection */
+
+image_byte_order = xcb_get_setup (c)-&gt;image_byte_order;
+
+/* image_byte_order contains now the image byte order */
+</pre>
+ </ol>
+ <li class="subtitle"><a name="screenofdisplay">ScreenOfDisplay related functions</a>
+ <p>
+ in Xlib, <span class="code">ScreenOfDisplay</span> returns a
+ <span class="code">Screen</span> structure that contains
+ several characteristics of your screen. XCB has a similar
+ structure (<span class="code">xcb_screen_t</span>),
+ but the way to obtain it is a bit different. With
+ Xlib, you just provide the number of the screen and you grab it
+ from an array. With XCB, you iterate over all the screens to
+ obtain the one you want. The complexity of this operation is
+ O(n). So the best is to store this structure if you use
+ it often. See <a href="#ScreenOfDisplay">screen_of_display</a> just below.
+ </p>
+ <p>
+ Xlib provides generally two functions to obtain the characteristics
+ related to the screen. One with the display and the number of
+ the screen, which calls <span class="code">ScreenOfDisplay</span>,
+ and the other that uses the <span class="code">Screen</span> structure.
+ This might be a bit confusing. As mentioned above, with XCB, it
+ is better to store the <span class="code">xcb_screen_t</span>
+ structure. Then, you have to read the members of this
+ structure. That's why the Xlib functions are put by pairs (or
+ more) as, with XCB, you will use the same code.
+ </p>
+ <ol>
+ <li class="subtitle"><a name="ScreenOfDisplay">ScreenOfDisplay</a>
+ <p>
+ This function returns the Xlib <span class="code">Screen</span>
+ structure. With XCB, you iterate over all the screens and
+ once you get the one you want, you return it:
+ </p>
+ <pre class="code"><a name="ScreenOfDisplay"></a>
+xcb_screen_t *screen_of_display (xcb_connection_t *c,
+ int screen)
+{
+ xcb_screen_iterator_t iter;
+
+ iter = xcb_setup_roots_iterator (xcb_get_setup (c));
+ for (; iter.rem; --screen, xcb_screen_next (&amp;iter))
+ if (screen == 0)
+ return iter.data;
+
+ return NULL;
+}
+</pre>
+ <p>
+ As mentioned above, you might want to store the value
+ returned by this function.
+ </p>
+ <p>
+ All the functions below will use the result of that
+ function, as they just grab a specific member of the
+ <span class="code">xcb_screen_t</span> structure.
+ </p>
+ <li class="subtitle"><a name="DefaultScreenOfDisplay"></a>DefaultScreenOfDisplay
+ <p>
+ It is the default screen that you obtain when you connect to
+ the X server. It suffices to call the <a href="#ScreenOfDisplay">screen_of_display</a>
+ function above with the connection and the number of the
+ default screen.
+ </p>
+ <pre class="code">
+xcb_connection_t *c;
+int screen_default_nbr;
+xcb_screen_t *default_screen; /* the returned default screen */
+
+/* you pass the name of the display you want to xcb_connect_t */
+
+c = xcb_connect (display_name, &amp;screen_default_nbr);
+default_screen = screen_of_display (c, screen_default_nbr);
+
+/* default_screen contains now the default root window, or a NULL window if no screen is found */
+</pre>
+ <li class="subtitle"><a name="RootWindow">RootWindow / RootWindowOfScreen</a>
+ <br>
+ <pre class="code">
+xcb_connection_t *c;
+xcb_screen_t *screen;
+int screen_nbr;
+xcb_window_t root_window = { 0 }; /* the returned window */
+
+/* you init the connection and screen_nbr */
+
+screen = screen_of_display (c, screen_nbr);
+if (screen)
+ root_window = screen-&gt;root;
+
+/* root_window contains now the root window, or a NULL window if no screen is found */
+</pre>
+ <li class="subtitle"><a name="DefaultRootWindow">DefaultRootWindow</a>
+ <p>
+ It is the root window of the default screen. So, you call
+ <a name="ScreenOfDisplay">ScreenOfDisplay</a> with the
+ default screen number and you get the
+ <a href="#RootWindow">root window</a> as above:
+ </p>
+ <pre class="code">
+xcb_connection_t *c;
+xcb_screen_t *screen;
+int screen_default_nbr;
+xcb_window_t root_window = { 0 }; /* the returned root window */
+
+/* you pass the name of the display you want to xcb_connect_t */
+
+c = xcb_connect (display_name, &amp;screen_default_nbr);
+screen = screen_of_display (c, screen_default_nbr);
+if (screen)
+ root_window = screen-&gt;root;
+
+/* root_window contains now the default root window, or a NULL window if no screen is found */
+</pre>
+ <li class="subtitle"><a name="DefaultVisual">DefaultVisual / DefaultVisualOfScreen</a>
+ <p>
+ While a Visual is, in Xlib, a structure, in XCB, there are
+ two types: <span class="code">xcb_visualid_t</span>, which is
+ the Id of the visual, and <span class="code">xcb_visualtype_t</span>,
+ which corresponds to the Xlib Visual. To get the Id of the
+ visual of a screen, just get the
+ <span class="code">root_visual</span>
+ member of a <span class="code">xcb_screen_t</span>:
+ </p>
+ <pre class="code">
+xcb_connection_t *c;
+xcb_screen_t *screen;
+int screen_nbr;
+xcb_visualid_t root_visual = { 0 }; /* the returned visual Id */
+
+/* you init the connection and screen_nbr */
+
+screen = screen_of_display (c, screen_nbr);
+if (screen)
+ root_visual = screen-&gt;root_visual;
+
+/* root_visual contains now the value of the Id of the visual, or a NULL visual if no screen is found */
+</pre>
+ <p>
+ To get the <span class="code">xcb_visualtype_t</span>
+ structure, it's a bit less easy. You have to get the
+ <span class="code">xcb_screen_t</span> structure that you want,
+ get its <span class="code">root_visual</span> member,
+ then iterate over the <span class="code">xcb_depth_t</span>s
+ and the <span class="code">xcb_visualtype_t</span>s, and compare
+ the <span class="code">xcb_visualid_t</span> of these <span class="code">xcb_visualtype_t</span>s:
+ with <span class="code">root_visual</span>:
+ </p>
+ <pre class="code">
+xcb_connection_t *c;
+xcb_screen_t *screen;
+int screen_nbr;
+xcb_visualid_t root_visual = { 0 };
+xcb_visualtype_t *visual_type = NULL; /* the returned visual type */
+
+/* you init the connection and screen_nbr */
+
+screen = screen_of_display (c, screen_nbr);
+if (screen) {
+ xcb_depth_iterator_t depth_iter;
+
+ depth_iter = xcb_screen_allowed_depths_iterator (screen);
+ for (; depth_iter.rem; xcb_depth_next (&amp;depth_iter)) {
+ xcb_visualtype_iterator_t visual_iter;
+
+ visual_iter = xcb_depth_visuals_iterator (depth_iter.data);
+ for (; visual_iter.rem; xcb_visualtype_next (&amp;visual_iter)) {
+ if (screen-&gt;root_visual == visual_iter.data-&gt;visual_id) {
+ visual_type = visual_iter.data;
+ break;
+ }
+ }
+ }
+}
+
+/* visual_type contains now the visual structure, or a NULL visual structure if no screen is found */
+</pre>
+ <li class="subtitle"><a name="DefaultGC">DefaultGC / DefaultGCOfScreen</a>
+ <p>
+ This default Graphic Context is just a newly created Graphic
+ Context, associated to the root window of a
+ <span class="code">xcb_screen_t</span>,
+ using the black white pixels of that screen:
+ </p>
+ <pre class="code">
+xcb_connection_t *c;
+xcb_screen_t *screen;
+int screen_nbr;
+xcb_gcontext_t gc = { 0 }; /* the returned default graphic context */
+
+/* you init the connection and screen_nbr */
+
+screen = screen_of_display (c, screen_nbr);
+if (screen) {
+ xcb_drawable_t draw;
+ uint32_t mask;
+ uint32_t values[2];
+
+ gc = xcb_generate_id (c);
+ draw = screen-&gt;root;
+ mask = XCB_GC_FOREGROUND | XCB_GC_BACKGROUND;
+ values[0] = screen-&gt;black_pixel;
+ values[1] = screen-&gt;white_pixel;
+ xcb_create_gc (c, gc, draw, mask, values);
+}
+
+/* gc contains now the default graphic context */
+</pre>
+ <li class="subtitle"><a name="BlackPixel">BlackPixel / BlackPixelOfScreen</a>
+ <p>
+ It is the Id of the black pixel, which is in the structure
+ of an <span class="code">xcb_screen_t</span>.
+ </p>
+ <pre class="code">
+xcb_connection_t *c;
+xcb_screen_t *screen;
+int screen_nbr;
+uint32_t black_pixel = 0; /* the returned black pixel */
+
+/* you init the connection and screen_nbr */
+
+screen = screen_of_display (c, screen_nbr);
+if (screen)
+ black_pixel = screen-&gt;black_pixel;
+
+/* black_pixel contains now the value of the black pixel, or 0 if no screen is found */
+</pre>
+ <li class="subtitle"><a name="WhitePixel">WhitePixel / WhitePixelOfScreen</a>
+ <p>
+ It is the Id of the white pixel, which is in the structure
+ of an <span class="code">xcb_screen_t</span>.
+ </p>
+ <pre class="code">
+xcb_connection_t *c;
+xcb_screen_t *screen;
+int screen_nbr;
+uint32_t white_pixel = 0; /* the returned white pixel */
+
+/* you init the connection and screen_nbr */
+
+screen = screen_of_display (c, screen_nbr);
+if (screen)
+ white_pixel = screen-&gt;white_pixel;
+
+/* white_pixel contains now the value of the white pixel, or 0 if no screen is found */
+</pre>
+ <li class="subtitle"><a name="DisplayWidth">DisplayWidth / WidthOfScreen</a>
+ <p>
+ It is the width in pixels of the screen that you want, and
+ which is in the structure of the corresponding
+ <span class="code">xcb_screen_t</span>.
+ </p>
+ <pre class="code">
+xcb_connection_t *c;
+xcb_screen_t *screen;
+int screen_nbr;
+uint32_t width_in_pixels = 0; /* the returned width in pixels */
+
+/* you init the connection and screen_nbr */
+
+screen = screen_of_display (c, screen_nbr);
+if (screen)
+ width_in_pixels = screen-&gt;width_in_pixels;
+
+/* width_in_pixels contains now the width in pixels, or 0 if no screen is found */
+</pre>
+ <li class="subtitle"><a name="DisplayHeight">DisplayHeight / HeightOfScreen</a>
+ <p>
+ It is the height in pixels of the screen that you want, and
+ which is in the structure of the corresponding
+ <span class="code">xcb_screen_t</span>.
+ </p>
+ <pre class="code">
+xcb_connection_t *c;
+xcb_screen_t *screen;
+int screen_nbr;
+uint32_t height_in_pixels = 0; /* the returned height in pixels */
+
+/* you init the connection and screen_nbr */
+
+screen = screen_of_display (c, screen_nbr);
+if (screen)
+ height_in_pixels = screen-&gt;height_in_pixels;
+
+/* height_in_pixels contains now the height in pixels, or 0 if no screen is found */
+</pre>
+ <li class="subtitle"><a name="DisplayWidthMM">DisplayWidthMM / WidthMMOfScreen</a>
+ <p>
+ It is the width in millimeters of the screen that you want, and
+ which is in the structure of the corresponding
+ <span class="code">xcb_screen_t</span>.
+ </p>
+ <pre class="code">
+xcb_connection_t *c;
+xcb_screen_t *screen;
+int screen_nbr;
+uint32_t width_in_millimeters = 0; /* the returned width in millimeters */
+
+/* you init the connection and screen_nbr */
+
+screen = screen_of_display (c, screen_nbr);
+if (screen)
+ width_in_millimeters = screen-&gt;width_in_millimeters;
+
+/* width_in_millimeters contains now the width in millimeters, or 0 if no screen is found */
+</pre>
+ <li class="subtitle"><a name="DisplayHeightMM">DisplayHeightMM / HeightMMOfScreen</a>
+ <p>
+ It is the height in millimeters of the screen that you want, and
+ which is in the structure of the corresponding
+ <span class="code">xcb_screen_t</span>.
+ </p>
+ <pre class="code">
+xcb_connection_t *c;
+xcb_screen_t *screen;
+int screen_nbr;
+uint32_t height_in_millimeters = 0; /* the returned height in millimeters */
+
+/* you init the connection and screen_nbr */
+
+screen = screen_of_display (c, screen_nbr);
+if (screen)
+ height_in_millimeters = screen-&gt;height_in_millimeters;
+
+/* height_in_millimeters contains now the height in millimeters, or 0 if no screen is found */
+</pre>
+ <li class="subtitle"><a name="DisplayPlanes">DisplayPlanes / DefaultDepth / DefaultDepthOfScreen / PlanesOfScreen</a>
+ <p>
+ It is the depth (in bits) of the root window of the
+ screen. You get it from the <span class="code">xcb_screen_t</span> structure.
+ </p>
+ <pre class="code">
+xcb_connection_t *c;
+xcb_screen_t *screen;
+int screen_nbr;
+uint8_t root_depth = 0; /* the returned depth of the root window */
+
+/* you init the connection and screen_nbr */
+
+screen = screen_of_display (c, screen_nbr);
+if (screen)
+ root_depth = screen-&gt;root_depth;
+
+/* root_depth contains now the depth of the root window, or 0 if no screen is found */
+</pre>
+ <li class="subtitle"><a name="DefaultColormap">DefaultColormap / DefaultColormapOfScreen</a>
+ <p>
+ This is the default colormap of the screen (and not the
+ (default) colormap of the default screen !). As usual, you
+ get it from the <span class="code">xcb_screen_t</span> structure:
+ </p>
+ <pre class="code">
+xcb_connection_t *c;
+xcb_screen_t *screen;
+int screen_nbr;
+xcb_colormap_t default_colormap = { 0 }; /* the returned default colormap */
+
+/* you init the connection and screen_nbr */
+
+screen = screen_of_display (c, screen_nbr);
+if (screen)
+ default_colormap = screen-&gt;default_colormap;
+
+/* default_colormap contains now the default colormap, or a NULL colormap if no screen is found */
+</pre>
+ <li class="subtitle"><a name="MinCmapsOfScreen"></a>MinCmapsOfScreen
+ <p>
+ You get the minimum installed colormaps in the <span class="code">xcb_screen_t</span> structure:
+ </p>
+ <pre class="code">
+xcb_connection_t *c;
+xcb_screen_t *screen;
+int screen_nbr;
+uint16_t min_installed_maps = 0; /* the returned minimum installed colormaps */
+
+/* you init the connection and screen_nbr */
+
+screen = screen_of_display (c, screen_nbr);
+if (screen)
+ min_installed_maps = screen-&gt;min_installed_maps;
+
+/* min_installed_maps contains now the minimum installed colormaps, or 0 if no screen is found */
+</pre>
+ <li class="subtitle"><a name="MaxCmapsOfScreen"></a>MaxCmapsOfScreen
+ <p>
+ You get the maximum installed colormaps in the <span class="code">xcb_screen_t</span> structure:
+ </p>
+ <pre class="code">
+xcb_connection_t *c;
+xcb_screen_t *screen;
+int screen_nbr;
+uint16_t max_installed_maps = 0; /* the returned maximum installed colormaps */
+
+/* you init the connection and screen_nbr */
+
+screen = screen_of_display (c, screen_nbr);
+if (screen)
+ max_installed_maps = screen-&gt;max_installed_maps;
+
+/* max_installed_maps contains now the maximum installed colormaps, or 0 if no screen is found */
+</pre>
+ <li class="subtitle"><a name="DoesSaveUnders"></a>DoesSaveUnders
+ <p>
+ You know if <span class="code">save_unders</span> is set,
+ by looking in the <span class="code">xcb_screen_t</span> structure:
+ </p>
+ <pre class="code">
+xcb_connection_t *c;
+xcb_screen_t *screen;
+int screen_nbr;
+uint8_t save_unders = 0; /* the returned value of save_unders */
+
+/* you init the connection and screen_nbr */
+
+screen = screen_of_display (c, screen_nbr);
+if (screen)
+ save_unders = screen-&gt;save_unders;
+
+/* save_unders contains now the value of save_unders, or FALSE if no screen is found */
+</pre>
+ <li class="subtitle"><a name="DoesBackingStore"></a>DoesBackingStore
+ <p>
+ You know the value of <span class="code">backing_stores</span>,
+ by looking in the <span class="code">xcb_screen_t</span> structure:
+ </p>
+ <pre class="code">
+xcb_connection_t *c;
+xcb_screen_t *screen;
+int screen_nbr;
+uint8_t backing_stores = 0; /* the returned value of backing_stores */
+
+/* you init the connection and screen_nbr */
+
+screen = screen_of_display (c, screen_nbr);
+if (screen)
+ backing_stores = screen-&gt;backing_stores;
+
+/* backing_stores contains now the value of backing_stores, or FALSE if no screen is found */
+</pre>
+ <li class="subtitle"><a name="EventMaskOfScreen"></a>EventMaskOfScreen
+ <p>
+ To get the current input masks,
+ you look in the <span class="code">xcb_screen_t</span> structure:
+ </p>
+ <pre class="code">
+xcb_connection_t *c;
+xcb_screen_t *screen;
+int screen_nbr;
+uint32_t current_input_masks = 0; /* the returned value of current input masks */
+
+/* you init the connection and screen_nbr */
+
+screen = screen_of_display (c, screen_nbr);
+if (screen)
+ current_input_masks = screen-&gt;current_input_masks;
+
+/* current_input_masks contains now the value of the current input masks, or FALSE if no screen is found */
+</pre>
+ </ol>
+ <li class="subtitle"><a name="misc">Miscellaneous macros</a>
+ <ol>
+ <li class="subtitle"><a name="DisplayOfScreen"></a>DisplayOfScreen
+ <p>
+ in Xlib, the <span class="code">Screen</span> structure
+ stores its associated <span class="code">Display</span>
+ structure. This is not the case in the X Window protocol,
+ hence, it's also not the case in XCB. So you have to store
+ it by yourself.
+ </p>
+ <li class="subtitle"><a name="DisplayCells"></a>DisplayCells / CellsOfScreen
+ <p>
+ To get the colormap entries,
+ you look in the <span class="code">xcb_visualtype_t</span>
+ structure, that you grab like <a class="subsection" href="#DefaultVisual">here</a>:
+ </p>
+ <pre class="code">
+xcb_connection_t *c;
+xcb_visualtype_t *visual_type;
+uint16_t colormap_entries = 0; /* the returned value of the colormap entries */
+
+/* you init the connection and visual_type */
+
+if (visual_type)
+ colormap_entries = visual_type-&gt;colormap_entries;
+
+/* colormap_entries contains now the value of the colormap entries, or FALSE if no screen is found */
+</pre>
+ </ol>
+ </ol>
+ </ol>
+ </div>
+</body>
+
+</html>
diff --git a/libxcb/doc/tutorial/xcb.css b/libxcb/doc/tutorial/xcb.css
index 48b0249a8..e059b3b33 100644
--- a/libxcb/doc/tutorial/xcb.css
+++ b/libxcb/doc/tutorial/xcb.css
@@ -1,123 +1,123 @@
-body
-{
- background-color: #dddddd;
- color: #000000;
- padding: 8px;
- margin: 0px;
-}
-div.title
-{
- text-align: center;
- font-weight: bold;
- font-size: 28px;
-}
-div.emph
-{
- text-align: left;
- font-weight: bold;
-}
-div.section li.title
-{
- font-weight: bold;
- font-size: 22px;
-}
-div.section li.title p
-{
- font-weight: normal;
- font-size: 16px;
-}
-div.section li.title ul
-{
- font-weight: normal;
- font-size: 16px;
-}
-div.section li.title ol
-{
- font-weight: normal;
- font-size: 16px;
-}
-div.section li.subtitle
-{
- font-weight: bold;
- font-size: 18px;
-}
-div.section li.subsubtitle
-{
- font-weight: bold;
- font-size: 16px;
-}
-div.comp
-{
- border: thin solid #000000;
- color: #000000;
- background-color: #ffffe0;
- padding: 14px;
-}
-div.comp div.title
-{
- font-weight: bold;
- font-size: 16px;
- text-align: center;
-}
-div.comp div.xlib ul li
-{
- font-family: monospace;
- font-size: 12px;
- font-weight: bold;
- position: absolute;
- width: 49%;
- margin-left: 0px;
- margin-top: 10px;
-}
-div.comp div.xcb ul li
-{
- font-family: monospace;
- font-size: 12px;
- font-weight: bold;
- position: relative;
- margin-left: 51%;
- margin-top: 10px;
-}
-pre.code
-{
- border: thin solid #000000;
- color: #000000;
- background-color: #efefef;
- padding: 4px;
- text-align: left;
- font-size: 10px;
-}
-pre.text
-{
- border: thin solid #000000;
- color: #000000;
- background-color: #efefef;
- padding: 4px;
- text-align: left;
- font-size: 10px;
-}
-span.code
-{
- font-family: monospace;
- font-size: 12px;
-}
-pre.code .type
-{
- color: #44bb44;
-}
-pre.code .function
-{
- color: #449fb7;
-}
-pre.code .include
-{
- color: #7d93ae;
-}
-pre.code .string
-{
- color: #ef6e4b;
-}
-pre.code .keyword
-{
- color: #00bbbb;
-}
+body
+{
+ background-color: #dddddd;
+ color: #000000;
+ padding: 8px;
+ margin: 0px;
+}
+div.title
+{
+ text-align: center;
+ font-weight: bold;
+ font-size: 28px;
+}
+div.emph
+{
+ text-align: left;
+ font-weight: bold;
+}
+div.section li.title
+{
+ font-weight: bold;
+ font-size: 22px;
+}
+div.section li.title p
+{
+ font-weight: normal;
+ font-size: 16px;
+}
+div.section li.title ul
+{
+ font-weight: normal;
+ font-size: 16px;
+}
+div.section li.title ol
+{
+ font-weight: normal;
+ font-size: 16px;
+}
+div.section li.subtitle
+{
+ font-weight: bold;
+ font-size: 18px;
+}
+div.section li.subsubtitle
+{
+ font-weight: bold;
+ font-size: 16px;
+}
+div.comp
+{
+ border: thin solid #000000;
+ color: #000000;
+ background-color: #ffffe0;
+ padding: 14px;
+}
+div.comp div.title
+{
+ font-weight: bold;
+ font-size: 16px;
+ text-align: center;
+}
+div.comp div.xlib ul li
+{
+ font-family: monospace;
+ font-size: 12px;
+ font-weight: bold;
+ position: absolute;
+ width: 49%;
+ margin-left: 0px;
+ margin-top: 10px;
+}
+div.comp div.xcb ul li
+{
+ font-family: monospace;
+ font-size: 12px;
+ font-weight: bold;
+ position: relative;
+ margin-left: 51%;
+ margin-top: 10px;
+}
+pre.code
+{
+ border: thin solid #000000;
+ color: #000000;
+ background-color: #efefef;
+ padding: 4px;
+ text-align: left;
+ font-size: 10px;
+}
+pre.text
+{
+ border: thin solid #000000;
+ color: #000000;
+ background-color: #efefef;
+ padding: 4px;
+ text-align: left;
+ font-size: 10px;
+}
+span.code
+{
+ font-family: monospace;
+ font-size: 12px;
+}
+pre.code .type
+{
+ color: #44bb44;
+}
+pre.code .function
+{
+ color: #449fb7;
+}
+pre.code .include
+{
+ color: #7d93ae;
+}
+pre.code .string
+{
+ color: #ef6e4b;
+}
+pre.code .keyword
+{
+ color: #00bbbb;
+}
diff --git a/libxcb/doc/xcb.doxygen.in b/libxcb/doc/xcb.doxygen.in
index d674cbab1..58aa07630 100644
--- a/libxcb/doc/xcb.doxygen.in
+++ b/libxcb/doc/xcb.doxygen.in
@@ -1,1253 +1,1253 @@
-# Doxyfile 1.5.0
-
-# This file describes the settings to be used by the documentation system
-# doxygen (www.doxygen.org) for a project
-#
-# All text after a hash (#) is considered a comment and will be ignored
-# The format is:
-# TAG = value [value, ...]
-# For lists items can also be appended using:
-# TAG += value [value, ...]
-# Values that contain spaces should be placed between quotes (" ")
-
-#---------------------------------------------------------------------------
-# Project related configuration options
-#---------------------------------------------------------------------------
-
-# The PROJECT_NAME tag is a single word (or a sequence of words surrounded
-# by quotes) that should identify the project.
-
-PROJECT_NAME = "XCB"
-
-# The PROJECT_NUMBER tag can be used to enter a project or revision number.
-# This could be handy for archiving the generated documentation or
-# if some version control system is used.
-
-PROJECT_NUMBER = @VERSION@
-
-# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute)
-# base path where the generated documentation will be put.
-# If a relative path is entered, it will be relative to the location
-# where doxygen was started. If left blank the current directory will be used.
-
-OUTPUT_DIRECTORY = @top_builddir@/doc
-
-# If the CREATE_SUBDIRS tag is set to YES, then doxygen will create
-# 4096 sub-directories (in 2 levels) under the output directory of each output
-# format and will distribute the generated files over these directories.
-# Enabling this option can be useful when feeding doxygen a huge amount of
-# source files, where putting all generated files in the same directory would
-# otherwise cause performance problems for the file system.
-
-CREATE_SUBDIRS = NO
-
-# The OUTPUT_LANGUAGE tag is used to specify the language in which all
-# documentation generated by doxygen is written. Doxygen will use this
-# information to generate all constant output in the proper language.
-# The default language is English, other supported languages are:
-# Afrikaans, Arabic, Brazilian, Catalan, Chinese, Chinese-Traditional,
-# Croatian, Czech, Danish, Dutch, Finnish, French, German, Greek, Hungarian,
-# Italian, Japanese, Japanese-en (Japanese with English messages), Korean,
-# Korean-en, Lithuanian, Norwegian, Polish, Portuguese, Romanian, Russian,
-# Serbian, Slovak, Slovene, Spanish, Swedish, and Ukrainian.
-
-OUTPUT_LANGUAGE = English
-
-# This tag can be used to specify the encoding used in the generated output.
-# The encoding is not always determined by the language that is chosen,
-# but also whether or not the output is meant for Windows or non-Windows users.
-# In case there is a difference, setting the USE_WINDOWS_ENCODING tag to YES
-# forces the Windows encoding (this is the default for the Windows binary),
-# whereas setting the tag to NO uses a Unix-style encoding (the default for
-# all platforms other than Windows).
-
-USE_WINDOWS_ENCODING = NO
-
-# If the BRIEF_MEMBER_DESC tag is set to YES (the default) Doxygen will
-# include brief member descriptions after the members that are listed in
-# the file and class documentation (similar to JavaDoc).
-# Set to NO to disable this.
-
-BRIEF_MEMBER_DESC = YES
-
-# If the REPEAT_BRIEF tag is set to YES (the default) Doxygen will prepend
-# the brief description of a member or function before the detailed description.
-# Note: if both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the
-# brief descriptions will be completely suppressed.
-
-REPEAT_BRIEF = YES
-
-# This tag implements a quasi-intelligent brief description abbreviator
-# that is used to form the text in various listings. Each string
-# in this list, if found as the leading text of the brief description, will be
-# stripped from the text and the result after processing the whole list, is
-# used as the annotated text. Otherwise, the brief description is used as-is.
-# If left blank, the following values are used ("$name" is automatically
-# replaced with the name of the entity): "The $name class" "The $name widget"
-# "The $name file" "is" "provides" "specifies" "contains"
-# "represents" "a" "an" "the"
-
-ABBREVIATE_BRIEF =
-
-# If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then
-# Doxygen will generate a detailed section even if there is only a brief
-# description.
-
-ALWAYS_DETAILED_SEC = NO
-
-# If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all
-# inherited members of a class in the documentation of that class as if those
-# members were ordinary class members. Constructors, destructors and assignment
-# operators of the base classes will not be shown.
-
-INLINE_INHERITED_MEMB = NO
-
-# If the FULL_PATH_NAMES tag is set to YES then Doxygen will prepend the full
-# path before files name in the file list and in the header files. If set
-# to NO the shortest path that makes the file name unique will be used.
-
-FULL_PATH_NAMES = NO
-
-# If the FULL_PATH_NAMES tag is set to YES then the STRIP_FROM_PATH tag
-# can be used to strip a user-defined part of the path. Stripping is
-# only done if one of the specified strings matches the left-hand part of
-# the path. The tag can be used to show relative paths in the file list.
-# If left blank the directory from which doxygen is run is used as the
-# path to strip.
-
-STRIP_FROM_PATH =
-
-# The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of
-# the path mentioned in the documentation of a class, which tells
-# the reader which header file to include in order to use a class.
-# If left blank only the name of the header file containing the class
-# definition is used. Otherwise one should specify the include paths that
-# are normally passed to the compiler using the -I flag.
-
-STRIP_FROM_INC_PATH =
-
-# If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter
-# (but less readable) file names. This can be useful is your file systems
-# doesn't support long names like on DOS, Mac, or CD-ROM.
-
-SHORT_NAMES = NO
-
-# If the JAVADOC_AUTOBRIEF tag is set to YES then Doxygen
-# will interpret the first line (until the first dot) of a JavaDoc-style
-# comment as the brief description. If set to NO, the JavaDoc
-# comments will behave just like the Qt-style comments (thus requiring an
-# explicit @brief command for a brief description.
-
-JAVADOC_AUTOBRIEF = NO
-
-# The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make Doxygen
-# treat a multi-line C++ special comment block (i.e. a block of //! or ///
-# comments) as a brief description. This used to be the default behaviour.
-# The new default is to treat a multi-line C++ comment block as a detailed
-# description. Set this tag to YES if you prefer the old behaviour instead.
-
-MULTILINE_CPP_IS_BRIEF = NO
-
-# If the DETAILS_AT_TOP tag is set to YES then Doxygen
-# will output the detailed description near the top, like JavaDoc.
-# If set to NO, the detailed description appears after the member
-# documentation.
-
-DETAILS_AT_TOP = NO
-
-# If the INHERIT_DOCS tag is set to YES (the default) then an undocumented
-# member inherits the documentation from any documented member that it
-# re-implements.
-
-INHERIT_DOCS = YES
-
-# If the SEPARATE_MEMBER_PAGES tag is set to YES, then doxygen will produce
-# a new page for each member. If set to NO, the documentation of a member will
-# be part of the file/class/namespace that contains it.
-
-SEPARATE_MEMBER_PAGES = NO
-
-# The TAB_SIZE tag can be used to set the number of spaces in a tab.
-# Doxygen uses this value to replace tabs by spaces in code fragments.
-
-TAB_SIZE = 8
-
-# This tag can be used to specify a number of aliases that acts
-# as commands in the documentation. An alias has the form "name=value".
-# For example adding "sideeffect=\par Side Effects:\n" will allow you to
-# put the command \sideeffect (or @sideeffect) in the documentation, which
-# will result in a user-defined paragraph with heading "Side Effects:".
-# You can put \n's in the value part of an alias to insert newlines.
-
-ALIASES =
-
-# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C
-# sources only. Doxygen will then generate output that is more tailored for C.
-# For instance, some of the names that are used will be different. The list
-# of all members will be omitted, etc.
-
-OPTIMIZE_OUTPUT_FOR_C = YES
-
-# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java
-# sources only. Doxygen will then generate output that is more tailored for Java.
-# For instance, namespaces will be presented as packages, qualified scopes
-# will look different, etc.
-
-OPTIMIZE_OUTPUT_JAVA = NO
-
-# If you use STL classes (i.e. std::string, std::vector, etc.) but do not want to
-# include (a tag file for) the STL sources as input, then you should
-# set this tag to YES in order to let doxygen match functions declarations and
-# definitions whose arguments contain STL classes (e.g. func(std::string); v.s.
-# func(std::string) {}). This also make the inheritance and collaboration
-# diagrams that involve STL classes more complete and accurate.
-
-BUILTIN_STL_SUPPORT = NO
-
-# If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC
-# tag is set to YES, then doxygen will reuse the documentation of the first
-# member in the group (if any) for the other members of the group. By default
-# all members of a group must be documented explicitly.
-
-DISTRIBUTE_GROUP_DOC = NO
-
-# Set the SUBGROUPING tag to YES (the default) to allow class member groups of
-# the same type (for instance a group of public functions) to be put as a
-# subgroup of that type (e.g. under the Public Functions section). Set it to
-# NO to prevent subgrouping. Alternatively, this can be done per class using
-# the \nosubgrouping command.
-
-SUBGROUPING = YES
-
-#---------------------------------------------------------------------------
-# Build related configuration options
-#---------------------------------------------------------------------------
-
-# If the EXTRACT_ALL tag is set to YES doxygen will assume all entities in
-# documentation are documented, even if no documentation was available.
-# Private class members and static file members will be hidden unless
-# the EXTRACT_PRIVATE and EXTRACT_STATIC tags are set to YES
-
-EXTRACT_ALL = NO
-
-# If the EXTRACT_PRIVATE tag is set to YES all private members of a class
-# will be included in the documentation.
-
-EXTRACT_PRIVATE = NO
-
-# If the EXTRACT_STATIC tag is set to YES all static members of a file
-# will be included in the documentation.
-
-EXTRACT_STATIC = NO
-
-# If the EXTRACT_LOCAL_CLASSES tag is set to YES classes (and structs)
-# defined locally in source files will be included in the documentation.
-# If set to NO only classes defined in header files are included.
-
-EXTRACT_LOCAL_CLASSES = YES
-
-# This flag is only useful for Objective-C code. When set to YES local
-# methods, which are defined in the implementation section but not in
-# the interface are included in the documentation.
-# If set to NO (the default) only methods in the interface are included.
-
-EXTRACT_LOCAL_METHODS = NO
-
-# If the HIDE_UNDOC_MEMBERS tag is set to YES, Doxygen will hide all
-# undocumented members of documented classes, files or namespaces.
-# If set to NO (the default) these members will be included in the
-# various overviews, but no documentation section is generated.
-# This option has no effect if EXTRACT_ALL is enabled.
-
-HIDE_UNDOC_MEMBERS = NO
-
-# If the HIDE_UNDOC_CLASSES tag is set to YES, Doxygen will hide all
-# undocumented classes that are normally visible in the class hierarchy.
-# If set to NO (the default) these classes will be included in the various
-# overviews. This option has no effect if EXTRACT_ALL is enabled.
-
-HIDE_UNDOC_CLASSES = NO
-
-# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, Doxygen will hide all
-# friend (class|struct|union) declarations.
-# If set to NO (the default) these declarations will be included in the
-# documentation.
-
-HIDE_FRIEND_COMPOUNDS = NO
-
-# If the HIDE_IN_BODY_DOCS tag is set to YES, Doxygen will hide any
-# documentation blocks found inside the body of a function.
-# If set to NO (the default) these blocks will be appended to the
-# function's detailed documentation block.
-
-HIDE_IN_BODY_DOCS = NO
-
-# The INTERNAL_DOCS tag determines if documentation
-# that is typed after a \internal command is included. If the tag is set
-# to NO (the default) then the documentation will be excluded.
-# Set it to YES to include the internal documentation.
-
-INTERNAL_DOCS = NO
-
-# If the CASE_SENSE_NAMES tag is set to NO then Doxygen will only generate
-# file names in lower-case letters. If set to YES upper-case letters are also
-# allowed. This is useful if you have classes or files whose names only differ
-# in case and if your file system supports case sensitive file names. Windows
-# and Mac users are advised to set this option to NO.
-
-CASE_SENSE_NAMES = YES
-
-# If the HIDE_SCOPE_NAMES tag is set to NO (the default) then Doxygen
-# will show members with their full class and namespace scopes in the
-# documentation. If set to YES the scope will be hidden.
-
-HIDE_SCOPE_NAMES = NO
-
-# If the SHOW_INCLUDE_FILES tag is set to YES (the default) then Doxygen
-# will put a list of the files that are included by a file in the documentation
-# of that file.
-
-SHOW_INCLUDE_FILES = YES
-
-# If the INLINE_INFO tag is set to YES (the default) then a tag [inline]
-# is inserted in the documentation for inline members.
-
-INLINE_INFO = YES
-
-# If the SORT_MEMBER_DOCS tag is set to YES (the default) then doxygen
-# will sort the (detailed) documentation of file and class members
-# alphabetically by member name. If set to NO the members will appear in
-# declaration order.
-
-SORT_MEMBER_DOCS = YES
-
-# If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the
-# brief documentation of file, namespace and class members alphabetically
-# by member name. If set to NO (the default) the members will appear in
-# declaration order.
-
-SORT_BRIEF_DOCS = NO
-
-# If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be
-# sorted by fully-qualified names, including namespaces. If set to
-# NO (the default), the class list will be sorted only by class name,
-# not including the namespace part.
-# Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES.
-# Note: This option applies only to the class list, not to the
-# alphabetical list.
-
-SORT_BY_SCOPE_NAME = NO
-
-# The GENERATE_TODOLIST tag can be used to enable (YES) or
-# disable (NO) the todo list. This list is created by putting \todo
-# commands in the documentation.
-
-GENERATE_TODOLIST = YES
-
-# The GENERATE_TESTLIST tag can be used to enable (YES) or
-# disable (NO) the test list. This list is created by putting \test
-# commands in the documentation.
-
-GENERATE_TESTLIST = YES
-
-# The GENERATE_BUGLIST tag can be used to enable (YES) or
-# disable (NO) the bug list. This list is created by putting \bug
-# commands in the documentation.
-
-GENERATE_BUGLIST = YES
-
-# The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or
-# disable (NO) the deprecated list. This list is created by putting
-# \deprecated commands in the documentation.
-
-GENERATE_DEPRECATEDLIST= YES
-
-# The ENABLED_SECTIONS tag can be used to enable conditional
-# documentation sections, marked by \if sectionname ... \endif.
-
-ENABLED_SECTIONS =
-
-# The MAX_INITIALIZER_LINES tag determines the maximum number of lines
-# the initial value of a variable or define consists of for it to appear in
-# the documentation. If the initializer consists of more lines than specified
-# here it will be hidden. Use a value of 0 to hide initializers completely.
-# The appearance of the initializer of individual variables and defines in the
-# documentation can be controlled using \showinitializer or \hideinitializer
-# command in the documentation regardless of this setting.
-
-MAX_INITIALIZER_LINES = 30
-
-# Set the SHOW_USED_FILES tag to NO to disable the list of files generated
-# at the bottom of the documentation of classes and structs. If set to YES the
-# list will mention the files that were used to generate the documentation.
-
-SHOW_USED_FILES = YES
-
-# If the sources in your project are distributed over multiple directories
-# then setting the SHOW_DIRECTORIES tag to YES will show the directory hierarchy
-# in the documentation. The default is NO.
-
-SHOW_DIRECTORIES = NO
-
-# The FILE_VERSION_FILTER tag can be used to specify a program or script that
-# doxygen should invoke to get the current version for each file (typically from the
-# version control system). Doxygen will invoke the program by executing (via
-# popen()) the command <command> <input-file>, where <command> is the value of
-# the FILE_VERSION_FILTER tag, and <input-file> is the name of an input file
-# provided by doxygen. Whatever the program writes to standard output
-# is used as the file version. See the manual for examples.
-
-FILE_VERSION_FILTER =
-
-#---------------------------------------------------------------------------
-# configuration options related to warning and progress messages
-#---------------------------------------------------------------------------
-
-# The QUIET tag can be used to turn on/off the messages that are generated
-# by doxygen. Possible values are YES and NO. If left blank NO is used.
-
-QUIET = YES
-
-# The WARNINGS tag can be used to turn on/off the warning messages that are
-# generated by doxygen. Possible values are YES and NO. If left blank
-# NO is used.
-
-WARNINGS = YES
-
-# If WARN_IF_UNDOCUMENTED is set to YES, then doxygen will generate warnings
-# for undocumented members. If EXTRACT_ALL is set to YES then this flag will
-# automatically be disabled.
-
-# XXX: In the future this should be turned on. For now it generates too much noise.
-WARN_IF_UNDOCUMENTED = NO
-
-# If WARN_IF_DOC_ERROR is set to YES, doxygen will generate warnings for
-# potential errors in the documentation, such as not documenting some
-# parameters in a documented function, or documenting parameters that
-# don't exist or using markup commands wrongly.
-
-WARN_IF_DOC_ERROR = YES
-
-# This WARN_NO_PARAMDOC option can be abled to get warnings for
-# functions that are documented, but have no documentation for their parameters
-# or return value. If set to NO (the default) doxygen will only warn about
-# wrong or incomplete parameter documentation, but not about the absence of
-# documentation.
-
-WARN_NO_PARAMDOC = YES
-
-# The WARN_FORMAT tag determines the format of the warning messages that
-# doxygen can produce. The string should contain the $file, $line, and $text
-# tags, which will be replaced by the file and line number from which the
-# warning originated and the warning text. Optionally the format may contain
-# $version, which will be replaced by the version of the file (if it could
-# be obtained via FILE_VERSION_FILTER)
-
-WARN_FORMAT = "$file:$line: $text"
-
-# The WARN_LOGFILE tag can be used to specify a file to which warning
-# and error messages should be written. If left blank the output is written
-# to stderr.
-
-WARN_LOGFILE =
-
-#---------------------------------------------------------------------------
-# configuration options related to the input files
-#---------------------------------------------------------------------------
-
-# The INPUT tag can be used to specify the files and/or directories that contain
-# documented source files. You may enter file names like "myfile.cpp" or
-# directories like "/usr/src/myproject". Separate the files or directories
-# with spaces.
-
-INPUT = @top_srcdir@/src @top_builddir@/src
-
-# If the value of the INPUT tag contains directories, you can use the
-# FILE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp
-# and *.h) to filter out the source-files in the directories. If left
-# blank the following patterns are tested:
-# *.c *.cc *.cxx *.cpp *.c++ *.java *.ii *.ixx *.ipp *.i++ *.inl *.h *.hh *.hxx
-# *.hpp *.h++ *.idl *.odl *.cs *.php *.php3 *.inc *.m *.mm *.py
-
-FILE_PATTERNS =
-
-# The RECURSIVE tag can be used to turn specify whether or not subdirectories
-# should be searched for input files as well. Possible values are YES and NO.
-# If left blank NO is used.
-
-RECURSIVE = NO
-
-# The EXCLUDE tag can be used to specify files and/or directories that should
-# excluded from the INPUT source files. This way you can easily exclude a
-# subdirectory from a directory tree whose root is specified with the INPUT tag.
-
-EXCLUDE =
-
-# The EXCLUDE_SYMLINKS tag can be used select whether or not files or
-# directories that are symbolic links (a Unix filesystem feature) are excluded
-# from the input.
-
-EXCLUDE_SYMLINKS = NO
-
-# If the value of the INPUT tag contains directories, you can use the
-# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude
-# certain files from those directories. Note that the wildcards are matched
-# against the file with absolute path, so to exclude all test directories
-# for example use the pattern */test/*
-
-EXCLUDE_PATTERNS =
-
-# The EXAMPLE_PATH tag can be used to specify one or more files or
-# directories that contain example code fragments that are included (see
-# the \include command).
-
-EXAMPLE_PATH =
-
-# If the value of the EXAMPLE_PATH tag contains directories, you can use the
-# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp
-# and *.h) to filter out the source-files in the directories. If left
-# blank all files are included.
-
-EXAMPLE_PATTERNS =
-
-# If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be
-# searched for input files to be used with the \include or \dontinclude
-# commands irrespective of the value of the RECURSIVE tag.
-# Possible values are YES and NO. If left blank NO is used.
-
-EXAMPLE_RECURSIVE = NO
-
-# The IMAGE_PATH tag can be used to specify one or more files or
-# directories that contain image that are included in the documentation (see
-# the \image command).
-
-IMAGE_PATH =
-
-# The INPUT_FILTER tag can be used to specify a program that doxygen should
-# invoke to filter for each input file. Doxygen will invoke the filter program
-# by executing (via popen()) the command <filter> <input-file>, where <filter>
-# is the value of the INPUT_FILTER tag, and <input-file> is the name of an
-# input file. Doxygen will then use the output that the filter program writes
-# to standard output. If FILTER_PATTERNS is specified, this tag will be
-# ignored.
-
-INPUT_FILTER =
-
-# The FILTER_PATTERNS tag can be used to specify filters on a per file pattern
-# basis. Doxygen will compare the file name with each pattern and apply the
-# filter if there is a match. The filters are a list of the form:
-# pattern=filter (like *.cpp=my_cpp_filter). See INPUT_FILTER for further
-# info on how filters are used. If FILTER_PATTERNS is empty, INPUT_FILTER
-# is applied to all files.
-
-FILTER_PATTERNS =
-
-# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using
-# INPUT_FILTER) will be used to filter the input files when producing source
-# files to browse (i.e. when SOURCE_BROWSER is set to YES).
-
-FILTER_SOURCE_FILES = NO
-
-#---------------------------------------------------------------------------
-# configuration options related to source browsing
-#---------------------------------------------------------------------------
-
-# If the SOURCE_BROWSER tag is set to YES then a list of source files will
-# be generated. Documented entities will be cross-referenced with these sources.
-# Note: To get rid of all source code in the generated output, make sure also
-# VERBATIM_HEADERS is set to NO.
-
-SOURCE_BROWSER = NO
-
-# Setting the INLINE_SOURCES tag to YES will include the body
-# of functions and classes directly in the documentation.
-
-INLINE_SOURCES = NO
-
-# Setting the STRIP_CODE_COMMENTS tag to YES (the default) will instruct
-# doxygen to hide any special comment blocks from generated source code
-# fragments. Normal C and C++ comments will always remain visible.
-
-STRIP_CODE_COMMENTS = YES
-
-# If the REFERENCED_BY_RELATION tag is set to YES (the default)
-# then for each documented function all documented
-# functions referencing it will be listed.
-
-REFERENCED_BY_RELATION = YES
-
-# If the REFERENCES_RELATION tag is set to YES (the default)
-# then for each documented function all documented entities
-# called/used by that function will be listed.
-
-REFERENCES_RELATION = YES
-
-# If the REFERENCES_LINK_SOURCE tag is set to YES (the default)
-# and SOURCE_BROWSER tag is set to YES, then the hyperlinks from
-# functions in REFERENCES_RELATION and REFERENCED_BY_RELATION lists will
-# link to the source code. Otherwise they will link to the documentstion.
-
-REFERENCES_LINK_SOURCE = YES
-
-# If the USE_HTAGS tag is set to YES then the references to source code
-# will point to the HTML generated by the htags(1) tool instead of doxygen
-# built-in source browser. The htags tool is part of GNU's global source
-# tagging system (see http://www.gnu.org/software/global/global.html). You
-# will need version 4.8.6 or higher.
-
-USE_HTAGS = NO
-
-# If the VERBATIM_HEADERS tag is set to YES (the default) then Doxygen
-# will generate a verbatim copy of the header file for each class for
-# which an include is specified. Set to NO to disable this.
-
-VERBATIM_HEADERS = YES
-
-#---------------------------------------------------------------------------
-# configuration options related to the alphabetical class index
-#---------------------------------------------------------------------------
-
-# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index
-# of all compounds will be generated. Enable this if the project
-# contains a lot of classes, structs, unions or interfaces.
-
-ALPHABETICAL_INDEX = NO
-
-# If the alphabetical index is enabled (see ALPHABETICAL_INDEX) then
-# the COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns
-# in which this list will be split (can be a number in the range [1..20])
-
-COLS_IN_ALPHA_INDEX = 5
-
-# In case all classes in a project start with a common prefix, all
-# classes will be put under the same header in the alphabetical index.
-# The IGNORE_PREFIX tag can be used to specify one or more prefixes that
-# should be ignored while generating the index headers.
-
-IGNORE_PREFIX =
-
-#---------------------------------------------------------------------------
-# configuration options related to the HTML output
-#---------------------------------------------------------------------------
-
-# If the GENERATE_HTML tag is set to YES (the default) Doxygen will
-# generate HTML output.
-
-GENERATE_HTML = YES
-
-# The HTML_OUTPUT tag is used to specify where the HTML docs will be put.
-# If a relative path is entered the value of OUTPUT_DIRECTORY will be
-# put in front of it. If left blank `html' will be used as the default path.
-
-HTML_OUTPUT = manual
-
-# The HTML_FILE_EXTENSION tag can be used to specify the file extension for
-# each generated HTML page (for example: .htm,.php,.asp). If it is left blank
-# doxygen will generate files with .html extension.
-
-HTML_FILE_EXTENSION = .html
-
-# The HTML_HEADER tag can be used to specify a personal HTML header for
-# each generated HTML page. If it is left blank doxygen will generate a
-# standard header.
-
-HTML_HEADER =
-
-# The HTML_FOOTER tag can be used to specify a personal HTML footer for
-# each generated HTML page. If it is left blank doxygen will generate a
-# standard footer.
-
-HTML_FOOTER =
-
-# The HTML_STYLESHEET tag can be used to specify a user-defined cascading
-# style sheet that is used by each HTML page. It can be used to
-# fine-tune the look of the HTML output. If the tag is left blank doxygen
-# will generate a default style sheet. Note that doxygen will try to copy
-# the style sheet file to the HTML output directory, so don't put your own
-# stylesheet in the HTML output directory as well, or it will be erased!
-
-HTML_STYLESHEET =
-
-# If the HTML_ALIGN_MEMBERS tag is set to YES, the members of classes,
-# files or namespaces will be aligned in HTML using tables. If set to
-# NO a bullet list will be used.
-
-HTML_ALIGN_MEMBERS = YES
-
-# If the GENERATE_HTMLHELP tag is set to YES, additional index files
-# will be generated that can be used as input for tools like the
-# Microsoft HTML help workshop to generate a compressed HTML help file (.chm)
-# of the generated HTML documentation.
-
-GENERATE_HTMLHELP = NO
-
-# If the GENERATE_HTMLHELP tag is set to YES, the CHM_FILE tag can
-# be used to specify the file name of the resulting .chm file. You
-# can add a path in front of the file if the result should not be
-# written to the html output directory.
-
-CHM_FILE =
-
-# If the GENERATE_HTMLHELP tag is set to YES, the HHC_LOCATION tag can
-# be used to specify the location (absolute path including file name) of
-# the HTML help compiler (hhc.exe). If non-empty doxygen will try to run
-# the HTML help compiler on the generated index.hhp.
-
-HHC_LOCATION =
-
-# If the GENERATE_HTMLHELP tag is set to YES, the GENERATE_CHI flag
-# controls if a separate .chi index file is generated (YES) or that
-# it should be included in the master .chm file (NO).
-
-GENERATE_CHI = NO
-
-# If the GENERATE_HTMLHELP tag is set to YES, the BINARY_TOC flag
-# controls whether a binary table of contents is generated (YES) or a
-# normal table of contents (NO) in the .chm file.
-
-BINARY_TOC = NO
-
-# The TOC_EXPAND flag can be set to YES to add extra items for group members
-# to the contents of the HTML help documentation and to the tree view.
-
-TOC_EXPAND = NO
-
-# The DISABLE_INDEX tag can be used to turn on/off the condensed index at
-# top of each HTML page. The value NO (the default) enables the index and
-# the value YES disables it.
-
-DISABLE_INDEX = NO
-
-# This tag can be used to set the number of enum values (range [1..20])
-# that doxygen will group on one line in the generated HTML documentation.
-
-ENUM_VALUES_PER_LINE = 4
-
-# If the GENERATE_TREEVIEW tag is set to YES, a side panel will be
-# generated containing a tree-like index structure (just like the one that
-# is generated for HTML Help). For this to work a browser that supports
-# JavaScript, DHTML, CSS and frames is required (for instance Mozilla 1.0+,
-# Netscape 6.0+, Internet explorer 5.0+, or Konqueror). Windows users are
-# probably better off using the HTML help feature.
-
-GENERATE_TREEVIEW = NO
-
-# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be
-# used to set the initial width (in pixels) of the frame in which the tree
-# is shown.
-
-TREEVIEW_WIDTH = 250
-
-#---------------------------------------------------------------------------
-# configuration options related to the LaTeX output
-#---------------------------------------------------------------------------
-
-# If the GENERATE_LATEX tag is set to YES (the default) Doxygen will
-# generate Latex output.
-
-GENERATE_LATEX = NO
-
-# The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put.
-# If a relative path is entered the value of OUTPUT_DIRECTORY will be
-# put in front of it. If left blank `latex' will be used as the default path.
-
-LATEX_OUTPUT = latex
-
-# The LATEX_CMD_NAME tag can be used to specify the LaTeX command name to be
-# invoked. If left blank `latex' will be used as the default command name.
-
-LATEX_CMD_NAME = latex
-
-# The MAKEINDEX_CMD_NAME tag can be used to specify the command name to
-# generate index for LaTeX. If left blank `makeindex' will be used as the
-# default command name.
-
-MAKEINDEX_CMD_NAME = makeindex
-
-# If the COMPACT_LATEX tag is set to YES Doxygen generates more compact
-# LaTeX documents. This may be useful for small projects and may help to
-# save some trees in general.
-
-COMPACT_LATEX = NO
-
-# The PAPER_TYPE tag can be used to set the paper type that is used
-# by the printer. Possible values are: a4, a4wide, letter, legal and
-# executive. If left blank a4wide will be used.
-
-PAPER_TYPE = a4wide
-
-# The EXTRA_PACKAGES tag can be to specify one or more names of LaTeX
-# packages that should be included in the LaTeX output.
-
-EXTRA_PACKAGES =
-
-# The LATEX_HEADER tag can be used to specify a personal LaTeX header for
-# the generated latex document. The header should contain everything until
-# the first chapter. If it is left blank doxygen will generate a
-# standard header. Notice: only use this tag if you know what you are doing!
-
-LATEX_HEADER =
-
-# If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated
-# is prepared for conversion to pdf (using ps2pdf). The pdf file will
-# contain links (just like the HTML output) instead of page references
-# This makes the output suitable for online browsing using a pdf viewer.
-
-PDF_HYPERLINKS = NO
-
-# If the USE_PDFLATEX tag is set to YES, pdflatex will be used instead of
-# plain latex in the generated Makefile. Set this option to YES to get a
-# higher quality PDF documentation.
-
-USE_PDFLATEX = NO
-
-# If the LATEX_BATCHMODE tag is set to YES, doxygen will add the \\batchmode.
-# command to the generated LaTeX files. This will instruct LaTeX to keep
-# running if errors occur, instead of asking the user for help.
-# This option is also used when generating formulas in HTML.
-
-LATEX_BATCHMODE = NO
-
-# If LATEX_HIDE_INDICES is set to YES then doxygen will not
-# include the index chapters (such as File Index, Compound Index, etc.)
-# in the output.
-
-LATEX_HIDE_INDICES = NO
-
-#---------------------------------------------------------------------------
-# configuration options related to the RTF output
-#---------------------------------------------------------------------------
-
-# If the GENERATE_RTF tag is set to YES Doxygen will generate RTF output
-# The RTF output is optimized for Word 97 and may not look very pretty with
-# other RTF readers or editors.
-
-GENERATE_RTF = NO
-
-# The RTF_OUTPUT tag is used to specify where the RTF docs will be put.
-# If a relative path is entered the value of OUTPUT_DIRECTORY will be
-# put in front of it. If left blank `rtf' will be used as the default path.
-
-RTF_OUTPUT = rtf
-
-# If the COMPACT_RTF tag is set to YES Doxygen generates more compact
-# RTF documents. This may be useful for small projects and may help to
-# save some trees in general.
-
-COMPACT_RTF = NO
-
-# If the RTF_HYPERLINKS tag is set to YES, the RTF that is generated
-# will contain hyperlink fields. The RTF file will
-# contain links (just like the HTML output) instead of page references.
-# This makes the output suitable for online browsing using WORD or other
-# programs which support those fields.
-# Note: wordpad (write) and others do not support links.
-
-RTF_HYPERLINKS = NO
-
-# Load stylesheet definitions from file. Syntax is similar to doxygen's
-# config file, i.e. a series of assignments. You only have to provide
-# replacements, missing definitions are set to their default value.
-
-RTF_STYLESHEET_FILE =
-
-# Set optional variables used in the generation of an rtf document.
-# Syntax is similar to doxygen's config file.
-
-RTF_EXTENSIONS_FILE =
-
-#---------------------------------------------------------------------------
-# configuration options related to the man page output
-#---------------------------------------------------------------------------
-
-# If the GENERATE_MAN tag is set to YES (the default) Doxygen will
-# generate man pages
-
-GENERATE_MAN = NO
-
-# The MAN_OUTPUT tag is used to specify where the man pages will be put.
-# If a relative path is entered the value of OUTPUT_DIRECTORY will be
-# put in front of it. If left blank `man' will be used as the default path.
-
-MAN_OUTPUT = man
-
-# The MAN_EXTENSION tag determines the extension that is added to
-# the generated man pages (default is the subroutine's section .3)
-
-MAN_EXTENSION = .3
-
-# If the MAN_LINKS tag is set to YES and Doxygen generates man output,
-# then it will generate one additional man file for each entity
-# documented in the real man page(s). These additional files
-# only source the real man page, but without them the man command
-# would be unable to find the correct page. The default is NO.
-
-MAN_LINKS = NO
-
-#---------------------------------------------------------------------------
-# configuration options related to the XML output
-#---------------------------------------------------------------------------
-
-# If the GENERATE_XML tag is set to YES Doxygen will
-# generate an XML file that captures the structure of
-# the code including all documentation.
-
-GENERATE_XML = NO
-
-# The XML_OUTPUT tag is used to specify where the XML pages will be put.
-# If a relative path is entered the value of OUTPUT_DIRECTORY will be
-# put in front of it. If left blank `xml' will be used as the default path.
-
-XML_OUTPUT = xml
-
-# The XML_SCHEMA tag can be used to specify an XML schema,
-# which can be used by a validating XML parser to check the
-# syntax of the XML files.
-
-XML_SCHEMA =
-
-# The XML_DTD tag can be used to specify an XML DTD,
-# which can be used by a validating XML parser to check the
-# syntax of the XML files.
-
-XML_DTD =
-
-# If the XML_PROGRAMLISTING tag is set to YES Doxygen will
-# dump the program listings (including syntax highlighting
-# and cross-referencing information) to the XML output. Note that
-# enabling this will significantly increase the size of the XML output.
-
-XML_PROGRAMLISTING = YES
-
-#---------------------------------------------------------------------------
-# configuration options for the AutoGen Definitions output
-#---------------------------------------------------------------------------
-
-# If the GENERATE_AUTOGEN_DEF tag is set to YES Doxygen will
-# generate an AutoGen Definitions (see autogen.sf.net) file
-# that captures the structure of the code including all
-# documentation. Note that this feature is still experimental
-# and incomplete at the moment.
-
-GENERATE_AUTOGEN_DEF = NO
-
-#---------------------------------------------------------------------------
-# configuration options related to the Perl module output
-#---------------------------------------------------------------------------
-
-# If the GENERATE_PERLMOD tag is set to YES Doxygen will
-# generate a Perl module file that captures the structure of
-# the code including all documentation. Note that this
-# feature is still experimental and incomplete at the
-# moment.
-
-GENERATE_PERLMOD = NO
-
-# If the PERLMOD_LATEX tag is set to YES Doxygen will generate
-# the necessary Makefile rules, Perl scripts and LaTeX code to be able
-# to generate PDF and DVI output from the Perl module output.
-
-PERLMOD_LATEX = NO
-
-# If the PERLMOD_PRETTY tag is set to YES the Perl module output will be
-# nicely formatted so it can be parsed by a human reader. This is useful
-# if you want to understand what is going on. On the other hand, if this
-# tag is set to NO the size of the Perl module output will be much smaller
-# and Perl will parse it just the same.
-
-PERLMOD_PRETTY = YES
-
-# The names of the make variables in the generated doxyrules.make file
-# are prefixed with the string contained in PERLMOD_MAKEVAR_PREFIX.
-# This is useful so different doxyrules.make files included by the same
-# Makefile don't overwrite each other's variables.
-
-PERLMOD_MAKEVAR_PREFIX =
-
-#---------------------------------------------------------------------------
-# Configuration options related to the preprocessor
-#---------------------------------------------------------------------------
-
-# If the ENABLE_PREPROCESSING tag is set to YES (the default) Doxygen will
-# evaluate all C-preprocessor directives found in the sources and include
-# files.
-
-ENABLE_PREPROCESSING = YES
-
-# If the MACRO_EXPANSION tag is set to YES Doxygen will expand all macro
-# names in the source code. If set to NO (the default) only conditional
-# compilation will be performed. Macro expansion can be done in a controlled
-# way by setting EXPAND_ONLY_PREDEF to YES.
-
-MACRO_EXPANSION = NO
-
-# If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES
-# then the macro expansion is limited to the macros specified with the
-# PREDEFINED and EXPAND_AS_DEFINED tags.
-
-EXPAND_ONLY_PREDEF = NO
-
-# If the SEARCH_INCLUDES tag is set to YES (the default) the includes files
-# in the INCLUDE_PATH (see below) will be search if a #include is found.
-
-SEARCH_INCLUDES = YES
-
-# The INCLUDE_PATH tag can be used to specify one or more directories that
-# contain include files that are not input files but should be processed by
-# the preprocessor.
-
-INCLUDE_PATH =
-
-# You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard
-# patterns (like *.h and *.hpp) to filter out the header-files in the
-# directories. If left blank, the patterns specified with FILE_PATTERNS will
-# be used.
-
-INCLUDE_FILE_PATTERNS =
-
-# The PREDEFINED tag can be used to specify one or more macro names that
-# are defined before the preprocessor is started (similar to the -D option of
-# gcc). The argument of the tag is a list of macros of the form: name
-# or name=definition (no spaces). If the definition and the = are
-# omitted =1 is assumed. To prevent a macro definition from being
-# undefined via #undef or recursively expanded use the := operator
-# instead of the = operator.
-
-PREDEFINED =
-
-# If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then
-# this tag can be used to specify a list of macro names that should be expanded.
-# The macro definition that is found in the sources will be used.
-# Use the PREDEFINED tag if you want to use a different macro definition.
-
-EXPAND_AS_DEFINED =
-
-# If the SKIP_FUNCTION_MACROS tag is set to YES (the default) then
-# doxygen's preprocessor will remove all function-like macros that are alone
-# on a line, have an all uppercase name, and do not end with a semicolon. Such
-# function macros are typically used for boiler-plate code, and will confuse
-# the parser if not removed.
-
-SKIP_FUNCTION_MACROS = YES
-
-#---------------------------------------------------------------------------
-# Configuration::additions related to external references
-#---------------------------------------------------------------------------
-
-# The TAGFILES option can be used to specify one or more tagfiles.
-# Optionally an initial location of the external documentation
-# can be added for each tagfile. The format of a tag file without
-# this location is as follows:
-# TAGFILES = file1 file2 ...
-# Adding location for the tag files is done as follows:
-# TAGFILES = file1=loc1 "file2 = loc2" ...
-# where "loc1" and "loc2" can be relative or absolute paths or
-# URLs. If a location is present for each tag, the installdox tool
-# does not have to be run to correct the links.
-# Note that each tag file must have a unique name
-# (where the name does NOT include the path)
-# If a tag file is not located in the directory in which doxygen
-# is run, you must also specify the path to the tagfile here.
-
-TAGFILES =
-
-# When a file name is specified after GENERATE_TAGFILE, doxygen will create
-# a tag file that is based on the input files it reads.
-
-GENERATE_TAGFILE =
-
-# If the ALLEXTERNALS tag is set to YES all external classes will be listed
-# in the class index. If set to NO only the inherited external classes
-# will be listed.
-
-ALLEXTERNALS = NO
-
-# If the EXTERNAL_GROUPS tag is set to YES all external groups will be listed
-# in the modules index. If set to NO, only the current project's groups will
-# be listed.
-
-EXTERNAL_GROUPS = YES
-
-# The PERL_PATH should be the absolute path and name of the perl script
-# interpreter (i.e. the result of `which perl').
-
-PERL_PATH = /usr/bin/perl
-
-#---------------------------------------------------------------------------
-# Configuration options related to the dot tool
-#---------------------------------------------------------------------------
-
-# If the CLASS_DIAGRAMS tag is set to YES (the default) Doxygen will
-# generate a inheritance diagram (in HTML, RTF and LaTeX) for classes with base
-# or super classes. Setting the tag to NO turns the diagrams off. Note that
-# this option is superseded by the HAVE_DOT option below. This is only a
-# fallback. It is recommended to install and use dot, since it yields more
-# powerful graphs.
-
-CLASS_DIAGRAMS = YES
-
-# If set to YES, the inheritance and collaboration graphs will hide
-# inheritance and usage relations if the target is undocumented
-# or is not a class.
-
-HIDE_UNDOC_RELATIONS = YES
-
-# If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is
-# available from the path. This tool is part of Graphviz, a graph visualization
-# toolkit from AT&T and Lucent Bell Labs. The other options in this section
-# have no effect if this option is set to NO (the default)
-
-HAVE_DOT = YES
-
-# If the CLASS_GRAPH and HAVE_DOT tags are set to YES then doxygen
-# will generate a graph for each documented class showing the direct and
-# indirect inheritance relations. Setting this tag to YES will force the
-# the CLASS_DIAGRAMS tag to NO.
-
-CLASS_GRAPH = YES
-
-# If the COLLABORATION_GRAPH and HAVE_DOT tags are set to YES then doxygen
-# will generate a graph for each documented class showing the direct and
-# indirect implementation dependencies (inheritance, containment, and
-# class references variables) of the class with other documented classes.
-
-COLLABORATION_GRAPH = YES
-
-# If the GROUP_GRAPHS and HAVE_DOT tags are set to YES then doxygen
-# will generate a graph for groups, showing the direct groups dependencies
-
-GROUP_GRAPHS = YES
-
-# If the UML_LOOK tag is set to YES doxygen will generate inheritance and
-# collaboration diagrams in a style similar to the OMG's Unified Modeling
-# Language.
-
-UML_LOOK = NO
-
-# If set to YES, the inheritance and collaboration graphs will show the
-# relations between templates and their instances.
-
-TEMPLATE_RELATIONS = NO
-
-# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDE_GRAPH, and HAVE_DOT
-# tags are set to YES then doxygen will generate a graph for each documented
-# file showing the direct and indirect include dependencies of the file with
-# other documented files.
-
-INCLUDE_GRAPH = YES
-
-# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDED_BY_GRAPH, and
-# HAVE_DOT tags are set to YES then doxygen will generate a graph for each
-# documented header file showing the documented files that directly or
-# indirectly include this file.
-
-INCLUDED_BY_GRAPH = YES
-
-# If the CALL_GRAPH and HAVE_DOT tags are set to YES then doxygen will
-# generate a call dependency graph for every global function or class method.
-# Note that enabling this option will significantly increase the time of a run.
-# So in most cases it will be better to enable call graphs for selected
-# functions only using the \callgraph command.
-
-CALL_GRAPH = NO
-
-# If the CALLER_GRAPH and HAVE_DOT tags are set to YES then doxygen will
-# generate a caller dependency graph for every global function or class method.
-# Note that enabling this option will significantly increase the time of a run.
-# So in most cases it will be better to enable caller graphs for selected
-# functions only using the \callergraph command.
-
-CALLER_GRAPH = NO
-
-# If the GRAPHICAL_HIERARCHY and HAVE_DOT tags are set to YES then doxygen
-# will graphical hierarchy of all classes instead of a textual one.
-
-GRAPHICAL_HIERARCHY = YES
-
-# If the DIRECTORY_GRAPH, SHOW_DIRECTORIES and HAVE_DOT tags are set to YES
-# then doxygen will show the dependencies a directory has on other directories
-# in a graphical way. The dependency relations are determined by the #include
-# relations between the files in the directories.
-
-DIRECTORY_GRAPH = YES
-
-# The DOT_IMAGE_FORMAT tag can be used to set the image format of the images
-# generated by dot. Possible values are png, jpg, or gif
-# If left blank png will be used.
-
-DOT_IMAGE_FORMAT = png
-
-# The tag DOT_PATH can be used to specify the path where the dot tool can be
-# found. If left blank, it is assumed the dot tool can be found in the path.
-
-DOT_PATH =
-
-# The DOTFILE_DIRS tag can be used to specify one or more directories that
-# contain dot files that are included in the documentation (see the
-# \dotfile command).
-
-DOTFILE_DIRS =
-
-# The MAX_DOT_GRAPH_WIDTH tag can be used to set the maximum allowed width
-# (in pixels) of the graphs generated by dot. If a graph becomes larger than
-# this value, doxygen will try to truncate the graph, so that it fits within
-# the specified constraint. Beware that most browsers cannot cope with very
-# large images.
-
-MAX_DOT_GRAPH_WIDTH = 1024
-
-# The MAX_DOT_GRAPH_HEIGHT tag can be used to set the maximum allows height
-# (in pixels) of the graphs generated by dot. If a graph becomes larger than
-# this value, doxygen will try to truncate the graph, so that it fits within
-# the specified constraint. Beware that most browsers cannot cope with very
-# large images.
-
-MAX_DOT_GRAPH_HEIGHT = 1024
-
-# The MAX_DOT_GRAPH_DEPTH tag can be used to set the maximum depth of the
-# graphs generated by dot. A depth value of 3 means that only nodes reachable
-# from the root by following a path via at most 3 edges will be shown. Nodes
-# that lay further from the root node will be omitted. Note that setting this
-# option to 1 or 2 may greatly reduce the computation time needed for large
-# code bases. Also note that a graph may be further truncated if the graph's
-# image dimensions are not sufficient to fit the graph (see MAX_DOT_GRAPH_WIDTH
-# and MAX_DOT_GRAPH_HEIGHT). If 0 is used for the depth value (the default),
-# the graph is not depth-constrained.
-
-MAX_DOT_GRAPH_DEPTH = 0
-
-# Set the DOT_TRANSPARENT tag to YES to generate images with a transparent
-# background. This is disabled by default, which results in a white background.
-# Warning: Depending on the platform used, enabling this option may lead to
-# badly anti-aliased labels on the edges of a graph (i.e. they become hard to
-# read).
-
-DOT_TRANSPARENT = NO
-
-# Set the DOT_MULTI_TARGETS tag to YES allow dot to generate multiple output
-# files in one run (i.e. multiple -o and -T options on the command line). This
-# makes dot run faster, but since only newer versions of dot (>1.8.10)
-# support this, this feature is disabled by default.
-
-DOT_MULTI_TARGETS = NO
-
-# If the GENERATE_LEGEND tag is set to YES (the default) Doxygen will
-# generate a legend page explaining the meaning of the various boxes and
-# arrows in the dot generated graphs.
-
-GENERATE_LEGEND = YES
-
-# If the DOT_CLEANUP tag is set to YES (the default) Doxygen will
-# remove the intermediate dot files that are used to generate
-# the various graphs.
-
-DOT_CLEANUP = YES
-
-#---------------------------------------------------------------------------
-# Configuration::additions related to the search engine
-#---------------------------------------------------------------------------
-
-# The SEARCHENGINE tag specifies whether or not a search engine should be
-# used. If set to NO the values of all tags below this one will be ignored.
-
-SEARCHENGINE = NO
+# Doxyfile 1.5.0
+
+# This file describes the settings to be used by the documentation system
+# doxygen (www.doxygen.org) for a project
+#
+# All text after a hash (#) is considered a comment and will be ignored
+# The format is:
+# TAG = value [value, ...]
+# For lists items can also be appended using:
+# TAG += value [value, ...]
+# Values that contain spaces should be placed between quotes (" ")
+
+#---------------------------------------------------------------------------
+# Project related configuration options
+#---------------------------------------------------------------------------
+
+# The PROJECT_NAME tag is a single word (or a sequence of words surrounded
+# by quotes) that should identify the project.
+
+PROJECT_NAME = "XCB"
+
+# The PROJECT_NUMBER tag can be used to enter a project or revision number.
+# This could be handy for archiving the generated documentation or
+# if some version control system is used.
+
+PROJECT_NUMBER = @VERSION@
+
+# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute)
+# base path where the generated documentation will be put.
+# If a relative path is entered, it will be relative to the location
+# where doxygen was started. If left blank the current directory will be used.
+
+OUTPUT_DIRECTORY = @top_builddir@/doc
+
+# If the CREATE_SUBDIRS tag is set to YES, then doxygen will create
+# 4096 sub-directories (in 2 levels) under the output directory of each output
+# format and will distribute the generated files over these directories.
+# Enabling this option can be useful when feeding doxygen a huge amount of
+# source files, where putting all generated files in the same directory would
+# otherwise cause performance problems for the file system.
+
+CREATE_SUBDIRS = NO
+
+# The OUTPUT_LANGUAGE tag is used to specify the language in which all
+# documentation generated by doxygen is written. Doxygen will use this
+# information to generate all constant output in the proper language.
+# The default language is English, other supported languages are:
+# Afrikaans, Arabic, Brazilian, Catalan, Chinese, Chinese-Traditional,
+# Croatian, Czech, Danish, Dutch, Finnish, French, German, Greek, Hungarian,
+# Italian, Japanese, Japanese-en (Japanese with English messages), Korean,
+# Korean-en, Lithuanian, Norwegian, Polish, Portuguese, Romanian, Russian,
+# Serbian, Slovak, Slovene, Spanish, Swedish, and Ukrainian.
+
+OUTPUT_LANGUAGE = English
+
+# This tag can be used to specify the encoding used in the generated output.
+# The encoding is not always determined by the language that is chosen,
+# but also whether or not the output is meant for Windows or non-Windows users.
+# In case there is a difference, setting the USE_WINDOWS_ENCODING tag to YES
+# forces the Windows encoding (this is the default for the Windows binary),
+# whereas setting the tag to NO uses a Unix-style encoding (the default for
+# all platforms other than Windows).
+
+USE_WINDOWS_ENCODING = NO
+
+# If the BRIEF_MEMBER_DESC tag is set to YES (the default) Doxygen will
+# include brief member descriptions after the members that are listed in
+# the file and class documentation (similar to JavaDoc).
+# Set to NO to disable this.
+
+BRIEF_MEMBER_DESC = YES
+
+# If the REPEAT_BRIEF tag is set to YES (the default) Doxygen will prepend
+# the brief description of a member or function before the detailed description.
+# Note: if both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the
+# brief descriptions will be completely suppressed.
+
+REPEAT_BRIEF = YES
+
+# This tag implements a quasi-intelligent brief description abbreviator
+# that is used to form the text in various listings. Each string
+# in this list, if found as the leading text of the brief description, will be
+# stripped from the text and the result after processing the whole list, is
+# used as the annotated text. Otherwise, the brief description is used as-is.
+# If left blank, the following values are used ("$name" is automatically
+# replaced with the name of the entity): "The $name class" "The $name widget"
+# "The $name file" "is" "provides" "specifies" "contains"
+# "represents" "a" "an" "the"
+
+ABBREVIATE_BRIEF =
+
+# If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then
+# Doxygen will generate a detailed section even if there is only a brief
+# description.
+
+ALWAYS_DETAILED_SEC = NO
+
+# If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all
+# inherited members of a class in the documentation of that class as if those
+# members were ordinary class members. Constructors, destructors and assignment
+# operators of the base classes will not be shown.
+
+INLINE_INHERITED_MEMB = NO
+
+# If the FULL_PATH_NAMES tag is set to YES then Doxygen will prepend the full
+# path before files name in the file list and in the header files. If set
+# to NO the shortest path that makes the file name unique will be used.
+
+FULL_PATH_NAMES = NO
+
+# If the FULL_PATH_NAMES tag is set to YES then the STRIP_FROM_PATH tag
+# can be used to strip a user-defined part of the path. Stripping is
+# only done if one of the specified strings matches the left-hand part of
+# the path. The tag can be used to show relative paths in the file list.
+# If left blank the directory from which doxygen is run is used as the
+# path to strip.
+
+STRIP_FROM_PATH =
+
+# The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of
+# the path mentioned in the documentation of a class, which tells
+# the reader which header file to include in order to use a class.
+# If left blank only the name of the header file containing the class
+# definition is used. Otherwise one should specify the include paths that
+# are normally passed to the compiler using the -I flag.
+
+STRIP_FROM_INC_PATH =
+
+# If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter
+# (but less readable) file names. This can be useful is your file systems
+# doesn't support long names like on DOS, Mac, or CD-ROM.
+
+SHORT_NAMES = NO
+
+# If the JAVADOC_AUTOBRIEF tag is set to YES then Doxygen
+# will interpret the first line (until the first dot) of a JavaDoc-style
+# comment as the brief description. If set to NO, the JavaDoc
+# comments will behave just like the Qt-style comments (thus requiring an
+# explicit @brief command for a brief description.
+
+JAVADOC_AUTOBRIEF = NO
+
+# The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make Doxygen
+# treat a multi-line C++ special comment block (i.e. a block of //! or ///
+# comments) as a brief description. This used to be the default behaviour.
+# The new default is to treat a multi-line C++ comment block as a detailed
+# description. Set this tag to YES if you prefer the old behaviour instead.
+
+MULTILINE_CPP_IS_BRIEF = NO
+
+# If the DETAILS_AT_TOP tag is set to YES then Doxygen
+# will output the detailed description near the top, like JavaDoc.
+# If set to NO, the detailed description appears after the member
+# documentation.
+
+DETAILS_AT_TOP = NO
+
+# If the INHERIT_DOCS tag is set to YES (the default) then an undocumented
+# member inherits the documentation from any documented member that it
+# re-implements.
+
+INHERIT_DOCS = YES
+
+# If the SEPARATE_MEMBER_PAGES tag is set to YES, then doxygen will produce
+# a new page for each member. If set to NO, the documentation of a member will
+# be part of the file/class/namespace that contains it.
+
+SEPARATE_MEMBER_PAGES = NO
+
+# The TAB_SIZE tag can be used to set the number of spaces in a tab.
+# Doxygen uses this value to replace tabs by spaces in code fragments.
+
+TAB_SIZE = 8
+
+# This tag can be used to specify a number of aliases that acts
+# as commands in the documentation. An alias has the form "name=value".
+# For example adding "sideeffect=\par Side Effects:\n" will allow you to
+# put the command \sideeffect (or @sideeffect) in the documentation, which
+# will result in a user-defined paragraph with heading "Side Effects:".
+# You can put \n's in the value part of an alias to insert newlines.
+
+ALIASES =
+
+# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C
+# sources only. Doxygen will then generate output that is more tailored for C.
+# For instance, some of the names that are used will be different. The list
+# of all members will be omitted, etc.
+
+OPTIMIZE_OUTPUT_FOR_C = YES
+
+# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java
+# sources only. Doxygen will then generate output that is more tailored for Java.
+# For instance, namespaces will be presented as packages, qualified scopes
+# will look different, etc.
+
+OPTIMIZE_OUTPUT_JAVA = NO
+
+# If you use STL classes (i.e. std::string, std::vector, etc.) but do not want to
+# include (a tag file for) the STL sources as input, then you should
+# set this tag to YES in order to let doxygen match functions declarations and
+# definitions whose arguments contain STL classes (e.g. func(std::string); v.s.
+# func(std::string) {}). This also make the inheritance and collaboration
+# diagrams that involve STL classes more complete and accurate.
+
+BUILTIN_STL_SUPPORT = NO
+
+# If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC
+# tag is set to YES, then doxygen will reuse the documentation of the first
+# member in the group (if any) for the other members of the group. By default
+# all members of a group must be documented explicitly.
+
+DISTRIBUTE_GROUP_DOC = NO
+
+# Set the SUBGROUPING tag to YES (the default) to allow class member groups of
+# the same type (for instance a group of public functions) to be put as a
+# subgroup of that type (e.g. under the Public Functions section). Set it to
+# NO to prevent subgrouping. Alternatively, this can be done per class using
+# the \nosubgrouping command.
+
+SUBGROUPING = YES
+
+#---------------------------------------------------------------------------
+# Build related configuration options
+#---------------------------------------------------------------------------
+
+# If the EXTRACT_ALL tag is set to YES doxygen will assume all entities in
+# documentation are documented, even if no documentation was available.
+# Private class members and static file members will be hidden unless
+# the EXTRACT_PRIVATE and EXTRACT_STATIC tags are set to YES
+
+EXTRACT_ALL = NO
+
+# If the EXTRACT_PRIVATE tag is set to YES all private members of a class
+# will be included in the documentation.
+
+EXTRACT_PRIVATE = NO
+
+# If the EXTRACT_STATIC tag is set to YES all static members of a file
+# will be included in the documentation.
+
+EXTRACT_STATIC = NO
+
+# If the EXTRACT_LOCAL_CLASSES tag is set to YES classes (and structs)
+# defined locally in source files will be included in the documentation.
+# If set to NO only classes defined in header files are included.
+
+EXTRACT_LOCAL_CLASSES = YES
+
+# This flag is only useful for Objective-C code. When set to YES local
+# methods, which are defined in the implementation section but not in
+# the interface are included in the documentation.
+# If set to NO (the default) only methods in the interface are included.
+
+EXTRACT_LOCAL_METHODS = NO
+
+# If the HIDE_UNDOC_MEMBERS tag is set to YES, Doxygen will hide all
+# undocumented members of documented classes, files or namespaces.
+# If set to NO (the default) these members will be included in the
+# various overviews, but no documentation section is generated.
+# This option has no effect if EXTRACT_ALL is enabled.
+
+HIDE_UNDOC_MEMBERS = NO
+
+# If the HIDE_UNDOC_CLASSES tag is set to YES, Doxygen will hide all
+# undocumented classes that are normally visible in the class hierarchy.
+# If set to NO (the default) these classes will be included in the various
+# overviews. This option has no effect if EXTRACT_ALL is enabled.
+
+HIDE_UNDOC_CLASSES = NO
+
+# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, Doxygen will hide all
+# friend (class|struct|union) declarations.
+# If set to NO (the default) these declarations will be included in the
+# documentation.
+
+HIDE_FRIEND_COMPOUNDS = NO
+
+# If the HIDE_IN_BODY_DOCS tag is set to YES, Doxygen will hide any
+# documentation blocks found inside the body of a function.
+# If set to NO (the default) these blocks will be appended to the
+# function's detailed documentation block.
+
+HIDE_IN_BODY_DOCS = NO
+
+# The INTERNAL_DOCS tag determines if documentation
+# that is typed after a \internal command is included. If the tag is set
+# to NO (the default) then the documentation will be excluded.
+# Set it to YES to include the internal documentation.
+
+INTERNAL_DOCS = NO
+
+# If the CASE_SENSE_NAMES tag is set to NO then Doxygen will only generate
+# file names in lower-case letters. If set to YES upper-case letters are also
+# allowed. This is useful if you have classes or files whose names only differ
+# in case and if your file system supports case sensitive file names. Windows
+# and Mac users are advised to set this option to NO.
+
+CASE_SENSE_NAMES = YES
+
+# If the HIDE_SCOPE_NAMES tag is set to NO (the default) then Doxygen
+# will show members with their full class and namespace scopes in the
+# documentation. If set to YES the scope will be hidden.
+
+HIDE_SCOPE_NAMES = NO
+
+# If the SHOW_INCLUDE_FILES tag is set to YES (the default) then Doxygen
+# will put a list of the files that are included by a file in the documentation
+# of that file.
+
+SHOW_INCLUDE_FILES = YES
+
+# If the INLINE_INFO tag is set to YES (the default) then a tag [inline]
+# is inserted in the documentation for inline members.
+
+INLINE_INFO = YES
+
+# If the SORT_MEMBER_DOCS tag is set to YES (the default) then doxygen
+# will sort the (detailed) documentation of file and class members
+# alphabetically by member name. If set to NO the members will appear in
+# declaration order.
+
+SORT_MEMBER_DOCS = YES
+
+# If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the
+# brief documentation of file, namespace and class members alphabetically
+# by member name. If set to NO (the default) the members will appear in
+# declaration order.
+
+SORT_BRIEF_DOCS = NO
+
+# If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be
+# sorted by fully-qualified names, including namespaces. If set to
+# NO (the default), the class list will be sorted only by class name,
+# not including the namespace part.
+# Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES.
+# Note: This option applies only to the class list, not to the
+# alphabetical list.
+
+SORT_BY_SCOPE_NAME = NO
+
+# The GENERATE_TODOLIST tag can be used to enable (YES) or
+# disable (NO) the todo list. This list is created by putting \todo
+# commands in the documentation.
+
+GENERATE_TODOLIST = YES
+
+# The GENERATE_TESTLIST tag can be used to enable (YES) or
+# disable (NO) the test list. This list is created by putting \test
+# commands in the documentation.
+
+GENERATE_TESTLIST = YES
+
+# The GENERATE_BUGLIST tag can be used to enable (YES) or
+# disable (NO) the bug list. This list is created by putting \bug
+# commands in the documentation.
+
+GENERATE_BUGLIST = YES
+
+# The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or
+# disable (NO) the deprecated list. This list is created by putting
+# \deprecated commands in the documentation.
+
+GENERATE_DEPRECATEDLIST= YES
+
+# The ENABLED_SECTIONS tag can be used to enable conditional
+# documentation sections, marked by \if sectionname ... \endif.
+
+ENABLED_SECTIONS =
+
+# The MAX_INITIALIZER_LINES tag determines the maximum number of lines
+# the initial value of a variable or define consists of for it to appear in
+# the documentation. If the initializer consists of more lines than specified
+# here it will be hidden. Use a value of 0 to hide initializers completely.
+# The appearance of the initializer of individual variables and defines in the
+# documentation can be controlled using \showinitializer or \hideinitializer
+# command in the documentation regardless of this setting.
+
+MAX_INITIALIZER_LINES = 30
+
+# Set the SHOW_USED_FILES tag to NO to disable the list of files generated
+# at the bottom of the documentation of classes and structs. If set to YES the
+# list will mention the files that were used to generate the documentation.
+
+SHOW_USED_FILES = YES
+
+# If the sources in your project are distributed over multiple directories
+# then setting the SHOW_DIRECTORIES tag to YES will show the directory hierarchy
+# in the documentation. The default is NO.
+
+SHOW_DIRECTORIES = NO
+
+# The FILE_VERSION_FILTER tag can be used to specify a program or script that
+# doxygen should invoke to get the current version for each file (typically from the
+# version control system). Doxygen will invoke the program by executing (via
+# popen()) the command <command> <input-file>, where <command> is the value of
+# the FILE_VERSION_FILTER tag, and <input-file> is the name of an input file
+# provided by doxygen. Whatever the program writes to standard output
+# is used as the file version. See the manual for examples.
+
+FILE_VERSION_FILTER =
+
+#---------------------------------------------------------------------------
+# configuration options related to warning and progress messages
+#---------------------------------------------------------------------------
+
+# The QUIET tag can be used to turn on/off the messages that are generated
+# by doxygen. Possible values are YES and NO. If left blank NO is used.
+
+QUIET = YES
+
+# The WARNINGS tag can be used to turn on/off the warning messages that are
+# generated by doxygen. Possible values are YES and NO. If left blank
+# NO is used.
+
+WARNINGS = YES
+
+# If WARN_IF_UNDOCUMENTED is set to YES, then doxygen will generate warnings
+# for undocumented members. If EXTRACT_ALL is set to YES then this flag will
+# automatically be disabled.
+
+# XXX: In the future this should be turned on. For now it generates too much noise.
+WARN_IF_UNDOCUMENTED = NO
+
+# If WARN_IF_DOC_ERROR is set to YES, doxygen will generate warnings for
+# potential errors in the documentation, such as not documenting some
+# parameters in a documented function, or documenting parameters that
+# don't exist or using markup commands wrongly.
+
+WARN_IF_DOC_ERROR = YES
+
+# This WARN_NO_PARAMDOC option can be abled to get warnings for
+# functions that are documented, but have no documentation for their parameters
+# or return value. If set to NO (the default) doxygen will only warn about
+# wrong or incomplete parameter documentation, but not about the absence of
+# documentation.
+
+WARN_NO_PARAMDOC = YES
+
+# The WARN_FORMAT tag determines the format of the warning messages that
+# doxygen can produce. The string should contain the $file, $line, and $text
+# tags, which will be replaced by the file and line number from which the
+# warning originated and the warning text. Optionally the format may contain
+# $version, which will be replaced by the version of the file (if it could
+# be obtained via FILE_VERSION_FILTER)
+
+WARN_FORMAT = "$file:$line: $text"
+
+# The WARN_LOGFILE tag can be used to specify a file to which warning
+# and error messages should be written. If left blank the output is written
+# to stderr.
+
+WARN_LOGFILE =
+
+#---------------------------------------------------------------------------
+# configuration options related to the input files
+#---------------------------------------------------------------------------
+
+# The INPUT tag can be used to specify the files and/or directories that contain
+# documented source files. You may enter file names like "myfile.cpp" or
+# directories like "/usr/src/myproject". Separate the files or directories
+# with spaces.
+
+INPUT = @top_srcdir@/src @top_builddir@/src
+
+# If the value of the INPUT tag contains directories, you can use the
+# FILE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp
+# and *.h) to filter out the source-files in the directories. If left
+# blank the following patterns are tested:
+# *.c *.cc *.cxx *.cpp *.c++ *.java *.ii *.ixx *.ipp *.i++ *.inl *.h *.hh *.hxx
+# *.hpp *.h++ *.idl *.odl *.cs *.php *.php3 *.inc *.m *.mm *.py
+
+FILE_PATTERNS =
+
+# The RECURSIVE tag can be used to turn specify whether or not subdirectories
+# should be searched for input files as well. Possible values are YES and NO.
+# If left blank NO is used.
+
+RECURSIVE = NO
+
+# The EXCLUDE tag can be used to specify files and/or directories that should
+# excluded from the INPUT source files. This way you can easily exclude a
+# subdirectory from a directory tree whose root is specified with the INPUT tag.
+
+EXCLUDE =
+
+# The EXCLUDE_SYMLINKS tag can be used select whether or not files or
+# directories that are symbolic links (a Unix filesystem feature) are excluded
+# from the input.
+
+EXCLUDE_SYMLINKS = NO
+
+# If the value of the INPUT tag contains directories, you can use the
+# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude
+# certain files from those directories. Note that the wildcards are matched
+# against the file with absolute path, so to exclude all test directories
+# for example use the pattern */test/*
+
+EXCLUDE_PATTERNS =
+
+# The EXAMPLE_PATH tag can be used to specify one or more files or
+# directories that contain example code fragments that are included (see
+# the \include command).
+
+EXAMPLE_PATH =
+
+# If the value of the EXAMPLE_PATH tag contains directories, you can use the
+# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp
+# and *.h) to filter out the source-files in the directories. If left
+# blank all files are included.
+
+EXAMPLE_PATTERNS =
+
+# If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be
+# searched for input files to be used with the \include or \dontinclude
+# commands irrespective of the value of the RECURSIVE tag.
+# Possible values are YES and NO. If left blank NO is used.
+
+EXAMPLE_RECURSIVE = NO
+
+# The IMAGE_PATH tag can be used to specify one or more files or
+# directories that contain image that are included in the documentation (see
+# the \image command).
+
+IMAGE_PATH =
+
+# The INPUT_FILTER tag can be used to specify a program that doxygen should
+# invoke to filter for each input file. Doxygen will invoke the filter program
+# by executing (via popen()) the command <filter> <input-file>, where <filter>
+# is the value of the INPUT_FILTER tag, and <input-file> is the name of an
+# input file. Doxygen will then use the output that the filter program writes
+# to standard output. If FILTER_PATTERNS is specified, this tag will be
+# ignored.
+
+INPUT_FILTER =
+
+# The FILTER_PATTERNS tag can be used to specify filters on a per file pattern
+# basis. Doxygen will compare the file name with each pattern and apply the
+# filter if there is a match. The filters are a list of the form:
+# pattern=filter (like *.cpp=my_cpp_filter). See INPUT_FILTER for further
+# info on how filters are used. If FILTER_PATTERNS is empty, INPUT_FILTER
+# is applied to all files.
+
+FILTER_PATTERNS =
+
+# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using
+# INPUT_FILTER) will be used to filter the input files when producing source
+# files to browse (i.e. when SOURCE_BROWSER is set to YES).
+
+FILTER_SOURCE_FILES = NO
+
+#---------------------------------------------------------------------------
+# configuration options related to source browsing
+#---------------------------------------------------------------------------
+
+# If the SOURCE_BROWSER tag is set to YES then a list of source files will
+# be generated. Documented entities will be cross-referenced with these sources.
+# Note: To get rid of all source code in the generated output, make sure also
+# VERBATIM_HEADERS is set to NO.
+
+SOURCE_BROWSER = NO
+
+# Setting the INLINE_SOURCES tag to YES will include the body
+# of functions and classes directly in the documentation.
+
+INLINE_SOURCES = NO
+
+# Setting the STRIP_CODE_COMMENTS tag to YES (the default) will instruct
+# doxygen to hide any special comment blocks from generated source code
+# fragments. Normal C and C++ comments will always remain visible.
+
+STRIP_CODE_COMMENTS = YES
+
+# If the REFERENCED_BY_RELATION tag is set to YES (the default)
+# then for each documented function all documented
+# functions referencing it will be listed.
+
+REFERENCED_BY_RELATION = YES
+
+# If the REFERENCES_RELATION tag is set to YES (the default)
+# then for each documented function all documented entities
+# called/used by that function will be listed.
+
+REFERENCES_RELATION = YES
+
+# If the REFERENCES_LINK_SOURCE tag is set to YES (the default)
+# and SOURCE_BROWSER tag is set to YES, then the hyperlinks from
+# functions in REFERENCES_RELATION and REFERENCED_BY_RELATION lists will
+# link to the source code. Otherwise they will link to the documentstion.
+
+REFERENCES_LINK_SOURCE = YES
+
+# If the USE_HTAGS tag is set to YES then the references to source code
+# will point to the HTML generated by the htags(1) tool instead of doxygen
+# built-in source browser. The htags tool is part of GNU's global source
+# tagging system (see http://www.gnu.org/software/global/global.html). You
+# will need version 4.8.6 or higher.
+
+USE_HTAGS = NO
+
+# If the VERBATIM_HEADERS tag is set to YES (the default) then Doxygen
+# will generate a verbatim copy of the header file for each class for
+# which an include is specified. Set to NO to disable this.
+
+VERBATIM_HEADERS = YES
+
+#---------------------------------------------------------------------------
+# configuration options related to the alphabetical class index
+#---------------------------------------------------------------------------
+
+# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index
+# of all compounds will be generated. Enable this if the project
+# contains a lot of classes, structs, unions or interfaces.
+
+ALPHABETICAL_INDEX = NO
+
+# If the alphabetical index is enabled (see ALPHABETICAL_INDEX) then
+# the COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns
+# in which this list will be split (can be a number in the range [1..20])
+
+COLS_IN_ALPHA_INDEX = 5
+
+# In case all classes in a project start with a common prefix, all
+# classes will be put under the same header in the alphabetical index.
+# The IGNORE_PREFIX tag can be used to specify one or more prefixes that
+# should be ignored while generating the index headers.
+
+IGNORE_PREFIX =
+
+#---------------------------------------------------------------------------
+# configuration options related to the HTML output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_HTML tag is set to YES (the default) Doxygen will
+# generate HTML output.
+
+GENERATE_HTML = YES
+
+# The HTML_OUTPUT tag is used to specify where the HTML docs will be put.
+# If a relative path is entered the value of OUTPUT_DIRECTORY will be
+# put in front of it. If left blank `html' will be used as the default path.
+
+HTML_OUTPUT = manual
+
+# The HTML_FILE_EXTENSION tag can be used to specify the file extension for
+# each generated HTML page (for example: .htm,.php,.asp). If it is left blank
+# doxygen will generate files with .html extension.
+
+HTML_FILE_EXTENSION = .html
+
+# The HTML_HEADER tag can be used to specify a personal HTML header for
+# each generated HTML page. If it is left blank doxygen will generate a
+# standard header.
+
+HTML_HEADER =
+
+# The HTML_FOOTER tag can be used to specify a personal HTML footer for
+# each generated HTML page. If it is left blank doxygen will generate a
+# standard footer.
+
+HTML_FOOTER =
+
+# The HTML_STYLESHEET tag can be used to specify a user-defined cascading
+# style sheet that is used by each HTML page. It can be used to
+# fine-tune the look of the HTML output. If the tag is left blank doxygen
+# will generate a default style sheet. Note that doxygen will try to copy
+# the style sheet file to the HTML output directory, so don't put your own
+# stylesheet in the HTML output directory as well, or it will be erased!
+
+HTML_STYLESHEET =
+
+# If the HTML_ALIGN_MEMBERS tag is set to YES, the members of classes,
+# files or namespaces will be aligned in HTML using tables. If set to
+# NO a bullet list will be used.
+
+HTML_ALIGN_MEMBERS = YES
+
+# If the GENERATE_HTMLHELP tag is set to YES, additional index files
+# will be generated that can be used as input for tools like the
+# Microsoft HTML help workshop to generate a compressed HTML help file (.chm)
+# of the generated HTML documentation.
+
+GENERATE_HTMLHELP = NO
+
+# If the GENERATE_HTMLHELP tag is set to YES, the CHM_FILE tag can
+# be used to specify the file name of the resulting .chm file. You
+# can add a path in front of the file if the result should not be
+# written to the html output directory.
+
+CHM_FILE =
+
+# If the GENERATE_HTMLHELP tag is set to YES, the HHC_LOCATION tag can
+# be used to specify the location (absolute path including file name) of
+# the HTML help compiler (hhc.exe). If non-empty doxygen will try to run
+# the HTML help compiler on the generated index.hhp.
+
+HHC_LOCATION =
+
+# If the GENERATE_HTMLHELP tag is set to YES, the GENERATE_CHI flag
+# controls if a separate .chi index file is generated (YES) or that
+# it should be included in the master .chm file (NO).
+
+GENERATE_CHI = NO
+
+# If the GENERATE_HTMLHELP tag is set to YES, the BINARY_TOC flag
+# controls whether a binary table of contents is generated (YES) or a
+# normal table of contents (NO) in the .chm file.
+
+BINARY_TOC = NO
+
+# The TOC_EXPAND flag can be set to YES to add extra items for group members
+# to the contents of the HTML help documentation and to the tree view.
+
+TOC_EXPAND = NO
+
+# The DISABLE_INDEX tag can be used to turn on/off the condensed index at
+# top of each HTML page. The value NO (the default) enables the index and
+# the value YES disables it.
+
+DISABLE_INDEX = NO
+
+# This tag can be used to set the number of enum values (range [1..20])
+# that doxygen will group on one line in the generated HTML documentation.
+
+ENUM_VALUES_PER_LINE = 4
+
+# If the GENERATE_TREEVIEW tag is set to YES, a side panel will be
+# generated containing a tree-like index structure (just like the one that
+# is generated for HTML Help). For this to work a browser that supports
+# JavaScript, DHTML, CSS and frames is required (for instance Mozilla 1.0+,
+# Netscape 6.0+, Internet explorer 5.0+, or Konqueror). Windows users are
+# probably better off using the HTML help feature.
+
+GENERATE_TREEVIEW = NO
+
+# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be
+# used to set the initial width (in pixels) of the frame in which the tree
+# is shown.
+
+TREEVIEW_WIDTH = 250
+
+#---------------------------------------------------------------------------
+# configuration options related to the LaTeX output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_LATEX tag is set to YES (the default) Doxygen will
+# generate Latex output.
+
+GENERATE_LATEX = NO
+
+# The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put.
+# If a relative path is entered the value of OUTPUT_DIRECTORY will be
+# put in front of it. If left blank `latex' will be used as the default path.
+
+LATEX_OUTPUT = latex
+
+# The LATEX_CMD_NAME tag can be used to specify the LaTeX command name to be
+# invoked. If left blank `latex' will be used as the default command name.
+
+LATEX_CMD_NAME = latex
+
+# The MAKEINDEX_CMD_NAME tag can be used to specify the command name to
+# generate index for LaTeX. If left blank `makeindex' will be used as the
+# default command name.
+
+MAKEINDEX_CMD_NAME = makeindex
+
+# If the COMPACT_LATEX tag is set to YES Doxygen generates more compact
+# LaTeX documents. This may be useful for small projects and may help to
+# save some trees in general.
+
+COMPACT_LATEX = NO
+
+# The PAPER_TYPE tag can be used to set the paper type that is used
+# by the printer. Possible values are: a4, a4wide, letter, legal and
+# executive. If left blank a4wide will be used.
+
+PAPER_TYPE = a4wide
+
+# The EXTRA_PACKAGES tag can be to specify one or more names of LaTeX
+# packages that should be included in the LaTeX output.
+
+EXTRA_PACKAGES =
+
+# The LATEX_HEADER tag can be used to specify a personal LaTeX header for
+# the generated latex document. The header should contain everything until
+# the first chapter. If it is left blank doxygen will generate a
+# standard header. Notice: only use this tag if you know what you are doing!
+
+LATEX_HEADER =
+
+# If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated
+# is prepared for conversion to pdf (using ps2pdf). The pdf file will
+# contain links (just like the HTML output) instead of page references
+# This makes the output suitable for online browsing using a pdf viewer.
+
+PDF_HYPERLINKS = NO
+
+# If the USE_PDFLATEX tag is set to YES, pdflatex will be used instead of
+# plain latex in the generated Makefile. Set this option to YES to get a
+# higher quality PDF documentation.
+
+USE_PDFLATEX = NO
+
+# If the LATEX_BATCHMODE tag is set to YES, doxygen will add the \\batchmode.
+# command to the generated LaTeX files. This will instruct LaTeX to keep
+# running if errors occur, instead of asking the user for help.
+# This option is also used when generating formulas in HTML.
+
+LATEX_BATCHMODE = NO
+
+# If LATEX_HIDE_INDICES is set to YES then doxygen will not
+# include the index chapters (such as File Index, Compound Index, etc.)
+# in the output.
+
+LATEX_HIDE_INDICES = NO
+
+#---------------------------------------------------------------------------
+# configuration options related to the RTF output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_RTF tag is set to YES Doxygen will generate RTF output
+# The RTF output is optimized for Word 97 and may not look very pretty with
+# other RTF readers or editors.
+
+GENERATE_RTF = NO
+
+# The RTF_OUTPUT tag is used to specify where the RTF docs will be put.
+# If a relative path is entered the value of OUTPUT_DIRECTORY will be
+# put in front of it. If left blank `rtf' will be used as the default path.
+
+RTF_OUTPUT = rtf
+
+# If the COMPACT_RTF tag is set to YES Doxygen generates more compact
+# RTF documents. This may be useful for small projects and may help to
+# save some trees in general.
+
+COMPACT_RTF = NO
+
+# If the RTF_HYPERLINKS tag is set to YES, the RTF that is generated
+# will contain hyperlink fields. The RTF file will
+# contain links (just like the HTML output) instead of page references.
+# This makes the output suitable for online browsing using WORD or other
+# programs which support those fields.
+# Note: wordpad (write) and others do not support links.
+
+RTF_HYPERLINKS = NO
+
+# Load stylesheet definitions from file. Syntax is similar to doxygen's
+# config file, i.e. a series of assignments. You only have to provide
+# replacements, missing definitions are set to their default value.
+
+RTF_STYLESHEET_FILE =
+
+# Set optional variables used in the generation of an rtf document.
+# Syntax is similar to doxygen's config file.
+
+RTF_EXTENSIONS_FILE =
+
+#---------------------------------------------------------------------------
+# configuration options related to the man page output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_MAN tag is set to YES (the default) Doxygen will
+# generate man pages
+
+GENERATE_MAN = NO
+
+# The MAN_OUTPUT tag is used to specify where the man pages will be put.
+# If a relative path is entered the value of OUTPUT_DIRECTORY will be
+# put in front of it. If left blank `man' will be used as the default path.
+
+MAN_OUTPUT = man
+
+# The MAN_EXTENSION tag determines the extension that is added to
+# the generated man pages (default is the subroutine's section .3)
+
+MAN_EXTENSION = .3
+
+# If the MAN_LINKS tag is set to YES and Doxygen generates man output,
+# then it will generate one additional man file for each entity
+# documented in the real man page(s). These additional files
+# only source the real man page, but without them the man command
+# would be unable to find the correct page. The default is NO.
+
+MAN_LINKS = NO
+
+#---------------------------------------------------------------------------
+# configuration options related to the XML output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_XML tag is set to YES Doxygen will
+# generate an XML file that captures the structure of
+# the code including all documentation.
+
+GENERATE_XML = NO
+
+# The XML_OUTPUT tag is used to specify where the XML pages will be put.
+# If a relative path is entered the value of OUTPUT_DIRECTORY will be
+# put in front of it. If left blank `xml' will be used as the default path.
+
+XML_OUTPUT = xml
+
+# The XML_SCHEMA tag can be used to specify an XML schema,
+# which can be used by a validating XML parser to check the
+# syntax of the XML files.
+
+XML_SCHEMA =
+
+# The XML_DTD tag can be used to specify an XML DTD,
+# which can be used by a validating XML parser to check the
+# syntax of the XML files.
+
+XML_DTD =
+
+# If the XML_PROGRAMLISTING tag is set to YES Doxygen will
+# dump the program listings (including syntax highlighting
+# and cross-referencing information) to the XML output. Note that
+# enabling this will significantly increase the size of the XML output.
+
+XML_PROGRAMLISTING = YES
+
+#---------------------------------------------------------------------------
+# configuration options for the AutoGen Definitions output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_AUTOGEN_DEF tag is set to YES Doxygen will
+# generate an AutoGen Definitions (see autogen.sf.net) file
+# that captures the structure of the code including all
+# documentation. Note that this feature is still experimental
+# and incomplete at the moment.
+
+GENERATE_AUTOGEN_DEF = NO
+
+#---------------------------------------------------------------------------
+# configuration options related to the Perl module output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_PERLMOD tag is set to YES Doxygen will
+# generate a Perl module file that captures the structure of
+# the code including all documentation. Note that this
+# feature is still experimental and incomplete at the
+# moment.
+
+GENERATE_PERLMOD = NO
+
+# If the PERLMOD_LATEX tag is set to YES Doxygen will generate
+# the necessary Makefile rules, Perl scripts and LaTeX code to be able
+# to generate PDF and DVI output from the Perl module output.
+
+PERLMOD_LATEX = NO
+
+# If the PERLMOD_PRETTY tag is set to YES the Perl module output will be
+# nicely formatted so it can be parsed by a human reader. This is useful
+# if you want to understand what is going on. On the other hand, if this
+# tag is set to NO the size of the Perl module output will be much smaller
+# and Perl will parse it just the same.
+
+PERLMOD_PRETTY = YES
+
+# The names of the make variables in the generated doxyrules.make file
+# are prefixed with the string contained in PERLMOD_MAKEVAR_PREFIX.
+# This is useful so different doxyrules.make files included by the same
+# Makefile don't overwrite each other's variables.
+
+PERLMOD_MAKEVAR_PREFIX =
+
+#---------------------------------------------------------------------------
+# Configuration options related to the preprocessor
+#---------------------------------------------------------------------------
+
+# If the ENABLE_PREPROCESSING tag is set to YES (the default) Doxygen will
+# evaluate all C-preprocessor directives found in the sources and include
+# files.
+
+ENABLE_PREPROCESSING = YES
+
+# If the MACRO_EXPANSION tag is set to YES Doxygen will expand all macro
+# names in the source code. If set to NO (the default) only conditional
+# compilation will be performed. Macro expansion can be done in a controlled
+# way by setting EXPAND_ONLY_PREDEF to YES.
+
+MACRO_EXPANSION = NO
+
+# If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES
+# then the macro expansion is limited to the macros specified with the
+# PREDEFINED and EXPAND_AS_DEFINED tags.
+
+EXPAND_ONLY_PREDEF = NO
+
+# If the SEARCH_INCLUDES tag is set to YES (the default) the includes files
+# in the INCLUDE_PATH (see below) will be search if a #include is found.
+
+SEARCH_INCLUDES = YES
+
+# The INCLUDE_PATH tag can be used to specify one or more directories that
+# contain include files that are not input files but should be processed by
+# the preprocessor.
+
+INCLUDE_PATH =
+
+# You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard
+# patterns (like *.h and *.hpp) to filter out the header-files in the
+# directories. If left blank, the patterns specified with FILE_PATTERNS will
+# be used.
+
+INCLUDE_FILE_PATTERNS =
+
+# The PREDEFINED tag can be used to specify one or more macro names that
+# are defined before the preprocessor is started (similar to the -D option of
+# gcc). The argument of the tag is a list of macros of the form: name
+# or name=definition (no spaces). If the definition and the = are
+# omitted =1 is assumed. To prevent a macro definition from being
+# undefined via #undef or recursively expanded use the := operator
+# instead of the = operator.
+
+PREDEFINED =
+
+# If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then
+# this tag can be used to specify a list of macro names that should be expanded.
+# The macro definition that is found in the sources will be used.
+# Use the PREDEFINED tag if you want to use a different macro definition.
+
+EXPAND_AS_DEFINED =
+
+# If the SKIP_FUNCTION_MACROS tag is set to YES (the default) then
+# doxygen's preprocessor will remove all function-like macros that are alone
+# on a line, have an all uppercase name, and do not end with a semicolon. Such
+# function macros are typically used for boiler-plate code, and will confuse
+# the parser if not removed.
+
+SKIP_FUNCTION_MACROS = YES
+
+#---------------------------------------------------------------------------
+# Configuration::additions related to external references
+#---------------------------------------------------------------------------
+
+# The TAGFILES option can be used to specify one or more tagfiles.
+# Optionally an initial location of the external documentation
+# can be added for each tagfile. The format of a tag file without
+# this location is as follows:
+# TAGFILES = file1 file2 ...
+# Adding location for the tag files is done as follows:
+# TAGFILES = file1=loc1 "file2 = loc2" ...
+# where "loc1" and "loc2" can be relative or absolute paths or
+# URLs. If a location is present for each tag, the installdox tool
+# does not have to be run to correct the links.
+# Note that each tag file must have a unique name
+# (where the name does NOT include the path)
+# If a tag file is not located in the directory in which doxygen
+# is run, you must also specify the path to the tagfile here.
+
+TAGFILES =
+
+# When a file name is specified after GENERATE_TAGFILE, doxygen will create
+# a tag file that is based on the input files it reads.
+
+GENERATE_TAGFILE =
+
+# If the ALLEXTERNALS tag is set to YES all external classes will be listed
+# in the class index. If set to NO only the inherited external classes
+# will be listed.
+
+ALLEXTERNALS = NO
+
+# If the EXTERNAL_GROUPS tag is set to YES all external groups will be listed
+# in the modules index. If set to NO, only the current project's groups will
+# be listed.
+
+EXTERNAL_GROUPS = YES
+
+# The PERL_PATH should be the absolute path and name of the perl script
+# interpreter (i.e. the result of `which perl').
+
+PERL_PATH = /usr/bin/perl
+
+#---------------------------------------------------------------------------
+# Configuration options related to the dot tool
+#---------------------------------------------------------------------------
+
+# If the CLASS_DIAGRAMS tag is set to YES (the default) Doxygen will
+# generate a inheritance diagram (in HTML, RTF and LaTeX) for classes with base
+# or super classes. Setting the tag to NO turns the diagrams off. Note that
+# this option is superseded by the HAVE_DOT option below. This is only a
+# fallback. It is recommended to install and use dot, since it yields more
+# powerful graphs.
+
+CLASS_DIAGRAMS = YES
+
+# If set to YES, the inheritance and collaboration graphs will hide
+# inheritance and usage relations if the target is undocumented
+# or is not a class.
+
+HIDE_UNDOC_RELATIONS = YES
+
+# If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is
+# available from the path. This tool is part of Graphviz, a graph visualization
+# toolkit from AT&T and Lucent Bell Labs. The other options in this section
+# have no effect if this option is set to NO (the default)
+
+HAVE_DOT = YES
+
+# If the CLASS_GRAPH and HAVE_DOT tags are set to YES then doxygen
+# will generate a graph for each documented class showing the direct and
+# indirect inheritance relations. Setting this tag to YES will force the
+# the CLASS_DIAGRAMS tag to NO.
+
+CLASS_GRAPH = YES
+
+# If the COLLABORATION_GRAPH and HAVE_DOT tags are set to YES then doxygen
+# will generate a graph for each documented class showing the direct and
+# indirect implementation dependencies (inheritance, containment, and
+# class references variables) of the class with other documented classes.
+
+COLLABORATION_GRAPH = YES
+
+# If the GROUP_GRAPHS and HAVE_DOT tags are set to YES then doxygen
+# will generate a graph for groups, showing the direct groups dependencies
+
+GROUP_GRAPHS = YES
+
+# If the UML_LOOK tag is set to YES doxygen will generate inheritance and
+# collaboration diagrams in a style similar to the OMG's Unified Modeling
+# Language.
+
+UML_LOOK = NO
+
+# If set to YES, the inheritance and collaboration graphs will show the
+# relations between templates and their instances.
+
+TEMPLATE_RELATIONS = NO
+
+# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDE_GRAPH, and HAVE_DOT
+# tags are set to YES then doxygen will generate a graph for each documented
+# file showing the direct and indirect include dependencies of the file with
+# other documented files.
+
+INCLUDE_GRAPH = YES
+
+# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDED_BY_GRAPH, and
+# HAVE_DOT tags are set to YES then doxygen will generate a graph for each
+# documented header file showing the documented files that directly or
+# indirectly include this file.
+
+INCLUDED_BY_GRAPH = YES
+
+# If the CALL_GRAPH and HAVE_DOT tags are set to YES then doxygen will
+# generate a call dependency graph for every global function or class method.
+# Note that enabling this option will significantly increase the time of a run.
+# So in most cases it will be better to enable call graphs for selected
+# functions only using the \callgraph command.
+
+CALL_GRAPH = NO
+
+# If the CALLER_GRAPH and HAVE_DOT tags are set to YES then doxygen will
+# generate a caller dependency graph for every global function or class method.
+# Note that enabling this option will significantly increase the time of a run.
+# So in most cases it will be better to enable caller graphs for selected
+# functions only using the \callergraph command.
+
+CALLER_GRAPH = NO
+
+# If the GRAPHICAL_HIERARCHY and HAVE_DOT tags are set to YES then doxygen
+# will graphical hierarchy of all classes instead of a textual one.
+
+GRAPHICAL_HIERARCHY = YES
+
+# If the DIRECTORY_GRAPH, SHOW_DIRECTORIES and HAVE_DOT tags are set to YES
+# then doxygen will show the dependencies a directory has on other directories
+# in a graphical way. The dependency relations are determined by the #include
+# relations between the files in the directories.
+
+DIRECTORY_GRAPH = YES
+
+# The DOT_IMAGE_FORMAT tag can be used to set the image format of the images
+# generated by dot. Possible values are png, jpg, or gif
+# If left blank png will be used.
+
+DOT_IMAGE_FORMAT = png
+
+# The tag DOT_PATH can be used to specify the path where the dot tool can be
+# found. If left blank, it is assumed the dot tool can be found in the path.
+
+DOT_PATH =
+
+# The DOTFILE_DIRS tag can be used to specify one or more directories that
+# contain dot files that are included in the documentation (see the
+# \dotfile command).
+
+DOTFILE_DIRS =
+
+# The MAX_DOT_GRAPH_WIDTH tag can be used to set the maximum allowed width
+# (in pixels) of the graphs generated by dot. If a graph becomes larger than
+# this value, doxygen will try to truncate the graph, so that it fits within
+# the specified constraint. Beware that most browsers cannot cope with very
+# large images.
+
+MAX_DOT_GRAPH_WIDTH = 1024
+
+# The MAX_DOT_GRAPH_HEIGHT tag can be used to set the maximum allows height
+# (in pixels) of the graphs generated by dot. If a graph becomes larger than
+# this value, doxygen will try to truncate the graph, so that it fits within
+# the specified constraint. Beware that most browsers cannot cope with very
+# large images.
+
+MAX_DOT_GRAPH_HEIGHT = 1024
+
+# The MAX_DOT_GRAPH_DEPTH tag can be used to set the maximum depth of the
+# graphs generated by dot. A depth value of 3 means that only nodes reachable
+# from the root by following a path via at most 3 edges will be shown. Nodes
+# that lay further from the root node will be omitted. Note that setting this
+# option to 1 or 2 may greatly reduce the computation time needed for large
+# code bases. Also note that a graph may be further truncated if the graph's
+# image dimensions are not sufficient to fit the graph (see MAX_DOT_GRAPH_WIDTH
+# and MAX_DOT_GRAPH_HEIGHT). If 0 is used for the depth value (the default),
+# the graph is not depth-constrained.
+
+MAX_DOT_GRAPH_DEPTH = 0
+
+# Set the DOT_TRANSPARENT tag to YES to generate images with a transparent
+# background. This is disabled by default, which results in a white background.
+# Warning: Depending on the platform used, enabling this option may lead to
+# badly anti-aliased labels on the edges of a graph (i.e. they become hard to
+# read).
+
+DOT_TRANSPARENT = NO
+
+# Set the DOT_MULTI_TARGETS tag to YES allow dot to generate multiple output
+# files in one run (i.e. multiple -o and -T options on the command line). This
+# makes dot run faster, but since only newer versions of dot (>1.8.10)
+# support this, this feature is disabled by default.
+
+DOT_MULTI_TARGETS = NO
+
+# If the GENERATE_LEGEND tag is set to YES (the default) Doxygen will
+# generate a legend page explaining the meaning of the various boxes and
+# arrows in the dot generated graphs.
+
+GENERATE_LEGEND = YES
+
+# If the DOT_CLEANUP tag is set to YES (the default) Doxygen will
+# remove the intermediate dot files that are used to generate
+# the various graphs.
+
+DOT_CLEANUP = YES
+
+#---------------------------------------------------------------------------
+# Configuration::additions related to the search engine
+#---------------------------------------------------------------------------
+
+# The SEARCHENGINE tag specifies whether or not a search engine should be
+# used. If set to NO the values of all tags below this one will be ignored.
+
+SEARCHENGINE = NO
diff --git a/libxcb/src/xcb_windefs.h b/libxcb/src/xcb_windefs.h
index 5f43c9c96..dd92b7257 100644
--- a/libxcb/src/xcb_windefs.h
+++ b/libxcb/src/xcb_windefs.h
@@ -1,58 +1,58 @@
-/* Copyright (C) 2009 Jatin Golani.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
- * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
- * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * Except as contained in this notice, the names of the authors or their
- * institutions shall not be used in advertising or otherwise to promote the
- * sale, use or other dealings in this Software without prior written
- * authorization from the authors.
- */
-
-
-#ifndef _XCB_WINDEFS_H
-#define _XCB_WINDEFS_H
-
-#ifndef WINVER
-#define WINVER 0x0501 /* required for getaddrinfo/freeaddrinfo defined only for WinXP and above */
-#endif
-
-#define INCL_WINSOCK_API_TYPEDEFS 1 /* Needed for LPFN_GETPEERNAME */
-
-#define FD_SETSIZE 1024
-
-#include <X11/Xwinsock.h>
-#include <winsock2.h>
-#include <ws2tcpip.h>
-#include <windef.h>
-
-typedef unsigned char BYTE;
-
-typedef unsigned int in_addr_t;
-
-#define HANDLE void *
-typedef int pid_t;
-
-#define STDERR_FILENO 2
-
-#ifdef LIBXCB_DLL
-#define XCB_EXTERN __declspec(dllexport) extern
-#else
-#define XCB_EXTERN __declspec(dllimport) extern
-#endif
-
-#endif /* xcb_windefs.h */
+/* Copyright (C) 2009 Jatin Golani.
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
+ * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+ * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ *
+ * Except as contained in this notice, the names of the authors or their
+ * institutions shall not be used in advertising or otherwise to promote the
+ * sale, use or other dealings in this Software without prior written
+ * authorization from the authors.
+ */
+
+
+#ifndef _XCB_WINDEFS_H
+#define _XCB_WINDEFS_H
+
+#ifndef WINVER
+#define WINVER 0x0501 /* required for getaddrinfo/freeaddrinfo defined only for WinXP and above */
+#endif
+
+#define INCL_WINSOCK_API_TYPEDEFS 1 /* Needed for LPFN_GETPEERNAME */
+
+#define FD_SETSIZE 1024
+
+#include <X11/Xwinsock.h>
+#include <winsock2.h>
+#include <ws2tcpip.h>
+#include <windef.h>
+
+typedef unsigned char BYTE;
+
+typedef unsigned int in_addr_t;
+
+#define HANDLE void *
+typedef int pid_t;
+
+#define STDERR_FILENO 2
+
+#ifdef LIBXCB_DLL
+#define XCB_EXTERN __declspec(dllexport) extern
+#else
+#define XCB_EXTERN __declspec(dllimport) extern
+#endif
+
+#endif /* xcb_windefs.h */
diff --git a/libxcb/tests/.gitignore b/libxcb/tests/.gitignore
index 58b019a02..9d27cc57b 100644
--- a/libxcb/tests/.gitignore
+++ b/libxcb/tests/.gitignore
@@ -1,3 +1,3 @@
-CheckLog.html
-CheckLog_xcb.xml
-check_all
+CheckLog.html
+CheckLog_xcb.xml
+check_all
diff --git a/libxcb/tests/CheckLog.xsl b/libxcb/tests/CheckLog.xsl
index 75b14e694..3daebaa5d 100644
--- a/libxcb/tests/CheckLog.xsl
+++ b/libxcb/tests/CheckLog.xsl
@@ -1,104 +1,104 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<xsl:stylesheet
- version="1.0"
- xmlns:check="http://check.sourceforge.net/ns"
- xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
- xmlns="http://www.w3.org/TR/REC-html40">
-
-<xsl:output method="html"/>
-
-<xsl:template match="/">
-<html>
- <head>
- <title>Test Suite Results</title>
- </head>
-
- <body>
- <xsl:apply-templates/>
- </body>
-</html>
-</xsl:template>
-
-<xsl:template match="datetime">
- <xsl:apply-templates/>
-</xsl:template>
-
-<xsl:template match="duration">
- <xsl:apply-templates/>
-</xsl:template>
-
-<xsl:template match="check:suite">
- <xsl:apply-templates select="check:title"/>
- <center>
- <table width="80%" border="1">
- <thead>
- <tr>
- <td>Test Path</td>
- <td>Test Function Location</td>
- <td>C Identifier</td>
- <td>Test Case</td>
- <td>Result</td>
- </tr>
- </thead>
- <tbody>
- <xsl:apply-templates select="check:test"/>
- </tbody>
- </table>
- </center>
-</xsl:template>
-
-<xsl:template match="check:testsuites">
- <xsl:apply-templates select="check:suite"/>
- <h3>Unit Test Statistics</h3>
- <ul>
- <li>date/time: <xsl:apply-templates select="check:datetime"/></li>
- <li>duration: <xsl:apply-templates select="check:duration"/></li>
- </ul>
- <hr></hr>
-</xsl:template>
-
-<xsl:template match="check:title">
- <h2>Test Suite: <xsl:apply-templates/></h2>
-</xsl:template>
-
-<xsl:template match="check:test[@result='success']">
- <tr bgcolor="lime">
- <xsl:apply-templates/>
- </tr>
-</xsl:template>
-
-<xsl:template match="check:test[@result='failure']">
- <tr bgcolor="red">
- <xsl:apply-templates/>
- </tr>
-</xsl:template>
-
-<xsl:template match="check:test[@result='error']">
- <tr bgcolor="yellow">
- <xsl:apply-templates/>
- </tr>
-</xsl:template>
-
-<xsl:template match="check:path">
- <td><xsl:apply-templates/></td>
-</xsl:template>
-
-<xsl:template match="check:fn">
- <td><xsl:apply-templates/></td>
-</xsl:template>
-
-<xsl:template match="check:id">
- <td><xsl:apply-templates/></td>
-</xsl:template>
-
-<xsl:template match="check:description">
- <td><xsl:apply-templates/></td>
-</xsl:template>
-
-<xsl:template match="check:message">
- <td><xsl:apply-templates/></td>
-</xsl:template>
-
-</xsl:stylesheet>
-
+<?xml version="1.0" encoding="UTF-8"?>
+
+<xsl:stylesheet
+ version="1.0"
+ xmlns:check="http://check.sourceforge.net/ns"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns="http://www.w3.org/TR/REC-html40">
+
+<xsl:output method="html"/>
+
+<xsl:template match="/">
+<html>
+ <head>
+ <title>Test Suite Results</title>
+ </head>
+
+ <body>
+ <xsl:apply-templates/>
+ </body>
+</html>
+</xsl:template>
+
+<xsl:template match="datetime">
+ <xsl:apply-templates/>
+</xsl:template>
+
+<xsl:template match="duration">
+ <xsl:apply-templates/>
+</xsl:template>
+
+<xsl:template match="check:suite">
+ <xsl:apply-templates select="check:title"/>
+ <center>
+ <table width="80%" border="1">
+ <thead>
+ <tr>
+ <td>Test Path</td>
+ <td>Test Function Location</td>
+ <td>C Identifier</td>
+ <td>Test Case</td>
+ <td>Result</td>
+ </tr>
+ </thead>
+ <tbody>
+ <xsl:apply-templates select="check:test"/>
+ </tbody>
+ </table>
+ </center>
+</xsl:template>
+
+<xsl:template match="check:testsuites">
+ <xsl:apply-templates select="check:suite"/>
+ <h3>Unit Test Statistics</h3>
+ <ul>
+ <li>date/time: <xsl:apply-templates select="check:datetime"/></li>
+ <li>duration: <xsl:apply-templates select="check:duration"/></li>
+ </ul>
+ <hr></hr>
+</xsl:template>
+
+<xsl:template match="check:title">
+ <h2>Test Suite: <xsl:apply-templates/></h2>
+</xsl:template>
+
+<xsl:template match="check:test[@result='success']">
+ <tr bgcolor="lime">
+ <xsl:apply-templates/>
+ </tr>
+</xsl:template>
+
+<xsl:template match="check:test[@result='failure']">
+ <tr bgcolor="red">
+ <xsl:apply-templates/>
+ </tr>
+</xsl:template>
+
+<xsl:template match="check:test[@result='error']">
+ <tr bgcolor="yellow">
+ <xsl:apply-templates/>
+ </tr>
+</xsl:template>
+
+<xsl:template match="check:path">
+ <td><xsl:apply-templates/></td>
+</xsl:template>
+
+<xsl:template match="check:fn">
+ <td><xsl:apply-templates/></td>
+</xsl:template>
+
+<xsl:template match="check:id">
+ <td><xsl:apply-templates/></td>
+</xsl:template>
+
+<xsl:template match="check:description">
+ <td><xsl:apply-templates/></td>
+</xsl:template>
+
+<xsl:template match="check:message">
+ <td><xsl:apply-templates/></td>
+</xsl:template>
+
+</xsl:stylesheet>
+
diff --git a/libxcb/tests/Makefile.am b/libxcb/tests/Makefile.am
index 93fd03d9b..077681e51 100644
--- a/libxcb/tests/Makefile.am
+++ b/libxcb/tests/Makefile.am
@@ -1,32 +1,32 @@
-########################
-## tests/Makefile.am
-########################
-SUBDIRS =
-EXTRA_DIST = CheckLog.xsl
-AM_MAKEFLAGS = -k
-AM_CFLAGS = -Wall -Werror @CHECK_CFLAGS@ -I$(top_srcdir)/src
-LDADD = @CHECK_LIBS@ $(top_builddir)/src/libxcb.la
-
-if HAVE_CHECK
-TESTS = check_all
-check_PROGRAMS = check_all
-check_all_SOURCES = check_all.c check_suites.h check_public.c
-
-all-local::
- $(RM) CheckLog*.xml
-
-check-local: check-TESTS
- $(RM) CheckLog.html
- if test x$(HTML_CHECK_RESULT) = xtrue; then \
- $(XSLTPROC) $(srcdir)/CheckLog.xsl CheckLog*.xml > CheckLog.html; \
- else \
- touch CheckLog.html; \
- fi
-
-CheckLog.html: $(check_PROGRAMS)
- $(MAKE) $(AM_MAKEFLAGS) check;
-
-endif
-
-clean-local::
- $(RM) CheckLog.html CheckLog*.txt CheckLog*.xml
+########################
+## tests/Makefile.am
+########################
+SUBDIRS =
+EXTRA_DIST = CheckLog.xsl
+AM_MAKEFLAGS = -k
+AM_CFLAGS = -Wall -Werror @CHECK_CFLAGS@ -I$(top_srcdir)/src
+LDADD = @CHECK_LIBS@ $(top_builddir)/src/libxcb.la
+
+if HAVE_CHECK
+TESTS = check_all
+check_PROGRAMS = check_all
+check_all_SOURCES = check_all.c check_suites.h check_public.c
+
+all-local::
+ $(RM) CheckLog*.xml
+
+check-local: check-TESTS
+ $(RM) CheckLog.html
+ if test x$(HTML_CHECK_RESULT) = xtrue; then \
+ $(XSLTPROC) $(srcdir)/CheckLog.xsl CheckLog*.xml > CheckLog.html; \
+ else \
+ touch CheckLog.html; \
+ fi
+
+CheckLog.html: $(check_PROGRAMS)
+ $(MAKE) $(AM_MAKEFLAGS) check;
+
+endif
+
+clean-local::
+ $(RM) CheckLog.html CheckLog*.txt CheckLog*.xml
diff --git a/libxcb/tests/check_all.c b/libxcb/tests/check_all.c
index 8c7887dd9..4393422e3 100644
--- a/libxcb/tests/check_all.c
+++ b/libxcb/tests/check_all.c
@@ -1,20 +1,20 @@
-#include <stdlib.h>
-#include "check_suites.h"
-
-void suite_add_test(Suite *s, TFun tf, const char *name)
-{
- TCase *tc = tcase_create(name);
- tcase_add_test(tc, tf);
- suite_add_tcase(s, tc);
-}
-
-int main(void)
-{
- int nf;
- SRunner *sr = srunner_create(public_suite());
- srunner_set_xml(sr, "CheckLog_xcb.xml");
- srunner_run_all(sr, CK_NORMAL);
- nf = srunner_ntests_failed(sr);
- srunner_free(sr);
- return (nf == 0) ? EXIT_SUCCESS : EXIT_FAILURE;
-}
+#include <stdlib.h>
+#include "check_suites.h"
+
+void suite_add_test(Suite *s, TFun tf, const char *name)
+{
+ TCase *tc = tcase_create(name);
+ tcase_add_test(tc, tf);
+ suite_add_tcase(s, tc);
+}
+
+int main(void)
+{
+ int nf;
+ SRunner *sr = srunner_create(public_suite());
+ srunner_set_xml(sr, "CheckLog_xcb.xml");
+ srunner_run_all(sr, CK_NORMAL);
+ nf = srunner_ntests_failed(sr);
+ srunner_free(sr);
+ return (nf == 0) ? EXIT_SUCCESS : EXIT_FAILURE;
+}
diff --git a/libxcb/tests/check_public.c b/libxcb/tests/check_public.c
index c77c6917d..2094bfef1 100644
--- a/libxcb/tests/check_public.c
+++ b/libxcb/tests/check_public.c
@@ -1,218 +1,218 @@
-#include <check.h>
-#include <string.h>
-#include <stdlib.h>
-#include "check_suites.h"
-#include "xcb.h"
-#include "xcbext.h"
-
-/* xcb_parse_display tests {{{ */
-
-typedef enum test_type_t {
- TEST_ARGUMENT, TEST_ENVIRONMENT, TEST_END
-} test_type_t;
-static const char *const test_string[] = { "", "via $DISPLAY " };
-
-static void parse_display_pass(const char *name, const char *host, const int display, const int screen)
-{
- int success;
- char *got_host;
- int got_display, got_screen;
- const char *argument = 0;
- test_type_t test_type;
-
- for(test_type = TEST_ARGUMENT; test_type != TEST_END; test_type++)
- {
- if(test_type == TEST_ARGUMENT)
- {
- argument = name;
- putenv("DISPLAY=");
- }
- else if(test_type == TEST_ENVIRONMENT)
- {
- argument = 0;
- setenv("DISPLAY", name, 1);
- }
-
- got_host = (char *) -1;
- got_display = got_screen = -42;
- mark_point();
- success = xcb_parse_display(argument, &got_host, &got_display, &got_screen);
- fail_unless(success, "unexpected parse failure %sfor '%s'", test_string[test_type], name);
- fail_unless(strcmp(host, got_host) == 0, "parse %sproduced unexpected hostname '%s' for '%s': expected '%s'", test_string[test_type], got_host, name, host);
- fail_unless(display == got_display, "parse %sproduced unexpected display '%d' for '%s': expected '%d'", test_string[test_type], got_display, name, display);
- fail_unless(screen == got_screen, "parse %sproduced unexpected screen '%d' for '%s': expected '%d'", test_string[test_type], got_screen, name, screen);
-
- got_host = (char *) -1;
- got_display = got_screen = -42;
- mark_point();
- success = xcb_parse_display(argument, &got_host, &got_display, 0);
- fail_unless(success, "unexpected screenless parse failure %sfor '%s'", test_string[test_type], name);
- fail_unless(strcmp(host, got_host) == 0, "screenless parse %sproduced unexpected hostname '%s' for '%s': expected '%s'", test_string[test_type], got_host, name, host);
- fail_unless(display == got_display, "screenless parse %sproduced unexpected display '%d' for '%s': expected '%d'", test_string[test_type], got_display, name, display);
- }
- putenv("DISPLAY=");
-}
-
-static void parse_display_fail(const char *name)
-{
- int success;
- char *got_host;
- int got_display, got_screen;
- const char *argument = 0;
- test_type_t test_type;
-
- for(test_type = TEST_ARGUMENT; test_type != TEST_END; test_type++)
- {
- if(test_type == TEST_ARGUMENT)
- {
- argument = name;
- putenv("DISPLAY=");
- }
- else if(test_type == TEST_ENVIRONMENT)
- {
- if (!name) break;
- argument = 0;
- setenv("DISPLAY", name, 1);
- }
-
- got_host = (char *) -1;
- got_display = got_screen = -42;
- mark_point();
- success = xcb_parse_display(argument, &got_host, &got_display, &got_screen);
- fail_unless(!success, "unexpected parse success %sfor '%s'", test_string[test_type], name);
- fail_unless(got_host == (char *) -1, "host changed on parse failure %sfor '%s': got %p", test_string[test_type], name, got_host);
- fail_unless(got_display == -42, "display changed on parse failure %sfor '%s': got %d", test_string[test_type], name, got_display);
- fail_unless(got_screen == -42, "screen changed on parse failure %sfor '%s': got %d", test_string[test_type], name, got_screen);
-
- got_host = (char *) -1;
- got_display = got_screen = -42;
- mark_point();
- success = xcb_parse_display(argument, &got_host, &got_display, 0);
- fail_unless(!success, "unexpected screenless parse success %sfor '%s'", test_string[test_type], name);
- fail_unless(got_host == (char *) -1, "host changed on parse failure %sfor '%s': got %p", test_string[test_type], name, got_host);
- fail_unless(got_display == -42, "display changed on parse failure %sfor '%s': got %d", test_string[test_type], name, got_display);
- }
- putenv("DISPLAY=");
-}
-
-START_TEST(parse_display_unix)
-{
- parse_display_pass(":0", "", 0, 0);
- parse_display_pass(":1", "", 1, 0);
- parse_display_pass(":0.1", "", 0, 1);
-}
-END_TEST
-
-START_TEST(parse_display_ip)
-{
- parse_display_pass("x.org:0", "x.org", 0, 0);
- parse_display_pass("expo:0", "expo", 0, 0);
- parse_display_pass("bigmachine:1", "bigmachine", 1, 0);
- parse_display_pass("hydra:0.1", "hydra", 0, 1);
-}
-END_TEST
-
-START_TEST(parse_display_ipv4)
-{
- parse_display_pass("198.112.45.11:0", "198.112.45.11", 0, 0);
- parse_display_pass("198.112.45.11:0.1", "198.112.45.11", 0, 1);
-}
-END_TEST
-
-START_TEST(parse_display_ipv6)
-{
- parse_display_pass(":::0", "::", 0, 0);
- parse_display_pass("1:::0", "1::", 0, 0);
- parse_display_pass("::1:0", "::1", 0, 0);
- parse_display_pass("::1:0.1", "::1", 0, 1);
- parse_display_pass("::127.0.0.1:0", "::127.0.0.1", 0, 0);
- parse_display_pass("::ffff:127.0.0.1:0", "::ffff:127.0.0.1", 0, 0);
- parse_display_pass("2002:83fc:d052::1:0", "2002:83fc:d052::1", 0, 0);
- parse_display_pass("2002:83fc:d052::1:0.1", "2002:83fc:d052::1", 0, 1);
- parse_display_pass("[::]:0", "[::]", 0, 0);
- parse_display_pass("[1::]:0", "[1::]", 0, 0);
- parse_display_pass("[::1]:0", "[::1]", 0, 0);
- parse_display_pass("[::1]:0.1", "[::1]", 0, 1);
- parse_display_pass("[::127.0.0.1]:0", "[::127.0.0.1]", 0, 0);
- parse_display_pass("[::ffff:127.0.0.1]:0", "[::ffff:127.0.0.1]", 0, 0);
- parse_display_pass("[2002:83fc:d052::1]:0", "[2002:83fc:d052::1]", 0, 0);
- parse_display_pass("[2002:83fc:d052::1]:0.1", "[2002:83fc:d052::1]", 0, 1);
-}
-END_TEST
-
-START_TEST(parse_display_decnet)
-{
- parse_display_pass("myws::0", "myws:", 0, 0);
- parse_display_pass("big::1", "big:", 1, 0);
- parse_display_pass("hydra::0.1", "hydra:", 0, 1);
-}
-END_TEST
-
-START_TEST(parse_display_negative)
-{
- parse_display_fail(0);
- parse_display_fail("");
- parse_display_fail(":");
- parse_display_fail("::");
- parse_display_fail(":::");
- parse_display_fail(":.");
- parse_display_fail(":a");
- parse_display_fail(":a.");
- parse_display_fail(":0.");
- parse_display_fail(":.a");
- parse_display_fail(":.0");
- parse_display_fail(":0.a");
- parse_display_fail(":0.0.");
-
- parse_display_fail("127.0.0.1");
- parse_display_fail("127.0.0.1:");
- parse_display_fail("127.0.0.1::");
- parse_display_fail("::127.0.0.1");
- parse_display_fail("::127.0.0.1:");
- parse_display_fail("::127.0.0.1::");
- parse_display_fail("::ffff:127.0.0.1");
- parse_display_fail("::ffff:127.0.0.1:");
- parse_display_fail("::ffff:127.0.0.1::");
- parse_display_fail("localhost");
- parse_display_fail("localhost:");
- parse_display_fail("localhost::");
-}
-END_TEST
-
-/* }}} */
-
-static void popcount_eq(uint32_t bits, int count)
-{
- fail_unless(xcb_popcount(bits) == count, "unexpected popcount(%08x) != %d", bits, count);
-}
-
-START_TEST(popcount)
-{
- uint32_t mask;
- int count;
-
- for (mask = 0xffffffff, count = 32; count >= 0; mask >>= 1, --count) {
- popcount_eq(mask, count);
- }
- for (mask = 0x80000000; mask; mask >>= 1) {
- popcount_eq(mask, 1);
- }
- for (mask = 0x80000000; mask > 1; mask >>= 1) {
- popcount_eq(mask | 1, 2);
- }
-}
-END_TEST
-
-Suite *public_suite(void)
-{
- Suite *s = suite_create("Public API");
- putenv("DISPLAY=");
- suite_add_test(s, parse_display_unix, "xcb_parse_display unix");
- suite_add_test(s, parse_display_ip, "xcb_parse_display ip");
- suite_add_test(s, parse_display_ipv4, "xcb_parse_display ipv4");
- suite_add_test(s, parse_display_ipv6, "xcb_parse_display ipv6");
- suite_add_test(s, parse_display_decnet, "xcb_parse_display decnet");
- suite_add_test(s, parse_display_negative, "xcb_parse_display negative");
- suite_add_test(s, popcount, "xcb_popcount");
- return s;
-}
+#include <check.h>
+#include <string.h>
+#include <stdlib.h>
+#include "check_suites.h"
+#include "xcb.h"
+#include "xcbext.h"
+
+/* xcb_parse_display tests {{{ */
+
+typedef enum test_type_t {
+ TEST_ARGUMENT, TEST_ENVIRONMENT, TEST_END
+} test_type_t;
+static const char *const test_string[] = { "", "via $DISPLAY " };
+
+static void parse_display_pass(const char *name, const char *host, const int display, const int screen)
+{
+ int success;
+ char *got_host;
+ int got_display, got_screen;
+ const char *argument = 0;
+ test_type_t test_type;
+
+ for(test_type = TEST_ARGUMENT; test_type != TEST_END; test_type++)
+ {
+ if(test_type == TEST_ARGUMENT)
+ {
+ argument = name;
+ putenv("DISPLAY=");
+ }
+ else if(test_type == TEST_ENVIRONMENT)
+ {
+ argument = 0;
+ setenv("DISPLAY", name, 1);
+ }
+
+ got_host = (char *) -1;
+ got_display = got_screen = -42;
+ mark_point();
+ success = xcb_parse_display(argument, &got_host, &got_display, &got_screen);
+ fail_unless(success, "unexpected parse failure %sfor '%s'", test_string[test_type], name);
+ fail_unless(strcmp(host, got_host) == 0, "parse %sproduced unexpected hostname '%s' for '%s': expected '%s'", test_string[test_type], got_host, name, host);
+ fail_unless(display == got_display, "parse %sproduced unexpected display '%d' for '%s': expected '%d'", test_string[test_type], got_display, name, display);
+ fail_unless(screen == got_screen, "parse %sproduced unexpected screen '%d' for '%s': expected '%d'", test_string[test_type], got_screen, name, screen);
+
+ got_host = (char *) -1;
+ got_display = got_screen = -42;
+ mark_point();
+ success = xcb_parse_display(argument, &got_host, &got_display, 0);
+ fail_unless(success, "unexpected screenless parse failure %sfor '%s'", test_string[test_type], name);
+ fail_unless(strcmp(host, got_host) == 0, "screenless parse %sproduced unexpected hostname '%s' for '%s': expected '%s'", test_string[test_type], got_host, name, host);
+ fail_unless(display == got_display, "screenless parse %sproduced unexpected display '%d' for '%s': expected '%d'", test_string[test_type], got_display, name, display);
+ }
+ putenv("DISPLAY=");
+}
+
+static void parse_display_fail(const char *name)
+{
+ int success;
+ char *got_host;
+ int got_display, got_screen;
+ const char *argument = 0;
+ test_type_t test_type;
+
+ for(test_type = TEST_ARGUMENT; test_type != TEST_END; test_type++)
+ {
+ if(test_type == TEST_ARGUMENT)
+ {
+ argument = name;
+ putenv("DISPLAY=");
+ }
+ else if(test_type == TEST_ENVIRONMENT)
+ {
+ if (!name) break;
+ argument = 0;
+ setenv("DISPLAY", name, 1);
+ }
+
+ got_host = (char *) -1;
+ got_display = got_screen = -42;
+ mark_point();
+ success = xcb_parse_display(argument, &got_host, &got_display, &got_screen);
+ fail_unless(!success, "unexpected parse success %sfor '%s'", test_string[test_type], name);
+ fail_unless(got_host == (char *) -1, "host changed on parse failure %sfor '%s': got %p", test_string[test_type], name, got_host);
+ fail_unless(got_display == -42, "display changed on parse failure %sfor '%s': got %d", test_string[test_type], name, got_display);
+ fail_unless(got_screen == -42, "screen changed on parse failure %sfor '%s': got %d", test_string[test_type], name, got_screen);
+
+ got_host = (char *) -1;
+ got_display = got_screen = -42;
+ mark_point();
+ success = xcb_parse_display(argument, &got_host, &got_display, 0);
+ fail_unless(!success, "unexpected screenless parse success %sfor '%s'", test_string[test_type], name);
+ fail_unless(got_host == (char *) -1, "host changed on parse failure %sfor '%s': got %p", test_string[test_type], name, got_host);
+ fail_unless(got_display == -42, "display changed on parse failure %sfor '%s': got %d", test_string[test_type], name, got_display);
+ }
+ putenv("DISPLAY=");
+}
+
+START_TEST(parse_display_unix)
+{
+ parse_display_pass(":0", "", 0, 0);
+ parse_display_pass(":1", "", 1, 0);
+ parse_display_pass(":0.1", "", 0, 1);
+}
+END_TEST
+
+START_TEST(parse_display_ip)
+{
+ parse_display_pass("x.org:0", "x.org", 0, 0);
+ parse_display_pass("expo:0", "expo", 0, 0);
+ parse_display_pass("bigmachine:1", "bigmachine", 1, 0);
+ parse_display_pass("hydra:0.1", "hydra", 0, 1);
+}
+END_TEST
+
+START_TEST(parse_display_ipv4)
+{
+ parse_display_pass("198.112.45.11:0", "198.112.45.11", 0, 0);
+ parse_display_pass("198.112.45.11:0.1", "198.112.45.11", 0, 1);
+}
+END_TEST
+
+START_TEST(parse_display_ipv6)
+{
+ parse_display_pass(":::0", "::", 0, 0);
+ parse_display_pass("1:::0", "1::", 0, 0);
+ parse_display_pass("::1:0", "::1", 0, 0);
+ parse_display_pass("::1:0.1", "::1", 0, 1);
+ parse_display_pass("::127.0.0.1:0", "::127.0.0.1", 0, 0);
+ parse_display_pass("::ffff:127.0.0.1:0", "::ffff:127.0.0.1", 0, 0);
+ parse_display_pass("2002:83fc:d052::1:0", "2002:83fc:d052::1", 0, 0);
+ parse_display_pass("2002:83fc:d052::1:0.1", "2002:83fc:d052::1", 0, 1);
+ parse_display_pass("[::]:0", "[::]", 0, 0);
+ parse_display_pass("[1::]:0", "[1::]", 0, 0);
+ parse_display_pass("[::1]:0", "[::1]", 0, 0);
+ parse_display_pass("[::1]:0.1", "[::1]", 0, 1);
+ parse_display_pass("[::127.0.0.1]:0", "[::127.0.0.1]", 0, 0);
+ parse_display_pass("[::ffff:127.0.0.1]:0", "[::ffff:127.0.0.1]", 0, 0);
+ parse_display_pass("[2002:83fc:d052::1]:0", "[2002:83fc:d052::1]", 0, 0);
+ parse_display_pass("[2002:83fc:d052::1]:0.1", "[2002:83fc:d052::1]", 0, 1);
+}
+END_TEST
+
+START_TEST(parse_display_decnet)
+{
+ parse_display_pass("myws::0", "myws:", 0, 0);
+ parse_display_pass("big::1", "big:", 1, 0);
+ parse_display_pass("hydra::0.1", "hydra:", 0, 1);
+}
+END_TEST
+
+START_TEST(parse_display_negative)
+{
+ parse_display_fail(0);
+ parse_display_fail("");
+ parse_display_fail(":");
+ parse_display_fail("::");
+ parse_display_fail(":::");
+ parse_display_fail(":.");
+ parse_display_fail(":a");
+ parse_display_fail(":a.");
+ parse_display_fail(":0.");
+ parse_display_fail(":.a");
+ parse_display_fail(":.0");
+ parse_display_fail(":0.a");
+ parse_display_fail(":0.0.");
+
+ parse_display_fail("127.0.0.1");
+ parse_display_fail("127.0.0.1:");
+ parse_display_fail("127.0.0.1::");
+ parse_display_fail("::127.0.0.1");
+ parse_display_fail("::127.0.0.1:");
+ parse_display_fail("::127.0.0.1::");
+ parse_display_fail("::ffff:127.0.0.1");
+ parse_display_fail("::ffff:127.0.0.1:");
+ parse_display_fail("::ffff:127.0.0.1::");
+ parse_display_fail("localhost");
+ parse_display_fail("localhost:");
+ parse_display_fail("localhost::");
+}
+END_TEST
+
+/* }}} */
+
+static void popcount_eq(uint32_t bits, int count)
+{
+ fail_unless(xcb_popcount(bits) == count, "unexpected popcount(%08x) != %d", bits, count);
+}
+
+START_TEST(popcount)
+{
+ uint32_t mask;
+ int count;
+
+ for (mask = 0xffffffff, count = 32; count >= 0; mask >>= 1, --count) {
+ popcount_eq(mask, count);
+ }
+ for (mask = 0x80000000; mask; mask >>= 1) {
+ popcount_eq(mask, 1);
+ }
+ for (mask = 0x80000000; mask > 1; mask >>= 1) {
+ popcount_eq(mask | 1, 2);
+ }
+}
+END_TEST
+
+Suite *public_suite(void)
+{
+ Suite *s = suite_create("Public API");
+ putenv("DISPLAY=");
+ suite_add_test(s, parse_display_unix, "xcb_parse_display unix");
+ suite_add_test(s, parse_display_ip, "xcb_parse_display ip");
+ suite_add_test(s, parse_display_ipv4, "xcb_parse_display ipv4");
+ suite_add_test(s, parse_display_ipv6, "xcb_parse_display ipv6");
+ suite_add_test(s, parse_display_decnet, "xcb_parse_display decnet");
+ suite_add_test(s, parse_display_negative, "xcb_parse_display negative");
+ suite_add_test(s, popcount, "xcb_popcount");
+ return s;
+}
diff --git a/libxcb/tests/check_suites.h b/libxcb/tests/check_suites.h
index 9eaf04293..499f1afaf 100644
--- a/libxcb/tests/check_suites.h
+++ b/libxcb/tests/check_suites.h
@@ -1,4 +1,4 @@
-#include <check.h>
-
-void suite_add_test(Suite *s, TFun tf, const char *name);
-Suite *public_suite(void);
+#include <check.h>
+
+void suite_add_test(Suite *s, TFun tf, const char *name);
+Suite *public_suite(void);
diff --git a/libxcb/tools/README b/libxcb/tools/README
index d9b5e09e5..2d1874e14 100644
--- a/libxcb/tools/README
+++ b/libxcb/tools/README
@@ -1,17 +1,17 @@
-
-api_conv.pl:
-------------
-
- Description: used to convert old XCB names in camel case to lower
- case names.
-
- Usage:
-
- * for several files:
-
-perl -i xcb/tools/api_conv.pl xcb/tools/constants <file1> <file2> ...
-
- * for a directory:
-
-find dir -name '*.[ch]' -exec perl -i xcb/tools/api_conv.pl xcb/tools/constants {} +
-
+
+api_conv.pl:
+------------
+
+ Description: used to convert old XCB names in camel case to lower
+ case names.
+
+ Usage:
+
+ * for several files:
+
+perl -i xcb/tools/api_conv.pl xcb/tools/constants <file1> <file2> ...
+
+ * for a directory:
+
+find dir -name '*.[ch]' -exec perl -i xcb/tools/api_conv.pl xcb/tools/constants {} +
+
diff --git a/libxcb/tools/api_conv.pl b/libxcb/tools/api_conv.pl
index 8f3cfa8ce..5b3c18d15 100644
--- a/libxcb/tools/api_conv.pl
+++ b/libxcb/tools/api_conv.pl
@@ -1,98 +1,98 @@
-#!/usr/bin/perl -plw
-use strict;
-
-BEGIN {
- %::const = map { $_ => 1 } (
- # constants in xcb.h
- "XCBNone",
- "XCBCopyFromParent",
- "XCBCurrentTime",
- "XCBNoSymbol",
- "XCBError",
- "XCBReply",
- # renamed constants
- "XCBButtonAny",
- "XCBButton1",
- "XCBButton2",
- "XCBButton3",
- "XCBButton4",
- "XCBButton5",
- "XCBHostInsert",
- "XCBHostDelete",
- "XCBGlxGC_GL_CURRENT_BIT",
- "XCBGlxGC_GL_POINT_BIT",
- "XCBGlxGC_GL_LINE_BIT",
- "XCBGlxGC_GL_POLYGON_BIT",
- "XCBGlxGC_GL_POLYGON_STIPPLE_BIT",
- "XCBGlxGC_GL_PIXEL_MODE_BIT",
- "XCBGlxGC_GL_LIGHTING_BIT",
- "XCBGlxGC_GL_FOG_BIT",
- "XCBGlxGC_GL_DEPTH_BUFFER_BIT",
- "XCBGlxGC_GL_ACCUM_BUFFER_BIT",
- "XCBGlxGC_GL_STENCIL_BUFFER_BIT",
- "XCBGlxGC_GL_VIEWPORT_BIT",
- "XCBGlxGC_GL_TRANSFORM_BIT",
- "XCBGlxGC_GL_ENABLE_BIT",
- "XCBGlxGC_GL_COLOR_BUFFER_BIT",
- "XCBGlxGC_GL_HINT_BIT",
- "XCBGlxGC_GL_EVAL_BIT",
- "XCBGlxGC_GL_LIST_BIT",
- "XCBGlxGC_GL_TEXTURE_BIT",
- "XCBGlxGC_GL_SCISSOR_BIT",
- "XCBGlxGC_GL_ALL_ATTRIB_BITS",
- "XCBGlxRM_GL_RENDER",
- "XCBGlxRM_GL_FEEDBACK",
- "XCBGlxRM_GL_SELECT",
- );
- open(CONST, shift) or die "failed to open constants list: $!";
- while(<CONST>)
- {
- chomp;
- die "invalid constant name: \"$_\"" unless /^XCB[A-Za-z0-9_]*$/;
- $::const{$_} = 1;
- }
- close(CONST);
-}
-
-sub convert($$)
-{
- local $_ = shift;
- my ($fun) = @_;
-
- return "xcb_generate_id" if /^xcb_[a-z0-9_]+_new$/ or /^XCB[A-Z0-9]+New$/;
- return "uint$1_t" if /^CARD(8|16|32)$/;
- return "int$1_t" if /^INT(8|16|32)$/;
- return "uint8_t" if $_ eq 'BOOL' or $_ eq 'BYTE';
- return $_ if /^[A-Z0-9]*_[A-Z0-9_]*$/ or !/^XCB(.+)/;
- my $const = defined $::const{$_};
- $_ = $1;
-
- s/^(GX|RandR|XFixes|XP|XvMC|ScreenSaver)(.)/uc($1) . "_" . $2/e unless /^ScreenSaver(?:Reset|Active)$/;
-
- my %abbr = (
- "Iter" => "iterator",
- "Req" => "request",
- "Rep" => "reply",
- );
-
- my $word;
- if(/CHAR2B|INT64|FLOAT32|FLOAT64|BOOL32|STRING8/)
- {
- $word = qr/[A-Z](?:[A-Z0-9]*|[a-z]*)/;
- } else {
- $word = qr/[0-9]+|[A-Z](?:[A-Z]*|[a-z]*)/;
- }
- s/($word)_?(?=[0-9A-Z]|$)/"_" . ($abbr{$1} or lc($1))/eg;
-
- s/^_shape_shape_/_shape_/;
- s/^_xf_?86_dri/_xf86dri/;
- $_ = "_family_decnet" if $_ eq "_family_de_cnet";
- return "XCB" . uc($_) if $const;
-
- $_ .= "_t" unless $fun or /_id$/;
-
- return "xcb" . $_;
-}
-
-s/^(\s*#\s*include\s*<)X11\/XCB\//$1xcb\//;
-s/([_A-Za-z][_A-Za-z0-9]*)([ \t]*\()?/convert($1, defined $2) . ($2 or "")/eg;
+#!/usr/bin/perl -plw
+use strict;
+
+BEGIN {
+ %::const = map { $_ => 1 } (
+ # constants in xcb.h
+ "XCBNone",
+ "XCBCopyFromParent",
+ "XCBCurrentTime",
+ "XCBNoSymbol",
+ "XCBError",
+ "XCBReply",
+ # renamed constants
+ "XCBButtonAny",
+ "XCBButton1",
+ "XCBButton2",
+ "XCBButton3",
+ "XCBButton4",
+ "XCBButton5",
+ "XCBHostInsert",
+ "XCBHostDelete",
+ "XCBGlxGC_GL_CURRENT_BIT",
+ "XCBGlxGC_GL_POINT_BIT",
+ "XCBGlxGC_GL_LINE_BIT",
+ "XCBGlxGC_GL_POLYGON_BIT",
+ "XCBGlxGC_GL_POLYGON_STIPPLE_BIT",
+ "XCBGlxGC_GL_PIXEL_MODE_BIT",
+ "XCBGlxGC_GL_LIGHTING_BIT",
+ "XCBGlxGC_GL_FOG_BIT",
+ "XCBGlxGC_GL_DEPTH_BUFFER_BIT",
+ "XCBGlxGC_GL_ACCUM_BUFFER_BIT",
+ "XCBGlxGC_GL_STENCIL_BUFFER_BIT",
+ "XCBGlxGC_GL_VIEWPORT_BIT",
+ "XCBGlxGC_GL_TRANSFORM_BIT",
+ "XCBGlxGC_GL_ENABLE_BIT",
+ "XCBGlxGC_GL_COLOR_BUFFER_BIT",
+ "XCBGlxGC_GL_HINT_BIT",
+ "XCBGlxGC_GL_EVAL_BIT",
+ "XCBGlxGC_GL_LIST_BIT",
+ "XCBGlxGC_GL_TEXTURE_BIT",
+ "XCBGlxGC_GL_SCISSOR_BIT",
+ "XCBGlxGC_GL_ALL_ATTRIB_BITS",
+ "XCBGlxRM_GL_RENDER",
+ "XCBGlxRM_GL_FEEDBACK",
+ "XCBGlxRM_GL_SELECT",
+ );
+ open(CONST, shift) or die "failed to open constants list: $!";
+ while(<CONST>)
+ {
+ chomp;
+ die "invalid constant name: \"$_\"" unless /^XCB[A-Za-z0-9_]*$/;
+ $::const{$_} = 1;
+ }
+ close(CONST);
+}
+
+sub convert($$)
+{
+ local $_ = shift;
+ my ($fun) = @_;
+
+ return "xcb_generate_id" if /^xcb_[a-z0-9_]+_new$/ or /^XCB[A-Z0-9]+New$/;
+ return "uint$1_t" if /^CARD(8|16|32)$/;
+ return "int$1_t" if /^INT(8|16|32)$/;
+ return "uint8_t" if $_ eq 'BOOL' or $_ eq 'BYTE';
+ return $_ if /^[A-Z0-9]*_[A-Z0-9_]*$/ or !/^XCB(.+)/;
+ my $const = defined $::const{$_};
+ $_ = $1;
+
+ s/^(GX|RandR|XFixes|XP|XvMC|ScreenSaver)(.)/uc($1) . "_" . $2/e unless /^ScreenSaver(?:Reset|Active)$/;
+
+ my %abbr = (
+ "Iter" => "iterator",
+ "Req" => "request",
+ "Rep" => "reply",
+ );
+
+ my $word;
+ if(/CHAR2B|INT64|FLOAT32|FLOAT64|BOOL32|STRING8/)
+ {
+ $word = qr/[A-Z](?:[A-Z0-9]*|[a-z]*)/;
+ } else {
+ $word = qr/[0-9]+|[A-Z](?:[A-Z]*|[a-z]*)/;
+ }
+ s/($word)_?(?=[0-9A-Z]|$)/"_" . ($abbr{$1} or lc($1))/eg;
+
+ s/^_shape_shape_/_shape_/;
+ s/^_xf_?86_dri/_xf86dri/;
+ $_ = "_family_decnet" if $_ eq "_family_de_cnet";
+ return "XCB" . uc($_) if $const;
+
+ $_ .= "_t" unless $fun or /_id$/;
+
+ return "xcb" . $_;
+}
+
+s/^(\s*#\s*include\s*<)X11\/XCB\//$1xcb\//;
+s/([_A-Za-z][_A-Za-z0-9]*)([ \t]*\()?/convert($1, defined $2) . ($2 or "")/eg;
diff --git a/libxcb/tools/constants b/libxcb/tools/constants
index 2bc101f1a..168560015 100644
--- a/libxcb/tools/constants
+++ b/libxcb/tools/constants
@@ -1,573 +1,573 @@
-XCBCompositeRedirectAutomatic
-XCBCompositeRedirectManual
-XCBDamageReportLevelRawRectangles
-XCBDamageReportLevelDeltaRectangles
-XCBDamageReportLevelBoundingBox
-XCBDamageReportLevelNonEmpty
-XCBDamageBadDamage
-XCBDamageNotify
-XCBGlxGeneric
-XCBGlxBadContext
-XCBGlxBadContextState
-XCBGlxBadDrawable
-XCBGlxBadPixmap
-XCBGlxBadContextTag
-XCBGlxBadCurrentWindow
-XCBGlxBadRenderRequest
-XCBGlxBadLargeRequest
-XCBGlxUnsupportedPrivateRequest
-XCBGlxBadFBConfig
-XCBGlxBadPbuffer
-XCBGlxBadCurrentDrawable
-XCBGlxBadWindow
-XCBGlxPbufferClobber
-XCBGlxPBCETDamaged
-XCBGlxPBCETSaved
-XCBGlxPBCDTWindow
-XCBGlxPBCDTPbuffer
-XCBGlxGC_GL_CURRENT_BIT
-XCBGlxGC_GL_POINT_BIT
-XCBGlxGC_GL_LINE_BIT
-XCBGlxGC_GL_POLYGON_BIT
-XCBGlxGC_GL_POLYGON_STIPPLE_BIT
-XCBGlxGC_GL_PIXEL_MODE_BIT
-XCBGlxGC_GL_LIGHTING_BIT
-XCBGlxGC_GL_FOG_BIT
-XCBGlxGC_GL_DEPTH_BUFFER_BIT
-XCBGlxGC_GL_ACCUM_BUFFER_BIT
-XCBGlxGC_GL_STENCIL_BUFFER_BIT
-XCBGlxGC_GL_VIEWPORT_BIT
-XCBGlxGC_GL_TRANSFORM_BIT
-XCBGlxGC_GL_ENABLE_BIT
-XCBGlxGC_GL_COLOR_BUFFER_BIT
-XCBGlxGC_GL_HINT_BIT
-XCBGlxGC_GL_EVAL_BIT
-XCBGlxGC_GL_LIST_BIT
-XCBGlxGC_GL_TEXTURE_BIT
-XCBGlxGC_GL_SCISSOR_BIT
-XCBGlxGC_GL_ALL_ATTRIB_BITS
-XCBGlxRM_GL_RENDER
-XCBGlxRM_GL_FEEDBACK
-XCBGlxRM_GL_SELECT
-XCBRandRRotationRotate_0
-XCBRandRRotationRotate_90
-XCBRandRRotationRotate_180
-XCBRandRRotationRotate_270
-XCBRandRRotationReflect_X
-XCBRandRRotationReflect_Y
-XCBRandRSetConfigSuccess
-XCBRandRSetConfigInvalidConfigTime
-XCBRandRSetConfigInvalidTime
-XCBRandRSetConfigFailed
-XCBRandRSMScreenChangeNotify
-XCBRandRScreenChangeNotify
-XCBRecordHTypeFromServerTime
-XCBRecordHTypeFromClientTime
-XCBRecordHTypeFromClientSequence
-XCBRecordCSCurrentClients
-XCBRecordCSFutureClients
-XCBRecordCSAllClients
-XCBRecordBadContext
-XCBRenderPictTypeIndexed
-XCBRenderPictTypeDirect
-XCBRenderPictOpClear
-XCBRenderPictOpSrc
-XCBRenderPictOpDst
-XCBRenderPictOpOver
-XCBRenderPictOpOverReverse
-XCBRenderPictOpIn
-XCBRenderPictOpInReverse
-XCBRenderPictOpOut
-XCBRenderPictOpOutReverse
-XCBRenderPictOpAtop
-XCBRenderPictOpAtopReverse
-XCBRenderPictOpXor
-XCBRenderPictOpAdd
-XCBRenderPictOpSaturate
-XCBRenderPictOpDisjointClear
-XCBRenderPictOpDisjointSrc
-XCBRenderPictOpDisjointDst
-XCBRenderPictOpDisjointOver
-XCBRenderPictOpDisjointOverReverse
-XCBRenderPictOpDisjointIn
-XCBRenderPictOpDisjointInReverse
-XCBRenderPictOpDisjointOut
-XCBRenderPictOpDisjointOutReverse
-XCBRenderPictOpDisjointAtop
-XCBRenderPictOpDisjointAtopReverse
-XCBRenderPictOpDisjointXor
-XCBRenderPictOpConjointClear
-XCBRenderPictOpConjointSrc
-XCBRenderPictOpConjointDst
-XCBRenderPictOpConjointOver
-XCBRenderPictOpConjointOverReverse
-XCBRenderPictOpConjointIn
-XCBRenderPictOpConjointInReverse
-XCBRenderPictOpConjointOut
-XCBRenderPictOpConjointOutReverse
-XCBRenderPictOpConjointAtop
-XCBRenderPictOpConjointAtopReverse
-XCBRenderPictOpConjointXor
-XCBRenderPolyEdgeSharp
-XCBRenderPolyEdgeSmooth
-XCBRenderPolyModePrecise
-XCBRenderPolyModeImprecise
-XCBRenderCPRepeat
-XCBRenderCPAlphaMap
-XCBRenderCPAlphaXOrigin
-XCBRenderCPAlphaYOrigin
-XCBRenderCPClipXOrigin
-XCBRenderCPClipYOrigin
-XCBRenderCPClipMask
-XCBRenderCPGraphicsExposure
-XCBRenderCPSubwindowMode
-XCBRenderCPPolyEdge
-XCBRenderCPPolyMode
-XCBRenderCPDither
-XCBRenderCPComponentAlpha
-XCBRenderSubPixelUnknown
-XCBRenderSubPixelHorizontalRGB
-XCBRenderSubPixelHorizontalBGR
-XCBRenderSubPixelVerticalRGB
-XCBRenderSubPixelVerticalBGR
-XCBRenderSubPixelNone
-XCBRenderPictFormat
-XCBRenderPicture
-XCBRenderPictOp
-XCBRenderGlyphSet
-XCBRenderGlyph
-XCBScreenSaverKindBlanked
-XCBScreenSaverKindInternal
-XCBScreenSaverKindExternal
-XCBScreenSaverEventNotifyMask
-XCBScreenSaverEventCycleMask
-XCBScreenSaverStateOff
-XCBScreenSaverStateOn
-XCBScreenSaverStateCycle
-XCBScreenSaverStateDisabled
-XCBScreenSaverNotify
-XCBShapeSOSet
-XCBShapeSOUnion
-XCBShapeSOIntersect
-XCBShapeSOSubtract
-XCBShapeSOInvert
-XCBShapeSKBounding
-XCBShapeSKClip
-XCBShapeSKInput
-XCBShapeNotify
-XCBShmCompletion
-XCBShmBadSeg
-XCBSyncALARMSTATEActive
-XCBSyncALARMSTATEInactive
-XCBSyncALARMSTATEDestroyed
-XCBSyncTESTTYPEPositiveTransition
-XCBSyncTESTTYPENegativeTransition
-XCBSyncTESTTYPEPositiveComparison
-XCBSyncTESTTYPENegativeComparison
-XCBSyncVALUETYPEAbsolute
-XCBSyncVALUETYPERelative
-XCBSyncCACounter
-XCBSyncCAValueType
-XCBSyncCAValue
-XCBSyncCATestType
-XCBSyncCADelta
-XCBSyncCAEvents
-XCBSyncCounter
-XCBSyncAlarm
-XCBSyncCounterNotify
-XCBSyncAlarmNotify
-XCBXevieDatatypeUnmodified
-XCBXevieDatatypeModified
-XCBXFixesSaveSetModeInsert
-XCBXFixesSaveSetModeDelete
-XCBXFixesSaveSetTargetNearest
-XCBXFixesSaveSetTargetRoot
-XCBXFixesSaveSetMappingMap
-XCBXFixesSaveSetMappingUnmap
-XCBXFixesSelectionEventSetSelectionOwner
-XCBXFixesSelectionEventSelectionWindowDestroy
-XCBXFixesSelectionEventSelectionClientClose
-XCBXFixesSelectionEventMaskSetSelectionOwner
-XCBXFixesSelectionEventMaskSelectionWindowDestroy
-XCBXFixesSelectionEventMaskSelectionClientClose
-XCBXFixesSelectionNotify
-XCBXFixesCursorNotifyDisplayCursor
-XCBXFixesCursorNotifyMaskDisplayCursor
-XCBXFixesCursorNotify
-XCBXFixesBadRegion
-XCBXPGetDocFinished
-XCBXPGetDocSecondConsumer
-XCBXPEvMaskNoEventMask
-XCBXPEvMaskPrintMask
-XCBXPEvMaskAttributeMask
-XCBXPDetailStartJobNotify
-XCBXPDetailEndJobNotify
-XCBXPDetailStartDocNotify
-XCBXPDetailEndDocNotify
-XCBXPDetailStartPageNotify
-XCBXPDetailEndPageNotify
-XCBXPAttrJobAttr
-XCBXPAttrDocAttr
-XCBXPAttrPageAttr
-XCBXPAttrPrinterAttr
-XCBXPAttrServerAttr
-XCBXPAttrMediumAttr
-XCBXPAttrSpoolerAttr
-XCBXPNotify
-XCBXPAttributNotify
-XCBXPBadContext
-XCBXPBadSequence
-XCBXvTypeInputMask
-XCBXvTypeOutputMask
-XCBXvTypeVideoMask
-XCBXvTypeStillMask
-XCBXvTypeImageMask
-XCBXvImageFormatInfoTypeRGB
-XCBXvImageFormatInfoTypeYUV
-XCBXvImageFormatInfoFormatPacked
-XCBXvImageFormatInfoFormatPlanar
-XCBXvAttributeFlagGettable
-XCBXvAttributeFlagSettable
-XCBXvBadPort
-XCBXvBadEncoding
-XCBXvBadControl
-XCBXvVideoNotify
-XCBXvPortNotify
-XCBTestCursorNone
-XCBTestCursorCurrent
-XCBVisualClassStaticGray
-XCBVisualClassGrayScale
-XCBVisualClassStaticColor
-XCBVisualClassPseudoColor
-XCBVisualClassTrueColor
-XCBVisualClassDirectColor
-XCBImageOrderLSBFirst
-XCBImageOrderMSBFirst
-XCBModMaskShift
-XCBModMaskLock
-XCBModMaskControl
-XCBModMask1
-XCBModMask2
-XCBModMask3
-XCBModMask4
-XCBModMask5
-XCBKeyPress
-XCBKeyRelease
-XCBButtonMask1
-XCBButtonMask2
-XCBButtonMask3
-XCBButtonMask4
-XCBButtonMask5
-XCBButtonMaskAny
-XCBButtonPress
-XCBButtonRelease
-XCBMotionNormal
-XCBMotionHint
-XCBMotionNotify
-XCBNotifyDetailAncestor
-XCBNotifyDetailVirtual
-XCBNotifyDetailInferior
-XCBNotifyDetailNonlinear
-XCBNotifyDetailNonlinearVirtual
-XCBNotifyDetailPointer
-XCBNotifyDetailPointerRoot
-XCBNotifyDetailNone
-XCBNotifyModeNormal
-XCBNotifyModeGrab
-XCBNotifyModeUngrab
-XCBNotifyModeWhileGrabbed
-XCBEnterNotify
-XCBLeaveNotify
-XCBFocusIn
-XCBFocusOut
-XCBKeymapNotify
-XCBExpose
-XCBGraphicsExposure
-XCBNoExposure
-XCBVisibilityUnobscured
-XCBVisibilityPartiallyObscured
-XCBVisibilityFullyObscured
-XCBVisibilityNotify
-XCBCreateNotify
-XCBDestroyNotify
-XCBUnmapNotify
-XCBMapNotify
-XCBMapRequest
-XCBReparentNotify
-XCBConfigureNotify
-XCBConfigureRequest
-XCBGravityNotify
-XCBResizeRequest
-XCBPlaceOnTop
-XCBPlaceOnBottom
-XCBCirculateNotify
-XCBCirculateRequest
-XCBPropertyNewValue
-XCBPropertyDelete
-XCBPropertyNotify
-XCBSelectionClear
-XCBSelectionRequest
-XCBSelectionNotify
-XCBColormapStateUninstalled
-XCBColormapStateInstalled
-XCBColormapNotify
-XCBClientMessage
-XCBMappingModifier
-XCBMappingKeyboard
-XCBMappingPointer
-XCBMappingNotify
-XCBRequest
-XCBValue
-XCBWindow
-XCBPixmap
-XCBAtom
-XCBCursor
-XCBFont
-XCBMatch
-XCBDrawable
-XCBAccess
-XCBAlloc
-XCBColormap
-XCBGContext
-XCBIDChoice
-XCBName
-XCBLength
-XCBImplementation
-XCBWindowClassCopyFromParent
-XCBWindowClassInputOutput
-XCBWindowClassInputOnly
-XCBCWBackPixmap
-XCBCWBackPixel
-XCBCWBorderPixmap
-XCBCWBorderPixel
-XCBCWBitGravity
-XCBCWWinGravity
-XCBCWBackingStore
-XCBCWBackingPlanes
-XCBCWBackingPixel
-XCBCWOverrideRedirect
-XCBCWSaveUnder
-XCBCWEventMask
-XCBCWDontPropagate
-XCBCWColormap
-XCBCWCursor
-XCBBackPixmapNone
-XCBBackPixmapParentRelative
-XCBGravityBitForget
-XCBGravityWinUnmap
-XCBGravityNorthWest
-XCBGravityNorth
-XCBGravityNorthEast
-XCBGravityWest
-XCBGravityCenter
-XCBGravityEast
-XCBGravitySouthWest
-XCBGravitySouth
-XCBGravitySouthEast
-XCBGravityStatic
-XCBBackingStoreNotUseful
-XCBBackingStoreWhenMapped
-XCBBackingStoreAlways
-XCBEventMaskNoEvent
-XCBEventMaskKeyPress
-XCBEventMaskKeyRelease
-XCBEventMaskButtonPress
-XCBEventMaskButtonRelease
-XCBEventMaskEnterWindow
-XCBEventMaskLeaveWindow
-XCBEventMaskPointerMotion
-XCBEventMaskPointerMotionHint
-XCBEventMaskButton1Motion
-XCBEventMaskButton2Motion
-XCBEventMaskButton3Motion
-XCBEventMaskButton4Motion
-XCBEventMaskButton5Motion
-XCBEventMaskButtonMotion
-XCBEventMaskKeymapState
-XCBEventMaskExposure
-XCBEventMaskVisibilityChange
-XCBEventMaskStructureNotify
-XCBEventMaskResizeRedirect
-XCBEventMaskSubstructureNotify
-XCBEventMaskSubstructureRedirect
-XCBEventMaskFocusChange
-XCBEventMaskPropertyChange
-XCBEventMaskColorMapChange
-XCBEventMaskOwnerGrabButton
-XCBMapStateUnmapped
-XCBMapStateUnviewable
-XCBMapStateViewable
-XCBSetModeInsert
-XCBSetModeDelete
-XCBConfigWindowX
-XCBConfigWindowY
-XCBConfigWindowWidth
-XCBConfigWindowHeight
-XCBConfigWindowBorderWidth
-XCBConfigWindowSibling
-XCBConfigWindowStackMode
-XCBStackModeAbove
-XCBStackModeBelow
-XCBStackModeTopIf
-XCBStackModeBottomIf
-XCBStackModeOpposite
-XCBCirculateRaiseLowest
-XCBCirculateLowerHighest
-XCBPropModeReplace
-XCBPropModePrepend
-XCBPropModeAppend
-XCBGetPropertyTypeAny
-XCBSendEventDestPointerWindow
-XCBSendEventDestItemFocus
-XCBGrabModeAsync
-XCBGrabModeSync
-XCBGrabStatusSuccess
-XCBGrabStatusAlreadyGrabbed
-XCBGrabStatusInvalidTime
-XCBGrabStatusNotViewable
-XCBGrabStatusFrozen
-XCBButtonAny
-XCBButton1
-XCBButton2
-XCBButton3
-XCBButton4
-XCBButton5
-XCBGrabAny
-XCBAllowAsyncPointer
-XCBAllowSyncPointer
-XCBAllowReplayPointer
-XCBAllowAsyncKeyboard
-XCBAllowSyncKeyboard
-XCBAllowReplayKeyboard
-XCBAllowAsyncBoth
-XCBAllowSyncBoth
-XCBInputFocusNone
-XCBInputFocusPointerRoot
-XCBInputFocusParent
-XCBFontDrawLeftToRight
-XCBFontDrawRightToLeft
-XCBGCFunction
-XCBGCPlaneMask
-XCBGCForeground
-XCBGCBackground
-XCBGCLineWidth
-XCBGCLineStyle
-XCBGCCapStyle
-XCBGCJoinStyle
-XCBGCFillStyle
-XCBGCFillRule
-XCBGCTile
-XCBGCStipple
-XCBGCTileStippleOriginX
-XCBGCTileStippleOriginY
-XCBGCFont
-XCBGCSubwindowMode
-XCBGCGraphicsExposures
-XCBGCClipOriginX
-XCBGCClipOriginY
-XCBGCClipMask
-XCBGCDashOffset
-XCBGCDashList
-XCBGCArcMode
-XCBGXclear
-XCBGXand
-XCBGXandReverse
-XCBGXcopy
-XCBGXandInverted
-XCBGXnoop
-XCBGXxor
-XCBGXor
-XCBGXnor
-XCBGXequiv
-XCBGXinvert
-XCBGXorReverse
-XCBGXcopyInverted
-XCBGXorInverted
-XCBGXnand
-XCBGXset
-XCBLineStyleSolid
-XCBLineStyleOnOffDash
-XCBLineStyleDoubleDash
-XCBCapStyleNotLast
-XCBCapStyleCap
-XCBCapStyleButt
-XCBCapStyleProjecting
-XCBJoinStyleMitre
-XCBJoinStyleRound
-XCBJoinStyleBevel
-XCBFillStyleSolid
-XCBFillStyleTiled
-XCBFillStyleStippled
-XCBFillStyleOpaqueStippled
-XCBFillRuleEvenOdd
-XCBFillRuleWinding
-XCBSubwindowModeClipByChildren
-XCBSubwindowModeIncludeInferiors
-XCBArcModeChord
-XCBArcModePieSlice
-XCBClipOrderingUnsorted
-XCBClipOrderingYSorted
-XCBClipOrderingYXSorted
-XCBClipOrderingYXBanded
-XCBCoordModeOrigin
-XCBCoordModePrevious
-XCBPolyShapeComplex
-XCBPolyShapeNonconvex
-XCBPolyShapeConvex
-XCBImageFormatXYBitmap
-XCBImageFormatXYPixmap
-XCBImageFormatZPixmap
-XCBColormapAllocNone
-XCBColormapAllocAll
-XCBColorFlagRed
-XCBColorFlagGreen
-XCBColorFlagBlue
-XCBQueryShapeOfLargestCursor
-XCBQueryShapeOfFastestTile
-XCBQueryShapeOfFastestStipple
-XCBKBKeyClickPercent
-XCBKBBellPercent
-XCBKBBellPitch
-XCBKBBellDuration
-XCBKBLed
-XCBKBLedMode
-XCBKBKey
-XCBKBAutoRepeatMode
-XCBLedModeOff
-XCBLedModeOn
-XCBAutoRepeatModeOff
-XCBAutoRepeatModeOn
-XCBAutoRepeatModeDefault
-XCBBlankingNotPreferred
-XCBBlankingPreferred
-XCBBlankingDefault
-XCBExposuresNotAllowed
-XCBExposuresAllowed
-XCBExposuresDefault
-XCBHostInsert
-XCBHostDelete
-XCBFamilyInternet
-XCBFamilyDECnet
-XCBFamilyChaos
-XCBFamilyServerInterpreted
-XCBFamilyInternet6
-XCBAccessControlDisable
-XCBAccessControlEnable
-XCBCloseDownDestroyAll
-XCBCloseDownRetainPermanent
-XCBCloseDownRetainTemporary
-XCBKillAllTemporary
-XCBScreenSaverReset
-XCBScreenSaverActive
-XCBMappingStatusSuccess
-XCBMappingStatusBusy
-XCBMappingStatusFailure
-XCBMapIndexShift
-XCBMapIndexLock
-XCBMapIndexControl
-XCBMapIndex1
-XCBMapIndex2
-XCBMapIndex3
-XCBMapIndex4
-XCBMapIndex5
+XCBCompositeRedirectAutomatic
+XCBCompositeRedirectManual
+XCBDamageReportLevelRawRectangles
+XCBDamageReportLevelDeltaRectangles
+XCBDamageReportLevelBoundingBox
+XCBDamageReportLevelNonEmpty
+XCBDamageBadDamage
+XCBDamageNotify
+XCBGlxGeneric
+XCBGlxBadContext
+XCBGlxBadContextState
+XCBGlxBadDrawable
+XCBGlxBadPixmap
+XCBGlxBadContextTag
+XCBGlxBadCurrentWindow
+XCBGlxBadRenderRequest
+XCBGlxBadLargeRequest
+XCBGlxUnsupportedPrivateRequest
+XCBGlxBadFBConfig
+XCBGlxBadPbuffer
+XCBGlxBadCurrentDrawable
+XCBGlxBadWindow
+XCBGlxPbufferClobber
+XCBGlxPBCETDamaged
+XCBGlxPBCETSaved
+XCBGlxPBCDTWindow
+XCBGlxPBCDTPbuffer
+XCBGlxGC_GL_CURRENT_BIT
+XCBGlxGC_GL_POINT_BIT
+XCBGlxGC_GL_LINE_BIT
+XCBGlxGC_GL_POLYGON_BIT
+XCBGlxGC_GL_POLYGON_STIPPLE_BIT
+XCBGlxGC_GL_PIXEL_MODE_BIT
+XCBGlxGC_GL_LIGHTING_BIT
+XCBGlxGC_GL_FOG_BIT
+XCBGlxGC_GL_DEPTH_BUFFER_BIT
+XCBGlxGC_GL_ACCUM_BUFFER_BIT
+XCBGlxGC_GL_STENCIL_BUFFER_BIT
+XCBGlxGC_GL_VIEWPORT_BIT
+XCBGlxGC_GL_TRANSFORM_BIT
+XCBGlxGC_GL_ENABLE_BIT
+XCBGlxGC_GL_COLOR_BUFFER_BIT
+XCBGlxGC_GL_HINT_BIT
+XCBGlxGC_GL_EVAL_BIT
+XCBGlxGC_GL_LIST_BIT
+XCBGlxGC_GL_TEXTURE_BIT
+XCBGlxGC_GL_SCISSOR_BIT
+XCBGlxGC_GL_ALL_ATTRIB_BITS
+XCBGlxRM_GL_RENDER
+XCBGlxRM_GL_FEEDBACK
+XCBGlxRM_GL_SELECT
+XCBRandRRotationRotate_0
+XCBRandRRotationRotate_90
+XCBRandRRotationRotate_180
+XCBRandRRotationRotate_270
+XCBRandRRotationReflect_X
+XCBRandRRotationReflect_Y
+XCBRandRSetConfigSuccess
+XCBRandRSetConfigInvalidConfigTime
+XCBRandRSetConfigInvalidTime
+XCBRandRSetConfigFailed
+XCBRandRSMScreenChangeNotify
+XCBRandRScreenChangeNotify
+XCBRecordHTypeFromServerTime
+XCBRecordHTypeFromClientTime
+XCBRecordHTypeFromClientSequence
+XCBRecordCSCurrentClients
+XCBRecordCSFutureClients
+XCBRecordCSAllClients
+XCBRecordBadContext
+XCBRenderPictTypeIndexed
+XCBRenderPictTypeDirect
+XCBRenderPictOpClear
+XCBRenderPictOpSrc
+XCBRenderPictOpDst
+XCBRenderPictOpOver
+XCBRenderPictOpOverReverse
+XCBRenderPictOpIn
+XCBRenderPictOpInReverse
+XCBRenderPictOpOut
+XCBRenderPictOpOutReverse
+XCBRenderPictOpAtop
+XCBRenderPictOpAtopReverse
+XCBRenderPictOpXor
+XCBRenderPictOpAdd
+XCBRenderPictOpSaturate
+XCBRenderPictOpDisjointClear
+XCBRenderPictOpDisjointSrc
+XCBRenderPictOpDisjointDst
+XCBRenderPictOpDisjointOver
+XCBRenderPictOpDisjointOverReverse
+XCBRenderPictOpDisjointIn
+XCBRenderPictOpDisjointInReverse
+XCBRenderPictOpDisjointOut
+XCBRenderPictOpDisjointOutReverse
+XCBRenderPictOpDisjointAtop
+XCBRenderPictOpDisjointAtopReverse
+XCBRenderPictOpDisjointXor
+XCBRenderPictOpConjointClear
+XCBRenderPictOpConjointSrc
+XCBRenderPictOpConjointDst
+XCBRenderPictOpConjointOver
+XCBRenderPictOpConjointOverReverse
+XCBRenderPictOpConjointIn
+XCBRenderPictOpConjointInReverse
+XCBRenderPictOpConjointOut
+XCBRenderPictOpConjointOutReverse
+XCBRenderPictOpConjointAtop
+XCBRenderPictOpConjointAtopReverse
+XCBRenderPictOpConjointXor
+XCBRenderPolyEdgeSharp
+XCBRenderPolyEdgeSmooth
+XCBRenderPolyModePrecise
+XCBRenderPolyModeImprecise
+XCBRenderCPRepeat
+XCBRenderCPAlphaMap
+XCBRenderCPAlphaXOrigin
+XCBRenderCPAlphaYOrigin
+XCBRenderCPClipXOrigin
+XCBRenderCPClipYOrigin
+XCBRenderCPClipMask
+XCBRenderCPGraphicsExposure
+XCBRenderCPSubwindowMode
+XCBRenderCPPolyEdge
+XCBRenderCPPolyMode
+XCBRenderCPDither
+XCBRenderCPComponentAlpha
+XCBRenderSubPixelUnknown
+XCBRenderSubPixelHorizontalRGB
+XCBRenderSubPixelHorizontalBGR
+XCBRenderSubPixelVerticalRGB
+XCBRenderSubPixelVerticalBGR
+XCBRenderSubPixelNone
+XCBRenderPictFormat
+XCBRenderPicture
+XCBRenderPictOp
+XCBRenderGlyphSet
+XCBRenderGlyph
+XCBScreenSaverKindBlanked
+XCBScreenSaverKindInternal
+XCBScreenSaverKindExternal
+XCBScreenSaverEventNotifyMask
+XCBScreenSaverEventCycleMask
+XCBScreenSaverStateOff
+XCBScreenSaverStateOn
+XCBScreenSaverStateCycle
+XCBScreenSaverStateDisabled
+XCBScreenSaverNotify
+XCBShapeSOSet
+XCBShapeSOUnion
+XCBShapeSOIntersect
+XCBShapeSOSubtract
+XCBShapeSOInvert
+XCBShapeSKBounding
+XCBShapeSKClip
+XCBShapeSKInput
+XCBShapeNotify
+XCBShmCompletion
+XCBShmBadSeg
+XCBSyncALARMSTATEActive
+XCBSyncALARMSTATEInactive
+XCBSyncALARMSTATEDestroyed
+XCBSyncTESTTYPEPositiveTransition
+XCBSyncTESTTYPENegativeTransition
+XCBSyncTESTTYPEPositiveComparison
+XCBSyncTESTTYPENegativeComparison
+XCBSyncVALUETYPEAbsolute
+XCBSyncVALUETYPERelative
+XCBSyncCACounter
+XCBSyncCAValueType
+XCBSyncCAValue
+XCBSyncCATestType
+XCBSyncCADelta
+XCBSyncCAEvents
+XCBSyncCounter
+XCBSyncAlarm
+XCBSyncCounterNotify
+XCBSyncAlarmNotify
+XCBXevieDatatypeUnmodified
+XCBXevieDatatypeModified
+XCBXFixesSaveSetModeInsert
+XCBXFixesSaveSetModeDelete
+XCBXFixesSaveSetTargetNearest
+XCBXFixesSaveSetTargetRoot
+XCBXFixesSaveSetMappingMap
+XCBXFixesSaveSetMappingUnmap
+XCBXFixesSelectionEventSetSelectionOwner
+XCBXFixesSelectionEventSelectionWindowDestroy
+XCBXFixesSelectionEventSelectionClientClose
+XCBXFixesSelectionEventMaskSetSelectionOwner
+XCBXFixesSelectionEventMaskSelectionWindowDestroy
+XCBXFixesSelectionEventMaskSelectionClientClose
+XCBXFixesSelectionNotify
+XCBXFixesCursorNotifyDisplayCursor
+XCBXFixesCursorNotifyMaskDisplayCursor
+XCBXFixesCursorNotify
+XCBXFixesBadRegion
+XCBXPGetDocFinished
+XCBXPGetDocSecondConsumer
+XCBXPEvMaskNoEventMask
+XCBXPEvMaskPrintMask
+XCBXPEvMaskAttributeMask
+XCBXPDetailStartJobNotify
+XCBXPDetailEndJobNotify
+XCBXPDetailStartDocNotify
+XCBXPDetailEndDocNotify
+XCBXPDetailStartPageNotify
+XCBXPDetailEndPageNotify
+XCBXPAttrJobAttr
+XCBXPAttrDocAttr
+XCBXPAttrPageAttr
+XCBXPAttrPrinterAttr
+XCBXPAttrServerAttr
+XCBXPAttrMediumAttr
+XCBXPAttrSpoolerAttr
+XCBXPNotify
+XCBXPAttributNotify
+XCBXPBadContext
+XCBXPBadSequence
+XCBXvTypeInputMask
+XCBXvTypeOutputMask
+XCBXvTypeVideoMask
+XCBXvTypeStillMask
+XCBXvTypeImageMask
+XCBXvImageFormatInfoTypeRGB
+XCBXvImageFormatInfoTypeYUV
+XCBXvImageFormatInfoFormatPacked
+XCBXvImageFormatInfoFormatPlanar
+XCBXvAttributeFlagGettable
+XCBXvAttributeFlagSettable
+XCBXvBadPort
+XCBXvBadEncoding
+XCBXvBadControl
+XCBXvVideoNotify
+XCBXvPortNotify
+XCBTestCursorNone
+XCBTestCursorCurrent
+XCBVisualClassStaticGray
+XCBVisualClassGrayScale
+XCBVisualClassStaticColor
+XCBVisualClassPseudoColor
+XCBVisualClassTrueColor
+XCBVisualClassDirectColor
+XCBImageOrderLSBFirst
+XCBImageOrderMSBFirst
+XCBModMaskShift
+XCBModMaskLock
+XCBModMaskControl
+XCBModMask1
+XCBModMask2
+XCBModMask3
+XCBModMask4
+XCBModMask5
+XCBKeyPress
+XCBKeyRelease
+XCBButtonMask1
+XCBButtonMask2
+XCBButtonMask3
+XCBButtonMask4
+XCBButtonMask5
+XCBButtonMaskAny
+XCBButtonPress
+XCBButtonRelease
+XCBMotionNormal
+XCBMotionHint
+XCBMotionNotify
+XCBNotifyDetailAncestor
+XCBNotifyDetailVirtual
+XCBNotifyDetailInferior
+XCBNotifyDetailNonlinear
+XCBNotifyDetailNonlinearVirtual
+XCBNotifyDetailPointer
+XCBNotifyDetailPointerRoot
+XCBNotifyDetailNone
+XCBNotifyModeNormal
+XCBNotifyModeGrab
+XCBNotifyModeUngrab
+XCBNotifyModeWhileGrabbed
+XCBEnterNotify
+XCBLeaveNotify
+XCBFocusIn
+XCBFocusOut
+XCBKeymapNotify
+XCBExpose
+XCBGraphicsExposure
+XCBNoExposure
+XCBVisibilityUnobscured
+XCBVisibilityPartiallyObscured
+XCBVisibilityFullyObscured
+XCBVisibilityNotify
+XCBCreateNotify
+XCBDestroyNotify
+XCBUnmapNotify
+XCBMapNotify
+XCBMapRequest
+XCBReparentNotify
+XCBConfigureNotify
+XCBConfigureRequest
+XCBGravityNotify
+XCBResizeRequest
+XCBPlaceOnTop
+XCBPlaceOnBottom
+XCBCirculateNotify
+XCBCirculateRequest
+XCBPropertyNewValue
+XCBPropertyDelete
+XCBPropertyNotify
+XCBSelectionClear
+XCBSelectionRequest
+XCBSelectionNotify
+XCBColormapStateUninstalled
+XCBColormapStateInstalled
+XCBColormapNotify
+XCBClientMessage
+XCBMappingModifier
+XCBMappingKeyboard
+XCBMappingPointer
+XCBMappingNotify
+XCBRequest
+XCBValue
+XCBWindow
+XCBPixmap
+XCBAtom
+XCBCursor
+XCBFont
+XCBMatch
+XCBDrawable
+XCBAccess
+XCBAlloc
+XCBColormap
+XCBGContext
+XCBIDChoice
+XCBName
+XCBLength
+XCBImplementation
+XCBWindowClassCopyFromParent
+XCBWindowClassInputOutput
+XCBWindowClassInputOnly
+XCBCWBackPixmap
+XCBCWBackPixel
+XCBCWBorderPixmap
+XCBCWBorderPixel
+XCBCWBitGravity
+XCBCWWinGravity
+XCBCWBackingStore
+XCBCWBackingPlanes
+XCBCWBackingPixel
+XCBCWOverrideRedirect
+XCBCWSaveUnder
+XCBCWEventMask
+XCBCWDontPropagate
+XCBCWColormap
+XCBCWCursor
+XCBBackPixmapNone
+XCBBackPixmapParentRelative
+XCBGravityBitForget
+XCBGravityWinUnmap
+XCBGravityNorthWest
+XCBGravityNorth
+XCBGravityNorthEast
+XCBGravityWest
+XCBGravityCenter
+XCBGravityEast
+XCBGravitySouthWest
+XCBGravitySouth
+XCBGravitySouthEast
+XCBGravityStatic
+XCBBackingStoreNotUseful
+XCBBackingStoreWhenMapped
+XCBBackingStoreAlways
+XCBEventMaskNoEvent
+XCBEventMaskKeyPress
+XCBEventMaskKeyRelease
+XCBEventMaskButtonPress
+XCBEventMaskButtonRelease
+XCBEventMaskEnterWindow
+XCBEventMaskLeaveWindow
+XCBEventMaskPointerMotion
+XCBEventMaskPointerMotionHint
+XCBEventMaskButton1Motion
+XCBEventMaskButton2Motion
+XCBEventMaskButton3Motion
+XCBEventMaskButton4Motion
+XCBEventMaskButton5Motion
+XCBEventMaskButtonMotion
+XCBEventMaskKeymapState
+XCBEventMaskExposure
+XCBEventMaskVisibilityChange
+XCBEventMaskStructureNotify
+XCBEventMaskResizeRedirect
+XCBEventMaskSubstructureNotify
+XCBEventMaskSubstructureRedirect
+XCBEventMaskFocusChange
+XCBEventMaskPropertyChange
+XCBEventMaskColorMapChange
+XCBEventMaskOwnerGrabButton
+XCBMapStateUnmapped
+XCBMapStateUnviewable
+XCBMapStateViewable
+XCBSetModeInsert
+XCBSetModeDelete
+XCBConfigWindowX
+XCBConfigWindowY
+XCBConfigWindowWidth
+XCBConfigWindowHeight
+XCBConfigWindowBorderWidth
+XCBConfigWindowSibling
+XCBConfigWindowStackMode
+XCBStackModeAbove
+XCBStackModeBelow
+XCBStackModeTopIf
+XCBStackModeBottomIf
+XCBStackModeOpposite
+XCBCirculateRaiseLowest
+XCBCirculateLowerHighest
+XCBPropModeReplace
+XCBPropModePrepend
+XCBPropModeAppend
+XCBGetPropertyTypeAny
+XCBSendEventDestPointerWindow
+XCBSendEventDestItemFocus
+XCBGrabModeAsync
+XCBGrabModeSync
+XCBGrabStatusSuccess
+XCBGrabStatusAlreadyGrabbed
+XCBGrabStatusInvalidTime
+XCBGrabStatusNotViewable
+XCBGrabStatusFrozen
+XCBButtonAny
+XCBButton1
+XCBButton2
+XCBButton3
+XCBButton4
+XCBButton5
+XCBGrabAny
+XCBAllowAsyncPointer
+XCBAllowSyncPointer
+XCBAllowReplayPointer
+XCBAllowAsyncKeyboard
+XCBAllowSyncKeyboard
+XCBAllowReplayKeyboard
+XCBAllowAsyncBoth
+XCBAllowSyncBoth
+XCBInputFocusNone
+XCBInputFocusPointerRoot
+XCBInputFocusParent
+XCBFontDrawLeftToRight
+XCBFontDrawRightToLeft
+XCBGCFunction
+XCBGCPlaneMask
+XCBGCForeground
+XCBGCBackground
+XCBGCLineWidth
+XCBGCLineStyle
+XCBGCCapStyle
+XCBGCJoinStyle
+XCBGCFillStyle
+XCBGCFillRule
+XCBGCTile
+XCBGCStipple
+XCBGCTileStippleOriginX
+XCBGCTileStippleOriginY
+XCBGCFont
+XCBGCSubwindowMode
+XCBGCGraphicsExposures
+XCBGCClipOriginX
+XCBGCClipOriginY
+XCBGCClipMask
+XCBGCDashOffset
+XCBGCDashList
+XCBGCArcMode
+XCBGXclear
+XCBGXand
+XCBGXandReverse
+XCBGXcopy
+XCBGXandInverted
+XCBGXnoop
+XCBGXxor
+XCBGXor
+XCBGXnor
+XCBGXequiv
+XCBGXinvert
+XCBGXorReverse
+XCBGXcopyInverted
+XCBGXorInverted
+XCBGXnand
+XCBGXset
+XCBLineStyleSolid
+XCBLineStyleOnOffDash
+XCBLineStyleDoubleDash
+XCBCapStyleNotLast
+XCBCapStyleCap
+XCBCapStyleButt
+XCBCapStyleProjecting
+XCBJoinStyleMitre
+XCBJoinStyleRound
+XCBJoinStyleBevel
+XCBFillStyleSolid
+XCBFillStyleTiled
+XCBFillStyleStippled
+XCBFillStyleOpaqueStippled
+XCBFillRuleEvenOdd
+XCBFillRuleWinding
+XCBSubwindowModeClipByChildren
+XCBSubwindowModeIncludeInferiors
+XCBArcModeChord
+XCBArcModePieSlice
+XCBClipOrderingUnsorted
+XCBClipOrderingYSorted
+XCBClipOrderingYXSorted
+XCBClipOrderingYXBanded
+XCBCoordModeOrigin
+XCBCoordModePrevious
+XCBPolyShapeComplex
+XCBPolyShapeNonconvex
+XCBPolyShapeConvex
+XCBImageFormatXYBitmap
+XCBImageFormatXYPixmap
+XCBImageFormatZPixmap
+XCBColormapAllocNone
+XCBColormapAllocAll
+XCBColorFlagRed
+XCBColorFlagGreen
+XCBColorFlagBlue
+XCBQueryShapeOfLargestCursor
+XCBQueryShapeOfFastestTile
+XCBQueryShapeOfFastestStipple
+XCBKBKeyClickPercent
+XCBKBBellPercent
+XCBKBBellPitch
+XCBKBBellDuration
+XCBKBLed
+XCBKBLedMode
+XCBKBKey
+XCBKBAutoRepeatMode
+XCBLedModeOff
+XCBLedModeOn
+XCBAutoRepeatModeOff
+XCBAutoRepeatModeOn
+XCBAutoRepeatModeDefault
+XCBBlankingNotPreferred
+XCBBlankingPreferred
+XCBBlankingDefault
+XCBExposuresNotAllowed
+XCBExposuresAllowed
+XCBExposuresDefault
+XCBHostInsert
+XCBHostDelete
+XCBFamilyInternet
+XCBFamilyDECnet
+XCBFamilyChaos
+XCBFamilyServerInterpreted
+XCBFamilyInternet6
+XCBAccessControlDisable
+XCBAccessControlEnable
+XCBCloseDownDestroyAll
+XCBCloseDownRetainPermanent
+XCBCloseDownRetainTemporary
+XCBKillAllTemporary
+XCBScreenSaverReset
+XCBScreenSaverActive
+XCBMappingStatusSuccess
+XCBMappingStatusBusy
+XCBMappingStatusFailure
+XCBMapIndexShift
+XCBMapIndexLock
+XCBMapIndexControl
+XCBMapIndex1
+XCBMapIndex2
+XCBMapIndex3
+XCBMapIndex4
+XCBMapIndex5
XCBAllPlanes \ No newline at end of file
diff --git a/libxcb/xcb-composite.pc.in b/libxcb/xcb-composite.pc.in
index 2cd20e913..02d49b0c2 100644
--- a/libxcb/xcb-composite.pc.in
+++ b/libxcb/xcb-composite.pc.in
@@ -1,11 +1,11 @@
-prefix=@prefix@
-exec_prefix=@exec_prefix@
-libdir=@libdir@
-includedir=@includedir@
-
-Name: XCB Composite
-Description: XCB Composite Extension
-Version: @PACKAGE_VERSION@
-Requires: xcb xcb-xfixes
-Libs: -L${libdir} -lxcb-composite
-Cflags: -I${includedir}
+prefix=@prefix@
+exec_prefix=@exec_prefix@
+libdir=@libdir@
+includedir=@includedir@
+
+Name: XCB Composite
+Description: XCB Composite Extension
+Version: @PACKAGE_VERSION@
+Requires: xcb xcb-xfixes
+Libs: -L${libdir} -lxcb-composite
+Cflags: -I${includedir}
diff --git a/libxcb/xcb-damage.pc.in b/libxcb/xcb-damage.pc.in
index 1f694c5df..c4bc59986 100644
--- a/libxcb/xcb-damage.pc.in
+++ b/libxcb/xcb-damage.pc.in
@@ -1,11 +1,11 @@
-prefix=@prefix@
-exec_prefix=@exec_prefix@
-libdir=@libdir@
-includedir=@includedir@
-
-Name: XCB Damage
-Description: XCB Damage Extension
-Version: @PACKAGE_VERSION@
-Requires: xcb xcb-xfixes
-Libs: -L${libdir} -lxcb-damage
-Cflags: -I${includedir}
+prefix=@prefix@
+exec_prefix=@exec_prefix@
+libdir=@libdir@
+includedir=@includedir@
+
+Name: XCB Damage
+Description: XCB Damage Extension
+Version: @PACKAGE_VERSION@
+Requires: xcb xcb-xfixes
+Libs: -L${libdir} -lxcb-damage
+Cflags: -I${includedir}
diff --git a/libxcb/xcb-dpms.pc.in b/libxcb/xcb-dpms.pc.in
index 4c369981b..838a054be 100644
--- a/libxcb/xcb-dpms.pc.in
+++ b/libxcb/xcb-dpms.pc.in
@@ -1,11 +1,11 @@
-prefix=@prefix@
-exec_prefix=@exec_prefix@
-libdir=@libdir@
-includedir=@includedir@
-
-Name: XCB DPMS
-Description: XCB DPMS Extension
-Version: @PACKAGE_VERSION@
-Requires: xcb
-Libs: -L${libdir} -lxcb-dpms
-Cflags: -I${includedir}
+prefix=@prefix@
+exec_prefix=@exec_prefix@
+libdir=@libdir@
+includedir=@includedir@
+
+Name: XCB DPMS
+Description: XCB DPMS Extension
+Version: @PACKAGE_VERSION@
+Requires: xcb
+Libs: -L${libdir} -lxcb-dpms
+Cflags: -I${includedir}
diff --git a/libxcb/xcb-dri2.pc.in b/libxcb/xcb-dri2.pc.in
index 2b46adcb3..a9944dfa2 100644
--- a/libxcb/xcb-dri2.pc.in
+++ b/libxcb/xcb-dri2.pc.in
@@ -1,11 +1,11 @@
-prefix=@prefix@
-exec_prefix=@exec_prefix@
-libdir=@libdir@
-includedir=@includedir@
-
-Name: XCB DRI2
-Description: XCB DRI2 Extension
-Version: @PACKAGE_VERSION@
-Requires: xcb
-Libs: -L${libdir} -lxcb-dri2
-Cflags: -I${includedir}
+prefix=@prefix@
+exec_prefix=@exec_prefix@
+libdir=@libdir@
+includedir=@includedir@
+
+Name: XCB DRI2
+Description: XCB DRI2 Extension
+Version: @PACKAGE_VERSION@
+Requires: xcb
+Libs: -L${libdir} -lxcb-dri2
+Cflags: -I${includedir}
diff --git a/libxcb/xcb-glx.pc.in b/libxcb/xcb-glx.pc.in
index e2b08abe1..bbd412675 100644
--- a/libxcb/xcb-glx.pc.in
+++ b/libxcb/xcb-glx.pc.in
@@ -1,11 +1,11 @@
-prefix=@prefix@
-exec_prefix=@exec_prefix@
-libdir=@libdir@
-includedir=@includedir@
-
-Name: XCB GLX
-Description: XCB GLX Extension
-Version: @PACKAGE_VERSION@
-Requires: xcb
-Libs: -L${libdir} -lxcb-glx
-Cflags: -I${includedir}
+prefix=@prefix@
+exec_prefix=@exec_prefix@
+libdir=@libdir@
+includedir=@includedir@
+
+Name: XCB GLX
+Description: XCB GLX Extension
+Version: @PACKAGE_VERSION@
+Requires: xcb
+Libs: -L${libdir} -lxcb-glx
+Cflags: -I${includedir}
diff --git a/libxcb/xcb-proto/.gitignore b/libxcb/xcb-proto/.gitignore
index d0148ecfa..91876c66a 100644
--- a/libxcb/xcb-proto/.gitignore
+++ b/libxcb/xcb-proto/.gitignore
@@ -1,31 +1,31 @@
-aclocal.m4
-autom4te.cache
-compile
-depcomp
-install-sh
-libtool
-ltmain.sh
-missing
-mkinstalldirs
-py-compile
-config.guess
-config.h
-config.h.in
-config.log
-config.status
-config.sub
-configure
-configure.lineno
-.deps
-.dirstamp
-.libs
-*.lo
-*.loT
-*.la
-Makefile
-Makefile.in
-stamp-h1
-*.o
-*.pc
-*.tar.bz2
-*.tar.gz
+aclocal.m4
+autom4te.cache
+compile
+depcomp
+install-sh
+libtool
+ltmain.sh
+missing
+mkinstalldirs
+py-compile
+config.guess
+config.h
+config.h.in
+config.log
+config.status
+config.sub
+configure
+configure.lineno
+.deps
+.dirstamp
+.libs
+*.lo
+*.loT
+*.la
+Makefile
+Makefile.in
+stamp-h1
+*.o
+*.pc
+*.tar.bz2
+*.tar.gz
diff --git a/libxcb/xcb-proto/COPYING b/libxcb/xcb-proto/COPYING
index 50a14e39e..54bfbe5b0 100644
--- a/libxcb/xcb-proto/COPYING
+++ b/libxcb/xcb-proto/COPYING
@@ -1,30 +1,30 @@
-Copyright (C) 2001-2006 Bart Massey, Jamey Sharp, and Josh Triplett.
-All Rights Reserved.
-
-Permission is hereby granted, free of charge, to any person
-obtaining a copy of this software and associated
-documentation files (the "Software"), to deal in the
-Software without restriction, including without limitation
-the rights to use, copy, modify, merge, publish, distribute,
-sublicense, and/or sell copies of the Software, and to
-permit persons to whom the Software is furnished to do so,
-subject to the following conditions:
-
-The above copyright notice and this permission notice shall
-be included in all copies or substantial portions of the
-Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
-KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
-WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
-PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS
-BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
-IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the names of the authors
-or their institutions shall not be used in advertising or
-otherwise to promote the sale, use or other dealings in this
-Software without prior written authorization from the
-authors.
+Copyright (C) 2001-2006 Bart Massey, Jamey Sharp, and Josh Triplett.
+All Rights Reserved.
+
+Permission is hereby granted, free of charge, to any person
+obtaining a copy of this software and associated
+documentation files (the "Software"), to deal in the
+Software without restriction, including without limitation
+the rights to use, copy, modify, merge, publish, distribute,
+sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so,
+subject to the following conditions:
+
+The above copyright notice and this permission notice shall
+be included in all copies or substantial portions of the
+Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
+KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
+WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
+PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS
+BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
+IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the names of the authors
+or their institutions shall not be used in advertising or
+otherwise to promote the sale, use or other dealings in this
+Software without prior written authorization from the
+authors.
diff --git a/libxcb/xcb-proto/INSTALL b/libxcb/xcb-proto/INSTALL
index bf8c23f1f..54caf7c19 100644
--- a/libxcb/xcb-proto/INSTALL
+++ b/libxcb/xcb-proto/INSTALL
@@ -1,229 +1,229 @@
-Copyright (C) 1994, 1995, 1996, 1999, 2000, 2001, 2002 Free Software
-Foundation, Inc.
-
- This file is free documentation; the Free Software Foundation gives
-unlimited permission to copy, distribute and modify it.
-
-Basic Installation
-==================
-
- These are generic installation instructions.
-
- The `configure' shell script attempts to guess correct values for
-various system-dependent variables used during compilation. It uses
-those values to create a `Makefile' in each directory of the package.
-It may also create one or more `.h' files containing system-dependent
-definitions. Finally, it creates a shell script `config.status' that
-you can run in the future to recreate the current configuration, and a
-file `config.log' containing compiler output (useful mainly for
-debugging `configure').
-
- It can also use an optional file (typically called `config.cache'
-and enabled with `--cache-file=config.cache' or simply `-C') that saves
-the results of its tests to speed up reconfiguring. (Caching is
-disabled by default to prevent problems with accidental use of stale
-cache files.)
-
- If you need to do unusual things to compile the package, please try
-to figure out how `configure' could check whether to do them, and mail
-diffs or instructions to the address given in the `README' so they can
-be considered for the next release. If you are using the cache, and at
-some point `config.cache' contains results you don't want to keep, you
-may remove or edit it.
-
- The file `configure.ac' (or `configure.in') is used to create
-`configure' by a program called `autoconf'. You only need
-`configure.ac' if you want to change it or regenerate `configure' using
-a newer version of `autoconf'.
-
-The simplest way to compile this package is:
-
- 1. `cd' to the directory containing the package's source code and type
- `./configure' to configure the package for your system. If you're
- using `csh' on an old version of System V, you might need to type
- `sh ./configure' instead to prevent `csh' from trying to execute
- `configure' itself.
-
- Running `configure' takes awhile. While running, it prints some
- messages telling which features it is checking for.
-
- 2. Type `make' to compile the package.
-
- 3. Optionally, type `make check' to run any self-tests that come with
- the package.
-
- 4. Type `make install' to install the programs and any data files and
- documentation.
-
- 5. You can remove the program binaries and object files from the
- source code directory by typing `make clean'. To also remove the
- files that `configure' created (so you can compile the package for
- a different kind of computer), type `make distclean'. There is
- also a `make maintainer-clean' target, but that is intended mainly
- for the package's developers. If you use it, you may have to get
- all sorts of other programs in order to regenerate files that came
- with the distribution.
-
-Compilers and Options
-=====================
-
- Some systems require unusual options for compilation or linking that
-the `configure' script does not know about. Run `./configure --help'
-for details on some of the pertinent environment variables.
-
- You can give `configure' initial values for configuration parameters
-by setting variables in the command line or in the environment. Here
-is an example:
-
- ./configure CC=c89 CFLAGS=-O2 LIBS=-lposix
-
- *Note Defining Variables::, for more details.
-
-Compiling For Multiple Architectures
-====================================
-
- You can compile the package for more than one kind of computer at the
-same time, by placing the object files for each architecture in their
-own directory. To do this, you must use a version of `make' that
-supports the `VPATH' variable, such as GNU `make'. `cd' to the
-directory where you want the object files and executables to go and run
-the `configure' script. `configure' automatically checks for the
-source code in the directory that `configure' is in and in `..'.
-
- If you have to use a `make' that does not support the `VPATH'
-variable, you have to compile the package for one architecture at a
-time in the source code directory. After you have installed the
-package for one architecture, use `make distclean' before reconfiguring
-for another architecture.
-
-Installation Names
-==================
-
- By default, `make install' will install the package's files in
-`/usr/local/bin', `/usr/local/man', etc. You can specify an
-installation prefix other than `/usr/local' by giving `configure' the
-option `--prefix=PATH'.
-
- You can specify separate installation prefixes for
-architecture-specific files and architecture-independent files. If you
-give `configure' the option `--exec-prefix=PATH', the package will use
-PATH as the prefix for installing programs and libraries.
-Documentation and other data files will still use the regular prefix.
-
- In addition, if you use an unusual directory layout you can give
-options like `--bindir=PATH' to specify different values for particular
-kinds of files. Run `configure --help' for a list of the directories
-you can set and what kinds of files go in them.
-
- If the package supports it, you can cause programs to be installed
-with an extra prefix or suffix on their names by giving `configure' the
-option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'.
-
-Optional Features
-=================
-
- Some packages pay attention to `--enable-FEATURE' options to
-`configure', where FEATURE indicates an optional part of the package.
-They may also pay attention to `--with-PACKAGE' options, where PACKAGE
-is something like `gnu-as' or `x' (for the X Window System). The
-`README' should mention any `--enable-' and `--with-' options that the
-package recognizes.
-
- For packages that use the X Window System, `configure' can usually
-find the X include and library files automatically, but if it doesn't,
-you can use the `configure' options `--x-includes=DIR' and
-`--x-libraries=DIR' to specify their locations.
-
-Specifying the System Type
-==========================
-
- There may be some features `configure' cannot figure out
-automatically, but needs to determine by the type of machine the package
-will run on. Usually, assuming the package is built to be run on the
-_same_ architectures, `configure' can figure that out, but if it prints
-a message saying it cannot guess the machine type, give it the
-`--build=TYPE' option. TYPE can either be a short name for the system
-type, such as `sun4', or a canonical name which has the form:
-
- CPU-COMPANY-SYSTEM
-
-where SYSTEM can have one of these forms:
-
- OS KERNEL-OS
-
- See the file `config.sub' for the possible values of each field. If
-`config.sub' isn't included in this package, then this package doesn't
-need to know the machine type.
-
- If you are _building_ compiler tools for cross-compiling, you should
-use the `--target=TYPE' option to select the type of system they will
-produce code for.
-
- If you want to _use_ a cross compiler, that generates code for a
-platform different from the build platform, you should specify the
-"host" platform (i.e., that on which the generated programs will
-eventually be run) with `--host=TYPE'.
-
-Sharing Defaults
-================
-
- If you want to set default values for `configure' scripts to share,
-you can create a site shell script called `config.site' that gives
-default values for variables like `CC', `cache_file', and `prefix'.
-`configure' looks for `PREFIX/share/config.site' if it exists, then
-`PREFIX/etc/config.site' if it exists. Or, you can set the
-`CONFIG_SITE' environment variable to the location of the site script.
-A warning: not all `configure' scripts look for a site script.
-
-Defining Variables
-==================
-
- Variables not defined in a site shell script can be set in the
-environment passed to `configure'. However, some packages may run
-configure again during the build, and the customized values of these
-variables may be lost. In order to avoid this problem, you should set
-them in the `configure' command line, using `VAR=value'. For example:
-
- ./configure CC=/usr/local2/bin/gcc
-
-will cause the specified gcc to be used as the C compiler (unless it is
-overridden in the site shell script).
-
-`configure' Invocation
-======================
-
- `configure' recognizes the following options to control how it
-operates.
-
-`--help'
-`-h'
- Print a summary of the options to `configure', and exit.
-
-`--version'
-`-V'
- Print the version of Autoconf used to generate the `configure'
- script, and exit.
-
-`--cache-file=FILE'
- Enable the cache: use and save the results of the tests in FILE,
- traditionally `config.cache'. FILE defaults to `/dev/null' to
- disable caching.
-
-`--config-cache'
-`-C'
- Alias for `--cache-file=config.cache'.
-
-`--quiet'
-`--silent'
-`-q'
- Do not print messages saying which checks are being made. To
- suppress all normal output, redirect it to `/dev/null' (any error
- messages will still be shown).
-
-`--srcdir=DIR'
- Look for the package's source code in directory DIR. Usually
- `configure' can determine that directory automatically.
-
-`configure' also accepts some other, not widely useful, options. Run
-`configure --help' for more details.
-
+Copyright (C) 1994, 1995, 1996, 1999, 2000, 2001, 2002 Free Software
+Foundation, Inc.
+
+ This file is free documentation; the Free Software Foundation gives
+unlimited permission to copy, distribute and modify it.
+
+Basic Installation
+==================
+
+ These are generic installation instructions.
+
+ The `configure' shell script attempts to guess correct values for
+various system-dependent variables used during compilation. It uses
+those values to create a `Makefile' in each directory of the package.
+It may also create one or more `.h' files containing system-dependent
+definitions. Finally, it creates a shell script `config.status' that
+you can run in the future to recreate the current configuration, and a
+file `config.log' containing compiler output (useful mainly for
+debugging `configure').
+
+ It can also use an optional file (typically called `config.cache'
+and enabled with `--cache-file=config.cache' or simply `-C') that saves
+the results of its tests to speed up reconfiguring. (Caching is
+disabled by default to prevent problems with accidental use of stale
+cache files.)
+
+ If you need to do unusual things to compile the package, please try
+to figure out how `configure' could check whether to do them, and mail
+diffs or instructions to the address given in the `README' so they can
+be considered for the next release. If you are using the cache, and at
+some point `config.cache' contains results you don't want to keep, you
+may remove or edit it.
+
+ The file `configure.ac' (or `configure.in') is used to create
+`configure' by a program called `autoconf'. You only need
+`configure.ac' if you want to change it or regenerate `configure' using
+a newer version of `autoconf'.
+
+The simplest way to compile this package is:
+
+ 1. `cd' to the directory containing the package's source code and type
+ `./configure' to configure the package for your system. If you're
+ using `csh' on an old version of System V, you might need to type
+ `sh ./configure' instead to prevent `csh' from trying to execute
+ `configure' itself.
+
+ Running `configure' takes awhile. While running, it prints some
+ messages telling which features it is checking for.
+
+ 2. Type `make' to compile the package.
+
+ 3. Optionally, type `make check' to run any self-tests that come with
+ the package.
+
+ 4. Type `make install' to install the programs and any data files and
+ documentation.
+
+ 5. You can remove the program binaries and object files from the
+ source code directory by typing `make clean'. To also remove the
+ files that `configure' created (so you can compile the package for
+ a different kind of computer), type `make distclean'. There is
+ also a `make maintainer-clean' target, but that is intended mainly
+ for the package's developers. If you use it, you may have to get
+ all sorts of other programs in order to regenerate files that came
+ with the distribution.
+
+Compilers and Options
+=====================
+
+ Some systems require unusual options for compilation or linking that
+the `configure' script does not know about. Run `./configure --help'
+for details on some of the pertinent environment variables.
+
+ You can give `configure' initial values for configuration parameters
+by setting variables in the command line or in the environment. Here
+is an example:
+
+ ./configure CC=c89 CFLAGS=-O2 LIBS=-lposix
+
+ *Note Defining Variables::, for more details.
+
+Compiling For Multiple Architectures
+====================================
+
+ You can compile the package for more than one kind of computer at the
+same time, by placing the object files for each architecture in their
+own directory. To do this, you must use a version of `make' that
+supports the `VPATH' variable, such as GNU `make'. `cd' to the
+directory where you want the object files and executables to go and run
+the `configure' script. `configure' automatically checks for the
+source code in the directory that `configure' is in and in `..'.
+
+ If you have to use a `make' that does not support the `VPATH'
+variable, you have to compile the package for one architecture at a
+time in the source code directory. After you have installed the
+package for one architecture, use `make distclean' before reconfiguring
+for another architecture.
+
+Installation Names
+==================
+
+ By default, `make install' will install the package's files in
+`/usr/local/bin', `/usr/local/man', etc. You can specify an
+installation prefix other than `/usr/local' by giving `configure' the
+option `--prefix=PATH'.
+
+ You can specify separate installation prefixes for
+architecture-specific files and architecture-independent files. If you
+give `configure' the option `--exec-prefix=PATH', the package will use
+PATH as the prefix for installing programs and libraries.
+Documentation and other data files will still use the regular prefix.
+
+ In addition, if you use an unusual directory layout you can give
+options like `--bindir=PATH' to specify different values for particular
+kinds of files. Run `configure --help' for a list of the directories
+you can set and what kinds of files go in them.
+
+ If the package supports it, you can cause programs to be installed
+with an extra prefix or suffix on their names by giving `configure' the
+option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'.
+
+Optional Features
+=================
+
+ Some packages pay attention to `--enable-FEATURE' options to
+`configure', where FEATURE indicates an optional part of the package.
+They may also pay attention to `--with-PACKAGE' options, where PACKAGE
+is something like `gnu-as' or `x' (for the X Window System). The
+`README' should mention any `--enable-' and `--with-' options that the
+package recognizes.
+
+ For packages that use the X Window System, `configure' can usually
+find the X include and library files automatically, but if it doesn't,
+you can use the `configure' options `--x-includes=DIR' and
+`--x-libraries=DIR' to specify their locations.
+
+Specifying the System Type
+==========================
+
+ There may be some features `configure' cannot figure out
+automatically, but needs to determine by the type of machine the package
+will run on. Usually, assuming the package is built to be run on the
+_same_ architectures, `configure' can figure that out, but if it prints
+a message saying it cannot guess the machine type, give it the
+`--build=TYPE' option. TYPE can either be a short name for the system
+type, such as `sun4', or a canonical name which has the form:
+
+ CPU-COMPANY-SYSTEM
+
+where SYSTEM can have one of these forms:
+
+ OS KERNEL-OS
+
+ See the file `config.sub' for the possible values of each field. If
+`config.sub' isn't included in this package, then this package doesn't
+need to know the machine type.
+
+ If you are _building_ compiler tools for cross-compiling, you should
+use the `--target=TYPE' option to select the type of system they will
+produce code for.
+
+ If you want to _use_ a cross compiler, that generates code for a
+platform different from the build platform, you should specify the
+"host" platform (i.e., that on which the generated programs will
+eventually be run) with `--host=TYPE'.
+
+Sharing Defaults
+================
+
+ If you want to set default values for `configure' scripts to share,
+you can create a site shell script called `config.site' that gives
+default values for variables like `CC', `cache_file', and `prefix'.
+`configure' looks for `PREFIX/share/config.site' if it exists, then
+`PREFIX/etc/config.site' if it exists. Or, you can set the
+`CONFIG_SITE' environment variable to the location of the site script.
+A warning: not all `configure' scripts look for a site script.
+
+Defining Variables
+==================
+
+ Variables not defined in a site shell script can be set in the
+environment passed to `configure'. However, some packages may run
+configure again during the build, and the customized values of these
+variables may be lost. In order to avoid this problem, you should set
+them in the `configure' command line, using `VAR=value'. For example:
+
+ ./configure CC=/usr/local2/bin/gcc
+
+will cause the specified gcc to be used as the C compiler (unless it is
+overridden in the site shell script).
+
+`configure' Invocation
+======================
+
+ `configure' recognizes the following options to control how it
+operates.
+
+`--help'
+`-h'
+ Print a summary of the options to `configure', and exit.
+
+`--version'
+`-V'
+ Print the version of Autoconf used to generate the `configure'
+ script, and exit.
+
+`--cache-file=FILE'
+ Enable the cache: use and save the results of the tests in FILE,
+ traditionally `config.cache'. FILE defaults to `/dev/null' to
+ disable caching.
+
+`--config-cache'
+`-C'
+ Alias for `--cache-file=config.cache'.
+
+`--quiet'
+`--silent'
+`-q'
+ Do not print messages saying which checks are being made. To
+ suppress all normal output, redirect it to `/dev/null' (any error
+ messages will still be shown).
+
+`--srcdir=DIR'
+ Look for the package's source code in directory DIR. Usually
+ `configure' can determine that directory automatically.
+
+`configure' also accepts some other, not widely useful, options. Run
+`configure --help' for more details.
+
diff --git a/libxcb/xcb-proto/README b/libxcb/xcb-proto/README
index 11ffe528a..22d7debca 100644
--- a/libxcb/xcb-proto/README
+++ b/libxcb/xcb-proto/README
@@ -1,47 +1,47 @@
-About xcb-proto
-===============
-
-xcb-proto provides the XML-XCB protocol descriptions that libxcb uses to
-generate the majority of its code and API. We provide them separately
-from libxcb to allow reuse by other projects, such as additional
-language bindings, protocol dissectors, or documentation generators.
-
-This separation between the XCB transport layer and the
-automatically-generated protocol layer also makes it far easier to write
-new extensions. With the Xlib infrastructure, client-side support for
-new extensions requires significant duplication of effort. With XCB and
-the XML-XCB protocol descriptions, client-side support for a new
-extension requires only an XML description of the extension, and not a
-single line of code.
-
-Python libraries: xcb-proto also contains language-independent Python
-libraries that are used to parse an XML description and create objects
-used by Python code generators in individual language bindings. These
-libraries are installed into $(prefix)/lib/pythonX.X/site-packages. If
-this location is not on your system's Python path, scripts that import
-them will fail with import errors. In this case you must add the
-install location to your Python path by creating a file with a `.pth'
-extension in a directory that _is_ on the Python path, and put the
-path to the install location in that file. For example, on my system
-there is a file named 'local.pth' in /usr/lib/python2.5/site-packages,
-which contains '/usr/local/lib/python2.5/site-packages'. Note that
-this is only necessary on machines where XCB is being built.
-
-Please report any issues you find to the freedesktop.org bug tracker,
-at:
-
- <https://bugs.freedesktop.org/enter_bug.cgi?product=XCB>
-
-Discussion about XCB occurs on the XCB mailing list:
-
- <mailto:xcb at lists.freedesktop.org>
- <http://lists.freedesktop.org/mailman/listinfo/xcb>
-
-You can obtain the latest development versions of XCB using GIT.
-For anonymous checkouts, use:
-
- git clone git://anongit.freedesktop.org/git/xcb/proto
-
-For developers, use:
-
- git clone git+ssh://git.freedesktop.org/git/xcb/proto
+About xcb-proto
+===============
+
+xcb-proto provides the XML-XCB protocol descriptions that libxcb uses to
+generate the majority of its code and API. We provide them separately
+from libxcb to allow reuse by other projects, such as additional
+language bindings, protocol dissectors, or documentation generators.
+
+This separation between the XCB transport layer and the
+automatically-generated protocol layer also makes it far easier to write
+new extensions. With the Xlib infrastructure, client-side support for
+new extensions requires significant duplication of effort. With XCB and
+the XML-XCB protocol descriptions, client-side support for a new
+extension requires only an XML description of the extension, and not a
+single line of code.
+
+Python libraries: xcb-proto also contains language-independent Python
+libraries that are used to parse an XML description and create objects
+used by Python code generators in individual language bindings. These
+libraries are installed into $(prefix)/lib/pythonX.X/site-packages. If
+this location is not on your system's Python path, scripts that import
+them will fail with import errors. In this case you must add the
+install location to your Python path by creating a file with a `.pth'
+extension in a directory that _is_ on the Python path, and put the
+path to the install location in that file. For example, on my system
+there is a file named 'local.pth' in /usr/lib/python2.5/site-packages,
+which contains '/usr/local/lib/python2.5/site-packages'. Note that
+this is only necessary on machines where XCB is being built.
+
+Please report any issues you find to the freedesktop.org bug tracker,
+at:
+
+ <https://bugs.freedesktop.org/enter_bug.cgi?product=XCB>
+
+Discussion about XCB occurs on the XCB mailing list:
+
+ <mailto:xcb at lists.freedesktop.org>
+ <http://lists.freedesktop.org/mailman/listinfo/xcb>
+
+You can obtain the latest development versions of XCB using GIT.
+For anonymous checkouts, use:
+
+ git clone git://anongit.freedesktop.org/git/xcb/proto
+
+For developers, use:
+
+ git clone git+ssh://git.freedesktop.org/git/xcb/proto
diff --git a/libxcb/xcb-proto/TODO b/libxcb/xcb-proto/TODO
index 51aac0a92..add693c48 100644
--- a/libxcb/xcb-proto/TODO
+++ b/libxcb/xcb-proto/TODO
@@ -1,45 +1,45 @@
-Last Updated: 2006-04-27
-
-Extension Status:
-
-X - Present, tested, works.
-U - Present, untested.
-I - Incomplete.
-
-X BIG-REQUESTS
-X COMPOSITE
-X DAMAGE
- DOUBLE-BUFFER
-X DPMS
- Extended-Visual-Information
-X GLX
- LBX
-X MIT-SCREEN-SAVER
-X MIT-SHM
- MIT-SUNDRY-NONSTANDARD
- Multi-Buffering
-X RANDR
-X RECORD
-X RENDER
- SECURITY
- SGI-GLX
-X SHAPE
-X SYNC
- TOG-CUP
-X X-Resource
- XC-APPGROUP
-X XC-MISC
-X XEVIE
-X XFIXES
- XFree86-Bigfont
- XFree86-DGA
-X XFree86-DRI
- XFree86-Misc
- XFree86-VidModeExtension
- XINERAMA
- XInputExtension
- XKEYBOARD
-I XpExtension (XPRINT)
-X XTEST
-X XVideo
-U XVideo-MotionCompensation
+Last Updated: 2006-04-27
+
+Extension Status:
+
+X - Present, tested, works.
+U - Present, untested.
+I - Incomplete.
+
+X BIG-REQUESTS
+X COMPOSITE
+X DAMAGE
+ DOUBLE-BUFFER
+X DPMS
+ Extended-Visual-Information
+X GLX
+ LBX
+X MIT-SCREEN-SAVER
+X MIT-SHM
+ MIT-SUNDRY-NONSTANDARD
+ Multi-Buffering
+X RANDR
+X RECORD
+X RENDER
+ SECURITY
+ SGI-GLX
+X SHAPE
+X SYNC
+ TOG-CUP
+X X-Resource
+ XC-APPGROUP
+X XC-MISC
+X XEVIE
+X XFIXES
+ XFree86-Bigfont
+ XFree86-DGA
+X XFree86-DRI
+ XFree86-Misc
+ XFree86-VidModeExtension
+ XINERAMA
+ XInputExtension
+ XKEYBOARD
+I XpExtension (XPRINT)
+X XTEST
+X XVideo
+U XVideo-MotionCompensation
diff --git a/libxcb/xcb-proto/autogen.sh b/libxcb/xcb-proto/autogen.sh
index 6fcae015c..904cd6746 100644
--- a/libxcb/xcb-proto/autogen.sh
+++ b/libxcb/xcb-proto/autogen.sh
@@ -1,12 +1,12 @@
-#! /bin/sh
-
-srcdir=`dirname $0`
-test -z "$srcdir" && srcdir=.
-
-ORIGDIR=`pwd`
-cd $srcdir
-
-autoreconf -v --install || exit 1
-cd $ORIGDIR || exit $?
-
-$srcdir/configure --enable-maintainer-mode "$@"
+#! /bin/sh
+
+srcdir=`dirname $0`
+test -z "$srcdir" && srcdir=.
+
+ORIGDIR=`pwd`
+cd $srcdir
+
+autoreconf -v --install || exit 1
+cd $ORIGDIR || exit $?
+
+$srcdir/configure --enable-maintainer-mode "$@"
diff --git a/libxcb/xcb-proto/src/bigreq.xml b/libxcb/xcb-proto/src/bigreq.xml
index df1455be9..3cca2f77f 100644
--- a/libxcb/xcb-proto/src/bigreq.xml
+++ b/libxcb/xcb-proto/src/bigreq.xml
@@ -1,38 +1,38 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-Copyright (C) 2001-2004 Bart Massey, Jamey Sharp, and Josh Triplett.
-All Rights Reserved.
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
-ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the names of the authors or their
-institutions shall not be used in advertising or otherwise to promote the
-sale, use or other dealings in this Software without prior written
-authorization from the authors.
--->
-<xcb header="bigreq" extension-xname="BIG-REQUESTS"
- extension-name="BigRequests" extension-multiword="true"
- major-version="0" minor-version="0">
-
- <request name="Enable" opcode="0">
- <reply>
- <pad bytes="1" />
- <field type="CARD32" name="maximum_request_length" />
- </reply>
- </request>
-</xcb>
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+Copyright (C) 2001-2004 Bart Massey, Jamey Sharp, and Josh Triplett.
+All Rights Reserved.
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
+ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the names of the authors or their
+institutions shall not be used in advertising or otherwise to promote the
+sale, use or other dealings in this Software without prior written
+authorization from the authors.
+-->
+<xcb header="bigreq" extension-xname="BIG-REQUESTS"
+ extension-name="BigRequests" extension-multiword="true"
+ major-version="0" minor-version="0">
+
+ <request name="Enable" opcode="0">
+ <reply>
+ <pad bytes="1" />
+ <field type="CARD32" name="maximum_request_length" />
+ </reply>
+ </request>
+</xcb>
diff --git a/libxcb/xcb-proto/src/composite.xml b/libxcb/xcb-proto/src/composite.xml
index d6e5dc261..d16b6e746 100644
--- a/libxcb/xcb-proto/src/composite.xml
+++ b/libxcb/xcb-proto/src/composite.xml
@@ -1,98 +1,98 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-Copyright (C) 2004 Josh Triplett. All Rights Reserved.
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
-ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the names of the authors or their
-institutions shall not be used in advertising or otherwise to promote the
-sale, use or other dealings in this Software without prior written
-authorization from the authors.
--->
-<!-- This file describes version 0.3 of COMPOSITE. -->
-<xcb header="composite" extension-xname="Composite" extension-name="Composite"
- major-version="0" minor-version="3">
-
- <import>xproto</import>
- <import>xfixes</import>
-
- <enum name="Redirect">
- <item name="Automatic" />
- <item name="Manual" />
- </enum>
-
- <request name="QueryVersion" opcode="0">
- <field type="CARD32" name="client_major_version" />
- <field type="CARD32" name="client_minor_version" />
- <reply>
- <pad bytes="1" />
- <field type="CARD32" name="major_version" />
- <field type="CARD32" name="minor_version" />
- <pad bytes="16" />
- </reply>
- </request>
-
- <request name="RedirectWindow" opcode="1">
- <field type="WINDOW" name="window" />
- <field type="CARD8" name="update" enum="Redirect" />
- <pad bytes="3" />
- </request>
-
- <request name="RedirectSubwindows" opcode="2">
- <field type="WINDOW" name="window" />
- <field type="CARD8" name="update" enum="Redirect" />
- <pad bytes="3" />
- </request>
-
- <request name="UnredirectWindow" opcode="3">
- <field type="WINDOW" name="window" />
- <field type="CARD8" name="update" enum="Redirect" />
- <pad bytes="3" />
- </request>
-
- <request name="UnredirectSubwindows" opcode="4">
- <field type="WINDOW" name="window" />
- <field type="CARD8" name="update" enum="Redirect" />
- <pad bytes="3" />
- </request>
-
- <request name="CreateRegionFromBorderClip" opcode="5">
- <field type="REGION" name="region" />
- <field type="WINDOW" name="window" />
- </request>
-
- <request name="NameWindowPixmap" opcode="6">
- <field type="WINDOW" name="window" />
- <field type="PIXMAP" name="pixmap" />
- </request>
-
- <!-- new in version 0.3 -->
-
- <request name="GetOverlayWindow" opcode="7">
- <field type="WINDOW" name="window" />
- <reply>
- <pad bytes="1" />
- <field type="WINDOW" name="overlay_win" />
- <pad bytes="20" />
- </reply>
- </request>
-
- <request name="ReleaseOverlayWindow" opcode="8">
- <field type="WINDOW" name="window" />
- </request>
-</xcb>
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+Copyright (C) 2004 Josh Triplett. All Rights Reserved.
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
+ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the names of the authors or their
+institutions shall not be used in advertising or otherwise to promote the
+sale, use or other dealings in this Software without prior written
+authorization from the authors.
+-->
+<!-- This file describes version 0.3 of COMPOSITE. -->
+<xcb header="composite" extension-xname="Composite" extension-name="Composite"
+ major-version="0" minor-version="3">
+
+ <import>xproto</import>
+ <import>xfixes</import>
+
+ <enum name="Redirect">
+ <item name="Automatic" />
+ <item name="Manual" />
+ </enum>
+
+ <request name="QueryVersion" opcode="0">
+ <field type="CARD32" name="client_major_version" />
+ <field type="CARD32" name="client_minor_version" />
+ <reply>
+ <pad bytes="1" />
+ <field type="CARD32" name="major_version" />
+ <field type="CARD32" name="minor_version" />
+ <pad bytes="16" />
+ </reply>
+ </request>
+
+ <request name="RedirectWindow" opcode="1">
+ <field type="WINDOW" name="window" />
+ <field type="CARD8" name="update" enum="Redirect" />
+ <pad bytes="3" />
+ </request>
+
+ <request name="RedirectSubwindows" opcode="2">
+ <field type="WINDOW" name="window" />
+ <field type="CARD8" name="update" enum="Redirect" />
+ <pad bytes="3" />
+ </request>
+
+ <request name="UnredirectWindow" opcode="3">
+ <field type="WINDOW" name="window" />
+ <field type="CARD8" name="update" enum="Redirect" />
+ <pad bytes="3" />
+ </request>
+
+ <request name="UnredirectSubwindows" opcode="4">
+ <field type="WINDOW" name="window" />
+ <field type="CARD8" name="update" enum="Redirect" />
+ <pad bytes="3" />
+ </request>
+
+ <request name="CreateRegionFromBorderClip" opcode="5">
+ <field type="REGION" name="region" />
+ <field type="WINDOW" name="window" />
+ </request>
+
+ <request name="NameWindowPixmap" opcode="6">
+ <field type="WINDOW" name="window" />
+ <field type="PIXMAP" name="pixmap" />
+ </request>
+
+ <!-- new in version 0.3 -->
+
+ <request name="GetOverlayWindow" opcode="7">
+ <field type="WINDOW" name="window" />
+ <reply>
+ <pad bytes="1" />
+ <field type="WINDOW" name="overlay_win" />
+ <pad bytes="20" />
+ </reply>
+ </request>
+
+ <request name="ReleaseOverlayWindow" opcode="8">
+ <field type="WINDOW" name="window" />
+ </request>
+</xcb>
diff --git a/libxcb/xcb-proto/src/damage.xml b/libxcb/xcb-proto/src/damage.xml
index 5ac4cebbc..9c5cde5b6 100644
--- a/libxcb/xcb-proto/src/damage.xml
+++ b/libxcb/xcb-proto/src/damage.xml
@@ -1,87 +1,87 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-Copyright (C) 2004 Josh Triplett
-Copyright (C) 2007 Jeremy Kolb
-All Rights Reserved.
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
-ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the names of the authors or their
-institutions shall not be used in advertising or otherwise to promote the
-sale, use or other dealings in this Software without prior written
-authorization from the authors.
--->
-<!-- This file describes version 1.1 of DAMAGE. -->
-<xcb header="damage" extension-xname="DAMAGE" extension-name="Damage"
- major-version="1" minor-version="1">
- <import>xproto</import>
- <import>xfixes</import>
-
- <xidtype name="DAMAGE" />
-
- <enum name="ReportLevel">
- <item name="RawRectangles" />
- <item name="DeltaRectangles" />
- <item name="BoundingBox" />
- <item name="NonEmpty" />
- </enum>
-
- <error name="BadDamage" number="0" />
-
- <request name="QueryVersion" opcode="0">
- <field type="CARD32" name="client_major_version" />
- <field type="CARD32" name="client_minor_version" />
- <reply>
- <pad bytes="1" />
- <field type="CARD32" name="major_version" />
- <field type="CARD32" name="minor_version" />
- <pad bytes="16" />
- </reply>
- </request>
-
- <request name="Create" opcode="1">
- <field type="DAMAGE" name="damage" />
- <field type="DRAWABLE" name="drawable" />
- <field type="CARD8" name="level" enum="ReportLevel" />
- <pad bytes="3" />
- </request>
-
- <request name="Destroy" opcode="2">
- <field type="DAMAGE" name="damage" />
- </request>
-
- <request name="Subtract" opcode="3">
- <field type="DAMAGE" name="damage" />
- <field type="REGION" name="repair" altenum="Region" />
- <field type="REGION" name="parts" altenum="Region" />
- </request>
-
- <request name="Add" opcode="4">
- <field type="DRAWABLE" name="drawable" />
- <field type="REGION" name="region" />
- </request>
-
- <event name="Notify" number="0">
- <field type="CARD8" name="level" enum="ReportLevel" />
- <field type="DRAWABLE" name="drawable" />
- <field type="DAMAGE" name="damage" />
- <field type="TIMESTAMP" name="timestamp" />
- <field type="RECTANGLE" name="area" />
- <field type="RECTANGLE" name="geometry" />
- </event>
-</xcb>
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+Copyright (C) 2004 Josh Triplett
+Copyright (C) 2007 Jeremy Kolb
+All Rights Reserved.
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
+ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the names of the authors or their
+institutions shall not be used in advertising or otherwise to promote the
+sale, use or other dealings in this Software without prior written
+authorization from the authors.
+-->
+<!-- This file describes version 1.1 of DAMAGE. -->
+<xcb header="damage" extension-xname="DAMAGE" extension-name="Damage"
+ major-version="1" minor-version="1">
+ <import>xproto</import>
+ <import>xfixes</import>
+
+ <xidtype name="DAMAGE" />
+
+ <enum name="ReportLevel">
+ <item name="RawRectangles" />
+ <item name="DeltaRectangles" />
+ <item name="BoundingBox" />
+ <item name="NonEmpty" />
+ </enum>
+
+ <error name="BadDamage" number="0" />
+
+ <request name="QueryVersion" opcode="0">
+ <field type="CARD32" name="client_major_version" />
+ <field type="CARD32" name="client_minor_version" />
+ <reply>
+ <pad bytes="1" />
+ <field type="CARD32" name="major_version" />
+ <field type="CARD32" name="minor_version" />
+ <pad bytes="16" />
+ </reply>
+ </request>
+
+ <request name="Create" opcode="1">
+ <field type="DAMAGE" name="damage" />
+ <field type="DRAWABLE" name="drawable" />
+ <field type="CARD8" name="level" enum="ReportLevel" />
+ <pad bytes="3" />
+ </request>
+
+ <request name="Destroy" opcode="2">
+ <field type="DAMAGE" name="damage" />
+ </request>
+
+ <request name="Subtract" opcode="3">
+ <field type="DAMAGE" name="damage" />
+ <field type="REGION" name="repair" altenum="Region" />
+ <field type="REGION" name="parts" altenum="Region" />
+ </request>
+
+ <request name="Add" opcode="4">
+ <field type="DRAWABLE" name="drawable" />
+ <field type="REGION" name="region" />
+ </request>
+
+ <event name="Notify" number="0">
+ <field type="CARD8" name="level" enum="ReportLevel" />
+ <field type="DRAWABLE" name="drawable" />
+ <field type="DAMAGE" name="damage" />
+ <field type="TIMESTAMP" name="timestamp" />
+ <field type="RECTANGLE" name="area" />
+ <field type="RECTANGLE" name="geometry" />
+ </event>
+</xcb>
diff --git a/libxcb/xcb-proto/src/dpms.xml b/libxcb/xcb-proto/src/dpms.xml
index 32a9fca52..0c2ac2027 100644
--- a/libxcb/xcb-proto/src/dpms.xml
+++ b/libxcb/xcb-proto/src/dpms.xml
@@ -1,87 +1,87 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-Copyright (C) 2001-2004 Bart Massey, Jamey Sharp, and Josh Triplett.
-All Rights Reserved.
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
-ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the names of the authors or their
-institutions shall not be used in advertising or otherwise to promote the
-sale, use or other dealings in this Software without prior written
-authorization from the authors.
--->
-<xcb header="dpms" extension-xname="DPMS" extension-name="DPMS"
- major-version="0" minor-version="0">
- <request name="GetVersion" opcode="0">
- <field type="CARD16" name="client_major_version" />
- <field type="CARD16" name="client_minor_version" />
- <reply>
- <pad bytes="1" />
- <field type="CARD16" name="server_major_version" />
- <field type="CARD16" name="server_minor_version" />
- </reply>
- </request>
-
- <request name="Capable" opcode="1">
- <reply>
- <pad bytes="1" />
- <field type="BOOL" name="capable" />
- <pad bytes="23" />
- </reply>
- </request>
-
- <request name="GetTimeouts" opcode="2">
- <reply>
- <pad bytes="1" />
- <field type="CARD16" name="standby_timeout" />
- <field type="CARD16" name="suspend_timeout" />
- <field type="CARD16" name="off_timeout" />
- <pad bytes="18" />
- </reply>
- </request>
-
- <request name="SetTimeouts" opcode="3">
- <field type="CARD16" name="standby_timeout" />
- <field type="CARD16" name="suspend_timeout" />
- <field type="CARD16" name="off_timeout" />
- </request>
-
- <request name="Enable" opcode="4" />
-
- <request name="Disable" opcode="5" />
-
- <enum name="DPMSMode">
- <item name="On" />
- <item name="Standby" />
- <item name="Suspend" />
- <item name="Off" />
- </enum>
-
- <request name="ForceLevel" opcode="6">
- <field type="CARD16" name="power_level" enum="DPMSMode" />
- </request>
-
- <request name="Info" opcode="7">
- <reply>
- <pad bytes="1" />
- <field type="CARD16" name="power_level" enum="DPMSMode" />
- <field type="BOOL" name="state" />
- <pad bytes="21" />
- </reply>
- </request>
-</xcb>
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+Copyright (C) 2001-2004 Bart Massey, Jamey Sharp, and Josh Triplett.
+All Rights Reserved.
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
+ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the names of the authors or their
+institutions shall not be used in advertising or otherwise to promote the
+sale, use or other dealings in this Software without prior written
+authorization from the authors.
+-->
+<xcb header="dpms" extension-xname="DPMS" extension-name="DPMS"
+ major-version="0" minor-version="0">
+ <request name="GetVersion" opcode="0">
+ <field type="CARD16" name="client_major_version" />
+ <field type="CARD16" name="client_minor_version" />
+ <reply>
+ <pad bytes="1" />
+ <field type="CARD16" name="server_major_version" />
+ <field type="CARD16" name="server_minor_version" />
+ </reply>
+ </request>
+
+ <request name="Capable" opcode="1">
+ <reply>
+ <pad bytes="1" />
+ <field type="BOOL" name="capable" />
+ <pad bytes="23" />
+ </reply>
+ </request>
+
+ <request name="GetTimeouts" opcode="2">
+ <reply>
+ <pad bytes="1" />
+ <field type="CARD16" name="standby_timeout" />
+ <field type="CARD16" name="suspend_timeout" />
+ <field type="CARD16" name="off_timeout" />
+ <pad bytes="18" />
+ </reply>
+ </request>
+
+ <request name="SetTimeouts" opcode="3">
+ <field type="CARD16" name="standby_timeout" />
+ <field type="CARD16" name="suspend_timeout" />
+ <field type="CARD16" name="off_timeout" />
+ </request>
+
+ <request name="Enable" opcode="4" />
+
+ <request name="Disable" opcode="5" />
+
+ <enum name="DPMSMode">
+ <item name="On" />
+ <item name="Standby" />
+ <item name="Suspend" />
+ <item name="Off" />
+ </enum>
+
+ <request name="ForceLevel" opcode="6">
+ <field type="CARD16" name="power_level" enum="DPMSMode" />
+ </request>
+
+ <request name="Info" opcode="7">
+ <reply>
+ <pad bytes="1" />
+ <field type="CARD16" name="power_level" enum="DPMSMode" />
+ <field type="BOOL" name="state" />
+ <pad bytes="21" />
+ </reply>
+ </request>
+</xcb>
diff --git a/libxcb/xcb-proto/src/ge.xml b/libxcb/xcb-proto/src/ge.xml
index b9ecacc4e..3a6210d97 100644
--- a/libxcb/xcb-proto/src/ge.xml
+++ b/libxcb/xcb-proto/src/ge.xml
@@ -1,42 +1,42 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-Copyright (C) 2009 Open Text Corporation. All Rights Reserved.
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
-ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the names of the authors or their
-institutions shall not be used in advertising or otherwise to promote the
-sale, use or other dealings in this Software without prior written
-authorization from the authors.
--->
-<xcb header="ge" extension-xname="Generic Event Extension" extension-name="GenericEvent"
- major-version="1" minor-version="0">
-
- <!-- Version 1 -->
- <request name="QueryVersion" opcode="0">
- <field type="CARD16" name="client_major_version" />
- <field type="CARD16" name="client_minor_version" />
- <reply>
- <pad bytes="1" />
- <field type="CARD16" name="major_version" />
- <field type="CARD16" name="minor_version" />
- <pad bytes="20" />
- </reply>
- </request>
-
-</xcb>
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+Copyright (C) 2009 Open Text Corporation. All Rights Reserved.
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
+ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the names of the authors or their
+institutions shall not be used in advertising or otherwise to promote the
+sale, use or other dealings in this Software without prior written
+authorization from the authors.
+-->
+<xcb header="ge" extension-xname="Generic Event Extension" extension-name="GenericEvent"
+ major-version="1" minor-version="0">
+
+ <!-- Version 1 -->
+ <request name="QueryVersion" opcode="0">
+ <field type="CARD16" name="client_major_version" />
+ <field type="CARD16" name="client_minor_version" />
+ <reply>
+ <pad bytes="1" />
+ <field type="CARD16" name="major_version" />
+ <field type="CARD16" name="minor_version" />
+ <pad bytes="20" />
+ </reply>
+ </request>
+
+</xcb>
diff --git a/libxcb/xcb-proto/src/randr.xml b/libxcb/xcb-proto/src/randr.xml
index b28372e9c..4f0716f7c 100644
--- a/libxcb/xcb-proto/src/randr.xml
+++ b/libxcb/xcb-proto/src/randr.xml
@@ -1,671 +1,671 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-Copyright (C) 2006 Jeremy Kolb, Ian Osgood
-All Rights Reserved.
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
-ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the names of the authors or their
-institutions shall not be used in advertising or otherwise to promote the
-sale, use or other dealings in this Software without prior written
-authorization from the authors.
--->
-
-<xcb header="randr" extension-xname="RANDR" extension-name="RandR"
- major-version="1" minor-version="3">
-
- <import>xproto</import>
- <import>render</import>
-
- <!-- XIDs -->
- <xidtype name="MODE" />
- <xidtype name="CRTC" />
- <xidtype name="OUTPUT" />
-
- <!-- Errors -->
-
- <error name="BadOutput" number="0" />
- <error name="BadCrtc" number="1" />
- <error name="BadMode" number="2" />
-
- <!-- Requests -->
-
- <enum name="Rotation">
- <item name="Rotate_0"> <bit>0</bit></item>
- <item name="Rotate_90"> <bit>1</bit></item>
- <item name="Rotate_180"><bit>2</bit></item>
- <item name="Rotate_270"><bit>3</bit></item>
- <item name="Reflect_X"> <bit>4</bit></item>
- <item name="Reflect_Y"> <bit>5</bit></item>
- </enum>
-
- <struct name="ScreenSize">
- <field type="CARD16" name="width" /> <!-- pixels -->
- <field type="CARD16" name="height" />
- <field type="CARD16" name="mwidth" /> <!-- millimeters -->
- <field type="CARD16" name="mheight" />
- </struct>
-
- <struct name="RefreshRates">
- <field type="CARD16" name="nRates" />
- <list type="CARD16" name="rates">
- <fieldref>nRates</fieldref>
- </list>
- </struct>
-
- <request name="QueryVersion" opcode="0">
- <field type="CARD32" name="major_version" />
- <field type="CARD32" name="minor_version" />
- <reply>
- <pad bytes="1" />
- <field type="CARD32" name="major_version" />
- <field type="CARD32" name="minor_version" />
- <pad bytes="16" />
- </reply>
- </request>
-
- <!-- Skip obsolete opcode 1 so old clients fail immediately -->
-
- <enum name="SetConfig">
- <item name="Success"><value>0</value></item>
- <item name="InvalidConfigTime"><value>1</value></item>
- <item name="InvalidTime"><value>2</value></item>
- <item name="Failed"><value>3</value></item>
- </enum>
-
- <!-- This is for the 1.1 version request. I don't believe we need to specify a 1.0 request
- as few things used randr 1.0. The only difference is the removal of refresh and padding I think.
- BEWARE: the docs lie!
- -->
- <request name="SetScreenConfig" opcode="2">
- <field type="WINDOW" name="window" />
- <field type="TIMESTAMP" name="timestamp" />
- <field type="TIMESTAMP" name="config_timestamp" />
- <field type="CARD16" name="sizeID" />
- <field type="CARD16" name="rotation" mask="Rotation" />
- <field type="CARD16" name="rate" />
- <pad bytes="2" />
- <reply>
- <field type="CARD8" name="status" enum="SetConfig" />
- <field type="TIMESTAMP" name="new_timestamp" />
- <field type="TIMESTAMP" name="config_timestamp" />
- <field type="WINDOW" name="root" />
- <field type="CARD16" name="subpixel_order" enum="SubPixel" />
- <pad bytes="10" />
- </reply>
- </request>
-
- <!-- opcode 3 is obsolete -->
-
- <enum name="NotifyMask" >
- <item name="ScreenChange"> <bit>0</bit></item>
- <!-- new in 1.2 -->
- <item name="CrtcChange"> <bit>1</bit></item>
- <item name="OutputChange"> <bit>2</bit></item>
- <item name="OutputProperty"><bit>3</bit></item>
- </enum>
-
- <request name="SelectInput" opcode="4">
- <field type="WINDOW" name="window" />
- <field type="CARD16" name="enable" mask="NotifyMask" />
- <pad bytes="2" />
- </request>
-
- <!--
- I think this is correct. It works. though I believe nInfo is a bit high...
- -->
- <request name="GetScreenInfo" opcode="5">
- <field type="WINDOW" name="window" />
- <reply>
- <field type="CARD8" name="rotations" mask="Rotation" />
- <field type="WINDOW" name="root" />
- <field type="TIMESTAMP" name="timestamp" />
- <field type="TIMESTAMP" name="config_timestamp" />
- <field type="CARD16" name="nSizes" />
- <field type="CARD16" name="sizeID" />
- <field type="CARD16" name="rotation" mask="Rotation" />
- <field type="CARD16" name="rate" />
- <field type="CARD16" name="nInfo" />
- <pad bytes="2" />
- <list type="ScreenSize" name="sizes">
- <fieldref>nSizes</fieldref>
- </list>
- <list type="RefreshRates" name="rates">
- <op op="-">
- <fieldref>nInfo</fieldref>
- <fieldref>nSizes</fieldref>
- </op>
- </list>
- </reply>
- </request>
-
- <!-- new in version 1.2 -->
-
- <request name="GetScreenSizeRange" opcode="6">
- <field type="WINDOW" name="window" />
- <reply>
- <pad bytes="1" />
- <field type="CARD16" name="min_width" />
- <field type="CARD16" name="min_height" />
- <field type="CARD16" name="max_width" />
- <field type="CARD16" name="max_height" />
- <pad bytes="16" />
- </reply>
- </request>
-
- <request name="SetScreenSize" opcode="7">
- <field type="WINDOW" name="window" />
- <field type="CARD16" name="width" /> <!-- pixels -->
- <field type="CARD16" name="height" />
- <field type="CARD32" name="mm_width" /> <!-- millimeters -->
- <field type="CARD32" name="mm_height" />
- </request>
-
- <!-- for GetScreenResources.ModeInfo.ModeFlag -->
- <enum name="ModeFlag">
- <item name="HsyncPositive"> <bit>0</bit></item>
- <item name="HsyncNegative"> <bit>1</bit></item>
- <item name="VsyncPositive"> <bit>2</bit></item>
- <item name="VsyncNegative"> <bit>3</bit></item>
- <item name="Interlace"> <bit>4</bit></item>
- <item name="DoubleScan"> <bit>5</bit></item>
- <item name="Csync"> <bit>6</bit></item>
- <item name="CsyncPositive"> <bit>7</bit></item>
- <item name="CsyncNegative"> <bit>8</bit></item>
- <item name="HskewPresent"> <bit>9</bit></item>
- <item name="Bcast"> <bit>10</bit></item>
- <item name="PixelMultiplex"><bit>11</bit></item>
- <item name="DoubleClock"> <bit>12</bit></item>
- <item name="HalveClock"> <bit>13</bit></item>
- </enum>
-
- <struct name="ModeInfo">
- <field type="CARD32" name="id" />
- <field type="CARD16" name="width" />
- <field type="CARD16" name="height" />
- <field type="CARD32" name="dot_clock" />
- <field type="CARD16" name="hsync_start" />
- <field type="CARD16" name="hsync_end" />
- <field type="CARD16" name="htotal" />
- <field type="CARD16" name="hskew" />
- <field type="CARD16" name="vsync_start" />
- <field type="CARD16" name="vsync_end" />
- <field type="CARD16" name="vtotal" />
- <field type="CARD16" name="name_len" />
- <field type="CARD32" name="mode_flags" mask="ModeFlag" />
- <!-- the mode name itself -->
- </struct>
-
- <request name="GetScreenResources" opcode="8">
- <field type="WINDOW" name="window" />
- <reply>
- <pad bytes="1" />
- <field type="TIMESTAMP" name="timestamp" />
- <field type="TIMESTAMP" name="config_timestamp" />
- <field type="CARD16" name="num_crtcs" />
- <field type="CARD16" name="num_outputs" />
- <field type="CARD16" name="num_modes" />
- <field type="CARD16" name="names_len" />
- <pad bytes="8" />
- <list type="CRTC" name="crtcs">
- <fieldref>num_crtcs</fieldref>
- </list>
- <list type="OUTPUT" name="outputs">
- <fieldref>num_outputs</fieldref>
- </list>
- <list type="ModeInfo" name="modes">
- <fieldref>num_modes</fieldref>
- </list>
- <!-- FIXME: this is *not* null separated!
- One must use ModeInfo.name_len from each previous
- ModeInfo to infer the position of the name. -->
- <list type="BYTE" name="names">
- <fieldref>names_len</fieldref>
- </list>
- </reply>
- </request>
-
- <!-- for GetOutputInfo.connection -->
- <enum name="Connection">
- <item name="Connected" />
- <item name="Disconnected" />
- <item name="Unknown" />
- </enum>
-
- <request name="GetOutputInfo" opcode="9">
- <field type="OUTPUT" name="output" />
- <field type="TIMESTAMP" name="config_timestamp" />
- <reply>
- <field type="CARD8" name="status" enum="SetConfig" />
- <field type="TIMESTAMP" name="timestamp" />
- <field type="CRTC" name="crtc" />
- <field type="CARD32" name="mm_width" /> <!-- millimeters -->
- <field type="CARD32" name="mm_height" />
- <field type="CARD8" name="connection" enum="Connection" />
- <field type="CARD8" name="subpixel_order" enum="SubPixel" />
- <field type="CARD16" name="num_crtcs" />
- <field type="CARD16" name="num_modes" />
- <field type="CARD16" name="num_preferred" />
- <field type="CARD16" name="num_clones" />
- <field type="CARD16" name="name_len" />
- <list type="CRTC" name="crtcs">
- <fieldref>num_crtcs</fieldref>
- </list>
- <list type="MODE" name="modes">
- <fieldref>num_modes</fieldref>
- </list>
- <list type="OUTPUT" name="clones">
- <fieldref>num_clones</fieldref>
- </list>
- <list type="BYTE" name="name">
- <fieldref>name_len</fieldref>
- </list>
- </reply>
- </request>
-
- <request name="ListOutputProperties" opcode="10">
- <field type="OUTPUT" name="output" />
- <reply>
- <pad bytes="1" />
- <field type="CARD16" name="num_atoms" />
- <pad bytes="22" />
- <list type="ATOM" name="atoms">
- <fieldref>num_atoms</fieldref>
- </list>
- </reply>
- </request>
-
- <request name="QueryOutputProperty" opcode="11">
- <field type="OUTPUT" name="output" />
- <field type="ATOM" name="property" />
- <reply>
- <pad bytes="1" />
- <field type="BOOL" name="pending" />
- <field type="BOOL" name="range" />
- <field type="BOOL" name="immutable" />
- <pad bytes="21" />
- <list type="INT32" name="validValues">
- <fieldref>length</fieldref>
- </list>
- </reply>
- </request>
-
- <request name="ConfigureOutputProperty" opcode="12">
- <field type="OUTPUT" name="output" />
- <field type="ATOM" name="property" />
- <field type="BOOL" name="pending" />
- <field type="BOOL" name="range" />
- <pad bytes="2" />
- <list type="INT32" name="values" />
- </request>
-
- <request name="ChangeOutputProperty" opcode="13">
- <field type="OUTPUT" name="output" />
- <field type="ATOM" name="property" />
- <field type="ATOM" name="type" />
- <field type="CARD8" name="format" />
- <field type="CARD8" name="mode" enum="PropMode" />
- <pad bytes="2" />
- <field type="CARD32" name="num_units" />
- <list type="void" name="data">
- <op op="/">
- <op op="*">
- <fieldref>num_units</fieldref>
- <fieldref>format</fieldref>
- </op>
- <value>8</value>
- </op>
- </list>
- </request>
-
- <request name="DeleteOutputProperty" opcode="14">
- <field type="OUTPUT" name="output" />
- <field type="ATOM" name="property" />
- </request>
-
- <!-- NOTE: num_items depends on format (8/16/32) -->
- <request name="GetOutputProperty" opcode="15">
- <field type="OUTPUT" name="output" />
- <field type="ATOM" name="property" />
- <field type="ATOM" name="type" altenum="GetPropertyType" />
- <field type="CARD32" name="long_offset" />
- <field type="CARD32" name="long_length" />
- <field type="BOOL" name="delete" />
- <field type="BOOL" name="pending" />
- <pad bytes="2" />
- <reply>
- <field type="CARD8" name="format" />
- <field type="ATOM" name="type" altenum="Atom" />
- <field type="CARD32" name="bytes_after" />
- <field type="CARD32" name="num_items" />
- <pad bytes="12" />
- <list type="BYTE" name="data">
- <!-- n * format / 8 -->
- <op op="*">
- <fieldref>num_items</fieldref>
- <op op="/">
- <fieldref>format</fieldref>
- <value>8</value>
- </op>
- </op>
- </list>
- </reply>
- </request>
-
- <request name="CreateMode" opcode="16">
- <field type="WINDOW" name="window" />
- <field type="ModeInfo" name="mode_info" />
- <list type="char" name="name" />
- <reply>
- <pad bytes="1" />
- <field type="MODE" name="mode" />
- <pad bytes="20" />
- </reply>
- </request>
-
- <request name="DestroyMode" opcode="17">
- <field type="MODE" name="mode" />
- </request>
-
- <request name="AddOutputMode" opcode="18">
- <field type="OUTPUT" name="output" />
- <field type="MODE" name="mode" />
- </request>
-
- <request name="DeleteOutputMode" opcode="19">
- <field type="OUTPUT" name="output" />
- <field type="MODE" name="mode" />
- </request>
-
- <request name="GetCrtcInfo" opcode="20">
- <field type="CRTC" name="crtc" />
- <field type="TIMESTAMP" name="config_timestamp" />
- <reply>
- <field type="CARD8" name="status" enum="SetConfig" />
- <field type="TIMESTAMP" name="timestamp" />
- <field type="INT16" name="x" />
- <field type="INT16" name="y" />
- <field type="CARD16" name="width" />
- <field type="CARD16" name="height" />
- <field type="MODE" name="mode" />
- <field type="CARD16" name="rotation" mask="Rotation" />
- <field type="CARD16" name="rotations" mask="Rotation" />
- <field type="CARD16" name="num_outputs" />
- <field type="CARD16" name="num_possible_outputs" />
- <list type="OUTPUT" name="outputs">
- <fieldref>num_outputs</fieldref>
- </list>
- <list type="OUTPUT" name="possible">
- <fieldref>num_possible_outputs</fieldref>
- </list>
- </reply>
- </request>
-
- <request name="SetCrtcConfig" opcode="21">
- <field type="CRTC" name="crtc" />
- <field type="TIMESTAMP" name="timestamp" />
- <field type="TIMESTAMP" name="config_timestamp" />
- <field type="INT16" name="x" />
- <field type="INT16" name="y" />
- <field type="MODE" name="mode" />
- <field type="CARD16" name="rotation" mask="Rotation" />
- <pad bytes="2" />
- <list type="OUTPUT" name="outputs" />
- <reply>
- <field type="CARD8" name="status" enum="SetConfig" />
- <field type="TIMESTAMP" name="timestamp" />
- <pad bytes="20" />
- </reply>
- </request>
-
- <request name="GetCrtcGammaSize" opcode="22">
- <field type="CRTC" name="crtc" />
- <reply>
- <pad bytes="1" />
- <field type="CARD16" name="size" />
- <pad bytes="22" />
- </reply>
- </request>
-
- <request name="GetCrtcGamma" opcode="23">
- <field type="CRTC" name="crtc" />
- <reply>
- <pad bytes="1" />
- <field type="CARD16" name="size" />
- <pad bytes="22" />
- <list type="CARD16" name="red">
- <fieldref>size</fieldref>
- </list>
- <list type="CARD16" name="green">
- <fieldref>size</fieldref>
- </list>
- <list type="CARD16" name="blue">
- <fieldref>size</fieldref>
- </list>
- </reply>
- </request>
-
- <request name="SetCrtcGamma" opcode="24">
- <field type="CRTC" name="crtc" />
- <field type="CARD16" name="size" />
- <pad bytes="2"/>
- <list type="CARD16" name="red">
- <fieldref>size</fieldref>
- </list>
- <list type="CARD16" name="green">
- <fieldref>size</fieldref>
- </list>
- <list type="CARD16" name="blue">
- <fieldref>size</fieldref>
- </list>
- </request>
-
- <!-- new in 1.3 -->
-
- <request name="GetScreenResourcesCurrent" opcode="25">
- <field type="WINDOW" name="window" />
- <reply>
- <pad bytes="1" />
- <field type="TIMESTAMP" name="timestamp" />
- <field type="TIMESTAMP" name="config_timestamp" />
- <field type="CARD16" name="num_crtcs" />
- <field type="CARD16" name="num_outputs" />
- <field type="CARD16" name="num_modes" />
- <field type="CARD16" name="names_len" />
- <pad bytes="8" />
- <list type="CRTC" name="crtcs">
- <fieldref>num_crtcs</fieldref>
- </list>
- <list type="OUTPUT" name="outputs">
- <fieldref>num_outputs</fieldref>
- </list>
- <list type="ModeInfo" name="modes">
- <fieldref>num_modes</fieldref>
- </list>
- <!-- FIXME: this is *not* null separated!
- One must use ModeInfo.name_len from each previous
- ModeInfo to infer the position of the name. -->
- <list type="BYTE" name="names">
- <fieldref>names_len</fieldref>
- </list>
- </reply>
- </request>
-
- <request name="SetCrtcTransform" opcode="26">
- <field type="CRTC" name="crtc" />
- <field type="TRANSFORM" name="transform" />
- <field type="CARD16" name="filter_len" />
- <pad bytes="2" />
- <list type="char" name="filter_name">
- <fieldref>filter_len</fieldref>
- </list>
- <list type="FIXED" name="filter_params" />
- </request>
-
- <request name="GetCrtcTransform" opcode="27">
- <field type="CRTC" name="crtc" />
- <reply>
- <pad bytes="1" />
- <field type="TRANSFORM" name="pending_transform" />
- <field type="BOOL" name="has_transforms" />
- <pad bytes="3" />
- <field type="TRANSFORM" name="current_transform" />
- <pad bytes="4" />
- <field type="CARD16" name="pending_len" />
- <field type="CARD16" name="pending_nparams" />
- <field type="CARD16" name="current_len" />
- <field type="CARD16" name="current_nparams" />
- <list type="char" name="pending_filter_name" >
- <fieldref>pending_len</fieldref>
- </list>
- <list type="FIXED" name="pending_params" >
- <fieldref>pending_nparams</fieldref>
- </list>
- <list type="char" name="current_filter_name" >
- <fieldref>current_len</fieldref>
- </list>
- <list type="FIXED" name="current_params" >
- <fieldref>current_nparams</fieldref>
- </list>
- </reply>
- </request>
-
- <request name="GetPanning" opcode="28">
- <field type="CRTC" name="crtc" />
- <reply>
- <field type="CARD8" name="status" enum="SetConfig" />
- <field type="TIMESTAMP" name="timestamp" />
- <field type="CARD16" name="left" />
- <field type="CARD16" name="top" />
- <field type="CARD16" name="width" />
- <field type="CARD16" name="height" />
- <field type="CARD16" name="track_left" />
- <field type="CARD16" name="track_top" />
- <field type="CARD16" name="track_width" />
- <field type="CARD16" name="track_height" />
- <field type="INT16" name="border_left" />
- <field type="INT16" name="border_top" />
- <field type="INT16" name="border_right" />
- <field type="INT16" name="border_bottom" />
- </reply>
- </request>
-
- <request name="SetPanning" opcode="29">
- <field type="CRTC" name="crtc" />
- <field type="TIMESTAMP" name="timestamp" />
- <field type="CARD16" name="left" />
- <field type="CARD16" name="top" />
- <field type="CARD16" name="width" />
- <field type="CARD16" name="height" />
- <field type="CARD16" name="track_left" />
- <field type="CARD16" name="track_top" />
- <field type="CARD16" name="track_width" />
- <field type="CARD16" name="track_height" />
- <field type="INT16" name="border_left" />
- <field type="INT16" name="border_top" />
- <field type="INT16" name="border_right" />
- <field type="INT16" name="border_bottom" />
- <reply>
- <field type="CARD8" name="status" enum="SetConfig" />
- <field type="TIMESTAMP" name="timestamp" />
- </reply>
- </request>
-
- <request name="SetOutputPrimary" opcode="30">
- <field type="WINDOW" name="window" />
- <field type="OUTPUT" name="output" />
- </request>
-
- <request name="GetOutputPrimary" opcode="31">
- <field type="WINDOW" name="window" />
- <reply>
- <pad bytes="1" />
- <field type="OUTPUT" name="output" />
- </reply>
- </request>
-
- <!-- Events -->
-
- <event name="ScreenChangeNotify" number="0">
- <field type="CARD8" name="rotation" mask="Rotation" />
- <field type="TIMESTAMP" name="timestamp" />
- <field type="TIMESTAMP" name="config_timestamp" />
- <field type="WINDOW" name="root" />
- <field type="WINDOW" name="request_window" />
- <field type="CARD16" name="sizeID" />
- <field type="CARD16" name="subpixel_order" enum="SubPixel" />
- <field type="CARD16" name="width" />
- <field type="CARD16" name="height" />
- <field type="CARD16" name="mwidth" />
- <field type="CARD16" name="mheight" />
- </event>
-
- <!-- New in version 1.2 -->
-
- <!-- subcode -->
- <enum name="Notify" >
- <item name="CrtcChange"> <value>0</value></item>
- <item name="OutputChange"> <value>1</value></item>
- <item name="OutputProperty"><value>2</value></item>
- </enum>
-
- <struct name="CrtcChange">
- <field type="TIMESTAMP" name="timestamp" />
- <field type="WINDOW" name="window" />
- <field type="CRTC" name="crtc" />
- <field type="MODE" name="mode" />
- <field type="CARD16" name="rotation" mask="Rotation" />
- <pad bytes="2" />
- <field type="INT16" name="x" />
- <field type="INT16" name="y" />
- <field type="CARD16" name="width" />
- <field type="CARD16" name="height" />
- </struct>
-
- <struct name="OutputChange">
- <field type="TIMESTAMP" name="timestamp" />
- <field type="TIMESTAMP" name="config_timestamp" />
- <field type="WINDOW" name="window" />
- <field type="OUTPUT" name="output" />
- <field type="CRTC" name="crtc" />
- <field type="MODE" name="mode" />
- <field type="CARD16" name="rotation" mask="Rotation" />
- <field type="CARD8" name="connection" enum="Connection" />
- <field type="CARD8" name="subpixel_order" enum="SubPixel" />
- </struct>
-
- <struct name="OutputProperty">
- <field type="WINDOW" name="window" />
- <field type="OUTPUT" name="output" />
- <field type="ATOM" name="atom" />
- <field type="TIMESTAMP" name="timestamp" />
- <field type="CARD8" name="status" enum="Property" />
- <pad bytes="11" />
- </struct>
-
- <union name="NotifyData">
- <field type="CrtcChange" name="cc" />
- <field type="OutputChange" name="oc" />
- <field type="OutputProperty" name="op" />
- </union>
-
- <event name="Notify" number="1">
- <field type="CARD8" name="subCode" enum="Notify" />
- <field type="NotifyData" name="u" />
- </event>
-</xcb>
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+Copyright (C) 2006 Jeremy Kolb, Ian Osgood
+All Rights Reserved.
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
+ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the names of the authors or their
+institutions shall not be used in advertising or otherwise to promote the
+sale, use or other dealings in this Software without prior written
+authorization from the authors.
+-->
+
+<xcb header="randr" extension-xname="RANDR" extension-name="RandR"
+ major-version="1" minor-version="3">
+
+ <import>xproto</import>
+ <import>render</import>
+
+ <!-- XIDs -->
+ <xidtype name="MODE" />
+ <xidtype name="CRTC" />
+ <xidtype name="OUTPUT" />
+
+ <!-- Errors -->
+
+ <error name="BadOutput" number="0" />
+ <error name="BadCrtc" number="1" />
+ <error name="BadMode" number="2" />
+
+ <!-- Requests -->
+
+ <enum name="Rotation">
+ <item name="Rotate_0"> <bit>0</bit></item>
+ <item name="Rotate_90"> <bit>1</bit></item>
+ <item name="Rotate_180"><bit>2</bit></item>
+ <item name="Rotate_270"><bit>3</bit></item>
+ <item name="Reflect_X"> <bit>4</bit></item>
+ <item name="Reflect_Y"> <bit>5</bit></item>
+ </enum>
+
+ <struct name="ScreenSize">
+ <field type="CARD16" name="width" /> <!-- pixels -->
+ <field type="CARD16" name="height" />
+ <field type="CARD16" name="mwidth" /> <!-- millimeters -->
+ <field type="CARD16" name="mheight" />
+ </struct>
+
+ <struct name="RefreshRates">
+ <field type="CARD16" name="nRates" />
+ <list type="CARD16" name="rates">
+ <fieldref>nRates</fieldref>
+ </list>
+ </struct>
+
+ <request name="QueryVersion" opcode="0">
+ <field type="CARD32" name="major_version" />
+ <field type="CARD32" name="minor_version" />
+ <reply>
+ <pad bytes="1" />
+ <field type="CARD32" name="major_version" />
+ <field type="CARD32" name="minor_version" />
+ <pad bytes="16" />
+ </reply>
+ </request>
+
+ <!-- Skip obsolete opcode 1 so old clients fail immediately -->
+
+ <enum name="SetConfig">
+ <item name="Success"><value>0</value></item>
+ <item name="InvalidConfigTime"><value>1</value></item>
+ <item name="InvalidTime"><value>2</value></item>
+ <item name="Failed"><value>3</value></item>
+ </enum>
+
+ <!-- This is for the 1.1 version request. I don't believe we need to specify a 1.0 request
+ as few things used randr 1.0. The only difference is the removal of refresh and padding I think.
+ BEWARE: the docs lie!
+ -->
+ <request name="SetScreenConfig" opcode="2">
+ <field type="WINDOW" name="window" />
+ <field type="TIMESTAMP" name="timestamp" />
+ <field type="TIMESTAMP" name="config_timestamp" />
+ <field type="CARD16" name="sizeID" />
+ <field type="CARD16" name="rotation" mask="Rotation" />
+ <field type="CARD16" name="rate" />
+ <pad bytes="2" />
+ <reply>
+ <field type="CARD8" name="status" enum="SetConfig" />
+ <field type="TIMESTAMP" name="new_timestamp" />
+ <field type="TIMESTAMP" name="config_timestamp" />
+ <field type="WINDOW" name="root" />
+ <field type="CARD16" name="subpixel_order" enum="SubPixel" />
+ <pad bytes="10" />
+ </reply>
+ </request>
+
+ <!-- opcode 3 is obsolete -->
+
+ <enum name="NotifyMask" >
+ <item name="ScreenChange"> <bit>0</bit></item>
+ <!-- new in 1.2 -->
+ <item name="CrtcChange"> <bit>1</bit></item>
+ <item name="OutputChange"> <bit>2</bit></item>
+ <item name="OutputProperty"><bit>3</bit></item>
+ </enum>
+
+ <request name="SelectInput" opcode="4">
+ <field type="WINDOW" name="window" />
+ <field type="CARD16" name="enable" mask="NotifyMask" />
+ <pad bytes="2" />
+ </request>
+
+ <!--
+ I think this is correct. It works. though I believe nInfo is a bit high...
+ -->
+ <request name="GetScreenInfo" opcode="5">
+ <field type="WINDOW" name="window" />
+ <reply>
+ <field type="CARD8" name="rotations" mask="Rotation" />
+ <field type="WINDOW" name="root" />
+ <field type="TIMESTAMP" name="timestamp" />
+ <field type="TIMESTAMP" name="config_timestamp" />
+ <field type="CARD16" name="nSizes" />
+ <field type="CARD16" name="sizeID" />
+ <field type="CARD16" name="rotation" mask="Rotation" />
+ <field type="CARD16" name="rate" />
+ <field type="CARD16" name="nInfo" />
+ <pad bytes="2" />
+ <list type="ScreenSize" name="sizes">
+ <fieldref>nSizes</fieldref>
+ </list>
+ <list type="RefreshRates" name="rates">
+ <op op="-">
+ <fieldref>nInfo</fieldref>
+ <fieldref>nSizes</fieldref>
+ </op>
+ </list>
+ </reply>
+ </request>
+
+ <!-- new in version 1.2 -->
+
+ <request name="GetScreenSizeRange" opcode="6">
+ <field type="WINDOW" name="window" />
+ <reply>
+ <pad bytes="1" />
+ <field type="CARD16" name="min_width" />
+ <field type="CARD16" name="min_height" />
+ <field type="CARD16" name="max_width" />
+ <field type="CARD16" name="max_height" />
+ <pad bytes="16" />
+ </reply>
+ </request>
+
+ <request name="SetScreenSize" opcode="7">
+ <field type="WINDOW" name="window" />
+ <field type="CARD16" name="width" /> <!-- pixels -->
+ <field type="CARD16" name="height" />
+ <field type="CARD32" name="mm_width" /> <!-- millimeters -->
+ <field type="CARD32" name="mm_height" />
+ </request>
+
+ <!-- for GetScreenResources.ModeInfo.ModeFlag -->
+ <enum name="ModeFlag">
+ <item name="HsyncPositive"> <bit>0</bit></item>
+ <item name="HsyncNegative"> <bit>1</bit></item>
+ <item name="VsyncPositive"> <bit>2</bit></item>
+ <item name="VsyncNegative"> <bit>3</bit></item>
+ <item name="Interlace"> <bit>4</bit></item>
+ <item name="DoubleScan"> <bit>5</bit></item>
+ <item name="Csync"> <bit>6</bit></item>
+ <item name="CsyncPositive"> <bit>7</bit></item>
+ <item name="CsyncNegative"> <bit>8</bit></item>
+ <item name="HskewPresent"> <bit>9</bit></item>
+ <item name="Bcast"> <bit>10</bit></item>
+ <item name="PixelMultiplex"><bit>11</bit></item>
+ <item name="DoubleClock"> <bit>12</bit></item>
+ <item name="HalveClock"> <bit>13</bit></item>
+ </enum>
+
+ <struct name="ModeInfo">
+ <field type="CARD32" name="id" />
+ <field type="CARD16" name="width" />
+ <field type="CARD16" name="height" />
+ <field type="CARD32" name="dot_clock" />
+ <field type="CARD16" name="hsync_start" />
+ <field type="CARD16" name="hsync_end" />
+ <field type="CARD16" name="htotal" />
+ <field type="CARD16" name="hskew" />
+ <field type="CARD16" name="vsync_start" />
+ <field type="CARD16" name="vsync_end" />
+ <field type="CARD16" name="vtotal" />
+ <field type="CARD16" name="name_len" />
+ <field type="CARD32" name="mode_flags" mask="ModeFlag" />
+ <!-- the mode name itself -->
+ </struct>
+
+ <request name="GetScreenResources" opcode="8">
+ <field type="WINDOW" name="window" />
+ <reply>
+ <pad bytes="1" />
+ <field type="TIMESTAMP" name="timestamp" />
+ <field type="TIMESTAMP" name="config_timestamp" />
+ <field type="CARD16" name="num_crtcs" />
+ <field type="CARD16" name="num_outputs" />
+ <field type="CARD16" name="num_modes" />
+ <field type="CARD16" name="names_len" />
+ <pad bytes="8" />
+ <list type="CRTC" name="crtcs">
+ <fieldref>num_crtcs</fieldref>
+ </list>
+ <list type="OUTPUT" name="outputs">
+ <fieldref>num_outputs</fieldref>
+ </list>
+ <list type="ModeInfo" name="modes">
+ <fieldref>num_modes</fieldref>
+ </list>
+ <!-- FIXME: this is *not* null separated!
+ One must use ModeInfo.name_len from each previous
+ ModeInfo to infer the position of the name. -->
+ <list type="BYTE" name="names">
+ <fieldref>names_len</fieldref>
+ </list>
+ </reply>
+ </request>
+
+ <!-- for GetOutputInfo.connection -->
+ <enum name="Connection">
+ <item name="Connected" />
+ <item name="Disconnected" />
+ <item name="Unknown" />
+ </enum>
+
+ <request name="GetOutputInfo" opcode="9">
+ <field type="OUTPUT" name="output" />
+ <field type="TIMESTAMP" name="config_timestamp" />
+ <reply>
+ <field type="CARD8" name="status" enum="SetConfig" />
+ <field type="TIMESTAMP" name="timestamp" />
+ <field type="CRTC" name="crtc" />
+ <field type="CARD32" name="mm_width" /> <!-- millimeters -->
+ <field type="CARD32" name="mm_height" />
+ <field type="CARD8" name="connection" enum="Connection" />
+ <field type="CARD8" name="subpixel_order" enum="SubPixel" />
+ <field type="CARD16" name="num_crtcs" />
+ <field type="CARD16" name="num_modes" />
+ <field type="CARD16" name="num_preferred" />
+ <field type="CARD16" name="num_clones" />
+ <field type="CARD16" name="name_len" />
+ <list type="CRTC" name="crtcs">
+ <fieldref>num_crtcs</fieldref>
+ </list>
+ <list type="MODE" name="modes">
+ <fieldref>num_modes</fieldref>
+ </list>
+ <list type="OUTPUT" name="clones">
+ <fieldref>num_clones</fieldref>
+ </list>
+ <list type="BYTE" name="name">
+ <fieldref>name_len</fieldref>
+ </list>
+ </reply>
+ </request>
+
+ <request name="ListOutputProperties" opcode="10">
+ <field type="OUTPUT" name="output" />
+ <reply>
+ <pad bytes="1" />
+ <field type="CARD16" name="num_atoms" />
+ <pad bytes="22" />
+ <list type="ATOM" name="atoms">
+ <fieldref>num_atoms</fieldref>
+ </list>
+ </reply>
+ </request>
+
+ <request name="QueryOutputProperty" opcode="11">
+ <field type="OUTPUT" name="output" />
+ <field type="ATOM" name="property" />
+ <reply>
+ <pad bytes="1" />
+ <field type="BOOL" name="pending" />
+ <field type="BOOL" name="range" />
+ <field type="BOOL" name="immutable" />
+ <pad bytes="21" />
+ <list type="INT32" name="validValues">
+ <fieldref>length</fieldref>
+ </list>
+ </reply>
+ </request>
+
+ <request name="ConfigureOutputProperty" opcode="12">
+ <field type="OUTPUT" name="output" />
+ <field type="ATOM" name="property" />
+ <field type="BOOL" name="pending" />
+ <field type="BOOL" name="range" />
+ <pad bytes="2" />
+ <list type="INT32" name="values" />
+ </request>
+
+ <request name="ChangeOutputProperty" opcode="13">
+ <field type="OUTPUT" name="output" />
+ <field type="ATOM" name="property" />
+ <field type="ATOM" name="type" />
+ <field type="CARD8" name="format" />
+ <field type="CARD8" name="mode" enum="PropMode" />
+ <pad bytes="2" />
+ <field type="CARD32" name="num_units" />
+ <list type="void" name="data">
+ <op op="/">
+ <op op="*">
+ <fieldref>num_units</fieldref>
+ <fieldref>format</fieldref>
+ </op>
+ <value>8</value>
+ </op>
+ </list>
+ </request>
+
+ <request name="DeleteOutputProperty" opcode="14">
+ <field type="OUTPUT" name="output" />
+ <field type="ATOM" name="property" />
+ </request>
+
+ <!-- NOTE: num_items depends on format (8/16/32) -->
+ <request name="GetOutputProperty" opcode="15">
+ <field type="OUTPUT" name="output" />
+ <field type="ATOM" name="property" />
+ <field type="ATOM" name="type" altenum="GetPropertyType" />
+ <field type="CARD32" name="long_offset" />
+ <field type="CARD32" name="long_length" />
+ <field type="BOOL" name="delete" />
+ <field type="BOOL" name="pending" />
+ <pad bytes="2" />
+ <reply>
+ <field type="CARD8" name="format" />
+ <field type="ATOM" name="type" altenum="Atom" />
+ <field type="CARD32" name="bytes_after" />
+ <field type="CARD32" name="num_items" />
+ <pad bytes="12" />
+ <list type="BYTE" name="data">
+ <!-- n * format / 8 -->
+ <op op="*">
+ <fieldref>num_items</fieldref>
+ <op op="/">
+ <fieldref>format</fieldref>
+ <value>8</value>
+ </op>
+ </op>
+ </list>
+ </reply>
+ </request>
+
+ <request name="CreateMode" opcode="16">
+ <field type="WINDOW" name="window" />
+ <field type="ModeInfo" name="mode_info" />
+ <list type="char" name="name" />
+ <reply>
+ <pad bytes="1" />
+ <field type="MODE" name="mode" />
+ <pad bytes="20" />
+ </reply>
+ </request>
+
+ <request name="DestroyMode" opcode="17">
+ <field type="MODE" name="mode" />
+ </request>
+
+ <request name="AddOutputMode" opcode="18">
+ <field type="OUTPUT" name="output" />
+ <field type="MODE" name="mode" />
+ </request>
+
+ <request name="DeleteOutputMode" opcode="19">
+ <field type="OUTPUT" name="output" />
+ <field type="MODE" name="mode" />
+ </request>
+
+ <request name="GetCrtcInfo" opcode="20">
+ <field type="CRTC" name="crtc" />
+ <field type="TIMESTAMP" name="config_timestamp" />
+ <reply>
+ <field type="CARD8" name="status" enum="SetConfig" />
+ <field type="TIMESTAMP" name="timestamp" />
+ <field type="INT16" name="x" />
+ <field type="INT16" name="y" />
+ <field type="CARD16" name="width" />
+ <field type="CARD16" name="height" />
+ <field type="MODE" name="mode" />
+ <field type="CARD16" name="rotation" mask="Rotation" />
+ <field type="CARD16" name="rotations" mask="Rotation" />
+ <field type="CARD16" name="num_outputs" />
+ <field type="CARD16" name="num_possible_outputs" />
+ <list type="OUTPUT" name="outputs">
+ <fieldref>num_outputs</fieldref>
+ </list>
+ <list type="OUTPUT" name="possible">
+ <fieldref>num_possible_outputs</fieldref>
+ </list>
+ </reply>
+ </request>
+
+ <request name="SetCrtcConfig" opcode="21">
+ <field type="CRTC" name="crtc" />
+ <field type="TIMESTAMP" name="timestamp" />
+ <field type="TIMESTAMP" name="config_timestamp" />
+ <field type="INT16" name="x" />
+ <field type="INT16" name="y" />
+ <field type="MODE" name="mode" />
+ <field type="CARD16" name="rotation" mask="Rotation" />
+ <pad bytes="2" />
+ <list type="OUTPUT" name="outputs" />
+ <reply>
+ <field type="CARD8" name="status" enum="SetConfig" />
+ <field type="TIMESTAMP" name="timestamp" />
+ <pad bytes="20" />
+ </reply>
+ </request>
+
+ <request name="GetCrtcGammaSize" opcode="22">
+ <field type="CRTC" name="crtc" />
+ <reply>
+ <pad bytes="1" />
+ <field type="CARD16" name="size" />
+ <pad bytes="22" />
+ </reply>
+ </request>
+
+ <request name="GetCrtcGamma" opcode="23">
+ <field type="CRTC" name="crtc" />
+ <reply>
+ <pad bytes="1" />
+ <field type="CARD16" name="size" />
+ <pad bytes="22" />
+ <list type="CARD16" name="red">
+ <fieldref>size</fieldref>
+ </list>
+ <list type="CARD16" name="green">
+ <fieldref>size</fieldref>
+ </list>
+ <list type="CARD16" name="blue">
+ <fieldref>size</fieldref>
+ </list>
+ </reply>
+ </request>
+
+ <request name="SetCrtcGamma" opcode="24">
+ <field type="CRTC" name="crtc" />
+ <field type="CARD16" name="size" />
+ <pad bytes="2"/>
+ <list type="CARD16" name="red">
+ <fieldref>size</fieldref>
+ </list>
+ <list type="CARD16" name="green">
+ <fieldref>size</fieldref>
+ </list>
+ <list type="CARD16" name="blue">
+ <fieldref>size</fieldref>
+ </list>
+ </request>
+
+ <!-- new in 1.3 -->
+
+ <request name="GetScreenResourcesCurrent" opcode="25">
+ <field type="WINDOW" name="window" />
+ <reply>
+ <pad bytes="1" />
+ <field type="TIMESTAMP" name="timestamp" />
+ <field type="TIMESTAMP" name="config_timestamp" />
+ <field type="CARD16" name="num_crtcs" />
+ <field type="CARD16" name="num_outputs" />
+ <field type="CARD16" name="num_modes" />
+ <field type="CARD16" name="names_len" />
+ <pad bytes="8" />
+ <list type="CRTC" name="crtcs">
+ <fieldref>num_crtcs</fieldref>
+ </list>
+ <list type="OUTPUT" name="outputs">
+ <fieldref>num_outputs</fieldref>
+ </list>
+ <list type="ModeInfo" name="modes">
+ <fieldref>num_modes</fieldref>
+ </list>
+ <!-- FIXME: this is *not* null separated!
+ One must use ModeInfo.name_len from each previous
+ ModeInfo to infer the position of the name. -->
+ <list type="BYTE" name="names">
+ <fieldref>names_len</fieldref>
+ </list>
+ </reply>
+ </request>
+
+ <request name="SetCrtcTransform" opcode="26">
+ <field type="CRTC" name="crtc" />
+ <field type="TRANSFORM" name="transform" />
+ <field type="CARD16" name="filter_len" />
+ <pad bytes="2" />
+ <list type="char" name="filter_name">
+ <fieldref>filter_len</fieldref>
+ </list>
+ <list type="FIXED" name="filter_params" />
+ </request>
+
+ <request name="GetCrtcTransform" opcode="27">
+ <field type="CRTC" name="crtc" />
+ <reply>
+ <pad bytes="1" />
+ <field type="TRANSFORM" name="pending_transform" />
+ <field type="BOOL" name="has_transforms" />
+ <pad bytes="3" />
+ <field type="TRANSFORM" name="current_transform" />
+ <pad bytes="4" />
+ <field type="CARD16" name="pending_len" />
+ <field type="CARD16" name="pending_nparams" />
+ <field type="CARD16" name="current_len" />
+ <field type="CARD16" name="current_nparams" />
+ <list type="char" name="pending_filter_name" >
+ <fieldref>pending_len</fieldref>
+ </list>
+ <list type="FIXED" name="pending_params" >
+ <fieldref>pending_nparams</fieldref>
+ </list>
+ <list type="char" name="current_filter_name" >
+ <fieldref>current_len</fieldref>
+ </list>
+ <list type="FIXED" name="current_params" >
+ <fieldref>current_nparams</fieldref>
+ </list>
+ </reply>
+ </request>
+
+ <request name="GetPanning" opcode="28">
+ <field type="CRTC" name="crtc" />
+ <reply>
+ <field type="CARD8" name="status" enum="SetConfig" />
+ <field type="TIMESTAMP" name="timestamp" />
+ <field type="CARD16" name="left" />
+ <field type="CARD16" name="top" />
+ <field type="CARD16" name="width" />
+ <field type="CARD16" name="height" />
+ <field type="CARD16" name="track_left" />
+ <field type="CARD16" name="track_top" />
+ <field type="CARD16" name="track_width" />
+ <field type="CARD16" name="track_height" />
+ <field type="INT16" name="border_left" />
+ <field type="INT16" name="border_top" />
+ <field type="INT16" name="border_right" />
+ <field type="INT16" name="border_bottom" />
+ </reply>
+ </request>
+
+ <request name="SetPanning" opcode="29">
+ <field type="CRTC" name="crtc" />
+ <field type="TIMESTAMP" name="timestamp" />
+ <field type="CARD16" name="left" />
+ <field type="CARD16" name="top" />
+ <field type="CARD16" name="width" />
+ <field type="CARD16" name="height" />
+ <field type="CARD16" name="track_left" />
+ <field type="CARD16" name="track_top" />
+ <field type="CARD16" name="track_width" />
+ <field type="CARD16" name="track_height" />
+ <field type="INT16" name="border_left" />
+ <field type="INT16" name="border_top" />
+ <field type="INT16" name="border_right" />
+ <field type="INT16" name="border_bottom" />
+ <reply>
+ <field type="CARD8" name="status" enum="SetConfig" />
+ <field type="TIMESTAMP" name="timestamp" />
+ </reply>
+ </request>
+
+ <request name="SetOutputPrimary" opcode="30">
+ <field type="WINDOW" name="window" />
+ <field type="OUTPUT" name="output" />
+ </request>
+
+ <request name="GetOutputPrimary" opcode="31">
+ <field type="WINDOW" name="window" />
+ <reply>
+ <pad bytes="1" />
+ <field type="OUTPUT" name="output" />
+ </reply>
+ </request>
+
+ <!-- Events -->
+
+ <event name="ScreenChangeNotify" number="0">
+ <field type="CARD8" name="rotation" mask="Rotation" />
+ <field type="TIMESTAMP" name="timestamp" />
+ <field type="TIMESTAMP" name="config_timestamp" />
+ <field type="WINDOW" name="root" />
+ <field type="WINDOW" name="request_window" />
+ <field type="CARD16" name="sizeID" />
+ <field type="CARD16" name="subpixel_order" enum="SubPixel" />
+ <field type="CARD16" name="width" />
+ <field type="CARD16" name="height" />
+ <field type="CARD16" name="mwidth" />
+ <field type="CARD16" name="mheight" />
+ </event>
+
+ <!-- New in version 1.2 -->
+
+ <!-- subcode -->
+ <enum name="Notify" >
+ <item name="CrtcChange"> <value>0</value></item>
+ <item name="OutputChange"> <value>1</value></item>
+ <item name="OutputProperty"><value>2</value></item>
+ </enum>
+
+ <struct name="CrtcChange">
+ <field type="TIMESTAMP" name="timestamp" />
+ <field type="WINDOW" name="window" />
+ <field type="CRTC" name="crtc" />
+ <field type="MODE" name="mode" />
+ <field type="CARD16" name="rotation" mask="Rotation" />
+ <pad bytes="2" />
+ <field type="INT16" name="x" />
+ <field type="INT16" name="y" />
+ <field type="CARD16" name="width" />
+ <field type="CARD16" name="height" />
+ </struct>
+
+ <struct name="OutputChange">
+ <field type="TIMESTAMP" name="timestamp" />
+ <field type="TIMESTAMP" name="config_timestamp" />
+ <field type="WINDOW" name="window" />
+ <field type="OUTPUT" name="output" />
+ <field type="CRTC" name="crtc" />
+ <field type="MODE" name="mode" />
+ <field type="CARD16" name="rotation" mask="Rotation" />
+ <field type="CARD8" name="connection" enum="Connection" />
+ <field type="CARD8" name="subpixel_order" enum="SubPixel" />
+ </struct>
+
+ <struct name="OutputProperty">
+ <field type="WINDOW" name="window" />
+ <field type="OUTPUT" name="output" />
+ <field type="ATOM" name="atom" />
+ <field type="TIMESTAMP" name="timestamp" />
+ <field type="CARD8" name="status" enum="Property" />
+ <pad bytes="11" />
+ </struct>
+
+ <union name="NotifyData">
+ <field type="CrtcChange" name="cc" />
+ <field type="OutputChange" name="oc" />
+ <field type="OutputProperty" name="op" />
+ </union>
+
+ <event name="Notify" number="1">
+ <field type="CARD8" name="subCode" enum="Notify" />
+ <field type="NotifyData" name="u" />
+ </event>
+</xcb>
diff --git a/libxcb/xcb-proto/src/record.xml b/libxcb/xcb-proto/src/record.xml
index 11fb9fc6a..74c16fe5b 100644
--- a/libxcb/xcb-proto/src/record.xml
+++ b/libxcb/xcb-proto/src/record.xml
@@ -1,178 +1,178 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-Copyright (C) 2005 Jeremy Kolb.
-All Rights Reserved.
-
-Permission is hereby granted, free of charge, to any person ob/Sintaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
-ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the names of the authors or their
-institutions shall not be used in advertising or otherwise to promote the
-sale, use or other dealings in this Software without prior written
-authorization from the authors.
--->
-
-<xcb header="record" extension-xname="RECORD" extension-name="Record"
- major-version="1" minor-version="13">
-
- <!-- Types -->
- <xidtype name="CONTEXT" />
-
- <struct name="Range8">
- <field type="CARD8" name="first" />
- <field type="CARD8" name="last" />
- </struct>
-
- <struct name="Range16">
- <field type="CARD16" name="first" />
- <field type="CARD16" name="last" />
- </struct>
-
- <struct name="ExtRange">
- <field type="Range8" name="major" />
- <field type="Range16" name="minor" />
- </struct>
-
- <struct name="Range">
- <field type="Range8" name="core_requests" />
- <field type="Range8" name="core_replies" />
- <field type="ExtRange" name="ext_requests" />
- <field type="ExtRange" name="ext_replies" />
- <field type="Range8" name="delivered_events" />
- <field type="Range8" name="device_events" />
- <field type="Range8" name="errors" />
- <field type="BOOL" name="client_started" />
- <field type="BOOL" name="client_died" />
- </struct>
-
- <typedef oldname="CARD8" newname="ElementHeader" />
- <enum name="HType">
- <item name="FromServerTime"><bit>0</bit></item>
- <item name="FromClientTime"><bit>1</bit></item>
- <item name="FromClientSequence"><bit>2</bit></item>
- </enum>
-
- <typedef oldname="CARD32" newname="ClientSpec" />
- <enum name="CS">
- <item name="CurrentClients"><value>1</value></item>
- <item name="FutureClients"><value>2</value></item>
- <item name="AllClients"><value>3</value></item>
- </enum>
-
- <struct name="ClientInfo">
- <field type="ClientSpec" name="client_resource" />
- <field type="CARD32" name="num_ranges" />
- <list type="Range" name="ranges">
- <fieldref>num_ranges</fieldref>
- </list>
- </struct>
-
- <!-- Errors -->
- <error name="BadContext" number="0">
- <field type="CARD32" name="invalid_record" />
- </error>
-
- <!-- Requests -->
- <request name="QueryVersion" opcode="0">
- <field type="CARD16" name="major_version" />
- <field type="CARD16" name="minor_version" />
- <reply>
- <pad bytes="1"/>
- <field type="CARD16" name="major_version" />
- <field type="CARD16" name="minor_version" />
- </reply>
- </request>
-
- <request name="CreateContext" opcode="1">
- <field type="record:CONTEXT" name="context" />
- <field type="ElementHeader" name="element_header" />
- <pad bytes="3" />
- <field type="CARD32" name="num_client_specs" />
- <field type="CARD32" name="num_ranges" />
- <list type="ClientSpec" name="client_specs">
- <fieldref>num_client_specs</fieldref>
- </list>
- <list type="Range" name="ranges">
- <fieldref>num_ranges</fieldref>
- </list>
- </request>
-
- <request name="RegisterClients" opcode="2">
- <field type="record:CONTEXT" name="context" />
- <field type="ElementHeader" name="element_header" />
- <pad bytes="3" />
- <field type="CARD32" name="num_client_specs" />
- <field type="CARD32" name="num_ranges" />
- <list type="ClientSpec" name="client_specs">
- <fieldref>num_client_specs</fieldref>
- </list>
- <list type="Range" name="ranges">
- <fieldref>num_ranges</fieldref>
- </list>
- </request>
-
- <request name="UnregisterClients" opcode="3">
- <field type="record:CONTEXT" name="context" />
- <field type="CARD32" name="num_client_specs" />
- <list type="ClientSpec" name="client_specs">
- <fieldref>num_client_specs</fieldref>
- </list>
- </request>
-
- <request name="GetContext" opcode="4">
- <field type="record:CONTEXT" name="context" />
- <reply>
- <field type="BOOL" name="enabled" />
- <field type="ElementHeader" name="element_header" />
- <pad bytes="3" />
- <field type="CARD32" name="num_intercepted_clients" />
- <pad bytes="16" />
- <list type="ClientInfo" name="intercepted_clients">
- <fieldref>num_intercepted_clients</fieldref>
- </list>
- </reply>
- </request>
-
- <request name="EnableContext" opcode="5">
- <field type="record:CONTEXT" name="context" />
- <reply>
- <field type="CARD8" name="category" />
- <field type="ElementHeader" name="element_header" />
- <field type="BOOL" name="client_swapped" />
- <pad bytes="2" />
- <field type="CARD32" name="xid_base" />
- <field type="CARD32" name="server_time" />
- <field type="CARD32" name="rec_sequence_num" />
- <pad bytes="8" />
- <list type="BYTE" name="data">
- <op op="*">
- <fieldref>length</fieldref>
- <value>4</value>
- </op>
- </list>
- </reply>
- </request>
-
- <request name="DisableContext" opcode="6">
- <field type="record:CONTEXT" name="context" />
- </request>
-
- <request name="FreeContext" opcode="7">
- <field type="record:CONTEXT" name="context" />
- </request>
-
-</xcb>
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+Copyright (C) 2005 Jeremy Kolb.
+All Rights Reserved.
+
+Permission is hereby granted, free of charge, to any person ob/Sintaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
+ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the names of the authors or their
+institutions shall not be used in advertising or otherwise to promote the
+sale, use or other dealings in this Software without prior written
+authorization from the authors.
+-->
+
+<xcb header="record" extension-xname="RECORD" extension-name="Record"
+ major-version="1" minor-version="13">
+
+ <!-- Types -->
+ <xidtype name="CONTEXT" />
+
+ <struct name="Range8">
+ <field type="CARD8" name="first" />
+ <field type="CARD8" name="last" />
+ </struct>
+
+ <struct name="Range16">
+ <field type="CARD16" name="first" />
+ <field type="CARD16" name="last" />
+ </struct>
+
+ <struct name="ExtRange">
+ <field type="Range8" name="major" />
+ <field type="Range16" name="minor" />
+ </struct>
+
+ <struct name="Range">
+ <field type="Range8" name="core_requests" />
+ <field type="Range8" name="core_replies" />
+ <field type="ExtRange" name="ext_requests" />
+ <field type="ExtRange" name="ext_replies" />
+ <field type="Range8" name="delivered_events" />
+ <field type="Range8" name="device_events" />
+ <field type="Range8" name="errors" />
+ <field type="BOOL" name="client_started" />
+ <field type="BOOL" name="client_died" />
+ </struct>
+
+ <typedef oldname="CARD8" newname="ElementHeader" />
+ <enum name="HType">
+ <item name="FromServerTime"><bit>0</bit></item>
+ <item name="FromClientTime"><bit>1</bit></item>
+ <item name="FromClientSequence"><bit>2</bit></item>
+ </enum>
+
+ <typedef oldname="CARD32" newname="ClientSpec" />
+ <enum name="CS">
+ <item name="CurrentClients"><value>1</value></item>
+ <item name="FutureClients"><value>2</value></item>
+ <item name="AllClients"><value>3</value></item>
+ </enum>
+
+ <struct name="ClientInfo">
+ <field type="ClientSpec" name="client_resource" />
+ <field type="CARD32" name="num_ranges" />
+ <list type="Range" name="ranges">
+ <fieldref>num_ranges</fieldref>
+ </list>
+ </struct>
+
+ <!-- Errors -->
+ <error name="BadContext" number="0">
+ <field type="CARD32" name="invalid_record" />
+ </error>
+
+ <!-- Requests -->
+ <request name="QueryVersion" opcode="0">
+ <field type="CARD16" name="major_version" />
+ <field type="CARD16" name="minor_version" />
+ <reply>
+ <pad bytes="1"/>
+ <field type="CARD16" name="major_version" />
+ <field type="CARD16" name="minor_version" />
+ </reply>
+ </request>
+
+ <request name="CreateContext" opcode="1">
+ <field type="record:CONTEXT" name="context" />
+ <field type="ElementHeader" name="element_header" />
+ <pad bytes="3" />
+ <field type="CARD32" name="num_client_specs" />
+ <field type="CARD32" name="num_ranges" />
+ <list type="ClientSpec" name="client_specs">
+ <fieldref>num_client_specs</fieldref>
+ </list>
+ <list type="Range" name="ranges">
+ <fieldref>num_ranges</fieldref>
+ </list>
+ </request>
+
+ <request name="RegisterClients" opcode="2">
+ <field type="record:CONTEXT" name="context" />
+ <field type="ElementHeader" name="element_header" />
+ <pad bytes="3" />
+ <field type="CARD32" name="num_client_specs" />
+ <field type="CARD32" name="num_ranges" />
+ <list type="ClientSpec" name="client_specs">
+ <fieldref>num_client_specs</fieldref>
+ </list>
+ <list type="Range" name="ranges">
+ <fieldref>num_ranges</fieldref>
+ </list>
+ </request>
+
+ <request name="UnregisterClients" opcode="3">
+ <field type="record:CONTEXT" name="context" />
+ <field type="CARD32" name="num_client_specs" />
+ <list type="ClientSpec" name="client_specs">
+ <fieldref>num_client_specs</fieldref>
+ </list>
+ </request>
+
+ <request name="GetContext" opcode="4">
+ <field type="record:CONTEXT" name="context" />
+ <reply>
+ <field type="BOOL" name="enabled" />
+ <field type="ElementHeader" name="element_header" />
+ <pad bytes="3" />
+ <field type="CARD32" name="num_intercepted_clients" />
+ <pad bytes="16" />
+ <list type="ClientInfo" name="intercepted_clients">
+ <fieldref>num_intercepted_clients</fieldref>
+ </list>
+ </reply>
+ </request>
+
+ <request name="EnableContext" opcode="5">
+ <field type="record:CONTEXT" name="context" />
+ <reply>
+ <field type="CARD8" name="category" />
+ <field type="ElementHeader" name="element_header" />
+ <field type="BOOL" name="client_swapped" />
+ <pad bytes="2" />
+ <field type="CARD32" name="xid_base" />
+ <field type="CARD32" name="server_time" />
+ <field type="CARD32" name="rec_sequence_num" />
+ <pad bytes="8" />
+ <list type="BYTE" name="data">
+ <op op="*">
+ <fieldref>length</fieldref>
+ <value>4</value>
+ </op>
+ </list>
+ </reply>
+ </request>
+
+ <request name="DisableContext" opcode="6">
+ <field type="record:CONTEXT" name="context" />
+ </request>
+
+ <request name="FreeContext" opcode="7">
+ <field type="record:CONTEXT" name="context" />
+ </request>
+
+</xcb>
diff --git a/libxcb/xcb-proto/src/res.xml b/libxcb/xcb-proto/src/res.xml
index fed2cf712..d758d893b 100644
--- a/libxcb/xcb-proto/src/res.xml
+++ b/libxcb/xcb-proto/src/res.xml
@@ -1,83 +1,83 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-Copyright (C) 2006 Jeremy Kolb
-All Rights Reserved.
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
-ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the names of the authors or their
-institutions shall not be used in advertising or otherwise to promote the
-sale, use or other dealings in this Software without prior written
-authorization from the authors.
--->
-<xcb header="res" extension-xname="X-Resource" extension-name="Res"
- major-version="1" minor-version="0">
- <import>xproto</import>
-
- <struct name="Client">
- <field type="CARD32" name="resource_base" />
- <field type="CARD32" name="resource_mask" />
- </struct>
-
- <struct name="Type">
- <field type="ATOM" name="resource_type" />
- <field type="CARD32" name="count" />
- </struct>
-
- <request name="QueryVersion" opcode="0">
- <field type="CARD8" name="client_major" />
- <field type="CARD8" name="client_minor" />
- <reply>
- <pad bytes="1" />
- <field type="CARD16" name="server_major" />
- <field type="CARD16" name="server_minor" />
- </reply>
- </request>
-
- <request name="QueryClients" opcode="1">
- <reply>
- <pad bytes="1" />
- <field type="CARD32" name="num_clients" />
- <pad bytes="20" />
- <list type="Client" name="clients">
- <fieldref>num_clients</fieldref>
- </list>
- </reply>
- </request>
-
- <request name="QueryClientResources" opcode="2">
- <field type="CARD32" name="xid" />
- <reply>
- <pad bytes="1" />
- <field type="CARD32" name="num_types" />
- <pad bytes="20" />
- <list type="Type" name="types">
- <fieldref>num_types</fieldref>
- </list>
- </reply>
- </request>
-
- <request name="QueryClientPixmapBytes" opcode="3">
- <field type="CARD32" name="xid" />
- <reply>
- <pad bytes="1" />
- <field type="CARD32" name="bytes" />
- <field type="CARD32" name="bytes_overflow" />
- </reply>
- </request>
-</xcb>
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+Copyright (C) 2006 Jeremy Kolb
+All Rights Reserved.
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
+ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the names of the authors or their
+institutions shall not be used in advertising or otherwise to promote the
+sale, use or other dealings in this Software without prior written
+authorization from the authors.
+-->
+<xcb header="res" extension-xname="X-Resource" extension-name="Res"
+ major-version="1" minor-version="0">
+ <import>xproto</import>
+
+ <struct name="Client">
+ <field type="CARD32" name="resource_base" />
+ <field type="CARD32" name="resource_mask" />
+ </struct>
+
+ <struct name="Type">
+ <field type="ATOM" name="resource_type" />
+ <field type="CARD32" name="count" />
+ </struct>
+
+ <request name="QueryVersion" opcode="0">
+ <field type="CARD8" name="client_major" />
+ <field type="CARD8" name="client_minor" />
+ <reply>
+ <pad bytes="1" />
+ <field type="CARD16" name="server_major" />
+ <field type="CARD16" name="server_minor" />
+ </reply>
+ </request>
+
+ <request name="QueryClients" opcode="1">
+ <reply>
+ <pad bytes="1" />
+ <field type="CARD32" name="num_clients" />
+ <pad bytes="20" />
+ <list type="Client" name="clients">
+ <fieldref>num_clients</fieldref>
+ </list>
+ </reply>
+ </request>
+
+ <request name="QueryClientResources" opcode="2">
+ <field type="CARD32" name="xid" />
+ <reply>
+ <pad bytes="1" />
+ <field type="CARD32" name="num_types" />
+ <pad bytes="20" />
+ <list type="Type" name="types">
+ <fieldref>num_types</fieldref>
+ </list>
+ </reply>
+ </request>
+
+ <request name="QueryClientPixmapBytes" opcode="3">
+ <field type="CARD32" name="xid" />
+ <reply>
+ <pad bytes="1" />
+ <field type="CARD32" name="bytes" />
+ <field type="CARD32" name="bytes_overflow" />
+ </reply>
+ </request>
+</xcb>
diff --git a/libxcb/xcb-proto/src/screensaver.xml b/libxcb/xcb-proto/src/screensaver.xml
index 52af00427..9c7bccb08 100644
--- a/libxcb/xcb-proto/src/screensaver.xml
+++ b/libxcb/xcb-proto/src/screensaver.xml
@@ -1,128 +1,128 @@
-<!--
-
-Copyright (C) 2005 Vincent Torri.
-All Rights Reserved.
-
-Permission is hereby granted, free of charge, to any person ob/Sintaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
-ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the names of the authors or their
-institutions shall not be used in advertising or otherwise to promote the
-sale, use or other dealings in this Software without prior written
-authorization from the authors.
--->
-<!--
-Screen Saver Extension to the X Protocol
-Draft Standard Version 1.1
--->
-<xcb header="screensaver" extension-xname="MIT-SCREEN-SAVER" extension-name="ScreenSaver" major-version="1" minor-version="1">
-
- <!-- Types -->
-
- <import>xproto</import>
-
- <enum name="Kind">
- <item name="Blanked" />
- <item name="Internal" />
- <item name="External" />
- </enum>
-
- <enum name="Event">
- <item name="NotifyMask"><bit>0</bit></item>
- <item name="CycleMask"> <bit>1</bit></item>
- </enum>
-
- <enum name="State">
- <item name="Off" />
- <item name="On" />
- <item name="Cycle" />
- <item name="Disabled" />
- </enum>
-
- <!-- Errors -->
- <!-- Requests -->
- <request name="QueryVersion" opcode="0">
- <field type="CARD8" name="client_major_version"/>
- <field type="CARD8" name="client_minor_version"/>
- <pad bytes="2"/>
- <reply>
- <pad bytes="1"/>
- <field type="CARD16" name="server_major_version"/>
- <field type="CARD16" name="server_minor_version"/>
- <pad bytes="20"/>
- </reply>
- </request>
-
- <request name="QueryInfo" opcode="1">
- <field type="DRAWABLE" name="drawable"/>
- <reply>
- <field type="CARD8" name="state"/>
- <field type="WINDOW" name="saver_window"/>
- <field type="CARD32" name="ms_until_server"/>
- <field type="CARD32" name="ms_since_user_input"/>
- <field type="CARD32" name="event_mask" />
- <field type="BYTE" name="kind"/> <!-- enum Kind -->
- <pad bytes="7"/>
- </reply>
- </request>
-
- <request name="SelectInput" opcode="2">
- <field type="DRAWABLE" name="drawable"/>
- <field type="CARD32" name="event_mask" /> <!-- enum Event -->
- </request>
-
- <request name="SetAttributes" opcode="3">
- <field type="DRAWABLE" name="drawable"/>
- <field type="INT16" name="x"/>
- <field type="INT16" name="y"/>
- <field type="CARD16" name="width"/>
- <field type="CARD16" name="height"/>
- <field type="CARD16" name="border_width"/>
- <field type="BYTE" name="class"/> <!-- enum XCBWindowClass -->
- <field type="CARD8" name="depth"/>
- <field type="VISUALID" name="visual"/>
- <valueparam value-mask-type="CARD32"
- value-mask-name="value_mask"
- value-list-name="value_list" />
- </request>
-
- <request name="UnsetAttributes" opcode="4">
- <field type="DRAWABLE" name="drawable"/>
- </request>
-
- <!-- version 1.1 -->
- <request name="Suspend" opcode="5">
- <field type="BOOL" name="suspend" />
- <pad bytes="3" />
- </request>
-
- <!-- Events -->
-
- <event name="Notify" number="0">
- <field type="CARD8" name="code"/>
- <field type="BYTE" name="state"/> <!-- enum State -->
- <pad bytes="1" />
- <field type="CARD16" name="sequence_number"/>
- <field type="TIMESTAMP" name="time"/>
- <field type="WINDOW" name="root"/>
- <field type="WINDOW" name="window"/>
- <field type="BYTE" name="kind"/> <!-- enum Kind -->
- <field type="BOOL" name="forced"/>
- <pad bytes="14"/>
- </event>
-
-</xcb>
+<!--
+
+Copyright (C) 2005 Vincent Torri.
+All Rights Reserved.
+
+Permission is hereby granted, free of charge, to any person ob/Sintaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
+ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the names of the authors or their
+institutions shall not be used in advertising or otherwise to promote the
+sale, use or other dealings in this Software without prior written
+authorization from the authors.
+-->
+<!--
+Screen Saver Extension to the X Protocol
+Draft Standard Version 1.1
+-->
+<xcb header="screensaver" extension-xname="MIT-SCREEN-SAVER" extension-name="ScreenSaver" major-version="1" minor-version="1">
+
+ <!-- Types -->
+
+ <import>xproto</import>
+
+ <enum name="Kind">
+ <item name="Blanked" />
+ <item name="Internal" />
+ <item name="External" />
+ </enum>
+
+ <enum name="Event">
+ <item name="NotifyMask"><bit>0</bit></item>
+ <item name="CycleMask"> <bit>1</bit></item>
+ </enum>
+
+ <enum name="State">
+ <item name="Off" />
+ <item name="On" />
+ <item name="Cycle" />
+ <item name="Disabled" />
+ </enum>
+
+ <!-- Errors -->
+ <!-- Requests -->
+ <request name="QueryVersion" opcode="0">
+ <field type="CARD8" name="client_major_version"/>
+ <field type="CARD8" name="client_minor_version"/>
+ <pad bytes="2"/>
+ <reply>
+ <pad bytes="1"/>
+ <field type="CARD16" name="server_major_version"/>
+ <field type="CARD16" name="server_minor_version"/>
+ <pad bytes="20"/>
+ </reply>
+ </request>
+
+ <request name="QueryInfo" opcode="1">
+ <field type="DRAWABLE" name="drawable"/>
+ <reply>
+ <field type="CARD8" name="state"/>
+ <field type="WINDOW" name="saver_window"/>
+ <field type="CARD32" name="ms_until_server"/>
+ <field type="CARD32" name="ms_since_user_input"/>
+ <field type="CARD32" name="event_mask" />
+ <field type="BYTE" name="kind"/> <!-- enum Kind -->
+ <pad bytes="7"/>
+ </reply>
+ </request>
+
+ <request name="SelectInput" opcode="2">
+ <field type="DRAWABLE" name="drawable"/>
+ <field type="CARD32" name="event_mask" /> <!-- enum Event -->
+ </request>
+
+ <request name="SetAttributes" opcode="3">
+ <field type="DRAWABLE" name="drawable"/>
+ <field type="INT16" name="x"/>
+ <field type="INT16" name="y"/>
+ <field type="CARD16" name="width"/>
+ <field type="CARD16" name="height"/>
+ <field type="CARD16" name="border_width"/>
+ <field type="BYTE" name="class"/> <!-- enum XCBWindowClass -->
+ <field type="CARD8" name="depth"/>
+ <field type="VISUALID" name="visual"/>
+ <valueparam value-mask-type="CARD32"
+ value-mask-name="value_mask"
+ value-list-name="value_list" />
+ </request>
+
+ <request name="UnsetAttributes" opcode="4">
+ <field type="DRAWABLE" name="drawable"/>
+ </request>
+
+ <!-- version 1.1 -->
+ <request name="Suspend" opcode="5">
+ <field type="BOOL" name="suspend" />
+ <pad bytes="3" />
+ </request>
+
+ <!-- Events -->
+
+ <event name="Notify" number="0">
+ <field type="CARD8" name="code"/>
+ <field type="BYTE" name="state"/> <!-- enum State -->
+ <pad bytes="1" />
+ <field type="CARD16" name="sequence_number"/>
+ <field type="TIMESTAMP" name="time"/>
+ <field type="WINDOW" name="root"/>
+ <field type="WINDOW" name="window"/>
+ <field type="BYTE" name="kind"/> <!-- enum Kind -->
+ <field type="BOOL" name="forced"/>
+ <pad bytes="14"/>
+ </event>
+
+</xcb>
diff --git a/libxcb/xcb-proto/src/shape.xml b/libxcb/xcb-proto/src/shape.xml
index ce54d3112..c128ade32 100644
--- a/libxcb/xcb-proto/src/shape.xml
+++ b/libxcb/xcb-proto/src/shape.xml
@@ -1,155 +1,155 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-Copyright (C) 2001-2004 Bart Massey, Jamey Sharp, and Josh Triplett.
-All Rights Reserved.
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
-ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the names of the authors or their
-institutions shall not be used in advertising or otherwise to promote the
-sale, use or other dealings in this Software without prior written
-authorization from the authors.
--->
-<!-- This file describes version 1.1 of the Shape extension. -->
-<xcb header="shape" extension-xname="SHAPE" extension-name="Shape" major-version="1" minor-version="1">
- <import>xproto</import>
-
- <typedef oldname="CARD8" newname="OP" />
- <typedef oldname="CARD8" newname="KIND" />
-
- <!-- Shape attributes of type OP. -->
- <enum name="SO">
- <item name="Set" />
- <item name="Union" />
- <item name="Intersect" />
- <item name="Subtract" />
- <item name="Invert" />
- </enum>
-
- <!-- Shape attributes of type KIND. -->
- <enum name="SK">
- <item name="Bounding" />
- <item name="Clip" />
- <item name="Input" /> <!-- added in version 1.1 -->
- </enum>
-
- <event name="Notify" number="0">
- <field type="KIND" name="shape_kind" enum="SK" />
- <field type="WINDOW" name="affected_window" />
- <field type="INT16" name="extents_x" />
- <field type="INT16" name="extents_y" />
- <field type="CARD16" name="extents_width" />
- <field type="CARD16" name="extents_height" />
- <field type="TIMESTAMP" name="server_time" />
- <field type="BOOL" name="shaped" />
- <pad bytes="11" />
- </event>
-
- <request name="QueryVersion" opcode="0">
- <reply>
- <pad bytes="1" />
- <field type="CARD16" name="major_version" />
- <field type="CARD16" name="minor_version" />
- </reply>
- </request>
-
- <request name="Rectangles" opcode="1">
- <field type="OP" name="operation" enum="SO" />
- <field type="KIND" name="destination_kind" enum="SK" />
- <field type="BYTE" name="ordering" enum="ClipOrdering" />
- <pad bytes="1" />
- <field type="WINDOW" name="destination_window" />
- <field type="INT16" name="x_offset" />
- <field type="INT16" name="y_offset" />
- <list type="RECTANGLE" name="rectangles" />
- </request>
-
- <request name="Mask" opcode="2">
- <field type="OP" name="operation" enum="SO" />
- <field type="KIND" name="destination_kind" enum="SK" />
- <pad bytes="2" />
- <field type="WINDOW" name="destination_window" />
- <field type="INT16" name="x_offset" />
- <field type="INT16" name="y_offset" />
- <field type="PIXMAP" name="source_bitmap" altenum="Pixmap" />
- </request>
-
- <request name="Combine" opcode="3">
- <field type="OP" name="operation" enum="SO" />
- <field type="KIND" name="destination_kind" enum="SK" />
- <field type="KIND" name="source_kind" enum="SK" />
- <pad bytes="1" />
- <field type="WINDOW" name="destination_window" />
- <field type="INT16" name="x_offset" />
- <field type="INT16" name="y_offset" />
- <field type="WINDOW" name="source_window" />
- </request>
-
- <request name="Offset" opcode="4">
- <field type="KIND" name="destination_kind" enum="SK" />
- <pad bytes="3" />
- <field type="WINDOW" name="destination_window" />
- <field type="INT16" name="x_offset" />
- <field type="INT16" name="y_offset" />
- </request>
-
- <request name="QueryExtents" opcode="5">
- <field type="WINDOW" name="destination_window" />
- <reply>
- <pad bytes="1" />
- <field type="BOOL" name="bounding_shaped" />
- <field type="BOOL" name="clip_shaped" />
- <pad bytes="2" />
- <field type="INT16" name="bounding_shape_extents_x" />
- <field type="INT16" name="bounding_shape_extents_y" />
- <field type="CARD16" name="bounding_shape_extents_width" />
- <field type="CARD16" name="bounding_shape_extents_height" />
- <field type="INT16" name="clip_shape_extents_x" />
- <field type="INT16" name="clip_shape_extents_y" />
- <field type="CARD16" name="clip_shape_extents_width" />
- <field type="CARD16" name="clip_shape_extents_height" />
- </reply>
- </request>
-
- <request name="SelectInput" opcode="6">
- <field type="WINDOW" name="destination_window" />
- <field type="BOOL" name="enable" />
- <pad bytes="3" />
- </request>
-
- <request name="InputSelected" opcode="7">
- <field type="WINDOW" name="destination_window" />
- <reply>
- <field type="BOOL" name="enabled" />
- </reply>
- </request>
-
- <request name="GetRectangles" opcode="8">
- <field type="WINDOW" name="window" />
- <field type="KIND" name="source_kind" enum="SK" />
- <pad bytes="3" />
- <reply>
- <field type="BYTE" name="ordering" enum="ClipOrdering" />
- <field type="CARD32" name="rectangles_len" />
- <pad bytes="20" />
- <list type="RECTANGLE" name="rectangles">
- <fieldref>rectangles_len</fieldref>
- </list>
- </reply>
- </request>
-</xcb>
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+Copyright (C) 2001-2004 Bart Massey, Jamey Sharp, and Josh Triplett.
+All Rights Reserved.
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
+ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the names of the authors or their
+institutions shall not be used in advertising or otherwise to promote the
+sale, use or other dealings in this Software without prior written
+authorization from the authors.
+-->
+<!-- This file describes version 1.1 of the Shape extension. -->
+<xcb header="shape" extension-xname="SHAPE" extension-name="Shape" major-version="1" minor-version="1">
+ <import>xproto</import>
+
+ <typedef oldname="CARD8" newname="OP" />
+ <typedef oldname="CARD8" newname="KIND" />
+
+ <!-- Shape attributes of type OP. -->
+ <enum name="SO">
+ <item name="Set" />
+ <item name="Union" />
+ <item name="Intersect" />
+ <item name="Subtract" />
+ <item name="Invert" />
+ </enum>
+
+ <!-- Shape attributes of type KIND. -->
+ <enum name="SK">
+ <item name="Bounding" />
+ <item name="Clip" />
+ <item name="Input" /> <!-- added in version 1.1 -->
+ </enum>
+
+ <event name="Notify" number="0">
+ <field type="KIND" name="shape_kind" enum="SK" />
+ <field type="WINDOW" name="affected_window" />
+ <field type="INT16" name="extents_x" />
+ <field type="INT16" name="extents_y" />
+ <field type="CARD16" name="extents_width" />
+ <field type="CARD16" name="extents_height" />
+ <field type="TIMESTAMP" name="server_time" />
+ <field type="BOOL" name="shaped" />
+ <pad bytes="11" />
+ </event>
+
+ <request name="QueryVersion" opcode="0">
+ <reply>
+ <pad bytes="1" />
+ <field type="CARD16" name="major_version" />
+ <field type="CARD16" name="minor_version" />
+ </reply>
+ </request>
+
+ <request name="Rectangles" opcode="1">
+ <field type="OP" name="operation" enum="SO" />
+ <field type="KIND" name="destination_kind" enum="SK" />
+ <field type="BYTE" name="ordering" enum="ClipOrdering" />
+ <pad bytes="1" />
+ <field type="WINDOW" name="destination_window" />
+ <field type="INT16" name="x_offset" />
+ <field type="INT16" name="y_offset" />
+ <list type="RECTANGLE" name="rectangles" />
+ </request>
+
+ <request name="Mask" opcode="2">
+ <field type="OP" name="operation" enum="SO" />
+ <field type="KIND" name="destination_kind" enum="SK" />
+ <pad bytes="2" />
+ <field type="WINDOW" name="destination_window" />
+ <field type="INT16" name="x_offset" />
+ <field type="INT16" name="y_offset" />
+ <field type="PIXMAP" name="source_bitmap" altenum="Pixmap" />
+ </request>
+
+ <request name="Combine" opcode="3">
+ <field type="OP" name="operation" enum="SO" />
+ <field type="KIND" name="destination_kind" enum="SK" />
+ <field type="KIND" name="source_kind" enum="SK" />
+ <pad bytes="1" />
+ <field type="WINDOW" name="destination_window" />
+ <field type="INT16" name="x_offset" />
+ <field type="INT16" name="y_offset" />
+ <field type="WINDOW" name="source_window" />
+ </request>
+
+ <request name="Offset" opcode="4">
+ <field type="KIND" name="destination_kind" enum="SK" />
+ <pad bytes="3" />
+ <field type="WINDOW" name="destination_window" />
+ <field type="INT16" name="x_offset" />
+ <field type="INT16" name="y_offset" />
+ </request>
+
+ <request name="QueryExtents" opcode="5">
+ <field type="WINDOW" name="destination_window" />
+ <reply>
+ <pad bytes="1" />
+ <field type="BOOL" name="bounding_shaped" />
+ <field type="BOOL" name="clip_shaped" />
+ <pad bytes="2" />
+ <field type="INT16" name="bounding_shape_extents_x" />
+ <field type="INT16" name="bounding_shape_extents_y" />
+ <field type="CARD16" name="bounding_shape_extents_width" />
+ <field type="CARD16" name="bounding_shape_extents_height" />
+ <field type="INT16" name="clip_shape_extents_x" />
+ <field type="INT16" name="clip_shape_extents_y" />
+ <field type="CARD16" name="clip_shape_extents_width" />
+ <field type="CARD16" name="clip_shape_extents_height" />
+ </reply>
+ </request>
+
+ <request name="SelectInput" opcode="6">
+ <field type="WINDOW" name="destination_window" />
+ <field type="BOOL" name="enable" />
+ <pad bytes="3" />
+ </request>
+
+ <request name="InputSelected" opcode="7">
+ <field type="WINDOW" name="destination_window" />
+ <reply>
+ <field type="BOOL" name="enabled" />
+ </reply>
+ </request>
+
+ <request name="GetRectangles" opcode="8">
+ <field type="WINDOW" name="window" />
+ <field type="KIND" name="source_kind" enum="SK" />
+ <pad bytes="3" />
+ <reply>
+ <field type="BYTE" name="ordering" enum="ClipOrdering" />
+ <field type="CARD32" name="rectangles_len" />
+ <pad bytes="20" />
+ <list type="RECTANGLE" name="rectangles">
+ <fieldref>rectangles_len</fieldref>
+ </list>
+ </reply>
+ </request>
+</xcb>
diff --git a/libxcb/xcb-proto/src/shm.xml b/libxcb/xcb-proto/src/shm.xml
index e2f575f10..adda50957 100644
--- a/libxcb/xcb-proto/src/shm.xml
+++ b/libxcb/xcb-proto/src/shm.xml
@@ -1,116 +1,116 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-Copyright (C) 2001-2004 Bart Massey, Jamey Sharp, and Josh Triplett.
-All Rights Reserved.
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
-ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the names of the authors or their
-institutions shall not be used in advertising or otherwise to promote the
-sale, use or other dealings in this Software without prior written
-authorization from the authors.
--->
-<xcb header="shm" extension-xname="MIT-SHM" extension-name="Shm"
- major-version="1" minor-version="1">
- <import>xproto</import>
-
- <xidtype name="SEG" />
-
- <event name="Completion" number="0">
- <pad bytes="1" />
- <field type="DRAWABLE" name="drawable" />
- <field type="CARD16" name="minor_event" />
- <field type="BYTE" name="major_event" />
- <pad bytes="1" />
- <field type="SEG" name="shmseg" />
- <field type="CARD32" name="offset" />
- </event>
-
- <errorcopy name="BadSeg" number="0" ref="Value" />
-
- <request name="QueryVersion" opcode="0">
- <reply>
- <field type="BOOL" name="shared_pixmaps" />
- <field type="CARD16" name="major_version" />
- <field type="CARD16" name="minor_version" />
- <field type="CARD16" name="uid" />
- <field type="CARD16" name="gid" />
- <field type="CARD8" name="pixmap_format" />
- <pad bytes="15" />
- </reply>
- </request>
-
- <request name="Attach" opcode="1">
- <field type="SEG" name="shmseg" />
- <field type="CARD32" name="shmid" />
- <field type="BOOL" name="read_only" />
- <pad bytes="3" />
- </request>
-
- <request name="Detach" opcode="2">
- <field type="SEG" name="shmseg" />
- </request>
-
- <request name="PutImage" opcode="3">
- <field type="DRAWABLE" name="drawable" />
- <field type="GCONTEXT" name="gc" />
- <field type="CARD16" name="total_width" />
- <field type="CARD16" name="total_height" />
- <field type="CARD16" name="src_x" />
- <field type="CARD16" name="src_y" />
- <field type="CARD16" name="src_width" />
- <field type="CARD16" name="src_height" />
- <field type="INT16" name="dst_x" />
- <field type="INT16" name="dst_y" />
- <field type="CARD8" name="depth" />
- <field type="CARD8" name="format" />
- <field type="CARD8" name="send_event" />
- <pad bytes="1" />
- <field type="SEG" name="shmseg" />
- <field type="CARD32" name="offset" />
- </request>
-
- <request name="GetImage" opcode="4">
- <field type="DRAWABLE" name="drawable" />
- <field type="INT16" name="x" />
- <field type="INT16" name="y" />
- <field type="CARD16" name="width" />
- <field type="CARD16" name="height" />
- <field type="CARD32" name="plane_mask" />
- <field type="CARD8" name="format" />
- <pad bytes="3" />
- <field type="SEG" name="shmseg" />
- <field type="CARD32" name="offset" />
- <reply>
- <field type="CARD8" name="depth" />
- <field type="VISUALID" name="visual" />
- <field type="CARD32" name="size" />
- </reply>
- </request>
-
- <request name="CreatePixmap" opcode="5">
- <field type="PIXMAP" name="pid" />
- <field type="DRAWABLE" name="drawable" />
- <field type="CARD16" name="width" />
- <field type="CARD16" name="height" />
- <field type="CARD8" name="depth" />
- <pad bytes="3" />
- <field type="SEG" name="shmseg" />
- <field type="CARD32" name="offset" />
- </request>
-</xcb>
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+Copyright (C) 2001-2004 Bart Massey, Jamey Sharp, and Josh Triplett.
+All Rights Reserved.
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
+ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the names of the authors or their
+institutions shall not be used in advertising or otherwise to promote the
+sale, use or other dealings in this Software without prior written
+authorization from the authors.
+-->
+<xcb header="shm" extension-xname="MIT-SHM" extension-name="Shm"
+ major-version="1" minor-version="1">
+ <import>xproto</import>
+
+ <xidtype name="SEG" />
+
+ <event name="Completion" number="0">
+ <pad bytes="1" />
+ <field type="DRAWABLE" name="drawable" />
+ <field type="CARD16" name="minor_event" />
+ <field type="BYTE" name="major_event" />
+ <pad bytes="1" />
+ <field type="SEG" name="shmseg" />
+ <field type="CARD32" name="offset" />
+ </event>
+
+ <errorcopy name="BadSeg" number="0" ref="Value" />
+
+ <request name="QueryVersion" opcode="0">
+ <reply>
+ <field type="BOOL" name="shared_pixmaps" />
+ <field type="CARD16" name="major_version" />
+ <field type="CARD16" name="minor_version" />
+ <field type="CARD16" name="uid" />
+ <field type="CARD16" name="gid" />
+ <field type="CARD8" name="pixmap_format" />
+ <pad bytes="15" />
+ </reply>
+ </request>
+
+ <request name="Attach" opcode="1">
+ <field type="SEG" name="shmseg" />
+ <field type="CARD32" name="shmid" />
+ <field type="BOOL" name="read_only" />
+ <pad bytes="3" />
+ </request>
+
+ <request name="Detach" opcode="2">
+ <field type="SEG" name="shmseg" />
+ </request>
+
+ <request name="PutImage" opcode="3">
+ <field type="DRAWABLE" name="drawable" />
+ <field type="GCONTEXT" name="gc" />
+ <field type="CARD16" name="total_width" />
+ <field type="CARD16" name="total_height" />
+ <field type="CARD16" name="src_x" />
+ <field type="CARD16" name="src_y" />
+ <field type="CARD16" name="src_width" />
+ <field type="CARD16" name="src_height" />
+ <field type="INT16" name="dst_x" />
+ <field type="INT16" name="dst_y" />
+ <field type="CARD8" name="depth" />
+ <field type="CARD8" name="format" />
+ <field type="CARD8" name="send_event" />
+ <pad bytes="1" />
+ <field type="SEG" name="shmseg" />
+ <field type="CARD32" name="offset" />
+ </request>
+
+ <request name="GetImage" opcode="4">
+ <field type="DRAWABLE" name="drawable" />
+ <field type="INT16" name="x" />
+ <field type="INT16" name="y" />
+ <field type="CARD16" name="width" />
+ <field type="CARD16" name="height" />
+ <field type="CARD32" name="plane_mask" />
+ <field type="CARD8" name="format" />
+ <pad bytes="3" />
+ <field type="SEG" name="shmseg" />
+ <field type="CARD32" name="offset" />
+ <reply>
+ <field type="CARD8" name="depth" />
+ <field type="VISUALID" name="visual" />
+ <field type="CARD32" name="size" />
+ </reply>
+ </request>
+
+ <request name="CreatePixmap" opcode="5">
+ <field type="PIXMAP" name="pid" />
+ <field type="DRAWABLE" name="drawable" />
+ <field type="CARD16" name="width" />
+ <field type="CARD16" name="height" />
+ <field type="CARD8" name="depth" />
+ <pad bytes="3" />
+ <field type="SEG" name="shmseg" />
+ <field type="CARD32" name="offset" />
+ </request>
+</xcb>
diff --git a/libxcb/xcb-proto/src/xc_misc.xml b/libxcb/xcb-proto/src/xc_misc.xml
index b9b21ca48..139ca22f0 100644
--- a/libxcb/xcb-proto/src/xc_misc.xml
+++ b/libxcb/xcb-proto/src/xc_misc.xml
@@ -1,38 +1,38 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-Copyright (C) 2004 Mikko Torni and Josh Triplett.
-All Rights Reserved. See the file COPYING in this directory
-for licensing information.
--->
-<xcb header="xc_misc" extension-xname="XC-MISC" extension-name="XCMisc"
- extension-multiword="true" major-version="1" minor-version="1">
- <request name="GetVersion" opcode="0">
- <field type="CARD16" name="client_major_version" />
- <field type="CARD16" name="client_minor_version" />
- <reply>
- <pad bytes="1" />
- <field type="CARD16" name="server_major_version" />
- <field type="CARD16" name="server_minor_version" />
- </reply>
- </request>
-
- <request name="GetXIDRange" opcode="1">
- <reply>
- <pad bytes="1" />
- <field type="CARD32" name="start_id" />
- <field type="CARD32" name="count" />
- </reply>
- </request>
-
- <request name="GetXIDList" opcode="2">
- <field type="CARD32" name="count" />
- <reply>
- <pad bytes="1" />
- <field type="CARD32" name="ids_len" />
- <pad bytes="20" />
- <list type="CARD32" name="ids">
- <fieldref>ids_len</fieldref>
- </list>
- </reply>
- </request>
-</xcb>
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+Copyright (C) 2004 Mikko Torni and Josh Triplett.
+All Rights Reserved. See the file COPYING in this directory
+for licensing information.
+-->
+<xcb header="xc_misc" extension-xname="XC-MISC" extension-name="XCMisc"
+ extension-multiword="true" major-version="1" minor-version="1">
+ <request name="GetVersion" opcode="0">
+ <field type="CARD16" name="client_major_version" />
+ <field type="CARD16" name="client_minor_version" />
+ <reply>
+ <pad bytes="1" />
+ <field type="CARD16" name="server_major_version" />
+ <field type="CARD16" name="server_minor_version" />
+ </reply>
+ </request>
+
+ <request name="GetXIDRange" opcode="1">
+ <reply>
+ <pad bytes="1" />
+ <field type="CARD32" name="start_id" />
+ <field type="CARD32" name="count" />
+ </reply>
+ </request>
+
+ <request name="GetXIDList" opcode="2">
+ <field type="CARD32" name="count" />
+ <reply>
+ <pad bytes="1" />
+ <field type="CARD32" name="ids_len" />
+ <pad bytes="20" />
+ <list type="CARD32" name="ids">
+ <fieldref>ids_len</fieldref>
+ </list>
+ </reply>
+ </request>
+</xcb>
diff --git a/libxcb/xcb-proto/src/xevie.xml b/libxcb/xcb-proto/src/xevie.xml
index a88f1590b..222b412e4 100644
--- a/libxcb/xcb-proto/src/xevie.xml
+++ b/libxcb/xcb-proto/src/xevie.xml
@@ -1,85 +1,85 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-Copyright (C) 2004 Josh Triplett. All Rights Reserved.
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
-ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the names of the authors or their
-institutions shall not be used in advertising or otherwise to promote the
-sale, use or other dealings in this Software without prior written
-authorization from the authors.
--->
-<!-- This file describes version 1 of XEVIE. -->
-<xcb header="xevie" extension-xname="XEVIE" extension-name="Xevie"
- major-version="1" minor-version="0">
- <request name="QueryVersion" opcode="0">
- <field type="CARD16" name="client_major_version" />
- <field type="CARD16" name="client_minor_version" />
- <reply>
- <pad bytes="1" />
- <field type="CARD16" name="server_major_version" />
- <field type="CARD16" name="server_minor_version" />
- <pad bytes="20" />
- </reply>
- </request>
-
- <request name="Start" opcode="1">
- <field type="CARD32" name="screen" />
- <reply>
- <pad bytes="1" />
- <pad bytes="24" />
- </reply>
- </request>
-
- <request name="End" opcode="2">
- <field type="CARD32" name="cmap" />
- <reply>
- <pad bytes="1" />
- <pad bytes="24" />
- </reply>
- </request>
-
- <enum name="Datatype">
- <item name="Unmodified" />
- <item name="Modified" />
- </enum>
-
- <!-- The Send request needs to send an arbitrary Event; this type is used
- to reserve the necessary structure size. -->
- <struct name="Event">
- <pad bytes="32" />
- </struct>
-
- <request name="Send" opcode="3">
- <field type="Event" name="event" />
- <field type="CARD32" name="data_type" /> <!-- Datatype -->
- <pad bytes="64" />
- <reply>
- <pad bytes="1" />
- <pad bytes="24" />
- </reply>
- </request>
-
- <request name="SelectInput" opcode="4">
- <field type="CARD32" name="event_mask" />
- <reply>
- <pad bytes="1" />
- <pad bytes="24" />
- </reply>
- </request>
-</xcb>
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+Copyright (C) 2004 Josh Triplett. All Rights Reserved.
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
+ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the names of the authors or their
+institutions shall not be used in advertising or otherwise to promote the
+sale, use or other dealings in this Software without prior written
+authorization from the authors.
+-->
+<!-- This file describes version 1 of XEVIE. -->
+<xcb header="xevie" extension-xname="XEVIE" extension-name="Xevie"
+ major-version="1" minor-version="0">
+ <request name="QueryVersion" opcode="0">
+ <field type="CARD16" name="client_major_version" />
+ <field type="CARD16" name="client_minor_version" />
+ <reply>
+ <pad bytes="1" />
+ <field type="CARD16" name="server_major_version" />
+ <field type="CARD16" name="server_minor_version" />
+ <pad bytes="20" />
+ </reply>
+ </request>
+
+ <request name="Start" opcode="1">
+ <field type="CARD32" name="screen" />
+ <reply>
+ <pad bytes="1" />
+ <pad bytes="24" />
+ </reply>
+ </request>
+
+ <request name="End" opcode="2">
+ <field type="CARD32" name="cmap" />
+ <reply>
+ <pad bytes="1" />
+ <pad bytes="24" />
+ </reply>
+ </request>
+
+ <enum name="Datatype">
+ <item name="Unmodified" />
+ <item name="Modified" />
+ </enum>
+
+ <!-- The Send request needs to send an arbitrary Event; this type is used
+ to reserve the necessary structure size. -->
+ <struct name="Event">
+ <pad bytes="32" />
+ </struct>
+
+ <request name="Send" opcode="3">
+ <field type="Event" name="event" />
+ <field type="CARD32" name="data_type" /> <!-- Datatype -->
+ <pad bytes="64" />
+ <reply>
+ <pad bytes="1" />
+ <pad bytes="24" />
+ </reply>
+ </request>
+
+ <request name="SelectInput" opcode="4">
+ <field type="CARD32" name="event_mask" />
+ <reply>
+ <pad bytes="1" />
+ <pad bytes="24" />
+ </reply>
+ </request>
+</xcb>
diff --git a/libxcb/xcb-proto/src/xf86dri.xml b/libxcb/xcb-proto/src/xf86dri.xml
index 003728dd8..5bfc5727a 100644
--- a/libxcb/xcb-proto/src/xf86dri.xml
+++ b/libxcb/xcb-proto/src/xf86dri.xml
@@ -1,172 +1,172 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-Copyright (C) 2005 Jeremy Kolb.
-All Rights Reserved.
-
-Permission is hereby granted, free of charge, to any person ob/Sintaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
-ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the names of the authors or their
-institutions shall not be used in advertising or otherwise to promote the
-sale, use or other dealings in this Software without prior written
-authorization from the authors.
--->
-
-<xcb header="xf86dri" extension-xname="XFree86-DRI" extension-name="XF86Dri"
- major-version="4" minor-version="1">
-
- <!-- Using http://dri.sourceforge.net/doc/dri_extensions_low_level.txt -->
-
- <!-- Types -->
-
- <struct name="DrmClipRect">
- <field type="INT16" name="x1" />
- <field type="INT16" name="y1" />
- <field type="INT16" name="x2" />
- <field type="INT16" name="x3" />
- </struct>
-
- <!-- Requests -->
- <request name="QueryVersion" opcode="0">
- <reply>
- <pad bytes="1" />
- <field type="CARD16" name="dri_major_version" />
- <field type="CARD16" name="dri_minor_version" />
- <field type="CARD32" name="dri_minor_patch" />
- </reply>
- </request>
-
- <request name="QueryDirectRenderingCapable" opcode="1">
- <field type="CARD32" name="screen" />
- <reply>
- <pad bytes="1" />
- <field type="BOOL" name="is_capable" />
- </reply>
- </request>
-
- <request name="OpenConnection" opcode="2">
- <field type="CARD32" name="screen" />
- <reply>
- <pad bytes="1" />
- <field type="CARD32" name="sarea_handle_low" />
- <field type="CARD32" name="sarea_handle_high" />
- <field type="CARD32" name="bus_id_len" />
- <pad bytes="12" />
- <list type="char" name="bus_id">
- <fieldref>bus_id_len</fieldref>
- </list>
- </reply>
- </request>
-
- <request name="CloseConnection" opcode="3">
- <field type="CARD32" name="screen" />
- </request>
-
- <request name="GetClientDriverName" opcode="4">
- <field type="CARD32" name="screen" />
- <reply>
- <pad bytes="1" />
- <field type="CARD32" name="client_driver_major_version" />
- <field type="CARD32" name="client_driver_minor_version" />
- <field type="CARD32" name="client_driver_patch_version" />
- <field type="CARD32" name="client_driver_name_len" />
- <pad bytes="8" />
- <list type="char" name="client_driver_name">
- <fieldref>client_driver_name_len</fieldref>
- </list>
- </reply>
- </request>
-
- <request name="CreateContext" opcode="5">
- <field type="CARD32" name="screen" />
- <field type="CARD32" name="visual" />
- <field type="CARD32" name="context" />
- <reply>
- <pad bytes="1" />
- <field type="CARD32" name="hw_context" />
- </reply>
- </request>
-
- <request name="DestroyContext" opcode="6">
- <field type="CARD32" name="screen" />
- <field type="CARD32" name="context" />
- </request>
-
- <request name="CreateDrawable" opcode="7">
- <field type="CARD32" name="screen" />
- <field type="CARD32" name="drawable" />
- <reply>
- <pad bytes="1" />
- <field type="CARD32" name="hw_drawable_handle" />
- </reply>
- </request>
-
- <request name="DestroyDrawable" opcode="8">
- <field type="CARD32" name="screen" />
- <field type="CARD32" name="drawable" />
- </request>
-
- <request name="GetDrawableInfo" opcode="9">
- <field type="CARD32" name="screen" />
- <field type="CARD32" name="drawable" />
- <reply>
- <pad bytes="1" />
- <field type="CARD32" name="drawable_table_index" />
- <field type="CARD32" name="drawable_table_stamp" />
- <field type="INT16" name="drawable_origin_X" />
- <field type="INT16" name="drawable_origin_Y" />
- <field type="INT16" name="drawable_size_W" />
- <field type="INT16" name="drawable_size_H" />
- <field type="CARD32" name="num_clip_rects" />
- <field type="INT16" name="back_x" />
- <field type="INT16" name="back_y" />
- <field type="CARD32" name="num_back_clip_rects" />
- <list type="DrmClipRect" name="clip_rects">
- <fieldref>num_clip_rects</fieldref>
- </list>
- <list type="DrmClipRect" name="back_clip_rects">
- <fieldref>num_back_clip_rects</fieldref>
- </list>
- </reply>
- </request>
-
- <request name="GetDeviceInfo" opcode="10">
- <field type="CARD32" name="screen" />
- <reply>
- <pad bytes="1" />
- <field type="CARD32" name="framebuffer_handle_low" />
- <field type="CARD32" name="framebuffer_handle_high" />
- <field type="CARD32" name="framebuffer_origin_offset" />
- <field type="CARD32" name="framebuffer_size" />
- <field type="CARD32" name="framebuffer_stride" />
- <field type="CARD32" name="device_private_size" />
- <list type="CARD32" name="device_private">
- <fieldref>device_private_size</fieldref>
- </list>
- </reply>
- </request>
-
- <!-- Not in this doc, but specified in Mesa/src/glx/x11/xf86dri.h -->
- <request name="AuthConnection" opcode="11">
- <field type="CARD32" name="screen" />
- <field type="CARD32" name="magic" />
- <reply>
- <pad bytes="1" />
- <field type="CARD32" name="authenticated" />
- </reply>
- </request>
-</xcb>
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+Copyright (C) 2005 Jeremy Kolb.
+All Rights Reserved.
+
+Permission is hereby granted, free of charge, to any person ob/Sintaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
+ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the names of the authors or their
+institutions shall not be used in advertising or otherwise to promote the
+sale, use or other dealings in this Software without prior written
+authorization from the authors.
+-->
+
+<xcb header="xf86dri" extension-xname="XFree86-DRI" extension-name="XF86Dri"
+ major-version="4" minor-version="1">
+
+ <!-- Using http://dri.sourceforge.net/doc/dri_extensions_low_level.txt -->
+
+ <!-- Types -->
+
+ <struct name="DrmClipRect">
+ <field type="INT16" name="x1" />
+ <field type="INT16" name="y1" />
+ <field type="INT16" name="x2" />
+ <field type="INT16" name="x3" />
+ </struct>
+
+ <!-- Requests -->
+ <request name="QueryVersion" opcode="0">
+ <reply>
+ <pad bytes="1" />
+ <field type="CARD16" name="dri_major_version" />
+ <field type="CARD16" name="dri_minor_version" />
+ <field type="CARD32" name="dri_minor_patch" />
+ </reply>
+ </request>
+
+ <request name="QueryDirectRenderingCapable" opcode="1">
+ <field type="CARD32" name="screen" />
+ <reply>
+ <pad bytes="1" />
+ <field type="BOOL" name="is_capable" />
+ </reply>
+ </request>
+
+ <request name="OpenConnection" opcode="2">
+ <field type="CARD32" name="screen" />
+ <reply>
+ <pad bytes="1" />
+ <field type="CARD32" name="sarea_handle_low" />
+ <field type="CARD32" name="sarea_handle_high" />
+ <field type="CARD32" name="bus_id_len" />
+ <pad bytes="12" />
+ <list type="char" name="bus_id">
+ <fieldref>bus_id_len</fieldref>
+ </list>
+ </reply>
+ </request>
+
+ <request name="CloseConnection" opcode="3">
+ <field type="CARD32" name="screen" />
+ </request>
+
+ <request name="GetClientDriverName" opcode="4">
+ <field type="CARD32" name="screen" />
+ <reply>
+ <pad bytes="1" />
+ <field type="CARD32" name="client_driver_major_version" />
+ <field type="CARD32" name="client_driver_minor_version" />
+ <field type="CARD32" name="client_driver_patch_version" />
+ <field type="CARD32" name="client_driver_name_len" />
+ <pad bytes="8" />
+ <list type="char" name="client_driver_name">
+ <fieldref>client_driver_name_len</fieldref>
+ </list>
+ </reply>
+ </request>
+
+ <request name="CreateContext" opcode="5">
+ <field type="CARD32" name="screen" />
+ <field type="CARD32" name="visual" />
+ <field type="CARD32" name="context" />
+ <reply>
+ <pad bytes="1" />
+ <field type="CARD32" name="hw_context" />
+ </reply>
+ </request>
+
+ <request name="DestroyContext" opcode="6">
+ <field type="CARD32" name="screen" />
+ <field type="CARD32" name="context" />
+ </request>
+
+ <request name="CreateDrawable" opcode="7">
+ <field type="CARD32" name="screen" />
+ <field type="CARD32" name="drawable" />
+ <reply>
+ <pad bytes="1" />
+ <field type="CARD32" name="hw_drawable_handle" />
+ </reply>
+ </request>
+
+ <request name="DestroyDrawable" opcode="8">
+ <field type="CARD32" name="screen" />
+ <field type="CARD32" name="drawable" />
+ </request>
+
+ <request name="GetDrawableInfo" opcode="9">
+ <field type="CARD32" name="screen" />
+ <field type="CARD32" name="drawable" />
+ <reply>
+ <pad bytes="1" />
+ <field type="CARD32" name="drawable_table_index" />
+ <field type="CARD32" name="drawable_table_stamp" />
+ <field type="INT16" name="drawable_origin_X" />
+ <field type="INT16" name="drawable_origin_Y" />
+ <field type="INT16" name="drawable_size_W" />
+ <field type="INT16" name="drawable_size_H" />
+ <field type="CARD32" name="num_clip_rects" />
+ <field type="INT16" name="back_x" />
+ <field type="INT16" name="back_y" />
+ <field type="CARD32" name="num_back_clip_rects" />
+ <list type="DrmClipRect" name="clip_rects">
+ <fieldref>num_clip_rects</fieldref>
+ </list>
+ <list type="DrmClipRect" name="back_clip_rects">
+ <fieldref>num_back_clip_rects</fieldref>
+ </list>
+ </reply>
+ </request>
+
+ <request name="GetDeviceInfo" opcode="10">
+ <field type="CARD32" name="screen" />
+ <reply>
+ <pad bytes="1" />
+ <field type="CARD32" name="framebuffer_handle_low" />
+ <field type="CARD32" name="framebuffer_handle_high" />
+ <field type="CARD32" name="framebuffer_origin_offset" />
+ <field type="CARD32" name="framebuffer_size" />
+ <field type="CARD32" name="framebuffer_stride" />
+ <field type="CARD32" name="device_private_size" />
+ <list type="CARD32" name="device_private">
+ <fieldref>device_private_size</fieldref>
+ </list>
+ </reply>
+ </request>
+
+ <!-- Not in this doc, but specified in Mesa/src/glx/x11/xf86dri.h -->
+ <request name="AuthConnection" opcode="11">
+ <field type="CARD32" name="screen" />
+ <field type="CARD32" name="magic" />
+ <reply>
+ <pad bytes="1" />
+ <field type="CARD32" name="authenticated" />
+ </reply>
+ </request>
+</xcb>
diff --git a/libxcb/xcb-proto/src/xf86vidmode.xml b/libxcb/xcb-proto/src/xf86vidmode.xml
index 4a193f58d..9dacaef41 100644
--- a/libxcb/xcb-proto/src/xf86vidmode.xml
+++ b/libxcb/xcb-proto/src/xf86vidmode.xml
@@ -1,478 +1,478 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-Copyright (C) 2009 Open Text Corporation. All Rights Reserved.
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
-ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the names of the authors or their
-institutions shall not be used in advertising or otherwise to promote the
-sale, use or other dealings in this Software without prior written
-authorization from the authors.
--->
-
-<xcb header="xf86vidmode" extension-xname="XFree86-VidModeExtension" extension-name="XF86VidMode"
- major-version="2" minor-version="2">
-
- <!-- In places where there are multiple versions of the protocol, this
- describes version 2.2. If you do not call xcb_xf86vidmode_set_client_version()
- then some requests may fail and some replies may not be what you expect. -->
-
- <typedef oldname="CARD32" newname="SYNCRANGE" /> <!-- Min and Max fixed-decimal-point values -->
- <typedef oldname="CARD32" newname="DOTCLOCK" /> <!-- A single fixed-decimal-point value -->
-
- <enum name="ModeFlag">
- <item name="Positive_HSync"> <bit>0</bit></item>
- <item name="Negative_HSync"> <bit>1</bit></item>
- <item name="Positive_VSync"> <bit>2</bit></item>
- <item name="Negative_VSync"> <bit>3</bit></item>
- <item name="Interlace"> <bit>4</bit></item>
- <item name="Composite_Sync"> <bit>5</bit></item>
- <item name="Positive_CSync"> <bit>6</bit></item>
- <item name="Negative_CSync"> <bit>7</bit></item>
- <item name="HSkew"> <bit>8</bit></item>
- <item name="Broadcast"> <bit>9</bit></item>
- <item name="Pixmux"> <bit>10</bit></item>
- <item name="Double_Clock"> <bit>11</bit></item>
- <item name="Half_Clock"> <bit>12</bit></item>
- </enum>
-
- <enum name="ClockFlag">
- <item name="Programable"> <bit>0</bit></item>
- </enum>
-
- <enum name="Permission">
- <item name="Read"> <bit>0</bit></item>
- <item name="Write"> <bit>1</bit></item>
- </enum>
-
- <struct name="ModeInfo">
- <field type="DOTCLOCK" name="dotclock" />
- <field type="CARD16" name= "hdisplay" />
- <field type="CARD16" name= "hsyncstart" />
- <field type="CARD16" name= "hsyncend" />
- <field type="CARD16" name= "htotal" />
- <field type="CARD32" name= "hskew" />
- <field type="CARD16" name= "vdisplay" />
- <field type="CARD16" name= "vsyncstart" />
- <field type="CARD16" name= "vsyncend" />
- <field type="CARD16" name= "vtotal" />
- <pad bytes="4" />
- <field type="CARD32" name="flags" mask="ModeFlag" />
- <pad bytes="12" />
- <field type="CARD32" name="privsize" />
- </struct>
-
- <request name="QueryVersion" opcode="0">
- <reply>
- <pad bytes="1" />
- <field type="CARD16" name="major_version" />
- <field type="CARD16" name="minor_version" />
- </reply>
- </request>
-
- <request name="GetModeLine" opcode="1">
- <field type="CARD16" name="screen" />
- <pad bytes="2" />
- <reply>
- <pad bytes="1" />
- <field type="DOTCLOCK" name="dotclock" />
- <field type="CARD16" name= "hdisplay" />
- <field type="CARD16" name= "hsyncstart" />
- <field type="CARD16" name= "hsyncend" />
- <field type="CARD16" name= "htotal" />
- <field type="CARD16" name= "hskew" />
- <field type="CARD16" name= "vdisplay" />
- <field type="CARD16" name= "vsyncstart" />
- <field type="CARD16" name= "vsyncend" />
- <field type="CARD16" name= "vtotal" />
- <pad bytes="2" />
- <field type="CARD32" name="flags" mask="ModeFlag" />
- <pad bytes="12" />
- <field type="CARD32" name="privsize" />
- <list type="CARD8" name="private">
- <fieldref>privsize</fieldref>
- </list>
- </reply>
- </request>
-
- <request name="ModModeLine" opcode="2">
- <field type="CARD32" name="screen" />
- <field type="CARD16" name= "hdisplay" />
- <field type="CARD16" name= "hsyncstart" />
- <field type="CARD16" name= "hsyncend" />
- <field type="CARD16" name= "htotal" />
- <field type="CARD16" name= "hskew" />
- <field type="CARD16" name= "vdisplay" />
- <field type="CARD16" name= "vsyncstart" />
- <field type="CARD16" name= "vsyncend" />
- <field type="CARD16" name= "vtotal" />
- <pad bytes="2" />
- <field type="CARD32" name="flags" mask="ModeFlag" />
- <pad bytes="12" />
- <field type="CARD32" name="privsize" />
- <list type="CARD8" name="private">
- <fieldref>privsize</fieldref>
- </list>
- </request>
-
- <request name="SwitchMode" opcode="3">
- <field type="CARD16" name="screen" />
- <field type="CARD16" name="zoom" />
- </request>
-
- <request name="GetMonitor" opcode="4">
- <field type="CARD16" name="screen" />
- <pad bytes="2" />
- <reply>
- <pad bytes="1" />
- <field type="CARD8" name="vendor_length" />
- <field type="CARD8" name="model_length" />
- <field type="CARD8" name="num_hsync" />
- <field type="CARD8" name="num_vsync" />
- <pad bytes="20" />
- <list type="SYNCRANGE" name="hsync">
- <fieldref>num_hsync</fieldref>
- </list>
- <list type="SYNCRANGE" name="vsync">
- <fieldref>num_vsync</fieldref>
- </list>
- <list type="char" name="vendor">
- <fieldref>vendor_length</fieldref>
- </list>
- <list type="void" name="alignment_pad">
- <op op="-">
- <op op="&amp;">
- <op op="+">
- <fieldref>vendor_length</fieldref>
- <value> 3 </value>
- </op>
- <unop op="~">
- <value>3</value>
- </unop>
- </op>
- <fieldref>vendor_length</fieldref>
- </op>
- </list>
- <list type="char" name="model">
- <fieldref>model_length</fieldref>
- </list>
- </reply>
- </request>
-
- <request name="LockModeSwitch" opcode="5">
- <field type="CARD16" name="screen" />
- <field type="CARD16" name="lock" />
- </request>
-
- <request name="GetAllModeLines" opcode="6">
- <field type="CARD16" name="screen" />
- <pad bytes="2" />
- <reply>
- <pad bytes="1" />
- <field type="CARD32" name="modecount" />
- <pad bytes="20" />
- <list type="ModeInfo" name="modeinfo">
- <fieldref>modecount</fieldref>
- </list>
- </reply>
- </request>
-
- <request name="AddModeLine" opcode="7">
- <field type="CARD32" name="screen" />
- <field type="DOTCLOCK" name="dotclock" />
- <field type="CARD16" name= "hdisplay" />
- <field type="CARD16" name= "hsyncstart" />
- <field type="CARD16" name= "hsyncend" />
- <field type="CARD16" name= "htotal" />
- <field type="CARD16" name= "hskew" />
- <field type="CARD16" name= "vdisplay" />
- <field type="CARD16" name= "vsyncstart" />
- <field type="CARD16" name= "vsyncend" />
- <field type="CARD16" name= "vtotal" />
- <pad bytes="2" />
- <field type="CARD32" name="flags" mask="ModeFlag" />
- <pad bytes="12" />
- <field type="CARD32" name="privsize" />
- <field type="DOTCLOCK" name="after_dotclock" />
- <field type="CARD16" name= "after_hdisplay" />
- <field type="CARD16" name= "after_hsyncstart" />
- <field type="CARD16" name= "after_hsyncend" />
- <field type="CARD16" name= "after_htotal" />
- <field type="CARD16" name= "after_hskew" />
- <field type="CARD16" name= "after_vdisplay" />
- <field type="CARD16" name= "after_vsyncstart" />
- <field type="CARD16" name= "after_vsyncend" />
- <field type="CARD16" name= "after_vtotal" />
- <pad bytes="2" />
- <field type="CARD32" name="after_flags" mask="ModeFlag" />
- <pad bytes="12" />
- <list type="CARD8" name="private">
- <fieldref>privsize</fieldref>
- </list>
- </request>
-
- <request name="DeleteModeLine" opcode="8">
- <field type="CARD32" name="screen" />
- <field type="DOTCLOCK" name="dotclock" />
- <field type="CARD16" name= "hdisplay" />
- <field type="CARD16" name= "hsyncstart" />
- <field type="CARD16" name= "hsyncend" />
- <field type="CARD16" name= "htotal" />
- <field type="CARD16" name= "hskew" />
- <field type="CARD16" name= "vdisplay" />
- <field type="CARD16" name= "vsyncstart" />
- <field type="CARD16" name= "vsyncend" />
- <field type="CARD16" name= "vtotal" />
- <pad bytes="2" />
- <field type="CARD32" name="flags" mask="ModeFlag" />
- <pad bytes="12" />
- <field type="CARD32" name="privsize" />
- <list type="CARD8" name="private">
- <fieldref>privsize</fieldref>
- </list>
- </request>
-
- <request name="ValidateModeLine" opcode="9">
- <field type="CARD32" name="screen" />
- <field type="DOTCLOCK" name="dotclock" />
- <field type="CARD16" name= "hdisplay" />
- <field type="CARD16" name= "hsyncstart" />
- <field type="CARD16" name= "hsyncend" />
- <field type="CARD16" name= "htotal" />
- <field type="CARD16" name= "hskew" />
- <field type="CARD16" name= "vdisplay" />
- <field type="CARD16" name= "vsyncstart" />
- <field type="CARD16" name= "vsyncend" />
- <field type="CARD16" name= "vtotal" />
- <pad bytes="2" />
- <field type="CARD32" name="flags" mask="ModeFlag" />
- <pad bytes="12" />
- <field type="CARD32" name="privsize" />
- <list type="CARD8" name="private">
- <fieldref>privsize</fieldref>
- </list>
- <reply>
- <pad bytes="1" />
- <field type="CARD32" name="status" />
- <pad bytes="20" />
- </reply>
- </request>
-
- <request name="SwitchToMode" opcode="10">
- <field type="CARD32" name="screen" />
- <field type="DOTCLOCK" name="dotclock" />
- <field type="CARD16" name= "hdisplay" />
- <field type="CARD16" name= "hsyncstart" />
- <field type="CARD16" name= "hsyncend" />
- <field type="CARD16" name= "htotal" />
- <field type="CARD16" name= "hskew" />
- <field type="CARD16" name= "vdisplay" />
- <field type="CARD16" name= "vsyncstart" />
- <field type="CARD16" name= "vsyncend" />
- <field type="CARD16" name= "vtotal" />
- <pad bytes="2" />
- <field type="CARD32" name="flags" mask="ModeFlag" />
- <pad bytes="12" />
- <field type="CARD32" name="privsize" />
- <list type="CARD8" name="private">
- <fieldref>privsize</fieldref>
- </list>
- </request>
-
- <request name="GetViewPort" opcode="11">
- <field type="CARD16" name="screen" />
- <pad bytes="2" />
- <reply>
- <pad bytes="1" />
- <field type="CARD32" name="x" />
- <field type="CARD32" name="y" />
- <pad bytes="16" />
- </reply>
- </request>
-
- <request name="SetViewPort" opcode="12">
- <field type="CARD16" name="screen" />
- <pad bytes="2" />
- <field type="CARD32" name="x" />
- <field type="CARD32" name="y" />
- </request>
-
- <!-- new for version 2.x -->
- <request name="GetDotClocks" opcode="13">
- <field type="CARD16" name="screen" />
- <pad bytes="2" />
- <reply>
- <pad bytes="1" />
- <field type="CARD32" name="flags" mask="ClockFlag" />
- <field type="CARD32" name="clocks" />
- <field type="CARD32" name="maxclocks" />
- <pad bytes="12" />
- <list type="CARD32" name="clock">
- <!-- Only if flags does not include Programable:
- (1 - (flags & 1)) * clocks
- -->
- <op op="*">
- <op op = "-">
- <value>1</value>
- <op op="&amp;">
- <fieldref>flags</fieldref>
- <value>1</value>
- </op>
- </op>
- <fieldref>clocks</fieldref>
- </op>
- </list>
- </reply>
- </request>
-
- <request name="SetClientVersion" opcode="14">
- <field type="CARD16" name="major" />
- <field type="CARD16" name="minor" />
- </request>
-
- <request name="SetGamma" opcode="15">
- <field type="CARD16" name="screen" />
- <pad bytes="2" />
- <field type="CARD32" name="red" />
- <field type="CARD32" name="green" />
- <field type="CARD32" name="blue" />
- <pad bytes="12" />
- </request>
-
- <request name="GetGamma" opcode="16">
- <field type="CARD16" name="screen" />
- <pad bytes="26" />
- <reply>
- <pad bytes="1" />
- <field type="CARD32" name="red" />
- <field type="CARD32" name="green" />
- <field type="CARD32" name="blue" />
- <pad bytes="12" />
- </reply>
- </request>
-
- <request name="GetGammaRamp" opcode="17">
- <field type="CARD16" name="screen" />
- <field type="CARD16" name="size" />
- <reply>
- <pad bytes="1" />
- <field type="CARD16" name="size" />
- <pad bytes="22" />
- <list type="CARD16" name="red">
- <op op="&amp;">
- <op op = "+">
- <fieldref>size</fieldref>
- <value>1</value>
- </op>
- <unop op="~">
- <value>1</value>
- </unop>
- </op>
- </list>
- <list type="CARD16" name="green">
- <op op="&amp;">
- <op op = "+">
- <fieldref>size</fieldref>
- <value>1</value>
- </op>
- <unop op="~">
- <value>1</value>
- </unop>
- </op>
- </list>
- <list type="CARD16" name="blue">
- <op op="&amp;">
- <op op = "+">
- <fieldref>size</fieldref>
- <value>1</value>
- </op>
- <unop op="~">
- <value>1</value>
- </unop>
- </op>
- </list>
- </reply>
- </request>
-
- <request name="SetGammaRamp" opcode="18">
- <field type="CARD16" name="screen" />
- <field type="CARD16" name="size" />
- <list type="CARD16" name="red">
- <op op="&amp;">
- <op op = "+">
- <fieldref>size</fieldref>
- <value>1</value>
- </op>
- <unop op="~">
- <value>1</value>
- </unop>
- </op>
- </list>
- <list type="CARD16" name="green">
- <op op="&amp;">
- <op op = "+">
- <fieldref>size</fieldref>
- <value>1</value>
- </op>
- <unop op="~">
- <value>1</value>
- </unop>
- </op>
- </list>
- <list type="CARD16" name="blue">
- <op op="&amp;">
- <op op = "+">
- <fieldref>size</fieldref>
- <value>1</value>
- </op>
- <unop op="~">
- <value>1</value>
- </unop>
- </op>
- </list>
- </request>
-
- <request name="GetGammaRampSize" opcode="19">
- <field type="CARD16" name="screen" />
- <pad bytes="2" />
- <reply>
- <pad bytes="1" />
- <field type="CARD16" name="size" />
- <pad bytes="22" />
- </reply>
- </request>
-
- <request name="GetPermissions" opcode="20">
- <field type="CARD16" name="screen" />
- <pad bytes="2" />
- <reply>
- <pad bytes="1" />
- <field type="CARD32" name="permissions" mask="Permission" />
- <pad bytes="20" />
- </reply>
- </request>
-
- <error name="BadClock" number="0" />
- <error name="BadHTimings" number="1" />
- <error name="BadVTimings" number="2" />
- <error name="ModeUnsuitable" number="3" />
- <error name="ExtensionDisabled" number="4" />
- <error name="ClientNotLocal" number="5" />
- <error name="ZoomLocked" number="6" />
-
-</xcb>
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+Copyright (C) 2009 Open Text Corporation. All Rights Reserved.
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
+ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the names of the authors or their
+institutions shall not be used in advertising or otherwise to promote the
+sale, use or other dealings in this Software without prior written
+authorization from the authors.
+-->
+
+<xcb header="xf86vidmode" extension-xname="XFree86-VidModeExtension" extension-name="XF86VidMode"
+ major-version="2" minor-version="2">
+
+ <!-- In places where there are multiple versions of the protocol, this
+ describes version 2.2. If you do not call xcb_xf86vidmode_set_client_version()
+ then some requests may fail and some replies may not be what you expect. -->
+
+ <typedef oldname="CARD32" newname="SYNCRANGE" /> <!-- Min and Max fixed-decimal-point values -->
+ <typedef oldname="CARD32" newname="DOTCLOCK" /> <!-- A single fixed-decimal-point value -->
+
+ <enum name="ModeFlag">
+ <item name="Positive_HSync"> <bit>0</bit></item>
+ <item name="Negative_HSync"> <bit>1</bit></item>
+ <item name="Positive_VSync"> <bit>2</bit></item>
+ <item name="Negative_VSync"> <bit>3</bit></item>
+ <item name="Interlace"> <bit>4</bit></item>
+ <item name="Composite_Sync"> <bit>5</bit></item>
+ <item name="Positive_CSync"> <bit>6</bit></item>
+ <item name="Negative_CSync"> <bit>7</bit></item>
+ <item name="HSkew"> <bit>8</bit></item>
+ <item name="Broadcast"> <bit>9</bit></item>
+ <item name="Pixmux"> <bit>10</bit></item>
+ <item name="Double_Clock"> <bit>11</bit></item>
+ <item name="Half_Clock"> <bit>12</bit></item>
+ </enum>
+
+ <enum name="ClockFlag">
+ <item name="Programable"> <bit>0</bit></item>
+ </enum>
+
+ <enum name="Permission">
+ <item name="Read"> <bit>0</bit></item>
+ <item name="Write"> <bit>1</bit></item>
+ </enum>
+
+ <struct name="ModeInfo">
+ <field type="DOTCLOCK" name="dotclock" />
+ <field type="CARD16" name= "hdisplay" />
+ <field type="CARD16" name= "hsyncstart" />
+ <field type="CARD16" name= "hsyncend" />
+ <field type="CARD16" name= "htotal" />
+ <field type="CARD32" name= "hskew" />
+ <field type="CARD16" name= "vdisplay" />
+ <field type="CARD16" name= "vsyncstart" />
+ <field type="CARD16" name= "vsyncend" />
+ <field type="CARD16" name= "vtotal" />
+ <pad bytes="4" />
+ <field type="CARD32" name="flags" mask="ModeFlag" />
+ <pad bytes="12" />
+ <field type="CARD32" name="privsize" />
+ </struct>
+
+ <request name="QueryVersion" opcode="0">
+ <reply>
+ <pad bytes="1" />
+ <field type="CARD16" name="major_version" />
+ <field type="CARD16" name="minor_version" />
+ </reply>
+ </request>
+
+ <request name="GetModeLine" opcode="1">
+ <field type="CARD16" name="screen" />
+ <pad bytes="2" />
+ <reply>
+ <pad bytes="1" />
+ <field type="DOTCLOCK" name="dotclock" />
+ <field type="CARD16" name= "hdisplay" />
+ <field type="CARD16" name= "hsyncstart" />
+ <field type="CARD16" name= "hsyncend" />
+ <field type="CARD16" name= "htotal" />
+ <field type="CARD16" name= "hskew" />
+ <field type="CARD16" name= "vdisplay" />
+ <field type="CARD16" name= "vsyncstart" />
+ <field type="CARD16" name= "vsyncend" />
+ <field type="CARD16" name= "vtotal" />
+ <pad bytes="2" />
+ <field type="CARD32" name="flags" mask="ModeFlag" />
+ <pad bytes="12" />
+ <field type="CARD32" name="privsize" />
+ <list type="CARD8" name="private">
+ <fieldref>privsize</fieldref>
+ </list>
+ </reply>
+ </request>
+
+ <request name="ModModeLine" opcode="2">
+ <field type="CARD32" name="screen" />
+ <field type="CARD16" name= "hdisplay" />
+ <field type="CARD16" name= "hsyncstart" />
+ <field type="CARD16" name= "hsyncend" />
+ <field type="CARD16" name= "htotal" />
+ <field type="CARD16" name= "hskew" />
+ <field type="CARD16" name= "vdisplay" />
+ <field type="CARD16" name= "vsyncstart" />
+ <field type="CARD16" name= "vsyncend" />
+ <field type="CARD16" name= "vtotal" />
+ <pad bytes="2" />
+ <field type="CARD32" name="flags" mask="ModeFlag" />
+ <pad bytes="12" />
+ <field type="CARD32" name="privsize" />
+ <list type="CARD8" name="private">
+ <fieldref>privsize</fieldref>
+ </list>
+ </request>
+
+ <request name="SwitchMode" opcode="3">
+ <field type="CARD16" name="screen" />
+ <field type="CARD16" name="zoom" />
+ </request>
+
+ <request name="GetMonitor" opcode="4">
+ <field type="CARD16" name="screen" />
+ <pad bytes="2" />
+ <reply>
+ <pad bytes="1" />
+ <field type="CARD8" name="vendor_length" />
+ <field type="CARD8" name="model_length" />
+ <field type="CARD8" name="num_hsync" />
+ <field type="CARD8" name="num_vsync" />
+ <pad bytes="20" />
+ <list type="SYNCRANGE" name="hsync">
+ <fieldref>num_hsync</fieldref>
+ </list>
+ <list type="SYNCRANGE" name="vsync">
+ <fieldref>num_vsync</fieldref>
+ </list>
+ <list type="char" name="vendor">
+ <fieldref>vendor_length</fieldref>
+ </list>
+ <list type="void" name="alignment_pad">
+ <op op="-">
+ <op op="&amp;">
+ <op op="+">
+ <fieldref>vendor_length</fieldref>
+ <value> 3 </value>
+ </op>
+ <unop op="~">
+ <value>3</value>
+ </unop>
+ </op>
+ <fieldref>vendor_length</fieldref>
+ </op>
+ </list>
+ <list type="char" name="model">
+ <fieldref>model_length</fieldref>
+ </list>
+ </reply>
+ </request>
+
+ <request name="LockModeSwitch" opcode="5">
+ <field type="CARD16" name="screen" />
+ <field type="CARD16" name="lock" />
+ </request>
+
+ <request name="GetAllModeLines" opcode="6">
+ <field type="CARD16" name="screen" />
+ <pad bytes="2" />
+ <reply>
+ <pad bytes="1" />
+ <field type="CARD32" name="modecount" />
+ <pad bytes="20" />
+ <list type="ModeInfo" name="modeinfo">
+ <fieldref>modecount</fieldref>
+ </list>
+ </reply>
+ </request>
+
+ <request name="AddModeLine" opcode="7">
+ <field type="CARD32" name="screen" />
+ <field type="DOTCLOCK" name="dotclock" />
+ <field type="CARD16" name= "hdisplay" />
+ <field type="CARD16" name= "hsyncstart" />
+ <field type="CARD16" name= "hsyncend" />
+ <field type="CARD16" name= "htotal" />
+ <field type="CARD16" name= "hskew" />
+ <field type="CARD16" name= "vdisplay" />
+ <field type="CARD16" name= "vsyncstart" />
+ <field type="CARD16" name= "vsyncend" />
+ <field type="CARD16" name= "vtotal" />
+ <pad bytes="2" />
+ <field type="CARD32" name="flags" mask="ModeFlag" />
+ <pad bytes="12" />
+ <field type="CARD32" name="privsize" />
+ <field type="DOTCLOCK" name="after_dotclock" />
+ <field type="CARD16" name= "after_hdisplay" />
+ <field type="CARD16" name= "after_hsyncstart" />
+ <field type="CARD16" name= "after_hsyncend" />
+ <field type="CARD16" name= "after_htotal" />
+ <field type="CARD16" name= "after_hskew" />
+ <field type="CARD16" name= "after_vdisplay" />
+ <field type="CARD16" name= "after_vsyncstart" />
+ <field type="CARD16" name= "after_vsyncend" />
+ <field type="CARD16" name= "after_vtotal" />
+ <pad bytes="2" />
+ <field type="CARD32" name="after_flags" mask="ModeFlag" />
+ <pad bytes="12" />
+ <list type="CARD8" name="private">
+ <fieldref>privsize</fieldref>
+ </list>
+ </request>
+
+ <request name="DeleteModeLine" opcode="8">
+ <field type="CARD32" name="screen" />
+ <field type="DOTCLOCK" name="dotclock" />
+ <field type="CARD16" name= "hdisplay" />
+ <field type="CARD16" name= "hsyncstart" />
+ <field type="CARD16" name= "hsyncend" />
+ <field type="CARD16" name= "htotal" />
+ <field type="CARD16" name= "hskew" />
+ <field type="CARD16" name= "vdisplay" />
+ <field type="CARD16" name= "vsyncstart" />
+ <field type="CARD16" name= "vsyncend" />
+ <field type="CARD16" name= "vtotal" />
+ <pad bytes="2" />
+ <field type="CARD32" name="flags" mask="ModeFlag" />
+ <pad bytes="12" />
+ <field type="CARD32" name="privsize" />
+ <list type="CARD8" name="private">
+ <fieldref>privsize</fieldref>
+ </list>
+ </request>
+
+ <request name="ValidateModeLine" opcode="9">
+ <field type="CARD32" name="screen" />
+ <field type="DOTCLOCK" name="dotclock" />
+ <field type="CARD16" name= "hdisplay" />
+ <field type="CARD16" name= "hsyncstart" />
+ <field type="CARD16" name= "hsyncend" />
+ <field type="CARD16" name= "htotal" />
+ <field type="CARD16" name= "hskew" />
+ <field type="CARD16" name= "vdisplay" />
+ <field type="CARD16" name= "vsyncstart" />
+ <field type="CARD16" name= "vsyncend" />
+ <field type="CARD16" name= "vtotal" />
+ <pad bytes="2" />
+ <field type="CARD32" name="flags" mask="ModeFlag" />
+ <pad bytes="12" />
+ <field type="CARD32" name="privsize" />
+ <list type="CARD8" name="private">
+ <fieldref>privsize</fieldref>
+ </list>
+ <reply>
+ <pad bytes="1" />
+ <field type="CARD32" name="status" />
+ <pad bytes="20" />
+ </reply>
+ </request>
+
+ <request name="SwitchToMode" opcode="10">
+ <field type="CARD32" name="screen" />
+ <field type="DOTCLOCK" name="dotclock" />
+ <field type="CARD16" name= "hdisplay" />
+ <field type="CARD16" name= "hsyncstart" />
+ <field type="CARD16" name= "hsyncend" />
+ <field type="CARD16" name= "htotal" />
+ <field type="CARD16" name= "hskew" />
+ <field type="CARD16" name= "vdisplay" />
+ <field type="CARD16" name= "vsyncstart" />
+ <field type="CARD16" name= "vsyncend" />
+ <field type="CARD16" name= "vtotal" />
+ <pad bytes="2" />
+ <field type="CARD32" name="flags" mask="ModeFlag" />
+ <pad bytes="12" />
+ <field type="CARD32" name="privsize" />
+ <list type="CARD8" name="private">
+ <fieldref>privsize</fieldref>
+ </list>
+ </request>
+
+ <request name="GetViewPort" opcode="11">
+ <field type="CARD16" name="screen" />
+ <pad bytes="2" />
+ <reply>
+ <pad bytes="1" />
+ <field type="CARD32" name="x" />
+ <field type="CARD32" name="y" />
+ <pad bytes="16" />
+ </reply>
+ </request>
+
+ <request name="SetViewPort" opcode="12">
+ <field type="CARD16" name="screen" />
+ <pad bytes="2" />
+ <field type="CARD32" name="x" />
+ <field type="CARD32" name="y" />
+ </request>
+
+ <!-- new for version 2.x -->
+ <request name="GetDotClocks" opcode="13">
+ <field type="CARD16" name="screen" />
+ <pad bytes="2" />
+ <reply>
+ <pad bytes="1" />
+ <field type="CARD32" name="flags" mask="ClockFlag" />
+ <field type="CARD32" name="clocks" />
+ <field type="CARD32" name="maxclocks" />
+ <pad bytes="12" />
+ <list type="CARD32" name="clock">
+ <!-- Only if flags does not include Programable:
+ (1 - (flags & 1)) * clocks
+ -->
+ <op op="*">
+ <op op = "-">
+ <value>1</value>
+ <op op="&amp;">
+ <fieldref>flags</fieldref>
+ <value>1</value>
+ </op>
+ </op>
+ <fieldref>clocks</fieldref>
+ </op>
+ </list>
+ </reply>
+ </request>
+
+ <request name="SetClientVersion" opcode="14">
+ <field type="CARD16" name="major" />
+ <field type="CARD16" name="minor" />
+ </request>
+
+ <request name="SetGamma" opcode="15">
+ <field type="CARD16" name="screen" />
+ <pad bytes="2" />
+ <field type="CARD32" name="red" />
+ <field type="CARD32" name="green" />
+ <field type="CARD32" name="blue" />
+ <pad bytes="12" />
+ </request>
+
+ <request name="GetGamma" opcode="16">
+ <field type="CARD16" name="screen" />
+ <pad bytes="26" />
+ <reply>
+ <pad bytes="1" />
+ <field type="CARD32" name="red" />
+ <field type="CARD32" name="green" />
+ <field type="CARD32" name="blue" />
+ <pad bytes="12" />
+ </reply>
+ </request>
+
+ <request name="GetGammaRamp" opcode="17">
+ <field type="CARD16" name="screen" />
+ <field type="CARD16" name="size" />
+ <reply>
+ <pad bytes="1" />
+ <field type="CARD16" name="size" />
+ <pad bytes="22" />
+ <list type="CARD16" name="red">
+ <op op="&amp;">
+ <op op = "+">
+ <fieldref>size</fieldref>
+ <value>1</value>
+ </op>
+ <unop op="~">
+ <value>1</value>
+ </unop>
+ </op>
+ </list>
+ <list type="CARD16" name="green">
+ <op op="&amp;">
+ <op op = "+">
+ <fieldref>size</fieldref>
+ <value>1</value>
+ </op>
+ <unop op="~">
+ <value>1</value>
+ </unop>
+ </op>
+ </list>
+ <list type="CARD16" name="blue">
+ <op op="&amp;">
+ <op op = "+">
+ <fieldref>size</fieldref>
+ <value>1</value>
+ </op>
+ <unop op="~">
+ <value>1</value>
+ </unop>
+ </op>
+ </list>
+ </reply>
+ </request>
+
+ <request name="SetGammaRamp" opcode="18">
+ <field type="CARD16" name="screen" />
+ <field type="CARD16" name="size" />
+ <list type="CARD16" name="red">
+ <op op="&amp;">
+ <op op = "+">
+ <fieldref>size</fieldref>
+ <value>1</value>
+ </op>
+ <unop op="~">
+ <value>1</value>
+ </unop>
+ </op>
+ </list>
+ <list type="CARD16" name="green">
+ <op op="&amp;">
+ <op op = "+">
+ <fieldref>size</fieldref>
+ <value>1</value>
+ </op>
+ <unop op="~">
+ <value>1</value>
+ </unop>
+ </op>
+ </list>
+ <list type="CARD16" name="blue">
+ <op op="&amp;">
+ <op op = "+">
+ <fieldref>size</fieldref>
+ <value>1</value>
+ </op>
+ <unop op="~">
+ <value>1</value>
+ </unop>
+ </op>
+ </list>
+ </request>
+
+ <request name="GetGammaRampSize" opcode="19">
+ <field type="CARD16" name="screen" />
+ <pad bytes="2" />
+ <reply>
+ <pad bytes="1" />
+ <field type="CARD16" name="size" />
+ <pad bytes="22" />
+ </reply>
+ </request>
+
+ <request name="GetPermissions" opcode="20">
+ <field type="CARD16" name="screen" />
+ <pad bytes="2" />
+ <reply>
+ <pad bytes="1" />
+ <field type="CARD32" name="permissions" mask="Permission" />
+ <pad bytes="20" />
+ </reply>
+ </request>
+
+ <error name="BadClock" number="0" />
+ <error name="BadHTimings" number="1" />
+ <error name="BadVTimings" number="2" />
+ <error name="ModeUnsuitable" number="3" />
+ <error name="ExtensionDisabled" number="4" />
+ <error name="ClientNotLocal" number="5" />
+ <error name="ZoomLocked" number="6" />
+
+</xcb>
diff --git a/libxcb/xcb-proto/src/xfixes.xml b/libxcb/xcb-proto/src/xfixes.xml
index 7ddea0db5..9bbeaab1e 100644
--- a/libxcb/xcb-proto/src/xfixes.xml
+++ b/libxcb/xcb-proto/src/xfixes.xml
@@ -1,334 +1,334 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-Copyright (C) 2004 Josh Triplett. All Rights Reserved.
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
-ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the names of the authors or their
-institutions shall not be used in advertising or otherwise to promote the
-sale, use or other dealings in this Software without prior written
-authorization from the authors.
--->
-<!-- This file describes version 4 of XFixes. -->
-<xcb header="xfixes" extension-xname="XFIXES" extension-name="XFixes"
- major-version="4" minor-version="0">
- <import>xproto</import>
- <import>render</import>
- <import>shape</import>
-
- <!-- Version 1 -->
- <request name="QueryVersion" opcode="0">
- <field type="CARD32" name="client_major_version" />
- <field type="CARD32" name="client_minor_version" />
- <reply>
- <pad bytes="1" />
- <field type="CARD32" name="major_version" />
- <field type="CARD32" name="minor_version" />
- <pad bytes="16" />
- </reply>
- </request>
-
- <enum name="SaveSetMode">
- <item name="Insert" />
- <item name="Delete" />
- </enum>
-
- <enum name="SaveSetTarget">
- <item name="Nearest" />
- <item name="Root" />
- </enum>
-
- <enum name="SaveSetMapping">
- <item name="Map" />
- <item name="Unmap" />
- </enum>
-
- <request name="ChangeSaveSet" opcode="1">
- <field type="BYTE" name="mode" enum="SaveSetMode" />
- <field type="BYTE" name="target" enum="SaveSetTarget" />
- <field type="BYTE" name="map" enum="SaveSetMapping" />
- <pad bytes="1" />
- <field type="WINDOW" name="window" />
- </request>
-
- <enum name="SelectionEvent">
- <item name="SetSelectionOwner" />
- <item name="SelectionWindowDestroy" />
- <item name="SelectionClientClose" />
- </enum>
-
- <enum name="SelectionEventMask">
- <item name="SetSelectionOwner"> <bit>0</bit></item>
- <item name="SelectionWindowDestroy"><bit>1</bit></item>
- <item name="SelectionClientClose"> <bit>2</bit></item>
- </enum>
-
- <event name="SelectionNotify" number="0">
- <field type="CARD8" name="subtype" enum="SelectionEvent" />
- <field type="WINDOW" name="window" />
- <field type="WINDOW" name="owner" />
- <field type="ATOM" name="selection" />
- <field type="TIMESTAMP" name="timestamp" />
- <field type="TIMESTAMP" name="selection_timestamp" />
- <pad bytes="8" />
- </event>
-
- <request name="SelectSelectionInput" opcode="2">
- <field type="WINDOW" name="window" />
- <field type="ATOM" name="selection" />
- <field type="CARD32" name="event_mask" mask="SelectionEventMask" />
- </request>
-
- <enum name="CursorNotify">
- <item name="DisplayCursor" />
- </enum>
-
- <enum name="CursorNotifyMask">
- <item name="DisplayCursor"><bit>0</bit></item>
- </enum>
-
- <event name="CursorNotify" number="1">
- <field type="CARD8" name="subtype" enum="CursorNotify" />
- <field type="WINDOW" name="window" />
- <field type="CARD32" name="cursor_serial" />
- <field type="TIMESTAMP" name="timestamp" />
- <field type="ATOM" name="name" altenum="Atom" /> <!-- Added in version 2 -->
- <pad bytes="12" />
- </event>
-
- <request name="SelectCursorInput" opcode="3">
- <field type="WINDOW" name="window" />
- <field type="CARD32" name="event_mask" mask="CursorNotifyMask" />
- </request>
-
- <request name="GetCursorImage" opcode="4">
- <reply>
- <pad bytes="1" />
- <field type="INT16" name="x" />
- <field type="INT16" name="y" />
- <field type="CARD16" name="width" />
- <field type="CARD16" name="height" />
- <field type="CARD16" name="xhot" />
- <field type="CARD16" name="yhot" />
- <field type="CARD32" name="cursor_serial" />
- <pad bytes="8" />
- <list type="CARD32" name="cursor_image">
- <op op="*">
- <fieldref>width</fieldref>
- <fieldref>height</fieldref>
- </op>
- </list>
- </reply>
- </request>
-
- <!-- Version 2 -->
-
- <xidtype name="REGION" />
-
- <error name="BadRegion" number="0" />
-
- <enum name="Region">
- <item name="None" />
- </enum>
-
- <request name="CreateRegion" opcode="5">
- <field type="REGION" name="region" />
- <list type="RECTANGLE" name="rectangles" />
- </request>
-
- <request name="CreateRegionFromBitmap" opcode="6">
- <field type="REGION" name="region" />
- <field type="PIXMAP" name="bitmap" />
- </request>
-
- <request name="CreateRegionFromWindow" opcode="7">
- <field type="REGION" name="region" />
- <field type="WINDOW" name="window" />
- <field type="shape:KIND" name="kind" enum="SK" />
- <pad bytes="3" />
- </request>
-
- <request name="CreateRegionFromGC" opcode="8">
- <field type="REGION" name="region" />
- <field type="GCONTEXT" name="gc" />
- </request>
-
- <request name="CreateRegionFromPicture" opcode="9">
- <field type="REGION" name="region" />
- <field type="PICTURE" name="picture" />
- </request>
-
- <request name="DestroyRegion" opcode="10">
- <field type="REGION" name="region" />
- </request>
-
- <request name="SetRegion" opcode="11">
- <field type="REGION" name="region" />
- <list type="RECTANGLE" name="rectangles" />
- </request>
-
- <request name="CopyRegion" opcode="12">
- <field type="REGION" name="source" />
- <field type="REGION" name="destination" />
- </request>
-
- <request name="UnionRegion" opcode="13">
- <field type="REGION" name="source1" />
- <field type="REGION" name="source2" />
- <field type="REGION" name="destination" />
- </request>
-
- <request name="IntersectRegion" opcode="14">
- <field type="REGION" name="source1" />
- <field type="REGION" name="source2" />
- <field type="REGION" name="destination" />
- </request>
-
- <request name="SubtractRegion" opcode="15">
- <field type="REGION" name="source1" />
- <field type="REGION" name="source2" />
- <field type="REGION" name="destination" />
- </request>
-
- <request name="InvertRegion" opcode="16">
- <field type="REGION" name="source" />
- <field type="RECTANGLE" name="bounds" />
- <field type="REGION" name="destination" />
- </request>
-
- <request name="TranslateRegion" opcode="17">
- <field type="REGION" name="region" />
- <field type="INT16" name="dx" />
- <field type="INT16" name="dy" />
- </request>
-
- <request name="RegionExtents" opcode="18">
- <field type="REGION" name="source" />
- <field type="REGION" name="destination" />
- </request>
-
- <request name="FetchRegion" opcode="19">
- <field type="REGION" name="region" />
- <reply>
- <pad bytes="1" />
- <field type="RECTANGLE" name="extents" />
- <pad bytes="16" />
- <list type="RECTANGLE" name="rectangles">
- <op op='/'>
- <fieldref>length</fieldref>
- <value>2</value>
- </op>
- </list>
- </reply>
- </request>
-
- <request name="SetGCClipRegion" opcode="20">
- <field type="GCONTEXT" name="gc" />
- <field type="REGION" name="region" altenum="Region" />
- <field type="INT16" name="x_origin" />
- <field type="INT16" name="y_origin" />
- </request>
-
- <request name="SetWindowShapeRegion" opcode="21">
- <field type="WINDOW" name="dest" />
- <field type="shape:KIND" name="dest_kind" enum="SK" />
- <pad bytes="3" />
- <field type="INT16" name="x_offset" />
- <field type="INT16" name="y_offset" />
- <field type="REGION" name="region" altenum="Region" />
- </request>
-
- <request name="SetPictureClipRegion" opcode="22">
- <field type="PICTURE" name="picture" />
- <field type="REGION" name="region" altenum="Region" />
- <field type="INT16" name="x_origin" />
- <field type="INT16" name="y_origin" />
- </request>
-
- <request name="SetCursorName" opcode="23">
- <field type="CURSOR" name="cursor" />
- <field type="CARD16" name="nbytes" />
- <pad bytes="2" />
- <list type="char" name="name"><fieldref>nbytes</fieldref></list>
- </request>
-
- <request name="GetCursorName" opcode="24">
- <field type="CURSOR" name="cursor" />
- <reply>
- <pad bytes="1" />
- <field type="ATOM" name="atom" altenum="Atom" />
- <field type="CARD16" name="nbytes" />
- <pad bytes="18" />
- <list type="char" name="name"><fieldref>nbytes</fieldref></list>
- </reply>
- </request>
-
- <request name="GetCursorImageAndName" opcode="25">
- <reply>
- <pad bytes="1" />
- <field type="INT16" name="x" />
- <field type="INT16" name="y" />
- <field type="CARD16" name="width" />
- <field type="CARD16" name="height" />
- <field type="CARD16" name="xhot" />
- <field type="CARD16" name="yhot" />
- <field type="CARD32" name="cursor_serial" />
- <field type="ATOM" name="cursor_atom" altenum="Atom" />
- <field type="CARD16" name="nbytes" />
- <pad bytes="2" />
- <list type="char" name="name"><fieldref>nbytes</fieldref></list>
- <list type="CARD32" name="cursor_image">
- <op op="*">
- <fieldref>width</fieldref>
- <fieldref>height</fieldref>
- </op>
- </list>
- </reply>
- </request>
-
- <request name="ChangeCursor" opcode="26">
- <field type="CURSOR" name="source" />
- <field type="CURSOR" name="destination" />
- </request>
-
- <request name="ChangeCursorByName" opcode="27">
- <field type="CURSOR" name="src" />
- <field type="CARD16" name="nbytes" />
- <pad bytes="2" />
- <list type="char" name="name"><fieldref>nbytes</fieldref></list>
- </request>
-
- <!-- Version 3 -->
- <request name="ExpandRegion" opcode="28">
- <field type="REGION" name="source" />
- <field type="REGION" name="destination" />
- <field type="CARD16" name="left" />
- <field type="CARD16" name="right" />
- <field type="CARD16" name="top" />
- <field type="CARD16" name="bottom" />
- </request>
-
- <!-- Version 4 -->
- <request name="HideCursor" opcode="29">
- <field type="WINDOW" name="window" />
- </request>
-
- <request name="ShowCursor" opcode="30">
- <field type="WINDOW" name="window" />
- </request>
-</xcb>
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+Copyright (C) 2004 Josh Triplett. All Rights Reserved.
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
+ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the names of the authors or their
+institutions shall not be used in advertising or otherwise to promote the
+sale, use or other dealings in this Software without prior written
+authorization from the authors.
+-->
+<!-- This file describes version 4 of XFixes. -->
+<xcb header="xfixes" extension-xname="XFIXES" extension-name="XFixes"
+ major-version="4" minor-version="0">
+ <import>xproto</import>
+ <import>render</import>
+ <import>shape</import>
+
+ <!-- Version 1 -->
+ <request name="QueryVersion" opcode="0">
+ <field type="CARD32" name="client_major_version" />
+ <field type="CARD32" name="client_minor_version" />
+ <reply>
+ <pad bytes="1" />
+ <field type="CARD32" name="major_version" />
+ <field type="CARD32" name="minor_version" />
+ <pad bytes="16" />
+ </reply>
+ </request>
+
+ <enum name="SaveSetMode">
+ <item name="Insert" />
+ <item name="Delete" />
+ </enum>
+
+ <enum name="SaveSetTarget">
+ <item name="Nearest" />
+ <item name="Root" />
+ </enum>
+
+ <enum name="SaveSetMapping">
+ <item name="Map" />
+ <item name="Unmap" />
+ </enum>
+
+ <request name="ChangeSaveSet" opcode="1">
+ <field type="BYTE" name="mode" enum="SaveSetMode" />
+ <field type="BYTE" name="target" enum="SaveSetTarget" />
+ <field type="BYTE" name="map" enum="SaveSetMapping" />
+ <pad bytes="1" />
+ <field type="WINDOW" name="window" />
+ </request>
+
+ <enum name="SelectionEvent">
+ <item name="SetSelectionOwner" />
+ <item name="SelectionWindowDestroy" />
+ <item name="SelectionClientClose" />
+ </enum>
+
+ <enum name="SelectionEventMask">
+ <item name="SetSelectionOwner"> <bit>0</bit></item>
+ <item name="SelectionWindowDestroy"><bit>1</bit></item>
+ <item name="SelectionClientClose"> <bit>2</bit></item>
+ </enum>
+
+ <event name="SelectionNotify" number="0">
+ <field type="CARD8" name="subtype" enum="SelectionEvent" />
+ <field type="WINDOW" name="window" />
+ <field type="WINDOW" name="owner" />
+ <field type="ATOM" name="selection" />
+ <field type="TIMESTAMP" name="timestamp" />
+ <field type="TIMESTAMP" name="selection_timestamp" />
+ <pad bytes="8" />
+ </event>
+
+ <request name="SelectSelectionInput" opcode="2">
+ <field type="WINDOW" name="window" />
+ <field type="ATOM" name="selection" />
+ <field type="CARD32" name="event_mask" mask="SelectionEventMask" />
+ </request>
+
+ <enum name="CursorNotify">
+ <item name="DisplayCursor" />
+ </enum>
+
+ <enum name="CursorNotifyMask">
+ <item name="DisplayCursor"><bit>0</bit></item>
+ </enum>
+
+ <event name="CursorNotify" number="1">
+ <field type="CARD8" name="subtype" enum="CursorNotify" />
+ <field type="WINDOW" name="window" />
+ <field type="CARD32" name="cursor_serial" />
+ <field type="TIMESTAMP" name="timestamp" />
+ <field type="ATOM" name="name" altenum="Atom" /> <!-- Added in version 2 -->
+ <pad bytes="12" />
+ </event>
+
+ <request name="SelectCursorInput" opcode="3">
+ <field type="WINDOW" name="window" />
+ <field type="CARD32" name="event_mask" mask="CursorNotifyMask" />
+ </request>
+
+ <request name="GetCursorImage" opcode="4">
+ <reply>
+ <pad bytes="1" />
+ <field type="INT16" name="x" />
+ <field type="INT16" name="y" />
+ <field type="CARD16" name="width" />
+ <field type="CARD16" name="height" />
+ <field type="CARD16" name="xhot" />
+ <field type="CARD16" name="yhot" />
+ <field type="CARD32" name="cursor_serial" />
+ <pad bytes="8" />
+ <list type="CARD32" name="cursor_image">
+ <op op="*">
+ <fieldref>width</fieldref>
+ <fieldref>height</fieldref>
+ </op>
+ </list>
+ </reply>
+ </request>
+
+ <!-- Version 2 -->
+
+ <xidtype name="REGION" />
+
+ <error name="BadRegion" number="0" />
+
+ <enum name="Region">
+ <item name="None" />
+ </enum>
+
+ <request name="CreateRegion" opcode="5">
+ <field type="REGION" name="region" />
+ <list type="RECTANGLE" name="rectangles" />
+ </request>
+
+ <request name="CreateRegionFromBitmap" opcode="6">
+ <field type="REGION" name="region" />
+ <field type="PIXMAP" name="bitmap" />
+ </request>
+
+ <request name="CreateRegionFromWindow" opcode="7">
+ <field type="REGION" name="region" />
+ <field type="WINDOW" name="window" />
+ <field type="shape:KIND" name="kind" enum="SK" />
+ <pad bytes="3" />
+ </request>
+
+ <request name="CreateRegionFromGC" opcode="8">
+ <field type="REGION" name="region" />
+ <field type="GCONTEXT" name="gc" />
+ </request>
+
+ <request name="CreateRegionFromPicture" opcode="9">
+ <field type="REGION" name="region" />
+ <field type="PICTURE" name="picture" />
+ </request>
+
+ <request name="DestroyRegion" opcode="10">
+ <field type="REGION" name="region" />
+ </request>
+
+ <request name="SetRegion" opcode="11">
+ <field type="REGION" name="region" />
+ <list type="RECTANGLE" name="rectangles" />
+ </request>
+
+ <request name="CopyRegion" opcode="12">
+ <field type="REGION" name="source" />
+ <field type="REGION" name="destination" />
+ </request>
+
+ <request name="UnionRegion" opcode="13">
+ <field type="REGION" name="source1" />
+ <field type="REGION" name="source2" />
+ <field type="REGION" name="destination" />
+ </request>
+
+ <request name="IntersectRegion" opcode="14">
+ <field type="REGION" name="source1" />
+ <field type="REGION" name="source2" />
+ <field type="REGION" name="destination" />
+ </request>
+
+ <request name="SubtractRegion" opcode="15">
+ <field type="REGION" name="source1" />
+ <field type="REGION" name="source2" />
+ <field type="REGION" name="destination" />
+ </request>
+
+ <request name="InvertRegion" opcode="16">
+ <field type="REGION" name="source" />
+ <field type="RECTANGLE" name="bounds" />
+ <field type="REGION" name="destination" />
+ </request>
+
+ <request name="TranslateRegion" opcode="17">
+ <field type="REGION" name="region" />
+ <field type="INT16" name="dx" />
+ <field type="INT16" name="dy" />
+ </request>
+
+ <request name="RegionExtents" opcode="18">
+ <field type="REGION" name="source" />
+ <field type="REGION" name="destination" />
+ </request>
+
+ <request name="FetchRegion" opcode="19">
+ <field type="REGION" name="region" />
+ <reply>
+ <pad bytes="1" />
+ <field type="RECTANGLE" name="extents" />
+ <pad bytes="16" />
+ <list type="RECTANGLE" name="rectangles">
+ <op op='/'>
+ <fieldref>length</fieldref>
+ <value>2</value>
+ </op>
+ </list>
+ </reply>
+ </request>
+
+ <request name="SetGCClipRegion" opcode="20">
+ <field type="GCONTEXT" name="gc" />
+ <field type="REGION" name="region" altenum="Region" />
+ <field type="INT16" name="x_origin" />
+ <field type="INT16" name="y_origin" />
+ </request>
+
+ <request name="SetWindowShapeRegion" opcode="21">
+ <field type="WINDOW" name="dest" />
+ <field type="shape:KIND" name="dest_kind" enum="SK" />
+ <pad bytes="3" />
+ <field type="INT16" name="x_offset" />
+ <field type="INT16" name="y_offset" />
+ <field type="REGION" name="region" altenum="Region" />
+ </request>
+
+ <request name="SetPictureClipRegion" opcode="22">
+ <field type="PICTURE" name="picture" />
+ <field type="REGION" name="region" altenum="Region" />
+ <field type="INT16" name="x_origin" />
+ <field type="INT16" name="y_origin" />
+ </request>
+
+ <request name="SetCursorName" opcode="23">
+ <field type="CURSOR" name="cursor" />
+ <field type="CARD16" name="nbytes" />
+ <pad bytes="2" />
+ <list type="char" name="name"><fieldref>nbytes</fieldref></list>
+ </request>
+
+ <request name="GetCursorName" opcode="24">
+ <field type="CURSOR" name="cursor" />
+ <reply>
+ <pad bytes="1" />
+ <field type="ATOM" name="atom" altenum="Atom" />
+ <field type="CARD16" name="nbytes" />
+ <pad bytes="18" />
+ <list type="char" name="name"><fieldref>nbytes</fieldref></list>
+ </reply>
+ </request>
+
+ <request name="GetCursorImageAndName" opcode="25">
+ <reply>
+ <pad bytes="1" />
+ <field type="INT16" name="x" />
+ <field type="INT16" name="y" />
+ <field type="CARD16" name="width" />
+ <field type="CARD16" name="height" />
+ <field type="CARD16" name="xhot" />
+ <field type="CARD16" name="yhot" />
+ <field type="CARD32" name="cursor_serial" />
+ <field type="ATOM" name="cursor_atom" altenum="Atom" />
+ <field type="CARD16" name="nbytes" />
+ <pad bytes="2" />
+ <list type="char" name="name"><fieldref>nbytes</fieldref></list>
+ <list type="CARD32" name="cursor_image">
+ <op op="*">
+ <fieldref>width</fieldref>
+ <fieldref>height</fieldref>
+ </op>
+ </list>
+ </reply>
+ </request>
+
+ <request name="ChangeCursor" opcode="26">
+ <field type="CURSOR" name="source" />
+ <field type="CURSOR" name="destination" />
+ </request>
+
+ <request name="ChangeCursorByName" opcode="27">
+ <field type="CURSOR" name="src" />
+ <field type="CARD16" name="nbytes" />
+ <pad bytes="2" />
+ <list type="char" name="name"><fieldref>nbytes</fieldref></list>
+ </request>
+
+ <!-- Version 3 -->
+ <request name="ExpandRegion" opcode="28">
+ <field type="REGION" name="source" />
+ <field type="REGION" name="destination" />
+ <field type="CARD16" name="left" />
+ <field type="CARD16" name="right" />
+ <field type="CARD16" name="top" />
+ <field type="CARD16" name="bottom" />
+ </request>
+
+ <!-- Version 4 -->
+ <request name="HideCursor" opcode="29">
+ <field type="WINDOW" name="window" />
+ </request>
+
+ <request name="ShowCursor" opcode="30">
+ <field type="WINDOW" name="window" />
+ </request>
+</xcb>
diff --git a/libxcb/xcb-proto/src/xinerama.xml b/libxcb/xcb-proto/src/xinerama.xml
index 5534aa6c0..b2747eeab 100644
--- a/libxcb/xcb-proto/src/xinerama.xml
+++ b/libxcb/xcb-proto/src/xinerama.xml
@@ -1,99 +1,99 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-Copyright (C) 2006 Jeremy Kolb.
-All Rights Reserved.
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
-ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the names of the authors or their
-institutions shall not be used in advertising or otherwise to promote the
-sale, use or other dealings in this Software without prior written
-authorization from the authors.
--->
-
-<xcb header="xinerama" extension-xname="XINERAMA" extension-name="Xinerama"
- major-version="1" minor-version="1">
-
- <!-- Version 1.1 -->
-
- <import>xproto</import>
-
- <struct name="ScreenInfo">
- <field type="INT16" name="x_org" />
- <field type="INT16" name="y_org" />
- <field type="CARD16" name="width" />
- <field type="CARD16" name="height" />
- </struct>
-
- <request name="QueryVersion" opcode="0">
- <field type="CARD8" name="major" />
- <field type="CARD8" name="minor" />
- <reply>
- <pad bytes="1" />
- <field type="CARD16" name="major" />
- <field type="CARD16" name="minor" />
- </reply>
- </request>
-
- <request name="GetState" opcode="1">
- <field type="WINDOW" name="window" />
- <reply>
- <field type="BYTE" name="state" />
- <field type="WINDOW" name="window" />
- </reply>
- </request>
-
- <request name="GetScreenCount" opcode="2">
- <field type="WINDOW" name="window" />
- <reply>
- <field type="BYTE" name="screen_count" />
- <field type="WINDOW" name="window" />
- </reply>
- </request>
-
- <request name="GetScreenSize" opcode="3">
- <field type="WINDOW" name="window" />
- <field type="CARD32" name="screen" />
- <reply>
- <pad bytes="1" />
- <field type="CARD32" name="width" />
- <field type="CARD32" name="height" />
- <field type="WINDOW" name="window" />
- <field type="CARD32" name="screen" />
- </reply>
- </request>
-
- <request name="IsActive" opcode="4">
- <reply>
- <pad bytes="1" />
- <field type="CARD32" name="state" />
- </reply>
- </request>
-
- <request name="QueryScreens" opcode="5">
- <reply>
- <pad bytes="1" />
- <field type="CARD32" name="number" />
- <pad bytes="20" />
- <list type="ScreenInfo" name="screen_info">
- <fieldref>number</fieldref>
- </list>
- </reply>
- </request>
-
-</xcb>
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+Copyright (C) 2006 Jeremy Kolb.
+All Rights Reserved.
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
+ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the names of the authors or their
+institutions shall not be used in advertising or otherwise to promote the
+sale, use or other dealings in this Software without prior written
+authorization from the authors.
+-->
+
+<xcb header="xinerama" extension-xname="XINERAMA" extension-name="Xinerama"
+ major-version="1" minor-version="1">
+
+ <!-- Version 1.1 -->
+
+ <import>xproto</import>
+
+ <struct name="ScreenInfo">
+ <field type="INT16" name="x_org" />
+ <field type="INT16" name="y_org" />
+ <field type="CARD16" name="width" />
+ <field type="CARD16" name="height" />
+ </struct>
+
+ <request name="QueryVersion" opcode="0">
+ <field type="CARD8" name="major" />
+ <field type="CARD8" name="minor" />
+ <reply>
+ <pad bytes="1" />
+ <field type="CARD16" name="major" />
+ <field type="CARD16" name="minor" />
+ </reply>
+ </request>
+
+ <request name="GetState" opcode="1">
+ <field type="WINDOW" name="window" />
+ <reply>
+ <field type="BYTE" name="state" />
+ <field type="WINDOW" name="window" />
+ </reply>
+ </request>
+
+ <request name="GetScreenCount" opcode="2">
+ <field type="WINDOW" name="window" />
+ <reply>
+ <field type="BYTE" name="screen_count" />
+ <field type="WINDOW" name="window" />
+ </reply>
+ </request>
+
+ <request name="GetScreenSize" opcode="3">
+ <field type="WINDOW" name="window" />
+ <field type="CARD32" name="screen" />
+ <reply>
+ <pad bytes="1" />
+ <field type="CARD32" name="width" />
+ <field type="CARD32" name="height" />
+ <field type="WINDOW" name="window" />
+ <field type="CARD32" name="screen" />
+ </reply>
+ </request>
+
+ <request name="IsActive" opcode="4">
+ <reply>
+ <pad bytes="1" />
+ <field type="CARD32" name="state" />
+ </reply>
+ </request>
+
+ <request name="QueryScreens" opcode="5">
+ <reply>
+ <pad bytes="1" />
+ <field type="CARD32" name="number" />
+ <pad bytes="20" />
+ <list type="ScreenInfo" name="screen_info">
+ <fieldref>number</fieldref>
+ </list>
+ </reply>
+ </request>
+
+</xcb>
diff --git a/libxcb/xcb-proto/src/xinput.xml b/libxcb/xcb-proto/src/xinput.xml
index b0a7a82e8..80416fe3f 100644
--- a/libxcb/xcb-proto/src/xinput.xml
+++ b/libxcb/xcb-proto/src/xinput.xml
@@ -1,1020 +1,1020 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-Copyright (C) 2006 Peter Hutterer
-All Rights Reserved.
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
-ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the names of the authors or their
-institutions shall not be used in advertising or otherwise to promote the
-sale, use or other dealings in this Software without prior written
-authorization from the authors.
--->
-
-<!-- Spec: http://refspecs.freestandards.org/X11/Xinput.pdf -->
-
-<xcb header="xinput" extension-xname="XInputExtension" extension-name="Input"
- major-version="1" minor-version="4">
- <import>xproto</import>
-
- <typedef oldname="CARD8" newname="KeyCode" />
- <typedef oldname="CARD32" newname="EventClass" />
-
- <enum name="ValuatorMode">
- <item name="Relative"> <value>0</value></item>
- <item name="Absolute"> <value>1</value></item>
- </enum>
-
- <enum name="PropagateMode">
- <item name="AddToList"> <value>0</value></item>
- <item name="DeleteFromList"> <value>1</value></item>
- </enum>
-
- <!-- GetExtensionVersion -->
-
- <request name="GetExtensionVersion" opcode="1">
- <field type="CARD16" name="name_len" />
- <pad bytes="2" />
- <list type="char" name="name">
- <fieldref>name_len</fieldref>
- </list>
- <reply>
- <pad bytes="1" />
- <field type="CARD16" name="server_major" />
- <field type="CARD16" name="server_minor" />
- <field type="BOOL" name="present" />
- <pad bytes="19" />
- </reply>
- </request>
-
- <!-- ListInputDevices -->
-
- <enum name="DeviceUse">
- <item name="IsXPointer"><value>0</value></item>
- <item name="IsXKeyboard"><value>1</value></item>
- <item name="IsXExtensionDevice"><value>2</value></item>
- <item name="IsXExtensionKeyboard"><value>3</value></item>
- <item name="IsXExtensionPointer"><value>4</value></item>
- </enum>
-
- <struct name="DeviceInfo">
- <field type="ATOM" name="device_type" />
- <field type="CARD8" name="device_id" />
- <field type="CARD8" name="num_class_info" />
- <field type="CARD8" name="device_use" enum="DeviceUse" />
- <pad bytes="1" />
- </struct>
-
- <request name="ListInputDevices" opcode="2">
- <reply>
- <pad bytes="1" />
- <field type="CARD8" name="devices_len" />
- <pad bytes="23" />
- <list type="DeviceInfo" name="devices">
- <fieldref>devices_len</fieldref>
- </list>
- <!-- Uninterpreted: list of deviceinfo structs of 3 the subtypes -->
- <!-- Uninterpreted: list of null-terminated strings -->
- </reply>
- </request>
-
- <enum name="InputClass">
- <item name="Key"><value>0</value></item>
- <item name="Button"><value>1</value></item>
- <item name="Valuator"><value>2</value></item>
- <item name="Feedback"><value>3</value></item>
- <item name="Proximity"><value>4</value></item>
- <item name="Focus"><value>5</value></item>
- <item name="Other"><value>6</value></item>
- </enum>
-
- <struct name="InputInfo">
- <field type="CARD8" name="class_id" enum="InputClass" />
- <field type="CARD8" name="len" />
- </struct>
-
- <struct name="KeyInfo">
- <field type="CARD8" name="class_id" enum="InputClass" />
- <field type="CARD8" name="len" />
- <field type="KeyCode" name="min_keycode" />
- <field type="KeyCode" name="max_keycode" />
- <field type="CARD16" name="num_keys" />
- <pad bytes="2" />
- </struct>
-
- <struct name="ButtonInfo">
- <field type="CARD8" name="class_id" enum="InputClass" />
- <field type="CARD8" name="len" />
- <field type="CARD16" name="num_buttons" />
- </struct>
-
- <struct name="AxisInfo">
- <field type="CARD32" name="resolution" />
- <field type="INT32" name="minimum" />
- <field type="INT32" name="maximum" />
- </struct>
-
- <struct name="ValuatorInfo">
- <field type="CARD8" name="class_id" enum="InputClass" />
- <field type="CARD8" name="len" />
- <field type="CARD8" name="axes_len" />
- <field type="CARD8" name="mode" enum="ValuatorMode" />
- <field type="CARD32" name="motion_size" />
- <list type="AxisInfo" name="axes">
- <fieldref>axes_len</fieldref>
- </list>
- </struct>
-
- <!-- OpenDevice -->
-
- <struct name="InputClassInfo">
- <field type="CARD8" name="class_id" enum="InputClass" />
- <field type="CARD8" name="event_type_base" />
- </struct>
-
- <request name="OpenDevice" opcode="3">
- <field type="CARD8" name="device_id" />
- <pad bytes="3" />
- <reply>
- <pad bytes="1" />
- <field type="CARD8" name="num_classes" />
- <pad bytes="23" />
- <list type="InputClassInfo" name="class_info">
- <fieldref>num_classes</fieldref>
- </list>
- </reply>
- </request>
-
- <!-- CloseDevice -->
-
- <request name="CloseDevice" opcode="4">
- <field type="CARD8" name="device_id" />
- <pad bytes="3" />
- </request>
-
- <!-- SetDeviceMode -->
-
- <request name="SetDeviceMode" opcode="5">
- <field type="CARD8" name="device_id" />
- <field type="CARD8" name="mode" enum="ValuatorMode" />
- <pad bytes="2" />
- <reply>
- <pad bytes="1" />
- <field type="CARD8" name="status" altenum="GrabStatus" />
- <pad bytes="23" />
- </reply>
- </request>
-
- <!-- SelectExtensionEvent -->
-
- <request name="SelectExtensionEvent" opcode="6">
- <field type="WINDOW" name="window" />
- <field type="CARD16" name="num_classes" />
- <pad bytes="2" />
- <list type="EventClass" name="classes">
- <fieldref>num_classes</fieldref>
- </list>
- </request>
-
- <!-- GetSelectedExtensionEvents -->
-
- <request name="GetSelectedExtensionEvents" opcode="7">
- <field type="WINDOW" name="window" />
- <reply>
- <pad bytes="1" />
- <field type="CARD16" name="num_this_classes" />
- <field type="CARD16" name="num_all_classes" />
- <pad bytes="20" />
- <list type="EventClass" name="this_classes">
- <fieldref>num_this_classes</fieldref>
- </list>
- <list type="EventClass" name="all_classes">
- <fieldref>num_all_classes</fieldref>
- </list>
- </reply>
- </request>
-
- <!-- ChangeDeviceDontPropagateList -->
-
- <request name="ChangeDeviceDontPropagateList" opcode="8">
- <field type="WINDOW" name="window" />
- <field type="CARD16" name="num_classes" />
- <field type="CARD8" name="mode" enum="PropagateMode" />
- <pad bytes="1" />
- <list type="EventClass" name="classes">
- <fieldref>num_classes</fieldref>
- </list>
- </request>
-
- <!-- GetDeviceDontPropagateList -->
-
- <request name="GetDeviceDontPropagateList" opcode="9">
- <field type="WINDOW" name="window" />
- <reply>
- <pad bytes="1" />
- <field type="CARD16" name="num_classes" />
- <pad bytes="22" />
- <list type="EventClass" name="classes">
- <fieldref>num_classes</fieldref>
- </list>
- </reply>
- </request>
-
- <!-- GetDeviceMotionEvents -->
-
- <request name="GetDeviceMotionEvents" opcode="10">
- <field type="TIMESTAMP" name="start" />
- <field type="TIMESTAMP" name="stop" altenum="Time" />
- <field type="CARD8" name="device_id" />
- <reply>
- <pad bytes="1" />
- <field type="CARD32" name="num_coords" />
- <field type="CARD8" name="num_axes" />
- <field type="CARD8" name="device_mode" enum="ValuatorMode" />
- <pad bytes="18" />
- <!-- Uninterpreted: list of DeviceTimeCoord structures -->
- </reply>
- </request>
-
- <struct name="DeviceTimeCoord">
- <field type="TIMESTAMP" name="time" />
- <!-- Uninterpreted: list of CARD16 -->
- </struct>
-
- <!-- ChangeKeyboardDevice -->
- <request name="ChangeKeyboardDevice" opcode="11">
- <field type="CARD8" name="device_id" />
- <pad bytes="3" />
- <reply>
- <pad bytes="1" />
- <field type="CARD8" name="status" altenum="GrabStatus" />
- <pad bytes="23" />
- </reply>
- </request>
-
- <!-- ChangePointerDevice -->
-
- <request name="ChangePointerDevice" opcode="12">
- <field type="CARD8" name="x_axis" />
- <field type="CARD8" name="y_axis" />
- <field type="CARD8" name="device_id" />
- <pad bytes="1" />
- <reply>
- <pad bytes="1" />
- <field type="CARD8" name="status" altenum="GrabStatus" />
- <pad bytes="23" />
- </reply>
- </request>
-
- <!-- GrabDevice -->
-
- <request name="GrabDevice" opcode="13">
- <field type="WINDOW" name="grab_window" />
- <field type="TIMESTAMP" name="time" altenum="Time" />
- <field type="CARD16" name="num_classes" />
- <field type="CARD8" name="this_device_mode" enum="GrabMode" />
- <field type="CARD8" name="other_device_mode" enum="GrabMode" />
- <field type="BOOL" name="owner_events" />
- <field type="CARD8" name="device_id" />
- <pad bytes="2" />
- <list type="EventClass" name="classes">
- <fieldref>num_classes</fieldref>
- </list>
- <reply>
- <pad bytes="1" />
- <field type="CARD8" name="status" enum="GrabStatus" />
- <pad bytes="23" />
- </reply>
- </request>
-
- <!-- UngrabDevice -->
-
- <request name="UngrabDevice" opcode="14">
- <field type="TIMESTAMP" name="time" altenum="Time" />
- <field type="CARD8" name="device_id" />
- </request>
-
- <!-- GrabDeviceKey -->
-
- <request name="GrabDeviceKey" opcode="15">
- <field type="WINDOW" name="grab_window" />
- <field type="CARD16" name="num_classes" />
- <field type="CARD16" name="modifiers" mask="ModMask" />
- <field type="CARD8" name="modifier_device" />
- <field type="CARD8" name="grabbed_device" />
- <field type="CARD8" name="key" altenum="Grab" />
- <field type="CARD8" name="this_device_mode" enum="GrabMode" />
- <field type="CARD8" name="other_device_mode" enum="GrabMode" />
- <field type="BOOL" name="owner_events" />
- <pad bytes="2" />
- <list type="EventClass" name="classes">
- <fieldref>num_classes</fieldref>
- </list>
- </request>
-
- <!-- UngrabDeviceKey -->
-
- <request name="UngrabDeviceKey" opcode="16">
- <field type="WINDOW" name="grabWindow" />
- <field type="CARD16" name="modifiers" mask="ModMask" />
- <field type="CARD8" name="modifier_device" />
- <field type="CARD8" name="key" altenum="Grab" />
- <field type="CARD8" name="grabbed_device" />
- </request>
-
- <!-- GrabDeviceButton -->
-
- <request name="GrabDeviceButton" opcode="17">
- <field type="WINDOW" name="grab_window" />
- <field type="CARD8" name="grabbed_device" />
- <field type="CARD8" name="modifier_device" />
- <field type="CARD16" name="num_classes" />
- <field type="CARD16" name="modifiers" mask="ModMask" />
- <field type="CARD8" name="this_device_mode" enum="GrabMode" />
- <field type="CARD8" name="other_device_mode" enum="GrabMode" />
- <field type="CARD8" name="button" altenum="Grab" />
- <field type="CARD8" name="owner_events" />
- <pad bytes="2" />
- <list type="EventClass" name="classes">
- <fieldref>num_classes</fieldref>
- </list>
- </request>
-
- <!-- UngrabDeviceButton -->
-
- <request name="UngrabDeviceButton" opcode="18">
- <field type="WINDOW" name="grab_window" />
- <field type="CARD16" name="modifiers" mask="ModMask" />
- <field type="CARD8" name="modifier_device" />
- <field type="CARD8" name="button" altenum="Grab" />
- <field type="CARD8" name="grabbed_device" />
- </request>
-
- <!-- AllowDeviceEvents -->
-
- <enum name="DeviceInputMode">
- <item name="AsyncThisDevice" />
- <item name="SyncThisDevice" />
- <item name="ReplayThisDevice" />
- <item name="AsyncOtherDevices" />
- <item name="AsyncAll" />
- <item name="SyncAll" />
- </enum>
-
- <request name="AllowDeviceEvents" opcode="19">
- <field type="TIMESTAMP" name="time" altenum="Time" />
- <field type="CARD8" name="mode" enum="DeviceInputMode" />
- <field type="CARD8" name="device_id" />
- </request>
-
- <!-- GetDeviceFocus -->
-
- <request name="GetDeviceFocus" opcode="20">
- <field type="CARD8" name="device_id" />
- <pad bytes="3" />
- <reply>
- <pad bytes="1" />
- <field type="WINDOW" name="focus" altenum="InputFocus" />
- <field type="TIMESTAMP" name="time" />
- <field type="CARD8" name="revert_to" enum="InputFocus" />
- <pad bytes="15" />
- </reply>
- </request>
-
- <!-- SetDeviceFocus -->
-
- <request name="SetDeviceFocus" opcode="21">
- <field type="WINDOW" name="focus" altenum="InputFocus" />
- <field type="TIMESTAMP" name="time" altenum="Time" />
- <field type="CARD8" name="revert_to" enum="InputFocus" />
- <field type="CARD8" name="device_id" />
- </request>
-
- <!-- GetFeedbackControl -->
-
- <request name="GetFeedbackControl" opcode="22">
- <field type="CARD8" name="device_id" />
- <pad bytes="3" />
- <reply>
- <pad bytes="1" />
- <field type="CARD16" name="num_feedback" />
- <pad bytes="22" />
- <!-- Uninterpreted: list of FeedbackState structures -->
- </reply>
- </request>
-
- <enum name="FeedbackClass">
- <item name="Keyboard" />
- <item name="Pointer" />
- <item name="String" />
- <item name="Integer" />
- <item name="Led" />
- <item name="Bell" />
- </enum>
-
- <struct name="FeedbackState">
- <field type="CARD8" name="class_id" enum="FeedbackClass" />
- <field type="CARD8" name="id" />
- <field type="CARD16" name="len" />
- </struct>
-
- <struct name="KbdFeedbackState">
- <field type="CARD8" name="class_id" enum="FeedbackClass" />
- <field type="CARD8" name="id" />
- <field type="CARD16" name="len" />
- <field type="CARD16" name="pitch" />
- <field type="CARD16" name="duration" />
- <field type="CARD32" name="led_mask" />
- <field type="CARD32" name="led_values" />
- <field type="BOOL" name="global_auto_repeat" />
- <field type="CARD8" name="click" />
- <field type="CARD8" name="percent" />
- <pad bytes="1" />
- <list type="CARD8" name="auto_repeats"><value>32</value></list>
- </struct>
-
- <struct name="PtrFeedbackState">
- <field type="CARD8" name="class_id" enum="FeedbackClass" />
- <field type="CARD8" name="id" />
- <field type="CARD16" name="len" />
- <pad bytes="2" />
- <field type="CARD16" name="accel_num" />
- <field type="CARD16" name="accel_denom" />
- <field type="CARD16" name="threshold" />
- </struct>
-
- <struct name="IntegerFeedbackState">
- <field type="CARD8" name="class_id" enum="FeedbackClass" />
- <field type="CARD8" name="id" />
- <field type="CARD16" name="len" />
- <field type="CARD32" name="resolution" />
- <field type="INT32" name="min_value" />
- <field type="INT32" name="max_value" />
- </struct>
-
- <struct name="StringFeedbackState">
- <field type="CARD8" name="class_id" enum="FeedbackClass" />
- <field type="CARD8" name="id" />
- <field type="CARD16" name="len" />
- <field type="CARD16" name="max_symbols" />
- <field type="CARD16" name="num_keysyms" />
- <list type="KEYSYM" name="keysyms">
- <fieldref>num_keysyms</fieldref>
- </list>
- </struct>
-
- <struct name="BellFeedbackState">
- <field type="CARD8" name="class_id" enum="FeedbackClass" />
- <field type="CARD8" name="id" />
- <field type="CARD16" name="len" />
- <field type="CARD8" name="percent" />
- <pad bytes="3" />
- <field type="CARD16" name="pitch" />
- <field type="CARD16" name="duration" />
- </struct>
-
- <struct name="LedFeedbackState">
- <field type="CARD8" name="class_id" enum="FeedbackClass" />
- <field type="CARD8" name="id" />
- <field type="CARD16" name="len" />
- <field type="CARD32" name="led_mask" />
- <field type="CARD32" name="led_values" />
- </struct>
-
- <!-- ChangeFeedbackControl
-
- <request name="ChangeFeedbackControl" opcode="23">
- <field type="CARD32" name="mask" />
- <field type="CARD8" name="device_id" />
- <field type="CARD8" name="feedback_id" />
- Uninterpreted: list of FeedbackCtl structures
- </request>
-
- -->
-
- <struct name="FeedbackCtl">
- <field type="CARD8" name="class_id" enum="FeedbackClass" />
- <field type="CARD8" name="id" />
- <field type="CARD16" name="len" />
- </struct>
-
- <struct name="KbdFeedbackCtl">
- <field type="CARD8" name="class_id" enum="FeedbackClass" />
- <field type="CARD8" name="id" />
- <field type="CARD16" name="len" />
- <field type="KeyCode" name="key" />
- <field type="CARD8" name="auto_repeat_mode" />
- <field type="INT8" name="key_click_percent" />
- <field type="INT8" name="bell_percent" />
- <field type="INT16" name="bell_pitch" />
- <field type="INT16" name="bell_duration" />
- <field type="CARD32" name="led_mask" />
- <field type="CARD32" name="led_values" />
- </struct>
-
- <struct name="PtrFeedbackCtl">
- <field type="CARD8" name="class_id" enum="FeedbackClass" />
- <field type="CARD8" name="id" />
- <field type="CARD16" name="len" />
- <pad bytes="2" />
- <field type="INT16" name="num" />
- <field type="INT16" name="denom" />
- <field type="INT16" name="threshold" />
- </struct>
-
- <struct name="IntegerFeedbackCtl">
- <field type="CARD8" name="class_id" enum="FeedbackClass" />
- <field type="CARD8" name="id" />
- <field type="CARD16" name="len" />
- <field type="INT32" name="int_to_display" />
- </struct>
-
- <struct name="StringFeedbackCtl">
- <field type="CARD8" name="class_id" enum="FeedbackClass" />
- <field type="CARD8" name="id" />
- <field type="CARD16" name="len" />
- <pad bytes="2" />
- <field type="CARD16" name="num_keysyms" />
- <list type="KEYSYM" name="keysyms">
- <fieldref>num_keysyms</fieldref>
- </list>
- </struct>
-
- <struct name="BellFeedbackCtl">
- <field type="CARD8" name="class_id" enum="FeedbackClass" />
- <field type="CARD8" name="id" />
- <field type="CARD16" name="len" />
- <field type="INT8" name="percent" />
- <pad bytes="3" />
- <field type="INT16" name="pitch" />
- <field type="INT16" name="duration" />
- </struct>
-
- <struct name="LedFeedbackCtl">
- <field type="CARD8" name="class_id" enum="FeedbackClass" />
- <field type="CARD8" name="id" />
- <field type="CARD16" name="len" />
- <field type="CARD32" name="led_mask" />
- <field type="CARD32" name="led_values" />
- </struct>
-
- <!-- GetDeviceKeyMapping -->
-
- <request name="GetDeviceKeyMapping" opcode="24">
- <field type="CARD8" name="device_id" />
- <field type="KeyCode" name="first_keycode" />
- <field type="CARD8" name="count" />
- <reply>
- <pad bytes="1" />
- <field type="CARD8" name="keysyms_per_keycode" />
- <pad bytes="23" />
- <list type="KEYSYM" name="keysyms">
- <fieldref>length</fieldref>
- </list>
- </reply>
- </request>
-
- <!-- ChangeDeviceKeyMapping -->
-
- <request name="ChangeDeviceKeyMapping" opcode="25">
- <field type="CARD8" name="device_id" />
- <field type="KeyCode" name="first_keycode" />
- <field type="CARD8" name="keysyms_per_keycode" />
- <field type="CARD8" name="keycode_count" />
- <list type="KEYSYM" name="keysyms">
- <op op="*">
- <fieldref>keycode_count</fieldref>
- <fieldref>keysyms_per_keycode</fieldref>
- </op>
- </list>
- </request>
-
- <!-- GetDeviceModifierMapping -->
-
- <request name="GetDeviceModifierMapping" opcode="26">
- <field type="CARD8" name="device_id" />
- <pad bytes="3" />
- <reply>
- <pad bytes="1" />
- <field type="CARD8" name="keycodes_per_modifier" />
- <pad bytes="23" />
- <list type="CARD8" name="keymaps">
- <op op="*">
- <fieldref>keycodes_per_modifier</fieldref>
- <value>8</value>
- </op>
- </list>
- </reply>
- </request>
-
- <!-- SetDeviceModifierMapping -->
-
- <request name="SetDeviceModifierMapping" opcode="27">
- <field type="CARD8" name="device_id" />
- <field type="CARD8" name="keycodes_per_modifier" />
- <pad bytes="1" />
- <list type="CARD8" name="keymaps">
- <op op="*">
- <fieldref>keycodes_per_modifier</fieldref>
- <value>8</value>
- </op>
- </list>
- <reply>
- <pad bytes="1" />
- <field type="CARD8" name="status" enum="MappingStatus" />
- <pad bytes="23" />
- </reply>
- </request>
-
- <!-- GetDeviceButtonMapping -->
-
- <request name="GetDeviceButtonMapping" opcode="28">
- <field type="CARD8" name="device_id" />
- <pad bytes="3" />
- <reply>
- <pad bytes="1" />
- <field type="CARD8" name="map_size" />
- <pad bytes="23" />
- <list type="CARD8" name="map">
- <fieldref>map_size</fieldref>
- </list>
- </reply>
- </request>
-
- <!-- SetDeviceButtonMapping -->
-
- <request name="SetDeviceButtonMapping" opcode="29">
- <field type="CARD8" name="device_id" />
- <field type="CARD8" name="map_size" />
- <pad bytes="2" />
- <list type="CARD8" name="map">
- <fieldref>map_size</fieldref>
- </list>
- <reply>
- <pad bytes="1" />
- <field type="CARD8" name="status" enum="MappingStatus" />
- <pad bytes="23" />
- </reply>
- </request>
-
- <!-- QueryDeviceState -->
-
- <request name="QueryDeviceState" opcode="30">
- <field type="CARD8" name="device_id" />
- <pad bytes="3" />
- <reply>
- <pad bytes="1" />
- <field type="CARD8" name="num_classes" />
- <pad bytes="23" />
- <!-- Uninterpreted: list of InputState structures -->
- </reply>
- </request>
-
- <struct name="InputState">
- <field type="CARD8" name="class_id" enum="InputClass" />
- <field type="CARD8" name="len" />
- <field type="CARD8" name="num_items" />
- </struct>
-
- <struct name="KeyState">
- <field type="CARD8" name="class_id" enum="InputClass" />
- <field type="CARD8" name="len" />
- <field type="CARD8" name="num_keys" />
- <pad bytes="1" />
- <list type="CARD8" name="keys">
- <value>32</value>
- </list>
- </struct>
-
- <struct name="ButtonState">
- <field type="CARD8" name="class_id" enum="InputClass" />
- <field type="CARD8" name="len" />
- <field type="CARD8" name="num_buttons" />
- <pad bytes="1" />
- <list type="CARD8" name="buttons">
- <value>32</value>
- </list>
- </struct>
-
- <struct name="ValuatorState">
- <field type="CARD8" name="class_id" enum="InputClass" />
- <field type="CARD8" name="len" />
- <field type="CARD8" name="num_valuators" />
- <field type="CARD8" name="mode" />
- <list type="CARD32" name="valuators">
- <fieldref>num_valuators</fieldref>
- </list>
- </struct>
-
- <!-- SendExtensionEvent -->
-
- <request name="SendExtensionEvent" opcode="31">
- <field type="WINDOW" name="destination" />
- <field type="CARD8" name="device_id" />
- <field type="BOOL" name="propagate" />
- <field type="CARD16" name="num_classes" />
- <field type="CARD8" name="num_events" />
- <pad bytes="3" />
- <list type="char" name="events">
- <op op="*">
- <fieldref>num_events</fieldref>
- <value>32</value>
- </op>
- </list>
- <list type="EventClass" name="classes">
- <fieldref>num_classes</fieldref>
- </list>
- </request>
-
- <!-- DeviceBell -->
-
- <request name="DeviceBell" opcode="32">
- <field type="CARD8" name="device_id" />
- <field type="CARD8" name="feedback_id" />
- <field type="CARD8" name="feedback_class" />
- <field type="INT8" name="percent" />
- </request>
-
- <!-- SetDeviceValuators -->
-
- <request name="SetDeviceValuators" opcode="33">
- <field type="CARD8" name="device_id" />
- <field type="CARD8" name="first_valuator" />
- <field type="CARD8" name="num_valuators" />
- <pad bytes="1" />
- <list type="INT32" name="valuators">
- <fieldref>num_valuators</fieldref>
- </list>
- <reply>
- <pad bytes="1" />
- <field type="CARD8" name="status" enum="GrabStatus" />
- <pad bytes="23" />
- </reply>
- </request>
-
- <!-- GetDeviceControl -->
-
- <request name="GetDeviceControl" opcode="34">
- <field type="CARD16" name="control_id" />
- <field type="CARD8" name="device_id" />
- <pad bytes="1" />
- <reply>
- <pad bytes="1" />
- <field type="CARD8" name="status" altenum="GrabStatus" />
- <pad bytes="23" />
- <!-- Uninterpreted: list of DeviceState structures -->
- </reply>
- </request>
-
- <struct name="DeviceState">
- <field type="CARD16" name="control_id" />
- <field type="CARD16" name="len" />
- </struct>
-
- <struct name="DeviceResolutionState">
- <field type="CARD16" name="control_id" />
- <field type="CARD16" name="len" />
- <field type="CARD32" name="num_valuators" />
- <list type="CARD32" name="resolution_values">
- <fieldref>num_valuators</fieldref>
- </list>
- <list type="CARD32" name="resolution_min">
- <fieldref>num_valuators</fieldref>
- </list>
- <list type="CARD32" name="resolution_max">
- <fieldref>num_valuators</fieldref>
- </list>
- </struct>
-
- <struct name="DeviceAbsCalibState">
- <field type="CARD16" name="control_id" />
- <field type="CARD16" name="len" />
- <field type="INT32" name="min_x" />
- <field type="INT32" name="max_x" />
- <field type="INT32" name="min_y" />
- <field type="INT32" name="max_y" />
- <field type="CARD32" name="flip_x" />
- <field type="CARD32" name="flip_y" />
- <field type="CARD32" name="rotation" />
- <field type="CARD32" name="button_threshold" />
- </struct>
-
- <struct name="DeviceAbsAreaState">
- <field type="CARD16" name="control_id" />
- <field type="CARD16" name="len" />
- <field type="CARD32" name="offset_x" />
- <field type="CARD32" name="offset_y" />
- <field type="CARD32" name="width" />
- <field type="CARD32" name="height" />
- <field type="CARD32" name="screen" />
- <field type="CARD32" name="following" />
- </struct>
-
- <struct name="DeviceCoreState">
- <field type="CARD16" name="control_id" />
- <field type="CARD16" name="len" />
- <field type="CARD8" name="status" />
- <field type="CARD8" name="iscore" />
- <pad bytes="2" />
- </struct>
-
- <struct name="DeviceEnableState">
- <field type="CARD16" name="control_id" />
- <field type="CARD16" name="len" />
- <field type="CARD8" name="enable" />
- <pad bytes="3" />
- </struct>
-
- <!-- ChangeDeviceControl
-
- <request name="ChangeDeviceControl" opcode="35">
- <field type="CARD16" name="control_id" />
- <field type="CARD8" name="device_id" />
- <pad bytes="1" />
- Uninterpreted: list of DeviceCtl structures
- <reply>
- <pad byte="1" />
- <field type="CARD8" name="status" altenum="GrabStatus" />
- <pad bytes="23" />
- </reply>
- </request>
-
- -->
-
- <struct name="DeviceCtl">
- <field type="CARD16" name="control_id" />
- <field type="CARD16" name="len" />
- </struct>
-
- <struct name="DeviceResolutionCtl">
- <field type="CARD16" name="control_id" />
- <field type="CARD16" name="len" />
- <field type="CARD8" name="first_valuator" />
- <field type="CARD8" name="num_valuators" />
- <list type="CARD32" name="resolution_values">
- <fieldref>num_valuators</fieldref>
- </list>
- </struct>
-
- <struct name="DeviceAbsCalibCtl">
- <field type="CARD16" name="control_id" />
- <field type="CARD16" name="len" />
- <field type="INT32" name="min_x" />
- <field type="INT32" name="max_x" />
- <field type="INT32" name="min_y" />
- <field type="INT32" name="max_y" />
- <field type="CARD32" name="flip_x" />
- <field type="CARD32" name="flip_y" />
- <field type="CARD32" name="rotation" />
- <field type="CARD32" name="button_threshold" />
- </struct>
-
- <struct name="DeviceAbsAreaCtrl">
- <field type="CARD16" name="control_id" />
- <field type="CARD16" name="len" />
- <field type="CARD32" name="offset_x" />
- <field type="CARD32" name="offset_y" />
- <field type="INT32" name="width" />
- <field type="INT32" name="height" />
- <field type="INT32" name="screen" />
- <field type="CARD32" name="following" />
- </struct>
-
- <struct name="DeviceCoreCtrl">
- <field type="CARD16" name="control_id" />
- <field type="CARD16" name="len" />
- <field type="CARD8" name="status" />
- <pad bytes="3" />
- </struct>
-
- <struct name="DeviceEnableCtrl">
- <field type="CARD16" name="control_id" />
- <field type="CARD16" name="len" />
- <field type="CARD8" name="enable" />
- <pad bytes="3" />
- </struct>
-
- <!-- EVENTS -->
-
- <event name="DeviceValuator" number="0">
- <field type="CARD8" name="device_id" />
- <field type="CARD16" name="device_state" />
- <field type="CARD8" name="num_valuators" />
- <field type="CARD8" name="first_valuator" />
- <list type="INT32" name="valuators"><value>6</value></list>
- </event>
-
- <event name="DeviceKeyPress" number="1">
- <field type="BYTE" name="detail" />
- <field type="TIMESTAMP" name="time" />
- <field type="WINDOW" name="root" />
- <field type="WINDOW" name="event" />
- <field type="WINDOW" name="child" altenum="Window" />
- <field type="INT16" name="root_x" />
- <field type="INT16" name="root_y" />
- <field type="INT16" name="event_x" />
- <field type="INT16" name="event_y" />
- <field type="CARD16" name="state" />
- <field type="BOOL" name="same_screen" />
- <field type="CARD8" name="device_id" />
- </event>
-
- <eventcopy name="DeviceKeyRelease" number="2" ref="DeviceKeyPress" />
- <eventcopy name="DeviceButtonPress" number="3" ref="DeviceKeyPress" />
- <eventcopy name="DeviceButtonRelease" number="4" ref="DeviceKeyPress" />
- <eventcopy name="DeviceMotionNotify" number="5" ref="DeviceKeyPress" />
- <eventcopy name="ProximityIn" number="8" ref="DeviceKeyPress" />
- <eventcopy name="ProximityOut" number="9" ref="DeviceKeyPress" />
-
- <event name="FocusIn" number="6">
- <field type="BYTE" name="detail" enum="NotifyDetail" />
- <field type="TIMESTAMP" name="time" />
- <field type="WINDOW" name="window" />
- <field type="BYTE" name="mode" enum="NotifyMode" />
- <field type="CARD8" name="device_id" />
- <pad bytes="18" />
- </event>
-
- <eventcopy name="FocusOut" number="7" ref="FocusIn" />
-
- <event name="DeviceStateNotify" number="10">
- <field type="BYTE" name="device_id" />
- <field type="TIMESTAMP" name="time" />
- <field type="CARD8" name="num_keys" />
- <field type="CARD8" name="num_buttons" />
- <field type="CARD8" name="num_valuators" />
- <field type="CARD8" name="classes_reported" />
- <list type="CARD8" name="buttons">
- <value>4</value>
- </list>
- <list type="CARD8" name="keys">
- <value>4</value>
- </list>
- <list type="CARD32" name="valuators">
- <value>3</value>
- </list>
- </event>
-
- <event name="DeviceMappingNotify" number="11">
- <field type="BYTE" name="device_id" />
- <field type="CARD8" name="request" />
- <field type="KeyCode" name="first_keycode" />
- <field type="CARD8" name="count" />
- <pad bytes="1" />
- <field type="TIMESTAMP" name="time" />
- <pad bytes="20" />
- </event>
-
- <event name="ChangeDeviceNotify" number="12">
- <field type="BYTE" name="device_id" />
- <field type="TIMESTAMP" name="time" />
- <field type="CARD8" name="request" />
- <pad bytes="23" />
- </event>
-
- <event name="DeviceKeyStateNotify" number="13">
- <field type="BYTE" name="device_id" />
- <list type="CARD8" name="keys">
- <value>28</value>
- </list>
- </event>
-
- <event name="DeviceButtonStateNotify" number="14">
- <field type="BYTE" name="device_id" />
- <list type="CARD8" name="buttons">
- <value>28</value>
- </list>
- </event>
-
- <event name="DevicePresenceNotify" number="15">
- <pad bytes="1" />
- <field type="TIMESTAMP" name="time" />
- <field type="BYTE" name="devchange" />
- <field type="BYTE" name="device_id" />
- <field type="CARD16" name="control" />
- <pad bytes="20" />
- </event>
-
- <!-- ERRORS -->
- <error name="Device" number="0" />
- <error name="Event" number="1" />
- <error name="Mode" number="2" />
- <error name="DeviceBusy" number="3" />
- <error name="Class" number="4" />
-
-</xcb>
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+Copyright (C) 2006 Peter Hutterer
+All Rights Reserved.
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
+ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the names of the authors or their
+institutions shall not be used in advertising or otherwise to promote the
+sale, use or other dealings in this Software without prior written
+authorization from the authors.
+-->
+
+<!-- Spec: http://refspecs.freestandards.org/X11/Xinput.pdf -->
+
+<xcb header="xinput" extension-xname="XInputExtension" extension-name="Input"
+ major-version="1" minor-version="4">
+ <import>xproto</import>
+
+ <typedef oldname="CARD8" newname="KeyCode" />
+ <typedef oldname="CARD32" newname="EventClass" />
+
+ <enum name="ValuatorMode">
+ <item name="Relative"> <value>0</value></item>
+ <item name="Absolute"> <value>1</value></item>
+ </enum>
+
+ <enum name="PropagateMode">
+ <item name="AddToList"> <value>0</value></item>
+ <item name="DeleteFromList"> <value>1</value></item>
+ </enum>
+
+ <!-- GetExtensionVersion -->
+
+ <request name="GetExtensionVersion" opcode="1">
+ <field type="CARD16" name="name_len" />
+ <pad bytes="2" />
+ <list type="char" name="name">
+ <fieldref>name_len</fieldref>
+ </list>
+ <reply>
+ <pad bytes="1" />
+ <field type="CARD16" name="server_major" />
+ <field type="CARD16" name="server_minor" />
+ <field type="BOOL" name="present" />
+ <pad bytes="19" />
+ </reply>
+ </request>
+
+ <!-- ListInputDevices -->
+
+ <enum name="DeviceUse">
+ <item name="IsXPointer"><value>0</value></item>
+ <item name="IsXKeyboard"><value>1</value></item>
+ <item name="IsXExtensionDevice"><value>2</value></item>
+ <item name="IsXExtensionKeyboard"><value>3</value></item>
+ <item name="IsXExtensionPointer"><value>4</value></item>
+ </enum>
+
+ <struct name="DeviceInfo">
+ <field type="ATOM" name="device_type" />
+ <field type="CARD8" name="device_id" />
+ <field type="CARD8" name="num_class_info" />
+ <field type="CARD8" name="device_use" enum="DeviceUse" />
+ <pad bytes="1" />
+ </struct>
+
+ <request name="ListInputDevices" opcode="2">
+ <reply>
+ <pad bytes="1" />
+ <field type="CARD8" name="devices_len" />
+ <pad bytes="23" />
+ <list type="DeviceInfo" name="devices">
+ <fieldref>devices_len</fieldref>
+ </list>
+ <!-- Uninterpreted: list of deviceinfo structs of 3 the subtypes -->
+ <!-- Uninterpreted: list of null-terminated strings -->
+ </reply>
+ </request>
+
+ <enum name="InputClass">
+ <item name="Key"><value>0</value></item>
+ <item name="Button"><value>1</value></item>
+ <item name="Valuator"><value>2</value></item>
+ <item name="Feedback"><value>3</value></item>
+ <item name="Proximity"><value>4</value></item>
+ <item name="Focus"><value>5</value></item>
+ <item name="Other"><value>6</value></item>
+ </enum>
+
+ <struct name="InputInfo">
+ <field type="CARD8" name="class_id" enum="InputClass" />
+ <field type="CARD8" name="len" />
+ </struct>
+
+ <struct name="KeyInfo">
+ <field type="CARD8" name="class_id" enum="InputClass" />
+ <field type="CARD8" name="len" />
+ <field type="KeyCode" name="min_keycode" />
+ <field type="KeyCode" name="max_keycode" />
+ <field type="CARD16" name="num_keys" />
+ <pad bytes="2" />
+ </struct>
+
+ <struct name="ButtonInfo">
+ <field type="CARD8" name="class_id" enum="InputClass" />
+ <field type="CARD8" name="len" />
+ <field type="CARD16" name="num_buttons" />
+ </struct>
+
+ <struct name="AxisInfo">
+ <field type="CARD32" name="resolution" />
+ <field type="INT32" name="minimum" />
+ <field type="INT32" name="maximum" />
+ </struct>
+
+ <struct name="ValuatorInfo">
+ <field type="CARD8" name="class_id" enum="InputClass" />
+ <field type="CARD8" name="len" />
+ <field type="CARD8" name="axes_len" />
+ <field type="CARD8" name="mode" enum="ValuatorMode" />
+ <field type="CARD32" name="motion_size" />
+ <list type="AxisInfo" name="axes">
+ <fieldref>axes_len</fieldref>
+ </list>
+ </struct>
+
+ <!-- OpenDevice -->
+
+ <struct name="InputClassInfo">
+ <field type="CARD8" name="class_id" enum="InputClass" />
+ <field type="CARD8" name="event_type_base" />
+ </struct>
+
+ <request name="OpenDevice" opcode="3">
+ <field type="CARD8" name="device_id" />
+ <pad bytes="3" />
+ <reply>
+ <pad bytes="1" />
+ <field type="CARD8" name="num_classes" />
+ <pad bytes="23" />
+ <list type="InputClassInfo" name="class_info">
+ <fieldref>num_classes</fieldref>
+ </list>
+ </reply>
+ </request>
+
+ <!-- CloseDevice -->
+
+ <request name="CloseDevice" opcode="4">
+ <field type="CARD8" name="device_id" />
+ <pad bytes="3" />
+ </request>
+
+ <!-- SetDeviceMode -->
+
+ <request name="SetDeviceMode" opcode="5">
+ <field type="CARD8" name="device_id" />
+ <field type="CARD8" name="mode" enum="ValuatorMode" />
+ <pad bytes="2" />
+ <reply>
+ <pad bytes="1" />
+ <field type="CARD8" name="status" altenum="GrabStatus" />
+ <pad bytes="23" />
+ </reply>
+ </request>
+
+ <!-- SelectExtensionEvent -->
+
+ <request name="SelectExtensionEvent" opcode="6">
+ <field type="WINDOW" name="window" />
+ <field type="CARD16" name="num_classes" />
+ <pad bytes="2" />
+ <list type="EventClass" name="classes">
+ <fieldref>num_classes</fieldref>
+ </list>
+ </request>
+
+ <!-- GetSelectedExtensionEvents -->
+
+ <request name="GetSelectedExtensionEvents" opcode="7">
+ <field type="WINDOW" name="window" />
+ <reply>
+ <pad bytes="1" />
+ <field type="CARD16" name="num_this_classes" />
+ <field type="CARD16" name="num_all_classes" />
+ <pad bytes="20" />
+ <list type="EventClass" name="this_classes">
+ <fieldref>num_this_classes</fieldref>
+ </list>
+ <list type="EventClass" name="all_classes">
+ <fieldref>num_all_classes</fieldref>
+ </list>
+ </reply>
+ </request>
+
+ <!-- ChangeDeviceDontPropagateList -->
+
+ <request name="ChangeDeviceDontPropagateList" opcode="8">
+ <field type="WINDOW" name="window" />
+ <field type="CARD16" name="num_classes" />
+ <field type="CARD8" name="mode" enum="PropagateMode" />
+ <pad bytes="1" />
+ <list type="EventClass" name="classes">
+ <fieldref>num_classes</fieldref>
+ </list>
+ </request>
+
+ <!-- GetDeviceDontPropagateList -->
+
+ <request name="GetDeviceDontPropagateList" opcode="9">
+ <field type="WINDOW" name="window" />
+ <reply>
+ <pad bytes="1" />
+ <field type="CARD16" name="num_classes" />
+ <pad bytes="22" />
+ <list type="EventClass" name="classes">
+ <fieldref>num_classes</fieldref>
+ </list>
+ </reply>
+ </request>
+
+ <!-- GetDeviceMotionEvents -->
+
+ <request name="GetDeviceMotionEvents" opcode="10">
+ <field type="TIMESTAMP" name="start" />
+ <field type="TIMESTAMP" name="stop" altenum="Time" />
+ <field type="CARD8" name="device_id" />
+ <reply>
+ <pad bytes="1" />
+ <field type="CARD32" name="num_coords" />
+ <field type="CARD8" name="num_axes" />
+ <field type="CARD8" name="device_mode" enum="ValuatorMode" />
+ <pad bytes="18" />
+ <!-- Uninterpreted: list of DeviceTimeCoord structures -->
+ </reply>
+ </request>
+
+ <struct name="DeviceTimeCoord">
+ <field type="TIMESTAMP" name="time" />
+ <!-- Uninterpreted: list of CARD16 -->
+ </struct>
+
+ <!-- ChangeKeyboardDevice -->
+ <request name="ChangeKeyboardDevice" opcode="11">
+ <field type="CARD8" name="device_id" />
+ <pad bytes="3" />
+ <reply>
+ <pad bytes="1" />
+ <field type="CARD8" name="status" altenum="GrabStatus" />
+ <pad bytes="23" />
+ </reply>
+ </request>
+
+ <!-- ChangePointerDevice -->
+
+ <request name="ChangePointerDevice" opcode="12">
+ <field type="CARD8" name="x_axis" />
+ <field type="CARD8" name="y_axis" />
+ <field type="CARD8" name="device_id" />
+ <pad bytes="1" />
+ <reply>
+ <pad bytes="1" />
+ <field type="CARD8" name="status" altenum="GrabStatus" />
+ <pad bytes="23" />
+ </reply>
+ </request>
+
+ <!-- GrabDevice -->
+
+ <request name="GrabDevice" opcode="13">
+ <field type="WINDOW" name="grab_window" />
+ <field type="TIMESTAMP" name="time" altenum="Time" />
+ <field type="CARD16" name="num_classes" />
+ <field type="CARD8" name="this_device_mode" enum="GrabMode" />
+ <field type="CARD8" name="other_device_mode" enum="GrabMode" />
+ <field type="BOOL" name="owner_events" />
+ <field type="CARD8" name="device_id" />
+ <pad bytes="2" />
+ <list type="EventClass" name="classes">
+ <fieldref>num_classes</fieldref>
+ </list>
+ <reply>
+ <pad bytes="1" />
+ <field type="CARD8" name="status" enum="GrabStatus" />
+ <pad bytes="23" />
+ </reply>
+ </request>
+
+ <!-- UngrabDevice -->
+
+ <request name="UngrabDevice" opcode="14">
+ <field type="TIMESTAMP" name="time" altenum="Time" />
+ <field type="CARD8" name="device_id" />
+ </request>
+
+ <!-- GrabDeviceKey -->
+
+ <request name="GrabDeviceKey" opcode="15">
+ <field type="WINDOW" name="grab_window" />
+ <field type="CARD16" name="num_classes" />
+ <field type="CARD16" name="modifiers" mask="ModMask" />
+ <field type="CARD8" name="modifier_device" />
+ <field type="CARD8" name="grabbed_device" />
+ <field type="CARD8" name="key" altenum="Grab" />
+ <field type="CARD8" name="this_device_mode" enum="GrabMode" />
+ <field type="CARD8" name="other_device_mode" enum="GrabMode" />
+ <field type="BOOL" name="owner_events" />
+ <pad bytes="2" />
+ <list type="EventClass" name="classes">
+ <fieldref>num_classes</fieldref>
+ </list>
+ </request>
+
+ <!-- UngrabDeviceKey -->
+
+ <request name="UngrabDeviceKey" opcode="16">
+ <field type="WINDOW" name="grabWindow" />
+ <field type="CARD16" name="modifiers" mask="ModMask" />
+ <field type="CARD8" name="modifier_device" />
+ <field type="CARD8" name="key" altenum="Grab" />
+ <field type="CARD8" name="grabbed_device" />
+ </request>
+
+ <!-- GrabDeviceButton -->
+
+ <request name="GrabDeviceButton" opcode="17">
+ <field type="WINDOW" name="grab_window" />
+ <field type="CARD8" name="grabbed_device" />
+ <field type="CARD8" name="modifier_device" />
+ <field type="CARD16" name="num_classes" />
+ <field type="CARD16" name="modifiers" mask="ModMask" />
+ <field type="CARD8" name="this_device_mode" enum="GrabMode" />
+ <field type="CARD8" name="other_device_mode" enum="GrabMode" />
+ <field type="CARD8" name="button" altenum="Grab" />
+ <field type="CARD8" name="owner_events" />
+ <pad bytes="2" />
+ <list type="EventClass" name="classes">
+ <fieldref>num_classes</fieldref>
+ </list>
+ </request>
+
+ <!-- UngrabDeviceButton -->
+
+ <request name="UngrabDeviceButton" opcode="18">
+ <field type="WINDOW" name="grab_window" />
+ <field type="CARD16" name="modifiers" mask="ModMask" />
+ <field type="CARD8" name="modifier_device" />
+ <field type="CARD8" name="button" altenum="Grab" />
+ <field type="CARD8" name="grabbed_device" />
+ </request>
+
+ <!-- AllowDeviceEvents -->
+
+ <enum name="DeviceInputMode">
+ <item name="AsyncThisDevice" />
+ <item name="SyncThisDevice" />
+ <item name="ReplayThisDevice" />
+ <item name="AsyncOtherDevices" />
+ <item name="AsyncAll" />
+ <item name="SyncAll" />
+ </enum>
+
+ <request name="AllowDeviceEvents" opcode="19">
+ <field type="TIMESTAMP" name="time" altenum="Time" />
+ <field type="CARD8" name="mode" enum="DeviceInputMode" />
+ <field type="CARD8" name="device_id" />
+ </request>
+
+ <!-- GetDeviceFocus -->
+
+ <request name="GetDeviceFocus" opcode="20">
+ <field type="CARD8" name="device_id" />
+ <pad bytes="3" />
+ <reply>
+ <pad bytes="1" />
+ <field type="WINDOW" name="focus" altenum="InputFocus" />
+ <field type="TIMESTAMP" name="time" />
+ <field type="CARD8" name="revert_to" enum="InputFocus" />
+ <pad bytes="15" />
+ </reply>
+ </request>
+
+ <!-- SetDeviceFocus -->
+
+ <request name="SetDeviceFocus" opcode="21">
+ <field type="WINDOW" name="focus" altenum="InputFocus" />
+ <field type="TIMESTAMP" name="time" altenum="Time" />
+ <field type="CARD8" name="revert_to" enum="InputFocus" />
+ <field type="CARD8" name="device_id" />
+ </request>
+
+ <!-- GetFeedbackControl -->
+
+ <request name="GetFeedbackControl" opcode="22">
+ <field type="CARD8" name="device_id" />
+ <pad bytes="3" />
+ <reply>
+ <pad bytes="1" />
+ <field type="CARD16" name="num_feedback" />
+ <pad bytes="22" />
+ <!-- Uninterpreted: list of FeedbackState structures -->
+ </reply>
+ </request>
+
+ <enum name="FeedbackClass">
+ <item name="Keyboard" />
+ <item name="Pointer" />
+ <item name="String" />
+ <item name="Integer" />
+ <item name="Led" />
+ <item name="Bell" />
+ </enum>
+
+ <struct name="FeedbackState">
+ <field type="CARD8" name="class_id" enum="FeedbackClass" />
+ <field type="CARD8" name="id" />
+ <field type="CARD16" name="len" />
+ </struct>
+
+ <struct name="KbdFeedbackState">
+ <field type="CARD8" name="class_id" enum="FeedbackClass" />
+ <field type="CARD8" name="id" />
+ <field type="CARD16" name="len" />
+ <field type="CARD16" name="pitch" />
+ <field type="CARD16" name="duration" />
+ <field type="CARD32" name="led_mask" />
+ <field type="CARD32" name="led_values" />
+ <field type="BOOL" name="global_auto_repeat" />
+ <field type="CARD8" name="click" />
+ <field type="CARD8" name="percent" />
+ <pad bytes="1" />
+ <list type="CARD8" name="auto_repeats"><value>32</value></list>
+ </struct>
+
+ <struct name="PtrFeedbackState">
+ <field type="CARD8" name="class_id" enum="FeedbackClass" />
+ <field type="CARD8" name="id" />
+ <field type="CARD16" name="len" />
+ <pad bytes="2" />
+ <field type="CARD16" name="accel_num" />
+ <field type="CARD16" name="accel_denom" />
+ <field type="CARD16" name="threshold" />
+ </struct>
+
+ <struct name="IntegerFeedbackState">
+ <field type="CARD8" name="class_id" enum="FeedbackClass" />
+ <field type="CARD8" name="id" />
+ <field type="CARD16" name="len" />
+ <field type="CARD32" name="resolution" />
+ <field type="INT32" name="min_value" />
+ <field type="INT32" name="max_value" />
+ </struct>
+
+ <struct name="StringFeedbackState">
+ <field type="CARD8" name="class_id" enum="FeedbackClass" />
+ <field type="CARD8" name="id" />
+ <field type="CARD16" name="len" />
+ <field type="CARD16" name="max_symbols" />
+ <field type="CARD16" name="num_keysyms" />
+ <list type="KEYSYM" name="keysyms">
+ <fieldref>num_keysyms</fieldref>
+ </list>
+ </struct>
+
+ <struct name="BellFeedbackState">
+ <field type="CARD8" name="class_id" enum="FeedbackClass" />
+ <field type="CARD8" name="id" />
+ <field type="CARD16" name="len" />
+ <field type="CARD8" name="percent" />
+ <pad bytes="3" />
+ <field type="CARD16" name="pitch" />
+ <field type="CARD16" name="duration" />
+ </struct>
+
+ <struct name="LedFeedbackState">
+ <field type="CARD8" name="class_id" enum="FeedbackClass" />
+ <field type="CARD8" name="id" />
+ <field type="CARD16" name="len" />
+ <field type="CARD32" name="led_mask" />
+ <field type="CARD32" name="led_values" />
+ </struct>
+
+ <!-- ChangeFeedbackControl
+
+ <request name="ChangeFeedbackControl" opcode="23">
+ <field type="CARD32" name="mask" />
+ <field type="CARD8" name="device_id" />
+ <field type="CARD8" name="feedback_id" />
+ Uninterpreted: list of FeedbackCtl structures
+ </request>
+
+ -->
+
+ <struct name="FeedbackCtl">
+ <field type="CARD8" name="class_id" enum="FeedbackClass" />
+ <field type="CARD8" name="id" />
+ <field type="CARD16" name="len" />
+ </struct>
+
+ <struct name="KbdFeedbackCtl">
+ <field type="CARD8" name="class_id" enum="FeedbackClass" />
+ <field type="CARD8" name="id" />
+ <field type="CARD16" name="len" />
+ <field type="KeyCode" name="key" />
+ <field type="CARD8" name="auto_repeat_mode" />
+ <field type="INT8" name="key_click_percent" />
+ <field type="INT8" name="bell_percent" />
+ <field type="INT16" name="bell_pitch" />
+ <field type="INT16" name="bell_duration" />
+ <field type="CARD32" name="led_mask" />
+ <field type="CARD32" name="led_values" />
+ </struct>
+
+ <struct name="PtrFeedbackCtl">
+ <field type="CARD8" name="class_id" enum="FeedbackClass" />
+ <field type="CARD8" name="id" />
+ <field type="CARD16" name="len" />
+ <pad bytes="2" />
+ <field type="INT16" name="num" />
+ <field type="INT16" name="denom" />
+ <field type="INT16" name="threshold" />
+ </struct>
+
+ <struct name="IntegerFeedbackCtl">
+ <field type="CARD8" name="class_id" enum="FeedbackClass" />
+ <field type="CARD8" name="id" />
+ <field type="CARD16" name="len" />
+ <field type="INT32" name="int_to_display" />
+ </struct>
+
+ <struct name="StringFeedbackCtl">
+ <field type="CARD8" name="class_id" enum="FeedbackClass" />
+ <field type="CARD8" name="id" />
+ <field type="CARD16" name="len" />
+ <pad bytes="2" />
+ <field type="CARD16" name="num_keysyms" />
+ <list type="KEYSYM" name="keysyms">
+ <fieldref>num_keysyms</fieldref>
+ </list>
+ </struct>
+
+ <struct name="BellFeedbackCtl">
+ <field type="CARD8" name="class_id" enum="FeedbackClass" />
+ <field type="CARD8" name="id" />
+ <field type="CARD16" name="len" />
+ <field type="INT8" name="percent" />
+ <pad bytes="3" />
+ <field type="INT16" name="pitch" />
+ <field type="INT16" name="duration" />
+ </struct>
+
+ <struct name="LedFeedbackCtl">
+ <field type="CARD8" name="class_id" enum="FeedbackClass" />
+ <field type="CARD8" name="id" />
+ <field type="CARD16" name="len" />
+ <field type="CARD32" name="led_mask" />
+ <field type="CARD32" name="led_values" />
+ </struct>
+
+ <!-- GetDeviceKeyMapping -->
+
+ <request name="GetDeviceKeyMapping" opcode="24">
+ <field type="CARD8" name="device_id" />
+ <field type="KeyCode" name="first_keycode" />
+ <field type="CARD8" name="count" />
+ <reply>
+ <pad bytes="1" />
+ <field type="CARD8" name="keysyms_per_keycode" />
+ <pad bytes="23" />
+ <list type="KEYSYM" name="keysyms">
+ <fieldref>length</fieldref>
+ </list>
+ </reply>
+ </request>
+
+ <!-- ChangeDeviceKeyMapping -->
+
+ <request name="ChangeDeviceKeyMapping" opcode="25">
+ <field type="CARD8" name="device_id" />
+ <field type="KeyCode" name="first_keycode" />
+ <field type="CARD8" name="keysyms_per_keycode" />
+ <field type="CARD8" name="keycode_count" />
+ <list type="KEYSYM" name="keysyms">
+ <op op="*">
+ <fieldref>keycode_count</fieldref>
+ <fieldref>keysyms_per_keycode</fieldref>
+ </op>
+ </list>
+ </request>
+
+ <!-- GetDeviceModifierMapping -->
+
+ <request name="GetDeviceModifierMapping" opcode="26">
+ <field type="CARD8" name="device_id" />
+ <pad bytes="3" />
+ <reply>
+ <pad bytes="1" />
+ <field type="CARD8" name="keycodes_per_modifier" />
+ <pad bytes="23" />
+ <list type="CARD8" name="keymaps">
+ <op op="*">
+ <fieldref>keycodes_per_modifier</fieldref>
+ <value>8</value>
+ </op>
+ </list>
+ </reply>
+ </request>
+
+ <!-- SetDeviceModifierMapping -->
+
+ <request name="SetDeviceModifierMapping" opcode="27">
+ <field type="CARD8" name="device_id" />
+ <field type="CARD8" name="keycodes_per_modifier" />
+ <pad bytes="1" />
+ <list type="CARD8" name="keymaps">
+ <op op="*">
+ <fieldref>keycodes_per_modifier</fieldref>
+ <value>8</value>
+ </op>
+ </list>
+ <reply>
+ <pad bytes="1" />
+ <field type="CARD8" name="status" enum="MappingStatus" />
+ <pad bytes="23" />
+ </reply>
+ </request>
+
+ <!-- GetDeviceButtonMapping -->
+
+ <request name="GetDeviceButtonMapping" opcode="28">
+ <field type="CARD8" name="device_id" />
+ <pad bytes="3" />
+ <reply>
+ <pad bytes="1" />
+ <field type="CARD8" name="map_size" />
+ <pad bytes="23" />
+ <list type="CARD8" name="map">
+ <fieldref>map_size</fieldref>
+ </list>
+ </reply>
+ </request>
+
+ <!-- SetDeviceButtonMapping -->
+
+ <request name="SetDeviceButtonMapping" opcode="29">
+ <field type="CARD8" name="device_id" />
+ <field type="CARD8" name="map_size" />
+ <pad bytes="2" />
+ <list type="CARD8" name="map">
+ <fieldref>map_size</fieldref>
+ </list>
+ <reply>
+ <pad bytes="1" />
+ <field type="CARD8" name="status" enum="MappingStatus" />
+ <pad bytes="23" />
+ </reply>
+ </request>
+
+ <!-- QueryDeviceState -->
+
+ <request name="QueryDeviceState" opcode="30">
+ <field type="CARD8" name="device_id" />
+ <pad bytes="3" />
+ <reply>
+ <pad bytes="1" />
+ <field type="CARD8" name="num_classes" />
+ <pad bytes="23" />
+ <!-- Uninterpreted: list of InputState structures -->
+ </reply>
+ </request>
+
+ <struct name="InputState">
+ <field type="CARD8" name="class_id" enum="InputClass" />
+ <field type="CARD8" name="len" />
+ <field type="CARD8" name="num_items" />
+ </struct>
+
+ <struct name="KeyState">
+ <field type="CARD8" name="class_id" enum="InputClass" />
+ <field type="CARD8" name="len" />
+ <field type="CARD8" name="num_keys" />
+ <pad bytes="1" />
+ <list type="CARD8" name="keys">
+ <value>32</value>
+ </list>
+ </struct>
+
+ <struct name="ButtonState">
+ <field type="CARD8" name="class_id" enum="InputClass" />
+ <field type="CARD8" name="len" />
+ <field type="CARD8" name="num_buttons" />
+ <pad bytes="1" />
+ <list type="CARD8" name="buttons">
+ <value>32</value>
+ </list>
+ </struct>
+
+ <struct name="ValuatorState">
+ <field type="CARD8" name="class_id" enum="InputClass" />
+ <field type="CARD8" name="len" />
+ <field type="CARD8" name="num_valuators" />
+ <field type="CARD8" name="mode" />
+ <list type="CARD32" name="valuators">
+ <fieldref>num_valuators</fieldref>
+ </list>
+ </struct>
+
+ <!-- SendExtensionEvent -->
+
+ <request name="SendExtensionEvent" opcode="31">
+ <field type="WINDOW" name="destination" />
+ <field type="CARD8" name="device_id" />
+ <field type="BOOL" name="propagate" />
+ <field type="CARD16" name="num_classes" />
+ <field type="CARD8" name="num_events" />
+ <pad bytes="3" />
+ <list type="char" name="events">
+ <op op="*">
+ <fieldref>num_events</fieldref>
+ <value>32</value>
+ </op>
+ </list>
+ <list type="EventClass" name="classes">
+ <fieldref>num_classes</fieldref>
+ </list>
+ </request>
+
+ <!-- DeviceBell -->
+
+ <request name="DeviceBell" opcode="32">
+ <field type="CARD8" name="device_id" />
+ <field type="CARD8" name="feedback_id" />
+ <field type="CARD8" name="feedback_class" />
+ <field type="INT8" name="percent" />
+ </request>
+
+ <!-- SetDeviceValuators -->
+
+ <request name="SetDeviceValuators" opcode="33">
+ <field type="CARD8" name="device_id" />
+ <field type="CARD8" name="first_valuator" />
+ <field type="CARD8" name="num_valuators" />
+ <pad bytes="1" />
+ <list type="INT32" name="valuators">
+ <fieldref>num_valuators</fieldref>
+ </list>
+ <reply>
+ <pad bytes="1" />
+ <field type="CARD8" name="status" enum="GrabStatus" />
+ <pad bytes="23" />
+ </reply>
+ </request>
+
+ <!-- GetDeviceControl -->
+
+ <request name="GetDeviceControl" opcode="34">
+ <field type="CARD16" name="control_id" />
+ <field type="CARD8" name="device_id" />
+ <pad bytes="1" />
+ <reply>
+ <pad bytes="1" />
+ <field type="CARD8" name="status" altenum="GrabStatus" />
+ <pad bytes="23" />
+ <!-- Uninterpreted: list of DeviceState structures -->
+ </reply>
+ </request>
+
+ <struct name="DeviceState">
+ <field type="CARD16" name="control_id" />
+ <field type="CARD16" name="len" />
+ </struct>
+
+ <struct name="DeviceResolutionState">
+ <field type="CARD16" name="control_id" />
+ <field type="CARD16" name="len" />
+ <field type="CARD32" name="num_valuators" />
+ <list type="CARD32" name="resolution_values">
+ <fieldref>num_valuators</fieldref>
+ </list>
+ <list type="CARD32" name="resolution_min">
+ <fieldref>num_valuators</fieldref>
+ </list>
+ <list type="CARD32" name="resolution_max">
+ <fieldref>num_valuators</fieldref>
+ </list>
+ </struct>
+
+ <struct name="DeviceAbsCalibState">
+ <field type="CARD16" name="control_id" />
+ <field type="CARD16" name="len" />
+ <field type="INT32" name="min_x" />
+ <field type="INT32" name="max_x" />
+ <field type="INT32" name="min_y" />
+ <field type="INT32" name="max_y" />
+ <field type="CARD32" name="flip_x" />
+ <field type="CARD32" name="flip_y" />
+ <field type="CARD32" name="rotation" />
+ <field type="CARD32" name="button_threshold" />
+ </struct>
+
+ <struct name="DeviceAbsAreaState">
+ <field type="CARD16" name="control_id" />
+ <field type="CARD16" name="len" />
+ <field type="CARD32" name="offset_x" />
+ <field type="CARD32" name="offset_y" />
+ <field type="CARD32" name="width" />
+ <field type="CARD32" name="height" />
+ <field type="CARD32" name="screen" />
+ <field type="CARD32" name="following" />
+ </struct>
+
+ <struct name="DeviceCoreState">
+ <field type="CARD16" name="control_id" />
+ <field type="CARD16" name="len" />
+ <field type="CARD8" name="status" />
+ <field type="CARD8" name="iscore" />
+ <pad bytes="2" />
+ </struct>
+
+ <struct name="DeviceEnableState">
+ <field type="CARD16" name="control_id" />
+ <field type="CARD16" name="len" />
+ <field type="CARD8" name="enable" />
+ <pad bytes="3" />
+ </struct>
+
+ <!-- ChangeDeviceControl
+
+ <request name="ChangeDeviceControl" opcode="35">
+ <field type="CARD16" name="control_id" />
+ <field type="CARD8" name="device_id" />
+ <pad bytes="1" />
+ Uninterpreted: list of DeviceCtl structures
+ <reply>
+ <pad byte="1" />
+ <field type="CARD8" name="status" altenum="GrabStatus" />
+ <pad bytes="23" />
+ </reply>
+ </request>
+
+ -->
+
+ <struct name="DeviceCtl">
+ <field type="CARD16" name="control_id" />
+ <field type="CARD16" name="len" />
+ </struct>
+
+ <struct name="DeviceResolutionCtl">
+ <field type="CARD16" name="control_id" />
+ <field type="CARD16" name="len" />
+ <field type="CARD8" name="first_valuator" />
+ <field type="CARD8" name="num_valuators" />
+ <list type="CARD32" name="resolution_values">
+ <fieldref>num_valuators</fieldref>
+ </list>
+ </struct>
+
+ <struct name="DeviceAbsCalibCtl">
+ <field type="CARD16" name="control_id" />
+ <field type="CARD16" name="len" />
+ <field type="INT32" name="min_x" />
+ <field type="INT32" name="max_x" />
+ <field type="INT32" name="min_y" />
+ <field type="INT32" name="max_y" />
+ <field type="CARD32" name="flip_x" />
+ <field type="CARD32" name="flip_y" />
+ <field type="CARD32" name="rotation" />
+ <field type="CARD32" name="button_threshold" />
+ </struct>
+
+ <struct name="DeviceAbsAreaCtrl">
+ <field type="CARD16" name="control_id" />
+ <field type="CARD16" name="len" />
+ <field type="CARD32" name="offset_x" />
+ <field type="CARD32" name="offset_y" />
+ <field type="INT32" name="width" />
+ <field type="INT32" name="height" />
+ <field type="INT32" name="screen" />
+ <field type="CARD32" name="following" />
+ </struct>
+
+ <struct name="DeviceCoreCtrl">
+ <field type="CARD16" name="control_id" />
+ <field type="CARD16" name="len" />
+ <field type="CARD8" name="status" />
+ <pad bytes="3" />
+ </struct>
+
+ <struct name="DeviceEnableCtrl">
+ <field type="CARD16" name="control_id" />
+ <field type="CARD16" name="len" />
+ <field type="CARD8" name="enable" />
+ <pad bytes="3" />
+ </struct>
+
+ <!-- EVENTS -->
+
+ <event name="DeviceValuator" number="0">
+ <field type="CARD8" name="device_id" />
+ <field type="CARD16" name="device_state" />
+ <field type="CARD8" name="num_valuators" />
+ <field type="CARD8" name="first_valuator" />
+ <list type="INT32" name="valuators"><value>6</value></list>
+ </event>
+
+ <event name="DeviceKeyPress" number="1">
+ <field type="BYTE" name="detail" />
+ <field type="TIMESTAMP" name="time" />
+ <field type="WINDOW" name="root" />
+ <field type="WINDOW" name="event" />
+ <field type="WINDOW" name="child" altenum="Window" />
+ <field type="INT16" name="root_x" />
+ <field type="INT16" name="root_y" />
+ <field type="INT16" name="event_x" />
+ <field type="INT16" name="event_y" />
+ <field type="CARD16" name="state" />
+ <field type="BOOL" name="same_screen" />
+ <field type="CARD8" name="device_id" />
+ </event>
+
+ <eventcopy name="DeviceKeyRelease" number="2" ref="DeviceKeyPress" />
+ <eventcopy name="DeviceButtonPress" number="3" ref="DeviceKeyPress" />
+ <eventcopy name="DeviceButtonRelease" number="4" ref="DeviceKeyPress" />
+ <eventcopy name="DeviceMotionNotify" number="5" ref="DeviceKeyPress" />
+ <eventcopy name="ProximityIn" number="8" ref="DeviceKeyPress" />
+ <eventcopy name="ProximityOut" number="9" ref="DeviceKeyPress" />
+
+ <event name="FocusIn" number="6">
+ <field type="BYTE" name="detail" enum="NotifyDetail" />
+ <field type="TIMESTAMP" name="time" />
+ <field type="WINDOW" name="window" />
+ <field type="BYTE" name="mode" enum="NotifyMode" />
+ <field type="CARD8" name="device_id" />
+ <pad bytes="18" />
+ </event>
+
+ <eventcopy name="FocusOut" number="7" ref="FocusIn" />
+
+ <event name="DeviceStateNotify" number="10">
+ <field type="BYTE" name="device_id" />
+ <field type="TIMESTAMP" name="time" />
+ <field type="CARD8" name="num_keys" />
+ <field type="CARD8" name="num_buttons" />
+ <field type="CARD8" name="num_valuators" />
+ <field type="CARD8" name="classes_reported" />
+ <list type="CARD8" name="buttons">
+ <value>4</value>
+ </list>
+ <list type="CARD8" name="keys">
+ <value>4</value>
+ </list>
+ <list type="CARD32" name="valuators">
+ <value>3</value>
+ </list>
+ </event>
+
+ <event name="DeviceMappingNotify" number="11">
+ <field type="BYTE" name="device_id" />
+ <field type="CARD8" name="request" />
+ <field type="KeyCode" name="first_keycode" />
+ <field type="CARD8" name="count" />
+ <pad bytes="1" />
+ <field type="TIMESTAMP" name="time" />
+ <pad bytes="20" />
+ </event>
+
+ <event name="ChangeDeviceNotify" number="12">
+ <field type="BYTE" name="device_id" />
+ <field type="TIMESTAMP" name="time" />
+ <field type="CARD8" name="request" />
+ <pad bytes="23" />
+ </event>
+
+ <event name="DeviceKeyStateNotify" number="13">
+ <field type="BYTE" name="device_id" />
+ <list type="CARD8" name="keys">
+ <value>28</value>
+ </list>
+ </event>
+
+ <event name="DeviceButtonStateNotify" number="14">
+ <field type="BYTE" name="device_id" />
+ <list type="CARD8" name="buttons">
+ <value>28</value>
+ </list>
+ </event>
+
+ <event name="DevicePresenceNotify" number="15">
+ <pad bytes="1" />
+ <field type="TIMESTAMP" name="time" />
+ <field type="BYTE" name="devchange" />
+ <field type="BYTE" name="device_id" />
+ <field type="CARD16" name="control" />
+ <pad bytes="20" />
+ </event>
+
+ <!-- ERRORS -->
+ <error name="Device" number="0" />
+ <error name="Event" number="1" />
+ <error name="Mode" number="2" />
+ <error name="DeviceBusy" number="3" />
+ <error name="Class" number="4" />
+
+</xcb>
diff --git a/libxcb/xcb-proto/src/xprint.xml b/libxcb/xcb-proto/src/xprint.xml
index 4107e96e5..ffd8df1ea 100644
--- a/libxcb/xcb-proto/src/xprint.xml
+++ b/libxcb/xcb-proto/src/xprint.xml
@@ -1,329 +1,329 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-Copyright (C) 2005 Jeremy Kolb.
-All Rights Reserved.
-
-Permission is hereby granted, free of charge, to any person ob/Sintaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
-ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the names of the authors or their
-institutions shall not be used in advertising or otherwise to promote the
-sale, use or other dealings in this Software without prior written
-authorization from the authors.
--->
-
-<xcb header="xprint" extension-xname="XpExtension" extension-name="XPrint"
- extension-multiword="true" major-version="1" minor-version="0">
-
- <!-- Conforms to XPRINT 1.0 -->
-
- <import>xproto</import>
-
- <typedef oldname="char" newname="STRING8" />
-
- <!-- Types -->
- <struct name="PRINTER">
- <field type="CARD32" name="nameLen" />
- <list type="STRING8" name="name">
- <fieldref>nameLen</fieldref>
- </list>
- <!-- Padding -->
- <field type="CARD32" name="descLen" />
- <list type="STRING8" name="description">
- <fieldref>descLen</fieldref>
- </list>
- <!-- More padding -->
- </struct>
-
- <!--<typedef oldname="CARD32" newname="PCONTEXT" />-->
- <xidtype name="PCONTEXT" />
-
- <!-- "PrintGetDocumentData" -->
- <enum name="GetDoc">
- <item name="Finished"><value>0</value></item>
- <item name="SecondConsumer"><value>1</value></item>
- </enum>
-
- <!-- Event Mask ("PrintSelectInput") -->
- <enum name="EvMask">
- <item name="NoEventMask"><value>0</value></item>
- <item name="PrintMask"><bit>0</bit></item>
- <item name="AttributeMask"><bit>1</bit></item>
- </enum>
-
- <!-- "PrintNotify" detail -->
- <enum name="Detail">
- <item name="StartJobNotify"><value>1</value></item>
- <item name="EndJobNotify"><value>2</value></item>
- <item name="StartDocNotify"><value>3</value></item>
- <item name="EndDocNotify"><value>4</value></item>
- <item name="StartPageNotify"><value>5</value></item>
- <item name="EndPageNotify"><value>6</value></item>
- </enum>
-
- <!-- "AttributeNotify" detail -->
- <enum name="Attr">
- <item name="JobAttr"><value>1</value></item>
- <item name="DocAttr"><value>2</value></item>
- <item name="PageAttr"><value>3</value></item>
- <item name="PrinterAttr"><value>4</value></item>
- <item name="ServerAttr"><value>5</value></item>
- <item name="MediumAttr"><value>6</value></item>
- <item name="SpoolerAttr"><value>7</value></item>
- </enum>
-
-
- <!-- Requests -->
- <request name="PrintQueryVersion" opcode="0">
- <reply>
- <pad bytes="1" />
- <field type="CARD16" name="major_version" />
- <field type="CARD16" name="minor_version" />
- </reply>
- </request>
-
- <request name="PrintGetPrinterList" opcode="1">
- <field type="CARD32" name="printerNameLen" />
- <field type="CARD32" name="localeLen" />
- <list type="STRING8" name="printer_name">
- <fieldref>printerNameLen</fieldref>
- </list>
- <!-- There's some padding in here... -->
- <list type="STRING8" name="locale">
- <fieldref>localeLen</fieldref>
- </list>
- <reply>
- <pad bytes="1" />
- <field type="CARD32" name="listCount" />
- <pad bytes="20" />
- <list type="PRINTER" name="printers">
- <fieldref>listCount</fieldref>
- </list>
- </reply>
- </request>
-
- <request name="PrintRehashPrinterList" opcode="20" />
-
- <request name="CreateContext" opcode="2">
- <field type="CARD32" name="context_id" />
- <field type="CARD32" name="printerNameLen" />
- <field type="CARD32" name="localeLen" />
- <list type="STRING8" name="printerName">
- <fieldref>printerNameLen</fieldref>
- </list>
- <!-- padding -->
- <list type="STRING8" name="locale">
- <fieldref>localeLen</fieldref>
- </list>
- </request>
-
- <request name="PrintSetContext" opcode="3">
- <field type="CARD32" name="context" />
- </request>
-
- <request name="PrintGetContext" opcode="4">
- <reply>
- <pad bytes="1" />
- <field type="CARD32" name="context" />
- </reply>
- </request>
-
- <request name="PrintDestroyContext" opcode="5">
- <field type="CARD32" name="context" />
- </request>
-
- <request name="PrintGetScreenOfContext" opcode="6">
- <reply>
- <pad bytes="1" />
- <field type="WINDOW" name="root" />
- </reply>
- </request>
-
- <request name="PrintStartJob" opcode="7">
- <field type="CARD8" name="output_mode"/>
- </request>
-
- <request name="PrintEndJob" opcode="8">
- <field type="BOOL" name="cancel" />
- </request>
-
- <request name="PrintStartDoc" opcode="9">
- <field type="CARD8" name="driver_mode" />
- </request>
-
- <request name="PrintEndDoc" opcode="10">
- <field type="BOOL" name="cancel" />
- </request>
-
- <request name="PrintPutDocumentData" opcode="11">
- <field type="DRAWABLE" name="drawable" />
- <field type="CARD32" name="len_data" />
- <field type="CARD16" name="len_fmt" />
- <field type="CARD16" name="len_options" />
- <list type="BYTE" name="data">
- <fieldref>len_data</fieldref>
- </list>
- <!-- padding -->
- <list type="STRING8" name="doc_format" />
- <!-- padding -->
- <list type="STRING8" name="options" />
- </request>
-
- <request name="PrintGetDocumentData" opcode="12">
- <field type="PCONTEXT" name="context" />
- <field type="CARD32" name="max_bytes" />
- <reply>
- <pad bytes="1" />
- <field type="CARD32" name="status_code" />
- <field type="CARD32" name="finished_flag" />
- <field type="CARD32" name="dataLen" />
- <pad bytes="12" />
- <list type="BYTE" name="data">
- <fieldref>dataLen</fieldref>
- </list>
- </reply>
- </request>
-
- <request name="PrintStartPage" opcode="13">
- <field type="WINDOW" name="window" />
- </request>
-
- <request name="PrintEndPage" opcode="14">
- <field type="BOOL" name="cancel" />
- <pad bytes="3" />
- </request>
-
- <request name="PrintSelectInput" opcode="15">
- <field type="PCONTEXT" name="context" />
- <valueparam value-mask-type="CARD32"
- value-mask-name="event_mask"
- value-list-name="event_list" />
- </request>
-
- <request name="PrintInputSelected" opcode="16">
- <field type="PCONTEXT" name="context" />
- <reply>
- <pad bytes="1" />
- <valueparam value-mask-type="CARD32"
- value-mask-name="event_mask"
- value-list-name="event_list" />
- <valueparam value-mask-type="CARD32"
- value-mask-name="all_events_mask"
- value-list-name="all_events_list" />
- </reply>
- </request>
-
- <request name="PrintGetAttributes" opcode="17">
- <field type="PCONTEXT" name="context" />
- <field type="CARD8" name="pool" />
- <pad bytes="3" />
- <reply>
- <pad bytes="1" />
- <field type="CARD32" name="stringLen" />
- <pad bytes="20" />
- <field type="STRING8" name="attributes" />
- </reply>
- </request>
-
- <request name="PrintGetOneAttributes" opcode="19">
- <field type="PCONTEXT" name="context" />
- <field type="CARD32" name="nameLen" />
- <field type="CARD8" name="pool" />
- <pad bytes="3" />
- <list type="STRING8" name="name">
- <fieldref>nameLen</fieldref>
- </list>
- <reply>
- <pad bytes="1" />
- <field type="CARD32" name="valueLen" />
- <pad bytes="20" />
- <list type="STRING8" name="value">
- <fieldref>valueLen</fieldref>
- </list>
- </reply>
- </request>
-
- <request name="PrintSetAttributes" opcode="18">
- <field type="PCONTEXT" name="context" />
- <field type="CARD32" name="stringLen" />
- <field type="CARD8" name="pool" />
- <field type="CARD8" name="rule" />
- <pad bytes="2" />
- <list type="STRING8" name="attributes" />
- </request>
-
- <request name="PrintGetPageDimensions" opcode="21">
- <field type="PCONTEXT" name="context" />
- <reply>
- <pad bytes="1" />
- <field type="CARD16" name="width" />
- <field type="CARD16" name="height" />
- <field type="CARD16" name="offset_x" />
- <field type="CARD16" name="offset_y" />
- <field type="CARD16" name="reproducible_width" />
- <field type="CARD16" name="reproducible_height" />
- </reply>
- </request>
-
- <request name="PrintQueryScreens" opcode="22">
- <reply>
- <pad bytes="1" />
- <field type="CARD32" name="listCount" />
- <pad bytes="20" />
- <list type="WINDOW" name="roots">
- <fieldref>listCount</fieldref>
- </list>
- <!-- There may be a WINDOW rootWindow here... -->
- </reply>
- </request>
-
- <request name="PrintSetImageResolution" opcode="23">
- <field type="PCONTEXT" name="context" />
- <field type="CARD16" name="image_resolution" />
- <reply>
- <field type="BOOL" name="status" />
- <field type="CARD16" name="previous_resolutions" />
- </reply>
- </request>
-
- <request name="PrintGetImageResolution" opcode="24">
- <field type="PCONTEXT" name="context" />
- <reply>
- <pad bytes="1" />
- <field type="CARD16" name="image_resolution" />
- </reply>
- </request>
-
-
- <!-- Events -->
- <event name="Notify" number="0">
- <field type="CARD8" name="detail" />
- <field type="PCONTEXT" name="context" />
- <field type="BOOL" name="cancel" />
- </event>
-
- <event name="AttributNotify" number="1">
- <field type="CARD8" name="detail" />
- <field type="PCONTEXT" name="context" />
- </event>
-
- <!-- Errors -->
- <error name="BadContext" number="0" />
- <error name="BadSequence" number="1" />
-
-</xcb>
-
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+Copyright (C) 2005 Jeremy Kolb.
+All Rights Reserved.
+
+Permission is hereby granted, free of charge, to any person ob/Sintaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
+ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the names of the authors or their
+institutions shall not be used in advertising or otherwise to promote the
+sale, use or other dealings in this Software without prior written
+authorization from the authors.
+-->
+
+<xcb header="xprint" extension-xname="XpExtension" extension-name="XPrint"
+ extension-multiword="true" major-version="1" minor-version="0">
+
+ <!-- Conforms to XPRINT 1.0 -->
+
+ <import>xproto</import>
+
+ <typedef oldname="char" newname="STRING8" />
+
+ <!-- Types -->
+ <struct name="PRINTER">
+ <field type="CARD32" name="nameLen" />
+ <list type="STRING8" name="name">
+ <fieldref>nameLen</fieldref>
+ </list>
+ <!-- Padding -->
+ <field type="CARD32" name="descLen" />
+ <list type="STRING8" name="description">
+ <fieldref>descLen</fieldref>
+ </list>
+ <!-- More padding -->
+ </struct>
+
+ <!--<typedef oldname="CARD32" newname="PCONTEXT" />-->
+ <xidtype name="PCONTEXT" />
+
+ <!-- "PrintGetDocumentData" -->
+ <enum name="GetDoc">
+ <item name="Finished"><value>0</value></item>
+ <item name="SecondConsumer"><value>1</value></item>
+ </enum>
+
+ <!-- Event Mask ("PrintSelectInput") -->
+ <enum name="EvMask">
+ <item name="NoEventMask"><value>0</value></item>
+ <item name="PrintMask"><bit>0</bit></item>
+ <item name="AttributeMask"><bit>1</bit></item>
+ </enum>
+
+ <!-- "PrintNotify" detail -->
+ <enum name="Detail">
+ <item name="StartJobNotify"><value>1</value></item>
+ <item name="EndJobNotify"><value>2</value></item>
+ <item name="StartDocNotify"><value>3</value></item>
+ <item name="EndDocNotify"><value>4</value></item>
+ <item name="StartPageNotify"><value>5</value></item>
+ <item name="EndPageNotify"><value>6</value></item>
+ </enum>
+
+ <!-- "AttributeNotify" detail -->
+ <enum name="Attr">
+ <item name="JobAttr"><value>1</value></item>
+ <item name="DocAttr"><value>2</value></item>
+ <item name="PageAttr"><value>3</value></item>
+ <item name="PrinterAttr"><value>4</value></item>
+ <item name="ServerAttr"><value>5</value></item>
+ <item name="MediumAttr"><value>6</value></item>
+ <item name="SpoolerAttr"><value>7</value></item>
+ </enum>
+
+
+ <!-- Requests -->
+ <request name="PrintQueryVersion" opcode="0">
+ <reply>
+ <pad bytes="1" />
+ <field type="CARD16" name="major_version" />
+ <field type="CARD16" name="minor_version" />
+ </reply>
+ </request>
+
+ <request name="PrintGetPrinterList" opcode="1">
+ <field type="CARD32" name="printerNameLen" />
+ <field type="CARD32" name="localeLen" />
+ <list type="STRING8" name="printer_name">
+ <fieldref>printerNameLen</fieldref>
+ </list>
+ <!-- There's some padding in here... -->
+ <list type="STRING8" name="locale">
+ <fieldref>localeLen</fieldref>
+ </list>
+ <reply>
+ <pad bytes="1" />
+ <field type="CARD32" name="listCount" />
+ <pad bytes="20" />
+ <list type="PRINTER" name="printers">
+ <fieldref>listCount</fieldref>
+ </list>
+ </reply>
+ </request>
+
+ <request name="PrintRehashPrinterList" opcode="20" />
+
+ <request name="CreateContext" opcode="2">
+ <field type="CARD32" name="context_id" />
+ <field type="CARD32" name="printerNameLen" />
+ <field type="CARD32" name="localeLen" />
+ <list type="STRING8" name="printerName">
+ <fieldref>printerNameLen</fieldref>
+ </list>
+ <!-- padding -->
+ <list type="STRING8" name="locale">
+ <fieldref>localeLen</fieldref>
+ </list>
+ </request>
+
+ <request name="PrintSetContext" opcode="3">
+ <field type="CARD32" name="context" />
+ </request>
+
+ <request name="PrintGetContext" opcode="4">
+ <reply>
+ <pad bytes="1" />
+ <field type="CARD32" name="context" />
+ </reply>
+ </request>
+
+ <request name="PrintDestroyContext" opcode="5">
+ <field type="CARD32" name="context" />
+ </request>
+
+ <request name="PrintGetScreenOfContext" opcode="6">
+ <reply>
+ <pad bytes="1" />
+ <field type="WINDOW" name="root" />
+ </reply>
+ </request>
+
+ <request name="PrintStartJob" opcode="7">
+ <field type="CARD8" name="output_mode"/>
+ </request>
+
+ <request name="PrintEndJob" opcode="8">
+ <field type="BOOL" name="cancel" />
+ </request>
+
+ <request name="PrintStartDoc" opcode="9">
+ <field type="CARD8" name="driver_mode" />
+ </request>
+
+ <request name="PrintEndDoc" opcode="10">
+ <field type="BOOL" name="cancel" />
+ </request>
+
+ <request name="PrintPutDocumentData" opcode="11">
+ <field type="DRAWABLE" name="drawable" />
+ <field type="CARD32" name="len_data" />
+ <field type="CARD16" name="len_fmt" />
+ <field type="CARD16" name="len_options" />
+ <list type="BYTE" name="data">
+ <fieldref>len_data</fieldref>
+ </list>
+ <!-- padding -->
+ <list type="STRING8" name="doc_format" />
+ <!-- padding -->
+ <list type="STRING8" name="options" />
+ </request>
+
+ <request name="PrintGetDocumentData" opcode="12">
+ <field type="PCONTEXT" name="context" />
+ <field type="CARD32" name="max_bytes" />
+ <reply>
+ <pad bytes="1" />
+ <field type="CARD32" name="status_code" />
+ <field type="CARD32" name="finished_flag" />
+ <field type="CARD32" name="dataLen" />
+ <pad bytes="12" />
+ <list type="BYTE" name="data">
+ <fieldref>dataLen</fieldref>
+ </list>
+ </reply>
+ </request>
+
+ <request name="PrintStartPage" opcode="13">
+ <field type="WINDOW" name="window" />
+ </request>
+
+ <request name="PrintEndPage" opcode="14">
+ <field type="BOOL" name="cancel" />
+ <pad bytes="3" />
+ </request>
+
+ <request name="PrintSelectInput" opcode="15">
+ <field type="PCONTEXT" name="context" />
+ <valueparam value-mask-type="CARD32"
+ value-mask-name="event_mask"
+ value-list-name="event_list" />
+ </request>
+
+ <request name="PrintInputSelected" opcode="16">
+ <field type="PCONTEXT" name="context" />
+ <reply>
+ <pad bytes="1" />
+ <valueparam value-mask-type="CARD32"
+ value-mask-name="event_mask"
+ value-list-name="event_list" />
+ <valueparam value-mask-type="CARD32"
+ value-mask-name="all_events_mask"
+ value-list-name="all_events_list" />
+ </reply>
+ </request>
+
+ <request name="PrintGetAttributes" opcode="17">
+ <field type="PCONTEXT" name="context" />
+ <field type="CARD8" name="pool" />
+ <pad bytes="3" />
+ <reply>
+ <pad bytes="1" />
+ <field type="CARD32" name="stringLen" />
+ <pad bytes="20" />
+ <field type="STRING8" name="attributes" />
+ </reply>
+ </request>
+
+ <request name="PrintGetOneAttributes" opcode="19">
+ <field type="PCONTEXT" name="context" />
+ <field type="CARD32" name="nameLen" />
+ <field type="CARD8" name="pool" />
+ <pad bytes="3" />
+ <list type="STRING8" name="name">
+ <fieldref>nameLen</fieldref>
+ </list>
+ <reply>
+ <pad bytes="1" />
+ <field type="CARD32" name="valueLen" />
+ <pad bytes="20" />
+ <list type="STRING8" name="value">
+ <fieldref>valueLen</fieldref>
+ </list>
+ </reply>
+ </request>
+
+ <request name="PrintSetAttributes" opcode="18">
+ <field type="PCONTEXT" name="context" />
+ <field type="CARD32" name="stringLen" />
+ <field type="CARD8" name="pool" />
+ <field type="CARD8" name="rule" />
+ <pad bytes="2" />
+ <list type="STRING8" name="attributes" />
+ </request>
+
+ <request name="PrintGetPageDimensions" opcode="21">
+ <field type="PCONTEXT" name="context" />
+ <reply>
+ <pad bytes="1" />
+ <field type="CARD16" name="width" />
+ <field type="CARD16" name="height" />
+ <field type="CARD16" name="offset_x" />
+ <field type="CARD16" name="offset_y" />
+ <field type="CARD16" name="reproducible_width" />
+ <field type="CARD16" name="reproducible_height" />
+ </reply>
+ </request>
+
+ <request name="PrintQueryScreens" opcode="22">
+ <reply>
+ <pad bytes="1" />
+ <field type="CARD32" name="listCount" />
+ <pad bytes="20" />
+ <list type="WINDOW" name="roots">
+ <fieldref>listCount</fieldref>
+ </list>
+ <!-- There may be a WINDOW rootWindow here... -->
+ </reply>
+ </request>
+
+ <request name="PrintSetImageResolution" opcode="23">
+ <field type="PCONTEXT" name="context" />
+ <field type="CARD16" name="image_resolution" />
+ <reply>
+ <field type="BOOL" name="status" />
+ <field type="CARD16" name="previous_resolutions" />
+ </reply>
+ </request>
+
+ <request name="PrintGetImageResolution" opcode="24">
+ <field type="PCONTEXT" name="context" />
+ <reply>
+ <pad bytes="1" />
+ <field type="CARD16" name="image_resolution" />
+ </reply>
+ </request>
+
+
+ <!-- Events -->
+ <event name="Notify" number="0">
+ <field type="CARD8" name="detail" />
+ <field type="PCONTEXT" name="context" />
+ <field type="BOOL" name="cancel" />
+ </event>
+
+ <event name="AttributNotify" number="1">
+ <field type="CARD8" name="detail" />
+ <field type="PCONTEXT" name="context" />
+ </event>
+
+ <!-- Errors -->
+ <error name="BadContext" number="0" />
+ <error name="BadSequence" number="1" />
+
+</xcb>
+
diff --git a/libxcb/xcb-proto/src/xselinux.xml b/libxcb/xcb-proto/src/xselinux.xml
index 2031fec57..7751470ca 100644
--- a/libxcb/xcb-proto/src/xselinux.xml
+++ b/libxcb/xcb-proto/src/xselinux.xml
@@ -1,276 +1,276 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
-ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the names of the authors or their
-institutions shall not be used in advertising or otherwise to promote the
-sale, use or other dealings in this Software without prior written
-authorization from the authors.
--->
-<xcb header="xselinux" extension-xname="SELinux" extension-name="SELinux"
- extension-multiword="false" major-version="1" minor-version="0">
- <import>xproto</import>
-
- <request name="QueryVersion" opcode="0">
- <field type="CARD8" name="client_major" />
- <field type="CARD8" name="client_minor" />
- <reply>
- <pad bytes="1" />
- <field type="CARD16" name="server_major" />
- <field type="CARD16" name="server_minor" />
- </reply>
- </request>
-
- <request name="SetDeviceCreateContext" opcode="1">
- <field type="CARD32" name="context_len" />
- <list type="char" name="context">
- <fieldref>context_len</fieldref>
- </list>
- </request>
-
- <request name="GetDeviceCreateContext" opcode="2">
- <reply>
- <pad bytes="1" />
- <field type="CARD32" name="context_len" />
- <pad bytes="20" />
- <list type="char" name="context">
- <fieldref>context_len</fieldref>
- </list>
- </reply>
- </request>
-
- <request name="SetDeviceContext" opcode="3">
- <field type="CARD32" name="device" />
- <field type="CARD32" name="context_len" />
- <list type="char" name="context">
- <fieldref>context_len</fieldref>
- </list>
- </request>
-
- <request name="GetDeviceContext" opcode="4">
- <field type="CARD32" name="device" />
- <reply>
- <pad bytes="1" />
- <field type="CARD32" name="context_len" />
- <pad bytes="20" />
- <list type="char" name="context">
- <fieldref>context_len</fieldref>
- </list>
- </reply>
- </request>
-
- <request name="SetWindowCreateContext" opcode="5">
- <field type="CARD32" name="context_len" />
- <list type="char" name="context">
- <fieldref>context_len</fieldref>
- </list>
- </request>
-
- <request name="GetWindowCreateContext" opcode="6">
- <reply>
- <pad bytes="1" />
- <field type="CARD32" name="context_len" />
- <pad bytes="20" />
- <list type="char" name="context">
- <fieldref>context_len</fieldref>
- </list>
- </reply>
- </request>
-
- <request name="GetWindowContext" opcode="7">
- <field type="WINDOW" name="window" />
- <reply>
- <pad bytes="1" />
- <field type="CARD32" name="context_len" />
- <pad bytes="20" />
- <list type="char" name="context">
- <fieldref>context_len</fieldref>
- </list>
- </reply>
- </request>
-
- <struct name="ListItem">
- <field type="ATOM" name="name" />
- <field type="CARD32" name="object_context_len" />
- <field type="CARD32" name="data_context_len" />
- <list type="char" name="object_context">
- <fieldref>object_context_len</fieldref>
- </list>
- <list type="char" name="data_context">
- <fieldref>data_context_len</fieldref>
- </list>
- </struct>
-
- <request name="SetPropertyCreateContext" opcode="8">
- <field type="CARD32" name="context_len" />
- <list type="char" name="context">
- <fieldref>context_len</fieldref>
- </list>
- </request>
-
- <request name="GetPropertyCreateContext" opcode="9">
- <reply>
- <pad bytes="1" />
- <field type="CARD32" name="context_len" />
- <pad bytes="20" />
- <list type="char" name="context">
- <fieldref>context_len</fieldref>
- </list>
- </reply>
- </request>
-
- <request name="SetPropertyUseContext" opcode="10">
- <field type="CARD32" name="context_len" />
- <list type="char" name="context">
- <fieldref>context_len</fieldref>
- </list>
- </request>
-
- <request name="GetPropertyUseContext" opcode="11">
- <reply>
- <pad bytes="1" />
- <field type="CARD32" name="context_len" />
- <pad bytes="20" />
- <list type="char" name="context">
- <fieldref>context_len</fieldref>
- </list>
- </reply>
- </request>
-
- <request name="GetPropertyContext" opcode="12">
- <field type="WINDOW" name="window" />
- <field type="ATOM" name="property" />
- <reply>
- <pad bytes="1" />
- <field type="CARD32" name="context_len" />
- <pad bytes="20" />
- <list type="char" name="context">
- <fieldref>context_len</fieldref>
- </list>
- </reply>
- </request>
-
- <request name="GetPropertyDataContext" opcode="13">
- <field type="WINDOW" name="window" />
- <field type="ATOM" name="property" />
- <reply>
- <pad bytes="1" />
- <field type="CARD32" name="context_len" />
- <pad bytes="20" />
- <list type="char" name="context">
- <fieldref>context_len</fieldref>
- </list>
- </reply>
- </request>
-
- <request name="ListProperties" opcode="14">
- <field type="WINDOW" name="window" />
- <reply>
- <pad bytes="1" />
- <field type="CARD32" name="properties_len" />
- <pad bytes="20" />
- <list type="ListItem" name="properties">
- <fieldref>properties_len</fieldref>
- </list>
- </reply>
- </request>
-
- <request name="SetSelectionCreateContext" opcode="15">
- <field type="CARD32" name="context_len" />
- <list type="char" name="context">
- <fieldref>context_len</fieldref>
- </list>
- </request>
-
- <request name="GetSelectionCreateContext" opcode="16">
- <reply>
- <pad bytes="1" />
- <field type="CARD32" name="context_len" />
- <pad bytes="20" />
- <list type="char" name="context">
- <fieldref>context_len</fieldref>
- </list>
- </reply>
- </request>
-
- <request name="SetSelectionUseContext" opcode="17">
- <field type="CARD32" name="context_len" />
- <list type="char" name="context">
- <fieldref>context_len</fieldref>
- </list>
- </request>
-
- <request name="GetSelectionUseContext" opcode="18">
- <reply>
- <pad bytes="1" />
- <field type="CARD32" name="context_len" />
- <pad bytes="20" />
- <list type="char" name="context">
- <fieldref>context_len</fieldref>
- </list>
- </reply>
- </request>
-
- <request name="GetSelectionContext" opcode="19">
- <field type="ATOM" name="selection" />
- <reply>
- <pad bytes="1" />
- <field type="CARD32" name="context_len" />
- <pad bytes="20" />
- <list type="char" name="context">
- <fieldref>context_len</fieldref>
- </list>
- </reply>
- </request>
-
- <request name="GetSelectionDataContext" opcode="20">
- <field type="ATOM" name="selection" />
- <reply>
- <pad bytes="1" />
- <field type="CARD32" name="context_len" />
- <pad bytes="20" />
- <list type="char" name="context">
- <fieldref>context_len</fieldref>
- </list>
- </reply>
- </request>
-
- <request name="ListSelections" opcode="21">
- <reply>
- <pad bytes="1" />
- <field type="CARD32" name="selections_len" />
- <pad bytes="20" />
- <list type="ListItem" name="selections">
- <fieldref>selections_len</fieldref>
- </list>
- </reply>
- </request>
-
- <request name="GetClientContext" opcode="22">
- <field type="CARD32" name="resource" />
- <reply>
- <pad bytes="1" />
- <field type="CARD32" name="context_len" />
- <pad bytes="20" />
- <list type="char" name="context">
- <fieldref>context_len</fieldref>
- </list>
- </reply>
- </request>
-
-</xcb>
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
+ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the names of the authors or their
+institutions shall not be used in advertising or otherwise to promote the
+sale, use or other dealings in this Software without prior written
+authorization from the authors.
+-->
+<xcb header="xselinux" extension-xname="SELinux" extension-name="SELinux"
+ extension-multiword="false" major-version="1" minor-version="0">
+ <import>xproto</import>
+
+ <request name="QueryVersion" opcode="0">
+ <field type="CARD8" name="client_major" />
+ <field type="CARD8" name="client_minor" />
+ <reply>
+ <pad bytes="1" />
+ <field type="CARD16" name="server_major" />
+ <field type="CARD16" name="server_minor" />
+ </reply>
+ </request>
+
+ <request name="SetDeviceCreateContext" opcode="1">
+ <field type="CARD32" name="context_len" />
+ <list type="char" name="context">
+ <fieldref>context_len</fieldref>
+ </list>
+ </request>
+
+ <request name="GetDeviceCreateContext" opcode="2">
+ <reply>
+ <pad bytes="1" />
+ <field type="CARD32" name="context_len" />
+ <pad bytes="20" />
+ <list type="char" name="context">
+ <fieldref>context_len</fieldref>
+ </list>
+ </reply>
+ </request>
+
+ <request name="SetDeviceContext" opcode="3">
+ <field type="CARD32" name="device" />
+ <field type="CARD32" name="context_len" />
+ <list type="char" name="context">
+ <fieldref>context_len</fieldref>
+ </list>
+ </request>
+
+ <request name="GetDeviceContext" opcode="4">
+ <field type="CARD32" name="device" />
+ <reply>
+ <pad bytes="1" />
+ <field type="CARD32" name="context_len" />
+ <pad bytes="20" />
+ <list type="char" name="context">
+ <fieldref>context_len</fieldref>
+ </list>
+ </reply>
+ </request>
+
+ <request name="SetWindowCreateContext" opcode="5">
+ <field type="CARD32" name="context_len" />
+ <list type="char" name="context">
+ <fieldref>context_len</fieldref>
+ </list>
+ </request>
+
+ <request name="GetWindowCreateContext" opcode="6">
+ <reply>
+ <pad bytes="1" />
+ <field type="CARD32" name="context_len" />
+ <pad bytes="20" />
+ <list type="char" name="context">
+ <fieldref>context_len</fieldref>
+ </list>
+ </reply>
+ </request>
+
+ <request name="GetWindowContext" opcode="7">
+ <field type="WINDOW" name="window" />
+ <reply>
+ <pad bytes="1" />
+ <field type="CARD32" name="context_len" />
+ <pad bytes="20" />
+ <list type="char" name="context">
+ <fieldref>context_len</fieldref>
+ </list>
+ </reply>
+ </request>
+
+ <struct name="ListItem">
+ <field type="ATOM" name="name" />
+ <field type="CARD32" name="object_context_len" />
+ <field type="CARD32" name="data_context_len" />
+ <list type="char" name="object_context">
+ <fieldref>object_context_len</fieldref>
+ </list>
+ <list type="char" name="data_context">
+ <fieldref>data_context_len</fieldref>
+ </list>
+ </struct>
+
+ <request name="SetPropertyCreateContext" opcode="8">
+ <field type="CARD32" name="context_len" />
+ <list type="char" name="context">
+ <fieldref>context_len</fieldref>
+ </list>
+ </request>
+
+ <request name="GetPropertyCreateContext" opcode="9">
+ <reply>
+ <pad bytes="1" />
+ <field type="CARD32" name="context_len" />
+ <pad bytes="20" />
+ <list type="char" name="context">
+ <fieldref>context_len</fieldref>
+ </list>
+ </reply>
+ </request>
+
+ <request name="SetPropertyUseContext" opcode="10">
+ <field type="CARD32" name="context_len" />
+ <list type="char" name="context">
+ <fieldref>context_len</fieldref>
+ </list>
+ </request>
+
+ <request name="GetPropertyUseContext" opcode="11">
+ <reply>
+ <pad bytes="1" />
+ <field type="CARD32" name="context_len" />
+ <pad bytes="20" />
+ <list type="char" name="context">
+ <fieldref>context_len</fieldref>
+ </list>
+ </reply>
+ </request>
+
+ <request name="GetPropertyContext" opcode="12">
+ <field type="WINDOW" name="window" />
+ <field type="ATOM" name="property" />
+ <reply>
+ <pad bytes="1" />
+ <field type="CARD32" name="context_len" />
+ <pad bytes="20" />
+ <list type="char" name="context">
+ <fieldref>context_len</fieldref>
+ </list>
+ </reply>
+ </request>
+
+ <request name="GetPropertyDataContext" opcode="13">
+ <field type="WINDOW" name="window" />
+ <field type="ATOM" name="property" />
+ <reply>
+ <pad bytes="1" />
+ <field type="CARD32" name="context_len" />
+ <pad bytes="20" />
+ <list type="char" name="context">
+ <fieldref>context_len</fieldref>
+ </list>
+ </reply>
+ </request>
+
+ <request name="ListProperties" opcode="14">
+ <field type="WINDOW" name="window" />
+ <reply>
+ <pad bytes="1" />
+ <field type="CARD32" name="properties_len" />
+ <pad bytes="20" />
+ <list type="ListItem" name="properties">
+ <fieldref>properties_len</fieldref>
+ </list>
+ </reply>
+ </request>
+
+ <request name="SetSelectionCreateContext" opcode="15">
+ <field type="CARD32" name="context_len" />
+ <list type="char" name="context">
+ <fieldref>context_len</fieldref>
+ </list>
+ </request>
+
+ <request name="GetSelectionCreateContext" opcode="16">
+ <reply>
+ <pad bytes="1" />
+ <field type="CARD32" name="context_len" />
+ <pad bytes="20" />
+ <list type="char" name="context">
+ <fieldref>context_len</fieldref>
+ </list>
+ </reply>
+ </request>
+
+ <request name="SetSelectionUseContext" opcode="17">
+ <field type="CARD32" name="context_len" />
+ <list type="char" name="context">
+ <fieldref>context_len</fieldref>
+ </list>
+ </request>
+
+ <request name="GetSelectionUseContext" opcode="18">
+ <reply>
+ <pad bytes="1" />
+ <field type="CARD32" name="context_len" />
+ <pad bytes="20" />
+ <list type="char" name="context">
+ <fieldref>context_len</fieldref>
+ </list>
+ </reply>
+ </request>
+
+ <request name="GetSelectionContext" opcode="19">
+ <field type="ATOM" name="selection" />
+ <reply>
+ <pad bytes="1" />
+ <field type="CARD32" name="context_len" />
+ <pad bytes="20" />
+ <list type="char" name="context">
+ <fieldref>context_len</fieldref>
+ </list>
+ </reply>
+ </request>
+
+ <request name="GetSelectionDataContext" opcode="20">
+ <field type="ATOM" name="selection" />
+ <reply>
+ <pad bytes="1" />
+ <field type="CARD32" name="context_len" />
+ <pad bytes="20" />
+ <list type="char" name="context">
+ <fieldref>context_len</fieldref>
+ </list>
+ </reply>
+ </request>
+
+ <request name="ListSelections" opcode="21">
+ <reply>
+ <pad bytes="1" />
+ <field type="CARD32" name="selections_len" />
+ <pad bytes="20" />
+ <list type="ListItem" name="selections">
+ <fieldref>selections_len</fieldref>
+ </list>
+ </reply>
+ </request>
+
+ <request name="GetClientContext" opcode="22">
+ <field type="CARD32" name="resource" />
+ <reply>
+ <pad bytes="1" />
+ <field type="CARD32" name="context_len" />
+ <pad bytes="20" />
+ <list type="char" name="context">
+ <fieldref>context_len</fieldref>
+ </list>
+ </reply>
+ </request>
+
+</xcb>
diff --git a/libxcb/xcb-proto/src/xv.xml b/libxcb/xcb-proto/src/xv.xml
index 08c80b04b..d2bfc2992 100644
--- a/libxcb/xcb-proto/src/xv.xml
+++ b/libxcb/xcb-proto/src/xv.xml
@@ -1,450 +1,450 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-Copyright (C) 2006 Jeremy Kolb.
-All Rights Reserved.
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
-ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the names of the authors or their
-institutions shall not be used in advertising or otherwise to promote the
-sale, use or other dealings in this Software without prior written
-authorization from the authors.
--->
-
-<xcb header="xv" extension-xname="XVideo" extension-name="Xv" major-version="2" minor-version="2">
- <import>xproto</import>
- <import>shm</import>
- <!-- Implements version 2.2 of XV -->
-
- <!-- XIDs -->
- <xidtype name="PORT" />
- <xidtype name="ENCODING" />
-
- <enum name="Type">
- <item name="InputMask"><bit>0</bit></item>
- <item name="OutputMask"><bit>1</bit></item>
- <item name="VideoMask"><bit>2</bit></item>
- <item name="StillMask"><bit>3</bit></item>
- <item name="ImageMask"><bit>4</bit></item>
- </enum>
-
- <enum name="ImageFormatInfoType">
- <item name="RGB" />
- <item name="YUV" />
- </enum>
-
- <enum name="ImageFormatInfoFormat">
- <item name="Packed" />
- <item name="Planar" />
- </enum>
-
- <enum name="AttributeFlag">
- <item name="Gettable"><bit>0</bit></item>
- <item name="Settable"><bit>1</bit></item>
- </enum>
-
- <enum name="VideoNotifyReason">
- <item name="Started" />
- <item name="Stopped" />
- <item name="Busy" />
- <item name="Preempted" />
- <item name="HardError" />
- </enum>
-
- <enum name="ScanlineOrder">
- <item name="TopToBottom" />
- <item name="BottomToTop" />
- </enum>
-
- <enum name="GrabPortStatus">
- <item name="Success" />
- <item name="BadExtension" />
- <item name="AlreadyGrabbed" />
- <item name="InvalidTime" />
- <item name="BadReply" />
- <item name="BadAlloc" />
- </enum>
-
- <struct name="Rational">
- <field type="INT32" name="numerator" />
- <field type="INT32" name="denominator" />
- </struct>
-
- <struct name="Format">
- <field type="VISUALID" name="visual" />
- <field type="CARD8" name="depth" />
- <pad bytes="3" />
- </struct>
-
- <struct name="AdaptorInfo">
- <field type="PORT" name="base_id" />
- <field type="CARD16" name="name_size" />
- <field type="CARD16" name="num_ports" />
- <field type="CARD16" name="num_formats" />
- <field type="CARD8" name="type" mask="Type" />
- <pad bytes="1" />
- <list type="char" name="name">
- <fieldref>name_size</fieldref>
- </list>
- <list type="Format" name="formats">
- <fieldref>num_formats</fieldref>
- </list>
-
- </struct>
-
- <struct name="EncodingInfo">
- <field type="ENCODING" name="encoding" />
- <field type="CARD16" name="name_size" />
- <field type="CARD16" name="width" />
- <field type="CARD16" name="height" />
- <!--
- Some versions of Xvproto.h incorrectly have
- this padding after "rate".
- -->
- <pad bytes="2" />
- <field type="Rational" name="rate" />
- <list type="char" name="name">
- <fieldref>name_size</fieldref>
- </list>
- </struct>
-
- <struct name="Image">
- <field type="CARD32" name="id" />
- <field type="CARD16" name="width" />
- <field type="CARD16" name="height" />
- <field type="CARD32" name="data_size" />
- <field type="CARD32" name="num_planes" />
- <list type="CARD32" name="pitches">
- <fieldref>num_planes</fieldref>
- </list>
- <list type="CARD32" name="offsets">
- <fieldref>num_planes</fieldref>
- </list>
- <list type="CARD8" name="data">
- <fieldref>data_size</fieldref>
- </list>
- <!-- Some XPointer "obdata" for SHM use-->
- </struct>
-
- <struct name="AttributeInfo">
- <field type="CARD32" name="flags" mask="AttributeFlag" />
- <field type="INT32" name="min" />
- <field type="INT32" name="max" />
- <field type="CARD32" name="size" />
- <list type="char" name="name">
- <fieldref>size</fieldref>
- </list>
- </struct>
-
- <struct name="ImageFormatInfo">
- <field type="CARD32" name="id" />
- <field type="CARD8" name="type" enum="ImageFormatInfoType" />
- <field type="CARD8" name="byte_order" enum="ImageOrder" />
- <pad bytes="2" />
- <list type="CARD8" name="guid">
- <value>16</value>
- </list>
- <field type="CARD8" name="bpp" />
- <field type="CARD8" name="num_planes" />
- <pad bytes="2" />
- <field type="CARD8" name="depth" />
- <pad bytes="3" />
- <field type="CARD32" name="red_mask" />
- <field type="CARD32" name="green_mask" />
- <field type="CARD32" name="blue_mask" />
- <field type="CARD8" name="format" enum="ImageFormatInfoFormat" />
- <pad bytes="3" />
- <field type="CARD32" name="y_sample_bits" />
- <field type="CARD32" name="u_sample_bits" />
- <field type="CARD32" name="v_sample_bits" />
- <field type="CARD32" name="vhorz_y_period" />
- <field type="CARD32" name="vhorz_u_period" />
- <field type="CARD32" name="vhorz_v_period" />
- <field type="CARD32" name="vvert_y_period" />
- <field type="CARD32" name="vvert_u_period" />
- <field type="CARD32" name="vvert_v_period" />
- <list type="CARD8" name="vcomp_order">
- <value>32</value>
- </list>
- <field type="CARD8" name="vscanline_order" enum="ScanlineOrder" />
- <pad bytes="11" />
- </struct>
-
-
- <!-- Errors -->
- <error name="BadPort" number="0"/>
- <error name="BadEncoding" number="1"/>
- <error name="BadControl" number="2"/>
-
- <!-- Events -->
- <event name="VideoNotify" number="0">
- <field type="BYTE" name="reason" enum="VideoNotifyReason" />
- <field type="TIMESTAMP" name="time" />
- <field type="DRAWABLE" name="drawable" />
- <field type="PORT" name="port" />
- </event>
-
- <event name="PortNotify" number="1">
- <pad bytes="1" />
- <field type="TIMESTAMP" name="time" />
- <field type="PORT" name="port" />
- <field type="ATOM" name="attribute" />
- <field type="INT32" name="value" />
- </event>
-
-
- <!-- Requests -->
- <request name="QueryExtension" opcode="0">
- <reply>
- <pad bytes="1" />
- <field type="CARD16" name="major" />
- <field type="CARD16" name="minor" />
- </reply>
- </request>
-
- <request name="QueryAdaptors" opcode="1">
- <field type="WINDOW" name="window" />
- <reply>
- <pad bytes="1" />
- <field type="CARD16" name="num_adaptors" />
- <pad bytes="22" />
- <list type="AdaptorInfo" name="info">
- <fieldref>num_adaptors</fieldref>
- </list>
- </reply>
- </request>
-
- <request name="QueryEncodings" opcode="2">
- <field type="PORT" name="port" />
- <reply>
- <pad bytes="1" />
- <field type="CARD16" name="num_encodings" />
- <!--
- In Xvproto.h this padding is 24 bytes
- in actuality it is 22 bytes
- -->
- <pad bytes="22" />
- <list type="EncodingInfo" name="info">
- <fieldref>num_encodings</fieldref>
- </list>
- </reply>
- </request>
-
- <request name="GrabPort" opcode="3">
- <field type="PORT" name="port" />
- <field type="TIMESTAMP" name="time" altenum="Time" />
- <reply>
- <field type="BYTE" name="result" enum="GrabPortStatus" />
- </reply>
- </request>
-
- <request name="UngrabPort" opcode="4">
- <field type="PORT" name="port" />
- <field type="TIMESTAMP" name="time" altenum="Time" />
- </request>
-
- <request name="PutVideo" opcode="5">
- <field type="PORT" name="port" />
- <field type="DRAWABLE" name="drawable" />
- <field type="GCONTEXT" name="gc" />
- <field type="INT16" name="vid_x" />
- <field type="INT16" name="vid_y" />
- <field type="CARD16" name="vid_w" />
- <field type="CARD16" name="vid_h" />
- <field type="INT16" name="drw_x" />
- <field type="INT16" name="drw_y" />
- <field type="CARD16" name="drw_w" />
- <field type="CARD16" name="drw_h" />
- </request>
-
- <request name="PutStill" opcode="6">
- <field type="PORT" name="port" />
- <field type="DRAWABLE" name="drawable" />
- <field type="GCONTEXT" name="gc" />
- <field type="INT16" name="vid_x" />
- <field type="INT16" name="vid_y" />
- <field type="CARD16" name="vid_w" />
- <field type="CARD16" name="vid_h" />
- <field type="INT16" name="drw_x" />
- <field type="INT16" name="drw_y" />
- <field type="CARD16" name="drw_w" />
- <field type="CARD16" name="drw_h" />
- </request>
-
- <request name="GetVideo" opcode="7">
- <field type="PORT" name="port" />
- <field type="DRAWABLE" name="drawable" />
- <field type="GCONTEXT" name="gc" />
- <field type="INT16" name="vid_x" />
- <field type="INT16" name="vid_y" />
- <field type="CARD16" name="vid_w" />
- <field type="CARD16" name="vid_h" />
- <field type="INT16" name="drw_x" />
- <field type="INT16" name="drw_y" />
- <field type="CARD16" name="drw_w" />
- <field type="CARD16" name="drw_h" />
- </request>
-
- <request name="GetStill" opcode="8">
- <field type="PORT" name="port" />
- <field type="DRAWABLE" name="drawable" />
- <field type="GCONTEXT" name="gc" />
- <field type="INT16" name="vid_x" />
- <field type="INT16" name="vid_y" />
- <field type="CARD16" name="vid_w" />
- <field type="CARD16" name="vid_h" />
- <field type="INT16" name="drw_x" />
- <field type="INT16" name="drw_y" />
- <field type="CARD16" name="drw_w" />
- <field type="CARD16" name="drw_h" />
- </request>
-
- <request name="StopVideo" opcode="9">
- <field type="PORT" name="port" />
- <field type="DRAWABLE" name="drawable" />
- </request>
-
- <request name="SelectVideoNotify" opcode="10">
- <field type="DRAWABLE" name="drawable" />
- <field type="BOOL" name="onoff" />
- <pad bytes="3" />
- </request>
-
- <request name="SelectPortNotify" opcode="11">
- <field type="PORT" name="port" />
- <field type="BOOL" name="onoff" />
- <pad bytes="3" />
- </request>
-
- <request name="QueryBestSize" opcode="12">
- <field type="PORT" name="port" />
- <field type="CARD16" name="vid_w" />
- <field type="CARD16" name="vid_h" />
- <field type="CARD16" name="drw_w" />
- <field type="CARD16" name="drw_h" />
- <field type="BOOL" name="motion" />
- <pad bytes="3" />
- <reply>
- <pad bytes="1" />
- <field type="CARD16" name="actual_width" />
- <field type="CARD16" name="actual_height" />
- </reply>
- </request>
-
- <request name="SetPortAttribute" opcode="13">
- <field type="PORT" name="port" />
- <field type="ATOM" name="attribute" />
- <field type="INT32" name="value" />
- </request>
-
- <request name="GetPortAttribute" opcode="14">
- <field type="PORT" name="port" />
- <field type="ATOM" name="attribute" />
- <reply>
- <pad bytes="1" />
- <field type="INT32" name="value" />
- </reply>
- </request>
-
- <!-- Not in the docs beyond this point :( -->
-
- <request name="QueryPortAttributes" opcode="15">
- <field type="PORT" name="port" />
- <reply>
- <pad bytes="1" />
- <field type="CARD32" name="num_attributes" />
- <field type="CARD32" name="text_size" />
- <pad bytes="16" />
- <list type="AttributeInfo" name="attributes">
- <fieldref>num_attributes</fieldref>
- </list>
- </reply>
- </request>
-
- <request name="ListImageFormats" opcode="16">
- <field type="PORT" name="port" />
- <reply>
- <pad bytes="1" />
- <field type="CARD32" name="num_formats" />
- <pad bytes="20" />
- <list type="ImageFormatInfo" name="format">
- <fieldref>num_formats</fieldref>
- </list>
- </reply>
- </request>
-
- <request name="QueryImageAttributes" opcode="17">
- <field type="PORT" name="port" />
- <field type="CARD32" name="id" />
- <field type="CARD16" name="width" />
- <field type="CARD16" name="height" />
- <reply>
- <pad bytes="1" />
- <field type="CARD32" name="num_planes" />
- <field type="CARD32" name="data_size" />
- <field type="CARD16" name="width" />
- <field type="CARD16" name="height" />
- <pad bytes="12" />
- <list type="CARD32" name="pitches">
- <fieldref>num_planes</fieldref>
- </list>
- <list type="CARD32" name="offsets">
- <fieldref>num_planes</fieldref>
- </list>
- </reply>
- </request>
-
- <request name="PutImage" opcode="18">
- <field type="PORT" name="port" />
- <field type="DRAWABLE" name="drawable" />
- <field type="GCONTEXT" name="gc" />
- <field type="CARD32" name="id" />
- <field type="INT16" name="src_x" />
- <field type="INT16" name="src_y" />
- <field type="CARD16" name="src_w" />
- <field type="CARD16" name="src_h" />
- <field type="INT16" name="drw_x" />
- <field type="INT16" name="drw_y" />
- <field type="CARD16" name="drw_w" />
- <field type="CARD16" name="drw_h" />
- <field type="CARD16" name="width" />
- <field type="CARD16" name="height" />
- <list type="CARD8" name="data" />
- </request>
-
- <request name="ShmPutImage" opcode="19">
- <field type="PORT" name="port" />
- <field type="DRAWABLE" name="drawable" />
- <field type="GCONTEXT" name="gc" />
- <field type="SEG" name="shmseg" />
- <field type="CARD32" name="id" />
- <field type="CARD32" name="offset" />
- <field type="INT16" name="src_x" />
- <field type="INT16" name="src_y" />
- <field type="CARD16" name="src_w" />
- <field type="CARD16" name="src_h" />
- <field type="INT16" name="drw_x" />
- <field type="INT16" name="drw_y" />
- <field type="CARD16" name="drw_w" />
- <field type="CARD16" name="drw_h" />
- <field type="CARD16" name="width" />
- <field type="CARD16" name="height" />
- <field type="CARD8" name="send_event" />
- <pad bytes="3" />
- </request>
-</xcb>
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+Copyright (C) 2006 Jeremy Kolb.
+All Rights Reserved.
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
+ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the names of the authors or their
+institutions shall not be used in advertising or otherwise to promote the
+sale, use or other dealings in this Software without prior written
+authorization from the authors.
+-->
+
+<xcb header="xv" extension-xname="XVideo" extension-name="Xv" major-version="2" minor-version="2">
+ <import>xproto</import>
+ <import>shm</import>
+ <!-- Implements version 2.2 of XV -->
+
+ <!-- XIDs -->
+ <xidtype name="PORT" />
+ <xidtype name="ENCODING" />
+
+ <enum name="Type">
+ <item name="InputMask"><bit>0</bit></item>
+ <item name="OutputMask"><bit>1</bit></item>
+ <item name="VideoMask"><bit>2</bit></item>
+ <item name="StillMask"><bit>3</bit></item>
+ <item name="ImageMask"><bit>4</bit></item>
+ </enum>
+
+ <enum name="ImageFormatInfoType">
+ <item name="RGB" />
+ <item name="YUV" />
+ </enum>
+
+ <enum name="ImageFormatInfoFormat">
+ <item name="Packed" />
+ <item name="Planar" />
+ </enum>
+
+ <enum name="AttributeFlag">
+ <item name="Gettable"><bit>0</bit></item>
+ <item name="Settable"><bit>1</bit></item>
+ </enum>
+
+ <enum name="VideoNotifyReason">
+ <item name="Started" />
+ <item name="Stopped" />
+ <item name="Busy" />
+ <item name="Preempted" />
+ <item name="HardError" />
+ </enum>
+
+ <enum name="ScanlineOrder">
+ <item name="TopToBottom" />
+ <item name="BottomToTop" />
+ </enum>
+
+ <enum name="GrabPortStatus">
+ <item name="Success" />
+ <item name="BadExtension" />
+ <item name="AlreadyGrabbed" />
+ <item name="InvalidTime" />
+ <item name="BadReply" />
+ <item name="BadAlloc" />
+ </enum>
+
+ <struct name="Rational">
+ <field type="INT32" name="numerator" />
+ <field type="INT32" name="denominator" />
+ </struct>
+
+ <struct name="Format">
+ <field type="VISUALID" name="visual" />
+ <field type="CARD8" name="depth" />
+ <pad bytes="3" />
+ </struct>
+
+ <struct name="AdaptorInfo">
+ <field type="PORT" name="base_id" />
+ <field type="CARD16" name="name_size" />
+ <field type="CARD16" name="num_ports" />
+ <field type="CARD16" name="num_formats" />
+ <field type="CARD8" name="type" mask="Type" />
+ <pad bytes="1" />
+ <list type="char" name="name">
+ <fieldref>name_size</fieldref>
+ </list>
+ <list type="Format" name="formats">
+ <fieldref>num_formats</fieldref>
+ </list>
+
+ </struct>
+
+ <struct name="EncodingInfo">
+ <field type="ENCODING" name="encoding" />
+ <field type="CARD16" name="name_size" />
+ <field type="CARD16" name="width" />
+ <field type="CARD16" name="height" />
+ <!--
+ Some versions of Xvproto.h incorrectly have
+ this padding after "rate".
+ -->
+ <pad bytes="2" />
+ <field type="Rational" name="rate" />
+ <list type="char" name="name">
+ <fieldref>name_size</fieldref>
+ </list>
+ </struct>
+
+ <struct name="Image">
+ <field type="CARD32" name="id" />
+ <field type="CARD16" name="width" />
+ <field type="CARD16" name="height" />
+ <field type="CARD32" name="data_size" />
+ <field type="CARD32" name="num_planes" />
+ <list type="CARD32" name="pitches">
+ <fieldref>num_planes</fieldref>
+ </list>
+ <list type="CARD32" name="offsets">
+ <fieldref>num_planes</fieldref>
+ </list>
+ <list type="CARD8" name="data">
+ <fieldref>data_size</fieldref>
+ </list>
+ <!-- Some XPointer "obdata" for SHM use-->
+ </struct>
+
+ <struct name="AttributeInfo">
+ <field type="CARD32" name="flags" mask="AttributeFlag" />
+ <field type="INT32" name="min" />
+ <field type="INT32" name="max" />
+ <field type="CARD32" name="size" />
+ <list type="char" name="name">
+ <fieldref>size</fieldref>
+ </list>
+ </struct>
+
+ <struct name="ImageFormatInfo">
+ <field type="CARD32" name="id" />
+ <field type="CARD8" name="type" enum="ImageFormatInfoType" />
+ <field type="CARD8" name="byte_order" enum="ImageOrder" />
+ <pad bytes="2" />
+ <list type="CARD8" name="guid">
+ <value>16</value>
+ </list>
+ <field type="CARD8" name="bpp" />
+ <field type="CARD8" name="num_planes" />
+ <pad bytes="2" />
+ <field type="CARD8" name="depth" />
+ <pad bytes="3" />
+ <field type="CARD32" name="red_mask" />
+ <field type="CARD32" name="green_mask" />
+ <field type="CARD32" name="blue_mask" />
+ <field type="CARD8" name="format" enum="ImageFormatInfoFormat" />
+ <pad bytes="3" />
+ <field type="CARD32" name="y_sample_bits" />
+ <field type="CARD32" name="u_sample_bits" />
+ <field type="CARD32" name="v_sample_bits" />
+ <field type="CARD32" name="vhorz_y_period" />
+ <field type="CARD32" name="vhorz_u_period" />
+ <field type="CARD32" name="vhorz_v_period" />
+ <field type="CARD32" name="vvert_y_period" />
+ <field type="CARD32" name="vvert_u_period" />
+ <field type="CARD32" name="vvert_v_period" />
+ <list type="CARD8" name="vcomp_order">
+ <value>32</value>
+ </list>
+ <field type="CARD8" name="vscanline_order" enum="ScanlineOrder" />
+ <pad bytes="11" />
+ </struct>
+
+
+ <!-- Errors -->
+ <error name="BadPort" number="0"/>
+ <error name="BadEncoding" number="1"/>
+ <error name="BadControl" number="2"/>
+
+ <!-- Events -->
+ <event name="VideoNotify" number="0">
+ <field type="BYTE" name="reason" enum="VideoNotifyReason" />
+ <field type="TIMESTAMP" name="time" />
+ <field type="DRAWABLE" name="drawable" />
+ <field type="PORT" name="port" />
+ </event>
+
+ <event name="PortNotify" number="1">
+ <pad bytes="1" />
+ <field type="TIMESTAMP" name="time" />
+ <field type="PORT" name="port" />
+ <field type="ATOM" name="attribute" />
+ <field type="INT32" name="value" />
+ </event>
+
+
+ <!-- Requests -->
+ <request name="QueryExtension" opcode="0">
+ <reply>
+ <pad bytes="1" />
+ <field type="CARD16" name="major" />
+ <field type="CARD16" name="minor" />
+ </reply>
+ </request>
+
+ <request name="QueryAdaptors" opcode="1">
+ <field type="WINDOW" name="window" />
+ <reply>
+ <pad bytes="1" />
+ <field type="CARD16" name="num_adaptors" />
+ <pad bytes="22" />
+ <list type="AdaptorInfo" name="info">
+ <fieldref>num_adaptors</fieldref>
+ </list>
+ </reply>
+ </request>
+
+ <request name="QueryEncodings" opcode="2">
+ <field type="PORT" name="port" />
+ <reply>
+ <pad bytes="1" />
+ <field type="CARD16" name="num_encodings" />
+ <!--
+ In Xvproto.h this padding is 24 bytes
+ in actuality it is 22 bytes
+ -->
+ <pad bytes="22" />
+ <list type="EncodingInfo" name="info">
+ <fieldref>num_encodings</fieldref>
+ </list>
+ </reply>
+ </request>
+
+ <request name="GrabPort" opcode="3">
+ <field type="PORT" name="port" />
+ <field type="TIMESTAMP" name="time" altenum="Time" />
+ <reply>
+ <field type="BYTE" name="result" enum="GrabPortStatus" />
+ </reply>
+ </request>
+
+ <request name="UngrabPort" opcode="4">
+ <field type="PORT" name="port" />
+ <field type="TIMESTAMP" name="time" altenum="Time" />
+ </request>
+
+ <request name="PutVideo" opcode="5">
+ <field type="PORT" name="port" />
+ <field type="DRAWABLE" name="drawable" />
+ <field type="GCONTEXT" name="gc" />
+ <field type="INT16" name="vid_x" />
+ <field type="INT16" name="vid_y" />
+ <field type="CARD16" name="vid_w" />
+ <field type="CARD16" name="vid_h" />
+ <field type="INT16" name="drw_x" />
+ <field type="INT16" name="drw_y" />
+ <field type="CARD16" name="drw_w" />
+ <field type="CARD16" name="drw_h" />
+ </request>
+
+ <request name="PutStill" opcode="6">
+ <field type="PORT" name="port" />
+ <field type="DRAWABLE" name="drawable" />
+ <field type="GCONTEXT" name="gc" />
+ <field type="INT16" name="vid_x" />
+ <field type="INT16" name="vid_y" />
+ <field type="CARD16" name="vid_w" />
+ <field type="CARD16" name="vid_h" />
+ <field type="INT16" name="drw_x" />
+ <field type="INT16" name="drw_y" />
+ <field type="CARD16" name="drw_w" />
+ <field type="CARD16" name="drw_h" />
+ </request>
+
+ <request name="GetVideo" opcode="7">
+ <field type="PORT" name="port" />
+ <field type="DRAWABLE" name="drawable" />
+ <field type="GCONTEXT" name="gc" />
+ <field type="INT16" name="vid_x" />
+ <field type="INT16" name="vid_y" />
+ <field type="CARD16" name="vid_w" />
+ <field type="CARD16" name="vid_h" />
+ <field type="INT16" name="drw_x" />
+ <field type="INT16" name="drw_y" />
+ <field type="CARD16" name="drw_w" />
+ <field type="CARD16" name="drw_h" />
+ </request>
+
+ <request name="GetStill" opcode="8">
+ <field type="PORT" name="port" />
+ <field type="DRAWABLE" name="drawable" />
+ <field type="GCONTEXT" name="gc" />
+ <field type="INT16" name="vid_x" />
+ <field type="INT16" name="vid_y" />
+ <field type="CARD16" name="vid_w" />
+ <field type="CARD16" name="vid_h" />
+ <field type="INT16" name="drw_x" />
+ <field type="INT16" name="drw_y" />
+ <field type="CARD16" name="drw_w" />
+ <field type="CARD16" name="drw_h" />
+ </request>
+
+ <request name="StopVideo" opcode="9">
+ <field type="PORT" name="port" />
+ <field type="DRAWABLE" name="drawable" />
+ </request>
+
+ <request name="SelectVideoNotify" opcode="10">
+ <field type="DRAWABLE" name="drawable" />
+ <field type="BOOL" name="onoff" />
+ <pad bytes="3" />
+ </request>
+
+ <request name="SelectPortNotify" opcode="11">
+ <field type="PORT" name="port" />
+ <field type="BOOL" name="onoff" />
+ <pad bytes="3" />
+ </request>
+
+ <request name="QueryBestSize" opcode="12">
+ <field type="PORT" name="port" />
+ <field type="CARD16" name="vid_w" />
+ <field type="CARD16" name="vid_h" />
+ <field type="CARD16" name="drw_w" />
+ <field type="CARD16" name="drw_h" />
+ <field type="BOOL" name="motion" />
+ <pad bytes="3" />
+ <reply>
+ <pad bytes="1" />
+ <field type="CARD16" name="actual_width" />
+ <field type="CARD16" name="actual_height" />
+ </reply>
+ </request>
+
+ <request name="SetPortAttribute" opcode="13">
+ <field type="PORT" name="port" />
+ <field type="ATOM" name="attribute" />
+ <field type="INT32" name="value" />
+ </request>
+
+ <request name="GetPortAttribute" opcode="14">
+ <field type="PORT" name="port" />
+ <field type="ATOM" name="attribute" />
+ <reply>
+ <pad bytes="1" />
+ <field type="INT32" name="value" />
+ </reply>
+ </request>
+
+ <!-- Not in the docs beyond this point :( -->
+
+ <request name="QueryPortAttributes" opcode="15">
+ <field type="PORT" name="port" />
+ <reply>
+ <pad bytes="1" />
+ <field type="CARD32" name="num_attributes" />
+ <field type="CARD32" name="text_size" />
+ <pad bytes="16" />
+ <list type="AttributeInfo" name="attributes">
+ <fieldref>num_attributes</fieldref>
+ </list>
+ </reply>
+ </request>
+
+ <request name="ListImageFormats" opcode="16">
+ <field type="PORT" name="port" />
+ <reply>
+ <pad bytes="1" />
+ <field type="CARD32" name="num_formats" />
+ <pad bytes="20" />
+ <list type="ImageFormatInfo" name="format">
+ <fieldref>num_formats</fieldref>
+ </list>
+ </reply>
+ </request>
+
+ <request name="QueryImageAttributes" opcode="17">
+ <field type="PORT" name="port" />
+ <field type="CARD32" name="id" />
+ <field type="CARD16" name="width" />
+ <field type="CARD16" name="height" />
+ <reply>
+ <pad bytes="1" />
+ <field type="CARD32" name="num_planes" />
+ <field type="CARD32" name="data_size" />
+ <field type="CARD16" name="width" />
+ <field type="CARD16" name="height" />
+ <pad bytes="12" />
+ <list type="CARD32" name="pitches">
+ <fieldref>num_planes</fieldref>
+ </list>
+ <list type="CARD32" name="offsets">
+ <fieldref>num_planes</fieldref>
+ </list>
+ </reply>
+ </request>
+
+ <request name="PutImage" opcode="18">
+ <field type="PORT" name="port" />
+ <field type="DRAWABLE" name="drawable" />
+ <field type="GCONTEXT" name="gc" />
+ <field type="CARD32" name="id" />
+ <field type="INT16" name="src_x" />
+ <field type="INT16" name="src_y" />
+ <field type="CARD16" name="src_w" />
+ <field type="CARD16" name="src_h" />
+ <field type="INT16" name="drw_x" />
+ <field type="INT16" name="drw_y" />
+ <field type="CARD16" name="drw_w" />
+ <field type="CARD16" name="drw_h" />
+ <field type="CARD16" name="width" />
+ <field type="CARD16" name="height" />
+ <list type="CARD8" name="data" />
+ </request>
+
+ <request name="ShmPutImage" opcode="19">
+ <field type="PORT" name="port" />
+ <field type="DRAWABLE" name="drawable" />
+ <field type="GCONTEXT" name="gc" />
+ <field type="SEG" name="shmseg" />
+ <field type="CARD32" name="id" />
+ <field type="CARD32" name="offset" />
+ <field type="INT16" name="src_x" />
+ <field type="INT16" name="src_y" />
+ <field type="CARD16" name="src_w" />
+ <field type="CARD16" name="src_h" />
+ <field type="INT16" name="drw_x" />
+ <field type="INT16" name="drw_y" />
+ <field type="CARD16" name="drw_w" />
+ <field type="CARD16" name="drw_h" />
+ <field type="CARD16" name="width" />
+ <field type="CARD16" name="height" />
+ <field type="CARD8" name="send_event" />
+ <pad bytes="3" />
+ </request>
+</xcb>
diff --git a/libxcb/xcb-proto/src/xvmc.xml b/libxcb/xcb-proto/src/xvmc.xml
index 1c477ae49..ac80003f9 100644
--- a/libxcb/xcb-proto/src/xvmc.xml
+++ b/libxcb/xcb-proto/src/xvmc.xml
@@ -1,146 +1,146 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-Copyright (C) 2006 Jeremy Kolb.
-All Rights Reserved.
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
-ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the names of the authors or their
-institutions shall not be used in advertising or otherwise to promote the
-sale, use or other dealings in this Software without prior written
-authorization from the authors.
--->
-
-<xcb header="xvmc" extension-xname="XVideo-MotionCompensation" extension-name="XvMC" major-version="1" minor-version="1">
- <import>xv</import>
-
- <xidtype name="CONTEXT" />
- <xidtype name="SURFACE" />
- <xidtype name="SUBPICTURE" />
-
- <struct name="SurfaceInfo">
- <field type="SURFACE" name="id" />
- <field type="CARD16" name="chroma_format" />
- <field type="CARD16" name="pad0" />
- <field type="CARD16" name="max_width" />
- <field type="CARD16" name="max_height" />
- <field type="CARD16" name="subpicture_max_width" />
- <field type="CARD16" name="subpicture_max_height" />
- <field type="CARD32" name="mc_type" />
- <field type="CARD32" name="flags" />
- </struct>
-
- <request name="QueryVersion" opcode="0">
- <reply>
- <pad bytes="1" />
- <field type="CARD32" name="major" />
- <field type="CARD32" name="minor" />
- </reply>
- </request>
-
- <request name="ListSurfaceTypes" opcode="1">
- <field type="PORT" name="port_id" />
- <reply>
- <pad bytes="1" />
- <field type="CARD32" name="num" />
- <pad bytes="20" />
- <list type="SurfaceInfo" name="surfaces">
- <fieldref>num</fieldref>
- </list>
- </reply>
- </request>
-
- <request name="CreateContext" opcode="2">
- <field type="CONTEXT" name="context_id" />
- <field type="PORT" name="port_id" />
- <field type="SURFACE" name="surface_id" />
- <field type="CARD16" name="width" />
- <field type="CARD16" name="height" />
- <field type="CARD32" name="flags" />
- <reply>
- <pad bytes="1" />
- <field type="CARD16" name="width_actual" />
- <field type="CARD16" name="height_actual" />
- <field type="CARD32" name="flags_return" />
- <pad bytes="20" />
- <list type="CARD32" name="priv_data">
- <fieldref>length</fieldref>
- </list>
- </reply>
- </request>
-
- <request name="DestroyContext" opcode="3">
- <field type="CONTEXT" name="context_id" />
- </request>
-
- <request name="CreateSurface" opcode="4">
- <field type="SURFACE" name="surface_id" />
- <field type="CONTEXT" name="context_id" />
- <reply>
- <pad bytes="1" />
- <pad bytes="24" />
- <list type="CARD32" name="priv_data">
- <fieldref>length</fieldref>
- </list>
- </reply>
- </request>
-
- <request name="DestroySurface" opcode="5">
- <field type="SURFACE" name="surface_id" />
- </request>
-
- <request name="CreateSubpicture" opcode="6">
- <field type="SUBPICTURE" name="subpicture_id" />
- <field type="CONTEXT" name="context" />
- <field type="CARD32" name="xvimage_id" />
- <field type="CARD16" name="width" />
- <field type="CARD16" name="height" />
- <reply>
- <pad bytes="1" />
- <field type="CARD16" name="width_actual" />
- <field type="CARD16" name="height_actual" />
- <field type="CARD16" name="num_palette_entries" />
- <field type="CARD16" name="entry_bytes" />
- <list type="CARD8" name="component_order">
- <value>4</value>
- </list>
- <pad bytes="12" />
- <list type="CARD32" name="priv_data">
- <fieldref>length</fieldref>
- </list>
- </reply>
- </request>
-
- <request name="DestroySubpicture" opcode="7">
- <field type="SUBPICTURE" name="subpicture_id" />
- </request>
-
- <request name="ListSubpictureTypes" opcode="8">
- <field type="PORT" name="port_id" />
- <field type="SURFACE" name="surface_id" />
- <reply>
- <pad bytes="1" />
- <field type="CARD32" name="num" />
- <pad bytes="20" />
- <list type="ImageFormatInfo" name="types">
- <fieldref>num</fieldref>
- </list>
- </reply>
- </request>
-
-</xcb>
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+Copyright (C) 2006 Jeremy Kolb.
+All Rights Reserved.
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
+ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the names of the authors or their
+institutions shall not be used in advertising or otherwise to promote the
+sale, use or other dealings in this Software without prior written
+authorization from the authors.
+-->
+
+<xcb header="xvmc" extension-xname="XVideo-MotionCompensation" extension-name="XvMC" major-version="1" minor-version="1">
+ <import>xv</import>
+
+ <xidtype name="CONTEXT" />
+ <xidtype name="SURFACE" />
+ <xidtype name="SUBPICTURE" />
+
+ <struct name="SurfaceInfo">
+ <field type="SURFACE" name="id" />
+ <field type="CARD16" name="chroma_format" />
+ <field type="CARD16" name="pad0" />
+ <field type="CARD16" name="max_width" />
+ <field type="CARD16" name="max_height" />
+ <field type="CARD16" name="subpicture_max_width" />
+ <field type="CARD16" name="subpicture_max_height" />
+ <field type="CARD32" name="mc_type" />
+ <field type="CARD32" name="flags" />
+ </struct>
+
+ <request name="QueryVersion" opcode="0">
+ <reply>
+ <pad bytes="1" />
+ <field type="CARD32" name="major" />
+ <field type="CARD32" name="minor" />
+ </reply>
+ </request>
+
+ <request name="ListSurfaceTypes" opcode="1">
+ <field type="PORT" name="port_id" />
+ <reply>
+ <pad bytes="1" />
+ <field type="CARD32" name="num" />
+ <pad bytes="20" />
+ <list type="SurfaceInfo" name="surfaces">
+ <fieldref>num</fieldref>
+ </list>
+ </reply>
+ </request>
+
+ <request name="CreateContext" opcode="2">
+ <field type="CONTEXT" name="context_id" />
+ <field type="PORT" name="port_id" />
+ <field type="SURFACE" name="surface_id" />
+ <field type="CARD16" name="width" />
+ <field type="CARD16" name="height" />
+ <field type="CARD32" name="flags" />
+ <reply>
+ <pad bytes="1" />
+ <field type="CARD16" name="width_actual" />
+ <field type="CARD16" name="height_actual" />
+ <field type="CARD32" name="flags_return" />
+ <pad bytes="20" />
+ <list type="CARD32" name="priv_data">
+ <fieldref>length</fieldref>
+ </list>
+ </reply>
+ </request>
+
+ <request name="DestroyContext" opcode="3">
+ <field type="CONTEXT" name="context_id" />
+ </request>
+
+ <request name="CreateSurface" opcode="4">
+ <field type="SURFACE" name="surface_id" />
+ <field type="CONTEXT" name="context_id" />
+ <reply>
+ <pad bytes="1" />
+ <pad bytes="24" />
+ <list type="CARD32" name="priv_data">
+ <fieldref>length</fieldref>
+ </list>
+ </reply>
+ </request>
+
+ <request name="DestroySurface" opcode="5">
+ <field type="SURFACE" name="surface_id" />
+ </request>
+
+ <request name="CreateSubpicture" opcode="6">
+ <field type="SUBPICTURE" name="subpicture_id" />
+ <field type="CONTEXT" name="context" />
+ <field type="CARD32" name="xvimage_id" />
+ <field type="CARD16" name="width" />
+ <field type="CARD16" name="height" />
+ <reply>
+ <pad bytes="1" />
+ <field type="CARD16" name="width_actual" />
+ <field type="CARD16" name="height_actual" />
+ <field type="CARD16" name="num_palette_entries" />
+ <field type="CARD16" name="entry_bytes" />
+ <list type="CARD8" name="component_order">
+ <value>4</value>
+ </list>
+ <pad bytes="12" />
+ <list type="CARD32" name="priv_data">
+ <fieldref>length</fieldref>
+ </list>
+ </reply>
+ </request>
+
+ <request name="DestroySubpicture" opcode="7">
+ <field type="SUBPICTURE" name="subpicture_id" />
+ </request>
+
+ <request name="ListSubpictureTypes" opcode="8">
+ <field type="PORT" name="port_id" />
+ <field type="SURFACE" name="surface_id" />
+ <reply>
+ <pad bytes="1" />
+ <field type="CARD32" name="num" />
+ <pad bytes="20" />
+ <list type="ImageFormatInfo" name="types">
+ <fieldref>num</fieldref>
+ </list>
+ </reply>
+ </request>
+
+</xcb>
diff --git a/libxcb/xcb-proto/xcbgen/Makefile.am b/libxcb/xcb-proto/xcbgen/Makefile.am
index c4c79bfda..110a992f1 100644
--- a/libxcb/xcb-proto/xcbgen/Makefile.am
+++ b/libxcb/xcb-proto/xcbgen/Makefile.am
@@ -1,3 +1,3 @@
-pkgpythondir = $(pythondir)/xcbgen
-
-pkgpython_PYTHON = __init__.py error.py expr.py matcher.py state.py xtypes.py
+pkgpythondir = $(pythondir)/xcbgen
+
+pkgpython_PYTHON = __init__.py error.py expr.py matcher.py state.py xtypes.py
diff --git a/libxcb/xcb-proto/xcbgen/__init__.py b/libxcb/xcb-proto/xcbgen/__init__.py
index d3f5a12fa..8b1378917 100644
--- a/libxcb/xcb-proto/xcbgen/__init__.py
+++ b/libxcb/xcb-proto/xcbgen/__init__.py
@@ -1 +1 @@
-
+
diff --git a/libxcb/xcb-proto/xcbgen/error.py b/libxcb/xcb-proto/xcbgen/error.py
index 611d638b0..bbcd5013d 100644
--- a/libxcb/xcb-proto/xcbgen/error.py
+++ b/libxcb/xcb-proto/xcbgen/error.py
@@ -1,5 +1,5 @@
-class ResolveException(Exception):
- '''
- Gets thrown when a type doesn't resolve in the XML.
- '''
- pass
+class ResolveException(Exception):
+ '''
+ Gets thrown when a type doesn't resolve in the XML.
+ '''
+ pass
diff --git a/libxcb/xcb-randr.pc.in b/libxcb/xcb-randr.pc.in
index 93a301138..ac7f35d97 100644
--- a/libxcb/xcb-randr.pc.in
+++ b/libxcb/xcb-randr.pc.in
@@ -1,11 +1,11 @@
-prefix=@prefix@
-exec_prefix=@exec_prefix@
-libdir=@libdir@
-includedir=@includedir@
-
-Name: XCB RandR
-Description: XCB RandR Extension
-Version: @PACKAGE_VERSION@
-Requires: xcb
-Libs: -L${libdir} -lxcb-randr
-Cflags: -I${includedir}
+prefix=@prefix@
+exec_prefix=@exec_prefix@
+libdir=@libdir@
+includedir=@includedir@
+
+Name: XCB RandR
+Description: XCB RandR Extension
+Version: @PACKAGE_VERSION@
+Requires: xcb
+Libs: -L${libdir} -lxcb-randr
+Cflags: -I${includedir}
diff --git a/libxcb/xcb-record.pc.in b/libxcb/xcb-record.pc.in
index 3c0cd6c0e..689f098fc 100644
--- a/libxcb/xcb-record.pc.in
+++ b/libxcb/xcb-record.pc.in
@@ -1,11 +1,11 @@
-prefix=@prefix@
-exec_prefix=@exec_prefix@
-libdir=@libdir@
-includedir=@includedir@
-
-Name: XCB Record
-Description: XCB Record Extension
-Version: @PACKAGE_VERSION@
-Requires: xcb
-Libs: -L${libdir} -lxcb-record
-Cflags: -I${includedir}
+prefix=@prefix@
+exec_prefix=@exec_prefix@
+libdir=@libdir@
+includedir=@includedir@
+
+Name: XCB Record
+Description: XCB Record Extension
+Version: @PACKAGE_VERSION@
+Requires: xcb
+Libs: -L${libdir} -lxcb-record
+Cflags: -I${includedir}
diff --git a/libxcb/xcb-render.pc.in b/libxcb/xcb-render.pc.in
index 0f0769cc1..c3b050ab6 100644
--- a/libxcb/xcb-render.pc.in
+++ b/libxcb/xcb-render.pc.in
@@ -1,11 +1,11 @@
-prefix=@prefix@
-exec_prefix=@exec_prefix@
-libdir=@libdir@
-includedir=@includedir@
-
-Name: XCB Render
-Description: XCB Render Extension
-Version: @PACKAGE_VERSION@
-Requires: xcb
-Libs: -L${libdir} -lxcb-render
-Cflags: -I${includedir}
+prefix=@prefix@
+exec_prefix=@exec_prefix@
+libdir=@libdir@
+includedir=@includedir@
+
+Name: XCB Render
+Description: XCB Render Extension
+Version: @PACKAGE_VERSION@
+Requires: xcb
+Libs: -L${libdir} -lxcb-render
+Cflags: -I${includedir}
diff --git a/libxcb/xcb-res.pc.in b/libxcb/xcb-res.pc.in
index b620269db..62dbab63e 100644
--- a/libxcb/xcb-res.pc.in
+++ b/libxcb/xcb-res.pc.in
@@ -1,11 +1,11 @@
-prefix=@prefix@
-exec_prefix=@exec_prefix@
-libdir=@libdir@
-includedir=@includedir@
-
-Name: XCB Res
-Description: XCB X-Resource Extension
-Version: @PACKAGE_VERSION@
-Requires: xcb
-Libs: -L${libdir} -lxcb-res
-Cflags: -I${includedir}
+prefix=@prefix@
+exec_prefix=@exec_prefix@
+libdir=@libdir@
+includedir=@includedir@
+
+Name: XCB Res
+Description: XCB X-Resource Extension
+Version: @PACKAGE_VERSION@
+Requires: xcb
+Libs: -L${libdir} -lxcb-res
+Cflags: -I${includedir}
diff --git a/libxcb/xcb-screensaver.pc.in b/libxcb/xcb-screensaver.pc.in
index 6a9ad19b5..ba3f8ecf3 100644
--- a/libxcb/xcb-screensaver.pc.in
+++ b/libxcb/xcb-screensaver.pc.in
@@ -1,11 +1,11 @@
-prefix=@prefix@
-exec_prefix=@exec_prefix@
-libdir=@libdir@
-includedir=@includedir@
-
-Name: XCB Screensaver
-Description: XCB Screensaver Extension
-Version: @PACKAGE_VERSION@
-Requires: xcb
-Libs: -L${libdir} -lxcb-screensaver
-Cflags: -I${includedir}
+prefix=@prefix@
+exec_prefix=@exec_prefix@
+libdir=@libdir@
+includedir=@includedir@
+
+Name: XCB Screensaver
+Description: XCB Screensaver Extension
+Version: @PACKAGE_VERSION@
+Requires: xcb
+Libs: -L${libdir} -lxcb-screensaver
+Cflags: -I${includedir}
diff --git a/libxcb/xcb-shape.pc.in b/libxcb/xcb-shape.pc.in
index 0e265b848..880204d8a 100644
--- a/libxcb/xcb-shape.pc.in
+++ b/libxcb/xcb-shape.pc.in
@@ -1,11 +1,11 @@
-prefix=@prefix@
-exec_prefix=@exec_prefix@
-libdir=@libdir@
-includedir=@includedir@
-
-Name: XCB Shape
-Description: XCB Shape Extension
-Version: @PACKAGE_VERSION@
-Requires: xcb
-Libs: -L${libdir} -lxcb-shape
-Cflags: -I${includedir}
+prefix=@prefix@
+exec_prefix=@exec_prefix@
+libdir=@libdir@
+includedir=@includedir@
+
+Name: XCB Shape
+Description: XCB Shape Extension
+Version: @PACKAGE_VERSION@
+Requires: xcb
+Libs: -L${libdir} -lxcb-shape
+Cflags: -I${includedir}
diff --git a/libxcb/xcb-shm.pc.in b/libxcb/xcb-shm.pc.in
index 33ee37d97..9256bf015 100644
--- a/libxcb/xcb-shm.pc.in
+++ b/libxcb/xcb-shm.pc.in
@@ -1,11 +1,11 @@
-prefix=@prefix@
-exec_prefix=@exec_prefix@
-libdir=@libdir@
-includedir=@includedir@
-
-Name: XCB Shm
-Description: XCB Shm Extension
-Version: @PACKAGE_VERSION@
-Requires: xcb
-Libs: -L${libdir} -lxcb-shm
-Cflags: -I${includedir}
+prefix=@prefix@
+exec_prefix=@exec_prefix@
+libdir=@libdir@
+includedir=@includedir@
+
+Name: XCB Shm
+Description: XCB Shm Extension
+Version: @PACKAGE_VERSION@
+Requires: xcb
+Libs: -L${libdir} -lxcb-shm
+Cflags: -I${includedir}
diff --git a/libxcb/xcb-sync.pc.in b/libxcb/xcb-sync.pc.in
index 6f70a6e87..ead76d166 100644
--- a/libxcb/xcb-sync.pc.in
+++ b/libxcb/xcb-sync.pc.in
@@ -1,11 +1,11 @@
-prefix=@prefix@
-exec_prefix=@exec_prefix@
-libdir=@libdir@
-includedir=@includedir@
-
-Name: XCB Sync
-Description: XCB Sync Extension
-Version: @PACKAGE_VERSION@
-Requires: xcb
-Libs: -L${libdir} -lxcb-sync
-Cflags: -I${includedir}
+prefix=@prefix@
+exec_prefix=@exec_prefix@
+libdir=@libdir@
+includedir=@includedir@
+
+Name: XCB Sync
+Description: XCB Sync Extension
+Version: @PACKAGE_VERSION@
+Requires: xcb
+Libs: -L${libdir} -lxcb-sync
+Cflags: -I${includedir}
diff --git a/libxcb/xcb-xevie.pc.in b/libxcb/xcb-xevie.pc.in
index aad488eec..0aa3e02ac 100644
--- a/libxcb/xcb-xevie.pc.in
+++ b/libxcb/xcb-xevie.pc.in
@@ -1,11 +1,11 @@
-prefix=@prefix@
-exec_prefix=@exec_prefix@
-libdir=@libdir@
-includedir=@includedir@
-
-Name: XCB Xevie
-Description: XCB Xevie Extension
-Version: @PACKAGE_VERSION@
-Requires: xcb
-Libs: -L${libdir} -lxcb-xevie
-Cflags: -I${includedir}
+prefix=@prefix@
+exec_prefix=@exec_prefix@
+libdir=@libdir@
+includedir=@includedir@
+
+Name: XCB Xevie
+Description: XCB Xevie Extension
+Version: @PACKAGE_VERSION@
+Requires: xcb
+Libs: -L${libdir} -lxcb-xevie
+Cflags: -I${includedir}
diff --git a/libxcb/xcb-xf86dri.pc.in b/libxcb/xcb-xf86dri.pc.in
index dac5828e4..f3f29806d 100644
--- a/libxcb/xcb-xf86dri.pc.in
+++ b/libxcb/xcb-xf86dri.pc.in
@@ -1,11 +1,11 @@
-prefix=@prefix@
-exec_prefix=@exec_prefix@
-libdir=@libdir@
-includedir=@includedir@
-
-Name: XCB XFree86-DRI
-Description: XCB XFree86-DRI Extension
-Version: @PACKAGE_VERSION@
-Requires: xcb
-Libs: -L${libdir} -lxcb-xf86dri
-Cflags: -I${includedir}
+prefix=@prefix@
+exec_prefix=@exec_prefix@
+libdir=@libdir@
+includedir=@includedir@
+
+Name: XCB XFree86-DRI
+Description: XCB XFree86-DRI Extension
+Version: @PACKAGE_VERSION@
+Requires: xcb
+Libs: -L${libdir} -lxcb-xf86dri
+Cflags: -I${includedir}
diff --git a/libxcb/xcb-xfixes.pc.in b/libxcb/xcb-xfixes.pc.in
index d13fe30a9..93eafda30 100644
--- a/libxcb/xcb-xfixes.pc.in
+++ b/libxcb/xcb-xfixes.pc.in
@@ -1,11 +1,11 @@
-prefix=@prefix@
-exec_prefix=@exec_prefix@
-libdir=@libdir@
-includedir=@includedir@
-
-Name: XCB XFixes
-Description: XCB XFixes Extension
-Version: @PACKAGE_VERSION@
-Requires: xcb xcb-render xcb-shape
-Libs: -L${libdir} -lxcb-xfixes
-Cflags: -I${includedir}
+prefix=@prefix@
+exec_prefix=@exec_prefix@
+libdir=@libdir@
+includedir=@includedir@
+
+Name: XCB XFixes
+Description: XCB XFixes Extension
+Version: @PACKAGE_VERSION@
+Requires: xcb xcb-render xcb-shape
+Libs: -L${libdir} -lxcb-xfixes
+Cflags: -I${includedir}
diff --git a/libxcb/xcb-xinerama.pc.in b/libxcb/xcb-xinerama.pc.in
index 84ecba128..c4775f9b5 100644
--- a/libxcb/xcb-xinerama.pc.in
+++ b/libxcb/xcb-xinerama.pc.in
@@ -1,11 +1,11 @@
-prefix=@prefix@
-exec_prefix=@exec_prefix@
-libdir=@libdir@
-includedir=@includedir@
-
-Name: XCB Xinerama
-Description: XCB Xinerama Extension
-Version: @PACKAGE_VERSION@
-Requires: xcb
-Libs: -L${libdir} -lxcb-xinerama
-Cflags: -I${includedir}
+prefix=@prefix@
+exec_prefix=@exec_prefix@
+libdir=@libdir@
+includedir=@includedir@
+
+Name: XCB Xinerama
+Description: XCB Xinerama Extension
+Version: @PACKAGE_VERSION@
+Requires: xcb
+Libs: -L${libdir} -lxcb-xinerama
+Cflags: -I${includedir}
diff --git a/libxcb/xcb-xinput.pc.in b/libxcb/xcb-xinput.pc.in
index d1d1b8f5f..ec3122947 100644
--- a/libxcb/xcb-xinput.pc.in
+++ b/libxcb/xcb-xinput.pc.in
@@ -1,11 +1,11 @@
-prefix=@prefix@
-exec_prefix=@exec_prefix@
-libdir=@libdir@
-includedir=@includedir@
-
-Name: XCB XInput
-Description: XCB XInput Extension (EXPERIMENTAL)
-Version: @PACKAGE_VERSION@
-Requires: xcb
-Libs: -L${libdir} -lxcb-xinput
-Cflags: -I${includedir}
+prefix=@prefix@
+exec_prefix=@exec_prefix@
+libdir=@libdir@
+includedir=@includedir@
+
+Name: XCB XInput
+Description: XCB XInput Extension (EXPERIMENTAL)
+Version: @PACKAGE_VERSION@
+Requires: xcb
+Libs: -L${libdir} -lxcb-xinput
+Cflags: -I${includedir}
diff --git a/libxcb/xcb-xprint.pc.in b/libxcb/xcb-xprint.pc.in
index f0c257162..b5275d5d5 100644
--- a/libxcb/xcb-xprint.pc.in
+++ b/libxcb/xcb-xprint.pc.in
@@ -1,11 +1,11 @@
-prefix=@prefix@
-exec_prefix=@exec_prefix@
-libdir=@libdir@
-includedir=@includedir@
-
-Name: XCB Xprint
-Description: XCB Xprint Extension
-Version: @PACKAGE_VERSION@
-Requires: xcb
-Libs: -L${libdir} -lxcb-xprint
-Cflags: -I${includedir}
+prefix=@prefix@
+exec_prefix=@exec_prefix@
+libdir=@libdir@
+includedir=@includedir@
+
+Name: XCB Xprint
+Description: XCB Xprint Extension
+Version: @PACKAGE_VERSION@
+Requires: xcb
+Libs: -L${libdir} -lxcb-xprint
+Cflags: -I${includedir}
diff --git a/libxcb/xcb-xselinux.pc.in b/libxcb/xcb-xselinux.pc.in
index f7042f26c..6a71f733a 100644
--- a/libxcb/xcb-xselinux.pc.in
+++ b/libxcb/xcb-xselinux.pc.in
@@ -1,11 +1,11 @@
-prefix=@prefix@
-exec_prefix=@exec_prefix@
-libdir=@libdir@
-includedir=@includedir@
-
-Name: XCB SELinux
-Description: XCB SELinux Extension
-Version: @PACKAGE_VERSION@
-Requires: xcb
-Libs: -L${libdir} -lxcb-xselinux
-Cflags: -I${includedir}
+prefix=@prefix@
+exec_prefix=@exec_prefix@
+libdir=@libdir@
+includedir=@includedir@
+
+Name: XCB SELinux
+Description: XCB SELinux Extension
+Version: @PACKAGE_VERSION@
+Requires: xcb
+Libs: -L${libdir} -lxcb-xselinux
+Cflags: -I${includedir}
diff --git a/libxcb/xcb-xtest.pc.in b/libxcb/xcb-xtest.pc.in
index cead05604..886c4dc2f 100644
--- a/libxcb/xcb-xtest.pc.in
+++ b/libxcb/xcb-xtest.pc.in
@@ -1,11 +1,11 @@
-prefix=@prefix@
-exec_prefix=@exec_prefix@
-libdir=@libdir@
-includedir=@includedir@
-
-Name: XCB XTEST
-Description: XCB XTEST Extension
-Version: @PACKAGE_VERSION@
-Requires: xcb
-Libs: -L${libdir} -lxcb-xtest
-Cflags: -I${includedir}
+prefix=@prefix@
+exec_prefix=@exec_prefix@
+libdir=@libdir@
+includedir=@includedir@
+
+Name: XCB XTEST
+Description: XCB XTEST Extension
+Version: @PACKAGE_VERSION@
+Requires: xcb
+Libs: -L${libdir} -lxcb-xtest
+Cflags: -I${includedir}
diff --git a/libxcb/xcb-xv.pc.in b/libxcb/xcb-xv.pc.in
index a78fbf27e..f4476135f 100644
--- a/libxcb/xcb-xv.pc.in
+++ b/libxcb/xcb-xv.pc.in
@@ -1,11 +1,11 @@
-prefix=@prefix@
-exec_prefix=@exec_prefix@
-libdir=@libdir@
-includedir=@includedir@
-
-Name: XCB Xv
-Description: XCB Xv Extension
-Version: @PACKAGE_VERSION@
-Requires: xcb xcb-shm
-Libs: -L${libdir} -lxcb-xv
-Cflags: -I${includedir}
+prefix=@prefix@
+exec_prefix=@exec_prefix@
+libdir=@libdir@
+includedir=@includedir@
+
+Name: XCB Xv
+Description: XCB Xv Extension
+Version: @PACKAGE_VERSION@
+Requires: xcb xcb-shm
+Libs: -L${libdir} -lxcb-xv
+Cflags: -I${includedir}
diff --git a/libxcb/xcb-xvmc.pc.in b/libxcb/xcb-xvmc.pc.in
index fc0d213b9..95bf4effc 100644
--- a/libxcb/xcb-xvmc.pc.in
+++ b/libxcb/xcb-xvmc.pc.in
@@ -1,11 +1,11 @@
-prefix=@prefix@
-exec_prefix=@exec_prefix@
-libdir=@libdir@
-includedir=@includedir@
-
-Name: XCB XvMC
-Description: XCB XvMC Extension
-Version: @PACKAGE_VERSION@
-Requires: xcb xcb-xv
-Libs: -L${libdir} -lxcb-xvmc
-Cflags: -I${includedir}
+prefix=@prefix@
+exec_prefix=@exec_prefix@
+libdir=@libdir@
+includedir=@includedir@
+
+Name: XCB XvMC
+Description: XCB XvMC Extension
+Version: @PACKAGE_VERSION@
+Requires: xcb xcb-xv
+Libs: -L${libdir} -lxcb-xvmc
+Cflags: -I${includedir}
diff --git a/libxcb/xcb.pc.in b/libxcb/xcb.pc.in
index 433c1686a..2dc8c13bb 100644
--- a/libxcb/xcb.pc.in
+++ b/libxcb/xcb.pc.in
@@ -1,13 +1,13 @@
-prefix=@prefix@
-exec_prefix=@exec_prefix@
-libdir=@libdir@
-includedir=@includedir@
-xcbproto_version=@XCBPROTO_VERSION@
-
-Name: XCB
-Description: X-protocol C Binding
-Version: @PACKAGE_VERSION@
-Requires.private: @NEEDED@
-Libs: -L${libdir} -lxcb
-Libs.private: @LIBS@
-Cflags: -I${includedir}
+prefix=@prefix@
+exec_prefix=@exec_prefix@
+libdir=@libdir@
+includedir=@includedir@
+xcbproto_version=@XCBPROTO_VERSION@
+
+Name: XCB
+Description: X-protocol C Binding
+Version: @PACKAGE_VERSION@
+Requires.private: @NEEDED@
+Libs: -L${libdir} -lxcb
+Libs.private: @LIBS@
+Cflags: -I${includedir}
diff --git a/pixman/CODING_STYLE b/pixman/CODING_STYLE
index 28dcf956e..9f5171d10 100644
--- a/pixman/CODING_STYLE
+++ b/pixman/CODING_STYLE
@@ -1,199 +1,199 @@
-Pixman coding style.
-====================
-
-The pixman coding style is close to cairo's with one exception: braces
-go on their own line, rather than on the line of the if/while/for:
-
- if (condition)
- {
- do_something();
- do_something_else();
- }
-
-not
-
- if (condition) {
- do_something();
- do_something_else();
- }
-
-
-
-Indentation
-===========
-
-Each new level is indented four spaces:
-
- if (condition)
- do_something();
-
-This may be achieved with space characters or with a combination of
-tab characters and space characters. Tab characters are interpreted as
-
- Advance to the next column which is a multiple of 8.
-
-
-Names
-=====
-
-In all names, words are separated with underscores. Do not use
-CamelCase for any names.
-
-Macros have ALL_CAPITAL_NAMES
-
-Type names are in lower case and end with "_t". For example
-pixman_image_t.
-
-Labels, functions and variables have lower case names.
-
-
-Braces
-======
-
-Braces always go on their own line:
-
- if (condition)
- {
- do_this ();
- do_that ();
- }
- else
- {
- do_the_other ();
- }
-
-Rules for braces and substatements of if/while/for/do:
-
-* If a substatement spans multiple lines, then there must be braces
- around it.
-
-* If the condition of an if/while/for spans multiple lines, then
- braces must be used for the substatements.
-
-* If one substatement of an if statement has braces, then the other
- must too.
-
-* Otherwise, don't add braces.
-
-
-Comments
-========
-
-For comments either like this:
-
- /* One line comment */
-
-or like this:
-
- /* This is a multi-line comment
- *
- * It extends over multiple lines
- */
-
-Generally comments should say things that aren't clear from the code
-itself. If too many comments say obvious things, then people will just
-stop reading all comments, including the good ones.
-
-
-Whitespace
-==========
-
-* Put a single space after commas
-
-* Put spaces around arithmetic operators such a +, -, *, /:
-
- y * stride + x
-
- x / unit_x
-
-* Do not put spaces after the address-of operator, the * when used as
- a pointer derefernce or the ! and ~ operators:
-
- &foo;
-
- ~0x00000000
-
- !condition
-
- *result = 100
-
-* Break up long lines (> ~80 characters) and use whitespace to align
- things nicely. This is one way:
-
- some_very_long_function name (
- implementation, op, src, mask, dest,
- src_x, src_y, mask_x, mask_y, dest_x, dest_y,
- width, height);
-
- This is another:
-
- some_very_long_function_name (implementation, op,
- src, mask, dest,
- src_x, src_y,
- mask_x, mask_y,
- dest_x, dest_y,
- width, height);
-
-* Separate logically distinct chunks with a single newline. This
- obviously applies between functions, but also applies within a
- function or block or structure definition.
-
-* Use a newline after a block of variable declarations.
-
-* Use a single space before a left parenthesis, except where the
- standard will not allow it, (eg. when defining a parameterized macro).
-
-* Don't eliminate newlines just because things would still fit on one
- line. This breaks the expected visual structure of the code making
- it much harder to read and understand:
-
- if (condition) foo (); else bar (); /* Yuck! */
-
-
-Function Definitions
-====================
-
-Function definitions should take the following form:
-
- void
- my_function (int argument)
- {
- do_my_things ();
- }
-
-If all the parameters to a function fit naturally on one line, format
-them that way. Otherwise, put one argument on each line, adding
-whitespace so that the parameter names are aligned with each other.
-
-I.e., do either this:
-
- void
- short_arguments (const char *str, int x, int y, int z)
- {
- }
-
-or this:
-
- void
- long_arguments (const char *char_star_arg,
- int int_arg,
- double *double_star_arg,
- double double_arg)
- {
- }
-
-
-Mode lines
-==========
-
-Given the rules above, what is the best way to simplify one's life as
-a code monkey? Get your editor to do most of the tedious work of
-beautifying your code!
-
-As a reward for reading this far, here are some mode lines for the more
-popular editors:
-/*
- * vim:sw=4:sts=4:ts=8:tw=78:fo=tcroq:cindent:cino=\:0,(0
- * vim:isk=a-z,A-Z,48-57,_,.,-,>
- */
-
+Pixman coding style.
+====================
+
+The pixman coding style is close to cairo's with one exception: braces
+go on their own line, rather than on the line of the if/while/for:
+
+ if (condition)
+ {
+ do_something();
+ do_something_else();
+ }
+
+not
+
+ if (condition) {
+ do_something();
+ do_something_else();
+ }
+
+
+
+Indentation
+===========
+
+Each new level is indented four spaces:
+
+ if (condition)
+ do_something();
+
+This may be achieved with space characters or with a combination of
+tab characters and space characters. Tab characters are interpreted as
+
+ Advance to the next column which is a multiple of 8.
+
+
+Names
+=====
+
+In all names, words are separated with underscores. Do not use
+CamelCase for any names.
+
+Macros have ALL_CAPITAL_NAMES
+
+Type names are in lower case and end with "_t". For example
+pixman_image_t.
+
+Labels, functions and variables have lower case names.
+
+
+Braces
+======
+
+Braces always go on their own line:
+
+ if (condition)
+ {
+ do_this ();
+ do_that ();
+ }
+ else
+ {
+ do_the_other ();
+ }
+
+Rules for braces and substatements of if/while/for/do:
+
+* If a substatement spans multiple lines, then there must be braces
+ around it.
+
+* If the condition of an if/while/for spans multiple lines, then
+ braces must be used for the substatements.
+
+* If one substatement of an if statement has braces, then the other
+ must too.
+
+* Otherwise, don't add braces.
+
+
+Comments
+========
+
+For comments either like this:
+
+ /* One line comment */
+
+or like this:
+
+ /* This is a multi-line comment
+ *
+ * It extends over multiple lines
+ */
+
+Generally comments should say things that aren't clear from the code
+itself. If too many comments say obvious things, then people will just
+stop reading all comments, including the good ones.
+
+
+Whitespace
+==========
+
+* Put a single space after commas
+
+* Put spaces around arithmetic operators such a +, -, *, /:
+
+ y * stride + x
+
+ x / unit_x
+
+* Do not put spaces after the address-of operator, the * when used as
+ a pointer derefernce or the ! and ~ operators:
+
+ &foo;
+
+ ~0x00000000
+
+ !condition
+
+ *result = 100
+
+* Break up long lines (> ~80 characters) and use whitespace to align
+ things nicely. This is one way:
+
+ some_very_long_function name (
+ implementation, op, src, mask, dest,
+ src_x, src_y, mask_x, mask_y, dest_x, dest_y,
+ width, height);
+
+ This is another:
+
+ some_very_long_function_name (implementation, op,
+ src, mask, dest,
+ src_x, src_y,
+ mask_x, mask_y,
+ dest_x, dest_y,
+ width, height);
+
+* Separate logically distinct chunks with a single newline. This
+ obviously applies between functions, but also applies within a
+ function or block or structure definition.
+
+* Use a newline after a block of variable declarations.
+
+* Use a single space before a left parenthesis, except where the
+ standard will not allow it, (eg. when defining a parameterized macro).
+
+* Don't eliminate newlines just because things would still fit on one
+ line. This breaks the expected visual structure of the code making
+ it much harder to read and understand:
+
+ if (condition) foo (); else bar (); /* Yuck! */
+
+
+Function Definitions
+====================
+
+Function definitions should take the following form:
+
+ void
+ my_function (int argument)
+ {
+ do_my_things ();
+ }
+
+If all the parameters to a function fit naturally on one line, format
+them that way. Otherwise, put one argument on each line, adding
+whitespace so that the parameter names are aligned with each other.
+
+I.e., do either this:
+
+ void
+ short_arguments (const char *str, int x, int y, int z)
+ {
+ }
+
+or this:
+
+ void
+ long_arguments (const char *char_star_arg,
+ int int_arg,
+ double *double_star_arg,
+ double double_arg)
+ {
+ }
+
+
+Mode lines
+==========
+
+Given the rules above, what is the best way to simplify one's life as
+a code monkey? Get your editor to do most of the tedious work of
+beautifying your code!
+
+As a reward for reading this far, here are some mode lines for the more
+popular editors:
+/*
+ * vim:sw=4:sts=4:ts=8:tw=78:fo=tcroq:cindent:cino=\:0,(0
+ * vim:isk=a-z,A-Z,48-57,_,.,-,>
+ */
+
diff --git a/pixman/INSTALL b/pixman/INSTALL
index cf1202b66..5458714e1 100644
--- a/pixman/INSTALL
+++ b/pixman/INSTALL
@@ -1,234 +1,234 @@
-Installation Instructions
-*************************
-
-Copyright (C) 1994, 1995, 1996, 1999, 2000, 2001, 2002, 2004, 2005,
-2006 Free Software Foundation, Inc.
-
-This file is free documentation; the Free Software Foundation gives
-unlimited permission to copy, distribute and modify it.
-
-Basic Installation
-==================
-
-Briefly, the shell commands `./configure; make; make install' should
-configure, build, and install this package. The following
-more-detailed instructions are generic; see the `README' file for
-instructions specific to this package.
-
- The `configure' shell script attempts to guess correct values for
-various system-dependent variables used during compilation. It uses
-those values to create a `Makefile' in each directory of the package.
-It may also create one or more `.h' files containing system-dependent
-definitions. Finally, it creates a shell script `config.status' that
-you can run in the future to recreate the current configuration, and a
-file `config.log' containing compiler output (useful mainly for
-debugging `configure').
-
- It can also use an optional file (typically called `config.cache'
-and enabled with `--cache-file=config.cache' or simply `-C') that saves
-the results of its tests to speed up reconfiguring. Caching is
-disabled by default to prevent problems with accidental use of stale
-cache files.
-
- If you need to do unusual things to compile the package, please try
-to figure out how `configure' could check whether to do them, and mail
-diffs or instructions to the address given in the `README' so they can
-be considered for the next release. If you are using the cache, and at
-some point `config.cache' contains results you don't want to keep, you
-may remove or edit it.
-
- The file `configure.ac' (or `configure.in') is used to create
-`configure' by a program called `autoconf'. You need `configure.ac' if
-you want to change it or regenerate `configure' using a newer version
-of `autoconf'.
-
-The simplest way to compile this package is:
-
- 1. `cd' to the directory containing the package's source code and type
- `./configure' to configure the package for your system.
-
- Running `configure' might take a while. While running, it prints
- some messages telling which features it is checking for.
-
- 2. Type `make' to compile the package.
-
- 3. Optionally, type `make check' to run any self-tests that come with
- the package.
-
- 4. Type `make install' to install the programs and any data files and
- documentation.
-
- 5. You can remove the program binaries and object files from the
- source code directory by typing `make clean'. To also remove the
- files that `configure' created (so you can compile the package for
- a different kind of computer), type `make distclean'. There is
- also a `make maintainer-clean' target, but that is intended mainly
- for the package's developers. If you use it, you may have to get
- all sorts of other programs in order to regenerate files that came
- with the distribution.
-
-Compilers and Options
-=====================
-
-Some systems require unusual options for compilation or linking that the
-`configure' script does not know about. Run `./configure --help' for
-details on some of the pertinent environment variables.
-
- You can give `configure' initial values for configuration parameters
-by setting variables in the command line or in the environment. Here
-is an example:
-
- ./configure CC=c99 CFLAGS=-g LIBS=-lposix
-
- *Note Defining Variables::, for more details.
-
-Compiling For Multiple Architectures
-====================================
-
-You can compile the package for more than one kind of computer at the
-same time, by placing the object files for each architecture in their
-own directory. To do this, you can use GNU `make'. `cd' to the
-directory where you want the object files and executables to go and run
-the `configure' script. `configure' automatically checks for the
-source code in the directory that `configure' is in and in `..'.
-
- With a non-GNU `make', it is safer to compile the package for one
-architecture at a time in the source code directory. After you have
-installed the package for one architecture, use `make distclean' before
-reconfiguring for another architecture.
-
-Installation Names
-==================
-
-By default, `make install' installs the package's commands under
-`/usr/local/bin', include files under `/usr/local/include', etc. You
-can specify an installation prefix other than `/usr/local' by giving
-`configure' the option `--prefix=PREFIX'.
-
- You can specify separate installation prefixes for
-architecture-specific files and architecture-independent files. If you
-pass the option `--exec-prefix=PREFIX' to `configure', the package uses
-PREFIX as the prefix for installing programs and libraries.
-Documentation and other data files still use the regular prefix.
-
- In addition, if you use an unusual directory layout you can give
-options like `--bindir=DIR' to specify different values for particular
-kinds of files. Run `configure --help' for a list of the directories
-you can set and what kinds of files go in them.
-
- If the package supports it, you can cause programs to be installed
-with an extra prefix or suffix on their names by giving `configure' the
-option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'.
-
-Optional Features
-=================
-
-Some packages pay attention to `--enable-FEATURE' options to
-`configure', where FEATURE indicates an optional part of the package.
-They may also pay attention to `--with-PACKAGE' options, where PACKAGE
-is something like `gnu-as' or `x' (for the X Window System). The
-`README' should mention any `--enable-' and `--with-' options that the
-package recognizes.
-
- For packages that use the X Window System, `configure' can usually
-find the X include and library files automatically, but if it doesn't,
-you can use the `configure' options `--x-includes=DIR' and
-`--x-libraries=DIR' to specify their locations.
-
-Specifying the System Type
-==========================
-
-There may be some features `configure' cannot figure out automatically,
-but needs to determine by the type of machine the package will run on.
-Usually, assuming the package is built to be run on the _same_
-architectures, `configure' can figure that out, but if it prints a
-message saying it cannot guess the machine type, give it the
-`--build=TYPE' option. TYPE can either be a short name for the system
-type, such as `sun4', or a canonical name which has the form:
-
- CPU-COMPANY-SYSTEM
-
-where SYSTEM can have one of these forms:
-
- OS KERNEL-OS
-
- See the file `config.sub' for the possible values of each field. If
-`config.sub' isn't included in this package, then this package doesn't
-need to know the machine type.
-
- If you are _building_ compiler tools for cross-compiling, you should
-use the option `--target=TYPE' to select the type of system they will
-produce code for.
-
- If you want to _use_ a cross compiler, that generates code for a
-platform different from the build platform, you should specify the
-"host" platform (i.e., that on which the generated programs will
-eventually be run) with `--host=TYPE'.
-
-Sharing Defaults
-================
-
-If you want to set default values for `configure' scripts to share, you
-can create a site shell script called `config.site' that gives default
-values for variables like `CC', `cache_file', and `prefix'.
-`configure' looks for `PREFIX/share/config.site' if it exists, then
-`PREFIX/etc/config.site' if it exists. Or, you can set the
-`CONFIG_SITE' environment variable to the location of the site script.
-A warning: not all `configure' scripts look for a site script.
-
-Defining Variables
-==================
-
-Variables not defined in a site shell script can be set in the
-environment passed to `configure'. However, some packages may run
-configure again during the build, and the customized values of these
-variables may be lost. In order to avoid this problem, you should set
-them in the `configure' command line, using `VAR=value'. For example:
-
- ./configure CC=/usr/local2/bin/gcc
-
-causes the specified `gcc' to be used as the C compiler (unless it is
-overridden in the site shell script).
-
-Unfortunately, this technique does not work for `CONFIG_SHELL' due to
-an Autoconf bug. Until the bug is fixed you can use this workaround:
-
- CONFIG_SHELL=/bin/bash /bin/bash ./configure CONFIG_SHELL=/bin/bash
-
-`configure' Invocation
-======================
-
-`configure' recognizes the following options to control how it operates.
-
-`--help'
-`-h'
- Print a summary of the options to `configure', and exit.
-
-`--version'
-`-V'
- Print the version of Autoconf used to generate the `configure'
- script, and exit.
-
-`--cache-file=FILE'
- Enable the cache: use and save the results of the tests in FILE,
- traditionally `config.cache'. FILE defaults to `/dev/null' to
- disable caching.
-
-`--config-cache'
-`-C'
- Alias for `--cache-file=config.cache'.
-
-`--quiet'
-`--silent'
-`-q'
- Do not print messages saying which checks are being made. To
- suppress all normal output, redirect it to `/dev/null' (any error
- messages will still be shown).
-
-`--srcdir=DIR'
- Look for the package's source code in directory DIR. Usually
- `configure' can determine that directory automatically.
-
-`configure' also accepts some other, not widely useful, options. Run
-`configure --help' for more details.
-
+Installation Instructions
+*************************
+
+Copyright (C) 1994, 1995, 1996, 1999, 2000, 2001, 2002, 2004, 2005,
+2006 Free Software Foundation, Inc.
+
+This file is free documentation; the Free Software Foundation gives
+unlimited permission to copy, distribute and modify it.
+
+Basic Installation
+==================
+
+Briefly, the shell commands `./configure; make; make install' should
+configure, build, and install this package. The following
+more-detailed instructions are generic; see the `README' file for
+instructions specific to this package.
+
+ The `configure' shell script attempts to guess correct values for
+various system-dependent variables used during compilation. It uses
+those values to create a `Makefile' in each directory of the package.
+It may also create one or more `.h' files containing system-dependent
+definitions. Finally, it creates a shell script `config.status' that
+you can run in the future to recreate the current configuration, and a
+file `config.log' containing compiler output (useful mainly for
+debugging `configure').
+
+ It can also use an optional file (typically called `config.cache'
+and enabled with `--cache-file=config.cache' or simply `-C') that saves
+the results of its tests to speed up reconfiguring. Caching is
+disabled by default to prevent problems with accidental use of stale
+cache files.
+
+ If you need to do unusual things to compile the package, please try
+to figure out how `configure' could check whether to do them, and mail
+diffs or instructions to the address given in the `README' so they can
+be considered for the next release. If you are using the cache, and at
+some point `config.cache' contains results you don't want to keep, you
+may remove or edit it.
+
+ The file `configure.ac' (or `configure.in') is used to create
+`configure' by a program called `autoconf'. You need `configure.ac' if
+you want to change it or regenerate `configure' using a newer version
+of `autoconf'.
+
+The simplest way to compile this package is:
+
+ 1. `cd' to the directory containing the package's source code and type
+ `./configure' to configure the package for your system.
+
+ Running `configure' might take a while. While running, it prints
+ some messages telling which features it is checking for.
+
+ 2. Type `make' to compile the package.
+
+ 3. Optionally, type `make check' to run any self-tests that come with
+ the package.
+
+ 4. Type `make install' to install the programs and any data files and
+ documentation.
+
+ 5. You can remove the program binaries and object files from the
+ source code directory by typing `make clean'. To also remove the
+ files that `configure' created (so you can compile the package for
+ a different kind of computer), type `make distclean'. There is
+ also a `make maintainer-clean' target, but that is intended mainly
+ for the package's developers. If you use it, you may have to get
+ all sorts of other programs in order to regenerate files that came
+ with the distribution.
+
+Compilers and Options
+=====================
+
+Some systems require unusual options for compilation or linking that the
+`configure' script does not know about. Run `./configure --help' for
+details on some of the pertinent environment variables.
+
+ You can give `configure' initial values for configuration parameters
+by setting variables in the command line or in the environment. Here
+is an example:
+
+ ./configure CC=c99 CFLAGS=-g LIBS=-lposix
+
+ *Note Defining Variables::, for more details.
+
+Compiling For Multiple Architectures
+====================================
+
+You can compile the package for more than one kind of computer at the
+same time, by placing the object files for each architecture in their
+own directory. To do this, you can use GNU `make'. `cd' to the
+directory where you want the object files and executables to go and run
+the `configure' script. `configure' automatically checks for the
+source code in the directory that `configure' is in and in `..'.
+
+ With a non-GNU `make', it is safer to compile the package for one
+architecture at a time in the source code directory. After you have
+installed the package for one architecture, use `make distclean' before
+reconfiguring for another architecture.
+
+Installation Names
+==================
+
+By default, `make install' installs the package's commands under
+`/usr/local/bin', include files under `/usr/local/include', etc. You
+can specify an installation prefix other than `/usr/local' by giving
+`configure' the option `--prefix=PREFIX'.
+
+ You can specify separate installation prefixes for
+architecture-specific files and architecture-independent files. If you
+pass the option `--exec-prefix=PREFIX' to `configure', the package uses
+PREFIX as the prefix for installing programs and libraries.
+Documentation and other data files still use the regular prefix.
+
+ In addition, if you use an unusual directory layout you can give
+options like `--bindir=DIR' to specify different values for particular
+kinds of files. Run `configure --help' for a list of the directories
+you can set and what kinds of files go in them.
+
+ If the package supports it, you can cause programs to be installed
+with an extra prefix or suffix on their names by giving `configure' the
+option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'.
+
+Optional Features
+=================
+
+Some packages pay attention to `--enable-FEATURE' options to
+`configure', where FEATURE indicates an optional part of the package.
+They may also pay attention to `--with-PACKAGE' options, where PACKAGE
+is something like `gnu-as' or `x' (for the X Window System). The
+`README' should mention any `--enable-' and `--with-' options that the
+package recognizes.
+
+ For packages that use the X Window System, `configure' can usually
+find the X include and library files automatically, but if it doesn't,
+you can use the `configure' options `--x-includes=DIR' and
+`--x-libraries=DIR' to specify their locations.
+
+Specifying the System Type
+==========================
+
+There may be some features `configure' cannot figure out automatically,
+but needs to determine by the type of machine the package will run on.
+Usually, assuming the package is built to be run on the _same_
+architectures, `configure' can figure that out, but if it prints a
+message saying it cannot guess the machine type, give it the
+`--build=TYPE' option. TYPE can either be a short name for the system
+type, such as `sun4', or a canonical name which has the form:
+
+ CPU-COMPANY-SYSTEM
+
+where SYSTEM can have one of these forms:
+
+ OS KERNEL-OS
+
+ See the file `config.sub' for the possible values of each field. If
+`config.sub' isn't included in this package, then this package doesn't
+need to know the machine type.
+
+ If you are _building_ compiler tools for cross-compiling, you should
+use the option `--target=TYPE' to select the type of system they will
+produce code for.
+
+ If you want to _use_ a cross compiler, that generates code for a
+platform different from the build platform, you should specify the
+"host" platform (i.e., that on which the generated programs will
+eventually be run) with `--host=TYPE'.
+
+Sharing Defaults
+================
+
+If you want to set default values for `configure' scripts to share, you
+can create a site shell script called `config.site' that gives default
+values for variables like `CC', `cache_file', and `prefix'.
+`configure' looks for `PREFIX/share/config.site' if it exists, then
+`PREFIX/etc/config.site' if it exists. Or, you can set the
+`CONFIG_SITE' environment variable to the location of the site script.
+A warning: not all `configure' scripts look for a site script.
+
+Defining Variables
+==================
+
+Variables not defined in a site shell script can be set in the
+environment passed to `configure'. However, some packages may run
+configure again during the build, and the customized values of these
+variables may be lost. In order to avoid this problem, you should set
+them in the `configure' command line, using `VAR=value'. For example:
+
+ ./configure CC=/usr/local2/bin/gcc
+
+causes the specified `gcc' to be used as the C compiler (unless it is
+overridden in the site shell script).
+
+Unfortunately, this technique does not work for `CONFIG_SHELL' due to
+an Autoconf bug. Until the bug is fixed you can use this workaround:
+
+ CONFIG_SHELL=/bin/bash /bin/bash ./configure CONFIG_SHELL=/bin/bash
+
+`configure' Invocation
+======================
+
+`configure' recognizes the following options to control how it operates.
+
+`--help'
+`-h'
+ Print a summary of the options to `configure', and exit.
+
+`--version'
+`-V'
+ Print the version of Autoconf used to generate the `configure'
+ script, and exit.
+
+`--cache-file=FILE'
+ Enable the cache: use and save the results of the tests in FILE,
+ traditionally `config.cache'. FILE defaults to `/dev/null' to
+ disable caching.
+
+`--config-cache'
+`-C'
+ Alias for `--cache-file=config.cache'.
+
+`--quiet'
+`--silent'
+`-q'
+ Do not print messages saying which checks are being made. To
+ suppress all normal output, redirect it to `/dev/null' (any error
+ messages will still be shown).
+
+`--srcdir=DIR'
+ Look for the package's source code in directory DIR. Usually
+ `configure' can determine that directory automatically.
+
+`configure' also accepts some other, not widely useful, options. Run
+`configure --help' for more details.
+
diff --git a/pixman/README b/pixman/README
index f3c02e4cd..3cfbc5053 100644
--- a/pixman/README
+++ b/pixman/README
@@ -1,22 +1,22 @@
-pixman is a library that provides low-level pixel manipulation
-features such as image compositing and trapezoid rasterization.
-
-All questions regarding this software should be directed to the pixman
-mailing list:
-
- http://lists.freedesktop.org/mailman/listinfo/pixman
-
-Please send patches and bug reports either to the mailing list above,
-or file them at the freedesktop bug tracker:
-
- https://bugs.freedesktop.org/enter_bug.cgi?product=pixman
-
-The master development code repository can be found at:
-
- git://anongit.freedesktop.org/git/pixman
-
- http://gitweb.freedesktop.org/?p=pixman;a=summary
-
-For more information on the git code manager, see:
-
- http://wiki.x.org/wiki/GitPage
+pixman is a library that provides low-level pixel manipulation
+features such as image compositing and trapezoid rasterization.
+
+All questions regarding this software should be directed to the pixman
+mailing list:
+
+ http://lists.freedesktop.org/mailman/listinfo/pixman
+
+Please send patches and bug reports either to the mailing list above,
+or file them at the freedesktop bug tracker:
+
+ https://bugs.freedesktop.org/enter_bug.cgi?product=pixman
+
+The master development code repository can be found at:
+
+ git://anongit.freedesktop.org/git/pixman
+
+ http://gitweb.freedesktop.org/?p=pixman;a=summary
+
+For more information on the git code manager, see:
+
+ http://wiki.x.org/wiki/GitPage
diff --git a/pixman/pixman-1-uninstalled.pc.in b/pixman/pixman-1-uninstalled.pc.in
index c15e86547..e0347d010 100644
--- a/pixman/pixman-1-uninstalled.pc.in
+++ b/pixman/pixman-1-uninstalled.pc.in
@@ -1,5 +1,5 @@
-Name: Pixman
-Description: The pixman library (version 1)
-Version: @PACKAGE_VERSION@
-Cflags: -I${pc_top_builddir}/${pcfiledir}/pixman
-Libs: ${pc_top_builddir}/${pcfiledir}/pixman/libpixman-1.la
+Name: Pixman
+Description: The pixman library (version 1)
+Version: @PACKAGE_VERSION@
+Cflags: -I${pc_top_builddir}/${pcfiledir}/pixman
+Libs: ${pc_top_builddir}/${pcfiledir}/pixman/libpixman-1.la
diff --git a/pixman/pixman/pixman-access-accessors.c b/pixman/pixman/pixman-access-accessors.c
index bde67a70e..3263582f1 100644
--- a/pixman/pixman/pixman-access-accessors.c
+++ b/pixman/pixman/pixman-access-accessors.c
@@ -1,3 +1,3 @@
-#define PIXMAN_FB_ACCESSORS
-
-#include "pixman-access.c"
+#define PIXMAN_FB_ACCESSORS
+
+#include "pixman-access.c"
diff --git a/pixman/pixman/pixman-edge-accessors.c b/pixman/pixman/pixman-edge-accessors.c
index 0f2c56e74..ea3a31e2f 100644
--- a/pixman/pixman/pixman-edge-accessors.c
+++ b/pixman/pixman/pixman-edge-accessors.c
@@ -1,4 +1,4 @@
-
-#define PIXMAN_FB_ACCESSORS
-
-#include "pixman-edge.c"
+
+#define PIXMAN_FB_ACCESSORS
+
+#include "pixman-edge.c"
diff --git a/pixman/pixman/pixman-edge-imp.h b/pixman/pixman/pixman-edge-imp.h
index 20ffda896..a4698eddb 100644
--- a/pixman/pixman/pixman-edge-imp.h
+++ b/pixman/pixman/pixman-edge-imp.h
@@ -1,182 +1,182 @@
-/*
- * Copyright © 2004 Keith Packard
- *
- * Permission to use, copy, modify, distribute, and sell this software and its
- * documentation for any purpose is hereby granted without fee, provided that
- * the above copyright notice appear in all copies and that both that
- * copyright notice and this permission notice appear in supporting
- * documentation, and that the name of Keith Packard not be used in
- * advertising or publicity pertaining to distribution of the software without
- * specific, written prior permission. Keith Packard makes no
- * representations about the suitability of this software for any purpose. It
- * is provided "as is" without express or implied warranty.
- *
- * KEITH PACKARD DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
- * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
- * EVENT SHALL KEITH PACKARD BE LIABLE FOR ANY SPECIAL, INDIRECT OR
- * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
- * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
- * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
- * PERFORMANCE OF THIS SOFTWARE.
- */
-
-#ifndef rasterize_span
-#endif
-
-static void
-RASTERIZE_EDGES (pixman_image_t *image,
- pixman_edge_t *l,
- pixman_edge_t *r,
- pixman_fixed_t t,
- pixman_fixed_t b)
-{
- pixman_fixed_t y = t;
- uint32_t *line;
- uint32_t *buf = (image)->bits.bits;
- int stride = (image)->bits.rowstride;
- int width = (image)->bits.width;
-
- line = buf + pixman_fixed_to_int (y) * stride;
-
- for (;;)
- {
- pixman_fixed_t lx;
- pixman_fixed_t rx;
- int lxi;
- int rxi;
-
- lx = l->x;
- rx = r->x;
-#if N_BITS == 1
- /* For the non-antialiased case, round the coordinates up, in effect
- * sampling just slightly to the left of the pixel. This is so that
- * when the sample point lies exactly on the line, we round towards
- * north-west.
- *
- * (The AA case does a similar adjustment in RENDER_SAMPLES_X)
- */
- lx += X_FRAC_FIRST(1) - pixman_fixed_e;
- rx += X_FRAC_FIRST(1) - pixman_fixed_e;
-#endif
- /* clip X */
- if (lx < 0)
- lx = 0;
- if (pixman_fixed_to_int (rx) >= width)
-#if N_BITS == 1
- rx = pixman_int_to_fixed (width);
-#else
- /* Use the last pixel of the scanline, covered 100%.
- * We can't use the first pixel following the scanline,
- * because accessing it could result in a buffer overrun.
- */
- rx = pixman_int_to_fixed (width) - 1;
-#endif
-
- /* Skip empty (or backwards) sections */
- if (rx > lx)
- {
-
- /* Find pixel bounds for span */
- lxi = pixman_fixed_to_int (lx);
- rxi = pixman_fixed_to_int (rx);
-
-#if N_BITS == 1
- {
-
-#define LEFT_MASK(x) \
- (((x) & 0x1f) ? \
- SCREEN_SHIFT_RIGHT (0xffffffff, (x) & 0x1f) : 0)
-#define RIGHT_MASK(x) \
- (((32 - (x)) & 0x1f) ? \
- SCREEN_SHIFT_LEFT (0xffffffff, (32 - (x)) & 0x1f) : 0)
-
-#define MASK_BITS(x,w,l,n,r) { \
- n = (w); \
- r = RIGHT_MASK ((x) + n); \
- l = LEFT_MASK (x); \
- if (l) { \
- n -= 32 - ((x) & 0x1f); \
- if (n < 0) { \
- n = 0; \
- l &= r; \
- r = 0; \
- } \
- } \
- n >>= 5; \
- }
-
- uint32_t *a = line;
- uint32_t startmask;
- uint32_t endmask;
- int nmiddle;
- int width = rxi - lxi;
- int x = lxi;
-
- a += x >> 5;
- x &= 0x1f;
-
- MASK_BITS (x, width, startmask, nmiddle, endmask);
-
- if (startmask) {
- WRITE(image, a, READ(image, a) | startmask);
- a++;
- }
- while (nmiddle--)
- WRITE(image, a++, 0xffffffff);
- if (endmask)
- WRITE(image, a, READ(image, a) | endmask);
- }
-#else
- {
- DEFINE_ALPHA(line,lxi);
- int lxs;
- int rxs;
-
- /* Sample coverage for edge pixels */
- lxs = RENDER_SAMPLES_X (lx, N_BITS);
- rxs = RENDER_SAMPLES_X (rx, N_BITS);
-
- /* Add coverage across row */
- if (lxi == rxi)
- {
- ADD_ALPHA (rxs - lxs);
- }
- else
- {
- int xi;
-
- ADD_ALPHA (N_X_FRAC(N_BITS) - lxs);
- STEP_ALPHA;
- for (xi = lxi + 1; xi < rxi; xi++)
- {
- ADD_ALPHA (N_X_FRAC(N_BITS));
- STEP_ALPHA;
- }
- ADD_ALPHA (rxs);
- }
- }
-#endif
- }
-
- if (y == b)
- break;
-
-#if N_BITS > 1
- if (pixman_fixed_frac (y) != Y_FRAC_LAST(N_BITS))
- {
- RENDER_EDGE_STEP_SMALL (l);
- RENDER_EDGE_STEP_SMALL (r);
- y += STEP_Y_SMALL(N_BITS);
- }
- else
-#endif
- {
- RENDER_EDGE_STEP_BIG (l);
- RENDER_EDGE_STEP_BIG (r);
- y += STEP_Y_BIG(N_BITS);
- line += stride;
- }
- }
-}
-
-#undef rasterize_span
+/*
+ * Copyright © 2004 Keith Packard
+ *
+ * Permission to use, copy, modify, distribute, and sell this software and its
+ * documentation for any purpose is hereby granted without fee, provided that
+ * the above copyright notice appear in all copies and that both that
+ * copyright notice and this permission notice appear in supporting
+ * documentation, and that the name of Keith Packard not be used in
+ * advertising or publicity pertaining to distribution of the software without
+ * specific, written prior permission. Keith Packard makes no
+ * representations about the suitability of this software for any purpose. It
+ * is provided "as is" without express or implied warranty.
+ *
+ * KEITH PACKARD DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
+ * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
+ * EVENT SHALL KEITH PACKARD BE LIABLE FOR ANY SPECIAL, INDIRECT OR
+ * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
+ * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
+ * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+ * PERFORMANCE OF THIS SOFTWARE.
+ */
+
+#ifndef rasterize_span
+#endif
+
+static void
+RASTERIZE_EDGES (pixman_image_t *image,
+ pixman_edge_t *l,
+ pixman_edge_t *r,
+ pixman_fixed_t t,
+ pixman_fixed_t b)
+{
+ pixman_fixed_t y = t;
+ uint32_t *line;
+ uint32_t *buf = (image)->bits.bits;
+ int stride = (image)->bits.rowstride;
+ int width = (image)->bits.width;
+
+ line = buf + pixman_fixed_to_int (y) * stride;
+
+ for (;;)
+ {
+ pixman_fixed_t lx;
+ pixman_fixed_t rx;
+ int lxi;
+ int rxi;
+
+ lx = l->x;
+ rx = r->x;
+#if N_BITS == 1
+ /* For the non-antialiased case, round the coordinates up, in effect
+ * sampling just slightly to the left of the pixel. This is so that
+ * when the sample point lies exactly on the line, we round towards
+ * north-west.
+ *
+ * (The AA case does a similar adjustment in RENDER_SAMPLES_X)
+ */
+ lx += X_FRAC_FIRST(1) - pixman_fixed_e;
+ rx += X_FRAC_FIRST(1) - pixman_fixed_e;
+#endif
+ /* clip X */
+ if (lx < 0)
+ lx = 0;
+ if (pixman_fixed_to_int (rx) >= width)
+#if N_BITS == 1
+ rx = pixman_int_to_fixed (width);
+#else
+ /* Use the last pixel of the scanline, covered 100%.
+ * We can't use the first pixel following the scanline,
+ * because accessing it could result in a buffer overrun.
+ */
+ rx = pixman_int_to_fixed (width) - 1;
+#endif
+
+ /* Skip empty (or backwards) sections */
+ if (rx > lx)
+ {
+
+ /* Find pixel bounds for span */
+ lxi = pixman_fixed_to_int (lx);
+ rxi = pixman_fixed_to_int (rx);
+
+#if N_BITS == 1
+ {
+
+#define LEFT_MASK(x) \
+ (((x) & 0x1f) ? \
+ SCREEN_SHIFT_RIGHT (0xffffffff, (x) & 0x1f) : 0)
+#define RIGHT_MASK(x) \
+ (((32 - (x)) & 0x1f) ? \
+ SCREEN_SHIFT_LEFT (0xffffffff, (32 - (x)) & 0x1f) : 0)
+
+#define MASK_BITS(x,w,l,n,r) { \
+ n = (w); \
+ r = RIGHT_MASK ((x) + n); \
+ l = LEFT_MASK (x); \
+ if (l) { \
+ n -= 32 - ((x) & 0x1f); \
+ if (n < 0) { \
+ n = 0; \
+ l &= r; \
+ r = 0; \
+ } \
+ } \
+ n >>= 5; \
+ }
+
+ uint32_t *a = line;
+ uint32_t startmask;
+ uint32_t endmask;
+ int nmiddle;
+ int width = rxi - lxi;
+ int x = lxi;
+
+ a += x >> 5;
+ x &= 0x1f;
+
+ MASK_BITS (x, width, startmask, nmiddle, endmask);
+
+ if (startmask) {
+ WRITE(image, a, READ(image, a) | startmask);
+ a++;
+ }
+ while (nmiddle--)
+ WRITE(image, a++, 0xffffffff);
+ if (endmask)
+ WRITE(image, a, READ(image, a) | endmask);
+ }
+#else
+ {
+ DEFINE_ALPHA(line,lxi);
+ int lxs;
+ int rxs;
+
+ /* Sample coverage for edge pixels */
+ lxs = RENDER_SAMPLES_X (lx, N_BITS);
+ rxs = RENDER_SAMPLES_X (rx, N_BITS);
+
+ /* Add coverage across row */
+ if (lxi == rxi)
+ {
+ ADD_ALPHA (rxs - lxs);
+ }
+ else
+ {
+ int xi;
+
+ ADD_ALPHA (N_X_FRAC(N_BITS) - lxs);
+ STEP_ALPHA;
+ for (xi = lxi + 1; xi < rxi; xi++)
+ {
+ ADD_ALPHA (N_X_FRAC(N_BITS));
+ STEP_ALPHA;
+ }
+ ADD_ALPHA (rxs);
+ }
+ }
+#endif
+ }
+
+ if (y == b)
+ break;
+
+#if N_BITS > 1
+ if (pixman_fixed_frac (y) != Y_FRAC_LAST(N_BITS))
+ {
+ RENDER_EDGE_STEP_SMALL (l);
+ RENDER_EDGE_STEP_SMALL (r);
+ y += STEP_Y_SMALL(N_BITS);
+ }
+ else
+#endif
+ {
+ RENDER_EDGE_STEP_BIG (l);
+ RENDER_EDGE_STEP_BIG (r);
+ y += STEP_Y_BIG(N_BITS);
+ line += stride;
+ }
+ }
+}
+
+#undef rasterize_span
diff --git a/pixman/pixman/pixman-edge.c b/pixman/pixman/pixman-edge.c
index 22b0158ba..8d498ab44 100644
--- a/pixman/pixman/pixman-edge.c
+++ b/pixman/pixman/pixman-edge.c
@@ -1,384 +1,384 @@
-/*
- * Copyright © 2004 Keith Packard
- *
- * Permission to use, copy, modify, distribute, and sell this software and its
- * documentation for any purpose is hereby granted without fee, provided that
- * the above copyright notice appear in all copies and that both that
- * copyright notice and this permission notice appear in supporting
- * documentation, and that the name of Keith Packard not be used in
- * advertising or publicity pertaining to distribution of the software without
- * specific, written prior permission. Keith Packard makes no
- * representations about the suitability of this software for any purpose. It
- * is provided "as is" without express or implied warranty.
- *
- * KEITH PACKARD DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
- * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
- * EVENT SHALL KEITH PACKARD BE LIABLE FOR ANY SPECIAL, INDIRECT OR
- * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
- * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
- * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
- * PERFORMANCE OF THIS SOFTWARE.
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include <string.h>
-
-#include "pixman-private.h"
-#include "pixman-accessor.h"
-
-/*
- * Step across a small sample grid gap
- */
-#define RENDER_EDGE_STEP_SMALL(edge) \
- { \
- edge->x += edge->stepx_small; \
- edge->e += edge->dx_small; \
- if (edge->e > 0) \
- { \
- edge->e -= edge->dy; \
- edge->x += edge->signdx; \
- } \
- }
-
-/*
- * Step across a large sample grid gap
- */
-#define RENDER_EDGE_STEP_BIG(edge) \
- { \
- edge->x += edge->stepx_big; \
- edge->e += edge->dx_big; \
- if (edge->e > 0) \
- { \
- edge->e -= edge->dy; \
- edge->x += edge->signdx; \
- } \
- }
-
-#ifdef PIXMAN_FB_ACCESSORS
-#define PIXMAN_RASTERIZE_EDGES pixman_rasterize_edges_accessors
-#else
-#define PIXMAN_RASTERIZE_EDGES pixman_rasterize_edges_no_accessors
-#endif
-
-/*
- * 4 bit alpha
- */
-
-#define N_BITS 4
-#define RASTERIZE_EDGES rasterize_edges_4
-
-#ifndef WORDS_BIGENDIAN
-#define SHIFT_4(o) ((o) << 2)
-#else
-#define SHIFT_4(o) ((1 - (o)) << 2)
-#endif
-
-#define GET_4(x, o) (((x) >> SHIFT_4 (o)) & 0xf)
-#define PUT_4(x, o, v) \
- (((x) & ~(0xf << SHIFT_4 (o))) | (((v) & 0xf) << SHIFT_4 (o)))
-
-#define DEFINE_ALPHA(line, x) \
- uint8_t *__ap = (uint8_t *) line + ((x) >> 1); \
- int __ao = (x) & 1
-
-#define STEP_ALPHA ((__ap += __ao), (__ao ^= 1))
-
-#define ADD_ALPHA(a) \
- { \
- uint8_t __o = READ (image, __ap); \
- uint8_t __a = (a) + GET_4 (__o, __ao); \
- WRITE (image, __ap, PUT_4 (__o, __ao, __a | (0 - ((__a) >> 4)))); \
- }
-
-#include "pixman-edge-imp.h"
-
-#undef ADD_ALPHA
-#undef STEP_ALPHA
-#undef DEFINE_ALPHA
-#undef RASTERIZE_EDGES
-#undef N_BITS
-
-
-/*
- * 1 bit alpha
- */
-
-#define N_BITS 1
-#define RASTERIZE_EDGES rasterize_edges_1
-
-#include "pixman-edge-imp.h"
-
-#undef RASTERIZE_EDGES
-#undef N_BITS
-
-/*
- * 8 bit alpha
- */
-
-static force_inline uint8_t
-clip255 (int x)
-{
- if (x > 255)
- return 255;
-
- return x;
-}
-
-#define ADD_SATURATE_8(buf, val, length) \
- do \
- { \
- int i__ = (length); \
- uint8_t *buf__ = (buf); \
- int val__ = (val); \
- \
- while (i__--) \
- { \
- WRITE (image, (buf__), clip255 (READ (image, (buf__)) + (val__))); \
- (buf__)++; \
- } \
- } while (0)
-
-/*
- * We want to detect the case where we add the same value to a long
- * span of pixels. The triangles on the end are filled in while we
- * count how many sub-pixel scanlines contribute to the middle section.
- *
- * +--------------------------+
- * fill_height =| \ /
- * +------------------+
- * |================|
- * fill_start fill_end
- */
-static void
-rasterize_edges_8 (pixman_image_t *image,
- pixman_edge_t * l,
- pixman_edge_t * r,
- pixman_fixed_t t,
- pixman_fixed_t b)
-{
- pixman_fixed_t y = t;
- uint32_t *line;
- int fill_start = -1, fill_end = -1;
- int fill_size = 0;
- uint32_t *buf = (image)->bits.bits;
- int stride = (image)->bits.rowstride;
- int width = (image)->bits.width;
-
- line = buf + pixman_fixed_to_int (y) * stride;
-
- for (;;)
- {
- uint8_t *ap = (uint8_t *) line;
- pixman_fixed_t lx, rx;
- int lxi, rxi;
-
- /* clip X */
- lx = l->x;
- if (lx < 0)
- lx = 0;
-
- rx = r->x;
-
- if (pixman_fixed_to_int (rx) >= width)
- {
- /* Use the last pixel of the scanline, covered 100%.
- * We can't use the first pixel following the scanline,
- * because accessing it could result in a buffer overrun.
- */
- rx = pixman_int_to_fixed (width) - 1;
- }
-
- /* Skip empty (or backwards) sections */
- if (rx > lx)
- {
- int lxs, rxs;
-
- /* Find pixel bounds for span. */
- lxi = pixman_fixed_to_int (lx);
- rxi = pixman_fixed_to_int (rx);
-
- /* Sample coverage for edge pixels */
- lxs = RENDER_SAMPLES_X (lx, 8);
- rxs = RENDER_SAMPLES_X (rx, 8);
-
- /* Add coverage across row */
- if (lxi == rxi)
- {
- WRITE (image, ap + lxi,
- clip255 (READ (image, ap + lxi) + rxs - lxs));
- }
- else
- {
- WRITE (image, ap + lxi,
- clip255 (READ (image, ap + lxi) + N_X_FRAC (8) - lxs));
-
- /* Move forward so that lxi/rxi is the pixel span */
- lxi++;
-
- /* Don't bother trying to optimize the fill unless
- * the span is longer than 4 pixels. */
- if (rxi - lxi > 4)
- {
- if (fill_start < 0)
- {
- fill_start = lxi;
- fill_end = rxi;
- fill_size++;
- }
- else
- {
- if (lxi >= fill_end || rxi < fill_start)
- {
- /* We're beyond what we saved, just fill it */
- ADD_SATURATE_8 (ap + fill_start,
- fill_size * N_X_FRAC (8),
- fill_end - fill_start);
- fill_start = lxi;
- fill_end = rxi;
- fill_size = 1;
- }
- else
- {
- /* Update fill_start */
- if (lxi > fill_start)
- {
- ADD_SATURATE_8 (ap + fill_start,
- fill_size * N_X_FRAC (8),
- lxi - fill_start);
- fill_start = lxi;
- }
- else if (lxi < fill_start)
- {
- ADD_SATURATE_8 (ap + lxi, N_X_FRAC (8),
- fill_start - lxi);
- }
-
- /* Update fill_end */
- if (rxi < fill_end)
- {
- ADD_SATURATE_8 (ap + rxi,
- fill_size * N_X_FRAC (8),
- fill_end - rxi);
- fill_end = rxi;
- }
- else if (fill_end < rxi)
- {
- ADD_SATURATE_8 (ap + fill_end,
- N_X_FRAC (8),
- rxi - fill_end);
- }
- fill_size++;
- }
- }
- }
- else
- {
- ADD_SATURATE_8 (ap + lxi, N_X_FRAC (8), rxi - lxi);
- }
-
- WRITE (image, ap + rxi, clip255 (READ (image, ap + rxi) + rxs));
- }
- }
-
- if (y == b)
- {
- /* We're done, make sure we clean up any remaining fill. */
- if (fill_start != fill_end)
- {
- if (fill_size == N_Y_FRAC (8))
- {
- MEMSET_WRAPPED (image, ap + fill_start,
- 0xff, fill_end - fill_start);
- }
- else
- {
- ADD_SATURATE_8 (ap + fill_start, fill_size * N_X_FRAC (8),
- fill_end - fill_start);
- }
- }
- break;
- }
-
- if (pixman_fixed_frac (y) != Y_FRAC_LAST (8))
- {
- RENDER_EDGE_STEP_SMALL (l);
- RENDER_EDGE_STEP_SMALL (r);
- y += STEP_Y_SMALL (8);
- }
- else
- {
- RENDER_EDGE_STEP_BIG (l);
- RENDER_EDGE_STEP_BIG (r);
- y += STEP_Y_BIG (8);
- if (fill_start != fill_end)
- {
- if (fill_size == N_Y_FRAC (8))
- {
- MEMSET_WRAPPED (image, ap + fill_start,
- 0xff, fill_end - fill_start);
- }
- else
- {
- ADD_SATURATE_8 (ap + fill_start, fill_size * N_X_FRAC (8),
- fill_end - fill_start);
- }
-
- fill_start = fill_end = -1;
- fill_size = 0;
- }
-
- line += stride;
- }
- }
-}
-
-#ifndef PIXMAN_FB_ACCESSORS
-static
-#endif
-void
-PIXMAN_RASTERIZE_EDGES (pixman_image_t *image,
- pixman_edge_t * l,
- pixman_edge_t * r,
- pixman_fixed_t t,
- pixman_fixed_t b)
-{
- switch (PIXMAN_FORMAT_BPP (image->bits.format))
- {
- case 1:
- rasterize_edges_1 (image, l, r, t, b);
- break;
-
- case 4:
- rasterize_edges_4 (image, l, r, t, b);
- break;
-
- case 8:
- rasterize_edges_8 (image, l, r, t, b);
- break;
-
- default:
- break;
- }
-}
-
-#ifndef PIXMAN_FB_ACCESSORS
-
-PIXMAN_EXPORT void
-pixman_rasterize_edges (pixman_image_t *image,
- pixman_edge_t * l,
- pixman_edge_t * r,
- pixman_fixed_t t,
- pixman_fixed_t b)
-{
- return_if_fail (image->type == BITS);
-
- if (image->bits.read_func || image->bits.write_func)
- pixman_rasterize_edges_accessors (image, l, r, t, b);
- else
- pixman_rasterize_edges_no_accessors (image, l, r, t, b);
-}
-
-#endif
+/*
+ * Copyright © 2004 Keith Packard
+ *
+ * Permission to use, copy, modify, distribute, and sell this software and its
+ * documentation for any purpose is hereby granted without fee, provided that
+ * the above copyright notice appear in all copies and that both that
+ * copyright notice and this permission notice appear in supporting
+ * documentation, and that the name of Keith Packard not be used in
+ * advertising or publicity pertaining to distribution of the software without
+ * specific, written prior permission. Keith Packard makes no
+ * representations about the suitability of this software for any purpose. It
+ * is provided "as is" without express or implied warranty.
+ *
+ * KEITH PACKARD DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
+ * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
+ * EVENT SHALL KEITH PACKARD BE LIABLE FOR ANY SPECIAL, INDIRECT OR
+ * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
+ * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
+ * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+ * PERFORMANCE OF THIS SOFTWARE.
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include <string.h>
+
+#include "pixman-private.h"
+#include "pixman-accessor.h"
+
+/*
+ * Step across a small sample grid gap
+ */
+#define RENDER_EDGE_STEP_SMALL(edge) \
+ { \
+ edge->x += edge->stepx_small; \
+ edge->e += edge->dx_small; \
+ if (edge->e > 0) \
+ { \
+ edge->e -= edge->dy; \
+ edge->x += edge->signdx; \
+ } \
+ }
+
+/*
+ * Step across a large sample grid gap
+ */
+#define RENDER_EDGE_STEP_BIG(edge) \
+ { \
+ edge->x += edge->stepx_big; \
+ edge->e += edge->dx_big; \
+ if (edge->e > 0) \
+ { \
+ edge->e -= edge->dy; \
+ edge->x += edge->signdx; \
+ } \
+ }
+
+#ifdef PIXMAN_FB_ACCESSORS
+#define PIXMAN_RASTERIZE_EDGES pixman_rasterize_edges_accessors
+#else
+#define PIXMAN_RASTERIZE_EDGES pixman_rasterize_edges_no_accessors
+#endif
+
+/*
+ * 4 bit alpha
+ */
+
+#define N_BITS 4
+#define RASTERIZE_EDGES rasterize_edges_4
+
+#ifndef WORDS_BIGENDIAN
+#define SHIFT_4(o) ((o) << 2)
+#else
+#define SHIFT_4(o) ((1 - (o)) << 2)
+#endif
+
+#define GET_4(x, o) (((x) >> SHIFT_4 (o)) & 0xf)
+#define PUT_4(x, o, v) \
+ (((x) & ~(0xf << SHIFT_4 (o))) | (((v) & 0xf) << SHIFT_4 (o)))
+
+#define DEFINE_ALPHA(line, x) \
+ uint8_t *__ap = (uint8_t *) line + ((x) >> 1); \
+ int __ao = (x) & 1
+
+#define STEP_ALPHA ((__ap += __ao), (__ao ^= 1))
+
+#define ADD_ALPHA(a) \
+ { \
+ uint8_t __o = READ (image, __ap); \
+ uint8_t __a = (a) + GET_4 (__o, __ao); \
+ WRITE (image, __ap, PUT_4 (__o, __ao, __a | (0 - ((__a) >> 4)))); \
+ }
+
+#include "pixman-edge-imp.h"
+
+#undef ADD_ALPHA
+#undef STEP_ALPHA
+#undef DEFINE_ALPHA
+#undef RASTERIZE_EDGES
+#undef N_BITS
+
+
+/*
+ * 1 bit alpha
+ */
+
+#define N_BITS 1
+#define RASTERIZE_EDGES rasterize_edges_1
+
+#include "pixman-edge-imp.h"
+
+#undef RASTERIZE_EDGES
+#undef N_BITS
+
+/*
+ * 8 bit alpha
+ */
+
+static force_inline uint8_t
+clip255 (int x)
+{
+ if (x > 255)
+ return 255;
+
+ return x;
+}
+
+#define ADD_SATURATE_8(buf, val, length) \
+ do \
+ { \
+ int i__ = (length); \
+ uint8_t *buf__ = (buf); \
+ int val__ = (val); \
+ \
+ while (i__--) \
+ { \
+ WRITE (image, (buf__), clip255 (READ (image, (buf__)) + (val__))); \
+ (buf__)++; \
+ } \
+ } while (0)
+
+/*
+ * We want to detect the case where we add the same value to a long
+ * span of pixels. The triangles on the end are filled in while we
+ * count how many sub-pixel scanlines contribute to the middle section.
+ *
+ * +--------------------------+
+ * fill_height =| \ /
+ * +------------------+
+ * |================|
+ * fill_start fill_end
+ */
+static void
+rasterize_edges_8 (pixman_image_t *image,
+ pixman_edge_t * l,
+ pixman_edge_t * r,
+ pixman_fixed_t t,
+ pixman_fixed_t b)
+{
+ pixman_fixed_t y = t;
+ uint32_t *line;
+ int fill_start = -1, fill_end = -1;
+ int fill_size = 0;
+ uint32_t *buf = (image)->bits.bits;
+ int stride = (image)->bits.rowstride;
+ int width = (image)->bits.width;
+
+ line = buf + pixman_fixed_to_int (y) * stride;
+
+ for (;;)
+ {
+ uint8_t *ap = (uint8_t *) line;
+ pixman_fixed_t lx, rx;
+ int lxi, rxi;
+
+ /* clip X */
+ lx = l->x;
+ if (lx < 0)
+ lx = 0;
+
+ rx = r->x;
+
+ if (pixman_fixed_to_int (rx) >= width)
+ {
+ /* Use the last pixel of the scanline, covered 100%.
+ * We can't use the first pixel following the scanline,
+ * because accessing it could result in a buffer overrun.
+ */
+ rx = pixman_int_to_fixed (width) - 1;
+ }
+
+ /* Skip empty (or backwards) sections */
+ if (rx > lx)
+ {
+ int lxs, rxs;
+
+ /* Find pixel bounds for span. */
+ lxi = pixman_fixed_to_int (lx);
+ rxi = pixman_fixed_to_int (rx);
+
+ /* Sample coverage for edge pixels */
+ lxs = RENDER_SAMPLES_X (lx, 8);
+ rxs = RENDER_SAMPLES_X (rx, 8);
+
+ /* Add coverage across row */
+ if (lxi == rxi)
+ {
+ WRITE (image, ap + lxi,
+ clip255 (READ (image, ap + lxi) + rxs - lxs));
+ }
+ else
+ {
+ WRITE (image, ap + lxi,
+ clip255 (READ (image, ap + lxi) + N_X_FRAC (8) - lxs));
+
+ /* Move forward so that lxi/rxi is the pixel span */
+ lxi++;
+
+ /* Don't bother trying to optimize the fill unless
+ * the span is longer than 4 pixels. */
+ if (rxi - lxi > 4)
+ {
+ if (fill_start < 0)
+ {
+ fill_start = lxi;
+ fill_end = rxi;
+ fill_size++;
+ }
+ else
+ {
+ if (lxi >= fill_end || rxi < fill_start)
+ {
+ /* We're beyond what we saved, just fill it */
+ ADD_SATURATE_8 (ap + fill_start,
+ fill_size * N_X_FRAC (8),
+ fill_end - fill_start);
+ fill_start = lxi;
+ fill_end = rxi;
+ fill_size = 1;
+ }
+ else
+ {
+ /* Update fill_start */
+ if (lxi > fill_start)
+ {
+ ADD_SATURATE_8 (ap + fill_start,
+ fill_size * N_X_FRAC (8),
+ lxi - fill_start);
+ fill_start = lxi;
+ }
+ else if (lxi < fill_start)
+ {
+ ADD_SATURATE_8 (ap + lxi, N_X_FRAC (8),
+ fill_start - lxi);
+ }
+
+ /* Update fill_end */
+ if (rxi < fill_end)
+ {
+ ADD_SATURATE_8 (ap + rxi,
+ fill_size * N_X_FRAC (8),
+ fill_end - rxi);
+ fill_end = rxi;
+ }
+ else if (fill_end < rxi)
+ {
+ ADD_SATURATE_8 (ap + fill_end,
+ N_X_FRAC (8),
+ rxi - fill_end);
+ }
+ fill_size++;
+ }
+ }
+ }
+ else
+ {
+ ADD_SATURATE_8 (ap + lxi, N_X_FRAC (8), rxi - lxi);
+ }
+
+ WRITE (image, ap + rxi, clip255 (READ (image, ap + rxi) + rxs));
+ }
+ }
+
+ if (y == b)
+ {
+ /* We're done, make sure we clean up any remaining fill. */
+ if (fill_start != fill_end)
+ {
+ if (fill_size == N_Y_FRAC (8))
+ {
+ MEMSET_WRAPPED (image, ap + fill_start,
+ 0xff, fill_end - fill_start);
+ }
+ else
+ {
+ ADD_SATURATE_8 (ap + fill_start, fill_size * N_X_FRAC (8),
+ fill_end - fill_start);
+ }
+ }
+ break;
+ }
+
+ if (pixman_fixed_frac (y) != Y_FRAC_LAST (8))
+ {
+ RENDER_EDGE_STEP_SMALL (l);
+ RENDER_EDGE_STEP_SMALL (r);
+ y += STEP_Y_SMALL (8);
+ }
+ else
+ {
+ RENDER_EDGE_STEP_BIG (l);
+ RENDER_EDGE_STEP_BIG (r);
+ y += STEP_Y_BIG (8);
+ if (fill_start != fill_end)
+ {
+ if (fill_size == N_Y_FRAC (8))
+ {
+ MEMSET_WRAPPED (image, ap + fill_start,
+ 0xff, fill_end - fill_start);
+ }
+ else
+ {
+ ADD_SATURATE_8 (ap + fill_start, fill_size * N_X_FRAC (8),
+ fill_end - fill_start);
+ }
+
+ fill_start = fill_end = -1;
+ fill_size = 0;
+ }
+
+ line += stride;
+ }
+ }
+}
+
+#ifndef PIXMAN_FB_ACCESSORS
+static
+#endif
+void
+PIXMAN_RASTERIZE_EDGES (pixman_image_t *image,
+ pixman_edge_t * l,
+ pixman_edge_t * r,
+ pixman_fixed_t t,
+ pixman_fixed_t b)
+{
+ switch (PIXMAN_FORMAT_BPP (image->bits.format))
+ {
+ case 1:
+ rasterize_edges_1 (image, l, r, t, b);
+ break;
+
+ case 4:
+ rasterize_edges_4 (image, l, r, t, b);
+ break;
+
+ case 8:
+ rasterize_edges_8 (image, l, r, t, b);
+ break;
+
+ default:
+ break;
+ }
+}
+
+#ifndef PIXMAN_FB_ACCESSORS
+
+PIXMAN_EXPORT void
+pixman_rasterize_edges (pixman_image_t *image,
+ pixman_edge_t * l,
+ pixman_edge_t * r,
+ pixman_fixed_t t,
+ pixman_fixed_t b)
+{
+ return_if_fail (image->type == BITS);
+
+ if (image->bits.read_func || image->bits.write_func)
+ pixman_rasterize_edges_accessors (image, l, r, t, b);
+ else
+ pixman_rasterize_edges_no_accessors (image, l, r, t, b);
+}
+
+#endif
diff --git a/pixman/pixman/pixman-region16.c b/pixman/pixman/pixman-region16.c
index 39d122590..d88d3380f 100644
--- a/pixman/pixman/pixman-region16.c
+++ b/pixman/pixman/pixman-region16.c
@@ -1,67 +1,67 @@
-/*
- * Copyright © 2008 Red Hat, Inc.
- *
- * Permission to use, copy, modify, distribute, and sell this software
- * and its documentation for any purpose is hereby granted without
- * fee, provided that the above copyright notice appear in all copies
- * and that both that copyright notice and this permission notice
- * appear in supporting documentation, and that the name of
- * Red Hat, Inc. not be used in advertising or publicity pertaining to
- * distribution of the software without specific, written prior
- * permission. Red Hat, Inc. makes no representations about the
- * suitability of this software for any purpose. It is provided "as
- * is" without express or implied warranty.
- *
- * RED HAT, INC. DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS
- * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
- * FITNESS, IN NO EVENT SHALL RED HAT, INC. BE LIABLE FOR ANY SPECIAL,
- * INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER
- * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION
- * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR
- * IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
- *
- * Author: Soren Sandmann <sandmann@redhat.com>
- */
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#undef PIXMAN_DISABLE_DEPRECATED
-
-#include "pixman-private.h"
-
-#include <stdlib.h>
-
-typedef pixman_box16_t box_type_t;
-typedef pixman_region16_data_t region_data_type_t;
-typedef pixman_region16_t region_type_t;
-typedef int32_t overflow_int_t;
-
-typedef struct {
- int x, y;
-} point_type_t;
-
-#define PREFIX(x) pixman_region##x
-
-#define PIXMAN_REGION_MAX INT16_MAX
-#define PIXMAN_REGION_MIN INT16_MIN
-
-#include "pixman-region.c"
-
-/* This function exists only to make it possible to preserve the X ABI -
- * it should go away at first opportunity.
- *
- * The problem is that the X ABI exports the three structs and has used
- * them through macros. So the X server calls this function with
- * the addresses of those structs which makes the existing code continue to
- * work.
- */
-PIXMAN_EXPORT void
-pixman_region_set_static_pointers (pixman_box16_t *empty_box,
- pixman_region16_data_t *empty_data,
- pixman_region16_data_t *broken_data)
-{
- pixman_region_empty_box = empty_box;
- pixman_region_empty_data = empty_data;
- pixman_broken_data = broken_data;
-}
+/*
+ * Copyright © 2008 Red Hat, Inc.
+ *
+ * Permission to use, copy, modify, distribute, and sell this software
+ * and its documentation for any purpose is hereby granted without
+ * fee, provided that the above copyright notice appear in all copies
+ * and that both that copyright notice and this permission notice
+ * appear in supporting documentation, and that the name of
+ * Red Hat, Inc. not be used in advertising or publicity pertaining to
+ * distribution of the software without specific, written prior
+ * permission. Red Hat, Inc. makes no representations about the
+ * suitability of this software for any purpose. It is provided "as
+ * is" without express or implied warranty.
+ *
+ * RED HAT, INC. DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS
+ * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
+ * FITNESS, IN NO EVENT SHALL RED HAT, INC. BE LIABLE FOR ANY SPECIAL,
+ * INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER
+ * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION
+ * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR
+ * IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+ *
+ * Author: Soren Sandmann <sandmann@redhat.com>
+ */
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#undef PIXMAN_DISABLE_DEPRECATED
+
+#include "pixman-private.h"
+
+#include <stdlib.h>
+
+typedef pixman_box16_t box_type_t;
+typedef pixman_region16_data_t region_data_type_t;
+typedef pixman_region16_t region_type_t;
+typedef int32_t overflow_int_t;
+
+typedef struct {
+ int x, y;
+} point_type_t;
+
+#define PREFIX(x) pixman_region##x
+
+#define PIXMAN_REGION_MAX INT16_MAX
+#define PIXMAN_REGION_MIN INT16_MIN
+
+#include "pixman-region.c"
+
+/* This function exists only to make it possible to preserve the X ABI -
+ * it should go away at first opportunity.
+ *
+ * The problem is that the X ABI exports the three structs and has used
+ * them through macros. So the X server calls this function with
+ * the addresses of those structs which makes the existing code continue to
+ * work.
+ */
+PIXMAN_EXPORT void
+pixman_region_set_static_pointers (pixman_box16_t *empty_box,
+ pixman_region16_data_t *empty_data,
+ pixman_region16_data_t *broken_data)
+{
+ pixman_region_empty_box = empty_box;
+ pixman_region_empty_data = empty_data;
+ pixman_broken_data = broken_data;
+}
diff --git a/pixman/pixman/pixman-region32.c b/pixman/pixman/pixman-region32.c
index ccab36050..abd6b1a93 100644
--- a/pixman/pixman/pixman-region32.c
+++ b/pixman/pixman/pixman-region32.c
@@ -1,47 +1,47 @@
-/*
- * Copyright © 2008 Red Hat, Inc.
- *
- * Permission to use, copy, modify, distribute, and sell this software
- * and its documentation for any purpose is hereby granted without
- * fee, provided that the above copyright notice appear in all copies
- * and that both that copyright notice and this permission notice
- * appear in supporting documentation, and that the name of
- * Red Hat, Inc. not be used in advertising or publicity pertaining to
- * distribution of the software without specific, written prior
- * permission. Red Hat, Inc. makes no representations about the
- * suitability of this software for any purpose. It is provided "as
- * is" without express or implied warranty.
- *
- * RED HAT, INC. DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS
- * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
- * FITNESS, IN NO EVENT SHALL RED HAT, INC. BE LIABLE FOR ANY SPECIAL,
- * INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER
- * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION
- * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR
- * IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
- *
- * Author: Soren Sandmann <sandmann@redhat.com>
- */
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include "pixman-private.h"
-
-#include <stdlib.h>
-
-typedef pixman_box32_t box_type_t;
-typedef pixman_region32_data_t region_data_type_t;
-typedef pixman_region32_t region_type_t;
-typedef int64_t overflow_int_t;
-
-typedef struct {
- int x, y;
-} point_type_t;
-
-#define PREFIX(x) pixman_region32##x
-
-#define PIXMAN_REGION_MAX INT32_MAX
-#define PIXMAN_REGION_MIN INT32_MIN
-
-#include "pixman-region.c"
+/*
+ * Copyright © 2008 Red Hat, Inc.
+ *
+ * Permission to use, copy, modify, distribute, and sell this software
+ * and its documentation for any purpose is hereby granted without
+ * fee, provided that the above copyright notice appear in all copies
+ * and that both that copyright notice and this permission notice
+ * appear in supporting documentation, and that the name of
+ * Red Hat, Inc. not be used in advertising or publicity pertaining to
+ * distribution of the software without specific, written prior
+ * permission. Red Hat, Inc. makes no representations about the
+ * suitability of this software for any purpose. It is provided "as
+ * is" without express or implied warranty.
+ *
+ * RED HAT, INC. DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS
+ * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
+ * FITNESS, IN NO EVENT SHALL RED HAT, INC. BE LIABLE FOR ANY SPECIAL,
+ * INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER
+ * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION
+ * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR
+ * IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+ *
+ * Author: Soren Sandmann <sandmann@redhat.com>
+ */
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include "pixman-private.h"
+
+#include <stdlib.h>
+
+typedef pixman_box32_t box_type_t;
+typedef pixman_region32_data_t region_data_type_t;
+typedef pixman_region32_t region_type_t;
+typedef int64_t overflow_int_t;
+
+typedef struct {
+ int x, y;
+} point_type_t;
+
+#define PREFIX(x) pixman_region32##x
+
+#define PIXMAN_REGION_MAX INT32_MAX
+#define PIXMAN_REGION_MIN INT32_MIN
+
+#include "pixman-region.c"
diff --git a/pixman/pixman/pixman-timer.c b/pixman/pixman/pixman-timer.c
index c45d7b4fa..f5ae18e89 100644
--- a/pixman/pixman/pixman-timer.c
+++ b/pixman/pixman/pixman-timer.c
@@ -1,66 +1,66 @@
-/*
- * Copyright © 2007 Red Hat, Inc.
- *
- * Permission to use, copy, modify, distribute, and sell this software and its
- * documentation for any purpose is hereby granted without fee, provided that
- * the above copyright notice appear in all copies and that both that
- * copyright notice and this permission notice appear in supporting
- * documentation, and that the name of Red Hat not be used in advertising or
- * publicity pertaining to distribution of the software without specific,
- * written prior permission. Red Hat makes no representations about the
- * suitability of this software for any purpose. It is provided "as is"
- * without express or implied warranty.
- *
- * RED HAT DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL RED HAT
- * BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
- * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION
- * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
- * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include <stdlib.h>
-#include <stdio.h>
-#include "pixman-private.h"
-
-#ifdef PIXMAN_TIMERS
-
-static pixman_timer_t *timers;
-
-static void
-dump_timers (void)
-{
- pixman_timer_t *timer;
-
- for (timer = timers; timer != NULL; timer = timer->next)
- {
- printf ("%s: total: %llu n: %llu avg: %f\n",
- timer->name,
- timer->total,
- timer->n_times,
- timer->total / (double)timer->n_times);
- }
-}
-
-void
-pixman_timer_register (pixman_timer_t *timer)
-{
- static int initialized;
-
- int atexit (void (*function)(void));
-
- if (!initialized)
- {
- atexit (dump_timers);
- initialized = 1;
- }
-
- timer->next = timers;
- timers = timer;
-}
-
-#endif
+/*
+ * Copyright © 2007 Red Hat, Inc.
+ *
+ * Permission to use, copy, modify, distribute, and sell this software and its
+ * documentation for any purpose is hereby granted without fee, provided that
+ * the above copyright notice appear in all copies and that both that
+ * copyright notice and this permission notice appear in supporting
+ * documentation, and that the name of Red Hat not be used in advertising or
+ * publicity pertaining to distribution of the software without specific,
+ * written prior permission. Red Hat makes no representations about the
+ * suitability of this software for any purpose. It is provided "as is"
+ * without express or implied warranty.
+ *
+ * RED HAT DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL RED HAT
+ * BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION
+ * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
+ * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include <stdlib.h>
+#include <stdio.h>
+#include "pixman-private.h"
+
+#ifdef PIXMAN_TIMERS
+
+static pixman_timer_t *timers;
+
+static void
+dump_timers (void)
+{
+ pixman_timer_t *timer;
+
+ for (timer = timers; timer != NULL; timer = timer->next)
+ {
+ printf ("%s: total: %llu n: %llu avg: %f\n",
+ timer->name,
+ timer->total,
+ timer->n_times,
+ timer->total / (double)timer->n_times);
+ }
+}
+
+void
+pixman_timer_register (pixman_timer_t *timer)
+{
+ static int initialized;
+
+ int atexit (void (*function)(void));
+
+ if (!initialized)
+ {
+ atexit (dump_timers);
+ initialized = 1;
+ }
+
+ timer->next = timers;
+ timers = timer;
+}
+
+#endif
diff --git a/pixman/pixman/pixman-version.h.in b/pixman/pixman/pixman-version.h.in
index 022bf1a3c..256b2e6f1 100644
--- a/pixman/pixman/pixman-version.h.in
+++ b/pixman/pixman/pixman-version.h.in
@@ -1,50 +1,50 @@
-/*
- * Copyright © 2008 Red Hat, Inc.
- *
- * Permission is hereby granted, free of charge, to any person
- * obtaining a copy of this software and associated documentation
- * files (the "Software"), to deal in the Software without
- * restriction, including without limitation the rights to use, copy,
- * modify, merge, publish, distribute, sublicense, and/or sell copies
- * of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be
- * included in all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
- * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
- * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
- * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- *
- * Author: Carl D. Worth <cworth@cworth.org>
- */
-
-#ifndef PIXMAN_VERSION_H__
-#define PIXMAN_VERSION_H__
-
-#ifndef PIXMAN_H__
-# error pixman-version.h should only be included by pixman.h
-#endif
-
-#define PIXMAN_VERSION_MAJOR @PIXMAN_VERSION_MAJOR@
-#define PIXMAN_VERSION_MINOR @PIXMAN_VERSION_MINOR@
-#define PIXMAN_VERSION_MICRO @PIXMAN_VERSION_MICRO@
-
-#define PIXMAN_VERSION_STRING "@PIXMAN_VERSION_MAJOR@.@PIXMAN_VERSION_MINOR@.@PIXMAN_VERSION_MICRO@"
-
-#define PIXMAN_VERSION_ENCODE(major, minor, micro) ( \
- ((major) * 10000) \
- + ((minor) * 100) \
- + ((micro) * 1))
-
-#define PIXMAN_VERSION PIXMAN_VERSION_ENCODE( \
- PIXMAN_VERSION_MAJOR, \
- PIXMAN_VERSION_MINOR, \
- PIXMAN_VERSION_MICRO)
-
-#endif /* PIXMAN_VERSION_H__ */
+/*
+ * Copyright © 2008 Red Hat, Inc.
+ *
+ * Permission is hereby granted, free of charge, to any person
+ * obtaining a copy of this software and associated documentation
+ * files (the "Software"), to deal in the Software without
+ * restriction, including without limitation the rights to use, copy,
+ * modify, merge, publish, distribute, sublicense, and/or sell copies
+ * of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be
+ * included in all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
+ * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
+ * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+ * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ *
+ * Author: Carl D. Worth <cworth@cworth.org>
+ */
+
+#ifndef PIXMAN_VERSION_H__
+#define PIXMAN_VERSION_H__
+
+#ifndef PIXMAN_H__
+# error pixman-version.h should only be included by pixman.h
+#endif
+
+#define PIXMAN_VERSION_MAJOR @PIXMAN_VERSION_MAJOR@
+#define PIXMAN_VERSION_MINOR @PIXMAN_VERSION_MINOR@
+#define PIXMAN_VERSION_MICRO @PIXMAN_VERSION_MICRO@
+
+#define PIXMAN_VERSION_STRING "@PIXMAN_VERSION_MAJOR@.@PIXMAN_VERSION_MINOR@.@PIXMAN_VERSION_MICRO@"
+
+#define PIXMAN_VERSION_ENCODE(major, minor, micro) ( \
+ ((major) * 10000) \
+ + ((minor) * 100) \
+ + ((micro) * 1))
+
+#define PIXMAN_VERSION PIXMAN_VERSION_ENCODE( \
+ PIXMAN_VERSION_MAJOR, \
+ PIXMAN_VERSION_MINOR, \
+ PIXMAN_VERSION_MICRO)
+
+#endif /* PIXMAN_VERSION_H__ */
diff --git a/pixman/pixman/refactor b/pixman/pixman/refactor
index b93b75c08..52fceab17 100644
--- a/pixman/pixman/refactor
+++ b/pixman/pixman/refactor
@@ -1,478 +1,478 @@
-Roadmap
-
-- Move all the fetchers etc. into pixman-image to make pixman-compose.c
- less intimidating.
-
- DONE
-
-- Make combiners for unified alpha take a mask argument. That way
- we won't need two separate paths for unified vs component in the
- general compositing code.
-
- DONE, except that the Altivec code needs to be updated. Luca is
- looking into that.
-
-- Delete separate 'unified alpha' path
-
- DONE
-
-- Split images into their own files
-
- DONE
-
-- Split the gradient walker code out into its own file
-
- DONE
-
-- Add scanline getters per image
-
- DONE
-
-- Generic 64 bit fetcher
-
- DONE
-
-- Split fast path tables into their respective architecture dependent
- files.
-
-See "Render Algorithm" below for rationale
-
-Images will eventually have these virtual functions:
-
- get_scanline()
- get_scanline_wide()
- get_pixel()
- get_pixel_wide()
- get_untransformed_pixel()
- get_untransformed_pixel_wide()
- get_unfiltered_pixel()
- get_unfiltered_pixel_wide()
-
- store_scanline()
- store_scanline_wide()
-
-1.
-
-Initially we will just have get_scanline() and get_scanline_wide();
-these will be based on the ones in pixman-compose. Hopefully this will
-reduce the complexity in pixman_composite_rect_general().
-
-Note that there is access considerations - the compose function is
-being compiled twice.
-
-
-2.
-
-Split image types into their own source files. Export noop virtual
-reinit() call. Call this whenever a property of the image changes.
-
-
-3.
-
-Split the get_scanline() call into smaller functions that are
-initialized by the reinit() call.
-
-The Render Algorithm:
- (first repeat, then filter, then transform, then clip)
-
-Starting from a destination pixel (x, y), do
-
- 1 x = x - xDst + xSrc
- y = y - yDst + ySrc
-
- 2 reject pixel that is outside the clip
-
- This treats clipping as something that happens after
- transformation, which I think is correct for client clips. For
- hierarchy clips it is wrong, but who really cares? Without
- GraphicsExposes hierarchy clips are basically irrelevant. Yes,
- you could imagine cases where the pixels of a subwindow of a
- redirected, transformed window should be treated as
- transparent. I don't really care
-
- Basically, I think the render spec should say that pixels that
- are unavailable due to the hierarcy have undefined content,
- and that GraphicsExposes are not generated. Ie., basically
- that using non-redirected windows as sources is fail. This is
- at least consistent with the current implementation and we can
- update the spec later if someone makes it work.
-
- The implication for render is that it should stop passing the
- hierarchy clip to pixman. In pixman, if a souce image has a
- clip it should be used in computing the composite region and
- nowhere else, regardless of what "has_client_clip" says. The
- default should be for there to not be any clip.
-
- I would really like to get rid of the client clip as well for
- source images, but unfortunately there is at least one
- application in the wild that uses them.
-
- 3 Transform pixel: (x, y) = T(x, y)
-
- 4 Call p = GetUntransformedPixel (x, y)
-
- 5 If the image has an alpha map, then
-
- Call GetUntransformedPixel (x, y) on the alpha map
-
- add resulting alpha channel to p
-
- return p
-
- Where GetUnTransformedPixel is:
-
- 6 switch (filter)
- {
- case NEAREST:
- return GetUnfilteredPixel (x, y);
- break;
-
- case BILINEAR:
- return GetUnfilteredPixel (...) // 4 times
- break;
-
- case CONVOLUTION:
- return GetUnfilteredPixel (...) // as many times as necessary.
- break;
- }
-
- Where GetUnfilteredPixel (x, y) is
-
- 7 switch (repeat)
- {
- case REPEAT_NORMAL:
- case REPEAT_PAD:
- case REPEAT_REFLECT:
- // adjust x, y as appropriate
- break;
-
- case REPEAT_NONE:
- if (x, y) is outside image bounds
- return 0;
- break;
- }
-
- return GetRawPixel(x, y)
-
- Where GetRawPixel (x, y) is
-
- 8 Compute the pixel in question, depending on image type.
-
-For gradients, repeat has a totally different meaning, so
-UnfilteredPixel() and RawPixel() must be the same function so that
-gradients can do their own repeat algorithm.
-
-So, the GetRawPixel
-
- for bits must deal with repeats
- for gradients must deal with repeats (differently)
- for solids, should ignore repeats.
-
- for polygons, when we add them, either ignore repeats or do
- something similar to bits (in which case, we may want an extra
- layer of indirection to modify the coordinates).
-
-It is then possible to build things like "get scanline" or "get tile" on
-top of this. In the simplest case, just repeatedly calling GetPixel()
-would work, but specialized get_scanline()s or get_tile()s could be
-plugged in for common cases.
-
-By not plugging anything in for images with access functions, we only
-have to compile the pixel functions twice, not the scanline functions.
-
-And we can get rid of fetchers for the bizarre formats that no one
-uses. Such as b2g3r3 etc. r1g2b1? Seriously? It is also worth
-considering a generic format based pixel fetcher for these edge cases.
-
-Since the actual routines depend on the image attributes, the images
-must be notified when those change and update their function pointers
-appropriately. So there should probably be a virtual function called
-(* reinit) or something like that.
-
-There will also be wide fetchers for both pixels and lines. The line
-fetcher will just call the wide pixel fetcher. The wide pixel fetcher
-will just call expand, except for 10 bit formats.
-
-Rendering pipeline:
-
-Drawable:
- 0. if (picture has alpha map)
- 0.1. Position alpha map according to the alpha_x/alpha_y
- 0.2. Where the two drawables intersect, the alpha channel
- Replace the alpha channel of source with the one
- from the alpha map. Replacement only takes place
- in the intersection of the two drawables' geometries.
- 1. Repeat the drawable according to the repeat attribute
- 2. Reconstruct a continuous image according to the filter
- 3. Transform according to the transform attribute
- 4. Position image such that src_x, src_y is over dst_x, dst_y
- 5. Sample once per destination pixel
- 6. Clip. If a pixel is not within the source clip, then no
- compositing takes place at that pixel. (Ie., it's *not*
- treated as 0).
-
- Sampling a drawable:
-
- - If the channel does not have an alpha channel, the pixels in it
- are treated as opaque.
-
- Note on reconstruction:
-
- - The top left pixel has coordinates (0.5, 0.5) and pixels are
- spaced 1 apart.
-
-Gradient:
- 1. Unless gradient type is conical, repeat the underlying (0, 1)
- gradient according to the repeat attribute
- 2. Integrate the gradient across the plane according to type.
- 3. Transform according to transform attribute
- 4. Position gradient
- 5. Sample once per destination pixel.
- 6. Clip
-
-Solid Fill:
- 1. Repeat has no effect
- 2. Image is already continuous and defined for the entire plane
- 3. Transform has no effect
- 4. Positioning has no effect
- 5. Sample once per destination pixel.
- 6. Clip
-
-Polygon:
- 1. Repeat has no effect
- 2. Image is already continuous and defined on the whole plane
- 3. Transform according to transform attribute
- 4. Position image
- 5. Supersample 15x17 per destination pixel.
- 6. Clip
-
-Possibly interesting additions:
- - More general transformations, such as warping, or general
- shading.
-
- - Shader image where a function is called to generate the
- pixel (ie., uploading assembly code).
-
- - Resampling kernels
-
- In principle the polygon image uses a 15x17 box filter for
- resampling. If we allow general resampling filters, then we
- get all the various antialiasing types for free.
-
- Bilinear downsampling looks terrible and could be much
- improved by a resampling filter. NEAREST reconstruction
- combined with a box resampling filter is what GdkPixbuf
- does, I believe.
-
- Useful for high frequency gradients as well.
-
- (Note that the difference between a reconstruction and a
- resampling filter is mainly where in the pipeline they
- occur. High quality resampling should use a correctly
- oriented kernel so it should happen after transformation.
-
- An implementation can transform the resampling kernel and
- convolve it with the reconstruction if it so desires, but it
- will need to deal with the fact that the resampling kernel
- will not necessarily be pixel aligned.
-
- "Output kernels"
-
- One could imagine doing the resampling after compositing,
- ie., for each destination pixel sample each source image 16
- times, then composite those subpixels individually, then
- finally apply a kernel.
-
- However, this is effectively the same as full screen
- antialiasing, which is a simpler way to think about it. So
- resampling kernels may make sense for individual images, but
- not as a post-compositing step.
-
- Fullscreen AA is inefficient without chained compositing
- though. Consider an (image scaled up to oversample size IN
- some polygon) scaled down to screen size. With the current
- implementation, there will be a huge temporary. With chained
- compositing, the whole thing ends up being equivalent to the
- output kernel from above.
-
- - Color space conversion
-
- The complete model here is that each surface has a color
- space associated with it and that the compositing operation
- also has one associated with it. Note also that gradients
- should have associcated colorspaces.
-
- - Dithering
-
- If people dither something that is already dithered, it will
- look terrible, but don't do that, then. (Dithering happens
- after resampling if at all - what is the relationship
- with color spaces? Presumably dithering should happen in linear
- intensity space).
-
- - Floating point surfaces, 16, 32 and possibly 64 bit per
- channel.
-
- Maybe crack:
-
- - Glyph polygons
-
- If glyphs could be given as polygons, they could be
- positioned and rasterized more accurately. The glyph
- structure would need subpixel positioning though.
-
- - Luminance vs. coverage for the alpha channel
-
- Whether the alpha channel should be interpreted as luminance
- modulation or as coverage (intensity modulation). This is a
- bit of a departure from the rendering model though. It could
- also be considered whether it should be possible to have
- both channels in the same drawable.
-
- - Alternative for component alpha
-
- - Set component-alpha on the output image.
-
- - This means each of the components are sampled
- independently and composited in the corresponding
- channel only.
-
- - Have 3 x oversampled mask
-
- - Scale it down by 3 horizontally, with [ 1/3, 1/3, 1/3 ]
- resampling filter.
-
- Is this equivalent to just using a component alpha mask?
-
- Incompatible changes:
-
- - Gradients could be specified with premultiplied colors. (You
- can use a mask to get things like gradients from solid red to
- transparent red.
-
-Refactoring pixman
-
-The pixman code is not particularly nice to put it mildly. Among the
-issues are
-
-- inconsistent naming style (fb vs Fb, camelCase vs
- underscore_naming). Sometimes there is even inconsistency *within*
- one name.
-
- fetchProc32 ACCESS(pixman_fetchProcForPicture32)
-
- may be one of the uglies names ever created.
-
- coding style:
- use the one from cairo except that pixman uses this brace style:
-
- while (blah)
- {
- }
-
- Format do while like this:
-
- do
- {
-
- }
- while (...);
-
-- PIXMAN_COMPOSITE_RECT_GENERAL() is horribly complex
-
-- switch case logic in pixman-access.c
-
- Instead it would be better to just store function pointers in the
- image objects themselves,
-
- get_pixel()
- get_scanline()
-
-- Much of the scanline fetching code is for formats that no one
- ever uses. a2r2g2b2 anyone?
-
- It would probably be worthwhile having a generic fetcher for any
- pixman format whatsoever.
-
-- Code related to particular image types should be split into individual
- files.
-
- pixman-bits-image.c
- pixman-linear-gradient-image.c
- pixman-radial-gradient-image.c
- pixman-solid-image.c
-
-- Fast path code should be split into files based on architecture:
-
- pixman-mmx-fastpath.c
- pixman-sse2-fastpath.c
- pixman-c-fastpath.c
-
- etc.
-
- Each of these files should then export a fastpath table, which would
- be declared in pixman-private.h. This should allow us to get rid
- of the pixman-mmx.h files.
-
- The fast path table should describe each fast path. Ie there should
- be bitfields indicating what things the fast path can handle, rather than
- like now where it is only allowed to take one format per src/mask/dest. Ie.,
-
- {
- FAST_a8r8g8b8 | FAST_x8r8g8b8,
- FAST_null,
- FAST_x8r8g8b8,
- FAST_repeat_normal | FAST_repeat_none,
- the_fast_path
- }
-
-There should then be *one* file that implements pixman_image_composite().
-This should do this:
-
- optimize_operator();
-
- convert 1x1 repeat to solid (actually this should be done at
- image creation time).
-
- is there a useful fastpath?
-
-There should be a file called pixman-cpu.c that contains all the
-architecture specific stuff to detect what CPU features we have.
-
-Issues that must be kept in mind:
-
- - we need accessor code to be preserved
-
- - maybe there should be a "store_scanline" too?
-
- Is this sufficient?
-
- We should preserve the optimization where the
- compositing happens directly in the destination
- whenever possible.
-
- - It should be possible to create GPU samplers from the
- images.
-
-The "horizontal" classification should be a bit in the image, the
-"vertical" classification should just happen inside the gradient
-file. Note though that
-
- (a) these will change if the tranformation/repeat changes.
-
- (b) at the moment the optimization for linear gradients
- takes the source rectangle into account. Presumably
- this is to also optimize the case where the gradient
- is close enough to horizontal?
-
-Who is responsible for repeats? In principle it should be the scanline
-fetch. Right now NORMAL repeats are handled by walk_composite_region()
-while other repeats are handled by the scanline code.
-
-
-(Random note on filtering: do you filter before or after
-transformation? Hardware is going to filter after transformation;
-this is also what pixman does currently). It's not completely clear
-what filtering *after* transformation means. One thing that might look
-good would be to do *supersampling*, ie., compute multiple subpixels
-per destination pixel, then average them together.
+Roadmap
+
+- Move all the fetchers etc. into pixman-image to make pixman-compose.c
+ less intimidating.
+
+ DONE
+
+- Make combiners for unified alpha take a mask argument. That way
+ we won't need two separate paths for unified vs component in the
+ general compositing code.
+
+ DONE, except that the Altivec code needs to be updated. Luca is
+ looking into that.
+
+- Delete separate 'unified alpha' path
+
+ DONE
+
+- Split images into their own files
+
+ DONE
+
+- Split the gradient walker code out into its own file
+
+ DONE
+
+- Add scanline getters per image
+
+ DONE
+
+- Generic 64 bit fetcher
+
+ DONE
+
+- Split fast path tables into their respective architecture dependent
+ files.
+
+See "Render Algorithm" below for rationale
+
+Images will eventually have these virtual functions:
+
+ get_scanline()
+ get_scanline_wide()
+ get_pixel()
+ get_pixel_wide()
+ get_untransformed_pixel()
+ get_untransformed_pixel_wide()
+ get_unfiltered_pixel()
+ get_unfiltered_pixel_wide()
+
+ store_scanline()
+ store_scanline_wide()
+
+1.
+
+Initially we will just have get_scanline() and get_scanline_wide();
+these will be based on the ones in pixman-compose. Hopefully this will
+reduce the complexity in pixman_composite_rect_general().
+
+Note that there is access considerations - the compose function is
+being compiled twice.
+
+
+2.
+
+Split image types into their own source files. Export noop virtual
+reinit() call. Call this whenever a property of the image changes.
+
+
+3.
+
+Split the get_scanline() call into smaller functions that are
+initialized by the reinit() call.
+
+The Render Algorithm:
+ (first repeat, then filter, then transform, then clip)
+
+Starting from a destination pixel (x, y), do
+
+ 1 x = x - xDst + xSrc
+ y = y - yDst + ySrc
+
+ 2 reject pixel that is outside the clip
+
+ This treats clipping as something that happens after
+ transformation, which I think is correct for client clips. For
+ hierarchy clips it is wrong, but who really cares? Without
+ GraphicsExposes hierarchy clips are basically irrelevant. Yes,
+ you could imagine cases where the pixels of a subwindow of a
+ redirected, transformed window should be treated as
+ transparent. I don't really care
+
+ Basically, I think the render spec should say that pixels that
+ are unavailable due to the hierarcy have undefined content,
+ and that GraphicsExposes are not generated. Ie., basically
+ that using non-redirected windows as sources is fail. This is
+ at least consistent with the current implementation and we can
+ update the spec later if someone makes it work.
+
+ The implication for render is that it should stop passing the
+ hierarchy clip to pixman. In pixman, if a souce image has a
+ clip it should be used in computing the composite region and
+ nowhere else, regardless of what "has_client_clip" says. The
+ default should be for there to not be any clip.
+
+ I would really like to get rid of the client clip as well for
+ source images, but unfortunately there is at least one
+ application in the wild that uses them.
+
+ 3 Transform pixel: (x, y) = T(x, y)
+
+ 4 Call p = GetUntransformedPixel (x, y)
+
+ 5 If the image has an alpha map, then
+
+ Call GetUntransformedPixel (x, y) on the alpha map
+
+ add resulting alpha channel to p
+
+ return p
+
+ Where GetUnTransformedPixel is:
+
+ 6 switch (filter)
+ {
+ case NEAREST:
+ return GetUnfilteredPixel (x, y);
+ break;
+
+ case BILINEAR:
+ return GetUnfilteredPixel (...) // 4 times
+ break;
+
+ case CONVOLUTION:
+ return GetUnfilteredPixel (...) // as many times as necessary.
+ break;
+ }
+
+ Where GetUnfilteredPixel (x, y) is
+
+ 7 switch (repeat)
+ {
+ case REPEAT_NORMAL:
+ case REPEAT_PAD:
+ case REPEAT_REFLECT:
+ // adjust x, y as appropriate
+ break;
+
+ case REPEAT_NONE:
+ if (x, y) is outside image bounds
+ return 0;
+ break;
+ }
+
+ return GetRawPixel(x, y)
+
+ Where GetRawPixel (x, y) is
+
+ 8 Compute the pixel in question, depending on image type.
+
+For gradients, repeat has a totally different meaning, so
+UnfilteredPixel() and RawPixel() must be the same function so that
+gradients can do their own repeat algorithm.
+
+So, the GetRawPixel
+
+ for bits must deal with repeats
+ for gradients must deal with repeats (differently)
+ for solids, should ignore repeats.
+
+ for polygons, when we add them, either ignore repeats or do
+ something similar to bits (in which case, we may want an extra
+ layer of indirection to modify the coordinates).
+
+It is then possible to build things like "get scanline" or "get tile" on
+top of this. In the simplest case, just repeatedly calling GetPixel()
+would work, but specialized get_scanline()s or get_tile()s could be
+plugged in for common cases.
+
+By not plugging anything in for images with access functions, we only
+have to compile the pixel functions twice, not the scanline functions.
+
+And we can get rid of fetchers for the bizarre formats that no one
+uses. Such as b2g3r3 etc. r1g2b1? Seriously? It is also worth
+considering a generic format based pixel fetcher for these edge cases.
+
+Since the actual routines depend on the image attributes, the images
+must be notified when those change and update their function pointers
+appropriately. So there should probably be a virtual function called
+(* reinit) or something like that.
+
+There will also be wide fetchers for both pixels and lines. The line
+fetcher will just call the wide pixel fetcher. The wide pixel fetcher
+will just call expand, except for 10 bit formats.
+
+Rendering pipeline:
+
+Drawable:
+ 0. if (picture has alpha map)
+ 0.1. Position alpha map according to the alpha_x/alpha_y
+ 0.2. Where the two drawables intersect, the alpha channel
+ Replace the alpha channel of source with the one
+ from the alpha map. Replacement only takes place
+ in the intersection of the two drawables' geometries.
+ 1. Repeat the drawable according to the repeat attribute
+ 2. Reconstruct a continuous image according to the filter
+ 3. Transform according to the transform attribute
+ 4. Position image such that src_x, src_y is over dst_x, dst_y
+ 5. Sample once per destination pixel
+ 6. Clip. If a pixel is not within the source clip, then no
+ compositing takes place at that pixel. (Ie., it's *not*
+ treated as 0).
+
+ Sampling a drawable:
+
+ - If the channel does not have an alpha channel, the pixels in it
+ are treated as opaque.
+
+ Note on reconstruction:
+
+ - The top left pixel has coordinates (0.5, 0.5) and pixels are
+ spaced 1 apart.
+
+Gradient:
+ 1. Unless gradient type is conical, repeat the underlying (0, 1)
+ gradient according to the repeat attribute
+ 2. Integrate the gradient across the plane according to type.
+ 3. Transform according to transform attribute
+ 4. Position gradient
+ 5. Sample once per destination pixel.
+ 6. Clip
+
+Solid Fill:
+ 1. Repeat has no effect
+ 2. Image is already continuous and defined for the entire plane
+ 3. Transform has no effect
+ 4. Positioning has no effect
+ 5. Sample once per destination pixel.
+ 6. Clip
+
+Polygon:
+ 1. Repeat has no effect
+ 2. Image is already continuous and defined on the whole plane
+ 3. Transform according to transform attribute
+ 4. Position image
+ 5. Supersample 15x17 per destination pixel.
+ 6. Clip
+
+Possibly interesting additions:
+ - More general transformations, such as warping, or general
+ shading.
+
+ - Shader image where a function is called to generate the
+ pixel (ie., uploading assembly code).
+
+ - Resampling kernels
+
+ In principle the polygon image uses a 15x17 box filter for
+ resampling. If we allow general resampling filters, then we
+ get all the various antialiasing types for free.
+
+ Bilinear downsampling looks terrible and could be much
+ improved by a resampling filter. NEAREST reconstruction
+ combined with a box resampling filter is what GdkPixbuf
+ does, I believe.
+
+ Useful for high frequency gradients as well.
+
+ (Note that the difference between a reconstruction and a
+ resampling filter is mainly where in the pipeline they
+ occur. High quality resampling should use a correctly
+ oriented kernel so it should happen after transformation.
+
+ An implementation can transform the resampling kernel and
+ convolve it with the reconstruction if it so desires, but it
+ will need to deal with the fact that the resampling kernel
+ will not necessarily be pixel aligned.
+
+ "Output kernels"
+
+ One could imagine doing the resampling after compositing,
+ ie., for each destination pixel sample each source image 16
+ times, then composite those subpixels individually, then
+ finally apply a kernel.
+
+ However, this is effectively the same as full screen
+ antialiasing, which is a simpler way to think about it. So
+ resampling kernels may make sense for individual images, but
+ not as a post-compositing step.
+
+ Fullscreen AA is inefficient without chained compositing
+ though. Consider an (image scaled up to oversample size IN
+ some polygon) scaled down to screen size. With the current
+ implementation, there will be a huge temporary. With chained
+ compositing, the whole thing ends up being equivalent to the
+ output kernel from above.
+
+ - Color space conversion
+
+ The complete model here is that each surface has a color
+ space associated with it and that the compositing operation
+ also has one associated with it. Note also that gradients
+ should have associcated colorspaces.
+
+ - Dithering
+
+ If people dither something that is already dithered, it will
+ look terrible, but don't do that, then. (Dithering happens
+ after resampling if at all - what is the relationship
+ with color spaces? Presumably dithering should happen in linear
+ intensity space).
+
+ - Floating point surfaces, 16, 32 and possibly 64 bit per
+ channel.
+
+ Maybe crack:
+
+ - Glyph polygons
+
+ If glyphs could be given as polygons, they could be
+ positioned and rasterized more accurately. The glyph
+ structure would need subpixel positioning though.
+
+ - Luminance vs. coverage for the alpha channel
+
+ Whether the alpha channel should be interpreted as luminance
+ modulation or as coverage (intensity modulation). This is a
+ bit of a departure from the rendering model though. It could
+ also be considered whether it should be possible to have
+ both channels in the same drawable.
+
+ - Alternative for component alpha
+
+ - Set component-alpha on the output image.
+
+ - This means each of the components are sampled
+ independently and composited in the corresponding
+ channel only.
+
+ - Have 3 x oversampled mask
+
+ - Scale it down by 3 horizontally, with [ 1/3, 1/3, 1/3 ]
+ resampling filter.
+
+ Is this equivalent to just using a component alpha mask?
+
+ Incompatible changes:
+
+ - Gradients could be specified with premultiplied colors. (You
+ can use a mask to get things like gradients from solid red to
+ transparent red.
+
+Refactoring pixman
+
+The pixman code is not particularly nice to put it mildly. Among the
+issues are
+
+- inconsistent naming style (fb vs Fb, camelCase vs
+ underscore_naming). Sometimes there is even inconsistency *within*
+ one name.
+
+ fetchProc32 ACCESS(pixman_fetchProcForPicture32)
+
+ may be one of the uglies names ever created.
+
+ coding style:
+ use the one from cairo except that pixman uses this brace style:
+
+ while (blah)
+ {
+ }
+
+ Format do while like this:
+
+ do
+ {
+
+ }
+ while (...);
+
+- PIXMAN_COMPOSITE_RECT_GENERAL() is horribly complex
+
+- switch case logic in pixman-access.c
+
+ Instead it would be better to just store function pointers in the
+ image objects themselves,
+
+ get_pixel()
+ get_scanline()
+
+- Much of the scanline fetching code is for formats that no one
+ ever uses. a2r2g2b2 anyone?
+
+ It would probably be worthwhile having a generic fetcher for any
+ pixman format whatsoever.
+
+- Code related to particular image types should be split into individual
+ files.
+
+ pixman-bits-image.c
+ pixman-linear-gradient-image.c
+ pixman-radial-gradient-image.c
+ pixman-solid-image.c
+
+- Fast path code should be split into files based on architecture:
+
+ pixman-mmx-fastpath.c
+ pixman-sse2-fastpath.c
+ pixman-c-fastpath.c
+
+ etc.
+
+ Each of these files should then export a fastpath table, which would
+ be declared in pixman-private.h. This should allow us to get rid
+ of the pixman-mmx.h files.
+
+ The fast path table should describe each fast path. Ie there should
+ be bitfields indicating what things the fast path can handle, rather than
+ like now where it is only allowed to take one format per src/mask/dest. Ie.,
+
+ {
+ FAST_a8r8g8b8 | FAST_x8r8g8b8,
+ FAST_null,
+ FAST_x8r8g8b8,
+ FAST_repeat_normal | FAST_repeat_none,
+ the_fast_path
+ }
+
+There should then be *one* file that implements pixman_image_composite().
+This should do this:
+
+ optimize_operator();
+
+ convert 1x1 repeat to solid (actually this should be done at
+ image creation time).
+
+ is there a useful fastpath?
+
+There should be a file called pixman-cpu.c that contains all the
+architecture specific stuff to detect what CPU features we have.
+
+Issues that must be kept in mind:
+
+ - we need accessor code to be preserved
+
+ - maybe there should be a "store_scanline" too?
+
+ Is this sufficient?
+
+ We should preserve the optimization where the
+ compositing happens directly in the destination
+ whenever possible.
+
+ - It should be possible to create GPU samplers from the
+ images.
+
+The "horizontal" classification should be a bit in the image, the
+"vertical" classification should just happen inside the gradient
+file. Note though that
+
+ (a) these will change if the tranformation/repeat changes.
+
+ (b) at the moment the optimization for linear gradients
+ takes the source rectangle into account. Presumably
+ this is to also optimize the case where the gradient
+ is close enough to horizontal?
+
+Who is responsible for repeats? In principle it should be the scanline
+fetch. Right now NORMAL repeats are handled by walk_composite_region()
+while other repeats are handled by the scanline code.
+
+
+(Random note on filtering: do you filter before or after
+transformation? Hardware is going to filter after transformation;
+this is also what pixman does currently). It's not completely clear
+what filtering *after* transformation means. One thing that might look
+good would be to do *supersampling*, ie., compute multiple subpixels
+per destination pixel, then average them together.
diff --git a/pixman/pixman/solaris-hwcap.mapfile b/pixman/pixman/solaris-hwcap.mapfile
index e49d4f1ec..87efce1e3 100644
--- a/pixman/pixman/solaris-hwcap.mapfile
+++ b/pixman/pixman/solaris-hwcap.mapfile
@@ -1,30 +1,30 @@
-###############################################################################
-#
-# Copyright 2009, Oracle and/or its affiliates. All rights reserved.
-#
-# Permission is hereby granted, free of charge, to any person obtaining a
-# copy of this software and associated documentation files (the "Software"),
-# to deal in the Software without restriction, including without limitation
-# the rights to use, copy, modify, merge, publish, distribute, sublicense,
-# and/or sell copies of the Software, and to permit persons to whom the
-# Software is furnished to do so, subject to the following conditions:
-#
-# The above copyright notice and this permission notice (including the next
-# paragraph) shall be included in all copies or substantial portions of the
-# Software.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-# THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-# DEALINGS IN THE SOFTWARE.
-#
-###############################################################################
-#
-# Override the linker's detection of CMOV/MMX/SSE instructions so this
-# library isn't flagged as only usable on CPU's with those ISA's, since it
-# checks at runtime for availability before calling them
-
-hwcap_1 = V0x0 FPU OVERRIDE;
+###############################################################################
+#
+# Copyright 2009, Oracle and/or its affiliates. All rights reserved.
+#
+# Permission is hereby granted, free of charge, to any person obtaining a
+# copy of this software and associated documentation files (the "Software"),
+# to deal in the Software without restriction, including without limitation
+# the rights to use, copy, modify, merge, publish, distribute, sublicense,
+# and/or sell copies of the Software, and to permit persons to whom the
+# Software is furnished to do so, subject to the following conditions:
+#
+# The above copyright notice and this permission notice (including the next
+# paragraph) shall be included in all copies or substantial portions of the
+# Software.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+# THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+# DEALINGS IN THE SOFTWARE.
+#
+###############################################################################
+#
+# Override the linker's detection of CMOV/MMX/SSE instructions so this
+# library isn't flagged as only usable on CPU's with those ISA's, since it
+# checks at runtime for availability before calling them
+
+hwcap_1 = V0x0 FPU OVERRIDE;
diff --git a/pixman/test/alpha-loop.c b/pixman/test/alpha-loop.c
index 38fc21f5d..e4d90a988 100644
--- a/pixman/test/alpha-loop.c
+++ b/pixman/test/alpha-loop.c
@@ -1,29 +1,29 @@
-#include <stdio.h>
-#include <stdlib.h>
-#include "utils.h"
-
-#define WIDTH 400
-#define HEIGHT 200
-
-int
-main (int argc, char **argv)
-{
- uint8_t *alpha = make_random_bytes (WIDTH * HEIGHT);
- uint32_t *src = (uint32_t *)make_random_bytes (WIDTH * HEIGHT * 4);
- uint32_t *dest = (uint32_t *)make_random_bytes (WIDTH * HEIGHT * 4);
-
- pixman_image_t *a = pixman_image_create_bits (PIXMAN_a8, WIDTH, HEIGHT, (uint32_t *)alpha, WIDTH);
- pixman_image_t *d = pixman_image_create_bits (PIXMAN_a8r8g8b8, WIDTH, HEIGHT, dest, WIDTH * 4);
- pixman_image_t *s = pixman_image_create_bits (PIXMAN_a2r10g10b10, WIDTH, HEIGHT, src, WIDTH * 4);
-
- fail_after (5, "Infinite loop detected: 5 seconds without progress\n");
-
- pixman_image_set_alpha_map (s, a, 0, 0);
- pixman_image_set_alpha_map (a, s, 0, 0);
-
- pixman_image_composite (PIXMAN_OP_SRC, s, NULL, d, 0, 0, 0, 0, 0, 0, WIDTH, HEIGHT);
-
- pixman_image_unref (s);
-
- return 0;
-}
+#include <stdio.h>
+#include <stdlib.h>
+#include "utils.h"
+
+#define WIDTH 400
+#define HEIGHT 200
+
+int
+main (int argc, char **argv)
+{
+ uint8_t *alpha = make_random_bytes (WIDTH * HEIGHT);
+ uint32_t *src = (uint32_t *)make_random_bytes (WIDTH * HEIGHT * 4);
+ uint32_t *dest = (uint32_t *)make_random_bytes (WIDTH * HEIGHT * 4);
+
+ pixman_image_t *a = pixman_image_create_bits (PIXMAN_a8, WIDTH, HEIGHT, (uint32_t *)alpha, WIDTH);
+ pixman_image_t *d = pixman_image_create_bits (PIXMAN_a8r8g8b8, WIDTH, HEIGHT, dest, WIDTH * 4);
+ pixman_image_t *s = pixman_image_create_bits (PIXMAN_a2r10g10b10, WIDTH, HEIGHT, src, WIDTH * 4);
+
+ fail_after (5, "Infinite loop detected: 5 seconds without progress\n");
+
+ pixman_image_set_alpha_map (s, a, 0, 0);
+ pixman_image_set_alpha_map (a, s, 0, 0);
+
+ pixman_image_composite (PIXMAN_OP_SRC, s, NULL, d, 0, 0, 0, 0, 0, 0, WIDTH, HEIGHT);
+
+ pixman_image_unref (s);
+
+ return 0;
+}
diff --git a/pixman/test/region-test.c b/pixman/test/region-test.c
index a1fc4a837..9d5a41eb9 100644
--- a/pixman/test/region-test.c
+++ b/pixman/test/region-test.c
@@ -1,123 +1,123 @@
-#include <assert.h>
-#include <stdlib.h>
-#include <stdio.h>
-#include "utils.h"
-
-int
-main ()
-{
- pixman_region32_t r1;
- pixman_region32_t r2;
- pixman_region32_t r3;
- pixman_box32_t boxes[] = {
- { 10, 10, 20, 20 },
- { 30, 30, 30, 40 },
- { 50, 45, 60, 44 },
- };
- pixman_box32_t boxes2[] = {
- { 2, 6, 7, 6 },
- { 4, 1, 6, 7 },
- };
- pixman_box32_t boxes3[] = {
- { 2, 6, 7, 6 },
- { 4, 1, 6, 1 },
- };
- int i, j;
- pixman_box32_t *b;
- pixman_image_t *image, *fill;
- pixman_color_t white = {
- 0xffff,
- 0xffff,
- 0xffff,
- 0xffff
- };
-
- /* This used to go into an infinite loop before pixman-region.c
- * was fixed to not use explict "short" variables
- */
- pixman_region32_init_rect (&r1, 0, 0, 20, 64000);
- pixman_region32_init_rect (&r2, 0, 0, 20, 64000);
- pixman_region32_init_rect (&r3, 0, 0, 20, 64000);
-
- pixman_region32_subtract (&r1, &r2, &r3);
-
-
- /* This would produce a region containing an empty
- * rectangle in it. Such regions are considered malformed,
- * but using an empty rectangle for initialization should
- * work.
- */
- pixman_region32_init_rects (&r1, boxes, 3);
-
- b = pixman_region32_rectangles (&r1, &i);
-
- assert (i == 1);
-
- while (i--)
- {
- assert (b[i].x1 < b[i].x2);
- assert (b[i].y1 < b[i].y2);
- }
-
- /* This would produce a rectangle containing the bounding box
- * of the two rectangles. The correct result is to eliminate
- * the broken rectangle.
- */
- pixman_region32_init_rects (&r1, boxes2, 2);
-
- b = pixman_region32_rectangles (&r1, &i);
-
- assert (i == 1);
-
- assert (b[0].x1 == 4);
- assert (b[0].y1 == 1);
- assert (b[0].x2 == 6);
- assert (b[0].y2 == 7);
-
- /* This should produce an empty region */
- pixman_region32_init_rects (&r1, boxes3, 2);
-
- b = pixman_region32_rectangles (&r1, &i);
-
- assert (i == 0);
-
- fill = pixman_image_create_solid_fill (&white);
- for (i = 0; i < 100; i++)
- {
- int image_size = 128;
-
- pixman_region32_init (&r1);
-
- /* Add some random rectangles */
- for (j = 0; j < 64; j++)
- pixman_region32_union_rect (&r1, &r1,
- lcg_rand_n (image_size),
- lcg_rand_n (image_size),
- lcg_rand_n (25),
- lcg_rand_n (25));
-
- /* Clip to image size */
- pixman_region32_init_rect (&r2, 0, 0, image_size, image_size);
- pixman_region32_intersect (&r1, &r1, &r2);
- pixman_region32_fini (&r2);
-
- /* render region to a1 mask */
- image = pixman_image_create_bits (PIXMAN_a1, image_size, image_size, NULL, 0);
- pixman_image_set_clip_region32 (image, &r1);
- pixman_image_composite32 (PIXMAN_OP_SRC,
- fill, NULL, image,
- 0, 0, 0, 0, 0, 0,
- image_size, image_size);
- pixman_region32_init_from_image (&r2, image);
-
- pixman_image_unref (image);
-
- assert (pixman_region32_equal (&r1, &r2));
- pixman_region32_fini (&r1);
- pixman_region32_fini (&r2);
-
- }
- pixman_image_unref (fill);
-
- return 0;
-}
+#include <assert.h>
+#include <stdlib.h>
+#include <stdio.h>
+#include "utils.h"
+
+int
+main ()
+{
+ pixman_region32_t r1;
+ pixman_region32_t r2;
+ pixman_region32_t r3;
+ pixman_box32_t boxes[] = {
+ { 10, 10, 20, 20 },
+ { 30, 30, 30, 40 },
+ { 50, 45, 60, 44 },
+ };
+ pixman_box32_t boxes2[] = {
+ { 2, 6, 7, 6 },
+ { 4, 1, 6, 7 },
+ };
+ pixman_box32_t boxes3[] = {
+ { 2, 6, 7, 6 },
+ { 4, 1, 6, 1 },
+ };
+ int i, j;
+ pixman_box32_t *b;
+ pixman_image_t *image, *fill;
+ pixman_color_t white = {
+ 0xffff,
+ 0xffff,
+ 0xffff,
+ 0xffff
+ };
+
+ /* This used to go into an infinite loop before pixman-region.c
+ * was fixed to not use explict "short" variables
+ */
+ pixman_region32_init_rect (&r1, 0, 0, 20, 64000);
+ pixman_region32_init_rect (&r2, 0, 0, 20, 64000);
+ pixman_region32_init_rect (&r3, 0, 0, 20, 64000);
+
+ pixman_region32_subtract (&r1, &r2, &r3);
+
+
+ /* This would produce a region containing an empty
+ * rectangle in it. Such regions are considered malformed,
+ * but using an empty rectangle for initialization should
+ * work.
+ */
+ pixman_region32_init_rects (&r1, boxes, 3);
+
+ b = pixman_region32_rectangles (&r1, &i);
+
+ assert (i == 1);
+
+ while (i--)
+ {
+ assert (b[i].x1 < b[i].x2);
+ assert (b[i].y1 < b[i].y2);
+ }
+
+ /* This would produce a rectangle containing the bounding box
+ * of the two rectangles. The correct result is to eliminate
+ * the broken rectangle.
+ */
+ pixman_region32_init_rects (&r1, boxes2, 2);
+
+ b = pixman_region32_rectangles (&r1, &i);
+
+ assert (i == 1);
+
+ assert (b[0].x1 == 4);
+ assert (b[0].y1 == 1);
+ assert (b[0].x2 == 6);
+ assert (b[0].y2 == 7);
+
+ /* This should produce an empty region */
+ pixman_region32_init_rects (&r1, boxes3, 2);
+
+ b = pixman_region32_rectangles (&r1, &i);
+
+ assert (i == 0);
+
+ fill = pixman_image_create_solid_fill (&white);
+ for (i = 0; i < 100; i++)
+ {
+ int image_size = 128;
+
+ pixman_region32_init (&r1);
+
+ /* Add some random rectangles */
+ for (j = 0; j < 64; j++)
+ pixman_region32_union_rect (&r1, &r1,
+ lcg_rand_n (image_size),
+ lcg_rand_n (image_size),
+ lcg_rand_n (25),
+ lcg_rand_n (25));
+
+ /* Clip to image size */
+ pixman_region32_init_rect (&r2, 0, 0, image_size, image_size);
+ pixman_region32_intersect (&r1, &r1, &r2);
+ pixman_region32_fini (&r2);
+
+ /* render region to a1 mask */
+ image = pixman_image_create_bits (PIXMAN_a1, image_size, image_size, NULL, 0);
+ pixman_image_set_clip_region32 (image, &r1);
+ pixman_image_composite32 (PIXMAN_OP_SRC,
+ fill, NULL, image,
+ 0, 0, 0, 0, 0, 0,
+ image_size, image_size);
+ pixman_region32_init_from_image (&r2, image);
+
+ pixman_image_unref (image);
+
+ assert (pixman_region32_equal (&r1, &r2));
+ pixman_region32_fini (&r1);
+ pixman_region32_fini (&r2);
+
+ }
+ pixman_image_unref (fill);
+
+ return 0;
+}
diff --git a/synchronise.py b/synchronise.py
index 66d6ad581..8951f1e85 100644
--- a/synchronise.py
+++ b/synchronise.py
@@ -1,235 +1,238 @@
-import os,sys,shutil,re,stat
-
-from optparse import OptionParser
-
-usage = "usage: %prog [options] <SrcDir> <DestDir>"
-parser = OptionParser(usage=usage)
-parser.add_option("-n", "--donothing", action='store_true', dest="DoNothing", default=False, help="Do not copy the files.")
-parser.add_option("", "--extension", action='store', dest="Extension", default=None, help="Copy only files with this extension.")
-parser.add_option("-y", "--ask", action='store_true', dest="Ask", default=False, help="Ask confirmation to copy.")
-parser.add_option("-a", "--ask-file", action='append', dest="FilesToConfirm", default=[], help="Ask confirmation to copy for this speicific file (only useful if -y is not used).")
-parser.add_option("-d", "--delete-file_re", dest="FilesToDeleteRe", default="", help="Regular expression of files to delete.")
-parser.add_option("-s", "--no-skip-svn", dest="NoSkipSvn", action='store_true', default=False, help="Do not Skip .svn directories.")
-parser.add_option("-g", "--no-skip-git", dest="NoSkipGit", action='store_true', default=False, help="Do not Skip .git directories.")
-parser.add_option("-e", "--del-exist-only-dest", dest="DelExistOnlyDest", action='store_true', default=False, help="Delete files that exist only in the destination directory.")
-parser.add_option( "" , "--skip-dir", dest="SkipDirs", action='append', default=[], help="Adds a directory name to skip.")
-parser.add_option( "" , "--skip-file", dest="SkipFiles", action='append', default=[], help="Adds a file name to skip.")
-
-(g_Options, g_Args) = parser.parse_args()
-
-if g_Options.FilesToDeleteRe:
- try:
- g_FilesToDelete=re.compile(g_Options.FilesToDeleteRe,re.I)
- except:
- print 'Wrong regular expression:',g_Options.FilesToDeleteRe
- sys.exit(1)
-else:
- g_FilesToDelete=None
-
-if len(g_Args)!=2:
- parser.error("Wrong number of arguments: "+repr(g_Args))
- sys.exit(1)
-
-g_FilesToConfirm={}
-for File in g_Options.FilesToConfirm:
- g_FilesToConfirm[File]=1
-
-g_DirsToSkip={}
-for Dir in g_Options.SkipDirs:
- g_DirsToSkip[Dir]=1
-
-g_FilesToSkip={}
-for File in g_Options.SkipFiles:
- g_FilesToSkip[File]=1
-
-g_Ask=g_Options.Ask
-g_DoNothing=g_Options.DoNothing
-g_NoSkipSvn=g_Options.NoSkipSvn
-g_NoSkipGit=g_Options.NoSkipGit
-
-g_WriteMask=stat.S_IWUSR|stat.S_IWGRP|stat.S_IWOTH
-
-g_SrcDir=os.path.realpath(g_Args[0])
-g_DestDir=os.path.realpath(g_Args[1])
-
-if g_Options.Extension:
- g_Extre=re.compile('.*\.%s$'%g_Options.Extension,re.I)
-else:
- g_Extre=None
-
-###############################################################################
-g_LenSrcDir=len(g_SrcDir)
-if g_SrcDir[-1]!=os.path.sep:
- g_LenSrcDir+=1
-
-def SkipDir(SrcDir,File):
- Ret = g_DirsToSkip.has_key(File)
- SrcDir=SrcDir[g_LenSrcDir:]
-
- while not Ret and SrcDir:
- SrcDir,Part=os.path.split(SrcDir)
- File=os.path.join(Part,File)
- Ret = g_DirsToSkip.has_key(File)
- return Ret
-
-###############################################################################
-def DeleteFiles(SrcFile,DestFile):
- print 'Deleting %s'%(SrcFile)
- os.remove(SrcFile)
- print 'Deleting %s'%(DestFile)
- try:
- os.remove(DestFile)
- except:
- print DestFile,'does not exist'
-
-###############################################################################
-#characters=['|','/','-','\\']
-#chariter=iter(characters)
-#def PrintBusy():
-# global characters
-# global chariter
-#
-# try:
-# char=chariter.next()
-# except StopIteration:
-# chariter=iter(characters)
-# char=chariter.next()
-#
-# sys.stdout.write(char)
-# sys.stdout.write(chr(8))
-count=0
-def PrintBusy():
- global count
- count+=1
- item=str(count)
- sys.stdout.write(item)
- sys.stdout.write(chr(8)*len(item))
-###############################################################################
-
-if not os.path.isdir(g_DestDir):
- print g_DestDir,"is not a directory"
- sys.exit(1)
-
-def FileDiff(SrcFile,DestFile):
- try:
- Src=open(SrcFile,'rb')
- Dest=open(DestFile,'rb')
- while 1:
- SrcLine=Src.read(4096)
- DestLine=Dest.read(4096)
- if SrcLine!=DestLine:
- return 1
- if not SrcLine:
- return 0
- except Exception,Object:
- #print "Exception occured"
- #print Object
- return 1
-
-g_Dot=0
-def SynchroniseDir(SrcDir,DestDir):
- global g_Dot
- SrcFiles=os.listdir(SrcDir)
- if g_Options.DelExistOnlyDest:
- DstFiles=os.listdir(DestDir)
- for File in DstFiles:
- DestFile=os.path.join(DestDir,File)
- try:
- Index=SrcFiles.index(File)
- except ValueError:
- if os.path.isdir(DestFile):
- if not g_NoSkipSvn and File=='.svn':
- continue # Skip svn administration dirs
- if not g_NoSkipGit and File=='.git':
- continue # Skip svn administration dirs
- if SkipDir(SrcDir,File):
- continue
- print 'Deleting directory',DestFile
- shutil.rmtree(DestFile)
- else:
- if g_FilesToSkip.has_key(File):
- continue
- print 'Deleting file',DestFile
- os.remove(DestFile)
-
- for File in SrcFiles:
- SrcFile=os.path.join(SrcDir,File)
- DestFile=os.path.join(DestDir,File)
- if os.path.isdir(SrcFile):
- if not g_NoSkipSvn and File=='.svn':
- continue # Skip svn administration dirs
- if not g_NoSkipGit and File=='.git':
- continue # Skip svn administration dirs
- if SkipDir(SrcDir,File):
- continue
- if not os.path.isdir(DestFile):
- if g_Dot:
- sys.stdout.write('\n')
- g_Dot=0
- if not g_DoNothing:
- if g_Ask:
- sys.stdout.write("Create directory %s? (y/n)"%DestFile)
- if sys.stdin.read(1)=='y':
- print "Creating dir",DestFile
- os.mkdir(DestFile)
- sys.stdin.read(1)
- else:
- print "Creating dir",DestFile
- os.mkdir(DestFile)
- else:
- print "Creating dir",DestFile
- SynchroniseDir(SrcFile,DestFile)
- else:
- if g_Extre and not g_Extre.search(File):
- continue
- if g_FilesToSkip.has_key(File):
- continue
- if g_FilesToDelete:
- if g_FilesToDelete.search(File):
- if g_Dot:
- sys.stdout.write('\n')
- g_Dot=0
- DeleteFiles(SrcFile,DestFile)
- continue
- if FileDiff(SrcFile,DestFile):
- #if os.system('fc /b "%s" "%s" >& nul'%(SrcFile,DestFile)):
- if g_Dot:
- sys.stdout.write('\n')
- g_Dot=0
- if not g_DoNothing:
- if g_Ask or g_FilesToConfirm.has_key(File):
- sys.stdout.write("Copy/Merge %s to %s? (y/n/m/d)"%(SrcFile,DestFile))
- R=sys.stdin.read(1)
- if R=='y':
- print '%s -> %s'%(SrcFile,DestFile)
- shutil.copyfile(SrcFile,DestFile)
- elif R=='m':
- print '%s -> %s'%(SrcFile,DestFile)
- os.system('fcg "%s" "%s"'%(SrcFile,DestFile))
- elif R=='d':
- DeleteFiles(SrcFile,DestFile)
- sys.stdin.read(1)
- else:
- print '%s -> %s'%(SrcFile,DestFile)
- # check if the file is read-only
- try:
- Mode=os.stat(DestFile).st_mode
- except OSError:
- Mode=g_WriteMask
- if not g_WriteMask&Mode:
- ReadOnly=True
- os.chmod(DestFile,Mode|g_WriteMask)
- else:
- ReadOnly=False
- shutil.copyfile(SrcFile,DestFile)
- if ReadOnly:
- os.chmod(DestFile,Mode & (~g_WriteMask) )
-
- else:
- print '%s -> %s'%(SrcFile,DestFile)
- else:
- PrintBusy()
- g_Dot=1
-
-SynchroniseDir(g_SrcDir,g_DestDir)
-sys.stdout.write("\n")
+#!/usr/bin/python
+import os,sys,shutil,re,stat
+
+from optparse import OptionParser
+
+sys.stdout = os.fdopen(sys.stdout.fileno(), 'w', 0)
+
+usage = "usage: %prog [options] <SrcDir> <DestDir>"
+parser = OptionParser(usage=usage)
+parser.add_option("-n", "--donothing", action='store_true', dest="DoNothing", default=False, help="Do not copy the files.")
+parser.add_option("", "--extension", action='store', dest="Extension", default=None, help="Copy only files with this extension.")
+parser.add_option("-y", "--ask", action='store_true', dest="Ask", default=False, help="Ask confirmation to copy.")
+parser.add_option("-a", "--ask-file", action='append', dest="FilesToConfirm", default=[], help="Ask confirmation to copy for this speicific file (only useful if -y is not used).")
+parser.add_option("-d", "--delete-file_re", dest="FilesToDeleteRe", default="", help="Regular expression of files to delete.")
+parser.add_option("-s", "--no-skip-svn", dest="NoSkipSvn", action='store_true', default=False, help="Do not Skip .svn directories.")
+parser.add_option("-g", "--no-skip-git", dest="NoSkipGit", action='store_true', default=False, help="Do not Skip .git directories.")
+parser.add_option("-e", "--del-exist-only-dest", dest="DelExistOnlyDest", action='store_true', default=False, help="Delete files that exist only in the destination directory.")
+parser.add_option( "" , "--skip-dir", dest="SkipDirs", action='append', default=[], help="Adds a directory name to skip.")
+parser.add_option( "" , "--skip-file", dest="SkipFiles", action='append', default=[], help="Adds a file name to skip.")
+
+(g_Options, g_Args) = parser.parse_args()
+
+if g_Options.FilesToDeleteRe:
+ try:
+ g_FilesToDelete=re.compile(g_Options.FilesToDeleteRe,re.I)
+ except:
+ print 'Wrong regular expression:',g_Options.FilesToDeleteRe
+ sys.exit(1)
+else:
+ g_FilesToDelete=None
+
+if len(g_Args)!=2:
+ parser.error("Wrong number of arguments: "+repr(g_Args))
+ sys.exit(1)
+
+g_FilesToConfirm={}
+for File in g_Options.FilesToConfirm:
+ g_FilesToConfirm[File]=1
+
+g_DirsToSkip={}
+for Dir in g_Options.SkipDirs:
+ g_DirsToSkip[Dir]=1
+
+g_FilesToSkip={}
+for File in g_Options.SkipFiles:
+ g_FilesToSkip[File]=1
+
+g_Ask=g_Options.Ask
+g_DoNothing=g_Options.DoNothing
+g_NoSkipSvn=g_Options.NoSkipSvn
+g_NoSkipGit=g_Options.NoSkipGit
+
+g_WriteMask=stat.S_IWUSR|stat.S_IWGRP|stat.S_IWOTH
+
+g_SrcDir=os.path.realpath(g_Args[0])
+g_DestDir=os.path.realpath(g_Args[1])
+
+if g_Options.Extension:
+ g_Extre=re.compile('.*\.%s$'%g_Options.Extension,re.I)
+else:
+ g_Extre=None
+
+###############################################################################
+g_LenSrcDir=len(g_SrcDir)
+if g_SrcDir[-1]!=os.path.sep:
+ g_LenSrcDir+=1
+
+def SkipDir(SrcDir,File):
+ Ret = g_DirsToSkip.has_key(File)
+ SrcDir=SrcDir[g_LenSrcDir:]
+
+ while not Ret and SrcDir:
+ SrcDir,Part=os.path.split(SrcDir)
+ File=os.path.join(Part,File)
+ Ret = g_DirsToSkip.has_key(File)
+ return Ret
+
+###############################################################################
+def DeleteFiles(SrcFile,DestFile):
+ print 'Deleting %s'%(SrcFile)
+ os.remove(SrcFile)
+ print 'Deleting %s'%(DestFile)
+ try:
+ os.remove(DestFile)
+ except:
+ print DestFile,'does not exist'
+
+###############################################################################
+#characters=['|','/','-','\\']
+#chariter=iter(characters)
+#def PrintBusy():
+# global characters
+# global chariter
+#
+# try:
+# char=chariter.next()
+# except StopIteration:
+# chariter=iter(characters)
+# char=chariter.next()
+#
+# sys.stdout.write(char)
+# sys.stdout.write(chr(8))
+count=0
+def PrintBusy():
+ global count
+ count+=1
+ item=str(count)
+ sys.stdout.write(item)
+ sys.stdout.write(chr(8)*len(item))
+###############################################################################
+
+if not os.path.isdir(g_DestDir):
+ print g_DestDir,"is not a directory"
+ sys.exit(1)
+
+def FileDiff(SrcFile,DestFile):
+ try:
+ Src=open(SrcFile,'rb')
+ Dest=open(DestFile,'rb')
+ while 1:
+ SrcLine=Src.read(4096)
+ DestLine=Dest.read(4096)
+ if SrcLine!=DestLine:
+ return 1
+ if not SrcLine:
+ return 0
+ except Exception,Object:
+ #print "Exception occured"
+ #print Object
+ return 1
+
+g_Dot=0
+def SynchroniseDir(SrcDir,DestDir):
+ global g_Dot
+ SrcFiles=os.listdir(SrcDir)
+ if g_Options.DelExistOnlyDest:
+ DstFiles=os.listdir(DestDir)
+ for File in DstFiles:
+ DestFile=os.path.join(DestDir,File)
+ try:
+ Index=SrcFiles.index(File)
+ except ValueError:
+ if os.path.isdir(DestFile):
+ if not g_NoSkipSvn and File=='.svn':
+ continue # Skip svn administration dirs
+ if not g_NoSkipGit and File=='.git':
+ continue # Skip svn administration dirs
+ if SkipDir(SrcDir,File):
+ continue
+ print 'Deleting directory',DestFile
+ shutil.rmtree(DestFile)
+ else:
+ if g_FilesToSkip.has_key(File):
+ continue
+ print 'Deleting file',DestFile
+ os.remove(DestFile)
+
+ for File in SrcFiles:
+ SrcFile=os.path.join(SrcDir,File)
+ DestFile=os.path.join(DestDir,File)
+ if os.path.isdir(SrcFile):
+ if not g_NoSkipSvn and File=='.svn':
+ continue # Skip svn administration dirs
+ if not g_NoSkipGit and File=='.git':
+ continue # Skip svn administration dirs
+ if SkipDir(SrcDir,File):
+ continue
+ if not os.path.isdir(DestFile):
+ if g_Dot:
+ sys.stdout.write('\n')
+ g_Dot=0
+ if not g_DoNothing:
+ if g_Ask:
+ sys.stdout.write("Create directory %s? (y/n)"%DestFile)
+ if sys.stdin.read(1)=='y':
+ print "Creating dir",DestFile
+ os.mkdir(DestFile)
+ sys.stdin.read(1)
+ else:
+ print "Creating dir",DestFile
+ os.mkdir(DestFile)
+ else:
+ print "Creating dir",DestFile
+ SynchroniseDir(SrcFile,DestFile)
+ else:
+ if g_Extre and not g_Extre.search(File):
+ continue
+ if g_FilesToSkip.has_key(File):
+ continue
+ if g_FilesToDelete:
+ if g_FilesToDelete.search(File):
+ if g_Dot:
+ sys.stdout.write('\n')
+ g_Dot=0
+ DeleteFiles(SrcFile,DestFile)
+ continue
+ if FileDiff(SrcFile,DestFile):
+ #if os.system('fc /b "%s" "%s" >& nul'%(SrcFile,DestFile)):
+ if g_Dot:
+ sys.stdout.write('\n')
+ g_Dot=0
+ if not g_DoNothing:
+ if g_Ask or g_FilesToConfirm.has_key(File):
+ sys.stdout.write("Copy/Merge %s to %s? (y/n/m/d)"%(SrcFile,DestFile))
+ R=sys.stdin.read(1)
+ if R=='y':
+ print '%s -> %s'%(SrcFile,DestFile)
+ shutil.copyfile(SrcFile,DestFile)
+ elif R=='m':
+ print '%s -> %s'%(SrcFile,DestFile)
+ os.system('fcg "%s" "%s"'%(SrcFile,DestFile))
+ elif R=='d':
+ DeleteFiles(SrcFile,DestFile)
+ sys.stdin.read(1)
+ else:
+ print '%s -> %s'%(SrcFile,DestFile)
+ # check if the file is read-only
+ try:
+ Mode=os.stat(DestFile).st_mode
+ except OSError:
+ Mode=g_WriteMask
+ if not g_WriteMask&Mode:
+ ReadOnly=True
+ os.chmod(DestFile,Mode|g_WriteMask)
+ else:
+ ReadOnly=False
+ shutil.copyfile(SrcFile,DestFile)
+ if ReadOnly:
+ os.chmod(DestFile,Mode & (~g_WriteMask) )
+
+ else:
+ print '%s -> %s'%(SrcFile,DestFile)
+ else:
+ PrintBusy()
+ g_Dot=1
+
+SynchroniseDir(g_SrcDir,g_DestDir)
+sys.stdout.write("\n")
diff --git a/xkbcomp/.gitignore b/xkbcomp/.gitignore
index 4b418d2a8..c6e344a28 100644
--- a/xkbcomp/.gitignore
+++ b/xkbcomp/.gitignore
@@ -1,80 +1,80 @@
-#
-# X.Org module default exclusion patterns
-# The next section if for module specific patterns
-#
-# Do not edit the following section
-# GNU Build System (Autotools)
-aclocal.m4
-autom4te.cache/
-autoscan.log
-ChangeLog
-compile
-config.guess
-config.h
-config.h.in
-config.log
-config-ml.in
-config.py
-config.status
-config.status.lineno
-config.sub
-configure
-configure.scan
-depcomp
-.deps/
-INSTALL
-install-sh
-.libs/
-libtool
-libtool.m4
-ltmain.sh
-lt~obsolete.m4
-ltoptions.m4
-ltsugar.m4
-ltversion.m4
-Makefile
-Makefile.in
-mdate-sh
-missing
-mkinstalldirs
-*.pc
-py-compile
-stamp-h?
-symlink-tree
-texinfo.tex
-ylwrap
-
-# Do not edit the following section
-# Edit Compile Debug Document Distribute
-*~
-*.[0-9]
-*.[0-9]x
-*.bak
-*.bin
-core
-*.dll
-*.exe
-*-ISO*.bdf
-*-JIS*.bdf
-*-KOI8*.bdf
-*.kld
-*.ko
-*.ko.cmd
-*.lai
-*.l[oa]
-*.[oa]
-*.obj
-*.patch
-*.so
-*.pcf.gz
-*.pdb
-*.tar.bz2
-*.tar.gz
-#
-# Add & Override patterns for xkbcomp
-#
-# Edit the following section as needed
-# For example, !report.pc overrides *.pc. See 'man gitignore'
-#
-xkbcomp
-xkbparse.c
+#
+# X.Org module default exclusion patterns
+# The next section if for module specific patterns
+#
+# Do not edit the following section
+# GNU Build System (Autotools)
+aclocal.m4
+autom4te.cache/
+autoscan.log
+ChangeLog
+compile
+config.guess
+config.h
+config.h.in
+config.log
+config-ml.in
+config.py
+config.status
+config.status.lineno
+config.sub
+configure
+configure.scan
+depcomp
+.deps/
+INSTALL
+install-sh
+.libs/
+libtool
+libtool.m4
+ltmain.sh
+lt~obsolete.m4
+ltoptions.m4
+ltsugar.m4
+ltversion.m4
+Makefile
+Makefile.in
+mdate-sh
+missing
+mkinstalldirs
+*.pc
+py-compile
+stamp-h?
+symlink-tree
+texinfo.tex
+ylwrap
+
+# Do not edit the following section
+# Edit Compile Debug Document Distribute
+*~
+*.[0-9]
+*.[0-9]x
+*.bak
+*.bin
+core
+*.dll
+*.exe
+*-ISO*.bdf
+*-JIS*.bdf
+*-KOI8*.bdf
+*.kld
+*.ko
+*.ko.cmd
+*.lai
+*.l[oa]
+*.[oa]
+*.obj
+*.patch
+*.so
+*.pcf.gz
+*.pdb
+*.tar.bz2
+*.tar.gz
+#
+# Add & Override patterns for xkbcomp
+#
+# Edit the following section as needed
+# For example, !report.pc overrides *.pc. See 'man gitignore'
+#
+xkbcomp
+xkbparse.c
diff --git a/xkbcomp/COPYING b/xkbcomp/COPYING
index 867c4723c..fc22e80e8 100644
--- a/xkbcomp/COPYING
+++ b/xkbcomp/COPYING
@@ -1,90 +1,90 @@
-Copyright (c) 1994 by Silicon Graphics Computer Systems, Inc.
-
-Permission to use, copy, modify, and distribute this
-software and its documentation for any purpose and without
-fee is hereby granted, provided that the above copyright
-notice appear in all copies and that both that copyright
-notice and this permission notice appear in supporting
-documentation, and that the name of Silicon Graphics not be
-used in advertising or publicity pertaining to distribution
-of the software without specific prior written permission.
-Silicon Graphics makes no representation about the suitability
-of this software for any purpose. It is provided "as is"
-without any express or implied warranty.
-
-SILICON GRAPHICS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS
-SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
-AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON
-GRAPHICS BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL
-DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
-DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
-OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH
-THE USE OR PERFORMANCE OF THIS SOFTWARE.
-
-
-Copyright 1988, 1998 The Open Group
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall not be
-used in advertising or otherwise to promote the sale, use or other dealings
-in this Software without prior written authorization from The Open Group.
-
-
-Copyright 1988 by Digital Equipment Corporation, Maynard, Massachusetts.
-
- All Rights Reserved
-
-Permission to use, copy, modify, and distribute this software and its
-documentation for any purpose and without fee is hereby granted,
-provided that the above copyright notice appear in all copies and that
-both that copyright notice and this permission notice appear in
-supporting documentation, and that the name of Digital not be
-used in advertising or publicity pertaining to distribution of the
-software without specific, written prior permission.
-
-DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
-ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
-DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
-ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
-WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
-ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
-SOFTWARE.
-
-
- COPYRIGHT 1990
- DIGITAL EQUIPMENT CORPORATION
- MAYNARD, MASSACHUSETTS
- ALL RIGHTS RESERVED.
-
-THE INFORMATION IN THIS SOFTWARE IS SUBJECT TO CHANGE WITHOUT NOTICE AND
-SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT CORPORATION.
-DIGITAL MAKES NO REPRESENTATIONS ABOUT THE SUITABILITY OF THIS SOFTWARE
-FOR ANY PURPOSE. IT IS SUPPLIED "AS IS" WITHOUT EXPRESS OR IMPLIED
-WARRANTY.
-
-IF THE SOFTWARE IS MODIFIED IN A MANNER CREATING DERIVATIVE COPYRIGHT
-RIGHTS, APPROPRIATE LEGENDS MAY BE PLACED ON THE DERIVATIVE WORK IN
-ADDITION TO THAT SET FORTH ABOVE.
-
-Permission to use, copy, modify, and distribute this software and its
-documentation for any purpose and without fee is hereby granted, provided
-that the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation, and that the name of Digital Equipment Corporation not be
-used in advertising or publicity pertaining to distribution of the
-software without specific, written prior permission.
+Copyright (c) 1994 by Silicon Graphics Computer Systems, Inc.
+
+Permission to use, copy, modify, and distribute this
+software and its documentation for any purpose and without
+fee is hereby granted, provided that the above copyright
+notice appear in all copies and that both that copyright
+notice and this permission notice appear in supporting
+documentation, and that the name of Silicon Graphics not be
+used in advertising or publicity pertaining to distribution
+of the software without specific prior written permission.
+Silicon Graphics makes no representation about the suitability
+of this software for any purpose. It is provided "as is"
+without any express or implied warranty.
+
+SILICON GRAPHICS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS
+SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
+AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON
+GRAPHICS BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL
+DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
+DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
+OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH
+THE USE OR PERFORMANCE OF THIS SOFTWARE.
+
+
+Copyright 1988, 1998 The Open Group
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group shall not be
+used in advertising or otherwise to promote the sale, use or other dealings
+in this Software without prior written authorization from The Open Group.
+
+
+Copyright 1988 by Digital Equipment Corporation, Maynard, Massachusetts.
+
+ All Rights Reserved
+
+Permission to use, copy, modify, and distribute this software and its
+documentation for any purpose and without fee is hereby granted,
+provided that the above copyright notice appear in all copies and that
+both that copyright notice and this permission notice appear in
+supporting documentation, and that the name of Digital not be
+used in advertising or publicity pertaining to distribution of the
+software without specific, written prior permission.
+
+DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
+ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
+DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
+ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
+WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
+ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
+SOFTWARE.
+
+
+ COPYRIGHT 1990
+ DIGITAL EQUIPMENT CORPORATION
+ MAYNARD, MASSACHUSETTS
+ ALL RIGHTS RESERVED.
+
+THE INFORMATION IN THIS SOFTWARE IS SUBJECT TO CHANGE WITHOUT NOTICE AND
+SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT CORPORATION.
+DIGITAL MAKES NO REPRESENTATIONS ABOUT THE SUITABILITY OF THIS SOFTWARE
+FOR ANY PURPOSE. IT IS SUPPLIED "AS IS" WITHOUT EXPRESS OR IMPLIED
+WARRANTY.
+
+IF THE SOFTWARE IS MODIFIED IN A MANNER CREATING DERIVATIVE COPYRIGHT
+RIGHTS, APPROPRIATE LEGENDS MAY BE PLACED ON THE DERIVATIVE WORK IN
+ADDITION TO THAT SET FORTH ABOVE.
+
+Permission to use, copy, modify, and distribute this software and its
+documentation for any purpose and without fee is hereby granted, provided
+that the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation, and that the name of Digital Equipment Corporation not be
+used in advertising or publicity pertaining to distribution of the
+software without specific, written prior permission.
diff --git a/xkbcomp/action.c b/xkbcomp/action.c
index fe022187c..3b82e647e 100644
--- a/xkbcomp/action.c
+++ b/xkbcomp/action.c
@@ -1,1468 +1,1468 @@
-/************************************************************
- Copyright (c) 1994 by Silicon Graphics Computer Systems, Inc.
-
- Permission to use, copy, modify, and distribute this
- software and its documentation for any purpose and without
- fee is hereby granted, provided that the above copyright
- notice appear in all copies and that both that copyright
- notice and this permission notice appear in supporting
- documentation, and that the name of Silicon Graphics not be
- used in advertising or publicity pertaining to distribution
- of the software without specific prior written permission.
- Silicon Graphics makes no representation about the suitability
- of this software for any purpose. It is provided "as is"
- without any express or implied warranty.
-
- SILICON GRAPHICS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS
- SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
- AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON
- GRAPHICS BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL
- DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
- DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
- OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH
- THE USE OR PERFORMANCE OF THIS SOFTWARE.
-
- ********************************************************/
-
-#include "xkbcomp.h"
-#include "tokens.h"
-#include "expr.h"
-
-#include "keycodes.h"
-#include "vmod.h"
-#include "misc.h"
-#include "action.h"
-#include "misc.h"
-
-static Bool actionsInitialized;
-static ExprDef constTrue;
-static ExprDef constFalse;
-
-/***====================================================================***/
-
-static Bool
-stringToAction(char *str, unsigned *type_rtrn)
-{
- if (str == NULL)
- return False;
-
- if (uStrCaseCmp(str, "noaction") == 0)
- *type_rtrn = XkbSA_NoAction;
- else if (uStrCaseCmp(str, "setmods") == 0)
- *type_rtrn = XkbSA_SetMods;
- else if (uStrCaseCmp(str, "latchmods") == 0)
- *type_rtrn = XkbSA_LatchMods;
- else if (uStrCaseCmp(str, "lockmods") == 0)
- *type_rtrn = XkbSA_LockMods;
- else if (uStrCaseCmp(str, "setgroup") == 0)
- *type_rtrn = XkbSA_SetGroup;
- else if (uStrCaseCmp(str, "latchgroup") == 0)
- *type_rtrn = XkbSA_LatchGroup;
- else if (uStrCaseCmp(str, "lockgroup") == 0)
- *type_rtrn = XkbSA_LockGroup;
- else if (uStrCaseCmp(str, "moveptr") == 0)
- *type_rtrn = XkbSA_MovePtr;
- else if (uStrCaseCmp(str, "movepointer") == 0)
- *type_rtrn = XkbSA_MovePtr;
- else if (uStrCaseCmp(str, "ptrbtn") == 0)
- *type_rtrn = XkbSA_PtrBtn;
- else if (uStrCaseCmp(str, "pointerbutton") == 0)
- *type_rtrn = XkbSA_PtrBtn;
- else if (uStrCaseCmp(str, "lockptrbtn") == 0)
- *type_rtrn = XkbSA_LockPtrBtn;
- else if (uStrCaseCmp(str, "lockpointerbutton") == 0)
- *type_rtrn = XkbSA_LockPtrBtn;
- else if (uStrCaseCmp(str, "lockptrbutton") == 0)
- *type_rtrn = XkbSA_LockPtrBtn;
- else if (uStrCaseCmp(str, "lockpointerbtn") == 0)
- *type_rtrn = XkbSA_LockPtrBtn;
- else if (uStrCaseCmp(str, "setptrdflt") == 0)
- *type_rtrn = XkbSA_SetPtrDflt;
- else if (uStrCaseCmp(str, "setpointerdefault") == 0)
- *type_rtrn = XkbSA_SetPtrDflt;
- else if (uStrCaseCmp(str, "isolock") == 0)
- *type_rtrn = XkbSA_ISOLock;
- else if (uStrCaseCmp(str, "terminate") == 0)
- *type_rtrn = XkbSA_Terminate;
- else if (uStrCaseCmp(str, "terminateserver") == 0)
- *type_rtrn = XkbSA_Terminate;
- else if (uStrCaseCmp(str, "switchscreen") == 0)
- *type_rtrn = XkbSA_SwitchScreen;
- else if (uStrCaseCmp(str, "setcontrols") == 0)
- *type_rtrn = XkbSA_SetControls;
- else if (uStrCaseCmp(str, "lockcontrols") == 0)
- *type_rtrn = XkbSA_LockControls;
- else if (uStrCaseCmp(str, "actionmessage") == 0)
- *type_rtrn = XkbSA_ActionMessage;
- else if (uStrCaseCmp(str, "messageaction") == 0)
- *type_rtrn = XkbSA_ActionMessage;
- else if (uStrCaseCmp(str, "message") == 0)
- *type_rtrn = XkbSA_ActionMessage;
- else if (uStrCaseCmp(str, "redirect") == 0)
- *type_rtrn = XkbSA_RedirectKey;
- else if (uStrCaseCmp(str, "redirectkey") == 0)
- *type_rtrn = XkbSA_RedirectKey;
- else if (uStrCaseCmp(str, "devbtn") == 0)
- *type_rtrn = XkbSA_DeviceBtn;
- else if (uStrCaseCmp(str, "devicebtn") == 0)
- *type_rtrn = XkbSA_DeviceBtn;
- else if (uStrCaseCmp(str, "devbutton") == 0)
- *type_rtrn = XkbSA_DeviceBtn;
- else if (uStrCaseCmp(str, "devicebutton") == 0)
- *type_rtrn = XkbSA_DeviceBtn;
- else if (uStrCaseCmp(str, "lockdevbtn") == 0)
- *type_rtrn = XkbSA_DeviceBtn;
- else if (uStrCaseCmp(str, "lockdevicebtn") == 0)
- *type_rtrn = XkbSA_LockDeviceBtn;
- else if (uStrCaseCmp(str, "lockdevbutton") == 0)
- *type_rtrn = XkbSA_LockDeviceBtn;
- else if (uStrCaseCmp(str, "lockdevicebutton") == 0)
- *type_rtrn = XkbSA_LockDeviceBtn;
- else if (uStrCaseCmp(str, "devval") == 0)
- *type_rtrn = XkbSA_DeviceValuator;
- else if (uStrCaseCmp(str, "deviceval") == 0)
- *type_rtrn = XkbSA_DeviceValuator;
- else if (uStrCaseCmp(str, "devvaluator") == 0)
- *type_rtrn = XkbSA_DeviceValuator;
- else if (uStrCaseCmp(str, "devicevaluator") == 0)
- *type_rtrn = XkbSA_DeviceValuator;
- else if (uStrCaseCmp(str, "private") == 0)
- *type_rtrn = PrivateAction;
- else
- return False;
- return True;
-}
-
-static Bool
-stringToField(char *str, unsigned *field_rtrn)
-{
-
- if (str == NULL)
- return False;
-
- if (uStrCaseCmp(str, "clearlocks") == 0)
- *field_rtrn = F_ClearLocks;
- else if (uStrCaseCmp(str, "latchtolock") == 0)
- *field_rtrn = F_LatchToLock;
- else if (uStrCaseCmp(str, "genkeyevent") == 0)
- *field_rtrn = F_GenKeyEvent;
- else if (uStrCaseCmp(str, "generatekeyevent") == 0)
- *field_rtrn = F_GenKeyEvent;
- else if (uStrCaseCmp(str, "report") == 0)
- *field_rtrn = F_Report;
- else if (uStrCaseCmp(str, "default") == 0)
- *field_rtrn = F_Default;
- else if (uStrCaseCmp(str, "affect") == 0)
- *field_rtrn = F_Affect;
- else if (uStrCaseCmp(str, "increment") == 0)
- *field_rtrn = F_Increment;
- else if (uStrCaseCmp(str, "mods") == 0)
- *field_rtrn = F_Modifiers;
- else if (uStrCaseCmp(str, "modifiers") == 0)
- *field_rtrn = F_Modifiers;
- else if (uStrCaseCmp(str, "group") == 0)
- *field_rtrn = F_Group;
- else if (uStrCaseCmp(str, "x") == 0)
- *field_rtrn = F_X;
- else if (uStrCaseCmp(str, "y") == 0)
- *field_rtrn = F_Y;
- else if (uStrCaseCmp(str, "accel") == 0)
- *field_rtrn = F_Accel;
- else if (uStrCaseCmp(str, "accelerate") == 0)
- *field_rtrn = F_Accel;
- else if (uStrCaseCmp(str, "repeat") == 0)
- *field_rtrn = F_Accel;
- else if (uStrCaseCmp(str, "button") == 0)
- *field_rtrn = F_Button;
- else if (uStrCaseCmp(str, "value") == 0)
- *field_rtrn = F_Value;
- else if (uStrCaseCmp(str, "controls") == 0)
- *field_rtrn = F_Controls;
- else if (uStrCaseCmp(str, "ctrls") == 0)
- *field_rtrn = F_Controls;
- else if (uStrCaseCmp(str, "type") == 0)
- *field_rtrn = F_Type;
- else if (uStrCaseCmp(str, "count") == 0)
- *field_rtrn = F_Count;
- else if (uStrCaseCmp(str, "screen") == 0)
- *field_rtrn = F_Screen;
- else if (uStrCaseCmp(str, "same") == 0)
- *field_rtrn = F_Same;
- else if (uStrCaseCmp(str, "sameserver") == 0)
- *field_rtrn = F_Same;
- else if (uStrCaseCmp(str, "data") == 0)
- *field_rtrn = F_Data;
- else if (uStrCaseCmp(str, "device") == 0)
- *field_rtrn = F_Device;
- else if (uStrCaseCmp(str, "dev") == 0)
- *field_rtrn = F_Device;
- else if (uStrCaseCmp(str, "key") == 0)
- *field_rtrn = F_Keycode;
- else if (uStrCaseCmp(str, "keycode") == 0)
- *field_rtrn = F_Keycode;
- else if (uStrCaseCmp(str, "kc") == 0)
- *field_rtrn = F_Keycode;
- else if (uStrCaseCmp(str, "clearmods") == 0)
- *field_rtrn = F_ModsToClear;
- else if (uStrCaseCmp(str, "clearmodifiers") == 0)
- *field_rtrn = F_ModsToClear;
- else
- return False;
- return True;
-}
-
-static char *
-fieldText(unsigned field)
-{
- static char buf[32];
-
- switch (field)
- {
- case F_ClearLocks:
- strcpy(buf, "clearLocks");
- break;
- case F_LatchToLock:
- strcpy(buf, "latchToLock");
- break;
- case F_GenKeyEvent:
- strcpy(buf, "genKeyEvent");
- break;
- case F_Report:
- strcpy(buf, "report");
- break;
- case F_Default:
- strcpy(buf, "default");
- break;
- case F_Affect:
- strcpy(buf, "affect");
- break;
- case F_Increment:
- strcpy(buf, "increment");
- break;
- case F_Modifiers:
- strcpy(buf, "modifiers");
- break;
- case F_Group:
- strcpy(buf, "group");
- break;
- case F_X:
- strcpy(buf, "x");
- break;
- case F_Y:
- strcpy(buf, "y");
- break;
- case F_Accel:
- strcpy(buf, "accel");
- break;
- case F_Button:
- strcpy(buf, "button");
- break;
- case F_Value:
- strcpy(buf, "value");
- break;
- case F_Controls:
- strcpy(buf, "controls");
- break;
- case F_Type:
- strcpy(buf, "type");
- break;
- case F_Count:
- strcpy(buf, "count");
- break;
- case F_Screen:
- strcpy(buf, "screen");
- break;
- case F_Same:
- strcpy(buf, "sameServer");
- break;
- case F_Data:
- strcpy(buf, "data");
- break;
- case F_Device:
- strcpy(buf, "device");
- break;
- case F_Keycode:
- strcpy(buf, "keycode");
- break;
- case F_ModsToClear:
- strcpy(buf, "clearmods");
- break;
- default:
- strcpy(buf, "unknown");
- break;
- }
- return buf;
-}
-
-/***====================================================================***/
-
-static Bool
-ReportMismatch(unsigned action, unsigned field, const char *type)
-{
- ERROR2("Value of %s field must be of type %s\n", fieldText(field), type);
- ACTION1("Action %s definition ignored\n",
- XkbActionTypeText(action, XkbMessage));
- return False;
-}
-
-static Bool
-ReportIllegal(unsigned action, unsigned field)
-{
- ERROR2("Field %s is not defined for an action of type %s\n",
- fieldText(field), XkbActionTypeText(action, XkbMessage));
- ACTION("Action definition ignored\n");
- return False;
-}
-
-static Bool
-ReportActionNotArray(unsigned action, unsigned field)
-{
- ERROR2("The %s field in the %s action is not an array\n",
- fieldText(field), XkbActionTypeText(action, XkbMessage));
- ACTION("Action definition ignored\n");
- return False;
-}
-
-static Bool
-ReportNotFound(unsigned action, unsigned field, const char *what, char *bad)
-{
- ERROR2("%s named %s not found\n", what, bad);
- ACTION2("Ignoring the %s field of an %s action\n", fieldText(field),
- XkbActionTypeText(action, XkbMessage));
- return False;
-}
-
-static Bool
-HandleNoAction(XkbDescPtr xkb,
- XkbAnyAction * action,
- unsigned field, ExprDef * array_ndx, ExprDef * value)
-{
- return ReportIllegal(action->type, field);
-}
-
-static Bool
-CheckLatchLockFlags(unsigned action,
- unsigned field, ExprDef * value, unsigned *flags_inout)
-{
- unsigned tmp;
- ExprResult result;
-
- if (field == F_ClearLocks)
- tmp = XkbSA_ClearLocks;
- else if (field == F_LatchToLock)
- tmp = XkbSA_LatchToLock;
- else
- return False; /* WSGO! */
- if (!ExprResolveBoolean(value, &result, NULL, NULL))
- return ReportMismatch(action, field, "boolean");
- if (result.uval)
- *flags_inout |= tmp;
- else
- *flags_inout &= ~tmp;
- return True;
-}
-
-static Bool
-CheckModifierField(XkbDescPtr xkb,
- unsigned action,
- ExprDef * value,
- unsigned *flags_inout, unsigned *mods_rtrn)
-{
- ExprResult rtrn;
-
- if (value->op == ExprIdent)
- {
- register char *valStr;
- valStr = XkbAtomGetString(NULL, value->value.str);
- if (valStr && ((uStrCaseCmp(valStr, "usemodmapmods") == 0) ||
- (uStrCaseCmp(valStr, "modmapmods") == 0)))
- {
-
- *mods_rtrn = 0;
- *flags_inout |= XkbSA_UseModMapMods;
- return True;
- }
- }
- if (!ExprResolveModMask(value, &rtrn, LookupVModMask, (XPointer) xkb))
- return ReportMismatch(action, F_Modifiers, "modifier mask");
- *mods_rtrn = rtrn.uval;
- *flags_inout &= ~XkbSA_UseModMapMods;
- return True;
-}
-
-static Bool
-HandleSetLatchMods(XkbDescPtr xkb,
- XkbAnyAction * action,
- unsigned field, ExprDef * array_ndx, ExprDef * value)
-{
- XkbModAction *act;
- unsigned rtrn;
- unsigned t1, t2;
-
- act = (XkbModAction *) action;
- if (array_ndx != NULL)
- {
- switch (field)
- {
- case F_ClearLocks:
- case F_LatchToLock:
- case F_Modifiers:
- return ReportActionNotArray(action->type, field);
- }
- }
- switch (field)
- {
- case F_ClearLocks:
- case F_LatchToLock:
- rtrn = act->flags;
- if (CheckLatchLockFlags(action->type, field, value, &rtrn))
- {
- act->flags = rtrn;
- return True;
- }
- return False;
- case F_Modifiers:
- t1 = act->flags;
- if (CheckModifierField(xkb, action->type, value, &t1, &t2))
- {
- act->flags = t1;
- act->real_mods = act->mask = (t2 & 0xff);
- t2 = (t2 >> 8) & 0xffff;
- XkbSetModActionVMods(act, t2);
- return True;
- }
- return False;
- }
- return ReportIllegal(action->type, field);
-}
-
-static Bool
-HandleLockMods(XkbDescPtr xkb,
- XkbAnyAction * action,
- unsigned field, ExprDef * array_ndx, ExprDef * value)
-{
- XkbModAction *act;
- unsigned t1, t2;
-
- act = (XkbModAction *) action;
- if ((array_ndx != NULL) && (field == F_Modifiers))
- return ReportActionNotArray(action->type, field);
- switch (field)
- {
- case F_Modifiers:
- t1 = act->flags;
- if (CheckModifierField(xkb, action->type, value, &t1, &t2))
- {
- act->flags = t1;
- act->real_mods = act->mask = (t2 & 0xff);
- t2 = (t2 >> 8) & 0xffff;
- XkbSetModActionVMods(act, t2);
- return True;
- }
- return False;
- }
- return ReportIllegal(action->type, field);
-}
-
-static LookupEntry groupNames[] = {
- {"group1", 1},
- {"group2", 2},
- {"group3", 3},
- {"group4", 4},
- {"group5", 5},
- {"group6", 6},
- {"group7", 7},
- {"group8", 8},
- {NULL, 0},
-};
-
-static Bool
-CheckGroupField(unsigned action,
- ExprDef * value, unsigned *flags_inout, int *grp_rtrn)
-{
- ExprDef *spec;
- ExprResult rtrn;
-
- if ((value->op == OpNegate) || (value->op == OpUnaryPlus))
- {
- *flags_inout &= ~XkbSA_GroupAbsolute;
- spec = value->value.child;
- }
- else
- {
- *flags_inout |= XkbSA_GroupAbsolute;
- spec = value;
- }
-
- if (!ExprResolveInteger(spec, &rtrn, SimpleLookup, (XPointer) groupNames))
- return ReportMismatch(action, F_Group, "integer (range 1..8)");
- if ((rtrn.ival < 1) || (rtrn.ival > XkbNumKbdGroups))
- {
- ERROR2("Illegal group %d (must be in the range 1..%d)\n", rtrn.ival,
- XkbNumKbdGroups);
- ACTION1("Action %s definition ignored\n",
- XkbActionTypeText(action, XkbMessage));
- return False;
- }
- if (value->op == OpNegate)
- *grp_rtrn = -rtrn.ival;
- else if (value->op == OpUnaryPlus)
- *grp_rtrn = rtrn.ival;
- else
- *grp_rtrn = rtrn.ival - 1;
- return True;
-}
-
-static Bool
-HandleSetLatchGroup(XkbDescPtr xkb,
- XkbAnyAction * action,
- unsigned field, ExprDef * array_ndx, ExprDef * value)
-{
- XkbGroupAction *act;
- unsigned rtrn;
- unsigned t1;
- int t2;
-
- act = (XkbGroupAction *) action;
- if (array_ndx != NULL)
- {
- switch (field)
- {
- case F_ClearLocks:
- case F_LatchToLock:
- case F_Group:
- return ReportActionNotArray(action->type, field);
- }
- }
- switch (field)
- {
- case F_ClearLocks:
- case F_LatchToLock:
- rtrn = act->flags;
- if (CheckLatchLockFlags(action->type, field, value, &rtrn))
- {
- act->flags = rtrn;
- return True;
- }
- return False;
- case F_Group:
- t1 = act->flags;
- if (CheckGroupField(action->type, value, &t1, &t2))
- {
- act->flags = t1;
- XkbSASetGroup(act, t2);
- return True;
- }
- return False;
- }
- return ReportIllegal(action->type, field);
-}
-
-static Bool
-HandleLockGroup(XkbDescPtr xkb,
- XkbAnyAction * action,
- unsigned field, ExprDef * array_ndx, ExprDef * value)
-{
- XkbGroupAction *act;
- unsigned t1;
- int t2;
-
- act = (XkbGroupAction *) action;
- if ((array_ndx != NULL) && (field == F_Group))
- return ReportActionNotArray(action->type, field);
- if (field == F_Group)
- {
- t1 = act->flags;
- if (CheckGroupField(action->type, value, &t1, &t2))
- {
- act->flags = t1;
- XkbSASetGroup(act, t2);
- return True;
- }
- return False;
- }
- return ReportIllegal(action->type, field);
-}
-
-static Bool
-HandleMovePtr(XkbDescPtr xkb,
- XkbAnyAction * action,
- unsigned field, ExprDef * array_ndx, ExprDef * value)
-{
- ExprResult rtrn;
- XkbPtrAction *act;
- Bool absolute;
-
- act = (XkbPtrAction *) action;
- if ((array_ndx != NULL) && ((field == F_X) || (field == F_Y)))
- return ReportActionNotArray(action->type, field);
-
- if ((field == F_X) || (field == F_Y))
- {
- if ((value->op == OpNegate) || (value->op == OpUnaryPlus))
- absolute = False;
- else
- absolute = True;
- if (!ExprResolveInteger(value, &rtrn, NULL, NULL))
- return ReportMismatch(action->type, field, "integer");
- if (field == F_X)
- {
- if (absolute)
- act->flags |= XkbSA_MoveAbsoluteX;
- XkbSetPtrActionX(act, rtrn.ival);
- }
- else
- {
- if (absolute)
- act->flags |= XkbSA_MoveAbsoluteY;
- XkbSetPtrActionY(act, rtrn.ival);
- }
- return True;
- }
- else if (field == F_Accel)
- {
- if (!ExprResolveBoolean(value, &rtrn, NULL, NULL))
- return ReportMismatch(action->type, field, "boolean");
- if (rtrn.uval)
- act->flags &= ~XkbSA_NoAcceleration;
- else
- act->flags |= XkbSA_NoAcceleration;
- }
- return ReportIllegal(action->type, field);
-}
-
-static LookupEntry btnNames[] = {
- {"button1", 1},
- {"button2", 2},
- {"button3", 3},
- {"button4", 4},
- {"button5", 5},
- {"default", 0},
- {NULL, 0}
-};
-
-static LookupEntry lockWhich[] = {
- {"both", 0},
- {"lock", XkbSA_LockNoUnlock},
- {"neither", (XkbSA_LockNoLock | XkbSA_LockNoUnlock)},
- {"unlock", XkbSA_LockNoLock},
- {NULL, 0}
-};
-
-static Bool
-HandlePtrBtn(XkbDescPtr xkb,
- XkbAnyAction * action,
- unsigned field, ExprDef * array_ndx, ExprDef * value)
-{
- ExprResult rtrn;
- XkbPtrBtnAction *act;
-
- act = (XkbPtrBtnAction *) action;
- if (field == F_Button)
- {
- if (array_ndx != NULL)
- return ReportActionNotArray(action->type, field);
- if (!ExprResolveInteger
- (value, &rtrn, SimpleLookup, (XPointer) btnNames))
- return ReportMismatch(action->type, field,
- "integer (range 1..5)");
- if ((rtrn.ival < 0) || (rtrn.ival > 5))
- {
- ERROR("Button must specify default or be in the range 1..5\n");
- ACTION1("Illegal button value %d ignored\n", rtrn.ival);
- return False;
- }
- act->button = rtrn.ival;
- return True;
- }
- else if ((action->type == XkbSA_LockPtrBtn) && (field == F_Affect))
- {
- if (array_ndx != NULL)
- return ReportActionNotArray(action->type, field);
- if (!ExprResolveEnum(value, &rtrn, lockWhich))
- return ReportMismatch(action->type, field, "lock or unlock");
- act->flags &= ~(XkbSA_LockNoLock | XkbSA_LockNoUnlock);
- act->flags |= rtrn.ival;
- return True;
- }
- else if (field == F_Count)
- {
- if (array_ndx != NULL)
- return ReportActionNotArray(action->type, field);
- if (!ExprResolveInteger
- (value, &rtrn, SimpleLookup, (XPointer) btnNames))
- return ReportMismatch(action->type, field, "integer");
- if ((rtrn.ival < 0) || (rtrn.ival > 255))
- {
- ERROR("The count field must have a value in the range 0..255\n");
- ACTION1("Illegal count %d ignored\n", rtrn.ival);
- return False;
- }
- act->count = rtrn.ival;
- return True;
- }
- return ReportIllegal(action->type, field);
-}
-
-static LookupEntry ptrDflts[] = {
- {"dfltbtn", XkbSA_AffectDfltBtn},
- {"defaultbutton", XkbSA_AffectDfltBtn},
- {"button", XkbSA_AffectDfltBtn},
- {NULL, 0}
-};
-
-static Bool
-HandleSetPtrDflt(XkbDescPtr xkb,
- XkbAnyAction * action,
- unsigned field, ExprDef * array_ndx, ExprDef * value)
-{
- ExprResult rtrn;
- XkbPtrDfltAction *act;
-
- act = (XkbPtrDfltAction *) action;
- if (field == F_Affect)
- {
- if (array_ndx != NULL)
- return ReportActionNotArray(action->type, field);
- if (!ExprResolveEnum(value, &rtrn, ptrDflts))
- return ReportMismatch(action->type, field, "pointer component");
- act->affect = rtrn.uval;
- return True;
- }
- else if ((field == F_Button) || (field == F_Value))
- {
- ExprDef *btn;
- if (array_ndx != NULL)
- return ReportActionNotArray(action->type, field);
- if ((value->op == OpNegate) || (value->op == OpUnaryPlus))
- {
- act->flags &= ~XkbSA_DfltBtnAbsolute;
- btn = value->value.child;
- }
- else
- {
- act->flags |= XkbSA_DfltBtnAbsolute;
- btn = value;
- }
-
- if (!ExprResolveInteger
- (btn, &rtrn, SimpleLookup, (XPointer) btnNames))
- return ReportMismatch(action->type, field,
- "integer (range 1..5)");
- if ((rtrn.ival < 0) || (rtrn.ival > 5))
- {
- ERROR("New default button value must be in the range 1..5\n");
- ACTION1("Illegal default button value %d ignored\n", rtrn.ival);
- return False;
- }
- if (rtrn.ival == 0)
- {
- ERROR("Cannot set default pointer button to \"default\"\n");
- ACTION("Illegal default button setting ignored\n");
- return False;
- }
- if (value->op == OpNegate)
- XkbSASetPtrDfltValue(act, -rtrn.ival);
- else
- XkbSASetPtrDfltValue(act, rtrn.ival);
- return True;
- }
- return ReportIllegal(action->type, field);
-}
-
-static LookupEntry isoNames[] = {
- {"mods", XkbSA_ISONoAffectMods},
- {"modifiers", XkbSA_ISONoAffectMods},
- {"group", XkbSA_ISONoAffectGroup},
- {"groups", XkbSA_ISONoAffectGroup},
- {"ptr", XkbSA_ISONoAffectPtr},
- {"pointer", XkbSA_ISONoAffectPtr},
- {"ctrls", XkbSA_ISONoAffectCtrls},
- {"controls", XkbSA_ISONoAffectCtrls},
- {"all", ~((unsigned) 0)},
- {"none", 0},
- {NULL, 0},
-};
-
-static Bool
-HandleISOLock(XkbDescPtr xkb,
- XkbAnyAction * action,
- unsigned field, ExprDef * array_ndx, ExprDef * value)
-{
- ExprResult rtrn;
- XkbISOAction *act;
- unsigned flags, mods;
- int group;
-
- act = (XkbISOAction *) action;
- switch (field)
- {
- case F_Modifiers:
- if (array_ndx != NULL)
- return ReportActionNotArray(action->type, field);
- flags = act->flags;
- if (CheckModifierField(xkb, action->type, value, &flags, &mods))
- {
- act->flags = flags & (~XkbSA_ISODfltIsGroup);
- act->real_mods = mods & 0xff;
- mods = (mods >> 8) & 0xff;
- XkbSetModActionVMods(act, mods);
- return True;
- }
- return False;
- case F_Group:
- if (array_ndx != NULL)
- return ReportActionNotArray(action->type, field);
- flags = act->flags;
- if (CheckGroupField(action->type, value, &flags, &group))
- {
- act->flags = flags | XkbSA_ISODfltIsGroup;
- XkbSASetGroup(act, group);
- return True;
- }
- return False;
- case F_Affect:
- if (array_ndx != NULL)
- return ReportActionNotArray(action->type, field);
- if (!ExprResolveMask(value, &rtrn, SimpleLookup, (XPointer) isoNames))
- return ReportMismatch(action->type, field, "keyboard component");
- act->affect = (~rtrn.uval) & XkbSA_ISOAffectMask;
- return True;
- }
- return ReportIllegal(action->type, field);
-}
-
-static Bool
-HandleSwitchScreen(XkbDescPtr xkb,
- XkbAnyAction * action,
- unsigned field, ExprDef * array_ndx, ExprDef * value)
-{
- ExprResult rtrn;
- XkbSwitchScreenAction *act;
-
- act = (XkbSwitchScreenAction *) action;
- if (field == F_Screen)
- {
- ExprDef *scrn;
- if (array_ndx != NULL)
- return ReportActionNotArray(action->type, field);
- if ((value->op == OpNegate) || (value->op == OpUnaryPlus))
- {
- act->flags &= ~XkbSA_SwitchAbsolute;
- scrn = value->value.child;
- }
- else
- {
- act->flags |= XkbSA_SwitchAbsolute;
- scrn = value;
- }
-
- if (!ExprResolveInteger(scrn, &rtrn, NULL, NULL))
- return ReportMismatch(action->type, field, "integer (0..255)");
- if ((rtrn.ival < 0) || (rtrn.ival > 255))
- {
- ERROR("Screen index must be in the range 1..255\n");
- ACTION1("Illegal screen value %d ignored\n", rtrn.ival);
- return False;
- }
- if (value->op == OpNegate)
- XkbSASetScreen(act, -rtrn.ival);
- else
- XkbSASetScreen(act, rtrn.ival);
- return True;
- }
- else if (field == F_Same)
- {
- if (array_ndx != NULL)
- return ReportActionNotArray(action->type, field);
- if (!ExprResolveBoolean(value, &rtrn, NULL, NULL))
- return ReportMismatch(action->type, field, "boolean");
- if (rtrn.uval)
- act->flags &= ~XkbSA_SwitchApplication;
- else
- act->flags |= XkbSA_SwitchApplication;
- return True;
- }
- return ReportIllegal(action->type, field);
-}
-
-LookupEntry ctrlNames[] = {
- {"repeatkeys", XkbRepeatKeysMask}
- ,
- {"repeat", XkbRepeatKeysMask}
- ,
- {"autorepeat", XkbRepeatKeysMask}
- ,
- {"slowkeys", XkbSlowKeysMask}
- ,
- {"bouncekeys", XkbBounceKeysMask}
- ,
- {"stickykeys", XkbStickyKeysMask}
- ,
- {"mousekeys", XkbMouseKeysMask}
- ,
- {"mousekeysaccel", XkbMouseKeysAccelMask}
- ,
- {"accessxkeys", XkbAccessXKeysMask}
- ,
- {"accessxtimeout", XkbAccessXTimeoutMask}
- ,
- {"accessxfeedback", XkbAccessXFeedbackMask}
- ,
- {"audiblebell", XkbAudibleBellMask}
- ,
- {"overlay1", XkbOverlay1Mask}
- ,
- {"overlay2", XkbOverlay2Mask}
- ,
- {"ignoregrouplock", XkbIgnoreGroupLockMask}
- ,
- {"all", XkbAllBooleanCtrlsMask}
- ,
- {"none", 0}
- ,
- {NULL, 0}
-};
-
-static Bool
-HandleSetLockControls(XkbDescPtr xkb,
- XkbAnyAction * action,
- unsigned field, ExprDef * array_ndx, ExprDef * value)
-{
- ExprResult rtrn;
- XkbCtrlsAction *act;
-
- act = (XkbCtrlsAction *) action;
- if (field == F_Controls)
- {
- if (array_ndx != NULL)
- return ReportActionNotArray(action->type, field);
- if (!ExprResolveMask
- (value, &rtrn, SimpleLookup, (XPointer) ctrlNames))
- return ReportMismatch(action->type, field, "controls mask");
- XkbActionSetCtrls(act, rtrn.uval);
- return True;
- }
- return ReportIllegal(action->type, field);
-}
-
-static LookupEntry evNames[] = {
- {"press", XkbSA_MessageOnPress},
- {"keypress", XkbSA_MessageOnPress},
- {"release", XkbSA_MessageOnRelease},
- {"keyrelease", XkbSA_MessageOnRelease},
- {"all", XkbSA_MessageOnPress | XkbSA_MessageOnRelease},
- {"none", 0},
- {NULL, 0}
-};
-
-static Bool
-HandleActionMessage(XkbDescPtr xkb,
- XkbAnyAction * action,
- unsigned field, ExprDef * array_ndx, ExprDef * value)
-{
- ExprResult rtrn;
- XkbMessageAction *act;
-
- act = (XkbMessageAction *) action;
- switch (field)
- {
- case F_Report:
- if (array_ndx != NULL)
- return ReportActionNotArray(action->type, field);
- if (!ExprResolveMask(value, &rtrn, SimpleLookup, (XPointer) evNames))
- return ReportMismatch(action->type, field, "key event mask");
- act->flags &= ~(XkbSA_MessageOnPress | XkbSA_MessageOnRelease);
- act->flags =
- rtrn.uval & (XkbSA_MessageOnPress | XkbSA_MessageOnRelease);
- return True;
- case F_GenKeyEvent:
- if (array_ndx != NULL)
- return ReportActionNotArray(action->type, field);
- if (!ExprResolveBoolean(value, &rtrn, NULL, NULL))
- return ReportMismatch(action->type, field, "boolean");
- if (rtrn.uval)
- act->flags |= XkbSA_MessageGenKeyEvent;
- else
- act->flags &= ~XkbSA_MessageGenKeyEvent;
- return True;
- case F_Data:
- if (array_ndx == NULL)
- {
- if (!ExprResolveString(value, &rtrn, NULL, NULL))
- return ReportMismatch(action->type, field, "string");
- else
- {
- int len = strlen(rtrn.str);
- if ((len < 1) || (len > 6))
- {
- WARN("An action message can hold only 6 bytes\n");
- ACTION1("Extra %d bytes ignored\n", len - 6);
- }
- strncpy((char *) act->message, rtrn.str, 6);
- }
- return True;
- }
- else
- {
- unsigned ndx;
- if (!ExprResolveInteger(array_ndx, &rtrn, NULL, NULL))
- {
- ERROR("Array subscript must be integer\n");
- ACTION("Illegal subscript ignored\n");
- return False;
- }
- ndx = rtrn.uval;
- if (ndx > 5)
- {
- ERROR("An action message is at most 6 bytes long\n");
- ACTION1("Attempt to use data[%d] ignored\n", ndx);
- return False;
- }
- if (!ExprResolveInteger(value, &rtrn, NULL, NULL))
- return ReportMismatch(action->type, field, "integer");
- if ((rtrn.ival < 0) || (rtrn.ival > 255))
- {
- ERROR("Message data must be in the range 0..255\n");
- ACTION1("Illegal datum %d ignored\n", rtrn.ival);
- return False;
- }
- act->message[ndx] = rtrn.uval;
- }
- return True;
- }
- return ReportIllegal(action->type, field);
-}
-
-static Bool
-HandleRedirectKey(XkbDescPtr xkb,
- XkbAnyAction * action,
- unsigned field, ExprDef * array_ndx, ExprDef * value)
-{
- ExprResult rtrn;
- XkbRedirectKeyAction *act;
- unsigned t1, t2, vmods, vmask;
- unsigned long tmp;
-
- if (array_ndx != NULL)
- return ReportActionNotArray(action->type, field);
-
- act = (XkbRedirectKeyAction *) action;
- switch (field)
- {
- case F_Keycode:
- if (!ExprResolveKeyName(value, &rtrn, NULL, NULL))
- return ReportMismatch(action->type, field, "key name");
- tmp = KeyNameToLong(rtrn.keyName.name);
- if (!FindNamedKey(xkb, tmp, &t1, True, CreateKeyNames(xkb), 0))
- {
- return ReportNotFound(action->type, field, "Key",
- XkbKeyNameText(rtrn.keyName.name,
- XkbMessage));
- }
- act->new_key = t1;
- return True;
- case F_ModsToClear:
- case F_Modifiers:
- t1 = 0;
- if (CheckModifierField(xkb, action->type, value, &t1, &t2))
- {
- act->mods_mask |= (t2 & 0xff);
- if (field == F_Modifiers)
- act->mods |= (t2 & 0xff);
- else
- act->mods &= ~(t2 & 0xff);
-
- t2 = (t2 >> 8) & 0xffff;
- vmods = XkbSARedirectVMods(act);
- vmask = XkbSARedirectVModsMask(act);
- vmask |= t2;
- if (field == F_Modifiers)
- vmods |= t2;
- else
- vmods &= ~t2;
- XkbSARedirectSetVMods(act, vmods);
- XkbSARedirectSetVModsMask(act, vmask);
- return True;
- }
- return True;
- }
- return ReportIllegal(action->type, field);
-}
-
-static Bool
-HandleDeviceBtn(XkbDescPtr xkb,
- XkbAnyAction * action,
- unsigned field, ExprDef * array_ndx, ExprDef * value)
-{
- ExprResult rtrn;
- XkbDeviceBtnAction *act;
-
- act = (XkbDeviceBtnAction *) action;
- if (field == F_Button)
- {
- if (array_ndx != NULL)
- return ReportActionNotArray(action->type, field);
- if (!ExprResolveInteger(value, &rtrn, NULL, NULL))
- return ReportMismatch(action->type, field,
- "integer (range 1..255)");
- if ((rtrn.ival < 0) || (rtrn.ival > 255))
- {
- ERROR("Button must specify default or be in the range 1..255\n");
- ACTION1("Illegal button value %d ignored\n", rtrn.ival);
- return False;
- }
- act->button = rtrn.ival;
- return True;
- }
- else if ((action->type == XkbSA_LockDeviceBtn) && (field == F_Affect))
- {
- if (array_ndx != NULL)
- return ReportActionNotArray(action->type, field);
- if (!ExprResolveEnum(value, &rtrn, lockWhich))
- return ReportMismatch(action->type, field, "lock or unlock");
- act->flags &= ~(XkbSA_LockNoLock | XkbSA_LockNoUnlock);
- act->flags |= rtrn.ival;
- return True;
- }
- else if (field == F_Count)
- {
- if (array_ndx != NULL)
- return ReportActionNotArray(action->type, field);
- if (!ExprResolveInteger
- (value, &rtrn, SimpleLookup, (XPointer) btnNames))
- return ReportMismatch(action->type, field, "integer");
- if ((rtrn.ival < 0) || (rtrn.ival > 255))
- {
- ERROR("The count field must have a value in the range 0..255\n");
- ACTION1("Illegal count %d ignored\n", rtrn.ival);
- return False;
- }
- act->count = rtrn.ival;
- return True;
- }
- else if (field == F_Device)
- {
- if (array_ndx != NULL)
- return ReportActionNotArray(action->type, field);
- if (!ExprResolveInteger(value, &rtrn, NULL, NULL))
- return ReportMismatch(action->type, field,
- "integer (range 1..255)");
- if ((rtrn.ival < 0) || (rtrn.ival > 255))
- {
- ERROR("Device must specify default or be in the range 1..255\n");
- ACTION1("Illegal device value %d ignored\n", rtrn.ival);
- return False;
- }
- act->device = rtrn.ival;
- return True;
- }
- return ReportIllegal(action->type, field);
-}
-
-static Bool
-HandleDeviceValuator(XkbDescPtr xkb,
- XkbAnyAction * action,
- unsigned field, ExprDef * array_ndx, ExprDef * value)
-{
-#if 0
- ExprResult rtrn;
- XkbDeviceValuatorAction *act;
-
- act = (XkbDeviceValuatorAction *) action;
- /* XXX - Not yet implemented */
-#endif
- return False;
-}
-
-static Bool
-HandlePrivate(XkbDescPtr xkb,
- XkbAnyAction * action,
- unsigned field, ExprDef * array_ndx, ExprDef * value)
-{
- ExprResult rtrn;
-
- switch (field)
- {
- case F_Type:
- if (!ExprResolveInteger(value, &rtrn, NULL, NULL))
- return ReportMismatch(PrivateAction, field, "integer");
- if ((rtrn.ival < 0) || (rtrn.ival > 255))
- {
- ERROR("Private action type must be in the range 0..255\n");
- ACTION1("Illegal type %d ignored\n", rtrn.ival);
- return False;
- }
- action->type = rtrn.uval;
- return True;
- case F_Data:
- if (array_ndx == NULL)
- {
- if (!ExprResolveString(value, &rtrn, NULL, NULL))
- return ReportMismatch(action->type, field, "string");
- else
- {
- int len = strlen(rtrn.str);
- if ((len < 1) || (len > 7))
- {
- WARN("A private action has 7 data bytes\n");
- ACTION1("Extra %d bytes ignored\n", len - 6);
- return False;
- }
- strncpy((char *) action->data, rtrn.str, 7);
- }
- return True;
- }
- else
- {
- unsigned ndx;
- if (!ExprResolveInteger(array_ndx, &rtrn, NULL, NULL))
- {
- ERROR("Array subscript must be integer\n");
- ACTION("Illegal subscript ignored\n");
- return False;
- }
- ndx = rtrn.uval;
- if (ndx > 6)
- {
- ERROR("The data for a private action is 7 bytes long\n");
- ACTION1("Attempt to use data[%d] ignored\n", ndx);
- return False;
- }
- if (!ExprResolveInteger(value, &rtrn, NULL, NULL))
- return ReportMismatch(action->type, field, "integer");
- if ((rtrn.ival < 0) || (rtrn.ival > 255))
- {
- ERROR("All data for a private action must be 0..255\n");
- ACTION1("Illegal datum %d ignored\n", rtrn.ival);
- return False;
- }
- action->data[ndx] = rtrn.uval;
- return True;
- }
- }
- return ReportIllegal(PrivateAction, field);
-}
-
-typedef Bool(*actionHandler) (XkbDescPtr /* xkb */ ,
- XkbAnyAction * /* action */ ,
- unsigned /* field */ ,
- ExprDef * /* array_ndx */ ,
- ExprDef * /* value */
- );
-
-static actionHandler handleAction[XkbSA_NumActions + 1] = {
- HandleNoAction /* NoAction */ ,
- HandleSetLatchMods /* SetMods */ ,
- HandleSetLatchMods /* LatchMods */ ,
- HandleLockMods /* LockMods */ ,
- HandleSetLatchGroup /* SetGroup */ ,
- HandleSetLatchGroup /* LatchGroup */ ,
- HandleLockGroup /* LockGroup */ ,
- HandleMovePtr /* MovePtr */ ,
- HandlePtrBtn /* PtrBtn */ ,
- HandlePtrBtn /* LockPtrBtn */ ,
- HandleSetPtrDflt /* SetPtrDflt */ ,
- HandleISOLock /* ISOLock */ ,
- HandleNoAction /* Terminate */ ,
- HandleSwitchScreen /* SwitchScreen */ ,
- HandleSetLockControls /* SetControls */ ,
- HandleSetLockControls /* LockControls */ ,
- HandleActionMessage /* ActionMessage */ ,
- HandleRedirectKey /* RedirectKey */ ,
- HandleDeviceBtn /* DeviceBtn */ ,
- HandleDeviceBtn /* LockDeviceBtn */ ,
- HandleDeviceValuator /* DeviceValuatr */ ,
- HandlePrivate /* Private */
-};
-
-/***====================================================================***/
-
-static void
-ApplyActionFactoryDefaults(XkbAction * action)
-{
- if (action->type == XkbSA_SetPtrDflt)
- { /* increment default button */
- action->dflt.affect = XkbSA_AffectDfltBtn;
- action->dflt.flags = 0;
- XkbSASetPtrDfltValue(&action->dflt, 1);
- }
- else if (action->type == XkbSA_ISOLock)
- {
- action->iso.real_mods = LockMask;
- }
- return;
-}
-
-
-int
-HandleActionDef(ExprDef * def,
- XkbDescPtr xkb,
- XkbAnyAction * action, unsigned mergeMode, ActionInfo * info)
-{
- ExprDef *arg;
- register char *str;
- unsigned tmp, hndlrType;
-
- if (!actionsInitialized)
- ActionsInit();
-
- if (def->op != ExprActionDecl)
- {
- ERROR1("Expected an action definition, found %s\n",
- exprOpText(def->op));
- return False;
- }
- str = XkbAtomGetString(NULL, def->value.action.name);
- if (!str)
- {
- WSGO("Missing name in action definition!!\n");
- return False;
- }
- if (!stringToAction(str, &tmp))
- {
- ERROR1("Unknown action %s\n", str);
- return False;
- }
- action->type = hndlrType = tmp;
- if (action->type != XkbSA_NoAction)
- {
- ApplyActionFactoryDefaults((XkbAction *) action);
- while (info)
- {
- if ((info->action == XkbSA_NoAction)
- || (info->action == hndlrType))
- {
- if (!(*handleAction[hndlrType]) (xkb, action,
- info->field,
- info->array_ndx,
- info->value))
- {
- return False;
- }
- }
- info = info->next;
- }
- }
- for (arg = def->value.action.args; arg != NULL;
- arg = (ExprDef *) arg->common.next)
- {
- ExprDef *field, *value, *arrayRtrn;
- ExprResult elemRtrn, fieldRtrn;
- unsigned fieldNdx;
-
- if (arg->op == OpAssign)
- {
- field = arg->value.binary.left;
- value = arg->value.binary.right;
- }
- else
- {
- if ((arg->op == OpNot) || (arg->op == OpInvert))
- {
- field = arg->value.child;
- value = &constFalse;
- }
- else
- {
- field = arg;
- value = &constTrue;
- }
- }
- if (!ExprResolveLhs(field, &elemRtrn, &fieldRtrn, &arrayRtrn))
- return False; /* internal error -- already reported */
-
- if (elemRtrn.str != NULL)
- {
- ERROR("Cannot change defaults in an action definition\n");
- ACTION2("Ignoring attempt to change %s.%s\n", elemRtrn.str,
- fieldRtrn.str);
- return False;
- }
- if (!stringToField(fieldRtrn.str, &fieldNdx))
- {
- ERROR1("Unknown field name %s\n", uStringText(fieldRtrn.str));
- return False;
- }
- if (!(*handleAction[hndlrType])
- (xkb, action, fieldNdx, arrayRtrn, value))
- {
- return False;
- }
- }
- return True;
-}
-
-/***====================================================================***/
-
-int
-SetActionField(XkbDescPtr xkb,
- char *elem,
- char *field,
- ExprDef * array_ndx, ExprDef * value, ActionInfo ** info_rtrn)
-{
- ActionInfo *new, *old;
-
- if (!actionsInitialized)
- ActionsInit();
-
- new = uTypedAlloc(ActionInfo);
- if (new == NULL)
- {
- WSGO("Couldn't allocate space for action default\n");
- return False;
- }
- if (uStrCaseCmp(elem, "action") == 0)
- new->action = XkbSA_NoAction;
- else
- {
- if (!stringToAction(elem, &new->action))
- return False;
- if (new->action == XkbSA_NoAction)
- {
- ERROR1("\"%s\" is not a valid field in a NoAction action\n",
- field);
- return False;
- }
- }
- if (!stringToField(field, &new->field))
- {
- ERROR1("\"%s\" is not a legal field name\n", field);
- return False;
- }
- new->array_ndx = array_ndx;
- new->value = value;
- new->next = NULL;
- old = *info_rtrn;
- while ((old) && (old->next))
- old = old->next;
- if (old == NULL)
- *info_rtrn = new;
- else
- old->next = new;
- return True;
-}
-
-/***====================================================================***/
-
-void
-ActionsInit(void)
-{
- if (!actionsInitialized)
- {
- bzero((char *) &constTrue, sizeof(constTrue));
- bzero((char *) &constFalse, sizeof(constFalse));
- constTrue.common.stmtType = StmtExpr;
- constTrue.common.next = NULL;
- constTrue.op = ExprIdent;
- constTrue.type = TypeBoolean;
- constTrue.value.str = XkbInternAtom(NULL, "true", False);
- constFalse.common.stmtType = StmtExpr;
- constFalse.common.next = NULL;
- constFalse.op = ExprIdent;
- constFalse.type = TypeBoolean;
- constFalse.value.str = XkbInternAtom(NULL, "false", False);
- actionsInitialized = 1;
- }
- return;
-}
+/************************************************************
+ Copyright (c) 1994 by Silicon Graphics Computer Systems, Inc.
+
+ Permission to use, copy, modify, and distribute this
+ software and its documentation for any purpose and without
+ fee is hereby granted, provided that the above copyright
+ notice appear in all copies and that both that copyright
+ notice and this permission notice appear in supporting
+ documentation, and that the name of Silicon Graphics not be
+ used in advertising or publicity pertaining to distribution
+ of the software without specific prior written permission.
+ Silicon Graphics makes no representation about the suitability
+ of this software for any purpose. It is provided "as is"
+ without any express or implied warranty.
+
+ SILICON GRAPHICS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS
+ SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
+ AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON
+ GRAPHICS BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL
+ DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
+ DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
+ OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH
+ THE USE OR PERFORMANCE OF THIS SOFTWARE.
+
+ ********************************************************/
+
+#include "xkbcomp.h"
+#include "tokens.h"
+#include "expr.h"
+
+#include "keycodes.h"
+#include "vmod.h"
+#include "misc.h"
+#include "action.h"
+#include "misc.h"
+
+static Bool actionsInitialized;
+static ExprDef constTrue;
+static ExprDef constFalse;
+
+/***====================================================================***/
+
+static Bool
+stringToAction(char *str, unsigned *type_rtrn)
+{
+ if (str == NULL)
+ return False;
+
+ if (uStrCaseCmp(str, "noaction") == 0)
+ *type_rtrn = XkbSA_NoAction;
+ else if (uStrCaseCmp(str, "setmods") == 0)
+ *type_rtrn = XkbSA_SetMods;
+ else if (uStrCaseCmp(str, "latchmods") == 0)
+ *type_rtrn = XkbSA_LatchMods;
+ else if (uStrCaseCmp(str, "lockmods") == 0)
+ *type_rtrn = XkbSA_LockMods;
+ else if (uStrCaseCmp(str, "setgroup") == 0)
+ *type_rtrn = XkbSA_SetGroup;
+ else if (uStrCaseCmp(str, "latchgroup") == 0)
+ *type_rtrn = XkbSA_LatchGroup;
+ else if (uStrCaseCmp(str, "lockgroup") == 0)
+ *type_rtrn = XkbSA_LockGroup;
+ else if (uStrCaseCmp(str, "moveptr") == 0)
+ *type_rtrn = XkbSA_MovePtr;
+ else if (uStrCaseCmp(str, "movepointer") == 0)
+ *type_rtrn = XkbSA_MovePtr;
+ else if (uStrCaseCmp(str, "ptrbtn") == 0)
+ *type_rtrn = XkbSA_PtrBtn;
+ else if (uStrCaseCmp(str, "pointerbutton") == 0)
+ *type_rtrn = XkbSA_PtrBtn;
+ else if (uStrCaseCmp(str, "lockptrbtn") == 0)
+ *type_rtrn = XkbSA_LockPtrBtn;
+ else if (uStrCaseCmp(str, "lockpointerbutton") == 0)
+ *type_rtrn = XkbSA_LockPtrBtn;
+ else if (uStrCaseCmp(str, "lockptrbutton") == 0)
+ *type_rtrn = XkbSA_LockPtrBtn;
+ else if (uStrCaseCmp(str, "lockpointerbtn") == 0)
+ *type_rtrn = XkbSA_LockPtrBtn;
+ else if (uStrCaseCmp(str, "setptrdflt") == 0)
+ *type_rtrn = XkbSA_SetPtrDflt;
+ else if (uStrCaseCmp(str, "setpointerdefault") == 0)
+ *type_rtrn = XkbSA_SetPtrDflt;
+ else if (uStrCaseCmp(str, "isolock") == 0)
+ *type_rtrn = XkbSA_ISOLock;
+ else if (uStrCaseCmp(str, "terminate") == 0)
+ *type_rtrn = XkbSA_Terminate;
+ else if (uStrCaseCmp(str, "terminateserver") == 0)
+ *type_rtrn = XkbSA_Terminate;
+ else if (uStrCaseCmp(str, "switchscreen") == 0)
+ *type_rtrn = XkbSA_SwitchScreen;
+ else if (uStrCaseCmp(str, "setcontrols") == 0)
+ *type_rtrn = XkbSA_SetControls;
+ else if (uStrCaseCmp(str, "lockcontrols") == 0)
+ *type_rtrn = XkbSA_LockControls;
+ else if (uStrCaseCmp(str, "actionmessage") == 0)
+ *type_rtrn = XkbSA_ActionMessage;
+ else if (uStrCaseCmp(str, "messageaction") == 0)
+ *type_rtrn = XkbSA_ActionMessage;
+ else if (uStrCaseCmp(str, "message") == 0)
+ *type_rtrn = XkbSA_ActionMessage;
+ else if (uStrCaseCmp(str, "redirect") == 0)
+ *type_rtrn = XkbSA_RedirectKey;
+ else if (uStrCaseCmp(str, "redirectkey") == 0)
+ *type_rtrn = XkbSA_RedirectKey;
+ else if (uStrCaseCmp(str, "devbtn") == 0)
+ *type_rtrn = XkbSA_DeviceBtn;
+ else if (uStrCaseCmp(str, "devicebtn") == 0)
+ *type_rtrn = XkbSA_DeviceBtn;
+ else if (uStrCaseCmp(str, "devbutton") == 0)
+ *type_rtrn = XkbSA_DeviceBtn;
+ else if (uStrCaseCmp(str, "devicebutton") == 0)
+ *type_rtrn = XkbSA_DeviceBtn;
+ else if (uStrCaseCmp(str, "lockdevbtn") == 0)
+ *type_rtrn = XkbSA_DeviceBtn;
+ else if (uStrCaseCmp(str, "lockdevicebtn") == 0)
+ *type_rtrn = XkbSA_LockDeviceBtn;
+ else if (uStrCaseCmp(str, "lockdevbutton") == 0)
+ *type_rtrn = XkbSA_LockDeviceBtn;
+ else if (uStrCaseCmp(str, "lockdevicebutton") == 0)
+ *type_rtrn = XkbSA_LockDeviceBtn;
+ else if (uStrCaseCmp(str, "devval") == 0)
+ *type_rtrn = XkbSA_DeviceValuator;
+ else if (uStrCaseCmp(str, "deviceval") == 0)
+ *type_rtrn = XkbSA_DeviceValuator;
+ else if (uStrCaseCmp(str, "devvaluator") == 0)
+ *type_rtrn = XkbSA_DeviceValuator;
+ else if (uStrCaseCmp(str, "devicevaluator") == 0)
+ *type_rtrn = XkbSA_DeviceValuator;
+ else if (uStrCaseCmp(str, "private") == 0)
+ *type_rtrn = PrivateAction;
+ else
+ return False;
+ return True;
+}
+
+static Bool
+stringToField(char *str, unsigned *field_rtrn)
+{
+
+ if (str == NULL)
+ return False;
+
+ if (uStrCaseCmp(str, "clearlocks") == 0)
+ *field_rtrn = F_ClearLocks;
+ else if (uStrCaseCmp(str, "latchtolock") == 0)
+ *field_rtrn = F_LatchToLock;
+ else if (uStrCaseCmp(str, "genkeyevent") == 0)
+ *field_rtrn = F_GenKeyEvent;
+ else if (uStrCaseCmp(str, "generatekeyevent") == 0)
+ *field_rtrn = F_GenKeyEvent;
+ else if (uStrCaseCmp(str, "report") == 0)
+ *field_rtrn = F_Report;
+ else if (uStrCaseCmp(str, "default") == 0)
+ *field_rtrn = F_Default;
+ else if (uStrCaseCmp(str, "affect") == 0)
+ *field_rtrn = F_Affect;
+ else if (uStrCaseCmp(str, "increment") == 0)
+ *field_rtrn = F_Increment;
+ else if (uStrCaseCmp(str, "mods") == 0)
+ *field_rtrn = F_Modifiers;
+ else if (uStrCaseCmp(str, "modifiers") == 0)
+ *field_rtrn = F_Modifiers;
+ else if (uStrCaseCmp(str, "group") == 0)
+ *field_rtrn = F_Group;
+ else if (uStrCaseCmp(str, "x") == 0)
+ *field_rtrn = F_X;
+ else if (uStrCaseCmp(str, "y") == 0)
+ *field_rtrn = F_Y;
+ else if (uStrCaseCmp(str, "accel") == 0)
+ *field_rtrn = F_Accel;
+ else if (uStrCaseCmp(str, "accelerate") == 0)
+ *field_rtrn = F_Accel;
+ else if (uStrCaseCmp(str, "repeat") == 0)
+ *field_rtrn = F_Accel;
+ else if (uStrCaseCmp(str, "button") == 0)
+ *field_rtrn = F_Button;
+ else if (uStrCaseCmp(str, "value") == 0)
+ *field_rtrn = F_Value;
+ else if (uStrCaseCmp(str, "controls") == 0)
+ *field_rtrn = F_Controls;
+ else if (uStrCaseCmp(str, "ctrls") == 0)
+ *field_rtrn = F_Controls;
+ else if (uStrCaseCmp(str, "type") == 0)
+ *field_rtrn = F_Type;
+ else if (uStrCaseCmp(str, "count") == 0)
+ *field_rtrn = F_Count;
+ else if (uStrCaseCmp(str, "screen") == 0)
+ *field_rtrn = F_Screen;
+ else if (uStrCaseCmp(str, "same") == 0)
+ *field_rtrn = F_Same;
+ else if (uStrCaseCmp(str, "sameserver") == 0)
+ *field_rtrn = F_Same;
+ else if (uStrCaseCmp(str, "data") == 0)
+ *field_rtrn = F_Data;
+ else if (uStrCaseCmp(str, "device") == 0)
+ *field_rtrn = F_Device;
+ else if (uStrCaseCmp(str, "dev") == 0)
+ *field_rtrn = F_Device;
+ else if (uStrCaseCmp(str, "key") == 0)
+ *field_rtrn = F_Keycode;
+ else if (uStrCaseCmp(str, "keycode") == 0)
+ *field_rtrn = F_Keycode;
+ else if (uStrCaseCmp(str, "kc") == 0)
+ *field_rtrn = F_Keycode;
+ else if (uStrCaseCmp(str, "clearmods") == 0)
+ *field_rtrn = F_ModsToClear;
+ else if (uStrCaseCmp(str, "clearmodifiers") == 0)
+ *field_rtrn = F_ModsToClear;
+ else
+ return False;
+ return True;
+}
+
+static char *
+fieldText(unsigned field)
+{
+ static char buf[32];
+
+ switch (field)
+ {
+ case F_ClearLocks:
+ strcpy(buf, "clearLocks");
+ break;
+ case F_LatchToLock:
+ strcpy(buf, "latchToLock");
+ break;
+ case F_GenKeyEvent:
+ strcpy(buf, "genKeyEvent");
+ break;
+ case F_Report:
+ strcpy(buf, "report");
+ break;
+ case F_Default:
+ strcpy(buf, "default");
+ break;
+ case F_Affect:
+ strcpy(buf, "affect");
+ break;
+ case F_Increment:
+ strcpy(buf, "increment");
+ break;
+ case F_Modifiers:
+ strcpy(buf, "modifiers");
+ break;
+ case F_Group:
+ strcpy(buf, "group");
+ break;
+ case F_X:
+ strcpy(buf, "x");
+ break;
+ case F_Y:
+ strcpy(buf, "y");
+ break;
+ case F_Accel:
+ strcpy(buf, "accel");
+ break;
+ case F_Button:
+ strcpy(buf, "button");
+ break;
+ case F_Value:
+ strcpy(buf, "value");
+ break;
+ case F_Controls:
+ strcpy(buf, "controls");
+ break;
+ case F_Type:
+ strcpy(buf, "type");
+ break;
+ case F_Count:
+ strcpy(buf, "count");
+ break;
+ case F_Screen:
+ strcpy(buf, "screen");
+ break;
+ case F_Same:
+ strcpy(buf, "sameServer");
+ break;
+ case F_Data:
+ strcpy(buf, "data");
+ break;
+ case F_Device:
+ strcpy(buf, "device");
+ break;
+ case F_Keycode:
+ strcpy(buf, "keycode");
+ break;
+ case F_ModsToClear:
+ strcpy(buf, "clearmods");
+ break;
+ default:
+ strcpy(buf, "unknown");
+ break;
+ }
+ return buf;
+}
+
+/***====================================================================***/
+
+static Bool
+ReportMismatch(unsigned action, unsigned field, const char *type)
+{
+ ERROR2("Value of %s field must be of type %s\n", fieldText(field), type);
+ ACTION1("Action %s definition ignored\n",
+ XkbActionTypeText(action, XkbMessage));
+ return False;
+}
+
+static Bool
+ReportIllegal(unsigned action, unsigned field)
+{
+ ERROR2("Field %s is not defined for an action of type %s\n",
+ fieldText(field), XkbActionTypeText(action, XkbMessage));
+ ACTION("Action definition ignored\n");
+ return False;
+}
+
+static Bool
+ReportActionNotArray(unsigned action, unsigned field)
+{
+ ERROR2("The %s field in the %s action is not an array\n",
+ fieldText(field), XkbActionTypeText(action, XkbMessage));
+ ACTION("Action definition ignored\n");
+ return False;
+}
+
+static Bool
+ReportNotFound(unsigned action, unsigned field, const char *what, char *bad)
+{
+ ERROR2("%s named %s not found\n", what, bad);
+ ACTION2("Ignoring the %s field of an %s action\n", fieldText(field),
+ XkbActionTypeText(action, XkbMessage));
+ return False;
+}
+
+static Bool
+HandleNoAction(XkbDescPtr xkb,
+ XkbAnyAction * action,
+ unsigned field, ExprDef * array_ndx, ExprDef * value)
+{
+ return ReportIllegal(action->type, field);
+}
+
+static Bool
+CheckLatchLockFlags(unsigned action,
+ unsigned field, ExprDef * value, unsigned *flags_inout)
+{
+ unsigned tmp;
+ ExprResult result;
+
+ if (field == F_ClearLocks)
+ tmp = XkbSA_ClearLocks;
+ else if (field == F_LatchToLock)
+ tmp = XkbSA_LatchToLock;
+ else
+ return False; /* WSGO! */
+ if (!ExprResolveBoolean(value, &result, NULL, NULL))
+ return ReportMismatch(action, field, "boolean");
+ if (result.uval)
+ *flags_inout |= tmp;
+ else
+ *flags_inout &= ~tmp;
+ return True;
+}
+
+static Bool
+CheckModifierField(XkbDescPtr xkb,
+ unsigned action,
+ ExprDef * value,
+ unsigned *flags_inout, unsigned *mods_rtrn)
+{
+ ExprResult rtrn;
+
+ if (value->op == ExprIdent)
+ {
+ register char *valStr;
+ valStr = XkbAtomGetString(NULL, value->value.str);
+ if (valStr && ((uStrCaseCmp(valStr, "usemodmapmods") == 0) ||
+ (uStrCaseCmp(valStr, "modmapmods") == 0)))
+ {
+
+ *mods_rtrn = 0;
+ *flags_inout |= XkbSA_UseModMapMods;
+ return True;
+ }
+ }
+ if (!ExprResolveModMask(value, &rtrn, LookupVModMask, (XPointer) xkb))
+ return ReportMismatch(action, F_Modifiers, "modifier mask");
+ *mods_rtrn = rtrn.uval;
+ *flags_inout &= ~XkbSA_UseModMapMods;
+ return True;
+}
+
+static Bool
+HandleSetLatchMods(XkbDescPtr xkb,
+ XkbAnyAction * action,
+ unsigned field, ExprDef * array_ndx, ExprDef * value)
+{
+ XkbModAction *act;
+ unsigned rtrn;
+ unsigned t1, t2;
+
+ act = (XkbModAction *) action;
+ if (array_ndx != NULL)
+ {
+ switch (field)
+ {
+ case F_ClearLocks:
+ case F_LatchToLock:
+ case F_Modifiers:
+ return ReportActionNotArray(action->type, field);
+ }
+ }
+ switch (field)
+ {
+ case F_ClearLocks:
+ case F_LatchToLock:
+ rtrn = act->flags;
+ if (CheckLatchLockFlags(action->type, field, value, &rtrn))
+ {
+ act->flags = rtrn;
+ return True;
+ }
+ return False;
+ case F_Modifiers:
+ t1 = act->flags;
+ if (CheckModifierField(xkb, action->type, value, &t1, &t2))
+ {
+ act->flags = t1;
+ act->real_mods = act->mask = (t2 & 0xff);
+ t2 = (t2 >> 8) & 0xffff;
+ XkbSetModActionVMods(act, t2);
+ return True;
+ }
+ return False;
+ }
+ return ReportIllegal(action->type, field);
+}
+
+static Bool
+HandleLockMods(XkbDescPtr xkb,
+ XkbAnyAction * action,
+ unsigned field, ExprDef * array_ndx, ExprDef * value)
+{
+ XkbModAction *act;
+ unsigned t1, t2;
+
+ act = (XkbModAction *) action;
+ if ((array_ndx != NULL) && (field == F_Modifiers))
+ return ReportActionNotArray(action->type, field);
+ switch (field)
+ {
+ case F_Modifiers:
+ t1 = act->flags;
+ if (CheckModifierField(xkb, action->type, value, &t1, &t2))
+ {
+ act->flags = t1;
+ act->real_mods = act->mask = (t2 & 0xff);
+ t2 = (t2 >> 8) & 0xffff;
+ XkbSetModActionVMods(act, t2);
+ return True;
+ }
+ return False;
+ }
+ return ReportIllegal(action->type, field);
+}
+
+static LookupEntry groupNames[] = {
+ {"group1", 1},
+ {"group2", 2},
+ {"group3", 3},
+ {"group4", 4},
+ {"group5", 5},
+ {"group6", 6},
+ {"group7", 7},
+ {"group8", 8},
+ {NULL, 0},
+};
+
+static Bool
+CheckGroupField(unsigned action,
+ ExprDef * value, unsigned *flags_inout, int *grp_rtrn)
+{
+ ExprDef *spec;
+ ExprResult rtrn;
+
+ if ((value->op == OpNegate) || (value->op == OpUnaryPlus))
+ {
+ *flags_inout &= ~XkbSA_GroupAbsolute;
+ spec = value->value.child;
+ }
+ else
+ {
+ *flags_inout |= XkbSA_GroupAbsolute;
+ spec = value;
+ }
+
+ if (!ExprResolveInteger(spec, &rtrn, SimpleLookup, (XPointer) groupNames))
+ return ReportMismatch(action, F_Group, "integer (range 1..8)");
+ if ((rtrn.ival < 1) || (rtrn.ival > XkbNumKbdGroups))
+ {
+ ERROR2("Illegal group %d (must be in the range 1..%d)\n", rtrn.ival,
+ XkbNumKbdGroups);
+ ACTION1("Action %s definition ignored\n",
+ XkbActionTypeText(action, XkbMessage));
+ return False;
+ }
+ if (value->op == OpNegate)
+ *grp_rtrn = -rtrn.ival;
+ else if (value->op == OpUnaryPlus)
+ *grp_rtrn = rtrn.ival;
+ else
+ *grp_rtrn = rtrn.ival - 1;
+ return True;
+}
+
+static Bool
+HandleSetLatchGroup(XkbDescPtr xkb,
+ XkbAnyAction * action,
+ unsigned field, ExprDef * array_ndx, ExprDef * value)
+{
+ XkbGroupAction *act;
+ unsigned rtrn;
+ unsigned t1;
+ int t2;
+
+ act = (XkbGroupAction *) action;
+ if (array_ndx != NULL)
+ {
+ switch (field)
+ {
+ case F_ClearLocks:
+ case F_LatchToLock:
+ case F_Group:
+ return ReportActionNotArray(action->type, field);
+ }
+ }
+ switch (field)
+ {
+ case F_ClearLocks:
+ case F_LatchToLock:
+ rtrn = act->flags;
+ if (CheckLatchLockFlags(action->type, field, value, &rtrn))
+ {
+ act->flags = rtrn;
+ return True;
+ }
+ return False;
+ case F_Group:
+ t1 = act->flags;
+ if (CheckGroupField(action->type, value, &t1, &t2))
+ {
+ act->flags = t1;
+ XkbSASetGroup(act, t2);
+ return True;
+ }
+ return False;
+ }
+ return ReportIllegal(action->type, field);
+}
+
+static Bool
+HandleLockGroup(XkbDescPtr xkb,
+ XkbAnyAction * action,
+ unsigned field, ExprDef * array_ndx, ExprDef * value)
+{
+ XkbGroupAction *act;
+ unsigned t1;
+ int t2;
+
+ act = (XkbGroupAction *) action;
+ if ((array_ndx != NULL) && (field == F_Group))
+ return ReportActionNotArray(action->type, field);
+ if (field == F_Group)
+ {
+ t1 = act->flags;
+ if (CheckGroupField(action->type, value, &t1, &t2))
+ {
+ act->flags = t1;
+ XkbSASetGroup(act, t2);
+ return True;
+ }
+ return False;
+ }
+ return ReportIllegal(action->type, field);
+}
+
+static Bool
+HandleMovePtr(XkbDescPtr xkb,
+ XkbAnyAction * action,
+ unsigned field, ExprDef * array_ndx, ExprDef * value)
+{
+ ExprResult rtrn;
+ XkbPtrAction *act;
+ Bool absolute;
+
+ act = (XkbPtrAction *) action;
+ if ((array_ndx != NULL) && ((field == F_X) || (field == F_Y)))
+ return ReportActionNotArray(action->type, field);
+
+ if ((field == F_X) || (field == F_Y))
+ {
+ if ((value->op == OpNegate) || (value->op == OpUnaryPlus))
+ absolute = False;
+ else
+ absolute = True;
+ if (!ExprResolveInteger(value, &rtrn, NULL, NULL))
+ return ReportMismatch(action->type, field, "integer");
+ if (field == F_X)
+ {
+ if (absolute)
+ act->flags |= XkbSA_MoveAbsoluteX;
+ XkbSetPtrActionX(act, rtrn.ival);
+ }
+ else
+ {
+ if (absolute)
+ act->flags |= XkbSA_MoveAbsoluteY;
+ XkbSetPtrActionY(act, rtrn.ival);
+ }
+ return True;
+ }
+ else if (field == F_Accel)
+ {
+ if (!ExprResolveBoolean(value, &rtrn, NULL, NULL))
+ return ReportMismatch(action->type, field, "boolean");
+ if (rtrn.uval)
+ act->flags &= ~XkbSA_NoAcceleration;
+ else
+ act->flags |= XkbSA_NoAcceleration;
+ }
+ return ReportIllegal(action->type, field);
+}
+
+static LookupEntry btnNames[] = {
+ {"button1", 1},
+ {"button2", 2},
+ {"button3", 3},
+ {"button4", 4},
+ {"button5", 5},
+ {"default", 0},
+ {NULL, 0}
+};
+
+static LookupEntry lockWhich[] = {
+ {"both", 0},
+ {"lock", XkbSA_LockNoUnlock},
+ {"neither", (XkbSA_LockNoLock | XkbSA_LockNoUnlock)},
+ {"unlock", XkbSA_LockNoLock},
+ {NULL, 0}
+};
+
+static Bool
+HandlePtrBtn(XkbDescPtr xkb,
+ XkbAnyAction * action,
+ unsigned field, ExprDef * array_ndx, ExprDef * value)
+{
+ ExprResult rtrn;
+ XkbPtrBtnAction *act;
+
+ act = (XkbPtrBtnAction *) action;
+ if (field == F_Button)
+ {
+ if (array_ndx != NULL)
+ return ReportActionNotArray(action->type, field);
+ if (!ExprResolveInteger
+ (value, &rtrn, SimpleLookup, (XPointer) btnNames))
+ return ReportMismatch(action->type, field,
+ "integer (range 1..5)");
+ if ((rtrn.ival < 0) || (rtrn.ival > 5))
+ {
+ ERROR("Button must specify default or be in the range 1..5\n");
+ ACTION1("Illegal button value %d ignored\n", rtrn.ival);
+ return False;
+ }
+ act->button = rtrn.ival;
+ return True;
+ }
+ else if ((action->type == XkbSA_LockPtrBtn) && (field == F_Affect))
+ {
+ if (array_ndx != NULL)
+ return ReportActionNotArray(action->type, field);
+ if (!ExprResolveEnum(value, &rtrn, lockWhich))
+ return ReportMismatch(action->type, field, "lock or unlock");
+ act->flags &= ~(XkbSA_LockNoLock | XkbSA_LockNoUnlock);
+ act->flags |= rtrn.ival;
+ return True;
+ }
+ else if (field == F_Count)
+ {
+ if (array_ndx != NULL)
+ return ReportActionNotArray(action->type, field);
+ if (!ExprResolveInteger
+ (value, &rtrn, SimpleLookup, (XPointer) btnNames))
+ return ReportMismatch(action->type, field, "integer");
+ if ((rtrn.ival < 0) || (rtrn.ival > 255))
+ {
+ ERROR("The count field must have a value in the range 0..255\n");
+ ACTION1("Illegal count %d ignored\n", rtrn.ival);
+ return False;
+ }
+ act->count = rtrn.ival;
+ return True;
+ }
+ return ReportIllegal(action->type, field);
+}
+
+static LookupEntry ptrDflts[] = {
+ {"dfltbtn", XkbSA_AffectDfltBtn},
+ {"defaultbutton", XkbSA_AffectDfltBtn},
+ {"button", XkbSA_AffectDfltBtn},
+ {NULL, 0}
+};
+
+static Bool
+HandleSetPtrDflt(XkbDescPtr xkb,
+ XkbAnyAction * action,
+ unsigned field, ExprDef * array_ndx, ExprDef * value)
+{
+ ExprResult rtrn;
+ XkbPtrDfltAction *act;
+
+ act = (XkbPtrDfltAction *) action;
+ if (field == F_Affect)
+ {
+ if (array_ndx != NULL)
+ return ReportActionNotArray(action->type, field);
+ if (!ExprResolveEnum(value, &rtrn, ptrDflts))
+ return ReportMismatch(action->type, field, "pointer component");
+ act->affect = rtrn.uval;
+ return True;
+ }
+ else if ((field == F_Button) || (field == F_Value))
+ {
+ ExprDef *btn;
+ if (array_ndx != NULL)
+ return ReportActionNotArray(action->type, field);
+ if ((value->op == OpNegate) || (value->op == OpUnaryPlus))
+ {
+ act->flags &= ~XkbSA_DfltBtnAbsolute;
+ btn = value->value.child;
+ }
+ else
+ {
+ act->flags |= XkbSA_DfltBtnAbsolute;
+ btn = value;
+ }
+
+ if (!ExprResolveInteger
+ (btn, &rtrn, SimpleLookup, (XPointer) btnNames))
+ return ReportMismatch(action->type, field,
+ "integer (range 1..5)");
+ if ((rtrn.ival < 0) || (rtrn.ival > 5))
+ {
+ ERROR("New default button value must be in the range 1..5\n");
+ ACTION1("Illegal default button value %d ignored\n", rtrn.ival);
+ return False;
+ }
+ if (rtrn.ival == 0)
+ {
+ ERROR("Cannot set default pointer button to \"default\"\n");
+ ACTION("Illegal default button setting ignored\n");
+ return False;
+ }
+ if (value->op == OpNegate)
+ XkbSASetPtrDfltValue(act, -rtrn.ival);
+ else
+ XkbSASetPtrDfltValue(act, rtrn.ival);
+ return True;
+ }
+ return ReportIllegal(action->type, field);
+}
+
+static LookupEntry isoNames[] = {
+ {"mods", XkbSA_ISONoAffectMods},
+ {"modifiers", XkbSA_ISONoAffectMods},
+ {"group", XkbSA_ISONoAffectGroup},
+ {"groups", XkbSA_ISONoAffectGroup},
+ {"ptr", XkbSA_ISONoAffectPtr},
+ {"pointer", XkbSA_ISONoAffectPtr},
+ {"ctrls", XkbSA_ISONoAffectCtrls},
+ {"controls", XkbSA_ISONoAffectCtrls},
+ {"all", ~((unsigned) 0)},
+ {"none", 0},
+ {NULL, 0},
+};
+
+static Bool
+HandleISOLock(XkbDescPtr xkb,
+ XkbAnyAction * action,
+ unsigned field, ExprDef * array_ndx, ExprDef * value)
+{
+ ExprResult rtrn;
+ XkbISOAction *act;
+ unsigned flags, mods;
+ int group;
+
+ act = (XkbISOAction *) action;
+ switch (field)
+ {
+ case F_Modifiers:
+ if (array_ndx != NULL)
+ return ReportActionNotArray(action->type, field);
+ flags = act->flags;
+ if (CheckModifierField(xkb, action->type, value, &flags, &mods))
+ {
+ act->flags = flags & (~XkbSA_ISODfltIsGroup);
+ act->real_mods = mods & 0xff;
+ mods = (mods >> 8) & 0xff;
+ XkbSetModActionVMods(act, mods);
+ return True;
+ }
+ return False;
+ case F_Group:
+ if (array_ndx != NULL)
+ return ReportActionNotArray(action->type, field);
+ flags = act->flags;
+ if (CheckGroupField(action->type, value, &flags, &group))
+ {
+ act->flags = flags | XkbSA_ISODfltIsGroup;
+ XkbSASetGroup(act, group);
+ return True;
+ }
+ return False;
+ case F_Affect:
+ if (array_ndx != NULL)
+ return ReportActionNotArray(action->type, field);
+ if (!ExprResolveMask(value, &rtrn, SimpleLookup, (XPointer) isoNames))
+ return ReportMismatch(action->type, field, "keyboard component");
+ act->affect = (~rtrn.uval) & XkbSA_ISOAffectMask;
+ return True;
+ }
+ return ReportIllegal(action->type, field);
+}
+
+static Bool
+HandleSwitchScreen(XkbDescPtr xkb,
+ XkbAnyAction * action,
+ unsigned field, ExprDef * array_ndx, ExprDef * value)
+{
+ ExprResult rtrn;
+ XkbSwitchScreenAction *act;
+
+ act = (XkbSwitchScreenAction *) action;
+ if (field == F_Screen)
+ {
+ ExprDef *scrn;
+ if (array_ndx != NULL)
+ return ReportActionNotArray(action->type, field);
+ if ((value->op == OpNegate) || (value->op == OpUnaryPlus))
+ {
+ act->flags &= ~XkbSA_SwitchAbsolute;
+ scrn = value->value.child;
+ }
+ else
+ {
+ act->flags |= XkbSA_SwitchAbsolute;
+ scrn = value;
+ }
+
+ if (!ExprResolveInteger(scrn, &rtrn, NULL, NULL))
+ return ReportMismatch(action->type, field, "integer (0..255)");
+ if ((rtrn.ival < 0) || (rtrn.ival > 255))
+ {
+ ERROR("Screen index must be in the range 1..255\n");
+ ACTION1("Illegal screen value %d ignored\n", rtrn.ival);
+ return False;
+ }
+ if (value->op == OpNegate)
+ XkbSASetScreen(act, -rtrn.ival);
+ else
+ XkbSASetScreen(act, rtrn.ival);
+ return True;
+ }
+ else if (field == F_Same)
+ {
+ if (array_ndx != NULL)
+ return ReportActionNotArray(action->type, field);
+ if (!ExprResolveBoolean(value, &rtrn, NULL, NULL))
+ return ReportMismatch(action->type, field, "boolean");
+ if (rtrn.uval)
+ act->flags &= ~XkbSA_SwitchApplication;
+ else
+ act->flags |= XkbSA_SwitchApplication;
+ return True;
+ }
+ return ReportIllegal(action->type, field);
+}
+
+LookupEntry ctrlNames[] = {
+ {"repeatkeys", XkbRepeatKeysMask}
+ ,
+ {"repeat", XkbRepeatKeysMask}
+ ,
+ {"autorepeat", XkbRepeatKeysMask}
+ ,
+ {"slowkeys", XkbSlowKeysMask}
+ ,
+ {"bouncekeys", XkbBounceKeysMask}
+ ,
+ {"stickykeys", XkbStickyKeysMask}
+ ,
+ {"mousekeys", XkbMouseKeysMask}
+ ,
+ {"mousekeysaccel", XkbMouseKeysAccelMask}
+ ,
+ {"accessxkeys", XkbAccessXKeysMask}
+ ,
+ {"accessxtimeout", XkbAccessXTimeoutMask}
+ ,
+ {"accessxfeedback", XkbAccessXFeedbackMask}
+ ,
+ {"audiblebell", XkbAudibleBellMask}
+ ,
+ {"overlay1", XkbOverlay1Mask}
+ ,
+ {"overlay2", XkbOverlay2Mask}
+ ,
+ {"ignoregrouplock", XkbIgnoreGroupLockMask}
+ ,
+ {"all", XkbAllBooleanCtrlsMask}
+ ,
+ {"none", 0}
+ ,
+ {NULL, 0}
+};
+
+static Bool
+HandleSetLockControls(XkbDescPtr xkb,
+ XkbAnyAction * action,
+ unsigned field, ExprDef * array_ndx, ExprDef * value)
+{
+ ExprResult rtrn;
+ XkbCtrlsAction *act;
+
+ act = (XkbCtrlsAction *) action;
+ if (field == F_Controls)
+ {
+ if (array_ndx != NULL)
+ return ReportActionNotArray(action->type, field);
+ if (!ExprResolveMask
+ (value, &rtrn, SimpleLookup, (XPointer) ctrlNames))
+ return ReportMismatch(action->type, field, "controls mask");
+ XkbActionSetCtrls(act, rtrn.uval);
+ return True;
+ }
+ return ReportIllegal(action->type, field);
+}
+
+static LookupEntry evNames[] = {
+ {"press", XkbSA_MessageOnPress},
+ {"keypress", XkbSA_MessageOnPress},
+ {"release", XkbSA_MessageOnRelease},
+ {"keyrelease", XkbSA_MessageOnRelease},
+ {"all", XkbSA_MessageOnPress | XkbSA_MessageOnRelease},
+ {"none", 0},
+ {NULL, 0}
+};
+
+static Bool
+HandleActionMessage(XkbDescPtr xkb,
+ XkbAnyAction * action,
+ unsigned field, ExprDef * array_ndx, ExprDef * value)
+{
+ ExprResult rtrn;
+ XkbMessageAction *act;
+
+ act = (XkbMessageAction *) action;
+ switch (field)
+ {
+ case F_Report:
+ if (array_ndx != NULL)
+ return ReportActionNotArray(action->type, field);
+ if (!ExprResolveMask(value, &rtrn, SimpleLookup, (XPointer) evNames))
+ return ReportMismatch(action->type, field, "key event mask");
+ act->flags &= ~(XkbSA_MessageOnPress | XkbSA_MessageOnRelease);
+ act->flags =
+ rtrn.uval & (XkbSA_MessageOnPress | XkbSA_MessageOnRelease);
+ return True;
+ case F_GenKeyEvent:
+ if (array_ndx != NULL)
+ return ReportActionNotArray(action->type, field);
+ if (!ExprResolveBoolean(value, &rtrn, NULL, NULL))
+ return ReportMismatch(action->type, field, "boolean");
+ if (rtrn.uval)
+ act->flags |= XkbSA_MessageGenKeyEvent;
+ else
+ act->flags &= ~XkbSA_MessageGenKeyEvent;
+ return True;
+ case F_Data:
+ if (array_ndx == NULL)
+ {
+ if (!ExprResolveString(value, &rtrn, NULL, NULL))
+ return ReportMismatch(action->type, field, "string");
+ else
+ {
+ int len = strlen(rtrn.str);
+ if ((len < 1) || (len > 6))
+ {
+ WARN("An action message can hold only 6 bytes\n");
+ ACTION1("Extra %d bytes ignored\n", len - 6);
+ }
+ strncpy((char *) act->message, rtrn.str, 6);
+ }
+ return True;
+ }
+ else
+ {
+ unsigned ndx;
+ if (!ExprResolveInteger(array_ndx, &rtrn, NULL, NULL))
+ {
+ ERROR("Array subscript must be integer\n");
+ ACTION("Illegal subscript ignored\n");
+ return False;
+ }
+ ndx = rtrn.uval;
+ if (ndx > 5)
+ {
+ ERROR("An action message is at most 6 bytes long\n");
+ ACTION1("Attempt to use data[%d] ignored\n", ndx);
+ return False;
+ }
+ if (!ExprResolveInteger(value, &rtrn, NULL, NULL))
+ return ReportMismatch(action->type, field, "integer");
+ if ((rtrn.ival < 0) || (rtrn.ival > 255))
+ {
+ ERROR("Message data must be in the range 0..255\n");
+ ACTION1("Illegal datum %d ignored\n", rtrn.ival);
+ return False;
+ }
+ act->message[ndx] = rtrn.uval;
+ }
+ return True;
+ }
+ return ReportIllegal(action->type, field);
+}
+
+static Bool
+HandleRedirectKey(XkbDescPtr xkb,
+ XkbAnyAction * action,
+ unsigned field, ExprDef * array_ndx, ExprDef * value)
+{
+ ExprResult rtrn;
+ XkbRedirectKeyAction *act;
+ unsigned t1, t2, vmods, vmask;
+ unsigned long tmp;
+
+ if (array_ndx != NULL)
+ return ReportActionNotArray(action->type, field);
+
+ act = (XkbRedirectKeyAction *) action;
+ switch (field)
+ {
+ case F_Keycode:
+ if (!ExprResolveKeyName(value, &rtrn, NULL, NULL))
+ return ReportMismatch(action->type, field, "key name");
+ tmp = KeyNameToLong(rtrn.keyName.name);
+ if (!FindNamedKey(xkb, tmp, &t1, True, CreateKeyNames(xkb), 0))
+ {
+ return ReportNotFound(action->type, field, "Key",
+ XkbKeyNameText(rtrn.keyName.name,
+ XkbMessage));
+ }
+ act->new_key = t1;
+ return True;
+ case F_ModsToClear:
+ case F_Modifiers:
+ t1 = 0;
+ if (CheckModifierField(xkb, action->type, value, &t1, &t2))
+ {
+ act->mods_mask |= (t2 & 0xff);
+ if (field == F_Modifiers)
+ act->mods |= (t2 & 0xff);
+ else
+ act->mods &= ~(t2 & 0xff);
+
+ t2 = (t2 >> 8) & 0xffff;
+ vmods = XkbSARedirectVMods(act);
+ vmask = XkbSARedirectVModsMask(act);
+ vmask |= t2;
+ if (field == F_Modifiers)
+ vmods |= t2;
+ else
+ vmods &= ~t2;
+ XkbSARedirectSetVMods(act, vmods);
+ XkbSARedirectSetVModsMask(act, vmask);
+ return True;
+ }
+ return True;
+ }
+ return ReportIllegal(action->type, field);
+}
+
+static Bool
+HandleDeviceBtn(XkbDescPtr xkb,
+ XkbAnyAction * action,
+ unsigned field, ExprDef * array_ndx, ExprDef * value)
+{
+ ExprResult rtrn;
+ XkbDeviceBtnAction *act;
+
+ act = (XkbDeviceBtnAction *) action;
+ if (field == F_Button)
+ {
+ if (array_ndx != NULL)
+ return ReportActionNotArray(action->type, field);
+ if (!ExprResolveInteger(value, &rtrn, NULL, NULL))
+ return ReportMismatch(action->type, field,
+ "integer (range 1..255)");
+ if ((rtrn.ival < 0) || (rtrn.ival > 255))
+ {
+ ERROR("Button must specify default or be in the range 1..255\n");
+ ACTION1("Illegal button value %d ignored\n", rtrn.ival);
+ return False;
+ }
+ act->button = rtrn.ival;
+ return True;
+ }
+ else if ((action->type == XkbSA_LockDeviceBtn) && (field == F_Affect))
+ {
+ if (array_ndx != NULL)
+ return ReportActionNotArray(action->type, field);
+ if (!ExprResolveEnum(value, &rtrn, lockWhich))
+ return ReportMismatch(action->type, field, "lock or unlock");
+ act->flags &= ~(XkbSA_LockNoLock | XkbSA_LockNoUnlock);
+ act->flags |= rtrn.ival;
+ return True;
+ }
+ else if (field == F_Count)
+ {
+ if (array_ndx != NULL)
+ return ReportActionNotArray(action->type, field);
+ if (!ExprResolveInteger
+ (value, &rtrn, SimpleLookup, (XPointer) btnNames))
+ return ReportMismatch(action->type, field, "integer");
+ if ((rtrn.ival < 0) || (rtrn.ival > 255))
+ {
+ ERROR("The count field must have a value in the range 0..255\n");
+ ACTION1("Illegal count %d ignored\n", rtrn.ival);
+ return False;
+ }
+ act->count = rtrn.ival;
+ return True;
+ }
+ else if (field == F_Device)
+ {
+ if (array_ndx != NULL)
+ return ReportActionNotArray(action->type, field);
+ if (!ExprResolveInteger(value, &rtrn, NULL, NULL))
+ return ReportMismatch(action->type, field,
+ "integer (range 1..255)");
+ if ((rtrn.ival < 0) || (rtrn.ival > 255))
+ {
+ ERROR("Device must specify default or be in the range 1..255\n");
+ ACTION1("Illegal device value %d ignored\n", rtrn.ival);
+ return False;
+ }
+ act->device = rtrn.ival;
+ return True;
+ }
+ return ReportIllegal(action->type, field);
+}
+
+static Bool
+HandleDeviceValuator(XkbDescPtr xkb,
+ XkbAnyAction * action,
+ unsigned field, ExprDef * array_ndx, ExprDef * value)
+{
+#if 0
+ ExprResult rtrn;
+ XkbDeviceValuatorAction *act;
+
+ act = (XkbDeviceValuatorAction *) action;
+ /* XXX - Not yet implemented */
+#endif
+ return False;
+}
+
+static Bool
+HandlePrivate(XkbDescPtr xkb,
+ XkbAnyAction * action,
+ unsigned field, ExprDef * array_ndx, ExprDef * value)
+{
+ ExprResult rtrn;
+
+ switch (field)
+ {
+ case F_Type:
+ if (!ExprResolveInteger(value, &rtrn, NULL, NULL))
+ return ReportMismatch(PrivateAction, field, "integer");
+ if ((rtrn.ival < 0) || (rtrn.ival > 255))
+ {
+ ERROR("Private action type must be in the range 0..255\n");
+ ACTION1("Illegal type %d ignored\n", rtrn.ival);
+ return False;
+ }
+ action->type = rtrn.uval;
+ return True;
+ case F_Data:
+ if (array_ndx == NULL)
+ {
+ if (!ExprResolveString(value, &rtrn, NULL, NULL))
+ return ReportMismatch(action->type, field, "string");
+ else
+ {
+ int len = strlen(rtrn.str);
+ if ((len < 1) || (len > 7))
+ {
+ WARN("A private action has 7 data bytes\n");
+ ACTION1("Extra %d bytes ignored\n", len - 6);
+ return False;
+ }
+ strncpy((char *) action->data, rtrn.str, 7);
+ }
+ return True;
+ }
+ else
+ {
+ unsigned ndx;
+ if (!ExprResolveInteger(array_ndx, &rtrn, NULL, NULL))
+ {
+ ERROR("Array subscript must be integer\n");
+ ACTION("Illegal subscript ignored\n");
+ return False;
+ }
+ ndx = rtrn.uval;
+ if (ndx > 6)
+ {
+ ERROR("The data for a private action is 7 bytes long\n");
+ ACTION1("Attempt to use data[%d] ignored\n", ndx);
+ return False;
+ }
+ if (!ExprResolveInteger(value, &rtrn, NULL, NULL))
+ return ReportMismatch(action->type, field, "integer");
+ if ((rtrn.ival < 0) || (rtrn.ival > 255))
+ {
+ ERROR("All data for a private action must be 0..255\n");
+ ACTION1("Illegal datum %d ignored\n", rtrn.ival);
+ return False;
+ }
+ action->data[ndx] = rtrn.uval;
+ return True;
+ }
+ }
+ return ReportIllegal(PrivateAction, field);
+}
+
+typedef Bool(*actionHandler) (XkbDescPtr /* xkb */ ,
+ XkbAnyAction * /* action */ ,
+ unsigned /* field */ ,
+ ExprDef * /* array_ndx */ ,
+ ExprDef * /* value */
+ );
+
+static actionHandler handleAction[XkbSA_NumActions + 1] = {
+ HandleNoAction /* NoAction */ ,
+ HandleSetLatchMods /* SetMods */ ,
+ HandleSetLatchMods /* LatchMods */ ,
+ HandleLockMods /* LockMods */ ,
+ HandleSetLatchGroup /* SetGroup */ ,
+ HandleSetLatchGroup /* LatchGroup */ ,
+ HandleLockGroup /* LockGroup */ ,
+ HandleMovePtr /* MovePtr */ ,
+ HandlePtrBtn /* PtrBtn */ ,
+ HandlePtrBtn /* LockPtrBtn */ ,
+ HandleSetPtrDflt /* SetPtrDflt */ ,
+ HandleISOLock /* ISOLock */ ,
+ HandleNoAction /* Terminate */ ,
+ HandleSwitchScreen /* SwitchScreen */ ,
+ HandleSetLockControls /* SetControls */ ,
+ HandleSetLockControls /* LockControls */ ,
+ HandleActionMessage /* ActionMessage */ ,
+ HandleRedirectKey /* RedirectKey */ ,
+ HandleDeviceBtn /* DeviceBtn */ ,
+ HandleDeviceBtn /* LockDeviceBtn */ ,
+ HandleDeviceValuator /* DeviceValuatr */ ,
+ HandlePrivate /* Private */
+};
+
+/***====================================================================***/
+
+static void
+ApplyActionFactoryDefaults(XkbAction * action)
+{
+ if (action->type == XkbSA_SetPtrDflt)
+ { /* increment default button */
+ action->dflt.affect = XkbSA_AffectDfltBtn;
+ action->dflt.flags = 0;
+ XkbSASetPtrDfltValue(&action->dflt, 1);
+ }
+ else if (action->type == XkbSA_ISOLock)
+ {
+ action->iso.real_mods = LockMask;
+ }
+ return;
+}
+
+
+int
+HandleActionDef(ExprDef * def,
+ XkbDescPtr xkb,
+ XkbAnyAction * action, unsigned mergeMode, ActionInfo * info)
+{
+ ExprDef *arg;
+ register char *str;
+ unsigned tmp, hndlrType;
+
+ if (!actionsInitialized)
+ ActionsInit();
+
+ if (def->op != ExprActionDecl)
+ {
+ ERROR1("Expected an action definition, found %s\n",
+ exprOpText(def->op));
+ return False;
+ }
+ str = XkbAtomGetString(NULL, def->value.action.name);
+ if (!str)
+ {
+ WSGO("Missing name in action definition!!\n");
+ return False;
+ }
+ if (!stringToAction(str, &tmp))
+ {
+ ERROR1("Unknown action %s\n", str);
+ return False;
+ }
+ action->type = hndlrType = tmp;
+ if (action->type != XkbSA_NoAction)
+ {
+ ApplyActionFactoryDefaults((XkbAction *) action);
+ while (info)
+ {
+ if ((info->action == XkbSA_NoAction)
+ || (info->action == hndlrType))
+ {
+ if (!(*handleAction[hndlrType]) (xkb, action,
+ info->field,
+ info->array_ndx,
+ info->value))
+ {
+ return False;
+ }
+ }
+ info = info->next;
+ }
+ }
+ for (arg = def->value.action.args; arg != NULL;
+ arg = (ExprDef *) arg->common.next)
+ {
+ ExprDef *field, *value, *arrayRtrn;
+ ExprResult elemRtrn, fieldRtrn;
+ unsigned fieldNdx;
+
+ if (arg->op == OpAssign)
+ {
+ field = arg->value.binary.left;
+ value = arg->value.binary.right;
+ }
+ else
+ {
+ if ((arg->op == OpNot) || (arg->op == OpInvert))
+ {
+ field = arg->value.child;
+ value = &constFalse;
+ }
+ else
+ {
+ field = arg;
+ value = &constTrue;
+ }
+ }
+ if (!ExprResolveLhs(field, &elemRtrn, &fieldRtrn, &arrayRtrn))
+ return False; /* internal error -- already reported */
+
+ if (elemRtrn.str != NULL)
+ {
+ ERROR("Cannot change defaults in an action definition\n");
+ ACTION2("Ignoring attempt to change %s.%s\n", elemRtrn.str,
+ fieldRtrn.str);
+ return False;
+ }
+ if (!stringToField(fieldRtrn.str, &fieldNdx))
+ {
+ ERROR1("Unknown field name %s\n", uStringText(fieldRtrn.str));
+ return False;
+ }
+ if (!(*handleAction[hndlrType])
+ (xkb, action, fieldNdx, arrayRtrn, value))
+ {
+ return False;
+ }
+ }
+ return True;
+}
+
+/***====================================================================***/
+
+int
+SetActionField(XkbDescPtr xkb,
+ char *elem,
+ char *field,
+ ExprDef * array_ndx, ExprDef * value, ActionInfo ** info_rtrn)
+{
+ ActionInfo *new, *old;
+
+ if (!actionsInitialized)
+ ActionsInit();
+
+ new = uTypedAlloc(ActionInfo);
+ if (new == NULL)
+ {
+ WSGO("Couldn't allocate space for action default\n");
+ return False;
+ }
+ if (uStrCaseCmp(elem, "action") == 0)
+ new->action = XkbSA_NoAction;
+ else
+ {
+ if (!stringToAction(elem, &new->action))
+ return False;
+ if (new->action == XkbSA_NoAction)
+ {
+ ERROR1("\"%s\" is not a valid field in a NoAction action\n",
+ field);
+ return False;
+ }
+ }
+ if (!stringToField(field, &new->field))
+ {
+ ERROR1("\"%s\" is not a legal field name\n", field);
+ return False;
+ }
+ new->array_ndx = array_ndx;
+ new->value = value;
+ new->next = NULL;
+ old = *info_rtrn;
+ while ((old) && (old->next))
+ old = old->next;
+ if (old == NULL)
+ *info_rtrn = new;
+ else
+ old->next = new;
+ return True;
+}
+
+/***====================================================================***/
+
+void
+ActionsInit(void)
+{
+ if (!actionsInitialized)
+ {
+ bzero((char *) &constTrue, sizeof(constTrue));
+ bzero((char *) &constFalse, sizeof(constFalse));
+ constTrue.common.stmtType = StmtExpr;
+ constTrue.common.next = NULL;
+ constTrue.op = ExprIdent;
+ constTrue.type = TypeBoolean;
+ constTrue.value.str = XkbInternAtom(NULL, "true", False);
+ constFalse.common.stmtType = StmtExpr;
+ constFalse.common.next = NULL;
+ constFalse.op = ExprIdent;
+ constFalse.type = TypeBoolean;
+ constFalse.value.str = XkbInternAtom(NULL, "false", False);
+ actionsInitialized = 1;
+ }
+ return;
+}
diff --git a/xkbcomp/action.h b/xkbcomp/action.h
index 61666e8a1..2fb7a5eb9 100644
--- a/xkbcomp/action.h
+++ b/xkbcomp/action.h
@@ -1,86 +1,86 @@
-/************************************************************
- Copyright (c) 1994 by Silicon Graphics Computer Systems, Inc.
-
- Permission to use, copy, modify, and distribute this
- software and its documentation for any purpose and without
- fee is hereby granted, provided that the above copyright
- notice appear in all copies and that both that copyright
- notice and this permission notice appear in supporting
- documentation, and that the name of Silicon Graphics not be
- used in advertising or publicity pertaining to distribution
- of the software without specific prior written permission.
- Silicon Graphics makes no representation about the suitability
- of this software for any purpose. It is provided "as is"
- without any express or implied warranty.
-
- SILICON GRAPHICS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS
- SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
- AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON
- GRAPHICS BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL
- DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
- DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
- OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH
- THE USE OR PERFORMANCE OF THIS SOFTWARE.
-
- ********************************************************/
-
-#ifndef ACTION_H
-#define ACTION_H 1
-
-#define F_ClearLocks 0
-#define F_LatchToLock 1
-#define F_GenKeyEvent 2
-#define F_Report 3
-#define F_Default 4
-#define F_Affect 5
-#define F_Increment 6
-#define F_Modifiers 7
-#define F_Group 8
-#define F_X 9
-#define F_Y 10
-#define F_Accel 11
-#define F_Button 12
-#define F_Value 13
-#define F_Controls 14
-#define F_Type 15
-#define F_Count 16
-#define F_Screen 17
-#define F_Same 18
-#define F_Data 19
-#define F_Device 20
-#define F_Keycode 21
-#define F_ModsToClear 22
-#define F_LastField F_ModsToClear
-#define F_NumFields (F_LastField+1)
-
-#define PrivateAction (XkbSA_LastAction+1)
-
-typedef struct _ActionInfo
-{
- unsigned action;
- unsigned field;
- ExprDef *array_ndx;
- ExprDef *value;
- struct _ActionInfo *next;
-} ActionInfo;
-
-extern int HandleActionDef(ExprDef * /* def */ ,
- XkbDescPtr /* xkb */ ,
- XkbAnyAction * /* action */ ,
- unsigned /* mergeMode */ ,
- ActionInfo * /* info */
- );
-
-extern int SetActionField(XkbDescPtr /* xkb */ ,
- char * /* elem */ ,
- char * /* field */ ,
- ExprDef * /* index */ ,
- ExprDef * /* value */ ,
- ActionInfo ** /* info_rtrn */
- );
-
-extern void ActionsInit(void);
-
-extern LookupEntry ctrlNames[];
-
-#endif /* ACTION_H */
+/************************************************************
+ Copyright (c) 1994 by Silicon Graphics Computer Systems, Inc.
+
+ Permission to use, copy, modify, and distribute this
+ software and its documentation for any purpose and without
+ fee is hereby granted, provided that the above copyright
+ notice appear in all copies and that both that copyright
+ notice and this permission notice appear in supporting
+ documentation, and that the name of Silicon Graphics not be
+ used in advertising or publicity pertaining to distribution
+ of the software without specific prior written permission.
+ Silicon Graphics makes no representation about the suitability
+ of this software for any purpose. It is provided "as is"
+ without any express or implied warranty.
+
+ SILICON GRAPHICS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS
+ SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
+ AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON
+ GRAPHICS BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL
+ DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
+ DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
+ OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH
+ THE USE OR PERFORMANCE OF THIS SOFTWARE.
+
+ ********************************************************/
+
+#ifndef ACTION_H
+#define ACTION_H 1
+
+#define F_ClearLocks 0
+#define F_LatchToLock 1
+#define F_GenKeyEvent 2
+#define F_Report 3
+#define F_Default 4
+#define F_Affect 5
+#define F_Increment 6
+#define F_Modifiers 7
+#define F_Group 8
+#define F_X 9
+#define F_Y 10
+#define F_Accel 11
+#define F_Button 12
+#define F_Value 13
+#define F_Controls 14
+#define F_Type 15
+#define F_Count 16
+#define F_Screen 17
+#define F_Same 18
+#define F_Data 19
+#define F_Device 20
+#define F_Keycode 21
+#define F_ModsToClear 22
+#define F_LastField F_ModsToClear
+#define F_NumFields (F_LastField+1)
+
+#define PrivateAction (XkbSA_LastAction+1)
+
+typedef struct _ActionInfo
+{
+ unsigned action;
+ unsigned field;
+ ExprDef *array_ndx;
+ ExprDef *value;
+ struct _ActionInfo *next;
+} ActionInfo;
+
+extern int HandleActionDef(ExprDef * /* def */ ,
+ XkbDescPtr /* xkb */ ,
+ XkbAnyAction * /* action */ ,
+ unsigned /* mergeMode */ ,
+ ActionInfo * /* info */
+ );
+
+extern int SetActionField(XkbDescPtr /* xkb */ ,
+ char * /* elem */ ,
+ char * /* field */ ,
+ ExprDef * /* index */ ,
+ ExprDef * /* value */ ,
+ ActionInfo ** /* info_rtrn */
+ );
+
+extern void ActionsInit(void);
+
+extern LookupEntry ctrlNames[];
+
+#endif /* ACTION_H */
diff --git a/xkbcomp/alias.h b/xkbcomp/alias.h
index 7603c273c..b6fac5bfa 100644
--- a/xkbcomp/alias.h
+++ b/xkbcomp/alias.h
@@ -1,56 +1,56 @@
-/************************************************************
- Copyright (c) 1995 by Silicon Graphics Computer Systems, Inc.
-
- Permission to use, copy, modify, and distribute this
- software and its documentation for any purpose and without
- fee is hereby granted, provided that the above copyright
- notice appear in all copies and that both that copyright
- notice and this permission notice appear in supporting
- documentation, and that the name of Silicon Graphics not be
- used in advertising or publicity pertaining to distribution
- of the software without specific prior written permission.
- Silicon Graphics makes no representation about the suitability
- of this software for any purpose. It is provided "as is"
- without any express or implied warranty.
-
- SILICON GRAPHICS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS
- SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
- AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON
- GRAPHICS BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL
- DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
- DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
- OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH
- THE USE OR PERFORMANCE OF THIS SOFTWARE.
-
- ********************************************************/
-
-#ifndef ALIAS_H
-#define ALIAS_H 1
-
-typedef struct _AliasInfo
-{
- CommonInfo def;
- char alias[XkbKeyNameLength + 1];
- char real[XkbKeyNameLength + 1];
-} AliasInfo;
-
-extern int HandleAliasDef(KeyAliasDef * /* def */ ,
- unsigned /* merge */ ,
- unsigned /* file_id */ ,
- AliasInfo ** /* info */
- );
-
-extern void ClearAliases(AliasInfo ** /* info */
- );
-
-extern Bool MergeAliases(AliasInfo ** /* into */ ,
- AliasInfo ** /* merge */ ,
- unsigned /* how_merge */
- );
-
-extern int ApplyAliases(XkbDescPtr /* xkb */ ,
- Bool /* toGeom */ ,
- AliasInfo ** /* info */
- );
-
-#endif /* ALIAS_H */
+/************************************************************
+ Copyright (c) 1995 by Silicon Graphics Computer Systems, Inc.
+
+ Permission to use, copy, modify, and distribute this
+ software and its documentation for any purpose and without
+ fee is hereby granted, provided that the above copyright
+ notice appear in all copies and that both that copyright
+ notice and this permission notice appear in supporting
+ documentation, and that the name of Silicon Graphics not be
+ used in advertising or publicity pertaining to distribution
+ of the software without specific prior written permission.
+ Silicon Graphics makes no representation about the suitability
+ of this software for any purpose. It is provided "as is"
+ without any express or implied warranty.
+
+ SILICON GRAPHICS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS
+ SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
+ AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON
+ GRAPHICS BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL
+ DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
+ DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
+ OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH
+ THE USE OR PERFORMANCE OF THIS SOFTWARE.
+
+ ********************************************************/
+
+#ifndef ALIAS_H
+#define ALIAS_H 1
+
+typedef struct _AliasInfo
+{
+ CommonInfo def;
+ char alias[XkbKeyNameLength + 1];
+ char real[XkbKeyNameLength + 1];
+} AliasInfo;
+
+extern int HandleAliasDef(KeyAliasDef * /* def */ ,
+ unsigned /* merge */ ,
+ unsigned /* file_id */ ,
+ AliasInfo ** /* info */
+ );
+
+extern void ClearAliases(AliasInfo ** /* info */
+ );
+
+extern Bool MergeAliases(AliasInfo ** /* into */ ,
+ AliasInfo ** /* merge */ ,
+ unsigned /* how_merge */
+ );
+
+extern int ApplyAliases(XkbDescPtr /* xkb */ ,
+ Bool /* toGeom */ ,
+ AliasInfo ** /* info */
+ );
+
+#endif /* ALIAS_H */
diff --git a/xkbcomp/autogen.sh b/xkbcomp/autogen.sh
index f55f8fb7b..e81f98910 100644
--- a/xkbcomp/autogen.sh
+++ b/xkbcomp/autogen.sh
@@ -1,13 +1,13 @@
-#! /bin/sh
-
-srcdir=`dirname $0`
-test -z "$srcdir" && srcdir=.
-
-ORIGDIR=`pwd`
-cd $srcdir
-
-autoreconf -v --install || exit 1
-cd $ORIGDIR || exit $?
-
-$srcdir/configure --enable-maintainer-mode "$@"
-
+#! /bin/sh
+
+srcdir=`dirname $0`
+test -z "$srcdir" && srcdir=.
+
+ORIGDIR=`pwd`
+cd $srcdir
+
+autoreconf -v --install || exit 1
+cd $ORIGDIR || exit $?
+
+$srcdir/configure --enable-maintainer-mode "$@"
+
diff --git a/xkbcomp/compat.h b/xkbcomp/compat.h
index 702883275..799b215ee 100644
--- a/xkbcomp/compat.h
+++ b/xkbcomp/compat.h
@@ -1,7 +1,7 @@
-
-#ifndef COMPAT_H
-#define COMPAT_H 1
-
-extern LookupEntry groupNames[];
-
-#endif /* COMPAT_H */
+
+#ifndef COMPAT_H
+#define COMPAT_H 1
+
+extern LookupEntry groupNames[];
+
+#endif /* COMPAT_H */
diff --git a/xkbcomp/expr.c b/xkbcomp/expr.c
index 33a2dddee..96fd95675 100644
--- a/xkbcomp/expr.c
+++ b/xkbcomp/expr.c
@@ -1,1065 +1,1065 @@
-/************************************************************
- Copyright (c) 1994 by Silicon Graphics Computer Systems, Inc.
-
- Permission to use, copy, modify, and distribute this
- software and its documentation for any purpose and without
- fee is hereby granted, provided that the above copyright
- notice appear in all copies and that both that copyright
- notice and this permission notice appear in supporting
- documentation, and that the name of Silicon Graphics not be
- used in advertising or publicity pertaining to distribution
- of the software without specific prior written permission.
- Silicon Graphics makes no representation about the suitability
- of this software for any purpose. It is provided "as is"
- without any express or implied warranty.
-
- SILICON GRAPHICS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS
- SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
- AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON
- GRAPHICS BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL
- DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
- DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
- OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH
- THE USE OR PERFORMANCE OF THIS SOFTWARE.
-
- ********************************************************/
-
-#include "xkbcomp.h"
-#include "tokens.h"
-#include "expr.h"
-
-#include <ctype.h>
-
-/***====================================================================***/
-
-char *
-exprOpText(unsigned type)
-{
- static char buf[32];
-
- switch (type)
- {
- case ExprValue:
- strcpy(buf, "literal");
- break;
- case ExprIdent:
- strcpy(buf, "identifier");
- break;
- case ExprActionDecl:
- strcpy(buf, "action declaration");
- break;
- case ExprFieldRef:
- strcpy(buf, "field reference");
- break;
- case ExprArrayRef:
- strcpy(buf, "array reference");
- break;
- case ExprKeysymList:
- strcpy(buf, "list of keysyms");
- break;
- case ExprActionList:
- strcpy(buf, "list of actions");
- break;
- case OpAdd:
- strcpy(buf, "addition");
- break;
- case OpSubtract:
- strcpy(buf, "subtraction");
- break;
- case OpMultiply:
- strcpy(buf, "multiplication");
- break;
- case OpDivide:
- strcpy(buf, "division");
- break;
- case OpAssign:
- strcpy(buf, "assignment");
- break;
- case OpNot:
- strcpy(buf, "logical not");
- break;
- case OpNegate:
- strcpy(buf, "arithmetic negation");
- break;
- case OpInvert:
- strcpy(buf, "bitwise inversion");
- break;
- case OpUnaryPlus:
- strcpy(buf, "plus sign");
- break;
- default:
- snprintf(buf, sizeof(buf), "illegal(%d)", type);
- break;
- }
- return buf;
-}
-
-char *
-exprTypeText(unsigned type)
-{
- static char buf[20];
-
- switch (type)
- {
- case TypeUnknown:
- strcpy(buf, "unknown");
- break;
- case TypeBoolean:
- strcpy(buf, "boolean");
- break;
- case TypeInt:
- strcpy(buf, "int");
- break;
- case TypeString:
- strcpy(buf, "string");
- break;
- case TypeAction:
- strcpy(buf, "action");
- break;
- case TypeKeyName:
- strcpy(buf, "keyname");
- break;
- default:
- snprintf(buf, sizeof(buf), "illegal(%d)", type);
- break;
- }
- return buf;
-}
-
-int
-ExprResolveLhs(ExprDef * expr,
- ExprResult * elem_rtrn,
- ExprResult * field_rtrn, ExprDef ** index_rtrn)
-{
- switch (expr->op)
- {
- case ExprIdent:
- elem_rtrn->str = NULL;
- field_rtrn->str = XkbAtomGetString(NULL, expr->value.str);
- *index_rtrn = NULL;
- return True;
- case ExprFieldRef:
- elem_rtrn->str = XkbAtomGetString(NULL, expr->value.field.element);
- field_rtrn->str = XkbAtomGetString(NULL, expr->value.field.field);
- *index_rtrn = NULL;
- return True;
- case ExprArrayRef:
- elem_rtrn->str = XkbAtomGetString(NULL, expr->value.array.element);
- field_rtrn->str = XkbAtomGetString(NULL, expr->value.array.field);
- *index_rtrn = expr->value.array.entry;
- return True;
- }
- WSGO1("Unexpected operator %d in ResolveLhs\n", expr->op);
- return False;
-}
-
-Bool
-SimpleLookup(XPointer priv,
- Atom elem, Atom field, unsigned type, ExprResult * val_rtrn)
-{
- LookupEntry *entry;
- register char *str;
-
- if ((priv == NULL) ||
- (field == None) || (elem != None) ||
- ((type != TypeInt) && (type != TypeFloat)))
- {
- return False;
- }
- str = XkbAtomGetString(NULL, field);
- for (entry = (LookupEntry *) priv;
- (entry != NULL) && (entry->name != NULL); entry++)
- {
- if (uStrCaseCmp(str, entry->name) == 0)
- {
- val_rtrn->uval = entry->result;
- if (type == TypeFloat)
- val_rtrn->uval *= XkbGeomPtsPerMM;
- return True;
- }
- }
- return False;
-}
-
-Bool
-RadioLookup(XPointer priv,
- Atom elem, Atom field, unsigned type, ExprResult * val_rtrn)
-{
- register char *str;
- int rg;
-
- if ((field == None) || (elem != None) || (type != TypeInt))
- return False;
- str = XkbAtomGetString(NULL, field);
- if (str)
- {
- if (uStrCasePrefix("group", str))
- str += strlen("group");
- else if (uStrCasePrefix("radiogroup", str))
- str += strlen("radiogroup");
- else if (uStrCasePrefix("rg", str))
- str += strlen("rg");
- else if (!isdigit(str[0]))
- str = NULL;
- }
- if ((!str) || (sscanf(str, "%i", &rg) < 1) || (rg < 1)
- || (rg > XkbMaxRadioGroups))
- return False;
- val_rtrn->uval = rg;
- return True;
-}
-
-int
-TableLookup(XPointer priv,
- Atom elem, Atom field, unsigned type, ExprResult * val_rtrn)
-{
- LookupTable *tbl = (LookupTable *) priv;
- register char *str;
-
- if ((priv == NULL) || (field == None) || (type != TypeInt))
- return False;
- str = XkbAtomGetString(NULL, elem);
- while (tbl)
- {
- if (((str == NULL) && (tbl->element == NULL)) ||
- ((str != NULL) && (tbl->element != NULL) &&
- (uStrCaseCmp(str, tbl->element) == 0)))
- {
- break;
- }
- tbl = tbl->nextElement;
- }
- if (tbl == NULL) /* didn't find a matching element */
- return False;
- priv = (XPointer) tbl->entries;
- return SimpleLookup(priv, (Atom) None, field, type, val_rtrn);
-}
-
-static LookupEntry modIndexNames[] = {
- {"shift", ShiftMapIndex},
- {"control", ControlMapIndex},
- {"lock", LockMapIndex},
- {"mod1", Mod1MapIndex},
- {"mod2", Mod2MapIndex},
- {"mod3", Mod3MapIndex},
- {"mod4", Mod4MapIndex},
- {"mod5", Mod5MapIndex},
- {"none", XkbNoModifier},
- {NULL, 0}
-};
-
-int
-LookupModIndex(XPointer priv,
- Atom elem, Atom field, unsigned type, ExprResult * val_rtrn)
-{
- return SimpleLookup((XPointer) modIndexNames, elem, field, type,
- val_rtrn);
-}
-
-int
-LookupModMask(XPointer priv,
- Atom elem, Atom field, unsigned type, ExprResult * val_rtrn)
-{
- char *str;
-
- if ((elem != None) || (type != TypeInt))
- return False;
- str = XkbAtomGetString(NULL, field);
- if (str == NULL)
- return False;
- if (uStrCaseCmp(str, "all") == 0)
- val_rtrn->uval = 0xff;
- else if (uStrCaseCmp(str, "none") == 0)
- val_rtrn->uval = 0;
- else if (LookupModIndex(priv, elem, field, type, val_rtrn))
- val_rtrn->uval = (1 << val_rtrn->uval);
- else if (priv != NULL)
- {
- LookupPriv *lpriv = (LookupPriv *) priv;
- if ((lpriv->chain == NULL) ||
- (!(*lpriv->chain) (lpriv->chainPriv, elem, field, type,
- val_rtrn)))
- return False;
- }
- else
- return False;
- return True;
-}
-
-int
-ExprResolveModIndex(ExprDef * expr,
- ExprResult * val_rtrn,
- IdentLookupFunc lookup, XPointer lookupPriv)
-{
- int ok = 0;
- char *bogus = NULL;
-
- switch (expr->op)
- {
- case ExprValue:
- if (expr->type != TypeInt)
- {
- ERROR1
- ("Found constant of type %s where a modifier mask was expected\n",
- exprTypeText(expr->type));
- return False;
- }
- else if ((expr->value.ival >= XkbNumModifiers)
- || (expr->value.ival < 0))
- {
- ERROR2("Illegal modifier index (%d, must be 0..%d)\n",
- expr->value.ival, XkbNumModifiers - 1);
- return False;
- }
- val_rtrn->ival = expr->value.ival;
- return True;
- case ExprIdent:
- if (LookupModIndex(lookupPriv, (Atom) None, expr->value.str,
- (unsigned) TypeInt, val_rtrn))
- {
- return True;
- }
- if (lookup)
- {
- ok = (*lookup) (lookupPriv,
- None, expr->value.str, TypeInt, val_rtrn);
- }
- if (!ok)
- ERROR1("Cannot determine modifier index for \"%s\"\n",
- XkbAtomText(NULL, expr->value.str, XkbMessage));
- break;
- case ExprFieldRef:
- bogus = "field reference";
- break;
- case ExprArrayRef:
- bogus = "array reference";
- break;
- case ExprActionDecl:
- bogus = "function";
- break;
- case OpAdd:
- case OpSubtract:
- case OpMultiply:
- case OpDivide:
- case OpInvert:
- case OpNegate:
- case OpNot:
- case OpUnaryPlus:
- bogus = "arithmetic operations";
- break;
- case OpAssign:
- bogus = "assignment";
- break;
- default:
- WSGO1("Unknown operator %d in ResolveModIndex\n", expr->op);
- return False;
- }
- if (bogus)
- {
- ERROR1("Modifier index must be a name or number, %s ignored\n",
- bogus);
- return False;
- }
- return ok;
-}
-
-int
-ExprResolveModMask(ExprDef * expr,
- ExprResult * val_rtrn,
- IdentLookupFunc lookup, XPointer lookupPriv)
-{
- LookupPriv priv;
-
- priv.priv = NULL;
- priv.chain = lookup;
- priv.chainPriv = lookupPriv;
- return ExprResolveMask(expr, val_rtrn, LookupModMask, (XPointer) & priv);
-}
-
-int
-ExprResolveBoolean(ExprDef * expr,
- ExprResult * val_rtrn,
- IdentLookupFunc lookup, XPointer lookupPriv)
-{
- int ok = 0;
- char *bogus = NULL;
-
- switch (expr->op)
- {
- case ExprValue:
- if (expr->type != TypeBoolean)
- {
- ERROR1
- ("Found constant of type %s where boolean was expected\n",
- exprTypeText(expr->type));
- return False;
- }
- val_rtrn->ival = expr->value.ival;
- return True;
- case ExprIdent:
- bogus = XkbAtomGetString(NULL, expr->value.str);
- if (bogus)
- {
- if ((uStrCaseCmp(bogus, "true") == 0) ||
- (uStrCaseCmp(bogus, "yes") == 0) ||
- (uStrCaseCmp(bogus, "on") == 0))
- {
- val_rtrn->uval = 1;
- return True;
- }
- else if ((uStrCaseCmp(bogus, "false") == 0) ||
- (uStrCaseCmp(bogus, "no") == 0) ||
- (uStrCaseCmp(bogus, "off") == 0))
- {
- val_rtrn->uval = 0;
- return True;
- }
- }
- if (lookup)
- {
- ok = (*lookup) (lookupPriv,
- None, expr->value.str, TypeBoolean, val_rtrn);
- }
- if (!ok)
- ERROR1("Identifier \"%s\" of type int is unknown\n",
- XkbAtomText(NULL, expr->value.str, XkbMessage));
- return ok;
- case ExprFieldRef:
- if (lookup)
- {
- ok = (*lookup) (lookupPriv,
- expr->value.field.element,
- expr->value.field.field, TypeBoolean, val_rtrn);
- }
- if (!ok)
- ERROR2("Default \"%s.%s\" of type boolean is unknown\n",
- XkbAtomText(NULL, expr->value.field.element, XkbMessage),
- XkbAtomText(NULL, expr->value.field.field, XkbMessage));
- return ok;
- case OpInvert:
- case OpNot:
- ok = ExprResolveBoolean(expr, val_rtrn, lookup, lookupPriv);
- if (ok)
- val_rtrn->uval = !val_rtrn->uval;
- return ok;
- case OpAdd:
- if (bogus == NULL)
- bogus = "Addition";
- case OpSubtract:
- if (bogus == NULL)
- bogus = "Subtraction";
- case OpMultiply:
- if (bogus == NULL)
- bogus = "Multiplication";
- case OpDivide:
- if (bogus == NULL)
- bogus = "Division";
- case OpAssign:
- if (bogus == NULL)
- bogus = "Assignment";
- case OpNegate:
- if (bogus == NULL)
- bogus = "Negation";
- ERROR1("%s of boolean values not permitted\n", bogus);
- break;
- case OpUnaryPlus:
- ERROR("Unary \"+\" operator not permitted for boolean values\n");
- break;
- default:
- WSGO1("Unknown operator %d in ResolveBoolean\n", expr->op);
- break;
- }
- return False;
-}
-
-int
-ExprResolveFloat(ExprDef * expr,
- ExprResult * val_rtrn,
- IdentLookupFunc lookup, XPointer lookupPriv)
-{
- int ok = 0;
- ExprResult leftRtrn, rightRtrn;
- ExprDef *left, *right;
-
- switch (expr->op)
- {
- case ExprValue:
- if (expr->type == TypeString)
- {
- register char *str;
- str = XkbAtomGetString(NULL, expr->value.str);
- if ((str != NULL) && (strlen(str) == 1))
- {
- val_rtrn->uval = str[0] * XkbGeomPtsPerMM;
- return True;
- }
- }
- if ((expr->type != TypeInt) && (expr->type != TypeFloat))
- {
- ERROR1("Found constant of type %s, expected a number\n",
- exprTypeText(expr->type));
- return False;
- }
- val_rtrn->ival = expr->value.ival;
- if (expr->type == TypeInt)
- val_rtrn->ival *= XkbGeomPtsPerMM;
- return True;
- case ExprIdent:
- if (lookup)
- {
- ok = (*lookup) (lookupPriv,
- None, expr->value.str, TypeFloat, val_rtrn);
- }
- if (!ok)
- ERROR1("Numeric identifier \"%s\" unknown\n",
- XkbAtomText(NULL, expr->value.str, XkbMessage));
- return ok;
- case ExprFieldRef:
- if (lookup)
- {
- ok = (*lookup) (lookupPriv,
- expr->value.field.element,
- expr->value.field.field, TypeFloat, val_rtrn);
- }
- if (!ok)
- ERROR2("Numeric default \"%s.%s\" unknown\n",
- XkbAtomText(NULL, expr->value.field.element, XkbMessage),
- XkbAtomText(NULL, expr->value.field.field, XkbMessage));
- return ok;
- case OpAdd:
- case OpSubtract:
- case OpMultiply:
- case OpDivide:
- left = expr->value.binary.left;
- right = expr->value.binary.right;
- if (ExprResolveFloat(left, &leftRtrn, lookup, lookupPriv) &&
- ExprResolveFloat(right, &rightRtrn, lookup, lookupPriv))
- {
- switch (expr->op)
- {
- case OpAdd:
- val_rtrn->ival = leftRtrn.ival + rightRtrn.ival;
- break;
- case OpSubtract:
- val_rtrn->ival = leftRtrn.ival - rightRtrn.ival;
- break;
- case OpMultiply:
- val_rtrn->ival = leftRtrn.ival * rightRtrn.ival;
- break;
- case OpDivide:
- val_rtrn->ival = leftRtrn.ival / rightRtrn.ival;
- break;
- }
- return True;
- }
- return False;
- case OpAssign:
- WSGO("Assignment operator not implemented yet\n");
- break;
- case OpNot:
- left = expr->value.child;
- if (ExprResolveFloat(left, &leftRtrn, lookup, lookupPriv))
- {
- ERROR("The ! operator cannot be applied to a number\n");
- }
- return False;
- case OpInvert:
- case OpNegate:
- left = expr->value.child;
- if (ExprResolveFloat(left, &leftRtrn, lookup, lookupPriv))
- {
- if (expr->op == OpNegate)
- val_rtrn->ival = -leftRtrn.ival;
- else
- val_rtrn->ival = ~leftRtrn.ival;
- return True;
- }
- return False;
- case OpUnaryPlus:
- left = expr->value.child;
- return ExprResolveFloat(left, val_rtrn, lookup, lookupPriv);
- default:
- WSGO1("Unknown operator %d in ResolveFloat\n", expr->op);
- break;
- }
- return False;
-}
-
-int
-ExprResolveInteger(ExprDef * expr,
- ExprResult * val_rtrn,
- IdentLookupFunc lookup, XPointer lookupPriv)
-{
- int ok = 0;
- ExprResult leftRtrn, rightRtrn;
- ExprDef *left, *right;
-
- switch (expr->op)
- {
- case ExprValue:
- if (expr->type == TypeString)
- {
- register char *str;
- str = XkbAtomGetString(NULL, expr->value.str);
- if (str != NULL)
- switch (strlen(str))
- {
- case 0:
- val_rtrn->uval = 0;
- return True;
- case 1:
- val_rtrn->uval = str[0];
- return True;
- default:
- break;
- }
- }
- if ((expr->type != TypeInt) && (expr->type != TypeFloat))
- {
- ERROR1
- ("Found constant of type %s where an int was expected\n",
- exprTypeText(expr->type));
- return False;
- }
- val_rtrn->ival = expr->value.ival;
- if (expr->type == TypeFloat)
- val_rtrn->ival /= XkbGeomPtsPerMM;
- return True;
- case ExprIdent:
- if (lookup)
- {
- ok = (*lookup) (lookupPriv,
- None, expr->value.str, TypeInt, val_rtrn);
- }
- if (!ok)
- ERROR1("Identifier \"%s\" of type int is unknown\n",
- XkbAtomText(NULL, expr->value.str, XkbMessage));
- return ok;
- case ExprFieldRef:
- if (lookup)
- {
- ok = (*lookup) (lookupPriv,
- expr->value.field.element,
- expr->value.field.field, TypeInt, val_rtrn);
- }
- if (!ok)
- ERROR2("Default \"%s.%s\" of type int is unknown\n",
- XkbAtomText(NULL, expr->value.field.element, XkbMessage),
- XkbAtomText(NULL, expr->value.field.field, XkbMessage));
- return ok;
- case OpAdd:
- case OpSubtract:
- case OpMultiply:
- case OpDivide:
- left = expr->value.binary.left;
- right = expr->value.binary.right;
- if (ExprResolveInteger(left, &leftRtrn, lookup, lookupPriv) &&
- ExprResolveInteger(right, &rightRtrn, lookup, lookupPriv))
- {
- switch (expr->op)
- {
- case OpAdd:
- val_rtrn->ival = leftRtrn.ival + rightRtrn.ival;
- break;
- case OpSubtract:
- val_rtrn->ival = leftRtrn.ival - rightRtrn.ival;
- break;
- case OpMultiply:
- val_rtrn->ival = leftRtrn.ival * rightRtrn.ival;
- break;
- case OpDivide:
- val_rtrn->ival = leftRtrn.ival / rightRtrn.ival;
- break;
- }
- return True;
- }
- return False;
- case OpAssign:
- WSGO("Assignment operator not implemented yet\n");
- break;
- case OpNot:
- left = expr->value.child;
- if (ExprResolveInteger(left, &leftRtrn, lookup, lookupPriv))
- {
- ERROR("The ! operator cannot be applied to an integer\n");
- }
- return False;
- case OpInvert:
- case OpNegate:
- left = expr->value.child;
- if (ExprResolveInteger(left, &leftRtrn, lookup, lookupPriv))
- {
- if (expr->op == OpNegate)
- val_rtrn->ival = -leftRtrn.ival;
- else
- val_rtrn->ival = ~leftRtrn.ival;
- return True;
- }
- return False;
- case OpUnaryPlus:
- left = expr->value.child;
- return ExprResolveInteger(left, val_rtrn, lookup, lookupPriv);
- default:
- WSGO1("Unknown operator %d in ResolveInteger\n", expr->op);
- break;
- }
- return False;
-}
-
-int
-ExprResolveString(ExprDef * expr,
- ExprResult * val_rtrn,
- IdentLookupFunc lookup, XPointer lookupPriv)
-{
- int ok = 0;
- ExprResult leftRtrn, rightRtrn;
- ExprDef *left;
- ExprDef *right;
- char *bogus = NULL;
-
- switch (expr->op)
- {
- case ExprValue:
- if (expr->type != TypeString)
- {
- ERROR1("Found constant of type %s, expected a string\n",
- exprTypeText(expr->type));
- return False;
- }
- val_rtrn->str = XkbAtomGetString(NULL, expr->value.str);
- if (val_rtrn->str == NULL)
- {
- static char *empty = "";
- val_rtrn->str = empty;
- }
- return True;
- case ExprIdent:
- if (lookup)
- {
- ok = (*lookup) (lookupPriv,
- None, expr->value.str, TypeString, val_rtrn);
- }
- if (!ok)
- ERROR1("Identifier \"%s\" of type string not found\n",
- XkbAtomText(NULL, expr->value.str, XkbMessage));
- return ok;
- case ExprFieldRef:
- if (lookup)
- {
- ok = (*lookup) (lookupPriv,
- expr->value.field.element,
- expr->value.field.field, TypeString, val_rtrn);
- }
- if (!ok)
- ERROR2("Default \"%s.%s\" of type string not found\n",
- XkbAtomText(NULL, expr->value.field.element, XkbMessage),
- XkbAtomText(NULL, expr->value.field.field, XkbMessage));
- return ok;
- case OpAdd:
- left = expr->value.binary.left;
- right = expr->value.binary.right;
- if (ExprResolveString(left, &leftRtrn, lookup, lookupPriv) &&
- ExprResolveString(right, &rightRtrn, lookup, lookupPriv))
- {
- int len;
- char *new;
- len = strlen(leftRtrn.str) + strlen(rightRtrn.str) + 1;
- new = (char *) uAlloc(len);
- if (new)
- {
- sprintf(new, "%s%s", leftRtrn.str, rightRtrn.str);
- val_rtrn->str = new;
- return True;
- }
- }
- return False;
- case OpSubtract:
- if (bogus == NULL)
- bogus = "Subtraction";
- case OpMultiply:
- if (bogus == NULL)
- bogus = "Multiplication";
- case OpDivide:
- if (bogus == NULL)
- bogus = "Division";
- case OpAssign:
- if (bogus == NULL)
- bogus = "Assignment";
- case OpNegate:
- if (bogus == NULL)
- bogus = "Negation";
- case OpInvert:
- if (bogus == NULL)
- bogus = "Bitwise complement";
- ERROR1("%s of string values not permitted\n", bogus);
- return False;
- case OpNot:
- left = expr->value.child;
- if (ExprResolveString(left, &leftRtrn, lookup, lookupPriv))
- {
- ERROR("The ! operator cannot be applied to a string\n");
- }
- return False;
- case OpUnaryPlus:
- left = expr->value.child;
- if (ExprResolveString(left, &leftRtrn, lookup, lookupPriv))
- {
- ERROR("The + operator cannot be applied to a string\n");
- }
- return False;
- default:
- WSGO1("Unknown operator %d in ResolveString\n", expr->op);
- break;
- }
- return False;
-}
-
-int
-ExprResolveKeyName(ExprDef * expr,
- ExprResult * val_rtrn,
- IdentLookupFunc lookup, XPointer lookupPriv)
-{
- int ok = 0;
- ExprDef *left;
- ExprResult leftRtrn;
- char *bogus = NULL;
-
- switch (expr->op)
- {
- case ExprValue:
- if (expr->type != TypeKeyName)
- {
- ERROR1("Found constant of type %s, expected a key name\n",
- exprTypeText(expr->type));
- return False;
- }
- memcpy(val_rtrn->keyName.name, expr->value.keyName, XkbKeyNameLength);
- return True;
- case ExprIdent:
- if (lookup)
- {
- ok = (*lookup) (lookupPriv,
- None, expr->value.str, TypeString, val_rtrn);
- }
- if (!ok)
- ERROR1("Identifier \"%s\" of type string not found\n",
- XkbAtomText(NULL, expr->value.str, XkbMessage));
- return ok;
- case ExprFieldRef:
- if (lookup)
- {
- ok = (*lookup) (lookupPriv,
- expr->value.field.element,
- expr->value.field.field, TypeString, val_rtrn);
- }
- if (!ok)
- ERROR2("Default \"%s.%s\" of type key name not found\n",
- XkbAtomText(NULL, expr->value.field.element, XkbMessage),
- XkbAtomText(NULL, expr->value.field.field, XkbMessage));
- return ok;
- case OpAdd:
- if (bogus == NULL)
- bogus = "Addition";
- case OpSubtract:
- if (bogus == NULL)
- bogus = "Subtraction";
- case OpMultiply:
- if (bogus == NULL)
- bogus = "Multiplication";
- case OpDivide:
- if (bogus == NULL)
- bogus = "Division";
- case OpAssign:
- if (bogus == NULL)
- bogus = "Assignment";
- case OpNegate:
- if (bogus == NULL)
- bogus = "Negation";
- case OpInvert:
- if (bogus == NULL)
- bogus = "Bitwise complement";
- ERROR1("%s of key name values not permitted\n", bogus);
- return False;
- case OpNot:
- left = expr->value.binary.left;
- if (ExprResolveString(left, &leftRtrn, lookup, lookupPriv))
- {
- ERROR("The ! operator cannot be applied to a key name\n");
- }
- return False;
- case OpUnaryPlus:
- left = expr->value.binary.left;
- if (ExprResolveString(left, &leftRtrn, lookup, lookupPriv))
- {
- ERROR("The + operator cannot be applied to a key name\n");
- }
- return False;
- default:
- WSGO1("Unknown operator %d in ResolveKeyName\n", expr->op);
- break;
- }
- return False;
-}
-
-/***====================================================================***/
-
-int
-ExprResolveEnum(ExprDef * expr, ExprResult * val_rtrn, LookupEntry * values)
-{
- if (expr->op != ExprIdent)
- {
- ERROR1("Found a %s where an enumerated value was expected\n",
- exprOpText(expr->op));
- return False;
- }
- if (!SimpleLookup((XPointer) values, (Atom) None, expr->value.str,
- (unsigned) TypeInt, val_rtrn))
- {
- int nOut = 0;
- ERROR1("Illegal identifier %s (expected one of: ",
- XkbAtomText(NULL, expr->value.str, XkbMessage));
- while (values && values->name)
- {
- if (nOut != 0)
- INFO1(", %s", values->name);
- else
- INFO1("%s", values->name);
- values++;
- nOut++;
- }
- INFO(")\n");
- return False;
- }
- return True;
-}
-
-int
-ExprResolveMask(ExprDef * expr,
- ExprResult * val_rtrn,
- IdentLookupFunc lookup, XPointer lookupPriv)
-{
- int ok = 0;
- ExprResult leftRtrn, rightRtrn;
- ExprDef *left, *right;
- char *bogus = NULL;
-
- switch (expr->op)
- {
- case ExprValue:
- if (expr->type != TypeInt)
- {
- ERROR1
- ("Found constant of type %s where a mask was expected\n",
- exprTypeText(expr->type));
- return False;
- }
- val_rtrn->ival = expr->value.ival;
- return True;
- case ExprIdent:
- if (lookup)
- {
- ok = (*lookup) (lookupPriv,
- None, expr->value.str, TypeInt, val_rtrn);
- }
- if (!ok)
- ERROR1("Identifier \"%s\" of type int is unknown\n",
- XkbAtomText(NULL, expr->value.str, XkbMessage));
- return ok;
- case ExprFieldRef:
- if (lookup)
- {
- ok = (*lookup) (lookupPriv,
- expr->value.field.element,
- expr->value.field.field, TypeInt, val_rtrn);
- }
- if (!ok)
- ERROR2("Default \"%s.%s\" of type int is unknown\n",
- XkbAtomText(NULL, expr->value.field.element, XkbMessage),
- XkbAtomText(NULL, expr->value.field.field, XkbMessage));
- return ok;
- case ExprArrayRef:
- bogus = "array reference";
- case ExprActionDecl:
- if (bogus == NULL)
- bogus = "function use";
- ERROR1("Unexpected %s in mask expression\n", bogus);
- ACTION("Expression ignored\n");
- return False;
- case OpAdd:
- case OpSubtract:
- case OpMultiply:
- case OpDivide:
- left = expr->value.binary.left;
- right = expr->value.binary.right;
- if (ExprResolveMask(left, &leftRtrn, lookup, lookupPriv) &&
- ExprResolveMask(right, &rightRtrn, lookup, lookupPriv))
- {
- switch (expr->op)
- {
- case OpAdd:
- val_rtrn->ival = leftRtrn.ival | rightRtrn.ival;
- break;
- case OpSubtract:
- val_rtrn->ival = leftRtrn.ival & (~rightRtrn.ival);
- break;
- case OpMultiply:
- case OpDivide:
- ERROR1("Cannot %s masks\n",
- expr->op == OpDivide ? "divide" : "multiply");
- ACTION("Illegal operation ignored\n");
- return False;
- }
- return True;
- }
- return False;
- case OpAssign:
- WSGO("Assignment operator not implemented yet\n");
- break;
- case OpInvert:
- left = expr->value.child;
- if (ExprResolveInteger(left, &leftRtrn, lookup, lookupPriv))
- {
- val_rtrn->ival = ~leftRtrn.ival;
- return True;
- }
- return False;
- case OpUnaryPlus:
- case OpNegate:
- case OpNot:
- left = expr->value.child;
- if (ExprResolveInteger(left, &leftRtrn, lookup, lookupPriv))
- {
- ERROR1("The %s operator cannot be used with a mask\n",
- (expr->op == OpNegate ? "-" : "!"));
- }
- return False;
- default:
- WSGO1("Unknown operator %d in ResolveMask\n", expr->op);
- break;
- }
- return False;
-}
-
-int
-ExprResolveKeySym(ExprDef * expr,
- ExprResult * val_rtrn,
- IdentLookupFunc lookup, XPointer lookupPriv)
-{
- int ok = 0;
- KeySym sym;
-
- if (expr->op == ExprIdent)
- {
- char *str;
- str = XkbAtomGetString(NULL, expr->value.str);
- if ((str != NULL) && ((sym = XStringToKeysym(str)) != NoSymbol))
- {
- val_rtrn->uval = sym;
- return True;
- }
- }
- ok = ExprResolveInteger(expr, val_rtrn, lookup, lookupPriv);
- if ((ok) && (val_rtrn->uval < 10))
- val_rtrn->uval += '0';
- return ok;
-}
+/************************************************************
+ Copyright (c) 1994 by Silicon Graphics Computer Systems, Inc.
+
+ Permission to use, copy, modify, and distribute this
+ software and its documentation for any purpose and without
+ fee is hereby granted, provided that the above copyright
+ notice appear in all copies and that both that copyright
+ notice and this permission notice appear in supporting
+ documentation, and that the name of Silicon Graphics not be
+ used in advertising or publicity pertaining to distribution
+ of the software without specific prior written permission.
+ Silicon Graphics makes no representation about the suitability
+ of this software for any purpose. It is provided "as is"
+ without any express or implied warranty.
+
+ SILICON GRAPHICS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS
+ SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
+ AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON
+ GRAPHICS BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL
+ DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
+ DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
+ OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH
+ THE USE OR PERFORMANCE OF THIS SOFTWARE.
+
+ ********************************************************/
+
+#include "xkbcomp.h"
+#include "tokens.h"
+#include "expr.h"
+
+#include <ctype.h>
+
+/***====================================================================***/
+
+char *
+exprOpText(unsigned type)
+{
+ static char buf[32];
+
+ switch (type)
+ {
+ case ExprValue:
+ strcpy(buf, "literal");
+ break;
+ case ExprIdent:
+ strcpy(buf, "identifier");
+ break;
+ case ExprActionDecl:
+ strcpy(buf, "action declaration");
+ break;
+ case ExprFieldRef:
+ strcpy(buf, "field reference");
+ break;
+ case ExprArrayRef:
+ strcpy(buf, "array reference");
+ break;
+ case ExprKeysymList:
+ strcpy(buf, "list of keysyms");
+ break;
+ case ExprActionList:
+ strcpy(buf, "list of actions");
+ break;
+ case OpAdd:
+ strcpy(buf, "addition");
+ break;
+ case OpSubtract:
+ strcpy(buf, "subtraction");
+ break;
+ case OpMultiply:
+ strcpy(buf, "multiplication");
+ break;
+ case OpDivide:
+ strcpy(buf, "division");
+ break;
+ case OpAssign:
+ strcpy(buf, "assignment");
+ break;
+ case OpNot:
+ strcpy(buf, "logical not");
+ break;
+ case OpNegate:
+ strcpy(buf, "arithmetic negation");
+ break;
+ case OpInvert:
+ strcpy(buf, "bitwise inversion");
+ break;
+ case OpUnaryPlus:
+ strcpy(buf, "plus sign");
+ break;
+ default:
+ snprintf(buf, sizeof(buf), "illegal(%d)", type);
+ break;
+ }
+ return buf;
+}
+
+char *
+exprTypeText(unsigned type)
+{
+ static char buf[20];
+
+ switch (type)
+ {
+ case TypeUnknown:
+ strcpy(buf, "unknown");
+ break;
+ case TypeBoolean:
+ strcpy(buf, "boolean");
+ break;
+ case TypeInt:
+ strcpy(buf, "int");
+ break;
+ case TypeString:
+ strcpy(buf, "string");
+ break;
+ case TypeAction:
+ strcpy(buf, "action");
+ break;
+ case TypeKeyName:
+ strcpy(buf, "keyname");
+ break;
+ default:
+ snprintf(buf, sizeof(buf), "illegal(%d)", type);
+ break;
+ }
+ return buf;
+}
+
+int
+ExprResolveLhs(ExprDef * expr,
+ ExprResult * elem_rtrn,
+ ExprResult * field_rtrn, ExprDef ** index_rtrn)
+{
+ switch (expr->op)
+ {
+ case ExprIdent:
+ elem_rtrn->str = NULL;
+ field_rtrn->str = XkbAtomGetString(NULL, expr->value.str);
+ *index_rtrn = NULL;
+ return True;
+ case ExprFieldRef:
+ elem_rtrn->str = XkbAtomGetString(NULL, expr->value.field.element);
+ field_rtrn->str = XkbAtomGetString(NULL, expr->value.field.field);
+ *index_rtrn = NULL;
+ return True;
+ case ExprArrayRef:
+ elem_rtrn->str = XkbAtomGetString(NULL, expr->value.array.element);
+ field_rtrn->str = XkbAtomGetString(NULL, expr->value.array.field);
+ *index_rtrn = expr->value.array.entry;
+ return True;
+ }
+ WSGO1("Unexpected operator %d in ResolveLhs\n", expr->op);
+ return False;
+}
+
+Bool
+SimpleLookup(XPointer priv,
+ Atom elem, Atom field, unsigned type, ExprResult * val_rtrn)
+{
+ LookupEntry *entry;
+ register char *str;
+
+ if ((priv == NULL) ||
+ (field == None) || (elem != None) ||
+ ((type != TypeInt) && (type != TypeFloat)))
+ {
+ return False;
+ }
+ str = XkbAtomGetString(NULL, field);
+ for (entry = (LookupEntry *) priv;
+ (entry != NULL) && (entry->name != NULL); entry++)
+ {
+ if (uStrCaseCmp(str, entry->name) == 0)
+ {
+ val_rtrn->uval = entry->result;
+ if (type == TypeFloat)
+ val_rtrn->uval *= XkbGeomPtsPerMM;
+ return True;
+ }
+ }
+ return False;
+}
+
+Bool
+RadioLookup(XPointer priv,
+ Atom elem, Atom field, unsigned type, ExprResult * val_rtrn)
+{
+ register char *str;
+ int rg;
+
+ if ((field == None) || (elem != None) || (type != TypeInt))
+ return False;
+ str = XkbAtomGetString(NULL, field);
+ if (str)
+ {
+ if (uStrCasePrefix("group", str))
+ str += strlen("group");
+ else if (uStrCasePrefix("radiogroup", str))
+ str += strlen("radiogroup");
+ else if (uStrCasePrefix("rg", str))
+ str += strlen("rg");
+ else if (!isdigit(str[0]))
+ str = NULL;
+ }
+ if ((!str) || (sscanf(str, "%i", &rg) < 1) || (rg < 1)
+ || (rg > XkbMaxRadioGroups))
+ return False;
+ val_rtrn->uval = rg;
+ return True;
+}
+
+int
+TableLookup(XPointer priv,
+ Atom elem, Atom field, unsigned type, ExprResult * val_rtrn)
+{
+ LookupTable *tbl = (LookupTable *) priv;
+ register char *str;
+
+ if ((priv == NULL) || (field == None) || (type != TypeInt))
+ return False;
+ str = XkbAtomGetString(NULL, elem);
+ while (tbl)
+ {
+ if (((str == NULL) && (tbl->element == NULL)) ||
+ ((str != NULL) && (tbl->element != NULL) &&
+ (uStrCaseCmp(str, tbl->element) == 0)))
+ {
+ break;
+ }
+ tbl = tbl->nextElement;
+ }
+ if (tbl == NULL) /* didn't find a matching element */
+ return False;
+ priv = (XPointer) tbl->entries;
+ return SimpleLookup(priv, (Atom) None, field, type, val_rtrn);
+}
+
+static LookupEntry modIndexNames[] = {
+ {"shift", ShiftMapIndex},
+ {"control", ControlMapIndex},
+ {"lock", LockMapIndex},
+ {"mod1", Mod1MapIndex},
+ {"mod2", Mod2MapIndex},
+ {"mod3", Mod3MapIndex},
+ {"mod4", Mod4MapIndex},
+ {"mod5", Mod5MapIndex},
+ {"none", XkbNoModifier},
+ {NULL, 0}
+};
+
+int
+LookupModIndex(XPointer priv,
+ Atom elem, Atom field, unsigned type, ExprResult * val_rtrn)
+{
+ return SimpleLookup((XPointer) modIndexNames, elem, field, type,
+ val_rtrn);
+}
+
+int
+LookupModMask(XPointer priv,
+ Atom elem, Atom field, unsigned type, ExprResult * val_rtrn)
+{
+ char *str;
+
+ if ((elem != None) || (type != TypeInt))
+ return False;
+ str = XkbAtomGetString(NULL, field);
+ if (str == NULL)
+ return False;
+ if (uStrCaseCmp(str, "all") == 0)
+ val_rtrn->uval = 0xff;
+ else if (uStrCaseCmp(str, "none") == 0)
+ val_rtrn->uval = 0;
+ else if (LookupModIndex(priv, elem, field, type, val_rtrn))
+ val_rtrn->uval = (1 << val_rtrn->uval);
+ else if (priv != NULL)
+ {
+ LookupPriv *lpriv = (LookupPriv *) priv;
+ if ((lpriv->chain == NULL) ||
+ (!(*lpriv->chain) (lpriv->chainPriv, elem, field, type,
+ val_rtrn)))
+ return False;
+ }
+ else
+ return False;
+ return True;
+}
+
+int
+ExprResolveModIndex(ExprDef * expr,
+ ExprResult * val_rtrn,
+ IdentLookupFunc lookup, XPointer lookupPriv)
+{
+ int ok = 0;
+ char *bogus = NULL;
+
+ switch (expr->op)
+ {
+ case ExprValue:
+ if (expr->type != TypeInt)
+ {
+ ERROR1
+ ("Found constant of type %s where a modifier mask was expected\n",
+ exprTypeText(expr->type));
+ return False;
+ }
+ else if ((expr->value.ival >= XkbNumModifiers)
+ || (expr->value.ival < 0))
+ {
+ ERROR2("Illegal modifier index (%d, must be 0..%d)\n",
+ expr->value.ival, XkbNumModifiers - 1);
+ return False;
+ }
+ val_rtrn->ival = expr->value.ival;
+ return True;
+ case ExprIdent:
+ if (LookupModIndex(lookupPriv, (Atom) None, expr->value.str,
+ (unsigned) TypeInt, val_rtrn))
+ {
+ return True;
+ }
+ if (lookup)
+ {
+ ok = (*lookup) (lookupPriv,
+ None, expr->value.str, TypeInt, val_rtrn);
+ }
+ if (!ok)
+ ERROR1("Cannot determine modifier index for \"%s\"\n",
+ XkbAtomText(NULL, expr->value.str, XkbMessage));
+ break;
+ case ExprFieldRef:
+ bogus = "field reference";
+ break;
+ case ExprArrayRef:
+ bogus = "array reference";
+ break;
+ case ExprActionDecl:
+ bogus = "function";
+ break;
+ case OpAdd:
+ case OpSubtract:
+ case OpMultiply:
+ case OpDivide:
+ case OpInvert:
+ case OpNegate:
+ case OpNot:
+ case OpUnaryPlus:
+ bogus = "arithmetic operations";
+ break;
+ case OpAssign:
+ bogus = "assignment";
+ break;
+ default:
+ WSGO1("Unknown operator %d in ResolveModIndex\n", expr->op);
+ return False;
+ }
+ if (bogus)
+ {
+ ERROR1("Modifier index must be a name or number, %s ignored\n",
+ bogus);
+ return False;
+ }
+ return ok;
+}
+
+int
+ExprResolveModMask(ExprDef * expr,
+ ExprResult * val_rtrn,
+ IdentLookupFunc lookup, XPointer lookupPriv)
+{
+ LookupPriv priv;
+
+ priv.priv = NULL;
+ priv.chain = lookup;
+ priv.chainPriv = lookupPriv;
+ return ExprResolveMask(expr, val_rtrn, LookupModMask, (XPointer) & priv);
+}
+
+int
+ExprResolveBoolean(ExprDef * expr,
+ ExprResult * val_rtrn,
+ IdentLookupFunc lookup, XPointer lookupPriv)
+{
+ int ok = 0;
+ char *bogus = NULL;
+
+ switch (expr->op)
+ {
+ case ExprValue:
+ if (expr->type != TypeBoolean)
+ {
+ ERROR1
+ ("Found constant of type %s where boolean was expected\n",
+ exprTypeText(expr->type));
+ return False;
+ }
+ val_rtrn->ival = expr->value.ival;
+ return True;
+ case ExprIdent:
+ bogus = XkbAtomGetString(NULL, expr->value.str);
+ if (bogus)
+ {
+ if ((uStrCaseCmp(bogus, "true") == 0) ||
+ (uStrCaseCmp(bogus, "yes") == 0) ||
+ (uStrCaseCmp(bogus, "on") == 0))
+ {
+ val_rtrn->uval = 1;
+ return True;
+ }
+ else if ((uStrCaseCmp(bogus, "false") == 0) ||
+ (uStrCaseCmp(bogus, "no") == 0) ||
+ (uStrCaseCmp(bogus, "off") == 0))
+ {
+ val_rtrn->uval = 0;
+ return True;
+ }
+ }
+ if (lookup)
+ {
+ ok = (*lookup) (lookupPriv,
+ None, expr->value.str, TypeBoolean, val_rtrn);
+ }
+ if (!ok)
+ ERROR1("Identifier \"%s\" of type int is unknown\n",
+ XkbAtomText(NULL, expr->value.str, XkbMessage));
+ return ok;
+ case ExprFieldRef:
+ if (lookup)
+ {
+ ok = (*lookup) (lookupPriv,
+ expr->value.field.element,
+ expr->value.field.field, TypeBoolean, val_rtrn);
+ }
+ if (!ok)
+ ERROR2("Default \"%s.%s\" of type boolean is unknown\n",
+ XkbAtomText(NULL, expr->value.field.element, XkbMessage),
+ XkbAtomText(NULL, expr->value.field.field, XkbMessage));
+ return ok;
+ case OpInvert:
+ case OpNot:
+ ok = ExprResolveBoolean(expr, val_rtrn, lookup, lookupPriv);
+ if (ok)
+ val_rtrn->uval = !val_rtrn->uval;
+ return ok;
+ case OpAdd:
+ if (bogus == NULL)
+ bogus = "Addition";
+ case OpSubtract:
+ if (bogus == NULL)
+ bogus = "Subtraction";
+ case OpMultiply:
+ if (bogus == NULL)
+ bogus = "Multiplication";
+ case OpDivide:
+ if (bogus == NULL)
+ bogus = "Division";
+ case OpAssign:
+ if (bogus == NULL)
+ bogus = "Assignment";
+ case OpNegate:
+ if (bogus == NULL)
+ bogus = "Negation";
+ ERROR1("%s of boolean values not permitted\n", bogus);
+ break;
+ case OpUnaryPlus:
+ ERROR("Unary \"+\" operator not permitted for boolean values\n");
+ break;
+ default:
+ WSGO1("Unknown operator %d in ResolveBoolean\n", expr->op);
+ break;
+ }
+ return False;
+}
+
+int
+ExprResolveFloat(ExprDef * expr,
+ ExprResult * val_rtrn,
+ IdentLookupFunc lookup, XPointer lookupPriv)
+{
+ int ok = 0;
+ ExprResult leftRtrn, rightRtrn;
+ ExprDef *left, *right;
+
+ switch (expr->op)
+ {
+ case ExprValue:
+ if (expr->type == TypeString)
+ {
+ register char *str;
+ str = XkbAtomGetString(NULL, expr->value.str);
+ if ((str != NULL) && (strlen(str) == 1))
+ {
+ val_rtrn->uval = str[0] * XkbGeomPtsPerMM;
+ return True;
+ }
+ }
+ if ((expr->type != TypeInt) && (expr->type != TypeFloat))
+ {
+ ERROR1("Found constant of type %s, expected a number\n",
+ exprTypeText(expr->type));
+ return False;
+ }
+ val_rtrn->ival = expr->value.ival;
+ if (expr->type == TypeInt)
+ val_rtrn->ival *= XkbGeomPtsPerMM;
+ return True;
+ case ExprIdent:
+ if (lookup)
+ {
+ ok = (*lookup) (lookupPriv,
+ None, expr->value.str, TypeFloat, val_rtrn);
+ }
+ if (!ok)
+ ERROR1("Numeric identifier \"%s\" unknown\n",
+ XkbAtomText(NULL, expr->value.str, XkbMessage));
+ return ok;
+ case ExprFieldRef:
+ if (lookup)
+ {
+ ok = (*lookup) (lookupPriv,
+ expr->value.field.element,
+ expr->value.field.field, TypeFloat, val_rtrn);
+ }
+ if (!ok)
+ ERROR2("Numeric default \"%s.%s\" unknown\n",
+ XkbAtomText(NULL, expr->value.field.element, XkbMessage),
+ XkbAtomText(NULL, expr->value.field.field, XkbMessage));
+ return ok;
+ case OpAdd:
+ case OpSubtract:
+ case OpMultiply:
+ case OpDivide:
+ left = expr->value.binary.left;
+ right = expr->value.binary.right;
+ if (ExprResolveFloat(left, &leftRtrn, lookup, lookupPriv) &&
+ ExprResolveFloat(right, &rightRtrn, lookup, lookupPriv))
+ {
+ switch (expr->op)
+ {
+ case OpAdd:
+ val_rtrn->ival = leftRtrn.ival + rightRtrn.ival;
+ break;
+ case OpSubtract:
+ val_rtrn->ival = leftRtrn.ival - rightRtrn.ival;
+ break;
+ case OpMultiply:
+ val_rtrn->ival = leftRtrn.ival * rightRtrn.ival;
+ break;
+ case OpDivide:
+ val_rtrn->ival = leftRtrn.ival / rightRtrn.ival;
+ break;
+ }
+ return True;
+ }
+ return False;
+ case OpAssign:
+ WSGO("Assignment operator not implemented yet\n");
+ break;
+ case OpNot:
+ left = expr->value.child;
+ if (ExprResolveFloat(left, &leftRtrn, lookup, lookupPriv))
+ {
+ ERROR("The ! operator cannot be applied to a number\n");
+ }
+ return False;
+ case OpInvert:
+ case OpNegate:
+ left = expr->value.child;
+ if (ExprResolveFloat(left, &leftRtrn, lookup, lookupPriv))
+ {
+ if (expr->op == OpNegate)
+ val_rtrn->ival = -leftRtrn.ival;
+ else
+ val_rtrn->ival = ~leftRtrn.ival;
+ return True;
+ }
+ return False;
+ case OpUnaryPlus:
+ left = expr->value.child;
+ return ExprResolveFloat(left, val_rtrn, lookup, lookupPriv);
+ default:
+ WSGO1("Unknown operator %d in ResolveFloat\n", expr->op);
+ break;
+ }
+ return False;
+}
+
+int
+ExprResolveInteger(ExprDef * expr,
+ ExprResult * val_rtrn,
+ IdentLookupFunc lookup, XPointer lookupPriv)
+{
+ int ok = 0;
+ ExprResult leftRtrn, rightRtrn;
+ ExprDef *left, *right;
+
+ switch (expr->op)
+ {
+ case ExprValue:
+ if (expr->type == TypeString)
+ {
+ register char *str;
+ str = XkbAtomGetString(NULL, expr->value.str);
+ if (str != NULL)
+ switch (strlen(str))
+ {
+ case 0:
+ val_rtrn->uval = 0;
+ return True;
+ case 1:
+ val_rtrn->uval = str[0];
+ return True;
+ default:
+ break;
+ }
+ }
+ if ((expr->type != TypeInt) && (expr->type != TypeFloat))
+ {
+ ERROR1
+ ("Found constant of type %s where an int was expected\n",
+ exprTypeText(expr->type));
+ return False;
+ }
+ val_rtrn->ival = expr->value.ival;
+ if (expr->type == TypeFloat)
+ val_rtrn->ival /= XkbGeomPtsPerMM;
+ return True;
+ case ExprIdent:
+ if (lookup)
+ {
+ ok = (*lookup) (lookupPriv,
+ None, expr->value.str, TypeInt, val_rtrn);
+ }
+ if (!ok)
+ ERROR1("Identifier \"%s\" of type int is unknown\n",
+ XkbAtomText(NULL, expr->value.str, XkbMessage));
+ return ok;
+ case ExprFieldRef:
+ if (lookup)
+ {
+ ok = (*lookup) (lookupPriv,
+ expr->value.field.element,
+ expr->value.field.field, TypeInt, val_rtrn);
+ }
+ if (!ok)
+ ERROR2("Default \"%s.%s\" of type int is unknown\n",
+ XkbAtomText(NULL, expr->value.field.element, XkbMessage),
+ XkbAtomText(NULL, expr->value.field.field, XkbMessage));
+ return ok;
+ case OpAdd:
+ case OpSubtract:
+ case OpMultiply:
+ case OpDivide:
+ left = expr->value.binary.left;
+ right = expr->value.binary.right;
+ if (ExprResolveInteger(left, &leftRtrn, lookup, lookupPriv) &&
+ ExprResolveInteger(right, &rightRtrn, lookup, lookupPriv))
+ {
+ switch (expr->op)
+ {
+ case OpAdd:
+ val_rtrn->ival = leftRtrn.ival + rightRtrn.ival;
+ break;
+ case OpSubtract:
+ val_rtrn->ival = leftRtrn.ival - rightRtrn.ival;
+ break;
+ case OpMultiply:
+ val_rtrn->ival = leftRtrn.ival * rightRtrn.ival;
+ break;
+ case OpDivide:
+ val_rtrn->ival = leftRtrn.ival / rightRtrn.ival;
+ break;
+ }
+ return True;
+ }
+ return False;
+ case OpAssign:
+ WSGO("Assignment operator not implemented yet\n");
+ break;
+ case OpNot:
+ left = expr->value.child;
+ if (ExprResolveInteger(left, &leftRtrn, lookup, lookupPriv))
+ {
+ ERROR("The ! operator cannot be applied to an integer\n");
+ }
+ return False;
+ case OpInvert:
+ case OpNegate:
+ left = expr->value.child;
+ if (ExprResolveInteger(left, &leftRtrn, lookup, lookupPriv))
+ {
+ if (expr->op == OpNegate)
+ val_rtrn->ival = -leftRtrn.ival;
+ else
+ val_rtrn->ival = ~leftRtrn.ival;
+ return True;
+ }
+ return False;
+ case OpUnaryPlus:
+ left = expr->value.child;
+ return ExprResolveInteger(left, val_rtrn, lookup, lookupPriv);
+ default:
+ WSGO1("Unknown operator %d in ResolveInteger\n", expr->op);
+ break;
+ }
+ return False;
+}
+
+int
+ExprResolveString(ExprDef * expr,
+ ExprResult * val_rtrn,
+ IdentLookupFunc lookup, XPointer lookupPriv)
+{
+ int ok = 0;
+ ExprResult leftRtrn, rightRtrn;
+ ExprDef *left;
+ ExprDef *right;
+ char *bogus = NULL;
+
+ switch (expr->op)
+ {
+ case ExprValue:
+ if (expr->type != TypeString)
+ {
+ ERROR1("Found constant of type %s, expected a string\n",
+ exprTypeText(expr->type));
+ return False;
+ }
+ val_rtrn->str = XkbAtomGetString(NULL, expr->value.str);
+ if (val_rtrn->str == NULL)
+ {
+ static char *empty = "";
+ val_rtrn->str = empty;
+ }
+ return True;
+ case ExprIdent:
+ if (lookup)
+ {
+ ok = (*lookup) (lookupPriv,
+ None, expr->value.str, TypeString, val_rtrn);
+ }
+ if (!ok)
+ ERROR1("Identifier \"%s\" of type string not found\n",
+ XkbAtomText(NULL, expr->value.str, XkbMessage));
+ return ok;
+ case ExprFieldRef:
+ if (lookup)
+ {
+ ok = (*lookup) (lookupPriv,
+ expr->value.field.element,
+ expr->value.field.field, TypeString, val_rtrn);
+ }
+ if (!ok)
+ ERROR2("Default \"%s.%s\" of type string not found\n",
+ XkbAtomText(NULL, expr->value.field.element, XkbMessage),
+ XkbAtomText(NULL, expr->value.field.field, XkbMessage));
+ return ok;
+ case OpAdd:
+ left = expr->value.binary.left;
+ right = expr->value.binary.right;
+ if (ExprResolveString(left, &leftRtrn, lookup, lookupPriv) &&
+ ExprResolveString(right, &rightRtrn, lookup, lookupPriv))
+ {
+ int len;
+ char *new;
+ len = strlen(leftRtrn.str) + strlen(rightRtrn.str) + 1;
+ new = (char *) uAlloc(len);
+ if (new)
+ {
+ sprintf(new, "%s%s", leftRtrn.str, rightRtrn.str);
+ val_rtrn->str = new;
+ return True;
+ }
+ }
+ return False;
+ case OpSubtract:
+ if (bogus == NULL)
+ bogus = "Subtraction";
+ case OpMultiply:
+ if (bogus == NULL)
+ bogus = "Multiplication";
+ case OpDivide:
+ if (bogus == NULL)
+ bogus = "Division";
+ case OpAssign:
+ if (bogus == NULL)
+ bogus = "Assignment";
+ case OpNegate:
+ if (bogus == NULL)
+ bogus = "Negation";
+ case OpInvert:
+ if (bogus == NULL)
+ bogus = "Bitwise complement";
+ ERROR1("%s of string values not permitted\n", bogus);
+ return False;
+ case OpNot:
+ left = expr->value.child;
+ if (ExprResolveString(left, &leftRtrn, lookup, lookupPriv))
+ {
+ ERROR("The ! operator cannot be applied to a string\n");
+ }
+ return False;
+ case OpUnaryPlus:
+ left = expr->value.child;
+ if (ExprResolveString(left, &leftRtrn, lookup, lookupPriv))
+ {
+ ERROR("The + operator cannot be applied to a string\n");
+ }
+ return False;
+ default:
+ WSGO1("Unknown operator %d in ResolveString\n", expr->op);
+ break;
+ }
+ return False;
+}
+
+int
+ExprResolveKeyName(ExprDef * expr,
+ ExprResult * val_rtrn,
+ IdentLookupFunc lookup, XPointer lookupPriv)
+{
+ int ok = 0;
+ ExprDef *left;
+ ExprResult leftRtrn;
+ char *bogus = NULL;
+
+ switch (expr->op)
+ {
+ case ExprValue:
+ if (expr->type != TypeKeyName)
+ {
+ ERROR1("Found constant of type %s, expected a key name\n",
+ exprTypeText(expr->type));
+ return False;
+ }
+ memcpy(val_rtrn->keyName.name, expr->value.keyName, XkbKeyNameLength);
+ return True;
+ case ExprIdent:
+ if (lookup)
+ {
+ ok = (*lookup) (lookupPriv,
+ None, expr->value.str, TypeString, val_rtrn);
+ }
+ if (!ok)
+ ERROR1("Identifier \"%s\" of type string not found\n",
+ XkbAtomText(NULL, expr->value.str, XkbMessage));
+ return ok;
+ case ExprFieldRef:
+ if (lookup)
+ {
+ ok = (*lookup) (lookupPriv,
+ expr->value.field.element,
+ expr->value.field.field, TypeString, val_rtrn);
+ }
+ if (!ok)
+ ERROR2("Default \"%s.%s\" of type key name not found\n",
+ XkbAtomText(NULL, expr->value.field.element, XkbMessage),
+ XkbAtomText(NULL, expr->value.field.field, XkbMessage));
+ return ok;
+ case OpAdd:
+ if (bogus == NULL)
+ bogus = "Addition";
+ case OpSubtract:
+ if (bogus == NULL)
+ bogus = "Subtraction";
+ case OpMultiply:
+ if (bogus == NULL)
+ bogus = "Multiplication";
+ case OpDivide:
+ if (bogus == NULL)
+ bogus = "Division";
+ case OpAssign:
+ if (bogus == NULL)
+ bogus = "Assignment";
+ case OpNegate:
+ if (bogus == NULL)
+ bogus = "Negation";
+ case OpInvert:
+ if (bogus == NULL)
+ bogus = "Bitwise complement";
+ ERROR1("%s of key name values not permitted\n", bogus);
+ return False;
+ case OpNot:
+ left = expr->value.binary.left;
+ if (ExprResolveString(left, &leftRtrn, lookup, lookupPriv))
+ {
+ ERROR("The ! operator cannot be applied to a key name\n");
+ }
+ return False;
+ case OpUnaryPlus:
+ left = expr->value.binary.left;
+ if (ExprResolveString(left, &leftRtrn, lookup, lookupPriv))
+ {
+ ERROR("The + operator cannot be applied to a key name\n");
+ }
+ return False;
+ default:
+ WSGO1("Unknown operator %d in ResolveKeyName\n", expr->op);
+ break;
+ }
+ return False;
+}
+
+/***====================================================================***/
+
+int
+ExprResolveEnum(ExprDef * expr, ExprResult * val_rtrn, LookupEntry * values)
+{
+ if (expr->op != ExprIdent)
+ {
+ ERROR1("Found a %s where an enumerated value was expected\n",
+ exprOpText(expr->op));
+ return False;
+ }
+ if (!SimpleLookup((XPointer) values, (Atom) None, expr->value.str,
+ (unsigned) TypeInt, val_rtrn))
+ {
+ int nOut = 0;
+ ERROR1("Illegal identifier %s (expected one of: ",
+ XkbAtomText(NULL, expr->value.str, XkbMessage));
+ while (values && values->name)
+ {
+ if (nOut != 0)
+ INFO1(", %s", values->name);
+ else
+ INFO1("%s", values->name);
+ values++;
+ nOut++;
+ }
+ INFO(")\n");
+ return False;
+ }
+ return True;
+}
+
+int
+ExprResolveMask(ExprDef * expr,
+ ExprResult * val_rtrn,
+ IdentLookupFunc lookup, XPointer lookupPriv)
+{
+ int ok = 0;
+ ExprResult leftRtrn, rightRtrn;
+ ExprDef *left, *right;
+ char *bogus = NULL;
+
+ switch (expr->op)
+ {
+ case ExprValue:
+ if (expr->type != TypeInt)
+ {
+ ERROR1
+ ("Found constant of type %s where a mask was expected\n",
+ exprTypeText(expr->type));
+ return False;
+ }
+ val_rtrn->ival = expr->value.ival;
+ return True;
+ case ExprIdent:
+ if (lookup)
+ {
+ ok = (*lookup) (lookupPriv,
+ None, expr->value.str, TypeInt, val_rtrn);
+ }
+ if (!ok)
+ ERROR1("Identifier \"%s\" of type int is unknown\n",
+ XkbAtomText(NULL, expr->value.str, XkbMessage));
+ return ok;
+ case ExprFieldRef:
+ if (lookup)
+ {
+ ok = (*lookup) (lookupPriv,
+ expr->value.field.element,
+ expr->value.field.field, TypeInt, val_rtrn);
+ }
+ if (!ok)
+ ERROR2("Default \"%s.%s\" of type int is unknown\n",
+ XkbAtomText(NULL, expr->value.field.element, XkbMessage),
+ XkbAtomText(NULL, expr->value.field.field, XkbMessage));
+ return ok;
+ case ExprArrayRef:
+ bogus = "array reference";
+ case ExprActionDecl:
+ if (bogus == NULL)
+ bogus = "function use";
+ ERROR1("Unexpected %s in mask expression\n", bogus);
+ ACTION("Expression ignored\n");
+ return False;
+ case OpAdd:
+ case OpSubtract:
+ case OpMultiply:
+ case OpDivide:
+ left = expr->value.binary.left;
+ right = expr->value.binary.right;
+ if (ExprResolveMask(left, &leftRtrn, lookup, lookupPriv) &&
+ ExprResolveMask(right, &rightRtrn, lookup, lookupPriv))
+ {
+ switch (expr->op)
+ {
+ case OpAdd:
+ val_rtrn->ival = leftRtrn.ival | rightRtrn.ival;
+ break;
+ case OpSubtract:
+ val_rtrn->ival = leftRtrn.ival & (~rightRtrn.ival);
+ break;
+ case OpMultiply:
+ case OpDivide:
+ ERROR1("Cannot %s masks\n",
+ expr->op == OpDivide ? "divide" : "multiply");
+ ACTION("Illegal operation ignored\n");
+ return False;
+ }
+ return True;
+ }
+ return False;
+ case OpAssign:
+ WSGO("Assignment operator not implemented yet\n");
+ break;
+ case OpInvert:
+ left = expr->value.child;
+ if (ExprResolveInteger(left, &leftRtrn, lookup, lookupPriv))
+ {
+ val_rtrn->ival = ~leftRtrn.ival;
+ return True;
+ }
+ return False;
+ case OpUnaryPlus:
+ case OpNegate:
+ case OpNot:
+ left = expr->value.child;
+ if (ExprResolveInteger(left, &leftRtrn, lookup, lookupPriv))
+ {
+ ERROR1("The %s operator cannot be used with a mask\n",
+ (expr->op == OpNegate ? "-" : "!"));
+ }
+ return False;
+ default:
+ WSGO1("Unknown operator %d in ResolveMask\n", expr->op);
+ break;
+ }
+ return False;
+}
+
+int
+ExprResolveKeySym(ExprDef * expr,
+ ExprResult * val_rtrn,
+ IdentLookupFunc lookup, XPointer lookupPriv)
+{
+ int ok = 0;
+ KeySym sym;
+
+ if (expr->op == ExprIdent)
+ {
+ char *str;
+ str = XkbAtomGetString(NULL, expr->value.str);
+ if ((str != NULL) && ((sym = XStringToKeysym(str)) != NoSymbol))
+ {
+ val_rtrn->uval = sym;
+ return True;
+ }
+ }
+ ok = ExprResolveInteger(expr, val_rtrn, lookup, lookupPriv);
+ if ((ok) && (val_rtrn->uval < 10))
+ val_rtrn->uval += '0';
+ return ok;
+}
diff --git a/xkbcomp/expr.h b/xkbcomp/expr.h
index bd7e82248..02519f941 100644
--- a/xkbcomp/expr.h
+++ b/xkbcomp/expr.h
@@ -1,172 +1,172 @@
-/************************************************************
- Copyright (c) 1994 by Silicon Graphics Computer Systems, Inc.
-
- Permission to use, copy, modify, and distribute this
- software and its documentation for any purpose and without
- fee is hereby granted, provided that the above copyright
- notice appear in all copies and that both that copyright
- notice and this permission notice appear in supporting
- documentation, and that the name of Silicon Graphics not be
- used in advertising or publicity pertaining to distribution
- of the software without specific prior written permission.
- Silicon Graphics makes no representation about the suitability
- of this software for any purpose. It is provided "as is"
- without any express or implied warranty.
-
- SILICON GRAPHICS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS
- SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
- AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON
- GRAPHICS BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL
- DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
- DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
- OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH
- THE USE OR PERFORMANCE OF THIS SOFTWARE.
-
- ********************************************************/
-
-#ifndef EXPR_H
-#define EXPR_H 1
-
-typedef union _ExprResult
-{
- char *str;
- int ival;
- unsigned uval;
- XkbKeyNameRec keyName;
-} ExprResult;
-
-typedef Bool(*IdentLookupFunc) (XPointer /* priv */ ,
- Atom /* elem */ ,
- Atom /* field */ ,
- unsigned /* type */ ,
- ExprResult * /* val_rtrn */
- );
-
-extern char *exprTypeText(unsigned /* type */
- );
-
-extern int ExprResolveLhs(ExprDef * /* expr */ ,
- ExprResult * /* elem_rtrn */ ,
- ExprResult * /* field_rtrn */ ,
- ExprDef ** /* index_rtrn */
- );
-
-typedef struct _LookupPriv
-{
- XPointer priv;
- IdentLookupFunc chain;
- XPointer chainPriv;
-} LookupPriv;
-
-typedef struct _LookupEntry
-{
- const char *name;
- unsigned result;
-} LookupEntry;
-
-typedef struct _LookupTable
-{
- char *element;
- LookupEntry *entries;
- struct _LookupTable *nextElement;
-} LookupTable;
-
-
-extern char *exprOpText(unsigned /* type */
- );
-
-extern int RadioLookup(XPointer /* priv */ ,
- Atom /* elem */ ,
- Atom /* field */ ,
- unsigned /* type */ ,
- ExprResult * /* val_rtrn */
- );
-
-extern int SimpleLookup(XPointer /* priv */ ,
- Atom /* elem */ ,
- Atom /* field */ ,
- unsigned /* type */ ,
- ExprResult * /* val_rtrn */
- );
-
-extern int TableLookup(XPointer /* priv */ ,
- Atom /* elem */ ,
- Atom /* field */ ,
- unsigned /* type */ ,
- ExprResult * /* val_rtrn */
- );
-
-extern int LookupModIndex(XPointer /* priv */ ,
- Atom /* elem */ ,
- Atom /* field */ ,
- unsigned /* type */ ,
- ExprResult * /* val_rtrn */
- );
-
-extern int LookupModMask(XPointer /* priv */ ,
- Atom /* elem */ ,
- Atom /* field */ ,
- unsigned /* type */ ,
- ExprResult * /* val_rtrn */
- );
-
-extern int ExprResolveModIndex(ExprDef * /* expr */ ,
- ExprResult * /* val_rtrn */ ,
- IdentLookupFunc /* lookup */ ,
- XPointer /* lookupPriv */
- );
-
-extern int ExprResolveModMask(ExprDef * /* expr */ ,
- ExprResult * /* val_rtrn */ ,
- IdentLookupFunc /* lookup */ ,
- XPointer /* priv */
- );
-
-extern int ExprResolveBoolean(ExprDef * /* expr */ ,
- ExprResult * /* val_rtrn */ ,
- IdentLookupFunc /* lookup */ ,
- XPointer /* lookupPriv */
- );
-
-extern int ExprResolveInteger(ExprDef * /* expr */ ,
- ExprResult * /* val_rtrn */ ,
- IdentLookupFunc /* lookup */ ,
- XPointer /* lookupPriv */
- );
-
-extern int ExprResolveFloat(ExprDef * /* expr */ ,
- ExprResult * /* val_rtrn */ ,
- IdentLookupFunc /* lookup */ ,
- XPointer /* lookupPriv */
- );
-
-extern int ExprResolveString(ExprDef * /* expr */ ,
- ExprResult * /* val_rtrn */ ,
- IdentLookupFunc /* lookup */ ,
- XPointer /* lookupPriv */
- );
-
-extern int ExprResolveKeyName(ExprDef * /* expr */ ,
- ExprResult * /* val_rtrn */ ,
- IdentLookupFunc /* lookup */ ,
- XPointer /* lookupPriv */
- );
-
-extern int ExprResolveEnum(ExprDef * /* expr */ ,
- ExprResult * /* val_rtrn */ ,
- LookupEntry * /* values */
- );
-
-extern int ExprResolveMask(ExprDef * /* expr */ ,
- ExprResult * /* val_rtrn */ ,
- IdentLookupFunc /* lookup */ ,
- XPointer /* lookupPriv */
- );
-
-extern int ExprResolveKeySym(ExprDef * /* expr */ ,
- ExprResult * /* val_rtrn */ ,
- IdentLookupFunc /* lookup */ ,
- XPointer /* lookupPriv */
- );
-
-#endif /* EXPR_H */
+/************************************************************
+ Copyright (c) 1994 by Silicon Graphics Computer Systems, Inc.
+
+ Permission to use, copy, modify, and distribute this
+ software and its documentation for any purpose and without
+ fee is hereby granted, provided that the above copyright
+ notice appear in all copies and that both that copyright
+ notice and this permission notice appear in supporting
+ documentation, and that the name of Silicon Graphics not be
+ used in advertising or publicity pertaining to distribution
+ of the software without specific prior written permission.
+ Silicon Graphics makes no representation about the suitability
+ of this software for any purpose. It is provided "as is"
+ without any express or implied warranty.
+
+ SILICON GRAPHICS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS
+ SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
+ AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON
+ GRAPHICS BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL
+ DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
+ DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
+ OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH
+ THE USE OR PERFORMANCE OF THIS SOFTWARE.
+
+ ********************************************************/
+
+#ifndef EXPR_H
+#define EXPR_H 1
+
+typedef union _ExprResult
+{
+ char *str;
+ int ival;
+ unsigned uval;
+ XkbKeyNameRec keyName;
+} ExprResult;
+
+typedef Bool(*IdentLookupFunc) (XPointer /* priv */ ,
+ Atom /* elem */ ,
+ Atom /* field */ ,
+ unsigned /* type */ ,
+ ExprResult * /* val_rtrn */
+ );
+
+extern char *exprTypeText(unsigned /* type */
+ );
+
+extern int ExprResolveLhs(ExprDef * /* expr */ ,
+ ExprResult * /* elem_rtrn */ ,
+ ExprResult * /* field_rtrn */ ,
+ ExprDef ** /* index_rtrn */
+ );
+
+typedef struct _LookupPriv
+{
+ XPointer priv;
+ IdentLookupFunc chain;
+ XPointer chainPriv;
+} LookupPriv;
+
+typedef struct _LookupEntry
+{
+ const char *name;
+ unsigned result;
+} LookupEntry;
+
+typedef struct _LookupTable
+{
+ char *element;
+ LookupEntry *entries;
+ struct _LookupTable *nextElement;
+} LookupTable;
+
+
+extern char *exprOpText(unsigned /* type */
+ );
+
+extern int RadioLookup(XPointer /* priv */ ,
+ Atom /* elem */ ,
+ Atom /* field */ ,
+ unsigned /* type */ ,
+ ExprResult * /* val_rtrn */
+ );
+
+extern int SimpleLookup(XPointer /* priv */ ,
+ Atom /* elem */ ,
+ Atom /* field */ ,
+ unsigned /* type */ ,
+ ExprResult * /* val_rtrn */
+ );
+
+extern int TableLookup(XPointer /* priv */ ,
+ Atom /* elem */ ,
+ Atom /* field */ ,
+ unsigned /* type */ ,
+ ExprResult * /* val_rtrn */
+ );
+
+extern int LookupModIndex(XPointer /* priv */ ,
+ Atom /* elem */ ,
+ Atom /* field */ ,
+ unsigned /* type */ ,
+ ExprResult * /* val_rtrn */
+ );
+
+extern int LookupModMask(XPointer /* priv */ ,
+ Atom /* elem */ ,
+ Atom /* field */ ,
+ unsigned /* type */ ,
+ ExprResult * /* val_rtrn */
+ );
+
+extern int ExprResolveModIndex(ExprDef * /* expr */ ,
+ ExprResult * /* val_rtrn */ ,
+ IdentLookupFunc /* lookup */ ,
+ XPointer /* lookupPriv */
+ );
+
+extern int ExprResolveModMask(ExprDef * /* expr */ ,
+ ExprResult * /* val_rtrn */ ,
+ IdentLookupFunc /* lookup */ ,
+ XPointer /* priv */
+ );
+
+extern int ExprResolveBoolean(ExprDef * /* expr */ ,
+ ExprResult * /* val_rtrn */ ,
+ IdentLookupFunc /* lookup */ ,
+ XPointer /* lookupPriv */
+ );
+
+extern int ExprResolveInteger(ExprDef * /* expr */ ,
+ ExprResult * /* val_rtrn */ ,
+ IdentLookupFunc /* lookup */ ,
+ XPointer /* lookupPriv */
+ );
+
+extern int ExprResolveFloat(ExprDef * /* expr */ ,
+ ExprResult * /* val_rtrn */ ,
+ IdentLookupFunc /* lookup */ ,
+ XPointer /* lookupPriv */
+ );
+
+extern int ExprResolveString(ExprDef * /* expr */ ,
+ ExprResult * /* val_rtrn */ ,
+ IdentLookupFunc /* lookup */ ,
+ XPointer /* lookupPriv */
+ );
+
+extern int ExprResolveKeyName(ExprDef * /* expr */ ,
+ ExprResult * /* val_rtrn */ ,
+ IdentLookupFunc /* lookup */ ,
+ XPointer /* lookupPriv */
+ );
+
+extern int ExprResolveEnum(ExprDef * /* expr */ ,
+ ExprResult * /* val_rtrn */ ,
+ LookupEntry * /* values */
+ );
+
+extern int ExprResolveMask(ExprDef * /* expr */ ,
+ ExprResult * /* val_rtrn */ ,
+ IdentLookupFunc /* lookup */ ,
+ XPointer /* lookupPriv */
+ );
+
+extern int ExprResolveKeySym(ExprDef * /* expr */ ,
+ ExprResult * /* val_rtrn */ ,
+ IdentLookupFunc /* lookup */ ,
+ XPointer /* lookupPriv */
+ );
+
+#endif /* EXPR_H */
diff --git a/xkbcomp/indicators.c b/xkbcomp/indicators.c
index 63dc18b7b..d4a362fb8 100644
--- a/xkbcomp/indicators.c
+++ b/xkbcomp/indicators.c
@@ -1,575 +1,575 @@
-/************************************************************
- Copyright (c) 1994 by Silicon Graphics Computer Systems, Inc.
-
- Permission to use, copy, modify, and distribute this
- software and its documentation for any purpose and without
- fee is hereby granted, provided that the above copyright
- notice appear in all copies and that both that copyright
- notice and this permission notice appear in supporting
- documentation, and that the name of Silicon Graphics not be
- used in advertising or publicity pertaining to distribution
- of the software without specific prior written permission.
- Silicon Graphics makes no representation about the suitability
- of this software for any purpose. It is provided "as is"
- without any express or implied warranty.
-
- SILICON GRAPHICS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS
- SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
- AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON
- GRAPHICS BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL
- DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
- DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
- OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH
- THE USE OR PERFORMANCE OF THIS SOFTWARE.
-
- ********************************************************/
-
-#include "xkbcomp.h"
-#include "misc.h"
-#include "tokens.h"
-#include "expr.h"
-#include "vmod.h"
-#include "indicators.h"
-#include "action.h"
-#include "compat.h"
-
-/***====================================================================***/
-
-#define ReportIndicatorBadType(d,l,f,w) \
- ReportBadType("indicator map",(f),\
- XkbAtomText((d),(l)->name,XkbMessage),(w))
-#define ReportIndicatorNotArray(d,l,f) \
- ReportNotArray("indicator map",(f),\
- XkbAtomText((d),(l)->name,XkbMessage))
-
-/***====================================================================***/
-
-void
-ClearIndicatorMapInfo(Display * dpy, LEDInfo * info)
-{
- info->name = XkbInternAtom(dpy, "default", False);
- info->indicator = _LED_NotBound;
- info->flags = info->which_mods = info->real_mods = 0;
- info->vmods = 0;
- info->which_groups = info->groups = 0;
- info->ctrls = 0;
- return;
-}
-
-LEDInfo *
-AddIndicatorMap(LEDInfo * oldLEDs, LEDInfo * new)
-{
- LEDInfo *old, *last;
- unsigned collide;
-
- last = NULL;
- for (old = oldLEDs; old != NULL; old = (LEDInfo *) old->defs.next)
- {
- if (old->name == new->name)
- {
- if ((old->real_mods == new->real_mods) &&
- (old->vmods == new->vmods) &&
- (old->groups == new->groups) &&
- (old->ctrls == new->ctrls) &&
- (old->which_mods == new->which_mods) &&
- (old->which_groups == new->which_groups))
- {
- old->defs.defined |= new->defs.defined;
- return oldLEDs;
- }
- if (new->defs.merge == MergeReplace)
- {
- CommonInfo *next = old->defs.next;
- if (((old->defs.fileID == new->defs.fileID)
- && (warningLevel > 0)) || (warningLevel > 9))
- {
- WARN1("Map for indicator %s redefined\n",
- XkbAtomText(NULL, old->name, XkbMessage));
- ACTION("Earlier definition ignored\n");
- }
- *old = *new;
- old->defs.next = next;
- return oldLEDs;
- }
- collide = 0;
- if (UseNewField(_LED_Index, &old->defs, &new->defs, &collide))
- {
- old->indicator = new->indicator;
- old->defs.defined |= _LED_Index;
- }
- if (UseNewField(_LED_Mods, &old->defs, &new->defs, &collide))
- {
- old->which_mods = new->which_mods;
- old->real_mods = new->real_mods;
- old->vmods = new->vmods;
- old->defs.defined |= _LED_Mods;
- }
- if (UseNewField(_LED_Groups, &old->defs, &new->defs, &collide))
- {
- old->which_groups = new->which_groups;
- old->groups = new->groups;
- old->defs.defined |= _LED_Groups;
- }
- if (UseNewField(_LED_Ctrls, &old->defs, &new->defs, &collide))
- {
- old->ctrls = new->ctrls;
- old->defs.defined |= _LED_Ctrls;
- }
- if (UseNewField(_LED_Explicit, &old->defs, &new->defs, &collide))
- {
- old->flags &= ~XkbIM_NoExplicit;
- old->flags |= (new->flags & XkbIM_NoExplicit);
- old->defs.defined |= _LED_Explicit;
- }
- if (UseNewField(_LED_Automatic, &old->defs, &new->defs, &collide))
- {
- old->flags &= ~XkbIM_NoAutomatic;
- old->flags |= (new->flags & XkbIM_NoAutomatic);
- old->defs.defined |= _LED_Automatic;
- }
- if (UseNewField(_LED_DrivesKbd, &old->defs, &new->defs, &collide))
- {
- old->flags &= ~XkbIM_LEDDrivesKB;
- old->flags |= (new->flags & XkbIM_LEDDrivesKB);
- old->defs.defined |= _LED_DrivesKbd;
- }
- if (collide)
- {
- WARN1("Map for indicator %s redefined\n",
- XkbAtomText(NULL, old->name, XkbMessage));
- ACTION1("Using %s definition for duplicate fields\n",
- (new->defs.merge == MergeAugment ? "first" : "last"));
- }
- return oldLEDs;
- }
- if (old->defs.next == NULL)
- last = old;
- }
- /* new definition */
- old = uTypedAlloc(LEDInfo);
- if (!old)
- {
- WSGO("Couldn't allocate indicator map\n");
- ACTION1("Map for indicator %s not compiled\n",
- XkbAtomText(NULL, new->name, XkbMessage));
- return NULL;
- }
- *old = *new;
- old->defs.next = NULL;
- if (last)
- {
- last->defs.next = &old->defs;
- return oldLEDs;
- }
- return old;
-}
-
-static LookupEntry modComponentNames[] = {
- {"base", XkbIM_UseBase}
- ,
- {"latched", XkbIM_UseLatched}
- ,
- {"locked", XkbIM_UseLocked}
- ,
- {"effective", XkbIM_UseEffective}
- ,
- {"compat", XkbIM_UseCompat}
- ,
- {"any", XkbIM_UseAnyMods}
- ,
- {"none", 0}
- ,
- {NULL, 0}
-};
-static LookupEntry groupComponentNames[] = {
- {"base", XkbIM_UseBase}
- ,
- {"latched", XkbIM_UseLatched}
- ,
- {"locked", XkbIM_UseLocked}
- ,
- {"effective", XkbIM_UseEffective}
- ,
- {"any", XkbIM_UseAnyGroup}
- ,
- {"none", 0}
- ,
- {NULL, 0}
-};
-
-int
-SetIndicatorMapField(LEDInfo * led,
- XkbDescPtr xkb,
- char *field, ExprDef * arrayNdx, ExprDef * value)
-{
- ExprResult rtrn;
- Bool ok;
-
- ok = True;
- if ((uStrCaseCmp(field, "modifiers") == 0)
- || (uStrCaseCmp(field, "mods") == 0))
- {
- if (arrayNdx != NULL)
- return ReportIndicatorNotArray(xkb->dpy, led, field);
- if (!ExprResolveModMask(value, &rtrn, LookupVModMask, (XPointer) xkb))
- return ReportIndicatorBadType(xkb->dpy, led, field,
- "modifier mask");
- led->real_mods = rtrn.uval & 0xff;
- led->vmods = (rtrn.uval >> 8) & 0xff;
- led->defs.defined |= _LED_Mods;
- }
- else if (uStrCaseCmp(field, "groups") == 0)
- {
- if (arrayNdx != NULL)
- return ReportIndicatorNotArray(xkb->dpy, led, field);
- if (!ExprResolveMask
- (value, &rtrn, SimpleLookup, (XPointer) groupNames))
- return ReportIndicatorBadType(xkb->dpy, led, field, "group mask");
- led->groups = rtrn.uval;
- led->defs.defined |= _LED_Groups;
- }
- else if ((uStrCaseCmp(field, "controls") == 0) ||
- (uStrCaseCmp(field, "ctrls") == 0))
- {
- if (arrayNdx != NULL)
- return ReportIndicatorNotArray(xkb->dpy, led, field);
- if (!ExprResolveMask
- (value, &rtrn, SimpleLookup, (XPointer) ctrlNames))
- return ReportIndicatorBadType(xkb->dpy, led, field,
- "controls mask");
- led->ctrls = rtrn.uval;
- led->defs.defined |= _LED_Ctrls;
- }
- else if (uStrCaseCmp(field, "allowexplicit") == 0)
- {
- if (arrayNdx != NULL)
- return ReportIndicatorNotArray(xkb->dpy, led, field);
- if (!ExprResolveBoolean(value, &rtrn, NULL, NULL))
- return ReportIndicatorBadType(xkb->dpy, led, field, "boolean");
- if (rtrn.uval)
- led->flags &= ~XkbIM_NoExplicit;
- else
- led->flags |= XkbIM_NoExplicit;
- led->defs.defined |= _LED_Explicit;
- }
- else if ((uStrCaseCmp(field, "whichmodstate") == 0) ||
- (uStrCaseCmp(field, "whichmodifierstate") == 0))
- {
- if (arrayNdx != NULL)
- return ReportIndicatorNotArray(xkb->dpy, led, field);
- if (!ExprResolveMask(value, &rtrn, SimpleLookup,
- (XPointer) modComponentNames))
- {
- return ReportIndicatorBadType(xkb->dpy, led, field,
- "mask of modifier state components");
- }
- led->which_mods = rtrn.uval;
- }
- else if (uStrCaseCmp(field, "whichgroupstate") == 0)
- {
- if (arrayNdx != NULL)
- return ReportIndicatorNotArray(xkb->dpy, led, field);
- if (!ExprResolveMask(value, &rtrn, SimpleLookup,
- (XPointer) groupComponentNames))
- {
- return ReportIndicatorBadType(xkb->dpy, led, field,
- "mask of group state components");
- }
- led->which_groups = rtrn.uval;
- }
- else if ((uStrCaseCmp(field, "driveskbd") == 0) ||
- (uStrCaseCmp(field, "driveskeyboard") == 0) ||
- (uStrCaseCmp(field, "leddriveskbd") == 0) ||
- (uStrCaseCmp(field, "leddriveskeyboard") == 0) ||
- (uStrCaseCmp(field, "indicatordriveskbd") == 0) ||
- (uStrCaseCmp(field, "indicatordriveskeyboard") == 0))
- {
- if (arrayNdx != NULL)
- return ReportIndicatorNotArray(xkb->dpy, led, field);
- if (!ExprResolveBoolean(value, &rtrn, NULL, NULL))
- return ReportIndicatorBadType(xkb->dpy, led, field, "boolean");
- if (rtrn.uval)
- led->flags |= XkbIM_LEDDrivesKB;
- else
- led->flags &= ~XkbIM_LEDDrivesKB;
- led->defs.defined |= _LED_DrivesKbd;
- }
- else if (uStrCaseCmp(field, "index") == 0)
- {
- if (arrayNdx != NULL)
- return ReportIndicatorNotArray(xkb->dpy, led, field);
- if (!ExprResolveInteger(value, &rtrn, NULL, NULL))
- return ReportIndicatorBadType(xkb->dpy, led, field,
- "indicator index");
- if ((rtrn.uval < 1) || (rtrn.uval > 32))
- {
- ERROR2("Illegal indicator index %d (range 1..%d)\n",
- rtrn.uval, XkbNumIndicators);
- ACTION1("Index definition for %s indicator ignored\n",
- XkbAtomText(NULL, led->name, XkbMessage));
- return False;
- }
- led->indicator = rtrn.uval;
- led->defs.defined |= _LED_Index;
- }
- else
- {
- ERROR2("Unknown field %s in map for %s indicator\n", field,
- XkbAtomText(NULL, led->name, XkbMessage));
- ACTION("Definition ignored\n");
- ok = False;
- }
- return ok;
-}
-
-LEDInfo *
-HandleIndicatorMapDef(IndicatorMapDef * def,
- XkbDescPtr xkb,
- LEDInfo * dflt, LEDInfo * oldLEDs, unsigned merge)
-{
- LEDInfo led, *rtrn;
- VarDef *var;
- Bool ok;
-
- if (def->merge != MergeDefault)
- merge = def->merge;
-
- led = *dflt;
- led.defs.merge = merge;
- led.name = def->name;
-
- ok = True;
- for (var = def->body; var != NULL; var = (VarDef *) var->common.next)
- {
- ExprResult elem, field;
- ExprDef *arrayNdx;
- if (!ExprResolveLhs(var->name, &elem, &field, &arrayNdx))
- {
- ok = False;
- continue;
- }
- if (elem.str != NULL)
- {
- ERROR1
- ("Cannot set defaults for \"%s\" element in indicator map\n",
- elem.str);
- ACTION2("Assignment to %s.%s ignored\n", elem.str, field.str);
- ok = False;
- }
- else
- {
- ok = SetIndicatorMapField(&led, xkb, field.str, arrayNdx,
- var->value) && ok;
- }
- }
- if (ok)
- {
- rtrn = AddIndicatorMap(oldLEDs, &led);
- return rtrn;
- }
- return NULL;
-}
-
-Bool
-CopyIndicatorMapDefs(XkbFileInfo * result, LEDInfo * leds,
- LEDInfo ** unboundRtrn)
-{
- LEDInfo *led, *next;
- LEDInfo *unbound, *last;
- XkbDescPtr xkb;
-
- xkb = result->xkb;
- if (XkbAllocNames(xkb, XkbIndicatorNamesMask, 0, 0) != Success)
- {
- WSGO("Couldn't allocate names\n");
- ACTION("Indicator names may be incorrect\n");
- }
- if (XkbAllocIndicatorMaps(xkb) != Success)
- {
- WSGO("Can't allocate indicator maps\n");
- ACTION("Indicator map definitions may be lost\n");
- return False;
- }
- last = unbound = (unboundRtrn ? *unboundRtrn : NULL);
- while ((last != NULL) && (last->defs.next != NULL))
- {
- last = (LEDInfo *) last->defs.next;
- }
- for (led = leds; led != NULL; led = next)
- {
- next = (LEDInfo *) led->defs.next;
- if ((led->groups != 0) && (led->which_groups == 0))
- led->which_groups = XkbIM_UseEffective;
- if ((led->which_mods == 0) && ((led->real_mods) || (led->vmods)))
- led->which_mods = XkbIM_UseEffective;
- if ((led->indicator == _LED_NotBound) || (!xkb->indicators))
- {
- if (unboundRtrn != NULL)
- {
- led->defs.next = NULL;
- if (last != NULL)
- last->defs.next = (CommonInfo *) led;
- else
- unbound = led;
- last = led;
- }
- else
- uFree(led);
- }
- else
- {
- register XkbIndicatorMapPtr im;
- im = &xkb->indicators->maps[led->indicator - 1];
- im->flags = led->flags;
- im->which_groups = led->which_groups;
- im->groups = led->groups;
- im->which_mods = led->which_mods;
- im->mods.mask = led->real_mods;
- im->mods.real_mods = led->real_mods;
- im->mods.vmods = led->vmods;
- im->ctrls = led->ctrls;
- if (xkb->names != NULL)
- xkb->names->indicators[led->indicator - 1] = led->name;
- uFree(led);
- }
- }
- if (unboundRtrn != NULL)
- {
- *unboundRtrn = unbound;
- }
- return True;
-}
-
-Bool
-BindIndicators(XkbFileInfo * result,
- Bool force, LEDInfo * unbound, LEDInfo ** unboundRtrn)
-{
- XkbDescPtr xkb;
- register int i;
- register LEDInfo *led, *next, *last;
-
- xkb = result->xkb;
- if (xkb->names != NULL)
- {
- for (led = unbound; led != NULL; led = (LEDInfo *) led->defs.next)
- {
- if (led->indicator == _LED_NotBound)
- {
- for (i = 0; i < XkbNumIndicators; i++)
- {
- if (xkb->names->indicators[i] == led->name)
- {
- led->indicator = i + 1;
- break;
- }
- }
- }
- }
- if (force)
- {
- for (led = unbound; led != NULL; led = (LEDInfo *) led->defs.next)
- {
- if (led->indicator == _LED_NotBound)
- {
- for (i = 0; i < XkbNumIndicators; i++)
- {
- if (xkb->names->indicators[i] == None)
- {
- xkb->names->indicators[i] = led->name;
- led->indicator = i + 1;
- xkb->indicators->phys_indicators &= ~(1 << i);
- break;
- }
- }
- if (led->indicator == _LED_NotBound)
- {
- ERROR("No unnamed indicators found\n");
- ACTION1
- ("Virtual indicator map \"%s\" not bound\n",
- XkbAtomGetString(xkb->dpy, led->name));
- continue;
- }
- }
- }
- }
- }
- for (last = NULL, led = unbound; led != NULL; led = next)
- {
- next = (LEDInfo *) led->defs.next;
- if (led->indicator == _LED_NotBound)
- {
- if (force)
- {
- unbound = next;
- uFree(led);
- }
- else
- {
- if (last)
- last->defs.next = &led->defs;
- else
- unbound = led;
- last = led;
- }
- }
- else
- {
- if ((xkb->names != NULL) &&
- (xkb->names->indicators[led->indicator - 1] != led->name))
- {
- Atom old = xkb->names->indicators[led->indicator - 1];
- ERROR1("Multiple names bound to indicator %d\n",
- (unsigned int) led->indicator);
- ACTION2("Using %s, ignoring %s\n",
- XkbAtomGetString(xkb->dpy, old),
- XkbAtomGetString(xkb->dpy, led->name));
- led->indicator = _LED_NotBound;
- if (force)
- {
- uFree(led);
- unbound = next;
- }
- else
- {
- if (last)
- last->defs.next = &led->defs;
- else
- unbound = led;
- last = led;
- }
- }
- else
- {
- XkbIndicatorMapPtr map;
- map = &xkb->indicators->maps[led->indicator - 1];
- map->flags = led->flags;
- map->which_groups = led->which_groups;
- map->groups = led->groups;
- map->which_mods = led->which_mods;
- map->mods.mask = led->real_mods;
- map->mods.real_mods = led->real_mods;
- map->mods.vmods = led->vmods;
- map->ctrls = led->ctrls;
- if (last)
- last->defs.next = &next->defs;
- else
- unbound = next;
- led->defs.next = NULL;
- uFree(led);
- }
- }
- }
- if (unboundRtrn)
- {
- *unboundRtrn = unbound;
- }
- else if (unbound)
- {
- for (led = unbound; led != NULL; led = next)
- {
- next = (LEDInfo *) led->defs.next;
- uFree(led);
- }
- }
- return True;
-}
+/************************************************************
+ Copyright (c) 1994 by Silicon Graphics Computer Systems, Inc.
+
+ Permission to use, copy, modify, and distribute this
+ software and its documentation for any purpose and without
+ fee is hereby granted, provided that the above copyright
+ notice appear in all copies and that both that copyright
+ notice and this permission notice appear in supporting
+ documentation, and that the name of Silicon Graphics not be
+ used in advertising or publicity pertaining to distribution
+ of the software without specific prior written permission.
+ Silicon Graphics makes no representation about the suitability
+ of this software for any purpose. It is provided "as is"
+ without any express or implied warranty.
+
+ SILICON GRAPHICS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS
+ SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
+ AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON
+ GRAPHICS BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL
+ DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
+ DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
+ OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH
+ THE USE OR PERFORMANCE OF THIS SOFTWARE.
+
+ ********************************************************/
+
+#include "xkbcomp.h"
+#include "misc.h"
+#include "tokens.h"
+#include "expr.h"
+#include "vmod.h"
+#include "indicators.h"
+#include "action.h"
+#include "compat.h"
+
+/***====================================================================***/
+
+#define ReportIndicatorBadType(d,l,f,w) \
+ ReportBadType("indicator map",(f),\
+ XkbAtomText((d),(l)->name,XkbMessage),(w))
+#define ReportIndicatorNotArray(d,l,f) \
+ ReportNotArray("indicator map",(f),\
+ XkbAtomText((d),(l)->name,XkbMessage))
+
+/***====================================================================***/
+
+void
+ClearIndicatorMapInfo(Display * dpy, LEDInfo * info)
+{
+ info->name = XkbInternAtom(dpy, "default", False);
+ info->indicator = _LED_NotBound;
+ info->flags = info->which_mods = info->real_mods = 0;
+ info->vmods = 0;
+ info->which_groups = info->groups = 0;
+ info->ctrls = 0;
+ return;
+}
+
+LEDInfo *
+AddIndicatorMap(LEDInfo * oldLEDs, LEDInfo * new)
+{
+ LEDInfo *old, *last;
+ unsigned collide;
+
+ last = NULL;
+ for (old = oldLEDs; old != NULL; old = (LEDInfo *) old->defs.next)
+ {
+ if (old->name == new->name)
+ {
+ if ((old->real_mods == new->real_mods) &&
+ (old->vmods == new->vmods) &&
+ (old->groups == new->groups) &&
+ (old->ctrls == new->ctrls) &&
+ (old->which_mods == new->which_mods) &&
+ (old->which_groups == new->which_groups))
+ {
+ old->defs.defined |= new->defs.defined;
+ return oldLEDs;
+ }
+ if (new->defs.merge == MergeReplace)
+ {
+ CommonInfo *next = old->defs.next;
+ if (((old->defs.fileID == new->defs.fileID)
+ && (warningLevel > 0)) || (warningLevel > 9))
+ {
+ WARN1("Map for indicator %s redefined\n",
+ XkbAtomText(NULL, old->name, XkbMessage));
+ ACTION("Earlier definition ignored\n");
+ }
+ *old = *new;
+ old->defs.next = next;
+ return oldLEDs;
+ }
+ collide = 0;
+ if (UseNewField(_LED_Index, &old->defs, &new->defs, &collide))
+ {
+ old->indicator = new->indicator;
+ old->defs.defined |= _LED_Index;
+ }
+ if (UseNewField(_LED_Mods, &old->defs, &new->defs, &collide))
+ {
+ old->which_mods = new->which_mods;
+ old->real_mods = new->real_mods;
+ old->vmods = new->vmods;
+ old->defs.defined |= _LED_Mods;
+ }
+ if (UseNewField(_LED_Groups, &old->defs, &new->defs, &collide))
+ {
+ old->which_groups = new->which_groups;
+ old->groups = new->groups;
+ old->defs.defined |= _LED_Groups;
+ }
+ if (UseNewField(_LED_Ctrls, &old->defs, &new->defs, &collide))
+ {
+ old->ctrls = new->ctrls;
+ old->defs.defined |= _LED_Ctrls;
+ }
+ if (UseNewField(_LED_Explicit, &old->defs, &new->defs, &collide))
+ {
+ old->flags &= ~XkbIM_NoExplicit;
+ old->flags |= (new->flags & XkbIM_NoExplicit);
+ old->defs.defined |= _LED_Explicit;
+ }
+ if (UseNewField(_LED_Automatic, &old->defs, &new->defs, &collide))
+ {
+ old->flags &= ~XkbIM_NoAutomatic;
+ old->flags |= (new->flags & XkbIM_NoAutomatic);
+ old->defs.defined |= _LED_Automatic;
+ }
+ if (UseNewField(_LED_DrivesKbd, &old->defs, &new->defs, &collide))
+ {
+ old->flags &= ~XkbIM_LEDDrivesKB;
+ old->flags |= (new->flags & XkbIM_LEDDrivesKB);
+ old->defs.defined |= _LED_DrivesKbd;
+ }
+ if (collide)
+ {
+ WARN1("Map for indicator %s redefined\n",
+ XkbAtomText(NULL, old->name, XkbMessage));
+ ACTION1("Using %s definition for duplicate fields\n",
+ (new->defs.merge == MergeAugment ? "first" : "last"));
+ }
+ return oldLEDs;
+ }
+ if (old->defs.next == NULL)
+ last = old;
+ }
+ /* new definition */
+ old = uTypedAlloc(LEDInfo);
+ if (!old)
+ {
+ WSGO("Couldn't allocate indicator map\n");
+ ACTION1("Map for indicator %s not compiled\n",
+ XkbAtomText(NULL, new->name, XkbMessage));
+ return NULL;
+ }
+ *old = *new;
+ old->defs.next = NULL;
+ if (last)
+ {
+ last->defs.next = &old->defs;
+ return oldLEDs;
+ }
+ return old;
+}
+
+static LookupEntry modComponentNames[] = {
+ {"base", XkbIM_UseBase}
+ ,
+ {"latched", XkbIM_UseLatched}
+ ,
+ {"locked", XkbIM_UseLocked}
+ ,
+ {"effective", XkbIM_UseEffective}
+ ,
+ {"compat", XkbIM_UseCompat}
+ ,
+ {"any", XkbIM_UseAnyMods}
+ ,
+ {"none", 0}
+ ,
+ {NULL, 0}
+};
+static LookupEntry groupComponentNames[] = {
+ {"base", XkbIM_UseBase}
+ ,
+ {"latched", XkbIM_UseLatched}
+ ,
+ {"locked", XkbIM_UseLocked}
+ ,
+ {"effective", XkbIM_UseEffective}
+ ,
+ {"any", XkbIM_UseAnyGroup}
+ ,
+ {"none", 0}
+ ,
+ {NULL, 0}
+};
+
+int
+SetIndicatorMapField(LEDInfo * led,
+ XkbDescPtr xkb,
+ char *field, ExprDef * arrayNdx, ExprDef * value)
+{
+ ExprResult rtrn;
+ Bool ok;
+
+ ok = True;
+ if ((uStrCaseCmp(field, "modifiers") == 0)
+ || (uStrCaseCmp(field, "mods") == 0))
+ {
+ if (arrayNdx != NULL)
+ return ReportIndicatorNotArray(xkb->dpy, led, field);
+ if (!ExprResolveModMask(value, &rtrn, LookupVModMask, (XPointer) xkb))
+ return ReportIndicatorBadType(xkb->dpy, led, field,
+ "modifier mask");
+ led->real_mods = rtrn.uval & 0xff;
+ led->vmods = (rtrn.uval >> 8) & 0xff;
+ led->defs.defined |= _LED_Mods;
+ }
+ else if (uStrCaseCmp(field, "groups") == 0)
+ {
+ if (arrayNdx != NULL)
+ return ReportIndicatorNotArray(xkb->dpy, led, field);
+ if (!ExprResolveMask
+ (value, &rtrn, SimpleLookup, (XPointer) groupNames))
+ return ReportIndicatorBadType(xkb->dpy, led, field, "group mask");
+ led->groups = rtrn.uval;
+ led->defs.defined |= _LED_Groups;
+ }
+ else if ((uStrCaseCmp(field, "controls") == 0) ||
+ (uStrCaseCmp(field, "ctrls") == 0))
+ {
+ if (arrayNdx != NULL)
+ return ReportIndicatorNotArray(xkb->dpy, led, field);
+ if (!ExprResolveMask
+ (value, &rtrn, SimpleLookup, (XPointer) ctrlNames))
+ return ReportIndicatorBadType(xkb->dpy, led, field,
+ "controls mask");
+ led->ctrls = rtrn.uval;
+ led->defs.defined |= _LED_Ctrls;
+ }
+ else if (uStrCaseCmp(field, "allowexplicit") == 0)
+ {
+ if (arrayNdx != NULL)
+ return ReportIndicatorNotArray(xkb->dpy, led, field);
+ if (!ExprResolveBoolean(value, &rtrn, NULL, NULL))
+ return ReportIndicatorBadType(xkb->dpy, led, field, "boolean");
+ if (rtrn.uval)
+ led->flags &= ~XkbIM_NoExplicit;
+ else
+ led->flags |= XkbIM_NoExplicit;
+ led->defs.defined |= _LED_Explicit;
+ }
+ else if ((uStrCaseCmp(field, "whichmodstate") == 0) ||
+ (uStrCaseCmp(field, "whichmodifierstate") == 0))
+ {
+ if (arrayNdx != NULL)
+ return ReportIndicatorNotArray(xkb->dpy, led, field);
+ if (!ExprResolveMask(value, &rtrn, SimpleLookup,
+ (XPointer) modComponentNames))
+ {
+ return ReportIndicatorBadType(xkb->dpy, led, field,
+ "mask of modifier state components");
+ }
+ led->which_mods = rtrn.uval;
+ }
+ else if (uStrCaseCmp(field, "whichgroupstate") == 0)
+ {
+ if (arrayNdx != NULL)
+ return ReportIndicatorNotArray(xkb->dpy, led, field);
+ if (!ExprResolveMask(value, &rtrn, SimpleLookup,
+ (XPointer) groupComponentNames))
+ {
+ return ReportIndicatorBadType(xkb->dpy, led, field,
+ "mask of group state components");
+ }
+ led->which_groups = rtrn.uval;
+ }
+ else if ((uStrCaseCmp(field, "driveskbd") == 0) ||
+ (uStrCaseCmp(field, "driveskeyboard") == 0) ||
+ (uStrCaseCmp(field, "leddriveskbd") == 0) ||
+ (uStrCaseCmp(field, "leddriveskeyboard") == 0) ||
+ (uStrCaseCmp(field, "indicatordriveskbd") == 0) ||
+ (uStrCaseCmp(field, "indicatordriveskeyboard") == 0))
+ {
+ if (arrayNdx != NULL)
+ return ReportIndicatorNotArray(xkb->dpy, led, field);
+ if (!ExprResolveBoolean(value, &rtrn, NULL, NULL))
+ return ReportIndicatorBadType(xkb->dpy, led, field, "boolean");
+ if (rtrn.uval)
+ led->flags |= XkbIM_LEDDrivesKB;
+ else
+ led->flags &= ~XkbIM_LEDDrivesKB;
+ led->defs.defined |= _LED_DrivesKbd;
+ }
+ else if (uStrCaseCmp(field, "index") == 0)
+ {
+ if (arrayNdx != NULL)
+ return ReportIndicatorNotArray(xkb->dpy, led, field);
+ if (!ExprResolveInteger(value, &rtrn, NULL, NULL))
+ return ReportIndicatorBadType(xkb->dpy, led, field,
+ "indicator index");
+ if ((rtrn.uval < 1) || (rtrn.uval > 32))
+ {
+ ERROR2("Illegal indicator index %d (range 1..%d)\n",
+ rtrn.uval, XkbNumIndicators);
+ ACTION1("Index definition for %s indicator ignored\n",
+ XkbAtomText(NULL, led->name, XkbMessage));
+ return False;
+ }
+ led->indicator = rtrn.uval;
+ led->defs.defined |= _LED_Index;
+ }
+ else
+ {
+ ERROR2("Unknown field %s in map for %s indicator\n", field,
+ XkbAtomText(NULL, led->name, XkbMessage));
+ ACTION("Definition ignored\n");
+ ok = False;
+ }
+ return ok;
+}
+
+LEDInfo *
+HandleIndicatorMapDef(IndicatorMapDef * def,
+ XkbDescPtr xkb,
+ LEDInfo * dflt, LEDInfo * oldLEDs, unsigned merge)
+{
+ LEDInfo led, *rtrn;
+ VarDef *var;
+ Bool ok;
+
+ if (def->merge != MergeDefault)
+ merge = def->merge;
+
+ led = *dflt;
+ led.defs.merge = merge;
+ led.name = def->name;
+
+ ok = True;
+ for (var = def->body; var != NULL; var = (VarDef *) var->common.next)
+ {
+ ExprResult elem, field;
+ ExprDef *arrayNdx;
+ if (!ExprResolveLhs(var->name, &elem, &field, &arrayNdx))
+ {
+ ok = False;
+ continue;
+ }
+ if (elem.str != NULL)
+ {
+ ERROR1
+ ("Cannot set defaults for \"%s\" element in indicator map\n",
+ elem.str);
+ ACTION2("Assignment to %s.%s ignored\n", elem.str, field.str);
+ ok = False;
+ }
+ else
+ {
+ ok = SetIndicatorMapField(&led, xkb, field.str, arrayNdx,
+ var->value) && ok;
+ }
+ }
+ if (ok)
+ {
+ rtrn = AddIndicatorMap(oldLEDs, &led);
+ return rtrn;
+ }
+ return NULL;
+}
+
+Bool
+CopyIndicatorMapDefs(XkbFileInfo * result, LEDInfo * leds,
+ LEDInfo ** unboundRtrn)
+{
+ LEDInfo *led, *next;
+ LEDInfo *unbound, *last;
+ XkbDescPtr xkb;
+
+ xkb = result->xkb;
+ if (XkbAllocNames(xkb, XkbIndicatorNamesMask, 0, 0) != Success)
+ {
+ WSGO("Couldn't allocate names\n");
+ ACTION("Indicator names may be incorrect\n");
+ }
+ if (XkbAllocIndicatorMaps(xkb) != Success)
+ {
+ WSGO("Can't allocate indicator maps\n");
+ ACTION("Indicator map definitions may be lost\n");
+ return False;
+ }
+ last = unbound = (unboundRtrn ? *unboundRtrn : NULL);
+ while ((last != NULL) && (last->defs.next != NULL))
+ {
+ last = (LEDInfo *) last->defs.next;
+ }
+ for (led = leds; led != NULL; led = next)
+ {
+ next = (LEDInfo *) led->defs.next;
+ if ((led->groups != 0) && (led->which_groups == 0))
+ led->which_groups = XkbIM_UseEffective;
+ if ((led->which_mods == 0) && ((led->real_mods) || (led->vmods)))
+ led->which_mods = XkbIM_UseEffective;
+ if ((led->indicator == _LED_NotBound) || (!xkb->indicators))
+ {
+ if (unboundRtrn != NULL)
+ {
+ led->defs.next = NULL;
+ if (last != NULL)
+ last->defs.next = (CommonInfo *) led;
+ else
+ unbound = led;
+ last = led;
+ }
+ else
+ uFree(led);
+ }
+ else
+ {
+ register XkbIndicatorMapPtr im;
+ im = &xkb->indicators->maps[led->indicator - 1];
+ im->flags = led->flags;
+ im->which_groups = led->which_groups;
+ im->groups = led->groups;
+ im->which_mods = led->which_mods;
+ im->mods.mask = led->real_mods;
+ im->mods.real_mods = led->real_mods;
+ im->mods.vmods = led->vmods;
+ im->ctrls = led->ctrls;
+ if (xkb->names != NULL)
+ xkb->names->indicators[led->indicator - 1] = led->name;
+ uFree(led);
+ }
+ }
+ if (unboundRtrn != NULL)
+ {
+ *unboundRtrn = unbound;
+ }
+ return True;
+}
+
+Bool
+BindIndicators(XkbFileInfo * result,
+ Bool force, LEDInfo * unbound, LEDInfo ** unboundRtrn)
+{
+ XkbDescPtr xkb;
+ register int i;
+ register LEDInfo *led, *next, *last;
+
+ xkb = result->xkb;
+ if (xkb->names != NULL)
+ {
+ for (led = unbound; led != NULL; led = (LEDInfo *) led->defs.next)
+ {
+ if (led->indicator == _LED_NotBound)
+ {
+ for (i = 0; i < XkbNumIndicators; i++)
+ {
+ if (xkb->names->indicators[i] == led->name)
+ {
+ led->indicator = i + 1;
+ break;
+ }
+ }
+ }
+ }
+ if (force)
+ {
+ for (led = unbound; led != NULL; led = (LEDInfo *) led->defs.next)
+ {
+ if (led->indicator == _LED_NotBound)
+ {
+ for (i = 0; i < XkbNumIndicators; i++)
+ {
+ if (xkb->names->indicators[i] == None)
+ {
+ xkb->names->indicators[i] = led->name;
+ led->indicator = i + 1;
+ xkb->indicators->phys_indicators &= ~(1 << i);
+ break;
+ }
+ }
+ if (led->indicator == _LED_NotBound)
+ {
+ ERROR("No unnamed indicators found\n");
+ ACTION1
+ ("Virtual indicator map \"%s\" not bound\n",
+ XkbAtomGetString(xkb->dpy, led->name));
+ continue;
+ }
+ }
+ }
+ }
+ }
+ for (last = NULL, led = unbound; led != NULL; led = next)
+ {
+ next = (LEDInfo *) led->defs.next;
+ if (led->indicator == _LED_NotBound)
+ {
+ if (force)
+ {
+ unbound = next;
+ uFree(led);
+ }
+ else
+ {
+ if (last)
+ last->defs.next = &led->defs;
+ else
+ unbound = led;
+ last = led;
+ }
+ }
+ else
+ {
+ if ((xkb->names != NULL) &&
+ (xkb->names->indicators[led->indicator - 1] != led->name))
+ {
+ Atom old = xkb->names->indicators[led->indicator - 1];
+ ERROR1("Multiple names bound to indicator %d\n",
+ (unsigned int) led->indicator);
+ ACTION2("Using %s, ignoring %s\n",
+ XkbAtomGetString(xkb->dpy, old),
+ XkbAtomGetString(xkb->dpy, led->name));
+ led->indicator = _LED_NotBound;
+ if (force)
+ {
+ uFree(led);
+ unbound = next;
+ }
+ else
+ {
+ if (last)
+ last->defs.next = &led->defs;
+ else
+ unbound = led;
+ last = led;
+ }
+ }
+ else
+ {
+ XkbIndicatorMapPtr map;
+ map = &xkb->indicators->maps[led->indicator - 1];
+ map->flags = led->flags;
+ map->which_groups = led->which_groups;
+ map->groups = led->groups;
+ map->which_mods = led->which_mods;
+ map->mods.mask = led->real_mods;
+ map->mods.real_mods = led->real_mods;
+ map->mods.vmods = led->vmods;
+ map->ctrls = led->ctrls;
+ if (last)
+ last->defs.next = &next->defs;
+ else
+ unbound = next;
+ led->defs.next = NULL;
+ uFree(led);
+ }
+ }
+ }
+ if (unboundRtrn)
+ {
+ *unboundRtrn = unbound;
+ }
+ else if (unbound)
+ {
+ for (led = unbound; led != NULL; led = next)
+ {
+ next = (LEDInfo *) led->defs.next;
+ uFree(led);
+ }
+ }
+ return True;
+}
diff --git a/xkbcomp/indicators.h b/xkbcomp/indicators.h
index 9c72f70d5..35ae38a4c 100644
--- a/xkbcomp/indicators.h
+++ b/xkbcomp/indicators.h
@@ -1,88 +1,88 @@
-/************************************************************
- Copyright (c) 1994 by Silicon Graphics Computer Systems, Inc.
-
- Permission to use, copy, modify, and distribute this
- software and its documentation for any purpose and without
- fee is hereby granted, provided that the above copyright
- notice appear in all copies and that both that copyright
- notice and this permission notice appear in supporting
- documentation, and that the name of Silicon Graphics not be
- used in advertising or publicity pertaining to distribution
- of the software without specific prior written permission.
- Silicon Graphics makes no representation about the suitability
- of this software for any purpose. It is provided "as is"
- without any express or implied warranty.
-
- SILICON GRAPHICS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS
- SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
- AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON
- GRAPHICS BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL
- DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
- DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
- OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH
- THE USE OR PERFORMANCE OF THIS SOFTWARE.
-
- ********************************************************/
-
-#ifndef INDICATORS_H
-#define INDICATORS_H 1
-
-#define _LED_Index (1<<0)
-#define _LED_Mods (1<<1)
-#define _LED_Groups (1<<2)
-#define _LED_Ctrls (1<<3)
-#define _LED_Explicit (1<<4)
-#define _LED_Automatic (1<<5)
-#define _LED_DrivesKbd (1<<6)
-
-#define _LED_NotBound 255
-
-typedef struct _LEDInfo
-{
- CommonInfo defs;
- Atom name;
- unsigned char indicator;
- unsigned char flags;
- unsigned char which_mods;
- unsigned char real_mods;
- unsigned short vmods;
- unsigned char which_groups;
- unsigned char groups;
- unsigned int ctrls;
-} LEDInfo;
-
-extern void ClearIndicatorMapInfo(Display * /* dpy */ ,
- LEDInfo * /* info */
- );
-
-
-extern LEDInfo *AddIndicatorMap(LEDInfo * /* oldLEDs */ ,
- LEDInfo * /* newLED */
- );
-
-extern int SetIndicatorMapField(LEDInfo * /* led */ ,
- XkbDescPtr /* xkb */ ,
- char * /* field */ ,
- ExprDef * /* arrayNdx */ ,
- ExprDef * /* value */
- );
-
-extern LEDInfo *HandleIndicatorMapDef(IndicatorMapDef * /* stmt */ ,
- XkbDescPtr /* xkb */ ,
- LEDInfo * /* dflt */ ,
- LEDInfo * /* oldLEDs */ ,
- unsigned /* mergeMode */
- );
-
-extern Bool CopyIndicatorMapDefs(XkbFileInfo * /* result */ ,
- LEDInfo * /* leds */ ,
- LEDInfo ** /* unboundRtrn */
- );
-
-extern Bool BindIndicators(XkbFileInfo * /* result */ ,
- Bool /* force */ ,
- LEDInfo * /* unbound */ ,
- LEDInfo ** /* unboundRtrn */
- );
-
-#endif /* INDICATORS_H */
+/************************************************************
+ Copyright (c) 1994 by Silicon Graphics Computer Systems, Inc.
+
+ Permission to use, copy, modify, and distribute this
+ software and its documentation for any purpose and without
+ fee is hereby granted, provided that the above copyright
+ notice appear in all copies and that both that copyright
+ notice and this permission notice appear in supporting
+ documentation, and that the name of Silicon Graphics not be
+ used in advertising or publicity pertaining to distribution
+ of the software without specific prior written permission.
+ Silicon Graphics makes no representation about the suitability
+ of this software for any purpose. It is provided "as is"
+ without any express or implied warranty.
+
+ SILICON GRAPHICS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS
+ SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
+ AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON
+ GRAPHICS BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL
+ DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
+ DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
+ OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH
+ THE USE OR PERFORMANCE OF THIS SOFTWARE.
+
+ ********************************************************/
+
+#ifndef INDICATORS_H
+#define INDICATORS_H 1
+
+#define _LED_Index (1<<0)
+#define _LED_Mods (1<<1)
+#define _LED_Groups (1<<2)
+#define _LED_Ctrls (1<<3)
+#define _LED_Explicit (1<<4)
+#define _LED_Automatic (1<<5)
+#define _LED_DrivesKbd (1<<6)
+
+#define _LED_NotBound 255
+
+typedef struct _LEDInfo
+{
+ CommonInfo defs;
+ Atom name;
+ unsigned char indicator;
+ unsigned char flags;
+ unsigned char which_mods;
+ unsigned char real_mods;
+ unsigned short vmods;
+ unsigned char which_groups;
+ unsigned char groups;
+ unsigned int ctrls;
+} LEDInfo;
+
+extern void ClearIndicatorMapInfo(Display * /* dpy */ ,
+ LEDInfo * /* info */
+ );
+
+
+extern LEDInfo *AddIndicatorMap(LEDInfo * /* oldLEDs */ ,
+ LEDInfo * /* newLED */
+ );
+
+extern int SetIndicatorMapField(LEDInfo * /* led */ ,
+ XkbDescPtr /* xkb */ ,
+ char * /* field */ ,
+ ExprDef * /* arrayNdx */ ,
+ ExprDef * /* value */
+ );
+
+extern LEDInfo *HandleIndicatorMapDef(IndicatorMapDef * /* stmt */ ,
+ XkbDescPtr /* xkb */ ,
+ LEDInfo * /* dflt */ ,
+ LEDInfo * /* oldLEDs */ ,
+ unsigned /* mergeMode */
+ );
+
+extern Bool CopyIndicatorMapDefs(XkbFileInfo * /* result */ ,
+ LEDInfo * /* leds */ ,
+ LEDInfo ** /* unboundRtrn */
+ );
+
+extern Bool BindIndicators(XkbFileInfo * /* result */ ,
+ Bool /* force */ ,
+ LEDInfo * /* unbound */ ,
+ LEDInfo ** /* unboundRtrn */
+ );
+
+#endif /* INDICATORS_H */
diff --git a/xkbcomp/keycodes.c b/xkbcomp/keycodes.c
index 0cffa8131..4081ea1b5 100644
--- a/xkbcomp/keycodes.c
+++ b/xkbcomp/keycodes.c
@@ -1,896 +1,896 @@
-/************************************************************
- Copyright (c) 1994 by Silicon Graphics Computer Systems, Inc.
-
- Permission to use, copy, modify, and distribute this
- software and its documentation for any purpose and without
- fee is hereby granted, provided that the above copyright
- notice appear in all copies and that both that copyright
- notice and this permission notice appear in supporting
- documentation, and that the name of Silicon Graphics not be
- used in advertising or publicity pertaining to distribution
- of the software without specific prior written permission.
- Silicon Graphics makes no representation about the suitability
- of this software for any purpose. It is provided "as is"
- without any express or implied warranty.
-
- SILICON GRAPHICS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS
- SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
- AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON
- GRAPHICS BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL
- DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
- DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
- OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH
- THE USE OR PERFORMANCE OF THIS SOFTWARE.
-
- ********************************************************/
-
-#include "xkbcomp.h"
-#include "tokens.h"
-#include "expr.h"
-#include "keycodes.h"
-#include "misc.h"
-#include "alias.h"
-
-char *
-longText(unsigned long val, unsigned format)
-{
- char buf[4];
-
- LongToKeyName(val, buf);
- return XkbKeyNameText(buf, format);
-}
-
-/***====================================================================***/
-
-void
-LongToKeyName(unsigned long val, char *name)
-{
- name[0] = ((val >> 24) & 0xff);
- name[1] = ((val >> 16) & 0xff);
- name[2] = ((val >> 8) & 0xff);
- name[3] = (val & 0xff);
- return;
-}
-
-/***====================================================================***/
-
-typedef struct _IndicatorNameInfo
-{
- CommonInfo defs;
- int ndx;
- Atom name;
- Bool virtual;
-} IndicatorNameInfo;
-
-typedef struct _KeyNamesInfo
-{
- char *name; /* e.g. evdev+aliases(qwerty) */
- int errorCount;
- unsigned fileID;
- unsigned merge;
- int computedMin; /* lowest keycode stored */
- int computedMax; /* highest keycode stored */
- int explicitMin;
- int explicitMax;
- int effectiveMin;
- int effectiveMax;
- unsigned long names[XkbMaxLegalKeyCode + 1]; /* 4-letter name of key, keycode is the index */
- unsigned files[XkbMaxLegalKeyCode + 1];
- unsigned char has_alt_forms[XkbMaxLegalKeyCode + 1];
- IndicatorNameInfo *leds;
- AliasInfo *aliases;
-} KeyNamesInfo;
-
-static void HandleKeycodesFile(XkbFile * file,
- XkbDescPtr xkb,
- unsigned merge,
- KeyNamesInfo * info);
-
-static void
-InitIndicatorNameInfo(IndicatorNameInfo * ii, KeyNamesInfo * info)
-{
- ii->defs.defined = 0;
- ii->defs.merge = info->merge;
- ii->defs.fileID = info->fileID;
- ii->defs.next = NULL;
- ii->ndx = 0;
- ii->name = None;
- ii->virtual = False;
- return;
-}
-
-static void
-ClearIndicatorNameInfo(IndicatorNameInfo * ii, KeyNamesInfo * info)
-{
- if (ii == info->leds)
- {
- ClearCommonInfo(&ii->defs);
- info->leds = NULL;
- }
- return;
-}
-
-static IndicatorNameInfo *
-NextIndicatorName(KeyNamesInfo * info)
-{
- IndicatorNameInfo *ii;
-
- ii = uTypedAlloc(IndicatorNameInfo);
- if (ii)
- {
- InitIndicatorNameInfo(ii, info);
- info->leds = (IndicatorNameInfo *) AddCommonInfo(&info->leds->defs,
- (CommonInfo *) ii);
- }
- return ii;
-}
-
-static IndicatorNameInfo *
-FindIndicatorByIndex(KeyNamesInfo * info, int ndx)
-{
- IndicatorNameInfo *old;
-
- for (old = info->leds; old != NULL;
- old = (IndicatorNameInfo *) old->defs.next)
- {
- if (old->ndx == ndx)
- return old;
- }
- return NULL;
-}
-
-static IndicatorNameInfo *
-FindIndicatorByName(KeyNamesInfo * info, Atom name)
-{
- IndicatorNameInfo *old;
-
- for (old = info->leds; old != NULL;
- old = (IndicatorNameInfo *) old->defs.next)
- {
- if (old->name == name)
- return old;
- }
- return NULL;
-}
-
-static Bool
-AddIndicatorName(KeyNamesInfo * info, IndicatorNameInfo * new)
-{
- IndicatorNameInfo *old;
- Bool replace;
-
- replace = (new->defs.merge == MergeReplace) ||
- (new->defs.merge == MergeOverride);
- old = FindIndicatorByName(info, new->name);
- if (old)
- {
- if (((old->defs.fileID == new->defs.fileID) && (warningLevel > 0))
- || (warningLevel > 9))
- {
- WARN1("Multiple indicators named %s\n",
- XkbAtomText(NULL, new->name, XkbMessage));
- if (old->ndx == new->ndx)
- {
- if (old->virtual != new->virtual)
- {
- if (replace)
- old->virtual = new->virtual;
- ACTION2("Using %s instead of %s\n",
- (old->virtual ? "virtual" : "real"),
- (old->virtual ? "real" : "virtual"));
- }
- else
- {
- ACTION("Identical definitions ignored\n");
- }
- return True;
- }
- else
- {
- if (replace)
- ACTION2("Ignoring %d, using %d\n", old->ndx, new->ndx);
- else
- ACTION2("Using %d, ignoring %d\n", old->ndx, new->ndx);
- }
- if (replace)
- {
- if (info->leds == old)
- info->leds = (IndicatorNameInfo *) old->defs.next;
- else
- {
- IndicatorNameInfo *tmp;
- tmp = info->leds;
- for (; tmp != NULL;
- tmp = (IndicatorNameInfo *) tmp->defs.next)
- {
- if (tmp->defs.next == (CommonInfo *) old)
- {
- tmp->defs.next = old->defs.next;
- break;
- }
- }
- }
- uFree(old);
- }
- }
- }
- old = FindIndicatorByIndex(info, new->ndx);
- if (old)
- {
- if (((old->defs.fileID == new->defs.fileID) && (warningLevel > 0))
- || (warningLevel > 9))
- {
- WARN1("Multiple names for indicator %d\n", new->ndx);
- if ((old->name == new->name) && (old->virtual == new->virtual))
- ACTION("Identical definitions ignored\n");
- else
- {
- const char *oldType, *newType;
- Atom using, ignoring;
- if (old->virtual)
- oldType = "virtual indicator";
- else
- oldType = "real indicator";
- if (new->virtual)
- newType = "virtual indicator";
- else
- newType = "real indicator";
- if (replace)
- {
- using = new->name;
- ignoring = old->name;
- }
- else
- {
- using = old->name;
- ignoring = new->name;
- }
- ACTION4("Using %s %s, ignoring %s %s\n",
- oldType, XkbAtomText(NULL, using, XkbMessage),
- newType, XkbAtomText(NULL, ignoring, XkbMessage));
- }
- }
- if (replace)
- {
- old->name = new->name;
- old->virtual = new->virtual;
- }
- return True;
- }
- old = new;
- new = NextIndicatorName(info);
- if (!new)
- {
- WSGO1("Couldn't allocate name for indicator %d\n", new->ndx);
- ACTION("Ignored\n");
- return False;
- }
- new->name = old->name;
- new->ndx = old->ndx;
- new->virtual = old->virtual;
- return True;
-}
-
-static void
-ClearKeyNamesInfo(KeyNamesInfo * info)
-{
- if (info->name != NULL)
- uFree(info->name);
- info->name = NULL;
- info->computedMax = info->explicitMax = info->explicitMin = -1;
- info->computedMin = 256;
- info->effectiveMin = 8;
- info->effectiveMax = 255;
- bzero((char *) info->names, sizeof(info->names));
- bzero((char *) info->files, sizeof(info->files));
- bzero((char *) info->has_alt_forms, sizeof(info->has_alt_forms));
- if (info->leds)
- ClearIndicatorNameInfo(info->leds, info);
- if (info->aliases)
- ClearAliases(&info->aliases);
- return;
-}
-
-static void
-InitKeyNamesInfo(KeyNamesInfo * info)
-{
- info->name = NULL;
- info->leds = NULL;
- info->aliases = NULL;
- info->fileID=-1;
- info->merge=0;
- ClearKeyNamesInfo(info);
- info->errorCount = 0;
- return;
-}
-
-static int
-FindKeyByLong(KeyNamesInfo * info, unsigned long name)
-{
- register int i;
-
- for (i = info->effectiveMin; i <= info->effectiveMax; i++)
- {
- if (info->names[i] == name)
- return i;
- }
- return 0;
-}
-
-/**
- * Store the name of the key as a long in the info struct under the given
- * keycode. If the same keys is referred to twice, print a warning.
- * Note that the key's name is stored as a long, the keycode is the index.
- */
-static Bool
-AddKeyName(KeyNamesInfo * info,
- int kc,
- char *name, unsigned merge, unsigned fileID, Bool reportCollisions)
-{
- int old;
- unsigned long lval;
-
- if ((kc < info->effectiveMin) || (kc > info->effectiveMax))
- {
- ERROR2("Illegal keycode %d for name <%s>\n", kc, name);
- ACTION2("Must be in the range %d-%d inclusive\n",
- info->effectiveMin, info->effectiveMax);
- return False;
- }
- if (kc < info->computedMin)
- info->computedMin = kc;
- if (kc > info->computedMax)
- info->computedMax = kc;
- lval = KeyNameToLong(name);
-
- if (reportCollisions)
- {
- reportCollisions = ((warningLevel > 7) ||
- ((warningLevel > 0)
- && (fileID == info->files[kc])));
- }
-
- if (info->names[kc] != 0)
- {
- char buf[6];
-
- LongToKeyName(info->names[kc], buf);
- buf[4] = '\0';
- if (info->names[kc] == lval)
- {
- if (info->has_alt_forms[kc] || (merge == MergeAltForm))
- {
- info->has_alt_forms[kc] = True;
- }
- else if (reportCollisions)
- {
- WARN("Multiple identical key name definitions\n");
- ACTION2("Later occurences of \"<%s> = %d\" ignored\n",
- buf, kc);
- }
- return True;
- }
- if (merge == MergeAugment)
- {
- if (reportCollisions)
- {
- WARN1("Multiple names for keycode %d\n", kc);
- ACTION2("Using <%s>, ignoring <%s>\n", buf, name);
- }
- return True;
- }
- else
- {
- if (reportCollisions)
- {
- WARN1("Multiple names for keycode %d\n", kc);
- ACTION2("Using <%s>, ignoring <%s>\n", name, buf);
- }
- info->names[kc] = 0;
- info->files[kc] = 0;
- }
- }
- old = FindKeyByLong(info, lval);
- if ((old != 0) && (old != kc))
- {
- if (merge == MergeOverride)
- {
- info->names[old] = 0;
- info->files[old] = 0;
- info->has_alt_forms[old] = True;
- if (reportCollisions)
- {
- WARN1("Key name <%s> assigned to multiple keys\n", name);
- ACTION2("Using %d, ignoring %d\n", kc, old);
- }
- }
- else if (merge != MergeAltForm)
- {
- if ((reportCollisions) && (warningLevel > 3))
- {
- WARN1("Key name <%s> assigned to multiple keys\n", name);
- ACTION2("Using %d, ignoring %d\n", old, kc);
- ACTION
- ("Use 'alternate' keyword to assign the same name to multiple keys\n");
- }
- return True;
- }
- else
- {
- info->has_alt_forms[old] = True;
- }
- }
- info->names[kc] = lval;
- info->files[kc] = fileID;
- info->has_alt_forms[kc] = (merge == MergeAltForm);
- return True;
-}
-
-/***====================================================================***/
-
-static void
-MergeIncludedKeycodes(KeyNamesInfo * into, KeyNamesInfo * from,
- unsigned merge)
-{
- register int i;
- char buf[5];
-
- if (from->errorCount > 0)
- {
- into->errorCount += from->errorCount;
- return;
- }
- if (into->name == NULL)
- {
- into->name = from->name;
- from->name = NULL;
- }
- for (i = from->computedMin; i <= from->computedMax; i++)
- {
- unsigned thisMerge;
- if (from->names[i] == 0)
- continue;
- LongToKeyName(from->names[i], buf);
- buf[4] = '\0';
- if (from->has_alt_forms[i])
- thisMerge = MergeAltForm;
- else
- thisMerge = merge;
- if (!AddKeyName(into, i, buf, thisMerge, from->fileID, False))
- into->errorCount++;
- }
- if (from->leds)
- {
- IndicatorNameInfo *led, *next;
- for (led = from->leds; led != NULL; led = next)
- {
- if (merge != MergeDefault)
- led->defs.merge = merge;
- if (!AddIndicatorName(into, led))
- into->errorCount++;
- next = (IndicatorNameInfo *) led->defs.next;
- }
- }
- if (!MergeAliases(&into->aliases, &from->aliases, merge))
- into->errorCount++;
- if (from->explicitMin > 0)
- {
- if ((into->explicitMin < 0)
- || (into->explicitMin > from->explicitMin))
- into->effectiveMin = into->explicitMin = from->explicitMin;
- }
- if (from->explicitMax > 0)
- {
- if ((into->explicitMax < 0)
- || (into->explicitMax < from->explicitMax))
- into->effectiveMax = into->explicitMax = from->explicitMax;
- }
- return;
-}
-
-/**
- * Handle the given include statement (e.g. "include "evdev+aliases(qwerty)").
- *
- * @param stmt The include statement from the keymap file.
- * @param xkb Unused for all but the xkb->flags.
- * @param info Struct to store the key info in.
- */
-static Bool
-HandleIncludeKeycodes(IncludeStmt * stmt, XkbDescPtr xkb, KeyNamesInfo * info)
-{
- unsigned newMerge;
- XkbFile *rtrn;
- KeyNamesInfo included = {NULL};
- Bool haveSelf;
-
- haveSelf = False;
- if ((stmt->file == NULL) && (stmt->map == NULL))
- {
- haveSelf = True;
- included = *info;
- bzero(info, sizeof(KeyNamesInfo));
- }
- else if (strcmp(stmt->file, "computed") == 0)
- {
- xkb->flags |= AutoKeyNames;
- info->explicitMin = XkbMinLegalKeyCode;
- info->explicitMax = XkbMaxLegalKeyCode;
- return (info->errorCount == 0);
- } /* parse file, store returned info in the xkb struct */
- else if (ProcessIncludeFile(stmt, XkmKeyNamesIndex, &rtrn, &newMerge))
- {
- InitKeyNamesInfo(&included);
- HandleKeycodesFile(rtrn, xkb, MergeOverride, &included);
- if (stmt->stmt != NULL)
- {
- if (included.name != NULL)
- uFree(included.name);
- included.name = stmt->stmt;
- stmt->stmt = NULL;
- }
- }
- else
- {
- info->errorCount += 10; /* XXX: why 10?? */
- return False;
- }
- /* Do we have more than one include statement? */
- if ((stmt->next != NULL) && (included.errorCount < 1))
- {
- IncludeStmt *next;
- unsigned op;
- KeyNamesInfo next_incl;
-
- for (next = stmt->next; next != NULL; next = next->next)
- {
- if ((next->file == NULL) && (next->map == NULL))
- {
- haveSelf = True;
- MergeIncludedKeycodes(&included, info, next->merge);
- ClearKeyNamesInfo(info);
- }
- else if (ProcessIncludeFile(next, XkmKeyNamesIndex, &rtrn, &op))
- {
- InitKeyNamesInfo(&next_incl);
- HandleKeycodesFile(rtrn, xkb, MergeOverride, &next_incl);
- MergeIncludedKeycodes(&included, &next_incl, op);
- ClearKeyNamesInfo(&next_incl);
- }
- else
- {
- info->errorCount += 10; /* XXX: Why 10?? */
- return False;
- }
- }
- }
- if (haveSelf)
- *info = included;
- else
- {
- MergeIncludedKeycodes(info, &included, newMerge);
- ClearKeyNamesInfo(&included);
- }
- return (info->errorCount == 0);
-}
-
-/**
- * Parse the given statement and store the output in the info struct.
- * e.g. <ESC> = 9
- */
-static int
-HandleKeycodeDef(KeycodeDef * stmt, unsigned merge, KeyNamesInfo * info)
-{
- int code;
- ExprResult result;
-
- if (!ExprResolveInteger(stmt->value, &result, NULL, NULL))
- {
- ACTION1("No value keycode assigned to name <%s>\n", stmt->name);
- return 0;
- }
- code = result.ival;
- if ((code < info->effectiveMin) || (code > info->effectiveMax))
- {
- ERROR2("Illegal keycode %d for name <%s>\n", code, stmt->name);
- ACTION2("Must be in the range %d-%d inclusive\n",
- info->effectiveMin, info->effectiveMax);
- return 0;
- }
- if (stmt->merge != MergeDefault)
- {
- if (stmt->merge == MergeReplace)
- merge = MergeOverride;
- else
- merge = stmt->merge;
- }
- return AddKeyName(info, code, stmt->name, merge, info->fileID, True);
-}
-
-#define MIN_KEYCODE_DEF 0
-#define MAX_KEYCODE_DEF 1
-
-/**
- * Handle the minimum/maximum statement of the xkb file.
- * Sets explicitMin/Max and effectiveMin/Max of the info struct.
- *
- * @return 1 on success, 0 otherwise.
- */
-static int
-HandleKeyNameVar(VarDef * stmt, KeyNamesInfo * info)
-{
- ExprResult tmp, field;
- ExprDef *arrayNdx;
- int which;
-
- if (ExprResolveLhs(stmt->name, &tmp, &field, &arrayNdx) == 0)
- return 0; /* internal error, already reported */
-
- if (tmp.str != NULL)
- {
- ERROR1("Unknown element %s encountered\n", tmp.str);
- ACTION1("Default for field %s ignored\n", field.str);
- return 0;
- }
- if (uStrCaseCmp(field.str, "minimum") == 0)
- which = MIN_KEYCODE_DEF;
- else if (uStrCaseCmp(field.str, "maximum") == 0)
- which = MAX_KEYCODE_DEF;
- else
- {
- ERROR("Unknown field encountered\n");
- ACTION1("Assigment to field %s ignored\n", field.str);
- return 0;
- }
- if (arrayNdx != NULL)
- {
- ERROR1("The %s setting is not an array\n", field.str);
- ACTION("Illegal array reference ignored\n");
- return 0;
- }
-
- if (ExprResolveInteger(stmt->value, &tmp, NULL, NULL) == 0)
- {
- ACTION1("Assignment to field %s ignored\n", field.str);
- return 0;
- }
- if ((tmp.ival < XkbMinLegalKeyCode) || (tmp.ival > XkbMaxLegalKeyCode))
- {
- ERROR3
- ("Illegal keycode %d (must be in the range %d-%d inclusive)\n",
- tmp.ival, XkbMinLegalKeyCode, XkbMaxLegalKeyCode);
- ACTION1("Value of \"%s\" not changed\n", field.str);
- return 0;
- }
- if (which == MIN_KEYCODE_DEF)
- {
- if ((info->explicitMax > 0) && (info->explicitMax < tmp.ival))
- {
- ERROR2
- ("Minimum key code (%d) must be <= maximum key code (%d)\n",
- tmp.ival, info->explicitMax);
- ACTION("Minimum key code value not changed\n");
- return 0;
- }
- if ((info->computedMax > 0) && (info->computedMin < tmp.ival))
- {
- ERROR2
- ("Minimum key code (%d) must be <= lowest defined key (%d)\n",
- tmp.ival, info->computedMin);
- ACTION("Minimum key code value not changed\n");
- return 0;
- }
- info->explicitMin = tmp.ival;
- info->effectiveMin = tmp.ival;
- }
- if (which == MAX_KEYCODE_DEF)
- {
- if ((info->explicitMin > 0) && (info->explicitMin > tmp.ival))
- {
- ERROR2("Maximum code (%d) must be >= minimum key code (%d)\n",
- tmp.ival, info->explicitMin);
- ACTION("Maximum code value not changed\n");
- return 0;
- }
- if ((info->computedMax > 0) && (info->computedMax > tmp.ival))
- {
- ERROR2
- ("Maximum code (%d) must be >= highest defined key (%d)\n",
- tmp.ival, info->computedMax);
- ACTION("Maximum code value not changed\n");
- return 0;
- }
- info->explicitMax = tmp.ival;
- info->effectiveMax = tmp.ival;
- }
- return 1;
-}
-
-static int
-HandleIndicatorNameDef(IndicatorNameDef * def,
- unsigned merge, KeyNamesInfo * info)
-{
- IndicatorNameInfo ii;
- ExprResult tmp;
-
- if ((def->ndx < 1) || (def->ndx > XkbNumIndicators))
- {
- info->errorCount++;
- ERROR1("Name specified for illegal indicator index %d\n", def->ndx);
- ACTION("Ignored\n");
- return False;
- }
- InitIndicatorNameInfo(&ii, info);
- ii.ndx = def->ndx;
- if (!ExprResolveString(def->name, &tmp, NULL, NULL))
- {
- char buf[20];
- snprintf(buf, sizeof(buf), "%d", def->ndx);
- info->errorCount++;
- return ReportBadType("indicator", "name", buf, "string");
- }
- ii.name = XkbInternAtom(NULL, tmp.str, False);
- ii.virtual = def->virtual;
- if (!AddIndicatorName(info, &ii))
- return False;
- return True;
-}
-
-/**
- * Handle the xkb_keycodes section of a xkb file.
- * All information about parsed keys is stored in the info struct.
- *
- * Such a section may have include statements, in which case this function is
- * semi-recursive (it calls HandleIncludeKeycodes, which may call
- * HandleKeycodesFile again).
- *
- * @param file The input file (parsed xkb_keycodes section)
- * @param xkb Necessary to pass down, may have flags changed.
- * @param merge Merge strategy (MergeOverride, etc.)
- * @param info Struct to contain the fully parsed key information.
- */
-static void
-HandleKeycodesFile(XkbFile * file,
- XkbDescPtr xkb, unsigned merge, KeyNamesInfo * info)
-{
- ParseCommon *stmt;
-
- info->name = uStringDup(file->name);
- stmt = file->defs;
- while (stmt)
- {
- switch (stmt->stmtType)
- {
- case StmtInclude: /* e.g. include "evdev+aliases(qwerty)" */
- if (!HandleIncludeKeycodes((IncludeStmt *) stmt, xkb, info))
- info->errorCount++;
- break;
- case StmtKeycodeDef: /* e.g. <ESC> = 9; */
- if (!HandleKeycodeDef((KeycodeDef *) stmt, merge, info))
- info->errorCount++;
- break;
- case StmtKeyAliasDef: /* e.g. alias <MENU> = <COMP>; */
- if (!HandleAliasDef((KeyAliasDef *) stmt,
- merge, info->fileID, &info->aliases))
- info->errorCount++;
- break;
- case StmtVarDef: /* e.g. minimum, maximum */
- if (!HandleKeyNameVar((VarDef *) stmt, info))
- info->errorCount++;
- break;
- case StmtIndicatorNameDef: /* e.g. indicator 1 = "Caps Lock"; */
- if (!HandleIndicatorNameDef((IndicatorNameDef *) stmt,
- merge, info))
- {
- info->errorCount++;
- }
- break;
- case StmtInterpDef:
- case StmtVModDef:
- ERROR("Keycode files may define key and indicator names only\n");
- ACTION1("Ignoring definition of %s\n",
- ((stmt->stmtType ==
- StmtInterpDef) ? "a symbol interpretation" :
- "virtual modifiers"));
- info->errorCount++;
- break;
- default:
- WSGO1("Unexpected statement type %d in HandleKeycodesFile\n",
- stmt->stmtType);
- break;
- }
- stmt = stmt->next;
- if (info->errorCount > 10)
- {
-#ifdef NOISY
- ERROR("Too many errors\n");
-#endif
- ACTION1("Abandoning keycodes file \"%s\"\n", file->topName);
- break;
- }
- }
- return;
-}
-
-/**
- * Compile the xkb_keycodes section, parse it's output, return the results.
- *
- * @param file The parsed XKB file (may have include statements requiring
- * further parsing)
- * @param result The effective keycodes, as gathered from the file.
- * @param merge Merge strategy.
- *
- * @return True on success, False otherwise.
- */
-Bool
-CompileKeycodes(XkbFile * file, XkbFileInfo * result, unsigned merge)
-{
- KeyNamesInfo info; /* contains all the info after parsing */
- XkbDescPtr xkb;
-
- xkb = result->xkb;
- InitKeyNamesInfo(&info);
- HandleKeycodesFile(file, xkb, merge, &info);
-
- /* all the keys are now stored in info */
-
- if (info.errorCount == 0)
- {
- if (info.explicitMin > 0) /* if "minimum" statement was present */
- xkb->min_key_code = info.effectiveMin;
- else
- xkb->min_key_code = info.computedMin;
- if (info.explicitMax > 0) /* if "maximum" statement was present */
- xkb->max_key_code = info.effectiveMax;
- else
- xkb->max_key_code = info.computedMax;
- if (XkbAllocNames(xkb, XkbKeyNamesMask | XkbIndicatorNamesMask, 0, 0)
- == Success)
- {
- register int i;
- xkb->names->keycodes = XkbInternAtom(xkb->dpy, info.name, False);
- uDEBUG2(1, "key range: %d..%d\n", xkb->min_key_code,
- xkb->max_key_code);
- for (i = info.computedMin; i <= info.computedMax; i++)
- {
- LongToKeyName(info.names[i], xkb->names->keys[i].name);
- uDEBUG2(2, "key %d = %s\n", i,
- XkbKeyNameText(xkb->names->keys[i].name, XkbMessage));
- }
- }
- else
- {
- WSGO("Cannot create XkbNamesRec in CompileKeycodes\n");
- return False;
- }
- if (info.leds)
- {
- IndicatorNameInfo *ii;
- if (XkbAllocIndicatorMaps(xkb) != Success)
- {
- WSGO("Couldn't allocate IndicatorRec in CompileKeycodes\n");
- ACTION("Physical indicators not set\n");
- }
- for (ii = info.leds; ii != NULL;
- ii = (IndicatorNameInfo *) ii->defs.next)
- {
- xkb->names->indicators[ii->ndx - 1] =
- XkbInternAtom(xkb->dpy,
- XkbAtomGetString(NULL, ii->name), False);
- if (xkb->indicators != NULL)
- {
- register unsigned bit;
- bit = 1 << (ii->ndx - 1);
- if (ii->virtual)
- xkb->indicators->phys_indicators &= ~bit;
- else
- xkb->indicators->phys_indicators |= bit;
- }
- }
- }
- if (info.aliases)
- ApplyAliases(xkb, False, &info.aliases);
- return True;
- }
- ClearKeyNamesInfo(&info);
- return False;
-}
+/************************************************************
+ Copyright (c) 1994 by Silicon Graphics Computer Systems, Inc.
+
+ Permission to use, copy, modify, and distribute this
+ software and its documentation for any purpose and without
+ fee is hereby granted, provided that the above copyright
+ notice appear in all copies and that both that copyright
+ notice and this permission notice appear in supporting
+ documentation, and that the name of Silicon Graphics not be
+ used in advertising or publicity pertaining to distribution
+ of the software without specific prior written permission.
+ Silicon Graphics makes no representation about the suitability
+ of this software for any purpose. It is provided "as is"
+ without any express or implied warranty.
+
+ SILICON GRAPHICS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS
+ SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
+ AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON
+ GRAPHICS BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL
+ DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
+ DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
+ OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH
+ THE USE OR PERFORMANCE OF THIS SOFTWARE.
+
+ ********************************************************/
+
+#include "xkbcomp.h"
+#include "tokens.h"
+#include "expr.h"
+#include "keycodes.h"
+#include "misc.h"
+#include "alias.h"
+
+char *
+longText(unsigned long val, unsigned format)
+{
+ char buf[4];
+
+ LongToKeyName(val, buf);
+ return XkbKeyNameText(buf, format);
+}
+
+/***====================================================================***/
+
+void
+LongToKeyName(unsigned long val, char *name)
+{
+ name[0] = ((val >> 24) & 0xff);
+ name[1] = ((val >> 16) & 0xff);
+ name[2] = ((val >> 8) & 0xff);
+ name[3] = (val & 0xff);
+ return;
+}
+
+/***====================================================================***/
+
+typedef struct _IndicatorNameInfo
+{
+ CommonInfo defs;
+ int ndx;
+ Atom name;
+ Bool virtual;
+} IndicatorNameInfo;
+
+typedef struct _KeyNamesInfo
+{
+ char *name; /* e.g. evdev+aliases(qwerty) */
+ int errorCount;
+ unsigned fileID;
+ unsigned merge;
+ int computedMin; /* lowest keycode stored */
+ int computedMax; /* highest keycode stored */
+ int explicitMin;
+ int explicitMax;
+ int effectiveMin;
+ int effectiveMax;
+ unsigned long names[XkbMaxLegalKeyCode + 1]; /* 4-letter name of key, keycode is the index */
+ unsigned files[XkbMaxLegalKeyCode + 1];
+ unsigned char has_alt_forms[XkbMaxLegalKeyCode + 1];
+ IndicatorNameInfo *leds;
+ AliasInfo *aliases;
+} KeyNamesInfo;
+
+static void HandleKeycodesFile(XkbFile * file,
+ XkbDescPtr xkb,
+ unsigned merge,
+ KeyNamesInfo * info);
+
+static void
+InitIndicatorNameInfo(IndicatorNameInfo * ii, KeyNamesInfo * info)
+{
+ ii->defs.defined = 0;
+ ii->defs.merge = info->merge;
+ ii->defs.fileID = info->fileID;
+ ii->defs.next = NULL;
+ ii->ndx = 0;
+ ii->name = None;
+ ii->virtual = False;
+ return;
+}
+
+static void
+ClearIndicatorNameInfo(IndicatorNameInfo * ii, KeyNamesInfo * info)
+{
+ if (ii == info->leds)
+ {
+ ClearCommonInfo(&ii->defs);
+ info->leds = NULL;
+ }
+ return;
+}
+
+static IndicatorNameInfo *
+NextIndicatorName(KeyNamesInfo * info)
+{
+ IndicatorNameInfo *ii;
+
+ ii = uTypedAlloc(IndicatorNameInfo);
+ if (ii)
+ {
+ InitIndicatorNameInfo(ii, info);
+ info->leds = (IndicatorNameInfo *) AddCommonInfo(&info->leds->defs,
+ (CommonInfo *) ii);
+ }
+ return ii;
+}
+
+static IndicatorNameInfo *
+FindIndicatorByIndex(KeyNamesInfo * info, int ndx)
+{
+ IndicatorNameInfo *old;
+
+ for (old = info->leds; old != NULL;
+ old = (IndicatorNameInfo *) old->defs.next)
+ {
+ if (old->ndx == ndx)
+ return old;
+ }
+ return NULL;
+}
+
+static IndicatorNameInfo *
+FindIndicatorByName(KeyNamesInfo * info, Atom name)
+{
+ IndicatorNameInfo *old;
+
+ for (old = info->leds; old != NULL;
+ old = (IndicatorNameInfo *) old->defs.next)
+ {
+ if (old->name == name)
+ return old;
+ }
+ return NULL;
+}
+
+static Bool
+AddIndicatorName(KeyNamesInfo * info, IndicatorNameInfo * new)
+{
+ IndicatorNameInfo *old;
+ Bool replace;
+
+ replace = (new->defs.merge == MergeReplace) ||
+ (new->defs.merge == MergeOverride);
+ old = FindIndicatorByName(info, new->name);
+ if (old)
+ {
+ if (((old->defs.fileID == new->defs.fileID) && (warningLevel > 0))
+ || (warningLevel > 9))
+ {
+ WARN1("Multiple indicators named %s\n",
+ XkbAtomText(NULL, new->name, XkbMessage));
+ if (old->ndx == new->ndx)
+ {
+ if (old->virtual != new->virtual)
+ {
+ if (replace)
+ old->virtual = new->virtual;
+ ACTION2("Using %s instead of %s\n",
+ (old->virtual ? "virtual" : "real"),
+ (old->virtual ? "real" : "virtual"));
+ }
+ else
+ {
+ ACTION("Identical definitions ignored\n");
+ }
+ return True;
+ }
+ else
+ {
+ if (replace)
+ ACTION2("Ignoring %d, using %d\n", old->ndx, new->ndx);
+ else
+ ACTION2("Using %d, ignoring %d\n", old->ndx, new->ndx);
+ }
+ if (replace)
+ {
+ if (info->leds == old)
+ info->leds = (IndicatorNameInfo *) old->defs.next;
+ else
+ {
+ IndicatorNameInfo *tmp;
+ tmp = info->leds;
+ for (; tmp != NULL;
+ tmp = (IndicatorNameInfo *) tmp->defs.next)
+ {
+ if (tmp->defs.next == (CommonInfo *) old)
+ {
+ tmp->defs.next = old->defs.next;
+ break;
+ }
+ }
+ }
+ uFree(old);
+ }
+ }
+ }
+ old = FindIndicatorByIndex(info, new->ndx);
+ if (old)
+ {
+ if (((old->defs.fileID == new->defs.fileID) && (warningLevel > 0))
+ || (warningLevel > 9))
+ {
+ WARN1("Multiple names for indicator %d\n", new->ndx);
+ if ((old->name == new->name) && (old->virtual == new->virtual))
+ ACTION("Identical definitions ignored\n");
+ else
+ {
+ const char *oldType, *newType;
+ Atom using, ignoring;
+ if (old->virtual)
+ oldType = "virtual indicator";
+ else
+ oldType = "real indicator";
+ if (new->virtual)
+ newType = "virtual indicator";
+ else
+ newType = "real indicator";
+ if (replace)
+ {
+ using = new->name;
+ ignoring = old->name;
+ }
+ else
+ {
+ using = old->name;
+ ignoring = new->name;
+ }
+ ACTION4("Using %s %s, ignoring %s %s\n",
+ oldType, XkbAtomText(NULL, using, XkbMessage),
+ newType, XkbAtomText(NULL, ignoring, XkbMessage));
+ }
+ }
+ if (replace)
+ {
+ old->name = new->name;
+ old->virtual = new->virtual;
+ }
+ return True;
+ }
+ old = new;
+ new = NextIndicatorName(info);
+ if (!new)
+ {
+ WSGO1("Couldn't allocate name for indicator %d\n", new->ndx);
+ ACTION("Ignored\n");
+ return False;
+ }
+ new->name = old->name;
+ new->ndx = old->ndx;
+ new->virtual = old->virtual;
+ return True;
+}
+
+static void
+ClearKeyNamesInfo(KeyNamesInfo * info)
+{
+ if (info->name != NULL)
+ uFree(info->name);
+ info->name = NULL;
+ info->computedMax = info->explicitMax = info->explicitMin = -1;
+ info->computedMin = 256;
+ info->effectiveMin = 8;
+ info->effectiveMax = 255;
+ bzero((char *) info->names, sizeof(info->names));
+ bzero((char *) info->files, sizeof(info->files));
+ bzero((char *) info->has_alt_forms, sizeof(info->has_alt_forms));
+ if (info->leds)
+ ClearIndicatorNameInfo(info->leds, info);
+ if (info->aliases)
+ ClearAliases(&info->aliases);
+ return;
+}
+
+static void
+InitKeyNamesInfo(KeyNamesInfo * info)
+{
+ info->name = NULL;
+ info->leds = NULL;
+ info->aliases = NULL;
+ info->fileID=-1;
+ info->merge=0;
+ ClearKeyNamesInfo(info);
+ info->errorCount = 0;
+ return;
+}
+
+static int
+FindKeyByLong(KeyNamesInfo * info, unsigned long name)
+{
+ register int i;
+
+ for (i = info->effectiveMin; i <= info->effectiveMax; i++)
+ {
+ if (info->names[i] == name)
+ return i;
+ }
+ return 0;
+}
+
+/**
+ * Store the name of the key as a long in the info struct under the given
+ * keycode. If the same keys is referred to twice, print a warning.
+ * Note that the key's name is stored as a long, the keycode is the index.
+ */
+static Bool
+AddKeyName(KeyNamesInfo * info,
+ int kc,
+ char *name, unsigned merge, unsigned fileID, Bool reportCollisions)
+{
+ int old;
+ unsigned long lval;
+
+ if ((kc < info->effectiveMin) || (kc > info->effectiveMax))
+ {
+ ERROR2("Illegal keycode %d for name <%s>\n", kc, name);
+ ACTION2("Must be in the range %d-%d inclusive\n",
+ info->effectiveMin, info->effectiveMax);
+ return False;
+ }
+ if (kc < info->computedMin)
+ info->computedMin = kc;
+ if (kc > info->computedMax)
+ info->computedMax = kc;
+ lval = KeyNameToLong(name);
+
+ if (reportCollisions)
+ {
+ reportCollisions = ((warningLevel > 7) ||
+ ((warningLevel > 0)
+ && (fileID == info->files[kc])));
+ }
+
+ if (info->names[kc] != 0)
+ {
+ char buf[6];
+
+ LongToKeyName(info->names[kc], buf);
+ buf[4] = '\0';
+ if (info->names[kc] == lval)
+ {
+ if (info->has_alt_forms[kc] || (merge == MergeAltForm))
+ {
+ info->has_alt_forms[kc] = True;
+ }
+ else if (reportCollisions)
+ {
+ WARN("Multiple identical key name definitions\n");
+ ACTION2("Later occurences of \"<%s> = %d\" ignored\n",
+ buf, kc);
+ }
+ return True;
+ }
+ if (merge == MergeAugment)
+ {
+ if (reportCollisions)
+ {
+ WARN1("Multiple names for keycode %d\n", kc);
+ ACTION2("Using <%s>, ignoring <%s>\n", buf, name);
+ }
+ return True;
+ }
+ else
+ {
+ if (reportCollisions)
+ {
+ WARN1("Multiple names for keycode %d\n", kc);
+ ACTION2("Using <%s>, ignoring <%s>\n", name, buf);
+ }
+ info->names[kc] = 0;
+ info->files[kc] = 0;
+ }
+ }
+ old = FindKeyByLong(info, lval);
+ if ((old != 0) && (old != kc))
+ {
+ if (merge == MergeOverride)
+ {
+ info->names[old] = 0;
+ info->files[old] = 0;
+ info->has_alt_forms[old] = True;
+ if (reportCollisions)
+ {
+ WARN1("Key name <%s> assigned to multiple keys\n", name);
+ ACTION2("Using %d, ignoring %d\n", kc, old);
+ }
+ }
+ else if (merge != MergeAltForm)
+ {
+ if ((reportCollisions) && (warningLevel > 3))
+ {
+ WARN1("Key name <%s> assigned to multiple keys\n", name);
+ ACTION2("Using %d, ignoring %d\n", old, kc);
+ ACTION
+ ("Use 'alternate' keyword to assign the same name to multiple keys\n");
+ }
+ return True;
+ }
+ else
+ {
+ info->has_alt_forms[old] = True;
+ }
+ }
+ info->names[kc] = lval;
+ info->files[kc] = fileID;
+ info->has_alt_forms[kc] = (merge == MergeAltForm);
+ return True;
+}
+
+/***====================================================================***/
+
+static void
+MergeIncludedKeycodes(KeyNamesInfo * into, KeyNamesInfo * from,
+ unsigned merge)
+{
+ register int i;
+ char buf[5];
+
+ if (from->errorCount > 0)
+ {
+ into->errorCount += from->errorCount;
+ return;
+ }
+ if (into->name == NULL)
+ {
+ into->name = from->name;
+ from->name = NULL;
+ }
+ for (i = from->computedMin; i <= from->computedMax; i++)
+ {
+ unsigned thisMerge;
+ if (from->names[i] == 0)
+ continue;
+ LongToKeyName(from->names[i], buf);
+ buf[4] = '\0';
+ if (from->has_alt_forms[i])
+ thisMerge = MergeAltForm;
+ else
+ thisMerge = merge;
+ if (!AddKeyName(into, i, buf, thisMerge, from->fileID, False))
+ into->errorCount++;
+ }
+ if (from->leds)
+ {
+ IndicatorNameInfo *led, *next;
+ for (led = from->leds; led != NULL; led = next)
+ {
+ if (merge != MergeDefault)
+ led->defs.merge = merge;
+ if (!AddIndicatorName(into, led))
+ into->errorCount++;
+ next = (IndicatorNameInfo *) led->defs.next;
+ }
+ }
+ if (!MergeAliases(&into->aliases, &from->aliases, merge))
+ into->errorCount++;
+ if (from->explicitMin > 0)
+ {
+ if ((into->explicitMin < 0)
+ || (into->explicitMin > from->explicitMin))
+ into->effectiveMin = into->explicitMin = from->explicitMin;
+ }
+ if (from->explicitMax > 0)
+ {
+ if ((into->explicitMax < 0)
+ || (into->explicitMax < from->explicitMax))
+ into->effectiveMax = into->explicitMax = from->explicitMax;
+ }
+ return;
+}
+
+/**
+ * Handle the given include statement (e.g. "include "evdev+aliases(qwerty)").
+ *
+ * @param stmt The include statement from the keymap file.
+ * @param xkb Unused for all but the xkb->flags.
+ * @param info Struct to store the key info in.
+ */
+static Bool
+HandleIncludeKeycodes(IncludeStmt * stmt, XkbDescPtr xkb, KeyNamesInfo * info)
+{
+ unsigned newMerge;
+ XkbFile *rtrn;
+ KeyNamesInfo included = {NULL};
+ Bool haveSelf;
+
+ haveSelf = False;
+ if ((stmt->file == NULL) && (stmt->map == NULL))
+ {
+ haveSelf = True;
+ included = *info;
+ bzero(info, sizeof(KeyNamesInfo));
+ }
+ else if (strcmp(stmt->file, "computed") == 0)
+ {
+ xkb->flags |= AutoKeyNames;
+ info->explicitMin = XkbMinLegalKeyCode;
+ info->explicitMax = XkbMaxLegalKeyCode;
+ return (info->errorCount == 0);
+ } /* parse file, store returned info in the xkb struct */
+ else if (ProcessIncludeFile(stmt, XkmKeyNamesIndex, &rtrn, &newMerge))
+ {
+ InitKeyNamesInfo(&included);
+ HandleKeycodesFile(rtrn, xkb, MergeOverride, &included);
+ if (stmt->stmt != NULL)
+ {
+ if (included.name != NULL)
+ uFree(included.name);
+ included.name = stmt->stmt;
+ stmt->stmt = NULL;
+ }
+ }
+ else
+ {
+ info->errorCount += 10; /* XXX: why 10?? */
+ return False;
+ }
+ /* Do we have more than one include statement? */
+ if ((stmt->next != NULL) && (included.errorCount < 1))
+ {
+ IncludeStmt *next;
+ unsigned op;
+ KeyNamesInfo next_incl;
+
+ for (next = stmt->next; next != NULL; next = next->next)
+ {
+ if ((next->file == NULL) && (next->map == NULL))
+ {
+ haveSelf = True;
+ MergeIncludedKeycodes(&included, info, next->merge);
+ ClearKeyNamesInfo(info);
+ }
+ else if (ProcessIncludeFile(next, XkmKeyNamesIndex, &rtrn, &op))
+ {
+ InitKeyNamesInfo(&next_incl);
+ HandleKeycodesFile(rtrn, xkb, MergeOverride, &next_incl);
+ MergeIncludedKeycodes(&included, &next_incl, op);
+ ClearKeyNamesInfo(&next_incl);
+ }
+ else
+ {
+ info->errorCount += 10; /* XXX: Why 10?? */
+ return False;
+ }
+ }
+ }
+ if (haveSelf)
+ *info = included;
+ else
+ {
+ MergeIncludedKeycodes(info, &included, newMerge);
+ ClearKeyNamesInfo(&included);
+ }
+ return (info->errorCount == 0);
+}
+
+/**
+ * Parse the given statement and store the output in the info struct.
+ * e.g. <ESC> = 9
+ */
+static int
+HandleKeycodeDef(KeycodeDef * stmt, unsigned merge, KeyNamesInfo * info)
+{
+ int code;
+ ExprResult result;
+
+ if (!ExprResolveInteger(stmt->value, &result, NULL, NULL))
+ {
+ ACTION1("No value keycode assigned to name <%s>\n", stmt->name);
+ return 0;
+ }
+ code = result.ival;
+ if ((code < info->effectiveMin) || (code > info->effectiveMax))
+ {
+ ERROR2("Illegal keycode %d for name <%s>\n", code, stmt->name);
+ ACTION2("Must be in the range %d-%d inclusive\n",
+ info->effectiveMin, info->effectiveMax);
+ return 0;
+ }
+ if (stmt->merge != MergeDefault)
+ {
+ if (stmt->merge == MergeReplace)
+ merge = MergeOverride;
+ else
+ merge = stmt->merge;
+ }
+ return AddKeyName(info, code, stmt->name, merge, info->fileID, True);
+}
+
+#define MIN_KEYCODE_DEF 0
+#define MAX_KEYCODE_DEF 1
+
+/**
+ * Handle the minimum/maximum statement of the xkb file.
+ * Sets explicitMin/Max and effectiveMin/Max of the info struct.
+ *
+ * @return 1 on success, 0 otherwise.
+ */
+static int
+HandleKeyNameVar(VarDef * stmt, KeyNamesInfo * info)
+{
+ ExprResult tmp, field;
+ ExprDef *arrayNdx;
+ int which;
+
+ if (ExprResolveLhs(stmt->name, &tmp, &field, &arrayNdx) == 0)
+ return 0; /* internal error, already reported */
+
+ if (tmp.str != NULL)
+ {
+ ERROR1("Unknown element %s encountered\n", tmp.str);
+ ACTION1("Default for field %s ignored\n", field.str);
+ return 0;
+ }
+ if (uStrCaseCmp(field.str, "minimum") == 0)
+ which = MIN_KEYCODE_DEF;
+ else if (uStrCaseCmp(field.str, "maximum") == 0)
+ which = MAX_KEYCODE_DEF;
+ else
+ {
+ ERROR("Unknown field encountered\n");
+ ACTION1("Assigment to field %s ignored\n", field.str);
+ return 0;
+ }
+ if (arrayNdx != NULL)
+ {
+ ERROR1("The %s setting is not an array\n", field.str);
+ ACTION("Illegal array reference ignored\n");
+ return 0;
+ }
+
+ if (ExprResolveInteger(stmt->value, &tmp, NULL, NULL) == 0)
+ {
+ ACTION1("Assignment to field %s ignored\n", field.str);
+ return 0;
+ }
+ if ((tmp.ival < XkbMinLegalKeyCode) || (tmp.ival > XkbMaxLegalKeyCode))
+ {
+ ERROR3
+ ("Illegal keycode %d (must be in the range %d-%d inclusive)\n",
+ tmp.ival, XkbMinLegalKeyCode, XkbMaxLegalKeyCode);
+ ACTION1("Value of \"%s\" not changed\n", field.str);
+ return 0;
+ }
+ if (which == MIN_KEYCODE_DEF)
+ {
+ if ((info->explicitMax > 0) && (info->explicitMax < tmp.ival))
+ {
+ ERROR2
+ ("Minimum key code (%d) must be <= maximum key code (%d)\n",
+ tmp.ival, info->explicitMax);
+ ACTION("Minimum key code value not changed\n");
+ return 0;
+ }
+ if ((info->computedMax > 0) && (info->computedMin < tmp.ival))
+ {
+ ERROR2
+ ("Minimum key code (%d) must be <= lowest defined key (%d)\n",
+ tmp.ival, info->computedMin);
+ ACTION("Minimum key code value not changed\n");
+ return 0;
+ }
+ info->explicitMin = tmp.ival;
+ info->effectiveMin = tmp.ival;
+ }
+ if (which == MAX_KEYCODE_DEF)
+ {
+ if ((info->explicitMin > 0) && (info->explicitMin > tmp.ival))
+ {
+ ERROR2("Maximum code (%d) must be >= minimum key code (%d)\n",
+ tmp.ival, info->explicitMin);
+ ACTION("Maximum code value not changed\n");
+ return 0;
+ }
+ if ((info->computedMax > 0) && (info->computedMax > tmp.ival))
+ {
+ ERROR2
+ ("Maximum code (%d) must be >= highest defined key (%d)\n",
+ tmp.ival, info->computedMax);
+ ACTION("Maximum code value not changed\n");
+ return 0;
+ }
+ info->explicitMax = tmp.ival;
+ info->effectiveMax = tmp.ival;
+ }
+ return 1;
+}
+
+static int
+HandleIndicatorNameDef(IndicatorNameDef * def,
+ unsigned merge, KeyNamesInfo * info)
+{
+ IndicatorNameInfo ii;
+ ExprResult tmp;
+
+ if ((def->ndx < 1) || (def->ndx > XkbNumIndicators))
+ {
+ info->errorCount++;
+ ERROR1("Name specified for illegal indicator index %d\n", def->ndx);
+ ACTION("Ignored\n");
+ return False;
+ }
+ InitIndicatorNameInfo(&ii, info);
+ ii.ndx = def->ndx;
+ if (!ExprResolveString(def->name, &tmp, NULL, NULL))
+ {
+ char buf[20];
+ snprintf(buf, sizeof(buf), "%d", def->ndx);
+ info->errorCount++;
+ return ReportBadType("indicator", "name", buf, "string");
+ }
+ ii.name = XkbInternAtom(NULL, tmp.str, False);
+ ii.virtual = def->virtual;
+ if (!AddIndicatorName(info, &ii))
+ return False;
+ return True;
+}
+
+/**
+ * Handle the xkb_keycodes section of a xkb file.
+ * All information about parsed keys is stored in the info struct.
+ *
+ * Such a section may have include statements, in which case this function is
+ * semi-recursive (it calls HandleIncludeKeycodes, which may call
+ * HandleKeycodesFile again).
+ *
+ * @param file The input file (parsed xkb_keycodes section)
+ * @param xkb Necessary to pass down, may have flags changed.
+ * @param merge Merge strategy (MergeOverride, etc.)
+ * @param info Struct to contain the fully parsed key information.
+ */
+static void
+HandleKeycodesFile(XkbFile * file,
+ XkbDescPtr xkb, unsigned merge, KeyNamesInfo * info)
+{
+ ParseCommon *stmt;
+
+ info->name = uStringDup(file->name);
+ stmt = file->defs;
+ while (stmt)
+ {
+ switch (stmt->stmtType)
+ {
+ case StmtInclude: /* e.g. include "evdev+aliases(qwerty)" */
+ if (!HandleIncludeKeycodes((IncludeStmt *) stmt, xkb, info))
+ info->errorCount++;
+ break;
+ case StmtKeycodeDef: /* e.g. <ESC> = 9; */
+ if (!HandleKeycodeDef((KeycodeDef *) stmt, merge, info))
+ info->errorCount++;
+ break;
+ case StmtKeyAliasDef: /* e.g. alias <MENU> = <COMP>; */
+ if (!HandleAliasDef((KeyAliasDef *) stmt,
+ merge, info->fileID, &info->aliases))
+ info->errorCount++;
+ break;
+ case StmtVarDef: /* e.g. minimum, maximum */
+ if (!HandleKeyNameVar((VarDef *) stmt, info))
+ info->errorCount++;
+ break;
+ case StmtIndicatorNameDef: /* e.g. indicator 1 = "Caps Lock"; */
+ if (!HandleIndicatorNameDef((IndicatorNameDef *) stmt,
+ merge, info))
+ {
+ info->errorCount++;
+ }
+ break;
+ case StmtInterpDef:
+ case StmtVModDef:
+ ERROR("Keycode files may define key and indicator names only\n");
+ ACTION1("Ignoring definition of %s\n",
+ ((stmt->stmtType ==
+ StmtInterpDef) ? "a symbol interpretation" :
+ "virtual modifiers"));
+ info->errorCount++;
+ break;
+ default:
+ WSGO1("Unexpected statement type %d in HandleKeycodesFile\n",
+ stmt->stmtType);
+ break;
+ }
+ stmt = stmt->next;
+ if (info->errorCount > 10)
+ {
+#ifdef NOISY
+ ERROR("Too many errors\n");
+#endif
+ ACTION1("Abandoning keycodes file \"%s\"\n", file->topName);
+ break;
+ }
+ }
+ return;
+}
+
+/**
+ * Compile the xkb_keycodes section, parse it's output, return the results.
+ *
+ * @param file The parsed XKB file (may have include statements requiring
+ * further parsing)
+ * @param result The effective keycodes, as gathered from the file.
+ * @param merge Merge strategy.
+ *
+ * @return True on success, False otherwise.
+ */
+Bool
+CompileKeycodes(XkbFile * file, XkbFileInfo * result, unsigned merge)
+{
+ KeyNamesInfo info; /* contains all the info after parsing */
+ XkbDescPtr xkb;
+
+ xkb = result->xkb;
+ InitKeyNamesInfo(&info);
+ HandleKeycodesFile(file, xkb, merge, &info);
+
+ /* all the keys are now stored in info */
+
+ if (info.errorCount == 0)
+ {
+ if (info.explicitMin > 0) /* if "minimum" statement was present */
+ xkb->min_key_code = info.effectiveMin;
+ else
+ xkb->min_key_code = info.computedMin;
+ if (info.explicitMax > 0) /* if "maximum" statement was present */
+ xkb->max_key_code = info.effectiveMax;
+ else
+ xkb->max_key_code = info.computedMax;
+ if (XkbAllocNames(xkb, XkbKeyNamesMask | XkbIndicatorNamesMask, 0, 0)
+ == Success)
+ {
+ register int i;
+ xkb->names->keycodes = XkbInternAtom(xkb->dpy, info.name, False);
+ uDEBUG2(1, "key range: %d..%d\n", xkb->min_key_code,
+ xkb->max_key_code);
+ for (i = info.computedMin; i <= info.computedMax; i++)
+ {
+ LongToKeyName(info.names[i], xkb->names->keys[i].name);
+ uDEBUG2(2, "key %d = %s\n", i,
+ XkbKeyNameText(xkb->names->keys[i].name, XkbMessage));
+ }
+ }
+ else
+ {
+ WSGO("Cannot create XkbNamesRec in CompileKeycodes\n");
+ return False;
+ }
+ if (info.leds)
+ {
+ IndicatorNameInfo *ii;
+ if (XkbAllocIndicatorMaps(xkb) != Success)
+ {
+ WSGO("Couldn't allocate IndicatorRec in CompileKeycodes\n");
+ ACTION("Physical indicators not set\n");
+ }
+ for (ii = info.leds; ii != NULL;
+ ii = (IndicatorNameInfo *) ii->defs.next)
+ {
+ xkb->names->indicators[ii->ndx - 1] =
+ XkbInternAtom(xkb->dpy,
+ XkbAtomGetString(NULL, ii->name), False);
+ if (xkb->indicators != NULL)
+ {
+ register unsigned bit;
+ bit = 1 << (ii->ndx - 1);
+ if (ii->virtual)
+ xkb->indicators->phys_indicators &= ~bit;
+ else
+ xkb->indicators->phys_indicators |= bit;
+ }
+ }
+ }
+ if (info.aliases)
+ ApplyAliases(xkb, False, &info.aliases);
+ return True;
+ }
+ ClearKeyNamesInfo(&info);
+ return False;
+}
diff --git a/xkbcomp/keycodes.h b/xkbcomp/keycodes.h
index b7f5b9989..11f4460fe 100644
--- a/xkbcomp/keycodes.h
+++ b/xkbcomp/keycodes.h
@@ -1,40 +1,40 @@
-/************************************************************
- Copyright (c) 1994 by Silicon Graphics Computer Systems, Inc.
-
- Permission to use, copy, modify, and distribute this
- software and its documentation for any purpose and without
- fee is hereby granted, provided that the above copyright
- notice appear in all copies and that both that copyright
- notice and this permission notice appear in supporting
- documentation, and that the name of Silicon Graphics not be
- used in advertising or publicity pertaining to distribution
- of the software without specific prior written permission.
- Silicon Graphics makes no representation about the suitability
- of this software for any purpose. It is provided "as is"
- without any express or implied warranty.
-
- SILICON GRAPHICS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS
- SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
- AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON
- GRAPHICS BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL
- DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
- DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
- OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH
- THE USE OR PERFORMANCE OF THIS SOFTWARE.
-
- ********************************************************/
-
-#ifndef KEYCODES_H
-#define KEYCODES_H 1
-
-#define KeyNameToLong(n) ((((unsigned long)n[0])<<24)|(((unsigned long)n[1])<<16)|(((unsigned long)n[2])<<8)|n[3])
-
-extern char *longText(unsigned long /* val */ ,
- unsigned /* format */
- );
-
-extern void LongToKeyName(unsigned long /* val */ ,
- char * /* name_rtrn */
- );
-
-#endif /* KEYCODES_H */
+/************************************************************
+ Copyright (c) 1994 by Silicon Graphics Computer Systems, Inc.
+
+ Permission to use, copy, modify, and distribute this
+ software and its documentation for any purpose and without
+ fee is hereby granted, provided that the above copyright
+ notice appear in all copies and that both that copyright
+ notice and this permission notice appear in supporting
+ documentation, and that the name of Silicon Graphics not be
+ used in advertising or publicity pertaining to distribution
+ of the software without specific prior written permission.
+ Silicon Graphics makes no representation about the suitability
+ of this software for any purpose. It is provided "as is"
+ without any express or implied warranty.
+
+ SILICON GRAPHICS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS
+ SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
+ AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON
+ GRAPHICS BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL
+ DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
+ DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
+ OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH
+ THE USE OR PERFORMANCE OF THIS SOFTWARE.
+
+ ********************************************************/
+
+#ifndef KEYCODES_H
+#define KEYCODES_H 1
+
+#define KeyNameToLong(n) ((((unsigned long)n[0])<<24)|(((unsigned long)n[1])<<16)|(((unsigned long)n[2])<<8)|n[3])
+
+extern char *longText(unsigned long /* val */ ,
+ unsigned /* format */
+ );
+
+extern void LongToKeyName(unsigned long /* val */ ,
+ char * /* name_rtrn */
+ );
+
+#endif /* KEYCODES_H */
diff --git a/xkbcomp/keymap.c b/xkbcomp/keymap.c
index 2c90f515d..a419d8c42 100644
--- a/xkbcomp/keymap.c
+++ b/xkbcomp/keymap.c
@@ -1,183 +1,183 @@
-/************************************************************
- Copyright (c) 1994 by Silicon Graphics Computer Systems, Inc.
-
- Permission to use, copy, modify, and distribute this
- software and its documentation for any purpose and without
- fee is hereby granted, provided that the above copyright
- notice appear in all copies and that both that copyright
- notice and this permission notice appear in supporting
- documentation, and that the name of Silicon Graphics not be
- used in advertising or publicity pertaining to distribution
- of the software without specific prior written permission.
- Silicon Graphics makes no representation about the suitability
- of this software for any purpose. It is provided "as is"
- without any express or implied warranty.
-
- SILICON GRAPHICS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS
- SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
- AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON
- GRAPHICS BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL
- DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
- DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
- OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH
- THE USE OR PERFORMANCE OF THIS SOFTWARE.
-
- ********************************************************/
-
-#include "xkbcomp.h"
-#include "tokens.h"
-#include "expr.h"
-#include "vmod.h"
-#include "action.h"
-#include "misc.h"
-#include "indicators.h"
-
-#define KEYCODES 0
-#define GEOMETRY 1
-#define TYPES 2
-#define COMPAT 3
-#define SYMBOLS 4
-#define MAX_SECTIONS 5
-
-static XkbFile *sections[MAX_SECTIONS];
-
-/**
- * Compile the given file and store the output in result.
- * @param file A list of XkbFiles, each denoting one type (e.g.
- * XkmKeyNamesIdx, etc.)
- */
-Bool
-CompileKeymap(XkbFile * file, XkbFileInfo * result, unsigned merge)
-{
- unsigned have;
- Bool ok;
- unsigned required, legal;
- unsigned mainType;
- char *mainName;
- LEDInfo *unbound = NULL;
-
- bzero(sections, MAX_SECTIONS * sizeof(XkbFile *));
- mainType = file->type;
- mainName = file->name;
- switch (mainType)
- {
- case XkmSemanticsFile:
- required = XkmSemanticsRequired;
- legal = XkmSemanticsLegal;
- break;
- case XkmLayoutFile: /* standard type if setxkbmap -print */
- required = XkmLayoutRequired;
- legal = XkmKeymapLegal;
- break;
- case XkmKeymapFile:
- required = XkmKeymapRequired;
- legal = XkmKeymapLegal;
- break;
- default:
- ERROR1("Cannot compile %s alone into an XKM file\n",
- XkbConfigText(mainType, XkbMessage));
- return False;
- }
- have = 0;
- ok = 1;
- file = (XkbFile *) file->defs;
- /* Check for duplicate entries in the input file */
- while ((file) && (ok))
- {
- file->topName = mainName;
- if ((have & (1 << file->type)) != 0)
- {
- ERROR2("More than one %s section in a %s file\n",
- XkbConfigText(file->type, XkbMessage),
- XkbConfigText(mainType, XkbMessage));
- ACTION("All sections after the first ignored\n");
- ok = False;
- }
- else if ((1 << file->type) & (~legal))
- {
- ERROR2("Cannot define %s in a %s file\n",
- XkbConfigText(file->type, XkbMessage),
- XkbConfigText(mainType, XkbMessage));
- ok = False;
- }
- else
- switch (file->type)
- {
- case XkmSemanticsFile:
- case XkmLayoutFile:
- case XkmKeymapFile:
- WSGO2("Illegal %s configuration in a %s file\n",
- XkbConfigText(file->type, XkbMessage),
- XkbConfigText(mainType, XkbMessage));
- ACTION("Ignored\n");
- ok = False;
- break;
- case XkmKeyNamesIndex:
- sections[KEYCODES] = file;
- break;
- case XkmTypesIndex:
- sections[TYPES] = file;
- break;
- case XkmSymbolsIndex:
- sections[SYMBOLS] = file;
- break;
- case XkmCompatMapIndex:
- sections[COMPAT] = file;
- break;
- case XkmGeometryIndex:
- case XkmGeometryFile:
- sections[GEOMETRY] = file;
- break;
- case XkmVirtualModsIndex:
- case XkmIndicatorsIndex:
- WSGO1("Found an isolated %s section\n",
- XkbConfigText(file->type, XkbMessage));
- break;
- default:
- WSGO1("Unknown file type %d\n", file->type);
- break;
- }
- if (ok)
- have |= (1 << file->type);
- file = (XkbFile *) file->common.next;
- }
- /* compile the sections we have in the file one-by-one, or fail. */
- if (ok)
- {
- if (ok && (sections[KEYCODES] != NULL))
- ok = CompileKeycodes(sections[KEYCODES], result, MergeOverride);
- if (ok && (sections[GEOMETRY] != NULL))
- ok = CompileGeometry(sections[GEOMETRY], result, MergeOverride);
- if (ok && (sections[TYPES] != NULL))
- ok = CompileKeyTypes(sections[TYPES], result, MergeOverride);
- if (ok && (sections[COMPAT] != NULL))
- ok = CompileCompatMap(sections[COMPAT], result, MergeOverride,
- &unbound);
- if (ok && (sections[SYMBOLS] != NULL))
- ok = CompileSymbols(sections[SYMBOLS], result, MergeOverride);
- }
- if (!ok)
- return False;
- result->defined = have;
- if (required & (~have))
- {
- register int i, bit;
- unsigned missing;
- missing = required & (~have);
- for (i = 0, bit = 1; missing != 0; i++, bit <<= 1)
- {
- if (missing & bit)
- {
- ERROR2("Missing %s section in a %s file\n",
- XkbConfigText(i, XkbMessage),
- XkbConfigText(mainType, XkbMessage));
- missing &= ~bit;
- }
- }
- ACTION1("Description of %s not compiled\n",
- XkbConfigText(mainType, XkbMessage));
- ok = False;
- }
- ok = BindIndicators(result, True, unbound, NULL);
- return ok;
-}
+/************************************************************
+ Copyright (c) 1994 by Silicon Graphics Computer Systems, Inc.
+
+ Permission to use, copy, modify, and distribute this
+ software and its documentation for any purpose and without
+ fee is hereby granted, provided that the above copyright
+ notice appear in all copies and that both that copyright
+ notice and this permission notice appear in supporting
+ documentation, and that the name of Silicon Graphics not be
+ used in advertising or publicity pertaining to distribution
+ of the software without specific prior written permission.
+ Silicon Graphics makes no representation about the suitability
+ of this software for any purpose. It is provided "as is"
+ without any express or implied warranty.
+
+ SILICON GRAPHICS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS
+ SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
+ AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON
+ GRAPHICS BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL
+ DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
+ DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
+ OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH
+ THE USE OR PERFORMANCE OF THIS SOFTWARE.
+
+ ********************************************************/
+
+#include "xkbcomp.h"
+#include "tokens.h"
+#include "expr.h"
+#include "vmod.h"
+#include "action.h"
+#include "misc.h"
+#include "indicators.h"
+
+#define KEYCODES 0
+#define GEOMETRY 1
+#define TYPES 2
+#define COMPAT 3
+#define SYMBOLS 4
+#define MAX_SECTIONS 5
+
+static XkbFile *sections[MAX_SECTIONS];
+
+/**
+ * Compile the given file and store the output in result.
+ * @param file A list of XkbFiles, each denoting one type (e.g.
+ * XkmKeyNamesIdx, etc.)
+ */
+Bool
+CompileKeymap(XkbFile * file, XkbFileInfo * result, unsigned merge)
+{
+ unsigned have;
+ Bool ok;
+ unsigned required, legal;
+ unsigned mainType;
+ char *mainName;
+ LEDInfo *unbound = NULL;
+
+ bzero(sections, MAX_SECTIONS * sizeof(XkbFile *));
+ mainType = file->type;
+ mainName = file->name;
+ switch (mainType)
+ {
+ case XkmSemanticsFile:
+ required = XkmSemanticsRequired;
+ legal = XkmSemanticsLegal;
+ break;
+ case XkmLayoutFile: /* standard type if setxkbmap -print */
+ required = XkmLayoutRequired;
+ legal = XkmKeymapLegal;
+ break;
+ case XkmKeymapFile:
+ required = XkmKeymapRequired;
+ legal = XkmKeymapLegal;
+ break;
+ default:
+ ERROR1("Cannot compile %s alone into an XKM file\n",
+ XkbConfigText(mainType, XkbMessage));
+ return False;
+ }
+ have = 0;
+ ok = 1;
+ file = (XkbFile *) file->defs;
+ /* Check for duplicate entries in the input file */
+ while ((file) && (ok))
+ {
+ file->topName = mainName;
+ if ((have & (1 << file->type)) != 0)
+ {
+ ERROR2("More than one %s section in a %s file\n",
+ XkbConfigText(file->type, XkbMessage),
+ XkbConfigText(mainType, XkbMessage));
+ ACTION("All sections after the first ignored\n");
+ ok = False;
+ }
+ else if ((1 << file->type) & (~legal))
+ {
+ ERROR2("Cannot define %s in a %s file\n",
+ XkbConfigText(file->type, XkbMessage),
+ XkbConfigText(mainType, XkbMessage));
+ ok = False;
+ }
+ else
+ switch (file->type)
+ {
+ case XkmSemanticsFile:
+ case XkmLayoutFile:
+ case XkmKeymapFile:
+ WSGO2("Illegal %s configuration in a %s file\n",
+ XkbConfigText(file->type, XkbMessage),
+ XkbConfigText(mainType, XkbMessage));
+ ACTION("Ignored\n");
+ ok = False;
+ break;
+ case XkmKeyNamesIndex:
+ sections[KEYCODES] = file;
+ break;
+ case XkmTypesIndex:
+ sections[TYPES] = file;
+ break;
+ case XkmSymbolsIndex:
+ sections[SYMBOLS] = file;
+ break;
+ case XkmCompatMapIndex:
+ sections[COMPAT] = file;
+ break;
+ case XkmGeometryIndex:
+ case XkmGeometryFile:
+ sections[GEOMETRY] = file;
+ break;
+ case XkmVirtualModsIndex:
+ case XkmIndicatorsIndex:
+ WSGO1("Found an isolated %s section\n",
+ XkbConfigText(file->type, XkbMessage));
+ break;
+ default:
+ WSGO1("Unknown file type %d\n", file->type);
+ break;
+ }
+ if (ok)
+ have |= (1 << file->type);
+ file = (XkbFile *) file->common.next;
+ }
+ /* compile the sections we have in the file one-by-one, or fail. */
+ if (ok)
+ {
+ if (ok && (sections[KEYCODES] != NULL))
+ ok = CompileKeycodes(sections[KEYCODES], result, MergeOverride);
+ if (ok && (sections[GEOMETRY] != NULL))
+ ok = CompileGeometry(sections[GEOMETRY], result, MergeOverride);
+ if (ok && (sections[TYPES] != NULL))
+ ok = CompileKeyTypes(sections[TYPES], result, MergeOverride);
+ if (ok && (sections[COMPAT] != NULL))
+ ok = CompileCompatMap(sections[COMPAT], result, MergeOverride,
+ &unbound);
+ if (ok && (sections[SYMBOLS] != NULL))
+ ok = CompileSymbols(sections[SYMBOLS], result, MergeOverride);
+ }
+ if (!ok)
+ return False;
+ result->defined = have;
+ if (required & (~have))
+ {
+ register int i, bit;
+ unsigned missing;
+ missing = required & (~have);
+ for (i = 0, bit = 1; missing != 0; i++, bit <<= 1)
+ {
+ if (missing & bit)
+ {
+ ERROR2("Missing %s section in a %s file\n",
+ XkbConfigText(i, XkbMessage),
+ XkbConfigText(mainType, XkbMessage));
+ missing &= ~bit;
+ }
+ }
+ ACTION1("Description of %s not compiled\n",
+ XkbConfigText(mainType, XkbMessage));
+ ok = False;
+ }
+ ok = BindIndicators(result, True, unbound, NULL);
+ return ok;
+}
diff --git a/xkbcomp/keytypes.c b/xkbcomp/keytypes.c
index d0d5302f9..da55d755d 100644
--- a/xkbcomp/keytypes.c
+++ b/xkbcomp/keytypes.c
@@ -1,1293 +1,1293 @@
-/************************************************************
- Copyright (c) 1994 by Silicon Graphics Computer Systems, Inc.
-
- Permission to use, copy, modify, and distribute this
- software and its documentation for any purpose and without
- fee is hereby granted, provided that the above copyright
- notice appear in all copies and that both that copyright
- notice and this permission notice appear in supporting
- documentation, and that the name of Silicon Graphics not be
- used in advertising or publicity pertaining to distribution
- of the software without specific prior written permission.
- Silicon Graphics makes no representation about the suitability
- of this software for any purpose. It is provided "as is"
- without any express or implied warranty.
-
- SILICON GRAPHICS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS
- SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
- AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON
- GRAPHICS BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL
- DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
- DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
- OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH
- THE USE OR PERFORMANCE OF THIS SOFTWARE.
-
- ********************************************************/
-
-#include "xkbcomp.h"
-#include "tokens.h"
-#include "expr.h"
-#include "vmod.h"
-#include "action.h"
-#include "misc.h"
-
-typedef struct _PreserveInfo
-{
- CommonInfo defs;
- short matchingMapIndex;
- unsigned char indexMods;
- unsigned char preMods;
- unsigned short indexVMods;
- unsigned short preVMods;
-} PreserveInfo;
-
-#define _KT_Name (1<<0)
-#define _KT_Mask (1<<1)
-#define _KT_Map (1<<2)
-#define _KT_Preserve (1<<3)
-#define _KT_LevelNames (1<<4)
-
-typedef struct _KeyTypeInfo
-{
- CommonInfo defs;
- Display *dpy;
- Atom name;
- int fileID;
- unsigned mask;
- unsigned vmask;
- Bool groupInfo;
- int numLevels;
- int nEntries;
- int szEntries;
- XkbKTMapEntryPtr entries;
- PreserveInfo *preserve;
- int szNames;
- Atom *lvlNames;
-} KeyTypeInfo;
-
-typedef struct _KeyTypesInfo
-{
- Display *dpy;
- char *name;
- int errorCount;
- int fileID;
- unsigned stdPresent;
- int nTypes;
- KeyTypeInfo *types;
- KeyTypeInfo dflt;
- VModInfo vmods;
-} KeyTypesInfo;
-
-Atom tok_ONE_LEVEL;
-Atom tok_TWO_LEVEL;
-Atom tok_ALPHABETIC;
-Atom tok_KEYPAD;
-
-/***====================================================================***/
-
-#define ReportTypeShouldBeArray(t,f) \
- ReportShouldBeArray("key type",(f),TypeTxt(t))
-#define ReportTypeBadType(t,f,w) \
- ReportBadType("key type",(f),TypeTxt(t),(w))
-
-/***====================================================================***/
-
-extern Bool AddMapEntry(XkbDescPtr /* xkb */ ,
- KeyTypeInfo * /* type */ ,
- XkbKTMapEntryPtr /* new */ ,
- Bool /* clobber */ ,
- Bool /* report */
- );
-
-extern Bool AddPreserve(XkbDescPtr /* xkb */ ,
- KeyTypeInfo * /* type */ ,
- PreserveInfo * /* new */ ,
- Bool /* clobber */ ,
- Bool /* report */
- );
-
-extern Bool AddLevelName(KeyTypeInfo * /* type */ ,
- unsigned /* level */ ,
- Atom /* name */ ,
- Bool /* clobber */ ,
- Bool /* report */
- );
-
-#define MapEntryTxt(t,x,e) \
- XkbVModMaskText((t)->dpy,(x),(e)->mods.real_mods,(e)->mods.vmods,XkbMessage)
-#define PreserveIndexTxt(t,x,p) \
- XkbVModMaskText((t)->dpy,(x),(p)->indexMods,(p)->indexVMods,XkbMessage)
-#define PreserveTxt(t,x,p) \
- XkbVModMaskText((t)->dpy,(x),(p)->preMods,(p)->preVMods,XkbMessage)
-#define TypeTxt(t) XkbAtomText((t)->dpy,(t)->name,XkbMessage)
-#define TypeMaskTxt(t,x) \
- XkbVModMaskText((t)->dpy,(x),(t)->mask,(t)->vmask,XkbMessage)
-
-/***====================================================================***/
-
-static void
-InitKeyTypesInfo(KeyTypesInfo * info, XkbDescPtr xkb, KeyTypesInfo * from)
-{
- tok_ONE_LEVEL = XkbInternAtom(NULL, "ONE_LEVEL", False);
- tok_TWO_LEVEL = XkbInternAtom(NULL, "TWO_LEVEL", False);
- tok_ALPHABETIC = XkbInternAtom(NULL, "ALPHABETIC", False);
- tok_KEYPAD = XkbInternAtom(NULL, "KEYPAD", False);
- info->dpy = NULL;
- info->name = uStringDup("default");
- info->errorCount = 0;
- info->stdPresent = 0;
- info->nTypes = 0;
- info->types = NULL;
- info->dflt.defs.defined = 0;
- info->dflt.defs.fileID = 0;
- info->dflt.defs.merge = MergeOverride;
- info->dflt.defs.next = NULL;
- info->dflt.name = None;
- info->dflt.mask = 0;
- info->dflt.vmask = 0;
- info->dflt.groupInfo = False;
- info->dflt.numLevels = 1;
- info->dflt.nEntries = info->dflt.szEntries = 0;
- info->dflt.entries = NULL;
- info->dflt.szNames = 0;
- info->dflt.lvlNames = NULL;
- info->dflt.preserve = NULL;
- InitVModInfo(&info->vmods, xkb);
- if (from != NULL)
- {
- info->dpy = from->dpy;
- info->dflt = from->dflt;
- if (from->dflt.entries)
- {
- info->dflt.entries = uTypedCalloc(from->dflt.szEntries,
- XkbKTMapEntryRec);
- if (info->dflt.entries)
- {
- unsigned sz = from->dflt.nEntries * sizeof(XkbKTMapEntryRec);
- memcpy(info->dflt.entries, from->dflt.entries, sz);
- }
- }
- if (from->dflt.lvlNames)
- {
- info->dflt.lvlNames = uTypedCalloc(from->dflt.szNames, Atom);
- if (info->dflt.lvlNames)
- {
- register unsigned sz = from->dflt.szNames * sizeof(Atom);
- memcpy(info->dflt.lvlNames, from->dflt.lvlNames, sz);
- }
- }
- if (from->dflt.preserve)
- {
- PreserveInfo *old, *new, *last;
- last = NULL;
- old = from->dflt.preserve;
- for (; old; old = (PreserveInfo *) old->defs.next)
- {
- new = uTypedAlloc(PreserveInfo);
- if (!new)
- return;
- *new = *old;
- new->defs.next = NULL;
- if (last)
- last->defs.next = (CommonInfo *) new;
- else
- info->dflt.preserve = new;
- last = new;
- }
- }
- }
- return;
-}
-
-static void
-FreeKeyTypeInfo(KeyTypeInfo * type)
-{
- if (type->entries != NULL)
- {
- uFree(type->entries);
- type->entries = NULL;
- }
- if (type->lvlNames != NULL)
- {
- uFree(type->lvlNames);
- type->lvlNames = NULL;
- }
- if (type->preserve != NULL)
- {
- ClearCommonInfo(&type->preserve->defs);
- type->preserve = NULL;
- }
- return;
-}
-
-static void
-FreeKeyTypesInfo(KeyTypesInfo * info)
-{
- info->dpy = NULL;
- if (info->name)
- uFree(info->name);
- info->name = NULL;
- if (info->types)
- {
- register KeyTypeInfo *type;
- for (type = info->types; type; type = (KeyTypeInfo *) type->defs.next)
- {
- FreeKeyTypeInfo(type);
- }
- info->types = (KeyTypeInfo *) ClearCommonInfo(&info->types->defs);
- }
- FreeKeyTypeInfo(&info->dflt);
- return;
-}
-
-static KeyTypeInfo *
-NextKeyType(KeyTypesInfo * info)
-{
- KeyTypeInfo *type;
-
- type = uTypedAlloc(KeyTypeInfo);
- if (type != NULL)
- {
- bzero(type, sizeof(KeyTypeInfo));
- type->defs.fileID = info->fileID;
- type->dpy = info->dpy;
- info->types = (KeyTypeInfo *) AddCommonInfo(&info->types->defs,
- (CommonInfo *) type);
- info->nTypes++;
- }
- return type;
-}
-
-static KeyTypeInfo *
-FindMatchingKeyType(KeyTypesInfo * info, KeyTypeInfo * new)
-{
- KeyTypeInfo *old;
-
- for (old = info->types; old; old = (KeyTypeInfo *) old->defs.next)
- {
- if (old->name == new->name)
- return old;
- }
- return NULL;
-}
-
-static Bool
-ReportTypeBadWidth(const char *type, int has, int needs)
-{
- ERROR3("Key type \"%s\" has %d levels, must have %d\n", type, has, needs);
- ACTION("Illegal type definition ignored\n");
- return False;
-}
-
-static Bool
-AddKeyType(XkbDescPtr xkb, KeyTypesInfo * info, KeyTypeInfo * new)
-{
- KeyTypeInfo *old;
-
- if (new->name == tok_ONE_LEVEL)
- {
- if (new->numLevels > 1)
- return ReportTypeBadWidth("ONE_LEVEL", new->numLevels, 1);
- info->stdPresent |= XkbOneLevelMask;
- }
- else if (new->name == tok_TWO_LEVEL)
- {
- if (new->numLevels > 2)
- return ReportTypeBadWidth("TWO_LEVEL", new->numLevels, 2);
- else if (new->numLevels < 2)
- new->numLevels = 2;
- info->stdPresent |= XkbTwoLevelMask;
- }
- else if (new->name == tok_ALPHABETIC)
- {
- if (new->numLevels > 2)
- return ReportTypeBadWidth("ALPHABETIC", new->numLevels, 2);
- else if (new->numLevels < 2)
- new->numLevels = 2;
- info->stdPresent |= XkbAlphabeticMask;
- }
- else if (new->name == tok_KEYPAD)
- {
- if (new->numLevels > 2)
- return ReportTypeBadWidth("KEYPAD", new->numLevels, 2);
- else if (new->numLevels < 2)
- new->numLevels = 2;
- info->stdPresent |= XkbKeypadMask;
- }
-
- old = FindMatchingKeyType(info, new);
- if (old != NULL)
- {
- Bool report;
- if ((new->defs.merge == MergeReplace)
- || (new->defs.merge == MergeOverride))
- {
- KeyTypeInfo *next = (KeyTypeInfo *) old->defs.next;
- if (((old->defs.fileID == new->defs.fileID)
- && (warningLevel > 0)) || (warningLevel > 9))
- {
- WARN1("Multiple definitions of the %s key type\n",
- XkbAtomGetString(NULL, new->name));
- ACTION("Earlier definition ignored\n");
- }
- FreeKeyTypeInfo(old);
- *old = *new;
- new->szEntries = new->nEntries = 0;
- new->entries = NULL;
- new->preserve = NULL;
- new->lvlNames = NULL;
- old->defs.next = &next->defs;
- return True;
- }
- report = (old->defs.fileID == new->defs.fileID) && (warningLevel > 0);
- if (report)
- {
- WARN1("Multiple definitions of the %s key type\n",
- XkbAtomGetString(NULL, new->name));
- ACTION("Later definition ignored\n");
- }
- FreeKeyTypeInfo(new);
- return True;
- }
- old = NextKeyType(info);
- if (old == NULL)
- return False;
- *old = *new;
- old->defs.next = NULL;
- new->nEntries = new->szEntries = 0;
- new->entries = NULL;
- new->szNames = 0;
- new->lvlNames = NULL;
- new->preserve = NULL;
- return True;
-}
-
-/***====================================================================***/
-
-static void
-MergeIncludedKeyTypes(KeyTypesInfo * into,
- KeyTypesInfo * from, unsigned merge, XkbDescPtr xkb)
-{
- KeyTypeInfo *type;
-
- if (from->errorCount > 0)
- {
- into->errorCount += from->errorCount;
- return;
- }
- if (into->name == NULL)
- {
- into->name = from->name;
- from->name = NULL;
- }
- for (type = from->types; type; type = (KeyTypeInfo *) type->defs.next)
- {
- if (merge != MergeDefault)
- type->defs.merge = merge;
- if (!AddKeyType(xkb, into, type))
- into->errorCount++;
- }
- into->stdPresent |= from->stdPresent;
- return;
-}
-
-typedef void (*FileHandler) (XkbFile * /* file */ ,
- XkbDescPtr /* xkb */ ,
- unsigned /* merge */ ,
- KeyTypesInfo * /* included */
- );
-
-static Bool
-HandleIncludeKeyTypes(IncludeStmt * stmt,
- XkbDescPtr xkb, KeyTypesInfo * info, FileHandler hndlr)
-{
- unsigned newMerge;
- XkbFile *rtrn;
- KeyTypesInfo included;
- Bool haveSelf;
-
- haveSelf = False;
- if ((stmt->file == NULL) && (stmt->map == NULL))
- {
- haveSelf = True;
- included = *info;
- bzero(info, sizeof(KeyTypesInfo));
- }
- else if (ProcessIncludeFile(stmt, XkmTypesIndex, &rtrn, &newMerge))
- {
- InitKeyTypesInfo(&included, xkb, info);
- included.fileID = included.dflt.defs.fileID = rtrn->id;
- included.dflt.defs.merge = newMerge;
-
- (*hndlr) (rtrn, xkb, newMerge, &included);
- if (stmt->stmt != NULL)
- {
- if (included.name != NULL)
- uFree(included.name);
- included.name = stmt->stmt;
- stmt->stmt = NULL;
- }
- }
- else
- {
- info->errorCount += 10;
- return False;
- }
- if ((stmt->next != NULL) && (included.errorCount < 1))
- {
- IncludeStmt *next;
- unsigned op;
- KeyTypesInfo next_incl;
-
- for (next = stmt->next; next != NULL; next = next->next)
- {
- if ((next->file == NULL) && (next->map == NULL))
- {
- haveSelf = True;
- MergeIncludedKeyTypes(&included, info, next->merge, xkb);
- FreeKeyTypesInfo(info);
- }
- else if (ProcessIncludeFile(next, XkmTypesIndex, &rtrn, &op))
- {
- InitKeyTypesInfo(&next_incl, xkb, &included);
- next_incl.fileID = next_incl.dflt.defs.fileID = rtrn->id;
- next_incl.dflt.defs.merge = op;
- (*hndlr) (rtrn, xkb, op, &next_incl);
- MergeIncludedKeyTypes(&included, &next_incl, op, xkb);
- FreeKeyTypesInfo(&next_incl);
- }
- else
- {
- info->errorCount += 10;
- return False;
- }
- }
- }
- if (haveSelf)
- *info = included;
- else
- {
- MergeIncludedKeyTypes(info, &included, newMerge, xkb);
- FreeKeyTypesInfo(&included);
- }
- return (info->errorCount == 0);
-}
-
-/***====================================================================***/
-
-static XkbKTMapEntryPtr
-FindMatchingMapEntry(KeyTypeInfo * type, unsigned mask, unsigned vmask)
-{
- register int i;
- XkbKTMapEntryPtr entry;
-
- for (i = 0, entry = type->entries; i < type->nEntries; i++, entry++)
- {
- if ((entry->mods.real_mods == mask) && (entry->mods.vmods == vmask))
- return entry;
- }
- return NULL;
-}
-
-static void
-DeleteLevel1MapEntries(KeyTypeInfo * type)
-{
- register int i, n;
-
- for (i = 0; i < type->nEntries; i++)
- {
- if (type->entries[i].level == 0)
- {
- for (n = i; n < type->nEntries - 1; n++)
- {
- type->entries[n] = type->entries[n + 1];
- }
- type->nEntries--;
- }
- }
- return;
-}
-
-/**
- * Return a pointer to the next free XkbKTMapEntry, reallocating space if
- * necessary.
- */
-static XkbKTMapEntryPtr
-NextMapEntry(KeyTypeInfo * type)
-{
- if (type->entries == NULL)
- {
- type->entries = uTypedCalloc(2, XkbKTMapEntryRec);
- if (type->entries == NULL)
- {
- ERROR1("Couldn't allocate map entries for %s\n", TypeTxt(type));
- ACTION("Map entries lost\n");
- return NULL;
- }
- type->szEntries = 2;
- type->nEntries = 0;
- }
- else if (type->nEntries >= type->szEntries)
- {
- type->szEntries *= 2;
- type->entries = uTypedRecalloc(type->entries,
- type->nEntries, type->szEntries,
- XkbKTMapEntryRec);
- if (type->entries == NULL)
- {
- ERROR1("Couldn't reallocate map entries for %s\n", TypeTxt(type));
- ACTION("Map entries lost\n");
- return NULL;
- }
- }
- return &type->entries[type->nEntries++];
-}
-
-Bool
-AddPreserve(XkbDescPtr xkb,
- KeyTypeInfo * type, PreserveInfo * new, Bool clobber, Bool report)
-{
- PreserveInfo *old;
-
- old = type->preserve;
- while (old != NULL)
- {
- if ((old->indexMods != new->indexMods) ||
- (old->indexVMods != new->indexVMods))
- {
- old = (PreserveInfo *) old->defs.next;
- continue;
- }
- if ((old->preMods == new->preMods)
- && (old->preVMods == new->preVMods))
- {
- if (warningLevel > 9)
- {
- WARN2("Identical definitions for preserve[%s] in %s\n",
- PreserveIndexTxt(type, xkb, old), TypeTxt(type));
- ACTION("Ignored\n");
- }
- return True;
- }
- if (report && (warningLevel > 0))
- {
- char *str;
- WARN2("Multiple definitions for preserve[%s] in %s\n",
- PreserveIndexTxt(type, xkb, old), TypeTxt(type));
-
- if (clobber)
- str = PreserveTxt(type, xkb, new);
- else
- str = PreserveTxt(type, xkb, old);
- ACTION1("Using %s, ", str);
- if (clobber)
- str = PreserveTxt(type, xkb, old);
- else
- str = PreserveTxt(type, xkb, new);
- INFO1("ignoring %s\n", str);
- }
- if (clobber)
- {
- old->preMods = new->preMods;
- old->preVMods = new->preVMods;
- }
- return True;
- }
- old = uTypedAlloc(PreserveInfo);
- if (!old)
- {
- WSGO1("Couldn't allocate preserve in %s\n", TypeTxt(type));
- ACTION1("Preserve[%s] lost\n", PreserveIndexTxt(type, xkb, old));
- return False;
- }
- *old = *new;
- old->matchingMapIndex = -1;
- type->preserve =
- (PreserveInfo *) AddCommonInfo(&type->preserve->defs, &old->defs);
- return True;
-}
-
-/**
- * Add a new KTMapEntry to the given key type. If an entry with the same mods
- * already exists, the level is updated (if clobber is TRUE). Otherwise, a new
- * entry is created.
- *
- * @param clobber Overwrite existing entry.
- * @param report True if a warning is to be printed on.
- */
-Bool
-AddMapEntry(XkbDescPtr xkb,
- KeyTypeInfo * type,
- XkbKTMapEntryPtr new, Bool clobber, Bool report)
-{
- XkbKTMapEntryPtr old;
-
- if ((old =
- FindMatchingMapEntry(type, new->mods.real_mods, new->mods.vmods)))
- {
- if (report && (old->level != new->level))
- {
- unsigned use, ignore;
- if (clobber)
- {
- use = new->level + 1;
- ignore = old->level + 1;
- }
- else
- {
- use = old->level + 1;
- ignore = new->level + 1;
- }
- WARN2("Multiple map entries for %s in %s\n",
- MapEntryTxt(type, xkb, new), TypeTxt(type));
- ACTION2("Using %d, ignoring %d\n", use, ignore);
- }
- else if (warningLevel > 9)
- {
- WARN3("Multiple occurences of map[%s]= %d in %s\n",
- MapEntryTxt(type, xkb, new), new->level + 1, TypeTxt(type));
- ACTION("Ignored\n");
- return True;
- }
- if (clobber)
- old->level = new->level;
- return True;
- }
- if ((old = NextMapEntry(type)) == NULL)
- return False; /* allocation failure, already reported */
- if (new->level >= type->numLevels)
- type->numLevels = new->level + 1;
- if (new->mods.vmods == 0)
- old->active = True;
- else
- old->active = False;
- old->mods.mask = new->mods.real_mods;
- old->mods.real_mods = new->mods.real_mods;
- old->mods.vmods = new->mods.vmods;
- old->level = new->level;
- return True;
-}
-
-static LookupEntry lnames[] = {
- {"level1", 1},
- {"level2", 2},
- {"level3", 3},
- {"level4", 4},
- {"level5", 5},
- {"level6", 6},
- {"level7", 7},
- {"level8", 8},
- {NULL, 0}
-};
-
-static Bool
-SetMapEntry(KeyTypeInfo * type,
- XkbDescPtr xkb, ExprDef * arrayNdx, ExprDef * value)
-{
- ExprResult rtrn;
- XkbKTMapEntryRec entry;
-
- if (arrayNdx == NULL)
- return ReportTypeShouldBeArray(type, "map entry");
- if (!ExprResolveModMask(arrayNdx, &rtrn, LookupVModMask, (XPointer) xkb))
- return ReportTypeBadType(type, "map entry", "modifier mask");
- entry.mods.real_mods = rtrn.uval & 0xff; /* modifiers < 512 */
- entry.mods.vmods = (rtrn.uval >> 8) & 0xffff; /* modifiers > 512 */
- if ((entry.mods.real_mods & (~type->mask)) ||
- ((entry.mods.vmods & (~type->vmask)) != 0))
- {
- if (warningLevel > 0)
- {
- WARN1("Map entry for unused modifiers in %s\n", TypeTxt(type));
- ACTION1("Using %s instead of ",
- XkbVModMaskText(type->dpy, xkb,
- entry.mods.real_mods & type->mask,
- entry.mods.vmods & type->vmask,
- XkbMessage));
- INFO1("%s\n", MapEntryTxt(type, xkb, &entry));
- }
- entry.mods.real_mods &= type->mask;
- entry.mods.vmods &= type->vmask;
- }
- if (!ExprResolveInteger(value, &rtrn, SimpleLookup, (XPointer) lnames))
- {
- ERROR("Level specifications in a key type must be integer\n");
- ACTION("Ignoring malformed level specification\n");
- return False;
- }
- if ((rtrn.ival < 1) || (rtrn.ival > XkbMaxShiftLevel + 1))
- {
- ERROR3("Shift level %d out of range (1..%d) in key type %s\n",
- XkbMaxShiftLevel + 1, rtrn.ival, TypeTxt(type));
- ACTION1("Ignoring illegal definition of map[%s]\n",
- MapEntryTxt(type, xkb, &entry));
- return False;
- }
- entry.level = rtrn.ival - 1;
- return AddMapEntry(xkb, type, &entry, True, True);
-}
-
-static Bool
-SetPreserve(KeyTypeInfo * type,
- XkbDescPtr xkb, ExprDef * arrayNdx, ExprDef * value)
-{
- ExprResult rtrn;
- PreserveInfo new;
-
- if (arrayNdx == NULL)
- return ReportTypeShouldBeArray(type, "preserve entry");
- if (!ExprResolveModMask(arrayNdx, &rtrn, LookupVModMask, (XPointer) xkb))
- return ReportTypeBadType(type, "preserve entry", "modifier mask");
- new.defs = type->defs;
- new.defs.next = NULL;
- new.indexMods = rtrn.uval & 0xff;
- new.indexVMods = (rtrn.uval >> 8) & 0xffff;
- if ((new.indexMods & (~type->mask)) || (new.indexVMods & (~type->vmask)))
- {
- if (warningLevel > 0)
- {
- WARN1("Preserve for modifiers not used by the %s type\n",
- TypeTxt(type));
- ACTION1("Index %s converted to ",
- PreserveIndexTxt(type, xkb, &new));
- }
- new.indexMods &= type->mask;
- new.indexVMods &= type->vmask;
- if (warningLevel > 0)
- INFO1("%s\n", PreserveIndexTxt(type, xkb, &new));
- }
- if (!ExprResolveModMask(value, &rtrn, LookupVModMask, (XPointer) xkb))
- {
- ERROR("Preserve value in a key type is not a modifier mask\n");
- ACTION2("Ignoring preserve[%s] in type %s\n",
- PreserveIndexTxt(type, xkb, &new), TypeTxt(type));
- return False;
- }
- new.preMods = rtrn.uval & 0xff;
- new.preVMods = (rtrn.uval >> 16) & 0xffff;
- if ((new.preMods & (~new.indexMods))
- || (new.preVMods && (~new.indexVMods)))
- {
- if (warningLevel > 0)
- {
- WARN2("Illegal value for preserve[%s] in type %s\n",
- PreserveTxt(type, xkb, &new), TypeTxt(type));
- ACTION1("Converted %s to ", PreserveIndexTxt(type, xkb, &new));
- }
- new.preMods &= new.indexMods;
- new.preVMods &= new.indexVMods;
- if (warningLevel > 0)
- {
- INFO1("%s\n", PreserveIndexTxt(type, xkb, &new));
- }
- }
- return AddPreserve(xkb, type, &new, True, True);
-}
-
-/***====================================================================***/
-
-Bool
-AddLevelName(KeyTypeInfo * type,
- unsigned level, Atom name, Bool clobber, Bool report)
-{
- if ((type->lvlNames == NULL) || (type->szNames <= level))
- {
- type->lvlNames =
- uTypedRecalloc(type->lvlNames, type->szNames, level + 1, Atom);
- if (type->lvlNames == NULL)
- {
- ERROR1("Couldn't allocate level names for type %s\n",
- TypeTxt(type));
- ACTION("Level names lost\n");
- type->szNames = 0;
- return False;
- }
- type->szNames = level + 1;
- }
- else if (type->lvlNames[level] == name)
- {
- if (warningLevel > 9)
- {
- WARN2("Duplicate names for level %d of key type %s\n",
- level + 1, TypeTxt(type));
- ACTION("Ignored\n");
- }
- return True;
- }
- else if (type->lvlNames[level] != None)
- {
- if (warningLevel > 0)
- {
- char *old, *new;
- old = XkbAtomText(type->dpy, type->lvlNames[level], XkbMessage);
- new = XkbAtomText(type->dpy, name, XkbMessage);
- WARN2("Multiple names for level %d of key type %s\n",
- level + 1, TypeTxt(type));
- if (clobber)
- ACTION2("Using %s, ignoring %s\n", new, old);
- else
- ACTION2("Using %s, ignoring %s\n", old, new);
- }
- if (!clobber)
- return True;
- }
- if (level >= type->numLevels)
- type->numLevels = level + 1;
- type->lvlNames[level] = name;
- return True;
-}
-
-static Bool
-SetLevelName(KeyTypeInfo * type, ExprDef * arrayNdx, ExprDef * value)
-{
- ExprResult rtrn;
- unsigned level;
-
- if (arrayNdx == NULL)
- return ReportTypeShouldBeArray(type, "level name");
- if (!ExprResolveInteger(arrayNdx, &rtrn, SimpleLookup, (XPointer) lnames))
- return ReportTypeBadType(type, "level name", "integer");
- if ((rtrn.ival < 1) || (rtrn.ival > XkbMaxShiftLevel + 1))
- {
- ERROR3("Level name %d out of range (1..%d) in key type %s\n",
- rtrn.ival,
- XkbMaxShiftLevel + 1,
- XkbAtomText(type->dpy, type->name, XkbMessage));
- ACTION("Ignoring illegal level name definition\n");
- return False;
- }
- level = rtrn.ival - 1;
- if (!ExprResolveString(value, &rtrn, NULL, NULL))
- {
- ERROR2("Non-string name for level %d in key type %s\n", level + 1,
- XkbAtomText(type->dpy, type->name, XkbMessage));
- ACTION("Ignoring illegal level name definition\n");
- return False;
- }
- return
- AddLevelName(type, level, XkbInternAtom(NULL, rtrn.str, False), True,
- True);
-}
-
-/***====================================================================***/
-
-/**
- * Parses the fields in a type "..." { } description.
- *
- * @param field The field to parse (e.g. modifiers, map, level_name)
- */
-static Bool
-SetKeyTypeField(KeyTypeInfo * type,
- XkbDescPtr xkb,
- char *field,
- ExprDef * arrayNdx, ExprDef * value, KeyTypesInfo * info)
-{
- ExprResult tmp;
-
- if (uStrCaseCmp(field, "modifiers") == 0)
- {
- unsigned mods, vmods;
- if (arrayNdx != NULL)
- {
- WARN("The modifiers field of a key type is not an array\n");
- ACTION("Illegal array subscript ignored\n");
- }
- /* get modifier mask for current type */
- if (!ExprResolveModMask(value, &tmp, LookupVModMask, (XPointer) xkb))
- {
- ERROR("Key type mask field must be a modifier mask\n");
- ACTION("Key type definition ignored\n");
- return False;
- }
- mods = tmp.uval & 0xff; /* core mods */
- vmods = (tmp.uval >> 8) & 0xffff; /* xkb virtual mods */
- if (type->defs.defined & _KT_Mask)
- {
- WARN1("Multiple modifier mask definitions for key type %s\n",
- XkbAtomText(type->dpy, type->name, XkbMessage));
- ACTION1("Using %s, ", TypeMaskTxt(type, xkb));
- INFO1("ignoring %s\n", XkbVModMaskText(type->dpy, xkb, mods,
- vmods, XkbMessage));
- return False;
- }
- type->mask = mods;
- type->vmask = vmods;
- type->defs.defined |= _KT_Mask;
- return True;
- }
- else if (uStrCaseCmp(field, "map") == 0)
- {
- type->defs.defined |= _KT_Map;
- return SetMapEntry(type, xkb, arrayNdx, value);
- }
- else if (uStrCaseCmp(field, "preserve") == 0)
- {
- type->defs.defined |= _KT_Preserve;
- return SetPreserve(type, xkb, arrayNdx, value);
- }
- else if ((uStrCaseCmp(field, "levelname") == 0) ||
- (uStrCaseCmp(field, "level_name") == 0))
- {
- type->defs.defined |= _KT_LevelNames;
- return SetLevelName(type, arrayNdx, value);
- }
- ERROR2("Unknown field %s in key type %s\n", field, TypeTxt(type));
- ACTION("Definition ignored\n");
- return False;
-}
-
-static Bool
-HandleKeyTypeVar(VarDef * stmt, XkbDescPtr xkb, KeyTypesInfo * info)
-{
- ExprResult elem, field;
- ExprDef *arrayNdx;
-
- if (!ExprResolveLhs(stmt->name, &elem, &field, &arrayNdx))
- return False; /* internal error, already reported */
- if (elem.str && (uStrCaseCmp(elem.str, "type") == 0))
- return SetKeyTypeField(&info->dflt, xkb, field.str, arrayNdx,
- stmt->value, info);
- if (elem.str != NULL)
- {
- ERROR1("Default for unknown element %s\n", uStringText(elem.str));
- ACTION1("Value for field %s ignored\n", uStringText(field.str));
- }
- else if (field.str != NULL)
- {
- ERROR1("Default defined for unknown field %s\n",
- uStringText(field.str));
- ACTION("Ignored\n");
- }
- return False;
-}
-
-static int
-HandleKeyTypeBody(VarDef * def,
- XkbDescPtr xkb, KeyTypeInfo * type, KeyTypesInfo * info)
-{
- int ok = 1;
- ExprResult tmp, field;
- ExprDef *arrayNdx;
-
- for (; def != NULL; def = (VarDef *) def->common.next)
- {
- if ((def->name) && (def->name->type == ExprFieldRef))
- {
- ok = HandleKeyTypeVar(def, xkb, info);
- continue;
- }
- ok = ExprResolveLhs(def->name, &tmp, &field, &arrayNdx);
- if (ok)
- ok = SetKeyTypeField(type, xkb, field.str, arrayNdx, def->value,
- info);
- }
- return ok;
-}
-
-/**
- * Process a type "XYZ" { } specification in the xkb_types section.
- *
- */
-static int
-HandleKeyTypeDef(KeyTypeDef * def,
- XkbDescPtr xkb, unsigned merge, KeyTypesInfo * info)
-{
- register int i;
- KeyTypeInfo type;
-
- if (def->merge != MergeDefault)
- merge = def->merge;
-
- type.defs.defined = 0;
- type.defs.fileID = info->fileID;
- type.defs.merge = merge;
- type.defs.next = NULL;
- type.dpy = info->dpy;
- type.name = def->name;
- type.mask = info->dflt.mask;
- type.vmask = info->dflt.vmask;
- type.groupInfo = info->dflt.groupInfo;
- type.numLevels = 1;
- type.nEntries = type.szEntries = 0;
- type.entries = NULL;
- type.szNames = 0;
- type.lvlNames = NULL;
- type.preserve = NULL;
-
- /* Parse the actual content. */
- if (!HandleKeyTypeBody(def->body, xkb, &type, info))
- {
- info->errorCount++;
- return False;
- }
-
- /* now copy any appropriate map, preserve or level names from the */
- /* default type */
- for (i = 0; i < info->dflt.nEntries; i++)
- {
- XkbKTMapEntryPtr dflt;
- dflt = &info->dflt.entries[i];
- if (((dflt->mods.real_mods & type.mask) == dflt->mods.real_mods) &&
- ((dflt->mods.vmods & type.vmask) == dflt->mods.vmods))
- {
- AddMapEntry(xkb, &type, dflt, False, False);
- }
- }
- if (info->dflt.preserve)
- {
- PreserveInfo *dflt = info->dflt.preserve;
- while (dflt)
- {
- if (((dflt->indexMods & type.mask) == dflt->indexMods) &&
- ((dflt->indexVMods & type.vmask) == dflt->indexVMods))
- {
- AddPreserve(xkb, &type, dflt, False, False);
- }
- dflt = (PreserveInfo *) dflt->defs.next;
- }
- }
- for (i = 0; i < info->dflt.szNames; i++)
- {
- if ((i < type.numLevels) && (info->dflt.lvlNames[i] != None))
- {
- AddLevelName(&type, i, info->dflt.lvlNames[i], False, False);
- }
- }
- /* Now add the new keytype to the info struct */
- if (!AddKeyType(xkb, info, &type))
- {
- info->errorCount++;
- return False;
- }
- return True;
-}
-
-/**
- * Process an xkb_types section.
- *
- * @param file The parsed xkb_types section.
- * @param merge Merge Strategy (e.g. MergeOverride)
- * @param info Pointer to memory where the outcome will be stored.
- */
-static void
-HandleKeyTypesFile(XkbFile * file,
- XkbDescPtr xkb, unsigned merge, KeyTypesInfo * info)
-{
- ParseCommon *stmt;
-
- info->name = uStringDup(file->name);
- stmt = file->defs;
- while (stmt)
- {
- switch (stmt->stmtType)
- {
- case StmtInclude:
- if (!HandleIncludeKeyTypes((IncludeStmt *) stmt, xkb, info,
- HandleKeyTypesFile))
- info->errorCount++;
- break;
- case StmtKeyTypeDef: /* e.g. type "ONE_LEVEL" */
- if (!HandleKeyTypeDef((KeyTypeDef *) stmt, xkb, merge, info))
- info->errorCount++;
- break;
- case StmtVarDef:
- if (!HandleKeyTypeVar((VarDef *) stmt, xkb, info))
- info->errorCount++;
- break;
- case StmtVModDef: /* virtual_modifiers NumLock, ... */
- if (!HandleVModDef((VModDef *) stmt, merge, &info->vmods))
- info->errorCount++;
- break;
- case StmtKeyAliasDef:
- ERROR("Key type files may not include other declarations\n");
- ACTION("Ignoring definition of key alias\n");
- info->errorCount++;
- break;
- case StmtKeycodeDef:
- ERROR("Key type files may not include other declarations\n");
- ACTION("Ignoring definition of key name\n");
- info->errorCount++;
- break;
- case StmtInterpDef:
- ERROR("Key type files may not include other declarations\n");
- ACTION("Ignoring definition of symbol interpretation\n");
- info->errorCount++;
- break;
- default:
- WSGO1("Unexpected statement type %d in HandleKeyTypesFile\n",
- stmt->stmtType);
- break;
- }
- stmt = stmt->next;
- if (info->errorCount > 10)
- {
-#ifdef NOISY
- ERROR("Too many errors\n");
-#endif
- ACTION1("Abandoning keytypes file \"%s\"\n", file->topName);
- break;
- }
- }
- return;
-}
-
-static Bool
-CopyDefToKeyType(XkbDescPtr xkb, XkbKeyTypePtr type, KeyTypeInfo * def)
-{
- register int i;
- PreserveInfo *pre;
-
- for (pre = def->preserve; pre != NULL;
- pre = (PreserveInfo *) pre->defs.next)
- {
- XkbKTMapEntryPtr match;
- XkbKTMapEntryRec tmp;
- tmp.mods.real_mods = pre->indexMods;
- tmp.mods.vmods = pre->indexVMods;
- tmp.level = 0;
- AddMapEntry(xkb, def, &tmp, False, False);
- match = FindMatchingMapEntry(def, pre->indexMods, pre->indexVMods);
- if (!match)
- {
- WSGO("Couldn't find matching entry for preserve\n");
- ACTION("Aborting\n");
- return False;
- }
- pre->matchingMapIndex = match - def->entries;
- }
- type->mods.real_mods = def->mask;
- type->mods.vmods = def->vmask;
- type->num_levels = def->numLevels;
- type->map_count = def->nEntries;
- type->map = def->entries;
- if (def->preserve)
- {
- type->preserve = uTypedCalloc(type->map_count, XkbModsRec);
- if (!type->preserve)
- {
- WARN("Couldn't allocate preserve array in CopyDefToKeyType\n");
- ACTION1("Preserve setting for type %s lost\n",
- XkbAtomText(def->dpy, def->name, XkbMessage));
- }
- else
- {
- pre = def->preserve;
- for (; pre != NULL; pre = (PreserveInfo *) pre->defs.next)
- {
- int ndx = pre->matchingMapIndex;
- type->preserve[ndx].mask = pre->preMods;
- type->preserve[ndx].real_mods = pre->preMods;
- type->preserve[ndx].vmods = pre->preVMods;
- }
- }
- }
- else
- type->preserve = NULL;
- type->name = (Atom) def->name;
- if (def->szNames > 0)
- {
- type->level_names = uTypedCalloc(def->numLevels, Atom);
-
- /* assert def->szNames<=def->numLevels */
- for (i = 0; i < def->szNames; i++)
- {
- type->level_names[i] = (Atom) def->lvlNames[i];
- }
- }
- else
- {
- type->level_names = NULL;
- }
-
- def->nEntries = def->szEntries = 0;
- def->entries = NULL;
- return XkbComputeEffectiveMap(xkb, type, NULL);
-}
-
-Bool
-CompileKeyTypes(XkbFile * file, XkbFileInfo * result, unsigned merge)
-{
- KeyTypesInfo info;
- XkbDescPtr xkb;
-
- xkb = result->xkb;
- InitKeyTypesInfo(&info, xkb, NULL);
- info.fileID = file->id;
- HandleKeyTypesFile(file, xkb, merge, &info);
-
- if (info.errorCount == 0)
- {
- register int i;
- register KeyTypeInfo *def;
- register XkbKeyTypePtr type, next;
-
- if (info.name != NULL)
- {
- if (XkbAllocNames(xkb, XkbTypesNameMask, 0, 0) == Success)
- xkb->names->types = XkbInternAtom(xkb->dpy, info.name, False);
- else
- {
- WSGO("Couldn't allocate space for types name\n");
- ACTION2("Name \"%s\" (from %s) NOT assigned\n",
- scanFile, info.name);
- }
- }
- i = info.nTypes;
- if ((info.stdPresent & XkbOneLevelMask) == 0)
- i++;
- if ((info.stdPresent & XkbTwoLevelMask) == 0)
- i++;
- if ((info.stdPresent & XkbKeypadMask) == 0)
- i++;
- if ((info.stdPresent & XkbAlphabeticMask) == 0)
- i++;
- if (XkbAllocClientMap(xkb, XkbKeyTypesMask, i) != Success)
- {
- WSGO("Couldn't allocate client map\n");
- ACTION("Exiting\n");
- return False;
- }
- xkb->map->num_types = i;
- if (XkbAllRequiredTypes & (~info.stdPresent))
- {
- unsigned missing, keypadVMod;
-
- missing = XkbAllRequiredTypes & (~info.stdPresent);
- keypadVMod = FindKeypadVMod(xkb);
- if (XkbInitCanonicalKeyTypes(xkb, missing, keypadVMod) != Success)
- {
- WSGO("Couldn't initialize canonical key types\n");
- ACTION("Exiting\n");
- return False;
- }
- if (missing & XkbOneLevelMask)
- xkb->map->types[XkbOneLevelIndex].name = tok_ONE_LEVEL;
- if (missing & XkbTwoLevelMask)
- xkb->map->types[XkbTwoLevelIndex].name = tok_TWO_LEVEL;
- if (missing & XkbAlphabeticMask)
- xkb->map->types[XkbAlphabeticIndex].name = tok_ALPHABETIC;
- if (missing & XkbKeypadMask)
- xkb->map->types[XkbKeypadIndex].name = tok_KEYPAD;
- }
- next = &xkb->map->types[XkbLastRequiredType + 1];
- for (i = 0, def = info.types; i < info.nTypes; i++)
- {
- if (def->name == tok_ONE_LEVEL)
- type = &xkb->map->types[XkbOneLevelIndex];
- else if (def->name == tok_TWO_LEVEL)
- type = &xkb->map->types[XkbTwoLevelIndex];
- else if (def->name == tok_ALPHABETIC)
- type = &xkb->map->types[XkbAlphabeticIndex];
- else if (def->name == tok_KEYPAD)
- type = &xkb->map->types[XkbKeypadIndex];
- else
- type = next++;
- DeleteLevel1MapEntries(def);
- if (!CopyDefToKeyType(xkb, type, def))
- return False;
- def = (KeyTypeInfo *) def->defs.next;
- }
- return True;
- }
- return False;
-}
+/************************************************************
+ Copyright (c) 1994 by Silicon Graphics Computer Systems, Inc.
+
+ Permission to use, copy, modify, and distribute this
+ software and its documentation for any purpose and without
+ fee is hereby granted, provided that the above copyright
+ notice appear in all copies and that both that copyright
+ notice and this permission notice appear in supporting
+ documentation, and that the name of Silicon Graphics not be
+ used in advertising or publicity pertaining to distribution
+ of the software without specific prior written permission.
+ Silicon Graphics makes no representation about the suitability
+ of this software for any purpose. It is provided "as is"
+ without any express or implied warranty.
+
+ SILICON GRAPHICS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS
+ SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
+ AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON
+ GRAPHICS BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL
+ DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
+ DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
+ OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH
+ THE USE OR PERFORMANCE OF THIS SOFTWARE.
+
+ ********************************************************/
+
+#include "xkbcomp.h"
+#include "tokens.h"
+#include "expr.h"
+#include "vmod.h"
+#include "action.h"
+#include "misc.h"
+
+typedef struct _PreserveInfo
+{
+ CommonInfo defs;
+ short matchingMapIndex;
+ unsigned char indexMods;
+ unsigned char preMods;
+ unsigned short indexVMods;
+ unsigned short preVMods;
+} PreserveInfo;
+
+#define _KT_Name (1<<0)
+#define _KT_Mask (1<<1)
+#define _KT_Map (1<<2)
+#define _KT_Preserve (1<<3)
+#define _KT_LevelNames (1<<4)
+
+typedef struct _KeyTypeInfo
+{
+ CommonInfo defs;
+ Display *dpy;
+ Atom name;
+ int fileID;
+ unsigned mask;
+ unsigned vmask;
+ Bool groupInfo;
+ int numLevels;
+ int nEntries;
+ int szEntries;
+ XkbKTMapEntryPtr entries;
+ PreserveInfo *preserve;
+ int szNames;
+ Atom *lvlNames;
+} KeyTypeInfo;
+
+typedef struct _KeyTypesInfo
+{
+ Display *dpy;
+ char *name;
+ int errorCount;
+ int fileID;
+ unsigned stdPresent;
+ int nTypes;
+ KeyTypeInfo *types;
+ KeyTypeInfo dflt;
+ VModInfo vmods;
+} KeyTypesInfo;
+
+Atom tok_ONE_LEVEL;
+Atom tok_TWO_LEVEL;
+Atom tok_ALPHABETIC;
+Atom tok_KEYPAD;
+
+/***====================================================================***/
+
+#define ReportTypeShouldBeArray(t,f) \
+ ReportShouldBeArray("key type",(f),TypeTxt(t))
+#define ReportTypeBadType(t,f,w) \
+ ReportBadType("key type",(f),TypeTxt(t),(w))
+
+/***====================================================================***/
+
+extern Bool AddMapEntry(XkbDescPtr /* xkb */ ,
+ KeyTypeInfo * /* type */ ,
+ XkbKTMapEntryPtr /* new */ ,
+ Bool /* clobber */ ,
+ Bool /* report */
+ );
+
+extern Bool AddPreserve(XkbDescPtr /* xkb */ ,
+ KeyTypeInfo * /* type */ ,
+ PreserveInfo * /* new */ ,
+ Bool /* clobber */ ,
+ Bool /* report */
+ );
+
+extern Bool AddLevelName(KeyTypeInfo * /* type */ ,
+ unsigned /* level */ ,
+ Atom /* name */ ,
+ Bool /* clobber */ ,
+ Bool /* report */
+ );
+
+#define MapEntryTxt(t,x,e) \
+ XkbVModMaskText((t)->dpy,(x),(e)->mods.real_mods,(e)->mods.vmods,XkbMessage)
+#define PreserveIndexTxt(t,x,p) \
+ XkbVModMaskText((t)->dpy,(x),(p)->indexMods,(p)->indexVMods,XkbMessage)
+#define PreserveTxt(t,x,p) \
+ XkbVModMaskText((t)->dpy,(x),(p)->preMods,(p)->preVMods,XkbMessage)
+#define TypeTxt(t) XkbAtomText((t)->dpy,(t)->name,XkbMessage)
+#define TypeMaskTxt(t,x) \
+ XkbVModMaskText((t)->dpy,(x),(t)->mask,(t)->vmask,XkbMessage)
+
+/***====================================================================***/
+
+static void
+InitKeyTypesInfo(KeyTypesInfo * info, XkbDescPtr xkb, KeyTypesInfo * from)
+{
+ tok_ONE_LEVEL = XkbInternAtom(NULL, "ONE_LEVEL", False);
+ tok_TWO_LEVEL = XkbInternAtom(NULL, "TWO_LEVEL", False);
+ tok_ALPHABETIC = XkbInternAtom(NULL, "ALPHABETIC", False);
+ tok_KEYPAD = XkbInternAtom(NULL, "KEYPAD", False);
+ info->dpy = NULL;
+ info->name = uStringDup("default");
+ info->errorCount = 0;
+ info->stdPresent = 0;
+ info->nTypes = 0;
+ info->types = NULL;
+ info->dflt.defs.defined = 0;
+ info->dflt.defs.fileID = 0;
+ info->dflt.defs.merge = MergeOverride;
+ info->dflt.defs.next = NULL;
+ info->dflt.name = None;
+ info->dflt.mask = 0;
+ info->dflt.vmask = 0;
+ info->dflt.groupInfo = False;
+ info->dflt.numLevels = 1;
+ info->dflt.nEntries = info->dflt.szEntries = 0;
+ info->dflt.entries = NULL;
+ info->dflt.szNames = 0;
+ info->dflt.lvlNames = NULL;
+ info->dflt.preserve = NULL;
+ InitVModInfo(&info->vmods, xkb);
+ if (from != NULL)
+ {
+ info->dpy = from->dpy;
+ info->dflt = from->dflt;
+ if (from->dflt.entries)
+ {
+ info->dflt.entries = uTypedCalloc(from->dflt.szEntries,
+ XkbKTMapEntryRec);
+ if (info->dflt.entries)
+ {
+ unsigned sz = from->dflt.nEntries * sizeof(XkbKTMapEntryRec);
+ memcpy(info->dflt.entries, from->dflt.entries, sz);
+ }
+ }
+ if (from->dflt.lvlNames)
+ {
+ info->dflt.lvlNames = uTypedCalloc(from->dflt.szNames, Atom);
+ if (info->dflt.lvlNames)
+ {
+ register unsigned sz = from->dflt.szNames * sizeof(Atom);
+ memcpy(info->dflt.lvlNames, from->dflt.lvlNames, sz);
+ }
+ }
+ if (from->dflt.preserve)
+ {
+ PreserveInfo *old, *new, *last;
+ last = NULL;
+ old = from->dflt.preserve;
+ for (; old; old = (PreserveInfo *) old->defs.next)
+ {
+ new = uTypedAlloc(PreserveInfo);
+ if (!new)
+ return;
+ *new = *old;
+ new->defs.next = NULL;
+ if (last)
+ last->defs.next = (CommonInfo *) new;
+ else
+ info->dflt.preserve = new;
+ last = new;
+ }
+ }
+ }
+ return;
+}
+
+static void
+FreeKeyTypeInfo(KeyTypeInfo * type)
+{
+ if (type->entries != NULL)
+ {
+ uFree(type->entries);
+ type->entries = NULL;
+ }
+ if (type->lvlNames != NULL)
+ {
+ uFree(type->lvlNames);
+ type->lvlNames = NULL;
+ }
+ if (type->preserve != NULL)
+ {
+ ClearCommonInfo(&type->preserve->defs);
+ type->preserve = NULL;
+ }
+ return;
+}
+
+static void
+FreeKeyTypesInfo(KeyTypesInfo * info)
+{
+ info->dpy = NULL;
+ if (info->name)
+ uFree(info->name);
+ info->name = NULL;
+ if (info->types)
+ {
+ register KeyTypeInfo *type;
+ for (type = info->types; type; type = (KeyTypeInfo *) type->defs.next)
+ {
+ FreeKeyTypeInfo(type);
+ }
+ info->types = (KeyTypeInfo *) ClearCommonInfo(&info->types->defs);
+ }
+ FreeKeyTypeInfo(&info->dflt);
+ return;
+}
+
+static KeyTypeInfo *
+NextKeyType(KeyTypesInfo * info)
+{
+ KeyTypeInfo *type;
+
+ type = uTypedAlloc(KeyTypeInfo);
+ if (type != NULL)
+ {
+ bzero(type, sizeof(KeyTypeInfo));
+ type->defs.fileID = info->fileID;
+ type->dpy = info->dpy;
+ info->types = (KeyTypeInfo *) AddCommonInfo(&info->types->defs,
+ (CommonInfo *) type);
+ info->nTypes++;
+ }
+ return type;
+}
+
+static KeyTypeInfo *
+FindMatchingKeyType(KeyTypesInfo * info, KeyTypeInfo * new)
+{
+ KeyTypeInfo *old;
+
+ for (old = info->types; old; old = (KeyTypeInfo *) old->defs.next)
+ {
+ if (old->name == new->name)
+ return old;
+ }
+ return NULL;
+}
+
+static Bool
+ReportTypeBadWidth(const char *type, int has, int needs)
+{
+ ERROR3("Key type \"%s\" has %d levels, must have %d\n", type, has, needs);
+ ACTION("Illegal type definition ignored\n");
+ return False;
+}
+
+static Bool
+AddKeyType(XkbDescPtr xkb, KeyTypesInfo * info, KeyTypeInfo * new)
+{
+ KeyTypeInfo *old;
+
+ if (new->name == tok_ONE_LEVEL)
+ {
+ if (new->numLevels > 1)
+ return ReportTypeBadWidth("ONE_LEVEL", new->numLevels, 1);
+ info->stdPresent |= XkbOneLevelMask;
+ }
+ else if (new->name == tok_TWO_LEVEL)
+ {
+ if (new->numLevels > 2)
+ return ReportTypeBadWidth("TWO_LEVEL", new->numLevels, 2);
+ else if (new->numLevels < 2)
+ new->numLevels = 2;
+ info->stdPresent |= XkbTwoLevelMask;
+ }
+ else if (new->name == tok_ALPHABETIC)
+ {
+ if (new->numLevels > 2)
+ return ReportTypeBadWidth("ALPHABETIC", new->numLevels, 2);
+ else if (new->numLevels < 2)
+ new->numLevels = 2;
+ info->stdPresent |= XkbAlphabeticMask;
+ }
+ else if (new->name == tok_KEYPAD)
+ {
+ if (new->numLevels > 2)
+ return ReportTypeBadWidth("KEYPAD", new->numLevels, 2);
+ else if (new->numLevels < 2)
+ new->numLevels = 2;
+ info->stdPresent |= XkbKeypadMask;
+ }
+
+ old = FindMatchingKeyType(info, new);
+ if (old != NULL)
+ {
+ Bool report;
+ if ((new->defs.merge == MergeReplace)
+ || (new->defs.merge == MergeOverride))
+ {
+ KeyTypeInfo *next = (KeyTypeInfo *) old->defs.next;
+ if (((old->defs.fileID == new->defs.fileID)
+ && (warningLevel > 0)) || (warningLevel > 9))
+ {
+ WARN1("Multiple definitions of the %s key type\n",
+ XkbAtomGetString(NULL, new->name));
+ ACTION("Earlier definition ignored\n");
+ }
+ FreeKeyTypeInfo(old);
+ *old = *new;
+ new->szEntries = new->nEntries = 0;
+ new->entries = NULL;
+ new->preserve = NULL;
+ new->lvlNames = NULL;
+ old->defs.next = &next->defs;
+ return True;
+ }
+ report = (old->defs.fileID == new->defs.fileID) && (warningLevel > 0);
+ if (report)
+ {
+ WARN1("Multiple definitions of the %s key type\n",
+ XkbAtomGetString(NULL, new->name));
+ ACTION("Later definition ignored\n");
+ }
+ FreeKeyTypeInfo(new);
+ return True;
+ }
+ old = NextKeyType(info);
+ if (old == NULL)
+ return False;
+ *old = *new;
+ old->defs.next = NULL;
+ new->nEntries = new->szEntries = 0;
+ new->entries = NULL;
+ new->szNames = 0;
+ new->lvlNames = NULL;
+ new->preserve = NULL;
+ return True;
+}
+
+/***====================================================================***/
+
+static void
+MergeIncludedKeyTypes(KeyTypesInfo * into,
+ KeyTypesInfo * from, unsigned merge, XkbDescPtr xkb)
+{
+ KeyTypeInfo *type;
+
+ if (from->errorCount > 0)
+ {
+ into->errorCount += from->errorCount;
+ return;
+ }
+ if (into->name == NULL)
+ {
+ into->name = from->name;
+ from->name = NULL;
+ }
+ for (type = from->types; type; type = (KeyTypeInfo *) type->defs.next)
+ {
+ if (merge != MergeDefault)
+ type->defs.merge = merge;
+ if (!AddKeyType(xkb, into, type))
+ into->errorCount++;
+ }
+ into->stdPresent |= from->stdPresent;
+ return;
+}
+
+typedef void (*FileHandler) (XkbFile * /* file */ ,
+ XkbDescPtr /* xkb */ ,
+ unsigned /* merge */ ,
+ KeyTypesInfo * /* included */
+ );
+
+static Bool
+HandleIncludeKeyTypes(IncludeStmt * stmt,
+ XkbDescPtr xkb, KeyTypesInfo * info, FileHandler hndlr)
+{
+ unsigned newMerge;
+ XkbFile *rtrn;
+ KeyTypesInfo included;
+ Bool haveSelf;
+
+ haveSelf = False;
+ if ((stmt->file == NULL) && (stmt->map == NULL))
+ {
+ haveSelf = True;
+ included = *info;
+ bzero(info, sizeof(KeyTypesInfo));
+ }
+ else if (ProcessIncludeFile(stmt, XkmTypesIndex, &rtrn, &newMerge))
+ {
+ InitKeyTypesInfo(&included, xkb, info);
+ included.fileID = included.dflt.defs.fileID = rtrn->id;
+ included.dflt.defs.merge = newMerge;
+
+ (*hndlr) (rtrn, xkb, newMerge, &included);
+ if (stmt->stmt != NULL)
+ {
+ if (included.name != NULL)
+ uFree(included.name);
+ included.name = stmt->stmt;
+ stmt->stmt = NULL;
+ }
+ }
+ else
+ {
+ info->errorCount += 10;
+ return False;
+ }
+ if ((stmt->next != NULL) && (included.errorCount < 1))
+ {
+ IncludeStmt *next;
+ unsigned op;
+ KeyTypesInfo next_incl;
+
+ for (next = stmt->next; next != NULL; next = next->next)
+ {
+ if ((next->file == NULL) && (next->map == NULL))
+ {
+ haveSelf = True;
+ MergeIncludedKeyTypes(&included, info, next->merge, xkb);
+ FreeKeyTypesInfo(info);
+ }
+ else if (ProcessIncludeFile(next, XkmTypesIndex, &rtrn, &op))
+ {
+ InitKeyTypesInfo(&next_incl, xkb, &included);
+ next_incl.fileID = next_incl.dflt.defs.fileID = rtrn->id;
+ next_incl.dflt.defs.merge = op;
+ (*hndlr) (rtrn, xkb, op, &next_incl);
+ MergeIncludedKeyTypes(&included, &next_incl, op, xkb);
+ FreeKeyTypesInfo(&next_incl);
+ }
+ else
+ {
+ info->errorCount += 10;
+ return False;
+ }
+ }
+ }
+ if (haveSelf)
+ *info = included;
+ else
+ {
+ MergeIncludedKeyTypes(info, &included, newMerge, xkb);
+ FreeKeyTypesInfo(&included);
+ }
+ return (info->errorCount == 0);
+}
+
+/***====================================================================***/
+
+static XkbKTMapEntryPtr
+FindMatchingMapEntry(KeyTypeInfo * type, unsigned mask, unsigned vmask)
+{
+ register int i;
+ XkbKTMapEntryPtr entry;
+
+ for (i = 0, entry = type->entries; i < type->nEntries; i++, entry++)
+ {
+ if ((entry->mods.real_mods == mask) && (entry->mods.vmods == vmask))
+ return entry;
+ }
+ return NULL;
+}
+
+static void
+DeleteLevel1MapEntries(KeyTypeInfo * type)
+{
+ register int i, n;
+
+ for (i = 0; i < type->nEntries; i++)
+ {
+ if (type->entries[i].level == 0)
+ {
+ for (n = i; n < type->nEntries - 1; n++)
+ {
+ type->entries[n] = type->entries[n + 1];
+ }
+ type->nEntries--;
+ }
+ }
+ return;
+}
+
+/**
+ * Return a pointer to the next free XkbKTMapEntry, reallocating space if
+ * necessary.
+ */
+static XkbKTMapEntryPtr
+NextMapEntry(KeyTypeInfo * type)
+{
+ if (type->entries == NULL)
+ {
+ type->entries = uTypedCalloc(2, XkbKTMapEntryRec);
+ if (type->entries == NULL)
+ {
+ ERROR1("Couldn't allocate map entries for %s\n", TypeTxt(type));
+ ACTION("Map entries lost\n");
+ return NULL;
+ }
+ type->szEntries = 2;
+ type->nEntries = 0;
+ }
+ else if (type->nEntries >= type->szEntries)
+ {
+ type->szEntries *= 2;
+ type->entries = uTypedRecalloc(type->entries,
+ type->nEntries, type->szEntries,
+ XkbKTMapEntryRec);
+ if (type->entries == NULL)
+ {
+ ERROR1("Couldn't reallocate map entries for %s\n", TypeTxt(type));
+ ACTION("Map entries lost\n");
+ return NULL;
+ }
+ }
+ return &type->entries[type->nEntries++];
+}
+
+Bool
+AddPreserve(XkbDescPtr xkb,
+ KeyTypeInfo * type, PreserveInfo * new, Bool clobber, Bool report)
+{
+ PreserveInfo *old;
+
+ old = type->preserve;
+ while (old != NULL)
+ {
+ if ((old->indexMods != new->indexMods) ||
+ (old->indexVMods != new->indexVMods))
+ {
+ old = (PreserveInfo *) old->defs.next;
+ continue;
+ }
+ if ((old->preMods == new->preMods)
+ && (old->preVMods == new->preVMods))
+ {
+ if (warningLevel > 9)
+ {
+ WARN2("Identical definitions for preserve[%s] in %s\n",
+ PreserveIndexTxt(type, xkb, old), TypeTxt(type));
+ ACTION("Ignored\n");
+ }
+ return True;
+ }
+ if (report && (warningLevel > 0))
+ {
+ char *str;
+ WARN2("Multiple definitions for preserve[%s] in %s\n",
+ PreserveIndexTxt(type, xkb, old), TypeTxt(type));
+
+ if (clobber)
+ str = PreserveTxt(type, xkb, new);
+ else
+ str = PreserveTxt(type, xkb, old);
+ ACTION1("Using %s, ", str);
+ if (clobber)
+ str = PreserveTxt(type, xkb, old);
+ else
+ str = PreserveTxt(type, xkb, new);
+ INFO1("ignoring %s\n", str);
+ }
+ if (clobber)
+ {
+ old->preMods = new->preMods;
+ old->preVMods = new->preVMods;
+ }
+ return True;
+ }
+ old = uTypedAlloc(PreserveInfo);
+ if (!old)
+ {
+ WSGO1("Couldn't allocate preserve in %s\n", TypeTxt(type));
+ ACTION1("Preserve[%s] lost\n", PreserveIndexTxt(type, xkb, old));
+ return False;
+ }
+ *old = *new;
+ old->matchingMapIndex = -1;
+ type->preserve =
+ (PreserveInfo *) AddCommonInfo(&type->preserve->defs, &old->defs);
+ return True;
+}
+
+/**
+ * Add a new KTMapEntry to the given key type. If an entry with the same mods
+ * already exists, the level is updated (if clobber is TRUE). Otherwise, a new
+ * entry is created.
+ *
+ * @param clobber Overwrite existing entry.
+ * @param report True if a warning is to be printed on.
+ */
+Bool
+AddMapEntry(XkbDescPtr xkb,
+ KeyTypeInfo * type,
+ XkbKTMapEntryPtr new, Bool clobber, Bool report)
+{
+ XkbKTMapEntryPtr old;
+
+ if ((old =
+ FindMatchingMapEntry(type, new->mods.real_mods, new->mods.vmods)))
+ {
+ if (report && (old->level != new->level))
+ {
+ unsigned use, ignore;
+ if (clobber)
+ {
+ use = new->level + 1;
+ ignore = old->level + 1;
+ }
+ else
+ {
+ use = old->level + 1;
+ ignore = new->level + 1;
+ }
+ WARN2("Multiple map entries for %s in %s\n",
+ MapEntryTxt(type, xkb, new), TypeTxt(type));
+ ACTION2("Using %d, ignoring %d\n", use, ignore);
+ }
+ else if (warningLevel > 9)
+ {
+ WARN3("Multiple occurences of map[%s]= %d in %s\n",
+ MapEntryTxt(type, xkb, new), new->level + 1, TypeTxt(type));
+ ACTION("Ignored\n");
+ return True;
+ }
+ if (clobber)
+ old->level = new->level;
+ return True;
+ }
+ if ((old = NextMapEntry(type)) == NULL)
+ return False; /* allocation failure, already reported */
+ if (new->level >= type->numLevels)
+ type->numLevels = new->level + 1;
+ if (new->mods.vmods == 0)
+ old->active = True;
+ else
+ old->active = False;
+ old->mods.mask = new->mods.real_mods;
+ old->mods.real_mods = new->mods.real_mods;
+ old->mods.vmods = new->mods.vmods;
+ old->level = new->level;
+ return True;
+}
+
+static LookupEntry lnames[] = {
+ {"level1", 1},
+ {"level2", 2},
+ {"level3", 3},
+ {"level4", 4},
+ {"level5", 5},
+ {"level6", 6},
+ {"level7", 7},
+ {"level8", 8},
+ {NULL, 0}
+};
+
+static Bool
+SetMapEntry(KeyTypeInfo * type,
+ XkbDescPtr xkb, ExprDef * arrayNdx, ExprDef * value)
+{
+ ExprResult rtrn;
+ XkbKTMapEntryRec entry;
+
+ if (arrayNdx == NULL)
+ return ReportTypeShouldBeArray(type, "map entry");
+ if (!ExprResolveModMask(arrayNdx, &rtrn, LookupVModMask, (XPointer) xkb))
+ return ReportTypeBadType(type, "map entry", "modifier mask");
+ entry.mods.real_mods = rtrn.uval & 0xff; /* modifiers < 512 */
+ entry.mods.vmods = (rtrn.uval >> 8) & 0xffff; /* modifiers > 512 */
+ if ((entry.mods.real_mods & (~type->mask)) ||
+ ((entry.mods.vmods & (~type->vmask)) != 0))
+ {
+ if (warningLevel > 0)
+ {
+ WARN1("Map entry for unused modifiers in %s\n", TypeTxt(type));
+ ACTION1("Using %s instead of ",
+ XkbVModMaskText(type->dpy, xkb,
+ entry.mods.real_mods & type->mask,
+ entry.mods.vmods & type->vmask,
+ XkbMessage));
+ INFO1("%s\n", MapEntryTxt(type, xkb, &entry));
+ }
+ entry.mods.real_mods &= type->mask;
+ entry.mods.vmods &= type->vmask;
+ }
+ if (!ExprResolveInteger(value, &rtrn, SimpleLookup, (XPointer) lnames))
+ {
+ ERROR("Level specifications in a key type must be integer\n");
+ ACTION("Ignoring malformed level specification\n");
+ return False;
+ }
+ if ((rtrn.ival < 1) || (rtrn.ival > XkbMaxShiftLevel + 1))
+ {
+ ERROR3("Shift level %d out of range (1..%d) in key type %s\n",
+ XkbMaxShiftLevel + 1, rtrn.ival, TypeTxt(type));
+ ACTION1("Ignoring illegal definition of map[%s]\n",
+ MapEntryTxt(type, xkb, &entry));
+ return False;
+ }
+ entry.level = rtrn.ival - 1;
+ return AddMapEntry(xkb, type, &entry, True, True);
+}
+
+static Bool
+SetPreserve(KeyTypeInfo * type,
+ XkbDescPtr xkb, ExprDef * arrayNdx, ExprDef * value)
+{
+ ExprResult rtrn;
+ PreserveInfo new;
+
+ if (arrayNdx == NULL)
+ return ReportTypeShouldBeArray(type, "preserve entry");
+ if (!ExprResolveModMask(arrayNdx, &rtrn, LookupVModMask, (XPointer) xkb))
+ return ReportTypeBadType(type, "preserve entry", "modifier mask");
+ new.defs = type->defs;
+ new.defs.next = NULL;
+ new.indexMods = rtrn.uval & 0xff;
+ new.indexVMods = (rtrn.uval >> 8) & 0xffff;
+ if ((new.indexMods & (~type->mask)) || (new.indexVMods & (~type->vmask)))
+ {
+ if (warningLevel > 0)
+ {
+ WARN1("Preserve for modifiers not used by the %s type\n",
+ TypeTxt(type));
+ ACTION1("Index %s converted to ",
+ PreserveIndexTxt(type, xkb, &new));
+ }
+ new.indexMods &= type->mask;
+ new.indexVMods &= type->vmask;
+ if (warningLevel > 0)
+ INFO1("%s\n", PreserveIndexTxt(type, xkb, &new));
+ }
+ if (!ExprResolveModMask(value, &rtrn, LookupVModMask, (XPointer) xkb))
+ {
+ ERROR("Preserve value in a key type is not a modifier mask\n");
+ ACTION2("Ignoring preserve[%s] in type %s\n",
+ PreserveIndexTxt(type, xkb, &new), TypeTxt(type));
+ return False;
+ }
+ new.preMods = rtrn.uval & 0xff;
+ new.preVMods = (rtrn.uval >> 16) & 0xffff;
+ if ((new.preMods & (~new.indexMods))
+ || (new.preVMods && (~new.indexVMods)))
+ {
+ if (warningLevel > 0)
+ {
+ WARN2("Illegal value for preserve[%s] in type %s\n",
+ PreserveTxt(type, xkb, &new), TypeTxt(type));
+ ACTION1("Converted %s to ", PreserveIndexTxt(type, xkb, &new));
+ }
+ new.preMods &= new.indexMods;
+ new.preVMods &= new.indexVMods;
+ if (warningLevel > 0)
+ {
+ INFO1("%s\n", PreserveIndexTxt(type, xkb, &new));
+ }
+ }
+ return AddPreserve(xkb, type, &new, True, True);
+}
+
+/***====================================================================***/
+
+Bool
+AddLevelName(KeyTypeInfo * type,
+ unsigned level, Atom name, Bool clobber, Bool report)
+{
+ if ((type->lvlNames == NULL) || (type->szNames <= level))
+ {
+ type->lvlNames =
+ uTypedRecalloc(type->lvlNames, type->szNames, level + 1, Atom);
+ if (type->lvlNames == NULL)
+ {
+ ERROR1("Couldn't allocate level names for type %s\n",
+ TypeTxt(type));
+ ACTION("Level names lost\n");
+ type->szNames = 0;
+ return False;
+ }
+ type->szNames = level + 1;
+ }
+ else if (type->lvlNames[level] == name)
+ {
+ if (warningLevel > 9)
+ {
+ WARN2("Duplicate names for level %d of key type %s\n",
+ level + 1, TypeTxt(type));
+ ACTION("Ignored\n");
+ }
+ return True;
+ }
+ else if (type->lvlNames[level] != None)
+ {
+ if (warningLevel > 0)
+ {
+ char *old, *new;
+ old = XkbAtomText(type->dpy, type->lvlNames[level], XkbMessage);
+ new = XkbAtomText(type->dpy, name, XkbMessage);
+ WARN2("Multiple names for level %d of key type %s\n",
+ level + 1, TypeTxt(type));
+ if (clobber)
+ ACTION2("Using %s, ignoring %s\n", new, old);
+ else
+ ACTION2("Using %s, ignoring %s\n", old, new);
+ }
+ if (!clobber)
+ return True;
+ }
+ if (level >= type->numLevels)
+ type->numLevels = level + 1;
+ type->lvlNames[level] = name;
+ return True;
+}
+
+static Bool
+SetLevelName(KeyTypeInfo * type, ExprDef * arrayNdx, ExprDef * value)
+{
+ ExprResult rtrn;
+ unsigned level;
+
+ if (arrayNdx == NULL)
+ return ReportTypeShouldBeArray(type, "level name");
+ if (!ExprResolveInteger(arrayNdx, &rtrn, SimpleLookup, (XPointer) lnames))
+ return ReportTypeBadType(type, "level name", "integer");
+ if ((rtrn.ival < 1) || (rtrn.ival > XkbMaxShiftLevel + 1))
+ {
+ ERROR3("Level name %d out of range (1..%d) in key type %s\n",
+ rtrn.ival,
+ XkbMaxShiftLevel + 1,
+ XkbAtomText(type->dpy, type->name, XkbMessage));
+ ACTION("Ignoring illegal level name definition\n");
+ return False;
+ }
+ level = rtrn.ival - 1;
+ if (!ExprResolveString(value, &rtrn, NULL, NULL))
+ {
+ ERROR2("Non-string name for level %d in key type %s\n", level + 1,
+ XkbAtomText(type->dpy, type->name, XkbMessage));
+ ACTION("Ignoring illegal level name definition\n");
+ return False;
+ }
+ return
+ AddLevelName(type, level, XkbInternAtom(NULL, rtrn.str, False), True,
+ True);
+}
+
+/***====================================================================***/
+
+/**
+ * Parses the fields in a type "..." { } description.
+ *
+ * @param field The field to parse (e.g. modifiers, map, level_name)
+ */
+static Bool
+SetKeyTypeField(KeyTypeInfo * type,
+ XkbDescPtr xkb,
+ char *field,
+ ExprDef * arrayNdx, ExprDef * value, KeyTypesInfo * info)
+{
+ ExprResult tmp;
+
+ if (uStrCaseCmp(field, "modifiers") == 0)
+ {
+ unsigned mods, vmods;
+ if (arrayNdx != NULL)
+ {
+ WARN("The modifiers field of a key type is not an array\n");
+ ACTION("Illegal array subscript ignored\n");
+ }
+ /* get modifier mask for current type */
+ if (!ExprResolveModMask(value, &tmp, LookupVModMask, (XPointer) xkb))
+ {
+ ERROR("Key type mask field must be a modifier mask\n");
+ ACTION("Key type definition ignored\n");
+ return False;
+ }
+ mods = tmp.uval & 0xff; /* core mods */
+ vmods = (tmp.uval >> 8) & 0xffff; /* xkb virtual mods */
+ if (type->defs.defined & _KT_Mask)
+ {
+ WARN1("Multiple modifier mask definitions for key type %s\n",
+ XkbAtomText(type->dpy, type->name, XkbMessage));
+ ACTION1("Using %s, ", TypeMaskTxt(type, xkb));
+ INFO1("ignoring %s\n", XkbVModMaskText(type->dpy, xkb, mods,
+ vmods, XkbMessage));
+ return False;
+ }
+ type->mask = mods;
+ type->vmask = vmods;
+ type->defs.defined |= _KT_Mask;
+ return True;
+ }
+ else if (uStrCaseCmp(field, "map") == 0)
+ {
+ type->defs.defined |= _KT_Map;
+ return SetMapEntry(type, xkb, arrayNdx, value);
+ }
+ else if (uStrCaseCmp(field, "preserve") == 0)
+ {
+ type->defs.defined |= _KT_Preserve;
+ return SetPreserve(type, xkb, arrayNdx, value);
+ }
+ else if ((uStrCaseCmp(field, "levelname") == 0) ||
+ (uStrCaseCmp(field, "level_name") == 0))
+ {
+ type->defs.defined |= _KT_LevelNames;
+ return SetLevelName(type, arrayNdx, value);
+ }
+ ERROR2("Unknown field %s in key type %s\n", field, TypeTxt(type));
+ ACTION("Definition ignored\n");
+ return False;
+}
+
+static Bool
+HandleKeyTypeVar(VarDef * stmt, XkbDescPtr xkb, KeyTypesInfo * info)
+{
+ ExprResult elem, field;
+ ExprDef *arrayNdx;
+
+ if (!ExprResolveLhs(stmt->name, &elem, &field, &arrayNdx))
+ return False; /* internal error, already reported */
+ if (elem.str && (uStrCaseCmp(elem.str, "type") == 0))
+ return SetKeyTypeField(&info->dflt, xkb, field.str, arrayNdx,
+ stmt->value, info);
+ if (elem.str != NULL)
+ {
+ ERROR1("Default for unknown element %s\n", uStringText(elem.str));
+ ACTION1("Value for field %s ignored\n", uStringText(field.str));
+ }
+ else if (field.str != NULL)
+ {
+ ERROR1("Default defined for unknown field %s\n",
+ uStringText(field.str));
+ ACTION("Ignored\n");
+ }
+ return False;
+}
+
+static int
+HandleKeyTypeBody(VarDef * def,
+ XkbDescPtr xkb, KeyTypeInfo * type, KeyTypesInfo * info)
+{
+ int ok = 1;
+ ExprResult tmp, field;
+ ExprDef *arrayNdx;
+
+ for (; def != NULL; def = (VarDef *) def->common.next)
+ {
+ if ((def->name) && (def->name->type == ExprFieldRef))
+ {
+ ok = HandleKeyTypeVar(def, xkb, info);
+ continue;
+ }
+ ok = ExprResolveLhs(def->name, &tmp, &field, &arrayNdx);
+ if (ok)
+ ok = SetKeyTypeField(type, xkb, field.str, arrayNdx, def->value,
+ info);
+ }
+ return ok;
+}
+
+/**
+ * Process a type "XYZ" { } specification in the xkb_types section.
+ *
+ */
+static int
+HandleKeyTypeDef(KeyTypeDef * def,
+ XkbDescPtr xkb, unsigned merge, KeyTypesInfo * info)
+{
+ register int i;
+ KeyTypeInfo type;
+
+ if (def->merge != MergeDefault)
+ merge = def->merge;
+
+ type.defs.defined = 0;
+ type.defs.fileID = info->fileID;
+ type.defs.merge = merge;
+ type.defs.next = NULL;
+ type.dpy = info->dpy;
+ type.name = def->name;
+ type.mask = info->dflt.mask;
+ type.vmask = info->dflt.vmask;
+ type.groupInfo = info->dflt.groupInfo;
+ type.numLevels = 1;
+ type.nEntries = type.szEntries = 0;
+ type.entries = NULL;
+ type.szNames = 0;
+ type.lvlNames = NULL;
+ type.preserve = NULL;
+
+ /* Parse the actual content. */
+ if (!HandleKeyTypeBody(def->body, xkb, &type, info))
+ {
+ info->errorCount++;
+ return False;
+ }
+
+ /* now copy any appropriate map, preserve or level names from the */
+ /* default type */
+ for (i = 0; i < info->dflt.nEntries; i++)
+ {
+ XkbKTMapEntryPtr dflt;
+ dflt = &info->dflt.entries[i];
+ if (((dflt->mods.real_mods & type.mask) == dflt->mods.real_mods) &&
+ ((dflt->mods.vmods & type.vmask) == dflt->mods.vmods))
+ {
+ AddMapEntry(xkb, &type, dflt, False, False);
+ }
+ }
+ if (info->dflt.preserve)
+ {
+ PreserveInfo *dflt = info->dflt.preserve;
+ while (dflt)
+ {
+ if (((dflt->indexMods & type.mask) == dflt->indexMods) &&
+ ((dflt->indexVMods & type.vmask) == dflt->indexVMods))
+ {
+ AddPreserve(xkb, &type, dflt, False, False);
+ }
+ dflt = (PreserveInfo *) dflt->defs.next;
+ }
+ }
+ for (i = 0; i < info->dflt.szNames; i++)
+ {
+ if ((i < type.numLevels) && (info->dflt.lvlNames[i] != None))
+ {
+ AddLevelName(&type, i, info->dflt.lvlNames[i], False, False);
+ }
+ }
+ /* Now add the new keytype to the info struct */
+ if (!AddKeyType(xkb, info, &type))
+ {
+ info->errorCount++;
+ return False;
+ }
+ return True;
+}
+
+/**
+ * Process an xkb_types section.
+ *
+ * @param file The parsed xkb_types section.
+ * @param merge Merge Strategy (e.g. MergeOverride)
+ * @param info Pointer to memory where the outcome will be stored.
+ */
+static void
+HandleKeyTypesFile(XkbFile * file,
+ XkbDescPtr xkb, unsigned merge, KeyTypesInfo * info)
+{
+ ParseCommon *stmt;
+
+ info->name = uStringDup(file->name);
+ stmt = file->defs;
+ while (stmt)
+ {
+ switch (stmt->stmtType)
+ {
+ case StmtInclude:
+ if (!HandleIncludeKeyTypes((IncludeStmt *) stmt, xkb, info,
+ HandleKeyTypesFile))
+ info->errorCount++;
+ break;
+ case StmtKeyTypeDef: /* e.g. type "ONE_LEVEL" */
+ if (!HandleKeyTypeDef((KeyTypeDef *) stmt, xkb, merge, info))
+ info->errorCount++;
+ break;
+ case StmtVarDef:
+ if (!HandleKeyTypeVar((VarDef *) stmt, xkb, info))
+ info->errorCount++;
+ break;
+ case StmtVModDef: /* virtual_modifiers NumLock, ... */
+ if (!HandleVModDef((VModDef *) stmt, merge, &info->vmods))
+ info->errorCount++;
+ break;
+ case StmtKeyAliasDef:
+ ERROR("Key type files may not include other declarations\n");
+ ACTION("Ignoring definition of key alias\n");
+ info->errorCount++;
+ break;
+ case StmtKeycodeDef:
+ ERROR("Key type files may not include other declarations\n");
+ ACTION("Ignoring definition of key name\n");
+ info->errorCount++;
+ break;
+ case StmtInterpDef:
+ ERROR("Key type files may not include other declarations\n");
+ ACTION("Ignoring definition of symbol interpretation\n");
+ info->errorCount++;
+ break;
+ default:
+ WSGO1("Unexpected statement type %d in HandleKeyTypesFile\n",
+ stmt->stmtType);
+ break;
+ }
+ stmt = stmt->next;
+ if (info->errorCount > 10)
+ {
+#ifdef NOISY
+ ERROR("Too many errors\n");
+#endif
+ ACTION1("Abandoning keytypes file \"%s\"\n", file->topName);
+ break;
+ }
+ }
+ return;
+}
+
+static Bool
+CopyDefToKeyType(XkbDescPtr xkb, XkbKeyTypePtr type, KeyTypeInfo * def)
+{
+ register int i;
+ PreserveInfo *pre;
+
+ for (pre = def->preserve; pre != NULL;
+ pre = (PreserveInfo *) pre->defs.next)
+ {
+ XkbKTMapEntryPtr match;
+ XkbKTMapEntryRec tmp;
+ tmp.mods.real_mods = pre->indexMods;
+ tmp.mods.vmods = pre->indexVMods;
+ tmp.level = 0;
+ AddMapEntry(xkb, def, &tmp, False, False);
+ match = FindMatchingMapEntry(def, pre->indexMods, pre->indexVMods);
+ if (!match)
+ {
+ WSGO("Couldn't find matching entry for preserve\n");
+ ACTION("Aborting\n");
+ return False;
+ }
+ pre->matchingMapIndex = match - def->entries;
+ }
+ type->mods.real_mods = def->mask;
+ type->mods.vmods = def->vmask;
+ type->num_levels = def->numLevels;
+ type->map_count = def->nEntries;
+ type->map = def->entries;
+ if (def->preserve)
+ {
+ type->preserve = uTypedCalloc(type->map_count, XkbModsRec);
+ if (!type->preserve)
+ {
+ WARN("Couldn't allocate preserve array in CopyDefToKeyType\n");
+ ACTION1("Preserve setting for type %s lost\n",
+ XkbAtomText(def->dpy, def->name, XkbMessage));
+ }
+ else
+ {
+ pre = def->preserve;
+ for (; pre != NULL; pre = (PreserveInfo *) pre->defs.next)
+ {
+ int ndx = pre->matchingMapIndex;
+ type->preserve[ndx].mask = pre->preMods;
+ type->preserve[ndx].real_mods = pre->preMods;
+ type->preserve[ndx].vmods = pre->preVMods;
+ }
+ }
+ }
+ else
+ type->preserve = NULL;
+ type->name = (Atom) def->name;
+ if (def->szNames > 0)
+ {
+ type->level_names = uTypedCalloc(def->numLevels, Atom);
+
+ /* assert def->szNames<=def->numLevels */
+ for (i = 0; i < def->szNames; i++)
+ {
+ type->level_names[i] = (Atom) def->lvlNames[i];
+ }
+ }
+ else
+ {
+ type->level_names = NULL;
+ }
+
+ def->nEntries = def->szEntries = 0;
+ def->entries = NULL;
+ return XkbComputeEffectiveMap(xkb, type, NULL);
+}
+
+Bool
+CompileKeyTypes(XkbFile * file, XkbFileInfo * result, unsigned merge)
+{
+ KeyTypesInfo info;
+ XkbDescPtr xkb;
+
+ xkb = result->xkb;
+ InitKeyTypesInfo(&info, xkb, NULL);
+ info.fileID = file->id;
+ HandleKeyTypesFile(file, xkb, merge, &info);
+
+ if (info.errorCount == 0)
+ {
+ register int i;
+ register KeyTypeInfo *def;
+ register XkbKeyTypePtr type, next;
+
+ if (info.name != NULL)
+ {
+ if (XkbAllocNames(xkb, XkbTypesNameMask, 0, 0) == Success)
+ xkb->names->types = XkbInternAtom(xkb->dpy, info.name, False);
+ else
+ {
+ WSGO("Couldn't allocate space for types name\n");
+ ACTION2("Name \"%s\" (from %s) NOT assigned\n",
+ scanFile, info.name);
+ }
+ }
+ i = info.nTypes;
+ if ((info.stdPresent & XkbOneLevelMask) == 0)
+ i++;
+ if ((info.stdPresent & XkbTwoLevelMask) == 0)
+ i++;
+ if ((info.stdPresent & XkbKeypadMask) == 0)
+ i++;
+ if ((info.stdPresent & XkbAlphabeticMask) == 0)
+ i++;
+ if (XkbAllocClientMap(xkb, XkbKeyTypesMask, i) != Success)
+ {
+ WSGO("Couldn't allocate client map\n");
+ ACTION("Exiting\n");
+ return False;
+ }
+ xkb->map->num_types = i;
+ if (XkbAllRequiredTypes & (~info.stdPresent))
+ {
+ unsigned missing, keypadVMod;
+
+ missing = XkbAllRequiredTypes & (~info.stdPresent);
+ keypadVMod = FindKeypadVMod(xkb);
+ if (XkbInitCanonicalKeyTypes(xkb, missing, keypadVMod) != Success)
+ {
+ WSGO("Couldn't initialize canonical key types\n");
+ ACTION("Exiting\n");
+ return False;
+ }
+ if (missing & XkbOneLevelMask)
+ xkb->map->types[XkbOneLevelIndex].name = tok_ONE_LEVEL;
+ if (missing & XkbTwoLevelMask)
+ xkb->map->types[XkbTwoLevelIndex].name = tok_TWO_LEVEL;
+ if (missing & XkbAlphabeticMask)
+ xkb->map->types[XkbAlphabeticIndex].name = tok_ALPHABETIC;
+ if (missing & XkbKeypadMask)
+ xkb->map->types[XkbKeypadIndex].name = tok_KEYPAD;
+ }
+ next = &xkb->map->types[XkbLastRequiredType + 1];
+ for (i = 0, def = info.types; i < info.nTypes; i++)
+ {
+ if (def->name == tok_ONE_LEVEL)
+ type = &xkb->map->types[XkbOneLevelIndex];
+ else if (def->name == tok_TWO_LEVEL)
+ type = &xkb->map->types[XkbTwoLevelIndex];
+ else if (def->name == tok_ALPHABETIC)
+ type = &xkb->map->types[XkbAlphabeticIndex];
+ else if (def->name == tok_KEYPAD)
+ type = &xkb->map->types[XkbKeypadIndex];
+ else
+ type = next++;
+ DeleteLevel1MapEntries(def);
+ if (!CopyDefToKeyType(xkb, type, def))
+ return False;
+ def = (KeyTypeInfo *) def->defs.next;
+ }
+ return True;
+ }
+ return False;
+}
diff --git a/xkbcomp/misc.c b/xkbcomp/misc.c
index 51bd14a84..4990a7439 100644
--- a/xkbcomp/misc.c
+++ b/xkbcomp/misc.c
@@ -1,581 +1,581 @@
-/************************************************************
- Copyright (c) 1994 by Silicon Graphics Computer Systems, Inc.
-
- Permission to use, copy, modify, and distribute this
- software and its documentation for any purpose and without
- fee is hereby granted, provided that the above copyright
- notice appear in all copies and that both that copyright
- notice and this permission notice appear in supporting
- documentation, and that the name of Silicon Graphics not be
- used in advertising or publicity pertaining to distribution
- of the software without specific prior written permission.
- Silicon Graphics makes no representation about the suitability
- of this software for any purpose. It is provided "as is"
- without any express or implied warranty.
-
- SILICON GRAPHICS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS
- SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
- AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON
- GRAPHICS BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL
- DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
- DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
- OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH
- THE USE OR PERFORMANCE OF THIS SOFTWARE.
-
- ********************************************************/
-
-#include "xkbcomp.h"
-#include "xkbpath.h"
-#include "tokens.h"
-#include "keycodes.h"
-#include "misc.h"
-#include <X11/keysym.h>
-#include "parseutils.h"
-
-#include <X11/extensions/XKBgeom.h>
-
-/***====================================================================***/
-
-/**
- * Open the file given in the include statement and parse it's content.
- * If the statement defines a specific map to use, this map is returned in
- * file_rtrn. Otherwise, the default map is returned.
- *
- * @param stmt The include statement, specifying the file name to look for.
- * @param file_type Type of file (XkmKeyNamesIdx, etc.)
- * @param file_rtrn Returns the key map to be used.
- * @param merge_rtrn Always returns stmt->merge.
- *
- * @return True on success or False otherwise.
- */
-Bool
-ProcessIncludeFile(IncludeStmt * stmt,
- unsigned file_type,
- XkbFile ** file_rtrn, unsigned *merge_rtrn)
-{
- FILE *file;
- XkbFile *rtrn, *mapToUse;
- char oldFile[1024] = {0};
- int oldLine = lineNum;
-
- rtrn = XkbFindFileInCache(stmt->file, file_type, &stmt->path);
- if (rtrn == NULL)
- {
- /* file not in cache, open it, parse it and store it in cache for next
- time. */
- file = XkbFindFileInPath(stmt->file, file_type, &stmt->path);
- if (file == NULL)
- {
- ERROR2("Can't find file \"%s\" for %s include\n", stmt->file,
- XkbDirectoryForInclude(file_type));
- ACTION("Exiting\n");
- return False;
- }
- strcpy(oldFile, scanFile);
- oldLine = lineNum;
- setScanState(stmt->file, 1);
- if (debugFlags & 2)
- INFO1("About to parse include file %s\n", stmt->file);
- /* parse the file */
- if ((XKBParseFile(file, &rtrn) == 0) || (rtrn == NULL))
- {
- setScanState(oldFile, oldLine);
- ERROR1("Error interpreting include file \"%s\"\n", stmt->file);
- ACTION("Exiting\n");
- fclose(file);
- return False;
- }
- fclose(file);
- XkbAddFileToCache(stmt->file, file_type, stmt->path, rtrn);
- }
- mapToUse = rtrn;
- if (stmt->map != NULL)
- {
- while ((mapToUse) && ((!uStringEqual(mapToUse->name, stmt->map)) ||
- (mapToUse->type != file_type)))
- {
- mapToUse = (XkbFile *) mapToUse->common.next;
- }
- if (!mapToUse)
- {
- ERROR3("No %s named \"%s\" in the include file \"%s\"\n",
- XkbConfigText(file_type, XkbMessage), stmt->map,
- stmt->file);
- ACTION("Exiting\n");
- return False;
- }
- }
- else if ((rtrn->common.next != NULL) && (warningLevel > 5))
- {
- WARN1("No map in include statement, but \"%s\" contains several\n",
- stmt->file);
- ACTION1("Using first defined map, \"%s\"\n", rtrn->name);
- }
- setScanState(oldFile, oldLine);
- if (mapToUse->type != file_type)
- {
- ERROR2("Include file wrong type (expected %s, got %s)\n",
- XkbConfigText(file_type, XkbMessage),
- XkbConfigText(mapToUse->type, XkbMessage));
- ACTION1("Include file \"%s\" ignored\n", stmt->file);
- return False;
- }
- /* FIXME: we have to check recursive includes here (or somewhere) */
-
- mapToUse->compiled = True;
- *file_rtrn = mapToUse;
- *merge_rtrn = stmt->merge;
- return True;
-}
-
-/***====================================================================***/
-
-int
-ReportNotArray(const char *type, const char *field, const char *name)
-{
- ERROR2("The %s %s field is not an array\n", type, field);
- ACTION1("Ignoring illegal assignment in %s\n", name);
- return False;
-}
-
-int
-ReportShouldBeArray(const char *type, const char *field, char *name)
-{
- ERROR2("Missing subscript for %s %s\n", type, field);
- ACTION1("Ignoring illegal assignment in %s\n", name);
- return False;
-}
-
-int
-ReportBadType(const char *type, const char *field,
- const char *name, const char *wanted)
-{
- ERROR3("The %s %s field must be a %s\n", type, field, wanted);
- ACTION1("Ignoring illegal assignment in %s\n", name);
- return False;
-}
-
-int
-ReportBadIndexType(char *type, char *field, char *name, char *wanted)
-{
- ERROR3("Index for the %s %s field must be a %s\n", type, field, wanted);
- ACTION1("Ignoring assignment to illegal field in %s\n", name);
- return False;
-}
-
-int
-ReportBadField(const char *type, const char *field, const char *name)
-{
- ERROR3("Unknown %s field %s in %s\n", type, field, name);
- ACTION1("Ignoring assignment to unknown field in %s\n", name);
- return False;
-}
-
-int
-ReportMultipleDefs(char *type, char *field, char *name)
-{
- WARN3("Multiple definitions of %s in %s \"%s\"\n", field, type, name);
- ACTION("Using last definition\n");
- return False;
-}
-
-/***====================================================================***/
-
-Bool
-UseNewField(unsigned field,
- CommonInfo * oldDefs, CommonInfo * newDefs, unsigned *pCollide)
-{
- Bool useNew;
-
- useNew = False;
- if (oldDefs->defined & field)
- {
- if (newDefs->defined & field)
- {
- if (((oldDefs->fileID == newDefs->fileID)
- && (warningLevel > 0)) || (warningLevel > 9))
- {
- *pCollide |= field;
- }
- if (newDefs->merge != MergeAugment)
- useNew = True;
- }
- }
- else if (newDefs->defined & field)
- useNew = True;
- return useNew;
-}
-
-Bool
-MergeNewField(unsigned field,
- CommonInfo * oldDefs, CommonInfo * newDefs, unsigned *pCollide)
-{
- if ((oldDefs->defined & field) && (newDefs->defined & field))
- {
- if (((oldDefs->fileID == newDefs->fileID) && (warningLevel > 0)) ||
- (warningLevel > 9))
- {
- *pCollide |= field;
- }
- if (newDefs->merge == MergeAugment)
- return True;
- }
- return False;
-}
-
-XPointer
-ClearCommonInfo(CommonInfo * cmn)
-{
- if (cmn != NULL)
- {
- CommonInfo *this, *next;
- for (this = cmn; this != NULL; this = next)
- {
- next = this->next;
- uFree(this);
- }
- }
- return NULL;
-}
-
-XPointer
-AddCommonInfo(CommonInfo * old, CommonInfo * new)
-{
- CommonInfo *first;
-
- first = old;
- while (old && old->next)
- {
- old = old->next;
- }
- new->next = NULL;
- if (old)
- {
- old->next = new;
- return (XPointer) first;
- }
- return (XPointer) new;
-}
-
-/***====================================================================***/
-
-typedef struct _KeyNameDesc
-{
- KeySym level1;
- KeySym level2;
- char name[5];
- Bool used;
-} KeyNameDesc;
-
-static KeyNameDesc dfltKeys[] = {
- {XK_Escape, NoSymbol, "ESC\0"},
- {XK_quoteleft, XK_asciitilde, "TLDE"},
- {XK_1, XK_exclam, "AE01"},
- {XK_2, XK_at, "AE02"},
- {XK_3, XK_numbersign, "AE03"},
- {XK_4, XK_dollar, "AE04"},
- {XK_5, XK_percent, "AE05"},
- {XK_6, XK_asciicircum, "AE06"},
- {XK_7, XK_ampersand, "AE07"},
- {XK_8, XK_asterisk, "AE08"},
- {XK_9, XK_parenleft, "AE09"},
- {XK_0, XK_parenright, "AE10"},
- {XK_minus, XK_underscore, "AE11"},
- {XK_equal, XK_plus, "AE12"},
- {XK_BackSpace, NoSymbol, "BKSP"},
- {XK_Tab, NoSymbol, "TAB\0"},
- {XK_q, XK_Q, "AD01"},
- {XK_w, XK_W, "AD02"},
- {XK_e, XK_E, "AD03"},
- {XK_r, XK_R, "AD04"},
- {XK_t, XK_T, "AD05"},
- {XK_y, XK_Y, "AD06"},
- {XK_u, XK_U, "AD07"},
- {XK_i, XK_I, "AD08"},
- {XK_o, XK_O, "AD09"},
- {XK_p, XK_P, "AD10"},
- {XK_bracketleft, XK_braceleft, "AD11"},
- {XK_bracketright, XK_braceright, "AD12"},
- {XK_Return, NoSymbol, "RTRN"},
- {XK_Caps_Lock, NoSymbol, "CAPS"},
- {XK_a, XK_A, "AC01"},
- {XK_s, XK_S, "AC02"},
- {XK_d, XK_D, "AC03"},
- {XK_f, XK_F, "AC04"},
- {XK_g, XK_G, "AC05"},
- {XK_h, XK_H, "AC06"},
- {XK_j, XK_J, "AC07"},
- {XK_k, XK_K, "AC08"},
- {XK_l, XK_L, "AC09"},
- {XK_semicolon, XK_colon, "AC10"},
- {XK_quoteright, XK_quotedbl, "AC11"},
- {XK_Shift_L, NoSymbol, "LFSH"},
- {XK_z, XK_Z, "AB01"},
- {XK_x, XK_X, "AB02"},
- {XK_c, XK_C, "AB03"},
- {XK_v, XK_V, "AB04"},
- {XK_b, XK_B, "AB05"},
- {XK_n, XK_N, "AB06"},
- {XK_m, XK_M, "AB07"},
- {XK_comma, XK_less, "AB08"},
- {XK_period, XK_greater, "AB09"},
- {XK_slash, XK_question, "AB10"},
- {XK_backslash, XK_bar, "BKSL"},
- {XK_Control_L, NoSymbol, "LCTL"},
- {XK_space, NoSymbol, "SPCE"},
- {XK_Shift_R, NoSymbol, "RTSH"},
- {XK_Alt_L, NoSymbol, "LALT"},
- {XK_space, NoSymbol, "SPCE"},
- {XK_Control_R, NoSymbol, "RCTL"},
- {XK_Alt_R, NoSymbol, "RALT"},
- {XK_F1, NoSymbol, "FK01"},
- {XK_F2, NoSymbol, "FK02"},
- {XK_F3, NoSymbol, "FK03"},
- {XK_F4, NoSymbol, "FK04"},
- {XK_F5, NoSymbol, "FK05"},
- {XK_F6, NoSymbol, "FK06"},
- {XK_F7, NoSymbol, "FK07"},
- {XK_F8, NoSymbol, "FK08"},
- {XK_F9, NoSymbol, "FK09"},
- {XK_F10, NoSymbol, "FK10"},
- {XK_F11, NoSymbol, "FK11"},
- {XK_F12, NoSymbol, "FK12"},
- {XK_Print, NoSymbol, "PRSC"},
- {XK_Scroll_Lock, NoSymbol, "SCLK"},
- {XK_Pause, NoSymbol, "PAUS"},
- {XK_Insert, NoSymbol, "INS\0"},
- {XK_Home, NoSymbol, "HOME"},
- {XK_Prior, NoSymbol, "PGUP"},
- {XK_Delete, NoSymbol, "DELE"},
- {XK_End, NoSymbol, "END"},
- {XK_Next, NoSymbol, "PGDN"},
- {XK_Up, NoSymbol, "UP\0\0"},
- {XK_Left, NoSymbol, "LEFT"},
- {XK_Down, NoSymbol, "DOWN"},
- {XK_Right, NoSymbol, "RGHT"},
- {XK_Num_Lock, NoSymbol, "NMLK"},
- {XK_KP_Divide, NoSymbol, "KPDV"},
- {XK_KP_Multiply, NoSymbol, "KPMU"},
- {XK_KP_Subtract, NoSymbol, "KPSU"},
- {NoSymbol, XK_KP_7, "KP7\0"},
- {NoSymbol, XK_KP_8, "KP8\0"},
- {NoSymbol, XK_KP_9, "KP9\0"},
- {XK_KP_Add, NoSymbol, "KPAD"},
- {NoSymbol, XK_KP_4, "KP4\0"},
- {NoSymbol, XK_KP_5, "KP5\0"},
- {NoSymbol, XK_KP_6, "KP6\0"},
- {NoSymbol, XK_KP_1, "KP1\0"},
- {NoSymbol, XK_KP_2, "KP2\0"},
- {NoSymbol, XK_KP_3, "KP3\0"},
- {XK_KP_Enter, NoSymbol, "KPEN"},
- {NoSymbol, XK_KP_0, "KP0\0"},
- {XK_KP_Delete, NoSymbol, "KPDL"},
- {XK_less, XK_greater, "LSGT"},
- {XK_KP_Separator, NoSymbol, "KPCO"},
- {XK_Find, NoSymbol, "FIND"},
- {NoSymbol, NoSymbol, "\0\0\0\0"}
-};
-
-Status
-ComputeKbdDefaults(XkbDescPtr xkb)
-{
- Status rtrn;
- register int i, tmp, nUnknown;
- KeyNameDesc *name;
- KeySym *syms;
- char tmpname[XkbKeyNameLength + 1];
-
- if ((xkb->names == NULL) || (xkb->names->keys == NULL))
- {
- if ((rtrn = XkbAllocNames(xkb, XkbKeyNamesMask, 0, 0)) != Success)
- return rtrn;
- }
- for (name = dfltKeys; (name->name[0] != '\0'); name++)
- {
- name->used = False;
- }
- nUnknown = 0;
- for (i = xkb->min_key_code; i <= xkb->max_key_code; i++)
- {
- tmp = XkbKeyNumSyms(xkb, i);
- if ((xkb->names->keys[i].name[0] == '\0') && (tmp > 0))
- {
- tmp = XkbKeyGroupsWidth(xkb, i);
- syms = XkbKeySymsPtr(xkb, i);
- for (name = dfltKeys; (name->name[0] != '\0'); name++)
- {
- Bool match = True;
- if (((name->level1 != syms[0])
- && (name->level1 != NoSymbol))
- || ((name->level2 != NoSymbol) && (tmp < 2))
- || ((name->level2 != syms[1])
- && (name->level2 != NoSymbol)))
- {
- match = False;
- }
- if (match)
- {
- if (!name->used)
- {
- memcpy(xkb->names->keys[i].name, name->name,
- XkbKeyNameLength);
- name->used = True;
- }
- else
- {
- if (warningLevel > 2)
- {
- WARN1
- ("Several keys match pattern for %s\n",
- XkbKeyNameText(name->name, XkbMessage));
- ACTION2("Using <U%03d> for key %d\n",
- nUnknown, i);
- }
- snprintf(tmpname, sizeof(tmpname), "U%03d",
- nUnknown++);
- memcpy(xkb->names->keys[i].name, tmpname,
- XkbKeyNameLength);
- }
- break;
- }
- }
- if (xkb->names->keys[i].name[0] == '\0')
- {
- if (warningLevel > 2)
- {
- WARN1("Key %d does not match any defaults\n", i);
- ACTION1("Using name <U%03d>\n", nUnknown);
- snprintf(tmpname, sizeof(tmpname), "U%03d", nUnknown++);
- memcpy(xkb->names->keys[i].name, tmpname,
- XkbKeyNameLength);
- }
- }
- }
- }
- return Success;
-}
-
-/**
- * Find the key with the given name and return its keycode in kc_rtrn.
- *
- * @param name The 4-letter name of the key as a long.
- * @param kc_rtrn Set to the keycode if the key was found, otherwise 0.
- * @param use_aliases True if the key aliases should be searched too.
- * @param create If True and the key is not found, it is added to the
- * xkb->names at the first free keycode.
- * @param start_from Keycode to start searching from.
- *
- * @return True if found, False otherwise.
- */
-Bool
-FindNamedKey(XkbDescPtr xkb,
- unsigned long name,
- unsigned int *kc_rtrn,
- Bool use_aliases, Bool create, int start_from)
-{
- register unsigned n;
-
- if (start_from < xkb->min_key_code)
- {
- start_from = xkb->min_key_code;
- }
- else if (start_from > xkb->max_key_code)
- {
- return False;
- }
-
- *kc_rtrn = 0; /* some callers rely on this */
- if (xkb && xkb->names && xkb->names->keys)
- {
- for (n = start_from; n <= xkb->max_key_code; n++)
- {
- unsigned long tmp;
- tmp = KeyNameToLong(xkb->names->keys[n].name);
- if (tmp == name)
- {
- *kc_rtrn = n;
- return True;
- }
- }
- if (use_aliases)
- {
- unsigned long new_name;
- if (FindKeyNameForAlias(xkb, name, &new_name))
- return FindNamedKey(xkb, new_name, kc_rtrn, False, create, 0);
- }
- }
- if (create)
- {
- if ((!xkb->names) || (!xkb->names->keys))
- {
- if (xkb->min_key_code < XkbMinLegalKeyCode)
- {
- xkb->min_key_code = XkbMinLegalKeyCode;
- xkb->max_key_code = XkbMaxLegalKeyCode;
- }
- if (XkbAllocNames(xkb, XkbKeyNamesMask, 0, 0) != Success)
- {
- if (warningLevel > 0)
- {
- WARN("Couldn't allocate key names in FindNamedKey\n");
- ACTION1("Key \"%s\" not automatically created\n",
- longText(name, XkbMessage));
- }
- return False;
- }
- }
- /* Find first unused keycode and store our key here */
- for (n = xkb->min_key_code; n <= xkb->max_key_code; n++)
- {
- if (xkb->names->keys[n].name[0] == '\0')
- {
- char buf[XkbKeyNameLength + 1];
- LongToKeyName(name, buf);
- memcpy(xkb->names->keys[n].name, buf, XkbKeyNameLength);
- *kc_rtrn = n;
- return True;
- }
- }
- }
- return False;
-}
-
-Bool
-FindKeyNameForAlias(XkbDescPtr xkb, unsigned long lname,
- unsigned long *real_name)
-{
- register int i;
- char name[XkbKeyNameLength + 1];
-
- if (xkb && xkb->geom && xkb->geom->key_aliases)
- {
- XkbKeyAliasPtr a;
- a = xkb->geom->key_aliases;
- LongToKeyName(lname, name);
- name[XkbKeyNameLength] = '\0';
- for (i = 0; i < xkb->geom->num_key_aliases; i++, a++)
- {
- if (strncmp(name, a->alias, XkbKeyNameLength) == 0)
- {
- *real_name = KeyNameToLong(a->real);
- return True;
- }
- }
- }
- if (xkb && xkb->names && xkb->names->key_aliases)
- {
- XkbKeyAliasPtr a;
- a = xkb->names->key_aliases;
- LongToKeyName(lname, name);
- name[XkbKeyNameLength] = '\0';
- for (i = 0; i < xkb->names->num_key_aliases; i++, a++)
- {
- if (strncmp(name, a->alias, XkbKeyNameLength) == 0)
- {
- *real_name = KeyNameToLong(a->real);
- return True;
- }
- }
- }
- return False;
-}
+/************************************************************
+ Copyright (c) 1994 by Silicon Graphics Computer Systems, Inc.
+
+ Permission to use, copy, modify, and distribute this
+ software and its documentation for any purpose and without
+ fee is hereby granted, provided that the above copyright
+ notice appear in all copies and that both that copyright
+ notice and this permission notice appear in supporting
+ documentation, and that the name of Silicon Graphics not be
+ used in advertising or publicity pertaining to distribution
+ of the software without specific prior written permission.
+ Silicon Graphics makes no representation about the suitability
+ of this software for any purpose. It is provided "as is"
+ without any express or implied warranty.
+
+ SILICON GRAPHICS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS
+ SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
+ AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON
+ GRAPHICS BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL
+ DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
+ DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
+ OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH
+ THE USE OR PERFORMANCE OF THIS SOFTWARE.
+
+ ********************************************************/
+
+#include "xkbcomp.h"
+#include "xkbpath.h"
+#include "tokens.h"
+#include "keycodes.h"
+#include "misc.h"
+#include <X11/keysym.h>
+#include "parseutils.h"
+
+#include <X11/extensions/XKBgeom.h>
+
+/***====================================================================***/
+
+/**
+ * Open the file given in the include statement and parse it's content.
+ * If the statement defines a specific map to use, this map is returned in
+ * file_rtrn. Otherwise, the default map is returned.
+ *
+ * @param stmt The include statement, specifying the file name to look for.
+ * @param file_type Type of file (XkmKeyNamesIdx, etc.)
+ * @param file_rtrn Returns the key map to be used.
+ * @param merge_rtrn Always returns stmt->merge.
+ *
+ * @return True on success or False otherwise.
+ */
+Bool
+ProcessIncludeFile(IncludeStmt * stmt,
+ unsigned file_type,
+ XkbFile ** file_rtrn, unsigned *merge_rtrn)
+{
+ FILE *file;
+ XkbFile *rtrn, *mapToUse;
+ char oldFile[1024] = {0};
+ int oldLine = lineNum;
+
+ rtrn = XkbFindFileInCache(stmt->file, file_type, &stmt->path);
+ if (rtrn == NULL)
+ {
+ /* file not in cache, open it, parse it and store it in cache for next
+ time. */
+ file = XkbFindFileInPath(stmt->file, file_type, &stmt->path);
+ if (file == NULL)
+ {
+ ERROR2("Can't find file \"%s\" for %s include\n", stmt->file,
+ XkbDirectoryForInclude(file_type));
+ ACTION("Exiting\n");
+ return False;
+ }
+ strcpy(oldFile, scanFile);
+ oldLine = lineNum;
+ setScanState(stmt->file, 1);
+ if (debugFlags & 2)
+ INFO1("About to parse include file %s\n", stmt->file);
+ /* parse the file */
+ if ((XKBParseFile(file, &rtrn) == 0) || (rtrn == NULL))
+ {
+ setScanState(oldFile, oldLine);
+ ERROR1("Error interpreting include file \"%s\"\n", stmt->file);
+ ACTION("Exiting\n");
+ fclose(file);
+ return False;
+ }
+ fclose(file);
+ XkbAddFileToCache(stmt->file, file_type, stmt->path, rtrn);
+ }
+ mapToUse = rtrn;
+ if (stmt->map != NULL)
+ {
+ while ((mapToUse) && ((!uStringEqual(mapToUse->name, stmt->map)) ||
+ (mapToUse->type != file_type)))
+ {
+ mapToUse = (XkbFile *) mapToUse->common.next;
+ }
+ if (!mapToUse)
+ {
+ ERROR3("No %s named \"%s\" in the include file \"%s\"\n",
+ XkbConfigText(file_type, XkbMessage), stmt->map,
+ stmt->file);
+ ACTION("Exiting\n");
+ return False;
+ }
+ }
+ else if ((rtrn->common.next != NULL) && (warningLevel > 5))
+ {
+ WARN1("No map in include statement, but \"%s\" contains several\n",
+ stmt->file);
+ ACTION1("Using first defined map, \"%s\"\n", rtrn->name);
+ }
+ setScanState(oldFile, oldLine);
+ if (mapToUse->type != file_type)
+ {
+ ERROR2("Include file wrong type (expected %s, got %s)\n",
+ XkbConfigText(file_type, XkbMessage),
+ XkbConfigText(mapToUse->type, XkbMessage));
+ ACTION1("Include file \"%s\" ignored\n", stmt->file);
+ return False;
+ }
+ /* FIXME: we have to check recursive includes here (or somewhere) */
+
+ mapToUse->compiled = True;
+ *file_rtrn = mapToUse;
+ *merge_rtrn = stmt->merge;
+ return True;
+}
+
+/***====================================================================***/
+
+int
+ReportNotArray(const char *type, const char *field, const char *name)
+{
+ ERROR2("The %s %s field is not an array\n", type, field);
+ ACTION1("Ignoring illegal assignment in %s\n", name);
+ return False;
+}
+
+int
+ReportShouldBeArray(const char *type, const char *field, char *name)
+{
+ ERROR2("Missing subscript for %s %s\n", type, field);
+ ACTION1("Ignoring illegal assignment in %s\n", name);
+ return False;
+}
+
+int
+ReportBadType(const char *type, const char *field,
+ const char *name, const char *wanted)
+{
+ ERROR3("The %s %s field must be a %s\n", type, field, wanted);
+ ACTION1("Ignoring illegal assignment in %s\n", name);
+ return False;
+}
+
+int
+ReportBadIndexType(char *type, char *field, char *name, char *wanted)
+{
+ ERROR3("Index for the %s %s field must be a %s\n", type, field, wanted);
+ ACTION1("Ignoring assignment to illegal field in %s\n", name);
+ return False;
+}
+
+int
+ReportBadField(const char *type, const char *field, const char *name)
+{
+ ERROR3("Unknown %s field %s in %s\n", type, field, name);
+ ACTION1("Ignoring assignment to unknown field in %s\n", name);
+ return False;
+}
+
+int
+ReportMultipleDefs(char *type, char *field, char *name)
+{
+ WARN3("Multiple definitions of %s in %s \"%s\"\n", field, type, name);
+ ACTION("Using last definition\n");
+ return False;
+}
+
+/***====================================================================***/
+
+Bool
+UseNewField(unsigned field,
+ CommonInfo * oldDefs, CommonInfo * newDefs, unsigned *pCollide)
+{
+ Bool useNew;
+
+ useNew = False;
+ if (oldDefs->defined & field)
+ {
+ if (newDefs->defined & field)
+ {
+ if (((oldDefs->fileID == newDefs->fileID)
+ && (warningLevel > 0)) || (warningLevel > 9))
+ {
+ *pCollide |= field;
+ }
+ if (newDefs->merge != MergeAugment)
+ useNew = True;
+ }
+ }
+ else if (newDefs->defined & field)
+ useNew = True;
+ return useNew;
+}
+
+Bool
+MergeNewField(unsigned field,
+ CommonInfo * oldDefs, CommonInfo * newDefs, unsigned *pCollide)
+{
+ if ((oldDefs->defined & field) && (newDefs->defined & field))
+ {
+ if (((oldDefs->fileID == newDefs->fileID) && (warningLevel > 0)) ||
+ (warningLevel > 9))
+ {
+ *pCollide |= field;
+ }
+ if (newDefs->merge == MergeAugment)
+ return True;
+ }
+ return False;
+}
+
+XPointer
+ClearCommonInfo(CommonInfo * cmn)
+{
+ if (cmn != NULL)
+ {
+ CommonInfo *this, *next;
+ for (this = cmn; this != NULL; this = next)
+ {
+ next = this->next;
+ uFree(this);
+ }
+ }
+ return NULL;
+}
+
+XPointer
+AddCommonInfo(CommonInfo * old, CommonInfo * new)
+{
+ CommonInfo *first;
+
+ first = old;
+ while (old && old->next)
+ {
+ old = old->next;
+ }
+ new->next = NULL;
+ if (old)
+ {
+ old->next = new;
+ return (XPointer) first;
+ }
+ return (XPointer) new;
+}
+
+/***====================================================================***/
+
+typedef struct _KeyNameDesc
+{
+ KeySym level1;
+ KeySym level2;
+ char name[5];
+ Bool used;
+} KeyNameDesc;
+
+static KeyNameDesc dfltKeys[] = {
+ {XK_Escape, NoSymbol, "ESC\0"},
+ {XK_quoteleft, XK_asciitilde, "TLDE"},
+ {XK_1, XK_exclam, "AE01"},
+ {XK_2, XK_at, "AE02"},
+ {XK_3, XK_numbersign, "AE03"},
+ {XK_4, XK_dollar, "AE04"},
+ {XK_5, XK_percent, "AE05"},
+ {XK_6, XK_asciicircum, "AE06"},
+ {XK_7, XK_ampersand, "AE07"},
+ {XK_8, XK_asterisk, "AE08"},
+ {XK_9, XK_parenleft, "AE09"},
+ {XK_0, XK_parenright, "AE10"},
+ {XK_minus, XK_underscore, "AE11"},
+ {XK_equal, XK_plus, "AE12"},
+ {XK_BackSpace, NoSymbol, "BKSP"},
+ {XK_Tab, NoSymbol, "TAB\0"},
+ {XK_q, XK_Q, "AD01"},
+ {XK_w, XK_W, "AD02"},
+ {XK_e, XK_E, "AD03"},
+ {XK_r, XK_R, "AD04"},
+ {XK_t, XK_T, "AD05"},
+ {XK_y, XK_Y, "AD06"},
+ {XK_u, XK_U, "AD07"},
+ {XK_i, XK_I, "AD08"},
+ {XK_o, XK_O, "AD09"},
+ {XK_p, XK_P, "AD10"},
+ {XK_bracketleft, XK_braceleft, "AD11"},
+ {XK_bracketright, XK_braceright, "AD12"},
+ {XK_Return, NoSymbol, "RTRN"},
+ {XK_Caps_Lock, NoSymbol, "CAPS"},
+ {XK_a, XK_A, "AC01"},
+ {XK_s, XK_S, "AC02"},
+ {XK_d, XK_D, "AC03"},
+ {XK_f, XK_F, "AC04"},
+ {XK_g, XK_G, "AC05"},
+ {XK_h, XK_H, "AC06"},
+ {XK_j, XK_J, "AC07"},
+ {XK_k, XK_K, "AC08"},
+ {XK_l, XK_L, "AC09"},
+ {XK_semicolon, XK_colon, "AC10"},
+ {XK_quoteright, XK_quotedbl, "AC11"},
+ {XK_Shift_L, NoSymbol, "LFSH"},
+ {XK_z, XK_Z, "AB01"},
+ {XK_x, XK_X, "AB02"},
+ {XK_c, XK_C, "AB03"},
+ {XK_v, XK_V, "AB04"},
+ {XK_b, XK_B, "AB05"},
+ {XK_n, XK_N, "AB06"},
+ {XK_m, XK_M, "AB07"},
+ {XK_comma, XK_less, "AB08"},
+ {XK_period, XK_greater, "AB09"},
+ {XK_slash, XK_question, "AB10"},
+ {XK_backslash, XK_bar, "BKSL"},
+ {XK_Control_L, NoSymbol, "LCTL"},
+ {XK_space, NoSymbol, "SPCE"},
+ {XK_Shift_R, NoSymbol, "RTSH"},
+ {XK_Alt_L, NoSymbol, "LALT"},
+ {XK_space, NoSymbol, "SPCE"},
+ {XK_Control_R, NoSymbol, "RCTL"},
+ {XK_Alt_R, NoSymbol, "RALT"},
+ {XK_F1, NoSymbol, "FK01"},
+ {XK_F2, NoSymbol, "FK02"},
+ {XK_F3, NoSymbol, "FK03"},
+ {XK_F4, NoSymbol, "FK04"},
+ {XK_F5, NoSymbol, "FK05"},
+ {XK_F6, NoSymbol, "FK06"},
+ {XK_F7, NoSymbol, "FK07"},
+ {XK_F8, NoSymbol, "FK08"},
+ {XK_F9, NoSymbol, "FK09"},
+ {XK_F10, NoSymbol, "FK10"},
+ {XK_F11, NoSymbol, "FK11"},
+ {XK_F12, NoSymbol, "FK12"},
+ {XK_Print, NoSymbol, "PRSC"},
+ {XK_Scroll_Lock, NoSymbol, "SCLK"},
+ {XK_Pause, NoSymbol, "PAUS"},
+ {XK_Insert, NoSymbol, "INS\0"},
+ {XK_Home, NoSymbol, "HOME"},
+ {XK_Prior, NoSymbol, "PGUP"},
+ {XK_Delete, NoSymbol, "DELE"},
+ {XK_End, NoSymbol, "END"},
+ {XK_Next, NoSymbol, "PGDN"},
+ {XK_Up, NoSymbol, "UP\0\0"},
+ {XK_Left, NoSymbol, "LEFT"},
+ {XK_Down, NoSymbol, "DOWN"},
+ {XK_Right, NoSymbol, "RGHT"},
+ {XK_Num_Lock, NoSymbol, "NMLK"},
+ {XK_KP_Divide, NoSymbol, "KPDV"},
+ {XK_KP_Multiply, NoSymbol, "KPMU"},
+ {XK_KP_Subtract, NoSymbol, "KPSU"},
+ {NoSymbol, XK_KP_7, "KP7\0"},
+ {NoSymbol, XK_KP_8, "KP8\0"},
+ {NoSymbol, XK_KP_9, "KP9\0"},
+ {XK_KP_Add, NoSymbol, "KPAD"},
+ {NoSymbol, XK_KP_4, "KP4\0"},
+ {NoSymbol, XK_KP_5, "KP5\0"},
+ {NoSymbol, XK_KP_6, "KP6\0"},
+ {NoSymbol, XK_KP_1, "KP1\0"},
+ {NoSymbol, XK_KP_2, "KP2\0"},
+ {NoSymbol, XK_KP_3, "KP3\0"},
+ {XK_KP_Enter, NoSymbol, "KPEN"},
+ {NoSymbol, XK_KP_0, "KP0\0"},
+ {XK_KP_Delete, NoSymbol, "KPDL"},
+ {XK_less, XK_greater, "LSGT"},
+ {XK_KP_Separator, NoSymbol, "KPCO"},
+ {XK_Find, NoSymbol, "FIND"},
+ {NoSymbol, NoSymbol, "\0\0\0\0"}
+};
+
+Status
+ComputeKbdDefaults(XkbDescPtr xkb)
+{
+ Status rtrn;
+ register int i, tmp, nUnknown;
+ KeyNameDesc *name;
+ KeySym *syms;
+ char tmpname[XkbKeyNameLength + 1];
+
+ if ((xkb->names == NULL) || (xkb->names->keys == NULL))
+ {
+ if ((rtrn = XkbAllocNames(xkb, XkbKeyNamesMask, 0, 0)) != Success)
+ return rtrn;
+ }
+ for (name = dfltKeys; (name->name[0] != '\0'); name++)
+ {
+ name->used = False;
+ }
+ nUnknown = 0;
+ for (i = xkb->min_key_code; i <= xkb->max_key_code; i++)
+ {
+ tmp = XkbKeyNumSyms(xkb, i);
+ if ((xkb->names->keys[i].name[0] == '\0') && (tmp > 0))
+ {
+ tmp = XkbKeyGroupsWidth(xkb, i);
+ syms = XkbKeySymsPtr(xkb, i);
+ for (name = dfltKeys; (name->name[0] != '\0'); name++)
+ {
+ Bool match = True;
+ if (((name->level1 != syms[0])
+ && (name->level1 != NoSymbol))
+ || ((name->level2 != NoSymbol) && (tmp < 2))
+ || ((name->level2 != syms[1])
+ && (name->level2 != NoSymbol)))
+ {
+ match = False;
+ }
+ if (match)
+ {
+ if (!name->used)
+ {
+ memcpy(xkb->names->keys[i].name, name->name,
+ XkbKeyNameLength);
+ name->used = True;
+ }
+ else
+ {
+ if (warningLevel > 2)
+ {
+ WARN1
+ ("Several keys match pattern for %s\n",
+ XkbKeyNameText(name->name, XkbMessage));
+ ACTION2("Using <U%03d> for key %d\n",
+ nUnknown, i);
+ }
+ snprintf(tmpname, sizeof(tmpname), "U%03d",
+ nUnknown++);
+ memcpy(xkb->names->keys[i].name, tmpname,
+ XkbKeyNameLength);
+ }
+ break;
+ }
+ }
+ if (xkb->names->keys[i].name[0] == '\0')
+ {
+ if (warningLevel > 2)
+ {
+ WARN1("Key %d does not match any defaults\n", i);
+ ACTION1("Using name <U%03d>\n", nUnknown);
+ snprintf(tmpname, sizeof(tmpname), "U%03d", nUnknown++);
+ memcpy(xkb->names->keys[i].name, tmpname,
+ XkbKeyNameLength);
+ }
+ }
+ }
+ }
+ return Success;
+}
+
+/**
+ * Find the key with the given name and return its keycode in kc_rtrn.
+ *
+ * @param name The 4-letter name of the key as a long.
+ * @param kc_rtrn Set to the keycode if the key was found, otherwise 0.
+ * @param use_aliases True if the key aliases should be searched too.
+ * @param create If True and the key is not found, it is added to the
+ * xkb->names at the first free keycode.
+ * @param start_from Keycode to start searching from.
+ *
+ * @return True if found, False otherwise.
+ */
+Bool
+FindNamedKey(XkbDescPtr xkb,
+ unsigned long name,
+ unsigned int *kc_rtrn,
+ Bool use_aliases, Bool create, int start_from)
+{
+ register unsigned n;
+
+ if (start_from < xkb->min_key_code)
+ {
+ start_from = xkb->min_key_code;
+ }
+ else if (start_from > xkb->max_key_code)
+ {
+ return False;
+ }
+
+ *kc_rtrn = 0; /* some callers rely on this */
+ if (xkb && xkb->names && xkb->names->keys)
+ {
+ for (n = start_from; n <= xkb->max_key_code; n++)
+ {
+ unsigned long tmp;
+ tmp = KeyNameToLong(xkb->names->keys[n].name);
+ if (tmp == name)
+ {
+ *kc_rtrn = n;
+ return True;
+ }
+ }
+ if (use_aliases)
+ {
+ unsigned long new_name;
+ if (FindKeyNameForAlias(xkb, name, &new_name))
+ return FindNamedKey(xkb, new_name, kc_rtrn, False, create, 0);
+ }
+ }
+ if (create)
+ {
+ if ((!xkb->names) || (!xkb->names->keys))
+ {
+ if (xkb->min_key_code < XkbMinLegalKeyCode)
+ {
+ xkb->min_key_code = XkbMinLegalKeyCode;
+ xkb->max_key_code = XkbMaxLegalKeyCode;
+ }
+ if (XkbAllocNames(xkb, XkbKeyNamesMask, 0, 0) != Success)
+ {
+ if (warningLevel > 0)
+ {
+ WARN("Couldn't allocate key names in FindNamedKey\n");
+ ACTION1("Key \"%s\" not automatically created\n",
+ longText(name, XkbMessage));
+ }
+ return False;
+ }
+ }
+ /* Find first unused keycode and store our key here */
+ for (n = xkb->min_key_code; n <= xkb->max_key_code; n++)
+ {
+ if (xkb->names->keys[n].name[0] == '\0')
+ {
+ char buf[XkbKeyNameLength + 1];
+ LongToKeyName(name, buf);
+ memcpy(xkb->names->keys[n].name, buf, XkbKeyNameLength);
+ *kc_rtrn = n;
+ return True;
+ }
+ }
+ }
+ return False;
+}
+
+Bool
+FindKeyNameForAlias(XkbDescPtr xkb, unsigned long lname,
+ unsigned long *real_name)
+{
+ register int i;
+ char name[XkbKeyNameLength + 1];
+
+ if (xkb && xkb->geom && xkb->geom->key_aliases)
+ {
+ XkbKeyAliasPtr a;
+ a = xkb->geom->key_aliases;
+ LongToKeyName(lname, name);
+ name[XkbKeyNameLength] = '\0';
+ for (i = 0; i < xkb->geom->num_key_aliases; i++, a++)
+ {
+ if (strncmp(name, a->alias, XkbKeyNameLength) == 0)
+ {
+ *real_name = KeyNameToLong(a->real);
+ return True;
+ }
+ }
+ }
+ if (xkb && xkb->names && xkb->names->key_aliases)
+ {
+ XkbKeyAliasPtr a;
+ a = xkb->names->key_aliases;
+ LongToKeyName(lname, name);
+ name[XkbKeyNameLength] = '\0';
+ for (i = 0; i < xkb->names->num_key_aliases; i++, a++)
+ {
+ if (strncmp(name, a->alias, XkbKeyNameLength) == 0)
+ {
+ *real_name = KeyNameToLong(a->real);
+ return True;
+ }
+ }
+ }
+ return False;
+}
diff --git a/xkbcomp/misc.h b/xkbcomp/misc.h
index f6c489255..4fa4b6dde 100644
--- a/xkbcomp/misc.h
+++ b/xkbcomp/misc.h
@@ -1,111 +1,111 @@
-/************************************************************
- Copyright (c) 1994 by Silicon Graphics Computer Systems, Inc.
-
- Permission to use, copy, modify, and distribute this
- software and its documentation for any purpose and without
- fee is hereby granted, provided that the above copyright
- notice appear in all copies and that both that copyright
- notice and this permission notice appear in supporting
- documentation, and that the name of Silicon Graphics not be
- used in advertising or publicity pertaining to distribution
- of the software without specific prior written permission.
- Silicon Graphics makes no representation about the suitability
- of this software for any purpose. It is provided "as is"
- without any express or implied warranty.
-
- SILICON GRAPHICS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS
- SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
- AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON
- GRAPHICS BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL
- DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
- DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
- OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH
- THE USE OR PERFORMANCE OF THIS SOFTWARE.
-
- ********************************************************/
-
-#ifndef MISC_H
-#define MISC_H 1
-
-typedef struct _CommonInfo
-{
- unsigned short defined;
- unsigned char fileID;
- unsigned char merge;
- struct _CommonInfo *next;
-} CommonInfo;
-
-extern Bool UseNewField(unsigned /* field */ ,
- CommonInfo * /* oldDefs */ ,
- CommonInfo * /* newDefs */ ,
- unsigned * /* pCollide */
- );
-
-extern Bool MergeNewField(unsigned /* field */ ,
- CommonInfo * /* oldDefs */ ,
- CommonInfo * /* newDefs */ ,
- unsigned * /* pCollide */
- );
-
-extern XPointer ClearCommonInfo(CommonInfo * /* cmn */
- );
-
-extern XPointer AddCommonInfo(CommonInfo * /* old */ ,
- CommonInfo * /* new */
- );
-
-extern int ReportNotArray(const char * /* type */ ,
- const char * /* field */ ,
- const char * /* name */
- );
-
-extern int ReportShouldBeArray(const char * /* type */ ,
- const char * /* field */ ,
- char * /* name */
- );
-
-extern int ReportBadType(const char * /* type */ ,
- const char * /* field */ ,
- const char * /* name */ ,
- const char * /* wanted */
- );
-
-extern int ReportBadIndexType(char * /* type */ ,
- char * /* field */ ,
- char * /* name */ ,
- char * /* wanted */
- );
-
-extern int ReportBadField(const char * /* type */ ,
- const char * /* field */ ,
- const char * /* name */
- );
-
-extern int ReportMultipleDefs(char * /* type */ ,
- char * /* field */ ,
- char * /* which */
- );
-
-extern Bool ProcessIncludeFile(IncludeStmt * /* stmt */ ,
- unsigned /* file_type */ ,
- XkbFile ** /* file_rtrn */ ,
- unsigned * /* merge_rtrn */
- );
-
-extern Status ComputeKbdDefaults(XkbDescPtr /* xkb */
- );
-
-extern Bool FindNamedKey(XkbDescPtr /* xkb */ ,
- unsigned long /* name */ ,
- unsigned int * /* kc_rtrn */ ,
- Bool /* use_aliases */ ,
- Bool /* create */ ,
- int /* start_from */
- );
-
-extern Bool FindKeyNameForAlias(XkbDescPtr /* xkb */ ,
- unsigned long /* lname */ ,
- unsigned long * /* real_name */
- );
-
-#endif /* MISC_H */
+/************************************************************
+ Copyright (c) 1994 by Silicon Graphics Computer Systems, Inc.
+
+ Permission to use, copy, modify, and distribute this
+ software and its documentation for any purpose and without
+ fee is hereby granted, provided that the above copyright
+ notice appear in all copies and that both that copyright
+ notice and this permission notice appear in supporting
+ documentation, and that the name of Silicon Graphics not be
+ used in advertising or publicity pertaining to distribution
+ of the software without specific prior written permission.
+ Silicon Graphics makes no representation about the suitability
+ of this software for any purpose. It is provided "as is"
+ without any express or implied warranty.
+
+ SILICON GRAPHICS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS
+ SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
+ AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON
+ GRAPHICS BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL
+ DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
+ DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
+ OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH
+ THE USE OR PERFORMANCE OF THIS SOFTWARE.
+
+ ********************************************************/
+
+#ifndef MISC_H
+#define MISC_H 1
+
+typedef struct _CommonInfo
+{
+ unsigned short defined;
+ unsigned char fileID;
+ unsigned char merge;
+ struct _CommonInfo *next;
+} CommonInfo;
+
+extern Bool UseNewField(unsigned /* field */ ,
+ CommonInfo * /* oldDefs */ ,
+ CommonInfo * /* newDefs */ ,
+ unsigned * /* pCollide */
+ );
+
+extern Bool MergeNewField(unsigned /* field */ ,
+ CommonInfo * /* oldDefs */ ,
+ CommonInfo * /* newDefs */ ,
+ unsigned * /* pCollide */
+ );
+
+extern XPointer ClearCommonInfo(CommonInfo * /* cmn */
+ );
+
+extern XPointer AddCommonInfo(CommonInfo * /* old */ ,
+ CommonInfo * /* new */
+ );
+
+extern int ReportNotArray(const char * /* type */ ,
+ const char * /* field */ ,
+ const char * /* name */
+ );
+
+extern int ReportShouldBeArray(const char * /* type */ ,
+ const char * /* field */ ,
+ char * /* name */
+ );
+
+extern int ReportBadType(const char * /* type */ ,
+ const char * /* field */ ,
+ const char * /* name */ ,
+ const char * /* wanted */
+ );
+
+extern int ReportBadIndexType(char * /* type */ ,
+ char * /* field */ ,
+ char * /* name */ ,
+ char * /* wanted */
+ );
+
+extern int ReportBadField(const char * /* type */ ,
+ const char * /* field */ ,
+ const char * /* name */
+ );
+
+extern int ReportMultipleDefs(char * /* type */ ,
+ char * /* field */ ,
+ char * /* which */
+ );
+
+extern Bool ProcessIncludeFile(IncludeStmt * /* stmt */ ,
+ unsigned /* file_type */ ,
+ XkbFile ** /* file_rtrn */ ,
+ unsigned * /* merge_rtrn */
+ );
+
+extern Status ComputeKbdDefaults(XkbDescPtr /* xkb */
+ );
+
+extern Bool FindNamedKey(XkbDescPtr /* xkb */ ,
+ unsigned long /* name */ ,
+ unsigned int * /* kc_rtrn */ ,
+ Bool /* use_aliases */ ,
+ Bool /* create */ ,
+ int /* start_from */
+ );
+
+extern Bool FindKeyNameForAlias(XkbDescPtr /* xkb */ ,
+ unsigned long /* lname */ ,
+ unsigned long * /* real_name */
+ );
+
+#endif /* MISC_H */
diff --git a/xkbcomp/tokens.h b/xkbcomp/tokens.h
index 54d4d149b..970f3d4de 100644
--- a/xkbcomp/tokens.h
+++ b/xkbcomp/tokens.h
@@ -1,104 +1,104 @@
-/************************************************************
- Copyright (c) 1994 by Silicon Graphics Computer Systems, Inc.
-
- Permission to use, copy, modify, and distribute this
- software and its documentation for any purpose and without
- fee is hereby granted, provided that the above copyright
- notice appear in all copies and that both that copyright
- notice and this permission notice appear in supporting
- documentation, and that the name of Silicon Graphics not be
- used in advertising or publicity pertaining to distribution
- of the software without specific prior written permission.
- Silicon Graphics makes no representation about the suitability
- of this software for any purpose. It is provided "as is"
- without any express or implied warranty.
-
- SILICON GRAPHICS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS
- SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
- AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON
- GRAPHICS BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL
- DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
- DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
- OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH
- THE USE OR PERFORMANCE OF THIS SOFTWARE.
-
- ********************************************************/
-#ifndef TOKENS_H
-#define TOKENS_H 1
-
-#define END_OF_FILE 0
-#define ERROR_TOK 255
-
-#define XKB_KEYMAP 1
-#define XKB_KEYCODES 2
-#define XKB_TYPES 3
-#define XKB_SYMBOLS 4
-#define XKB_COMPATMAP 5
-#define XKB_GEOMETRY 6
-#define XKB_SEMANTICS 7
-#define XKB_LAYOUT 8
-
-#define INCLUDE 10
-#define OVERRIDE 11
-#define AUGMENT 12
-#define REPLACE 13
-#define ALTERNATE 14
-
-#define VIRTUAL_MODS 20
-#define TYPE 21
-#define INTERPRET 22
-#define ACTION_TOK 23
-#define KEY 24
-#define ALIAS 25
-#define GROUP 26
-#define MODIFIER_MAP 27
-#define INDICATOR 28
-#define SHAPE 29
-#define KEYS 30
-#define ROW 31
-#define SECTION 32
-#define OVERLAY 33
-#define TEXT 34
-#define OUTLINE 35
-#define SOLID 36
-#define LOGO 37
-#define VIRTUAL 38
-
-#define EQUALS 40
-#define PLUS 41
-#define MINUS 42
-#define DIVIDE 43
-#define TIMES 44
-#define OBRACE 45
-#define CBRACE 46
-#define OPAREN 47
-#define CPAREN 48
-#define OBRACKET 49
-#define CBRACKET 50
-#define DOT 51
-#define COMMA 52
-#define SEMI 53
-#define EXCLAM 54
-#define INVERT 55
-
-#define STRING 60
-#define INTEGER 61
-#define FLOAT 62
-#define IDENT 63
-#define KEYNAME 64
-
-#define PARTIAL 70
-#define DEFAULT 71
-#define HIDDEN 72
-#define ALPHANUMERIC_KEYS 73
-#define MODIFIER_KEYS 74
-#define KEYPAD_KEYS 75
-#define FUNCTION_KEYS 76
-#define ALTERNATE_GROUP 77
-
-extern Atom tok_ONE_LEVEL;
-extern Atom tok_TWO_LEVEL;
-extern Atom tok_ALPHABETIC;
-extern Atom tok_KEYPAD;
-
-#endif
+/************************************************************
+ Copyright (c) 1994 by Silicon Graphics Computer Systems, Inc.
+
+ Permission to use, copy, modify, and distribute this
+ software and its documentation for any purpose and without
+ fee is hereby granted, provided that the above copyright
+ notice appear in all copies and that both that copyright
+ notice and this permission notice appear in supporting
+ documentation, and that the name of Silicon Graphics not be
+ used in advertising or publicity pertaining to distribution
+ of the software without specific prior written permission.
+ Silicon Graphics makes no representation about the suitability
+ of this software for any purpose. It is provided "as is"
+ without any express or implied warranty.
+
+ SILICON GRAPHICS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS
+ SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
+ AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON
+ GRAPHICS BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL
+ DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
+ DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
+ OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH
+ THE USE OR PERFORMANCE OF THIS SOFTWARE.
+
+ ********************************************************/
+#ifndef TOKENS_H
+#define TOKENS_H 1
+
+#define END_OF_FILE 0
+#define ERROR_TOK 255
+
+#define XKB_KEYMAP 1
+#define XKB_KEYCODES 2
+#define XKB_TYPES 3
+#define XKB_SYMBOLS 4
+#define XKB_COMPATMAP 5
+#define XKB_GEOMETRY 6
+#define XKB_SEMANTICS 7
+#define XKB_LAYOUT 8
+
+#define INCLUDE 10
+#define OVERRIDE 11
+#define AUGMENT 12
+#define REPLACE 13
+#define ALTERNATE 14
+
+#define VIRTUAL_MODS 20
+#define TYPE 21
+#define INTERPRET 22
+#define ACTION_TOK 23
+#define KEY 24
+#define ALIAS 25
+#define GROUP 26
+#define MODIFIER_MAP 27
+#define INDICATOR 28
+#define SHAPE 29
+#define KEYS 30
+#define ROW 31
+#define SECTION 32
+#define OVERLAY 33
+#define TEXT 34
+#define OUTLINE 35
+#define SOLID 36
+#define LOGO 37
+#define VIRTUAL 38
+
+#define EQUALS 40
+#define PLUS 41
+#define MINUS 42
+#define DIVIDE 43
+#define TIMES 44
+#define OBRACE 45
+#define CBRACE 46
+#define OPAREN 47
+#define CPAREN 48
+#define OBRACKET 49
+#define CBRACKET 50
+#define DOT 51
+#define COMMA 52
+#define SEMI 53
+#define EXCLAM 54
+#define INVERT 55
+
+#define STRING 60
+#define INTEGER 61
+#define FLOAT 62
+#define IDENT 63
+#define KEYNAME 64
+
+#define PARTIAL 70
+#define DEFAULT 71
+#define HIDDEN 72
+#define ALPHANUMERIC_KEYS 73
+#define MODIFIER_KEYS 74
+#define KEYPAD_KEYS 75
+#define FUNCTION_KEYS 76
+#define ALTERNATE_GROUP 77
+
+extern Atom tok_ONE_LEVEL;
+extern Atom tok_TWO_LEVEL;
+extern Atom tok_ALPHABETIC;
+extern Atom tok_KEYPAD;
+
+#endif
diff --git a/xkbcomp/utils.c b/xkbcomp/utils.c
index cabe9e2b0..55efbe11f 100644
--- a/xkbcomp/utils.c
+++ b/xkbcomp/utils.c
@@ -1,434 +1,434 @@
-
- /*\
- *
- * COPYRIGHT 1990
- * DIGITAL EQUIPMENT CORPORATION
- * MAYNARD, MASSACHUSETTS
- * ALL RIGHTS RESERVED.
- *
- * THE INFORMATION IN THIS SOFTWARE IS SUBJECT TO CHANGE WITHOUT NOTICE AND
- * SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT CORPORATION.
- * DIGITAL MAKES NO REPRESENTATIONS ABOUT THE SUITABILITY OF THIS SOFTWARE
- * FOR ANY PURPOSE. IT IS SUPPLIED "AS IS" WITHOUT EXPRESS OR IMPLIED
- * WARRANTY.
- *
- * IF THE SOFTWARE IS MODIFIED IN A MANNER CREATING DERIVATIVE COPYRIGHT
- * RIGHTS, APPROPRIATE LEGENDS MAY BE PLACED ON THE DERIVATIVE WORK IN
- * ADDITION TO THAT SET FORTH ABOVE.
- *
- * Permission to use, copy, modify, and distribute this software and its
- * documentation for any purpose and without fee is hereby granted, provided
- * that the above copyright notice appear in all copies and that both that
- * copyright notice and this permission notice appear in supporting
- * documentation, and that the name of Digital Equipment Corporation not be
- * used in advertising or publicity pertaining to distribution of the
- * software without specific, written prior permission.
- \*/
-
-#include "utils.h"
-#include <ctype.h>
-#include <stdlib.h>
-#include <stdarg.h>
-
-/***====================================================================***/
-
-Opaque
-uAlloc(unsigned size)
-{
- return ((Opaque) malloc(size));
-}
-
-/***====================================================================***/
-
-Opaque
-uCalloc(unsigned n, unsigned size)
-{
- return ((Opaque) calloc(n, size));
-}
-
-/***====================================================================***/
-
-Opaque
-uRealloc(Opaque old, unsigned newSize)
-{
- if (old == NULL)
- return ((Opaque) malloc(newSize));
- else
- return ((Opaque) realloc((char *) old, newSize));
-}
-
-/***====================================================================***/
-
-Opaque
-uRecalloc(Opaque old, unsigned nOld, unsigned nNew, unsigned itemSize)
-{
- char *rtrn;
-
- if (old == NULL)
- rtrn = (char *) calloc(nNew, itemSize);
- else
- {
- rtrn = (char *) realloc((char *) old, nNew * itemSize);
- if ((rtrn) && (nNew > nOld))
- {
- bzero(&rtrn[nOld * itemSize], (nNew - nOld) * itemSize);
- }
- }
- return (Opaque) rtrn;
-}
-
-/***====================================================================***/
-
-void
-uFree(Opaque ptr)
-{
- if (ptr != (Opaque) NULL)
- free((char *) ptr);
- return;
-}
-
-/***====================================================================***/
-/*** FUNCTION ENTRY TRACKING ***/
-/***====================================================================***/
-
-static FILE *entryFile = NULL;
-int uEntryLevel;
-
-Boolean
-uSetEntryFile(char *name)
-{
- if ((entryFile != NULL) && (entryFile != stderr))
- {
- fprintf(entryFile, "switching to %s\n", name ? name : "stderr");
- fclose(entryFile);
- }
- if (name != NullString)
- entryFile = fopen(name, "w");
- else
- entryFile = stderr;
- if (entryFile == NULL)
- {
- entryFile = stderr;
- return (False);
- }
- return (True);
-}
-
-void
-uEntry(int l, char *s, ...)
-{
- int i;
- va_list args;
-
- for (i = 0; i < uEntryLevel; i++)
- {
- putc(' ', entryFile);
- }
- va_start(args, s);
- vfprintf(entryFile, s, args);
- va_end(args);
- uEntryLevel += l;
-}
-
-void
-uExit(int l, char *rtVal)
-{
- int i;
-
- uEntryLevel -= l;
- if (uEntryLevel < 0)
- uEntryLevel = 0;
- for (i = 0; i < uEntryLevel; i++)
- {
- putc(' ', entryFile);
- }
- fprintf(entryFile, "---> %p\n", rtVal);
- return;
-}
-
-/***====================================================================***/
-/*** PRINT FUNCTIONS ***/
-/***====================================================================***/
-
-FILE *uDebugFile = NULL;
-int uDebugIndentLevel = 0;
-int uDebugIndentSize = 4;
-
-Boolean
-uSetDebugFile(char *name)
-{
- if ((uDebugFile != NULL) && (uDebugFile != stderr))
- {
- fprintf(uDebugFile, "switching to %s\n", name ? name : "stderr");
- fclose(uDebugFile);
- }
- if (name != NullString)
- uDebugFile = fopen(name, "w");
- else
- uDebugFile = stderr;
- if (uDebugFile == NULL)
- {
- uDebugFile = stderr;
- return (False);
- }
- return (True);
-}
-
-void
-uDebug(char *s, ...)
-{
- int i;
- va_list args;
-
- for (i = (uDebugIndentLevel * uDebugIndentSize); i > 0; i--)
- {
- putc(' ', uDebugFile);
- }
- va_start(args, s);
- vfprintf(uDebugFile, s, args);
- va_end(args);
- fflush(uDebugFile);
-}
-
-void
-uDebugNOI(char *s, ...)
-{
- va_list args;
-
- va_start(args, s);
- vfprintf(uDebugFile, s, args);
- va_end(args);
- fflush(uDebugFile);
-}
-
-/***====================================================================***/
-
-static FILE *errorFile = NULL;
-static int outCount = 0;
-static char *preMsg = NULL;
-static char *postMsg = NULL;
-static char *prefix = NULL;
-
-Boolean
-uSetErrorFile(char *name)
-{
- if ((errorFile != NULL) && (errorFile != stderr))
- {
- fprintf(errorFile, "switching to %s\n", name ? name : "stderr");
- fclose(errorFile);
- }
- if (name != NullString)
- errorFile = fopen(name, "w");
- else
- errorFile = stderr;
- if (errorFile == NULL)
- {
- errorFile = stderr;
- return (False);
- }
- return (True);
-}
-
-void
-uInformation(const char *s, ...)
-{
- va_list args;
-
- va_start(args, s);
- vfprintf(errorFile, s, args);
- va_end(args);
- fflush(errorFile);
-}
-
-/***====================================================================***/
-
-void
-uAction(const char *s, ...)
-{
- va_list args;
-
- if (prefix != NULL)
- fprintf(errorFile, "%s", prefix);
- fprintf(errorFile, " ");
- va_start(args, s);
- vfprintf(errorFile, s, args);
- va_end(args);
- fflush(errorFile);
-}
-
-/***====================================================================***/
-
-void
-uWarning(const char *s, ...)
-{
- va_list args;
-
- if ((outCount == 0) && (preMsg != NULL))
- fprintf(errorFile, "%s\n", preMsg);
- if (prefix != NULL)
- fprintf(errorFile, "%s", prefix);
- fprintf(errorFile, "Warning: ");
- va_start(args, s);
- vfprintf(errorFile, s, args);
- va_end(args);
- fflush(errorFile);
- outCount++;
-}
-
-/***====================================================================***/
-
-void
-uError(const char *s, ...)
-{
- va_list args;
-
- if ((outCount == 0) && (preMsg != NULL))
- fprintf(errorFile, "%s\n", preMsg);
- if (prefix != NULL)
- fprintf(errorFile, "%s", prefix);
- fprintf(errorFile, "Error: ");
- va_start(args, s);
- vfprintf(errorFile, s, args);
- va_end(args);
- fflush(errorFile);
- outCount++;
-}
-
-/***====================================================================***/
-
-void
-uFatalError(const char *s, ...)
-{
- va_list args;
-
- if ((outCount == 0) && (preMsg != NULL))
- fprintf(errorFile, "%s\n", preMsg);
- if (prefix != NULL)
- fprintf(errorFile, "%s", prefix);
- fprintf(errorFile, "Fatal Error: ");
- va_start(args, s);
- vfprintf(errorFile, s, args);
- va_end(args);
- fprintf(errorFile, " Exiting\n");
- fflush(errorFile);
- outCount++;
- exit(1);
- /* NOTREACHED */
-}
-
-/***====================================================================***/
-
-void
-uInternalError(const char *s, ...)
-{
- va_list args;
-
- if ((outCount == 0) && (preMsg != NULL))
- fprintf(errorFile, "%s\n", preMsg);
- if (prefix != NULL)
- fprintf(errorFile, "%s", prefix);
- fprintf(errorFile, "Internal error: ");
- va_start(args, s);
- vfprintf(errorFile, s, args);
- va_end(args);
- fflush(errorFile);
- outCount++;
-}
-
-void
-uSetPreErrorMessage(char *msg)
-{
- outCount = 0;
- preMsg = msg;
- return;
-}
-
-void
-uSetPostErrorMessage(char *msg)
-{
- postMsg = msg;
- return;
-}
-
-void
-uSetErrorPrefix(char *pre)
-{
- prefix = pre;
- return;
-}
-
-void
-uFinishUp(void)
-{
- if ((outCount > 0) && (postMsg != NULL))
- fprintf(errorFile, "%s\n", postMsg);
- return;
-}
-
-/***====================================================================***/
-
-#ifndef HAVE_STRDUP
-char *
-uStringDup(const char *str)
-{
- char *rtrn;
-
- if (str == NULL)
- return NULL;
- rtrn = (char *) uAlloc(strlen(str) + 1);
- strcpy(rtrn, str);
- return rtrn;
-}
-#endif
-
-#ifndef HAVE_STRCASECMP
-int
-uStrCaseCmp(const char *str1, const char *str2)
-{
- char buf1[512], buf2[512];
- char c, *s;
- register int n;
-
- for (n = 0, s = buf1; (c = *str1++); n++)
- {
- if (isupper(c))
- c = tolower(c);
- if (n > 510)
- break;
- *s++ = c;
- }
- *s = '\0';
- for (n = 0, s = buf2; (c = *str2++); n++)
- {
- if (isupper(c))
- c = tolower(c);
- if (n > 510)
- break;
- *s++ = c;
- }
- *s = '\0';
- return (strcmp(buf1, buf2));
-}
-
-int
-uStrCasePrefix(const char *my_prefix, char *str)
-{
- char c1;
- char c2;
- while (((c1 = *my_prefix) != '\0') && ((c2 = *str) != '\0'))
- {
- if (isupper(c1))
- c1 = tolower(c1);
- if (isupper(c2))
- c2 = tolower(c2);
- if (c1 != c2)
- return 0;
- my_prefix++;
- str++;
- }
- if (c1 != '\0')
- return 0;
- return 1;
-}
-
-#endif
+
+ /*\
+ *
+ * COPYRIGHT 1990
+ * DIGITAL EQUIPMENT CORPORATION
+ * MAYNARD, MASSACHUSETTS
+ * ALL RIGHTS RESERVED.
+ *
+ * THE INFORMATION IN THIS SOFTWARE IS SUBJECT TO CHANGE WITHOUT NOTICE AND
+ * SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT CORPORATION.
+ * DIGITAL MAKES NO REPRESENTATIONS ABOUT THE SUITABILITY OF THIS SOFTWARE
+ * FOR ANY PURPOSE. IT IS SUPPLIED "AS IS" WITHOUT EXPRESS OR IMPLIED
+ * WARRANTY.
+ *
+ * IF THE SOFTWARE IS MODIFIED IN A MANNER CREATING DERIVATIVE COPYRIGHT
+ * RIGHTS, APPROPRIATE LEGENDS MAY BE PLACED ON THE DERIVATIVE WORK IN
+ * ADDITION TO THAT SET FORTH ABOVE.
+ *
+ * Permission to use, copy, modify, and distribute this software and its
+ * documentation for any purpose and without fee is hereby granted, provided
+ * that the above copyright notice appear in all copies and that both that
+ * copyright notice and this permission notice appear in supporting
+ * documentation, and that the name of Digital Equipment Corporation not be
+ * used in advertising or publicity pertaining to distribution of the
+ * software without specific, written prior permission.
+ \*/
+
+#include "utils.h"
+#include <ctype.h>
+#include <stdlib.h>
+#include <stdarg.h>
+
+/***====================================================================***/
+
+Opaque
+uAlloc(unsigned size)
+{
+ return ((Opaque) malloc(size));
+}
+
+/***====================================================================***/
+
+Opaque
+uCalloc(unsigned n, unsigned size)
+{
+ return ((Opaque) calloc(n, size));
+}
+
+/***====================================================================***/
+
+Opaque
+uRealloc(Opaque old, unsigned newSize)
+{
+ if (old == NULL)
+ return ((Opaque) malloc(newSize));
+ else
+ return ((Opaque) realloc((char *) old, newSize));
+}
+
+/***====================================================================***/
+
+Opaque
+uRecalloc(Opaque old, unsigned nOld, unsigned nNew, unsigned itemSize)
+{
+ char *rtrn;
+
+ if (old == NULL)
+ rtrn = (char *) calloc(nNew, itemSize);
+ else
+ {
+ rtrn = (char *) realloc((char *) old, nNew * itemSize);
+ if ((rtrn) && (nNew > nOld))
+ {
+ bzero(&rtrn[nOld * itemSize], (nNew - nOld) * itemSize);
+ }
+ }
+ return (Opaque) rtrn;
+}
+
+/***====================================================================***/
+
+void
+uFree(Opaque ptr)
+{
+ if (ptr != (Opaque) NULL)
+ free((char *) ptr);
+ return;
+}
+
+/***====================================================================***/
+/*** FUNCTION ENTRY TRACKING ***/
+/***====================================================================***/
+
+static FILE *entryFile = NULL;
+int uEntryLevel;
+
+Boolean
+uSetEntryFile(char *name)
+{
+ if ((entryFile != NULL) && (entryFile != stderr))
+ {
+ fprintf(entryFile, "switching to %s\n", name ? name : "stderr");
+ fclose(entryFile);
+ }
+ if (name != NullString)
+ entryFile = fopen(name, "w");
+ else
+ entryFile = stderr;
+ if (entryFile == NULL)
+ {
+ entryFile = stderr;
+ return (False);
+ }
+ return (True);
+}
+
+void
+uEntry(int l, char *s, ...)
+{
+ int i;
+ va_list args;
+
+ for (i = 0; i < uEntryLevel; i++)
+ {
+ putc(' ', entryFile);
+ }
+ va_start(args, s);
+ vfprintf(entryFile, s, args);
+ va_end(args);
+ uEntryLevel += l;
+}
+
+void
+uExit(int l, char *rtVal)
+{
+ int i;
+
+ uEntryLevel -= l;
+ if (uEntryLevel < 0)
+ uEntryLevel = 0;
+ for (i = 0; i < uEntryLevel; i++)
+ {
+ putc(' ', entryFile);
+ }
+ fprintf(entryFile, "---> %p\n", rtVal);
+ return;
+}
+
+/***====================================================================***/
+/*** PRINT FUNCTIONS ***/
+/***====================================================================***/
+
+FILE *uDebugFile = NULL;
+int uDebugIndentLevel = 0;
+int uDebugIndentSize = 4;
+
+Boolean
+uSetDebugFile(char *name)
+{
+ if ((uDebugFile != NULL) && (uDebugFile != stderr))
+ {
+ fprintf(uDebugFile, "switching to %s\n", name ? name : "stderr");
+ fclose(uDebugFile);
+ }
+ if (name != NullString)
+ uDebugFile = fopen(name, "w");
+ else
+ uDebugFile = stderr;
+ if (uDebugFile == NULL)
+ {
+ uDebugFile = stderr;
+ return (False);
+ }
+ return (True);
+}
+
+void
+uDebug(char *s, ...)
+{
+ int i;
+ va_list args;
+
+ for (i = (uDebugIndentLevel * uDebugIndentSize); i > 0; i--)
+ {
+ putc(' ', uDebugFile);
+ }
+ va_start(args, s);
+ vfprintf(uDebugFile, s, args);
+ va_end(args);
+ fflush(uDebugFile);
+}
+
+void
+uDebugNOI(char *s, ...)
+{
+ va_list args;
+
+ va_start(args, s);
+ vfprintf(uDebugFile, s, args);
+ va_end(args);
+ fflush(uDebugFile);
+}
+
+/***====================================================================***/
+
+static FILE *errorFile = NULL;
+static int outCount = 0;
+static char *preMsg = NULL;
+static char *postMsg = NULL;
+static char *prefix = NULL;
+
+Boolean
+uSetErrorFile(char *name)
+{
+ if ((errorFile != NULL) && (errorFile != stderr))
+ {
+ fprintf(errorFile, "switching to %s\n", name ? name : "stderr");
+ fclose(errorFile);
+ }
+ if (name != NullString)
+ errorFile = fopen(name, "w");
+ else
+ errorFile = stderr;
+ if (errorFile == NULL)
+ {
+ errorFile = stderr;
+ return (False);
+ }
+ return (True);
+}
+
+void
+uInformation(const char *s, ...)
+{
+ va_list args;
+
+ va_start(args, s);
+ vfprintf(errorFile, s, args);
+ va_end(args);
+ fflush(errorFile);
+}
+
+/***====================================================================***/
+
+void
+uAction(const char *s, ...)
+{
+ va_list args;
+
+ if (prefix != NULL)
+ fprintf(errorFile, "%s", prefix);
+ fprintf(errorFile, " ");
+ va_start(args, s);
+ vfprintf(errorFile, s, args);
+ va_end(args);
+ fflush(errorFile);
+}
+
+/***====================================================================***/
+
+void
+uWarning(const char *s, ...)
+{
+ va_list args;
+
+ if ((outCount == 0) && (preMsg != NULL))
+ fprintf(errorFile, "%s\n", preMsg);
+ if (prefix != NULL)
+ fprintf(errorFile, "%s", prefix);
+ fprintf(errorFile, "Warning: ");
+ va_start(args, s);
+ vfprintf(errorFile, s, args);
+ va_end(args);
+ fflush(errorFile);
+ outCount++;
+}
+
+/***====================================================================***/
+
+void
+uError(const char *s, ...)
+{
+ va_list args;
+
+ if ((outCount == 0) && (preMsg != NULL))
+ fprintf(errorFile, "%s\n", preMsg);
+ if (prefix != NULL)
+ fprintf(errorFile, "%s", prefix);
+ fprintf(errorFile, "Error: ");
+ va_start(args, s);
+ vfprintf(errorFile, s, args);
+ va_end(args);
+ fflush(errorFile);
+ outCount++;
+}
+
+/***====================================================================***/
+
+void
+uFatalError(const char *s, ...)
+{
+ va_list args;
+
+ if ((outCount == 0) && (preMsg != NULL))
+ fprintf(errorFile, "%s\n", preMsg);
+ if (prefix != NULL)
+ fprintf(errorFile, "%s", prefix);
+ fprintf(errorFile, "Fatal Error: ");
+ va_start(args, s);
+ vfprintf(errorFile, s, args);
+ va_end(args);
+ fprintf(errorFile, " Exiting\n");
+ fflush(errorFile);
+ outCount++;
+ exit(1);
+ /* NOTREACHED */
+}
+
+/***====================================================================***/
+
+void
+uInternalError(const char *s, ...)
+{
+ va_list args;
+
+ if ((outCount == 0) && (preMsg != NULL))
+ fprintf(errorFile, "%s\n", preMsg);
+ if (prefix != NULL)
+ fprintf(errorFile, "%s", prefix);
+ fprintf(errorFile, "Internal error: ");
+ va_start(args, s);
+ vfprintf(errorFile, s, args);
+ va_end(args);
+ fflush(errorFile);
+ outCount++;
+}
+
+void
+uSetPreErrorMessage(char *msg)
+{
+ outCount = 0;
+ preMsg = msg;
+ return;
+}
+
+void
+uSetPostErrorMessage(char *msg)
+{
+ postMsg = msg;
+ return;
+}
+
+void
+uSetErrorPrefix(char *pre)
+{
+ prefix = pre;
+ return;
+}
+
+void
+uFinishUp(void)
+{
+ if ((outCount > 0) && (postMsg != NULL))
+ fprintf(errorFile, "%s\n", postMsg);
+ return;
+}
+
+/***====================================================================***/
+
+#ifndef HAVE_STRDUP
+char *
+uStringDup(const char *str)
+{
+ char *rtrn;
+
+ if (str == NULL)
+ return NULL;
+ rtrn = (char *) uAlloc(strlen(str) + 1);
+ strcpy(rtrn, str);
+ return rtrn;
+}
+#endif
+
+#ifndef HAVE_STRCASECMP
+int
+uStrCaseCmp(const char *str1, const char *str2)
+{
+ char buf1[512], buf2[512];
+ char c, *s;
+ register int n;
+
+ for (n = 0, s = buf1; (c = *str1++); n++)
+ {
+ if (isupper(c))
+ c = tolower(c);
+ if (n > 510)
+ break;
+ *s++ = c;
+ }
+ *s = '\0';
+ for (n = 0, s = buf2; (c = *str2++); n++)
+ {
+ if (isupper(c))
+ c = tolower(c);
+ if (n > 510)
+ break;
+ *s++ = c;
+ }
+ *s = '\0';
+ return (strcmp(buf1, buf2));
+}
+
+int
+uStrCasePrefix(const char *my_prefix, char *str)
+{
+ char c1;
+ char c2;
+ while (((c1 = *my_prefix) != '\0') && ((c2 = *str) != '\0'))
+ {
+ if (isupper(c1))
+ c1 = tolower(c1);
+ if (isupper(c2))
+ c2 = tolower(c2);
+ if (c1 != c2)
+ return 0;
+ my_prefix++;
+ str++;
+ }
+ if (c1 != '\0')
+ return 0;
+ return 1;
+}
+
+#endif
diff --git a/xkbcomp/vmod.c b/xkbcomp/vmod.c
index 8d08a9ba1..5578fd01f 100644
--- a/xkbcomp/vmod.c
+++ b/xkbcomp/vmod.c
@@ -1,271 +1,271 @@
-/************************************************************
- Copyright (c) 1994 by Silicon Graphics Computer Systems, Inc.
-
- Permission to use, copy, modify, and distribute this
- software and its documentation for any purpose and without
- fee is hereby granted, provided that the above copyright
- notice appear in all copies and that both that copyright
- notice and this permission notice appear in supporting
- documentation, and that the name of Silicon Graphics not be
- used in advertising or publicity pertaining to distribution
- of the software without specific prior written permission.
- Silicon Graphics makes no representation about the suitability
- of this software for any purpose. It is provided "as is"
- without any express or implied warranty.
-
- SILICON GRAPHICS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS
- SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
- AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON
- GRAPHICS BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL
- DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
- DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
- OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH
- THE USE OR PERFORMANCE OF THIS SOFTWARE.
-
- ********************************************************/
-
-#define DEBUG_VAR debugFlags
-#include <stdio.h>
-#include "xkbcomp.h"
-#include "tokens.h"
-#include "expr.h"
-#include "misc.h"
-
-#include <X11/extensions/XKB.h>
-#include <X11/extensions/XKBstr.h>
-
-#include "vmod.h"
-
-void
-InitVModInfo(VModInfo * info, XkbDescPtr xkb)
-{
- ClearVModInfo(info, xkb);
- info->errorCount = 0;
- return;
-}
-
-void
-ClearVModInfo(VModInfo * info, XkbDescPtr xkb)
-{
- register int i;
-
- if (XkbAllocNames(xkb, XkbVirtualModNamesMask, 0, 0) != Success)
- return;
- if (XkbAllocServerMap(xkb, XkbVirtualModsMask, 0) != Success)
- return;
- info->xkb = xkb;
- info->newlyDefined = info->defined = info->available = 0;
- if (xkb && xkb->names)
- {
- register int bit;
- for (i = 0, bit = 1; i < XkbNumVirtualMods; i++, bit <<= 1)
- {
- if (xkb->names->vmods[i] != None)
- info->defined |= bit;
- }
- }
- return;
-}
-
-/***====================================================================***/
-
-/**
- * Handle one entry in the virtualModifiers line (e.g. NumLock).
- * If the entry is e.g. NumLock=Mod1, stmt->value is not NULL, and the
- * XkbServerMap's vmod is set to the given modifier. Otherwise, the vmod is 0.
- *
- * @param stmt The statement specifying the name and (if any the value).
- * @param mergeMode Merge strategy (e.g. MergeOverride)
- */
-Bool
-HandleVModDef(VModDef * stmt, unsigned mergeMode, VModInfo * info)
-{
- register int i, bit, nextFree;
- ExprResult mod;
- XkbServerMapPtr srv;
- XkbNamesPtr names;
- Atom stmtName;
-
- srv = info->xkb->server;
- names = info->xkb->names;
- stmtName =
- XkbInternAtom(info->xkb->dpy, XkbAtomGetString(NULL, stmt->name),
- False);
- for (i = 0, bit = 1, nextFree = -1; i < XkbNumVirtualMods; i++, bit <<= 1)
- {
- if (info->defined & bit)
- {
- if (names->vmods[i] == stmtName)
- { /* already defined */
- info->available |= bit;
- if (stmt->value == NULL)
- return True;
- else
- {
- char *str1;
- const char *str2 = "";
- if (!ExprResolveModMask(stmt->value, &mod, NULL, NULL))
- {
- str1 = XkbAtomText(NULL, stmt->name, XkbMessage);
- ACTION1("Declaration of %s ignored\n", str1);
- return False;
- }
- if (mod.uval == srv->vmods[i])
- return True;
-
- str1 = XkbAtomText(NULL, stmt->name, XkbMessage);
- WARN1("Virtual modifier %s multiply defined\n", str1);
- str1 = XkbModMaskText(srv->vmods[i], XkbCFile);
- if (mergeMode == MergeOverride)
- {
- str2 = str1;
- str1 = XkbModMaskText(mod.uval, XkbCFile);
- }
- ACTION2("Using %s, ignoring %s\n", str1, str2);
- if (mergeMode == MergeOverride)
- srv->vmods[i] = mod.uval;
- return True;
- }
- }
- }
- else if (nextFree < 0)
- nextFree = i;
- }
- if (nextFree < 0)
- {
- ERROR1("Too many virtual modifiers defined (maximum %d)\n",
- XkbNumVirtualMods);
- ACTION("Exiting\n");
- return False;
- }
- info->defined |= (1 << nextFree);
- info->newlyDefined |= (1 << nextFree);
- info->available |= (1 << nextFree);
- names->vmods[nextFree] = stmtName;
- if (stmt->value == NULL)
- return True;
- if (ExprResolveModMask(stmt->value, &mod, NULL, NULL))
- {
- srv->vmods[nextFree] = mod.uval;
- return True;
- }
- ACTION1("Declaration of %s ignored\n",
- XkbAtomText(NULL, stmt->name, XkbMessage));
- return False;
-}
-
-/**
- * Returns the index of the given modifier in the xkb->names->vmods array.
- *
- * @param priv Pointer to the xkb data structure.
- * @param elem Must be None, otherwise return False.
- * @param field The Atom of the modifier's name (e.g. Atom for LAlt)
- * @param type Must be TypeInt, otherwise return False.
- * @param val_rtrn Set to the index of the modifier that matches.
- *
- * @return True on success, False otherwise. If False is returned, val_rtrn is
- * undefined.
- */
-int
-LookupVModIndex(XPointer priv,
- Atom elem, Atom field, unsigned type, ExprResult * val_rtrn)
-{
- register int i;
- register char *fieldStr;
- register char *modStr;
- XkbDescPtr xkb;
-
- xkb = (XkbDescPtr) priv;
- if ((xkb == NULL) || (xkb->names == NULL) || (elem != None)
- || (type != TypeInt))
- {
- return False;
- }
- /* get the actual name */
- fieldStr = XkbAtomGetString(xkb->dpy, field);
- if (fieldStr == NULL)
- return False;
- /* For each named modifier, get the name and compare it to the one passed
- * in. If we get a match, return the index of the modifier.
- * The order of modifiers is the same as in the virtual_modifiers line in
- * the xkb_types section.
- */
- for (i = 0; i < XkbNumVirtualMods; i++)
- {
- modStr = XkbAtomGetString(xkb->dpy, xkb->names->vmods[i]);
- if ((modStr != NULL) && (uStrCaseCmp(fieldStr, modStr) == 0))
- {
- val_rtrn->uval = i;
- return True;
- }
- }
- return False;
-}
-
-/**
- * Get the mask for the given modifier and set val_rtrn.uval to the mask.
- * Note that the mask returned is always > 512.
- *
- * @param priv Pointer to xkb data structure.
- * @param val_rtrn Set to the mask returned.
- *
- * @return True on success, False otherwise. If False is returned, val_rtrn is
- * undefined.
- */
-int
-LookupVModMask(XPointer priv,
- Atom elem, Atom field, unsigned type, ExprResult * val_rtrn)
-{
- if (LookupVModIndex(priv, elem, field, type, val_rtrn))
- {
- register unsigned ndx = val_rtrn->uval;
- val_rtrn->uval = (1 << (XkbNumModifiers + ndx));
- return True;
- }
- return False;
-}
-
-int
-FindKeypadVMod(XkbDescPtr xkb)
-{
- Atom name;
- ExprResult rtrn;
-
- name = XkbInternAtom(xkb->dpy, "NumLock", False);
- if ((xkb) && LookupVModIndex((XPointer) xkb, None, name, TypeInt, &rtrn))
- {
- return rtrn.ival;
- }
- return -1;
-}
-
-Bool
-ResolveVirtualModifier(ExprDef * def, ExprResult * val_rtrn, VModInfo * info)
-{
- XkbNamesPtr names;
-
- names = info->xkb->names;
- if (def->op == ExprIdent)
- {
- register int i, bit;
- for (i = 0, bit = 1; i < XkbNumVirtualMods; i++, bit <<= 1)
- {
- char *str1, *str2;
- str1 = XkbAtomGetString(info->xkb->dpy, names->vmods[i]);
- str2 = XkbAtomGetString(NULL, def->value.str);
- if ((info->available & bit) && (uStrCaseCmp(str1, str2) == Equal))
- {
- val_rtrn->uval = i;
- return True;
- }
- }
- }
- if (ExprResolveInteger(def, val_rtrn, NULL, NULL))
- {
- if (val_rtrn->uval < XkbNumVirtualMods)
- return True;
- ERROR2("Illegal virtual modifier %d (must be 0..%d inclusive)\n",
- val_rtrn->uval, XkbNumVirtualMods - 1);
- }
- return False;
-}
+/************************************************************
+ Copyright (c) 1994 by Silicon Graphics Computer Systems, Inc.
+
+ Permission to use, copy, modify, and distribute this
+ software and its documentation for any purpose and without
+ fee is hereby granted, provided that the above copyright
+ notice appear in all copies and that both that copyright
+ notice and this permission notice appear in supporting
+ documentation, and that the name of Silicon Graphics not be
+ used in advertising or publicity pertaining to distribution
+ of the software without specific prior written permission.
+ Silicon Graphics makes no representation about the suitability
+ of this software for any purpose. It is provided "as is"
+ without any express or implied warranty.
+
+ SILICON GRAPHICS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS
+ SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
+ AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON
+ GRAPHICS BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL
+ DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
+ DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
+ OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH
+ THE USE OR PERFORMANCE OF THIS SOFTWARE.
+
+ ********************************************************/
+
+#define DEBUG_VAR debugFlags
+#include <stdio.h>
+#include "xkbcomp.h"
+#include "tokens.h"
+#include "expr.h"
+#include "misc.h"
+
+#include <X11/extensions/XKB.h>
+#include <X11/extensions/XKBstr.h>
+
+#include "vmod.h"
+
+void
+InitVModInfo(VModInfo * info, XkbDescPtr xkb)
+{
+ ClearVModInfo(info, xkb);
+ info->errorCount = 0;
+ return;
+}
+
+void
+ClearVModInfo(VModInfo * info, XkbDescPtr xkb)
+{
+ register int i;
+
+ if (XkbAllocNames(xkb, XkbVirtualModNamesMask, 0, 0) != Success)
+ return;
+ if (XkbAllocServerMap(xkb, XkbVirtualModsMask, 0) != Success)
+ return;
+ info->xkb = xkb;
+ info->newlyDefined = info->defined = info->available = 0;
+ if (xkb && xkb->names)
+ {
+ register int bit;
+ for (i = 0, bit = 1; i < XkbNumVirtualMods; i++, bit <<= 1)
+ {
+ if (xkb->names->vmods[i] != None)
+ info->defined |= bit;
+ }
+ }
+ return;
+}
+
+/***====================================================================***/
+
+/**
+ * Handle one entry in the virtualModifiers line (e.g. NumLock).
+ * If the entry is e.g. NumLock=Mod1, stmt->value is not NULL, and the
+ * XkbServerMap's vmod is set to the given modifier. Otherwise, the vmod is 0.
+ *
+ * @param stmt The statement specifying the name and (if any the value).
+ * @param mergeMode Merge strategy (e.g. MergeOverride)
+ */
+Bool
+HandleVModDef(VModDef * stmt, unsigned mergeMode, VModInfo * info)
+{
+ register int i, bit, nextFree;
+ ExprResult mod;
+ XkbServerMapPtr srv;
+ XkbNamesPtr names;
+ Atom stmtName;
+
+ srv = info->xkb->server;
+ names = info->xkb->names;
+ stmtName =
+ XkbInternAtom(info->xkb->dpy, XkbAtomGetString(NULL, stmt->name),
+ False);
+ for (i = 0, bit = 1, nextFree = -1; i < XkbNumVirtualMods; i++, bit <<= 1)
+ {
+ if (info->defined & bit)
+ {
+ if (names->vmods[i] == stmtName)
+ { /* already defined */
+ info->available |= bit;
+ if (stmt->value == NULL)
+ return True;
+ else
+ {
+ char *str1;
+ const char *str2 = "";
+ if (!ExprResolveModMask(stmt->value, &mod, NULL, NULL))
+ {
+ str1 = XkbAtomText(NULL, stmt->name, XkbMessage);
+ ACTION1("Declaration of %s ignored\n", str1);
+ return False;
+ }
+ if (mod.uval == srv->vmods[i])
+ return True;
+
+ str1 = XkbAtomText(NULL, stmt->name, XkbMessage);
+ WARN1("Virtual modifier %s multiply defined\n", str1);
+ str1 = XkbModMaskText(srv->vmods[i], XkbCFile);
+ if (mergeMode == MergeOverride)
+ {
+ str2 = str1;
+ str1 = XkbModMaskText(mod.uval, XkbCFile);
+ }
+ ACTION2("Using %s, ignoring %s\n", str1, str2);
+ if (mergeMode == MergeOverride)
+ srv->vmods[i] = mod.uval;
+ return True;
+ }
+ }
+ }
+ else if (nextFree < 0)
+ nextFree = i;
+ }
+ if (nextFree < 0)
+ {
+ ERROR1("Too many virtual modifiers defined (maximum %d)\n",
+ XkbNumVirtualMods);
+ ACTION("Exiting\n");
+ return False;
+ }
+ info->defined |= (1 << nextFree);
+ info->newlyDefined |= (1 << nextFree);
+ info->available |= (1 << nextFree);
+ names->vmods[nextFree] = stmtName;
+ if (stmt->value == NULL)
+ return True;
+ if (ExprResolveModMask(stmt->value, &mod, NULL, NULL))
+ {
+ srv->vmods[nextFree] = mod.uval;
+ return True;
+ }
+ ACTION1("Declaration of %s ignored\n",
+ XkbAtomText(NULL, stmt->name, XkbMessage));
+ return False;
+}
+
+/**
+ * Returns the index of the given modifier in the xkb->names->vmods array.
+ *
+ * @param priv Pointer to the xkb data structure.
+ * @param elem Must be None, otherwise return False.
+ * @param field The Atom of the modifier's name (e.g. Atom for LAlt)
+ * @param type Must be TypeInt, otherwise return False.
+ * @param val_rtrn Set to the index of the modifier that matches.
+ *
+ * @return True on success, False otherwise. If False is returned, val_rtrn is
+ * undefined.
+ */
+int
+LookupVModIndex(XPointer priv,
+ Atom elem, Atom field, unsigned type, ExprResult * val_rtrn)
+{
+ register int i;
+ register char *fieldStr;
+ register char *modStr;
+ XkbDescPtr xkb;
+
+ xkb = (XkbDescPtr) priv;
+ if ((xkb == NULL) || (xkb->names == NULL) || (elem != None)
+ || (type != TypeInt))
+ {
+ return False;
+ }
+ /* get the actual name */
+ fieldStr = XkbAtomGetString(xkb->dpy, field);
+ if (fieldStr == NULL)
+ return False;
+ /* For each named modifier, get the name and compare it to the one passed
+ * in. If we get a match, return the index of the modifier.
+ * The order of modifiers is the same as in the virtual_modifiers line in
+ * the xkb_types section.
+ */
+ for (i = 0; i < XkbNumVirtualMods; i++)
+ {
+ modStr = XkbAtomGetString(xkb->dpy, xkb->names->vmods[i]);
+ if ((modStr != NULL) && (uStrCaseCmp(fieldStr, modStr) == 0))
+ {
+ val_rtrn->uval = i;
+ return True;
+ }
+ }
+ return False;
+}
+
+/**
+ * Get the mask for the given modifier and set val_rtrn.uval to the mask.
+ * Note that the mask returned is always > 512.
+ *
+ * @param priv Pointer to xkb data structure.
+ * @param val_rtrn Set to the mask returned.
+ *
+ * @return True on success, False otherwise. If False is returned, val_rtrn is
+ * undefined.
+ */
+int
+LookupVModMask(XPointer priv,
+ Atom elem, Atom field, unsigned type, ExprResult * val_rtrn)
+{
+ if (LookupVModIndex(priv, elem, field, type, val_rtrn))
+ {
+ register unsigned ndx = val_rtrn->uval;
+ val_rtrn->uval = (1 << (XkbNumModifiers + ndx));
+ return True;
+ }
+ return False;
+}
+
+int
+FindKeypadVMod(XkbDescPtr xkb)
+{
+ Atom name;
+ ExprResult rtrn;
+
+ name = XkbInternAtom(xkb->dpy, "NumLock", False);
+ if ((xkb) && LookupVModIndex((XPointer) xkb, None, name, TypeInt, &rtrn))
+ {
+ return rtrn.ival;
+ }
+ return -1;
+}
+
+Bool
+ResolveVirtualModifier(ExprDef * def, ExprResult * val_rtrn, VModInfo * info)
+{
+ XkbNamesPtr names;
+
+ names = info->xkb->names;
+ if (def->op == ExprIdent)
+ {
+ register int i, bit;
+ for (i = 0, bit = 1; i < XkbNumVirtualMods; i++, bit <<= 1)
+ {
+ char *str1, *str2;
+ str1 = XkbAtomGetString(info->xkb->dpy, names->vmods[i]);
+ str2 = XkbAtomGetString(NULL, def->value.str);
+ if ((info->available & bit) && (uStrCaseCmp(str1, str2) == Equal))
+ {
+ val_rtrn->uval = i;
+ return True;
+ }
+ }
+ }
+ if (ExprResolveInteger(def, val_rtrn, NULL, NULL))
+ {
+ if (val_rtrn->uval < XkbNumVirtualMods)
+ return True;
+ ERROR2("Illegal virtual modifier %d (must be 0..%d inclusive)\n",
+ val_rtrn->uval, XkbNumVirtualMods - 1);
+ }
+ return False;
+}
diff --git a/xkbcomp/vmod.h b/xkbcomp/vmod.h
index 61bfc6a24..559b9d504 100644
--- a/xkbcomp/vmod.h
+++ b/xkbcomp/vmod.h
@@ -1,78 +1,78 @@
-/************************************************************
- Copyright (c) 1994 by Silicon Graphics Computer Systems, Inc.
-
- Permission to use, copy, modify, and distribute this
- software and its documentation for any purpose and without
- fee is hereby granted, provided that the above copyright
- notice appear in all copies and that both that copyright
- notice and this permission notice appear in supporting
- documentation, and that the name of Silicon Graphics not be
- used in advertising or publicity pertaining to distribution
- of the software without specific prior written permission.
- Silicon Graphics makes no representation about the suitability
- of this software for any purpose. It is provided "as is"
- without any express or implied warranty.
-
- SILICON GRAPHICS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS
- SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
- AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON
- GRAPHICS BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL
- DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
- DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
- OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH
- THE USE OR PERFORMANCE OF THIS SOFTWARE.
-
- ********************************************************/
-
-#ifndef VMOD_H
-#define VMOD_H 1
-
-typedef struct _VModInfo
-{
- XkbDescPtr xkb;
- unsigned defined;
- unsigned available;
- unsigned newlyDefined;
- int errorCount;
-} VModInfo;
-
-extern void InitVModInfo(VModInfo * /* info */ ,
- XkbDescPtr /* xkb */
- );
-
-extern void ClearVModInfo(VModInfo * /* info */ ,
- XkbDescPtr /* xkb */
- );
-
-extern Bool HandleVModDef(VModDef * /* stmt */ ,
- unsigned /* mergeMode */ ,
- VModInfo * /* info */
- );
-
-extern Bool ApplyVModDefs(VModInfo * /* info */ ,
- XkbDescPtr /* xkb */
- );
-
-extern int LookupVModIndex(XPointer /* priv */ ,
- Atom /* elem */ ,
- Atom /* field */ ,
- unsigned /* type */ ,
- ExprResult * /* val_rtrn */
- );
-
-extern int LookupVModMask(XPointer /* priv */ ,
- Atom /* elem */ ,
- Atom /* field */ ,
- unsigned /* type */ ,
- ExprResult * /* val_rtrn */
- );
-
-extern int FindKeypadVMod(XkbDescPtr /* xkb */
- );
-
-extern Bool ResolveVirtualModifier(ExprDef * /* def */ ,
- ExprResult * /* value_rtrn */ ,
- VModInfo * /* info */
- );
-
-#endif /* VMOD_H */
+/************************************************************
+ Copyright (c) 1994 by Silicon Graphics Computer Systems, Inc.
+
+ Permission to use, copy, modify, and distribute this
+ software and its documentation for any purpose and without
+ fee is hereby granted, provided that the above copyright
+ notice appear in all copies and that both that copyright
+ notice and this permission notice appear in supporting
+ documentation, and that the name of Silicon Graphics not be
+ used in advertising or publicity pertaining to distribution
+ of the software without specific prior written permission.
+ Silicon Graphics makes no representation about the suitability
+ of this software for any purpose. It is provided "as is"
+ without any express or implied warranty.
+
+ SILICON GRAPHICS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS
+ SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
+ AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON
+ GRAPHICS BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL
+ DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
+ DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
+ OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH
+ THE USE OR PERFORMANCE OF THIS SOFTWARE.
+
+ ********************************************************/
+
+#ifndef VMOD_H
+#define VMOD_H 1
+
+typedef struct _VModInfo
+{
+ XkbDescPtr xkb;
+ unsigned defined;
+ unsigned available;
+ unsigned newlyDefined;
+ int errorCount;
+} VModInfo;
+
+extern void InitVModInfo(VModInfo * /* info */ ,
+ XkbDescPtr /* xkb */
+ );
+
+extern void ClearVModInfo(VModInfo * /* info */ ,
+ XkbDescPtr /* xkb */
+ );
+
+extern Bool HandleVModDef(VModDef * /* stmt */ ,
+ unsigned /* mergeMode */ ,
+ VModInfo * /* info */
+ );
+
+extern Bool ApplyVModDefs(VModInfo * /* info */ ,
+ XkbDescPtr /* xkb */
+ );
+
+extern int LookupVModIndex(XPointer /* priv */ ,
+ Atom /* elem */ ,
+ Atom /* field */ ,
+ unsigned /* type */ ,
+ ExprResult * /* val_rtrn */
+ );
+
+extern int LookupVModMask(XPointer /* priv */ ,
+ Atom /* elem */ ,
+ Atom /* field */ ,
+ unsigned /* type */ ,
+ ExprResult * /* val_rtrn */
+ );
+
+extern int FindKeypadVMod(XkbDescPtr /* xkb */
+ );
+
+extern Bool ResolveVirtualModifier(ExprDef * /* def */ ,
+ ExprResult * /* value_rtrn */ ,
+ VModInfo * /* info */
+ );
+
+#endif /* VMOD_H */
diff --git a/xkbcomp/xkbpath.c b/xkbcomp/xkbpath.c
index 5bb4ddc04..f5b21e6b8 100644
--- a/xkbcomp/xkbpath.c
+++ b/xkbcomp/xkbpath.c
@@ -1,421 +1,421 @@
-/************************************************************
- Copyright (c) 1994 by Silicon Graphics Computer Systems, Inc.
-
- Permission to use, copy, modify, and distribute this
- software and its documentation for any purpose and without
- fee is hereby granted, provided that the above copyright
- notice appear in all copies and that both that copyright
- notice and this permission notice appear in supporting
- documentation, and that the name of Silicon Graphics not be
- used in advertising or publicity pertaining to distribution
- of the software without specific prior written permission.
- Silicon Graphics makes no representation about the suitability
- of this software for any purpose. It is provided "as is"
- without any express or implied warranty.
-
- SILICON GRAPHICS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS
- SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
- AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON
- GRAPHICS BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL
- DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
- DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
- OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH
- THE USE OR PERFORMANCE OF THIS SOFTWARE.
-
- ********************************************************/
-
-#include <X11/Xlib.h>
-#include <X11/XKBlib.h>
-
-#define DEBUG_VAR debugFlags
-#include "utils.h"
-#include <stdlib.h>
-#include <unistd.h>
-#include <X11/extensions/XKM.h>
-#include "xkbpath.h"
-
-#ifndef DFLT_XKB_CONFIG_ROOT
-#define DFLT_XKB_CONFIG_ROOT "xkbdata"
-#endif
-
-#ifndef PATH_MAX
-#define PATH_MAX 1024
-#endif
-
-#define PATH_CHUNK 8 /* initial szPath */
-
-static Bool noDefaultPath = False;
-static int szPath; /* number of entries allocated for includePath */
-static int nPathEntries; /* number of actual entries in includePath */
-static char **includePath; /* Holds all directories we might be including data from */
-
-/**
- * Extract the first token from an include statement.
- * @param str_inout Input statement, modified in-place. Can be passed in
- * repeatedly. If str_inout is NULL, the parsing has completed.
- * @param file_rtrn Set to the include file to be used.
- * @param map_rtrn Set to whatever comes after ), if any.
- * @param nextop_rtrn Set to the next operation in the complete statement.
- * @param extra_data Set to the string between ( and ), if any.
- *
- * @return True if parsing was succcessful, False for an illegal string.
- *
- * Example: "evdev+aliases(qwerty)"
- * str_inout = aliases(qwerty)
- * nextop_retrn = +
- * extra_data = NULL
- * file_rtrn = evdev
- * map_rtrn = NULL
- *
- * 2nd run with "aliases(qwerty)"
- * str_inout = NULL
- * file_rtrn = aliases
- * map_rtrn = qwerty
- * extra_data = NULL
- * nextop_retrn = ""
- *
- */
-Bool
-XkbParseIncludeMap(char **str_inout, char **file_rtrn, char **map_rtrn,
- char *nextop_rtrn, char **extra_data)
-{
- char *tmp, *str, *next;
-
- str = *str_inout;
- if ((*str == '+') || (*str == '|'))
- {
- *file_rtrn = *map_rtrn = NULL;
- *nextop_rtrn = *str;
- next = str + 1;
- }
- else if (*str == '%')
- {
- *file_rtrn = *map_rtrn = NULL;
- *nextop_rtrn = str[1];
- next = str + 2;
- }
- else
- {
- /* search for tokens inside the string */
- next = strpbrk(str, "|+");
- if (next)
- {
- /* set nextop_rtrn to \0, next to next character */
- *nextop_rtrn = *next;
- *next++ = '\0';
- }
- else
- {
- *nextop_rtrn = '\0';
- next = NULL;
- }
- /* search for :, store result in extra_data */
- tmp = strchr(str, ':');
- if (tmp != NULL)
- {
- *tmp++ = '\0';
- *extra_data = uStringDup(tmp);
- }
- else
- {
- *extra_data = NULL;
- }
- tmp = strchr(str, '(');
- if (tmp == NULL)
- {
- *file_rtrn = uStringDup(str);
- *map_rtrn = NULL;
- }
- else if (str[0] == '(')
- {
- uFree(*extra_data);
- return False;
- }
- else
- {
- *tmp++ = '\0';
- *file_rtrn = uStringDup(str);
- str = tmp;
- tmp = strchr(str, ')');
- if ((tmp == NULL) || (tmp[1] != '\0'))
- {
- uFree(*file_rtrn);
- uFree(*extra_data);
- return False;
- }
- *tmp++ = '\0';
- *map_rtrn = uStringDup(str);
- }
- }
- if (*nextop_rtrn == '\0')
- *str_inout = NULL;
- else if ((*nextop_rtrn == '|') || (*nextop_rtrn == '+'))
- *str_inout = next;
- else
- return False;
- return True;
-}
-
-/**
- * Init memory for include paths.
- */
-Bool
-XkbInitIncludePath(void)
-{
- szPath = PATH_CHUNK;
- includePath = (char **) calloc(szPath, sizeof(char *));
- if (includePath == NULL)
- return False;
- return True;
-}
-
-void
-XkbAddDefaultDirectoriesToPath(void)
-{
- if (noDefaultPath)
- return;
- XkbAddDirectoryToPath(DFLT_XKB_CONFIG_ROOT);
-}
-
-/**
- * Remove all entries from the global includePath.
- */
-void
-XkbClearIncludePath(void)
-{
- register int i;
-
- if (szPath > 0)
- {
- for (i = 0; i < nPathEntries; i++)
- {
- if (includePath[i] != NULL)
- {
- uFree(includePath[i]);
- includePath[i] = NULL;
- }
- }
- nPathEntries = 0;
- }
- noDefaultPath = True;
- return;
-}
-
-/**
- * Add the given path to the global includePath variable.
- * If dir is NULL, the includePath is emptied.
- */
-Bool
-XkbAddDirectoryToPath(const char *dir)
-{
- int len;
- if ((dir == NULL) || (dir[0] == '\0'))
- {
- XkbClearIncludePath();
- return True;
- }
-#ifdef __UNIXOS2__
- dir = (char *) __XOS2RedirRoot(dir);
-#endif
- len = strlen(dir);
- if (len + 2 >= PATH_MAX)
- { /* allow for '/' and at least one character */
- ERROR2("Path entry (%s) too long (maxiumum length is %d)\n",
- dir, PATH_MAX - 3);
- return False;
- }
- if (nPathEntries >= szPath)
- {
- szPath += PATH_CHUNK;
- includePath = (char **) realloc(includePath, szPath * sizeof(char *));
- if (includePath == NULL)
- {
- WSGO("Allocation failed (includePath)\n");
- return False;
- }
- }
- includePath[nPathEntries] =
- (char *) calloc(strlen(dir) + 1, sizeof(char));
- if (includePath[nPathEntries] == NULL)
- {
- WSGO1("Allocation failed (includePath[%d])\n", nPathEntries);
- return False;
- }
- strcpy(includePath[nPathEntries++], dir);
- return True;
-}
-
-/***====================================================================***/
-
-/**
- * Return the xkb directory based on the type.
- * Do not free the memory returned by this function.
- */
-char *
-XkbDirectoryForInclude(unsigned type)
-{
- static char buf[32];
-
- switch (type)
- {
- case XkmSemanticsFile:
- strcpy(buf, "semantics");
- break;
- case XkmLayoutFile:
- strcpy(buf, "layout");
- break;
- case XkmKeymapFile:
- strcpy(buf, "keymap");
- break;
- case XkmKeyNamesIndex:
- strcpy(buf, "keycodes");
- break;
- case XkmTypesIndex:
- strcpy(buf, "types");
- break;
- case XkmSymbolsIndex:
- strcpy(buf, "symbols");
- break;
- case XkmCompatMapIndex:
- strcpy(buf, "compat");
- break;
- case XkmGeometryFile:
- case XkmGeometryIndex:
- strcpy(buf, "geometry");
- break;
- default:
- strcpy(buf, "");
- break;
- }
- return buf;
-}
-
-/***====================================================================***/
-
-typedef struct _FileCacheEntry
-{
- char *name;
- unsigned type;
- char *path;
- void *data;
- struct _FileCacheEntry *next;
-} FileCacheEntry;
-static FileCacheEntry *fileCache;
-
-/**
- * Add the file with the given name to the internal cache to avoid opening and
- * parsing the file multiple times. If a cache entry for the same name + type
- * is already present, the entry is overwritten and the data belonging to the
- * previous entry is returned.
- *
- * @parameter name The name of the file (e.g. evdev).
- * @parameter type Type of the file (XkbTypesIdx, ... or XkbSemanticsFile, ...)
- * @parameter path The full path to the file.
- * @parameter data Already parsed data.
- *
- * @return The data from the overwritten file or NULL.
- */
-void *
-XkbAddFileToCache(char *name, unsigned type, char *path, void *data)
-{
- FileCacheEntry *entry;
-
- for (entry = fileCache; entry != NULL; entry = entry->next)
- {
- if ((type == entry->type) && (uStringEqual(name, entry->name)))
- {
- void *old = entry->data;
- WSGO2("Replacing file cache entry (%s/%d)\n", name, type);
- entry->path = path;
- entry->data = data;
- return old;
- }
- }
- entry = uTypedAlloc(FileCacheEntry);
- if (entry != NULL)
- {
- entry->name = name;
- entry->type = type;
- entry->path = path;
- entry->data = data;
- entry->next = fileCache;
- fileCache = entry;
- }
- return NULL;
-}
-
-/**
- * Search for the given name + type in the cache.
- *
- * @parameter name The name of the file (e.g. evdev).
- * @parameter type Type of the file (XkbTypesIdx, ... or XkbSemanticsFile, ...)
- * @parameter pathRtrn Set to the full path of the given entry.
- *
- * @return the data from the cache entry or NULL if no matching entry was found.
- */
-void *
-XkbFindFileInCache(char *name, unsigned type, char **pathRtrn)
-{
- FileCacheEntry *entry;
-
- for (entry = fileCache; entry != NULL; entry = entry->next)
- {
- if ((type == entry->type) && (uStringEqual(name, entry->name)))
- {
- *pathRtrn = entry->path;
- return entry->data;
- }
- }
- return NULL;
-}
-
-/***====================================================================***/
-
-/**
- * Search for the given file name in the include directories.
- *
- * @param type one of XkbTypesIndex, XkbCompatMapIndex, ..., or
- * XkbSemanticsFile, XkmKeymapFile, ...
- * @param pathReturn is set to the full path of the file if found.
- *
- * @return an FD to the file or NULL. If NULL is returned, the value of
- * pathRtrn is undefined.
- */
-FILE *
-XkbFindFileInPath(char *name, unsigned type, char **pathRtrn)
-{
- register int i;
- FILE *file = NULL;
- int nameLen, typeLen, pathLen;
- char buf[PATH_MAX], *typeDir;
-
- typeDir = XkbDirectoryForInclude(type);
- nameLen = strlen(name);
- typeLen = strlen(typeDir);
- for (i = 0; i < nPathEntries; i++)
- {
- pathLen = strlen(includePath[i]);
- if (typeLen < 1)
- continue;
-
- if ((nameLen + typeLen + pathLen + 2) >= PATH_MAX)
- {
- ERROR3("File name (%s/%s/%s) too long\n", includePath[i],
- typeDir, name);
- ACTION("Ignored\n");
- continue;
- }
- snprintf(buf, sizeof(buf), "%s/%s/%s", includePath[i], typeDir, name);
- file = fopen(buf, "r");
- if (file != NULL)
- break;
- }
-
- if ((file != NULL) && (pathRtrn != NULL))
- {
- *pathRtrn = (char *) calloc(strlen(buf) + 1, sizeof(char));
- if (*pathRtrn != NULL)
- strcpy(*pathRtrn, buf);
- }
- return file;
-}
+/************************************************************
+ Copyright (c) 1994 by Silicon Graphics Computer Systems, Inc.
+
+ Permission to use, copy, modify, and distribute this
+ software and its documentation for any purpose and without
+ fee is hereby granted, provided that the above copyright
+ notice appear in all copies and that both that copyright
+ notice and this permission notice appear in supporting
+ documentation, and that the name of Silicon Graphics not be
+ used in advertising or publicity pertaining to distribution
+ of the software without specific prior written permission.
+ Silicon Graphics makes no representation about the suitability
+ of this software for any purpose. It is provided "as is"
+ without any express or implied warranty.
+
+ SILICON GRAPHICS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS
+ SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
+ AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON
+ GRAPHICS BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL
+ DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
+ DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
+ OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH
+ THE USE OR PERFORMANCE OF THIS SOFTWARE.
+
+ ********************************************************/
+
+#include <X11/Xlib.h>
+#include <X11/XKBlib.h>
+
+#define DEBUG_VAR debugFlags
+#include "utils.h"
+#include <stdlib.h>
+#include <unistd.h>
+#include <X11/extensions/XKM.h>
+#include "xkbpath.h"
+
+#ifndef DFLT_XKB_CONFIG_ROOT
+#define DFLT_XKB_CONFIG_ROOT "xkbdata"
+#endif
+
+#ifndef PATH_MAX
+#define PATH_MAX 1024
+#endif
+
+#define PATH_CHUNK 8 /* initial szPath */
+
+static Bool noDefaultPath = False;
+static int szPath; /* number of entries allocated for includePath */
+static int nPathEntries; /* number of actual entries in includePath */
+static char **includePath; /* Holds all directories we might be including data from */
+
+/**
+ * Extract the first token from an include statement.
+ * @param str_inout Input statement, modified in-place. Can be passed in
+ * repeatedly. If str_inout is NULL, the parsing has completed.
+ * @param file_rtrn Set to the include file to be used.
+ * @param map_rtrn Set to whatever comes after ), if any.
+ * @param nextop_rtrn Set to the next operation in the complete statement.
+ * @param extra_data Set to the string between ( and ), if any.
+ *
+ * @return True if parsing was succcessful, False for an illegal string.
+ *
+ * Example: "evdev+aliases(qwerty)"
+ * str_inout = aliases(qwerty)
+ * nextop_retrn = +
+ * extra_data = NULL
+ * file_rtrn = evdev
+ * map_rtrn = NULL
+ *
+ * 2nd run with "aliases(qwerty)"
+ * str_inout = NULL
+ * file_rtrn = aliases
+ * map_rtrn = qwerty
+ * extra_data = NULL
+ * nextop_retrn = ""
+ *
+ */
+Bool
+XkbParseIncludeMap(char **str_inout, char **file_rtrn, char **map_rtrn,
+ char *nextop_rtrn, char **extra_data)
+{
+ char *tmp, *str, *next;
+
+ str = *str_inout;
+ if ((*str == '+') || (*str == '|'))
+ {
+ *file_rtrn = *map_rtrn = NULL;
+ *nextop_rtrn = *str;
+ next = str + 1;
+ }
+ else if (*str == '%')
+ {
+ *file_rtrn = *map_rtrn = NULL;
+ *nextop_rtrn = str[1];
+ next = str + 2;
+ }
+ else
+ {
+ /* search for tokens inside the string */
+ next = strpbrk(str, "|+");
+ if (next)
+ {
+ /* set nextop_rtrn to \0, next to next character */
+ *nextop_rtrn = *next;
+ *next++ = '\0';
+ }
+ else
+ {
+ *nextop_rtrn = '\0';
+ next = NULL;
+ }
+ /* search for :, store result in extra_data */
+ tmp = strchr(str, ':');
+ if (tmp != NULL)
+ {
+ *tmp++ = '\0';
+ *extra_data = uStringDup(tmp);
+ }
+ else
+ {
+ *extra_data = NULL;
+ }
+ tmp = strchr(str, '(');
+ if (tmp == NULL)
+ {
+ *file_rtrn = uStringDup(str);
+ *map_rtrn = NULL;
+ }
+ else if (str[0] == '(')
+ {
+ uFree(*extra_data);
+ return False;
+ }
+ else
+ {
+ *tmp++ = '\0';
+ *file_rtrn = uStringDup(str);
+ str = tmp;
+ tmp = strchr(str, ')');
+ if ((tmp == NULL) || (tmp[1] != '\0'))
+ {
+ uFree(*file_rtrn);
+ uFree(*extra_data);
+ return False;
+ }
+ *tmp++ = '\0';
+ *map_rtrn = uStringDup(str);
+ }
+ }
+ if (*nextop_rtrn == '\0')
+ *str_inout = NULL;
+ else if ((*nextop_rtrn == '|') || (*nextop_rtrn == '+'))
+ *str_inout = next;
+ else
+ return False;
+ return True;
+}
+
+/**
+ * Init memory for include paths.
+ */
+Bool
+XkbInitIncludePath(void)
+{
+ szPath = PATH_CHUNK;
+ includePath = (char **) calloc(szPath, sizeof(char *));
+ if (includePath == NULL)
+ return False;
+ return True;
+}
+
+void
+XkbAddDefaultDirectoriesToPath(void)
+{
+ if (noDefaultPath)
+ return;
+ XkbAddDirectoryToPath(DFLT_XKB_CONFIG_ROOT);
+}
+
+/**
+ * Remove all entries from the global includePath.
+ */
+void
+XkbClearIncludePath(void)
+{
+ register int i;
+
+ if (szPath > 0)
+ {
+ for (i = 0; i < nPathEntries; i++)
+ {
+ if (includePath[i] != NULL)
+ {
+ uFree(includePath[i]);
+ includePath[i] = NULL;
+ }
+ }
+ nPathEntries = 0;
+ }
+ noDefaultPath = True;
+ return;
+}
+
+/**
+ * Add the given path to the global includePath variable.
+ * If dir is NULL, the includePath is emptied.
+ */
+Bool
+XkbAddDirectoryToPath(const char *dir)
+{
+ int len;
+ if ((dir == NULL) || (dir[0] == '\0'))
+ {
+ XkbClearIncludePath();
+ return True;
+ }
+#ifdef __UNIXOS2__
+ dir = (char *) __XOS2RedirRoot(dir);
+#endif
+ len = strlen(dir);
+ if (len + 2 >= PATH_MAX)
+ { /* allow for '/' and at least one character */
+ ERROR2("Path entry (%s) too long (maxiumum length is %d)\n",
+ dir, PATH_MAX - 3);
+ return False;
+ }
+ if (nPathEntries >= szPath)
+ {
+ szPath += PATH_CHUNK;
+ includePath = (char **) realloc(includePath, szPath * sizeof(char *));
+ if (includePath == NULL)
+ {
+ WSGO("Allocation failed (includePath)\n");
+ return False;
+ }
+ }
+ includePath[nPathEntries] =
+ (char *) calloc(strlen(dir) + 1, sizeof(char));
+ if (includePath[nPathEntries] == NULL)
+ {
+ WSGO1("Allocation failed (includePath[%d])\n", nPathEntries);
+ return False;
+ }
+ strcpy(includePath[nPathEntries++], dir);
+ return True;
+}
+
+/***====================================================================***/
+
+/**
+ * Return the xkb directory based on the type.
+ * Do not free the memory returned by this function.
+ */
+char *
+XkbDirectoryForInclude(unsigned type)
+{
+ static char buf[32];
+
+ switch (type)
+ {
+ case XkmSemanticsFile:
+ strcpy(buf, "semantics");
+ break;
+ case XkmLayoutFile:
+ strcpy(buf, "layout");
+ break;
+ case XkmKeymapFile:
+ strcpy(buf, "keymap");
+ break;
+ case XkmKeyNamesIndex:
+ strcpy(buf, "keycodes");
+ break;
+ case XkmTypesIndex:
+ strcpy(buf, "types");
+ break;
+ case XkmSymbolsIndex:
+ strcpy(buf, "symbols");
+ break;
+ case XkmCompatMapIndex:
+ strcpy(buf, "compat");
+ break;
+ case XkmGeometryFile:
+ case XkmGeometryIndex:
+ strcpy(buf, "geometry");
+ break;
+ default:
+ strcpy(buf, "");
+ break;
+ }
+ return buf;
+}
+
+/***====================================================================***/
+
+typedef struct _FileCacheEntry
+{
+ char *name;
+ unsigned type;
+ char *path;
+ void *data;
+ struct _FileCacheEntry *next;
+} FileCacheEntry;
+static FileCacheEntry *fileCache;
+
+/**
+ * Add the file with the given name to the internal cache to avoid opening and
+ * parsing the file multiple times. If a cache entry for the same name + type
+ * is already present, the entry is overwritten and the data belonging to the
+ * previous entry is returned.
+ *
+ * @parameter name The name of the file (e.g. evdev).
+ * @parameter type Type of the file (XkbTypesIdx, ... or XkbSemanticsFile, ...)
+ * @parameter path The full path to the file.
+ * @parameter data Already parsed data.
+ *
+ * @return The data from the overwritten file or NULL.
+ */
+void *
+XkbAddFileToCache(char *name, unsigned type, char *path, void *data)
+{
+ FileCacheEntry *entry;
+
+ for (entry = fileCache; entry != NULL; entry = entry->next)
+ {
+ if ((type == entry->type) && (uStringEqual(name, entry->name)))
+ {
+ void *old = entry->data;
+ WSGO2("Replacing file cache entry (%s/%d)\n", name, type);
+ entry->path = path;
+ entry->data = data;
+ return old;
+ }
+ }
+ entry = uTypedAlloc(FileCacheEntry);
+ if (entry != NULL)
+ {
+ entry->name = name;
+ entry->type = type;
+ entry->path = path;
+ entry->data = data;
+ entry->next = fileCache;
+ fileCache = entry;
+ }
+ return NULL;
+}
+
+/**
+ * Search for the given name + type in the cache.
+ *
+ * @parameter name The name of the file (e.g. evdev).
+ * @parameter type Type of the file (XkbTypesIdx, ... or XkbSemanticsFile, ...)
+ * @parameter pathRtrn Set to the full path of the given entry.
+ *
+ * @return the data from the cache entry or NULL if no matching entry was found.
+ */
+void *
+XkbFindFileInCache(char *name, unsigned type, char **pathRtrn)
+{
+ FileCacheEntry *entry;
+
+ for (entry = fileCache; entry != NULL; entry = entry->next)
+ {
+ if ((type == entry->type) && (uStringEqual(name, entry->name)))
+ {
+ *pathRtrn = entry->path;
+ return entry->data;
+ }
+ }
+ return NULL;
+}
+
+/***====================================================================***/
+
+/**
+ * Search for the given file name in the include directories.
+ *
+ * @param type one of XkbTypesIndex, XkbCompatMapIndex, ..., or
+ * XkbSemanticsFile, XkmKeymapFile, ...
+ * @param pathReturn is set to the full path of the file if found.
+ *
+ * @return an FD to the file or NULL. If NULL is returned, the value of
+ * pathRtrn is undefined.
+ */
+FILE *
+XkbFindFileInPath(char *name, unsigned type, char **pathRtrn)
+{
+ register int i;
+ FILE *file = NULL;
+ int nameLen, typeLen, pathLen;
+ char buf[PATH_MAX], *typeDir;
+
+ typeDir = XkbDirectoryForInclude(type);
+ nameLen = strlen(name);
+ typeLen = strlen(typeDir);
+ for (i = 0; i < nPathEntries; i++)
+ {
+ pathLen = strlen(includePath[i]);
+ if (typeLen < 1)
+ continue;
+
+ if ((nameLen + typeLen + pathLen + 2) >= PATH_MAX)
+ {
+ ERROR3("File name (%s/%s/%s) too long\n", includePath[i],
+ typeDir, name);
+ ACTION("Ignored\n");
+ continue;
+ }
+ snprintf(buf, sizeof(buf), "%s/%s/%s", includePath[i], typeDir, name);
+ file = fopen(buf, "r");
+ if (file != NULL)
+ break;
+ }
+
+ if ((file != NULL) && (pathRtrn != NULL))
+ {
+ *pathRtrn = (char *) calloc(strlen(buf) + 1, sizeof(char));
+ if (*pathRtrn != NULL)
+ strcpy(*pathRtrn, buf);
+ }
+ return file;
+}
diff --git a/xkbcomp/xkbpath.h b/xkbcomp/xkbpath.h
index e9ebeda0e..66c3ab76b 100644
--- a/xkbcomp/xkbpath.h
+++ b/xkbcomp/xkbpath.h
@@ -1,65 +1,65 @@
-/************************************************************
- Copyright (c) 1994 by Silicon Graphics Computer Systems, Inc.
-
- Permission to use, copy, modify, and distribute this
- software and its documentation for any purpose and without
- fee is hereby granted, provided that the above copyright
- notice appear in all copies and that both that copyright
- notice and this permission notice appear in supporting
- documentation, and that the name of Silicon Graphics not be
- used in advertising or publicity pertaining to distribution
- of the software without specific prior written permission.
- Silicon Graphics makes no representation about the suitability
- of this software for any purpose. It is provided "as is"
- without any express or implied warranty.
-
- SILICON GRAPHICS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS
- SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
- AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON
- GRAPHICS BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL
- DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
- DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
- OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH
- THE USE OR PERFORMANCE OF THIS SOFTWARE.
-
- ********************************************************/
-
-#ifndef _XKBPATH_H_
-#define _XKBPATH_H_ 1
-
-extern Bool XkbInitIncludePath(void);
-
-extern void XkbClearIncludePath(void);
-
-extern void XkbAddDefaultDirectoriesToPath(void);
-
-extern Bool XkbAddDirectoryToPath(const char * /* dir */
- );
-
-extern char *XkbDirectoryForInclude(unsigned /* type */
- );
-
-extern FILE *XkbFindFileInPath(char * /* name */ ,
- unsigned /* type */ ,
- char ** /* pathRtrn */
- );
-
-extern void *XkbAddFileToCache(char * /* name */ ,
- unsigned /* type */ ,
- char * /* path */ ,
- void * /* data */
- );
-
-extern void *XkbFindFileInCache(char * /* name */ ,
- unsigned /* type */ ,
- char ** /* pathRtrn */
- );
-
-extern Bool XkbParseIncludeMap(char ** /* str_inout */ ,
- char ** /* file_rtrn */ ,
- char ** /* map_rtrn */ ,
- char * /* nextop_rtrn */ ,
- char ** /* extra_data */
- );
-
-#endif /* _XKBPATH_H_ */
+/************************************************************
+ Copyright (c) 1994 by Silicon Graphics Computer Systems, Inc.
+
+ Permission to use, copy, modify, and distribute this
+ software and its documentation for any purpose and without
+ fee is hereby granted, provided that the above copyright
+ notice appear in all copies and that both that copyright
+ notice and this permission notice appear in supporting
+ documentation, and that the name of Silicon Graphics not be
+ used in advertising or publicity pertaining to distribution
+ of the software without specific prior written permission.
+ Silicon Graphics makes no representation about the suitability
+ of this software for any purpose. It is provided "as is"
+ without any express or implied warranty.
+
+ SILICON GRAPHICS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS
+ SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
+ AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON
+ GRAPHICS BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL
+ DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
+ DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
+ OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH
+ THE USE OR PERFORMANCE OF THIS SOFTWARE.
+
+ ********************************************************/
+
+#ifndef _XKBPATH_H_
+#define _XKBPATH_H_ 1
+
+extern Bool XkbInitIncludePath(void);
+
+extern void XkbClearIncludePath(void);
+
+extern void XkbAddDefaultDirectoriesToPath(void);
+
+extern Bool XkbAddDirectoryToPath(const char * /* dir */
+ );
+
+extern char *XkbDirectoryForInclude(unsigned /* type */
+ );
+
+extern FILE *XkbFindFileInPath(char * /* name */ ,
+ unsigned /* type */ ,
+ char ** /* pathRtrn */
+ );
+
+extern void *XkbAddFileToCache(char * /* name */ ,
+ unsigned /* type */ ,
+ char * /* path */ ,
+ void * /* data */
+ );
+
+extern void *XkbFindFileInCache(char * /* name */ ,
+ unsigned /* type */ ,
+ char ** /* pathRtrn */
+ );
+
+extern Bool XkbParseIncludeMap(char ** /* str_inout */ ,
+ char ** /* file_rtrn */ ,
+ char ** /* map_rtrn */ ,
+ char * /* nextop_rtrn */ ,
+ char ** /* extra_data */
+ );
+
+#endif /* _XKBPATH_H_ */
diff --git a/xorg-server/README b/xorg-server/README
index 58abd8e87..b2499a059 100644
--- a/xorg-server/README
+++ b/xorg-server/README
@@ -1,38 +1,38 @@
- X Server
-
-The X server accepts requests from client applications to create windows,
-which are (normally rectangular) "virtual screens" that the client program
-can draw into.
-
-Windows are then composed on the actual screen by the X server
-(or by a separate composite manager) as directed by the window manager,
-which usually communicates with the user via graphical controls such as buttons
-and draggable titlebars and borders.
-
-For a comprehensive overview of X Server and X Window System, consult the
-following article:
-http://en.wikipedia.org/wiki/X_server
-
-All questions regarding this software should be directed at the
-Xorg mailing list:
-
- http://lists.freedesktop.org/mailman/listinfo/xorg
-
-Please submit bug reports to the Xorg bugzilla:
-
- https://bugs.freedesktop.org/enter_bug.cgi?product=xorg
-
-The master development code repository can be found at:
-
- git://anongit.freedesktop.org/git/xorg/xserver
-
- http://cgit.freedesktop.org/xorg/xserver
-
-For patch submission instructions, see:
-
- http://www.x.org/wiki/Development/Documentation/SubmittingPatches
-
-For more information on the git code manager, see:
-
- http://wiki.x.org/wiki/GitPage
-
+ X Server
+
+The X server accepts requests from client applications to create windows,
+which are (normally rectangular) "virtual screens" that the client program
+can draw into.
+
+Windows are then composed on the actual screen by the X server
+(or by a separate composite manager) as directed by the window manager,
+which usually communicates with the user via graphical controls such as buttons
+and draggable titlebars and borders.
+
+For a comprehensive overview of X Server and X Window System, consult the
+following article:
+http://en.wikipedia.org/wiki/X_server
+
+All questions regarding this software should be directed at the
+Xorg mailing list:
+
+ http://lists.freedesktop.org/mailman/listinfo/xorg
+
+Please submit bug reports to the Xorg bugzilla:
+
+ https://bugs.freedesktop.org/enter_bug.cgi?product=xorg
+
+The master development code repository can be found at:
+
+ git://anongit.freedesktop.org/git/xorg/xserver
+
+ http://cgit.freedesktop.org/xorg/xserver
+
+For patch submission instructions, see:
+
+ http://www.x.org/wiki/Development/Documentation/SubmittingPatches
+
+For more information on the git code manager, see:
+
+ http://wiki.x.org/wiki/GitPage
+
diff --git a/xorg-server/Xext/xvdisp.h b/xorg-server/Xext/xvdisp.h
index b3580a8ef..298d39560 100644
--- a/xorg-server/Xext/xvdisp.h
+++ b/xorg-server/Xext/xvdisp.h
@@ -1,2 +1,2 @@
-extern void XineramifyXv(void);
-extern void XvResetProcVector(void);
+extern void XineramifyXv(void);
+extern void XvResetProcVector(void);
diff --git a/xorg-server/Xi/Makefile.am b/xorg-server/Xi/Makefile.am
index 499e7056d..69c7886b9 100644
--- a/xorg-server/Xi/Makefile.am
+++ b/xorg-server/Xi/Makefile.am
@@ -1,108 +1,108 @@
-noinst_LTLIBRARIES = libXi.la
-
-AM_CFLAGS = $(DIX_CFLAGS)
-
-libXi_la_SOURCES = \
- allowev.c \
- allowev.h \
- chgdctl.c \
- chgdctl.h \
- chgfctl.c \
- chgfctl.h \
- chgkbd.c \
- chgkbd.h \
- chgkmap.c \
- chgkmap.h \
- chgprop.c \
- chgprop.h \
- chgptr.c \
- chgptr.h \
- closedev.c \
- closedev.h \
- devbell.c \
- devbell.h \
- exevents.c \
- exglobals.h \
- extinit.c \
- getbmap.c \
- getbmap.h \
- getdctl.c \
- getdctl.h \
- getfctl.c \
- getfctl.h \
- getfocus.c \
- getfocus.h \
- getkmap.c \
- getkmap.h \
- getmmap.c \
- getmmap.h \
- getprop.c \
- getprop.h \
- getselev.c \
- getselev.h \
- getvers.c \
- getvers.h \
- grabdev.c \
- grabdev.h \
- grabdevb.c \
- grabdevb.h \
- grabdevk.c \
- grabdevk.h \
- gtmotion.c \
- gtmotion.h \
- listdev.c \
- listdev.h \
- opendev.c \
- opendev.h \
- queryst.c \
- queryst.h \
- selectev.c \
- selectev.h \
- sendexev.c \
- sendexev.h \
- setbmap.c \
- setbmap.h \
- setdval.c \
- setdval.h \
- setfocus.c \
- setfocus.h \
- setmmap.c \
- setmmap.h \
- setmode.c \
- setmode.h \
- ungrdev.c \
- ungrdev.h \
- ungrdevb.c \
- ungrdevb.h \
- ungrdevk.c \
- ungrdevk.h \
- xiallowev.c \
- xiallowev.h \
- xichangecursor.c \
- xichangecursor.h \
- xichangehierarchy.c \
- xichangehierarchy.h \
- xigetclientpointer.c \
- xigetclientpointer.h \
- xigrabdev.c \
- xigrabdev.h \
- xipassivegrab.h \
- xipassivegrab.c \
- xiproperty.c \
- xiproperty.h \
- xiquerydevice.c \
- xiquerydevice.h \
- xiquerypointer.c \
- xiquerypointer.h \
- xiqueryversion.c \
- xiqueryversion.h \
- xiselectev.c \
- xiselectev.h \
- xisetclientpointer.c \
- xisetclientpointer.h \
- xisetdevfocus.c \
- xisetdevfocus.h \
- xiwarppointer.c \
- xiwarppointer.h
-
-EXTRA_DIST = stubs.c
+noinst_LTLIBRARIES = libXi.la
+
+AM_CFLAGS = $(DIX_CFLAGS)
+
+libXi_la_SOURCES = \
+ allowev.c \
+ allowev.h \
+ chgdctl.c \
+ chgdctl.h \
+ chgfctl.c \
+ chgfctl.h \
+ chgkbd.c \
+ chgkbd.h \
+ chgkmap.c \
+ chgkmap.h \
+ chgprop.c \
+ chgprop.h \
+ chgptr.c \
+ chgptr.h \
+ closedev.c \
+ closedev.h \
+ devbell.c \
+ devbell.h \
+ exevents.c \
+ exglobals.h \
+ extinit.c \
+ getbmap.c \
+ getbmap.h \
+ getdctl.c \
+ getdctl.h \
+ getfctl.c \
+ getfctl.h \
+ getfocus.c \
+ getfocus.h \
+ getkmap.c \
+ getkmap.h \
+ getmmap.c \
+ getmmap.h \
+ getprop.c \
+ getprop.h \
+ getselev.c \
+ getselev.h \
+ getvers.c \
+ getvers.h \
+ grabdev.c \
+ grabdev.h \
+ grabdevb.c \
+ grabdevb.h \
+ grabdevk.c \
+ grabdevk.h \
+ gtmotion.c \
+ gtmotion.h \
+ listdev.c \
+ listdev.h \
+ opendev.c \
+ opendev.h \
+ queryst.c \
+ queryst.h \
+ selectev.c \
+ selectev.h \
+ sendexev.c \
+ sendexev.h \
+ setbmap.c \
+ setbmap.h \
+ setdval.c \
+ setdval.h \
+ setfocus.c \
+ setfocus.h \
+ setmmap.c \
+ setmmap.h \
+ setmode.c \
+ setmode.h \
+ ungrdev.c \
+ ungrdev.h \
+ ungrdevb.c \
+ ungrdevb.h \
+ ungrdevk.c \
+ ungrdevk.h \
+ xiallowev.c \
+ xiallowev.h \
+ xichangecursor.c \
+ xichangecursor.h \
+ xichangehierarchy.c \
+ xichangehierarchy.h \
+ xigetclientpointer.c \
+ xigetclientpointer.h \
+ xigrabdev.c \
+ xigrabdev.h \
+ xipassivegrab.h \
+ xipassivegrab.c \
+ xiproperty.c \
+ xiproperty.h \
+ xiquerydevice.c \
+ xiquerydevice.h \
+ xiquerypointer.c \
+ xiquerypointer.h \
+ xiqueryversion.c \
+ xiqueryversion.h \
+ xiselectev.c \
+ xiselectev.h \
+ xisetclientpointer.c \
+ xisetclientpointer.h \
+ xisetdevfocus.c \
+ xisetdevfocus.h \
+ xiwarppointer.c \
+ xiwarppointer.h
+
+EXTRA_DIST = stubs.c
diff --git a/xorg-server/composite/Makefile.am b/xorg-server/composite/Makefile.am
index a7c0804e8..c2f5123f2 100644
--- a/xorg-server/composite/Makefile.am
+++ b/xorg-server/composite/Makefile.am
@@ -1,15 +1,15 @@
-noinst_LTLIBRARIES = libcomposite.la
-
-AM_CFLAGS = $(DIX_CFLAGS)
-
-if XORG
-sdk_HEADERS = compositeext.h
-endif
-
-libcomposite_la_SOURCES = \
- compalloc.c \
- compext.c \
- compint.h \
- compinit.c \
- compoverlay.c \
- compwindow.c
+noinst_LTLIBRARIES = libcomposite.la
+
+AM_CFLAGS = $(DIX_CFLAGS)
+
+if XORG
+sdk_HEADERS = compositeext.h
+endif
+
+libcomposite_la_SOURCES = \
+ compalloc.c \
+ compext.c \
+ compint.h \
+ compinit.c \
+ compoverlay.c \
+ compwindow.c
diff --git a/xorg-server/config/10-evdev.conf b/xorg-server/config/10-evdev.conf
index 144110846..cc83ab232 100644
--- a/xorg-server/config/10-evdev.conf
+++ b/xorg-server/config/10-evdev.conf
@@ -1,40 +1,40 @@
-#
-# Catch-all evdev loader for udev-based systems
-# We don't simply match on any device since that also adds accelerometers
-# and other devices that we don't really want to use. The list below
-# matches everything but joysticks.
-
-Section "InputClass"
- Identifier "evdev pointer catchall"
- MatchIsPointer "on"
- MatchDevicePath "/dev/input/event*"
- Driver "evdev"
-EndSection
-
-Section "InputClass"
- Identifier "evdev keyboard catchall"
- MatchIsKeyboard "on"
- MatchDevicePath "/dev/input/event*"
- Driver "evdev"
-EndSection
-
-Section "InputClass"
- Identifier "evdev touchpad catchall"
- MatchIsTouchpad "on"
- MatchDevicePath "/dev/input/event*"
- Driver "evdev"
-EndSection
-
-Section "InputClass"
- Identifier "evdev tablet catchall"
- MatchIsTablet "on"
- MatchDevicePath "/dev/input/event*"
- Driver "evdev"
-EndSection
-
-Section "InputClass"
- Identifier "evdev touchscreen catchall"
- MatchIsTouchscreen "on"
- MatchDevicePath "/dev/input/event*"
- Driver "evdev"
-EndSection
+#
+# Catch-all evdev loader for udev-based systems
+# We don't simply match on any device since that also adds accelerometers
+# and other devices that we don't really want to use. The list below
+# matches everything but joysticks.
+
+Section "InputClass"
+ Identifier "evdev pointer catchall"
+ MatchIsPointer "on"
+ MatchDevicePath "/dev/input/event*"
+ Driver "evdev"
+EndSection
+
+Section "InputClass"
+ Identifier "evdev keyboard catchall"
+ MatchIsKeyboard "on"
+ MatchDevicePath "/dev/input/event*"
+ Driver "evdev"
+EndSection
+
+Section "InputClass"
+ Identifier "evdev touchpad catchall"
+ MatchIsTouchpad "on"
+ MatchDevicePath "/dev/input/event*"
+ Driver "evdev"
+EndSection
+
+Section "InputClass"
+ Identifier "evdev tablet catchall"
+ MatchIsTablet "on"
+ MatchDevicePath "/dev/input/event*"
+ Driver "evdev"
+EndSection
+
+Section "InputClass"
+ Identifier "evdev touchscreen catchall"
+ MatchIsTouchscreen "on"
+ MatchDevicePath "/dev/input/event*"
+ Driver "evdev"
+EndSection
diff --git a/xorg-server/config/dbus-api b/xorg-server/config/dbus-api
index 3c5ea32a6..018e98657 100644
--- a/xorg-server/config/dbus-api
+++ b/xorg-server/config/dbus-api
@@ -1,40 +1,40 @@
-D-BUS Configuration API v2
-----------------------------
-
-The X server will register the bus name org.x.config.displayN, and the
-object /org/x/config/N, where N is the display number.
-
-Currently only hotplugging of input devices is supported.
-
-org.x.config.input:
- org.x.config.input.version:
- Returns one unsigned int32, which is the API version.
-
- org.x.config.input.add:
- Takes an argument of key/value option pairs in arrays, e.g.:
- [ss][ss][ss][ss]
- is the signature for four options. These options will be passed
- to the input driver as with any others.
- Option names beginning with _ are not allowed; they are reserved
- for internal use.
-
- Returns a number of signed int32s. Positive integers are the
- device IDs of new devices; negative numbers are X error codes,
- as defined in X.h. BadMatch will be returned if the options
- given do not match any device. BadValue is returned for a malformed
- message. (Example: 8 is new device ID 8; -8 is BadMatch.)
-
- Notably, BadAlloc is never returned: the server internally signals
- to D-BUS that the attempt failed for lack of memory.
-
- org.x.config.input.remove:
- Takes one uint32 argument, which is the device ID to remove, i.e.:
- u
- is the signature.
-
- Returns one signed int32 which represents an X status as defined in
- X.h. See org.x.config.input.add. Error codes are negative numbers.
-
- org.x.config.input.listDevices:
- Lists the currently active devices. No argument.
- Return value is sequence of [<id> <name>] [<id> <name>] ..., i.e. [us].
+D-BUS Configuration API v2
+----------------------------
+
+The X server will register the bus name org.x.config.displayN, and the
+object /org/x/config/N, where N is the display number.
+
+Currently only hotplugging of input devices is supported.
+
+org.x.config.input:
+ org.x.config.input.version:
+ Returns one unsigned int32, which is the API version.
+
+ org.x.config.input.add:
+ Takes an argument of key/value option pairs in arrays, e.g.:
+ [ss][ss][ss][ss]
+ is the signature for four options. These options will be passed
+ to the input driver as with any others.
+ Option names beginning with _ are not allowed; they are reserved
+ for internal use.
+
+ Returns a number of signed int32s. Positive integers are the
+ device IDs of new devices; negative numbers are X error codes,
+ as defined in X.h. BadMatch will be returned if the options
+ given do not match any device. BadValue is returned for a malformed
+ message. (Example: 8 is new device ID 8; -8 is BadMatch.)
+
+ Notably, BadAlloc is never returned: the server internally signals
+ to D-BUS that the attempt failed for lack of memory.
+
+ org.x.config.input.remove:
+ Takes one uint32 argument, which is the device ID to remove, i.e.:
+ u
+ is the signature.
+
+ Returns one signed int32 which represents an X status as defined in
+ X.h. See org.x.config.input.add. Error codes are negative numbers.
+
+ org.x.config.input.listDevices:
+ Lists the currently active devices. No argument.
+ Return value is sequence of [<id> <name>] [<id> <name>] ..., i.e. [us].
diff --git a/xorg-server/config/fdi2iclass.py b/xorg-server/config/fdi2iclass.py
index 9dc06a76f..897444068 100644
--- a/xorg-server/config/fdi2iclass.py
+++ b/xorg-server/config/fdi2iclass.py
@@ -1,202 +1,202 @@
-#!/usr/bin/python
-#
-# Convert xorg keys from hal FDIs files to xorg.conf InputClass sections.
-# Modified from Martin Pitt's original fdi2mpi.py script:
-# http://cgit.freedesktop.org/media-player-info/tree/tools/fdi2mpi.py
-#
-# (C) 2010 Dan Nicholson
-# (C) 2009 Canonical Ltd.
-# Author: Dan Nicholson <dbn.lists@gmail.com>
-# Author: Martin Pitt <martin.pitt@ubuntu.com>
-#
-# Permission is hereby granted, free of charge, to any person obtaining a copy
-# of this software and associated documentation files (the "Software"), to
-# deal in the Software without restriction, including without limitation the
-# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
-# sell copies of the Software, and to permit persons to whom the Software is
-# fur- nished to do so, subject to the following conditions:
-#
-# The above copyright notice and this permission notice shall be included in
-# all copies or substantial portions of the Software.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-# FIT- NESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-# THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-# AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CON-
-# NECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-import sys, xml.dom.minidom
-
-# dict converting <match> tags to Match* entries
-match_table = {
- 'info.product': 'MatchProduct',
- 'input.product': 'MatchProduct',
- 'info.vendor': 'MatchVendor',
- 'input.vendor': 'MatchVendor',
- 'info.device': 'MatchDevicePath',
- 'linux.device_file': 'MatchDevicePath',
- '/org/freedesktop/Hal/devices/computer:system.kernel.name': 'MatchOS',
- '@info.parent:pnp.id': 'MatchPnPID',
-}
-
-# dict converting info.capabilities list to Match* entries
-cap_match_table = {
- 'input.keys': 'MatchIsKeyboard',
- 'input.keyboard': 'MatchIsKeyboard',
- 'input.keypad': 'MatchIsKeyboard',
- 'input.mouse': 'MatchIsPointer',
- 'input.joystick': 'MatchIsJoystick',
- 'input.tablet': 'MatchIsTablet',
- 'input.touchpad': 'MatchIsTouchpad',
- 'input.touchscreen': 'MatchIsTouchscreen',
-}
-
-def device_glob(path):
- '''Convert a contains device path to a glob entry'''
- if path[0] != '/':
- path = '*' + path
- return path + '*'
-
-def parse_match(node):
- '''Parse a <match> tag to a tuple with InputClass values'''
- match = None
- value = None
- booltype = False
-
- # see what type of key we have
- if node.attributes.has_key('key'):
- key = node.attributes['key'].nodeValue
- if key in match_table:
- match = match_table[key]
- elif key == 'info.capabilities':
- booltype = True
-
- # bail out now if it's unrecognized
- if not match and not booltype:
- return (match, value)
-
- if node.attributes.has_key('string'):
- value = node.attributes['string'].nodeValue
- elif node.attributes.has_key('contains'):
- value = node.attributes['contains'].nodeValue
- if match == 'MatchDevicePath':
- value = device_glob(value)
- elif booltype and value in cap_match_table:
- match = cap_match_table[value]
- value = 'yes'
- elif node.attributes.has_key('string_outof'):
- value = node.attributes['string_outof'].nodeValue.replace(';','|')
- elif node.attributes.has_key('contains_outof'):
- all_values = node.attributes['contains_outof'].nodeValue.split(';')
- for v in all_values:
- if match == 'MatchDevicePath':
- v = device_glob(v)
- elif match == 'MatchPnPID' and len(v) < 7:
- v += '*'
- if value:
- value += '|' + v
- else:
- value = v
-
- return (match, value)
-
-def parse_options(node):
- '''Parse the x11_* options and return InputClass entries'''
- driver = ''
- ignore = False
- options = []
- for n in node.childNodes:
- if n.nodeType != xml.dom.minidom.Node.ELEMENT_NODE:
- continue
-
- tag = n.tagName
- key = n.attributes['key'].nodeValue
- value = ''
-
- if n.hasChildNodes():
- content_node = n.childNodes[0]
- assert content_node.nodeType == xml.dom.Node.TEXT_NODE
- value = content_node.nodeValue
-
- if tag == 'match':
- continue
- assert tag in ('addset', 'merge', 'append', 'remove')
-
- if tag == 'remove' and key == 'input.x11_driver':
- ignore = True
- elif key == 'input.x11_driver':
- driver = value
- elif key.startswith('input.x11_options.'):
- option = key.split('.', 2)[2]
- options.append((option, value))
-
- return (driver, ignore, options)
-
-def is_match_node(node):
- '''Check if a node is a <match> element'''
- return node.nodeType == xml.dom.minidom.Node.ELEMENT_NODE and \
- node.tagName == 'match'
-
-def parse_all_matches(node):
- '''Parse a x11 match tag and any parents that don't supply their
- own options'''
- matches = []
-
- while True:
- (key, value) = parse_match(node)
- if key and value:
- matches.append((key, value))
-
- # walk up to a parent match node
- node = node.parentNode
- if node == None or not is_match_node(node):
- break
-
- # leave if there other options at this level
- children = set([n.tagName for n in node.childNodes
- if n.nodeType == xml.dom.minidom.Node.ELEMENT_NODE])
- if children & set(['addset', 'merge', 'append']):
- break
-
- return matches
-
-# stupid counter to give "unique" rule names
-num_sections = 1
-def print_section(matches, driver, ignore, options):
- '''Print a valid InputClass section to stdout'''
- global num_sections
- print 'Section "InputClass"'
- print '\tIdentifier "Converted Class %d"' % num_sections
- num_sections += 1
- for m, v in matches:
- print '\t%s "%s"' % (m, v)
- if driver:
- print '\tDriver "%s"' % driver
- if ignore:
- print '\tOption "Ignore" "yes"'
- for o, v in options:
- print '\tOption "%s" "%s"' % (o, v)
- print 'EndSection'
-
-def parse_fdi(fdi):
- '''Parse x11 matches from fdi'''
- # find all <match> leaf nodes
- num = 0
- for match_node in fdi.getElementsByTagName('match'):
- children = set([n.tagName for n in match_node.childNodes
- if n.nodeType == xml.dom.minidom.Node.ELEMENT_NODE])
-
- # see if there are any options at this level
- (driver, ignore, options) = parse_options(match_node)
- if not driver and not ignore and not options:
- continue
-
- matches = parse_all_matches(match_node)
- if num > 0:
- print
- print_section(matches, driver, ignore, options)
- num += 1
-
-for f in sys.argv[1:]:
- parse_fdi(xml.dom.minidom.parse(f))
+#!/usr/bin/python
+#
+# Convert xorg keys from hal FDIs files to xorg.conf InputClass sections.
+# Modified from Martin Pitt's original fdi2mpi.py script:
+# http://cgit.freedesktop.org/media-player-info/tree/tools/fdi2mpi.py
+#
+# (C) 2010 Dan Nicholson
+# (C) 2009 Canonical Ltd.
+# Author: Dan Nicholson <dbn.lists@gmail.com>
+# Author: Martin Pitt <martin.pitt@ubuntu.com>
+#
+# Permission is hereby granted, free of charge, to any person obtaining a copy
+# of this software and associated documentation files (the "Software"), to
+# deal in the Software without restriction, including without limitation the
+# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
+# sell copies of the Software, and to permit persons to whom the Software is
+# fur- nished to do so, subject to the following conditions:
+#
+# The above copyright notice and this permission notice shall be included in
+# all copies or substantial portions of the Software.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FIT- NESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+# THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+# AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CON-
+# NECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+import sys, xml.dom.minidom
+
+# dict converting <match> tags to Match* entries
+match_table = {
+ 'info.product': 'MatchProduct',
+ 'input.product': 'MatchProduct',
+ 'info.vendor': 'MatchVendor',
+ 'input.vendor': 'MatchVendor',
+ 'info.device': 'MatchDevicePath',
+ 'linux.device_file': 'MatchDevicePath',
+ '/org/freedesktop/Hal/devices/computer:system.kernel.name': 'MatchOS',
+ '@info.parent:pnp.id': 'MatchPnPID',
+}
+
+# dict converting info.capabilities list to Match* entries
+cap_match_table = {
+ 'input.keys': 'MatchIsKeyboard',
+ 'input.keyboard': 'MatchIsKeyboard',
+ 'input.keypad': 'MatchIsKeyboard',
+ 'input.mouse': 'MatchIsPointer',
+ 'input.joystick': 'MatchIsJoystick',
+ 'input.tablet': 'MatchIsTablet',
+ 'input.touchpad': 'MatchIsTouchpad',
+ 'input.touchscreen': 'MatchIsTouchscreen',
+}
+
+def device_glob(path):
+ '''Convert a contains device path to a glob entry'''
+ if path[0] != '/':
+ path = '*' + path
+ return path + '*'
+
+def parse_match(node):
+ '''Parse a <match> tag to a tuple with InputClass values'''
+ match = None
+ value = None
+ booltype = False
+
+ # see what type of key we have
+ if node.attributes.has_key('key'):
+ key = node.attributes['key'].nodeValue
+ if key in match_table:
+ match = match_table[key]
+ elif key == 'info.capabilities':
+ booltype = True
+
+ # bail out now if it's unrecognized
+ if not match and not booltype:
+ return (match, value)
+
+ if node.attributes.has_key('string'):
+ value = node.attributes['string'].nodeValue
+ elif node.attributes.has_key('contains'):
+ value = node.attributes['contains'].nodeValue
+ if match == 'MatchDevicePath':
+ value = device_glob(value)
+ elif booltype and value in cap_match_table:
+ match = cap_match_table[value]
+ value = 'yes'
+ elif node.attributes.has_key('string_outof'):
+ value = node.attributes['string_outof'].nodeValue.replace(';','|')
+ elif node.attributes.has_key('contains_outof'):
+ all_values = node.attributes['contains_outof'].nodeValue.split(';')
+ for v in all_values:
+ if match == 'MatchDevicePath':
+ v = device_glob(v)
+ elif match == 'MatchPnPID' and len(v) < 7:
+ v += '*'
+ if value:
+ value += '|' + v
+ else:
+ value = v
+
+ return (match, value)
+
+def parse_options(node):
+ '''Parse the x11_* options and return InputClass entries'''
+ driver = ''
+ ignore = False
+ options = []
+ for n in node.childNodes:
+ if n.nodeType != xml.dom.minidom.Node.ELEMENT_NODE:
+ continue
+
+ tag = n.tagName
+ key = n.attributes['key'].nodeValue
+ value = ''
+
+ if n.hasChildNodes():
+ content_node = n.childNodes[0]
+ assert content_node.nodeType == xml.dom.Node.TEXT_NODE
+ value = content_node.nodeValue
+
+ if tag == 'match':
+ continue
+ assert tag in ('addset', 'merge', 'append', 'remove')
+
+ if tag == 'remove' and key == 'input.x11_driver':
+ ignore = True
+ elif key == 'input.x11_driver':
+ driver = value
+ elif key.startswith('input.x11_options.'):
+ option = key.split('.', 2)[2]
+ options.append((option, value))
+
+ return (driver, ignore, options)
+
+def is_match_node(node):
+ '''Check if a node is a <match> element'''
+ return node.nodeType == xml.dom.minidom.Node.ELEMENT_NODE and \
+ node.tagName == 'match'
+
+def parse_all_matches(node):
+ '''Parse a x11 match tag and any parents that don't supply their
+ own options'''
+ matches = []
+
+ while True:
+ (key, value) = parse_match(node)
+ if key and value:
+ matches.append((key, value))
+
+ # walk up to a parent match node
+ node = node.parentNode
+ if node == None or not is_match_node(node):
+ break
+
+ # leave if there other options at this level
+ children = set([n.tagName for n in node.childNodes
+ if n.nodeType == xml.dom.minidom.Node.ELEMENT_NODE])
+ if children & set(['addset', 'merge', 'append']):
+ break
+
+ return matches
+
+# stupid counter to give "unique" rule names
+num_sections = 1
+def print_section(matches, driver, ignore, options):
+ '''Print a valid InputClass section to stdout'''
+ global num_sections
+ print 'Section "InputClass"'
+ print '\tIdentifier "Converted Class %d"' % num_sections
+ num_sections += 1
+ for m, v in matches:
+ print '\t%s "%s"' % (m, v)
+ if driver:
+ print '\tDriver "%s"' % driver
+ if ignore:
+ print '\tOption "Ignore" "yes"'
+ for o, v in options:
+ print '\tOption "%s" "%s"' % (o, v)
+ print 'EndSection'
+
+def parse_fdi(fdi):
+ '''Parse x11 matches from fdi'''
+ # find all <match> leaf nodes
+ num = 0
+ for match_node in fdi.getElementsByTagName('match'):
+ children = set([n.tagName for n in match_node.childNodes
+ if n.nodeType == xml.dom.minidom.Node.ELEMENT_NODE])
+
+ # see if there are any options at this level
+ (driver, ignore, options) = parse_options(match_node)
+ if not driver and not ignore and not options:
+ continue
+
+ matches = parse_all_matches(match_node)
+ if num > 0:
+ print
+ print_section(matches, driver, ignore, options)
+ num += 1
+
+for f in sys.argv[1:]:
+ parse_fdi(xml.dom.minidom.parse(f))
diff --git a/xorg-server/config/x11-input.fdi b/xorg-server/config/x11-input.fdi
index 42489821d..b263f36cb 100644
--- a/xorg-server/config/x11-input.fdi
+++ b/xorg-server/config/x11-input.fdi
@@ -1,93 +1,93 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<deviceinfo version="0.2">
- <device>
-
- <!-- The way this works:
-
- Match against some input device (see the HAL specification for more
- information), and then merge in keys, which you can use to specify
- the configuration similar to the way you would in xorg.conf. You will
- need to restart HAL after making changes. If you are having issues,
- starting X with the -logverbose 7 flag may yield useful information.
-
- Keys Supported:
-
- Key "input.x11_driver" (string)
- This specifies the driver to use. You MUST specify this option,
- or a driver will not be loaded and the rest will be ignored by
- Xorg
-
- Key "input.x11_options.<option name>" (string)
- This allows you to specify arbitrary options to pass to the driver.
- Anything you would normally specify in xorg.conf goes here. So, for
- option "Mode" in xorg.conf, you would specify the key name of
- "input.x11_options.Mode".
-
- Do not specify "input.x11_options.Device" since "input.device"
- will be used automatically.
-
- You MUST specify all options as strings, otherwise the server will
- ignore them.
-
- Legacy Keys
- "input.xkb.rules"
- "input.xkb.model"
- "input.xkb.layout"
- "input.xkb.variant"
- "input.xkb.options"
-
- These keys are deprecated. Use these instead:
- "input.x11_options.XkbRules"
- "input.x11_options.XkbModel"
- "input.x11_options.XkbLayout"
- "input.x11_options.XkbVariant"
- "input.x11_options.XkbOptions"
-
- See the evdev documentation for more information.
-
- FIXME: Support tablets too.
- TODO: I think its fixed, can't test
-
- -->
-
- <match key="info.capabilities" contains="input.mouse">
- <merge key="input.x11_driver" type="string">mouse</merge>
- <match key="/org/freedesktop/Hal/devices/computer:system.kernel.name"
- string="Linux">
- <merge key="input.x11_driver" type="string">evdev</merge>
- </match>
- <match key="/org/freedesktop/Hal/devices/computer:system.kernel.name"
- string="SunOS">
- <match key="input.device" contains="usb">
- <merge key="input.x11_options.StreamsModule" type="string">usbms</merge>
- <merge key="input.x11_options.Protocol" type="string">VUID</merge>
- </match>
- </match>
- </match>
-
- <match key="info.capabilities" contains="input.keys">
- <merge key="input.x11_options.XkbRules" type="string">base</merge>
-
- <!-- If we're using Linux, we use evdev by default (falling back to
- kbd otherwise). -->
- <merge key="input.x11_driver" type="string">kbd</merge>
- <merge key="input.x11_options.XkbModel" type="string">pc105</merge>
- <match key="/org/freedesktop/Hal/devices/computer:system.kernel.name"
- string="Linux">
- <merge key="input.x11_driver" type="string">evdev</merge>
- <merge key="input.x11_options.XkbModel" type="string">evdev</merge>
- </match>
- <match key="/org/freedesktop/Hal/devices/computer:system.kernel.name"
- string="SunOS">
- <match key="input.device" contains="usb">
- <merge key="input.x11_options.StreamsModule" type="string">usbkbm</merge>
- <merge key="input.x11_options.Protocol" type="string">VUID</merge>
- </match>
- </match>
-
- <merge key="input.x11_options.XkbLayout" type="string">us</merge>
-
- <merge key="input.x11_options.XkbVariant" type="string" />
- </match>
- </device>
-</deviceinfo>
+<?xml version="1.0" encoding="UTF-8"?>
+<deviceinfo version="0.2">
+ <device>
+
+ <!-- The way this works:
+
+ Match against some input device (see the HAL specification for more
+ information), and then merge in keys, which you can use to specify
+ the configuration similar to the way you would in xorg.conf. You will
+ need to restart HAL after making changes. If you are having issues,
+ starting X with the -logverbose 7 flag may yield useful information.
+
+ Keys Supported:
+
+ Key "input.x11_driver" (string)
+ This specifies the driver to use. You MUST specify this option,
+ or a driver will not be loaded and the rest will be ignored by
+ Xorg
+
+ Key "input.x11_options.<option name>" (string)
+ This allows you to specify arbitrary options to pass to the driver.
+ Anything you would normally specify in xorg.conf goes here. So, for
+ option "Mode" in xorg.conf, you would specify the key name of
+ "input.x11_options.Mode".
+
+ Do not specify "input.x11_options.Device" since "input.device"
+ will be used automatically.
+
+ You MUST specify all options as strings, otherwise the server will
+ ignore them.
+
+ Legacy Keys
+ "input.xkb.rules"
+ "input.xkb.model"
+ "input.xkb.layout"
+ "input.xkb.variant"
+ "input.xkb.options"
+
+ These keys are deprecated. Use these instead:
+ "input.x11_options.XkbRules"
+ "input.x11_options.XkbModel"
+ "input.x11_options.XkbLayout"
+ "input.x11_options.XkbVariant"
+ "input.x11_options.XkbOptions"
+
+ See the evdev documentation for more information.
+
+ FIXME: Support tablets too.
+ TODO: I think its fixed, can't test
+
+ -->
+
+ <match key="info.capabilities" contains="input.mouse">
+ <merge key="input.x11_driver" type="string">mouse</merge>
+ <match key="/org/freedesktop/Hal/devices/computer:system.kernel.name"
+ string="Linux">
+ <merge key="input.x11_driver" type="string">evdev</merge>
+ </match>
+ <match key="/org/freedesktop/Hal/devices/computer:system.kernel.name"
+ string="SunOS">
+ <match key="input.device" contains="usb">
+ <merge key="input.x11_options.StreamsModule" type="string">usbms</merge>
+ <merge key="input.x11_options.Protocol" type="string">VUID</merge>
+ </match>
+ </match>
+ </match>
+
+ <match key="info.capabilities" contains="input.keys">
+ <merge key="input.x11_options.XkbRules" type="string">base</merge>
+
+ <!-- If we're using Linux, we use evdev by default (falling back to
+ kbd otherwise). -->
+ <merge key="input.x11_driver" type="string">kbd</merge>
+ <merge key="input.x11_options.XkbModel" type="string">pc105</merge>
+ <match key="/org/freedesktop/Hal/devices/computer:system.kernel.name"
+ string="Linux">
+ <merge key="input.x11_driver" type="string">evdev</merge>
+ <merge key="input.x11_options.XkbModel" type="string">evdev</merge>
+ </match>
+ <match key="/org/freedesktop/Hal/devices/computer:system.kernel.name"
+ string="SunOS">
+ <match key="input.device" contains="usb">
+ <merge key="input.x11_options.StreamsModule" type="string">usbkbm</merge>
+ <merge key="input.x11_options.Protocol" type="string">VUID</merge>
+ </match>
+ </match>
+
+ <merge key="input.x11_options.XkbLayout" type="string">us</merge>
+
+ <merge key="input.x11_options.XkbVariant" type="string" />
+ </match>
+ </device>
+</deviceinfo>
diff --git a/xorg-server/config/xorg-server.conf b/xorg-server/config/xorg-server.conf
index e80f8df08..47a9a7824 100644
--- a/xorg-server/config/xorg-server.conf
+++ b/xorg-server/config/xorg-server.conf
@@ -1,13 +1,13 @@
-<!DOCTYPE busconfig PUBLIC
- "-//freedesktop//DTD D-BUS Bus Configuration 1.0//EN"
- "http://www.freedesktop.org/standards/dbus/1.0/busconfig.dtd">
-<busconfig>
- <policy context="default">
- <allow own="org.x.config.display0"/>
- <allow send_destination="org.x.config.display0"/>
- <allow send_interface="org.x.config.display0"/>
- <allow own="org.x.config.display1"/>
- <allow send_destination="org.x.config.display1"/>
- <allow send_interface="org.x.config.display1"/>
- </policy>
-</busconfig>
+<!DOCTYPE busconfig PUBLIC
+ "-//freedesktop//DTD D-BUS Bus Configuration 1.0//EN"
+ "http://www.freedesktop.org/standards/dbus/1.0/busconfig.dtd">
+<busconfig>
+ <policy context="default">
+ <allow own="org.x.config.display0"/>
+ <allow send_destination="org.x.config.display0"/>
+ <allow send_interface="org.x.config.display0"/>
+ <allow own="org.x.config.display1"/>
+ <allow send_destination="org.x.config.display1"/>
+ <allow send_interface="org.x.config.display1"/>
+ </policy>
+</busconfig>
diff --git a/xorg-server/dbe/Makefile.am b/xorg-server/dbe/Makefile.am
index 965d2fa26..043555b8c 100644
--- a/xorg-server/dbe/Makefile.am
+++ b/xorg-server/dbe/Makefile.am
@@ -1,13 +1,13 @@
-noinst_LTLIBRARIES = libdbe.la
-
-AM_CFLAGS = $(DIX_CFLAGS)
-
-if XORG
-sdk_HEADERS = dbestruct.h
-endif
-
-libdbe_la_SOURCES = \
- dbe.c \
- midbe.c \
- midbe.h \
- midbestr.h
+noinst_LTLIBRARIES = libdbe.la
+
+AM_CFLAGS = $(DIX_CFLAGS)
+
+if XORG
+sdk_HEADERS = dbestruct.h
+endif
+
+libdbe_la_SOURCES = \
+ dbe.c \
+ midbe.c \
+ midbe.h \
+ midbestr.h
diff --git a/xorg-server/dix/BuiltInAtoms b/xorg-server/dix/BuiltInAtoms
index 473990e7b..910c62706 100644
--- a/xorg-server/dix/BuiltInAtoms
+++ b/xorg-server/dix/BuiltInAtoms
@@ -1,329 +1,329 @@
-File: .../x11/server/dix/BuiltInAtoms
-
-This file is of a fixed format and is used to generate both the file
-include/XAtom.h and dix/initatoms.c. Neither of those files should be
-edited directly. Changing the atoms in this file, or even the order in
-which they occur, is equivalent to forcing a new (minor) version number
-on the server. Take care.
-
-The format of the file is that each built in atom starts in column 1
-with no text, other than spaces and tabs, on that line other than a
-mandatory trailing "@" at the end of the line. For each atom (Foo)
-below the defines will be of the form
- #define XA_Foo <n>
-and the string value of the atom will be "Foo".
-
-The comment lines in this file are not guaranteed to be accurate. To see the
-current truth, look at the Xlib documentation as well as the protocol spec.
-
-Atoms occur in five distinct name spaces within the protocol. Any particular
-atom may or may not have some client interpretation within each of the name
-spaces. For each of the built in atoms, the intended semantics and the space
-within which it is defined is indicated.
-
-Those name spaces are
- Property names
- Property types
- Selections
- Font properties
- Type of a ClientMessage event (none built into server)
-
-For the font properties mentioned here, see the spec for more information.
-
- -- Selections --
-
-PRIMARY @
- Selection.
-SECONDARY @
- Selection.
-
- -- Property types and names --
-
-ARC @
- Property type:
- x, y: INT16
- width, height: CARD16,
- angle1, angle2: INT16
-ATOM @
- Property type:
- atom: ATOM
-BITMAP @
- Property type:
- bitmap: PIXMAP
- This is asserted to be of depth 1.
-CARDINAL @
- Property type:
- card: CARD32 or CARD16 or CARD8
- the datum size is dependent on the property format
-COLORMAP @
- Property type:
- colormap: COLORMAP
-CURSOR @
- Property type:
- cursor: CURSOR
-CUT_BUFFER0 @
-CUT_BUFFER1 @
-CUT_BUFFER2 @
-CUT_BUFFER3 @
-CUT_BUFFER4 @
-CUT_BUFFER5 @
-CUT_BUFFER6 @
-CUT_BUFFER7 @
- Property name: (type: STRING)
- Used to implement cut buffer ring, in particular Andrew uses
- this mechanism. Anyone else using this sort of IPC mechanism
- should use these properties.
-
- Data is normally fetched and stored out of CUT_BUFFER0; the
- RotateProperties request is used to rotate these buffers.
-DRAWABLE @
- Property type:
- drawable: DRAWABLE
-FONT @
- Property type:
- font: FONT
-INTEGER @
- Property type:
- card: INT32 or INT16 or INT8
- the datum size is dependent on the property format
-PIXMAP @
- Property type:
- pixmap: PIXMAP
-POINT @
- Property type:
- x, y: INT16
-RECTANGLE @
- Property type:
- x, y: INT16
- width, height: CARD16
-RESOURCE_MANAGER @
- Property name: (type: STRING)
- Contents of the user's resource manager data base.
-RGB_COLOR_MAP @
- Property type:
- colormap: COLORMAP
- red-max: CARD32
- red-mult: CARD32
- green-max: CARD32
- green-mult: CARD32
- blue-max: CARD32
- blue-mult: CARD32
- base-pixel: CARD32
-
- The fields `red_max', `green_max', and `blue_max' give the maximum
- red, green, and blue values, respectively. Each color
- coefficient ranges from 0 to its max, inclusive. For example,
- a common colormap allocation is 3/3/2: 3 planes for red, 3
- planes for green, and 2 planes for blue. Such a colormap would
- have red_max == 7, green_max = 7, and blue_max = 3. An alternate
- allocation that uses only 216 colors is red_max = 5, green_max =
- 5, and blue_max = 5.
-
- The fields `red_mult', `green_mult', and `blue_mult' give the
- scale factors used to compose a full pixel value. (See next
- paragraph.) For a 3/3/2 allocation red_mult might be 32,
- green_mult might be 4, and blue_mult might be 1. For a
- 6-colors-each allocation, red_mult might be 36, green_mult might
- be 6, and blue_mult might be 1.
-
- The field `base_pixel' gives the base pixel value used to
- compose a full pixel value. Normally base_pixel is obtained
- from a call to XAllocColorPlanes(). Given integer red, green,
- and blue coefficients in their appropriate ranges, one can
- compute a corresponding pixel value with the expression:
-
- r * red_mult + g * green_mult + b * blue_mult + base_pixel
-
- For gray-scale colormaps, only the colormap, red_max, red_mult,
- and base_pixel fields are defined; the other fields are
- ignored. To compute a gray-scale pixel value, use:
-
- gray * red_mult + base_pixel
-
- This is provided to allow applications to share color maps.
-
-RGB_BEST_MAP @
-RGB_BLUE_MAP @
-RGB_DEFAULT_MAP @
-RGB_GRAY_MAP @
-RGB_GREEN_MAP @
-RGB_RED_MAP @
- Property name: (type: RGB_COLOR_MAP)
- The needs of most applications can be met with five colormaps.
- Polite applications may need only a small RGB space, and can
- use a portion of the default color map. Applications doing
- high-quality RGB rendering will need an entire colormap,
- filled with as large an RGB space as possible, e.g. 332. For
- color separations, an application may need maximum device
- resolution for each of red, green, and blue, even if this
- requires three renderings with three colormaps.
-
- Each of the above five names would be used for sharing color
- maps.
-STRING @
- Property type:
- sequence of Bytes
-VISUALID @
- Property type:
- visual: VISUALID
-WINDOW @
- Property type:
- window: WINDOW
-WM_COMMAND @
- Property name: (type: STRING)
- Command line arguments used to invoke this application. The
- arguments are delimited by null characters (ASCII 0).
-WM_HINTS @
- Property type:
- flags: CARD32
- input: BOOL32
- initial-state: CARD32
- icon-pixmap: PIXMAP
- icon-window: WINDOW
- icon_mask: BITMAP
- icon-x, icon-y: INT32
- flags contains the following bits
- 0x00000001 input hint
- 0x00000002 state hint
- 0x00000004 icon pixmap hint
- 0x00000008 icon window hint
- 0x00000010 icon position hint
- values for initial-state
- 0 unspecified -> application does not
- care and WM should pick one.
- 1 normal
- 2 zoomed
- 3 iconic
- 4 inactive -> application believes
- itself to be seldomly used. WM may wish to
- place it on an inactive menu.
- This type is potentially extensible. The order is critical;
- append to the end only.
- Property name: (type: WM_HINTS)
- Additional hints set by the client for use by the window
- manager.
-WM_CLIENT_MACHINE @
- Property name: (type: STRING)
- used to communicate with the window manager. The host name
- of the machine the client is running on may be set here.
-WM_ICON_NAME @
- Property name: (type: STRING)
- what the application would like the label to be for
- the iconic form of the window.
-WM_ICON_SIZE @
- Property type:
- minWidth, min-height: CARD32
- maxWidth, max-height: CARD32
- widthInc, height-inc: CARD32
- Property name: (type: ICON_SIZE)
- The window manager may set this property on the root window
- to specify the icon sizes it allows.
-WM_NAME @
- Property name: (type: STRING)
- used to communicate with the window manager. This is
- what the application would like the label for the window.
-WM_NORMAL_HINTS @
- Property name: (type: SIZE_HINTS)
- used to communicate with the window manager. This is size
- hints for a window in its "normal" state.
-WM_SIZE_HINTS @
- Property type:
- flags: CARD32
- x, y: INT32
- width, height: CARD32
- min-width, min-height: CARD32
- max-width, max-height: CARD32
- width-inc, height-inc: CARD32
- min-aspect-x, min-aspect-y: CARD32
- max-aspect-x, max-aspect-y: CARD32
- flags contains the following bits
- 0x00000001 user specified x and y
- 0x00000002 user specified width and height
- 0x00000004 program specified position
- 0x00000008 program specified size
- 0x00000010 program specified minimum size
- 0x00000020 program specified maximum size
- 0x00000040 program specified resize increment
- 0x00000080 program specified aspect ratio
- This type is potentially extensible. The order is critical;
- append to the end only.
-WM_ZOOM_HINTS @
- Property name: (type: SIZE_HINTS)
- used to communicate with the window manager. This is size
- hints for a window in its "zoomed" state.
-
- -- Font properties --
-
-MIN_SPACE @
- Font property: CARD32
-NORM_SPACE @
- Font property: CARD32
-MAX_SPACE @
- Font property: CARD32
-END_SPACE @
- Font property: CARD32
-SUPERSCRIPT_X @
- Font property: INT32
-SUPERSCRIPT_Y @
- Font property: INT32
-SUBSCRIPT_X @
- Font property: INT32
-SUBSCRIPT_Y @
- Font property: INT32
-UNDERLINE_POSITION @
- Font property: INT32
-UNDERLINE_THICKNESS @
- Font property: CARD32
-STRIKEOUT_ASCENT @
- Font property: INT32
-STRIKEOUT_DESCENT @
- Font property: INT32
-ITALIC_ANGLE @
- Font property: INT32
-X_HEIGHT @
- Font property: INT32
-QUAD_WIDTH @
- Font property: INT32
-WEIGHT @
- Font property: CARD32
-POINT_SIZE @
- Font property: CARD32
-RESOLUTION @
- Font property: CARD32
-
-The following optional properties on fonts have values that are atoms. The
-atom print name is the useful information.
-
-COPYRIGHT @
- of the font distribution
-NOTICE @
- trademark/copyright of the character shapes
-FONT_NAME @
- name of this particular instance of a font
-FAMILY_NAME @
- name of the 'font family' to which it belongs
-FULL_NAME @
- full text name of the font
-
-The following aren't in order but putting them at the end avoids encoding
-changes.
-
-CAP_HEIGHT @
- Font property: CARD32
-
-
-WM_CLASS @
- Property name: (type: STRING)
- Used (possibly by some window managers; definitely by
- session managers) to look up resources in the resource
- data base on behalf of the client who set this property.
- There are 2 elements:
- {char *resource_name; char *resource_class;}
- delimited by a null character (ascii 0)
-
-WM_TRANSIENT_FOR @
- Property name: (type: WINDOW)
- Used by transient top-level windows, such as dialog
- boxes, to point to their logical "parents". The window
- manager can then take down the dialog boxes when the
- "parent" gets iconified, for instance.
+File: .../x11/server/dix/BuiltInAtoms
+
+This file is of a fixed format and is used to generate both the file
+include/XAtom.h and dix/initatoms.c. Neither of those files should be
+edited directly. Changing the atoms in this file, or even the order in
+which they occur, is equivalent to forcing a new (minor) version number
+on the server. Take care.
+
+The format of the file is that each built in atom starts in column 1
+with no text, other than spaces and tabs, on that line other than a
+mandatory trailing "@" at the end of the line. For each atom (Foo)
+below the defines will be of the form
+ #define XA_Foo <n>
+and the string value of the atom will be "Foo".
+
+The comment lines in this file are not guaranteed to be accurate. To see the
+current truth, look at the Xlib documentation as well as the protocol spec.
+
+Atoms occur in five distinct name spaces within the protocol. Any particular
+atom may or may not have some client interpretation within each of the name
+spaces. For each of the built in atoms, the intended semantics and the space
+within which it is defined is indicated.
+
+Those name spaces are
+ Property names
+ Property types
+ Selections
+ Font properties
+ Type of a ClientMessage event (none built into server)
+
+For the font properties mentioned here, see the spec for more information.
+
+ -- Selections --
+
+PRIMARY @
+ Selection.
+SECONDARY @
+ Selection.
+
+ -- Property types and names --
+
+ARC @
+ Property type:
+ x, y: INT16
+ width, height: CARD16,
+ angle1, angle2: INT16
+ATOM @
+ Property type:
+ atom: ATOM
+BITMAP @
+ Property type:
+ bitmap: PIXMAP
+ This is asserted to be of depth 1.
+CARDINAL @
+ Property type:
+ card: CARD32 or CARD16 or CARD8
+ the datum size is dependent on the property format
+COLORMAP @
+ Property type:
+ colormap: COLORMAP
+CURSOR @
+ Property type:
+ cursor: CURSOR
+CUT_BUFFER0 @
+CUT_BUFFER1 @
+CUT_BUFFER2 @
+CUT_BUFFER3 @
+CUT_BUFFER4 @
+CUT_BUFFER5 @
+CUT_BUFFER6 @
+CUT_BUFFER7 @
+ Property name: (type: STRING)
+ Used to implement cut buffer ring, in particular Andrew uses
+ this mechanism. Anyone else using this sort of IPC mechanism
+ should use these properties.
+
+ Data is normally fetched and stored out of CUT_BUFFER0; the
+ RotateProperties request is used to rotate these buffers.
+DRAWABLE @
+ Property type:
+ drawable: DRAWABLE
+FONT @
+ Property type:
+ font: FONT
+INTEGER @
+ Property type:
+ card: INT32 or INT16 or INT8
+ the datum size is dependent on the property format
+PIXMAP @
+ Property type:
+ pixmap: PIXMAP
+POINT @
+ Property type:
+ x, y: INT16
+RECTANGLE @
+ Property type:
+ x, y: INT16
+ width, height: CARD16
+RESOURCE_MANAGER @
+ Property name: (type: STRING)
+ Contents of the user's resource manager data base.
+RGB_COLOR_MAP @
+ Property type:
+ colormap: COLORMAP
+ red-max: CARD32
+ red-mult: CARD32
+ green-max: CARD32
+ green-mult: CARD32
+ blue-max: CARD32
+ blue-mult: CARD32
+ base-pixel: CARD32
+
+ The fields `red_max', `green_max', and `blue_max' give the maximum
+ red, green, and blue values, respectively. Each color
+ coefficient ranges from 0 to its max, inclusive. For example,
+ a common colormap allocation is 3/3/2: 3 planes for red, 3
+ planes for green, and 2 planes for blue. Such a colormap would
+ have red_max == 7, green_max = 7, and blue_max = 3. An alternate
+ allocation that uses only 216 colors is red_max = 5, green_max =
+ 5, and blue_max = 5.
+
+ The fields `red_mult', `green_mult', and `blue_mult' give the
+ scale factors used to compose a full pixel value. (See next
+ paragraph.) For a 3/3/2 allocation red_mult might be 32,
+ green_mult might be 4, and blue_mult might be 1. For a
+ 6-colors-each allocation, red_mult might be 36, green_mult might
+ be 6, and blue_mult might be 1.
+
+ The field `base_pixel' gives the base pixel value used to
+ compose a full pixel value. Normally base_pixel is obtained
+ from a call to XAllocColorPlanes(). Given integer red, green,
+ and blue coefficients in their appropriate ranges, one can
+ compute a corresponding pixel value with the expression:
+
+ r * red_mult + g * green_mult + b * blue_mult + base_pixel
+
+ For gray-scale colormaps, only the colormap, red_max, red_mult,
+ and base_pixel fields are defined; the other fields are
+ ignored. To compute a gray-scale pixel value, use:
+
+ gray * red_mult + base_pixel
+
+ This is provided to allow applications to share color maps.
+
+RGB_BEST_MAP @
+RGB_BLUE_MAP @
+RGB_DEFAULT_MAP @
+RGB_GRAY_MAP @
+RGB_GREEN_MAP @
+RGB_RED_MAP @
+ Property name: (type: RGB_COLOR_MAP)
+ The needs of most applications can be met with five colormaps.
+ Polite applications may need only a small RGB space, and can
+ use a portion of the default color map. Applications doing
+ high-quality RGB rendering will need an entire colormap,
+ filled with as large an RGB space as possible, e.g. 332. For
+ color separations, an application may need maximum device
+ resolution for each of red, green, and blue, even if this
+ requires three renderings with three colormaps.
+
+ Each of the above five names would be used for sharing color
+ maps.
+STRING @
+ Property type:
+ sequence of Bytes
+VISUALID @
+ Property type:
+ visual: VISUALID
+WINDOW @
+ Property type:
+ window: WINDOW
+WM_COMMAND @
+ Property name: (type: STRING)
+ Command line arguments used to invoke this application. The
+ arguments are delimited by null characters (ASCII 0).
+WM_HINTS @
+ Property type:
+ flags: CARD32
+ input: BOOL32
+ initial-state: CARD32
+ icon-pixmap: PIXMAP
+ icon-window: WINDOW
+ icon_mask: BITMAP
+ icon-x, icon-y: INT32
+ flags contains the following bits
+ 0x00000001 input hint
+ 0x00000002 state hint
+ 0x00000004 icon pixmap hint
+ 0x00000008 icon window hint
+ 0x00000010 icon position hint
+ values for initial-state
+ 0 unspecified -> application does not
+ care and WM should pick one.
+ 1 normal
+ 2 zoomed
+ 3 iconic
+ 4 inactive -> application believes
+ itself to be seldomly used. WM may wish to
+ place it on an inactive menu.
+ This type is potentially extensible. The order is critical;
+ append to the end only.
+ Property name: (type: WM_HINTS)
+ Additional hints set by the client for use by the window
+ manager.
+WM_CLIENT_MACHINE @
+ Property name: (type: STRING)
+ used to communicate with the window manager. The host name
+ of the machine the client is running on may be set here.
+WM_ICON_NAME @
+ Property name: (type: STRING)
+ what the application would like the label to be for
+ the iconic form of the window.
+WM_ICON_SIZE @
+ Property type:
+ minWidth, min-height: CARD32
+ maxWidth, max-height: CARD32
+ widthInc, height-inc: CARD32
+ Property name: (type: ICON_SIZE)
+ The window manager may set this property on the root window
+ to specify the icon sizes it allows.
+WM_NAME @
+ Property name: (type: STRING)
+ used to communicate with the window manager. This is
+ what the application would like the label for the window.
+WM_NORMAL_HINTS @
+ Property name: (type: SIZE_HINTS)
+ used to communicate with the window manager. This is size
+ hints for a window in its "normal" state.
+WM_SIZE_HINTS @
+ Property type:
+ flags: CARD32
+ x, y: INT32
+ width, height: CARD32
+ min-width, min-height: CARD32
+ max-width, max-height: CARD32
+ width-inc, height-inc: CARD32
+ min-aspect-x, min-aspect-y: CARD32
+ max-aspect-x, max-aspect-y: CARD32
+ flags contains the following bits
+ 0x00000001 user specified x and y
+ 0x00000002 user specified width and height
+ 0x00000004 program specified position
+ 0x00000008 program specified size
+ 0x00000010 program specified minimum size
+ 0x00000020 program specified maximum size
+ 0x00000040 program specified resize increment
+ 0x00000080 program specified aspect ratio
+ This type is potentially extensible. The order is critical;
+ append to the end only.
+WM_ZOOM_HINTS @
+ Property name: (type: SIZE_HINTS)
+ used to communicate with the window manager. This is size
+ hints for a window in its "zoomed" state.
+
+ -- Font properties --
+
+MIN_SPACE @
+ Font property: CARD32
+NORM_SPACE @
+ Font property: CARD32
+MAX_SPACE @
+ Font property: CARD32
+END_SPACE @
+ Font property: CARD32
+SUPERSCRIPT_X @
+ Font property: INT32
+SUPERSCRIPT_Y @
+ Font property: INT32
+SUBSCRIPT_X @
+ Font property: INT32
+SUBSCRIPT_Y @
+ Font property: INT32
+UNDERLINE_POSITION @
+ Font property: INT32
+UNDERLINE_THICKNESS @
+ Font property: CARD32
+STRIKEOUT_ASCENT @
+ Font property: INT32
+STRIKEOUT_DESCENT @
+ Font property: INT32
+ITALIC_ANGLE @
+ Font property: INT32
+X_HEIGHT @
+ Font property: INT32
+QUAD_WIDTH @
+ Font property: INT32
+WEIGHT @
+ Font property: CARD32
+POINT_SIZE @
+ Font property: CARD32
+RESOLUTION @
+ Font property: CARD32
+
+The following optional properties on fonts have values that are atoms. The
+atom print name is the useful information.
+
+COPYRIGHT @
+ of the font distribution
+NOTICE @
+ trademark/copyright of the character shapes
+FONT_NAME @
+ name of this particular instance of a font
+FAMILY_NAME @
+ name of the 'font family' to which it belongs
+FULL_NAME @
+ full text name of the font
+
+The following aren't in order but putting them at the end avoids encoding
+changes.
+
+CAP_HEIGHT @
+ Font property: CARD32
+
+
+WM_CLASS @
+ Property name: (type: STRING)
+ Used (possibly by some window managers; definitely by
+ session managers) to look up resources in the resource
+ data base on behalf of the client who set this property.
+ There are 2 elements:
+ {char *resource_name; char *resource_class;}
+ delimited by a null character (ascii 0)
+
+WM_TRANSIENT_FOR @
+ Property name: (type: WINDOW)
+ Used by transient top-level windows, such as dialog
+ boxes, to point to their logical "parents". The window
+ manager can then take down the dialog boxes when the
+ "parent" gets iconified, for instance.
diff --git a/xorg-server/dix/buildatoms b/xorg-server/dix/buildatoms
index efc61b6f9..dfbbca8a9 100644
--- a/xorg-server/dix/buildatoms
+++ b/xorg-server/dix/buildatoms
@@ -1,43 +1,43 @@
-#!/bin/sh
-hfile=../../../include/Xatom.h
-cfile=initatoms.c
-rm -f $hfile $cfile
-umask 222
-awk '
-BEGIN {
- hfile = "'$hfile'";
- cfile = "'$cfile'";
- hformat = "#define XA_%s ((Atom) %d)\n";
- printf("#ifndef XATOM_H\n") > hfile;
- printf("#define XATOM_H 1\n\n") > hfile;
- printf("/* THIS IS A GENERATED FILE\n") > hfile;
- printf(" *\n") > hfile;
- printf(" * Do not change! Changing this file implies a protocol change!\n") > hfile;
- printf(" */\n\n") > hfile;
-
- printf("/* THIS IS A GENERATED FILE\n") > cfile;
- printf(" *\n") > cfile;
- printf(" * Do not change! Changing this file implies a protocol change!\n") > cfile;
- printf(" */\n\n") > cfile;
- printf("#include \"X.h\"\n") > cfile;
- printf("#include \"Xatom.h\"\n") > cfile;
- printf("#include \"misc.h\"\n") > cfile;
- printf("#include \"dix.h\"\n") > cfile;
- printf("void MakePredeclaredAtoms()\n") > cfile;
- printf("{\n") > cfile;
-
- }
-
-NF == 2 && $2 == "@" {
- printf(hformat, $1, ++atomno) > hfile ;
- printf(" if (MakeAtom(\"%s\", %d, 1) != XA_%s) AtomError();\n", $1, length($1), $1) > cfile ;
- }
-
-END {
- printf("\n") > hfile;
- printf(hformat, "LAST_PREDEFINED", atomno) > hfile ;
- printf("#endif /* XATOM_H */\n") > hfile;
- printf("}\n") > cfile ;
- }
-' BuiltInAtoms
-exit 0
+#!/bin/sh
+hfile=../../../include/Xatom.h
+cfile=initatoms.c
+rm -f $hfile $cfile
+umask 222
+awk '
+BEGIN {
+ hfile = "'$hfile'";
+ cfile = "'$cfile'";
+ hformat = "#define XA_%s ((Atom) %d)\n";
+ printf("#ifndef XATOM_H\n") > hfile;
+ printf("#define XATOM_H 1\n\n") > hfile;
+ printf("/* THIS IS A GENERATED FILE\n") > hfile;
+ printf(" *\n") > hfile;
+ printf(" * Do not change! Changing this file implies a protocol change!\n") > hfile;
+ printf(" */\n\n") > hfile;
+
+ printf("/* THIS IS A GENERATED FILE\n") > cfile;
+ printf(" *\n") > cfile;
+ printf(" * Do not change! Changing this file implies a protocol change!\n") > cfile;
+ printf(" */\n\n") > cfile;
+ printf("#include \"X.h\"\n") > cfile;
+ printf("#include \"Xatom.h\"\n") > cfile;
+ printf("#include \"misc.h\"\n") > cfile;
+ printf("#include \"dix.h\"\n") > cfile;
+ printf("void MakePredeclaredAtoms()\n") > cfile;
+ printf("{\n") > cfile;
+
+ }
+
+NF == 2 && $2 == "@" {
+ printf(hformat, $1, ++atomno) > hfile ;
+ printf(" if (MakeAtom(\"%s\", %d, 1) != XA_%s) AtomError();\n", $1, length($1), $1) > cfile ;
+ }
+
+END {
+ printf("\n") > hfile;
+ printf(hformat, "LAST_PREDEFINED", atomno) > hfile ;
+ printf("#endif /* XATOM_H */\n") > hfile;
+ printf("}\n") > cfile ;
+ }
+' BuiltInAtoms
+exit 0
diff --git a/xorg-server/dix/protocol.txt b/xorg-server/dix/protocol.txt
index 6a87ef4c3..8e152edaa 100644
--- a/xorg-server/dix/protocol.txt
+++ b/xorg-server/dix/protocol.txt
@@ -1,1103 +1,1103 @@
-# Registry of protocol names used by X Server
-# This will eventually be replaced by server-side XCB
-#
-# Format is Xnnn <extension-name>:<object-name>
-# R=Request, V=Event, E=Error
-#
-# This is a security-sensitive file, please set permissions as appropriate.
-#
-R001 Adobe-DPS-Extension:Init
-R002 Adobe-DPS-Extension:CreateContext
-R003 Adobe-DPS-Extension:CreateSpace
-R004 Adobe-DPS-Extension:GiveInput
-R005 Adobe-DPS-Extension:GetStatus
-R006 Adobe-DPS-Extension:DestroySpace
-R007 Adobe-DPS-Extension:Reset
-R008 Adobe-DPS-Extension:NotifyContext
-R009 Adobe-DPS-Extension:CreateContextFromID
-R010 Adobe-DPS-Extension:XIDFromContext
-R011 Adobe-DPS-Extension:ContextFromXID
-R012 Adobe-DPS-Extension:SetStatusMask
-R013 Adobe-DPS-Extension:CreateSecureContext
-R014 Adobe-DPS-Extension:NotifyWhenReady
-R000 Apple-DRI:QueryVersion
-R001 Apple-DRI:QueryDirectRenderingCapable
-R002 Apple-DRI:CreateSurface
-R003 Apple-DRI:DestroySurface
-R004 Apple-DRI:AuthConnection
-V000 Apple-DRI:ObsoleteEvent1
-V001 Apple-DRI:ObsoleteEvent2
-V002 Apple-DRI:ObsoleteEvent3
-V003 Apple-DRI:SurfaceNotify
-E000 Apple-DRI:ClientNotLocal
-E001 Apple-DRI:OperationNotSupported
-R000 Apple-WM:QueryVersion
-R001 Apple-WM:FrameGetRect
-R002 Apple-WM:FrameHitTest
-R003 Apple-WM:FrameDraw
-R004 Apple-WM:DisableUpdate
-R005 Apple-WM:ReenableUpdate
-R006 Apple-WM:SelectInput
-R007 Apple-WM:SetWindowMenuCheck
-R008 Apple-WM:SetFrontProcess
-R009 Apple-WM:SetWindowLevel
-R010 Apple-WM:SetCanQuit
-R011 Apple-WM:SetWindowMenu
-V000 Apple-WM:ControllerNotify
-V001 Apple-WM:ActivationNotify
-V002 Apple-WM:PasteboardNotify
-E000 Apple-WM:ClientNotLocal
-E001 Apple-WM:OperationNotSupported
-R000 BIG-REQUESTS:Enable
-R000 Composite:CompositeQueryVersion
-R001 Composite:CompositeRedirectWindow
-R002 Composite:CompositeRedirectSubwindows
-R003 Composite:CompositeUnredirectWindow
-R004 Composite:CompositeUnredirectSubwindows
-R005 Composite:CompositeCreateRegionFromBorderClip
-R006 Composite:CompositeNameWindowPixmap
-R007 Composite:CompositeGetOverlayWindow
-R008 Composite:CompositeReleaseOverlayWindow
-R000 DAMAGE:QueryVersion
-R001 DAMAGE:Create
-R002 DAMAGE:Destroy
-R003 DAMAGE:Subtract
-R004 DAMAGE:Add
-V000 DAMAGE:Notify
-E000 DAMAGE:BadDamage
-R000 DEC-XTRAP:Reset
-R001 DEC-XTRAP:GetAvailable
-R002 DEC-XTRAP:Config
-R003 DEC-XTRAP:StartTrap
-R004 DEC-XTRAP:StopTrap
-R005 DEC-XTRAP:GetCurrent
-R006 DEC-XTRAP:GetStatistics
-R007 DEC-XTRAP:SimulateXEvent
-R008 DEC-XTRAP:GetVersion
-R009 DEC-XTRAP:GetLastInpTime
-V000 DEC-XTRAP:Event
-E002 DEC-XTRAP:BadIO
-E004 DEC-XTRAP:BadStatistics
-E005 DEC-XTRAP:BadDevices
-E007 DEC-XTRAP:BadScreen
-E008 DEC-XTRAP:BadSwapReq
-R000 DMX:DMXQueryVersion
-R001 DMX:DMXGetScreenCount
-R002 DMX:DMXGetScreenInfoDEPRECATED
-R003 DMX:DMXGetWindowAttributes
-R004 DMX:DMXGetInputCount
-R005 DMX:DMXGetInputAttributes
-R006 DMX:DMXForceWindowCreationDEPRECATED
-R007 DMX:DMXReconfigureScreenDEPRECATED
-R008 DMX:DMXSync
-R009 DMX:DMXForceWindowCreation
-R010 DMX:DMXGetScreenAttributes
-R011 DMX:DMXChangeScreensAttributes
-R012 DMX:DMXAddScreen
-R013 DMX:DMXRemoveScreen
-R014 DMX:DMXGetDesktopAttributes
-R015 DMX:DMXChangeDesktopAttributes
-R016 DMX:DMXAddInput
-R017 DMX:DMXRemoveInput
-R000 DOUBLE-BUFFER:GetVersion
-R001 DOUBLE-BUFFER:AllocateBackBufferName
-R002 DOUBLE-BUFFER:DeallocateBackBufferName
-R003 DOUBLE-BUFFER:SwapBuffers
-R004 DOUBLE-BUFFER:BeginIdiom
-R005 DOUBLE-BUFFER:EndIdiom
-R006 DOUBLE-BUFFER:GetVisualInfo
-R007 DOUBLE-BUFFER:GetBackBufferAttributes
-E000 DOUBLE-BUFFER:BadBuffer
-R000 DPMS:GetVersion
-R001 DPMS:Capable
-R002 DPMS:GetTimeouts
-R003 DPMS:SetTimeouts
-R004 DPMS:Enable
-R005 DPMS:Disable
-R006 DPMS:ForceLevel
-R007 DPMS:Info
-R000 DRI2:QueryVersion
-R001 DRI2:Connect
-R002 DRI2:Authenticate
-R003 DRI2:CreateDrawable
-R004 DRI2:DestroyDrawable
-R005 DRI2:GetBuffers
-R006 DRI2:CopyRegion
-R007 DRI2:GetBuffersWithFormat
-R000 Extended-Visual-Information:QueryVersion
-R001 Extended-Visual-Information:GetVisualInfo
-R000 FontCache:QueryVersion
-R001 FontCache:GetCacheSettings
-R002 FontCache:ChangeCacheSettings
-R003 FontCache:GetCacheStatistics
-E000 FontCache:BadProtocol
-E001 FontCache:CannotAllocMemory
-R001 GLX:
-R002 GLX:Large
-R003 GLX:CreateContext
-R004 GLX:DestroyContext
-R005 GLX:MakeCurrent
-R006 GLX:IsDirect
-R007 GLX:QueryVersion
-R008 GLX:WaitGL
-R009 GLX:WaitX
-R010 GLX:CopyContext
-R011 GLX:SwapBuffers
-R012 GLX:UseXFont
-R013 GLX:CreateGLXPixmap
-R014 GLX:GetVisualConfigs
-R015 GLX:DestroyGLXPixmap
-R016 GLX:VendorPrivate
-R017 GLX:VendorPrivateWithReply
-R018 GLX:QueryExtensionsString
-R019 GLX:QueryServerString
-R020 GLX:ClientInfo
-R101 GLX:NewList
-R102 GLX:EndList
-R103 GLX:DeleteLists
-R104 GLX:GenLists
-R105 GLX:FeedbackBuffer
-R106 GLX:SelectBuffer
-R107 GLX:Mode
-R108 GLX:Finish
-R109 GLX:PixelStoref
-R110 GLX:PixelStorei
-R111 GLX:ReadPixels
-R112 GLX:GetBooleanv
-R113 GLX:GetClipPlane
-R114 GLX:GetDoublev
-R115 GLX:GetError
-R116 GLX:GetFloatv
-R117 GLX:GetIntegerv
-R118 GLX:GetLightfv
-R119 GLX:GetLightiv
-R120 GLX:GetMapdv
-R121 GLX:GetMapfv
-R122 GLX:GetMapiv
-R123 GLX:GetMaterialfv
-R124 GLX:GetMaterialiv
-R125 GLX:GetPixelfv
-R126 GLX:GetPixelMapuiv
-R127 GLX:GetPixelMapusv
-R128 GLX:GetPolygonStipple
-R129 GLX:GetString
-R130 GLX:GetTexEnvfv
-R131 GLX:GetTexEnviv
-R132 GLX:GetTexGendv
-R133 GLX:GetTexGenfv
-R134 GLX:GetTexGeniv
-R135 GLX:GetTexImage
-R136 GLX:GetTexParameterfv
-R137 GLX:GetTexParameteriv
-R138 GLX:GetTexLevelParameterfv
-R139 GLX:GetTexLevelParameteriv
-R140 GLX:IsEnabled
-R141 GLX:IsList
-R142 GLX:Flush
-E000 GLX:BadContext
-E001 GLX:BadContextState
-E002 GLX:BadDrawable
-E003 GLX:BadPixmap
-E004 GLX:BadContextTag
-E005 GLX:BadCurrentWindow
-E006 GLX:BadRenderRequest
-E007 GLX:BadLargeRequest
-E008 GLX:UnsupportedPrivateRequest
-R000 LBX:QueryVersion
-R001 LBX:StartProxy
-R002 LBX:StopProxy
-R003 LBX:Switch
-R004 LBX:NewClient
-R005 LBX:CloseClient
-R006 LBX:ModifySequence
-R007 LBX:AllowMotion
-R008 LBX:IncrementPixel
-R009 LBX:Delta
-R010 LBX:GetModifierMapping
-R011 LBX:QueryTag
-R012 LBX:InvalidateTag
-R013 LBX:PolyPoint
-R014 LBX:PolyLine
-R015 LBX:PolySegment
-R016 LBX:PolyRectangle
-R017 LBX:PolyArc
-R018 LBX:FillPoly
-R019 LBX:PolyFillRectangle
-R020 LBX:PolyFillArc
-R021 LBX:GetKeyboardMapping
-R022 LBX:QueryFont
-R023 LBX:ChangeProperty
-R024 LBX:GetProperty
-R025 LBX:TagData
-R026 LBX:CopyArea
-R027 LBX:CopyPlane
-R028 LBX:PolyText8
-R029 LBX:PolyText16
-R030 LBX:ImageText8
-R031 LBX:ImageText16
-R032 LBX:QueryExtension
-R033 LBX:PutImage
-R034 LBX:GetImage
-R035 LBX:BeginLargeRequest
-R036 LBX:LargeRequestData
-R037 LBX:EndLargeRequest
-R038 LBX:InternAtoms
-R039 LBX:GetWinAttrAndGeom
-R040 LBX:GrabCmap
-R041 LBX:ReleaseCmap
-R042 LBX:AllocColor
-R043 LBX:Sync
-E000 LBX:BadLbxClient
-R000 MIT-SCREEN-SAVER:QueryVersion
-R001 MIT-SCREEN-SAVER:QueryInfo
-R002 MIT-SCREEN-SAVER:SelectInput
-R003 MIT-SCREEN-SAVER:SetAttributes
-R004 MIT-SCREEN-SAVER:UnsetAttributes
-R005 MIT-SCREEN-SAVER:Suspend
-V000 MIT-SCREEN-SAVER:Notify
-R000 MIT-SHM:QueryVersion
-R001 MIT-SHM:Attach
-R002 MIT-SHM:Detach
-R003 MIT-SHM:PutImage
-R004 MIT-SHM:GetImage
-R005 MIT-SHM:CreatePixmap
-V000 MIT-SHM:Completion
-E000 MIT-SHM:BadShmSeg
-R000 MIT-SUNDRY-NONSTANDARD:SetBugMode
-R001 MIT-SUNDRY-NONSTANDARD:GetBugMode
-R000 Multi-Buffering:GetBufferVersion
-R001 Multi-Buffering:CreateImageBuffers
-R002 Multi-Buffering:DestroyImageBuffers
-R003 Multi-Buffering:DisplayImageBuffers
-R004 Multi-Buffering:SetMBufferAttributes
-R005 Multi-Buffering:GetMBufferAttributes
-R006 Multi-Buffering:SetBufferAttributes
-R007 Multi-Buffering:GetBufferAttributes
-R008 Multi-Buffering:GetBufferInfo
-R009 Multi-Buffering:CreateStereoWindow
-R010 Multi-Buffering:ClearImageBufferArea
-V000 Multi-Buffering:ClobberNotify
-V001 Multi-Buffering:UpdateNotify
-E000 Multi-Buffering:BadBuffer
-R000 RANDR:QueryVersion
-R001 RANDR:OldGetScreenInfo
-R002 RANDR:SetScreenConfig
-R003 RANDR:OldScreenChangeSelectInput
-R004 RANDR:SelectInput
-R005 RANDR:GetScreenInfo
-R006 RANDR:GetScreenSizeRange
-R007 RANDR:SetScreenSize
-R008 RANDR:GetScreenResources
-R009 RANDR:GetOutputInfo
-R010 RANDR:ListOutputProperties
-R011 RANDR:QueryOutputProperty
-R012 RANDR:ConfigureOutputProperty
-R013 RANDR:ChangeOutputProperty
-R014 RANDR:DeleteOutputProperty
-R015 RANDR:GetOutputProperty
-R016 RANDR:CreateMode
-R017 RANDR:DestroyMode
-R018 RANDR:AddOutputMode
-R019 RANDR:DeleteOutputMode
-R020 RANDR:GetCrtcInfo
-R021 RANDR:SetCrtcConfig
-R022 RANDR:GetCrtcGammaSize
-R023 RANDR:GetCrtcGamma
-R024 RANDR:SetCrtcGamma
-R025 RANDR:GetScreenResourcesCurrent
-R026 RANDR:SetCrtcTransform
-R027 RANDR:GetCrtcTransform
-R028 RANDR:GetPanning
-R029 RANDR:SetPanning
-R030 RANDR:SetOutputPrimary
-R031 RANDR:GetOutputPrimary
-V000 RANDR:ScreenChangeNotify
-V001 RANDR:Notify
-E000 RANDR:BadRROutput
-E001 RANDR:BadRRCrtc
-E002 RANDR:BadRRMode
-R000 RECORD:QueryVersion
-R001 RECORD:CreateContext
-R002 RECORD:RegisterClients
-R003 RECORD:UnregisterClients
-R004 RECORD:GetContext
-R005 RECORD:EnableContext
-R006 RECORD:DisableContext
-R007 RECORD:FreeContext
-E000 RECORD:BadContext
-R000 RENDER:QueryVersion
-R001 RENDER:QueryPictFormats
-R002 RENDER:QueryPictIndexValues
-R003 RENDER:QueryDithers
-R004 RENDER:CreatePicture
-R005 RENDER:ChangePicture
-R006 RENDER:SetPictureClipRectangles
-R007 RENDER:FreePicture
-R008 RENDER:Composite
-R009 RENDER:Scale
-R010 RENDER:Trapezoids
-R011 RENDER:Triangles
-R012 RENDER:TriStrip
-R013 RENDER:TriFan
-R014 RENDER:ColorTrapezoids
-R015 RENDER:ColorTriangles
-R016 RENDER:Transform
-R017 RENDER:CreateGlyphSet
-R018 RENDER:ReferenceGlyphSet
-R019 RENDER:FreeGlyphSet
-R020 RENDER:AddGlyphs
-R021 RENDER:AddGlyphsFromPicture
-R022 RENDER:FreeGlyphs
-R023 RENDER:CompositeGlyphs8
-R024 RENDER:CompositeGlyphs16
-R025 RENDER:CompositeGlyphs32
-R026 RENDER:FillRectangles
-R027 RENDER:CreateCursor
-R028 RENDER:SetPictureTransform
-R029 RENDER:QueryFilters
-R030 RENDER:SetPictureFilter
-R031 RENDER:CreateAnimCursor
-R032 RENDER:AddTraps
-R033 RENDER:CreateSolidFill
-R034 RENDER:CreateLinearGradient
-R035 RENDER:CreateRadialGradient
-R036 RENDER:CreateConicalGradient
-E000 RENDER:BadPictFormat
-E001 RENDER:BadPicture
-E002 RENDER:BadPictOp
-E003 RENDER:BadGlyphSet
-E004 RENDER:BadGlyph
-R000 SECURITY:QueryVersion
-R001 SECURITY:GenerateAuthorization
-R002 SECURITY:RevokeAuthorization
-V000 SECURITY:AuthorizationRevoked
-E000 SECURITY:BadAuthorization
-E001 SECURITY:BadAuthorizationProtocol
-R000 SELinux:SELinuxQueryVersion
-R001 SELinux:SELinuxSetDeviceCreateContext
-R002 SELinux:SELinuxGetDeviceCreateContext
-R003 SELinux:SELinuxSetDeviceContext
-R004 SELinux:SELinuxGetDeviceContext
-R005 SELinux:SELinuxSetWindowCreateContext
-R006 SELinux:SELinuxGetWindowCreateContext
-R007 SELinux:SELinuxGetWindowContext
-R008 SELinux:SELinuxSetPropertyCreateContext
-R009 SELinux:SELinuxGetPropertyCreateContext
-R010 SELinux:SELinuxSetPropertyUseContext
-R011 SELinux:SELinuxGetPropertyUseContext
-R012 SELinux:SELinuxGetPropertyContext
-R013 SELinux:SELinuxGetPropertyDataContext
-R014 SELinux:SELinuxListProperties
-R015 SELinux:SELinuxSetSelectionCreateContext
-R016 SELinux:SELinuxGetSelectionCreateContext
-R017 SELinux:SELinuxSetSelectionUseContext
-R018 SELinux:SELinuxGetSelectionUseContext
-R019 SELinux:SELinuxGetSelectionContext
-R020 SELinux:SELinuxGetSelectionDataContext
-R021 SELinux:SELinuxListSelections
-R022 SELinux:SELinuxGetClientContext
-R000 SHAPE:QueryVersion
-R001 SHAPE:Rectangles
-R002 SHAPE:Mask
-R003 SHAPE:Combine
-R004 SHAPE:Offset
-R005 SHAPE:QueryExtents
-R006 SHAPE:SelectInput
-R007 SHAPE:InputSelected
-R008 SHAPE:GetRectangles
-V000 SHAPE:Notify
-R000 SYNC:Initialize
-R001 SYNC:ListSystemCounters
-R002 SYNC:CreateCounter
-R003 SYNC:SetCounter
-R004 SYNC:ChangeCounter
-R005 SYNC:QueryCounter
-R006 SYNC:DestroyCounter
-R007 SYNC:Await
-R008 SYNC:CreateAlarm
-R009 SYNC:ChangeAlarm
-R010 SYNC:QueryAlarm
-R011 SYNC:DestroyAlarm
-R012 SYNC:SetPriority
-R013 SYNC:GetPriority
-V000 SYNC:CounterNotify
-V001 SYNC:AlarmNotify
-E000 SYNC:BadCounter
-E001 SYNC:BadAlarm
-R000 TOG-CUP:QueryVersion
-R001 TOG-CUP:GetReservedColormapEntries
-R002 TOG-CUP:StoreColors
-R000 Windows-WM:QueryVersion
-R001 Windows-WM:FrameGetRect
-R002 Windows-WM:FrameDraw
-R003 Windows-WM:FrameSetTitle
-R004 Windows-WM:DisableUpdate
-R005 Windows-WM:ReenableUpdate
-R006 Windows-WM:SelectInput
-R007 Windows-WM:SetFrontProcess
-V000 Windows-WM:ControllerNotify
-V001 Windows-WM:ActivationNotify
-E000 Windows-WM:ClientNotLocal
-E001 Windows-WM:OperationNotSupported
-R000 X-Resource:QueryVersion
-R001 X-Resource:QueryClients
-R002 X-Resource:QueryClientResources
-R003 X-Resource:QueryClientPixmapBytes
-R001 X11:CreateWindow
-R002 X11:ChangeWindowAttributes
-R003 X11:GetWindowAttributes
-R004 X11:DestroyWindow
-R005 X11:DestroySubwindows
-R006 X11:ChangeSaveSet
-R007 X11:ReparentWindow
-R008 X11:MapWindow
-R009 X11:MapSubwindows
-R010 X11:UnmapWindow
-R011 X11:UnmapSubwindows
-R012 X11:ConfigureWindow
-R013 X11:CirculateWindow
-R014 X11:GetGeometry
-R015 X11:QueryTree
-R016 X11:InternAtom
-R017 X11:GetAtomName
-R018 X11:ChangeProperty
-R019 X11:DeleteProperty
-R020 X11:GetProperty
-R021 X11:ListProperties
-R022 X11:SetSelectionOwner
-R023 X11:GetSelectionOwner
-R024 X11:ConvertSelection
-R025 X11:SendEvent
-R026 X11:GrabPointer
-R027 X11:UngrabPointer
-R028 X11:GrabButton
-R029 X11:UngrabButton
-R030 X11:ChangeActivePointerGrab
-R031 X11:GrabKeyboard
-R032 X11:UngrabKeyboard
-R033 X11:GrabKey
-R034 X11:UngrabKey
-R035 X11:AllowEvents
-R036 X11:GrabServer
-R037 X11:UngrabServer
-R038 X11:QueryPointer
-R039 X11:GetMotionEvents
-R040 X11:TranslateCoords
-R041 X11:WarpPointer
-R042 X11:SetInputFocus
-R043 X11:GetInputFocus
-R044 X11:QueryKeymap
-R045 X11:OpenFont
-R046 X11:CloseFont
-R047 X11:QueryFont
-R048 X11:QueryTextExtents
-R049 X11:ListFonts
-R050 X11:ListFontsWithInfo
-R051 X11:SetFontPath
-R052 X11:GetFontPath
-R053 X11:CreatePixmap
-R054 X11:FreePixmap
-R055 X11:CreateGC
-R056 X11:ChangeGC
-R057 X11:CopyGC
-R058 X11:SetDashes
-R059 X11:SetClipRectangles
-R060 X11:FreeGC
-R061 X11:ClearArea
-R062 X11:CopyArea
-R063 X11:CopyPlane
-R064 X11:PolyPoint
-R065 X11:PolyLine
-R066 X11:PolySegment
-R067 X11:PolyRectangle
-R068 X11:PolyArc
-R069 X11:FillPoly
-R070 X11:PolyFillRectangle
-R071 X11:PolyFillArc
-R072 X11:PutImage
-R073 X11:GetImage
-R074 X11:PolyText8
-R075 X11:PolyText16
-R076 X11:ImageText8
-R077 X11:ImageText16
-R078 X11:CreateColormap
-R079 X11:FreeColormap
-R080 X11:CopyColormapAndFree
-R081 X11:InstallColormap
-R082 X11:UninstallColormap
-R083 X11:ListInstalledColormaps
-R084 X11:AllocColor
-R085 X11:AllocNamedColor
-R086 X11:AllocColorCells
-R087 X11:AllocColorPlanes
-R088 X11:FreeColors
-R089 X11:StoreColors
-R090 X11:StoreNamedColor
-R091 X11:QueryColors
-R092 X11:LookupColor
-R093 X11:CreateCursor
-R094 X11:CreateGlyphCursor
-R095 X11:FreeCursor
-R096 X11:RecolorCursor
-R097 X11:QueryBestSize
-R098 X11:QueryExtension
-R099 X11:ListExtensions
-R100 X11:ChangeKeyboardMapping
-R101 X11:GetKeyboardMapping
-R102 X11:ChangeKeyboardControl
-R103 X11:GetKeyboardControl
-R104 X11:Bell
-R105 X11:ChangePointerControl
-R106 X11:GetPointerControl
-R107 X11:SetScreenSaver
-R108 X11:GetScreenSaver
-R109 X11:ChangeHosts
-R110 X11:ListHosts
-R111 X11:SetAccessControl
-R112 X11:SetCloseDownMode
-R113 X11:KillClient
-R114 X11:RotateProperties
-R115 X11:ForceScreenSaver
-R116 X11:SetPointerMapping
-R117 X11:GetPointerMapping
-R118 X11:SetModifierMapping
-R119 X11:GetModifierMapping
-R127 X11:NoOperation
-V000 X11:X_Error
-V001 X11:X_Reply
-V002 X11:KeyPress
-V003 X11:KeyRelease
-V004 X11:ButtonPress
-V005 X11:ButtonRelease
-V006 X11:MotionNotify
-V007 X11:EnterNotify
-V008 X11:LeaveNotify
-V009 X11:FocusIn
-V010 X11:FocusOut
-V011 X11:KeymapNotify
-V012 X11:Expose
-V013 X11:GraphicsExpose
-V014 X11:NoExpose
-V015 X11:VisibilityNotify
-V016 X11:CreateNotify
-V017 X11:DestroyNotify
-V018 X11:UnmapNotify
-V019 X11:MapNotify
-V020 X11:MapRequest
-V021 X11:ReparentNotify
-V022 X11:ConfigureNotify
-V023 X11:ConfigureRequest
-V024 X11:GravityNotify
-V025 X11:ResizeRequest
-V026 X11:CirculateNotify
-V027 X11:CirculateRequest
-V028 X11:PropertyNotify
-V029 X11:SelectionClear
-V030 X11:SelectionRequest
-V031 X11:SelectionNotify
-V032 X11:ColormapNotify
-V033 X11:ClientMessage
-V034 X11:MappingNotify
-V035 X11:GenericEvent
-E000 X11:Success
-E001 X11:BadRequest
-E002 X11:BadValue
-E003 X11:BadWindow
-E004 X11:BadPixmap
-E005 X11:BadAtom
-E006 X11:BadCursor
-E007 X11:BadFont
-E008 X11:BadMatch
-E009 X11:BadDrawable
-E010 X11:BadAccess
-E011 X11:BadAlloc
-E012 X11:BadColor
-E013 X11:BadGC
-E014 X11:BadIDChoice
-E015 X11:BadName
-E016 X11:BadLength
-E017 X11:BadImplementation
-R001 X3D-PEX:GetExtensionInfo
-R002 X3D-PEX:GetEnumeratedTypeInfo
-R003 X3D-PEX:GetImpDepConstants
-R004 X3D-PEX:CreateLookupTable
-R005 X3D-PEX:CopyLookupTable
-R006 X3D-PEX:FreeLookupTable
-R007 X3D-PEX:GetTableInfo
-R008 X3D-PEX:GetPredefinedEntries
-R009 X3D-PEX:GetDefinedIndices
-R010 X3D-PEX:GetTableEntry
-R011 X3D-PEX:GetTableEntries
-R012 X3D-PEX:SetTableEntries
-R013 X3D-PEX:DeleteTableEntries
-R014 X3D-PEX:CreatePipelineContext
-R015 X3D-PEX:CopyPipelineContext
-R016 X3D-PEX:FreePipelineContext
-R017 X3D-PEX:GetPipelineContext
-R018 X3D-PEX:ChangePipelineContext
-R019 X3D-PEX:CreateRenderer
-R020 X3D-PEX:FreeRenderer
-R021 X3D-PEX:ChangeRenderer
-R022 X3D-PEX:GetRendererAttributes
-R023 X3D-PEX:GetRendererDynamics
-R024 X3D-PEX:BeginRendering
-R025 X3D-PEX:EndRendering
-R026 X3D-PEX:BeginStructure
-R027 X3D-PEX:EndStructure
-R028 X3D-PEX:OutputCommands
-R029 X3D-PEX:Network
-R030 X3D-PEX:CreateStructure
-R031 X3D-PEX:CopyStructure
-R032 X3D-PEX:DestroyStructures
-R033 X3D-PEX:GetStructureInfo
-R034 X3D-PEX:GetElementInfo
-R035 X3D-PEX:GetStructuresInNetwork
-R036 X3D-PEX:GetAncestors
-R037 X3D-PEX:GetDescendants
-R038 X3D-PEX:FetchElements
-R039 X3D-PEX:SetEditingMode
-R040 X3D-PEX:SetElementPointer
-R041 X3D-PEX:SetElementPointerAtLabel
-R042 X3D-PEX:ElementSearch
-R043 X3D-PEX:StoreElements
-R044 X3D-PEX:DeleteElements
-R045 X3D-PEX:DeleteElementsToLabel
-R046 X3D-PEX:DeleteBetweenLabels
-R047 X3D-PEX:CopyElements
-R048 X3D-PEX:ChangeStructureRefs
-R049 X3D-PEX:CreateNameSet
-R050 X3D-PEX:CopyNameSet
-R051 X3D-PEX:FreeNameSet
-R052 X3D-PEX:GetNameSet
-R053 X3D-PEX:ChangeNameSet
-R054 X3D-PEX:CreateSearchContext
-R055 X3D-PEX:CopySearchContext
-R056 X3D-PEX:FreeSearchContext
-R057 X3D-PEX:GetSearchContext
-R058 X3D-PEX:ChangeSearchContext
-R059 X3D-PEX:SearchNetwork
-R060 X3D-PEX:CreatePhigsWks
-R061 X3D-PEX:FreePhigsWks
-R062 X3D-PEX:GetWksInfo
-R063 X3D-PEX:GetDynamics
-R064 X3D-PEX:GetViewRep
-R065 X3D-PEX:RedrawAllStructures
-R066 X3D-PEX:UpdateWorkstation
-R067 X3D-PEX:RedrawClipRegion
-R068 X3D-PEX:ExecuteDeferredActions
-R069 X3D-PEX:SetViewPriority
-R070 X3D-PEX:SetDisplayUpdateMode
-R071 X3D-PEX:MapDCtoWC
-R072 X3D-PEX:MapWCtoDC
-R073 X3D-PEX:SetViewRep
-R074 X3D-PEX:SetWksWindow
-R075 X3D-PEX:SetWksViewport
-R076 X3D-PEX:SetHlhsrMode
-R077 X3D-PEX:SetWksBufferMode
-R078 X3D-PEX:PostStructure
-R079 X3D-PEX:UnpostStructure
-R080 X3D-PEX:UnpostAllStructures
-R081 X3D-PEX:GetWksPostings
-R082 X3D-PEX:GetPickDevice
-R083 X3D-PEX:ChangePickDevice
-R084 X3D-PEX:CreatePickMeasure
-R085 X3D-PEX:FreePickMeasure
-R086 X3D-PEX:GetPickMeasure
-R087 X3D-PEX:UpdatePickMeasure
-R088 X3D-PEX:OpenFont
-R089 X3D-PEX:CloseFont
-R090 X3D-PEX:QueryFont
-R091 X3D-PEX:ListFonts
-R092 X3D-PEX:ListFontsWithInfo
-R093 X3D-PEX:QueryTextExtents
-R094 X3D-PEX:MatchRenderingTargets
-R095 X3D-PEX:Escape
-R096 X3D-PEX:EscapeWithReply
-R097 X3D-PEX:Elements
-R098 X3D-PEX:AccumulateState
-R099 X3D-PEX:BeginPickOne
-R100 X3D-PEX:EndPickOne
-R101 X3D-PEX:PickOne
-R102 X3D-PEX:BeginPickAll
-R103 X3D-PEX:EndPickAll
-R104 X3D-PEX:PickAll
-E000 X3D-PEX:ColorTypeError
-E001 X3D-PEX:erStateError
-E002 X3D-PEX:FloatingPointFormatError
-E003 X3D-PEX:LabelError
-E004 X3D-PEX:LookupTableError
-E005 X3D-PEX:NameSetError
-E006 X3D-PEX:PathError
-E007 X3D-PEX:FontError
-E008 X3D-PEX:PhigsWksError
-E009 X3D-PEX:PickMeasureError
-E010 X3D-PEX:PipelineContextError
-E011 X3D-PEX:erError
-E012 X3D-PEX:SearchContextError
-E013 X3D-PEX:StructureError
-E014 X3D-PEX:OutputCommandError
-R000 XC-APPGROUP:QueryVersion
-R001 XC-APPGROUP:Create
-R002 XC-APPGROUP:Destroy
-R003 XC-APPGROUP:GetAttr
-R004 XC-APPGROUP:Query
-R005 XC-APPGROUP:CreateAssoc
-R006 XC-APPGROUP:DestroyAssoc
-E000 XC-APPGROUP:BadAppGroup
-R000 XC-MISC:GetVersion
-R001 XC-MISC:GetXIDRange
-R002 XC-MISC:GetXIDList
-R000 XFIXES:QueryVersion
-R001 XFIXES:ChangeSaveSet
-R002 XFIXES:SelectSelectionInput
-R003 XFIXES:SelectCursorInput
-R004 XFIXES:GetCursorImage
-R005 XFIXES:CreateRegion
-R006 XFIXES:CreateRegionFromBitmap
-R007 XFIXES:CreateRegionFromWindow
-R008 XFIXES:CreateRegionFromGC
-R009 XFIXES:CreateRegionFromPicture
-R010 XFIXES:DestroyRegion
-R011 XFIXES:SetRegion
-R012 XFIXES:CopyRegion
-R013 XFIXES:UnionRegion
-R014 XFIXES:IntersectRegion
-R015 XFIXES:SubtractRegion
-R016 XFIXES:InvertRegion
-R017 XFIXES:TranslateRegion
-R018 XFIXES:RegionExtents
-R019 XFIXES:FetchRegion
-R020 XFIXES:SetGCClipRegion
-R021 XFIXES:SetWindowShapeRegion
-R022 XFIXES:SetPictureClipRegion
-R023 XFIXES:SetCursorName
-R024 XFIXES:GetCursorName
-R025 XFIXES:GetCursorImageAndName
-R026 XFIXES:ChangeCursor
-R027 XFIXES:ChangeCursorByName
-R028 XFIXES:ExpandRegion
-R029 XFIXES:HideCursor
-R030 XFIXES:ShowCursor
-V000 XFIXES:SelectionNotify
-V001 XFIXES:CursorNotify
-E000 XFIXES:BadRegion
-R000 XFree86-Bigfont:QueryVersion
-R001 XFree86-Bigfont:QueryFont
-R000 XFree86-DGA:QueryVersion
-R001 XFree86-DGA:GetVideoLL
-R002 XFree86-DGA:DirectVideo
-R003 XFree86-DGA:GetViewPortSize
-R004 XFree86-DGA:SetViewPort
-R005 XFree86-DGA:GetVidPage
-R006 XFree86-DGA:SetVidPage
-R007 XFree86-DGA:InstallColormap
-R008 XFree86-DGA:QueryDirectVideo
-R009 XFree86-DGA:ViewPortChanged
-R010 XFree86-DGA:Obsolete1
-R011 XFree86-DGA:Obsolete2
-R012 XFree86-DGA:QueryModes
-R013 XFree86-DGA:SetMode
-R014 XFree86-DGA:SetViewport
-R015 XFree86-DGA:InstallColormap
-R016 XFree86-DGA:SelectInput
-R017 XFree86-DGA:FillRectangle
-R018 XFree86-DGA:CopyArea
-R019 XFree86-DGA:CopyTransparentArea
-R020 XFree86-DGA:GetViewportStatus
-R021 XFree86-DGA:Sync
-R022 XFree86-DGA:OpenFramebuffer
-R023 XFree86-DGA:CloseFramebuffer
-R024 XFree86-DGA:SetClientVersion
-R025 XFree86-DGA:ChangePixmapMode
-R026 XFree86-DGA:CreateColormap
-E000 XFree86-DGA:ClientNotLocal
-E001 XFree86-DGA:NoDirectVideoMode
-E002 XFree86-DGA:ScreenNotActive
-E003 XFree86-DGA:DirectNotActivated
-E004 XFree86-DGA:OperationNotSupported
-R000 XFree86-DRI:QueryVersion
-R001 XFree86-DRI:QueryDirectRenderingCapable
-R002 XFree86-DRI:OpenConnection
-R003 XFree86-DRI:CloseConnection
-R004 XFree86-DRI:GetClientDriverName
-R005 XFree86-DRI:CreateContext
-R006 XFree86-DRI:DestroyContext
-R007 XFree86-DRI:CreateDrawable
-R008 XFree86-DRI:DestroyDrawable
-R009 XFree86-DRI:GetDrawableInfo
-R010 XFree86-DRI:GetDeviceInfo
-R011 XFree86-DRI:AuthConnection
-R012 XFree86-DRI:OpenFullScreen
-R013 XFree86-DRI:CloseFullScreen
-E000 XFree86-DRI:ClientNotLocal
-E001 XFree86-DRI:OperationNotSupported
-R000 XFree86-Misc:QueryVersion
-R001 XFree86-Misc:GetSaver
-R002 XFree86-Misc:SetSaver
-R003 XFree86-Misc:GetMouseSettings
-R004 XFree86-Misc:GetKbdSettings
-R005 XFree86-Misc:SetMouseSettings
-R006 XFree86-Misc:SetKbdSettings
-R007 XFree86-Misc:SetGrabKeysState
-R008 XFree86-Misc:SetClientVersion
-R009 XFree86-Misc:GetFilePaths
-R010 XFree86-Misc:PassMessage
-E000 XFree86-Misc:BadMouseProtocol
-E001 XFree86-Misc:BadMouseBaudRate
-E002 XFree86-Misc:BadMouseFlags
-E003 XFree86-Misc:BadMouseCombo
-E004 XFree86-Misc:BadKbdType
-E005 XFree86-Misc:ModInDevDisabled
-E006 XFree86-Misc:ModInDevClientNotLocal
-E007 XFree86-Misc:NoModule
-R000 XFree86-VidModeExtension:QueryVersion
-R001 XFree86-VidModeExtension:GetModeLine
-R002 XFree86-VidModeExtension:ModModeLine
-R003 XFree86-VidModeExtension:SwitchMode
-R004 XFree86-VidModeExtension:GetMonitor
-R005 XFree86-VidModeExtension:LockModeSwitch
-R006 XFree86-VidModeExtension:GetAllModeLines
-R007 XFree86-VidModeExtension:AddModeLine
-R008 XFree86-VidModeExtension:DeleteModeLine
-R009 XFree86-VidModeExtension:ValidateModeLine
-R010 XFree86-VidModeExtension:SwitchToMode
-R011 XFree86-VidModeExtension:GetViewPort
-R012 XFree86-VidModeExtension:SetViewPort
-R013 XFree86-VidModeExtension:GetDotClocks
-R014 XFree86-VidModeExtension:SetClientVersion
-R015 XFree86-VidModeExtension:SetGamma
-R016 XFree86-VidModeExtension:GetGamma
-R017 XFree86-VidModeExtension:GetGammaRamp
-R018 XFree86-VidModeExtension:SetGammaRamp
-R019 XFree86-VidModeExtension:GetGammaRampSize
-R020 XFree86-VidModeExtension:GetPermissions
-V000 XFree86-VidModeExtension:Notify
-E000 XFree86-VidModeExtension:BadClock
-E001 XFree86-VidModeExtension:BadHTimings
-E002 XFree86-VidModeExtension:BadVTimings
-E003 XFree86-VidModeExtension:ModeUnsuitable
-E004 XFree86-VidModeExtension:ExtensionDisabled
-E005 XFree86-VidModeExtension:ClientNotLocal
-E006 XFree86-VidModeExtension:ZoomLocked
-R001 XIE:QueryImageExtension
-R002 XIE:QueryTechniques
-R003 XIE:CreateColorList
-R004 XIE:DestroyColorList
-R005 XIE:PurgeColorList
-R006 XIE:QueryColorList
-R007 XIE:CreateLUT
-R008 XIE:DestroyLUT
-R009 XIE:CreatePhotomap
-R010 XIE:DestroyPhotomap
-R011 XIE:QueryPhotomap
-R012 XIE:CreateROI
-R013 XIE:DestroyROI
-R014 XIE:CreatePhotospace
-R015 XIE:DestroyPhotospace
-R016 XIE:ExecuteImmediate
-R017 XIE:CreatePhotoflo
-R018 XIE:DestroyPhotoflo
-R019 XIE:ExecutePhotoflo
-R020 XIE:ModifyPhotoflo
-R021 XIE:RedefinePhotoflo
-R022 XIE:PutClientData
-R023 XIE:GetClientData
-R024 XIE:QueryPhotoflo
-R025 XIE:Await
-R026 XIE:Abort
-E000 XIE:ColorListError
-E001 XIE:LUTError
-E002 XIE:PhotofloError
-E003 XIE:PhotomapError
-E004 XIE:PhotospaceError
-E005 XIE:ROIError
-E006 XIE:FloError
-R000 XINERAMA:QueryVersion
-R001 XINERAMA:GetState
-R002 XINERAMA:GetScreenCount
-R003 XINERAMA:GetScreenSize
-R004 XINERAMA:IsActive
-R005 XINERAMA:QueryScreens
-R001 XInputExtension:GetExtensionVersion
-R002 XInputExtension:ListInputDevices
-R003 XInputExtension:OpenDevice
-R004 XInputExtension:CloseDevice
-R005 XInputExtension:SetDeviceMode
-R006 XInputExtension:SelectExtensionEvent
-R007 XInputExtension:GetSelectedExtensionEvents
-R008 XInputExtension:ChangeDeviceDontPropagateList
-R009 XInputExtension:GetDeviceDontPropagageList
-R010 XInputExtension:GetDeviceMotionEvents
-R011 XInputExtension:ChangeKeyboardDevice
-R012 XInputExtension:ChangePointerDevice
-R013 XInputExtension:GrabDevice
-R014 XInputExtension:UngrabDevice
-R015 XInputExtension:GrabDeviceKey
-R016 XInputExtension:UngrabDeviceKey
-R017 XInputExtension:GrabDeviceButton
-R018 XInputExtension:UngrabDeviceButton
-R019 XInputExtension:AllowDeviceEvents
-R020 XInputExtension:GetDeviceFocus
-R021 XInputExtension:SetDeviceFocus
-R022 XInputExtension:GetFeedbackControl
-R023 XInputExtension:ChangeFeedbackControl
-R024 XInputExtension:GetDeviceKeyMapping
-R025 XInputExtension:ChangeDeviceKeyMapping
-R026 XInputExtension:GetDeviceModifierMapping
-R027 XInputExtension:SetDeviceModifierMapping
-R028 XInputExtension:GetDeviceButtonMapping
-R029 XInputExtension:SetDeviceButtonMapping
-R030 XInputExtension:QueryDeviceState
-R031 XInputExtension:SendExtensionEvent
-R032 XInputExtension:DeviceBell
-R033 XInputExtension:SetDeviceValuators
-R034 XInputExtension:GetDeviceControl
-R035 XInputExtension:ChangeDeviceControl
-R036 XInputExtension:ListDeviceProperties
-R037 XInputExtension:ChangeDeviceProperty
-R038 XInputExtension:DeleteDeviceProperty
-R039 XInputExtension:GetDeviceProperty
-R040 XInputExtension:QueryPointer
-R041 XInputExtension:WarpPointer
-R042 XInputExtension:ChangeCursor
-R043 XInputExtension:ChangeHierarchy
-R044 XInputExtension:SetClientPointer
-R045 XInputExtension:GetClientPointer
-R046 XInputExtension:SelectEvents
-R047 XInputExtension:QueryVersion
-R048 XInputExtension:QueryDevice
-R049 XInputExtension:SetFocus
-R050 XInputExtension:GetFocus
-R051 XInputExtension:GrabDevice
-R052 XInputExtension:UngrabDevice
-R053 XInputExtension:AllowEvents
-R054 XInputExtension:PassiveGrabDevice
-R055 XInputExtension:PassiveUngrabDevice
-R056 XInputExtension:ListProperties
-R057 XInputExtension:ChangeProperty
-R058 XInputExtension:DeleteProperty
-R059 XInputExtension:GetProperty
-R060 XInputExtension:GetSelectedEvents
-V000 XInputExtension:DeviceValuator
-V001 XInputExtension:DeviceKeyPress
-V002 XInputExtension:DeviceKeyRelease
-V003 XInputExtension:DeviceButtonPress
-V004 XInputExtension:DeviceButtonRelease
-V005 XInputExtension:DeviceMotionNotify
-V006 XInputExtension:DeviceFocusIn
-V007 XInputExtension:DeviceFocusOut
-V008 XInputExtension:ProximityIn
-V009 XInputExtension:ProximityOut
-V010 XInputExtension:DeviceStateNotify
-V011 XInputExtension:DeviceMappingNotify
-V012 XInputExtension:ChangeDeviceNotify
-V013 XInputExtension:DeviceKeystateNotify
-V014 XInputExtension:DeviceButtonstateNotify
-V015 XInputExtension:DevicePresenceNotify
-V016 XInputExtension:DevicePropertyNotify
-E000 XInputExtension:BadDevice
-E001 XInputExtension:BadEvent
-E002 XInputExtension:BadMode
-E003 XInputExtension:DeviceBusy
-E004 XInputExtension:BadClass
-R000 XKEYBOARD:UseExtension
-R001 XKEYBOARD:SelectEvents
-R002 XKEYBOARD:Obsolete
-R003 XKEYBOARD:Bell
-R004 XKEYBOARD:GetState
-R005 XKEYBOARD:LatchLockState
-R006 XKEYBOARD:GetControls
-R007 XKEYBOARD:SetControls
-R008 XKEYBOARD:GetMap
-R009 XKEYBOARD:SetMap
-R010 XKEYBOARD:GetCompatMap
-R011 XKEYBOARD:SetCompatMap
-R012 XKEYBOARD:GetIndicatorState
-R013 XKEYBOARD:GetIndicatorMap
-R014 XKEYBOARD:SetIndicatorMap
-R015 XKEYBOARD:GetNamedIndicator
-R016 XKEYBOARD:SetNamedIndicator
-R017 XKEYBOARD:GetNames
-R018 XKEYBOARD:SetNames
-R019 XKEYBOARD:GetGeometry
-R020 XKEYBOARD:SetGeometry
-R021 XKEYBOARD:PerClientFlags
-R022 XKEYBOARD:ListComponents
-R023 XKEYBOARD:GetKbdByName
-R024 XKEYBOARD:GetDeviceInfo
-R025 XKEYBOARD:SetDeviceInfo
-R101 XKEYBOARD:SetDebuggingFlags
-V000 XKEYBOARD:EventCode
-E000 XKEYBOARD:BadKeyboard
-R000 XTEST:GetVersion
-R001 XTEST:CompareCursor
-R002 XTEST:FakeInput
-R003 XTEST:GrabControl
-R000 XVideo:QueryExtension
-R001 XVideo:QueryAdaptors
-R002 XVideo:QueryEncodings
-R003 XVideo:GrabPort
-R004 XVideo:UngrabPort
-R005 XVideo:PutVideo
-R006 XVideo:PutStill
-R007 XVideo:GetVideo
-R008 XVideo:GetStill
-R009 XVideo:StopVideo
-R010 XVideo:SelectVideoNotify
-R011 XVideo:SelectPortNotify
-R012 XVideo:QueryBestSize
-R013 XVideo:SetPortAttribute
-R014 XVideo:GetPortAttribute
-R015 XVideo:QueryPortAttributes
-R016 XVideo:ListImageFormats
-R017 XVideo:QueryImageAttributes
-R018 XVideo:PutImage
-R019 XVideo:ShmPutImage
-V000 XVideo:VideoNotify
-V001 XVideo:PortNotify
-E000 XVideo:BadPort
-E001 XVideo:BadEncoding
-E002 XVideo:BadControl
-R000 XVideo-MotionCompensation:QueryVersion
-R001 XVideo-MotionCompensation:ListSurfaceTypes
-R002 XVideo-MotionCompensation:CreateContext
-R003 XVideo-MotionCompensation:DestroyContext
-R004 XVideo-MotionCompensation:CreateSurface
-R005 XVideo-MotionCompensation:DestroySurface
-R006 XVideo-MotionCompensation:CreateSubpicture
-R007 XVideo-MotionCompensation:DestroySubpicture
-R008 XVideo-MotionCompensation:ListSubpictureTypes
-R009 XVideo-MotionCompensation:GetDRInfo
-E000 XVideo-MotionCompensation:BadContext
-E001 XVideo-MotionCompensation:BadSurface
-E002 XVideo-MotionCompensation:BadSubpicture
-R000 XpExtension:QueryVersion
-R001 XpExtension:GetPrinterList
-R002 XpExtension:CreateContext
-R003 XpExtension:SetContext
-R004 XpExtension:GetContext
-R005 XpExtension:DestroyContext
-R006 XpExtension:GetContextScreen
-R007 XpExtension:StartJob
-R008 XpExtension:EndJob
-R009 XpExtension:StartDoc
-R010 XpExtension:EndDoc
-R011 XpExtension:PutDocumentData
-R012 XpExtension:GetDocumentData
-R013 XpExtension:StartPage
-R014 XpExtension:EndPage
-R015 XpExtension:SelectInput
-R016 XpExtension:InputSelected
-R017 XpExtension:GetAttributes
-R018 XpExtension:SetAttributes
-R019 XpExtension:GetOneAttribute
-R020 XpExtension:RehashPrinterList
-R021 XpExtension:GetPageDimensions
-R022 XpExtension:QueryScreens
-R023 XpExtension:SetImageResolution
-R024 XpExtension:GetImageResolution
-V000 XpExtension:PrintNotify
-V001 XpExtension:AttributeNotify
-E000 XpExtension:BadContext
-E001 XpExtension:BadSequence
-E002 XpExtension:BadResourceID
+# Registry of protocol names used by X Server
+# This will eventually be replaced by server-side XCB
+#
+# Format is Xnnn <extension-name>:<object-name>
+# R=Request, V=Event, E=Error
+#
+# This is a security-sensitive file, please set permissions as appropriate.
+#
+R001 Adobe-DPS-Extension:Init
+R002 Adobe-DPS-Extension:CreateContext
+R003 Adobe-DPS-Extension:CreateSpace
+R004 Adobe-DPS-Extension:GiveInput
+R005 Adobe-DPS-Extension:GetStatus
+R006 Adobe-DPS-Extension:DestroySpace
+R007 Adobe-DPS-Extension:Reset
+R008 Adobe-DPS-Extension:NotifyContext
+R009 Adobe-DPS-Extension:CreateContextFromID
+R010 Adobe-DPS-Extension:XIDFromContext
+R011 Adobe-DPS-Extension:ContextFromXID
+R012 Adobe-DPS-Extension:SetStatusMask
+R013 Adobe-DPS-Extension:CreateSecureContext
+R014 Adobe-DPS-Extension:NotifyWhenReady
+R000 Apple-DRI:QueryVersion
+R001 Apple-DRI:QueryDirectRenderingCapable
+R002 Apple-DRI:CreateSurface
+R003 Apple-DRI:DestroySurface
+R004 Apple-DRI:AuthConnection
+V000 Apple-DRI:ObsoleteEvent1
+V001 Apple-DRI:ObsoleteEvent2
+V002 Apple-DRI:ObsoleteEvent3
+V003 Apple-DRI:SurfaceNotify
+E000 Apple-DRI:ClientNotLocal
+E001 Apple-DRI:OperationNotSupported
+R000 Apple-WM:QueryVersion
+R001 Apple-WM:FrameGetRect
+R002 Apple-WM:FrameHitTest
+R003 Apple-WM:FrameDraw
+R004 Apple-WM:DisableUpdate
+R005 Apple-WM:ReenableUpdate
+R006 Apple-WM:SelectInput
+R007 Apple-WM:SetWindowMenuCheck
+R008 Apple-WM:SetFrontProcess
+R009 Apple-WM:SetWindowLevel
+R010 Apple-WM:SetCanQuit
+R011 Apple-WM:SetWindowMenu
+V000 Apple-WM:ControllerNotify
+V001 Apple-WM:ActivationNotify
+V002 Apple-WM:PasteboardNotify
+E000 Apple-WM:ClientNotLocal
+E001 Apple-WM:OperationNotSupported
+R000 BIG-REQUESTS:Enable
+R000 Composite:CompositeQueryVersion
+R001 Composite:CompositeRedirectWindow
+R002 Composite:CompositeRedirectSubwindows
+R003 Composite:CompositeUnredirectWindow
+R004 Composite:CompositeUnredirectSubwindows
+R005 Composite:CompositeCreateRegionFromBorderClip
+R006 Composite:CompositeNameWindowPixmap
+R007 Composite:CompositeGetOverlayWindow
+R008 Composite:CompositeReleaseOverlayWindow
+R000 DAMAGE:QueryVersion
+R001 DAMAGE:Create
+R002 DAMAGE:Destroy
+R003 DAMAGE:Subtract
+R004 DAMAGE:Add
+V000 DAMAGE:Notify
+E000 DAMAGE:BadDamage
+R000 DEC-XTRAP:Reset
+R001 DEC-XTRAP:GetAvailable
+R002 DEC-XTRAP:Config
+R003 DEC-XTRAP:StartTrap
+R004 DEC-XTRAP:StopTrap
+R005 DEC-XTRAP:GetCurrent
+R006 DEC-XTRAP:GetStatistics
+R007 DEC-XTRAP:SimulateXEvent
+R008 DEC-XTRAP:GetVersion
+R009 DEC-XTRAP:GetLastInpTime
+V000 DEC-XTRAP:Event
+E002 DEC-XTRAP:BadIO
+E004 DEC-XTRAP:BadStatistics
+E005 DEC-XTRAP:BadDevices
+E007 DEC-XTRAP:BadScreen
+E008 DEC-XTRAP:BadSwapReq
+R000 DMX:DMXQueryVersion
+R001 DMX:DMXGetScreenCount
+R002 DMX:DMXGetScreenInfoDEPRECATED
+R003 DMX:DMXGetWindowAttributes
+R004 DMX:DMXGetInputCount
+R005 DMX:DMXGetInputAttributes
+R006 DMX:DMXForceWindowCreationDEPRECATED
+R007 DMX:DMXReconfigureScreenDEPRECATED
+R008 DMX:DMXSync
+R009 DMX:DMXForceWindowCreation
+R010 DMX:DMXGetScreenAttributes
+R011 DMX:DMXChangeScreensAttributes
+R012 DMX:DMXAddScreen
+R013 DMX:DMXRemoveScreen
+R014 DMX:DMXGetDesktopAttributes
+R015 DMX:DMXChangeDesktopAttributes
+R016 DMX:DMXAddInput
+R017 DMX:DMXRemoveInput
+R000 DOUBLE-BUFFER:GetVersion
+R001 DOUBLE-BUFFER:AllocateBackBufferName
+R002 DOUBLE-BUFFER:DeallocateBackBufferName
+R003 DOUBLE-BUFFER:SwapBuffers
+R004 DOUBLE-BUFFER:BeginIdiom
+R005 DOUBLE-BUFFER:EndIdiom
+R006 DOUBLE-BUFFER:GetVisualInfo
+R007 DOUBLE-BUFFER:GetBackBufferAttributes
+E000 DOUBLE-BUFFER:BadBuffer
+R000 DPMS:GetVersion
+R001 DPMS:Capable
+R002 DPMS:GetTimeouts
+R003 DPMS:SetTimeouts
+R004 DPMS:Enable
+R005 DPMS:Disable
+R006 DPMS:ForceLevel
+R007 DPMS:Info
+R000 DRI2:QueryVersion
+R001 DRI2:Connect
+R002 DRI2:Authenticate
+R003 DRI2:CreateDrawable
+R004 DRI2:DestroyDrawable
+R005 DRI2:GetBuffers
+R006 DRI2:CopyRegion
+R007 DRI2:GetBuffersWithFormat
+R000 Extended-Visual-Information:QueryVersion
+R001 Extended-Visual-Information:GetVisualInfo
+R000 FontCache:QueryVersion
+R001 FontCache:GetCacheSettings
+R002 FontCache:ChangeCacheSettings
+R003 FontCache:GetCacheStatistics
+E000 FontCache:BadProtocol
+E001 FontCache:CannotAllocMemory
+R001 GLX:
+R002 GLX:Large
+R003 GLX:CreateContext
+R004 GLX:DestroyContext
+R005 GLX:MakeCurrent
+R006 GLX:IsDirect
+R007 GLX:QueryVersion
+R008 GLX:WaitGL
+R009 GLX:WaitX
+R010 GLX:CopyContext
+R011 GLX:SwapBuffers
+R012 GLX:UseXFont
+R013 GLX:CreateGLXPixmap
+R014 GLX:GetVisualConfigs
+R015 GLX:DestroyGLXPixmap
+R016 GLX:VendorPrivate
+R017 GLX:VendorPrivateWithReply
+R018 GLX:QueryExtensionsString
+R019 GLX:QueryServerString
+R020 GLX:ClientInfo
+R101 GLX:NewList
+R102 GLX:EndList
+R103 GLX:DeleteLists
+R104 GLX:GenLists
+R105 GLX:FeedbackBuffer
+R106 GLX:SelectBuffer
+R107 GLX:Mode
+R108 GLX:Finish
+R109 GLX:PixelStoref
+R110 GLX:PixelStorei
+R111 GLX:ReadPixels
+R112 GLX:GetBooleanv
+R113 GLX:GetClipPlane
+R114 GLX:GetDoublev
+R115 GLX:GetError
+R116 GLX:GetFloatv
+R117 GLX:GetIntegerv
+R118 GLX:GetLightfv
+R119 GLX:GetLightiv
+R120 GLX:GetMapdv
+R121 GLX:GetMapfv
+R122 GLX:GetMapiv
+R123 GLX:GetMaterialfv
+R124 GLX:GetMaterialiv
+R125 GLX:GetPixelfv
+R126 GLX:GetPixelMapuiv
+R127 GLX:GetPixelMapusv
+R128 GLX:GetPolygonStipple
+R129 GLX:GetString
+R130 GLX:GetTexEnvfv
+R131 GLX:GetTexEnviv
+R132 GLX:GetTexGendv
+R133 GLX:GetTexGenfv
+R134 GLX:GetTexGeniv
+R135 GLX:GetTexImage
+R136 GLX:GetTexParameterfv
+R137 GLX:GetTexParameteriv
+R138 GLX:GetTexLevelParameterfv
+R139 GLX:GetTexLevelParameteriv
+R140 GLX:IsEnabled
+R141 GLX:IsList
+R142 GLX:Flush
+E000 GLX:BadContext
+E001 GLX:BadContextState
+E002 GLX:BadDrawable
+E003 GLX:BadPixmap
+E004 GLX:BadContextTag
+E005 GLX:BadCurrentWindow
+E006 GLX:BadRenderRequest
+E007 GLX:BadLargeRequest
+E008 GLX:UnsupportedPrivateRequest
+R000 LBX:QueryVersion
+R001 LBX:StartProxy
+R002 LBX:StopProxy
+R003 LBX:Switch
+R004 LBX:NewClient
+R005 LBX:CloseClient
+R006 LBX:ModifySequence
+R007 LBX:AllowMotion
+R008 LBX:IncrementPixel
+R009 LBX:Delta
+R010 LBX:GetModifierMapping
+R011 LBX:QueryTag
+R012 LBX:InvalidateTag
+R013 LBX:PolyPoint
+R014 LBX:PolyLine
+R015 LBX:PolySegment
+R016 LBX:PolyRectangle
+R017 LBX:PolyArc
+R018 LBX:FillPoly
+R019 LBX:PolyFillRectangle
+R020 LBX:PolyFillArc
+R021 LBX:GetKeyboardMapping
+R022 LBX:QueryFont
+R023 LBX:ChangeProperty
+R024 LBX:GetProperty
+R025 LBX:TagData
+R026 LBX:CopyArea
+R027 LBX:CopyPlane
+R028 LBX:PolyText8
+R029 LBX:PolyText16
+R030 LBX:ImageText8
+R031 LBX:ImageText16
+R032 LBX:QueryExtension
+R033 LBX:PutImage
+R034 LBX:GetImage
+R035 LBX:BeginLargeRequest
+R036 LBX:LargeRequestData
+R037 LBX:EndLargeRequest
+R038 LBX:InternAtoms
+R039 LBX:GetWinAttrAndGeom
+R040 LBX:GrabCmap
+R041 LBX:ReleaseCmap
+R042 LBX:AllocColor
+R043 LBX:Sync
+E000 LBX:BadLbxClient
+R000 MIT-SCREEN-SAVER:QueryVersion
+R001 MIT-SCREEN-SAVER:QueryInfo
+R002 MIT-SCREEN-SAVER:SelectInput
+R003 MIT-SCREEN-SAVER:SetAttributes
+R004 MIT-SCREEN-SAVER:UnsetAttributes
+R005 MIT-SCREEN-SAVER:Suspend
+V000 MIT-SCREEN-SAVER:Notify
+R000 MIT-SHM:QueryVersion
+R001 MIT-SHM:Attach
+R002 MIT-SHM:Detach
+R003 MIT-SHM:PutImage
+R004 MIT-SHM:GetImage
+R005 MIT-SHM:CreatePixmap
+V000 MIT-SHM:Completion
+E000 MIT-SHM:BadShmSeg
+R000 MIT-SUNDRY-NONSTANDARD:SetBugMode
+R001 MIT-SUNDRY-NONSTANDARD:GetBugMode
+R000 Multi-Buffering:GetBufferVersion
+R001 Multi-Buffering:CreateImageBuffers
+R002 Multi-Buffering:DestroyImageBuffers
+R003 Multi-Buffering:DisplayImageBuffers
+R004 Multi-Buffering:SetMBufferAttributes
+R005 Multi-Buffering:GetMBufferAttributes
+R006 Multi-Buffering:SetBufferAttributes
+R007 Multi-Buffering:GetBufferAttributes
+R008 Multi-Buffering:GetBufferInfo
+R009 Multi-Buffering:CreateStereoWindow
+R010 Multi-Buffering:ClearImageBufferArea
+V000 Multi-Buffering:ClobberNotify
+V001 Multi-Buffering:UpdateNotify
+E000 Multi-Buffering:BadBuffer
+R000 RANDR:QueryVersion
+R001 RANDR:OldGetScreenInfo
+R002 RANDR:SetScreenConfig
+R003 RANDR:OldScreenChangeSelectInput
+R004 RANDR:SelectInput
+R005 RANDR:GetScreenInfo
+R006 RANDR:GetScreenSizeRange
+R007 RANDR:SetScreenSize
+R008 RANDR:GetScreenResources
+R009 RANDR:GetOutputInfo
+R010 RANDR:ListOutputProperties
+R011 RANDR:QueryOutputProperty
+R012 RANDR:ConfigureOutputProperty
+R013 RANDR:ChangeOutputProperty
+R014 RANDR:DeleteOutputProperty
+R015 RANDR:GetOutputProperty
+R016 RANDR:CreateMode
+R017 RANDR:DestroyMode
+R018 RANDR:AddOutputMode
+R019 RANDR:DeleteOutputMode
+R020 RANDR:GetCrtcInfo
+R021 RANDR:SetCrtcConfig
+R022 RANDR:GetCrtcGammaSize
+R023 RANDR:GetCrtcGamma
+R024 RANDR:SetCrtcGamma
+R025 RANDR:GetScreenResourcesCurrent
+R026 RANDR:SetCrtcTransform
+R027 RANDR:GetCrtcTransform
+R028 RANDR:GetPanning
+R029 RANDR:SetPanning
+R030 RANDR:SetOutputPrimary
+R031 RANDR:GetOutputPrimary
+V000 RANDR:ScreenChangeNotify
+V001 RANDR:Notify
+E000 RANDR:BadRROutput
+E001 RANDR:BadRRCrtc
+E002 RANDR:BadRRMode
+R000 RECORD:QueryVersion
+R001 RECORD:CreateContext
+R002 RECORD:RegisterClients
+R003 RECORD:UnregisterClients
+R004 RECORD:GetContext
+R005 RECORD:EnableContext
+R006 RECORD:DisableContext
+R007 RECORD:FreeContext
+E000 RECORD:BadContext
+R000 RENDER:QueryVersion
+R001 RENDER:QueryPictFormats
+R002 RENDER:QueryPictIndexValues
+R003 RENDER:QueryDithers
+R004 RENDER:CreatePicture
+R005 RENDER:ChangePicture
+R006 RENDER:SetPictureClipRectangles
+R007 RENDER:FreePicture
+R008 RENDER:Composite
+R009 RENDER:Scale
+R010 RENDER:Trapezoids
+R011 RENDER:Triangles
+R012 RENDER:TriStrip
+R013 RENDER:TriFan
+R014 RENDER:ColorTrapezoids
+R015 RENDER:ColorTriangles
+R016 RENDER:Transform
+R017 RENDER:CreateGlyphSet
+R018 RENDER:ReferenceGlyphSet
+R019 RENDER:FreeGlyphSet
+R020 RENDER:AddGlyphs
+R021 RENDER:AddGlyphsFromPicture
+R022 RENDER:FreeGlyphs
+R023 RENDER:CompositeGlyphs8
+R024 RENDER:CompositeGlyphs16
+R025 RENDER:CompositeGlyphs32
+R026 RENDER:FillRectangles
+R027 RENDER:CreateCursor
+R028 RENDER:SetPictureTransform
+R029 RENDER:QueryFilters
+R030 RENDER:SetPictureFilter
+R031 RENDER:CreateAnimCursor
+R032 RENDER:AddTraps
+R033 RENDER:CreateSolidFill
+R034 RENDER:CreateLinearGradient
+R035 RENDER:CreateRadialGradient
+R036 RENDER:CreateConicalGradient
+E000 RENDER:BadPictFormat
+E001 RENDER:BadPicture
+E002 RENDER:BadPictOp
+E003 RENDER:BadGlyphSet
+E004 RENDER:BadGlyph
+R000 SECURITY:QueryVersion
+R001 SECURITY:GenerateAuthorization
+R002 SECURITY:RevokeAuthorization
+V000 SECURITY:AuthorizationRevoked
+E000 SECURITY:BadAuthorization
+E001 SECURITY:BadAuthorizationProtocol
+R000 SELinux:SELinuxQueryVersion
+R001 SELinux:SELinuxSetDeviceCreateContext
+R002 SELinux:SELinuxGetDeviceCreateContext
+R003 SELinux:SELinuxSetDeviceContext
+R004 SELinux:SELinuxGetDeviceContext
+R005 SELinux:SELinuxSetWindowCreateContext
+R006 SELinux:SELinuxGetWindowCreateContext
+R007 SELinux:SELinuxGetWindowContext
+R008 SELinux:SELinuxSetPropertyCreateContext
+R009 SELinux:SELinuxGetPropertyCreateContext
+R010 SELinux:SELinuxSetPropertyUseContext
+R011 SELinux:SELinuxGetPropertyUseContext
+R012 SELinux:SELinuxGetPropertyContext
+R013 SELinux:SELinuxGetPropertyDataContext
+R014 SELinux:SELinuxListProperties
+R015 SELinux:SELinuxSetSelectionCreateContext
+R016 SELinux:SELinuxGetSelectionCreateContext
+R017 SELinux:SELinuxSetSelectionUseContext
+R018 SELinux:SELinuxGetSelectionUseContext
+R019 SELinux:SELinuxGetSelectionContext
+R020 SELinux:SELinuxGetSelectionDataContext
+R021 SELinux:SELinuxListSelections
+R022 SELinux:SELinuxGetClientContext
+R000 SHAPE:QueryVersion
+R001 SHAPE:Rectangles
+R002 SHAPE:Mask
+R003 SHAPE:Combine
+R004 SHAPE:Offset
+R005 SHAPE:QueryExtents
+R006 SHAPE:SelectInput
+R007 SHAPE:InputSelected
+R008 SHAPE:GetRectangles
+V000 SHAPE:Notify
+R000 SYNC:Initialize
+R001 SYNC:ListSystemCounters
+R002 SYNC:CreateCounter
+R003 SYNC:SetCounter
+R004 SYNC:ChangeCounter
+R005 SYNC:QueryCounter
+R006 SYNC:DestroyCounter
+R007 SYNC:Await
+R008 SYNC:CreateAlarm
+R009 SYNC:ChangeAlarm
+R010 SYNC:QueryAlarm
+R011 SYNC:DestroyAlarm
+R012 SYNC:SetPriority
+R013 SYNC:GetPriority
+V000 SYNC:CounterNotify
+V001 SYNC:AlarmNotify
+E000 SYNC:BadCounter
+E001 SYNC:BadAlarm
+R000 TOG-CUP:QueryVersion
+R001 TOG-CUP:GetReservedColormapEntries
+R002 TOG-CUP:StoreColors
+R000 Windows-WM:QueryVersion
+R001 Windows-WM:FrameGetRect
+R002 Windows-WM:FrameDraw
+R003 Windows-WM:FrameSetTitle
+R004 Windows-WM:DisableUpdate
+R005 Windows-WM:ReenableUpdate
+R006 Windows-WM:SelectInput
+R007 Windows-WM:SetFrontProcess
+V000 Windows-WM:ControllerNotify
+V001 Windows-WM:ActivationNotify
+E000 Windows-WM:ClientNotLocal
+E001 Windows-WM:OperationNotSupported
+R000 X-Resource:QueryVersion
+R001 X-Resource:QueryClients
+R002 X-Resource:QueryClientResources
+R003 X-Resource:QueryClientPixmapBytes
+R001 X11:CreateWindow
+R002 X11:ChangeWindowAttributes
+R003 X11:GetWindowAttributes
+R004 X11:DestroyWindow
+R005 X11:DestroySubwindows
+R006 X11:ChangeSaveSet
+R007 X11:ReparentWindow
+R008 X11:MapWindow
+R009 X11:MapSubwindows
+R010 X11:UnmapWindow
+R011 X11:UnmapSubwindows
+R012 X11:ConfigureWindow
+R013 X11:CirculateWindow
+R014 X11:GetGeometry
+R015 X11:QueryTree
+R016 X11:InternAtom
+R017 X11:GetAtomName
+R018 X11:ChangeProperty
+R019 X11:DeleteProperty
+R020 X11:GetProperty
+R021 X11:ListProperties
+R022 X11:SetSelectionOwner
+R023 X11:GetSelectionOwner
+R024 X11:ConvertSelection
+R025 X11:SendEvent
+R026 X11:GrabPointer
+R027 X11:UngrabPointer
+R028 X11:GrabButton
+R029 X11:UngrabButton
+R030 X11:ChangeActivePointerGrab
+R031 X11:GrabKeyboard
+R032 X11:UngrabKeyboard
+R033 X11:GrabKey
+R034 X11:UngrabKey
+R035 X11:AllowEvents
+R036 X11:GrabServer
+R037 X11:UngrabServer
+R038 X11:QueryPointer
+R039 X11:GetMotionEvents
+R040 X11:TranslateCoords
+R041 X11:WarpPointer
+R042 X11:SetInputFocus
+R043 X11:GetInputFocus
+R044 X11:QueryKeymap
+R045 X11:OpenFont
+R046 X11:CloseFont
+R047 X11:QueryFont
+R048 X11:QueryTextExtents
+R049 X11:ListFonts
+R050 X11:ListFontsWithInfo
+R051 X11:SetFontPath
+R052 X11:GetFontPath
+R053 X11:CreatePixmap
+R054 X11:FreePixmap
+R055 X11:CreateGC
+R056 X11:ChangeGC
+R057 X11:CopyGC
+R058 X11:SetDashes
+R059 X11:SetClipRectangles
+R060 X11:FreeGC
+R061 X11:ClearArea
+R062 X11:CopyArea
+R063 X11:CopyPlane
+R064 X11:PolyPoint
+R065 X11:PolyLine
+R066 X11:PolySegment
+R067 X11:PolyRectangle
+R068 X11:PolyArc
+R069 X11:FillPoly
+R070 X11:PolyFillRectangle
+R071 X11:PolyFillArc
+R072 X11:PutImage
+R073 X11:GetImage
+R074 X11:PolyText8
+R075 X11:PolyText16
+R076 X11:ImageText8
+R077 X11:ImageText16
+R078 X11:CreateColormap
+R079 X11:FreeColormap
+R080 X11:CopyColormapAndFree
+R081 X11:InstallColormap
+R082 X11:UninstallColormap
+R083 X11:ListInstalledColormaps
+R084 X11:AllocColor
+R085 X11:AllocNamedColor
+R086 X11:AllocColorCells
+R087 X11:AllocColorPlanes
+R088 X11:FreeColors
+R089 X11:StoreColors
+R090 X11:StoreNamedColor
+R091 X11:QueryColors
+R092 X11:LookupColor
+R093 X11:CreateCursor
+R094 X11:CreateGlyphCursor
+R095 X11:FreeCursor
+R096 X11:RecolorCursor
+R097 X11:QueryBestSize
+R098 X11:QueryExtension
+R099 X11:ListExtensions
+R100 X11:ChangeKeyboardMapping
+R101 X11:GetKeyboardMapping
+R102 X11:ChangeKeyboardControl
+R103 X11:GetKeyboardControl
+R104 X11:Bell
+R105 X11:ChangePointerControl
+R106 X11:GetPointerControl
+R107 X11:SetScreenSaver
+R108 X11:GetScreenSaver
+R109 X11:ChangeHosts
+R110 X11:ListHosts
+R111 X11:SetAccessControl
+R112 X11:SetCloseDownMode
+R113 X11:KillClient
+R114 X11:RotateProperties
+R115 X11:ForceScreenSaver
+R116 X11:SetPointerMapping
+R117 X11:GetPointerMapping
+R118 X11:SetModifierMapping
+R119 X11:GetModifierMapping
+R127 X11:NoOperation
+V000 X11:X_Error
+V001 X11:X_Reply
+V002 X11:KeyPress
+V003 X11:KeyRelease
+V004 X11:ButtonPress
+V005 X11:ButtonRelease
+V006 X11:MotionNotify
+V007 X11:EnterNotify
+V008 X11:LeaveNotify
+V009 X11:FocusIn
+V010 X11:FocusOut
+V011 X11:KeymapNotify
+V012 X11:Expose
+V013 X11:GraphicsExpose
+V014 X11:NoExpose
+V015 X11:VisibilityNotify
+V016 X11:CreateNotify
+V017 X11:DestroyNotify
+V018 X11:UnmapNotify
+V019 X11:MapNotify
+V020 X11:MapRequest
+V021 X11:ReparentNotify
+V022 X11:ConfigureNotify
+V023 X11:ConfigureRequest
+V024 X11:GravityNotify
+V025 X11:ResizeRequest
+V026 X11:CirculateNotify
+V027 X11:CirculateRequest
+V028 X11:PropertyNotify
+V029 X11:SelectionClear
+V030 X11:SelectionRequest
+V031 X11:SelectionNotify
+V032 X11:ColormapNotify
+V033 X11:ClientMessage
+V034 X11:MappingNotify
+V035 X11:GenericEvent
+E000 X11:Success
+E001 X11:BadRequest
+E002 X11:BadValue
+E003 X11:BadWindow
+E004 X11:BadPixmap
+E005 X11:BadAtom
+E006 X11:BadCursor
+E007 X11:BadFont
+E008 X11:BadMatch
+E009 X11:BadDrawable
+E010 X11:BadAccess
+E011 X11:BadAlloc
+E012 X11:BadColor
+E013 X11:BadGC
+E014 X11:BadIDChoice
+E015 X11:BadName
+E016 X11:BadLength
+E017 X11:BadImplementation
+R001 X3D-PEX:GetExtensionInfo
+R002 X3D-PEX:GetEnumeratedTypeInfo
+R003 X3D-PEX:GetImpDepConstants
+R004 X3D-PEX:CreateLookupTable
+R005 X3D-PEX:CopyLookupTable
+R006 X3D-PEX:FreeLookupTable
+R007 X3D-PEX:GetTableInfo
+R008 X3D-PEX:GetPredefinedEntries
+R009 X3D-PEX:GetDefinedIndices
+R010 X3D-PEX:GetTableEntry
+R011 X3D-PEX:GetTableEntries
+R012 X3D-PEX:SetTableEntries
+R013 X3D-PEX:DeleteTableEntries
+R014 X3D-PEX:CreatePipelineContext
+R015 X3D-PEX:CopyPipelineContext
+R016 X3D-PEX:FreePipelineContext
+R017 X3D-PEX:GetPipelineContext
+R018 X3D-PEX:ChangePipelineContext
+R019 X3D-PEX:CreateRenderer
+R020 X3D-PEX:FreeRenderer
+R021 X3D-PEX:ChangeRenderer
+R022 X3D-PEX:GetRendererAttributes
+R023 X3D-PEX:GetRendererDynamics
+R024 X3D-PEX:BeginRendering
+R025 X3D-PEX:EndRendering
+R026 X3D-PEX:BeginStructure
+R027 X3D-PEX:EndStructure
+R028 X3D-PEX:OutputCommands
+R029 X3D-PEX:Network
+R030 X3D-PEX:CreateStructure
+R031 X3D-PEX:CopyStructure
+R032 X3D-PEX:DestroyStructures
+R033 X3D-PEX:GetStructureInfo
+R034 X3D-PEX:GetElementInfo
+R035 X3D-PEX:GetStructuresInNetwork
+R036 X3D-PEX:GetAncestors
+R037 X3D-PEX:GetDescendants
+R038 X3D-PEX:FetchElements
+R039 X3D-PEX:SetEditingMode
+R040 X3D-PEX:SetElementPointer
+R041 X3D-PEX:SetElementPointerAtLabel
+R042 X3D-PEX:ElementSearch
+R043 X3D-PEX:StoreElements
+R044 X3D-PEX:DeleteElements
+R045 X3D-PEX:DeleteElementsToLabel
+R046 X3D-PEX:DeleteBetweenLabels
+R047 X3D-PEX:CopyElements
+R048 X3D-PEX:ChangeStructureRefs
+R049 X3D-PEX:CreateNameSet
+R050 X3D-PEX:CopyNameSet
+R051 X3D-PEX:FreeNameSet
+R052 X3D-PEX:GetNameSet
+R053 X3D-PEX:ChangeNameSet
+R054 X3D-PEX:CreateSearchContext
+R055 X3D-PEX:CopySearchContext
+R056 X3D-PEX:FreeSearchContext
+R057 X3D-PEX:GetSearchContext
+R058 X3D-PEX:ChangeSearchContext
+R059 X3D-PEX:SearchNetwork
+R060 X3D-PEX:CreatePhigsWks
+R061 X3D-PEX:FreePhigsWks
+R062 X3D-PEX:GetWksInfo
+R063 X3D-PEX:GetDynamics
+R064 X3D-PEX:GetViewRep
+R065 X3D-PEX:RedrawAllStructures
+R066 X3D-PEX:UpdateWorkstation
+R067 X3D-PEX:RedrawClipRegion
+R068 X3D-PEX:ExecuteDeferredActions
+R069 X3D-PEX:SetViewPriority
+R070 X3D-PEX:SetDisplayUpdateMode
+R071 X3D-PEX:MapDCtoWC
+R072 X3D-PEX:MapWCtoDC
+R073 X3D-PEX:SetViewRep
+R074 X3D-PEX:SetWksWindow
+R075 X3D-PEX:SetWksViewport
+R076 X3D-PEX:SetHlhsrMode
+R077 X3D-PEX:SetWksBufferMode
+R078 X3D-PEX:PostStructure
+R079 X3D-PEX:UnpostStructure
+R080 X3D-PEX:UnpostAllStructures
+R081 X3D-PEX:GetWksPostings
+R082 X3D-PEX:GetPickDevice
+R083 X3D-PEX:ChangePickDevice
+R084 X3D-PEX:CreatePickMeasure
+R085 X3D-PEX:FreePickMeasure
+R086 X3D-PEX:GetPickMeasure
+R087 X3D-PEX:UpdatePickMeasure
+R088 X3D-PEX:OpenFont
+R089 X3D-PEX:CloseFont
+R090 X3D-PEX:QueryFont
+R091 X3D-PEX:ListFonts
+R092 X3D-PEX:ListFontsWithInfo
+R093 X3D-PEX:QueryTextExtents
+R094 X3D-PEX:MatchRenderingTargets
+R095 X3D-PEX:Escape
+R096 X3D-PEX:EscapeWithReply
+R097 X3D-PEX:Elements
+R098 X3D-PEX:AccumulateState
+R099 X3D-PEX:BeginPickOne
+R100 X3D-PEX:EndPickOne
+R101 X3D-PEX:PickOne
+R102 X3D-PEX:BeginPickAll
+R103 X3D-PEX:EndPickAll
+R104 X3D-PEX:PickAll
+E000 X3D-PEX:ColorTypeError
+E001 X3D-PEX:erStateError
+E002 X3D-PEX:FloatingPointFormatError
+E003 X3D-PEX:LabelError
+E004 X3D-PEX:LookupTableError
+E005 X3D-PEX:NameSetError
+E006 X3D-PEX:PathError
+E007 X3D-PEX:FontError
+E008 X3D-PEX:PhigsWksError
+E009 X3D-PEX:PickMeasureError
+E010 X3D-PEX:PipelineContextError
+E011 X3D-PEX:erError
+E012 X3D-PEX:SearchContextError
+E013 X3D-PEX:StructureError
+E014 X3D-PEX:OutputCommandError
+R000 XC-APPGROUP:QueryVersion
+R001 XC-APPGROUP:Create
+R002 XC-APPGROUP:Destroy
+R003 XC-APPGROUP:GetAttr
+R004 XC-APPGROUP:Query
+R005 XC-APPGROUP:CreateAssoc
+R006 XC-APPGROUP:DestroyAssoc
+E000 XC-APPGROUP:BadAppGroup
+R000 XC-MISC:GetVersion
+R001 XC-MISC:GetXIDRange
+R002 XC-MISC:GetXIDList
+R000 XFIXES:QueryVersion
+R001 XFIXES:ChangeSaveSet
+R002 XFIXES:SelectSelectionInput
+R003 XFIXES:SelectCursorInput
+R004 XFIXES:GetCursorImage
+R005 XFIXES:CreateRegion
+R006 XFIXES:CreateRegionFromBitmap
+R007 XFIXES:CreateRegionFromWindow
+R008 XFIXES:CreateRegionFromGC
+R009 XFIXES:CreateRegionFromPicture
+R010 XFIXES:DestroyRegion
+R011 XFIXES:SetRegion
+R012 XFIXES:CopyRegion
+R013 XFIXES:UnionRegion
+R014 XFIXES:IntersectRegion
+R015 XFIXES:SubtractRegion
+R016 XFIXES:InvertRegion
+R017 XFIXES:TranslateRegion
+R018 XFIXES:RegionExtents
+R019 XFIXES:FetchRegion
+R020 XFIXES:SetGCClipRegion
+R021 XFIXES:SetWindowShapeRegion
+R022 XFIXES:SetPictureClipRegion
+R023 XFIXES:SetCursorName
+R024 XFIXES:GetCursorName
+R025 XFIXES:GetCursorImageAndName
+R026 XFIXES:ChangeCursor
+R027 XFIXES:ChangeCursorByName
+R028 XFIXES:ExpandRegion
+R029 XFIXES:HideCursor
+R030 XFIXES:ShowCursor
+V000 XFIXES:SelectionNotify
+V001 XFIXES:CursorNotify
+E000 XFIXES:BadRegion
+R000 XFree86-Bigfont:QueryVersion
+R001 XFree86-Bigfont:QueryFont
+R000 XFree86-DGA:QueryVersion
+R001 XFree86-DGA:GetVideoLL
+R002 XFree86-DGA:DirectVideo
+R003 XFree86-DGA:GetViewPortSize
+R004 XFree86-DGA:SetViewPort
+R005 XFree86-DGA:GetVidPage
+R006 XFree86-DGA:SetVidPage
+R007 XFree86-DGA:InstallColormap
+R008 XFree86-DGA:QueryDirectVideo
+R009 XFree86-DGA:ViewPortChanged
+R010 XFree86-DGA:Obsolete1
+R011 XFree86-DGA:Obsolete2
+R012 XFree86-DGA:QueryModes
+R013 XFree86-DGA:SetMode
+R014 XFree86-DGA:SetViewport
+R015 XFree86-DGA:InstallColormap
+R016 XFree86-DGA:SelectInput
+R017 XFree86-DGA:FillRectangle
+R018 XFree86-DGA:CopyArea
+R019 XFree86-DGA:CopyTransparentArea
+R020 XFree86-DGA:GetViewportStatus
+R021 XFree86-DGA:Sync
+R022 XFree86-DGA:OpenFramebuffer
+R023 XFree86-DGA:CloseFramebuffer
+R024 XFree86-DGA:SetClientVersion
+R025 XFree86-DGA:ChangePixmapMode
+R026 XFree86-DGA:CreateColormap
+E000 XFree86-DGA:ClientNotLocal
+E001 XFree86-DGA:NoDirectVideoMode
+E002 XFree86-DGA:ScreenNotActive
+E003 XFree86-DGA:DirectNotActivated
+E004 XFree86-DGA:OperationNotSupported
+R000 XFree86-DRI:QueryVersion
+R001 XFree86-DRI:QueryDirectRenderingCapable
+R002 XFree86-DRI:OpenConnection
+R003 XFree86-DRI:CloseConnection
+R004 XFree86-DRI:GetClientDriverName
+R005 XFree86-DRI:CreateContext
+R006 XFree86-DRI:DestroyContext
+R007 XFree86-DRI:CreateDrawable
+R008 XFree86-DRI:DestroyDrawable
+R009 XFree86-DRI:GetDrawableInfo
+R010 XFree86-DRI:GetDeviceInfo
+R011 XFree86-DRI:AuthConnection
+R012 XFree86-DRI:OpenFullScreen
+R013 XFree86-DRI:CloseFullScreen
+E000 XFree86-DRI:ClientNotLocal
+E001 XFree86-DRI:OperationNotSupported
+R000 XFree86-Misc:QueryVersion
+R001 XFree86-Misc:GetSaver
+R002 XFree86-Misc:SetSaver
+R003 XFree86-Misc:GetMouseSettings
+R004 XFree86-Misc:GetKbdSettings
+R005 XFree86-Misc:SetMouseSettings
+R006 XFree86-Misc:SetKbdSettings
+R007 XFree86-Misc:SetGrabKeysState
+R008 XFree86-Misc:SetClientVersion
+R009 XFree86-Misc:GetFilePaths
+R010 XFree86-Misc:PassMessage
+E000 XFree86-Misc:BadMouseProtocol
+E001 XFree86-Misc:BadMouseBaudRate
+E002 XFree86-Misc:BadMouseFlags
+E003 XFree86-Misc:BadMouseCombo
+E004 XFree86-Misc:BadKbdType
+E005 XFree86-Misc:ModInDevDisabled
+E006 XFree86-Misc:ModInDevClientNotLocal
+E007 XFree86-Misc:NoModule
+R000 XFree86-VidModeExtension:QueryVersion
+R001 XFree86-VidModeExtension:GetModeLine
+R002 XFree86-VidModeExtension:ModModeLine
+R003 XFree86-VidModeExtension:SwitchMode
+R004 XFree86-VidModeExtension:GetMonitor
+R005 XFree86-VidModeExtension:LockModeSwitch
+R006 XFree86-VidModeExtension:GetAllModeLines
+R007 XFree86-VidModeExtension:AddModeLine
+R008 XFree86-VidModeExtension:DeleteModeLine
+R009 XFree86-VidModeExtension:ValidateModeLine
+R010 XFree86-VidModeExtension:SwitchToMode
+R011 XFree86-VidModeExtension:GetViewPort
+R012 XFree86-VidModeExtension:SetViewPort
+R013 XFree86-VidModeExtension:GetDotClocks
+R014 XFree86-VidModeExtension:SetClientVersion
+R015 XFree86-VidModeExtension:SetGamma
+R016 XFree86-VidModeExtension:GetGamma
+R017 XFree86-VidModeExtension:GetGammaRamp
+R018 XFree86-VidModeExtension:SetGammaRamp
+R019 XFree86-VidModeExtension:GetGammaRampSize
+R020 XFree86-VidModeExtension:GetPermissions
+V000 XFree86-VidModeExtension:Notify
+E000 XFree86-VidModeExtension:BadClock
+E001 XFree86-VidModeExtension:BadHTimings
+E002 XFree86-VidModeExtension:BadVTimings
+E003 XFree86-VidModeExtension:ModeUnsuitable
+E004 XFree86-VidModeExtension:ExtensionDisabled
+E005 XFree86-VidModeExtension:ClientNotLocal
+E006 XFree86-VidModeExtension:ZoomLocked
+R001 XIE:QueryImageExtension
+R002 XIE:QueryTechniques
+R003 XIE:CreateColorList
+R004 XIE:DestroyColorList
+R005 XIE:PurgeColorList
+R006 XIE:QueryColorList
+R007 XIE:CreateLUT
+R008 XIE:DestroyLUT
+R009 XIE:CreatePhotomap
+R010 XIE:DestroyPhotomap
+R011 XIE:QueryPhotomap
+R012 XIE:CreateROI
+R013 XIE:DestroyROI
+R014 XIE:CreatePhotospace
+R015 XIE:DestroyPhotospace
+R016 XIE:ExecuteImmediate
+R017 XIE:CreatePhotoflo
+R018 XIE:DestroyPhotoflo
+R019 XIE:ExecutePhotoflo
+R020 XIE:ModifyPhotoflo
+R021 XIE:RedefinePhotoflo
+R022 XIE:PutClientData
+R023 XIE:GetClientData
+R024 XIE:QueryPhotoflo
+R025 XIE:Await
+R026 XIE:Abort
+E000 XIE:ColorListError
+E001 XIE:LUTError
+E002 XIE:PhotofloError
+E003 XIE:PhotomapError
+E004 XIE:PhotospaceError
+E005 XIE:ROIError
+E006 XIE:FloError
+R000 XINERAMA:QueryVersion
+R001 XINERAMA:GetState
+R002 XINERAMA:GetScreenCount
+R003 XINERAMA:GetScreenSize
+R004 XINERAMA:IsActive
+R005 XINERAMA:QueryScreens
+R001 XInputExtension:GetExtensionVersion
+R002 XInputExtension:ListInputDevices
+R003 XInputExtension:OpenDevice
+R004 XInputExtension:CloseDevice
+R005 XInputExtension:SetDeviceMode
+R006 XInputExtension:SelectExtensionEvent
+R007 XInputExtension:GetSelectedExtensionEvents
+R008 XInputExtension:ChangeDeviceDontPropagateList
+R009 XInputExtension:GetDeviceDontPropagageList
+R010 XInputExtension:GetDeviceMotionEvents
+R011 XInputExtension:ChangeKeyboardDevice
+R012 XInputExtension:ChangePointerDevice
+R013 XInputExtension:GrabDevice
+R014 XInputExtension:UngrabDevice
+R015 XInputExtension:GrabDeviceKey
+R016 XInputExtension:UngrabDeviceKey
+R017 XInputExtension:GrabDeviceButton
+R018 XInputExtension:UngrabDeviceButton
+R019 XInputExtension:AllowDeviceEvents
+R020 XInputExtension:GetDeviceFocus
+R021 XInputExtension:SetDeviceFocus
+R022 XInputExtension:GetFeedbackControl
+R023 XInputExtension:ChangeFeedbackControl
+R024 XInputExtension:GetDeviceKeyMapping
+R025 XInputExtension:ChangeDeviceKeyMapping
+R026 XInputExtension:GetDeviceModifierMapping
+R027 XInputExtension:SetDeviceModifierMapping
+R028 XInputExtension:GetDeviceButtonMapping
+R029 XInputExtension:SetDeviceButtonMapping
+R030 XInputExtension:QueryDeviceState
+R031 XInputExtension:SendExtensionEvent
+R032 XInputExtension:DeviceBell
+R033 XInputExtension:SetDeviceValuators
+R034 XInputExtension:GetDeviceControl
+R035 XInputExtension:ChangeDeviceControl
+R036 XInputExtension:ListDeviceProperties
+R037 XInputExtension:ChangeDeviceProperty
+R038 XInputExtension:DeleteDeviceProperty
+R039 XInputExtension:GetDeviceProperty
+R040 XInputExtension:QueryPointer
+R041 XInputExtension:WarpPointer
+R042 XInputExtension:ChangeCursor
+R043 XInputExtension:ChangeHierarchy
+R044 XInputExtension:SetClientPointer
+R045 XInputExtension:GetClientPointer
+R046 XInputExtension:SelectEvents
+R047 XInputExtension:QueryVersion
+R048 XInputExtension:QueryDevice
+R049 XInputExtension:SetFocus
+R050 XInputExtension:GetFocus
+R051 XInputExtension:GrabDevice
+R052 XInputExtension:UngrabDevice
+R053 XInputExtension:AllowEvents
+R054 XInputExtension:PassiveGrabDevice
+R055 XInputExtension:PassiveUngrabDevice
+R056 XInputExtension:ListProperties
+R057 XInputExtension:ChangeProperty
+R058 XInputExtension:DeleteProperty
+R059 XInputExtension:GetProperty
+R060 XInputExtension:GetSelectedEvents
+V000 XInputExtension:DeviceValuator
+V001 XInputExtension:DeviceKeyPress
+V002 XInputExtension:DeviceKeyRelease
+V003 XInputExtension:DeviceButtonPress
+V004 XInputExtension:DeviceButtonRelease
+V005 XInputExtension:DeviceMotionNotify
+V006 XInputExtension:DeviceFocusIn
+V007 XInputExtension:DeviceFocusOut
+V008 XInputExtension:ProximityIn
+V009 XInputExtension:ProximityOut
+V010 XInputExtension:DeviceStateNotify
+V011 XInputExtension:DeviceMappingNotify
+V012 XInputExtension:ChangeDeviceNotify
+V013 XInputExtension:DeviceKeystateNotify
+V014 XInputExtension:DeviceButtonstateNotify
+V015 XInputExtension:DevicePresenceNotify
+V016 XInputExtension:DevicePropertyNotify
+E000 XInputExtension:BadDevice
+E001 XInputExtension:BadEvent
+E002 XInputExtension:BadMode
+E003 XInputExtension:DeviceBusy
+E004 XInputExtension:BadClass
+R000 XKEYBOARD:UseExtension
+R001 XKEYBOARD:SelectEvents
+R002 XKEYBOARD:Obsolete
+R003 XKEYBOARD:Bell
+R004 XKEYBOARD:GetState
+R005 XKEYBOARD:LatchLockState
+R006 XKEYBOARD:GetControls
+R007 XKEYBOARD:SetControls
+R008 XKEYBOARD:GetMap
+R009 XKEYBOARD:SetMap
+R010 XKEYBOARD:GetCompatMap
+R011 XKEYBOARD:SetCompatMap
+R012 XKEYBOARD:GetIndicatorState
+R013 XKEYBOARD:GetIndicatorMap
+R014 XKEYBOARD:SetIndicatorMap
+R015 XKEYBOARD:GetNamedIndicator
+R016 XKEYBOARD:SetNamedIndicator
+R017 XKEYBOARD:GetNames
+R018 XKEYBOARD:SetNames
+R019 XKEYBOARD:GetGeometry
+R020 XKEYBOARD:SetGeometry
+R021 XKEYBOARD:PerClientFlags
+R022 XKEYBOARD:ListComponents
+R023 XKEYBOARD:GetKbdByName
+R024 XKEYBOARD:GetDeviceInfo
+R025 XKEYBOARD:SetDeviceInfo
+R101 XKEYBOARD:SetDebuggingFlags
+V000 XKEYBOARD:EventCode
+E000 XKEYBOARD:BadKeyboard
+R000 XTEST:GetVersion
+R001 XTEST:CompareCursor
+R002 XTEST:FakeInput
+R003 XTEST:GrabControl
+R000 XVideo:QueryExtension
+R001 XVideo:QueryAdaptors
+R002 XVideo:QueryEncodings
+R003 XVideo:GrabPort
+R004 XVideo:UngrabPort
+R005 XVideo:PutVideo
+R006 XVideo:PutStill
+R007 XVideo:GetVideo
+R008 XVideo:GetStill
+R009 XVideo:StopVideo
+R010 XVideo:SelectVideoNotify
+R011 XVideo:SelectPortNotify
+R012 XVideo:QueryBestSize
+R013 XVideo:SetPortAttribute
+R014 XVideo:GetPortAttribute
+R015 XVideo:QueryPortAttributes
+R016 XVideo:ListImageFormats
+R017 XVideo:QueryImageAttributes
+R018 XVideo:PutImage
+R019 XVideo:ShmPutImage
+V000 XVideo:VideoNotify
+V001 XVideo:PortNotify
+E000 XVideo:BadPort
+E001 XVideo:BadEncoding
+E002 XVideo:BadControl
+R000 XVideo-MotionCompensation:QueryVersion
+R001 XVideo-MotionCompensation:ListSurfaceTypes
+R002 XVideo-MotionCompensation:CreateContext
+R003 XVideo-MotionCompensation:DestroyContext
+R004 XVideo-MotionCompensation:CreateSurface
+R005 XVideo-MotionCompensation:DestroySurface
+R006 XVideo-MotionCompensation:CreateSubpicture
+R007 XVideo-MotionCompensation:DestroySubpicture
+R008 XVideo-MotionCompensation:ListSubpictureTypes
+R009 XVideo-MotionCompensation:GetDRInfo
+E000 XVideo-MotionCompensation:BadContext
+E001 XVideo-MotionCompensation:BadSurface
+E002 XVideo-MotionCompensation:BadSubpicture
+R000 XpExtension:QueryVersion
+R001 XpExtension:GetPrinterList
+R002 XpExtension:CreateContext
+R003 XpExtension:SetContext
+R004 XpExtension:GetContext
+R005 XpExtension:DestroyContext
+R006 XpExtension:GetContextScreen
+R007 XpExtension:StartJob
+R008 XpExtension:EndJob
+R009 XpExtension:StartDoc
+R010 XpExtension:EndDoc
+R011 XpExtension:PutDocumentData
+R012 XpExtension:GetDocumentData
+R013 XpExtension:StartPage
+R014 XpExtension:EndPage
+R015 XpExtension:SelectInput
+R016 XpExtension:InputSelected
+R017 XpExtension:GetAttributes
+R018 XpExtension:SetAttributes
+R019 XpExtension:GetOneAttribute
+R020 XpExtension:RehashPrinterList
+R021 XpExtension:GetPageDimensions
+R022 XpExtension:QueryScreens
+R023 XpExtension:SetImageResolution
+R024 XpExtension:GetImageResolution
+V000 XpExtension:PrintNotify
+V001 XpExtension:AttributeNotify
+E000 XpExtension:BadContext
+E001 XpExtension:BadSequence
+E002 XpExtension:BadResourceID
diff --git a/xorg-server/doc/smartsched b/xorg-server/doc/smartsched
index 466408431..057a759fd 100644
--- a/xorg-server/doc/smartsched
+++ b/xorg-server/doc/smartsched
@@ -1,204 +1,204 @@
- Client Scheduling in X
- Keith Packard
- SuSE
- 10/28/99
-
-History:
-
-Since the original X server was written at Digital in 1987, the OS and DIX
-layers shared responsibility for scheduling the order to service
-client requests. The original design was simplistic; under the maximum
-first make it work, then make it work well, this was a good idea. Now
-that we have a bit more experience with X applications, it's time to
-rethink the design.
-
-The basic dispatch loop in DIX looks like:
-
- for (;;)
- {
- nready = WaitForSomething (...);
- while (nready--)
- {
- isItTimeToYield = FALSE;
- while (!isItTimeToYield)
- {
- if (!ReadRequestFromClient (...))
- break;
- (execute request);
- }
- }
- }
-
-WaitForSomething looks like:
-
- for (;;)
- if (ANYSET (ClientsWithInput))
- return popcount (ClientsWithInput);
- select (...)
- compute clientsReadable from select result;
- return popcount (clientsReadable)
- }
-
-ReadRequestFromClient looks like:
-
- if (!fullRequestQueued)
- {
- read ();
- if (!fullRequestQueued)
- {
- remove from ClientsWithInput;
- timesThisConnection = 0;
- return 0;
- }
- }
- if (twoFullRequestsQueued)
- add to ClientsWithInput;
-
- if (++timesThisConnection >= 10)
- {
- isItTimeToYield = TRUE;
- timesThisConnection = 0;
- }
- return 1;
-
-Here's what happens in this code:
-
-With a single client executing a stream of requests:
-
- A client sends a packet of requests to the server.
-
- WaitForSomething wakes up from select and returns that client
- to Dispatch
-
- Dispatch calls ReadRequestFromClient which reads a buffer (4K)
- full of requests from the client
-
- The server executes requests from this buffer until it emptys,
- in two stages -- 10 requests at a time are executed in the
- inner Dispatch loop, a buffer full of requests are executed
- because WaitForSomething immediately returns if any clients
- have complete requests pending in their input queues.
-
- When the buffer finally emptys, the next call to ReadRequest
- FromClient will return zero and Dispatch will go back to
- WaitForSomething; now that the client has no requests pending,
- WaitForSomething will block in select again. If the client
- is active, this select will immediately return that client
- as ready to read.
-
-With multiple clients sending streams of requests, the sequence
-of operations is similar, except that ReadRequestFromClient will
-set isItTimeToYield after each 10 requests executed causing the
-server to round-robin among the clients with available requests.
-
-It's important to realize here that any complete requests which have been
-read from clients will be executed before the server will use select again
-to discover input from other clients. A single busy client can easily
-monopolize the X server.
-
-So, the X server doesn't share well with clients which are more interactive
-in nature.
-
-The X server executes at most a buffer full of requests before again heading
-into select; ReadRequestFromClient causes the server to yield when the
-client request buffer doesn't contain a complete request. When
-that buffer is executed quickly, the server spends a lot of time
-in select discovering that the same client again has input ready. Thus
-the server also runs busy clients less efficiently than is would be
-possible.
-
-What to do.
-
-There are several things evident from the above discussion:
-
- 1 The server has a poor metric for deciding how much work it
- should do at one time on behalf of a particular client.
-
- 2 The server doesn't call select often enough to detect less
- aggressive clients in the face of busy clients, especially
- when those clients are executing slow requests.
-
- 3 The server calls select too often when executing fast requests.
-
- 4 Some priority scheme is needed to keep interactive clients
- responding to the user.
-
-And, there are some assumptions about how X applications work:
-
- 1 Each X request is executed relatively quickly; a request-granularity
- is good enough for interactive response almost all of the time.
-
- 2 X applications receiving mouse/keyboard events are likely to
- warrant additional attention from the X server.
-
-Instead of a request-count metric for work, a time-based metric should be
-used. The server should select a reasonable time slice for each client
-and execute requests for the entire timeslice before yielding to
-another client.
-
-Instead of returning immediately from WaitForSomething if clients have
-complete requests queued, the server should go through select each
-time and gather as many ready clients as possible. This involves
-polling instead of blocking and adding the ClientsWithInput to
-clientsReadable after the select returns.
-
-Instead of yielding when the request buffer is empty for a particular
-client, leave the yielding to the upper level scheduling and allow
-the server to try and read again from the socket. If the client
-is busy, another buffer full of requests will already be waiting
-to be delivered thus avoiding the call through select and the
-additional overhead in WaitForSomething.
-
-Finally, the dispatch loop should not simply execute requests from the
-first available client, instead each client should be prioritized with
-busy clients penalized and clients receiving user events praised.
-
-How it's done:
-
-Polling the current time of day from the OS is too expensive to
-be done at each request boundary, so instead an interval timer is
-set allowing the server to track time changes by counting invocations
-of the related signal handler. Instead of using the wall time for
-this purpose, the process CPU time is used instead. This serves
-two purposes -- first, it allows the server to consume no CPU cycles
-when idle, second it avoids conflicts with SIGALRM usage in other
-parts of the server code. It's not without problems though; other
-CPU intensive processes on the same machine can reduce interactive
-response time within the X server. The dispatch loop can now
-calculate an approximate time value using the number of signals
-received. The granularity of the timer sets the scheduling jitter,
-at 20ms it's only occasionally noticeable.
-
-The changes to WaitForSomething and ReadRequestFromClient are
-straightforward, adjusting when select is called and avoiding
-setting isItTimeToYield too often.
-
-The dispatch loop changes are more extensive, now instead of
-executing requests from all available clients, a single client
-is chosen after each call to WaitForSomething, requests are
-executed for that client and WaitForSomething is called again.
-
-Each client is assigned a priority, the dispatch loop chooses the
-client with the highest priority to execute. Priorities are
-updated in three ways:
-
- 1. Clients which consume their entire slice are penalized
- by having their priority reduced by one until they
- reach some minimum value.
-
- 2. Clients which have executed no requests for some time
- are praised by having their priority raised until they
- return to normal priority.
-
- 3. Clients which receive user input are praised by having
- their priority rased until they reach some maximal
- value, above normal priority.
-
-The effect of these changes is to both improve interactive application
-response and benchmark numbers at the same time.
-
-
-
-
-
-$XFree86: $
+ Client Scheduling in X
+ Keith Packard
+ SuSE
+ 10/28/99
+
+History:
+
+Since the original X server was written at Digital in 1987, the OS and DIX
+layers shared responsibility for scheduling the order to service
+client requests. The original design was simplistic; under the maximum
+first make it work, then make it work well, this was a good idea. Now
+that we have a bit more experience with X applications, it's time to
+rethink the design.
+
+The basic dispatch loop in DIX looks like:
+
+ for (;;)
+ {
+ nready = WaitForSomething (...);
+ while (nready--)
+ {
+ isItTimeToYield = FALSE;
+ while (!isItTimeToYield)
+ {
+ if (!ReadRequestFromClient (...))
+ break;
+ (execute request);
+ }
+ }
+ }
+
+WaitForSomething looks like:
+
+ for (;;)
+ if (ANYSET (ClientsWithInput))
+ return popcount (ClientsWithInput);
+ select (...)
+ compute clientsReadable from select result;
+ return popcount (clientsReadable)
+ }
+
+ReadRequestFromClient looks like:
+
+ if (!fullRequestQueued)
+ {
+ read ();
+ if (!fullRequestQueued)
+ {
+ remove from ClientsWithInput;
+ timesThisConnection = 0;
+ return 0;
+ }
+ }
+ if (twoFullRequestsQueued)
+ add to ClientsWithInput;
+
+ if (++timesThisConnection >= 10)
+ {
+ isItTimeToYield = TRUE;
+ timesThisConnection = 0;
+ }
+ return 1;
+
+Here's what happens in this code:
+
+With a single client executing a stream of requests:
+
+ A client sends a packet of requests to the server.
+
+ WaitForSomething wakes up from select and returns that client
+ to Dispatch
+
+ Dispatch calls ReadRequestFromClient which reads a buffer (4K)
+ full of requests from the client
+
+ The server executes requests from this buffer until it emptys,
+ in two stages -- 10 requests at a time are executed in the
+ inner Dispatch loop, a buffer full of requests are executed
+ because WaitForSomething immediately returns if any clients
+ have complete requests pending in their input queues.
+
+ When the buffer finally emptys, the next call to ReadRequest
+ FromClient will return zero and Dispatch will go back to
+ WaitForSomething; now that the client has no requests pending,
+ WaitForSomething will block in select again. If the client
+ is active, this select will immediately return that client
+ as ready to read.
+
+With multiple clients sending streams of requests, the sequence
+of operations is similar, except that ReadRequestFromClient will
+set isItTimeToYield after each 10 requests executed causing the
+server to round-robin among the clients with available requests.
+
+It's important to realize here that any complete requests which have been
+read from clients will be executed before the server will use select again
+to discover input from other clients. A single busy client can easily
+monopolize the X server.
+
+So, the X server doesn't share well with clients which are more interactive
+in nature.
+
+The X server executes at most a buffer full of requests before again heading
+into select; ReadRequestFromClient causes the server to yield when the
+client request buffer doesn't contain a complete request. When
+that buffer is executed quickly, the server spends a lot of time
+in select discovering that the same client again has input ready. Thus
+the server also runs busy clients less efficiently than is would be
+possible.
+
+What to do.
+
+There are several things evident from the above discussion:
+
+ 1 The server has a poor metric for deciding how much work it
+ should do at one time on behalf of a particular client.
+
+ 2 The server doesn't call select often enough to detect less
+ aggressive clients in the face of busy clients, especially
+ when those clients are executing slow requests.
+
+ 3 The server calls select too often when executing fast requests.
+
+ 4 Some priority scheme is needed to keep interactive clients
+ responding to the user.
+
+And, there are some assumptions about how X applications work:
+
+ 1 Each X request is executed relatively quickly; a request-granularity
+ is good enough for interactive response almost all of the time.
+
+ 2 X applications receiving mouse/keyboard events are likely to
+ warrant additional attention from the X server.
+
+Instead of a request-count metric for work, a time-based metric should be
+used. The server should select a reasonable time slice for each client
+and execute requests for the entire timeslice before yielding to
+another client.
+
+Instead of returning immediately from WaitForSomething if clients have
+complete requests queued, the server should go through select each
+time and gather as many ready clients as possible. This involves
+polling instead of blocking and adding the ClientsWithInput to
+clientsReadable after the select returns.
+
+Instead of yielding when the request buffer is empty for a particular
+client, leave the yielding to the upper level scheduling and allow
+the server to try and read again from the socket. If the client
+is busy, another buffer full of requests will already be waiting
+to be delivered thus avoiding the call through select and the
+additional overhead in WaitForSomething.
+
+Finally, the dispatch loop should not simply execute requests from the
+first available client, instead each client should be prioritized with
+busy clients penalized and clients receiving user events praised.
+
+How it's done:
+
+Polling the current time of day from the OS is too expensive to
+be done at each request boundary, so instead an interval timer is
+set allowing the server to track time changes by counting invocations
+of the related signal handler. Instead of using the wall time for
+this purpose, the process CPU time is used instead. This serves
+two purposes -- first, it allows the server to consume no CPU cycles
+when idle, second it avoids conflicts with SIGALRM usage in other
+parts of the server code. It's not without problems though; other
+CPU intensive processes on the same machine can reduce interactive
+response time within the X server. The dispatch loop can now
+calculate an approximate time value using the number of signals
+received. The granularity of the timer sets the scheduling jitter,
+at 20ms it's only occasionally noticeable.
+
+The changes to WaitForSomething and ReadRequestFromClient are
+straightforward, adjusting when select is called and avoiding
+setting isItTimeToYield too often.
+
+The dispatch loop changes are more extensive, now instead of
+executing requests from all available clients, a single client
+is chosen after each call to WaitForSomething, requests are
+executed for that client and WaitForSomething is called again.
+
+Each client is assigned a priority, the dispatch loop chooses the
+client with the highest priority to execute. Priorities are
+updated in three ways:
+
+ 1. Clients which consume their entire slice are penalized
+ by having their priority reduced by one until they
+ reach some minimum value.
+
+ 2. Clients which have executed no requests for some time
+ are praised by having their priority raised until they
+ return to normal priority.
+
+ 3. Clients which receive user input are praised by having
+ their priority rased until they reach some maximal
+ value, above normal priority.
+
+The effect of these changes is to both improve interactive application
+response and benchmark numbers at the same time.
+
+
+
+
+
+$XFree86: $
diff --git a/xorg-server/exa/Makefile.am b/xorg-server/exa/Makefile.am
index 9876bf5f6..8b759cd76 100644
--- a/xorg-server/exa/Makefile.am
+++ b/xorg-server/exa/Makefile.am
@@ -1,30 +1,30 @@
-noinst_LTLIBRARIES = libexa.la
-
-# Override these since EXA doesn't need them and the needed files aren't
-# built (in hw/xfree86/os-support/solaris) until after EXA is built
-SOLARIS_ASM_CFLAGS=""
-
-if XORG
-sdk_HEADERS = exa.h
-endif
-
-INCLUDES = \
- $(XORG_INCS) \
- -I$(srcdir)/../miext/cw
-
-AM_CFLAGS = $(XORG_CFLAGS) $(DIX_CFLAGS)
-
-libexa_la_SOURCES = \
- exa.c \
- exa.h \
- exa_classic.c \
- exa_migration_classic.c \
- exa_driver.c \
- exa_mixed.c \
- exa_migration_mixed.c \
- exa_accel.c \
- exa_glyphs.c \
- exa_offscreen.c \
- exa_render.c \
- exa_priv.h \
- exa_unaccel.c
+noinst_LTLIBRARIES = libexa.la
+
+# Override these since EXA doesn't need them and the needed files aren't
+# built (in hw/xfree86/os-support/solaris) until after EXA is built
+SOLARIS_ASM_CFLAGS=""
+
+if XORG
+sdk_HEADERS = exa.h
+endif
+
+INCLUDES = \
+ $(XORG_INCS) \
+ -I$(srcdir)/../miext/cw
+
+AM_CFLAGS = $(XORG_CFLAGS) $(DIX_CFLAGS)
+
+libexa_la_SOURCES = \
+ exa.c \
+ exa.h \
+ exa_classic.c \
+ exa_migration_classic.c \
+ exa_driver.c \
+ exa_mixed.c \
+ exa_migration_mixed.c \
+ exa_accel.c \
+ exa_glyphs.c \
+ exa_offscreen.c \
+ exa_render.c \
+ exa_priv.h \
+ exa_unaccel.c
diff --git a/xorg-server/fix-miregion b/xorg-server/fix-miregion
index 7aea689b7..fc502bbfd 100644
--- a/xorg-server/fix-miregion
+++ b/xorg-server/fix-miregion
@@ -1,29 +1,29 @@
-#!/bin/sh
-sed -i \
--e 's/miRegionCreate\b/RegionCreate/g' \
--e 's/miRegionInit\b/RegionInit/g' \
--e 's/miRegionDestroy\b/RegionDestroy/g' \
--e 's/miRegionUninit\b/RegionUninit/g' \
--e 's/miRegionCopy\b/RegionCopy/g' \
--e 's/miIntersect\b/RegionIntersect/g' \
--e 's/miUnion\b/RegionUnion/g' \
--e 's/miRegionAppend\b/RegionAppend/g' \
--e 's/miRegionValidate\b/RegionValidate/g' \
--e 's/miRectsToRegion\b/RegionFromRects/g' \
--e 's/miSubtract\b/RegionSubtract/g' \
--e 's/miInverse\b/RegionInverse/g' \
--e 's/miRectIn\b/RegionContainsRect/g' \
--e 's/miTranslateRegion\b/RegionTranslate/g' \
--e 's/miRegionReset\b/RegionReset/g' \
--e 's/miRegionBreak\b/RegionBreak/g' \
--e 's/miPointInRegion\b/RegionContainsPoint/g' \
--e 's/miRegionEqual\b/RegionEqual/g' \
--e 's/miRegionNotEmpty\b/RegionNotEmpty/g' \
--e 's/miRegionEmpty\b/RegionEmpty/g' \
--e 's/miRegionExtents\b/RegionExtents/g' \
--e 's/miPrintRegion\b/RegionPrint/g' \
--e 's/miRectAlloc\b/RegionRectAlloc/g' \
--e 's/miValidRegion\b/RegionIsValid/g' \
--e 's/miRegionBroken\b/RegionBroken/g' \
--e 's/miClipSpans\b/RegionClipSpans/g' \
-"$@"
+#!/bin/sh
+sed -i \
+-e 's/miRegionCreate\b/RegionCreate/g' \
+-e 's/miRegionInit\b/RegionInit/g' \
+-e 's/miRegionDestroy\b/RegionDestroy/g' \
+-e 's/miRegionUninit\b/RegionUninit/g' \
+-e 's/miRegionCopy\b/RegionCopy/g' \
+-e 's/miIntersect\b/RegionIntersect/g' \
+-e 's/miUnion\b/RegionUnion/g' \
+-e 's/miRegionAppend\b/RegionAppend/g' \
+-e 's/miRegionValidate\b/RegionValidate/g' \
+-e 's/miRectsToRegion\b/RegionFromRects/g' \
+-e 's/miSubtract\b/RegionSubtract/g' \
+-e 's/miInverse\b/RegionInverse/g' \
+-e 's/miRectIn\b/RegionContainsRect/g' \
+-e 's/miTranslateRegion\b/RegionTranslate/g' \
+-e 's/miRegionReset\b/RegionReset/g' \
+-e 's/miRegionBreak\b/RegionBreak/g' \
+-e 's/miPointInRegion\b/RegionContainsPoint/g' \
+-e 's/miRegionEqual\b/RegionEqual/g' \
+-e 's/miRegionNotEmpty\b/RegionNotEmpty/g' \
+-e 's/miRegionEmpty\b/RegionEmpty/g' \
+-e 's/miRegionExtents\b/RegionExtents/g' \
+-e 's/miPrintRegion\b/RegionPrint/g' \
+-e 's/miRectAlloc\b/RegionRectAlloc/g' \
+-e 's/miValidRegion\b/RegionIsValid/g' \
+-e 's/miRegionBroken\b/RegionBroken/g' \
+-e 's/miClipSpans\b/RegionClipSpans/g' \
+"$@"
diff --git a/xorg-server/fix-miregion-private b/xorg-server/fix-miregion-private
index a294c4f96..ebc24fac0 100644
--- a/xorg-server/fix-miregion-private
+++ b/xorg-server/fix-miregion-private
@@ -1,14 +1,14 @@
-#!/bin/sh
-sed -i \
--e 's/miEmptyBox\b/RegionEmptyBox/g' \
--e 's/miEmptyData\b/RegionEmptyData/g' \
--e 's/miBrokenData\b/RegionBrokenData/g' \
--e 's/miBrokenRegion\b/RegionBrokenRegion/g' \
--e 's/miCoalesce\b/RegionCoalesce/g' \
--e 's/miAppendNonO\b/RegionAppendNonO/g' \
--e 's/miRegionOp\b/RegionOp/g' \
--e 's/miSetExtents\b/RegionSetExtents/g' \
--e 's/miIntersectO\b/RegionIntersectO/g' \
--e 's/miUnionO\b/RegionUnionO/g' \
--e 's/miSubtractO\b/RegionSubtractO/g' \
-"$@"
+#!/bin/sh
+sed -i \
+-e 's/miEmptyBox\b/RegionEmptyBox/g' \
+-e 's/miEmptyData\b/RegionEmptyData/g' \
+-e 's/miBrokenData\b/RegionBrokenData/g' \
+-e 's/miBrokenRegion\b/RegionBrokenRegion/g' \
+-e 's/miCoalesce\b/RegionCoalesce/g' \
+-e 's/miAppendNonO\b/RegionAppendNonO/g' \
+-e 's/miRegionOp\b/RegionOp/g' \
+-e 's/miSetExtents\b/RegionSetExtents/g' \
+-e 's/miIntersectO\b/RegionIntersectO/g' \
+-e 's/miUnionO\b/RegionUnionO/g' \
+-e 's/miSubtractO\b/RegionSubtractO/g' \
+"$@"
diff --git a/xorg-server/fix-patch-whitespace b/xorg-server/fix-patch-whitespace
index 417f66fc6..2d06d8ea8 100644
--- a/xorg-server/fix-patch-whitespace
+++ b/xorg-server/fix-patch-whitespace
@@ -1,4 +1,4 @@
-#!/bin/sh
-git diff --check |
-sed -n 's!^\([^:]*\):\([^:]*\):.*!sed -i "\2 s/[ \t]*$//; \2 s/ *\t/\t/g" \1!p' |
-sh
+#!/bin/sh
+git diff --check |
+sed -n 's!^\([^:]*\):\([^:]*\):.*!sed -i "\2 s/[ \t]*$//; \2 s/ *\t/\t/g" \1!p' |
+sh
diff --git a/xorg-server/fix-region b/xorg-server/fix-region
index e38022bf6..ef8eb4218 100644
--- a/xorg-server/fix-region
+++ b/xorg-server/fix-region
@@ -1,38 +1,38 @@
-#!/bin/sh
-sed -i \
- -e 's/REGION_NIL\b/RegionNil/g' \
- -e 's/REGION_NAR\b/RegionNar/g' \
- -e 's/REGION_NUM_RECTS\b/RegionNumRects/g' \
- -e 's/REGION_SIZE\b/RegionSize/g' \
- -e 's/REGION_RECTS\b/RegionRects/g' \
- -e 's/REGION_BOXPTR\b/RegionBoxptr/g' \
- -e 's/REGION_BOX\b/RegionBox/g' \
- -e 's/REGION_TOP\b/RegionTop/g' \
- -e 's/REGION_END\b/RegionEnd/g' \
- -e 's/REGION_SZOF\b/RegionSizeof/g' \
- -e 's/REGION_CREATE *([^,]*, */RegionCreate(/g' \
- -e 's/REGION_COPY *([^,]*, */RegionCopy(/g' \
- -e 's/REGION_DESTROY *([^,]*, */RegionDestroy(/g' \
- -e 's/REGION_INTERSECT *([^,]*, */RegionIntersect(/g' \
- -e 's/REGION_UNION *([^,]*, */RegionUnion(/g' \
- -e 's/REGION_SUBTRACT *([^,]*, */RegionSubtract(/g' \
- -e 's/REGION_INVERSE *([^,]*, */RegionInverse(/g' \
- -e 's/REGION_TRANSLATE *([^,]*, */RegionTranslate(/g' \
- -e 's/RECT_IN_REGION *([^,]*, */RegionContainsRect(/g' \
- -e 's/POINT_IN_REGION *([^,]*, */RegionContainsPoint(/g' \
- -e 's/REGION_EQUAL *([^,]*, */RegionEqual(/g' \
- -e 's/REGION_APPEND *([^,]*, */RegionAppend(/g' \
- -e 's/REGION_VALIDATE *([^,]*, */RegionValidate(/g' \
- -e 's/BITMAP_TO_REGION\b/BitmapToRegion/g' \
- -e 's/RECTS_TO_REGION *([^,]*, */RegionFromRects(/g' \
- -e 's/REGION_BREAK *([^,]*, */RegionBreak(/g' \
- -e 's/REGION_INIT *([^,]*, */RegionInit(/g' \
- -e 's/REGION_UNINIT *([^,]*, */RegionUninit(/g' \
- -e 's/REGION_RESET *([^,]*, */RegionReset(/g' \
- -e 's/REGION_NOTEMPTY *([^,]*, */RegionNotEmpty(/g' \
- -e 's/REGION_BROKEN *([^,]*, */RegionBroken(/g' \
- -e 's/REGION_EMPTY *([^,]*, */RegionEmpty(/g' \
- -e 's/REGION_EXTENTS *([^,]*, */RegionExtents(/g' \
- -e 's/REGION_NULL *([^,]*, */RegionNull(/g' \
- -e 's/REGION_NULL$/RegionNull/g' \
- "$@"
+#!/bin/sh
+sed -i \
+ -e 's/REGION_NIL\b/RegionNil/g' \
+ -e 's/REGION_NAR\b/RegionNar/g' \
+ -e 's/REGION_NUM_RECTS\b/RegionNumRects/g' \
+ -e 's/REGION_SIZE\b/RegionSize/g' \
+ -e 's/REGION_RECTS\b/RegionRects/g' \
+ -e 's/REGION_BOXPTR\b/RegionBoxptr/g' \
+ -e 's/REGION_BOX\b/RegionBox/g' \
+ -e 's/REGION_TOP\b/RegionTop/g' \
+ -e 's/REGION_END\b/RegionEnd/g' \
+ -e 's/REGION_SZOF\b/RegionSizeof/g' \
+ -e 's/REGION_CREATE *([^,]*, */RegionCreate(/g' \
+ -e 's/REGION_COPY *([^,]*, */RegionCopy(/g' \
+ -e 's/REGION_DESTROY *([^,]*, */RegionDestroy(/g' \
+ -e 's/REGION_INTERSECT *([^,]*, */RegionIntersect(/g' \
+ -e 's/REGION_UNION *([^,]*, */RegionUnion(/g' \
+ -e 's/REGION_SUBTRACT *([^,]*, */RegionSubtract(/g' \
+ -e 's/REGION_INVERSE *([^,]*, */RegionInverse(/g' \
+ -e 's/REGION_TRANSLATE *([^,]*, */RegionTranslate(/g' \
+ -e 's/RECT_IN_REGION *([^,]*, */RegionContainsRect(/g' \
+ -e 's/POINT_IN_REGION *([^,]*, */RegionContainsPoint(/g' \
+ -e 's/REGION_EQUAL *([^,]*, */RegionEqual(/g' \
+ -e 's/REGION_APPEND *([^,]*, */RegionAppend(/g' \
+ -e 's/REGION_VALIDATE *([^,]*, */RegionValidate(/g' \
+ -e 's/BITMAP_TO_REGION\b/BitmapToRegion/g' \
+ -e 's/RECTS_TO_REGION *([^,]*, */RegionFromRects(/g' \
+ -e 's/REGION_BREAK *([^,]*, */RegionBreak(/g' \
+ -e 's/REGION_INIT *([^,]*, */RegionInit(/g' \
+ -e 's/REGION_UNINIT *([^,]*, */RegionUninit(/g' \
+ -e 's/REGION_RESET *([^,]*, */RegionReset(/g' \
+ -e 's/REGION_NOTEMPTY *([^,]*, */RegionNotEmpty(/g' \
+ -e 's/REGION_BROKEN *([^,]*, */RegionBroken(/g' \
+ -e 's/REGION_EMPTY *([^,]*, */RegionEmpty(/g' \
+ -e 's/REGION_EXTENTS *([^,]*, */RegionExtents(/g' \
+ -e 's/REGION_NULL *([^,]*, */RegionNull(/g' \
+ -e 's/REGION_NULL$/RegionNull/g' \
+ "$@"
diff --git a/xorg-server/hw/Makefile.am b/xorg-server/hw/Makefile.am
index 31e2565db..6c2cc6bd4 100644
--- a/xorg-server/hw/Makefile.am
+++ b/xorg-server/hw/Makefile.am
@@ -1,41 +1,41 @@
-if DMX
-DMX_SUBDIRS = dmx
-endif
-
-if XORG
-XORG_SUBDIRS = xfree86
-endif
-
-if XVFB
-XVFB_SUBDIRS = vfb
-endif
-
-if XNEST
-XNEST_SUBDIRS = xnest
-endif
-
-if XWIN
-XWIN_SUBDIRS = xwin
-endif
-
-if KDRIVE
-KDRIVE_SUBDIRS = kdrive
-endif
-
-if XQUARTZ
-XQUARTZ_SUBDIRS = xquartz
-endif
-
-SUBDIRS = \
- $(XORG_SUBDIRS) \
- $(XWIN_SUBDIRS) \
- $(XVFB_SUBDIRS) \
- $(XNEST_SUBDIRS) \
- $(DMX_SUBDIRS) \
- $(KDRIVE_SUBDIRS) \
- $(XQUARTZ_SUBDIRS)
-
-DIST_SUBDIRS = dmx xfree86 vfb xnest xwin xquartz kdrive
-
-relink:
- $(AM_V_at)for i in $(SUBDIRS) ; do $(MAKE) -C $$i relink || exit 1 ; done
+if DMX
+DMX_SUBDIRS = dmx
+endif
+
+if XORG
+XORG_SUBDIRS = xfree86
+endif
+
+if XVFB
+XVFB_SUBDIRS = vfb
+endif
+
+if XNEST
+XNEST_SUBDIRS = xnest
+endif
+
+if XWIN
+XWIN_SUBDIRS = xwin
+endif
+
+if KDRIVE
+KDRIVE_SUBDIRS = kdrive
+endif
+
+if XQUARTZ
+XQUARTZ_SUBDIRS = xquartz
+endif
+
+SUBDIRS = \
+ $(XORG_SUBDIRS) \
+ $(XWIN_SUBDIRS) \
+ $(XVFB_SUBDIRS) \
+ $(XNEST_SUBDIRS) \
+ $(DMX_SUBDIRS) \
+ $(KDRIVE_SUBDIRS) \
+ $(XQUARTZ_SUBDIRS)
+
+DIST_SUBDIRS = dmx xfree86 vfb xnest xwin xquartz kdrive
+
+relink:
+ $(AM_V_at)for i in $(SUBDIRS) ; do $(MAKE) -C $$i relink || exit 1 ; done
diff --git a/xorg-server/hw/dmx/.gitignore b/xorg-server/hw/dmx/.gitignore
index f71acff10..4dd9b0358 100644
--- a/xorg-server/hw/dmx/.gitignore
+++ b/xorg-server/hw/dmx/.gitignore
@@ -1,2 +1,2 @@
-# Add & Override for this directory and it's subdirectories
-Xdmx
+# Add & Override for this directory and it's subdirectories
+Xdmx
diff --git a/xorg-server/hw/dmx/config/.gitignore b/xorg-server/hw/dmx/config/.gitignore
index bf5e80873..086062204 100644
--- a/xorg-server/hw/dmx/config/.gitignore
+++ b/xorg-server/hw/dmx/config/.gitignore
@@ -1,7 +1,7 @@
-# Add & Override for this directory and it's subdirectories
-dmxtodmx
-parser.c
-parser.h
-scanner.c
-vdltodmx
-xdmxconfig
+# Add & Override for this directory and it's subdirectories
+dmxtodmx
+parser.c
+parser.h
+scanner.c
+vdltodmx
+xdmxconfig
diff --git a/xorg-server/hw/dmx/config/TODO b/xorg-server/hw/dmx/config/TODO
index 0e9255fd2..2998ff4a0 100644
--- a/xorg-server/hw/dmx/config/TODO
+++ b/xorg-server/hw/dmx/config/TODO
@@ -1,7 +1,7 @@
-Fri May 31 13:20:17 2002
-
-1) Sanitize values from input boxes.
-
-2) Add canvas colors to cavas widget resources or to command-line options.
-
-3) Add ability to edit option line(s) and wall.
+Fri May 31 13:20:17 2002
+
+1) Sanitize values from input boxes.
+
+2) Add canvas colors to cavas widget resources or to command-line options.
+
+3) Add ability to edit option line(s) and wall.
diff --git a/xorg-server/hw/dmx/config/dmxcompat.h b/xorg-server/hw/dmx/config/dmxcompat.h
index b9b083ff6..718892040 100644
--- a/xorg-server/hw/dmx/config/dmxcompat.h
+++ b/xorg-server/hw/dmx/config/dmxcompat.h
@@ -1,44 +1,44 @@
-/*
- * Copyright 2002 Red Hat Inc., Durham, North Carolina.
- *
- * All Rights Reserved.
- *
- * Permission is hereby granted, free of charge, to any person obtaining
- * a copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation on the rights to use, copy, modify, merge,
- * publish, distribute, sublicense, and/or sell copies of the Software,
- * and to permit persons to whom the Software is furnished to do so,
- * subject to the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial
- * portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- * NON-INFRINGEMENT. IN NO EVENT SHALL RED HAT AND/OR THEIR SUPPLIERS
- * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
- * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
- * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- */
-
-/*
- * Authors:
- * Rickard E. (Rik) Faith <faith@redhat.com>
- *
- */
-
-/** \file
- * Interface to VDL compatibility support. \see dmxcompat.c
- *
- * This file is not used by the DMX server.
- */
-
-#ifndef _DMXCOMPAT_H_
-#define _DMXCOMPAT_H_
-
-extern DMXConfigEntryPtr dmxVDLRead(const char *filename);
-#endif
+/*
+ * Copyright 2002 Red Hat Inc., Durham, North Carolina.
+ *
+ * All Rights Reserved.
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining
+ * a copy of this software and associated documentation files (the
+ * "Software"), to deal in the Software without restriction, including
+ * without limitation on the rights to use, copy, modify, merge,
+ * publish, distribute, sublicense, and/or sell copies of the Software,
+ * and to permit persons to whom the Software is furnished to do so,
+ * subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice (including the
+ * next paragraph) shall be included in all copies or substantial
+ * portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ * NON-INFRINGEMENT. IN NO EVENT SHALL RED HAT AND/OR THEIR SUPPLIERS
+ * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
+ * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+ * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ */
+
+/*
+ * Authors:
+ * Rickard E. (Rik) Faith <faith@redhat.com>
+ *
+ */
+
+/** \file
+ * Interface to VDL compatibility support. \see dmxcompat.c
+ *
+ * This file is not used by the DMX server.
+ */
+
+#ifndef _DMXCOMPAT_H_
+#define _DMXCOMPAT_H_
+
+extern DMXConfigEntryPtr dmxVDLRead(const char *filename);
+#endif
diff --git a/xorg-server/hw/dmx/config/parser.y b/xorg-server/hw/dmx/config/parser.y
index 9a45e624f..ac2441017 100644
--- a/xorg-server/hw/dmx/config/parser.y
+++ b/xorg-server/hw/dmx/config/parser.y
@@ -1,226 +1,226 @@
-/* $XFree86$ */
-/*
- * Copyright 2002-2003 Red Hat Inc., Durham, North Carolina.
- *
- * All Rights Reserved.
- *
- * Permission is hereby granted, free of charge, to any person obtaining
- * a copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation on the rights to use, copy, modify, merge,
- * publish, distribute, sublicense, and/or sell copies of the Software,
- * and to permit persons to whom the Software is furnished to do so,
- * subject to the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial
- * portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- * NON-INFRINGEMENT. IN NO EVENT SHALL RED HAT AND/OR THEIR SUPPLIERS
- * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
- * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
- * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- */
-
-/*
- * Authors:
- * Rickard E. (Rik) Faith <faith@redhat.com>
- *
- */
-
-%{
-#ifdef HAVE_DMX_CONFIG_H
-#include <dmx-config.h>
-#endif
-
-#include "dmxparse.h"
-#include <string.h>
-#include <stdlib.h>
-#define YYDEBUG 1
-#define YYERROR_VERBOSE
-#define YY_USE_PROTOS
-
-DMXConfigEntryPtr dmxConfigEntry = NULL;
-#define APPEND(type, h, t) \
-{ \
- type pt; \
- for (pt = h; pt->next; pt = pt->next); \
- pt->next = t; \
-}
-%}
-
-%union {
- DMXConfigTokenPtr token;
- DMXConfigStringPtr string;
- DMXConfigNumberPtr number;
- DMXConfigPairPtr pair;
- DMXConfigFullDimPtr fdim;
- DMXConfigPartDimPtr pdim;
- DMXConfigDisplayPtr display;
- DMXConfigWallPtr wall;
- DMXConfigOptionPtr option;
- DMXConfigParamPtr param;
- DMXConfigCommentPtr comment;
- DMXConfigSubPtr subentry;
- DMXConfigVirtualPtr virtual;
- DMXConfigEntryPtr entry;
-}
-
- /* Terminals */
-%token <token> '{' '}' ';' '/' T_VIRTUAL T_DISPLAY T_WALL T_OPTION T_PARAM
-%token <string> T_STRING
-%token <pair> T_DIMENSION T_OFFSET T_ORIGIN
-%token <comment> T_COMMENT T_LINE_COMMENT
-
- /* Non-termials */
-%type <token> Display Wall Terminal Open Close
-%type <string> NameList Name
-%type <pair> Dimension Offset Origin
-%type <pdim> PartialDim
-%type <fdim> FullDim
-%type <display> DisplayEntry
-%type <option> OptionEntry
-%type <param> ParamEntry ParamList Param
-%type <subentry> SubList Sub
-%type <wall> WallEntry
-%type <virtual> Virtual
-%type <entry> Program EntryList Entry
-
-%%
-
-Program : EntryList { dmxConfigEntry = $1; }
- ;
-
-EntryList : Entry
- | EntryList Entry { APPEND(DMXConfigEntryPtr,$1,$2); $$ = $1; }
- ;
-
-Entry : Virtual { $$ = dmxConfigEntryVirtual($1); }
- | T_LINE_COMMENT { $$ = dmxConfigEntryComment($1); }
- ;
-
-Virtual : T_VIRTUAL Open SubList Close
- { $$ = dmxConfigCreateVirtual($1, NULL, NULL, $2, $3, $4); }
- | T_VIRTUAL Dimension Open SubList Close
- { $$ = dmxConfigCreateVirtual($1, NULL, $2, $3, $4, $5); }
- | T_VIRTUAL Name Open SubList Close
- { $$ = dmxConfigCreateVirtual($1, $2, NULL, $3, $4, $5); }
- | T_VIRTUAL Name Dimension Open SubList Close
- { $$ = dmxConfigCreateVirtual($1, $2, $3, $4, $5, $6 ); }
- ;
-
-SubList : Sub
- | SubList Sub { APPEND(DMXConfigSubPtr,$1,$2); $$ = $1; }
- ;
-
-Sub : T_LINE_COMMENT { $$ = dmxConfigSubComment($1); }
- | DisplayEntry { $$ = dmxConfigSubDisplay($1); }
- | WallEntry { $$ = dmxConfigSubWall($1); }
- | OptionEntry { $$ = dmxConfigSubOption($1); }
- | ParamEntry { $$ = dmxConfigSubParam($1); }
- ;
-
-OptionEntry : T_OPTION NameList Terminal
- { $$ = dmxConfigCreateOption($1, $2, $3); }
- ;
-
-ParamEntry : T_PARAM NameList Terminal
- { $$ = dmxConfigCreateParam($1, NULL, $2, NULL, $3); }
- | T_PARAM Open ParamList Close
- { $$ = dmxConfigCreateParam($1, $2, NULL, $4, NULL);
- $$->next = $3;
- }
- ;
-
-ParamList : Param
- | ParamList Param { APPEND(DMXConfigParamPtr,$1,$2); $$ = $1; }
- ;
-
-Param : NameList Terminal
- { $$ = dmxConfigCreateParam(NULL, NULL, $1, NULL, $2); }
- ;
-
-PartialDim : Dimension Offset
- { $$ = dmxConfigCreatePartDim($1, $2); }
- | Dimension
- { $$ = dmxConfigCreatePartDim($1, NULL); }
- | Offset
- { $$ = dmxConfigCreatePartDim(NULL, $1); }
- ;
-
-FullDim : PartialDim '/' PartialDim
- { $$ = dmxConfigCreateFullDim($1, $3); }
- | '/' PartialDim
- { $$ = dmxConfigCreateFullDim(NULL, $2); }
- | PartialDim
- { $$ = dmxConfigCreateFullDim($1, NULL); }
- ;
-
-DisplayEntry : Display Name FullDim Origin Terminal
- { $$ = dmxConfigCreateDisplay($1, $2, $3, $4, $5); }
- | Display FullDim Origin Terminal
- { $$ = dmxConfigCreateDisplay($1, NULL, $2, $3, $4); }
- | Display Name Origin Terminal
- { $$ = dmxConfigCreateDisplay($1, $2, NULL, $3, $4); }
-
- | Display Name FullDim Terminal
- { $$ = dmxConfigCreateDisplay($1, $2, $3, NULL, $4); }
- | Display FullDim Terminal
- { $$ = dmxConfigCreateDisplay($1, NULL, $2, NULL, $3); }
- | Display Name Terminal
- { $$ = dmxConfigCreateDisplay($1, $2, NULL, NULL, $3); }
- | Display Terminal
- { $$ = dmxConfigCreateDisplay($1, NULL, NULL, NULL, $2); }
- ;
-
-WallEntry : Wall Dimension Dimension NameList Terminal
- { $$ = dmxConfigCreateWall($1, $2, $3, $4, $5); }
- | Wall Dimension NameList Terminal
- { $$ = dmxConfigCreateWall($1, $2, NULL, $3, $4); }
- | Wall NameList Terminal
- { $$ = dmxConfigCreateWall($1, NULL, NULL, $2, $3); }
- ;
-
-Display : T_DISPLAY
- | T_DISPLAY T_COMMENT { $$ = $1; $$->comment = $2->comment; }
- ;
-
-Name : T_STRING
- | T_STRING T_COMMENT { $$ = $1; $$->comment = $2->comment; }
- ;
-
-Dimension : T_DIMENSION
- | T_DIMENSION T_COMMENT { $$ = $1; $$->comment = $2->comment; }
- ;
-
-Offset : T_OFFSET
- | T_OFFSET T_COMMENT { $$ = $1; $$->comment = $2->comment; }
- ;
-
-Origin : T_ORIGIN
- | T_ORIGIN T_COMMENT { $$ = $1; $$->comment = $2->comment; }
- ;
-
-Terminal : ';'
- | ';' T_COMMENT { $$ = $1; $$->comment = $2->comment; }
- ;
-
-Open : '{'
- | '{' T_COMMENT { $$ = $1; $$->comment = $2->comment; }
- ;
-
-Close : '}'
- | '}' T_COMMENT { $$ = $1; $$->comment = $2->comment; }
- ;
-
-Wall : T_WALL
- | T_WALL T_COMMENT { $$ = $1; $$->comment = $2->comment; }
- ;
-
-NameList : Name
- | NameList Name { APPEND(DMXConfigStringPtr, $1, $2); $$ = $1; }
- ;
+/* $XFree86$ */
+/*
+ * Copyright 2002-2003 Red Hat Inc., Durham, North Carolina.
+ *
+ * All Rights Reserved.
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining
+ * a copy of this software and associated documentation files (the
+ * "Software"), to deal in the Software without restriction, including
+ * without limitation on the rights to use, copy, modify, merge,
+ * publish, distribute, sublicense, and/or sell copies of the Software,
+ * and to permit persons to whom the Software is furnished to do so,
+ * subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice (including the
+ * next paragraph) shall be included in all copies or substantial
+ * portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ * NON-INFRINGEMENT. IN NO EVENT SHALL RED HAT AND/OR THEIR SUPPLIERS
+ * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
+ * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+ * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ */
+
+/*
+ * Authors:
+ * Rickard E. (Rik) Faith <faith@redhat.com>
+ *
+ */
+
+%{
+#ifdef HAVE_DMX_CONFIG_H
+#include <dmx-config.h>
+#endif
+
+#include "dmxparse.h"
+#include <string.h>
+#include <stdlib.h>
+#define YYDEBUG 1
+#define YYERROR_VERBOSE
+#define YY_USE_PROTOS
+
+DMXConfigEntryPtr dmxConfigEntry = NULL;
+#define APPEND(type, h, t) \
+{ \
+ type pt; \
+ for (pt = h; pt->next; pt = pt->next); \
+ pt->next = t; \
+}
+%}
+
+%union {
+ DMXConfigTokenPtr token;
+ DMXConfigStringPtr string;
+ DMXConfigNumberPtr number;
+ DMXConfigPairPtr pair;
+ DMXConfigFullDimPtr fdim;
+ DMXConfigPartDimPtr pdim;
+ DMXConfigDisplayPtr display;
+ DMXConfigWallPtr wall;
+ DMXConfigOptionPtr option;
+ DMXConfigParamPtr param;
+ DMXConfigCommentPtr comment;
+ DMXConfigSubPtr subentry;
+ DMXConfigVirtualPtr virtual;
+ DMXConfigEntryPtr entry;
+}
+
+ /* Terminals */
+%token <token> '{' '}' ';' '/' T_VIRTUAL T_DISPLAY T_WALL T_OPTION T_PARAM
+%token <string> T_STRING
+%token <pair> T_DIMENSION T_OFFSET T_ORIGIN
+%token <comment> T_COMMENT T_LINE_COMMENT
+
+ /* Non-termials */
+%type <token> Display Wall Terminal Open Close
+%type <string> NameList Name
+%type <pair> Dimension Offset Origin
+%type <pdim> PartialDim
+%type <fdim> FullDim
+%type <display> DisplayEntry
+%type <option> OptionEntry
+%type <param> ParamEntry ParamList Param
+%type <subentry> SubList Sub
+%type <wall> WallEntry
+%type <virtual> Virtual
+%type <entry> Program EntryList Entry
+
+%%
+
+Program : EntryList { dmxConfigEntry = $1; }
+ ;
+
+EntryList : Entry
+ | EntryList Entry { APPEND(DMXConfigEntryPtr,$1,$2); $$ = $1; }
+ ;
+
+Entry : Virtual { $$ = dmxConfigEntryVirtual($1); }
+ | T_LINE_COMMENT { $$ = dmxConfigEntryComment($1); }
+ ;
+
+Virtual : T_VIRTUAL Open SubList Close
+ { $$ = dmxConfigCreateVirtual($1, NULL, NULL, $2, $3, $4); }
+ | T_VIRTUAL Dimension Open SubList Close
+ { $$ = dmxConfigCreateVirtual($1, NULL, $2, $3, $4, $5); }
+ | T_VIRTUAL Name Open SubList Close
+ { $$ = dmxConfigCreateVirtual($1, $2, NULL, $3, $4, $5); }
+ | T_VIRTUAL Name Dimension Open SubList Close
+ { $$ = dmxConfigCreateVirtual($1, $2, $3, $4, $5, $6 ); }
+ ;
+
+SubList : Sub
+ | SubList Sub { APPEND(DMXConfigSubPtr,$1,$2); $$ = $1; }
+ ;
+
+Sub : T_LINE_COMMENT { $$ = dmxConfigSubComment($1); }
+ | DisplayEntry { $$ = dmxConfigSubDisplay($1); }
+ | WallEntry { $$ = dmxConfigSubWall($1); }
+ | OptionEntry { $$ = dmxConfigSubOption($1); }
+ | ParamEntry { $$ = dmxConfigSubParam($1); }
+ ;
+
+OptionEntry : T_OPTION NameList Terminal
+ { $$ = dmxConfigCreateOption($1, $2, $3); }
+ ;
+
+ParamEntry : T_PARAM NameList Terminal
+ { $$ = dmxConfigCreateParam($1, NULL, $2, NULL, $3); }
+ | T_PARAM Open ParamList Close
+ { $$ = dmxConfigCreateParam($1, $2, NULL, $4, NULL);
+ $$->next = $3;
+ }
+ ;
+
+ParamList : Param
+ | ParamList Param { APPEND(DMXConfigParamPtr,$1,$2); $$ = $1; }
+ ;
+
+Param : NameList Terminal
+ { $$ = dmxConfigCreateParam(NULL, NULL, $1, NULL, $2); }
+ ;
+
+PartialDim : Dimension Offset
+ { $$ = dmxConfigCreatePartDim($1, $2); }
+ | Dimension
+ { $$ = dmxConfigCreatePartDim($1, NULL); }
+ | Offset
+ { $$ = dmxConfigCreatePartDim(NULL, $1); }
+ ;
+
+FullDim : PartialDim '/' PartialDim
+ { $$ = dmxConfigCreateFullDim($1, $3); }
+ | '/' PartialDim
+ { $$ = dmxConfigCreateFullDim(NULL, $2); }
+ | PartialDim
+ { $$ = dmxConfigCreateFullDim($1, NULL); }
+ ;
+
+DisplayEntry : Display Name FullDim Origin Terminal
+ { $$ = dmxConfigCreateDisplay($1, $2, $3, $4, $5); }
+ | Display FullDim Origin Terminal
+ { $$ = dmxConfigCreateDisplay($1, NULL, $2, $3, $4); }
+ | Display Name Origin Terminal
+ { $$ = dmxConfigCreateDisplay($1, $2, NULL, $3, $4); }
+
+ | Display Name FullDim Terminal
+ { $$ = dmxConfigCreateDisplay($1, $2, $3, NULL, $4); }
+ | Display FullDim Terminal
+ { $$ = dmxConfigCreateDisplay($1, NULL, $2, NULL, $3); }
+ | Display Name Terminal
+ { $$ = dmxConfigCreateDisplay($1, $2, NULL, NULL, $3); }
+ | Display Terminal
+ { $$ = dmxConfigCreateDisplay($1, NULL, NULL, NULL, $2); }
+ ;
+
+WallEntry : Wall Dimension Dimension NameList Terminal
+ { $$ = dmxConfigCreateWall($1, $2, $3, $4, $5); }
+ | Wall Dimension NameList Terminal
+ { $$ = dmxConfigCreateWall($1, $2, NULL, $3, $4); }
+ | Wall NameList Terminal
+ { $$ = dmxConfigCreateWall($1, NULL, NULL, $2, $3); }
+ ;
+
+Display : T_DISPLAY
+ | T_DISPLAY T_COMMENT { $$ = $1; $$->comment = $2->comment; }
+ ;
+
+Name : T_STRING
+ | T_STRING T_COMMENT { $$ = $1; $$->comment = $2->comment; }
+ ;
+
+Dimension : T_DIMENSION
+ | T_DIMENSION T_COMMENT { $$ = $1; $$->comment = $2->comment; }
+ ;
+
+Offset : T_OFFSET
+ | T_OFFSET T_COMMENT { $$ = $1; $$->comment = $2->comment; }
+ ;
+
+Origin : T_ORIGIN
+ | T_ORIGIN T_COMMENT { $$ = $1; $$->comment = $2->comment; }
+ ;
+
+Terminal : ';'
+ | ';' T_COMMENT { $$ = $1; $$->comment = $2->comment; }
+ ;
+
+Open : '{'
+ | '{' T_COMMENT { $$ = $1; $$->comment = $2->comment; }
+ ;
+
+Close : '}'
+ | '}' T_COMMENT { $$ = $1; $$->comment = $2->comment; }
+ ;
+
+Wall : T_WALL
+ | T_WALL T_COMMENT { $$ = $1; $$->comment = $2->comment; }
+ ;
+
+NameList : Name
+ | NameList Name { APPEND(DMXConfigStringPtr, $1, $2); $$ = $1; }
+ ;
diff --git a/xorg-server/hw/dmx/config/test-a.in b/xorg-server/hw/dmx/config/test-a.in
index 9aeeab047..827675374 100644
--- a/xorg-server/hw/dmx/config/test-a.in
+++ b/xorg-server/hw/dmx/config/test-a.in
@@ -1 +1 @@
-error
+error
diff --git a/xorg-server/hw/dmx/config/test-a.out b/xorg-server/hw/dmx/config/test-a.out
index e8b7404e1..d35b29fc0 100644
--- a/xorg-server/hw/dmx/config/test-a.out
+++ b/xorg-server/hw/dmx/config/test-a.out
@@ -1,2 +1,2 @@
-parse error on line 1 at token "error"
-syntax error, unexpected string expecting "virtual" or comment (e.g., #...)
+parse error on line 1 at token "error"
+syntax error, unexpected string expecting "virtual" or comment (e.g., #...)
diff --git a/xorg-server/hw/dmx/config/test-b.in b/xorg-server/hw/dmx/config/test-b.in
index d4f30e004..308ec1db4 100644
--- a/xorg-server/hw/dmx/config/test-b.in
+++ b/xorg-server/hw/dmx/config/test-b.in
@@ -1 +1 @@
-# comment
+# comment
diff --git a/xorg-server/hw/dmx/config/test-b.out b/xorg-server/hw/dmx/config/test-b.out
index d4f30e004..308ec1db4 100644
--- a/xorg-server/hw/dmx/config/test-b.out
+++ b/xorg-server/hw/dmx/config/test-b.out
@@ -1 +1 @@
-# comment
+# comment
diff --git a/xorg-server/hw/dmx/config/test-c.in b/xorg-server/hw/dmx/config/test-c.in
index a3d66513f..e07ae5ba6 100644
--- a/xorg-server/hw/dmx/config/test-c.in
+++ b/xorg-server/hw/dmx/config/test-c.in
@@ -1 +1 @@
-virtual
+virtual
diff --git a/xorg-server/hw/dmx/config/test-c.out b/xorg-server/hw/dmx/config/test-c.out
index 87838938a..7390397a4 100644
--- a/xorg-server/hw/dmx/config/test-c.out
+++ b/xorg-server/hw/dmx/config/test-c.out
@@ -1,2 +1,2 @@
-parse error on line 2 at token " "
-syntax error, unexpected $end, expecting "{" or string or dimension (e.g., 2x2 or 1024x768)
+parse error on line 2 at token " "
+syntax error, unexpected $end, expecting "{" or string or dimension (e.g., 2x2 or 1024x768)
diff --git a/xorg-server/hw/dmx/config/test-d.in b/xorg-server/hw/dmx/config/test-d.in
index af14b8c09..6827503b1 100644
--- a/xorg-server/hw/dmx/config/test-d.in
+++ b/xorg-server/hw/dmx/config/test-d.in
@@ -1 +1 @@
-display
+display
diff --git a/xorg-server/hw/dmx/config/test-d.out b/xorg-server/hw/dmx/config/test-d.out
index f6e3db0a7..f3219b301 100644
--- a/xorg-server/hw/dmx/config/test-d.out
+++ b/xorg-server/hw/dmx/config/test-d.out
@@ -1,2 +1,2 @@
-parse error on line 1 at token "display"
-syntax error, unexpected "display" expecting "virtual" or comment (e.g., #...)
+parse error on line 1 at token "display"
+syntax error, unexpected "display" expecting "virtual" or comment (e.g., #...)
diff --git a/xorg-server/hw/dmx/config/test-e.in b/xorg-server/hw/dmx/config/test-e.in
index 4ebcf2406..21dbde95c 100644
--- a/xorg-server/hw/dmx/config/test-e.in
+++ b/xorg-server/hw/dmx/config/test-e.in
@@ -1 +1 @@
-display;
+display;
diff --git a/xorg-server/hw/dmx/config/test-e.out b/xorg-server/hw/dmx/config/test-e.out
index f6e3db0a7..f3219b301 100644
--- a/xorg-server/hw/dmx/config/test-e.out
+++ b/xorg-server/hw/dmx/config/test-e.out
@@ -1,2 +1,2 @@
-parse error on line 1 at token "display"
-syntax error, unexpected "display" expecting "virtual" or comment (e.g., #...)
+parse error on line 1 at token "display"
+syntax error, unexpected "display" expecting "virtual" or comment (e.g., #...)
diff --git a/xorg-server/hw/dmx/config/test-f.in b/xorg-server/hw/dmx/config/test-f.in
index 1fe26c507..17f6c6327 100644
--- a/xorg-server/hw/dmx/config/test-f.in
+++ b/xorg-server/hw/dmx/config/test-f.in
@@ -1,2 +1,2 @@
-virtual {
-}
+virtual {
+}
diff --git a/xorg-server/hw/dmx/config/test-g.in b/xorg-server/hw/dmx/config/test-g.in
index c8741c58e..453d8121c 100644
--- a/xorg-server/hw/dmx/config/test-g.in
+++ b/xorg-server/hw/dmx/config/test-g.in
@@ -1,4 +1,4 @@
-virtual a {
- display d0:0 1280x1024;
- display d1:0 1280x1024;
-}
+virtual a {
+ display d0:0 1280x1024;
+ display d1:0 1280x1024;
+}
diff --git a/xorg-server/hw/dmx/config/test-g.out b/xorg-server/hw/dmx/config/test-g.out
index c8741c58e..453d8121c 100644
--- a/xorg-server/hw/dmx/config/test-g.out
+++ b/xorg-server/hw/dmx/config/test-g.out
@@ -1,4 +1,4 @@
-virtual a {
- display d0:0 1280x1024;
- display d1:0 1280x1024;
-}
+virtual a {
+ display d0:0 1280x1024;
+ display d1:0 1280x1024;
+}
diff --git a/xorg-server/hw/dmx/config/test-h.in b/xorg-server/hw/dmx/config/test-h.in
index 93cef324f..1193d309e 100644
--- a/xorg-server/hw/dmx/config/test-h.in
+++ b/xorg-server/hw/dmx/config/test-h.in
@@ -1,7 +1,7 @@
-# comment a
-# comment b
-## comment c
-# <-- tab
-# Next comment is empty
-#
-# Non empty
+# comment a
+# comment b
+## comment c
+# <-- tab
+# Next comment is empty
+#
+# Non empty
diff --git a/xorg-server/hw/dmx/config/test-h.out b/xorg-server/hw/dmx/config/test-h.out
index 93cef324f..1193d309e 100644
--- a/xorg-server/hw/dmx/config/test-h.out
+++ b/xorg-server/hw/dmx/config/test-h.out
@@ -1,7 +1,7 @@
-# comment a
-# comment b
-## comment c
-# <-- tab
-# Next comment is empty
-#
-# Non empty
+# comment a
+# comment b
+## comment c
+# <-- tab
+# Next comment is empty
+#
+# Non empty
diff --git a/xorg-server/hw/dmx/config/test-i.in b/xorg-server/hw/dmx/config/test-i.in
index bf5d345c3..b65967e62 100644
--- a/xorg-server/hw/dmx/config/test-i.in
+++ b/xorg-server/hw/dmx/config/test-i.in
@@ -1,3 +1,3 @@
-virtual a {
- param a b; # comment
-}
+virtual a {
+ param a b; # comment
+}
diff --git a/xorg-server/hw/dmx/config/test-i.out b/xorg-server/hw/dmx/config/test-i.out
index bf5d345c3..b65967e62 100644
--- a/xorg-server/hw/dmx/config/test-i.out
+++ b/xorg-server/hw/dmx/config/test-i.out
@@ -1,3 +1,3 @@
-virtual a {
- param a b; # comment
-}
+virtual a {
+ param a b; # comment
+}
diff --git a/xorg-server/hw/dmx/config/test-j.in b/xorg-server/hw/dmx/config/test-j.in
index 087da79a6..cc1cdd0ea 100644
--- a/xorg-server/hw/dmx/config/test-j.in
+++ b/xorg-server/hw/dmx/config/test-j.in
@@ -1,13 +1,13 @@
-virtual a {
- option aaa # bbb
- aa cc;
- param { # comment 1
- a b;
- c d;
- x y z; # comment 2
- }
- param e f g h; # comment 3
- param e f g hlskdjflskdfjsd #comment 4
- flksdjf sldkfjsldkfjsdlf
- "lsdkfjsldkfjlsdkjflskdjflsdkjfl" "lkjsdlfjsdlfkjsdlfj";
-}
+virtual a {
+ option aaa # bbb
+ aa cc;
+ param { # comment 1
+ a b;
+ c d;
+ x y z; # comment 2
+ }
+ param e f g h; # comment 3
+ param e f g hlskdjflskdfjsd #comment 4
+ flksdjf sldkfjsldkfjsdlf
+ "lsdkfjsldkfjlsdkjflskdjflsdkjfl" "lkjsdlfjsdlfkjsdlfj";
+}
diff --git a/xorg-server/hw/dmx/config/test-j.out b/xorg-server/hw/dmx/config/test-j.out
index d386e40b5..9acaa009b 100644
--- a/xorg-server/hw/dmx/config/test-j.out
+++ b/xorg-server/hw/dmx/config/test-j.out
@@ -1,11 +1,11 @@
-virtual a {
- option "aaa aa cc";
- param { # comment 1
- a b;
- c d;
- x y z; # comment 2
- }
- param e f g h; # comment 3
- param e f g hlskdjflskdfjsd #comment 4
- flksdjf sldkfjsldkfjsdlf lsdkfjsldkfjlsdkjflskdjflsdkjfl lkjsdlfjsdlfkjsdlfj;
-}
+virtual a {
+ option "aaa aa cc";
+ param { # comment 1
+ a b;
+ c d;
+ x y z; # comment 2
+ }
+ param e f g h; # comment 3
+ param e f g hlskdjflskdfjsd #comment 4
+ flksdjf sldkfjsldkfjsdlf lsdkfjsldkfjlsdkjflskdjflsdkjfl lkjsdlfjsdlfkjsdlfj;
+}
diff --git a/xorg-server/hw/dmx/config/test-k.in b/xorg-server/hw/dmx/config/test-k.in
index 937e8ee27..2218d26d9 100644
--- a/xorg-server/hw/dmx/config/test-k.in
+++ b/xorg-server/hw/dmx/config/test-k.in
@@ -1,3 +1,3 @@
-virtual a {
- option +xinerama -syncbatch 0;
-}
+virtual a {
+ option +xinerama -syncbatch 0;
+}
diff --git a/xorg-server/hw/dmx/config/test-k.out b/xorg-server/hw/dmx/config/test-k.out
index cdfd70358..ebd743923 100644
--- a/xorg-server/hw/dmx/config/test-k.out
+++ b/xorg-server/hw/dmx/config/test-k.out
@@ -1,3 +1,3 @@
-virtual a {
- option "+xinerama -syncbatch 0";
-}
+virtual a {
+ option "+xinerama -syncbatch 0";
+}
diff --git a/xorg-server/hw/dmx/config/test-l.in b/xorg-server/hw/dmx/config/test-l.in
index d04c47b9a..7bf05139b 100644
--- a/xorg-server/hw/dmx/config/test-l.in
+++ b/xorg-server/hw/dmx/config/test-l.in
@@ -1,12 +1,12 @@
-virtual a {
- display d0:0 1x2;
- display d1:0 +3+4;
- display d2:0 100x200 @1x1;
- display d3:0 +3+4 @2x2;
- display d4:0 100x200+3+4 @3x3;
- display d5:0 / 1x2+3+4;
- display d6:0 / 1x2;
- display d7:0 / +3+4;
- display d8:0 / 1x2+3+4 @4x4;
- display d9:0 11x22+33+44 / 111x222+333+444 @1000x1100;
-}
+virtual a {
+ display d0:0 1x2;
+ display d1:0 +3+4;
+ display d2:0 100x200 @1x1;
+ display d3:0 +3+4 @2x2;
+ display d4:0 100x200+3+4 @3x3;
+ display d5:0 / 1x2+3+4;
+ display d6:0 / 1x2;
+ display d7:0 / +3+4;
+ display d8:0 / 1x2+3+4 @4x4;
+ display d9:0 11x22+33+44 / 111x222+333+444 @1000x1100;
+}
diff --git a/xorg-server/hw/dmx/config/test-l.out b/xorg-server/hw/dmx/config/test-l.out
index d04c47b9a..7bf05139b 100644
--- a/xorg-server/hw/dmx/config/test-l.out
+++ b/xorg-server/hw/dmx/config/test-l.out
@@ -1,12 +1,12 @@
-virtual a {
- display d0:0 1x2;
- display d1:0 +3+4;
- display d2:0 100x200 @1x1;
- display d3:0 +3+4 @2x2;
- display d4:0 100x200+3+4 @3x3;
- display d5:0 / 1x2+3+4;
- display d6:0 / 1x2;
- display d7:0 / +3+4;
- display d8:0 / 1x2+3+4 @4x4;
- display d9:0 11x22+33+44 / 111x222+333+444 @1000x1100;
-}
+virtual a {
+ display d0:0 1x2;
+ display d1:0 +3+4;
+ display d2:0 100x200 @1x1;
+ display d3:0 +3+4 @2x2;
+ display d4:0 100x200+3+4 @3x3;
+ display d5:0 / 1x2+3+4;
+ display d6:0 / 1x2;
+ display d7:0 / +3+4;
+ display d8:0 / 1x2+3+4 @4x4;
+ display d9:0 11x22+33+44 / 111x222+333+444 @1000x1100;
+}
diff --git a/xorg-server/hw/dmx/doc/DMXSpec-v1.txt b/xorg-server/hw/dmx/doc/DMXSpec-v1.txt
index 19a50f2f5..cea97b9fe 100644
--- a/xorg-server/hw/dmx/doc/DMXSpec-v1.txt
+++ b/xorg-server/hw/dmx/doc/DMXSpec-v1.txt
@@ -1,458 +1,458 @@
-
-
- Client-to-Server DMX Extension to the X Protocol
-
- $Date$, $Revision$
-
- Rickard E. (Rik) Faith (faith@redhat.com)
- Kevin E. Martin (kem@redhat.com)
-
- Copyright 2002,2003 Red Hat Inc., Raleigh, North Carolina.
-
- Permission is hereby granted, free of charge, to any person
- obtaining a copy of this software and associated documentation files
- (the "Software"), to deal in the Software without restriction,
- including without limitation on the rights to use, copy, modify,
- merge, publish, distribute, sublicense, and/or sell copies of the
- Software, and to permit persons to whom the Software is furnished to
- do so, subject to the following conditions:
-
- The above copyright notice and this permission notice (including the
- next paragraph) shall be included in all copies or substantial
- portions of the Software.
-
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- NON-INFRINGEMENT. IN NO EVENT SHALL RED HAT AND/OR THEIR SUPPLIERS
- BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
- ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
- CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- SOFTWARE.
-
-
-
-1. Overview
-
- The client-to-server DMX extension to the X protocol (DMX) provides
- normal client applications with the ability to determine information
- about the characteristics of the Xdmx server and the back-end X
- servers that DMX is using.
-
- The name for this extension is "DMX".
-
-
-
-2. Syntactic conventions
-
- This document uses the same syntactic conventions requests and data
- types as [X11R6.4].
-
-
-
-3. Data types
-
- No new data types are defined by this extension. All data types
- referenced in this document are defined in [X11R6.4].
-
-
-
-4. Requests
-
- DMXQueryVersion
- ==>
- majorVersion: CARD32
- minorVersion: CARD32
- patchVersion: CARD32
-
- The protocol this extension actually supports is indicated by
- majorVersion and minorVersion (patchVersion indicates the
- patchlevel and is for informational purposes only).
-
- Any incompatible changes to the protocol should be indicated by
- incrementing majorVersion.
-
- Small, upward-compatible changes should be indicated by incrementing
- minorVersion.
-
- Servers that support the protocol defined in this document will
- return a majorVersion of 1 and a minorVersion of 1.
-
-
-
- DMXGetScreenCount
- ==>
- screenCount: CARD32
-
- This request returns the number of back-end screens that the Xdmx
- server controls. A back-end screen may be managed as a regular X
- screen in the Xdmx server or may be joined with other back-end
- screens using Xinerama. (The information returned by this request
- does not change while Xdmx is running and may be cached on the
- client side.)
-
-
-
- DMXGetScreenInformation
- physicalScreen: CARD32
- ==>
- displayName: STRING8
- width: CARD16
- height: CARD16
- xoffset: INT16
- yoffset: INT16
- logicalScreen: CARD32
- xorigin: INT16
- yorigin: INT16
-
- Errors: Value
-
- This request returns information about individual back-end screens.
- The physicalScreen value is between 0 and screenCount-1, inclusive
- (values outside this range will result in a Value error). The
- displayname is the name used to open the display, either from the
- Xdmx command-line or from the configuration file. The width,
- height, xoffset, and yoffset values comprise a geometry
- specification (see X(7x)) for the location of the DMX window on the
- back-end screen. This request will always return non-negative
- (i.e., normalized) values for xoffset and yoffset. The
- logicalScreen value is the value of the screen that that Xdmx server
- exports to clients. When Xinerama is in use, this value is
- typically 0 for all values of physicalScreen. If Xinerama is in
- use, the xorigin and yorigin values specify where the physical
- screen is positioned in the global Xinerama coordinate system.
- Otherwise, these values are set to 0. (The information returned by
- this request does not change while Xdmx is running and may be cached
- on the client side.)
-
-
-
- DMXGetWindowInformation
- window: CARD32
- ==>
- screenCount: CARD32
- screens: LISTofCARD32
- windows: LISTofCARD32
- pos: LISTofRECTANGLE
- vis: LISTofRECTANGLE
-
- Errors: Window, Alloc
-
- This request computed the return values incorrectly for version 1.0
- of this protocol. Version 1.1 of this protocol conforms to this
- description.
-
- Given a window ID on the Xdmx server, this request returns data
- about how the window is represented on the back-end X servers. For
- each back-end X server that displays a portion of the window, the
- following information is returned:
- 1) the number of the physical screen containing that portion
- (which can be used with the DMXGetScreenInformation request
- to obtain more information about the screen),
- 2) the window ID on the back-end X server of the window
- containing that portion,
- 3) the position and dimensions of the window on the back-end, in
- screen coordinates, and
- 4) the visible area of the window on the back-end, in
- window-relative coordinates (all zeros for windows that are
- not visible)
- Note that DMX allows multiple back-end windows to overlap in their
- view of the DMX logical window. Further, a logical window does not
- have to be completely covered by back-end windows -- there may be
- gaps.
-
- As an example, consider a 500x500 window that spans the top two
- 1024x768 back-end displays (A and B) of a 2048x1536 DMX display
- composed of 4 1024x768 back-end displays arranged in a cube:
- A B
- C D
-
- In this case, the DMXGetWindowInformation call would return the
- following information for the 500x500 window:
-
- display A: 500x500 window at 1024-250,0 (relative to back end)
- with 250x500 visible at 0,0 (relative to window origin)
-
- display B: 500x500 window at -250,0 (relative to back end)
- with 250x500 visible at 250,0 (relative to window origin)
-
- display C: 500x500 window at 1024-250,-768 with 0x0 visible at 0,0
-
- display D: 500x500 window at -250,-768 with 0x0 visible at 0,0
-
- Note that if the specified window has not yet been mapped when
- DMXGetWindowInformation is called, then a subsequent XMapWindow call
- might be buffered in xlib while requests directly to the back-end X
- servers are processed. This race condition can be solved by calling
- DMXSync before talking directly to the back-end X servers.
-
-
- DMXGetInputCount
- ==>
- inputCount: CARD32
-
- This request was first supported in version 1.1 of this protocol.
-
- This request returns the number of input devices connected to the
- Xdmx server. This number is the same as that returned by
- XListInputDevices, but is available even when the XInput extension
- is not supported.
-
-
-
- DMXGetInputInformation
- deviceId: CARD32
- ==>
- inputType: CARD32
- physicalScreen: CARD32
- physicalId: CARD32
- isCore: BOOL
- sendsCore: BOOL
- name: STRING8
-
- Errors: Value
-
- This request was first supported in version 1.1 of this protocol.
-
- This request returns information about the specified input device
- that cannot be obtained from the XListInputDeivices call. The
- deviceId is the same as that used by the XListInputDevices call, and
- must be in the range 0 to inputCount-1, inclusive (values outside
- this range will result in a Value error).
-
- The value of inputType will always be value, and will be one of the
- following values:
- 0 for local (and dummy) devices,
- 1 for console devices, and
- 2 for back-end devices.
-
- For local devices, all other fields returned, except isCore and
- sendsCore, are invalid.
-
- For console devices, the physicalScreen and physicalID will be
- invalid, and the name will return the name of the X server on which
- the console window is displayed.
-
- For back-end devices, the physicalScreen will identify the back-end
- display and can be used as an argument to DMXGetScreenInformation to
- obtain more information; the physicalId will be the XInput device id
- on the back-end X server; and the name will be invalid (since it
- does not provide any additional information that cannot be obtained
- with DMXGetScreenInformation).
-
- If isCore is True, then this device is active as a true core input
- device and will send core events. If sendsCore is True, then this
- device queried an XInput extension device, but sends core events
- instead of extension events. Note that this behavior is different
- from that of XFree86, where XInput extension devices may send both
- extension events and core events.
-
-
-
- DMXForceWindowCreation
- window: CARD32
- ==>
-
- Errors: Window
-
- This request was first supported in version 1.2 of this protocol.
-
- When using the lazy window creation optimization, windows are not
- created on the back-end X servers until they are required. This
- request forces the immediate creation of the window requested.
-
-
-
- DMXReconfigureScreen
- screen: CARD32
- x: INT16
- y: INT16
- ==>
- status: CARD32
-
- Errors: Value
-
- This request was first supported in version 1.3 of this protocol.
-
- This request reconfigures the screen position to coordinates (x,y)
- when using the Xinerama extension. Otherwise, it is a NOP. Illegal
- values for screen will result in a BadValue error. Other non-fatal
- errors will be returned in status.
-
-
-
- DMXSync
- ==>
-
- This request was first supported in version 1.5 of this protocol.
-
- This request flushes all pending protocol requests between the Xdmx
- server and each back-end X server. It is used by a client that
- talks directly to back-end X servers
-
- To ensure proper synchronization semantics, this request has a
- reply, but the reply does not carry any information.
-
-
-
-5. Events
-
- No new events are defined by this extension.
-
-
-
-6. Errors
-
- No new events are defined by this extension.
-
-
-
-7. Encoding
-
- DMXQueryVersion
- 1 CARD8 opcode (X assigned)
- 1 0 DMX opcode (X_DMXQueryVersion)
- 2 1 request length
- ==>
- 1 1 Reply
- 1 unused
- 2 CARD16 sequence number
- 4 0 reply length
- 4 CARD32 majorVersion
- 4 CARD32 minorVersion
- 4 CARD32 patchVersion
- 12 unused
-
- DMXGetScreenCount
- 1 CARD8 opcode (X assigned)
- 1 1 DMX opcode (X_DMXGetScreenCount)
- 2 1 request length
- ==>
- 1 1 Reply
- 1 unused
- 2 CARD16 sequence number
- 4 0 reply length
- 4 CARD32 screenCount
- 20 unused
-
- DMXGetScreenInformation
- 1 CARD8 opcode (X assigned)
- 1 2 DMX opcode (X_DMXGetScreenInformation)
- 2 2 request length
- 4 CARD32 physicalScreen
- ==>
- 1 1 Reply
- 1 unused
- 2 CARD16 sequence number
- 4 n/4+p reply length
- 4 n displayNameLength
- 2 CARD16 width
- 2 CARD16 height
- 2 INT16 xoffset
- 2 INT16 yoffset
- 4 CARD32 logicalScreen
- 2 INT16 xorigin
- 2 INT16 yorigin
- 4 unused
- n displayName
- p pad(n)
-
- DMXGetWindowInformation
- 1 CARD8 opcode (X assigned)
- 1 3 DMX opcode (X_DMXGetWindowInformation)
- 2 2 request length
- 4 CARD32 window
- ==>
- 1 1 Reply
- 1 unused
- 2 CARD16 sequence number
- 4 n*6 reply length
- 4 n screenCount
- 20 unused
- n*4 LISTofCARD32 screens
- n*4 LISTofCARD32 windows
- n*8 LISTofRECTANGLE pos
- n*8 LISTofRECTANGLE vis
-
- DMXGetInputCount
- 1 CARD8 opcode (X assigned)
- 1 DMX opcode (X_DMXGetInputCount)
- 2 1 request length
- ==>
- 1 1 Reply
- 1 unused
- 2 CARD16 sequence number
- 4 0 reply length
- 4 CARD32 inputCount
- 20 unused
-
- DMXGetInputInformation
- 1 CARD8 opcode (X assigned)
- 1 4 DMX opcode (X_DMXGetInputInformation)
- 2 2 request length
- 4 CARD32 deviceId
- ==>
- 1 1 Reply
- 1 unused
- 2 CARD16 sequence number
- 4 n/4+p reply length
- 4 CARD32 inputType
- 4 CARD32 physicalScreen
- 4 CARD32 physicalId
- 4 n nameLength
- 1 BOOL isCore
- 1 BOOL sendsCore
- 6 unused
- n name
- p pad(n)
-
- DMXForceWindowCreation
- 1 CARD8 opcode (X assigned)
- 1 2 DMX opcode (X_DMXForceWindowCreation)
- 2 2 request length
- 4 CARD32 window
- ==>
-
- DMXReconfigureScreen
- 1 CARD8 opcode (X assigned)
- 1 2 DMX opcode (X_DMXReconfigureScreen)
- 2 2 request length
- 4 CARD32 screen
- 2 INT16 x
- 2 INT16 y
- ==>
- 1 1 Reply
- 1 unused
- 2 CARD16 sequence number
- 4 0 reply length
- 4 CARD32 status
- 20 unused
-
- DMXSync
- 1 CARD8 opcode (X assigned)
- 1 0 DMX opcode (X_DMXSync)
- 2 1 request length
- ==>
- 1 1 Reply
- 1 unused
- 2 CARD16 sequence number
- 4 0 reply length
- 24 unused
-
-
-8. Changes to existing requests/replies/events
-
- No changes to existing requests, replies, or events are necessitated
- by this extension.
-
-
-
-9. Acknowledgments
-
-
-
-10. References
-
- [X11R6.4] Robert W. Sheifler. X Window System Protocol, X Consortium
- Standard, X Version 11, Release 6.4. Available from
- xc/doc/specs/XProtocol and xc/doc/hardcopy/XProtocol.
+
+
+ Client-to-Server DMX Extension to the X Protocol
+
+ $Date$, $Revision$
+
+ Rickard E. (Rik) Faith (faith@redhat.com)
+ Kevin E. Martin (kem@redhat.com)
+
+ Copyright 2002,2003 Red Hat Inc., Raleigh, North Carolina.
+
+ Permission is hereby granted, free of charge, to any person
+ obtaining a copy of this software and associated documentation files
+ (the "Software"), to deal in the Software without restriction,
+ including without limitation on the rights to use, copy, modify,
+ merge, publish, distribute, sublicense, and/or sell copies of the
+ Software, and to permit persons to whom the Software is furnished to
+ do so, subject to the following conditions:
+
+ The above copyright notice and this permission notice (including the
+ next paragraph) shall be included in all copies or substantial
+ portions of the Software.
+
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ NON-INFRINGEMENT. IN NO EVENT SHALL RED HAT AND/OR THEIR SUPPLIERS
+ BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
+ ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ SOFTWARE.
+
+
+
+1. Overview
+
+ The client-to-server DMX extension to the X protocol (DMX) provides
+ normal client applications with the ability to determine information
+ about the characteristics of the Xdmx server and the back-end X
+ servers that DMX is using.
+
+ The name for this extension is "DMX".
+
+
+
+2. Syntactic conventions
+
+ This document uses the same syntactic conventions requests and data
+ types as [X11R6.4].
+
+
+
+3. Data types
+
+ No new data types are defined by this extension. All data types
+ referenced in this document are defined in [X11R6.4].
+
+
+
+4. Requests
+
+ DMXQueryVersion
+ ==>
+ majorVersion: CARD32
+ minorVersion: CARD32
+ patchVersion: CARD32
+
+ The protocol this extension actually supports is indicated by
+ majorVersion and minorVersion (patchVersion indicates the
+ patchlevel and is for informational purposes only).
+
+ Any incompatible changes to the protocol should be indicated by
+ incrementing majorVersion.
+
+ Small, upward-compatible changes should be indicated by incrementing
+ minorVersion.
+
+ Servers that support the protocol defined in this document will
+ return a majorVersion of 1 and a minorVersion of 1.
+
+
+
+ DMXGetScreenCount
+ ==>
+ screenCount: CARD32
+
+ This request returns the number of back-end screens that the Xdmx
+ server controls. A back-end screen may be managed as a regular X
+ screen in the Xdmx server or may be joined with other back-end
+ screens using Xinerama. (The information returned by this request
+ does not change while Xdmx is running and may be cached on the
+ client side.)
+
+
+
+ DMXGetScreenInformation
+ physicalScreen: CARD32
+ ==>
+ displayName: STRING8
+ width: CARD16
+ height: CARD16
+ xoffset: INT16
+ yoffset: INT16
+ logicalScreen: CARD32
+ xorigin: INT16
+ yorigin: INT16
+
+ Errors: Value
+
+ This request returns information about individual back-end screens.
+ The physicalScreen value is between 0 and screenCount-1, inclusive
+ (values outside this range will result in a Value error). The
+ displayname is the name used to open the display, either from the
+ Xdmx command-line or from the configuration file. The width,
+ height, xoffset, and yoffset values comprise a geometry
+ specification (see X(7x)) for the location of the DMX window on the
+ back-end screen. This request will always return non-negative
+ (i.e., normalized) values for xoffset and yoffset. The
+ logicalScreen value is the value of the screen that that Xdmx server
+ exports to clients. When Xinerama is in use, this value is
+ typically 0 for all values of physicalScreen. If Xinerama is in
+ use, the xorigin and yorigin values specify where the physical
+ screen is positioned in the global Xinerama coordinate system.
+ Otherwise, these values are set to 0. (The information returned by
+ this request does not change while Xdmx is running and may be cached
+ on the client side.)
+
+
+
+ DMXGetWindowInformation
+ window: CARD32
+ ==>
+ screenCount: CARD32
+ screens: LISTofCARD32
+ windows: LISTofCARD32
+ pos: LISTofRECTANGLE
+ vis: LISTofRECTANGLE
+
+ Errors: Window, Alloc
+
+ This request computed the return values incorrectly for version 1.0
+ of this protocol. Version 1.1 of this protocol conforms to this
+ description.
+
+ Given a window ID on the Xdmx server, this request returns data
+ about how the window is represented on the back-end X servers. For
+ each back-end X server that displays a portion of the window, the
+ following information is returned:
+ 1) the number of the physical screen containing that portion
+ (which can be used with the DMXGetScreenInformation request
+ to obtain more information about the screen),
+ 2) the window ID on the back-end X server of the window
+ containing that portion,
+ 3) the position and dimensions of the window on the back-end, in
+ screen coordinates, and
+ 4) the visible area of the window on the back-end, in
+ window-relative coordinates (all zeros for windows that are
+ not visible)
+ Note that DMX allows multiple back-end windows to overlap in their
+ view of the DMX logical window. Further, a logical window does not
+ have to be completely covered by back-end windows -- there may be
+ gaps.
+
+ As an example, consider a 500x500 window that spans the top two
+ 1024x768 back-end displays (A and B) of a 2048x1536 DMX display
+ composed of 4 1024x768 back-end displays arranged in a cube:
+ A B
+ C D
+
+ In this case, the DMXGetWindowInformation call would return the
+ following information for the 500x500 window:
+
+ display A: 500x500 window at 1024-250,0 (relative to back end)
+ with 250x500 visible at 0,0 (relative to window origin)
+
+ display B: 500x500 window at -250,0 (relative to back end)
+ with 250x500 visible at 250,0 (relative to window origin)
+
+ display C: 500x500 window at 1024-250,-768 with 0x0 visible at 0,0
+
+ display D: 500x500 window at -250,-768 with 0x0 visible at 0,0
+
+ Note that if the specified window has not yet been mapped when
+ DMXGetWindowInformation is called, then a subsequent XMapWindow call
+ might be buffered in xlib while requests directly to the back-end X
+ servers are processed. This race condition can be solved by calling
+ DMXSync before talking directly to the back-end X servers.
+
+
+ DMXGetInputCount
+ ==>
+ inputCount: CARD32
+
+ This request was first supported in version 1.1 of this protocol.
+
+ This request returns the number of input devices connected to the
+ Xdmx server. This number is the same as that returned by
+ XListInputDevices, but is available even when the XInput extension
+ is not supported.
+
+
+
+ DMXGetInputInformation
+ deviceId: CARD32
+ ==>
+ inputType: CARD32
+ physicalScreen: CARD32
+ physicalId: CARD32
+ isCore: BOOL
+ sendsCore: BOOL
+ name: STRING8
+
+ Errors: Value
+
+ This request was first supported in version 1.1 of this protocol.
+
+ This request returns information about the specified input device
+ that cannot be obtained from the XListInputDeivices call. The
+ deviceId is the same as that used by the XListInputDevices call, and
+ must be in the range 0 to inputCount-1, inclusive (values outside
+ this range will result in a Value error).
+
+ The value of inputType will always be value, and will be one of the
+ following values:
+ 0 for local (and dummy) devices,
+ 1 for console devices, and
+ 2 for back-end devices.
+
+ For local devices, all other fields returned, except isCore and
+ sendsCore, are invalid.
+
+ For console devices, the physicalScreen and physicalID will be
+ invalid, and the name will return the name of the X server on which
+ the console window is displayed.
+
+ For back-end devices, the physicalScreen will identify the back-end
+ display and can be used as an argument to DMXGetScreenInformation to
+ obtain more information; the physicalId will be the XInput device id
+ on the back-end X server; and the name will be invalid (since it
+ does not provide any additional information that cannot be obtained
+ with DMXGetScreenInformation).
+
+ If isCore is True, then this device is active as a true core input
+ device and will send core events. If sendsCore is True, then this
+ device queried an XInput extension device, but sends core events
+ instead of extension events. Note that this behavior is different
+ from that of XFree86, where XInput extension devices may send both
+ extension events and core events.
+
+
+
+ DMXForceWindowCreation
+ window: CARD32
+ ==>
+
+ Errors: Window
+
+ This request was first supported in version 1.2 of this protocol.
+
+ When using the lazy window creation optimization, windows are not
+ created on the back-end X servers until they are required. This
+ request forces the immediate creation of the window requested.
+
+
+
+ DMXReconfigureScreen
+ screen: CARD32
+ x: INT16
+ y: INT16
+ ==>
+ status: CARD32
+
+ Errors: Value
+
+ This request was first supported in version 1.3 of this protocol.
+
+ This request reconfigures the screen position to coordinates (x,y)
+ when using the Xinerama extension. Otherwise, it is a NOP. Illegal
+ values for screen will result in a BadValue error. Other non-fatal
+ errors will be returned in status.
+
+
+
+ DMXSync
+ ==>
+
+ This request was first supported in version 1.5 of this protocol.
+
+ This request flushes all pending protocol requests between the Xdmx
+ server and each back-end X server. It is used by a client that
+ talks directly to back-end X servers
+
+ To ensure proper synchronization semantics, this request has a
+ reply, but the reply does not carry any information.
+
+
+
+5. Events
+
+ No new events are defined by this extension.
+
+
+
+6. Errors
+
+ No new events are defined by this extension.
+
+
+
+7. Encoding
+
+ DMXQueryVersion
+ 1 CARD8 opcode (X assigned)
+ 1 0 DMX opcode (X_DMXQueryVersion)
+ 2 1 request length
+ ==>
+ 1 1 Reply
+ 1 unused
+ 2 CARD16 sequence number
+ 4 0 reply length
+ 4 CARD32 majorVersion
+ 4 CARD32 minorVersion
+ 4 CARD32 patchVersion
+ 12 unused
+
+ DMXGetScreenCount
+ 1 CARD8 opcode (X assigned)
+ 1 1 DMX opcode (X_DMXGetScreenCount)
+ 2 1 request length
+ ==>
+ 1 1 Reply
+ 1 unused
+ 2 CARD16 sequence number
+ 4 0 reply length
+ 4 CARD32 screenCount
+ 20 unused
+
+ DMXGetScreenInformation
+ 1 CARD8 opcode (X assigned)
+ 1 2 DMX opcode (X_DMXGetScreenInformation)
+ 2 2 request length
+ 4 CARD32 physicalScreen
+ ==>
+ 1 1 Reply
+ 1 unused
+ 2 CARD16 sequence number
+ 4 n/4+p reply length
+ 4 n displayNameLength
+ 2 CARD16 width
+ 2 CARD16 height
+ 2 INT16 xoffset
+ 2 INT16 yoffset
+ 4 CARD32 logicalScreen
+ 2 INT16 xorigin
+ 2 INT16 yorigin
+ 4 unused
+ n displayName
+ p pad(n)
+
+ DMXGetWindowInformation
+ 1 CARD8 opcode (X assigned)
+ 1 3 DMX opcode (X_DMXGetWindowInformation)
+ 2 2 request length
+ 4 CARD32 window
+ ==>
+ 1 1 Reply
+ 1 unused
+ 2 CARD16 sequence number
+ 4 n*6 reply length
+ 4 n screenCount
+ 20 unused
+ n*4 LISTofCARD32 screens
+ n*4 LISTofCARD32 windows
+ n*8 LISTofRECTANGLE pos
+ n*8 LISTofRECTANGLE vis
+
+ DMXGetInputCount
+ 1 CARD8 opcode (X assigned)
+ 1 DMX opcode (X_DMXGetInputCount)
+ 2 1 request length
+ ==>
+ 1 1 Reply
+ 1 unused
+ 2 CARD16 sequence number
+ 4 0 reply length
+ 4 CARD32 inputCount
+ 20 unused
+
+ DMXGetInputInformation
+ 1 CARD8 opcode (X assigned)
+ 1 4 DMX opcode (X_DMXGetInputInformation)
+ 2 2 request length
+ 4 CARD32 deviceId
+ ==>
+ 1 1 Reply
+ 1 unused
+ 2 CARD16 sequence number
+ 4 n/4+p reply length
+ 4 CARD32 inputType
+ 4 CARD32 physicalScreen
+ 4 CARD32 physicalId
+ 4 n nameLength
+ 1 BOOL isCore
+ 1 BOOL sendsCore
+ 6 unused
+ n name
+ p pad(n)
+
+ DMXForceWindowCreation
+ 1 CARD8 opcode (X assigned)
+ 1 2 DMX opcode (X_DMXForceWindowCreation)
+ 2 2 request length
+ 4 CARD32 window
+ ==>
+
+ DMXReconfigureScreen
+ 1 CARD8 opcode (X assigned)
+ 1 2 DMX opcode (X_DMXReconfigureScreen)
+ 2 2 request length
+ 4 CARD32 screen
+ 2 INT16 x
+ 2 INT16 y
+ ==>
+ 1 1 Reply
+ 1 unused
+ 2 CARD16 sequence number
+ 4 0 reply length
+ 4 CARD32 status
+ 20 unused
+
+ DMXSync
+ 1 CARD8 opcode (X assigned)
+ 1 0 DMX opcode (X_DMXSync)
+ 2 1 request length
+ ==>
+ 1 1 Reply
+ 1 unused
+ 2 CARD16 sequence number
+ 4 0 reply length
+ 24 unused
+
+
+8. Changes to existing requests/replies/events
+
+ No changes to existing requests, replies, or events are necessitated
+ by this extension.
+
+
+
+9. Acknowledgments
+
+
+
+10. References
+
+ [X11R6.4] Robert W. Sheifler. X Window System Protocol, X Consortium
+ Standard, X Version 11, Release 6.4. Available from
+ xc/doc/specs/XProtocol and xc/doc/hardcopy/XProtocol.
diff --git a/xorg-server/hw/dmx/doc/DMXSpec.txt b/xorg-server/hw/dmx/doc/DMXSpec.txt
index 078f83e26..4009f1210 100644
--- a/xorg-server/hw/dmx/doc/DMXSpec.txt
+++ b/xorg-server/hw/dmx/doc/DMXSpec.txt
@@ -1,875 +1,875 @@
-
-
- Client-to-Server DMX Extension to the X Protocol
-
- $Date$, $Revision$
-
- Rickard E. (Rik) Faith (faith@redhat.com)
- Kevin E. Martin (kem@redhat.com)
-
- Copyright 2002-2004 Red Hat Inc., Raleigh, North Carolina.
-
- Permission is hereby granted, free of charge, to any person
- obtaining a copy of this software and associated documentation files
- (the "Software"), to deal in the Software without restriction,
- including without limitation on the rights to use, copy, modify,
- merge, publish, distribute, sublicense, and/or sell copies of the
- Software, and to permit persons to whom the Software is furnished to
- do so, subject to the following conditions:
-
- The above copyright notice and this permission notice (including the
- next paragraph) shall be included in all copies or substantial
- portions of the Software.
-
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- NON-INFRINGEMENT. IN NO EVENT SHALL RED HAT AND/OR THEIR SUPPLIERS
- BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
- ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
- CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- SOFTWARE.
-
-
-
-1. Overview
-
- The client-to-server DMX extension to the X protocol (DMX) provides
- normal client applications with the ability to determine information
- about the characteristics of the Xdmx server and the back-end X
- servers that DMX is using.
-
- The name for this extension is "DMX".
-
-
-
-2. Syntactic conventions
-
- This document uses the same syntactic conventions requests and data
- types as [X11R6.4].
-
-
-
-3. Data types
-
- No new data types are defined by this extension. All data types
- referenced in this document are defined in [X11R6.4].
-
-
-
-4. Requests
-
- DMXQueryVersion
- ==>
- majorVersion: CARD32
- minorVersion: CARD32
- patchVersion: CARD32
-
- Errors: None
-
- The protocol this extension actually supports is indicated by
- majorVersion and minorVersion (patchVersion indicates the
- patchlevel and is for informational purposes only).
-
- Any incompatible changes to the protocol should be indicated by
- incrementing majorVersion.
-
- Small, upward-compatible changes should be indicated by incrementing
- minorVersion.
-
- Servers that support the protocol defined in this document will
- return a majorVersion of 2 and a minorVersion of 2.
-
- (Version 1.5 was the last version in the 1.x series; version 2.0 was
- a testing version that was poorly defined.)
-
-
-
- DMXSync
- ==>
- status: CARD32
-
- Errors: None
-
- This request was first supported in version 1.5 of this protocol.
- The status field in the reply was introduced in version 2.0 of this
- protocol. Since the status field is ignored, no changes to the
- underlying protocol were required.
-
- This request flushes all pending protocol requests between the Xdmx
- server and each back-end X server. It is used by clients that
- talk directly to back-end X servers to ensure that all pending Xdmx
- requests have reached all back-end servers and have been processed
- by those servers.
-
- The value of status is always 0.
-
-
-
- DMXForceWindowCreation
- window: CARD32
- ==>
- status: CARD32
-
- Errors: Window
-
- This request was first supported in version 1.2 of this protocol.
- This request was changed to have a reply in version 2.0 of this
- protocol. The old version of this request was deprecated and will
- return BadImplementation.
-
- When using the lazy window creation optimization, windows are not
- created on the back-end X servers until they are required. This
- request forces the immediate creation of the window requested.
-
- The value of status is always 0.
-
-
-
-
- DMXGetScreenCount
- ==>
- screenCount: CARD32
-
- Errors: None
-
- This request returns the number of screens that the Xdmx server
- controls. Since a DMX screen usually fills all of the available
- area on a back-end server, there is usually a one-to-one
- correspondence between DMX screens and backend servers. However, it
- is also possible for a DMX screen to cover only part of the
- available area on a back-end server, and for more than one DMX
- screen to occupy different parts of the visible area on the same
- back-end server.
-
- A DMX screen may be managed as a regular X screen in the Xdmx server
- or may be joined with other DMX screens using Xinerama.
-
-
-
- DMXGetScreenAttributes
- physicalScreen: CARD32
- ==>
- displayName: STRING8
- logicalScreen: CARD32
- screenWindowWidth: CARD16
- screenWindowHeight: CARD16
- screenWindowXoffset: INT16
- screenWindowYoffset: INT16
- rootWindowWidth: CARD16
- rootWindowHeight: CARD16
- rootWindowXoffset: INT16
- rootWindowYoffset: INT16
- rootWindowXorigin: INT16
- rootWindowYorigin: INT16
-
- Errors: Value
-
- This request is new in version 2.0 of this protocol. The old
- DMXGetScreenInformation request is deprecated and will now return
- BadImplementation.
-
- This request returns attributes about a single DMX screen.
-
- The physicalScreen value is between 0 and screenCount-1, inclusive
- (values outside this range will result in a Value error).
-
- The displayname is the name used to open the display, either from
- the Xdmx command-line or from the configuration file.
-
- The logicalScreen value is the value of the screen that that Xdmx
- server exports to clients. When Xinerama is in use, this value is
- typically 0 for all values of physicalScreen. If Xinerama is in
- use, the rootWindowXOrigin and rootWindowYOrigin values specify
- where the physical screen is positioned in the global Xinerama
- coordinate system. Otherwise, these values are set to 0.
-
- The screenWindow values comprise a geometry specification (see
- X(7x)) for the location of the DMX screen on the back-end screen.
- The coordinant system of the back-end display is used.
-
- The first four rootWindow values comprise a geometry specification
- (see X(7x)) for the location of the root window on the screen
- window. The coordinant system of the screen window is used. In
- most cases, the root window will have the same geometry as the DMX
- screen window, and will occupy the same area of the back-end
- display. (This would not be the case, for example, if automatic
- projector alignment is used.)
-
-
-
- DMXChangeScreensAttributes
- screenCount: CARD32
- maskCount: CARD32
- screens: LISTofCARD32
- valueMasks: LISTofCARD32
- valueList: LISTofVALUES
- ==>
- status: CARD32
- errorScreen: CARD32
-
- Errors: Length, Alloc
-
- This request was first supported in version 2.0 of this protocol.
- (A singular version of this request with the ability to change some
- RootWindow attributes was supported in version 1.3 of this protocol,
- has been deprecated, and will return BadImplementation.)
-
- This request changes the geometries and positions of the DMX screen
- and DMX root windows on the back-end X servers.
-
- The valueMask and valueList specify which attributes are to be
- changed. The possible values are:
-
- Attribute Type
-
- ScreenWindowWidth CARD16
- ScreenWindowHeight CARD16
- ScreenWindowXoffset INT16
- ScreenWindowYoffset INT16
- RootWindowWidth CARD16
- RootWindowHeight CARD16
- RootWindowXoffset INT16
- RootWindowYoffset INT16
- RootWindowXorigin INT16
- RootWindowYorigin INT16
-
- The attribute values have the same meaning as do the corresponding
- values for DMXGetScreenAttributes.
-
- Non-fatal errors will be returned in status (0 otherwise):
- DmxBadXinerama: Xinerama is not active
- DmxBadValue: The resulting position is not allowed
- (e.g., one corner is outside the bounding box)
- On error, errorScreen will contain the number of the screen that
- caused the first error.
-
-
-
- DMXAddScreen
- displayName: STRING8
- physicalScreen: CARD32
- valueMask: CARD32
- valueList: LISTofVALUES
- ==>
- status: CARD32
- physicalScreen: CARD32
-
- Errors: Length, Alloc, Value
-
- This request was first supported in version 2.2 of this protocol.
-
- This request re-attaches the back-end physicalScreen to the Xdmx
- server. Only back-end screens that have been previously detached
- with DMXRemoveScreen may be added. The name of the back-end display
- is given in displayName, and this will replace the name of the
- back-end screen that was detached. Both the displayName and
- physicalScreen must be correct for this request to work.
-
- The valueMask and valueList specify the attributes to be used. The
- possible values are:
-
- Attribute Type
-
- ScreenWindowWidth CARD16
- ScreenWindowHeight CARD16
- ScreenWindowXoffset INT16
- ScreenWindowYoffset INT16
- RootWindowWidth CARD16
- RootWindowHeight CARD16
- RootWindowXoffset INT16
- RootWindowYoffset INT16
- RootWindowXorigin INT16
- RootWindowYorigin INT16
-
- The attribute values have the same meaning as do the corresponding
- values for DMXGetScreenAttributes.
-
- On success, status will be 0 and physicalScreen will contain the new
- screen number. On failure, status will be non-zero. The status
- will be 1 if any of the following occured:
- * the -addremovescreens command-line option was not specified on
- the Xdmx command line
- * the value of physicalScreen is out of range
- * physicalScreen has not been detached (with DMXRemoveScreen)
- * displayName cannot be opened
- * the visuals of displayname do not match the visuals that Xdmx
- is using
- * the screen data for displayName does not match the data for the
- previously removed display
- The status will be DmxBadValue if the attribute values are out of
- range.
-
-
-
- DMXRemoveScreen
- physicalScreen: CARD32
- ==>
- status: CARD32
-
- Errors: None
-
- This request was first supported in version 2.2 of this protocol.
-
- This request detaches the physicalScreen screen.
-
- On success, status will be 0. On failure, the status will 1 if any
- of the following occur:
- * the -addremovescreens command-line option was not specified on
- the Xdmx command line
- * the value of physicalScreen is out of range
- * the back-end screen has already been detached.
-
-
-
- DMXGetWindowAttributes
- window: CARD32
- ==>
- screenCount: CARD32
- screens: LISTofCARD32
- windows: LISTofCARD32
- pos: LISTofRECTANGLE
- vis: LISTofRECTANGLE
-
- Errors: Window, Alloc
-
- This request computes the return values incorrectly for version 1.0
- of this protocol. Version 1.1 of this protocol conforms to this
- description. In version 2.0, the name of this request was changed
- from DMXGetWindowInformation. However, since the request itself did
- not change, no changes to the underlying protocol were made.
-
- Given a window ID on the Xdmx server, this request returns data
- about how the window is represented on the back-end X servers. For
- each back-end X server that displays a portion of the window, the
- following information is returned:
- 1) the number of the physical screen containing that portion
- (which can be used with the DMXGetScreenAttributes request
- to obtain more information about the screen),
- 2) the window ID on the back-end X server of the window
- containing that portion,
- 3) the position and dimensions of the window on the back-end, in
- screen coordinates, and
- 4) the visible area of the window on the back-end, in
- window-relative coordinates (all zeros for windows that are
- not visible).
- Note that DMX allows multiple back-end windows to overlap in their
- view of the DMX logical window. Further, a logical window does not
- have to be completely covered by back-end windows -- there may be
- gaps.
-
- As an example, consider a 500x500 window that spans the top two
- 1024x768 back-end displays (A and B) of a 2048x1536 DMX display
- composed of 4 1024x768 back-end displays arranged in a cube:
- A B
- C D
-
- In this case, the DMXGetWindowAttributes call would return the
- following information for the 500x500 window:
-
- display A: 500x500 window at 1024-250,0 (relative to back end)
- with 250x500 visible at 0,0 (relative to window origin)
-
- display B: 500x500 window at -250,0 (relative to back end)
- with 250x500 visible at 250,0 (relative to window origin)
-
- display C: 500x500 window at 1024-250,-768 with 0x0 visible at 0,0
-
- display D: 500x500 window at -250,-768 with 0x0 visible at 0,0
-
- Note that if the specified window has not yet been mapped when
- DMXGetWindowAttributes is called, then a subsequent XMapWindow call
- might be buffered in xlib while requests directly to the back-end X
- servers are processed. This race condition can be solved by calling
- DMXSync before talking directly to the back-end X servers.
-
-
-
- DMXGetDesktopAttributes
- ==>
- width: INT16
- height: INT16
- shiftX: INT16
- shiftY: INT16
-
- Errors: None
-
- This request was first supported in version 2.0 of this protocol.
-
- This request returns the size of the bounding box of the whole
- screen in width and height. The shiftX and shiftY values will
- always be 0. The global bounding box is computed whether or not
- Xinerama is active, and may be larger than the Xinerama screen size
- because of information in the configuration file.
-
-
-
- DMXChangeDesktopAttributes
- valueMask: BITMASK
- valueList: LISTofVALUE
- ==>
- status: CARD32
-
- Errors: Length, Value
-
- This request was first supported in version 2.0 of this protocol.
-
- This request resizes the bounding box of the whole screen when using
- the Xinerama extension. Otherwise, it has no effect on the screen
- layout. The valueMask and valueList specify which attributes are to
- be changed. The possible values are:
-
- Attriubute Type
-
- Width INT16
- Height INT16
- ShiftX INT16
- ShiftY INT16
-
- Width and Height specify the new width and height for the bounding
- box. ShiftX and ShiftY specify where the Xinerama origin will be
- placed with respect to the origin of the new bounding box. This
- allows the left and upper edges of the bounding box to be changed
- without changing the visual position of the windows on the desktop.
- If Width or Height is not specified, the current values will be
- used. If ShiftX or ShiftY is not specified, 0 will be used.
-
- All coordinants are in the global DMX coordinant system. If
- Xinerama is not active, this request is not useful.
-
- Non-fatal errors will be returned in status (0 otherwise):
- DmxBadXinerama: Xinerama is not active
- DmxBadValue: The size of the bounding box is too large
-
-
-
- DMXGetInputCount
- ==>
- inputCount: CARD32
-
- This request was first supported in version 1.1 of this protocol.
-
- This request returns the number of input devices connected to the
- Xdmx server. This number is the same as that returned by
- XListInputDevices, but is available even when the XInput extension
- is not supported.
-
-
-
- DMXGetInputAttributes
- deviceId: CARD32
- ==>
- inputType: CARD32
- physicalScreen: CARD32
- physicalId: CARD32
- isCore: BOOL
- sendsCore: BOOL
- detached: BOOL
- name: STRING8
-
- Errors: Value
-
- This request was first supported in version 1.1 of this protocol.
- In version 2.0, the name of this request was changed from
- DMXGetInputInformation. However, since the request itself did not
- change, no changes to the underlying protocol were made. In version
- 2.2, the name of detached was changed from reservation. There was
- no change in underlying protocol.
-
- This request returns information about the specified input device
- that cannot be obtained from the XListInputDeivices call. The
- deviceId is the same as that used by the XListInputDevices call, and
- must be in the range 0 to inputCount-1, inclusive (values outside
- this range will result in a Value error).
-
- The value of inputType will always be valid, and will be one of the
- following values:
- 0 for local (and dummy) devices,
- 1 for console devices, and
- 2 for back-end devices.
-
- For local devices, all other fields returned, except isCore and
- sendsCore, are invalid.
-
- For console devices, the physicalScreen and physicalID will be
- invalid, and the name will return the name of the X server on which
- the console window is displayed.
-
- For back-end devices, the physicalScreen will identify the back-end
- display and can be used as an argument to DMXGetScreenAttributes to
- obtain more information; the physicalId will be the XInput device id
- on the back-end X server; and the name will be invalid (since it
- does not provide any additional information that cannot be obtained
- with DMXGetScreenAttributes).
-
- If isCore is True, then this device is active as a true core input
- device and will send core events. If sendsCore is True, then this
- device is an XInput extension device, but sends core events instead
- of extension events. Note that this behavior is different from that
- of XFree86 or Xorg, where XInput extension devices may send both
- extension events and core events.
-
- If detached is True, then this device has been detached and is no
- longer producing input events. The device may be reattached using
- DMXAddInput.
-
-
-
- DMXAddInput
- displayName: STRING8
- valueMask: CARD32
- valueList: LISTofVALUES
- ==>
- status: CARD32
- physicalId: CARD32
-
- Errors: Value, Access
-
- This request was first supported in version 2.2 of this protocol.
-
- The valueMask and valueList specify the attributes to be used. The
- possible values are:
-
- Attribute Type
-
- InputType CARD32
- InputPhysicalScreen CARD32
- InputSendsCore BOOL
-
- This request attaches an input device to the Xdmx server. The value
- of inputType will be one:
- 1 for console devices, and
- 2 for back-end devices.
- Other values of InputType will return a BadValue error. Local
- devices (inputType=0 in DMXGetInputAttributes) cannot be attached or
- removed. For console devices, displayName will store the name of
- the display to be used.
-
- For back-end devices, InputPhysicalScreen will specify the screen
- number. BadValue will be returned if the screen number is out of
- range. BadAccess will be returned if the input has already been
- attached or if the backend screen is currently detached.
-
- If InputSendsCore is True, the new device will be added as a true
- core device.
-
- If a device was removed with DMXRemoveInput an attempt will be made
- to reconnect the previous devices (InputSendsCore is ignored in this
- case).
-
-
-
- DMXRemoveInput
- physicalId: CARD32
- ==>
- status: CARD32
-
- Errors: Value, Access
-
- This request was first supported in version 2.2 of this protocol.
-
- This request detaches the input device with physicalId, and all
- associated inputs (e.g., if the physicalId is a backend mouse, and a
- keyboard is also attached to the backend, then both devices will be
- detached). If the physicalId is outside the valid range (0 to one
- less than the value returned by DMXInputCount), BadValue is
- returned. If the physicalId has already been detached, BadAccess is
- returned. The status is always 0.
-
-
-
-5. Events
-
- No new events are defined by this extension.
-
-
-
-6. Errors
-
- No new events are defined by this extension.
-
-
-
-7. Encoding
-
- Deprecated DMX opcodes:
- DMXGetScreenInformation 2
- DMXForceWindowCreation 6
- DMXReconfigureScreen 7
-
- Valid DMX opcodes:
- DMXQueryVersion 0
- DMXSync 8
- DMXForceWindowCreation 9
-
- DMXGetScreenCount 1
- DMXGetScreenAttributes 10
- DMXChangeScreensAttributes 11
- DMXAddScreen 12
- DMXRemoveScreen 13
-
- DMXGetWindowAttributes 3
-
- DMXGetDesktopAttributes 14
- DMXChangeDesktopAttributes 15
-
- DMXGetInputCount 4
- DMXGetInputAttributes 5
- DMXAddInput 16
- DMXRemoveInput 17
-
- DMXQueryVersion
- 1 CARD8 opcode (X assigned)
- 1 0 DMX opcode (X_DMXQueryVersion)
- 2 1 request length
- ==>
- 1 1 Reply
- 1 unused
- 2 CARD16 sequence number
- 4 0 reply length
- 4 CARD32 majorVersion
- 4 CARD32 minorVersion
- 4 CARD32 patchVersion
- 12 unused
-
- DMXSync
- 1 CARD8 opcode (X assigned)
- 1 8 DMX opcode (X_DMXSync)
- 2 1 request length
- ==>
- 1 1 Reply
- 1 unused
- 2 CARD16 sequence number
- 4 0 reply length
- 4 CARD32 status
- 20 unused
-
- DMXForceWindowCreation
- 1 CARD8 opcode (X assigned)
- 1 9 DMX opcode (X_DMXForceWindowCreation)
- 2 2 request length
- 4 CARD32 window
- ==>
- 1 1 Reply
- 1 unused
- 2 CARD16 sequence number
- 4 0 reply length
- 4 CARD32 status
- 20 unused
-
-
- DMXGetScreenCount
- 1 CARD8 opcode (X assigned)
- 1 1 DMX opcode (X_DMXGetScreenCount)
- 2 1 request length
- ==>
- 1 1 Reply
- 1 unused
- 2 CARD16 sequence number
- 4 0 reply length
- 4 CARD32 screenCount
- 20 unused
-
- DMXGetScreenAttributes
- 1 CARD8 opcode (X assigned)
- 1 10 DMX opcode (X_DMXGetScreenAttributes)
- 2 2 request length
- 4 CARD32 physicalScreen
- ==>
- 1 1 Reply
- 1 unused
- 2 CARD16 sequence number
- 4 1+(n+p)/4 reply length
- 4 n displayNameLength
- 4 CARD32 logicalScreen
- 2 CARD16 screenWindowWidth
- 2 CARD16 screenWindowHeight
- 2 INT16 screenWindowXoffset
- 2 INT16 screenWindowYoffset
- 2 CARD16 rootWindowWidth
- 2 CARD16 rootWindowHeight
- 2 INT16 rootWindowXoffset
- 2 INT16 rootWindowYoffset
- 2 INT16 rootWindowXorigin
- 2 INT16 rootWindowYorigin
- n displayName
- p pad(n)
-
- DMXChangeScreensAttributes
- 1 CARD8 opcode (X assigned)
- 1 11 DMX opcode (X_DMXChangeScreenAttributes)
- 2 3+s+m+n request length
- 4 s screenCount
- 4 m maskCount
- 4s LISTofCARD32 screens
- 4m LISTofCARD32 valueMasks
- 4n LISTofVALUES valueList
- ==>
- 1 1 Reply
- 1 unused
- 2 CARD16 sequence number
- 4 0 reply length
- 4 CARD32 status
- 4 CARD32 errorScreen
- 16 unused
-
-
- DMXAddScreen
- 1 CARD8 opcode (X assigned)
- 1 12 DMX opcode (X_DMXAddScreen)
- 2 3+m+(n+p)/4 request length
- 4 n displayNameLength
- 4 CARD32 physicalScreen
- 4 CARD32 valueMask
- 4m LISTofVALUES valueList
- n displayName
- p pad(n)
- ==>
- 1 1 Reply
- 1 unused
- 2 CARD16 sequence number
- 4 0 reply length
- 4 CARD32 status
- 4 CARD32 physicalScreen
- 16 unused
-
- DMXRemoveScreen
- 1 CARD8 opcode (X assigned)
- 1 13 DMX opcode (X_DMXRemoveScreen)
- 2 2 request length
- 4 CARD32 physicalScreen
- ==>
- 1 1 Reply
- 1 unused
- 2 CARD16 sequence number
- 4 0 reply length
- 4 CARD32 status
- 20 unused
-
- DMXGetWindowAttributes
- 1 CARD8 opcode (X assigned)
- 1 3 DMX opcode (X_DMXGetWindowAttributes)
- 2 2 request length
- 4 CARD32 window
- ==>
- 1 1 Reply
- 1 unused
- 2 CARD16 sequence number
- 4 n*6 reply length
- 4 n screenCount
- 20 unused
- n*4 LISTofCARD32 screens
- n*4 LISTofCARD32 windows
- n*8 LISTofRECTANGLE pos
- n*8 LISTofRECTANGLE vis
-
- DMXGetDesktopAttributes
- 1 CARD8 opcode (X assigned)
- 1 14 DMX opcode (X_DMXGetDesktopAttributes)
- 2 1 request length
- ==>
- 1 1 Reply
- 1 unused
- 2 CARD16 sequence number
- 4 0 reply length
- 2 INT16 width
- 2 INT16 height
- 2 INT16 shiftX
- 2 INT16 shiftY
- 16 unused
-
- DMXChangeDesktopAttributes
- 1 CARD8 opcode (X assigned)
- 1 15 DMX opcode (X_DMXChangeDesktopAttributes)
- 2 2+n request length
- 4 BITMASK valueMask
- 4n LISTofVALUES valueList
- ==>
- 1 1 Reply
- 1 unused
- 2 CARD16 sequence number
- 4 0 reply length
- 4 CARD32 status
- 20 unused
-
- DMXGetInputCount
- 1 CARD8 opcode (X assigned)
- 1 4 DMX opcode (X_DMXGetInputCount)
- 2 1 request length
- ==>
- 1 1 Reply
- 1 unused
- 2 CARD16 sequence number
- 4 0 reply length
- 4 CARD32 inputCount
- 20 unused
-
- DMXGetInputAttributes
- 1 CARD8 opcode (X assigned)
- 1 5 DMX opcode (X_DMXGetInputAttributes)
- 2 2 request length
- 4 CARD32 deviceId
- ==>
- 1 1 Reply
- 1 unused
- 2 CARD16 sequence number
- 4 (n+p)/4 reply length
- 4 CARD32 inputType
- 4 CARD32 physicalScreen
- 4 CARD32 physicalId
- 4 n nameLength
- 1 BOOL isCore
- 1 BOOL sendsCore
- 1 BOOL detached
- 5 unused
- n name
- p pad(n)
-
- DMXAddInput
- 1 CARD8 opcode (X assigned)
- 1 16 DMX opcode (X_DMXAddInput)
- 2 3+m+(n+p)/4 request length
- 4 n displayNameLength
- 4 CARD32 valueMask
- 4m LISTofVALUES valueList
- n displayName
- p pad(n)
- ==>
- 1 1 Reply
- 1 unused
- 2 CARD16 sequence number
- 4 0 reply length
- 4 CARD32 status
- 4 CARD32 physicalId
- 16 unused
-
- DMXRemoveInput
- 1 CARD8 opcode (X assigned)
- 1 17 DMX opcode (X_DMXRemoveInput)
- 2 3 request length
- 4 CARD32 physicalId
- ==>
- 1 1 Reply
- 1 unused
- 2 CARD16 sequence number
- 4 0 reply length
- 4 CARD32 status
- 20 unused
-
-
-8. Changes to existing requests/replies/events
-
- No changes to existing requests, replies, or events are necessitated
- by this extension.
-
-
-
-9. Acknowledgments
-
-
-
-10. References
-
- [X11R6.4] Robert W. Sheifler. X Window System Protocol, X Consortium
- Standard, X Version 11, Release 6.4. Available from
- xc/doc/specs/XProtocol and xc/doc/hardcopy/XProtocol.
+
+
+ Client-to-Server DMX Extension to the X Protocol
+
+ $Date$, $Revision$
+
+ Rickard E. (Rik) Faith (faith@redhat.com)
+ Kevin E. Martin (kem@redhat.com)
+
+ Copyright 2002-2004 Red Hat Inc., Raleigh, North Carolina.
+
+ Permission is hereby granted, free of charge, to any person
+ obtaining a copy of this software and associated documentation files
+ (the "Software"), to deal in the Software without restriction,
+ including without limitation on the rights to use, copy, modify,
+ merge, publish, distribute, sublicense, and/or sell copies of the
+ Software, and to permit persons to whom the Software is furnished to
+ do so, subject to the following conditions:
+
+ The above copyright notice and this permission notice (including the
+ next paragraph) shall be included in all copies or substantial
+ portions of the Software.
+
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ NON-INFRINGEMENT. IN NO EVENT SHALL RED HAT AND/OR THEIR SUPPLIERS
+ BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
+ ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ SOFTWARE.
+
+
+
+1. Overview
+
+ The client-to-server DMX extension to the X protocol (DMX) provides
+ normal client applications with the ability to determine information
+ about the characteristics of the Xdmx server and the back-end X
+ servers that DMX is using.
+
+ The name for this extension is "DMX".
+
+
+
+2. Syntactic conventions
+
+ This document uses the same syntactic conventions requests and data
+ types as [X11R6.4].
+
+
+
+3. Data types
+
+ No new data types are defined by this extension. All data types
+ referenced in this document are defined in [X11R6.4].
+
+
+
+4. Requests
+
+ DMXQueryVersion
+ ==>
+ majorVersion: CARD32
+ minorVersion: CARD32
+ patchVersion: CARD32
+
+ Errors: None
+
+ The protocol this extension actually supports is indicated by
+ majorVersion and minorVersion (patchVersion indicates the
+ patchlevel and is for informational purposes only).
+
+ Any incompatible changes to the protocol should be indicated by
+ incrementing majorVersion.
+
+ Small, upward-compatible changes should be indicated by incrementing
+ minorVersion.
+
+ Servers that support the protocol defined in this document will
+ return a majorVersion of 2 and a minorVersion of 2.
+
+ (Version 1.5 was the last version in the 1.x series; version 2.0 was
+ a testing version that was poorly defined.)
+
+
+
+ DMXSync
+ ==>
+ status: CARD32
+
+ Errors: None
+
+ This request was first supported in version 1.5 of this protocol.
+ The status field in the reply was introduced in version 2.0 of this
+ protocol. Since the status field is ignored, no changes to the
+ underlying protocol were required.
+
+ This request flushes all pending protocol requests between the Xdmx
+ server and each back-end X server. It is used by clients that
+ talk directly to back-end X servers to ensure that all pending Xdmx
+ requests have reached all back-end servers and have been processed
+ by those servers.
+
+ The value of status is always 0.
+
+
+
+ DMXForceWindowCreation
+ window: CARD32
+ ==>
+ status: CARD32
+
+ Errors: Window
+
+ This request was first supported in version 1.2 of this protocol.
+ This request was changed to have a reply in version 2.0 of this
+ protocol. The old version of this request was deprecated and will
+ return BadImplementation.
+
+ When using the lazy window creation optimization, windows are not
+ created on the back-end X servers until they are required. This
+ request forces the immediate creation of the window requested.
+
+ The value of status is always 0.
+
+
+
+
+ DMXGetScreenCount
+ ==>
+ screenCount: CARD32
+
+ Errors: None
+
+ This request returns the number of screens that the Xdmx server
+ controls. Since a DMX screen usually fills all of the available
+ area on a back-end server, there is usually a one-to-one
+ correspondence between DMX screens and backend servers. However, it
+ is also possible for a DMX screen to cover only part of the
+ available area on a back-end server, and for more than one DMX
+ screen to occupy different parts of the visible area on the same
+ back-end server.
+
+ A DMX screen may be managed as a regular X screen in the Xdmx server
+ or may be joined with other DMX screens using Xinerama.
+
+
+
+ DMXGetScreenAttributes
+ physicalScreen: CARD32
+ ==>
+ displayName: STRING8
+ logicalScreen: CARD32
+ screenWindowWidth: CARD16
+ screenWindowHeight: CARD16
+ screenWindowXoffset: INT16
+ screenWindowYoffset: INT16
+ rootWindowWidth: CARD16
+ rootWindowHeight: CARD16
+ rootWindowXoffset: INT16
+ rootWindowYoffset: INT16
+ rootWindowXorigin: INT16
+ rootWindowYorigin: INT16
+
+ Errors: Value
+
+ This request is new in version 2.0 of this protocol. The old
+ DMXGetScreenInformation request is deprecated and will now return
+ BadImplementation.
+
+ This request returns attributes about a single DMX screen.
+
+ The physicalScreen value is between 0 and screenCount-1, inclusive
+ (values outside this range will result in a Value error).
+
+ The displayname is the name used to open the display, either from
+ the Xdmx command-line or from the configuration file.
+
+ The logicalScreen value is the value of the screen that that Xdmx
+ server exports to clients. When Xinerama is in use, this value is
+ typically 0 for all values of physicalScreen. If Xinerama is in
+ use, the rootWindowXOrigin and rootWindowYOrigin values specify
+ where the physical screen is positioned in the global Xinerama
+ coordinate system. Otherwise, these values are set to 0.
+
+ The screenWindow values comprise a geometry specification (see
+ X(7x)) for the location of the DMX screen on the back-end screen.
+ The coordinant system of the back-end display is used.
+
+ The first four rootWindow values comprise a geometry specification
+ (see X(7x)) for the location of the root window on the screen
+ window. The coordinant system of the screen window is used. In
+ most cases, the root window will have the same geometry as the DMX
+ screen window, and will occupy the same area of the back-end
+ display. (This would not be the case, for example, if automatic
+ projector alignment is used.)
+
+
+
+ DMXChangeScreensAttributes
+ screenCount: CARD32
+ maskCount: CARD32
+ screens: LISTofCARD32
+ valueMasks: LISTofCARD32
+ valueList: LISTofVALUES
+ ==>
+ status: CARD32
+ errorScreen: CARD32
+
+ Errors: Length, Alloc
+
+ This request was first supported in version 2.0 of this protocol.
+ (A singular version of this request with the ability to change some
+ RootWindow attributes was supported in version 1.3 of this protocol,
+ has been deprecated, and will return BadImplementation.)
+
+ This request changes the geometries and positions of the DMX screen
+ and DMX root windows on the back-end X servers.
+
+ The valueMask and valueList specify which attributes are to be
+ changed. The possible values are:
+
+ Attribute Type
+
+ ScreenWindowWidth CARD16
+ ScreenWindowHeight CARD16
+ ScreenWindowXoffset INT16
+ ScreenWindowYoffset INT16
+ RootWindowWidth CARD16
+ RootWindowHeight CARD16
+ RootWindowXoffset INT16
+ RootWindowYoffset INT16
+ RootWindowXorigin INT16
+ RootWindowYorigin INT16
+
+ The attribute values have the same meaning as do the corresponding
+ values for DMXGetScreenAttributes.
+
+ Non-fatal errors will be returned in status (0 otherwise):
+ DmxBadXinerama: Xinerama is not active
+ DmxBadValue: The resulting position is not allowed
+ (e.g., one corner is outside the bounding box)
+ On error, errorScreen will contain the number of the screen that
+ caused the first error.
+
+
+
+ DMXAddScreen
+ displayName: STRING8
+ physicalScreen: CARD32
+ valueMask: CARD32
+ valueList: LISTofVALUES
+ ==>
+ status: CARD32
+ physicalScreen: CARD32
+
+ Errors: Length, Alloc, Value
+
+ This request was first supported in version 2.2 of this protocol.
+
+ This request re-attaches the back-end physicalScreen to the Xdmx
+ server. Only back-end screens that have been previously detached
+ with DMXRemoveScreen may be added. The name of the back-end display
+ is given in displayName, and this will replace the name of the
+ back-end screen that was detached. Both the displayName and
+ physicalScreen must be correct for this request to work.
+
+ The valueMask and valueList specify the attributes to be used. The
+ possible values are:
+
+ Attribute Type
+
+ ScreenWindowWidth CARD16
+ ScreenWindowHeight CARD16
+ ScreenWindowXoffset INT16
+ ScreenWindowYoffset INT16
+ RootWindowWidth CARD16
+ RootWindowHeight CARD16
+ RootWindowXoffset INT16
+ RootWindowYoffset INT16
+ RootWindowXorigin INT16
+ RootWindowYorigin INT16
+
+ The attribute values have the same meaning as do the corresponding
+ values for DMXGetScreenAttributes.
+
+ On success, status will be 0 and physicalScreen will contain the new
+ screen number. On failure, status will be non-zero. The status
+ will be 1 if any of the following occured:
+ * the -addremovescreens command-line option was not specified on
+ the Xdmx command line
+ * the value of physicalScreen is out of range
+ * physicalScreen has not been detached (with DMXRemoveScreen)
+ * displayName cannot be opened
+ * the visuals of displayname do not match the visuals that Xdmx
+ is using
+ * the screen data for displayName does not match the data for the
+ previously removed display
+ The status will be DmxBadValue if the attribute values are out of
+ range.
+
+
+
+ DMXRemoveScreen
+ physicalScreen: CARD32
+ ==>
+ status: CARD32
+
+ Errors: None
+
+ This request was first supported in version 2.2 of this protocol.
+
+ This request detaches the physicalScreen screen.
+
+ On success, status will be 0. On failure, the status will 1 if any
+ of the following occur:
+ * the -addremovescreens command-line option was not specified on
+ the Xdmx command line
+ * the value of physicalScreen is out of range
+ * the back-end screen has already been detached.
+
+
+
+ DMXGetWindowAttributes
+ window: CARD32
+ ==>
+ screenCount: CARD32
+ screens: LISTofCARD32
+ windows: LISTofCARD32
+ pos: LISTofRECTANGLE
+ vis: LISTofRECTANGLE
+
+ Errors: Window, Alloc
+
+ This request computes the return values incorrectly for version 1.0
+ of this protocol. Version 1.1 of this protocol conforms to this
+ description. In version 2.0, the name of this request was changed
+ from DMXGetWindowInformation. However, since the request itself did
+ not change, no changes to the underlying protocol were made.
+
+ Given a window ID on the Xdmx server, this request returns data
+ about how the window is represented on the back-end X servers. For
+ each back-end X server that displays a portion of the window, the
+ following information is returned:
+ 1) the number of the physical screen containing that portion
+ (which can be used with the DMXGetScreenAttributes request
+ to obtain more information about the screen),
+ 2) the window ID on the back-end X server of the window
+ containing that portion,
+ 3) the position and dimensions of the window on the back-end, in
+ screen coordinates, and
+ 4) the visible area of the window on the back-end, in
+ window-relative coordinates (all zeros for windows that are
+ not visible).
+ Note that DMX allows multiple back-end windows to overlap in their
+ view of the DMX logical window. Further, a logical window does not
+ have to be completely covered by back-end windows -- there may be
+ gaps.
+
+ As an example, consider a 500x500 window that spans the top two
+ 1024x768 back-end displays (A and B) of a 2048x1536 DMX display
+ composed of 4 1024x768 back-end displays arranged in a cube:
+ A B
+ C D
+
+ In this case, the DMXGetWindowAttributes call would return the
+ following information for the 500x500 window:
+
+ display A: 500x500 window at 1024-250,0 (relative to back end)
+ with 250x500 visible at 0,0 (relative to window origin)
+
+ display B: 500x500 window at -250,0 (relative to back end)
+ with 250x500 visible at 250,0 (relative to window origin)
+
+ display C: 500x500 window at 1024-250,-768 with 0x0 visible at 0,0
+
+ display D: 500x500 window at -250,-768 with 0x0 visible at 0,0
+
+ Note that if the specified window has not yet been mapped when
+ DMXGetWindowAttributes is called, then a subsequent XMapWindow call
+ might be buffered in xlib while requests directly to the back-end X
+ servers are processed. This race condition can be solved by calling
+ DMXSync before talking directly to the back-end X servers.
+
+
+
+ DMXGetDesktopAttributes
+ ==>
+ width: INT16
+ height: INT16
+ shiftX: INT16
+ shiftY: INT16
+
+ Errors: None
+
+ This request was first supported in version 2.0 of this protocol.
+
+ This request returns the size of the bounding box of the whole
+ screen in width and height. The shiftX and shiftY values will
+ always be 0. The global bounding box is computed whether or not
+ Xinerama is active, and may be larger than the Xinerama screen size
+ because of information in the configuration file.
+
+
+
+ DMXChangeDesktopAttributes
+ valueMask: BITMASK
+ valueList: LISTofVALUE
+ ==>
+ status: CARD32
+
+ Errors: Length, Value
+
+ This request was first supported in version 2.0 of this protocol.
+
+ This request resizes the bounding box of the whole screen when using
+ the Xinerama extension. Otherwise, it has no effect on the screen
+ layout. The valueMask and valueList specify which attributes are to
+ be changed. The possible values are:
+
+ Attriubute Type
+
+ Width INT16
+ Height INT16
+ ShiftX INT16
+ ShiftY INT16
+
+ Width and Height specify the new width and height for the bounding
+ box. ShiftX and ShiftY specify where the Xinerama origin will be
+ placed with respect to the origin of the new bounding box. This
+ allows the left and upper edges of the bounding box to be changed
+ without changing the visual position of the windows on the desktop.
+ If Width or Height is not specified, the current values will be
+ used. If ShiftX or ShiftY is not specified, 0 will be used.
+
+ All coordinants are in the global DMX coordinant system. If
+ Xinerama is not active, this request is not useful.
+
+ Non-fatal errors will be returned in status (0 otherwise):
+ DmxBadXinerama: Xinerama is not active
+ DmxBadValue: The size of the bounding box is too large
+
+
+
+ DMXGetInputCount
+ ==>
+ inputCount: CARD32
+
+ This request was first supported in version 1.1 of this protocol.
+
+ This request returns the number of input devices connected to the
+ Xdmx server. This number is the same as that returned by
+ XListInputDevices, but is available even when the XInput extension
+ is not supported.
+
+
+
+ DMXGetInputAttributes
+ deviceId: CARD32
+ ==>
+ inputType: CARD32
+ physicalScreen: CARD32
+ physicalId: CARD32
+ isCore: BOOL
+ sendsCore: BOOL
+ detached: BOOL
+ name: STRING8
+
+ Errors: Value
+
+ This request was first supported in version 1.1 of this protocol.
+ In version 2.0, the name of this request was changed from
+ DMXGetInputInformation. However, since the request itself did not
+ change, no changes to the underlying protocol were made. In version
+ 2.2, the name of detached was changed from reservation. There was
+ no change in underlying protocol.
+
+ This request returns information about the specified input device
+ that cannot be obtained from the XListInputDeivices call. The
+ deviceId is the same as that used by the XListInputDevices call, and
+ must be in the range 0 to inputCount-1, inclusive (values outside
+ this range will result in a Value error).
+
+ The value of inputType will always be valid, and will be one of the
+ following values:
+ 0 for local (and dummy) devices,
+ 1 for console devices, and
+ 2 for back-end devices.
+
+ For local devices, all other fields returned, except isCore and
+ sendsCore, are invalid.
+
+ For console devices, the physicalScreen and physicalID will be
+ invalid, and the name will return the name of the X server on which
+ the console window is displayed.
+
+ For back-end devices, the physicalScreen will identify the back-end
+ display and can be used as an argument to DMXGetScreenAttributes to
+ obtain more information; the physicalId will be the XInput device id
+ on the back-end X server; and the name will be invalid (since it
+ does not provide any additional information that cannot be obtained
+ with DMXGetScreenAttributes).
+
+ If isCore is True, then this device is active as a true core input
+ device and will send core events. If sendsCore is True, then this
+ device is an XInput extension device, but sends core events instead
+ of extension events. Note that this behavior is different from that
+ of XFree86 or Xorg, where XInput extension devices may send both
+ extension events and core events.
+
+ If detached is True, then this device has been detached and is no
+ longer producing input events. The device may be reattached using
+ DMXAddInput.
+
+
+
+ DMXAddInput
+ displayName: STRING8
+ valueMask: CARD32
+ valueList: LISTofVALUES
+ ==>
+ status: CARD32
+ physicalId: CARD32
+
+ Errors: Value, Access
+
+ This request was first supported in version 2.2 of this protocol.
+
+ The valueMask and valueList specify the attributes to be used. The
+ possible values are:
+
+ Attribute Type
+
+ InputType CARD32
+ InputPhysicalScreen CARD32
+ InputSendsCore BOOL
+
+ This request attaches an input device to the Xdmx server. The value
+ of inputType will be one:
+ 1 for console devices, and
+ 2 for back-end devices.
+ Other values of InputType will return a BadValue error. Local
+ devices (inputType=0 in DMXGetInputAttributes) cannot be attached or
+ removed. For console devices, displayName will store the name of
+ the display to be used.
+
+ For back-end devices, InputPhysicalScreen will specify the screen
+ number. BadValue will be returned if the screen number is out of
+ range. BadAccess will be returned if the input has already been
+ attached or if the backend screen is currently detached.
+
+ If InputSendsCore is True, the new device will be added as a true
+ core device.
+
+ If a device was removed with DMXRemoveInput an attempt will be made
+ to reconnect the previous devices (InputSendsCore is ignored in this
+ case).
+
+
+
+ DMXRemoveInput
+ physicalId: CARD32
+ ==>
+ status: CARD32
+
+ Errors: Value, Access
+
+ This request was first supported in version 2.2 of this protocol.
+
+ This request detaches the input device with physicalId, and all
+ associated inputs (e.g., if the physicalId is a backend mouse, and a
+ keyboard is also attached to the backend, then both devices will be
+ detached). If the physicalId is outside the valid range (0 to one
+ less than the value returned by DMXInputCount), BadValue is
+ returned. If the physicalId has already been detached, BadAccess is
+ returned. The status is always 0.
+
+
+
+5. Events
+
+ No new events are defined by this extension.
+
+
+
+6. Errors
+
+ No new events are defined by this extension.
+
+
+
+7. Encoding
+
+ Deprecated DMX opcodes:
+ DMXGetScreenInformation 2
+ DMXForceWindowCreation 6
+ DMXReconfigureScreen 7
+
+ Valid DMX opcodes:
+ DMXQueryVersion 0
+ DMXSync 8
+ DMXForceWindowCreation 9
+
+ DMXGetScreenCount 1
+ DMXGetScreenAttributes 10
+ DMXChangeScreensAttributes 11
+ DMXAddScreen 12
+ DMXRemoveScreen 13
+
+ DMXGetWindowAttributes 3
+
+ DMXGetDesktopAttributes 14
+ DMXChangeDesktopAttributes 15
+
+ DMXGetInputCount 4
+ DMXGetInputAttributes 5
+ DMXAddInput 16
+ DMXRemoveInput 17
+
+ DMXQueryVersion
+ 1 CARD8 opcode (X assigned)
+ 1 0 DMX opcode (X_DMXQueryVersion)
+ 2 1 request length
+ ==>
+ 1 1 Reply
+ 1 unused
+ 2 CARD16 sequence number
+ 4 0 reply length
+ 4 CARD32 majorVersion
+ 4 CARD32 minorVersion
+ 4 CARD32 patchVersion
+ 12 unused
+
+ DMXSync
+ 1 CARD8 opcode (X assigned)
+ 1 8 DMX opcode (X_DMXSync)
+ 2 1 request length
+ ==>
+ 1 1 Reply
+ 1 unused
+ 2 CARD16 sequence number
+ 4 0 reply length
+ 4 CARD32 status
+ 20 unused
+
+ DMXForceWindowCreation
+ 1 CARD8 opcode (X assigned)
+ 1 9 DMX opcode (X_DMXForceWindowCreation)
+ 2 2 request length
+ 4 CARD32 window
+ ==>
+ 1 1 Reply
+ 1 unused
+ 2 CARD16 sequence number
+ 4 0 reply length
+ 4 CARD32 status
+ 20 unused
+
+
+ DMXGetScreenCount
+ 1 CARD8 opcode (X assigned)
+ 1 1 DMX opcode (X_DMXGetScreenCount)
+ 2 1 request length
+ ==>
+ 1 1 Reply
+ 1 unused
+ 2 CARD16 sequence number
+ 4 0 reply length
+ 4 CARD32 screenCount
+ 20 unused
+
+ DMXGetScreenAttributes
+ 1 CARD8 opcode (X assigned)
+ 1 10 DMX opcode (X_DMXGetScreenAttributes)
+ 2 2 request length
+ 4 CARD32 physicalScreen
+ ==>
+ 1 1 Reply
+ 1 unused
+ 2 CARD16 sequence number
+ 4 1+(n+p)/4 reply length
+ 4 n displayNameLength
+ 4 CARD32 logicalScreen
+ 2 CARD16 screenWindowWidth
+ 2 CARD16 screenWindowHeight
+ 2 INT16 screenWindowXoffset
+ 2 INT16 screenWindowYoffset
+ 2 CARD16 rootWindowWidth
+ 2 CARD16 rootWindowHeight
+ 2 INT16 rootWindowXoffset
+ 2 INT16 rootWindowYoffset
+ 2 INT16 rootWindowXorigin
+ 2 INT16 rootWindowYorigin
+ n displayName
+ p pad(n)
+
+ DMXChangeScreensAttributes
+ 1 CARD8 opcode (X assigned)
+ 1 11 DMX opcode (X_DMXChangeScreenAttributes)
+ 2 3+s+m+n request length
+ 4 s screenCount
+ 4 m maskCount
+ 4s LISTofCARD32 screens
+ 4m LISTofCARD32 valueMasks
+ 4n LISTofVALUES valueList
+ ==>
+ 1 1 Reply
+ 1 unused
+ 2 CARD16 sequence number
+ 4 0 reply length
+ 4 CARD32 status
+ 4 CARD32 errorScreen
+ 16 unused
+
+
+ DMXAddScreen
+ 1 CARD8 opcode (X assigned)
+ 1 12 DMX opcode (X_DMXAddScreen)
+ 2 3+m+(n+p)/4 request length
+ 4 n displayNameLength
+ 4 CARD32 physicalScreen
+ 4 CARD32 valueMask
+ 4m LISTofVALUES valueList
+ n displayName
+ p pad(n)
+ ==>
+ 1 1 Reply
+ 1 unused
+ 2 CARD16 sequence number
+ 4 0 reply length
+ 4 CARD32 status
+ 4 CARD32 physicalScreen
+ 16 unused
+
+ DMXRemoveScreen
+ 1 CARD8 opcode (X assigned)
+ 1 13 DMX opcode (X_DMXRemoveScreen)
+ 2 2 request length
+ 4 CARD32 physicalScreen
+ ==>
+ 1 1 Reply
+ 1 unused
+ 2 CARD16 sequence number
+ 4 0 reply length
+ 4 CARD32 status
+ 20 unused
+
+ DMXGetWindowAttributes
+ 1 CARD8 opcode (X assigned)
+ 1 3 DMX opcode (X_DMXGetWindowAttributes)
+ 2 2 request length
+ 4 CARD32 window
+ ==>
+ 1 1 Reply
+ 1 unused
+ 2 CARD16 sequence number
+ 4 n*6 reply length
+ 4 n screenCount
+ 20 unused
+ n*4 LISTofCARD32 screens
+ n*4 LISTofCARD32 windows
+ n*8 LISTofRECTANGLE pos
+ n*8 LISTofRECTANGLE vis
+
+ DMXGetDesktopAttributes
+ 1 CARD8 opcode (X assigned)
+ 1 14 DMX opcode (X_DMXGetDesktopAttributes)
+ 2 1 request length
+ ==>
+ 1 1 Reply
+ 1 unused
+ 2 CARD16 sequence number
+ 4 0 reply length
+ 2 INT16 width
+ 2 INT16 height
+ 2 INT16 shiftX
+ 2 INT16 shiftY
+ 16 unused
+
+ DMXChangeDesktopAttributes
+ 1 CARD8 opcode (X assigned)
+ 1 15 DMX opcode (X_DMXChangeDesktopAttributes)
+ 2 2+n request length
+ 4 BITMASK valueMask
+ 4n LISTofVALUES valueList
+ ==>
+ 1 1 Reply
+ 1 unused
+ 2 CARD16 sequence number
+ 4 0 reply length
+ 4 CARD32 status
+ 20 unused
+
+ DMXGetInputCount
+ 1 CARD8 opcode (X assigned)
+ 1 4 DMX opcode (X_DMXGetInputCount)
+ 2 1 request length
+ ==>
+ 1 1 Reply
+ 1 unused
+ 2 CARD16 sequence number
+ 4 0 reply length
+ 4 CARD32 inputCount
+ 20 unused
+
+ DMXGetInputAttributes
+ 1 CARD8 opcode (X assigned)
+ 1 5 DMX opcode (X_DMXGetInputAttributes)
+ 2 2 request length
+ 4 CARD32 deviceId
+ ==>
+ 1 1 Reply
+ 1 unused
+ 2 CARD16 sequence number
+ 4 (n+p)/4 reply length
+ 4 CARD32 inputType
+ 4 CARD32 physicalScreen
+ 4 CARD32 physicalId
+ 4 n nameLength
+ 1 BOOL isCore
+ 1 BOOL sendsCore
+ 1 BOOL detached
+ 5 unused
+ n name
+ p pad(n)
+
+ DMXAddInput
+ 1 CARD8 opcode (X assigned)
+ 1 16 DMX opcode (X_DMXAddInput)
+ 2 3+m+(n+p)/4 request length
+ 4 n displayNameLength
+ 4 CARD32 valueMask
+ 4m LISTofVALUES valueList
+ n displayName
+ p pad(n)
+ ==>
+ 1 1 Reply
+ 1 unused
+ 2 CARD16 sequence number
+ 4 0 reply length
+ 4 CARD32 status
+ 4 CARD32 physicalId
+ 16 unused
+
+ DMXRemoveInput
+ 1 CARD8 opcode (X assigned)
+ 1 17 DMX opcode (X_DMXRemoveInput)
+ 2 3 request length
+ 4 CARD32 physicalId
+ ==>
+ 1 1 Reply
+ 1 unused
+ 2 CARD16 sequence number
+ 4 0 reply length
+ 4 CARD32 status
+ 20 unused
+
+
+8. Changes to existing requests/replies/events
+
+ No changes to existing requests, replies, or events are necessitated
+ by this extension.
+
+
+
+9. Acknowledgments
+
+
+
+10. References
+
+ [X11R6.4] Robert W. Sheifler. X Window System Protocol, X Consortium
+ Standard, X Version 11, Release 6.4. Available from
+ xc/doc/specs/XProtocol and xc/doc/hardcopy/XProtocol.
diff --git a/xorg-server/hw/dmx/examples/.gitignore b/xorg-server/hw/dmx/examples/.gitignore
index 854534d9f..d86e7eb2c 100644
--- a/xorg-server/hw/dmx/examples/.gitignore
+++ b/xorg-server/hw/dmx/examples/.gitignore
@@ -1,17 +1,17 @@
-# Add & Override for this directory and it's subdirectories
-dmxaddinput
-dmxaddscreen
-dmxinfo
-dmxreconfig
-dmxresize
-dmxrminput
-dmxrmscreen
-dmxwininfo
-ev
-evi
-res
-xbell
-xinput
-xled
-xtest
-
+# Add & Override for this directory and it's subdirectories
+dmxaddinput
+dmxaddscreen
+dmxinfo
+dmxreconfig
+dmxresize
+dmxrminput
+dmxrmscreen
+dmxwininfo
+ev
+evi
+res
+xbell
+xinput
+xled
+xtest
+
diff --git a/xorg-server/hw/dmx/input/Makefile.am b/xorg-server/hw/dmx/input/Makefile.am
index ebe9a0843..185aaf84e 100644
--- a/xorg-server/hw/dmx/input/Makefile.am
+++ b/xorg-server/hw/dmx/input/Makefile.am
@@ -1,67 +1,67 @@
-noinst_LIBRARIES = libdmxinput.a
-
-if DMX_BUILD_LNX
-RAWSRCS = lnx-keyboard.c \
- lnx-keyboard.h \
- lnx-ms.c \
- lnx-ms.h \
- lnx-ps2.c \
- lnx-ps2.h
-endif
-
-if DMX_BUILD_USB
-USBSRCS = usb-keyboard.c \
- usb-keyboard.h \
- usb-mouse.c \
- usb-mouse.h \
- usb-other.c \
- usb-other.h \
- usb-common.c \
- usb-common.h \
- usb-private.h
-endif
-
-DRVSRCS = dmxdummy.c \
- dmxdummy.h \
- dmxbackend.c \
- dmxbackend.h \
- dmxconsole.c \
- dmxconsole.h \
- dmxcommon.c \
- dmxcommon.h
-
-DMXSRCS = dmxinputinit.c \
- dmxinputinit.h \
- dmxarg.c \
- dmxarg.h \
- dmxsigio.c \
- dmxsigio.h \
- dmxevents.c \
- dmxevents.h \
- dmxxinput.c \
- dmxmotion.c \
- dmxmotion.h \
- dmxmap.c \
- dmxmap.h
-
-
-libdmxinput_a_SOURCES = ChkNotMaskEv.c \
- ChkNotMaskEv.h \
- atKeynames.h \
- $(RAWSRCS) \
- $(USBSRCS) \
- $(DRVSRCS) \
- $(DMXSRCS) \
- $(LIBSRCS)
-
-if GLX
-GLX_DEFS = @GL_CFLAGS@
-endif
-
-AM_CFLAGS = $(DIX_CFLAGS) \
- -I$(top_srcdir)/hw/dmx \
- -DHAVE_DMX_CONFIG_H \
- $(GLX_DEFS) \
- @DMXMODULES_CFLAGS@
-
-EXTRA_DIST = dmxdetach.c
+noinst_LIBRARIES = libdmxinput.a
+
+if DMX_BUILD_LNX
+RAWSRCS = lnx-keyboard.c \
+ lnx-keyboard.h \
+ lnx-ms.c \
+ lnx-ms.h \
+ lnx-ps2.c \
+ lnx-ps2.h
+endif
+
+if DMX_BUILD_USB
+USBSRCS = usb-keyboard.c \
+ usb-keyboard.h \
+ usb-mouse.c \
+ usb-mouse.h \
+ usb-other.c \
+ usb-other.h \
+ usb-common.c \
+ usb-common.h \
+ usb-private.h
+endif
+
+DRVSRCS = dmxdummy.c \
+ dmxdummy.h \
+ dmxbackend.c \
+ dmxbackend.h \
+ dmxconsole.c \
+ dmxconsole.h \
+ dmxcommon.c \
+ dmxcommon.h
+
+DMXSRCS = dmxinputinit.c \
+ dmxinputinit.h \
+ dmxarg.c \
+ dmxarg.h \
+ dmxsigio.c \
+ dmxsigio.h \
+ dmxevents.c \
+ dmxevents.h \
+ dmxxinput.c \
+ dmxmotion.c \
+ dmxmotion.h \
+ dmxmap.c \
+ dmxmap.h
+
+
+libdmxinput_a_SOURCES = ChkNotMaskEv.c \
+ ChkNotMaskEv.h \
+ atKeynames.h \
+ $(RAWSRCS) \
+ $(USBSRCS) \
+ $(DRVSRCS) \
+ $(DMXSRCS) \
+ $(LIBSRCS)
+
+if GLX
+GLX_DEFS = @GL_CFLAGS@
+endif
+
+AM_CFLAGS = $(DIX_CFLAGS) \
+ -I$(top_srcdir)/hw/dmx \
+ -DHAVE_DMX_CONFIG_H \
+ $(GLX_DEFS) \
+ @DMXMODULES_CFLAGS@
+
+EXTRA_DIST = dmxdetach.c
diff --git a/xorg-server/hw/dmx/input/dmxdummy.h b/xorg-server/hw/dmx/input/dmxdummy.h
index 17318b4d9..e3a85be95 100644
--- a/xorg-server/hw/dmx/input/dmxdummy.h
+++ b/xorg-server/hw/dmx/input/dmxdummy.h
@@ -1,43 +1,43 @@
-/*
- * Copyright 2002 Red Hat Inc., Durham, North Carolina.
- *
- * All Rights Reserved.
- *
- * Permission is hereby granted, free of charge, to any person obtaining
- * a copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation on the rights to use, copy, modify, merge,
- * publish, distribute, sublicense, and/or sell copies of the Software,
- * and to permit persons to whom the Software is furnished to do so,
- * subject to the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial
- * portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- * NON-INFRINGEMENT. IN NO EVENT SHALL RED HAT AND/OR THEIR SUPPLIERS
- * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
- * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
- * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- */
-
-/*
- * Authors:
- * Rickard E. (Rik) Faith <faith@redhat.com>
- *
- */
-
-/** \file
- * Interface to dummy input device support. \see dmxdummy.c */
-
-#ifndef _DMXDUMMY_H_
-#define _DMXDUMMY_H_
-
-extern void dmxDummyMouGetInfo(DevicePtr pDev, DMXLocalInitInfoPtr info);
-extern void dmxDummyKbdGetInfo(DevicePtr pDev, DMXLocalInitInfoPtr info);
-
-#endif
+/*
+ * Copyright 2002 Red Hat Inc., Durham, North Carolina.
+ *
+ * All Rights Reserved.
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining
+ * a copy of this software and associated documentation files (the
+ * "Software"), to deal in the Software without restriction, including
+ * without limitation on the rights to use, copy, modify, merge,
+ * publish, distribute, sublicense, and/or sell copies of the Software,
+ * and to permit persons to whom the Software is furnished to do so,
+ * subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice (including the
+ * next paragraph) shall be included in all copies or substantial
+ * portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ * NON-INFRINGEMENT. IN NO EVENT SHALL RED HAT AND/OR THEIR SUPPLIERS
+ * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
+ * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+ * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ */
+
+/*
+ * Authors:
+ * Rickard E. (Rik) Faith <faith@redhat.com>
+ *
+ */
+
+/** \file
+ * Interface to dummy input device support. \see dmxdummy.c */
+
+#ifndef _DMXDUMMY_H_
+#define _DMXDUMMY_H_
+
+extern void dmxDummyMouGetInfo(DevicePtr pDev, DMXLocalInitInfoPtr info);
+extern void dmxDummyKbdGetInfo(DevicePtr pDev, DMXLocalInitInfoPtr info);
+
+#endif
diff --git a/xorg-server/hw/kdrive/Makefile.am b/xorg-server/hw/kdrive/Makefile.am
index 3aebd0f43..471ca89dd 100644
--- a/xorg-server/hw/kdrive/Makefile.am
+++ b/xorg-server/hw/kdrive/Makefile.am
@@ -1,30 +1,30 @@
-if BUILD_KDRIVEFBDEVLIB
-FBDEV_SUBDIRS = fbdev
-endif
-
-if XFAKESERVER
-XFAKE_SUBDIRS = fake
-endif
-
-if XEPHYR
-XEPHYR_SUBDIRS = ephyr
-endif
-
-if KDRIVELINUX
-LINUX_SUBDIRS = linux
-endif
-
-SERVER_SUBDIRS = \
- $(FBDEV_SUBDIRS) \
- $(XEPHYR_SUBDIRS) \
- $(XFAKE_SUBDIRS)
-
-SUBDIRS = \
- src \
- $(LINUX_SUBDIRS) \
- $(SERVER_SUBDIRS)
-
-DIST_SUBDIRS = fbdev ephyr src linux fake
-
-relink:
- $(AM_V_at)for i in $(SERVER_SUBDIRS) ; do $(MAKE) -C $$i relink || exit 1 ; done
+if BUILD_KDRIVEFBDEVLIB
+FBDEV_SUBDIRS = fbdev
+endif
+
+if XFAKESERVER
+XFAKE_SUBDIRS = fake
+endif
+
+if XEPHYR
+XEPHYR_SUBDIRS = ephyr
+endif
+
+if KDRIVELINUX
+LINUX_SUBDIRS = linux
+endif
+
+SERVER_SUBDIRS = \
+ $(FBDEV_SUBDIRS) \
+ $(XEPHYR_SUBDIRS) \
+ $(XFAKE_SUBDIRS)
+
+SUBDIRS = \
+ src \
+ $(LINUX_SUBDIRS) \
+ $(SERVER_SUBDIRS)
+
+DIST_SUBDIRS = fbdev ephyr src linux fake
+
+relink:
+ $(AM_V_at)for i in $(SERVER_SUBDIRS) ; do $(MAKE) -C $$i relink || exit 1 ; done
diff --git a/xorg-server/hw/kdrive/Xkdrive.man b/xorg-server/hw/kdrive/Xkdrive.man
index a2a2736ea..b37f9f10a 100644
--- a/xorg-server/hw/kdrive/Xkdrive.man
+++ b/xorg-server/hw/kdrive/Xkdrive.man
@@ -1,57 +1,57 @@
-.\" $RCSId: xc/programs/Xserver/hw/kdrive/Xkdrive.man,v 1.3 2001/01/24 00:06:10 dawes Exp $
-.\"
-.TH Xkdrive 1 __vendorversion__
-.SH NAME
-Xkdrive \- tiny X server
-.SH SYNOPSIS
-.B Xvesa
-.RI [ :display ]
-.RI [ option ...]
-
-.B Xfbdev
-.RI [ :display ]
-.RI [ option ...]
-.SH DESCRIPTION
-.B Xkdrive
-is a family of X servers designed to be particularly small. This
-manual page describes the common functionality of the
-.B Xkdrive
-servers; for information on a specific X server, please refer to the
-relevant manual page.
-.SH OPTIONS
-In addition to the standard options accepted by all X servers (see
-Xserver(1)), all the
-.B Xkdrive
-servers accept the following options:
-.TP 8
-.B -card \fIpcmcia\fP
-use pcmcia card as additional screen.
-.TP 8
-.B -dumb
-disable hardware acceleration.
-.TP 8
-.B -origin \fIX\fP,\fIY\fP
-Locates the next screen in the Xinerama virtual screen.
-.TP 8
-.B -screen \fIwidth\fBx\fIheight\fR[\fBx\fIdepth\fR[\fBx\fIfreq\fR]]\fR[\fB@\fIrotation\fR]\fB
-use a screen of the specified \fIwidth\fP, \fIheight\fP, screen \fIdepth\fP, \fIfrequency\fP, and \fIrotation\fP (0, 90, 180 and 270 are legal values).
-.TP 8
-.B -softCursor
-disable the hardware cursor.
-.TP 8
-.B -videoTest
-start the server, pause momentarily, and exit.
-.TP 8
-.B -zaphod
-disable switching screens by moving the pointer across a screen boundary.
-.TP 8
-.B -2button
-enable emulation of a middle mouse button by chording.
-.TP 8
-.B -3button
-disable emulation of a middle mouse button by chording.
-.SH SEE ALSO
-X(__miscmansuffix__), Xserver(1), xdm(1), xinit(1), Xvesa(1), Xfbdev(1).
-.SH AUTHORS
-The Xkdrive common core was written by Keith Packard,
-and is based on the Sample Implementation of X.
+.\" $RCSId: xc/programs/Xserver/hw/kdrive/Xkdrive.man,v 1.3 2001/01/24 00:06:10 dawes Exp $
+.\"
+.TH Xkdrive 1 __vendorversion__
+.SH NAME
+Xkdrive \- tiny X server
+.SH SYNOPSIS
+.B Xvesa
+.RI [ :display ]
+.RI [ option ...]
+
+.B Xfbdev
+.RI [ :display ]
+.RI [ option ...]
+.SH DESCRIPTION
+.B Xkdrive
+is a family of X servers designed to be particularly small. This
+manual page describes the common functionality of the
+.B Xkdrive
+servers; for information on a specific X server, please refer to the
+relevant manual page.
+.SH OPTIONS
+In addition to the standard options accepted by all X servers (see
+Xserver(1)), all the
+.B Xkdrive
+servers accept the following options:
+.TP 8
+.B -card \fIpcmcia\fP
+use pcmcia card as additional screen.
+.TP 8
+.B -dumb
+disable hardware acceleration.
+.TP 8
+.B -origin \fIX\fP,\fIY\fP
+Locates the next screen in the Xinerama virtual screen.
+.TP 8
+.B -screen \fIwidth\fBx\fIheight\fR[\fBx\fIdepth\fR[\fBx\fIfreq\fR]]\fR[\fB@\fIrotation\fR]\fB
+use a screen of the specified \fIwidth\fP, \fIheight\fP, screen \fIdepth\fP, \fIfrequency\fP, and \fIrotation\fP (0, 90, 180 and 270 are legal values).
+.TP 8
+.B -softCursor
+disable the hardware cursor.
+.TP 8
+.B -videoTest
+start the server, pause momentarily, and exit.
+.TP 8
+.B -zaphod
+disable switching screens by moving the pointer across a screen boundary.
+.TP 8
+.B -2button
+enable emulation of a middle mouse button by chording.
+.TP 8
+.B -3button
+disable emulation of a middle mouse button by chording.
+.SH SEE ALSO
+X(__miscmansuffix__), Xserver(1), xdm(1), xinit(1), Xvesa(1), Xfbdev(1).
+.SH AUTHORS
+The Xkdrive common core was written by Keith Packard,
+and is based on the Sample Implementation of X.
diff --git a/xorg-server/hw/kdrive/ephyr/README b/xorg-server/hw/kdrive/ephyr/README
index 7b26fcf33..6d6a222ef 100644
--- a/xorg-server/hw/kdrive/ephyr/README
+++ b/xorg-server/hw/kdrive/ephyr/README
@@ -1,73 +1,73 @@
-Xephyr README
-=============
-
-
-What Is It ?
-============
-
-Xephyr is a a kdrive server that outputs to a window on a pre-existing
-'host' X display. Think Xnest but with support for modern extensions
-like composite, damage and randr.
-
-Unlike Xnest which is an X proxy, i.e. limited to the
-capabilities of the host X server, Xephyr is a real X server which
-uses the host X server window as "framebuffer" via fast SHM XImages.
-
-It also has support for 'visually' debugging what the server is
-painting.
-
-
-How To Use
-==========
-
-You probably want to run like;
-
-Xephyr :1 -ac -screen 800x600 &
-
-Then set DISPLAY=:1 and run whatever X apps you like.
-
-Use 'xrandr' to change to orientation/size.
-
-There is a '-parent' switch which works just like Xnests ( for use
-with things like matchbox-nest - http://matchbox.handhelds.org ).
-
-There is also a '-host-cursor' switch to set 'cursor acceleration' -
-The host's cursor is reused. This is only really there to aid
-debugging by avoiding server paints for the cursor. Performance
-improvement is negiable.
-
-Send a SIGUSR1 to the server ( eg kill -USR1 `pidof Xephyr` ) to
-toggle the debugging mode. In this mode red rectangles are painted to
-screen areas getting painted before painting the actual content. The
-delay between this can be altered by setting a XEPHYR_PAUSE env var to
-a value in micro seconds.
-
-
-Caveats
-=======
-
- - Depth is limited to being the same as the host.
- *Update* As of 8/11/2004. Xephyr can now do 8bpp & 16bpp
- on 24bpp host.
-
- - Rotated displays are currently updated via full blits. This
- is slower than a normal oprientated display. Debug mode will
- therefor not be of much use rotated.
-
- - The '-host-cursor' cursor is static in its appearence.
-
- - The build gets a warning about 'nanosleep'. I think the various '-D'
- build flags are causing this. I havn't figured as yet how to work
- round it. It doesn't appear to break anything however.
-
- - Keyboard handling is basic but works.
-
- - Mouse button 5 probably wont work.
-
-
-
-
-
-Matthew Allum <mallum@o-hand.com> 2004
-
-
+Xephyr README
+=============
+
+
+What Is It ?
+============
+
+Xephyr is a a kdrive server that outputs to a window on a pre-existing
+'host' X display. Think Xnest but with support for modern extensions
+like composite, damage and randr.
+
+Unlike Xnest which is an X proxy, i.e. limited to the
+capabilities of the host X server, Xephyr is a real X server which
+uses the host X server window as "framebuffer" via fast SHM XImages.
+
+It also has support for 'visually' debugging what the server is
+painting.
+
+
+How To Use
+==========
+
+You probably want to run like;
+
+Xephyr :1 -ac -screen 800x600 &
+
+Then set DISPLAY=:1 and run whatever X apps you like.
+
+Use 'xrandr' to change to orientation/size.
+
+There is a '-parent' switch which works just like Xnests ( for use
+with things like matchbox-nest - http://matchbox.handhelds.org ).
+
+There is also a '-host-cursor' switch to set 'cursor acceleration' -
+The host's cursor is reused. This is only really there to aid
+debugging by avoiding server paints for the cursor. Performance
+improvement is negiable.
+
+Send a SIGUSR1 to the server ( eg kill -USR1 `pidof Xephyr` ) to
+toggle the debugging mode. In this mode red rectangles are painted to
+screen areas getting painted before painting the actual content. The
+delay between this can be altered by setting a XEPHYR_PAUSE env var to
+a value in micro seconds.
+
+
+Caveats
+=======
+
+ - Depth is limited to being the same as the host.
+ *Update* As of 8/11/2004. Xephyr can now do 8bpp & 16bpp
+ on 24bpp host.
+
+ - Rotated displays are currently updated via full blits. This
+ is slower than a normal oprientated display. Debug mode will
+ therefor not be of much use rotated.
+
+ - The '-host-cursor' cursor is static in its appearence.
+
+ - The build gets a warning about 'nanosleep'. I think the various '-D'
+ build flags are causing this. I havn't figured as yet how to work
+ round it. It doesn't appear to break anything however.
+
+ - Keyboard handling is basic but works.
+
+ - Mouse button 5 probably wont work.
+
+
+
+
+
+Matthew Allum <mallum@o-hand.com> 2004
+
+
diff --git a/xorg-server/hw/kdrive/fake/.gitignore b/xorg-server/hw/kdrive/fake/.gitignore
index c973ff076..12a25cc4f 100644
--- a/xorg-server/hw/kdrive/fake/.gitignore
+++ b/xorg-server/hw/kdrive/fake/.gitignore
@@ -1,2 +1,2 @@
-# Add & Override for this directory and it's subdirectories
-Xfake
+# Add & Override for this directory and it's subdirectories
+Xfake
diff --git a/xorg-server/hw/kdrive/fake/Makefile.am b/xorg-server/hw/kdrive/fake/Makefile.am
index 76bbc3619..6d3ed056e 100644
--- a/xorg-server/hw/kdrive/fake/Makefile.am
+++ b/xorg-server/hw/kdrive/fake/Makefile.am
@@ -1,30 +1,30 @@
-INCLUDES = \
- @KDRIVE_INCS@ \
- @KDRIVE_CFLAGS@
-
-noinst_LTLIBRARIES = libfake.la
-
-bin_PROGRAMS = Xfake
-
-libfake_la_SOURCES = \
- fake.c \
- kbd.c \
- os.c \
- mouse.c \
- fake.h
-
-Xfake_SOURCES = \
- fakeinit.c
-
-Xfake_LDADD = \
- libfake.la \
- @KDRIVE_LIBS@
-
-Xfake_LDFLAGS = $(LD_EXPORT_SYMBOLS_FLAG)
-
-Xfake_DEPENDENCIES = \
- libfake.la \
- @KDRIVE_LOCAL_LIBS@
-
-relink:
- $(AM_V_at)rm -f $(bin_PROGRAMS) && $(MAKE) $(bin_PROGRAMS)
+INCLUDES = \
+ @KDRIVE_INCS@ \
+ @KDRIVE_CFLAGS@
+
+noinst_LTLIBRARIES = libfake.la
+
+bin_PROGRAMS = Xfake
+
+libfake_la_SOURCES = \
+ fake.c \
+ kbd.c \
+ os.c \
+ mouse.c \
+ fake.h
+
+Xfake_SOURCES = \
+ fakeinit.c
+
+Xfake_LDADD = \
+ libfake.la \
+ @KDRIVE_LIBS@
+
+Xfake_LDFLAGS = $(LD_EXPORT_SYMBOLS_FLAG)
+
+Xfake_DEPENDENCIES = \
+ libfake.la \
+ @KDRIVE_LOCAL_LIBS@
+
+relink:
+ $(AM_V_at)rm -f $(bin_PROGRAMS) && $(MAKE) $(bin_PROGRAMS)
diff --git a/xorg-server/hw/kdrive/fbdev/.gitignore b/xorg-server/hw/kdrive/fbdev/.gitignore
index 8569c9aed..80ad26623 100644
--- a/xorg-server/hw/kdrive/fbdev/.gitignore
+++ b/xorg-server/hw/kdrive/fbdev/.gitignore
@@ -1,2 +1,2 @@
-# Add & Override for this directory and it's subdirectories
-Xfbdev
+# Add & Override for this directory and it's subdirectories
+Xfbdev
diff --git a/xorg-server/hw/kdrive/fbdev/Makefile.am b/xorg-server/hw/kdrive/fbdev/Makefile.am
index 98d667ebd..ec9df95e0 100644
--- a/xorg-server/hw/kdrive/fbdev/Makefile.am
+++ b/xorg-server/hw/kdrive/fbdev/Makefile.am
@@ -1,29 +1,29 @@
-INCLUDES = \
- @KDRIVE_INCS@ \
- @KDRIVE_CFLAGS@
-
-noinst_LTLIBRARIES = libfbdev.la
-
-libfbdev_la_SOURCES = \
- fbdev.c \
- fbdev.h
-
-if KDRIVEFBDEV
-bin_PROGRAMS = Xfbdev
-
-Xfbdev_SOURCES = \
- fbinit.c
-
-Xfbdev_LDADD = \
- libfbdev.la \
- @KDRIVE_LIBS@
-
-Xfbdev_DEPENDENCIES = \
- libfbdev.la \
- $(KDRIVE_PURE_LIBS)
-
-Xfbdev_LDFLAGS = $(LD_EXPORT_SYMBOLS_FLAG)
-
-relink:
- $(AM_V_at)rm -f $(bin_PROGRAMS) && $(MAKE) $(bin_PROGRAMS)
-endif
+INCLUDES = \
+ @KDRIVE_INCS@ \
+ @KDRIVE_CFLAGS@
+
+noinst_LTLIBRARIES = libfbdev.la
+
+libfbdev_la_SOURCES = \
+ fbdev.c \
+ fbdev.h
+
+if KDRIVEFBDEV
+bin_PROGRAMS = Xfbdev
+
+Xfbdev_SOURCES = \
+ fbinit.c
+
+Xfbdev_LDADD = \
+ libfbdev.la \
+ @KDRIVE_LIBS@
+
+Xfbdev_DEPENDENCIES = \
+ libfbdev.la \
+ $(KDRIVE_PURE_LIBS)
+
+Xfbdev_LDFLAGS = $(LD_EXPORT_SYMBOLS_FLAG)
+
+relink:
+ $(AM_V_at)rm -f $(bin_PROGRAMS) && $(MAKE) $(bin_PROGRAMS)
+endif
diff --git a/xorg-server/hw/kdrive/fbdev/Xfbdev.man b/xorg-server/hw/kdrive/fbdev/Xfbdev.man
index 6d0c23818..bfdae168f 100644
--- a/xorg-server/hw/kdrive/fbdev/Xfbdev.man
+++ b/xorg-server/hw/kdrive/fbdev/Xfbdev.man
@@ -1,28 +1,28 @@
-.\" $RCSId: xc/programs/Xserver/hw/kdrive/fbdev/Xfbdev.man,v 1.4 2001/01/27 18:20:40 dawes Exp $
-.\"
-.TH Xfbdev 1 __vendorversion__
-.SH NAME
-Xfbdev \- Linux framebuffer device tiny X server
-.SH SYNOPSIS
-.B Xfbdev
-.RI [ :display ]
-.RI [ option ...]
-.SH DESCRIPTION
-.B Xfbdev
-is a generic X server for Linux.
-.B Xfbdev
-doesn't know about any particular hardware, and uses the framebuffer
-provided by the Linux framebuffer device.
-.SH OPTIONS
-.B Xfbdev
-accepts the common options of the Xkdrive family of servers. Please
-see Xkdrive(1).
-.SH KEYBOARD
-To be written.
-.SH SEE ALSO
-X(__miscmansuffix__), Xserver(1), Xkdrive(1), xdm(1), xinit(1).
-.SH AUTHORS
-The
-.B Xfbdev
-server was written by Keith Packard.
-
+.\" $RCSId: xc/programs/Xserver/hw/kdrive/fbdev/Xfbdev.man,v 1.4 2001/01/27 18:20:40 dawes Exp $
+.\"
+.TH Xfbdev 1 __vendorversion__
+.SH NAME
+Xfbdev \- Linux framebuffer device tiny X server
+.SH SYNOPSIS
+.B Xfbdev
+.RI [ :display ]
+.RI [ option ...]
+.SH DESCRIPTION
+.B Xfbdev
+is a generic X server for Linux.
+.B Xfbdev
+doesn't know about any particular hardware, and uses the framebuffer
+provided by the Linux framebuffer device.
+.SH OPTIONS
+.B Xfbdev
+accepts the common options of the Xkdrive family of servers. Please
+see Xkdrive(1).
+.SH KEYBOARD
+To be written.
+.SH SEE ALSO
+X(__miscmansuffix__), Xserver(1), Xkdrive(1), xdm(1), xinit(1).
+.SH AUTHORS
+The
+.B Xfbdev
+server was written by Keith Packard.
+
diff --git a/xorg-server/hw/kdrive/linux/Makefile.am b/xorg-server/hw/kdrive/linux/Makefile.am
index 7946e5df3..93e5d2f9f 100644
--- a/xorg-server/hw/kdrive/linux/Makefile.am
+++ b/xorg-server/hw/kdrive/linux/Makefile.am
@@ -1,27 +1,27 @@
-INCLUDES = \
- @KDRIVE_INCS@ \
- @KDRIVE_CFLAGS@
-
-AM_CFLAGS = -DHAVE_DIX_CONFIG_H
-
-noinst_LTLIBRARIES = liblinux.la
-
-liblinux_la_SOURCES =
-
-liblinux_la_SOURCES += linux.c
-
-if KDRIVE_KBD
-liblinux_la_SOURCES += keyboard.c
-endif
-
-if KDRIVE_EVDEV
-liblinux_la_SOURCES += evdev.c
-endif
-
-if KDRIVE_MOUSE
-liblinux_la_SOURCES += mouse.c ms.c ps2.c
-endif
-
-if TSLIB
-liblinux_la_SOURCES += tslib.c
-endif
+INCLUDES = \
+ @KDRIVE_INCS@ \
+ @KDRIVE_CFLAGS@
+
+AM_CFLAGS = -DHAVE_DIX_CONFIG_H
+
+noinst_LTLIBRARIES = liblinux.la
+
+liblinux_la_SOURCES =
+
+liblinux_la_SOURCES += linux.c
+
+if KDRIVE_KBD
+liblinux_la_SOURCES += keyboard.c
+endif
+
+if KDRIVE_EVDEV
+liblinux_la_SOURCES += evdev.c
+endif
+
+if KDRIVE_MOUSE
+liblinux_la_SOURCES += mouse.c ms.c ps2.c
+endif
+
+if TSLIB
+liblinux_la_SOURCES += tslib.c
+endif
diff --git a/xorg-server/hw/kdrive/src/Makefile.am b/xorg-server/hw/kdrive/src/Makefile.am
index 477ad673a..51375b950 100644
--- a/xorg-server/hw/kdrive/src/Makefile.am
+++ b/xorg-server/hw/kdrive/src/Makefile.am
@@ -1,28 +1,28 @@
-INCLUDES = \
- @KDRIVE_INCS@ \
- @KDRIVE_CFLAGS@
-
-AM_CFLAGS = -DHAVE_DIX_CONFIG_H
-
-noinst_LTLIBRARIES = libkdrive.la libkdrivestubs.la
-
-if XV
-KDRIVE_XV_SOURCES = \
- kxv.c \
- kxv.h
-endif
-
-libkdrive_la_SOURCES = \
- fourcc.h \
- kcmap.c \
- kdrive.c \
- kdrive.h \
- kinfo.c \
- kinput.c \
- kmode.c \
- kshadow.c \
- $(KDRIVE_XV_SOURCES) \
- $(top_srcdir)/mi/miinitext.c
-
-libkdrivestubs_la_SOURCES = \
- $(top_srcdir)/fb/fbcmap_mi.c
+INCLUDES = \
+ @KDRIVE_INCS@ \
+ @KDRIVE_CFLAGS@
+
+AM_CFLAGS = -DHAVE_DIX_CONFIG_H
+
+noinst_LTLIBRARIES = libkdrive.la libkdrivestubs.la
+
+if XV
+KDRIVE_XV_SOURCES = \
+ kxv.c \
+ kxv.h
+endif
+
+libkdrive_la_SOURCES = \
+ fourcc.h \
+ kcmap.c \
+ kdrive.c \
+ kdrive.h \
+ kinfo.c \
+ kinput.c \
+ kmode.c \
+ kshadow.c \
+ $(KDRIVE_XV_SOURCES) \
+ $(top_srcdir)/mi/miinitext.c
+
+libkdrivestubs_la_SOURCES = \
+ $(top_srcdir)/fb/fbcmap_mi.c
diff --git a/xorg-server/hw/xfree86/common/.gitignore b/xorg-server/hw/xfree86/common/.gitignore
index 3262e2f37..81e8416d2 100644
--- a/xorg-server/hw/xfree86/common/.gitignore
+++ b/xorg-server/hw/xfree86/common/.gitignore
@@ -1,3 +1,3 @@
-# Add & Override for this directory and it's subdirectories
-xf86Build.h
-xf86DefModeSet.c
+# Add & Override for this directory and it's subdirectories
+xf86Build.h
+xf86DefModeSet.c
diff --git a/xorg-server/hw/xfree86/common/extramodes b/xorg-server/hw/xfree86/common/extramodes
index fdabb709a..450502670 100644
--- a/xorg-server/hw/xfree86/common/extramodes
+++ b/xorg-server/hw/xfree86/common/extramodes
@@ -1,27 +1,27 @@
-//
-// Extra modes to include as default modes in the X server.
-//
-// $XFree86: xc/programs/Xserver/hw/xfree86/etc/extramodes,v 1.5 2002/06/05 19:43:05 dawes Exp $
-//
-
-# 832x624 @ 75Hz (74.55Hz) (fix if the official/Apple spec is different) hsync: 49.725kHz
-ModeLine "832x624" 57.284 832 864 928 1152 624 625 628 667 -Hsync -Vsync
-
-# 1400x1050 @ 60Hz (VESA GTF) hsync: 65.5kHz
-ModeLine "1400x1050" 122.0 1400 1488 1640 1880 1050 1052 1064 1082 +hsync +vsync
-
-# 1400x1050 @ 75Hz (VESA GTF) hsync: 82.2kHz
-ModeLine "1400x1050" 155.8 1400 1464 1784 1912 1050 1052 1064 1090 +hsync +vsync
-
-# 1920x1440 @ 85Hz (VESA GTF) hsync: 128.5kHz
-Modeline "1920x1440" 341.35 1920 2072 2288 2656 1440 1441 1444 1512 -hsync +vsync
-
-# 2048x1536 @ 60Hz (VESA GTF) hsync: 95.3kHz
-Modeline "2048x1536" 266.95 2048 2200 2424 2800 1536 1537 1540 1589 -hsync +vsync
-
-# 2048x1536 @ 75Hz (VESA GTF) hsync: 120.2kHz
-Modeline "2048x1536" 340.48 2048 2216 2440 2832 1536 1537 1540 1603 -hsync +vsync
-
-# 2048x1536 @ 85Hz (VESA GTF) hsync: 137.0kHz
-Modeline "2048x1536" 388.04 2048 2216 2440 2832 1536 1537 1540 1612 -hsync +vsync
-
+//
+// Extra modes to include as default modes in the X server.
+//
+// $XFree86: xc/programs/Xserver/hw/xfree86/etc/extramodes,v 1.5 2002/06/05 19:43:05 dawes Exp $
+//
+
+# 832x624 @ 75Hz (74.55Hz) (fix if the official/Apple spec is different) hsync: 49.725kHz
+ModeLine "832x624" 57.284 832 864 928 1152 624 625 628 667 -Hsync -Vsync
+
+# 1400x1050 @ 60Hz (VESA GTF) hsync: 65.5kHz
+ModeLine "1400x1050" 122.0 1400 1488 1640 1880 1050 1052 1064 1082 +hsync +vsync
+
+# 1400x1050 @ 75Hz (VESA GTF) hsync: 82.2kHz
+ModeLine "1400x1050" 155.8 1400 1464 1784 1912 1050 1052 1064 1090 +hsync +vsync
+
+# 1920x1440 @ 85Hz (VESA GTF) hsync: 128.5kHz
+Modeline "1920x1440" 341.35 1920 2072 2288 2656 1440 1441 1444 1512 -hsync +vsync
+
+# 2048x1536 @ 60Hz (VESA GTF) hsync: 95.3kHz
+Modeline "2048x1536" 266.95 2048 2200 2424 2800 1536 1537 1540 1589 -hsync +vsync
+
+# 2048x1536 @ 75Hz (VESA GTF) hsync: 120.2kHz
+Modeline "2048x1536" 340.48 2048 2216 2440 2832 1536 1537 1540 1603 -hsync +vsync
+
+# 2048x1536 @ 85Hz (VESA GTF) hsync: 137.0kHz
+Modeline "2048x1536" 388.04 2048 2216 2440 2832 1536 1537 1540 1612 -hsync +vsync
+
diff --git a/xorg-server/hw/xfree86/common/modeline2c.awk b/xorg-server/hw/xfree86/common/modeline2c.awk
index a85d36c58..038e7e935 100644
--- a/xorg-server/hw/xfree86/common/modeline2c.awk
+++ b/xorg-server/hw/xfree86/common/modeline2c.awk
@@ -1,93 +1,93 @@
-#!/usr/bin/awk -f
-#
-# Copyright (c) 2007 Joerg Sonnenberger <joerg@NetBSD.org>.
-# All rights reserved.
-#
-# Based on Perl script by Dirk Hohndel.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions
-# are met:
-#
-# 1. Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-# 2. Redistributions in binary form must reproduce the above copyright
-# notice, this list of conditions and the following disclaimer in
-# the documentation and/or other materials provided with the
-# distribution.
-#
-# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-# ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
-# FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
-# COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
-# INCIDENTAL, SPECIAL, EXEMPLARY OR CONSEQUENTIAL DAMAGES (INCLUDING,
-# BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
-# AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
-# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
-# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-# SUCH DAMAGE.
-#
-# Usage: modeline2c.awk < modefile > xf86DefModeSet.c
-#
-
-BEGIN {
- flagsdict[""] = "0"
-
- flagsdict["+hsync +vsync"] = "V_PHSYNC | V_PVSYNC"
- flagsdict["+hsync -vsync"] = "V_PHSYNC | V_NVSYNC"
- flagsdict["-hsync +vsync"] = "V_NHSYNC | V_PVSYNC"
- flagsdict["-hsync -vsync"] = "V_NHSYNC | V_NVSYNC"
- flagsdict["+hsync +vsync interlace"] = "V_PHSYNC | V_PVSYNC | V_INTERLACE"
- flagsdict["+hsync -vsync interlace"] = "V_PHSYNC | V_NVSYNC | V_INTERLACE"
- flagsdict["-hsync +vsync interlace"] = "V_NHSYNC | V_PVSYNC | V_INTERLACE"
- flagsdict["-hsync -vsync interlace"] = "V_NHSYNC | V_NVSYNC | V_INTERLACE"
-
- print "/* THIS FILE IS AUTOMATICALLY GENERATED -- DO NOT EDIT -- LOOK at"
- print " * modeline2c.awk */"
- print ""
- print "/*"
- print " * Author: Joerg Sonnenberger <joerg@NetBSD.org>"
- print " * Based on Perl script from Dirk Hohndel <hohndel@XFree86.Org>"
- print " */"
- print ""
- print "#ifdef HAVE_XORG_CONFIG_H"
- print "#include <xorg-config.h>"
- print "#endif"
- print ""
- print "#include \"xf86.h\""
- print "#include \"xf86Config.h\""
- print "#include \"xf86Priv.h\""
- print "#include \"xf86_OSlib.h\""
- print ""
- print "#include \"globals.h\""
- print ""
- print "#define MODEPREFIX NULL, NULL, NULL, MODE_OK, M_T_DEFAULT"
- print "#define MODESUFFIX 0,0, 0,0,0,0,0,0,0, 0,0,0,0,0,0,FALSE,FALSE,0,NULL,0,0.0,0.0"
- print ""
- print "const DisplayModeRec xf86DefaultModes [] = {"
-
- modeline = "\t{MODEPREFIX,%d, %d,%d,%d,%d,0, %d,%d,%d,%d,0, %s, MODESUFFIX},\n"
- modeline_data = "^[a-zA-Z]+[ \t]+[^ \t]+[ \t0-9.]+"
-}
-
-/^[mM][oO][dD][eE][lL][iI][nN][eE]/ {
- flags = $0
- gsub(modeline_data, "", flags)
- flags = tolower(flags)
- printf(modeline, $3 * 1000, $4, $5, $6, $7,
- $8, $9, $10, $11, flagsdict[flags])
- # Half-width double scanned modes
- printf(modeline, $3 * 500, $4/2, $5/2, $6/2, $7/2,
- $8/2, $9/2, $10/2, $11/2, flagsdict[flags] " | V_DBLSCAN")
-}
-
-/^#/ {
- print "/*" substr($0, 2) " */"
-}
-
-END {
- print "};"
- printf "const int xf86NumDefaultModes = sizeof(xf86DefaultModes) / sizeof(DisplayModeRec);"
-}
+#!/usr/bin/awk -f
+#
+# Copyright (c) 2007 Joerg Sonnenberger <joerg@NetBSD.org>.
+# All rights reserved.
+#
+# Based on Perl script by Dirk Hohndel.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions
+# are met:
+#
+# 1. Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+# 2. Redistributions in binary form must reproduce the above copyright
+# notice, this list of conditions and the following disclaimer in
+# the documentation and/or other materials provided with the
+# distribution.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+# FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+# COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+# INCIDENTAL, SPECIAL, EXEMPLARY OR CONSEQUENTIAL DAMAGES (INCLUDING,
+# BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
+# AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+# SUCH DAMAGE.
+#
+# Usage: modeline2c.awk < modefile > xf86DefModeSet.c
+#
+
+BEGIN {
+ flagsdict[""] = "0"
+
+ flagsdict["+hsync +vsync"] = "V_PHSYNC | V_PVSYNC"
+ flagsdict["+hsync -vsync"] = "V_PHSYNC | V_NVSYNC"
+ flagsdict["-hsync +vsync"] = "V_NHSYNC | V_PVSYNC"
+ flagsdict["-hsync -vsync"] = "V_NHSYNC | V_NVSYNC"
+ flagsdict["+hsync +vsync interlace"] = "V_PHSYNC | V_PVSYNC | V_INTERLACE"
+ flagsdict["+hsync -vsync interlace"] = "V_PHSYNC | V_NVSYNC | V_INTERLACE"
+ flagsdict["-hsync +vsync interlace"] = "V_NHSYNC | V_PVSYNC | V_INTERLACE"
+ flagsdict["-hsync -vsync interlace"] = "V_NHSYNC | V_NVSYNC | V_INTERLACE"
+
+ print "/* THIS FILE IS AUTOMATICALLY GENERATED -- DO NOT EDIT -- LOOK at"
+ print " * modeline2c.awk */"
+ print ""
+ print "/*"
+ print " * Author: Joerg Sonnenberger <joerg@NetBSD.org>"
+ print " * Based on Perl script from Dirk Hohndel <hohndel@XFree86.Org>"
+ print " */"
+ print ""
+ print "#ifdef HAVE_XORG_CONFIG_H"
+ print "#include <xorg-config.h>"
+ print "#endif"
+ print ""
+ print "#include \"xf86.h\""
+ print "#include \"xf86Config.h\""
+ print "#include \"xf86Priv.h\""
+ print "#include \"xf86_OSlib.h\""
+ print ""
+ print "#include \"globals.h\""
+ print ""
+ print "#define MODEPREFIX NULL, NULL, NULL, MODE_OK, M_T_DEFAULT"
+ print "#define MODESUFFIX 0,0, 0,0,0,0,0,0,0, 0,0,0,0,0,0,FALSE,FALSE,0,NULL,0,0.0,0.0"
+ print ""
+ print "const DisplayModeRec xf86DefaultModes [] = {"
+
+ modeline = "\t{MODEPREFIX,%d, %d,%d,%d,%d,0, %d,%d,%d,%d,0, %s, MODESUFFIX},\n"
+ modeline_data = "^[a-zA-Z]+[ \t]+[^ \t]+[ \t0-9.]+"
+}
+
+/^[mM][oO][dD][eE][lL][iI][nN][eE]/ {
+ flags = $0
+ gsub(modeline_data, "", flags)
+ flags = tolower(flags)
+ printf(modeline, $3 * 1000, $4, $5, $6, $7,
+ $8, $9, $10, $11, flagsdict[flags])
+ # Half-width double scanned modes
+ printf(modeline, $3 * 500, $4/2, $5/2, $6/2, $7/2,
+ $8/2, $9/2, $10/2, $11/2, flagsdict[flags] " | V_DBLSCAN")
+}
+
+/^#/ {
+ print "/*" substr($0, 2) " */"
+}
+
+END {
+ print "};"
+ printf "const int xf86NumDefaultModes = sizeof(xf86DefaultModes) / sizeof(DisplayModeRec);"
+}
diff --git a/xorg-server/hw/xfree86/common/vesamodes b/xorg-server/hw/xfree86/common/vesamodes
index 6644ee6ae..2bc886276 100644
--- a/xorg-server/hw/xfree86/common/vesamodes
+++ b/xorg-server/hw/xfree86/common/vesamodes
@@ -1,111 +1,111 @@
-//
-// Default modes distilled from
-// "VESA and Industry Standards and Guide for Computer Display Monitor
-// Timing", version 1.0, revision 0.8, adopted September 17, 1998.
-//
-// $XFree86: xc/programs/Xserver/hw/xfree86/etc/vesamodes,v 1.3 1999/11/16 03:28:03 tsi Exp $
-
-
-# 640x350 @ 85Hz (VESA) hsync: 37.9kHz
-ModeLine "640x350" 31.5 640 672 736 832 350 382 385 445 +hsync -vsync
-
-# 640x400 @ 85Hz (VESA) hsync: 37.9kHz
-ModeLine "640x400" 31.5 640 672 736 832 400 401 404 445 -hsync +vsync
-
-# 720x400 @ 85Hz (VESA) hsync: 37.9kHz
-ModeLine "720x400" 35.5 720 756 828 936 400 401 404 446 -hsync +vsync
-
-# 640x480 @ 60Hz (Industry standard) hsync: 31.5kHz
-ModeLine "640x480" 25.175 640 656 752 800 480 490 492 525 -hsync -vsync
-
-# 640x480 @ 72Hz (VESA) hsync: 37.9kHz
-ModeLine "640x480" 31.5 640 664 704 832 480 489 492 520 -hsync -vsync
-
-# 640x480 @ 75Hz (VESA) hsync: 37.5kHz
-ModeLine "640x480" 31.5 640 656 720 840 480 481 484 500 -hsync -vsync
-
-# 640x480 @ 85Hz (VESA) hsync: 43.3kHz
-ModeLine "640x480" 36.0 640 696 752 832 480 481 484 509 -hsync -vsync
-
-# 800x600 @ 56Hz (VESA) hsync: 35.2kHz
-ModeLine "800x600" 36.0 800 824 896 1024 600 601 603 625 +hsync +vsync
-
-# 800x600 @ 60Hz (VESA) hsync: 37.9kHz
-ModeLine "800x600" 40.0 800 840 968 1056 600 601 605 628 +hsync +vsync
-
-# 800x600 @ 72Hz (VESA) hsync: 48.1kHz
-ModeLine "800x600" 50.0 800 856 976 1040 600 637 643 666 +hsync +vsync
-
-# 800x600 @ 75Hz (VESA) hsync: 46.9kHz
-ModeLine "800x600" 49.5 800 816 896 1056 600 601 604 625 +hsync +vsync
-
-# 800x600 @ 85Hz (VESA) hsync: 53.7kHz
-ModeLine "800x600" 56.3 800 832 896 1048 600 601 604 631 +hsync +vsync
-
-# 1024x768i @ 43Hz (industry standard) hsync: 35.5kHz
-ModeLine "1024x768" 44.9 1024 1032 1208 1264 768 768 776 817 +hsync +vsync Interlace
-
-# 1024x768 @ 60Hz (VESA) hsync: 48.4kHz
-ModeLine "1024x768" 65.0 1024 1048 1184 1344 768 771 777 806 -hsync -vsync
-
-# 1024x768 @ 70Hz (VESA) hsync: 56.5kHz
-ModeLine "1024x768" 75.0 1024 1048 1184 1328 768 771 777 806 -hsync -vsync
-
-# 1024x768 @ 75Hz (VESA) hsync: 60.0kHz
-ModeLine "1024x768" 78.75 1024 1040 1136 1312 768 769 772 800 +hsync +vsync
-
-# 1024x768 @ 85Hz (VESA) hsync: 68.7kHz
-ModeLine "1024x768" 94.5 1024 1072 1168 1376 768 769 772 808 +hsync +vsync
-
-# 1152x864 @ 75Hz (VESA) hsync: 67.5kHz
-ModeLine "1152x864" 108.0 1152 1216 1344 1600 864 865 868 900 +hsync +vsync
-
-# 1280x960 @ 60Hz (VESA) hsync: 60.0kHz
-ModeLine "1280x960" 108.0 1280 1376 1488 1800 960 961 964 1000 +hsync +vsync
-
-# 1280x960 @ 85Hz (VESA) hsync: 85.9kHz
-ModeLine "1280x960" 148.5 1280 1344 1504 1728 960 961 964 1011 +hsync +vsync
-
-# 1280x1024 @ 60Hz (VESA) hsync: 64.0kHz
-ModeLine "1280x1024" 108.0 1280 1328 1440 1688 1024 1025 1028 1066 +hsync +vsync
-
-# 1280x1024 @ 75Hz (VESA) hsync: 80.0kHz
-ModeLine "1280x1024" 135.0 1280 1296 1440 1688 1024 1025 1028 1066 +hsync +vsync
-
-# 1280x1024 @ 85Hz (VESA) hsync: 91.1kHz
-ModeLine "1280x1024" 157.5 1280 1344 1504 1728 1024 1025 1028 1072 +hsync +vsync
-
-# 1600x1200 @ 60Hz (VESA) hsync: 75.0kHz
-ModeLine "1600x1200" 162.0 1600 1664 1856 2160 1200 1201 1204 1250 +hsync +vsync
-
-# 1600x1200 @ 65Hz (VESA) hsync: 81.3kHz
-ModeLine "1600x1200" 175.5 1600 1664 1856 2160 1200 1201 1204 1250 +hsync +vsync
-
-# 1600x1200 @ 70Hz (VESA) hsync: 87.5kHz
-ModeLine "1600x1200" 189.0 1600 1664 1856 2160 1200 1201 1204 1250 +hsync +vsync
-
-# 1600x1200 @ 75Hz (VESA) hsync: 93.8kHz
-ModeLine "1600x1200" 202.5 1600 1664 1856 2160 1200 1201 1204 1250 +hsync +vsync
-
-# 1600x1200 @ 85Hz (VESA) hsync: 106.3kHz
-ModeLine "1600x1200" 229.5 1600 1664 1856 2160 1200 1201 1204 1250 +hsync +vsync
-
-# 1792x1344 @ 60Hz (VESA) hsync: 83.6kHz
-ModeLine "1792x1344" 204.8 1792 1920 2120 2448 1344 1345 1348 1394 -hsync +vsync
-
-# 1792x1344 @ 75Hz (VESA) hsync: 106.3kHz
-ModeLine "1792x1344" 261.0 1792 1888 2104 2456 1344 1345 1348 1417 -hsync +vsync
-
-# 1856x1392 @ 60Hz (VESA) hsync: 86.3kHz
-ModeLine "1856x1392" 218.3 1856 1952 2176 2528 1392 1393 1396 1439 -hsync +vsync
-
-# 1856x1392 @ 75Hz (VESA) hsync: 112.5kHz
-ModeLine "1856x1392" 288.0 1856 1984 2208 2560 1392 1393 1396 1500 -hsync +vsync
-
-# 1920x1440 @ 60Hz (VESA) hsync: 90.0kHz
-ModeLine "1920x1440" 234.0 1920 2048 2256 2600 1440 1441 1444 1500 -hsync +vsync
-
-# 1920x1440 @ 75Hz (VESA) hsync: 112.5kHz
-ModeLine "1920x1440" 297.0 1920 2064 2288 2640 1440 1441 1444 1500 -hsync +vsync
-
-
+//
+// Default modes distilled from
+// "VESA and Industry Standards and Guide for Computer Display Monitor
+// Timing", version 1.0, revision 0.8, adopted September 17, 1998.
+//
+// $XFree86: xc/programs/Xserver/hw/xfree86/etc/vesamodes,v 1.3 1999/11/16 03:28:03 tsi Exp $
+
+
+# 640x350 @ 85Hz (VESA) hsync: 37.9kHz
+ModeLine "640x350" 31.5 640 672 736 832 350 382 385 445 +hsync -vsync
+
+# 640x400 @ 85Hz (VESA) hsync: 37.9kHz
+ModeLine "640x400" 31.5 640 672 736 832 400 401 404 445 -hsync +vsync
+
+# 720x400 @ 85Hz (VESA) hsync: 37.9kHz
+ModeLine "720x400" 35.5 720 756 828 936 400 401 404 446 -hsync +vsync
+
+# 640x480 @ 60Hz (Industry standard) hsync: 31.5kHz
+ModeLine "640x480" 25.175 640 656 752 800 480 490 492 525 -hsync -vsync
+
+# 640x480 @ 72Hz (VESA) hsync: 37.9kHz
+ModeLine "640x480" 31.5 640 664 704 832 480 489 492 520 -hsync -vsync
+
+# 640x480 @ 75Hz (VESA) hsync: 37.5kHz
+ModeLine "640x480" 31.5 640 656 720 840 480 481 484 500 -hsync -vsync
+
+# 640x480 @ 85Hz (VESA) hsync: 43.3kHz
+ModeLine "640x480" 36.0 640 696 752 832 480 481 484 509 -hsync -vsync
+
+# 800x600 @ 56Hz (VESA) hsync: 35.2kHz
+ModeLine "800x600" 36.0 800 824 896 1024 600 601 603 625 +hsync +vsync
+
+# 800x600 @ 60Hz (VESA) hsync: 37.9kHz
+ModeLine "800x600" 40.0 800 840 968 1056 600 601 605 628 +hsync +vsync
+
+# 800x600 @ 72Hz (VESA) hsync: 48.1kHz
+ModeLine "800x600" 50.0 800 856 976 1040 600 637 643 666 +hsync +vsync
+
+# 800x600 @ 75Hz (VESA) hsync: 46.9kHz
+ModeLine "800x600" 49.5 800 816 896 1056 600 601 604 625 +hsync +vsync
+
+# 800x600 @ 85Hz (VESA) hsync: 53.7kHz
+ModeLine "800x600" 56.3 800 832 896 1048 600 601 604 631 +hsync +vsync
+
+# 1024x768i @ 43Hz (industry standard) hsync: 35.5kHz
+ModeLine "1024x768" 44.9 1024 1032 1208 1264 768 768 776 817 +hsync +vsync Interlace
+
+# 1024x768 @ 60Hz (VESA) hsync: 48.4kHz
+ModeLine "1024x768" 65.0 1024 1048 1184 1344 768 771 777 806 -hsync -vsync
+
+# 1024x768 @ 70Hz (VESA) hsync: 56.5kHz
+ModeLine "1024x768" 75.0 1024 1048 1184 1328 768 771 777 806 -hsync -vsync
+
+# 1024x768 @ 75Hz (VESA) hsync: 60.0kHz
+ModeLine "1024x768" 78.75 1024 1040 1136 1312 768 769 772 800 +hsync +vsync
+
+# 1024x768 @ 85Hz (VESA) hsync: 68.7kHz
+ModeLine "1024x768" 94.5 1024 1072 1168 1376 768 769 772 808 +hsync +vsync
+
+# 1152x864 @ 75Hz (VESA) hsync: 67.5kHz
+ModeLine "1152x864" 108.0 1152 1216 1344 1600 864 865 868 900 +hsync +vsync
+
+# 1280x960 @ 60Hz (VESA) hsync: 60.0kHz
+ModeLine "1280x960" 108.0 1280 1376 1488 1800 960 961 964 1000 +hsync +vsync
+
+# 1280x960 @ 85Hz (VESA) hsync: 85.9kHz
+ModeLine "1280x960" 148.5 1280 1344 1504 1728 960 961 964 1011 +hsync +vsync
+
+# 1280x1024 @ 60Hz (VESA) hsync: 64.0kHz
+ModeLine "1280x1024" 108.0 1280 1328 1440 1688 1024 1025 1028 1066 +hsync +vsync
+
+# 1280x1024 @ 75Hz (VESA) hsync: 80.0kHz
+ModeLine "1280x1024" 135.0 1280 1296 1440 1688 1024 1025 1028 1066 +hsync +vsync
+
+# 1280x1024 @ 85Hz (VESA) hsync: 91.1kHz
+ModeLine "1280x1024" 157.5 1280 1344 1504 1728 1024 1025 1028 1072 +hsync +vsync
+
+# 1600x1200 @ 60Hz (VESA) hsync: 75.0kHz
+ModeLine "1600x1200" 162.0 1600 1664 1856 2160 1200 1201 1204 1250 +hsync +vsync
+
+# 1600x1200 @ 65Hz (VESA) hsync: 81.3kHz
+ModeLine "1600x1200" 175.5 1600 1664 1856 2160 1200 1201 1204 1250 +hsync +vsync
+
+# 1600x1200 @ 70Hz (VESA) hsync: 87.5kHz
+ModeLine "1600x1200" 189.0 1600 1664 1856 2160 1200 1201 1204 1250 +hsync +vsync
+
+# 1600x1200 @ 75Hz (VESA) hsync: 93.8kHz
+ModeLine "1600x1200" 202.5 1600 1664 1856 2160 1200 1201 1204 1250 +hsync +vsync
+
+# 1600x1200 @ 85Hz (VESA) hsync: 106.3kHz
+ModeLine "1600x1200" 229.5 1600 1664 1856 2160 1200 1201 1204 1250 +hsync +vsync
+
+# 1792x1344 @ 60Hz (VESA) hsync: 83.6kHz
+ModeLine "1792x1344" 204.8 1792 1920 2120 2448 1344 1345 1348 1394 -hsync +vsync
+
+# 1792x1344 @ 75Hz (VESA) hsync: 106.3kHz
+ModeLine "1792x1344" 261.0 1792 1888 2104 2456 1344 1345 1348 1417 -hsync +vsync
+
+# 1856x1392 @ 60Hz (VESA) hsync: 86.3kHz
+ModeLine "1856x1392" 218.3 1856 1952 2176 2528 1392 1393 1396 1439 -hsync +vsync
+
+# 1856x1392 @ 75Hz (VESA) hsync: 112.5kHz
+ModeLine "1856x1392" 288.0 1856 1984 2208 2560 1392 1393 1396 1500 -hsync +vsync
+
+# 1920x1440 @ 60Hz (VESA) hsync: 90.0kHz
+ModeLine "1920x1440" 234.0 1920 2048 2256 2600 1440 1441 1444 1500 -hsync +vsync
+
+# 1920x1440 @ 75Hz (VESA) hsync: 112.5kHz
+ModeLine "1920x1440" 297.0 1920 2064 2288 2640 1440 1441 1444 1500 -hsync +vsync
+
+
diff --git a/xorg-server/hw/xfree86/common/xf86Build.h.in b/xorg-server/hw/xfree86/common/xf86Build.h.in
index f4af80637..a4f56b0ae 100644
--- a/xorg-server/hw/xfree86/common/xf86Build.h.in
+++ b/xorg-server/hw/xfree86/common/xf86Build.h.in
@@ -1,2 +1,2 @@
-#define BUILD_DATE @BUILD_DATE@
-#define BUILD_TIME @BUILD_TIME@
+#define BUILD_DATE @BUILD_DATE@
+#define BUILD_TIME @BUILD_TIME@
diff --git a/xorg-server/hw/xfree86/ddc/DDC.HOWTO b/xorg-server/hw/xfree86/ddc/DDC.HOWTO
index 54fbe73ad..1d06ca124 100644
--- a/xorg-server/hw/xfree86/ddc/DDC.HOWTO
+++ b/xorg-server/hw/xfree86/ddc/DDC.HOWTO
@@ -1,97 +1,97 @@
- DDC.HOWTO
-
- This file describes how to add DDC support to a chipset driver.
-
-1) DDC INITIALIZATION
-
- When implementing DDC in the driver one has the choice between
- DDC1 and DDC2.
- DDC1 data is continuously transmitted by a DDC1 capable display
- device. The data is send serially over a data line; the Vsync
- signal serves as clock. Only one EDID 1.x data block can be
- transmitted using DDC1. Since transmission of an EDID1 block
- using a regular Vsync frequency would take up several seconds
- the driver can increase the Vsync frequency to up to 25 kHz as
- soon as it detects DDC1 activity on the data line.
- DDC2 data is transmitted using the I2C protocol. This requires
- an additional clock line. DDC2 is capable of transmitting EDID1
- and EDID2 block as well as a VDIF block on display devices that
- support these.
- Display devices switch into the DDC2 mode as soon as they detect
- activity on the DDC clock line. Once the are in DDC2 mode they
- stop transmitting DDC1 signals until the next power cycle.
-
- Some graphics chipset configurations which are not capable of
- DDC2 might still be able to read DDC1 data. Where available
- DDC2 it is preferable.
-
- All relevant prototypes and defines are in xf86DDC.h.
- DDC2 additionally requires I2C support. The I2C prototypes
- are in xf86i2c.h.
-
- DDC1 Support:
-
- The driver has to provide a read function which waits for the
- end of the next Vsync signal and reads in and returns the status
- of the DDC line:
-
- unsigned int XXX_ddc1Read(ScrnInfoPtr pScrn)
-
- Additionally a function is required to increase the Vsync
- frequency to max. 25 kHz.
-
- void XXX_ddc1SetSpeed(ScrnInfoPtr pScrn, xf86ddcSpeed speed)
-
- If the speed argument is DDC_FAST the function should increase
- the Vsync frequency on DDC_SLOW it should restore the original
- value. For convenience a generic ddc1SetSpeed() function is provided
- in the vga module for VGA-like chipsets.
-
- void vgaHWddc1SetSpeed(ScrnInfoPtr pScrn, sf86ddcSpeed speed).
-
- To read out the DDC1 data the driver should call
-
- xf86MonPtr xf86DoEDID_DDC1(int scrnIndex,
- void (*DDC1SetSpeed)(ScrnInfoPtr, xf86ddcSpeed),
- unsigned int (*DDC1Read)(ScrnInfoPtr))
-
- in PreInit(). DDC1SetSpeed is a pointer to the SetSpeed()
- function, DDC1Read has to point to the DDC1 read function.
- The function will return a pointer to the xf86Monitor structure
- which contains all information retrieved by DDC.
- NULL will be returned on failure.
-
- DDC2 Support
-
- To read out DDC2 information I2C has to be initialized first.
- (See documentation for the i2c module).
- The function
-
- xf86MonPtr xf86DoEDID_DDC2(int scrnIndex, I2CBusPtr pBus)
-
- is provided to read out and process DDC2 data. A pointer
- to the I2CBusRec of the appropriate I2C Bus has to be passed
- as the second argument.
- The function will return a pointer to the xf86Monitor structure
- which contains all information retrieved by DDC.
- NULL will be returned on failure.
-
- Printing monitor parameters
-
- To print out the information contained in the xf86Monitor
- structure the function
-
- xf86MonPtr xf86PrintEDID(xf86MonPtr monitor)
-
- is provided.
-
- Further processing of the xf86Monitor structure is not yet
- implemented. However, it is planned to use the information
- about video modes, gamma values etc.
- Therefore it is strongly recommended to read out DDC data
- before any video mode processing is done.
-
-
-
-
-$XFree86: xc/programs/Xserver/hw/xfree86/ddc/DDC.HOWTO,v 1.2 1998/12/06 13:30:39 dawes Exp $
+ DDC.HOWTO
+
+ This file describes how to add DDC support to a chipset driver.
+
+1) DDC INITIALIZATION
+
+ When implementing DDC in the driver one has the choice between
+ DDC1 and DDC2.
+ DDC1 data is continuously transmitted by a DDC1 capable display
+ device. The data is send serially over a data line; the Vsync
+ signal serves as clock. Only one EDID 1.x data block can be
+ transmitted using DDC1. Since transmission of an EDID1 block
+ using a regular Vsync frequency would take up several seconds
+ the driver can increase the Vsync frequency to up to 25 kHz as
+ soon as it detects DDC1 activity on the data line.
+ DDC2 data is transmitted using the I2C protocol. This requires
+ an additional clock line. DDC2 is capable of transmitting EDID1
+ and EDID2 block as well as a VDIF block on display devices that
+ support these.
+ Display devices switch into the DDC2 mode as soon as they detect
+ activity on the DDC clock line. Once the are in DDC2 mode they
+ stop transmitting DDC1 signals until the next power cycle.
+
+ Some graphics chipset configurations which are not capable of
+ DDC2 might still be able to read DDC1 data. Where available
+ DDC2 it is preferable.
+
+ All relevant prototypes and defines are in xf86DDC.h.
+ DDC2 additionally requires I2C support. The I2C prototypes
+ are in xf86i2c.h.
+
+ DDC1 Support:
+
+ The driver has to provide a read function which waits for the
+ end of the next Vsync signal and reads in and returns the status
+ of the DDC line:
+
+ unsigned int XXX_ddc1Read(ScrnInfoPtr pScrn)
+
+ Additionally a function is required to increase the Vsync
+ frequency to max. 25 kHz.
+
+ void XXX_ddc1SetSpeed(ScrnInfoPtr pScrn, xf86ddcSpeed speed)
+
+ If the speed argument is DDC_FAST the function should increase
+ the Vsync frequency on DDC_SLOW it should restore the original
+ value. For convenience a generic ddc1SetSpeed() function is provided
+ in the vga module for VGA-like chipsets.
+
+ void vgaHWddc1SetSpeed(ScrnInfoPtr pScrn, sf86ddcSpeed speed).
+
+ To read out the DDC1 data the driver should call
+
+ xf86MonPtr xf86DoEDID_DDC1(int scrnIndex,
+ void (*DDC1SetSpeed)(ScrnInfoPtr, xf86ddcSpeed),
+ unsigned int (*DDC1Read)(ScrnInfoPtr))
+
+ in PreInit(). DDC1SetSpeed is a pointer to the SetSpeed()
+ function, DDC1Read has to point to the DDC1 read function.
+ The function will return a pointer to the xf86Monitor structure
+ which contains all information retrieved by DDC.
+ NULL will be returned on failure.
+
+ DDC2 Support
+
+ To read out DDC2 information I2C has to be initialized first.
+ (See documentation for the i2c module).
+ The function
+
+ xf86MonPtr xf86DoEDID_DDC2(int scrnIndex, I2CBusPtr pBus)
+
+ is provided to read out and process DDC2 data. A pointer
+ to the I2CBusRec of the appropriate I2C Bus has to be passed
+ as the second argument.
+ The function will return a pointer to the xf86Monitor structure
+ which contains all information retrieved by DDC.
+ NULL will be returned on failure.
+
+ Printing monitor parameters
+
+ To print out the information contained in the xf86Monitor
+ structure the function
+
+ xf86MonPtr xf86PrintEDID(xf86MonPtr monitor)
+
+ is provided.
+
+ Further processing of the xf86Monitor structure is not yet
+ implemented. However, it is planned to use the information
+ about video modes, gamma values etc.
+ Therefore it is strongly recommended to read out DDC data
+ before any video mode processing is done.
+
+
+
+
+$XFree86: xc/programs/Xserver/hw/xfree86/ddc/DDC.HOWTO,v 1.2 1998/12/06 13:30:39 dawes Exp $
diff --git a/xorg-server/hw/xfree86/ddc/Makefile.am b/xorg-server/hw/xfree86/ddc/Makefile.am
index 0db5d833f..93ea4a2a5 100644
--- a/xorg-server/hw/xfree86/ddc/Makefile.am
+++ b/xorg-server/hw/xfree86/ddc/Makefile.am
@@ -1,11 +1,11 @@
-sdk_HEADERS = edid.h xf86DDC.h
-
-noinst_LTLIBRARIES = libddc.la
-
-libddc_la_SOURCES = ddc.c interpret_edid.c print_edid.c ddcProperty.c
-
-INCLUDES = $(XORG_INCS) -I$(srcdir)/../i2c
-
-AM_CFLAGS = $(DIX_CFLAGS) $(XORG_CFLAGS)
-
-EXTRA_DIST = DDC.HOWTO
+sdk_HEADERS = edid.h xf86DDC.h
+
+noinst_LTLIBRARIES = libddc.la
+
+libddc_la_SOURCES = ddc.c interpret_edid.c print_edid.c ddcProperty.c
+
+INCLUDES = $(XORG_INCS) -I$(srcdir)/../i2c
+
+AM_CFLAGS = $(DIX_CFLAGS) $(XORG_CFLAGS)
+
+EXTRA_DIST = DDC.HOWTO
diff --git a/xorg-server/hw/xfree86/fbdevhw/README b/xorg-server/hw/xfree86/fbdevhw/README
index 65ca06033..27cc337d4 100644
--- a/xorg-server/hw/xfree86/fbdevhw/README
+++ b/xorg-server/hw/xfree86/fbdevhw/README
@@ -1,16 +1,16 @@
-
-This is a submodule to access linux framebuffer devices.
-It is supported to work as helper module (like vgahw)
-for the chipset drivers. There are functions for
-saving/restoring/setting video modes, set palette entries,
-and a few more helper functions. Some of them can be
-hooked directly into ScrnInfoRec.
-
-In ../drivers/fbdev is a "chipset" driver. It is a simple,
-non-accelerated and hardware-independent driver which works
-on top of this fbdevhw submodule.
-
- Gerd
-
---
-Gerd Knorr <kraxel@goldbach.in-berlin.de>
+
+This is a submodule to access linux framebuffer devices.
+It is supported to work as helper module (like vgahw)
+for the chipset drivers. There are functions for
+saving/restoring/setting video modes, set palette entries,
+and a few more helper functions. Some of them can be
+hooked directly into ScrnInfoRec.
+
+In ../drivers/fbdev is a "chipset" driver. It is a simple,
+non-accelerated and hardware-independent driver which works
+on top of this fbdevhw submodule.
+
+ Gerd
+
+--
+Gerd Knorr <kraxel@goldbach.in-berlin.de>
diff --git a/xorg-server/hw/xfree86/i2c/i2c_def.h b/xorg-server/hw/xfree86/i2c/i2c_def.h
index e6a4e039e..140a071d6 100644
--- a/xorg-server/hw/xfree86/i2c/i2c_def.h
+++ b/xorg-server/hw/xfree86/i2c/i2c_def.h
@@ -1,6 +1,6 @@
-#ifndef __I2C_DEF_H__
-#define __I2C_DEF_H__
-
-#include "xf86i2c.h"
-
-#endif
+#ifndef __I2C_DEF_H__
+#define __I2C_DEF_H__
+
+#include "xf86i2c.h"
+
+#endif
diff --git a/xorg-server/hw/xfree86/int10/INT10.HOWTO b/xorg-server/hw/xfree86/int10/INT10.HOWTO
index f2f08ceec..e2154c1c3 100644
--- a/xorg-server/hw/xfree86/int10/INT10.HOWTO
+++ b/xorg-server/hw/xfree86/int10/INT10.HOWTO
@@ -1,344 +1,344 @@
-
- INT10 X86 Real Mode executor
- =============================
-
- PRELIMINARY
-
-INT10 is a XFree86 module for soft-booting and executing real mode
-int10 BIOS calls. The BIOS call code is largely untested, yet.
-
-1. Usage
-========
-
-To use the int10 module in a driver the header file
-xfree86/os-support/int10/xf86int10.h must be included.
-
- a. Initialization
- -----------------
-
-The int10-executer gets initialized by calling:
-
- xf86Int10InfoPtr xf86InitInt10(int entityIndex);
-
-The function will soft-boot any non-primary device and return a
-pointer to a xf86Int10InfoRec on success. If anything fails or if
-int10 execution is disabled by an option in the device section NULL
-will be returned. The driver should store this pointer for later
-calls to other int10 module functions.
-
- b. Memory allocation
- --------------------
-
-To allocate memory in the real mode execution environment
-
- void * xf86Int10AllocPages(xf86Int10InfoPtr pInt,int num, int *off);
-
-can be called. It allocates num consecutive pagesize chunks. It
-returns the address of the allocated area. off is set to its offset in
-the real mode memory space.
-
- void xf86Int10FreePages(xf86Int10InfoPtr pInt, void *pbase, int num);
-
-Is used to free num pages beginning at pbase.
-
- c. Doing int10 BIOS calls
- -------------------------
-
-The BIOS call is executed by calling:
-
- void xf86ExecX86int10(xf86Int10InfoPtr pInt);
-
-The number of the interrupt (normally 10) and the initial values of
-the ax, bx, cx, dx, si, di and es x86-CPU registers can be set in the
-xf86Int10InfoRec passed to the function. On return this structure
-contains the exit values of the registers listed above and the CPU
-flag register.
-
- d. De-initializing
- -----------------
-
-If no further int10 calls are required for a certain chipset
-the driver should call:
-
- void xf86FreeInt10(xf86Int10InfoPtr pInt);
-
-to free the memory allocated for real mode int10 calls.
-
-
-2. Porting issues
-=================
-
-The int10 real mode executor is designed to run on top of various x86
-CPU emulators as well as in vm86 mode of a real x86 CPU. If used with
-a CPU emulator the emulator and CPU specific interfaces can be held
-separate thus requiring minimal efforts to port the int10 module to
-new platforms. Currently an interface to the x86emu real mode
-emulator is provided. Since details of setting up and running the
-vm86 mode is platform dependent both the platform dependent
-environment and the emulation layer have to be ported. Several helper
-functions are provided for that.
-
-A CPU emulator should meet certain requirements to be usable
-for the INT10 executor:
-
-1. It must trap calls to intXX instructions and pass execution to an
- external function which is allowed to modify CPU registers
- including the instruction pointer (IP) before returning to the
- emulator for continuing execution. When the external function is
- called the IP must point to the instruction past the intXX call.
-
-2. The emulator should use externally provided functions to handle
- PIO.
-
-3. The emulator should be able to use externally provided functions
- to access memory from the real mode memory environment. Note, that
- the vm86 mode usually requires one hunk of consecutive memory
- starting at address 0 in the process virtual memory space. Thus if
- this mode is to be used, the OS environment has to be able to provide
- that, ie. it must be able to remap the processes virtual memory space
- onto itself. If the emulator is able to handle memory access thru
- externally provided functions the real mode process memory can be
- located anywhere in the processes virtual memory. It does not even
- have to be consecutive.
-
-4. The executor should terminate on encountering a 'hlt' instruction.
-
-
-Functions to implement:
-
-To simplify development the code has been split into a general setup
-part and an emulator specific one. A generic setup code is provided in
-generic.c. It should be usable with any emulator satisfying the
-conditions mentioned above. Therefore the following section on int10
-setup may be skipped when porting int10 to new emulator.
-
-If the vm86() is to be used no memory access functions can be used.
-Therefore the layout of the real mode memory image has to meet certain
-requirements. Therefore when porting to other platforms a new setup
-code may have to be designed, too. The following section will give
-guidelines how this may be done. A sample implementation using SysV
-IPC to map the appropriate real mode memory image to address 0 in
-virtual address space just prior to execution may be found in
-xfree86/os-support/linux/int10/linux.c.
-
-On non-PC like platforms emulation of certain PC features such as
-initialization of BIOS int vectors, sys_BIOS constants or PCI config
-method 1 can be turned on by defining _PC.
-
-I. Setup Code
--------------
-
-This sets up the real mode memory image, calls the emulator to POST
-the chipset if required and maintains memory allocations in real mode
-address space.
-
-1. xf86Int10InfoPtr xf86InitInt10(int entityIndex);
-
-This function should first find the screen assigned to the entity
-carrying entitiyIndex and then call
-
- Bool int10skip(ScrnInfoPtr pScrn)
-
-to find out if the user has requested not to initialize int10. If so
-xf86InitInt10() should return NULL. Otherwise an xf86Int10InfoRec
-should be allocated. This structure contains the following fields:
-
- a. int entityIndex - index of the entity whose BIOS is to be
- executed.
- b. int scrnIndex - index of the screen assigned the entity.
- c. pointer cpuRegs - pointer to a emulator/vm86-mode private
- structure. May hold cpu register values
- for the emulator.
- d. CARD16 BIOSseg - Video BIOS segment address.
- e. pointer private - pointer to a os specific data structure.
- f. struct _int10Mem* - pointer to a structure to hold the memory
- access functions for use by an emulator.
- g. int num - number of the int to be called.
- h. int ax..es,flags - CPU register values to pass to int-call.
-
-The Init function should initialize a-f. To initialize the emulator
-specific execute environment the function
-
- Bool xf86Int10ExecSetup(xf86Int10InfoPtr pInt)
-
-should be called. If this function returns FALSE any already allocated
-memory should be freed and xf86Int10Init(0 should exit returning NULL.
-
-If the platform has a PC like system BIOS it may be copied to or
-mapped into memory locations SYS_BIOS to SYS_SIZE-1 of the real mode
-memory environment of this process. Otherwise the helper function:
-
-int setup_system_bios(CARD32 base_addr);
-
-may be called to set up a rudimentary system BIOS sufficient to be
-used to boot video BIOSes. base_addr specifies the virtual address
-corresponding to SYS_BIOS in the real mode environment. If a PC-like
-int vector and BIOS data area is available it should be copied to 0 to
-LOW_PAGE_SIZE of the entities real mode environment. In this case the
-video interrupt related entries should be reset for all non-primary
-cards by calling:
-
-void reset_int_vect(xf86Int10InfoPtr pInt); To initialize the
-
-correct video BIOS entry points the BIOS must be warm-booted. If no
-PC-like int vector is available one can be set up by calling
-
-void setup_int_vect(xf86Int10InfoPtr pInt);
-
-In this case the video BIOS has to be warm-booted always. If the
-video BIOS for this entity has been installed during boot it may be
-mapped (or copied) directly to the correct address in the real mode
-memory environment. Otherwise
-
-int mapPciRom(xf86Int10InfoPtr pInt, unsigned char * address);
-
-should be called to copy the BIOS image from PCI ROM. 'address'
-specifies the address this image should be copied to. Sufficient space
-to hold an entire BIOS image should be allocated prior to calling
-mapPciRom(). This function will return the size of the BIOS image in
-bytes if it was able to successfully copy the image and 0
-otherwise. To create a well defined point to exit the softbooter
-
-void set_return_trap(xf86Int10Ptr pInt);
-
-may be called. It sets up a 'hlt' instruction in the emulator memory
-just above the BIOS variable area. Before entering real mode execution
-this address will be pushed onto the return stack. If the BIOS needs
-to be warm-booted this should be done before leaving xf86InitInt10()
-by setting num in the xf86Int10InfoRec to 0xe6 and calling
-
-void xf86ExecX86int10(xf86Int10IfoPtr pInt);
-
-The implementation of this function will be discussed below. This
-function should be wrapped by calls to void LockLegacyVGA(screen,
-legacyVGAPtr vga); and void UnlockLegacyVGA(screen, legacyVGAPtr vga);
-The struct vga is used to hold the state of the legacy VGA access
-registers if a legacy VGA device exists. xf86InitInt10() should
-return a pointer to the xf86Int10InfoRec allocated.
-
-2. Bool MapCurrentInt10(xf86Int10InfoPtr pInt);
-
-In case a platform specific mapping has to be performed to map the
-memory allocated for the real mode memory environment into a specific
-location prior to executing the x86 real mode code a function
-
- Bool MapCurrentInt10(xf86Int10InfoPtr pInt);
-
-has to be provided. It will be called by a helper function whenever
-the active entity changes. If the vm86 mode is used it is most likely
-that the 1MB real mode memory space located somewhere in the processes
-virtual memory will have to be remapped to address 0 of the virtual
-memory space.
-
-3. void xf86FreeInt10(xf86Int10InfoPtr pInt);
-
-To free all memory allocated for video BIOS calls of a specific entity
-the function
-
- void xf86FreeInt10(xf86Int10InfoPtr pInt);
-
-should be provided. If the entity to be freed was mapped by
-MapCurrentInt10() this mapping needs to be undone also.
-
-4.
- void * xf86Int10AllocPages(xf86Int10InfoPtr pInt,int num, int *off)
- void xf86Int10FreePages(xf86Int10InfoPtr pInt, void *pbase, int num)
-
-xf86Int10AllocPages() should allocate 'num' consecutive page-size
-chunks of memory. In real mode memory space this range needs to occupy
-consecutive addresses, too. The function must return the address of
-this memory. The offset in real mode memory needs to be returned in
-'off'. If no block of 'num' pages are available the function should
-return NULL.
-
-xf86Int10FreePages() will free the 'num' pages starting at 'pbase'.
-'num' is equal to the number of pages allocated by a single
-xf86Int10AllocatePages() call. 'pbase' is the address of the range
-previously returned by xf86Int10AllocatePages().
-
-II. Emulator specific functions
--------------------------------
-
-1. Bool xf86Int10ExecSetup(xf86Int10InfoPtr pInt);
-
-This function will be called from xf86InitInt10(). It may be used to
-set up the static emulator specific part of the real mode
-environment. On success it should return TRUE.
-
-2. xf86ExecX86int10(xf86Int10InfoPtr pInt);
-
-This function gets called to execute an int call. It may call the
-helper function:
-
- void setup_int(xf86Int10InfoPrt pInt);
-
-to copy the register values to the emulator specific locations and to
-set up the non-static real mode execution environment. On return from
-setup_int() 'Int10Current' holds a pointer to the current
-xf86Int10InfoRec.
-
-It should start execution by calling
-
- Bool int_handler(xf86Int10InfoPtr pInt);
-
-and if this function returns TRUE it should call whatever necessary to
-continue execution until a 'hlt' instruction is encountered. To copy
-the resulting register values back to the xf86Int10InfoRec structure
-
- void finish_int(xf86Int10InfoPtr pInt);
-
-should be called.
-
-Helper functions are provided to aid the implementation of a vm86
-call:
-
- Bool vm86_GP_fault(xf86Int10InfoPtr pInt);
-
-This function handles instructions which cause a vm86 call to
-trap. PIO access is handled by the in/out calls as defined in
-compiler.h. Optionally the PIO instructions can be logged by defining
-PRINT_PORT in xf86int10.h. This is meant for debugging purposes.
-
-Unknown instructions and 'hlt' cause vm86_GP_fault() to return
-FALSE. Otherwise TRUE is returned.
-
-Note: This function is currently based on the Linux vm86 call. It
-might have to be modified or even rewritten for other OS. So your
-milage may vary.
-
-Functions to dump memory, code, xf86 CPU register values and stack are
-also provided. Take a look at helper.c To view a memory range the
-function
-
- void dprint(unsigned long start, unsigned long size)
-
-is provided. The use should be self explanatory.
-
-Register and memory access functions are provided in helper_mem.c.
-The PIO register access functions can trap access to PCI config space
-access register (config method 1) if _PC is not defined.
-
-A header file 'defines.h' is required to define OS/emulator specific
-ways to access memory and xf86 CPU registers: Defines need to be
-provided for memory byte/work/long read/write access
-(MEM_RB(name,addr),MEM_RW(name,addr),MEM_RL(name,addr),
-MEM_WB(name,addr,val),MEM_WL(name,addr,val),MEM_WL(name,addr,val)) of
-the real mode memory environment. 'name' will contain a pointer to the
-current xf86Int10InfoRec. Currently defines are available for
-vm86-mode under Linux and x86emu. They may be activated by defining
-_X86EMU or _VM86_LINUX respectively.
-
-Note: Emulators usually are not able to pass this pointer when calling
-memory access functions. In this case a global variable should be
-defined which can hold this pointer. This variable can be set in
-MapCurrentInt10(). It also must be set in xf86InitInt10() if this
-function calls the memory access functions either directly or by
-calling xf86ExecX86int10(pInt). Defines to access the emulator
-specific xf86 CPU register locations are also required:
-X86_EAX,...,X86_EFLAGS for access of the full 32 bit registers,
-X86_AX...X86_FLAGS for access of the 16 bit registers and
-XF86_AL,XF86_BL,XF86_CL,XF86_DL to access the lower byte of the
-AX,BX,CX and DX register.
-
-
-$XFree86: xc/programs/Xserver/hw/xfree86/int10/INT10.HOWTO,v 1.2 2000/02/08 13:13:22 eich Exp $
+
+ INT10 X86 Real Mode executor
+ =============================
+
+ PRELIMINARY
+
+INT10 is a XFree86 module for soft-booting and executing real mode
+int10 BIOS calls. The BIOS call code is largely untested, yet.
+
+1. Usage
+========
+
+To use the int10 module in a driver the header file
+xfree86/os-support/int10/xf86int10.h must be included.
+
+ a. Initialization
+ -----------------
+
+The int10-executer gets initialized by calling:
+
+ xf86Int10InfoPtr xf86InitInt10(int entityIndex);
+
+The function will soft-boot any non-primary device and return a
+pointer to a xf86Int10InfoRec on success. If anything fails or if
+int10 execution is disabled by an option in the device section NULL
+will be returned. The driver should store this pointer for later
+calls to other int10 module functions.
+
+ b. Memory allocation
+ --------------------
+
+To allocate memory in the real mode execution environment
+
+ void * xf86Int10AllocPages(xf86Int10InfoPtr pInt,int num, int *off);
+
+can be called. It allocates num consecutive pagesize chunks. It
+returns the address of the allocated area. off is set to its offset in
+the real mode memory space.
+
+ void xf86Int10FreePages(xf86Int10InfoPtr pInt, void *pbase, int num);
+
+Is used to free num pages beginning at pbase.
+
+ c. Doing int10 BIOS calls
+ -------------------------
+
+The BIOS call is executed by calling:
+
+ void xf86ExecX86int10(xf86Int10InfoPtr pInt);
+
+The number of the interrupt (normally 10) and the initial values of
+the ax, bx, cx, dx, si, di and es x86-CPU registers can be set in the
+xf86Int10InfoRec passed to the function. On return this structure
+contains the exit values of the registers listed above and the CPU
+flag register.
+
+ d. De-initializing
+ -----------------
+
+If no further int10 calls are required for a certain chipset
+the driver should call:
+
+ void xf86FreeInt10(xf86Int10InfoPtr pInt);
+
+to free the memory allocated for real mode int10 calls.
+
+
+2. Porting issues
+=================
+
+The int10 real mode executor is designed to run on top of various x86
+CPU emulators as well as in vm86 mode of a real x86 CPU. If used with
+a CPU emulator the emulator and CPU specific interfaces can be held
+separate thus requiring minimal efforts to port the int10 module to
+new platforms. Currently an interface to the x86emu real mode
+emulator is provided. Since details of setting up and running the
+vm86 mode is platform dependent both the platform dependent
+environment and the emulation layer have to be ported. Several helper
+functions are provided for that.
+
+A CPU emulator should meet certain requirements to be usable
+for the INT10 executor:
+
+1. It must trap calls to intXX instructions and pass execution to an
+ external function which is allowed to modify CPU registers
+ including the instruction pointer (IP) before returning to the
+ emulator for continuing execution. When the external function is
+ called the IP must point to the instruction past the intXX call.
+
+2. The emulator should use externally provided functions to handle
+ PIO.
+
+3. The emulator should be able to use externally provided functions
+ to access memory from the real mode memory environment. Note, that
+ the vm86 mode usually requires one hunk of consecutive memory
+ starting at address 0 in the process virtual memory space. Thus if
+ this mode is to be used, the OS environment has to be able to provide
+ that, ie. it must be able to remap the processes virtual memory space
+ onto itself. If the emulator is able to handle memory access thru
+ externally provided functions the real mode process memory can be
+ located anywhere in the processes virtual memory. It does not even
+ have to be consecutive.
+
+4. The executor should terminate on encountering a 'hlt' instruction.
+
+
+Functions to implement:
+
+To simplify development the code has been split into a general setup
+part and an emulator specific one. A generic setup code is provided in
+generic.c. It should be usable with any emulator satisfying the
+conditions mentioned above. Therefore the following section on int10
+setup may be skipped when porting int10 to new emulator.
+
+If the vm86() is to be used no memory access functions can be used.
+Therefore the layout of the real mode memory image has to meet certain
+requirements. Therefore when porting to other platforms a new setup
+code may have to be designed, too. The following section will give
+guidelines how this may be done. A sample implementation using SysV
+IPC to map the appropriate real mode memory image to address 0 in
+virtual address space just prior to execution may be found in
+xfree86/os-support/linux/int10/linux.c.
+
+On non-PC like platforms emulation of certain PC features such as
+initialization of BIOS int vectors, sys_BIOS constants or PCI config
+method 1 can be turned on by defining _PC.
+
+I. Setup Code
+-------------
+
+This sets up the real mode memory image, calls the emulator to POST
+the chipset if required and maintains memory allocations in real mode
+address space.
+
+1. xf86Int10InfoPtr xf86InitInt10(int entityIndex);
+
+This function should first find the screen assigned to the entity
+carrying entitiyIndex and then call
+
+ Bool int10skip(ScrnInfoPtr pScrn)
+
+to find out if the user has requested not to initialize int10. If so
+xf86InitInt10() should return NULL. Otherwise an xf86Int10InfoRec
+should be allocated. This structure contains the following fields:
+
+ a. int entityIndex - index of the entity whose BIOS is to be
+ executed.
+ b. int scrnIndex - index of the screen assigned the entity.
+ c. pointer cpuRegs - pointer to a emulator/vm86-mode private
+ structure. May hold cpu register values
+ for the emulator.
+ d. CARD16 BIOSseg - Video BIOS segment address.
+ e. pointer private - pointer to a os specific data structure.
+ f. struct _int10Mem* - pointer to a structure to hold the memory
+ access functions for use by an emulator.
+ g. int num - number of the int to be called.
+ h. int ax..es,flags - CPU register values to pass to int-call.
+
+The Init function should initialize a-f. To initialize the emulator
+specific execute environment the function
+
+ Bool xf86Int10ExecSetup(xf86Int10InfoPtr pInt)
+
+should be called. If this function returns FALSE any already allocated
+memory should be freed and xf86Int10Init(0 should exit returning NULL.
+
+If the platform has a PC like system BIOS it may be copied to or
+mapped into memory locations SYS_BIOS to SYS_SIZE-1 of the real mode
+memory environment of this process. Otherwise the helper function:
+
+int setup_system_bios(CARD32 base_addr);
+
+may be called to set up a rudimentary system BIOS sufficient to be
+used to boot video BIOSes. base_addr specifies the virtual address
+corresponding to SYS_BIOS in the real mode environment. If a PC-like
+int vector and BIOS data area is available it should be copied to 0 to
+LOW_PAGE_SIZE of the entities real mode environment. In this case the
+video interrupt related entries should be reset for all non-primary
+cards by calling:
+
+void reset_int_vect(xf86Int10InfoPtr pInt); To initialize the
+
+correct video BIOS entry points the BIOS must be warm-booted. If no
+PC-like int vector is available one can be set up by calling
+
+void setup_int_vect(xf86Int10InfoPtr pInt);
+
+In this case the video BIOS has to be warm-booted always. If the
+video BIOS for this entity has been installed during boot it may be
+mapped (or copied) directly to the correct address in the real mode
+memory environment. Otherwise
+
+int mapPciRom(xf86Int10InfoPtr pInt, unsigned char * address);
+
+should be called to copy the BIOS image from PCI ROM. 'address'
+specifies the address this image should be copied to. Sufficient space
+to hold an entire BIOS image should be allocated prior to calling
+mapPciRom(). This function will return the size of the BIOS image in
+bytes if it was able to successfully copy the image and 0
+otherwise. To create a well defined point to exit the softbooter
+
+void set_return_trap(xf86Int10Ptr pInt);
+
+may be called. It sets up a 'hlt' instruction in the emulator memory
+just above the BIOS variable area. Before entering real mode execution
+this address will be pushed onto the return stack. If the BIOS needs
+to be warm-booted this should be done before leaving xf86InitInt10()
+by setting num in the xf86Int10InfoRec to 0xe6 and calling
+
+void xf86ExecX86int10(xf86Int10IfoPtr pInt);
+
+The implementation of this function will be discussed below. This
+function should be wrapped by calls to void LockLegacyVGA(screen,
+legacyVGAPtr vga); and void UnlockLegacyVGA(screen, legacyVGAPtr vga);
+The struct vga is used to hold the state of the legacy VGA access
+registers if a legacy VGA device exists. xf86InitInt10() should
+return a pointer to the xf86Int10InfoRec allocated.
+
+2. Bool MapCurrentInt10(xf86Int10InfoPtr pInt);
+
+In case a platform specific mapping has to be performed to map the
+memory allocated for the real mode memory environment into a specific
+location prior to executing the x86 real mode code a function
+
+ Bool MapCurrentInt10(xf86Int10InfoPtr pInt);
+
+has to be provided. It will be called by a helper function whenever
+the active entity changes. If the vm86 mode is used it is most likely
+that the 1MB real mode memory space located somewhere in the processes
+virtual memory will have to be remapped to address 0 of the virtual
+memory space.
+
+3. void xf86FreeInt10(xf86Int10InfoPtr pInt);
+
+To free all memory allocated for video BIOS calls of a specific entity
+the function
+
+ void xf86FreeInt10(xf86Int10InfoPtr pInt);
+
+should be provided. If the entity to be freed was mapped by
+MapCurrentInt10() this mapping needs to be undone also.
+
+4.
+ void * xf86Int10AllocPages(xf86Int10InfoPtr pInt,int num, int *off)
+ void xf86Int10FreePages(xf86Int10InfoPtr pInt, void *pbase, int num)
+
+xf86Int10AllocPages() should allocate 'num' consecutive page-size
+chunks of memory. In real mode memory space this range needs to occupy
+consecutive addresses, too. The function must return the address of
+this memory. The offset in real mode memory needs to be returned in
+'off'. If no block of 'num' pages are available the function should
+return NULL.
+
+xf86Int10FreePages() will free the 'num' pages starting at 'pbase'.
+'num' is equal to the number of pages allocated by a single
+xf86Int10AllocatePages() call. 'pbase' is the address of the range
+previously returned by xf86Int10AllocatePages().
+
+II. Emulator specific functions
+-------------------------------
+
+1. Bool xf86Int10ExecSetup(xf86Int10InfoPtr pInt);
+
+This function will be called from xf86InitInt10(). It may be used to
+set up the static emulator specific part of the real mode
+environment. On success it should return TRUE.
+
+2. xf86ExecX86int10(xf86Int10InfoPtr pInt);
+
+This function gets called to execute an int call. It may call the
+helper function:
+
+ void setup_int(xf86Int10InfoPrt pInt);
+
+to copy the register values to the emulator specific locations and to
+set up the non-static real mode execution environment. On return from
+setup_int() 'Int10Current' holds a pointer to the current
+xf86Int10InfoRec.
+
+It should start execution by calling
+
+ Bool int_handler(xf86Int10InfoPtr pInt);
+
+and if this function returns TRUE it should call whatever necessary to
+continue execution until a 'hlt' instruction is encountered. To copy
+the resulting register values back to the xf86Int10InfoRec structure
+
+ void finish_int(xf86Int10InfoPtr pInt);
+
+should be called.
+
+Helper functions are provided to aid the implementation of a vm86
+call:
+
+ Bool vm86_GP_fault(xf86Int10InfoPtr pInt);
+
+This function handles instructions which cause a vm86 call to
+trap. PIO access is handled by the in/out calls as defined in
+compiler.h. Optionally the PIO instructions can be logged by defining
+PRINT_PORT in xf86int10.h. This is meant for debugging purposes.
+
+Unknown instructions and 'hlt' cause vm86_GP_fault() to return
+FALSE. Otherwise TRUE is returned.
+
+Note: This function is currently based on the Linux vm86 call. It
+might have to be modified or even rewritten for other OS. So your
+milage may vary.
+
+Functions to dump memory, code, xf86 CPU register values and stack are
+also provided. Take a look at helper.c To view a memory range the
+function
+
+ void dprint(unsigned long start, unsigned long size)
+
+is provided. The use should be self explanatory.
+
+Register and memory access functions are provided in helper_mem.c.
+The PIO register access functions can trap access to PCI config space
+access register (config method 1) if _PC is not defined.
+
+A header file 'defines.h' is required to define OS/emulator specific
+ways to access memory and xf86 CPU registers: Defines need to be
+provided for memory byte/work/long read/write access
+(MEM_RB(name,addr),MEM_RW(name,addr),MEM_RL(name,addr),
+MEM_WB(name,addr,val),MEM_WL(name,addr,val),MEM_WL(name,addr,val)) of
+the real mode memory environment. 'name' will contain a pointer to the
+current xf86Int10InfoRec. Currently defines are available for
+vm86-mode under Linux and x86emu. They may be activated by defining
+_X86EMU or _VM86_LINUX respectively.
+
+Note: Emulators usually are not able to pass this pointer when calling
+memory access functions. In this case a global variable should be
+defined which can hold this pointer. This variable can be set in
+MapCurrentInt10(). It also must be set in xf86InitInt10() if this
+function calls the memory access functions either directly or by
+calling xf86ExecX86int10(pInt). Defines to access the emulator
+specific xf86 CPU register locations are also required:
+X86_EAX,...,X86_EFLAGS for access of the full 32 bit registers,
+X86_AX...X86_FLAGS for access of the 16 bit registers and
+XF86_AL,XF86_BL,XF86_CL,XF86_DL to access the lower byte of the
+AX,BX,CX and DX register.
+
+
+$XFree86: xc/programs/Xserver/hw/xfree86/int10/INT10.HOWTO,v 1.2 2000/02/08 13:13:22 eich Exp $
diff --git a/xorg-server/hw/xfree86/int10/Makefile.am b/xorg-server/hw/xfree86/int10/Makefile.am
index 58e1d0f25..f5ece69ef 100644
--- a/xorg-server/hw/xfree86/int10/Makefile.am
+++ b/xorg-server/hw/xfree86/int10/Makefile.am
@@ -1,46 +1,46 @@
-module_LTLIBRARIES = libint10.la
-
-sdk_HEADERS = xf86int10.h
-
-EXTRA_CFLAGS =
-
-libint10_la_LDFLAGS = -avoid-version
-libint10_la_LIBADD = $(PCIACCESS_LIBS)
-
-COMMON_SOURCES = \
- helper_exec.c \
- helper_mem.c \
- xf86int10.c \
- xf86int10module.c
-
-if I386_VIDEO
-I386_VIDEO_CFLAGS = -D_PC
-endif
-
-if INT10_VM86
-AM_CFLAGS = $(I386_VIDEO_CFLAGS) -D_VM86_LINUX $(DIX_CFLAGS) $(XORG_CFLAGS) $(EXTRA_CFLAGS)
-INCLUDES = $(XORG_INCS)
-libint10_la_SOURCES = \
- $(COMMON_SOURCES) \
- $(srcdir)/../os-support/linux/int10/vm86/linux_vm86.c \
- $(srcdir)/../os-support/linux/int10/linux.c
-endif
-
-if INT10_X86EMU
-AM_CFLAGS = $(I386_VIDEO_CFLAGS) -D_X86EMU -DNO_SYS_HEADERS \
- $(XORG_CFLAGS) $(EXTRA_CFLAGS) $(DIX_CFLAGS)
-INCLUDES = $(XORG_INCS) -I$(srcdir)/../x86emu
-libint10_la_SOURCES = \
- $(COMMON_SOURCES) \
- xf86x86emu.c \
- generic.c \
- x86emu.c
-endif
-
-if INT10_STUB
-AM_CFLAGS = $(I386_VIDEO_CFLAGS) -D_VM86_LINUX $(DIX_CFLAGS) $(XORG_CFLAGS) $(EXTRA_CFLAGS)
-INCLUDES = $(XORG_INCS)
-libint10_la_SOURCES = stub.c xf86int10module.c
-endif
-
-EXTRA_DIST = xf86x86emu.h INT10.HOWTO
+module_LTLIBRARIES = libint10.la
+
+sdk_HEADERS = xf86int10.h
+
+EXTRA_CFLAGS =
+
+libint10_la_LDFLAGS = -avoid-version
+libint10_la_LIBADD = $(PCIACCESS_LIBS)
+
+COMMON_SOURCES = \
+ helper_exec.c \
+ helper_mem.c \
+ xf86int10.c \
+ xf86int10module.c
+
+if I386_VIDEO
+I386_VIDEO_CFLAGS = -D_PC
+endif
+
+if INT10_VM86
+AM_CFLAGS = $(I386_VIDEO_CFLAGS) -D_VM86_LINUX $(DIX_CFLAGS) $(XORG_CFLAGS) $(EXTRA_CFLAGS)
+INCLUDES = $(XORG_INCS)
+libint10_la_SOURCES = \
+ $(COMMON_SOURCES) \
+ $(srcdir)/../os-support/linux/int10/vm86/linux_vm86.c \
+ $(srcdir)/../os-support/linux/int10/linux.c
+endif
+
+if INT10_X86EMU
+AM_CFLAGS = $(I386_VIDEO_CFLAGS) -D_X86EMU -DNO_SYS_HEADERS \
+ $(XORG_CFLAGS) $(EXTRA_CFLAGS) $(DIX_CFLAGS)
+INCLUDES = $(XORG_INCS) -I$(srcdir)/../x86emu
+libint10_la_SOURCES = \
+ $(COMMON_SOURCES) \
+ xf86x86emu.c \
+ generic.c \
+ x86emu.c
+endif
+
+if INT10_STUB
+AM_CFLAGS = $(I386_VIDEO_CFLAGS) -D_VM86_LINUX $(DIX_CFLAGS) $(XORG_CFLAGS) $(EXTRA_CFLAGS)
+INCLUDES = $(XORG_INCS)
+libint10_la_SOURCES = stub.c xf86int10module.c
+endif
+
+EXTRA_DIST = xf86x86emu.h INT10.HOWTO
diff --git a/xorg-server/hw/xfree86/int10/x86emu.c b/xorg-server/hw/xfree86/int10/x86emu.c
index 087059131..b3320e5b9 100644
--- a/xorg-server/hw/xfree86/int10/x86emu.c
+++ b/xorg-server/hw/xfree86/int10/x86emu.c
@@ -1,12 +1,12 @@
-
-#ifdef HAVE_XORG_CONFIG_H
-#include <xorg-config.h>
-#endif
-
-#include "debug.c"
-#include "decode.c"
-#include "fpu.c"
-#include "ops.c"
-#include "ops2.c"
-#include "prim_ops.c"
-#include "sys.c"
+
+#ifdef HAVE_XORG_CONFIG_H
+#include <xorg-config.h>
+#endif
+
+#include "debug.c"
+#include "decode.c"
+#include "fpu.c"
+#include "ops.c"
+#include "ops2.c"
+#include "prim_ops.c"
+#include "sys.c"
diff --git a/xorg-server/hw/xfree86/int10/xf86x86emu.h b/xorg-server/hw/xfree86/int10/xf86x86emu.h
index 320ad6fa8..4af2dafb7 100644
--- a/xorg-server/hw/xfree86/int10/xf86x86emu.h
+++ b/xorg-server/hw/xfree86/int10/xf86x86emu.h
@@ -1,54 +1,54 @@
-/*
- * XFree86 int10 module
- * execute BIOS int 10h calls in x86 real mode environment
- * Copyright 1999 Egbert Eich
- */
-#ifdef HAVE_XORG_CONFIG_H
-#include <xorg-config.h>
-#endif
-
-#ifndef XF86X86EMU_H_
-#define XF86X86EMU_H_
-#include <x86emu.h>
-
-#define M _X86EMU_env
-
-#define X86_EAX M.x86.R_EAX
-#define X86_EBX M.x86.R_EBX
-#define X86_ECX M.x86.R_ECX
-#define X86_EDX M.x86.R_EDX
-#define X86_ESI M.x86.R_ESI
-#define X86_EDI M.x86.R_EDI
-#define X86_EBP M.x86.R_EBP
-#define X86_EIP M.x86.R_EIP
-#define X86_ESP M.x86.R_ESP
-#define X86_EFLAGS M.x86.R_EFLG
-
-#define X86_FLAGS M.x86.R_FLG
-#define X86_AX M.x86.R_AX
-#define X86_BX M.x86.R_BX
-#define X86_CX M.x86.R_CX
-#define X86_DX M.x86.R_DX
-#define X86_SI M.x86.R_SI
-#define X86_DI M.x86.R_DI
-#define X86_BP M.x86.R_BP
-#define X86_IP M.x86.R_IP
-#define X86_SP M.x86.R_SP
-#define X86_CS M.x86.R_CS
-#define X86_DS M.x86.R_DS
-#define X86_ES M.x86.R_ES
-#define X86_SS M.x86.R_SS
-#define X86_FS M.x86.R_FS
-#define X86_GS M.x86.R_GS
-
-#define X86_AL M.x86.R_AL
-#define X86_BL M.x86.R_BL
-#define X86_CL M.x86.R_CL
-#define X86_DL M.x86.R_DL
-
-#define X86_AH M.x86.R_AH
-#define X86_BH M.x86.R_BH
-#define X86_CH M.x86.R_CH
-#define X86_DH M.x86.R_DH
-
-#endif
+/*
+ * XFree86 int10 module
+ * execute BIOS int 10h calls in x86 real mode environment
+ * Copyright 1999 Egbert Eich
+ */
+#ifdef HAVE_XORG_CONFIG_H
+#include <xorg-config.h>
+#endif
+
+#ifndef XF86X86EMU_H_
+#define XF86X86EMU_H_
+#include <x86emu.h>
+
+#define M _X86EMU_env
+
+#define X86_EAX M.x86.R_EAX
+#define X86_EBX M.x86.R_EBX
+#define X86_ECX M.x86.R_ECX
+#define X86_EDX M.x86.R_EDX
+#define X86_ESI M.x86.R_ESI
+#define X86_EDI M.x86.R_EDI
+#define X86_EBP M.x86.R_EBP
+#define X86_EIP M.x86.R_EIP
+#define X86_ESP M.x86.R_ESP
+#define X86_EFLAGS M.x86.R_EFLG
+
+#define X86_FLAGS M.x86.R_FLG
+#define X86_AX M.x86.R_AX
+#define X86_BX M.x86.R_BX
+#define X86_CX M.x86.R_CX
+#define X86_DX M.x86.R_DX
+#define X86_SI M.x86.R_SI
+#define X86_DI M.x86.R_DI
+#define X86_BP M.x86.R_BP
+#define X86_IP M.x86.R_IP
+#define X86_SP M.x86.R_SP
+#define X86_CS M.x86.R_CS
+#define X86_DS M.x86.R_DS
+#define X86_ES M.x86.R_ES
+#define X86_SS M.x86.R_SS
+#define X86_FS M.x86.R_FS
+#define X86_GS M.x86.R_GS
+
+#define X86_AL M.x86.R_AL
+#define X86_BL M.x86.R_BL
+#define X86_CL M.x86.R_CL
+#define X86_DL M.x86.R_DL
+
+#define X86_AH M.x86.R_AH
+#define X86_BH M.x86.R_BH
+#define X86_CH M.x86.R_CH
+#define X86_DH M.x86.R_DH
+
+#endif
diff --git a/xorg-server/hw/xfree86/modes/Makefile.am b/xorg-server/hw/xfree86/modes/Makefile.am
index e0386d748..9236426bf 100644
--- a/xorg-server/hw/xfree86/modes/Makefile.am
+++ b/xorg-server/hw/xfree86/modes/Makefile.am
@@ -1,35 +1,35 @@
-noinst_LTLIBRARIES = libxf86modes.la
-
-if DGA
-DGA_SRCS = xf86DiDGA.c
-endif
-
-libxf86modes_la_SOURCES = \
- xf86Crtc.c \
- xf86Crtc.h \
- xf86Cursors.c \
- xf86cvt.c \
- xf86gtf.c \
- xf86DisplayIDModes.c \
- xf86EdidModes.c \
- xf86Modes.c \
- xf86Modes.h \
- xf86RandR12.c \
- xf86RandR12.h \
- xf86Rename.h \
- xf86Rotate.c \
- $(DGA_SRCS)
-
-INCLUDES = $(XORG_INCS) -I$(srcdir)/../ddc -I$(srcdir)/../i2c \
- -I$(srcdir)/../loader -I$(srcdir)/../rac -I$(srcdir)/../parser \
- -I$(srcdir)/../vbe -I$(srcdir)/../int10 \
- -I$(srcdir)/../vgahw -I$(srcdir)/../ramdac \
- -I$(srcdir)/../dixmods/extmod
-
-sdk_HEADERS = \
- xf86Crtc.h \
- xf86Modes.h \
- xf86RandR12.h \
- xf86Rename.h
-
-AM_CFLAGS = $(DIX_CFLAGS) $(XORG_CFLAGS)
+noinst_LTLIBRARIES = libxf86modes.la
+
+if DGA
+DGA_SRCS = xf86DiDGA.c
+endif
+
+libxf86modes_la_SOURCES = \
+ xf86Crtc.c \
+ xf86Crtc.h \
+ xf86Cursors.c \
+ xf86cvt.c \
+ xf86gtf.c \
+ xf86DisplayIDModes.c \
+ xf86EdidModes.c \
+ xf86Modes.c \
+ xf86Modes.h \
+ xf86RandR12.c \
+ xf86RandR12.h \
+ xf86Rename.h \
+ xf86Rotate.c \
+ $(DGA_SRCS)
+
+INCLUDES = $(XORG_INCS) -I$(srcdir)/../ddc -I$(srcdir)/../i2c \
+ -I$(srcdir)/../loader -I$(srcdir)/../rac -I$(srcdir)/../parser \
+ -I$(srcdir)/../vbe -I$(srcdir)/../int10 \
+ -I$(srcdir)/../vgahw -I$(srcdir)/../ramdac \
+ -I$(srcdir)/../dixmods/extmod
+
+sdk_HEADERS = \
+ xf86Crtc.h \
+ xf86Modes.h \
+ xf86RandR12.h \
+ xf86Rename.h
+
+AM_CFLAGS = $(DIX_CFLAGS) $(XORG_CFLAGS)
diff --git a/xorg-server/hw/xfree86/os-support/bsd/Makefile.am b/xorg-server/hw/xfree86/os-support/bsd/Makefile.am
index 55eb1151d..b6ecdf1d1 100644
--- a/xorg-server/hw/xfree86/os-support/bsd/Makefile.am
+++ b/xorg-server/hw/xfree86/os-support/bsd/Makefile.am
@@ -1,76 +1,76 @@
-noinst_LTLIBRARIES = libbsd.la
-
-# APM support.
-if BSD_KQUEUE_APM
-APM_SOURCES = $(srcdir)/bsd_kqueue_apm.c
-else
-if BSD_APM
-APM_SOURCES = $(srcdir)/bsd_apm.c
-else
-APM_SOURCES = $(srcdir)/../shared/pm_noop.c
-endif
-endif
-
-if FREEBSD_KLDLOAD
-KMOD_SOURCES = bsd_kmod.c
-else
-KMOD_SOURCES = $(srcdir)/../shared/kmod_noop.c
-endif
-
-if AGP
-AGP_SOURCES = $(srcdir)/../linux/lnx_agp.c
-else
-AGP_SOURCES = $(srcdir)/../shared/agp_noop.c
-endif
-
-if ALPHA_VIDEO
-# Cheat here and piggyback other alpha bits on ALPHA_VIDEO.
-ARCH_SOURCES = \
- alpha_video.c \
- bsd_ev56.c \
- bsd_axp.c \
- $(srcdir)/../shared/xf86Axp.c
-endif
-
-if ARM_VIDEO
-ARCH_SOURCES = arm_video.c
-endif
-
-if I386_VIDEO
-ARCH_SOURCES = i386_video.c
-endif
-
-if PPC_VIDEO
-ARCH_SOURCES = ppc_video.c
-endif
-
-if SPARC64_VIDEO
-# Cheat here and piggyback other sparc64 bits on SPARC64_VIDEO.
-ARCH_SOURCES = \
- sparc64_video.c \
- $(srcdir)/../shared/ioperm_noop.c
-endif
-
-# FIXME: NetBSD Aperture defines (configure.ac)
-AM_CFLAGS = -DUSESTDRES $(XORG_CFLAGS) $(DIX_CFLAGS)
-
-INCLUDES = $(XORG_INCS)
-
-libbsd_la_SOURCES = \
- $(srcdir)/../shared/posix_tty.c \
- $(srcdir)/../shared/sigio.c \
- $(srcdir)/../shared/vidmem.c \
- bsd_VTsw.c \
- bsd_init.c \
- bsd_bell.c \
- $(ARCH_SOURCES) \
- $(AGP_SOURCES) \
- $(APM_SOURCES) \
- $(AXP_SOURCES) \
- $(DRI_SOURCES) \
- $(KMOD_SOURCES) \
- $(RES_SOURCES)
-
-# FIXME: Add these files to the build as needed
-EXTRA_DIST = \
- memrange.h
+noinst_LTLIBRARIES = libbsd.la
+
+# APM support.
+if BSD_KQUEUE_APM
+APM_SOURCES = $(srcdir)/bsd_kqueue_apm.c
+else
+if BSD_APM
+APM_SOURCES = $(srcdir)/bsd_apm.c
+else
+APM_SOURCES = $(srcdir)/../shared/pm_noop.c
+endif
+endif
+
+if FREEBSD_KLDLOAD
+KMOD_SOURCES = bsd_kmod.c
+else
+KMOD_SOURCES = $(srcdir)/../shared/kmod_noop.c
+endif
+
+if AGP
+AGP_SOURCES = $(srcdir)/../linux/lnx_agp.c
+else
+AGP_SOURCES = $(srcdir)/../shared/agp_noop.c
+endif
+
+if ALPHA_VIDEO
+# Cheat here and piggyback other alpha bits on ALPHA_VIDEO.
+ARCH_SOURCES = \
+ alpha_video.c \
+ bsd_ev56.c \
+ bsd_axp.c \
+ $(srcdir)/../shared/xf86Axp.c
+endif
+
+if ARM_VIDEO
+ARCH_SOURCES = arm_video.c
+endif
+
+if I386_VIDEO
+ARCH_SOURCES = i386_video.c
+endif
+
+if PPC_VIDEO
+ARCH_SOURCES = ppc_video.c
+endif
+
+if SPARC64_VIDEO
+# Cheat here and piggyback other sparc64 bits on SPARC64_VIDEO.
+ARCH_SOURCES = \
+ sparc64_video.c \
+ $(srcdir)/../shared/ioperm_noop.c
+endif
+
+# FIXME: NetBSD Aperture defines (configure.ac)
+AM_CFLAGS = -DUSESTDRES $(XORG_CFLAGS) $(DIX_CFLAGS)
+
+INCLUDES = $(XORG_INCS)
+
+libbsd_la_SOURCES = \
+ $(srcdir)/../shared/posix_tty.c \
+ $(srcdir)/../shared/sigio.c \
+ $(srcdir)/../shared/vidmem.c \
+ bsd_VTsw.c \
+ bsd_init.c \
+ bsd_bell.c \
+ $(ARCH_SOURCES) \
+ $(AGP_SOURCES) \
+ $(APM_SOURCES) \
+ $(AXP_SOURCES) \
+ $(DRI_SOURCES) \
+ $(KMOD_SOURCES) \
+ $(RES_SOURCES)
+
+# FIXME: Add these files to the build as needed
+EXTRA_DIST = \
+ memrange.h
diff --git a/xorg-server/hw/xfree86/os-support/hurd/Makefile.am b/xorg-server/hw/xfree86/os-support/hurd/Makefile.am
index 2f0ba2ac8..3e8224753 100644
--- a/xorg-server/hw/xfree86/os-support/hurd/Makefile.am
+++ b/xorg-server/hw/xfree86/os-support/hurd/Makefile.am
@@ -1,15 +1,15 @@
-noinst_LTLIBRARIES = libhurd.la
-
-libhurd_la_SOURCES = hurd_bell.c hurd_init.c hurd_mmap.c \
- hurd_video.c \
- $(srcdir)/../shared/VTsw_noop.c \
- $(srcdir)/../shared/posix_tty.c \
- $(srcdir)/../shared/vidmem.c \
- $(srcdir)/../shared/sigiostubs.c \
- $(srcdir)/../shared/pm_noop.c \
- $(srcdir)/../shared/kmod_noop.c \
- $(srcdir)/../shared/agp_noop.c
-
-AM_CFLAGS = -DUSESTDRES -DHAVE_SYSV_IPC $(XORG_CFLAGS) $(DIX_CFLAGS)
-
-INCLUDES = $(XORG_INCS)
+noinst_LTLIBRARIES = libhurd.la
+
+libhurd_la_SOURCES = hurd_bell.c hurd_init.c hurd_mmap.c \
+ hurd_video.c \
+ $(srcdir)/../shared/VTsw_noop.c \
+ $(srcdir)/../shared/posix_tty.c \
+ $(srcdir)/../shared/vidmem.c \
+ $(srcdir)/../shared/sigiostubs.c \
+ $(srcdir)/../shared/pm_noop.c \
+ $(srcdir)/../shared/kmod_noop.c \
+ $(srcdir)/../shared/agp_noop.c
+
+AM_CFLAGS = -DUSESTDRES -DHAVE_SYSV_IPC $(XORG_CFLAGS) $(DIX_CFLAGS)
+
+INCLUDES = $(XORG_INCS)
diff --git a/xorg-server/hw/xfree86/os-support/hurd/hurd_bell.c b/xorg-server/hw/xfree86/os-support/hurd/hurd_bell.c
index 8750eaf44..33965a44c 100644
--- a/xorg-server/hw/xfree86/os-support/hurd/hurd_bell.c
+++ b/xorg-server/hw/xfree86/os-support/hurd/hurd_bell.c
@@ -1,37 +1,37 @@
-/*
- * Copyright © 2006 Daniel Stone
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice (including the next
- * paragraph) shall be included in all copies or substantial portions of the
- * Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
- * DEALINGS IN THE SOFTWARE.
- *
- * Author: Daniel Stone <daniel@fooishbar.org>
- */
-
-#ifdef HAVE_XORG_CONFIG_H
-#include <xorg-config.h>
-#endif
-
-#include "xf86.h"
-#include "xf86Priv.h"
-
-void
-xf86OSRingBell(int loudness, int pitch, int duration)
-{
- return;
-}
+/*
+ * Copyright © 2006 Daniel Stone
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice (including the next
+ * paragraph) shall be included in all copies or substantial portions of the
+ * Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+ * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+ * DEALINGS IN THE SOFTWARE.
+ *
+ * Author: Daniel Stone <daniel@fooishbar.org>
+ */
+
+#ifdef HAVE_XORG_CONFIG_H
+#include <xorg-config.h>
+#endif
+
+#include "xf86.h"
+#include "xf86Priv.h"
+
+void
+xf86OSRingBell(int loudness, int pitch, int duration)
+{
+ return;
+}
diff --git a/xorg-server/hw/xfree86/os-support/int10Defines.h b/xorg-server/hw/xfree86/os-support/int10Defines.h
index e79722839..d942fbdad 100644
--- a/xorg-server/hw/xfree86/os-support/int10Defines.h
+++ b/xorg-server/hw/xfree86/os-support/int10Defines.h
@@ -1,89 +1,89 @@
-/*
- * Copyright (c) 2000-2001 by The XFree86 Project, Inc.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * THE COPYRIGHT HOLDER(S) OR AUTHOR(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR
- * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
- * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
- * OTHER DEALINGS IN THE SOFTWARE.
- *
- * Except as contained in this notice, the name of the copyright holder(s)
- * and author(s) shall not be used in advertising or otherwise to promote
- * the sale, use or other dealings in this Software without prior written
- * authorization from the copyright holder(s) and author(s).
- */
-
-#ifdef HAVE_XORG_CONFIG_H
-#include <xorg-config.h>
-#endif
-
-#ifndef _INT10DEFINES_H_
-#define _INT10DEFINES_H_ 1
-
-#ifdef _VM86_LINUX
-
-#include <asm/vm86.h>
-
-#define CPU_R(type,name,num) \
- (((type *)&(((struct vm86_struct *)REG->cpuRegs)->regs.name))[num])
-#define CPU_RD(name,num) CPU_R(CARD32,name,num)
-#define CPU_RW(name,num) CPU_R(CARD16,name,num)
-#define CPU_RB(name,num) CPU_R(CARD8,name,num)
-
-#define X86_EAX CPU_RD(eax,0)
-#define X86_EBX CPU_RD(ebx,0)
-#define X86_ECX CPU_RD(ecx,0)
-#define X86_EDX CPU_RD(edx,0)
-#define X86_ESI CPU_RD(esi,0)
-#define X86_EDI CPU_RD(edi,0)
-#define X86_EBP CPU_RD(ebp,0)
-#define X86_EIP CPU_RD(eip,0)
-#define X86_ESP CPU_RD(esp,0)
-#define X86_EFLAGS CPU_RD(eflags,0)
-
-#define X86_FLAGS CPU_RW(eflags,0)
-#define X86_AX CPU_RW(eax,0)
-#define X86_BX CPU_RW(ebx,0)
-#define X86_CX CPU_RW(ecx,0)
-#define X86_DX CPU_RW(edx,0)
-#define X86_SI CPU_RW(esi,0)
-#define X86_DI CPU_RW(edi,0)
-#define X86_BP CPU_RW(ebp,0)
-#define X86_IP CPU_RW(eip,0)
-#define X86_SP CPU_RW(esp,0)
-#define X86_CS CPU_RW(cs,0)
-#define X86_DS CPU_RW(ds,0)
-#define X86_ES CPU_RW(es,0)
-#define X86_SS CPU_RW(ss,0)
-#define X86_FS CPU_RW(fs,0)
-#define X86_GS CPU_RW(gs,0)
-
-#define X86_AL CPU_RB(eax,0)
-#define X86_BL CPU_RB(ebx,0)
-#define X86_CL CPU_RB(ecx,0)
-#define X86_DL CPU_RB(edx,0)
-
-#define X86_AH CPU_RB(eax,1)
-#define X86_BH CPU_RB(ebx,1)
-#define X86_CH CPU_RB(ecx,1)
-#define X86_DH CPU_RB(edx,1)
-
-#elif defined(_X86EMU)
-
-#include "xf86x86emu.h"
-
-#endif
-
-#endif
+/*
+ * Copyright (c) 2000-2001 by The XFree86 Project, Inc.
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+ * THE COPYRIGHT HOLDER(S) OR AUTHOR(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR
+ * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
+ * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+ * OTHER DEALINGS IN THE SOFTWARE.
+ *
+ * Except as contained in this notice, the name of the copyright holder(s)
+ * and author(s) shall not be used in advertising or otherwise to promote
+ * the sale, use or other dealings in this Software without prior written
+ * authorization from the copyright holder(s) and author(s).
+ */
+
+#ifdef HAVE_XORG_CONFIG_H
+#include <xorg-config.h>
+#endif
+
+#ifndef _INT10DEFINES_H_
+#define _INT10DEFINES_H_ 1
+
+#ifdef _VM86_LINUX
+
+#include <asm/vm86.h>
+
+#define CPU_R(type,name,num) \
+ (((type *)&(((struct vm86_struct *)REG->cpuRegs)->regs.name))[num])
+#define CPU_RD(name,num) CPU_R(CARD32,name,num)
+#define CPU_RW(name,num) CPU_R(CARD16,name,num)
+#define CPU_RB(name,num) CPU_R(CARD8,name,num)
+
+#define X86_EAX CPU_RD(eax,0)
+#define X86_EBX CPU_RD(ebx,0)
+#define X86_ECX CPU_RD(ecx,0)
+#define X86_EDX CPU_RD(edx,0)
+#define X86_ESI CPU_RD(esi,0)
+#define X86_EDI CPU_RD(edi,0)
+#define X86_EBP CPU_RD(ebp,0)
+#define X86_EIP CPU_RD(eip,0)
+#define X86_ESP CPU_RD(esp,0)
+#define X86_EFLAGS CPU_RD(eflags,0)
+
+#define X86_FLAGS CPU_RW(eflags,0)
+#define X86_AX CPU_RW(eax,0)
+#define X86_BX CPU_RW(ebx,0)
+#define X86_CX CPU_RW(ecx,0)
+#define X86_DX CPU_RW(edx,0)
+#define X86_SI CPU_RW(esi,0)
+#define X86_DI CPU_RW(edi,0)
+#define X86_BP CPU_RW(ebp,0)
+#define X86_IP CPU_RW(eip,0)
+#define X86_SP CPU_RW(esp,0)
+#define X86_CS CPU_RW(cs,0)
+#define X86_DS CPU_RW(ds,0)
+#define X86_ES CPU_RW(es,0)
+#define X86_SS CPU_RW(ss,0)
+#define X86_FS CPU_RW(fs,0)
+#define X86_GS CPU_RW(gs,0)
+
+#define X86_AL CPU_RB(eax,0)
+#define X86_BL CPU_RB(ebx,0)
+#define X86_CL CPU_RB(ecx,0)
+#define X86_DL CPU_RB(edx,0)
+
+#define X86_AH CPU_RB(eax,1)
+#define X86_BH CPU_RB(ebx,1)
+#define X86_CH CPU_RB(ecx,1)
+#define X86_DH CPU_RB(edx,1)
+
+#elif defined(_X86EMU)
+
+#include "xf86x86emu.h"
+
+#endif
+
+#endif
diff --git a/xorg-server/hw/xfree86/os-support/misc/Makefile.am b/xorg-server/hw/xfree86/os-support/misc/Makefile.am
index db5e7cff0..4bd3fc3e1 100644
--- a/xorg-server/hw/xfree86/os-support/misc/Makefile.am
+++ b/xorg-server/hw/xfree86/os-support/misc/Makefile.am
@@ -1,12 +1,12 @@
-
-noinst_LTLIBRARIES = libmisc.la
-
-libmisc_la_SOURCES = SlowBcopy.c
-
-#AM_LDFLAGS = -r
-
-INCLUDES = $(XORG_INCS)
-
-AM_CFLAGS = $(XORG_CFLAGS) $(DIX_CFLAGS)
-
-EXTRA_DIST = $(I386_SRCS) $(PORTIO_SRCS)
+
+noinst_LTLIBRARIES = libmisc.la
+
+libmisc_la_SOURCES = SlowBcopy.c
+
+#AM_LDFLAGS = -r
+
+INCLUDES = $(XORG_INCS)
+
+AM_CFLAGS = $(XORG_CFLAGS) $(DIX_CFLAGS)
+
+EXTRA_DIST = $(I386_SRCS) $(PORTIO_SRCS)
diff --git a/xorg-server/hw/xfree86/os-support/solaris/Makefile.am b/xorg-server/hw/xfree86/os-support/solaris/Makefile.am
index 9f358a6ea..5163f4423 100644
--- a/xorg-server/hw/xfree86/os-support/solaris/Makefile.am
+++ b/xorg-server/hw/xfree86/os-support/solaris/Makefile.am
@@ -1,37 +1,37 @@
-if SOLARIS_VT
-VTSW_SRC = sun_VTsw.c
-else
-VTSW_SRC = $(srcdir)/../shared/VTsw_noop.c
-endif
-
-if AGP
-AGP_SRC = sun_agp.c
-else
-AGP_SRC = $(srcdir)/../shared/agp_noop.c
-endif
-
-SOLARIS_INOUT_SRC = solaris-@SOLARIS_INOUT_ARCH@.S
-DISTCLEANFILES = solaris-@SOLARIS_INOUT_ARCH@.il
-
-solaris-@SOLARIS_INOUT_ARCH@.il: solaris-@SOLARIS_INOUT_ARCH@.S
- $(CPP) -P -DINLINE_ASM $(srcdir)/solaris-@SOLARIS_INOUT_ARCH@.S > $@
-
-noinst_LTLIBRARIES = libsolaris.la
-libsolaris_la_SOURCES = sun_init.c \
- sun_vid.c sun_bell.c $(AGP_SRC) sun_apm.c \
- $(srcdir)/../shared/kmod_noop.c \
- $(srcdir)/../shared/posix_tty.c \
- $(srcdir)/../shared/sigio.c \
- $(srcdir)/../shared/vidmem.c \
- $(VTSW_SRC)
-nodist_libsolaris_la_SOURCES = $(SOLARIS_INOUT_SRC)
-
-sdk_HEADERS =
-nodist_sdk_HEADERS = solaris-@SOLARIS_INOUT_ARCH@.il
-
-AM_CFLAGS = -DUSESTDRES -DHAVE_SYSV_IPC $(XORG_CFLAGS) $(DIX_CFLAGS)
-
-INCLUDES = $(XORG_INCS)
-
-EXTRA_DIST = solaris-amd64.S solaris-ia32.S solaris-sparcv8plus.S \
- apSolaris.shar sun_inout.s
+if SOLARIS_VT
+VTSW_SRC = sun_VTsw.c
+else
+VTSW_SRC = $(srcdir)/../shared/VTsw_noop.c
+endif
+
+if AGP
+AGP_SRC = sun_agp.c
+else
+AGP_SRC = $(srcdir)/../shared/agp_noop.c
+endif
+
+SOLARIS_INOUT_SRC = solaris-@SOLARIS_INOUT_ARCH@.S
+DISTCLEANFILES = solaris-@SOLARIS_INOUT_ARCH@.il
+
+solaris-@SOLARIS_INOUT_ARCH@.il: solaris-@SOLARIS_INOUT_ARCH@.S
+ $(CPP) -P -DINLINE_ASM $(srcdir)/solaris-@SOLARIS_INOUT_ARCH@.S > $@
+
+noinst_LTLIBRARIES = libsolaris.la
+libsolaris_la_SOURCES = sun_init.c \
+ sun_vid.c sun_bell.c $(AGP_SRC) sun_apm.c \
+ $(srcdir)/../shared/kmod_noop.c \
+ $(srcdir)/../shared/posix_tty.c \
+ $(srcdir)/../shared/sigio.c \
+ $(srcdir)/../shared/vidmem.c \
+ $(VTSW_SRC)
+nodist_libsolaris_la_SOURCES = $(SOLARIS_INOUT_SRC)
+
+sdk_HEADERS =
+nodist_sdk_HEADERS = solaris-@SOLARIS_INOUT_ARCH@.il
+
+AM_CFLAGS = -DUSESTDRES -DHAVE_SYSV_IPC $(XORG_CFLAGS) $(DIX_CFLAGS)
+
+INCLUDES = $(XORG_INCS)
+
+EXTRA_DIST = solaris-amd64.S solaris-ia32.S solaris-sparcv8plus.S \
+ apSolaris.shar sun_inout.s
diff --git a/xorg-server/hw/xfree86/os-support/solaris/apSolaris.shar b/xorg-server/hw/xfree86/os-support/solaris/apSolaris.shar
index 68f44029e..a3548f7b4 100644
--- a/xorg-server/hw/xfree86/os-support/solaris/apSolaris.shar
+++ b/xorg-server/hw/xfree86/os-support/solaris/apSolaris.shar
@@ -1,806 +1,806 @@
-#!/bin/sh
-#
-# This is a shell archive. Save it in a file, remove anything before
-# this line, and then unpack it by entering "sh file". Note, it may
-# create directories; files and directories will be owned by you and
-# have default permissions.
-# Made on Sun Jun 25 20:24:59 CEST 2006 by Martin Bochnig at martux.org
-#
-# This archive contains:
-#
-# ./aperture
-#
-# ./aperture/Makefile
-# ./aperture/Makefile.amd64
-# ./aperture/Makefile.sparcv9
-# ./aperture/README
-# ./aperture/aperture.c
-# ./aperture/aperture.conf
-# ./aperture/devlink.tab
-#
-echo c - ./aperture
-mkdir -p ./aperture > /dev/null 2>&1
-#
-echo x - ./aperture/Makefile
-sed 's/^X//' >./aperture/Makefile << 'END-of-./aperture/Makefile'
-X#
-X# File: makefile for aperture Framebuffer Driver
-X# Author: Doug Anson (danson@lgc.com)
-X# Date: 2/15/94
-X# Modified: David Holland (davidh@use.com)
-X# Date: 2/23/94
-X# - Changed name, and debugging structure
-X# Modified: Marc Aurele La France (tsi@xfree86.org)
-X# Date: 2001.06.08
-X# - SPARC support, cleanup and turf aptest.
-X#
-X# >>NOTE<< Have a look at Makefile.sparcv9 for specifics.
-X#
-X# Modified: Martin Bochnig (martin@martux.org)
-X# Date: 2006.06.24
-X# - Slightly modified to also build on Solaris 10 and 11.
-X# - amd64 64 bit kernel support
-X# - cosmetical changes to also support sun4v, not only sun4u
-X#
-X# >>NOTE<< Have a look at Makefile.amd64 for amd64 specifics.
-X#
-X# GNU gcc compiler
-XCC=gcc
-XCFLGS=-fno-builtin -Wall -O3
-X
-X#
-X# SUNWspro compiler
-X#CC=/opt/SUNWspro/bin/cc
-X#CFLGS=-Xa -xnolib -xO3
-X
-X#
-X# Debug error reporting
-X#DEBUG_FLG=
-X#DEBUG_FLG=-DAPERTURE_DEBUG
-X
-X#
-X# Files and object declarations
-XKERNEL_FLGS=-D_KERNEL -DSUNDDI
-XCFLAGS= $(CFLGS) $(KERNEL_FLGS) $(DEBUG_FLG)
-XCFILES= aperture.c
-XOBJS= aperture.o
-XDRIVER= aperture
-X
-X#
-X# Make rules
-Xall: $(DRIVER)
-X
-X$(DRIVER): $(OBJS)
-X @if [ -f "Makefile.`isainfo -k`" ]; then \
-X make -f Makefile.`isainfo -k` $(DRIVER); \
-X else \
-X rm -f $(DRIVER); \
-X ld -r -o $(DRIVER) $(OBJS); \
-X fi
-X
-Xinstall: $(DRIVER)
-X @if [ -f "Makefile.`isainfo -k`" ]; then \
-X make -f Makefile.`isainfo -k` install; \
-X else \
-X cp aperture.conf /kernel/drv; \
-X cp $(DRIVER) /kernel/drv; \
-X fi
-X
-Xadd_drv:
-X @if [ -f "Makefile.`isainfo -k`" ]; then \
-X make -f Makefile.`isainfo -k` add_drv; \
-X else \
-X add_drv aperture; \
-X fi
-X
-Xclean:
-X rm -f *% *.BAK $(OBJS) $(DRIVER) core
-X
-X.SUFFIXES: .i
-X
-X.c.i:
-X $(CC) -E $(CFLAGS) $*.c > $@
-X
-X.c.o:
-X @if [ -f "Makefile.`isainfo -k`" ]; then \
-X make -f Makefile.`isainfo -k` $@; \
-X else \
-X rm -f $@; \
-X $(CC) -c $(CFLAGS) $*.c -o $@; \
-X fi
-END-of-./aperture/Makefile
-echo x - ./aperture/Makefile.amd64
-sed 's/^X//' >./aperture/Makefile.amd64 << 'END-of-./aperture/Makefile.amd64'
-X#
-X# File: Makefile for aperture Framebuffer Driver
-X# Author: Doug Anson (danson@lgc.com)
-X# Date: 2/15/94
-X# Modified: David Holland (davidh@use.com)
-X# Date: 2/23/94
-X# - Changed name, and debugging structure
-X# Modified: Marc Aurele La France (tsi@xfree86.org)
-X# Date: 2001.06.08
-X# - SPARC support, cleanup and turf aptest.
-X# Modified: Martin Bochnig (martin@martux.org)
-X# - amd64 64 bit kernel support, cosmetics and also
-X# supporting sun4v (and arbitrary sparcv9) platforms
-X# as well as SunOS 5.10 or higher now
-X# - Changed name
-X#
-X
-X#
-X# GNU gcc compiler, version 3.2 or later
-X#
-XCC=gcc
-XCFLGS=-fno-builtin -Wall -O3 -m64 -mcmodel=kernel
-X
-X#
-X# SUNWspro compiler (untested, might not properly work for amd64 here)
-X#CC=/opt/SUNWspro/bin/cc
-X#CFLGS=-Xa -xarch=v9 -xnolib -xO3
-X
-X#
-X# Debug error reporting
-X#DEBUG_FLG=
-X#DEBUG_FLG=-DAPERTURE_DEBUG
-X
-X#
-X# Files and object declarations
-XKERNEL_FLGS=-D_KERNEL -DSUNDDI
-XCFLAGS= $(CFLGS) $(KERNEL_FLGS) $(DEBUG_FLG)
-XCFILES= aperture.c
-XOBJS= aperture.o
-XDRIVER= aperture
-X
-X#
-X# Make rules
-Xall: $(DRIVER)
-X
-X$(DRIVER): $(OBJS)
-X rm -f $(DRIVER)
-X ld -r -o $(DRIVER) $(OBJS)
-X
-Xinstall: $(DRIVER)
-X cp aperture.conf /kernel/drv
-X cp $(DRIVER) /kernel/drv/amd64
-X
-Xadd_drv:
-X add_drv aperture
-X
-Xclean:
-X rm -f *% *.BAK $(OBJS) $(DRIVER) core
-X
-X.SUFFIXES: .i
-X
-X.c.i:
-X $(CC) -E $(CFLAGS) $*.c > $@
-END-of-./aperture/Makefile.amd64
-echo x - ./aperture/Makefile.sparcv9
-sed 's/^X//' >./aperture/Makefile.sparcv9 << 'END-of-./aperture/Makefile.sparcv9'
-X#
-X# File: makefile for aperture Framebuffer Driver
-X# Author: Doug Anson (danson@lgc.com)
-X# Date: 2/15/94
-X# Modified: David Holland (davidh@use.com)
-X# Date: 2/23/94
-X# - Changed name, and debugging structure
-X# Modified: Marc Aurele La France (tsi@xfree86.org)
-X# Date: 2001.06.08
-X# - SPARC support, cleanup and turf aptest.
-X# Modified: Martin Bochnig (martin@martux.org)
-X# Date: 2006.06.24
-X# - Changed name for generic sparcv9 support
-X# - updated to better work with Solaris 10 and 11
-X#
-X
-X#
-X# GNU gcc compiler, version 3.2 or later
-X#
-XCC=gcc
-XCFLGS=-fno-builtin -Wall -O3 -m64
-X
-X#
-X# SUNWspro compiler
-X#CC=/opt/SUNWspro/bin/cc
-X#CFLGS=-Xa -xarch=v9 -xnolib -xO3
-X
-X#
-X# Debug error reporting
-X#DEBUG_FLG=
-X#DEBUG_FLG=-DAPERTURE_DEBUG
-X
-X#
-X# Files and object declarations
-XKERNEL_FLGS=-D_KERNEL -DSUNDDI
-XCFLAGS= $(CFLGS) $(KERNEL_FLGS) $(DEBUG_FLG)
-XCFILES= aperture.c
-XOBJS= aperture.o
-XDRIVER= aperture
-X
-X#
-X# Make rules
-Xall: $(DRIVER)
-X
-X$(DRIVER): $(OBJS)
-X rm -f $(DRIVER)
-X ld -r -o $(DRIVER) $(OBJS)
-X
-Xinstall: $(DRIVER)
-X cp aperture.conf /kernel/drv
-X cp $(DRIVER) /kernel/drv/sparcv9
-X
-Xadd_drv:
-X add_drv aperture
-X
-Xclean:
-X rm -f *% *.BAK $(OBJS) $(DRIVER) core
-X
-X.SUFFIXES: .i
-X
-X.c.i:
-X $(CC) -E $(CFLAGS) $*.c > $@
-END-of-./aperture/Makefile.sparcv9
-echo x - ./aperture/README
-sed 's/^X//' >./aperture/README << 'END-of-./aperture/README'
-XFramebuffer aperture driver.
-X
-XThis driver was written to provide a device that, unlike /dev/mem, allows
-Xmmap()'ing of ranges beyond installed memory.
-X
-XThe original x86-based version of this driver was the collaborative work of
-XDoug Anson (danson@lgc.com), and David Holland (davidh@use.com). It has since
-Xbeen rewritten to also work on sparc machines and - later on - also on sparcv9
-Xand recently amd64 64 bit kernels.
-XIt flawlessly compiles and installs on Solaris 10 and 11 now.
-X
-X
-XInstallation instructions:
-X
-X1) Check the Makefile, for appropriate CC, and CFLAGS definitions. Compiling
-X with APERTURE_DEBUG defined means the driver will generate reams of
-X debugging output. You'll probably want to leave this off...
-X
-X2) Type 'make' (or 'gmake'). Both the driver and test program should compile
-X without any problems. No warning messages should be generated.
-X
-X3) Become 'root'.
-X
-X4) Type 'make install' and 'make add_drv'. The screen should look something
-X like this:
-X
-X # make install
-X cp aperture aperture.conf /kernel/drv
-X # make add_drv
-X add_drv aperture
-X
-X On a sparcv9 machine this will mention the /kernel/drv/sparcv9 directory
-X instead of /kernel/drv. Similarily /kernel/drv/amd64 should be used on amd64.
-X
-X This installs the driver to the system.
-X
-X5) While as root modify the file /etc/devlink.tab, adding these lines:
-X
-X# The following entry is for the framebuffer driver
-Xtype=ddi_pseudo;name=aperture fbs/\M0
-X
-X Add that line exactly as shown. You may also simply add the
-X contents of the devlink.tab file supplied to /etc/devlink.tab.
-X It contains the lines as well. (Yes, that is a tab between
-X aperture and fbs, not spaces - very important)
-X
-X6) Perform a reconfiguration boot of the system.
-X
-X # touch /reconfigure
-X # init 6
-X
-XBug reports, questions, suggestions, etc can be sent to xfree86@xfree86.org.
-END-of-./aperture/README
-echo x - ./aperture/aperture.c
-sed 's/^X//' >./aperture/aperture.c << 'END-of-./aperture/aperture.c'
-X/*
-X * Copyright (C) 2001 The XFree86 Project, Inc. All Rights Reserved.
-X *
-X * Permission is hereby granted, free of charge, to any person obtaining a copy
-X * of this software and associated documentation files (the "Software"), to
-X * deal in the Software without restriction, including without limitation the
-X * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
-X * sell copies of the Software, and to permit persons to whom the Software is
-X * furnished to do so, subject to the following conditions:
-X *
-X * The above copyright notice and this permission notice shall be included in
-X * all copies or substantial portions of the Software.
-X *
-X * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-X * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-X * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-X * XFREE86 PROJECT BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
-X * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-X * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-X *
-X * Except as contained in this notice, the name of the XFree86 Project shall
-X * not be used in advertising or otherwise to promote the sale, use or other
-X * dealings in this Software without prior written authorization from the
-X * XFree86 Project.
-X */
-X
-X/*
-X * Aperture driver for Solaris.
-X */
-X
-X/*
-X * Modified: Martin Bochnig (martin@martux.org)
-X * Log: Commented out obsolete kernel interfaces DDI_IDENTIFIED and DDI_NOT_IDENTIFIED
-X * not supported by SunOS 5.10 or higher anymore,
-X * see http://docs.sun.com/app/docs/doc/819-2255/6n4ibnffr?a=view
-X */
-X
-X#include <sys/conf.h>
-X#include <sys/ddi.h>
-X#include <sys/modctl.h>
-X#include <sys/open.h>
-X#include <sys/stat.h>
-X#include <sys/sunddi.h>
-X
-X#define DEV_IDENT "aperture"
-X#define DEV_BANNER "XFree86 aperture driver"
-X
-X#ifndef D_64BIT
-X#define D_64BIT 0
-X#endif
-X
-X#ifndef NULL
-X#define NULL ((void *)0)
-X#endif
-X
-X/*
-X * open(9E)
-X */
-X/*ARGSUSED*/
-Xstatic int
-Xaperture_open
-X(
-X#ifdef __STDC__
-X dev_t *devp,
-X int flag,
-X int typ,
-X struct cred *cred
-X#endif
-X)
-X#ifndef __STDC__
-X dev_t *devp;
-X int flag;
-X int typ;
-X struct cred *cred;
-X#endif
-X{
-X int error;
-X
-X#ifdef APERTURE_DEBUG
-X
-X cmn_err(CE_CONT, DEV_IDENT ": entering open()\n");
-X
-X#endif
-X
-X if ((typ != OTYP_CHR) || (getminor(*devp)))
-X error = EINVAL;
-X else
-X error = 0;
-X
-X#ifdef APERTURE_DEBUG
-X
-X cmn_err(CE_CONT, DEV_IDENT ": leaving open() = %d\n", error);
-X
-X#endif
-X
-X return error;
-X}
-X
-X/*
-X * mmap(9E)
-X */
-X/*ARGSUSED*/
-Xstatic int
-Xaperture_mmap
-X(
-X#ifdef __STDC__
-X dev_t dev,
-X off_t off,
-X int prot
-X#endif
-X)
-X#ifndef __STDC__
-X dev_t dev;
-X off_t off;
-X int prot;
-X#endif
-X{
-X pfn_t pf;
-X int error;
-X
-X#ifdef APERTURE_DEBUG
-X
-X cmn_err(CE_CONT, DEV_IDENT ": entering mmap(0x%016lx)\n", off);
-X
-X#endif
-X
-X pf = btop((unsigned long)off);
-X
-X /* Deal with mmap(9E) interface limits */
-X error = (int)pf;
-X if ((error < 0) || (pf != (pfn_t)error))
-X error = -1;
-X
-X#ifdef APERTURE_DEBUG
-X
-X cmn_err(CE_CONT, DEV_IDENT ": leaving mmap() = 0x%08lx", error);
-X
-X#endif
-X
-X return error;
-X}
-X
-Xstatic struct cb_ops aperture_cb_ops =
-X{
-X aperture_open, /* open */
-X nulldev, /* close */
-X nodev, /* strategy */
-X nodev, /* print */
-X nodev, /* dump */
-X nodev, /* read */
-X nodev, /* write */
-X nodev, /* ioctl */
-X nodev, /* devmap */
-X aperture_mmap, /* mmap */
-X ddi_segmap, /* segmap */
-X nochpoll, /* poll */
-X ddi_prop_op, /* cb_prop_op */
-X 0, /* streamtab */
-X D_NEW | D_MP | D_64BIT /* Driver compatibility flag */
-X};
-X
-X
-Xstatic dev_info_t *aperture_dip; /* private copy of devinfo pointer */
-X
-X/*
-X * getinfo(9E)
-X */
-X/*ARGSUSED*/
-Xstatic int
-Xaperture_getinfo
-X(
-X#ifdef __STDC__
-X dev_info_t *dip,
-X ddi_info_cmd_t infocmd,
-X void *arg,
-X void **result
-X#endif
-X)
-X#ifndef __STDC__
-X dev_info_t *dip;
-X ddi_info_cmd_t infocmd;
-X void *arg;
-X void **result;
-X#endif
-X{
-X int error;
-X
-X#ifdef APERTURE_DEBUG
-X
-X cmn_err(CE_CONT, DEV_IDENT ": entering getinfo()\n");
-X
-X#endif
-X
-X switch (infocmd) {
-X case DDI_INFO_DEVT2DEVINFO:
-X *result = aperture_dip;
-X error = DDI_SUCCESS;
-X break;
-X case DDI_INFO_DEVT2INSTANCE:
-X *result = NULL;
-X error = DDI_SUCCESS;
-X break;
-X default:
-X error = DDI_FAILURE;
-X }
-X
-X#ifdef APERTURE_DEBUG
-X
-X cmn_err(CE_CONT, DEV_IDENT ": leaving getinfo() = %d\n", error);
-X
-X#endif
-X
-X return error;
-X}
-X
-X/*
-X * identify(9E)
-X */
-X/*ARGSUSED*/
-Xstatic int
-Xaperture_identify
-X(
-X#ifdef __STDC__
-X dev_info_t *dip
-X#endif
-X)
-X#ifndef __STDC__
-X dev_info_t *dip;
-X#endif
-X{
-X int error;
-X
-X#ifdef APERTURE_DEBUG
-X
-X cmn_err(CE_CONT, DEV_IDENT ": entering identify()\n");
-X
-X#endif
-X
-X if (strcmp(ddi_get_name(dip), DEV_IDENT))
-X error = 1 /* DDI_NOT_IDENTIFIED obsolete since SunOS 5.10 */ ;
-X else
-X error = 2 /* DDI_IDENTIFIED obsolete since SunOS 5.10 */ ;
-X
-X#ifdef APERTURE_DEBUG
-X
-X cmn_err(CE_CONT, DEV_IDENT ": leaving identify() = %d\n", error);
-X
-X#endif
-X
-X return error;
-X}
-X
-X/*
-X * attach(9E)
-X */
-X/*ARGSUSED*/
-Xstatic int
-Xaperture_attach
-X(
-X#ifdef __STDC__
-X dev_info_t *dip,
-X ddi_attach_cmd_t cmd
-X#endif
-X)
-X#ifndef __STDC__
-X dev_info_t *dip;
-X ddi_attach_cmd_t cmd;
-X#endif
-X{
-X int error;
-X
-X#ifdef APERTURE_DEBUG
-X
-X cmn_err(CE_CONT, DEV_IDENT ": entering attach()\n");
-X
-X#endif
-X
-X if (cmd != DDI_ATTACH)
-X {
-X
-X#ifdef APERTURE_DEBUG
-X
-X cmn_err(CE_CONT, DEV_IDENT ": not attach(, DDI_ATTACH)\n");
-X
-X#endif
-X
-X error = DDI_FAILURE;
-X }
-X else
-X {
-X error = ddi_create_minor_node(dip, ddi_get_name(dip), S_IFCHR,
-X (minor_t)ddi_get_instance(dip),
-X NULL, 0 /* NODESPECIFIC_DEV obsolete since SunOS 5.10 */ );
-X
-X if (error == DDI_SUCCESS)
-X {
-X aperture_dip = dip;
-X ddi_report_dev(dip);
-X }
-X }
-X
-X#ifdef APERTURE_DEBUG
-X
-X cmn_err(CE_CONT, DEV_IDENT ": leaving attach() = %d\n", error);
-X
-X#endif
-X
-X return error;
-X}
-X
-X/*
-X * detach(9E)
-X */
-Xstatic int
-Xaperture_detach
-X(
-X#ifdef __STDC__
-X dev_info_t *dip,
-X ddi_detach_cmd_t cmd
-X#endif
-X)
-X#ifndef __STDC__
-X dev_info_t *dip;
-X ddi_detach_cmd_t cmd;
-X#endif
-X{
-X int error;
-X
-X#ifdef APERTURE_DEBUG
-X
-X cmn_err(CE_CONT, DEV_IDENT ": entering detach()\n");
-X
-X#endif
-X
-X if (cmd != DDI_DETACH)
-X {
-X error = DDI_FAILURE;
-X }
-X else
-X {
-X ddi_remove_minor_node(dip, NULL);
-X aperture_dip = NULL;
-X error = DDI_SUCCESS;
-X }
-X
-X#if APERTURE_DEBUG
-X
-X cmn_err(CE_CONT, DEV_IDENT ": leaving detach() = %d\n", error);
-X
-X#endif
-X
-X return error;
-X}
-X
-X
-Xstatic struct dev_ops aperture_ops =
-X{
-X DEVO_REV, /* revision */
-X 0, /* refcnt */
-X aperture_getinfo, /* getinfo */
-X aperture_identify, /* identify */
-X nulldev, /* probe */
-X aperture_attach, /* attach */
-X aperture_detach, /* detach */
-X nodev, /* reset */
-X &aperture_cb_ops, /* driver operations */
-X NULL /* bus operations */
-X};
-X
-X
-Xstatic struct modldrv modldrv =
-X{
-X &mod_driverops, /* mod_ops structure pointer */
-X DEV_BANNER, /* driver banner string */
-X &aperture_ops, /* dev_ops structure pointer */
-X};
-X
-X
-Xstatic struct modlinkage modlinkage =
-X{
-X MODREV_1, /* module API revision */
-X {
-X &modldrv, /* module driver structure pointer */
-X NULL /* list termination */
-X }
-X};
-X
-X
-X/*
-X * _init(9E)
-X */
-Xint
-X_init
-X(
-X#ifdef __STDC__
-X void
-X#endif
-X)
-X{
-X int error;
-X
-X#ifdef APERTURE_DEBUG
-X
-X cmn_err(CE_CONT, DEV_IDENT ": entering _init()\n");
-X
-X#endif
-X
-X error = mod_install(&modlinkage);
-X
-X#ifdef APERTURE_DEBUG
-X
-X cmn_err(CE_CONT, DEV_IDENT ": leaving _init() = %d\n", error);
-X
-X#endif
-X
-X return error;
-X}
-X
-X/*
-X * _info(9E)
-X */
-Xint
-X_info
-X(
-X#ifdef __STDC__
-X struct modinfo *modinfop
-X#endif
-X)
-X#ifndef __STDC__
-X struct modinfo *modinfop;
-X#endif
-X{
-X int error;
-X
-X#ifdef APERTURE_DEBUG
-X
-X cmn_err(CE_CONT, DEV_IDENT ": entering _info()\n");
-X
-X#endif
-X
-X error = mod_info(&modlinkage, modinfop);
-X
-X#ifdef APERTURE_DEBUG
-X
-X cmn_err(CE_CONT, DEV_IDENT ": leaving _info() = %d\n", error);
-X
-X#endif
-X
-X return error;
-X}
-X
-X/*
-X * _fini(9E)
-X */
-Xint
-X_fini
-X(
-X#ifdef __STDC__
-X void
-X#endif
-X)
-X{
-X int error;
-X
-X#ifdef APERTURE_DEBUG
-X
-X cmn_err(CE_CONT, DEV_IDENT ": entering _fini()\n");
-X
-X#endif
-X
-X error = mod_remove(&modlinkage);
-X
-X#ifdef APERTURE_DEBUG
-X
-X cmn_err(CE_CONT, DEV_IDENT ": leaving _fini() = %d\n", error);
-X
-X#endif
-X
-X return error;
-X}
-END-of-./aperture/aperture.c
-echo x - ./aperture/aperture.conf
-sed 's/^X//' >./aperture/aperture.conf << 'END-of-./aperture/aperture.conf'
-X#
-X# Copyright 1994 Doug Anson, danson@lgc.com & David Holland, davidh@use.com
-X#
-X# File: aperture.conf
-X# Author: Doug Anson (danson@lgc.com)
-X#
-X# Modified: David Holland (davidh@use.com)
-X# Log: Change comments 02/23/94
-X# Change defaults/comments 09/25/94
-X#
-X# Modified: Marc Aurele La France (tsi@xfree86.org)
-X# Log: SPARC changes 2001.09
-X#
-X# Purpose: This conf file is used by the aperture driver.
-X#
-Xname="aperture" parent="pseudo";
-END-of-./aperture/aperture.conf
-echo x - ./aperture/devlink.tab
-sed 's/^X//' >./aperture/devlink.tab << 'END-of-./aperture/devlink.tab'
-X# The following entry is for the aperture driver
-Xtype=ddi_pseudo;name=aperture fbs/\M0
-END-of-./aperture/devlink.tab
-exit
-
+#!/bin/sh
+#
+# This is a shell archive. Save it in a file, remove anything before
+# this line, and then unpack it by entering "sh file". Note, it may
+# create directories; files and directories will be owned by you and
+# have default permissions.
+# Made on Sun Jun 25 20:24:59 CEST 2006 by Martin Bochnig at martux.org
+#
+# This archive contains:
+#
+# ./aperture
+#
+# ./aperture/Makefile
+# ./aperture/Makefile.amd64
+# ./aperture/Makefile.sparcv9
+# ./aperture/README
+# ./aperture/aperture.c
+# ./aperture/aperture.conf
+# ./aperture/devlink.tab
+#
+echo c - ./aperture
+mkdir -p ./aperture > /dev/null 2>&1
+#
+echo x - ./aperture/Makefile
+sed 's/^X//' >./aperture/Makefile << 'END-of-./aperture/Makefile'
+X#
+X# File: makefile for aperture Framebuffer Driver
+X# Author: Doug Anson (danson@lgc.com)
+X# Date: 2/15/94
+X# Modified: David Holland (davidh@use.com)
+X# Date: 2/23/94
+X# - Changed name, and debugging structure
+X# Modified: Marc Aurele La France (tsi@xfree86.org)
+X# Date: 2001.06.08
+X# - SPARC support, cleanup and turf aptest.
+X#
+X# >>NOTE<< Have a look at Makefile.sparcv9 for specifics.
+X#
+X# Modified: Martin Bochnig (martin@martux.org)
+X# Date: 2006.06.24
+X# - Slightly modified to also build on Solaris 10 and 11.
+X# - amd64 64 bit kernel support
+X# - cosmetical changes to also support sun4v, not only sun4u
+X#
+X# >>NOTE<< Have a look at Makefile.amd64 for amd64 specifics.
+X#
+X# GNU gcc compiler
+XCC=gcc
+XCFLGS=-fno-builtin -Wall -O3
+X
+X#
+X# SUNWspro compiler
+X#CC=/opt/SUNWspro/bin/cc
+X#CFLGS=-Xa -xnolib -xO3
+X
+X#
+X# Debug error reporting
+X#DEBUG_FLG=
+X#DEBUG_FLG=-DAPERTURE_DEBUG
+X
+X#
+X# Files and object declarations
+XKERNEL_FLGS=-D_KERNEL -DSUNDDI
+XCFLAGS= $(CFLGS) $(KERNEL_FLGS) $(DEBUG_FLG)
+XCFILES= aperture.c
+XOBJS= aperture.o
+XDRIVER= aperture
+X
+X#
+X# Make rules
+Xall: $(DRIVER)
+X
+X$(DRIVER): $(OBJS)
+X @if [ -f "Makefile.`isainfo -k`" ]; then \
+X make -f Makefile.`isainfo -k` $(DRIVER); \
+X else \
+X rm -f $(DRIVER); \
+X ld -r -o $(DRIVER) $(OBJS); \
+X fi
+X
+Xinstall: $(DRIVER)
+X @if [ -f "Makefile.`isainfo -k`" ]; then \
+X make -f Makefile.`isainfo -k` install; \
+X else \
+X cp aperture.conf /kernel/drv; \
+X cp $(DRIVER) /kernel/drv; \
+X fi
+X
+Xadd_drv:
+X @if [ -f "Makefile.`isainfo -k`" ]; then \
+X make -f Makefile.`isainfo -k` add_drv; \
+X else \
+X add_drv aperture; \
+X fi
+X
+Xclean:
+X rm -f *% *.BAK $(OBJS) $(DRIVER) core
+X
+X.SUFFIXES: .i
+X
+X.c.i:
+X $(CC) -E $(CFLAGS) $*.c > $@
+X
+X.c.o:
+X @if [ -f "Makefile.`isainfo -k`" ]; then \
+X make -f Makefile.`isainfo -k` $@; \
+X else \
+X rm -f $@; \
+X $(CC) -c $(CFLAGS) $*.c -o $@; \
+X fi
+END-of-./aperture/Makefile
+echo x - ./aperture/Makefile.amd64
+sed 's/^X//' >./aperture/Makefile.amd64 << 'END-of-./aperture/Makefile.amd64'
+X#
+X# File: Makefile for aperture Framebuffer Driver
+X# Author: Doug Anson (danson@lgc.com)
+X# Date: 2/15/94
+X# Modified: David Holland (davidh@use.com)
+X# Date: 2/23/94
+X# - Changed name, and debugging structure
+X# Modified: Marc Aurele La France (tsi@xfree86.org)
+X# Date: 2001.06.08
+X# - SPARC support, cleanup and turf aptest.
+X# Modified: Martin Bochnig (martin@martux.org)
+X# - amd64 64 bit kernel support, cosmetics and also
+X# supporting sun4v (and arbitrary sparcv9) platforms
+X# as well as SunOS 5.10 or higher now
+X# - Changed name
+X#
+X
+X#
+X# GNU gcc compiler, version 3.2 or later
+X#
+XCC=gcc
+XCFLGS=-fno-builtin -Wall -O3 -m64 -mcmodel=kernel
+X
+X#
+X# SUNWspro compiler (untested, might not properly work for amd64 here)
+X#CC=/opt/SUNWspro/bin/cc
+X#CFLGS=-Xa -xarch=v9 -xnolib -xO3
+X
+X#
+X# Debug error reporting
+X#DEBUG_FLG=
+X#DEBUG_FLG=-DAPERTURE_DEBUG
+X
+X#
+X# Files and object declarations
+XKERNEL_FLGS=-D_KERNEL -DSUNDDI
+XCFLAGS= $(CFLGS) $(KERNEL_FLGS) $(DEBUG_FLG)
+XCFILES= aperture.c
+XOBJS= aperture.o
+XDRIVER= aperture
+X
+X#
+X# Make rules
+Xall: $(DRIVER)
+X
+X$(DRIVER): $(OBJS)
+X rm -f $(DRIVER)
+X ld -r -o $(DRIVER) $(OBJS)
+X
+Xinstall: $(DRIVER)
+X cp aperture.conf /kernel/drv
+X cp $(DRIVER) /kernel/drv/amd64
+X
+Xadd_drv:
+X add_drv aperture
+X
+Xclean:
+X rm -f *% *.BAK $(OBJS) $(DRIVER) core
+X
+X.SUFFIXES: .i
+X
+X.c.i:
+X $(CC) -E $(CFLAGS) $*.c > $@
+END-of-./aperture/Makefile.amd64
+echo x - ./aperture/Makefile.sparcv9
+sed 's/^X//' >./aperture/Makefile.sparcv9 << 'END-of-./aperture/Makefile.sparcv9'
+X#
+X# File: makefile for aperture Framebuffer Driver
+X# Author: Doug Anson (danson@lgc.com)
+X# Date: 2/15/94
+X# Modified: David Holland (davidh@use.com)
+X# Date: 2/23/94
+X# - Changed name, and debugging structure
+X# Modified: Marc Aurele La France (tsi@xfree86.org)
+X# Date: 2001.06.08
+X# - SPARC support, cleanup and turf aptest.
+X# Modified: Martin Bochnig (martin@martux.org)
+X# Date: 2006.06.24
+X# - Changed name for generic sparcv9 support
+X# - updated to better work with Solaris 10 and 11
+X#
+X
+X#
+X# GNU gcc compiler, version 3.2 or later
+X#
+XCC=gcc
+XCFLGS=-fno-builtin -Wall -O3 -m64
+X
+X#
+X# SUNWspro compiler
+X#CC=/opt/SUNWspro/bin/cc
+X#CFLGS=-Xa -xarch=v9 -xnolib -xO3
+X
+X#
+X# Debug error reporting
+X#DEBUG_FLG=
+X#DEBUG_FLG=-DAPERTURE_DEBUG
+X
+X#
+X# Files and object declarations
+XKERNEL_FLGS=-D_KERNEL -DSUNDDI
+XCFLAGS= $(CFLGS) $(KERNEL_FLGS) $(DEBUG_FLG)
+XCFILES= aperture.c
+XOBJS= aperture.o
+XDRIVER= aperture
+X
+X#
+X# Make rules
+Xall: $(DRIVER)
+X
+X$(DRIVER): $(OBJS)
+X rm -f $(DRIVER)
+X ld -r -o $(DRIVER) $(OBJS)
+X
+Xinstall: $(DRIVER)
+X cp aperture.conf /kernel/drv
+X cp $(DRIVER) /kernel/drv/sparcv9
+X
+Xadd_drv:
+X add_drv aperture
+X
+Xclean:
+X rm -f *% *.BAK $(OBJS) $(DRIVER) core
+X
+X.SUFFIXES: .i
+X
+X.c.i:
+X $(CC) -E $(CFLAGS) $*.c > $@
+END-of-./aperture/Makefile.sparcv9
+echo x - ./aperture/README
+sed 's/^X//' >./aperture/README << 'END-of-./aperture/README'
+XFramebuffer aperture driver.
+X
+XThis driver was written to provide a device that, unlike /dev/mem, allows
+Xmmap()'ing of ranges beyond installed memory.
+X
+XThe original x86-based version of this driver was the collaborative work of
+XDoug Anson (danson@lgc.com), and David Holland (davidh@use.com). It has since
+Xbeen rewritten to also work on sparc machines and - later on - also on sparcv9
+Xand recently amd64 64 bit kernels.
+XIt flawlessly compiles and installs on Solaris 10 and 11 now.
+X
+X
+XInstallation instructions:
+X
+X1) Check the Makefile, for appropriate CC, and CFLAGS definitions. Compiling
+X with APERTURE_DEBUG defined means the driver will generate reams of
+X debugging output. You'll probably want to leave this off...
+X
+X2) Type 'make' (or 'gmake'). Both the driver and test program should compile
+X without any problems. No warning messages should be generated.
+X
+X3) Become 'root'.
+X
+X4) Type 'make install' and 'make add_drv'. The screen should look something
+X like this:
+X
+X # make install
+X cp aperture aperture.conf /kernel/drv
+X # make add_drv
+X add_drv aperture
+X
+X On a sparcv9 machine this will mention the /kernel/drv/sparcv9 directory
+X instead of /kernel/drv. Similarily /kernel/drv/amd64 should be used on amd64.
+X
+X This installs the driver to the system.
+X
+X5) While as root modify the file /etc/devlink.tab, adding these lines:
+X
+X# The following entry is for the framebuffer driver
+Xtype=ddi_pseudo;name=aperture fbs/\M0
+X
+X Add that line exactly as shown. You may also simply add the
+X contents of the devlink.tab file supplied to /etc/devlink.tab.
+X It contains the lines as well. (Yes, that is a tab between
+X aperture and fbs, not spaces - very important)
+X
+X6) Perform a reconfiguration boot of the system.
+X
+X # touch /reconfigure
+X # init 6
+X
+XBug reports, questions, suggestions, etc can be sent to xfree86@xfree86.org.
+END-of-./aperture/README
+echo x - ./aperture/aperture.c
+sed 's/^X//' >./aperture/aperture.c << 'END-of-./aperture/aperture.c'
+X/*
+X * Copyright (C) 2001 The XFree86 Project, Inc. All Rights Reserved.
+X *
+X * Permission is hereby granted, free of charge, to any person obtaining a copy
+X * of this software and associated documentation files (the "Software"), to
+X * deal in the Software without restriction, including without limitation the
+X * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
+X * sell copies of the Software, and to permit persons to whom the Software is
+X * furnished to do so, subject to the following conditions:
+X *
+X * The above copyright notice and this permission notice shall be included in
+X * all copies or substantial portions of the Software.
+X *
+X * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+X * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+X * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+X * XFREE86 PROJECT BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
+X * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+X * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+X *
+X * Except as contained in this notice, the name of the XFree86 Project shall
+X * not be used in advertising or otherwise to promote the sale, use or other
+X * dealings in this Software without prior written authorization from the
+X * XFree86 Project.
+X */
+X
+X/*
+X * Aperture driver for Solaris.
+X */
+X
+X/*
+X * Modified: Martin Bochnig (martin@martux.org)
+X * Log: Commented out obsolete kernel interfaces DDI_IDENTIFIED and DDI_NOT_IDENTIFIED
+X * not supported by SunOS 5.10 or higher anymore,
+X * see http://docs.sun.com/app/docs/doc/819-2255/6n4ibnffr?a=view
+X */
+X
+X#include <sys/conf.h>
+X#include <sys/ddi.h>
+X#include <sys/modctl.h>
+X#include <sys/open.h>
+X#include <sys/stat.h>
+X#include <sys/sunddi.h>
+X
+X#define DEV_IDENT "aperture"
+X#define DEV_BANNER "XFree86 aperture driver"
+X
+X#ifndef D_64BIT
+X#define D_64BIT 0
+X#endif
+X
+X#ifndef NULL
+X#define NULL ((void *)0)
+X#endif
+X
+X/*
+X * open(9E)
+X */
+X/*ARGSUSED*/
+Xstatic int
+Xaperture_open
+X(
+X#ifdef __STDC__
+X dev_t *devp,
+X int flag,
+X int typ,
+X struct cred *cred
+X#endif
+X)
+X#ifndef __STDC__
+X dev_t *devp;
+X int flag;
+X int typ;
+X struct cred *cred;
+X#endif
+X{
+X int error;
+X
+X#ifdef APERTURE_DEBUG
+X
+X cmn_err(CE_CONT, DEV_IDENT ": entering open()\n");
+X
+X#endif
+X
+X if ((typ != OTYP_CHR) || (getminor(*devp)))
+X error = EINVAL;
+X else
+X error = 0;
+X
+X#ifdef APERTURE_DEBUG
+X
+X cmn_err(CE_CONT, DEV_IDENT ": leaving open() = %d\n", error);
+X
+X#endif
+X
+X return error;
+X}
+X
+X/*
+X * mmap(9E)
+X */
+X/*ARGSUSED*/
+Xstatic int
+Xaperture_mmap
+X(
+X#ifdef __STDC__
+X dev_t dev,
+X off_t off,
+X int prot
+X#endif
+X)
+X#ifndef __STDC__
+X dev_t dev;
+X off_t off;
+X int prot;
+X#endif
+X{
+X pfn_t pf;
+X int error;
+X
+X#ifdef APERTURE_DEBUG
+X
+X cmn_err(CE_CONT, DEV_IDENT ": entering mmap(0x%016lx)\n", off);
+X
+X#endif
+X
+X pf = btop((unsigned long)off);
+X
+X /* Deal with mmap(9E) interface limits */
+X error = (int)pf;
+X if ((error < 0) || (pf != (pfn_t)error))
+X error = -1;
+X
+X#ifdef APERTURE_DEBUG
+X
+X cmn_err(CE_CONT, DEV_IDENT ": leaving mmap() = 0x%08lx", error);
+X
+X#endif
+X
+X return error;
+X}
+X
+Xstatic struct cb_ops aperture_cb_ops =
+X{
+X aperture_open, /* open */
+X nulldev, /* close */
+X nodev, /* strategy */
+X nodev, /* print */
+X nodev, /* dump */
+X nodev, /* read */
+X nodev, /* write */
+X nodev, /* ioctl */
+X nodev, /* devmap */
+X aperture_mmap, /* mmap */
+X ddi_segmap, /* segmap */
+X nochpoll, /* poll */
+X ddi_prop_op, /* cb_prop_op */
+X 0, /* streamtab */
+X D_NEW | D_MP | D_64BIT /* Driver compatibility flag */
+X};
+X
+X
+Xstatic dev_info_t *aperture_dip; /* private copy of devinfo pointer */
+X
+X/*
+X * getinfo(9E)
+X */
+X/*ARGSUSED*/
+Xstatic int
+Xaperture_getinfo
+X(
+X#ifdef __STDC__
+X dev_info_t *dip,
+X ddi_info_cmd_t infocmd,
+X void *arg,
+X void **result
+X#endif
+X)
+X#ifndef __STDC__
+X dev_info_t *dip;
+X ddi_info_cmd_t infocmd;
+X void *arg;
+X void **result;
+X#endif
+X{
+X int error;
+X
+X#ifdef APERTURE_DEBUG
+X
+X cmn_err(CE_CONT, DEV_IDENT ": entering getinfo()\n");
+X
+X#endif
+X
+X switch (infocmd) {
+X case DDI_INFO_DEVT2DEVINFO:
+X *result = aperture_dip;
+X error = DDI_SUCCESS;
+X break;
+X case DDI_INFO_DEVT2INSTANCE:
+X *result = NULL;
+X error = DDI_SUCCESS;
+X break;
+X default:
+X error = DDI_FAILURE;
+X }
+X
+X#ifdef APERTURE_DEBUG
+X
+X cmn_err(CE_CONT, DEV_IDENT ": leaving getinfo() = %d\n", error);
+X
+X#endif
+X
+X return error;
+X}
+X
+X/*
+X * identify(9E)
+X */
+X/*ARGSUSED*/
+Xstatic int
+Xaperture_identify
+X(
+X#ifdef __STDC__
+X dev_info_t *dip
+X#endif
+X)
+X#ifndef __STDC__
+X dev_info_t *dip;
+X#endif
+X{
+X int error;
+X
+X#ifdef APERTURE_DEBUG
+X
+X cmn_err(CE_CONT, DEV_IDENT ": entering identify()\n");
+X
+X#endif
+X
+X if (strcmp(ddi_get_name(dip), DEV_IDENT))
+X error = 1 /* DDI_NOT_IDENTIFIED obsolete since SunOS 5.10 */ ;
+X else
+X error = 2 /* DDI_IDENTIFIED obsolete since SunOS 5.10 */ ;
+X
+X#ifdef APERTURE_DEBUG
+X
+X cmn_err(CE_CONT, DEV_IDENT ": leaving identify() = %d\n", error);
+X
+X#endif
+X
+X return error;
+X}
+X
+X/*
+X * attach(9E)
+X */
+X/*ARGSUSED*/
+Xstatic int
+Xaperture_attach
+X(
+X#ifdef __STDC__
+X dev_info_t *dip,
+X ddi_attach_cmd_t cmd
+X#endif
+X)
+X#ifndef __STDC__
+X dev_info_t *dip;
+X ddi_attach_cmd_t cmd;
+X#endif
+X{
+X int error;
+X
+X#ifdef APERTURE_DEBUG
+X
+X cmn_err(CE_CONT, DEV_IDENT ": entering attach()\n");
+X
+X#endif
+X
+X if (cmd != DDI_ATTACH)
+X {
+X
+X#ifdef APERTURE_DEBUG
+X
+X cmn_err(CE_CONT, DEV_IDENT ": not attach(, DDI_ATTACH)\n");
+X
+X#endif
+X
+X error = DDI_FAILURE;
+X }
+X else
+X {
+X error = ddi_create_minor_node(dip, ddi_get_name(dip), S_IFCHR,
+X (minor_t)ddi_get_instance(dip),
+X NULL, 0 /* NODESPECIFIC_DEV obsolete since SunOS 5.10 */ );
+X
+X if (error == DDI_SUCCESS)
+X {
+X aperture_dip = dip;
+X ddi_report_dev(dip);
+X }
+X }
+X
+X#ifdef APERTURE_DEBUG
+X
+X cmn_err(CE_CONT, DEV_IDENT ": leaving attach() = %d\n", error);
+X
+X#endif
+X
+X return error;
+X}
+X
+X/*
+X * detach(9E)
+X */
+Xstatic int
+Xaperture_detach
+X(
+X#ifdef __STDC__
+X dev_info_t *dip,
+X ddi_detach_cmd_t cmd
+X#endif
+X)
+X#ifndef __STDC__
+X dev_info_t *dip;
+X ddi_detach_cmd_t cmd;
+X#endif
+X{
+X int error;
+X
+X#ifdef APERTURE_DEBUG
+X
+X cmn_err(CE_CONT, DEV_IDENT ": entering detach()\n");
+X
+X#endif
+X
+X if (cmd != DDI_DETACH)
+X {
+X error = DDI_FAILURE;
+X }
+X else
+X {
+X ddi_remove_minor_node(dip, NULL);
+X aperture_dip = NULL;
+X error = DDI_SUCCESS;
+X }
+X
+X#if APERTURE_DEBUG
+X
+X cmn_err(CE_CONT, DEV_IDENT ": leaving detach() = %d\n", error);
+X
+X#endif
+X
+X return error;
+X}
+X
+X
+Xstatic struct dev_ops aperture_ops =
+X{
+X DEVO_REV, /* revision */
+X 0, /* refcnt */
+X aperture_getinfo, /* getinfo */
+X aperture_identify, /* identify */
+X nulldev, /* probe */
+X aperture_attach, /* attach */
+X aperture_detach, /* detach */
+X nodev, /* reset */
+X &aperture_cb_ops, /* driver operations */
+X NULL /* bus operations */
+X};
+X
+X
+Xstatic struct modldrv modldrv =
+X{
+X &mod_driverops, /* mod_ops structure pointer */
+X DEV_BANNER, /* driver banner string */
+X &aperture_ops, /* dev_ops structure pointer */
+X};
+X
+X
+Xstatic struct modlinkage modlinkage =
+X{
+X MODREV_1, /* module API revision */
+X {
+X &modldrv, /* module driver structure pointer */
+X NULL /* list termination */
+X }
+X};
+X
+X
+X/*
+X * _init(9E)
+X */
+Xint
+X_init
+X(
+X#ifdef __STDC__
+X void
+X#endif
+X)
+X{
+X int error;
+X
+X#ifdef APERTURE_DEBUG
+X
+X cmn_err(CE_CONT, DEV_IDENT ": entering _init()\n");
+X
+X#endif
+X
+X error = mod_install(&modlinkage);
+X
+X#ifdef APERTURE_DEBUG
+X
+X cmn_err(CE_CONT, DEV_IDENT ": leaving _init() = %d\n", error);
+X
+X#endif
+X
+X return error;
+X}
+X
+X/*
+X * _info(9E)
+X */
+Xint
+X_info
+X(
+X#ifdef __STDC__
+X struct modinfo *modinfop
+X#endif
+X)
+X#ifndef __STDC__
+X struct modinfo *modinfop;
+X#endif
+X{
+X int error;
+X
+X#ifdef APERTURE_DEBUG
+X
+X cmn_err(CE_CONT, DEV_IDENT ": entering _info()\n");
+X
+X#endif
+X
+X error = mod_info(&modlinkage, modinfop);
+X
+X#ifdef APERTURE_DEBUG
+X
+X cmn_err(CE_CONT, DEV_IDENT ": leaving _info() = %d\n", error);
+X
+X#endif
+X
+X return error;
+X}
+X
+X/*
+X * _fini(9E)
+X */
+Xint
+X_fini
+X(
+X#ifdef __STDC__
+X void
+X#endif
+X)
+X{
+X int error;
+X
+X#ifdef APERTURE_DEBUG
+X
+X cmn_err(CE_CONT, DEV_IDENT ": entering _fini()\n");
+X
+X#endif
+X
+X error = mod_remove(&modlinkage);
+X
+X#ifdef APERTURE_DEBUG
+X
+X cmn_err(CE_CONT, DEV_IDENT ": leaving _fini() = %d\n", error);
+X
+X#endif
+X
+X return error;
+X}
+END-of-./aperture/aperture.c
+echo x - ./aperture/aperture.conf
+sed 's/^X//' >./aperture/aperture.conf << 'END-of-./aperture/aperture.conf'
+X#
+X# Copyright 1994 Doug Anson, danson@lgc.com & David Holland, davidh@use.com
+X#
+X# File: aperture.conf
+X# Author: Doug Anson (danson@lgc.com)
+X#
+X# Modified: David Holland (davidh@use.com)
+X# Log: Change comments 02/23/94
+X# Change defaults/comments 09/25/94
+X#
+X# Modified: Marc Aurele La France (tsi@xfree86.org)
+X# Log: SPARC changes 2001.09
+X#
+X# Purpose: This conf file is used by the aperture driver.
+X#
+Xname="aperture" parent="pseudo";
+END-of-./aperture/aperture.conf
+echo x - ./aperture/devlink.tab
+sed 's/^X//' >./aperture/devlink.tab << 'END-of-./aperture/devlink.tab'
+X# The following entry is for the aperture driver
+Xtype=ddi_pseudo;name=aperture fbs/\M0
+END-of-./aperture/devlink.tab
+exit
+
diff --git a/xorg-server/hw/xfree86/os-support/solaris/sun_inout.s b/xorg-server/hw/xfree86/os-support/solaris/sun_inout.s
index c13ba8b2f..e8f03d0e8 100644
--- a/xorg-server/hw/xfree86/os-support/solaris/sun_inout.s
+++ b/xorg-server/hw/xfree86/os-support/solaris/sun_inout.s
@@ -1,124 +1,124 @@
-/ $XFree86: xc/programs/Xserver/hw/xfree86/os-support/sunos/sun_inout.s,v 1.1 2001/05/28 02:42:31 tsi Exp $
-/
-/ Copyright 1994-2001 The XFree86 Project, Inc. All Rights Reserved.
-/
-/ Permission is hereby granted, free of charge, to any person obtaining a copy
-/ of this software and associated documentation files (the "Software"), to deal
-/ in the Software without restriction, including without limitation the rights
-/ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-/ copies of the Software, and to permit persons to whom the Software is
-/ furnished to do so, subject to the following conditions:
-/
-/ The above copyright notice and this permission notice shall be included in
-/ all copies or substantial portions of the Software.
-/
-/ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-/ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-/ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-/ XFREE86 PROJECT BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
-/ IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-/ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-/
-/ Except as contained in this notice, the name of the XFree86 Project shall not
-/ be used in advertising or otherwise to promote the sale, use or other
-/ dealings in this Software without prior written authorization from the
-/ XFree86 Project.
-/
-/
-/ File: sun_inout.s
-/
-/ Purpose: Provide inb(), inw(), inl(), outb(), outw(), outl() functions
-/ for Solaris x86 using the ProWorks compiler by SunPro
-/
-/ Author: Installed into XFree86 SuperProbe by Doug Anson (danson@lgc.com)
-/ Portions donated to XFree86 by Steve Dever (Steve.Dever@Eng.Sun.Com)
-/
-/ Synopsis: (c callable external declarations)
-/ extern unsigned char inb(int port);
-/ extern unsigned short inw(int port);
-/ extern unsigned long inl(int port);
-/ extern void outb(int port, unsigned char value);
-/ extern void outw(int port, unsigned short value);
-/ extern void outl(int port, unsigned long value);
-/
-
-.file "sunos_inout.s"
-.text
-
-.globl inb
-.globl inw
-.globl inl
-.globl outb
-.globl outw
-.globl outl
-
-/
-/ unsigned char inb(int port);
-/
-.align 4
-inb:
- movl 4(%esp),%edx
- subl %eax,%eax
- inb (%dx)
- ret
-.type inb,@function
-.size inb,.-inb
-
-/
-/ unsigned short inw(int port);
-/
-.align 4
-inw:
- movl 4(%esp),%edx
- subl %eax,%eax
- inw (%dx)
- ret
-.type inw,@function
-.size inw,.-inw
-
-/
-/ unsigned long inl(int port);
-/
-.align 4
-inl:
- movl 4(%esp),%edx
- inl (%dx)
- ret
-.type inl,@function
-.size inl,.-inl
-
-/
-/ void outb(int port, unsigned char value);
-/
-.align 4
-outb:
- movl 4(%esp),%edx
- movl 8(%esp),%eax
- outb (%dx)
- ret
-.type outb,@function
-.size outb,.-outb
-
-/
-/ void outw(int port, unsigned short value);
-/
-.align 4
-outw:
- movl 4(%esp),%edx
- movl 8(%esp),%eax
- outw (%dx)
- ret
-.type outw,@function
-.size outw,.-outw
-
-/
-/ void outl(int port, unsigned long value);
-/
-.align 4
-outl:
- movl 4(%esp),%edx
- movl 8(%esp),%eax
- outl (%dx)
- ret
-.type outl,@function
-.size outl,.-outl
+/ $XFree86: xc/programs/Xserver/hw/xfree86/os-support/sunos/sun_inout.s,v 1.1 2001/05/28 02:42:31 tsi Exp $
+/
+/ Copyright 1994-2001 The XFree86 Project, Inc. All Rights Reserved.
+/
+/ Permission is hereby granted, free of charge, to any person obtaining a copy
+/ of this software and associated documentation files (the "Software"), to deal
+/ in the Software without restriction, including without limitation the rights
+/ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+/ copies of the Software, and to permit persons to whom the Software is
+/ furnished to do so, subject to the following conditions:
+/
+/ The above copyright notice and this permission notice shall be included in
+/ all copies or substantial portions of the Software.
+/
+/ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+/ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+/ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+/ XFREE86 PROJECT BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
+/ IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+/ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+/
+/ Except as contained in this notice, the name of the XFree86 Project shall not
+/ be used in advertising or otherwise to promote the sale, use or other
+/ dealings in this Software without prior written authorization from the
+/ XFree86 Project.
+/
+/
+/ File: sun_inout.s
+/
+/ Purpose: Provide inb(), inw(), inl(), outb(), outw(), outl() functions
+/ for Solaris x86 using the ProWorks compiler by SunPro
+/
+/ Author: Installed into XFree86 SuperProbe by Doug Anson (danson@lgc.com)
+/ Portions donated to XFree86 by Steve Dever (Steve.Dever@Eng.Sun.Com)
+/
+/ Synopsis: (c callable external declarations)
+/ extern unsigned char inb(int port);
+/ extern unsigned short inw(int port);
+/ extern unsigned long inl(int port);
+/ extern void outb(int port, unsigned char value);
+/ extern void outw(int port, unsigned short value);
+/ extern void outl(int port, unsigned long value);
+/
+
+.file "sunos_inout.s"
+.text
+
+.globl inb
+.globl inw
+.globl inl
+.globl outb
+.globl outw
+.globl outl
+
+/
+/ unsigned char inb(int port);
+/
+.align 4
+inb:
+ movl 4(%esp),%edx
+ subl %eax,%eax
+ inb (%dx)
+ ret
+.type inb,@function
+.size inb,.-inb
+
+/
+/ unsigned short inw(int port);
+/
+.align 4
+inw:
+ movl 4(%esp),%edx
+ subl %eax,%eax
+ inw (%dx)
+ ret
+.type inw,@function
+.size inw,.-inw
+
+/
+/ unsigned long inl(int port);
+/
+.align 4
+inl:
+ movl 4(%esp),%edx
+ inl (%dx)
+ ret
+.type inl,@function
+.size inl,.-inl
+
+/
+/ void outb(int port, unsigned char value);
+/
+.align 4
+outb:
+ movl 4(%esp),%edx
+ movl 8(%esp),%eax
+ outb (%dx)
+ ret
+.type outb,@function
+.size outb,.-outb
+
+/
+/ void outw(int port, unsigned short value);
+/
+.align 4
+outw:
+ movl 4(%esp),%edx
+ movl 8(%esp),%eax
+ outw (%dx)
+ ret
+.type outw,@function
+.size outw,.-outw
+
+/
+/ void outl(int port, unsigned long value);
+/
+.align 4
+outl:
+ movl 4(%esp),%edx
+ movl 8(%esp),%eax
+ outl (%dx)
+ ret
+.type outl,@function
+.size outl,.-outl
diff --git a/xorg-server/hw/xfree86/ramdac/CURSOR.NOTES b/xorg-server/hw/xfree86/ramdac/CURSOR.NOTES
index a0ecd02ae..726e2edc1 100644
--- a/xorg-server/hw/xfree86/ramdac/CURSOR.NOTES
+++ b/xorg-server/hw/xfree86/ramdac/CURSOR.NOTES
@@ -1,191 +1,191 @@
- CURSOR.NOTES
-
- This file describes how to add hardware cursor support to a chipset
-driver. Though the cursor support itself is in the ramdac module,
-cursor management is separate from the rest of the module.
-
-
-1) CURSOR INITIALIZATION AND SHUTDOWN
-
- All relevant prototypes and defines are in xf86Cursor.h.
-
- To initialize the cursor, the driver should allocate an
-xf86CursorInfoRec via xf86CreateCursorInfoRec(), fill it out as described
-later in this document and pass it to xf86InitCursor(). xf86InitCursor()
-must be called _after_ the software cursor initialization (usually
-miDCInitialize).
-
- When shutting down, the driver should free the xf86CursorInfoRec
-structure in its CloseScreen function via xf86DestroyCursorInfoRec().
-
-
-2) FILLING OUT THE xf86CursorInfoRec
-
- The driver informs the ramdac module of it's hardware cursor capablities by
-filling out an xf86CursorInfoRec structure and passing it to xf86InitCursor().
-The xf86CursorInfoRec contains the following function pointers:
-
-
-/**** These functions are required ****/
-
-void ShowCursor(ScrnInfoPtr pScrn)
-
- ShowCursor should display the current cursor.
-
-void HideCursor(ScrnInfoPtr pScrn)
-
- HideCursor should hide the current cursor.
-
-void SetCursorPosition(ScrnInfoPtr pScrn, int x, int y)
-
- Set the cursor position to (x,y). X and/or y may be negative
- indicating that the cursor image is partially offscreen on
- the left and/or top edges of the screen. It is up to the
- driver to trap for this and deal with that situation.
-
-void SetCursorColors(ScrnInfoPtr pScrn, int bg, int fg)
-
- Set the cursor foreground and background colors. In 8bpp, fg and
- bg are indicies into the current colormap unless the
- HARDWARE_CURSOR_TRUECOLOR_AT_8BPP flag is set. In that case
- and in all other bpps the fg and bg are in 8-8-8 RGB format.
-
-void LoadCursorImage(ScrnInfoPtr pScrn, unsigned char *bits)
-
- LoadCursorImage is how the hardware cursor bits computed by the
- RealizeCursor function will be passed to the driver when the cursor
- shape needs to be changed.
-
-
-/**** These functions are optional ****/
-
-
-unsigned char* RealizeCursor(xf86CursorInfoPtr infoPtr, CursorPtr pCurs)
-
- If RealizeCursor is not provided by the driver, one will be provided
- for you based on the Flags field described below. The driver must
- provide this function if the hardware cursor format is not one of
- the common ones supported by this module.
-
-
-Bool UseHWCursor(ScreenPtr pScreen, CursorPtr pCurs)
-
- If the driver is unable to use a hardware cursor for reasons
- other than the cursor being larger than the maximum specified
- in the MaxWidth or MaxHeight field below, it can supply the
- UseHWCursor function. If UseHWCursor is provided by the driver,
- it will be called whenever the cursor shape changes or the video
- mode changes. This is useful for when the hardware cursor cannot
- be used in interlaced or doublescan modes.
-
-
-/**** The following fields are required ****/
-
-MaxWidth
-MaxHeight
-
- These indicate the largest sized cursor that can be a hardware
- cursor. It will fall back to a software cursor when a cursor
- exceeding this size needs to be used.
-
-
-Flags
-
- /* Color related flags */
-
- HARDWARE_CURSOR_TRUECOLOR_AT_8BPP
-
- This indicates that the colors passed to the SetCursorColors
- function should not be in 8-8-8 RGB format in 8bpp but rather,
- they should be the pixel values from the current colormap.
-
-
- /* Cursor data loading flags */
-
- HARDWARE_CURSOR_SHOW_TRANSPARENT
-
- The HideCursor entry will normally be called instead of displaying a
- completely transparent cursor, or when a switch to a software cursor
- needs to occur. This flag prevents this behaviour, thus causing the
- LoadCursorImage entry to be called with transparent cursor data.
- NOTE: If you use this flag and provide your own RealizeCursor() entry,
- ensure this entry returns transparent cursor data when called
- with a NULL pCurs parameter.
-
- HARDWARE_CURSOR_UPDATE_UNHIDDEN
-
- This flag prevents the HideCursor call that would normally occur just before
- the LoadCursorImage entry is to be called to load a new hardware cursor
- image.
-
-
- /* Cursor data packing flags */
-
- Hardware cursor data consists of two pieces, a source and a mask.
- The mask is a bitmap indicating which parts of the cursor are
- transparent and which parts are drawn. The source is a bitmap
- indicating which parts of the non-transparent portion of the the
- cursor should be painted in the foreground color and which should
- be painted in the background color.
-
- HARDWARE_CURSOR_INVERT_MASK
-
- By default, set bits indicate the opaque part of the mask bitmap
- and clear bits indicate the transparent part. If your hardware
- wants this the opposite way, this flag will invert the mask.
-
- HARDWARE_CURSOR_SWAP_SOURCE_AND_MASK
-
- By default, RealizeCursor will store the source first and then
- the mask. If the hardware needs this order reversed then this
- flag should be set.
-
- HARDWARE_CURSOR_AND_SOURCE_WITH_MASK
-
- This flag will have the module logical AND the source with the mask to make
- sure there are no source bits set if the corresponding mask bits
- aren't set. Some hardware will not care if source bits are set where
- there are supposed to be transparent areas, but some hardware will
- interpret this as a third cursor color or similar. That type of
- hardware will need this flag set.
-
- HARDWARE_CURSOR_BIT_ORDER_MSBFIRST
-
- By default, it is assumed that the least significant bit in each byte
- corresponds to the leftmost pixel on the screen. If your hardware
- has this reversed you should set this flag.
-
- HARDWARE_CURSOR_NIBBLE_SWAPPED
-
- If your hardware requires byte swapping of the hardware cursor, enable
- this option.
-
-
- /* Source-Mask interleaving flags */
-
- By default the source and mask data are inlined (source first unless
- the HARDWARE_CURSOR_SWAP_SOURCE_AND_MASK flag is set). Some hardware
- will require the source and mask to be interleaved, that is, X number
- of source bits should packed and then X number of mask bits repeating
- until the entire pattern is stored. The following flags describe the
- bit interleave.
-
- HARDWARE_CURSOR_SOURCE_MASK_NOT_INTERLEAVED
-
- This one is the default.
-
- The following are for interleaved cursors.
-
- HARDWARE_CURSOR_SOURCE_MASK_INTERLEAVE_1
- HARDWARE_CURSOR_SOURCE_MASK_INTERLEAVE_8
- HARDWARE_CURSOR_SOURCE_MASK_INTERLEAVE_16
- HARDWARE_CURSOR_SOURCE_MASK_INTERLEAVE_32
- HARDWARE_CURSOR_SOURCE_MASK_INTERLEAVE_64
-
- And once again, if your hardware requires something different than
- these packing styles, your driver can supply its own RealizeCursor
- function.
-
-
-
-$XFree86: xc/programs/Xserver/hw/xfree86/ramdac/CURSOR.NOTES,v 1.4tsi Exp $
+ CURSOR.NOTES
+
+ This file describes how to add hardware cursor support to a chipset
+driver. Though the cursor support itself is in the ramdac module,
+cursor management is separate from the rest of the module.
+
+
+1) CURSOR INITIALIZATION AND SHUTDOWN
+
+ All relevant prototypes and defines are in xf86Cursor.h.
+
+ To initialize the cursor, the driver should allocate an
+xf86CursorInfoRec via xf86CreateCursorInfoRec(), fill it out as described
+later in this document and pass it to xf86InitCursor(). xf86InitCursor()
+must be called _after_ the software cursor initialization (usually
+miDCInitialize).
+
+ When shutting down, the driver should free the xf86CursorInfoRec
+structure in its CloseScreen function via xf86DestroyCursorInfoRec().
+
+
+2) FILLING OUT THE xf86CursorInfoRec
+
+ The driver informs the ramdac module of it's hardware cursor capablities by
+filling out an xf86CursorInfoRec structure and passing it to xf86InitCursor().
+The xf86CursorInfoRec contains the following function pointers:
+
+
+/**** These functions are required ****/
+
+void ShowCursor(ScrnInfoPtr pScrn)
+
+ ShowCursor should display the current cursor.
+
+void HideCursor(ScrnInfoPtr pScrn)
+
+ HideCursor should hide the current cursor.
+
+void SetCursorPosition(ScrnInfoPtr pScrn, int x, int y)
+
+ Set the cursor position to (x,y). X and/or y may be negative
+ indicating that the cursor image is partially offscreen on
+ the left and/or top edges of the screen. It is up to the
+ driver to trap for this and deal with that situation.
+
+void SetCursorColors(ScrnInfoPtr pScrn, int bg, int fg)
+
+ Set the cursor foreground and background colors. In 8bpp, fg and
+ bg are indicies into the current colormap unless the
+ HARDWARE_CURSOR_TRUECOLOR_AT_8BPP flag is set. In that case
+ and in all other bpps the fg and bg are in 8-8-8 RGB format.
+
+void LoadCursorImage(ScrnInfoPtr pScrn, unsigned char *bits)
+
+ LoadCursorImage is how the hardware cursor bits computed by the
+ RealizeCursor function will be passed to the driver when the cursor
+ shape needs to be changed.
+
+
+/**** These functions are optional ****/
+
+
+unsigned char* RealizeCursor(xf86CursorInfoPtr infoPtr, CursorPtr pCurs)
+
+ If RealizeCursor is not provided by the driver, one will be provided
+ for you based on the Flags field described below. The driver must
+ provide this function if the hardware cursor format is not one of
+ the common ones supported by this module.
+
+
+Bool UseHWCursor(ScreenPtr pScreen, CursorPtr pCurs)
+
+ If the driver is unable to use a hardware cursor for reasons
+ other than the cursor being larger than the maximum specified
+ in the MaxWidth or MaxHeight field below, it can supply the
+ UseHWCursor function. If UseHWCursor is provided by the driver,
+ it will be called whenever the cursor shape changes or the video
+ mode changes. This is useful for when the hardware cursor cannot
+ be used in interlaced or doublescan modes.
+
+
+/**** The following fields are required ****/
+
+MaxWidth
+MaxHeight
+
+ These indicate the largest sized cursor that can be a hardware
+ cursor. It will fall back to a software cursor when a cursor
+ exceeding this size needs to be used.
+
+
+Flags
+
+ /* Color related flags */
+
+ HARDWARE_CURSOR_TRUECOLOR_AT_8BPP
+
+ This indicates that the colors passed to the SetCursorColors
+ function should not be in 8-8-8 RGB format in 8bpp but rather,
+ they should be the pixel values from the current colormap.
+
+
+ /* Cursor data loading flags */
+
+ HARDWARE_CURSOR_SHOW_TRANSPARENT
+
+ The HideCursor entry will normally be called instead of displaying a
+ completely transparent cursor, or when a switch to a software cursor
+ needs to occur. This flag prevents this behaviour, thus causing the
+ LoadCursorImage entry to be called with transparent cursor data.
+ NOTE: If you use this flag and provide your own RealizeCursor() entry,
+ ensure this entry returns transparent cursor data when called
+ with a NULL pCurs parameter.
+
+ HARDWARE_CURSOR_UPDATE_UNHIDDEN
+
+ This flag prevents the HideCursor call that would normally occur just before
+ the LoadCursorImage entry is to be called to load a new hardware cursor
+ image.
+
+
+ /* Cursor data packing flags */
+
+ Hardware cursor data consists of two pieces, a source and a mask.
+ The mask is a bitmap indicating which parts of the cursor are
+ transparent and which parts are drawn. The source is a bitmap
+ indicating which parts of the non-transparent portion of the the
+ cursor should be painted in the foreground color and which should
+ be painted in the background color.
+
+ HARDWARE_CURSOR_INVERT_MASK
+
+ By default, set bits indicate the opaque part of the mask bitmap
+ and clear bits indicate the transparent part. If your hardware
+ wants this the opposite way, this flag will invert the mask.
+
+ HARDWARE_CURSOR_SWAP_SOURCE_AND_MASK
+
+ By default, RealizeCursor will store the source first and then
+ the mask. If the hardware needs this order reversed then this
+ flag should be set.
+
+ HARDWARE_CURSOR_AND_SOURCE_WITH_MASK
+
+ This flag will have the module logical AND the source with the mask to make
+ sure there are no source bits set if the corresponding mask bits
+ aren't set. Some hardware will not care if source bits are set where
+ there are supposed to be transparent areas, but some hardware will
+ interpret this as a third cursor color or similar. That type of
+ hardware will need this flag set.
+
+ HARDWARE_CURSOR_BIT_ORDER_MSBFIRST
+
+ By default, it is assumed that the least significant bit in each byte
+ corresponds to the leftmost pixel on the screen. If your hardware
+ has this reversed you should set this flag.
+
+ HARDWARE_CURSOR_NIBBLE_SWAPPED
+
+ If your hardware requires byte swapping of the hardware cursor, enable
+ this option.
+
+
+ /* Source-Mask interleaving flags */
+
+ By default the source and mask data are inlined (source first unless
+ the HARDWARE_CURSOR_SWAP_SOURCE_AND_MASK flag is set). Some hardware
+ will require the source and mask to be interleaved, that is, X number
+ of source bits should packed and then X number of mask bits repeating
+ until the entire pattern is stored. The following flags describe the
+ bit interleave.
+
+ HARDWARE_CURSOR_SOURCE_MASK_NOT_INTERLEAVED
+
+ This one is the default.
+
+ The following are for interleaved cursors.
+
+ HARDWARE_CURSOR_SOURCE_MASK_INTERLEAVE_1
+ HARDWARE_CURSOR_SOURCE_MASK_INTERLEAVE_8
+ HARDWARE_CURSOR_SOURCE_MASK_INTERLEAVE_16
+ HARDWARE_CURSOR_SOURCE_MASK_INTERLEAVE_32
+ HARDWARE_CURSOR_SOURCE_MASK_INTERLEAVE_64
+
+ And once again, if your hardware requires something different than
+ these packing styles, your driver can supply its own RealizeCursor
+ function.
+
+
+
+$XFree86: xc/programs/Xserver/hw/xfree86/ramdac/CURSOR.NOTES,v 1.4tsi Exp $
diff --git a/xorg-server/hw/xfree86/vgahw/Makefile.am b/xorg-server/hw/xfree86/vgahw/Makefile.am
index 0634e47e3..f48e46a11 100644
--- a/xorg-server/hw/xfree86/vgahw/Makefile.am
+++ b/xorg-server/hw/xfree86/vgahw/Makefile.am
@@ -1,9 +1,9 @@
-module_LTLIBRARIES = libvgahw.la
-libvgahw_la_LDFLAGS = -avoid-version
-libvgahw_la_SOURCES = vgaHW.c vgaHWmodule.c
-INCLUDES = $(XORG_INCS) -I$(srcdir)/../ddc -I$(srcdir)/../i2c
-AM_CFLAGS = $(DIX_CFLAGS) $(XORG_CFLAGS)
-
-sdk_HEADERS = vgaHW.h
-
-EXTRA_DIST = vgaCmap.c
+module_LTLIBRARIES = libvgahw.la
+libvgahw_la_LDFLAGS = -avoid-version
+libvgahw_la_SOURCES = vgaHW.c vgaHWmodule.c
+INCLUDES = $(XORG_INCS) -I$(srcdir)/../ddc -I$(srcdir)/../i2c
+AM_CFLAGS = $(DIX_CFLAGS) $(XORG_CFLAGS)
+
+sdk_HEADERS = vgaHW.h
+
+EXTRA_DIST = vgaCmap.c
diff --git a/xorg-server/hw/xfree86/x86emu/Makefile.am b/xorg-server/hw/xfree86/x86emu/Makefile.am
index c4108cffb..df9697767 100644
--- a/xorg-server/hw/xfree86/x86emu/Makefile.am
+++ b/xorg-server/hw/xfree86/x86emu/Makefile.am
@@ -1,29 +1,29 @@
-if INT10_X86EMU
-noinst_LTLIBRARIES = libx86emu.la
-endif
-
-libx86emu_la_SOURCES = debug.c \
- decode.c \
- fpu.c \
- ops2.c \
- ops.c \
- prim_ops.c \
- sys.c \
- x86emu.h
-
-INCLUDES =
-
-AM_CFLAGS = $(DIX_CFLAGS) $(XORG_CFLAGS)
-
-EXTRA_DIST = validate.c \
- x86emu/debug.h \
- x86emu/decode.h \
- x86emu/fpu.h \
- x86emu/fpu_regs.h \
- x86emu/ops.h \
- x86emu/prim_asm.h \
- x86emu/prim_ops.h \
- x86emu/prim_x86_gcc.h \
- x86emu/regs.h \
- x86emu/types.h \
- x86emu/x86emui.h
+if INT10_X86EMU
+noinst_LTLIBRARIES = libx86emu.la
+endif
+
+libx86emu_la_SOURCES = debug.c \
+ decode.c \
+ fpu.c \
+ ops2.c \
+ ops.c \
+ prim_ops.c \
+ sys.c \
+ x86emu.h
+
+INCLUDES =
+
+AM_CFLAGS = $(DIX_CFLAGS) $(XORG_CFLAGS)
+
+EXTRA_DIST = validate.c \
+ x86emu/debug.h \
+ x86emu/decode.h \
+ x86emu/fpu.h \
+ x86emu/fpu_regs.h \
+ x86emu/ops.h \
+ x86emu/prim_asm.h \
+ x86emu/prim_ops.h \
+ x86emu/prim_x86_gcc.h \
+ x86emu/regs.h \
+ x86emu/types.h \
+ x86emu/x86emui.h
diff --git a/xorg-server/hw/xnest/icon b/xorg-server/hw/xnest/icon
index aa00ca497..725f1131a 100644
--- a/xorg-server/hw/xnest/icon
+++ b/xorg-server/hw/xnest/icon
@@ -1,14 +1,14 @@
-#define icon_width 32
-#define icon_height 32
-static unsigned char icon_bits[] = {
- 0xff, 0x00, 0x00, 0xc0, 0xfe, 0x01, 0x00, 0xc0, 0xfc, 0x03, 0x00, 0x60,
- 0xf8, 0x07, 0x00, 0x30, 0xf8, 0x07, 0x00, 0x18, 0xf0, 0x0f, 0x00, 0x0c,
- 0xe0, 0x1f, 0x00, 0x06, 0xc0, 0x3f, 0x00, 0x06, 0xc0, 0x3f, 0x00, 0x03,
- 0x80, 0x7f, 0x80, 0x01, 0x00, 0xff, 0xc0, 0x00, 0x00, 0xfe, 0x61, 0x00,
- 0x00, 0xfe, 0x31, 0x00, 0x00, 0xfc, 0x33, 0x00, 0x00, 0xf8, 0x1b, 0x00,
- 0x00, 0xf0, 0x0d, 0x00, 0x00, 0xf0, 0x0e, 0x00, 0x00, 0x60, 0x1f, 0x00,
- 0x00, 0xb0, 0x3f, 0x00, 0x00, 0x98, 0x7f, 0x00, 0x00, 0x98, 0x7f, 0x00,
- 0x00, 0x0c, 0xff, 0x00, 0x00, 0x06, 0xfe, 0x01, 0x00, 0x03, 0xfc, 0x03,
- 0x80, 0x01, 0xfc, 0x03, 0xc0, 0x00, 0xf8, 0x07, 0xc0, 0x00, 0xf0, 0x0f,
- 0x60, 0x00, 0xe0, 0x1f, 0x30, 0x00, 0xe0, 0x1f, 0x18, 0x00, 0xc0, 0x3f,
- 0x0c, 0x00, 0x80, 0x7f, 0x06, 0x00, 0x00, 0xff};
+#define icon_width 32
+#define icon_height 32
+static unsigned char icon_bits[] = {
+ 0xff, 0x00, 0x00, 0xc0, 0xfe, 0x01, 0x00, 0xc0, 0xfc, 0x03, 0x00, 0x60,
+ 0xf8, 0x07, 0x00, 0x30, 0xf8, 0x07, 0x00, 0x18, 0xf0, 0x0f, 0x00, 0x0c,
+ 0xe0, 0x1f, 0x00, 0x06, 0xc0, 0x3f, 0x00, 0x06, 0xc0, 0x3f, 0x00, 0x03,
+ 0x80, 0x7f, 0x80, 0x01, 0x00, 0xff, 0xc0, 0x00, 0x00, 0xfe, 0x61, 0x00,
+ 0x00, 0xfe, 0x31, 0x00, 0x00, 0xfc, 0x33, 0x00, 0x00, 0xf8, 0x1b, 0x00,
+ 0x00, 0xf0, 0x0d, 0x00, 0x00, 0xf0, 0x0e, 0x00, 0x00, 0x60, 0x1f, 0x00,
+ 0x00, 0xb0, 0x3f, 0x00, 0x00, 0x98, 0x7f, 0x00, 0x00, 0x98, 0x7f, 0x00,
+ 0x00, 0x0c, 0xff, 0x00, 0x00, 0x06, 0xfe, 0x01, 0x00, 0x03, 0xfc, 0x03,
+ 0x80, 0x01, 0xfc, 0x03, 0xc0, 0x00, 0xf8, 0x07, 0xc0, 0x00, 0xf0, 0x0f,
+ 0x60, 0x00, 0xe0, 0x1f, 0x30, 0x00, 0xe0, 0x1f, 0x18, 0x00, 0xc0, 0x3f,
+ 0x0c, 0x00, 0x80, 0x7f, 0x06, 0x00, 0x00, 0xff};
diff --git a/xorg-server/hw/xnest/screensaver b/xorg-server/hw/xnest/screensaver
index 22fe414b2..4940f2650 100644
--- a/xorg-server/hw/xnest/screensaver
+++ b/xorg-server/hw/xnest/screensaver
@@ -1,686 +1,686 @@
-#define screensaver_width 256
-#define screensaver_height 256
-static unsigned char screensaver_bits[] = {
- 0xa8, 0x00, 0xa0, 0xaa, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00,
- 0x00, 0x00, 0x00, 0xa8, 0xaa, 0x02, 0x00, 0x80, 0x0a, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x54, 0x00, 0x40, 0x55,
- 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x50,
- 0x55, 0x05, 0x00, 0x40, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x2a, 0x00, 0x80, 0xaa, 0x2a, 0x00, 0x00, 0x00,
- 0x00, 0x80, 0x02, 0x00, 0x00, 0x00, 0x00, 0xa8, 0xaa, 0x02, 0x00, 0xa0,
- 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x15, 0x00, 0x00, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00,
- 0x00, 0x00, 0x00, 0x50, 0x55, 0x05, 0x00, 0x40, 0x01, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0xaa,
- 0xaa, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8a, 0x00, 0x00, 0x00, 0x00, 0xa0,
- 0xaa, 0x0a, 0x00, 0xa0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x54, 0x55, 0x01, 0x00, 0x00,
- 0x00, 0x00, 0x54, 0x00, 0x00, 0x00, 0x00, 0x40, 0x55, 0x15, 0x00, 0x50,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0xaa, 0x2a, 0x80, 0x02, 0x80, 0xaa, 0xaa, 0x82, 0x0a, 0xa8, 0x28, 0x80,
- 0x8a, 0x80, 0x2a, 0x80, 0x80, 0x8a, 0xa2, 0x82, 0x0a, 0xaa, 0x0a, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x2a, 0x02, 0x80, 0x82, 0x41, 0x40, 0x00, 0x50,
- 0x55, 0x41, 0x00, 0x00, 0x04, 0x00, 0x54, 0x40, 0x10, 0x00, 0x40, 0x00,
- 0x51, 0x55, 0x00, 0x15, 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x41, 0x00, 0x10, 0x14, 0x00, 0x00, 0x00, 0xa8, 0x8a, 0x02, 0x00, 0x02,
- 0x00, 0x20, 0xa2, 0x00, 0x80, 0x00, 0x08, 0x00, 0xaa, 0x2a, 0x00, 0x2a,
- 0x08, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x80,
- 0x01, 0x00, 0x01, 0x50, 0x45, 0x05, 0x00, 0x01, 0x10, 0x10, 0x40, 0x11,
- 0x40, 0x00, 0x44, 0x00, 0x50, 0x15, 0x01, 0x15, 0x04, 0x00, 0x40, 0x00,
- 0x05, 0x00, 0x00, 0x40, 0x00, 0x01, 0x00, 0x50, 0x20, 0x00, 0x00, 0xa2,
- 0xaa, 0x2a, 0x00, 0x00, 0x02, 0x00, 0xa0, 0x08, 0x00, 0x00, 0x00, 0x00,
- 0xa2, 0xaa, 0x00, 0x0a, 0x00, 0x08, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x20,
- 0x00, 0x00, 0x00, 0x88, 0x00, 0x00, 0x01, 0x40, 0x44, 0x15, 0x10, 0x01,
- 0x10, 0x10, 0x40, 0x01, 0x40, 0x00, 0x00, 0x00, 0x54, 0x55, 0x41, 0x45,
- 0x04, 0x00, 0x40, 0x00, 0x14, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x54,
- 0x20, 0x80, 0x00, 0x82, 0xaa, 0x0a, 0x00, 0x00, 0x22, 0x00, 0x80, 0x0a,
- 0x00, 0x00, 0x82, 0x00, 0xa0, 0x8a, 0x22, 0x02, 0x00, 0x08, 0x20, 0x00,
- 0xa8, 0x00, 0x00, 0x20, 0x00, 0x80, 0x00, 0x2a, 0x10, 0x40, 0x00, 0x01,
- 0x54, 0x45, 0x10, 0x00, 0x01, 0x00, 0x00, 0x05, 0x00, 0x00, 0x01, 0x00,
- 0x50, 0x45, 0x05, 0x41, 0x00, 0x04, 0x10, 0x00, 0x50, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x15, 0x00, 0x28, 0x00, 0xaa, 0xaa, 0x0a, 0x0a, 0x00,
- 0x20, 0x08, 0x00, 0x20, 0x00, 0x00, 0x80, 0x00, 0xa8, 0xa2, 0x22, 0x2a,
- 0x00, 0x00, 0x0a, 0x00, 0xa8, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x0a,
- 0x50, 0x05, 0x00, 0x01, 0x55, 0x45, 0x00, 0x00, 0x01, 0x00, 0x00, 0x40,
- 0x01, 0x00, 0x00, 0x00, 0x40, 0x55, 0x11, 0x00, 0x00, 0x54, 0x01, 0x00,
- 0x44, 0x01, 0x00, 0x00, 0x05, 0x40, 0x00, 0x05, 0x00, 0x08, 0x00, 0x80,
- 0xaa, 0xaa, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x0a, 0x00, 0x80, 0x00,
- 0x80, 0xaa, 0x28, 0x20, 0x00, 0x00, 0x02, 0x00, 0x80, 0x02, 0x00, 0x00,
- 0x28, 0x00, 0x80, 0x02, 0x10, 0x10, 0x00, 0x01, 0x54, 0x45, 0x01, 0x00,
- 0x41, 0x00, 0x00, 0x00, 0x10, 0x40, 0x00, 0x00, 0x10, 0x55, 0x14, 0x00,
- 0x00, 0x04, 0x04, 0x00, 0x40, 0x01, 0x00, 0x00, 0x40, 0x40, 0x40, 0x01,
- 0x08, 0x00, 0x80, 0x00, 0xa8, 0xa2, 0x02, 0x80, 0x00, 0x00, 0x00, 0x00,
- 0x20, 0xa0, 0xaa, 0x00, 0x80, 0x28, 0x0a, 0x00, 0x00, 0x02, 0x00, 0x00,
- 0x80, 0x02, 0x00, 0x00, 0x80, 0x00, 0xa0, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00,
- 0x10, 0x14, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04,
- 0x00, 0x40, 0x00, 0x00, 0x08, 0x20, 0x80, 0x00, 0x08, 0x08, 0x80, 0x80,
- 0x80, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x8a, 0x8a, 0x00,
- 0x02, 0x02, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
- 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x01,
- 0x10, 0x10, 0x00, 0x01, 0x10, 0x45, 0x55, 0x01, 0x00, 0x00, 0x10, 0x00,
- 0x00, 0x00, 0x00, 0x04, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x02, 0x00, 0x08, 0x00, 0x00,
- 0x20, 0xa2, 0xaa, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08,
- 0x00, 0x80, 0x00, 0x02, 0x04, 0x00, 0x40, 0x00, 0x04, 0x04, 0x40, 0x40,
- 0x00, 0x01, 0x00, 0x04, 0x04, 0x00, 0x00, 0x01, 0x00, 0x51, 0x45, 0x05,
- 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x45, 0x01,
- 0x2a, 0x80, 0xaa, 0xaa, 0x82, 0xaa, 0x2a, 0xa0, 0x02, 0x02, 0x80, 0xa8,
- 0x00, 0x2a, 0xa0, 0x02, 0x80, 0xa2, 0x00, 0xa0, 0xa0, 0x0a, 0xa0, 0x00,
- 0x00, 0x00, 0x80, 0x88, 0x02, 0x00, 0x08, 0x80, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x50, 0x41, 0x55, 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x55,
- 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa8, 0xa0, 0xaa, 0x0a,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xaa, 0x00, 0x00, 0x20, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x54, 0x40, 0x55, 0x15, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x54, 0x01, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x2a, 0x80, 0xaa, 0x2a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa8,
- 0x02, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x00, 0x55, 0x55,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0x05, 0x00, 0x04, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x0a, 0x00, 0xaa, 0xaa, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0xa0, 0x0a, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x05, 0x00, 0x54, 0x55, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40,
- 0x15, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0xa8, 0xaa,
- 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa0, 0x0a, 0x80, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x40, 0x01, 0x00, 0x50, 0x55, 0x05, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x40, 0x15, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa0,
- 0x00, 0x00, 0xa8, 0xaa, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80,
- 0x2a, 0x20, 0x00, 0x00, 0x41, 0x05, 0x55, 0x54, 0x11, 0x04, 0x00, 0x14,
- 0x40, 0x10, 0x44, 0x15, 0x15, 0x00, 0x00, 0x50, 0x01, 0x00, 0x50, 0x55,
- 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x55, 0x10, 0x50, 0x40,
- 0x82, 0x08, 0x02, 0x08, 0x20, 0x08, 0x00, 0x22, 0xa0, 0x20, 0x88, 0x00,
- 0x22, 0x00, 0x00, 0xa8, 0x2a, 0x00, 0xa0, 0xaa, 0x0a, 0x00, 0x80, 0x02,
- 0x00, 0x00, 0x00, 0x00, 0xaa, 0x08, 0x88, 0x20, 0x44, 0x10, 0x01, 0x04,
- 0x50, 0x04, 0x00, 0x41, 0x10, 0x11, 0x44, 0x00, 0x41, 0x00, 0x00, 0x54,
- 0x41, 0x00, 0x40, 0x55, 0x15, 0x00, 0x40, 0x04, 0x00, 0x00, 0x00, 0x00,
- 0x54, 0x11, 0x04, 0x11, 0x80, 0x20, 0x02, 0x08, 0xa0, 0x08, 0x00, 0x02,
- 0x88, 0x20, 0x88, 0x00, 0x82, 0x00, 0x00, 0x2a, 0x22, 0x00, 0x80, 0xaa,
- 0x2a, 0x00, 0x20, 0x08, 0x00, 0x00, 0x00, 0x00, 0xa8, 0x08, 0x08, 0x20,
- 0x40, 0x10, 0x01, 0x04, 0x50, 0x04, 0x00, 0x01, 0x04, 0x41, 0x44, 0x00,
- 0x41, 0x00, 0x00, 0x15, 0x05, 0x14, 0x15, 0x50, 0x10, 0x05, 0x40, 0x41,
- 0x41, 0x10, 0x45, 0x05, 0x50, 0x04, 0x04, 0x10, 0x80, 0x20, 0x02, 0x08,
- 0xa0, 0x08, 0x00, 0x02, 0x08, 0x22, 0x82, 0x00, 0x82, 0x00, 0x00, 0x0a,
- 0x2a, 0x22, 0x8a, 0x22, 0x22, 0x08, 0x80, 0x22, 0x22, 0x88, 0x88, 0x02,
- 0x28, 0x02, 0x08, 0x20, 0x40, 0x10, 0x15, 0x54, 0x10, 0x05, 0x00, 0x14,
- 0x04, 0x41, 0x44, 0x05, 0x41, 0x00, 0x00, 0x05, 0x50, 0x01, 0x41, 0x04,
- 0x05, 0x11, 0x00, 0x05, 0x44, 0x44, 0x50, 0x00, 0x10, 0x05, 0x50, 0x10,
- 0x80, 0x0a, 0x02, 0x08, 0x20, 0x0a, 0x00, 0x20, 0xa8, 0x82, 0x82, 0x00,
- 0x2a, 0x00, 0x80, 0x02, 0x22, 0x02, 0x82, 0x20, 0x20, 0x08, 0x20, 0x88,
- 0x82, 0x88, 0x8a, 0x00, 0x88, 0x0a, 0x80, 0x20, 0x40, 0x04, 0x01, 0x04,
- 0x10, 0x05, 0x00, 0x40, 0x04, 0x41, 0x41, 0x00, 0x11, 0x00, 0x40, 0x01,
- 0x41, 0x41, 0x41, 0x14, 0x15, 0x11, 0x40, 0x44, 0x04, 0x44, 0x40, 0x00,
- 0x44, 0x15, 0x00, 0x11, 0x80, 0x08, 0x02, 0x08, 0x20, 0x0a, 0x00, 0x80,
- 0x08, 0x82, 0x82, 0x00, 0x22, 0x00, 0xa0, 0x00, 0x22, 0x22, 0x82, 0x20,
- 0x22, 0x0a, 0x20, 0x28, 0x82, 0x82, 0x88, 0x00, 0x88, 0x2a, 0x00, 0x22,
- 0x44, 0x10, 0x01, 0x04, 0x10, 0x04, 0x00, 0x41, 0x04, 0x01, 0x41, 0x00,
- 0x41, 0x00, 0x50, 0x01, 0x14, 0x14, 0x01, 0x55, 0x10, 0x15, 0x40, 0x45,
- 0x05, 0x01, 0x45, 0x00, 0x04, 0x55, 0x04, 0x11, 0x82, 0x20, 0x02, 0x08,
- 0x20, 0x08, 0x00, 0x22, 0x08, 0x82, 0x80, 0x00, 0x82, 0x00, 0xa8, 0x00,
- 0x00, 0x00, 0x00, 0xa0, 0xaa, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x02, 0xaa, 0x88, 0x20, 0x41, 0x10, 0x55, 0x54, 0x11, 0x04, 0x00, 0x14,
- 0x04, 0x01, 0x41, 0x15, 0x41, 0x00, 0x54, 0x00, 0x00, 0x00, 0x00, 0x40,
- 0x55, 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x54, 0x51, 0x40,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x2a, 0x00, 0x00, 0x00, 0x00, 0x80, 0xaa, 0x2a, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x80, 0x00, 0xaa, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x54, 0x55, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40, 0x01, 0x15, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40,
- 0x00, 0x54, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa8, 0xaa, 0x02,
- 0x00, 0x00, 0x00, 0x00, 0xa0, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0xa8, 0x02, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0x55, 0x05, 0x00, 0x00, 0x00, 0x00,
- 0x50, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x10, 0x00, 0x50, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0xa0, 0xaa, 0x0a, 0x00, 0x00, 0x00, 0x00, 0xa8, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08,
- 0x00, 0xa0, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x55, 0x15,
- 0x00, 0x00, 0x00, 0x00, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x40, 0x15, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xaa, 0x2a, 0x00, 0x00, 0x00, 0x00,
- 0x2a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x02, 0x00, 0x80, 0x2a, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01,
- 0x00, 0x00, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xaa, 0xaa,
- 0x00, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00,
- 0x05, 0x14, 0x40, 0x01, 0x41, 0x40, 0x01, 0x14, 0x10, 0x01, 0x00, 0x40,
- 0x01, 0x04, 0x14, 0x14, 0x14, 0x10, 0x04, 0x00, 0xa0, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x0a, 0xaa, 0x00, 0x00, 0x00, 0x80, 0x82, 0xa0, 0x20, 0x82,
- 0xa2, 0x20, 0x02, 0x22, 0x28, 0x02, 0x00, 0x08, 0x8a, 0x22, 0x08, 0x08,
- 0x22, 0x28, 0x0a, 0x00, 0x10, 0x01, 0x00, 0x00, 0x00, 0x00, 0x44, 0x54,
- 0x01, 0x00, 0x00, 0x40, 0x41, 0x40, 0x10, 0x04, 0x11, 0x11, 0x04, 0x41,
- 0x10, 0x04, 0x00, 0x04, 0x04, 0x40, 0x10, 0x00, 0x41, 0x10, 0x11, 0x00,
- 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x88, 0xaa, 0x02, 0x00, 0x00, 0xa0,
- 0x82, 0x80, 0x08, 0x08, 0x02, 0x08, 0x88, 0x80, 0x08, 0x08, 0x00, 0x08,
- 0x08, 0x20, 0x20, 0x80, 0x80, 0x20, 0x00, 0x00, 0x10, 0x50, 0x14, 0x14,
- 0x45, 0x05, 0x40, 0x05, 0x41, 0x14, 0x15, 0x50, 0x41, 0x01, 0x04, 0x00,
- 0x01, 0x04, 0x50, 0x00, 0x11, 0x04, 0x00, 0x14, 0x00, 0x40, 0x10, 0x44,
- 0x00, 0x11, 0x00, 0x00, 0xa0, 0x88, 0x22, 0xa2, 0x88, 0x08, 0x00, 0x2a,
- 0x82, 0x22, 0x22, 0xa8, 0x80, 0x0a, 0x08, 0x00, 0x02, 0xa8, 0x8a, 0xaa,
- 0x08, 0x08, 0x00, 0xa8, 0x00, 0x2a, 0x20, 0x80, 0xaa, 0x20, 0x00, 0x00,
- 0x00, 0x05, 0x04, 0x15, 0x55, 0x04, 0x40, 0x04, 0x50, 0x54, 0x01, 0x54,
- 0x00, 0x54, 0x04, 0x00, 0x01, 0x04, 0x40, 0x00, 0x10, 0x04, 0x00, 0x40,
- 0x05, 0x41, 0x40, 0x40, 0x00, 0x10, 0x00, 0x00, 0x80, 0x08, 0x02, 0x82,
- 0x80, 0x08, 0x80, 0x20, 0x02, 0x02, 0x02, 0x2a, 0x00, 0xa0, 0x08, 0x00,
- 0x02, 0x08, 0x80, 0x00, 0x08, 0x08, 0x00, 0x00, 0x8a, 0x20, 0x20, 0x82,
- 0x00, 0x20, 0x00, 0x00, 0x10, 0x45, 0x04, 0x11, 0x51, 0x04, 0x50, 0x44,
- 0x44, 0x44, 0x01, 0x15, 0x00, 0x40, 0x05, 0x00, 0x01, 0x04, 0x40, 0x00,
- 0x10, 0x04, 0x00, 0x00, 0x54, 0x40, 0x40, 0x41, 0x00, 0x10, 0x00, 0x00,
- 0xa0, 0x28, 0x02, 0x0a, 0x8a, 0x08, 0x20, 0x0a, 0x0a, 0x28, 0x02, 0x0a,
- 0x00, 0x80, 0x08, 0x00, 0x02, 0x08, 0x80, 0x00, 0x08, 0x08, 0x00, 0x00,
- 0x88, 0x20, 0x80, 0x80, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x55, 0x55, 0x00, 0x00, 0x05, 0x40, 0x00, 0x11, 0x00,
- 0x01, 0x10, 0x10, 0x01, 0x11, 0x04, 0x00, 0x04, 0x50, 0x40, 0x41, 0x01,
- 0x01, 0x11, 0x00, 0x00, 0x00, 0xa0, 0x00, 0x00, 0x00, 0x00, 0x00, 0xaa,
- 0xaa, 0x00, 0x80, 0x02, 0x80, 0x80, 0x20, 0x02, 0x02, 0x20, 0x08, 0x82,
- 0x08, 0x08, 0x00, 0x08, 0x88, 0x20, 0x80, 0x00, 0x82, 0x20, 0x00, 0x00,
- 0x00, 0x40, 0x01, 0x10, 0x00, 0x00, 0x00, 0x54, 0x55, 0x01, 0x40, 0x01,
- 0x40, 0x14, 0x40, 0x41, 0x05, 0x40, 0x01, 0x14, 0x14, 0x14, 0x00, 0x44,
- 0x01, 0x45, 0x00, 0x00, 0x14, 0x54, 0x00, 0x00, 0x00, 0x80, 0x02, 0x08,
- 0x00, 0x00, 0x00, 0xa8, 0xaa, 0x02, 0xa0, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x04, 0x00, 0x00, 0x00, 0x50,
- 0x55, 0x05, 0x50, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x0a, 0x02, 0x00, 0x00, 0x00, 0xa0, 0xaa, 0x0a, 0xa8, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x01,
- 0x00, 0x00, 0x00, 0x50, 0x55, 0x05, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x00, 0xa0,
- 0xaa, 0x0a, 0x2a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x40, 0x55, 0x15, 0x15, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00,
- 0x00, 0x00, 0x00, 0x80, 0xaa, 0x2a, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x55, 0x15, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0xa0, 0x00, 0x00, 0x00, 0x00, 0x00, 0xaa, 0x8a, 0x02, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0x01,
- 0x00, 0x00, 0x00, 0x00, 0x54, 0x45, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x82, 0x02, 0x00, 0x00, 0x00, 0x00,
- 0xa8, 0xa2, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x01, 0x05, 0x50, 0x00, 0x50, 0x40, 0x45, 0x11, 0x00, 0x50,
- 0x40, 0x41, 0x01, 0x00, 0x14, 0x00, 0x51, 0x40, 0x40, 0x00, 0x05, 0x14,
- 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x0a,
- 0x88, 0x02, 0xaa, 0xa8, 0x80, 0x00, 0x00, 0xaa, 0xa8, 0xa2, 0x02, 0x00,
- 0xa2, 0xa0, 0x22, 0xa8, 0xa0, 0xa0, 0x8a, 0x2a, 0x02, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x14, 0x04, 0x01, 0x45, 0x51,
- 0x04, 0x40, 0x00, 0x45, 0x41, 0x51, 0x01, 0x00, 0x41, 0x50, 0x54, 0x50,
- 0x50, 0x50, 0x14, 0x14, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x0a, 0x82, 0xa2, 0xa0, 0x02, 0xa0, 0x88, 0x82,
- 0xa0, 0x88, 0x02, 0x80, 0x82, 0x28, 0x28, 0xa0, 0x20, 0x28, 0x08, 0x8a,
- 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x51, 0x45, 0x54, 0x00,
- 0x14, 0x40, 0x41, 0x50, 0x05, 0x51, 0x10, 0x41, 0x41, 0x41, 0x01, 0x00,
- 0x05, 0x14, 0x10, 0x50, 0x40, 0x10, 0x14, 0x54, 0x04, 0x00, 0x41, 0x55,
- 0x04, 0x45, 0x01, 0x04, 0x20, 0x02, 0x08, 0x00, 0x2a, 0xa0, 0x00, 0xa0,
- 0x8a, 0x20, 0xa8, 0xa2, 0xa0, 0xa0, 0x00, 0x80, 0x0a, 0x28, 0x28, 0xa0,
- 0x20, 0x28, 0x0a, 0x2a, 0x00, 0x00, 0x22, 0x0a, 0x80, 0x88, 0x02, 0x88,
- 0x04, 0x50, 0x01, 0x00, 0x54, 0x40, 0x01, 0x50, 0x15, 0x10, 0x14, 0x51,
- 0x40, 0x41, 0x01, 0x00, 0x15, 0x14, 0x14, 0x40, 0x11, 0x14, 0x05, 0x14,
- 0x00, 0x40, 0x10, 0x00, 0x15, 0x45, 0x04, 0x01, 0x00, 0x00, 0x08, 0x00,
- 0xa8, 0xa0, 0x00, 0x28, 0x8a, 0x08, 0x0a, 0x28, 0xa0, 0xa0, 0x00, 0x00,
- 0x2a, 0x0a, 0x28, 0xa0, 0x08, 0x8a, 0x02, 0x0a, 0x00, 0x80, 0x00, 0x08,
- 0x80, 0x00, 0x00, 0x82, 0x44, 0x11, 0x00, 0x00, 0x50, 0x50, 0x00, 0x10,
- 0x05, 0x40, 0x15, 0x05, 0x50, 0x50, 0x00, 0x00, 0x14, 0x14, 0x14, 0x40,
- 0x11, 0x54, 0x00, 0x05, 0x00, 0x00, 0x11, 0x00, 0x01, 0x40, 0x04, 0x44,
- 0x80, 0x20, 0x0a, 0x00, 0xa0, 0xa0, 0x00, 0x88, 0x82, 0xa8, 0x0a, 0x00,
- 0xa0, 0xa0, 0x00, 0x00, 0x28, 0x0a, 0x0a, 0xa0, 0x08, 0x0a, 0x00, 0x0a,
- 0x00, 0x00, 0x22, 0x0a, 0xa2, 0x00, 0x00, 0x88, 0x01, 0x40, 0x15, 0x00,
- 0x50, 0x51, 0x40, 0x00, 0x01, 0x51, 0x15, 0x00, 0x50, 0x50, 0x00, 0x00,
- 0x54, 0x14, 0x54, 0x40, 0x05, 0x14, 0x00, 0x05, 0x00, 0x40, 0x41, 0x15,
- 0x14, 0x45, 0x04, 0x05, 0x00, 0x00, 0x00, 0x80, 0xa0, 0xa0, 0x20, 0x88,
- 0x80, 0xaa, 0x08, 0x82, 0x28, 0x28, 0x02, 0x20, 0x28, 0x0a, 0x2a, 0xa0,
- 0x02, 0x0a, 0x88, 0xa2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x41, 0x40, 0x11, 0x44, 0x00, 0x55, 0x14, 0x44,
- 0x50, 0x50, 0x01, 0x40, 0x10, 0x54, 0x15, 0x40, 0x01, 0x14, 0x04, 0x45,
- 0x01, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80,
- 0x22, 0xa0, 0x0a, 0x00, 0x00, 0x0a, 0x2a, 0x20, 0x28, 0xa8, 0x00, 0xa0,
- 0x08, 0xa8, 0x08, 0xa0, 0x00, 0xa8, 0x82, 0x82, 0x02, 0x08, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x00, 0x05, 0x00,
- 0x00, 0x54, 0x55, 0x10, 0x50, 0x50, 0x00, 0x00, 0x05, 0x50, 0x04, 0x40,
- 0x00, 0x50, 0x40, 0x05, 0x05, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x80, 0xaa, 0x2a,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x0a, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x05, 0x00, 0x40, 0x55, 0x15, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x01, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x0a,
- 0x00, 0x80, 0xaa, 0x2a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x05, 0x00, 0x00, 0x55, 0x55,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0xa0, 0x02, 0x00, 0x00, 0xaa, 0xaa, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0x01,
- 0x00, 0x00, 0x54, 0x55, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa8, 0x00, 0x00, 0x00, 0xa8, 0xaa,
- 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0xa0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0x50, 0x55, 0x05, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0x01, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x28, 0x00,
- 0x00, 0x00, 0xa0, 0xaa, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x82, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x50, 0x55,
- 0x05, 0x00, 0x00, 0x14, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x01, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0xa0, 0xaa, 0x0a, 0x00, 0x00, 0x28,
- 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x0a, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00,
- 0x00, 0x00, 0x40, 0x55, 0x15, 0x00, 0x00, 0x50, 0x04, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x40, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x0a, 0x00, 0x00, 0x00, 0x80, 0xaa,
- 0x2a, 0x00, 0x00, 0xa0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x55, 0x50, 0x15,
- 0x55, 0x11, 0x55, 0x00, 0x15, 0x00, 0x54, 0x01, 0x00, 0x54, 0x01, 0x40,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x50, 0x00, 0x20, 0x82, 0x20, 0x08, 0x82, 0x00, 0x22, 0x80,
- 0x08, 0x08, 0x28, 0xa2, 0x28, 0x20, 0x08, 0x20, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0xa2,
- 0x00, 0x04, 0x41, 0x10, 0x04, 0x11, 0x00, 0x40, 0x10, 0x14, 0x10, 0x54,
- 0x54, 0x11, 0x10, 0x00, 0x01, 0x00, 0x50, 0x14, 0x15, 0x05, 0x45, 0x01,
- 0x50, 0x50, 0x44, 0x14, 0x05, 0x00, 0x04, 0x40, 0x20, 0x02, 0x22, 0x02,
- 0x22, 0x08, 0x20, 0x20, 0x00, 0x08, 0x20, 0xa8, 0x28, 0x22, 0x08, 0x80,
- 0x02, 0x00, 0x88, 0x22, 0xa2, 0x88, 0x28, 0x02, 0x88, 0x80, 0x22, 0xa2,
- 0x08, 0x00, 0x08, 0x22, 0x00, 0x04, 0x41, 0x00, 0x04, 0x00, 0x01, 0x40,
- 0x00, 0x10, 0x40, 0x04, 0x11, 0x10, 0x04, 0x10, 0x05, 0x00, 0x10, 0x04,
- 0x01, 0x55, 0x45, 0x04, 0x10, 0x50, 0x44, 0x15, 0x01, 0x00, 0x14, 0x10,
- 0x00, 0x2a, 0xa0, 0x02, 0x2a, 0x20, 0x22, 0x80, 0x02, 0x22, 0x20, 0x02,
- 0x0a, 0xa0, 0x02, 0x08, 0x0a, 0x00, 0x20, 0x02, 0x82, 0x80, 0x20, 0x02,
- 0x80, 0x88, 0x28, 0x82, 0x00, 0x00, 0xa8, 0x20, 0x00, 0x44, 0x40, 0x01,
- 0x14, 0x00, 0x04, 0x00, 0x05, 0x10, 0x40, 0x00, 0x11, 0x10, 0x05, 0x04,
- 0x14, 0x00, 0x44, 0x44, 0x01, 0x51, 0x44, 0x04, 0x10, 0x45, 0x14, 0x11,
- 0x01, 0x00, 0x50, 0x11, 0x00, 0x82, 0x20, 0x02, 0x22, 0x20, 0x28, 0x20,
- 0x08, 0x2a, 0x80, 0x02, 0x02, 0x20, 0x08, 0x00, 0x00, 0x00, 0x28, 0x28,
- 0x02, 0x8a, 0x22, 0x02, 0xa0, 0xa8, 0x08, 0x8a, 0x00, 0x00, 0x80, 0x22,
- 0x00, 0x04, 0x41, 0x10, 0x04, 0x01, 0x10, 0x00, 0x10, 0x41, 0x40, 0x01,
- 0x11, 0x10, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x51, 0x20, 0x82, 0x20, 0x00,
- 0x02, 0x20, 0x28, 0x20, 0x88, 0x20, 0x80, 0x00, 0x82, 0x20, 0x28, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x22, 0x10, 0x04, 0x45, 0x10, 0x04, 0x01, 0x10, 0x40,
- 0x04, 0x40, 0x00, 0x00, 0x41, 0x10, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x41,
- 0x8a, 0x0a, 0xaa, 0x8a, 0xaa, 0xa8, 0x20, 0xa0, 0x82, 0xa2, 0x80, 0x80,
- 0xaa, 0xa8, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa0, 0x80, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2a, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa0,
- 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x55, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0x15, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80,
- 0xaa, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0xa8, 0x2a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x55, 0x01, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x54,
- 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0xa0, 0xa2, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2a, 0x2a, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x01, 0x10, 0x50,
- 0x41, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x15, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0xa0, 0x80, 0x02, 0xa8, 0x28,
- 0x0a, 0xa0, 0x02, 0xa8, 0x00, 0x8a, 0x02, 0x28, 0x00, 0x00, 0x00, 0x0a,
- 0x28, 0x80, 0x2a, 0x80, 0x22, 0x80, 0x0a, 0x00, 0xa8, 0x00, 0x28, 0x2a,
- 0x00, 0x05, 0x00, 0x50, 0x00, 0x00, 0x55, 0x51, 0x14, 0x14, 0x54, 0x54,
- 0x01, 0x54, 0x01, 0x50, 0x50, 0x05, 0x00, 0x05, 0x00, 0x50, 0x55, 0x40,
- 0x51, 0x50, 0x15, 0x00, 0x54, 0x05, 0x14, 0x55, 0x00, 0x0a, 0x00, 0xa0,
- 0x00, 0x80, 0xaa, 0x2a, 0x2a, 0x08, 0x2a, 0xa8, 0x02, 0xaa, 0x02, 0xa0,
- 0xa0, 0x02, 0x00, 0x0a, 0x00, 0xa8, 0xaa, 0x80, 0x2a, 0xa8, 0x2a, 0x80,
- 0xaa, 0x0a, 0xa8, 0xaa, 0x01, 0x05, 0x00, 0x50, 0x05, 0x40, 0x55, 0x55,
- 0x14, 0x00, 0x14, 0x50, 0x05, 0x54, 0x01, 0x40, 0x51, 0x01, 0x00, 0x55,
- 0x00, 0x54, 0x55, 0x41, 0x15, 0x54, 0x55, 0x40, 0x55, 0x15, 0x54, 0x55,
- 0x02, 0x0a, 0x00, 0xa0, 0x0a, 0xa0, 0x02, 0x2a, 0x2a, 0x00, 0x0a, 0x88,
- 0x0a, 0x2a, 0x00, 0x80, 0xaa, 0x00, 0x00, 0xaa, 0x00, 0xaa, 0xa0, 0xa2,
- 0x0a, 0x2a, 0xa8, 0xa0, 0x0a, 0x0a, 0xaa, 0xa0, 0x01, 0x14, 0x01, 0x40,
- 0x55, 0x50, 0x01, 0x14, 0x14, 0x00, 0x05, 0x04, 0x15, 0x15, 0x00, 0x00,
- 0x51, 0x00, 0x00, 0x54, 0x05, 0x14, 0x40, 0x45, 0x05, 0x15, 0x50, 0x41,
- 0x01, 0x14, 0x54, 0x40, 0x02, 0xa8, 0x00, 0x80, 0xaa, 0xa8, 0x00, 0x2a,
- 0x28, 0x88, 0x02, 0x0a, 0x0a, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa8,
- 0x0a, 0x0a, 0xa0, 0xa2, 0x82, 0x0a, 0xa0, 0xa0, 0x00, 0x28, 0x2a, 0xa0,
- 0x01, 0x50, 0x00, 0x00, 0x55, 0x50, 0x00, 0x14, 0x54, 0x54, 0x05, 0x15,
- 0x14, 0x15, 0x00, 0x00, 0x11, 0x00, 0x00, 0x50, 0x05, 0x15, 0x00, 0x40,
- 0x01, 0x05, 0x40, 0x51, 0x00, 0x14, 0x14, 0x40, 0x00, 0xa8, 0x00, 0x00,
- 0xa8, 0x28, 0x00, 0x28, 0x28, 0xa8, 0x02, 0x80, 0x0a, 0x0a, 0x00, 0x80,
- 0x08, 0x00, 0x00, 0x80, 0x8a, 0x0a, 0x00, 0xa0, 0x80, 0xaa, 0xaa, 0xa8,
- 0xaa, 0x2a, 0x0a, 0xa0, 0x01, 0x44, 0x01, 0x00, 0x50, 0x55, 0x00, 0x14,
- 0x50, 0x14, 0x01, 0x00, 0x15, 0x05, 0x00, 0x40, 0x15, 0x00, 0x00, 0x00,
- 0x15, 0x05, 0x00, 0x50, 0x41, 0x55, 0x55, 0x51, 0x55, 0x15, 0x15, 0x40,
- 0x00, 0x80, 0x02, 0x00, 0xa0, 0x28, 0x00, 0x0a, 0x28, 0x0a, 0x02, 0x00,
- 0x8a, 0x0a, 0x00, 0xa0, 0x2a, 0x00, 0x00, 0x00, 0x8a, 0x0a, 0x00, 0xa0,
- 0x80, 0xaa, 0xaa, 0xa8, 0xaa, 0x2a, 0x0a, 0xa0, 0x01, 0x40, 0x01, 0x00,
- 0x50, 0x55, 0x00, 0x14, 0x50, 0x05, 0x00, 0x00, 0x14, 0x05, 0x00, 0x50,
- 0x50, 0x00, 0x00, 0x00, 0x15, 0x05, 0x00, 0x50, 0x40, 0x55, 0x55, 0x51,
- 0x55, 0x15, 0x05, 0x50, 0x00, 0x80, 0x02, 0x2a, 0xa8, 0x28, 0x00, 0x0a,
- 0xa8, 0x0a, 0x80, 0xaa, 0x82, 0x02, 0x00, 0x20, 0xa0, 0x00, 0xa0, 0x82,
- 0x8a, 0x0a, 0x00, 0xa0, 0x80, 0x02, 0x00, 0x28, 0x00, 0x00, 0x0a, 0xa0,
- 0x00, 0x00, 0x05, 0x14, 0x50, 0x54, 0x00, 0x15, 0x50, 0x05, 0x40, 0x55,
- 0x01, 0x05, 0x00, 0x10, 0x40, 0x01, 0x40, 0x01, 0x05, 0x15, 0x50, 0x51,
- 0x40, 0x01, 0x00, 0x50, 0x00, 0x00, 0x05, 0x50, 0x00, 0x00, 0x0a, 0x2a,
- 0xa8, 0xa8, 0x80, 0x0a, 0xa0, 0x02, 0x80, 0x0a, 0x80, 0x02, 0x00, 0x08,
- 0x80, 0x02, 0xa0, 0x82, 0x0a, 0x2a, 0xa8, 0xa0, 0x80, 0x02, 0x2a, 0xa8,
- 0x80, 0x8a, 0x0a, 0xa0, 0x00, 0x00, 0x00, 0x54, 0x55, 0x50, 0x55, 0x05,
- 0x50, 0x01, 0x00, 0x00, 0x44, 0x05, 0x00, 0x04, 0x00, 0x05, 0x40, 0x55,
- 0x05, 0x54, 0x55, 0x50, 0x00, 0x55, 0x15, 0x50, 0x55, 0x05, 0x05, 0x50,
- 0x00, 0x00, 0x00, 0xa8, 0x2a, 0xa0, 0xaa, 0x0a, 0xa0, 0x00, 0x08, 0x00,
- 0x8a, 0x02, 0x00, 0x0a, 0x00, 0x00, 0x80, 0xaa, 0x02, 0xaa, 0x2a, 0x28,
- 0x80, 0xaa, 0x0a, 0xa0, 0xaa, 0x82, 0x02, 0x28, 0x00, 0x00, 0x00, 0x50,
- 0x15, 0x40, 0x55, 0x05, 0x40, 0x01, 0x10, 0x00, 0x55, 0x01, 0x00, 0x05,
- 0x00, 0x00, 0x00, 0x55, 0x01, 0x54, 0x15, 0x50, 0x00, 0x55, 0x05, 0x40,
- 0x55, 0x01, 0x05, 0x50, 0x00, 0x00, 0x00, 0xa0, 0x02, 0x80, 0x0a, 0x0a,
- 0xa0, 0x00, 0x00, 0xa0, 0xaa, 0x02, 0x80, 0x0a, 0x00, 0x00, 0x00, 0x2a,
- 0x00, 0xa0, 0x0a, 0x28, 0x00, 0xa8, 0x00, 0x80, 0x2a, 0x80, 0x02, 0x28,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x55,
- 0x55, 0x00, 0x40, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xaa, 0xaa, 0x00, 0xa0, 0x02,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x55, 0x55, 0x00, 0x50, 0x01, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xaa,
- 0xaa, 0x00, 0xa8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x54, 0x55, 0x01, 0x50, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0xa8, 0xaa, 0x02, 0x28, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50,
- 0x55, 0x05, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa0, 0xaa, 0x0a, 0x0a, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x40, 0x55, 0x15, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80,
- 0xaa, 0x8a, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x55, 0x45, 0x05, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x80, 0x22, 0xa0, 0x22, 0xa8, 0x0a, 0xa8, 0x00,
- 0xa8, 0xa0, 0x28, 0x80, 0xaa, 0x22, 0x28, 0xa0, 0x02, 0x2a, 0x2a, 0xa0,
- 0x02, 0x8a, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x40, 0x15, 0x50, 0x15, 0x54, 0x15, 0x54, 0x01, 0x55, 0x41, 0x55, 0x00,
- 0x55, 0x11, 0x54, 0x50, 0x05, 0x54, 0x54, 0x54, 0x05, 0x54, 0x05, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x08, 0x08, 0x08,
- 0x20, 0x08, 0x02, 0x82, 0x82, 0x82, 0x82, 0x00, 0xaa, 0x08, 0x20, 0x20,
- 0x08, 0x08, 0x08, 0x0a, 0x0a, 0x28, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x50, 0x10, 0x04, 0x10, 0x10, 0x00, 0x01, 0x04,
- 0x01, 0x01, 0x01, 0x01, 0x54, 0x14, 0x11, 0x00, 0x10, 0x10, 0x04, 0x04,
- 0x04, 0x10, 0x00, 0x14, 0x51, 0x10, 0x44, 0x01, 0x50, 0x44, 0x44, 0x14,
- 0xa0, 0x00, 0x02, 0x08, 0x08, 0x80, 0x00, 0x82, 0x00, 0x82, 0x80, 0x00,
- 0xa8, 0x28, 0x00, 0xa0, 0x0a, 0x20, 0x08, 0x02, 0x08, 0x08, 0x00, 0x00,
- 0x20, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x08, 0x40, 0x05, 0x04, 0x00,
- 0x10, 0x00, 0x55, 0x45, 0x55, 0x41, 0x40, 0x00, 0x54, 0x54, 0x00, 0x50,
- 0x05, 0x10, 0x04, 0x55, 0x05, 0x04, 0x00, 0x44, 0x10, 0x14, 0x45, 0x04,
- 0x10, 0x54, 0x54, 0x04, 0x00, 0x0a, 0x02, 0x00, 0x08, 0x80, 0xaa, 0x82,
- 0xaa, 0x82, 0x80, 0x00, 0x2a, 0xaa, 0x00, 0x08, 0x08, 0x20, 0x02, 0xaa,
- 0x0a, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00,
- 0x10, 0x14, 0x04, 0x00, 0x04, 0x00, 0x01, 0x40, 0x00, 0x40, 0x40, 0x00,
- 0x15, 0x45, 0x15, 0x04, 0x04, 0x10, 0x01, 0x01, 0x00, 0x04, 0x00, 0x05,
- 0x15, 0x10, 0x44, 0x04, 0x14, 0x14, 0x41, 0x04, 0x08, 0x08, 0x0a, 0x08,
- 0x08, 0x80, 0x02, 0x82, 0x80, 0x20, 0x20, 0x80, 0x8a, 0x8a, 0x22, 0x02,
- 0x02, 0xa0, 0x00, 0x02, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x54, 0x05, 0x54, 0x15, 0x55, 0x01, 0x55, 0x01,
- 0x55, 0x51, 0x51, 0x01, 0x45, 0x05, 0x00, 0x54, 0x15, 0x40, 0x00, 0x54,
- 0x45, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0xa8, 0x02, 0xa8, 0x82, 0xaa, 0x00, 0xaa, 0x00, 0x2a, 0xa8, 0xa8, 0x80,
- 0x82, 0x22, 0x20, 0xa8, 0x0a, 0x20, 0x00, 0xa8, 0x80, 0xaa, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x01, 0x55, 0x55, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50,
- 0x05, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0xa0, 0x00, 0xaa, 0xaa, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa0, 0x0a, 0x00, 0x00, 0x08,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50,
- 0x00, 0x54, 0x55, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x40, 0x15, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa8, 0x00, 0xa8, 0xaa, 0x02,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80,
- 0x2a, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x54, 0x00, 0x54, 0x55, 0x01, 0x00, 0x40, 0x01, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x55, 0x00, 0x00, 0x01,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2a,
- 0x00, 0xa8, 0xaa, 0x02, 0x00, 0x80, 0x02, 0x20, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0xaa, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x15, 0x00, 0x50, 0x55, 0x05,
- 0x00, 0x00, 0x05, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x54, 0x01, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x80, 0x0a, 0x00, 0xa0, 0xaa, 0x0a, 0x00, 0x00, 0x0a, 0x08,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa8, 0x02, 0x20, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x05,
- 0x00, 0x40, 0x55, 0x15, 0x00, 0x00, 0x14, 0x04, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x54, 0x01, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x80, 0xaa, 0x2a,
- 0x00, 0x00, 0x28, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0xa8, 0x02, 0x08, 0x00, 0x10, 0x50, 0x50, 0x50, 0x40, 0x10, 0x00, 0x00,
- 0x00, 0x00, 0x40, 0x01, 0x00, 0x00, 0x55, 0x55, 0x00, 0x00, 0x50, 0x00,
- 0x50, 0x00, 0x05, 0x04, 0x01, 0x05, 0x50, 0x40, 0x54, 0x05, 0x04, 0x05,
- 0x8a, 0x20, 0x20, 0x88, 0xa0, 0x28, 0x00, 0x00, 0x00, 0x00, 0xa0, 0x00,
- 0x00, 0x00, 0xaa, 0xaa, 0x00, 0x00, 0x20, 0x00, 0x82, 0x82, 0x08, 0x8a,
- 0x82, 0x08, 0x88, 0xa0, 0xa8, 0x0a, 0x22, 0x28, 0x00, 0x41, 0x00, 0x04,
- 0x41, 0x44, 0x00, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0x55, 0x55,
- 0x00, 0x00, 0x10, 0x00, 0x01, 0x41, 0x10, 0x44, 0x44, 0x10, 0x04, 0x41,
- 0x50, 0x15, 0x11, 0x10, 0x80, 0x80, 0x00, 0x02, 0x82, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0xaa, 0xaa, 0x00, 0x00, 0x80, 0x00,
- 0x02, 0x22, 0x20, 0x08, 0x20, 0x20, 0x02, 0x22, 0xa0, 0x2a, 0x22, 0x20,
- 0x00, 0x41, 0x10, 0x01, 0x44, 0x00, 0x00, 0x40, 0x41, 0x51, 0x04, 0x14,
- 0x15, 0x00, 0x11, 0x44, 0x50, 0x54, 0x40, 0x01, 0x05, 0x10, 0x00, 0x04,
- 0x10, 0x40, 0x01, 0x44, 0x10, 0x15, 0x51, 0x00, 0xa8, 0x80, 0x00, 0xaa,
- 0x82, 0x00, 0x00, 0x20, 0x22, 0x8a, 0xa2, 0x22, 0x22, 0x80, 0xa0, 0x88,
- 0x88, 0x88, 0x88, 0x02, 0x2a, 0x20, 0x00, 0x08, 0xa0, 0x2a, 0xaa, 0x22,
- 0x20, 0x8a, 0xa0, 0x02, 0x04, 0x01, 0x01, 0x01, 0x40, 0x00, 0x00, 0x40,
- 0x10, 0x10, 0x41, 0x54, 0x11, 0x00, 0x11, 0x40, 0x54, 0x05, 0x04, 0x05,
- 0x50, 0x11, 0x00, 0x04, 0x10, 0x00, 0x01, 0x40, 0x10, 0x45, 0x00, 0x15,
- 0x82, 0x80, 0x08, 0x02, 0x80, 0x00, 0x00, 0x00, 0x22, 0x88, 0x02, 0x02,
- 0x22, 0x00, 0x82, 0x08, 0x02, 0x08, 0x02, 0x0a, 0x80, 0x22, 0x00, 0x08,
- 0x20, 0x00, 0x02, 0x20, 0x20, 0xa2, 0x00, 0x28, 0x01, 0x01, 0x05, 0x01,
- 0x40, 0x00, 0x00, 0x40, 0x14, 0x51, 0x41, 0x44, 0x11, 0x40, 0x04, 0x11,
- 0x04, 0x05, 0x01, 0x14, 0x00, 0x15, 0x00, 0x04, 0x10, 0x00, 0x01, 0x40,
- 0x10, 0x51, 0x01, 0x50, 0x82, 0x00, 0x02, 0x02, 0x80, 0x00, 0x00, 0x80,
- 0xa2, 0x88, 0x2a, 0x28, 0x22, 0x80, 0x02, 0x28, 0x8a, 0x88, 0x00, 0x28,
- 0x00, 0x22, 0x00, 0x08, 0x20, 0x00, 0x02, 0x20, 0xa0, 0xa8, 0x02, 0x20,
- 0x01, 0x05, 0x05, 0x04, 0x44, 0x00, 0x00, 0x00, 0x00, 0x40, 0x01, 0x00,
- 0x00, 0x00, 0x40, 0x55, 0x15, 0x00, 0x00, 0x00, 0x01, 0x44, 0x00, 0x04,
- 0x40, 0x40, 0x04, 0x44, 0x10, 0x51, 0x15, 0x40, 0x82, 0x00, 0x02, 0x08,
- 0x82, 0x00, 0x00, 0x00, 0x00, 0xa0, 0x00, 0x00, 0x00, 0x00, 0x80, 0xaa,
- 0x2a, 0x00, 0x00, 0x00, 0x02, 0x82, 0x08, 0x08, 0x80, 0x20, 0x08, 0x22,
- 0xa0, 0xa0, 0x2a, 0x20, 0x14, 0x01, 0x00, 0x50, 0x50, 0x01, 0x00, 0x00,
- 0x00, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x55, 0x55, 0x00, 0x00, 0x00,
- 0x51, 0x00, 0x05, 0x15, 0x00, 0x05, 0x50, 0x50, 0x50, 0x40, 0x15, 0x05,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0xaa, 0xaa, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x20, 0x80, 0x2a, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x10, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x10, 0x40, 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x28, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x80, 0x2a, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50,
- 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa0, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x02, 0x00, 0xaa, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x54, 0x01,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0xa8, 0x02, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40,
- 0x00, 0x00, 0x50, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0xa0, 0x0a,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10,
- 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x0a, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x04, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00,
- 0x00, 0x40, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x50, 0x55, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00,
- 0x00, 0xa0, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa0, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa0, 0xaa,
- 0x15, 0x00, 0x00, 0x00, 0x00, 0x40, 0x01, 0x00, 0x00, 0x10, 0x04, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x05, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x55, 0x2a, 0x00, 0x00, 0x00,
- 0x00, 0xa0, 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x08, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x80, 0xaa, 0x15, 0x00, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00,
- 0x00, 0x10, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x55,
- 0xa2, 0x00, 0x80, 0x02, 0x0a, 0xa2, 0x82, 0x02, 0x0a, 0x08, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x02, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x0a, 0xa8, 0xa0, 0x80, 0x82, 0xa0, 0x11, 0x01, 0x00, 0x04,
- 0x11, 0x50, 0x41, 0x04, 0x11, 0x10, 0x00, 0x14, 0x44, 0x40, 0x00, 0x41,
- 0x11, 0x00, 0x14, 0x00, 0x44, 0x05, 0x05, 0x04, 0x45, 0x00, 0x10, 0x44,
- 0x11, 0x11, 0x04, 0x44, 0xa2, 0x02, 0x20, 0x80, 0x20, 0x28, 0x20, 0x08,
- 0x02, 0x20, 0x80, 0x22, 0xa8, 0xa8, 0xa0, 0x82, 0x28, 0x00, 0x28, 0x80,
- 0x22, 0x08, 0x82, 0x0a, 0x22, 0x80, 0x00, 0x82, 0x20, 0x00, 0x88, 0x8a,
- 0x51, 0x05, 0x50, 0x00, 0x10, 0x11, 0x11, 0x10, 0x01, 0x50, 0x40, 0x10,
- 0x54, 0x04, 0x11, 0x04, 0x41, 0x00, 0x50, 0x40, 0x10, 0x04, 0x44, 0x10,
- 0x44, 0x40, 0x01, 0x01, 0x10, 0x10, 0x44, 0x14, 0xa2, 0x00, 0xa0, 0x00,
- 0xa8, 0x02, 0xa0, 0x0a, 0x02, 0xa0, 0xa0, 0x00, 0x0a, 0x82, 0x08, 0x82,
- 0x20, 0x00, 0xa0, 0x20, 0x20, 0x08, 0x22, 0x08, 0x02, 0x80, 0x02, 0x02,
- 0x20, 0xa8, 0x8a, 0x82, 0x51, 0x01, 0x40, 0x01, 0x55, 0x01, 0x10, 0x00,
- 0x01, 0x40, 0x41, 0x00, 0x04, 0x54, 0x50, 0x41, 0x40, 0x00, 0x40, 0x10,
- 0x10, 0x04, 0x41, 0x05, 0x01, 0x00, 0x05, 0x01, 0x10, 0x10, 0x40, 0x50,
- 0xa2, 0x08, 0x80, 0x82, 0xa0, 0x8a, 0x20, 0x00, 0x02, 0x80, 0x22, 0x00,
- 0x02, 0x0a, 0x28, 0x80, 0x20, 0x00, 0x80, 0x20, 0x08, 0x88, 0xa0, 0x00,
- 0x02, 0x00, 0x0a, 0x02, 0x20, 0x08, 0x80, 0xa0, 0x51, 0x01, 0x00, 0x44,
- 0x50, 0x11, 0x10, 0x00, 0x01, 0x00, 0x11, 0x00, 0x01, 0x01, 0x04, 0x40,
- 0x10, 0x00, 0x40, 0x11, 0x10, 0x10, 0x11, 0x00, 0x01, 0x00, 0x10, 0x01,
- 0x10, 0x10, 0x40, 0x50, 0xa2, 0x08, 0x00, 0x88, 0x80, 0x08, 0x20, 0x00,
- 0x02, 0x02, 0x22, 0x00, 0x02, 0x02, 0x08, 0x20, 0x20, 0x00, 0x80, 0x08,
- 0x08, 0x88, 0x20, 0x80, 0x00, 0x00, 0x20, 0x02, 0x20, 0x28, 0x80, 0xa0,
- 0x51, 0x11, 0x10, 0x44, 0x40, 0x50, 0x40, 0x10, 0x01, 0x00, 0x11, 0x00,
- 0x01, 0x01, 0x04, 0x40, 0x10, 0x00, 0x01, 0x11, 0x04, 0x50, 0x10, 0x00,
- 0x01, 0x40, 0x10, 0x04, 0x11, 0x50, 0x00, 0x01, 0xa2, 0x28, 0x20, 0x82,
- 0x0a, 0x20, 0xa0, 0x0a, 0x02, 0x02, 0x22, 0x88, 0x00, 0x82, 0x08, 0x22,
- 0x08, 0x80, 0x80, 0x28, 0x08, 0x28, 0x20, 0x88, 0x00, 0x80, 0x08, 0xaa,
- 0x20, 0xa0, 0x82, 0xaa, 0x41, 0x50, 0x50, 0x01, 0x55, 0x00, 0x00, 0x05,
- 0x05, 0x05, 0x51, 0x04, 0x01, 0x45, 0x14, 0x11, 0x50, 0x00, 0x41, 0x50,
- 0x04, 0x10, 0x50, 0x44, 0x00, 0x40, 0x05, 0x50, 0x50, 0x40, 0x01, 0x14,
- 0xaa, 0xaa, 0x00, 0x00, 0x2a, 0x00, 0x00, 0x00, 0x00, 0xa8, 0xa0, 0x82,
- 0x00, 0x2a, 0xa8, 0x20, 0x28, 0x80, 0x2a, 0x20, 0x08, 0x08, 0xa0, 0x82,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x54, 0x55, 0x01, 0x00,
- 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0xa8, 0xaa, 0x02, 0x80, 0x0a, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x54, 0x55, 0x01, 0x40, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa8, 0xaa, 0x02, 0xa0,
- 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x50, 0x55, 0x05, 0x40, 0x01, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0xa0, 0xaa, 0x0a, 0xa0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x55, 0x15, 0x50,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x80, 0xaa, 0x2a, 0x28, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa0, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x55, 0x55, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x04, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x40, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0xaa, 0x2a, 0x2a,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x20,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x55, 0x15, 0x15, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x04, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0xaa, 0x8a, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x54, 0x45, 0x45,
- 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x80, 0x88, 0xa2, 0x22, 0x08, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x88, 0x00, 0x00, 0x80, 0xaa, 0x2a, 0x0a, 0x00, 0x0a, 0x08,
- 0x02, 0x22, 0xa0, 0x80, 0x08, 0x00, 0xa0, 0x00, 0x20, 0xa0, 0xa0, 0xa0,
- 0x41, 0x01, 0x51, 0x45, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x01,
- 0x00, 0x00, 0x55, 0x55, 0x14, 0x00, 0x11, 0x14, 0x05, 0x45, 0x10, 0x41,
- 0x11, 0x00, 0x40, 0x01, 0x14, 0x41, 0x40, 0x10, 0x82, 0x28, 0xa2, 0xaa,
- 0x80, 0xa2, 0xa2, 0xa0, 0xa8, 0x00, 0x28, 0x28, 0x08, 0xa2, 0x02, 0xaa,
- 0xa8, 0x80, 0x20, 0x88, 0x88, 0x0a, 0x08, 0x82, 0x20, 0x00, 0x80, 0x0a,
- 0x00, 0x82, 0x00, 0x08, 0x04, 0x51, 0x51, 0x55, 0x45, 0x44, 0x11, 0x11,
- 0x11, 0x01, 0x50, 0x44, 0x04, 0x11, 0x05, 0x55, 0x41, 0x41, 0x40, 0x10,
- 0x40, 0x55, 0x04, 0x44, 0x40, 0x00, 0x00, 0x14, 0x00, 0x01, 0x01, 0x04,
- 0x88, 0xa8, 0xa8, 0x2a, 0x2a, 0x20, 0x08, 0x0a, 0x0a, 0x02, 0xa0, 0x80,
- 0x88, 0x08, 0xa2, 0xaa, 0x02, 0x22, 0x00, 0x08, 0xa0, 0x8a, 0x02, 0x88,
- 0x20, 0x00, 0x00, 0x20, 0x00, 0x82, 0x20, 0x02, 0x05, 0x55, 0x54, 0x55,
- 0x44, 0x40, 0x50, 0x51, 0x11, 0x01, 0x04, 0x51, 0x10, 0x51, 0x41, 0x55,
- 0x05, 0x44, 0x00, 0x10, 0x00, 0x50, 0x54, 0x45, 0x40, 0x00, 0x00, 0x40,
- 0x50, 0x01, 0x01, 0x54, 0x80, 0x2a, 0xaa, 0x0a, 0x28, 0x28, 0x08, 0x08,
- 0x08, 0x02, 0x88, 0x88, 0x80, 0x08, 0xa8, 0xaa, 0x0a, 0x28, 0x00, 0x08,
- 0xa0, 0x02, 0x02, 0x80, 0x20, 0x00, 0x00, 0x80, 0x08, 0x02, 0x02, 0x02,
- 0x00, 0x15, 0x55, 0x15, 0x44, 0x44, 0x10, 0x11, 0x11, 0x01, 0x04, 0x45,
- 0x50, 0x10, 0x51, 0x55, 0x15, 0x44, 0x00, 0x10, 0x00, 0x01, 0x04, 0x40,
- 0x40, 0x00, 0x00, 0x40, 0x04, 0x01, 0x11, 0x04, 0x80, 0x0a, 0xaa, 0x2a,
- 0x82, 0x22, 0xa0, 0xa0, 0x08, 0x02, 0xa8, 0xa8, 0x20, 0xa0, 0xa8, 0xaa,
- 0x0a, 0x28, 0x00, 0x08, 0x80, 0x00, 0x02, 0x80, 0x20, 0x00, 0x00, 0x80,
- 0x02, 0x02, 0x0a, 0x02, 0x00, 0x04, 0x54, 0x55, 0x01, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x55, 0x15, 0x44, 0x00, 0x10,
- 0x10, 0x00, 0x04, 0x40, 0x40, 0x00, 0x00, 0x40, 0x04, 0x01, 0x04, 0x04,
- 0x08, 0x02, 0xa8, 0xaa, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x80, 0xaa, 0x28, 0x82, 0x00, 0x08, 0xa8, 0x80, 0x08, 0x88,
- 0x20, 0x00, 0x20, 0x20, 0x02, 0x0a, 0x0a, 0x08, 0x44, 0x00, 0x50, 0x55,
- 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x55,
- 0x51, 0x01, 0x11, 0x10, 0x54, 0x41, 0x10, 0x44, 0x40, 0x00, 0x40, 0x10,
- 0x04, 0x01, 0x04, 0x10, 0x00, 0x00, 0xa0, 0xaa, 0x0a, 0x00, 0x00, 0x00,
- 0x00, 0xa0, 0x00, 0x08, 0x00, 0x00, 0x00, 0xaa, 0x08, 0x00, 0x0a, 0x2a,
- 0x2a, 0x0a, 0xa0, 0xa0, 0xa0, 0x00, 0x20, 0x0a, 0x28, 0x02, 0x00, 0xa0,
- 0x50, 0x01, 0x50, 0x55, 0x05, 0x00, 0x00, 0x00, 0x00, 0x40, 0x01, 0x00,
- 0x00, 0x00, 0x00, 0x54, 0x55, 0x01, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
+#define screensaver_width 256
+#define screensaver_height 256
+static unsigned char screensaver_bits[] = {
+ 0xa8, 0x00, 0xa0, 0xaa, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00,
+ 0x00, 0x00, 0x00, 0xa8, 0xaa, 0x02, 0x00, 0x80, 0x0a, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x54, 0x00, 0x40, 0x55,
+ 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x50,
+ 0x55, 0x05, 0x00, 0x40, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x2a, 0x00, 0x80, 0xaa, 0x2a, 0x00, 0x00, 0x00,
+ 0x00, 0x80, 0x02, 0x00, 0x00, 0x00, 0x00, 0xa8, 0xaa, 0x02, 0x00, 0xa0,
+ 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x15, 0x00, 0x00, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00,
+ 0x00, 0x00, 0x00, 0x50, 0x55, 0x05, 0x00, 0x40, 0x01, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0xaa,
+ 0xaa, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8a, 0x00, 0x00, 0x00, 0x00, 0xa0,
+ 0xaa, 0x0a, 0x00, 0xa0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x54, 0x55, 0x01, 0x00, 0x00,
+ 0x00, 0x00, 0x54, 0x00, 0x00, 0x00, 0x00, 0x40, 0x55, 0x15, 0x00, 0x50,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xaa, 0x2a, 0x80, 0x02, 0x80, 0xaa, 0xaa, 0x82, 0x0a, 0xa8, 0x28, 0x80,
+ 0x8a, 0x80, 0x2a, 0x80, 0x80, 0x8a, 0xa2, 0x82, 0x0a, 0xaa, 0x0a, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x2a, 0x02, 0x80, 0x82, 0x41, 0x40, 0x00, 0x50,
+ 0x55, 0x41, 0x00, 0x00, 0x04, 0x00, 0x54, 0x40, 0x10, 0x00, 0x40, 0x00,
+ 0x51, 0x55, 0x00, 0x15, 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x41, 0x00, 0x10, 0x14, 0x00, 0x00, 0x00, 0xa8, 0x8a, 0x02, 0x00, 0x02,
+ 0x00, 0x20, 0xa2, 0x00, 0x80, 0x00, 0x08, 0x00, 0xaa, 0x2a, 0x00, 0x2a,
+ 0x08, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x80,
+ 0x01, 0x00, 0x01, 0x50, 0x45, 0x05, 0x00, 0x01, 0x10, 0x10, 0x40, 0x11,
+ 0x40, 0x00, 0x44, 0x00, 0x50, 0x15, 0x01, 0x15, 0x04, 0x00, 0x40, 0x00,
+ 0x05, 0x00, 0x00, 0x40, 0x00, 0x01, 0x00, 0x50, 0x20, 0x00, 0x00, 0xa2,
+ 0xaa, 0x2a, 0x00, 0x00, 0x02, 0x00, 0xa0, 0x08, 0x00, 0x00, 0x00, 0x00,
+ 0xa2, 0xaa, 0x00, 0x0a, 0x00, 0x08, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x20,
+ 0x00, 0x00, 0x00, 0x88, 0x00, 0x00, 0x01, 0x40, 0x44, 0x15, 0x10, 0x01,
+ 0x10, 0x10, 0x40, 0x01, 0x40, 0x00, 0x00, 0x00, 0x54, 0x55, 0x41, 0x45,
+ 0x04, 0x00, 0x40, 0x00, 0x14, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x54,
+ 0x20, 0x80, 0x00, 0x82, 0xaa, 0x0a, 0x00, 0x00, 0x22, 0x00, 0x80, 0x0a,
+ 0x00, 0x00, 0x82, 0x00, 0xa0, 0x8a, 0x22, 0x02, 0x00, 0x08, 0x20, 0x00,
+ 0xa8, 0x00, 0x00, 0x20, 0x00, 0x80, 0x00, 0x2a, 0x10, 0x40, 0x00, 0x01,
+ 0x54, 0x45, 0x10, 0x00, 0x01, 0x00, 0x00, 0x05, 0x00, 0x00, 0x01, 0x00,
+ 0x50, 0x45, 0x05, 0x41, 0x00, 0x04, 0x10, 0x00, 0x50, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x15, 0x00, 0x28, 0x00, 0xaa, 0xaa, 0x0a, 0x0a, 0x00,
+ 0x20, 0x08, 0x00, 0x20, 0x00, 0x00, 0x80, 0x00, 0xa8, 0xa2, 0x22, 0x2a,
+ 0x00, 0x00, 0x0a, 0x00, 0xa8, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x0a,
+ 0x50, 0x05, 0x00, 0x01, 0x55, 0x45, 0x00, 0x00, 0x01, 0x00, 0x00, 0x40,
+ 0x01, 0x00, 0x00, 0x00, 0x40, 0x55, 0x11, 0x00, 0x00, 0x54, 0x01, 0x00,
+ 0x44, 0x01, 0x00, 0x00, 0x05, 0x40, 0x00, 0x05, 0x00, 0x08, 0x00, 0x80,
+ 0xaa, 0xaa, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x0a, 0x00, 0x80, 0x00,
+ 0x80, 0xaa, 0x28, 0x20, 0x00, 0x00, 0x02, 0x00, 0x80, 0x02, 0x00, 0x00,
+ 0x28, 0x00, 0x80, 0x02, 0x10, 0x10, 0x00, 0x01, 0x54, 0x45, 0x01, 0x00,
+ 0x41, 0x00, 0x00, 0x00, 0x10, 0x40, 0x00, 0x00, 0x10, 0x55, 0x14, 0x00,
+ 0x00, 0x04, 0x04, 0x00, 0x40, 0x01, 0x00, 0x00, 0x40, 0x40, 0x40, 0x01,
+ 0x08, 0x00, 0x80, 0x00, 0xa8, 0xa2, 0x02, 0x80, 0x00, 0x00, 0x00, 0x00,
+ 0x20, 0xa0, 0xaa, 0x00, 0x80, 0x28, 0x0a, 0x00, 0x00, 0x02, 0x00, 0x00,
+ 0x80, 0x02, 0x00, 0x00, 0x80, 0x00, 0xa0, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00,
+ 0x10, 0x14, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04,
+ 0x00, 0x40, 0x00, 0x00, 0x08, 0x20, 0x80, 0x00, 0x08, 0x08, 0x80, 0x80,
+ 0x80, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x8a, 0x8a, 0x00,
+ 0x02, 0x02, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
+ 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x01,
+ 0x10, 0x10, 0x00, 0x01, 0x10, 0x45, 0x55, 0x01, 0x00, 0x00, 0x10, 0x00,
+ 0x00, 0x00, 0x00, 0x04, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x02, 0x00, 0x08, 0x00, 0x00,
+ 0x20, 0xa2, 0xaa, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08,
+ 0x00, 0x80, 0x00, 0x02, 0x04, 0x00, 0x40, 0x00, 0x04, 0x04, 0x40, 0x40,
+ 0x00, 0x01, 0x00, 0x04, 0x04, 0x00, 0x00, 0x01, 0x00, 0x51, 0x45, 0x05,
+ 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x45, 0x01,
+ 0x2a, 0x80, 0xaa, 0xaa, 0x82, 0xaa, 0x2a, 0xa0, 0x02, 0x02, 0x80, 0xa8,
+ 0x00, 0x2a, 0xa0, 0x02, 0x80, 0xa2, 0x00, 0xa0, 0xa0, 0x0a, 0xa0, 0x00,
+ 0x00, 0x00, 0x80, 0x88, 0x02, 0x00, 0x08, 0x80, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x50, 0x41, 0x55, 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x55,
+ 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa8, 0xa0, 0xaa, 0x0a,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xaa, 0x00, 0x00, 0x20, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x54, 0x40, 0x55, 0x15, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x54, 0x01, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x2a, 0x80, 0xaa, 0x2a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa8,
+ 0x02, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x00, 0x55, 0x55,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0x05, 0x00, 0x04, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x0a, 0x00, 0xaa, 0xaa, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0xa0, 0x0a, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x05, 0x00, 0x54, 0x55, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40,
+ 0x15, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0xa8, 0xaa,
+ 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa0, 0x0a, 0x80, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x40, 0x01, 0x00, 0x50, 0x55, 0x05, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x40, 0x15, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa0,
+ 0x00, 0x00, 0xa8, 0xaa, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80,
+ 0x2a, 0x20, 0x00, 0x00, 0x41, 0x05, 0x55, 0x54, 0x11, 0x04, 0x00, 0x14,
+ 0x40, 0x10, 0x44, 0x15, 0x15, 0x00, 0x00, 0x50, 0x01, 0x00, 0x50, 0x55,
+ 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x55, 0x10, 0x50, 0x40,
+ 0x82, 0x08, 0x02, 0x08, 0x20, 0x08, 0x00, 0x22, 0xa0, 0x20, 0x88, 0x00,
+ 0x22, 0x00, 0x00, 0xa8, 0x2a, 0x00, 0xa0, 0xaa, 0x0a, 0x00, 0x80, 0x02,
+ 0x00, 0x00, 0x00, 0x00, 0xaa, 0x08, 0x88, 0x20, 0x44, 0x10, 0x01, 0x04,
+ 0x50, 0x04, 0x00, 0x41, 0x10, 0x11, 0x44, 0x00, 0x41, 0x00, 0x00, 0x54,
+ 0x41, 0x00, 0x40, 0x55, 0x15, 0x00, 0x40, 0x04, 0x00, 0x00, 0x00, 0x00,
+ 0x54, 0x11, 0x04, 0x11, 0x80, 0x20, 0x02, 0x08, 0xa0, 0x08, 0x00, 0x02,
+ 0x88, 0x20, 0x88, 0x00, 0x82, 0x00, 0x00, 0x2a, 0x22, 0x00, 0x80, 0xaa,
+ 0x2a, 0x00, 0x20, 0x08, 0x00, 0x00, 0x00, 0x00, 0xa8, 0x08, 0x08, 0x20,
+ 0x40, 0x10, 0x01, 0x04, 0x50, 0x04, 0x00, 0x01, 0x04, 0x41, 0x44, 0x00,
+ 0x41, 0x00, 0x00, 0x15, 0x05, 0x14, 0x15, 0x50, 0x10, 0x05, 0x40, 0x41,
+ 0x41, 0x10, 0x45, 0x05, 0x50, 0x04, 0x04, 0x10, 0x80, 0x20, 0x02, 0x08,
+ 0xa0, 0x08, 0x00, 0x02, 0x08, 0x22, 0x82, 0x00, 0x82, 0x00, 0x00, 0x0a,
+ 0x2a, 0x22, 0x8a, 0x22, 0x22, 0x08, 0x80, 0x22, 0x22, 0x88, 0x88, 0x02,
+ 0x28, 0x02, 0x08, 0x20, 0x40, 0x10, 0x15, 0x54, 0x10, 0x05, 0x00, 0x14,
+ 0x04, 0x41, 0x44, 0x05, 0x41, 0x00, 0x00, 0x05, 0x50, 0x01, 0x41, 0x04,
+ 0x05, 0x11, 0x00, 0x05, 0x44, 0x44, 0x50, 0x00, 0x10, 0x05, 0x50, 0x10,
+ 0x80, 0x0a, 0x02, 0x08, 0x20, 0x0a, 0x00, 0x20, 0xa8, 0x82, 0x82, 0x00,
+ 0x2a, 0x00, 0x80, 0x02, 0x22, 0x02, 0x82, 0x20, 0x20, 0x08, 0x20, 0x88,
+ 0x82, 0x88, 0x8a, 0x00, 0x88, 0x0a, 0x80, 0x20, 0x40, 0x04, 0x01, 0x04,
+ 0x10, 0x05, 0x00, 0x40, 0x04, 0x41, 0x41, 0x00, 0x11, 0x00, 0x40, 0x01,
+ 0x41, 0x41, 0x41, 0x14, 0x15, 0x11, 0x40, 0x44, 0x04, 0x44, 0x40, 0x00,
+ 0x44, 0x15, 0x00, 0x11, 0x80, 0x08, 0x02, 0x08, 0x20, 0x0a, 0x00, 0x80,
+ 0x08, 0x82, 0x82, 0x00, 0x22, 0x00, 0xa0, 0x00, 0x22, 0x22, 0x82, 0x20,
+ 0x22, 0x0a, 0x20, 0x28, 0x82, 0x82, 0x88, 0x00, 0x88, 0x2a, 0x00, 0x22,
+ 0x44, 0x10, 0x01, 0x04, 0x10, 0x04, 0x00, 0x41, 0x04, 0x01, 0x41, 0x00,
+ 0x41, 0x00, 0x50, 0x01, 0x14, 0x14, 0x01, 0x55, 0x10, 0x15, 0x40, 0x45,
+ 0x05, 0x01, 0x45, 0x00, 0x04, 0x55, 0x04, 0x11, 0x82, 0x20, 0x02, 0x08,
+ 0x20, 0x08, 0x00, 0x22, 0x08, 0x82, 0x80, 0x00, 0x82, 0x00, 0xa8, 0x00,
+ 0x00, 0x00, 0x00, 0xa0, 0xaa, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x02, 0xaa, 0x88, 0x20, 0x41, 0x10, 0x55, 0x54, 0x11, 0x04, 0x00, 0x14,
+ 0x04, 0x01, 0x41, 0x15, 0x41, 0x00, 0x54, 0x00, 0x00, 0x00, 0x00, 0x40,
+ 0x55, 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x54, 0x51, 0x40,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x2a, 0x00, 0x00, 0x00, 0x00, 0x80, 0xaa, 0x2a, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x80, 0x00, 0xaa, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x54, 0x55, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40, 0x01, 0x15, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40,
+ 0x00, 0x54, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa8, 0xaa, 0x02,
+ 0x00, 0x00, 0x00, 0x00, 0xa0, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0xa8, 0x02, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0x55, 0x05, 0x00, 0x00, 0x00, 0x00,
+ 0x50, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x10, 0x00, 0x50, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0xa0, 0xaa, 0x0a, 0x00, 0x00, 0x00, 0x00, 0xa8, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08,
+ 0x00, 0xa0, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x55, 0x15,
+ 0x00, 0x00, 0x00, 0x00, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x40, 0x15, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xaa, 0x2a, 0x00, 0x00, 0x00, 0x00,
+ 0x2a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x02, 0x00, 0x80, 0x2a, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01,
+ 0x00, 0x00, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xaa, 0xaa,
+ 0x00, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00,
+ 0x05, 0x14, 0x40, 0x01, 0x41, 0x40, 0x01, 0x14, 0x10, 0x01, 0x00, 0x40,
+ 0x01, 0x04, 0x14, 0x14, 0x14, 0x10, 0x04, 0x00, 0xa0, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x0a, 0xaa, 0x00, 0x00, 0x00, 0x80, 0x82, 0xa0, 0x20, 0x82,
+ 0xa2, 0x20, 0x02, 0x22, 0x28, 0x02, 0x00, 0x08, 0x8a, 0x22, 0x08, 0x08,
+ 0x22, 0x28, 0x0a, 0x00, 0x10, 0x01, 0x00, 0x00, 0x00, 0x00, 0x44, 0x54,
+ 0x01, 0x00, 0x00, 0x40, 0x41, 0x40, 0x10, 0x04, 0x11, 0x11, 0x04, 0x41,
+ 0x10, 0x04, 0x00, 0x04, 0x04, 0x40, 0x10, 0x00, 0x41, 0x10, 0x11, 0x00,
+ 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x88, 0xaa, 0x02, 0x00, 0x00, 0xa0,
+ 0x82, 0x80, 0x08, 0x08, 0x02, 0x08, 0x88, 0x80, 0x08, 0x08, 0x00, 0x08,
+ 0x08, 0x20, 0x20, 0x80, 0x80, 0x20, 0x00, 0x00, 0x10, 0x50, 0x14, 0x14,
+ 0x45, 0x05, 0x40, 0x05, 0x41, 0x14, 0x15, 0x50, 0x41, 0x01, 0x04, 0x00,
+ 0x01, 0x04, 0x50, 0x00, 0x11, 0x04, 0x00, 0x14, 0x00, 0x40, 0x10, 0x44,
+ 0x00, 0x11, 0x00, 0x00, 0xa0, 0x88, 0x22, 0xa2, 0x88, 0x08, 0x00, 0x2a,
+ 0x82, 0x22, 0x22, 0xa8, 0x80, 0x0a, 0x08, 0x00, 0x02, 0xa8, 0x8a, 0xaa,
+ 0x08, 0x08, 0x00, 0xa8, 0x00, 0x2a, 0x20, 0x80, 0xaa, 0x20, 0x00, 0x00,
+ 0x00, 0x05, 0x04, 0x15, 0x55, 0x04, 0x40, 0x04, 0x50, 0x54, 0x01, 0x54,
+ 0x00, 0x54, 0x04, 0x00, 0x01, 0x04, 0x40, 0x00, 0x10, 0x04, 0x00, 0x40,
+ 0x05, 0x41, 0x40, 0x40, 0x00, 0x10, 0x00, 0x00, 0x80, 0x08, 0x02, 0x82,
+ 0x80, 0x08, 0x80, 0x20, 0x02, 0x02, 0x02, 0x2a, 0x00, 0xa0, 0x08, 0x00,
+ 0x02, 0x08, 0x80, 0x00, 0x08, 0x08, 0x00, 0x00, 0x8a, 0x20, 0x20, 0x82,
+ 0x00, 0x20, 0x00, 0x00, 0x10, 0x45, 0x04, 0x11, 0x51, 0x04, 0x50, 0x44,
+ 0x44, 0x44, 0x01, 0x15, 0x00, 0x40, 0x05, 0x00, 0x01, 0x04, 0x40, 0x00,
+ 0x10, 0x04, 0x00, 0x00, 0x54, 0x40, 0x40, 0x41, 0x00, 0x10, 0x00, 0x00,
+ 0xa0, 0x28, 0x02, 0x0a, 0x8a, 0x08, 0x20, 0x0a, 0x0a, 0x28, 0x02, 0x0a,
+ 0x00, 0x80, 0x08, 0x00, 0x02, 0x08, 0x80, 0x00, 0x08, 0x08, 0x00, 0x00,
+ 0x88, 0x20, 0x80, 0x80, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x55, 0x55, 0x00, 0x00, 0x05, 0x40, 0x00, 0x11, 0x00,
+ 0x01, 0x10, 0x10, 0x01, 0x11, 0x04, 0x00, 0x04, 0x50, 0x40, 0x41, 0x01,
+ 0x01, 0x11, 0x00, 0x00, 0x00, 0xa0, 0x00, 0x00, 0x00, 0x00, 0x00, 0xaa,
+ 0xaa, 0x00, 0x80, 0x02, 0x80, 0x80, 0x20, 0x02, 0x02, 0x20, 0x08, 0x82,
+ 0x08, 0x08, 0x00, 0x08, 0x88, 0x20, 0x80, 0x00, 0x82, 0x20, 0x00, 0x00,
+ 0x00, 0x40, 0x01, 0x10, 0x00, 0x00, 0x00, 0x54, 0x55, 0x01, 0x40, 0x01,
+ 0x40, 0x14, 0x40, 0x41, 0x05, 0x40, 0x01, 0x14, 0x14, 0x14, 0x00, 0x44,
+ 0x01, 0x45, 0x00, 0x00, 0x14, 0x54, 0x00, 0x00, 0x00, 0x80, 0x02, 0x08,
+ 0x00, 0x00, 0x00, 0xa8, 0xaa, 0x02, 0xa0, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x04, 0x00, 0x00, 0x00, 0x50,
+ 0x55, 0x05, 0x50, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x0a, 0x02, 0x00, 0x00, 0x00, 0xa0, 0xaa, 0x0a, 0xa8, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x01,
+ 0x00, 0x00, 0x00, 0x50, 0x55, 0x05, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x00, 0xa0,
+ 0xaa, 0x0a, 0x2a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x40, 0x55, 0x15, 0x15, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00,
+ 0x00, 0x00, 0x00, 0x80, 0xaa, 0x2a, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x55, 0x15, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0xa0, 0x00, 0x00, 0x00, 0x00, 0x00, 0xaa, 0x8a, 0x02, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0x01,
+ 0x00, 0x00, 0x00, 0x00, 0x54, 0x45, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x82, 0x02, 0x00, 0x00, 0x00, 0x00,
+ 0xa8, 0xa2, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x01, 0x05, 0x50, 0x00, 0x50, 0x40, 0x45, 0x11, 0x00, 0x50,
+ 0x40, 0x41, 0x01, 0x00, 0x14, 0x00, 0x51, 0x40, 0x40, 0x00, 0x05, 0x14,
+ 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x0a,
+ 0x88, 0x02, 0xaa, 0xa8, 0x80, 0x00, 0x00, 0xaa, 0xa8, 0xa2, 0x02, 0x00,
+ 0xa2, 0xa0, 0x22, 0xa8, 0xa0, 0xa0, 0x8a, 0x2a, 0x02, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x14, 0x04, 0x01, 0x45, 0x51,
+ 0x04, 0x40, 0x00, 0x45, 0x41, 0x51, 0x01, 0x00, 0x41, 0x50, 0x54, 0x50,
+ 0x50, 0x50, 0x14, 0x14, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x0a, 0x82, 0xa2, 0xa0, 0x02, 0xa0, 0x88, 0x82,
+ 0xa0, 0x88, 0x02, 0x80, 0x82, 0x28, 0x28, 0xa0, 0x20, 0x28, 0x08, 0x8a,
+ 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x51, 0x45, 0x54, 0x00,
+ 0x14, 0x40, 0x41, 0x50, 0x05, 0x51, 0x10, 0x41, 0x41, 0x41, 0x01, 0x00,
+ 0x05, 0x14, 0x10, 0x50, 0x40, 0x10, 0x14, 0x54, 0x04, 0x00, 0x41, 0x55,
+ 0x04, 0x45, 0x01, 0x04, 0x20, 0x02, 0x08, 0x00, 0x2a, 0xa0, 0x00, 0xa0,
+ 0x8a, 0x20, 0xa8, 0xa2, 0xa0, 0xa0, 0x00, 0x80, 0x0a, 0x28, 0x28, 0xa0,
+ 0x20, 0x28, 0x0a, 0x2a, 0x00, 0x00, 0x22, 0x0a, 0x80, 0x88, 0x02, 0x88,
+ 0x04, 0x50, 0x01, 0x00, 0x54, 0x40, 0x01, 0x50, 0x15, 0x10, 0x14, 0x51,
+ 0x40, 0x41, 0x01, 0x00, 0x15, 0x14, 0x14, 0x40, 0x11, 0x14, 0x05, 0x14,
+ 0x00, 0x40, 0x10, 0x00, 0x15, 0x45, 0x04, 0x01, 0x00, 0x00, 0x08, 0x00,
+ 0xa8, 0xa0, 0x00, 0x28, 0x8a, 0x08, 0x0a, 0x28, 0xa0, 0xa0, 0x00, 0x00,
+ 0x2a, 0x0a, 0x28, 0xa0, 0x08, 0x8a, 0x02, 0x0a, 0x00, 0x80, 0x00, 0x08,
+ 0x80, 0x00, 0x00, 0x82, 0x44, 0x11, 0x00, 0x00, 0x50, 0x50, 0x00, 0x10,
+ 0x05, 0x40, 0x15, 0x05, 0x50, 0x50, 0x00, 0x00, 0x14, 0x14, 0x14, 0x40,
+ 0x11, 0x54, 0x00, 0x05, 0x00, 0x00, 0x11, 0x00, 0x01, 0x40, 0x04, 0x44,
+ 0x80, 0x20, 0x0a, 0x00, 0xa0, 0xa0, 0x00, 0x88, 0x82, 0xa8, 0x0a, 0x00,
+ 0xa0, 0xa0, 0x00, 0x00, 0x28, 0x0a, 0x0a, 0xa0, 0x08, 0x0a, 0x00, 0x0a,
+ 0x00, 0x00, 0x22, 0x0a, 0xa2, 0x00, 0x00, 0x88, 0x01, 0x40, 0x15, 0x00,
+ 0x50, 0x51, 0x40, 0x00, 0x01, 0x51, 0x15, 0x00, 0x50, 0x50, 0x00, 0x00,
+ 0x54, 0x14, 0x54, 0x40, 0x05, 0x14, 0x00, 0x05, 0x00, 0x40, 0x41, 0x15,
+ 0x14, 0x45, 0x04, 0x05, 0x00, 0x00, 0x00, 0x80, 0xa0, 0xa0, 0x20, 0x88,
+ 0x80, 0xaa, 0x08, 0x82, 0x28, 0x28, 0x02, 0x20, 0x28, 0x0a, 0x2a, 0xa0,
+ 0x02, 0x0a, 0x88, 0xa2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x41, 0x40, 0x11, 0x44, 0x00, 0x55, 0x14, 0x44,
+ 0x50, 0x50, 0x01, 0x40, 0x10, 0x54, 0x15, 0x40, 0x01, 0x14, 0x04, 0x45,
+ 0x01, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80,
+ 0x22, 0xa0, 0x0a, 0x00, 0x00, 0x0a, 0x2a, 0x20, 0x28, 0xa8, 0x00, 0xa0,
+ 0x08, 0xa8, 0x08, 0xa0, 0x00, 0xa8, 0x82, 0x82, 0x02, 0x08, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x00, 0x05, 0x00,
+ 0x00, 0x54, 0x55, 0x10, 0x50, 0x50, 0x00, 0x00, 0x05, 0x50, 0x04, 0x40,
+ 0x00, 0x50, 0x40, 0x05, 0x05, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x80, 0xaa, 0x2a,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x0a, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x05, 0x00, 0x40, 0x55, 0x15, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x01, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x0a,
+ 0x00, 0x80, 0xaa, 0x2a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x05, 0x00, 0x00, 0x55, 0x55,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0xa0, 0x02, 0x00, 0x00, 0xaa, 0xaa, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0x01,
+ 0x00, 0x00, 0x54, 0x55, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa8, 0x00, 0x00, 0x00, 0xa8, 0xaa,
+ 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xa0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0x50, 0x55, 0x05, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0x01, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x28, 0x00,
+ 0x00, 0x00, 0xa0, 0xaa, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x82, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x50, 0x55,
+ 0x05, 0x00, 0x00, 0x14, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x01, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0xa0, 0xaa, 0x0a, 0x00, 0x00, 0x28,
+ 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x0a, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00,
+ 0x00, 0x00, 0x40, 0x55, 0x15, 0x00, 0x00, 0x50, 0x04, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x40, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x0a, 0x00, 0x00, 0x00, 0x80, 0xaa,
+ 0x2a, 0x00, 0x00, 0xa0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x55, 0x50, 0x15,
+ 0x55, 0x11, 0x55, 0x00, 0x15, 0x00, 0x54, 0x01, 0x00, 0x54, 0x01, 0x40,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x50, 0x00, 0x20, 0x82, 0x20, 0x08, 0x82, 0x00, 0x22, 0x80,
+ 0x08, 0x08, 0x28, 0xa2, 0x28, 0x20, 0x08, 0x20, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0xa2,
+ 0x00, 0x04, 0x41, 0x10, 0x04, 0x11, 0x00, 0x40, 0x10, 0x14, 0x10, 0x54,
+ 0x54, 0x11, 0x10, 0x00, 0x01, 0x00, 0x50, 0x14, 0x15, 0x05, 0x45, 0x01,
+ 0x50, 0x50, 0x44, 0x14, 0x05, 0x00, 0x04, 0x40, 0x20, 0x02, 0x22, 0x02,
+ 0x22, 0x08, 0x20, 0x20, 0x00, 0x08, 0x20, 0xa8, 0x28, 0x22, 0x08, 0x80,
+ 0x02, 0x00, 0x88, 0x22, 0xa2, 0x88, 0x28, 0x02, 0x88, 0x80, 0x22, 0xa2,
+ 0x08, 0x00, 0x08, 0x22, 0x00, 0x04, 0x41, 0x00, 0x04, 0x00, 0x01, 0x40,
+ 0x00, 0x10, 0x40, 0x04, 0x11, 0x10, 0x04, 0x10, 0x05, 0x00, 0x10, 0x04,
+ 0x01, 0x55, 0x45, 0x04, 0x10, 0x50, 0x44, 0x15, 0x01, 0x00, 0x14, 0x10,
+ 0x00, 0x2a, 0xa0, 0x02, 0x2a, 0x20, 0x22, 0x80, 0x02, 0x22, 0x20, 0x02,
+ 0x0a, 0xa0, 0x02, 0x08, 0x0a, 0x00, 0x20, 0x02, 0x82, 0x80, 0x20, 0x02,
+ 0x80, 0x88, 0x28, 0x82, 0x00, 0x00, 0xa8, 0x20, 0x00, 0x44, 0x40, 0x01,
+ 0x14, 0x00, 0x04, 0x00, 0x05, 0x10, 0x40, 0x00, 0x11, 0x10, 0x05, 0x04,
+ 0x14, 0x00, 0x44, 0x44, 0x01, 0x51, 0x44, 0x04, 0x10, 0x45, 0x14, 0x11,
+ 0x01, 0x00, 0x50, 0x11, 0x00, 0x82, 0x20, 0x02, 0x22, 0x20, 0x28, 0x20,
+ 0x08, 0x2a, 0x80, 0x02, 0x02, 0x20, 0x08, 0x00, 0x00, 0x00, 0x28, 0x28,
+ 0x02, 0x8a, 0x22, 0x02, 0xa0, 0xa8, 0x08, 0x8a, 0x00, 0x00, 0x80, 0x22,
+ 0x00, 0x04, 0x41, 0x10, 0x04, 0x01, 0x10, 0x00, 0x10, 0x41, 0x40, 0x01,
+ 0x11, 0x10, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x51, 0x20, 0x82, 0x20, 0x00,
+ 0x02, 0x20, 0x28, 0x20, 0x88, 0x20, 0x80, 0x00, 0x82, 0x20, 0x28, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x22, 0x10, 0x04, 0x45, 0x10, 0x04, 0x01, 0x10, 0x40,
+ 0x04, 0x40, 0x00, 0x00, 0x41, 0x10, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x41,
+ 0x8a, 0x0a, 0xaa, 0x8a, 0xaa, 0xa8, 0x20, 0xa0, 0x82, 0xa2, 0x80, 0x80,
+ 0xaa, 0xa8, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa0, 0x80, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2a, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa0,
+ 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x55, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0x15, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80,
+ 0xaa, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0xa8, 0x2a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x55, 0x01, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x54,
+ 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0xa0, 0xa2, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2a, 0x2a, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x01, 0x10, 0x50,
+ 0x41, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x15, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0xa0, 0x80, 0x02, 0xa8, 0x28,
+ 0x0a, 0xa0, 0x02, 0xa8, 0x00, 0x8a, 0x02, 0x28, 0x00, 0x00, 0x00, 0x0a,
+ 0x28, 0x80, 0x2a, 0x80, 0x22, 0x80, 0x0a, 0x00, 0xa8, 0x00, 0x28, 0x2a,
+ 0x00, 0x05, 0x00, 0x50, 0x00, 0x00, 0x55, 0x51, 0x14, 0x14, 0x54, 0x54,
+ 0x01, 0x54, 0x01, 0x50, 0x50, 0x05, 0x00, 0x05, 0x00, 0x50, 0x55, 0x40,
+ 0x51, 0x50, 0x15, 0x00, 0x54, 0x05, 0x14, 0x55, 0x00, 0x0a, 0x00, 0xa0,
+ 0x00, 0x80, 0xaa, 0x2a, 0x2a, 0x08, 0x2a, 0xa8, 0x02, 0xaa, 0x02, 0xa0,
+ 0xa0, 0x02, 0x00, 0x0a, 0x00, 0xa8, 0xaa, 0x80, 0x2a, 0xa8, 0x2a, 0x80,
+ 0xaa, 0x0a, 0xa8, 0xaa, 0x01, 0x05, 0x00, 0x50, 0x05, 0x40, 0x55, 0x55,
+ 0x14, 0x00, 0x14, 0x50, 0x05, 0x54, 0x01, 0x40, 0x51, 0x01, 0x00, 0x55,
+ 0x00, 0x54, 0x55, 0x41, 0x15, 0x54, 0x55, 0x40, 0x55, 0x15, 0x54, 0x55,
+ 0x02, 0x0a, 0x00, 0xa0, 0x0a, 0xa0, 0x02, 0x2a, 0x2a, 0x00, 0x0a, 0x88,
+ 0x0a, 0x2a, 0x00, 0x80, 0xaa, 0x00, 0x00, 0xaa, 0x00, 0xaa, 0xa0, 0xa2,
+ 0x0a, 0x2a, 0xa8, 0xa0, 0x0a, 0x0a, 0xaa, 0xa0, 0x01, 0x14, 0x01, 0x40,
+ 0x55, 0x50, 0x01, 0x14, 0x14, 0x00, 0x05, 0x04, 0x15, 0x15, 0x00, 0x00,
+ 0x51, 0x00, 0x00, 0x54, 0x05, 0x14, 0x40, 0x45, 0x05, 0x15, 0x50, 0x41,
+ 0x01, 0x14, 0x54, 0x40, 0x02, 0xa8, 0x00, 0x80, 0xaa, 0xa8, 0x00, 0x2a,
+ 0x28, 0x88, 0x02, 0x0a, 0x0a, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa8,
+ 0x0a, 0x0a, 0xa0, 0xa2, 0x82, 0x0a, 0xa0, 0xa0, 0x00, 0x28, 0x2a, 0xa0,
+ 0x01, 0x50, 0x00, 0x00, 0x55, 0x50, 0x00, 0x14, 0x54, 0x54, 0x05, 0x15,
+ 0x14, 0x15, 0x00, 0x00, 0x11, 0x00, 0x00, 0x50, 0x05, 0x15, 0x00, 0x40,
+ 0x01, 0x05, 0x40, 0x51, 0x00, 0x14, 0x14, 0x40, 0x00, 0xa8, 0x00, 0x00,
+ 0xa8, 0x28, 0x00, 0x28, 0x28, 0xa8, 0x02, 0x80, 0x0a, 0x0a, 0x00, 0x80,
+ 0x08, 0x00, 0x00, 0x80, 0x8a, 0x0a, 0x00, 0xa0, 0x80, 0xaa, 0xaa, 0xa8,
+ 0xaa, 0x2a, 0x0a, 0xa0, 0x01, 0x44, 0x01, 0x00, 0x50, 0x55, 0x00, 0x14,
+ 0x50, 0x14, 0x01, 0x00, 0x15, 0x05, 0x00, 0x40, 0x15, 0x00, 0x00, 0x00,
+ 0x15, 0x05, 0x00, 0x50, 0x41, 0x55, 0x55, 0x51, 0x55, 0x15, 0x15, 0x40,
+ 0x00, 0x80, 0x02, 0x00, 0xa0, 0x28, 0x00, 0x0a, 0x28, 0x0a, 0x02, 0x00,
+ 0x8a, 0x0a, 0x00, 0xa0, 0x2a, 0x00, 0x00, 0x00, 0x8a, 0x0a, 0x00, 0xa0,
+ 0x80, 0xaa, 0xaa, 0xa8, 0xaa, 0x2a, 0x0a, 0xa0, 0x01, 0x40, 0x01, 0x00,
+ 0x50, 0x55, 0x00, 0x14, 0x50, 0x05, 0x00, 0x00, 0x14, 0x05, 0x00, 0x50,
+ 0x50, 0x00, 0x00, 0x00, 0x15, 0x05, 0x00, 0x50, 0x40, 0x55, 0x55, 0x51,
+ 0x55, 0x15, 0x05, 0x50, 0x00, 0x80, 0x02, 0x2a, 0xa8, 0x28, 0x00, 0x0a,
+ 0xa8, 0x0a, 0x80, 0xaa, 0x82, 0x02, 0x00, 0x20, 0xa0, 0x00, 0xa0, 0x82,
+ 0x8a, 0x0a, 0x00, 0xa0, 0x80, 0x02, 0x00, 0x28, 0x00, 0x00, 0x0a, 0xa0,
+ 0x00, 0x00, 0x05, 0x14, 0x50, 0x54, 0x00, 0x15, 0x50, 0x05, 0x40, 0x55,
+ 0x01, 0x05, 0x00, 0x10, 0x40, 0x01, 0x40, 0x01, 0x05, 0x15, 0x50, 0x51,
+ 0x40, 0x01, 0x00, 0x50, 0x00, 0x00, 0x05, 0x50, 0x00, 0x00, 0x0a, 0x2a,
+ 0xa8, 0xa8, 0x80, 0x0a, 0xa0, 0x02, 0x80, 0x0a, 0x80, 0x02, 0x00, 0x08,
+ 0x80, 0x02, 0xa0, 0x82, 0x0a, 0x2a, 0xa8, 0xa0, 0x80, 0x02, 0x2a, 0xa8,
+ 0x80, 0x8a, 0x0a, 0xa0, 0x00, 0x00, 0x00, 0x54, 0x55, 0x50, 0x55, 0x05,
+ 0x50, 0x01, 0x00, 0x00, 0x44, 0x05, 0x00, 0x04, 0x00, 0x05, 0x40, 0x55,
+ 0x05, 0x54, 0x55, 0x50, 0x00, 0x55, 0x15, 0x50, 0x55, 0x05, 0x05, 0x50,
+ 0x00, 0x00, 0x00, 0xa8, 0x2a, 0xa0, 0xaa, 0x0a, 0xa0, 0x00, 0x08, 0x00,
+ 0x8a, 0x02, 0x00, 0x0a, 0x00, 0x00, 0x80, 0xaa, 0x02, 0xaa, 0x2a, 0x28,
+ 0x80, 0xaa, 0x0a, 0xa0, 0xaa, 0x82, 0x02, 0x28, 0x00, 0x00, 0x00, 0x50,
+ 0x15, 0x40, 0x55, 0x05, 0x40, 0x01, 0x10, 0x00, 0x55, 0x01, 0x00, 0x05,
+ 0x00, 0x00, 0x00, 0x55, 0x01, 0x54, 0x15, 0x50, 0x00, 0x55, 0x05, 0x40,
+ 0x55, 0x01, 0x05, 0x50, 0x00, 0x00, 0x00, 0xa0, 0x02, 0x80, 0x0a, 0x0a,
+ 0xa0, 0x00, 0x00, 0xa0, 0xaa, 0x02, 0x80, 0x0a, 0x00, 0x00, 0x00, 0x2a,
+ 0x00, 0xa0, 0x0a, 0x28, 0x00, 0xa8, 0x00, 0x80, 0x2a, 0x80, 0x02, 0x28,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x55,
+ 0x55, 0x00, 0x40, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xaa, 0xaa, 0x00, 0xa0, 0x02,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x55, 0x55, 0x00, 0x50, 0x01, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xaa,
+ 0xaa, 0x00, 0xa8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x54, 0x55, 0x01, 0x50, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0xa8, 0xaa, 0x02, 0x28, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50,
+ 0x55, 0x05, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa0, 0xaa, 0x0a, 0x0a, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x40, 0x55, 0x15, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80,
+ 0xaa, 0x8a, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x55, 0x45, 0x05, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x80, 0x22, 0xa0, 0x22, 0xa8, 0x0a, 0xa8, 0x00,
+ 0xa8, 0xa0, 0x28, 0x80, 0xaa, 0x22, 0x28, 0xa0, 0x02, 0x2a, 0x2a, 0xa0,
+ 0x02, 0x8a, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x40, 0x15, 0x50, 0x15, 0x54, 0x15, 0x54, 0x01, 0x55, 0x41, 0x55, 0x00,
+ 0x55, 0x11, 0x54, 0x50, 0x05, 0x54, 0x54, 0x54, 0x05, 0x54, 0x05, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x08, 0x08, 0x08,
+ 0x20, 0x08, 0x02, 0x82, 0x82, 0x82, 0x82, 0x00, 0xaa, 0x08, 0x20, 0x20,
+ 0x08, 0x08, 0x08, 0x0a, 0x0a, 0x28, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x50, 0x10, 0x04, 0x10, 0x10, 0x00, 0x01, 0x04,
+ 0x01, 0x01, 0x01, 0x01, 0x54, 0x14, 0x11, 0x00, 0x10, 0x10, 0x04, 0x04,
+ 0x04, 0x10, 0x00, 0x14, 0x51, 0x10, 0x44, 0x01, 0x50, 0x44, 0x44, 0x14,
+ 0xa0, 0x00, 0x02, 0x08, 0x08, 0x80, 0x00, 0x82, 0x00, 0x82, 0x80, 0x00,
+ 0xa8, 0x28, 0x00, 0xa0, 0x0a, 0x20, 0x08, 0x02, 0x08, 0x08, 0x00, 0x00,
+ 0x20, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x08, 0x40, 0x05, 0x04, 0x00,
+ 0x10, 0x00, 0x55, 0x45, 0x55, 0x41, 0x40, 0x00, 0x54, 0x54, 0x00, 0x50,
+ 0x05, 0x10, 0x04, 0x55, 0x05, 0x04, 0x00, 0x44, 0x10, 0x14, 0x45, 0x04,
+ 0x10, 0x54, 0x54, 0x04, 0x00, 0x0a, 0x02, 0x00, 0x08, 0x80, 0xaa, 0x82,
+ 0xaa, 0x82, 0x80, 0x00, 0x2a, 0xaa, 0x00, 0x08, 0x08, 0x20, 0x02, 0xaa,
+ 0x0a, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00,
+ 0x10, 0x14, 0x04, 0x00, 0x04, 0x00, 0x01, 0x40, 0x00, 0x40, 0x40, 0x00,
+ 0x15, 0x45, 0x15, 0x04, 0x04, 0x10, 0x01, 0x01, 0x00, 0x04, 0x00, 0x05,
+ 0x15, 0x10, 0x44, 0x04, 0x14, 0x14, 0x41, 0x04, 0x08, 0x08, 0x0a, 0x08,
+ 0x08, 0x80, 0x02, 0x82, 0x80, 0x20, 0x20, 0x80, 0x8a, 0x8a, 0x22, 0x02,
+ 0x02, 0xa0, 0x00, 0x02, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x54, 0x05, 0x54, 0x15, 0x55, 0x01, 0x55, 0x01,
+ 0x55, 0x51, 0x51, 0x01, 0x45, 0x05, 0x00, 0x54, 0x15, 0x40, 0x00, 0x54,
+ 0x45, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xa8, 0x02, 0xa8, 0x82, 0xaa, 0x00, 0xaa, 0x00, 0x2a, 0xa8, 0xa8, 0x80,
+ 0x82, 0x22, 0x20, 0xa8, 0x0a, 0x20, 0x00, 0xa8, 0x80, 0xaa, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x01, 0x55, 0x55, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50,
+ 0x05, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0xa0, 0x00, 0xaa, 0xaa, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa0, 0x0a, 0x00, 0x00, 0x08,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50,
+ 0x00, 0x54, 0x55, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x40, 0x15, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa8, 0x00, 0xa8, 0xaa, 0x02,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80,
+ 0x2a, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x54, 0x00, 0x54, 0x55, 0x01, 0x00, 0x40, 0x01, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x55, 0x00, 0x00, 0x01,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2a,
+ 0x00, 0xa8, 0xaa, 0x02, 0x00, 0x80, 0x02, 0x20, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0xaa, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x15, 0x00, 0x50, 0x55, 0x05,
+ 0x00, 0x00, 0x05, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x54, 0x01, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x80, 0x0a, 0x00, 0xa0, 0xaa, 0x0a, 0x00, 0x00, 0x0a, 0x08,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa8, 0x02, 0x20, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x05,
+ 0x00, 0x40, 0x55, 0x15, 0x00, 0x00, 0x14, 0x04, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x54, 0x01, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x80, 0xaa, 0x2a,
+ 0x00, 0x00, 0x28, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xa8, 0x02, 0x08, 0x00, 0x10, 0x50, 0x50, 0x50, 0x40, 0x10, 0x00, 0x00,
+ 0x00, 0x00, 0x40, 0x01, 0x00, 0x00, 0x55, 0x55, 0x00, 0x00, 0x50, 0x00,
+ 0x50, 0x00, 0x05, 0x04, 0x01, 0x05, 0x50, 0x40, 0x54, 0x05, 0x04, 0x05,
+ 0x8a, 0x20, 0x20, 0x88, 0xa0, 0x28, 0x00, 0x00, 0x00, 0x00, 0xa0, 0x00,
+ 0x00, 0x00, 0xaa, 0xaa, 0x00, 0x00, 0x20, 0x00, 0x82, 0x82, 0x08, 0x8a,
+ 0x82, 0x08, 0x88, 0xa0, 0xa8, 0x0a, 0x22, 0x28, 0x00, 0x41, 0x00, 0x04,
+ 0x41, 0x44, 0x00, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0x55, 0x55,
+ 0x00, 0x00, 0x10, 0x00, 0x01, 0x41, 0x10, 0x44, 0x44, 0x10, 0x04, 0x41,
+ 0x50, 0x15, 0x11, 0x10, 0x80, 0x80, 0x00, 0x02, 0x82, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0xaa, 0xaa, 0x00, 0x00, 0x80, 0x00,
+ 0x02, 0x22, 0x20, 0x08, 0x20, 0x20, 0x02, 0x22, 0xa0, 0x2a, 0x22, 0x20,
+ 0x00, 0x41, 0x10, 0x01, 0x44, 0x00, 0x00, 0x40, 0x41, 0x51, 0x04, 0x14,
+ 0x15, 0x00, 0x11, 0x44, 0x50, 0x54, 0x40, 0x01, 0x05, 0x10, 0x00, 0x04,
+ 0x10, 0x40, 0x01, 0x44, 0x10, 0x15, 0x51, 0x00, 0xa8, 0x80, 0x00, 0xaa,
+ 0x82, 0x00, 0x00, 0x20, 0x22, 0x8a, 0xa2, 0x22, 0x22, 0x80, 0xa0, 0x88,
+ 0x88, 0x88, 0x88, 0x02, 0x2a, 0x20, 0x00, 0x08, 0xa0, 0x2a, 0xaa, 0x22,
+ 0x20, 0x8a, 0xa0, 0x02, 0x04, 0x01, 0x01, 0x01, 0x40, 0x00, 0x00, 0x40,
+ 0x10, 0x10, 0x41, 0x54, 0x11, 0x00, 0x11, 0x40, 0x54, 0x05, 0x04, 0x05,
+ 0x50, 0x11, 0x00, 0x04, 0x10, 0x00, 0x01, 0x40, 0x10, 0x45, 0x00, 0x15,
+ 0x82, 0x80, 0x08, 0x02, 0x80, 0x00, 0x00, 0x00, 0x22, 0x88, 0x02, 0x02,
+ 0x22, 0x00, 0x82, 0x08, 0x02, 0x08, 0x02, 0x0a, 0x80, 0x22, 0x00, 0x08,
+ 0x20, 0x00, 0x02, 0x20, 0x20, 0xa2, 0x00, 0x28, 0x01, 0x01, 0x05, 0x01,
+ 0x40, 0x00, 0x00, 0x40, 0x14, 0x51, 0x41, 0x44, 0x11, 0x40, 0x04, 0x11,
+ 0x04, 0x05, 0x01, 0x14, 0x00, 0x15, 0x00, 0x04, 0x10, 0x00, 0x01, 0x40,
+ 0x10, 0x51, 0x01, 0x50, 0x82, 0x00, 0x02, 0x02, 0x80, 0x00, 0x00, 0x80,
+ 0xa2, 0x88, 0x2a, 0x28, 0x22, 0x80, 0x02, 0x28, 0x8a, 0x88, 0x00, 0x28,
+ 0x00, 0x22, 0x00, 0x08, 0x20, 0x00, 0x02, 0x20, 0xa0, 0xa8, 0x02, 0x20,
+ 0x01, 0x05, 0x05, 0x04, 0x44, 0x00, 0x00, 0x00, 0x00, 0x40, 0x01, 0x00,
+ 0x00, 0x00, 0x40, 0x55, 0x15, 0x00, 0x00, 0x00, 0x01, 0x44, 0x00, 0x04,
+ 0x40, 0x40, 0x04, 0x44, 0x10, 0x51, 0x15, 0x40, 0x82, 0x00, 0x02, 0x08,
+ 0x82, 0x00, 0x00, 0x00, 0x00, 0xa0, 0x00, 0x00, 0x00, 0x00, 0x80, 0xaa,
+ 0x2a, 0x00, 0x00, 0x00, 0x02, 0x82, 0x08, 0x08, 0x80, 0x20, 0x08, 0x22,
+ 0xa0, 0xa0, 0x2a, 0x20, 0x14, 0x01, 0x00, 0x50, 0x50, 0x01, 0x00, 0x00,
+ 0x00, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x55, 0x55, 0x00, 0x00, 0x00,
+ 0x51, 0x00, 0x05, 0x15, 0x00, 0x05, 0x50, 0x50, 0x50, 0x40, 0x15, 0x05,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0xaa, 0xaa, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x20, 0x80, 0x2a, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x10, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x10, 0x40, 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x28, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x80, 0x2a, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50,
+ 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa0, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x02, 0x00, 0xaa, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x54, 0x01,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0xa8, 0x02, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40,
+ 0x00, 0x00, 0x50, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0xa0, 0x0a,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10,
+ 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x0a, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x04, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00,
+ 0x00, 0x40, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x50, 0x55, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00,
+ 0x00, 0xa0, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa0, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa0, 0xaa,
+ 0x15, 0x00, 0x00, 0x00, 0x00, 0x40, 0x01, 0x00, 0x00, 0x10, 0x04, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x05, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x55, 0x2a, 0x00, 0x00, 0x00,
+ 0x00, 0xa0, 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x08, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x80, 0xaa, 0x15, 0x00, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00,
+ 0x00, 0x10, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x55,
+ 0xa2, 0x00, 0x80, 0x02, 0x0a, 0xa2, 0x82, 0x02, 0x0a, 0x08, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x02, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x0a, 0xa8, 0xa0, 0x80, 0x82, 0xa0, 0x11, 0x01, 0x00, 0x04,
+ 0x11, 0x50, 0x41, 0x04, 0x11, 0x10, 0x00, 0x14, 0x44, 0x40, 0x00, 0x41,
+ 0x11, 0x00, 0x14, 0x00, 0x44, 0x05, 0x05, 0x04, 0x45, 0x00, 0x10, 0x44,
+ 0x11, 0x11, 0x04, 0x44, 0xa2, 0x02, 0x20, 0x80, 0x20, 0x28, 0x20, 0x08,
+ 0x02, 0x20, 0x80, 0x22, 0xa8, 0xa8, 0xa0, 0x82, 0x28, 0x00, 0x28, 0x80,
+ 0x22, 0x08, 0x82, 0x0a, 0x22, 0x80, 0x00, 0x82, 0x20, 0x00, 0x88, 0x8a,
+ 0x51, 0x05, 0x50, 0x00, 0x10, 0x11, 0x11, 0x10, 0x01, 0x50, 0x40, 0x10,
+ 0x54, 0x04, 0x11, 0x04, 0x41, 0x00, 0x50, 0x40, 0x10, 0x04, 0x44, 0x10,
+ 0x44, 0x40, 0x01, 0x01, 0x10, 0x10, 0x44, 0x14, 0xa2, 0x00, 0xa0, 0x00,
+ 0xa8, 0x02, 0xa0, 0x0a, 0x02, 0xa0, 0xa0, 0x00, 0x0a, 0x82, 0x08, 0x82,
+ 0x20, 0x00, 0xa0, 0x20, 0x20, 0x08, 0x22, 0x08, 0x02, 0x80, 0x02, 0x02,
+ 0x20, 0xa8, 0x8a, 0x82, 0x51, 0x01, 0x40, 0x01, 0x55, 0x01, 0x10, 0x00,
+ 0x01, 0x40, 0x41, 0x00, 0x04, 0x54, 0x50, 0x41, 0x40, 0x00, 0x40, 0x10,
+ 0x10, 0x04, 0x41, 0x05, 0x01, 0x00, 0x05, 0x01, 0x10, 0x10, 0x40, 0x50,
+ 0xa2, 0x08, 0x80, 0x82, 0xa0, 0x8a, 0x20, 0x00, 0x02, 0x80, 0x22, 0x00,
+ 0x02, 0x0a, 0x28, 0x80, 0x20, 0x00, 0x80, 0x20, 0x08, 0x88, 0xa0, 0x00,
+ 0x02, 0x00, 0x0a, 0x02, 0x20, 0x08, 0x80, 0xa0, 0x51, 0x01, 0x00, 0x44,
+ 0x50, 0x11, 0x10, 0x00, 0x01, 0x00, 0x11, 0x00, 0x01, 0x01, 0x04, 0x40,
+ 0x10, 0x00, 0x40, 0x11, 0x10, 0x10, 0x11, 0x00, 0x01, 0x00, 0x10, 0x01,
+ 0x10, 0x10, 0x40, 0x50, 0xa2, 0x08, 0x00, 0x88, 0x80, 0x08, 0x20, 0x00,
+ 0x02, 0x02, 0x22, 0x00, 0x02, 0x02, 0x08, 0x20, 0x20, 0x00, 0x80, 0x08,
+ 0x08, 0x88, 0x20, 0x80, 0x00, 0x00, 0x20, 0x02, 0x20, 0x28, 0x80, 0xa0,
+ 0x51, 0x11, 0x10, 0x44, 0x40, 0x50, 0x40, 0x10, 0x01, 0x00, 0x11, 0x00,
+ 0x01, 0x01, 0x04, 0x40, 0x10, 0x00, 0x01, 0x11, 0x04, 0x50, 0x10, 0x00,
+ 0x01, 0x40, 0x10, 0x04, 0x11, 0x50, 0x00, 0x01, 0xa2, 0x28, 0x20, 0x82,
+ 0x0a, 0x20, 0xa0, 0x0a, 0x02, 0x02, 0x22, 0x88, 0x00, 0x82, 0x08, 0x22,
+ 0x08, 0x80, 0x80, 0x28, 0x08, 0x28, 0x20, 0x88, 0x00, 0x80, 0x08, 0xaa,
+ 0x20, 0xa0, 0x82, 0xaa, 0x41, 0x50, 0x50, 0x01, 0x55, 0x00, 0x00, 0x05,
+ 0x05, 0x05, 0x51, 0x04, 0x01, 0x45, 0x14, 0x11, 0x50, 0x00, 0x41, 0x50,
+ 0x04, 0x10, 0x50, 0x44, 0x00, 0x40, 0x05, 0x50, 0x50, 0x40, 0x01, 0x14,
+ 0xaa, 0xaa, 0x00, 0x00, 0x2a, 0x00, 0x00, 0x00, 0x00, 0xa8, 0xa0, 0x82,
+ 0x00, 0x2a, 0xa8, 0x20, 0x28, 0x80, 0x2a, 0x20, 0x08, 0x08, 0xa0, 0x82,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x54, 0x55, 0x01, 0x00,
+ 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0xa8, 0xaa, 0x02, 0x80, 0x0a, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x54, 0x55, 0x01, 0x40, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa8, 0xaa, 0x02, 0xa0,
+ 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x50, 0x55, 0x05, 0x40, 0x01, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xa0, 0xaa, 0x0a, 0xa0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x55, 0x15, 0x50,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x80, 0xaa, 0x2a, 0x28, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa0, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x55, 0x55, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x04, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x40, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0xaa, 0x2a, 0x2a,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x20,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x55, 0x15, 0x15, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x04, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0xaa, 0x8a, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x54, 0x45, 0x45,
+ 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x80, 0x88, 0xa2, 0x22, 0x08, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x88, 0x00, 0x00, 0x80, 0xaa, 0x2a, 0x0a, 0x00, 0x0a, 0x08,
+ 0x02, 0x22, 0xa0, 0x80, 0x08, 0x00, 0xa0, 0x00, 0x20, 0xa0, 0xa0, 0xa0,
+ 0x41, 0x01, 0x51, 0x45, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x01,
+ 0x00, 0x00, 0x55, 0x55, 0x14, 0x00, 0x11, 0x14, 0x05, 0x45, 0x10, 0x41,
+ 0x11, 0x00, 0x40, 0x01, 0x14, 0x41, 0x40, 0x10, 0x82, 0x28, 0xa2, 0xaa,
+ 0x80, 0xa2, 0xa2, 0xa0, 0xa8, 0x00, 0x28, 0x28, 0x08, 0xa2, 0x02, 0xaa,
+ 0xa8, 0x80, 0x20, 0x88, 0x88, 0x0a, 0x08, 0x82, 0x20, 0x00, 0x80, 0x0a,
+ 0x00, 0x82, 0x00, 0x08, 0x04, 0x51, 0x51, 0x55, 0x45, 0x44, 0x11, 0x11,
+ 0x11, 0x01, 0x50, 0x44, 0x04, 0x11, 0x05, 0x55, 0x41, 0x41, 0x40, 0x10,
+ 0x40, 0x55, 0x04, 0x44, 0x40, 0x00, 0x00, 0x14, 0x00, 0x01, 0x01, 0x04,
+ 0x88, 0xa8, 0xa8, 0x2a, 0x2a, 0x20, 0x08, 0x0a, 0x0a, 0x02, 0xa0, 0x80,
+ 0x88, 0x08, 0xa2, 0xaa, 0x02, 0x22, 0x00, 0x08, 0xa0, 0x8a, 0x02, 0x88,
+ 0x20, 0x00, 0x00, 0x20, 0x00, 0x82, 0x20, 0x02, 0x05, 0x55, 0x54, 0x55,
+ 0x44, 0x40, 0x50, 0x51, 0x11, 0x01, 0x04, 0x51, 0x10, 0x51, 0x41, 0x55,
+ 0x05, 0x44, 0x00, 0x10, 0x00, 0x50, 0x54, 0x45, 0x40, 0x00, 0x00, 0x40,
+ 0x50, 0x01, 0x01, 0x54, 0x80, 0x2a, 0xaa, 0x0a, 0x28, 0x28, 0x08, 0x08,
+ 0x08, 0x02, 0x88, 0x88, 0x80, 0x08, 0xa8, 0xaa, 0x0a, 0x28, 0x00, 0x08,
+ 0xa0, 0x02, 0x02, 0x80, 0x20, 0x00, 0x00, 0x80, 0x08, 0x02, 0x02, 0x02,
+ 0x00, 0x15, 0x55, 0x15, 0x44, 0x44, 0x10, 0x11, 0x11, 0x01, 0x04, 0x45,
+ 0x50, 0x10, 0x51, 0x55, 0x15, 0x44, 0x00, 0x10, 0x00, 0x01, 0x04, 0x40,
+ 0x40, 0x00, 0x00, 0x40, 0x04, 0x01, 0x11, 0x04, 0x80, 0x0a, 0xaa, 0x2a,
+ 0x82, 0x22, 0xa0, 0xa0, 0x08, 0x02, 0xa8, 0xa8, 0x20, 0xa0, 0xa8, 0xaa,
+ 0x0a, 0x28, 0x00, 0x08, 0x80, 0x00, 0x02, 0x80, 0x20, 0x00, 0x00, 0x80,
+ 0x02, 0x02, 0x0a, 0x02, 0x00, 0x04, 0x54, 0x55, 0x01, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x55, 0x15, 0x44, 0x00, 0x10,
+ 0x10, 0x00, 0x04, 0x40, 0x40, 0x00, 0x00, 0x40, 0x04, 0x01, 0x04, 0x04,
+ 0x08, 0x02, 0xa8, 0xaa, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x80, 0xaa, 0x28, 0x82, 0x00, 0x08, 0xa8, 0x80, 0x08, 0x88,
+ 0x20, 0x00, 0x20, 0x20, 0x02, 0x0a, 0x0a, 0x08, 0x44, 0x00, 0x50, 0x55,
+ 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x55,
+ 0x51, 0x01, 0x11, 0x10, 0x54, 0x41, 0x10, 0x44, 0x40, 0x00, 0x40, 0x10,
+ 0x04, 0x01, 0x04, 0x10, 0x00, 0x00, 0xa0, 0xaa, 0x0a, 0x00, 0x00, 0x00,
+ 0x00, 0xa0, 0x00, 0x08, 0x00, 0x00, 0x00, 0xaa, 0x08, 0x00, 0x0a, 0x2a,
+ 0x2a, 0x0a, 0xa0, 0xa0, 0xa0, 0x00, 0x20, 0x0a, 0x28, 0x02, 0x00, 0xa0,
+ 0x50, 0x01, 0x50, 0x55, 0x05, 0x00, 0x00, 0x00, 0x00, 0x40, 0x01, 0x00,
+ 0x00, 0x00, 0x00, 0x54, 0x55, 0x01, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
diff --git a/xorg-server/hw/xquartz/bundle/.gitignore b/xorg-server/hw/xquartz/bundle/.gitignore
index fbdbd09cd..4e432c232 100644
--- a/xorg-server/hw/xquartz/bundle/.gitignore
+++ b/xorg-server/hw/xquartz/bundle/.gitignore
@@ -1 +1 @@
-Info.plist
+Info.plist
diff --git a/xorg-server/hw/xquartz/bundle/X11.sh b/xorg-server/hw/xquartz/bundle/X11.sh
index 48c0553d1..3b8b6799c 100644
--- a/xorg-server/hw/xquartz/bundle/X11.sh
+++ b/xorg-server/hw/xquartz/bundle/X11.sh
@@ -1,15 +1,15 @@
-#!/bin/bash
-
-set "$(dirname "$0")"/X11.bin "${@}"
-
-if [ -x ~/.x11run ]; then
- exec ~/.x11run "${@}"
-fi
-
-case $(basename "${SHELL}") in
- bash) exec -l "${SHELL}" --login -c 'exec "${@}"' - "${@}" ;;
- ksh|sh|zsh) exec -l "${SHELL}" -c 'exec "${@}"' - "${@}" ;;
- csh|tcsh) exec -l "${SHELL}" -c 'exec $argv:q' "${@}" ;;
- es|rc) exec -l "${SHELL}" -l -c 'exec $*' "${@}" ;;
- *) exec "${@}" ;;
-esac
+#!/bin/bash
+
+set "$(dirname "$0")"/X11.bin "${@}"
+
+if [ -x ~/.x11run ]; then
+ exec ~/.x11run "${@}"
+fi
+
+case $(basename "${SHELL}") in
+ bash) exec -l "${SHELL}" --login -c 'exec "${@}"' - "${@}" ;;
+ ksh|sh|zsh) exec -l "${SHELL}" -c 'exec "${@}"' - "${@}" ;;
+ csh|tcsh) exec -l "${SHELL}" -c 'exec $argv:q' "${@}" ;;
+ es|rc) exec -l "${SHELL}" -l -c 'exec $*' "${@}" ;;
+ *) exec "${@}" ;;
+esac
diff --git a/xorg-server/hw/xquartz/bundle/Xquartz.plist b/xorg-server/hw/xquartz/bundle/Xquartz.plist
index 3ee787807..e15704516 100644
--- a/xorg-server/hw/xquartz/bundle/Xquartz.plist
+++ b/xorg-server/hw/xquartz/bundle/Xquartz.plist
@@ -1,27 +1,27 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
-
-<!-- This file contains system-wide defaults for the Apple X11 server -->
-
-<plist version="1.0">
-<dict>
- <key>apps_menu</key>
- <array>
- <array>
- <string>Terminal</string>
- <string>xterm</string>
- <string>n</string>
- </array>
- <array>
- <string>xman</string>
- <string>xman</string>
- <string></string>
- </array>
- <array>
- <string>xlogo</string>
- <string>xlogo</string>
- <string></string>
- </array>
- </array>
-</dict>
-</plist>
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+
+<!-- This file contains system-wide defaults for the Apple X11 server -->
+
+<plist version="1.0">
+<dict>
+ <key>apps_menu</key>
+ <array>
+ <array>
+ <string>Terminal</string>
+ <string>xterm</string>
+ <string>n</string>
+ </array>
+ <array>
+ <string>xman</string>
+ <string>xman</string>
+ <string></string>
+ </array>
+ <array>
+ <string>xlogo</string>
+ <string>xlogo</string>
+ <string></string>
+ </array>
+ </array>
+</dict>
+</plist>
diff --git a/xorg-server/hw/xquartz/mach-startup/.gitignore b/xorg-server/hw/xquartz/mach-startup/.gitignore
index 0bda6e75c..374abbfbe 100644
--- a/xorg-server/hw/xquartz/mach-startup/.gitignore
+++ b/xorg-server/hw/xquartz/mach-startup/.gitignore
@@ -1,8 +1,8 @@
-# Add & Override for this directory and it's subdirectories
-mach_startup.h
-mach_startupServer.c
-mach_startupServer.h
-mach_startupUser.c
-X11.bin
-Xquartz
-
+# Add & Override for this directory and it's subdirectories
+mach_startup.h
+mach_startupServer.c
+mach_startupServer.h
+mach_startupUser.c
+X11.bin
+Xquartz
+
diff --git a/xorg-server/hw/xquartz/mach-startup/mach_startup.defs b/xorg-server/hw/xquartz/mach-startup/mach_startup.defs
index 7b575bf54..e47f49c3c 100644
--- a/xorg-server/hw/xquartz/mach-startup/mach_startup.defs
+++ b/xorg-server/hw/xquartz/mach-startup/mach_startup.defs
@@ -1,50 +1,50 @@
-/* Copyright (c) 2008 Apple Inc.
- *
- * Permission is hereby granted, free of charge, to any person
- * obtaining a copy of this software and associated documentation files
- * (the "Software"), to deal in the Software without restriction,
- * including without limitation the rights to use, copy, modify, merge,
- * publish, distribute, sublicense, and/or sell copies of the Software,
- * and to permit persons to whom the Software is furnished to do so,
- * subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be
- * included in all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- * NONINFRINGEMENT. IN NO EVENT SHALL THE ABOVE LISTED COPYRIGHT
- * HOLDER(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
- * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
- * DEALINGS IN THE SOFTWARE.
- *
- * Except as contained in this notice, the name(s) of the above
- * copyright holders shall not be used in advertising or otherwise to
- * promote the sale, use or other dealings in this Software without
- * prior written authorization.
- */
-
-#include <mach/std_types.defs>
-#include <mach/mach_types.defs>
-import "mach_startup_types.h";
-
-subsystem mach_startup 1000;
-serverprefix do_;
-
-type string_t = c_string[1024];
-type string_array_t = array[] of string_t;
-
-routine start_x11_server(
- port : mach_port_t;
- argv : string_array_t;
- envp : string_array_t);
-
-routine request_fd_handoff_socket (
- port : mach_port_t;
- out socket_filename : string_t);
-
-routine request_pid (
- port : mach_port_t;
- out pid : int);
+/* Copyright (c) 2008 Apple Inc.
+ *
+ * Permission is hereby granted, free of charge, to any person
+ * obtaining a copy of this software and associated documentation files
+ * (the "Software"), to deal in the Software without restriction,
+ * including without limitation the rights to use, copy, modify, merge,
+ * publish, distribute, sublicense, and/or sell copies of the Software,
+ * and to permit persons to whom the Software is furnished to do so,
+ * subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be
+ * included in all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ * NONINFRINGEMENT. IN NO EVENT SHALL THE ABOVE LISTED COPYRIGHT
+ * HOLDER(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+ * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+ * DEALINGS IN THE SOFTWARE.
+ *
+ * Except as contained in this notice, the name(s) of the above
+ * copyright holders shall not be used in advertising or otherwise to
+ * promote the sale, use or other dealings in this Software without
+ * prior written authorization.
+ */
+
+#include <mach/std_types.defs>
+#include <mach/mach_types.defs>
+import "mach_startup_types.h";
+
+subsystem mach_startup 1000;
+serverprefix do_;
+
+type string_t = c_string[1024];
+type string_array_t = array[] of string_t;
+
+routine start_x11_server(
+ port : mach_port_t;
+ argv : string_array_t;
+ envp : string_array_t);
+
+routine request_fd_handoff_socket (
+ port : mach_port_t;
+ out socket_filename : string_t);
+
+routine request_pid (
+ port : mach_port_t;
+ out pid : int);
diff --git a/xorg-server/hw/xquartz/pbproxy/.gitignore b/xorg-server/hw/xquartz/pbproxy/.gitignore
index d6e6710f2..6684920ff 100644
--- a/xorg-server/hw/xquartz/pbproxy/.gitignore
+++ b/xorg-server/hw/xquartz/pbproxy/.gitignore
@@ -1 +1 @@
-xpbproxy
+xpbproxy
diff --git a/xorg-server/hw/xquartz/xpr/Makefile.am b/xorg-server/hw/xquartz/xpr/Makefile.am
index 685052702..763a7cd5c 100644
--- a/xorg-server/hw/xquartz/xpr/Makefile.am
+++ b/xorg-server/hw/xquartz/xpr/Makefile.am
@@ -1,32 +1,32 @@
-noinst_LTLIBRARIES = libXquartzXpr.la
-
-AM_CFLAGS = $(DIX_CFLAGS)
-AM_CPPFLAGS = \
- -I$(srcdir) -I$(srcdir)/.. \
- -I$(top_srcdir)/miext \
- -I$(top_srcdir)/miext/rootless
-
-libXquartzXpr_la_SOURCES = \
- appledri.c \
- dri.c \
- driWrap.c \
- xprAppleWM.c \
- xprCursor.c \
- xprEvent.c \
- xprFrame.c \
- xprScreen.c \
- x-hash.c \
- x-hook.c \
- x-list.c
-
-EXTRA_DIST = \
- dri.h \
- driWrap.h \
- dristruct.h \
- appledri.h \
- appledristr.h \
- x-hash.h \
- x-hook.h \
- x-list.h \
- xpr.h \
- xprEvent.h
+noinst_LTLIBRARIES = libXquartzXpr.la
+
+AM_CFLAGS = $(DIX_CFLAGS)
+AM_CPPFLAGS = \
+ -I$(srcdir) -I$(srcdir)/.. \
+ -I$(top_srcdir)/miext \
+ -I$(top_srcdir)/miext/rootless
+
+libXquartzXpr_la_SOURCES = \
+ appledri.c \
+ dri.c \
+ driWrap.c \
+ xprAppleWM.c \
+ xprCursor.c \
+ xprEvent.c \
+ xprFrame.c \
+ xprScreen.c \
+ x-hash.c \
+ x-hook.c \
+ x-list.c
+
+EXTRA_DIST = \
+ dri.h \
+ driWrap.h \
+ dristruct.h \
+ appledri.h \
+ appledristr.h \
+ x-hash.h \
+ x-hook.h \
+ x-list.h \
+ xpr.h \
+ xprEvent.h
diff --git a/xorg-server/hw/xwin/glx/winpriv.h b/xorg-server/hw/xwin/glx/winpriv.h
index 8cac86caf..710525ccc 100644
--- a/xorg-server/hw/xwin/glx/winpriv.h
+++ b/xorg-server/hw/xwin/glx/winpriv.h
@@ -1,13 +1,13 @@
-/*
- * Export window information for the Windows-OpenGL GLX implementation.
- *
- * Authors: Alexander Gottwald
- */
-
-#include <X11/Xwindows.h>
-#include <windowstr.h>
-
-#define WIN_GL_WINDOW_CLASS "XWinGLTest"
-
-HWND winGetWindowInfo(WindowPtr pWin);
-Bool winCheckScreenAiglxIsSupported(ScreenPtr pScreen);
+/*
+ * Export window information for the Windows-OpenGL GLX implementation.
+ *
+ * Authors: Alexander Gottwald
+ */
+
+#include <X11/Xwindows.h>
+#include <windowstr.h>
+
+#define WIN_GL_WINDOW_CLASS "XWinGLTest"
+
+HWND winGetWindowInfo(WindowPtr pWin);
+Bool winCheckScreenAiglxIsSupported(ScreenPtr pScreen);
diff --git a/xorg-server/hw/xwin/system.XWinrc b/xorg-server/hw/xwin/system.XWinrc
index 267809145..f0771c610 100644
--- a/xorg-server/hw/xwin/system.XWinrc
+++ b/xorg-server/hw/xwin/system.XWinrc
@@ -1,128 +1,128 @@
-# XWin Server Resource File - EXAMPLE
-# Earle F. Philhower, III
-
-# Place in ~/.XWinrc or in /etc/X11/system.XWinrc
-
-# Keywords are case insensitive, comments legal pretty much anywhere
-# you can have an end-of-line
-
-# Comments begin with "#" or "//" and go to the end-of-line
-
-# Paths to commands are **cygwin** based (i.e. /usr/local/bin/xcalc)
-
-# Paths to icons are **WINDOWS** based (i.e. c:\windows\icons)
-
-# Menus are defined as...
-# MENU <name> {
-# <Menu Text> EXEC <command>
-# ^^ This command will have any "%display%"
-# string replaced with the proper display
-# variable (i.e. 127.0.0.1:<display>.0)
-# (This should only rarely be needed as
-# the DISPLAY environment variable is also
-# set correctly)
-# or <Menu Text> MENU <name-of-some-prior-defined-menu>
-# or <Menu Text> ALWAYSONTOP
-# ^^ Sets the window to display above all others
-# or <Menu Text> RELOAD
-# ^^ Causes ~/.XWinrc or the system.XWinrc file
-# to be reloaded and icons and menus regenerated
-# or SEPARATOR
-# ...
-# }
-
-# Set the taskmar menu with
-# ROOTMENU <name-of-some-prior-defined-menu>
-
-# If you want a menu to be applied to all popup window's system menu
-# DEFAULTSYSMENU <name-of-some-prior-defined-menu> <atstart|atend>
-
-# To choose a specific menu for a specific WM_CLASS or WM_NAME use ...
-# SYSMENU {
-# <class-or-name-of-window> <name-of-prior-defined-menu> <atstart|atend>
-# ...
-# }
-
-# When specifying an ICONFILE in the following commands several different
-# formats are allowed:
-# 1. Name of a regular Windows .ico format file
-# (ex: "cygwin.ico", "apple.ico")
-# 2. Name and index into a Windows .DLL
-# (ex: "c:\windows\system32\shell32.dll,4" gives the default folder icon
-# "c:\windows\system32\shell32.dll,5" gives the floppy drive icon)
-# 3. Index into XWin.EXE internal ICON resource
-# (ex: ",101" is the 1st icon inside XWin.exe)
-
-# To define where ICO files live (** Windows path**)
-# ICONDIRECTORY <windows-path i.e. c:\cygwin\usr\icons>
-# NOTE: If you specify a fully qualified path to an ICON below
-# (i.e. "c:\xxx" or "d:\xxxx")
-# this ICONDIRECTORY will not be prepended
-
-# To change the taskbar icon use...
-# TRAYICON <name-of-windows-ico-file-in-icondirectory>
-
-# To define a replacement for the standard X icon for apps w/o specified icons
-# DEFAULTICON <name-of-windows-ico-file-in-icondirectory>
-
-# To define substitute icons on a per-window basis use...
-# ICONS {
-# <class-or-name-of-window> <icon-file-name.ico>
-# ...
-# }
-# In the case where multiple matches occur, the first listed in the ICONS
-# section will be chosen.
-
-# To disable exit confirmation dialog add the line containing SilentExit
-
-# DEBUG <string> prints out the string to the XWin.log file
-
-// Below are just some silly menus to demonstrate writing your
-// own configuration file.
-
-// Make some menus...
-menu apps {
- xterm exec "xterm"
- "Emacs" exec "emacs"
- notepad exec notepad
- xload exec "xload -display %display%" # Comment
-}
-
-menu root {
-// Comments fit here, too...
- "Reload .XWinrc" RELOAD
- "Applications" menu apps
- SEParATOR
-}
-
-menu aot {
- Separator
- "Always on Top" alwaysontop
-}
-
-menu xtermspecial {
- "Emacs" exec "emacs"
- "Always on Top" alwaysontop
- SepArAtor
-}
-
-RootMenu root
-
-DefaultSysMenu aot atend
-
-SysMenu {
- "xterm" xtermspecial atstart
-}
-
-# IconDirectory "c:\winnt\"
-
-# DefaultIcon "reinstall.ico"
-
-# Icons {
-# "xterm" "uninstall.ico"
-# }
-
-SilentExit
-
-DEBUG "Done parsing the configuration file..."
-
+# XWin Server Resource File - EXAMPLE
+# Earle F. Philhower, III
+
+# Place in ~/.XWinrc or in /etc/X11/system.XWinrc
+
+# Keywords are case insensitive, comments legal pretty much anywhere
+# you can have an end-of-line
+
+# Comments begin with "#" or "//" and go to the end-of-line
+
+# Paths to commands are **cygwin** based (i.e. /usr/local/bin/xcalc)
+
+# Paths to icons are **WINDOWS** based (i.e. c:\windows\icons)
+
+# Menus are defined as...
+# MENU <name> {
+# <Menu Text> EXEC <command>
+# ^^ This command will have any "%display%"
+# string replaced with the proper display
+# variable (i.e. 127.0.0.1:<display>.0)
+# (This should only rarely be needed as
+# the DISPLAY environment variable is also
+# set correctly)
+# or <Menu Text> MENU <name-of-some-prior-defined-menu>
+# or <Menu Text> ALWAYSONTOP
+# ^^ Sets the window to display above all others
+# or <Menu Text> RELOAD
+# ^^ Causes ~/.XWinrc or the system.XWinrc file
+# to be reloaded and icons and menus regenerated
+# or SEPARATOR
+# ...
+# }
+
+# Set the taskmar menu with
+# ROOTMENU <name-of-some-prior-defined-menu>
+
+# If you want a menu to be applied to all popup window's system menu
+# DEFAULTSYSMENU <name-of-some-prior-defined-menu> <atstart|atend>
+
+# To choose a specific menu for a specific WM_CLASS or WM_NAME use ...
+# SYSMENU {
+# <class-or-name-of-window> <name-of-prior-defined-menu> <atstart|atend>
+# ...
+# }
+
+# When specifying an ICONFILE in the following commands several different
+# formats are allowed:
+# 1. Name of a regular Windows .ico format file
+# (ex: "cygwin.ico", "apple.ico")
+# 2. Name and index into a Windows .DLL
+# (ex: "c:\windows\system32\shell32.dll,4" gives the default folder icon
+# "c:\windows\system32\shell32.dll,5" gives the floppy drive icon)
+# 3. Index into XWin.EXE internal ICON resource
+# (ex: ",101" is the 1st icon inside XWin.exe)
+
+# To define where ICO files live (** Windows path**)
+# ICONDIRECTORY <windows-path i.e. c:\cygwin\usr\icons>
+# NOTE: If you specify a fully qualified path to an ICON below
+# (i.e. "c:\xxx" or "d:\xxxx")
+# this ICONDIRECTORY will not be prepended
+
+# To change the taskbar icon use...
+# TRAYICON <name-of-windows-ico-file-in-icondirectory>
+
+# To define a replacement for the standard X icon for apps w/o specified icons
+# DEFAULTICON <name-of-windows-ico-file-in-icondirectory>
+
+# To define substitute icons on a per-window basis use...
+# ICONS {
+# <class-or-name-of-window> <icon-file-name.ico>
+# ...
+# }
+# In the case where multiple matches occur, the first listed in the ICONS
+# section will be chosen.
+
+# To disable exit confirmation dialog add the line containing SilentExit
+
+# DEBUG <string> prints out the string to the XWin.log file
+
+// Below are just some silly menus to demonstrate writing your
+// own configuration file.
+
+// Make some menus...
+menu apps {
+ xterm exec "xterm"
+ "Emacs" exec "emacs"
+ notepad exec notepad
+ xload exec "xload -display %display%" # Comment
+}
+
+menu root {
+// Comments fit here, too...
+ "Reload .XWinrc" RELOAD
+ "Applications" menu apps
+ SEParATOR
+}
+
+menu aot {
+ Separator
+ "Always on Top" alwaysontop
+}
+
+menu xtermspecial {
+ "Emacs" exec "emacs"
+ "Always on Top" alwaysontop
+ SepArAtor
+}
+
+RootMenu root
+
+DefaultSysMenu aot atend
+
+SysMenu {
+ "xterm" xtermspecial atstart
+}
+
+# IconDirectory "c:\winnt\"
+
+# DefaultIcon "reinstall.ico"
+
+# Icons {
+# "xterm" "uninstall.ico"
+# }
+
+SilentExit
+
+DEBUG "Done parsing the configuration file..."
+
diff --git a/xorg-server/include/.gitignore b/xorg-server/include/.gitignore
index 8fffad782..dc9067ab3 100644
--- a/xorg-server/include/.gitignore
+++ b/xorg-server/include/.gitignore
@@ -1,5 +1,5 @@
-# Add & Override for this directory and it's subdirectories
-*-config.h
-do-not-use-config.h.in
-xorg-server.h
-
+# Add & Override for this directory and it's subdirectories
+*-config.h
+do-not-use-config.h.in
+xorg-server.h
+
diff --git a/xorg-server/include/dix-config-apple-verbatim.h b/xorg-server/include/dix-config-apple-verbatim.h
index 720897c80..f429d200e 100644
--- a/xorg-server/include/dix-config-apple-verbatim.h
+++ b/xorg-server/include/dix-config-apple-verbatim.h
@@ -1,8 +1,8 @@
-/* Do not include this file directly. It is included at the end of <dix-config.h> */
-
-/* Correctly set _XSERVER64 for OSX fat binaries */
-#if defined(__LP64__) && !defined(_XSERVER64)
-#define _XSERVER64 1
-#elif !defined(__LP64__) && defined(_XSERVER64)
-#undef _XSERVER64
-#endif
+/* Do not include this file directly. It is included at the end of <dix-config.h> */
+
+/* Correctly set _XSERVER64 for OSX fat binaries */
+#if defined(__LP64__) && !defined(_XSERVER64)
+#define _XSERVER64 1
+#elif !defined(__LP64__) && defined(_XSERVER64)
+#undef _XSERVER64
+#endif
diff --git a/xorg-server/include/kdrive-config.h.in b/xorg-server/include/kdrive-config.h.in
index 887213d78..0e54aa18f 100644
--- a/xorg-server/include/kdrive-config.h.in
+++ b/xorg-server/include/kdrive-config.h.in
@@ -1,40 +1,40 @@
-/* kdrive-config.h.in: not at all generated. -*- c -*-
- */
-
-#ifndef _KDRIVE_CONFIG_H_
-#define _KDRIVE_CONFIG_H_
-
-#include <dix-config.h>
-#include <xkb-config.h>
-
-/* Building kdrive server. */
-#undef KDRIVESERVER
-
-/* Include framebuffer support in X servers */
-#undef KDRIVEFBDEV
-
-/* Enable touchscreen support */
-#undef TOUCHSCREEN
-
-/* Support tslib touchscreen abstraction library */
-#undef TSLIB
-
-/* Support KDrive kbd driver */
-#undef KDRIVE_KBD
-
-/* Support KDrive mouse driver */
-#undef KDRIVE_MOUSE
-
-/* Support KDrive evdev driver */
-#undef KDRIVE_EVDEV
-
-/* Verbose debugging output hilarity */
-#undef DEBUG
-
-/* Have the backtrace() function. */
-#undef HAVE_BACKTRACE
-
-/* Have execinfo.h for backtrace(). */
-#undef HAVE_EXECINFO_H
-
-#endif /* _KDRIVE_CONFIG_H_ */
+/* kdrive-config.h.in: not at all generated. -*- c -*-
+ */
+
+#ifndef _KDRIVE_CONFIG_H_
+#define _KDRIVE_CONFIG_H_
+
+#include <dix-config.h>
+#include <xkb-config.h>
+
+/* Building kdrive server. */
+#undef KDRIVESERVER
+
+/* Include framebuffer support in X servers */
+#undef KDRIVEFBDEV
+
+/* Enable touchscreen support */
+#undef TOUCHSCREEN
+
+/* Support tslib touchscreen abstraction library */
+#undef TSLIB
+
+/* Support KDrive kbd driver */
+#undef KDRIVE_KBD
+
+/* Support KDrive mouse driver */
+#undef KDRIVE_MOUSE
+
+/* Support KDrive evdev driver */
+#undef KDRIVE_EVDEV
+
+/* Verbose debugging output hilarity */
+#undef DEBUG
+
+/* Have the backtrace() function. */
+#undef HAVE_BACKTRACE
+
+/* Have execinfo.h for backtrace(). */
+#undef HAVE_EXECINFO_H
+
+#endif /* _KDRIVE_CONFIG_H_ */
diff --git a/xorg-server/include/version-config.h.in b/xorg-server/include/version-config.h.in
index 4fb614dae..8180dff8e 100644
--- a/xorg-server/include/version-config.h.in
+++ b/xorg-server/include/version-config.h.in
@@ -1,16 +1,16 @@
-/* version-config.h.in: not generated */
-
-#ifndef VERSION_CONFIG_H
-#define VERSION_CONFIG_H
-
-/* Vendor man version */
-#undef VENDOR_MAN_VERSION
-
-/* Vendor name */
-#undef VENDOR_NAME
-
-/* Vendor release */
-#undef VENDOR_RELEASE
-
-#endif /* VERSION_CONFIG_H */
-
+/* version-config.h.in: not generated */
+
+#ifndef VERSION_CONFIG_H
+#define VERSION_CONFIG_H
+
+/* Vendor man version */
+#undef VENDOR_MAN_VERSION
+
+/* Vendor name */
+#undef VENDOR_NAME
+
+/* Vendor release */
+#undef VENDOR_RELEASE
+
+#endif /* VERSION_CONFIG_H */
+
diff --git a/xorg-server/include/xsha1.h b/xorg-server/include/xsha1.h
index 89e6f5f0b..aab71067a 100644
--- a/xorg-server/include/xsha1.h
+++ b/xorg-server/include/xsha1.h
@@ -1,19 +1,19 @@
-#ifndef XSHA1_H
-#define XSHA1_H
-
-/* Initialize SHA1 computation. Returns NULL on error. */
-void *x_sha1_init(void);
-
-/*
- * Add some data to be hashed. ctx is the value returned by x_sha1_init()
- * Returns 0 on error, 1 on success.
- */
-int x_sha1_update(void *ctx, void *data, int size);
-
-/*
- * Place the hash in result, and free ctx.
- * Returns 0 on error, 1 on success.
- */
-int x_sha1_final(void *ctx, unsigned char result[20]);
-
-#endif
+#ifndef XSHA1_H
+#define XSHA1_H
+
+/* Initialize SHA1 computation. Returns NULL on error. */
+void *x_sha1_init(void);
+
+/*
+ * Add some data to be hashed. ctx is the value returned by x_sha1_init()
+ * Returns 0 on error, 1 on success.
+ */
+int x_sha1_update(void *ctx, void *data, int size);
+
+/*
+ * Place the hash in result, and free ctx.
+ * Returns 0 on error, 1 on success.
+ */
+int x_sha1_final(void *ctx, unsigned char result[20]);
+
+#endif
diff --git a/xorg-server/m4/ac_define_dir.m4 b/xorg-server/m4/ac_define_dir.m4
index ef23b78f7..db42d3eb0 100644
--- a/xorg-server/m4/ac_define_dir.m4
+++ b/xorg-server/m4/ac_define_dir.m4
@@ -1,49 +1,49 @@
-# ===========================================================================
-# http://autoconf-archive.cryp.to/ac_define_dir.html
-# ===========================================================================
-#
-# SYNOPSIS
-#
-# AC_DEFINE_DIR(VARNAME, DIR [, DESCRIPTION])
-#
-# DESCRIPTION
-#
-# This macro sets VARNAME to the expansion of the DIR variable, taking
-# care of fixing up ${prefix} and such.
-#
-# VARNAME is then offered as both an output variable and a C preprocessor
-# symbol.
-#
-# Example:
-#
-# AC_DEFINE_DIR([DATADIR], [datadir], [Where data are placed to.])
-#
-# LAST MODIFICATION
-#
-# 2008-04-12
-#
-# COPYLEFT
-#
-# Copyright (c) 2008 Stepan Kasal <kasal@ucw.cz>
-# Copyright (c) 2008 Andreas Schwab <schwab@suse.de>
-# Copyright (c) 2008 Guido U. Draheim <guidod@gmx.de>
-# Copyright (c) 2008 Alexandre Oliva
-#
-# Copying and distribution of this file, with or without modification, are
-# permitted in any medium without royalty provided the copyright notice
-# and this notice are preserved.
-
-AC_DEFUN([AC_DEFINE_DIR], [
- prefix_NONE=
- exec_prefix_NONE=
- test "x$prefix" = xNONE && prefix_NONE=yes && prefix=$ac_default_prefix
- test "x$exec_prefix" = xNONE && exec_prefix_NONE=yes && exec_prefix=$prefix
-dnl In Autoconf 2.60, ${datadir} refers to ${datarootdir}, which in turn
-dnl refers to ${prefix}. Thus we have to use `eval' twice.
- eval ac_define_dir="\"[$]$2\""
- eval ac_define_dir="\"$ac_define_dir\""
- AC_SUBST($1, "$ac_define_dir")
- AC_DEFINE_UNQUOTED($1, "$ac_define_dir", [$3])
- test "$prefix_NONE" && prefix=NONE
- test "$exec_prefix_NONE" && exec_prefix=NONE
-])
+# ===========================================================================
+# http://autoconf-archive.cryp.to/ac_define_dir.html
+# ===========================================================================
+#
+# SYNOPSIS
+#
+# AC_DEFINE_DIR(VARNAME, DIR [, DESCRIPTION])
+#
+# DESCRIPTION
+#
+# This macro sets VARNAME to the expansion of the DIR variable, taking
+# care of fixing up ${prefix} and such.
+#
+# VARNAME is then offered as both an output variable and a C preprocessor
+# symbol.
+#
+# Example:
+#
+# AC_DEFINE_DIR([DATADIR], [datadir], [Where data are placed to.])
+#
+# LAST MODIFICATION
+#
+# 2008-04-12
+#
+# COPYLEFT
+#
+# Copyright (c) 2008 Stepan Kasal <kasal@ucw.cz>
+# Copyright (c) 2008 Andreas Schwab <schwab@suse.de>
+# Copyright (c) 2008 Guido U. Draheim <guidod@gmx.de>
+# Copyright (c) 2008 Alexandre Oliva
+#
+# Copying and distribution of this file, with or without modification, are
+# permitted in any medium without royalty provided the copyright notice
+# and this notice are preserved.
+
+AC_DEFUN([AC_DEFINE_DIR], [
+ prefix_NONE=
+ exec_prefix_NONE=
+ test "x$prefix" = xNONE && prefix_NONE=yes && prefix=$ac_default_prefix
+ test "x$exec_prefix" = xNONE && exec_prefix_NONE=yes && exec_prefix=$prefix
+dnl In Autoconf 2.60, ${datadir} refers to ${datarootdir}, which in turn
+dnl refers to ${prefix}. Thus we have to use `eval' twice.
+ eval ac_define_dir="\"[$]$2\""
+ eval ac_define_dir="\"$ac_define_dir\""
+ AC_SUBST($1, "$ac_define_dir")
+ AC_DEFINE_UNQUOTED($1, "$ac_define_dir", [$3])
+ test "$prefix_NONE" && prefix=NONE
+ test "$exec_prefix_NONE" && exec_prefix=NONE
+])
diff --git a/xorg-server/miext/rootless/README.txt b/xorg-server/miext/rootless/README.txt
index 1beabda38..754715d33 100644
--- a/xorg-server/miext/rootless/README.txt
+++ b/xorg-server/miext/rootless/README.txt
@@ -1,334 +1,334 @@
- Generic Rootless Layer
- Version 1.0
- July 13, 2004
-
- Torrey T. Lyons
- torrey@xfree86.org
-
-
-Introduction
-
- The generic rootless layer allows an X server to be implemented
-on top of another window server in a cooperative manner. This allows the
-X11 windows and native windows of the underlying window server to
-coexist on the same screen. The layer is called "rootless" because the root
-window of the X server is generally not drawn. Instead, each top-level
-child of the root window is represented as a separate on-screen window by
-the underlying window server. The layer is referred to as "generic"
-because it abstracts away the details of the underlying window system and
-contains code that is useful for any rootless X server. The code for the
-generic rootless layer is located in xc/programs/Xserver/miext/rootless. To
-build a complete rootless X server requires a specific rootless
-implementation, which provides functions that allow the generic rootless
-layer to interact with the underlying window system.
-
-
-Concepts
-
- In the context of a rootless X server the term window is used to
-mean many fundamentally different things. For X11 a window is a DDX
-resource that describes a visible, or potentially visible, rectangle on the
-screen. A top-level window is a direct child of the root window. To avoid
-confusion, an on-screen native window of the underlying window system
-is referred to as a "frame". The generic rootless layer associates each
-mapped top-level X11 window with a frame. An X11 window may be said
-to be "framed" if it or its top-level parent is represented by a frame.
-
- The generic rootless layer models each frame as being backed at
-all times by a backing buffer, which is periodically flushed to the screen.
-If the underlying window system does not provide a backing buffer for
-frames, this must be done by the rootless implementation. The generic
-rootless layer model does not assume it always has access to the frames'
-backing buffers. Any drawing to the buffer will be proceeded by a call to
-the rootless implementation's StartDrawing() function and StopDrawing()
-will be called when the drawing is concluded. The address of the frame's
-backing buffer is returned by the StartDrawing() function and it can
-change between successive calls.
-
- Because each frame is assumed to have a backing buffer, the
-generic rootless layer will stop Expose events being generated when the
-regions of visibility of a frame change on screen. This is similar to backing
-store, but backing buffers are different in that they always store a copy of
-the entire window contents, not just the obscured portions. The price paid
-in increased memory consumption is made up by the greatly decreased
-complexity in not having to track and record regions as they are obscured.
-
-
-Rootless Implementation
-
- The specifics of the underlying window system are provided to the
-generic rootless layer through rootless implementation functions, compile-
-time options, and runtime parameters. The rootless implementation
-functions are a list of functions that allow the generic rootless layer to
-perform operations such as creating, destroying, moving, and resizing
-frames. Some of the implementation functions are optional. A detailed
-description of the rootless implementation functions is provided in
-Appendix A.
-
- By design, a rootless implementation should only have to include
-the rootless.h header file. The rootlessCommon.h file contains definitions
-internal to the generic rootless layer. (If you find you need to use
-rootlessCommon.h in your implementation, let the generic rootless layer
-maintainers know. This could be an area where the generic rootless layer
-should be generalized.) A rootless implementation should also modify
-rootlessConfig.h to specify compile time options for its platform.
-
- The following compile-time options are defined in
-rootlessConfig.h:
-
- o ROOTLESS_PROTECT_ALPHA: By default for a color bit depth of 24 and
- 32 bits per pixel, fb will overwrite the "unused" 8 bits to optimize
- drawing speed. If this is true, the alpha channel of frames is
- protected and is not modified when drawing to them. The bits
- containing the alpha channel are defined by the macro
- RootlessAlphaMask(bpp), which should return a bit mask for
- various bits per pixel.
-
- o ROOTLESS_REDISPLAY_DELAY: Time in milliseconds between updates to
- the underlying window server. Most operations will be buffered until
- this time has expired.
-
- o ROOTLESS_RESIZE_GRAVITY: If the underlying window system supports it,
- some frame resizes can be optimized by relying on the frame contents
- maintaining a particular gravity during the resize. In this way less
- of the frame contents need to be preserved by the generic rootless
- layer. If true, the generic rootless layer will pass gravity hints
- during resizing and rely on the frame contents being preserved
- accordingly.
-
- The following runtime options are defined in rootless.h:
-
- o rootlessGlobalOffsetX, rootlessGlobalOffsetY: These specify the global
- offset that is applied to all screens when converting from
- screen-local to global coordinates.
-
- o rootless_CopyBytes_threshold, rootless_CopyWindow_threshold:
- The minimum number of bytes or pixels for which to use the rootless
- implementation's respective acceleration function. The rootless
- acceleration functions are all optional so these will only be used
- if the respective acceleration function pointer is not NULL.
-
-
-Accelerated Drawing
-
- The rootless implementation typically does not have direct access
-to the hardware. Its access to the graphics hardware is generally through
-the API of the underlying window system. This underlying API may not
-overlap well with the X11 drawing primitives. The generic rootless layer
-falls back to using fb for all its 2-D drawing. Providing optional rootless
-implementation acceleration functions can accelerate some graphics
-primitives and some window functions. Typically calling through to the
-underlying window systems API will not speed up these operations for
-small enough areas. The rootless_*_threshold runtime options allow the
-rootless implementation to provide hints for when the acceleration
-functions should be used instead of fb.
-
-
-Alpha Channel Protection
-
- If the bits per pixel is greater then the color bit depth, the contents
-of the extra bits are undefined by the X11 protocol. Some window systems
-will use these extra bits as an alpha channel. The generic rootless layer can
-be configured to protect these bits and make sure they are not modified by
-other parts of the X server. To protect the alpha channel
-ROOTLESS_PROTECT_ALPHA and RootlessAlphaMask(bpp) must be
-set appropriately as described under the compile time options. This
-ensures that the X11 graphics primitives do not overwrite the alpha
-channel in an attempt to optimize drawing. In addition, the window
-functions PaintWindow() and Composite() must be replaced by alpha
-channel safe variants. These are provided in rootless/safeAlpha.
-
-
-Credits
-
- The generic rootless layer was originally conceived and developed
-by Greg Parker as part of the XDarwin X server on Mac OS X. John
-Harper made later optimizations to this code but removed its generic
-independence of the underlying window system. Torrey T. Lyons
-reintroduced the generic abstractions and made the rootless code suitable
-for use by other X servers.
-
-
-Appendix A: Rootless Implementation Functions
-
- The rootless implementation functions are defined in rootless.h. It
-is intended that rootless.h contains the complete interface that is needed by
-rootless implementations. The definitions contained in rootlessCommon.h
-are intended for internal use by the generic rootless layer and are more
-likely to change.
-
- Most of these functions take a RootlessFrameID as a parameter.
-The RootlessFrameID is an opaque object that is returned by the
-implementation's CreateFrame() function. The generic rootless layer does
-not use this frame id other than to pass it back to the rootless
-implementation to indicate the frame to operate on.
-
-/*
- * Create a new frame.
- * The frame is created unmapped.
- *
- * pFrame RootlessWindowPtr for this frame should be completely
- * initialized before calling except for pFrame->wid, which
- * is set by this function.
- * pScreen Screen on which to place the new frame
- * newX, newY Position of the frame.
- * pNewShape Shape for the frame (in frame-local coordinates). NULL for
- * unshaped frames.
- */
-typedef Bool (*RootlessCreateFrameProc)
- (RootlessWindowPtr pFrame, ScreenPtr pScreen, int newX, int newY,
- RegionPtr pNewShape);
-
-/*
- * Destroy a frame.
- * Drawing is stopped and all updates are flushed before this is called.
- *
- * wid Frame id
- */
-typedef void (*RootlessDestroyFrameProc)
- (RootlessFrameID wid);
-
-/*
- * Move a frame on screen.
- * Drawing is stopped and all updates are flushed before this is called.
- *
- * wid Frame id
- * pScreen Screen to move the new frame to
- * newX, newY New position of the frame
- */
-typedef void (*RootlessMoveFrameProc)
- (RootlessFrameID wid, ScreenPtr pScreen, int newX, int newY);
-
-/*
- * Resize and move a frame.
- * Drawing is stopped and all updates are flushed before this is called.
- *
- * wid Frame id
- * pScreen Screen to move the new frame to
- * newX, newY New position of the frame
- * newW, newH New size of the frame
- * gravity Gravity for window contents (rl_gravity_enum). This is always
- * RL_GRAVITY_NONE unless ROOTLESS_RESIZE_GRAVITY is set.
- */
-typedef void (*RootlessResizeFrameProc)
- (RootlessFrameID wid, ScreenPtr pScreen,
- int newX, int newY, unsigned int newW, unsigned int newH,
- unsigned int gravity);
-
-/*
- * Change frame ordering (AKA stacking, layering).
- * Drawing is stopped before this is called. Unmapped frames are mapped by
- * setting their ordering.
- *
- * wid Frame id
- * nextWid Frame id of frame that is now above this one or NULL if this
- * frame is at the top.
- */
-typedef void (*RootlessRestackFrameProc)
- (RootlessFrameID wid, RootlessFrameID nextWid);
-
-/*
- * Change frame's shape.
- * Drawing is stopped before this is called.
- *
- * wid Frame id
- * pNewShape New shape for the frame (in frame-local coordinates)
- * or NULL if now unshaped.
- */
-typedef void (*RootlessReshapeFrameProc)
- (RootlessFrameID wid, RegionPtr pNewShape);
-
-/*
- * Unmap a frame.
- *
- * wid Frame id
- */
-typedef void (*RootlessUnmapFrameProc)
- (RootlessFrameID wid);
-
-/*
- * Start drawing to a frame.
- * Prepare a frame for direct access to its backing buffer.
- *
- * wid Frame id
- * pixelData Address of the backing buffer (returned)
- * bytesPerRow Width in bytes of the backing buffer (returned)
- */
-typedef void (*RootlessStartDrawingProc)
- (RootlessFrameID wid, char **pixelData, int *bytesPerRow);
-
-/*
- * Stop drawing to a frame.
- * No drawing to the frame's backing buffer will occur until drawing
- * is started again.
- *
- * wid Frame id
- * flush Flush drawing updates for this frame to the screen.
- */
-typedef void (*RootlessStopDrawingProc)
- (RootlessFrameID wid, Bool flush);
-
-/*
- * Flush drawing updates to the screen.
- * Drawing is stopped before this is called.
- *
- * wid Frame id
- * pDamage Region containing all the changed pixels in frame-local
- * coordinates. This is clipped to the window's clip.
- */
-typedef void (*RootlessUpdateRegionProc)
- (RootlessFrameID wid, RegionPtr pDamage);
-
-/*
- * Mark damaged rectangles as requiring redisplay to screen.
- *
- * wid Frame id
- * nrects Number of damaged rectangles
- * rects Array of damaged rectangles in frame-local coordinates
- * shift_x, Vector to shift rectangles by
- * shift_y
- */
-typedef void (*RootlessDamageRectsProc)
- (RootlessFrameID wid, int nrects, const BoxRec *rects,
- int shift_x, int shift_y);
-
-/*
- * Switch the window associated with a frame. (Optional)
- * When a framed window is reparented, the frame is resized and set to
- * use the new top-level parent. If defined this function will be called
- * afterwards for implementation specific bookkeeping.
- *
- * pFrame Frame whose window has switched
- * oldWin Previous window wrapped by this frame
- */
-typedef void (*RootlessSwitchWindowProc)
- (RootlessWindowPtr pFrame, WindowPtr oldWin);
-
-/*
- * Copy bytes. (Optional)
- * Source and destinate may overlap and the right thing should happen.
- *
- * width Bytes to copy per row
- * height Number of rows
- * src Source data
- * srcRowBytes Width of source in bytes
- * dst Destination data
- * dstRowBytes Width of destination in bytes
- */
-typedef void (*RootlessCopyBytesProc)
- (unsigned int width, unsigned int height,
- const void *src, unsigned int srcRowBytes,
- void *dst, unsigned int dstRowBytes);
-
-/*
- * Copy area in frame to another part of frame. (Optional)
- *
- * wid Frame id
- * dstNrects Number of rectangles to copy
- * dstRects Array of rectangles to copy
- * dx, dy Number of pixels away to copy area
- */
-typedef void (*RootlessCopyWindowProc)
- (RootlessFrameID wid, int dstNrects, const BoxRec *dstRects,
- int dx, int dy);
-
+ Generic Rootless Layer
+ Version 1.0
+ July 13, 2004
+
+ Torrey T. Lyons
+ torrey@xfree86.org
+
+
+Introduction
+
+ The generic rootless layer allows an X server to be implemented
+on top of another window server in a cooperative manner. This allows the
+X11 windows and native windows of the underlying window server to
+coexist on the same screen. The layer is called "rootless" because the root
+window of the X server is generally not drawn. Instead, each top-level
+child of the root window is represented as a separate on-screen window by
+the underlying window server. The layer is referred to as "generic"
+because it abstracts away the details of the underlying window system and
+contains code that is useful for any rootless X server. The code for the
+generic rootless layer is located in xc/programs/Xserver/miext/rootless. To
+build a complete rootless X server requires a specific rootless
+implementation, which provides functions that allow the generic rootless
+layer to interact with the underlying window system.
+
+
+Concepts
+
+ In the context of a rootless X server the term window is used to
+mean many fundamentally different things. For X11 a window is a DDX
+resource that describes a visible, or potentially visible, rectangle on the
+screen. A top-level window is a direct child of the root window. To avoid
+confusion, an on-screen native window of the underlying window system
+is referred to as a "frame". The generic rootless layer associates each
+mapped top-level X11 window with a frame. An X11 window may be said
+to be "framed" if it or its top-level parent is represented by a frame.
+
+ The generic rootless layer models each frame as being backed at
+all times by a backing buffer, which is periodically flushed to the screen.
+If the underlying window system does not provide a backing buffer for
+frames, this must be done by the rootless implementation. The generic
+rootless layer model does not assume it always has access to the frames'
+backing buffers. Any drawing to the buffer will be proceeded by a call to
+the rootless implementation's StartDrawing() function and StopDrawing()
+will be called when the drawing is concluded. The address of the frame's
+backing buffer is returned by the StartDrawing() function and it can
+change between successive calls.
+
+ Because each frame is assumed to have a backing buffer, the
+generic rootless layer will stop Expose events being generated when the
+regions of visibility of a frame change on screen. This is similar to backing
+store, but backing buffers are different in that they always store a copy of
+the entire window contents, not just the obscured portions. The price paid
+in increased memory consumption is made up by the greatly decreased
+complexity in not having to track and record regions as they are obscured.
+
+
+Rootless Implementation
+
+ The specifics of the underlying window system are provided to the
+generic rootless layer through rootless implementation functions, compile-
+time options, and runtime parameters. The rootless implementation
+functions are a list of functions that allow the generic rootless layer to
+perform operations such as creating, destroying, moving, and resizing
+frames. Some of the implementation functions are optional. A detailed
+description of the rootless implementation functions is provided in
+Appendix A.
+
+ By design, a rootless implementation should only have to include
+the rootless.h header file. The rootlessCommon.h file contains definitions
+internal to the generic rootless layer. (If you find you need to use
+rootlessCommon.h in your implementation, let the generic rootless layer
+maintainers know. This could be an area where the generic rootless layer
+should be generalized.) A rootless implementation should also modify
+rootlessConfig.h to specify compile time options for its platform.
+
+ The following compile-time options are defined in
+rootlessConfig.h:
+
+ o ROOTLESS_PROTECT_ALPHA: By default for a color bit depth of 24 and
+ 32 bits per pixel, fb will overwrite the "unused" 8 bits to optimize
+ drawing speed. If this is true, the alpha channel of frames is
+ protected and is not modified when drawing to them. The bits
+ containing the alpha channel are defined by the macro
+ RootlessAlphaMask(bpp), which should return a bit mask for
+ various bits per pixel.
+
+ o ROOTLESS_REDISPLAY_DELAY: Time in milliseconds between updates to
+ the underlying window server. Most operations will be buffered until
+ this time has expired.
+
+ o ROOTLESS_RESIZE_GRAVITY: If the underlying window system supports it,
+ some frame resizes can be optimized by relying on the frame contents
+ maintaining a particular gravity during the resize. In this way less
+ of the frame contents need to be preserved by the generic rootless
+ layer. If true, the generic rootless layer will pass gravity hints
+ during resizing and rely on the frame contents being preserved
+ accordingly.
+
+ The following runtime options are defined in rootless.h:
+
+ o rootlessGlobalOffsetX, rootlessGlobalOffsetY: These specify the global
+ offset that is applied to all screens when converting from
+ screen-local to global coordinates.
+
+ o rootless_CopyBytes_threshold, rootless_CopyWindow_threshold:
+ The minimum number of bytes or pixels for which to use the rootless
+ implementation's respective acceleration function. The rootless
+ acceleration functions are all optional so these will only be used
+ if the respective acceleration function pointer is not NULL.
+
+
+Accelerated Drawing
+
+ The rootless implementation typically does not have direct access
+to the hardware. Its access to the graphics hardware is generally through
+the API of the underlying window system. This underlying API may not
+overlap well with the X11 drawing primitives. The generic rootless layer
+falls back to using fb for all its 2-D drawing. Providing optional rootless
+implementation acceleration functions can accelerate some graphics
+primitives and some window functions. Typically calling through to the
+underlying window systems API will not speed up these operations for
+small enough areas. The rootless_*_threshold runtime options allow the
+rootless implementation to provide hints for when the acceleration
+functions should be used instead of fb.
+
+
+Alpha Channel Protection
+
+ If the bits per pixel is greater then the color bit depth, the contents
+of the extra bits are undefined by the X11 protocol. Some window systems
+will use these extra bits as an alpha channel. The generic rootless layer can
+be configured to protect these bits and make sure they are not modified by
+other parts of the X server. To protect the alpha channel
+ROOTLESS_PROTECT_ALPHA and RootlessAlphaMask(bpp) must be
+set appropriately as described under the compile time options. This
+ensures that the X11 graphics primitives do not overwrite the alpha
+channel in an attempt to optimize drawing. In addition, the window
+functions PaintWindow() and Composite() must be replaced by alpha
+channel safe variants. These are provided in rootless/safeAlpha.
+
+
+Credits
+
+ The generic rootless layer was originally conceived and developed
+by Greg Parker as part of the XDarwin X server on Mac OS X. John
+Harper made later optimizations to this code but removed its generic
+independence of the underlying window system. Torrey T. Lyons
+reintroduced the generic abstractions and made the rootless code suitable
+for use by other X servers.
+
+
+Appendix A: Rootless Implementation Functions
+
+ The rootless implementation functions are defined in rootless.h. It
+is intended that rootless.h contains the complete interface that is needed by
+rootless implementations. The definitions contained in rootlessCommon.h
+are intended for internal use by the generic rootless layer and are more
+likely to change.
+
+ Most of these functions take a RootlessFrameID as a parameter.
+The RootlessFrameID is an opaque object that is returned by the
+implementation's CreateFrame() function. The generic rootless layer does
+not use this frame id other than to pass it back to the rootless
+implementation to indicate the frame to operate on.
+
+/*
+ * Create a new frame.
+ * The frame is created unmapped.
+ *
+ * pFrame RootlessWindowPtr for this frame should be completely
+ * initialized before calling except for pFrame->wid, which
+ * is set by this function.
+ * pScreen Screen on which to place the new frame
+ * newX, newY Position of the frame.
+ * pNewShape Shape for the frame (in frame-local coordinates). NULL for
+ * unshaped frames.
+ */
+typedef Bool (*RootlessCreateFrameProc)
+ (RootlessWindowPtr pFrame, ScreenPtr pScreen, int newX, int newY,
+ RegionPtr pNewShape);
+
+/*
+ * Destroy a frame.
+ * Drawing is stopped and all updates are flushed before this is called.
+ *
+ * wid Frame id
+ */
+typedef void (*RootlessDestroyFrameProc)
+ (RootlessFrameID wid);
+
+/*
+ * Move a frame on screen.
+ * Drawing is stopped and all updates are flushed before this is called.
+ *
+ * wid Frame id
+ * pScreen Screen to move the new frame to
+ * newX, newY New position of the frame
+ */
+typedef void (*RootlessMoveFrameProc)
+ (RootlessFrameID wid, ScreenPtr pScreen, int newX, int newY);
+
+/*
+ * Resize and move a frame.
+ * Drawing is stopped and all updates are flushed before this is called.
+ *
+ * wid Frame id
+ * pScreen Screen to move the new frame to
+ * newX, newY New position of the frame
+ * newW, newH New size of the frame
+ * gravity Gravity for window contents (rl_gravity_enum). This is always
+ * RL_GRAVITY_NONE unless ROOTLESS_RESIZE_GRAVITY is set.
+ */
+typedef void (*RootlessResizeFrameProc)
+ (RootlessFrameID wid, ScreenPtr pScreen,
+ int newX, int newY, unsigned int newW, unsigned int newH,
+ unsigned int gravity);
+
+/*
+ * Change frame ordering (AKA stacking, layering).
+ * Drawing is stopped before this is called. Unmapped frames are mapped by
+ * setting their ordering.
+ *
+ * wid Frame id
+ * nextWid Frame id of frame that is now above this one or NULL if this
+ * frame is at the top.
+ */
+typedef void (*RootlessRestackFrameProc)
+ (RootlessFrameID wid, RootlessFrameID nextWid);
+
+/*
+ * Change frame's shape.
+ * Drawing is stopped before this is called.
+ *
+ * wid Frame id
+ * pNewShape New shape for the frame (in frame-local coordinates)
+ * or NULL if now unshaped.
+ */
+typedef void (*RootlessReshapeFrameProc)
+ (RootlessFrameID wid, RegionPtr pNewShape);
+
+/*
+ * Unmap a frame.
+ *
+ * wid Frame id
+ */
+typedef void (*RootlessUnmapFrameProc)
+ (RootlessFrameID wid);
+
+/*
+ * Start drawing to a frame.
+ * Prepare a frame for direct access to its backing buffer.
+ *
+ * wid Frame id
+ * pixelData Address of the backing buffer (returned)
+ * bytesPerRow Width in bytes of the backing buffer (returned)
+ */
+typedef void (*RootlessStartDrawingProc)
+ (RootlessFrameID wid, char **pixelData, int *bytesPerRow);
+
+/*
+ * Stop drawing to a frame.
+ * No drawing to the frame's backing buffer will occur until drawing
+ * is started again.
+ *
+ * wid Frame id
+ * flush Flush drawing updates for this frame to the screen.
+ */
+typedef void (*RootlessStopDrawingProc)
+ (RootlessFrameID wid, Bool flush);
+
+/*
+ * Flush drawing updates to the screen.
+ * Drawing is stopped before this is called.
+ *
+ * wid Frame id
+ * pDamage Region containing all the changed pixels in frame-local
+ * coordinates. This is clipped to the window's clip.
+ */
+typedef void (*RootlessUpdateRegionProc)
+ (RootlessFrameID wid, RegionPtr pDamage);
+
+/*
+ * Mark damaged rectangles as requiring redisplay to screen.
+ *
+ * wid Frame id
+ * nrects Number of damaged rectangles
+ * rects Array of damaged rectangles in frame-local coordinates
+ * shift_x, Vector to shift rectangles by
+ * shift_y
+ */
+typedef void (*RootlessDamageRectsProc)
+ (RootlessFrameID wid, int nrects, const BoxRec *rects,
+ int shift_x, int shift_y);
+
+/*
+ * Switch the window associated with a frame. (Optional)
+ * When a framed window is reparented, the frame is resized and set to
+ * use the new top-level parent. If defined this function will be called
+ * afterwards for implementation specific bookkeeping.
+ *
+ * pFrame Frame whose window has switched
+ * oldWin Previous window wrapped by this frame
+ */
+typedef void (*RootlessSwitchWindowProc)
+ (RootlessWindowPtr pFrame, WindowPtr oldWin);
+
+/*
+ * Copy bytes. (Optional)
+ * Source and destinate may overlap and the right thing should happen.
+ *
+ * width Bytes to copy per row
+ * height Number of rows
+ * src Source data
+ * srcRowBytes Width of source in bytes
+ * dst Destination data
+ * dstRowBytes Width of destination in bytes
+ */
+typedef void (*RootlessCopyBytesProc)
+ (unsigned int width, unsigned int height,
+ const void *src, unsigned int srcRowBytes,
+ void *dst, unsigned int dstRowBytes);
+
+/*
+ * Copy area in frame to another part of frame. (Optional)
+ *
+ * wid Frame id
+ * dstNrects Number of rectangles to copy
+ * dstRects Array of rectangles to copy
+ * dx, dy Number of pixels away to copy area
+ */
+typedef void (*RootlessCopyWindowProc)
+ (RootlessFrameID wid, int dstNrects, const BoxRec *dstRects,
+ int dx, int dy);
+
diff --git a/xorg-server/miext/shadow/shrot16pack.c b/xorg-server/miext/shadow/shrot16pack.c
index f7ebf1efa..0b7faca6a 100644
--- a/xorg-server/miext/shadow/shrot16pack.c
+++ b/xorg-server/miext/shadow/shrot16pack.c
@@ -1,30 +1,30 @@
-/*
- * Copyright © 2000 Keith Packard
- *
- * Permission to use, copy, modify, distribute, and sell this software and its
- * documentation for any purpose is hereby granted without fee, provided that
- * the above copyright notice appear in all copies and that both that
- * copyright notice and this permission notice appear in supporting
- * documentation, and that the name of Keith Packard not be used in
- * advertising or publicity pertaining to distribution of the software without
- * specific, written prior permission. Keith Packard makes no
- * representations about the suitability of this software for any purpose. It
- * is provided "as is" without express or implied warranty.
- *
- * KEITH PACKARD DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
- * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
- * EVENT SHALL KEITH PACKARD BE LIABLE FOR ANY SPECIAL, INDIRECT OR
- * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
- * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
- * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
- * PERFORMANCE OF THIS SOFTWARE.
- */
-
-#define FUNC shadowUpdateRotate16
-#define Data CARD16
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include "shrotpack.h"
+/*
+ * Copyright © 2000 Keith Packard
+ *
+ * Permission to use, copy, modify, distribute, and sell this software and its
+ * documentation for any purpose is hereby granted without fee, provided that
+ * the above copyright notice appear in all copies and that both that
+ * copyright notice and this permission notice appear in supporting
+ * documentation, and that the name of Keith Packard not be used in
+ * advertising or publicity pertaining to distribution of the software without
+ * specific, written prior permission. Keith Packard makes no
+ * representations about the suitability of this software for any purpose. It
+ * is provided "as is" without express or implied warranty.
+ *
+ * KEITH PACKARD DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
+ * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
+ * EVENT SHALL KEITH PACKARD BE LIABLE FOR ANY SPECIAL, INDIRECT OR
+ * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
+ * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
+ * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+ * PERFORMANCE OF THIS SOFTWARE.
+ */
+
+#define FUNC shadowUpdateRotate16
+#define Data CARD16
+
+#ifdef HAVE_DIX_CONFIG_H
+#include <dix-config.h>
+#endif
+
+#include "shrotpack.h"
diff --git a/xorg-server/miext/shadow/shrot16pack_180.c b/xorg-server/miext/shadow/shrot16pack_180.c
index 877bc174b..d8f2633e5 100644
--- a/xorg-server/miext/shadow/shrot16pack_180.c
+++ b/xorg-server/miext/shadow/shrot16pack_180.c
@@ -1,31 +1,31 @@
-/*
- * Copyright © 2000 Keith Packard
- *
- * Permission to use, copy, modify, distribute, and sell this software and its
- * documentation for any purpose is hereby granted without fee, provided that
- * the above copyright notice appear in all copies and that both that
- * copyright notice and this permission notice appear in supporting
- * documentation, and that the name of Keith Packard not be used in
- * advertising or publicity pertaining to distribution of the software without
- * specific, written prior permission. Keith Packard makes no
- * representations about the suitability of this software for any purpose. It
- * is provided "as is" without express or implied warranty.
- *
- * KEITH PACKARD DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
- * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
- * EVENT SHALL KEITH PACKARD BE LIABLE FOR ANY SPECIAL, INDIRECT OR
- * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
- * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
- * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
- * PERFORMANCE OF THIS SOFTWARE.
- */
-
-#define FUNC shadowUpdateRotate16_180
-#define Data CARD16
-#define ROTATE 180
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include "shrotpack.h"
+/*
+ * Copyright © 2000 Keith Packard
+ *
+ * Permission to use, copy, modify, distribute, and sell this software and its
+ * documentation for any purpose is hereby granted without fee, provided that
+ * the above copyright notice appear in all copies and that both that
+ * copyright notice and this permission notice appear in supporting
+ * documentation, and that the name of Keith Packard not be used in
+ * advertising or publicity pertaining to distribution of the software without
+ * specific, written prior permission. Keith Packard makes no
+ * representations about the suitability of this software for any purpose. It
+ * is provided "as is" without express or implied warranty.
+ *
+ * KEITH PACKARD DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
+ * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
+ * EVENT SHALL KEITH PACKARD BE LIABLE FOR ANY SPECIAL, INDIRECT OR
+ * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
+ * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
+ * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+ * PERFORMANCE OF THIS SOFTWARE.
+ */
+
+#define FUNC shadowUpdateRotate16_180
+#define Data CARD16
+#define ROTATE 180
+
+#ifdef HAVE_DIX_CONFIG_H
+#include <dix-config.h>
+#endif
+
+#include "shrotpack.h"
diff --git a/xorg-server/miext/shadow/shrot16pack_270.c b/xorg-server/miext/shadow/shrot16pack_270.c
index de1de3850..4aa471325 100644
--- a/xorg-server/miext/shadow/shrot16pack_270.c
+++ b/xorg-server/miext/shadow/shrot16pack_270.c
@@ -1,31 +1,31 @@
-/*
- * Copyright © 2000 Keith Packard
- *
- * Permission to use, copy, modify, distribute, and sell this software and its
- * documentation for any purpose is hereby granted without fee, provided that
- * the above copyright notice appear in all copies and that both that
- * copyright notice and this permission notice appear in supporting
- * documentation, and that the name of Keith Packard not be used in
- * advertising or publicity pertaining to distribution of the software without
- * specific, written prior permission. Keith Packard makes no
- * representations about the suitability of this software for any purpose. It
- * is provided "as is" without express or implied warranty.
- *
- * KEITH PACKARD DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
- * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
- * EVENT SHALL KEITH PACKARD BE LIABLE FOR ANY SPECIAL, INDIRECT OR
- * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
- * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
- * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
- * PERFORMANCE OF THIS SOFTWARE.
- */
-
-#define FUNC shadowUpdateRotate16_270
-#define Data CARD16
-#define ROTATE 270
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include "shrotpack.h"
+/*
+ * Copyright © 2000 Keith Packard
+ *
+ * Permission to use, copy, modify, distribute, and sell this software and its
+ * documentation for any purpose is hereby granted without fee, provided that
+ * the above copyright notice appear in all copies and that both that
+ * copyright notice and this permission notice appear in supporting
+ * documentation, and that the name of Keith Packard not be used in
+ * advertising or publicity pertaining to distribution of the software without
+ * specific, written prior permission. Keith Packard makes no
+ * representations about the suitability of this software for any purpose. It
+ * is provided "as is" without express or implied warranty.
+ *
+ * KEITH PACKARD DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
+ * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
+ * EVENT SHALL KEITH PACKARD BE LIABLE FOR ANY SPECIAL, INDIRECT OR
+ * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
+ * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
+ * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+ * PERFORMANCE OF THIS SOFTWARE.
+ */
+
+#define FUNC shadowUpdateRotate16_270
+#define Data CARD16
+#define ROTATE 270
+
+#ifdef HAVE_DIX_CONFIG_H
+#include <dix-config.h>
+#endif
+
+#include "shrotpack.h"
diff --git a/xorg-server/miext/shadow/shrot16pack_270YX.c b/xorg-server/miext/shadow/shrot16pack_270YX.c
index 9d6f94c70..0df1fd51f 100644
--- a/xorg-server/miext/shadow/shrot16pack_270YX.c
+++ b/xorg-server/miext/shadow/shrot16pack_270YX.c
@@ -1,31 +1,31 @@
-/*
- * Copyright 2000 Keith Packard
- *
- * Permission to use, copy, modify, distribute, and sell this software and its
- * documentation for any purpose is hereby granted without fee, provided that
- * the above copyright notice appear in all copies and that both that
- * copyright notice and this permission notice appear in supporting
- * documentation, and that the name of Keith Packard not be used in
- * advertising or publicity pertaining to distribution of the software without
- * specific, written prior permission. Keith Packard makes no
- * representations about the suitability of this software for any purpose. It
- * is provided "as is" without express or implied warranty.
- *
- * KEITH PACKARD DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
- * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
- * EVENT SHALL KEITH PACKARD BE LIABLE FOR ANY SPECIAL, INDIRECT OR
- * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
- * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
- * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
- * PERFORMANCE OF THIS SOFTWARE.
- */
-
-#define FUNC shadowUpdateRotate16_270YX
-#define Data CARD16
-#define ROTATE 270
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include "shrotpackYX.h"
+/*
+ * Copyright 2000 Keith Packard
+ *
+ * Permission to use, copy, modify, distribute, and sell this software and its
+ * documentation for any purpose is hereby granted without fee, provided that
+ * the above copyright notice appear in all copies and that both that
+ * copyright notice and this permission notice appear in supporting
+ * documentation, and that the name of Keith Packard not be used in
+ * advertising or publicity pertaining to distribution of the software without
+ * specific, written prior permission. Keith Packard makes no
+ * representations about the suitability of this software for any purpose. It
+ * is provided "as is" without express or implied warranty.
+ *
+ * KEITH PACKARD DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
+ * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
+ * EVENT SHALL KEITH PACKARD BE LIABLE FOR ANY SPECIAL, INDIRECT OR
+ * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
+ * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
+ * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+ * PERFORMANCE OF THIS SOFTWARE.
+ */
+
+#define FUNC shadowUpdateRotate16_270YX
+#define Data CARD16
+#define ROTATE 270
+
+#ifdef HAVE_DIX_CONFIG_H
+#include <dix-config.h>
+#endif
+
+#include "shrotpackYX.h"
diff --git a/xorg-server/miext/shadow/shrot16pack_90.c b/xorg-server/miext/shadow/shrot16pack_90.c
index caabb0ea0..81e49151a 100644
--- a/xorg-server/miext/shadow/shrot16pack_90.c
+++ b/xorg-server/miext/shadow/shrot16pack_90.c
@@ -1,31 +1,31 @@
-/*
- * Copyright © 2000 Keith Packard
- *
- * Permission to use, copy, modify, distribute, and sell this software and its
- * documentation for any purpose is hereby granted without fee, provided that
- * the above copyright notice appear in all copies and that both that
- * copyright notice and this permission notice appear in supporting
- * documentation, and that the name of Keith Packard not be used in
- * advertising or publicity pertaining to distribution of the software without
- * specific, written prior permission. Keith Packard makes no
- * representations about the suitability of this software for any purpose. It
- * is provided "as is" without express or implied warranty.
- *
- * KEITH PACKARD DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
- * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
- * EVENT SHALL KEITH PACKARD BE LIABLE FOR ANY SPECIAL, INDIRECT OR
- * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
- * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
- * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
- * PERFORMANCE OF THIS SOFTWARE.
- */
-
-#define FUNC shadowUpdateRotate16_90
-#define Data CARD16
-#define ROTATE 90
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include "shrotpack.h"
+/*
+ * Copyright © 2000 Keith Packard
+ *
+ * Permission to use, copy, modify, distribute, and sell this software and its
+ * documentation for any purpose is hereby granted without fee, provided that
+ * the above copyright notice appear in all copies and that both that
+ * copyright notice and this permission notice appear in supporting
+ * documentation, and that the name of Keith Packard not be used in
+ * advertising or publicity pertaining to distribution of the software without
+ * specific, written prior permission. Keith Packard makes no
+ * representations about the suitability of this software for any purpose. It
+ * is provided "as is" without express or implied warranty.
+ *
+ * KEITH PACKARD DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
+ * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
+ * EVENT SHALL KEITH PACKARD BE LIABLE FOR ANY SPECIAL, INDIRECT OR
+ * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
+ * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
+ * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+ * PERFORMANCE OF THIS SOFTWARE.
+ */
+
+#define FUNC shadowUpdateRotate16_90
+#define Data CARD16
+#define ROTATE 90
+
+#ifdef HAVE_DIX_CONFIG_H
+#include <dix-config.h>
+#endif
+
+#include "shrotpack.h"
diff --git a/xorg-server/miext/shadow/shrot16pack_90YX.c b/xorg-server/miext/shadow/shrot16pack_90YX.c
index 8a4b3326e..5fc3b236a 100644
--- a/xorg-server/miext/shadow/shrot16pack_90YX.c
+++ b/xorg-server/miext/shadow/shrot16pack_90YX.c
@@ -1,31 +1,31 @@
-/*
- * Copyright 2000 Keith Packard
- *
- * Permission to use, copy, modify, distribute, and sell this software and its
- * documentation for any purpose is hereby granted without fee, provided that
- * the above copyright notice appear in all copies and that both that
- * copyright notice and this permission notice appear in supporting
- * documentation, and that the name of Keith Packard not be used in
- * advertising or publicity pertaining to distribution of the software without
- * specific, written prior permission. Keith Packard makes no
- * representations about the suitability of this software for any purpose. It
- * is provided "as is" without express or implied warranty.
- *
- * KEITH PACKARD DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
- * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
- * EVENT SHALL KEITH PACKARD BE LIABLE FOR ANY SPECIAL, INDIRECT OR
- * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
- * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
- * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
- * PERFORMANCE OF THIS SOFTWARE.
- */
-
-#define FUNC shadowUpdateRotate16_90YX
-#define Data CARD16
-#define ROTATE 90
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include "shrotpackYX.h"
+/*
+ * Copyright 2000 Keith Packard
+ *
+ * Permission to use, copy, modify, distribute, and sell this software and its
+ * documentation for any purpose is hereby granted without fee, provided that
+ * the above copyright notice appear in all copies and that both that
+ * copyright notice and this permission notice appear in supporting
+ * documentation, and that the name of Keith Packard not be used in
+ * advertising or publicity pertaining to distribution of the software without
+ * specific, written prior permission. Keith Packard makes no
+ * representations about the suitability of this software for any purpose. It
+ * is provided "as is" without express or implied warranty.
+ *
+ * KEITH PACKARD DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
+ * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
+ * EVENT SHALL KEITH PACKARD BE LIABLE FOR ANY SPECIAL, INDIRECT OR
+ * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
+ * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
+ * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+ * PERFORMANCE OF THIS SOFTWARE.
+ */
+
+#define FUNC shadowUpdateRotate16_90YX
+#define Data CARD16
+#define ROTATE 90
+
+#ifdef HAVE_DIX_CONFIG_H
+#include <dix-config.h>
+#endif
+
+#include "shrotpackYX.h"
diff --git a/xorg-server/miext/shadow/shrot32pack.c b/xorg-server/miext/shadow/shrot32pack.c
index e1b55f4d5..4a9cbc0ff 100644
--- a/xorg-server/miext/shadow/shrot32pack.c
+++ b/xorg-server/miext/shadow/shrot32pack.c
@@ -1,30 +1,30 @@
-/*
- * Copyright © 2000 Keith Packard
- *
- * Permission to use, copy, modify, distribute, and sell this software and its
- * documentation for any purpose is hereby granted without fee, provided that
- * the above copyright notice appear in all copies and that both that
- * copyright notice and this permission notice appear in supporting
- * documentation, and that the name of Keith Packard not be used in
- * advertising or publicity pertaining to distribution of the software without
- * specific, written prior permission. Keith Packard makes no
- * representations about the suitability of this software for any purpose. It
- * is provided "as is" without express or implied warranty.
- *
- * KEITH PACKARD DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
- * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
- * EVENT SHALL KEITH PACKARD BE LIABLE FOR ANY SPECIAL, INDIRECT OR
- * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
- * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
- * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
- * PERFORMANCE OF THIS SOFTWARE.
- */
-
-#define FUNC shadowUpdateRotate32
-#define Data CARD32
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include "shrotpack.h"
+/*
+ * Copyright © 2000 Keith Packard
+ *
+ * Permission to use, copy, modify, distribute, and sell this software and its
+ * documentation for any purpose is hereby granted without fee, provided that
+ * the above copyright notice appear in all copies and that both that
+ * copyright notice and this permission notice appear in supporting
+ * documentation, and that the name of Keith Packard not be used in
+ * advertising or publicity pertaining to distribution of the software without
+ * specific, written prior permission. Keith Packard makes no
+ * representations about the suitability of this software for any purpose. It
+ * is provided "as is" without express or implied warranty.
+ *
+ * KEITH PACKARD DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
+ * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
+ * EVENT SHALL KEITH PACKARD BE LIABLE FOR ANY SPECIAL, INDIRECT OR
+ * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
+ * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
+ * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+ * PERFORMANCE OF THIS SOFTWARE.
+ */
+
+#define FUNC shadowUpdateRotate32
+#define Data CARD32
+
+#ifdef HAVE_DIX_CONFIG_H
+#include <dix-config.h>
+#endif
+
+#include "shrotpack.h"
diff --git a/xorg-server/miext/shadow/shrot32pack_180.c b/xorg-server/miext/shadow/shrot32pack_180.c
index 50bcae40d..8f5fb5760 100644
--- a/xorg-server/miext/shadow/shrot32pack_180.c
+++ b/xorg-server/miext/shadow/shrot32pack_180.c
@@ -1,31 +1,31 @@
-/*
- * Copyright © 2000 Keith Packard
- *
- * Permission to use, copy, modify, distribute, and sell this software and its
- * documentation for any purpose is hereby granted without fee, provided that
- * the above copyright notice appear in all copies and that both that
- * copyright notice and this permission notice appear in supporting
- * documentation, and that the name of Keith Packard not be used in
- * advertising or publicity pertaining to distribution of the software without
- * specific, written prior permission. Keith Packard makes no
- * representations about the suitability of this software for any purpose. It
- * is provided "as is" without express or implied warranty.
- *
- * KEITH PACKARD DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
- * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
- * EVENT SHALL KEITH PACKARD BE LIABLE FOR ANY SPECIAL, INDIRECT OR
- * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
- * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
- * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
- * PERFORMANCE OF THIS SOFTWARE.
- */
-
-#define FUNC shadowUpdateRotate32_180
-#define Data CARD32
-#define ROTATE 180
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include "shrotpack.h"
+/*
+ * Copyright © 2000 Keith Packard
+ *
+ * Permission to use, copy, modify, distribute, and sell this software and its
+ * documentation for any purpose is hereby granted without fee, provided that
+ * the above copyright notice appear in all copies and that both that
+ * copyright notice and this permission notice appear in supporting
+ * documentation, and that the name of Keith Packard not be used in
+ * advertising or publicity pertaining to distribution of the software without
+ * specific, written prior permission. Keith Packard makes no
+ * representations about the suitability of this software for any purpose. It
+ * is provided "as is" without express or implied warranty.
+ *
+ * KEITH PACKARD DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
+ * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
+ * EVENT SHALL KEITH PACKARD BE LIABLE FOR ANY SPECIAL, INDIRECT OR
+ * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
+ * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
+ * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+ * PERFORMANCE OF THIS SOFTWARE.
+ */
+
+#define FUNC shadowUpdateRotate32_180
+#define Data CARD32
+#define ROTATE 180
+
+#ifdef HAVE_DIX_CONFIG_H
+#include <dix-config.h>
+#endif
+
+#include "shrotpack.h"
diff --git a/xorg-server/miext/shadow/shrot32pack_270.c b/xorg-server/miext/shadow/shrot32pack_270.c
index 28b93f3b8..7d52fd2bf 100644
--- a/xorg-server/miext/shadow/shrot32pack_270.c
+++ b/xorg-server/miext/shadow/shrot32pack_270.c
@@ -1,31 +1,31 @@
-/*
- * Copyright © 2000 Keith Packard
- *
- * Permission to use, copy, modify, distribute, and sell this software and its
- * documentation for any purpose is hereby granted without fee, provided that
- * the above copyright notice appear in all copies and that both that
- * copyright notice and this permission notice appear in supporting
- * documentation, and that the name of Keith Packard not be used in
- * advertising or publicity pertaining to distribution of the software without
- * specific, written prior permission. Keith Packard makes no
- * representations about the suitability of this software for any purpose. It
- * is provided "as is" without express or implied warranty.
- *
- * KEITH PACKARD DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
- * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
- * EVENT SHALL KEITH PACKARD BE LIABLE FOR ANY SPECIAL, INDIRECT OR
- * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
- * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
- * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
- * PERFORMANCE OF THIS SOFTWARE.
- */
-
-#define FUNC shadowUpdateRotate32_270
-#define Data CARD32
-#define ROTATE 270
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include "shrotpack.h"
+/*
+ * Copyright © 2000 Keith Packard
+ *
+ * Permission to use, copy, modify, distribute, and sell this software and its
+ * documentation for any purpose is hereby granted without fee, provided that
+ * the above copyright notice appear in all copies and that both that
+ * copyright notice and this permission notice appear in supporting
+ * documentation, and that the name of Keith Packard not be used in
+ * advertising or publicity pertaining to distribution of the software without
+ * specific, written prior permission. Keith Packard makes no
+ * representations about the suitability of this software for any purpose. It
+ * is provided "as is" without express or implied warranty.
+ *
+ * KEITH PACKARD DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
+ * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
+ * EVENT SHALL KEITH PACKARD BE LIABLE FOR ANY SPECIAL, INDIRECT OR
+ * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
+ * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
+ * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+ * PERFORMANCE OF THIS SOFTWARE.
+ */
+
+#define FUNC shadowUpdateRotate32_270
+#define Data CARD32
+#define ROTATE 270
+
+#ifdef HAVE_DIX_CONFIG_H
+#include <dix-config.h>
+#endif
+
+#include "shrotpack.h"
diff --git a/xorg-server/miext/shadow/shrot32pack_90.c b/xorg-server/miext/shadow/shrot32pack_90.c
index 5362f9b1d..0abeb5cdd 100644
--- a/xorg-server/miext/shadow/shrot32pack_90.c
+++ b/xorg-server/miext/shadow/shrot32pack_90.c
@@ -1,31 +1,31 @@
-/*
- * Copyright © 2000 Keith Packard
- *
- * Permission to use, copy, modify, distribute, and sell this software and its
- * documentation for any purpose is hereby granted without fee, provided that
- * the above copyright notice appear in all copies and that both that
- * copyright notice and this permission notice appear in supporting
- * documentation, and that the name of Keith Packard not be used in
- * advertising or publicity pertaining to distribution of the software without
- * specific, written prior permission. Keith Packard makes no
- * representations about the suitability of this software for any purpose. It
- * is provided "as is" without express or implied warranty.
- *
- * KEITH PACKARD DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
- * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
- * EVENT SHALL KEITH PACKARD BE LIABLE FOR ANY SPECIAL, INDIRECT OR
- * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
- * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
- * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
- * PERFORMANCE OF THIS SOFTWARE.
- */
-
-#define FUNC shadowUpdateRotate32_90
-#define Data CARD32
-#define ROTATE 90
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include "shrotpack.h"
+/*
+ * Copyright © 2000 Keith Packard
+ *
+ * Permission to use, copy, modify, distribute, and sell this software and its
+ * documentation for any purpose is hereby granted without fee, provided that
+ * the above copyright notice appear in all copies and that both that
+ * copyright notice and this permission notice appear in supporting
+ * documentation, and that the name of Keith Packard not be used in
+ * advertising or publicity pertaining to distribution of the software without
+ * specific, written prior permission. Keith Packard makes no
+ * representations about the suitability of this software for any purpose. It
+ * is provided "as is" without express or implied warranty.
+ *
+ * KEITH PACKARD DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
+ * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
+ * EVENT SHALL KEITH PACKARD BE LIABLE FOR ANY SPECIAL, INDIRECT OR
+ * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
+ * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
+ * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+ * PERFORMANCE OF THIS SOFTWARE.
+ */
+
+#define FUNC shadowUpdateRotate32_90
+#define Data CARD32
+#define ROTATE 90
+
+#ifdef HAVE_DIX_CONFIG_H
+#include <dix-config.h>
+#endif
+
+#include "shrotpack.h"
diff --git a/xorg-server/miext/shadow/shrot8pack.c b/xorg-server/miext/shadow/shrot8pack.c
index 647775d06..552d838f3 100644
--- a/xorg-server/miext/shadow/shrot8pack.c
+++ b/xorg-server/miext/shadow/shrot8pack.c
@@ -1,30 +1,30 @@
-/*
- * Copyright © 2000 Keith Packard
- *
- * Permission to use, copy, modify, distribute, and sell this software and its
- * documentation for any purpose is hereby granted without fee, provided that
- * the above copyright notice appear in all copies and that both that
- * copyright notice and this permission notice appear in supporting
- * documentation, and that the name of Keith Packard not be used in
- * advertising or publicity pertaining to distribution of the software without
- * specific, written prior permission. Keith Packard makes no
- * representations about the suitability of this software for any purpose. It
- * is provided "as is" without express or implied warranty.
- *
- * KEITH PACKARD DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
- * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
- * EVENT SHALL KEITH PACKARD BE LIABLE FOR ANY SPECIAL, INDIRECT OR
- * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
- * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
- * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
- * PERFORMANCE OF THIS SOFTWARE.
- */
-
-#define FUNC shadowUpdateRotate8
-#define Data CARD8
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include "shrotpack.h"
+/*
+ * Copyright © 2000 Keith Packard
+ *
+ * Permission to use, copy, modify, distribute, and sell this software and its
+ * documentation for any purpose is hereby granted without fee, provided that
+ * the above copyright notice appear in all copies and that both that
+ * copyright notice and this permission notice appear in supporting
+ * documentation, and that the name of Keith Packard not be used in
+ * advertising or publicity pertaining to distribution of the software without
+ * specific, written prior permission. Keith Packard makes no
+ * representations about the suitability of this software for any purpose. It
+ * is provided "as is" without express or implied warranty.
+ *
+ * KEITH PACKARD DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
+ * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
+ * EVENT SHALL KEITH PACKARD BE LIABLE FOR ANY SPECIAL, INDIRECT OR
+ * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
+ * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
+ * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+ * PERFORMANCE OF THIS SOFTWARE.
+ */
+
+#define FUNC shadowUpdateRotate8
+#define Data CARD8
+
+#ifdef HAVE_DIX_CONFIG_H
+#include <dix-config.h>
+#endif
+
+#include "shrotpack.h"
diff --git a/xorg-server/miext/shadow/shrot8pack_180.c b/xorg-server/miext/shadow/shrot8pack_180.c
index b681eac87..526d8f15f 100644
--- a/xorg-server/miext/shadow/shrot8pack_180.c
+++ b/xorg-server/miext/shadow/shrot8pack_180.c
@@ -1,31 +1,31 @@
-/*
- * Copyright © 2000 Keith Packard
- *
- * Permission to use, copy, modify, distribute, and sell this software and its
- * documentation for any purpose is hereby granted without fee, provided that
- * the above copyright notice appear in all copies and that both that
- * copyright notice and this permission notice appear in supporting
- * documentation, and that the name of Keith Packard not be used in
- * advertising or publicity pertaining to distribution of the software without
- * specific, written prior permission. Keith Packard makes no
- * representations about the suitability of this software for any purpose. It
- * is provided "as is" without express or implied warranty.
- *
- * KEITH PACKARD DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
- * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
- * EVENT SHALL KEITH PACKARD BE LIABLE FOR ANY SPECIAL, INDIRECT OR
- * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
- * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
- * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
- * PERFORMANCE OF THIS SOFTWARE.
- */
-
-#define FUNC shadowUpdateRotate8_180
-#define Data CARD8
-#define ROTATE 180
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include "shrotpack.h"
+/*
+ * Copyright © 2000 Keith Packard
+ *
+ * Permission to use, copy, modify, distribute, and sell this software and its
+ * documentation for any purpose is hereby granted without fee, provided that
+ * the above copyright notice appear in all copies and that both that
+ * copyright notice and this permission notice appear in supporting
+ * documentation, and that the name of Keith Packard not be used in
+ * advertising or publicity pertaining to distribution of the software without
+ * specific, written prior permission. Keith Packard makes no
+ * representations about the suitability of this software for any purpose. It
+ * is provided "as is" without express or implied warranty.
+ *
+ * KEITH PACKARD DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
+ * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
+ * EVENT SHALL KEITH PACKARD BE LIABLE FOR ANY SPECIAL, INDIRECT OR
+ * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
+ * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
+ * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+ * PERFORMANCE OF THIS SOFTWARE.
+ */
+
+#define FUNC shadowUpdateRotate8_180
+#define Data CARD8
+#define ROTATE 180
+
+#ifdef HAVE_DIX_CONFIG_H
+#include <dix-config.h>
+#endif
+
+#include "shrotpack.h"
diff --git a/xorg-server/miext/shadow/shrot8pack_270.c b/xorg-server/miext/shadow/shrot8pack_270.c
index 0dae7a99b..73f82a712 100644
--- a/xorg-server/miext/shadow/shrot8pack_270.c
+++ b/xorg-server/miext/shadow/shrot8pack_270.c
@@ -1,31 +1,31 @@
-/*
- * Copyright © 2000 Keith Packard
- *
- * Permission to use, copy, modify, distribute, and sell this software and its
- * documentation for any purpose is hereby granted without fee, provided that
- * the above copyright notice appear in all copies and that both that
- * copyright notice and this permission notice appear in supporting
- * documentation, and that the name of Keith Packard not be used in
- * advertising or publicity pertaining to distribution of the software without
- * specific, written prior permission. Keith Packard makes no
- * representations about the suitability of this software for any purpose. It
- * is provided "as is" without express or implied warranty.
- *
- * KEITH PACKARD DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
- * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
- * EVENT SHALL KEITH PACKARD BE LIABLE FOR ANY SPECIAL, INDIRECT OR
- * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
- * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
- * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
- * PERFORMANCE OF THIS SOFTWARE.
- */
-
-#define FUNC shadowUpdateRotate8_270
-#define Data CARD8
-#define ROTATE 270
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include "shrotpack.h"
+/*
+ * Copyright © 2000 Keith Packard
+ *
+ * Permission to use, copy, modify, distribute, and sell this software and its
+ * documentation for any purpose is hereby granted without fee, provided that
+ * the above copyright notice appear in all copies and that both that
+ * copyright notice and this permission notice appear in supporting
+ * documentation, and that the name of Keith Packard not be used in
+ * advertising or publicity pertaining to distribution of the software without
+ * specific, written prior permission. Keith Packard makes no
+ * representations about the suitability of this software for any purpose. It
+ * is provided "as is" without express or implied warranty.
+ *
+ * KEITH PACKARD DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
+ * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
+ * EVENT SHALL KEITH PACKARD BE LIABLE FOR ANY SPECIAL, INDIRECT OR
+ * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
+ * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
+ * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+ * PERFORMANCE OF THIS SOFTWARE.
+ */
+
+#define FUNC shadowUpdateRotate8_270
+#define Data CARD8
+#define ROTATE 270
+
+#ifdef HAVE_DIX_CONFIG_H
+#include <dix-config.h>
+#endif
+
+#include "shrotpack.h"
diff --git a/xorg-server/miext/shadow/shrot8pack_90.c b/xorg-server/miext/shadow/shrot8pack_90.c
index fb2c1d011..73060cad1 100644
--- a/xorg-server/miext/shadow/shrot8pack_90.c
+++ b/xorg-server/miext/shadow/shrot8pack_90.c
@@ -1,31 +1,31 @@
-/*
- * Copyright © 2000 Keith Packard
- *
- * Permission to use, copy, modify, distribute, and sell this software and its
- * documentation for any purpose is hereby granted without fee, provided that
- * the above copyright notice appear in all copies and that both that
- * copyright notice and this permission notice appear in supporting
- * documentation, and that the name of Keith Packard not be used in
- * advertising or publicity pertaining to distribution of the software without
- * specific, written prior permission. Keith Packard makes no
- * representations about the suitability of this software for any purpose. It
- * is provided "as is" without express or implied warranty.
- *
- * KEITH PACKARD DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
- * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
- * EVENT SHALL KEITH PACKARD BE LIABLE FOR ANY SPECIAL, INDIRECT OR
- * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
- * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
- * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
- * PERFORMANCE OF THIS SOFTWARE.
- */
-
-#define FUNC shadowUpdateRotate8_90
-#define Data CARD8
-#define ROTATE 90
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include "shrotpack.h"
+/*
+ * Copyright © 2000 Keith Packard
+ *
+ * Permission to use, copy, modify, distribute, and sell this software and its
+ * documentation for any purpose is hereby granted without fee, provided that
+ * the above copyright notice appear in all copies and that both that
+ * copyright notice and this permission notice appear in supporting
+ * documentation, and that the name of Keith Packard not be used in
+ * advertising or publicity pertaining to distribution of the software without
+ * specific, written prior permission. Keith Packard makes no
+ * representations about the suitability of this software for any purpose. It
+ * is provided "as is" without express or implied warranty.
+ *
+ * KEITH PACKARD DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
+ * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
+ * EVENT SHALL KEITH PACKARD BE LIABLE FOR ANY SPECIAL, INDIRECT OR
+ * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
+ * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
+ * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+ * PERFORMANCE OF THIS SOFTWARE.
+ */
+
+#define FUNC shadowUpdateRotate8_90
+#define Data CARD8
+#define ROTATE 90
+
+#ifdef HAVE_DIX_CONFIG_H
+#include <dix-config.h>
+#endif
+
+#include "shrotpack.h"
diff --git a/xorg-server/miext/sync/Makefile.am b/xorg-server/miext/sync/Makefile.am
index 2bfe44da1..36b2816d7 100644
--- a/xorg-server/miext/sync/Makefile.am
+++ b/xorg-server/miext/sync/Makefile.am
@@ -1,14 +1,14 @@
-noinst_LTLIBRARIES = libsync.la
-
-AM_CFLAGS = $(DIX_CFLAGS)
-
-INCLUDES =
-
-if XORG
-sdk_HEADERS = misync.h misyncstr.h
-endif
-
-libsync_la_SOURCES = \
- misync.c \
- misync.h \
- misyncstr.h
+noinst_LTLIBRARIES = libsync.la
+
+AM_CFLAGS = $(DIX_CFLAGS)
+
+INCLUDES =
+
+if XORG
+sdk_HEADERS = misync.h misyncstr.h
+endif
+
+libsync_la_SOURCES = \
+ misync.c \
+ misync.h \
+ misyncstr.h
diff --git a/xorg-server/record/Makefile.am b/xorg-server/record/Makefile.am
index fe0f5b289..2a64f3189 100644
--- a/xorg-server/record/Makefile.am
+++ b/xorg-server/record/Makefile.am
@@ -1,7 +1,7 @@
-noinst_LTLIBRARIES = librecord.la
-
-AM_CFLAGS = $(DIX_CFLAGS)
-
-librecord_la_SOURCES = record.c set.c
-
-EXTRA_DIST = set.h
+noinst_LTLIBRARIES = librecord.la
+
+AM_CFLAGS = $(DIX_CFLAGS)
+
+librecord_la_SOURCES = record.c set.c
+
+EXTRA_DIST = set.h
diff --git a/xorg-server/render/Makefile.am b/xorg-server/render/Makefile.am
index b060c07eb..d02028b3b 100644
--- a/xorg-server/render/Makefile.am
+++ b/xorg-server/render/Makefile.am
@@ -1,20 +1,20 @@
-noinst_LTLIBRARIES = librender.la
-
-AM_CFLAGS = $(DIX_CFLAGS)
-
-librender_la_SOURCES = \
- animcur.c \
- filter.c \
- glyph.c \
- matrix.c \
- miindex.c \
- mipict.c \
- mirect.c \
- mitrap.c \
- mitri.c \
- picture.c \
- render.c
-
-if XORG
-sdk_HEADERS = picture.h mipict.h glyphstr.h picturestr.h
-endif
+noinst_LTLIBRARIES = librender.la
+
+AM_CFLAGS = $(DIX_CFLAGS)
+
+librender_la_SOURCES = \
+ animcur.c \
+ filter.c \
+ glyph.c \
+ matrix.c \
+ miindex.c \
+ mipict.c \
+ mirect.c \
+ mitrap.c \
+ mitri.c \
+ picture.c \
+ render.c
+
+if XORG
+sdk_HEADERS = picture.h mipict.h glyphstr.h picturestr.h
+endif
diff --git a/xorg-server/test/README b/xorg-server/test/README
index a028fe208..5759a72fd 100644
--- a/xorg-server/test/README
+++ b/xorg-server/test/README
@@ -1,36 +1,36 @@
- X server test suite
-
-This suite contains a set of tests to verify the behaviour of functions used
-internally to the server. This test suite is based on glib's testing
-framework [1].
-
-= How it works =
-Through some automake abuse, we link the test programs with the same static
-libraries as the Xorg binary. The test suites can then call various functions
-and verify their behaviour - without the need to start the server or connect
-clients.
-
-This testing only works for functions that do not rely on a particular state
-of the X server. Unless the test suite replicates the expected state, which
-may be difficult.
-
-= How to run the tests =
-Run "make check" the test directory. This will compile the tests and execute
-them in the order specified in the TESTS variable in test/Makefile.am.
-
-Each set of tests related to a subsystem are available as a binary that can be
-executed directly. For example, run "xkb" to perform some xkb-related tests.
-
-== Adding a new test ==
-When adding a new test, ensure that you add a short description of what the
-test does and what the expected outcome is. If the test reproduces a
-particular bug, using g_test_bug().
-
-== Misc ==
-
-The programs "gtester" and "gtester-report" may be used to generate XML/HTML
-log files of tests succeeded and failed.
-
----------
-
-[1] http://library.gnome.org/devel/glib/stable/glib-Testing.html
+ X server test suite
+
+This suite contains a set of tests to verify the behaviour of functions used
+internally to the server. This test suite is based on glib's testing
+framework [1].
+
+= How it works =
+Through some automake abuse, we link the test programs with the same static
+libraries as the Xorg binary. The test suites can then call various functions
+and verify their behaviour - without the need to start the server or connect
+clients.
+
+This testing only works for functions that do not rely on a particular state
+of the X server. Unless the test suite replicates the expected state, which
+may be difficult.
+
+= How to run the tests =
+Run "make check" the test directory. This will compile the tests and execute
+them in the order specified in the TESTS variable in test/Makefile.am.
+
+Each set of tests related to a subsystem are available as a binary that can be
+executed directly. For example, run "xkb" to perform some xkb-related tests.
+
+== Adding a new test ==
+When adding a new test, ensure that you add a short description of what the
+test does and what the expected outcome is. If the test reproduces a
+particular bug, using g_test_bug().
+
+== Misc ==
+
+The programs "gtester" and "gtester-report" may be used to generate XML/HTML
+log files of tests succeeded and failed.
+
+---------
+
+[1] http://library.gnome.org/devel/glib/stable/glib-Testing.html
diff --git a/xorg-server/xfixes/Makefile.am b/xorg-server/xfixes/Makefile.am
index 7f4d4d285..a8425e8ea 100644
--- a/xorg-server/xfixes/Makefile.am
+++ b/xorg-server/xfixes/Makefile.am
@@ -1,16 +1,16 @@
-noinst_LTLIBRARIES = libxfixes.la
-
-AM_CFLAGS = $(DIX_CFLAGS)
-
-if XORG
-sdk_HEADERS = xfixes.h
-endif
-
-libxfixes_la_SOURCES = \
- cursor.c \
- region.c \
- saveset.c \
- select.c \
- xfixes.c \
- xfixes.h \
- xfixesint.h
+noinst_LTLIBRARIES = libxfixes.la
+
+AM_CFLAGS = $(DIX_CFLAGS)
+
+if XORG
+sdk_HEADERS = xfixes.h
+endif
+
+libxfixes_la_SOURCES = \
+ cursor.c \
+ region.c \
+ saveset.c \
+ select.c \
+ xfixes.c \
+ xfixes.h \
+ xfixesint.h
diff --git a/xorg-server/xkb/Makefile.am b/xorg-server/xkb/Makefile.am
index b05693288..fb3ccbf6f 100644
--- a/xorg-server/xkb/Makefile.am
+++ b/xorg-server/xkb/Makefile.am
@@ -1,43 +1,43 @@
-noinst_LTLIBRARIES = libxkb.la libxkbstubs.la
-
-AM_CFLAGS = $(DIX_CFLAGS)
-
-DDX_SRCS = \
- ddxBeep.c \
- ddxCtrls.c \
- ddxLEDs.c \
- ddxLoad.c \
- ddxList.c
-
-DIX_SRCS = \
- xkb.c \
- xkbUtils.c \
- xkbEvents.c \
- xkbAccessX.c \
- xkbSwap.c \
- xkbLEDs.c \
- xkbInit.c \
- xkbActions.c \
- xkbPrKeyEv.c
-
-# this should be replaced by a common library or something, ideally -d
-XKBFILE_SRCS = \
- maprules.c \
- xkmread.c \
- xkbtext.c \
- xkbfmisc.c \
- xkbout.c
-
-X11_SRCS = \
- XKBMisc.c \
- XKBAlloc.c \
- XKBGAlloc.c \
- XKBMAlloc.c
-
-libxkb_la_SOURCES = $(DDX_SRCS) $(DIX_SRCS) $(XKBFILE_SRCS) $(X11_SRCS)
-libxkbstubs_la_SOURCES = ddxVT.c ddxPrivate.c ddxKillSrv.c
-
-EXTRA_DIST = xkbDflts.h xkbgeom.h xkb.h
-
-xkbcompileddir = $(XKB_COMPILED_DIR)
-dist_xkbcompiled_DATA = README.compiled
+noinst_LTLIBRARIES = libxkb.la libxkbstubs.la
+
+AM_CFLAGS = $(DIX_CFLAGS)
+
+DDX_SRCS = \
+ ddxBeep.c \
+ ddxCtrls.c \
+ ddxLEDs.c \
+ ddxLoad.c \
+ ddxList.c
+
+DIX_SRCS = \
+ xkb.c \
+ xkbUtils.c \
+ xkbEvents.c \
+ xkbAccessX.c \
+ xkbSwap.c \
+ xkbLEDs.c \
+ xkbInit.c \
+ xkbActions.c \
+ xkbPrKeyEv.c
+
+# this should be replaced by a common library or something, ideally -d
+XKBFILE_SRCS = \
+ maprules.c \
+ xkmread.c \
+ xkbtext.c \
+ xkbfmisc.c \
+ xkbout.c
+
+X11_SRCS = \
+ XKBMisc.c \
+ XKBAlloc.c \
+ XKBGAlloc.c \
+ XKBMAlloc.c
+
+libxkb_la_SOURCES = $(DDX_SRCS) $(DIX_SRCS) $(XKBFILE_SRCS) $(X11_SRCS)
+libxkbstubs_la_SOURCES = ddxVT.c ddxPrivate.c ddxKillSrv.c
+
+EXTRA_DIST = xkbDflts.h xkbgeom.h xkb.h
+
+xkbcompileddir = $(XKB_COMPILED_DIR)
+dist_xkbcompiled_DATA = README.compiled
diff --git a/xorg-server/xkb/README.compiled b/xorg-server/xkb/README.compiled
index 66df26234..71caa2f63 100644
--- a/xorg-server/xkb/README.compiled
+++ b/xorg-server/xkb/README.compiled
@@ -1,13 +1,13 @@
-
-The X server uses this directory to store the compiled version of the
-current keymap and/or any scratch keymaps used by clients. The X server
-or some other tool might destroy or replace the files in this directory,
-so it is not a safe place to store compiled keymaps for long periods of
-time. The default keymap for any server is usually stored in:
- X<num>-default.xkm
-where <num> is the display number of the server in question, which makes
-it possible for several servers *on the same host* to share the same
-directory.
-
-Unless the X server is modified, sharing this directory between servers on
-different hosts could cause problems.
+
+The X server uses this directory to store the compiled version of the
+current keymap and/or any scratch keymaps used by clients. The X server
+or some other tool might destroy or replace the files in this directory,
+so it is not a safe place to store compiled keymaps for long periods of
+time. The default keymap for any server is usually stored in:
+ X<num>-default.xkm
+where <num> is the display number of the server in question, which makes
+it possible for several servers *on the same host* to share the same
+directory.
+
+Unless the X server is modified, sharing this directory between servers on
+different hosts could cause problems.
diff --git a/xorg-server/xkb/XKM_file_format.txt b/xorg-server/xkb/XKM_file_format.txt
index 865973dc1..0ba28ee8c 100644
--- a/xorg-server/xkb/XKM_file_format.txt
+++ b/xorg-server/xkb/XKM_file_format.txt
@@ -1,684 +1,684 @@
- XKM File Format Description
- Version 15
-
-1. Introduction
-
-The XKM file format is the exchange format for XKB keyboard descriptions
-between the server and xkbcomp. Usually, the server forks off xkbcomp,
-xkbcomp compiles the XKM format from the given parameters.
-The resulting XKM file is put into a directory readable by the server and
-then parsed.
-
-The XKM format is little more than a binary dump of various XKB-specific
-structures and hence tied to the ABI of the server.
-
- â§â§â§â§â§â§â§â§â§â§â§
-
-1.1 About this file format description
-
-This description was produced by analyzing the XKM parsing code. Parts of
-the file description present in the original format specification may be
-missing. This description thus cannot be a reference document for XKM
-implementations.
-
-No description of the meaning of the various fields is given here. Refer to
-the XKB protocol specification for more details.
- â§â§â§â§â§â§â§â§â§â§â§
-
-2. Notations used in this document
-
-Notation for structures:
-
-┌───
- Name of struct
- name of field: type or fixed value of field
- name of field: type or fixed value of field
-└───
-
-Data types are identical to those used in the X Protocol specification
-except where noted otherwise. Structs specific to XKM are prefixed with XKM,
-defines specific to the XKB protocol specification are prefixed with Xkb and
-their value is equivalent to that in the protocol specification.
-
-Multiple instances of a given type are denoted in the following form:
- name of field: LISTofFIELDTYPE
-
-Length specifiers for such fields are usually prefixed with num_. For
-example, a struct containing a num_foo of 8 and a 'foo' field contains 8
-structures of type 'foo'.
-
-Variable length padding is specified as pad(x), where x is the length of the
-data to be padded out to a multiple of 4 bytes. For example, given an x of
-10, pad(x) would be the remaining 2 bytes to pad the whole struct to 12
-bytes.
-
-A special notation is a variable content struct. In this case, the contents
-of the struct depend on the value of one or more specific fields.
-┌───
- Name of struct
- field: type or fixed value of field
- field: type or fixed value of field
- ───
- field ⇒ value 1
- ⇒
- specific field: type
- specific field: type
- ───
- field ⇒ value 2
- ⇒
- specific field: type
- specific field: type
-└───
-This notation denotes that if field is of value 1, this struct contains the
-specific fields listed underneath value 1.
-
- â§â§â§â§â§â§â§â§â§â§â§
-
-3. XKM Format
-
-The XKM format is a binary format with structs usually being padded to a
-multiple of 4 bytes. No provisions for endianess are provided, the parser is
-left to guess the endianess of the XKM file.
-
- â§â§â§â§â§â§â§â§â§â§â§
-3.1 Common data types
-
-┌───
- XKMCountedString
- count: CARD16
- string: count * CHAR
- pad: pad(count + 2)
-└───
-
-XKMCountedString is used for user-readable identifiers. Prime example are
-the level names and the section names ("complete", "evdev(inet)", etc.)
-
-┌───
- XKMGroupBits: CARD8
- group1 0x1
- group2 0x2
- group3 0x4
- group4 0x8
-└───
-
- â§â§â§â§â§â§â§â§â§â§â§
-
-3.2 Header and Table of Contents
-
-┌───
- XKMHeader
- version: CARD8
- identifier1: 'm'
- identifier2: 'k'
- idenfifier3: 'x'
-└───
-
-The XKM file format has a 4 byte header identifying the file and the XKM
-version. The header is followed by the table of contents indicating the
-sections present in this file.
-
-┌───
- XKMFileInfo
- type: CARD8
- min_keycode: CARD8
- max_keycode: CARD8
- num_sectioninfo: CARD8
- present: CARD16
- pad: CARD16
- sectioninfo: LISTofXKMSectionInfo
-└───
-
-min_keycode and max_keycode specify the keycode range for this keyboard
-descriptions. The core protocol requires min_keycode always be equal to or
-greater than 8.
-
-┌───
- XKMSectionInfo
- type: CARD16
- XkmTypesIndex 0
- XkmCompatMapIndex 1
- XkmSymbolsIndex 2
- XkmIndicatorsIndex 3
- XkmKeyNamesIndex 4
- XkmGeometryIndex 5
- XkmVirtualModsIndex 6
- format: CARD16
- size: CARD16
- offset: CARD16
-└───
-
-Describes the section found in a chunk of a file. This struct is found
-_twice_ in the file per section, once as part of the XKMFileInfo, once at
-the beginning of the actual section (see offset).
-The type specifies the type of the section, the section is to be parsed
-according to this type.
-Size and offset specify the size in bytes and the offset into the file in
-bytes, respectively.
-
-3.3 Sections
-
-Each section resides at the offset specified in the XKMFileInfo sectioninfo.
-
- â§â§â§â§â§â§â§â§â§â§â§
-
-3.3.1 XKMTypes
-
-An XKMTypes section describes the key types defined in a layout. Roughly
-speaking, a key type defines how many levels a given key has and which
-modifiers change to a particular level.
-
-┌───
- XKMTypesSection
- section_info: XKMSectionInfo
- name: XKMCountedString
- num_types: CARD16
- pad: CARD16
- types: LISTofXKMKeyType
-└───
-
-┌───
- XKMKeyType
- real_mods: CARD8
- num_levels: CARD8
- virt_mods: CARD16
- num_map_entries: CARD8
- num_level_names: CARD8
- perserve: CARD8
- pad: CARD8
- map_entries: LISTofXKMKTMapEntry
- name: XKMCountedString
- mods: LISTofXKMModsDesc
- level_names: LISXTofXKMCountedString
-└───
-
-The num_map_entries specifies the number of structs in both map_entries and mods. mods is only present if preserve is TRUE.
-
-┌───
- XKMKTMapEntry
- level: CARD8
- real_mods: CARD8
- virt_mods: CARD16
-└───
-
-┌───
- XKMModsDesc
- real_mods: CARD8
- pad: CARD8
- virt_mods: CARD16
-└───
-
- â§â§â§â§â§â§â§â§â§â§â§
-3.3.2 XKMCompatMap
-
-An XKMCompatMap section describes the actions a keyboard may trigger. This
-ranges from the TerminateServer action to simple modifier bits.
-
-┌───
- XKMCompatMap
- section_info: XKMSectionInfo
- name: XKMCountedString
- num_si: CARD16
- group_mask: XKMGroupBits
- pad: CARD8
- si: LISTofXKMSymInterpreterDesc
- groups: LISTofXKMModsDesc
-└───
-
-One XKMModsDesc is present for each bit set in group_mask.
-
-┌───
- XKMSymInterpretDesc
- sym: CARD32
- mods: CARD8
- match: CARD8
- virtual_mod: CARD8
- flags: CARD8
- action_type: CARD8
- action_data: XKMActionData
-└───
-
-Where the action is 7 bytes of CARD8 whose content is determined by
-action_type.
-
-┌───
- XKMActionData:
- pad0: CARD8
- pad1: CARD16
- pad2: CARD32
- ───
- action_type ⇒ XkbSA_SetMods ||
- action_type ⇒ XkbSA_LatchMods ||
- action_type ⇒ XkbSA_LockMods
- ⇒
- flags: CARD8
- mask: CARD8
- real_mods: CARD8
- vmods1: CARD8
- vmods2: CARD8
- pad: CARD16
- ───
- action_type ⇒ XkbSA_SetGroup ||
- action_type ⇒ XkbSA_LatchGroup ||
- action_type ⇒ XkbSA_LockGroup
- ⇒
- flags: CARD8
- group_XXX: CARD8
- pad0: CARD8
- pad1: CARD32
- ───
- action_type ⇒ XkbSA_MovePtr
- ⇒
- flags: CARD8
- high_XXX: CARD8
- low_XXX: CARD8
- high_YYY: CARD8
- low_YYY: CARD8
- pad: CARD16
- ───
- action_type ⇒ XkbSA_PtrBtn ||
- action_type ⇒ XkbSA_LockPtrBtn
- ⇒
- flags: CARD8
- count: CARD8
- button: CARD8
- pad: CARD32
- ───
- action_type ⇒ XkbSA_DeviceBtn ||
- action_type ⇒ XkbSA_LockLockPtrBtn
- ⇒
- flags: CARD8
- count: CARD8
- button: CARD8
- device: CARD8
- pad0: CARD8
- pad1: CARD16
- ───
- action_type ⇒ XkbSA_SetPtrDflt
- ⇒
- flags: CARD8
- affect: CARD8
- valueXXX: CARD8
- pad0: CARD32
- ───
- action_type ⇒ XkbSA_ISOLock
- ⇒
- flags: CARD8
- mask: CARD8
- real_mods: CARD8
- group_XXX: CARD8
- affect: CARD8
- vmods1: CARD8
- vmods1: CARD8
- ───
- action_type ⇒ XkbSA_SwitchScreen
- ⇒
- flags: CARD8
- screenXXX: CARD8
- pad0: CARD8
- pad1: CARD32
- ───
- action_type ⇒ XkbSA_SetControls ||
- action_type ⇒ XkbSA_LockControls
- ⇒
- flags: CARD8
- ctrls3: CARD8
- ctrls2: CARD8
- ctrls1: CARD8
- ctrls0: CARD8
- pad: CARD16
- ───
- action_type ⇒ XkbSA_RedirectKey
- ⇒
- new_key: CARD8
- mods_mask: CARD8
- mods: CARD8
- vmods_mask0: CARD8
- vmods_mask1: CARD8
- vmods0: CARD8
- vmods1: CARD8
- ───
- action_type ⇒ XkbSA_DeviceValuator
- ⇒
- device: CARD8
- v1_what: CARD8
- v1_idx: CARD8
- v1_value: CARD8
- v2_what: CARD8
- v2_idx: CARD8
- v2_value: CARD8
- pad: CARD8
- ───
- action_type ⇒ XkbSA_XFree86Private ||
- action_type ⇒ XkbSA_Terminate
- ⇒
- pad0: CARD8
- pad1: CARD16
- pad2: CARD32
- ───
- action_type ⇒ XkbSA_ActionMessage
- ⇒
- press_msg: BOOL
- release_msg: BOOL
- gen_event: BOOL
- message: 4 * CHAR
-└───
-
-Note: XkbSA_ActionMessage is currently unsupported and the contents are
-ignored.
-
- â§â§â§â§â§â§â§â§â§â§â§
-3.3.3 XkmSymbols
-
-The symbols in a keymap define the actual keysyms each key may produce.
-
-┌───
- XKMSymbols
- section_info: XKMSectionInfo
- name: XKMCountedString
- min_keycode: CARD8
- max_keycode: CARD8
- group_names_mask: XKMGroupBits
- num_vmod_maps: CARD8
- group_names: LISTofXKMCountedString
- keysyms: XKMKeysymMapDesc
- vmod_maps: XKMVModMapDesc
-└───
-One group_name is present for each bit set in group_names_mask.
-The number of keysyms present is max_keycode - min_keycode + 1.
-
-┌───
- XKMKeysymMapDesc
- width: CARD8
- num_groups: CARD8
- modifier_map: CARD8
- flags: CARD8
- names: LISTofXKMCountedString
- syms: LISTofCARD32
- behavior: XKMBehaviorDesc
-└───
-
-Presence of names is conditional on the XkmKeyHasTypes flag. The number of
-strings is equal to the number of group bits in group_names_mask in the
-preceeding XKMSymbols section.
-The number of elements in syms is equal to width * num_groups.
-Presence of behavior is conditional on the XkmKeyHasBehavior flag.
-
-┌───
- XKMKeyBehaviorDesc
- type: CARD8
- data: CARD8
- pad: CARD16
-└───
-
-┌───
- XKMVModMapDesc
- key: CARD8
- pad: CARD8
- vmods: CARD16
-└───
-
- â§â§â§â§â§â§â§â§â§â§â§
-
-3.3.4 XKMIndicators
-
-┌───
- XKMIndicators
- section_info: XKMSectionInfo
- name: XKMCountedString
- num_indicators: CARD8
- pad0: CARD8
- pad1: CARD16
- indicators: LISTofXKMIndicatorMapDesc
-└───
-
-┌───
- XKMIndicatorMapDesc
- name: XKMCountedString
- indicator: CARD8
- flags: CARD8
- which_mods: CARD8
- real_mods: CARD8
- vmods: CARD16
- which_groups: CARD8
- groups: CARD8
- ctrls: CARD32
-└───
- â§â§â§â§â§â§â§â§â§â§â§
-
-3.3.5 XKMKeyNames
-
-┌───
- XKMKeyNames
- section_info: XKMSectionInfo
- name: XKMCountedString
- min_keycode: CARD8
- max_keycode: CARD8
- num_aliases: CARD8
- pad: CARD8
- keynames: LISTofXKMKeyname
- aliases: LISTofXKMKeyAlias
-└───
-
-keynames contains max_keycode - min_keycode + 1 entries.
-
-┌───
- XkmKeyname
- name: 4 * CHAR8
-└───
-
-┌───
- XkmKeyAlias
- real: XkmKeyname
- alias: XkmKeyname
-└───
-
- â§â§â§â§â§â§â§â§â§â§â§
-
-3.3.5 XKMGeometry
-
-┌───
- XKMGeometry
- section_info: XKMSectionInfo
- name: XKMCountedString
- width_mm: CARD16
- height_mm: CARD16
- base_color_ndx: CARD8
- label_color_ndx: CARD8
- num_properties: CARD16
- num_colors: CARD16
- num_shapes: CARD16
- num_sections: CARD16
- num_doodads: CARD16
- num_key_aliases: CARD16
- pad: CARD16
- label_font: XKMCountedString
- properties: LISTofXKMGeomProperty
- colors: LISTofXKMCountedString
- shapes: LISTofXKMGeomShape
- sections: LISTofXKMGeomSection
- doodads: LISTofXKMGeomDoodad
- key_aliases: LISTofXKMKeyAlias
-└───
-
-┌───
- XKMGeomProperty
- name: XKMCountedString
- value: XKMCountedString
-
-└───
-
-┌───
- XKMGeomShape
- name: XKMCountedString
- num_outlines: CARD8
- primary_idx: CARD8
- approx_idx: CARD8
- pad: CARD8
- outlines: LISTofXKMOutlineDesc
-└───
-
-┌───
- XKMOutlineDesc
- num_points: CARD8
- corner_radius: CARD8
- pad: CARD16
- points: LISTofXKMPointDesc
-└───
-
-┌───
- XKMPointDesc
- x: INT16
- y: INT16
-└───
-
-┌───
- XKMGeomSection
- name: XKMCountedString
- top: INT16
- left: INT16
- width: CARD16
- height: CARD16
- angle: INT16
- priority: CARD8
- num_rows: CARD8
- num_doodads: CARD8
- num_overlays: CARD8
- pad: CARD16
- rows: LISTofXKMRowDesc
- doodads: LISTofXKMGeomDoodad
- overlays: LISTofXKMGeomOverlay
-└───
-
-┌───
- XKMRowDesc
- top: INT16
- left: INT16
- num_keys: CARD8
- vertical: BOOL
- pad: CARD16
- keys: XKMKeyDesc
-└───
-
-┌───
- XKMKeyDesc
- name: XKMKeyname
- gap: INT16
- shape_idx: CARD8
- color_idx: CARD8
-└───
-
-┌───
- XKMGeomDoodad
- name: XKMCountedString
- type: CARD8
- priority: CARD8
- top: INT16
- left: INT16
- pad1: CARD16
- pad2: CARD32
- pad3: CARD32
- ───
- type ⇒ XkbOutlineDoodad ||
- type ⇒ XkbSolideDoodad
- ⇒
- type: CARD8
- priority: CARD8
- top: INT16
- left: INT16
- angle: INT16
- color_idx: CARD8
- shape_idx: CARD8
- pad0: CARD16
- pad1: CARD32
- ───
- type ⇒ XkbTextDoodad
- ⇒
- type: CARD8
- priority: CARD8
- top: INT16
- left: INT16
- angle: INT16
- width: CARD16
- height: CARD16
- color_idx: CARD8
- pad0: CARD8
- pad1: CARD16
- text: XKMCountedString
- font: XKMCountedString
- ───
- type ⇒ XkbIndicatorDoodad
- ⇒
- type: CARD8
- priority: CARD8
- top: INT16
- left: INT16
- shape_idx: CARD8
- on_color_idx: CARD8
- off_color_idx: CARD8
- pad0: CARD8
- pad1: CARD16
- pad2: CARD32
- ───
- type ⇒ XkbLogoDoodad
- ⇒
- type: CARD8
- priority: CARD8
- top: INT16
- left: INT16
- angle: INT16
- color_idx: CARD8
- shape_idx: CARD8
- pad0: CARD16
- pad1: CARD32
- logo_name: XKMCountedString
-└───
-
-WARNING: XKMGeomDoodad has variable length depending on the type.
-NOTE: The current server implementation does not use all fields of all
-structures.
-
-┌───
- XKMOverlayDesc
- name: XKMCountedString
- num_rows: CARD8
- pad0: CARD8
- pad1: CARD16
- rows: LISTofXKMOverlayRowDesc
-└───
-
-┌───
- XKMOverlayRowDesc
- name: XKMCountedString
- row_under: CARD8
- num_keys: CARD8
- pad: CARD16
- keys: LISTofXKMOverlayKeyDesc
-└───
-
-┌───
- XKMOverlayKeyDesc
- over: XKMKeyname
- under: XKMKeyname
-└───
-
- â§â§â§â§â§â§â§â§â§â§â§
-
-3.3.6 XKMVirtualMods
-
-┌───
- XKMOverlayRowDesc
- section_info: XKMSectionInfo
- name: XKMCountedString
- bound_mask: SETofVMODBITS
- named_mask: SETofVMODBITS
- vmods: LISTofCARD8
- pad: pad(vmods)
- names: LISTofXKMCountedString
-└───
-
- VMODBITS: CARD16
-
-Number of elements in vmods is equal to the number of bits set in
-bound_mask. The padding completes vmods to a multiple of 4 byte units.
-Number of elements in names is equal to the number of bits set in
-named_mask.
+ XKM File Format Description
+ Version 15
+
+1. Introduction
+
+The XKM file format is the exchange format for XKB keyboard descriptions
+between the server and xkbcomp. Usually, the server forks off xkbcomp,
+xkbcomp compiles the XKM format from the given parameters.
+The resulting XKM file is put into a directory readable by the server and
+then parsed.
+
+The XKM format is little more than a binary dump of various XKB-specific
+structures and hence tied to the ABI of the server.
+
+ â§â§â§â§â§â§â§â§â§â§â§
+
+1.1 About this file format description
+
+This description was produced by analyzing the XKM parsing code. Parts of
+the file description present in the original format specification may be
+missing. This description thus cannot be a reference document for XKM
+implementations.
+
+No description of the meaning of the various fields is given here. Refer to
+the XKB protocol specification for more details.
+ â§â§â§â§â§â§â§â§â§â§â§
+
+2. Notations used in this document
+
+Notation for structures:
+
+┌───
+ Name of struct
+ name of field: type or fixed value of field
+ name of field: type or fixed value of field
+└───
+
+Data types are identical to those used in the X Protocol specification
+except where noted otherwise. Structs specific to XKM are prefixed with XKM,
+defines specific to the XKB protocol specification are prefixed with Xkb and
+their value is equivalent to that in the protocol specification.
+
+Multiple instances of a given type are denoted in the following form:
+ name of field: LISTofFIELDTYPE
+
+Length specifiers for such fields are usually prefixed with num_. For
+example, a struct containing a num_foo of 8 and a 'foo' field contains 8
+structures of type 'foo'.
+
+Variable length padding is specified as pad(x), where x is the length of the
+data to be padded out to a multiple of 4 bytes. For example, given an x of
+10, pad(x) would be the remaining 2 bytes to pad the whole struct to 12
+bytes.
+
+A special notation is a variable content struct. In this case, the contents
+of the struct depend on the value of one or more specific fields.
+┌───
+ Name of struct
+ field: type or fixed value of field
+ field: type or fixed value of field
+ ───
+ field ⇒ value 1
+ ⇒
+ specific field: type
+ specific field: type
+ ───
+ field ⇒ value 2
+ ⇒
+ specific field: type
+ specific field: type
+└───
+This notation denotes that if field is of value 1, this struct contains the
+specific fields listed underneath value 1.
+
+ â§â§â§â§â§â§â§â§â§â§â§
+
+3. XKM Format
+
+The XKM format is a binary format with structs usually being padded to a
+multiple of 4 bytes. No provisions for endianess are provided, the parser is
+left to guess the endianess of the XKM file.
+
+ â§â§â§â§â§â§â§â§â§â§â§
+3.1 Common data types
+
+┌───
+ XKMCountedString
+ count: CARD16
+ string: count * CHAR
+ pad: pad(count + 2)
+└───
+
+XKMCountedString is used for user-readable identifiers. Prime example are
+the level names and the section names ("complete", "evdev(inet)", etc.)
+
+┌───
+ XKMGroupBits: CARD8
+ group1 0x1
+ group2 0x2
+ group3 0x4
+ group4 0x8
+└───
+
+ â§â§â§â§â§â§â§â§â§â§â§
+
+3.2 Header and Table of Contents
+
+┌───
+ XKMHeader
+ version: CARD8
+ identifier1: 'm'
+ identifier2: 'k'
+ idenfifier3: 'x'
+└───
+
+The XKM file format has a 4 byte header identifying the file and the XKM
+version. The header is followed by the table of contents indicating the
+sections present in this file.
+
+┌───
+ XKMFileInfo
+ type: CARD8
+ min_keycode: CARD8
+ max_keycode: CARD8
+ num_sectioninfo: CARD8
+ present: CARD16
+ pad: CARD16
+ sectioninfo: LISTofXKMSectionInfo
+└───
+
+min_keycode and max_keycode specify the keycode range for this keyboard
+descriptions. The core protocol requires min_keycode always be equal to or
+greater than 8.
+
+┌───
+ XKMSectionInfo
+ type: CARD16
+ XkmTypesIndex 0
+ XkmCompatMapIndex 1
+ XkmSymbolsIndex 2
+ XkmIndicatorsIndex 3
+ XkmKeyNamesIndex 4
+ XkmGeometryIndex 5
+ XkmVirtualModsIndex 6
+ format: CARD16
+ size: CARD16
+ offset: CARD16
+└───
+
+Describes the section found in a chunk of a file. This struct is found
+_twice_ in the file per section, once as part of the XKMFileInfo, once at
+the beginning of the actual section (see offset).
+The type specifies the type of the section, the section is to be parsed
+according to this type.
+Size and offset specify the size in bytes and the offset into the file in
+bytes, respectively.
+
+3.3 Sections
+
+Each section resides at the offset specified in the XKMFileInfo sectioninfo.
+
+ â§â§â§â§â§â§â§â§â§â§â§
+
+3.3.1 XKMTypes
+
+An XKMTypes section describes the key types defined in a layout. Roughly
+speaking, a key type defines how many levels a given key has and which
+modifiers change to a particular level.
+
+┌───
+ XKMTypesSection
+ section_info: XKMSectionInfo
+ name: XKMCountedString
+ num_types: CARD16
+ pad: CARD16
+ types: LISTofXKMKeyType
+└───
+
+┌───
+ XKMKeyType
+ real_mods: CARD8
+ num_levels: CARD8
+ virt_mods: CARD16
+ num_map_entries: CARD8
+ num_level_names: CARD8
+ perserve: CARD8
+ pad: CARD8
+ map_entries: LISTofXKMKTMapEntry
+ name: XKMCountedString
+ mods: LISTofXKMModsDesc
+ level_names: LISXTofXKMCountedString
+└───
+
+The num_map_entries specifies the number of structs in both map_entries and mods. mods is only present if preserve is TRUE.
+
+┌───
+ XKMKTMapEntry
+ level: CARD8
+ real_mods: CARD8
+ virt_mods: CARD16
+└───
+
+┌───
+ XKMModsDesc
+ real_mods: CARD8
+ pad: CARD8
+ virt_mods: CARD16
+└───
+
+ â§â§â§â§â§â§â§â§â§â§â§
+3.3.2 XKMCompatMap
+
+An XKMCompatMap section describes the actions a keyboard may trigger. This
+ranges from the TerminateServer action to simple modifier bits.
+
+┌───
+ XKMCompatMap
+ section_info: XKMSectionInfo
+ name: XKMCountedString
+ num_si: CARD16
+ group_mask: XKMGroupBits
+ pad: CARD8
+ si: LISTofXKMSymInterpreterDesc
+ groups: LISTofXKMModsDesc
+└───
+
+One XKMModsDesc is present for each bit set in group_mask.
+
+┌───
+ XKMSymInterpretDesc
+ sym: CARD32
+ mods: CARD8
+ match: CARD8
+ virtual_mod: CARD8
+ flags: CARD8
+ action_type: CARD8
+ action_data: XKMActionData
+└───
+
+Where the action is 7 bytes of CARD8 whose content is determined by
+action_type.
+
+┌───
+ XKMActionData:
+ pad0: CARD8
+ pad1: CARD16
+ pad2: CARD32
+ ───
+ action_type ⇒ XkbSA_SetMods ||
+ action_type ⇒ XkbSA_LatchMods ||
+ action_type ⇒ XkbSA_LockMods
+ ⇒
+ flags: CARD8
+ mask: CARD8
+ real_mods: CARD8
+ vmods1: CARD8
+ vmods2: CARD8
+ pad: CARD16
+ ───
+ action_type ⇒ XkbSA_SetGroup ||
+ action_type ⇒ XkbSA_LatchGroup ||
+ action_type ⇒ XkbSA_LockGroup
+ ⇒
+ flags: CARD8
+ group_XXX: CARD8
+ pad0: CARD8
+ pad1: CARD32
+ ───
+ action_type ⇒ XkbSA_MovePtr
+ ⇒
+ flags: CARD8
+ high_XXX: CARD8
+ low_XXX: CARD8
+ high_YYY: CARD8
+ low_YYY: CARD8
+ pad: CARD16
+ ───
+ action_type ⇒ XkbSA_PtrBtn ||
+ action_type ⇒ XkbSA_LockPtrBtn
+ ⇒
+ flags: CARD8
+ count: CARD8
+ button: CARD8
+ pad: CARD32
+ ───
+ action_type ⇒ XkbSA_DeviceBtn ||
+ action_type ⇒ XkbSA_LockLockPtrBtn
+ ⇒
+ flags: CARD8
+ count: CARD8
+ button: CARD8
+ device: CARD8
+ pad0: CARD8
+ pad1: CARD16
+ ───
+ action_type ⇒ XkbSA_SetPtrDflt
+ ⇒
+ flags: CARD8
+ affect: CARD8
+ valueXXX: CARD8
+ pad0: CARD32
+ ───
+ action_type ⇒ XkbSA_ISOLock
+ ⇒
+ flags: CARD8
+ mask: CARD8
+ real_mods: CARD8
+ group_XXX: CARD8
+ affect: CARD8
+ vmods1: CARD8
+ vmods1: CARD8
+ ───
+ action_type ⇒ XkbSA_SwitchScreen
+ ⇒
+ flags: CARD8
+ screenXXX: CARD8
+ pad0: CARD8
+ pad1: CARD32
+ ───
+ action_type ⇒ XkbSA_SetControls ||
+ action_type ⇒ XkbSA_LockControls
+ ⇒
+ flags: CARD8
+ ctrls3: CARD8
+ ctrls2: CARD8
+ ctrls1: CARD8
+ ctrls0: CARD8
+ pad: CARD16
+ ───
+ action_type ⇒ XkbSA_RedirectKey
+ ⇒
+ new_key: CARD8
+ mods_mask: CARD8
+ mods: CARD8
+ vmods_mask0: CARD8
+ vmods_mask1: CARD8
+ vmods0: CARD8
+ vmods1: CARD8
+ ───
+ action_type ⇒ XkbSA_DeviceValuator
+ ⇒
+ device: CARD8
+ v1_what: CARD8
+ v1_idx: CARD8
+ v1_value: CARD8
+ v2_what: CARD8
+ v2_idx: CARD8
+ v2_value: CARD8
+ pad: CARD8
+ ───
+ action_type ⇒ XkbSA_XFree86Private ||
+ action_type ⇒ XkbSA_Terminate
+ ⇒
+ pad0: CARD8
+ pad1: CARD16
+ pad2: CARD32
+ ───
+ action_type ⇒ XkbSA_ActionMessage
+ ⇒
+ press_msg: BOOL
+ release_msg: BOOL
+ gen_event: BOOL
+ message: 4 * CHAR
+└───
+
+Note: XkbSA_ActionMessage is currently unsupported and the contents are
+ignored.
+
+ â§â§â§â§â§â§â§â§â§â§â§
+3.3.3 XkmSymbols
+
+The symbols in a keymap define the actual keysyms each key may produce.
+
+┌───
+ XKMSymbols
+ section_info: XKMSectionInfo
+ name: XKMCountedString
+ min_keycode: CARD8
+ max_keycode: CARD8
+ group_names_mask: XKMGroupBits
+ num_vmod_maps: CARD8
+ group_names: LISTofXKMCountedString
+ keysyms: XKMKeysymMapDesc
+ vmod_maps: XKMVModMapDesc
+└───
+One group_name is present for each bit set in group_names_mask.
+The number of keysyms present is max_keycode - min_keycode + 1.
+
+┌───
+ XKMKeysymMapDesc
+ width: CARD8
+ num_groups: CARD8
+ modifier_map: CARD8
+ flags: CARD8
+ names: LISTofXKMCountedString
+ syms: LISTofCARD32
+ behavior: XKMBehaviorDesc
+└───
+
+Presence of names is conditional on the XkmKeyHasTypes flag. The number of
+strings is equal to the number of group bits in group_names_mask in the
+preceeding XKMSymbols section.
+The number of elements in syms is equal to width * num_groups.
+Presence of behavior is conditional on the XkmKeyHasBehavior flag.
+
+┌───
+ XKMKeyBehaviorDesc
+ type: CARD8
+ data: CARD8
+ pad: CARD16
+└───
+
+┌───
+ XKMVModMapDesc
+ key: CARD8
+ pad: CARD8
+ vmods: CARD16
+└───
+
+ â§â§â§â§â§â§â§â§â§â§â§
+
+3.3.4 XKMIndicators
+
+┌───
+ XKMIndicators
+ section_info: XKMSectionInfo
+ name: XKMCountedString
+ num_indicators: CARD8
+ pad0: CARD8
+ pad1: CARD16
+ indicators: LISTofXKMIndicatorMapDesc
+└───
+
+┌───
+ XKMIndicatorMapDesc
+ name: XKMCountedString
+ indicator: CARD8
+ flags: CARD8
+ which_mods: CARD8
+ real_mods: CARD8
+ vmods: CARD16
+ which_groups: CARD8
+ groups: CARD8
+ ctrls: CARD32
+└───
+ â§â§â§â§â§â§â§â§â§â§â§
+
+3.3.5 XKMKeyNames
+
+┌───
+ XKMKeyNames
+ section_info: XKMSectionInfo
+ name: XKMCountedString
+ min_keycode: CARD8
+ max_keycode: CARD8
+ num_aliases: CARD8
+ pad: CARD8
+ keynames: LISTofXKMKeyname
+ aliases: LISTofXKMKeyAlias
+└───
+
+keynames contains max_keycode - min_keycode + 1 entries.
+
+┌───
+ XkmKeyname
+ name: 4 * CHAR8
+└───
+
+┌───
+ XkmKeyAlias
+ real: XkmKeyname
+ alias: XkmKeyname
+└───
+
+ â§â§â§â§â§â§â§â§â§â§â§
+
+3.3.5 XKMGeometry
+
+┌───
+ XKMGeometry
+ section_info: XKMSectionInfo
+ name: XKMCountedString
+ width_mm: CARD16
+ height_mm: CARD16
+ base_color_ndx: CARD8
+ label_color_ndx: CARD8
+ num_properties: CARD16
+ num_colors: CARD16
+ num_shapes: CARD16
+ num_sections: CARD16
+ num_doodads: CARD16
+ num_key_aliases: CARD16
+ pad: CARD16
+ label_font: XKMCountedString
+ properties: LISTofXKMGeomProperty
+ colors: LISTofXKMCountedString
+ shapes: LISTofXKMGeomShape
+ sections: LISTofXKMGeomSection
+ doodads: LISTofXKMGeomDoodad
+ key_aliases: LISTofXKMKeyAlias
+└───
+
+┌───
+ XKMGeomProperty
+ name: XKMCountedString
+ value: XKMCountedString
+
+└───
+
+┌───
+ XKMGeomShape
+ name: XKMCountedString
+ num_outlines: CARD8
+ primary_idx: CARD8
+ approx_idx: CARD8
+ pad: CARD8
+ outlines: LISTofXKMOutlineDesc
+└───
+
+┌───
+ XKMOutlineDesc
+ num_points: CARD8
+ corner_radius: CARD8
+ pad: CARD16
+ points: LISTofXKMPointDesc
+└───
+
+┌───
+ XKMPointDesc
+ x: INT16
+ y: INT16
+└───
+
+┌───
+ XKMGeomSection
+ name: XKMCountedString
+ top: INT16
+ left: INT16
+ width: CARD16
+ height: CARD16
+ angle: INT16
+ priority: CARD8
+ num_rows: CARD8
+ num_doodads: CARD8
+ num_overlays: CARD8
+ pad: CARD16
+ rows: LISTofXKMRowDesc
+ doodads: LISTofXKMGeomDoodad
+ overlays: LISTofXKMGeomOverlay
+└───
+
+┌───
+ XKMRowDesc
+ top: INT16
+ left: INT16
+ num_keys: CARD8
+ vertical: BOOL
+ pad: CARD16
+ keys: XKMKeyDesc
+└───
+
+┌───
+ XKMKeyDesc
+ name: XKMKeyname
+ gap: INT16
+ shape_idx: CARD8
+ color_idx: CARD8
+└───
+
+┌───
+ XKMGeomDoodad
+ name: XKMCountedString
+ type: CARD8
+ priority: CARD8
+ top: INT16
+ left: INT16
+ pad1: CARD16
+ pad2: CARD32
+ pad3: CARD32
+ ───
+ type ⇒ XkbOutlineDoodad ||
+ type ⇒ XkbSolideDoodad
+ ⇒
+ type: CARD8
+ priority: CARD8
+ top: INT16
+ left: INT16
+ angle: INT16
+ color_idx: CARD8
+ shape_idx: CARD8
+ pad0: CARD16
+ pad1: CARD32
+ ───
+ type ⇒ XkbTextDoodad
+ ⇒
+ type: CARD8
+ priority: CARD8
+ top: INT16
+ left: INT16
+ angle: INT16
+ width: CARD16
+ height: CARD16
+ color_idx: CARD8
+ pad0: CARD8
+ pad1: CARD16
+ text: XKMCountedString
+ font: XKMCountedString
+ ───
+ type ⇒ XkbIndicatorDoodad
+ ⇒
+ type: CARD8
+ priority: CARD8
+ top: INT16
+ left: INT16
+ shape_idx: CARD8
+ on_color_idx: CARD8
+ off_color_idx: CARD8
+ pad0: CARD8
+ pad1: CARD16
+ pad2: CARD32
+ ───
+ type ⇒ XkbLogoDoodad
+ ⇒
+ type: CARD8
+ priority: CARD8
+ top: INT16
+ left: INT16
+ angle: INT16
+ color_idx: CARD8
+ shape_idx: CARD8
+ pad0: CARD16
+ pad1: CARD32
+ logo_name: XKMCountedString
+└───
+
+WARNING: XKMGeomDoodad has variable length depending on the type.
+NOTE: The current server implementation does not use all fields of all
+structures.
+
+┌───
+ XKMOverlayDesc
+ name: XKMCountedString
+ num_rows: CARD8
+ pad0: CARD8
+ pad1: CARD16
+ rows: LISTofXKMOverlayRowDesc
+└───
+
+┌───
+ XKMOverlayRowDesc
+ name: XKMCountedString
+ row_under: CARD8
+ num_keys: CARD8
+ pad: CARD16
+ keys: LISTofXKMOverlayKeyDesc
+└───
+
+┌───
+ XKMOverlayKeyDesc
+ over: XKMKeyname
+ under: XKMKeyname
+└───
+
+ â§â§â§â§â§â§â§â§â§â§â§
+
+3.3.6 XKMVirtualMods
+
+┌───
+ XKMOverlayRowDesc
+ section_info: XKMSectionInfo
+ name: XKMCountedString
+ bound_mask: SETofVMODBITS
+ named_mask: SETofVMODBITS
+ vmods: LISTofCARD8
+ pad: pad(vmods)
+ names: LISTofXKMCountedString
+└───
+
+ VMODBITS: CARD16
+
+Number of elements in vmods is equal to the number of bits set in
+bound_mask. The padding completes vmods to a multiple of 4 byte units.
+Number of elements in names is equal to the number of bits set in
+named_mask.
diff --git a/xorg-server/xkeyboard-config/AUTHORS b/xorg-server/xkeyboard-config/AUTHORS
index ff240c480..451e9c08d 100644
--- a/xorg-server/xkeyboard-config/AUTHORS
+++ b/xorg-server/xkeyboard-config/AUTHORS
@@ -1,8 +1,8 @@
-Сергей Удальцов (Sergey Udaltsov) <svu@users.sourceforge.net>
-
-Andriy Rysin <arysin@myrealbox.com>
-Denis Barbier <barbier@linuxfr.org>
-Frank Murphy <murphyf+xfree86@f-m.fm>
-Ivan Pascal <pascal@info.tsu.ru>
-Nicolas Mailhot <nicolas.mailhot@laposte.net>
-Данило Шеган <dsegan@gmx.net>
+Сергей Удальцов (Sergey Udaltsov) <svu@users.sourceforge.net>
+
+Andriy Rysin <arysin@myrealbox.com>
+Denis Barbier <barbier@linuxfr.org>
+Frank Murphy <murphyf+xfree86@f-m.fm>
+Ivan Pascal <pascal@info.tsu.ru>
+Nicolas Mailhot <nicolas.mailhot@laposte.net>
+Данило Шеган <dsegan@gmx.net>
diff --git a/xorg-server/xkeyboard-config/BUGS b/xorg-server/xkeyboard-config/BUGS
index 285e01251..cb48ff636 100644
--- a/xorg-server/xkeyboard-config/BUGS
+++ b/xorg-server/xkeyboard-config/BUGS
@@ -1,70 +1,70 @@
--- Freedesktop.ORG
-
-http://freedesktop.org/bugzilla/show_bug.cgi?id=320
-http://bugs.xfree86.org/show_bug.cgi?id=1155
-
- DONE: Added microsoftprousb
-
-http://freedesktop.org/bugzilla/show_bug.cgi?id=326
-http://bugs.xfree86.org/show_bug.cgi?id=1227
-
- ?: Which of 'inet' files is right?
-
-http://freedesktop.org/bugzilla/show_bug.cgi?id=365
-
- DONE: Two keysyms swapped in us(intl)
-
-http://freedesktop.org/bugzilla/show_bug.cgi?id=371
-
- ?: What exactly is broken? Some patch would be nice
-
-http://freedesktop.org/bugzilla/show_bug.cgi?id=458
-
- DONE: Changed Farsi to Iranian
-
-http://freedesktop.org/bugzilla/show_bug.cgi?id=463
-
- ?: Don't know how to fix, really. Let's see.
-
-http://freedesktop.org/bugzilla/show_bug.cgi?id=496
-
- DONE: Added Gyration Compact Keyboard
-
-http://freedesktop.org/bugzilla/show_bug.cgi?id=574
-
- DONE: The patch applied
-
-http://freedesktop.org/bugzilla/show_bug.cgi?id=587
-
- ?: Which of altwin options should be included?
- Some part of meta_win is already there
-
-http://freedesktop.org/bugzilla/show_bug.cgi?id=630
-
- DONE: Logitech iTouch Cordless Keyboard (model Y-RB6) added
-
-http://freedesktop.org/bugzilla/show_bug.cgi?id=666
-
- DONE: Long ago added alt_super_win
-
-http://freedesktop.org/bugzilla/show_bug.cgi?id=711
-
- DONE: Added Super Power Multimedia Keyboard
-
-http://freedesktop.org/bugzilla/show_bug.cgi?id=743
-
- DONE: Armenian fixed
-
-http://freedesktop.org/bugzilla/show_bug.cgi?id=744
-
- DONE: Model a4techKB21 added
-
-http://freedesktop.org/bugzilla/show_bug.cgi?id=926
-
- TODO:
--- GNOME
-
-http://bugzilla.gnome.org/show_bug.cgi?id=144646
-http://bugs.xfree86.org/show_bug.cgi?id=1415
-
- DONE: Fixed, thanks to Dmitry
+-- Freedesktop.ORG
+
+http://freedesktop.org/bugzilla/show_bug.cgi?id=320
+http://bugs.xfree86.org/show_bug.cgi?id=1155
+
+ DONE: Added microsoftprousb
+
+http://freedesktop.org/bugzilla/show_bug.cgi?id=326
+http://bugs.xfree86.org/show_bug.cgi?id=1227
+
+ ?: Which of 'inet' files is right?
+
+http://freedesktop.org/bugzilla/show_bug.cgi?id=365
+
+ DONE: Two keysyms swapped in us(intl)
+
+http://freedesktop.org/bugzilla/show_bug.cgi?id=371
+
+ ?: What exactly is broken? Some patch would be nice
+
+http://freedesktop.org/bugzilla/show_bug.cgi?id=458
+
+ DONE: Changed Farsi to Iranian
+
+http://freedesktop.org/bugzilla/show_bug.cgi?id=463
+
+ ?: Don't know how to fix, really. Let's see.
+
+http://freedesktop.org/bugzilla/show_bug.cgi?id=496
+
+ DONE: Added Gyration Compact Keyboard
+
+http://freedesktop.org/bugzilla/show_bug.cgi?id=574
+
+ DONE: The patch applied
+
+http://freedesktop.org/bugzilla/show_bug.cgi?id=587
+
+ ?: Which of altwin options should be included?
+ Some part of meta_win is already there
+
+http://freedesktop.org/bugzilla/show_bug.cgi?id=630
+
+ DONE: Logitech iTouch Cordless Keyboard (model Y-RB6) added
+
+http://freedesktop.org/bugzilla/show_bug.cgi?id=666
+
+ DONE: Long ago added alt_super_win
+
+http://freedesktop.org/bugzilla/show_bug.cgi?id=711
+
+ DONE: Added Super Power Multimedia Keyboard
+
+http://freedesktop.org/bugzilla/show_bug.cgi?id=743
+
+ DONE: Armenian fixed
+
+http://freedesktop.org/bugzilla/show_bug.cgi?id=744
+
+ DONE: Model a4techKB21 added
+
+http://freedesktop.org/bugzilla/show_bug.cgi?id=926
+
+ TODO:
+-- GNOME
+
+http://bugzilla.gnome.org/show_bug.cgi?id=144646
+http://bugs.xfree86.org/show_bug.cgi?id=1415
+
+ DONE: Fixed, thanks to Dmitry
diff --git a/xorg-server/xkeyboard-config/COPYING b/xorg-server/xkeyboard-config/COPYING
index 49983da29..4efb62906 100644
--- a/xorg-server/xkeyboard-config/COPYING
+++ b/xorg-server/xkeyboard-config/COPYING
@@ -1,190 +1,190 @@
-Copyright 1996 by Joseph Moss
-Copyright (C) 2002-2007 Free Software Foundation, Inc.
-Copyright (C) Dmitry Golubev <lastguru@mail.ru>, 2003-2004
-Copyright (C) 2004, Gregory Mokhin <mokhin@bog.msu.ru>
-Copyright (C) 2006 Erdal Ronahî
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation, and that the name of the copyright holder(s) not be used in
-advertising or publicity pertaining to distribution of the software without
-specific, written prior permission. The copyright holder(s) makes no
-representations about the suitability of this software for any purpose. It
-is provided "as is" without express or implied warranty.
-
-THE COPYRIGHT HOLDER(S) DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
-INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
-EVENT SHALL THE COPYRIGHT HOLDER(S) BE LIABLE FOR ANY SPECIAL, INDIRECT OR
-CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
-DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
-TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
-PERFORMANCE OF THIS SOFTWARE.
-
-
-Copyright (c) 1996 Digital Equipment Corporation
-
-Permission is hereby granted, free of charge, to any person obtaining
-a copy of this software and associated documentation files (the
-"Software"), to deal in the Software without restriction, including
-without limitation the rights to use, copy, modify, merge, publish,
-distribute, sublicense, and sell copies of the Software, and to
-permit persons to whom the Software is furnished to do so, subject to
-the following conditions:
-
-The above copyright notice and this permission notice shall be included
-in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
-IN NO EVENT SHALL DIGITAL EQUIPMENT CORPORATION BE LIABLE FOR ANY CLAIM,
-DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
-OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR
-THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of the Digital Equipment
-Corporation shall not be used in advertising or otherwise to promote
-the sale, use or other dealings in this Software without prior written
-authorization from Digital Equipment Corporation.
-
-
-Copyright 1996, 1998 The Open Group
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
-
-The above copyright notice and this permission notice shall be
-included in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
-IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR
-OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
-ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall
-not be used in advertising or otherwise to promote the sale, use or
-other dealings in this Software without prior written authorization
-from The Open Group.
-
-
-Copyright 2004-2005 Sun Microsystems, Inc. All rights reserved.
-
-Permission is hereby granted, free of charge, to any person obtaining a
-copy of this software and associated documentation files (the "Software"),
-to deal in the Software without restriction, including without limitation
-the rights to use, copy, modify, merge, publish, distribute, sublicense,
-and/or sell copies of the Software, and to permit persons to whom the
-Software is furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice (including the next
-paragraph) shall be included in all copies or substantial portions of the
-Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-DEALINGS IN THE SOFTWARE.
-
-
-Copyright (c) 1996 by Silicon Graphics Computer Systems, Inc.
-
-Permission to use, copy, modify, and distribute this
-software and its documentation for any purpose and without
-fee is hereby granted, provided that the above copyright
-notice appear in all copies and that both that copyright
-notice and this permission notice appear in supporting
-documentation, and that the name of Silicon Graphics not be
-used in advertising or publicity pertaining to distribution
-of the software without specific prior written permission.
-Silicon Graphics makes no representation about the suitability
-of this software for any purpose. It is provided "as is"
-without any express or implied warranty.
-
-SILICON GRAPHICS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS
-SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
-AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON
-GRAPHICS BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL
-DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
-DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
-OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH
-THE USE OR PERFORMANCE OF THIS SOFTWARE.
-
-
-Copyright (c) 1996 X Consortium
-
-Permission is hereby granted, free of charge, to any person obtaining
-a copy of this software and associated documentation files (the
-"Software"), to deal in the Software without restriction, including
-without limitation the rights to use, copy, modify, merge, publish,
-distribute, sublicense, and/or sell copies of the Software, and to
-permit persons to whom the Software is furnished to do so, subject to
-the following conditions:
-
-The above copyright notice and this permission notice shall be
-included in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
-IN NO EVENT SHALL THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR
-OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
-ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of the X Consortium shall
-not be used in advertising or otherwise to promote the sale, use or
-other dealings in this Software without prior written authorization
-from the X Consortium.
-
-
-Copyright (C) 2004, 2006 Ævar Arnfjörð Bjarmason <avarab@gmail.com>
-
-Permission to use, copy, modify, distribute, and sell this software and its
-documentation for any purpose is hereby granted without fee, provided that
-the above copyright notice appear in all copies and that both that
-copyright notice and this permission notice appear in supporting
-documentation.
-
-The above copyright notice and this permission notice shall be
-included in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
-IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR
-OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
-ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of a copyright holder shall
-not be used in advertising or otherwise to promote the sale, use or
-other dealings in this Software without prior written authorization of
-the copyright holder.
-
-
-Copyright (C) 1999, 2000 by Anton Zinoviev <anton@lml.bas.bg>
-
-This software may be used, modified, copied, distributed, and sold,
-in both source and binary form provided that the above copyright
-and these terms are retained. Under no circumstances is the author
-responsible for the proper functioning of this software, nor does
-the author assume any responsibility for damages incurred with its
-use.
-
-Permission is granted to anyone to use, distribute and modify
-this file in any way, provided that the above copyright notice
-is left intact and the author of the modification summarizes
-the changes in this header.
-
-This file is distributed without any expressed or implied warranty.
+Copyright 1996 by Joseph Moss
+Copyright (C) 2002-2007 Free Software Foundation, Inc.
+Copyright (C) Dmitry Golubev <lastguru@mail.ru>, 2003-2004
+Copyright (C) 2004, Gregory Mokhin <mokhin@bog.msu.ru>
+Copyright (C) 2006 Erdal Ronahî
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation, and that the name of the copyright holder(s) not be used in
+advertising or publicity pertaining to distribution of the software without
+specific, written prior permission. The copyright holder(s) makes no
+representations about the suitability of this software for any purpose. It
+is provided "as is" without express or implied warranty.
+
+THE COPYRIGHT HOLDER(S) DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
+INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
+EVENT SHALL THE COPYRIGHT HOLDER(S) BE LIABLE FOR ANY SPECIAL, INDIRECT OR
+CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
+DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
+TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+PERFORMANCE OF THIS SOFTWARE.
+
+
+Copyright (c) 1996 Digital Equipment Corporation
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be included
+in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+IN NO EVENT SHALL DIGITAL EQUIPMENT CORPORATION BE LIABLE FOR ANY CLAIM,
+DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
+OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR
+THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of the Digital Equipment
+Corporation shall not be used in advertising or otherwise to promote
+the sale, use or other dealings in this Software without prior written
+authorization from Digital Equipment Corporation.
+
+
+Copyright 1996, 1998 The Open Group
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR
+OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
+ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group shall
+not be used in advertising or otherwise to promote the sale, use or
+other dealings in this Software without prior written authorization
+from The Open Group.
+
+
+Copyright 2004-2005 Sun Microsystems, Inc. All rights reserved.
+
+Permission is hereby granted, free of charge, to any person obtaining a
+copy of this software and associated documentation files (the "Software"),
+to deal in the Software without restriction, including without limitation
+the rights to use, copy, modify, merge, publish, distribute, sublicense,
+and/or sell copies of the Software, and to permit persons to whom the
+Software is furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice (including the next
+paragraph) shall be included in all copies or substantial portions of the
+Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+DEALINGS IN THE SOFTWARE.
+
+
+Copyright (c) 1996 by Silicon Graphics Computer Systems, Inc.
+
+Permission to use, copy, modify, and distribute this
+software and its documentation for any purpose and without
+fee is hereby granted, provided that the above copyright
+notice appear in all copies and that both that copyright
+notice and this permission notice appear in supporting
+documentation, and that the name of Silicon Graphics not be
+used in advertising or publicity pertaining to distribution
+of the software without specific prior written permission.
+Silicon Graphics makes no representation about the suitability
+of this software for any purpose. It is provided "as is"
+without any express or implied warranty.
+
+SILICON GRAPHICS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS
+SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
+AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON
+GRAPHICS BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL
+DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
+DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
+OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH
+THE USE OR PERFORMANCE OF THIS SOFTWARE.
+
+
+Copyright (c) 1996 X Consortium
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+IN NO EVENT SHALL THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR
+OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
+ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of the X Consortium shall
+not be used in advertising or otherwise to promote the sale, use or
+other dealings in this Software without prior written authorization
+from the X Consortium.
+
+
+Copyright (C) 2004, 2006 Ævar Arnfjörð Bjarmason <avarab@gmail.com>
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR
+OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
+ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of a copyright holder shall
+not be used in advertising or otherwise to promote the sale, use or
+other dealings in this Software without prior written authorization of
+the copyright holder.
+
+
+Copyright (C) 1999, 2000 by Anton Zinoviev <anton@lml.bas.bg>
+
+This software may be used, modified, copied, distributed, and sold,
+in both source and binary form provided that the above copyright
+and these terms are retained. Under no circumstances is the author
+responsible for the proper functioning of this software, nor does
+the author assume any responsibility for damages incurred with its
+use.
+
+Permission is granted to anyone to use, distribute and modify
+this file in any way, provided that the above copyright notice
+is left intact and the author of the modification summarizes
+the changes in this header.
+
+This file is distributed without any expressed or implied warranty.
diff --git a/xorg-server/xkeyboard-config/CREDITS b/xorg-server/xkeyboard-config/CREDITS
index b31a3298d..7a05b27ec 100644
--- a/xorg-server/xkeyboard-config/CREDITS
+++ b/xorg-server/xkeyboard-config/CREDITS
@@ -1,3 +1,3 @@
-Ivan A Derzhanski <iad@math.bas.bg>
-Runa Aruna <runa_aruna@yahoo.com>
-Fr?d?ric BOITEUX <fboiteux@calistel.com>
+Ivan A Derzhanski <iad@math.bas.bg>
+Runa Aruna <runa_aruna@yahoo.com>
+Fr?d?ric BOITEUX <fboiteux@calistel.com>
diff --git a/xorg-server/xkeyboard-config/ChangeLog b/xorg-server/xkeyboard-config/ChangeLog
index 51627ab6e..28c811580 100644
--- a/xorg-server/xkeyboard-config/ChangeLog
+++ b/xorg-server/xkeyboard-config/ChangeLog
@@ -1 +1 @@
-ChangeLog file is not used. Use "git log" instead
+ChangeLog file is not used. Use "git log" instead
diff --git a/xorg-server/xkeyboard-config/ChangeLog.old b/xorg-server/xkeyboard-config/ChangeLog.old
index 2b2b62542..40e24271b 100644
--- a/xorg-server/xkeyboard-config/ChangeLog.old
+++ b/xorg-server/xkeyboard-config/ChangeLog.old
@@ -1,3891 +1,3891 @@
-2009-12-21 Sergey Udaltsov
-
- * symbols/ru: Added ru(typewriter-legacy),
- https://bugs.freedesktop.org/show_bug.cgi?id=25726
- * rules/base.o_s.part, rules/base.xml.in, symbols/group: added
- grp(lctrl_rctrl_switch),
- https://bugs.freedesktop.org/show_bug.cgi?id=25727
-
-2009-11-27 Sergey Udaltsov
-
- * symbols/se: Reintroduced the broken bar in the Swedish symbol
- layout. http://bugs.freedesktop.org/show_bug.cgi?id=8491
-
-2009-11-25 Sergey Udaltsov
-
- * rules/base.m_s.part, symbols/inet: a bit of optimization, K6C to map
- to Eject, always in media section
-
-2009-11-24 Sergey Udaltsov
-
- * rules/base.xml.in, symbols/lt: removed unneeded lt(balticplus),
- http://bugs.freedesktop.org/show_bug.cgi?id=25263
-
-2009-11-21 Sergey Udaltsov
-
- * ../rules/base.xml.in, ../symbols/pl: added pl(dvp),
- http://bugs.freedesktop.org/show_bug.cgi?id=25200
-
-2009-11-18 Sergey Udaltsov
-
- * symbols/tm: small fix for tm layout, related to Ctrl+? shortcuts
- https://bugs.freedesktop.org/show_bug.cgi?id=25074
-
-2009-11-15 Octavio Alvarez
-
- * rules/base.xml.in: Removed thinkpadintl from base.xml.in.
-
-2009-10-20 Sergey Udaltsov
-
- * symbols/sun_vndr/us: added backspace mapping,
- https://bugs.freedesktop.org/show_bug.cgi?id=24554
-
-2009-10-13 Sergey Udaltsov
-
- * rules/base.lists.part, symbols/macintosh_vndr/Makefile.am,
- symbols/macintosh_vndr/es: Spanish mac layout just included the
- general one
- * rules/base.xml.in, symbols/ch: fixed Swiss default layout, added
- legacy variant, http://bugs.freedesktop.org/show_bug.cgi?id=24490
-
-2009-10-12 Sergey Udaltsov
-
- * rules/base.xml.in: USA Russian Phonetic keyboard layout not found in
- search by Languages - Russian,
- http://bugs.freedesktop.org/show_bug.cgi?id=24485
-
-2009-09-30 Sergey Udaltsov
-
- * rules/base.o_s.part, rules/base.xml.in, symbols/group: added
- grp:rctrl_rshift_toggle option,
- http://bugs.freedesktop.org/show_bug.cgi?id=24234
-
-2009-09-29 Sergey Udaltsov
-
- * configure.in, NEWS, po/*.po: preparing 1.7
-
-2009-09-15 Sergey Udaltsov
-
- * symbols/es: addind dead_tilde,
- https://bugs.freedesktop.org/show_bug.cgi?id=23876
- * keycodes/sun, rules/base.m_k.part, rules/base.ml_s.part,
- symbols/sun_vndr/us: fixed Sun keyboard model for type6,
- https://bugs.freedesktop.org/show_bug.cgi?id=3952
-
-2009-09-08 Gaetan Nadon
-
- * **/.cvsignore: remove cvsignore files.
-
-2009-09-02 Sergey Udaltsov
-
- * rules/base.xml.in, symbols/by: restructured Belarussian variants,
- https://bugs.freedesktop.org/show_bug.cgi?id=23604
-
-2009-08-28 Sergey Udaltsov
-
- * symbols/no: updated layout,
- http://bugs.freedesktop.org/show_bug.cgi?id=23518
-
-2009-08-20 Sergey Udaltsov
-
- * rules/base.o_s.part, rules/base.xml.in, symbols/capslock: added
- caps:numlock, http://bugs.freedesktop.org/show_bug.cgi?id=23323
-
-2009-08-18 Peter Hutterer
-
- * rules/base.o_s.part, rules/base.xml.in, symbols/capslock: added
- caps:hyper, http://bugs.freedesktop.org/show_bug.cgi?id=23356
-
-2009-08-14 Sergey Udaltsov
-
- * rules/base.o_s.part, rules/base.xml.in, symbols/capslock: added
- caps:none option, http://bugs.freedesktop.org/show_bug.cgi?id=23243
- * rules/base.xml.in, symbols/it: added it(us),
- http://bugs.freedesktop.org/show_bug.cgi?id=23263
-
-2009-08-04 Sergey Udaltsov
-
- * geometry/Makefile.am, rules/base.lists.part, rules/base.m_g.part,
- rules/base.xml.in: added TypeMatrix geometries,
- http://bugs.freedesktop.org/show_bug.cgi?id=23136
-
-2009-07-19 Sergey Udaltsov
-
- * symbols/vn: fixed accent typing,
- http://bugs.freedesktop.org/show_bug.cgi?id=22847
-
-2009-07-18 Sergey Udaltsov
-
- * symbols/gb: fixed gb(colemak), several mappings added,
- http://bugs.freedesktop.org/show_bug.cgi?id=22735
-
-2009-07-14 Sergey Udaltsov
-
- * rules/base.extras.xml.in, rules/extras/variantsMapping.lst,
- symbols/extras/us: added us(crd) to extras,
- http://bugs.freedesktop.org/show_bug.cgi?id=22635
-
-2009-07-09 Sergey Udaltsov
-
- * rules/base.xml.in, symbols/bg: updated bg variants,
- http://bugs.freedesktop.org/show_bug.cgi?id=22666
-
-2009-06-27 Sergey Udaltsov
-
- * symbols/extras/us, rules/base.extras.xml.in,
- rules/extras/variantsMapping.lst, symbols/extras/Makefile.am: Added 3
- exotic us variants: ats, intl-unicode, alt-intl-unicode
- http://bugs.freedesktop.org/show_bug.cgi?id=22004
- http://bugs.freedesktop.org/show_bug.cgi?id=22446
-
-2009-06-22 Sergey Udaltsov
-
- * .gitignore, configure.in, rules/Makefile.am,
- rules/base.extras.xml.in, rules/base.l2_s.part, rules/base.l3_s.part,
- rules/base.l4_s.part, rules/base.lists.part, rules/base.ml_s.part,
- rules/bin/Makefile.am, rules/compat/ln_s.sh -> rules/bin/ln_s.sh,
- rules/compat/lnv_s.sh -> rules/bin/lnv_s.sh, rules/compat/ml1_s.sh ->
- rules/bin/ml1_s.sh, rules/compat/ml1v1_s.sh -> rules/bin/ml1v1_s.sh,
- rules/compat/ml1v_s.sh -> rules/bin/ml1v_s.sh, rules/compat/ml_s.sh ->
- rules/bin/ml_s.sh, rules/compat/mlv_s.sh -> rules/bin/mlv_s.sh,
- rules/compat/Makefile.am, rules/compat/layoutsMapping.lst,
- rules/compat/variantsMapping.lst, rules/extras/Makefile.am,
- rules/extras/layoutsMapping.lst, symbols/extras/Makefile.am,
- symbols/extras/rs: serious restructuring of the rules generation
- scripts, for compat and extras. Also, adding exotic rs(combiningkeys)
- variant, http://bugs.freedesktop.org/show_bug.cgi?id=21047
-
-2009-06-20 Sergey Udaltsov
-
- * symbols/by: missing mappings,
- https://bugs.freedesktop.org/show_bug.cgi?id=22386
- * symbols/ca: fixed a couple of mappings in ca(shs)
- http://bugs.freedesktop.org/show_bug.cgi?id=22388
-
-2009-06-19 Sergey Udaltsov
-
- * symbols/de: small fix for a numbersign key,
- http://bugs.freedesktop.org/show_bug.cgi?id=19934
-
-2009-06-15 Sergey Udaltsov
-
- * symbols/inet: fixing ABNT2-specific mapping for keypad dot key,
- http://bugs.freedesktop.org/show_bug.cgi?id=22303
-
-2009-06-14 Sergey Udaltsov
-
- * rules/base.lists.part, rules/base.xml.in, symbols/inet: added
- creativedw7000 model,
- http://bugs.freedesktop.org/show_bug.cgi?id=22261
-
-2009-06-12 Sergey Udaltsov
-
- * symbols/us: added extra symbols to us(altgr-intl),
- http://bugs.freedesktop.org/show_bug.cgi?id=22249
-
-2009-06-11 Sergey Udaltsov
-
- * rules/base.o_s.part, rules/base.xml.in, symbols/capslock: added
- caps:super, http://bugs.freedesktop.org/show_bug.cgi?id=22184
-
-2009-06-09 Sergey Udaltsov
-
- * symbols/ng: fixing 'e with dot below' in ng(olpc),
- https://bugs.freedesktop.org/show_bug.cgi?id=20010
- * rules/base.ml1_s.part: fixing misspeled variant name,
- https://bugs.freedesktop.org/show_bug.cgi?id=15782
- * symbols/tr: lost credits added,
- https://bugs.freedesktop.org/show_bug.cgi?id=22079
- * rules/base.xml.in, symbols/ru: added ru(bak),
- https://bugs.freedesktop.org/show_bug.cgi?id=22101
-
-2009-05-31 Sergey Udaltsov
-
- * symbols/altwin: setting explicit TWO_LEVEL on sections mapping RALT
- , it is often ONE_LEVEL because of LEVEL3. Fixed
- http://bugs.freedesktop.org/show_bug.cgi?id=21761
-
-2009-05-24 Sergey Udaltsov
-
- * symbols/ua: fixed all references, from ua(basic) to ua(legacy),
- finalizing http://bugs.freedesktop.org/show_bug.cgi?id=21302
-
-2009-05-18 Sergey Udaltsov
-
- * symbols/de: adding acute to de(nodeadkeys),
- http://bugs.freedesktop.org/show_bug.cgi?id=21794
-
-2009-05-12 Sergey Udaltsov
-
- * NEWS, configure.in: bumping the release number
-
-2009-05-12 ReÅŸat SABIQ
-
- * configure.in (new locale), po/crh.po:
- Added crh.po as well (as was done originally on January 30),
- based on Peter Hutterer's feedback regarding build process;
- http://bugs.freedesktop.org/show_bug.cgi?id=19730
-
-2009-05-11 Sergey Udaltsov
-
- * rules/base.xml.in, symbols/pl: polished the description for
- pl(dvorak_altquotes)
-
-2009-05-11 ReÅŸat SABIQ
-
- * configure.in (new locale), rules/base.xml.in,
- symbols/ro, symbols/tr, symbols/ua, symbols/uz:
- Added Crimean Tatar (Crimean Turkish) layouts;
- http://bugs.freedesktop.org/show_bug.cgi?id=19730
-
-2009-05-07 Sergey Udaltsov
-
- * symbols/ru: fixed Kalmyk variant
-
-2009-05-01 Sergey Udaltsov
-
- * rules/base.xml.in, symbols/ru: added ru(phonetic_winkeys),
- http://bugs.freedesktop.org/show_bug.cgi?id=21474
-
-2009-04-29 Sergey Udaltsov
-
- * rules/base.xml.in: fixed wrong locale code,
- http://bugs.freedesktop.org/show_bug.cgi?id=21451
-
-2009-04-25 Sergey Udaltsov
-
- * rules/base.o_s.part, rules/base.xml.in, symbols/Makefile.am,
- symbols/pc, symbols/srvr_ctrl: Make C-A-Bksp an option,
- http://bugs.freedesktop.org/show_bug.cgi?id=21274
-
-2009-04-23 Sergey Udaltsov
-
- * rules/base.xml.in, symbols/ua: making ua(unicode) default,
- http://bugs.freedesktop.org/show_bug.cgi?id=21302
-
-2009-04-22 Sergey Udaltsov
-
- * rules/compat/ln_s.sh, rules/compat/ml1_s.sh: improved compat rules,
- hopefully fixing http://bugs.freedesktop.org/show_bug.cgi?id=8452
-
-2009-04-15 Sergey Udaltsov
-
- * symbols/kr: fixed ordering issue,
- http://bugs.freedesktop.org/show_bug.cgi?id=21211
-
-2009-04-14 Sergey Udaltsov
-
- * symbols/kg: small update of the Kyrgyz layout,
- http://bugs.freedesktop.org/show_bug.cgi?id=17505
- * rules/base.xml.in, symbols/gb: added gb(extd),
- http://bugs.freedesktop.org/show_bug.cgi?id=21121
-
-2009-04-03 Sergey Udaltsov
-
- * rules/base.xml.in, symbols/tm: added Turkmen layout+variant,
- http://bugs.freedesktop.org/show_bug.cgi?id=21015
- * symbols/rs: splitting latlevel3 and cyrlevel3,
- http://bugs.freedesktop.org/show_bug.cgi?id=21044
- * rules/base.m_s.part, rules/base.xml.in: Cherry B.UMLIMITED dummy
- model, http://bugs.freedesktop.org/show_bug.cgi?id=21002
-
-2009-03-17 Sergey Udaltsov
-
- * symbols/de: some useful symbols added on high shift levels,
- http://bugs.freedesktop.org/show_bug.cgi?id=20551
-
-2009-03-16 Sergey Udaltsov
-
- * rules/base.lists.part, rules/base.xml.in, symbols/kg: fixed Kyrgyz
- variants, http://bugs.freedesktop.org/show_bug.cgi?id=17505
-
-2009-03-07 Sergey Udaltsov
-
- * rules/base.m_s.part, rules/base.xml.in: added trust_slimline model,
- http://bugs.freedesktop.org/show_bug.cgi?id=20513
-
-2009-03-04 Sergey Udaltsov
-
- * rules/base.o_s.part, rules/base.xml.in, symbols/altwin, symbols/pc:
- putting altwin:super_win into default configuration,
- http://bugs.freedesktop.org/show_bug.cgi?id=19500
-
-2009-03-03 Sergey Udaltsov
-
- * rules/base.lists.part, rules/base.ml1_s.part, rules/base.ml_s.part:
- use br(thinkpad) for all thinkpads,
- http://bugs.freedesktop.org/show_bug.cgi?id=20425
-
-2009-03-02 Sergey Udaltsov
-
- * po/POTFILES.in: removed evdev.xml.in, which is exact copy of
- base.xml.in (and not distributed),
- http://bugs.freedesktop.org/show_bug.cgi?id=20107
-
-2009-02-26 Sergey Udaltsov
-
- * symbols/fi: added missing (in pc101) mappings, on 4th level,
- https://bugs.freedesktop.org/show_bug.cgi?id=20300
- * keycodes/evdev, keycodes/xfree86, keymap/xfree86,
- rules/base.lists.part, rules/base.m_k.part, rules/base.xml.in,
- rules/evdev.m_k.part: dropping national-specific models abnt2, jp106,
- kr106. The corresponding geometries are left in the codebase, for some
- while
-
-2009-02-25 Sergey Udaltsov
-
- * symbols/ru: missing minus and underscore are added to ru(phonetic),
- http://bugs.freedesktop.org/show_bug.cgi?id=20093
-
-2009-02-19 Sergey Udaltsov
-
- * keycodes/evdev, keycodes/xfree86, rules/base.m_k.part: merged
- xfree86(jp106) section to basic xfree86 keycodes
-
-2009-02-14 Sergey Udaltsov
-
- * symbols/sn, rules/base.xml.in, symbols/Makefile.am: added wolof
- layout, http://bugs.freedesktop.org/show_bug.cgi?id=20004
-
-2009-02-13 Sergey Udaltsov
-
- * symbols/inet: adding missing mappings to evdev,
- http://bugs.freedesktop.org/show_bug.cgi?id=18854
- * rules/base.xml.in: added lost lt(balticplus),
- http://bugs.freedesktop.org/show_bug.cgi?id=20092
-
-2009-02-05 Sergey Udaltsov
-
- * rules/base.xml.in, symbols/in: added in(hin-wx),
- http://bugs.freedesktop.org/show_bug.cgi?id=19753
-
-2009-02-04 Sergey Udaltsov
-
- * rules/base.xml.in, symbols/ru: added ru(dos),
- http://bugs.freedesktop.org/show_bug.cgi?id=19880
-
-2009-02-01 Sergey Udaltsov
-
- * rules/base.xml.in: fixed metainfo for fi(smi),
- http://bugs.freedesktop.org/show_bug.cgi?id=19841
- * rules/base.lists.part, rules/evdev.m_s.part: some kbds need tweaking
- even with evdev, adding $evdevkbds (asked by Peter)
- * symbols/inet: added battery key (asked by Peter)
- * README: fixed docs url,
- http://bugs.freedesktop.org/show_bug.cgi?id=9764
-
-2009-01-28 Sergey Udaltsov
-
- * rules/base.ml_s.part: fixed sun-related rules,
- http://bugs.freedesktop.org/show_bug.cgi?id=15782
- * rules/base.m_s.part, rules/base.xml.in, symbols/inet: added
- geniuskkb2050hs model,
- http://bugs.freedesktop.org/show_bug.cgi?id=19694
- * geometry/dell, rules/base.m_g.part: added latitude geometry,
- http://bugs.freedesktop.org/show_bug.cgi?id=19750
- * rules/base.xml.in, symbols/Makefile.am, symbols/brai,
- symbols/braille: moved Braille symbols to the proper location,
- http://bugs.freedesktop.org/show_bug.cgi?id=19695
- * symbols/capslock: keep Escape working in caps:escape,
- http://bugs.freedesktop.org/show_bug.cgi?id=19795
- * rules/base.o_s.part, rules/base.xml.in, symbols/level3: added
- lv3:enter_switch, http://bugs.freedesktop.org/show_bug.cgi?id=19773
- * rules/base.xml.in, symbols/ca: added ca(eng) for convenience,
- http://bugs.freedesktop.org/show_bug.cgi?id=19707
-
-2009-01-27 Sergey Udaltsov
-
- * symbols/typo: fixed text selection,
- http://bugs.freedesktop.org/show_bug.cgi?id=14022
- * symbols/be: added missing character,
- http://bugs.freedesktop.org/show_bug.cgi?id=19751
- * symbols/fr: fixed . on numpad, period->KP_Decimal,
- http://bugs.freedesktop.org/show_bug.cgi?id=19756
- * NEWS, configure.in: preparing 1.5
-
-2009-01-24 Sergey Udaltsov
-
- * rules/base.xml.in: added SV and US to the country list for latam,
- http://bugs.freedesktop.org/show_bug.cgi?id=19710
-
-2009-01-22 Sergey Udaltsov
-
- * symbols/fi: updated default Finnish variant,
- http://bugs.freedesktop.org/show_bug.cgi?id=18742
-
-2009-01-13 Sergey Udaltsov
-
- * symbols/typo, rules/base.l1o_s.part, rules/base.l2o_s.part,
- rules/base.l3o_s.part, rules/base.l4o_s.part, rules/base.lo_s.part,
- rules/base.xml.in, symbols/Makefile.am: added (inactive so far)
- misc:typo option, first step to close
- https://bugs.freedesktop.org/show_bug.cgi?id=14022
-
-2009-01-12 Sergey Udaltsov
-
- * rules/Makefile.am, rules/merge.sh: fix the build (thanks to Oswald
- Buddenhagen)
-
-2009-01-11 Sergey Udaltsov
-
- * rules/base.o_s.part, rules/base.xml.in, symbols/capslock: added
- option to use capslock as backspace,
- http://bugs.freedesktop.org/show_bug.cgi?id=19508
- * rules/base.xml.in, symbols/lt: removed unneeded variant,
- http://bugs.freedesktop.org/show_bug.cgi?id=14096
- * rules/base.xml.in, symbols/fr: added Breton variant,
- http://bugs.freedesktop.org/show_bug.cgi?id=19506
-
-2009-01-10 Sergey Udaltsov
-
- * rules/base.xml.in: More improvements(?) in descriptions, to make
- them shorter
-
-2009-01-08 Sergey Udaltsov
-
- * rules/base.xml.in: slightly reorganized descriptions for the group
- related to switchers
-
-2009-01-06 Sergey Udaltsov
-
- * rules/base.xml.in, symbols/es, symbols/latam: added dead tilde
- variants, http://bugs.freedesktop.org/show_bug.cgi?id=12568
- * rules/base.xml.in, rules/compat/variantRename.lst, symbols/in,
- symbols/pk: updated Urdu variants,
- https://bugs.freedesktop.org/show_bug.cgi?id=8091
-
-2009-01-03 Sergey Udaltsov
-
- * rules/compat/ln_s.sh, rules/compat/ml1_s.sh: fixed compat layout
- renaming involving variants on replacement, part of the fix for
- http://bugs.freedesktop.org/show_bug.cgi?id=8452
-
-2008-12-30 Sergey Udaltsov
-
- * symbols/fi: updated 2 mappings according to the new standard,
- http://bugs.freedesktop.org/show_bug.cgi?id=18742
-
-2008-12-29 Sergey Udaltsov
-
- * rules/base.xml.in, symbols/inet: added compal fl90,
- http://bugs.freedesktop.org/show_bug.cgi?id=15820
- * rules/base.m_s.part, rules/base.xml.in: added btc9116u model,
- http://bugs.freedesktop.org/show_bug.cgi?id=15871
- * symbols/gb: fixed gb dvorak,
- http://bugs.freedesktop.org/show_bug.cgi?id=18244
- * symbols/us: removed explicit CAPS mapping,
- http://bugs.freedesktop.org/show_bug.cgi?id=18320
-
-2008-12-28 Sergey Udaltsov
-
- * rules/base.xml.in, symbols/de: updated neo variant,
- http://bugs.freedesktop.org/show_bug.cgi?id=19308
-
-2008-12-26 Sergey Udaltsov
-
- * rules/base.lists.part, rules/base.m_s.part, symbols/inet: using
- acpi_common wherever possible, dropping (aliasing) unneeded models
-
-2008-12-25 Sergey Udaltsov
-
- * rules/base.lists.part, rules/base.xml.in, symbols/inet: added
- chicony0420 model, http://bugs.freedesktop.org/show_bug.cgi?id=15813
- * symbols/inet: updated cymotionlinux model,
- http://bugs.freedesktop.org/show_bug.cgi?id=15783
-
-2008-12-24 Sergey Udaltsov
-
- * symbols/inet: consolidated a lot of mappings into nav_common
-
-2008-12-21 Sergey Udaltsov
-
- * docs/README.enhancing: fixing the location of XKB proto docs,
- http://bugs.freedesktop.org/show_bug.cgi?id=9764
- * rules/base.xml.in, symbols/be: added oss variants,
- http://bugs.freedesktop.org/show_bug.cgi?id=8854
- * rules/base.m_s.part, rules/base.xml.in: added microsoftccurve2k
- model http://bugs.freedesktop.org/show_bug.cgi?id=9772
- * symbols/inet: changing globally XF86Refresh to XF86Reload,
- http://bugs.freedesktop.org/show_bug.cgi?id=10751
- * COPYING: added missing copyright notices,
- http://bugs.freedesktop.org/show_bug.cgi?id=11095
- * rules/base.lists.part, rules/base.xml.in, symbols/inet: added model
- unitek_kb1925, http://bugs.freedesktop.org/show_bug.cgi?id=11579
-
-2008-12-18 Sergey Udaltsov
-
- * keycodes/macintosh, rules/base.m_k.part, rules/base.o_k.part:
- dropped the goodmap and badmap keycodes for apple - needed for a very
- old kernels only. http://bugs.freedesktop.org/show_bug.cgi?id=9095
-
-2008-12-17 Sergey Udaltsov
-
- * symbols/capslock, symbols/compose, symbols/ctrl: fix lock modifier
- for jp, making "CAPS" replace key,
- http://bugs.freedesktop.org/show_bug.cgi?id=8805
-
-2008-12-15 Sergey Udaltsov
-
- * symbols/ru: added Kalmyk variant, thanks to Anatoly Mironov and
- others
-
-2008-12-12 Sergey Udaltsov
-
- * symbols/fr: fixed bepo variant,
- http://bugs.freedesktop.org/show_bug.cgi?id=17821
- * symbols/ara: restoring presentation forms,
- http://bugs.freedesktop.org/show_bug.cgi?id=18833
- * rules/base.xml.in, rules/base.m_s.part: added targa_v811 model,
- https://bugs.freedesktop.org/show_bug.cgi?id=5722
-
-2008-11-30 Sergey Udaltsov
-
- * symbols/gr: added ralt switch to Greek default layout,
- http://bugs.freedesktop.org/show_bug.cgi?id=18819
- * rules/base.o_s.part, rules/base.xml.in, symbols/group: added
- win_menu_switch option,
- http://bugs.freedesktop.org/show_bug.cgi?id=18557
-
-2008-11-29 Sergey Udaltsov
-
- * compat/level5: finally using Level5 characters,
- https://bugs.freedesktop.org/show_bug.cgi?id=4411
- * rules/base.xml.in: generalized Fujitsu-Siemens Amilo laptops, also
- closing http://bugs.freedesktop.org/show_bug.cgi?id=5694
- * rules/base.o_s.part, rules/base.xml.in, symbols/epo: added a couple
- of Esperanto options,
- http://bugs.freedesktop.org/show_bug.cgi?id=18142
-
-2008-11-27 Sergey Udaltsov
-
- * ChangeLog, rules/base.lists.part, rules/base.xml.in, symbols/inet:
- added cymotion expert model,
- http://bugs.freedesktop.org/show_bug.cgi?id=18718
-
-2008-11-26 Sergey Udaltsov
-
- * keycodes/evdev: fixed ABNT2 keycodes,
- http://bugs.freedesktop.org/show_bug.cgi?id=18712
- * keycodes/amiga, keycodes/ataritt, keycodes/fujitsu,
- keycodes/macintosh, keycodes/sgi_vndr/indigo, keycodes/sgi_vndr/indy,
- keycodes/sun, keycodes/xfree98: set keycode ranges 8-255, universally,
- https://bugs.freedesktop.org/show_bug.cgi?id=12538
-
-2008-11-22 Sergey Udaltsov
-
- * rules/base.o_s.part, rules/base.xml.in, symbols/group: added
- grp(alt_space_toggle) option,
- http://bugs.freedesktop.org/show_bug.cgi?id=15772
- * symbols/ca, symbols/et, symbols/tr: small OLPC fixes,
- http://bugs.freedesktop.org/show_bug.cgi?id=18645
-
-2008-11-20 Sergey Udaltsov
-
- * rules/base.lists.part, rules/base.xml.in, symbols/inet: added HP dv5
- keyboard, thanks to Giuseppe Bilotta
-
-2008-11-18 Sergey Udaltsov
-
- * symbols/it: fixing it(olpc),
- http://bugs.freedesktop.org/show_bug.cgi?id=18565
-
-2008-11-08 Sergey Udaltsov
-
- * symbols/inet: using inet(acpi) wherever possible, fixing apple
- section (thanks to Otavio Salvador)
- * symbols/pl: missing mappings, thanks to Otavio and Debian
-
-2008-11-06 Sergey Udaltsov
-
- * rules/base.o_s.part, rules/base.xml.in, symbols/capslock: added
- capslock(escape)
-
-2008-10-18 Sergey Udaltsov
-
- * rules/base.o_s.part, rules/base.xml.in, symbols/keypad,
- symbols/kpdl: added 2 keypad options (hex and atm), also kpdl:semi,
- http://bugs.freedesktop.org/show_bug.cgi?id=17110
- * rules/base.xml.in, symbols/de: added de(qwerty)
-
-2008-10-14 Sergey Udaltsov
-
- * rules/base.o_s.part, rules/base.xml.in, symbols/keypad: removed
- keypad:phone_hex option, to be replaced with newer one
- http://bugs.freedesktop.org/show_bug.cgi?id=17110
-
-2008-10-13 Sergey Udaltsov
-
- * keycodes/evdev: fixed keycode comment from Peter Hutterer
- * rules/base.xml.in, symbols/tj: cleaning the mess with tj variants,
- http://bugs.freedesktop.org/show_bug.cgi?id=17975
-
-2008-10-11 Sergey Udaltsov
-
- * rules/base.xml.in, symbols/de: added Lower Sorbian variants,
- http://bugs.freedesktop.org/show_bug.cgi?id=17855
- * rules/base.xml.in, symbols/tj: added 2 new variants, std and legacy,
- http://bugs.freedesktop.org/show_bug.cgi?id=17975
- * rules/base.o_t.part, rules/base.xml.in, types/numpad: added
- numpad(shift3) option,
- http://bugs.freedesktop.org/show_bug.cgi?id=17110
-
-2008-10-03 Sergey Udaltsov
-
- * symbols/ru: fix typewriter layout,
- http://bugs.freedesktop.org/show_bug.cgi?id=17881
-
-2008-09-30 Sergey Udaltsov
-
- * rules/base.o_s.part, rules/base.xml.in, symbols/altwin: added
- Mac-like modifiers positioning,
- http://bugs.freedesktop.org/show_bug.cgi?id=15655
- * NEWS, configure.in: preparing 1.4
-
-2008-09-26 Sergey Udaltsov
-
- * symbols/is: fixed AC11 mapping,
- http://bugs.freedesktop.org/show_bug.cgi?id=17786
-
-2008-09-24 Sergey Udaltsov
-
- * rules/base.xml.in: all descriptions are prefixed with underscore,
- to make them translatable,
- http://bugs.freedesktop.org/show_bug.cgi?id=17587
-
-2008-09-19 Sergey Udaltsov
-
- * keycodes/evdev, symbols/inet: fixed evdev for abnt2 and jp106
- http://bugs.freedesktop.org/show_bug.cgi?id=17656
-
-2008-09-18 Sergey Udaltsov
-
- * rules/base.o_s.part, rules/base.xml.in: more mismatches fixed,
- http://bugs.freedesktop.org/show_bug.cgi?id=17622
-
-2008-09-17 Sergey Udaltsov
-
- * rules/base.o_s.part, rules/base.xml.in: fixed mismatch,
- http://bugs.freedesktop.org/show_bug.cgi?id=17622
-
-2008-09-15 Sergey Udaltsov
-
- * rules/base.o_s.part, rules/base.xml.in, symbols/capslock,
- symbols/cz: added cz(ucw) and couple of options,
- http://bugs.freedesktop.org/show_bug.cgi?id=17587
- * rules/base.xml.in, symbols/gr: updated greek variants,
- http://bugs.freedesktop.org/show_bug.cgi?id=17459
-
-2008-09-12 Sergey Udaltsov
-
- * geometry/pc: added another pc geometry, with L-shaped Enter,
- http://bugs.freedesktop.org/show_bug.cgi?id=17513
-
-2008-09-10 Sergey Udaltsov
-
- * rules/base.lists.part, rules/base.xml.in, symbols/inet: added model
- sven303, http://bugs.freedesktop.org/show_bug.cgi?id=17518
-
-2008-09-02 Sergey Udaltsov
-
- * symbols/inet: fixed fscaa1667g,
- http://bugs.freedesktop.org/show_bug.cgi?id=17389
- * symbols/fr: fixed invalid keysym,
- http://bugs.freedesktop.org/show_bug.cgi?id=17388
- * rules/base.xml.in: some fixes for minor issues
- * rules/base.xml.in, symbols/gb: added gb(dvorakukp),
- http://bugs.freedesktop.org/show_bug.cgi?id=17370
-
-2008-08-16 Sergey Udaltsov
-
- * rules/evdev.m_k.part, rules/evdev.m_s.part, keycodes/evdev,
- po/POTFILES.in, po/xkeyboard-config.pot, rules/Makefile.am: implement
- special ruleset for evdev driver
- * added missing chars to Gurmukhi,
- http://bugs.freedesktop.org/show_bug.cgi?id=17163
-
-2008-08-06 Sergey Udaltsov
-
- * compat/Makefile.am, geometry/Makefile.am, keycodes/Makefile.am,
- keymap/Makefile.am, rules/compat/Makefile.am, semantics/Makefile.am,
- symbols/Makefile.am, types/Makefile.am, xkbrules.am: improving the
- build, http://bugs.freedesktop.org/show_bug.cgi?id=17008
-
-2008-08-03 Sergey Udaltsov
-
- * rules/compat/variantRename.lst: fixing compat rules for Romania,
- http://bugs.freedesktop.org/show_bug.cgi?id=16872
- * symbols/mt: fixed Maltese layout,
- http://bugs.freedesktop.org/show_bug.cgi?id=16966
- * symbols/fr: fixed fr(dvorak), making it legal
- http://bugs.freedesktop.org/show_bug.cgi?id=15407
-
-2008-07-28 Sergey Udaltsov
-
- * rules/base.lists.part, rules/base.xml.in, symbols/inet: added
- ibm_spacesaver model,
- http://bugs.freedesktop.org/show_bug.cgi?id=16767
-
-2008-07-22 Sergey Udaltsov
-
- * rules/base.xml.in: fixed typo,
- http://bugs.freedesktop.org/show_bug.cgi?id=16806
-
-2008-07-20 Sergey Udaltsov
-
- * symbols/inet: fixed typo,
- http://bugs.freedesktop.org/show_bug.cgi?id=16752
-
-2008-07-08 Sergey Udaltsov
-
- * symbols/us: fixing us(mac),
- https://bugs.freedesktop.org/show_bug.cgi?id=16641
-
-2008-07-01 Sergey Udaltsov
-
- * symbols/is, rules/base.xml.in: added is(dvorak),
- https://bugs.freedesktop.org/show_bug.cgi?id=16557
-
-2008-06-27 Sergey Udaltsov
-
- * symbols/level5: using normal level5 keysyms
- * rules/compat/ln_s.sh, rules/compat/lnv_s.sh, rules/compat/ml1_s.sh,
- rules/compat/ml1v1_s.sh, rules/compat/ml1v_s.sh, rules/compat/ml_s.sh,
- rules/compat/mlv_s.sh: fixed build process, thanks to Oswald
- Buddenhagen
-
-2008-06-22 Sergey Udaltsov
-
- * symbols/tj: sorted and fixed tj layout,
- http://bugs.freedesktop.org/show_bug.cgi?id=16448
-
-2008-06-12 Sergey Udaltsov
-
- * rules/base.o_s.part, rules/base.xml.in, symbols/keypad: added
- keypad:phone_hex, http://bugs.freedesktop.org/show_bug.cgi?id=16298
-
-2008-06-09 Sergey Udaltsov
-
- * rules/base.xml.in, symbols/us: added us(chr),
- http://bugs.freedesktop.org/show_bug.cgi?id=16283
-
-2008-06-06 Sergey Udaltsov
-
- * geometry/pc: removed unneeded space,
- http://bugs.freedesktop.org/show_bug.cgi?id=16258
-
-2008-06-04 Sergey Udaltsov
-
- * rules/base.xml.in, symbols/ru: added ru(sah),
- http://bugs.freedesktop.org/show_bug.cgi?id=15872
-
-2008-06-01 Sergey Udaltsov
-
- * rules/base.xml.in, rules/base.lists.part, symbols/inet: added
- microsoft7000, http://bugs.freedesktop.org/show_bug.cgi?id=16087
- * keycodes/xfree86, rules/base.m_g.part, rules/base.m_k.part,
- rules/base.m_s.part, rules/base.xml.in: added model thinkpadz60,
- http://bugs.freedesktop.org/show_bug.cgi?id=15999
-
-2008-05-31 Sergey Udaltsov
-
- * symbols/gb, symbols/hu: fixed utf8
-
-2008-05-31 Sergey Udaltsov
-
- * symbols/ru: fixed some includes, from common to winkeys (broken in
- previous release)
-
-2008-05-30 Sergey Udaltsov
-
- * rules/base.xml.in, symbols/ca: added ca(kut),
- http://bugs.freedesktop.org/show_bug.cgi?id=16048
-
-2008-05-27 Sergey Udaltsov
-
- * symbols/inet: WWW is mapped to I02, because of some changes in
- kernel or X server (on nx9020),
- http://bugs.freedesktop.org/show_bug.cgi?id=7310
- * symbols/us: fixed one-handed dvorak variants (dropped second group),
- http://bugs.freedesktop.org/show_bug.cgi?id=5659
- * symbols/fi: returned nbsp to 3rd level of space,
- http://bugs.freedesktop.org/show_bug.cgi?id=12764
- * configure.in, NEWS: preparing 1.3
-
-2008-05-12 Sergey Udaltsov
-
- * rules/base.xml.in, symbols/ro: changed default Romanian variant to
- the right one, http://bugs.freedesktop.org/show_bug.cgi?id=13277
-
-2008-05-09 Sergey Udaltsov
-
- * rules/compat/variantRename.lst, symbols/ru: default variant is
- winkeys (till Daniel fixes xkbcomp)
- * symbols/ua: small fix, from Andriy
-
-2008-05-01 Sergey Udaltsov
-
- * po/POTFILES.in, rules/Makefile.am, rules/sgi*, rules/sun*: dropping
- legacy unsupported rules. Confirmed with Alan Coopersmith (Sun
- Microsystems)
-
-2008-04-30 Sergey Udaltsov
-
- * rules/base.xml.in, symbols/us: added us(dvp),
- http://bugs.freedesktop.org/show_bug.cgi?id=15727
-
-2008-04-29 Sergey Udaltsov
-
- * symbols/ca: fixed ca(shs),
- http://bugs.freedesktop.org/show_bug.cgi?id=15756
-
-2008-04-23 Sergey Udaltsov
-
- * symbols/es: revert broken idea about dead tilde,
- http://bugs.freedesktop.org/show_bug.cgi?id=9763
- * symbols/latam: revert broken idea about dead tilde,
- http://bugs.freedesktop.org/show_bug.cgi?id=12568
-
-2008-04-22 Sergey Udaltsov
-
- * rules/base.o_s.part, rules/base.xml.in, symbols/fr, symbols/nbsp,
- types/pc: options for nonbreakspace handling,
- http://bugs.freedesktop.org/show_bug.cgi?id=9529
- * symbols/fi: dropping bad nbsp mapping,
- http://bugs.freedesktop.org/show_bug.cgi?id=12764
-
-2008-04-21 Sergey Udaltsov
-
- * rules/base.xml.in: fixed some ISO codes
-
-2008-04-19 Sergey Udaltsov
-
- * symbols/ru, rules/base.xml.in, rules/compat/variantRename.lst:
- changed ru(winkeys) to default
- * rules/base.xml.in: put a lot of country/language info in
-
-2008-04-12 Sergey Udaltsov
-
- * symbols/it: fixed it(geo),
- https://bugs.freedesktop.org/show_bug.cgi?id=15058
-
-2008-04-07 Sergey Udaltsov
-
- * symbols/group, rules/base.xml.in, rules/base.o_s.part: added
- group(shift_caps_switch)
- http://bugs.freedesktop.org/show_bug.cgi?id=15383
-
-2008-04-01 Sergey Udaltsov
-
- * rules/base.xml.in, symbols/gb: added gb(colemak),
- http://bugs.freedesktop.org/show_bug.cgi?id=15303
-
-2008-03-30 Sergey Udaltsov
-
- * symbols/gn, symbols/ng: fixed unicode sequences,
- http://bugs.freedesktop.org/show_bug.cgi?id=15273
- * rules/base.xml.in, symbols/ua: added ua(homophonic),
- http://bugs.freedesktop.org/show_bug.cgi?id=15240
-
-2008-03-28 Sergey Udaltsov
-
- * rules/base.o_s.part, rules/base.xml.in, symbols/compose: added
- compose:102, http://bugs.freedesktop.org/show_bug.cgi?id=15246
-
-2008-03-22 Sergey Udaltsov
-
- * symbols/fr: fixed fr(oss_nodeadkeys),
- http://bugs.freedesktop.org/show_bug.cgi?id=15140
-
-2008-03-06 Sergey Udaltsov
-
- * rules/base.lists.part, symbols/ca, symbols/fr: added ca(olpc),
- removed fr(olpc), http://bugs.freedesktop.org/show_bug.cgi?id=14749
-
-2008-03-03 Sergey Udaltsov
-
- * rules/base.lists.part, symbols/fr: added fr(olpc),
- http://bugs.freedesktop.org/show_bug.cgi?id=14749
- * symbols/lv: fixed lv accented characters,
- http://bugs.freedesktop.org/show_bug.cgi?id=14765
- * rules/base.lists.part, symbols/it: added it(olpc),
- http://bugs.freedesktop.org/show_bug.cgi?id=14793
-
-2008-03-01 Sergey Udaltsov
-
- * rules/base.lists.part, rules/base.m_s.part, rules/base.xml.in,
- symbols/inet: reorganizing keyboard in symbols/inet. Some models are
- now implemented as "virtual" (by rules only).
- http://bugs.freedesktop.org/show_bug.cgi?id=14665
-
-2008-02-28 Sergey Udaltsov
-
- * rules/base.xml.in, symbols/in: added in(jhelum), other indian fixes,
- http://bugs.freedesktop.org/show_bug.cgi?id=14595
- * symbols/jp: small fix,
- http://bugs.freedesktop.org/show_bug.cgi?id=8648
-
-2008-02-16 Sergey Udaltsov
-
- * symbols/cz, symbols/sk: dropping KPDL mapping,
- http://bugs.freedesktop.org/show_bug.cgi?id=14479
-
-2008-02-12 Sergey Udaltsov
-
- * keycodes/sun, symbols/sun_vndr/us, rules/base.ml_s.part,
- rules/base.xml.in: sun type6 kbd,
- http://bugs.freedesktop.org/show_bug.cgi?id=13664
-
-2008-02-05 Sergey Udaltsov
-
- * symbols/af: fixed AE09 in af(olpc-ps),
- http://bugs.freedesktop.org/show_bug.cgi?id=14379
-
-2008-02-04 Sergey Udaltsov
-
- * symbols/kh, rules/base.lists.part: added kh(olpc),
- http://bugs.freedesktop.org/show_bug.cgi?id=14376
-
-2008-02-02 Sergey Udaltsov
-
- * symbols/lt, rules/base.xml.in: added lt(lekp) etc,
- http://bugs.freedesktop.org/show_bug.cgi?id=14096
-
-2008-01-31 Sergey Udaltsov
-
- * symbols/af, rules/base.xml.in, rules/base.lists.part: changing
- af(olpc-da) to af(olpc-fa),
- http://bugs.freedesktop.org/show_bug.cgi?id=14319
- * symbols/in: fixed space in in(olpc),
- http://bugs.freedesktop.org/show_bug.cgi?id=14224
-
-2008-01-30 Sergey Udaltsov
-
- * symbols/ca, rules/base.xml.in: adding ca(shs), closing
- http://bugs.freedesktop.org/show_bug.cgi?id=14308
- * symbols/mn: added mn(olpc),
- http://bugs.freedesktop.org/show_bug.cgi?id=14307
- * symbols/tr: fixed Turkish layouts,
- http://bugs.freedesktop.org/show_bug.cgi?id=14286
- * symbols/es, rules/base.xml.in: added es(ast),
- http://bugs.freedesktop.org/show_bug.cgi?id=14277
- * symbols/am, rules/base.lists.part: added am(olpc),
- http://bugs.freedesktop.org/show_bug.cgi?id=14226
- * symbols/af: fixed some keysyms,
- http://bugs.freedesktop.org/show_bug.cgi?id=14309
-
-2008-01-29 Sergey Udaltsov
-
- * NEWS, configure.in: preparing release 1.2
-
-2008-01-24 Sergey Udaltsov
-
- * symbols/af, symbols/ara, symbols/et, symbols/group, symbols/in,
- symbols/kz, symbols/np, symbols/pk, symbols/ru, symbols/th,
- symbols/us: separating group(olpc), closing
- http://bugs.freedesktop.org/show_bug.cgi?id=14225
-
-2008-01-21 Sergey Udaltsov
-
- * symbols/gr: Polytonic Greek: Use new keysyms for dead psili and
- dasia, http://bugs.freedesktop.org/show_bug.cgi?id=13275
-
-2008-01-11 Sergey Udaltsov
-
- * rules/base.lists.part, symbols/in: added in(olpc), by Bernardo
- Innocenti
-
-2008-01-07 Sergey Udaltsov
-
- * geometry/thinkpad, keycodes/xfree86, rules/base.lists.part,
- rules/base.m_g.part, rules/base.m_k.part, rules/base.xml.in,
- symbols/inet: added thinkpad60 model (with geometry),
- https://bugs.freedesktop.org/show_bug.cgi?id=13954
-
-2008-01-05 Sergey Udaltsov
-
- * symbols/us: add (left,right)singlequotemark to us(-altgr)-intl
- keymap, https://bugs.freedesktop.org/show_bug.cgi?id=13935
-
-2008-01-04 Sergey Udaltsov
-
- * symbols/inet, rules/base.lists.part, rules/base.xml.in: adding BTC
- 6301URF, https://bugs.freedesktop.org/show_bug.cgi?id=13913
- * symbols/macintosh_vndr/fr: added nodeadkeys,
- https://bugs.freedesktop.org/show_bug.cgi?id=13934
-
-2008-01-03 Sergey Udaltsov
-
- * symbols/pl, rules/base.xml.in: added pl(ru_phonetic_dvorak),
- https://bugs.freedesktop.org/show_bug.cgi?id=13900
-
-2008-01-02 Sergey Udaltsov
-
- * symbols/ro, rules/base.xml.in: small fixes for Romanian visible
- strings from
- https://bugs.freedesktop.org/show_bug.cgi?id=13277
- * rules/base.xml.in, rules/compat/variantRename.lst, symbols/fr,
- symbols/ge: moving ge(azerty_tscapo) to fr(geo), since that layout is
- only used in France, closing
- https://bugs.freedesktop.org/show_bug.cgi?id=13644
- * symbols/ara: remove presentation forms from Arabic layout,
- https://bugs.freedesktop.org/show_bug.cgi?id=13894
-
-2007-12-31 Sergey Udaltsov
-
- * symbols/ro, rules/base.xml.in, rules/compat/variantRename.lst:
- temporarily (partially) reverting
- https://bugs.freedesktop.org/show_bug.cgi?id=13277
-
-2007-12-27 Sergey Udaltsov
-
- * rules/base.o_s.part, rules/base.xml.in, symbols/capslock: adding xkb
- option caps:swapescape,
- https://bugs.freedesktop.org/show_bug.cgi?id=13824
-
-2007-12-26 Sergey Udaltsov
-
- * symbols/ee, rules/base.xml.in: adding ee(us), polishing eurosign
- usage in ee, https://bugs.freedesktop.org/show_bug.cgi?id=13799
-
-2007-12-25 Sergey Udaltsov
-
- * symbols/eurosign, rules/base.xml.in, rules/base.o_s.part: add
- eurosign(4)
-
-2007-12-23 Sergey Udaltsov
-
- * symbols/inet, rules/base.xml.in: add logiultrax model,
- https://bugs.freedesktop.org/show_bug.cgi?id=13028
- * symbols/me, rules/base.xml.in: use Latin as default Montenegro
- variant, https://bugs.freedesktop.org/show_bug.cgi?id=13777
- * symbols/inet, keycodes/evdev: Kill off the I211 key in evdev
-
-2007-12-17 Sergey Udaltsov
-
- * keycodes/sun, rules/base.m_k.part, rules/base.ml_s.part,
- symbols/sun_vndr/cs, symbols/sun_vndr/cz, symbols/sun_vndr/de,
- symbols/sun_vndr/dk, symbols/sun_vndr/fr, symbols/sun_vndr/gb,
- symbols/sun_vndr/gr, symbols/sun_vndr/it, symbols/sun_vndr/jp,
- symbols/sun_vndr/ko, symbols/sun_vndr/nl, symbols/sun_vndr/no,
- symbols/sun_vndr/pl, symbols/sun_vndr/ru, symbols/sun_vndr/sw,
- symbols/sun_vndr/tr, symbols/sun_vndr/tuv, symbols/sun_vndr/tw,
- symbols/sun_vndr/us: added sun type 6 support,
- https://bugs.freedesktop.org/show_bug.cgi?id=13664
-
-2007-12-10 Sergey Udaltsov
-
- * symbols/inet: fixed thinkpad,
- https://bugs.freedesktop.org/show_bug.cgi?id=13461
-
-2007-12-08 Sergey Udaltsov
-
- * symbols/inet, rules/base.xml.in, rules/base.lists.part: added
- fscaa1667g model, thanks to Matthew W. S. Bell
- * symbols/gr: updated greek symbols,
- https://bugs.freedesktop.org/show_bug.cgi?id=13570
-
-2007-11-30 Sergey Udaltsov
-
- * symbols/us: small olpc fix
- * symbols/inet: introducing nav_common and media_nav_common,
- https://bugs.freedesktop.org/show_bug.cgi?id=13461
-
-2007-11-21 Sergey Udaltsov
-
- * symbols/np, rules/base.lists.part: added np(olpc)
- * symbols/et, rules/base.lists.part: added et(olpc)
- * symbols/in: small fix in in(ben_probhat),
- https://bugs.freedesktop.org/show_bug.cgi?id=12038
-
-2007-11-20 Sergey Udaltsov
-
- * symbols/af, symbols/kz, symbols/ng, rules/base.xml.in: OLPC fixes
- from Bernardo
- * symbols/pk, rules/base.xml.in: fixing pk(ara) - it is not default
-
-2007-11-18 Sergey Udaltsov
-
- * symbols/ro, rules/base.xml.in, rules/compat/variantRename.lst:
- ro(comma), ro(academic) --> ro(cedilla), ro(std_cedilla),
- https://bugs.freedesktop.org/show_bug.cgi?id=13277
-
-2007-11-17 Sergey Udaltsov
-
- * symbols/ua, rules/base.xml.in: added ua(unicode)
-
-2007-11-15 Sergey Udaltsov
-
- * symbols/olpc, keycodes/es: small OLPC fixes
-
-2007-11-14 Sergey Udaltsov
-
- * symbols/inet, keycodes/evdev: revert #12203
- https://bugs.freedesktop.org/show_bug.cgi?id=12227
-
-2007-11-01 Sergey Udaltsov
-
- * symbols/fi, rules/base.xml.in: swapping fi(basic) and fi(kotoistus),
- https://bugs.freedesktop.org/show_bug.cgi?id=12764
-
-2007-10-28 Sergey Udaltsov
-
- * symbols/ara, symbols/us, symbols/es, symbols/us, symbols/ng: OLPC
- fixlets
-
-2007-10-23 Sergey Udaltsov
-
- * symbols/ru, rules/base.xml.in: added ru(kom),
- https://bugs.freedesktop.org/show_bug.cgi?id=12893
-
-2007-10-21 Sergey Udaltsov
-
- * symbols/us, rules/base.xml.in: added us(dvorak-intl),
- https://bugs.freedesktop.org/show_bug.cgi?id=12867
- * symbols/macintosh_vndr/dk: dk(macbookpro),
- https://bugs.freedesktop.org/show_bug.cgi?id=12716
-
-2007-10-19 Sergey Udaltsov
-
- * symbols/tr, rules/base.xml.in: added tr(intl),
- https://bugs.freedesktop.org/show_bug.cgi?id=12856
-
-2007-10-18 Sergey Udaltsov
-
- * geometry/pc, rules/base.xml.in, rules/compat/base.lists.part,
- symbols/br, symbols/pt: added some br and pt layouts,
- https://bugs.freedesktop.org/show_bug.cgi?id=12816
- * rules/base.xml.in symbols/dk: added dk(dvorak),
- https://bugs.freedesktop.org/show_bug.cgi?id=12837
-
-2007-10-13 Sergey Udaltsov
-
- * symbols/inet, rules/base.lists.part, rules/base.xml.in: added diNovo
- Edge, https://bugs.freedesktop.org/show_bug.cgi?id=12789
-
-2007-10-10 Sergey Udaltsov
-
- * rules/base.xml.in, rules/base.m_g.part: added microsoftelite model,
- https://bugs.freedesktop.org/show_bug.cgi?id=12753
- * symbols/fi: fixed fi(kotoistus),
- https://bugs.freedesktop.org/show_bug.cgi?id=12764
-
-2007-10-09 Sergey Udaltsov
-
- * geometry/microsoft: added "elite" geometry,
- https://bugs.freedesktop.org/show_bug.cgi?id=12753
- * symbols/us: fix for olpc
-
-2007-10-07 Sergey Udaltsov
-
- * symbols/kz, rules/base.lists.part: added kz(olpc)
- * symbols/pk: fixed pk(olpc)
- * rules/base.xml.in: lost vendors,
- https://bugs.freedesktop.org/show_bug.cgi?id=12719
- * symbols/inet, rules/base.lists.part, rules/base.xml.in: added
- chicony0108 model,
- https://bugs.freedesktop.org/show_bug.cgi?id=6914
- * symbols/de, types/extra: SS hangling,
- https://bugs.freedesktop.org/show_bug.cgi?id=7642
-
-2007-10-04 Sergey Udaltsov
-
- * symbols/us: s/U.S. English/USA/
- * rules/base.o_s.part, rules/base.xml.in,
- rules/compat/layoutRename.lst, symbols/Makefile.am, symbols/cs,
- symbols/me, symbols/rs, symbols/ba, symbols/hr, symbols/si: splitting
- Serbia and Montenegro
- https://bugs.freedesktop.org/show_bug.cgi?id=12390
-
-2007-10-02 Sergey Udaltsov
-
- * symbols/inet: fixing dell inspiron,
- https://bugs.freedesktop.org/show_bug.cgi?id=12653
- * configure.in, rules/Makefile.am, po/ChangeLog: dropping translations
- from base.xml, let apps/libs use .gmo files instead
-
-2007-09-27 Sergey Udaltsov
-
- * symbols/shift, symbols/Makefile.am, rules/base.o_s.part: added
- shift:breaks_caps, https://bugs.freedesktop.org/show_bug.cgi?id=9546
-
-2007-09-26 Sergey Udaltsov
-
- * symbols/latam: no dead_tilde,
- https://bugs.freedesktop.org/show_bug.cgi?id=12568
- * rules/base.xml.in, symbols/in: added mal_lalitha, small fixes,
- https://bugs.freedesktop.org/show_bug.cgi?id=12426
- * rules/base.lists.part, rules/base.m_k.part, rules/base.ml_c.part,
- rules/base.ml_s.part, rules/base.xml.in, rules/merge.sh,
- symbols/Makefile.am, symbols/ara, symbols/br, symbols/es,
- symbols/group, symbols/inet, symbols/level3, symbols/ng, symbols/olpc,
- symbols/pk, symbols/ru, symbols/th, symbols/tr, symbols/us: massive
- patch from OLPC project
-
-2007-09-25 Sergey Udaltsov
-
- * NEWS, configure.in: preparing release 1.1
-
-2007-09-24 Sergey Udaltsov
-
- * symbols/inet: added extra key for nx9020
- https://bugs.freedesktop.org/show_bug.cgi?id=7310
-
-2007-09-14 Sergey Udaltsov
-
- * symbols/inet: small fixes in cymotionlinux,
- https://bugs.freedesktop.org/show_bug.cgi?id=7983
- * keycodes/evdev: fixed fake keycodes,
- https://bugs.freedesktop.org/show_bug.cgi?id=12202
-
-2007-09-05 Sergey Udaltsov
-
- * symbols/inet, geometry/dell, rules/base.m_g.part,
- rules/base.lists.part: adding dell precision m65,
- https://bugs.freedesktop.org/show_bug.cgi?id=7992
- * rules/base.m_g.part: fixed rules for the kinesis keyboard,
- https://bugs.freedesktop.org/show_bug.cgi?id=7991
-
-2007-09-04 Sergey Udaltsov
-
- * symbols/it, rules/base.xml.in: added strange one, it(geo),
- contributed by Vladimir Sichinava
-
-2007-09-02 Sergey Udaltsov
-
- * keycodes/evdev, symbols/inet: more evdev keycodes,
- https://bugs.freedesktop.org/show_bug.cgi?id=12227
- https://bugs.freedesktop.org/show_bug.cgi?id=12228
-
-2007-08-29 Sergey Udaltsov
-
- * keycodes/evdev: updated evdev keycodes,
- https://bugs.freedesktop.org/show_bug.cgi?id=12202
- * keycodes/xfree86, symbols/inet, symbols/pc: display switch &
- backlight control, https://bugs.freedesktop.org/show_bug.cgi?id=12203
- * keycodes/macintosh, rules/base.m_k.part, rules/base.xml.in: adding
- macintosh_hhk model,
- https://bugs.freedesktop.org/show_bug.cgi?id=12091
-
-2007-08-28 Sergey Udaltsov
-
- * symbols/group, symbols/jp, symbols/la, symbols/level3, symbols/pc,
- symbols/digital_vndr/pc, types/pc: renaming types, giving more
- sensible names
-
-2007-08-27 Sergey Udaltsov
-
- * keycodes/evdev: missing keycodes for evdev:
- https://bugs.freedesktop.org/show_bug.cgi?id=12167
-
-2007-08-26 Sergey Udaltsov
-
- * rules/compat/variantRename.lst: fixing dvorak layouts compat rule,
- https://bugs.freedesktop.org/show_bug.cgi?id=12115
-
-2007-08-24 Sergey Udaltsov
-
- * symbols/us: fixes typos in us(classmate-intl)
-
-2007-08-22 Sergey Udaltsov
-
- * rules/base.xml.in, symbols/Makefile.am, symbols/cn: adding Tibetan
- layouts, https://bugs.freedesktop.org/show_bug.cgi?id=12088
-
-2007-08-20 Sergey Udaltsov
-
- * symbols/gr: replacing combining keys with dead keys, temporary hack
- by James Cloos
-
-2007-08-19 Sergey Udaltsov
-
- * symbols/et: added missing dead "c" key
-
-2007-08-18 Sergey Udaltsov
-
- * rules/base.lists.part, rules/base.ml_s.part, rules/base.mlv_s.part,
- rules/base.xml.in, symbols/inet, symbols/us: added classmate model
- with specific variants,
- https://bugs.freedesktop.org/show_bug.cgi?id=11955
-
-2007-08-14 Sergey Udaltsov
-
- * symbols/inet, rules/base.xml.in: added asus_laptop,
- https://bugs.freedesktop.org/show_bug.cgi?id=11936
-
-2007-08-12 Sergey Udaltsov
-
- * symbols/ru: fixed ebreve in ru(ch),
- http://bugs.freedesktop.org/show_bug.cgi?id=11246
- * rules/base.xml.in: missing Romanian variants added,
- https://bugs.freedesktop.org/show_bug.cgi?id=11945
-
-2007-08-10 Sergey Udaltsov
-
- * symbols/br, rules/base.m_g.part, rules/base.ml1_s.part,
- rules/base.ml_g.part, rules/base.ml_s.part: Adding br(thinkpad),
- polishing rules a bit,
- https://bugs.freedesktop.org/show_bug.cgi?id=11908
-
-2007-08-07 Sergey Udaltsov
-
- * symbols/ara: Patch to Arabic keyboard layout,
- http://bugs.freedesktop.org/show_bug.cgi?id=11867
-
-2007-08-03 Sergey Udaltsov
-
- * symbols/us, rules/base.xml.in: added us(altgr-intl), closing
- http://bugs.freedesktop.org/show_bug.cgi?id=11753
-
-2007-07-30 Sergey Udaltsov
-
- * symbols/inet, rules/base.lists.part, rules/base.m_s.part,
- rules/base.xml.in: introduced media_common, some Dell/Logitech symbols
- are dead, compatibility rules created, Acer kbds consolidated,
- http://bugs.freedesktop.org/show_bug.cgi?id=11746
-
-2007-07-25 Sergey Udaltsov
-
- * symbols/inet, rules/base.lists.part, rules/base.m_s.part,
- rules/base.xml.in: consolidating benq keyboards,
- https://bugs.freedesktop.org/show_bug.cgi?id=11713
-
-2007-07-24 Sergey Udaltsov
-
- * symbols/gn, symbols/Makefile.am, rules/base.xml.in: added Guinea,
- http://bugs.freedesktop.org/show_bug.cgi?id=11702
-
-2007-07-23 Sergey Udaltsov
-
- * symbols/cd: update Congolese,
- https://bugs.freedesktop.org/show_bug.cgi?id=5500
-
-2007-07-22 Sergey Udaltsov
-
- * symbols/inet, rules/base.lists.part, rules/base.xml.in: adding
- logiex110 model, https://bugs.freedesktop.org/show_bug.cgi?id=11686
-
-2007-07-20 Sergey Udaltsov
-
- * symbols/gr: adding pound sign,
- https://bugs.freedesktop.org/show_bug.cgi?id=11608
-
-2007-07-16 Sergey Udaltsov
-
- * rules/base.o_s.part, rules/base.xml.in, symbols/be, symbols/keypad:
- modularized wang kbd,
- https://bugs.freedesktop.org/show_bug.cgi?id=8852
-
-2007-07-15 Sergey Udaltsov
-
- * symbols/kpdl, symbols/*, rules/base.xml.in, rules/base.o_s.part:
- introducing separate KPDL handling,
- https://bugs.freedesktop.org/show_bug.cgi?id=11611
-
-2007-07-12 Sergey Udaltsov
-
- * NEWS: preparing release 1.0
-
-2007-07-10 Sergey Udaltsov
-
- * geometry/hhk, rules/base.m_g.part, rules/base.xml.in,
- geometry/Makefile.am: adding hhk geometry,
- https://bugs.freedesktop.org/show_bug.cgi?id=11519
-
-2007-07-09 Sergey Udaltsov
-
- * symbols/de: fixed AE12, closing
- https://bugs.freedesktop.org/show_bug.cgi?id=11514
-
-2007-06-29 Sergey Udaltsov
-
- * symbols/lk: another fix from
- https://bugs.freedesktop.org/show_bug.cgi?id=11284
- * symbols/us, rules/base.xml.in: added us(colemak),
- https://bugs.freedesktop.org/show_bug.cgi?id=11416
-
-2007-06-25 Sergey Udaltsov
-
- * symbols/Makefile.am, symbols/braille, rules/base.xml.in: added
- Braille layout, https://bugs.freedesktop.org/show_bug.cgi?id=11356
-
-2007-06-18 Sergey Udaltsov
-
- * symbols/Makefile.am, symbols/et, rules/base.xml.in: added
- et(basic), part of the OLPC works
-
-2007-06-16 Sergey Udaltsov
-
- * symbols/lk: fixed Sinhala, closing
- https://bugs.freedesktop.org/show_bug.cgi?id=11284
-
-2007-06-15 Sergey Udaltsov
-
- * symbols/ru, rules/base.xml.in: added ru(cv_latin), closing
- https://bugs.freedesktop.org/show_bug.cgi?id=11246
-
-2007-06-13 Sergey Udaltsov
-
- * symbols/ru, rules/base.xml.in: added ru(cv), closing
- https://bugs.freedesktop.org/show_bug.cgi?id=11246
- * symbols/ge, rules/base.xml.in: added ge(os), again closing
- https://bugs.freedesktop.org/show_bug.cgi?id=8092
- * symbols/ru, rules/base.xml.in: added ru(udm), closing
- https://bugs.freedesktop.org/show_bug.cgi?id=11257
-
-2007-06-07 Sergey Udaltsov
-
- * symbols/in, rules/base.xml.in: added Hindi phonetic,
- https://bugs.freedesktop.org/show_bug.cgi?id=11195
-
-2007-06-06 Sergey Udaltsov
-
- * rules/xfree98: fixed nec_vndr, closing
- https://bugs.freedesktop.org/show_bug.cgi?id=11176
-
-2007-05-26 Sergey Udaltsov
-
- * rules/base.o_s.part, rules/base.xml.in, symbols/jp: Add
- "NICOLA-F style Backspace" to "Japanese keyboard options", closing
- https://bugs.freedesktop.org/show_bug.cgi?id=11064
-
-2007-05-14 Sergey Udaltsov
-
- * rules/base.xml.in, rules/xkb.dtd: introducing vendor into
- configItem
-
-2007-05-13 Sergey Udaltsov
-
- * symbols/il: replaced backslash with bar, reclosing
- https://bugs.freedesktop.org/show_bug.cgi?id=6375
-
-2007-05-02 Sergey Udaltsov
-
- * symbols/gr: using Unicode since it is more appropriate for polytonic
- Greek, https://bugs.freedesktop.org/show_bug.cgi?id=10824
-
-2007-04-30 Sergey Udaltsov
-
- * rules/base.xml.in: make descriptions less technical
-
-2007-04-29 Sergey Udaltsov
-
- * symbols/us: adding explicit BKSL, closing
- https://bugs.freedesktop.org/show_bug.cgi?id=10811
-
-2007-04-27 Sergey Udaltsov
-
- * geometry/microsoft: replacing non-defined AE00 with TLDE,
- http://bugzilla.gnome.org/show_bug.cgi?id=429907
-
-2007-04-24 Sergey Udaltsov
-
- * symbols/ma: fixing alt in Tifinagh, closing
- https://bugs.freedesktop.org/show_bug.cgi?id=10736
-
-2007-04-23 Sergey Udaltsov
-
- * geometry/pc: fix for abnt2, closing
- https://bugs.freedesktop.org/show_bug.cgi?id=10725
- * symbols/inet, rules/base.lists.part: adding missing logicdo, closing
- https://bugs.freedesktop.org/show_bug.cgi?id=10671
-
-2007-04-11 Sergey Udaltsov
-
- * symbols/ge, rules/base.xml.in: added/fixed a lot of Georgian
- layouts, closing https://bugs.freedesktop.org/show_bug.cgi?id=3332
-
-2007-04-05 Sergey Udaltsov
-
- * symbols/se, rules/base.xml.in: added se(svdvorak),
- https://bugs.freedesktop.org/show_bug.cgi?id=10424
-
-2007-04-03 Sergey Udaltsov
-
- * symbols/cd: fixed Congolese layout one more time,
- https://bugs.freedesktop.org/show_bug.cgi?id=5500
-
-2007-04-01 Sergey Udaltsov
-
- * symbols/cd: fixed Congolese layout,
- https://bugs.freedesktop.org/show_bug.cgi?id=5500
-
-2007-03-29 Sergey Udaltsov
-
- * configure.in: improved xkb_base calculation, closing
- https://bugs.freedesktop.org/show_bug.cgi?id=10435
-
-2007-03-13 Sergey Udaltsov
-
- * configure.in: added Korean translation,
- https://bugs.freedesktop.org/show_bug.cgi?id=10269
- * rules/base.xml.in: s/descr/_descr/g, closing
- https://bugs.freedesktop.org/show_bug.cgi?id=10270
-
-2007-03-06 Sergey Udaltsov
-
- * rules/base.xml.in, symbols/us: added us(euro), after a very hot
- discussion in the maillist
-
-2007-02-26 Sergey Udaltsov
-
- * symbols/inet: fixed broken symbol, closing
- https://bugs.freedesktop.org/show_bug.cgi?id=10103
- * compat/misc: fixing copy/paste bug, closing
- https://bugs.freedesktop.org/show_bug.cgi?id=10104
-
-2007-02-25 Sergey Udaltsov
-
- * rules/base.xml.in, symbols/uz: fixed Uz layout, closing
- https://bugs.freedesktop.org/show_bug.cgi?id=10091
- * symbols/us: added French oe character to us(intl), closing
- https://bugs.freedesktop.org/show_bug.cgi?id=10087
-
-2007-02-12 Sergey Udaltsov
-
- * rules/base.xml.in, symbols/Makefile.am, symbols/ma: added Tifinagh
- layouts, closing http://bugs.freedesktop.org/show_bug.cgi?id=9950
-
-2007-02-03 Sergey Udaltsov
-
- * rules/base.ml_g.part, rules/HDR, rules/Makefile.am,
- rules/base.m_g.part: added (model, layout->geometry) section for
- thinkpad, https://bugs.freedesktop.org/show_bug.cgi?id=9864
- * symbols/macintosh_vndr/fr: updated French layout, closing
- https://bugs.freedesktop.org/show_bug.cgi?id=9865
-
-2007-01-27 Sergey Udaltsov
-
- * symbols/inet, rules/base.lists.part: adding thinkpad media keys,
- closing https://bugs.freedesktop.org/show_bug.cgi?id=9779
-
-2007-01-26 Sergey Udaltsov
-
- * symbols/es: s/asciitilde/dead_tilde in spanish, closing
- https://bugs.freedesktop.org/show_bug.cgi?id=9763
-
-2007-01-25 Sergey Udaltsov
-
- * rules/base.xml.in, symbols/am: adding am(phonetic-alt), closing
- https://bugs.freedesktop.org/show_bug.cgi?id=9018
-
-2007-01-11 Sergey Udaltsov
-
- * symbols/nl, rules/base.xml.in: added nl(std), closing
- https://bugs.freedesktop.org/show_bug.cgi?id=9603
- * symbols/epo, rules/base.xml.in: added epo(legacy), closing
- https://bugs.freedesktop.org/show_bug.cgi?id=9556
-
-2007-01-04 Sergey Udaltsov
-
- * symbols/ir: settling another licensing issue,
- https://bugs.freedesktop.org/show_bug.cgi?id=9541
-
-2007-01-04 Sergey Udaltsov
-
- * rules/base.xml.in, rules/base.o_s.part, symbols/ca, symbols/fr,
- symbols/nbsp: adding more nbsp options, closing
- https://bugs.freedesktop.org/show_bug.cgi?id=9529
-
-2007-01-02 Sergey Udaltsov
-
- * rules/base.xml.in, symbols/pc: getting rid of stupid "default"
- altwin options, closing
- https://bugs.freedesktop.org/show_bug.cgi?id=9470
-
-2006-12-19 Sergey Udaltsov
-
- * rules/base.o_s.part, rules/base.xml.in, rules/sun.xml.in,
- symbols/level3: adding lv3:ralt_alt, closing
- https://bugs.freedesktop.org/show_bug.cgi?id=9070
-
-2006-12-11 Sergey Udaltsov
-
- * configure.in: getting rid of bashisms, closing
- https://bugs.freedesktop.org/show_bug.cgi?id=9244
- * symbols/fi: s/NoSymbol/VoidSymbol/, closing
- https://bugs.freedesktop.org/show_bug.cgi?id=9239
-
-2006-12-07 Sergey Udaltsov
-
- * Makefile.am, rules/Makefile.am, xkbrules.am: getting rid of
- gmakisms, closing https://bugs.freedesktop.org/show_bug.cgi?id=9245
- * Makefile.am: dropping install-compiled target, closing
- https://bugs.freedesktop.org/show_bug.cgi?id=9246
-
-2006-11-20 Sergey Udaltsov
-
- * symbols/br, keycodes/xfree86: making abnt2 more compatible with
- other keyboards, closing
- https://bugs.freedesktop.org/show_bug.cgi?id=4910
- * rules/base.m_k.part: dropping the special (and stupid) abnt2 rule,
- closing https://bugs.freedesktop.org/show_bug.cgi?id=9097
-
-2006-11-19 Sergey Udaltsov
-
- * symbols/il, rules/base.xml.in: added il(biblical), closing
- https://bugs.freedesktop.org/show_bug.cgi?id=9002
-
-2006-11-17 Sergey Udaltsov
-
- * symbols/us: the backslash/bar definition in the us dvorak variant,
- closing https://bugs.freedesktop.org/show_bug.cgi?id=9061
- * symbols/ir: removed problematic copyright notice, with permission of
- Behnam Esfahbod, https://bugs.freedesktop.org/show_bug.cgi?id=4102
-
-2006-11-14 Sergey Udaltsov
-
- * symbols/altwin: undo invalid Alt mapping done in
- https://bugs.freedesktop.org/show_bug.cgi?id=8996
-
-2006-11-12 Sergey Udaltsov
-
- * rules/base.o_s.part, rules/base.xml.in, symbols/altwin: adding
- ctrl_win, closing https://bugs.freedesktop.org/show_bug.cgi?id=8996
-
-2006-11-06 Sergey Udaltsov
-
- * rules/sun.xml.in, rules/Makefile.am, po/POTFILE.in: Added directory
- for sun rules, closing
- http://bugzilla.gnome.org/show_bug.cgi?id=137294
-
-2006-11-02 Sergey Udaltsov
-
- * symbols/fr: some fixes for alternative layouts, closing
- https://bugs.freedesktop.org/show_bug.cgi?id=8853
- * symbols/fr, rules/base.xml.in: new fr(dvorak*) variants, closing
- https://bugs.freedesktop.org/show_bug.cgi?id=8728
-
-2006-10-28 Sergey Udaltsov
-
- * rules/base.lists.part, rules/base.xml.in, symbols/inet: added
- logitech_g15 model, closing
- https://bugs.freedesktop.org/show_bug.cgi?id=8803
- * symbols/jp: added LCTL definition,
- https://bugs.freedesktop.org/show_bug.cgi?id=8805
-
-2006-10-26 Sergey Udaltsov
-
- * rules/base.lists.part, rules/base.xml.in, symbols/inet: added more
- Dell keyboards, closing
- https://bugs.freedesktop.org/show_bug.cgi?id=8761
-
-2006-10-18 Sergey Udaltsov
-
- * rules/base.lists.part, symbols/macintosh_vndr/Makefile.am,
- symbols/macintosh_vndr/dk, symbols/macintosh_vndr/es,
- symbols/macintosh_vndr/it, symbols/macintosh_vndr/latam,
- symbols/macintosh_vndr/no, symbols/macintosh_vndr/pt,
- symbols/macintosh_vndr/se: missed part from
- https://bugs.freedesktop.org/show_bug.cgi?id=1576
- * rules/base.xml.in, symbols/jp: adding new Japanese layout, changing
- latin to 106, closing
- https://bugs.freedesktop.org/show_bug.cgi?id=8648
-
-2006-10-17 Sergey Udaltsov
-
- * symbols/macintosh_vndr/dk, symbols/macintosh_vndr/us: adding euro
- sign to mac us and dk, closing
- https://bugs.freedesktop.org/show_bug.cgi?id=8682#add_comment
-
-2006-10-16 Sergey Udaltsov
-
- * rules/base.m_k.part, rules/base.xml.in, keycodes/Makefile.am,
- keycodes/powerpcps2: removing obsolete powerpcps2 model. Closing
- https://bugs.freedesktop.org/show_bug.cgi?id=8659
- * rules/base.o_s.part, rules/base.xml.in, symbols/group: adding
- grp:lctrl_lshift_toggle, contributed by Alexey Morozov
- <morozov@gorodok.net>
- * symbols/macintosh_vndr/us: Fix <BKSP> in symbols/macintosh_vndr/us,
- closing https://bugs.freedesktop.org/show_bug.cgi?id=8668
- * symbols/level3: assigning mods to keycodes (reverding earlier wrong
- fix), closing https://bugs.freedesktop.org/show_bug.cgi?id=8670
-
-2006-10-13 Sergey Udaltsov
-
- * xkbrules.am: ability to create .dir files when srcdir != objdir,
- closing https://bugs.freedesktop.org/show_bug.cgi?id=8629
-
-2006-10-12 Sergey Udaltsov
-
- * symbols/inet, rules/base.lists.part, rules/base.xml.in: added BenQ
- X-730, thanks to Jean-Marc Spaggiari
-
-2006-10-11 Sergey Udaltsov
-
- * symbols/af, symbols/ba, symbols/hr, symbols/kr, symbols/nbsp,
- symbols/ng, symbols/si, symbols/za: addind missing cvs keyword
- XKeyboardConfig
- * rules/base.ml_s.part, rules/base.xml.in, symbols/jp: normalizing
- Japanese rules/variants, closing
- https://bugs.freedesktop.org/show_bug.cgi?id=8503
-
-2006-10-10 Sergey Udaltsov
-
- * symbols/in: fixed Devangari (default) layout, closing
- https://bugs.freedesktop.org/show_bug.cgi?id=4949
- * configure.in: removing hardcoded prefix, closing
- https://bugs.freedesktop.org/show_bug.cgi?id=8448
- * symbols/it, added EuroSign to italian mac layout, closing
- https://bugs.freedesktop.org/show_bug.cgi?id=1576
-
-2006-10-09 Sergey Udaltsov
-
- * symbols/inet,rules/base.xml.in: adding benqa800 model, closing
- https://bugs.freedesktop.org/show_bug.cgi?id=8574
-
-2006-10-09 Sergey Udaltsov
-
- * NEWS, configure.in: preparing 0.9
-
-2006-10-09 Sergey Udaltsov
-
- * tests/*: tests now run alphabetically, a bit of xslt tweaking
- * symbols/altwin: Alt keys should be mapped on two shift levels,
- undoing previous fix, as requested in
- https://bugs.freedesktop.org/show_bug.cgi?id=8571
- * symbols/level3: mapping Mod5 to keycode rather than to keysym,
- hopefully fixing https://bugs.freedesktop.org/show_bug.cgi?id=8572
- * symbols/us,symbols/latin: fixing quotes, closing
- https://bugs.freedesktop.org/show_bug.cgi?id=8122
-
-2006-10-07 Sergey Udaltsov
-
- * types/complete, types/default: putting "numpad" after "extra"
- hopefully fixes https://bugs.freedesktop.org/show_bug.cgi?id=8402
-
-2006-10-04 Sergey Udaltsov
-
- * symbols/fi: s/micron/dead_micron, closing
- https://bugs.freedesktop.org/show_bug.cgi?id=8494
-
-2006-10-03 Sergey Udaltsov
-
- * symbols/macintosh_vndr/gb, symbols/gb: adding missing Euro
- character, closing https://bugs.freedesktop.org/show_bug.cgi?id=5227
- * symbols/bt, symbols/fr, symbols/np: fixing typos, closing
- https://bugs.freedesktop.org/show_bug.cgi?id=8495
- * symbols/ch, symbols/de, symbols/dk, symbols/es, symbols/no,
- symbols/pt, symbols/se, symbols/us: optimized mac variants, overwrite
- old de and ch mac variants, closing
- https://bugs.freedesktop.org/show_bug.cgi?id=8491
-
-2006-10-01 Sergey Udaltsov
-
- * rules/base.xml.in, symbols/Makefile.am, symbols/ng: added Nigerian
- layouts, closing https://bugs.freedesktop.org/show_bug.cgi?id=8467
- * symbols/dk, symbols/es, symbols/fi, symbols/fr, symbols/gb,
- symbols/is, symbols/it, symbols/nl, symbols/no, symbols/pt,
- symbols/se, symbols/us, rules/base.xml.in: adding mac variants,
- closing https://bugs.freedesktop.org/show_bug.cgi?id=8465
-
-2006-09-30 Sergey Udaltsov
-
- * rules/base.o_s.part, rules/base.xml.in, symbols/Makefile.am,
- symbols/nbsp: adding nbsp:* options, closing
- https://bugs.freedesktop.org/show_bug.cgi?id=8451
-
-2006-09-29 Sergey Udaltsov
-
- * rules/base.xml.in: added keypad:* options, closing
- https://bugs.freedesktop.org/show_bug.cgi?id=8240
-
-2006-09-28 Sergey Udaltsov
-
- * geometry/thinkpad: fix for geometry, closing
- https://bugs.freedesktop.org/show_bug.cgi?id=8419
-
-2006-09-24 Sergey Udaltsov
-
- * symbols/am, rules/base.xml.in: added am(eastern), am(western),
- am(eastern-alt), closing
- https://bugs.freedesktop.org/show_bug.cgi?id=8404
- * rules/base.ml_s.part: macbooks should use the vendor symbols, if
- possible, closing
- https://bugs.freedesktop.org/show_bug.cgi?id=8385
- * rules/base.o_s.part, rules/base.xml.in, symbols/fr, symbols/keypad:
- added more French variants, new options, closing
- https://bugs.freedesktop.org/show_bug.cgi?id=8240
-
-2006-09-18 Sergey Udaltsov
-
- * keycodes/macintosh, rules/HDR, rules/Makefile.am,
- rules/base.m_k.part, rules/base.o_k.part, rules/base.xml.in: split
- "good" and "bad" apple keycodes, closing
- https://bugs.freedesktop.org/show_bug.cgi?id=8242
-
- * rules/base.lists.part, rules/base.m_s.part, symbols/inet,
- symbols/level3: lv3:enter_switch added, closing
- https://bugs.freedesktop.org/show_bug.cgi?id=8324
-
- * symbols/ara: added ara(buckwalter), closing
- https://bugs.freedesktop.org/show_bug.cgi?id=8198
-
- * symbols/in: fixed layout, Unicode-related bug, closing
- https://bugs.freedesktop.org/show_bug.cgi?id=8203
-
- * geometry/pc, rules/base.ml1_s.part, rules/base.ml_s.part,
- rules/compat/ml1_s.sh, rules/compat/ml1v1_s.sh,
- rules/compat/ml1v_s.sh, rules/compat/ml_s.sh, rules/compat/mlv_s.sh,
- symbols/pc: getting rid of pc101/102/104 legacy. Breaking XkbSymbols
- again, https://bugs.freedesktop.org/show_bug.cgi?id=8321
-
-2006-09-17 Sergey Udaltsov
-
- symbols/keypad, symbols/pc, symbols/us, symbols/macintosh_vndr/*,
- rules/base.m_t.part, rules/base.ml1_s.part, rules/base.ml_s.part,
- rules/base.o_t.part, rules/base.xml.in, rules/merge.sh: reorganized
- Mac stuff, thanks to Denis,
- https://bugs.freedesktop.org/show_bug.cgi?id=8280
-
- * symbols/pc: modularized numpad stuff,
- https://bugs.freedesktop.org/show_bug.cgi?id=8312
-
-2006-09-10 Sergey Udaltsov
-
- rules/base.list.part, symbols/inet: added 2 models, thanks to
- Valery V. Inozemtsev
-
-2006-09-06 Sergey Udaltsov
-
- * rules/altwin: mapping LALT to Mod4 modifier,
- https://bugs.freedesktop.org/show_bug.cgi?id=8068
-
-2006-09-05 Sergey Udaltsov
-
- * rules/base.lists.part: adding missing kbds, reordering a bit
- https://bugs.freedesktop.org/show_bug.cgi?id=7816
-
- * geometry/ibm_vnd, configure.in, rules/base.m_g.part: getting rid of
- ibm_vndr geometry, fixing rules,
- https://bugs.freedesktop.org/show_bug.cgi?id=7990
-
- * symbols/gb: s/ralt_switch/ralt_switch_multikey
- https://bugs.freedesktop.org/show_bug.cgi?id=7674
-
- * rules/base.mlv_s.part: fixing mac rule for nodeadkeys,
- https://bugs.freedesktop.org/show_bug.cgi?id=8123
-
- * rules/base.ml_s.part: s/old_macintosh/macintosh_old/g,
- https://bugs.freedesktop.org/show_bug.cgi?id=8128
-
-2006-09-04 Sergey Udaltsov
-
- * rules/base.lists.part, rules/base.m_g.part, rules/base.m_k.part,
- rules/base.m_s.part, rules/base.ml1_s.part, rules/base.ml_s.part,
- rules/base.mlv_s.part: fixing lists,
- https://bugs.freedesktop.org/show_bug.cgi?id=7817
-
- * symbols/cd, symbols/gr, symbols/il, symbols/jp, symbols/la,
- symbols/lk, symbols/ru, symbols/ca: fixing types, on per-group basis,
- https://bugs.freedesktop.org/show_bug.cgi?id=8121
-
- * symbols/level3: adding level3:ralt_switch_multikey,
- https://bugs.freedesktop.org/show_bug.cgi?id=7674
-
-2006-09-03 Sergey Udaltsov
-
- * symbols/vn: getting rid of digits (1 and 2 shift levels),
- https://bugs.freedesktop.org/show_bug.cgi?id=7807
-
- * rules/base.xml.in: s/guillemot/guillemet/, closing
- https://bugs.freedesktop.org/show_bug.cgi?id=8116
-
-2006-09-02 Sergey Udaltsov
-
- * symbols/lt, rules/base.xml.in: added lt(ibm)
- https://bugs.freedesktop.org/show_bug.cgi?id=3841
-
- * symbols/hr: reverted Croatian
- https://bugs.freedesktop.org/show_bug.cgi?id=8019
-
-2006-09-01 Sergey Udaltsov
-
- * symbols/ru, rules/base.xml.in: added Ossetian, closing
- https://bugs.freedesktop.org/show_bug.cgi?id=8092
-
- * symbols/ir, symbols/iq, rules/base.xml.in: added Kurdish Arabic-Latin
-
-2006-08-31 Sergey Udaltsov
-
- * geometry/macintosh, keycodes/macintosh, keycodes/xfree86,
- rules/base.lists.part, rules/base.m_g.part, rules/base.m_k.part,
- rules/base.m_s.part, rules/base.ml_s.part, rules/base.xml.in,
- symbols/inet: Added Macbook stuff, partially closing
- https://bugs.freedesktop.org/show_bug.cgi?id=8068
-
- * symbols/group, rules/base.o_s.part: added group:alt_caps_toggle
- https://bugs.freedesktop.org/show_bug.cgi?id=8047
-
-2006-08-02 Sergey Udaltsov
-
- * symbols/inet, keycodes/evdev: updated evdev
- https://bugs.freedesktop.org/show_bug.cgi?id=7631
-
-2006-07-30 Sergey Udaltsov
-
- * symbols/pl: added pl(csb)
- https://bugs.freedesktop.org/show_bug.cgi?id=7693
-
-2006-07-29 Sergey Udaltsov
-
- * symbols/bt: fixed Bhutan
- https://bugs.freedesktop.org/show_bug.cgi?id=7556
-
- * symbols/us: added dvorak-classic, closing
- https://bugs.freedesktop.org/show_bug.cgi?id=7503
-
- * symbols/inet: added acer_c300, closing
- https://bugs.freedesktop.org/show_bug.cgi?id=6361
-
-2006-07-29 Sergey Udaltsov
-
- * symbols/lk: updated Sinhala, thanks to Harshula
-
-2006-07-10 Sergey Udaltsov
-
- * symbols/de: added Mac variants, closing
- https://bugs.freedesktop.org/show_bug.cgi?id=6671
-
-2006-07-04 Sergey Udaltsov
-
- * symbols/ch: fixed KPDL in ch(de_mac), patch from
- https://bugs.freedesktop.org/show_bug.cgi?id=6960
-
-2006-07-02 Sergey Udaltsov
-
- * rules/base.xml.in: fixed mismatch between directory and symbols/inet
- file.
- https://bugs.freedesktop.org/show_bug.cgi?id=7398
-
- * symbols/ro: fixed Romanian academic
- https://bugs.freedesktop.org/show_bug.cgi?id=7393
-
-2006-06-28 Sergey Udaltsov
-
- * keycodes/evdev: pc105 compatiliby, closing
- https://bugs.freedesktop.org/show_bug.cgi?id=7347
-
-2006-06-25 Sergey Udaltsov
-
- * rules/base.xml.in, geometry/pc, symbols/inet: added Dell Lattitude,
- https://bugs.freedesktop.org/show_bug.cgi?id=6894
-
- * symbols/inet, rules/base.xml.in: added 2 new layouts, closing
- https://bugs.freedesktop.org/show_bug.cgi?id=7325
-
- * symbols/np: added Nepali, closing
- https://bugs.freedesktop.org/show_bug.cgi?id=6373
-
-2006-06-25 Sergey Udaltsov
-
- * geometry/pc, rules/base.lists.part, rules/base.m_g.part,
- rules/base.xml.in, symbols/kr: updated Korean layouts/geometry
- https://bugs.freedesktop.org/show_bug.cgi?id=7316
-
-2006-06-22 Sergey Udaltsov
-
- * symbols/inet: fixing double RaiseVolume, closing
- https://bugs.freedesktop.org/show_bug.cgi?id=7095
-
-2006-06-14 Sergey Udaltsov
-
- * symbols/mt, rules/base.xml.in: fixed the US variant group name
- * symbols/gh: fixed 'D' key, closing
- https://bugs.freedesktop.org/show_bug.cgi?id=7216
-
-2006-06-13 Sergey Udaltsov
-
- * symbols/level5, compat/level5: replacing F21-F23 with explicit
- hexadecimal values of XK_ISO_Level5_*. So for next months people could
- have Canadian layout fixed and, at the same time, do not have to
- upgrade xorg. Closing https://bugs.freedesktop.org/show_bug.cgi?id=4411
-
- * symbols/ch, symbols/inet, symbols/base.xml.in: added mac stuff from
- https://bugs.freedesktop.org/show_bug.cgi?id=6960
-
-2006-06-13 Sergey Udaltsov
-
- * symbols/mt: fixed mt(us), closing
- https://bugs.freedesktop.org/show_bug.cgi?id=1411
-
-2006-06-10 Sergey Udaltsov
-
- * symbols/level5, compat5/level5: better working Canadian
- layout, but not complete yet
-
-2006-06-01 Sergey Udaltsov
-
- * symbols/am: fixed comma in Armenian, closing
- https://bugs.freedesktop.org/show_bug.cgi?id=7080
-
-2006-05-28 Sergey Udaltsov
-
- * symbols/inet,rules/base.xml.in,rules/base.lists.part:
- added Logitech Cordless Desktop LX-300
- https://bugs.freedesktop.org/show_bug.cgi?id=5609
-
-2006-05-28 Sergey Udaltsov
-
- * rules/base.ml_c: fixed compat for jp layout, closing
- https://bugs.freedesktop.org/show_bug.cgi?id=4002
-
-2006-05-17 Sergey Udaltsov
-
- * symbols/inet: fixed power_g5, partially closing
- https://bugs.freedesktop.org/show_bug.cgi?id=6960
-
-2006-05-13 Sergey Udaltsov
-
- * symbols/fi: added fi(kotoistus)
- https://bugs.freedesktop.org/show_bug.cgi?id=6901
-
-2006-05-05 Sergey Udaltsov
-
- * symbols/de: added de(neo)
- https://bugs.freedesktop.org/show_bug.cgi?id=6837
-
-2006-05-04 Sergey Udaltsov
-
- * symbols/inet: fixed cymotionlinux, closing
- https://bugs.freedesktop.org/show_bug.cgi?id=6828
-
-2006-05-04 Sergey Udaltsov
-
- * rules/base.xml.in,symbols/iq,symbols/in,symbols/sy: added Kurdish,
- closed https://bugs.freedesktop.org/show_bug.cgi?id=6159
- one more time
-
-2006-04-20 Sergey Udaltsov
-
- * keycodes/evdev: added LSGT, closing
- https://bugs.freedesktop.org/show_bug.cgi?id=6674
-
-2006-04-19 Sergey Udaltsov
-
- * symbols/macintosh_vndr/(be,de,ch): use keypad(comma)
-
-2006-04-19 Sergey Udaltsov
-
- * rules/*, keymap/sgi_vndr/*: shift_toggle -> shifts_toggle,
- fixing https://bugs.freedesktop.org/show_bug.cgi?id=5078
-
-2006-04-08 Sergey Udaltsov
-
- * keycodes/xfree86,symbols/br: fixed abnt2 keymap and layout
- https://bugs.freedesktop.org/show_bug.cgi?id=4910
-
-2006-04-08 Sergey Udaltsov
-
- * geometry/macintosh: fixed mac geometry
- https://bugs.freedesktop.org/show_bug.cgi?id=4714
-
-2006-04-05 Sergey Udaltsov
-
- * rules/base.xml.in, changed PC-98xx Series to Japan,
- https://bugs.freedesktop.org/show_bug.cgi?id=5591
-
-2006-04-04 Sergey Udaltsov
-
- * symbols/compose,rules/base.xml.in,rules/base.o_s.part: added
- compose(lwin)
- https://bugs.freedesktop.org/show_bug.cgi?id=2396
-
-2006-04-04 Sergey Udaltsov
-
- * symbols/inet,rules/base.xml.in: added Logitech diNovo
- https://bugs.freedesktop.org/show_bug.cgi?id=1681
-
-2006-04-04 Sergey Udaltsov
-
- * symbols/inet: fixed Logitech Access Keyboard
- https://bugs.freedesktop.org/show_bug.cgi?id=1018
-
-2006-04-04 Sergey Udaltsov
-
- * symbols/pt: added LSGT
- https://bugs.freedesktop.org/show_bug.cgi?id=970
-
-2006-04-02 Sergey Udaltsov
-
- * symbols/be, rules/base.xml.in: added 'be(wang)'
- https://bugs.freedesktop.org/show_bug.cgi?id=6474
-
-2006-03-28 Sergey Udaltsov
-
- * symbols/cd, symbols/Makefile.am: added 'cd'
- https://bugs.freedesktop.org/show_bug.cgi?id=5500
-
-2006-03-27 Sergey Udaltsov
-
- * keycodes/macintosh,keymap/macintosh,rules/base.m_k.part: fixed
- Macintosh F13-F15, closed
- https://bugs.freedesktop.org/show_bug.cgi?id=6399
-
-2006-03-25 Sergey Udaltsov
-
- * symbols/inet: fixed cymotion,
- https://bugs.freedesktop.org/show_bug.cgi?id=3541
-
-2006-03-25 Sergey Udaltsov
-
- * symbols/il,rules/compat/variantRename.lst: generalized 'basic',
- removed si1452, closed
- https://bugs.freedesktop.org/show_bug.cgi?id=6375
-
-2006-03-23 Sergey Udaltsov
-
- * symbols/group: another attempt to fix unfamous
- RAlt problem, reported in ubuntu:
- https://launchpad.net/distros/ubuntu/+source/xkeyboard-config/+bug/35845
- Now all types are specified for Group1, to make it consistent
-
-2006-03-22 Sergey Udaltsov
-
- * rules/base.xml.in,symbols/tr: added Kurdish, closed
- https://bugs.freedesktop.org/show_bug.cgi?id=6159
-
-2006-03-22 Sergey Udaltsov
-
- * rules/base.xml.in: added missing Logitech models, fixed
- https://bugs.freedesktop.org/show_bug.cgi?id=6350
-
-2006-03-21 Sergey Udaltsov
-
- * symbols/kr: added Korean layout, closing
- https://bugs.freedesktop.org/show_bug.cgi?id=6323
-
-2006-03-21 Sergey Udaltsov
-
- * types/pc,symbols/level3: another attempt to fix unfamous
- RAlt problem, reported in ubuntu:
- https://launchpad.net/distros/ubuntu/+source/xkeyboard-config/+bug/35845
-
-2006-03-17 Sergey Udaltsov
-
- * symbols/inet, rules/base*: added Acer Ferrari 4K
- https://bugs.freedesktop.org/show_bug.cgi?id=5259
-
-2006-03-16 Sergey Udaltsov
-
- * symbols/ee: improved ee(dvorak), closing
- https://bugs.freedesktop.org/show_bug.cgi?id=4568
-
-2006-03-05 Sergey Udaltsov
-
- * configure.in, NEWS, Changelog:Preparing release 0.8
-
-2006-02-26 Sergey Udaltsov
-
- * symbols/es, rules/base.xml.in: added es(cat), closing
- https://bugs.freedesktop.org/show_bug.cgi?id=6047
-
-2006-02-25 Alan Coopersmith
-
- * symbols/sun_vndr/*, compat/japan, compat/mousekeys,
- geometry/sun:
- massive update from Sun, see
- https://bugs.freedesktop.org/show_bug.cgi?id=5725
-
-2006-02-24 M. Emal Alekozai <memala@gmx.net>
-
- * symbols/af, symbols/Makefile.am, rules/base.xml:
- added Afghan, closing
- https://bugs.freedesktop.org/show_bug.cgi?id=6013
-
-2006-02-15 Zephaniah E. Hull <warp@aehallh.com>
-
- * keycodes/Makefile.am:
- * keycodes/evdev:
- * rules/base.m_k.part:
- Add the evdev keyboard data files. Closing
- https://bugs.freedesktop.org/show_bug.cgi?id=5903
-
-2006-02-21 svu
-
- * symbols/inet: Fixed inet(armada)
- https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=5893
-
-2006-02-21 svu
-
- * symbols/hr: Fixed hr(us)
- https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=3807
-
-2006-02-01 svu
-
- * rules/compat/layoutRename.lst: Added cz_qwerty compat rule
- https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=177362
-
-2006-01-31 svu
-
- * symbols/us: Added single-handed dvoraks
- https://bugs.freedesktop.org/show_bug.cgi?id=5659
-
-2006-01-22 svu
-
- * types/level5: Fixed ScrollLock behaviour
- https://bugs.freedesktop.org/show_bug.cgi?id=5635
-
-2006-01-15 svu
-
- * symbols/bd: Corrected Bangladesh layout, closed
- https://bugs.freedesktop.org/show_bug.cgi?id=5480
-
-2006-01-14 svu
-
- * rules/base.ml_*.part: Japanese layouts are nec_vndr/jp, for
- consistency
-
-2006-01-14 svu
-
- * symbols/macintosh_vnd/is: some cosmetic stuff and some info, closing
- https://bugs.freedesktop.org/show_bug.cgi?id=5597
-
-2006-01-14 svu
-
- * rules/base.lists.part: extended non-latin list, closing
- https://bugs.freedesktop.org/show_bug.cgi?id=5590
-
-2006-01-11 svu
-
- * rules/base*part: improved stuff for non-AT keyboards, closing
- https://bugs.freedesktop.org/show_bug.cgi?id=5507
-
-2006-01-10 svu
-
- * geometry/pc: fixed geometry, closed
- https://bugs.freedesktop.org/show_bug.cgi?id=5568
-
-2006-01-08 svu
-
- * symbols/gh: added Ghana layout, closed
- https://bugs.freedesktop.org/show_bug.cgi?id=5497
-
-2006-01-06 svu
-
- * symbols/ad: added Catalan layout, closed
- https://bugs.freedesktop.org/show_bug.cgi?id=5526
-
-2006-01-01 svu
-
- * symbols/in: fixed ben_probhat, closed
- https://bugs.freedesktop.org/show_bug.cgi?id=1012
-
-2005-12-31 svu
-
- * symbols/ru, rules/base.xml.in: added
- Tatar, closing https://bugs.freedesktop.org/show_bug.cgi?id=4818
-
-2005-12-31 svu
-
- * symbols/kh, rules/base.xml.in, symbols/Makefile.am: added
- Khmer, closing https://bugs.freedesktop.org/show_bug.cgi?id=5389
-
-2005-12-31 svu
-
- * symbols/epo, rules/base.xml.in, symbols/Makefile.am: added
- Esperanto, closing https://bugs.freedesktop.org/show_bug.cgi?id=5454
-
-2005-12-30 svu
-
- * symbols/ctrl: expanding Caps a bit, closing
- https://bugs.freedesktop.org/show_bug.cgi?id=3193
-
-2005-12-20 svu
-
- * symbols/hu: returned def_dot (instead of def_comma, really
- eliminated)
-
-2005-12-10 svu
-
- * symbols/compat/layoutRename.lst: added en_US
-
-2005-12-01 svu
-
- * symbols/inet, rules/base.xml.in: added Inspiron 6000 keys, closed
- https://bugs.freedesktop.org/show_bug.cgi?id=5195
-
-2005-12-01 svu
-
- * symbols/inet: HUGE redesign of the inet file. Major reorganization
- of Logitech keyboard. HUGE thanks to Fr?d?ric BOITEUX
-
-2005-11-26 svu
-
- * symbols/group, symbols/level3, compat/level5, compat/misc:
- Fixing problem with level3(ralt) and group(alts_toggle).
- Now "us,ru,se" works ok.
-
-2005-10-20 svu
-
- * symbols/inet, rules:
- adding Dell USB Multimedia Keybard, closing
- https://bugs.freedesktop.org/show_bug.cgi?id=4826
-
-2005-10-17 svu
-
- * symbols, types, compat, rules:
- adding 5th level and beyond, trying to hack 1-group Canadian layout
-
-2005-10-11 svu
-
- * symbols/macintosh_vndr/fr: update French Macintosh keyboard, closed
- https://bugs.freedesktop.org/show_bug.cgi?id=2870
-
-2005-10-10 svu
-
- * symbols/za, rules/base.xml.in: added South Afrika, closed
- https://bugs.freedesktop.org/show_bug.cgi?id=2856
-
-2005-10-09 svu
-
- * symbols/inet: expanded Inspiron definition, closed
- https://bugs.freedesktop.org/show_bug.cgi?id=4071
-
-2005-10-07 svu
-
- * symbols/hu: fixed comma issue, closed
- https://bugs.freedesktop.org/show_bug.cgi?id=4693
-
-2005-10-04 svu
-
- * symbols/by, rules/base.xml.in: added by(latin), closed
- https://bugs.freedesktop.org/show_bug.cgi?id=4576
-
-2005-10-04 svu
-
- * symbols/gr: added keypad(comma), closed
- https://bugs.freedesktop.org/show_bug.cgi?id=3538
-
-2005-10-02 svu
-
- * symbols/se:
- updating svorak, closing
- https://bugs.freedesktop.org/show_bug.cgi?id=3635
-
-2005-10-02 svu
-
- * rules/base.lists.part, rules/base.xml.in,
- symbols/inet:
- adding Genius Comfy, closing
- https://bugs.freedesktop.org/show_bug.cgi?id=2275
-
-2005-10-02 svu
-
- * rules/Makefile.am, rules/HDR,
- rules/base.l1o_s.part, rules/base.l2o_s.part,
- rules/base.l3o_s.part, rules/base.l4o_s.part:
- adding "layout + option -> symbols" rules,
- for properly maingating RAlt as AltGr + alts_toggle
- IMPORTANT: REQUIRES FIXING XORG
-
-2005-10-02 svu
-
- * rules/base.xml.in, symbols/ee:
- added Estonian Dvorak, closed
- https://bugs.freedesktop.org/show_bug.cgi?id=4568
-
-2005-10-02 svu
-
- * rules/base.xml.in, symbols/inet, rules/base.lists.part:
- Added eMachines m68xx notebooks keyboards, closed
- https://bugs.freedesktop.org/show_bug.cgi?id=4000
-
-2005-10-01 svu
-
- * rules/base.xml.in, symbols/inet, rules/base.lists.part:
- Added SILVERCREST Multimedia Wireless Keyboard, closed
- https://bugs.freedesktop.org/show_bug.cgi?id=4217
-
-2005-09-30 svu
-
- * rules/compat/layoutRename.lst:
- added us_intl, fixed https://bugs.freedesktop.org/show_bug.cgi?id=4642
-
-2005-09-30 svu
-
- * po/sl.po:
- Slovenian translation
-
-2005-09-22 svu
-
- * rules/base.xml.in, rules/base.o_s.part, symbols/compose:
- adding CapsLock as Compose, closing
- https://bugs.freedesktop.org/show_bug.cgi?id=4548
-
-2005-09-22 svu
-
- * rules/Makefile.am, rules/merge.sh
- fixing merging in env where srcdir != objdir, closing
- https://bugs.freedesktop.org/show_bug.cgi?id=4547
-
-2005-09-22 svu
-
- * rules/base.xml.in, symbols/kz:
- change Cyr to Rus
-
-2005-09-21 svu
-
- * rules/base.ml_s.part:
- IMPORTANT: NO MORE 2-GROUP CANADIAN DEFAULT CONFIGURATION
-
-2005-09-21 svu
-
- * symbols/kz, symbols/Makefile.am, rules/base.xml.in:
- added Kazakh, fixing
- https://bugs.freedesktop.org/show_bug.cgi?id=4497
-
-2005-09-20 svu
-
- * symbols/macintoch_vndr/ch:
- Updated de_CH, from
- https://bugs.freedesktop.org/show_bug.cgi?id=4520
-
-2005-09-20 svu
-
- * symbols/mk, rules/base.xml.in:
- removing controversal 'FYROM'
-
-2005-09-14 svu
-
- * symbols/inet, rules/base.xml.in rules/base.lists.part:
- Added Cherry CyBo@rd USB-Hub. Thanks to Paul Egan
- Fixed https://bugs.freedesktop.org/show_bug.cgi?id=4498
-
-2005-09-14 svu
-
- * symbols/cs: a bit of cleanup by Denis
-
-2005-09-13 svu
-
- * configure.in: added Finnish translation
-
-2005-09-04 svu
-
- * symbols/no:
- fixed no(dvorak), closing
- https://bugs.freedesktop.org/show_bug.cgi?id=4397
-
-2005-09-04 svu
-
- * rules/base.xml.in, symbols/inet:
- adding Power G5
-
-2005-09-04 svu
-
- * rules/base.xml.in, symbols/ro:
- Fixing Romanian, closing
- https://bugs.freedesktop.org/show_bug.cgi?id=371
-
-2005-09-04 svu
-
- * rules/base.xml.in, symbols/lk:
- No TSCII/INSCRIPT in Sri Lanka,
- according to <hash@jayasolutions.cjb.net>
-
-2005-08-25 svu
-
- * rules/base.xml.in:
- Control -> Ctrl everywhere, for consistency sake
-
-2005-08-25 svu
-
- * rules/base.xml.in, symbols/cs:
- Serbia -> Serbia and Montenegro
-
-2005-08-25 svu
-
- * configure.in, po/sr@Latn.po:
- adding sr@Latn translation, thanks to Danilo
-
-2005-08-24 svu
-
- * configure.in:
- preparing 0.6
-
-2005-08-24 svu
-
- * rules/base.xml.in, symbols/mk,
- rules/compat/layoutRename.lst:
- Move Macedonian to country-based
-
-2005-08-23 svu
-
- * rules/base.xml.in, symbols/ba,
- symbols/si, symbols/cs, symbols/hr:
- Major Balkanian revolution by Danilo Segan. GREAT THANKS to him.
-
-2005-08-22 svu
-
- * rules/base.xml.in, symbols/mv:
- Moved Dhivehi to Maldives, fixed #3716
-
-2005-08-22 svu
-
- * rules/compat/layoutRename.lst:
- fixed http://bugzilla.ubuntu.com/show_bug.cgi?id=13919
-
-2005-08-16 svu
-
- * rules/base.xml.in, symbols/ir:
- fixed https://bugs.freedesktop.org/show_bug.cgi?id=4102
-
-2005-08-11 svu
-
- * symbols/jp, symbols/pc:
- fixed https://bugs.freedesktop.org/show_bug.cgi?id=847
-
-2005-08-07 svu
-
- * symbols/bg:
- fixed https://bugs.freedesktop.org/show_bug.cgi?id=4010
-
-2005-08-06 svu
-
- * Makefile.am:
- Allowing multiple compatibility symlinks (xfree86,xorg).
- Thanks to Daniel Stone for the feedback
-
-2005-08-06 svu
-
- * Makefile.am:
- Fixing the xkbcomp symlink creation
- Thanks to Daniel Stone for the feedback
-
-2005-08-04 svu
-
- * Makefile.am, configure.in, xkbrules.am:
- Taking nice ideas from xkbdata.
- Thanks to Daniel Stone for his knowledge of autofoo
-
-2005-08-04 svu
-
- * symbols/in, symbols/lk,
- rules/base.xml.in, rules/compat/variantRename.lst:
- a bit reogranizing tamil stuff
-
-2005-08-03 svu
-
- * symbols/ie, rules/base.xml.in, rules/compat/variantRename.lst:
- getting rid of laptop variants in 'ie'
-
-2005-08-02 svu
-
- * symbols/in, rules/base.xml.in, rules/compat/variantRename.lst:
- moving 'mal_plusnum' to 'mal'
-
-2005-08-01 svu
-
- * symbols/il, symbols/hr, symbols/tj:
- fixing two-group layouts
-
-2005-08-01 svu
-
- * symbols, rules:
- putting syr to sy, dzo to bt
-
-2005-07-31 svu
-
- * symbols, rules:
- putting smi to no, fi, se
-
-2005-07-31 svu
-
- * symbols, rules:
- putting Syriac to Syria (setting 'ara' as default)
-
-2005-07-31 svu
-
- * symbols, rules:
- putting Devangari, Gurmukhi into 'in'
-
-2005-07-31 svu
-
- * symbols, rules:
- changing 'lao' to 'la'
-
-2005-07-31 svu
-
- * symbols, rules:
- putting Inuktitut into 'ca'
-
-2005-07-31 svu
-
- * symbols, rules:
- putting Ogham into 'ie'. Cleaning it up.
-
-2005-07-29 svu
-
- * symbols, rules:
- reorganizing Asian layouts, round #1
-
-2005-07-25 svu
-
- * symbols/tr:
- fixed Turkish, according to
- https://bugs.freedesktop.org/show_bug.cgi?id=2558
-
-2005-07-25 svu
-
- * symbols/hr:
- added belowdot, abovedot, in relation to
- https://bugs.freedesktop.org/show_bug.cgi?id=475
-
-2005-07-24 svu
-
- * symbols/div,
- symbols/Makefile.am,
- rules/base.xml.in: adding Dhivehi, fixing
- https://bugs.freedesktop.org/show_bug.cgi?id=3716
-
-2005-07-23 svu
-
- * symbols/es,
- rules/base.xml.in:
- adding Spanish dvorak, pointer from
- https://bugs.freedesktop.org/show_bug.cgi?id=2344
-
-2005-07-21 svu
-
- * symbols/sun_vndr/us,
- rules/sun,
- keycodes/sun,
- geometry/sun: adding more keyboards, fixing
- https://bugs.freedesktop.org/show_bug.cgi?id=2037
-
-2005-07-20 svu
-
- * symbols/ru,
- symbols/us,
- symbols/se,
- symbols/ua,
- rules/base.xml.in:
- sorting out Russian layout, fixing (without 3rd and 4th groups)
- https://bugs.freedesktop.org/show_bug.cgi?id=2582
-
-2005-07-15 svu
-
- * symbols/inet, rules/base.xml.in:
- added Cherry CyMotion Linux, fixed
- https://bugs.freedesktop.org/show_bug.cgi?id=3789
-
-2005-07-02 svu
-
- * symbols/nl: fixed Dutch layout
-
-2005-06-17 svu
-
- * symbols/pl: added AB10 to qwertz
- https://bugs.freedesktop.org/show_bug.cgi?id=3298
-
-2005-06-17 svu
-
- * symbols/inet, rules/base.xml.in: added logiultrax,
- https://bugs.freedesktop.org/show_bug.cgi?id=3523
-
-2005-04-17 svu
-
- * symbols/tam, rules/base.xml.in: changed default for Tamil,
- https://bugs.freedesktop.org/show_bug.cgi?id=2971
-
-2005-04-02 svu
-
- * symbols/de, rules/base.xml.in: added de(dvorak),
- https://bugs.freedesktop.org/show_bug.cgi?id=2681
-
-2005-03-10 svu
-
- * po/Makefile.am: adding POTFILES* into the dist
- * Makefile.am, rules/Makefile.am: adding DISTCLEANFILES
-
-2005-03-09 svu
-
- * symbols/us: fixing dvorak,
- https://bugs.freedesktop.org/show_bug.cgi?id=2641
-
-2005-02-05 svu
-
- * configure.in, NEWS: preparing 0.5
-
-2005-02-03 svu
-
- * symbols/srp, types/extra: replaced SERBIAN_ALPHABETIC with
- FOUR_LEVEL_ALPHABETIC, as Danilo requested. Also, SERBIAN_CAPS
- renamed to SEPARATE_CAPS_AND_SHIFT_ALPHABETIC.
-
-2005-01-21 svu
-
- * rules/base.lists.part,
- rules/base.xml.in,
- symbols/inet: addin my own Acer Travelmate 800 keyboard
- (based on acerhk kernel module).
-
-2005-01-21 svu
-
- * symbols/gr: a bit more order in group name (needed for 'basic' but
- not for 'bare'
-
-2005-01-20 svu
-
- * symbols/hr: added missing keymapping,
- fixed https://bugs.freedesktop.org/show_bug.cgi?id=2325
-
-2005-01-19 svu
-
- * symbols/us: removed illegal 'hidden' attribute from the default layout
-
-2005-01-18 svu
-
- * symbols/cz, rules/base.xml.in: fixed the Czech layout,
- https://bugs.freedesktop.org/show_bug.cgi?id=2319
-
-2005-01-16 svu
-
- * symbols, rules/base.xml.in: HUGE commit - adjusting the group names
- according to the descriptions.
- Also, some layouts were missing the default variants - added one.
- Also, some default variants were listed in the variantLists - now they are removed.
-
-2005-01-06 svu
-
- * symbols/am, rules/base.xml.in: Removing old Armenian layout,
- fixing http://bugs.freedesktop.org/show_bug.cgi?id=2226
-
-2004-12-22 svu
-
- * symbols: massive patch for the group names (by Denis Barbier)
- * rules/base.xml.in: first iteration, match the country names with
- the group names
-
-2004-12-21 02:07 svu
-
- * po/el.po,
- configure.in: Greek translation
-
-2004-12-20 20:30 svu
-
- * symbols/inet,
- rules/base.lists.part,
- rules/base.xml.in: added A4Tech KBS-8, thanks to olo at force dot sk.
- fixed https://bugs.freedesktop.org/show_bug.cgi?id=2113
-
-2004-12-10 00:30 svu
-
- * symbols/inet: removed keyboard names from the group names,
- fixed https://bugs.freedesktop.org/show_bug.cgi?id=2044
-
-2004-12-08 00:30 svu
-
- * symbols/mkd,
- rules/base.xml.in,
- rules/compat/layoutRename.lst,
- rules/compat/Makefile.am: Macedonian is now language-based,
- not country-based. Compatibility rule added.
-
-2004-12-04 01:40 svu
-
- * symbols/mk, rules/base.xml.in: small fix for Makedonian
-
-2004-12-03 00:40 svu
-
- * configure.in, Makefile.am, compiled: some cleanup in the
- build process
-
-2004-11-29 19:00 svu
-
- * symbols/sin: Small patch for Sinhala from Harshula
-
-2004-11-14 22:14 svu
-
- * symbols/sin: Small patch for Sinhala from Harshula
-
-2004-10-31 01:20 svu
-
- * symbols/ca, rules/base.xml.in: added fr-dvorak, thanks to
- Jonathan Bastien-Filiatrault
-
-2004-10-29 01:15 svu
-
- * symbols/am: fixed phonetic layout, bug
- http://freedesktop.org/bugzilla/show_bug.cgi?id=1714
-
-2004-10-29 00:55 svu
-
- * rules/base.xml.in, rules/base.lists.part, symbols/inet:
- Added Cherry CyMotion Master XPress, fixed
- http://freedesktop.org/bugzilla/show_bug.cgi?id=1715
-
-2004-10-26 21:08 svu
-
- * symbols/Makefile.am, symbols/kg, rules/base.xml.in: added
- Kyrgyz, thanks to Yury Fedorov
-
-2004-10-12 18:45 svu
-
- * symbols/Makefile.am, symbols/sin, rules/base.xml.in: added
- Sinhalese, thanks to Harshula Jayasuriya
-
-2004-10-10 23:59 svu
-
- * po/: af.po, az.po, bg.po, cs.po, da.po, fr.po, hu.po, nl.po,
- ru.po, sk.po, sq.po, sr.po, sv.po, tr.po, uk.po, zh_CN.po: update
- from TP
-
-2004-10-09 19:34 svu
-
- * symbols/: mal, mao, mm, mn, mt, nl, ogam, ori, pc, pl, pt, ru,
- sk, smi, srvr_ctrl, syr, tam, tel, th, tr, ua, urd, us: adding
- the keyword
-
-2004-10-09 18:40 svu
-
- * symbols/: jp, kan, lao, latam, latin, level3, lt, lv: adding the
- keyword
-
-2004-10-09 18:35 svu
-
- * symbols/: deva, dzo, ee, es, eurosign, fo, fr, gb, ge, gr, guj,
- guru, ie, iku, il, inet, ir, is, it: adding the keyword
-
-2004-10-09 18:29 svu
-
- * symbols/: al, altwin, am, ara, az, be, ben, bg, by, capslock, ch,
- compose, ctrl, cz: adding the keyword
-
-2004-10-09 18:26 svu
-
- * symbols/: ca, uz, vn: adding the keyword
-
-2004-10-09 18:23 svu
-
- * symbols/: ca, uz, vn: fixing
- https://freedesktop.org/bugzilla/show_bug.cgi?id=1566
-
-2004-10-09 00:31 svu
-
- * symbols/ch: fixing
- https://freedesktop.org/bugzilla/show_bug.cgi?id=1562
-
-2004-10-09 00:20 svu
-
- * symbols/ca: fixing
- https://freedesktop.org/bugzilla/show_bug.cgi?id=1563
-
-2004-10-08 21:55 svu
-
- * symbols/hu: fixing
- https://freedesktop.org/bugzilla/show_bug.cgi?id=1561
-
-2004-09-29 23:25 svu
-
- * symbols/macintosh_vndr/: Makefile.am, is: Added Icelandic layout
- to the Macintosh group
-
-2004-09-28 00:00 svu
-
- * NEWS, configure.in: preparing 0.4
-
-2004-09-18 01:00 svu
-
- * BUGS, rules/base.xml.in: David noticed small glitches in
- base.xml.in
-
-2004-09-16 01:11 svu
-
- * rules/Makefile.am, rules/base.o_s.part, rules/base.xml.in,
- rules/compat/Makefile.am, rules/compat/base.o_s.part,
- symbols/group: shift_toggle -> shifts_toggle
-
-2004-09-15 23:20 svu
-
- * symbols/group: make the ctrsl_toggle consistend with the others
-
-2004-09-14 20:54 svu
-
- * symbols/ba: more commas
-
-2004-09-14 20:38 svu
-
- * symbols/: mk, srp: more commas
-
-2004-09-14 20:14 svu
-
- * symbols/: br, de, dk, fi, hr, hu, keypad, no, pl, ro, se, si:
- keymap(comma) introduced by Frank
-
-2004-09-13 22:39 svu
-
- * symbols/tj: new local cvs keyword seems to be ok - no more $Id$
-
-2004-09-13 22:38 svu
-
- * symbols/tj: trying new local cvs keyword
-
-2004-09-13 19:49 svu
-
- * symbols/ara, symbols/bg, symbols/by, symbols/capslock,
- symbols/deva, symbols/fo, symbols/guj, symbols/guru, symbols/iku,
- symbols/il, symbols/ir, symbols/kan, symbols/lao, symbols/mk,
- symbols/mm, symbols/mt, symbols/ori, symbols/sk, symbols/srp,
- symbols/tel, compat/README, compat/ledcaps, compat/lednum,
- compat/ledscroll, docs/README.config, geometry/README,
- geometry/dell, geometry/everex, geometry/keytronic,
- geometry/kinesis, geometry/microsoft, geometry/northgate,
- geometry/sgi_vndr/O2, geometry/sgi_vndr/indigo,
- geometry/sgi_vndr/indy, keycodes/README, keycodes/aliases,
- keymap/README, keymap/sgi_vndr/cz, keymap/sgi_vndr/sk,
- rules/README, symbols/macintosh_vndr/ch,
- symbols/macintosh_vndr/es, symbols/macintosh_vndr/fi,
- symbols/macintosh_vndr/fr, symbols/macintosh_vndr/it,
- symbols/macintosh_vndr/nl, symbols/sun_vndr/usb, types/README,
- types/basic, types/default, types/numpad: no dummy XFree keyword
-
-2004-09-11 21:41 svu
-
- * symbols/tj: trying Id
-
-2004-09-09 23:05 svu
-
- * symbols/: tj: fixing keyword
-
-2004-09-09 23:02 svu
-
- * symbols/tj: fixing keyword
-
-2004-09-09 22:07 svu
-
- * symbols/level3: ONE_LEVEL fixing by Frank
-
-2004-09-09 00:01 svu
-
- * symbols/group: more fair comment
-
-2004-09-08 23:40 svu
-
- * symbols/level3: they agreed on this
-
-2004-09-08 20:14 svu
-
- * compat/Makefile.am, rules/base.o_c.part: no more capsled traces
-
-2004-09-07 23:58 svu
-
- * symbols/level3: restoring for a while, till guys make agreement
-
-2004-09-07 23:16 svu
-
- * symbols/mn: just for sync:)
-
-2004-09-07 21:51 svu
-
- * po/ru.po: updated translation
-
-2004-09-07 21:50 svu
-
- * rules/base.xml.in: small polish of the option descriptions
-
-2004-09-07 20:56 svu
-
- * symbols/: al, az, be, br, ca, cz, de, dk, dzo, ee, es, fi, fo,
- fr, gb, hr, hu, is, it, latam, level3, lt, mt, nl, no, pt, ro,
- se, si, sk, smi, srp, tr, us, vn: changing to ralt_switch
-
-2004-09-07 20:39 svu
-
- * rules/: base.o_s.part, sgi, sun: small fixes, thanks to Frank
-
-2004-09-07 20:33 svu
-
- * symbols/urd: forgotten to add
-
-2004-09-06 00:59 svu
-
- * rules/base.xml.in, symbols/Makefile.am: Adding Urdu layout,
- thanks to Zaeem Arshad
-
-2004-09-04 22:39 svu
-
- * compat/Makefile.am, compat/basic, compat/group_led,
- compat/ledcaps, compat/lednum, compat/leds, compat/ledscroll,
- compat/misc, rules/base.o_c.part, rules/base.o_s.part,
- rules/base.xml.in, symbols/Makefile.am, symbols/capslock,
- symbols/group, symbols/lock: reorganizing indicators, thanks to
- Frank Murphy
-
-2004-08-28 02:04 svu
-
- * symbols/compose, rules/base.o_s.part, rules/base.xml.in: adding
- RCtrl as Compose
-
-2004-08-27 23:57 svu
-
- * symbols/us: thanks to Frank, he noticed two default variants in
- the us layout
-
-2004-08-27 19:20 svu
-
- * rules/: base.o_s.part, base.xml.in: meta-info about eurosign
-
-2004-08-27 02:23 svu
-
- * symbols/: Makefile.am, eurosign: added eurosign
-
-2004-07-25 14:55 svu
-
- * Makefile.am, mkinstalldirs: fixing mkinstalldirs
-
-2004-07-24 00:42 svu
-
- * rules/Makefile.am: minor fix for the minor bug detected by
- distcheck
-
-2004-07-23 22:21 svu
-
- * TODO: up2date
-
-2004-07-23 22:00 svu
-
- * NEWS, configure.in: preparing 0.3
-
-2004-07-23 00:11 svu
-
- * rules/: HDR, Makefile.am, compat/.cvsignore, compat/Makefile.am,
- compat/lnv_s.sh, compat/ml1v1_s.sh: HURRAY!!! Rules are working!
- Am I cool or what?
-
-2004-07-22 02:03 svu
-
- * rules/HDR: fixing the header for MLV
-
-2004-07-21 02:21 svu
-
- * rules/: HDR, Makefile.am, base.mlv_s.part, base.mvl_s.part,
- compat/.cvsignore, compat/Makefile.am, compat/ln_s.sh,
- compat/ml1_s.sh, compat/ml_s.sh, compat/mlv_s.sh: variants are
- there
-
-2004-07-21 01:57 svu
-
- * rules/: HDR, Makefile.am, compat/.cvsignore, compat/Makefile.am,
- compat/lnv_s.sh, compat/ml1_s.sh, compat/ml1v_s.sh: a bit more
- about variants
-
-2004-07-21 01:48 svu
-
- * rules/: .cvsignore, HDR, Makefile.am, compat/.cvsignore,
- compat/Makefile.am, compat/lnv_s.sh, compat/variantRename.lst:
- adding variants - not complete yet
-
-2004-07-21 01:25 svu
-
- * rules/compat/: Makefile.am, l2_s.sh, l3_s.sh, l4_s.sh, ln_s.sh:
- single script for the layouts 2-4
-
-2004-07-21 00:02 svu
-
- * rules/merge.sh: bash is great but sh is standard - and think
- optimal, dude
-
-2004-07-20 02:57 svu
-
- * rules/compat/: l2_s.sh, l3_s.sh, l4_s.sh: the extra layouts (2-4)
- should be ADDED using '+' character
-
-2004-07-20 02:49 svu
-
- * rules/: base.ml1_c.part, base.ml1_s.part, base.ml_c.part,
- base.ml_s.part, compat/l2_s.sh, compat/l3_s.sh, compat/l4_s.sh,
- compat/ml1_s.sh, compat/ml_s.sh: alignment
-
-2004-07-20 02:33 svu
-
- * rules/compat/: ml1_s.sh, ml_s.sh: little fix
-
-2004-07-20 02:29 svu
-
- * rules/: HDR, Makefile.am, base.l1_k.part, base.l2_s.part,
- base.l3_s.part, base.l4_s.part, base.l_k.part, base.m_g.part,
- base.m_k.part, base.m_s.part, base.m_t.part, base.ml1_c.part,
- base.ml1_s.part, base.ml_c.part, base.ml_s.part, base.mvl_s.part,
- base.o_c.part, base.o_s.part, base.o_t.part, merge.sh: Now, we
- compoze the parts using bash script
-
-2004-07-18 03:54 svu
-
- * configure.in, rules/.cvsignore, rules/compat/.cvsignore,
- rules/compat/Makefile.am, rules/compat/base.lists.part,
- rules/compat/l2_s.sh, rules/compat/l3_s.sh, rules/compat/l4_s.sh,
- rules/compat/layoutRename.lst, rules/compat/ml1_s.sh,
- rules/compat/ml_s.sh: starting bundling compatibility parts
-
-2004-07-18 03:44 svu
-
- * rules/: Makefile.am, base: cleaning a bit before adding the
- compat directory
-
-2004-07-18 01:56 svu
-
- * rules/: Makefile.am, base, base.l1_k.part, base.l2_s.part,
- base.l3_s.part, base.l4_s.part, base.l_k.part, base.lists.part,
- base.m_g.part, base.m_k.part, base.m_s.part, base.m_t.part,
- base.ml1_c.part, base.ml1_s.part, base.ml_c.part, base.ml_s.part,
- base.mvl_s.part, base.o_c.part, base.o_s.part, base.o_t.part:
- better empty line handling between rule groups
-
-2004-07-18 01:42 svu
-
- * rules/: Makefile.am, base, base.hdr.part, base.l1_k.part,
- base.l2_s.part, base.l3_s.part, base.l4_s.part, base.l_k.part,
- base.lists.part, base.m_g.part, base.m_k.part, base.m_s.part,
- base.m_t.part, base.ml1_c.part, base.ml1_s.part, base.ml_c.part,
- base.ml_s.part, base.mvl_s.part, base.o_c.part, base.o_s.part,
- base.o_t.part: Now, the base rules are composed from microfiles
- *.part. I see no other way to handle compatibility in a
- manageable way. Kill me if I know it.
-
-2004-07-09 05:21 daniel
-
- * ChangeLog, configure.in: * configure.in: Alter with-xkb-base
- default to $(prefix)/lib/X11/xkb, instead of
- $(prefix)/X11R6/lib/xkb, which makes --prefix=/usr behave sanely.
-
-2004-07-08 21:40 svu
-
- * configure.in: getting rid of unnecessary AM_GLIB_GNU_GETTEXT
-
-2004-07-07 22:52 kidcrash
-
- * ChangeLog: adding required ChangeLog file
-
-2004-07-06 23:44 svu
-
- * .cvsignore: Anjuta files are not in CVS - and'll never be
-
-2004-07-04 02:00 svu
-
- * po/ru.po: updating Russian translation
-
-2004-07-04 01:31 svu
-
- * rules/base.xml.in, symbols/Makefile.am, symbols/cs, symbols/srp:
- streamlining ex-yu layouts
-
-2004-07-03 03:32 svu
-
- * rules/base.xml.in, symbols/Makefile.am, symbols/dvorak,
- symbols/fr, symbols/gb, symbols/no, symbols/pl, symbols/se,
- symbols/us, po/ru.po: splitting dvorak
-
-2004-07-02 01:59 svu
-
- * symbols/smi: fixing broken layouts, thanks to my testing scripts
-
-2004-07-02 01:49 svu
-
- * symbols/: Makefile.am, ara, gr, latam, lv, mal, ogam: fixing
- broken layouts, thanks to my testing scripts
-
-2004-07-02 00:16 svu
-
- * po/Makefile.am: adding update-po
-
-2004-07-01 22:28 svu
-
- * docs/: iso3166.csv, iso639.csv: more fresh version of the
- standards
-
-2004-07-01 03:01 svu
-
- * po/ru.po: completing Russian translation - though some things are
- questionable
-
-2004-07-01 02:59 svu
-
- * config.rpath, mkinstalldirs: why would I need these files in
- CVS???
-
-2004-07-01 02:55 svu
-
- * ABOUT-NLS: empty but very useful file
-
-2004-07-01 02:48 svu
-
- * Makefile.am, autogen.sh, configure.in, po/Makefile.am,
- rules/base.xml.in: Starting to fix intltool problem, Danilo just
- roxx
-
-2004-06-30 23:47 svu
-
- * rules/base.xml.in, symbols/Makefile.am, symbols/cs, symbols/yu:
- Changed yu to cs as Danilo advised - but not sure it is ok.
- Investigating...
-
-2004-06-30 23:25 svu
-
- * rules/base.xml.in, symbols/Makefile.am, symbols/scc, symbols/srp:
- Changing scc to srp - as Danilo advised
-
-2004-06-26 01:54 svu
-
- * BUGS: hopefully fixed Latvian layout
-
-2004-06-26 01:50 svu
-
- * rules/base.xml.in, symbols/lv: hopefully fixed Latvian layout
-
-2004-06-22 01:11 svu
-
- * configure.in: trying to set order in the Makefiles list
-
-2004-06-22 00:56 svu
-
- * Makefile.am, configure.in, autogen.sh: trying to fix intltool -
- but without much luck
-
-2004-06-20 20:09 svu
-
- * rules/base.xml.in: fixing shortDescr for Smi
-
-2004-06-20 19:04 svu
-
- * docs/: iso15924.csv, iso3166.csv, iso3166.txt, iso639.csv,
- iso639.txt: putting order into standards
-
-2004-06-20 15:36 svu
-
- * symbols/bg: bad patch application
-
-2004-06-20 15:36 svu
-
- * rules/base.xml.in: typo in Sami id
-
-2004-06-20 15:22 svu
-
- * symbols/Makefile.am: Frank forgets to chance Makefile.am:)
-
-2004-06-20 14:57 svu
-
- * xkeyboard-config.spec.in, rules/base, rules/base.xml.in,
- docs/Makefile.am, docs/README.symbols, symbols/ar, symbols/ara,
- symbols/ba, symbols/bs, symbols/dev, symbols/deva, symbols/dz,
- symbols/dzo, symbols/el, symbols/gr, symbols/gur, symbols/guru,
- symbols/iku, symbols/iu, symbols/la, symbols/lao, symbols/latam,
- symbols/lo, symbols/mal, symbols/mao, symbols/mi, symbols/ml,
- symbols/ogam, symbols/ogham, symbols/sapmi, symbols/scc,
- symbols/smi, symbols/sr, symbols/tam, symbols/tml: Second phase
- of i18n. Frank rocks the world:)
-
-2004-06-19 04:34 svu
-
- * symbols/mk: Macedonia AKA FYROM
-
-2004-06-19 04:32 svu
-
- * rules/: Makefile.am, base-it.lst, base.lst, sgi.lst, sun.lst,
- xfree98.lst: lst file is not generated automatically - only
- base.lst
-
-2004-06-19 04:16 svu
-
- * rules/: sgi, sun: en_US actually died only now
-
-2004-06-19 04:07 svu
-
- * symbols/: en_US, sun_vndr/se: en_US actually died only now
-
-2004-06-16 02:07 svu
-
- * rules/base.xml.in: ISOization, part1
-
-2004-06-16 02:00 svu
-
- * rules/base.xml.in, symbols/bg, symbols/ch, symbols/el,
- symbols/il, symbols/mm: ISOization, part1
-
-2004-06-15 22:04 svu
-
- * rules/base.xml.in: better wording for Urkainian RSTU description
-
-2004-06-15 19:19 svu
-
- * rules/base.xml.in, symbols/ru, symbols/ua: Added RSTU
- Ukranian/Russian layouts. Thanks to Andrew Porokhnyak
-
-2004-06-13 23:12 svu
-
- * symbols/inet: actually adding gyration keyboard
-
-2004-06-13 21:30 svu
-
- * docs/HOWTO.testing: Forgot to add actual document
-
-2004-06-13 21:21 svu
-
- * BUGS, rules/base, rules/base.lst, rules/base.xml.in, symbols/am,
- symbols/inet, symbols/lt, symbols/us: fixing loads of bugs from
- fd.o bugzilla
-
-2004-06-13 13:28 svu
-
- * xkeyboard-config.spec.in, docs/Makefile.am: Added HOWTO.testing
- by Frank Murphy
-
-2004-06-12 02:17 svu
-
- * symbols/mi: getting rid of pc/
-
-2004-06-12 02:14 svu
-
- * symbols/mi: getting rid of pc/
-
-2004-06-12 02:06 svu
-
- * NEWS: Redoing 0.2
-
-2004-06-12 02:05 svu
-
- * symbols/br: fixing bug 515
-
-2004-06-12 02:01 svu
-
- * rules/base.xml.in, symbols/Makefile.am, symbols/mi: Added Maori,
- thanks to John C Barstow
-
-2004-06-12 01:50 svu
-
- * docs/: iso3166.txt, iso639.txt: just to have standards for
- reference
-
-2004-06-10 23:58 svu
-
- * NEWS: Preparing 0.2
-
-2004-06-10 23:51 svu
-
- * README, configure.in: Preparing 0.2
-
-2004-06-06 04:22 svu
-
- * xkeyboard-config.spec.in, docs/HOWTO.transition,
- docs/Makefile.am, rules/Makefile.am: adding HOWTO.transition
-
-2004-05-28 23:59 svu
-
- * Makefile.am, configure.in: Optional creation of xkbcomp symlink
- in .../X11/xkb
-
-2004-05-25 22:30 svu
-
- * NEWS: something to say
-
-2004-05-24 22:15 svu
-
- * po/xkbdesc.pot: changing the project name
-
-2004-05-24 22:08 svu
-
- * .cvsignore, Makefile.am, autogen.sh, configure.in,
- xkbdesc.spec.in, xkeyboard-config.spec.in: changing the project
- name
-
-2004-05-23 21:01 svu
-
- * rules/base, rules/base.xml.in, symbols/altwin: Daniel Elstner
- sent new option for Tux keys
-
-2004-05-18 00:24 svu
-
- * configure.in: no glib stuff
-
-2004-05-12 13:51 pascal
-
- * rules/base, symbols/bs: Convert Bosnian keymap to multi-layout
- compatible form.
-
-2004-05-09 22:26 svu
-
- * Makefile.am, README.config, README.enhancing, configure.in,
- xkbdesc.spec.in, docs/.cvsignore, docs/Makefile.am,
- docs/README.config: reorganization in docs
-
-2004-05-09 21:40 svu
-
- * TODO, docs/README.enhancing: 2 bits of docs
-
-2004-05-07 19:48 svu
-
- * po/ru.po: up2date
-
-2004-05-07 19:27 svu
-
- * rules/base.xml.in, symbols/tr, tests/testLayouts.pl,
- tests/testOptions.pl, tests/xkbTestFunc.pm: Some small fixes
- made. Options are now testable as well.
-
-2004-05-06 02:00 svu
-
- * tests/: listCI2.xsl, testLayouts.pl, testOptions.pl,
- xkbTestFunc.pm: one more test - but still problems passing it
-
-2004-05-06 01:15 svu
-
- * configure.in, symbols/mk, tests/testLayouts.pl: Makedonian
- problem fixed - and BOTH tests are OK
-
-2004-05-06 01:05 svu
-
- * symbols/digital_vndr/Makefile.am, symbols/digital_vndr/lk,
- symbols/digital_vndr/pc, symbols/digital_vndr/us,
- symbols/digital_vndr/vt, symbols/fujitsu_vndr/Makefile.am,
- symbols/fujitsu_vndr/jp, keycodes/digital_vndr/Makefile.am,
- keycodes/digital_vndr/lk, keycodes/digital_vndr/pc,
- keycodes/sgi_vndr/Makefile.am, keycodes/sgi_vndr/indigo,
- keycodes/sgi_vndr/indy, keycodes/sgi_vndr/iris, keymap/macintosh,
- keymap/sony, keymap/xfree98, keymap/digital_vndr/Makefile.am,
- keymap/digital_vndr/us, keymap/sgi_vndr/Makefile.am,
- keymap/sgi_vndr/be, keymap/sgi_vndr/bg, keymap/sgi_vndr/ca,
- keymap/sgi_vndr/ch, keymap/sgi_vndr/cz, keymap/sgi_vndr/de,
- keymap/sgi_vndr/dk, keymap/sgi_vndr/dvorak,
- keymap/sgi_vndr/en_US, keymap/sgi_vndr/es, keymap/sgi_vndr/fi,
- keymap/sgi_vndr/fr, keymap/sgi_vndr/gb, keymap/sgi_vndr/hu,
- keymap/sgi_vndr/it, keymap/sgi_vndr/jp, keymap/sgi_vndr/no,
- keymap/sgi_vndr/pl, keymap/sgi_vndr/pt, keymap/sgi_vndr/ru,
- keymap/sgi_vndr/se, keymap/sgi_vndr/sk, keymap/sgi_vndr/th,
- keymap/sgi_vndr/us, keymap/sun_vndr/Makefile.am,
- keymap/sun_vndr/de, keymap/sun_vndr/es, keymap/sun_vndr/fi,
- keymap/sun_vndr/fr, keymap/sun_vndr/no, keymap/sun_vndr/pl,
- keymap/sun_vndr/ru, keymap/sun_vndr/se, keymap/sun_vndr/uk,
- keymap/sun_vndr/us, rules/base, rules/base.xml.in,
- symbols/hp_vndr/Makefile.am, symbols/macintosh_vndr/Makefile.am,
- symbols/macintosh_vndr/apple, symbols/macintosh_vndr/ch,
- symbols/macintosh_vndr/de, symbols/macintosh_vndr/dk,
- symbols/macintosh_vndr/fi, symbols/macintosh_vndr/no,
- symbols/macintosh_vndr/pt, symbols/macintosh_vndr/se,
- symbols/macintosh_vndr/us, symbols/nec_vndr/Makefile.am,
- symbols/sgi_vndr/Makefile.am, symbols/sony_vndr/Makefile.am,
- symbols/sun_vndr/Makefile.am, symbols/sun_vndr/se,
- symbols/sun_vndr/us, symbols/xfree68_vndr/Makefile.am,
- tests/testLayouts.pl, tests/testModels.pl, tests/xkbTestFunc.pm,
- geometry/digital_vndr/Makefile.am, geometry/digital_vndr/pc,
- geometry/ibm_vndr/Makefile.am, geometry/ibm_vndr/thinkpad,
- geometry/sgi_vndr/Makefile.am: Yahoo! Models test pased ok!
-
-2004-05-05 23:32 svu
-
- * configure.in, symbols/Makefile.am,
- symbols/digital_vndr/.cvsignore,
- symbols/digital_vndr/Makefile.am, symbols/digital_vndr/lk,
- symbols/digital_vndr/pc, symbols/digital_vndr/us,
- symbols/digital_vndr/vt, symbols/fujitsu_vndr/.cvsignore,
- symbols/fujitsu_vndr/Makefile.am, symbols/fujitsu_vndr/jp,
- symbols/fujitsu_vndr/us, symbols/hp_vndr/.cvsignore,
- symbols/hp_vndr/Makefile.am, symbols/hp_vndr/us,
- symbols/macintosh_vndr/.cvsignore,
- symbols/macintosh_vndr/Makefile.am, symbols/macintosh_vndr/ch,
- symbols/macintosh_vndr/de, symbols/macintosh_vndr/dk,
- symbols/macintosh_vndr/es, symbols/macintosh_vndr/fi,
- symbols/macintosh_vndr/fr, symbols/macintosh_vndr/gb,
- symbols/macintosh_vndr/it, symbols/macintosh_vndr/nl,
- symbols/macintosh_vndr/no, symbols/macintosh_vndr/pt,
- symbols/macintosh_vndr/se, symbols/macintosh_vndr/us,
- symbols/nec_vndr/.cvsignore, symbols/nec_vndr/Makefile.am,
- symbols/nec_vndr/jp, geometry/Makefile.am,
- geometry/digital_vndr/.cvsignore,
- geometry/digital_vndr/Makefile.am, geometry/digital_vndr/lk,
- geometry/digital_vndr/pc, geometry/digital_vndr/unix,
- geometry/ibm_vndr/.cvsignore, geometry/ibm_vndr/Makefile.am,
- geometry/ibm_vndr/thinkpad, geometry/sgi_vndr/.cvsignore,
- geometry/sgi_vndr/Makefile.am, geometry/sgi_vndr/O2,
- geometry/sgi_vndr/indigo, geometry/sgi_vndr/indy,
- keycodes/Makefile.am, symbols/sgi_vndr/.cvsignore,
- symbols/sgi_vndr/Makefile.am, symbols/sgi_vndr/jp,
- symbols/sony_vndr/.cvsignore, symbols/sony_vndr/Makefile.am,
- symbols/sony_vndr/us, symbols/sun_vndr/.cvsignore,
- symbols/sun_vndr/Makefile.am, symbols/sun_vndr/se,
- symbols/sun_vndr/us, symbols/sun_vndr/usb,
- symbols/xfree68_vndr/.cvsignore,
- symbols/xfree68_vndr/Makefile.am, symbols/xfree68_vndr/amiga,
- symbols/xfree68_vndr/ataritt, keycodes/digital_vndr/.cvsignore,
- keycodes/digital_vndr/Makefile.am, keycodes/digital_vndr/lk,
- keycodes/digital_vndr/pc, keycodes/sgi_vndr/.cvsignore,
- keycodes/sgi_vndr/Makefile.am, keycodes/sgi_vndr/indigo,
- keycodes/sgi_vndr/indy, keycodes/sgi_vndr/iris,
- keymap/Makefile.am, keymap/digital_vndr/.cvsignore,
- keymap/digital_vndr/Makefile.am, keymap/digital_vndr/us,
- keymap/sgi_vndr/.cvsignore, keymap/sgi_vndr/Makefile.am,
- keymap/sgi_vndr/be, keymap/sgi_vndr/bg, keymap/sgi_vndr/ca,
- keymap/sgi_vndr/ch, keymap/sgi_vndr/cz, keymap/sgi_vndr/de,
- keymap/sgi_vndr/dk, keymap/sgi_vndr/dvorak,
- keymap/sgi_vndr/en_US, keymap/sgi_vndr/es, keymap/sgi_vndr/fi,
- keymap/sgi_vndr/fr, keymap/sgi_vndr/gb, keymap/sgi_vndr/hu,
- keymap/sgi_vndr/it, keymap/sgi_vndr/jp, keymap/sgi_vndr/no,
- keymap/sgi_vndr/pl, keymap/sgi_vndr/pt, keymap/sgi_vndr/ru,
- keymap/sgi_vndr/se, keymap/sgi_vndr/sk, keymap/sgi_vndr/th,
- keymap/sgi_vndr/us, keymap/sun_vndr/.cvsignore,
- keymap/sun_vndr/Makefile.am, keymap/sun_vndr/de,
- keymap/sun_vndr/es, keymap/sun_vndr/fi, keymap/sun_vndr/fr,
- keymap/sun_vndr/no, keymap/sun_vndr/pl, keymap/sun_vndr/ru,
- keymap/sun_vndr/se, keymap/sun_vndr/uk, keymap/sun_vndr/us: Ivan
- found dots are not good for us
-
-2004-05-03 02:33 svu
-
- * tests/: testLayouts.pl, testModels.pl, xkbTestFunc.pm: The perl
- code is a bit structured now
-
-2004-05-03 00:48 svu
-
- * po/ru.po: Russian translation, up2date
-
-2004-05-03 00:48 svu
-
- * po/xkbdesc.pot: new strings
-
-2004-05-03 00:38 svu
-
- * rules/: base, base.xml.in: some fixes in rules, more tests pass
- ok
-
-2004-05-03 00:05 svu
-
- * rules/base.xml.in, symbols/ch, symbols/mk, tests/testModels.pl:
- at least variants pass ok with tests
-
-2004-05-01 02:17 svu
-
- * symbols/: Makefile.am, hu: Hungarian layout added, thanks to
- Soós
-
-2004-04-30 05:27 pascal
-
- * rules/base, symbols/Makefile.am, symbols/jp, symbols/mn: Add
- Japanese and Mongolian layouts.
-
-2004-04-27 23:17 svu
-
- * rules/base.xml.in: Canadian layout meta-info fixed
-
-2004-04-27 23:13 svu
-
- * symbols/ge: fixed syntax typo
-
-2004-04-27 22:19 svu
-
- * rules/base, rules/base.xml.in, symbols/Makefile.am, symbols/fr,
- symbols/fr-latin9: French layouts are now merged. Thanks to
- Guylhem for the positive answer
-
-2004-04-26 00:57 svu
-
- * tests/: listCI2.xsl, testModels.pl: trying to test layouts as
- well
-
-2004-04-25 20:26 svu
-
- * tests/: listCIs.xsl, testModels.pl: starting test scripts
-
-2004-04-25 00:37 svu
-
- * symbols/us: fixing include
-
-2004-04-25 00:17 svu
-
- * rules/base.xml.in, symbols/Makefile.am, symbols/us: us_intl is
- returned as alt-intl
-
-2004-04-24 20:29 svu
-
- * symbols/Makefile.am: new layouts by Ivan should be included into
- Makefile.am
-
-2004-04-24 13:32 pascal
-
- * symbols/ca: Remove 'pc' directory name from includes in Canadian
- keymap.
-
-2004-04-24 12:35 pascal
-
- * rules/base, symbols/az, symbols/ca, symbols/group, symbols/vn:
- Add Azeri, Canadian and Vietnamese keymaps.
-
-2004-04-24 02:23 svu
-
- * rules/base.xml.in, symbols/hr: Croatian US stuff appended
-
-2004-04-24 01:55 svu
-
- * rules/base, rules/base.xml.in, symbols/Makefile.am, symbols/pl,
- symbols/pl2: second polish layout is merged
-
-2004-04-24 01:28 svu
-
- * keymap/macintosh, keymap/sony, keymap/xfree86, keymap/xfree98,
- rules/base.lst, rules/base.xml.in, symbols/Makefile.am,
- symbols/ch, symbols/cz, symbols/cz_qwerty, symbols/ge,
- symbols/ge_la, symbols/ge_ru, symbols/il, symbols/il_phonetic,
- symbols/lt, symbols/mt, symbols/mt_us, symbols/ro, symbols/se_FI,
- symbols/se_NO, symbols/se_SE, symbols/sk, symbols/sk_qwerty,
- symbols/syr, symbols/syr_phonetic, symbols/th, symbols/th_pat,
- symbols/th_tis, symbols/us_intl: a lot of layouts cleaned up -
- but way way more to go
-
-2004-04-23 00:46 svu
-
- * Makefile.am, configure.in, compiled/.cvsignore,
- compiled/Makefile.am, compiled/README: The 'compiled' directory
- is really necessary. Even if it is empty
-
-2004-04-22 00:39 svu
-
- * po/af.po, po/az.po, po/bg.po, po/cs.po, po/da.po, po/fr.po,
- po/hu.po, po/nl.po, po/ru.po, po/sk.po, po/sq.po, po/sr.po,
- po/sv.po, po/tr.po, po/uk.po, po/xkbdesc.pot, po/zh_CN.po,
- rules/Makefile.am, symbols/Makefile.am, symbols/al, symbols/am,
- symbols/ar, symbols/be, symbols/ben, symbols/br, symbols/by,
- symbols/ch, symbols/cz, symbols/cz_qwerty, symbols/de,
- symbols/dk, symbols/dvorak, symbols/ee, symbols/el,
- symbols/en_US, symbols/es, symbols/fi, symbols/fo, symbols/fr,
- symbols/fr-latin9, symbols/gb, symbols/ge_la, symbols/hr,
- symbols/ie, symbols/il, symbols/is, symbols/it, symbols/la,
- symbols/latin, symbols/lt, symbols/lv, symbols/mk, symbols/ml,
- symbols/mt, symbols/mt_us, symbols/nl, symbols/no, symbols/ogham,
- symbols/pc, symbols/pl, symbols/pl2, symbols/pt, symbols/ro,
- symbols/ru, symbols/sapmi, symbols/se, symbols/se_FI,
- symbols/se_NO, symbols/se_SE, symbols/si, symbols/sk,
- symbols/sk_qwerty, symbols/sr, symbols/syr, symbols/syr_phonetic,
- symbols/th, symbols/tml, symbols/tr, symbols/ua, symbols/us,
- symbols/us_intl, symbols/uz, symbols/yu: adding Swiss layouts and
- removing references to pc/ from files
-
-2004-04-21 00:19 svu
-
- * symbols/: Makefile.am, bs, srvr_ctrl: Bosninan layout was
- forgotten
-
-2004-04-19 23:57 svu
-
- * symbols/: Makefile.am, altwin, compose, ctrl, group, inet,
- keypad, level3, lock: adding all-important option files
-
-2004-04-16 00:58 svu
-
- * configure.in, xkbdesc.spec.in, rules/Makefile.am: now, the
- symlinks allow distributors to use their own names for the rules
- - though not really recommended, we have to be
- backward-compatible
-
-2004-04-15 00:33 svu
-
- * COPYING, Makefile.am, xkbdesc.spec.in, po/af.po, po/az.po,
- po/bg.po, po/cs.po, po/da.po, po/fr.po, po/hu.po, po/nl.po,
- po/ru.po, po/sk.po, po/sq.po, po/sr.po, po/sv.po, po/tr.po,
- po/uk.po, po/xkbdesc.pot, po/zh_CN.po: COPYING added - MIT
- license (thanks to Keithp). Some minor fixes on infrastructure
-
-2004-04-12 00:13 svu
-
- * .cvsignore, Makefile.am, autogen.sh, configure.in, rules/base,
- symbols/Makefile.am: First buildable version
-
-2004-04-11 23:03 svu
-
- * configure.in, keycodes/Makefile.am, keymap/.cvsignore,
- keymap/Makefile.am, po/af.po, po/az.po, po/bg.po, po/cs.po,
- po/da.po, po/fr.po, po/hu.po, po/nl.po, po/ru.po, po/sk.po,
- po/sq.po, po/sr.po, po/sv.po, po/tr.po, po/uk.po, po/xkbdesc.pot,
- po/zh_CN.po, rules/.cvsignore, rules/Makefile.am,
- semantics/.cvsignore, semantics/Makefile.am, symbols/.cvsignore,
- types/.cvsignore, types/Makefile.am: more automake foo - but
- still far from building the whole thing
-
-2004-04-10 03:22 svu
-
- * autogen_gnome.sh, keycodes/.cvsignore, keycodes/Makefile.am: more
- makefiles.am - but still long way to the first build
-
-2004-04-10 03:08 svu
-
- * Makefile.am, README, README.config, README.enhancing,
- configure.in, xfree86.xml.in, xfree86_xkb_xml.spec.in, xkb.dtd,
- xkbdesc.spec.in, compat/.cvsignore, compat/Makefile.am,
- compat/README, compat/accessx, compat/basic, compat/complete,
- compat/default, compat/group_led, compat/iso9995, compat/japan,
- compat/keypad, compat/leds, compat/misc, compat/mousekeys,
- compat/norepeat, compat/pc, compat/pc98, compat/xfree86,
- compat/xtest, geometry/.cvsignore, geometry/Makefile.am,
- geometry/README, geometry/amiga, geometry/ataritt,
- geometry/chicony, geometry/dell, geometry/everex,
- geometry/fujitsu, geometry/hp, geometry/keytronic,
- geometry/kinesis, geometry/macintosh, geometry/microsoft,
- geometry/nec, geometry/northgate, geometry/pc, geometry/sony,
- geometry/sun, geometry/winbook, keycodes/README,
- keycodes/aliases, keycodes/amiga, keycodes/ataritt,
- keycodes/fujitsu, keycodes/hp, keycodes/ibm, keycodes/macintosh,
- keycodes/powerpcps2, keycodes/sony, keycodes/sun,
- keycodes/xfree86, keycodes/xfree98, keymap/README, keymap/amiga,
- keymap/ataritt, keymap/macintosh, keymap/sony, keymap/xfree86,
- keymap/xfree98, po/POTFILES.in, po/af.po, po/az.po, po/bg.po,
- po/cs.po, po/da.po, po/fr.po, po/hu.po, po/nl.po, po/ru.po,
- po/sk.po, po/sq.po, po/sr.po, po/sv.po, po/tr.po, po/uk.po,
- po/zh_CN.po, rules/README, rules/base, rules/base-it.lst,
- rules/base.lst, rules/base.xml.in, rules/sgi, rules/sgi.lst,
- rules/sun, rules/sun.lst, rules/xfree98, rules/xfree98.lst,
- rules/xkb.dtd, rules/xml2lst.pl, semantics/basic,
- semantics/complete, semantics/default, semantics/xtest,
- symbols/al, symbols/am, symbols/ar, symbols/be, symbols/ben,
- symbols/bg, symbols/br, symbols/by, symbols/cz,
- symbols/cz_qwerty, symbols/de, symbols/dev, symbols/dk,
- symbols/dvorak, symbols/dz, symbols/ee, symbols/el,
- symbols/en_US, symbols/es, symbols/fi, symbols/fo, symbols/fr,
- symbols/fr-latin9, symbols/gb, symbols/ge_la, symbols/ge_ru,
- symbols/guj, symbols/gur, symbols/hr, symbols/ie, symbols/il,
- symbols/il_phonetic, symbols/ir, symbols/is, symbols/it,
- symbols/iu, symbols/kan, symbols/la, symbols/latin, symbols/lo,
- symbols/lt, symbols/lv, symbols/mk, symbols/ml, symbols/mm,
- symbols/mt, symbols/mt_us, symbols/nl, symbols/no, symbols/ogham,
- symbols/ori, symbols/pc, symbols/pl, symbols/pl2, symbols/pt,
- symbols/ro, symbols/ru, symbols/sapmi, symbols/se, symbols/se_FI,
- symbols/se_NO, symbols/se_SE, symbols/si, symbols/sk,
- symbols/sk_qwerty, symbols/sr, symbols/syr, symbols/syr_phonetic,
- symbols/tel, symbols/th, symbols/th_pat, symbols/th_tis,
- symbols/tj, symbols/tml, symbols/tr, symbols/ua, symbols/us,
- symbols/us_intl, symbols/uz, symbols/yu, types/README,
- types/basic, types/cancel, types/caps, types/complete,
- types/default, types/extra, types/iso9995, types/mousekeys,
- types/numpad, types/pc: first feed-in of the layouts. The
- revolution is coming
-
-2004-04-04 02:40 svu
-
- * configure.in, po/az.po: Azerbaijani translation, thanks to Metin
- Amiroff
-
-2004-04-04 01:14 svu
-
- * po/ru.po: Russian translation of the Syriac phonetic
-
-2004-04-04 01:12 svu
-
- * xfree86.xml.in: Syriac phonetic was not there
-
-2004-03-19 21:37 svu
-
- * configure.in: some more translations
-
-2004-03-19 21:37 svu
-
- * po/hu.po: Hungarian one
-
-2004-03-19 21:02 svu
-
- * po/: af.po, bg.po, cs.po, da.po, fr.po, nl.po, ru.po, sk.po,
- sq.po, sr.po, sv.po, tr.po, uk.po, zh_CN.po: three new
- translations
-
-2004-01-20 10:51 svu
-
- * po/ru.po: corrected tibetian language translation
-
-2004-01-19 14:41 svu
-
- * po/ru.po: updated Russian translation
-
-2004-01-19 14:41 svu
-
- * xfree86.xml.in: new items from Ivan
-
-2004-01-19 14:39 svu
-
- * xslt/xfree86.xsl: bugfix
-
-2004-01-09 14:44 svu
-
- * po/ru.po: up2date
-
-2004-01-09 14:43 svu
-
- * xfree86.xml.in: patch from Ivan - new items
-
-2004-01-07 09:32 svu
-
- * configure.in, po/fr.po: French translation, thanks to Michel
- Robitaille
-
-2004-01-06 16:20 svu
-
- * xfree86.xml.in, po/ru.po: updates from Ivan
-
-2004-01-03 14:43 svu
-
- * po/nl.po: new version, thanks to Elros
-
-2003-12-18 22:43 svu
-
- * .cvsignore, po/.cvsignore: little cleanup on messages
-
-2003-12-18 22:42 svu
-
- * Makefile.am, configure.in: little things for the latest intltool
-
-2003-12-18 22:39 svu
-
- * po/sk.po: Slovak translation, thanks to Zdenko Podobný
-
-2003-12-18 22:38 svu
-
- * po/da.po: Danish translation, thanks to Ole Laursen
-
-2003-12-18 22:34 svu
-
- * xfree86.xml.in: One more layout, one more variant, updates from
- Ivan
-
-2003-12-05 11:37 svu
-
- * xslt/xfree86.xsl: helper xslt - reduces the resulting file
-
-2003-12-05 10:39 svu
-
- * configure.in, po/tr.po: Turkish translation added, thanks to
- Nilgün Belma Bugüner
-
-2003-11-30 02:11 svu
-
- * configure.in, po/sr.po: Serbian translation added, thanks to
- Danilo Segan
-
-2003-11-29 04:06 svu
-
- * configure.in, po/zh_CN.po: Chinese simplified translation, thanks
- to Funda Wang
-
-2003-11-27 22:57 svu
-
- * configure.in, po/nl.po: NL translation. Thanks to Elros Cyriatan
-
-2003-11-27 21:19 svu
-
- * configure.in: added cs translation
-
-2003-11-27 21:15 svu
-
- * po/cs.po: First non-cyrillic translation. Thanks to Michal
- Bukovjan
-
-2003-11-25 23:52 svu
-
- * Makefile.am, NEWS, autogen_gnome.sh, configure.in,
- xfree86.xml.in, po/.cvsignore, po/Makevars, po/POTFILES.in,
- po/bg.po, po/ru.po, po/uk.po: Now the project should be buildable
- and translatable - but please no translations till the English
- version is approved
-
-2003-11-25 16:35 svu
-
- * .cvsignore, AUTHORS, Makefile.am, autogen.sh, configure.in,
- xfree86.xml.in, xfree86_xkb_xml.spec.in, xkb.dtd: first batch of
- files - but no translation yet
-
-2003-11-24 23:32 svu
-
- * README: first file in
-
+2009-12-21 Sergey Udaltsov
+
+ * symbols/ru: Added ru(typewriter-legacy),
+ https://bugs.freedesktop.org/show_bug.cgi?id=25726
+ * rules/base.o_s.part, rules/base.xml.in, symbols/group: added
+ grp(lctrl_rctrl_switch),
+ https://bugs.freedesktop.org/show_bug.cgi?id=25727
+
+2009-11-27 Sergey Udaltsov
+
+ * symbols/se: Reintroduced the broken bar in the Swedish symbol
+ layout. http://bugs.freedesktop.org/show_bug.cgi?id=8491
+
+2009-11-25 Sergey Udaltsov
+
+ * rules/base.m_s.part, symbols/inet: a bit of optimization, K6C to map
+ to Eject, always in media section
+
+2009-11-24 Sergey Udaltsov
+
+ * rules/base.xml.in, symbols/lt: removed unneeded lt(balticplus),
+ http://bugs.freedesktop.org/show_bug.cgi?id=25263
+
+2009-11-21 Sergey Udaltsov
+
+ * ../rules/base.xml.in, ../symbols/pl: added pl(dvp),
+ http://bugs.freedesktop.org/show_bug.cgi?id=25200
+
+2009-11-18 Sergey Udaltsov
+
+ * symbols/tm: small fix for tm layout, related to Ctrl+? shortcuts
+ https://bugs.freedesktop.org/show_bug.cgi?id=25074
+
+2009-11-15 Octavio Alvarez
+
+ * rules/base.xml.in: Removed thinkpadintl from base.xml.in.
+
+2009-10-20 Sergey Udaltsov
+
+ * symbols/sun_vndr/us: added backspace mapping,
+ https://bugs.freedesktop.org/show_bug.cgi?id=24554
+
+2009-10-13 Sergey Udaltsov
+
+ * rules/base.lists.part, symbols/macintosh_vndr/Makefile.am,
+ symbols/macintosh_vndr/es: Spanish mac layout just included the
+ general one
+ * rules/base.xml.in, symbols/ch: fixed Swiss default layout, added
+ legacy variant, http://bugs.freedesktop.org/show_bug.cgi?id=24490
+
+2009-10-12 Sergey Udaltsov
+
+ * rules/base.xml.in: USA Russian Phonetic keyboard layout not found in
+ search by Languages - Russian,
+ http://bugs.freedesktop.org/show_bug.cgi?id=24485
+
+2009-09-30 Sergey Udaltsov
+
+ * rules/base.o_s.part, rules/base.xml.in, symbols/group: added
+ grp:rctrl_rshift_toggle option,
+ http://bugs.freedesktop.org/show_bug.cgi?id=24234
+
+2009-09-29 Sergey Udaltsov
+
+ * configure.in, NEWS, po/*.po: preparing 1.7
+
+2009-09-15 Sergey Udaltsov
+
+ * symbols/es: addind dead_tilde,
+ https://bugs.freedesktop.org/show_bug.cgi?id=23876
+ * keycodes/sun, rules/base.m_k.part, rules/base.ml_s.part,
+ symbols/sun_vndr/us: fixed Sun keyboard model for type6,
+ https://bugs.freedesktop.org/show_bug.cgi?id=3952
+
+2009-09-08 Gaetan Nadon
+
+ * **/.cvsignore: remove cvsignore files.
+
+2009-09-02 Sergey Udaltsov
+
+ * rules/base.xml.in, symbols/by: restructured Belarussian variants,
+ https://bugs.freedesktop.org/show_bug.cgi?id=23604
+
+2009-08-28 Sergey Udaltsov
+
+ * symbols/no: updated layout,
+ http://bugs.freedesktop.org/show_bug.cgi?id=23518
+
+2009-08-20 Sergey Udaltsov
+
+ * rules/base.o_s.part, rules/base.xml.in, symbols/capslock: added
+ caps:numlock, http://bugs.freedesktop.org/show_bug.cgi?id=23323
+
+2009-08-18 Peter Hutterer
+
+ * rules/base.o_s.part, rules/base.xml.in, symbols/capslock: added
+ caps:hyper, http://bugs.freedesktop.org/show_bug.cgi?id=23356
+
+2009-08-14 Sergey Udaltsov
+
+ * rules/base.o_s.part, rules/base.xml.in, symbols/capslock: added
+ caps:none option, http://bugs.freedesktop.org/show_bug.cgi?id=23243
+ * rules/base.xml.in, symbols/it: added it(us),
+ http://bugs.freedesktop.org/show_bug.cgi?id=23263
+
+2009-08-04 Sergey Udaltsov
+
+ * geometry/Makefile.am, rules/base.lists.part, rules/base.m_g.part,
+ rules/base.xml.in: added TypeMatrix geometries,
+ http://bugs.freedesktop.org/show_bug.cgi?id=23136
+
+2009-07-19 Sergey Udaltsov
+
+ * symbols/vn: fixed accent typing,
+ http://bugs.freedesktop.org/show_bug.cgi?id=22847
+
+2009-07-18 Sergey Udaltsov
+
+ * symbols/gb: fixed gb(colemak), several mappings added,
+ http://bugs.freedesktop.org/show_bug.cgi?id=22735
+
+2009-07-14 Sergey Udaltsov
+
+ * rules/base.extras.xml.in, rules/extras/variantsMapping.lst,
+ symbols/extras/us: added us(crd) to extras,
+ http://bugs.freedesktop.org/show_bug.cgi?id=22635
+
+2009-07-09 Sergey Udaltsov
+
+ * rules/base.xml.in, symbols/bg: updated bg variants,
+ http://bugs.freedesktop.org/show_bug.cgi?id=22666
+
+2009-06-27 Sergey Udaltsov
+
+ * symbols/extras/us, rules/base.extras.xml.in,
+ rules/extras/variantsMapping.lst, symbols/extras/Makefile.am: Added 3
+ exotic us variants: ats, intl-unicode, alt-intl-unicode
+ http://bugs.freedesktop.org/show_bug.cgi?id=22004
+ http://bugs.freedesktop.org/show_bug.cgi?id=22446
+
+2009-06-22 Sergey Udaltsov
+
+ * .gitignore, configure.in, rules/Makefile.am,
+ rules/base.extras.xml.in, rules/base.l2_s.part, rules/base.l3_s.part,
+ rules/base.l4_s.part, rules/base.lists.part, rules/base.ml_s.part,
+ rules/bin/Makefile.am, rules/compat/ln_s.sh -> rules/bin/ln_s.sh,
+ rules/compat/lnv_s.sh -> rules/bin/lnv_s.sh, rules/compat/ml1_s.sh ->
+ rules/bin/ml1_s.sh, rules/compat/ml1v1_s.sh -> rules/bin/ml1v1_s.sh,
+ rules/compat/ml1v_s.sh -> rules/bin/ml1v_s.sh, rules/compat/ml_s.sh ->
+ rules/bin/ml_s.sh, rules/compat/mlv_s.sh -> rules/bin/mlv_s.sh,
+ rules/compat/Makefile.am, rules/compat/layoutsMapping.lst,
+ rules/compat/variantsMapping.lst, rules/extras/Makefile.am,
+ rules/extras/layoutsMapping.lst, symbols/extras/Makefile.am,
+ symbols/extras/rs: serious restructuring of the rules generation
+ scripts, for compat and extras. Also, adding exotic rs(combiningkeys)
+ variant, http://bugs.freedesktop.org/show_bug.cgi?id=21047
+
+2009-06-20 Sergey Udaltsov
+
+ * symbols/by: missing mappings,
+ https://bugs.freedesktop.org/show_bug.cgi?id=22386
+ * symbols/ca: fixed a couple of mappings in ca(shs)
+ http://bugs.freedesktop.org/show_bug.cgi?id=22388
+
+2009-06-19 Sergey Udaltsov
+
+ * symbols/de: small fix for a numbersign key,
+ http://bugs.freedesktop.org/show_bug.cgi?id=19934
+
+2009-06-15 Sergey Udaltsov
+
+ * symbols/inet: fixing ABNT2-specific mapping for keypad dot key,
+ http://bugs.freedesktop.org/show_bug.cgi?id=22303
+
+2009-06-14 Sergey Udaltsov
+
+ * rules/base.lists.part, rules/base.xml.in, symbols/inet: added
+ creativedw7000 model,
+ http://bugs.freedesktop.org/show_bug.cgi?id=22261
+
+2009-06-12 Sergey Udaltsov
+
+ * symbols/us: added extra symbols to us(altgr-intl),
+ http://bugs.freedesktop.org/show_bug.cgi?id=22249
+
+2009-06-11 Sergey Udaltsov
+
+ * rules/base.o_s.part, rules/base.xml.in, symbols/capslock: added
+ caps:super, http://bugs.freedesktop.org/show_bug.cgi?id=22184
+
+2009-06-09 Sergey Udaltsov
+
+ * symbols/ng: fixing 'e with dot below' in ng(olpc),
+ https://bugs.freedesktop.org/show_bug.cgi?id=20010
+ * rules/base.ml1_s.part: fixing misspeled variant name,
+ https://bugs.freedesktop.org/show_bug.cgi?id=15782
+ * symbols/tr: lost credits added,
+ https://bugs.freedesktop.org/show_bug.cgi?id=22079
+ * rules/base.xml.in, symbols/ru: added ru(bak),
+ https://bugs.freedesktop.org/show_bug.cgi?id=22101
+
+2009-05-31 Sergey Udaltsov
+
+ * symbols/altwin: setting explicit TWO_LEVEL on sections mapping RALT
+ , it is often ONE_LEVEL because of LEVEL3. Fixed
+ http://bugs.freedesktop.org/show_bug.cgi?id=21761
+
+2009-05-24 Sergey Udaltsov
+
+ * symbols/ua: fixed all references, from ua(basic) to ua(legacy),
+ finalizing http://bugs.freedesktop.org/show_bug.cgi?id=21302
+
+2009-05-18 Sergey Udaltsov
+
+ * symbols/de: adding acute to de(nodeadkeys),
+ http://bugs.freedesktop.org/show_bug.cgi?id=21794
+
+2009-05-12 Sergey Udaltsov
+
+ * NEWS, configure.in: bumping the release number
+
+2009-05-12 ReÅŸat SABIQ
+
+ * configure.in (new locale), po/crh.po:
+ Added crh.po as well (as was done originally on January 30),
+ based on Peter Hutterer's feedback regarding build process;
+ http://bugs.freedesktop.org/show_bug.cgi?id=19730
+
+2009-05-11 Sergey Udaltsov
+
+ * rules/base.xml.in, symbols/pl: polished the description for
+ pl(dvorak_altquotes)
+
+2009-05-11 ReÅŸat SABIQ
+
+ * configure.in (new locale), rules/base.xml.in,
+ symbols/ro, symbols/tr, symbols/ua, symbols/uz:
+ Added Crimean Tatar (Crimean Turkish) layouts;
+ http://bugs.freedesktop.org/show_bug.cgi?id=19730
+
+2009-05-07 Sergey Udaltsov
+
+ * symbols/ru: fixed Kalmyk variant
+
+2009-05-01 Sergey Udaltsov
+
+ * rules/base.xml.in, symbols/ru: added ru(phonetic_winkeys),
+ http://bugs.freedesktop.org/show_bug.cgi?id=21474
+
+2009-04-29 Sergey Udaltsov
+
+ * rules/base.xml.in: fixed wrong locale code,
+ http://bugs.freedesktop.org/show_bug.cgi?id=21451
+
+2009-04-25 Sergey Udaltsov
+
+ * rules/base.o_s.part, rules/base.xml.in, symbols/Makefile.am,
+ symbols/pc, symbols/srvr_ctrl: Make C-A-Bksp an option,
+ http://bugs.freedesktop.org/show_bug.cgi?id=21274
+
+2009-04-23 Sergey Udaltsov
+
+ * rules/base.xml.in, symbols/ua: making ua(unicode) default,
+ http://bugs.freedesktop.org/show_bug.cgi?id=21302
+
+2009-04-22 Sergey Udaltsov
+
+ * rules/compat/ln_s.sh, rules/compat/ml1_s.sh: improved compat rules,
+ hopefully fixing http://bugs.freedesktop.org/show_bug.cgi?id=8452
+
+2009-04-15 Sergey Udaltsov
+
+ * symbols/kr: fixed ordering issue,
+ http://bugs.freedesktop.org/show_bug.cgi?id=21211
+
+2009-04-14 Sergey Udaltsov
+
+ * symbols/kg: small update of the Kyrgyz layout,
+ http://bugs.freedesktop.org/show_bug.cgi?id=17505
+ * rules/base.xml.in, symbols/gb: added gb(extd),
+ http://bugs.freedesktop.org/show_bug.cgi?id=21121
+
+2009-04-03 Sergey Udaltsov
+
+ * rules/base.xml.in, symbols/tm: added Turkmen layout+variant,
+ http://bugs.freedesktop.org/show_bug.cgi?id=21015
+ * symbols/rs: splitting latlevel3 and cyrlevel3,
+ http://bugs.freedesktop.org/show_bug.cgi?id=21044
+ * rules/base.m_s.part, rules/base.xml.in: Cherry B.UMLIMITED dummy
+ model, http://bugs.freedesktop.org/show_bug.cgi?id=21002
+
+2009-03-17 Sergey Udaltsov
+
+ * symbols/de: some useful symbols added on high shift levels,
+ http://bugs.freedesktop.org/show_bug.cgi?id=20551
+
+2009-03-16 Sergey Udaltsov
+
+ * rules/base.lists.part, rules/base.xml.in, symbols/kg: fixed Kyrgyz
+ variants, http://bugs.freedesktop.org/show_bug.cgi?id=17505
+
+2009-03-07 Sergey Udaltsov
+
+ * rules/base.m_s.part, rules/base.xml.in: added trust_slimline model,
+ http://bugs.freedesktop.org/show_bug.cgi?id=20513
+
+2009-03-04 Sergey Udaltsov
+
+ * rules/base.o_s.part, rules/base.xml.in, symbols/altwin, symbols/pc:
+ putting altwin:super_win into default configuration,
+ http://bugs.freedesktop.org/show_bug.cgi?id=19500
+
+2009-03-03 Sergey Udaltsov
+
+ * rules/base.lists.part, rules/base.ml1_s.part, rules/base.ml_s.part:
+ use br(thinkpad) for all thinkpads,
+ http://bugs.freedesktop.org/show_bug.cgi?id=20425
+
+2009-03-02 Sergey Udaltsov
+
+ * po/POTFILES.in: removed evdev.xml.in, which is exact copy of
+ base.xml.in (and not distributed),
+ http://bugs.freedesktop.org/show_bug.cgi?id=20107
+
+2009-02-26 Sergey Udaltsov
+
+ * symbols/fi: added missing (in pc101) mappings, on 4th level,
+ https://bugs.freedesktop.org/show_bug.cgi?id=20300
+ * keycodes/evdev, keycodes/xfree86, keymap/xfree86,
+ rules/base.lists.part, rules/base.m_k.part, rules/base.xml.in,
+ rules/evdev.m_k.part: dropping national-specific models abnt2, jp106,
+ kr106. The corresponding geometries are left in the codebase, for some
+ while
+
+2009-02-25 Sergey Udaltsov
+
+ * symbols/ru: missing minus and underscore are added to ru(phonetic),
+ http://bugs.freedesktop.org/show_bug.cgi?id=20093
+
+2009-02-19 Sergey Udaltsov
+
+ * keycodes/evdev, keycodes/xfree86, rules/base.m_k.part: merged
+ xfree86(jp106) section to basic xfree86 keycodes
+
+2009-02-14 Sergey Udaltsov
+
+ * symbols/sn, rules/base.xml.in, symbols/Makefile.am: added wolof
+ layout, http://bugs.freedesktop.org/show_bug.cgi?id=20004
+
+2009-02-13 Sergey Udaltsov
+
+ * symbols/inet: adding missing mappings to evdev,
+ http://bugs.freedesktop.org/show_bug.cgi?id=18854
+ * rules/base.xml.in: added lost lt(balticplus),
+ http://bugs.freedesktop.org/show_bug.cgi?id=20092
+
+2009-02-05 Sergey Udaltsov
+
+ * rules/base.xml.in, symbols/in: added in(hin-wx),
+ http://bugs.freedesktop.org/show_bug.cgi?id=19753
+
+2009-02-04 Sergey Udaltsov
+
+ * rules/base.xml.in, symbols/ru: added ru(dos),
+ http://bugs.freedesktop.org/show_bug.cgi?id=19880
+
+2009-02-01 Sergey Udaltsov
+
+ * rules/base.xml.in: fixed metainfo for fi(smi),
+ http://bugs.freedesktop.org/show_bug.cgi?id=19841
+ * rules/base.lists.part, rules/evdev.m_s.part: some kbds need tweaking
+ even with evdev, adding $evdevkbds (asked by Peter)
+ * symbols/inet: added battery key (asked by Peter)
+ * README: fixed docs url,
+ http://bugs.freedesktop.org/show_bug.cgi?id=9764
+
+2009-01-28 Sergey Udaltsov
+
+ * rules/base.ml_s.part: fixed sun-related rules,
+ http://bugs.freedesktop.org/show_bug.cgi?id=15782
+ * rules/base.m_s.part, rules/base.xml.in, symbols/inet: added
+ geniuskkb2050hs model,
+ http://bugs.freedesktop.org/show_bug.cgi?id=19694
+ * geometry/dell, rules/base.m_g.part: added latitude geometry,
+ http://bugs.freedesktop.org/show_bug.cgi?id=19750
+ * rules/base.xml.in, symbols/Makefile.am, symbols/brai,
+ symbols/braille: moved Braille symbols to the proper location,
+ http://bugs.freedesktop.org/show_bug.cgi?id=19695
+ * symbols/capslock: keep Escape working in caps:escape,
+ http://bugs.freedesktop.org/show_bug.cgi?id=19795
+ * rules/base.o_s.part, rules/base.xml.in, symbols/level3: added
+ lv3:enter_switch, http://bugs.freedesktop.org/show_bug.cgi?id=19773
+ * rules/base.xml.in, symbols/ca: added ca(eng) for convenience,
+ http://bugs.freedesktop.org/show_bug.cgi?id=19707
+
+2009-01-27 Sergey Udaltsov
+
+ * symbols/typo: fixed text selection,
+ http://bugs.freedesktop.org/show_bug.cgi?id=14022
+ * symbols/be: added missing character,
+ http://bugs.freedesktop.org/show_bug.cgi?id=19751
+ * symbols/fr: fixed . on numpad, period->KP_Decimal,
+ http://bugs.freedesktop.org/show_bug.cgi?id=19756
+ * NEWS, configure.in: preparing 1.5
+
+2009-01-24 Sergey Udaltsov
+
+ * rules/base.xml.in: added SV and US to the country list for latam,
+ http://bugs.freedesktop.org/show_bug.cgi?id=19710
+
+2009-01-22 Sergey Udaltsov
+
+ * symbols/fi: updated default Finnish variant,
+ http://bugs.freedesktop.org/show_bug.cgi?id=18742
+
+2009-01-13 Sergey Udaltsov
+
+ * symbols/typo, rules/base.l1o_s.part, rules/base.l2o_s.part,
+ rules/base.l3o_s.part, rules/base.l4o_s.part, rules/base.lo_s.part,
+ rules/base.xml.in, symbols/Makefile.am: added (inactive so far)
+ misc:typo option, first step to close
+ https://bugs.freedesktop.org/show_bug.cgi?id=14022
+
+2009-01-12 Sergey Udaltsov
+
+ * rules/Makefile.am, rules/merge.sh: fix the build (thanks to Oswald
+ Buddenhagen)
+
+2009-01-11 Sergey Udaltsov
+
+ * rules/base.o_s.part, rules/base.xml.in, symbols/capslock: added
+ option to use capslock as backspace,
+ http://bugs.freedesktop.org/show_bug.cgi?id=19508
+ * rules/base.xml.in, symbols/lt: removed unneeded variant,
+ http://bugs.freedesktop.org/show_bug.cgi?id=14096
+ * rules/base.xml.in, symbols/fr: added Breton variant,
+ http://bugs.freedesktop.org/show_bug.cgi?id=19506
+
+2009-01-10 Sergey Udaltsov
+
+ * rules/base.xml.in: More improvements(?) in descriptions, to make
+ them shorter
+
+2009-01-08 Sergey Udaltsov
+
+ * rules/base.xml.in: slightly reorganized descriptions for the group
+ related to switchers
+
+2009-01-06 Sergey Udaltsov
+
+ * rules/base.xml.in, symbols/es, symbols/latam: added dead tilde
+ variants, http://bugs.freedesktop.org/show_bug.cgi?id=12568
+ * rules/base.xml.in, rules/compat/variantRename.lst, symbols/in,
+ symbols/pk: updated Urdu variants,
+ https://bugs.freedesktop.org/show_bug.cgi?id=8091
+
+2009-01-03 Sergey Udaltsov
+
+ * rules/compat/ln_s.sh, rules/compat/ml1_s.sh: fixed compat layout
+ renaming involving variants on replacement, part of the fix for
+ http://bugs.freedesktop.org/show_bug.cgi?id=8452
+
+2008-12-30 Sergey Udaltsov
+
+ * symbols/fi: updated 2 mappings according to the new standard,
+ http://bugs.freedesktop.org/show_bug.cgi?id=18742
+
+2008-12-29 Sergey Udaltsov
+
+ * rules/base.xml.in, symbols/inet: added compal fl90,
+ http://bugs.freedesktop.org/show_bug.cgi?id=15820
+ * rules/base.m_s.part, rules/base.xml.in: added btc9116u model,
+ http://bugs.freedesktop.org/show_bug.cgi?id=15871
+ * symbols/gb: fixed gb dvorak,
+ http://bugs.freedesktop.org/show_bug.cgi?id=18244
+ * symbols/us: removed explicit CAPS mapping,
+ http://bugs.freedesktop.org/show_bug.cgi?id=18320
+
+2008-12-28 Sergey Udaltsov
+
+ * rules/base.xml.in, symbols/de: updated neo variant,
+ http://bugs.freedesktop.org/show_bug.cgi?id=19308
+
+2008-12-26 Sergey Udaltsov
+
+ * rules/base.lists.part, rules/base.m_s.part, symbols/inet: using
+ acpi_common wherever possible, dropping (aliasing) unneeded models
+
+2008-12-25 Sergey Udaltsov
+
+ * rules/base.lists.part, rules/base.xml.in, symbols/inet: added
+ chicony0420 model, http://bugs.freedesktop.org/show_bug.cgi?id=15813
+ * symbols/inet: updated cymotionlinux model,
+ http://bugs.freedesktop.org/show_bug.cgi?id=15783
+
+2008-12-24 Sergey Udaltsov
+
+ * symbols/inet: consolidated a lot of mappings into nav_common
+
+2008-12-21 Sergey Udaltsov
+
+ * docs/README.enhancing: fixing the location of XKB proto docs,
+ http://bugs.freedesktop.org/show_bug.cgi?id=9764
+ * rules/base.xml.in, symbols/be: added oss variants,
+ http://bugs.freedesktop.org/show_bug.cgi?id=8854
+ * rules/base.m_s.part, rules/base.xml.in: added microsoftccurve2k
+ model http://bugs.freedesktop.org/show_bug.cgi?id=9772
+ * symbols/inet: changing globally XF86Refresh to XF86Reload,
+ http://bugs.freedesktop.org/show_bug.cgi?id=10751
+ * COPYING: added missing copyright notices,
+ http://bugs.freedesktop.org/show_bug.cgi?id=11095
+ * rules/base.lists.part, rules/base.xml.in, symbols/inet: added model
+ unitek_kb1925, http://bugs.freedesktop.org/show_bug.cgi?id=11579
+
+2008-12-18 Sergey Udaltsov
+
+ * keycodes/macintosh, rules/base.m_k.part, rules/base.o_k.part:
+ dropped the goodmap and badmap keycodes for apple - needed for a very
+ old kernels only. http://bugs.freedesktop.org/show_bug.cgi?id=9095
+
+2008-12-17 Sergey Udaltsov
+
+ * symbols/capslock, symbols/compose, symbols/ctrl: fix lock modifier
+ for jp, making "CAPS" replace key,
+ http://bugs.freedesktop.org/show_bug.cgi?id=8805
+
+2008-12-15 Sergey Udaltsov
+
+ * symbols/ru: added Kalmyk variant, thanks to Anatoly Mironov and
+ others
+
+2008-12-12 Sergey Udaltsov
+
+ * symbols/fr: fixed bepo variant,
+ http://bugs.freedesktop.org/show_bug.cgi?id=17821
+ * symbols/ara: restoring presentation forms,
+ http://bugs.freedesktop.org/show_bug.cgi?id=18833
+ * rules/base.xml.in, rules/base.m_s.part: added targa_v811 model,
+ https://bugs.freedesktop.org/show_bug.cgi?id=5722
+
+2008-11-30 Sergey Udaltsov
+
+ * symbols/gr: added ralt switch to Greek default layout,
+ http://bugs.freedesktop.org/show_bug.cgi?id=18819
+ * rules/base.o_s.part, rules/base.xml.in, symbols/group: added
+ win_menu_switch option,
+ http://bugs.freedesktop.org/show_bug.cgi?id=18557
+
+2008-11-29 Sergey Udaltsov
+
+ * compat/level5: finally using Level5 characters,
+ https://bugs.freedesktop.org/show_bug.cgi?id=4411
+ * rules/base.xml.in: generalized Fujitsu-Siemens Amilo laptops, also
+ closing http://bugs.freedesktop.org/show_bug.cgi?id=5694
+ * rules/base.o_s.part, rules/base.xml.in, symbols/epo: added a couple
+ of Esperanto options,
+ http://bugs.freedesktop.org/show_bug.cgi?id=18142
+
+2008-11-27 Sergey Udaltsov
+
+ * ChangeLog, rules/base.lists.part, rules/base.xml.in, symbols/inet:
+ added cymotion expert model,
+ http://bugs.freedesktop.org/show_bug.cgi?id=18718
+
+2008-11-26 Sergey Udaltsov
+
+ * keycodes/evdev: fixed ABNT2 keycodes,
+ http://bugs.freedesktop.org/show_bug.cgi?id=18712
+ * keycodes/amiga, keycodes/ataritt, keycodes/fujitsu,
+ keycodes/macintosh, keycodes/sgi_vndr/indigo, keycodes/sgi_vndr/indy,
+ keycodes/sun, keycodes/xfree98: set keycode ranges 8-255, universally,
+ https://bugs.freedesktop.org/show_bug.cgi?id=12538
+
+2008-11-22 Sergey Udaltsov
+
+ * rules/base.o_s.part, rules/base.xml.in, symbols/group: added
+ grp(alt_space_toggle) option,
+ http://bugs.freedesktop.org/show_bug.cgi?id=15772
+ * symbols/ca, symbols/et, symbols/tr: small OLPC fixes,
+ http://bugs.freedesktop.org/show_bug.cgi?id=18645
+
+2008-11-20 Sergey Udaltsov
+
+ * rules/base.lists.part, rules/base.xml.in, symbols/inet: added HP dv5
+ keyboard, thanks to Giuseppe Bilotta
+
+2008-11-18 Sergey Udaltsov
+
+ * symbols/it: fixing it(olpc),
+ http://bugs.freedesktop.org/show_bug.cgi?id=18565
+
+2008-11-08 Sergey Udaltsov
+
+ * symbols/inet: using inet(acpi) wherever possible, fixing apple
+ section (thanks to Otavio Salvador)
+ * symbols/pl: missing mappings, thanks to Otavio and Debian
+
+2008-11-06 Sergey Udaltsov
+
+ * rules/base.o_s.part, rules/base.xml.in, symbols/capslock: added
+ capslock(escape)
+
+2008-10-18 Sergey Udaltsov
+
+ * rules/base.o_s.part, rules/base.xml.in, symbols/keypad,
+ symbols/kpdl: added 2 keypad options (hex and atm), also kpdl:semi,
+ http://bugs.freedesktop.org/show_bug.cgi?id=17110
+ * rules/base.xml.in, symbols/de: added de(qwerty)
+
+2008-10-14 Sergey Udaltsov
+
+ * rules/base.o_s.part, rules/base.xml.in, symbols/keypad: removed
+ keypad:phone_hex option, to be replaced with newer one
+ http://bugs.freedesktop.org/show_bug.cgi?id=17110
+
+2008-10-13 Sergey Udaltsov
+
+ * keycodes/evdev: fixed keycode comment from Peter Hutterer
+ * rules/base.xml.in, symbols/tj: cleaning the mess with tj variants,
+ http://bugs.freedesktop.org/show_bug.cgi?id=17975
+
+2008-10-11 Sergey Udaltsov
+
+ * rules/base.xml.in, symbols/de: added Lower Sorbian variants,
+ http://bugs.freedesktop.org/show_bug.cgi?id=17855
+ * rules/base.xml.in, symbols/tj: added 2 new variants, std and legacy,
+ http://bugs.freedesktop.org/show_bug.cgi?id=17975
+ * rules/base.o_t.part, rules/base.xml.in, types/numpad: added
+ numpad(shift3) option,
+ http://bugs.freedesktop.org/show_bug.cgi?id=17110
+
+2008-10-03 Sergey Udaltsov
+
+ * symbols/ru: fix typewriter layout,
+ http://bugs.freedesktop.org/show_bug.cgi?id=17881
+
+2008-09-30 Sergey Udaltsov
+
+ * rules/base.o_s.part, rules/base.xml.in, symbols/altwin: added
+ Mac-like modifiers positioning,
+ http://bugs.freedesktop.org/show_bug.cgi?id=15655
+ * NEWS, configure.in: preparing 1.4
+
+2008-09-26 Sergey Udaltsov
+
+ * symbols/is: fixed AC11 mapping,
+ http://bugs.freedesktop.org/show_bug.cgi?id=17786
+
+2008-09-24 Sergey Udaltsov
+
+ * rules/base.xml.in: all descriptions are prefixed with underscore,
+ to make them translatable,
+ http://bugs.freedesktop.org/show_bug.cgi?id=17587
+
+2008-09-19 Sergey Udaltsov
+
+ * keycodes/evdev, symbols/inet: fixed evdev for abnt2 and jp106
+ http://bugs.freedesktop.org/show_bug.cgi?id=17656
+
+2008-09-18 Sergey Udaltsov
+
+ * rules/base.o_s.part, rules/base.xml.in: more mismatches fixed,
+ http://bugs.freedesktop.org/show_bug.cgi?id=17622
+
+2008-09-17 Sergey Udaltsov
+
+ * rules/base.o_s.part, rules/base.xml.in: fixed mismatch,
+ http://bugs.freedesktop.org/show_bug.cgi?id=17622
+
+2008-09-15 Sergey Udaltsov
+
+ * rules/base.o_s.part, rules/base.xml.in, symbols/capslock,
+ symbols/cz: added cz(ucw) and couple of options,
+ http://bugs.freedesktop.org/show_bug.cgi?id=17587
+ * rules/base.xml.in, symbols/gr: updated greek variants,
+ http://bugs.freedesktop.org/show_bug.cgi?id=17459
+
+2008-09-12 Sergey Udaltsov
+
+ * geometry/pc: added another pc geometry, with L-shaped Enter,
+ http://bugs.freedesktop.org/show_bug.cgi?id=17513
+
+2008-09-10 Sergey Udaltsov
+
+ * rules/base.lists.part, rules/base.xml.in, symbols/inet: added model
+ sven303, http://bugs.freedesktop.org/show_bug.cgi?id=17518
+
+2008-09-02 Sergey Udaltsov
+
+ * symbols/inet: fixed fscaa1667g,
+ http://bugs.freedesktop.org/show_bug.cgi?id=17389
+ * symbols/fr: fixed invalid keysym,
+ http://bugs.freedesktop.org/show_bug.cgi?id=17388
+ * rules/base.xml.in: some fixes for minor issues
+ * rules/base.xml.in, symbols/gb: added gb(dvorakukp),
+ http://bugs.freedesktop.org/show_bug.cgi?id=17370
+
+2008-08-16 Sergey Udaltsov
+
+ * rules/evdev.m_k.part, rules/evdev.m_s.part, keycodes/evdev,
+ po/POTFILES.in, po/xkeyboard-config.pot, rules/Makefile.am: implement
+ special ruleset for evdev driver
+ * added missing chars to Gurmukhi,
+ http://bugs.freedesktop.org/show_bug.cgi?id=17163
+
+2008-08-06 Sergey Udaltsov
+
+ * compat/Makefile.am, geometry/Makefile.am, keycodes/Makefile.am,
+ keymap/Makefile.am, rules/compat/Makefile.am, semantics/Makefile.am,
+ symbols/Makefile.am, types/Makefile.am, xkbrules.am: improving the
+ build, http://bugs.freedesktop.org/show_bug.cgi?id=17008
+
+2008-08-03 Sergey Udaltsov
+
+ * rules/compat/variantRename.lst: fixing compat rules for Romania,
+ http://bugs.freedesktop.org/show_bug.cgi?id=16872
+ * symbols/mt: fixed Maltese layout,
+ http://bugs.freedesktop.org/show_bug.cgi?id=16966
+ * symbols/fr: fixed fr(dvorak), making it legal
+ http://bugs.freedesktop.org/show_bug.cgi?id=15407
+
+2008-07-28 Sergey Udaltsov
+
+ * rules/base.lists.part, rules/base.xml.in, symbols/inet: added
+ ibm_spacesaver model,
+ http://bugs.freedesktop.org/show_bug.cgi?id=16767
+
+2008-07-22 Sergey Udaltsov
+
+ * rules/base.xml.in: fixed typo,
+ http://bugs.freedesktop.org/show_bug.cgi?id=16806
+
+2008-07-20 Sergey Udaltsov
+
+ * symbols/inet: fixed typo,
+ http://bugs.freedesktop.org/show_bug.cgi?id=16752
+
+2008-07-08 Sergey Udaltsov
+
+ * symbols/us: fixing us(mac),
+ https://bugs.freedesktop.org/show_bug.cgi?id=16641
+
+2008-07-01 Sergey Udaltsov
+
+ * symbols/is, rules/base.xml.in: added is(dvorak),
+ https://bugs.freedesktop.org/show_bug.cgi?id=16557
+
+2008-06-27 Sergey Udaltsov
+
+ * symbols/level5: using normal level5 keysyms
+ * rules/compat/ln_s.sh, rules/compat/lnv_s.sh, rules/compat/ml1_s.sh,
+ rules/compat/ml1v1_s.sh, rules/compat/ml1v_s.sh, rules/compat/ml_s.sh,
+ rules/compat/mlv_s.sh: fixed build process, thanks to Oswald
+ Buddenhagen
+
+2008-06-22 Sergey Udaltsov
+
+ * symbols/tj: sorted and fixed tj layout,
+ http://bugs.freedesktop.org/show_bug.cgi?id=16448
+
+2008-06-12 Sergey Udaltsov
+
+ * rules/base.o_s.part, rules/base.xml.in, symbols/keypad: added
+ keypad:phone_hex, http://bugs.freedesktop.org/show_bug.cgi?id=16298
+
+2008-06-09 Sergey Udaltsov
+
+ * rules/base.xml.in, symbols/us: added us(chr),
+ http://bugs.freedesktop.org/show_bug.cgi?id=16283
+
+2008-06-06 Sergey Udaltsov
+
+ * geometry/pc: removed unneeded space,
+ http://bugs.freedesktop.org/show_bug.cgi?id=16258
+
+2008-06-04 Sergey Udaltsov
+
+ * rules/base.xml.in, symbols/ru: added ru(sah),
+ http://bugs.freedesktop.org/show_bug.cgi?id=15872
+
+2008-06-01 Sergey Udaltsov
+
+ * rules/base.xml.in, rules/base.lists.part, symbols/inet: added
+ microsoft7000, http://bugs.freedesktop.org/show_bug.cgi?id=16087
+ * keycodes/xfree86, rules/base.m_g.part, rules/base.m_k.part,
+ rules/base.m_s.part, rules/base.xml.in: added model thinkpadz60,
+ http://bugs.freedesktop.org/show_bug.cgi?id=15999
+
+2008-05-31 Sergey Udaltsov
+
+ * symbols/gb, symbols/hu: fixed utf8
+
+2008-05-31 Sergey Udaltsov
+
+ * symbols/ru: fixed some includes, from common to winkeys (broken in
+ previous release)
+
+2008-05-30 Sergey Udaltsov
+
+ * rules/base.xml.in, symbols/ca: added ca(kut),
+ http://bugs.freedesktop.org/show_bug.cgi?id=16048
+
+2008-05-27 Sergey Udaltsov
+
+ * symbols/inet: WWW is mapped to I02, because of some changes in
+ kernel or X server (on nx9020),
+ http://bugs.freedesktop.org/show_bug.cgi?id=7310
+ * symbols/us: fixed one-handed dvorak variants (dropped second group),
+ http://bugs.freedesktop.org/show_bug.cgi?id=5659
+ * symbols/fi: returned nbsp to 3rd level of space,
+ http://bugs.freedesktop.org/show_bug.cgi?id=12764
+ * configure.in, NEWS: preparing 1.3
+
+2008-05-12 Sergey Udaltsov
+
+ * rules/base.xml.in, symbols/ro: changed default Romanian variant to
+ the right one, http://bugs.freedesktop.org/show_bug.cgi?id=13277
+
+2008-05-09 Sergey Udaltsov
+
+ * rules/compat/variantRename.lst, symbols/ru: default variant is
+ winkeys (till Daniel fixes xkbcomp)
+ * symbols/ua: small fix, from Andriy
+
+2008-05-01 Sergey Udaltsov
+
+ * po/POTFILES.in, rules/Makefile.am, rules/sgi*, rules/sun*: dropping
+ legacy unsupported rules. Confirmed with Alan Coopersmith (Sun
+ Microsystems)
+
+2008-04-30 Sergey Udaltsov
+
+ * rules/base.xml.in, symbols/us: added us(dvp),
+ http://bugs.freedesktop.org/show_bug.cgi?id=15727
+
+2008-04-29 Sergey Udaltsov
+
+ * symbols/ca: fixed ca(shs),
+ http://bugs.freedesktop.org/show_bug.cgi?id=15756
+
+2008-04-23 Sergey Udaltsov
+
+ * symbols/es: revert broken idea about dead tilde,
+ http://bugs.freedesktop.org/show_bug.cgi?id=9763
+ * symbols/latam: revert broken idea about dead tilde,
+ http://bugs.freedesktop.org/show_bug.cgi?id=12568
+
+2008-04-22 Sergey Udaltsov
+
+ * rules/base.o_s.part, rules/base.xml.in, symbols/fr, symbols/nbsp,
+ types/pc: options for nonbreakspace handling,
+ http://bugs.freedesktop.org/show_bug.cgi?id=9529
+ * symbols/fi: dropping bad nbsp mapping,
+ http://bugs.freedesktop.org/show_bug.cgi?id=12764
+
+2008-04-21 Sergey Udaltsov
+
+ * rules/base.xml.in: fixed some ISO codes
+
+2008-04-19 Sergey Udaltsov
+
+ * symbols/ru, rules/base.xml.in, rules/compat/variantRename.lst:
+ changed ru(winkeys) to default
+ * rules/base.xml.in: put a lot of country/language info in
+
+2008-04-12 Sergey Udaltsov
+
+ * symbols/it: fixed it(geo),
+ https://bugs.freedesktop.org/show_bug.cgi?id=15058
+
+2008-04-07 Sergey Udaltsov
+
+ * symbols/group, rules/base.xml.in, rules/base.o_s.part: added
+ group(shift_caps_switch)
+ http://bugs.freedesktop.org/show_bug.cgi?id=15383
+
+2008-04-01 Sergey Udaltsov
+
+ * rules/base.xml.in, symbols/gb: added gb(colemak),
+ http://bugs.freedesktop.org/show_bug.cgi?id=15303
+
+2008-03-30 Sergey Udaltsov
+
+ * symbols/gn, symbols/ng: fixed unicode sequences,
+ http://bugs.freedesktop.org/show_bug.cgi?id=15273
+ * rules/base.xml.in, symbols/ua: added ua(homophonic),
+ http://bugs.freedesktop.org/show_bug.cgi?id=15240
+
+2008-03-28 Sergey Udaltsov
+
+ * rules/base.o_s.part, rules/base.xml.in, symbols/compose: added
+ compose:102, http://bugs.freedesktop.org/show_bug.cgi?id=15246
+
+2008-03-22 Sergey Udaltsov
+
+ * symbols/fr: fixed fr(oss_nodeadkeys),
+ http://bugs.freedesktop.org/show_bug.cgi?id=15140
+
+2008-03-06 Sergey Udaltsov
+
+ * rules/base.lists.part, symbols/ca, symbols/fr: added ca(olpc),
+ removed fr(olpc), http://bugs.freedesktop.org/show_bug.cgi?id=14749
+
+2008-03-03 Sergey Udaltsov
+
+ * rules/base.lists.part, symbols/fr: added fr(olpc),
+ http://bugs.freedesktop.org/show_bug.cgi?id=14749
+ * symbols/lv: fixed lv accented characters,
+ http://bugs.freedesktop.org/show_bug.cgi?id=14765
+ * rules/base.lists.part, symbols/it: added it(olpc),
+ http://bugs.freedesktop.org/show_bug.cgi?id=14793
+
+2008-03-01 Sergey Udaltsov
+
+ * rules/base.lists.part, rules/base.m_s.part, rules/base.xml.in,
+ symbols/inet: reorganizing keyboard in symbols/inet. Some models are
+ now implemented as "virtual" (by rules only).
+ http://bugs.freedesktop.org/show_bug.cgi?id=14665
+
+2008-02-28 Sergey Udaltsov
+
+ * rules/base.xml.in, symbols/in: added in(jhelum), other indian fixes,
+ http://bugs.freedesktop.org/show_bug.cgi?id=14595
+ * symbols/jp: small fix,
+ http://bugs.freedesktop.org/show_bug.cgi?id=8648
+
+2008-02-16 Sergey Udaltsov
+
+ * symbols/cz, symbols/sk: dropping KPDL mapping,
+ http://bugs.freedesktop.org/show_bug.cgi?id=14479
+
+2008-02-12 Sergey Udaltsov
+
+ * keycodes/sun, symbols/sun_vndr/us, rules/base.ml_s.part,
+ rules/base.xml.in: sun type6 kbd,
+ http://bugs.freedesktop.org/show_bug.cgi?id=13664
+
+2008-02-05 Sergey Udaltsov
+
+ * symbols/af: fixed AE09 in af(olpc-ps),
+ http://bugs.freedesktop.org/show_bug.cgi?id=14379
+
+2008-02-04 Sergey Udaltsov
+
+ * symbols/kh, rules/base.lists.part: added kh(olpc),
+ http://bugs.freedesktop.org/show_bug.cgi?id=14376
+
+2008-02-02 Sergey Udaltsov
+
+ * symbols/lt, rules/base.xml.in: added lt(lekp) etc,
+ http://bugs.freedesktop.org/show_bug.cgi?id=14096
+
+2008-01-31 Sergey Udaltsov
+
+ * symbols/af, rules/base.xml.in, rules/base.lists.part: changing
+ af(olpc-da) to af(olpc-fa),
+ http://bugs.freedesktop.org/show_bug.cgi?id=14319
+ * symbols/in: fixed space in in(olpc),
+ http://bugs.freedesktop.org/show_bug.cgi?id=14224
+
+2008-01-30 Sergey Udaltsov
+
+ * symbols/ca, rules/base.xml.in: adding ca(shs), closing
+ http://bugs.freedesktop.org/show_bug.cgi?id=14308
+ * symbols/mn: added mn(olpc),
+ http://bugs.freedesktop.org/show_bug.cgi?id=14307
+ * symbols/tr: fixed Turkish layouts,
+ http://bugs.freedesktop.org/show_bug.cgi?id=14286
+ * symbols/es, rules/base.xml.in: added es(ast),
+ http://bugs.freedesktop.org/show_bug.cgi?id=14277
+ * symbols/am, rules/base.lists.part: added am(olpc),
+ http://bugs.freedesktop.org/show_bug.cgi?id=14226
+ * symbols/af: fixed some keysyms,
+ http://bugs.freedesktop.org/show_bug.cgi?id=14309
+
+2008-01-29 Sergey Udaltsov
+
+ * NEWS, configure.in: preparing release 1.2
+
+2008-01-24 Sergey Udaltsov
+
+ * symbols/af, symbols/ara, symbols/et, symbols/group, symbols/in,
+ symbols/kz, symbols/np, symbols/pk, symbols/ru, symbols/th,
+ symbols/us: separating group(olpc), closing
+ http://bugs.freedesktop.org/show_bug.cgi?id=14225
+
+2008-01-21 Sergey Udaltsov
+
+ * symbols/gr: Polytonic Greek: Use new keysyms for dead psili and
+ dasia, http://bugs.freedesktop.org/show_bug.cgi?id=13275
+
+2008-01-11 Sergey Udaltsov
+
+ * rules/base.lists.part, symbols/in: added in(olpc), by Bernardo
+ Innocenti
+
+2008-01-07 Sergey Udaltsov
+
+ * geometry/thinkpad, keycodes/xfree86, rules/base.lists.part,
+ rules/base.m_g.part, rules/base.m_k.part, rules/base.xml.in,
+ symbols/inet: added thinkpad60 model (with geometry),
+ https://bugs.freedesktop.org/show_bug.cgi?id=13954
+
+2008-01-05 Sergey Udaltsov
+
+ * symbols/us: add (left,right)singlequotemark to us(-altgr)-intl
+ keymap, https://bugs.freedesktop.org/show_bug.cgi?id=13935
+
+2008-01-04 Sergey Udaltsov
+
+ * symbols/inet, rules/base.lists.part, rules/base.xml.in: adding BTC
+ 6301URF, https://bugs.freedesktop.org/show_bug.cgi?id=13913
+ * symbols/macintosh_vndr/fr: added nodeadkeys,
+ https://bugs.freedesktop.org/show_bug.cgi?id=13934
+
+2008-01-03 Sergey Udaltsov
+
+ * symbols/pl, rules/base.xml.in: added pl(ru_phonetic_dvorak),
+ https://bugs.freedesktop.org/show_bug.cgi?id=13900
+
+2008-01-02 Sergey Udaltsov
+
+ * symbols/ro, rules/base.xml.in: small fixes for Romanian visible
+ strings from
+ https://bugs.freedesktop.org/show_bug.cgi?id=13277
+ * rules/base.xml.in, rules/compat/variantRename.lst, symbols/fr,
+ symbols/ge: moving ge(azerty_tscapo) to fr(geo), since that layout is
+ only used in France, closing
+ https://bugs.freedesktop.org/show_bug.cgi?id=13644
+ * symbols/ara: remove presentation forms from Arabic layout,
+ https://bugs.freedesktop.org/show_bug.cgi?id=13894
+
+2007-12-31 Sergey Udaltsov
+
+ * symbols/ro, rules/base.xml.in, rules/compat/variantRename.lst:
+ temporarily (partially) reverting
+ https://bugs.freedesktop.org/show_bug.cgi?id=13277
+
+2007-12-27 Sergey Udaltsov
+
+ * rules/base.o_s.part, rules/base.xml.in, symbols/capslock: adding xkb
+ option caps:swapescape,
+ https://bugs.freedesktop.org/show_bug.cgi?id=13824
+
+2007-12-26 Sergey Udaltsov
+
+ * symbols/ee, rules/base.xml.in: adding ee(us), polishing eurosign
+ usage in ee, https://bugs.freedesktop.org/show_bug.cgi?id=13799
+
+2007-12-25 Sergey Udaltsov
+
+ * symbols/eurosign, rules/base.xml.in, rules/base.o_s.part: add
+ eurosign(4)
+
+2007-12-23 Sergey Udaltsov
+
+ * symbols/inet, rules/base.xml.in: add logiultrax model,
+ https://bugs.freedesktop.org/show_bug.cgi?id=13028
+ * symbols/me, rules/base.xml.in: use Latin as default Montenegro
+ variant, https://bugs.freedesktop.org/show_bug.cgi?id=13777
+ * symbols/inet, keycodes/evdev: Kill off the I211 key in evdev
+
+2007-12-17 Sergey Udaltsov
+
+ * keycodes/sun, rules/base.m_k.part, rules/base.ml_s.part,
+ symbols/sun_vndr/cs, symbols/sun_vndr/cz, symbols/sun_vndr/de,
+ symbols/sun_vndr/dk, symbols/sun_vndr/fr, symbols/sun_vndr/gb,
+ symbols/sun_vndr/gr, symbols/sun_vndr/it, symbols/sun_vndr/jp,
+ symbols/sun_vndr/ko, symbols/sun_vndr/nl, symbols/sun_vndr/no,
+ symbols/sun_vndr/pl, symbols/sun_vndr/ru, symbols/sun_vndr/sw,
+ symbols/sun_vndr/tr, symbols/sun_vndr/tuv, symbols/sun_vndr/tw,
+ symbols/sun_vndr/us: added sun type 6 support,
+ https://bugs.freedesktop.org/show_bug.cgi?id=13664
+
+2007-12-10 Sergey Udaltsov
+
+ * symbols/inet: fixed thinkpad,
+ https://bugs.freedesktop.org/show_bug.cgi?id=13461
+
+2007-12-08 Sergey Udaltsov
+
+ * symbols/inet, rules/base.xml.in, rules/base.lists.part: added
+ fscaa1667g model, thanks to Matthew W. S. Bell
+ * symbols/gr: updated greek symbols,
+ https://bugs.freedesktop.org/show_bug.cgi?id=13570
+
+2007-11-30 Sergey Udaltsov
+
+ * symbols/us: small olpc fix
+ * symbols/inet: introducing nav_common and media_nav_common,
+ https://bugs.freedesktop.org/show_bug.cgi?id=13461
+
+2007-11-21 Sergey Udaltsov
+
+ * symbols/np, rules/base.lists.part: added np(olpc)
+ * symbols/et, rules/base.lists.part: added et(olpc)
+ * symbols/in: small fix in in(ben_probhat),
+ https://bugs.freedesktop.org/show_bug.cgi?id=12038
+
+2007-11-20 Sergey Udaltsov
+
+ * symbols/af, symbols/kz, symbols/ng, rules/base.xml.in: OLPC fixes
+ from Bernardo
+ * symbols/pk, rules/base.xml.in: fixing pk(ara) - it is not default
+
+2007-11-18 Sergey Udaltsov
+
+ * symbols/ro, rules/base.xml.in, rules/compat/variantRename.lst:
+ ro(comma), ro(academic) --> ro(cedilla), ro(std_cedilla),
+ https://bugs.freedesktop.org/show_bug.cgi?id=13277
+
+2007-11-17 Sergey Udaltsov
+
+ * symbols/ua, rules/base.xml.in: added ua(unicode)
+
+2007-11-15 Sergey Udaltsov
+
+ * symbols/olpc, keycodes/es: small OLPC fixes
+
+2007-11-14 Sergey Udaltsov
+
+ * symbols/inet, keycodes/evdev: revert #12203
+ https://bugs.freedesktop.org/show_bug.cgi?id=12227
+
+2007-11-01 Sergey Udaltsov
+
+ * symbols/fi, rules/base.xml.in: swapping fi(basic) and fi(kotoistus),
+ https://bugs.freedesktop.org/show_bug.cgi?id=12764
+
+2007-10-28 Sergey Udaltsov
+
+ * symbols/ara, symbols/us, symbols/es, symbols/us, symbols/ng: OLPC
+ fixlets
+
+2007-10-23 Sergey Udaltsov
+
+ * symbols/ru, rules/base.xml.in: added ru(kom),
+ https://bugs.freedesktop.org/show_bug.cgi?id=12893
+
+2007-10-21 Sergey Udaltsov
+
+ * symbols/us, rules/base.xml.in: added us(dvorak-intl),
+ https://bugs.freedesktop.org/show_bug.cgi?id=12867
+ * symbols/macintosh_vndr/dk: dk(macbookpro),
+ https://bugs.freedesktop.org/show_bug.cgi?id=12716
+
+2007-10-19 Sergey Udaltsov
+
+ * symbols/tr, rules/base.xml.in: added tr(intl),
+ https://bugs.freedesktop.org/show_bug.cgi?id=12856
+
+2007-10-18 Sergey Udaltsov
+
+ * geometry/pc, rules/base.xml.in, rules/compat/base.lists.part,
+ symbols/br, symbols/pt: added some br and pt layouts,
+ https://bugs.freedesktop.org/show_bug.cgi?id=12816
+ * rules/base.xml.in symbols/dk: added dk(dvorak),
+ https://bugs.freedesktop.org/show_bug.cgi?id=12837
+
+2007-10-13 Sergey Udaltsov
+
+ * symbols/inet, rules/base.lists.part, rules/base.xml.in: added diNovo
+ Edge, https://bugs.freedesktop.org/show_bug.cgi?id=12789
+
+2007-10-10 Sergey Udaltsov
+
+ * rules/base.xml.in, rules/base.m_g.part: added microsoftelite model,
+ https://bugs.freedesktop.org/show_bug.cgi?id=12753
+ * symbols/fi: fixed fi(kotoistus),
+ https://bugs.freedesktop.org/show_bug.cgi?id=12764
+
+2007-10-09 Sergey Udaltsov
+
+ * geometry/microsoft: added "elite" geometry,
+ https://bugs.freedesktop.org/show_bug.cgi?id=12753
+ * symbols/us: fix for olpc
+
+2007-10-07 Sergey Udaltsov
+
+ * symbols/kz, rules/base.lists.part: added kz(olpc)
+ * symbols/pk: fixed pk(olpc)
+ * rules/base.xml.in: lost vendors,
+ https://bugs.freedesktop.org/show_bug.cgi?id=12719
+ * symbols/inet, rules/base.lists.part, rules/base.xml.in: added
+ chicony0108 model,
+ https://bugs.freedesktop.org/show_bug.cgi?id=6914
+ * symbols/de, types/extra: SS hangling,
+ https://bugs.freedesktop.org/show_bug.cgi?id=7642
+
+2007-10-04 Sergey Udaltsov
+
+ * symbols/us: s/U.S. English/USA/
+ * rules/base.o_s.part, rules/base.xml.in,
+ rules/compat/layoutRename.lst, symbols/Makefile.am, symbols/cs,
+ symbols/me, symbols/rs, symbols/ba, symbols/hr, symbols/si: splitting
+ Serbia and Montenegro
+ https://bugs.freedesktop.org/show_bug.cgi?id=12390
+
+2007-10-02 Sergey Udaltsov
+
+ * symbols/inet: fixing dell inspiron,
+ https://bugs.freedesktop.org/show_bug.cgi?id=12653
+ * configure.in, rules/Makefile.am, po/ChangeLog: dropping translations
+ from base.xml, let apps/libs use .gmo files instead
+
+2007-09-27 Sergey Udaltsov
+
+ * symbols/shift, symbols/Makefile.am, rules/base.o_s.part: added
+ shift:breaks_caps, https://bugs.freedesktop.org/show_bug.cgi?id=9546
+
+2007-09-26 Sergey Udaltsov
+
+ * symbols/latam: no dead_tilde,
+ https://bugs.freedesktop.org/show_bug.cgi?id=12568
+ * rules/base.xml.in, symbols/in: added mal_lalitha, small fixes,
+ https://bugs.freedesktop.org/show_bug.cgi?id=12426
+ * rules/base.lists.part, rules/base.m_k.part, rules/base.ml_c.part,
+ rules/base.ml_s.part, rules/base.xml.in, rules/merge.sh,
+ symbols/Makefile.am, symbols/ara, symbols/br, symbols/es,
+ symbols/group, symbols/inet, symbols/level3, symbols/ng, symbols/olpc,
+ symbols/pk, symbols/ru, symbols/th, symbols/tr, symbols/us: massive
+ patch from OLPC project
+
+2007-09-25 Sergey Udaltsov
+
+ * NEWS, configure.in: preparing release 1.1
+
+2007-09-24 Sergey Udaltsov
+
+ * symbols/inet: added extra key for nx9020
+ https://bugs.freedesktop.org/show_bug.cgi?id=7310
+
+2007-09-14 Sergey Udaltsov
+
+ * symbols/inet: small fixes in cymotionlinux,
+ https://bugs.freedesktop.org/show_bug.cgi?id=7983
+ * keycodes/evdev: fixed fake keycodes,
+ https://bugs.freedesktop.org/show_bug.cgi?id=12202
+
+2007-09-05 Sergey Udaltsov
+
+ * symbols/inet, geometry/dell, rules/base.m_g.part,
+ rules/base.lists.part: adding dell precision m65,
+ https://bugs.freedesktop.org/show_bug.cgi?id=7992
+ * rules/base.m_g.part: fixed rules for the kinesis keyboard,
+ https://bugs.freedesktop.org/show_bug.cgi?id=7991
+
+2007-09-04 Sergey Udaltsov
+
+ * symbols/it, rules/base.xml.in: added strange one, it(geo),
+ contributed by Vladimir Sichinava
+
+2007-09-02 Sergey Udaltsov
+
+ * keycodes/evdev, symbols/inet: more evdev keycodes,
+ https://bugs.freedesktop.org/show_bug.cgi?id=12227
+ https://bugs.freedesktop.org/show_bug.cgi?id=12228
+
+2007-08-29 Sergey Udaltsov
+
+ * keycodes/evdev: updated evdev keycodes,
+ https://bugs.freedesktop.org/show_bug.cgi?id=12202
+ * keycodes/xfree86, symbols/inet, symbols/pc: display switch &
+ backlight control, https://bugs.freedesktop.org/show_bug.cgi?id=12203
+ * keycodes/macintosh, rules/base.m_k.part, rules/base.xml.in: adding
+ macintosh_hhk model,
+ https://bugs.freedesktop.org/show_bug.cgi?id=12091
+
+2007-08-28 Sergey Udaltsov
+
+ * symbols/group, symbols/jp, symbols/la, symbols/level3, symbols/pc,
+ symbols/digital_vndr/pc, types/pc: renaming types, giving more
+ sensible names
+
+2007-08-27 Sergey Udaltsov
+
+ * keycodes/evdev: missing keycodes for evdev:
+ https://bugs.freedesktop.org/show_bug.cgi?id=12167
+
+2007-08-26 Sergey Udaltsov
+
+ * rules/compat/variantRename.lst: fixing dvorak layouts compat rule,
+ https://bugs.freedesktop.org/show_bug.cgi?id=12115
+
+2007-08-24 Sergey Udaltsov
+
+ * symbols/us: fixes typos in us(classmate-intl)
+
+2007-08-22 Sergey Udaltsov
+
+ * rules/base.xml.in, symbols/Makefile.am, symbols/cn: adding Tibetan
+ layouts, https://bugs.freedesktop.org/show_bug.cgi?id=12088
+
+2007-08-20 Sergey Udaltsov
+
+ * symbols/gr: replacing combining keys with dead keys, temporary hack
+ by James Cloos
+
+2007-08-19 Sergey Udaltsov
+
+ * symbols/et: added missing dead "c" key
+
+2007-08-18 Sergey Udaltsov
+
+ * rules/base.lists.part, rules/base.ml_s.part, rules/base.mlv_s.part,
+ rules/base.xml.in, symbols/inet, symbols/us: added classmate model
+ with specific variants,
+ https://bugs.freedesktop.org/show_bug.cgi?id=11955
+
+2007-08-14 Sergey Udaltsov
+
+ * symbols/inet, rules/base.xml.in: added asus_laptop,
+ https://bugs.freedesktop.org/show_bug.cgi?id=11936
+
+2007-08-12 Sergey Udaltsov
+
+ * symbols/ru: fixed ebreve in ru(ch),
+ http://bugs.freedesktop.org/show_bug.cgi?id=11246
+ * rules/base.xml.in: missing Romanian variants added,
+ https://bugs.freedesktop.org/show_bug.cgi?id=11945
+
+2007-08-10 Sergey Udaltsov
+
+ * symbols/br, rules/base.m_g.part, rules/base.ml1_s.part,
+ rules/base.ml_g.part, rules/base.ml_s.part: Adding br(thinkpad),
+ polishing rules a bit,
+ https://bugs.freedesktop.org/show_bug.cgi?id=11908
+
+2007-08-07 Sergey Udaltsov
+
+ * symbols/ara: Patch to Arabic keyboard layout,
+ http://bugs.freedesktop.org/show_bug.cgi?id=11867
+
+2007-08-03 Sergey Udaltsov
+
+ * symbols/us, rules/base.xml.in: added us(altgr-intl), closing
+ http://bugs.freedesktop.org/show_bug.cgi?id=11753
+
+2007-07-30 Sergey Udaltsov
+
+ * symbols/inet, rules/base.lists.part, rules/base.m_s.part,
+ rules/base.xml.in: introduced media_common, some Dell/Logitech symbols
+ are dead, compatibility rules created, Acer kbds consolidated,
+ http://bugs.freedesktop.org/show_bug.cgi?id=11746
+
+2007-07-25 Sergey Udaltsov
+
+ * symbols/inet, rules/base.lists.part, rules/base.m_s.part,
+ rules/base.xml.in: consolidating benq keyboards,
+ https://bugs.freedesktop.org/show_bug.cgi?id=11713
+
+2007-07-24 Sergey Udaltsov
+
+ * symbols/gn, symbols/Makefile.am, rules/base.xml.in: added Guinea,
+ http://bugs.freedesktop.org/show_bug.cgi?id=11702
+
+2007-07-23 Sergey Udaltsov
+
+ * symbols/cd: update Congolese,
+ https://bugs.freedesktop.org/show_bug.cgi?id=5500
+
+2007-07-22 Sergey Udaltsov
+
+ * symbols/inet, rules/base.lists.part, rules/base.xml.in: adding
+ logiex110 model, https://bugs.freedesktop.org/show_bug.cgi?id=11686
+
+2007-07-20 Sergey Udaltsov
+
+ * symbols/gr: adding pound sign,
+ https://bugs.freedesktop.org/show_bug.cgi?id=11608
+
+2007-07-16 Sergey Udaltsov
+
+ * rules/base.o_s.part, rules/base.xml.in, symbols/be, symbols/keypad:
+ modularized wang kbd,
+ https://bugs.freedesktop.org/show_bug.cgi?id=8852
+
+2007-07-15 Sergey Udaltsov
+
+ * symbols/kpdl, symbols/*, rules/base.xml.in, rules/base.o_s.part:
+ introducing separate KPDL handling,
+ https://bugs.freedesktop.org/show_bug.cgi?id=11611
+
+2007-07-12 Sergey Udaltsov
+
+ * NEWS: preparing release 1.0
+
+2007-07-10 Sergey Udaltsov
+
+ * geometry/hhk, rules/base.m_g.part, rules/base.xml.in,
+ geometry/Makefile.am: adding hhk geometry,
+ https://bugs.freedesktop.org/show_bug.cgi?id=11519
+
+2007-07-09 Sergey Udaltsov
+
+ * symbols/de: fixed AE12, closing
+ https://bugs.freedesktop.org/show_bug.cgi?id=11514
+
+2007-06-29 Sergey Udaltsov
+
+ * symbols/lk: another fix from
+ https://bugs.freedesktop.org/show_bug.cgi?id=11284
+ * symbols/us, rules/base.xml.in: added us(colemak),
+ https://bugs.freedesktop.org/show_bug.cgi?id=11416
+
+2007-06-25 Sergey Udaltsov
+
+ * symbols/Makefile.am, symbols/braille, rules/base.xml.in: added
+ Braille layout, https://bugs.freedesktop.org/show_bug.cgi?id=11356
+
+2007-06-18 Sergey Udaltsov
+
+ * symbols/Makefile.am, symbols/et, rules/base.xml.in: added
+ et(basic), part of the OLPC works
+
+2007-06-16 Sergey Udaltsov
+
+ * symbols/lk: fixed Sinhala, closing
+ https://bugs.freedesktop.org/show_bug.cgi?id=11284
+
+2007-06-15 Sergey Udaltsov
+
+ * symbols/ru, rules/base.xml.in: added ru(cv_latin), closing
+ https://bugs.freedesktop.org/show_bug.cgi?id=11246
+
+2007-06-13 Sergey Udaltsov
+
+ * symbols/ru, rules/base.xml.in: added ru(cv), closing
+ https://bugs.freedesktop.org/show_bug.cgi?id=11246
+ * symbols/ge, rules/base.xml.in: added ge(os), again closing
+ https://bugs.freedesktop.org/show_bug.cgi?id=8092
+ * symbols/ru, rules/base.xml.in: added ru(udm), closing
+ https://bugs.freedesktop.org/show_bug.cgi?id=11257
+
+2007-06-07 Sergey Udaltsov
+
+ * symbols/in, rules/base.xml.in: added Hindi phonetic,
+ https://bugs.freedesktop.org/show_bug.cgi?id=11195
+
+2007-06-06 Sergey Udaltsov
+
+ * rules/xfree98: fixed nec_vndr, closing
+ https://bugs.freedesktop.org/show_bug.cgi?id=11176
+
+2007-05-26 Sergey Udaltsov
+
+ * rules/base.o_s.part, rules/base.xml.in, symbols/jp: Add
+ "NICOLA-F style Backspace" to "Japanese keyboard options", closing
+ https://bugs.freedesktop.org/show_bug.cgi?id=11064
+
+2007-05-14 Sergey Udaltsov
+
+ * rules/base.xml.in, rules/xkb.dtd: introducing vendor into
+ configItem
+
+2007-05-13 Sergey Udaltsov
+
+ * symbols/il: replaced backslash with bar, reclosing
+ https://bugs.freedesktop.org/show_bug.cgi?id=6375
+
+2007-05-02 Sergey Udaltsov
+
+ * symbols/gr: using Unicode since it is more appropriate for polytonic
+ Greek, https://bugs.freedesktop.org/show_bug.cgi?id=10824
+
+2007-04-30 Sergey Udaltsov
+
+ * rules/base.xml.in: make descriptions less technical
+
+2007-04-29 Sergey Udaltsov
+
+ * symbols/us: adding explicit BKSL, closing
+ https://bugs.freedesktop.org/show_bug.cgi?id=10811
+
+2007-04-27 Sergey Udaltsov
+
+ * geometry/microsoft: replacing non-defined AE00 with TLDE,
+ http://bugzilla.gnome.org/show_bug.cgi?id=429907
+
+2007-04-24 Sergey Udaltsov
+
+ * symbols/ma: fixing alt in Tifinagh, closing
+ https://bugs.freedesktop.org/show_bug.cgi?id=10736
+
+2007-04-23 Sergey Udaltsov
+
+ * geometry/pc: fix for abnt2, closing
+ https://bugs.freedesktop.org/show_bug.cgi?id=10725
+ * symbols/inet, rules/base.lists.part: adding missing logicdo, closing
+ https://bugs.freedesktop.org/show_bug.cgi?id=10671
+
+2007-04-11 Sergey Udaltsov
+
+ * symbols/ge, rules/base.xml.in: added/fixed a lot of Georgian
+ layouts, closing https://bugs.freedesktop.org/show_bug.cgi?id=3332
+
+2007-04-05 Sergey Udaltsov
+
+ * symbols/se, rules/base.xml.in: added se(svdvorak),
+ https://bugs.freedesktop.org/show_bug.cgi?id=10424
+
+2007-04-03 Sergey Udaltsov
+
+ * symbols/cd: fixed Congolese layout one more time,
+ https://bugs.freedesktop.org/show_bug.cgi?id=5500
+
+2007-04-01 Sergey Udaltsov
+
+ * symbols/cd: fixed Congolese layout,
+ https://bugs.freedesktop.org/show_bug.cgi?id=5500
+
+2007-03-29 Sergey Udaltsov
+
+ * configure.in: improved xkb_base calculation, closing
+ https://bugs.freedesktop.org/show_bug.cgi?id=10435
+
+2007-03-13 Sergey Udaltsov
+
+ * configure.in: added Korean translation,
+ https://bugs.freedesktop.org/show_bug.cgi?id=10269
+ * rules/base.xml.in: s/descr/_descr/g, closing
+ https://bugs.freedesktop.org/show_bug.cgi?id=10270
+
+2007-03-06 Sergey Udaltsov
+
+ * rules/base.xml.in, symbols/us: added us(euro), after a very hot
+ discussion in the maillist
+
+2007-02-26 Sergey Udaltsov
+
+ * symbols/inet: fixed broken symbol, closing
+ https://bugs.freedesktop.org/show_bug.cgi?id=10103
+ * compat/misc: fixing copy/paste bug, closing
+ https://bugs.freedesktop.org/show_bug.cgi?id=10104
+
+2007-02-25 Sergey Udaltsov
+
+ * rules/base.xml.in, symbols/uz: fixed Uz layout, closing
+ https://bugs.freedesktop.org/show_bug.cgi?id=10091
+ * symbols/us: added French oe character to us(intl), closing
+ https://bugs.freedesktop.org/show_bug.cgi?id=10087
+
+2007-02-12 Sergey Udaltsov
+
+ * rules/base.xml.in, symbols/Makefile.am, symbols/ma: added Tifinagh
+ layouts, closing http://bugs.freedesktop.org/show_bug.cgi?id=9950
+
+2007-02-03 Sergey Udaltsov
+
+ * rules/base.ml_g.part, rules/HDR, rules/Makefile.am,
+ rules/base.m_g.part: added (model, layout->geometry) section for
+ thinkpad, https://bugs.freedesktop.org/show_bug.cgi?id=9864
+ * symbols/macintosh_vndr/fr: updated French layout, closing
+ https://bugs.freedesktop.org/show_bug.cgi?id=9865
+
+2007-01-27 Sergey Udaltsov
+
+ * symbols/inet, rules/base.lists.part: adding thinkpad media keys,
+ closing https://bugs.freedesktop.org/show_bug.cgi?id=9779
+
+2007-01-26 Sergey Udaltsov
+
+ * symbols/es: s/asciitilde/dead_tilde in spanish, closing
+ https://bugs.freedesktop.org/show_bug.cgi?id=9763
+
+2007-01-25 Sergey Udaltsov
+
+ * rules/base.xml.in, symbols/am: adding am(phonetic-alt), closing
+ https://bugs.freedesktop.org/show_bug.cgi?id=9018
+
+2007-01-11 Sergey Udaltsov
+
+ * symbols/nl, rules/base.xml.in: added nl(std), closing
+ https://bugs.freedesktop.org/show_bug.cgi?id=9603
+ * symbols/epo, rules/base.xml.in: added epo(legacy), closing
+ https://bugs.freedesktop.org/show_bug.cgi?id=9556
+
+2007-01-04 Sergey Udaltsov
+
+ * symbols/ir: settling another licensing issue,
+ https://bugs.freedesktop.org/show_bug.cgi?id=9541
+
+2007-01-04 Sergey Udaltsov
+
+ * rules/base.xml.in, rules/base.o_s.part, symbols/ca, symbols/fr,
+ symbols/nbsp: adding more nbsp options, closing
+ https://bugs.freedesktop.org/show_bug.cgi?id=9529
+
+2007-01-02 Sergey Udaltsov
+
+ * rules/base.xml.in, symbols/pc: getting rid of stupid "default"
+ altwin options, closing
+ https://bugs.freedesktop.org/show_bug.cgi?id=9470
+
+2006-12-19 Sergey Udaltsov
+
+ * rules/base.o_s.part, rules/base.xml.in, rules/sun.xml.in,
+ symbols/level3: adding lv3:ralt_alt, closing
+ https://bugs.freedesktop.org/show_bug.cgi?id=9070
+
+2006-12-11 Sergey Udaltsov
+
+ * configure.in: getting rid of bashisms, closing
+ https://bugs.freedesktop.org/show_bug.cgi?id=9244
+ * symbols/fi: s/NoSymbol/VoidSymbol/, closing
+ https://bugs.freedesktop.org/show_bug.cgi?id=9239
+
+2006-12-07 Sergey Udaltsov
+
+ * Makefile.am, rules/Makefile.am, xkbrules.am: getting rid of
+ gmakisms, closing https://bugs.freedesktop.org/show_bug.cgi?id=9245
+ * Makefile.am: dropping install-compiled target, closing
+ https://bugs.freedesktop.org/show_bug.cgi?id=9246
+
+2006-11-20 Sergey Udaltsov
+
+ * symbols/br, keycodes/xfree86: making abnt2 more compatible with
+ other keyboards, closing
+ https://bugs.freedesktop.org/show_bug.cgi?id=4910
+ * rules/base.m_k.part: dropping the special (and stupid) abnt2 rule,
+ closing https://bugs.freedesktop.org/show_bug.cgi?id=9097
+
+2006-11-19 Sergey Udaltsov
+
+ * symbols/il, rules/base.xml.in: added il(biblical), closing
+ https://bugs.freedesktop.org/show_bug.cgi?id=9002
+
+2006-11-17 Sergey Udaltsov
+
+ * symbols/us: the backslash/bar definition in the us dvorak variant,
+ closing https://bugs.freedesktop.org/show_bug.cgi?id=9061
+ * symbols/ir: removed problematic copyright notice, with permission of
+ Behnam Esfahbod, https://bugs.freedesktop.org/show_bug.cgi?id=4102
+
+2006-11-14 Sergey Udaltsov
+
+ * symbols/altwin: undo invalid Alt mapping done in
+ https://bugs.freedesktop.org/show_bug.cgi?id=8996
+
+2006-11-12 Sergey Udaltsov
+
+ * rules/base.o_s.part, rules/base.xml.in, symbols/altwin: adding
+ ctrl_win, closing https://bugs.freedesktop.org/show_bug.cgi?id=8996
+
+2006-11-06 Sergey Udaltsov
+
+ * rules/sun.xml.in, rules/Makefile.am, po/POTFILE.in: Added directory
+ for sun rules, closing
+ http://bugzilla.gnome.org/show_bug.cgi?id=137294
+
+2006-11-02 Sergey Udaltsov
+
+ * symbols/fr: some fixes for alternative layouts, closing
+ https://bugs.freedesktop.org/show_bug.cgi?id=8853
+ * symbols/fr, rules/base.xml.in: new fr(dvorak*) variants, closing
+ https://bugs.freedesktop.org/show_bug.cgi?id=8728
+
+2006-10-28 Sergey Udaltsov
+
+ * rules/base.lists.part, rules/base.xml.in, symbols/inet: added
+ logitech_g15 model, closing
+ https://bugs.freedesktop.org/show_bug.cgi?id=8803
+ * symbols/jp: added LCTL definition,
+ https://bugs.freedesktop.org/show_bug.cgi?id=8805
+
+2006-10-26 Sergey Udaltsov
+
+ * rules/base.lists.part, rules/base.xml.in, symbols/inet: added more
+ Dell keyboards, closing
+ https://bugs.freedesktop.org/show_bug.cgi?id=8761
+
+2006-10-18 Sergey Udaltsov
+
+ * rules/base.lists.part, symbols/macintosh_vndr/Makefile.am,
+ symbols/macintosh_vndr/dk, symbols/macintosh_vndr/es,
+ symbols/macintosh_vndr/it, symbols/macintosh_vndr/latam,
+ symbols/macintosh_vndr/no, symbols/macintosh_vndr/pt,
+ symbols/macintosh_vndr/se: missed part from
+ https://bugs.freedesktop.org/show_bug.cgi?id=1576
+ * rules/base.xml.in, symbols/jp: adding new Japanese layout, changing
+ latin to 106, closing
+ https://bugs.freedesktop.org/show_bug.cgi?id=8648
+
+2006-10-17 Sergey Udaltsov
+
+ * symbols/macintosh_vndr/dk, symbols/macintosh_vndr/us: adding euro
+ sign to mac us and dk, closing
+ https://bugs.freedesktop.org/show_bug.cgi?id=8682#add_comment
+
+2006-10-16 Sergey Udaltsov
+
+ * rules/base.m_k.part, rules/base.xml.in, keycodes/Makefile.am,
+ keycodes/powerpcps2: removing obsolete powerpcps2 model. Closing
+ https://bugs.freedesktop.org/show_bug.cgi?id=8659
+ * rules/base.o_s.part, rules/base.xml.in, symbols/group: adding
+ grp:lctrl_lshift_toggle, contributed by Alexey Morozov
+ <morozov@gorodok.net>
+ * symbols/macintosh_vndr/us: Fix <BKSP> in symbols/macintosh_vndr/us,
+ closing https://bugs.freedesktop.org/show_bug.cgi?id=8668
+ * symbols/level3: assigning mods to keycodes (reverding earlier wrong
+ fix), closing https://bugs.freedesktop.org/show_bug.cgi?id=8670
+
+2006-10-13 Sergey Udaltsov
+
+ * xkbrules.am: ability to create .dir files when srcdir != objdir,
+ closing https://bugs.freedesktop.org/show_bug.cgi?id=8629
+
+2006-10-12 Sergey Udaltsov
+
+ * symbols/inet, rules/base.lists.part, rules/base.xml.in: added BenQ
+ X-730, thanks to Jean-Marc Spaggiari
+
+2006-10-11 Sergey Udaltsov
+
+ * symbols/af, symbols/ba, symbols/hr, symbols/kr, symbols/nbsp,
+ symbols/ng, symbols/si, symbols/za: addind missing cvs keyword
+ XKeyboardConfig
+ * rules/base.ml_s.part, rules/base.xml.in, symbols/jp: normalizing
+ Japanese rules/variants, closing
+ https://bugs.freedesktop.org/show_bug.cgi?id=8503
+
+2006-10-10 Sergey Udaltsov
+
+ * symbols/in: fixed Devangari (default) layout, closing
+ https://bugs.freedesktop.org/show_bug.cgi?id=4949
+ * configure.in: removing hardcoded prefix, closing
+ https://bugs.freedesktop.org/show_bug.cgi?id=8448
+ * symbols/it, added EuroSign to italian mac layout, closing
+ https://bugs.freedesktop.org/show_bug.cgi?id=1576
+
+2006-10-09 Sergey Udaltsov
+
+ * symbols/inet,rules/base.xml.in: adding benqa800 model, closing
+ https://bugs.freedesktop.org/show_bug.cgi?id=8574
+
+2006-10-09 Sergey Udaltsov
+
+ * NEWS, configure.in: preparing 0.9
+
+2006-10-09 Sergey Udaltsov
+
+ * tests/*: tests now run alphabetically, a bit of xslt tweaking
+ * symbols/altwin: Alt keys should be mapped on two shift levels,
+ undoing previous fix, as requested in
+ https://bugs.freedesktop.org/show_bug.cgi?id=8571
+ * symbols/level3: mapping Mod5 to keycode rather than to keysym,
+ hopefully fixing https://bugs.freedesktop.org/show_bug.cgi?id=8572
+ * symbols/us,symbols/latin: fixing quotes, closing
+ https://bugs.freedesktop.org/show_bug.cgi?id=8122
+
+2006-10-07 Sergey Udaltsov
+
+ * types/complete, types/default: putting "numpad" after "extra"
+ hopefully fixes https://bugs.freedesktop.org/show_bug.cgi?id=8402
+
+2006-10-04 Sergey Udaltsov
+
+ * symbols/fi: s/micron/dead_micron, closing
+ https://bugs.freedesktop.org/show_bug.cgi?id=8494
+
+2006-10-03 Sergey Udaltsov
+
+ * symbols/macintosh_vndr/gb, symbols/gb: adding missing Euro
+ character, closing https://bugs.freedesktop.org/show_bug.cgi?id=5227
+ * symbols/bt, symbols/fr, symbols/np: fixing typos, closing
+ https://bugs.freedesktop.org/show_bug.cgi?id=8495
+ * symbols/ch, symbols/de, symbols/dk, symbols/es, symbols/no,
+ symbols/pt, symbols/se, symbols/us: optimized mac variants, overwrite
+ old de and ch mac variants, closing
+ https://bugs.freedesktop.org/show_bug.cgi?id=8491
+
+2006-10-01 Sergey Udaltsov
+
+ * rules/base.xml.in, symbols/Makefile.am, symbols/ng: added Nigerian
+ layouts, closing https://bugs.freedesktop.org/show_bug.cgi?id=8467
+ * symbols/dk, symbols/es, symbols/fi, symbols/fr, symbols/gb,
+ symbols/is, symbols/it, symbols/nl, symbols/no, symbols/pt,
+ symbols/se, symbols/us, rules/base.xml.in: adding mac variants,
+ closing https://bugs.freedesktop.org/show_bug.cgi?id=8465
+
+2006-09-30 Sergey Udaltsov
+
+ * rules/base.o_s.part, rules/base.xml.in, symbols/Makefile.am,
+ symbols/nbsp: adding nbsp:* options, closing
+ https://bugs.freedesktop.org/show_bug.cgi?id=8451
+
+2006-09-29 Sergey Udaltsov
+
+ * rules/base.xml.in: added keypad:* options, closing
+ https://bugs.freedesktop.org/show_bug.cgi?id=8240
+
+2006-09-28 Sergey Udaltsov
+
+ * geometry/thinkpad: fix for geometry, closing
+ https://bugs.freedesktop.org/show_bug.cgi?id=8419
+
+2006-09-24 Sergey Udaltsov
+
+ * symbols/am, rules/base.xml.in: added am(eastern), am(western),
+ am(eastern-alt), closing
+ https://bugs.freedesktop.org/show_bug.cgi?id=8404
+ * rules/base.ml_s.part: macbooks should use the vendor symbols, if
+ possible, closing
+ https://bugs.freedesktop.org/show_bug.cgi?id=8385
+ * rules/base.o_s.part, rules/base.xml.in, symbols/fr, symbols/keypad:
+ added more French variants, new options, closing
+ https://bugs.freedesktop.org/show_bug.cgi?id=8240
+
+2006-09-18 Sergey Udaltsov
+
+ * keycodes/macintosh, rules/HDR, rules/Makefile.am,
+ rules/base.m_k.part, rules/base.o_k.part, rules/base.xml.in: split
+ "good" and "bad" apple keycodes, closing
+ https://bugs.freedesktop.org/show_bug.cgi?id=8242
+
+ * rules/base.lists.part, rules/base.m_s.part, symbols/inet,
+ symbols/level3: lv3:enter_switch added, closing
+ https://bugs.freedesktop.org/show_bug.cgi?id=8324
+
+ * symbols/ara: added ara(buckwalter), closing
+ https://bugs.freedesktop.org/show_bug.cgi?id=8198
+
+ * symbols/in: fixed layout, Unicode-related bug, closing
+ https://bugs.freedesktop.org/show_bug.cgi?id=8203
+
+ * geometry/pc, rules/base.ml1_s.part, rules/base.ml_s.part,
+ rules/compat/ml1_s.sh, rules/compat/ml1v1_s.sh,
+ rules/compat/ml1v_s.sh, rules/compat/ml_s.sh, rules/compat/mlv_s.sh,
+ symbols/pc: getting rid of pc101/102/104 legacy. Breaking XkbSymbols
+ again, https://bugs.freedesktop.org/show_bug.cgi?id=8321
+
+2006-09-17 Sergey Udaltsov
+
+ symbols/keypad, symbols/pc, symbols/us, symbols/macintosh_vndr/*,
+ rules/base.m_t.part, rules/base.ml1_s.part, rules/base.ml_s.part,
+ rules/base.o_t.part, rules/base.xml.in, rules/merge.sh: reorganized
+ Mac stuff, thanks to Denis,
+ https://bugs.freedesktop.org/show_bug.cgi?id=8280
+
+ * symbols/pc: modularized numpad stuff,
+ https://bugs.freedesktop.org/show_bug.cgi?id=8312
+
+2006-09-10 Sergey Udaltsov
+
+ rules/base.list.part, symbols/inet: added 2 models, thanks to
+ Valery V. Inozemtsev
+
+2006-09-06 Sergey Udaltsov
+
+ * rules/altwin: mapping LALT to Mod4 modifier,
+ https://bugs.freedesktop.org/show_bug.cgi?id=8068
+
+2006-09-05 Sergey Udaltsov
+
+ * rules/base.lists.part: adding missing kbds, reordering a bit
+ https://bugs.freedesktop.org/show_bug.cgi?id=7816
+
+ * geometry/ibm_vnd, configure.in, rules/base.m_g.part: getting rid of
+ ibm_vndr geometry, fixing rules,
+ https://bugs.freedesktop.org/show_bug.cgi?id=7990
+
+ * symbols/gb: s/ralt_switch/ralt_switch_multikey
+ https://bugs.freedesktop.org/show_bug.cgi?id=7674
+
+ * rules/base.mlv_s.part: fixing mac rule for nodeadkeys,
+ https://bugs.freedesktop.org/show_bug.cgi?id=8123
+
+ * rules/base.ml_s.part: s/old_macintosh/macintosh_old/g,
+ https://bugs.freedesktop.org/show_bug.cgi?id=8128
+
+2006-09-04 Sergey Udaltsov
+
+ * rules/base.lists.part, rules/base.m_g.part, rules/base.m_k.part,
+ rules/base.m_s.part, rules/base.ml1_s.part, rules/base.ml_s.part,
+ rules/base.mlv_s.part: fixing lists,
+ https://bugs.freedesktop.org/show_bug.cgi?id=7817
+
+ * symbols/cd, symbols/gr, symbols/il, symbols/jp, symbols/la,
+ symbols/lk, symbols/ru, symbols/ca: fixing types, on per-group basis,
+ https://bugs.freedesktop.org/show_bug.cgi?id=8121
+
+ * symbols/level3: adding level3:ralt_switch_multikey,
+ https://bugs.freedesktop.org/show_bug.cgi?id=7674
+
+2006-09-03 Sergey Udaltsov
+
+ * symbols/vn: getting rid of digits (1 and 2 shift levels),
+ https://bugs.freedesktop.org/show_bug.cgi?id=7807
+
+ * rules/base.xml.in: s/guillemot/guillemet/, closing
+ https://bugs.freedesktop.org/show_bug.cgi?id=8116
+
+2006-09-02 Sergey Udaltsov
+
+ * symbols/lt, rules/base.xml.in: added lt(ibm)
+ https://bugs.freedesktop.org/show_bug.cgi?id=3841
+
+ * symbols/hr: reverted Croatian
+ https://bugs.freedesktop.org/show_bug.cgi?id=8019
+
+2006-09-01 Sergey Udaltsov
+
+ * symbols/ru, rules/base.xml.in: added Ossetian, closing
+ https://bugs.freedesktop.org/show_bug.cgi?id=8092
+
+ * symbols/ir, symbols/iq, rules/base.xml.in: added Kurdish Arabic-Latin
+
+2006-08-31 Sergey Udaltsov
+
+ * geometry/macintosh, keycodes/macintosh, keycodes/xfree86,
+ rules/base.lists.part, rules/base.m_g.part, rules/base.m_k.part,
+ rules/base.m_s.part, rules/base.ml_s.part, rules/base.xml.in,
+ symbols/inet: Added Macbook stuff, partially closing
+ https://bugs.freedesktop.org/show_bug.cgi?id=8068
+
+ * symbols/group, rules/base.o_s.part: added group:alt_caps_toggle
+ https://bugs.freedesktop.org/show_bug.cgi?id=8047
+
+2006-08-02 Sergey Udaltsov
+
+ * symbols/inet, keycodes/evdev: updated evdev
+ https://bugs.freedesktop.org/show_bug.cgi?id=7631
+
+2006-07-30 Sergey Udaltsov
+
+ * symbols/pl: added pl(csb)
+ https://bugs.freedesktop.org/show_bug.cgi?id=7693
+
+2006-07-29 Sergey Udaltsov
+
+ * symbols/bt: fixed Bhutan
+ https://bugs.freedesktop.org/show_bug.cgi?id=7556
+
+ * symbols/us: added dvorak-classic, closing
+ https://bugs.freedesktop.org/show_bug.cgi?id=7503
+
+ * symbols/inet: added acer_c300, closing
+ https://bugs.freedesktop.org/show_bug.cgi?id=6361
+
+2006-07-29 Sergey Udaltsov
+
+ * symbols/lk: updated Sinhala, thanks to Harshula
+
+2006-07-10 Sergey Udaltsov
+
+ * symbols/de: added Mac variants, closing
+ https://bugs.freedesktop.org/show_bug.cgi?id=6671
+
+2006-07-04 Sergey Udaltsov
+
+ * symbols/ch: fixed KPDL in ch(de_mac), patch from
+ https://bugs.freedesktop.org/show_bug.cgi?id=6960
+
+2006-07-02 Sergey Udaltsov
+
+ * rules/base.xml.in: fixed mismatch between directory and symbols/inet
+ file.
+ https://bugs.freedesktop.org/show_bug.cgi?id=7398
+
+ * symbols/ro: fixed Romanian academic
+ https://bugs.freedesktop.org/show_bug.cgi?id=7393
+
+2006-06-28 Sergey Udaltsov
+
+ * keycodes/evdev: pc105 compatiliby, closing
+ https://bugs.freedesktop.org/show_bug.cgi?id=7347
+
+2006-06-25 Sergey Udaltsov
+
+ * rules/base.xml.in, geometry/pc, symbols/inet: added Dell Lattitude,
+ https://bugs.freedesktop.org/show_bug.cgi?id=6894
+
+ * symbols/inet, rules/base.xml.in: added 2 new layouts, closing
+ https://bugs.freedesktop.org/show_bug.cgi?id=7325
+
+ * symbols/np: added Nepali, closing
+ https://bugs.freedesktop.org/show_bug.cgi?id=6373
+
+2006-06-25 Sergey Udaltsov
+
+ * geometry/pc, rules/base.lists.part, rules/base.m_g.part,
+ rules/base.xml.in, symbols/kr: updated Korean layouts/geometry
+ https://bugs.freedesktop.org/show_bug.cgi?id=7316
+
+2006-06-22 Sergey Udaltsov
+
+ * symbols/inet: fixing double RaiseVolume, closing
+ https://bugs.freedesktop.org/show_bug.cgi?id=7095
+
+2006-06-14 Sergey Udaltsov
+
+ * symbols/mt, rules/base.xml.in: fixed the US variant group name
+ * symbols/gh: fixed 'D' key, closing
+ https://bugs.freedesktop.org/show_bug.cgi?id=7216
+
+2006-06-13 Sergey Udaltsov
+
+ * symbols/level5, compat/level5: replacing F21-F23 with explicit
+ hexadecimal values of XK_ISO_Level5_*. So for next months people could
+ have Canadian layout fixed and, at the same time, do not have to
+ upgrade xorg. Closing https://bugs.freedesktop.org/show_bug.cgi?id=4411
+
+ * symbols/ch, symbols/inet, symbols/base.xml.in: added mac stuff from
+ https://bugs.freedesktop.org/show_bug.cgi?id=6960
+
+2006-06-13 Sergey Udaltsov
+
+ * symbols/mt: fixed mt(us), closing
+ https://bugs.freedesktop.org/show_bug.cgi?id=1411
+
+2006-06-10 Sergey Udaltsov
+
+ * symbols/level5, compat5/level5: better working Canadian
+ layout, but not complete yet
+
+2006-06-01 Sergey Udaltsov
+
+ * symbols/am: fixed comma in Armenian, closing
+ https://bugs.freedesktop.org/show_bug.cgi?id=7080
+
+2006-05-28 Sergey Udaltsov
+
+ * symbols/inet,rules/base.xml.in,rules/base.lists.part:
+ added Logitech Cordless Desktop LX-300
+ https://bugs.freedesktop.org/show_bug.cgi?id=5609
+
+2006-05-28 Sergey Udaltsov
+
+ * rules/base.ml_c: fixed compat for jp layout, closing
+ https://bugs.freedesktop.org/show_bug.cgi?id=4002
+
+2006-05-17 Sergey Udaltsov
+
+ * symbols/inet: fixed power_g5, partially closing
+ https://bugs.freedesktop.org/show_bug.cgi?id=6960
+
+2006-05-13 Sergey Udaltsov
+
+ * symbols/fi: added fi(kotoistus)
+ https://bugs.freedesktop.org/show_bug.cgi?id=6901
+
+2006-05-05 Sergey Udaltsov
+
+ * symbols/de: added de(neo)
+ https://bugs.freedesktop.org/show_bug.cgi?id=6837
+
+2006-05-04 Sergey Udaltsov
+
+ * symbols/inet: fixed cymotionlinux, closing
+ https://bugs.freedesktop.org/show_bug.cgi?id=6828
+
+2006-05-04 Sergey Udaltsov
+
+ * rules/base.xml.in,symbols/iq,symbols/in,symbols/sy: added Kurdish,
+ closed https://bugs.freedesktop.org/show_bug.cgi?id=6159
+ one more time
+
+2006-04-20 Sergey Udaltsov
+
+ * keycodes/evdev: added LSGT, closing
+ https://bugs.freedesktop.org/show_bug.cgi?id=6674
+
+2006-04-19 Sergey Udaltsov
+
+ * symbols/macintosh_vndr/(be,de,ch): use keypad(comma)
+
+2006-04-19 Sergey Udaltsov
+
+ * rules/*, keymap/sgi_vndr/*: shift_toggle -> shifts_toggle,
+ fixing https://bugs.freedesktop.org/show_bug.cgi?id=5078
+
+2006-04-08 Sergey Udaltsov
+
+ * keycodes/xfree86,symbols/br: fixed abnt2 keymap and layout
+ https://bugs.freedesktop.org/show_bug.cgi?id=4910
+
+2006-04-08 Sergey Udaltsov
+
+ * geometry/macintosh: fixed mac geometry
+ https://bugs.freedesktop.org/show_bug.cgi?id=4714
+
+2006-04-05 Sergey Udaltsov
+
+ * rules/base.xml.in, changed PC-98xx Series to Japan,
+ https://bugs.freedesktop.org/show_bug.cgi?id=5591
+
+2006-04-04 Sergey Udaltsov
+
+ * symbols/compose,rules/base.xml.in,rules/base.o_s.part: added
+ compose(lwin)
+ https://bugs.freedesktop.org/show_bug.cgi?id=2396
+
+2006-04-04 Sergey Udaltsov
+
+ * symbols/inet,rules/base.xml.in: added Logitech diNovo
+ https://bugs.freedesktop.org/show_bug.cgi?id=1681
+
+2006-04-04 Sergey Udaltsov
+
+ * symbols/inet: fixed Logitech Access Keyboard
+ https://bugs.freedesktop.org/show_bug.cgi?id=1018
+
+2006-04-04 Sergey Udaltsov
+
+ * symbols/pt: added LSGT
+ https://bugs.freedesktop.org/show_bug.cgi?id=970
+
+2006-04-02 Sergey Udaltsov
+
+ * symbols/be, rules/base.xml.in: added 'be(wang)'
+ https://bugs.freedesktop.org/show_bug.cgi?id=6474
+
+2006-03-28 Sergey Udaltsov
+
+ * symbols/cd, symbols/Makefile.am: added 'cd'
+ https://bugs.freedesktop.org/show_bug.cgi?id=5500
+
+2006-03-27 Sergey Udaltsov
+
+ * keycodes/macintosh,keymap/macintosh,rules/base.m_k.part: fixed
+ Macintosh F13-F15, closed
+ https://bugs.freedesktop.org/show_bug.cgi?id=6399
+
+2006-03-25 Sergey Udaltsov
+
+ * symbols/inet: fixed cymotion,
+ https://bugs.freedesktop.org/show_bug.cgi?id=3541
+
+2006-03-25 Sergey Udaltsov
+
+ * symbols/il,rules/compat/variantRename.lst: generalized 'basic',
+ removed si1452, closed
+ https://bugs.freedesktop.org/show_bug.cgi?id=6375
+
+2006-03-23 Sergey Udaltsov
+
+ * symbols/group: another attempt to fix unfamous
+ RAlt problem, reported in ubuntu:
+ https://launchpad.net/distros/ubuntu/+source/xkeyboard-config/+bug/35845
+ Now all types are specified for Group1, to make it consistent
+
+2006-03-22 Sergey Udaltsov
+
+ * rules/base.xml.in,symbols/tr: added Kurdish, closed
+ https://bugs.freedesktop.org/show_bug.cgi?id=6159
+
+2006-03-22 Sergey Udaltsov
+
+ * rules/base.xml.in: added missing Logitech models, fixed
+ https://bugs.freedesktop.org/show_bug.cgi?id=6350
+
+2006-03-21 Sergey Udaltsov
+
+ * symbols/kr: added Korean layout, closing
+ https://bugs.freedesktop.org/show_bug.cgi?id=6323
+
+2006-03-21 Sergey Udaltsov
+
+ * types/pc,symbols/level3: another attempt to fix unfamous
+ RAlt problem, reported in ubuntu:
+ https://launchpad.net/distros/ubuntu/+source/xkeyboard-config/+bug/35845
+
+2006-03-17 Sergey Udaltsov
+
+ * symbols/inet, rules/base*: added Acer Ferrari 4K
+ https://bugs.freedesktop.org/show_bug.cgi?id=5259
+
+2006-03-16 Sergey Udaltsov
+
+ * symbols/ee: improved ee(dvorak), closing
+ https://bugs.freedesktop.org/show_bug.cgi?id=4568
+
+2006-03-05 Sergey Udaltsov
+
+ * configure.in, NEWS, Changelog:Preparing release 0.8
+
+2006-02-26 Sergey Udaltsov
+
+ * symbols/es, rules/base.xml.in: added es(cat), closing
+ https://bugs.freedesktop.org/show_bug.cgi?id=6047
+
+2006-02-25 Alan Coopersmith
+
+ * symbols/sun_vndr/*, compat/japan, compat/mousekeys,
+ geometry/sun:
+ massive update from Sun, see
+ https://bugs.freedesktop.org/show_bug.cgi?id=5725
+
+2006-02-24 M. Emal Alekozai <memala@gmx.net>
+
+ * symbols/af, symbols/Makefile.am, rules/base.xml:
+ added Afghan, closing
+ https://bugs.freedesktop.org/show_bug.cgi?id=6013
+
+2006-02-15 Zephaniah E. Hull <warp@aehallh.com>
+
+ * keycodes/Makefile.am:
+ * keycodes/evdev:
+ * rules/base.m_k.part:
+ Add the evdev keyboard data files. Closing
+ https://bugs.freedesktop.org/show_bug.cgi?id=5903
+
+2006-02-21 svu
+
+ * symbols/inet: Fixed inet(armada)
+ https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=5893
+
+2006-02-21 svu
+
+ * symbols/hr: Fixed hr(us)
+ https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=3807
+
+2006-02-01 svu
+
+ * rules/compat/layoutRename.lst: Added cz_qwerty compat rule
+ https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=177362
+
+2006-01-31 svu
+
+ * symbols/us: Added single-handed dvoraks
+ https://bugs.freedesktop.org/show_bug.cgi?id=5659
+
+2006-01-22 svu
+
+ * types/level5: Fixed ScrollLock behaviour
+ https://bugs.freedesktop.org/show_bug.cgi?id=5635
+
+2006-01-15 svu
+
+ * symbols/bd: Corrected Bangladesh layout, closed
+ https://bugs.freedesktop.org/show_bug.cgi?id=5480
+
+2006-01-14 svu
+
+ * rules/base.ml_*.part: Japanese layouts are nec_vndr/jp, for
+ consistency
+
+2006-01-14 svu
+
+ * symbols/macintosh_vnd/is: some cosmetic stuff and some info, closing
+ https://bugs.freedesktop.org/show_bug.cgi?id=5597
+
+2006-01-14 svu
+
+ * rules/base.lists.part: extended non-latin list, closing
+ https://bugs.freedesktop.org/show_bug.cgi?id=5590
+
+2006-01-11 svu
+
+ * rules/base*part: improved stuff for non-AT keyboards, closing
+ https://bugs.freedesktop.org/show_bug.cgi?id=5507
+
+2006-01-10 svu
+
+ * geometry/pc: fixed geometry, closed
+ https://bugs.freedesktop.org/show_bug.cgi?id=5568
+
+2006-01-08 svu
+
+ * symbols/gh: added Ghana layout, closed
+ https://bugs.freedesktop.org/show_bug.cgi?id=5497
+
+2006-01-06 svu
+
+ * symbols/ad: added Catalan layout, closed
+ https://bugs.freedesktop.org/show_bug.cgi?id=5526
+
+2006-01-01 svu
+
+ * symbols/in: fixed ben_probhat, closed
+ https://bugs.freedesktop.org/show_bug.cgi?id=1012
+
+2005-12-31 svu
+
+ * symbols/ru, rules/base.xml.in: added
+ Tatar, closing https://bugs.freedesktop.org/show_bug.cgi?id=4818
+
+2005-12-31 svu
+
+ * symbols/kh, rules/base.xml.in, symbols/Makefile.am: added
+ Khmer, closing https://bugs.freedesktop.org/show_bug.cgi?id=5389
+
+2005-12-31 svu
+
+ * symbols/epo, rules/base.xml.in, symbols/Makefile.am: added
+ Esperanto, closing https://bugs.freedesktop.org/show_bug.cgi?id=5454
+
+2005-12-30 svu
+
+ * symbols/ctrl: expanding Caps a bit, closing
+ https://bugs.freedesktop.org/show_bug.cgi?id=3193
+
+2005-12-20 svu
+
+ * symbols/hu: returned def_dot (instead of def_comma, really
+ eliminated)
+
+2005-12-10 svu
+
+ * symbols/compat/layoutRename.lst: added en_US
+
+2005-12-01 svu
+
+ * symbols/inet, rules/base.xml.in: added Inspiron 6000 keys, closed
+ https://bugs.freedesktop.org/show_bug.cgi?id=5195
+
+2005-12-01 svu
+
+ * symbols/inet: HUGE redesign of the inet file. Major reorganization
+ of Logitech keyboard. HUGE thanks to Fr?d?ric BOITEUX
+
+2005-11-26 svu
+
+ * symbols/group, symbols/level3, compat/level5, compat/misc:
+ Fixing problem with level3(ralt) and group(alts_toggle).
+ Now "us,ru,se" works ok.
+
+2005-10-20 svu
+
+ * symbols/inet, rules:
+ adding Dell USB Multimedia Keybard, closing
+ https://bugs.freedesktop.org/show_bug.cgi?id=4826
+
+2005-10-17 svu
+
+ * symbols, types, compat, rules:
+ adding 5th level and beyond, trying to hack 1-group Canadian layout
+
+2005-10-11 svu
+
+ * symbols/macintosh_vndr/fr: update French Macintosh keyboard, closed
+ https://bugs.freedesktop.org/show_bug.cgi?id=2870
+
+2005-10-10 svu
+
+ * symbols/za, rules/base.xml.in: added South Afrika, closed
+ https://bugs.freedesktop.org/show_bug.cgi?id=2856
+
+2005-10-09 svu
+
+ * symbols/inet: expanded Inspiron definition, closed
+ https://bugs.freedesktop.org/show_bug.cgi?id=4071
+
+2005-10-07 svu
+
+ * symbols/hu: fixed comma issue, closed
+ https://bugs.freedesktop.org/show_bug.cgi?id=4693
+
+2005-10-04 svu
+
+ * symbols/by, rules/base.xml.in: added by(latin), closed
+ https://bugs.freedesktop.org/show_bug.cgi?id=4576
+
+2005-10-04 svu
+
+ * symbols/gr: added keypad(comma), closed
+ https://bugs.freedesktop.org/show_bug.cgi?id=3538
+
+2005-10-02 svu
+
+ * symbols/se:
+ updating svorak, closing
+ https://bugs.freedesktop.org/show_bug.cgi?id=3635
+
+2005-10-02 svu
+
+ * rules/base.lists.part, rules/base.xml.in,
+ symbols/inet:
+ adding Genius Comfy, closing
+ https://bugs.freedesktop.org/show_bug.cgi?id=2275
+
+2005-10-02 svu
+
+ * rules/Makefile.am, rules/HDR,
+ rules/base.l1o_s.part, rules/base.l2o_s.part,
+ rules/base.l3o_s.part, rules/base.l4o_s.part:
+ adding "layout + option -> symbols" rules,
+ for properly maingating RAlt as AltGr + alts_toggle
+ IMPORTANT: REQUIRES FIXING XORG
+
+2005-10-02 svu
+
+ * rules/base.xml.in, symbols/ee:
+ added Estonian Dvorak, closed
+ https://bugs.freedesktop.org/show_bug.cgi?id=4568
+
+2005-10-02 svu
+
+ * rules/base.xml.in, symbols/inet, rules/base.lists.part:
+ Added eMachines m68xx notebooks keyboards, closed
+ https://bugs.freedesktop.org/show_bug.cgi?id=4000
+
+2005-10-01 svu
+
+ * rules/base.xml.in, symbols/inet, rules/base.lists.part:
+ Added SILVERCREST Multimedia Wireless Keyboard, closed
+ https://bugs.freedesktop.org/show_bug.cgi?id=4217
+
+2005-09-30 svu
+
+ * rules/compat/layoutRename.lst:
+ added us_intl, fixed https://bugs.freedesktop.org/show_bug.cgi?id=4642
+
+2005-09-30 svu
+
+ * po/sl.po:
+ Slovenian translation
+
+2005-09-22 svu
+
+ * rules/base.xml.in, rules/base.o_s.part, symbols/compose:
+ adding CapsLock as Compose, closing
+ https://bugs.freedesktop.org/show_bug.cgi?id=4548
+
+2005-09-22 svu
+
+ * rules/Makefile.am, rules/merge.sh
+ fixing merging in env where srcdir != objdir, closing
+ https://bugs.freedesktop.org/show_bug.cgi?id=4547
+
+2005-09-22 svu
+
+ * rules/base.xml.in, symbols/kz:
+ change Cyr to Rus
+
+2005-09-21 svu
+
+ * rules/base.ml_s.part:
+ IMPORTANT: NO MORE 2-GROUP CANADIAN DEFAULT CONFIGURATION
+
+2005-09-21 svu
+
+ * symbols/kz, symbols/Makefile.am, rules/base.xml.in:
+ added Kazakh, fixing
+ https://bugs.freedesktop.org/show_bug.cgi?id=4497
+
+2005-09-20 svu
+
+ * symbols/macintoch_vndr/ch:
+ Updated de_CH, from
+ https://bugs.freedesktop.org/show_bug.cgi?id=4520
+
+2005-09-20 svu
+
+ * symbols/mk, rules/base.xml.in:
+ removing controversal 'FYROM'
+
+2005-09-14 svu
+
+ * symbols/inet, rules/base.xml.in rules/base.lists.part:
+ Added Cherry CyBo@rd USB-Hub. Thanks to Paul Egan
+ Fixed https://bugs.freedesktop.org/show_bug.cgi?id=4498
+
+2005-09-14 svu
+
+ * symbols/cs: a bit of cleanup by Denis
+
+2005-09-13 svu
+
+ * configure.in: added Finnish translation
+
+2005-09-04 svu
+
+ * symbols/no:
+ fixed no(dvorak), closing
+ https://bugs.freedesktop.org/show_bug.cgi?id=4397
+
+2005-09-04 svu
+
+ * rules/base.xml.in, symbols/inet:
+ adding Power G5
+
+2005-09-04 svu
+
+ * rules/base.xml.in, symbols/ro:
+ Fixing Romanian, closing
+ https://bugs.freedesktop.org/show_bug.cgi?id=371
+
+2005-09-04 svu
+
+ * rules/base.xml.in, symbols/lk:
+ No TSCII/INSCRIPT in Sri Lanka,
+ according to <hash@jayasolutions.cjb.net>
+
+2005-08-25 svu
+
+ * rules/base.xml.in:
+ Control -> Ctrl everywhere, for consistency sake
+
+2005-08-25 svu
+
+ * rules/base.xml.in, symbols/cs:
+ Serbia -> Serbia and Montenegro
+
+2005-08-25 svu
+
+ * configure.in, po/sr@Latn.po:
+ adding sr@Latn translation, thanks to Danilo
+
+2005-08-24 svu
+
+ * configure.in:
+ preparing 0.6
+
+2005-08-24 svu
+
+ * rules/base.xml.in, symbols/mk,
+ rules/compat/layoutRename.lst:
+ Move Macedonian to country-based
+
+2005-08-23 svu
+
+ * rules/base.xml.in, symbols/ba,
+ symbols/si, symbols/cs, symbols/hr:
+ Major Balkanian revolution by Danilo Segan. GREAT THANKS to him.
+
+2005-08-22 svu
+
+ * rules/base.xml.in, symbols/mv:
+ Moved Dhivehi to Maldives, fixed #3716
+
+2005-08-22 svu
+
+ * rules/compat/layoutRename.lst:
+ fixed http://bugzilla.ubuntu.com/show_bug.cgi?id=13919
+
+2005-08-16 svu
+
+ * rules/base.xml.in, symbols/ir:
+ fixed https://bugs.freedesktop.org/show_bug.cgi?id=4102
+
+2005-08-11 svu
+
+ * symbols/jp, symbols/pc:
+ fixed https://bugs.freedesktop.org/show_bug.cgi?id=847
+
+2005-08-07 svu
+
+ * symbols/bg:
+ fixed https://bugs.freedesktop.org/show_bug.cgi?id=4010
+
+2005-08-06 svu
+
+ * Makefile.am:
+ Allowing multiple compatibility symlinks (xfree86,xorg).
+ Thanks to Daniel Stone for the feedback
+
+2005-08-06 svu
+
+ * Makefile.am:
+ Fixing the xkbcomp symlink creation
+ Thanks to Daniel Stone for the feedback
+
+2005-08-04 svu
+
+ * Makefile.am, configure.in, xkbrules.am:
+ Taking nice ideas from xkbdata.
+ Thanks to Daniel Stone for his knowledge of autofoo
+
+2005-08-04 svu
+
+ * symbols/in, symbols/lk,
+ rules/base.xml.in, rules/compat/variantRename.lst:
+ a bit reogranizing tamil stuff
+
+2005-08-03 svu
+
+ * symbols/ie, rules/base.xml.in, rules/compat/variantRename.lst:
+ getting rid of laptop variants in 'ie'
+
+2005-08-02 svu
+
+ * symbols/in, rules/base.xml.in, rules/compat/variantRename.lst:
+ moving 'mal_plusnum' to 'mal'
+
+2005-08-01 svu
+
+ * symbols/il, symbols/hr, symbols/tj:
+ fixing two-group layouts
+
+2005-08-01 svu
+
+ * symbols, rules:
+ putting syr to sy, dzo to bt
+
+2005-07-31 svu
+
+ * symbols, rules:
+ putting smi to no, fi, se
+
+2005-07-31 svu
+
+ * symbols, rules:
+ putting Syriac to Syria (setting 'ara' as default)
+
+2005-07-31 svu
+
+ * symbols, rules:
+ putting Devangari, Gurmukhi into 'in'
+
+2005-07-31 svu
+
+ * symbols, rules:
+ changing 'lao' to 'la'
+
+2005-07-31 svu
+
+ * symbols, rules:
+ putting Inuktitut into 'ca'
+
+2005-07-31 svu
+
+ * symbols, rules:
+ putting Ogham into 'ie'. Cleaning it up.
+
+2005-07-29 svu
+
+ * symbols, rules:
+ reorganizing Asian layouts, round #1
+
+2005-07-25 svu
+
+ * symbols/tr:
+ fixed Turkish, according to
+ https://bugs.freedesktop.org/show_bug.cgi?id=2558
+
+2005-07-25 svu
+
+ * symbols/hr:
+ added belowdot, abovedot, in relation to
+ https://bugs.freedesktop.org/show_bug.cgi?id=475
+
+2005-07-24 svu
+
+ * symbols/div,
+ symbols/Makefile.am,
+ rules/base.xml.in: adding Dhivehi, fixing
+ https://bugs.freedesktop.org/show_bug.cgi?id=3716
+
+2005-07-23 svu
+
+ * symbols/es,
+ rules/base.xml.in:
+ adding Spanish dvorak, pointer from
+ https://bugs.freedesktop.org/show_bug.cgi?id=2344
+
+2005-07-21 svu
+
+ * symbols/sun_vndr/us,
+ rules/sun,
+ keycodes/sun,
+ geometry/sun: adding more keyboards, fixing
+ https://bugs.freedesktop.org/show_bug.cgi?id=2037
+
+2005-07-20 svu
+
+ * symbols/ru,
+ symbols/us,
+ symbols/se,
+ symbols/ua,
+ rules/base.xml.in:
+ sorting out Russian layout, fixing (without 3rd and 4th groups)
+ https://bugs.freedesktop.org/show_bug.cgi?id=2582
+
+2005-07-15 svu
+
+ * symbols/inet, rules/base.xml.in:
+ added Cherry CyMotion Linux, fixed
+ https://bugs.freedesktop.org/show_bug.cgi?id=3789
+
+2005-07-02 svu
+
+ * symbols/nl: fixed Dutch layout
+
+2005-06-17 svu
+
+ * symbols/pl: added AB10 to qwertz
+ https://bugs.freedesktop.org/show_bug.cgi?id=3298
+
+2005-06-17 svu
+
+ * symbols/inet, rules/base.xml.in: added logiultrax,
+ https://bugs.freedesktop.org/show_bug.cgi?id=3523
+
+2005-04-17 svu
+
+ * symbols/tam, rules/base.xml.in: changed default for Tamil,
+ https://bugs.freedesktop.org/show_bug.cgi?id=2971
+
+2005-04-02 svu
+
+ * symbols/de, rules/base.xml.in: added de(dvorak),
+ https://bugs.freedesktop.org/show_bug.cgi?id=2681
+
+2005-03-10 svu
+
+ * po/Makefile.am: adding POTFILES* into the dist
+ * Makefile.am, rules/Makefile.am: adding DISTCLEANFILES
+
+2005-03-09 svu
+
+ * symbols/us: fixing dvorak,
+ https://bugs.freedesktop.org/show_bug.cgi?id=2641
+
+2005-02-05 svu
+
+ * configure.in, NEWS: preparing 0.5
+
+2005-02-03 svu
+
+ * symbols/srp, types/extra: replaced SERBIAN_ALPHABETIC with
+ FOUR_LEVEL_ALPHABETIC, as Danilo requested. Also, SERBIAN_CAPS
+ renamed to SEPARATE_CAPS_AND_SHIFT_ALPHABETIC.
+
+2005-01-21 svu
+
+ * rules/base.lists.part,
+ rules/base.xml.in,
+ symbols/inet: addin my own Acer Travelmate 800 keyboard
+ (based on acerhk kernel module).
+
+2005-01-21 svu
+
+ * symbols/gr: a bit more order in group name (needed for 'basic' but
+ not for 'bare'
+
+2005-01-20 svu
+
+ * symbols/hr: added missing keymapping,
+ fixed https://bugs.freedesktop.org/show_bug.cgi?id=2325
+
+2005-01-19 svu
+
+ * symbols/us: removed illegal 'hidden' attribute from the default layout
+
+2005-01-18 svu
+
+ * symbols/cz, rules/base.xml.in: fixed the Czech layout,
+ https://bugs.freedesktop.org/show_bug.cgi?id=2319
+
+2005-01-16 svu
+
+ * symbols, rules/base.xml.in: HUGE commit - adjusting the group names
+ according to the descriptions.
+ Also, some layouts were missing the default variants - added one.
+ Also, some default variants were listed in the variantLists - now they are removed.
+
+2005-01-06 svu
+
+ * symbols/am, rules/base.xml.in: Removing old Armenian layout,
+ fixing http://bugs.freedesktop.org/show_bug.cgi?id=2226
+
+2004-12-22 svu
+
+ * symbols: massive patch for the group names (by Denis Barbier)
+ * rules/base.xml.in: first iteration, match the country names with
+ the group names
+
+2004-12-21 02:07 svu
+
+ * po/el.po,
+ configure.in: Greek translation
+
+2004-12-20 20:30 svu
+
+ * symbols/inet,
+ rules/base.lists.part,
+ rules/base.xml.in: added A4Tech KBS-8, thanks to olo at force dot sk.
+ fixed https://bugs.freedesktop.org/show_bug.cgi?id=2113
+
+2004-12-10 00:30 svu
+
+ * symbols/inet: removed keyboard names from the group names,
+ fixed https://bugs.freedesktop.org/show_bug.cgi?id=2044
+
+2004-12-08 00:30 svu
+
+ * symbols/mkd,
+ rules/base.xml.in,
+ rules/compat/layoutRename.lst,
+ rules/compat/Makefile.am: Macedonian is now language-based,
+ not country-based. Compatibility rule added.
+
+2004-12-04 01:40 svu
+
+ * symbols/mk, rules/base.xml.in: small fix for Makedonian
+
+2004-12-03 00:40 svu
+
+ * configure.in, Makefile.am, compiled: some cleanup in the
+ build process
+
+2004-11-29 19:00 svu
+
+ * symbols/sin: Small patch for Sinhala from Harshula
+
+2004-11-14 22:14 svu
+
+ * symbols/sin: Small patch for Sinhala from Harshula
+
+2004-10-31 01:20 svu
+
+ * symbols/ca, rules/base.xml.in: added fr-dvorak, thanks to
+ Jonathan Bastien-Filiatrault
+
+2004-10-29 01:15 svu
+
+ * symbols/am: fixed phonetic layout, bug
+ http://freedesktop.org/bugzilla/show_bug.cgi?id=1714
+
+2004-10-29 00:55 svu
+
+ * rules/base.xml.in, rules/base.lists.part, symbols/inet:
+ Added Cherry CyMotion Master XPress, fixed
+ http://freedesktop.org/bugzilla/show_bug.cgi?id=1715
+
+2004-10-26 21:08 svu
+
+ * symbols/Makefile.am, symbols/kg, rules/base.xml.in: added
+ Kyrgyz, thanks to Yury Fedorov
+
+2004-10-12 18:45 svu
+
+ * symbols/Makefile.am, symbols/sin, rules/base.xml.in: added
+ Sinhalese, thanks to Harshula Jayasuriya
+
+2004-10-10 23:59 svu
+
+ * po/: af.po, az.po, bg.po, cs.po, da.po, fr.po, hu.po, nl.po,
+ ru.po, sk.po, sq.po, sr.po, sv.po, tr.po, uk.po, zh_CN.po: update
+ from TP
+
+2004-10-09 19:34 svu
+
+ * symbols/: mal, mao, mm, mn, mt, nl, ogam, ori, pc, pl, pt, ru,
+ sk, smi, srvr_ctrl, syr, tam, tel, th, tr, ua, urd, us: adding
+ the keyword
+
+2004-10-09 18:40 svu
+
+ * symbols/: jp, kan, lao, latam, latin, level3, lt, lv: adding the
+ keyword
+
+2004-10-09 18:35 svu
+
+ * symbols/: deva, dzo, ee, es, eurosign, fo, fr, gb, ge, gr, guj,
+ guru, ie, iku, il, inet, ir, is, it: adding the keyword
+
+2004-10-09 18:29 svu
+
+ * symbols/: al, altwin, am, ara, az, be, ben, bg, by, capslock, ch,
+ compose, ctrl, cz: adding the keyword
+
+2004-10-09 18:26 svu
+
+ * symbols/: ca, uz, vn: adding the keyword
+
+2004-10-09 18:23 svu
+
+ * symbols/: ca, uz, vn: fixing
+ https://freedesktop.org/bugzilla/show_bug.cgi?id=1566
+
+2004-10-09 00:31 svu
+
+ * symbols/ch: fixing
+ https://freedesktop.org/bugzilla/show_bug.cgi?id=1562
+
+2004-10-09 00:20 svu
+
+ * symbols/ca: fixing
+ https://freedesktop.org/bugzilla/show_bug.cgi?id=1563
+
+2004-10-08 21:55 svu
+
+ * symbols/hu: fixing
+ https://freedesktop.org/bugzilla/show_bug.cgi?id=1561
+
+2004-09-29 23:25 svu
+
+ * symbols/macintosh_vndr/: Makefile.am, is: Added Icelandic layout
+ to the Macintosh group
+
+2004-09-28 00:00 svu
+
+ * NEWS, configure.in: preparing 0.4
+
+2004-09-18 01:00 svu
+
+ * BUGS, rules/base.xml.in: David noticed small glitches in
+ base.xml.in
+
+2004-09-16 01:11 svu
+
+ * rules/Makefile.am, rules/base.o_s.part, rules/base.xml.in,
+ rules/compat/Makefile.am, rules/compat/base.o_s.part,
+ symbols/group: shift_toggle -> shifts_toggle
+
+2004-09-15 23:20 svu
+
+ * symbols/group: make the ctrsl_toggle consistend with the others
+
+2004-09-14 20:54 svu
+
+ * symbols/ba: more commas
+
+2004-09-14 20:38 svu
+
+ * symbols/: mk, srp: more commas
+
+2004-09-14 20:14 svu
+
+ * symbols/: br, de, dk, fi, hr, hu, keypad, no, pl, ro, se, si:
+ keymap(comma) introduced by Frank
+
+2004-09-13 22:39 svu
+
+ * symbols/tj: new local cvs keyword seems to be ok - no more $Id$
+
+2004-09-13 22:38 svu
+
+ * symbols/tj: trying new local cvs keyword
+
+2004-09-13 19:49 svu
+
+ * symbols/ara, symbols/bg, symbols/by, symbols/capslock,
+ symbols/deva, symbols/fo, symbols/guj, symbols/guru, symbols/iku,
+ symbols/il, symbols/ir, symbols/kan, symbols/lao, symbols/mk,
+ symbols/mm, symbols/mt, symbols/ori, symbols/sk, symbols/srp,
+ symbols/tel, compat/README, compat/ledcaps, compat/lednum,
+ compat/ledscroll, docs/README.config, geometry/README,
+ geometry/dell, geometry/everex, geometry/keytronic,
+ geometry/kinesis, geometry/microsoft, geometry/northgate,
+ geometry/sgi_vndr/O2, geometry/sgi_vndr/indigo,
+ geometry/sgi_vndr/indy, keycodes/README, keycodes/aliases,
+ keymap/README, keymap/sgi_vndr/cz, keymap/sgi_vndr/sk,
+ rules/README, symbols/macintosh_vndr/ch,
+ symbols/macintosh_vndr/es, symbols/macintosh_vndr/fi,
+ symbols/macintosh_vndr/fr, symbols/macintosh_vndr/it,
+ symbols/macintosh_vndr/nl, symbols/sun_vndr/usb, types/README,
+ types/basic, types/default, types/numpad: no dummy XFree keyword
+
+2004-09-11 21:41 svu
+
+ * symbols/tj: trying Id
+
+2004-09-09 23:05 svu
+
+ * symbols/: tj: fixing keyword
+
+2004-09-09 23:02 svu
+
+ * symbols/tj: fixing keyword
+
+2004-09-09 22:07 svu
+
+ * symbols/level3: ONE_LEVEL fixing by Frank
+
+2004-09-09 00:01 svu
+
+ * symbols/group: more fair comment
+
+2004-09-08 23:40 svu
+
+ * symbols/level3: they agreed on this
+
+2004-09-08 20:14 svu
+
+ * compat/Makefile.am, rules/base.o_c.part: no more capsled traces
+
+2004-09-07 23:58 svu
+
+ * symbols/level3: restoring for a while, till guys make agreement
+
+2004-09-07 23:16 svu
+
+ * symbols/mn: just for sync:)
+
+2004-09-07 21:51 svu
+
+ * po/ru.po: updated translation
+
+2004-09-07 21:50 svu
+
+ * rules/base.xml.in: small polish of the option descriptions
+
+2004-09-07 20:56 svu
+
+ * symbols/: al, az, be, br, ca, cz, de, dk, dzo, ee, es, fi, fo,
+ fr, gb, hr, hu, is, it, latam, level3, lt, mt, nl, no, pt, ro,
+ se, si, sk, smi, srp, tr, us, vn: changing to ralt_switch
+
+2004-09-07 20:39 svu
+
+ * rules/: base.o_s.part, sgi, sun: small fixes, thanks to Frank
+
+2004-09-07 20:33 svu
+
+ * symbols/urd: forgotten to add
+
+2004-09-06 00:59 svu
+
+ * rules/base.xml.in, symbols/Makefile.am: Adding Urdu layout,
+ thanks to Zaeem Arshad
+
+2004-09-04 22:39 svu
+
+ * compat/Makefile.am, compat/basic, compat/group_led,
+ compat/ledcaps, compat/lednum, compat/leds, compat/ledscroll,
+ compat/misc, rules/base.o_c.part, rules/base.o_s.part,
+ rules/base.xml.in, symbols/Makefile.am, symbols/capslock,
+ symbols/group, symbols/lock: reorganizing indicators, thanks to
+ Frank Murphy
+
+2004-08-28 02:04 svu
+
+ * symbols/compose, rules/base.o_s.part, rules/base.xml.in: adding
+ RCtrl as Compose
+
+2004-08-27 23:57 svu
+
+ * symbols/us: thanks to Frank, he noticed two default variants in
+ the us layout
+
+2004-08-27 19:20 svu
+
+ * rules/: base.o_s.part, base.xml.in: meta-info about eurosign
+
+2004-08-27 02:23 svu
+
+ * symbols/: Makefile.am, eurosign: added eurosign
+
+2004-07-25 14:55 svu
+
+ * Makefile.am, mkinstalldirs: fixing mkinstalldirs
+
+2004-07-24 00:42 svu
+
+ * rules/Makefile.am: minor fix for the minor bug detected by
+ distcheck
+
+2004-07-23 22:21 svu
+
+ * TODO: up2date
+
+2004-07-23 22:00 svu
+
+ * NEWS, configure.in: preparing 0.3
+
+2004-07-23 00:11 svu
+
+ * rules/: HDR, Makefile.am, compat/.cvsignore, compat/Makefile.am,
+ compat/lnv_s.sh, compat/ml1v1_s.sh: HURRAY!!! Rules are working!
+ Am I cool or what?
+
+2004-07-22 02:03 svu
+
+ * rules/HDR: fixing the header for MLV
+
+2004-07-21 02:21 svu
+
+ * rules/: HDR, Makefile.am, base.mlv_s.part, base.mvl_s.part,
+ compat/.cvsignore, compat/Makefile.am, compat/ln_s.sh,
+ compat/ml1_s.sh, compat/ml_s.sh, compat/mlv_s.sh: variants are
+ there
+
+2004-07-21 01:57 svu
+
+ * rules/: HDR, Makefile.am, compat/.cvsignore, compat/Makefile.am,
+ compat/lnv_s.sh, compat/ml1_s.sh, compat/ml1v_s.sh: a bit more
+ about variants
+
+2004-07-21 01:48 svu
+
+ * rules/: .cvsignore, HDR, Makefile.am, compat/.cvsignore,
+ compat/Makefile.am, compat/lnv_s.sh, compat/variantRename.lst:
+ adding variants - not complete yet
+
+2004-07-21 01:25 svu
+
+ * rules/compat/: Makefile.am, l2_s.sh, l3_s.sh, l4_s.sh, ln_s.sh:
+ single script for the layouts 2-4
+
+2004-07-21 00:02 svu
+
+ * rules/merge.sh: bash is great but sh is standard - and think
+ optimal, dude
+
+2004-07-20 02:57 svu
+
+ * rules/compat/: l2_s.sh, l3_s.sh, l4_s.sh: the extra layouts (2-4)
+ should be ADDED using '+' character
+
+2004-07-20 02:49 svu
+
+ * rules/: base.ml1_c.part, base.ml1_s.part, base.ml_c.part,
+ base.ml_s.part, compat/l2_s.sh, compat/l3_s.sh, compat/l4_s.sh,
+ compat/ml1_s.sh, compat/ml_s.sh: alignment
+
+2004-07-20 02:33 svu
+
+ * rules/compat/: ml1_s.sh, ml_s.sh: little fix
+
+2004-07-20 02:29 svu
+
+ * rules/: HDR, Makefile.am, base.l1_k.part, base.l2_s.part,
+ base.l3_s.part, base.l4_s.part, base.l_k.part, base.m_g.part,
+ base.m_k.part, base.m_s.part, base.m_t.part, base.ml1_c.part,
+ base.ml1_s.part, base.ml_c.part, base.ml_s.part, base.mvl_s.part,
+ base.o_c.part, base.o_s.part, base.o_t.part, merge.sh: Now, we
+ compoze the parts using bash script
+
+2004-07-18 03:54 svu
+
+ * configure.in, rules/.cvsignore, rules/compat/.cvsignore,
+ rules/compat/Makefile.am, rules/compat/base.lists.part,
+ rules/compat/l2_s.sh, rules/compat/l3_s.sh, rules/compat/l4_s.sh,
+ rules/compat/layoutRename.lst, rules/compat/ml1_s.sh,
+ rules/compat/ml_s.sh: starting bundling compatibility parts
+
+2004-07-18 03:44 svu
+
+ * rules/: Makefile.am, base: cleaning a bit before adding the
+ compat directory
+
+2004-07-18 01:56 svu
+
+ * rules/: Makefile.am, base, base.l1_k.part, base.l2_s.part,
+ base.l3_s.part, base.l4_s.part, base.l_k.part, base.lists.part,
+ base.m_g.part, base.m_k.part, base.m_s.part, base.m_t.part,
+ base.ml1_c.part, base.ml1_s.part, base.ml_c.part, base.ml_s.part,
+ base.mvl_s.part, base.o_c.part, base.o_s.part, base.o_t.part:
+ better empty line handling between rule groups
+
+2004-07-18 01:42 svu
+
+ * rules/: Makefile.am, base, base.hdr.part, base.l1_k.part,
+ base.l2_s.part, base.l3_s.part, base.l4_s.part, base.l_k.part,
+ base.lists.part, base.m_g.part, base.m_k.part, base.m_s.part,
+ base.m_t.part, base.ml1_c.part, base.ml1_s.part, base.ml_c.part,
+ base.ml_s.part, base.mvl_s.part, base.o_c.part, base.o_s.part,
+ base.o_t.part: Now, the base rules are composed from microfiles
+ *.part. I see no other way to handle compatibility in a
+ manageable way. Kill me if I know it.
+
+2004-07-09 05:21 daniel
+
+ * ChangeLog, configure.in: * configure.in: Alter with-xkb-base
+ default to $(prefix)/lib/X11/xkb, instead of
+ $(prefix)/X11R6/lib/xkb, which makes --prefix=/usr behave sanely.
+
+2004-07-08 21:40 svu
+
+ * configure.in: getting rid of unnecessary AM_GLIB_GNU_GETTEXT
+
+2004-07-07 22:52 kidcrash
+
+ * ChangeLog: adding required ChangeLog file
+
+2004-07-06 23:44 svu
+
+ * .cvsignore: Anjuta files are not in CVS - and'll never be
+
+2004-07-04 02:00 svu
+
+ * po/ru.po: updating Russian translation
+
+2004-07-04 01:31 svu
+
+ * rules/base.xml.in, symbols/Makefile.am, symbols/cs, symbols/srp:
+ streamlining ex-yu layouts
+
+2004-07-03 03:32 svu
+
+ * rules/base.xml.in, symbols/Makefile.am, symbols/dvorak,
+ symbols/fr, symbols/gb, symbols/no, symbols/pl, symbols/se,
+ symbols/us, po/ru.po: splitting dvorak
+
+2004-07-02 01:59 svu
+
+ * symbols/smi: fixing broken layouts, thanks to my testing scripts
+
+2004-07-02 01:49 svu
+
+ * symbols/: Makefile.am, ara, gr, latam, lv, mal, ogam: fixing
+ broken layouts, thanks to my testing scripts
+
+2004-07-02 00:16 svu
+
+ * po/Makefile.am: adding update-po
+
+2004-07-01 22:28 svu
+
+ * docs/: iso3166.csv, iso639.csv: more fresh version of the
+ standards
+
+2004-07-01 03:01 svu
+
+ * po/ru.po: completing Russian translation - though some things are
+ questionable
+
+2004-07-01 02:59 svu
+
+ * config.rpath, mkinstalldirs: why would I need these files in
+ CVS???
+
+2004-07-01 02:55 svu
+
+ * ABOUT-NLS: empty but very useful file
+
+2004-07-01 02:48 svu
+
+ * Makefile.am, autogen.sh, configure.in, po/Makefile.am,
+ rules/base.xml.in: Starting to fix intltool problem, Danilo just
+ roxx
+
+2004-06-30 23:47 svu
+
+ * rules/base.xml.in, symbols/Makefile.am, symbols/cs, symbols/yu:
+ Changed yu to cs as Danilo advised - but not sure it is ok.
+ Investigating...
+
+2004-06-30 23:25 svu
+
+ * rules/base.xml.in, symbols/Makefile.am, symbols/scc, symbols/srp:
+ Changing scc to srp - as Danilo advised
+
+2004-06-26 01:54 svu
+
+ * BUGS: hopefully fixed Latvian layout
+
+2004-06-26 01:50 svu
+
+ * rules/base.xml.in, symbols/lv: hopefully fixed Latvian layout
+
+2004-06-22 01:11 svu
+
+ * configure.in: trying to set order in the Makefiles list
+
+2004-06-22 00:56 svu
+
+ * Makefile.am, configure.in, autogen.sh: trying to fix intltool -
+ but without much luck
+
+2004-06-20 20:09 svu
+
+ * rules/base.xml.in: fixing shortDescr for Smi
+
+2004-06-20 19:04 svu
+
+ * docs/: iso15924.csv, iso3166.csv, iso3166.txt, iso639.csv,
+ iso639.txt: putting order into standards
+
+2004-06-20 15:36 svu
+
+ * symbols/bg: bad patch application
+
+2004-06-20 15:36 svu
+
+ * rules/base.xml.in: typo in Sami id
+
+2004-06-20 15:22 svu
+
+ * symbols/Makefile.am: Frank forgets to chance Makefile.am:)
+
+2004-06-20 14:57 svu
+
+ * xkeyboard-config.spec.in, rules/base, rules/base.xml.in,
+ docs/Makefile.am, docs/README.symbols, symbols/ar, symbols/ara,
+ symbols/ba, symbols/bs, symbols/dev, symbols/deva, symbols/dz,
+ symbols/dzo, symbols/el, symbols/gr, symbols/gur, symbols/guru,
+ symbols/iku, symbols/iu, symbols/la, symbols/lao, symbols/latam,
+ symbols/lo, symbols/mal, symbols/mao, symbols/mi, symbols/ml,
+ symbols/ogam, symbols/ogham, symbols/sapmi, symbols/scc,
+ symbols/smi, symbols/sr, symbols/tam, symbols/tml: Second phase
+ of i18n. Frank rocks the world:)
+
+2004-06-19 04:34 svu
+
+ * symbols/mk: Macedonia AKA FYROM
+
+2004-06-19 04:32 svu
+
+ * rules/: Makefile.am, base-it.lst, base.lst, sgi.lst, sun.lst,
+ xfree98.lst: lst file is not generated automatically - only
+ base.lst
+
+2004-06-19 04:16 svu
+
+ * rules/: sgi, sun: en_US actually died only now
+
+2004-06-19 04:07 svu
+
+ * symbols/: en_US, sun_vndr/se: en_US actually died only now
+
+2004-06-16 02:07 svu
+
+ * rules/base.xml.in: ISOization, part1
+
+2004-06-16 02:00 svu
+
+ * rules/base.xml.in, symbols/bg, symbols/ch, symbols/el,
+ symbols/il, symbols/mm: ISOization, part1
+
+2004-06-15 22:04 svu
+
+ * rules/base.xml.in: better wording for Urkainian RSTU description
+
+2004-06-15 19:19 svu
+
+ * rules/base.xml.in, symbols/ru, symbols/ua: Added RSTU
+ Ukranian/Russian layouts. Thanks to Andrew Porokhnyak
+
+2004-06-13 23:12 svu
+
+ * symbols/inet: actually adding gyration keyboard
+
+2004-06-13 21:30 svu
+
+ * docs/HOWTO.testing: Forgot to add actual document
+
+2004-06-13 21:21 svu
+
+ * BUGS, rules/base, rules/base.lst, rules/base.xml.in, symbols/am,
+ symbols/inet, symbols/lt, symbols/us: fixing loads of bugs from
+ fd.o bugzilla
+
+2004-06-13 13:28 svu
+
+ * xkeyboard-config.spec.in, docs/Makefile.am: Added HOWTO.testing
+ by Frank Murphy
+
+2004-06-12 02:17 svu
+
+ * symbols/mi: getting rid of pc/
+
+2004-06-12 02:14 svu
+
+ * symbols/mi: getting rid of pc/
+
+2004-06-12 02:06 svu
+
+ * NEWS: Redoing 0.2
+
+2004-06-12 02:05 svu
+
+ * symbols/br: fixing bug 515
+
+2004-06-12 02:01 svu
+
+ * rules/base.xml.in, symbols/Makefile.am, symbols/mi: Added Maori,
+ thanks to John C Barstow
+
+2004-06-12 01:50 svu
+
+ * docs/: iso3166.txt, iso639.txt: just to have standards for
+ reference
+
+2004-06-10 23:58 svu
+
+ * NEWS: Preparing 0.2
+
+2004-06-10 23:51 svu
+
+ * README, configure.in: Preparing 0.2
+
+2004-06-06 04:22 svu
+
+ * xkeyboard-config.spec.in, docs/HOWTO.transition,
+ docs/Makefile.am, rules/Makefile.am: adding HOWTO.transition
+
+2004-05-28 23:59 svu
+
+ * Makefile.am, configure.in: Optional creation of xkbcomp symlink
+ in .../X11/xkb
+
+2004-05-25 22:30 svu
+
+ * NEWS: something to say
+
+2004-05-24 22:15 svu
+
+ * po/xkbdesc.pot: changing the project name
+
+2004-05-24 22:08 svu
+
+ * .cvsignore, Makefile.am, autogen.sh, configure.in,
+ xkbdesc.spec.in, xkeyboard-config.spec.in: changing the project
+ name
+
+2004-05-23 21:01 svu
+
+ * rules/base, rules/base.xml.in, symbols/altwin: Daniel Elstner
+ sent new option for Tux keys
+
+2004-05-18 00:24 svu
+
+ * configure.in: no glib stuff
+
+2004-05-12 13:51 pascal
+
+ * rules/base, symbols/bs: Convert Bosnian keymap to multi-layout
+ compatible form.
+
+2004-05-09 22:26 svu
+
+ * Makefile.am, README.config, README.enhancing, configure.in,
+ xkbdesc.spec.in, docs/.cvsignore, docs/Makefile.am,
+ docs/README.config: reorganization in docs
+
+2004-05-09 21:40 svu
+
+ * TODO, docs/README.enhancing: 2 bits of docs
+
+2004-05-07 19:48 svu
+
+ * po/ru.po: up2date
+
+2004-05-07 19:27 svu
+
+ * rules/base.xml.in, symbols/tr, tests/testLayouts.pl,
+ tests/testOptions.pl, tests/xkbTestFunc.pm: Some small fixes
+ made. Options are now testable as well.
+
+2004-05-06 02:00 svu
+
+ * tests/: listCI2.xsl, testLayouts.pl, testOptions.pl,
+ xkbTestFunc.pm: one more test - but still problems passing it
+
+2004-05-06 01:15 svu
+
+ * configure.in, symbols/mk, tests/testLayouts.pl: Makedonian
+ problem fixed - and BOTH tests are OK
+
+2004-05-06 01:05 svu
+
+ * symbols/digital_vndr/Makefile.am, symbols/digital_vndr/lk,
+ symbols/digital_vndr/pc, symbols/digital_vndr/us,
+ symbols/digital_vndr/vt, symbols/fujitsu_vndr/Makefile.am,
+ symbols/fujitsu_vndr/jp, keycodes/digital_vndr/Makefile.am,
+ keycodes/digital_vndr/lk, keycodes/digital_vndr/pc,
+ keycodes/sgi_vndr/Makefile.am, keycodes/sgi_vndr/indigo,
+ keycodes/sgi_vndr/indy, keycodes/sgi_vndr/iris, keymap/macintosh,
+ keymap/sony, keymap/xfree98, keymap/digital_vndr/Makefile.am,
+ keymap/digital_vndr/us, keymap/sgi_vndr/Makefile.am,
+ keymap/sgi_vndr/be, keymap/sgi_vndr/bg, keymap/sgi_vndr/ca,
+ keymap/sgi_vndr/ch, keymap/sgi_vndr/cz, keymap/sgi_vndr/de,
+ keymap/sgi_vndr/dk, keymap/sgi_vndr/dvorak,
+ keymap/sgi_vndr/en_US, keymap/sgi_vndr/es, keymap/sgi_vndr/fi,
+ keymap/sgi_vndr/fr, keymap/sgi_vndr/gb, keymap/sgi_vndr/hu,
+ keymap/sgi_vndr/it, keymap/sgi_vndr/jp, keymap/sgi_vndr/no,
+ keymap/sgi_vndr/pl, keymap/sgi_vndr/pt, keymap/sgi_vndr/ru,
+ keymap/sgi_vndr/se, keymap/sgi_vndr/sk, keymap/sgi_vndr/th,
+ keymap/sgi_vndr/us, keymap/sun_vndr/Makefile.am,
+ keymap/sun_vndr/de, keymap/sun_vndr/es, keymap/sun_vndr/fi,
+ keymap/sun_vndr/fr, keymap/sun_vndr/no, keymap/sun_vndr/pl,
+ keymap/sun_vndr/ru, keymap/sun_vndr/se, keymap/sun_vndr/uk,
+ keymap/sun_vndr/us, rules/base, rules/base.xml.in,
+ symbols/hp_vndr/Makefile.am, symbols/macintosh_vndr/Makefile.am,
+ symbols/macintosh_vndr/apple, symbols/macintosh_vndr/ch,
+ symbols/macintosh_vndr/de, symbols/macintosh_vndr/dk,
+ symbols/macintosh_vndr/fi, symbols/macintosh_vndr/no,
+ symbols/macintosh_vndr/pt, symbols/macintosh_vndr/se,
+ symbols/macintosh_vndr/us, symbols/nec_vndr/Makefile.am,
+ symbols/sgi_vndr/Makefile.am, symbols/sony_vndr/Makefile.am,
+ symbols/sun_vndr/Makefile.am, symbols/sun_vndr/se,
+ symbols/sun_vndr/us, symbols/xfree68_vndr/Makefile.am,
+ tests/testLayouts.pl, tests/testModels.pl, tests/xkbTestFunc.pm,
+ geometry/digital_vndr/Makefile.am, geometry/digital_vndr/pc,
+ geometry/ibm_vndr/Makefile.am, geometry/ibm_vndr/thinkpad,
+ geometry/sgi_vndr/Makefile.am: Yahoo! Models test pased ok!
+
+2004-05-05 23:32 svu
+
+ * configure.in, symbols/Makefile.am,
+ symbols/digital_vndr/.cvsignore,
+ symbols/digital_vndr/Makefile.am, symbols/digital_vndr/lk,
+ symbols/digital_vndr/pc, symbols/digital_vndr/us,
+ symbols/digital_vndr/vt, symbols/fujitsu_vndr/.cvsignore,
+ symbols/fujitsu_vndr/Makefile.am, symbols/fujitsu_vndr/jp,
+ symbols/fujitsu_vndr/us, symbols/hp_vndr/.cvsignore,
+ symbols/hp_vndr/Makefile.am, symbols/hp_vndr/us,
+ symbols/macintosh_vndr/.cvsignore,
+ symbols/macintosh_vndr/Makefile.am, symbols/macintosh_vndr/ch,
+ symbols/macintosh_vndr/de, symbols/macintosh_vndr/dk,
+ symbols/macintosh_vndr/es, symbols/macintosh_vndr/fi,
+ symbols/macintosh_vndr/fr, symbols/macintosh_vndr/gb,
+ symbols/macintosh_vndr/it, symbols/macintosh_vndr/nl,
+ symbols/macintosh_vndr/no, symbols/macintosh_vndr/pt,
+ symbols/macintosh_vndr/se, symbols/macintosh_vndr/us,
+ symbols/nec_vndr/.cvsignore, symbols/nec_vndr/Makefile.am,
+ symbols/nec_vndr/jp, geometry/Makefile.am,
+ geometry/digital_vndr/.cvsignore,
+ geometry/digital_vndr/Makefile.am, geometry/digital_vndr/lk,
+ geometry/digital_vndr/pc, geometry/digital_vndr/unix,
+ geometry/ibm_vndr/.cvsignore, geometry/ibm_vndr/Makefile.am,
+ geometry/ibm_vndr/thinkpad, geometry/sgi_vndr/.cvsignore,
+ geometry/sgi_vndr/Makefile.am, geometry/sgi_vndr/O2,
+ geometry/sgi_vndr/indigo, geometry/sgi_vndr/indy,
+ keycodes/Makefile.am, symbols/sgi_vndr/.cvsignore,
+ symbols/sgi_vndr/Makefile.am, symbols/sgi_vndr/jp,
+ symbols/sony_vndr/.cvsignore, symbols/sony_vndr/Makefile.am,
+ symbols/sony_vndr/us, symbols/sun_vndr/.cvsignore,
+ symbols/sun_vndr/Makefile.am, symbols/sun_vndr/se,
+ symbols/sun_vndr/us, symbols/sun_vndr/usb,
+ symbols/xfree68_vndr/.cvsignore,
+ symbols/xfree68_vndr/Makefile.am, symbols/xfree68_vndr/amiga,
+ symbols/xfree68_vndr/ataritt, keycodes/digital_vndr/.cvsignore,
+ keycodes/digital_vndr/Makefile.am, keycodes/digital_vndr/lk,
+ keycodes/digital_vndr/pc, keycodes/sgi_vndr/.cvsignore,
+ keycodes/sgi_vndr/Makefile.am, keycodes/sgi_vndr/indigo,
+ keycodes/sgi_vndr/indy, keycodes/sgi_vndr/iris,
+ keymap/Makefile.am, keymap/digital_vndr/.cvsignore,
+ keymap/digital_vndr/Makefile.am, keymap/digital_vndr/us,
+ keymap/sgi_vndr/.cvsignore, keymap/sgi_vndr/Makefile.am,
+ keymap/sgi_vndr/be, keymap/sgi_vndr/bg, keymap/sgi_vndr/ca,
+ keymap/sgi_vndr/ch, keymap/sgi_vndr/cz, keymap/sgi_vndr/de,
+ keymap/sgi_vndr/dk, keymap/sgi_vndr/dvorak,
+ keymap/sgi_vndr/en_US, keymap/sgi_vndr/es, keymap/sgi_vndr/fi,
+ keymap/sgi_vndr/fr, keymap/sgi_vndr/gb, keymap/sgi_vndr/hu,
+ keymap/sgi_vndr/it, keymap/sgi_vndr/jp, keymap/sgi_vndr/no,
+ keymap/sgi_vndr/pl, keymap/sgi_vndr/pt, keymap/sgi_vndr/ru,
+ keymap/sgi_vndr/se, keymap/sgi_vndr/sk, keymap/sgi_vndr/th,
+ keymap/sgi_vndr/us, keymap/sun_vndr/.cvsignore,
+ keymap/sun_vndr/Makefile.am, keymap/sun_vndr/de,
+ keymap/sun_vndr/es, keymap/sun_vndr/fi, keymap/sun_vndr/fr,
+ keymap/sun_vndr/no, keymap/sun_vndr/pl, keymap/sun_vndr/ru,
+ keymap/sun_vndr/se, keymap/sun_vndr/uk, keymap/sun_vndr/us: Ivan
+ found dots are not good for us
+
+2004-05-03 02:33 svu
+
+ * tests/: testLayouts.pl, testModels.pl, xkbTestFunc.pm: The perl
+ code is a bit structured now
+
+2004-05-03 00:48 svu
+
+ * po/ru.po: Russian translation, up2date
+
+2004-05-03 00:48 svu
+
+ * po/xkbdesc.pot: new strings
+
+2004-05-03 00:38 svu
+
+ * rules/: base, base.xml.in: some fixes in rules, more tests pass
+ ok
+
+2004-05-03 00:05 svu
+
+ * rules/base.xml.in, symbols/ch, symbols/mk, tests/testModels.pl:
+ at least variants pass ok with tests
+
+2004-05-01 02:17 svu
+
+ * symbols/: Makefile.am, hu: Hungarian layout added, thanks to
+ Soós
+
+2004-04-30 05:27 pascal
+
+ * rules/base, symbols/Makefile.am, symbols/jp, symbols/mn: Add
+ Japanese and Mongolian layouts.
+
+2004-04-27 23:17 svu
+
+ * rules/base.xml.in: Canadian layout meta-info fixed
+
+2004-04-27 23:13 svu
+
+ * symbols/ge: fixed syntax typo
+
+2004-04-27 22:19 svu
+
+ * rules/base, rules/base.xml.in, symbols/Makefile.am, symbols/fr,
+ symbols/fr-latin9: French layouts are now merged. Thanks to
+ Guylhem for the positive answer
+
+2004-04-26 00:57 svu
+
+ * tests/: listCI2.xsl, testModels.pl: trying to test layouts as
+ well
+
+2004-04-25 20:26 svu
+
+ * tests/: listCIs.xsl, testModels.pl: starting test scripts
+
+2004-04-25 00:37 svu
+
+ * symbols/us: fixing include
+
+2004-04-25 00:17 svu
+
+ * rules/base.xml.in, symbols/Makefile.am, symbols/us: us_intl is
+ returned as alt-intl
+
+2004-04-24 20:29 svu
+
+ * symbols/Makefile.am: new layouts by Ivan should be included into
+ Makefile.am
+
+2004-04-24 13:32 pascal
+
+ * symbols/ca: Remove 'pc' directory name from includes in Canadian
+ keymap.
+
+2004-04-24 12:35 pascal
+
+ * rules/base, symbols/az, symbols/ca, symbols/group, symbols/vn:
+ Add Azeri, Canadian and Vietnamese keymaps.
+
+2004-04-24 02:23 svu
+
+ * rules/base.xml.in, symbols/hr: Croatian US stuff appended
+
+2004-04-24 01:55 svu
+
+ * rules/base, rules/base.xml.in, symbols/Makefile.am, symbols/pl,
+ symbols/pl2: second polish layout is merged
+
+2004-04-24 01:28 svu
+
+ * keymap/macintosh, keymap/sony, keymap/xfree86, keymap/xfree98,
+ rules/base.lst, rules/base.xml.in, symbols/Makefile.am,
+ symbols/ch, symbols/cz, symbols/cz_qwerty, symbols/ge,
+ symbols/ge_la, symbols/ge_ru, symbols/il, symbols/il_phonetic,
+ symbols/lt, symbols/mt, symbols/mt_us, symbols/ro, symbols/se_FI,
+ symbols/se_NO, symbols/se_SE, symbols/sk, symbols/sk_qwerty,
+ symbols/syr, symbols/syr_phonetic, symbols/th, symbols/th_pat,
+ symbols/th_tis, symbols/us_intl: a lot of layouts cleaned up -
+ but way way more to go
+
+2004-04-23 00:46 svu
+
+ * Makefile.am, configure.in, compiled/.cvsignore,
+ compiled/Makefile.am, compiled/README: The 'compiled' directory
+ is really necessary. Even if it is empty
+
+2004-04-22 00:39 svu
+
+ * po/af.po, po/az.po, po/bg.po, po/cs.po, po/da.po, po/fr.po,
+ po/hu.po, po/nl.po, po/ru.po, po/sk.po, po/sq.po, po/sr.po,
+ po/sv.po, po/tr.po, po/uk.po, po/xkbdesc.pot, po/zh_CN.po,
+ rules/Makefile.am, symbols/Makefile.am, symbols/al, symbols/am,
+ symbols/ar, symbols/be, symbols/ben, symbols/br, symbols/by,
+ symbols/ch, symbols/cz, symbols/cz_qwerty, symbols/de,
+ symbols/dk, symbols/dvorak, symbols/ee, symbols/el,
+ symbols/en_US, symbols/es, symbols/fi, symbols/fo, symbols/fr,
+ symbols/fr-latin9, symbols/gb, symbols/ge_la, symbols/hr,
+ symbols/ie, symbols/il, symbols/is, symbols/it, symbols/la,
+ symbols/latin, symbols/lt, symbols/lv, symbols/mk, symbols/ml,
+ symbols/mt, symbols/mt_us, symbols/nl, symbols/no, symbols/ogham,
+ symbols/pc, symbols/pl, symbols/pl2, symbols/pt, symbols/ro,
+ symbols/ru, symbols/sapmi, symbols/se, symbols/se_FI,
+ symbols/se_NO, symbols/se_SE, symbols/si, symbols/sk,
+ symbols/sk_qwerty, symbols/sr, symbols/syr, symbols/syr_phonetic,
+ symbols/th, symbols/tml, symbols/tr, symbols/ua, symbols/us,
+ symbols/us_intl, symbols/uz, symbols/yu: adding Swiss layouts and
+ removing references to pc/ from files
+
+2004-04-21 00:19 svu
+
+ * symbols/: Makefile.am, bs, srvr_ctrl: Bosninan layout was
+ forgotten
+
+2004-04-19 23:57 svu
+
+ * symbols/: Makefile.am, altwin, compose, ctrl, group, inet,
+ keypad, level3, lock: adding all-important option files
+
+2004-04-16 00:58 svu
+
+ * configure.in, xkbdesc.spec.in, rules/Makefile.am: now, the
+ symlinks allow distributors to use their own names for the rules
+ - though not really recommended, we have to be
+ backward-compatible
+
+2004-04-15 00:33 svu
+
+ * COPYING, Makefile.am, xkbdesc.spec.in, po/af.po, po/az.po,
+ po/bg.po, po/cs.po, po/da.po, po/fr.po, po/hu.po, po/nl.po,
+ po/ru.po, po/sk.po, po/sq.po, po/sr.po, po/sv.po, po/tr.po,
+ po/uk.po, po/xkbdesc.pot, po/zh_CN.po: COPYING added - MIT
+ license (thanks to Keithp). Some minor fixes on infrastructure
+
+2004-04-12 00:13 svu
+
+ * .cvsignore, Makefile.am, autogen.sh, configure.in, rules/base,
+ symbols/Makefile.am: First buildable version
+
+2004-04-11 23:03 svu
+
+ * configure.in, keycodes/Makefile.am, keymap/.cvsignore,
+ keymap/Makefile.am, po/af.po, po/az.po, po/bg.po, po/cs.po,
+ po/da.po, po/fr.po, po/hu.po, po/nl.po, po/ru.po, po/sk.po,
+ po/sq.po, po/sr.po, po/sv.po, po/tr.po, po/uk.po, po/xkbdesc.pot,
+ po/zh_CN.po, rules/.cvsignore, rules/Makefile.am,
+ semantics/.cvsignore, semantics/Makefile.am, symbols/.cvsignore,
+ types/.cvsignore, types/Makefile.am: more automake foo - but
+ still far from building the whole thing
+
+2004-04-10 03:22 svu
+
+ * autogen_gnome.sh, keycodes/.cvsignore, keycodes/Makefile.am: more
+ makefiles.am - but still long way to the first build
+
+2004-04-10 03:08 svu
+
+ * Makefile.am, README, README.config, README.enhancing,
+ configure.in, xfree86.xml.in, xfree86_xkb_xml.spec.in, xkb.dtd,
+ xkbdesc.spec.in, compat/.cvsignore, compat/Makefile.am,
+ compat/README, compat/accessx, compat/basic, compat/complete,
+ compat/default, compat/group_led, compat/iso9995, compat/japan,
+ compat/keypad, compat/leds, compat/misc, compat/mousekeys,
+ compat/norepeat, compat/pc, compat/pc98, compat/xfree86,
+ compat/xtest, geometry/.cvsignore, geometry/Makefile.am,
+ geometry/README, geometry/amiga, geometry/ataritt,
+ geometry/chicony, geometry/dell, geometry/everex,
+ geometry/fujitsu, geometry/hp, geometry/keytronic,
+ geometry/kinesis, geometry/macintosh, geometry/microsoft,
+ geometry/nec, geometry/northgate, geometry/pc, geometry/sony,
+ geometry/sun, geometry/winbook, keycodes/README,
+ keycodes/aliases, keycodes/amiga, keycodes/ataritt,
+ keycodes/fujitsu, keycodes/hp, keycodes/ibm, keycodes/macintosh,
+ keycodes/powerpcps2, keycodes/sony, keycodes/sun,
+ keycodes/xfree86, keycodes/xfree98, keymap/README, keymap/amiga,
+ keymap/ataritt, keymap/macintosh, keymap/sony, keymap/xfree86,
+ keymap/xfree98, po/POTFILES.in, po/af.po, po/az.po, po/bg.po,
+ po/cs.po, po/da.po, po/fr.po, po/hu.po, po/nl.po, po/ru.po,
+ po/sk.po, po/sq.po, po/sr.po, po/sv.po, po/tr.po, po/uk.po,
+ po/zh_CN.po, rules/README, rules/base, rules/base-it.lst,
+ rules/base.lst, rules/base.xml.in, rules/sgi, rules/sgi.lst,
+ rules/sun, rules/sun.lst, rules/xfree98, rules/xfree98.lst,
+ rules/xkb.dtd, rules/xml2lst.pl, semantics/basic,
+ semantics/complete, semantics/default, semantics/xtest,
+ symbols/al, symbols/am, symbols/ar, symbols/be, symbols/ben,
+ symbols/bg, symbols/br, symbols/by, symbols/cz,
+ symbols/cz_qwerty, symbols/de, symbols/dev, symbols/dk,
+ symbols/dvorak, symbols/dz, symbols/ee, symbols/el,
+ symbols/en_US, symbols/es, symbols/fi, symbols/fo, symbols/fr,
+ symbols/fr-latin9, symbols/gb, symbols/ge_la, symbols/ge_ru,
+ symbols/guj, symbols/gur, symbols/hr, symbols/ie, symbols/il,
+ symbols/il_phonetic, symbols/ir, symbols/is, symbols/it,
+ symbols/iu, symbols/kan, symbols/la, symbols/latin, symbols/lo,
+ symbols/lt, symbols/lv, symbols/mk, symbols/ml, symbols/mm,
+ symbols/mt, symbols/mt_us, symbols/nl, symbols/no, symbols/ogham,
+ symbols/ori, symbols/pc, symbols/pl, symbols/pl2, symbols/pt,
+ symbols/ro, symbols/ru, symbols/sapmi, symbols/se, symbols/se_FI,
+ symbols/se_NO, symbols/se_SE, symbols/si, symbols/sk,
+ symbols/sk_qwerty, symbols/sr, symbols/syr, symbols/syr_phonetic,
+ symbols/tel, symbols/th, symbols/th_pat, symbols/th_tis,
+ symbols/tj, symbols/tml, symbols/tr, symbols/ua, symbols/us,
+ symbols/us_intl, symbols/uz, symbols/yu, types/README,
+ types/basic, types/cancel, types/caps, types/complete,
+ types/default, types/extra, types/iso9995, types/mousekeys,
+ types/numpad, types/pc: first feed-in of the layouts. The
+ revolution is coming
+
+2004-04-04 02:40 svu
+
+ * configure.in, po/az.po: Azerbaijani translation, thanks to Metin
+ Amiroff
+
+2004-04-04 01:14 svu
+
+ * po/ru.po: Russian translation of the Syriac phonetic
+
+2004-04-04 01:12 svu
+
+ * xfree86.xml.in: Syriac phonetic was not there
+
+2004-03-19 21:37 svu
+
+ * configure.in: some more translations
+
+2004-03-19 21:37 svu
+
+ * po/hu.po: Hungarian one
+
+2004-03-19 21:02 svu
+
+ * po/: af.po, bg.po, cs.po, da.po, fr.po, nl.po, ru.po, sk.po,
+ sq.po, sr.po, sv.po, tr.po, uk.po, zh_CN.po: three new
+ translations
+
+2004-01-20 10:51 svu
+
+ * po/ru.po: corrected tibetian language translation
+
+2004-01-19 14:41 svu
+
+ * po/ru.po: updated Russian translation
+
+2004-01-19 14:41 svu
+
+ * xfree86.xml.in: new items from Ivan
+
+2004-01-19 14:39 svu
+
+ * xslt/xfree86.xsl: bugfix
+
+2004-01-09 14:44 svu
+
+ * po/ru.po: up2date
+
+2004-01-09 14:43 svu
+
+ * xfree86.xml.in: patch from Ivan - new items
+
+2004-01-07 09:32 svu
+
+ * configure.in, po/fr.po: French translation, thanks to Michel
+ Robitaille
+
+2004-01-06 16:20 svu
+
+ * xfree86.xml.in, po/ru.po: updates from Ivan
+
+2004-01-03 14:43 svu
+
+ * po/nl.po: new version, thanks to Elros
+
+2003-12-18 22:43 svu
+
+ * .cvsignore, po/.cvsignore: little cleanup on messages
+
+2003-12-18 22:42 svu
+
+ * Makefile.am, configure.in: little things for the latest intltool
+
+2003-12-18 22:39 svu
+
+ * po/sk.po: Slovak translation, thanks to Zdenko Podobný
+
+2003-12-18 22:38 svu
+
+ * po/da.po: Danish translation, thanks to Ole Laursen
+
+2003-12-18 22:34 svu
+
+ * xfree86.xml.in: One more layout, one more variant, updates from
+ Ivan
+
+2003-12-05 11:37 svu
+
+ * xslt/xfree86.xsl: helper xslt - reduces the resulting file
+
+2003-12-05 10:39 svu
+
+ * configure.in, po/tr.po: Turkish translation added, thanks to
+ Nilgün Belma Bugüner
+
+2003-11-30 02:11 svu
+
+ * configure.in, po/sr.po: Serbian translation added, thanks to
+ Danilo Segan
+
+2003-11-29 04:06 svu
+
+ * configure.in, po/zh_CN.po: Chinese simplified translation, thanks
+ to Funda Wang
+
+2003-11-27 22:57 svu
+
+ * configure.in, po/nl.po: NL translation. Thanks to Elros Cyriatan
+
+2003-11-27 21:19 svu
+
+ * configure.in: added cs translation
+
+2003-11-27 21:15 svu
+
+ * po/cs.po: First non-cyrillic translation. Thanks to Michal
+ Bukovjan
+
+2003-11-25 23:52 svu
+
+ * Makefile.am, NEWS, autogen_gnome.sh, configure.in,
+ xfree86.xml.in, po/.cvsignore, po/Makevars, po/POTFILES.in,
+ po/bg.po, po/ru.po, po/uk.po: Now the project should be buildable
+ and translatable - but please no translations till the English
+ version is approved
+
+2003-11-25 16:35 svu
+
+ * .cvsignore, AUTHORS, Makefile.am, autogen.sh, configure.in,
+ xfree86.xml.in, xfree86_xkb_xml.spec.in, xkb.dtd: first batch of
+ files - but no translation yet
+
+2003-11-24 23:32 svu
+
+ * README: first file in
+
diff --git a/xorg-server/xkeyboard-config/README b/xorg-server/xkeyboard-config/README
index faaec09aa..d91eda6e6 100644
--- a/xorg-server/xkeyboard-config/README
+++ b/xorg-server/xkeyboard-config/README
@@ -1,28 +1,28 @@
-X Keyboard Extension
---------------------
-
-The X Keyboard Extension essentially replaces the core protocol definition of
-keyboard. The extension makes possible to clearly and explicitly specify most
-aspects of keyboard behaviour on per-key basis and to more closely track the
-logical and physical state of the keyboard. It also includes a number of
-keyboard controls designed to make keyboards more accessible to people with
-physical impairments.
-
-There are five types of components in the server database corresponing to five
-xkb symbolic names: symbols, geometry, keycodes, compat and types which
-determine the keyboard behaviour. These five components can combined together
-into a resulting keyboard mapping using the 'rules' component.
-
-The complete specification can be found on
-http://xfree86.org/current/XKBproto.pdf
-
-For XKB configuration information see 'docs/README.config' file.
-
-For information how to further enhance XKB configuration see 'docs/README.enhancing'
-file.
-
-For information how to replace existing XKB configuration database with
-XKeyboardConfig see 'docs/HOWTO.transition' file.
-
-Contribution guidelines are described at
-http://www.freedesktop.org/wiki/Software/XKeyboardConfig/Rules
+X Keyboard Extension
+--------------------
+
+The X Keyboard Extension essentially replaces the core protocol definition of
+keyboard. The extension makes possible to clearly and explicitly specify most
+aspects of keyboard behaviour on per-key basis and to more closely track the
+logical and physical state of the keyboard. It also includes a number of
+keyboard controls designed to make keyboards more accessible to people with
+physical impairments.
+
+There are five types of components in the server database corresponing to five
+xkb symbolic names: symbols, geometry, keycodes, compat and types which
+determine the keyboard behaviour. These five components can combined together
+into a resulting keyboard mapping using the 'rules' component.
+
+The complete specification can be found on
+http://xfree86.org/current/XKBproto.pdf
+
+For XKB configuration information see 'docs/README.config' file.
+
+For information how to further enhance XKB configuration see 'docs/README.enhancing'
+file.
+
+For information how to replace existing XKB configuration database with
+XKeyboardConfig see 'docs/HOWTO.transition' file.
+
+Contribution guidelines are described at
+http://www.freedesktop.org/wiki/Software/XKeyboardConfig/Rules
diff --git a/xorg-server/xkeyboard-config/TODO b/xorg-server/xkeyboard-config/TODO
index f0ffaa754..8a10faa02 100644
--- a/xorg-server/xkeyboard-config/TODO
+++ b/xorg-server/xkeyboard-config/TODO
@@ -1,6 +1,6 @@
-+ Ensure all national layouts are 'normalized' (no multiple layouts for same country/language - only variants)
-+ Write tests checking that every model/layout(variant)/option in base.xml is working
-+ Add the vendor info to the keyboard geometry description
-- Check consistence (correctness, usability) of the descriptions in the registry. Note: ask help from GNOME Usability Team.
-- Write tests which would ensure that base.xml covers everything
-- Write compatibility rules for old models/layouts/variants (potentially eternal job)
++ Ensure all national layouts are 'normalized' (no multiple layouts for same country/language - only variants)
++ Write tests checking that every model/layout(variant)/option in base.xml is working
++ Add the vendor info to the keyboard geometry description
+- Check consistence (correctness, usability) of the descriptions in the registry. Note: ask help from GNOME Usability Team.
+- Write tests which would ensure that base.xml covers everything
+- Write compatibility rules for old models/layouts/variants (potentially eternal job)
diff --git a/xorg-server/xkeyboard-config/compat/README b/xorg-server/xkeyboard-config/compat/README
index ea8750fac..00d591e7b 100644
--- a/xorg-server/xkeyboard-config/compat/README
+++ b/xorg-server/xkeyboard-config/compat/README
@@ -1,33 +1,33 @@
-The core protocol interpretation of keyboard modifiers does not include direct
-support for multiple keyboard groups, so XKB reports the effective keyboard
-group to XKB-aware clients using some of reserved bits in the state field of
-some core protocol events. This modified state field would not be interpreted
-correctly by XKB-unaware clients, so XKB provides a group compatibility mapping
-which remaps the keyboard group into a core modifier mask that has similar
-effects, when possible.
-
-XKB maintains three compatibility state components that are used to make
-XKB-unaware clients(*) work as well as possible:
-- The compatibility state which corresponds to the effective modifier and
- effective group state.
-- The compatibility lookup state which is the core-protocol equivalent of the
- lookup state.
-- The compatibility grab state which is the nearest core-protocol equivalent
- of the grab state.
-
-Compatibility state are essentially the corresponding XKB states, but with
-keyboard group possibly encoded as one or more modifiers.
-
-Modifiers that correspond to each keyboard group are described in this
-group compatibility map.
-
-
-----
-(*) The implementation of XKB invisibly extends the X library to use the
-keyboard extension if it is present. That means, clients that use library or
-toolkit routines to interpret keyboard events automatically use all of XKB
-features; clients that directly interpret the state field of core protocol
-events or the keymap direcly may be affected by some of the XKB differences.
-Thus most clients can take all advantages without modification but it also
-means that XKB state can be reported to clients that have not explicitly
-requested the keyboard extension.
+The core protocol interpretation of keyboard modifiers does not include direct
+support for multiple keyboard groups, so XKB reports the effective keyboard
+group to XKB-aware clients using some of reserved bits in the state field of
+some core protocol events. This modified state field would not be interpreted
+correctly by XKB-unaware clients, so XKB provides a group compatibility mapping
+which remaps the keyboard group into a core modifier mask that has similar
+effects, when possible.
+
+XKB maintains three compatibility state components that are used to make
+XKB-unaware clients(*) work as well as possible:
+- The compatibility state which corresponds to the effective modifier and
+ effective group state.
+- The compatibility lookup state which is the core-protocol equivalent of the
+ lookup state.
+- The compatibility grab state which is the nearest core-protocol equivalent
+ of the grab state.
+
+Compatibility state are essentially the corresponding XKB states, but with
+keyboard group possibly encoded as one or more modifiers.
+
+Modifiers that correspond to each keyboard group are described in this
+group compatibility map.
+
+
+----
+(*) The implementation of XKB invisibly extends the X library to use the
+keyboard extension if it is present. That means, clients that use library or
+toolkit routines to interpret keyboard events automatically use all of XKB
+features; clients that directly interpret the state field of core protocol
+events or the keymap direcly may be affected by some of the XKB differences.
+Thus most clients can take all advantages without modification but it also
+means that XKB state can be reported to clients that have not explicitly
+requested the keyboard extension.
diff --git a/xorg-server/xkeyboard-config/compat/caps b/xorg-server/xkeyboard-config/compat/caps
index 03c47151e..d787ab63d 100644
--- a/xorg-server/xkeyboard-config/compat/caps
+++ b/xorg-server/xkeyboard-config/compat/caps
@@ -1,12 +1,12 @@
-partial xkb_compatibility "caps_lock" {
- // Keysym Caps_Lock locks Lock modifier.
- // With this, the keysym Caps_Lock can be used without binding the whole
- // key to a real modifier.
- // This is essential when you don't want to use caps lock on the first
- // level.
- // This should not have any compatibility issues when used together with
- // other layouts which don't utilize this capability.
- interpret Caps_Lock {
- action = LockMods(modifiers = Lock);
- };
-};
+partial xkb_compatibility "caps_lock" {
+ // Keysym Caps_Lock locks Lock modifier.
+ // With this, the keysym Caps_Lock can be used without binding the whole
+ // key to a real modifier.
+ // This is essential when you don't want to use caps lock on the first
+ // level.
+ // This should not have any compatibility issues when used together with
+ // other layouts which don't utilize this capability.
+ interpret Caps_Lock {
+ action = LockMods(modifiers = Lock);
+ };
+};
diff --git a/xorg-server/xkeyboard-config/compat/ledcaps b/xorg-server/xkeyboard-config/compat/ledcaps
index 8e3ad4796..fc3084eec 100644
--- a/xorg-server/xkeyboard-config/compat/ledcaps
+++ b/xorg-server/xkeyboard-config/compat/ledcaps
@@ -1,23 +1,23 @@
-// Use Caps Lock LED to show either Caps Lock, Group, or Shift Lock state
-
-default partial xkb_compatibility "caps_lock" {
- indicator "Caps Lock" {
- !allowExplicit;
- whichModState= Locked;
- modifiers= Lock;
- };
-};
-
-partial xkb_compatibility "group_lock" {
- indicator "Caps Lock" {
- modifiers= None;
- groups=All-group1;
- };
-};
-
-partial xkb_compatibility "shift_lock" {
- indicator "Caps Lock" {
- whichModState= Locked;
- modifiers= Shift;
- };
-};
+// Use Caps Lock LED to show either Caps Lock, Group, or Shift Lock state
+
+default partial xkb_compatibility "caps_lock" {
+ indicator "Caps Lock" {
+ !allowExplicit;
+ whichModState= Locked;
+ modifiers= Lock;
+ };
+};
+
+partial xkb_compatibility "group_lock" {
+ indicator "Caps Lock" {
+ modifiers= None;
+ groups=All-group1;
+ };
+};
+
+partial xkb_compatibility "shift_lock" {
+ indicator "Caps Lock" {
+ whichModState= Locked;
+ modifiers= Shift;
+ };
+};
diff --git a/xorg-server/xkeyboard-config/compat/lednum b/xorg-server/xkeyboard-config/compat/lednum
index 57fb2646e..24a60a595 100644
--- a/xorg-server/xkeyboard-config/compat/lednum
+++ b/xorg-server/xkeyboard-config/compat/lednum
@@ -1,23 +1,23 @@
-// Use Num Lock LED to show either Num Lock, Group, or Shift Lock state
-
-default partial xkb_compatibility "num_lock" {
- indicator "Num Lock" {
- !allowExplicit;
- whichModState= Locked;
- modifiers= NumLock;
- };
-};
-
-partial xkb_compatibility "group_lock" {
- indicator "Num Lock" {
- modifiers= None;
- groups=All-group1;
- };
-};
-
-partial xkb_compatibility "shift_lock" {
- indicator "Num Lock" {
- whichModState= Locked;
- modifiers= Shift;
- };
-};
+// Use Num Lock LED to show either Num Lock, Group, or Shift Lock state
+
+default partial xkb_compatibility "num_lock" {
+ indicator "Num Lock" {
+ !allowExplicit;
+ whichModState= Locked;
+ modifiers= NumLock;
+ };
+};
+
+partial xkb_compatibility "group_lock" {
+ indicator "Num Lock" {
+ modifiers= None;
+ groups=All-group1;
+ };
+};
+
+partial xkb_compatibility "shift_lock" {
+ indicator "Num Lock" {
+ whichModState= Locked;
+ modifiers= Shift;
+ };
+};
diff --git a/xorg-server/xkeyboard-config/compat/ledscroll b/xorg-server/xkeyboard-config/compat/ledscroll
index d51fcfc6f..ca5a82c4c 100644
--- a/xorg-server/xkeyboard-config/compat/ledscroll
+++ b/xorg-server/xkeyboard-config/compat/ledscroll
@@ -1,23 +1,23 @@
-// Use Scroll Lock LED to show either Scroll Lock, Group, or Shift Lock state
-
-default partial xkb_compatibility "scroll_lock" {
- indicator "Scroll Lock" {
- allowExplicit;
- whichModState= Locked;
- modifiers= ScrollLock;
- };
-};
-
-partial xkb_compatibility "group_lock" {
- indicator "Scroll Lock" {
- modifiers= None;
- groups=All-group1;
- };
-};
-
-partial xkb_compatibility "shift_lock" {
- indicator "Scroll Lock" {
- whichModState= Locked;
- modifiers= Shift;
- };
-};
+// Use Scroll Lock LED to show either Scroll Lock, Group, or Shift Lock state
+
+default partial xkb_compatibility "scroll_lock" {
+ indicator "Scroll Lock" {
+ allowExplicit;
+ whichModState= Locked;
+ modifiers= ScrollLock;
+ };
+};
+
+partial xkb_compatibility "group_lock" {
+ indicator "Scroll Lock" {
+ modifiers= None;
+ groups=All-group1;
+ };
+};
+
+partial xkb_compatibility "shift_lock" {
+ indicator "Scroll Lock" {
+ whichModState= Locked;
+ modifiers= Shift;
+ };
+};
diff --git a/xorg-server/xkeyboard-config/docs/HOWTO.testing b/xorg-server/xkeyboard-config/docs/HOWTO.testing
index 5ab9dd477..01aa0500c 100644
--- a/xorg-server/xkeyboard-config/docs/HOWTO.testing
+++ b/xorg-server/xkeyboard-config/docs/HOWTO.testing
@@ -1,22 +1,22 @@
-A mini-HOWTO test the XKB config without modifying the system configuration.
-(Only tested with XFree86 4.3+.)
-
-First see what your configuration is. Note the model and layout.
- $ setxkbmap -print
-
-Then unpack the sources locally ...
- $ gzip -dc xkeyboard-config*.tar.gz | tar -tf -
-... and change to the delivered directory
- $ cd xkeyboard-config-<version>
-
-Then try to load the current keyboard using the local rules
- $ setxkbmap -v 10 -I$PWD -rules base
-
-Now try to set different keyboards using the -model and -layout.
- $ setxkbmap -v 10 -I$PWD -rules base -model pc102 -layout intl
-Look in the file rules/base for other example models and layouts
-
-If there was a problem, you can reset the keyboard like so:
- $ setxkbmap -rules xfree86 -model <noted model> -layout <noted layout>
-
-If that doesn't work, you may have to log out and log back in.
+A mini-HOWTO test the XKB config without modifying the system configuration.
+(Only tested with XFree86 4.3+.)
+
+First see what your configuration is. Note the model and layout.
+ $ setxkbmap -print
+
+Then unpack the sources locally ...
+ $ gzip -dc xkeyboard-config*.tar.gz | tar -tf -
+... and change to the delivered directory
+ $ cd xkeyboard-config-<version>
+
+Then try to load the current keyboard using the local rules
+ $ setxkbmap -v 10 -I$PWD -rules base
+
+Now try to set different keyboards using the -model and -layout.
+ $ setxkbmap -v 10 -I$PWD -rules base -model pc102 -layout intl
+Look in the file rules/base for other example models and layouts
+
+If there was a problem, you can reset the keyboard like so:
+ $ setxkbmap -rules xfree86 -model <noted model> -layout <noted layout>
+
+If that doesn't work, you may have to log out and log back in.
diff --git a/xorg-server/xkeyboard-config/docs/HOWTO.transition b/xorg-server/xkeyboard-config/docs/HOWTO.transition
index 1b7cce216..24add85f5 100644
--- a/xorg-server/xkeyboard-config/docs/HOWTO.transition
+++ b/xorg-server/xkeyboard-config/docs/HOWTO.transition
@@ -1,19 +1,19 @@
-PURPOSE
-
-This document describes the procedure for replacing the standard XKB configuration repository shipped with an X Window System implementation. The procedure should work for XFree86 4.3 and higher and X11R7 implementation from X.Org. Any other X server supporting so called "multiple layouts" can be powered with XKeyboardConfig in a similar way (at the moment NO known commercial X Window System implementations support "multiple layouts"). X servers which do not support "multiple layouts" can be used with XKeyboardConfig as well - but users should be aware that only one group will be accessible with each possible XKB configuration.
-
-PROCEDURE
-
-1. Find your current XKB configuration data directory. In most cases it is /usr/X11R6/lib/X11/xkb. This directory usually contain subdirectores: compat, compiled, geometry, keycodes, keymap, rules, semantics, symbols etc.
-
-2. Backup your current XKB configuration data directory (for example, rename it to xkb.orig) - so you would be able to restore your original configuration in case of troubles.
-
-3. Untar XKeyboardConfiguration tarball (tar -xzvf xkeyboard-config-0.2.tar.gz). Change to the root project directory. Run the configure script with appropriate options. There are several useful options:
-
- --with-xkb-rules-symlink=NAME - this option creates symlinks for the rules and registry files. The default file names are base and base.xml correspondingly. Using this option allows to create symlinks for configuration files compatibility (for example, --with-xkb-rules-symlink=xfree86 creates symlinks xfree86 and xfree86.xml - so users would be able to use rules set "xfree86").
-
- --enable-xkbcomp-symlink - creates symlink from original xkbcomp utility (usually found in /usr/X111R6/bin) to XKB configuration directory (usually it is required by XKB server). By default, this option is enabled - but user can disable it.
-
-4. Run "make" and (as root) "make install". At that point, new /usr/X11R6/lib/X11/xkb should be created.
-
-5. Adjust the configuration files (XF86Config, xorg.conf etc.). If you don't use the symlinks, you should use the rules set "base" (as the "XkbRules" value). If you added --with-xkb-rules-symlink option, you can use either "base" or the name of the rules symlink you created (for example, "xfree86").
+PURPOSE
+
+This document describes the procedure for replacing the standard XKB configuration repository shipped with an X Window System implementation. The procedure should work for XFree86 4.3 and higher and X11R7 implementation from X.Org. Any other X server supporting so called "multiple layouts" can be powered with XKeyboardConfig in a similar way (at the moment NO known commercial X Window System implementations support "multiple layouts"). X servers which do not support "multiple layouts" can be used with XKeyboardConfig as well - but users should be aware that only one group will be accessible with each possible XKB configuration.
+
+PROCEDURE
+
+1. Find your current XKB configuration data directory. In most cases it is /usr/X11R6/lib/X11/xkb. This directory usually contain subdirectores: compat, compiled, geometry, keycodes, keymap, rules, semantics, symbols etc.
+
+2. Backup your current XKB configuration data directory (for example, rename it to xkb.orig) - so you would be able to restore your original configuration in case of troubles.
+
+3. Untar XKeyboardConfiguration tarball (tar -xzvf xkeyboard-config-0.2.tar.gz). Change to the root project directory. Run the configure script with appropriate options. There are several useful options:
+
+ --with-xkb-rules-symlink=NAME - this option creates symlinks for the rules and registry files. The default file names are base and base.xml correspondingly. Using this option allows to create symlinks for configuration files compatibility (for example, --with-xkb-rules-symlink=xfree86 creates symlinks xfree86 and xfree86.xml - so users would be able to use rules set "xfree86").
+
+ --enable-xkbcomp-symlink - creates symlink from original xkbcomp utility (usually found in /usr/X111R6/bin) to XKB configuration directory (usually it is required by XKB server). By default, this option is enabled - but user can disable it.
+
+4. Run "make" and (as root) "make install". At that point, new /usr/X11R6/lib/X11/xkb should be created.
+
+5. Adjust the configuration files (XF86Config, xorg.conf etc.). If you don't use the symlinks, you should use the rules set "base" (as the "XkbRules" value). If you added --with-xkb-rules-symlink option, you can use either "base" or the name of the rules symlink you created (for example, "xfree86").
diff --git a/xorg-server/xkeyboard-config/docs/Makefile.am b/xorg-server/xkeyboard-config/docs/Makefile.am
index 835e673e0..5ae0e80a1 100644
--- a/xorg-server/xkeyboard-config/docs/Makefile.am
+++ b/xorg-server/xkeyboard-config/docs/Makefile.am
@@ -1 +1 @@
-EXTRA_DIST= README.config README.enhancing README.symbols HOWTO.transition HOWTO.testing
+EXTRA_DIST= README.config README.enhancing README.symbols HOWTO.transition HOWTO.testing
diff --git a/xorg-server/xkeyboard-config/docs/README.config b/xorg-server/xkeyboard-config/docs/README.config
index 215449a01..4a068867d 100644
--- a/xorg-server/xkeyboard-config/docs/README.config
+++ b/xorg-server/xkeyboard-config/docs/README.config
@@ -1,195 +1,195 @@
- The XKB Configuration Guide
-
- Kamil Toman, Ivan U. Pascal
-
- 25 November 2002
-
- Abstract
-
- This document describes how to configure XFree86 XKB from a user's
- point a few. It converts basic configuration syntax and gives also
- a few examples.
-
-1. Overview
-
-The XKB configuration is decomposed into a number of components. Selecting
-proper parts and combining them back you can achieve most of configurations
-you might need. Unless you have a completely atypical keyboard you really
-don't need to touch any of xkb configuration files.
-
-2. Selecting XKB Configuration
-
-The easiest and the most natural way how to specify a keyboard mapping is to
-use rules component. As its name suggests it describes a number of general
-rules how to combine all bits and pieces into a valid and useful keyboard
-mapping. All you need to do is to select a suitable rules file and then to
-feed it with a few parameters that will adjust the keyboard behaviour to ful-
-fill your needs.
-
-The parameters are:
-
- o XkbRules - files of rules to be used for keyboard mapping composition
-
- o XkbModel - name of model of your keyboard type
-
- o XkbLayout - layout(s) you intend to use
-
- o XkbVariant - variant(s) of layout you intend to use
-
- o XkbOptions - extra xkb configuration options
-
-The proper rules file depends on your vendor. In reality, the commonest file
-of rules is xfree86. For each rules file there is a description file named
-<vendor-rules>.lst, for instance xfree86.lst which is located in xkb configu-
-ration subdirectory rules (for example /etc/X11/xkb/rules).
-
-2.1 Basic Configuration
-
-Let's say you want to configure a PC style America keyboard with 104 keys as
-described in xfree86.lst. It can be done by simply writing several lines from
-below to you XFree86 configuration file (often found as /etc/X11/XF86Config-4
-or /etc/X11/XF86Config):
-
- Section "InputDevice"
- Identifier "Keyboard1"
- Driver "Keyboard"
-
- Option "XkbModel" "pc104"
- Option "XkbLayout" "us"
- Option "XKbOptions" ""
- EndSection
-
-The values of parameters XkbModel and XkbLayout are really not surprising.
-The parameters XkbOptions has been explicitly set to empty set of parameters.
-The parameter XkbVariant has been left out. That means the default variant
-named basic is loaded.
-
-Of course, this can be also done at runtime using utility setxkbmap. Shell
-command loading the same keyboard mapping would look like:
-
- setxkbmap -rules xfree86 -model pc104 -layout us -option ""
-
-The configuration and the shell command would be very analogical for most
-other layouts (internationalized mappings).
-
-2.2 Advanced Configuration
-
-Since XFree86 4.3.x you can use multi-layouts xkb configuration. What does
-it mean? Basically it allows to load up to four different keyboard layouts at
-a time. Each such layout would reside in its own group. The groups (unlike
-complete keyboard remapping) can be switched very fast from one to another by
-a combination of keys.
-
-Let's say you want to configure your new Logitech cordless desktop keyboard,
-you intend to use three different layouts at the same time - us, czech and
-german (in this order), and that you are used to Alt-Shift combination for
-switching among them.
-
-Then the configuration snippet could look like this:
-
- Section "InputDevice"
- Identifier "Keyboard1"
- Driver "Keyboard"
-
- Option "XkbModel" "logicordless"
- Option "XkbLayout" "us,cz,de"
- Option "XKbOptions" "grp:alt_shift_toggle"
- EndSection
-
-Of course, this can be also done at runtime using utility setxkbmap. Shell
-command loading the same keyboard mapping would look like:
-
- setxkbmap -rules xfree86 -model logicordless -layout "us,cz,de" \
- -option "grp:alt_shift_toggle"
-
-2.3 Even More Advanced Configuration
-
-Okay, let's say you are more demanding. You do like the example above but you
-want it to change a bit. Let's imagine you want the czech keyboard mapping to
-use another variant but basic. The configuration snippet then changes into:
-
- Section "InputDevice"
- Identifier "Keyboard1"
- Driver "Keyboard"
-
- Option "XkbModel" "logicordless"
- Option "XkbLayout" "us,cz,de"
- Option "XkbVariant" ",bksl,"
- Option "XKbOptions" "grp:alt_shift_toggle"
- EndSection
-
-That's seems tricky but it is not. The logic for settings of variants is the
-same as for layouts, that means the first and the third variant settings are
-left out (set to basic), the second is set to bksl (a special variant with an
-enhanced definition of the backslash key).
-
-Analogically, the loading runtime will change to:
-
- setxkmap -rules xfree86 -model logicordless -layout "us,cz,de" \
- -variant ",bksl," -option "grp:alt_shift_toggle"
-
-2.4 Basic Global Options
-
-See rules/*.lst files.
-
-3. Direct XKB Configuration
-
-Generally, you can directly prescribe what configuration of each of basic xkb
-components should be used to form the resulting keyboard mapping. This
-method is rather "brute force". You precisely need to know the structure and
-the meaning of all of used configuration components.
-
-This method also exposes all xkb configuration details directly into XFree86
-configuration file which is a not very fortunate fact. In rare occasions it
-may be needed, though. So how does it work?
-
-3.1 Basic Components
-
-There are five basic components used to form a keyboard mapping:
-
- o key codes - a translation of the scan codes produced by the keyboard
- into a suitable symbolic form
-
- o types - a specification of what various combinations of modifiers pro-
- duce
-
- o key symbols - a translation of symbolic key codes into actual symbols
-
- o geometry - a description of physical keyboard geometry
-
- o compatibility maps - a specification of what action should each key pro-
- duce in order to preserve compatibility with XKB-unware clients
-
-3.2 Example Configuration
-
-Look at the following example:
-
- Section "InputDevice"
- Identifier "Keyboard0"
- Driver "Keyboard"
-
- Option "XkbKeycodes" "xfree86"
- Option "XkbTypes" "default"
- Option "XkbSymbols" "en_US(pc104)+de+swapcaps"
- Option "XkbGeometry" "pc(pc104)"
- Option "XkbCompat" "basic+pc+iso9995"
- EndSection
-
-This configuration sets the standard XFree86 default interpretation of key-
-board keycodes, sets the default modificator types. The symbol table is com-
-posed of extended US keyboard layout in its variant for pc keyboards with 104
-keys plus all keys for german layout are redefined respectively. Also the
-logical meaning of Caps-lock and Control keys is swapped. The standard key-
-board geometry (physical look) is set to pc style keyboard with 104 keys. The
-compatibility map is set to allow basic shifting, to allow Alt keys to be
-interpreted and also to allow iso9995 group shifting.
-
-4. Keymap XKB Configuration
-
-It is the formerly used way to configure xkb. The user included a special
-keymap file which specified the direct xkb configuration. This method has
-been obsoleted by previously described rules files which are far more flexi-
-ble and allow simpler and more intuitive syntax. It is preserved merely for
-compatibility reasons. Avoid using it if it is possible.
-
- Generated from XFree86: xc/programs/Xserver/hw/xfree86/doc/sgml/XKB-Config.sgml,v 1.4 dawes Exp $
+ The XKB Configuration Guide
+
+ Kamil Toman, Ivan U. Pascal
+
+ 25 November 2002
+
+ Abstract
+
+ This document describes how to configure XFree86 XKB from a user's
+ point a few. It converts basic configuration syntax and gives also
+ a few examples.
+
+1. Overview
+
+The XKB configuration is decomposed into a number of components. Selecting
+proper parts and combining them back you can achieve most of configurations
+you might need. Unless you have a completely atypical keyboard you really
+don't need to touch any of xkb configuration files.
+
+2. Selecting XKB Configuration
+
+The easiest and the most natural way how to specify a keyboard mapping is to
+use rules component. As its name suggests it describes a number of general
+rules how to combine all bits and pieces into a valid and useful keyboard
+mapping. All you need to do is to select a suitable rules file and then to
+feed it with a few parameters that will adjust the keyboard behaviour to ful-
+fill your needs.
+
+The parameters are:
+
+ o XkbRules - files of rules to be used for keyboard mapping composition
+
+ o XkbModel - name of model of your keyboard type
+
+ o XkbLayout - layout(s) you intend to use
+
+ o XkbVariant - variant(s) of layout you intend to use
+
+ o XkbOptions - extra xkb configuration options
+
+The proper rules file depends on your vendor. In reality, the commonest file
+of rules is xfree86. For each rules file there is a description file named
+<vendor-rules>.lst, for instance xfree86.lst which is located in xkb configu-
+ration subdirectory rules (for example /etc/X11/xkb/rules).
+
+2.1 Basic Configuration
+
+Let's say you want to configure a PC style America keyboard with 104 keys as
+described in xfree86.lst. It can be done by simply writing several lines from
+below to you XFree86 configuration file (often found as /etc/X11/XF86Config-4
+or /etc/X11/XF86Config):
+
+ Section "InputDevice"
+ Identifier "Keyboard1"
+ Driver "Keyboard"
+
+ Option "XkbModel" "pc104"
+ Option "XkbLayout" "us"
+ Option "XKbOptions" ""
+ EndSection
+
+The values of parameters XkbModel and XkbLayout are really not surprising.
+The parameters XkbOptions has been explicitly set to empty set of parameters.
+The parameter XkbVariant has been left out. That means the default variant
+named basic is loaded.
+
+Of course, this can be also done at runtime using utility setxkbmap. Shell
+command loading the same keyboard mapping would look like:
+
+ setxkbmap -rules xfree86 -model pc104 -layout us -option ""
+
+The configuration and the shell command would be very analogical for most
+other layouts (internationalized mappings).
+
+2.2 Advanced Configuration
+
+Since XFree86 4.3.x you can use multi-layouts xkb configuration. What does
+it mean? Basically it allows to load up to four different keyboard layouts at
+a time. Each such layout would reside in its own group. The groups (unlike
+complete keyboard remapping) can be switched very fast from one to another by
+a combination of keys.
+
+Let's say you want to configure your new Logitech cordless desktop keyboard,
+you intend to use three different layouts at the same time - us, czech and
+german (in this order), and that you are used to Alt-Shift combination for
+switching among them.
+
+Then the configuration snippet could look like this:
+
+ Section "InputDevice"
+ Identifier "Keyboard1"
+ Driver "Keyboard"
+
+ Option "XkbModel" "logicordless"
+ Option "XkbLayout" "us,cz,de"
+ Option "XKbOptions" "grp:alt_shift_toggle"
+ EndSection
+
+Of course, this can be also done at runtime using utility setxkbmap. Shell
+command loading the same keyboard mapping would look like:
+
+ setxkbmap -rules xfree86 -model logicordless -layout "us,cz,de" \
+ -option "grp:alt_shift_toggle"
+
+2.3 Even More Advanced Configuration
+
+Okay, let's say you are more demanding. You do like the example above but you
+want it to change a bit. Let's imagine you want the czech keyboard mapping to
+use another variant but basic. The configuration snippet then changes into:
+
+ Section "InputDevice"
+ Identifier "Keyboard1"
+ Driver "Keyboard"
+
+ Option "XkbModel" "logicordless"
+ Option "XkbLayout" "us,cz,de"
+ Option "XkbVariant" ",bksl,"
+ Option "XKbOptions" "grp:alt_shift_toggle"
+ EndSection
+
+That's seems tricky but it is not. The logic for settings of variants is the
+same as for layouts, that means the first and the third variant settings are
+left out (set to basic), the second is set to bksl (a special variant with an
+enhanced definition of the backslash key).
+
+Analogically, the loading runtime will change to:
+
+ setxkmap -rules xfree86 -model logicordless -layout "us,cz,de" \
+ -variant ",bksl," -option "grp:alt_shift_toggle"
+
+2.4 Basic Global Options
+
+See rules/*.lst files.
+
+3. Direct XKB Configuration
+
+Generally, you can directly prescribe what configuration of each of basic xkb
+components should be used to form the resulting keyboard mapping. This
+method is rather "brute force". You precisely need to know the structure and
+the meaning of all of used configuration components.
+
+This method also exposes all xkb configuration details directly into XFree86
+configuration file which is a not very fortunate fact. In rare occasions it
+may be needed, though. So how does it work?
+
+3.1 Basic Components
+
+There are five basic components used to form a keyboard mapping:
+
+ o key codes - a translation of the scan codes produced by the keyboard
+ into a suitable symbolic form
+
+ o types - a specification of what various combinations of modifiers pro-
+ duce
+
+ o key symbols - a translation of symbolic key codes into actual symbols
+
+ o geometry - a description of physical keyboard geometry
+
+ o compatibility maps - a specification of what action should each key pro-
+ duce in order to preserve compatibility with XKB-unware clients
+
+3.2 Example Configuration
+
+Look at the following example:
+
+ Section "InputDevice"
+ Identifier "Keyboard0"
+ Driver "Keyboard"
+
+ Option "XkbKeycodes" "xfree86"
+ Option "XkbTypes" "default"
+ Option "XkbSymbols" "en_US(pc104)+de+swapcaps"
+ Option "XkbGeometry" "pc(pc104)"
+ Option "XkbCompat" "basic+pc+iso9995"
+ EndSection
+
+This configuration sets the standard XFree86 default interpretation of key-
+board keycodes, sets the default modificator types. The symbol table is com-
+posed of extended US keyboard layout in its variant for pc keyboards with 104
+keys plus all keys for german layout are redefined respectively. Also the
+logical meaning of Caps-lock and Control keys is swapped. The standard key-
+board geometry (physical look) is set to pc style keyboard with 104 keys. The
+compatibility map is set to allow basic shifting, to allow Alt keys to be
+interpreted and also to allow iso9995 group shifting.
+
+4. Keymap XKB Configuration
+
+It is the formerly used way to configure xkb. The user included a special
+keymap file which specified the direct xkb configuration. This method has
+been obsoleted by previously described rules files which are far more flexi-
+ble and allow simpler and more intuitive syntax. It is preserved merely for
+compatibility reasons. Avoid using it if it is possible.
+
+ Generated from XFree86: xc/programs/Xserver/hw/xfree86/doc/sgml/XKB-Config.sgml,v 1.4 dawes Exp $
diff --git a/xorg-server/xkeyboard-config/docs/README.symbols b/xorg-server/xkeyboard-config/docs/README.symbols
index 2382f0a15..749618e77 100644
--- a/xorg-server/xkeyboard-config/docs/README.symbols
+++ b/xorg-server/xkeyboard-config/docs/README.symbols
@@ -1,51 +1,51 @@
-
-The files in the symbols directory describe possible layouts for a given
-keyboard.
-
-The default layout in each file should describe the most common layout
-for its kind, usually the symbols printed on the keys. Layout variants
-can describe common differences that are not necessarily printed on the keys.
-(e.g. a phonetic version of Cyrillic).
-
-The names of the files are referenced throughout the XKB rules, and may be
-exposed in the X server configuration and in user configuration tools.
-The filenames use the following convention:
-
-Country layouts:
-
- Keyboard layouts for a country must use the 2-letter code from the
- ISO-3166 standard.
-
-Language layouts:
-
- Keyboard layouts for a language must use the 3-letter code from the
- ISO-639 standard.
-
-Script layouts:
-
- Keyboard layouts for a script must use the 4-letter code from the
- ISO-15924 standard.
-
-Other:
-
- Keyboard layouts that do not fit in the above model and directories
- must use a filename between 5 and 8 characters.
-
-The ISO codes can be found at the following addressed:
-
-Country layouts: http://www.iso.org/iso/en/prods-services/iso3166ma/02iso-3166-code-lists/iso_3166-1_decoding_table.html
-Language layouts: http://www.loc.gov/standards/iso639-2/langcodes.html
-Script layouts: http://www.unicode.org/iso15924/iso15924-codes.html
-
-The description in the directory file base.xml.in should match the group names
-in the symbols file.
-
-If the layout is country-based, this has to be the full
-name of the country. It is highly not recommended to use the forms
-"Republic of XXX" or "XXX Republic" - the form "XXX" should be used instead.
-The only exception is "United Kingdom".
-
-If the layout is language-based, this has to be the name of the language.
-
-Within single symbols file, all the variants should have the same group name
-(implemented using the "include" directive wherever possible).
+
+The files in the symbols directory describe possible layouts for a given
+keyboard.
+
+The default layout in each file should describe the most common layout
+for its kind, usually the symbols printed on the keys. Layout variants
+can describe common differences that are not necessarily printed on the keys.
+(e.g. a phonetic version of Cyrillic).
+
+The names of the files are referenced throughout the XKB rules, and may be
+exposed in the X server configuration and in user configuration tools.
+The filenames use the following convention:
+
+Country layouts:
+
+ Keyboard layouts for a country must use the 2-letter code from the
+ ISO-3166 standard.
+
+Language layouts:
+
+ Keyboard layouts for a language must use the 3-letter code from the
+ ISO-639 standard.
+
+Script layouts:
+
+ Keyboard layouts for a script must use the 4-letter code from the
+ ISO-15924 standard.
+
+Other:
+
+ Keyboard layouts that do not fit in the above model and directories
+ must use a filename between 5 and 8 characters.
+
+The ISO codes can be found at the following addressed:
+
+Country layouts: http://www.iso.org/iso/en/prods-services/iso3166ma/02iso-3166-code-lists/iso_3166-1_decoding_table.html
+Language layouts: http://www.loc.gov/standards/iso639-2/langcodes.html
+Script layouts: http://www.unicode.org/iso15924/iso15924-codes.html
+
+The description in the directory file base.xml.in should match the group names
+in the symbols file.
+
+If the layout is country-based, this has to be the full
+name of the country. It is highly not recommended to use the forms
+"Republic of XXX" or "XXX Republic" - the form "XXX" should be used instead.
+The only exception is "United Kingdom".
+
+If the layout is language-based, this has to be the name of the language.
+
+Within single symbols file, all the variants should have the same group name
+(implemented using the "include" directive wherever possible).
diff --git a/xorg-server/xkeyboard-config/docs/iso15924.csv b/xorg-server/xkeyboard-config/docs/iso15924.csv
index 60ee4ed9f..0c751839b 100644
--- a/xorg-server/xkeyboard-config/docs/iso15924.csv
+++ b/xorg-server/xkeyboard-config/docs/iso15924.csv
@@ -1,105 +1,105 @@
-Code,N°,"English Name","Nom français","Property Value Alias",Date
-Arab,160,Arabic,arabe,Arabic,38108
-Armn,230,Armenian,arménien,Armenian,38108
-Bali,360,Balinese,balinais,,38136
-Batk,365,Batak,batak,,38108
-Beng,325,Bengali,bengalî,Bengali,38108
-Blis,550,Blissymbols,"symboles Bliss",,38108
-Bopo,285,Bopomofo,bopomofo,Bopomofo,38108
-Brah,300,Brahmi,brâhmî,,38108
-Brai,570,Braille,braille,Braille,38108
-Bugi,367,Buginese,bouguis,,38108
-Buhd,372,Buhid,bouhide,Buhid,38108
-Cans,440,"Unified Canadian Aboriginal Syllabics","syllabaire autochtone canadien unifié",Canadian_Aboriginal,38136
-Cham,358,Cham,"cham (Äam, tcham)",,38108
-Cher,445,Cherokee,tchérokî,Cherokee,38108
-Cirt,291,Cirth,cirth,,38108
-Copt,204,Coptic,copte,,38136
-Cprt,403,Cypriot,"syllabaire chypriote",Cypriot,38108
-Cyrl,220,Cyrillic,cyrillique,Cyrillic,38108
-Cyrs,221,"Cyrillic (Old Church Slavonic variant)","cyrillique (variante slavonne)",,38108
-Deva,315,"Devanagari (Nagari)",dévanâgarî,Devanagari,38108
-Dsrt,250,"Deseret (Mormon)","déseret (mormon)",Deseret,38108
-Egyd,70,"Egyptian demotic","démotique égyptien",,38108
-Egyh,60,"Egyptian hieratic","hiératique égyptien",,38108
-Egyp,50,"Egyptian hieroglyphs","hiéroglyphes égyptiens",,38108
-Ethi,430,"Ethiopic (Ge‘ez)","éthiopique (éthiopien, ge‘ez, guèze)",Ethiopic,38136
-Geor,240,"Georgian (Mkhedruli)","géorgien (mkhédrouli)",Georgian,38136
-Glag,225,Glagolitic,glagolitique,,38108
-Goth,206,Gothic,gotique,Gothic,38108
-Grek,200,Greek,grec,Greek,38108
-Gujr,320,Gujarati,"goudjarâtî (gujrâtî)",Gujarati,38108
-Guru,310,Gurmukhi,gourmoukhî,Gurmukhi,38108
-Hang,286,"Hangul (Hangŭl, Hangeul)","hangûl (hangŭl, hangeul)",Hangul,38136
-Hani,500,"Han (Hanzi, Kanji, Hanja)","idéogrammes han",Han,38108
-Hano,371,"Hanunoo (Hanunóo)",hanounóo,Hanunoo,38136
-Hans,501,"Han (Simplified variant)","idéogrammes han (variante simplifiée)",,38136
-Hant,502,"Han (Traditional variant)","idéogrammes han (variante traditionnelle)",,38136
-Hebr,125,Hebrew,hébreu,Hebrew,38108
-Hira,410,Hiragana,hiragana,Hiragana,38108
-Hmng,450,"Pahawh Hmong","pahawh hmong",,38108
-Hrkt,412,"(alias for Hiragana + Katakana)","(alias pour hiragana + katakana)",Katakana_Or_Hiragana,38108
-Hung,176,"Old Hungarian","ancien hongrois",,38108
-Inds,610,"Indus (Harappan)",indus,,38108
-Ital,210,"Old Italic (Etruscan, Oscan, etc.)","ancien italique (étrusque, osque, etc.)",Old_Italic,38136
-Java,361,Javanese,javanais,,38136
-Kali,357,"Kayah Li","kayah li",,38108
-Kana,411,Katakana,katakana,Katakana,38108
-Khar,305,Kharoshthi,kharochthî,,38136
-Khmr,355,Khmer,khmer,Khmer,38136
-Knda,345,Kannada,"kannara (canara)",Kannada,38136
-Laoo,356,Lao,laotien,Lao,38108
-Latf,217,"Latin (Fraktur variant)","latin (variante brisée)",,38108
-Latg,216,"Latin (Gaelic variant)","latin (variante gaélique)",,38108
-Latn,215,Latin,latin,Latin,38108
-Lepc,335,"Lepcha (Róng)","lepcha (róng)",,38108
-Limb,336,Limbu,limbou,Limbu,38136
-Lina,400,"Linear A","linéaire A",,38108
-Linb,401,"Linear B","linéaire B",Linear_B,38136
-Mand,140,Mandaean,mandéen,,38136
-Maya,90,"Mayan hieroglyphs","hiéroglyphes mayas",,38108
-Mero,100,Meroitic,méroïtique,,38108
-Mlym,347,Malayalam,malayâlam,Malayalam,38108
-Mong,145,Mongolian,mongol,Mongolian,38108
-Mymr,350,"Myanmar (Burmese)",birman,Myanmar,38108
-Ogam,212,Ogham,ogam,Ogham,38108
-Orkh,175,Orkhon,orkhon,,38108
-Orya,327,Oriya,oriyâ,Oriya,38108
-Osma,260,Osmanya,osmanais,Osmanya,38108
-Perm,227,"Old Permic","ancien permien",,38108
-Phag,331,Phags-pa,"’phags pa",,38136
-Phnx,115,Phoenician,phénicien,,38108
-Plrd,282,"Pollard Phonetic","phonétique de Pollard",,38108
-Qaaa,900,"Reserved for private use (start)","réservé à l’usage privé (début)",,38136
-Qabx,949,"Reserved for private use (end)","réservé à l’usage privé (fin)",,38136
-Roro,620,Rongorongo,rongorongo,,38108
-Runr,211,Runic,runique,Runic,38108
-Sara,292,Sarati,sarati,,38136
-Shaw,281,"Shavian (Shaw)","shavien (Shaw)",Shavian,38108
-Sinh,348,Sinhala,singhalais,Sinhala,38108
-Sylo,316,"Syloti Nagri","sylotî nâgrî",,38136
-Syrc,135,Syriac,syriaque,Syriac,38108
-Syre,138,"Syriac (Estrangelo variant)","syriaque (variante estranghélo)",,38108
-Syrj,137,"Syriac (Western variant)","syriaque (variante occidentale)",,38108
-Syrn,136,"Syriac (Eastern variant)","syriaque (variante orientale)",,38108
-Tagb,373,Tagbanwa,tagbanoua,Tagbanwa,38108
-Tale,353,"Tai Le","taï le",Tai_Le,38136
-Talu,354,"Tai Lue","taï lue",,38136
-Taml,346,Tamil,tamoul,Tamil,38108
-Telu,340,Telugu,télougou,Telugu,38108
-Teng,290,Tengwar,tengwar,,38108
-Tfng,120,"Tifinagh (Berber)","tifinagh (berbère)",,38108
-Tglg,370,Tagalog,tagal,Tagalog,38108
-Thaa,170,Thaana,thâna,Thaana,38108
-Thai,352,Thai,thaï,Thai,38108
-Tibt,330,Tibetan,tibétain,Tibetan,38108
-Ugar,40,Ugaritic,ougaritique,Ugaritic,38108
-Vaii,470,Vai,vaï,,38108
-Visp,280,"Visible Speech","parole visible",,38108
-Xpeo,30,"Old Persian","cunéiforme persépolitain",,38108
-Xsux,20,"Cuneiform, Sumero-Akkadian","cunéiforme suméro-akkadien",,38108
-Yiii,460,Yi,yi,Yi,38108
-Zxxx,997,"Code for unwritten languages","codet pour les langues non écrites",,38108
-Zyyy,998,"Code for undetermined script","codet pour écriture indéterminée",Common,38136
-Zzzz,999,"Code for uncoded script","codet pour écriture non codée",,38108
-Code,N°,"English Name","Nom français","Property Value Alias",Date
+Code,N°,"English Name","Nom français","Property Value Alias",Date
+Arab,160,Arabic,arabe,Arabic,38108
+Armn,230,Armenian,arménien,Armenian,38108
+Bali,360,Balinese,balinais,,38136
+Batk,365,Batak,batak,,38108
+Beng,325,Bengali,bengalî,Bengali,38108
+Blis,550,Blissymbols,"symboles Bliss",,38108
+Bopo,285,Bopomofo,bopomofo,Bopomofo,38108
+Brah,300,Brahmi,brâhmî,,38108
+Brai,570,Braille,braille,Braille,38108
+Bugi,367,Buginese,bouguis,,38108
+Buhd,372,Buhid,bouhide,Buhid,38108
+Cans,440,"Unified Canadian Aboriginal Syllabics","syllabaire autochtone canadien unifié",Canadian_Aboriginal,38136
+Cham,358,Cham,"cham (Äam, tcham)",,38108
+Cher,445,Cherokee,tchérokî,Cherokee,38108
+Cirt,291,Cirth,cirth,,38108
+Copt,204,Coptic,copte,,38136
+Cprt,403,Cypriot,"syllabaire chypriote",Cypriot,38108
+Cyrl,220,Cyrillic,cyrillique,Cyrillic,38108
+Cyrs,221,"Cyrillic (Old Church Slavonic variant)","cyrillique (variante slavonne)",,38108
+Deva,315,"Devanagari (Nagari)",dévanâgarî,Devanagari,38108
+Dsrt,250,"Deseret (Mormon)","déseret (mormon)",Deseret,38108
+Egyd,70,"Egyptian demotic","démotique égyptien",,38108
+Egyh,60,"Egyptian hieratic","hiératique égyptien",,38108
+Egyp,50,"Egyptian hieroglyphs","hiéroglyphes égyptiens",,38108
+Ethi,430,"Ethiopic (Ge‘ez)","éthiopique (éthiopien, ge‘ez, guèze)",Ethiopic,38136
+Geor,240,"Georgian (Mkhedruli)","géorgien (mkhédrouli)",Georgian,38136
+Glag,225,Glagolitic,glagolitique,,38108
+Goth,206,Gothic,gotique,Gothic,38108
+Grek,200,Greek,grec,Greek,38108
+Gujr,320,Gujarati,"goudjarâtî (gujrâtî)",Gujarati,38108
+Guru,310,Gurmukhi,gourmoukhî,Gurmukhi,38108
+Hang,286,"Hangul (Hangŭl, Hangeul)","hangûl (hangŭl, hangeul)",Hangul,38136
+Hani,500,"Han (Hanzi, Kanji, Hanja)","idéogrammes han",Han,38108
+Hano,371,"Hanunoo (Hanunóo)",hanounóo,Hanunoo,38136
+Hans,501,"Han (Simplified variant)","idéogrammes han (variante simplifiée)",,38136
+Hant,502,"Han (Traditional variant)","idéogrammes han (variante traditionnelle)",,38136
+Hebr,125,Hebrew,hébreu,Hebrew,38108
+Hira,410,Hiragana,hiragana,Hiragana,38108
+Hmng,450,"Pahawh Hmong","pahawh hmong",,38108
+Hrkt,412,"(alias for Hiragana + Katakana)","(alias pour hiragana + katakana)",Katakana_Or_Hiragana,38108
+Hung,176,"Old Hungarian","ancien hongrois",,38108
+Inds,610,"Indus (Harappan)",indus,,38108
+Ital,210,"Old Italic (Etruscan, Oscan, etc.)","ancien italique (étrusque, osque, etc.)",Old_Italic,38136
+Java,361,Javanese,javanais,,38136
+Kali,357,"Kayah Li","kayah li",,38108
+Kana,411,Katakana,katakana,Katakana,38108
+Khar,305,Kharoshthi,kharochthî,,38136
+Khmr,355,Khmer,khmer,Khmer,38136
+Knda,345,Kannada,"kannara (canara)",Kannada,38136
+Laoo,356,Lao,laotien,Lao,38108
+Latf,217,"Latin (Fraktur variant)","latin (variante brisée)",,38108
+Latg,216,"Latin (Gaelic variant)","latin (variante gaélique)",,38108
+Latn,215,Latin,latin,Latin,38108
+Lepc,335,"Lepcha (Róng)","lepcha (róng)",,38108
+Limb,336,Limbu,limbou,Limbu,38136
+Lina,400,"Linear A","linéaire A",,38108
+Linb,401,"Linear B","linéaire B",Linear_B,38136
+Mand,140,Mandaean,mandéen,,38136
+Maya,90,"Mayan hieroglyphs","hiéroglyphes mayas",,38108
+Mero,100,Meroitic,méroïtique,,38108
+Mlym,347,Malayalam,malayâlam,Malayalam,38108
+Mong,145,Mongolian,mongol,Mongolian,38108
+Mymr,350,"Myanmar (Burmese)",birman,Myanmar,38108
+Ogam,212,Ogham,ogam,Ogham,38108
+Orkh,175,Orkhon,orkhon,,38108
+Orya,327,Oriya,oriyâ,Oriya,38108
+Osma,260,Osmanya,osmanais,Osmanya,38108
+Perm,227,"Old Permic","ancien permien",,38108
+Phag,331,Phags-pa,"’phags pa",,38136
+Phnx,115,Phoenician,phénicien,,38108
+Plrd,282,"Pollard Phonetic","phonétique de Pollard",,38108
+Qaaa,900,"Reserved for private use (start)","réservé à l’usage privé (début)",,38136
+Qabx,949,"Reserved for private use (end)","réservé à l’usage privé (fin)",,38136
+Roro,620,Rongorongo,rongorongo,,38108
+Runr,211,Runic,runique,Runic,38108
+Sara,292,Sarati,sarati,,38136
+Shaw,281,"Shavian (Shaw)","shavien (Shaw)",Shavian,38108
+Sinh,348,Sinhala,singhalais,Sinhala,38108
+Sylo,316,"Syloti Nagri","sylotî nâgrî",,38136
+Syrc,135,Syriac,syriaque,Syriac,38108
+Syre,138,"Syriac (Estrangelo variant)","syriaque (variante estranghélo)",,38108
+Syrj,137,"Syriac (Western variant)","syriaque (variante occidentale)",,38108
+Syrn,136,"Syriac (Eastern variant)","syriaque (variante orientale)",,38108
+Tagb,373,Tagbanwa,tagbanoua,Tagbanwa,38108
+Tale,353,"Tai Le","taï le",Tai_Le,38136
+Talu,354,"Tai Lue","taï lue",,38136
+Taml,346,Tamil,tamoul,Tamil,38108
+Telu,340,Telugu,télougou,Telugu,38108
+Teng,290,Tengwar,tengwar,,38108
+Tfng,120,"Tifinagh (Berber)","tifinagh (berbère)",,38108
+Tglg,370,Tagalog,tagal,Tagalog,38108
+Thaa,170,Thaana,thâna,Thaana,38108
+Thai,352,Thai,thaï,Thai,38108
+Tibt,330,Tibetan,tibétain,Tibetan,38108
+Ugar,40,Ugaritic,ougaritique,Ugaritic,38108
+Vaii,470,Vai,vaï,,38108
+Visp,280,"Visible Speech","parole visible",,38108
+Xpeo,30,"Old Persian","cunéiforme persépolitain",,38108
+Xsux,20,"Cuneiform, Sumero-Akkadian","cunéiforme suméro-akkadien",,38108
+Yiii,460,Yi,yi,Yi,38108
+Zxxx,997,"Code for unwritten languages","codet pour les langues non écrites",,38108
+Zyyy,998,"Code for undetermined script","codet pour écriture indéterminée",Common,38136
+Zzzz,999,"Code for uncoded script","codet pour écriture non codée",,38108
+Code,N°,"English Name","Nom français","Property Value Alias",Date
diff --git a/xorg-server/xkeyboard-config/docs/iso3166-3.csv b/xorg-server/xkeyboard-config/docs/iso3166-3.csv
index e0ecb96ca..0e5a44e17 100644
--- a/xorg-server/xkeyboard-config/docs/iso3166-3.csv
+++ b/xorg-server/xkeyboard-config/docs/iso3166-3.csv
@@ -1,246 +1,246 @@
-ABW Aruba
-AFG Afghanistan
-AGO Angola
-AIA Anguilla
-ALA Ã…land Islands
-ALB Albania
-AND Andorra
-ANT Netherlands Antilles
-ARE United Arab Emirates
-ARG Argentina
-ARM Armenia
-ASM American Samoa
-ATA Antarctica
-ATF French Southern Territories
-ATG Antigua and Barbuda
-AUS Australia
-AUT Austria
-AZE Azerbaijan
-BDI Burundi
-BEL Belgium
-BEN Benin
-BFA Burkina Faso
-BGD Bangladesh
-BGR Bulgaria
-BHR Bahrain
-BHS Bahamas
-BIH Bosnia and Herzegovina
-BLM Saint Barthélemy
-BLR Belarus
-BLZ Belize
-BMU Bermuda
-BOL Bolivia, Plurinational State of
-BRA Brazil
-BRB Barbados
-BRN Brunei Darussalam
-BTN Bhutan
-BVT Bouvet Island
-BWA Botswana
-CAF Central African Republic
-CAN Canada
-CCK Cocos (Keeling) Islands
-CHE Switzerland
-CHL Chile
-CHN China
-CIV Côte d'Ivoire
-CMR Cameroon
-COD Congo, the Democratic Republic of the
-COG Congo
-COK Cook Islands
-COL Colombia
-COM Comoros
-CPV Cape Verde
-CRI Costa Rica
-CUB Cuba
-CXR Christmas Island
-CYM Cayman Islands
-CYP Cyprus
-CZE Czech Republic
-DEU Germany
-DJI Djibouti
-DMA Dominica
-DNK Denmark
-DOM Dominican Republic
-DZA Algeria
-ECU Ecuador
-EGY Egypt
-ERI Eritrea
-ESH Western Sahara
-ESP Spain
-EST Estonia
-ETH Ethiopia
-FIN Finland
-FJI Fiji
-FLK Falkland Islands (Malvinas)
-FRA France
-FRO Faroe Islands
-FSM Micronesia, Federated States of
-GAB Gabon
-GBR United Kingdom
-GEO Georgia
-GGY Guernsey
-GHA Ghana
-GIB Gibraltar
-GIN Guinea
-GLP Guadeloupe
-GMB Gambia
-GNB Guinea-Bissau
-GNQ Equatorial Guinea
-GRC Greece
-GRD Grenada
-GRL Greenland
-GTM Guatemala
-GUF French Guiana
-GUM Guam
-GUY Guyana
-HKG Hong Kong
-HMD Heard Island and McDonald Islands
-HND Honduras
-HRV Croatia
-HTI Haiti
-HUN Hungary
-IDN Indonesia
-IMN Isle of Man
-IND India
-IOT British Indian Ocean Territory
-IRL Ireland
-IRN Iran, Islamic Republic of
-IRQ Iraq
-ISL Iceland
-ISR Israel
-ITA Italy
-JAM Jamaica
-JEY Jersey
-JOR Jordan
-JPN Japan
-KAZ Kazakhstan
-KEN Kenya
-KGZ Kyrgyzstan
-KHM Cambodia
-KIR Kiribati
-KNA Saint Kitts and Nevis
-KOR Korea, Republic of
-KWT Kuwait
-LAO Lao People's Democratic Republic
-LBN Lebanon
-LBR Liberia
-LBY Libyan Arab Jamahiriya
-LCA Saint Lucia
-LIE Liechtenstein
-LKA Sri Lanka
-LSO Lesotho
-LTU Lithuania
-LUX Luxembourg
-LVA Latvia
-MAC Macao
-MAF Saint Martin (French part)
-MAR Morocco
-MCO Monaco
-MDA Moldova, Republic of
-MDG Madagascar
-MDV Maldives
-MEX Mexico
-MHL Marshall Islands
-MKD Macedonia, the former Yugoslav Republic of
-MLI Mali
-MLT Malta
-MMR Myanmar
-MNE Montenegro
-MNG Mongolia
-MNP Northern Mariana Islands
-MOZ Mozambique
-MRT Mauritania
-MSR Montserrat
-MTQ Martinique
-MUS Mauritius
-MWI Malawi
-MYS Malaysia
-MYT Mayotte
-NAM Namibia
-NCL New Caledonia
-NER Niger
-NFK Norfolk Island
-NGA Nigeria
-NIC Nicaragua
-NIU Niue
-NLD Netherlands
-NOR Norway
-NPL Nepal
-NRU Nauru
-NZL New Zealand
-OMN Oman
-PAK Pakistan
-PAN Panama
-PCN Pitcairn
-PER Peru
-PHL Philippines
-PLW Palau
-PNG Papua New Guinea
-POL Poland
-PRI Puerto Rico
-PRK Korea, Democratic People's Republic of
-PRT Portugal
-PRY Paraguay
-PSE Palestinian Territory, Occupied
-PYF French Polynesia
-QAT Qatar
-REU Réunion
-ROU Romania
-RUS Russian Federation
-RWA Rwanda
-SAU Saudi Arabia
-SDN Sudan
-SEN Senegal
-SGP Singapore
-SGS South Georgia and the South Sandwich Islands
-SHN Saint Helena, Ascension and Tristan da Cunha
-SJM Svalbard and Jan Mayen
-SLB Solomon Islands
-SLE Sierra Leone
-SLV El Salvador
-SMR San Marino
-SOM Somalia
-SPM Saint Pierre and Miquelon
-SRB Serbia
-STP Sao Tome and Principe
-SUR Suriname
-SVK Slovakia
-SVN Slovenia
-SWE Sweden
-SWZ Swaziland
-SYC Seychelles
-SYR Syrian Arab Republic
-TCA Turks and Caicos Islands
-TCD Chad
-TGO Togo
-THA Thailand
-TJK Tajikistan
-TKL Tokelau
-TKM Turkmenistan
-TLS Timor-Leste
-TON Tonga
-TTO Trinidad and Tobago
-TUN Tunisia
-TUR Turkey
-TUV Tuvalu
-TWN Taiwan, Province of China
-TZA Tanzania, United Republic of
-UGA Uganda
-UKR Ukraine
-UMI United States Minor Outlying Islands
-URY Uruguay
-USA United States
-UZB Uzbekistan
-VAT Holy See (Vatican City State)
-VCT Saint Vincent and the Grenadines
-VEN Venezuela, Bolivarian Republic of
-VGB Virgin Islands, British
-VIR Virgin Islands, U.S.
-VNM Viet Nam
-VUT Vanuatu
-WLF Wallis and Futuna
-WSM Samoa
-YEM Yemen
-ZAF South Africa
-ZMB Zambia
-ZWE Zimbabwe
+ABW Aruba
+AFG Afghanistan
+AGO Angola
+AIA Anguilla
+ALA Ã…land Islands
+ALB Albania
+AND Andorra
+ANT Netherlands Antilles
+ARE United Arab Emirates
+ARG Argentina
+ARM Armenia
+ASM American Samoa
+ATA Antarctica
+ATF French Southern Territories
+ATG Antigua and Barbuda
+AUS Australia
+AUT Austria
+AZE Azerbaijan
+BDI Burundi
+BEL Belgium
+BEN Benin
+BFA Burkina Faso
+BGD Bangladesh
+BGR Bulgaria
+BHR Bahrain
+BHS Bahamas
+BIH Bosnia and Herzegovina
+BLM Saint Barthélemy
+BLR Belarus
+BLZ Belize
+BMU Bermuda
+BOL Bolivia, Plurinational State of
+BRA Brazil
+BRB Barbados
+BRN Brunei Darussalam
+BTN Bhutan
+BVT Bouvet Island
+BWA Botswana
+CAF Central African Republic
+CAN Canada
+CCK Cocos (Keeling) Islands
+CHE Switzerland
+CHL Chile
+CHN China
+CIV Côte d'Ivoire
+CMR Cameroon
+COD Congo, the Democratic Republic of the
+COG Congo
+COK Cook Islands
+COL Colombia
+COM Comoros
+CPV Cape Verde
+CRI Costa Rica
+CUB Cuba
+CXR Christmas Island
+CYM Cayman Islands
+CYP Cyprus
+CZE Czech Republic
+DEU Germany
+DJI Djibouti
+DMA Dominica
+DNK Denmark
+DOM Dominican Republic
+DZA Algeria
+ECU Ecuador
+EGY Egypt
+ERI Eritrea
+ESH Western Sahara
+ESP Spain
+EST Estonia
+ETH Ethiopia
+FIN Finland
+FJI Fiji
+FLK Falkland Islands (Malvinas)
+FRA France
+FRO Faroe Islands
+FSM Micronesia, Federated States of
+GAB Gabon
+GBR United Kingdom
+GEO Georgia
+GGY Guernsey
+GHA Ghana
+GIB Gibraltar
+GIN Guinea
+GLP Guadeloupe
+GMB Gambia
+GNB Guinea-Bissau
+GNQ Equatorial Guinea
+GRC Greece
+GRD Grenada
+GRL Greenland
+GTM Guatemala
+GUF French Guiana
+GUM Guam
+GUY Guyana
+HKG Hong Kong
+HMD Heard Island and McDonald Islands
+HND Honduras
+HRV Croatia
+HTI Haiti
+HUN Hungary
+IDN Indonesia
+IMN Isle of Man
+IND India
+IOT British Indian Ocean Territory
+IRL Ireland
+IRN Iran, Islamic Republic of
+IRQ Iraq
+ISL Iceland
+ISR Israel
+ITA Italy
+JAM Jamaica
+JEY Jersey
+JOR Jordan
+JPN Japan
+KAZ Kazakhstan
+KEN Kenya
+KGZ Kyrgyzstan
+KHM Cambodia
+KIR Kiribati
+KNA Saint Kitts and Nevis
+KOR Korea, Republic of
+KWT Kuwait
+LAO Lao People's Democratic Republic
+LBN Lebanon
+LBR Liberia
+LBY Libyan Arab Jamahiriya
+LCA Saint Lucia
+LIE Liechtenstein
+LKA Sri Lanka
+LSO Lesotho
+LTU Lithuania
+LUX Luxembourg
+LVA Latvia
+MAC Macao
+MAF Saint Martin (French part)
+MAR Morocco
+MCO Monaco
+MDA Moldova, Republic of
+MDG Madagascar
+MDV Maldives
+MEX Mexico
+MHL Marshall Islands
+MKD Macedonia, the former Yugoslav Republic of
+MLI Mali
+MLT Malta
+MMR Myanmar
+MNE Montenegro
+MNG Mongolia
+MNP Northern Mariana Islands
+MOZ Mozambique
+MRT Mauritania
+MSR Montserrat
+MTQ Martinique
+MUS Mauritius
+MWI Malawi
+MYS Malaysia
+MYT Mayotte
+NAM Namibia
+NCL New Caledonia
+NER Niger
+NFK Norfolk Island
+NGA Nigeria
+NIC Nicaragua
+NIU Niue
+NLD Netherlands
+NOR Norway
+NPL Nepal
+NRU Nauru
+NZL New Zealand
+OMN Oman
+PAK Pakistan
+PAN Panama
+PCN Pitcairn
+PER Peru
+PHL Philippines
+PLW Palau
+PNG Papua New Guinea
+POL Poland
+PRI Puerto Rico
+PRK Korea, Democratic People's Republic of
+PRT Portugal
+PRY Paraguay
+PSE Palestinian Territory, Occupied
+PYF French Polynesia
+QAT Qatar
+REU Réunion
+ROU Romania
+RUS Russian Federation
+RWA Rwanda
+SAU Saudi Arabia
+SDN Sudan
+SEN Senegal
+SGP Singapore
+SGS South Georgia and the South Sandwich Islands
+SHN Saint Helena, Ascension and Tristan da Cunha
+SJM Svalbard and Jan Mayen
+SLB Solomon Islands
+SLE Sierra Leone
+SLV El Salvador
+SMR San Marino
+SOM Somalia
+SPM Saint Pierre and Miquelon
+SRB Serbia
+STP Sao Tome and Principe
+SUR Suriname
+SVK Slovakia
+SVN Slovenia
+SWE Sweden
+SWZ Swaziland
+SYC Seychelles
+SYR Syrian Arab Republic
+TCA Turks and Caicos Islands
+TCD Chad
+TGO Togo
+THA Thailand
+TJK Tajikistan
+TKL Tokelau
+TKM Turkmenistan
+TLS Timor-Leste
+TON Tonga
+TTO Trinidad and Tobago
+TUN Tunisia
+TUR Turkey
+TUV Tuvalu
+TWN Taiwan, Province of China
+TZA Tanzania, United Republic of
+UGA Uganda
+UKR Ukraine
+UMI United States Minor Outlying Islands
+URY Uruguay
+USA United States
+UZB Uzbekistan
+VAT Holy See (Vatican City State)
+VCT Saint Vincent and the Grenadines
+VEN Venezuela, Bolivarian Republic of
+VGB Virgin Islands, British
+VIR Virgin Islands, U.S.
+VNM Viet Nam
+VUT Vanuatu
+WLF Wallis and Futuna
+WSM Samoa
+YEM Yemen
+ZAF South Africa
+ZMB Zambia
+ZWE Zimbabwe
diff --git a/xorg-server/xkeyboard-config/docs/iso3166.csv b/xorg-server/xkeyboard-config/docs/iso3166.csv
index cf971e300..f08b3da03 100644
--- a/xorg-server/xkeyboard-config/docs/iso3166.csv
+++ b/xorg-server/xkeyboard-config/docs/iso3166.csv
@@ -1,240 +1,240 @@
-AF,AFGHANISTAN
-AX,"Ã…LAND ISLANDS"
-AL,ALBANIA
-DZ,ALGERIA
-AS,"AMERICAN SAMOA"
-AD,ANDORRA
-AO,ANGOLA
-AI,ANGUILLA
-AQ,ANTARCTICA
-AG,"ANTIGUA AND BARBUDA"
-AR,ARGENTINA
-AM,ARMENIA
-AW,ARUBA
-AU,AUSTRALIA
-AT,AUSTRIA
-AZ,AZERBAIJAN
-BS,BAHAMAS
-BH,BAHRAIN
-BD,BANGLADESH
-BB,BARBADOS
-BY,BELARUS
-BE,BELGIUM
-BZ,BELIZE
-BJ,BENIN
-BM,BERMUDA
-BT,BHUTAN
-BO,BOLIVIA
-BA,"BOSNIA AND HERZEGOVINA"
-BW,BOTSWANA
-BV,"BOUVET ISLAND"
-BR,BRAZIL
-IO,"BRITISH INDIAN OCEAN TERRITORY"
-BN,"BRUNEI DARUSSALAM"
-BG,BULGARIA
-BF,"BURKINA FASO"
-BI,BURUNDI
-KH,CAMBODIA
-CM,CAMEROON
-CA,CANADA
-CV,"CAPE VERDE"
-KY,"CAYMAN ISLANDS"
-CF,"CENTRAL AFRICAN REPUBLIC"
-TD,CHAD
-CL,CHILE
-CN,CHINA
-CX,"CHRISTMAS ISLAND"
-CC,"COCOS (KEELING) ISLANDS"
-CO,COLOMBIA
-KM,COMOROS
-CG,CONGO
-CD,"CONGO, THE DEMOCRATIC REPUBLIC OF THE"
-CK,"COOK ISLANDS"
-CR,"COSTA RICA"
-CI,"COTE D'IVOIRE"
-HR,CROATIA
-CU,CUBA
-CY,CYPRUS
-CZ,"CZECH REPUBLIC"
-DK,DENMARK
-DJ,DJIBOUTI
-DM,DOMINICA
-DO,"DOMINICAN REPUBLIC"
-EC,ECUADOR
-EG,EGYPT
-SV,"EL SALVADOR"
-GQ,"EQUATORIAL GUINEA"
-ER,ERITREA
-EE,ESTONIA
-ET,ETHIOPIA
-FK,"FALKLAND ISLANDS (MALVINAS)"
-FO,"FAROE ISLANDS"
-FJ,FIJI
-FI,FINLAND
-FR,FRANCE
-GF,"FRENCH GUIANA"
-PF,"FRENCH POLYNESIA"
-TF,"FRENCH SOUTHERN TERRITORIES"
-GA,GABON
-GM,GAMBIA
-GE,GEORGIA
-DE,GERMANY
-GH,GHANA
-GI,GIBRALTAR
-GR,GREECE
-GL,GREENLAND
-GD,GRENADA
-GP,GUADELOUPE
-GU,GUAM
-GT,GUATEMALA
-GN,GUINEA
-GW,GUINEA-BISSAU
-GY,GUYANA
-HT,HAITI
-HM,"HEARD ISLAND AND MCDONALD ISLANDS"
-VA,"HOLY SEE (VATICAN CITY STATE)"
-HN,HONDURAS
-HK,"HONG KONG"
-HU,HUNGARY
-IS,ICELAND
-IN,INDIA
-ID,INDONESIA
-IR,"IRAN, ISLAMIC REPUBLIC OF"
-IQ,IRAQ
-IE,IRELAND
-IL,ISRAEL
-IT,ITALY
-JM,JAMAICA
-JP,JAPAN
-JO,JORDAN
-KZ,KAZAKHSTAN
-KE,KENYA
-KI,KIRIBATI
-KP,"KOREA, DEMOCRATIC PEOPLE'S REPUBLIC OF"
-KR,"KOREA, REPUBLIC OF"
-KW,KUWAIT
-KG,KYRGYZSTAN
-LA,"LAO PEOPLE'S DEMOCRATIC REPUBLIC"
-LV,LATVIA
-LB,LEBANON
-LS,LESOTHO
-LR,LIBERIA
-LY,"LIBYAN ARAB JAMAHIRIYA"
-LI,LIECHTENSTEIN
-LT,LITHUANIA
-LU,LUXEMBOURG
-MO,MACAO
-MK,"MACEDONIA, THE FORMER YUGOSLAV REPUBLIC OF"
-MG,MADAGASCAR
-MW,MALAWI
-MY,MALAYSIA
-MV,MALDIVES
-ML,MALI
-MT,MALTA
-MH,"MARSHALL ISLANDS"
-MQ,MARTINIQUE
-MR,MAURITANIA
-MU,MAURITIUS
-YT,MAYOTTE
-MX,MEXICO
-FM,"MICRONESIA, FEDERATED STATES OF"
-MD,"MOLDOVA, REPUBLIC OF"
-MC,MONACO
-MN,MONGOLIA
-MS,MONTSERRAT
-MA,MOROCCO
-MZ,MOZAMBIQUE
-MM,MYANMAR
-NA,NAMIBIA
-NR,NAURU
-NP,NEPAL
-NL,NETHERLANDS
-AN,"NETHERLANDS ANTILLES"
-NC,"NEW CALEDONIA"
-NZ,"NEW ZEALAND"
-NI,NICARAGUA
-NE,NIGER
-NG,NIGERIA
-NU,NIUE
-NF,"NORFOLK ISLAND"
-MP,"NORTHERN MARIANA ISLANDS"
-NO,NORWAY
-OM,OMAN
-PK,PAKISTAN
-PW,PALAU
-PS,"PALESTINIAN TERRITORY, OCCUPIED"
-PA,PANAMA
-PG,"PAPUA NEW GUINEA"
-PY,PARAGUAY
-PE,PERU
-PH,PHILIPPINES
-PN,PITCAIRN
-PL,POLAND
-PT,PORTUGAL
-PR,"PUERTO RICO"
-QA,QATAR
-RE,REUNION
-RO,ROMANIA
-RU,"RUSSIAN FEDERATION"
-RW,RWANDA
-SH,"SAINT HELENA"
-KN,"SAINT KITTS AND NEVIS"
-LC,"SAINT LUCIA"
-PM,"SAINT PIERRE AND MIQUELON"
-VC,"SAINT VINCENT AND THE GRENADINES"
-WS,SAMOA
-SM,"SAN MARINO"
-ST,"SAO TOME AND PRINCIPE"
-SA,"SAUDI ARABIA"
-SN,SENEGAL
-CS,"SERBIA AND MONTENEGRO"
-SC,SEYCHELLES
-SL,"SIERRA LEONE"
-SG,SINGAPORE
-SK,SLOVAKIA
-SI,SLOVENIA
-SB,"SOLOMON ISLANDS"
-SO,SOMALIA
-ZA,"SOUTH AFRICA"
-GS,"SOUTH GEORGIA AND THE SOUTH SANDWICH ISLANDS"
-ES,SPAIN
-LK,"SRI LANKA"
-SD,SUDAN
-SR,SURINAME
-SJ,"SVALBARD AND JAN MAYEN"
-SZ,SWAZILAND
-SE,SWEDEN
-CH,SWITZERLAND
-SY,"SYRIAN ARAB REPUBLIC"
-TW,"TAIWAN, PROVINCE OF CHINA"
-TJ,TAJIKISTAN
-TZ,"TANZANIA, UNITED REPUBLIC OF"
-TH,THAILAND
-TL,TIMOR-LESTE
-TG,TOGO
-TK,TOKELAU
-TO,TONGA
-TT,"TRINIDAD AND TOBAGO"
-TN,TUNISIA
-TR,TURKEY
-TM,TURKMENISTAN
-TC,"TURKS AND CAICOS ISLANDS"
-TV,TUVALU
-UG,UGANDA
-UA,UKRAINE
-AE,"UNITED ARAB EMIRATES"
-GB,"UNITED KINGDOM"
-US,"UNITED STATES"
-UM,"UNITED STATES MINOR OUTLYING ISLANDS"
-UY,URUGUAY
-UZ,UZBEKISTAN
-VU,VANUATU
-VE,VENEZUELA
-VN,"VIET NAM"
-VG,"VIRGIN ISLANDS, BRITISH"
-VI,"VIRGIN ISLANDS, U.S."
-WF,"WALLIS AND FUTUNA"
-EH,"WESTERN SAHARA"
-YE,YEMEN
-ZM,ZAMBIA
-ZW,ZIMBABWE
+AF,AFGHANISTAN
+AX,"Ã…LAND ISLANDS"
+AL,ALBANIA
+DZ,ALGERIA
+AS,"AMERICAN SAMOA"
+AD,ANDORRA
+AO,ANGOLA
+AI,ANGUILLA
+AQ,ANTARCTICA
+AG,"ANTIGUA AND BARBUDA"
+AR,ARGENTINA
+AM,ARMENIA
+AW,ARUBA
+AU,AUSTRALIA
+AT,AUSTRIA
+AZ,AZERBAIJAN
+BS,BAHAMAS
+BH,BAHRAIN
+BD,BANGLADESH
+BB,BARBADOS
+BY,BELARUS
+BE,BELGIUM
+BZ,BELIZE
+BJ,BENIN
+BM,BERMUDA
+BT,BHUTAN
+BO,BOLIVIA
+BA,"BOSNIA AND HERZEGOVINA"
+BW,BOTSWANA
+BV,"BOUVET ISLAND"
+BR,BRAZIL
+IO,"BRITISH INDIAN OCEAN TERRITORY"
+BN,"BRUNEI DARUSSALAM"
+BG,BULGARIA
+BF,"BURKINA FASO"
+BI,BURUNDI
+KH,CAMBODIA
+CM,CAMEROON
+CA,CANADA
+CV,"CAPE VERDE"
+KY,"CAYMAN ISLANDS"
+CF,"CENTRAL AFRICAN REPUBLIC"
+TD,CHAD
+CL,CHILE
+CN,CHINA
+CX,"CHRISTMAS ISLAND"
+CC,"COCOS (KEELING) ISLANDS"
+CO,COLOMBIA
+KM,COMOROS
+CG,CONGO
+CD,"CONGO, THE DEMOCRATIC REPUBLIC OF THE"
+CK,"COOK ISLANDS"
+CR,"COSTA RICA"
+CI,"COTE D'IVOIRE"
+HR,CROATIA
+CU,CUBA
+CY,CYPRUS
+CZ,"CZECH REPUBLIC"
+DK,DENMARK
+DJ,DJIBOUTI
+DM,DOMINICA
+DO,"DOMINICAN REPUBLIC"
+EC,ECUADOR
+EG,EGYPT
+SV,"EL SALVADOR"
+GQ,"EQUATORIAL GUINEA"
+ER,ERITREA
+EE,ESTONIA
+ET,ETHIOPIA
+FK,"FALKLAND ISLANDS (MALVINAS)"
+FO,"FAROE ISLANDS"
+FJ,FIJI
+FI,FINLAND
+FR,FRANCE
+GF,"FRENCH GUIANA"
+PF,"FRENCH POLYNESIA"
+TF,"FRENCH SOUTHERN TERRITORIES"
+GA,GABON
+GM,GAMBIA
+GE,GEORGIA
+DE,GERMANY
+GH,GHANA
+GI,GIBRALTAR
+GR,GREECE
+GL,GREENLAND
+GD,GRENADA
+GP,GUADELOUPE
+GU,GUAM
+GT,GUATEMALA
+GN,GUINEA
+GW,GUINEA-BISSAU
+GY,GUYANA
+HT,HAITI
+HM,"HEARD ISLAND AND MCDONALD ISLANDS"
+VA,"HOLY SEE (VATICAN CITY STATE)"
+HN,HONDURAS
+HK,"HONG KONG"
+HU,HUNGARY
+IS,ICELAND
+IN,INDIA
+ID,INDONESIA
+IR,"IRAN, ISLAMIC REPUBLIC OF"
+IQ,IRAQ
+IE,IRELAND
+IL,ISRAEL
+IT,ITALY
+JM,JAMAICA
+JP,JAPAN
+JO,JORDAN
+KZ,KAZAKHSTAN
+KE,KENYA
+KI,KIRIBATI
+KP,"KOREA, DEMOCRATIC PEOPLE'S REPUBLIC OF"
+KR,"KOREA, REPUBLIC OF"
+KW,KUWAIT
+KG,KYRGYZSTAN
+LA,"LAO PEOPLE'S DEMOCRATIC REPUBLIC"
+LV,LATVIA
+LB,LEBANON
+LS,LESOTHO
+LR,LIBERIA
+LY,"LIBYAN ARAB JAMAHIRIYA"
+LI,LIECHTENSTEIN
+LT,LITHUANIA
+LU,LUXEMBOURG
+MO,MACAO
+MK,"MACEDONIA, THE FORMER YUGOSLAV REPUBLIC OF"
+MG,MADAGASCAR
+MW,MALAWI
+MY,MALAYSIA
+MV,MALDIVES
+ML,MALI
+MT,MALTA
+MH,"MARSHALL ISLANDS"
+MQ,MARTINIQUE
+MR,MAURITANIA
+MU,MAURITIUS
+YT,MAYOTTE
+MX,MEXICO
+FM,"MICRONESIA, FEDERATED STATES OF"
+MD,"MOLDOVA, REPUBLIC OF"
+MC,MONACO
+MN,MONGOLIA
+MS,MONTSERRAT
+MA,MOROCCO
+MZ,MOZAMBIQUE
+MM,MYANMAR
+NA,NAMIBIA
+NR,NAURU
+NP,NEPAL
+NL,NETHERLANDS
+AN,"NETHERLANDS ANTILLES"
+NC,"NEW CALEDONIA"
+NZ,"NEW ZEALAND"
+NI,NICARAGUA
+NE,NIGER
+NG,NIGERIA
+NU,NIUE
+NF,"NORFOLK ISLAND"
+MP,"NORTHERN MARIANA ISLANDS"
+NO,NORWAY
+OM,OMAN
+PK,PAKISTAN
+PW,PALAU
+PS,"PALESTINIAN TERRITORY, OCCUPIED"
+PA,PANAMA
+PG,"PAPUA NEW GUINEA"
+PY,PARAGUAY
+PE,PERU
+PH,PHILIPPINES
+PN,PITCAIRN
+PL,POLAND
+PT,PORTUGAL
+PR,"PUERTO RICO"
+QA,QATAR
+RE,REUNION
+RO,ROMANIA
+RU,"RUSSIAN FEDERATION"
+RW,RWANDA
+SH,"SAINT HELENA"
+KN,"SAINT KITTS AND NEVIS"
+LC,"SAINT LUCIA"
+PM,"SAINT PIERRE AND MIQUELON"
+VC,"SAINT VINCENT AND THE GRENADINES"
+WS,SAMOA
+SM,"SAN MARINO"
+ST,"SAO TOME AND PRINCIPE"
+SA,"SAUDI ARABIA"
+SN,SENEGAL
+CS,"SERBIA AND MONTENEGRO"
+SC,SEYCHELLES
+SL,"SIERRA LEONE"
+SG,SINGAPORE
+SK,SLOVAKIA
+SI,SLOVENIA
+SB,"SOLOMON ISLANDS"
+SO,SOMALIA
+ZA,"SOUTH AFRICA"
+GS,"SOUTH GEORGIA AND THE SOUTH SANDWICH ISLANDS"
+ES,SPAIN
+LK,"SRI LANKA"
+SD,SUDAN
+SR,SURINAME
+SJ,"SVALBARD AND JAN MAYEN"
+SZ,SWAZILAND
+SE,SWEDEN
+CH,SWITZERLAND
+SY,"SYRIAN ARAB REPUBLIC"
+TW,"TAIWAN, PROVINCE OF CHINA"
+TJ,TAJIKISTAN
+TZ,"TANZANIA, UNITED REPUBLIC OF"
+TH,THAILAND
+TL,TIMOR-LESTE
+TG,TOGO
+TK,TOKELAU
+TO,TONGA
+TT,"TRINIDAD AND TOBAGO"
+TN,TUNISIA
+TR,TURKEY
+TM,TURKMENISTAN
+TC,"TURKS AND CAICOS ISLANDS"
+TV,TUVALU
+UG,UGANDA
+UA,UKRAINE
+AE,"UNITED ARAB EMIRATES"
+GB,"UNITED KINGDOM"
+US,"UNITED STATES"
+UM,"UNITED STATES MINOR OUTLYING ISLANDS"
+UY,URUGUAY
+UZ,UZBEKISTAN
+VU,VANUATU
+VE,VENEZUELA
+VN,"VIET NAM"
+VG,"VIRGIN ISLANDS, BRITISH"
+VI,"VIRGIN ISLANDS, U.S."
+WF,"WALLIS AND FUTUNA"
+EH,"WESTERN SAHARA"
+YE,YEMEN
+ZM,ZAMBIA
+ZW,ZIMBABWE
diff --git a/xorg-server/xkeyboard-config/docs/iso639.csv b/xorg-server/xkeyboard-config/docs/iso639.csv
index 374f2104b..d582d8cc5 100644
--- a/xorg-server/xkeyboard-config/docs/iso639.csv
+++ b/xorg-server/xkeyboard-config/docs/iso639.csv
@@ -1,501 +1,501 @@
-Abkhazian,abkhaze,abk,ab
-Achinese,aceh,ace,
-Acoli,acoli,ach,
-Adangme,adangme,ada,
-"Adygei; Adyghe",adyghé,ady,
-"Adyghe; Adygei",adygh,ady,
-Afar,afar,aar,aa
-Afrihili,afrihili,afh,
-Afrikaans,afrikaans,afr,af
-"Afro-Asiatic (Other)","afro-asiatiques, autres langues",afa,
-Akan,akan,aka,ak
-Akkadian,akkadien,akk,
-Albanian,albanais,alb/sqi,sq
-Aleut,aléoute,ale,
-"Algonquian languages","algonquines, langues",alg,
-"Altaic (Other)","altaïques, autres langues",tut,
-Amharic,amharique,amh,am
-"Apache languages",apache,apa,
-Arabic,arabe,ara,ar
-Aragonese,aragonais,arg,an
-Aramaic,araméen,arc,
-Arapaho,arapaho,arp,
-Araucanian,araucan,arn,
-Arawak,arawak,arw,
-Armenian,arménien,arm/hye,hy
-"Artificial (Other)","artificielles, autres langues",art,
-Assamese,assamais,asm,as
-"Asturian; Bable","asturien; bable",ast,
-"Athapascan languages","athapascanes, langues",ath,
-"Australian languages","australiennes, langues",aus,
-"Austronesian (Other)","malayo-polynésiennes, autres langues",map,
-Avaric,avar,ava,av
-Avestan,avestique,ave,ae
-Awadhi,awadhi,awa,
-Aymara,aymara,aym,ay
-Azerbaijani,azéri,aze,az
-"Bable; Asturian","bable; asturien",ast,
-Balinese,balinais,ban,
-"Baltic (Other)","baltiques, autres langues",bat,
-Baluchi,baloutchi,bal,
-Bambara,bambara,bam,bm
-"Bamileke languages","bamilékés, langues",bai,
-Banda,banda,bad,
-"Bantu (Other)","bantoues, autres langues",bnt,
-Basa,basa,bas,
-Bashkir,bachkir,bak,ba
-Basque,basque,baq/eus,eu
-"Batak (Indonesia)","batak (Indonésie)",btk,
-Beja,bedja,bej,
-Belarusian,biélorusse,bel,be
-Bemba,bemba,bem,
-Bengali,bengali,ben,bn
-"Berber (Other)","berbères, autres langues",ber,
-Bhojpuri,bhojpuri,bho,
-Bihari,bihari,bih,bh
-Bikol,bikol,bik,
-"Bilin; Blin","bilen; blin",byn,
-Bini,bini,bin,
-Bislama,bichlamar,bis,bi
-"Blin; Bilin","blin; bilen",byn,
-"Bokmål, Norwegian; Norwegian Bokmål","bokmål, norvégien; bokmål norvégien",nob,nb
-Bosnian,bosniaque,bos,bs
-Braj,braj,bra,
-Breton,breton,bre,br
-Buginese,bugi,bug,
-Bulgarian,bulgare,bul,bg
-Buriat,bouriate,bua,
-Burmese,birman,bur/mya,my
-Caddo,caddo,cad,
-Carib,caribe,car,
-"Castilian; Spanish","castillan; espagnol",spa,es
-"Catalan; Valencian","catalan; valencien",cat,ca
-"Caucasian (Other)","caucasiennes, autres langues",cau,
-Cebuano,cebuano,ceb,
-"Celtic (Other)","celtiques, autres langues",cel,
-"Central American Indian (Other)","indiennes d'Amérique centrale, autres langues",cai,
-Chagatai,djaghataï,chg,
-"Chamic languages","chames, langues",cmc,
-Chamorro,chamorro,cha,ch
-Chechen,tchétchène,che,ce
-Cherokee,cherokee,chr,
-"Chewa; Chichewa; Nyanja","chewa, chichewa, nyanja",nya,ny
-Cheyenne,cheyenne,chy,
-Chibcha,chibcha,chb,
-"Chichewa; Chewa; Nyanja","chichewa; chewa; nyanja",nya,ny
-Chinese,chinois,chi/zho,zh
-"Chinook jargon","chinook, jargon",chn,
-Chipewyan,chipewyan,chp,
-Choctaw,choctaw,cho,
-"Chuang; Zhuang","chuang; zhuang",zha,za
-"Church Slavic; Slavonic; Church Slavonic; Old Bulgarian; Old Church Slavonic","slavon d'église; vieux slave; slavon liturgique; vieux bulgare",chu,cu
-"Church Slavonic; Church Slavic; Old Slavonic; Old Bulgarian; Old Church Slavonic","slavon liturgique; slavon d'église; vieux slave; vieux bulgare",chu,cu
-Chuukese,chuuk,chk,
-Chuvash,tchouvache,chv,cv
-"Classical Nepal Bhasa; Classical Newari; Old Newari","newari classique",nwc,
-"Classical Newari; Old Newari; Classical Nepal Bhasa","newari classique",nwc,
-Coptic,copte,cop,
-Cornish,cornique,cor,kw
-Corsican,corse,cos,co
-Cree,cree,cre,cr
-Creek,muskogee,mus,
-"Creoles and pidgins (Other)","créoles et pidgins divers",crp,
-"Creoles and pidgins, English-based (Other)","créoles et pidgins anglais, autres",cpe,
-"Creoles and pidgins, French-based (Other)","créoles et pidgins français, autres",cpf,
-"Creoles and pidgins, Portuguese-based (Other)","créoles et pidgins portugais, autres",cpp,
-"Crimean Tatar; Crimean Turkish","tatar de Crimé",crh,
-"Crimean Turkish; Crimean Tatar","tatar de Crimé",crh,
-Croatian,croate,scr/hrv,hr
-"Cushitic (Other)","couchitiques, autres langues",cus,
-Czech,tchèque,cze/ces,cs
-Dakota,dakota,dak,
-Danish,danois,dan,da
-Dargwa,dargwa,dar,
-Dayak,dayak,day,
-Delaware,delaware,del,
-Dinka,dinka,din,
-Divehi,maldivien,div,dv
-Dogri,dogri,doi,
-Dogrib,dogrib,dgr,
-"Dravidian (Other)","dravidiennes, autres langues",dra,
-Duala,douala,dua,
-"Dutch; Flemish","néerlandais; flamand",dut/nld,nl
-"Dutch, Middle (ca. 1050-1350)","néerlandais moyen (ca. 1050-1350)",dum,
-Dyula,dioula,dyu,
-Dzongkha,dzongkha,dzo,dz
-Efik,efik,efi,
-"Egyptian (Ancient)",égyptien,egy,
-Ekajuk,ekajuk,eka,
-Elamite,élamite,elx,
-English,anglais,eng,en
-"English, Middle (1100-1500)","anglais moyen (1100-1500)",enm,
-"English, Old (ca.450-1100)","anglo-saxon (ca.450-1100)",ang,
-Erzya,erza,myv,
-Esperanto,espéranto,epo,eo
-Estonian,estonien,est,et
-Ewe,éwé,ewe,ee
-Ewondo,éwondo,ewo,
-Fang,fang,fan,
-Fanti,fanti,fat,
-Faroese,féroïen,fao,fo
-Fijian,fidjien,fij,fj
-Finnish,finnois,fin,fi
-"Finno-Ugrian (Other)","finno-ougriennes, autres langues",fiu,
-"Flemish; Dutch","flamand; néerlandais",dut/nld,nl
-Fon,fon,fon,
-French,français,fre/fra,fr
-"French, Middle (ca.1400-1600)","français moyen (1400-1600)",frm,
-"French, Old (842-ca.1400)","français ancien (842-ca.1400)",fro,
-Frisian,frison,fry,fy
-Friulian,frioulan,fur,
-Fulah,peul,ful,ff
-"Gaelic; Scottish Gaelic","gaélique; gaélique écossais",gla,gd
-Gallegan,galicien,glg,gl
-Ganda,ganda,lug,lg
-Gayo,gayo,gay,
-Gbaya,gbaya,gba,
-Geez,guèze,gez,
-Georgian,géorgien,geo/kat,ka
-German,allemand,ger/deu,de
-"German, Low; Saxon, Low; Low German; Low Saxon","allemand, bas; saxon, bas; bas allemand; bas saxon",nds,
-"German, Middle High (ca.1050-1500)","allemand, moyen haut (ca. 1050-1500)",gmh,
-"German, Old High (ca.750-1050)","allemand, vieux haut (ca. 750-1050)",goh,
-"Germanic (Other)","germaniques, autres langues",gem,
-"Gikuyu; Kikuyu",kikuyu,kik,ki
-Gilbertese,kiribati,gil,
-Gondi,gond,gon,
-Gorontalo,gorontalo,gor,
-Gothic,gothique,got,
-Grebo,grebo,grb,
-"Greek, Ancient (to 1453)","grec ancien (jusqu'à 1453)",grc,
-"Greek, Modern (1453-)","grec moderne (après 1453)",gre/ell,el
-"Greenlandic; Kalaallisut",groenlandais,kal,kl
-Guarani,guarani,grn,gn
-Gujarati,goudjrati,guj,gu
-Gwich´in,gwich´in,gwi,
-Haida,haida,hai,
-"Haitian; Haitian Creole","haïtien; créole haïtien",hat,ht
-"Haitian Creole; Haitian","créole haïtien; haïtien",hat,ht
-Hausa,haoussa,hau,ha
-Hawaiian,hawaïen,haw,
-Hebrew,hébreu,heb,he
-Herero,herero,her,hz
-Hiligaynon,hiligaynon,hil,
-Himachali,himachali,him,
-Hindi,hindi,hin,hi
-"Hiri Motu","hiri motu",hmo,ho
-Hittite,hittite,hit,
-Hmong,hmong,hmn,
-Hungarian,hongrois,hun,hu
-Hupa,hupa,hup,
-Icelandic,islandais,ice/isl,is
-Ido,ido,ido,io
-Igbo,igbo,ibo,ig
-Ijo,ijo,ijo,
-Iloko,ilocano,ilo,
-"Inari Sami","sami d'Inari",smn,
-"Indic (Other)","indo-aryennes, autres langues",inc,
-"Indo-European (Other)","indo-européennes, autres langues",ine,
-Indonesian,indonésien,ind,id
-Ingush,ingouche,inh,
-"Interlingua (International Auxiliary Language Association)","interlingua (langue auxiliaire internationale)",ina,ia
-Interlingue,interlingue,ile,ie
-Inuktitut,inuktitut,iku,iu
-Inupiaq,inupiaq,ipk,ik
-"Iranian (Other)","iraniennes, autres langues",ira,
-Irish,irlandais,gle,ga
-"Irish, Middle (900-1200)","irlandais moyen (900-1200)",mga,
-"Irish, Old (to 900)","irlandais ancien (jusqu'à 900)",sga,
-"Iroquoian languages","iroquoises, langues (famille)",iro,
-Italian,italien,ita,it
-Japanese,japonais,jpn,ja
-Javanese,javanais,jav,jv
-Judeo-Arabic,judéo-arabe,jrb,
-Judeo-Persian,judéo-persan,jpr,
-Kabyle,kabyle,kab,
-Kachin,kachin,kac,
-"Kalaallisut; Greenlandic",groenlandais,kal,kl
-Kalmyk,kalmouk,xal,
-Kamba,kamba,kam,
-Kannada,kannada,kan,kn
-Kanuri,kanouri,kau,kr
-Karachay-Balkar,"karatchaï balkar",krc,
-Kara-Kalpak,karakalpak,kaa,
-Karen,karen,kar,
-Kashmiri,kashmiri,kas,ks
-Kashubian,kachoube,csb,
-Kawi,kawi,kaw,
-Kazakh,kazakh,kaz,kk
-Khasi,khasi,kha,
-Khmer,khmer,khm,km
-"Khoisan (Other)","khoisan, autres langues",khi,
-Khotanese,khotanais,kho,
-"Kikuyu; Gikuyu",kikuyu,kik,ki
-Kimbundu,kimbundu,kmb,
-Kinyarwanda,rwanda,kin,rw
-Kirghiz,kirghize,kir,ky
-"Klingon; tlhlngan-Hol",klingon,tlh,
-Komi,komi,kom,kv
-Kongo,kongo,kon,kg
-Konkani,konkani,kok,
-Korean,coréen,kor,ko
-Kosraean,kosrae,kos,
-Kpelle,kpellé,kpe,
-Kru,krou,kro,
-"Kuanyama; Kwanyama","kuanyama; kwanyama",kua,kj
-Kumyk,koumyk,kum,
-Kurdish,kurde,kur,ku
-Kurukh,kurukh,kru,
-Kutenai,kutenai,kut,
-"Kwanyama, Kuanyama","kwanyama; kuanyama",kua,kj
-Ladino,judéo-espagnol,lad,
-Lahnda,lahnda,lah,
-Lamba,lamba,lam,
-Lao,lao,lao,lo
-Latin,latin,lat,la
-Latvian,letton,lav,lv
-"Letzeburgesch; Luxembourgish",luxembourgeois,ltz,lb
-Lezghian,lezghien,lez,
-"Limburgan; Limburger; Limburgish",limbourgeois,lim,li
-"Limburger; Limburgan; Limburgish;",limbourgeois,lim,li
-"Limburgish; Limburger; Limburgan",limbourgeois,lim,li
-Lingala,lingala,lin,ln
-Lithuanian,lituanien,lit,lt
-Lojban,lojban,jbo,
-"Low German; Low Saxon; German, Low; Saxon, Low","bas allemand; bas saxon; allemand, bas; saxon, bas",nds,
-"Low Saxon; Low German; Saxon, Low; German, Low","bas saxon; bas allemand; saxon, bas; allemand, bas",nds,
-"Lower Sorbian",bas-sorabe,dsb,
-Lozi,lozi,loz,
-Luba-Katanga,luba-katanga,lub,lu
-Luba-Lulua,luba-lulua,lua,
-Luiseno,luiseno,lui,
-"Lule Sami","sami de Lule",smj,
-Lunda,lunda,lun,
-"Luo (Kenya and Tanzania)","luo (Kenya et Tanzanie)",luo,
-Lushai,lushai,lus,
-"Luxembourgish; Letzeburgesch",luxembourgeois,ltz,lb
-Macedonian,macédonien,mac/mkd,mk
-Madurese,madourais,mad,
-Magahi,magahi,mag,
-Maithili,maithili,mai,
-Makasar,makassar,mak,
-Malagasy,malgache,mlg,mg
-Malay,malais,may/msa,ms
-Malayalam,malayalam,mal,ml
-Maltese,maltais,mlt,mt
-Manchu,mandchou,mnc,
-Mandar,mandar,mdr,
-Mandingo,mandingue,man,
-Manipuri,manipuri,mni,
-"Manobo languages","manobo, langues",mno,
-Manx,"manx; mannois",glv,gv
-Maori,maori,mao/mri,mi
-Marathi,marathe,mar,mr
-Mari,mari,chm,
-Marshallese,marshall,mah,mh
-Marwari,marvari,mwr,
-Masai,massaï,mas,
-"Mayan languages","maya, langues",myn,
-Mende,mendé,men,
-Micmac,micmac,mic,
-Minangkabau,minangkabau,min,
-"Miscellaneous languages","diverses, langues",mis,
-Mohawk,mohawk,moh,
-Moksha,moksa,mdf,
-Moldavian,moldave,mol,mo
-"Mon-Khmer (Other)","môn-khmer, autres langues",mkh,
-Mongo,mongo,lol,
-Mongolian,mongol,mon,mn
-Mossi,moré,mos,
-"Multiple languages",multilingue,mul,
-"Munda languages","mounda, langues",mun,
-Nahuatl,nahuatl,nah,
-Nauru,nauruan,nau,na
-"Navaho, Navajo",navaho,nav,nv
-"Navajo; Navaho",navaho,nav,nv
-"Ndebele, North","ndébélé du Nord",nde,nd
-"Ndebele, South","ndébélé du Sud",nbl,nr
-Ndonga,ndonga,ndo,ng
-Neapolitan,napolitain,nap,
-"Nepal Bhasa ; Newari","nepal bhasa ; newari",new,
-Nepali,népalais,nep,ne
-"Newari; Nepal Bhasa","newari; nepal bhasa",new,
-Nias,nias,nia,
-"Niger-Kordofanian (Other)","nigéro-congolaises, autres langues",nic,
-"Nilo-Saharan (Other)","nilo-sahariennes, autres langues",ssa,
-Niuean,niué,niu,
-Nogai,"nogaï; nogay",nog,
-"Norse, Old","norrois, vieux",non,
-"North American Indian (Other)","indiennes d'Amérique du Nord, autres langues",nai,
-"Northern Sami","sami du Nord",sme,se
-"North Ndebele","ndébélé du Nord",nde,nd
-Norwegian,norvégien,nor,no
-"Norwegian Bokmål; Bokmål, Norwegian","norvégien bokmål; bokmål, norvégien",nob,nb
-"Norwegian Nynorsk; Nynorsk, Norwegian","norvégien nynorsk; nynorsk, norvégien",nno,nn
-"Nubian languages","nubiennes, langues",nub,
-Nyamwezi,nyamwezi,nym,
-"Nyanja; Chichewa; Chewa","nyanja; chichewa; chewa",nya,ny
-Nyankole,nyankolé,nyn,
-"Nynorsk, Norwegian; Norwegian Nynorsk","nynorsk, norvégien; norvégien nynorsk",nno,nn
-Nyoro,nyoro,nyo,
-Nzima,nzema,nzi,
-"Occitan (post 1500); Provençal","occitan (après 1500); provençal",oci,oc
-Ojibwa,ojibwa,oji,oj
-"Old Bulgarian; Old Slavonic; Church Slavonic; Church Slavic; Old Church Slavonic","vieux bulgare; vieux slave; slavon liturgique; slavon d'église",chu,cu
-"Old Church Slavonic; Old Slavonic; Church Slavonic; Old Bulgarian; Church Slavic","vieux slave; slavon liturgique; vieux bulgare; slavon d'église",chu,cu
-"Old Newari; Classical Newari; Classical Nepal Bhasa","newari classique",nwc,
-"Old Slavonic; Church Slavonic; Old Bulgarian; Church Slavic; Old Church Slavonic","vieux slave; slavon liturgique; vieux bulgare; slavon d'église",chu,cu
-Oriya,oriya,ori,or
-Oromo,galla,orm,om
-Osage,osage,osa,
-"Ossetian; Ossetic",ossète,oss,os
-"Ossetic; Ossetian",ossète,oss,os
-"Otomian languages","otomangue, langues",oto,
-Pahlavi,pahlavi,pal,
-Palauan,palau,pau,
-Pali,pali,pli,pi
-Pampanga,pampangan,pam,
-Pangasinan,pangasinan,pag,
-"Panjabi; Punjabi",pendjabi,pan,pa
-Papiamento,papiamento,pap,
-"Papuan (Other)","papoues, autres langues",paa,
-Persian,persan,per/fas,fa
-"Persian, Old (ca.600-400 B.C.)","perse, vieux (ca. 600-400 av. J.-C.)",peo,
-"Philippine (Other)","philippines, autres langues",phi,
-Phoenician,phénicien,phn,
-Pohnpeian,pohnpei,pon,
-Polish,polonais,pol,pl
-Portuguese,portugais,por,pt
-"Prakrit languages",prâkrit,pra,
-"Provençal; Occitan (post 1500)","provençal; occitan (après 1500)",oci,oc
-"Provençal, Old (to 1500)","provençal ancien (jusqu'à 1500)",pro,
-"Punjabi; Panjabi",pendjabi,pan,pa
-Pushto,pachto,pus,ps
-Rajasthani,rajasthani,raj,
-Rapanui,rapanui,rap,
-Rarotongan,rarotonga,rar,
-"Reserved for local use","réservée à l'usage local",qaa-qtz,
-"Romance (Other)","romanes, autres langues",roa,
-Romanian,roumain,rum/ron,ro
-Romany,tsigane,rom,
-Rundi,rundi,run,rn
-Russian,russe,rus,ru
-"Salishan languages","salish, langues",sal,
-"Samaritan Aramaic",samaritain,sam,
-"Sami languages (Other)","sami, autres langues",smi,
-Samoan,samoan,smo,sm
-Sandawe,sandawe,sad,
-Sango,sango,sag,sg
-Sanskrit,sanskrit,san,sa
-Santali,santal,sat,
-Sardinian,sarde,srd,sc
-Sasak,sasak,sas,
-"Saxon, Low; German, Low; Low Saxon; Low German","saxon, bas; allemand, bas; bas saxon; bas allemand",nds,
-Scots,écossais,sco,
-"Scottish Gaelic; Gaelic","gaélique écossais; gaélique",gla,gd
-Selkup,selkoupe,sel,
-"Semitic (Other)","sémitiques, autres langues",sem,
-Serbian,serbe,scc/srp,sr
-Serer,sérère,srr,
-Shan,chan,shn,
-Shona,shona,sna,sn
-"Sichuan Yi","yi de Sichuan",iii,ii
-Sidamo,sidamo,sid,
-"Sign languages","langues des signes",sgn,
-Siksika,blackfoot,bla,
-Sindhi,sindhi,snd,sd
-Sinhalese,singhalais,sin,si
-"Sino-Tibetan (Other)","sino-tibétaines, autres langues",sit,
-"Siouan languages","sioux, langues",sio,
-"Skolt Sami","sami skolt",sms,
-"Slave (Athapascan)","esclave (athapascan)",den,
-"Slavic (Other)","slaves, autres langues",sla,
-Slovak,slovaque,slo/slk,sk
-Slovenian,slovène,slv,sl
-Sogdian,sogdien,sog,
-Somali,somali,som,so
-Songhai,songhai,son,
-Soninke,soninké,snk,
-"Sorbian languages","sorabes, langues",wen,
-"Sotho, Northern","sotho du Nord",nso,
-"Sotho, Southern","sotho du Sud",sot,st
-"South American Indian (Other)","indiennes d'Amérique du Sud, autres langues",sai,
-"Southern Sami","sami du Sud",sma,
-"South Ndebele","ndébélé du Sud",nbl,nr
-"Spanish; Castilian","espagnol; castillan",spa,es
-Sukuma,sukuma,suk,
-Sumerian,sumérien,sux,
-Sundanese,soundanais,sun,su
-Susu,soussou,sus,
-Swahili,swahili,swa,sw
-Swati,swati,ssw,ss
-Swedish,suédois,swe,sv
-Syriac,syriaque,syr,
-Tagalog,tagalog,tgl,tl
-Tahitian,tahitien,tah,ty
-"Tai (Other)","thaïes, autres langues",tai,
-Tajik,tadjik,tgk,tg
-Tamashek,tamacheq,tmh,
-Tamil,tamoul,tam,ta
-Tatar,tatar,tat,tt
-Telugu,télougou,tel,te
-Tereno,tereno,ter,
-Tetum,tetum,tet,
-Thai,thaï,tha,th
-Tibetan,tibétain,tib/bod,bo
-Tigre,tigré,tig,
-Tigrinya,tigrigna,tir,ti
-Timne,temne,tem,
-Tiv,tiv,tiv,
-"tlhlngan-Hol; Klingon",klingon,tlh,
-Tlingit,tlingit,tli,
-"Tok Pisin","tok pisin",tpi,
-Tokelau,tokelau,tkl,
-"Tonga (Nyasa)","tonga (Nyasa)",tog,
-"Tonga (Tonga Islands)","tongan (ÃŽles Tonga)",ton,to
-Tsimshian,tsimshian,tsi,
-Tsonga,tsonga,tso,ts
-Tswana,tswana,tsn,tn
-Tumbuka,tumbuka,tum,
-"Tupi languages","tupi, langues",tup,
-Turkish,turc,tur,tr
-"Turkish, Ottoman (1500-1928)","turc ottoman (1500-1928)",ota,
-Turkmen,turkmène,tuk,tk
-Tuvalu,tuvalu,tvl,
-Tuvinian,touva,tyv,
-Twi,twi,twi,tw
-Udmurt,oudmourte,udm,
-Ugaritic,ougaritique,uga,
-Uighur,ouïgour,uig,ug
-Ukrainian,ukrainien,ukr,uk
-Umbundu,umbundu,umb,
-Undetermined,indéterminée,und,
-"Upper Sorbian",haut-sorabe,hsb,
-Urdu,ourdou,urd,ur
-Uzbek,ouszbek,uzb,uz
-Vai,vaï,vai,
-"Valencian; Catalan","valencien; catalan",cat,ca
-Venda,venda,ven,ve
-Vietnamese,vietnamien,vie,vi
-Volapük,volapük,vol,vo
-Votic,vote,vot,
-"Wakashan languages","wakashennes, langues",wak,
-Walamo,walamo,wal,
-Walloon,wallon,wln,wa
-Waray,waray,war,
-Washo,washo,was,
-Welsh,gallois,wel/cym,cy
-Wolof,wolof,wol,wo
-Xhosa,xhosa,xho,xh
-Yakut,iakoute,sah,
-Yao,yao,yao,
-Yapese,yapois,yap,
-Yiddish,yiddish,yid,yi
-Yoruba,yoruba,yor,yo
-"Yupik languages","yupik, langues",ypk,
-Zande,zandé,znd,
-Zapotec,zapotèque,zap,
-Zenaga,zenaga,zen,
-"Zhuang; Chuang","zhuang; chuang",zha,za
-Zulu,zoulou,zul,zu
-Zuni,zuni,zun,
+Abkhazian,abkhaze,abk,ab
+Achinese,aceh,ace,
+Acoli,acoli,ach,
+Adangme,adangme,ada,
+"Adygei; Adyghe",adyghé,ady,
+"Adyghe; Adygei",adygh,ady,
+Afar,afar,aar,aa
+Afrihili,afrihili,afh,
+Afrikaans,afrikaans,afr,af
+"Afro-Asiatic (Other)","afro-asiatiques, autres langues",afa,
+Akan,akan,aka,ak
+Akkadian,akkadien,akk,
+Albanian,albanais,alb/sqi,sq
+Aleut,aléoute,ale,
+"Algonquian languages","algonquines, langues",alg,
+"Altaic (Other)","altaïques, autres langues",tut,
+Amharic,amharique,amh,am
+"Apache languages",apache,apa,
+Arabic,arabe,ara,ar
+Aragonese,aragonais,arg,an
+Aramaic,araméen,arc,
+Arapaho,arapaho,arp,
+Araucanian,araucan,arn,
+Arawak,arawak,arw,
+Armenian,arménien,arm/hye,hy
+"Artificial (Other)","artificielles, autres langues",art,
+Assamese,assamais,asm,as
+"Asturian; Bable","asturien; bable",ast,
+"Athapascan languages","athapascanes, langues",ath,
+"Australian languages","australiennes, langues",aus,
+"Austronesian (Other)","malayo-polynésiennes, autres langues",map,
+Avaric,avar,ava,av
+Avestan,avestique,ave,ae
+Awadhi,awadhi,awa,
+Aymara,aymara,aym,ay
+Azerbaijani,azéri,aze,az
+"Bable; Asturian","bable; asturien",ast,
+Balinese,balinais,ban,
+"Baltic (Other)","baltiques, autres langues",bat,
+Baluchi,baloutchi,bal,
+Bambara,bambara,bam,bm
+"Bamileke languages","bamilékés, langues",bai,
+Banda,banda,bad,
+"Bantu (Other)","bantoues, autres langues",bnt,
+Basa,basa,bas,
+Bashkir,bachkir,bak,ba
+Basque,basque,baq/eus,eu
+"Batak (Indonesia)","batak (Indonésie)",btk,
+Beja,bedja,bej,
+Belarusian,biélorusse,bel,be
+Bemba,bemba,bem,
+Bengali,bengali,ben,bn
+"Berber (Other)","berbères, autres langues",ber,
+Bhojpuri,bhojpuri,bho,
+Bihari,bihari,bih,bh
+Bikol,bikol,bik,
+"Bilin; Blin","bilen; blin",byn,
+Bini,bini,bin,
+Bislama,bichlamar,bis,bi
+"Blin; Bilin","blin; bilen",byn,
+"Bokmål, Norwegian; Norwegian Bokmål","bokmål, norvégien; bokmål norvégien",nob,nb
+Bosnian,bosniaque,bos,bs
+Braj,braj,bra,
+Breton,breton,bre,br
+Buginese,bugi,bug,
+Bulgarian,bulgare,bul,bg
+Buriat,bouriate,bua,
+Burmese,birman,bur/mya,my
+Caddo,caddo,cad,
+Carib,caribe,car,
+"Castilian; Spanish","castillan; espagnol",spa,es
+"Catalan; Valencian","catalan; valencien",cat,ca
+"Caucasian (Other)","caucasiennes, autres langues",cau,
+Cebuano,cebuano,ceb,
+"Celtic (Other)","celtiques, autres langues",cel,
+"Central American Indian (Other)","indiennes d'Amérique centrale, autres langues",cai,
+Chagatai,djaghataï,chg,
+"Chamic languages","chames, langues",cmc,
+Chamorro,chamorro,cha,ch
+Chechen,tchétchène,che,ce
+Cherokee,cherokee,chr,
+"Chewa; Chichewa; Nyanja","chewa, chichewa, nyanja",nya,ny
+Cheyenne,cheyenne,chy,
+Chibcha,chibcha,chb,
+"Chichewa; Chewa; Nyanja","chichewa; chewa; nyanja",nya,ny
+Chinese,chinois,chi/zho,zh
+"Chinook jargon","chinook, jargon",chn,
+Chipewyan,chipewyan,chp,
+Choctaw,choctaw,cho,
+"Chuang; Zhuang","chuang; zhuang",zha,za
+"Church Slavic; Slavonic; Church Slavonic; Old Bulgarian; Old Church Slavonic","slavon d'église; vieux slave; slavon liturgique; vieux bulgare",chu,cu
+"Church Slavonic; Church Slavic; Old Slavonic; Old Bulgarian; Old Church Slavonic","slavon liturgique; slavon d'église; vieux slave; vieux bulgare",chu,cu
+Chuukese,chuuk,chk,
+Chuvash,tchouvache,chv,cv
+"Classical Nepal Bhasa; Classical Newari; Old Newari","newari classique",nwc,
+"Classical Newari; Old Newari; Classical Nepal Bhasa","newari classique",nwc,
+Coptic,copte,cop,
+Cornish,cornique,cor,kw
+Corsican,corse,cos,co
+Cree,cree,cre,cr
+Creek,muskogee,mus,
+"Creoles and pidgins (Other)","créoles et pidgins divers",crp,
+"Creoles and pidgins, English-based (Other)","créoles et pidgins anglais, autres",cpe,
+"Creoles and pidgins, French-based (Other)","créoles et pidgins français, autres",cpf,
+"Creoles and pidgins, Portuguese-based (Other)","créoles et pidgins portugais, autres",cpp,
+"Crimean Tatar; Crimean Turkish","tatar de Crimé",crh,
+"Crimean Turkish; Crimean Tatar","tatar de Crimé",crh,
+Croatian,croate,scr/hrv,hr
+"Cushitic (Other)","couchitiques, autres langues",cus,
+Czech,tchèque,cze/ces,cs
+Dakota,dakota,dak,
+Danish,danois,dan,da
+Dargwa,dargwa,dar,
+Dayak,dayak,day,
+Delaware,delaware,del,
+Dinka,dinka,din,
+Divehi,maldivien,div,dv
+Dogri,dogri,doi,
+Dogrib,dogrib,dgr,
+"Dravidian (Other)","dravidiennes, autres langues",dra,
+Duala,douala,dua,
+"Dutch; Flemish","néerlandais; flamand",dut/nld,nl
+"Dutch, Middle (ca. 1050-1350)","néerlandais moyen (ca. 1050-1350)",dum,
+Dyula,dioula,dyu,
+Dzongkha,dzongkha,dzo,dz
+Efik,efik,efi,
+"Egyptian (Ancient)",égyptien,egy,
+Ekajuk,ekajuk,eka,
+Elamite,élamite,elx,
+English,anglais,eng,en
+"English, Middle (1100-1500)","anglais moyen (1100-1500)",enm,
+"English, Old (ca.450-1100)","anglo-saxon (ca.450-1100)",ang,
+Erzya,erza,myv,
+Esperanto,espéranto,epo,eo
+Estonian,estonien,est,et
+Ewe,éwé,ewe,ee
+Ewondo,éwondo,ewo,
+Fang,fang,fan,
+Fanti,fanti,fat,
+Faroese,féroïen,fao,fo
+Fijian,fidjien,fij,fj
+Finnish,finnois,fin,fi
+"Finno-Ugrian (Other)","finno-ougriennes, autres langues",fiu,
+"Flemish; Dutch","flamand; néerlandais",dut/nld,nl
+Fon,fon,fon,
+French,français,fre/fra,fr
+"French, Middle (ca.1400-1600)","français moyen (1400-1600)",frm,
+"French, Old (842-ca.1400)","français ancien (842-ca.1400)",fro,
+Frisian,frison,fry,fy
+Friulian,frioulan,fur,
+Fulah,peul,ful,ff
+"Gaelic; Scottish Gaelic","gaélique; gaélique écossais",gla,gd
+Gallegan,galicien,glg,gl
+Ganda,ganda,lug,lg
+Gayo,gayo,gay,
+Gbaya,gbaya,gba,
+Geez,guèze,gez,
+Georgian,géorgien,geo/kat,ka
+German,allemand,ger/deu,de
+"German, Low; Saxon, Low; Low German; Low Saxon","allemand, bas; saxon, bas; bas allemand; bas saxon",nds,
+"German, Middle High (ca.1050-1500)","allemand, moyen haut (ca. 1050-1500)",gmh,
+"German, Old High (ca.750-1050)","allemand, vieux haut (ca. 750-1050)",goh,
+"Germanic (Other)","germaniques, autres langues",gem,
+"Gikuyu; Kikuyu",kikuyu,kik,ki
+Gilbertese,kiribati,gil,
+Gondi,gond,gon,
+Gorontalo,gorontalo,gor,
+Gothic,gothique,got,
+Grebo,grebo,grb,
+"Greek, Ancient (to 1453)","grec ancien (jusqu'à 1453)",grc,
+"Greek, Modern (1453-)","grec moderne (après 1453)",gre/ell,el
+"Greenlandic; Kalaallisut",groenlandais,kal,kl
+Guarani,guarani,grn,gn
+Gujarati,goudjrati,guj,gu
+Gwich´in,gwich´in,gwi,
+Haida,haida,hai,
+"Haitian; Haitian Creole","haïtien; créole haïtien",hat,ht
+"Haitian Creole; Haitian","créole haïtien; haïtien",hat,ht
+Hausa,haoussa,hau,ha
+Hawaiian,hawaïen,haw,
+Hebrew,hébreu,heb,he
+Herero,herero,her,hz
+Hiligaynon,hiligaynon,hil,
+Himachali,himachali,him,
+Hindi,hindi,hin,hi
+"Hiri Motu","hiri motu",hmo,ho
+Hittite,hittite,hit,
+Hmong,hmong,hmn,
+Hungarian,hongrois,hun,hu
+Hupa,hupa,hup,
+Icelandic,islandais,ice/isl,is
+Ido,ido,ido,io
+Igbo,igbo,ibo,ig
+Ijo,ijo,ijo,
+Iloko,ilocano,ilo,
+"Inari Sami","sami d'Inari",smn,
+"Indic (Other)","indo-aryennes, autres langues",inc,
+"Indo-European (Other)","indo-européennes, autres langues",ine,
+Indonesian,indonésien,ind,id
+Ingush,ingouche,inh,
+"Interlingua (International Auxiliary Language Association)","interlingua (langue auxiliaire internationale)",ina,ia
+Interlingue,interlingue,ile,ie
+Inuktitut,inuktitut,iku,iu
+Inupiaq,inupiaq,ipk,ik
+"Iranian (Other)","iraniennes, autres langues",ira,
+Irish,irlandais,gle,ga
+"Irish, Middle (900-1200)","irlandais moyen (900-1200)",mga,
+"Irish, Old (to 900)","irlandais ancien (jusqu'à 900)",sga,
+"Iroquoian languages","iroquoises, langues (famille)",iro,
+Italian,italien,ita,it
+Japanese,japonais,jpn,ja
+Javanese,javanais,jav,jv
+Judeo-Arabic,judéo-arabe,jrb,
+Judeo-Persian,judéo-persan,jpr,
+Kabyle,kabyle,kab,
+Kachin,kachin,kac,
+"Kalaallisut; Greenlandic",groenlandais,kal,kl
+Kalmyk,kalmouk,xal,
+Kamba,kamba,kam,
+Kannada,kannada,kan,kn
+Kanuri,kanouri,kau,kr
+Karachay-Balkar,"karatchaï balkar",krc,
+Kara-Kalpak,karakalpak,kaa,
+Karen,karen,kar,
+Kashmiri,kashmiri,kas,ks
+Kashubian,kachoube,csb,
+Kawi,kawi,kaw,
+Kazakh,kazakh,kaz,kk
+Khasi,khasi,kha,
+Khmer,khmer,khm,km
+"Khoisan (Other)","khoisan, autres langues",khi,
+Khotanese,khotanais,kho,
+"Kikuyu; Gikuyu",kikuyu,kik,ki
+Kimbundu,kimbundu,kmb,
+Kinyarwanda,rwanda,kin,rw
+Kirghiz,kirghize,kir,ky
+"Klingon; tlhlngan-Hol",klingon,tlh,
+Komi,komi,kom,kv
+Kongo,kongo,kon,kg
+Konkani,konkani,kok,
+Korean,coréen,kor,ko
+Kosraean,kosrae,kos,
+Kpelle,kpellé,kpe,
+Kru,krou,kro,
+"Kuanyama; Kwanyama","kuanyama; kwanyama",kua,kj
+Kumyk,koumyk,kum,
+Kurdish,kurde,kur,ku
+Kurukh,kurukh,kru,
+Kutenai,kutenai,kut,
+"Kwanyama, Kuanyama","kwanyama; kuanyama",kua,kj
+Ladino,judéo-espagnol,lad,
+Lahnda,lahnda,lah,
+Lamba,lamba,lam,
+Lao,lao,lao,lo
+Latin,latin,lat,la
+Latvian,letton,lav,lv
+"Letzeburgesch; Luxembourgish",luxembourgeois,ltz,lb
+Lezghian,lezghien,lez,
+"Limburgan; Limburger; Limburgish",limbourgeois,lim,li
+"Limburger; Limburgan; Limburgish;",limbourgeois,lim,li
+"Limburgish; Limburger; Limburgan",limbourgeois,lim,li
+Lingala,lingala,lin,ln
+Lithuanian,lituanien,lit,lt
+Lojban,lojban,jbo,
+"Low German; Low Saxon; German, Low; Saxon, Low","bas allemand; bas saxon; allemand, bas; saxon, bas",nds,
+"Low Saxon; Low German; Saxon, Low; German, Low","bas saxon; bas allemand; saxon, bas; allemand, bas",nds,
+"Lower Sorbian",bas-sorabe,dsb,
+Lozi,lozi,loz,
+Luba-Katanga,luba-katanga,lub,lu
+Luba-Lulua,luba-lulua,lua,
+Luiseno,luiseno,lui,
+"Lule Sami","sami de Lule",smj,
+Lunda,lunda,lun,
+"Luo (Kenya and Tanzania)","luo (Kenya et Tanzanie)",luo,
+Lushai,lushai,lus,
+"Luxembourgish; Letzeburgesch",luxembourgeois,ltz,lb
+Macedonian,macédonien,mac/mkd,mk
+Madurese,madourais,mad,
+Magahi,magahi,mag,
+Maithili,maithili,mai,
+Makasar,makassar,mak,
+Malagasy,malgache,mlg,mg
+Malay,malais,may/msa,ms
+Malayalam,malayalam,mal,ml
+Maltese,maltais,mlt,mt
+Manchu,mandchou,mnc,
+Mandar,mandar,mdr,
+Mandingo,mandingue,man,
+Manipuri,manipuri,mni,
+"Manobo languages","manobo, langues",mno,
+Manx,"manx; mannois",glv,gv
+Maori,maori,mao/mri,mi
+Marathi,marathe,mar,mr
+Mari,mari,chm,
+Marshallese,marshall,mah,mh
+Marwari,marvari,mwr,
+Masai,massaï,mas,
+"Mayan languages","maya, langues",myn,
+Mende,mendé,men,
+Micmac,micmac,mic,
+Minangkabau,minangkabau,min,
+"Miscellaneous languages","diverses, langues",mis,
+Mohawk,mohawk,moh,
+Moksha,moksa,mdf,
+Moldavian,moldave,mol,mo
+"Mon-Khmer (Other)","môn-khmer, autres langues",mkh,
+Mongo,mongo,lol,
+Mongolian,mongol,mon,mn
+Mossi,moré,mos,
+"Multiple languages",multilingue,mul,
+"Munda languages","mounda, langues",mun,
+Nahuatl,nahuatl,nah,
+Nauru,nauruan,nau,na
+"Navaho, Navajo",navaho,nav,nv
+"Navajo; Navaho",navaho,nav,nv
+"Ndebele, North","ndébélé du Nord",nde,nd
+"Ndebele, South","ndébélé du Sud",nbl,nr
+Ndonga,ndonga,ndo,ng
+Neapolitan,napolitain,nap,
+"Nepal Bhasa ; Newari","nepal bhasa ; newari",new,
+Nepali,népalais,nep,ne
+"Newari; Nepal Bhasa","newari; nepal bhasa",new,
+Nias,nias,nia,
+"Niger-Kordofanian (Other)","nigéro-congolaises, autres langues",nic,
+"Nilo-Saharan (Other)","nilo-sahariennes, autres langues",ssa,
+Niuean,niué,niu,
+Nogai,"nogaï; nogay",nog,
+"Norse, Old","norrois, vieux",non,
+"North American Indian (Other)","indiennes d'Amérique du Nord, autres langues",nai,
+"Northern Sami","sami du Nord",sme,se
+"North Ndebele","ndébélé du Nord",nde,nd
+Norwegian,norvégien,nor,no
+"Norwegian Bokmål; Bokmål, Norwegian","norvégien bokmål; bokmål, norvégien",nob,nb
+"Norwegian Nynorsk; Nynorsk, Norwegian","norvégien nynorsk; nynorsk, norvégien",nno,nn
+"Nubian languages","nubiennes, langues",nub,
+Nyamwezi,nyamwezi,nym,
+"Nyanja; Chichewa; Chewa","nyanja; chichewa; chewa",nya,ny
+Nyankole,nyankolé,nyn,
+"Nynorsk, Norwegian; Norwegian Nynorsk","nynorsk, norvégien; norvégien nynorsk",nno,nn
+Nyoro,nyoro,nyo,
+Nzima,nzema,nzi,
+"Occitan (post 1500); Provençal","occitan (après 1500); provençal",oci,oc
+Ojibwa,ojibwa,oji,oj
+"Old Bulgarian; Old Slavonic; Church Slavonic; Church Slavic; Old Church Slavonic","vieux bulgare; vieux slave; slavon liturgique; slavon d'église",chu,cu
+"Old Church Slavonic; Old Slavonic; Church Slavonic; Old Bulgarian; Church Slavic","vieux slave; slavon liturgique; vieux bulgare; slavon d'église",chu,cu
+"Old Newari; Classical Newari; Classical Nepal Bhasa","newari classique",nwc,
+"Old Slavonic; Church Slavonic; Old Bulgarian; Church Slavic; Old Church Slavonic","vieux slave; slavon liturgique; vieux bulgare; slavon d'église",chu,cu
+Oriya,oriya,ori,or
+Oromo,galla,orm,om
+Osage,osage,osa,
+"Ossetian; Ossetic",ossète,oss,os
+"Ossetic; Ossetian",ossète,oss,os
+"Otomian languages","otomangue, langues",oto,
+Pahlavi,pahlavi,pal,
+Palauan,palau,pau,
+Pali,pali,pli,pi
+Pampanga,pampangan,pam,
+Pangasinan,pangasinan,pag,
+"Panjabi; Punjabi",pendjabi,pan,pa
+Papiamento,papiamento,pap,
+"Papuan (Other)","papoues, autres langues",paa,
+Persian,persan,per/fas,fa
+"Persian, Old (ca.600-400 B.C.)","perse, vieux (ca. 600-400 av. J.-C.)",peo,
+"Philippine (Other)","philippines, autres langues",phi,
+Phoenician,phénicien,phn,
+Pohnpeian,pohnpei,pon,
+Polish,polonais,pol,pl
+Portuguese,portugais,por,pt
+"Prakrit languages",prâkrit,pra,
+"Provençal; Occitan (post 1500)","provençal; occitan (après 1500)",oci,oc
+"Provençal, Old (to 1500)","provençal ancien (jusqu'à 1500)",pro,
+"Punjabi; Panjabi",pendjabi,pan,pa
+Pushto,pachto,pus,ps
+Rajasthani,rajasthani,raj,
+Rapanui,rapanui,rap,
+Rarotongan,rarotonga,rar,
+"Reserved for local use","réservée à l'usage local",qaa-qtz,
+"Romance (Other)","romanes, autres langues",roa,
+Romanian,roumain,rum/ron,ro
+Romany,tsigane,rom,
+Rundi,rundi,run,rn
+Russian,russe,rus,ru
+"Salishan languages","salish, langues",sal,
+"Samaritan Aramaic",samaritain,sam,
+"Sami languages (Other)","sami, autres langues",smi,
+Samoan,samoan,smo,sm
+Sandawe,sandawe,sad,
+Sango,sango,sag,sg
+Sanskrit,sanskrit,san,sa
+Santali,santal,sat,
+Sardinian,sarde,srd,sc
+Sasak,sasak,sas,
+"Saxon, Low; German, Low; Low Saxon; Low German","saxon, bas; allemand, bas; bas saxon; bas allemand",nds,
+Scots,écossais,sco,
+"Scottish Gaelic; Gaelic","gaélique écossais; gaélique",gla,gd
+Selkup,selkoupe,sel,
+"Semitic (Other)","sémitiques, autres langues",sem,
+Serbian,serbe,scc/srp,sr
+Serer,sérère,srr,
+Shan,chan,shn,
+Shona,shona,sna,sn
+"Sichuan Yi","yi de Sichuan",iii,ii
+Sidamo,sidamo,sid,
+"Sign languages","langues des signes",sgn,
+Siksika,blackfoot,bla,
+Sindhi,sindhi,snd,sd
+Sinhalese,singhalais,sin,si
+"Sino-Tibetan (Other)","sino-tibétaines, autres langues",sit,
+"Siouan languages","sioux, langues",sio,
+"Skolt Sami","sami skolt",sms,
+"Slave (Athapascan)","esclave (athapascan)",den,
+"Slavic (Other)","slaves, autres langues",sla,
+Slovak,slovaque,slo/slk,sk
+Slovenian,slovène,slv,sl
+Sogdian,sogdien,sog,
+Somali,somali,som,so
+Songhai,songhai,son,
+Soninke,soninké,snk,
+"Sorbian languages","sorabes, langues",wen,
+"Sotho, Northern","sotho du Nord",nso,
+"Sotho, Southern","sotho du Sud",sot,st
+"South American Indian (Other)","indiennes d'Amérique du Sud, autres langues",sai,
+"Southern Sami","sami du Sud",sma,
+"South Ndebele","ndébélé du Sud",nbl,nr
+"Spanish; Castilian","espagnol; castillan",spa,es
+Sukuma,sukuma,suk,
+Sumerian,sumérien,sux,
+Sundanese,soundanais,sun,su
+Susu,soussou,sus,
+Swahili,swahili,swa,sw
+Swati,swati,ssw,ss
+Swedish,suédois,swe,sv
+Syriac,syriaque,syr,
+Tagalog,tagalog,tgl,tl
+Tahitian,tahitien,tah,ty
+"Tai (Other)","thaïes, autres langues",tai,
+Tajik,tadjik,tgk,tg
+Tamashek,tamacheq,tmh,
+Tamil,tamoul,tam,ta
+Tatar,tatar,tat,tt
+Telugu,télougou,tel,te
+Tereno,tereno,ter,
+Tetum,tetum,tet,
+Thai,thaï,tha,th
+Tibetan,tibétain,tib/bod,bo
+Tigre,tigré,tig,
+Tigrinya,tigrigna,tir,ti
+Timne,temne,tem,
+Tiv,tiv,tiv,
+"tlhlngan-Hol; Klingon",klingon,tlh,
+Tlingit,tlingit,tli,
+"Tok Pisin","tok pisin",tpi,
+Tokelau,tokelau,tkl,
+"Tonga (Nyasa)","tonga (Nyasa)",tog,
+"Tonga (Tonga Islands)","tongan (ÃŽles Tonga)",ton,to
+Tsimshian,tsimshian,tsi,
+Tsonga,tsonga,tso,ts
+Tswana,tswana,tsn,tn
+Tumbuka,tumbuka,tum,
+"Tupi languages","tupi, langues",tup,
+Turkish,turc,tur,tr
+"Turkish, Ottoman (1500-1928)","turc ottoman (1500-1928)",ota,
+Turkmen,turkmène,tuk,tk
+Tuvalu,tuvalu,tvl,
+Tuvinian,touva,tyv,
+Twi,twi,twi,tw
+Udmurt,oudmourte,udm,
+Ugaritic,ougaritique,uga,
+Uighur,ouïgour,uig,ug
+Ukrainian,ukrainien,ukr,uk
+Umbundu,umbundu,umb,
+Undetermined,indéterminée,und,
+"Upper Sorbian",haut-sorabe,hsb,
+Urdu,ourdou,urd,ur
+Uzbek,ouszbek,uzb,uz
+Vai,vaï,vai,
+"Valencian; Catalan","valencien; catalan",cat,ca
+Venda,venda,ven,ve
+Vietnamese,vietnamien,vie,vi
+Volapük,volapük,vol,vo
+Votic,vote,vot,
+"Wakashan languages","wakashennes, langues",wak,
+Walamo,walamo,wal,
+Walloon,wallon,wln,wa
+Waray,waray,war,
+Washo,washo,was,
+Welsh,gallois,wel/cym,cy
+Wolof,wolof,wol,wo
+Xhosa,xhosa,xho,xh
+Yakut,iakoute,sah,
+Yao,yao,yao,
+Yapese,yapois,yap,
+Yiddish,yiddish,yid,yi
+Yoruba,yoruba,yor,yo
+"Yupik languages","yupik, langues",ypk,
+Zande,zandé,znd,
+Zapotec,zapotèque,zap,
+Zenaga,zenaga,zen,
+"Zhuang; Chuang","zhuang; chuang",zha,za
+Zulu,zoulou,zul,zu
+Zuni,zuni,zun,
diff --git a/xorg-server/xkeyboard-config/geometry/README b/xorg-server/xkeyboard-config/geometry/README
index 7a238e55a..5f4dcc72c 100644
--- a/xorg-server/xkeyboard-config/geometry/README
+++ b/xorg-server/xkeyboard-config/geometry/README
@@ -1,6 +1,6 @@
-The geometry component of a keyboard mapping specifies primarily the geometry of
-the keyboard. It contains the geometry symbolic name and the keyboard geometry
-description. The geometry component might also contain aliases for some keys or
-symbolic names for some indicators and might affect the set of indicators that
-are physically present. Key aliases defined in the geometry component of a
-keyboard mapping override those defined in the keycodes component.
+The geometry component of a keyboard mapping specifies primarily the geometry of
+the keyboard. It contains the geometry symbolic name and the keyboard geometry
+description. The geometry component might also contain aliases for some keys or
+symbolic names for some indicators and might affect the set of indicators that
+are physically present. Key aliases defined in the geometry component of a
+keyboard mapping override those defined in the keycodes component.
diff --git a/xorg-server/xkeyboard-config/geometry/digital_vndr/Makefile.am b/xorg-server/xkeyboard-config/geometry/digital_vndr/Makefile.am
index 94464f8cb..821c0ccf4 100644
--- a/xorg-server/xkeyboard-config/geometry/digital_vndr/Makefile.am
+++ b/xorg-server/xkeyboard-config/geometry/digital_vndr/Makefile.am
@@ -1,4 +1,4 @@
-geomdir = $(xkb_base)/geometry/digital_vndr
-
-dist_geom_DATA = \
-lk pc unix
+geomdir = $(xkb_base)/geometry/digital_vndr
+
+dist_geom_DATA = \
+lk pc unix
diff --git a/xorg-server/xkeyboard-config/geometry/nokia b/xorg-server/xkeyboard-config/geometry/nokia
index 789f6523b..5132840ca 100644
--- a/xorg-server/xkeyboard-config/geometry/nokia
+++ b/xorg-server/xkeyboard-config/geometry/nokia
@@ -1,53 +1,53 @@
-// Zoomed 3x because of text size
-
-default xkb_geometry "nokiarx51" {
-
- description= "Nokia RX-51";
- width= 273; // 13x6mm + 2x1.5mm border + 2x5mm border
- height= 54; // 3x5mm + 2x1.5mm border
-
- shape.cornerRadius= 1.5;
- shape "NORM" { { [18,15] } };
- shape "SPCE" { { [36,15] } };
- shape "FRAME" { cornerRadius= 2.5, { [243,54] } };
-
- solid "FRAME" {
- shape= "FRAME";
- color= "white";
- top= 0;
- left= 15;
- };
-
- section.left= 15;
- row.left= 4.5;
- key.shape= "NORM";
- key.gap= 0;
- section "Keys" {
- top= 0;
- row {
- top= 4.5;
- keys { { <LCTL>, "NORM", color="grey20" },
- <AD01>, <AD02>, <AD03>, <AD04>, <AD05>,
- <AD06>, <AD07>, <AD08>, <AD09>, <AD10>, <AB08>,
- { <BKSP>, "NORM", color="grey20" }
- };
- };
- row {
- top= 19.5;
- keys { { <RALT>, "NORM", color="grey20" },
- <AC01>, <AC02>, <AC03>, <AC04>, <AC05>,
- <AC06>, <AC07>, <AC08>, <AC09>, <AB09>, <UP>,
- { <RTRN>, "NORM", color="grey20" }
- };
- };
- row {
- top= 34.5;
- keys { { <LFSH>, "NORM", color="grey20" },
- <AB01>, <AB02>, <AB03>, <AB04>, <AB05>, <AB06>, <AB07>,
- { <SPCE>, "SPCE", color="white" },
- <LEFT>, <DOWN>, <RGHT>
- };
- };
- }; // End of "Keys" section
-
-}; // End of "rx51" geometry
+// Zoomed 3x because of text size
+
+default xkb_geometry "nokiarx51" {
+
+ description= "Nokia RX-51";
+ width= 273; // 13x6mm + 2x1.5mm border + 2x5mm border
+ height= 54; // 3x5mm + 2x1.5mm border
+
+ shape.cornerRadius= 1.5;
+ shape "NORM" { { [18,15] } };
+ shape "SPCE" { { [36,15] } };
+ shape "FRAME" { cornerRadius= 2.5, { [243,54] } };
+
+ solid "FRAME" {
+ shape= "FRAME";
+ color= "white";
+ top= 0;
+ left= 15;
+ };
+
+ section.left= 15;
+ row.left= 4.5;
+ key.shape= "NORM";
+ key.gap= 0;
+ section "Keys" {
+ top= 0;
+ row {
+ top= 4.5;
+ keys { { <LCTL>, "NORM", color="grey20" },
+ <AD01>, <AD02>, <AD03>, <AD04>, <AD05>,
+ <AD06>, <AD07>, <AD08>, <AD09>, <AD10>, <AB08>,
+ { <BKSP>, "NORM", color="grey20" }
+ };
+ };
+ row {
+ top= 19.5;
+ keys { { <RALT>, "NORM", color="grey20" },
+ <AC01>, <AC02>, <AC03>, <AC04>, <AC05>,
+ <AC06>, <AC07>, <AC08>, <AC09>, <AB09>, <UP>,
+ { <RTRN>, "NORM", color="grey20" }
+ };
+ };
+ row {
+ top= 34.5;
+ keys { { <LFSH>, "NORM", color="grey20" },
+ <AB01>, <AB02>, <AB03>, <AB04>, <AB05>, <AB06>, <AB07>,
+ { <SPCE>, "SPCE", color="white" },
+ <LEFT>, <DOWN>, <RGHT>
+ };
+ };
+ }; // End of "Keys" section
+
+}; // End of "rx51" geometry
diff --git a/xorg-server/xkeyboard-config/geometry/sgi_vndr/Makefile.am b/xorg-server/xkeyboard-config/geometry/sgi_vndr/Makefile.am
index 11911db3c..5c76e4b4c 100644
--- a/xorg-server/xkeyboard-config/geometry/sgi_vndr/Makefile.am
+++ b/xorg-server/xkeyboard-config/geometry/sgi_vndr/Makefile.am
@@ -1,4 +1,4 @@
-geomdir = $(xkb_base)/geometry/sgi_vndr
-
-dist_geom_DATA = \
-indigo indy O2
+geomdir = $(xkb_base)/geometry/sgi_vndr
+
+dist_geom_DATA = \
+indigo indy O2
diff --git a/xorg-server/xkeyboard-config/geometry/typematrix b/xorg-server/xkeyboard-config/geometry/typematrix
index 65afd5f7d..d86976f8f 100644
--- a/xorg-server/xkeyboard-config/geometry/typematrix
+++ b/xorg-server/xkeyboard-config/geometry/typematrix
@@ -1,745 +1,745 @@
-// -*- indent-tabs-mode: nil -*-
-
-// Created by Frédéric Boiteux <fboiteux (at) free (dot) fr>
-// and Gildas Cotomale <gildas (dot) cotomale (at) gmail (dot) com>
-
-// Note : the special/multimedia keys (Calc, WWW, Desktop…) have a keycode
-// <I[XX]>, found in definition file /usr/share/X11/xkb/keycodes/evdev.
-// Fn = <I120>;
-// Calc = <I148>;
-// WWW = <I158>;
-// CycleWindows = <I162>;
-// Mail = <I163>;
-// PlayPause = <I172>;
-// Desktop = <I243>;
-
-
-xkb_geometry "tm2020" {
- description = "TypeMatrix EZ-Reach 2020";
-
- // Keyboard total size :
- width = 308;
- height = 152;
- // background / foreground colours :
- baseColor = "white";
- labelColor = "black";
-
- // Key shapes : base key = 16 mm each side
- shape "NORM" { cornerRadius=1, { [16, 16] }, { [1, 1], [15, 15] }};
- shape "ALPL" { cornerRadius=1, { [24.25, 16] }, { [1, 1], [23, 15] }};
- shape "DHAL" { cornerRadius=1, { [24.25, 32.5] }, { [1, 1], [23, 31.5] }};
- shape "FUNC" { cornerRadius=1, { [16, 12] }, { [2.5, 0], [13.5, 10] }};
- shape "FUNL" { cornerRadius=1, { [24.25, 12] }, { [2.5, 0], [21.5, 10] }};
- shape "SPCE" { cornerRadius=1, { [57, 26] }, { [2.5, 1], [54.5, 24] }};
- shape "DBLA" { cornerRadius=1, { [32.5, 16] }, { [1, 1], [31, 15] }};
- shape "LED" { cornerRadius=2, { [4, 4] }};
- shape "DECO" { cornerRadius=1, { [3, 18] }};
-
- // Function keys row
- section "Function" {
- left = 4;
- top = 24;
- key.gap = 0.5;
- key.color = "grey10";
- key.shape = "FUNC";
- row {
- keys { { <ESC>, "FUNL" },
- <FK01>, <FK02>, <FK03>, <FK04>, <FK05> };
- key.color = "grey20";
- keys { { <NMLK>, "FUNL" } };
- };
- row {
- left = 150;
- key.color = "red";
- keys { { <DELE>, "FUNL" } };
- key.color = "grey10";
- keys { <FK06>, <FK07>, <FK08>, <FK09>, <FK10>, <FK11>,
- { <FK12>, "FUNL" } };
- };
- };
-
- // Alpha-numeric keys rows
- section "Alpha" {
- left = 4;
- top = 36.5;
- key.gap = 0.5;
- key.color = "grey10";
- key.shape = "NORM";
- row {
- top = 0;
- keys { { <TLDE>, "ALPL" },
- <AE01>, <AE02>, <AE03>, <AE04>, <AE05>,
- { <BKSP>, "DHAL" } };
- };
- row {
- top = 16.5;
- keys { { <TAB>, "ALPL" },
- <AD01>, <AD02>, <AD03>, <AD04>, <AD05> };
- };
- row {
- top = 33;
- keys { { <LFSH>, "DHAL" },
- <AC01>, <AC02>, <AC03>, <AC04>, <AC05>,
- { <TAB>, "DHAL" } };
- };
- row {
- top = 49.5;
- left = 24.5;
- keys { <AB01>, <AB02>, <AB03>, <AB04>, <AB05> };
- };
- row {
- top = 0;
- left = 150;
- keys { { <BKSP>, "DHAL" },
- <AE06>, <AE07>, <AE08> };
- key.color = "grey20";
- keys { <AE09>, <AE10>, <AE11>, { <AE12>, "ALPL" } };
- };
- row {
- top = 16.5;
- left = 174.5;
- keys { <AD06>, <AD07>, <AD08> };
- key.color = "grey20";
- keys { <AD09>, <AD10>, <AD11>, { <AD12>, "ALPL" } };
- };
- row {
- top = 33;
- left = 150;
- keys { { <RTRN>, "DHAL" },
- <AC06>, <AC07>, <AC08> };
- key.color = "grey20";
- keys { <AC09>, <AC10>, <AC11>, { <RTSH>, "DHAL" } };
- };
- row {
- top = 49.5;
- left = 174.5;
- keys { <AB06>, <AB07>, <AB08> };
- key.color = "grey20";
- keys { <AB09>, <AB10>, <BKSL> };
- };
- };
-
- // Control keys rows
- section "Control" {
- left = 4;
- top = 102.5;
- key.gap = 0.5;
- key.color = "grey10";
- key.shape = "ALPL";
- row {
- top = 0;
- keys { <LCTL>, <LALT>, <CAPS> };
- keys { { <SPCE>, "SPCE"} };
- };
- row {
- top = 16.5;
- keys { <I120>, <LWIN>, <MENU> };
- };
- row {
- top = 0;
- left = 150;
- key.shape = "NORM";
- keys { { <SPCE>, "SPCE"}, <RALT> };
- key.color = "grey20";
- keys { <RCTL>, <UP>, <I162>, { <KPEN>, "DHAL" } };
- };
- row {
- top = 16.5;
- left = 207.5;
- key.shape = "NORM";
- key.color = "grey20";
- keys { { <LEFT>, "DBLA" }, <DOWN>, <RGHT> };
- };
- };
-
- // Diods
- indicator.top = 12;
- indicator.onColor = "green";
- indicator.offColor = "grey10";
- indicator.shape = "LED";
- indicator "Num Lock" { left = 252; };
- indicator "Caps Lock" { left = 266; };
- indicator "Misc" { left = 280; };
- text.top= 5;
- text.color= "black";
- text "NumLockLabel" { left= 252; text="1"; };
- text "CapsLockLabel" { left= 266; text="A"; };
- text "MiscLabel" { left= 280; text="D"; };
-
- text "Logo" { left = 29; top = 10; text="TypeMatrixâ„¢"; };
-
- // other decorations : drawings
- solid "rainure1" { shape = "DECO"; top = 1; left = 110; color = "grey10";};
- solid "rainure2" { shape = "DECO"; top = 1; left = 115; color = "grey10";};
- solid "rainure3" { shape = "DECO"; top = 1; left = 120; color = "grey10";};
- solid "rainure4" { shape = "DECO"; top = 1; left = 125; color = "grey10";};
- solid "rainure5" { shape = "DECO"; top = 1; left = 130; color = "grey10";};
- solid "rainure6" { shape = "DECO"; top = 1; left = 135; color = "grey10";};
- solid "rainure7" { shape = "DECO"; top = 1; left = 140; color = "grey10";};
- solid "rainure8" { shape = "DECO"; top = 1; left = 145; color = "grey10";};
- solid "rainure9" { shape = "DECO"; top = 1; left = 150; color = "grey10";};
- solid "rainure10" { shape = "DECO"; top = 1; left = 155; color = "grey10";};
- solid "rainure11" { shape = "DECO"; top = 1; left = 160; color = "grey10";};
- solid "rainure12" { shape = "DECO"; top = 1; left = 165; color = "grey10";};
- solid "rainure13" { shape = "DECO"; top = 1; left = 170; color = "grey10";};
-}; // geometry tm2020
-
-
-xkb_geometry "tm2030_shape" {
- // Keyboard total size
- width = 320;
- height = 130;
- // background / foreground colours :
- baseColor = "white";
- labelColor = "black";
-
- // Key shapes : base key = 20 mm each side
- shape "NORM" { cornerRadius=1, { [18, 18] }, { [1.5, 1.5], [16.5, 14] } };
- shape "FUNC" { cornerRadius=1, { [18, 12] }, { [2.5, 0], [15.5, 10] } };
- shape "LFSH" { cornerRadius=1, { [18, 36.5] }, { [2.5, 0], [15.5, 30] } };
- shape "ALT1" { cornerRadius=1, { [27.5, 18] }, { [2.5, 0], [23.5, 14] } };
- shape "BKSP" { cornerRadius=1, { [18, 30.5] }, { [1.5, 1.5], [16.5, 29] } };
- shape "SPCE" { cornerRadius=1, { [92, 25] }, { [1.5, 1.5], [90.5, 22] } };
- shape "LED" { cornerRadius=2, { [4, 4] } };
- shape "PAN1" { cornerRadius=1, { [27, 126.5] } };
- shape "PAN2" { cornerRadius=1, { [92, 13] } };
-
- // other decorations : panels
- solid "panneau1" {
- shape = "PAN1";
- left = 0;
- top = 0;
- color = "grey40";
- };
- solid "panneau2" {
- shape = "PAN2";
- left = 101.5;
- top = 113.5;
- color = "grey40";
- };
-
- // Diods (Indicators) : they have to be put after panels, either the panels
- // overwrites them.
- indicator.left = 6;
- indicator.onColor = "green";
- indicator.offColor = "grey10";
- indicator.shape = "LED";
-
- indicator "Num Lock" { top = 11 ; };
- indicator "Caps Lock" { top = 27.5; };
- indicator "Scroll Lock" { top = 44 ; };
-
- text.left = 12;
- text.color = "black";
- text "NumLockLabel" { top = 11; text="num"; };
- text "CapsLockLabel" { top = 27.5; text="caps"; };
- text "SrollLockLabel" { top = 44; text="scroll"; };
-}; // geometry tm2030_shape
-
-xkb_geometry "tm2030_MiscDiod_dvk" {
- text "ModeLabel" { left = 12; top = 58; color = "black"; text="Dvorak"; };
-}; // geometry tm2030_MiscDiod_dvk
-
-xkb_geometry "tm2030_MiscDiod_102" {
- text "ModeLabel" { left = 12; top = 58; color = "black"; text="102"; };
-}; // geometry tm2030_MiscDiod_102
-
-xkb_geometry "tm2030_MiscDiod_106" {
- text "ModeLabel" { left = 12; top = 58; color = "black"; text="106"; };
-}; // geometry tm2030_MiscDiod_106
-
-xkb_geometry "tm2030_MiscDiod_off" {
- indicator "Misc" { left = 6; top = 60.5; shape = "LED";
- offColor = "grey10"; onColor = "grey10"; };
-}; // geometry tm2030_MiscDiod_off
-
-xkb_geometry "tm2030_MiscDiod_on" {
- indicator "Misc" { left = 6; top = 60.5; shape = "LED";
- offColor = "green"; onColor = "green"; };
-}; // geometry tm2030_MiscDiod_on
-
-
-xkb_geometry "tm2030USB_func" {
- // Function keys rows
- section "Function" {
- left = 27;
- top = 1.5;
- key.gap = 0.5;
- key.color = "grey30";
- key.shape = "FUNC";
- row {
- keys { <ESC>, <FK01>, <FK02>, <FK03>, <FK04>, <FK05> };
- };
- row {
- left = 129.5;
- keys { <FK06>, <FK07>, <FK08>, <FK09>, <FK10>, <FK11>,
- <FK12>, <NMLK> };
- };
- };
-}; // geometry tm2030USB_func
-
-
-xkb_geometry "tm2030USB_alpha" {
- // Alpha-numeric keys rows
- section "Alpha" {
- left = 27;
- top = 14;
- key.gap = 0.5;
- key.color = "grey10";
- key.shape = "NORM";
- row {
- top = 0;
- keys { <TLDE>, <AE01>, <AE02>, <AE03>, <AE04>, <AE05> };
- };
- row {
- top = 18.5;
- keys { <TAB>, <AD01>, <AD02>, <AD03>, <AD04>, <AD05> };
- };
- row {
- top = 37;
- keys { { <LFSH>, "LFSH" }, <AC01>, <AC02>, <AC03>, <AC04>, <AC05> };
- };
- row {
- top = 55.5;
- left = 18.5;
- keys { <AB01>, <AB02>, <AB03>, <AB04>, <AB05> };
- };
-
- row {
- top = 0;
- left = 129.5;
- keys { <AE06>, <AE07>, <AE08>, <AE09>, <AE10>, <AE11>, <AE12>, <I148> };
- };
- row {
- top = 18.5;
- left = 129.5;
- keys { <AD06>, <AD07>, <AD08>, <AD09>, <AD10>, <AD11>, <AD12>, <I163> };
- };
- row {
- top = 37;
- left = 129.5;
- keys { <AC06>, <AC07>, <AC08>, <AC09>, <AC10>, <AC11>, { <RTSH>, "LFSH" }, <CAPS> };
- };
- row {
- top = 55.5;
- left = 129.5;
- keys { <AB06>, <AB07>, <AB08>, <AB09>, <AB10>, <BKSL> };
- };
- row {
- top = 55.5;
- left = 259;
- keys { <I158> };
- };
- row {
- top = 74;
- left = 74;
- keys { { <SPCE>, "SPCE" } };
- };
- };
-}; // geometry tm2030USB_alpha
-
-
-xkb_geometry "tm2030USB_ctrl" {
- // Control keys rows
- section "Control" {
- left = 27;
- top = 0;
- key.gap = 0.5;
- key.color = "grey30";
- key.shape = "NORM";
- row {
- top = 88;
- keys { <LCTL>, <I172>, <MENU>, <I162> };
- };
- row {
- top = 106.5;
- keys { <I120>, { <LWIN>, "ALT1" }, { <LALT>, "ALT1" } };
- };
- row {
- top = 88;
- left = 166.5;
- keys { <I243>, <HOME>, <UP>, <END>, { <RCTL>, "LFSH"}, <PGUP> };
- };
- row {
- top = 106.5;
- left = 166.5;
- keys { <RALT>, <LEFT>, <DOWN>, <RGHT> };
- };
- row {
- top = 106.5;
- left = 259;
- keys { <PGDN> };
- };
- row {
- top = 1;
- left = 111.5;
- vertical = true;
- keys { <DELE>, { <BKSP>, "BKSP" }, { <RTRN>, "LFSH" } };
- };
- };
-}; // geometry tm2030USB_ctrl
-
-
-xkb_geometry "tm2030PS2" {
- include "typematrix(tm2030_shape)"
- include "typematrix(tm2030_MiscDiod_dvk)"
- include "typematrix(tm2030_MiscDiod_off)"
-
- description = "TypeMatrix EZ-Reach 2030 PS2";
-
- // Function keys row
- section "Function" {
- left = 27;
- top = 1.5;
- key.gap = 0.5;
- key.color = "grey10";
- key.shape = "FUNC";
- row {
- key.color = "grey30";
- keys { <ESC> };
- };
- row {
- left = 18.5;
- keys { <FK01>, <FK02>, <FK03>, <FK04> };
- };
- row {
- left = 92.5;
- key.color = "grey30";
- keys { <FK05> };
- };
- row {
- left = 129.5;
- key.color = "grey30";
- keys { <FK06>, <FK07>, <FK08> };
- };
- row {
- left = 185;
- keys { <FK09>, <FK10>, <FK11>, <FK12> };
- };
- row {
- left = 259;
- key.color = "grey30";
- keys { <NMLK> };
- };
- };
-
- // Alpha-numeric keys rows
- section "Alpha" {
- left = 27;
- top = 14;
- key.gap = 0.5;
- key.color = "grey10";
- key.shape = "NORM";
- row {
- top = 0;
- keys { <TLDE>, <AE01>, <AE02>, <AE03>, <AE04>, <AE05> };
- };
- row {
- top = 18.5;
- keys { <TAB>, <AD01>, <AD02>, <AD03>, <AD04>, <AD05> };
- };
- row {
- top = 37;
- keys { { <LFSH>, "LFSH" }, <AC01>, <AC02>, <AC03>, <AC04>, <AC05> };
- };
- row {
- top = 55.5;
- left = 18.5;
- keys { <AB01>, <AB02>, <AB03>, <AB04>, <AB05> };
- };
-
- row {
- top = 0;
- left = 129.5;
- keys { <AE06>, <AE07>, <AE08>, <AE09>, <AE10>, <AE11>, <AE12>, <I120> };
- };
- row {
- top = 18.5;
- left = 129.5;
- keys { <AD06>, <AD07>, <AD08> };
- };
- row {
- top = 18.5;
- left = 185;
- key.color = "grey30";
- keys { <AD09>, <AD10>, <AD11>, <AD12>};
- };
- row {
- top = 18.5;
- left = 259;
- keys { <BKSP> };
- };
- row {
- top = 37;
- left = 129.5;
- keys { <AC06>, <AC07>, <AC08> };
- };
- row {
- top = 37;
- left = 185;
- key.color = "grey30";
- keys { <AC09>, <AC10>, <AC11>, { <RTSH>, "LFSH" },
- {<DELE>, key.color="red"} };
- };
- row {
- top = 55.5;
- left = 129.5;
- keys { <AB06>, <AB07>, <AB08> };
- };
- row {
- top = 55.5;
- left = 185;
- key.color = "grey30";
- keys { <AB09>, <AB10>, <BKSL> };
- };
- row {
- top = 55.5;
- left = 259;
- keys { <INS> };
- };
- row {
- top = 74;
- left = 74;
- keys { { <SPCE>, "SPCE" } };
- };
- }; // end section "Alpha"
-
- // Control keys rows
- section "Control" {
- left = 27;
- top = 0;
- key.gap = 0.5;
- key.color = "grey10";
- key.shape = "NORM";
- row {
- top = 88;
- keys { <I120>, <LWIN>, <MENU>, <I162> };
- };
- row {
- top = 106.5;
- keys { <LCTL>, { <LALT>, "ALT1" }, { <LTSH>, "ALT1" } };
- };
- row {
- top = 88;
- left = 166.5;
- keys { <PGUP> };
- };
- row {
- top = 88;
- left = 185;
- key.color = "grey30";
- keys { <HOME>, <UP>, <END>, { <KPEN>, "LFSH"} };
- };
- row {
- top = 88;
- left = 259;
- keys { <RCTL> };
- };
- row {
- top = 106.5;
- left = 166.5;
- keys { <PGDN> };
- };
- row {
- top = 106.5;
- left = 185;
- key.color = "grey30";
- keys { <LEFT>, <DOWN>, <RGHT> };
- };
- row {
- top = 106.5;
- left = 259;
- keys { <RALT> };
- };
- row {
- top = 1;
- left = 111.5;
- key.color = "grey10";
- vertical = true;
- keys { <CAPS>, { <BKSP>, "BKSP" }, { <RTRN>, "LFSH" } };
- };
- }; // end section "Control"
-}; // geometry tm2030PS2
-
-
-xkb_geometry "tm2030USB" {
- include "typematrix(tm2030_shape)"
- include "typematrix(tm2030_MiscDiod_102)"
- include "typematrix(tm2030_MiscDiod_off)"
-
- description = "TypeMatrix EZ-Reach 2030 USB";
-
- include "typematrix(tm2030USB_func)"
- include "typematrix(tm2030USB_alpha)"
- include "typematrix(tm2030USB_ctrl)"
-}; // geometry tm2030USB
-
-
-// European 102/105 keys mode :
-// Same as the standard keyboard, except for one key, Play becomes LSGT
-xkb_geometry "tm2030USB-102" {
- include "typematrix(tm2030_shape)"
- include "typematrix(tm2030_MiscDiod_102)"
- include "typematrix(tm2030_MiscDiod_on)"
-
- description = "TypeMatrix EZ-Reach 2030 USB (102/105:EU mode)";
-
- include "typematrix(tm2030USB_func)"
- include "typematrix(tm2030USB_alpha)"
-
- // Control keys rows
- section "Control" {
- left = 27;
- top = 0;
- key.gap = 0.5;
- key.color = "grey30";
- key.shape = "NORM";
- row {
- top = 88;
- keys { <LCTL>, <LSGT>, <MENU>, <I162> };
- };
- row {
- top = 106.5;
- keys { <I120>, { <LWIN>, "ALT1" }, { <LALT>, "ALT1" } };
- };
- row {
- top = 88;
- left = 166.5;
- keys { <I243>, <HOME>, <UP>, <END>, { <RCTL>, "LFSH"}, <PGUP> };
- };
- row {
- top = 106.5;
- left = 166.5;
- keys { <RALT>, <LEFT>, <DOWN>, <RGHT> };
- };
- row {
- top = 106.5;
- left = 259;
- keys { <PGDN> };
- };
- row {
- top = 1;
- left = 111.5;
- vertical = true;
- keys { <DELE>, { <BKSP>, "BKSP" }, { <RTRN>, "LFSH" } };
- };
- };
-}; // geometry tm2030USB-102
-
-
-// Japan / Korean 106 keys mode :
-// Same as the standard keyboard, except for following keys :
-// – <TLDE> is replaced by <HZTG>
-// – WWW key becomes <HKTG>
-// — Calc key becomes <AE13>
-// — Mail key becomes <BKSL>, and <BKSL> key becomes <AB11>
-
-// about Controls:
-// NFER/MEHU and XFER/KANJ : TMx keeps LWIN (and RWIN if it happend to exist)
-// HKTG/HIRA : TMx keeps MENU/COMP, but locates this key in alpha section
-// (see upper).
-
-xkb_geometry "tm2030USB-106" {
- include "typematrix(tm2030_shape)"
- include "typematrix(tm2030_MiscDiod_106)"
- include "typematrix(tm2030_MiscDiod_on)"
-
- description = "TypeMatrix EZ-Reach 2030 USB (106:JP mode)";
-
- include "typematrix(tm2030USB_func)"
-
- // Alpha-numeric keys rows
- section "Alpha" {
- left = 27;
- top = 14;
- key.gap = 0.5;
- key.color = "grey10";
- key.shape = "NORM";
- row {
- top = 0;
- keys { <HZTG>, <AE01>, <AE02>, <AE03>, <AE04>, <AE05> };
- };
- row {
- top = 18.5;
- keys { <TAB>, <AD01>, <AD02>, <AD03>, <AD04>, <AD05> };
- };
- row {
- top = 37;
- keys { { <LFSH>, "LFSH" }, <AC01>, <AC02>, <AC03>, <AC04>, <AC05> };
- };
- row {
- top = 55.5;
- left = 18.5;
- keys { <AB01>, <AB02>, <AB03>, <AB04>, <AB05> };
- };
-
- row {
- top = 0;
- left = 129.5;
- keys { <AE06>, <AE07>, <AE08>, <AE09>, <AE10>, <AE11>, <AE12>, <AE13> };
- };
- row {
- top = 18.5;
- left = 129.5;
- keys { <AD06>, <AD07>, <AD08>, <AD09>, <AD10>, <AD11>, <AD12>, <BKSL> };
- };
- row {
- top = 37;
- left = 129.5;
- keys { <AC06>, <AC07>, <AC08>, <AC09>, <AC10>, <AC11>, { <RTSH>, "LFSH" }, <CAPS> };
- };
- row {
- top = 55.5;
- left = 129.5;
- keys { <AB06>, <AB07>, <AB08>, <AB09>, <AB10>, <AB11> };
- };
- row {
- top = 55.5;
- left = 259;
- keys { <HKTG> };
- };
- row {
- top = 74;
- left = 74;
- keys { { <SPCE>, "SPCE" } };
- };
- };
-
- // Control keys rows
- section "Control" {
- left = 27;
- top = 0;
- key.gap = 0.5;
- key.color = "grey30";
- key.shape = "NORM";
- row {
- top = 88;
- keys { <LCTL>, <I172>, <MENU>, <I162> };
- };
- row {
- top = 106.5;
- keys { <I120>, { <LWIN>, "ALT1" }, { <LALT>, "ALT1" } };
- };
- row {
- top = 88;
- left = 166.5;
- keys { <I243>, <HOME>, <UP>, <END>, { <RCTL>, "LFSH"}, <PGUP> };
- };
- row {
- top = 106.5;
- left = 166.5;
- keys { <RALT>, <LEFT>, <DOWN>, <RGHT> };
- };
- row {
- top = 106.5;
- left = 259;
- keys { <PGDN> };
- };
- row {
- top = 1;
- left = 111.5;
- vertical = true;
- keys { <DELE>, { <BKSP>, "BKSP" }, { <RTRN>, "LFSH" } };
- };
- };
-}; // geometry tm2030USB-106
+// -*- indent-tabs-mode: nil -*-
+
+// Created by Frédéric Boiteux <fboiteux (at) free (dot) fr>
+// and Gildas Cotomale <gildas (dot) cotomale (at) gmail (dot) com>
+
+// Note : the special/multimedia keys (Calc, WWW, Desktop…) have a keycode
+// <I[XX]>, found in definition file /usr/share/X11/xkb/keycodes/evdev.
+// Fn = <I120>;
+// Calc = <I148>;
+// WWW = <I158>;
+// CycleWindows = <I162>;
+// Mail = <I163>;
+// PlayPause = <I172>;
+// Desktop = <I243>;
+
+
+xkb_geometry "tm2020" {
+ description = "TypeMatrix EZ-Reach 2020";
+
+ // Keyboard total size :
+ width = 308;
+ height = 152;
+ // background / foreground colours :
+ baseColor = "white";
+ labelColor = "black";
+
+ // Key shapes : base key = 16 mm each side
+ shape "NORM" { cornerRadius=1, { [16, 16] }, { [1, 1], [15, 15] }};
+ shape "ALPL" { cornerRadius=1, { [24.25, 16] }, { [1, 1], [23, 15] }};
+ shape "DHAL" { cornerRadius=1, { [24.25, 32.5] }, { [1, 1], [23, 31.5] }};
+ shape "FUNC" { cornerRadius=1, { [16, 12] }, { [2.5, 0], [13.5, 10] }};
+ shape "FUNL" { cornerRadius=1, { [24.25, 12] }, { [2.5, 0], [21.5, 10] }};
+ shape "SPCE" { cornerRadius=1, { [57, 26] }, { [2.5, 1], [54.5, 24] }};
+ shape "DBLA" { cornerRadius=1, { [32.5, 16] }, { [1, 1], [31, 15] }};
+ shape "LED" { cornerRadius=2, { [4, 4] }};
+ shape "DECO" { cornerRadius=1, { [3, 18] }};
+
+ // Function keys row
+ section "Function" {
+ left = 4;
+ top = 24;
+ key.gap = 0.5;
+ key.color = "grey10";
+ key.shape = "FUNC";
+ row {
+ keys { { <ESC>, "FUNL" },
+ <FK01>, <FK02>, <FK03>, <FK04>, <FK05> };
+ key.color = "grey20";
+ keys { { <NMLK>, "FUNL" } };
+ };
+ row {
+ left = 150;
+ key.color = "red";
+ keys { { <DELE>, "FUNL" } };
+ key.color = "grey10";
+ keys { <FK06>, <FK07>, <FK08>, <FK09>, <FK10>, <FK11>,
+ { <FK12>, "FUNL" } };
+ };
+ };
+
+ // Alpha-numeric keys rows
+ section "Alpha" {
+ left = 4;
+ top = 36.5;
+ key.gap = 0.5;
+ key.color = "grey10";
+ key.shape = "NORM";
+ row {
+ top = 0;
+ keys { { <TLDE>, "ALPL" },
+ <AE01>, <AE02>, <AE03>, <AE04>, <AE05>,
+ { <BKSP>, "DHAL" } };
+ };
+ row {
+ top = 16.5;
+ keys { { <TAB>, "ALPL" },
+ <AD01>, <AD02>, <AD03>, <AD04>, <AD05> };
+ };
+ row {
+ top = 33;
+ keys { { <LFSH>, "DHAL" },
+ <AC01>, <AC02>, <AC03>, <AC04>, <AC05>,
+ { <TAB>, "DHAL" } };
+ };
+ row {
+ top = 49.5;
+ left = 24.5;
+ keys { <AB01>, <AB02>, <AB03>, <AB04>, <AB05> };
+ };
+ row {
+ top = 0;
+ left = 150;
+ keys { { <BKSP>, "DHAL" },
+ <AE06>, <AE07>, <AE08> };
+ key.color = "grey20";
+ keys { <AE09>, <AE10>, <AE11>, { <AE12>, "ALPL" } };
+ };
+ row {
+ top = 16.5;
+ left = 174.5;
+ keys { <AD06>, <AD07>, <AD08> };
+ key.color = "grey20";
+ keys { <AD09>, <AD10>, <AD11>, { <AD12>, "ALPL" } };
+ };
+ row {
+ top = 33;
+ left = 150;
+ keys { { <RTRN>, "DHAL" },
+ <AC06>, <AC07>, <AC08> };
+ key.color = "grey20";
+ keys { <AC09>, <AC10>, <AC11>, { <RTSH>, "DHAL" } };
+ };
+ row {
+ top = 49.5;
+ left = 174.5;
+ keys { <AB06>, <AB07>, <AB08> };
+ key.color = "grey20";
+ keys { <AB09>, <AB10>, <BKSL> };
+ };
+ };
+
+ // Control keys rows
+ section "Control" {
+ left = 4;
+ top = 102.5;
+ key.gap = 0.5;
+ key.color = "grey10";
+ key.shape = "ALPL";
+ row {
+ top = 0;
+ keys { <LCTL>, <LALT>, <CAPS> };
+ keys { { <SPCE>, "SPCE"} };
+ };
+ row {
+ top = 16.5;
+ keys { <I120>, <LWIN>, <MENU> };
+ };
+ row {
+ top = 0;
+ left = 150;
+ key.shape = "NORM";
+ keys { { <SPCE>, "SPCE"}, <RALT> };
+ key.color = "grey20";
+ keys { <RCTL>, <UP>, <I162>, { <KPEN>, "DHAL" } };
+ };
+ row {
+ top = 16.5;
+ left = 207.5;
+ key.shape = "NORM";
+ key.color = "grey20";
+ keys { { <LEFT>, "DBLA" }, <DOWN>, <RGHT> };
+ };
+ };
+
+ // Diods
+ indicator.top = 12;
+ indicator.onColor = "green";
+ indicator.offColor = "grey10";
+ indicator.shape = "LED";
+ indicator "Num Lock" { left = 252; };
+ indicator "Caps Lock" { left = 266; };
+ indicator "Misc" { left = 280; };
+ text.top= 5;
+ text.color= "black";
+ text "NumLockLabel" { left= 252; text="1"; };
+ text "CapsLockLabel" { left= 266; text="A"; };
+ text "MiscLabel" { left= 280; text="D"; };
+
+ text "Logo" { left = 29; top = 10; text="TypeMatrixâ„¢"; };
+
+ // other decorations : drawings
+ solid "rainure1" { shape = "DECO"; top = 1; left = 110; color = "grey10";};
+ solid "rainure2" { shape = "DECO"; top = 1; left = 115; color = "grey10";};
+ solid "rainure3" { shape = "DECO"; top = 1; left = 120; color = "grey10";};
+ solid "rainure4" { shape = "DECO"; top = 1; left = 125; color = "grey10";};
+ solid "rainure5" { shape = "DECO"; top = 1; left = 130; color = "grey10";};
+ solid "rainure6" { shape = "DECO"; top = 1; left = 135; color = "grey10";};
+ solid "rainure7" { shape = "DECO"; top = 1; left = 140; color = "grey10";};
+ solid "rainure8" { shape = "DECO"; top = 1; left = 145; color = "grey10";};
+ solid "rainure9" { shape = "DECO"; top = 1; left = 150; color = "grey10";};
+ solid "rainure10" { shape = "DECO"; top = 1; left = 155; color = "grey10";};
+ solid "rainure11" { shape = "DECO"; top = 1; left = 160; color = "grey10";};
+ solid "rainure12" { shape = "DECO"; top = 1; left = 165; color = "grey10";};
+ solid "rainure13" { shape = "DECO"; top = 1; left = 170; color = "grey10";};
+}; // geometry tm2020
+
+
+xkb_geometry "tm2030_shape" {
+ // Keyboard total size
+ width = 320;
+ height = 130;
+ // background / foreground colours :
+ baseColor = "white";
+ labelColor = "black";
+
+ // Key shapes : base key = 20 mm each side
+ shape "NORM" { cornerRadius=1, { [18, 18] }, { [1.5, 1.5], [16.5, 14] } };
+ shape "FUNC" { cornerRadius=1, { [18, 12] }, { [2.5, 0], [15.5, 10] } };
+ shape "LFSH" { cornerRadius=1, { [18, 36.5] }, { [2.5, 0], [15.5, 30] } };
+ shape "ALT1" { cornerRadius=1, { [27.5, 18] }, { [2.5, 0], [23.5, 14] } };
+ shape "BKSP" { cornerRadius=1, { [18, 30.5] }, { [1.5, 1.5], [16.5, 29] } };
+ shape "SPCE" { cornerRadius=1, { [92, 25] }, { [1.5, 1.5], [90.5, 22] } };
+ shape "LED" { cornerRadius=2, { [4, 4] } };
+ shape "PAN1" { cornerRadius=1, { [27, 126.5] } };
+ shape "PAN2" { cornerRadius=1, { [92, 13] } };
+
+ // other decorations : panels
+ solid "panneau1" {
+ shape = "PAN1";
+ left = 0;
+ top = 0;
+ color = "grey40";
+ };
+ solid "panneau2" {
+ shape = "PAN2";
+ left = 101.5;
+ top = 113.5;
+ color = "grey40";
+ };
+
+ // Diods (Indicators) : they have to be put after panels, either the panels
+ // overwrites them.
+ indicator.left = 6;
+ indicator.onColor = "green";
+ indicator.offColor = "grey10";
+ indicator.shape = "LED";
+
+ indicator "Num Lock" { top = 11 ; };
+ indicator "Caps Lock" { top = 27.5; };
+ indicator "Scroll Lock" { top = 44 ; };
+
+ text.left = 12;
+ text.color = "black";
+ text "NumLockLabel" { top = 11; text="num"; };
+ text "CapsLockLabel" { top = 27.5; text="caps"; };
+ text "SrollLockLabel" { top = 44; text="scroll"; };
+}; // geometry tm2030_shape
+
+xkb_geometry "tm2030_MiscDiod_dvk" {
+ text "ModeLabel" { left = 12; top = 58; color = "black"; text="Dvorak"; };
+}; // geometry tm2030_MiscDiod_dvk
+
+xkb_geometry "tm2030_MiscDiod_102" {
+ text "ModeLabel" { left = 12; top = 58; color = "black"; text="102"; };
+}; // geometry tm2030_MiscDiod_102
+
+xkb_geometry "tm2030_MiscDiod_106" {
+ text "ModeLabel" { left = 12; top = 58; color = "black"; text="106"; };
+}; // geometry tm2030_MiscDiod_106
+
+xkb_geometry "tm2030_MiscDiod_off" {
+ indicator "Misc" { left = 6; top = 60.5; shape = "LED";
+ offColor = "grey10"; onColor = "grey10"; };
+}; // geometry tm2030_MiscDiod_off
+
+xkb_geometry "tm2030_MiscDiod_on" {
+ indicator "Misc" { left = 6; top = 60.5; shape = "LED";
+ offColor = "green"; onColor = "green"; };
+}; // geometry tm2030_MiscDiod_on
+
+
+xkb_geometry "tm2030USB_func" {
+ // Function keys rows
+ section "Function" {
+ left = 27;
+ top = 1.5;
+ key.gap = 0.5;
+ key.color = "grey30";
+ key.shape = "FUNC";
+ row {
+ keys { <ESC>, <FK01>, <FK02>, <FK03>, <FK04>, <FK05> };
+ };
+ row {
+ left = 129.5;
+ keys { <FK06>, <FK07>, <FK08>, <FK09>, <FK10>, <FK11>,
+ <FK12>, <NMLK> };
+ };
+ };
+}; // geometry tm2030USB_func
+
+
+xkb_geometry "tm2030USB_alpha" {
+ // Alpha-numeric keys rows
+ section "Alpha" {
+ left = 27;
+ top = 14;
+ key.gap = 0.5;
+ key.color = "grey10";
+ key.shape = "NORM";
+ row {
+ top = 0;
+ keys { <TLDE>, <AE01>, <AE02>, <AE03>, <AE04>, <AE05> };
+ };
+ row {
+ top = 18.5;
+ keys { <TAB>, <AD01>, <AD02>, <AD03>, <AD04>, <AD05> };
+ };
+ row {
+ top = 37;
+ keys { { <LFSH>, "LFSH" }, <AC01>, <AC02>, <AC03>, <AC04>, <AC05> };
+ };
+ row {
+ top = 55.5;
+ left = 18.5;
+ keys { <AB01>, <AB02>, <AB03>, <AB04>, <AB05> };
+ };
+
+ row {
+ top = 0;
+ left = 129.5;
+ keys { <AE06>, <AE07>, <AE08>, <AE09>, <AE10>, <AE11>, <AE12>, <I148> };
+ };
+ row {
+ top = 18.5;
+ left = 129.5;
+ keys { <AD06>, <AD07>, <AD08>, <AD09>, <AD10>, <AD11>, <AD12>, <I163> };
+ };
+ row {
+ top = 37;
+ left = 129.5;
+ keys { <AC06>, <AC07>, <AC08>, <AC09>, <AC10>, <AC11>, { <RTSH>, "LFSH" }, <CAPS> };
+ };
+ row {
+ top = 55.5;
+ left = 129.5;
+ keys { <AB06>, <AB07>, <AB08>, <AB09>, <AB10>, <BKSL> };
+ };
+ row {
+ top = 55.5;
+ left = 259;
+ keys { <I158> };
+ };
+ row {
+ top = 74;
+ left = 74;
+ keys { { <SPCE>, "SPCE" } };
+ };
+ };
+}; // geometry tm2030USB_alpha
+
+
+xkb_geometry "tm2030USB_ctrl" {
+ // Control keys rows
+ section "Control" {
+ left = 27;
+ top = 0;
+ key.gap = 0.5;
+ key.color = "grey30";
+ key.shape = "NORM";
+ row {
+ top = 88;
+ keys { <LCTL>, <I172>, <MENU>, <I162> };
+ };
+ row {
+ top = 106.5;
+ keys { <I120>, { <LWIN>, "ALT1" }, { <LALT>, "ALT1" } };
+ };
+ row {
+ top = 88;
+ left = 166.5;
+ keys { <I243>, <HOME>, <UP>, <END>, { <RCTL>, "LFSH"}, <PGUP> };
+ };
+ row {
+ top = 106.5;
+ left = 166.5;
+ keys { <RALT>, <LEFT>, <DOWN>, <RGHT> };
+ };
+ row {
+ top = 106.5;
+ left = 259;
+ keys { <PGDN> };
+ };
+ row {
+ top = 1;
+ left = 111.5;
+ vertical = true;
+ keys { <DELE>, { <BKSP>, "BKSP" }, { <RTRN>, "LFSH" } };
+ };
+ };
+}; // geometry tm2030USB_ctrl
+
+
+xkb_geometry "tm2030PS2" {
+ include "typematrix(tm2030_shape)"
+ include "typematrix(tm2030_MiscDiod_dvk)"
+ include "typematrix(tm2030_MiscDiod_off)"
+
+ description = "TypeMatrix EZ-Reach 2030 PS2";
+
+ // Function keys row
+ section "Function" {
+ left = 27;
+ top = 1.5;
+ key.gap = 0.5;
+ key.color = "grey10";
+ key.shape = "FUNC";
+ row {
+ key.color = "grey30";
+ keys { <ESC> };
+ };
+ row {
+ left = 18.5;
+ keys { <FK01>, <FK02>, <FK03>, <FK04> };
+ };
+ row {
+ left = 92.5;
+ key.color = "grey30";
+ keys { <FK05> };
+ };
+ row {
+ left = 129.5;
+ key.color = "grey30";
+ keys { <FK06>, <FK07>, <FK08> };
+ };
+ row {
+ left = 185;
+ keys { <FK09>, <FK10>, <FK11>, <FK12> };
+ };
+ row {
+ left = 259;
+ key.color = "grey30";
+ keys { <NMLK> };
+ };
+ };
+
+ // Alpha-numeric keys rows
+ section "Alpha" {
+ left = 27;
+ top = 14;
+ key.gap = 0.5;
+ key.color = "grey10";
+ key.shape = "NORM";
+ row {
+ top = 0;
+ keys { <TLDE>, <AE01>, <AE02>, <AE03>, <AE04>, <AE05> };
+ };
+ row {
+ top = 18.5;
+ keys { <TAB>, <AD01>, <AD02>, <AD03>, <AD04>, <AD05> };
+ };
+ row {
+ top = 37;
+ keys { { <LFSH>, "LFSH" }, <AC01>, <AC02>, <AC03>, <AC04>, <AC05> };
+ };
+ row {
+ top = 55.5;
+ left = 18.5;
+ keys { <AB01>, <AB02>, <AB03>, <AB04>, <AB05> };
+ };
+
+ row {
+ top = 0;
+ left = 129.5;
+ keys { <AE06>, <AE07>, <AE08>, <AE09>, <AE10>, <AE11>, <AE12>, <I120> };
+ };
+ row {
+ top = 18.5;
+ left = 129.5;
+ keys { <AD06>, <AD07>, <AD08> };
+ };
+ row {
+ top = 18.5;
+ left = 185;
+ key.color = "grey30";
+ keys { <AD09>, <AD10>, <AD11>, <AD12>};
+ };
+ row {
+ top = 18.5;
+ left = 259;
+ keys { <BKSP> };
+ };
+ row {
+ top = 37;
+ left = 129.5;
+ keys { <AC06>, <AC07>, <AC08> };
+ };
+ row {
+ top = 37;
+ left = 185;
+ key.color = "grey30";
+ keys { <AC09>, <AC10>, <AC11>, { <RTSH>, "LFSH" },
+ {<DELE>, key.color="red"} };
+ };
+ row {
+ top = 55.5;
+ left = 129.5;
+ keys { <AB06>, <AB07>, <AB08> };
+ };
+ row {
+ top = 55.5;
+ left = 185;
+ key.color = "grey30";
+ keys { <AB09>, <AB10>, <BKSL> };
+ };
+ row {
+ top = 55.5;
+ left = 259;
+ keys { <INS> };
+ };
+ row {
+ top = 74;
+ left = 74;
+ keys { { <SPCE>, "SPCE" } };
+ };
+ }; // end section "Alpha"
+
+ // Control keys rows
+ section "Control" {
+ left = 27;
+ top = 0;
+ key.gap = 0.5;
+ key.color = "grey10";
+ key.shape = "NORM";
+ row {
+ top = 88;
+ keys { <I120>, <LWIN>, <MENU>, <I162> };
+ };
+ row {
+ top = 106.5;
+ keys { <LCTL>, { <LALT>, "ALT1" }, { <LTSH>, "ALT1" } };
+ };
+ row {
+ top = 88;
+ left = 166.5;
+ keys { <PGUP> };
+ };
+ row {
+ top = 88;
+ left = 185;
+ key.color = "grey30";
+ keys { <HOME>, <UP>, <END>, { <KPEN>, "LFSH"} };
+ };
+ row {
+ top = 88;
+ left = 259;
+ keys { <RCTL> };
+ };
+ row {
+ top = 106.5;
+ left = 166.5;
+ keys { <PGDN> };
+ };
+ row {
+ top = 106.5;
+ left = 185;
+ key.color = "grey30";
+ keys { <LEFT>, <DOWN>, <RGHT> };
+ };
+ row {
+ top = 106.5;
+ left = 259;
+ keys { <RALT> };
+ };
+ row {
+ top = 1;
+ left = 111.5;
+ key.color = "grey10";
+ vertical = true;
+ keys { <CAPS>, { <BKSP>, "BKSP" }, { <RTRN>, "LFSH" } };
+ };
+ }; // end section "Control"
+}; // geometry tm2030PS2
+
+
+xkb_geometry "tm2030USB" {
+ include "typematrix(tm2030_shape)"
+ include "typematrix(tm2030_MiscDiod_102)"
+ include "typematrix(tm2030_MiscDiod_off)"
+
+ description = "TypeMatrix EZ-Reach 2030 USB";
+
+ include "typematrix(tm2030USB_func)"
+ include "typematrix(tm2030USB_alpha)"
+ include "typematrix(tm2030USB_ctrl)"
+}; // geometry tm2030USB
+
+
+// European 102/105 keys mode :
+// Same as the standard keyboard, except for one key, Play becomes LSGT
+xkb_geometry "tm2030USB-102" {
+ include "typematrix(tm2030_shape)"
+ include "typematrix(tm2030_MiscDiod_102)"
+ include "typematrix(tm2030_MiscDiod_on)"
+
+ description = "TypeMatrix EZ-Reach 2030 USB (102/105:EU mode)";
+
+ include "typematrix(tm2030USB_func)"
+ include "typematrix(tm2030USB_alpha)"
+
+ // Control keys rows
+ section "Control" {
+ left = 27;
+ top = 0;
+ key.gap = 0.5;
+ key.color = "grey30";
+ key.shape = "NORM";
+ row {
+ top = 88;
+ keys { <LCTL>, <LSGT>, <MENU>, <I162> };
+ };
+ row {
+ top = 106.5;
+ keys { <I120>, { <LWIN>, "ALT1" }, { <LALT>, "ALT1" } };
+ };
+ row {
+ top = 88;
+ left = 166.5;
+ keys { <I243>, <HOME>, <UP>, <END>, { <RCTL>, "LFSH"}, <PGUP> };
+ };
+ row {
+ top = 106.5;
+ left = 166.5;
+ keys { <RALT>, <LEFT>, <DOWN>, <RGHT> };
+ };
+ row {
+ top = 106.5;
+ left = 259;
+ keys { <PGDN> };
+ };
+ row {
+ top = 1;
+ left = 111.5;
+ vertical = true;
+ keys { <DELE>, { <BKSP>, "BKSP" }, { <RTRN>, "LFSH" } };
+ };
+ };
+}; // geometry tm2030USB-102
+
+
+// Japan / Korean 106 keys mode :
+// Same as the standard keyboard, except for following keys :
+// – <TLDE> is replaced by <HZTG>
+// – WWW key becomes <HKTG>
+// — Calc key becomes <AE13>
+// — Mail key becomes <BKSL>, and <BKSL> key becomes <AB11>
+
+// about Controls:
+// NFER/MEHU and XFER/KANJ : TMx keeps LWIN (and RWIN if it happend to exist)
+// HKTG/HIRA : TMx keeps MENU/COMP, but locates this key in alpha section
+// (see upper).
+
+xkb_geometry "tm2030USB-106" {
+ include "typematrix(tm2030_shape)"
+ include "typematrix(tm2030_MiscDiod_106)"
+ include "typematrix(tm2030_MiscDiod_on)"
+
+ description = "TypeMatrix EZ-Reach 2030 USB (106:JP mode)";
+
+ include "typematrix(tm2030USB_func)"
+
+ // Alpha-numeric keys rows
+ section "Alpha" {
+ left = 27;
+ top = 14;
+ key.gap = 0.5;
+ key.color = "grey10";
+ key.shape = "NORM";
+ row {
+ top = 0;
+ keys { <HZTG>, <AE01>, <AE02>, <AE03>, <AE04>, <AE05> };
+ };
+ row {
+ top = 18.5;
+ keys { <TAB>, <AD01>, <AD02>, <AD03>, <AD04>, <AD05> };
+ };
+ row {
+ top = 37;
+ keys { { <LFSH>, "LFSH" }, <AC01>, <AC02>, <AC03>, <AC04>, <AC05> };
+ };
+ row {
+ top = 55.5;
+ left = 18.5;
+ keys { <AB01>, <AB02>, <AB03>, <AB04>, <AB05> };
+ };
+
+ row {
+ top = 0;
+ left = 129.5;
+ keys { <AE06>, <AE07>, <AE08>, <AE09>, <AE10>, <AE11>, <AE12>, <AE13> };
+ };
+ row {
+ top = 18.5;
+ left = 129.5;
+ keys { <AD06>, <AD07>, <AD08>, <AD09>, <AD10>, <AD11>, <AD12>, <BKSL> };
+ };
+ row {
+ top = 37;
+ left = 129.5;
+ keys { <AC06>, <AC07>, <AC08>, <AC09>, <AC10>, <AC11>, { <RTSH>, "LFSH" }, <CAPS> };
+ };
+ row {
+ top = 55.5;
+ left = 129.5;
+ keys { <AB06>, <AB07>, <AB08>, <AB09>, <AB10>, <AB11> };
+ };
+ row {
+ top = 55.5;
+ left = 259;
+ keys { <HKTG> };
+ };
+ row {
+ top = 74;
+ left = 74;
+ keys { { <SPCE>, "SPCE" } };
+ };
+ };
+
+ // Control keys rows
+ section "Control" {
+ left = 27;
+ top = 0;
+ key.gap = 0.5;
+ key.color = "grey30";
+ key.shape = "NORM";
+ row {
+ top = 88;
+ keys { <LCTL>, <I172>, <MENU>, <I162> };
+ };
+ row {
+ top = 106.5;
+ keys { <I120>, { <LWIN>, "ALT1" }, { <LALT>, "ALT1" } };
+ };
+ row {
+ top = 88;
+ left = 166.5;
+ keys { <I243>, <HOME>, <UP>, <END>, { <RCTL>, "LFSH"}, <PGUP> };
+ };
+ row {
+ top = 106.5;
+ left = 166.5;
+ keys { <RALT>, <LEFT>, <DOWN>, <RGHT> };
+ };
+ row {
+ top = 106.5;
+ left = 259;
+ keys { <PGDN> };
+ };
+ row {
+ top = 1;
+ left = 111.5;
+ vertical = true;
+ keys { <DELE>, { <BKSP>, "BKSP" }, { <RTRN>, "LFSH" } };
+ };
+ };
+}; // geometry tm2030USB-106
diff --git a/xorg-server/xkeyboard-config/keycodes/README b/xorg-server/xkeyboard-config/keycodes/README
index 31e061861..6363f3d55 100644
--- a/xorg-server/xkeyboard-config/keycodes/README
+++ b/xorg-server/xkeyboard-config/keycodes/README
@@ -1,6 +1,6 @@
-The keycodes component of a keyboard mapping specifies the range and
-interpretation of the raw keycodes reported by the device. It sets the keycodes
-symbolic name, the minimum and maximum legal codes for the keyboard, and the
-symbolic name for each key. The keycodes component might also contain aliases
-for some keys, symbolic names for some indicators and a description of which
-indicators are physically present.
+The keycodes component of a keyboard mapping specifies the range and
+interpretation of the raw keycodes reported by the device. It sets the keycodes
+symbolic name, the minimum and maximum legal codes for the keyboard, and the
+symbolic name for each key. The keycodes component might also contain aliases
+for some keys, symbolic names for some indicators and a description of which
+indicators are physically present.
diff --git a/xorg-server/xkeyboard-config/keycodes/aliases b/xorg-server/xkeyboard-config/keycodes/aliases
index d80493f95..f398772fe 100644
--- a/xorg-server/xkeyboard-config/keycodes/aliases
+++ b/xorg-server/xkeyboard-config/keycodes/aliases
@@ -1,99 +1,99 @@
-
-// keycode aliases for phonetic keyboard maps
-
-default
-xkb_keycodes "qwerty" {
-
- alias <LatQ> = <AD01>;
- alias <LatW> = <AD02>;
- alias <LatE> = <AD03>;
- alias <LatR> = <AD04>;
- alias <LatT> = <AD05>;
- alias <LatY> = <AD06>;
- alias <LatU> = <AD07>;
- alias <LatI> = <AD08>;
- alias <LatO> = <AD09>;
- alias <LatP> = <AD10>;
-
- alias <LatA> = <AC01>;
- alias <LatS> = <AC02>;
- alias <LatD> = <AC03>;
- alias <LatF> = <AC04>;
- alias <LatG> = <AC05>;
- alias <LatH> = <AC06>;
- alias <LatJ> = <AC07>;
- alias <LatK> = <AC08>;
- alias <LatL> = <AC09>;
-
- alias <LatZ> = <AB01>;
- alias <LatX> = <AB02>;
- alias <LatC> = <AB03>;
- alias <LatV> = <AB04>;
- alias <LatB> = <AB05>;
- alias <LatN> = <AB06>;
- alias <LatM> = <AB07>;
-};
-
-xkb_keycodes "azerty" {
-
- alias <LatA> = <AD01>;
- alias <LatZ> = <AD02>;
- alias <LatE> = <AD03>;
- alias <LatR> = <AD04>;
- alias <LatT> = <AD05>;
- alias <LatY> = <AD06>;
- alias <LatU> = <AD07>;
- alias <LatI> = <AD08>;
- alias <LatO> = <AD09>;
- alias <LatP> = <AD10>;
-
- alias <LatQ> = <AC01>;
- alias <LatS> = <AC02>;
- alias <LatD> = <AC03>;
- alias <LatF> = <AC04>;
- alias <LatG> = <AC05>;
- alias <LatH> = <AC06>;
- alias <LatJ> = <AC07>;
- alias <LatK> = <AC08>;
- alias <LatL> = <AC09>;
- alias <LatM> = <AC10>;
-
- alias <LatW> = <AB01>;
- alias <LatX> = <AB02>;
- alias <LatC> = <AB03>;
- alias <LatV> = <AB04>;
- alias <LatB> = <AB05>;
- alias <LatN> = <AB06>;
-};
-
-xkb_keycodes "qwertz" {
-
- alias <LatQ> = <AD01>;
- alias <LatW> = <AD02>;
- alias <LatE> = <AD03>;
- alias <LatR> = <AD04>;
- alias <LatT> = <AD05>;
- alias <LatZ> = <AD06>;
- alias <LatU> = <AD07>;
- alias <LatI> = <AD08>;
- alias <LatO> = <AD09>;
- alias <LatP> = <AD10>;
-
- alias <LatA> = <AC01>;
- alias <LatS> = <AC02>;
- alias <LatD> = <AC03>;
- alias <LatF> = <AC04>;
- alias <LatG> = <AC05>;
- alias <LatH> = <AC06>;
- alias <LatJ> = <AC07>;
- alias <LatK> = <AC08>;
- alias <LatL> = <AC09>;
-
- alias <LatY> = <AB01>;
- alias <LatX> = <AB02>;
- alias <LatC> = <AB03>;
- alias <LatV> = <AB04>;
- alias <LatB> = <AB05>;
- alias <LatN> = <AB06>;
- alias <LatM> = <AB07>;
-};
+
+// keycode aliases for phonetic keyboard maps
+
+default
+xkb_keycodes "qwerty" {
+
+ alias <LatQ> = <AD01>;
+ alias <LatW> = <AD02>;
+ alias <LatE> = <AD03>;
+ alias <LatR> = <AD04>;
+ alias <LatT> = <AD05>;
+ alias <LatY> = <AD06>;
+ alias <LatU> = <AD07>;
+ alias <LatI> = <AD08>;
+ alias <LatO> = <AD09>;
+ alias <LatP> = <AD10>;
+
+ alias <LatA> = <AC01>;
+ alias <LatS> = <AC02>;
+ alias <LatD> = <AC03>;
+ alias <LatF> = <AC04>;
+ alias <LatG> = <AC05>;
+ alias <LatH> = <AC06>;
+ alias <LatJ> = <AC07>;
+ alias <LatK> = <AC08>;
+ alias <LatL> = <AC09>;
+
+ alias <LatZ> = <AB01>;
+ alias <LatX> = <AB02>;
+ alias <LatC> = <AB03>;
+ alias <LatV> = <AB04>;
+ alias <LatB> = <AB05>;
+ alias <LatN> = <AB06>;
+ alias <LatM> = <AB07>;
+};
+
+xkb_keycodes "azerty" {
+
+ alias <LatA> = <AD01>;
+ alias <LatZ> = <AD02>;
+ alias <LatE> = <AD03>;
+ alias <LatR> = <AD04>;
+ alias <LatT> = <AD05>;
+ alias <LatY> = <AD06>;
+ alias <LatU> = <AD07>;
+ alias <LatI> = <AD08>;
+ alias <LatO> = <AD09>;
+ alias <LatP> = <AD10>;
+
+ alias <LatQ> = <AC01>;
+ alias <LatS> = <AC02>;
+ alias <LatD> = <AC03>;
+ alias <LatF> = <AC04>;
+ alias <LatG> = <AC05>;
+ alias <LatH> = <AC06>;
+ alias <LatJ> = <AC07>;
+ alias <LatK> = <AC08>;
+ alias <LatL> = <AC09>;
+ alias <LatM> = <AC10>;
+
+ alias <LatW> = <AB01>;
+ alias <LatX> = <AB02>;
+ alias <LatC> = <AB03>;
+ alias <LatV> = <AB04>;
+ alias <LatB> = <AB05>;
+ alias <LatN> = <AB06>;
+};
+
+xkb_keycodes "qwertz" {
+
+ alias <LatQ> = <AD01>;
+ alias <LatW> = <AD02>;
+ alias <LatE> = <AD03>;
+ alias <LatR> = <AD04>;
+ alias <LatT> = <AD05>;
+ alias <LatZ> = <AD06>;
+ alias <LatU> = <AD07>;
+ alias <LatI> = <AD08>;
+ alias <LatO> = <AD09>;
+ alias <LatP> = <AD10>;
+
+ alias <LatA> = <AC01>;
+ alias <LatS> = <AC02>;
+ alias <LatD> = <AC03>;
+ alias <LatF> = <AC04>;
+ alias <LatG> = <AC05>;
+ alias <LatH> = <AC06>;
+ alias <LatJ> = <AC07>;
+ alias <LatK> = <AC08>;
+ alias <LatL> = <AC09>;
+
+ alias <LatY> = <AB01>;
+ alias <LatX> = <AB02>;
+ alias <LatC> = <AB03>;
+ alias <LatV> = <AB04>;
+ alias <LatB> = <AB05>;
+ alias <LatN> = <AB06>;
+ alias <LatM> = <AB07>;
+};
diff --git a/xorg-server/xkeyboard-config/keycodes/digital_vndr/Makefile.am b/xorg-server/xkeyboard-config/keycodes/digital_vndr/Makefile.am
index 9f94efa7c..4f4cc4fd9 100644
--- a/xorg-server/xkeyboard-config/keycodes/digital_vndr/Makefile.am
+++ b/xorg-server/xkeyboard-config/keycodes/digital_vndr/Makefile.am
@@ -1,4 +1,4 @@
-keycodesdir = $(xkb_base)/keycodes/digital_vndr
-
-dist_keycodes_DATA = \
-lk pc
+keycodesdir = $(xkb_base)/keycodes/digital_vndr
+
+dist_keycodes_DATA = \
+lk pc
diff --git a/xorg-server/xkeyboard-config/keycodes/sgi_vndr/Makefile.am b/xorg-server/xkeyboard-config/keycodes/sgi_vndr/Makefile.am
index 5680fd8a5..f601268e2 100644
--- a/xorg-server/xkeyboard-config/keycodes/sgi_vndr/Makefile.am
+++ b/xorg-server/xkeyboard-config/keycodes/sgi_vndr/Makefile.am
@@ -1,4 +1,4 @@
-keycodesdir = $(xkb_base)/keycodes/sgi_vndr
-
-dist_keycodes_DATA = \
-indigo indy iris
+keycodesdir = $(xkb_base)/keycodes/sgi_vndr
+
+dist_keycodes_DATA = \
+indigo indy iris
diff --git a/xorg-server/xkeyboard-config/po/ChangeLog b/xorg-server/xkeyboard-config/po/ChangeLog
index 34369d6bc..254a4768f 100644
--- a/xorg-server/xkeyboard-config/po/ChangeLog
+++ b/xorg-server/xkeyboard-config/po/ChangeLog
@@ -1,264 +1,264 @@
-2009-01-27 svu
-
- * *.po: sync with TP
-
-2008-09-30 svu
-
- * *.po: sync with TP
-
-2008-05-27 svu
-
- * *.po: sync with TP
-
-2008-01-29 svu
-
- * *.po: sync with TP
-
-2007-10-02 gettextize <bug-gnu-gettext@gnu.org>
-
- * Makefile.in.in: New file, from gettext-0.16.1.
-
-2007-09-25 svu
-
- * *.po: sync with TP
-
-2007-09-11 Maxim V. Dziumanenko <dziumanenko@gmail.com>
-
- * uk.po: updated Ukrainian translation, lost and found
-
-2007-09-11 Nilgün Belma Bugüner <nilgun@buguner.name.tr>
-
- * tr.po: updated Turkish translation, lost and found
-
-2007-09-11 Daniel Nylander <po@danielnylander.se>
-
- * sv.po: updated Swedish translation, lost and found
-
-2007-09-11 Zdenko Podobný <zdpo@mailbox.sk>
-
- * sk.po: updated Slovak translation, lost and found
-
-2007-09-11 Simos Xenitellis <simos74@gmx.net>
-
- * el.po: updated Greek translation, lost and found
-
-2007-09-11 Tino Meinen <a.t.meinen@chello.nl>
-
- * nl.po: updated Dutch translation, lost and found
-
-2007-03-12 Changwoo Ryu <cwryu@debian.org>
-
- * ko.po: added Korean translation
-
-2007-02-25 Tommi Vainikainen <Tommi.Vainikainen@iki.fi>
-
- * fi.po: updated Finnish translation
-
-2007-02-01 Daniel Nylander <po@danielnylander.se>
-
- * sv.po: updated Swedish translation
-
-2007-01-12 Andriy Rysin <arysin@myrealbox.com>
-
- * uk.po: updated Ukrainian translation
-
-2006-12-28 Maxim V. Dziumanenko <dziumanenko@gmail.com>
-
- * uk.po: updated Ukrainian translation
-
-2005-11-28 Nickolay V. Shmyrev <nshmyrev@yandex.ru>
-
- * ru.po: updated Russian translation
-
-2005-10-17 Matej UrbanÄiÄ <matej.urban@gmail.com>
-
- * sl.po: updated Slovenian translation
-
-2006-10-13 Gabor Kelemen <kelemeng@gnome.hu>
-
- * hu.po: updated Hungarian translation
-
-2006-10-07 Sergey E Kvyato <kvantos@plotinka.ru>
-
- * ru.po: updated Russian translation
-
-2006-10-03 Denis Barbier <barbier@linuxfr.org>
-
- * fr.po: updated French translation
-
-2006-10-03 Nilgün Belma Bugüner <nilgun@buguner.name.tr>
-
- * tr.po: updated Turkish translation
-
-2006-10-02 Gabor Kelemen <kelemeng@gnome.hu>
-
- * hu.po: updated Hungarian translation
-
-2006-09-24 Vladimer Sichinava <vlsichinava@gmail.com>
-
- * ka.po: added Georgian translation
-
-2006-09-24 Denis Barbier <barbier@linuxfr.org>
-
- * fr.po: updated French translation
-
-2006-09-09 svu
-
- * ru.po: updated Ukrainian translation
-
-2006-08-31 Andriy Rysin <arysin@myrealbox.com>
-
- * uk.po: updated Ukrainian translation
-
-2006-06-29 Francisco Javier F. Serrador <serrador@cvs.gnome.org>
-
- * es.po: updated Spanish translation
-
-2006-04-09 Francisco Javier F. Serrador <serrador@cvs.gnome.org>
-
- * es.po: added Spanish translation
-
-2006-04-05 Daniel Nylander <po@danielnylander.se>
-
- * sv.po: updated Swedish translation
-
-2006-04-01 Maxim V. Dziumanenko <mvd@mylinux.com.ua>
-
- * uk.po: updated Ukrainian translation
-
-2006-03-17 Daniel Nylander <po@danielnylander.se>
-
- * sv.po: updated Swedish translation
-
-2006-03-12 Gabor Kelemen <kelemeng@gnome.hu>
-
- * hu.po: updated Hungarian translation
-
-2006-03-09 Denis Barbier <barbier@linuxfr.org>
-
- * fr.po: updated French translation
-
-2006-03-04 Данило Шеган <danilo@gnome.org>
-
- * sr.po: updated Serbian translation
-
-2006-02-27 Luca Ferretti <elle.uca@infinito.it>
-
- * it.po: updated Italian translation
-
-2006-01-21 Taco Witte <tcwitte@cs.uu.nl>
-
- * nl.po: updated Dutch translation
-
-2005-12-31 svu
-
- * ru.po: updated Russian translation
-
-2005-12-31 jeroen-91@home.nl
-
- * nl.po: updated Dutch translation
-
-2005-12-01 svu
-
- * ru.po: updated Russian translation
-
-2005-10-13 Denis Barbier <barbier@linuxfr.org>
-
- * fr.po: updated French translation
-
-2005-10-02 svu
-
- * ru.po: updated Russian translation
-
-2005-09-30 Matej UrbanÄiÄ <matej.urban@gmail.com>
-
- * sl.po: adding Slovenian translation
-
-2005-09-13 Wei-Lun Chao <chaoweilun@pcmail.com.tw>
-
- * zh_TW.po: adding Chinise (traditional) translation
-
-2005-09-13 Tommi Vainikainen <Tommi.Vainikainen@iki.fi>
-
- * fi.po: adding Finnish translation
-
-2005-09-05 Alexander Shopov <ash@contact.bg>
-
- * bg.po: updated Bulgarian translation
-
-2005-09-04 svu
-
- * ru.po: updated Russian translation
-
-2005-08-25 Danilo Segan <dsegan@gmx.net>
-
- * sr.po: updated Serbian translation
-
-2005-08-23 svu
-
- * ru.po: updated Russian translation
-
-2005-08-17 nilgun@buguner.name.tr
-
- * tr.po: updated Turkish translation
-
-2005-08-01 svu
-
- * ru.po: updated Russian translation
-
-2005-07-31 svu
-
- * ru.po: updated Russian translation
-
-2005-07-24 svu
-
- * ru.po: updated Russian translation
-
-2005-05-28 teppi8.gmail.com
-
- * vi.po: new Vietnamese translation
-
-2005-04-09 chris@protactin.co.uk
-
- * en_GB.po: new British translation
-
-2005-04-06 Steve Murphy <murf@e-tools.com>
-
- * rw.po: updated Kinyarwanda translation
-
-2005-01-31 Taco Witte <tcwitte@cs.uu.nl>
-
- * nl.po: updated Dutch translation
-
-2005-01-26 svu
-
- * ru.po: updated Russian translation
-
-2005-01-24 svu
-
- * ru.po: updated Russian translation
-
-2005-01-16 svu
-
- * ru.po: updated Russian translation
-
-2004-12-22 svu
-
- * ru.po: updated Russian translation
-
-2004-12-21 Simos Xenitellis <simos74@gmx.net>
-
- * el.po: adding Greek translation
-
-2004-10-26 Elros Cyriatan <cyriatan@fastmail.fm>
-
- * nl.po: updated Dutch translation
-
-2004-10-26 svu
-
- * ru.po: updated Russian translation
-
-2004-10-12 svu
-
- * ru.po: updated Russian translation
-
+2009-01-27 svu
+
+ * *.po: sync with TP
+
+2008-09-30 svu
+
+ * *.po: sync with TP
+
+2008-05-27 svu
+
+ * *.po: sync with TP
+
+2008-01-29 svu
+
+ * *.po: sync with TP
+
+2007-10-02 gettextize <bug-gnu-gettext@gnu.org>
+
+ * Makefile.in.in: New file, from gettext-0.16.1.
+
+2007-09-25 svu
+
+ * *.po: sync with TP
+
+2007-09-11 Maxim V. Dziumanenko <dziumanenko@gmail.com>
+
+ * uk.po: updated Ukrainian translation, lost and found
+
+2007-09-11 Nilgün Belma Bugüner <nilgun@buguner.name.tr>
+
+ * tr.po: updated Turkish translation, lost and found
+
+2007-09-11 Daniel Nylander <po@danielnylander.se>
+
+ * sv.po: updated Swedish translation, lost and found
+
+2007-09-11 Zdenko Podobný <zdpo@mailbox.sk>
+
+ * sk.po: updated Slovak translation, lost and found
+
+2007-09-11 Simos Xenitellis <simos74@gmx.net>
+
+ * el.po: updated Greek translation, lost and found
+
+2007-09-11 Tino Meinen <a.t.meinen@chello.nl>
+
+ * nl.po: updated Dutch translation, lost and found
+
+2007-03-12 Changwoo Ryu <cwryu@debian.org>
+
+ * ko.po: added Korean translation
+
+2007-02-25 Tommi Vainikainen <Tommi.Vainikainen@iki.fi>
+
+ * fi.po: updated Finnish translation
+
+2007-02-01 Daniel Nylander <po@danielnylander.se>
+
+ * sv.po: updated Swedish translation
+
+2007-01-12 Andriy Rysin <arysin@myrealbox.com>
+
+ * uk.po: updated Ukrainian translation
+
+2006-12-28 Maxim V. Dziumanenko <dziumanenko@gmail.com>
+
+ * uk.po: updated Ukrainian translation
+
+2005-11-28 Nickolay V. Shmyrev <nshmyrev@yandex.ru>
+
+ * ru.po: updated Russian translation
+
+2005-10-17 Matej UrbanÄiÄ <matej.urban@gmail.com>
+
+ * sl.po: updated Slovenian translation
+
+2006-10-13 Gabor Kelemen <kelemeng@gnome.hu>
+
+ * hu.po: updated Hungarian translation
+
+2006-10-07 Sergey E Kvyato <kvantos@plotinka.ru>
+
+ * ru.po: updated Russian translation
+
+2006-10-03 Denis Barbier <barbier@linuxfr.org>
+
+ * fr.po: updated French translation
+
+2006-10-03 Nilgün Belma Bugüner <nilgun@buguner.name.tr>
+
+ * tr.po: updated Turkish translation
+
+2006-10-02 Gabor Kelemen <kelemeng@gnome.hu>
+
+ * hu.po: updated Hungarian translation
+
+2006-09-24 Vladimer Sichinava <vlsichinava@gmail.com>
+
+ * ka.po: added Georgian translation
+
+2006-09-24 Denis Barbier <barbier@linuxfr.org>
+
+ * fr.po: updated French translation
+
+2006-09-09 svu
+
+ * ru.po: updated Ukrainian translation
+
+2006-08-31 Andriy Rysin <arysin@myrealbox.com>
+
+ * uk.po: updated Ukrainian translation
+
+2006-06-29 Francisco Javier F. Serrador <serrador@cvs.gnome.org>
+
+ * es.po: updated Spanish translation
+
+2006-04-09 Francisco Javier F. Serrador <serrador@cvs.gnome.org>
+
+ * es.po: added Spanish translation
+
+2006-04-05 Daniel Nylander <po@danielnylander.se>
+
+ * sv.po: updated Swedish translation
+
+2006-04-01 Maxim V. Dziumanenko <mvd@mylinux.com.ua>
+
+ * uk.po: updated Ukrainian translation
+
+2006-03-17 Daniel Nylander <po@danielnylander.se>
+
+ * sv.po: updated Swedish translation
+
+2006-03-12 Gabor Kelemen <kelemeng@gnome.hu>
+
+ * hu.po: updated Hungarian translation
+
+2006-03-09 Denis Barbier <barbier@linuxfr.org>
+
+ * fr.po: updated French translation
+
+2006-03-04 Данило Шеган <danilo@gnome.org>
+
+ * sr.po: updated Serbian translation
+
+2006-02-27 Luca Ferretti <elle.uca@infinito.it>
+
+ * it.po: updated Italian translation
+
+2006-01-21 Taco Witte <tcwitte@cs.uu.nl>
+
+ * nl.po: updated Dutch translation
+
+2005-12-31 svu
+
+ * ru.po: updated Russian translation
+
+2005-12-31 jeroen-91@home.nl
+
+ * nl.po: updated Dutch translation
+
+2005-12-01 svu
+
+ * ru.po: updated Russian translation
+
+2005-10-13 Denis Barbier <barbier@linuxfr.org>
+
+ * fr.po: updated French translation
+
+2005-10-02 svu
+
+ * ru.po: updated Russian translation
+
+2005-09-30 Matej UrbanÄiÄ <matej.urban@gmail.com>
+
+ * sl.po: adding Slovenian translation
+
+2005-09-13 Wei-Lun Chao <chaoweilun@pcmail.com.tw>
+
+ * zh_TW.po: adding Chinise (traditional) translation
+
+2005-09-13 Tommi Vainikainen <Tommi.Vainikainen@iki.fi>
+
+ * fi.po: adding Finnish translation
+
+2005-09-05 Alexander Shopov <ash@contact.bg>
+
+ * bg.po: updated Bulgarian translation
+
+2005-09-04 svu
+
+ * ru.po: updated Russian translation
+
+2005-08-25 Danilo Segan <dsegan@gmx.net>
+
+ * sr.po: updated Serbian translation
+
+2005-08-23 svu
+
+ * ru.po: updated Russian translation
+
+2005-08-17 nilgun@buguner.name.tr
+
+ * tr.po: updated Turkish translation
+
+2005-08-01 svu
+
+ * ru.po: updated Russian translation
+
+2005-07-31 svu
+
+ * ru.po: updated Russian translation
+
+2005-07-24 svu
+
+ * ru.po: updated Russian translation
+
+2005-05-28 teppi8.gmail.com
+
+ * vi.po: new Vietnamese translation
+
+2005-04-09 chris@protactin.co.uk
+
+ * en_GB.po: new British translation
+
+2005-04-06 Steve Murphy <murf@e-tools.com>
+
+ * rw.po: updated Kinyarwanda translation
+
+2005-01-31 Taco Witte <tcwitte@cs.uu.nl>
+
+ * nl.po: updated Dutch translation
+
+2005-01-26 svu
+
+ * ru.po: updated Russian translation
+
+2005-01-24 svu
+
+ * ru.po: updated Russian translation
+
+2005-01-16 svu
+
+ * ru.po: updated Russian translation
+
+2004-12-22 svu
+
+ * ru.po: updated Russian translation
+
+2004-12-21 Simos Xenitellis <simos74@gmx.net>
+
+ * el.po: adding Greek translation
+
+2004-10-26 Elros Cyriatan <cyriatan@fastmail.fm>
+
+ * nl.po: updated Dutch translation
+
+2004-10-26 svu
+
+ * ru.po: updated Russian translation
+
+2004-10-12 svu
+
+ * ru.po: updated Russian translation
+
diff --git a/xorg-server/xkeyboard-config/po/Makevars b/xorg-server/xkeyboard-config/po/Makevars
index 45916d2bb..03f092c96 100644
--- a/xorg-server/xkeyboard-config/po/Makevars
+++ b/xorg-server/xkeyboard-config/po/Makevars
@@ -1,41 +1,41 @@
-# Makefile variables for PO directory in any package using GNU gettext.
-
-# Usually the message domain is the same as the package name.
-DOMAIN = $(PACKAGE)
-
-# These two variables depend on the location of this directory.
-subdir = po
-top_builddir = ..
-
-# These options get passed to xgettext.
-XGETTEXT_OPTIONS = --keyword=_ --keyword=N_
-
-# This is the copyright holder that gets inserted into the header of the
-# $(DOMAIN).pot file. Set this to the copyright holder of the surrounding
-# package. (Note that the msgstr strings, extracted from the package's
-# sources, belong to the copyright holder of the package.) Translators are
-# expected to transfer the copyright for their translations to this person
-# or entity, or to disclaim their copyright. The empty string stands for
-# the public domain; in this case the translators are expected to disclaim
-# their copyright.
-COPYRIGHT_HOLDER = XFree86
-
-# This is the email address or URL to which the translators shall report
-# bugs in the untranslated strings:
-# - Strings which are not entire sentences, see the maintainer guidelines
-# in the GNU gettext documentation, section 'Preparing Strings'.
-# - Strings which use unclear terms or require additional context to be
-# understood.
-# - Strings which make invalid assumptions about notation of date, time or
-# money.
-# - Pluralisation problems.
-# - Incorrect English spelling.
-# - Incorrect formatting.
-# It can be your email address, or a mailing list address where translators
-# can write to without being subscribed, or the URL of a web page through
-# which the translators can contact you.
-MSGID_BUGS_ADDRESS = svu@users.sourceforge.net
-
-# This is the list of locale categories, beyond LC_MESSAGES, for which the
-# message catalogs shall be used. It is usually empty.
-EXTRA_LOCALE_CATEGORIES =
+# Makefile variables for PO directory in any package using GNU gettext.
+
+# Usually the message domain is the same as the package name.
+DOMAIN = $(PACKAGE)
+
+# These two variables depend on the location of this directory.
+subdir = po
+top_builddir = ..
+
+# These options get passed to xgettext.
+XGETTEXT_OPTIONS = --keyword=_ --keyword=N_
+
+# This is the copyright holder that gets inserted into the header of the
+# $(DOMAIN).pot file. Set this to the copyright holder of the surrounding
+# package. (Note that the msgstr strings, extracted from the package's
+# sources, belong to the copyright holder of the package.) Translators are
+# expected to transfer the copyright for their translations to this person
+# or entity, or to disclaim their copyright. The empty string stands for
+# the public domain; in this case the translators are expected to disclaim
+# their copyright.
+COPYRIGHT_HOLDER = XFree86
+
+# This is the email address or URL to which the translators shall report
+# bugs in the untranslated strings:
+# - Strings which are not entire sentences, see the maintainer guidelines
+# in the GNU gettext documentation, section 'Preparing Strings'.
+# - Strings which use unclear terms or require additional context to be
+# understood.
+# - Strings which make invalid assumptions about notation of date, time or
+# money.
+# - Pluralisation problems.
+# - Incorrect English spelling.
+# - Incorrect formatting.
+# It can be your email address, or a mailing list address where translators
+# can write to without being subscribed, or the URL of a web page through
+# which the translators can contact you.
+MSGID_BUGS_ADDRESS = svu@users.sourceforge.net
+
+# This is the list of locale categories, beyond LC_MESSAGES, for which the
+# message catalogs shall be used. It is usually empty.
+EXTRA_LOCALE_CATEGORIES =
diff --git a/xorg-server/xkeyboard-config/po/POTFILES.in b/xorg-server/xkeyboard-config/po/POTFILES.in
index a47595899..901d327d4 100644
--- a/xorg-server/xkeyboard-config/po/POTFILES.in
+++ b/xorg-server/xkeyboard-config/po/POTFILES.in
@@ -1,2 +1,2 @@
-rules/base.xml.in
-rules/base.extras.xml.in
+rules/base.xml.in
+rules/base.extras.xml.in
diff --git a/xorg-server/xkeyboard-config/po/POTFILES.skip b/xorg-server/xkeyboard-config/po/POTFILES.skip
index 7c75518d9..67c1092e1 100644
--- a/xorg-server/xkeyboard-config/po/POTFILES.skip
+++ b/xorg-server/xkeyboard-config/po/POTFILES.skip
@@ -1,2 +1,2 @@
-rules/evdev.xml.in
-rules/evdev.extras.xml.in
+rules/evdev.xml.in
+rules/evdev.extras.xml.in
diff --git a/xorg-server/xkeyboard-config/po/af.po b/xorg-server/xkeyboard-config/po/af.po
index ced2c2b68..e2c453d11 100644
--- a/xorg-server/xkeyboard-config/po/af.po
+++ b/xorg-server/xkeyboard-config/po/af.po
@@ -1,1464 +1,1464 @@
-# xfree86_xkb_xml
-# Copyright (C) 2004 Free Software Foundation, Inc.
-# This file is distributed under the same license as the PACKAGE package.
-# Petri Jooste <rkwjpj@puk.ac.za>, 2004.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: xfree86_xkb_xml 4.4pre1\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2003-11-25 23:38+0000\n"
-"PO-Revision-Date: 2004-03-18 00:17+0200\n"
-"Last-Translator: Petri Jooste <rkwjpj@puk.ac.za>\n"
-"Language-Team: Afrikaans <i18n@af.org.za>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=iso-8859-1\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-#: xfree86.xml.in.h:1
-msgid "\"Typewriter\""
-msgstr "\"Tikmasjien\""
-
-#: xfree86.xml.in.h:2
-msgid "A Tamil typewrite-style keymap; TAB encoding"
-msgstr "'n Tamil tikmasjienstyl sleutelbinding; TAB-enkodering"
-
-#: xfree86.xml.in.h:3
-msgid "A Tamil typewrite-style keymap; TSCII encoding"
-msgstr "'n Tamil tikmasjienstyl sleutelbinding; TSCII-enkodering"
-
-#: xfree86.xml.in.h:4
-msgid "A Tamil typewrite-style keymap; Unicode encoding"
-msgstr "'n Tamil tikmasjienstyl sleutelbinding; Unicode-enkodering"
-
-#: xfree86.xml.in.h:5
-msgid "ACPI Standard"
-msgstr "ACPI Standaard"
-
-#: xfree86.xml.in.h:6
-msgid "Acer AirKey V"
-msgstr "Acer AirKey V"
-
-#: xfree86.xml.in.h:7
-msgid "Acts as Shift with locking. Shift cancels Caps."
-msgstr "Tree op as Shift met sluit-aksie. Shift kanseleer Caps."
-
-#: xfree86.xml.in.h:8
-msgid "Acts as Shift with locking. Shift doesn't cancel Caps."
-msgstr "Tree op as Shift met sluiting. Shift kanseleer nie Caps nie."
-
-#: xfree86.xml.in.h:9
-msgid "Add the standard behavior to Menu key."
-msgstr "Voeg by die standaardgedrag by die Kieslyssleutel."
-
-#: xfree86.xml.in.h:10
-msgid "Advance Scorpius KI"
-msgstr "Advance Scorpius KI"
-
-#: xfree86.xml.in.h:11
-msgid "Alb"
-msgstr "Alb"
-
-#: xfree86.xml.in.h:12
-msgid "Albanian"
-msgstr "Albanies"
-
-#: xfree86.xml.in.h:13
-msgid "Alt and Meta on the Alt keys (default)."
-msgstr "Alt en Meta op die Alt sleutels (verstek)."
-
-#: xfree86.xml.in.h:14
-msgid "Alt+Control changes group"
-msgstr "Alt+Kontrole verander groep"
-
-#: xfree86.xml.in.h:15
-msgid "Alt+Shift changes group"
-msgstr "Alt+Shift verander groep"
-
-#: xfree86.xml.in.h:16
-msgid "Alt/Win key behavior"
-msgstr "Alt/Win-sleutel gedrag"
-
-#: xfree86.xml.in.h:17
-msgid "Alternate"
-msgstr "Alterneer"
-
-#: xfree86.xml.in.h:18
-msgid "Arabic"
-msgstr "Arabies"
-
-#: xfree86.xml.in.h:19
-msgid "Arb"
-msgstr "Arb"
-
-#: xfree86.xml.in.h:20
-msgid "Arm"
-msgstr "Arm"
-
-#: xfree86.xml.in.h:21
-msgid "Armenian"
-msgstr "Armeens"
-
-#: xfree86.xml.in.h:22
-msgid "Aze"
-msgstr "Aze"
-
-#: xfree86.xml.in.h:23
-msgid "Azerbaijani"
-msgstr "Azerbaijaans"
-
-#: xfree86.xml.in.h:24
-msgid "BTC 5090"
-msgstr "BTC 5090"
-
-#: xfree86.xml.in.h:25
-msgid "BTC 5113RF Multimedia"
-msgstr "BTC 5113RF Multimedia"
-
-#: xfree86.xml.in.h:26
-msgid "BTC 5126T"
-msgstr "BTC 5126T"
-
-#: xfree86.xml.in.h:27
-msgid "BTC 9000"
-msgstr "BTC 9000"
-
-#: xfree86.xml.in.h:28
-msgid "BTC 9000A"
-msgstr "BTC 9000A"
-
-#: xfree86.xml.in.h:29
-msgid "BTC 9001AH"
-msgstr "BTC 9001AH"
-
-#: xfree86.xml.in.h:30
-msgid "Basic"
-msgstr "Basies"
-
-#: xfree86.xml.in.h:31
-msgid "Bel"
-msgstr "Bel"
-
-#: xfree86.xml.in.h:32
-msgid "Belarusian"
-msgstr "Belarussies"
-
-#: xfree86.xml.in.h:33
-msgid "Belgian"
-msgstr "Belgies"
-
-#: xfree86.xml.in.h:34
-msgid "Ben"
-msgstr "Ben"
-
-#: xfree86.xml.in.h:35
-msgid "Bengali"
-msgstr "Bengaals"
-
-#: xfree86.xml.in.h:36
-msgid "Bgr"
-msgstr "Bgr"
-
-#: xfree86.xml.in.h:37
-msgid "Bih"
-msgstr "Bih"
-
-#: xfree86.xml.in.h:38
-msgid "Blr"
-msgstr "Blr"
-
-#: xfree86.xml.in.h:39
-msgid "Bosnian"
-msgstr "Bosnies"
-
-#: xfree86.xml.in.h:40
-msgid "Both Alt keys together change group"
-msgstr "Beide Alt-sleutels tesame verander groep"
-
-#: xfree86.xml.in.h:41
-msgid "Both Ctrl keys together change group"
-msgstr "Beide Ctrl-sleutels tesame verander groep"
-
-#: xfree86.xml.in.h:42
-msgid "Both Shift keys together change group"
-msgstr "Beide Shift-sleutels tesame verander groep"
-
-#: xfree86.xml.in.h:43
-msgid "Both Win-keys switch group while pressed"
-msgstr "Beide Win-sleutels wissel groep terwyl gedruk"
-
-#: xfree86.xml.in.h:44
-msgid "Bra"
-msgstr "Bra"
-
-#: xfree86.xml.in.h:45
-msgid "Brazilian"
-msgstr "Braziliaans"
-
-#: xfree86.xml.in.h:46
-msgid "Brazilian ABNT2"
-msgstr "Braziliaans ABNT2"
-
-#: xfree86.xml.in.h:47
-msgid "Brother Internet Keyboard"
-msgstr "Brother Internetsleutelbord"
-
-#: xfree86.xml.in.h:48
-msgid "Bulgarian"
-msgstr "Bulgaars"
-
-#: xfree86.xml.in.h:49
-msgid "Burmese"
-msgstr "Burmees"
-
-#: xfree86.xml.in.h:50
-msgid "Can"
-msgstr "Kan"
-
-#: xfree86.xml.in.h:51
-msgid "Canadian"
-msgstr "Kanadees"
-
-#: xfree86.xml.in.h:52
-msgid "Caps Lock key changes group"
-msgstr "CapsLock-sleutel verander groep"
-
-#: xfree86.xml.in.h:53
-msgid "CapsLock key behavior"
-msgstr "CapsLock-sleutelgedrag"
-
-#: xfree86.xml.in.h:54
-msgid "Caps_Lock LED shows alternative group"
-msgstr "Caps_Lock LED vertoon alternatiewe groep"
-
-#: xfree86.xml.in.h:55
-msgid "Cherry Blue Line CyBo@rd"
-msgstr "Cherry Blue Line CyBo@rd"
-
-#: xfree86.xml.in.h:56
-msgid "Cherry Blue Line CyBo@rd (alternate option)"
-msgstr "Cherry Blue Line CyBo@rd (alternatief)"
-
-#: xfree86.xml.in.h:57
-msgid "Chicony Internet Keyboard"
-msgstr "Chicony Internetsleutelbord"
-
-#: xfree86.xml.in.h:58
-msgid "Chicony KB-9885"
-msgstr "Chicony KB-9885"
-
-#: xfree86.xml.in.h:59
-msgid "CloGaelach"
-msgstr "CloGaelach"
-
-#: xfree86.xml.in.h:60
-msgid "CloGaelach Laptop"
-msgstr "CloGaelach Skootrekenaar"
-
-#: xfree86.xml.in.h:61
-msgid "Compaq Easy Access Keyboard"
-msgstr "Compaq Easy Access Keyboard"
-
-#: xfree86.xml.in.h:62
-msgid "Compaq Internet Keyboard (13 keys)"
-msgstr "Compaq Internet Keyboard (13 sleutels)"
-
-#: xfree86.xml.in.h:63
-msgid "Compaq Internet Keyboard (18 keys)"
-msgstr "Compaq Internet Keyboard (18 sleutels)"
-
-#: xfree86.xml.in.h:64
-msgid "Compaq Internet Keyboard (7 keys)"
-msgstr "Compaq Internet Keyboard (7 sleutels)"
-
-#: xfree86.xml.in.h:65
-msgid "Compaq iPaq Keyboard"
-msgstr "Compaq iPaq Keyboard"
-
-#: xfree86.xml.in.h:66
-msgid "Control Key Position"
-msgstr "Kontrolesleutel posisie"
-
-#: xfree86.xml.in.h:67
-msgid "Control key at bottom left"
-msgstr "Kontrolesleutel links onder"
-
-#: xfree86.xml.in.h:68
-msgid "Control key at left of 'A'"
-msgstr "Kontrolesleutel links van 'A'"
-
-#: xfree86.xml.in.h:69
-msgid "Control+Shift changes group"
-msgstr "Ctrl+Shift verander groep"
-
-#: xfree86.xml.in.h:70
-msgid "Croatian"
-msgstr "Kroaties"
-
-#: xfree86.xml.in.h:71
-msgid "Cyrillic"
-msgstr "Kirrillies"
-
-#: xfree86.xml.in.h:72
-msgid "Cze"
-msgstr "Cze"
-
-#: xfree86.xml.in.h:73
-msgid "Czech"
-msgstr "Tsjeggies"
-
-#: xfree86.xml.in.h:74
-msgid "Czech (qwerty)"
-msgstr "Tsjeggies (qwerty)"
-
-#: xfree86.xml.in.h:75
-msgid "Danish"
-msgstr "Deens"
-
-#: xfree86.xml.in.h:76
-msgid "Dead acute"
-msgstr "Dooie akuutaksent"
-
-#: xfree86.xml.in.h:77
-msgid "Dead grave acute"
-msgstr "Dooie gravisaksent"
-
-#: xfree86.xml.in.h:78
-msgid "Dell"
-msgstr "Dell"
-
-#: xfree86.xml.in.h:79
-msgid "Dell 101-key PC"
-msgstr "Dell 101-key PC"
-
-#: xfree86.xml.in.h:80
-msgid "Deu"
-msgstr "Deu"
-
-#: xfree86.xml.in.h:81
-msgid "Dexxa Wireless Desktop Keyboard"
-msgstr "Dexxa Wireless Desktop Keyboard"
-
-#: xfree86.xml.in.h:82
-msgid "Diamond 9801 / 9802 series"
-msgstr "Diamond 9801 / 9802 series"
-
-#: xfree86.xml.in.h:83
-msgid "Dnk"
-msgstr "Dnk"
-
-#: xfree86.xml.in.h:84
-msgid "Dutch"
-msgstr "Nederlands"
-
-#: xfree86.xml.in.h:85
-msgid "Dvo"
-msgstr "Dvo"
-
-#: xfree86.xml.in.h:86
-msgid "Dvorak"
-msgstr "Dvorak"
-
-#: xfree86.xml.in.h:87
-msgid "Eliminate dead keys"
-msgstr "Elimineer dooie sleutels"
-
-#: xfree86.xml.in.h:88
-msgid "Ennyah DKB-1008"
-msgstr "Ennyah DKB-1008"
-
-#: xfree86.xml.in.h:89
-msgid "Esp"
-msgstr "Esp"
-
-#: xfree86.xml.in.h:90
-msgid "Est"
-msgstr "Est"
-
-#: xfree86.xml.in.h:91
-msgid "Estonian"
-msgstr "Estoniaans"
-
-#: xfree86.xml.in.h:92
-msgid "Everex STEPnote"
-msgstr "Everex STEPnote"
-
-#: xfree86.xml.in.h:93
-msgid "Extended"
-msgstr "Uitgebreide"
-
-#: xfree86.xml.in.h:94
-msgid "Fao"
-msgstr "Fao"
-
-#: xfree86.xml.in.h:95
-msgid "Faroese"
-msgstr "Faroees"
-
-#: xfree86.xml.in.h:96
-msgid "Farsi"
-msgstr "Farsi"
-
-#: xfree86.xml.in.h:97
-msgid "Fin"
-msgstr "Fin"
-
-#: xfree86.xml.in.h:98
-msgid "Finnish"
-msgstr "Fins"
-
-#: xfree86.xml.in.h:99
-msgid "Fra"
-msgstr "Fra"
-
-#: xfree86.xml.in.h:100
-msgid "French"
-msgstr "Frans"
-
-#: xfree86.xml.in.h:101
-msgid "French (alternative)"
-msgstr "Frans (alternatief)"
-
-#: xfree86.xml.in.h:102
-msgid "French Canadian"
-msgstr "Franse Kanadees"
-
-#: xfree86.xml.in.h:103
-msgid "GBr"
-msgstr "GBr"
-
-#: xfree86.xml.in.h:104
-msgid "Generic 101-key PC"
-msgstr "Generies 101-sleutel PC"
-
-#: xfree86.xml.in.h:105
-msgid "Generic 102-key (Intl) PC"
-msgstr "Generies 102-sleutel (Intl) PC"
-
-#: xfree86.xml.in.h:106
-msgid "Generic 104-key PC"
-msgstr "Generies 104-sleutel PC"
-
-#: xfree86.xml.in.h:107
-msgid "Generic 105-key (Intl) PC"
-msgstr "Generies 105-sleutel (Intl) PC"
-
-#: xfree86.xml.in.h:108
-msgid "Genius Comfy KB-16M / Genius MM Keyboard KWD-910"
-msgstr "Genius Comfy KB-16M / Genius MM Keyboard KWD-910"
-
-#: xfree86.xml.in.h:109
-msgid "Geo"
-msgstr "Geo"
-
-#: xfree86.xml.in.h:110
-msgid "Georgian (latin)"
-msgstr "Georgies (latyns)"
-
-#: xfree86.xml.in.h:111
-msgid "Georgian (russian)"
-msgstr "Georgies (russies)"
-
-#: xfree86.xml.in.h:112
-msgid "German"
-msgstr "Duits"
-
-#: xfree86.xml.in.h:113
-msgid "Grc"
-msgstr "Grc"
-
-#: xfree86.xml.in.h:114
-msgid "Greek"
-msgstr "Grieks"
-
-#: xfree86.xml.in.h:115
-msgid "Group Shift/Lock behavior"
-msgstr "Groep Shift/Lock gedrag"
-
-#: xfree86.xml.in.h:116
-msgid "Guj"
-msgstr "Guj"
-
-#: xfree86.xml.in.h:117
-msgid "Gujarati"
-msgstr "Gujarati"
-
-#: xfree86.xml.in.h:118
-msgid "Gurmukhi"
-msgstr "Gurmukhi"
-
-#: xfree86.xml.in.h:119
-msgid "Hewlett-Packard Internet Keyboard"
-msgstr "Hewlett-Packard Internet Keyboard"
-
-#: xfree86.xml.in.h:120
-msgid "Hewlett-Packard Omnibook 500 FA"
-msgstr "Hewlett-Packard Omnibook 500 FA"
-
-#: xfree86.xml.in.h:121
-msgid "Hewlett-Packard Omnibook 5xx"
-msgstr "Hewlett-Packard Omnibook 5xx"
-
-#: xfree86.xml.in.h:122
-msgid "Hewlett-Packard Omnibook 6000/6100"
-msgstr "Hewlett-Packard Omnibook 6000/6100"
-
-#: xfree86.xml.in.h:123
-msgid "Hewlett-Packard Omnibook XE3 GC"
-msgstr "Hewlett-Packard Omnibook XE3 GC"
-
-#: xfree86.xml.in.h:124
-msgid "Hewlett-Packard Omnibook XE3 GF"
-msgstr "Hewlett-Packard Omnibook XE3 GF"
-
-#: xfree86.xml.in.h:125
-msgid "Hewlett-Packard Omnibook XT1000"
-msgstr "Hewlett-Packard Omnibook XT1000"
-
-#: xfree86.xml.in.h:126
-msgid "Hewlett-Packard Pavilion ZT11xx"
-msgstr "Hewlett-Packard Pavilion ZT11xx"
-
-#: xfree86.xml.in.h:127
-msgid "Hewlett-Packard SK-2501 Multimedia Keyboard"
-msgstr "Hewlett-Packard SK-2501 Multimedia Keyboard"
-
-#: xfree86.xml.in.h:128
-msgid "Hewlett-Packard SK-2505 Internet Keyboard"
-msgstr "Hewlett-Packard SK-2505 Internet Keyboard"
-
-#: xfree86.xml.in.h:129
-msgid "Hin"
-msgstr "Hin"
-
-#: xfree86.xml.in.h:130
-msgid "Hindi"
-msgstr "Hindi"
-
-#: xfree86.xml.in.h:131
-msgid "Honeywell Euroboard"
-msgstr "Honeywell Euroboard"
-
-#: xfree86.xml.in.h:132
-msgid "Hrv"
-msgstr "Hrv"
-
-#: xfree86.xml.in.h:133
-msgid "Hun"
-msgstr "Hun"
-
-#: xfree86.xml.in.h:134
-msgid "Hungarian"
-msgstr "Hongaars"
-
-#: xfree86.xml.in.h:135
-msgid "Hungarian (qwerty)"
-msgstr "Hongaars (qwerty)"
-
-#: xfree86.xml.in.h:136
-msgid "Hyper is mapped to the Win-keys."
-msgstr "Hiper is verbind aan die Win-sleutels."
-
-#: xfree86.xml.in.h:137
-msgid "IBM Rapid Access"
-msgstr "IBM Rapid Access"
-
-#: xfree86.xml.in.h:138
-msgid "IBM Rapid Access II"
-msgstr "IBM Rapid Access II"
-
-#: xfree86.xml.in.h:139
-msgid "IBM Rapid Access II (alternate option)"
-msgstr "IBM Rapid Access II (alternate option)"
-
-#: xfree86.xml.in.h:140
-msgid "IBM ThinkPad 560Z/600/600E/A22E"
-msgstr "IBM ThinkPad 560Z/600/600E/A22E"
-
-#: xfree86.xml.in.h:141
-msgid "INSCRIPT layout"
-msgstr "INSCRIPT-uitleg"
-
-#: xfree86.xml.in.h:142
-msgid "IS434"
-msgstr "IS434"
-
-#: xfree86.xml.in.h:143
-msgid "IS434 laptop"
-msgstr "IS434 laptop"
-
-#: xfree86.xml.in.h:144
-msgid "ISO Alternate"
-msgstr "ISO Alternatief"
-
-#: xfree86.xml.in.h:145
-msgid "Icelandic"
-msgstr "Yslandies"
-
-#: xfree86.xml.in.h:146
-msgid "Iku"
-msgstr "Iku"
-
-#: xfree86.xml.in.h:147
-msgid "Inuktitut"
-msgstr "Inuktitut"
-
-#: xfree86.xml.in.h:148
-msgid "Irish"
-msgstr "Iers"
-
-#: xfree86.xml.in.h:149
-msgid "Irl"
-msgstr "Irl"
-
-#: xfree86.xml.in.h:150
-msgid "Irn"
-msgstr "Irn"
-
-#: xfree86.xml.in.h:151
-msgid "Isl"
-msgstr "Isl"
-
-#: xfree86.xml.in.h:152
-msgid "Isr"
-msgstr "Isr"
-
-#: xfree86.xml.in.h:153
-msgid "Israeli"
-msgstr "Israelies"
-
-#: xfree86.xml.in.h:154
-msgid "Ita"
-msgstr "Ita"
-
-#: xfree86.xml.in.h:155
-msgid "Italian"
-msgstr "Italiaans"
-
-#: xfree86.xml.in.h:156
-msgid "Japanese"
-msgstr "Japanees"
-
-#: xfree86.xml.in.h:157
-msgid "Japanese 106-key"
-msgstr "Japanees 106-sleutel"
-
-#: xfree86.xml.in.h:158
-msgid "Jpn"
-msgstr "Jpn"
-
-#: xfree86.xml.in.h:159
-msgid "Kan"
-msgstr "Kan"
-
-#: xfree86.xml.in.h:160
-msgid "Kannada"
-msgstr "Kannada"
-
-#: xfree86.xml.in.h:161
-msgid "Keytronic FlexPro"
-msgstr "Keytronic FlexPro"
-
-#: xfree86.xml.in.h:162
-msgid "LAm"
-msgstr "LAm"
-
-#: xfree86.xml.in.h:163
-msgid "Laptop"
-msgstr "Skootrekenaar"
-
-#: xfree86.xml.in.h:164
-msgid "Laptop/notebook Compaq (eg. Armada) Laptop Keyboard"
-msgstr "Laptop/notebook Compaq (eg. Armada) Laptop Keyboard"
-
-#: xfree86.xml.in.h:165
-msgid "Laptop/notebook Compaq (eg. Presario) Internet Keyboard"
-msgstr "Laptop/notebook Compaq (eg. Presario) Internet Keyboard"
-
-#: xfree86.xml.in.h:166
-msgid "Laptop/notebook Dell Inspiron 8xxx"
-msgstr "Laptop/notebook Dell Inspiron 8xxx"
-
-#: xfree86.xml.in.h:167
-msgid "Latin"
-msgstr "Latyns"
-
-#: xfree86.xml.in.h:168
-msgid "Latin America"
-msgstr "Latyns Amerika"
-
-#: xfree86.xml.in.h:169
-msgid "Latvian"
-msgstr "Latvies"
-
-#: xfree86.xml.in.h:170
-msgid "Left Alt key changes group"
-msgstr "Linkerkant Alt-sleutel verander groep"
-
-#: xfree86.xml.in.h:171
-msgid "Left Ctrl key changes group"
-msgstr "Linkerkant Ctrl-sleutel verander groep"
-
-#: xfree86.xml.in.h:172
-msgid "Left Shift key changes group"
-msgstr "Linkerkant Shift-sleutel verander groep"
-
-#: xfree86.xml.in.h:173
-msgid "Left Win-key changes group"
-msgstr "Linkerkant Win-sleutel verander groep"
-
-#: xfree86.xml.in.h:174
-msgid "Left Win-key switches group while pressed"
-msgstr "Linkerkant Win-sleutel wissel groep terwyl gedruk"
-
-#: xfree86.xml.in.h:175
-msgid "Lithuanian azerty standard"
-msgstr "Lithuaniese azerty standaard"
-
-#: xfree86.xml.in.h:176
-msgid "Lithuanian qwerty \"numeric\""
-msgstr "Lithuanian qwerty \"numeries\""
-
-#: xfree86.xml.in.h:177
-msgid "Logitech Cordless Desktop"
-msgstr "Logitech Cordless Desktop"
-
-#: xfree86.xml.in.h:178
-msgid "Logitech Cordless Desktop Navigator"
-msgstr "Logitech Cordless Desktop Navigator"
-
-#: xfree86.xml.in.h:179
-msgid "Logitech Cordless Desktop Optical"
-msgstr "Logitech Cordless Desktop Optical"
-
-#: xfree86.xml.in.h:180
-msgid "Logitech Cordless Desktop Pro"
-msgstr "Logitech Cordless Desktop Pro"
-
-#: xfree86.xml.in.h:181
-msgid "Logitech Cordless Desktop Pro (alternate option)"
-msgstr "Logitech Cordless Desktop Pro (alternatiewe opsie)"
-
-#: xfree86.xml.in.h:182
-msgid "Logitech Cordless Desktop Pro (alternate option2)"
-msgstr "Logitech Cordless Desktop Pro (alternatiewe opsie2)"
-
-#: xfree86.xml.in.h:183
-msgid "Logitech Cordless Desktop iTouch"
-msgstr "Logitech Cordless Desktop iTouch"
-
-#: xfree86.xml.in.h:184
-msgid "Logitech Cordless Freedom/Desktop Navigator"
-msgstr "Logitech Cordless Freedom/Desktop Navigator"
-
-#: xfree86.xml.in.h:185
-msgid "Logitech Deluxe Access Keyboard"
-msgstr "Logitech Deluxe Access Keyboard"
-
-#: xfree86.xml.in.h:186
-msgid "Logitech Internet Keyboard"
-msgstr "Logitech Internet Keyboard"
-
-#: xfree86.xml.in.h:187
-msgid "Logitech Internet Navigator Keyboard"
-msgstr "Logitech Internet Navigator Keyboard"
-
-#: xfree86.xml.in.h:188
-msgid "Logitech iTouch"
-msgstr "Logitech iTouch"
-
-#: xfree86.xml.in.h:189
-msgid "Logitech iTouch Cordless Keyboard (model Y-RB6)"
-msgstr "Logitech iTouch Cordless Keyboard (model Y-RB6)"
-
-#: xfree86.xml.in.h:190
-msgid "Logitech iTouch keyboard Internet Navigator"
-msgstr "Logitech iTouch keyboard Internet Navigator"
-
-#: xfree86.xml.in.h:191
-msgid "Ltu"
-msgstr "Ltu"
-
-#: xfree86.xml.in.h:192
-msgid "Lva"
-msgstr "Lva"
-
-#: xfree86.xml.in.h:193
-msgid "Macedonian"
-msgstr "Masedonies"
-
-#: xfree86.xml.in.h:194
-msgid "Macintosh"
-msgstr "Macintosh"
-
-#: xfree86.xml.in.h:195
-msgid "Macintosh Old"
-msgstr "Macintosh (oud)"
-
-#: xfree86.xml.in.h:196
-msgid "Make CapsLock an additional Control"
-msgstr "Maak CapsLock 'n adisionele Kontrole"
-
-#: xfree86.xml.in.h:197
-msgid "Mal"
-msgstr "Mal"
-
-#: xfree86.xml.in.h:198
-msgid "Malayalam"
-msgstr "Malayalam"
-
-#: xfree86.xml.in.h:199
-msgid "Maltese"
-msgstr "Maltees"
-
-#: xfree86.xml.in.h:200
-msgid "Maltese (US layout)"
-msgstr "Maltese (VSA-uitleg)"
-
-#: xfree86.xml.in.h:201
-msgid "Memorex MX1998"
-msgstr "Memorex MX1998"
-
-#: xfree86.xml.in.h:202
-msgid "Memorex MX2500 EZ-Access Keyboard"
-msgstr "Memorex MX2500 EZ-Access Keyboard"
-
-#: xfree86.xml.in.h:203
-msgid "Memorex MX2750"
-msgstr "Memorex MX2750"
-
-#: xfree86.xml.in.h:204
-msgid "Menu is Compose"
-msgstr "Kieslys-sleutel is Komponeer"
-
-#: xfree86.xml.in.h:205
-msgid "Menu key changes group"
-msgstr "Kieslyssleutel verander groep"
-
-#: xfree86.xml.in.h:206
-msgid "Meta is mapped to the Win-keys."
-msgstr "Meta is verbind aan die Win-sleutels."
-
-#: xfree86.xml.in.h:207
-msgid "Meta is mapped to the left Win-key."
-msgstr "Meta is verbind aan die linkerkantste Win-sleutel."
-
-#: xfree86.xml.in.h:208
-msgid "Microsoft Internet Keyboard"
-msgstr "Microsoft Internetsleutelbord"
-
-#: xfree86.xml.in.h:209
-msgid "Microsoft Internet Keyboard Pro, Swedish"
-msgstr "Microsoft Internet Keyboard Pro, Sweeds"
-
-#: xfree86.xml.in.h:210
-msgid "Microsoft Natural"
-msgstr "Microsoft Natuurlik"
-
-#: xfree86.xml.in.h:211
-msgid "Microsoft Natural Keyboard Pro / Microsoft Internet Keyboard Pro"
-msgstr "Microsoft Natural Keyboard Pro / Microsoft Internet Keyboard Pro"
-
-#: xfree86.xml.in.h:212
-msgid "Microsoft Natural Keyboard Pro OEM"
-msgstr "Microsoft Natural Keyboard Pro OEM"
-
-#: xfree86.xml.in.h:213
-msgid "Microsoft Office Keyboard"
-msgstr "Microsoft Office sleutelbord"
-
-#: xfree86.xml.in.h:214
-msgid "Miscellaneous compatibility options"
-msgstr "Verskeie versoenbaarheid-opsies"
-
-#: xfree86.xml.in.h:215
-msgid "Mkd"
-msgstr "Mkd"
-
-#: xfree86.xml.in.h:216
-msgid "Mlt"
-msgstr "Mlt"
-
-#: xfree86.xml.in.h:217
-msgid "Mmr"
-msgstr "Mmr"
-
-#: xfree86.xml.in.h:218
-msgid "Mng"
-msgstr "Mng"
-
-#: xfree86.xml.in.h:219
-msgid "Mongolian"
-msgstr "Mongolees"
-
-#: xfree86.xml.in.h:220
-msgid "Nld"
-msgstr "Nld"
-
-#: xfree86.xml.in.h:221
-msgid "Nor"
-msgstr "Nor"
-
-#: xfree86.xml.in.h:222
-msgid "Northern Saami (Finland)"
-msgstr "Noordelike Saami (Finland)"
-
-#: xfree86.xml.in.h:223
-msgid "Northern Saami (Norway)"
-msgstr "Noordelike Saami (Noorweë)"
-
-#: xfree86.xml.in.h:224
-msgid "Northern Saami (Sweden)"
-msgstr "Noordelike Saami (Swede)"
-
-#: xfree86.xml.in.h:225
-msgid "Northgate OmniKey 101"
-msgstr "Northgate OmniKey 101"
-
-#: xfree86.xml.in.h:226
-msgid "Norwegian"
-msgstr "Noorweegs"
-
-#: xfree86.xml.in.h:227
-msgid "Num_Lock LED shows alternative group"
-msgstr "Num_Lock LED vertoon alternatiewe groep"
-
-#: xfree86.xml.in.h:228
-msgid "Ogh"
-msgstr "Ogh"
-
-#: xfree86.xml.in.h:229
-msgid "Ogham"
-msgstr "Ogham"
-
-#: xfree86.xml.in.h:230
-msgid "Oretec MCK-800 MM/Internet keyboard"
-msgstr "Oretec MCK-800 MM/Internet keyboard"
-
-#: xfree86.xml.in.h:231
-msgid "Ori"
-msgstr "Ori"
-
-#: xfree86.xml.in.h:232
-msgid "Oriya"
-msgstr "Oriya"
-
-#: xfree86.xml.in.h:233
-msgid "PC-98xx Series"
-msgstr "PC-98xx Reeks"
-
-#: xfree86.xml.in.h:234
-msgid "PC104"
-msgstr "PC104"
-
-#: xfree86.xml.in.h:235
-msgid "Pan"
-msgstr "Pan"
-
-#: xfree86.xml.in.h:236
-msgid "Phonetic"
-msgstr "Foneties"
-
-#: xfree86.xml.in.h:237
-msgid "Pol"
-msgstr "Pol"
-
-#: xfree86.xml.in.h:238
-msgid "Polish"
-msgstr "Pools"
-
-#: xfree86.xml.in.h:239
-msgid "Polish (qwertz)"
-msgstr "Pools (qwertz)"
-
-#: xfree86.xml.in.h:240
-msgid "Polytonic"
-msgstr "Polytonic"
-
-#: xfree86.xml.in.h:241
-msgid "Portuguese"
-msgstr "Portugees"
-
-#: xfree86.xml.in.h:242
-msgid "PowerPC PS/2"
-msgstr "PowerPC PS/2"
-
-#: xfree86.xml.in.h:243
-msgid "Press Left Win-key to choose 3rd level"
-msgstr "Druk Linkerkantste Win-sleutel om die 3de vlak te kies"
-
-#: xfree86.xml.in.h:244
-msgid "Press Menu key to choose 3rd level"
-msgstr "Druk Kieslys-sleutel om die 3de vlak te kies"
-
-#: xfree86.xml.in.h:245
-msgid "Press Right Control to choose 3rd level"
-msgstr "Druk Regterkantste Ctrl-sleutel om die 3de vlak te kies"
-
-#: xfree86.xml.in.h:246
-msgid "Press Right Win-key to choose 3rd level"
-msgstr "Druk Regterkantste Win-sleutel om die 3de vlak te kies"
-
-#: xfree86.xml.in.h:247
-msgid "Press any of Win-keys to choose 3rd level"
-msgstr "Druk enige van die Win-sleutels om die 3de vlak te kies"
-
-#: xfree86.xml.in.h:248
-msgid "Propeller Voyager (KTEZ-1000)"
-msgstr "Propeller Voyager (KTEZ-1000)"
-
-#: xfree86.xml.in.h:249
-msgid "Prt"
-msgstr "Prt"
-
-#: xfree86.xml.in.h:250
-msgid "QTronix Scorpius 98N+"
-msgstr "QTronix Scorpius 98N+"
-
-#: xfree86.xml.in.h:251
-msgid "R-Alt switches group while pressed"
-msgstr "R-Alt wissel die groep terwyl gedruk"
-
-#: xfree86.xml.in.h:252
-msgid "Right Alt is Compose"
-msgstr "Regterkant Alt is Komponeer"
-
-#: xfree86.xml.in.h:253
-msgid "Right Alt key changes group"
-msgstr "Regterkant Alt-sleutel verander groep"
-
-#: xfree86.xml.in.h:254
-msgid "Right Control key works as Right Alt"
-msgstr "Regterkant Ctrl-sleutel werk soos Regterkant Alt"
-
-#: xfree86.xml.in.h:255
-msgid "Right Ctrl key changes group"
-msgstr "Regterkant Ctrl-sleutel verander groep"
-
-#: xfree86.xml.in.h:256
-msgid "Right Shift key changes group"
-msgstr "Regterkant Shift-sleutel verander groep"
-
-#: xfree86.xml.in.h:257
-msgid "Right Win-key changes group"
-msgstr "Regterkant Win-sleutel verander groep"
-
-#: xfree86.xml.in.h:258
-msgid "Right Win-key is Compose"
-msgstr "Regterkant Win-sleutel is Komponeer"
-
-#: xfree86.xml.in.h:259
-msgid "Right Win-key switches group while pressed"
-msgstr "Regterkant Win-sleutel skakel groep terwyl gedruk"
-
-#: xfree86.xml.in.h:260
-msgid "Romanian"
-msgstr "Romeens"
-
-#: xfree86.xml.in.h:261
-msgid "Rou"
-msgstr "Rou"
-
-#: xfree86.xml.in.h:262
-msgid "Rus"
-msgstr "Rus"
-
-#: xfree86.xml.in.h:263
-msgid "Russian"
-msgstr "Russies"
-
-#: xfree86.xml.in.h:264
-msgid "SK-1300"
-msgstr "SK-1300"
-
-#: xfree86.xml.in.h:265
-msgid "SK-2500"
-msgstr "SK-2500"
-
-#: xfree86.xml.in.h:266
-msgid "SK-6200"
-msgstr "SK-6200"
-
-#: xfree86.xml.in.h:267
-msgid "SK-7100"
-msgstr "SK-7100"
-
-#: xfree86.xml.in.h:268
-msgid "SVEN Ergonomic 2500"
-msgstr "SVEN Ergonomic 2500"
-
-#: xfree86.xml.in.h:269
-msgid "Samsung SDM 4500P"
-msgstr "Samsung SDM 4500P"
-
-#: xfree86.xml.in.h:270
-msgid "Samsung SDM 4510P"
-msgstr "Samsung SDM 4510P"
-
-#: xfree86.xml.in.h:271
-msgid "Sapmi"
-msgstr "Sapmi"
-
-#: xfree86.xml.in.h:272
-msgid "Scg"
-msgstr "Scg"
-
-#: xfree86.xml.in.h:273
-msgid "Scroll_Lock LED shows alternative group"
-msgstr "Scroll_Lock LED wys alternatiewe groep"
-
-#: xfree86.xml.in.h:274
-msgid "Serbian"
-msgstr "Serbies"
-
-#: xfree86.xml.in.h:275
-msgid "Shift with numpad keys works as in MS Windows"
-msgstr "Shift met numeriese sleutels werk soos in MS Windows"
-
-#: xfree86.xml.in.h:276
-msgid "Slovak"
-msgstr "Slovaaks"
-
-#: xfree86.xml.in.h:277
-msgid "Slovak (qwerty)"
-msgstr "Slovaaks (qwerty)"
-
-#: xfree86.xml.in.h:278
-msgid "Slovenian"
-msgstr "Sloveens"
-
-#: xfree86.xml.in.h:279
-msgid "Sme"
-msgstr "Sme"
-
-#: xfree86.xml.in.h:280
-msgid "Spanish"
-msgstr "Spaans"
-
-#: xfree86.xml.in.h:281
-msgid "Special keys (Ctrl+Alt+&lt;key&gt;) handled in a server."
-msgstr "Spesiale sleutels (Ctrl+Alt+&lt;sleutel&gt;) word hanteer in 'n bediener."
-
-#: xfree86.xml.in.h:282
-msgid "Standard"
-msgstr "Standaard"
-
-#: xfree86.xml.in.h:283
-msgid "Sun dead keys"
-msgstr "Sun (dooie sleutels)"
-
-#: xfree86.xml.in.h:284
-msgid "Super is mapped to the Win-keys (default)."
-msgstr "Super is verbind aan die Win-sleutels (verstek)."
-
-#: xfree86.xml.in.h:285
-msgid "Sv"
-msgstr "Sv"
-
-#: xfree86.xml.in.h:286
-msgid "Svk"
-msgstr "Svk"
-
-#: xfree86.xml.in.h:287
-msgid "Svn"
-msgstr "Svn"
-
-#: xfree86.xml.in.h:288
-msgid "Swap Control and Caps Lock"
-msgstr "Ruil Ctrl en CapsLock om"
-
-#: xfree86.xml.in.h:289
-msgid "Swe"
-msgstr "Swe"
-
-#: xfree86.xml.in.h:290
-msgid "Swedish"
-msgstr "Sweeds"
-
-#: xfree86.xml.in.h:291
-msgid "Swiss French"
-msgstr "Switserse Frans"
-
-#: xfree86.xml.in.h:292
-msgid "Swiss German"
-msgstr "Switserse Duits"
-
-#: xfree86.xml.in.h:293
-msgid "Symplon PaceBook (tablet PC)"
-msgstr "Symplon PaceBook (tablet PC)"
-
-#: xfree86.xml.in.h:294
-msgid "Syr"
-msgstr "Syr"
-
-#: xfree86.xml.in.h:295
-msgid "Syriac"
-msgstr "Siries"
-
-#: xfree86.xml.in.h:296
-msgid "Tajik"
-msgstr "Tajikees"
-
-#: xfree86.xml.in.h:297
-msgid "Tamil"
-msgstr "Tamilees"
-
-#: xfree86.xml.in.h:298
-msgid "Tel"
-msgstr "Tel"
-
-#: xfree86.xml.in.h:299
-msgid "Telugu"
-msgstr "Telugu"
-
-#: xfree86.xml.in.h:300
-msgid "Tha"
-msgstr "Tha"
-
-#: xfree86.xml.in.h:301
-msgid "Thai (Kedmanee)"
-msgstr "Thai (Kedmanee)"
-
-#: xfree86.xml.in.h:302
-msgid "Thai (Pattachote)"
-msgstr "Thai (Pattachote)"
-
-#: xfree86.xml.in.h:303
-msgid "Thai (TIS-820.2538)"
-msgstr "Thai (TIS-820.2538)"
-
-#: xfree86.xml.in.h:304
-msgid "Third level choosers"
-msgstr "Derdevlak kiesers"
-
-#: xfree86.xml.in.h:305
-msgid "Tjk"
-msgstr "Tjk"
-
-#: xfree86.xml.in.h:306
-msgid "Tml"
-msgstr "Tml"
-
-#: xfree86.xml.in.h:307
-msgid "Toshiba Satellite S3000"
-msgstr "Toshiba Satellite S3000"
-
-#: xfree86.xml.in.h:308
-msgid "Trust Direct Access Keyboard"
-msgstr "Trust Direct Access Keyboard"
-
-#: xfree86.xml.in.h:309
-msgid "Trust Wireless Keyboard Classic"
-msgstr "Trust Wireless Keyboard Classic"
-
-#: xfree86.xml.in.h:310
-msgid "Tur"
-msgstr "Tur"
-
-#: xfree86.xml.in.h:311
-msgid "Turkish"
-msgstr "Turks"
-
-#: xfree86.xml.in.h:312
-msgid "Turkish (F)"
-msgstr "Turks (F)"
-
-#: xfree86.xml.in.h:313
-msgid "Turkish Alt-Q Layout"
-msgstr "Turks Alt-Q-uitleg"
-
-#: xfree86.xml.in.h:314
-msgid "U.S. English"
-msgstr "VSA Engels"
-
-#: xfree86.xml.in.h:315
-msgid "U.S. English w/ ISO9995-3"
-msgstr "VSA Engels met ISO9995-3"
-
-#: xfree86.xml.in.h:316
-msgid "U.S. English w/ dead keys"
-msgstr "VSA Engels met dooie sleutels"
-
-#: xfree86.xml.in.h:317
-msgid "US"
-msgstr "VSA"
-
-#: xfree86.xml.in.h:318
-msgid "US keyboard with Romanian letters"
-msgstr "VSA sleutelbord met Romeense letters"
-
-#: xfree86.xml.in.h:319
-msgid "USA"
-msgstr "VSA"
-
-#: xfree86.xml.in.h:320
-msgid "Ukr"
-msgstr "Ukr"
-
-#: xfree86.xml.in.h:321
-msgid "Ukrainian"
-msgstr "Ukraïnies"
-
-#: xfree86.xml.in.h:322
-msgid "UnicodeExpert"
-msgstr "UnicodeExpert"
-
-#: xfree86.xml.in.h:323
-msgid "United Kingdom"
-msgstr "Vereenigde Koninkryk"
-
-#: xfree86.xml.in.h:324
-msgid "Use keyboard LED to show alternative group"
-msgstr "Gebruik sleutelbord LED om alternatiewe groep te wys"
-
-#: xfree86.xml.in.h:325
-msgid "Uses internal capitalization. Shift cancels Caps."
-msgstr "Gebruik interne bokas. Shift kanseleer Caps."
-
-#: xfree86.xml.in.h:326
-msgid "Uses internal capitalization. Shift doesn't cancel Caps."
-msgstr "Gebruik interne bokas. Shift kanseleer nie Caps nie."
-
-#: xfree86.xml.in.h:327
-msgid "Uzb"
-msgstr "Uzb"
-
-#: xfree86.xml.in.h:328
-msgid "Uzbek"
-msgstr "Uzbek"
-
-#: xfree86.xml.in.h:329
-msgid "Vietnamese"
-msgstr "Viëtnamees"
-
-#: xfree86.xml.in.h:330
-msgid "Vnm"
-msgstr "Vnm"
-
-#: xfree86.xml.in.h:331
-msgid "Winbook Model XP5"
-msgstr "Winbook Model XP5"
-
-#: xfree86.xml.in.h:332
-msgid "Winkeys"
-msgstr "Winkeys"
-
-#: xfree86.xml.in.h:333
-msgid "Yahoo! Internet Keyboard"
-msgstr "Yahoo! Internetsleutelbord"
-
-#: xfree86.xml.in.h:334
-msgid "Yug"
-msgstr "Yug"
-
-#: xfree86.xml.in.h:335
-msgid "Yugoslavian"
-msgstr "Joegoslaafs"
-
-#: xfree86.xml.in.h:336
-msgid "abnt2"
-msgstr "abnt2"
-
-#: xfree86.xml.in.h:337
-msgid "azerty"
-msgstr "azerty"
-
-#: xfree86.xml.in.h:338
-msgid "azerty/digits"
-msgstr "azerty/syfers"
-
-#: xfree86.xml.in.h:339
-msgid "bksl"
-msgstr "bksl"
-
-#: xfree86.xml.in.h:340
-msgid "digits"
-msgstr "syfers"
-
-#: xfree86.xml.in.h:341
-msgid "l2/101/qwerty/comma"
-msgstr "l2/101/qwerty/komma"
-
-#: xfree86.xml.in.h:342
-msgid "l2/101/qwerty/dot"
-msgstr "l2/101/qwerty/dot"
-
-#: xfree86.xml.in.h:343
-msgid "l2/101/qwertz/comma"
-msgstr "l2/101/qwertz/komma"
-
-#: xfree86.xml.in.h:344
-msgid "l2/101/qwertz/dot"
-msgstr "l2/101/qwertz/dot"
-
-#: xfree86.xml.in.h:345
-msgid "l2/102/qwerty/comma"
-msgstr "l2/102/qwerty/komma"
-
-#: xfree86.xml.in.h:346
-msgid "l2/102/qwerty/dot"
-msgstr "l2/102/qwerty/dot"
-
-#: xfree86.xml.in.h:347
-msgid "l2/102/qwertz/comma"
-msgstr "l2/102/qwertz/komma"
-
-#: xfree86.xml.in.h:348
-msgid "l2/102/qwertz/dot"
-msgstr "l2/102/qwertz/dot"
-
-#: xfree86.xml.in.h:349
-msgid "laptop"
-msgstr "skootrekenaar"
-
-#: xfree86.xml.in.h:350
-msgid "lyx"
-msgstr "lyx"
-
-#: xfree86.xml.in.h:351
-msgid "qwerty"
-msgstr "qwerty"
-
-#: xfree86.xml.in.h:352
-msgid "qwerty/digits"
-msgstr "qwerty/syfers"
-
-#: xfree86.xml.in.h:353
-msgid "sefi"
-msgstr "sefi"
-
-#: xfree86.xml.in.h:354
-msgid "si1452"
-msgstr "si1452"
-
-#: xfree86.xml.in.h:355
-msgid "uni/101/qwerty/comma"
-msgstr "uni/101/qwerty/komma"
-
-#: xfree86.xml.in.h:356
-msgid "uni/101/qwerty/dot"
-msgstr "uni/101/qwerty/dot"
-
-#: xfree86.xml.in.h:357
-msgid "uni/101/qwertz/comma"
-msgstr "uni/101/qwertz/komma"
-
-#: xfree86.xml.in.h:358
-msgid "uni/101/qwertz/dot"
-msgstr "uni/101/qwertz/dot"
-
-#: xfree86.xml.in.h:359
-msgid "uni/102/qwerty/comma"
-msgstr "uni/102/qwerty/komma"
-
-#: xfree86.xml.in.h:360
-msgid "uni/102/qwerty/dot"
-msgstr "uni/102/qwerty/dot"
-
-#: xfree86.xml.in.h:361
-msgid "uni/102/qwertz/comma"
-msgstr "uni/102/qwertz/comma"
-
-#: xfree86.xml.in.h:362
-msgid "uni/102/qwertz/dot"
-msgstr "uni/102/qwertz/dot"
+# xfree86_xkb_xml
+# Copyright (C) 2004 Free Software Foundation, Inc.
+# This file is distributed under the same license as the PACKAGE package.
+# Petri Jooste <rkwjpj@puk.ac.za>, 2004.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: xfree86_xkb_xml 4.4pre1\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2003-11-25 23:38+0000\n"
+"PO-Revision-Date: 2004-03-18 00:17+0200\n"
+"Last-Translator: Petri Jooste <rkwjpj@puk.ac.za>\n"
+"Language-Team: Afrikaans <i18n@af.org.za>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=iso-8859-1\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: xfree86.xml.in.h:1
+msgid "\"Typewriter\""
+msgstr "\"Tikmasjien\""
+
+#: xfree86.xml.in.h:2
+msgid "A Tamil typewrite-style keymap; TAB encoding"
+msgstr "'n Tamil tikmasjienstyl sleutelbinding; TAB-enkodering"
+
+#: xfree86.xml.in.h:3
+msgid "A Tamil typewrite-style keymap; TSCII encoding"
+msgstr "'n Tamil tikmasjienstyl sleutelbinding; TSCII-enkodering"
+
+#: xfree86.xml.in.h:4
+msgid "A Tamil typewrite-style keymap; Unicode encoding"
+msgstr "'n Tamil tikmasjienstyl sleutelbinding; Unicode-enkodering"
+
+#: xfree86.xml.in.h:5
+msgid "ACPI Standard"
+msgstr "ACPI Standaard"
+
+#: xfree86.xml.in.h:6
+msgid "Acer AirKey V"
+msgstr "Acer AirKey V"
+
+#: xfree86.xml.in.h:7
+msgid "Acts as Shift with locking. Shift cancels Caps."
+msgstr "Tree op as Shift met sluit-aksie. Shift kanseleer Caps."
+
+#: xfree86.xml.in.h:8
+msgid "Acts as Shift with locking. Shift doesn't cancel Caps."
+msgstr "Tree op as Shift met sluiting. Shift kanseleer nie Caps nie."
+
+#: xfree86.xml.in.h:9
+msgid "Add the standard behavior to Menu key."
+msgstr "Voeg by die standaardgedrag by die Kieslyssleutel."
+
+#: xfree86.xml.in.h:10
+msgid "Advance Scorpius KI"
+msgstr "Advance Scorpius KI"
+
+#: xfree86.xml.in.h:11
+msgid "Alb"
+msgstr "Alb"
+
+#: xfree86.xml.in.h:12
+msgid "Albanian"
+msgstr "Albanies"
+
+#: xfree86.xml.in.h:13
+msgid "Alt and Meta on the Alt keys (default)."
+msgstr "Alt en Meta op die Alt sleutels (verstek)."
+
+#: xfree86.xml.in.h:14
+msgid "Alt+Control changes group"
+msgstr "Alt+Kontrole verander groep"
+
+#: xfree86.xml.in.h:15
+msgid "Alt+Shift changes group"
+msgstr "Alt+Shift verander groep"
+
+#: xfree86.xml.in.h:16
+msgid "Alt/Win key behavior"
+msgstr "Alt/Win-sleutel gedrag"
+
+#: xfree86.xml.in.h:17
+msgid "Alternate"
+msgstr "Alterneer"
+
+#: xfree86.xml.in.h:18
+msgid "Arabic"
+msgstr "Arabies"
+
+#: xfree86.xml.in.h:19
+msgid "Arb"
+msgstr "Arb"
+
+#: xfree86.xml.in.h:20
+msgid "Arm"
+msgstr "Arm"
+
+#: xfree86.xml.in.h:21
+msgid "Armenian"
+msgstr "Armeens"
+
+#: xfree86.xml.in.h:22
+msgid "Aze"
+msgstr "Aze"
+
+#: xfree86.xml.in.h:23
+msgid "Azerbaijani"
+msgstr "Azerbaijaans"
+
+#: xfree86.xml.in.h:24
+msgid "BTC 5090"
+msgstr "BTC 5090"
+
+#: xfree86.xml.in.h:25
+msgid "BTC 5113RF Multimedia"
+msgstr "BTC 5113RF Multimedia"
+
+#: xfree86.xml.in.h:26
+msgid "BTC 5126T"
+msgstr "BTC 5126T"
+
+#: xfree86.xml.in.h:27
+msgid "BTC 9000"
+msgstr "BTC 9000"
+
+#: xfree86.xml.in.h:28
+msgid "BTC 9000A"
+msgstr "BTC 9000A"
+
+#: xfree86.xml.in.h:29
+msgid "BTC 9001AH"
+msgstr "BTC 9001AH"
+
+#: xfree86.xml.in.h:30
+msgid "Basic"
+msgstr "Basies"
+
+#: xfree86.xml.in.h:31
+msgid "Bel"
+msgstr "Bel"
+
+#: xfree86.xml.in.h:32
+msgid "Belarusian"
+msgstr "Belarussies"
+
+#: xfree86.xml.in.h:33
+msgid "Belgian"
+msgstr "Belgies"
+
+#: xfree86.xml.in.h:34
+msgid "Ben"
+msgstr "Ben"
+
+#: xfree86.xml.in.h:35
+msgid "Bengali"
+msgstr "Bengaals"
+
+#: xfree86.xml.in.h:36
+msgid "Bgr"
+msgstr "Bgr"
+
+#: xfree86.xml.in.h:37
+msgid "Bih"
+msgstr "Bih"
+
+#: xfree86.xml.in.h:38
+msgid "Blr"
+msgstr "Blr"
+
+#: xfree86.xml.in.h:39
+msgid "Bosnian"
+msgstr "Bosnies"
+
+#: xfree86.xml.in.h:40
+msgid "Both Alt keys together change group"
+msgstr "Beide Alt-sleutels tesame verander groep"
+
+#: xfree86.xml.in.h:41
+msgid "Both Ctrl keys together change group"
+msgstr "Beide Ctrl-sleutels tesame verander groep"
+
+#: xfree86.xml.in.h:42
+msgid "Both Shift keys together change group"
+msgstr "Beide Shift-sleutels tesame verander groep"
+
+#: xfree86.xml.in.h:43
+msgid "Both Win-keys switch group while pressed"
+msgstr "Beide Win-sleutels wissel groep terwyl gedruk"
+
+#: xfree86.xml.in.h:44
+msgid "Bra"
+msgstr "Bra"
+
+#: xfree86.xml.in.h:45
+msgid "Brazilian"
+msgstr "Braziliaans"
+
+#: xfree86.xml.in.h:46
+msgid "Brazilian ABNT2"
+msgstr "Braziliaans ABNT2"
+
+#: xfree86.xml.in.h:47
+msgid "Brother Internet Keyboard"
+msgstr "Brother Internetsleutelbord"
+
+#: xfree86.xml.in.h:48
+msgid "Bulgarian"
+msgstr "Bulgaars"
+
+#: xfree86.xml.in.h:49
+msgid "Burmese"
+msgstr "Burmees"
+
+#: xfree86.xml.in.h:50
+msgid "Can"
+msgstr "Kan"
+
+#: xfree86.xml.in.h:51
+msgid "Canadian"
+msgstr "Kanadees"
+
+#: xfree86.xml.in.h:52
+msgid "Caps Lock key changes group"
+msgstr "CapsLock-sleutel verander groep"
+
+#: xfree86.xml.in.h:53
+msgid "CapsLock key behavior"
+msgstr "CapsLock-sleutelgedrag"
+
+#: xfree86.xml.in.h:54
+msgid "Caps_Lock LED shows alternative group"
+msgstr "Caps_Lock LED vertoon alternatiewe groep"
+
+#: xfree86.xml.in.h:55
+msgid "Cherry Blue Line CyBo@rd"
+msgstr "Cherry Blue Line CyBo@rd"
+
+#: xfree86.xml.in.h:56
+msgid "Cherry Blue Line CyBo@rd (alternate option)"
+msgstr "Cherry Blue Line CyBo@rd (alternatief)"
+
+#: xfree86.xml.in.h:57
+msgid "Chicony Internet Keyboard"
+msgstr "Chicony Internetsleutelbord"
+
+#: xfree86.xml.in.h:58
+msgid "Chicony KB-9885"
+msgstr "Chicony KB-9885"
+
+#: xfree86.xml.in.h:59
+msgid "CloGaelach"
+msgstr "CloGaelach"
+
+#: xfree86.xml.in.h:60
+msgid "CloGaelach Laptop"
+msgstr "CloGaelach Skootrekenaar"
+
+#: xfree86.xml.in.h:61
+msgid "Compaq Easy Access Keyboard"
+msgstr "Compaq Easy Access Keyboard"
+
+#: xfree86.xml.in.h:62
+msgid "Compaq Internet Keyboard (13 keys)"
+msgstr "Compaq Internet Keyboard (13 sleutels)"
+
+#: xfree86.xml.in.h:63
+msgid "Compaq Internet Keyboard (18 keys)"
+msgstr "Compaq Internet Keyboard (18 sleutels)"
+
+#: xfree86.xml.in.h:64
+msgid "Compaq Internet Keyboard (7 keys)"
+msgstr "Compaq Internet Keyboard (7 sleutels)"
+
+#: xfree86.xml.in.h:65
+msgid "Compaq iPaq Keyboard"
+msgstr "Compaq iPaq Keyboard"
+
+#: xfree86.xml.in.h:66
+msgid "Control Key Position"
+msgstr "Kontrolesleutel posisie"
+
+#: xfree86.xml.in.h:67
+msgid "Control key at bottom left"
+msgstr "Kontrolesleutel links onder"
+
+#: xfree86.xml.in.h:68
+msgid "Control key at left of 'A'"
+msgstr "Kontrolesleutel links van 'A'"
+
+#: xfree86.xml.in.h:69
+msgid "Control+Shift changes group"
+msgstr "Ctrl+Shift verander groep"
+
+#: xfree86.xml.in.h:70
+msgid "Croatian"
+msgstr "Kroaties"
+
+#: xfree86.xml.in.h:71
+msgid "Cyrillic"
+msgstr "Kirrillies"
+
+#: xfree86.xml.in.h:72
+msgid "Cze"
+msgstr "Cze"
+
+#: xfree86.xml.in.h:73
+msgid "Czech"
+msgstr "Tsjeggies"
+
+#: xfree86.xml.in.h:74
+msgid "Czech (qwerty)"
+msgstr "Tsjeggies (qwerty)"
+
+#: xfree86.xml.in.h:75
+msgid "Danish"
+msgstr "Deens"
+
+#: xfree86.xml.in.h:76
+msgid "Dead acute"
+msgstr "Dooie akuutaksent"
+
+#: xfree86.xml.in.h:77
+msgid "Dead grave acute"
+msgstr "Dooie gravisaksent"
+
+#: xfree86.xml.in.h:78
+msgid "Dell"
+msgstr "Dell"
+
+#: xfree86.xml.in.h:79
+msgid "Dell 101-key PC"
+msgstr "Dell 101-key PC"
+
+#: xfree86.xml.in.h:80
+msgid "Deu"
+msgstr "Deu"
+
+#: xfree86.xml.in.h:81
+msgid "Dexxa Wireless Desktop Keyboard"
+msgstr "Dexxa Wireless Desktop Keyboard"
+
+#: xfree86.xml.in.h:82
+msgid "Diamond 9801 / 9802 series"
+msgstr "Diamond 9801 / 9802 series"
+
+#: xfree86.xml.in.h:83
+msgid "Dnk"
+msgstr "Dnk"
+
+#: xfree86.xml.in.h:84
+msgid "Dutch"
+msgstr "Nederlands"
+
+#: xfree86.xml.in.h:85
+msgid "Dvo"
+msgstr "Dvo"
+
+#: xfree86.xml.in.h:86
+msgid "Dvorak"
+msgstr "Dvorak"
+
+#: xfree86.xml.in.h:87
+msgid "Eliminate dead keys"
+msgstr "Elimineer dooie sleutels"
+
+#: xfree86.xml.in.h:88
+msgid "Ennyah DKB-1008"
+msgstr "Ennyah DKB-1008"
+
+#: xfree86.xml.in.h:89
+msgid "Esp"
+msgstr "Esp"
+
+#: xfree86.xml.in.h:90
+msgid "Est"
+msgstr "Est"
+
+#: xfree86.xml.in.h:91
+msgid "Estonian"
+msgstr "Estoniaans"
+
+#: xfree86.xml.in.h:92
+msgid "Everex STEPnote"
+msgstr "Everex STEPnote"
+
+#: xfree86.xml.in.h:93
+msgid "Extended"
+msgstr "Uitgebreide"
+
+#: xfree86.xml.in.h:94
+msgid "Fao"
+msgstr "Fao"
+
+#: xfree86.xml.in.h:95
+msgid "Faroese"
+msgstr "Faroees"
+
+#: xfree86.xml.in.h:96
+msgid "Farsi"
+msgstr "Farsi"
+
+#: xfree86.xml.in.h:97
+msgid "Fin"
+msgstr "Fin"
+
+#: xfree86.xml.in.h:98
+msgid "Finnish"
+msgstr "Fins"
+
+#: xfree86.xml.in.h:99
+msgid "Fra"
+msgstr "Fra"
+
+#: xfree86.xml.in.h:100
+msgid "French"
+msgstr "Frans"
+
+#: xfree86.xml.in.h:101
+msgid "French (alternative)"
+msgstr "Frans (alternatief)"
+
+#: xfree86.xml.in.h:102
+msgid "French Canadian"
+msgstr "Franse Kanadees"
+
+#: xfree86.xml.in.h:103
+msgid "GBr"
+msgstr "GBr"
+
+#: xfree86.xml.in.h:104
+msgid "Generic 101-key PC"
+msgstr "Generies 101-sleutel PC"
+
+#: xfree86.xml.in.h:105
+msgid "Generic 102-key (Intl) PC"
+msgstr "Generies 102-sleutel (Intl) PC"
+
+#: xfree86.xml.in.h:106
+msgid "Generic 104-key PC"
+msgstr "Generies 104-sleutel PC"
+
+#: xfree86.xml.in.h:107
+msgid "Generic 105-key (Intl) PC"
+msgstr "Generies 105-sleutel (Intl) PC"
+
+#: xfree86.xml.in.h:108
+msgid "Genius Comfy KB-16M / Genius MM Keyboard KWD-910"
+msgstr "Genius Comfy KB-16M / Genius MM Keyboard KWD-910"
+
+#: xfree86.xml.in.h:109
+msgid "Geo"
+msgstr "Geo"
+
+#: xfree86.xml.in.h:110
+msgid "Georgian (latin)"
+msgstr "Georgies (latyns)"
+
+#: xfree86.xml.in.h:111
+msgid "Georgian (russian)"
+msgstr "Georgies (russies)"
+
+#: xfree86.xml.in.h:112
+msgid "German"
+msgstr "Duits"
+
+#: xfree86.xml.in.h:113
+msgid "Grc"
+msgstr "Grc"
+
+#: xfree86.xml.in.h:114
+msgid "Greek"
+msgstr "Grieks"
+
+#: xfree86.xml.in.h:115
+msgid "Group Shift/Lock behavior"
+msgstr "Groep Shift/Lock gedrag"
+
+#: xfree86.xml.in.h:116
+msgid "Guj"
+msgstr "Guj"
+
+#: xfree86.xml.in.h:117
+msgid "Gujarati"
+msgstr "Gujarati"
+
+#: xfree86.xml.in.h:118
+msgid "Gurmukhi"
+msgstr "Gurmukhi"
+
+#: xfree86.xml.in.h:119
+msgid "Hewlett-Packard Internet Keyboard"
+msgstr "Hewlett-Packard Internet Keyboard"
+
+#: xfree86.xml.in.h:120
+msgid "Hewlett-Packard Omnibook 500 FA"
+msgstr "Hewlett-Packard Omnibook 500 FA"
+
+#: xfree86.xml.in.h:121
+msgid "Hewlett-Packard Omnibook 5xx"
+msgstr "Hewlett-Packard Omnibook 5xx"
+
+#: xfree86.xml.in.h:122
+msgid "Hewlett-Packard Omnibook 6000/6100"
+msgstr "Hewlett-Packard Omnibook 6000/6100"
+
+#: xfree86.xml.in.h:123
+msgid "Hewlett-Packard Omnibook XE3 GC"
+msgstr "Hewlett-Packard Omnibook XE3 GC"
+
+#: xfree86.xml.in.h:124
+msgid "Hewlett-Packard Omnibook XE3 GF"
+msgstr "Hewlett-Packard Omnibook XE3 GF"
+
+#: xfree86.xml.in.h:125
+msgid "Hewlett-Packard Omnibook XT1000"
+msgstr "Hewlett-Packard Omnibook XT1000"
+
+#: xfree86.xml.in.h:126
+msgid "Hewlett-Packard Pavilion ZT11xx"
+msgstr "Hewlett-Packard Pavilion ZT11xx"
+
+#: xfree86.xml.in.h:127
+msgid "Hewlett-Packard SK-2501 Multimedia Keyboard"
+msgstr "Hewlett-Packard SK-2501 Multimedia Keyboard"
+
+#: xfree86.xml.in.h:128
+msgid "Hewlett-Packard SK-2505 Internet Keyboard"
+msgstr "Hewlett-Packard SK-2505 Internet Keyboard"
+
+#: xfree86.xml.in.h:129
+msgid "Hin"
+msgstr "Hin"
+
+#: xfree86.xml.in.h:130
+msgid "Hindi"
+msgstr "Hindi"
+
+#: xfree86.xml.in.h:131
+msgid "Honeywell Euroboard"
+msgstr "Honeywell Euroboard"
+
+#: xfree86.xml.in.h:132
+msgid "Hrv"
+msgstr "Hrv"
+
+#: xfree86.xml.in.h:133
+msgid "Hun"
+msgstr "Hun"
+
+#: xfree86.xml.in.h:134
+msgid "Hungarian"
+msgstr "Hongaars"
+
+#: xfree86.xml.in.h:135
+msgid "Hungarian (qwerty)"
+msgstr "Hongaars (qwerty)"
+
+#: xfree86.xml.in.h:136
+msgid "Hyper is mapped to the Win-keys."
+msgstr "Hiper is verbind aan die Win-sleutels."
+
+#: xfree86.xml.in.h:137
+msgid "IBM Rapid Access"
+msgstr "IBM Rapid Access"
+
+#: xfree86.xml.in.h:138
+msgid "IBM Rapid Access II"
+msgstr "IBM Rapid Access II"
+
+#: xfree86.xml.in.h:139
+msgid "IBM Rapid Access II (alternate option)"
+msgstr "IBM Rapid Access II (alternate option)"
+
+#: xfree86.xml.in.h:140
+msgid "IBM ThinkPad 560Z/600/600E/A22E"
+msgstr "IBM ThinkPad 560Z/600/600E/A22E"
+
+#: xfree86.xml.in.h:141
+msgid "INSCRIPT layout"
+msgstr "INSCRIPT-uitleg"
+
+#: xfree86.xml.in.h:142
+msgid "IS434"
+msgstr "IS434"
+
+#: xfree86.xml.in.h:143
+msgid "IS434 laptop"
+msgstr "IS434 laptop"
+
+#: xfree86.xml.in.h:144
+msgid "ISO Alternate"
+msgstr "ISO Alternatief"
+
+#: xfree86.xml.in.h:145
+msgid "Icelandic"
+msgstr "Yslandies"
+
+#: xfree86.xml.in.h:146
+msgid "Iku"
+msgstr "Iku"
+
+#: xfree86.xml.in.h:147
+msgid "Inuktitut"
+msgstr "Inuktitut"
+
+#: xfree86.xml.in.h:148
+msgid "Irish"
+msgstr "Iers"
+
+#: xfree86.xml.in.h:149
+msgid "Irl"
+msgstr "Irl"
+
+#: xfree86.xml.in.h:150
+msgid "Irn"
+msgstr "Irn"
+
+#: xfree86.xml.in.h:151
+msgid "Isl"
+msgstr "Isl"
+
+#: xfree86.xml.in.h:152
+msgid "Isr"
+msgstr "Isr"
+
+#: xfree86.xml.in.h:153
+msgid "Israeli"
+msgstr "Israelies"
+
+#: xfree86.xml.in.h:154
+msgid "Ita"
+msgstr "Ita"
+
+#: xfree86.xml.in.h:155
+msgid "Italian"
+msgstr "Italiaans"
+
+#: xfree86.xml.in.h:156
+msgid "Japanese"
+msgstr "Japanees"
+
+#: xfree86.xml.in.h:157
+msgid "Japanese 106-key"
+msgstr "Japanees 106-sleutel"
+
+#: xfree86.xml.in.h:158
+msgid "Jpn"
+msgstr "Jpn"
+
+#: xfree86.xml.in.h:159
+msgid "Kan"
+msgstr "Kan"
+
+#: xfree86.xml.in.h:160
+msgid "Kannada"
+msgstr "Kannada"
+
+#: xfree86.xml.in.h:161
+msgid "Keytronic FlexPro"
+msgstr "Keytronic FlexPro"
+
+#: xfree86.xml.in.h:162
+msgid "LAm"
+msgstr "LAm"
+
+#: xfree86.xml.in.h:163
+msgid "Laptop"
+msgstr "Skootrekenaar"
+
+#: xfree86.xml.in.h:164
+msgid "Laptop/notebook Compaq (eg. Armada) Laptop Keyboard"
+msgstr "Laptop/notebook Compaq (eg. Armada) Laptop Keyboard"
+
+#: xfree86.xml.in.h:165
+msgid "Laptop/notebook Compaq (eg. Presario) Internet Keyboard"
+msgstr "Laptop/notebook Compaq (eg. Presario) Internet Keyboard"
+
+#: xfree86.xml.in.h:166
+msgid "Laptop/notebook Dell Inspiron 8xxx"
+msgstr "Laptop/notebook Dell Inspiron 8xxx"
+
+#: xfree86.xml.in.h:167
+msgid "Latin"
+msgstr "Latyns"
+
+#: xfree86.xml.in.h:168
+msgid "Latin America"
+msgstr "Latyns Amerika"
+
+#: xfree86.xml.in.h:169
+msgid "Latvian"
+msgstr "Latvies"
+
+#: xfree86.xml.in.h:170
+msgid "Left Alt key changes group"
+msgstr "Linkerkant Alt-sleutel verander groep"
+
+#: xfree86.xml.in.h:171
+msgid "Left Ctrl key changes group"
+msgstr "Linkerkant Ctrl-sleutel verander groep"
+
+#: xfree86.xml.in.h:172
+msgid "Left Shift key changes group"
+msgstr "Linkerkant Shift-sleutel verander groep"
+
+#: xfree86.xml.in.h:173
+msgid "Left Win-key changes group"
+msgstr "Linkerkant Win-sleutel verander groep"
+
+#: xfree86.xml.in.h:174
+msgid "Left Win-key switches group while pressed"
+msgstr "Linkerkant Win-sleutel wissel groep terwyl gedruk"
+
+#: xfree86.xml.in.h:175
+msgid "Lithuanian azerty standard"
+msgstr "Lithuaniese azerty standaard"
+
+#: xfree86.xml.in.h:176
+msgid "Lithuanian qwerty \"numeric\""
+msgstr "Lithuanian qwerty \"numeries\""
+
+#: xfree86.xml.in.h:177
+msgid "Logitech Cordless Desktop"
+msgstr "Logitech Cordless Desktop"
+
+#: xfree86.xml.in.h:178
+msgid "Logitech Cordless Desktop Navigator"
+msgstr "Logitech Cordless Desktop Navigator"
+
+#: xfree86.xml.in.h:179
+msgid "Logitech Cordless Desktop Optical"
+msgstr "Logitech Cordless Desktop Optical"
+
+#: xfree86.xml.in.h:180
+msgid "Logitech Cordless Desktop Pro"
+msgstr "Logitech Cordless Desktop Pro"
+
+#: xfree86.xml.in.h:181
+msgid "Logitech Cordless Desktop Pro (alternate option)"
+msgstr "Logitech Cordless Desktop Pro (alternatiewe opsie)"
+
+#: xfree86.xml.in.h:182
+msgid "Logitech Cordless Desktop Pro (alternate option2)"
+msgstr "Logitech Cordless Desktop Pro (alternatiewe opsie2)"
+
+#: xfree86.xml.in.h:183
+msgid "Logitech Cordless Desktop iTouch"
+msgstr "Logitech Cordless Desktop iTouch"
+
+#: xfree86.xml.in.h:184
+msgid "Logitech Cordless Freedom/Desktop Navigator"
+msgstr "Logitech Cordless Freedom/Desktop Navigator"
+
+#: xfree86.xml.in.h:185
+msgid "Logitech Deluxe Access Keyboard"
+msgstr "Logitech Deluxe Access Keyboard"
+
+#: xfree86.xml.in.h:186
+msgid "Logitech Internet Keyboard"
+msgstr "Logitech Internet Keyboard"
+
+#: xfree86.xml.in.h:187
+msgid "Logitech Internet Navigator Keyboard"
+msgstr "Logitech Internet Navigator Keyboard"
+
+#: xfree86.xml.in.h:188
+msgid "Logitech iTouch"
+msgstr "Logitech iTouch"
+
+#: xfree86.xml.in.h:189
+msgid "Logitech iTouch Cordless Keyboard (model Y-RB6)"
+msgstr "Logitech iTouch Cordless Keyboard (model Y-RB6)"
+
+#: xfree86.xml.in.h:190
+msgid "Logitech iTouch keyboard Internet Navigator"
+msgstr "Logitech iTouch keyboard Internet Navigator"
+
+#: xfree86.xml.in.h:191
+msgid "Ltu"
+msgstr "Ltu"
+
+#: xfree86.xml.in.h:192
+msgid "Lva"
+msgstr "Lva"
+
+#: xfree86.xml.in.h:193
+msgid "Macedonian"
+msgstr "Masedonies"
+
+#: xfree86.xml.in.h:194
+msgid "Macintosh"
+msgstr "Macintosh"
+
+#: xfree86.xml.in.h:195
+msgid "Macintosh Old"
+msgstr "Macintosh (oud)"
+
+#: xfree86.xml.in.h:196
+msgid "Make CapsLock an additional Control"
+msgstr "Maak CapsLock 'n adisionele Kontrole"
+
+#: xfree86.xml.in.h:197
+msgid "Mal"
+msgstr "Mal"
+
+#: xfree86.xml.in.h:198
+msgid "Malayalam"
+msgstr "Malayalam"
+
+#: xfree86.xml.in.h:199
+msgid "Maltese"
+msgstr "Maltees"
+
+#: xfree86.xml.in.h:200
+msgid "Maltese (US layout)"
+msgstr "Maltese (VSA-uitleg)"
+
+#: xfree86.xml.in.h:201
+msgid "Memorex MX1998"
+msgstr "Memorex MX1998"
+
+#: xfree86.xml.in.h:202
+msgid "Memorex MX2500 EZ-Access Keyboard"
+msgstr "Memorex MX2500 EZ-Access Keyboard"
+
+#: xfree86.xml.in.h:203
+msgid "Memorex MX2750"
+msgstr "Memorex MX2750"
+
+#: xfree86.xml.in.h:204
+msgid "Menu is Compose"
+msgstr "Kieslys-sleutel is Komponeer"
+
+#: xfree86.xml.in.h:205
+msgid "Menu key changes group"
+msgstr "Kieslyssleutel verander groep"
+
+#: xfree86.xml.in.h:206
+msgid "Meta is mapped to the Win-keys."
+msgstr "Meta is verbind aan die Win-sleutels."
+
+#: xfree86.xml.in.h:207
+msgid "Meta is mapped to the left Win-key."
+msgstr "Meta is verbind aan die linkerkantste Win-sleutel."
+
+#: xfree86.xml.in.h:208
+msgid "Microsoft Internet Keyboard"
+msgstr "Microsoft Internetsleutelbord"
+
+#: xfree86.xml.in.h:209
+msgid "Microsoft Internet Keyboard Pro, Swedish"
+msgstr "Microsoft Internet Keyboard Pro, Sweeds"
+
+#: xfree86.xml.in.h:210
+msgid "Microsoft Natural"
+msgstr "Microsoft Natuurlik"
+
+#: xfree86.xml.in.h:211
+msgid "Microsoft Natural Keyboard Pro / Microsoft Internet Keyboard Pro"
+msgstr "Microsoft Natural Keyboard Pro / Microsoft Internet Keyboard Pro"
+
+#: xfree86.xml.in.h:212
+msgid "Microsoft Natural Keyboard Pro OEM"
+msgstr "Microsoft Natural Keyboard Pro OEM"
+
+#: xfree86.xml.in.h:213
+msgid "Microsoft Office Keyboard"
+msgstr "Microsoft Office sleutelbord"
+
+#: xfree86.xml.in.h:214
+msgid "Miscellaneous compatibility options"
+msgstr "Verskeie versoenbaarheid-opsies"
+
+#: xfree86.xml.in.h:215
+msgid "Mkd"
+msgstr "Mkd"
+
+#: xfree86.xml.in.h:216
+msgid "Mlt"
+msgstr "Mlt"
+
+#: xfree86.xml.in.h:217
+msgid "Mmr"
+msgstr "Mmr"
+
+#: xfree86.xml.in.h:218
+msgid "Mng"
+msgstr "Mng"
+
+#: xfree86.xml.in.h:219
+msgid "Mongolian"
+msgstr "Mongolees"
+
+#: xfree86.xml.in.h:220
+msgid "Nld"
+msgstr "Nld"
+
+#: xfree86.xml.in.h:221
+msgid "Nor"
+msgstr "Nor"
+
+#: xfree86.xml.in.h:222
+msgid "Northern Saami (Finland)"
+msgstr "Noordelike Saami (Finland)"
+
+#: xfree86.xml.in.h:223
+msgid "Northern Saami (Norway)"
+msgstr "Noordelike Saami (Noorweë)"
+
+#: xfree86.xml.in.h:224
+msgid "Northern Saami (Sweden)"
+msgstr "Noordelike Saami (Swede)"
+
+#: xfree86.xml.in.h:225
+msgid "Northgate OmniKey 101"
+msgstr "Northgate OmniKey 101"
+
+#: xfree86.xml.in.h:226
+msgid "Norwegian"
+msgstr "Noorweegs"
+
+#: xfree86.xml.in.h:227
+msgid "Num_Lock LED shows alternative group"
+msgstr "Num_Lock LED vertoon alternatiewe groep"
+
+#: xfree86.xml.in.h:228
+msgid "Ogh"
+msgstr "Ogh"
+
+#: xfree86.xml.in.h:229
+msgid "Ogham"
+msgstr "Ogham"
+
+#: xfree86.xml.in.h:230
+msgid "Oretec MCK-800 MM/Internet keyboard"
+msgstr "Oretec MCK-800 MM/Internet keyboard"
+
+#: xfree86.xml.in.h:231
+msgid "Ori"
+msgstr "Ori"
+
+#: xfree86.xml.in.h:232
+msgid "Oriya"
+msgstr "Oriya"
+
+#: xfree86.xml.in.h:233
+msgid "PC-98xx Series"
+msgstr "PC-98xx Reeks"
+
+#: xfree86.xml.in.h:234
+msgid "PC104"
+msgstr "PC104"
+
+#: xfree86.xml.in.h:235
+msgid "Pan"
+msgstr "Pan"
+
+#: xfree86.xml.in.h:236
+msgid "Phonetic"
+msgstr "Foneties"
+
+#: xfree86.xml.in.h:237
+msgid "Pol"
+msgstr "Pol"
+
+#: xfree86.xml.in.h:238
+msgid "Polish"
+msgstr "Pools"
+
+#: xfree86.xml.in.h:239
+msgid "Polish (qwertz)"
+msgstr "Pools (qwertz)"
+
+#: xfree86.xml.in.h:240
+msgid "Polytonic"
+msgstr "Polytonic"
+
+#: xfree86.xml.in.h:241
+msgid "Portuguese"
+msgstr "Portugees"
+
+#: xfree86.xml.in.h:242
+msgid "PowerPC PS/2"
+msgstr "PowerPC PS/2"
+
+#: xfree86.xml.in.h:243
+msgid "Press Left Win-key to choose 3rd level"
+msgstr "Druk Linkerkantste Win-sleutel om die 3de vlak te kies"
+
+#: xfree86.xml.in.h:244
+msgid "Press Menu key to choose 3rd level"
+msgstr "Druk Kieslys-sleutel om die 3de vlak te kies"
+
+#: xfree86.xml.in.h:245
+msgid "Press Right Control to choose 3rd level"
+msgstr "Druk Regterkantste Ctrl-sleutel om die 3de vlak te kies"
+
+#: xfree86.xml.in.h:246
+msgid "Press Right Win-key to choose 3rd level"
+msgstr "Druk Regterkantste Win-sleutel om die 3de vlak te kies"
+
+#: xfree86.xml.in.h:247
+msgid "Press any of Win-keys to choose 3rd level"
+msgstr "Druk enige van die Win-sleutels om die 3de vlak te kies"
+
+#: xfree86.xml.in.h:248
+msgid "Propeller Voyager (KTEZ-1000)"
+msgstr "Propeller Voyager (KTEZ-1000)"
+
+#: xfree86.xml.in.h:249
+msgid "Prt"
+msgstr "Prt"
+
+#: xfree86.xml.in.h:250
+msgid "QTronix Scorpius 98N+"
+msgstr "QTronix Scorpius 98N+"
+
+#: xfree86.xml.in.h:251
+msgid "R-Alt switches group while pressed"
+msgstr "R-Alt wissel die groep terwyl gedruk"
+
+#: xfree86.xml.in.h:252
+msgid "Right Alt is Compose"
+msgstr "Regterkant Alt is Komponeer"
+
+#: xfree86.xml.in.h:253
+msgid "Right Alt key changes group"
+msgstr "Regterkant Alt-sleutel verander groep"
+
+#: xfree86.xml.in.h:254
+msgid "Right Control key works as Right Alt"
+msgstr "Regterkant Ctrl-sleutel werk soos Regterkant Alt"
+
+#: xfree86.xml.in.h:255
+msgid "Right Ctrl key changes group"
+msgstr "Regterkant Ctrl-sleutel verander groep"
+
+#: xfree86.xml.in.h:256
+msgid "Right Shift key changes group"
+msgstr "Regterkant Shift-sleutel verander groep"
+
+#: xfree86.xml.in.h:257
+msgid "Right Win-key changes group"
+msgstr "Regterkant Win-sleutel verander groep"
+
+#: xfree86.xml.in.h:258
+msgid "Right Win-key is Compose"
+msgstr "Regterkant Win-sleutel is Komponeer"
+
+#: xfree86.xml.in.h:259
+msgid "Right Win-key switches group while pressed"
+msgstr "Regterkant Win-sleutel skakel groep terwyl gedruk"
+
+#: xfree86.xml.in.h:260
+msgid "Romanian"
+msgstr "Romeens"
+
+#: xfree86.xml.in.h:261
+msgid "Rou"
+msgstr "Rou"
+
+#: xfree86.xml.in.h:262
+msgid "Rus"
+msgstr "Rus"
+
+#: xfree86.xml.in.h:263
+msgid "Russian"
+msgstr "Russies"
+
+#: xfree86.xml.in.h:264
+msgid "SK-1300"
+msgstr "SK-1300"
+
+#: xfree86.xml.in.h:265
+msgid "SK-2500"
+msgstr "SK-2500"
+
+#: xfree86.xml.in.h:266
+msgid "SK-6200"
+msgstr "SK-6200"
+
+#: xfree86.xml.in.h:267
+msgid "SK-7100"
+msgstr "SK-7100"
+
+#: xfree86.xml.in.h:268
+msgid "SVEN Ergonomic 2500"
+msgstr "SVEN Ergonomic 2500"
+
+#: xfree86.xml.in.h:269
+msgid "Samsung SDM 4500P"
+msgstr "Samsung SDM 4500P"
+
+#: xfree86.xml.in.h:270
+msgid "Samsung SDM 4510P"
+msgstr "Samsung SDM 4510P"
+
+#: xfree86.xml.in.h:271
+msgid "Sapmi"
+msgstr "Sapmi"
+
+#: xfree86.xml.in.h:272
+msgid "Scg"
+msgstr "Scg"
+
+#: xfree86.xml.in.h:273
+msgid "Scroll_Lock LED shows alternative group"
+msgstr "Scroll_Lock LED wys alternatiewe groep"
+
+#: xfree86.xml.in.h:274
+msgid "Serbian"
+msgstr "Serbies"
+
+#: xfree86.xml.in.h:275
+msgid "Shift with numpad keys works as in MS Windows"
+msgstr "Shift met numeriese sleutels werk soos in MS Windows"
+
+#: xfree86.xml.in.h:276
+msgid "Slovak"
+msgstr "Slovaaks"
+
+#: xfree86.xml.in.h:277
+msgid "Slovak (qwerty)"
+msgstr "Slovaaks (qwerty)"
+
+#: xfree86.xml.in.h:278
+msgid "Slovenian"
+msgstr "Sloveens"
+
+#: xfree86.xml.in.h:279
+msgid "Sme"
+msgstr "Sme"
+
+#: xfree86.xml.in.h:280
+msgid "Spanish"
+msgstr "Spaans"
+
+#: xfree86.xml.in.h:281
+msgid "Special keys (Ctrl+Alt+&lt;key&gt;) handled in a server."
+msgstr "Spesiale sleutels (Ctrl+Alt+&lt;sleutel&gt;) word hanteer in 'n bediener."
+
+#: xfree86.xml.in.h:282
+msgid "Standard"
+msgstr "Standaard"
+
+#: xfree86.xml.in.h:283
+msgid "Sun dead keys"
+msgstr "Sun (dooie sleutels)"
+
+#: xfree86.xml.in.h:284
+msgid "Super is mapped to the Win-keys (default)."
+msgstr "Super is verbind aan die Win-sleutels (verstek)."
+
+#: xfree86.xml.in.h:285
+msgid "Sv"
+msgstr "Sv"
+
+#: xfree86.xml.in.h:286
+msgid "Svk"
+msgstr "Svk"
+
+#: xfree86.xml.in.h:287
+msgid "Svn"
+msgstr "Svn"
+
+#: xfree86.xml.in.h:288
+msgid "Swap Control and Caps Lock"
+msgstr "Ruil Ctrl en CapsLock om"
+
+#: xfree86.xml.in.h:289
+msgid "Swe"
+msgstr "Swe"
+
+#: xfree86.xml.in.h:290
+msgid "Swedish"
+msgstr "Sweeds"
+
+#: xfree86.xml.in.h:291
+msgid "Swiss French"
+msgstr "Switserse Frans"
+
+#: xfree86.xml.in.h:292
+msgid "Swiss German"
+msgstr "Switserse Duits"
+
+#: xfree86.xml.in.h:293
+msgid "Symplon PaceBook (tablet PC)"
+msgstr "Symplon PaceBook (tablet PC)"
+
+#: xfree86.xml.in.h:294
+msgid "Syr"
+msgstr "Syr"
+
+#: xfree86.xml.in.h:295
+msgid "Syriac"
+msgstr "Siries"
+
+#: xfree86.xml.in.h:296
+msgid "Tajik"
+msgstr "Tajikees"
+
+#: xfree86.xml.in.h:297
+msgid "Tamil"
+msgstr "Tamilees"
+
+#: xfree86.xml.in.h:298
+msgid "Tel"
+msgstr "Tel"
+
+#: xfree86.xml.in.h:299
+msgid "Telugu"
+msgstr "Telugu"
+
+#: xfree86.xml.in.h:300
+msgid "Tha"
+msgstr "Tha"
+
+#: xfree86.xml.in.h:301
+msgid "Thai (Kedmanee)"
+msgstr "Thai (Kedmanee)"
+
+#: xfree86.xml.in.h:302
+msgid "Thai (Pattachote)"
+msgstr "Thai (Pattachote)"
+
+#: xfree86.xml.in.h:303
+msgid "Thai (TIS-820.2538)"
+msgstr "Thai (TIS-820.2538)"
+
+#: xfree86.xml.in.h:304
+msgid "Third level choosers"
+msgstr "Derdevlak kiesers"
+
+#: xfree86.xml.in.h:305
+msgid "Tjk"
+msgstr "Tjk"
+
+#: xfree86.xml.in.h:306
+msgid "Tml"
+msgstr "Tml"
+
+#: xfree86.xml.in.h:307
+msgid "Toshiba Satellite S3000"
+msgstr "Toshiba Satellite S3000"
+
+#: xfree86.xml.in.h:308
+msgid "Trust Direct Access Keyboard"
+msgstr "Trust Direct Access Keyboard"
+
+#: xfree86.xml.in.h:309
+msgid "Trust Wireless Keyboard Classic"
+msgstr "Trust Wireless Keyboard Classic"
+
+#: xfree86.xml.in.h:310
+msgid "Tur"
+msgstr "Tur"
+
+#: xfree86.xml.in.h:311
+msgid "Turkish"
+msgstr "Turks"
+
+#: xfree86.xml.in.h:312
+msgid "Turkish (F)"
+msgstr "Turks (F)"
+
+#: xfree86.xml.in.h:313
+msgid "Turkish Alt-Q Layout"
+msgstr "Turks Alt-Q-uitleg"
+
+#: xfree86.xml.in.h:314
+msgid "U.S. English"
+msgstr "VSA Engels"
+
+#: xfree86.xml.in.h:315
+msgid "U.S. English w/ ISO9995-3"
+msgstr "VSA Engels met ISO9995-3"
+
+#: xfree86.xml.in.h:316
+msgid "U.S. English w/ dead keys"
+msgstr "VSA Engels met dooie sleutels"
+
+#: xfree86.xml.in.h:317
+msgid "US"
+msgstr "VSA"
+
+#: xfree86.xml.in.h:318
+msgid "US keyboard with Romanian letters"
+msgstr "VSA sleutelbord met Romeense letters"
+
+#: xfree86.xml.in.h:319
+msgid "USA"
+msgstr "VSA"
+
+#: xfree86.xml.in.h:320
+msgid "Ukr"
+msgstr "Ukr"
+
+#: xfree86.xml.in.h:321
+msgid "Ukrainian"
+msgstr "Ukraïnies"
+
+#: xfree86.xml.in.h:322
+msgid "UnicodeExpert"
+msgstr "UnicodeExpert"
+
+#: xfree86.xml.in.h:323
+msgid "United Kingdom"
+msgstr "Vereenigde Koninkryk"
+
+#: xfree86.xml.in.h:324
+msgid "Use keyboard LED to show alternative group"
+msgstr "Gebruik sleutelbord LED om alternatiewe groep te wys"
+
+#: xfree86.xml.in.h:325
+msgid "Uses internal capitalization. Shift cancels Caps."
+msgstr "Gebruik interne bokas. Shift kanseleer Caps."
+
+#: xfree86.xml.in.h:326
+msgid "Uses internal capitalization. Shift doesn't cancel Caps."
+msgstr "Gebruik interne bokas. Shift kanseleer nie Caps nie."
+
+#: xfree86.xml.in.h:327
+msgid "Uzb"
+msgstr "Uzb"
+
+#: xfree86.xml.in.h:328
+msgid "Uzbek"
+msgstr "Uzbek"
+
+#: xfree86.xml.in.h:329
+msgid "Vietnamese"
+msgstr "Viëtnamees"
+
+#: xfree86.xml.in.h:330
+msgid "Vnm"
+msgstr "Vnm"
+
+#: xfree86.xml.in.h:331
+msgid "Winbook Model XP5"
+msgstr "Winbook Model XP5"
+
+#: xfree86.xml.in.h:332
+msgid "Winkeys"
+msgstr "Winkeys"
+
+#: xfree86.xml.in.h:333
+msgid "Yahoo! Internet Keyboard"
+msgstr "Yahoo! Internetsleutelbord"
+
+#: xfree86.xml.in.h:334
+msgid "Yug"
+msgstr "Yug"
+
+#: xfree86.xml.in.h:335
+msgid "Yugoslavian"
+msgstr "Joegoslaafs"
+
+#: xfree86.xml.in.h:336
+msgid "abnt2"
+msgstr "abnt2"
+
+#: xfree86.xml.in.h:337
+msgid "azerty"
+msgstr "azerty"
+
+#: xfree86.xml.in.h:338
+msgid "azerty/digits"
+msgstr "azerty/syfers"
+
+#: xfree86.xml.in.h:339
+msgid "bksl"
+msgstr "bksl"
+
+#: xfree86.xml.in.h:340
+msgid "digits"
+msgstr "syfers"
+
+#: xfree86.xml.in.h:341
+msgid "l2/101/qwerty/comma"
+msgstr "l2/101/qwerty/komma"
+
+#: xfree86.xml.in.h:342
+msgid "l2/101/qwerty/dot"
+msgstr "l2/101/qwerty/dot"
+
+#: xfree86.xml.in.h:343
+msgid "l2/101/qwertz/comma"
+msgstr "l2/101/qwertz/komma"
+
+#: xfree86.xml.in.h:344
+msgid "l2/101/qwertz/dot"
+msgstr "l2/101/qwertz/dot"
+
+#: xfree86.xml.in.h:345
+msgid "l2/102/qwerty/comma"
+msgstr "l2/102/qwerty/komma"
+
+#: xfree86.xml.in.h:346
+msgid "l2/102/qwerty/dot"
+msgstr "l2/102/qwerty/dot"
+
+#: xfree86.xml.in.h:347
+msgid "l2/102/qwertz/comma"
+msgstr "l2/102/qwertz/komma"
+
+#: xfree86.xml.in.h:348
+msgid "l2/102/qwertz/dot"
+msgstr "l2/102/qwertz/dot"
+
+#: xfree86.xml.in.h:349
+msgid "laptop"
+msgstr "skootrekenaar"
+
+#: xfree86.xml.in.h:350
+msgid "lyx"
+msgstr "lyx"
+
+#: xfree86.xml.in.h:351
+msgid "qwerty"
+msgstr "qwerty"
+
+#: xfree86.xml.in.h:352
+msgid "qwerty/digits"
+msgstr "qwerty/syfers"
+
+#: xfree86.xml.in.h:353
+msgid "sefi"
+msgstr "sefi"
+
+#: xfree86.xml.in.h:354
+msgid "si1452"
+msgstr "si1452"
+
+#: xfree86.xml.in.h:355
+msgid "uni/101/qwerty/comma"
+msgstr "uni/101/qwerty/komma"
+
+#: xfree86.xml.in.h:356
+msgid "uni/101/qwerty/dot"
+msgstr "uni/101/qwerty/dot"
+
+#: xfree86.xml.in.h:357
+msgid "uni/101/qwertz/comma"
+msgstr "uni/101/qwertz/komma"
+
+#: xfree86.xml.in.h:358
+msgid "uni/101/qwertz/dot"
+msgstr "uni/101/qwertz/dot"
+
+#: xfree86.xml.in.h:359
+msgid "uni/102/qwerty/comma"
+msgstr "uni/102/qwerty/komma"
+
+#: xfree86.xml.in.h:360
+msgid "uni/102/qwerty/dot"
+msgstr "uni/102/qwerty/dot"
+
+#: xfree86.xml.in.h:361
+msgid "uni/102/qwertz/comma"
+msgstr "uni/102/qwertz/comma"
+
+#: xfree86.xml.in.h:362
+msgid "uni/102/qwertz/dot"
+msgstr "uni/102/qwertz/dot"
diff --git a/xorg-server/xkeyboard-config/po/az.po b/xorg-server/xkeyboard-config/po/az.po
index adb65b123..d15d1bf64 100644
--- a/xorg-server/xkeyboard-config/po/az.po
+++ b/xorg-server/xkeyboard-config/po/az.po
@@ -1,1465 +1,1465 @@
-# Translation of 'xfree86+xkb+xml' messages to Azerbaijani.
-# Copyright (C) 2004 Free Software Foundation, Inc.
-# This file is put in the public domain.
-# MÉ™tin Æmirov <metin@karegen.com>, 2004.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: xfree86_xkb_xml-4.4pre1\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2003-11-25 23:38+0000\n"
-"PO-Revision-Date: 2004-03-21 20:00+0200\n"
-"Last-Translator: Metin Amiroff <metin@karegen.com>\n"
-"Language-Team: Azerbaijani <translation-team-az@lists.sourceforge.net>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"X-Generator: KBabel 1.0.2\n"
-
-#: xfree86.xml.in.h:1
-msgid "\"Typewriter\""
-msgstr "\"Yazı Makinası\""
-
-#: xfree86.xml.in.h:2
-msgid "A Tamil typewrite-style keymap; TAB encoding"
-msgstr "Tamil yazı makinası tərzində düzülüş TAB kodlaması"
-
-#: xfree86.xml.in.h:3
-msgid "A Tamil typewrite-style keymap; TSCII encoding"
-msgstr "Tamil yazı makinası tərzində düzülüş TSCII kodlaması"
-
-#: xfree86.xml.in.h:4
-msgid "A Tamil typewrite-style keymap; Unicode encoding"
-msgstr "Tamil yazı makinası tərzində düzülüş Yunikod kodlaması"
-
-#: xfree86.xml.in.h:5
-msgid "ACPI Standard"
-msgstr "ACPI Standartı"
-
-#: xfree86.xml.in.h:6
-msgid "Acer AirKey V"
-msgstr "Acer AirKey V"
-
-#: xfree86.xml.in.h:7
-msgid "Acts as Shift with locking. Shift cancels Caps."
-msgstr "Qıfıllı Shift kimi davranır. Shift Caps-i ləğv edir."
-
-#: xfree86.xml.in.h:8
-msgid "Acts as Shift with locking. Shift doesn't cancel Caps."
-msgstr "Qıfıllı Shift kimi davranır. Shift Caps-i ləğv etmir."
-
-#: xfree86.xml.in.h:9
-msgid "Add the standard behavior to Menu key."
-msgstr "Menyu düyməsinə standart davranış əlavə et."
-
-#: xfree86.xml.in.h:10
-msgid "Advance Scorpius KI"
-msgstr "Advance Scorpius KI"
-
-#: xfree86.xml.in.h:11
-msgid "Alb"
-msgstr "Alb"
-
-#: xfree86.xml.in.h:12
-msgid "Albanian"
-msgstr "Albanca"
-
-#: xfree86.xml.in.h:13
-msgid "Alt and Meta on the Alt keys (default)."
-msgstr "Alt düymələri üstündə Alt və Meta (ön qurğulu)."
-
-#: xfree86.xml.in.h:14
-msgid "Alt+Control changes group"
-msgstr "Alt+Control düyməsi qrupu dəyişdirir"
-
-#: xfree86.xml.in.h:15
-msgid "Alt+Shift changes group"
-msgstr "Alt+Shift düyməsi qrupu dəyişdirir"
-
-#: xfree86.xml.in.h:16
-msgid "Alt/Win key behavior"
-msgstr "Alt/Win düyməsinin davranışları"
-
-#: xfree86.xml.in.h:17
-msgid "Alternate"
-msgstr "ÆvÉ™z Et"
-
-#: xfree86.xml.in.h:18
-msgid "Arabic"
-msgstr "ÆrÉ™bcÉ™"
-
-#: xfree86.xml.in.h:19
-msgid "Arb"
-msgstr "Ærb"
-
-#: xfree86.xml.in.h:20
-msgid "Arm"
-msgstr "Erm"
-
-#: xfree86.xml.in.h:21
-msgid "Armenian"
-msgstr "Ermənicə"
-
-#: xfree86.xml.in.h:22
-msgid "Aze"
-msgstr "AzÉ™"
-
-#: xfree86.xml.in.h:23
-msgid "Azerbaijani"
-msgstr "Azərbaycanca"
-
-#: xfree86.xml.in.h:24
-msgid "BTC 5090"
-msgstr "BTC 5090"
-
-#: xfree86.xml.in.h:25
-msgid "BTC 5113RF Multimedia"
-msgstr "BTC 5113RF Multimedia"
-
-#: xfree86.xml.in.h:26
-msgid "BTC 5126T"
-msgstr "BTC 5126T"
-
-#: xfree86.xml.in.h:27
-msgid "BTC 9000"
-msgstr "BTC 9000"
-
-#: xfree86.xml.in.h:28
-msgid "BTC 9000A"
-msgstr "BTC 9000A"
-
-#: xfree86.xml.in.h:29
-msgid "BTC 9001AH"
-msgstr "BTC 9001AH"
-
-#: xfree86.xml.in.h:30
-msgid "Basic"
-msgstr "Æsas"
-
-#: xfree86.xml.in.h:31
-msgid "Bel"
-msgstr "Bel"
-
-#: xfree86.xml.in.h:32
-msgid "Belarusian"
-msgstr "Belarusca"
-
-#: xfree86.xml.in.h:33
-msgid "Belgian"
-msgstr "Belçikaca"
-
-#: xfree86.xml.in.h:34
-msgid "Ben"
-msgstr "Ben"
-
-#: xfree86.xml.in.h:35
-msgid "Bengali"
-msgstr "Benqalca"
-
-#: xfree86.xml.in.h:36
-msgid "Bgr"
-msgstr "Bgr"
-
-#: xfree86.xml.in.h:37
-msgid "Bih"
-msgstr "Bih"
-
-#: xfree86.xml.in.h:38
-msgid "Blr"
-msgstr "Blr"
-
-#: xfree86.xml.in.h:39
-msgid "Bosnian"
-msgstr "Bosniyaca"
-
-#: xfree86.xml.in.h:40
-msgid "Both Alt keys together change group"
-msgstr "İki Alt düyməsi də bərabər qrupu dəyişdirir"
-
-#: xfree86.xml.in.h:41
-msgid "Both Ctrl keys together change group"
-msgstr "İki Ctrl düyməsi də bərabər qrupu dəyişdirir"
-
-#: xfree86.xml.in.h:42
-msgid "Both Shift keys together change group"
-msgstr "Hər iki Shift düyməsi qrupu dəyişdirir"
-
-#: xfree86.xml.in.h:43
-msgid "Both Win-keys switch group while pressed"
-msgstr "İki Win düyməsi də basılı olduğu müddətcə qrupu dəyişdirir"
-
-#: xfree86.xml.in.h:44
-msgid "Bra"
-msgstr "Bra"
-
-#: xfree86.xml.in.h:45
-msgid "Brazilian"
-msgstr "Brazilya düzülüşü"
-
-#: xfree86.xml.in.h:46
-msgid "Brazilian ABNT2"
-msgstr "Brazilya düzülüşü ABNT2"
-
-#: xfree86.xml.in.h:47
-msgid "Brother Internet Keyboard"
-msgstr "Brother Internet Keyboard"
-
-#: xfree86.xml.in.h:48
-msgid "Bulgarian"
-msgstr "Bolqarca"
-
-#: xfree86.xml.in.h:49
-msgid "Burmese"
-msgstr "Burmaca"
-
-#: xfree86.xml.in.h:50
-msgid "Can"
-msgstr "Kan"
-
-#: xfree86.xml.in.h:51
-msgid "Canadian"
-msgstr "Kanada düzülüşü"
-
-#: xfree86.xml.in.h:52
-msgid "Caps Lock key changes group"
-msgstr "Caps Lock düyməsi qrupu dəyişdirir"
-
-#: xfree86.xml.in.h:53
-msgid "CapsLock key behavior"
-msgstr "CapsLock düyməsinin davranışı"
-
-#: xfree86.xml.in.h:54
-msgid "Caps_Lock LED shows alternative group"
-msgstr "Caps_Lock LED-ləri alternativ qrupları göstərir"
-
-#: xfree86.xml.in.h:55
-msgid "Cherry Blue Line CyBo@rd"
-msgstr "Cherry Blue Line CyBo@rd"
-
-#: xfree86.xml.in.h:56
-msgid "Cherry Blue Line CyBo@rd (alternate option)"
-msgstr "Cherry Blue Line CyBo@rd (alternate option)"
-
-#: xfree86.xml.in.h:57
-msgid "Chicony Internet Keyboard"
-msgstr "Chicony Internet Keyboard"
-
-#: xfree86.xml.in.h:58
-msgid "Chicony KB-9885"
-msgstr "Chicony KB-9885"
-
-#: xfree86.xml.in.h:59
-msgid "CloGaelach"
-msgstr "CloGaelach"
-
-#: xfree86.xml.in.h:60
-msgid "CloGaelach Laptop"
-msgstr "CloGaelach Laptop"
-
-#: xfree86.xml.in.h:61
-msgid "Compaq Easy Access Keyboard"
-msgstr "Compaq Easy Access Keyboard"
-
-#: xfree86.xml.in.h:62
-msgid "Compaq Internet Keyboard (13 keys)"
-msgstr "Compaq Internet Keyboard (13 düymə)"
-
-#: xfree86.xml.in.h:63
-msgid "Compaq Internet Keyboard (18 keys)"
-msgstr "Compaq Internet Keyboard (18 düymə)"
-
-#: xfree86.xml.in.h:64
-msgid "Compaq Internet Keyboard (7 keys)"
-msgstr "Compaq Internet Keyboard (7 düymə)"
-
-#: xfree86.xml.in.h:65
-msgid "Compaq iPaq Keyboard"
-msgstr "Compaq iPaq Keyboard"
-
-#: xfree86.xml.in.h:66
-msgid "Control Key Position"
-msgstr "Control Düyməsinin Yeri"
-
-#: xfree86.xml.in.h:67
-msgid "Control key at bottom left"
-msgstr "Control düyməsi sol altda"
-
-#: xfree86.xml.in.h:68
-msgid "Control key at left of 'A'"
-msgstr "Control düyməsi 'A' hərfinin solunda"
-
-#: xfree86.xml.in.h:69
-msgid "Control+Shift changes group"
-msgstr "Control+Shift düyməsi qrupu dəyişdirir"
-
-#: xfree86.xml.in.h:70
-msgid "Croatian"
-msgstr "Xorvatca"
-
-#: xfree86.xml.in.h:71
-msgid "Cyrillic"
-msgstr "Kiril"
-
-#: xfree86.xml.in.h:72
-msgid "Cze"
-msgstr "Çex"
-
-#: xfree86.xml.in.h:73
-msgid "Czech"
-msgstr "Çexcə"
-
-#: xfree86.xml.in.h:74
-msgid "Czech (qwerty)"
-msgstr "Çexcə (qwerty)"
-
-#: xfree86.xml.in.h:75
-msgid "Danish"
-msgstr "Danimarkaca"
-
-#: xfree86.xml.in.h:76
-msgid "Dead acute"
-msgstr "Dead acute"
-
-#: xfree86.xml.in.h:77
-msgid "Dead grave acute"
-msgstr "Dead grave acute"
-
-#: xfree86.xml.in.h:78
-msgid "Dell"
-msgstr "Dell"
-
-#: xfree86.xml.in.h:79
-msgid "Dell 101-key PC"
-msgstr "Dell 101-key PC"
-
-#: xfree86.xml.in.h:80
-msgid "Deu"
-msgstr "Deu"
-
-#: xfree86.xml.in.h:81
-msgid "Dexxa Wireless Desktop Keyboard"
-msgstr "Dexxa Wireless Desktop Keyboard"
-
-#: xfree86.xml.in.h:82
-msgid "Diamond 9801 / 9802 series"
-msgstr "Diamond 9801 / 9802 seryaları"
-
-#: xfree86.xml.in.h:83
-msgid "Dnk"
-msgstr "Dnk"
-
-#: xfree86.xml.in.h:84
-msgid "Dutch"
-msgstr "Niderlandca"
-
-#: xfree86.xml.in.h:85
-msgid "Dvo"
-msgstr "Dvo"
-
-#: xfree86.xml.in.h:86
-msgid "Dvorak"
-msgstr "Dvorak"
-
-#: xfree86.xml.in.h:87
-msgid "Eliminate dead keys"
-msgstr "Ölü düymələri sayma"
-
-#: xfree86.xml.in.h:88
-msgid "Ennyah DKB-1008"
-msgstr "Ennyah DKB-1008"
-
-#: xfree86.xml.in.h:89
-msgid "Esp"
-msgstr "Ä°sp"
-
-#: xfree86.xml.in.h:90
-msgid "Est"
-msgstr "Est"
-
-#: xfree86.xml.in.h:91
-msgid "Estonian"
-msgstr "Estonca"
-
-#: xfree86.xml.in.h:92
-msgid "Everex STEPnote"
-msgstr "Everex STEPnote"
-
-#: xfree86.xml.in.h:93
-msgid "Extended"
-msgstr "Uzadılmış"
-
-#: xfree86.xml.in.h:94
-msgid "Fao"
-msgstr "Fao"
-
-#: xfree86.xml.in.h:95
-msgid "Faroese"
-msgstr "FaroescÉ™"
-
-#: xfree86.xml.in.h:96
-msgid "Farsi"
-msgstr "Farsca"
-
-#: xfree86.xml.in.h:97
-msgid "Fin"
-msgstr "Fin"
-
-#: xfree86.xml.in.h:98
-msgid "Finnish"
-msgstr "FincÉ™"
-
-#: xfree86.xml.in.h:99
-msgid "Fra"
-msgstr "Fra"
-
-#: xfree86.xml.in.h:100
-msgid "French"
-msgstr "Fransızca"
-
-#: xfree86.xml.in.h:101
-msgid "French (alternative)"
-msgstr "Fransızca (alternativ)"
-
-#: xfree86.xml.in.h:102
-msgid "French Canadian"
-msgstr "Kanada Fransızcası"
-
-#: xfree86.xml.in.h:103
-msgid "GBr"
-msgstr "GBr"
-
-#: xfree86.xml.in.h:104
-msgid "Generic 101-key PC"
-msgstr "Generic 101-key PC"
-
-#: xfree86.xml.in.h:105
-msgid "Generic 102-key (Intl) PC"
-msgstr "Generic 102-key (Intl) PC"
-
-#: xfree86.xml.in.h:106
-msgid "Generic 104-key PC"
-msgstr "Generic 104-key PC"
-
-#: xfree86.xml.in.h:107
-msgid "Generic 105-key (Intl) PC"
-msgstr "Generic 105-key (Intl) PC"
-
-#: xfree86.xml.in.h:108
-msgid "Genius Comfy KB-16M / Genius MM Keyboard KWD-910"
-msgstr "Genius Comfy KB-16M / Genius MM Keyboard KWD-910"
-
-#: xfree86.xml.in.h:109
-msgid "Geo"
-msgstr "Gür"
-
-#: xfree86.xml.in.h:110
-msgid "Georgian (latin)"
-msgstr "Gürcücə (latın)"
-
-#: xfree86.xml.in.h:111
-msgid "Georgian (russian)"
-msgstr "Gürcücə (kiril)"
-
-#: xfree86.xml.in.h:112
-msgid "German"
-msgstr "Almaca"
-
-#: xfree86.xml.in.h:113
-msgid "Grc"
-msgstr "Yun"
-
-#: xfree86.xml.in.h:114
-msgid "Greek"
-msgstr "Yunanca"
-
-#: xfree86.xml.in.h:115
-msgid "Group Shift/Lock behavior"
-msgstr "Shift/Lock Qrupu Davranışı"
-
-#: xfree86.xml.in.h:116
-msgid "Guj"
-msgstr "Guj"
-
-#: xfree86.xml.in.h:117
-msgid "Gujarati"
-msgstr "GujaraticÉ™"
-
-#: xfree86.xml.in.h:118
-msgid "Gurmukhi"
-msgstr "Gurmukhi"
-
-#: xfree86.xml.in.h:119
-msgid "Hewlett-Packard Internet Keyboard"
-msgstr "Hewlett-Packard Internet Keyboard"
-
-#: xfree86.xml.in.h:120
-msgid "Hewlett-Packard Omnibook 500 FA"
-msgstr "Hewlett-Packard Omnibook 500 FA"
-
-#: xfree86.xml.in.h:121
-msgid "Hewlett-Packard Omnibook 5xx"
-msgstr "Hewlett-Packard Omnibook 5xx"
-
-#: xfree86.xml.in.h:122
-msgid "Hewlett-Packard Omnibook 6000/6100"
-msgstr "Hewlett-Packard Omnibook 6000/6100"
-
-#: xfree86.xml.in.h:123
-msgid "Hewlett-Packard Omnibook XE3 GC"
-msgstr "Hewlett-Packard Omnibook XE3 GC"
-
-#: xfree86.xml.in.h:124
-msgid "Hewlett-Packard Omnibook XE3 GF"
-msgstr "Hewlett-Packard Omnibook XE3 GF"
-
-#: xfree86.xml.in.h:125
-msgid "Hewlett-Packard Omnibook XT1000"
-msgstr "Hewlett-Packard Omnibook XT1000"
-
-#: xfree86.xml.in.h:126
-msgid "Hewlett-Packard Pavilion ZT11xx"
-msgstr "Hewlett-Packard Pavilion ZT11xx"
-
-#: xfree86.xml.in.h:127
-msgid "Hewlett-Packard SK-2501 Multimedia Keyboard"
-msgstr "Hewlett-Packard SK-2501 Multimedia Keyboard"
-
-#: xfree86.xml.in.h:128
-msgid "Hewlett-Packard SK-2505 Internet Keyboard"
-msgstr "Hewlett-Packard SK-2505 Internet Keyboard"
-
-#: xfree86.xml.in.h:129
-msgid "Hin"
-msgstr "Hin"
-
-#: xfree86.xml.in.h:130
-msgid "Hindi"
-msgstr "Hindi"
-
-#: xfree86.xml.in.h:131
-msgid "Honeywell Euroboard"
-msgstr "Honeywell Euroboard"
-
-#: xfree86.xml.in.h:132
-msgid "Hrv"
-msgstr "Xrv"
-
-#: xfree86.xml.in.h:133
-msgid "Hun"
-msgstr "Mac"
-
-#: xfree86.xml.in.h:134
-msgid "Hungarian"
-msgstr "Macarca"
-
-#: xfree86.xml.in.h:135
-msgid "Hungarian (qwerty)"
-msgstr "Macarca (qwerty)"
-
-#: xfree86.xml.in.h:136
-msgid "Hyper is mapped to the Win-keys."
-msgstr "Hyper Win düymələrinə xəritələnib."
-
-#: xfree86.xml.in.h:137
-msgid "IBM Rapid Access"
-msgstr "IBM Rapid Access"
-
-#: xfree86.xml.in.h:138
-msgid "IBM Rapid Access II"
-msgstr "IBM Rapid Access II"
-
-#: xfree86.xml.in.h:139
-msgid "IBM Rapid Access II (alternate option)"
-msgstr "IBM Rapid Access II (alternate option)"
-
-#: xfree86.xml.in.h:140
-msgid "IBM ThinkPad 560Z/600/600E/A22E"
-msgstr "IBM ThinkPad 560Z/600/600E/A22E"
-
-#: xfree86.xml.in.h:141
-msgid "INSCRIPT layout"
-msgstr "INSCRIPT düzülüşü"
-
-#: xfree86.xml.in.h:142
-msgid "IS434"
-msgstr "IS434"
-
-#: xfree86.xml.in.h:143
-msgid "IS434 laptop"
-msgstr "IS434 laptop"
-
-#: xfree86.xml.in.h:144
-msgid "ISO Alternate"
-msgstr "ISO Alternate"
-
-#: xfree86.xml.in.h:145
-msgid "Icelandic"
-msgstr "Icelandic"
-
-#: xfree86.xml.in.h:146
-msgid "Iku"
-msgstr "Ä°ku"
-
-#: xfree86.xml.in.h:147
-msgid "Inuktitut"
-msgstr "Ä°nuktitut"
-
-#: xfree86.xml.in.h:148
-msgid "Irish"
-msgstr "Ä°rlandca"
-
-#: xfree86.xml.in.h:149
-msgid "Irl"
-msgstr "Ä°rl"
-
-#: xfree86.xml.in.h:150
-msgid "Irn"
-msgstr "Ä°rn"
-
-#: xfree86.xml.in.h:151
-msgid "Isl"
-msgstr "Ä°sl"
-
-#: xfree86.xml.in.h:152
-msgid "Isr"
-msgstr "Ä°sr"
-
-#: xfree86.xml.in.h:153
-msgid "Israeli"
-msgstr "Yəhudicə"
-
-#: xfree86.xml.in.h:154
-msgid "Ita"
-msgstr "Ä°ta"
-
-#: xfree86.xml.in.h:155
-msgid "Italian"
-msgstr "Ä°talyanca"
-
-#: xfree86.xml.in.h:156
-msgid "Japanese"
-msgstr "Yaponca"
-
-#: xfree86.xml.in.h:157
-msgid "Japanese 106-key"
-msgstr "Yaponca 106-düymə"
-
-#: xfree86.xml.in.h:158
-msgid "Jpn"
-msgstr "Ypn"
-
-#: xfree86.xml.in.h:159
-msgid "Kan"
-msgstr "Kan"
-
-#: xfree86.xml.in.h:160
-msgid "Kannada"
-msgstr "Kannada"
-
-#: xfree86.xml.in.h:161
-msgid "Keytronic FlexPro"
-msgstr "Keytronic FlexPro"
-
-#: xfree86.xml.in.h:162
-msgid "LAm"
-msgstr "LAm"
-
-#: xfree86.xml.in.h:163
-msgid "Laptop"
-msgstr "Laptop"
-
-#: xfree86.xml.in.h:164
-msgid "Laptop/notebook Compaq (eg. Armada) Laptop Keyboard"
-msgstr "Laptop/notebook Compaq (məs. Armada) Laptop Klaviaturası"
-
-#: xfree86.xml.in.h:165
-msgid "Laptop/notebook Compaq (eg. Presario) Internet Keyboard"
-msgstr "Laptop/notebook Compaq (məs. Presario) İnternet Klaviaturası"
-
-#: xfree86.xml.in.h:166
-msgid "Laptop/notebook Dell Inspiron 8xxx"
-msgstr "Laptop/notebook Dell Inspiron 8xxx"
-
-#: xfree86.xml.in.h:167
-msgid "Latin"
-msgstr "Latın"
-
-#: xfree86.xml.in.h:168
-msgid "Latin America"
-msgstr "Latın Amerika"
-
-#: xfree86.xml.in.h:169
-msgid "Latvian"
-msgstr "Latışca"
-
-#: xfree86.xml.in.h:170
-msgid "Left Alt key changes group"
-msgstr "Sol Alt düyməsi qrupu dəyişdirir"
-
-#: xfree86.xml.in.h:171
-msgid "Left Ctrl key changes group"
-msgstr "Sol Ctrl düyməsi qrupu dəyişdirir"
-
-#: xfree86.xml.in.h:172
-msgid "Left Shift key changes group"
-msgstr "Sol Shift düyməsi qrupu dəyişdirir"
-
-#: xfree86.xml.in.h:173
-msgid "Left Win-key changes group"
-msgstr "Sol Win düyməsi qrupu dəyişdirir"
-
-#: xfree86.xml.in.h:174
-msgid "Left Win-key switches group while pressed"
-msgstr "Sol Win düyməsi basılı olduğu müddətcə qrupu dəyişdirir"
-
-#: xfree86.xml.in.h:175
-msgid "Lithuanian azerty standard"
-msgstr "Litovca azerty standart"
-
-#: xfree86.xml.in.h:176
-msgid "Lithuanian qwerty \"numeric\""
-msgstr "Litovca qwerty \"numeric\""
-
-#: xfree86.xml.in.h:177
-msgid "Logitech Cordless Desktop"
-msgstr "Logitech Cordless Desktop"
-
-#: xfree86.xml.in.h:178
-msgid "Logitech Cordless Desktop Navigator"
-msgstr "Logitech Cordless Desktop Navigator"
-
-#: xfree86.xml.in.h:179
-msgid "Logitech Cordless Desktop Optical"
-msgstr "Logitech Cordless Desktop Optical"
-
-#: xfree86.xml.in.h:180
-msgid "Logitech Cordless Desktop Pro"
-msgstr "Logitech Cordless Desktop Pro"
-
-#: xfree86.xml.in.h:181
-msgid "Logitech Cordless Desktop Pro (alternate option)"
-msgstr "Logitech Cordless Desktop Pro (alternate option)"
-
-#: xfree86.xml.in.h:182
-msgid "Logitech Cordless Desktop Pro (alternate option2)"
-msgstr "Logitech Cordless Desktop Pro (alternate option2)"
-
-#: xfree86.xml.in.h:183
-msgid "Logitech Cordless Desktop iTouch"
-msgstr "Logitech Cordless Desktop iTouch"
-
-#: xfree86.xml.in.h:184
-msgid "Logitech Cordless Freedom/Desktop Navigator"
-msgstr "Logitech Cordless Freedom/Desktop Navigator"
-
-#: xfree86.xml.in.h:185
-msgid "Logitech Deluxe Access Keyboard"
-msgstr "Logitech Deluxe Access Keyboard"
-
-#: xfree86.xml.in.h:186
-msgid "Logitech Internet Keyboard"
-msgstr "Logitech Internet Keyboard"
-
-#: xfree86.xml.in.h:187
-msgid "Logitech Internet Navigator Keyboard"
-msgstr "Logitech Internet Navigator Keyboard"
-
-#: xfree86.xml.in.h:188
-msgid "Logitech iTouch"
-msgstr "Logitech iTouch"
-
-#: xfree86.xml.in.h:189
-msgid "Logitech iTouch Cordless Keyboard (model Y-RB6)"
-msgstr "Logitech iTouch Cordless Keyboard (model Y-RB6)"
-
-#: xfree86.xml.in.h:190
-msgid "Logitech iTouch keyboard Internet Navigator"
-msgstr "Logitech iTouch keyboard Internet Navigator"
-
-#: xfree86.xml.in.h:191
-msgid "Ltu"
-msgstr "Ltu"
-
-#: xfree86.xml.in.h:192
-msgid "Lva"
-msgstr "Lva"
-
-#: xfree86.xml.in.h:193
-msgid "Macedonian"
-msgstr "Makedonca"
-
-#: xfree86.xml.in.h:194
-msgid "Macintosh"
-msgstr "Macintosh"
-
-#: xfree86.xml.in.h:195
-msgid "Macintosh Old"
-msgstr "Macintosh Old"
-
-#: xfree86.xml.in.h:196
-msgid "Make CapsLock an additional Control"
-msgstr "CapsLock düyməsini əlavə idarə olaraq tə'yin et"
-
-#: xfree86.xml.in.h:197
-msgid "Mal"
-msgstr "Mal"
-
-#: xfree86.xml.in.h:198
-msgid "Malayalam"
-msgstr "Malayalamca"
-
-#: xfree86.xml.in.h:199
-msgid "Maltese"
-msgstr "Maltaca"
-
-#: xfree86.xml.in.h:200
-msgid "Maltese (US layout)"
-msgstr "Maltaca (ABŞ düzülüşü)"
-
-#: xfree86.xml.in.h:201
-msgid "Memorex MX1998"
-msgstr "Memorex MX1998"
-
-#: xfree86.xml.in.h:202
-msgid "Memorex MX2500 EZ-Access Keyboard"
-msgstr "Memorex MX2500 EZ-Access Keyboard"
-
-#: xfree86.xml.in.h:203
-msgid "Memorex MX2750"
-msgstr "Memorex MX2750"
-
-#: xfree86.xml.in.h:204
-msgid "Menu is Compose"
-msgstr "Menyu yazma düyməsidir"
-
-#: xfree86.xml.in.h:205
-msgid "Menu key changes group"
-msgstr "Menü düyməsi qrupu dəyişdirir"
-
-#: xfree86.xml.in.h:206
-msgid "Meta is mapped to the Win-keys."
-msgstr "Meta Win düymələrinə xəritələnib."
-
-#: xfree86.xml.in.h:207
-msgid "Meta is mapped to the left Win-key."
-msgstr "Meta sol Win düyməsinə xəritələnib."
-
-#: xfree86.xml.in.h:208
-msgid "Microsoft Internet Keyboard"
-msgstr "Microsoft Internet Keyboard"
-
-#: xfree86.xml.in.h:209
-msgid "Microsoft Internet Keyboard Pro, Swedish"
-msgstr "Microsoft Internet Keyboard Pro, Swedish"
-
-#: xfree86.xml.in.h:210
-msgid "Microsoft Natural"
-msgstr "Microsoft Natural"
-
-#: xfree86.xml.in.h:211
-msgid "Microsoft Natural Keyboard Pro / Microsoft Internet Keyboard Pro"
-msgstr "Microsoft Natural Keyboard Pro / Microsoft Internet Keyboard Pro"
-
-#: xfree86.xml.in.h:212
-msgid "Microsoft Natural Keyboard Pro OEM"
-msgstr "Microsoft Natural Keyboard Pro OEM"
-
-#: xfree86.xml.in.h:213
-msgid "Microsoft Office Keyboard"
-msgstr "Microsoft Office Keyboard"
-
-#: xfree86.xml.in.h:214
-msgid "Miscellaneous compatibility options"
-msgstr "Müxtəlif yetişmə qabiliyyəti seçimləri"
-
-#: xfree86.xml.in.h:215
-msgid "Mkd"
-msgstr "Mkd"
-
-#: xfree86.xml.in.h:216
-msgid "Mlt"
-msgstr "Mlt"
-
-#: xfree86.xml.in.h:217
-msgid "Mmr"
-msgstr "Mmr"
-
-#: xfree86.xml.in.h:218
-msgid "Mng"
-msgstr "Mng"
-
-#: xfree86.xml.in.h:219
-msgid "Mongolian"
-msgstr "Monqolca"
-
-#: xfree86.xml.in.h:220
-msgid "Nld"
-msgstr "Nld"
-
-#: xfree86.xml.in.h:221
-msgid "Nor"
-msgstr "Nor"
-
-#: xfree86.xml.in.h:222
-msgid "Northern Saami (Finland)"
-msgstr "Åžimali Saami (Finlandiya)"
-
-#: xfree86.xml.in.h:223
-msgid "Northern Saami (Norway)"
-msgstr "Şimali Saami (Norveç)"
-
-#: xfree86.xml.in.h:224
-msgid "Northern Saami (Sweden)"
-msgstr "Şimali Saami (İsveç)"
-
-#: xfree86.xml.in.h:225
-msgid "Northgate OmniKey 101"
-msgstr "Northgate OmniKey 101"
-
-#: xfree86.xml.in.h:226
-msgid "Norwegian"
-msgstr "Norveçcə"
-
-#: xfree86.xml.in.h:227
-msgid "Num_Lock LED shows alternative group"
-msgstr "Num_Lock LED-ləri alternativ qrupları göstərir"
-
-#: xfree86.xml.in.h:228
-msgid "Ogh"
-msgstr "Ogh"
-
-#: xfree86.xml.in.h:229
-msgid "Ogham"
-msgstr "Ogham"
-
-#: xfree86.xml.in.h:230
-msgid "Oretec MCK-800 MM/Internet keyboard"
-msgstr "Oretec MCK-800 MM/Internet keyboard"
-
-#: xfree86.xml.in.h:231
-msgid "Ori"
-msgstr "Ori"
-
-#: xfree86.xml.in.h:232
-msgid "Oriya"
-msgstr "Oriya"
-
-#: xfree86.xml.in.h:233
-msgid "PC-98xx Series"
-msgstr "PC-98xx Seriyaları"
-
-#: xfree86.xml.in.h:234
-msgid "PC104"
-msgstr "PC104"
-
-#: xfree86.xml.in.h:235
-msgid "Pan"
-msgstr "Pan"
-
-#: xfree86.xml.in.h:236
-msgid "Phonetic"
-msgstr "Fonetik"
-
-#: xfree86.xml.in.h:237
-msgid "Pol"
-msgstr "Pol"
-
-#: xfree86.xml.in.h:238
-msgid "Polish"
-msgstr "Polyakca"
-
-#: xfree86.xml.in.h:239
-msgid "Polish (qwertz)"
-msgstr "Polyakca (qwertz)"
-
-#: xfree86.xml.in.h:240
-msgid "Polytonic"
-msgstr "Politonik"
-
-#: xfree86.xml.in.h:241
-msgid "Portuguese"
-msgstr "Portuqalca"
-
-#: xfree86.xml.in.h:242
-msgid "PowerPC PS/2"
-msgstr "PowerPC PS/2"
-
-#: xfree86.xml.in.h:243
-msgid "Press Left Win-key to choose 3rd level"
-msgstr "3-cü səviyyəni seçmək üçün sol Win düyməsinə basılsın"
-
-#: xfree86.xml.in.h:244
-msgid "Press Menu key to choose 3rd level"
-msgstr "3-cü səviyyəni seçmək üçün sağ menyuya basılsın"
-
-#: xfree86.xml.in.h:245
-msgid "Press Right Control to choose 3rd level"
-msgstr "3-cü səviyyəni seçmək üçün sağ Control düyməsinə basılsın"
-
-#: xfree86.xml.in.h:246
-msgid "Press Right Win-key to choose 3rd level"
-msgstr "3-cü səviyyəni seçmək üçün sağ Win düyməsinə basılsın"
-
-#: xfree86.xml.in.h:247
-msgid "Press any of Win-keys to choose 3rd level"
-msgstr "3-cü səviyyəni seçmək üçün hər hansı bir Win düyməsinə basılsın"
-
-#: xfree86.xml.in.h:248
-msgid "Propeller Voyager (KTEZ-1000)"
-msgstr "Propeller Voyager (KTEZ-1000)"
-
-#: xfree86.xml.in.h:249
-msgid "Prt"
-msgstr "Prt"
-
-#: xfree86.xml.in.h:250
-msgid "QTronix Scorpius 98N+"
-msgstr "QTronix Scorpius 98N+"
-
-#: xfree86.xml.in.h:251
-msgid "R-Alt switches group while pressed"
-msgstr "R-Alt basılı olduğu müddətcə qrupu dəyişdirir"
-
-#: xfree86.xml.in.h:252
-msgid "Right Alt is Compose"
-msgstr "Sağ Alt düyməsi yazma düyməsidir"
-
-#: xfree86.xml.in.h:253
-msgid "Right Alt key changes group"
-msgstr "Sağ Alt düyməsi qrupu dəyişdirir"
-
-#: xfree86.xml.in.h:254
-msgid "Right Control key works as Right Alt"
-msgstr "Sağ Control düyməsi sağ Alt kimi işləyir"
-
-#: xfree86.xml.in.h:255
-msgid "Right Ctrl key changes group"
-msgstr "Sağ Ctrl düyməsi qrupu dəyişdirir"
-
-#: xfree86.xml.in.h:256
-msgid "Right Shift key changes group"
-msgstr "Sağ Shift düyməsi qrupu dəyişdirir"
-
-#: xfree86.xml.in.h:257
-msgid "Right Win-key changes group"
-msgstr "Sağ Win düyməsi qrupu dəyişdirir"
-
-#: xfree86.xml.in.h:258
-msgid "Right Win-key is Compose"
-msgstr "Sağ Win düyməsi yazma düyməsidir"
-
-#: xfree86.xml.in.h:259
-msgid "Right Win-key switches group while pressed"
-msgstr "Sağ Win düyməsi basılı olduğu müddətcə qrupu dəyişdirir"
-
-#: xfree86.xml.in.h:260
-msgid "Romanian"
-msgstr "Rumınca"
-
-#: xfree86.xml.in.h:261
-msgid "Rou"
-msgstr "Rou"
-
-#: xfree86.xml.in.h:262
-msgid "Rus"
-msgstr "Rus"
-
-#: xfree86.xml.in.h:263
-msgid "Russian"
-msgstr "Rusca"
-
-#: xfree86.xml.in.h:264
-msgid "SK-1300"
-msgstr "SK-1300"
-
-#: xfree86.xml.in.h:265
-msgid "SK-2500"
-msgstr "SK-2500"
-
-#: xfree86.xml.in.h:266
-msgid "SK-6200"
-msgstr "SK-6200"
-
-#: xfree86.xml.in.h:267
-msgid "SK-7100"
-msgstr "SK-7100"
-
-#: xfree86.xml.in.h:268
-msgid "SVEN Ergonomic 2500"
-msgstr "SVEN Ergonomic 2500"
-
-#: xfree86.xml.in.h:269
-msgid "Samsung SDM 4500P"
-msgstr "Samsung SDM 4500P"
-
-#: xfree86.xml.in.h:270
-msgid "Samsung SDM 4510P"
-msgstr "Samsung SDM 4510P"
-
-#: xfree86.xml.in.h:271
-msgid "Sapmi"
-msgstr "Sapmi"
-
-#: xfree86.xml.in.h:272
-msgid "Scg"
-msgstr "Scg"
-
-#: xfree86.xml.in.h:273
-msgid "Scroll_Lock LED shows alternative group"
-msgstr "Scroll_Lock LED-ləri alternativ qrupları göstərir"
-
-#: xfree86.xml.in.h:274
-msgid "Serbian"
-msgstr "ServcÉ™"
-
-#: xfree86.xml.in.h:275
-msgid "Shift with numpad keys works as in MS Windows"
-msgstr "ÆdÉ™d düymÉ™lÉ™rindÉ™ Shift MS Windows-dakı kimi iÅŸlÉ™yir"
-
-#: xfree86.xml.in.h:276
-msgid "Slovak"
-msgstr "Slovakca"
-
-#: xfree86.xml.in.h:277
-msgid "Slovak (qwerty)"
-msgstr "Slovakca (qwerty)"
-
-#: xfree86.xml.in.h:278
-msgid "Slovenian"
-msgstr "SlovencÉ™"
-
-#: xfree86.xml.in.h:279
-msgid "Sme"
-msgstr "Sme"
-
-#: xfree86.xml.in.h:280
-msgid "Spanish"
-msgstr "Ä°spanca"
-
-#: xfree86.xml.in.h:281
-msgid "Special keys (Ctrl+Alt+&lt;key&gt;) handled in a server."
-msgstr "Xüsusi düymələr (Ctrl+Alt+&lt;düyməsi&gt;) verici tərəfindən idarə edilsin."
-
-#: xfree86.xml.in.h:282
-msgid "Standard"
-msgstr "Standart"
-
-#: xfree86.xml.in.h:283
-msgid "Sun dead keys"
-msgstr "Sun ölü düymələr"
-
-#: xfree86.xml.in.h:284
-msgid "Super is mapped to the Win-keys (default)."
-msgstr "Super Win düymələrinə xəritələnib (ön qurğulu)."
-
-#: xfree86.xml.in.h:285
-msgid "Sv"
-msgstr "Sv"
-
-#: xfree86.xml.in.h:286
-msgid "Svk"
-msgstr "Svk"
-
-#: xfree86.xml.in.h:287
-msgid "Svn"
-msgstr "Svn"
-
-#: xfree86.xml.in.h:288
-msgid "Swap Control and Caps Lock"
-msgstr "Control və Caps Lock arasında dəyiş"
-
-#: xfree86.xml.in.h:289
-msgid "Swe"
-msgstr "Swe"
-
-#: xfree86.xml.in.h:290
-msgid "Swedish"
-msgstr "İsveçcə"
-
-#: xfree86.xml.in.h:291
-msgid "Swiss French"
-msgstr "İsveçrə Fransızcası"
-
-#: xfree86.xml.in.h:292
-msgid "Swiss German"
-msgstr "İsveçrə Almancası"
-
-#: xfree86.xml.in.h:293
-msgid "Symplon PaceBook (tablet PC)"
-msgstr "Symplon PaceBook (tablet PC)"
-
-#: xfree86.xml.in.h:294
-msgid "Syr"
-msgstr "Syr"
-
-#: xfree86.xml.in.h:295
-msgid "Syriac"
-msgstr "Syriac"
-
-#: xfree86.xml.in.h:296
-msgid "Tajik"
-msgstr "TacikcÉ™"
-
-#: xfree86.xml.in.h:297
-msgid "Tamil"
-msgstr "TamilcÉ™"
-
-#: xfree86.xml.in.h:298
-msgid "Tel"
-msgstr "Tel"
-
-#: xfree86.xml.in.h:299
-msgid "Telugu"
-msgstr "Telugu"
-
-#: xfree86.xml.in.h:300
-msgid "Tha"
-msgstr "Tay"
-
-#: xfree86.xml.in.h:301
-msgid "Thai (Kedmanee)"
-msgstr "Tayca (Kedmanee)"
-
-#: xfree86.xml.in.h:302
-msgid "Thai (Pattachote)"
-msgstr "Tayca (Pattachote)"
-
-#: xfree86.xml.in.h:303
-msgid "Thai (TIS-820.2538)"
-msgstr "Tayca (TIS-820.2538)"
-
-#: xfree86.xml.in.h:304
-msgid "Third level choosers"
-msgstr "Üçüncü səviyyə seçicilər"
-
-#: xfree86.xml.in.h:305
-msgid "Tjk"
-msgstr "Tac"
-
-#: xfree86.xml.in.h:306
-msgid "Tml"
-msgstr "Tml"
-
-#: xfree86.xml.in.h:307
-msgid "Toshiba Satellite S3000"
-msgstr "Toshiba Satellite S3000"
-
-#: xfree86.xml.in.h:308
-msgid "Trust Direct Access Keyboard"
-msgstr "Trust Direct Access Keyboard"
-
-#: xfree86.xml.in.h:309
-msgid "Trust Wireless Keyboard Classic"
-msgstr "Trust Wireless Keyboard Classic"
-
-#: xfree86.xml.in.h:310
-msgid "Tur"
-msgstr "Tür"
-
-#: xfree86.xml.in.h:311
-msgid "Turkish"
-msgstr "Türkcə"
-
-#: xfree86.xml.in.h:312
-msgid "Turkish (F)"
-msgstr "Türkcə (F)"
-
-#: xfree86.xml.in.h:313
-msgid "Turkish Alt-Q Layout"
-msgstr "Türkcə Alt-Q Düzülüşü"
-
-#: xfree86.xml.in.h:314
-msgid "U.S. English"
-msgstr "A.B.Ş. İngiliscəsi"
-
-#: xfree86.xml.in.h:315
-msgid "U.S. English w/ ISO9995-3"
-msgstr "A.B.Ş. İngiliscəsi və/ ISO9995-3"
-
-#: xfree86.xml.in.h:316
-msgid "U.S. English w/ dead keys"
-msgstr "A.B.Ş. İngiliscəsi və/ ölü düymələr"
-
-#: xfree86.xml.in.h:317
-msgid "US"
-msgstr "ABÅž"
-
-#: xfree86.xml.in.h:318
-msgid "US keyboard with Romanian letters"
-msgstr "Roman hərfli ABŞ klaviaturası"
-
-#: xfree86.xml.in.h:319
-msgid "USA"
-msgstr "ABÅž"
-
-#: xfree86.xml.in.h:320
-msgid "Ukr"
-msgstr "Ukr"
-
-#: xfree86.xml.in.h:321
-msgid "Ukrainian"
-msgstr "Ukraynaca"
-
-#: xfree86.xml.in.h:322
-msgid "UnicodeExpert"
-msgstr "UnicodeExpert"
-
-#: xfree86.xml.in.h:323
-msgid "United Kingdom"
-msgstr "Birləşik Krallıq"
-
-#: xfree86.xml.in.h:324
-msgid "Use keyboard LED to show alternative group"
-msgstr "Alternativ qrupu göstərmək üçün klaviatura LED-ini işlət"
-
-#: xfree86.xml.in.h:325
-msgid "Uses internal capitalization. Shift cancels Caps."
-msgstr "Daxili kapitalizasiya işlədir. Shift Caps-i ləğv edir."
-
-#: xfree86.xml.in.h:326
-msgid "Uses internal capitalization. Shift doesn't cancel Caps."
-msgstr "Daxili kapitalizasiya işlədir. Shift Caps-i ləğv etmir."
-
-#: xfree86.xml.in.h:327
-msgid "Uzb"
-msgstr "Özb"
-
-#: xfree86.xml.in.h:328
-msgid "Uzbek"
-msgstr "Özbəkcə"
-
-#: xfree86.xml.in.h:329
-msgid "Vietnamese"
-msgstr "Vyetnamca"
-
-#: xfree86.xml.in.h:330
-msgid "Vnm"
-msgstr "Vye"
-
-#: xfree86.xml.in.h:331
-msgid "Winbook Model XP5"
-msgstr "Winbook Model XP5"
-
-#: xfree86.xml.in.h:332
-msgid "Winkeys"
-msgstr "Winkeys"
-
-#: xfree86.xml.in.h:333
-msgid "Yahoo! Internet Keyboard"
-msgstr "Yahoo! Internet Keyboard"
-
-#: xfree86.xml.in.h:334
-msgid "Yug"
-msgstr "Yug"
-
-#: xfree86.xml.in.h:335
-msgid "Yugoslavian"
-msgstr "Yugoslavca"
-
-#: xfree86.xml.in.h:336
-msgid "abnt2"
-msgstr "abnt2"
-
-#: xfree86.xml.in.h:337
-msgid "azerty"
-msgstr "azerty"
-
-#: xfree86.xml.in.h:338
-msgid "azerty/digits"
-msgstr "azerty/ədədlər"
-
-#: xfree86.xml.in.h:339
-msgid "bksl"
-msgstr "bksl"
-
-#: xfree86.xml.in.h:340
-msgid "digits"
-msgstr "ədədlər"
-
-#: xfree86.xml.in.h:341
-msgid "l2/101/qwerty/comma"
-msgstr "l2/101/qwerty/vergül"
-
-#: xfree86.xml.in.h:342
-msgid "l2/101/qwerty/dot"
-msgstr "l2/101/qwerty/nöqtə"
-
-#: xfree86.xml.in.h:343
-msgid "l2/101/qwertz/comma"
-msgstr "l2/101/qwertz/vergül"
-
-#: xfree86.xml.in.h:344
-msgid "l2/101/qwertz/dot"
-msgstr "2/101/qwertz/nöqtə"
-
-#: xfree86.xml.in.h:345
-msgid "l2/102/qwerty/comma"
-msgstr "l2/102/qwerty/vergül"
-
-#: xfree86.xml.in.h:346
-msgid "l2/102/qwerty/dot"
-msgstr "l2/102/qwerty/nöqtə"
-
-#: xfree86.xml.in.h:347
-msgid "l2/102/qwertz/comma"
-msgstr "l2/102/qwertz/vergül"
-
-#: xfree86.xml.in.h:348
-msgid "l2/102/qwertz/dot"
-msgstr "l2/102/qwertz/nöqtə"
-
-#: xfree86.xml.in.h:349
-msgid "laptop"
-msgstr "laptop"
-
-#: xfree86.xml.in.h:350
-msgid "lyx"
-msgstr "lyx"
-
-#: xfree86.xml.in.h:351
-msgid "qwerty"
-msgstr "qwerty"
-
-#: xfree86.xml.in.h:352
-msgid "qwerty/digits"
-msgstr "qwerty/ədədlər"
-
-#: xfree86.xml.in.h:353
-msgid "sefi"
-msgstr "sefi"
-
-#: xfree86.xml.in.h:354
-msgid "si1452"
-msgstr "si1452"
-
-#: xfree86.xml.in.h:355
-msgid "uni/101/qwerty/comma"
-msgstr "uni/101/qwerty/vergül"
-
-#: xfree86.xml.in.h:356
-msgid "uni/101/qwerty/dot"
-msgstr "uni/101/qwerty/nöqtə"
-
-#: xfree86.xml.in.h:357
-msgid "uni/101/qwertz/comma"
-msgstr "uni/101/qwertz/vergül"
-
-#: xfree86.xml.in.h:358
-msgid "uni/101/qwertz/dot"
-msgstr "uni/101/qwertz/nöqtə"
-
-#: xfree86.xml.in.h:359
-msgid "uni/102/qwerty/comma"
-msgstr "uni/102/qwerty/vergül"
-
-#: xfree86.xml.in.h:360
-msgid "uni/102/qwerty/dot"
-msgstr "uni/102/qwerty/nöqtə"
-
-#: xfree86.xml.in.h:361
-msgid "uni/102/qwertz/comma"
-msgstr "uni/102/qwertz/vergül"
-
-#: xfree86.xml.in.h:362
-msgid "uni/102/qwertz/dot"
-msgstr "uni/102/qwertz/nöqtə"
+# Translation of 'xfree86+xkb+xml' messages to Azerbaijani.
+# Copyright (C) 2004 Free Software Foundation, Inc.
+# This file is put in the public domain.
+# MÉ™tin Æmirov <metin@karegen.com>, 2004.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: xfree86_xkb_xml-4.4pre1\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2003-11-25 23:38+0000\n"
+"PO-Revision-Date: 2004-03-21 20:00+0200\n"
+"Last-Translator: Metin Amiroff <metin@karegen.com>\n"
+"Language-Team: Azerbaijani <translation-team-az@lists.sourceforge.net>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.0.2\n"
+
+#: xfree86.xml.in.h:1
+msgid "\"Typewriter\""
+msgstr "\"Yazı Makinası\""
+
+#: xfree86.xml.in.h:2
+msgid "A Tamil typewrite-style keymap; TAB encoding"
+msgstr "Tamil yazı makinası tərzində düzülüş TAB kodlaması"
+
+#: xfree86.xml.in.h:3
+msgid "A Tamil typewrite-style keymap; TSCII encoding"
+msgstr "Tamil yazı makinası tərzində düzülüş TSCII kodlaması"
+
+#: xfree86.xml.in.h:4
+msgid "A Tamil typewrite-style keymap; Unicode encoding"
+msgstr "Tamil yazı makinası tərzində düzülüş Yunikod kodlaması"
+
+#: xfree86.xml.in.h:5
+msgid "ACPI Standard"
+msgstr "ACPI Standartı"
+
+#: xfree86.xml.in.h:6
+msgid "Acer AirKey V"
+msgstr "Acer AirKey V"
+
+#: xfree86.xml.in.h:7
+msgid "Acts as Shift with locking. Shift cancels Caps."
+msgstr "Qıfıllı Shift kimi davranır. Shift Caps-i ləğv edir."
+
+#: xfree86.xml.in.h:8
+msgid "Acts as Shift with locking. Shift doesn't cancel Caps."
+msgstr "Qıfıllı Shift kimi davranır. Shift Caps-i ləğv etmir."
+
+#: xfree86.xml.in.h:9
+msgid "Add the standard behavior to Menu key."
+msgstr "Menyu düyməsinə standart davranış əlavə et."
+
+#: xfree86.xml.in.h:10
+msgid "Advance Scorpius KI"
+msgstr "Advance Scorpius KI"
+
+#: xfree86.xml.in.h:11
+msgid "Alb"
+msgstr "Alb"
+
+#: xfree86.xml.in.h:12
+msgid "Albanian"
+msgstr "Albanca"
+
+#: xfree86.xml.in.h:13
+msgid "Alt and Meta on the Alt keys (default)."
+msgstr "Alt düymələri üstündə Alt və Meta (ön qurğulu)."
+
+#: xfree86.xml.in.h:14
+msgid "Alt+Control changes group"
+msgstr "Alt+Control düyməsi qrupu dəyişdirir"
+
+#: xfree86.xml.in.h:15
+msgid "Alt+Shift changes group"
+msgstr "Alt+Shift düyməsi qrupu dəyişdirir"
+
+#: xfree86.xml.in.h:16
+msgid "Alt/Win key behavior"
+msgstr "Alt/Win düyməsinin davranışları"
+
+#: xfree86.xml.in.h:17
+msgid "Alternate"
+msgstr "ÆvÉ™z Et"
+
+#: xfree86.xml.in.h:18
+msgid "Arabic"
+msgstr "ÆrÉ™bcÉ™"
+
+#: xfree86.xml.in.h:19
+msgid "Arb"
+msgstr "Ærb"
+
+#: xfree86.xml.in.h:20
+msgid "Arm"
+msgstr "Erm"
+
+#: xfree86.xml.in.h:21
+msgid "Armenian"
+msgstr "Ermənicə"
+
+#: xfree86.xml.in.h:22
+msgid "Aze"
+msgstr "AzÉ™"
+
+#: xfree86.xml.in.h:23
+msgid "Azerbaijani"
+msgstr "Azərbaycanca"
+
+#: xfree86.xml.in.h:24
+msgid "BTC 5090"
+msgstr "BTC 5090"
+
+#: xfree86.xml.in.h:25
+msgid "BTC 5113RF Multimedia"
+msgstr "BTC 5113RF Multimedia"
+
+#: xfree86.xml.in.h:26
+msgid "BTC 5126T"
+msgstr "BTC 5126T"
+
+#: xfree86.xml.in.h:27
+msgid "BTC 9000"
+msgstr "BTC 9000"
+
+#: xfree86.xml.in.h:28
+msgid "BTC 9000A"
+msgstr "BTC 9000A"
+
+#: xfree86.xml.in.h:29
+msgid "BTC 9001AH"
+msgstr "BTC 9001AH"
+
+#: xfree86.xml.in.h:30
+msgid "Basic"
+msgstr "Æsas"
+
+#: xfree86.xml.in.h:31
+msgid "Bel"
+msgstr "Bel"
+
+#: xfree86.xml.in.h:32
+msgid "Belarusian"
+msgstr "Belarusca"
+
+#: xfree86.xml.in.h:33
+msgid "Belgian"
+msgstr "Belçikaca"
+
+#: xfree86.xml.in.h:34
+msgid "Ben"
+msgstr "Ben"
+
+#: xfree86.xml.in.h:35
+msgid "Bengali"
+msgstr "Benqalca"
+
+#: xfree86.xml.in.h:36
+msgid "Bgr"
+msgstr "Bgr"
+
+#: xfree86.xml.in.h:37
+msgid "Bih"
+msgstr "Bih"
+
+#: xfree86.xml.in.h:38
+msgid "Blr"
+msgstr "Blr"
+
+#: xfree86.xml.in.h:39
+msgid "Bosnian"
+msgstr "Bosniyaca"
+
+#: xfree86.xml.in.h:40
+msgid "Both Alt keys together change group"
+msgstr "İki Alt düyməsi də bərabər qrupu dəyişdirir"
+
+#: xfree86.xml.in.h:41
+msgid "Both Ctrl keys together change group"
+msgstr "İki Ctrl düyməsi də bərabər qrupu dəyişdirir"
+
+#: xfree86.xml.in.h:42
+msgid "Both Shift keys together change group"
+msgstr "Hər iki Shift düyməsi qrupu dəyişdirir"
+
+#: xfree86.xml.in.h:43
+msgid "Both Win-keys switch group while pressed"
+msgstr "İki Win düyməsi də basılı olduğu müddətcə qrupu dəyişdirir"
+
+#: xfree86.xml.in.h:44
+msgid "Bra"
+msgstr "Bra"
+
+#: xfree86.xml.in.h:45
+msgid "Brazilian"
+msgstr "Brazilya düzülüşü"
+
+#: xfree86.xml.in.h:46
+msgid "Brazilian ABNT2"
+msgstr "Brazilya düzülüşü ABNT2"
+
+#: xfree86.xml.in.h:47
+msgid "Brother Internet Keyboard"
+msgstr "Brother Internet Keyboard"
+
+#: xfree86.xml.in.h:48
+msgid "Bulgarian"
+msgstr "Bolqarca"
+
+#: xfree86.xml.in.h:49
+msgid "Burmese"
+msgstr "Burmaca"
+
+#: xfree86.xml.in.h:50
+msgid "Can"
+msgstr "Kan"
+
+#: xfree86.xml.in.h:51
+msgid "Canadian"
+msgstr "Kanada düzülüşü"
+
+#: xfree86.xml.in.h:52
+msgid "Caps Lock key changes group"
+msgstr "Caps Lock düyməsi qrupu dəyişdirir"
+
+#: xfree86.xml.in.h:53
+msgid "CapsLock key behavior"
+msgstr "CapsLock düyməsinin davranışı"
+
+#: xfree86.xml.in.h:54
+msgid "Caps_Lock LED shows alternative group"
+msgstr "Caps_Lock LED-ləri alternativ qrupları göstərir"
+
+#: xfree86.xml.in.h:55
+msgid "Cherry Blue Line CyBo@rd"
+msgstr "Cherry Blue Line CyBo@rd"
+
+#: xfree86.xml.in.h:56
+msgid "Cherry Blue Line CyBo@rd (alternate option)"
+msgstr "Cherry Blue Line CyBo@rd (alternate option)"
+
+#: xfree86.xml.in.h:57
+msgid "Chicony Internet Keyboard"
+msgstr "Chicony Internet Keyboard"
+
+#: xfree86.xml.in.h:58
+msgid "Chicony KB-9885"
+msgstr "Chicony KB-9885"
+
+#: xfree86.xml.in.h:59
+msgid "CloGaelach"
+msgstr "CloGaelach"
+
+#: xfree86.xml.in.h:60
+msgid "CloGaelach Laptop"
+msgstr "CloGaelach Laptop"
+
+#: xfree86.xml.in.h:61
+msgid "Compaq Easy Access Keyboard"
+msgstr "Compaq Easy Access Keyboard"
+
+#: xfree86.xml.in.h:62
+msgid "Compaq Internet Keyboard (13 keys)"
+msgstr "Compaq Internet Keyboard (13 düymə)"
+
+#: xfree86.xml.in.h:63
+msgid "Compaq Internet Keyboard (18 keys)"
+msgstr "Compaq Internet Keyboard (18 düymə)"
+
+#: xfree86.xml.in.h:64
+msgid "Compaq Internet Keyboard (7 keys)"
+msgstr "Compaq Internet Keyboard (7 düymə)"
+
+#: xfree86.xml.in.h:65
+msgid "Compaq iPaq Keyboard"
+msgstr "Compaq iPaq Keyboard"
+
+#: xfree86.xml.in.h:66
+msgid "Control Key Position"
+msgstr "Control Düyməsinin Yeri"
+
+#: xfree86.xml.in.h:67
+msgid "Control key at bottom left"
+msgstr "Control düyməsi sol altda"
+
+#: xfree86.xml.in.h:68
+msgid "Control key at left of 'A'"
+msgstr "Control düyməsi 'A' hərfinin solunda"
+
+#: xfree86.xml.in.h:69
+msgid "Control+Shift changes group"
+msgstr "Control+Shift düyməsi qrupu dəyişdirir"
+
+#: xfree86.xml.in.h:70
+msgid "Croatian"
+msgstr "Xorvatca"
+
+#: xfree86.xml.in.h:71
+msgid "Cyrillic"
+msgstr "Kiril"
+
+#: xfree86.xml.in.h:72
+msgid "Cze"
+msgstr "Çex"
+
+#: xfree86.xml.in.h:73
+msgid "Czech"
+msgstr "Çexcə"
+
+#: xfree86.xml.in.h:74
+msgid "Czech (qwerty)"
+msgstr "Çexcə (qwerty)"
+
+#: xfree86.xml.in.h:75
+msgid "Danish"
+msgstr "Danimarkaca"
+
+#: xfree86.xml.in.h:76
+msgid "Dead acute"
+msgstr "Dead acute"
+
+#: xfree86.xml.in.h:77
+msgid "Dead grave acute"
+msgstr "Dead grave acute"
+
+#: xfree86.xml.in.h:78
+msgid "Dell"
+msgstr "Dell"
+
+#: xfree86.xml.in.h:79
+msgid "Dell 101-key PC"
+msgstr "Dell 101-key PC"
+
+#: xfree86.xml.in.h:80
+msgid "Deu"
+msgstr "Deu"
+
+#: xfree86.xml.in.h:81
+msgid "Dexxa Wireless Desktop Keyboard"
+msgstr "Dexxa Wireless Desktop Keyboard"
+
+#: xfree86.xml.in.h:82
+msgid "Diamond 9801 / 9802 series"
+msgstr "Diamond 9801 / 9802 seryaları"
+
+#: xfree86.xml.in.h:83
+msgid "Dnk"
+msgstr "Dnk"
+
+#: xfree86.xml.in.h:84
+msgid "Dutch"
+msgstr "Niderlandca"
+
+#: xfree86.xml.in.h:85
+msgid "Dvo"
+msgstr "Dvo"
+
+#: xfree86.xml.in.h:86
+msgid "Dvorak"
+msgstr "Dvorak"
+
+#: xfree86.xml.in.h:87
+msgid "Eliminate dead keys"
+msgstr "Ölü düymələri sayma"
+
+#: xfree86.xml.in.h:88
+msgid "Ennyah DKB-1008"
+msgstr "Ennyah DKB-1008"
+
+#: xfree86.xml.in.h:89
+msgid "Esp"
+msgstr "Ä°sp"
+
+#: xfree86.xml.in.h:90
+msgid "Est"
+msgstr "Est"
+
+#: xfree86.xml.in.h:91
+msgid "Estonian"
+msgstr "Estonca"
+
+#: xfree86.xml.in.h:92
+msgid "Everex STEPnote"
+msgstr "Everex STEPnote"
+
+#: xfree86.xml.in.h:93
+msgid "Extended"
+msgstr "Uzadılmış"
+
+#: xfree86.xml.in.h:94
+msgid "Fao"
+msgstr "Fao"
+
+#: xfree86.xml.in.h:95
+msgid "Faroese"
+msgstr "FaroescÉ™"
+
+#: xfree86.xml.in.h:96
+msgid "Farsi"
+msgstr "Farsca"
+
+#: xfree86.xml.in.h:97
+msgid "Fin"
+msgstr "Fin"
+
+#: xfree86.xml.in.h:98
+msgid "Finnish"
+msgstr "FincÉ™"
+
+#: xfree86.xml.in.h:99
+msgid "Fra"
+msgstr "Fra"
+
+#: xfree86.xml.in.h:100
+msgid "French"
+msgstr "Fransızca"
+
+#: xfree86.xml.in.h:101
+msgid "French (alternative)"
+msgstr "Fransızca (alternativ)"
+
+#: xfree86.xml.in.h:102
+msgid "French Canadian"
+msgstr "Kanada Fransızcası"
+
+#: xfree86.xml.in.h:103
+msgid "GBr"
+msgstr "GBr"
+
+#: xfree86.xml.in.h:104
+msgid "Generic 101-key PC"
+msgstr "Generic 101-key PC"
+
+#: xfree86.xml.in.h:105
+msgid "Generic 102-key (Intl) PC"
+msgstr "Generic 102-key (Intl) PC"
+
+#: xfree86.xml.in.h:106
+msgid "Generic 104-key PC"
+msgstr "Generic 104-key PC"
+
+#: xfree86.xml.in.h:107
+msgid "Generic 105-key (Intl) PC"
+msgstr "Generic 105-key (Intl) PC"
+
+#: xfree86.xml.in.h:108
+msgid "Genius Comfy KB-16M / Genius MM Keyboard KWD-910"
+msgstr "Genius Comfy KB-16M / Genius MM Keyboard KWD-910"
+
+#: xfree86.xml.in.h:109
+msgid "Geo"
+msgstr "Gür"
+
+#: xfree86.xml.in.h:110
+msgid "Georgian (latin)"
+msgstr "Gürcücə (latın)"
+
+#: xfree86.xml.in.h:111
+msgid "Georgian (russian)"
+msgstr "Gürcücə (kiril)"
+
+#: xfree86.xml.in.h:112
+msgid "German"
+msgstr "Almaca"
+
+#: xfree86.xml.in.h:113
+msgid "Grc"
+msgstr "Yun"
+
+#: xfree86.xml.in.h:114
+msgid "Greek"
+msgstr "Yunanca"
+
+#: xfree86.xml.in.h:115
+msgid "Group Shift/Lock behavior"
+msgstr "Shift/Lock Qrupu Davranışı"
+
+#: xfree86.xml.in.h:116
+msgid "Guj"
+msgstr "Guj"
+
+#: xfree86.xml.in.h:117
+msgid "Gujarati"
+msgstr "GujaraticÉ™"
+
+#: xfree86.xml.in.h:118
+msgid "Gurmukhi"
+msgstr "Gurmukhi"
+
+#: xfree86.xml.in.h:119
+msgid "Hewlett-Packard Internet Keyboard"
+msgstr "Hewlett-Packard Internet Keyboard"
+
+#: xfree86.xml.in.h:120
+msgid "Hewlett-Packard Omnibook 500 FA"
+msgstr "Hewlett-Packard Omnibook 500 FA"
+
+#: xfree86.xml.in.h:121
+msgid "Hewlett-Packard Omnibook 5xx"
+msgstr "Hewlett-Packard Omnibook 5xx"
+
+#: xfree86.xml.in.h:122
+msgid "Hewlett-Packard Omnibook 6000/6100"
+msgstr "Hewlett-Packard Omnibook 6000/6100"
+
+#: xfree86.xml.in.h:123
+msgid "Hewlett-Packard Omnibook XE3 GC"
+msgstr "Hewlett-Packard Omnibook XE3 GC"
+
+#: xfree86.xml.in.h:124
+msgid "Hewlett-Packard Omnibook XE3 GF"
+msgstr "Hewlett-Packard Omnibook XE3 GF"
+
+#: xfree86.xml.in.h:125
+msgid "Hewlett-Packard Omnibook XT1000"
+msgstr "Hewlett-Packard Omnibook XT1000"
+
+#: xfree86.xml.in.h:126
+msgid "Hewlett-Packard Pavilion ZT11xx"
+msgstr "Hewlett-Packard Pavilion ZT11xx"
+
+#: xfree86.xml.in.h:127
+msgid "Hewlett-Packard SK-2501 Multimedia Keyboard"
+msgstr "Hewlett-Packard SK-2501 Multimedia Keyboard"
+
+#: xfree86.xml.in.h:128
+msgid "Hewlett-Packard SK-2505 Internet Keyboard"
+msgstr "Hewlett-Packard SK-2505 Internet Keyboard"
+
+#: xfree86.xml.in.h:129
+msgid "Hin"
+msgstr "Hin"
+
+#: xfree86.xml.in.h:130
+msgid "Hindi"
+msgstr "Hindi"
+
+#: xfree86.xml.in.h:131
+msgid "Honeywell Euroboard"
+msgstr "Honeywell Euroboard"
+
+#: xfree86.xml.in.h:132
+msgid "Hrv"
+msgstr "Xrv"
+
+#: xfree86.xml.in.h:133
+msgid "Hun"
+msgstr "Mac"
+
+#: xfree86.xml.in.h:134
+msgid "Hungarian"
+msgstr "Macarca"
+
+#: xfree86.xml.in.h:135
+msgid "Hungarian (qwerty)"
+msgstr "Macarca (qwerty)"
+
+#: xfree86.xml.in.h:136
+msgid "Hyper is mapped to the Win-keys."
+msgstr "Hyper Win düymələrinə xəritələnib."
+
+#: xfree86.xml.in.h:137
+msgid "IBM Rapid Access"
+msgstr "IBM Rapid Access"
+
+#: xfree86.xml.in.h:138
+msgid "IBM Rapid Access II"
+msgstr "IBM Rapid Access II"
+
+#: xfree86.xml.in.h:139
+msgid "IBM Rapid Access II (alternate option)"
+msgstr "IBM Rapid Access II (alternate option)"
+
+#: xfree86.xml.in.h:140
+msgid "IBM ThinkPad 560Z/600/600E/A22E"
+msgstr "IBM ThinkPad 560Z/600/600E/A22E"
+
+#: xfree86.xml.in.h:141
+msgid "INSCRIPT layout"
+msgstr "INSCRIPT düzülüşü"
+
+#: xfree86.xml.in.h:142
+msgid "IS434"
+msgstr "IS434"
+
+#: xfree86.xml.in.h:143
+msgid "IS434 laptop"
+msgstr "IS434 laptop"
+
+#: xfree86.xml.in.h:144
+msgid "ISO Alternate"
+msgstr "ISO Alternate"
+
+#: xfree86.xml.in.h:145
+msgid "Icelandic"
+msgstr "Icelandic"
+
+#: xfree86.xml.in.h:146
+msgid "Iku"
+msgstr "Ä°ku"
+
+#: xfree86.xml.in.h:147
+msgid "Inuktitut"
+msgstr "Ä°nuktitut"
+
+#: xfree86.xml.in.h:148
+msgid "Irish"
+msgstr "Ä°rlandca"
+
+#: xfree86.xml.in.h:149
+msgid "Irl"
+msgstr "Ä°rl"
+
+#: xfree86.xml.in.h:150
+msgid "Irn"
+msgstr "Ä°rn"
+
+#: xfree86.xml.in.h:151
+msgid "Isl"
+msgstr "Ä°sl"
+
+#: xfree86.xml.in.h:152
+msgid "Isr"
+msgstr "Ä°sr"
+
+#: xfree86.xml.in.h:153
+msgid "Israeli"
+msgstr "Yəhudicə"
+
+#: xfree86.xml.in.h:154
+msgid "Ita"
+msgstr "Ä°ta"
+
+#: xfree86.xml.in.h:155
+msgid "Italian"
+msgstr "Ä°talyanca"
+
+#: xfree86.xml.in.h:156
+msgid "Japanese"
+msgstr "Yaponca"
+
+#: xfree86.xml.in.h:157
+msgid "Japanese 106-key"
+msgstr "Yaponca 106-düymə"
+
+#: xfree86.xml.in.h:158
+msgid "Jpn"
+msgstr "Ypn"
+
+#: xfree86.xml.in.h:159
+msgid "Kan"
+msgstr "Kan"
+
+#: xfree86.xml.in.h:160
+msgid "Kannada"
+msgstr "Kannada"
+
+#: xfree86.xml.in.h:161
+msgid "Keytronic FlexPro"
+msgstr "Keytronic FlexPro"
+
+#: xfree86.xml.in.h:162
+msgid "LAm"
+msgstr "LAm"
+
+#: xfree86.xml.in.h:163
+msgid "Laptop"
+msgstr "Laptop"
+
+#: xfree86.xml.in.h:164
+msgid "Laptop/notebook Compaq (eg. Armada) Laptop Keyboard"
+msgstr "Laptop/notebook Compaq (məs. Armada) Laptop Klaviaturası"
+
+#: xfree86.xml.in.h:165
+msgid "Laptop/notebook Compaq (eg. Presario) Internet Keyboard"
+msgstr "Laptop/notebook Compaq (məs. Presario) İnternet Klaviaturası"
+
+#: xfree86.xml.in.h:166
+msgid "Laptop/notebook Dell Inspiron 8xxx"
+msgstr "Laptop/notebook Dell Inspiron 8xxx"
+
+#: xfree86.xml.in.h:167
+msgid "Latin"
+msgstr "Latın"
+
+#: xfree86.xml.in.h:168
+msgid "Latin America"
+msgstr "Latın Amerika"
+
+#: xfree86.xml.in.h:169
+msgid "Latvian"
+msgstr "Latışca"
+
+#: xfree86.xml.in.h:170
+msgid "Left Alt key changes group"
+msgstr "Sol Alt düyməsi qrupu dəyişdirir"
+
+#: xfree86.xml.in.h:171
+msgid "Left Ctrl key changes group"
+msgstr "Sol Ctrl düyməsi qrupu dəyişdirir"
+
+#: xfree86.xml.in.h:172
+msgid "Left Shift key changes group"
+msgstr "Sol Shift düyməsi qrupu dəyişdirir"
+
+#: xfree86.xml.in.h:173
+msgid "Left Win-key changes group"
+msgstr "Sol Win düyməsi qrupu dəyişdirir"
+
+#: xfree86.xml.in.h:174
+msgid "Left Win-key switches group while pressed"
+msgstr "Sol Win düyməsi basılı olduğu müddətcə qrupu dəyişdirir"
+
+#: xfree86.xml.in.h:175
+msgid "Lithuanian azerty standard"
+msgstr "Litovca azerty standart"
+
+#: xfree86.xml.in.h:176
+msgid "Lithuanian qwerty \"numeric\""
+msgstr "Litovca qwerty \"numeric\""
+
+#: xfree86.xml.in.h:177
+msgid "Logitech Cordless Desktop"
+msgstr "Logitech Cordless Desktop"
+
+#: xfree86.xml.in.h:178
+msgid "Logitech Cordless Desktop Navigator"
+msgstr "Logitech Cordless Desktop Navigator"
+
+#: xfree86.xml.in.h:179
+msgid "Logitech Cordless Desktop Optical"
+msgstr "Logitech Cordless Desktop Optical"
+
+#: xfree86.xml.in.h:180
+msgid "Logitech Cordless Desktop Pro"
+msgstr "Logitech Cordless Desktop Pro"
+
+#: xfree86.xml.in.h:181
+msgid "Logitech Cordless Desktop Pro (alternate option)"
+msgstr "Logitech Cordless Desktop Pro (alternate option)"
+
+#: xfree86.xml.in.h:182
+msgid "Logitech Cordless Desktop Pro (alternate option2)"
+msgstr "Logitech Cordless Desktop Pro (alternate option2)"
+
+#: xfree86.xml.in.h:183
+msgid "Logitech Cordless Desktop iTouch"
+msgstr "Logitech Cordless Desktop iTouch"
+
+#: xfree86.xml.in.h:184
+msgid "Logitech Cordless Freedom/Desktop Navigator"
+msgstr "Logitech Cordless Freedom/Desktop Navigator"
+
+#: xfree86.xml.in.h:185
+msgid "Logitech Deluxe Access Keyboard"
+msgstr "Logitech Deluxe Access Keyboard"
+
+#: xfree86.xml.in.h:186
+msgid "Logitech Internet Keyboard"
+msgstr "Logitech Internet Keyboard"
+
+#: xfree86.xml.in.h:187
+msgid "Logitech Internet Navigator Keyboard"
+msgstr "Logitech Internet Navigator Keyboard"
+
+#: xfree86.xml.in.h:188
+msgid "Logitech iTouch"
+msgstr "Logitech iTouch"
+
+#: xfree86.xml.in.h:189
+msgid "Logitech iTouch Cordless Keyboard (model Y-RB6)"
+msgstr "Logitech iTouch Cordless Keyboard (model Y-RB6)"
+
+#: xfree86.xml.in.h:190
+msgid "Logitech iTouch keyboard Internet Navigator"
+msgstr "Logitech iTouch keyboard Internet Navigator"
+
+#: xfree86.xml.in.h:191
+msgid "Ltu"
+msgstr "Ltu"
+
+#: xfree86.xml.in.h:192
+msgid "Lva"
+msgstr "Lva"
+
+#: xfree86.xml.in.h:193
+msgid "Macedonian"
+msgstr "Makedonca"
+
+#: xfree86.xml.in.h:194
+msgid "Macintosh"
+msgstr "Macintosh"
+
+#: xfree86.xml.in.h:195
+msgid "Macintosh Old"
+msgstr "Macintosh Old"
+
+#: xfree86.xml.in.h:196
+msgid "Make CapsLock an additional Control"
+msgstr "CapsLock düyməsini əlavə idarə olaraq tə'yin et"
+
+#: xfree86.xml.in.h:197
+msgid "Mal"
+msgstr "Mal"
+
+#: xfree86.xml.in.h:198
+msgid "Malayalam"
+msgstr "Malayalamca"
+
+#: xfree86.xml.in.h:199
+msgid "Maltese"
+msgstr "Maltaca"
+
+#: xfree86.xml.in.h:200
+msgid "Maltese (US layout)"
+msgstr "Maltaca (ABŞ düzülüşü)"
+
+#: xfree86.xml.in.h:201
+msgid "Memorex MX1998"
+msgstr "Memorex MX1998"
+
+#: xfree86.xml.in.h:202
+msgid "Memorex MX2500 EZ-Access Keyboard"
+msgstr "Memorex MX2500 EZ-Access Keyboard"
+
+#: xfree86.xml.in.h:203
+msgid "Memorex MX2750"
+msgstr "Memorex MX2750"
+
+#: xfree86.xml.in.h:204
+msgid "Menu is Compose"
+msgstr "Menyu yazma düyməsidir"
+
+#: xfree86.xml.in.h:205
+msgid "Menu key changes group"
+msgstr "Menü düyməsi qrupu dəyişdirir"
+
+#: xfree86.xml.in.h:206
+msgid "Meta is mapped to the Win-keys."
+msgstr "Meta Win düymələrinə xəritələnib."
+
+#: xfree86.xml.in.h:207
+msgid "Meta is mapped to the left Win-key."
+msgstr "Meta sol Win düyməsinə xəritələnib."
+
+#: xfree86.xml.in.h:208
+msgid "Microsoft Internet Keyboard"
+msgstr "Microsoft Internet Keyboard"
+
+#: xfree86.xml.in.h:209
+msgid "Microsoft Internet Keyboard Pro, Swedish"
+msgstr "Microsoft Internet Keyboard Pro, Swedish"
+
+#: xfree86.xml.in.h:210
+msgid "Microsoft Natural"
+msgstr "Microsoft Natural"
+
+#: xfree86.xml.in.h:211
+msgid "Microsoft Natural Keyboard Pro / Microsoft Internet Keyboard Pro"
+msgstr "Microsoft Natural Keyboard Pro / Microsoft Internet Keyboard Pro"
+
+#: xfree86.xml.in.h:212
+msgid "Microsoft Natural Keyboard Pro OEM"
+msgstr "Microsoft Natural Keyboard Pro OEM"
+
+#: xfree86.xml.in.h:213
+msgid "Microsoft Office Keyboard"
+msgstr "Microsoft Office Keyboard"
+
+#: xfree86.xml.in.h:214
+msgid "Miscellaneous compatibility options"
+msgstr "Müxtəlif yetişmə qabiliyyəti seçimləri"
+
+#: xfree86.xml.in.h:215
+msgid "Mkd"
+msgstr "Mkd"
+
+#: xfree86.xml.in.h:216
+msgid "Mlt"
+msgstr "Mlt"
+
+#: xfree86.xml.in.h:217
+msgid "Mmr"
+msgstr "Mmr"
+
+#: xfree86.xml.in.h:218
+msgid "Mng"
+msgstr "Mng"
+
+#: xfree86.xml.in.h:219
+msgid "Mongolian"
+msgstr "Monqolca"
+
+#: xfree86.xml.in.h:220
+msgid "Nld"
+msgstr "Nld"
+
+#: xfree86.xml.in.h:221
+msgid "Nor"
+msgstr "Nor"
+
+#: xfree86.xml.in.h:222
+msgid "Northern Saami (Finland)"
+msgstr "Åžimali Saami (Finlandiya)"
+
+#: xfree86.xml.in.h:223
+msgid "Northern Saami (Norway)"
+msgstr "Şimali Saami (Norveç)"
+
+#: xfree86.xml.in.h:224
+msgid "Northern Saami (Sweden)"
+msgstr "Şimali Saami (İsveç)"
+
+#: xfree86.xml.in.h:225
+msgid "Northgate OmniKey 101"
+msgstr "Northgate OmniKey 101"
+
+#: xfree86.xml.in.h:226
+msgid "Norwegian"
+msgstr "Norveçcə"
+
+#: xfree86.xml.in.h:227
+msgid "Num_Lock LED shows alternative group"
+msgstr "Num_Lock LED-ləri alternativ qrupları göstərir"
+
+#: xfree86.xml.in.h:228
+msgid "Ogh"
+msgstr "Ogh"
+
+#: xfree86.xml.in.h:229
+msgid "Ogham"
+msgstr "Ogham"
+
+#: xfree86.xml.in.h:230
+msgid "Oretec MCK-800 MM/Internet keyboard"
+msgstr "Oretec MCK-800 MM/Internet keyboard"
+
+#: xfree86.xml.in.h:231
+msgid "Ori"
+msgstr "Ori"
+
+#: xfree86.xml.in.h:232
+msgid "Oriya"
+msgstr "Oriya"
+
+#: xfree86.xml.in.h:233
+msgid "PC-98xx Series"
+msgstr "PC-98xx Seriyaları"
+
+#: xfree86.xml.in.h:234
+msgid "PC104"
+msgstr "PC104"
+
+#: xfree86.xml.in.h:235
+msgid "Pan"
+msgstr "Pan"
+
+#: xfree86.xml.in.h:236
+msgid "Phonetic"
+msgstr "Fonetik"
+
+#: xfree86.xml.in.h:237
+msgid "Pol"
+msgstr "Pol"
+
+#: xfree86.xml.in.h:238
+msgid "Polish"
+msgstr "Polyakca"
+
+#: xfree86.xml.in.h:239
+msgid "Polish (qwertz)"
+msgstr "Polyakca (qwertz)"
+
+#: xfree86.xml.in.h:240
+msgid "Polytonic"
+msgstr "Politonik"
+
+#: xfree86.xml.in.h:241
+msgid "Portuguese"
+msgstr "Portuqalca"
+
+#: xfree86.xml.in.h:242
+msgid "PowerPC PS/2"
+msgstr "PowerPC PS/2"
+
+#: xfree86.xml.in.h:243
+msgid "Press Left Win-key to choose 3rd level"
+msgstr "3-cü səviyyəni seçmək üçün sol Win düyməsinə basılsın"
+
+#: xfree86.xml.in.h:244
+msgid "Press Menu key to choose 3rd level"
+msgstr "3-cü səviyyəni seçmək üçün sağ menyuya basılsın"
+
+#: xfree86.xml.in.h:245
+msgid "Press Right Control to choose 3rd level"
+msgstr "3-cü səviyyəni seçmək üçün sağ Control düyməsinə basılsın"
+
+#: xfree86.xml.in.h:246
+msgid "Press Right Win-key to choose 3rd level"
+msgstr "3-cü səviyyəni seçmək üçün sağ Win düyməsinə basılsın"
+
+#: xfree86.xml.in.h:247
+msgid "Press any of Win-keys to choose 3rd level"
+msgstr "3-cü səviyyəni seçmək üçün hər hansı bir Win düyməsinə basılsın"
+
+#: xfree86.xml.in.h:248
+msgid "Propeller Voyager (KTEZ-1000)"
+msgstr "Propeller Voyager (KTEZ-1000)"
+
+#: xfree86.xml.in.h:249
+msgid "Prt"
+msgstr "Prt"
+
+#: xfree86.xml.in.h:250
+msgid "QTronix Scorpius 98N+"
+msgstr "QTronix Scorpius 98N+"
+
+#: xfree86.xml.in.h:251
+msgid "R-Alt switches group while pressed"
+msgstr "R-Alt basılı olduğu müddətcə qrupu dəyişdirir"
+
+#: xfree86.xml.in.h:252
+msgid "Right Alt is Compose"
+msgstr "Sağ Alt düyməsi yazma düyməsidir"
+
+#: xfree86.xml.in.h:253
+msgid "Right Alt key changes group"
+msgstr "Sağ Alt düyməsi qrupu dəyişdirir"
+
+#: xfree86.xml.in.h:254
+msgid "Right Control key works as Right Alt"
+msgstr "Sağ Control düyməsi sağ Alt kimi işləyir"
+
+#: xfree86.xml.in.h:255
+msgid "Right Ctrl key changes group"
+msgstr "Sağ Ctrl düyməsi qrupu dəyişdirir"
+
+#: xfree86.xml.in.h:256
+msgid "Right Shift key changes group"
+msgstr "Sağ Shift düyməsi qrupu dəyişdirir"
+
+#: xfree86.xml.in.h:257
+msgid "Right Win-key changes group"
+msgstr "Sağ Win düyməsi qrupu dəyişdirir"
+
+#: xfree86.xml.in.h:258
+msgid "Right Win-key is Compose"
+msgstr "Sağ Win düyməsi yazma düyməsidir"
+
+#: xfree86.xml.in.h:259
+msgid "Right Win-key switches group while pressed"
+msgstr "Sağ Win düyməsi basılı olduğu müddətcə qrupu dəyişdirir"
+
+#: xfree86.xml.in.h:260
+msgid "Romanian"
+msgstr "Rumınca"
+
+#: xfree86.xml.in.h:261
+msgid "Rou"
+msgstr "Rou"
+
+#: xfree86.xml.in.h:262
+msgid "Rus"
+msgstr "Rus"
+
+#: xfree86.xml.in.h:263
+msgid "Russian"
+msgstr "Rusca"
+
+#: xfree86.xml.in.h:264
+msgid "SK-1300"
+msgstr "SK-1300"
+
+#: xfree86.xml.in.h:265
+msgid "SK-2500"
+msgstr "SK-2500"
+
+#: xfree86.xml.in.h:266
+msgid "SK-6200"
+msgstr "SK-6200"
+
+#: xfree86.xml.in.h:267
+msgid "SK-7100"
+msgstr "SK-7100"
+
+#: xfree86.xml.in.h:268
+msgid "SVEN Ergonomic 2500"
+msgstr "SVEN Ergonomic 2500"
+
+#: xfree86.xml.in.h:269
+msgid "Samsung SDM 4500P"
+msgstr "Samsung SDM 4500P"
+
+#: xfree86.xml.in.h:270
+msgid "Samsung SDM 4510P"
+msgstr "Samsung SDM 4510P"
+
+#: xfree86.xml.in.h:271
+msgid "Sapmi"
+msgstr "Sapmi"
+
+#: xfree86.xml.in.h:272
+msgid "Scg"
+msgstr "Scg"
+
+#: xfree86.xml.in.h:273
+msgid "Scroll_Lock LED shows alternative group"
+msgstr "Scroll_Lock LED-ləri alternativ qrupları göstərir"
+
+#: xfree86.xml.in.h:274
+msgid "Serbian"
+msgstr "ServcÉ™"
+
+#: xfree86.xml.in.h:275
+msgid "Shift with numpad keys works as in MS Windows"
+msgstr "ÆdÉ™d düymÉ™lÉ™rindÉ™ Shift MS Windows-dakı kimi iÅŸlÉ™yir"
+
+#: xfree86.xml.in.h:276
+msgid "Slovak"
+msgstr "Slovakca"
+
+#: xfree86.xml.in.h:277
+msgid "Slovak (qwerty)"
+msgstr "Slovakca (qwerty)"
+
+#: xfree86.xml.in.h:278
+msgid "Slovenian"
+msgstr "SlovencÉ™"
+
+#: xfree86.xml.in.h:279
+msgid "Sme"
+msgstr "Sme"
+
+#: xfree86.xml.in.h:280
+msgid "Spanish"
+msgstr "Ä°spanca"
+
+#: xfree86.xml.in.h:281
+msgid "Special keys (Ctrl+Alt+&lt;key&gt;) handled in a server."
+msgstr "Xüsusi düymələr (Ctrl+Alt+&lt;düyməsi&gt;) verici tərəfindən idarə edilsin."
+
+#: xfree86.xml.in.h:282
+msgid "Standard"
+msgstr "Standart"
+
+#: xfree86.xml.in.h:283
+msgid "Sun dead keys"
+msgstr "Sun ölü düymələr"
+
+#: xfree86.xml.in.h:284
+msgid "Super is mapped to the Win-keys (default)."
+msgstr "Super Win düymələrinə xəritələnib (ön qurğulu)."
+
+#: xfree86.xml.in.h:285
+msgid "Sv"
+msgstr "Sv"
+
+#: xfree86.xml.in.h:286
+msgid "Svk"
+msgstr "Svk"
+
+#: xfree86.xml.in.h:287
+msgid "Svn"
+msgstr "Svn"
+
+#: xfree86.xml.in.h:288
+msgid "Swap Control and Caps Lock"
+msgstr "Control və Caps Lock arasında dəyiş"
+
+#: xfree86.xml.in.h:289
+msgid "Swe"
+msgstr "Swe"
+
+#: xfree86.xml.in.h:290
+msgid "Swedish"
+msgstr "İsveçcə"
+
+#: xfree86.xml.in.h:291
+msgid "Swiss French"
+msgstr "İsveçrə Fransızcası"
+
+#: xfree86.xml.in.h:292
+msgid "Swiss German"
+msgstr "İsveçrə Almancası"
+
+#: xfree86.xml.in.h:293
+msgid "Symplon PaceBook (tablet PC)"
+msgstr "Symplon PaceBook (tablet PC)"
+
+#: xfree86.xml.in.h:294
+msgid "Syr"
+msgstr "Syr"
+
+#: xfree86.xml.in.h:295
+msgid "Syriac"
+msgstr "Syriac"
+
+#: xfree86.xml.in.h:296
+msgid "Tajik"
+msgstr "TacikcÉ™"
+
+#: xfree86.xml.in.h:297
+msgid "Tamil"
+msgstr "TamilcÉ™"
+
+#: xfree86.xml.in.h:298
+msgid "Tel"
+msgstr "Tel"
+
+#: xfree86.xml.in.h:299
+msgid "Telugu"
+msgstr "Telugu"
+
+#: xfree86.xml.in.h:300
+msgid "Tha"
+msgstr "Tay"
+
+#: xfree86.xml.in.h:301
+msgid "Thai (Kedmanee)"
+msgstr "Tayca (Kedmanee)"
+
+#: xfree86.xml.in.h:302
+msgid "Thai (Pattachote)"
+msgstr "Tayca (Pattachote)"
+
+#: xfree86.xml.in.h:303
+msgid "Thai (TIS-820.2538)"
+msgstr "Tayca (TIS-820.2538)"
+
+#: xfree86.xml.in.h:304
+msgid "Third level choosers"
+msgstr "Üçüncü səviyyə seçicilər"
+
+#: xfree86.xml.in.h:305
+msgid "Tjk"
+msgstr "Tac"
+
+#: xfree86.xml.in.h:306
+msgid "Tml"
+msgstr "Tml"
+
+#: xfree86.xml.in.h:307
+msgid "Toshiba Satellite S3000"
+msgstr "Toshiba Satellite S3000"
+
+#: xfree86.xml.in.h:308
+msgid "Trust Direct Access Keyboard"
+msgstr "Trust Direct Access Keyboard"
+
+#: xfree86.xml.in.h:309
+msgid "Trust Wireless Keyboard Classic"
+msgstr "Trust Wireless Keyboard Classic"
+
+#: xfree86.xml.in.h:310
+msgid "Tur"
+msgstr "Tür"
+
+#: xfree86.xml.in.h:311
+msgid "Turkish"
+msgstr "Türkcə"
+
+#: xfree86.xml.in.h:312
+msgid "Turkish (F)"
+msgstr "Türkcə (F)"
+
+#: xfree86.xml.in.h:313
+msgid "Turkish Alt-Q Layout"
+msgstr "Türkcə Alt-Q Düzülüşü"
+
+#: xfree86.xml.in.h:314
+msgid "U.S. English"
+msgstr "A.B.Ş. İngiliscəsi"
+
+#: xfree86.xml.in.h:315
+msgid "U.S. English w/ ISO9995-3"
+msgstr "A.B.Ş. İngiliscəsi və/ ISO9995-3"
+
+#: xfree86.xml.in.h:316
+msgid "U.S. English w/ dead keys"
+msgstr "A.B.Ş. İngiliscəsi və/ ölü düymələr"
+
+#: xfree86.xml.in.h:317
+msgid "US"
+msgstr "ABÅž"
+
+#: xfree86.xml.in.h:318
+msgid "US keyboard with Romanian letters"
+msgstr "Roman hərfli ABŞ klaviaturası"
+
+#: xfree86.xml.in.h:319
+msgid "USA"
+msgstr "ABÅž"
+
+#: xfree86.xml.in.h:320
+msgid "Ukr"
+msgstr "Ukr"
+
+#: xfree86.xml.in.h:321
+msgid "Ukrainian"
+msgstr "Ukraynaca"
+
+#: xfree86.xml.in.h:322
+msgid "UnicodeExpert"
+msgstr "UnicodeExpert"
+
+#: xfree86.xml.in.h:323
+msgid "United Kingdom"
+msgstr "Birləşik Krallıq"
+
+#: xfree86.xml.in.h:324
+msgid "Use keyboard LED to show alternative group"
+msgstr "Alternativ qrupu göstərmək üçün klaviatura LED-ini işlət"
+
+#: xfree86.xml.in.h:325
+msgid "Uses internal capitalization. Shift cancels Caps."
+msgstr "Daxili kapitalizasiya işlədir. Shift Caps-i ləğv edir."
+
+#: xfree86.xml.in.h:326
+msgid "Uses internal capitalization. Shift doesn't cancel Caps."
+msgstr "Daxili kapitalizasiya işlədir. Shift Caps-i ləğv etmir."
+
+#: xfree86.xml.in.h:327
+msgid "Uzb"
+msgstr "Özb"
+
+#: xfree86.xml.in.h:328
+msgid "Uzbek"
+msgstr "Özbəkcə"
+
+#: xfree86.xml.in.h:329
+msgid "Vietnamese"
+msgstr "Vyetnamca"
+
+#: xfree86.xml.in.h:330
+msgid "Vnm"
+msgstr "Vye"
+
+#: xfree86.xml.in.h:331
+msgid "Winbook Model XP5"
+msgstr "Winbook Model XP5"
+
+#: xfree86.xml.in.h:332
+msgid "Winkeys"
+msgstr "Winkeys"
+
+#: xfree86.xml.in.h:333
+msgid "Yahoo! Internet Keyboard"
+msgstr "Yahoo! Internet Keyboard"
+
+#: xfree86.xml.in.h:334
+msgid "Yug"
+msgstr "Yug"
+
+#: xfree86.xml.in.h:335
+msgid "Yugoslavian"
+msgstr "Yugoslavca"
+
+#: xfree86.xml.in.h:336
+msgid "abnt2"
+msgstr "abnt2"
+
+#: xfree86.xml.in.h:337
+msgid "azerty"
+msgstr "azerty"
+
+#: xfree86.xml.in.h:338
+msgid "azerty/digits"
+msgstr "azerty/ədədlər"
+
+#: xfree86.xml.in.h:339
+msgid "bksl"
+msgstr "bksl"
+
+#: xfree86.xml.in.h:340
+msgid "digits"
+msgstr "ədədlər"
+
+#: xfree86.xml.in.h:341
+msgid "l2/101/qwerty/comma"
+msgstr "l2/101/qwerty/vergül"
+
+#: xfree86.xml.in.h:342
+msgid "l2/101/qwerty/dot"
+msgstr "l2/101/qwerty/nöqtə"
+
+#: xfree86.xml.in.h:343
+msgid "l2/101/qwertz/comma"
+msgstr "l2/101/qwertz/vergül"
+
+#: xfree86.xml.in.h:344
+msgid "l2/101/qwertz/dot"
+msgstr "2/101/qwertz/nöqtə"
+
+#: xfree86.xml.in.h:345
+msgid "l2/102/qwerty/comma"
+msgstr "l2/102/qwerty/vergül"
+
+#: xfree86.xml.in.h:346
+msgid "l2/102/qwerty/dot"
+msgstr "l2/102/qwerty/nöqtə"
+
+#: xfree86.xml.in.h:347
+msgid "l2/102/qwertz/comma"
+msgstr "l2/102/qwertz/vergül"
+
+#: xfree86.xml.in.h:348
+msgid "l2/102/qwertz/dot"
+msgstr "l2/102/qwertz/nöqtə"
+
+#: xfree86.xml.in.h:349
+msgid "laptop"
+msgstr "laptop"
+
+#: xfree86.xml.in.h:350
+msgid "lyx"
+msgstr "lyx"
+
+#: xfree86.xml.in.h:351
+msgid "qwerty"
+msgstr "qwerty"
+
+#: xfree86.xml.in.h:352
+msgid "qwerty/digits"
+msgstr "qwerty/ədədlər"
+
+#: xfree86.xml.in.h:353
+msgid "sefi"
+msgstr "sefi"
+
+#: xfree86.xml.in.h:354
+msgid "si1452"
+msgstr "si1452"
+
+#: xfree86.xml.in.h:355
+msgid "uni/101/qwerty/comma"
+msgstr "uni/101/qwerty/vergül"
+
+#: xfree86.xml.in.h:356
+msgid "uni/101/qwerty/dot"
+msgstr "uni/101/qwerty/nöqtə"
+
+#: xfree86.xml.in.h:357
+msgid "uni/101/qwertz/comma"
+msgstr "uni/101/qwertz/vergül"
+
+#: xfree86.xml.in.h:358
+msgid "uni/101/qwertz/dot"
+msgstr "uni/101/qwertz/nöqtə"
+
+#: xfree86.xml.in.h:359
+msgid "uni/102/qwerty/comma"
+msgstr "uni/102/qwerty/vergül"
+
+#: xfree86.xml.in.h:360
+msgid "uni/102/qwerty/dot"
+msgstr "uni/102/qwerty/nöqtə"
+
+#: xfree86.xml.in.h:361
+msgid "uni/102/qwertz/comma"
+msgstr "uni/102/qwertz/vergül"
+
+#: xfree86.xml.in.h:362
+msgid "uni/102/qwertz/dot"
+msgstr "uni/102/qwertz/nöqtə"
diff --git a/xorg-server/xkeyboard-config/po/crh.po b/xorg-server/xkeyboard-config/po/crh.po
index 8639c7f46..9e9835c81 100644
--- a/xorg-server/xkeyboard-config/po/crh.po
+++ b/xorg-server/xkeyboard-config/po/crh.po
@@ -1,2874 +1,2874 @@
-# Crimean Tatar (Crimean Turkish) translation for xkeyboard-config.
-# Copyright (C) 2009 Free Software Foundation, Inc.
-# This file is distributed under the same license as the xkeyboard-config package.
-#
-# ReÅŸat SABIQ <tilde.birlik@gmail.com>, 2009, 2010.
-# Özgür Qarahan <karahan@vatankirim.net>, 2009.
-# Şimdilik, bazan Türkçe tercimeler qullanıla.
-msgid ""
-msgstr ""
-"Project-Id-Version: xkeyboard-config 1.8\n"
-"Report-Msgid-Bugs-To: svu@users.sourceforge.net\n"
-"POT-Creation-Date: 2010-01-16 18:08+0000\n"
-"PO-Revision-Date: 2010-04-06 19:25-0500\n"
-"Last-Translator: ReÅŸat SABIQ <tilde.birlik@gmail.com>\n"
-"Language-Team: Crimean Tatar (Crimean Turkish) <tilde-birlik-tercime@lists.sourceforge.net>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-# tüklü
-#: ../rules/base.xml.in.h:1
-msgid "(F)"
-msgstr "F tizilimi"
-
-#: ../rules/base.xml.in.h:2
-msgid "(Legacy) Alternative"
-msgstr "(Qadim) Alternativ"
-
-#: ../rules/base.xml.in.h:3
-msgid "(Legacy) Alternative, Sun dead keys"
-msgstr "(Qadim) Alternativ, Sun ölü tuşlar"
-
-#: ../rules/base.xml.in.h:4
-msgid "(Legacy) Alternative, eliminate dead keys"
-msgstr "(Qadim) Alternativ, ölü tuşsuz"
-
-#: ../rules/base.xml.in.h:5
-msgid "101/104 key Compatible"
-msgstr "101/104 tuÅŸ Qabili Telif"
-
-#: ../rules/base.xml.in.h:6
-msgid "101/qwerty/comma/Dead keys"
-msgstr "101/qwerty/virgül/Ölü tuşlar"
-
-#: ../rules/base.xml.in.h:7
-msgid "101/qwerty/comma/Eliminate dead keys"
-msgstr "101/qwerty/virgül/Ölü tuşsuz"
-
-#: ../rules/base.xml.in.h:8
-msgid "101/qwerty/dot/Dead keys"
-msgstr "101/qwerty/noqta/Ölü tuşlar"
-
-#: ../rules/base.xml.in.h:9
-msgid "101/qwerty/dot/Eliminate dead keys"
-msgstr "101/qwerty/noqta/Ölü tuşsuz"
-
-#: ../rules/base.xml.in.h:10
-msgid "101/qwertz/comma/Dead keys"
-msgstr "101/qwertz/virgül/Ölü tuşlar"
-
-#: ../rules/base.xml.in.h:11
-msgid "101/qwertz/comma/Eliminate dead keys"
-msgstr "101/qwertz/virgül/Ölü tuşsuz"
-
-#: ../rules/base.xml.in.h:12
-msgid "101/qwertz/dot/Dead keys"
-msgstr "101/qwertz/noqta/Ölü tuşlar"
-
-#: ../rules/base.xml.in.h:13
-msgid "101/qwertz/dot/Eliminate dead keys"
-msgstr "101/qwertz/noqta/Ölü tuşsuz"
-
-#: ../rules/base.xml.in.h:14
-msgid "102/qwerty/comma/Dead keys"
-msgstr "102/qwerty/virgül/Ölü tuşlar"
-
-#: ../rules/base.xml.in.h:15
-msgid "102/qwerty/comma/Eliminate dead keys"
-msgstr "102/qwerty/virgül/Ölü tuşsuz"
-
-#: ../rules/base.xml.in.h:16
-msgid "102/qwerty/dot/Dead keys"
-msgstr "102/qwerty/noqta/Ölü tuşlar"
-
-#: ../rules/base.xml.in.h:17
-msgid "102/qwerty/dot/Eliminate dead keys"
-msgstr "102/qwerty/noqta/Ölü tuşsuz"
-
-#: ../rules/base.xml.in.h:18
-msgid "102/qwertz/comma/Dead keys"
-msgstr "102/qwertz/virgül/Ölü tuşlar"
-
-#: ../rules/base.xml.in.h:19
-msgid "102/qwertz/comma/Eliminate dead keys"
-msgstr "102/qwertz/virgül/Ölü tuşsuz"
-
-#: ../rules/base.xml.in.h:20
-msgid "102/qwertz/dot/Dead keys"
-msgstr "102/qwertz/noqta/Ölü tuşlar"
-
-#: ../rules/base.xml.in.h:21
-msgid "102/qwertz/dot/Eliminate dead keys"
-msgstr "102/qwertz/noqta/Ölü tuşsuz"
-
-#: ../rules/base.xml.in.h:22
-msgid "2"
-msgstr "2"
-
-#: ../rules/base.xml.in.h:23
-msgid "4"
-msgstr "4"
-
-#: ../rules/base.xml.in.h:24
-msgid "5"
-msgstr "5"
-
-#: ../rules/base.xml.in.h:25
-msgid "A4Tech KB-21"
-msgstr "A4Tech KB-21"
-
-#: ../rules/base.xml.in.h:26
-msgid "A4Tech KBS-8"
-msgstr "A4Tech KBS-8"
-
-#: ../rules/base.xml.in.h:27
-msgid "A4Tech Wireless Desktop RFKB-23"
-msgstr "A4Tech Telsiz Masaüstü RFKB-23"
-
-#: ../rules/base.xml.in.h:28
-msgid "ACPI Standard"
-msgstr "ACPI Standartı"
-
-# tüklü
-#: ../rules/base.xml.in.h:29
-msgid "ATM/phone-style"
-msgstr "ATM/telefon-uslûbı"
-
-#: ../rules/base.xml.in.h:30
-msgid "Acer AirKey V"
-msgstr "Acer AirKey V"
-
-#: ../rules/base.xml.in.h:31
-msgid "Acer C300"
-msgstr "Acer C300"
-
-#: ../rules/base.xml.in.h:32
-msgid "Acer Ferrari 4000"
-msgstr "Acer Ferrari 4000"
-
-#: ../rules/base.xml.in.h:33
-msgid "Acer Laptop"
-msgstr "Acer Tizüstü"
-
-#: ../rules/base.xml.in.h:34
-msgid "Add the standard behavior to Menu key"
-msgstr "Menü tuşuna standart davranışnı ekle."
-
-#: ../rules/base.xml.in.h:35
-msgid "Adding Esperanto circumflexes (supersigno)"
-msgstr "Esperanto qıyışıq-yaylarınıñ (circumflex) eklenüvi (supersigno)"
-
-#: ../rules/base.xml.in.h:36
-msgid "Adding EuroSign to certain keys"
-msgstr "Belli tuşlarğa € remziniñ eklenüvi"
-
-#: ../rules/base.xml.in.h:37
-msgid "Advance Scorpius KI"
-msgstr "Advance Scorpius KI"
-
-#: ../rules/base.xml.in.h:38
-msgid "Afg"
-msgstr "Afg"
-
-#: ../rules/base.xml.in.h:39
-msgid "Afghanistan"
-msgstr "AfÄŸanistan"
-
-#: ../rules/base.xml.in.h:40
-msgid "Akan"
-msgstr "Akan"
-
-#: ../rules/base.xml.in.h:41
-msgid "Alb"
-msgstr "Arn"
-
-#: ../rules/base.xml.in.h:42
-msgid "Albania"
-msgstr "Arnavutlıq"
-
-#: ../rules/base.xml.in.h:43
-msgid "Alt and Meta are on Alt keys"
-msgstr "Alt ve Meta, Alt tuşlarındadır"
-
-#: ../rules/base.xml.in.h:44
-msgid "Alt is mapped to Right Win, Super to Menu"
-msgstr "Alt, Oñ Win tuşuna, Süper ise Menü tuşuna haritalandırılır"
-
-#: ../rules/base.xml.in.h:45
-msgid "Alt+CapsLock"
-msgstr "Alt+CapsLock"
-
-#: ../rules/base.xml.in.h:46
-msgid "Alt+Ctrl"
-msgstr "Alt+Ctrl"
-
-#: ../rules/base.xml.in.h:47
-msgid "Alt+Shift"
-msgstr "Alt+Shift"
-
-#: ../rules/base.xml.in.h:48
-msgid "Alt+Space"
-msgstr "Alt+BoÅŸluq"
-
-#: ../rules/base.xml.in.h:49
-msgid "Alt-Q"
-msgstr "Alt-Q (yazılımcı klavyesi)"
-
-#: ../rules/base.xml.in.h:50
-msgid "Alt/Win key behavior"
-msgstr "Alt/Win tuşu davranışı"
-
-#: ../rules/base.xml.in.h:51
-msgid "Alternative"
-msgstr "Alternativ"
-
-#: ../rules/base.xml.in.h:52
-msgid "Alternative Eastern"
-msgstr "Alternativ Åžarqiy"
-
-#: ../rules/base.xml.in.h:53
-msgid "Alternative Phonetic"
-msgstr "Alternativ Fonetik"
-
-#: ../rules/base.xml.in.h:54
-msgid "Alternative international (former us_intl)"
-msgstr "Alternativ milletlerara (Q klavyesi; evelki us_intl)"
-
-#: ../rules/base.xml.in.h:55
-msgid "Alternative, Sun dead keys"
-msgstr "Alternativ, Sun ölü tuşlar"
-
-#: ../rules/base.xml.in.h:56
-msgid "Alternative, eliminate dead keys"
-msgstr "Alternativ, ölü tuşsuz"
-
-#: ../rules/base.xml.in.h:57
-msgid "Alternative, latin-9 only"
-msgstr "Alternativ, faqat latin-9"
-
-#: ../rules/base.xml.in.h:58
-msgid "And"
-msgstr "And"
-
-#: ../rules/base.xml.in.h:59
-msgid "Andorra"
-msgstr "Andora"
-
-#: ../rules/base.xml.in.h:60
-msgid "Any Alt key"
-msgstr "Er angi Alt tuÅŸu"
-
-#: ../rules/base.xml.in.h:61
-msgid "Any Win key"
-msgstr "Er angi Pencereler (Win) tuÅŸu"
-
-# tüklü
-#: ../rules/base.xml.in.h:62
-msgid "Any Win key (while pressed)"
-msgstr "Er angi Pencereler (Win) tuşu (basıq olğanda)"
-
-#: ../rules/base.xml.in.h:63
-msgid "Apostrophe (') variant"
-msgstr "Apostrof (') variantı"
-
-#: ../rules/base.xml.in.h:64
-msgid "Apple"
-msgstr "Apple"
-
-#: ../rules/base.xml.in.h:65
-msgid "Apple Laptop"
-msgstr "Apple Tizüstü"
-
-#: ../rules/base.xml.in.h:66
-msgid "Ara"
-msgstr "Ara"
-
-#: ../rules/base.xml.in.h:67
-msgid "Arabic"
-msgstr "Arapça"
-
-#: ../rules/base.xml.in.h:68
-msgid "Arm"
-msgstr "Erm"
-
-#: ../rules/base.xml.in.h:69
-msgid "Armenia"
-msgstr "Ermenistan"
-
-#: ../rules/base.xml.in.h:70
-msgid "Asturian variant with bottom-dot H and bottom-dot L"
-msgstr "Alt-noqtalı H ve alt-noqatlı L ile Asturian variant"
-
-#: ../rules/base.xml.in.h:71
-msgid "Asus Laptop"
-msgstr "Asus Tizüstü"
-
-#: ../rules/base.xml.in.h:72
-msgid "At bottom left"
-msgstr "Tüpniñ solunda"
-
-#: ../rules/base.xml.in.h:73
-msgid "At left of 'A'"
-msgstr "'A'nıñ solunda"
-
-#: ../rules/base.xml.in.h:74
-msgid "Aze"
-msgstr "Aze"
-
-#: ../rules/base.xml.in.h:75
-msgid "Azerbaijan"
-msgstr "Azerbaycan"
-
-# tüklü
-#: ../rules/base.xml.in.h:76
-msgid "Azona RF2300 wireless Internet Keyboard"
-msgstr "Azona RF2300 telsiz Ä°nternet Klavyesi"
-
-#: ../rules/base.xml.in.h:77
-msgid "BTC 5090"
-msgstr "BTC 5090"
-
-# tüklü
-#: ../rules/base.xml.in.h:78
-msgid "BTC 5113RF Multimedia"
-msgstr "BTC 5113RF Çoqluvasat"
-
-#: ../rules/base.xml.in.h:79
-msgid "BTC 5126T"
-msgstr "BTC 5126T"
-
-#: ../rules/base.xml.in.h:80
-msgid "BTC 6301URF"
-msgstr "BTC 6301URF"
-
-#: ../rules/base.xml.in.h:81
-msgid "BTC 9000"
-msgstr "BTC 9000"
-
-#: ../rules/base.xml.in.h:82
-msgid "BTC 9000A"
-msgstr "BTC 9000A"
-
-#: ../rules/base.xml.in.h:83
-msgid "BTC 9001AH"
-msgstr "BTC 9001AH"
-
-#: ../rules/base.xml.in.h:84
-msgid "BTC 9019U"
-msgstr "BTC 9019U"
-
-#: ../rules/base.xml.in.h:85
-msgid "BTC 9116U Mini Wireless Internet and Gaming"
-msgstr "BTC 9116U Mini Telsiz Ä°nternet ve Oyunlav"
-
-#: ../rules/base.xml.in.h:86
-msgid "Ban"
-msgstr "Ban"
-
-#: ../rules/base.xml.in.h:87
-msgid "Bangladesh"
-msgstr "BangladeÅŸ"
-
-#: ../rules/base.xml.in.h:88
-msgid "Bashkirian"
-msgstr "Başqurtça"
-
-#: ../rules/base.xml.in.h:89
-msgid "Bel"
-msgstr "Bel"
-
-#: ../rules/base.xml.in.h:90
-msgid "Belarus"
-msgstr "Belarus"
-
-#: ../rules/base.xml.in.h:91
-msgid "Belgium"
-msgstr "Belçika"
-
-#: ../rules/base.xml.in.h:92
-msgid "BenQ X-Touch"
-msgstr "BenQ X-Touch"
-
-#: ../rules/base.xml.in.h:93
-msgid "BenQ X-Touch 730"
-msgstr "BenQ X-Touch 730"
-
-#: ../rules/base.xml.in.h:94
-msgid "BenQ X-Touch 800"
-msgstr "BenQ X-Touch 800"
-
-#: ../rules/base.xml.in.h:95
-msgid "Bengali"
-msgstr "Bengali"
-
-#: ../rules/base.xml.in.h:96
-msgid "Bengali Probhat"
-msgstr "Bengali Probhat"
-
-#: ../rules/base.xml.in.h:97
-msgid "Bepo, ergonomic, Dvorak way"
-msgstr "Bepo, ergonomik, Dvorak yolu"
-
-#: ../rules/base.xml.in.h:98
-msgid "Bepo, ergonomic, Dvorak way, latin-9 only"
-msgstr "Bepo, ergonomik, Dvorak yolu, faqat latin-9"
-
-#: ../rules/base.xml.in.h:99
-msgid "Bgr"
-msgstr "Bgr"
-
-#: ../rules/base.xml.in.h:100
-msgid "Bhu"
-msgstr "Bhu"
-
-#: ../rules/base.xml.in.h:101
-msgid "Bhutan"
-msgstr "Butan"
-
-#: ../rules/base.xml.in.h:102
-msgid "Biblical Hebrew (Tiro)"
-msgstr "Ä°nciliy Ä°braniyce (Tiro)"
-
-#: ../rules/base.xml.in.h:103
-msgid "Bih"
-msgstr "Bih"
-
-#: ../rules/base.xml.in.h:104
-msgid "Blr"
-msgstr "Blr"
-
-#: ../rules/base.xml.in.h:105
-msgid "Bosnia and Herzegovina"
-msgstr "Bosna-Hersek"
-
-#: ../rules/base.xml.in.h:106
-msgid "Both Alt keys together"
-msgstr "Alt tuşlarınıñ ekisi de"
-
-#: ../rules/base.xml.in.h:107
-msgid "Both Ctrl keys together"
-msgstr "Ctrl tuşlarınıñ ekisi de"
-
-#: ../rules/base.xml.in.h:108
-msgid "Both Shift keys together"
-msgstr "Shift tuşlarınıñ ekisi de"
-
-#: ../rules/base.xml.in.h:109
-msgid "Bra"
-msgstr "Bra"
-
-# tınış
-#: ../rules/base.xml.in.h:110
-msgid "Braille"
-msgstr "Körler elifbesi"
-
-#: ../rules/base.xml.in.h:111
-msgid "Brazil"
-msgstr "Brezilya"
-
-# tüklü
-#: ../rules/base.xml.in.h:112
-msgid "Breton"
-msgstr "Breton"
-
-#: ../rules/base.xml.in.h:113
-msgid "Brl"
-msgstr "Brl"
-
-#: ../rules/base.xml.in.h:114
-msgid "Brother Internet Keyboard"
-msgstr "Brother Ä°nternet Klavyesi"
-
-#: ../rules/base.xml.in.h:115
-msgid "Buckwalter"
-msgstr "Bükvalter"
-
-#: ../rules/base.xml.in.h:116
-msgid "Bulgaria"
-msgstr "Bulgaristan"
-
-# tüklü
-#: ../rules/base.xml.in.h:117
-msgid "CRULP"
-msgstr "CRULP"
-
-#: ../rules/base.xml.in.h:118
-msgid "Cambodia"
-msgstr "Kamboçya"
-
-#: ../rules/base.xml.in.h:119
-msgid "Can"
-msgstr "Kan"
-
-#: ../rules/base.xml.in.h:120
-msgid "Canada"
-msgstr "Kanada"
-
-# tüklü
-#: ../rules/base.xml.in.h:121
-msgid "Caps Lock"
-msgstr "Caps Lock"
-
-#: ../rules/base.xml.in.h:122
-msgid "CapsLock"
-msgstr "CapsLock"
-
-#: ../rules/base.xml.in.h:123
-msgid "CapsLock (to first layout), Shift+CapsLock (to last layout)"
-msgstr "CapsLock (birinci tizilimge almaştırır), Shift+CapsLock (soñkisine)"
-
-#: ../rules/base.xml.in.h:124
-msgid "CapsLock (while pressed), Alt+CapsLock does the original capslock action"
-msgstr "CapsLock tuşu (basıq olğanda), Alt+CapsLock asliy CapsLock amelini yapar"
-
-#: ../rules/base.xml.in.h:125
-msgid "CapsLock acts as Shift with locking. Shift \"pauses\" CapsLock"
-msgstr "CapsLock kilitlemeli Shift kibi çalışır. Shift ise CapsLock tuşunı \"tınışlar\""
-
-#: ../rules/base.xml.in.h:126
-msgid "CapsLock acts as Shift with locking. Shift doesn't affect CapsLock"
-msgstr "CapsLock kilitlemeli Shift kibi çalışır. Shift tuşu Caps Lock davranışına tesirlemez."
-
-#: ../rules/base.xml.in.h:127
-msgid "CapsLock is disabled"
-msgstr "CapsLock ğayrı qabil"
-
-#: ../rules/base.xml.in.h:128
-msgid "CapsLock key behavior"
-msgstr "CapsLock tuşunıñ davranışı"
-
-# bundan alfabetik olmayan tuÅŸlar da etkilenir.
-#: ../rules/base.xml.in.h:129
-msgid "CapsLock toggles Shift so all keys are affected"
-msgstr "CapsLock, tuşlarnıñ episi tesirlenecek şekilde Shift davranışını döndürir"
-
-# tuşu büyük/küçük harf geçişi yapar.
-#: ../rules/base.xml.in.h:130
-msgid "CapsLock toggles normal capitalization of alphabetic characters"
-msgstr "CapsLock elifbe remizleriniñ normal başlaştırılmasını almaştırır"
-
-#: ../rules/base.xml.in.h:131
-msgid "CapsLock uses internal capitalization. Shift \"pauses\" CapsLock"
-msgstr "CapsLock içki başlaştırmanı qullanır. Shift CapsLock tuşunı \"tınışlar\""
-
-#: ../rules/base.xml.in.h:132
-msgid "CapsLock uses internal capitalization. Shift doesn't affect CapsLock"
-msgstr "CapsLock içki başlaştırmanı qullanır. Shift CapsLock davranışına tesirlemez."
-
-#: ../rules/base.xml.in.h:133
-msgid "Catalan variant with middle-dot L"
-msgstr "Ortası noqtalı L'li Katalan yerleşimi"
-
-#: ../rules/base.xml.in.h:134
-msgid "Cedilla"
-msgstr "Sedilla"
-
-#: ../rules/base.xml.in.h:135
-msgid "Che"
-msgstr "Che"
-
-#: ../rules/base.xml.in.h:136
-msgid "Cherokee"
-msgstr "Çeroki"
-
-#: ../rules/base.xml.in.h:137
-msgid "Cherry B.UNLIMITED"
-msgstr "Cherry B.UNLIMITED"
-
-#: ../rules/base.xml.in.h:138
-msgid "Cherry Blue Line CyBo@rd"
-msgstr "Cherry Blue Line CyBo@rd"
-
-#: ../rules/base.xml.in.h:139
-msgid "Cherry Blue Line CyBo@rd (alternate option)"
-msgstr "Cherry Blue Line CyBo@rd (diğer seçenek)"
-
-#: ../rules/base.xml.in.h:140
-msgid "Cherry CyBo@rd USB-Hub"
-msgstr "Cherry CyBo@rd USB-Hub"
-
-#: ../rules/base.xml.in.h:141
-msgid "Cherry CyMotion Expert"
-msgstr "Cherry CyMotion Expert"
-
-#: ../rules/base.xml.in.h:142
-msgid "Cherry CyMotion Master Linux"
-msgstr "Cherry CyMotion Master Linux"
-
-#: ../rules/base.xml.in.h:143
-msgid "Cherry CyMotion Master XPress"
-msgstr "Cherry CyMotion Master XPress"
-
-#: ../rules/base.xml.in.h:144
-msgid "Chicony Internet Keyboard"
-msgstr "Chicony Ä°nternet Klavyesi"
-
-#: ../rules/base.xml.in.h:145
-msgid "Chicony KB-9885"
-msgstr "Chicony KB-9885"
-
-#: ../rules/base.xml.in.h:146
-msgid "Chicony KU-0108"
-msgstr "Chicony KU-0108"
-
-#: ../rules/base.xml.in.h:147
-msgid "Chicony KU-0420"
-msgstr "Chicony KU-0420"
-
-#: ../rules/base.xml.in.h:148
-msgid "China"
-msgstr "Çin"
-
-#: ../rules/base.xml.in.h:149
-msgid "Chuvash"
-msgstr "Çuvaşça"
-
-#: ../rules/base.xml.in.h:150
-msgid "Chuvash Latin"
-msgstr "Çuvaşça Latin"
-
-#: ../rules/base.xml.in.h:151
-msgid "Classic"
-msgstr "Klassik"
-
-#: ../rules/base.xml.in.h:152
-msgid "Classic Dvorak"
-msgstr "Klassik Dvorak"
-
-#: ../rules/base.xml.in.h:153
-msgid "Classmate PC"
-msgstr "Classmate Åžahsiy Bilgisayar (PC)"
-
-#: ../rules/base.xml.in.h:154
-msgid "CloGaelach"
-msgstr "CloGaelach"
-
-#: ../rules/base.xml.in.h:155
-msgid "Colemak"
-msgstr "Colemak"
-
-#: ../rules/base.xml.in.h:156
-msgid "Compaq Easy Access Keyboard"
-msgstr "Compaq Kolay EriÅŸim Klavyesi"
-
-#: ../rules/base.xml.in.h:157
-msgid "Compaq Internet Keyboard (13 keys)"
-msgstr "Compaq Ä°nternet Klavyesi (13 tuÅŸlu)"
-
-#: ../rules/base.xml.in.h:158
-msgid "Compaq Internet Keyboard (18 keys)"
-msgstr "Compaq Ä°nternet Klavyesi (18 tuÅŸlu)"
-
-#: ../rules/base.xml.in.h:159
-msgid "Compaq Internet Keyboard (7 keys)"
-msgstr "Ä°nternet Klavyesi (7 tuÅŸlu)"
-
-#: ../rules/base.xml.in.h:160
-msgid "Compaq iPaq Keyboard"
-msgstr "Compaq iPaq Klavyesi"
-
-#: ../rules/base.xml.in.h:161
-msgid "Compose key position"
-msgstr "Telif (Compose) tuşu qonumı"
-
-#: ../rules/base.xml.in.h:162
-msgid "Congo, Democratic Republic of the"
-msgstr "Kongo Demokratik Cumhuriyeti"
-
-#: ../rules/base.xml.in.h:163
-msgid "Control + Alt + Backspace"
-msgstr "Control + Alt + Kerisilme"
-
-#: ../rules/base.xml.in.h:164
-msgid "Control is mapped to Alt keys, Alt is mapped to Win keys"
-msgstr "Control (Muraqabe), Alt tuşlarına haritalandırılır, Alt ise Pencereler (Win) tuşlarına haritalandırılır"
-
-#: ../rules/base.xml.in.h:165
-msgid "Control is mapped to Win keys (and the usual Ctrl keys)"
-msgstr "Control (Muraqabe), Pencereler (Win) tuşlarına (ve adetiy Ctrl tuşlarına) haritalandırılır"
-
-#: ../rules/base.xml.in.h:166
-msgid "Creative Desktop Wireless 7000"
-msgstr "Creative Masaüstü Telsiz 7000"
-
-#: ../rules/base.xml.in.h:167
-msgid "Crimean Tatar (Dobruca-1 Q)"
-msgstr "Qırımtatarca (Dobruca-1 Q)"
-
-#: ../rules/base.xml.in.h:168
-msgid "Crimean Tatar (Dobruca-2 Q)"
-msgstr "Qırımtatarca (Dobruca-2 Q)"
-
-#: ../rules/base.xml.in.h:169
-msgid "Crimean Tatar (Turkish Alt-Q)"
-msgstr "Qırımtatarca (Türkçe Alt-Q)"
-
-#: ../rules/base.xml.in.h:170
-msgid "Crimean Tatar (Turkish F)"
-msgstr "Qırımtatarca (Türkçe F)"
-
-#: ../rules/base.xml.in.h:171
-msgid "Crimean Tatar (Turkish Q)"
-msgstr "Qırımtatarca (Türkçe Q)"
-
-#: ../rules/base.xml.in.h:172
-msgid "Croatia"
-msgstr "Hırvatistan"
-
-#: ../rules/base.xml.in.h:173
-msgid "Ctrl key position"
-msgstr "Ctrl tuşunıñ mevamı"
-
-#: ../rules/base.xml.in.h:174
-msgid "Ctrl+Shift"
-msgstr "Ctrl+Shift"
-
-#: ../rules/base.xml.in.h:175
-msgid "Cyrillic"
-msgstr "Kiril"
-
-#: ../rules/base.xml.in.h:176
-msgid "Cyrillic with guillemets"
-msgstr "Köşeli qavuslarnen Kiril"
-
-#: ../rules/base.xml.in.h:177
-msgid "Cyrillic, Z and ZHE swapped"
-msgstr "Kiril, Z ile J almaştırılğan"
-
-#: ../rules/base.xml.in.h:178
-msgid "Cze"
-msgstr "Çek"
-
-#: ../rules/base.xml.in.h:179
-msgid "Czechia"
-msgstr "Çek Cumhuriyeti"
-
-#: ../rules/base.xml.in.h:180
-msgid "DOS"
-msgstr "DOS"
-
-#: ../rules/base.xml.in.h:181
-msgid "DRC"
-msgstr "DRC"
-
-#: ../rules/base.xml.in.h:182
-msgid "DTK2000"
-msgstr "DTK2000"
-
-#: ../rules/base.xml.in.h:183
-msgid "Dan"
-msgstr "Dan"
-
-#: ../rules/base.xml.in.h:184
-msgid "Dead acute"
-msgstr "Ölü acute (´)"
-
-#: ../rules/base.xml.in.h:185
-msgid "Dead grave acute"
-msgstr "Ölü grave acute (`)"
-
-#: ../rules/base.xml.in.h:186
-msgid "Default numeric keypad keys"
-msgstr "Ög-belgilengen sayısal tuştaqımı tuşları"
-
-#: ../rules/base.xml.in.h:187
-msgid "Dell"
-msgstr "Dell"
-
-#: ../rules/base.xml.in.h:188
-msgid "Dell 101-key PC"
-msgstr "Dell 101 tuÅŸlu PC"
-
-#: ../rules/base.xml.in.h:189
-msgid "Dell Laptop/notebook Inspiron 6xxx/8xxx"
-msgstr "Tizüstü/defter Dell Inspiron 6xxx/8xxx"
-
-#: ../rules/base.xml.in.h:190
-msgid "Dell Laptop/notebook Precision M series"
-msgstr "Dell Tizüstü/defter Precision M series"
-
-#: ../rules/base.xml.in.h:191
-msgid "Dell Latitude series laptop"
-msgstr "Dell Latitude serisi Tizüstü"
-
-#: ../rules/base.xml.in.h:192
-msgid "Dell Precision M65"
-msgstr "Dell Precision M65"
-
-#: ../rules/base.xml.in.h:193
-msgid "Dell SK-8125"
-msgstr "Dell SK-8125"
-
-#: ../rules/base.xml.in.h:194
-msgid "Dell SK-8135"
-msgstr "Dell SK-8135"
-
-# tüklü
-#: ../rules/base.xml.in.h:195
-msgid "Dell USB Multimedia Keyboard"
-msgstr "Dell USB Çoqluvasat Klavyesi"
-
-#: ../rules/base.xml.in.h:196
-msgid "Denmark"
-msgstr "Danimarka"
-
-#: ../rules/base.xml.in.h:197
-msgid "Deu"
-msgstr "Alm"
-
-#: ../rules/base.xml.in.h:198
-msgid "Dexxa Wireless Desktop Keyboard"
-msgstr "Dexxa Kablosuz Masaüstü Klavyesi"
-
-#: ../rules/base.xml.in.h:199
-msgid "Diamond 9801 / 9802 series"
-msgstr "Diamond 9801 / 9802 serileri"
-
-#: ../rules/base.xml.in.h:200
-msgid "Dvorak"
-msgstr "Dvorak"
-
-#: ../rules/base.xml.in.h:201
-msgid "Dvorak (UK Punctuation)"
-msgstr "Dvorak (Birleşken Qırallıq Noqtalaması)"
-
-#: ../rules/base.xml.in.h:202
-msgid "Dvorak international"
-msgstr "Dvorak milletlerara"
-
-#: ../rules/base.xml.in.h:203
-#, fuzzy
-msgid "Dvorak, Polish quotes on key 1"
-msgstr "Dvorak, \"1/!\" tuşunda Lehçe tırnaqlar"
-
-#: ../rules/base.xml.in.h:204
-msgid "Dvorak, Polish quotes on quotemark key"
-msgstr "Dvorak, tırnaq-tamğası tuşunda Lehçe tırnaqlar"
-
-#: ../rules/base.xml.in.h:205
-msgid "E"
-msgstr "E"
-
-#: ../rules/base.xml.in.h:206
-msgid "Eastern"
-msgstr "Åžarqiy"
-
-#: ../rules/base.xml.in.h:207
-msgid "Eliminate dead keys"
-msgstr "Ölü tuşları normal yapar"
-
-#: ../rules/base.xml.in.h:208
-msgid "Enable extra typographic characters"
-msgstr "Ziyade matbaa remizlerini qabilleÅŸtir"
-
-#: ../rules/base.xml.in.h:209
-msgid "English"
-msgstr "Ä°nglizce"
-
-#: ../rules/base.xml.in.h:210
-msgid "Ennyah DKB-1008"
-msgstr "Ennyah DKB-1008"
-
-#: ../rules/base.xml.in.h:211
-msgid "Enter on keypad"
-msgstr "Tuştaqımında kirsetilsin"
-
-#: ../rules/base.xml.in.h:212
-msgid "Epo"
-msgstr "Epo"
-
-#: ../rules/base.xml.in.h:213
-msgid "Ergonomic"
-msgstr "Ergonomik"
-
-#: ../rules/base.xml.in.h:214
-msgid "Esp"
-msgstr "Esp"
-
-#: ../rules/base.xml.in.h:215
-msgid "Esperanto"
-msgstr "Esperanto"
-
-#: ../rules/base.xml.in.h:216
-msgid "Est"
-msgstr "Est"
-
-#: ../rules/base.xml.in.h:217
-msgid "Estonia"
-msgstr "Estonya"
-
-#: ../rules/base.xml.in.h:218
-msgid "Eth"
-msgstr "Ety"
-
-#: ../rules/base.xml.in.h:219
-msgid "Ethiopia"
-msgstr "HabeÅŸistan"
-
-#: ../rules/base.xml.in.h:220
-msgid "Evdev-managed keyboard"
-msgstr "Evdev yönetimli klavye"
-
-#: ../rules/base.xml.in.h:221
-msgid "Everex STEPnote"
-msgstr "Everex STEPnote"
-
-#: ../rules/base.xml.in.h:222
-msgid "Ewe"
-msgstr "Eve"
-
-#: ../rules/base.xml.in.h:223
-msgid "Extended"
-msgstr "Uzatılğan"
-
-#: ../rules/base.xml.in.h:224
-msgid "Extended - Winkeys"
-msgstr "Uzatılğan - Win-tuşları"
-
-# tüklü
-#: ../rules/base.xml.in.h:225
-msgid "Extended Backslash"
-msgstr "Uzatılğan Kerikesme"
-
-#: ../rules/base.xml.in.h:226
-msgid "F-letter (F) variant"
-msgstr "F harfli (F) türü"
-
-#: ../rules/base.xml.in.h:227
-msgid "FL90"
-msgstr "FL90"
-
-#: ../rules/base.xml.in.h:228
-msgid "Fao"
-msgstr "Fao"
-
-#: ../rules/base.xml.in.h:229
-msgid "Faroe Islands"
-msgstr "Faroe Adaları"
-
-#: ../rules/base.xml.in.h:230
-msgid "Fin"
-msgstr "Fin"
-
-#: ../rules/base.xml.in.h:231
-msgid "Finland"
-msgstr "Finlandiya"
-
-#. This assumes the KP_ abstract symbols are actually useful for some apps
-#. The description needs to be rewritten
-#: ../rules/base.xml.in.h:234
-msgid "Four-level key with abstract separators"
-msgstr "Mücerret ayırğıçlarnen dördünci seviye tuşu"
-
-#: ../rules/base.xml.in.h:235
-msgid "Four-level key with comma"
-msgstr "Virgülnen dördünci seviye tuşu"
-
-#: ../rules/base.xml.in.h:236
-msgid "Four-level key with dot"
-msgstr "Noqtanen dördünci seviye tuşu"
-
-#: ../rules/base.xml.in.h:237
-msgid "Four-level key with dot, latin-9 restriction"
-msgstr "Noqtanen dördünci seviye tuşu, latin-9 sıñırlaması"
-
-#: ../rules/base.xml.in.h:238
-msgid "Four-level key with momayyez"
-msgstr "Momayyez ile dördünci seviye tuşu"
-
-#: ../rules/base.xml.in.h:239
-msgid "Fra"
-msgstr "Fra"
-
-#: ../rules/base.xml.in.h:240
-msgid "France"
-msgstr "Fransa"
-
-#: ../rules/base.xml.in.h:241
-msgid "French"
-msgstr "Fransızca"
-
-#: ../rules/base.xml.in.h:242
-msgid "French (Macintosh)"
-msgstr "Fransız (Makintoş)"
-
-#: ../rules/base.xml.in.h:243
-msgid "French (legacy)"
-msgstr "Fransızca (qadim)"
-
-#: ../rules/base.xml.in.h:244
-msgid "French Dvorak"
-msgstr "Fransızca Dvorak"
-
-#: ../rules/base.xml.in.h:245
-msgid "French, Sun dead keys"
-msgstr "Fransızca, Sun ölü tuşlar"
-
-#: ../rules/base.xml.in.h:246
-msgid "French, eliminate dead keys"
-msgstr "Fransızca, ölü tuşsuz"
-
-#: ../rules/base.xml.in.h:247
-msgid "Fujitsu-Siemens Computers AMILO laptop"
-msgstr "Fujitsu-Siemens Bilgisayarları AMILO tizüstü"
-
-#: ../rules/base.xml.in.h:248
-msgid "Fula"
-msgstr "Fula"
-
-#: ../rules/base.xml.in.h:249
-msgid "GBr"
-msgstr "GBr"
-
-#: ../rules/base.xml.in.h:250
-msgid "Ga"
-msgstr "Ga"
-
-#: ../rules/base.xml.in.h:251
-msgid "Generic 101-key PC"
-msgstr "Soysal 101 tuÅŸlu PC"
-
-#: ../rules/base.xml.in.h:252
-msgid "Generic 102-key (Intl) PC"
-msgstr "Soysal 102 tuşlu (Uluslararası) PC"
-
-#: ../rules/base.xml.in.h:253
-msgid "Generic 104-key PC"
-msgstr "Soysal 104 tuÅŸlu PC"
-
-#: ../rules/base.xml.in.h:254
-msgid "Generic 105-key (Intl) PC"
-msgstr "Soysal 105 tuşlu (uluslararası) PC"
-
-#: ../rules/base.xml.in.h:255
-msgid "Genius Comfy KB-12e"
-msgstr "Genius Comfy KB-12e"
-
-#: ../rules/base.xml.in.h:256
-msgid "Genius Comfy KB-16M / Genius MM Keyboard KWD-910"
-msgstr "Genius Comfy KB-16M / Genius MM Keyboard KWD-910"
-
-#: ../rules/base.xml.in.h:257
-msgid "Genius Comfy KB-21e-Scroll"
-msgstr "Genius Comfy KB-21e-Scroll"
-
-#: ../rules/base.xml.in.h:258
-msgid "Genius KB-19e NB"
-msgstr "Genius KB-19e NB"
-
-#: ../rules/base.xml.in.h:259
-msgid "Genius KKB-2050HS"
-msgstr "Genius KKB-2050HS"
-
-#: ../rules/base.xml.in.h:260
-msgid "Geo"
-msgstr "Geo"
-
-#: ../rules/base.xml.in.h:261
-msgid "Georgia"
-msgstr "Gürcistan"
-
-#: ../rules/base.xml.in.h:262
-msgid "Georgian"
-msgstr "Gürci"
-
-#: ../rules/base.xml.in.h:263
-msgid "Georgian AZERTY Tskapo"
-msgstr "Gürci AZERTY Tskapo"
-
-#: ../rules/base.xml.in.h:264
-msgid "German (Macintosh)"
-msgstr "Alman (MakintoÅŸ)"
-
-#: ../rules/base.xml.in.h:265
-msgid "German, Sun dead keys"
-msgstr "Almanca, Sun ölü tuşlar"
-
-#: ../rules/base.xml.in.h:266
-msgid "German, eliminate dead keys"
-msgstr "Almanca, ölü tuşsuz"
-
-#: ../rules/base.xml.in.h:267
-msgid "Germany"
-msgstr "Almanya"
-
-#: ../rules/base.xml.in.h:268
-msgid "Gha"
-msgstr "Gha"
-
-#: ../rules/base.xml.in.h:269
-msgid "Ghana"
-msgstr "Gana"
-
-#: ../rules/base.xml.in.h:270
-msgid "Gre"
-msgstr "Gre"
-
-#: ../rules/base.xml.in.h:271
-msgid "Greece"
-msgstr "Yunanistan"
-
-#: ../rules/base.xml.in.h:272
-msgid "Group toggle on multiply/divide key"
-msgstr "Arttır/Böl tuşu üzerine zümreni almaştır"
-
-#: ../rules/base.xml.in.h:273
-msgid "Gui"
-msgstr "Qıllanıcı Arayüzü (Gui)"
-
-#: ../rules/base.xml.in.h:274
-msgid "Guinea"
-msgstr "Gine"
-
-#: ../rules/base.xml.in.h:275
-msgid "Gujarati"
-msgstr "Batı Hint dili"
-
-#: ../rules/base.xml.in.h:276
-msgid "Gurmukhi"
-msgstr "Gurmuki"
-
-#: ../rules/base.xml.in.h:277
-msgid "Gurmukhi Jhelum"
-msgstr "Gurmuki Jhelum"
-
-#: ../rules/base.xml.in.h:278
-msgid "Gyration"
-msgstr "Çekimsel"
-
-#: ../rules/base.xml.in.h:279
-msgid "Happy Hacking Keyboard"
-msgstr "Happy Hacking Klavyesi"
-
-#: ../rules/base.xml.in.h:280
-msgid "Happy Hacking Keyboard for Mac"
-msgstr "Mac içün Happy Hacking Klavyesi"
-
-#: ../rules/base.xml.in.h:281
-msgid "Hausa"
-msgstr "Havza"
-
-#: ../rules/base.xml.in.h:282
-msgid "Hewlett-Packard Internet Keyboard"
-msgstr "Hewlett-Packard Ä°nternet Klavyesi"
-
-#: ../rules/base.xml.in.h:283
-msgid "Hewlett-Packard Mini 110 Notebook"
-msgstr "Hewlett-Packard Mini 110 Tizüstü"
-
-#: ../rules/base.xml.in.h:284
-msgid "Hewlett-Packard Omnibook 500 FA"
-msgstr "Hewlett-Packard Omnibook 500 FA"
-
-#: ../rules/base.xml.in.h:285
-msgid "Hewlett-Packard Omnibook 5xx"
-msgstr "Hewlett-Packard Omnibook 5xx"
-
-#: ../rules/base.xml.in.h:286
-msgid "Hewlett-Packard Omnibook 6000/6100"
-msgstr "Hewlett-Packard Omnibook 6000/6100"
-
-#: ../rules/base.xml.in.h:287
-msgid "Hewlett-Packard Omnibook XE3 GC"
-msgstr "Hewlett-Packard Omnibook XE3 GC"
-
-#: ../rules/base.xml.in.h:288
-msgid "Hewlett-Packard Omnibook XE3 GF"
-msgstr "Hewlett-Packard Omnibook XE3 GF"
-
-#: ../rules/base.xml.in.h:289
-msgid "Hewlett-Packard Omnibook XT1000"
-msgstr "Hewlett-Packard Omnibook XT1000"
-
-#: ../rules/base.xml.in.h:290
-msgid "Hewlett-Packard Pavilion ZT11xx"
-msgstr "Hewlett-Packard Pavilion ZT11xx"
-
-#: ../rules/base.xml.in.h:291
-msgid "Hewlett-Packard Pavilion dv5"
-msgstr "Hewlett-Packard Pavilion dv5"
-
-#: ../rules/base.xml.in.h:292
-msgid "Hewlett-Packard SK-250x Multimedia Keyboard"
-msgstr "Hewlett-Packard SK-250x Çoqluvasat Klavyesi"
-
-#: ../rules/base.xml.in.h:293
-msgid "Hewlett-Packard nx9020"
-msgstr "Hewlett-Packard nx9020"
-
-# tüklü
-#: ../rules/base.xml.in.h:294
-msgid "Hexadecimal"
-msgstr "Onaltıdalıq"
-
-#: ../rules/base.xml.in.h:295
-msgid "Hindi Bolnagri"
-msgstr "Hindce Bolnagri"
-
-#: ../rules/base.xml.in.h:296
-msgid "Hindi Wx"
-msgstr "Hindce Wx"
-
-#: ../rules/base.xml.in.h:297
-msgid "Homophonic"
-msgstr "DavuÅŸtaÅŸ (Homophonic)"
-
-#: ../rules/base.xml.in.h:298
-msgid "Honeywell Euroboard"
-msgstr "Honeywell Euroboard"
-
-#: ../rules/base.xml.in.h:299
-msgid "Hrv"
-msgstr "Hrv"
-
-#: ../rules/base.xml.in.h:300
-msgid "Hun"
-msgstr "Mcr"
-
-#: ../rules/base.xml.in.h:301
-msgid "Hungary"
-msgstr "Macaristan"
-
-#: ../rules/base.xml.in.h:302
-msgid "Hyper is mapped to Win-keys"
-msgstr "Hyper, Pencereler-tuşlarına (Win) haritalandırılır"
-
-#: ../rules/base.xml.in.h:303
-msgid "IBM (LST 1205-92)"
-msgstr "IBM (LST 1205-92)"
-
-#: ../rules/base.xml.in.h:304
-msgid "IBM Rapid Access"
-msgstr "IBM Hızlı Erişim"
-
-#: ../rules/base.xml.in.h:305
-msgid "IBM Rapid Access II"
-msgstr "IBM Hızlı Erişim II"
-
-#: ../rules/base.xml.in.h:306
-msgid "IBM Space Saver"
-msgstr "IBM Feza Saqlayıcı (Space Saver)"
-
-#: ../rules/base.xml.in.h:307
-msgid "IBM ThinkPad 560Z/600/600E/A22E"
-msgstr "IBM ThinkPad 560Z/600/600E/A22E"
-
-#: ../rules/base.xml.in.h:308
-msgid "IBM ThinkPad R60/T60/R61/T61"
-msgstr "IBM ThinkPad R60/T60/R61/T61"
-
-#: ../rules/base.xml.in.h:309
-msgid "IBM ThinkPad Z60m/Z60t/Z61m/Z61t"
-msgstr "IBM ThinkPad Z60m/Z60t/Z61m/Z61t"
-
-#: ../rules/base.xml.in.h:310
-msgid "ISO Alternate"
-msgstr "ISO diÄŸer"
-
-#: ../rules/base.xml.in.h:311
-msgid "Iceland"
-msgstr "Ä°zlanda"
-
-#: ../rules/base.xml.in.h:312
-msgid "Igbo"
-msgstr "Igbo"
-
-#: ../rules/base.xml.in.h:313
-msgid "Include dead tilde"
-msgstr "Ölü tildeni kirset"
-
-#: ../rules/base.xml.in.h:314
-msgid "Ind"
-msgstr "Ind"
-
-#: ../rules/base.xml.in.h:315
-msgid "India"
-msgstr "Hindistan"
-
-#: ../rules/base.xml.in.h:316
-msgid "International (AltGr dead keys)"
-msgstr "Milletlerara (AltGr ölü tuşlarınen)"
-
-#: ../rules/base.xml.in.h:317
-msgid "International (with dead keys)"
-msgstr "Milletlerara (ölü tuşlarnen)"
-
-#: ../rules/base.xml.in.h:318
-msgid "Inuktitut"
-msgstr "Inuktitut"
-
-#: ../rules/base.xml.in.h:319
-msgid "Iran"
-msgstr "Ä°ran"
-
-#: ../rules/base.xml.in.h:320
-msgid "Iraq"
-msgstr "Irak"
-
-#: ../rules/base.xml.in.h:321
-msgid "Ireland"
-msgstr "Ä°rlanda"
-
-#: ../rules/base.xml.in.h:322
-msgid "Irl"
-msgstr "Ä°rl"
-
-#: ../rules/base.xml.in.h:323
-msgid "Irn"
-msgstr "Irn"
-
-#: ../rules/base.xml.in.h:324
-msgid "Irq"
-msgstr "Irk"
-
-#: ../rules/base.xml.in.h:325
-msgid "Isl"
-msgstr "Izl"
-
-#: ../rules/base.xml.in.h:326
-msgid "Isr"
-msgstr "Ä°br"
-
-#: ../rules/base.xml.in.h:327
-msgid "Israel"
-msgstr "Ä°srail"
-
-#: ../rules/base.xml.in.h:328
-msgid "Ita"
-msgstr "Ä°ta"
-
-#: ../rules/base.xml.in.h:329
-msgid "Italy"
-msgstr "Ä°talya"
-
-#: ../rules/base.xml.in.h:330
-msgid "Japan"
-msgstr "Japonya"
-
-#: ../rules/base.xml.in.h:331
-msgid "Japan (PC-98xx Series)"
-msgstr "Japon (PC-98xx Series)"
-
-#: ../rules/base.xml.in.h:332
-msgid "Japanese keyboard options"
-msgstr "Japonca klavye ihtiyariyatı"
-
-#: ../rules/base.xml.in.h:333
-msgid "Jpn"
-msgstr "Jpn"
-
-#: ../rules/base.xml.in.h:334
-msgid "Kalmyk"
-msgstr "Qalmıqça"
-
-#: ../rules/base.xml.in.h:335
-msgid "Kana"
-msgstr "Kana"
-
-#: ../rules/base.xml.in.h:336
-msgid "Kana Lock key is locking"
-msgstr "Kana Lock tuÅŸu kilitler"
-
-#: ../rules/base.xml.in.h:337
-msgid "Kannada"
-msgstr "Güney Hint dili"
-
-#: ../rules/base.xml.in.h:338
-msgid "Kashubian"
-msgstr "Kaşubyalı"
-
-#: ../rules/base.xml.in.h:339
-msgid "Kaz"
-msgstr "Kaz"
-
-#: ../rules/base.xml.in.h:340
-msgid "Kazakh with Russian"
-msgstr "Kazak (rus)"
-
-#: ../rules/base.xml.in.h:341
-msgid "Kazakhstan"
-msgstr "Kazakistan"
-
-# # tüklü
-#: ../rules/base.xml.in.h:342
-msgid "Key sequence to kill the X server"
-msgstr "X sunucısını öldürmek içün tuş silsilesi"
-
-#: ../rules/base.xml.in.h:343
-msgid "Key to choose 3rd level"
-msgstr "3. seviyeni saylaycaq tuÅŸ"
-
-#: ../rules/base.xml.in.h:344
-msgid "Key(s) to change layout"
-msgstr "Tizilimni deñiştirecek tuş(lar)"
-
-#: ../rules/base.xml.in.h:345
-msgid "Keytronic FlexPro"
-msgstr "Keytronic FlexPro"
-
-#: ../rules/base.xml.in.h:346
-msgid "Kgz"
-msgstr "Kgz"
-
-#: ../rules/base.xml.in.h:347
-msgid "Khm"
-msgstr "Kım"
-
-#: ../rules/base.xml.in.h:348
-msgid "Komi"
-msgstr "Komice"
-
-#: ../rules/base.xml.in.h:349
-msgid "Kor"
-msgstr "Kor"
-
-#: ../rules/base.xml.in.h:350
-msgid "Korea, Republic of"
-msgstr "Kore Cumhuriyeti"
-
-# tüklü
-#: ../rules/base.xml.in.h:351
-msgid "Ktunaxa"
-msgstr "Ktunaxa"
-
-#: ../rules/base.xml.in.h:352
-msgid "Kurdish, (F)"
-msgstr "Kürtçe (Türkçe F klavye)"
-
-#: ../rules/base.xml.in.h:353
-msgid "Kurdish, Arabic-Latin"
-msgstr "Kürtçe (Arapça-Latin)"
-
-#: ../rules/base.xml.in.h:354
-msgid "Kurdish, Latin Alt-Q"
-msgstr "Kürtçe (Türkçe Alt-Q klavye)"
-
-#: ../rules/base.xml.in.h:355
-msgid "Kurdish, Latin Q"
-msgstr "Kürtçe (Türkçe Q klavye)"
-
-#: ../rules/base.xml.in.h:356
-msgid "Kyrgyzstan"
-msgstr "Kırgızistan"
-
-#: ../rules/base.xml.in.h:357
-msgid "LAm"
-msgstr "LAm"
-
-# tüklü
-#: ../rules/base.xml.in.h:358
-msgid "LEKP"
-msgstr "LEKP"
-
-#: ../rules/base.xml.in.h:359
-msgid "LEKPa"
-msgstr "LEKPa"
-
-#: ../rules/base.xml.in.h:360
-msgid "Lao"
-msgstr "Lao"
-
-#: ../rules/base.xml.in.h:361
-msgid "Laos"
-msgstr "Laos"
-
-#: ../rules/base.xml.in.h:362
-msgid "Laptop/notebook Compaq (eg. Armada) Laptop Keyboard"
-msgstr "Tizüstü/defter Compaq (örn. Armada) Tizüstü Klavyesi"
-
-#: ../rules/base.xml.in.h:363
-msgid "Laptop/notebook Compaq (eg. Presario) Internet Keyboard"
-msgstr "Tizüstü/defter Compaq (örn. Presario) İnternet Klavyesi"
-
-#: ../rules/base.xml.in.h:364
-msgid "Laptop/notebook eMachines m68xx"
-msgstr "Tizüstü/defter eMachines m68xx"
-
-#: ../rules/base.xml.in.h:365
-msgid "Latin"
-msgstr "Latin"
-
-#: ../rules/base.xml.in.h:366
-msgid "Latin American"
-msgstr "Latin Amerikan"
-
-#: ../rules/base.xml.in.h:367
-msgid "Latin Unicode"
-msgstr "Latin Unicode"
-
-#: ../rules/base.xml.in.h:368
-msgid "Latin Unicode qwerty"
-msgstr "Latin Unicode qwerty"
-
-#: ../rules/base.xml.in.h:369
-msgid "Latin qwerty"
-msgstr "Latin qwerty"
-
-#: ../rules/base.xml.in.h:370
-msgid "Latin unicode"
-msgstr "Latin unikod"
-
-#: ../rules/base.xml.in.h:371
-msgid "Latin unicode qwerty"
-msgstr "Latin unikod qwerty"
-
-#: ../rules/base.xml.in.h:372
-msgid "Latin with guillemets"
-msgstr "Açılı ayraçlarla Latin"
-
-#: ../rules/base.xml.in.h:373
-msgid "Latvia"
-msgstr "Letonya"
-
-#: ../rules/base.xml.in.h:374
-msgid "Lav"
-msgstr "Lav"
-
-#: ../rules/base.xml.in.h:375
-msgid "Left Alt"
-msgstr "Sol Alt"
-
-#: ../rules/base.xml.in.h:376
-msgid "Left Alt (while pressed)"
-msgstr "Sol Alt tuşu (basıq olğanda)"
-
-#: ../rules/base.xml.in.h:377
-msgid "Left Alt is swapped with Left Win"
-msgstr "Sol Alt tuşu, sol Pencereler (Win) tuşunen almaştırılır"
-
-#: ../rules/base.xml.in.h:378
-msgid "Left Ctrl"
-msgstr "Sol Ctrl"
-
-#: ../rules/base.xml.in.h:379
-msgid "Left Ctrl (to first layout), Right Ctrl (to last layout)"
-msgstr "Sol Ctrl (birinci tizilimge almaştırır), Oñ Ctrl (soñkisine)"
-
-#: ../rules/base.xml.in.h:380
-msgid "Left Ctrl+Left Shift"
-msgstr "Sol Ctrl+Sol Shift"
-
-#: ../rules/base.xml.in.h:381
-msgid "Left Shift"
-msgstr "Sol Shift"
-
-#: ../rules/base.xml.in.h:382
-msgid "Left Win"
-msgstr "Sol Win"
-
-#: ../rules/base.xml.in.h:383
-msgid "Left Win (to first layout), Right Win/Menu (to last layout)"
-msgstr "Sol Pencereler (Win) (birinci tizilimge almaştırır), Sağ Pencereler/Menü (soñkisine)"
-
-#: ../rules/base.xml.in.h:384
-msgid "Left Win (while pressed)"
-msgstr "Sol Pencereler (Win) tuşu (basıq olğanda)"
-
-#: ../rules/base.xml.in.h:385
-msgid "Left hand"
-msgstr "Solak"
-
-#: ../rules/base.xml.in.h:386
-msgid "Left handed Dvorak"
-msgstr "Solak Dvorak"
-
-#: ../rules/base.xml.in.h:387
-msgid "Legacy"
-msgstr "Qadim"
-
-#: ../rules/base.xml.in.h:388
-msgid "Legacy Wang 724"
-msgstr "Qadim Wang 724"
-
-#. Actually, with KP_SEPARATOR, as the old keypad(comma)
-#: ../rules/base.xml.in.h:390
-msgid "Legacy key with comma"
-msgstr "Virgülnen qadim tuş"
-
-#: ../rules/base.xml.in.h:391
-msgid "Legacy key with dot"
-msgstr "Noqtanen qadim tuÅŸ"
-
-#: ../rules/base.xml.in.h:392
-msgid "Less-than/Greater-than"
-msgstr "Daa kiçik/Daa büyük"
-
-#: ../rules/base.xml.in.h:393
-msgid "Lithuania"
-msgstr "Litvanya"
-
-#: ../rules/base.xml.in.h:394
-msgid "Logitech Access Keyboard"
-msgstr "Logitech Access Keyboard"
-
-#: ../rules/base.xml.in.h:395
-msgid "Logitech Cordless Desktop"
-msgstr "Logitech Kabelsiz Masaüstü"
-
-# tüklü
-#: ../rules/base.xml.in.h:396
-msgid "Logitech Cordless Desktop (alternate option)"
-msgstr "Logitech Kabelsiz Masaüstü (alternativ ihtiyariyat)"
-
-#: ../rules/base.xml.in.h:397
-msgid "Logitech Cordless Desktop EX110"
-msgstr "Logitech Kabelsiz Masaüstü EX110"
-
-#: ../rules/base.xml.in.h:398
-msgid "Logitech Cordless Desktop LX-300"
-msgstr "Logitech Kablosuz Masaüstü LX-300"
-
-#: ../rules/base.xml.in.h:399
-msgid "Logitech Cordless Desktop Navigator"
-msgstr "Logitech Kablosuz Masaüstü Yürsetici"
-
-#: ../rules/base.xml.in.h:400
-msgid "Logitech Cordless Desktop Optical"
-msgstr "Logitech Kablosuz Masaüstü Optik"
-
-#: ../rules/base.xml.in.h:401
-msgid "Logitech Cordless Desktop Pro (alternate option 2)"
-msgstr "Logitech Kabelsiz Masaüstü Pro (almaşıq ihtiyar 2)"
-
-#: ../rules/base.xml.in.h:402
-msgid "Logitech Cordless Desktop iTouch"
-msgstr "Logitech Kablosuz Masaüstü iTouch"
-
-#: ../rules/base.xml.in.h:403
-msgid "Logitech Cordless Freedom/Desktop Navigator"
-msgstr "Logitech Kablosuz Özgür/Masaüstü Yürsetici"
-
-#: ../rules/base.xml.in.h:404
-msgid "Logitech G15 extra keys via G15daemon"
-msgstr "Logitech G15, G15daemon üzerinden ek tuşlu"
-
-#: ../rules/base.xml.in.h:405
-msgid "Logitech Generic Keyboard"
-msgstr "Logitech Umumiy Klavyesi"
-
-#: ../rules/base.xml.in.h:406
-msgid "Logitech Internet 350 Keyboard"
-msgstr "Logitech Ä°nternet 350 Klavyesi"
-
-#: ../rules/base.xml.in.h:407
-msgid "Logitech Internet Keyboard"
-msgstr "Logitech Ä°nternet Klavyesi"
-
-#: ../rules/base.xml.in.h:408
-msgid "Logitech Internet Navigator Keyboard"
-msgstr "Logitech İnternet Yürsetici Klavyesi"
-
-#: ../rules/base.xml.in.h:409
-msgid "Logitech Media Elite Keyboard"
-msgstr "Logitech Vasta Elit Klavye"
-
-#: ../rules/base.xml.in.h:410
-msgid "Logitech Ultra-X Cordless Media Desktop Keyboard"
-msgstr "Logitech Ultra-X Kabelsiz Vasta Masaüstü Klavyesi"
-
-#: ../rules/base.xml.in.h:411
-msgid "Logitech Ultra-X Keyboard"
-msgstr "Logitech Ultra-X Keyboard"
-
-#: ../rules/base.xml.in.h:412
-msgid "Logitech diNovo Edge Keyboard"
-msgstr "Logitech diNovo Edge Klavyesi"
-
-#: ../rules/base.xml.in.h:413
-msgid "Logitech diNovo Keyboard"
-msgstr "Logitech Access Klavye"
-
-#: ../rules/base.xml.in.h:414
-msgid "Logitech iTouch"
-msgstr "Logitech iTouch"
-
-#: ../rules/base.xml.in.h:415
-msgid "Logitech iTouch Cordless Keyboard (model Y-RB6)"
-msgstr "Logitech iTouch Kablosuz Klavyesi (model Y-RB6)"
-
-#: ../rules/base.xml.in.h:416
-msgid "Logitech iTouch Internet Navigator Keyboard SE"
-msgstr "Logitech iTouch İnternet Yürsetici Klavyesi SE"
-
-#: ../rules/base.xml.in.h:417
-msgid "Logitech iTouch Internet Navigator Keyboard SE (USB)"
-msgstr "Logitech iTouch İnternet Yürsetici Klavyesi SE (USB)"
-
-# tüklü
-#: ../rules/base.xml.in.h:418
-msgid "Lower Sorbian"
-msgstr "Alt Sorbian"
-
-#: ../rules/base.xml.in.h:419
-msgid "Lower Sorbian (qwertz)"
-msgstr "Alt Sorbian (qwertz)"
-
-#: ../rules/base.xml.in.h:420
-msgid "Ltu"
-msgstr "Ltu"
-
-#: ../rules/base.xml.in.h:421
-msgid "MESS"
-msgstr "MESS"
-
-# tüklü
-#: ../rules/base.xml.in.h:422
-msgid "MNE"
-msgstr "MNE"
-
-#: ../rules/base.xml.in.h:423
-msgid "MacBook/MacBook Pro"
-msgstr "MacBook/MacBook Pro"
-
-#: ../rules/base.xml.in.h:424
-msgid "MacBook/MacBook Pro (Intl)"
-msgstr "MacBook/MacBook Pro (Milletlerara)"
-
-#: ../rules/base.xml.in.h:425
-msgid "Macedonia"
-msgstr "Makedonya"
-
-#: ../rules/base.xml.in.h:426
-msgid "Macintosh"
-msgstr "Macintosh"
-
-#: ../rules/base.xml.in.h:427
-msgid "Macintosh Old"
-msgstr "Eski Macintosh"
-
-#: ../rules/base.xml.in.h:428
-msgid "Macintosh, Sun dead keys"
-msgstr "Makintoş, Sun ölü tuşlar"
-
-#: ../rules/base.xml.in.h:429
-msgid "Macintosh, eliminate dead keys"
-msgstr "Makintoş, ölü tuşsuz"
-
-#: ../rules/base.xml.in.h:430
-msgid "Make CapsLock an additional Backspace"
-msgstr "CapsLock tuşunı ek bir Kerisilme (Backspace) yap"
-
-#: ../rules/base.xml.in.h:431
-msgid "Make CapsLock an additional Ctrl"
-msgstr "CapsLock tuşunı ek bir Ctrl yap"
-
-#: ../rules/base.xml.in.h:432
-msgid "Make CapsLock an additional ESC"
-msgstr "CapsLock tuşunı ek bir ESC yap"
-
-#: ../rules/base.xml.in.h:433
-msgid "Make CapsLock an additional Hyper"
-msgstr "CapsLock tuşunı ek bir Hiper yap"
-
-#: ../rules/base.xml.in.h:434
-msgid "Make CapsLock an additional NumLock"
-msgstr "CapsLock tuşunı ek bir NumLock yap"
-
-#: ../rules/base.xml.in.h:435
-msgid "Make CapsLock an additional Super"
-msgstr "CapsLock tuşunı ek bir Süper yap"
-
-#: ../rules/base.xml.in.h:436
-msgid "Mal"
-msgstr "Mal"
-
-#: ../rules/base.xml.in.h:437
-msgid "Malayalam"
-msgstr "Malayalam tili"
-
-#: ../rules/base.xml.in.h:438
-msgid "Malayalam Lalitha"
-msgstr "Malayalam Lalitha tili"
-
-#: ../rules/base.xml.in.h:439
-msgid "Maldives"
-msgstr "Maldivler"
-
-#: ../rules/base.xml.in.h:440
-msgid "Malta"
-msgstr "Malta"
-
-#: ../rules/base.xml.in.h:441
-msgid "Maltese keyboard with US layout"
-msgstr "Ameriken yerleşimli Maltız klavyesi"
-
-#: ../rules/base.xml.in.h:442
-msgid "Mao"
-msgstr "Mao"
-
-#: ../rules/base.xml.in.h:443
-msgid "Maori"
-msgstr "Mayorka"
-
-#: ../rules/base.xml.in.h:444
-msgid "Memorex MX1998"
-msgstr "Memorex MX1998"
-
-#: ../rules/base.xml.in.h:445
-msgid "Memorex MX2500 EZ-Access Keyboard"
-msgstr "Memorex MX2500 EZ EriÅŸim Klavyesi"
-
-#: ../rules/base.xml.in.h:446
-msgid "Memorex MX2750"
-msgstr "Memorex MX2750"
-
-#: ../rules/base.xml.in.h:447
-msgid "Menu"
-msgstr "Menü"
-
-#: ../rules/base.xml.in.h:448
-msgid "Meta is mapped to Left Win"
-msgstr "Meta, sol Pencereler tuşuna (Win) haritalandırılır"
-
-#: ../rules/base.xml.in.h:449
-msgid "Meta is mapped to Win keys"
-msgstr "Meta, Pencereler tuşlarına (Win) haritalandırılır"
-
-#: ../rules/base.xml.in.h:450
-msgid "Microsoft Comfort Curve Keyboard 2000"
-msgstr "Microsoft Comfort Curve Keyboard 2000"
-
-#: ../rules/base.xml.in.h:451
-msgid "Microsoft Internet Keyboard"
-msgstr "Microsoft Ä°nternet Klavyesi"
-
-#: ../rules/base.xml.in.h:452
-msgid "Microsoft Internet Keyboard Pro, Swedish"
-msgstr "Microsoft İnternet Klavyesi Pro, İsveçce"
-
-#: ../rules/base.xml.in.h:453
-msgid "Microsoft Natural"
-msgstr "Microsoft Basit"
-
-#: ../rules/base.xml.in.h:454
-msgid "Microsoft Natural Keyboard Elite"
-msgstr "Microsoft Tabiiy Klavye Elit"
-
-#: ../rules/base.xml.in.h:455
-msgid "Microsoft Natural Keyboard Pro / Microsoft Internet Keyboard Pro"
-msgstr "Microsoft Basit Klavye Pro / Microsoft Ä°nternet Klavyesi Pro"
-
-#: ../rules/base.xml.in.h:456
-msgid "Microsoft Natural Keyboard Pro OEM"
-msgstr "Microsoft Basit Klavye Pro OEM"
-
-#: ../rules/base.xml.in.h:457
-msgid "Microsoft Natural Keyboard Pro USB / Microsoft Internet Keyboard Pro"
-msgstr "Microsoft Natural Keyboard Pro USB / Microsoft Internet Keyboard Pro"
-
-#: ../rules/base.xml.in.h:458
-msgid "Microsoft Natural Wireless Ergonomic Keyboard 7000"
-msgstr "Microsoft Tabiiy Telsiz Ergonomik Klavye 7000"
-
-#: ../rules/base.xml.in.h:459
-msgid "Microsoft Office Keyboard"
-msgstr "Microsoft Ofis Klavyesi"
-
-#: ../rules/base.xml.in.h:460
-msgid "Microsoft Wireless Multimedia Keyboard 1.0A"
-msgstr "Microsoft Wireless Multimedia Keyboard 1.0A"
-
-#: ../rules/base.xml.in.h:461
-msgid "Miscellaneous compatibility options"
-msgstr "Müteferriq telif qabiliyeti ihtiyariyatı"
-
-#: ../rules/base.xml.in.h:462
-msgid "Mkd"
-msgstr "Mkd"
-
-#: ../rules/base.xml.in.h:463
-msgid "Mlt"
-msgstr "Mlt"
-
-#: ../rules/base.xml.in.h:464
-msgid "Mmr"
-msgstr "Mmr"
-
-#: ../rules/base.xml.in.h:465
-msgid "Mng"
-msgstr "MoÄŸ"
-
-#: ../rules/base.xml.in.h:466
-msgid "Mongolia"
-msgstr "MoÄŸolistan"
-
-#: ../rules/base.xml.in.h:467
-msgid "Montenegro"
-msgstr "QaradaÄŸ"
-
-#: ../rules/base.xml.in.h:468
-msgid "Morocco"
-msgstr "Fas"
-
-#: ../rules/base.xml.in.h:469
-msgid "Multilingual"
-msgstr "Çokdilli"
-
-#: ../rules/base.xml.in.h:470
-msgid "Multilingual, first part"
-msgstr "Çokdilli, ilk bölüm"
-
-#: ../rules/base.xml.in.h:471
-msgid "Multilingual, second part"
-msgstr "Çokdilli, ikinci bölüm"
-
-#: ../rules/base.xml.in.h:472
-msgid "Myanmar"
-msgstr "Miyanmar"
-
-#: ../rules/base.xml.in.h:473
-msgid "NICOLA-F style Backspace"
-msgstr "NICOLA-F uslûbı Kerisilme"
-
-#: ../rules/base.xml.in.h:474
-msgid "NLA"
-msgstr "NLA"
-
-# tüklü
-#: ../rules/base.xml.in.h:475
-msgid "Nativo"
-msgstr "Nativo"
-
-#: ../rules/base.xml.in.h:476
-msgid "Nativo for Esperanto"
-msgstr "Esperanto içün Nativo"
-
-#: ../rules/base.xml.in.h:477
-msgid "Nativo for USA keyboards"
-msgstr "AQŞ klavyeleri içün Nativo"
-
-#: ../rules/base.xml.in.h:478
-msgid "Neo 2"
-msgstr "Neo 2"
-
-#: ../rules/base.xml.in.h:479
-msgid "Nep"
-msgstr "Nep"
-
-#: ../rules/base.xml.in.h:480
-msgid "Nepal"
-msgstr "Nepal"
-
-#: ../rules/base.xml.in.h:481
-msgid "Netherlands"
-msgstr "Hollanda"
-
-#: ../rules/base.xml.in.h:482
-msgid "New phonetic"
-msgstr "Yañı fonetik"
-
-#: ../rules/base.xml.in.h:483
-msgid "Nig"
-msgstr "Nij"
-
-#: ../rules/base.xml.in.h:484
-msgid "Nigeria"
-msgstr "Nijerya"
-
-#: ../rules/base.xml.in.h:485
-msgid "Nld"
-msgstr "Hol"
-
-#: ../rules/base.xml.in.h:486
-msgid "Non-breakable space character at fourth level"
-msgstr "Dördünci seviyede qırılalmaz boşluq remzi"
-
-#: ../rules/base.xml.in.h:487
-msgid "Non-breakable space character at fourth level, thin non-breakable space character at sixth level"
-msgstr "Dördünci seviyede qırılalmaz boşluq remzi, altıncı seviyede ise ince qırılalmaz boşluq remzi"
-
-#: ../rules/base.xml.in.h:488
-msgid "Non-breakable space character at fourth level, thin non-breakable space character at sixth level (via Ctrl+Shift)"
-msgstr "Dördünci seviyede qırılalmaz boşluq remzi, altıncı seviyede ise ince qırılalmaz boşluq remzi (Ctrl+Shift vastasınen)"
-
-#: ../rules/base.xml.in.h:489
-msgid "Non-breakable space character at second level"
-msgstr "Ekinci seviyede qırılalmaz boşluq remzi"
-
-#: ../rules/base.xml.in.h:490
-msgid "Non-breakable space character at third level"
-msgstr "Üçünci seviyede qırılalmaz boşluq remzi"
-
-#: ../rules/base.xml.in.h:491
-msgid "Non-breakable space character at third level, nothing at fourth level"
-msgstr "Üçünci seviyede qırılalmaz boşluq remzi, dördünci seviyede iç bir şey"
-
-#: ../rules/base.xml.in.h:492
-msgid "Non-breakable space character at third level, thin non-breakable space character at fourth level"
-msgstr "Dördünci seviyede qırılalmaz boşluq remzi, dördünci seviyede ise ince qırılalmaz boşluq remzi"
-
-#: ../rules/base.xml.in.h:493
-msgid "Nor"
-msgstr "Nor"
-
-#: ../rules/base.xml.in.h:494
-msgid "Northern Saami"
-msgstr "Kuzey Sami"
-
-#: ../rules/base.xml.in.h:495
-msgid "Northern Saami, eliminate dead keys"
-msgstr "Kuzey Sami, ölü tuşsuz"
-
-#: ../rules/base.xml.in.h:496
-msgid "Northgate OmniKey 101"
-msgstr "Northgate OmniKey 101"
-
-#: ../rules/base.xml.in.h:497
-msgid "Norway"
-msgstr "Norveç"
-
-# tüklü
-#: ../rules/base.xml.in.h:498
-msgid "NumLock"
-msgstr "NumLock"
-
-#: ../rules/base.xml.in.h:499
-msgid "Numeric keypad delete key behaviour"
-msgstr "Sayısal tuştaqımı sil tuşu davranışı"
-
-#: ../rules/base.xml.in.h:500
-msgid "Numeric keypad keys work as with Mac"
-msgstr "Sayısal tuştaqımı tuşları Mac ile olğanı kibi çalışır"
-
-#: ../rules/base.xml.in.h:501
-msgid "Numeric keypad layout selection"
-msgstr "Sayısal tuştaqımı tizilimi saylamı"
-
-#: ../rules/base.xml.in.h:502
-msgid "OADG 109A"
-msgstr "OADG 109A"
-
-#: ../rules/base.xml.in.h:503
-msgid "OLPC"
-msgstr "Bala Başına Bir Tizüstü (BBBT; OLPC)"
-
-#: ../rules/base.xml.in.h:504
-msgid "OLPC Dari"
-msgstr "OLPC Dari"
-
-#: ../rules/base.xml.in.h:505
-msgid "OLPC Pashto"
-msgstr "OLPC PaÅŸto"
-
-#: ../rules/base.xml.in.h:506
-msgid "OLPC Southern Uzbek"
-msgstr "OLPC Cenübiy Özbekçe"
-
-#: ../rules/base.xml.in.h:507
-msgid "Occitan"
-msgstr "Occitan"
-
-#: ../rules/base.xml.in.h:508
-msgid "Ogham"
-msgstr "Ogham"
-
-#: ../rules/base.xml.in.h:509
-msgid "Ogham IS434"
-msgstr "Ogham IS434"
-
-#: ../rules/base.xml.in.h:510
-msgid "Oriya"
-msgstr "Orissa dili"
-
-#: ../rules/base.xml.in.h:511
-msgid "Ortek MCK-800 MM/Internet keyboard"
-msgstr "Oretec MCK-800 MM/Ä°nternet Klavyesi"
-
-#: ../rules/base.xml.in.h:512
-msgid "Ossetian"
-msgstr "Osetçe"
-
-#: ../rules/base.xml.in.h:513
-msgid "Ossetian, Winkeys"
-msgstr "Osetçe, Win-tuşları"
-
-#: ../rules/base.xml.in.h:514
-msgid "Ossetian, legacy"
-msgstr "Osetçe, qadim"
-
-#: ../rules/base.xml.in.h:515
-msgid "PC-98xx Series"
-msgstr "PC-98xx Serisi"
-
-#: ../rules/base.xml.in.h:516
-msgid "Pak"
-msgstr "Pak"
-
-#: ../rules/base.xml.in.h:517
-msgid "Pakistan"
-msgstr "Pakistan"
-
-#: ../rules/base.xml.in.h:518
-msgid "Pashto"
-msgstr "PaÅŸto"
-
-#: ../rules/base.xml.in.h:519
-msgid "Pattachote"
-msgstr "Pataküte"
-
-#: ../rules/base.xml.in.h:520
-msgid "Persian, with Persian Keypad"
-msgstr "Farsça, Farsça tuştaqımı ile"
-
-#: ../rules/base.xml.in.h:521
-msgid "Phonetic"
-msgstr "Fonetik"
-
-#: ../rules/base.xml.in.h:522
-msgid "Phonetic Winkeys"
-msgstr "Fonetik, Win-tuşları"
-
-#: ../rules/base.xml.in.h:523
-msgid "Pol"
-msgstr "Pol"
-
-#: ../rules/base.xml.in.h:524
-msgid "Poland"
-msgstr "Polonya"
-
-#: ../rules/base.xml.in.h:525
-msgid "Polytonic"
-msgstr "Politonik"
-
-#: ../rules/base.xml.in.h:526
-msgid "Portugal"
-msgstr "Portekiz"
-
-#: ../rules/base.xml.in.h:527
-msgid "Probhat"
-msgstr "Probat"
-
-#: ../rules/base.xml.in.h:528
-msgid "Programmer Dvorak"
-msgstr "Programcı Dvorak"
-
-#: ../rules/base.xml.in.h:529
-msgid "Propeller Voyager (KTEZ-1000)"
-msgstr "Propeller Voyager (KTEZ-1000)"
-
-#: ../rules/base.xml.in.h:530
-msgid "Prt"
-msgstr "Prt"
-
-#: ../rules/base.xml.in.h:531
-msgid "QTronix Scorpius 98N+"
-msgstr "QTronix Scorpius 98N+"
-
-#: ../rules/base.xml.in.h:532
-msgid "Right Alt"
-msgstr "SaÄŸ Alt"
-
-#: ../rules/base.xml.in.h:533
-msgid "Right Alt (while pressed)"
-msgstr "Sağ Alt (basıq olğanda)"
-
-#: ../rules/base.xml.in.h:534
-msgid "Right Alt key never chooses 3rd level"
-msgstr "SaÄŸ Alt tuÅŸu 3. seviyeni asla saylamaz"
-
-#: ../rules/base.xml.in.h:535
-msgid "Right Alt, Shift+Right Alt key is Multi_Key"
-msgstr "Sağ Alt, Shift+Sağ Alt tuşu ise Çoqlu_Tuştır (Multi_Key)"
-
-#: ../rules/base.xml.in.h:536
-msgid "Right Ctrl"
-msgstr "SaÄŸ Ctrl"
-
-#: ../rules/base.xml.in.h:537
-msgid "Right Ctrl (while pressed)"
-msgstr "Sağ Ctrl (basıq olğanda)"
-
-#: ../rules/base.xml.in.h:538
-msgid "Right Ctrl as Right Alt"
-msgstr "Sağ Ctrl tuşu Sağ Alt'tır"
-
-#: ../rules/base.xml.in.h:539
-msgid "Right Ctrl+Right Shift"
-msgstr "Oñ Ctrl+Oñ Shift"
-
-#: ../rules/base.xml.in.h:540
-msgid "Right Shift"
-msgstr "SaÄŸ Shift"
-
-#: ../rules/base.xml.in.h:541
-msgid "Right Win"
-msgstr "SaÄŸ Pencereler (Win)"
-
-#: ../rules/base.xml.in.h:542
-msgid "Right Win (while pressed)"
-msgstr "Sağ Pencereler (Win) (basıq olğanda)"
-
-#: ../rules/base.xml.in.h:543
-msgid "Right hand"
-msgstr "SaÄŸ el"
-
-#: ../rules/base.xml.in.h:544
-msgid "Right handed Dvorak"
-msgstr "Oñaqay Dvorak"
-
-#: ../rules/base.xml.in.h:545
-msgid "Romania"
-msgstr "Romaniya"
-
-#: ../rules/base.xml.in.h:546
-msgid "Romanian keyboard with German letters"
-msgstr "Alman harfleriyle Romanya klavyesi"
-
-#: ../rules/base.xml.in.h:547
-msgid "Romanian keyboard with German letters, eliminate dead keys"
-msgstr "Alman harfleriyle Romanya klavyesi, ölü tuşsuz"
-
-#: ../rules/base.xml.in.h:548
-msgid "Rou"
-msgstr "Rou"
-
-#: ../rules/base.xml.in.h:549
-msgid "Rus"
-msgstr "Rus"
-
-#: ../rules/base.xml.in.h:550
-msgid "Russia"
-msgstr "Rusiye"
-
-#: ../rules/base.xml.in.h:551
-msgid "Russian"
-msgstr "Rusça"
-
-#: ../rules/base.xml.in.h:552
-msgid "Russian phonetic"
-msgstr "Rusça fonetik"
-
-#: ../rules/base.xml.in.h:553
-msgid "Russian phonetic Dvorak"
-msgstr "Rusça fonetik Dvorak"
-
-#: ../rules/base.xml.in.h:554
-msgid "Russian phonetic, eliminate dead keys"
-msgstr "Rusça fonetik, ölü tuşsuz"
-
-#: ../rules/base.xml.in.h:555
-msgid "Russian with Kazakh"
-msgstr "Rusça (kazak)"
-
-#: ../rules/base.xml.in.h:556
-msgid "SILVERCREST Multimedia Wireless Keyboard"
-msgstr "SILVERCREST Çokluortam Kablosuz Klavyesi"
-
-#: ../rules/base.xml.in.h:557
-msgid "SK-1300"
-msgstr "SK-1300"
-
-#: ../rules/base.xml.in.h:558
-msgid "SK-2500"
-msgstr "SK-2500"
-
-#: ../rules/base.xml.in.h:559
-msgid "SK-6200"
-msgstr "SK-6200"
-
-#: ../rules/base.xml.in.h:560
-msgid "SK-7100"
-msgstr "SK-7100"
-
-# tüklü
-#: ../rules/base.xml.in.h:561 ../rules/base.extras.xml.in.h:7
-msgid "SRB"
-msgstr "SRB"
-
-#: ../rules/base.xml.in.h:562
-msgid "SVEN Ergonomic 2500"
-msgstr "SVEN Ergonomik 2500"
-
-# tüklü
-#: ../rules/base.xml.in.h:563
-msgid "SVEN Slim 303"
-msgstr "SVEN Zarif 303"
-
-#: ../rules/base.xml.in.h:564
-msgid "Samsung SDM 4500P"
-msgstr "Samsung SDM 4500P"
-
-#: ../rules/base.xml.in.h:565
-msgid "Samsung SDM 4510P"
-msgstr "Samsung SDM 4510P"
-
-#: ../rules/base.xml.in.h:566
-msgid "Scroll Lock"
-msgstr "Taydırma Kiliti (Scroll Lock)"
-
-#: ../rules/base.xml.in.h:567
-msgid "ScrollLock"
-msgstr "Taydırma Kiliti (ScrollLock)"
-
-# tüklü
-#: ../rules/base.xml.in.h:568
-msgid "Secwepemctsin"
-msgstr "Secwepemctsin"
-
-#: ../rules/base.xml.in.h:569
-msgid "Semi-colon on third level"
-msgstr "Üçünci seviyede noqtalı virgül"
-
-#: ../rules/base.xml.in.h:570 ../rules/base.extras.xml.in.h:8
-msgid "Serbia"
-msgstr "Sırbistan"
-
-#: ../rules/base.xml.in.h:571
-msgid "Shift cancels CapsLock"
-msgstr "Shift CapsLock'nı lâğu eter"
-
-#: ../rules/base.xml.in.h:572
-msgid "Shift does not cancel NumLock, chooses 3d level instead"
-msgstr "Shift NumLock'nı lâğu etmez, onıñ yerine 3. seviyeni saylar"
-
-#: ../rules/base.xml.in.h:573
-msgid "Shift with numeric keypad keys works as in MS Windows"
-msgstr "Shift ile sayısal tuştaqımı tuşları MS Windows'taki kibi çalışır"
-
-#: ../rules/base.xml.in.h:574
-msgid "Shift+CapsLock"
-msgstr "Shift+CapsLock"
-
-#: ../rules/base.xml.in.h:575
-msgid "Simple"
-msgstr "Basit"
-
-#: ../rules/base.xml.in.h:576
-msgid "Slovakia"
-msgstr "Slovakya"
-
-#: ../rules/base.xml.in.h:577
-msgid "Slovenia"
-msgstr "Slovenya"
-
-#: ../rules/base.xml.in.h:578
-msgid "South Africa"
-msgstr "Cenübiy Afrika"
-
-#: ../rules/base.xml.in.h:579
-msgid "Southern Uzbek"
-msgstr "Cenübiy Özbekçe"
-
-#: ../rules/base.xml.in.h:580
-msgid "Spain"
-msgstr "Ä°spanya"
-
-#: ../rules/base.xml.in.h:581
-msgid "Special keys (Ctrl+Alt+&lt;key&gt;) handled in a server"
-msgstr "Mahsus tuşlar (Ctrl+Alt+&lt;tuş&gt;) bir sunucıda qollanır"
-
-#: ../rules/base.xml.in.h:582
-msgid "SrL"
-msgstr "SrL"
-
-#: ../rules/base.xml.in.h:583
-msgid "Sri Lanka"
-msgstr "Sri Lanka"
-
-#: ../rules/base.xml.in.h:584
-msgid "Standard"
-msgstr "Standart"
-
-#: ../rules/base.xml.in.h:585
-msgid "Standard (Cedilla)"
-msgstr "Standart (Sedilla)"
-
-#. RSTU 2019-91
-#: ../rules/base.xml.in.h:587
-msgid "Standard RSTU"
-msgstr "Standart RSTU"
-
-#. RSTU 2019-91
-#: ../rules/base.xml.in.h:589
-msgid "Standard RSTU on Russian layout"
-msgstr "Rusça tizilim üzerinde standart RSTU"
-
-#: ../rules/base.xml.in.h:590
-msgid "Sun Type 5/6"
-msgstr "Sun Tür 5/6"
-
-#: ../rules/base.xml.in.h:591
-msgid "Sun dead keys"
-msgstr "Sun ölü tuşlar"
-
-#: ../rules/base.xml.in.h:592
-msgid "Super Power Multimedia Keyboard"
-msgstr "Super Power Multimedia Keyboard"
-
-#: ../rules/base.xml.in.h:593
-msgid "Svdvorak"
-msgstr "Svdvorak"
-
-#: ../rules/base.xml.in.h:594
-msgid "Svk"
-msgstr "Svk"
-
-#: ../rules/base.xml.in.h:595
-msgid "Svn"
-msgstr "Svn"
-
-#: ../rules/base.xml.in.h:596
-msgid "Swap Ctrl and CapsLock"
-msgstr "Ctrl ile CapsLock yerlerini almaştır"
-
-#: ../rules/base.xml.in.h:597
-msgid "Swap ESC and CapsLock"
-msgstr "ESC ile CapsLock yerlerini almaştır"
-
-#: ../rules/base.xml.in.h:598
-msgid "Swe"
-msgstr "Ä°sve"
-
-#: ../rules/base.xml.in.h:599
-msgid "Sweden"
-msgstr "İsveç"
-
-#: ../rules/base.xml.in.h:600
-msgid "Switzerland"
-msgstr "İsviçre"
-
-#: ../rules/base.xml.in.h:601
-msgid "Symplon PaceBook (tablet PC)"
-msgstr "Symplon PaceBook (tablet PC)"
-
-#: ../rules/base.xml.in.h:602
-msgid "Syr"
-msgstr "Sur"
-
-#: ../rules/base.xml.in.h:603
-msgid "Syria"
-msgstr "Suriye"
-
-#: ../rules/base.xml.in.h:604
-msgid "Syriac"
-msgstr "Suriye"
-
-#: ../rules/base.xml.in.h:605
-msgid "Syriac phonetic"
-msgstr "Suriye fonetik"
-
-#: ../rules/base.xml.in.h:606
-msgid "TIS-820.2538"
-msgstr "TIS-820.2538"
-
-#: ../rules/base.xml.in.h:607
-msgid "Tajikistan"
-msgstr "Tacikistan"
-
-#: ../rules/base.xml.in.h:608
-msgid "Tamil"
-msgstr "Tamil dili"
-
-#: ../rules/base.xml.in.h:609
-msgid "Tamil TAB Typewriter"
-msgstr "Tamil TAB Daktilo"
-
-#: ../rules/base.xml.in.h:610
-msgid "Tamil TSCII Typewriter"
-msgstr "Tamil TSCII Daktilo"
-
-#: ../rules/base.xml.in.h:611
-msgid "Tamil Unicode"
-msgstr "Tamil Unicode"
-
-#: ../rules/base.xml.in.h:612
-msgid "Targa Visionary 811"
-msgstr "Targa Visionary 811"
-
-#: ../rules/base.xml.in.h:613
-msgid "Tatar"
-msgstr "İdil Tatarcası"
-
-#: ../rules/base.xml.in.h:614
-msgid "Telugu"
-msgstr "Telugu dili"
-
-#: ../rules/base.xml.in.h:615
-msgid "Tha"
-msgstr "Tha"
-
-#: ../rules/base.xml.in.h:616
-msgid "Thailand"
-msgstr "Tayland"
-
-#: ../rules/base.xml.in.h:617
-msgid "Tibetan"
-msgstr "Tibetçe"
-
-#: ../rules/base.xml.in.h:618
-msgid "Tibetan (with ASCII numerals)"
-msgstr "Tibetçe (ASCII sayılarnen)"
-
-#: ../rules/base.xml.in.h:619
-msgid "Tifinagh"
-msgstr "Tifinagh"
-
-#: ../rules/base.xml.in.h:620
-msgid "Tifinagh Alternative"
-msgstr "Tifinagh DiÄŸer"
-
-#: ../rules/base.xml.in.h:621
-msgid "Tifinagh Alternative Phonetic"
-msgstr "Tifinagh DiÄŸer Fonetik"
-
-#: ../rules/base.xml.in.h:622
-msgid "Tifinagh Extended"
-msgstr "Tifinagh GeliÅŸkin"
-
-#: ../rules/base.xml.in.h:623
-msgid "Tifinagh Extended Phonetic"
-msgstr "Tifinagh GeliÅŸmiÅŸ Fonetik"
-
-#: ../rules/base.xml.in.h:624
-msgid "Tifinagh Phonetic"
-msgstr "Tifinagh Fonetik"
-
-#: ../rules/base.xml.in.h:625
-msgid "Tilde (~) variant"
-msgstr "Tilde (~) variantı"
-
-#: ../rules/base.xml.in.h:626
-msgid "Tjk"
-msgstr "Tck"
-
-#: ../rules/base.xml.in.h:627
-msgid "To the corresponding key in a Dvorak keyboard."
-msgstr "Dvorak klavyesindeki muqabil tuÅŸqa."
-
-#: ../rules/base.xml.in.h:628
-msgid "To the corresponding key in a Qwerty keyboard."
-msgstr "Qwerty klavyesindeki muqabil tuÅŸqa."
-
-#: ../rules/base.xml.in.h:629
-msgid "Toshiba Satellite S3000"
-msgstr "Toshiba Satellite S3000"
-
-#: ../rules/base.xml.in.h:630
-msgid "Traditional phonetic"
-msgstr "Ananeviy fonetik"
-
-#: ../rules/base.xml.in.h:631
-msgid "Trust Direct Access Keyboard"
-msgstr "Trust DoÄŸrudan Ä°riÅŸim Klavyesi"
-
-#: ../rules/base.xml.in.h:632
-msgid "Trust Slimline"
-msgstr "Trust Slimline"
-
-#: ../rules/base.xml.in.h:633
-msgid "Trust Wireless Keyboard Classic"
-msgstr "Trust Telsiz Klassik Klavye"
-
-#: ../rules/base.xml.in.h:634
-msgid "Tur"
-msgstr "Trk"
-
-#: ../rules/base.xml.in.h:635
-msgid "Turkey"
-msgstr "Türkiye"
-
-#: ../rules/base.xml.in.h:636
-msgid "Turkmenistan"
-msgstr "Türkmenistan"
-
-#: ../rules/base.xml.in.h:637
-msgid "Typewriter"
-msgstr "Daktilo"
-
-#: ../rules/base.xml.in.h:638
-msgid "Typewriter, legacy"
-msgstr "Daktilo, qadim"
-
-# tüklü
-#: ../rules/base.xml.in.h:639
-msgid "UCW layout (accented letters only)"
-msgstr "UCW tizilimi (ancaq urğulı arifler)"
-
-#: ../rules/base.xml.in.h:640
-msgid "US keyboard with Bosnian digraphs"
-msgstr "Bosna ikil harfleriyle amerikan klavyesi"
-
-#: ../rules/base.xml.in.h:641
-msgid "US keyboard with Bosnian letters"
-msgstr "Bosna harfleriyle amerikan klavyesi"
-
-#: ../rules/base.xml.in.h:642
-msgid "US keyboard with Croatian digraphs"
-msgstr "Hırvat ikil harfleriyle amerikan klavyesi"
-
-#: ../rules/base.xml.in.h:643
-msgid "US keyboard with Croatian letters"
-msgstr "Hırvat harfleriyle amerikan klavyesi"
-
-#: ../rules/base.xml.in.h:644
-msgid "US keyboard with Estonian letters"
-msgstr "Eston ariflernen Amerikan klavyesi"
-
-#: ../rules/base.xml.in.h:645
-msgid "US keyboard with Italian letters"
-msgstr "Ä°talian ariflernen Amerikan klavyesi"
-
-#: ../rules/base.xml.in.h:646
-msgid "US keyboard with Lithuanian letters"
-msgstr "Litvanya harfleriyle amerikan klavyesi"
-
-#: ../rules/base.xml.in.h:647
-msgid "US keyboard with Slovenian letters"
-msgstr "Sloven harfleriyle amerikan klavyesi"
-
-#: ../rules/base.xml.in.h:648 ../rules/base.extras.xml.in.h:9
-msgid "USA"
-msgstr "ABD"
-
-#: ../rules/base.xml.in.h:649
-msgid "Udmurt"
-msgstr "Udmurtça"
-
-#: ../rules/base.xml.in.h:650
-msgid "Ukr"
-msgstr "Ukr"
-
-#: ../rules/base.xml.in.h:651
-msgid "Ukraine"
-msgstr "Ukraina"
-
-#: ../rules/base.xml.in.h:652
-msgid "Unicode additions (arrows and math operators)"
-msgstr "Unikod eklemeleri (oqlar ve riyaziy iÅŸleticiler)"
-
-#: ../rules/base.xml.in.h:653
-msgid "Unicode additions (arrows and math operators). Math operators on default level"
-msgstr "Unikod eklemeleri (oqlar ve riyaziy işleticiler). Riyaziyat işleticileri ög-belgilengen seviyede"
-
-#: ../rules/base.xml.in.h:654
-msgid "UnicodeExpert"
-msgstr "Unicode Uzman"
-
-#: ../rules/base.xml.in.h:655
-msgid "United Kingdom"
-msgstr "Ä°ngiltere"
-
-#: ../rules/base.xml.in.h:656
-msgid "Unitek KB-1925"
-msgstr "Unitek KB-1925"
-
-#: ../rules/base.xml.in.h:657
-msgid "Urdu, Alternative phonetic"
-msgstr "Urdu, Alternativ fonetik"
-
-#: ../rules/base.xml.in.h:658
-msgid "Urdu, Phonetic"
-msgstr "Urdu, Fonetik"
-
-#: ../rules/base.xml.in.h:659
-msgid "Urdu, Winkeys"
-msgstr "Urdu, Win-tuşları"
-
-#: ../rules/base.xml.in.h:660
-msgid "Use Bosnian digraphs"
-msgstr "Bosna ikil harflerini kullanır"
-
-#: ../rules/base.xml.in.h:661
-msgid "Use Croatian digraphs"
-msgstr "Hırvat ikil harflerini kullanır"
-
-#: ../rules/base.xml.in.h:662
-msgid "Use guillemets for quotes"
-msgstr "Tırnakların yerine açılı ayraçlar kullanılır"
-
-# tüklü
-#: ../rules/base.xml.in.h:663
-msgid "Use keyboard LED to show alternative layout"
-msgstr "Alternativ tizilimni köstermek içün klavye LED'ini qullan"
-
-#: ../rules/base.xml.in.h:664
-msgid "Using space key to input non-breakable space character"
-msgstr "Qırılmaz boşluq remzini kirdilemek içün boşluq tuşu qullanımı"
-
-#: ../rules/base.xml.in.h:665
-msgid "Usual space at any level"
-msgstr "Er seviyede adetiy boÅŸluq"
-
-#: ../rules/base.xml.in.h:666
-msgid "Uzb"
-msgstr "Özb"
-
-#: ../rules/base.xml.in.h:667
-msgid "Uzbekistan"
-msgstr "Özbekistan"
-
-#: ../rules/base.xml.in.h:668
-msgid "Vietnam"
-msgstr "Vietnam"
-
-#: ../rules/base.xml.in.h:669
-msgid "ViewSonic KU-306 Internet Keyboard"
-msgstr "ViewSonic KU-306 Ä°nternet Klavyesi"
-
-#: ../rules/base.xml.in.h:670
-msgid "Vnm"
-msgstr "Vnm"
-
-# tüklü
-#: ../rules/base.xml.in.h:671
-msgid "Wang 724 keypad with unicode additions (arrows and math operators)"
-msgstr "Wang 724 tuştaqımı Unikod eklemelerinen (oqlar ve riyaziy işleticiler)"
-
-#: ../rules/base.xml.in.h:672
-msgid "Wang 724 keypad with unicode additions (arrows and math operators). Math operators on default level"
-msgstr "Wang 724 tuştaqımı Unikod eklemelerinen (oqlar ve riyaziy işleticiler). Riyaziy tuşlar ög-belgilengen seviyede"
-
-#: ../rules/base.xml.in.h:673
-msgid "Wang model 724 azerty"
-msgstr "Wang model 724 azerty"
-
-#: ../rules/base.xml.in.h:674
-msgid "Western"
-msgstr "Äžarbiy"
-
-#: ../rules/base.xml.in.h:675
-msgid "Winbook Model XP5"
-msgstr "Winbook Model XP5"
-
-#: ../rules/base.xml.in.h:676
-msgid "Winkeys"
-msgstr "Win-tuşları"
-
-#: ../rules/base.xml.in.h:677
-msgid "With &lt;\\|&gt; key"
-msgstr "&lt;\\|&gt; tuÅŸunen"
-
-#: ../rules/base.xml.in.h:678
-msgid "With EuroSign on 5"
-msgstr "€ sembolü ile 5 tuşu"
-
-#: ../rules/base.xml.in.h:679
-msgid "With guillemets"
-msgstr "Açılı ayraçlarla"
-
-#: ../rules/base.xml.in.h:680
-msgid "Yahoo! Internet Keyboard"
-msgstr "Yahoo! Ä°nternet Klavyesi"
-
-#: ../rules/base.xml.in.h:681
-msgid "Yakut"
-msgstr "Sahaca"
-
-#: ../rules/base.xml.in.h:682
-msgid "Yoruba"
-msgstr "Yoruba"
-
-#: ../rules/base.xml.in.h:683
-msgid "Z and ZHE swapped"
-msgstr "Z ile J almaştırılır"
-
-#: ../rules/base.xml.in.h:684
-msgid "Zar"
-msgstr "Zar"
-
-#: ../rules/base.xml.in.h:685
-msgid "azerty"
-msgstr "azerty"
-
-#: ../rules/base.xml.in.h:686
-msgid "azerty/digits"
-msgstr "azerty/raqamlar"
-
-#: ../rules/base.xml.in.h:687
-msgid "digits"
-msgstr "raqamlar"
-
-#: ../rules/base.xml.in.h:688
-msgid "displaced semicolon and quote (obsolete)"
-msgstr "noqtalı virgül ve qoştırnaq yersizleştirilgen (eskirtilgen)"
-
-#: ../rules/base.xml.in.h:689
-msgid "lyx"
-msgstr "lyx"
-
-#: ../rules/base.xml.in.h:690
-msgid "qwerty"
-msgstr "qwerty"
-
-#: ../rules/base.xml.in.h:691
-msgid "qwerty, extended Backslash"
-msgstr "qwerty, uzatılğan Kerikesme"
-
-#: ../rules/base.xml.in.h:692
-msgid "qwerty/digits"
-msgstr "qwerty/raqamlar"
-
-#: ../rules/base.xml.in.h:693
-msgid "qwertz"
-msgstr "qwertz"
-
-# tüklü
-#: ../rules/base.extras.xml.in.h:1
-msgid "APL"
-msgstr "APL"
-
-# tüklü
-#: ../rules/base.extras.xml.in.h:2
-msgid "Atsina"
-msgstr "Atsina"
-
-# tüklü
-#: ../rules/base.extras.xml.in.h:3
-msgid "Combining accents instead of dead keys"
-msgstr "Ölü tuşlar yerine köterinkilerniñ qoşulması"
-
-# tüklü
-#: ../rules/base.extras.xml.in.h:4
-msgid "Couer D'alene Salish"
-msgstr "Couer D'alene Salish"
-
-#: ../rules/base.extras.xml.in.h:5
-msgid "International (AltGr Unicode combining)"
-msgstr "Milletlerara (AltGr Unikod qoşumı)"
-
-#: ../rules/base.extras.xml.in.h:6
-msgid "International (AltGr Unicode combining, alternative)"
-msgstr "Milletlerara (AltGr Unikod qoşumı, alternativ)"
-
-#~ msgid "Baltic+"
-#~ msgstr "Baltıq+"
-
-#~ msgid "IBM ThinkPad 560Z/600/600E/A22E, Intl"
-#~ msgstr "IBM ThinkPad 560Z/600/600E/A22E, Intl"
-
-#~ msgid "Keypad"
-#~ msgstr "Tuştaqımı"
-
-#~ msgid "Pro"
-#~ msgstr "Pro"
-
-#~ msgid "Pro Keypad"
-#~ msgstr "Pro Klavye"
-
-#~ msgid "Standard Phonetic"
-#~ msgstr "Standart Fonetik"
-
-#~ msgid "Brazilian ABNT2"
-#~ msgstr "Brazilya dili ABNT2"
-
-#~ msgid "Japanese 106-key"
-#~ msgstr "Japonca 106 tuÅŸlu"
-
-#~ msgid "Kir"
-#~ msgstr "Kir"
-
-#~ msgid "Korean 106-key"
-#~ msgstr "Korece 106 tuÅŸlu"
-
-#~ msgid "Super is mapped to Win keys"
-#~ msgstr "Super, Pencereler (Win) tuşlarına haritalandırılır"
-
-#~ msgid "US keyboard with Slovenian digraphs"
-#~ msgstr "Sloven ikil harfleriyle amerikan klavyesi"
-
-#~ msgid "Unicode"
-#~ msgstr "Unikod"
-
-#~ msgid "Use Slovenian digraphs"
-#~ msgstr "Sloven ikil harflerini kullanır"
+# Crimean Tatar (Crimean Turkish) translation for xkeyboard-config.
+# Copyright (C) 2009 Free Software Foundation, Inc.
+# This file is distributed under the same license as the xkeyboard-config package.
+#
+# ReÅŸat SABIQ <tilde.birlik@gmail.com>, 2009, 2010.
+# Özgür Qarahan <karahan@vatankirim.net>, 2009.
+# Şimdilik, bazan Türkçe tercimeler qullanıla.
+msgid ""
+msgstr ""
+"Project-Id-Version: xkeyboard-config 1.8\n"
+"Report-Msgid-Bugs-To: svu@users.sourceforge.net\n"
+"POT-Creation-Date: 2010-01-16 18:08+0000\n"
+"PO-Revision-Date: 2010-04-06 19:25-0500\n"
+"Last-Translator: ReÅŸat SABIQ <tilde.birlik@gmail.com>\n"
+"Language-Team: Crimean Tatar (Crimean Turkish) <tilde-birlik-tercime@lists.sourceforge.net>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+# tüklü
+#: ../rules/base.xml.in.h:1
+msgid "(F)"
+msgstr "F tizilimi"
+
+#: ../rules/base.xml.in.h:2
+msgid "(Legacy) Alternative"
+msgstr "(Qadim) Alternativ"
+
+#: ../rules/base.xml.in.h:3
+msgid "(Legacy) Alternative, Sun dead keys"
+msgstr "(Qadim) Alternativ, Sun ölü tuşlar"
+
+#: ../rules/base.xml.in.h:4
+msgid "(Legacy) Alternative, eliminate dead keys"
+msgstr "(Qadim) Alternativ, ölü tuşsuz"
+
+#: ../rules/base.xml.in.h:5
+msgid "101/104 key Compatible"
+msgstr "101/104 tuÅŸ Qabili Telif"
+
+#: ../rules/base.xml.in.h:6
+msgid "101/qwerty/comma/Dead keys"
+msgstr "101/qwerty/virgül/Ölü tuşlar"
+
+#: ../rules/base.xml.in.h:7
+msgid "101/qwerty/comma/Eliminate dead keys"
+msgstr "101/qwerty/virgül/Ölü tuşsuz"
+
+#: ../rules/base.xml.in.h:8
+msgid "101/qwerty/dot/Dead keys"
+msgstr "101/qwerty/noqta/Ölü tuşlar"
+
+#: ../rules/base.xml.in.h:9
+msgid "101/qwerty/dot/Eliminate dead keys"
+msgstr "101/qwerty/noqta/Ölü tuşsuz"
+
+#: ../rules/base.xml.in.h:10
+msgid "101/qwertz/comma/Dead keys"
+msgstr "101/qwertz/virgül/Ölü tuşlar"
+
+#: ../rules/base.xml.in.h:11
+msgid "101/qwertz/comma/Eliminate dead keys"
+msgstr "101/qwertz/virgül/Ölü tuşsuz"
+
+#: ../rules/base.xml.in.h:12
+msgid "101/qwertz/dot/Dead keys"
+msgstr "101/qwertz/noqta/Ölü tuşlar"
+
+#: ../rules/base.xml.in.h:13
+msgid "101/qwertz/dot/Eliminate dead keys"
+msgstr "101/qwertz/noqta/Ölü tuşsuz"
+
+#: ../rules/base.xml.in.h:14
+msgid "102/qwerty/comma/Dead keys"
+msgstr "102/qwerty/virgül/Ölü tuşlar"
+
+#: ../rules/base.xml.in.h:15
+msgid "102/qwerty/comma/Eliminate dead keys"
+msgstr "102/qwerty/virgül/Ölü tuşsuz"
+
+#: ../rules/base.xml.in.h:16
+msgid "102/qwerty/dot/Dead keys"
+msgstr "102/qwerty/noqta/Ölü tuşlar"
+
+#: ../rules/base.xml.in.h:17
+msgid "102/qwerty/dot/Eliminate dead keys"
+msgstr "102/qwerty/noqta/Ölü tuşsuz"
+
+#: ../rules/base.xml.in.h:18
+msgid "102/qwertz/comma/Dead keys"
+msgstr "102/qwertz/virgül/Ölü tuşlar"
+
+#: ../rules/base.xml.in.h:19
+msgid "102/qwertz/comma/Eliminate dead keys"
+msgstr "102/qwertz/virgül/Ölü tuşsuz"
+
+#: ../rules/base.xml.in.h:20
+msgid "102/qwertz/dot/Dead keys"
+msgstr "102/qwertz/noqta/Ölü tuşlar"
+
+#: ../rules/base.xml.in.h:21
+msgid "102/qwertz/dot/Eliminate dead keys"
+msgstr "102/qwertz/noqta/Ölü tuşsuz"
+
+#: ../rules/base.xml.in.h:22
+msgid "2"
+msgstr "2"
+
+#: ../rules/base.xml.in.h:23
+msgid "4"
+msgstr "4"
+
+#: ../rules/base.xml.in.h:24
+msgid "5"
+msgstr "5"
+
+#: ../rules/base.xml.in.h:25
+msgid "A4Tech KB-21"
+msgstr "A4Tech KB-21"
+
+#: ../rules/base.xml.in.h:26
+msgid "A4Tech KBS-8"
+msgstr "A4Tech KBS-8"
+
+#: ../rules/base.xml.in.h:27
+msgid "A4Tech Wireless Desktop RFKB-23"
+msgstr "A4Tech Telsiz Masaüstü RFKB-23"
+
+#: ../rules/base.xml.in.h:28
+msgid "ACPI Standard"
+msgstr "ACPI Standartı"
+
+# tüklü
+#: ../rules/base.xml.in.h:29
+msgid "ATM/phone-style"
+msgstr "ATM/telefon-uslûbı"
+
+#: ../rules/base.xml.in.h:30
+msgid "Acer AirKey V"
+msgstr "Acer AirKey V"
+
+#: ../rules/base.xml.in.h:31
+msgid "Acer C300"
+msgstr "Acer C300"
+
+#: ../rules/base.xml.in.h:32
+msgid "Acer Ferrari 4000"
+msgstr "Acer Ferrari 4000"
+
+#: ../rules/base.xml.in.h:33
+msgid "Acer Laptop"
+msgstr "Acer Tizüstü"
+
+#: ../rules/base.xml.in.h:34
+msgid "Add the standard behavior to Menu key"
+msgstr "Menü tuşuna standart davranışnı ekle."
+
+#: ../rules/base.xml.in.h:35
+msgid "Adding Esperanto circumflexes (supersigno)"
+msgstr "Esperanto qıyışıq-yaylarınıñ (circumflex) eklenüvi (supersigno)"
+
+#: ../rules/base.xml.in.h:36
+msgid "Adding EuroSign to certain keys"
+msgstr "Belli tuşlarğa € remziniñ eklenüvi"
+
+#: ../rules/base.xml.in.h:37
+msgid "Advance Scorpius KI"
+msgstr "Advance Scorpius KI"
+
+#: ../rules/base.xml.in.h:38
+msgid "Afg"
+msgstr "Afg"
+
+#: ../rules/base.xml.in.h:39
+msgid "Afghanistan"
+msgstr "AfÄŸanistan"
+
+#: ../rules/base.xml.in.h:40
+msgid "Akan"
+msgstr "Akan"
+
+#: ../rules/base.xml.in.h:41
+msgid "Alb"
+msgstr "Arn"
+
+#: ../rules/base.xml.in.h:42
+msgid "Albania"
+msgstr "Arnavutlıq"
+
+#: ../rules/base.xml.in.h:43
+msgid "Alt and Meta are on Alt keys"
+msgstr "Alt ve Meta, Alt tuşlarındadır"
+
+#: ../rules/base.xml.in.h:44
+msgid "Alt is mapped to Right Win, Super to Menu"
+msgstr "Alt, Oñ Win tuşuna, Süper ise Menü tuşuna haritalandırılır"
+
+#: ../rules/base.xml.in.h:45
+msgid "Alt+CapsLock"
+msgstr "Alt+CapsLock"
+
+#: ../rules/base.xml.in.h:46
+msgid "Alt+Ctrl"
+msgstr "Alt+Ctrl"
+
+#: ../rules/base.xml.in.h:47
+msgid "Alt+Shift"
+msgstr "Alt+Shift"
+
+#: ../rules/base.xml.in.h:48
+msgid "Alt+Space"
+msgstr "Alt+BoÅŸluq"
+
+#: ../rules/base.xml.in.h:49
+msgid "Alt-Q"
+msgstr "Alt-Q (yazılımcı klavyesi)"
+
+#: ../rules/base.xml.in.h:50
+msgid "Alt/Win key behavior"
+msgstr "Alt/Win tuşu davranışı"
+
+#: ../rules/base.xml.in.h:51
+msgid "Alternative"
+msgstr "Alternativ"
+
+#: ../rules/base.xml.in.h:52
+msgid "Alternative Eastern"
+msgstr "Alternativ Åžarqiy"
+
+#: ../rules/base.xml.in.h:53
+msgid "Alternative Phonetic"
+msgstr "Alternativ Fonetik"
+
+#: ../rules/base.xml.in.h:54
+msgid "Alternative international (former us_intl)"
+msgstr "Alternativ milletlerara (Q klavyesi; evelki us_intl)"
+
+#: ../rules/base.xml.in.h:55
+msgid "Alternative, Sun dead keys"
+msgstr "Alternativ, Sun ölü tuşlar"
+
+#: ../rules/base.xml.in.h:56
+msgid "Alternative, eliminate dead keys"
+msgstr "Alternativ, ölü tuşsuz"
+
+#: ../rules/base.xml.in.h:57
+msgid "Alternative, latin-9 only"
+msgstr "Alternativ, faqat latin-9"
+
+#: ../rules/base.xml.in.h:58
+msgid "And"
+msgstr "And"
+
+#: ../rules/base.xml.in.h:59
+msgid "Andorra"
+msgstr "Andora"
+
+#: ../rules/base.xml.in.h:60
+msgid "Any Alt key"
+msgstr "Er angi Alt tuÅŸu"
+
+#: ../rules/base.xml.in.h:61
+msgid "Any Win key"
+msgstr "Er angi Pencereler (Win) tuÅŸu"
+
+# tüklü
+#: ../rules/base.xml.in.h:62
+msgid "Any Win key (while pressed)"
+msgstr "Er angi Pencereler (Win) tuşu (basıq olğanda)"
+
+#: ../rules/base.xml.in.h:63
+msgid "Apostrophe (') variant"
+msgstr "Apostrof (') variantı"
+
+#: ../rules/base.xml.in.h:64
+msgid "Apple"
+msgstr "Apple"
+
+#: ../rules/base.xml.in.h:65
+msgid "Apple Laptop"
+msgstr "Apple Tizüstü"
+
+#: ../rules/base.xml.in.h:66
+msgid "Ara"
+msgstr "Ara"
+
+#: ../rules/base.xml.in.h:67
+msgid "Arabic"
+msgstr "Arapça"
+
+#: ../rules/base.xml.in.h:68
+msgid "Arm"
+msgstr "Erm"
+
+#: ../rules/base.xml.in.h:69
+msgid "Armenia"
+msgstr "Ermenistan"
+
+#: ../rules/base.xml.in.h:70
+msgid "Asturian variant with bottom-dot H and bottom-dot L"
+msgstr "Alt-noqtalı H ve alt-noqatlı L ile Asturian variant"
+
+#: ../rules/base.xml.in.h:71
+msgid "Asus Laptop"
+msgstr "Asus Tizüstü"
+
+#: ../rules/base.xml.in.h:72
+msgid "At bottom left"
+msgstr "Tüpniñ solunda"
+
+#: ../rules/base.xml.in.h:73
+msgid "At left of 'A'"
+msgstr "'A'nıñ solunda"
+
+#: ../rules/base.xml.in.h:74
+msgid "Aze"
+msgstr "Aze"
+
+#: ../rules/base.xml.in.h:75
+msgid "Azerbaijan"
+msgstr "Azerbaycan"
+
+# tüklü
+#: ../rules/base.xml.in.h:76
+msgid "Azona RF2300 wireless Internet Keyboard"
+msgstr "Azona RF2300 telsiz Ä°nternet Klavyesi"
+
+#: ../rules/base.xml.in.h:77
+msgid "BTC 5090"
+msgstr "BTC 5090"
+
+# tüklü
+#: ../rules/base.xml.in.h:78
+msgid "BTC 5113RF Multimedia"
+msgstr "BTC 5113RF Çoqluvasat"
+
+#: ../rules/base.xml.in.h:79
+msgid "BTC 5126T"
+msgstr "BTC 5126T"
+
+#: ../rules/base.xml.in.h:80
+msgid "BTC 6301URF"
+msgstr "BTC 6301URF"
+
+#: ../rules/base.xml.in.h:81
+msgid "BTC 9000"
+msgstr "BTC 9000"
+
+#: ../rules/base.xml.in.h:82
+msgid "BTC 9000A"
+msgstr "BTC 9000A"
+
+#: ../rules/base.xml.in.h:83
+msgid "BTC 9001AH"
+msgstr "BTC 9001AH"
+
+#: ../rules/base.xml.in.h:84
+msgid "BTC 9019U"
+msgstr "BTC 9019U"
+
+#: ../rules/base.xml.in.h:85
+msgid "BTC 9116U Mini Wireless Internet and Gaming"
+msgstr "BTC 9116U Mini Telsiz Ä°nternet ve Oyunlav"
+
+#: ../rules/base.xml.in.h:86
+msgid "Ban"
+msgstr "Ban"
+
+#: ../rules/base.xml.in.h:87
+msgid "Bangladesh"
+msgstr "BangladeÅŸ"
+
+#: ../rules/base.xml.in.h:88
+msgid "Bashkirian"
+msgstr "Başqurtça"
+
+#: ../rules/base.xml.in.h:89
+msgid "Bel"
+msgstr "Bel"
+
+#: ../rules/base.xml.in.h:90
+msgid "Belarus"
+msgstr "Belarus"
+
+#: ../rules/base.xml.in.h:91
+msgid "Belgium"
+msgstr "Belçika"
+
+#: ../rules/base.xml.in.h:92
+msgid "BenQ X-Touch"
+msgstr "BenQ X-Touch"
+
+#: ../rules/base.xml.in.h:93
+msgid "BenQ X-Touch 730"
+msgstr "BenQ X-Touch 730"
+
+#: ../rules/base.xml.in.h:94
+msgid "BenQ X-Touch 800"
+msgstr "BenQ X-Touch 800"
+
+#: ../rules/base.xml.in.h:95
+msgid "Bengali"
+msgstr "Bengali"
+
+#: ../rules/base.xml.in.h:96
+msgid "Bengali Probhat"
+msgstr "Bengali Probhat"
+
+#: ../rules/base.xml.in.h:97
+msgid "Bepo, ergonomic, Dvorak way"
+msgstr "Bepo, ergonomik, Dvorak yolu"
+
+#: ../rules/base.xml.in.h:98
+msgid "Bepo, ergonomic, Dvorak way, latin-9 only"
+msgstr "Bepo, ergonomik, Dvorak yolu, faqat latin-9"
+
+#: ../rules/base.xml.in.h:99
+msgid "Bgr"
+msgstr "Bgr"
+
+#: ../rules/base.xml.in.h:100
+msgid "Bhu"
+msgstr "Bhu"
+
+#: ../rules/base.xml.in.h:101
+msgid "Bhutan"
+msgstr "Butan"
+
+#: ../rules/base.xml.in.h:102
+msgid "Biblical Hebrew (Tiro)"
+msgstr "Ä°nciliy Ä°braniyce (Tiro)"
+
+#: ../rules/base.xml.in.h:103
+msgid "Bih"
+msgstr "Bih"
+
+#: ../rules/base.xml.in.h:104
+msgid "Blr"
+msgstr "Blr"
+
+#: ../rules/base.xml.in.h:105
+msgid "Bosnia and Herzegovina"
+msgstr "Bosna-Hersek"
+
+#: ../rules/base.xml.in.h:106
+msgid "Both Alt keys together"
+msgstr "Alt tuşlarınıñ ekisi de"
+
+#: ../rules/base.xml.in.h:107
+msgid "Both Ctrl keys together"
+msgstr "Ctrl tuşlarınıñ ekisi de"
+
+#: ../rules/base.xml.in.h:108
+msgid "Both Shift keys together"
+msgstr "Shift tuşlarınıñ ekisi de"
+
+#: ../rules/base.xml.in.h:109
+msgid "Bra"
+msgstr "Bra"
+
+# tınış
+#: ../rules/base.xml.in.h:110
+msgid "Braille"
+msgstr "Körler elifbesi"
+
+#: ../rules/base.xml.in.h:111
+msgid "Brazil"
+msgstr "Brezilya"
+
+# tüklü
+#: ../rules/base.xml.in.h:112
+msgid "Breton"
+msgstr "Breton"
+
+#: ../rules/base.xml.in.h:113
+msgid "Brl"
+msgstr "Brl"
+
+#: ../rules/base.xml.in.h:114
+msgid "Brother Internet Keyboard"
+msgstr "Brother Ä°nternet Klavyesi"
+
+#: ../rules/base.xml.in.h:115
+msgid "Buckwalter"
+msgstr "Bükvalter"
+
+#: ../rules/base.xml.in.h:116
+msgid "Bulgaria"
+msgstr "Bulgaristan"
+
+# tüklü
+#: ../rules/base.xml.in.h:117
+msgid "CRULP"
+msgstr "CRULP"
+
+#: ../rules/base.xml.in.h:118
+msgid "Cambodia"
+msgstr "Kamboçya"
+
+#: ../rules/base.xml.in.h:119
+msgid "Can"
+msgstr "Kan"
+
+#: ../rules/base.xml.in.h:120
+msgid "Canada"
+msgstr "Kanada"
+
+# tüklü
+#: ../rules/base.xml.in.h:121
+msgid "Caps Lock"
+msgstr "Caps Lock"
+
+#: ../rules/base.xml.in.h:122
+msgid "CapsLock"
+msgstr "CapsLock"
+
+#: ../rules/base.xml.in.h:123
+msgid "CapsLock (to first layout), Shift+CapsLock (to last layout)"
+msgstr "CapsLock (birinci tizilimge almaştırır), Shift+CapsLock (soñkisine)"
+
+#: ../rules/base.xml.in.h:124
+msgid "CapsLock (while pressed), Alt+CapsLock does the original capslock action"
+msgstr "CapsLock tuşu (basıq olğanda), Alt+CapsLock asliy CapsLock amelini yapar"
+
+#: ../rules/base.xml.in.h:125
+msgid "CapsLock acts as Shift with locking. Shift \"pauses\" CapsLock"
+msgstr "CapsLock kilitlemeli Shift kibi çalışır. Shift ise CapsLock tuşunı \"tınışlar\""
+
+#: ../rules/base.xml.in.h:126
+msgid "CapsLock acts as Shift with locking. Shift doesn't affect CapsLock"
+msgstr "CapsLock kilitlemeli Shift kibi çalışır. Shift tuşu Caps Lock davranışına tesirlemez."
+
+#: ../rules/base.xml.in.h:127
+msgid "CapsLock is disabled"
+msgstr "CapsLock ğayrı qabil"
+
+#: ../rules/base.xml.in.h:128
+msgid "CapsLock key behavior"
+msgstr "CapsLock tuşunıñ davranışı"
+
+# bundan alfabetik olmayan tuÅŸlar da etkilenir.
+#: ../rules/base.xml.in.h:129
+msgid "CapsLock toggles Shift so all keys are affected"
+msgstr "CapsLock, tuşlarnıñ episi tesirlenecek şekilde Shift davranışını döndürir"
+
+# tuşu büyük/küçük harf geçişi yapar.
+#: ../rules/base.xml.in.h:130
+msgid "CapsLock toggles normal capitalization of alphabetic characters"
+msgstr "CapsLock elifbe remizleriniñ normal başlaştırılmasını almaştırır"
+
+#: ../rules/base.xml.in.h:131
+msgid "CapsLock uses internal capitalization. Shift \"pauses\" CapsLock"
+msgstr "CapsLock içki başlaştırmanı qullanır. Shift CapsLock tuşunı \"tınışlar\""
+
+#: ../rules/base.xml.in.h:132
+msgid "CapsLock uses internal capitalization. Shift doesn't affect CapsLock"
+msgstr "CapsLock içki başlaştırmanı qullanır. Shift CapsLock davranışına tesirlemez."
+
+#: ../rules/base.xml.in.h:133
+msgid "Catalan variant with middle-dot L"
+msgstr "Ortası noqtalı L'li Katalan yerleşimi"
+
+#: ../rules/base.xml.in.h:134
+msgid "Cedilla"
+msgstr "Sedilla"
+
+#: ../rules/base.xml.in.h:135
+msgid "Che"
+msgstr "Che"
+
+#: ../rules/base.xml.in.h:136
+msgid "Cherokee"
+msgstr "Çeroki"
+
+#: ../rules/base.xml.in.h:137
+msgid "Cherry B.UNLIMITED"
+msgstr "Cherry B.UNLIMITED"
+
+#: ../rules/base.xml.in.h:138
+msgid "Cherry Blue Line CyBo@rd"
+msgstr "Cherry Blue Line CyBo@rd"
+
+#: ../rules/base.xml.in.h:139
+msgid "Cherry Blue Line CyBo@rd (alternate option)"
+msgstr "Cherry Blue Line CyBo@rd (diğer seçenek)"
+
+#: ../rules/base.xml.in.h:140
+msgid "Cherry CyBo@rd USB-Hub"
+msgstr "Cherry CyBo@rd USB-Hub"
+
+#: ../rules/base.xml.in.h:141
+msgid "Cherry CyMotion Expert"
+msgstr "Cherry CyMotion Expert"
+
+#: ../rules/base.xml.in.h:142
+msgid "Cherry CyMotion Master Linux"
+msgstr "Cherry CyMotion Master Linux"
+
+#: ../rules/base.xml.in.h:143
+msgid "Cherry CyMotion Master XPress"
+msgstr "Cherry CyMotion Master XPress"
+
+#: ../rules/base.xml.in.h:144
+msgid "Chicony Internet Keyboard"
+msgstr "Chicony Ä°nternet Klavyesi"
+
+#: ../rules/base.xml.in.h:145
+msgid "Chicony KB-9885"
+msgstr "Chicony KB-9885"
+
+#: ../rules/base.xml.in.h:146
+msgid "Chicony KU-0108"
+msgstr "Chicony KU-0108"
+
+#: ../rules/base.xml.in.h:147
+msgid "Chicony KU-0420"
+msgstr "Chicony KU-0420"
+
+#: ../rules/base.xml.in.h:148
+msgid "China"
+msgstr "Çin"
+
+#: ../rules/base.xml.in.h:149
+msgid "Chuvash"
+msgstr "Çuvaşça"
+
+#: ../rules/base.xml.in.h:150
+msgid "Chuvash Latin"
+msgstr "Çuvaşça Latin"
+
+#: ../rules/base.xml.in.h:151
+msgid "Classic"
+msgstr "Klassik"
+
+#: ../rules/base.xml.in.h:152
+msgid "Classic Dvorak"
+msgstr "Klassik Dvorak"
+
+#: ../rules/base.xml.in.h:153
+msgid "Classmate PC"
+msgstr "Classmate Åžahsiy Bilgisayar (PC)"
+
+#: ../rules/base.xml.in.h:154
+msgid "CloGaelach"
+msgstr "CloGaelach"
+
+#: ../rules/base.xml.in.h:155
+msgid "Colemak"
+msgstr "Colemak"
+
+#: ../rules/base.xml.in.h:156
+msgid "Compaq Easy Access Keyboard"
+msgstr "Compaq Kolay EriÅŸim Klavyesi"
+
+#: ../rules/base.xml.in.h:157
+msgid "Compaq Internet Keyboard (13 keys)"
+msgstr "Compaq Ä°nternet Klavyesi (13 tuÅŸlu)"
+
+#: ../rules/base.xml.in.h:158
+msgid "Compaq Internet Keyboard (18 keys)"
+msgstr "Compaq Ä°nternet Klavyesi (18 tuÅŸlu)"
+
+#: ../rules/base.xml.in.h:159
+msgid "Compaq Internet Keyboard (7 keys)"
+msgstr "Ä°nternet Klavyesi (7 tuÅŸlu)"
+
+#: ../rules/base.xml.in.h:160
+msgid "Compaq iPaq Keyboard"
+msgstr "Compaq iPaq Klavyesi"
+
+#: ../rules/base.xml.in.h:161
+msgid "Compose key position"
+msgstr "Telif (Compose) tuşu qonumı"
+
+#: ../rules/base.xml.in.h:162
+msgid "Congo, Democratic Republic of the"
+msgstr "Kongo Demokratik Cumhuriyeti"
+
+#: ../rules/base.xml.in.h:163
+msgid "Control + Alt + Backspace"
+msgstr "Control + Alt + Kerisilme"
+
+#: ../rules/base.xml.in.h:164
+msgid "Control is mapped to Alt keys, Alt is mapped to Win keys"
+msgstr "Control (Muraqabe), Alt tuşlarına haritalandırılır, Alt ise Pencereler (Win) tuşlarına haritalandırılır"
+
+#: ../rules/base.xml.in.h:165
+msgid "Control is mapped to Win keys (and the usual Ctrl keys)"
+msgstr "Control (Muraqabe), Pencereler (Win) tuşlarına (ve adetiy Ctrl tuşlarına) haritalandırılır"
+
+#: ../rules/base.xml.in.h:166
+msgid "Creative Desktop Wireless 7000"
+msgstr "Creative Masaüstü Telsiz 7000"
+
+#: ../rules/base.xml.in.h:167
+msgid "Crimean Tatar (Dobruca-1 Q)"
+msgstr "Qırımtatarca (Dobruca-1 Q)"
+
+#: ../rules/base.xml.in.h:168
+msgid "Crimean Tatar (Dobruca-2 Q)"
+msgstr "Qırımtatarca (Dobruca-2 Q)"
+
+#: ../rules/base.xml.in.h:169
+msgid "Crimean Tatar (Turkish Alt-Q)"
+msgstr "Qırımtatarca (Türkçe Alt-Q)"
+
+#: ../rules/base.xml.in.h:170
+msgid "Crimean Tatar (Turkish F)"
+msgstr "Qırımtatarca (Türkçe F)"
+
+#: ../rules/base.xml.in.h:171
+msgid "Crimean Tatar (Turkish Q)"
+msgstr "Qırımtatarca (Türkçe Q)"
+
+#: ../rules/base.xml.in.h:172
+msgid "Croatia"
+msgstr "Hırvatistan"
+
+#: ../rules/base.xml.in.h:173
+msgid "Ctrl key position"
+msgstr "Ctrl tuşunıñ mevamı"
+
+#: ../rules/base.xml.in.h:174
+msgid "Ctrl+Shift"
+msgstr "Ctrl+Shift"
+
+#: ../rules/base.xml.in.h:175
+msgid "Cyrillic"
+msgstr "Kiril"
+
+#: ../rules/base.xml.in.h:176
+msgid "Cyrillic with guillemets"
+msgstr "Köşeli qavuslarnen Kiril"
+
+#: ../rules/base.xml.in.h:177
+msgid "Cyrillic, Z and ZHE swapped"
+msgstr "Kiril, Z ile J almaştırılğan"
+
+#: ../rules/base.xml.in.h:178
+msgid "Cze"
+msgstr "Çek"
+
+#: ../rules/base.xml.in.h:179
+msgid "Czechia"
+msgstr "Çek Cumhuriyeti"
+
+#: ../rules/base.xml.in.h:180
+msgid "DOS"
+msgstr "DOS"
+
+#: ../rules/base.xml.in.h:181
+msgid "DRC"
+msgstr "DRC"
+
+#: ../rules/base.xml.in.h:182
+msgid "DTK2000"
+msgstr "DTK2000"
+
+#: ../rules/base.xml.in.h:183
+msgid "Dan"
+msgstr "Dan"
+
+#: ../rules/base.xml.in.h:184
+msgid "Dead acute"
+msgstr "Ölü acute (´)"
+
+#: ../rules/base.xml.in.h:185
+msgid "Dead grave acute"
+msgstr "Ölü grave acute (`)"
+
+#: ../rules/base.xml.in.h:186
+msgid "Default numeric keypad keys"
+msgstr "Ög-belgilengen sayısal tuştaqımı tuşları"
+
+#: ../rules/base.xml.in.h:187
+msgid "Dell"
+msgstr "Dell"
+
+#: ../rules/base.xml.in.h:188
+msgid "Dell 101-key PC"
+msgstr "Dell 101 tuÅŸlu PC"
+
+#: ../rules/base.xml.in.h:189
+msgid "Dell Laptop/notebook Inspiron 6xxx/8xxx"
+msgstr "Tizüstü/defter Dell Inspiron 6xxx/8xxx"
+
+#: ../rules/base.xml.in.h:190
+msgid "Dell Laptop/notebook Precision M series"
+msgstr "Dell Tizüstü/defter Precision M series"
+
+#: ../rules/base.xml.in.h:191
+msgid "Dell Latitude series laptop"
+msgstr "Dell Latitude serisi Tizüstü"
+
+#: ../rules/base.xml.in.h:192
+msgid "Dell Precision M65"
+msgstr "Dell Precision M65"
+
+#: ../rules/base.xml.in.h:193
+msgid "Dell SK-8125"
+msgstr "Dell SK-8125"
+
+#: ../rules/base.xml.in.h:194
+msgid "Dell SK-8135"
+msgstr "Dell SK-8135"
+
+# tüklü
+#: ../rules/base.xml.in.h:195
+msgid "Dell USB Multimedia Keyboard"
+msgstr "Dell USB Çoqluvasat Klavyesi"
+
+#: ../rules/base.xml.in.h:196
+msgid "Denmark"
+msgstr "Danimarka"
+
+#: ../rules/base.xml.in.h:197
+msgid "Deu"
+msgstr "Alm"
+
+#: ../rules/base.xml.in.h:198
+msgid "Dexxa Wireless Desktop Keyboard"
+msgstr "Dexxa Kablosuz Masaüstü Klavyesi"
+
+#: ../rules/base.xml.in.h:199
+msgid "Diamond 9801 / 9802 series"
+msgstr "Diamond 9801 / 9802 serileri"
+
+#: ../rules/base.xml.in.h:200
+msgid "Dvorak"
+msgstr "Dvorak"
+
+#: ../rules/base.xml.in.h:201
+msgid "Dvorak (UK Punctuation)"
+msgstr "Dvorak (Birleşken Qırallıq Noqtalaması)"
+
+#: ../rules/base.xml.in.h:202
+msgid "Dvorak international"
+msgstr "Dvorak milletlerara"
+
+#: ../rules/base.xml.in.h:203
+#, fuzzy
+msgid "Dvorak, Polish quotes on key 1"
+msgstr "Dvorak, \"1/!\" tuşunda Lehçe tırnaqlar"
+
+#: ../rules/base.xml.in.h:204
+msgid "Dvorak, Polish quotes on quotemark key"
+msgstr "Dvorak, tırnaq-tamğası tuşunda Lehçe tırnaqlar"
+
+#: ../rules/base.xml.in.h:205
+msgid "E"
+msgstr "E"
+
+#: ../rules/base.xml.in.h:206
+msgid "Eastern"
+msgstr "Åžarqiy"
+
+#: ../rules/base.xml.in.h:207
+msgid "Eliminate dead keys"
+msgstr "Ölü tuşları normal yapar"
+
+#: ../rules/base.xml.in.h:208
+msgid "Enable extra typographic characters"
+msgstr "Ziyade matbaa remizlerini qabilleÅŸtir"
+
+#: ../rules/base.xml.in.h:209
+msgid "English"
+msgstr "Ä°nglizce"
+
+#: ../rules/base.xml.in.h:210
+msgid "Ennyah DKB-1008"
+msgstr "Ennyah DKB-1008"
+
+#: ../rules/base.xml.in.h:211
+msgid "Enter on keypad"
+msgstr "Tuştaqımında kirsetilsin"
+
+#: ../rules/base.xml.in.h:212
+msgid "Epo"
+msgstr "Epo"
+
+#: ../rules/base.xml.in.h:213
+msgid "Ergonomic"
+msgstr "Ergonomik"
+
+#: ../rules/base.xml.in.h:214
+msgid "Esp"
+msgstr "Esp"
+
+#: ../rules/base.xml.in.h:215
+msgid "Esperanto"
+msgstr "Esperanto"
+
+#: ../rules/base.xml.in.h:216
+msgid "Est"
+msgstr "Est"
+
+#: ../rules/base.xml.in.h:217
+msgid "Estonia"
+msgstr "Estonya"
+
+#: ../rules/base.xml.in.h:218
+msgid "Eth"
+msgstr "Ety"
+
+#: ../rules/base.xml.in.h:219
+msgid "Ethiopia"
+msgstr "HabeÅŸistan"
+
+#: ../rules/base.xml.in.h:220
+msgid "Evdev-managed keyboard"
+msgstr "Evdev yönetimli klavye"
+
+#: ../rules/base.xml.in.h:221
+msgid "Everex STEPnote"
+msgstr "Everex STEPnote"
+
+#: ../rules/base.xml.in.h:222
+msgid "Ewe"
+msgstr "Eve"
+
+#: ../rules/base.xml.in.h:223
+msgid "Extended"
+msgstr "Uzatılğan"
+
+#: ../rules/base.xml.in.h:224
+msgid "Extended - Winkeys"
+msgstr "Uzatılğan - Win-tuşları"
+
+# tüklü
+#: ../rules/base.xml.in.h:225
+msgid "Extended Backslash"
+msgstr "Uzatılğan Kerikesme"
+
+#: ../rules/base.xml.in.h:226
+msgid "F-letter (F) variant"
+msgstr "F harfli (F) türü"
+
+#: ../rules/base.xml.in.h:227
+msgid "FL90"
+msgstr "FL90"
+
+#: ../rules/base.xml.in.h:228
+msgid "Fao"
+msgstr "Fao"
+
+#: ../rules/base.xml.in.h:229
+msgid "Faroe Islands"
+msgstr "Faroe Adaları"
+
+#: ../rules/base.xml.in.h:230
+msgid "Fin"
+msgstr "Fin"
+
+#: ../rules/base.xml.in.h:231
+msgid "Finland"
+msgstr "Finlandiya"
+
+#. This assumes the KP_ abstract symbols are actually useful for some apps
+#. The description needs to be rewritten
+#: ../rules/base.xml.in.h:234
+msgid "Four-level key with abstract separators"
+msgstr "Mücerret ayırğıçlarnen dördünci seviye tuşu"
+
+#: ../rules/base.xml.in.h:235
+msgid "Four-level key with comma"
+msgstr "Virgülnen dördünci seviye tuşu"
+
+#: ../rules/base.xml.in.h:236
+msgid "Four-level key with dot"
+msgstr "Noqtanen dördünci seviye tuşu"
+
+#: ../rules/base.xml.in.h:237
+msgid "Four-level key with dot, latin-9 restriction"
+msgstr "Noqtanen dördünci seviye tuşu, latin-9 sıñırlaması"
+
+#: ../rules/base.xml.in.h:238
+msgid "Four-level key with momayyez"
+msgstr "Momayyez ile dördünci seviye tuşu"
+
+#: ../rules/base.xml.in.h:239
+msgid "Fra"
+msgstr "Fra"
+
+#: ../rules/base.xml.in.h:240
+msgid "France"
+msgstr "Fransa"
+
+#: ../rules/base.xml.in.h:241
+msgid "French"
+msgstr "Fransızca"
+
+#: ../rules/base.xml.in.h:242
+msgid "French (Macintosh)"
+msgstr "Fransız (Makintoş)"
+
+#: ../rules/base.xml.in.h:243
+msgid "French (legacy)"
+msgstr "Fransızca (qadim)"
+
+#: ../rules/base.xml.in.h:244
+msgid "French Dvorak"
+msgstr "Fransızca Dvorak"
+
+#: ../rules/base.xml.in.h:245
+msgid "French, Sun dead keys"
+msgstr "Fransızca, Sun ölü tuşlar"
+
+#: ../rules/base.xml.in.h:246
+msgid "French, eliminate dead keys"
+msgstr "Fransızca, ölü tuşsuz"
+
+#: ../rules/base.xml.in.h:247
+msgid "Fujitsu-Siemens Computers AMILO laptop"
+msgstr "Fujitsu-Siemens Bilgisayarları AMILO tizüstü"
+
+#: ../rules/base.xml.in.h:248
+msgid "Fula"
+msgstr "Fula"
+
+#: ../rules/base.xml.in.h:249
+msgid "GBr"
+msgstr "GBr"
+
+#: ../rules/base.xml.in.h:250
+msgid "Ga"
+msgstr "Ga"
+
+#: ../rules/base.xml.in.h:251
+msgid "Generic 101-key PC"
+msgstr "Soysal 101 tuÅŸlu PC"
+
+#: ../rules/base.xml.in.h:252
+msgid "Generic 102-key (Intl) PC"
+msgstr "Soysal 102 tuşlu (Uluslararası) PC"
+
+#: ../rules/base.xml.in.h:253
+msgid "Generic 104-key PC"
+msgstr "Soysal 104 tuÅŸlu PC"
+
+#: ../rules/base.xml.in.h:254
+msgid "Generic 105-key (Intl) PC"
+msgstr "Soysal 105 tuşlu (uluslararası) PC"
+
+#: ../rules/base.xml.in.h:255
+msgid "Genius Comfy KB-12e"
+msgstr "Genius Comfy KB-12e"
+
+#: ../rules/base.xml.in.h:256
+msgid "Genius Comfy KB-16M / Genius MM Keyboard KWD-910"
+msgstr "Genius Comfy KB-16M / Genius MM Keyboard KWD-910"
+
+#: ../rules/base.xml.in.h:257
+msgid "Genius Comfy KB-21e-Scroll"
+msgstr "Genius Comfy KB-21e-Scroll"
+
+#: ../rules/base.xml.in.h:258
+msgid "Genius KB-19e NB"
+msgstr "Genius KB-19e NB"
+
+#: ../rules/base.xml.in.h:259
+msgid "Genius KKB-2050HS"
+msgstr "Genius KKB-2050HS"
+
+#: ../rules/base.xml.in.h:260
+msgid "Geo"
+msgstr "Geo"
+
+#: ../rules/base.xml.in.h:261
+msgid "Georgia"
+msgstr "Gürcistan"
+
+#: ../rules/base.xml.in.h:262
+msgid "Georgian"
+msgstr "Gürci"
+
+#: ../rules/base.xml.in.h:263
+msgid "Georgian AZERTY Tskapo"
+msgstr "Gürci AZERTY Tskapo"
+
+#: ../rules/base.xml.in.h:264
+msgid "German (Macintosh)"
+msgstr "Alman (MakintoÅŸ)"
+
+#: ../rules/base.xml.in.h:265
+msgid "German, Sun dead keys"
+msgstr "Almanca, Sun ölü tuşlar"
+
+#: ../rules/base.xml.in.h:266
+msgid "German, eliminate dead keys"
+msgstr "Almanca, ölü tuşsuz"
+
+#: ../rules/base.xml.in.h:267
+msgid "Germany"
+msgstr "Almanya"
+
+#: ../rules/base.xml.in.h:268
+msgid "Gha"
+msgstr "Gha"
+
+#: ../rules/base.xml.in.h:269
+msgid "Ghana"
+msgstr "Gana"
+
+#: ../rules/base.xml.in.h:270
+msgid "Gre"
+msgstr "Gre"
+
+#: ../rules/base.xml.in.h:271
+msgid "Greece"
+msgstr "Yunanistan"
+
+#: ../rules/base.xml.in.h:272
+msgid "Group toggle on multiply/divide key"
+msgstr "Arttır/Böl tuşu üzerine zümreni almaştır"
+
+#: ../rules/base.xml.in.h:273
+msgid "Gui"
+msgstr "Qıllanıcı Arayüzü (Gui)"
+
+#: ../rules/base.xml.in.h:274
+msgid "Guinea"
+msgstr "Gine"
+
+#: ../rules/base.xml.in.h:275
+msgid "Gujarati"
+msgstr "Batı Hint dili"
+
+#: ../rules/base.xml.in.h:276
+msgid "Gurmukhi"
+msgstr "Gurmuki"
+
+#: ../rules/base.xml.in.h:277
+msgid "Gurmukhi Jhelum"
+msgstr "Gurmuki Jhelum"
+
+#: ../rules/base.xml.in.h:278
+msgid "Gyration"
+msgstr "Çekimsel"
+
+#: ../rules/base.xml.in.h:279
+msgid "Happy Hacking Keyboard"
+msgstr "Happy Hacking Klavyesi"
+
+#: ../rules/base.xml.in.h:280
+msgid "Happy Hacking Keyboard for Mac"
+msgstr "Mac içün Happy Hacking Klavyesi"
+
+#: ../rules/base.xml.in.h:281
+msgid "Hausa"
+msgstr "Havza"
+
+#: ../rules/base.xml.in.h:282
+msgid "Hewlett-Packard Internet Keyboard"
+msgstr "Hewlett-Packard Ä°nternet Klavyesi"
+
+#: ../rules/base.xml.in.h:283
+msgid "Hewlett-Packard Mini 110 Notebook"
+msgstr "Hewlett-Packard Mini 110 Tizüstü"
+
+#: ../rules/base.xml.in.h:284
+msgid "Hewlett-Packard Omnibook 500 FA"
+msgstr "Hewlett-Packard Omnibook 500 FA"
+
+#: ../rules/base.xml.in.h:285
+msgid "Hewlett-Packard Omnibook 5xx"
+msgstr "Hewlett-Packard Omnibook 5xx"
+
+#: ../rules/base.xml.in.h:286
+msgid "Hewlett-Packard Omnibook 6000/6100"
+msgstr "Hewlett-Packard Omnibook 6000/6100"
+
+#: ../rules/base.xml.in.h:287
+msgid "Hewlett-Packard Omnibook XE3 GC"
+msgstr "Hewlett-Packard Omnibook XE3 GC"
+
+#: ../rules/base.xml.in.h:288
+msgid "Hewlett-Packard Omnibook XE3 GF"
+msgstr "Hewlett-Packard Omnibook XE3 GF"
+
+#: ../rules/base.xml.in.h:289
+msgid "Hewlett-Packard Omnibook XT1000"
+msgstr "Hewlett-Packard Omnibook XT1000"
+
+#: ../rules/base.xml.in.h:290
+msgid "Hewlett-Packard Pavilion ZT11xx"
+msgstr "Hewlett-Packard Pavilion ZT11xx"
+
+#: ../rules/base.xml.in.h:291
+msgid "Hewlett-Packard Pavilion dv5"
+msgstr "Hewlett-Packard Pavilion dv5"
+
+#: ../rules/base.xml.in.h:292
+msgid "Hewlett-Packard SK-250x Multimedia Keyboard"
+msgstr "Hewlett-Packard SK-250x Çoqluvasat Klavyesi"
+
+#: ../rules/base.xml.in.h:293
+msgid "Hewlett-Packard nx9020"
+msgstr "Hewlett-Packard nx9020"
+
+# tüklü
+#: ../rules/base.xml.in.h:294
+msgid "Hexadecimal"
+msgstr "Onaltıdalıq"
+
+#: ../rules/base.xml.in.h:295
+msgid "Hindi Bolnagri"
+msgstr "Hindce Bolnagri"
+
+#: ../rules/base.xml.in.h:296
+msgid "Hindi Wx"
+msgstr "Hindce Wx"
+
+#: ../rules/base.xml.in.h:297
+msgid "Homophonic"
+msgstr "DavuÅŸtaÅŸ (Homophonic)"
+
+#: ../rules/base.xml.in.h:298
+msgid "Honeywell Euroboard"
+msgstr "Honeywell Euroboard"
+
+#: ../rules/base.xml.in.h:299
+msgid "Hrv"
+msgstr "Hrv"
+
+#: ../rules/base.xml.in.h:300
+msgid "Hun"
+msgstr "Mcr"
+
+#: ../rules/base.xml.in.h:301
+msgid "Hungary"
+msgstr "Macaristan"
+
+#: ../rules/base.xml.in.h:302
+msgid "Hyper is mapped to Win-keys"
+msgstr "Hyper, Pencereler-tuşlarına (Win) haritalandırılır"
+
+#: ../rules/base.xml.in.h:303
+msgid "IBM (LST 1205-92)"
+msgstr "IBM (LST 1205-92)"
+
+#: ../rules/base.xml.in.h:304
+msgid "IBM Rapid Access"
+msgstr "IBM Hızlı Erişim"
+
+#: ../rules/base.xml.in.h:305
+msgid "IBM Rapid Access II"
+msgstr "IBM Hızlı Erişim II"
+
+#: ../rules/base.xml.in.h:306
+msgid "IBM Space Saver"
+msgstr "IBM Feza Saqlayıcı (Space Saver)"
+
+#: ../rules/base.xml.in.h:307
+msgid "IBM ThinkPad 560Z/600/600E/A22E"
+msgstr "IBM ThinkPad 560Z/600/600E/A22E"
+
+#: ../rules/base.xml.in.h:308
+msgid "IBM ThinkPad R60/T60/R61/T61"
+msgstr "IBM ThinkPad R60/T60/R61/T61"
+
+#: ../rules/base.xml.in.h:309
+msgid "IBM ThinkPad Z60m/Z60t/Z61m/Z61t"
+msgstr "IBM ThinkPad Z60m/Z60t/Z61m/Z61t"
+
+#: ../rules/base.xml.in.h:310
+msgid "ISO Alternate"
+msgstr "ISO diÄŸer"
+
+#: ../rules/base.xml.in.h:311
+msgid "Iceland"
+msgstr "Ä°zlanda"
+
+#: ../rules/base.xml.in.h:312
+msgid "Igbo"
+msgstr "Igbo"
+
+#: ../rules/base.xml.in.h:313
+msgid "Include dead tilde"
+msgstr "Ölü tildeni kirset"
+
+#: ../rules/base.xml.in.h:314
+msgid "Ind"
+msgstr "Ind"
+
+#: ../rules/base.xml.in.h:315
+msgid "India"
+msgstr "Hindistan"
+
+#: ../rules/base.xml.in.h:316
+msgid "International (AltGr dead keys)"
+msgstr "Milletlerara (AltGr ölü tuşlarınen)"
+
+#: ../rules/base.xml.in.h:317
+msgid "International (with dead keys)"
+msgstr "Milletlerara (ölü tuşlarnen)"
+
+#: ../rules/base.xml.in.h:318
+msgid "Inuktitut"
+msgstr "Inuktitut"
+
+#: ../rules/base.xml.in.h:319
+msgid "Iran"
+msgstr "Ä°ran"
+
+#: ../rules/base.xml.in.h:320
+msgid "Iraq"
+msgstr "Irak"
+
+#: ../rules/base.xml.in.h:321
+msgid "Ireland"
+msgstr "Ä°rlanda"
+
+#: ../rules/base.xml.in.h:322
+msgid "Irl"
+msgstr "Ä°rl"
+
+#: ../rules/base.xml.in.h:323
+msgid "Irn"
+msgstr "Irn"
+
+#: ../rules/base.xml.in.h:324
+msgid "Irq"
+msgstr "Irk"
+
+#: ../rules/base.xml.in.h:325
+msgid "Isl"
+msgstr "Izl"
+
+#: ../rules/base.xml.in.h:326
+msgid "Isr"
+msgstr "Ä°br"
+
+#: ../rules/base.xml.in.h:327
+msgid "Israel"
+msgstr "Ä°srail"
+
+#: ../rules/base.xml.in.h:328
+msgid "Ita"
+msgstr "Ä°ta"
+
+#: ../rules/base.xml.in.h:329
+msgid "Italy"
+msgstr "Ä°talya"
+
+#: ../rules/base.xml.in.h:330
+msgid "Japan"
+msgstr "Japonya"
+
+#: ../rules/base.xml.in.h:331
+msgid "Japan (PC-98xx Series)"
+msgstr "Japon (PC-98xx Series)"
+
+#: ../rules/base.xml.in.h:332
+msgid "Japanese keyboard options"
+msgstr "Japonca klavye ihtiyariyatı"
+
+#: ../rules/base.xml.in.h:333
+msgid "Jpn"
+msgstr "Jpn"
+
+#: ../rules/base.xml.in.h:334
+msgid "Kalmyk"
+msgstr "Qalmıqça"
+
+#: ../rules/base.xml.in.h:335
+msgid "Kana"
+msgstr "Kana"
+
+#: ../rules/base.xml.in.h:336
+msgid "Kana Lock key is locking"
+msgstr "Kana Lock tuÅŸu kilitler"
+
+#: ../rules/base.xml.in.h:337
+msgid "Kannada"
+msgstr "Güney Hint dili"
+
+#: ../rules/base.xml.in.h:338
+msgid "Kashubian"
+msgstr "Kaşubyalı"
+
+#: ../rules/base.xml.in.h:339
+msgid "Kaz"
+msgstr "Kaz"
+
+#: ../rules/base.xml.in.h:340
+msgid "Kazakh with Russian"
+msgstr "Kazak (rus)"
+
+#: ../rules/base.xml.in.h:341
+msgid "Kazakhstan"
+msgstr "Kazakistan"
+
+# # tüklü
+#: ../rules/base.xml.in.h:342
+msgid "Key sequence to kill the X server"
+msgstr "X sunucısını öldürmek içün tuş silsilesi"
+
+#: ../rules/base.xml.in.h:343
+msgid "Key to choose 3rd level"
+msgstr "3. seviyeni saylaycaq tuÅŸ"
+
+#: ../rules/base.xml.in.h:344
+msgid "Key(s) to change layout"
+msgstr "Tizilimni deñiştirecek tuş(lar)"
+
+#: ../rules/base.xml.in.h:345
+msgid "Keytronic FlexPro"
+msgstr "Keytronic FlexPro"
+
+#: ../rules/base.xml.in.h:346
+msgid "Kgz"
+msgstr "Kgz"
+
+#: ../rules/base.xml.in.h:347
+msgid "Khm"
+msgstr "Kım"
+
+#: ../rules/base.xml.in.h:348
+msgid "Komi"
+msgstr "Komice"
+
+#: ../rules/base.xml.in.h:349
+msgid "Kor"
+msgstr "Kor"
+
+#: ../rules/base.xml.in.h:350
+msgid "Korea, Republic of"
+msgstr "Kore Cumhuriyeti"
+
+# tüklü
+#: ../rules/base.xml.in.h:351
+msgid "Ktunaxa"
+msgstr "Ktunaxa"
+
+#: ../rules/base.xml.in.h:352
+msgid "Kurdish, (F)"
+msgstr "Kürtçe (Türkçe F klavye)"
+
+#: ../rules/base.xml.in.h:353
+msgid "Kurdish, Arabic-Latin"
+msgstr "Kürtçe (Arapça-Latin)"
+
+#: ../rules/base.xml.in.h:354
+msgid "Kurdish, Latin Alt-Q"
+msgstr "Kürtçe (Türkçe Alt-Q klavye)"
+
+#: ../rules/base.xml.in.h:355
+msgid "Kurdish, Latin Q"
+msgstr "Kürtçe (Türkçe Q klavye)"
+
+#: ../rules/base.xml.in.h:356
+msgid "Kyrgyzstan"
+msgstr "Kırgızistan"
+
+#: ../rules/base.xml.in.h:357
+msgid "LAm"
+msgstr "LAm"
+
+# tüklü
+#: ../rules/base.xml.in.h:358
+msgid "LEKP"
+msgstr "LEKP"
+
+#: ../rules/base.xml.in.h:359
+msgid "LEKPa"
+msgstr "LEKPa"
+
+#: ../rules/base.xml.in.h:360
+msgid "Lao"
+msgstr "Lao"
+
+#: ../rules/base.xml.in.h:361
+msgid "Laos"
+msgstr "Laos"
+
+#: ../rules/base.xml.in.h:362
+msgid "Laptop/notebook Compaq (eg. Armada) Laptop Keyboard"
+msgstr "Tizüstü/defter Compaq (örn. Armada) Tizüstü Klavyesi"
+
+#: ../rules/base.xml.in.h:363
+msgid "Laptop/notebook Compaq (eg. Presario) Internet Keyboard"
+msgstr "Tizüstü/defter Compaq (örn. Presario) İnternet Klavyesi"
+
+#: ../rules/base.xml.in.h:364
+msgid "Laptop/notebook eMachines m68xx"
+msgstr "Tizüstü/defter eMachines m68xx"
+
+#: ../rules/base.xml.in.h:365
+msgid "Latin"
+msgstr "Latin"
+
+#: ../rules/base.xml.in.h:366
+msgid "Latin American"
+msgstr "Latin Amerikan"
+
+#: ../rules/base.xml.in.h:367
+msgid "Latin Unicode"
+msgstr "Latin Unicode"
+
+#: ../rules/base.xml.in.h:368
+msgid "Latin Unicode qwerty"
+msgstr "Latin Unicode qwerty"
+
+#: ../rules/base.xml.in.h:369
+msgid "Latin qwerty"
+msgstr "Latin qwerty"
+
+#: ../rules/base.xml.in.h:370
+msgid "Latin unicode"
+msgstr "Latin unikod"
+
+#: ../rules/base.xml.in.h:371
+msgid "Latin unicode qwerty"
+msgstr "Latin unikod qwerty"
+
+#: ../rules/base.xml.in.h:372
+msgid "Latin with guillemets"
+msgstr "Açılı ayraçlarla Latin"
+
+#: ../rules/base.xml.in.h:373
+msgid "Latvia"
+msgstr "Letonya"
+
+#: ../rules/base.xml.in.h:374
+msgid "Lav"
+msgstr "Lav"
+
+#: ../rules/base.xml.in.h:375
+msgid "Left Alt"
+msgstr "Sol Alt"
+
+#: ../rules/base.xml.in.h:376
+msgid "Left Alt (while pressed)"
+msgstr "Sol Alt tuşu (basıq olğanda)"
+
+#: ../rules/base.xml.in.h:377
+msgid "Left Alt is swapped with Left Win"
+msgstr "Sol Alt tuşu, sol Pencereler (Win) tuşunen almaştırılır"
+
+#: ../rules/base.xml.in.h:378
+msgid "Left Ctrl"
+msgstr "Sol Ctrl"
+
+#: ../rules/base.xml.in.h:379
+msgid "Left Ctrl (to first layout), Right Ctrl (to last layout)"
+msgstr "Sol Ctrl (birinci tizilimge almaştırır), Oñ Ctrl (soñkisine)"
+
+#: ../rules/base.xml.in.h:380
+msgid "Left Ctrl+Left Shift"
+msgstr "Sol Ctrl+Sol Shift"
+
+#: ../rules/base.xml.in.h:381
+msgid "Left Shift"
+msgstr "Sol Shift"
+
+#: ../rules/base.xml.in.h:382
+msgid "Left Win"
+msgstr "Sol Win"
+
+#: ../rules/base.xml.in.h:383
+msgid "Left Win (to first layout), Right Win/Menu (to last layout)"
+msgstr "Sol Pencereler (Win) (birinci tizilimge almaştırır), Sağ Pencereler/Menü (soñkisine)"
+
+#: ../rules/base.xml.in.h:384
+msgid "Left Win (while pressed)"
+msgstr "Sol Pencereler (Win) tuşu (basıq olğanda)"
+
+#: ../rules/base.xml.in.h:385
+msgid "Left hand"
+msgstr "Solak"
+
+#: ../rules/base.xml.in.h:386
+msgid "Left handed Dvorak"
+msgstr "Solak Dvorak"
+
+#: ../rules/base.xml.in.h:387
+msgid "Legacy"
+msgstr "Qadim"
+
+#: ../rules/base.xml.in.h:388
+msgid "Legacy Wang 724"
+msgstr "Qadim Wang 724"
+
+#. Actually, with KP_SEPARATOR, as the old keypad(comma)
+#: ../rules/base.xml.in.h:390
+msgid "Legacy key with comma"
+msgstr "Virgülnen qadim tuş"
+
+#: ../rules/base.xml.in.h:391
+msgid "Legacy key with dot"
+msgstr "Noqtanen qadim tuÅŸ"
+
+#: ../rules/base.xml.in.h:392
+msgid "Less-than/Greater-than"
+msgstr "Daa kiçik/Daa büyük"
+
+#: ../rules/base.xml.in.h:393
+msgid "Lithuania"
+msgstr "Litvanya"
+
+#: ../rules/base.xml.in.h:394
+msgid "Logitech Access Keyboard"
+msgstr "Logitech Access Keyboard"
+
+#: ../rules/base.xml.in.h:395
+msgid "Logitech Cordless Desktop"
+msgstr "Logitech Kabelsiz Masaüstü"
+
+# tüklü
+#: ../rules/base.xml.in.h:396
+msgid "Logitech Cordless Desktop (alternate option)"
+msgstr "Logitech Kabelsiz Masaüstü (alternativ ihtiyariyat)"
+
+#: ../rules/base.xml.in.h:397
+msgid "Logitech Cordless Desktop EX110"
+msgstr "Logitech Kabelsiz Masaüstü EX110"
+
+#: ../rules/base.xml.in.h:398
+msgid "Logitech Cordless Desktop LX-300"
+msgstr "Logitech Kablosuz Masaüstü LX-300"
+
+#: ../rules/base.xml.in.h:399
+msgid "Logitech Cordless Desktop Navigator"
+msgstr "Logitech Kablosuz Masaüstü Yürsetici"
+
+#: ../rules/base.xml.in.h:400
+msgid "Logitech Cordless Desktop Optical"
+msgstr "Logitech Kablosuz Masaüstü Optik"
+
+#: ../rules/base.xml.in.h:401
+msgid "Logitech Cordless Desktop Pro (alternate option 2)"
+msgstr "Logitech Kabelsiz Masaüstü Pro (almaşıq ihtiyar 2)"
+
+#: ../rules/base.xml.in.h:402
+msgid "Logitech Cordless Desktop iTouch"
+msgstr "Logitech Kablosuz Masaüstü iTouch"
+
+#: ../rules/base.xml.in.h:403
+msgid "Logitech Cordless Freedom/Desktop Navigator"
+msgstr "Logitech Kablosuz Özgür/Masaüstü Yürsetici"
+
+#: ../rules/base.xml.in.h:404
+msgid "Logitech G15 extra keys via G15daemon"
+msgstr "Logitech G15, G15daemon üzerinden ek tuşlu"
+
+#: ../rules/base.xml.in.h:405
+msgid "Logitech Generic Keyboard"
+msgstr "Logitech Umumiy Klavyesi"
+
+#: ../rules/base.xml.in.h:406
+msgid "Logitech Internet 350 Keyboard"
+msgstr "Logitech Ä°nternet 350 Klavyesi"
+
+#: ../rules/base.xml.in.h:407
+msgid "Logitech Internet Keyboard"
+msgstr "Logitech Ä°nternet Klavyesi"
+
+#: ../rules/base.xml.in.h:408
+msgid "Logitech Internet Navigator Keyboard"
+msgstr "Logitech İnternet Yürsetici Klavyesi"
+
+#: ../rules/base.xml.in.h:409
+msgid "Logitech Media Elite Keyboard"
+msgstr "Logitech Vasta Elit Klavye"
+
+#: ../rules/base.xml.in.h:410
+msgid "Logitech Ultra-X Cordless Media Desktop Keyboard"
+msgstr "Logitech Ultra-X Kabelsiz Vasta Masaüstü Klavyesi"
+
+#: ../rules/base.xml.in.h:411
+msgid "Logitech Ultra-X Keyboard"
+msgstr "Logitech Ultra-X Keyboard"
+
+#: ../rules/base.xml.in.h:412
+msgid "Logitech diNovo Edge Keyboard"
+msgstr "Logitech diNovo Edge Klavyesi"
+
+#: ../rules/base.xml.in.h:413
+msgid "Logitech diNovo Keyboard"
+msgstr "Logitech Access Klavye"
+
+#: ../rules/base.xml.in.h:414
+msgid "Logitech iTouch"
+msgstr "Logitech iTouch"
+
+#: ../rules/base.xml.in.h:415
+msgid "Logitech iTouch Cordless Keyboard (model Y-RB6)"
+msgstr "Logitech iTouch Kablosuz Klavyesi (model Y-RB6)"
+
+#: ../rules/base.xml.in.h:416
+msgid "Logitech iTouch Internet Navigator Keyboard SE"
+msgstr "Logitech iTouch İnternet Yürsetici Klavyesi SE"
+
+#: ../rules/base.xml.in.h:417
+msgid "Logitech iTouch Internet Navigator Keyboard SE (USB)"
+msgstr "Logitech iTouch İnternet Yürsetici Klavyesi SE (USB)"
+
+# tüklü
+#: ../rules/base.xml.in.h:418
+msgid "Lower Sorbian"
+msgstr "Alt Sorbian"
+
+#: ../rules/base.xml.in.h:419
+msgid "Lower Sorbian (qwertz)"
+msgstr "Alt Sorbian (qwertz)"
+
+#: ../rules/base.xml.in.h:420
+msgid "Ltu"
+msgstr "Ltu"
+
+#: ../rules/base.xml.in.h:421
+msgid "MESS"
+msgstr "MESS"
+
+# tüklü
+#: ../rules/base.xml.in.h:422
+msgid "MNE"
+msgstr "MNE"
+
+#: ../rules/base.xml.in.h:423
+msgid "MacBook/MacBook Pro"
+msgstr "MacBook/MacBook Pro"
+
+#: ../rules/base.xml.in.h:424
+msgid "MacBook/MacBook Pro (Intl)"
+msgstr "MacBook/MacBook Pro (Milletlerara)"
+
+#: ../rules/base.xml.in.h:425
+msgid "Macedonia"
+msgstr "Makedonya"
+
+#: ../rules/base.xml.in.h:426
+msgid "Macintosh"
+msgstr "Macintosh"
+
+#: ../rules/base.xml.in.h:427
+msgid "Macintosh Old"
+msgstr "Eski Macintosh"
+
+#: ../rules/base.xml.in.h:428
+msgid "Macintosh, Sun dead keys"
+msgstr "Makintoş, Sun ölü tuşlar"
+
+#: ../rules/base.xml.in.h:429
+msgid "Macintosh, eliminate dead keys"
+msgstr "Makintoş, ölü tuşsuz"
+
+#: ../rules/base.xml.in.h:430
+msgid "Make CapsLock an additional Backspace"
+msgstr "CapsLock tuşunı ek bir Kerisilme (Backspace) yap"
+
+#: ../rules/base.xml.in.h:431
+msgid "Make CapsLock an additional Ctrl"
+msgstr "CapsLock tuşunı ek bir Ctrl yap"
+
+#: ../rules/base.xml.in.h:432
+msgid "Make CapsLock an additional ESC"
+msgstr "CapsLock tuşunı ek bir ESC yap"
+
+#: ../rules/base.xml.in.h:433
+msgid "Make CapsLock an additional Hyper"
+msgstr "CapsLock tuşunı ek bir Hiper yap"
+
+#: ../rules/base.xml.in.h:434
+msgid "Make CapsLock an additional NumLock"
+msgstr "CapsLock tuşunı ek bir NumLock yap"
+
+#: ../rules/base.xml.in.h:435
+msgid "Make CapsLock an additional Super"
+msgstr "CapsLock tuşunı ek bir Süper yap"
+
+#: ../rules/base.xml.in.h:436
+msgid "Mal"
+msgstr "Mal"
+
+#: ../rules/base.xml.in.h:437
+msgid "Malayalam"
+msgstr "Malayalam tili"
+
+#: ../rules/base.xml.in.h:438
+msgid "Malayalam Lalitha"
+msgstr "Malayalam Lalitha tili"
+
+#: ../rules/base.xml.in.h:439
+msgid "Maldives"
+msgstr "Maldivler"
+
+#: ../rules/base.xml.in.h:440
+msgid "Malta"
+msgstr "Malta"
+
+#: ../rules/base.xml.in.h:441
+msgid "Maltese keyboard with US layout"
+msgstr "Ameriken yerleşimli Maltız klavyesi"
+
+#: ../rules/base.xml.in.h:442
+msgid "Mao"
+msgstr "Mao"
+
+#: ../rules/base.xml.in.h:443
+msgid "Maori"
+msgstr "Mayorka"
+
+#: ../rules/base.xml.in.h:444
+msgid "Memorex MX1998"
+msgstr "Memorex MX1998"
+
+#: ../rules/base.xml.in.h:445
+msgid "Memorex MX2500 EZ-Access Keyboard"
+msgstr "Memorex MX2500 EZ EriÅŸim Klavyesi"
+
+#: ../rules/base.xml.in.h:446
+msgid "Memorex MX2750"
+msgstr "Memorex MX2750"
+
+#: ../rules/base.xml.in.h:447
+msgid "Menu"
+msgstr "Menü"
+
+#: ../rules/base.xml.in.h:448
+msgid "Meta is mapped to Left Win"
+msgstr "Meta, sol Pencereler tuşuna (Win) haritalandırılır"
+
+#: ../rules/base.xml.in.h:449
+msgid "Meta is mapped to Win keys"
+msgstr "Meta, Pencereler tuşlarına (Win) haritalandırılır"
+
+#: ../rules/base.xml.in.h:450
+msgid "Microsoft Comfort Curve Keyboard 2000"
+msgstr "Microsoft Comfort Curve Keyboard 2000"
+
+#: ../rules/base.xml.in.h:451
+msgid "Microsoft Internet Keyboard"
+msgstr "Microsoft Ä°nternet Klavyesi"
+
+#: ../rules/base.xml.in.h:452
+msgid "Microsoft Internet Keyboard Pro, Swedish"
+msgstr "Microsoft İnternet Klavyesi Pro, İsveçce"
+
+#: ../rules/base.xml.in.h:453
+msgid "Microsoft Natural"
+msgstr "Microsoft Basit"
+
+#: ../rules/base.xml.in.h:454
+msgid "Microsoft Natural Keyboard Elite"
+msgstr "Microsoft Tabiiy Klavye Elit"
+
+#: ../rules/base.xml.in.h:455
+msgid "Microsoft Natural Keyboard Pro / Microsoft Internet Keyboard Pro"
+msgstr "Microsoft Basit Klavye Pro / Microsoft Ä°nternet Klavyesi Pro"
+
+#: ../rules/base.xml.in.h:456
+msgid "Microsoft Natural Keyboard Pro OEM"
+msgstr "Microsoft Basit Klavye Pro OEM"
+
+#: ../rules/base.xml.in.h:457
+msgid "Microsoft Natural Keyboard Pro USB / Microsoft Internet Keyboard Pro"
+msgstr "Microsoft Natural Keyboard Pro USB / Microsoft Internet Keyboard Pro"
+
+#: ../rules/base.xml.in.h:458
+msgid "Microsoft Natural Wireless Ergonomic Keyboard 7000"
+msgstr "Microsoft Tabiiy Telsiz Ergonomik Klavye 7000"
+
+#: ../rules/base.xml.in.h:459
+msgid "Microsoft Office Keyboard"
+msgstr "Microsoft Ofis Klavyesi"
+
+#: ../rules/base.xml.in.h:460
+msgid "Microsoft Wireless Multimedia Keyboard 1.0A"
+msgstr "Microsoft Wireless Multimedia Keyboard 1.0A"
+
+#: ../rules/base.xml.in.h:461
+msgid "Miscellaneous compatibility options"
+msgstr "Müteferriq telif qabiliyeti ihtiyariyatı"
+
+#: ../rules/base.xml.in.h:462
+msgid "Mkd"
+msgstr "Mkd"
+
+#: ../rules/base.xml.in.h:463
+msgid "Mlt"
+msgstr "Mlt"
+
+#: ../rules/base.xml.in.h:464
+msgid "Mmr"
+msgstr "Mmr"
+
+#: ../rules/base.xml.in.h:465
+msgid "Mng"
+msgstr "MoÄŸ"
+
+#: ../rules/base.xml.in.h:466
+msgid "Mongolia"
+msgstr "MoÄŸolistan"
+
+#: ../rules/base.xml.in.h:467
+msgid "Montenegro"
+msgstr "QaradaÄŸ"
+
+#: ../rules/base.xml.in.h:468
+msgid "Morocco"
+msgstr "Fas"
+
+#: ../rules/base.xml.in.h:469
+msgid "Multilingual"
+msgstr "Çokdilli"
+
+#: ../rules/base.xml.in.h:470
+msgid "Multilingual, first part"
+msgstr "Çokdilli, ilk bölüm"
+
+#: ../rules/base.xml.in.h:471
+msgid "Multilingual, second part"
+msgstr "Çokdilli, ikinci bölüm"
+
+#: ../rules/base.xml.in.h:472
+msgid "Myanmar"
+msgstr "Miyanmar"
+
+#: ../rules/base.xml.in.h:473
+msgid "NICOLA-F style Backspace"
+msgstr "NICOLA-F uslûbı Kerisilme"
+
+#: ../rules/base.xml.in.h:474
+msgid "NLA"
+msgstr "NLA"
+
+# tüklü
+#: ../rules/base.xml.in.h:475
+msgid "Nativo"
+msgstr "Nativo"
+
+#: ../rules/base.xml.in.h:476
+msgid "Nativo for Esperanto"
+msgstr "Esperanto içün Nativo"
+
+#: ../rules/base.xml.in.h:477
+msgid "Nativo for USA keyboards"
+msgstr "AQŞ klavyeleri içün Nativo"
+
+#: ../rules/base.xml.in.h:478
+msgid "Neo 2"
+msgstr "Neo 2"
+
+#: ../rules/base.xml.in.h:479
+msgid "Nep"
+msgstr "Nep"
+
+#: ../rules/base.xml.in.h:480
+msgid "Nepal"
+msgstr "Nepal"
+
+#: ../rules/base.xml.in.h:481
+msgid "Netherlands"
+msgstr "Hollanda"
+
+#: ../rules/base.xml.in.h:482
+msgid "New phonetic"
+msgstr "Yañı fonetik"
+
+#: ../rules/base.xml.in.h:483
+msgid "Nig"
+msgstr "Nij"
+
+#: ../rules/base.xml.in.h:484
+msgid "Nigeria"
+msgstr "Nijerya"
+
+#: ../rules/base.xml.in.h:485
+msgid "Nld"
+msgstr "Hol"
+
+#: ../rules/base.xml.in.h:486
+msgid "Non-breakable space character at fourth level"
+msgstr "Dördünci seviyede qırılalmaz boşluq remzi"
+
+#: ../rules/base.xml.in.h:487
+msgid "Non-breakable space character at fourth level, thin non-breakable space character at sixth level"
+msgstr "Dördünci seviyede qırılalmaz boşluq remzi, altıncı seviyede ise ince qırılalmaz boşluq remzi"
+
+#: ../rules/base.xml.in.h:488
+msgid "Non-breakable space character at fourth level, thin non-breakable space character at sixth level (via Ctrl+Shift)"
+msgstr "Dördünci seviyede qırılalmaz boşluq remzi, altıncı seviyede ise ince qırılalmaz boşluq remzi (Ctrl+Shift vastasınen)"
+
+#: ../rules/base.xml.in.h:489
+msgid "Non-breakable space character at second level"
+msgstr "Ekinci seviyede qırılalmaz boşluq remzi"
+
+#: ../rules/base.xml.in.h:490
+msgid "Non-breakable space character at third level"
+msgstr "Üçünci seviyede qırılalmaz boşluq remzi"
+
+#: ../rules/base.xml.in.h:491
+msgid "Non-breakable space character at third level, nothing at fourth level"
+msgstr "Üçünci seviyede qırılalmaz boşluq remzi, dördünci seviyede iç bir şey"
+
+#: ../rules/base.xml.in.h:492
+msgid "Non-breakable space character at third level, thin non-breakable space character at fourth level"
+msgstr "Dördünci seviyede qırılalmaz boşluq remzi, dördünci seviyede ise ince qırılalmaz boşluq remzi"
+
+#: ../rules/base.xml.in.h:493
+msgid "Nor"
+msgstr "Nor"
+
+#: ../rules/base.xml.in.h:494
+msgid "Northern Saami"
+msgstr "Kuzey Sami"
+
+#: ../rules/base.xml.in.h:495
+msgid "Northern Saami, eliminate dead keys"
+msgstr "Kuzey Sami, ölü tuşsuz"
+
+#: ../rules/base.xml.in.h:496
+msgid "Northgate OmniKey 101"
+msgstr "Northgate OmniKey 101"
+
+#: ../rules/base.xml.in.h:497
+msgid "Norway"
+msgstr "Norveç"
+
+# tüklü
+#: ../rules/base.xml.in.h:498
+msgid "NumLock"
+msgstr "NumLock"
+
+#: ../rules/base.xml.in.h:499
+msgid "Numeric keypad delete key behaviour"
+msgstr "Sayısal tuştaqımı sil tuşu davranışı"
+
+#: ../rules/base.xml.in.h:500
+msgid "Numeric keypad keys work as with Mac"
+msgstr "Sayısal tuştaqımı tuşları Mac ile olğanı kibi çalışır"
+
+#: ../rules/base.xml.in.h:501
+msgid "Numeric keypad layout selection"
+msgstr "Sayısal tuştaqımı tizilimi saylamı"
+
+#: ../rules/base.xml.in.h:502
+msgid "OADG 109A"
+msgstr "OADG 109A"
+
+#: ../rules/base.xml.in.h:503
+msgid "OLPC"
+msgstr "Bala Başına Bir Tizüstü (BBBT; OLPC)"
+
+#: ../rules/base.xml.in.h:504
+msgid "OLPC Dari"
+msgstr "OLPC Dari"
+
+#: ../rules/base.xml.in.h:505
+msgid "OLPC Pashto"
+msgstr "OLPC PaÅŸto"
+
+#: ../rules/base.xml.in.h:506
+msgid "OLPC Southern Uzbek"
+msgstr "OLPC Cenübiy Özbekçe"
+
+#: ../rules/base.xml.in.h:507
+msgid "Occitan"
+msgstr "Occitan"
+
+#: ../rules/base.xml.in.h:508
+msgid "Ogham"
+msgstr "Ogham"
+
+#: ../rules/base.xml.in.h:509
+msgid "Ogham IS434"
+msgstr "Ogham IS434"
+
+#: ../rules/base.xml.in.h:510
+msgid "Oriya"
+msgstr "Orissa dili"
+
+#: ../rules/base.xml.in.h:511
+msgid "Ortek MCK-800 MM/Internet keyboard"
+msgstr "Oretec MCK-800 MM/Ä°nternet Klavyesi"
+
+#: ../rules/base.xml.in.h:512
+msgid "Ossetian"
+msgstr "Osetçe"
+
+#: ../rules/base.xml.in.h:513
+msgid "Ossetian, Winkeys"
+msgstr "Osetçe, Win-tuşları"
+
+#: ../rules/base.xml.in.h:514
+msgid "Ossetian, legacy"
+msgstr "Osetçe, qadim"
+
+#: ../rules/base.xml.in.h:515
+msgid "PC-98xx Series"
+msgstr "PC-98xx Serisi"
+
+#: ../rules/base.xml.in.h:516
+msgid "Pak"
+msgstr "Pak"
+
+#: ../rules/base.xml.in.h:517
+msgid "Pakistan"
+msgstr "Pakistan"
+
+#: ../rules/base.xml.in.h:518
+msgid "Pashto"
+msgstr "PaÅŸto"
+
+#: ../rules/base.xml.in.h:519
+msgid "Pattachote"
+msgstr "Pataküte"
+
+#: ../rules/base.xml.in.h:520
+msgid "Persian, with Persian Keypad"
+msgstr "Farsça, Farsça tuştaqımı ile"
+
+#: ../rules/base.xml.in.h:521
+msgid "Phonetic"
+msgstr "Fonetik"
+
+#: ../rules/base.xml.in.h:522
+msgid "Phonetic Winkeys"
+msgstr "Fonetik, Win-tuşları"
+
+#: ../rules/base.xml.in.h:523
+msgid "Pol"
+msgstr "Pol"
+
+#: ../rules/base.xml.in.h:524
+msgid "Poland"
+msgstr "Polonya"
+
+#: ../rules/base.xml.in.h:525
+msgid "Polytonic"
+msgstr "Politonik"
+
+#: ../rules/base.xml.in.h:526
+msgid "Portugal"
+msgstr "Portekiz"
+
+#: ../rules/base.xml.in.h:527
+msgid "Probhat"
+msgstr "Probat"
+
+#: ../rules/base.xml.in.h:528
+msgid "Programmer Dvorak"
+msgstr "Programcı Dvorak"
+
+#: ../rules/base.xml.in.h:529
+msgid "Propeller Voyager (KTEZ-1000)"
+msgstr "Propeller Voyager (KTEZ-1000)"
+
+#: ../rules/base.xml.in.h:530
+msgid "Prt"
+msgstr "Prt"
+
+#: ../rules/base.xml.in.h:531
+msgid "QTronix Scorpius 98N+"
+msgstr "QTronix Scorpius 98N+"
+
+#: ../rules/base.xml.in.h:532
+msgid "Right Alt"
+msgstr "SaÄŸ Alt"
+
+#: ../rules/base.xml.in.h:533
+msgid "Right Alt (while pressed)"
+msgstr "Sağ Alt (basıq olğanda)"
+
+#: ../rules/base.xml.in.h:534
+msgid "Right Alt key never chooses 3rd level"
+msgstr "SaÄŸ Alt tuÅŸu 3. seviyeni asla saylamaz"
+
+#: ../rules/base.xml.in.h:535
+msgid "Right Alt, Shift+Right Alt key is Multi_Key"
+msgstr "Sağ Alt, Shift+Sağ Alt tuşu ise Çoqlu_Tuştır (Multi_Key)"
+
+#: ../rules/base.xml.in.h:536
+msgid "Right Ctrl"
+msgstr "SaÄŸ Ctrl"
+
+#: ../rules/base.xml.in.h:537
+msgid "Right Ctrl (while pressed)"
+msgstr "Sağ Ctrl (basıq olğanda)"
+
+#: ../rules/base.xml.in.h:538
+msgid "Right Ctrl as Right Alt"
+msgstr "Sağ Ctrl tuşu Sağ Alt'tır"
+
+#: ../rules/base.xml.in.h:539
+msgid "Right Ctrl+Right Shift"
+msgstr "Oñ Ctrl+Oñ Shift"
+
+#: ../rules/base.xml.in.h:540
+msgid "Right Shift"
+msgstr "SaÄŸ Shift"
+
+#: ../rules/base.xml.in.h:541
+msgid "Right Win"
+msgstr "SaÄŸ Pencereler (Win)"
+
+#: ../rules/base.xml.in.h:542
+msgid "Right Win (while pressed)"
+msgstr "Sağ Pencereler (Win) (basıq olğanda)"
+
+#: ../rules/base.xml.in.h:543
+msgid "Right hand"
+msgstr "SaÄŸ el"
+
+#: ../rules/base.xml.in.h:544
+msgid "Right handed Dvorak"
+msgstr "Oñaqay Dvorak"
+
+#: ../rules/base.xml.in.h:545
+msgid "Romania"
+msgstr "Romaniya"
+
+#: ../rules/base.xml.in.h:546
+msgid "Romanian keyboard with German letters"
+msgstr "Alman harfleriyle Romanya klavyesi"
+
+#: ../rules/base.xml.in.h:547
+msgid "Romanian keyboard with German letters, eliminate dead keys"
+msgstr "Alman harfleriyle Romanya klavyesi, ölü tuşsuz"
+
+#: ../rules/base.xml.in.h:548
+msgid "Rou"
+msgstr "Rou"
+
+#: ../rules/base.xml.in.h:549
+msgid "Rus"
+msgstr "Rus"
+
+#: ../rules/base.xml.in.h:550
+msgid "Russia"
+msgstr "Rusiye"
+
+#: ../rules/base.xml.in.h:551
+msgid "Russian"
+msgstr "Rusça"
+
+#: ../rules/base.xml.in.h:552
+msgid "Russian phonetic"
+msgstr "Rusça fonetik"
+
+#: ../rules/base.xml.in.h:553
+msgid "Russian phonetic Dvorak"
+msgstr "Rusça fonetik Dvorak"
+
+#: ../rules/base.xml.in.h:554
+msgid "Russian phonetic, eliminate dead keys"
+msgstr "Rusça fonetik, ölü tuşsuz"
+
+#: ../rules/base.xml.in.h:555
+msgid "Russian with Kazakh"
+msgstr "Rusça (kazak)"
+
+#: ../rules/base.xml.in.h:556
+msgid "SILVERCREST Multimedia Wireless Keyboard"
+msgstr "SILVERCREST Çokluortam Kablosuz Klavyesi"
+
+#: ../rules/base.xml.in.h:557
+msgid "SK-1300"
+msgstr "SK-1300"
+
+#: ../rules/base.xml.in.h:558
+msgid "SK-2500"
+msgstr "SK-2500"
+
+#: ../rules/base.xml.in.h:559
+msgid "SK-6200"
+msgstr "SK-6200"
+
+#: ../rules/base.xml.in.h:560
+msgid "SK-7100"
+msgstr "SK-7100"
+
+# tüklü
+#: ../rules/base.xml.in.h:561 ../rules/base.extras.xml.in.h:7
+msgid "SRB"
+msgstr "SRB"
+
+#: ../rules/base.xml.in.h:562
+msgid "SVEN Ergonomic 2500"
+msgstr "SVEN Ergonomik 2500"
+
+# tüklü
+#: ../rules/base.xml.in.h:563
+msgid "SVEN Slim 303"
+msgstr "SVEN Zarif 303"
+
+#: ../rules/base.xml.in.h:564
+msgid "Samsung SDM 4500P"
+msgstr "Samsung SDM 4500P"
+
+#: ../rules/base.xml.in.h:565
+msgid "Samsung SDM 4510P"
+msgstr "Samsung SDM 4510P"
+
+#: ../rules/base.xml.in.h:566
+msgid "Scroll Lock"
+msgstr "Taydırma Kiliti (Scroll Lock)"
+
+#: ../rules/base.xml.in.h:567
+msgid "ScrollLock"
+msgstr "Taydırma Kiliti (ScrollLock)"
+
+# tüklü
+#: ../rules/base.xml.in.h:568
+msgid "Secwepemctsin"
+msgstr "Secwepemctsin"
+
+#: ../rules/base.xml.in.h:569
+msgid "Semi-colon on third level"
+msgstr "Üçünci seviyede noqtalı virgül"
+
+#: ../rules/base.xml.in.h:570 ../rules/base.extras.xml.in.h:8
+msgid "Serbia"
+msgstr "Sırbistan"
+
+#: ../rules/base.xml.in.h:571
+msgid "Shift cancels CapsLock"
+msgstr "Shift CapsLock'nı lâğu eter"
+
+#: ../rules/base.xml.in.h:572
+msgid "Shift does not cancel NumLock, chooses 3d level instead"
+msgstr "Shift NumLock'nı lâğu etmez, onıñ yerine 3. seviyeni saylar"
+
+#: ../rules/base.xml.in.h:573
+msgid "Shift with numeric keypad keys works as in MS Windows"
+msgstr "Shift ile sayısal tuştaqımı tuşları MS Windows'taki kibi çalışır"
+
+#: ../rules/base.xml.in.h:574
+msgid "Shift+CapsLock"
+msgstr "Shift+CapsLock"
+
+#: ../rules/base.xml.in.h:575
+msgid "Simple"
+msgstr "Basit"
+
+#: ../rules/base.xml.in.h:576
+msgid "Slovakia"
+msgstr "Slovakya"
+
+#: ../rules/base.xml.in.h:577
+msgid "Slovenia"
+msgstr "Slovenya"
+
+#: ../rules/base.xml.in.h:578
+msgid "South Africa"
+msgstr "Cenübiy Afrika"
+
+#: ../rules/base.xml.in.h:579
+msgid "Southern Uzbek"
+msgstr "Cenübiy Özbekçe"
+
+#: ../rules/base.xml.in.h:580
+msgid "Spain"
+msgstr "Ä°spanya"
+
+#: ../rules/base.xml.in.h:581
+msgid "Special keys (Ctrl+Alt+&lt;key&gt;) handled in a server"
+msgstr "Mahsus tuşlar (Ctrl+Alt+&lt;tuş&gt;) bir sunucıda qollanır"
+
+#: ../rules/base.xml.in.h:582
+msgid "SrL"
+msgstr "SrL"
+
+#: ../rules/base.xml.in.h:583
+msgid "Sri Lanka"
+msgstr "Sri Lanka"
+
+#: ../rules/base.xml.in.h:584
+msgid "Standard"
+msgstr "Standart"
+
+#: ../rules/base.xml.in.h:585
+msgid "Standard (Cedilla)"
+msgstr "Standart (Sedilla)"
+
+#. RSTU 2019-91
+#: ../rules/base.xml.in.h:587
+msgid "Standard RSTU"
+msgstr "Standart RSTU"
+
+#. RSTU 2019-91
+#: ../rules/base.xml.in.h:589
+msgid "Standard RSTU on Russian layout"
+msgstr "Rusça tizilim üzerinde standart RSTU"
+
+#: ../rules/base.xml.in.h:590
+msgid "Sun Type 5/6"
+msgstr "Sun Tür 5/6"
+
+#: ../rules/base.xml.in.h:591
+msgid "Sun dead keys"
+msgstr "Sun ölü tuşlar"
+
+#: ../rules/base.xml.in.h:592
+msgid "Super Power Multimedia Keyboard"
+msgstr "Super Power Multimedia Keyboard"
+
+#: ../rules/base.xml.in.h:593
+msgid "Svdvorak"
+msgstr "Svdvorak"
+
+#: ../rules/base.xml.in.h:594
+msgid "Svk"
+msgstr "Svk"
+
+#: ../rules/base.xml.in.h:595
+msgid "Svn"
+msgstr "Svn"
+
+#: ../rules/base.xml.in.h:596
+msgid "Swap Ctrl and CapsLock"
+msgstr "Ctrl ile CapsLock yerlerini almaştır"
+
+#: ../rules/base.xml.in.h:597
+msgid "Swap ESC and CapsLock"
+msgstr "ESC ile CapsLock yerlerini almaştır"
+
+#: ../rules/base.xml.in.h:598
+msgid "Swe"
+msgstr "Ä°sve"
+
+#: ../rules/base.xml.in.h:599
+msgid "Sweden"
+msgstr "İsveç"
+
+#: ../rules/base.xml.in.h:600
+msgid "Switzerland"
+msgstr "İsviçre"
+
+#: ../rules/base.xml.in.h:601
+msgid "Symplon PaceBook (tablet PC)"
+msgstr "Symplon PaceBook (tablet PC)"
+
+#: ../rules/base.xml.in.h:602
+msgid "Syr"
+msgstr "Sur"
+
+#: ../rules/base.xml.in.h:603
+msgid "Syria"
+msgstr "Suriye"
+
+#: ../rules/base.xml.in.h:604
+msgid "Syriac"
+msgstr "Suriye"
+
+#: ../rules/base.xml.in.h:605
+msgid "Syriac phonetic"
+msgstr "Suriye fonetik"
+
+#: ../rules/base.xml.in.h:606
+msgid "TIS-820.2538"
+msgstr "TIS-820.2538"
+
+#: ../rules/base.xml.in.h:607
+msgid "Tajikistan"
+msgstr "Tacikistan"
+
+#: ../rules/base.xml.in.h:608
+msgid "Tamil"
+msgstr "Tamil dili"
+
+#: ../rules/base.xml.in.h:609
+msgid "Tamil TAB Typewriter"
+msgstr "Tamil TAB Daktilo"
+
+#: ../rules/base.xml.in.h:610
+msgid "Tamil TSCII Typewriter"
+msgstr "Tamil TSCII Daktilo"
+
+#: ../rules/base.xml.in.h:611
+msgid "Tamil Unicode"
+msgstr "Tamil Unicode"
+
+#: ../rules/base.xml.in.h:612
+msgid "Targa Visionary 811"
+msgstr "Targa Visionary 811"
+
+#: ../rules/base.xml.in.h:613
+msgid "Tatar"
+msgstr "İdil Tatarcası"
+
+#: ../rules/base.xml.in.h:614
+msgid "Telugu"
+msgstr "Telugu dili"
+
+#: ../rules/base.xml.in.h:615
+msgid "Tha"
+msgstr "Tha"
+
+#: ../rules/base.xml.in.h:616
+msgid "Thailand"
+msgstr "Tayland"
+
+#: ../rules/base.xml.in.h:617
+msgid "Tibetan"
+msgstr "Tibetçe"
+
+#: ../rules/base.xml.in.h:618
+msgid "Tibetan (with ASCII numerals)"
+msgstr "Tibetçe (ASCII sayılarnen)"
+
+#: ../rules/base.xml.in.h:619
+msgid "Tifinagh"
+msgstr "Tifinagh"
+
+#: ../rules/base.xml.in.h:620
+msgid "Tifinagh Alternative"
+msgstr "Tifinagh DiÄŸer"
+
+#: ../rules/base.xml.in.h:621
+msgid "Tifinagh Alternative Phonetic"
+msgstr "Tifinagh DiÄŸer Fonetik"
+
+#: ../rules/base.xml.in.h:622
+msgid "Tifinagh Extended"
+msgstr "Tifinagh GeliÅŸkin"
+
+#: ../rules/base.xml.in.h:623
+msgid "Tifinagh Extended Phonetic"
+msgstr "Tifinagh GeliÅŸmiÅŸ Fonetik"
+
+#: ../rules/base.xml.in.h:624
+msgid "Tifinagh Phonetic"
+msgstr "Tifinagh Fonetik"
+
+#: ../rules/base.xml.in.h:625
+msgid "Tilde (~) variant"
+msgstr "Tilde (~) variantı"
+
+#: ../rules/base.xml.in.h:626
+msgid "Tjk"
+msgstr "Tck"
+
+#: ../rules/base.xml.in.h:627
+msgid "To the corresponding key in a Dvorak keyboard."
+msgstr "Dvorak klavyesindeki muqabil tuÅŸqa."
+
+#: ../rules/base.xml.in.h:628
+msgid "To the corresponding key in a Qwerty keyboard."
+msgstr "Qwerty klavyesindeki muqabil tuÅŸqa."
+
+#: ../rules/base.xml.in.h:629
+msgid "Toshiba Satellite S3000"
+msgstr "Toshiba Satellite S3000"
+
+#: ../rules/base.xml.in.h:630
+msgid "Traditional phonetic"
+msgstr "Ananeviy fonetik"
+
+#: ../rules/base.xml.in.h:631
+msgid "Trust Direct Access Keyboard"
+msgstr "Trust DoÄŸrudan Ä°riÅŸim Klavyesi"
+
+#: ../rules/base.xml.in.h:632
+msgid "Trust Slimline"
+msgstr "Trust Slimline"
+
+#: ../rules/base.xml.in.h:633
+msgid "Trust Wireless Keyboard Classic"
+msgstr "Trust Telsiz Klassik Klavye"
+
+#: ../rules/base.xml.in.h:634
+msgid "Tur"
+msgstr "Trk"
+
+#: ../rules/base.xml.in.h:635
+msgid "Turkey"
+msgstr "Türkiye"
+
+#: ../rules/base.xml.in.h:636
+msgid "Turkmenistan"
+msgstr "Türkmenistan"
+
+#: ../rules/base.xml.in.h:637
+msgid "Typewriter"
+msgstr "Daktilo"
+
+#: ../rules/base.xml.in.h:638
+msgid "Typewriter, legacy"
+msgstr "Daktilo, qadim"
+
+# tüklü
+#: ../rules/base.xml.in.h:639
+msgid "UCW layout (accented letters only)"
+msgstr "UCW tizilimi (ancaq urğulı arifler)"
+
+#: ../rules/base.xml.in.h:640
+msgid "US keyboard with Bosnian digraphs"
+msgstr "Bosna ikil harfleriyle amerikan klavyesi"
+
+#: ../rules/base.xml.in.h:641
+msgid "US keyboard with Bosnian letters"
+msgstr "Bosna harfleriyle amerikan klavyesi"
+
+#: ../rules/base.xml.in.h:642
+msgid "US keyboard with Croatian digraphs"
+msgstr "Hırvat ikil harfleriyle amerikan klavyesi"
+
+#: ../rules/base.xml.in.h:643
+msgid "US keyboard with Croatian letters"
+msgstr "Hırvat harfleriyle amerikan klavyesi"
+
+#: ../rules/base.xml.in.h:644
+msgid "US keyboard with Estonian letters"
+msgstr "Eston ariflernen Amerikan klavyesi"
+
+#: ../rules/base.xml.in.h:645
+msgid "US keyboard with Italian letters"
+msgstr "Ä°talian ariflernen Amerikan klavyesi"
+
+#: ../rules/base.xml.in.h:646
+msgid "US keyboard with Lithuanian letters"
+msgstr "Litvanya harfleriyle amerikan klavyesi"
+
+#: ../rules/base.xml.in.h:647
+msgid "US keyboard with Slovenian letters"
+msgstr "Sloven harfleriyle amerikan klavyesi"
+
+#: ../rules/base.xml.in.h:648 ../rules/base.extras.xml.in.h:9
+msgid "USA"
+msgstr "ABD"
+
+#: ../rules/base.xml.in.h:649
+msgid "Udmurt"
+msgstr "Udmurtça"
+
+#: ../rules/base.xml.in.h:650
+msgid "Ukr"
+msgstr "Ukr"
+
+#: ../rules/base.xml.in.h:651
+msgid "Ukraine"
+msgstr "Ukraina"
+
+#: ../rules/base.xml.in.h:652
+msgid "Unicode additions (arrows and math operators)"
+msgstr "Unikod eklemeleri (oqlar ve riyaziy iÅŸleticiler)"
+
+#: ../rules/base.xml.in.h:653
+msgid "Unicode additions (arrows and math operators). Math operators on default level"
+msgstr "Unikod eklemeleri (oqlar ve riyaziy işleticiler). Riyaziyat işleticileri ög-belgilengen seviyede"
+
+#: ../rules/base.xml.in.h:654
+msgid "UnicodeExpert"
+msgstr "Unicode Uzman"
+
+#: ../rules/base.xml.in.h:655
+msgid "United Kingdom"
+msgstr "Ä°ngiltere"
+
+#: ../rules/base.xml.in.h:656
+msgid "Unitek KB-1925"
+msgstr "Unitek KB-1925"
+
+#: ../rules/base.xml.in.h:657
+msgid "Urdu, Alternative phonetic"
+msgstr "Urdu, Alternativ fonetik"
+
+#: ../rules/base.xml.in.h:658
+msgid "Urdu, Phonetic"
+msgstr "Urdu, Fonetik"
+
+#: ../rules/base.xml.in.h:659
+msgid "Urdu, Winkeys"
+msgstr "Urdu, Win-tuşları"
+
+#: ../rules/base.xml.in.h:660
+msgid "Use Bosnian digraphs"
+msgstr "Bosna ikil harflerini kullanır"
+
+#: ../rules/base.xml.in.h:661
+msgid "Use Croatian digraphs"
+msgstr "Hırvat ikil harflerini kullanır"
+
+#: ../rules/base.xml.in.h:662
+msgid "Use guillemets for quotes"
+msgstr "Tırnakların yerine açılı ayraçlar kullanılır"
+
+# tüklü
+#: ../rules/base.xml.in.h:663
+msgid "Use keyboard LED to show alternative layout"
+msgstr "Alternativ tizilimni köstermek içün klavye LED'ini qullan"
+
+#: ../rules/base.xml.in.h:664
+msgid "Using space key to input non-breakable space character"
+msgstr "Qırılmaz boşluq remzini kirdilemek içün boşluq tuşu qullanımı"
+
+#: ../rules/base.xml.in.h:665
+msgid "Usual space at any level"
+msgstr "Er seviyede adetiy boÅŸluq"
+
+#: ../rules/base.xml.in.h:666
+msgid "Uzb"
+msgstr "Özb"
+
+#: ../rules/base.xml.in.h:667
+msgid "Uzbekistan"
+msgstr "Özbekistan"
+
+#: ../rules/base.xml.in.h:668
+msgid "Vietnam"
+msgstr "Vietnam"
+
+#: ../rules/base.xml.in.h:669
+msgid "ViewSonic KU-306 Internet Keyboard"
+msgstr "ViewSonic KU-306 Ä°nternet Klavyesi"
+
+#: ../rules/base.xml.in.h:670
+msgid "Vnm"
+msgstr "Vnm"
+
+# tüklü
+#: ../rules/base.xml.in.h:671
+msgid "Wang 724 keypad with unicode additions (arrows and math operators)"
+msgstr "Wang 724 tuştaqımı Unikod eklemelerinen (oqlar ve riyaziy işleticiler)"
+
+#: ../rules/base.xml.in.h:672
+msgid "Wang 724 keypad with unicode additions (arrows and math operators). Math operators on default level"
+msgstr "Wang 724 tuştaqımı Unikod eklemelerinen (oqlar ve riyaziy işleticiler). Riyaziy tuşlar ög-belgilengen seviyede"
+
+#: ../rules/base.xml.in.h:673
+msgid "Wang model 724 azerty"
+msgstr "Wang model 724 azerty"
+
+#: ../rules/base.xml.in.h:674
+msgid "Western"
+msgstr "Äžarbiy"
+
+#: ../rules/base.xml.in.h:675
+msgid "Winbook Model XP5"
+msgstr "Winbook Model XP5"
+
+#: ../rules/base.xml.in.h:676
+msgid "Winkeys"
+msgstr "Win-tuşları"
+
+#: ../rules/base.xml.in.h:677
+msgid "With &lt;\\|&gt; key"
+msgstr "&lt;\\|&gt; tuÅŸunen"
+
+#: ../rules/base.xml.in.h:678
+msgid "With EuroSign on 5"
+msgstr "€ sembolü ile 5 tuşu"
+
+#: ../rules/base.xml.in.h:679
+msgid "With guillemets"
+msgstr "Açılı ayraçlarla"
+
+#: ../rules/base.xml.in.h:680
+msgid "Yahoo! Internet Keyboard"
+msgstr "Yahoo! Ä°nternet Klavyesi"
+
+#: ../rules/base.xml.in.h:681
+msgid "Yakut"
+msgstr "Sahaca"
+
+#: ../rules/base.xml.in.h:682
+msgid "Yoruba"
+msgstr "Yoruba"
+
+#: ../rules/base.xml.in.h:683
+msgid "Z and ZHE swapped"
+msgstr "Z ile J almaştırılır"
+
+#: ../rules/base.xml.in.h:684
+msgid "Zar"
+msgstr "Zar"
+
+#: ../rules/base.xml.in.h:685
+msgid "azerty"
+msgstr "azerty"
+
+#: ../rules/base.xml.in.h:686
+msgid "azerty/digits"
+msgstr "azerty/raqamlar"
+
+#: ../rules/base.xml.in.h:687
+msgid "digits"
+msgstr "raqamlar"
+
+#: ../rules/base.xml.in.h:688
+msgid "displaced semicolon and quote (obsolete)"
+msgstr "noqtalı virgül ve qoştırnaq yersizleştirilgen (eskirtilgen)"
+
+#: ../rules/base.xml.in.h:689
+msgid "lyx"
+msgstr "lyx"
+
+#: ../rules/base.xml.in.h:690
+msgid "qwerty"
+msgstr "qwerty"
+
+#: ../rules/base.xml.in.h:691
+msgid "qwerty, extended Backslash"
+msgstr "qwerty, uzatılğan Kerikesme"
+
+#: ../rules/base.xml.in.h:692
+msgid "qwerty/digits"
+msgstr "qwerty/raqamlar"
+
+#: ../rules/base.xml.in.h:693
+msgid "qwertz"
+msgstr "qwertz"
+
+# tüklü
+#: ../rules/base.extras.xml.in.h:1
+msgid "APL"
+msgstr "APL"
+
+# tüklü
+#: ../rules/base.extras.xml.in.h:2
+msgid "Atsina"
+msgstr "Atsina"
+
+# tüklü
+#: ../rules/base.extras.xml.in.h:3
+msgid "Combining accents instead of dead keys"
+msgstr "Ölü tuşlar yerine köterinkilerniñ qoşulması"
+
+# tüklü
+#: ../rules/base.extras.xml.in.h:4
+msgid "Couer D'alene Salish"
+msgstr "Couer D'alene Salish"
+
+#: ../rules/base.extras.xml.in.h:5
+msgid "International (AltGr Unicode combining)"
+msgstr "Milletlerara (AltGr Unikod qoşumı)"
+
+#: ../rules/base.extras.xml.in.h:6
+msgid "International (AltGr Unicode combining, alternative)"
+msgstr "Milletlerara (AltGr Unikod qoşumı, alternativ)"
+
+#~ msgid "Baltic+"
+#~ msgstr "Baltıq+"
+
+#~ msgid "IBM ThinkPad 560Z/600/600E/A22E, Intl"
+#~ msgstr "IBM ThinkPad 560Z/600/600E/A22E, Intl"
+
+#~ msgid "Keypad"
+#~ msgstr "Tuştaqımı"
+
+#~ msgid "Pro"
+#~ msgstr "Pro"
+
+#~ msgid "Pro Keypad"
+#~ msgstr "Pro Klavye"
+
+#~ msgid "Standard Phonetic"
+#~ msgstr "Standart Fonetik"
+
+#~ msgid "Brazilian ABNT2"
+#~ msgstr "Brazilya dili ABNT2"
+
+#~ msgid "Japanese 106-key"
+#~ msgstr "Japonca 106 tuÅŸlu"
+
+#~ msgid "Kir"
+#~ msgstr "Kir"
+
+#~ msgid "Korean 106-key"
+#~ msgstr "Korece 106 tuÅŸlu"
+
+#~ msgid "Super is mapped to Win keys"
+#~ msgstr "Super, Pencereler (Win) tuşlarına haritalandırılır"
+
+#~ msgid "US keyboard with Slovenian digraphs"
+#~ msgstr "Sloven ikil harfleriyle amerikan klavyesi"
+
+#~ msgid "Unicode"
+#~ msgstr "Unikod"
+
+#~ msgid "Use Slovenian digraphs"
+#~ msgstr "Sloven ikil harflerini kullanır"
diff --git a/xorg-server/xkeyboard-config/po/el.po b/xorg-server/xkeyboard-config/po/el.po
index 401e66f73..92be9abf6 100644
--- a/xorg-server/xkeyboard-config/po/el.po
+++ b/xorg-server/xkeyboard-config/po/el.po
@@ -1,2873 +1,2873 @@
-# Translation of xkeyboard-config to Greek
-# This file is distributed under the same license as the xkeyboard-config package.
-# Copyright (C) 2004, 2005, 2010, Free Software Foundation.
-# Simos Xenitellis <simos.lists@googlemail.com>, 2004, 2005, 2010.
-msgid ""
-msgstr ""
-"Project-Id-Version: xkeyboard-config 1.8\n"
-"Report-Msgid-Bugs-To: svu@users.sourceforge.net\n"
-"POT-Creation-Date: 2010-01-16 18:08+0000\n"
-"PO-Revision-Date: 2010-03-21 23:36+0200\n"
-"Last-Translator: Simos Xenitellis <simos.lists@googlemail.com>\n"
-"Language-Team: Greek <team@lists.gnome.gr>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-#: ../rules/base.xml.in.h:1
-msgid "(F)"
-msgstr "(F)"
-
-#: ../rules/base.xml.in.h:2
-msgid "(Legacy) Alternative"
-msgstr ""
-
-#: ../rules/base.xml.in.h:3
-msgid "(Legacy) Alternative, Sun dead keys"
-msgstr ""
-
-#: ../rules/base.xml.in.h:4
-msgid "(Legacy) Alternative, eliminate dead keys"
-msgstr ""
-
-#: ../rules/base.xml.in.h:5
-msgid "101/104 key Compatible"
-msgstr ""
-
-#: ../rules/base.xml.in.h:6
-msgid "101/qwerty/comma/Dead keys"
-msgstr ""
-
-#: ../rules/base.xml.in.h:7
-msgid "101/qwerty/comma/Eliminate dead keys"
-msgstr ""
-
-#: ../rules/base.xml.in.h:8
-msgid "101/qwerty/dot/Dead keys"
-msgstr ""
-
-#: ../rules/base.xml.in.h:9
-msgid "101/qwerty/dot/Eliminate dead keys"
-msgstr ""
-
-#: ../rules/base.xml.in.h:10
-msgid "101/qwertz/comma/Dead keys"
-msgstr ""
-
-#: ../rules/base.xml.in.h:11
-msgid "101/qwertz/comma/Eliminate dead keys"
-msgstr ""
-
-#: ../rules/base.xml.in.h:12
-msgid "101/qwertz/dot/Dead keys"
-msgstr ""
-
-#: ../rules/base.xml.in.h:13
-msgid "101/qwertz/dot/Eliminate dead keys"
-msgstr ""
-
-#: ../rules/base.xml.in.h:14
-msgid "102/qwerty/comma/Dead keys"
-msgstr ""
-
-#: ../rules/base.xml.in.h:15
-msgid "102/qwerty/comma/Eliminate dead keys"
-msgstr ""
-
-#: ../rules/base.xml.in.h:16
-msgid "102/qwerty/dot/Dead keys"
-msgstr ""
-
-#: ../rules/base.xml.in.h:17
-msgid "102/qwerty/dot/Eliminate dead keys"
-msgstr ""
-
-#: ../rules/base.xml.in.h:18
-msgid "102/qwertz/comma/Dead keys"
-msgstr ""
-
-#: ../rules/base.xml.in.h:19
-msgid "102/qwertz/comma/Eliminate dead keys"
-msgstr ""
-
-#: ../rules/base.xml.in.h:20
-msgid "102/qwertz/dot/Dead keys"
-msgstr ""
-
-#: ../rules/base.xml.in.h:21
-msgid "102/qwertz/dot/Eliminate dead keys"
-msgstr ""
-
-#: ../rules/base.xml.in.h:22
-msgid "2"
-msgstr "2"
-
-#: ../rules/base.xml.in.h:23
-msgid "4"
-msgstr "4"
-
-#: ../rules/base.xml.in.h:24
-msgid "5"
-msgstr "5"
-
-#: ../rules/base.xml.in.h:25
-msgid "A4Tech KB-21"
-msgstr "A4Tech KB-21"
-
-#: ../rules/base.xml.in.h:26
-msgid "A4Tech KBS-8"
-msgstr "A4Tech KBS-8"
-
-#: ../rules/base.xml.in.h:27
-msgid "A4Tech Wireless Desktop RFKB-23"
-msgstr ""
-
-#: ../rules/base.xml.in.h:28
-msgid "ACPI Standard"
-msgstr ""
-
-#: ../rules/base.xml.in.h:29
-msgid "ATM/phone-style"
-msgstr ""
-
-#: ../rules/base.xml.in.h:30
-msgid "Acer AirKey V"
-msgstr "Acer AirKey V"
-
-#: ../rules/base.xml.in.h:31
-msgid "Acer C300"
-msgstr "Acer C300"
-
-#: ../rules/base.xml.in.h:32
-msgid "Acer Ferrari 4000"
-msgstr "Acer Ferrari 4000"
-
-#: ../rules/base.xml.in.h:33
-msgid "Acer Laptop"
-msgstr "ΦοÏητός Acer"
-
-#: ../rules/base.xml.in.h:34
-msgid "Add the standard behavior to Menu key"
-msgstr ""
-
-#: ../rules/base.xml.in.h:35
-msgid "Adding Esperanto circumflexes (supersigno)"
-msgstr "ΠÏοσθήκη λατινικών πεÏισπωμένων για ΕσπεÏάντο"
-
-#: ../rules/base.xml.in.h:36
-msgid "Adding EuroSign to certain keys"
-msgstr "ΠÏοσθήκη του συμβόλου του ΕυÏÏŽ (€) σε πλήκτÏα"
-
-#: ../rules/base.xml.in.h:37
-msgid "Advance Scorpius KI"
-msgstr ""
-
-#: ../rules/base.xml.in.h:38
-msgid "Afg"
-msgstr "ΑΦΓ"
-
-#: ../rules/base.xml.in.h:39
-msgid "Afghanistan"
-msgstr "Αφγανιστάν"
-
-#: ../rules/base.xml.in.h:40
-msgid "Akan"
-msgstr "Ακάν"
-
-#: ../rules/base.xml.in.h:41
-msgid "Alb"
-msgstr "ΑΛΒ"
-
-#: ../rules/base.xml.in.h:42
-msgid "Albania"
-msgstr "Αλβανία"
-
-#: ../rules/base.xml.in.h:43
-msgid "Alt and Meta are on Alt keys"
-msgstr ""
-
-#: ../rules/base.xml.in.h:44
-msgid "Alt is mapped to Right Win, Super to Menu"
-msgstr ""
-
-#: ../rules/base.xml.in.h:45
-msgid "Alt+CapsLock"
-msgstr "Alt+CapsLock"
-
-#: ../rules/base.xml.in.h:46
-msgid "Alt+Ctrl"
-msgstr "Alt+Ctrl"
-
-#: ../rules/base.xml.in.h:47
-msgid "Alt+Shift"
-msgstr "Alt+Shift"
-
-#: ../rules/base.xml.in.h:48
-msgid "Alt+Space"
-msgstr "Alt+Space"
-
-#: ../rules/base.xml.in.h:49
-msgid "Alt-Q"
-msgstr "Alt-Q"
-
-#: ../rules/base.xml.in.h:50
-msgid "Alt/Win key behavior"
-msgstr "ΣυμπεÏιφοÏά πλήκτÏου Alt/Win"
-
-#: ../rules/base.xml.in.h:51
-msgid "Alternative"
-msgstr "Ενναλακτικό"
-
-#: ../rules/base.xml.in.h:52
-msgid "Alternative Eastern"
-msgstr "Εναλλακτικό ανατολικό"
-
-#: ../rules/base.xml.in.h:53
-msgid "Alternative Phonetic"
-msgstr "Εναλλακτικό φωνητικό"
-
-#: ../rules/base.xml.in.h:54
-msgid "Alternative international (former us_intl)"
-msgstr "Εναλλακτικό διεθνές (Ï€Ïώην us_intl)"
-
-#: ../rules/base.xml.in.h:55
-msgid "Alternative, Sun dead keys"
-msgstr "Εναλλακτικό, Sun με νεκÏά πλήκτÏα"
-
-#: ../rules/base.xml.in.h:56
-msgid "Alternative, eliminate dead keys"
-msgstr "Εναλλακτικό, μη χÏήση νεκÏών πλήκτÏων"
-
-#: ../rules/base.xml.in.h:57
-msgid "Alternative, latin-9 only"
-msgstr "Εναλλακτικό, μόνο latin-9"
-
-#: ../rules/base.xml.in.h:58
-msgid "And"
-msgstr "ΑÎΔ"
-
-#: ../rules/base.xml.in.h:59
-msgid "Andorra"
-msgstr "ΑνδόÏÏα"
-
-#: ../rules/base.xml.in.h:60
-msgid "Any Alt key"
-msgstr "Οποιοδήποτε πλήκτÏο Alt"
-
-#: ../rules/base.xml.in.h:61
-msgid "Any Win key"
-msgstr "Οποιοδήποτε πλήκτÏο Win"
-
-#: ../rules/base.xml.in.h:62
-msgid "Any Win key (while pressed)"
-msgstr ""
-
-#: ../rules/base.xml.in.h:63
-msgid "Apostrophe (') variant"
-msgstr ""
-
-#: ../rules/base.xml.in.h:64
-msgid "Apple"
-msgstr "Apple"
-
-#: ../rules/base.xml.in.h:65
-msgid "Apple Laptop"
-msgstr "ΦοÏητός Apple"
-
-#: ../rules/base.xml.in.h:66
-msgid "Ara"
-msgstr "ΑΡΑ"
-
-#: ../rules/base.xml.in.h:67
-msgid "Arabic"
-msgstr "ΑÏαβικό"
-
-#: ../rules/base.xml.in.h:68
-msgid "Arm"
-msgstr "ΑΡΜ"
-
-#: ../rules/base.xml.in.h:69
-msgid "Armenia"
-msgstr "ΑÏμενία"
-
-#: ../rules/base.xml.in.h:70
-msgid "Asturian variant with bottom-dot H and bottom-dot L"
-msgstr ""
-
-#: ../rules/base.xml.in.h:71
-msgid "Asus Laptop"
-msgstr "ΦοÏητός Asus"
-
-#: ../rules/base.xml.in.h:72
-msgid "At bottom left"
-msgstr ""
-
-#: ../rules/base.xml.in.h:73
-msgid "At left of 'A'"
-msgstr ""
-
-#: ../rules/base.xml.in.h:74
-msgid "Aze"
-msgstr "ΑΖΕ"
-
-#: ../rules/base.xml.in.h:75
-msgid "Azerbaijan"
-msgstr "ΑζεÏμπαϊτζάν"
-
-#: ../rules/base.xml.in.h:76
-msgid "Azona RF2300 wireless Internet Keyboard"
-msgstr ""
-
-#: ../rules/base.xml.in.h:77
-msgid "BTC 5090"
-msgstr "BTC 5090"
-
-#: ../rules/base.xml.in.h:78
-msgid "BTC 5113RF Multimedia"
-msgstr "BTC 5113RF Multimedia"
-
-#: ../rules/base.xml.in.h:79
-msgid "BTC 5126T"
-msgstr "BTC 5126T"
-
-#: ../rules/base.xml.in.h:80
-msgid "BTC 6301URF"
-msgstr "BTC 6301URF"
-
-#: ../rules/base.xml.in.h:81
-msgid "BTC 9000"
-msgstr "BTC 9000"
-
-#: ../rules/base.xml.in.h:82
-msgid "BTC 9000A"
-msgstr "BTC 9000A"
-
-#: ../rules/base.xml.in.h:83
-msgid "BTC 9001AH"
-msgstr "BTC 9001AH"
-
-#: ../rules/base.xml.in.h:84
-msgid "BTC 9019U"
-msgstr "BTC 9019U"
-
-#: ../rules/base.xml.in.h:85
-msgid "BTC 9116U Mini Wireless Internet and Gaming"
-msgstr ""
-
-#: ../rules/base.xml.in.h:86
-msgid "Ban"
-msgstr "ΜΠΑ"
-
-#: ../rules/base.xml.in.h:87
-msgid "Bangladesh"
-msgstr "Μπανγκλαντές"
-
-#: ../rules/base.xml.in.h:88
-msgid "Bashkirian"
-msgstr ""
-
-#: ../rules/base.xml.in.h:89
-msgid "Bel"
-msgstr "ΒΕΛ"
-
-#: ../rules/base.xml.in.h:90
-msgid "Belarus"
-msgstr "ΛευκοÏωσία"
-
-#: ../rules/base.xml.in.h:91
-msgid "Belgium"
-msgstr "Βέλγιο"
-
-#: ../rules/base.xml.in.h:92
-msgid "BenQ X-Touch"
-msgstr "BenQ X-Touch"
-
-#: ../rules/base.xml.in.h:93
-msgid "BenQ X-Touch 730"
-msgstr "BenQ X-Touch 730"
-
-#: ../rules/base.xml.in.h:94
-msgid "BenQ X-Touch 800"
-msgstr "BenQ X-Touch 800"
-
-#: ../rules/base.xml.in.h:95
-msgid "Bengali"
-msgstr "Μπενγκάλι"
-
-#: ../rules/base.xml.in.h:96
-msgid "Bengali Probhat"
-msgstr ""
-
-#: ../rules/base.xml.in.h:97
-msgid "Bepo, ergonomic, Dvorak way"
-msgstr ""
-
-#: ../rules/base.xml.in.h:98
-msgid "Bepo, ergonomic, Dvorak way, latin-9 only"
-msgstr ""
-
-#: ../rules/base.xml.in.h:99
-msgid "Bgr"
-msgstr "ΒΟΥ"
-
-#: ../rules/base.xml.in.h:100
-msgid "Bhu"
-msgstr "ΜΠΟ"
-
-#: ../rules/base.xml.in.h:101
-msgid "Bhutan"
-msgstr "Μπουτάν"
-
-#: ../rules/base.xml.in.h:102
-msgid "Biblical Hebrew (Tiro)"
-msgstr ""
-
-#: ../rules/base.xml.in.h:103
-msgid "Bih"
-msgstr ""
-
-#: ../rules/base.xml.in.h:104
-msgid "Blr"
-msgstr "ΛΕΥ"
-
-#: ../rules/base.xml.in.h:105
-msgid "Bosnia and Herzegovina"
-msgstr "Βοσνία και ΕÏζεγοβίνη"
-
-#: ../rules/base.xml.in.h:106
-msgid "Both Alt keys together"
-msgstr "Και τα δÏο πλήκτÏα Alt μαζί"
-
-#: ../rules/base.xml.in.h:107
-msgid "Both Ctrl keys together"
-msgstr "Και τα δÏο πλήκτÏα Ctrl μαζί"
-
-#: ../rules/base.xml.in.h:108
-msgid "Both Shift keys together"
-msgstr "Και τα δÏο πλήκτÏα Shift μαζί"
-
-#: ../rules/base.xml.in.h:109
-msgid "Bra"
-msgstr "ΒΡΑ"
-
-#: ../rules/base.xml.in.h:110
-msgid "Braille"
-msgstr "ΜπÏάιγ"
-
-#: ../rules/base.xml.in.h:111
-msgid "Brazil"
-msgstr "Î’Ïαζιλία"
-
-#: ../rules/base.xml.in.h:112
-msgid "Breton"
-msgstr ""
-
-#: ../rules/base.xml.in.h:113
-msgid "Brl"
-msgstr ""
-
-#: ../rules/base.xml.in.h:114
-msgid "Brother Internet Keyboard"
-msgstr "ΠληκτÏολόγιο ΔιαδικτÏου Brother"
-
-#: ../rules/base.xml.in.h:115
-msgid "Buckwalter"
-msgstr "Buckwalter"
-
-#: ../rules/base.xml.in.h:116
-msgid "Bulgaria"
-msgstr "ΒουλγαÏία"
-
-#: ../rules/base.xml.in.h:117
-msgid "CRULP"
-msgstr "CRULP"
-
-#: ../rules/base.xml.in.h:118
-msgid "Cambodia"
-msgstr "Καμπότζη"
-
-#: ../rules/base.xml.in.h:119
-msgid "Can"
-msgstr "ΚΑÎ"
-
-#: ../rules/base.xml.in.h:120
-msgid "Canada"
-msgstr "Καναδάς"
-
-#: ../rules/base.xml.in.h:121
-msgid "Caps Lock"
-msgstr "Caps Lock"
-
-#: ../rules/base.xml.in.h:122
-msgid "CapsLock"
-msgstr "CapsLock"
-
-#: ../rules/base.xml.in.h:123
-msgid "CapsLock (to first layout), Shift+CapsLock (to last layout)"
-msgstr ""
-
-#: ../rules/base.xml.in.h:124
-msgid "CapsLock (while pressed), Alt+CapsLock does the original capslock action"
-msgstr ""
-
-#: ../rules/base.xml.in.h:125
-msgid "CapsLock acts as Shift with locking. Shift \"pauses\" CapsLock"
-msgstr ""
-
-#: ../rules/base.xml.in.h:126
-msgid "CapsLock acts as Shift with locking. Shift doesn't affect CapsLock"
-msgstr ""
-
-#: ../rules/base.xml.in.h:127
-msgid "CapsLock is disabled"
-msgstr ""
-
-#: ../rules/base.xml.in.h:128
-msgid "CapsLock key behavior"
-msgstr "ΣυμπεÏιφοÏά πλήκτÏου CapsLock"
-
-#: ../rules/base.xml.in.h:129
-msgid "CapsLock toggles Shift so all keys are affected"
-msgstr ""
-
-#: ../rules/base.xml.in.h:130
-msgid "CapsLock toggles normal capitalization of alphabetic characters"
-msgstr ""
-
-#: ../rules/base.xml.in.h:131
-msgid "CapsLock uses internal capitalization. Shift \"pauses\" CapsLock"
-msgstr ""
-
-#: ../rules/base.xml.in.h:132
-msgid "CapsLock uses internal capitalization. Shift doesn't affect CapsLock"
-msgstr ""
-
-#: ../rules/base.xml.in.h:133
-msgid "Catalan variant with middle-dot L"
-msgstr ""
-
-#: ../rules/base.xml.in.h:134
-msgid "Cedilla"
-msgstr ""
-
-#: ../rules/base.xml.in.h:135
-msgid "Che"
-msgstr "ΤΣΕ"
-
-#: ../rules/base.xml.in.h:136
-msgid "Cherokee"
-msgstr ""
-
-#: ../rules/base.xml.in.h:137
-msgid "Cherry B.UNLIMITED"
-msgstr "Cherry B.UNLIMITED"
-
-#: ../rules/base.xml.in.h:138
-msgid "Cherry Blue Line CyBo@rd"
-msgstr "Cherry Blue Line CyBo@rd"
-
-#: ../rules/base.xml.in.h:139
-msgid "Cherry Blue Line CyBo@rd (alternate option)"
-msgstr ""
-
-#: ../rules/base.xml.in.h:140
-msgid "Cherry CyBo@rd USB-Hub"
-msgstr "Cherry CyBo@rd USB-Hub"
-
-#: ../rules/base.xml.in.h:141
-msgid "Cherry CyMotion Expert"
-msgstr "Cherry CyMotion Expert"
-
-#: ../rules/base.xml.in.h:142
-msgid "Cherry CyMotion Master Linux"
-msgstr "Cherry CyMotion Master Linux"
-
-#: ../rules/base.xml.in.h:143
-msgid "Cherry CyMotion Master XPress"
-msgstr "Cherry CyMotion Master XPress"
-
-#: ../rules/base.xml.in.h:144
-msgid "Chicony Internet Keyboard"
-msgstr "Chicony Internet Keyboard"
-
-#: ../rules/base.xml.in.h:145
-msgid "Chicony KB-9885"
-msgstr "Chicony KB-9885"
-
-#: ../rules/base.xml.in.h:146
-msgid "Chicony KU-0108"
-msgstr "Chicony KU-0108"
-
-#: ../rules/base.xml.in.h:147
-msgid "Chicony KU-0420"
-msgstr "Chicony KU-0420"
-
-#: ../rules/base.xml.in.h:148
-msgid "China"
-msgstr "Κίνα"
-
-#: ../rules/base.xml.in.h:149
-msgid "Chuvash"
-msgstr ""
-
-#: ../rules/base.xml.in.h:150
-msgid "Chuvash Latin"
-msgstr ""
-
-#: ../rules/base.xml.in.h:151
-msgid "Classic"
-msgstr ""
-
-#: ../rules/base.xml.in.h:152
-msgid "Classic Dvorak"
-msgstr ""
-
-#: ../rules/base.xml.in.h:153
-msgid "Classmate PC"
-msgstr "Classmate PC"
-
-#: ../rules/base.xml.in.h:154
-msgid "CloGaelach"
-msgstr "CloGaelach"
-
-#: ../rules/base.xml.in.h:155
-msgid "Colemak"
-msgstr "Κόλεμακ"
-
-#: ../rules/base.xml.in.h:156
-msgid "Compaq Easy Access Keyboard"
-msgstr ""
-
-#: ../rules/base.xml.in.h:157
-msgid "Compaq Internet Keyboard (13 keys)"
-msgstr ""
-
-#: ../rules/base.xml.in.h:158
-msgid "Compaq Internet Keyboard (18 keys)"
-msgstr ""
-
-#: ../rules/base.xml.in.h:159
-msgid "Compaq Internet Keyboard (7 keys)"
-msgstr ""
-
-#: ../rules/base.xml.in.h:160
-msgid "Compaq iPaq Keyboard"
-msgstr ""
-
-#: ../rules/base.xml.in.h:161
-msgid "Compose key position"
-msgstr "Θέση πλήκτÏου Compose"
-
-#: ../rules/base.xml.in.h:162
-msgid "Congo, Democratic Republic of the"
-msgstr ""
-
-#: ../rules/base.xml.in.h:163
-msgid "Control + Alt + Backspace"
-msgstr "Control + Alt + Backspace"
-
-#: ../rules/base.xml.in.h:164
-msgid "Control is mapped to Alt keys, Alt is mapped to Win keys"
-msgstr ""
-
-#: ../rules/base.xml.in.h:165
-msgid "Control is mapped to Win keys (and the usual Ctrl keys)"
-msgstr ""
-
-#: ../rules/base.xml.in.h:166
-msgid "Creative Desktop Wireless 7000"
-msgstr ""
-
-#: ../rules/base.xml.in.h:167
-msgid "Crimean Tatar (Dobruca-1 Q)"
-msgstr ""
-
-#: ../rules/base.xml.in.h:168
-msgid "Crimean Tatar (Dobruca-2 Q)"
-msgstr ""
-
-#: ../rules/base.xml.in.h:169
-msgid "Crimean Tatar (Turkish Alt-Q)"
-msgstr ""
-
-#: ../rules/base.xml.in.h:170
-msgid "Crimean Tatar (Turkish F)"
-msgstr ""
-
-#: ../rules/base.xml.in.h:171
-msgid "Crimean Tatar (Turkish Q)"
-msgstr ""
-
-#: ../rules/base.xml.in.h:172
-msgid "Croatia"
-msgstr "ΚÏοατία"
-
-#: ../rules/base.xml.in.h:173
-msgid "Ctrl key position"
-msgstr "Θέση πλήκτÏου Ctrl"
-
-#: ../rules/base.xml.in.h:174
-msgid "Ctrl+Shift"
-msgstr "Ctrl+Shift"
-
-#: ../rules/base.xml.in.h:175
-msgid "Cyrillic"
-msgstr "ΚυÏιλλικά"
-
-#: ../rules/base.xml.in.h:176
-msgid "Cyrillic with guillemets"
-msgstr ""
-
-#: ../rules/base.xml.in.h:177
-msgid "Cyrillic, Z and ZHE swapped"
-msgstr ""
-
-#: ../rules/base.xml.in.h:178
-msgid "Cze"
-msgstr "ΤΣΕ"
-
-#: ../rules/base.xml.in.h:179
-msgid "Czechia"
-msgstr "Τσεχία"
-
-#: ../rules/base.xml.in.h:180
-msgid "DOS"
-msgstr "DOS"
-
-#: ../rules/base.xml.in.h:181
-msgid "DRC"
-msgstr "DRC"
-
-#: ../rules/base.xml.in.h:182
-msgid "DTK2000"
-msgstr "DTK2000"
-
-#: ../rules/base.xml.in.h:183
-msgid "Dan"
-msgstr "ΔΑÎ"
-
-#: ../rules/base.xml.in.h:184
-msgid "Dead acute"
-msgstr ""
-
-#: ../rules/base.xml.in.h:185
-msgid "Dead grave acute"
-msgstr ""
-
-#: ../rules/base.xml.in.h:186
-msgid "Default numeric keypad keys"
-msgstr ""
-
-#: ../rules/base.xml.in.h:187
-msgid "Dell"
-msgstr "Dell"
-
-#: ../rules/base.xml.in.h:188
-msgid "Dell 101-key PC"
-msgstr "Dell PC 101-πλήκτÏων"
-
-#: ../rules/base.xml.in.h:189
-msgid "Dell Laptop/notebook Inspiron 6xxx/8xxx"
-msgstr "Dell Laptop/notebook Inspiron 6xxx/8xxx"
-
-#: ../rules/base.xml.in.h:190
-msgid "Dell Laptop/notebook Precision M series"
-msgstr "Dell Laptop/notebook Precision M series"
-
-#: ../rules/base.xml.in.h:191
-msgid "Dell Latitude series laptop"
-msgstr "Dell Latitude series laptop"
-
-#: ../rules/base.xml.in.h:192
-msgid "Dell Precision M65"
-msgstr "Dell Precision M65"
-
-#: ../rules/base.xml.in.h:193
-msgid "Dell SK-8125"
-msgstr "Dell SK-8125"
-
-#: ../rules/base.xml.in.h:194
-msgid "Dell SK-8135"
-msgstr "Dell SK-8135"
-
-#: ../rules/base.xml.in.h:195
-msgid "Dell USB Multimedia Keyboard"
-msgstr ""
-
-#: ../rules/base.xml.in.h:196
-msgid "Denmark"
-msgstr "Δανία"
-
-#: ../rules/base.xml.in.h:197
-msgid "Deu"
-msgstr ""
-
-#: ../rules/base.xml.in.h:198
-msgid "Dexxa Wireless Desktop Keyboard"
-msgstr "Dexxa Wireless Desktop Keyboard"
-
-#: ../rules/base.xml.in.h:199
-msgid "Diamond 9801 / 9802 series"
-msgstr "Diamond 9801 / 9802 series"
-
-#: ../rules/base.xml.in.h:200
-msgid "Dvorak"
-msgstr "ÎτβόÏακ"
-
-#: ../rules/base.xml.in.h:201
-msgid "Dvorak (UK Punctuation)"
-msgstr ""
-
-#: ../rules/base.xml.in.h:202
-msgid "Dvorak international"
-msgstr ""
-
-#: ../rules/base.xml.in.h:203
-msgid "Dvorak, Polish quotes on key 1"
-msgstr ""
-
-#: ../rules/base.xml.in.h:204
-msgid "Dvorak, Polish quotes on quotemark key"
-msgstr ""
-
-#: ../rules/base.xml.in.h:205
-msgid "E"
-msgstr "E"
-
-#: ../rules/base.xml.in.h:206
-msgid "Eastern"
-msgstr "Ανατολικό"
-
-#: ../rules/base.xml.in.h:207
-msgid "Eliminate dead keys"
-msgstr "ΧωÏίς νεκÏά πλήκτÏα"
-
-#: ../rules/base.xml.in.h:208
-msgid "Enable extra typographic characters"
-msgstr ""
-
-#: ../rules/base.xml.in.h:209
-msgid "English"
-msgstr "Αγγλικό"
-
-#: ../rules/base.xml.in.h:210
-msgid "Ennyah DKB-1008"
-msgstr "Ennyah DKB-1008"
-
-#: ../rules/base.xml.in.h:211
-msgid "Enter on keypad"
-msgstr "ΠλήκτÏο Enter στο αÏιθμητικό πληκτÏολόγιο"
-
-#: ../rules/base.xml.in.h:212
-msgid "Epo"
-msgstr ""
-
-#: ../rules/base.xml.in.h:213
-msgid "Ergonomic"
-msgstr "ΕÏγονομικό"
-
-#: ../rules/base.xml.in.h:214
-msgid "Esp"
-msgstr "ΙΣΠ"
-
-#: ../rules/base.xml.in.h:215
-msgid "Esperanto"
-msgstr "ΕσπεÏάντο"
-
-#: ../rules/base.xml.in.h:216
-msgid "Est"
-msgstr "ΕΣΘ"
-
-#: ../rules/base.xml.in.h:217
-msgid "Estonia"
-msgstr "Εσθονία"
-
-#: ../rules/base.xml.in.h:218
-msgid "Eth"
-msgstr "ΕΘΙ"
-
-#: ../rules/base.xml.in.h:219
-msgid "Ethiopia"
-msgstr "Αιθιοπία"
-
-#: ../rules/base.xml.in.h:220
-msgid "Evdev-managed keyboard"
-msgstr "ΠληκτÏολόγιο Ïυθμιζόμενο από evdev"
-
-#: ../rules/base.xml.in.h:221
-msgid "Everex STEPnote"
-msgstr "Everex STEPnote"
-
-#: ../rules/base.xml.in.h:222
-msgid "Ewe"
-msgstr ""
-
-#: ../rules/base.xml.in.h:223
-msgid "Extended"
-msgstr "Εκτεταμένο (παλαιά διάταξη)"
-
-#: ../rules/base.xml.in.h:224
-msgid "Extended - Winkeys"
-msgstr ""
-
-#: ../rules/base.xml.in.h:225
-msgid "Extended Backslash"
-msgstr ""
-
-#: ../rules/base.xml.in.h:226
-msgid "F-letter (F) variant"
-msgstr ""
-
-#: ../rules/base.xml.in.h:227
-msgid "FL90"
-msgstr "FL90"
-
-#: ../rules/base.xml.in.h:228
-msgid "Fao"
-msgstr "ΦΑΡ"
-
-#: ../rules/base.xml.in.h:229
-msgid "Faroe Islands"
-msgstr ""
-
-#: ../rules/base.xml.in.h:230
-msgid "Fin"
-msgstr "ΦΙÎ"
-
-#: ../rules/base.xml.in.h:231
-msgid "Finland"
-msgstr "Φινλανδία"
-
-#. This assumes the KP_ abstract symbols are actually useful for some apps
-#. The description needs to be rewritten
-#: ../rules/base.xml.in.h:234
-msgid "Four-level key with abstract separators"
-msgstr ""
-
-#: ../rules/base.xml.in.h:235
-msgid "Four-level key with comma"
-msgstr ""
-
-#: ../rules/base.xml.in.h:236
-msgid "Four-level key with dot"
-msgstr ""
-
-#: ../rules/base.xml.in.h:237
-msgid "Four-level key with dot, latin-9 restriction"
-msgstr ""
-
-#: ../rules/base.xml.in.h:238
-msgid "Four-level key with momayyez"
-msgstr ""
-
-#: ../rules/base.xml.in.h:239
-msgid "Fra"
-msgstr "ΓΑΛ"
-
-#: ../rules/base.xml.in.h:240
-msgid "France"
-msgstr "Γαλλία"
-
-#: ../rules/base.xml.in.h:241
-msgid "French"
-msgstr "Γαλλικά"
-
-#: ../rules/base.xml.in.h:242
-msgid "French (Macintosh)"
-msgstr ""
-
-#: ../rules/base.xml.in.h:243
-msgid "French (legacy)"
-msgstr ""
-
-#: ../rules/base.xml.in.h:244
-msgid "French Dvorak"
-msgstr ""
-
-#: ../rules/base.xml.in.h:245
-msgid "French, Sun dead keys"
-msgstr ""
-
-#: ../rules/base.xml.in.h:246
-msgid "French, eliminate dead keys"
-msgstr ""
-
-#: ../rules/base.xml.in.h:247
-msgid "Fujitsu-Siemens Computers AMILO laptop"
-msgstr ""
-
-#: ../rules/base.xml.in.h:248
-msgid "Fula"
-msgstr ""
-
-#: ../rules/base.xml.in.h:249
-msgid "GBr"
-msgstr "ΜΒΡ"
-
-#: ../rules/base.xml.in.h:250
-msgid "Ga"
-msgstr ""
-
-#: ../rules/base.xml.in.h:251
-msgid "Generic 101-key PC"
-msgstr "Τυπικός Ηλεκ. Υπολογιστής 101-πλήκτÏων"
-
-#: ../rules/base.xml.in.h:252
-msgid "Generic 102-key (Intl) PC"
-msgstr "Τυπικός Ηλεκ. Υπολογιστής 102-πλήκτÏων (Διεθνές)"
-
-#: ../rules/base.xml.in.h:253
-msgid "Generic 104-key PC"
-msgstr "Τυπικός Ηλεκ. Υπολογιστής 104-πλήκτÏων"
-
-#: ../rules/base.xml.in.h:254
-msgid "Generic 105-key (Intl) PC"
-msgstr "Τυπικός Ηλεκ. Υπολογιστής 105-πλήκτÏων (Διεθνές)"
-
-#: ../rules/base.xml.in.h:255
-msgid "Genius Comfy KB-12e"
-msgstr ""
-
-#: ../rules/base.xml.in.h:256
-msgid "Genius Comfy KB-16M / Genius MM Keyboard KWD-910"
-msgstr "Genius Comfy KB-16M / Genius MM Keyboard KWD-910"
-
-#: ../rules/base.xml.in.h:257
-msgid "Genius Comfy KB-21e-Scroll"
-msgstr "Genius Comfy KB-21e-Scroll"
-
-#: ../rules/base.xml.in.h:258
-msgid "Genius KB-19e NB"
-msgstr ""
-
-#: ../rules/base.xml.in.h:259
-msgid "Genius KKB-2050HS"
-msgstr ""
-
-#: ../rules/base.xml.in.h:260
-msgid "Geo"
-msgstr "ΓΕΩ"
-
-#: ../rules/base.xml.in.h:261
-msgid "Georgia"
-msgstr "ΓεωÏγία"
-
-#: ../rules/base.xml.in.h:262
-msgid "Georgian"
-msgstr ""
-
-#: ../rules/base.xml.in.h:263
-msgid "Georgian AZERTY Tskapo"
-msgstr ""
-
-#: ../rules/base.xml.in.h:264
-msgid "German (Macintosh)"
-msgstr ""
-
-#: ../rules/base.xml.in.h:265
-msgid "German, Sun dead keys"
-msgstr ""
-
-#: ../rules/base.xml.in.h:266
-msgid "German, eliminate dead keys"
-msgstr ""
-
-#: ../rules/base.xml.in.h:267
-msgid "Germany"
-msgstr "ΓεÏμανία"
-
-#: ../rules/base.xml.in.h:268
-msgid "Gha"
-msgstr "ΓΚΑ"
-
-#: ../rules/base.xml.in.h:269
-msgid "Ghana"
-msgstr ""
-
-#: ../rules/base.xml.in.h:270
-msgid "Gre"
-msgstr "ΕΛΛ"
-
-#: ../rules/base.xml.in.h:271
-msgid "Greece"
-msgstr "Ελλάδα"
-
-#: ../rules/base.xml.in.h:272
-msgid "Group toggle on multiply/divide key"
-msgstr ""
-
-#: ../rules/base.xml.in.h:273
-msgid "Gui"
-msgstr "ΓΟΥ"
-
-#: ../rules/base.xml.in.h:274
-msgid "Guinea"
-msgstr ""
-
-#: ../rules/base.xml.in.h:275
-msgid "Gujarati"
-msgstr "ΓκουτζαÏάτι"
-
-#: ../rules/base.xml.in.h:276
-msgid "Gurmukhi"
-msgstr "ΓκουÏμοÏχι"
-
-#: ../rules/base.xml.in.h:277
-msgid "Gurmukhi Jhelum"
-msgstr ""
-
-#: ../rules/base.xml.in.h:278
-msgid "Gyration"
-msgstr ""
-
-#: ../rules/base.xml.in.h:279
-msgid "Happy Hacking Keyboard"
-msgstr ""
-
-#: ../rules/base.xml.in.h:280
-msgid "Happy Hacking Keyboard for Mac"
-msgstr ""
-
-#: ../rules/base.xml.in.h:281
-msgid "Hausa"
-msgstr "Χάουζα"
-
-#: ../rules/base.xml.in.h:282
-msgid "Hewlett-Packard Internet Keyboard"
-msgstr "Hewlett-Packard Internet Keyboard"
-
-#: ../rules/base.xml.in.h:283
-msgid "Hewlett-Packard Mini 110 Notebook"
-msgstr "Hewlett-Packard Mini 110 Notebook"
-
-#: ../rules/base.xml.in.h:284
-msgid "Hewlett-Packard Omnibook 500 FA"
-msgstr "Hewlett-Packard Omnibook 500 FA"
-
-#: ../rules/base.xml.in.h:285
-msgid "Hewlett-Packard Omnibook 5xx"
-msgstr "Hewlett-Packard Omnibook 5xx"
-
-#: ../rules/base.xml.in.h:286
-msgid "Hewlett-Packard Omnibook 6000/6100"
-msgstr "Hewlett-Packard Omnibook 6000/6100"
-
-#: ../rules/base.xml.in.h:287
-msgid "Hewlett-Packard Omnibook XE3 GC"
-msgstr "Hewlett-Packard Omnibook XE3 GC"
-
-#: ../rules/base.xml.in.h:288
-msgid "Hewlett-Packard Omnibook XE3 GF"
-msgstr "Hewlett-Packard Omnibook XE3 GF"
-
-#: ../rules/base.xml.in.h:289
-msgid "Hewlett-Packard Omnibook XT1000"
-msgstr "Hewlett-Packard Omnibook XT1000"
-
-#: ../rules/base.xml.in.h:290
-msgid "Hewlett-Packard Pavilion ZT11xx"
-msgstr "Hewlett-Packard Pavilion ZT11xx"
-
-#: ../rules/base.xml.in.h:291
-msgid "Hewlett-Packard Pavilion dv5"
-msgstr "Hewlett-Packard Pavilion dv5"
-
-#: ../rules/base.xml.in.h:292
-msgid "Hewlett-Packard SK-250x Multimedia Keyboard"
-msgstr "Hewlett-Packard SK-250x Multimedia Keyboard"
-
-#: ../rules/base.xml.in.h:293
-msgid "Hewlett-Packard nx9020"
-msgstr "Hewlett-Packard nx9020"
-
-#: ../rules/base.xml.in.h:294
-msgid "Hexadecimal"
-msgstr "Δεκαεξαδικό"
-
-#: ../rules/base.xml.in.h:295
-msgid "Hindi Bolnagri"
-msgstr ""
-
-#: ../rules/base.xml.in.h:296
-msgid "Hindi Wx"
-msgstr ""
-
-#: ../rules/base.xml.in.h:297
-msgid "Homophonic"
-msgstr ""
-
-#: ../rules/base.xml.in.h:298
-msgid "Honeywell Euroboard"
-msgstr "Honeywell Euroboard"
-
-#: ../rules/base.xml.in.h:299
-msgid "Hrv"
-msgstr "ΚΡΟ"
-
-#: ../rules/base.xml.in.h:300
-msgid "Hun"
-msgstr "ΟΥΓ"
-
-#: ../rules/base.xml.in.h:301
-msgid "Hungary"
-msgstr "ΟυγγαÏία"
-
-#: ../rules/base.xml.in.h:302
-msgid "Hyper is mapped to Win-keys"
-msgstr ""
-
-#: ../rules/base.xml.in.h:303
-msgid "IBM (LST 1205-92)"
-msgstr ""
-
-#: ../rules/base.xml.in.h:304
-msgid "IBM Rapid Access"
-msgstr "IBM Rapid Access"
-
-#: ../rules/base.xml.in.h:305
-msgid "IBM Rapid Access II"
-msgstr "IBM Rapid Access II"
-
-#: ../rules/base.xml.in.h:306
-msgid "IBM Space Saver"
-msgstr "IBM Space Saver"
-
-#: ../rules/base.xml.in.h:307
-msgid "IBM ThinkPad 560Z/600/600E/A22E"
-msgstr "IBM ThinkPad 560Z/600/600E/A22E"
-
-#: ../rules/base.xml.in.h:308
-msgid "IBM ThinkPad R60/T60/R61/T61"
-msgstr "IBM ThinkPad R60/T60/R61/T61"
-
-#: ../rules/base.xml.in.h:309
-msgid "IBM ThinkPad Z60m/Z60t/Z61m/Z61t"
-msgstr "IBM ThinkPad Z60m/Z60t/Z61m/Z61t"
-
-#: ../rules/base.xml.in.h:310
-msgid "ISO Alternate"
-msgstr "Εναλλακτικό ISO"
-
-#: ../rules/base.xml.in.h:311
-msgid "Iceland"
-msgstr "Ισλανδία"
-
-#: ../rules/base.xml.in.h:312
-msgid "Igbo"
-msgstr "Ίγκμπο"
-
-#: ../rules/base.xml.in.h:313
-msgid "Include dead tilde"
-msgstr ""
-
-#: ../rules/base.xml.in.h:314
-msgid "Ind"
-msgstr "ΙÎΔ"
-
-#: ../rules/base.xml.in.h:315
-msgid "India"
-msgstr "Ινδία"
-
-#: ../rules/base.xml.in.h:316
-msgid "International (AltGr dead keys)"
-msgstr "Διεθνές (με νεκÏά πλήκτÏα AltGr)"
-
-#: ../rules/base.xml.in.h:317
-msgid "International (with dead keys)"
-msgstr "Διεθνές (με νεκÏά πλήκτÏα)"
-
-#: ../rules/base.xml.in.h:318
-msgid "Inuktitut"
-msgstr "ΙνουκτικοÏÏ„"
-
-#: ../rules/base.xml.in.h:319
-msgid "Iran"
-msgstr "ΙÏάν"
-
-#: ../rules/base.xml.in.h:320
-msgid "Iraq"
-msgstr "ΙÏάκ"
-
-#: ../rules/base.xml.in.h:321
-msgid "Ireland"
-msgstr "ΙÏλανδία"
-
-#: ../rules/base.xml.in.h:322
-msgid "Irl"
-msgstr "ΙΡΛ"
-
-#: ../rules/base.xml.in.h:323
-msgid "Irn"
-msgstr "ΙΡÎ"
-
-#: ../rules/base.xml.in.h:324
-msgid "Irq"
-msgstr "ΙΡΚ"
-
-#: ../rules/base.xml.in.h:325
-msgid "Isl"
-msgstr "ΙΣΛ"
-
-#: ../rules/base.xml.in.h:326
-msgid "Isr"
-msgstr "ΙΣΡ"
-
-#: ../rules/base.xml.in.h:327
-msgid "Israel"
-msgstr "ΙσÏαήλ"
-
-#: ../rules/base.xml.in.h:328
-msgid "Ita"
-msgstr "ΙΤΑ"
-
-#: ../rules/base.xml.in.h:329
-msgid "Italy"
-msgstr "Ιταλία"
-
-#: ../rules/base.xml.in.h:330
-msgid "Japan"
-msgstr "Ιαπωνία"
-
-#: ../rules/base.xml.in.h:331
-msgid "Japan (PC-98xx Series)"
-msgstr ""
-
-#: ../rules/base.xml.in.h:332
-msgid "Japanese keyboard options"
-msgstr "Επιλογές Î™Î±Ï€Ï‰Î½Î¹ÎºÎ¿Ï Ï€Î»Î·ÎºÏ„Ïολογίου"
-
-#: ../rules/base.xml.in.h:333
-msgid "Jpn"
-msgstr "ΙΑΠ"
-
-#: ../rules/base.xml.in.h:334
-msgid "Kalmyk"
-msgstr "Καλμυκία"
-
-#: ../rules/base.xml.in.h:335
-msgid "Kana"
-msgstr ""
-
-#: ../rules/base.xml.in.h:336
-msgid "Kana Lock key is locking"
-msgstr ""
-
-#: ../rules/base.xml.in.h:337
-msgid "Kannada"
-msgstr "Κάναντα"
-
-#: ../rules/base.xml.in.h:338
-msgid "Kashubian"
-msgstr ""
-
-#: ../rules/base.xml.in.h:339
-msgid "Kaz"
-msgstr "ΚΑΖ"
-
-#: ../rules/base.xml.in.h:340
-msgid "Kazakh with Russian"
-msgstr ""
-
-#: ../rules/base.xml.in.h:341
-msgid "Kazakhstan"
-msgstr ""
-
-#: ../rules/base.xml.in.h:342
-msgid "Key sequence to kill the X server"
-msgstr "Συνδυασμός πλήκτÏων για τεÏματισμό του εξυπηÏετητή X"
-
-#: ../rules/base.xml.in.h:343
-msgid "Key to choose 3rd level"
-msgstr "ΠλήκτÏο για επιλογή Ï„Ïίτου επιπέδου"
-
-#: ../rules/base.xml.in.h:344
-msgid "Key(s) to change layout"
-msgstr "Συνδυασμοί πλήκτÏων για αλλαγή διάταξης πληκτÏολογίου"
-
-#: ../rules/base.xml.in.h:345
-msgid "Keytronic FlexPro"
-msgstr "Keytronic FlexPro"
-
-#: ../rules/base.xml.in.h:346
-msgid "Kgz"
-msgstr "ΚΥΡ"
-
-#: ../rules/base.xml.in.h:347
-msgid "Khm"
-msgstr "ΧΜΕ"
-
-#: ../rules/base.xml.in.h:348
-msgid "Komi"
-msgstr ""
-
-#: ../rules/base.xml.in.h:349
-msgid "Kor"
-msgstr "ΚΟΡ"
-
-#: ../rules/base.xml.in.h:350
-msgid "Korea, Republic of"
-msgstr ""
-
-#: ../rules/base.xml.in.h:351
-msgid "Ktunaxa"
-msgstr ""
-
-#: ../rules/base.xml.in.h:352
-msgid "Kurdish, (F)"
-msgstr ""
-
-#: ../rules/base.xml.in.h:353
-msgid "Kurdish, Arabic-Latin"
-msgstr ""
-
-#: ../rules/base.xml.in.h:354
-msgid "Kurdish, Latin Alt-Q"
-msgstr ""
-
-#: ../rules/base.xml.in.h:355
-msgid "Kurdish, Latin Q"
-msgstr ""
-
-#: ../rules/base.xml.in.h:356
-msgid "Kyrgyzstan"
-msgstr "ΚιÏγιστάν"
-
-#: ../rules/base.xml.in.h:357
-msgid "LAm"
-msgstr "ΛΑΜ"
-
-#: ../rules/base.xml.in.h:358
-msgid "LEKP"
-msgstr ""
-
-#: ../rules/base.xml.in.h:359
-msgid "LEKPa"
-msgstr ""
-
-#: ../rules/base.xml.in.h:360
-msgid "Lao"
-msgstr "ΛΑΟ"
-
-#: ../rules/base.xml.in.h:361
-msgid "Laos"
-msgstr "Λάος"
-
-#: ../rules/base.xml.in.h:362
-msgid "Laptop/notebook Compaq (eg. Armada) Laptop Keyboard"
-msgstr ""
-
-#: ../rules/base.xml.in.h:363
-msgid "Laptop/notebook Compaq (eg. Presario) Internet Keyboard"
-msgstr ""
-
-#: ../rules/base.xml.in.h:364
-msgid "Laptop/notebook eMachines m68xx"
-msgstr ""
-
-#: ../rules/base.xml.in.h:365
-msgid "Latin"
-msgstr ""
-
-#: ../rules/base.xml.in.h:366
-msgid "Latin American"
-msgstr "Λατινική ΑμεÏική"
-
-#: ../rules/base.xml.in.h:367
-msgid "Latin Unicode"
-msgstr ""
-
-#: ../rules/base.xml.in.h:368
-msgid "Latin Unicode qwerty"
-msgstr ""
-
-#: ../rules/base.xml.in.h:369
-msgid "Latin qwerty"
-msgstr ""
-
-#: ../rules/base.xml.in.h:370
-msgid "Latin unicode"
-msgstr ""
-
-#: ../rules/base.xml.in.h:371
-msgid "Latin unicode qwerty"
-msgstr ""
-
-#: ../rules/base.xml.in.h:372
-msgid "Latin with guillemets"
-msgstr ""
-
-#: ../rules/base.xml.in.h:373
-msgid "Latvia"
-msgstr "Λεττονία"
-
-#: ../rules/base.xml.in.h:374
-msgid "Lav"
-msgstr "ΛΕΤ"
-
-#: ../rules/base.xml.in.h:375
-msgid "Left Alt"
-msgstr "ΑÏιστεÏÏŒ Alt"
-
-#: ../rules/base.xml.in.h:376
-msgid "Left Alt (while pressed)"
-msgstr ""
-
-#: ../rules/base.xml.in.h:377
-msgid "Left Alt is swapped with Left Win"
-msgstr ""
-
-#: ../rules/base.xml.in.h:378
-msgid "Left Ctrl"
-msgstr "ΑÏιστεÏÏŒ Ctrl"
-
-#: ../rules/base.xml.in.h:379
-msgid "Left Ctrl (to first layout), Right Ctrl (to last layout)"
-msgstr ""
-
-#: ../rules/base.xml.in.h:380
-msgid "Left Ctrl+Left Shift"
-msgstr "ΑÏιστεÏÏŒ Ctrl+ΑÏιστεÏÏŒ Shift"
-
-#: ../rules/base.xml.in.h:381
-msgid "Left Shift"
-msgstr "ΑÏιστεÏÏŒ Shift"
-
-#: ../rules/base.xml.in.h:382
-msgid "Left Win"
-msgstr "ΑÏιστεÏÏŒ Win"
-
-#: ../rules/base.xml.in.h:383
-msgid "Left Win (to first layout), Right Win/Menu (to last layout)"
-msgstr ""
-
-#: ../rules/base.xml.in.h:384
-msgid "Left Win (while pressed)"
-msgstr ""
-
-#: ../rules/base.xml.in.h:385
-msgid "Left hand"
-msgstr ""
-
-#: ../rules/base.xml.in.h:386
-msgid "Left handed Dvorak"
-msgstr ""
-
-#: ../rules/base.xml.in.h:387
-msgid "Legacy"
-msgstr "ΠαÏαδοσιακό"
-
-#: ../rules/base.xml.in.h:388
-msgid "Legacy Wang 724"
-msgstr ""
-
-#. Actually, with KP_SEPARATOR, as the old keypad(comma)
-#: ../rules/base.xml.in.h:390
-msgid "Legacy key with comma"
-msgstr ""
-
-#: ../rules/base.xml.in.h:391
-msgid "Legacy key with dot"
-msgstr ""
-
-#: ../rules/base.xml.in.h:392
-msgid "Less-than/Greater-than"
-msgstr ""
-
-#: ../rules/base.xml.in.h:393
-msgid "Lithuania"
-msgstr "Λιθουανία"
-
-#: ../rules/base.xml.in.h:394
-msgid "Logitech Access Keyboard"
-msgstr "Logitech Access Keyboard"
-
-#: ../rules/base.xml.in.h:395
-msgid "Logitech Cordless Desktop"
-msgstr "Logitech Cordless Desktop"
-
-#: ../rules/base.xml.in.h:396
-msgid "Logitech Cordless Desktop (alternate option)"
-msgstr "Logitech Cordless Desktop (εναλλακτική επιλογή)"
-
-#: ../rules/base.xml.in.h:397
-msgid "Logitech Cordless Desktop EX110"
-msgstr "Logitech Cordless Desktop EX110"
-
-#: ../rules/base.xml.in.h:398
-msgid "Logitech Cordless Desktop LX-300"
-msgstr "Logitech Cordless Desktop LX-300"
-
-#: ../rules/base.xml.in.h:399
-msgid "Logitech Cordless Desktop Navigator"
-msgstr "Logitech Cordless Desktop Navigator"
-
-#: ../rules/base.xml.in.h:400
-msgid "Logitech Cordless Desktop Optical"
-msgstr "Logitech Cordless Desktop Optical"
-
-#: ../rules/base.xml.in.h:401
-msgid "Logitech Cordless Desktop Pro (alternate option 2)"
-msgstr "Logitech Cordless Desktop Pro (εναλλακτική επιλογή 2)"
-
-#: ../rules/base.xml.in.h:402
-msgid "Logitech Cordless Desktop iTouch"
-msgstr "Logitech Cordless Desktop iTouch"
-
-#: ../rules/base.xml.in.h:403
-msgid "Logitech Cordless Freedom/Desktop Navigator"
-msgstr "Logitech Cordless Freedom/Desktop Navigator"
-
-#: ../rules/base.xml.in.h:404
-msgid "Logitech G15 extra keys via G15daemon"
-msgstr ""
-
-#: ../rules/base.xml.in.h:405
-msgid "Logitech Generic Keyboard"
-msgstr ""
-
-#: ../rules/base.xml.in.h:406
-msgid "Logitech Internet 350 Keyboard"
-msgstr ""
-
-#: ../rules/base.xml.in.h:407
-msgid "Logitech Internet Keyboard"
-msgstr "Logitech Internet Keyboard"
-
-#: ../rules/base.xml.in.h:408
-msgid "Logitech Internet Navigator Keyboard"
-msgstr "Logitech Internet Navigator Keyboard"
-
-#: ../rules/base.xml.in.h:409
-msgid "Logitech Media Elite Keyboard"
-msgstr ""
-
-#: ../rules/base.xml.in.h:410
-msgid "Logitech Ultra-X Cordless Media Desktop Keyboard"
-msgstr ""
-
-#: ../rules/base.xml.in.h:411
-msgid "Logitech Ultra-X Keyboard"
-msgstr "Logitech Ultra-X Keyboard"
-
-#: ../rules/base.xml.in.h:412
-msgid "Logitech diNovo Edge Keyboard"
-msgstr ""
-
-#: ../rules/base.xml.in.h:413
-msgid "Logitech diNovo Keyboard"
-msgstr ""
-
-#: ../rules/base.xml.in.h:414
-msgid "Logitech iTouch"
-msgstr "Logitech iTouch"
-
-#: ../rules/base.xml.in.h:415
-msgid "Logitech iTouch Cordless Keyboard (model Y-RB6)"
-msgstr "Logitech iTouch Cordless Keyboard (μοντέλο Y-RB6)"
-
-#: ../rules/base.xml.in.h:416
-msgid "Logitech iTouch Internet Navigator Keyboard SE"
-msgstr ""
-
-#: ../rules/base.xml.in.h:417
-msgid "Logitech iTouch Internet Navigator Keyboard SE (USB)"
-msgstr ""
-
-#: ../rules/base.xml.in.h:418
-msgid "Lower Sorbian"
-msgstr ""
-
-#: ../rules/base.xml.in.h:419
-msgid "Lower Sorbian (qwertz)"
-msgstr ""
-
-#: ../rules/base.xml.in.h:420
-msgid "Ltu"
-msgstr "ΛΙΘ"
-
-#: ../rules/base.xml.in.h:421
-msgid "MESS"
-msgstr ""
-
-#: ../rules/base.xml.in.h:422
-msgid "MNE"
-msgstr ""
-
-#: ../rules/base.xml.in.h:423
-msgid "MacBook/MacBook Pro"
-msgstr ""
-
-#: ../rules/base.xml.in.h:424
-msgid "MacBook/MacBook Pro (Intl)"
-msgstr ""
-
-#: ../rules/base.xml.in.h:425
-msgid "Macedonia"
-msgstr "ΦΥΡΟΜ"
-
-#: ../rules/base.xml.in.h:426
-msgid "Macintosh"
-msgstr "Macintosh"
-
-#: ../rules/base.xml.in.h:427
-msgid "Macintosh Old"
-msgstr "Macintosh Παλαιό"
-
-#: ../rules/base.xml.in.h:428
-msgid "Macintosh, Sun dead keys"
-msgstr ""
-
-#: ../rules/base.xml.in.h:429
-msgid "Macintosh, eliminate dead keys"
-msgstr ""
-
-#: ../rules/base.xml.in.h:430
-msgid "Make CapsLock an additional Backspace"
-msgstr ""
-
-#: ../rules/base.xml.in.h:431
-msgid "Make CapsLock an additional Ctrl"
-msgstr ""
-
-#: ../rules/base.xml.in.h:432
-msgid "Make CapsLock an additional ESC"
-msgstr ""
-
-#: ../rules/base.xml.in.h:433
-msgid "Make CapsLock an additional Hyper"
-msgstr ""
-
-#: ../rules/base.xml.in.h:434
-msgid "Make CapsLock an additional NumLock"
-msgstr ""
-
-#: ../rules/base.xml.in.h:435
-msgid "Make CapsLock an additional Super"
-msgstr ""
-
-#: ../rules/base.xml.in.h:436
-msgid "Mal"
-msgstr "ΜΑΛ"
-
-#: ../rules/base.xml.in.h:437
-msgid "Malayalam"
-msgstr "Μαλαγιαλάμ"
-
-#: ../rules/base.xml.in.h:438
-msgid "Malayalam Lalitha"
-msgstr ""
-
-#: ../rules/base.xml.in.h:439
-msgid "Maldives"
-msgstr "Μαλδίβες"
-
-#: ../rules/base.xml.in.h:440
-msgid "Malta"
-msgstr "Μάλτα"
-
-#: ../rules/base.xml.in.h:441
-msgid "Maltese keyboard with US layout"
-msgstr ""
-
-#: ../rules/base.xml.in.h:442
-msgid "Mao"
-msgstr "ΜΑΟ"
-
-#: ../rules/base.xml.in.h:443
-msgid "Maori"
-msgstr "ΜαοÏί"
-
-#: ../rules/base.xml.in.h:444
-msgid "Memorex MX1998"
-msgstr "Memorex MX1998"
-
-#: ../rules/base.xml.in.h:445
-msgid "Memorex MX2500 EZ-Access Keyboard"
-msgstr "Memorex MX2500 EZ-Access Keyboard"
-
-#: ../rules/base.xml.in.h:446
-msgid "Memorex MX2750"
-msgstr "Memorex MX2750"
-
-#: ../rules/base.xml.in.h:447
-msgid "Menu"
-msgstr "ΜενοÏ"
-
-#: ../rules/base.xml.in.h:448
-msgid "Meta is mapped to Left Win"
-msgstr ""
-
-#: ../rules/base.xml.in.h:449
-msgid "Meta is mapped to Win keys"
-msgstr ""
-
-#: ../rules/base.xml.in.h:450
-msgid "Microsoft Comfort Curve Keyboard 2000"
-msgstr ""
-
-#: ../rules/base.xml.in.h:451
-msgid "Microsoft Internet Keyboard"
-msgstr "Microsoft Internet Keyboard"
-
-#: ../rules/base.xml.in.h:452
-msgid "Microsoft Internet Keyboard Pro, Swedish"
-msgstr ""
-
-#: ../rules/base.xml.in.h:453
-msgid "Microsoft Natural"
-msgstr "Microsoft Natural"
-
-#: ../rules/base.xml.in.h:454
-msgid "Microsoft Natural Keyboard Elite"
-msgstr ""
-
-#: ../rules/base.xml.in.h:455
-msgid "Microsoft Natural Keyboard Pro / Microsoft Internet Keyboard Pro"
-msgstr ""
-
-#: ../rules/base.xml.in.h:456
-msgid "Microsoft Natural Keyboard Pro OEM"
-msgstr ""
-
-#: ../rules/base.xml.in.h:457
-msgid "Microsoft Natural Keyboard Pro USB / Microsoft Internet Keyboard Pro"
-msgstr ""
-
-#: ../rules/base.xml.in.h:458
-msgid "Microsoft Natural Wireless Ergonomic Keyboard 7000"
-msgstr ""
-
-#: ../rules/base.xml.in.h:459
-msgid "Microsoft Office Keyboard"
-msgstr ""
-
-#: ../rules/base.xml.in.h:460
-msgid "Microsoft Wireless Multimedia Keyboard 1.0A"
-msgstr ""
-
-#: ../rules/base.xml.in.h:461
-msgid "Miscellaneous compatibility options"
-msgstr "ΔιάφοÏες επιλογές συμβατότητας"
-
-#: ../rules/base.xml.in.h:462
-msgid "Mkd"
-msgstr "ΦΥΡ"
-
-#: ../rules/base.xml.in.h:463
-msgid "Mlt"
-msgstr "ΜΑΛ"
-
-#: ../rules/base.xml.in.h:464
-msgid "Mmr"
-msgstr "ΜΥΑ"
-
-#: ../rules/base.xml.in.h:465
-msgid "Mng"
-msgstr "ΜΟΓ"
-
-#: ../rules/base.xml.in.h:466
-msgid "Mongolia"
-msgstr "Μογγολία"
-
-#: ../rules/base.xml.in.h:467
-msgid "Montenegro"
-msgstr ""
-
-#: ../rules/base.xml.in.h:468
-msgid "Morocco"
-msgstr ""
-
-#: ../rules/base.xml.in.h:469
-msgid "Multilingual"
-msgstr "Πολυγλωσσικό"
-
-#: ../rules/base.xml.in.h:470
-msgid "Multilingual, first part"
-msgstr ""
-
-#: ../rules/base.xml.in.h:471
-msgid "Multilingual, second part"
-msgstr "Πολυγλωσσικό, δεÏτεÏο μέÏος"
-
-#: ../rules/base.xml.in.h:472
-msgid "Myanmar"
-msgstr "ΜυανμάÏ"
-
-#: ../rules/base.xml.in.h:473
-msgid "NICOLA-F style Backspace"
-msgstr ""
-
-#: ../rules/base.xml.in.h:474
-msgid "NLA"
-msgstr ""
-
-#: ../rules/base.xml.in.h:475
-msgid "Nativo"
-msgstr ""
-
-#: ../rules/base.xml.in.h:476
-msgid "Nativo for Esperanto"
-msgstr ""
-
-#: ../rules/base.xml.in.h:477
-msgid "Nativo for USA keyboards"
-msgstr ""
-
-#: ../rules/base.xml.in.h:478
-msgid "Neo 2"
-msgstr ""
-
-#: ../rules/base.xml.in.h:479
-msgid "Nep"
-msgstr "ÎΕΠ"
-
-#: ../rules/base.xml.in.h:480
-msgid "Nepal"
-msgstr ""
-
-#: ../rules/base.xml.in.h:481
-msgid "Netherlands"
-msgstr "Ολλανδία"
-
-#: ../rules/base.xml.in.h:482
-#, fuzzy
-msgid "New phonetic"
-msgstr "Φωνητικό"
-
-#: ../rules/base.xml.in.h:483
-msgid "Nig"
-msgstr "ÎΙΓ"
-
-#: ../rules/base.xml.in.h:484
-msgid "Nigeria"
-msgstr ""
-
-#: ../rules/base.xml.in.h:485
-msgid "Nld"
-msgstr "ΟΛΑ"
-
-#: ../rules/base.xml.in.h:486
-msgid "Non-breakable space character at fourth level"
-msgstr ""
-
-#: ../rules/base.xml.in.h:487
-msgid "Non-breakable space character at fourth level, thin non-breakable space character at sixth level"
-msgstr ""
-
-#: ../rules/base.xml.in.h:488
-msgid "Non-breakable space character at fourth level, thin non-breakable space character at sixth level (via Ctrl+Shift)"
-msgstr ""
-
-#: ../rules/base.xml.in.h:489
-msgid "Non-breakable space character at second level"
-msgstr ""
-
-#: ../rules/base.xml.in.h:490
-msgid "Non-breakable space character at third level"
-msgstr ""
-
-#: ../rules/base.xml.in.h:491
-msgid "Non-breakable space character at third level, nothing at fourth level"
-msgstr ""
-
-#: ../rules/base.xml.in.h:492
-msgid "Non-breakable space character at third level, thin non-breakable space character at fourth level"
-msgstr ""
-
-#: ../rules/base.xml.in.h:493
-msgid "Nor"
-msgstr "ÎΟΡ"
-
-#: ../rules/base.xml.in.h:494
-msgid "Northern Saami"
-msgstr ""
-
-#: ../rules/base.xml.in.h:495
-msgid "Northern Saami, eliminate dead keys"
-msgstr "ΧωÏίς νεκÏά πλήκτÏα"
-
-#: ../rules/base.xml.in.h:496
-msgid "Northgate OmniKey 101"
-msgstr ""
-
-#: ../rules/base.xml.in.h:497
-msgid "Norway"
-msgstr "ÎοÏβηγία"
-
-#: ../rules/base.xml.in.h:498
-msgid "NumLock"
-msgstr ""
-
-#: ../rules/base.xml.in.h:499
-msgid "Numeric keypad delete key behaviour"
-msgstr "ΣυμπεÏιφοÏά πλήκτÏου διαγÏαφής του αÏÎ¹Î¸Î¼Î·Ï„Î¹ÎºÎ¿Ï Ï€Î»Î·ÎºÏ„Ïολογίου"
-
-#: ../rules/base.xml.in.h:500
-msgid "Numeric keypad keys work as with Mac"
-msgstr ""
-
-#: ../rules/base.xml.in.h:501
-msgid "Numeric keypad layout selection"
-msgstr "Επιλογή διάταξης για αÏιθμητικό πληκτÏολόγιο"
-
-#: ../rules/base.xml.in.h:502
-msgid "OADG 109A"
-msgstr "OADG 109A"
-
-#: ../rules/base.xml.in.h:503
-msgid "OLPC"
-msgstr "OLPC"
-
-#: ../rules/base.xml.in.h:504
-msgid "OLPC Dari"
-msgstr ""
-
-#: ../rules/base.xml.in.h:505
-msgid "OLPC Pashto"
-msgstr ""
-
-#: ../rules/base.xml.in.h:506
-msgid "OLPC Southern Uzbek"
-msgstr ""
-
-#: ../rules/base.xml.in.h:507
-msgid "Occitan"
-msgstr ""
-
-#: ../rules/base.xml.in.h:508
-msgid "Ogham"
-msgstr "Όγκαμ"
-
-#: ../rules/base.xml.in.h:509
-msgid "Ogham IS434"
-msgstr "Όγκαμ IS434"
-
-#: ../rules/base.xml.in.h:510
-msgid "Oriya"
-msgstr "ΟÏίγια"
-
-#: ../rules/base.xml.in.h:511
-msgid "Ortek MCK-800 MM/Internet keyboard"
-msgstr ""
-
-#: ../rules/base.xml.in.h:512
-msgid "Ossetian"
-msgstr ""
-
-#: ../rules/base.xml.in.h:513
-msgid "Ossetian, Winkeys"
-msgstr ""
-
-#: ../rules/base.xml.in.h:514
-msgid "Ossetian, legacy"
-msgstr ""
-
-#: ../rules/base.xml.in.h:515
-msgid "PC-98xx Series"
-msgstr "ΣειÏά PC-98xx"
-
-#: ../rules/base.xml.in.h:516
-msgid "Pak"
-msgstr "ΠΑΚ"
-
-#: ../rules/base.xml.in.h:517
-msgid "Pakistan"
-msgstr "Πακιστάν"
-
-#: ../rules/base.xml.in.h:518
-msgid "Pashto"
-msgstr ""
-
-#: ../rules/base.xml.in.h:519
-msgid "Pattachote"
-msgstr ""
-
-#: ../rules/base.xml.in.h:520
-msgid "Persian, with Persian Keypad"
-msgstr ""
-
-#: ../rules/base.xml.in.h:521
-msgid "Phonetic"
-msgstr "Φωνητικό"
-
-#: ../rules/base.xml.in.h:522
-msgid "Phonetic Winkeys"
-msgstr ""
-
-#: ../rules/base.xml.in.h:523
-msgid "Pol"
-msgstr "ΠΟΛ"
-
-#: ../rules/base.xml.in.h:524
-msgid "Poland"
-msgstr "Πολωνία"
-
-#: ../rules/base.xml.in.h:525
-msgid "Polytonic"
-msgstr "Πολυτονικό (παλαιά διάταξη)"
-
-#: ../rules/base.xml.in.h:526
-msgid "Portugal"
-msgstr "ΠοÏτογαλία"
-
-#: ../rules/base.xml.in.h:527
-msgid "Probhat"
-msgstr "Probhat"
-
-#: ../rules/base.xml.in.h:528
-msgid "Programmer Dvorak"
-msgstr ""
-
-#: ../rules/base.xml.in.h:529
-msgid "Propeller Voyager (KTEZ-1000)"
-msgstr "Propeller Voyager (KTEZ-1000)"
-
-#: ../rules/base.xml.in.h:530
-msgid "Prt"
-msgstr ""
-
-#: ../rules/base.xml.in.h:531
-msgid "QTronix Scorpius 98N+"
-msgstr "QTronix Scorpius 98N+"
-
-#: ../rules/base.xml.in.h:532
-msgid "Right Alt"
-msgstr ""
-
-#: ../rules/base.xml.in.h:533
-msgid "Right Alt (while pressed)"
-msgstr ""
-
-#: ../rules/base.xml.in.h:534
-msgid "Right Alt key never chooses 3rd level"
-msgstr ""
-
-#: ../rules/base.xml.in.h:535
-msgid "Right Alt, Shift+Right Alt key is Multi_Key"
-msgstr ""
-
-#: ../rules/base.xml.in.h:536
-msgid "Right Ctrl"
-msgstr ""
-
-#: ../rules/base.xml.in.h:537
-msgid "Right Ctrl (while pressed)"
-msgstr ""
-
-#: ../rules/base.xml.in.h:538
-msgid "Right Ctrl as Right Alt"
-msgstr ""
-
-#: ../rules/base.xml.in.h:539
-#, fuzzy
-msgid "Right Ctrl+Right Shift"
-msgstr "ΑÏιστεÏÏŒ Ctrl+ΑÏιστεÏÏŒ Shift"
-
-#: ../rules/base.xml.in.h:540
-msgid "Right Shift"
-msgstr ""
-
-#: ../rules/base.xml.in.h:541
-msgid "Right Win"
-msgstr ""
-
-#: ../rules/base.xml.in.h:542
-msgid "Right Win (while pressed)"
-msgstr ""
-
-#: ../rules/base.xml.in.h:543
-msgid "Right hand"
-msgstr ""
-
-#: ../rules/base.xml.in.h:544
-msgid "Right handed Dvorak"
-msgstr ""
-
-#: ../rules/base.xml.in.h:545
-msgid "Romania"
-msgstr "Ρουμανία"
-
-#: ../rules/base.xml.in.h:546
-msgid "Romanian keyboard with German letters"
-msgstr ""
-
-#: ../rules/base.xml.in.h:547
-msgid "Romanian keyboard with German letters, eliminate dead keys"
-msgstr ""
-
-#: ../rules/base.xml.in.h:548
-msgid "Rou"
-msgstr "ΡΟΥ"
-
-#: ../rules/base.xml.in.h:549
-msgid "Rus"
-msgstr "ΡΩΣ"
-
-#: ../rules/base.xml.in.h:550
-msgid "Russia"
-msgstr "Ρωσία"
-
-#: ../rules/base.xml.in.h:551
-msgid "Russian"
-msgstr "Ρωσσικό"
-
-#: ../rules/base.xml.in.h:552
-msgid "Russian phonetic"
-msgstr "Ρωσσικό φωνητικό"
-
-#: ../rules/base.xml.in.h:553
-msgid "Russian phonetic Dvorak"
-msgstr ""
-
-#: ../rules/base.xml.in.h:554
-msgid "Russian phonetic, eliminate dead keys"
-msgstr "Ρωσσικό φωνητικό, χωÏίς νεκÏά πλήκτÏα"
-
-#: ../rules/base.xml.in.h:555
-msgid "Russian with Kazakh"
-msgstr ""
-
-#: ../rules/base.xml.in.h:556
-msgid "SILVERCREST Multimedia Wireless Keyboard"
-msgstr ""
-
-#: ../rules/base.xml.in.h:557
-msgid "SK-1300"
-msgstr "SK-1300"
-
-#: ../rules/base.xml.in.h:558
-msgid "SK-2500"
-msgstr "SK-2500"
-
-#: ../rules/base.xml.in.h:559
-msgid "SK-6200"
-msgstr "SK-6200"
-
-#: ../rules/base.xml.in.h:560
-msgid "SK-7100"
-msgstr "SK-7100"
-
-#: ../rules/base.xml.in.h:561 ../rules/base.extras.xml.in.h:7
-msgid "SRB"
-msgstr "SRB"
-
-#: ../rules/base.xml.in.h:562
-msgid "SVEN Ergonomic 2500"
-msgstr "SVEN Ergonomic 2500"
-
-#: ../rules/base.xml.in.h:563
-msgid "SVEN Slim 303"
-msgstr ""
-
-#: ../rules/base.xml.in.h:564
-msgid "Samsung SDM 4500P"
-msgstr "Samsung SDM 4500P"
-
-#: ../rules/base.xml.in.h:565
-msgid "Samsung SDM 4510P"
-msgstr "Samsung SDM 4510P"
-
-#: ../rules/base.xml.in.h:566
-msgid "Scroll Lock"
-msgstr ""
-
-#: ../rules/base.xml.in.h:567
-msgid "ScrollLock"
-msgstr ""
-
-#: ../rules/base.xml.in.h:568
-msgid "Secwepemctsin"
-msgstr ""
-
-#: ../rules/base.xml.in.h:569
-msgid "Semi-colon on third level"
-msgstr ""
-
-#: ../rules/base.xml.in.h:570 ../rules/base.extras.xml.in.h:8
-msgid "Serbia"
-msgstr ""
-
-#: ../rules/base.xml.in.h:571
-msgid "Shift cancels CapsLock"
-msgstr ""
-
-#: ../rules/base.xml.in.h:572
-msgid "Shift does not cancel NumLock, chooses 3d level instead"
-msgstr ""
-
-#: ../rules/base.xml.in.h:573
-msgid "Shift with numeric keypad keys works as in MS Windows"
-msgstr ""
-
-#: ../rules/base.xml.in.h:574
-msgid "Shift+CapsLock"
-msgstr ""
-
-#: ../rules/base.xml.in.h:575
-msgid "Simple"
-msgstr "Απλό"
-
-#: ../rules/base.xml.in.h:576
-msgid "Slovakia"
-msgstr "Σλοβακία"
-
-#: ../rules/base.xml.in.h:577
-msgid "Slovenia"
-msgstr "Σλοβενία"
-
-#: ../rules/base.xml.in.h:578
-msgid "South Africa"
-msgstr ""
-
-#: ../rules/base.xml.in.h:579
-msgid "Southern Uzbek"
-msgstr ""
-
-#: ../rules/base.xml.in.h:580
-msgid "Spain"
-msgstr "Ισπανία"
-
-#: ../rules/base.xml.in.h:581
-msgid "Special keys (Ctrl+Alt+&lt;key&gt;) handled in a server"
-msgstr ""
-
-#: ../rules/base.xml.in.h:582
-msgid "SrL"
-msgstr "ΣΡΛ"
-
-#: ../rules/base.xml.in.h:583
-msgid "Sri Lanka"
-msgstr "ΣÏι Λάνκα"
-
-#: ../rules/base.xml.in.h:584
-msgid "Standard"
-msgstr "Τυπικό"
-
-#: ../rules/base.xml.in.h:585
-msgid "Standard (Cedilla)"
-msgstr ""
-
-#. RSTU 2019-91
-#: ../rules/base.xml.in.h:587
-msgid "Standard RSTU"
-msgstr ""
-
-#. RSTU 2019-91
-#: ../rules/base.xml.in.h:589
-msgid "Standard RSTU on Russian layout"
-msgstr "Τυπικό RSTU σε Ρωσσική διάταξη"
-
-#: ../rules/base.xml.in.h:590
-msgid "Sun Type 5/6"
-msgstr ""
-
-#: ../rules/base.xml.in.h:591
-msgid "Sun dead keys"
-msgstr "ÎεκÏά πλήκτÏα Sun"
-
-#: ../rules/base.xml.in.h:592
-msgid "Super Power Multimedia Keyboard"
-msgstr "Super Power Multimedia Keyboard"
-
-#: ../rules/base.xml.in.h:593
-msgid "Svdvorak"
-msgstr ""
-
-#: ../rules/base.xml.in.h:594
-msgid "Svk"
-msgstr "ΣΒΚ"
-
-#: ../rules/base.xml.in.h:595
-msgid "Svn"
-msgstr "ΣΒÎ"
-
-#: ../rules/base.xml.in.h:596
-msgid "Swap Ctrl and CapsLock"
-msgstr ""
-
-#: ../rules/base.xml.in.h:597
-msgid "Swap ESC and CapsLock"
-msgstr ""
-
-#: ../rules/base.xml.in.h:598
-msgid "Swe"
-msgstr "ΣΟΥ"
-
-#: ../rules/base.xml.in.h:599
-msgid "Sweden"
-msgstr "Σουηδία"
-
-#: ../rules/base.xml.in.h:600
-msgid "Switzerland"
-msgstr "Ελβετία"
-
-#: ../rules/base.xml.in.h:601
-msgid "Symplon PaceBook (tablet PC)"
-msgstr "Symplon PaceBook (tablet PC)"
-
-#: ../rules/base.xml.in.h:602
-msgid "Syr"
-msgstr "ΣΥΡ"
-
-#: ../rules/base.xml.in.h:603
-msgid "Syria"
-msgstr "ΣυÏία"
-
-#: ../rules/base.xml.in.h:604
-msgid "Syriac"
-msgstr "ΣυÏιακό"
-
-#: ../rules/base.xml.in.h:605
-msgid "Syriac phonetic"
-msgstr "ΣυÏιακό φωνητικό"
-
-#: ../rules/base.xml.in.h:606
-msgid "TIS-820.2538"
-msgstr "TIS-820.2538"
-
-#: ../rules/base.xml.in.h:607
-msgid "Tajikistan"
-msgstr "Τατζικιστάν"
-
-#: ../rules/base.xml.in.h:608
-msgid "Tamil"
-msgstr "Ταμίλ"
-
-#: ../rules/base.xml.in.h:609
-msgid "Tamil TAB Typewriter"
-msgstr "Ταμίλ ΓÏαφομηχανή ΤΑΒ"
-
-#: ../rules/base.xml.in.h:610
-msgid "Tamil TSCII Typewriter"
-msgstr "Ταμίλ ΓÏαφομηχανή TSCII"
-
-#: ../rules/base.xml.in.h:611
-msgid "Tamil Unicode"
-msgstr "Ταμίλ Unicode"
-
-#: ../rules/base.xml.in.h:612
-msgid "Targa Visionary 811"
-msgstr "Targa Visionary 811"
-
-#: ../rules/base.xml.in.h:613
-msgid "Tatar"
-msgstr ""
-
-#: ../rules/base.xml.in.h:614
-msgid "Telugu"
-msgstr "ΤελοÏγκου"
-
-#: ../rules/base.xml.in.h:615
-msgid "Tha"
-msgstr "ΤΑΫ"
-
-#: ../rules/base.xml.in.h:616
-msgid "Thailand"
-msgstr "Ταϊλάνδη"
-
-#: ../rules/base.xml.in.h:617
-msgid "Tibetan"
-msgstr ""
-
-#: ../rules/base.xml.in.h:618
-msgid "Tibetan (with ASCII numerals)"
-msgstr ""
-
-#: ../rules/base.xml.in.h:619
-msgid "Tifinagh"
-msgstr ""
-
-#: ../rules/base.xml.in.h:620
-msgid "Tifinagh Alternative"
-msgstr ""
-
-#: ../rules/base.xml.in.h:621
-msgid "Tifinagh Alternative Phonetic"
-msgstr ""
-
-#: ../rules/base.xml.in.h:622
-msgid "Tifinagh Extended"
-msgstr ""
-
-#: ../rules/base.xml.in.h:623
-msgid "Tifinagh Extended Phonetic"
-msgstr ""
-
-#: ../rules/base.xml.in.h:624
-msgid "Tifinagh Phonetic"
-msgstr ""
-
-#: ../rules/base.xml.in.h:625
-msgid "Tilde (~) variant"
-msgstr ""
-
-#: ../rules/base.xml.in.h:626
-msgid "Tjk"
-msgstr "ΤΖΚ"
-
-#: ../rules/base.xml.in.h:627
-msgid "To the corresponding key in a Dvorak keyboard."
-msgstr ""
-
-#: ../rules/base.xml.in.h:628
-msgid "To the corresponding key in a Qwerty keyboard."
-msgstr ""
-
-#: ../rules/base.xml.in.h:629
-msgid "Toshiba Satellite S3000"
-msgstr ""
-
-#: ../rules/base.xml.in.h:630
-#, fuzzy
-msgid "Traditional phonetic"
-msgstr "ΣυÏιακό φωνητικό"
-
-#: ../rules/base.xml.in.h:631
-msgid "Trust Direct Access Keyboard"
-msgstr ""
-
-#: ../rules/base.xml.in.h:632
-msgid "Trust Slimline"
-msgstr ""
-
-#: ../rules/base.xml.in.h:633
-msgid "Trust Wireless Keyboard Classic"
-msgstr ""
-
-#: ../rules/base.xml.in.h:634
-msgid "Tur"
-msgstr "ΤΟΥ"
-
-#: ../rules/base.xml.in.h:635
-msgid "Turkey"
-msgstr ""
-
-#: ../rules/base.xml.in.h:636
-msgid "Turkmenistan"
-msgstr ""
-
-#: ../rules/base.xml.in.h:637
-msgid "Typewriter"
-msgstr "ΓÏαφομηχανή"
-
-#: ../rules/base.xml.in.h:638
-#, fuzzy
-msgid "Typewriter, legacy"
-msgstr "ΓÏαφομηχανή"
-
-#: ../rules/base.xml.in.h:639
-msgid "UCW layout (accented letters only)"
-msgstr ""
-
-#: ../rules/base.xml.in.h:640
-msgid "US keyboard with Bosnian digraphs"
-msgstr ""
-
-#: ../rules/base.xml.in.h:641
-msgid "US keyboard with Bosnian letters"
-msgstr ""
-
-#: ../rules/base.xml.in.h:642
-msgid "US keyboard with Croatian digraphs"
-msgstr ""
-
-#: ../rules/base.xml.in.h:643
-msgid "US keyboard with Croatian letters"
-msgstr ""
-
-#: ../rules/base.xml.in.h:644
-msgid "US keyboard with Estonian letters"
-msgstr ""
-
-#: ../rules/base.xml.in.h:645
-msgid "US keyboard with Italian letters"
-msgstr ""
-
-#: ../rules/base.xml.in.h:646
-msgid "US keyboard with Lithuanian letters"
-msgstr ""
-
-#: ../rules/base.xml.in.h:647
-msgid "US keyboard with Slovenian letters"
-msgstr ""
-
-#: ../rules/base.xml.in.h:648 ../rules/base.extras.xml.in.h:9
-msgid "USA"
-msgstr "ΑΓΓ"
-
-#: ../rules/base.xml.in.h:649
-msgid "Udmurt"
-msgstr ""
-
-#: ../rules/base.xml.in.h:650
-msgid "Ukr"
-msgstr "ΟΥΚ"
-
-#: ../rules/base.xml.in.h:651
-msgid "Ukraine"
-msgstr "ΟυκÏανία"
-
-#: ../rules/base.xml.in.h:652
-msgid "Unicode additions (arrows and math operators)"
-msgstr ""
-
-#: ../rules/base.xml.in.h:653
-msgid "Unicode additions (arrows and math operators). Math operators on default level"
-msgstr ""
-
-#: ../rules/base.xml.in.h:654
-msgid "UnicodeExpert"
-msgstr "UnicodeExpert"
-
-#: ../rules/base.xml.in.h:655
-msgid "United Kingdom"
-msgstr "Ηνωμένο Βασίλειο"
-
-#: ../rules/base.xml.in.h:656
-msgid "Unitek KB-1925"
-msgstr ""
-
-#: ../rules/base.xml.in.h:657
-msgid "Urdu, Alternative phonetic"
-msgstr ""
-
-#: ../rules/base.xml.in.h:658
-msgid "Urdu, Phonetic"
-msgstr ""
-
-#: ../rules/base.xml.in.h:659
-msgid "Urdu, Winkeys"
-msgstr ""
-
-#: ../rules/base.xml.in.h:660
-msgid "Use Bosnian digraphs"
-msgstr ""
-
-#: ../rules/base.xml.in.h:661
-msgid "Use Croatian digraphs"
-msgstr ""
-
-#: ../rules/base.xml.in.h:662
-msgid "Use guillemets for quotes"
-msgstr ""
-
-#: ../rules/base.xml.in.h:663
-msgid "Use keyboard LED to show alternative layout"
-msgstr ""
-
-#: ../rules/base.xml.in.h:664
-msgid "Using space key to input non-breakable space character"
-msgstr "ΧÏήση πλήκτÏου διαστήματος για εισαγωγή μη-διασπώμενου χαÏακτήÏα διαστήματος"
-
-#: ../rules/base.xml.in.h:665
-msgid "Usual space at any level"
-msgstr ""
-
-#: ../rules/base.xml.in.h:666
-msgid "Uzb"
-msgstr "ΟΥΖ"
-
-#: ../rules/base.xml.in.h:667
-msgid "Uzbekistan"
-msgstr "Ουζμπεκιστάν"
-
-#: ../rules/base.xml.in.h:668
-msgid "Vietnam"
-msgstr "Βιετνάμ"
-
-#: ../rules/base.xml.in.h:669
-msgid "ViewSonic KU-306 Internet Keyboard"
-msgstr ""
-
-#: ../rules/base.xml.in.h:670
-msgid "Vnm"
-msgstr "ΒΙΕ"
-
-#: ../rules/base.xml.in.h:671
-msgid "Wang 724 keypad with unicode additions (arrows and math operators)"
-msgstr ""
-
-#: ../rules/base.xml.in.h:672
-msgid "Wang 724 keypad with unicode additions (arrows and math operators). Math operators on default level"
-msgstr ""
-
-#: ../rules/base.xml.in.h:673
-msgid "Wang model 724 azerty"
-msgstr ""
-
-#: ../rules/base.xml.in.h:674
-msgid "Western"
-msgstr ""
-
-#: ../rules/base.xml.in.h:675
-msgid "Winbook Model XP5"
-msgstr "Winbook Model XP5"
-
-#: ../rules/base.xml.in.h:676
-msgid "Winkeys"
-msgstr "Winkeys"
-
-#: ../rules/base.xml.in.h:677
-msgid "With &lt;\\|&gt; key"
-msgstr "Με πλήκτÏο &lt;\\|&gt;"
-
-#: ../rules/base.xml.in.h:678
-msgid "With EuroSign on 5"
-msgstr "Με το σÏμβολο του ΕυÏÏŽ στο 5"
-
-#: ../rules/base.xml.in.h:679
-msgid "With guillemets"
-msgstr ""
-
-#: ../rules/base.xml.in.h:680
-msgid "Yahoo! Internet Keyboard"
-msgstr "Yahoo! Internet Keyboard"
-
-#: ../rules/base.xml.in.h:681
-msgid "Yakut"
-msgstr ""
-
-#: ../rules/base.xml.in.h:682
-msgid "Yoruba"
-msgstr ""
-
-#: ../rules/base.xml.in.h:683
-msgid "Z and ZHE swapped"
-msgstr ""
-
-#: ../rules/base.xml.in.h:684
-msgid "Zar"
-msgstr ""
-
-#: ../rules/base.xml.in.h:685
-msgid "azerty"
-msgstr "azerty"
-
-#: ../rules/base.xml.in.h:686
-msgid "azerty/digits"
-msgstr "azerty/digits"
-
-#: ../rules/base.xml.in.h:687
-msgid "digits"
-msgstr "digits"
-
-#: ../rules/base.xml.in.h:688
-msgid "displaced semicolon and quote (obsolete)"
-msgstr ""
-
-#: ../rules/base.xml.in.h:689
-msgid "lyx"
-msgstr "lyx"
-
-#: ../rules/base.xml.in.h:690
-msgid "qwerty"
-msgstr "qwerty"
-
-#: ../rules/base.xml.in.h:691
-msgid "qwerty, extended Backslash"
-msgstr ""
-
-#: ../rules/base.xml.in.h:692
-msgid "qwerty/digits"
-msgstr ""
-
-#: ../rules/base.xml.in.h:693
-msgid "qwertz"
-msgstr "qwertz"
-
-#: ../rules/base.extras.xml.in.h:1
-msgid "APL"
-msgstr ""
-
-#: ../rules/base.extras.xml.in.h:2
-msgid "Atsina"
-msgstr ""
-
-#: ../rules/base.extras.xml.in.h:3
-msgid "Combining accents instead of dead keys"
-msgstr ""
-
-#: ../rules/base.extras.xml.in.h:4
-msgid "Couer D'alene Salish"
-msgstr ""
-
-#: ../rules/base.extras.xml.in.h:5
-#, fuzzy
-msgid "International (AltGr Unicode combining)"
-msgstr "Διεθνές (με νεκÏά πλήκτÏα)"
-
-#: ../rules/base.extras.xml.in.h:6
-msgid "International (AltGr Unicode combining, alternative)"
-msgstr ""
-
-#~ msgid "Alt+Control changes group."
-#~ msgstr "Το Alt+Control αλλάζει ομάδα."
-
-#~ msgid "Alt+Shift changes group."
-#~ msgstr "Το Alt+Shift αλλάζει ομάδα."
-
-#~ msgid "Control+Shift changes group."
-#~ msgstr "Το Control+Shift αλλάζει ομάδα."
-
-#~ msgid "Devanagari"
-#~ msgstr "ÎτεναβαγκάÏι"
-
-#~ msgid "Dzo"
-#~ msgstr "ΤΖΟ"
-
-#~ msgid "Dzongkha"
-#~ msgstr "Τζόνγκα"
-
-#~ msgid "Finish and Swedish"
-#~ msgstr "Φινλανδικά και Σουηδικά"
-
-#~ msgid "Sinhala"
-#~ msgstr "Σινχάλα"
-
-#~ msgid "Third level choosers"
-#~ msgstr "Επιλογείς Ï„Ïίτου επιπέδου"
-
-#~ msgid "si1452"
-#~ msgstr "si1452"
-
-#, fuzzy
-#~ msgid "\"Standard\""
-#~ msgstr "Τυπικό"
-
-#, fuzzy
-#~ msgid "Add the EuroSign to the 2 key."
-#~ msgstr "ΠÏοσθήκη του συμβόλου του ΕυÏÏŽ (€) σε πλήκτÏα"
-
-#, fuzzy
-#~ msgid "Add the EuroSign to the E key."
-#~ msgstr "ΠÏοσθήκη του συμβόλου του ΕυÏÏŽ (€) σε πλήκτÏα"
-
-#, fuzzy
-#~ msgid "Deva"
-#~ msgstr "ÎτβόÏακ"
-
-#, fuzzy
-#~ msgid "Sin"
-#~ msgstr "Ισπανία"
-
-#, fuzzy
-#~ msgid "Tam"
-#~ msgstr "Ταμίλ"
-
-#, fuzzy
-#~ msgid "Tel"
-#~ msgstr "ΒΕΛ"
-
-#, fuzzy
-#~ msgid "Turkish"
-#~ msgstr "ΤΟΥ"
-
-#, fuzzy
-#~ msgid "Urd"
-#~ msgstr "ΟΥΚ"
-
-#~ msgid "Pro Keypad"
-#~ msgstr "Pro Keypad"
-
-#~ msgid "IBM ThinkPad 560Z/600/600E/A22E, Intl"
-#~ msgstr "IBM ThinkPad 560Z/600/600E/A22E, Intl"
+# Translation of xkeyboard-config to Greek
+# This file is distributed under the same license as the xkeyboard-config package.
+# Copyright (C) 2004, 2005, 2010, Free Software Foundation.
+# Simos Xenitellis <simos.lists@googlemail.com>, 2004, 2005, 2010.
+msgid ""
+msgstr ""
+"Project-Id-Version: xkeyboard-config 1.8\n"
+"Report-Msgid-Bugs-To: svu@users.sourceforge.net\n"
+"POT-Creation-Date: 2010-01-16 18:08+0000\n"
+"PO-Revision-Date: 2010-03-21 23:36+0200\n"
+"Last-Translator: Simos Xenitellis <simos.lists@googlemail.com>\n"
+"Language-Team: Greek <team@lists.gnome.gr>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../rules/base.xml.in.h:1
+msgid "(F)"
+msgstr "(F)"
+
+#: ../rules/base.xml.in.h:2
+msgid "(Legacy) Alternative"
+msgstr ""
+
+#: ../rules/base.xml.in.h:3
+msgid "(Legacy) Alternative, Sun dead keys"
+msgstr ""
+
+#: ../rules/base.xml.in.h:4
+msgid "(Legacy) Alternative, eliminate dead keys"
+msgstr ""
+
+#: ../rules/base.xml.in.h:5
+msgid "101/104 key Compatible"
+msgstr ""
+
+#: ../rules/base.xml.in.h:6
+msgid "101/qwerty/comma/Dead keys"
+msgstr ""
+
+#: ../rules/base.xml.in.h:7
+msgid "101/qwerty/comma/Eliminate dead keys"
+msgstr ""
+
+#: ../rules/base.xml.in.h:8
+msgid "101/qwerty/dot/Dead keys"
+msgstr ""
+
+#: ../rules/base.xml.in.h:9
+msgid "101/qwerty/dot/Eliminate dead keys"
+msgstr ""
+
+#: ../rules/base.xml.in.h:10
+msgid "101/qwertz/comma/Dead keys"
+msgstr ""
+
+#: ../rules/base.xml.in.h:11
+msgid "101/qwertz/comma/Eliminate dead keys"
+msgstr ""
+
+#: ../rules/base.xml.in.h:12
+msgid "101/qwertz/dot/Dead keys"
+msgstr ""
+
+#: ../rules/base.xml.in.h:13
+msgid "101/qwertz/dot/Eliminate dead keys"
+msgstr ""
+
+#: ../rules/base.xml.in.h:14
+msgid "102/qwerty/comma/Dead keys"
+msgstr ""
+
+#: ../rules/base.xml.in.h:15
+msgid "102/qwerty/comma/Eliminate dead keys"
+msgstr ""
+
+#: ../rules/base.xml.in.h:16
+msgid "102/qwerty/dot/Dead keys"
+msgstr ""
+
+#: ../rules/base.xml.in.h:17
+msgid "102/qwerty/dot/Eliminate dead keys"
+msgstr ""
+
+#: ../rules/base.xml.in.h:18
+msgid "102/qwertz/comma/Dead keys"
+msgstr ""
+
+#: ../rules/base.xml.in.h:19
+msgid "102/qwertz/comma/Eliminate dead keys"
+msgstr ""
+
+#: ../rules/base.xml.in.h:20
+msgid "102/qwertz/dot/Dead keys"
+msgstr ""
+
+#: ../rules/base.xml.in.h:21
+msgid "102/qwertz/dot/Eliminate dead keys"
+msgstr ""
+
+#: ../rules/base.xml.in.h:22
+msgid "2"
+msgstr "2"
+
+#: ../rules/base.xml.in.h:23
+msgid "4"
+msgstr "4"
+
+#: ../rules/base.xml.in.h:24
+msgid "5"
+msgstr "5"
+
+#: ../rules/base.xml.in.h:25
+msgid "A4Tech KB-21"
+msgstr "A4Tech KB-21"
+
+#: ../rules/base.xml.in.h:26
+msgid "A4Tech KBS-8"
+msgstr "A4Tech KBS-8"
+
+#: ../rules/base.xml.in.h:27
+msgid "A4Tech Wireless Desktop RFKB-23"
+msgstr ""
+
+#: ../rules/base.xml.in.h:28
+msgid "ACPI Standard"
+msgstr ""
+
+#: ../rules/base.xml.in.h:29
+msgid "ATM/phone-style"
+msgstr ""
+
+#: ../rules/base.xml.in.h:30
+msgid "Acer AirKey V"
+msgstr "Acer AirKey V"
+
+#: ../rules/base.xml.in.h:31
+msgid "Acer C300"
+msgstr "Acer C300"
+
+#: ../rules/base.xml.in.h:32
+msgid "Acer Ferrari 4000"
+msgstr "Acer Ferrari 4000"
+
+#: ../rules/base.xml.in.h:33
+msgid "Acer Laptop"
+msgstr "ΦοÏητός Acer"
+
+#: ../rules/base.xml.in.h:34
+msgid "Add the standard behavior to Menu key"
+msgstr ""
+
+#: ../rules/base.xml.in.h:35
+msgid "Adding Esperanto circumflexes (supersigno)"
+msgstr "ΠÏοσθήκη λατινικών πεÏισπωμένων για ΕσπεÏάντο"
+
+#: ../rules/base.xml.in.h:36
+msgid "Adding EuroSign to certain keys"
+msgstr "ΠÏοσθήκη του συμβόλου του ΕυÏÏŽ (€) σε πλήκτÏα"
+
+#: ../rules/base.xml.in.h:37
+msgid "Advance Scorpius KI"
+msgstr ""
+
+#: ../rules/base.xml.in.h:38
+msgid "Afg"
+msgstr "ΑΦΓ"
+
+#: ../rules/base.xml.in.h:39
+msgid "Afghanistan"
+msgstr "Αφγανιστάν"
+
+#: ../rules/base.xml.in.h:40
+msgid "Akan"
+msgstr "Ακάν"
+
+#: ../rules/base.xml.in.h:41
+msgid "Alb"
+msgstr "ΑΛΒ"
+
+#: ../rules/base.xml.in.h:42
+msgid "Albania"
+msgstr "Αλβανία"
+
+#: ../rules/base.xml.in.h:43
+msgid "Alt and Meta are on Alt keys"
+msgstr ""
+
+#: ../rules/base.xml.in.h:44
+msgid "Alt is mapped to Right Win, Super to Menu"
+msgstr ""
+
+#: ../rules/base.xml.in.h:45
+msgid "Alt+CapsLock"
+msgstr "Alt+CapsLock"
+
+#: ../rules/base.xml.in.h:46
+msgid "Alt+Ctrl"
+msgstr "Alt+Ctrl"
+
+#: ../rules/base.xml.in.h:47
+msgid "Alt+Shift"
+msgstr "Alt+Shift"
+
+#: ../rules/base.xml.in.h:48
+msgid "Alt+Space"
+msgstr "Alt+Space"
+
+#: ../rules/base.xml.in.h:49
+msgid "Alt-Q"
+msgstr "Alt-Q"
+
+#: ../rules/base.xml.in.h:50
+msgid "Alt/Win key behavior"
+msgstr "ΣυμπεÏιφοÏά πλήκτÏου Alt/Win"
+
+#: ../rules/base.xml.in.h:51
+msgid "Alternative"
+msgstr "Ενναλακτικό"
+
+#: ../rules/base.xml.in.h:52
+msgid "Alternative Eastern"
+msgstr "Εναλλακτικό ανατολικό"
+
+#: ../rules/base.xml.in.h:53
+msgid "Alternative Phonetic"
+msgstr "Εναλλακτικό φωνητικό"
+
+#: ../rules/base.xml.in.h:54
+msgid "Alternative international (former us_intl)"
+msgstr "Εναλλακτικό διεθνές (Ï€Ïώην us_intl)"
+
+#: ../rules/base.xml.in.h:55
+msgid "Alternative, Sun dead keys"
+msgstr "Εναλλακτικό, Sun με νεκÏά πλήκτÏα"
+
+#: ../rules/base.xml.in.h:56
+msgid "Alternative, eliminate dead keys"
+msgstr "Εναλλακτικό, μη χÏήση νεκÏών πλήκτÏων"
+
+#: ../rules/base.xml.in.h:57
+msgid "Alternative, latin-9 only"
+msgstr "Εναλλακτικό, μόνο latin-9"
+
+#: ../rules/base.xml.in.h:58
+msgid "And"
+msgstr "ΑÎΔ"
+
+#: ../rules/base.xml.in.h:59
+msgid "Andorra"
+msgstr "ΑνδόÏÏα"
+
+#: ../rules/base.xml.in.h:60
+msgid "Any Alt key"
+msgstr "Οποιοδήποτε πλήκτÏο Alt"
+
+#: ../rules/base.xml.in.h:61
+msgid "Any Win key"
+msgstr "Οποιοδήποτε πλήκτÏο Win"
+
+#: ../rules/base.xml.in.h:62
+msgid "Any Win key (while pressed)"
+msgstr ""
+
+#: ../rules/base.xml.in.h:63
+msgid "Apostrophe (') variant"
+msgstr ""
+
+#: ../rules/base.xml.in.h:64
+msgid "Apple"
+msgstr "Apple"
+
+#: ../rules/base.xml.in.h:65
+msgid "Apple Laptop"
+msgstr "ΦοÏητός Apple"
+
+#: ../rules/base.xml.in.h:66
+msgid "Ara"
+msgstr "ΑΡΑ"
+
+#: ../rules/base.xml.in.h:67
+msgid "Arabic"
+msgstr "ΑÏαβικό"
+
+#: ../rules/base.xml.in.h:68
+msgid "Arm"
+msgstr "ΑΡΜ"
+
+#: ../rules/base.xml.in.h:69
+msgid "Armenia"
+msgstr "ΑÏμενία"
+
+#: ../rules/base.xml.in.h:70
+msgid "Asturian variant with bottom-dot H and bottom-dot L"
+msgstr ""
+
+#: ../rules/base.xml.in.h:71
+msgid "Asus Laptop"
+msgstr "ΦοÏητός Asus"
+
+#: ../rules/base.xml.in.h:72
+msgid "At bottom left"
+msgstr ""
+
+#: ../rules/base.xml.in.h:73
+msgid "At left of 'A'"
+msgstr ""
+
+#: ../rules/base.xml.in.h:74
+msgid "Aze"
+msgstr "ΑΖΕ"
+
+#: ../rules/base.xml.in.h:75
+msgid "Azerbaijan"
+msgstr "ΑζεÏμπαϊτζάν"
+
+#: ../rules/base.xml.in.h:76
+msgid "Azona RF2300 wireless Internet Keyboard"
+msgstr ""
+
+#: ../rules/base.xml.in.h:77
+msgid "BTC 5090"
+msgstr "BTC 5090"
+
+#: ../rules/base.xml.in.h:78
+msgid "BTC 5113RF Multimedia"
+msgstr "BTC 5113RF Multimedia"
+
+#: ../rules/base.xml.in.h:79
+msgid "BTC 5126T"
+msgstr "BTC 5126T"
+
+#: ../rules/base.xml.in.h:80
+msgid "BTC 6301URF"
+msgstr "BTC 6301URF"
+
+#: ../rules/base.xml.in.h:81
+msgid "BTC 9000"
+msgstr "BTC 9000"
+
+#: ../rules/base.xml.in.h:82
+msgid "BTC 9000A"
+msgstr "BTC 9000A"
+
+#: ../rules/base.xml.in.h:83
+msgid "BTC 9001AH"
+msgstr "BTC 9001AH"
+
+#: ../rules/base.xml.in.h:84
+msgid "BTC 9019U"
+msgstr "BTC 9019U"
+
+#: ../rules/base.xml.in.h:85
+msgid "BTC 9116U Mini Wireless Internet and Gaming"
+msgstr ""
+
+#: ../rules/base.xml.in.h:86
+msgid "Ban"
+msgstr "ΜΠΑ"
+
+#: ../rules/base.xml.in.h:87
+msgid "Bangladesh"
+msgstr "Μπανγκλαντές"
+
+#: ../rules/base.xml.in.h:88
+msgid "Bashkirian"
+msgstr ""
+
+#: ../rules/base.xml.in.h:89
+msgid "Bel"
+msgstr "ΒΕΛ"
+
+#: ../rules/base.xml.in.h:90
+msgid "Belarus"
+msgstr "ΛευκοÏωσία"
+
+#: ../rules/base.xml.in.h:91
+msgid "Belgium"
+msgstr "Βέλγιο"
+
+#: ../rules/base.xml.in.h:92
+msgid "BenQ X-Touch"
+msgstr "BenQ X-Touch"
+
+#: ../rules/base.xml.in.h:93
+msgid "BenQ X-Touch 730"
+msgstr "BenQ X-Touch 730"
+
+#: ../rules/base.xml.in.h:94
+msgid "BenQ X-Touch 800"
+msgstr "BenQ X-Touch 800"
+
+#: ../rules/base.xml.in.h:95
+msgid "Bengali"
+msgstr "Μπενγκάλι"
+
+#: ../rules/base.xml.in.h:96
+msgid "Bengali Probhat"
+msgstr ""
+
+#: ../rules/base.xml.in.h:97
+msgid "Bepo, ergonomic, Dvorak way"
+msgstr ""
+
+#: ../rules/base.xml.in.h:98
+msgid "Bepo, ergonomic, Dvorak way, latin-9 only"
+msgstr ""
+
+#: ../rules/base.xml.in.h:99
+msgid "Bgr"
+msgstr "ΒΟΥ"
+
+#: ../rules/base.xml.in.h:100
+msgid "Bhu"
+msgstr "ΜΠΟ"
+
+#: ../rules/base.xml.in.h:101
+msgid "Bhutan"
+msgstr "Μπουτάν"
+
+#: ../rules/base.xml.in.h:102
+msgid "Biblical Hebrew (Tiro)"
+msgstr ""
+
+#: ../rules/base.xml.in.h:103
+msgid "Bih"
+msgstr ""
+
+#: ../rules/base.xml.in.h:104
+msgid "Blr"
+msgstr "ΛΕΥ"
+
+#: ../rules/base.xml.in.h:105
+msgid "Bosnia and Herzegovina"
+msgstr "Βοσνία και ΕÏζεγοβίνη"
+
+#: ../rules/base.xml.in.h:106
+msgid "Both Alt keys together"
+msgstr "Και τα δÏο πλήκτÏα Alt μαζί"
+
+#: ../rules/base.xml.in.h:107
+msgid "Both Ctrl keys together"
+msgstr "Και τα δÏο πλήκτÏα Ctrl μαζί"
+
+#: ../rules/base.xml.in.h:108
+msgid "Both Shift keys together"
+msgstr "Και τα δÏο πλήκτÏα Shift μαζί"
+
+#: ../rules/base.xml.in.h:109
+msgid "Bra"
+msgstr "ΒΡΑ"
+
+#: ../rules/base.xml.in.h:110
+msgid "Braille"
+msgstr "ΜπÏάιγ"
+
+#: ../rules/base.xml.in.h:111
+msgid "Brazil"
+msgstr "Î’Ïαζιλία"
+
+#: ../rules/base.xml.in.h:112
+msgid "Breton"
+msgstr ""
+
+#: ../rules/base.xml.in.h:113
+msgid "Brl"
+msgstr ""
+
+#: ../rules/base.xml.in.h:114
+msgid "Brother Internet Keyboard"
+msgstr "ΠληκτÏολόγιο ΔιαδικτÏου Brother"
+
+#: ../rules/base.xml.in.h:115
+msgid "Buckwalter"
+msgstr "Buckwalter"
+
+#: ../rules/base.xml.in.h:116
+msgid "Bulgaria"
+msgstr "ΒουλγαÏία"
+
+#: ../rules/base.xml.in.h:117
+msgid "CRULP"
+msgstr "CRULP"
+
+#: ../rules/base.xml.in.h:118
+msgid "Cambodia"
+msgstr "Καμπότζη"
+
+#: ../rules/base.xml.in.h:119
+msgid "Can"
+msgstr "ΚΑÎ"
+
+#: ../rules/base.xml.in.h:120
+msgid "Canada"
+msgstr "Καναδάς"
+
+#: ../rules/base.xml.in.h:121
+msgid "Caps Lock"
+msgstr "Caps Lock"
+
+#: ../rules/base.xml.in.h:122
+msgid "CapsLock"
+msgstr "CapsLock"
+
+#: ../rules/base.xml.in.h:123
+msgid "CapsLock (to first layout), Shift+CapsLock (to last layout)"
+msgstr ""
+
+#: ../rules/base.xml.in.h:124
+msgid "CapsLock (while pressed), Alt+CapsLock does the original capslock action"
+msgstr ""
+
+#: ../rules/base.xml.in.h:125
+msgid "CapsLock acts as Shift with locking. Shift \"pauses\" CapsLock"
+msgstr ""
+
+#: ../rules/base.xml.in.h:126
+msgid "CapsLock acts as Shift with locking. Shift doesn't affect CapsLock"
+msgstr ""
+
+#: ../rules/base.xml.in.h:127
+msgid "CapsLock is disabled"
+msgstr ""
+
+#: ../rules/base.xml.in.h:128
+msgid "CapsLock key behavior"
+msgstr "ΣυμπεÏιφοÏά πλήκτÏου CapsLock"
+
+#: ../rules/base.xml.in.h:129
+msgid "CapsLock toggles Shift so all keys are affected"
+msgstr ""
+
+#: ../rules/base.xml.in.h:130
+msgid "CapsLock toggles normal capitalization of alphabetic characters"
+msgstr ""
+
+#: ../rules/base.xml.in.h:131
+msgid "CapsLock uses internal capitalization. Shift \"pauses\" CapsLock"
+msgstr ""
+
+#: ../rules/base.xml.in.h:132
+msgid "CapsLock uses internal capitalization. Shift doesn't affect CapsLock"
+msgstr ""
+
+#: ../rules/base.xml.in.h:133
+msgid "Catalan variant with middle-dot L"
+msgstr ""
+
+#: ../rules/base.xml.in.h:134
+msgid "Cedilla"
+msgstr ""
+
+#: ../rules/base.xml.in.h:135
+msgid "Che"
+msgstr "ΤΣΕ"
+
+#: ../rules/base.xml.in.h:136
+msgid "Cherokee"
+msgstr ""
+
+#: ../rules/base.xml.in.h:137
+msgid "Cherry B.UNLIMITED"
+msgstr "Cherry B.UNLIMITED"
+
+#: ../rules/base.xml.in.h:138
+msgid "Cherry Blue Line CyBo@rd"
+msgstr "Cherry Blue Line CyBo@rd"
+
+#: ../rules/base.xml.in.h:139
+msgid "Cherry Blue Line CyBo@rd (alternate option)"
+msgstr ""
+
+#: ../rules/base.xml.in.h:140
+msgid "Cherry CyBo@rd USB-Hub"
+msgstr "Cherry CyBo@rd USB-Hub"
+
+#: ../rules/base.xml.in.h:141
+msgid "Cherry CyMotion Expert"
+msgstr "Cherry CyMotion Expert"
+
+#: ../rules/base.xml.in.h:142
+msgid "Cherry CyMotion Master Linux"
+msgstr "Cherry CyMotion Master Linux"
+
+#: ../rules/base.xml.in.h:143
+msgid "Cherry CyMotion Master XPress"
+msgstr "Cherry CyMotion Master XPress"
+
+#: ../rules/base.xml.in.h:144
+msgid "Chicony Internet Keyboard"
+msgstr "Chicony Internet Keyboard"
+
+#: ../rules/base.xml.in.h:145
+msgid "Chicony KB-9885"
+msgstr "Chicony KB-9885"
+
+#: ../rules/base.xml.in.h:146
+msgid "Chicony KU-0108"
+msgstr "Chicony KU-0108"
+
+#: ../rules/base.xml.in.h:147
+msgid "Chicony KU-0420"
+msgstr "Chicony KU-0420"
+
+#: ../rules/base.xml.in.h:148
+msgid "China"
+msgstr "Κίνα"
+
+#: ../rules/base.xml.in.h:149
+msgid "Chuvash"
+msgstr ""
+
+#: ../rules/base.xml.in.h:150
+msgid "Chuvash Latin"
+msgstr ""
+
+#: ../rules/base.xml.in.h:151
+msgid "Classic"
+msgstr ""
+
+#: ../rules/base.xml.in.h:152
+msgid "Classic Dvorak"
+msgstr ""
+
+#: ../rules/base.xml.in.h:153
+msgid "Classmate PC"
+msgstr "Classmate PC"
+
+#: ../rules/base.xml.in.h:154
+msgid "CloGaelach"
+msgstr "CloGaelach"
+
+#: ../rules/base.xml.in.h:155
+msgid "Colemak"
+msgstr "Κόλεμακ"
+
+#: ../rules/base.xml.in.h:156
+msgid "Compaq Easy Access Keyboard"
+msgstr ""
+
+#: ../rules/base.xml.in.h:157
+msgid "Compaq Internet Keyboard (13 keys)"
+msgstr ""
+
+#: ../rules/base.xml.in.h:158
+msgid "Compaq Internet Keyboard (18 keys)"
+msgstr ""
+
+#: ../rules/base.xml.in.h:159
+msgid "Compaq Internet Keyboard (7 keys)"
+msgstr ""
+
+#: ../rules/base.xml.in.h:160
+msgid "Compaq iPaq Keyboard"
+msgstr ""
+
+#: ../rules/base.xml.in.h:161
+msgid "Compose key position"
+msgstr "Θέση πλήκτÏου Compose"
+
+#: ../rules/base.xml.in.h:162
+msgid "Congo, Democratic Republic of the"
+msgstr ""
+
+#: ../rules/base.xml.in.h:163
+msgid "Control + Alt + Backspace"
+msgstr "Control + Alt + Backspace"
+
+#: ../rules/base.xml.in.h:164
+msgid "Control is mapped to Alt keys, Alt is mapped to Win keys"
+msgstr ""
+
+#: ../rules/base.xml.in.h:165
+msgid "Control is mapped to Win keys (and the usual Ctrl keys)"
+msgstr ""
+
+#: ../rules/base.xml.in.h:166
+msgid "Creative Desktop Wireless 7000"
+msgstr ""
+
+#: ../rules/base.xml.in.h:167
+msgid "Crimean Tatar (Dobruca-1 Q)"
+msgstr ""
+
+#: ../rules/base.xml.in.h:168
+msgid "Crimean Tatar (Dobruca-2 Q)"
+msgstr ""
+
+#: ../rules/base.xml.in.h:169
+msgid "Crimean Tatar (Turkish Alt-Q)"
+msgstr ""
+
+#: ../rules/base.xml.in.h:170
+msgid "Crimean Tatar (Turkish F)"
+msgstr ""
+
+#: ../rules/base.xml.in.h:171
+msgid "Crimean Tatar (Turkish Q)"
+msgstr ""
+
+#: ../rules/base.xml.in.h:172
+msgid "Croatia"
+msgstr "ΚÏοατία"
+
+#: ../rules/base.xml.in.h:173
+msgid "Ctrl key position"
+msgstr "Θέση πλήκτÏου Ctrl"
+
+#: ../rules/base.xml.in.h:174
+msgid "Ctrl+Shift"
+msgstr "Ctrl+Shift"
+
+#: ../rules/base.xml.in.h:175
+msgid "Cyrillic"
+msgstr "ΚυÏιλλικά"
+
+#: ../rules/base.xml.in.h:176
+msgid "Cyrillic with guillemets"
+msgstr ""
+
+#: ../rules/base.xml.in.h:177
+msgid "Cyrillic, Z and ZHE swapped"
+msgstr ""
+
+#: ../rules/base.xml.in.h:178
+msgid "Cze"
+msgstr "ΤΣΕ"
+
+#: ../rules/base.xml.in.h:179
+msgid "Czechia"
+msgstr "Τσεχία"
+
+#: ../rules/base.xml.in.h:180
+msgid "DOS"
+msgstr "DOS"
+
+#: ../rules/base.xml.in.h:181
+msgid "DRC"
+msgstr "DRC"
+
+#: ../rules/base.xml.in.h:182
+msgid "DTK2000"
+msgstr "DTK2000"
+
+#: ../rules/base.xml.in.h:183
+msgid "Dan"
+msgstr "ΔΑÎ"
+
+#: ../rules/base.xml.in.h:184
+msgid "Dead acute"
+msgstr ""
+
+#: ../rules/base.xml.in.h:185
+msgid "Dead grave acute"
+msgstr ""
+
+#: ../rules/base.xml.in.h:186
+msgid "Default numeric keypad keys"
+msgstr ""
+
+#: ../rules/base.xml.in.h:187
+msgid "Dell"
+msgstr "Dell"
+
+#: ../rules/base.xml.in.h:188
+msgid "Dell 101-key PC"
+msgstr "Dell PC 101-πλήκτÏων"
+
+#: ../rules/base.xml.in.h:189
+msgid "Dell Laptop/notebook Inspiron 6xxx/8xxx"
+msgstr "Dell Laptop/notebook Inspiron 6xxx/8xxx"
+
+#: ../rules/base.xml.in.h:190
+msgid "Dell Laptop/notebook Precision M series"
+msgstr "Dell Laptop/notebook Precision M series"
+
+#: ../rules/base.xml.in.h:191
+msgid "Dell Latitude series laptop"
+msgstr "Dell Latitude series laptop"
+
+#: ../rules/base.xml.in.h:192
+msgid "Dell Precision M65"
+msgstr "Dell Precision M65"
+
+#: ../rules/base.xml.in.h:193
+msgid "Dell SK-8125"
+msgstr "Dell SK-8125"
+
+#: ../rules/base.xml.in.h:194
+msgid "Dell SK-8135"
+msgstr "Dell SK-8135"
+
+#: ../rules/base.xml.in.h:195
+msgid "Dell USB Multimedia Keyboard"
+msgstr ""
+
+#: ../rules/base.xml.in.h:196
+msgid "Denmark"
+msgstr "Δανία"
+
+#: ../rules/base.xml.in.h:197
+msgid "Deu"
+msgstr ""
+
+#: ../rules/base.xml.in.h:198
+msgid "Dexxa Wireless Desktop Keyboard"
+msgstr "Dexxa Wireless Desktop Keyboard"
+
+#: ../rules/base.xml.in.h:199
+msgid "Diamond 9801 / 9802 series"
+msgstr "Diamond 9801 / 9802 series"
+
+#: ../rules/base.xml.in.h:200
+msgid "Dvorak"
+msgstr "ÎτβόÏακ"
+
+#: ../rules/base.xml.in.h:201
+msgid "Dvorak (UK Punctuation)"
+msgstr ""
+
+#: ../rules/base.xml.in.h:202
+msgid "Dvorak international"
+msgstr ""
+
+#: ../rules/base.xml.in.h:203
+msgid "Dvorak, Polish quotes on key 1"
+msgstr ""
+
+#: ../rules/base.xml.in.h:204
+msgid "Dvorak, Polish quotes on quotemark key"
+msgstr ""
+
+#: ../rules/base.xml.in.h:205
+msgid "E"
+msgstr "E"
+
+#: ../rules/base.xml.in.h:206
+msgid "Eastern"
+msgstr "Ανατολικό"
+
+#: ../rules/base.xml.in.h:207
+msgid "Eliminate dead keys"
+msgstr "ΧωÏίς νεκÏά πλήκτÏα"
+
+#: ../rules/base.xml.in.h:208
+msgid "Enable extra typographic characters"
+msgstr ""
+
+#: ../rules/base.xml.in.h:209
+msgid "English"
+msgstr "Αγγλικό"
+
+#: ../rules/base.xml.in.h:210
+msgid "Ennyah DKB-1008"
+msgstr "Ennyah DKB-1008"
+
+#: ../rules/base.xml.in.h:211
+msgid "Enter on keypad"
+msgstr "ΠλήκτÏο Enter στο αÏιθμητικό πληκτÏολόγιο"
+
+#: ../rules/base.xml.in.h:212
+msgid "Epo"
+msgstr ""
+
+#: ../rules/base.xml.in.h:213
+msgid "Ergonomic"
+msgstr "ΕÏγονομικό"
+
+#: ../rules/base.xml.in.h:214
+msgid "Esp"
+msgstr "ΙΣΠ"
+
+#: ../rules/base.xml.in.h:215
+msgid "Esperanto"
+msgstr "ΕσπεÏάντο"
+
+#: ../rules/base.xml.in.h:216
+msgid "Est"
+msgstr "ΕΣΘ"
+
+#: ../rules/base.xml.in.h:217
+msgid "Estonia"
+msgstr "Εσθονία"
+
+#: ../rules/base.xml.in.h:218
+msgid "Eth"
+msgstr "ΕΘΙ"
+
+#: ../rules/base.xml.in.h:219
+msgid "Ethiopia"
+msgstr "Αιθιοπία"
+
+#: ../rules/base.xml.in.h:220
+msgid "Evdev-managed keyboard"
+msgstr "ΠληκτÏολόγιο Ïυθμιζόμενο από evdev"
+
+#: ../rules/base.xml.in.h:221
+msgid "Everex STEPnote"
+msgstr "Everex STEPnote"
+
+#: ../rules/base.xml.in.h:222
+msgid "Ewe"
+msgstr ""
+
+#: ../rules/base.xml.in.h:223
+msgid "Extended"
+msgstr "Εκτεταμένο (παλαιά διάταξη)"
+
+#: ../rules/base.xml.in.h:224
+msgid "Extended - Winkeys"
+msgstr ""
+
+#: ../rules/base.xml.in.h:225
+msgid "Extended Backslash"
+msgstr ""
+
+#: ../rules/base.xml.in.h:226
+msgid "F-letter (F) variant"
+msgstr ""
+
+#: ../rules/base.xml.in.h:227
+msgid "FL90"
+msgstr "FL90"
+
+#: ../rules/base.xml.in.h:228
+msgid "Fao"
+msgstr "ΦΑΡ"
+
+#: ../rules/base.xml.in.h:229
+msgid "Faroe Islands"
+msgstr ""
+
+#: ../rules/base.xml.in.h:230
+msgid "Fin"
+msgstr "ΦΙÎ"
+
+#: ../rules/base.xml.in.h:231
+msgid "Finland"
+msgstr "Φινλανδία"
+
+#. This assumes the KP_ abstract symbols are actually useful for some apps
+#. The description needs to be rewritten
+#: ../rules/base.xml.in.h:234
+msgid "Four-level key with abstract separators"
+msgstr ""
+
+#: ../rules/base.xml.in.h:235
+msgid "Four-level key with comma"
+msgstr ""
+
+#: ../rules/base.xml.in.h:236
+msgid "Four-level key with dot"
+msgstr ""
+
+#: ../rules/base.xml.in.h:237
+msgid "Four-level key with dot, latin-9 restriction"
+msgstr ""
+
+#: ../rules/base.xml.in.h:238
+msgid "Four-level key with momayyez"
+msgstr ""
+
+#: ../rules/base.xml.in.h:239
+msgid "Fra"
+msgstr "ΓΑΛ"
+
+#: ../rules/base.xml.in.h:240
+msgid "France"
+msgstr "Γαλλία"
+
+#: ../rules/base.xml.in.h:241
+msgid "French"
+msgstr "Γαλλικά"
+
+#: ../rules/base.xml.in.h:242
+msgid "French (Macintosh)"
+msgstr ""
+
+#: ../rules/base.xml.in.h:243
+msgid "French (legacy)"
+msgstr ""
+
+#: ../rules/base.xml.in.h:244
+msgid "French Dvorak"
+msgstr ""
+
+#: ../rules/base.xml.in.h:245
+msgid "French, Sun dead keys"
+msgstr ""
+
+#: ../rules/base.xml.in.h:246
+msgid "French, eliminate dead keys"
+msgstr ""
+
+#: ../rules/base.xml.in.h:247
+msgid "Fujitsu-Siemens Computers AMILO laptop"
+msgstr ""
+
+#: ../rules/base.xml.in.h:248
+msgid "Fula"
+msgstr ""
+
+#: ../rules/base.xml.in.h:249
+msgid "GBr"
+msgstr "ΜΒΡ"
+
+#: ../rules/base.xml.in.h:250
+msgid "Ga"
+msgstr ""
+
+#: ../rules/base.xml.in.h:251
+msgid "Generic 101-key PC"
+msgstr "Τυπικός Ηλεκ. Υπολογιστής 101-πλήκτÏων"
+
+#: ../rules/base.xml.in.h:252
+msgid "Generic 102-key (Intl) PC"
+msgstr "Τυπικός Ηλεκ. Υπολογιστής 102-πλήκτÏων (Διεθνές)"
+
+#: ../rules/base.xml.in.h:253
+msgid "Generic 104-key PC"
+msgstr "Τυπικός Ηλεκ. Υπολογιστής 104-πλήκτÏων"
+
+#: ../rules/base.xml.in.h:254
+msgid "Generic 105-key (Intl) PC"
+msgstr "Τυπικός Ηλεκ. Υπολογιστής 105-πλήκτÏων (Διεθνές)"
+
+#: ../rules/base.xml.in.h:255
+msgid "Genius Comfy KB-12e"
+msgstr ""
+
+#: ../rules/base.xml.in.h:256
+msgid "Genius Comfy KB-16M / Genius MM Keyboard KWD-910"
+msgstr "Genius Comfy KB-16M / Genius MM Keyboard KWD-910"
+
+#: ../rules/base.xml.in.h:257
+msgid "Genius Comfy KB-21e-Scroll"
+msgstr "Genius Comfy KB-21e-Scroll"
+
+#: ../rules/base.xml.in.h:258
+msgid "Genius KB-19e NB"
+msgstr ""
+
+#: ../rules/base.xml.in.h:259
+msgid "Genius KKB-2050HS"
+msgstr ""
+
+#: ../rules/base.xml.in.h:260
+msgid "Geo"
+msgstr "ΓΕΩ"
+
+#: ../rules/base.xml.in.h:261
+msgid "Georgia"
+msgstr "ΓεωÏγία"
+
+#: ../rules/base.xml.in.h:262
+msgid "Georgian"
+msgstr ""
+
+#: ../rules/base.xml.in.h:263
+msgid "Georgian AZERTY Tskapo"
+msgstr ""
+
+#: ../rules/base.xml.in.h:264
+msgid "German (Macintosh)"
+msgstr ""
+
+#: ../rules/base.xml.in.h:265
+msgid "German, Sun dead keys"
+msgstr ""
+
+#: ../rules/base.xml.in.h:266
+msgid "German, eliminate dead keys"
+msgstr ""
+
+#: ../rules/base.xml.in.h:267
+msgid "Germany"
+msgstr "ΓεÏμανία"
+
+#: ../rules/base.xml.in.h:268
+msgid "Gha"
+msgstr "ΓΚΑ"
+
+#: ../rules/base.xml.in.h:269
+msgid "Ghana"
+msgstr ""
+
+#: ../rules/base.xml.in.h:270
+msgid "Gre"
+msgstr "ΕΛΛ"
+
+#: ../rules/base.xml.in.h:271
+msgid "Greece"
+msgstr "Ελλάδα"
+
+#: ../rules/base.xml.in.h:272
+msgid "Group toggle on multiply/divide key"
+msgstr ""
+
+#: ../rules/base.xml.in.h:273
+msgid "Gui"
+msgstr "ΓΟΥ"
+
+#: ../rules/base.xml.in.h:274
+msgid "Guinea"
+msgstr ""
+
+#: ../rules/base.xml.in.h:275
+msgid "Gujarati"
+msgstr "ΓκουτζαÏάτι"
+
+#: ../rules/base.xml.in.h:276
+msgid "Gurmukhi"
+msgstr "ΓκουÏμοÏχι"
+
+#: ../rules/base.xml.in.h:277
+msgid "Gurmukhi Jhelum"
+msgstr ""
+
+#: ../rules/base.xml.in.h:278
+msgid "Gyration"
+msgstr ""
+
+#: ../rules/base.xml.in.h:279
+msgid "Happy Hacking Keyboard"
+msgstr ""
+
+#: ../rules/base.xml.in.h:280
+msgid "Happy Hacking Keyboard for Mac"
+msgstr ""
+
+#: ../rules/base.xml.in.h:281
+msgid "Hausa"
+msgstr "Χάουζα"
+
+#: ../rules/base.xml.in.h:282
+msgid "Hewlett-Packard Internet Keyboard"
+msgstr "Hewlett-Packard Internet Keyboard"
+
+#: ../rules/base.xml.in.h:283
+msgid "Hewlett-Packard Mini 110 Notebook"
+msgstr "Hewlett-Packard Mini 110 Notebook"
+
+#: ../rules/base.xml.in.h:284
+msgid "Hewlett-Packard Omnibook 500 FA"
+msgstr "Hewlett-Packard Omnibook 500 FA"
+
+#: ../rules/base.xml.in.h:285
+msgid "Hewlett-Packard Omnibook 5xx"
+msgstr "Hewlett-Packard Omnibook 5xx"
+
+#: ../rules/base.xml.in.h:286
+msgid "Hewlett-Packard Omnibook 6000/6100"
+msgstr "Hewlett-Packard Omnibook 6000/6100"
+
+#: ../rules/base.xml.in.h:287
+msgid "Hewlett-Packard Omnibook XE3 GC"
+msgstr "Hewlett-Packard Omnibook XE3 GC"
+
+#: ../rules/base.xml.in.h:288
+msgid "Hewlett-Packard Omnibook XE3 GF"
+msgstr "Hewlett-Packard Omnibook XE3 GF"
+
+#: ../rules/base.xml.in.h:289
+msgid "Hewlett-Packard Omnibook XT1000"
+msgstr "Hewlett-Packard Omnibook XT1000"
+
+#: ../rules/base.xml.in.h:290
+msgid "Hewlett-Packard Pavilion ZT11xx"
+msgstr "Hewlett-Packard Pavilion ZT11xx"
+
+#: ../rules/base.xml.in.h:291
+msgid "Hewlett-Packard Pavilion dv5"
+msgstr "Hewlett-Packard Pavilion dv5"
+
+#: ../rules/base.xml.in.h:292
+msgid "Hewlett-Packard SK-250x Multimedia Keyboard"
+msgstr "Hewlett-Packard SK-250x Multimedia Keyboard"
+
+#: ../rules/base.xml.in.h:293
+msgid "Hewlett-Packard nx9020"
+msgstr "Hewlett-Packard nx9020"
+
+#: ../rules/base.xml.in.h:294
+msgid "Hexadecimal"
+msgstr "Δεκαεξαδικό"
+
+#: ../rules/base.xml.in.h:295
+msgid "Hindi Bolnagri"
+msgstr ""
+
+#: ../rules/base.xml.in.h:296
+msgid "Hindi Wx"
+msgstr ""
+
+#: ../rules/base.xml.in.h:297
+msgid "Homophonic"
+msgstr ""
+
+#: ../rules/base.xml.in.h:298
+msgid "Honeywell Euroboard"
+msgstr "Honeywell Euroboard"
+
+#: ../rules/base.xml.in.h:299
+msgid "Hrv"
+msgstr "ΚΡΟ"
+
+#: ../rules/base.xml.in.h:300
+msgid "Hun"
+msgstr "ΟΥΓ"
+
+#: ../rules/base.xml.in.h:301
+msgid "Hungary"
+msgstr "ΟυγγαÏία"
+
+#: ../rules/base.xml.in.h:302
+msgid "Hyper is mapped to Win-keys"
+msgstr ""
+
+#: ../rules/base.xml.in.h:303
+msgid "IBM (LST 1205-92)"
+msgstr ""
+
+#: ../rules/base.xml.in.h:304
+msgid "IBM Rapid Access"
+msgstr "IBM Rapid Access"
+
+#: ../rules/base.xml.in.h:305
+msgid "IBM Rapid Access II"
+msgstr "IBM Rapid Access II"
+
+#: ../rules/base.xml.in.h:306
+msgid "IBM Space Saver"
+msgstr "IBM Space Saver"
+
+#: ../rules/base.xml.in.h:307
+msgid "IBM ThinkPad 560Z/600/600E/A22E"
+msgstr "IBM ThinkPad 560Z/600/600E/A22E"
+
+#: ../rules/base.xml.in.h:308
+msgid "IBM ThinkPad R60/T60/R61/T61"
+msgstr "IBM ThinkPad R60/T60/R61/T61"
+
+#: ../rules/base.xml.in.h:309
+msgid "IBM ThinkPad Z60m/Z60t/Z61m/Z61t"
+msgstr "IBM ThinkPad Z60m/Z60t/Z61m/Z61t"
+
+#: ../rules/base.xml.in.h:310
+msgid "ISO Alternate"
+msgstr "Εναλλακτικό ISO"
+
+#: ../rules/base.xml.in.h:311
+msgid "Iceland"
+msgstr "Ισλανδία"
+
+#: ../rules/base.xml.in.h:312
+msgid "Igbo"
+msgstr "Ίγκμπο"
+
+#: ../rules/base.xml.in.h:313
+msgid "Include dead tilde"
+msgstr ""
+
+#: ../rules/base.xml.in.h:314
+msgid "Ind"
+msgstr "ΙÎΔ"
+
+#: ../rules/base.xml.in.h:315
+msgid "India"
+msgstr "Ινδία"
+
+#: ../rules/base.xml.in.h:316
+msgid "International (AltGr dead keys)"
+msgstr "Διεθνές (με νεκÏά πλήκτÏα AltGr)"
+
+#: ../rules/base.xml.in.h:317
+msgid "International (with dead keys)"
+msgstr "Διεθνές (με νεκÏά πλήκτÏα)"
+
+#: ../rules/base.xml.in.h:318
+msgid "Inuktitut"
+msgstr "ΙνουκτικοÏÏ„"
+
+#: ../rules/base.xml.in.h:319
+msgid "Iran"
+msgstr "ΙÏάν"
+
+#: ../rules/base.xml.in.h:320
+msgid "Iraq"
+msgstr "ΙÏάκ"
+
+#: ../rules/base.xml.in.h:321
+msgid "Ireland"
+msgstr "ΙÏλανδία"
+
+#: ../rules/base.xml.in.h:322
+msgid "Irl"
+msgstr "ΙΡΛ"
+
+#: ../rules/base.xml.in.h:323
+msgid "Irn"
+msgstr "ΙΡÎ"
+
+#: ../rules/base.xml.in.h:324
+msgid "Irq"
+msgstr "ΙΡΚ"
+
+#: ../rules/base.xml.in.h:325
+msgid "Isl"
+msgstr "ΙΣΛ"
+
+#: ../rules/base.xml.in.h:326
+msgid "Isr"
+msgstr "ΙΣΡ"
+
+#: ../rules/base.xml.in.h:327
+msgid "Israel"
+msgstr "ΙσÏαήλ"
+
+#: ../rules/base.xml.in.h:328
+msgid "Ita"
+msgstr "ΙΤΑ"
+
+#: ../rules/base.xml.in.h:329
+msgid "Italy"
+msgstr "Ιταλία"
+
+#: ../rules/base.xml.in.h:330
+msgid "Japan"
+msgstr "Ιαπωνία"
+
+#: ../rules/base.xml.in.h:331
+msgid "Japan (PC-98xx Series)"
+msgstr ""
+
+#: ../rules/base.xml.in.h:332
+msgid "Japanese keyboard options"
+msgstr "Επιλογές Î™Î±Ï€Ï‰Î½Î¹ÎºÎ¿Ï Ï€Î»Î·ÎºÏ„Ïολογίου"
+
+#: ../rules/base.xml.in.h:333
+msgid "Jpn"
+msgstr "ΙΑΠ"
+
+#: ../rules/base.xml.in.h:334
+msgid "Kalmyk"
+msgstr "Καλμυκία"
+
+#: ../rules/base.xml.in.h:335
+msgid "Kana"
+msgstr ""
+
+#: ../rules/base.xml.in.h:336
+msgid "Kana Lock key is locking"
+msgstr ""
+
+#: ../rules/base.xml.in.h:337
+msgid "Kannada"
+msgstr "Κάναντα"
+
+#: ../rules/base.xml.in.h:338
+msgid "Kashubian"
+msgstr ""
+
+#: ../rules/base.xml.in.h:339
+msgid "Kaz"
+msgstr "ΚΑΖ"
+
+#: ../rules/base.xml.in.h:340
+msgid "Kazakh with Russian"
+msgstr ""
+
+#: ../rules/base.xml.in.h:341
+msgid "Kazakhstan"
+msgstr ""
+
+#: ../rules/base.xml.in.h:342
+msgid "Key sequence to kill the X server"
+msgstr "Συνδυασμός πλήκτÏων για τεÏματισμό του εξυπηÏετητή X"
+
+#: ../rules/base.xml.in.h:343
+msgid "Key to choose 3rd level"
+msgstr "ΠλήκτÏο για επιλογή Ï„Ïίτου επιπέδου"
+
+#: ../rules/base.xml.in.h:344
+msgid "Key(s) to change layout"
+msgstr "Συνδυασμοί πλήκτÏων για αλλαγή διάταξης πληκτÏολογίου"
+
+#: ../rules/base.xml.in.h:345
+msgid "Keytronic FlexPro"
+msgstr "Keytronic FlexPro"
+
+#: ../rules/base.xml.in.h:346
+msgid "Kgz"
+msgstr "ΚΥΡ"
+
+#: ../rules/base.xml.in.h:347
+msgid "Khm"
+msgstr "ΧΜΕ"
+
+#: ../rules/base.xml.in.h:348
+msgid "Komi"
+msgstr ""
+
+#: ../rules/base.xml.in.h:349
+msgid "Kor"
+msgstr "ΚΟΡ"
+
+#: ../rules/base.xml.in.h:350
+msgid "Korea, Republic of"
+msgstr ""
+
+#: ../rules/base.xml.in.h:351
+msgid "Ktunaxa"
+msgstr ""
+
+#: ../rules/base.xml.in.h:352
+msgid "Kurdish, (F)"
+msgstr ""
+
+#: ../rules/base.xml.in.h:353
+msgid "Kurdish, Arabic-Latin"
+msgstr ""
+
+#: ../rules/base.xml.in.h:354
+msgid "Kurdish, Latin Alt-Q"
+msgstr ""
+
+#: ../rules/base.xml.in.h:355
+msgid "Kurdish, Latin Q"
+msgstr ""
+
+#: ../rules/base.xml.in.h:356
+msgid "Kyrgyzstan"
+msgstr "ΚιÏγιστάν"
+
+#: ../rules/base.xml.in.h:357
+msgid "LAm"
+msgstr "ΛΑΜ"
+
+#: ../rules/base.xml.in.h:358
+msgid "LEKP"
+msgstr ""
+
+#: ../rules/base.xml.in.h:359
+msgid "LEKPa"
+msgstr ""
+
+#: ../rules/base.xml.in.h:360
+msgid "Lao"
+msgstr "ΛΑΟ"
+
+#: ../rules/base.xml.in.h:361
+msgid "Laos"
+msgstr "Λάος"
+
+#: ../rules/base.xml.in.h:362
+msgid "Laptop/notebook Compaq (eg. Armada) Laptop Keyboard"
+msgstr ""
+
+#: ../rules/base.xml.in.h:363
+msgid "Laptop/notebook Compaq (eg. Presario) Internet Keyboard"
+msgstr ""
+
+#: ../rules/base.xml.in.h:364
+msgid "Laptop/notebook eMachines m68xx"
+msgstr ""
+
+#: ../rules/base.xml.in.h:365
+msgid "Latin"
+msgstr ""
+
+#: ../rules/base.xml.in.h:366
+msgid "Latin American"
+msgstr "Λατινική ΑμεÏική"
+
+#: ../rules/base.xml.in.h:367
+msgid "Latin Unicode"
+msgstr ""
+
+#: ../rules/base.xml.in.h:368
+msgid "Latin Unicode qwerty"
+msgstr ""
+
+#: ../rules/base.xml.in.h:369
+msgid "Latin qwerty"
+msgstr ""
+
+#: ../rules/base.xml.in.h:370
+msgid "Latin unicode"
+msgstr ""
+
+#: ../rules/base.xml.in.h:371
+msgid "Latin unicode qwerty"
+msgstr ""
+
+#: ../rules/base.xml.in.h:372
+msgid "Latin with guillemets"
+msgstr ""
+
+#: ../rules/base.xml.in.h:373
+msgid "Latvia"
+msgstr "Λεττονία"
+
+#: ../rules/base.xml.in.h:374
+msgid "Lav"
+msgstr "ΛΕΤ"
+
+#: ../rules/base.xml.in.h:375
+msgid "Left Alt"
+msgstr "ΑÏιστεÏÏŒ Alt"
+
+#: ../rules/base.xml.in.h:376
+msgid "Left Alt (while pressed)"
+msgstr ""
+
+#: ../rules/base.xml.in.h:377
+msgid "Left Alt is swapped with Left Win"
+msgstr ""
+
+#: ../rules/base.xml.in.h:378
+msgid "Left Ctrl"
+msgstr "ΑÏιστεÏÏŒ Ctrl"
+
+#: ../rules/base.xml.in.h:379
+msgid "Left Ctrl (to first layout), Right Ctrl (to last layout)"
+msgstr ""
+
+#: ../rules/base.xml.in.h:380
+msgid "Left Ctrl+Left Shift"
+msgstr "ΑÏιστεÏÏŒ Ctrl+ΑÏιστεÏÏŒ Shift"
+
+#: ../rules/base.xml.in.h:381
+msgid "Left Shift"
+msgstr "ΑÏιστεÏÏŒ Shift"
+
+#: ../rules/base.xml.in.h:382
+msgid "Left Win"
+msgstr "ΑÏιστεÏÏŒ Win"
+
+#: ../rules/base.xml.in.h:383
+msgid "Left Win (to first layout), Right Win/Menu (to last layout)"
+msgstr ""
+
+#: ../rules/base.xml.in.h:384
+msgid "Left Win (while pressed)"
+msgstr ""
+
+#: ../rules/base.xml.in.h:385
+msgid "Left hand"
+msgstr ""
+
+#: ../rules/base.xml.in.h:386
+msgid "Left handed Dvorak"
+msgstr ""
+
+#: ../rules/base.xml.in.h:387
+msgid "Legacy"
+msgstr "ΠαÏαδοσιακό"
+
+#: ../rules/base.xml.in.h:388
+msgid "Legacy Wang 724"
+msgstr ""
+
+#. Actually, with KP_SEPARATOR, as the old keypad(comma)
+#: ../rules/base.xml.in.h:390
+msgid "Legacy key with comma"
+msgstr ""
+
+#: ../rules/base.xml.in.h:391
+msgid "Legacy key with dot"
+msgstr ""
+
+#: ../rules/base.xml.in.h:392
+msgid "Less-than/Greater-than"
+msgstr ""
+
+#: ../rules/base.xml.in.h:393
+msgid "Lithuania"
+msgstr "Λιθουανία"
+
+#: ../rules/base.xml.in.h:394
+msgid "Logitech Access Keyboard"
+msgstr "Logitech Access Keyboard"
+
+#: ../rules/base.xml.in.h:395
+msgid "Logitech Cordless Desktop"
+msgstr "Logitech Cordless Desktop"
+
+#: ../rules/base.xml.in.h:396
+msgid "Logitech Cordless Desktop (alternate option)"
+msgstr "Logitech Cordless Desktop (εναλλακτική επιλογή)"
+
+#: ../rules/base.xml.in.h:397
+msgid "Logitech Cordless Desktop EX110"
+msgstr "Logitech Cordless Desktop EX110"
+
+#: ../rules/base.xml.in.h:398
+msgid "Logitech Cordless Desktop LX-300"
+msgstr "Logitech Cordless Desktop LX-300"
+
+#: ../rules/base.xml.in.h:399
+msgid "Logitech Cordless Desktop Navigator"
+msgstr "Logitech Cordless Desktop Navigator"
+
+#: ../rules/base.xml.in.h:400
+msgid "Logitech Cordless Desktop Optical"
+msgstr "Logitech Cordless Desktop Optical"
+
+#: ../rules/base.xml.in.h:401
+msgid "Logitech Cordless Desktop Pro (alternate option 2)"
+msgstr "Logitech Cordless Desktop Pro (εναλλακτική επιλογή 2)"
+
+#: ../rules/base.xml.in.h:402
+msgid "Logitech Cordless Desktop iTouch"
+msgstr "Logitech Cordless Desktop iTouch"
+
+#: ../rules/base.xml.in.h:403
+msgid "Logitech Cordless Freedom/Desktop Navigator"
+msgstr "Logitech Cordless Freedom/Desktop Navigator"
+
+#: ../rules/base.xml.in.h:404
+msgid "Logitech G15 extra keys via G15daemon"
+msgstr ""
+
+#: ../rules/base.xml.in.h:405
+msgid "Logitech Generic Keyboard"
+msgstr ""
+
+#: ../rules/base.xml.in.h:406
+msgid "Logitech Internet 350 Keyboard"
+msgstr ""
+
+#: ../rules/base.xml.in.h:407
+msgid "Logitech Internet Keyboard"
+msgstr "Logitech Internet Keyboard"
+
+#: ../rules/base.xml.in.h:408
+msgid "Logitech Internet Navigator Keyboard"
+msgstr "Logitech Internet Navigator Keyboard"
+
+#: ../rules/base.xml.in.h:409
+msgid "Logitech Media Elite Keyboard"
+msgstr ""
+
+#: ../rules/base.xml.in.h:410
+msgid "Logitech Ultra-X Cordless Media Desktop Keyboard"
+msgstr ""
+
+#: ../rules/base.xml.in.h:411
+msgid "Logitech Ultra-X Keyboard"
+msgstr "Logitech Ultra-X Keyboard"
+
+#: ../rules/base.xml.in.h:412
+msgid "Logitech diNovo Edge Keyboard"
+msgstr ""
+
+#: ../rules/base.xml.in.h:413
+msgid "Logitech diNovo Keyboard"
+msgstr ""
+
+#: ../rules/base.xml.in.h:414
+msgid "Logitech iTouch"
+msgstr "Logitech iTouch"
+
+#: ../rules/base.xml.in.h:415
+msgid "Logitech iTouch Cordless Keyboard (model Y-RB6)"
+msgstr "Logitech iTouch Cordless Keyboard (μοντέλο Y-RB6)"
+
+#: ../rules/base.xml.in.h:416
+msgid "Logitech iTouch Internet Navigator Keyboard SE"
+msgstr ""
+
+#: ../rules/base.xml.in.h:417
+msgid "Logitech iTouch Internet Navigator Keyboard SE (USB)"
+msgstr ""
+
+#: ../rules/base.xml.in.h:418
+msgid "Lower Sorbian"
+msgstr ""
+
+#: ../rules/base.xml.in.h:419
+msgid "Lower Sorbian (qwertz)"
+msgstr ""
+
+#: ../rules/base.xml.in.h:420
+msgid "Ltu"
+msgstr "ΛΙΘ"
+
+#: ../rules/base.xml.in.h:421
+msgid "MESS"
+msgstr ""
+
+#: ../rules/base.xml.in.h:422
+msgid "MNE"
+msgstr ""
+
+#: ../rules/base.xml.in.h:423
+msgid "MacBook/MacBook Pro"
+msgstr ""
+
+#: ../rules/base.xml.in.h:424
+msgid "MacBook/MacBook Pro (Intl)"
+msgstr ""
+
+#: ../rules/base.xml.in.h:425
+msgid "Macedonia"
+msgstr "ΦΥΡΟΜ"
+
+#: ../rules/base.xml.in.h:426
+msgid "Macintosh"
+msgstr "Macintosh"
+
+#: ../rules/base.xml.in.h:427
+msgid "Macintosh Old"
+msgstr "Macintosh Παλαιό"
+
+#: ../rules/base.xml.in.h:428
+msgid "Macintosh, Sun dead keys"
+msgstr ""
+
+#: ../rules/base.xml.in.h:429
+msgid "Macintosh, eliminate dead keys"
+msgstr ""
+
+#: ../rules/base.xml.in.h:430
+msgid "Make CapsLock an additional Backspace"
+msgstr ""
+
+#: ../rules/base.xml.in.h:431
+msgid "Make CapsLock an additional Ctrl"
+msgstr ""
+
+#: ../rules/base.xml.in.h:432
+msgid "Make CapsLock an additional ESC"
+msgstr ""
+
+#: ../rules/base.xml.in.h:433
+msgid "Make CapsLock an additional Hyper"
+msgstr ""
+
+#: ../rules/base.xml.in.h:434
+msgid "Make CapsLock an additional NumLock"
+msgstr ""
+
+#: ../rules/base.xml.in.h:435
+msgid "Make CapsLock an additional Super"
+msgstr ""
+
+#: ../rules/base.xml.in.h:436
+msgid "Mal"
+msgstr "ΜΑΛ"
+
+#: ../rules/base.xml.in.h:437
+msgid "Malayalam"
+msgstr "Μαλαγιαλάμ"
+
+#: ../rules/base.xml.in.h:438
+msgid "Malayalam Lalitha"
+msgstr ""
+
+#: ../rules/base.xml.in.h:439
+msgid "Maldives"
+msgstr "Μαλδίβες"
+
+#: ../rules/base.xml.in.h:440
+msgid "Malta"
+msgstr "Μάλτα"
+
+#: ../rules/base.xml.in.h:441
+msgid "Maltese keyboard with US layout"
+msgstr ""
+
+#: ../rules/base.xml.in.h:442
+msgid "Mao"
+msgstr "ΜΑΟ"
+
+#: ../rules/base.xml.in.h:443
+msgid "Maori"
+msgstr "ΜαοÏί"
+
+#: ../rules/base.xml.in.h:444
+msgid "Memorex MX1998"
+msgstr "Memorex MX1998"
+
+#: ../rules/base.xml.in.h:445
+msgid "Memorex MX2500 EZ-Access Keyboard"
+msgstr "Memorex MX2500 EZ-Access Keyboard"
+
+#: ../rules/base.xml.in.h:446
+msgid "Memorex MX2750"
+msgstr "Memorex MX2750"
+
+#: ../rules/base.xml.in.h:447
+msgid "Menu"
+msgstr "ΜενοÏ"
+
+#: ../rules/base.xml.in.h:448
+msgid "Meta is mapped to Left Win"
+msgstr ""
+
+#: ../rules/base.xml.in.h:449
+msgid "Meta is mapped to Win keys"
+msgstr ""
+
+#: ../rules/base.xml.in.h:450
+msgid "Microsoft Comfort Curve Keyboard 2000"
+msgstr ""
+
+#: ../rules/base.xml.in.h:451
+msgid "Microsoft Internet Keyboard"
+msgstr "Microsoft Internet Keyboard"
+
+#: ../rules/base.xml.in.h:452
+msgid "Microsoft Internet Keyboard Pro, Swedish"
+msgstr ""
+
+#: ../rules/base.xml.in.h:453
+msgid "Microsoft Natural"
+msgstr "Microsoft Natural"
+
+#: ../rules/base.xml.in.h:454
+msgid "Microsoft Natural Keyboard Elite"
+msgstr ""
+
+#: ../rules/base.xml.in.h:455
+msgid "Microsoft Natural Keyboard Pro / Microsoft Internet Keyboard Pro"
+msgstr ""
+
+#: ../rules/base.xml.in.h:456
+msgid "Microsoft Natural Keyboard Pro OEM"
+msgstr ""
+
+#: ../rules/base.xml.in.h:457
+msgid "Microsoft Natural Keyboard Pro USB / Microsoft Internet Keyboard Pro"
+msgstr ""
+
+#: ../rules/base.xml.in.h:458
+msgid "Microsoft Natural Wireless Ergonomic Keyboard 7000"
+msgstr ""
+
+#: ../rules/base.xml.in.h:459
+msgid "Microsoft Office Keyboard"
+msgstr ""
+
+#: ../rules/base.xml.in.h:460
+msgid "Microsoft Wireless Multimedia Keyboard 1.0A"
+msgstr ""
+
+#: ../rules/base.xml.in.h:461
+msgid "Miscellaneous compatibility options"
+msgstr "ΔιάφοÏες επιλογές συμβατότητας"
+
+#: ../rules/base.xml.in.h:462
+msgid "Mkd"
+msgstr "ΦΥΡ"
+
+#: ../rules/base.xml.in.h:463
+msgid "Mlt"
+msgstr "ΜΑΛ"
+
+#: ../rules/base.xml.in.h:464
+msgid "Mmr"
+msgstr "ΜΥΑ"
+
+#: ../rules/base.xml.in.h:465
+msgid "Mng"
+msgstr "ΜΟΓ"
+
+#: ../rules/base.xml.in.h:466
+msgid "Mongolia"
+msgstr "Μογγολία"
+
+#: ../rules/base.xml.in.h:467
+msgid "Montenegro"
+msgstr ""
+
+#: ../rules/base.xml.in.h:468
+msgid "Morocco"
+msgstr ""
+
+#: ../rules/base.xml.in.h:469
+msgid "Multilingual"
+msgstr "Πολυγλωσσικό"
+
+#: ../rules/base.xml.in.h:470
+msgid "Multilingual, first part"
+msgstr ""
+
+#: ../rules/base.xml.in.h:471
+msgid "Multilingual, second part"
+msgstr "Πολυγλωσσικό, δεÏτεÏο μέÏος"
+
+#: ../rules/base.xml.in.h:472
+msgid "Myanmar"
+msgstr "ΜυανμάÏ"
+
+#: ../rules/base.xml.in.h:473
+msgid "NICOLA-F style Backspace"
+msgstr ""
+
+#: ../rules/base.xml.in.h:474
+msgid "NLA"
+msgstr ""
+
+#: ../rules/base.xml.in.h:475
+msgid "Nativo"
+msgstr ""
+
+#: ../rules/base.xml.in.h:476
+msgid "Nativo for Esperanto"
+msgstr ""
+
+#: ../rules/base.xml.in.h:477
+msgid "Nativo for USA keyboards"
+msgstr ""
+
+#: ../rules/base.xml.in.h:478
+msgid "Neo 2"
+msgstr ""
+
+#: ../rules/base.xml.in.h:479
+msgid "Nep"
+msgstr "ÎΕΠ"
+
+#: ../rules/base.xml.in.h:480
+msgid "Nepal"
+msgstr ""
+
+#: ../rules/base.xml.in.h:481
+msgid "Netherlands"
+msgstr "Ολλανδία"
+
+#: ../rules/base.xml.in.h:482
+#, fuzzy
+msgid "New phonetic"
+msgstr "Φωνητικό"
+
+#: ../rules/base.xml.in.h:483
+msgid "Nig"
+msgstr "ÎΙΓ"
+
+#: ../rules/base.xml.in.h:484
+msgid "Nigeria"
+msgstr ""
+
+#: ../rules/base.xml.in.h:485
+msgid "Nld"
+msgstr "ΟΛΑ"
+
+#: ../rules/base.xml.in.h:486
+msgid "Non-breakable space character at fourth level"
+msgstr ""
+
+#: ../rules/base.xml.in.h:487
+msgid "Non-breakable space character at fourth level, thin non-breakable space character at sixth level"
+msgstr ""
+
+#: ../rules/base.xml.in.h:488
+msgid "Non-breakable space character at fourth level, thin non-breakable space character at sixth level (via Ctrl+Shift)"
+msgstr ""
+
+#: ../rules/base.xml.in.h:489
+msgid "Non-breakable space character at second level"
+msgstr ""
+
+#: ../rules/base.xml.in.h:490
+msgid "Non-breakable space character at third level"
+msgstr ""
+
+#: ../rules/base.xml.in.h:491
+msgid "Non-breakable space character at third level, nothing at fourth level"
+msgstr ""
+
+#: ../rules/base.xml.in.h:492
+msgid "Non-breakable space character at third level, thin non-breakable space character at fourth level"
+msgstr ""
+
+#: ../rules/base.xml.in.h:493
+msgid "Nor"
+msgstr "ÎΟΡ"
+
+#: ../rules/base.xml.in.h:494
+msgid "Northern Saami"
+msgstr ""
+
+#: ../rules/base.xml.in.h:495
+msgid "Northern Saami, eliminate dead keys"
+msgstr "ΧωÏίς νεκÏά πλήκτÏα"
+
+#: ../rules/base.xml.in.h:496
+msgid "Northgate OmniKey 101"
+msgstr ""
+
+#: ../rules/base.xml.in.h:497
+msgid "Norway"
+msgstr "ÎοÏβηγία"
+
+#: ../rules/base.xml.in.h:498
+msgid "NumLock"
+msgstr ""
+
+#: ../rules/base.xml.in.h:499
+msgid "Numeric keypad delete key behaviour"
+msgstr "ΣυμπεÏιφοÏά πλήκτÏου διαγÏαφής του αÏÎ¹Î¸Î¼Î·Ï„Î¹ÎºÎ¿Ï Ï€Î»Î·ÎºÏ„Ïολογίου"
+
+#: ../rules/base.xml.in.h:500
+msgid "Numeric keypad keys work as with Mac"
+msgstr ""
+
+#: ../rules/base.xml.in.h:501
+msgid "Numeric keypad layout selection"
+msgstr "Επιλογή διάταξης για αÏιθμητικό πληκτÏολόγιο"
+
+#: ../rules/base.xml.in.h:502
+msgid "OADG 109A"
+msgstr "OADG 109A"
+
+#: ../rules/base.xml.in.h:503
+msgid "OLPC"
+msgstr "OLPC"
+
+#: ../rules/base.xml.in.h:504
+msgid "OLPC Dari"
+msgstr ""
+
+#: ../rules/base.xml.in.h:505
+msgid "OLPC Pashto"
+msgstr ""
+
+#: ../rules/base.xml.in.h:506
+msgid "OLPC Southern Uzbek"
+msgstr ""
+
+#: ../rules/base.xml.in.h:507
+msgid "Occitan"
+msgstr ""
+
+#: ../rules/base.xml.in.h:508
+msgid "Ogham"
+msgstr "Όγκαμ"
+
+#: ../rules/base.xml.in.h:509
+msgid "Ogham IS434"
+msgstr "Όγκαμ IS434"
+
+#: ../rules/base.xml.in.h:510
+msgid "Oriya"
+msgstr "ΟÏίγια"
+
+#: ../rules/base.xml.in.h:511
+msgid "Ortek MCK-800 MM/Internet keyboard"
+msgstr ""
+
+#: ../rules/base.xml.in.h:512
+msgid "Ossetian"
+msgstr ""
+
+#: ../rules/base.xml.in.h:513
+msgid "Ossetian, Winkeys"
+msgstr ""
+
+#: ../rules/base.xml.in.h:514
+msgid "Ossetian, legacy"
+msgstr ""
+
+#: ../rules/base.xml.in.h:515
+msgid "PC-98xx Series"
+msgstr "ΣειÏά PC-98xx"
+
+#: ../rules/base.xml.in.h:516
+msgid "Pak"
+msgstr "ΠΑΚ"
+
+#: ../rules/base.xml.in.h:517
+msgid "Pakistan"
+msgstr "Πακιστάν"
+
+#: ../rules/base.xml.in.h:518
+msgid "Pashto"
+msgstr ""
+
+#: ../rules/base.xml.in.h:519
+msgid "Pattachote"
+msgstr ""
+
+#: ../rules/base.xml.in.h:520
+msgid "Persian, with Persian Keypad"
+msgstr ""
+
+#: ../rules/base.xml.in.h:521
+msgid "Phonetic"
+msgstr "Φωνητικό"
+
+#: ../rules/base.xml.in.h:522
+msgid "Phonetic Winkeys"
+msgstr ""
+
+#: ../rules/base.xml.in.h:523
+msgid "Pol"
+msgstr "ΠΟΛ"
+
+#: ../rules/base.xml.in.h:524
+msgid "Poland"
+msgstr "Πολωνία"
+
+#: ../rules/base.xml.in.h:525
+msgid "Polytonic"
+msgstr "Πολυτονικό (παλαιά διάταξη)"
+
+#: ../rules/base.xml.in.h:526
+msgid "Portugal"
+msgstr "ΠοÏτογαλία"
+
+#: ../rules/base.xml.in.h:527
+msgid "Probhat"
+msgstr "Probhat"
+
+#: ../rules/base.xml.in.h:528
+msgid "Programmer Dvorak"
+msgstr ""
+
+#: ../rules/base.xml.in.h:529
+msgid "Propeller Voyager (KTEZ-1000)"
+msgstr "Propeller Voyager (KTEZ-1000)"
+
+#: ../rules/base.xml.in.h:530
+msgid "Prt"
+msgstr ""
+
+#: ../rules/base.xml.in.h:531
+msgid "QTronix Scorpius 98N+"
+msgstr "QTronix Scorpius 98N+"
+
+#: ../rules/base.xml.in.h:532
+msgid "Right Alt"
+msgstr ""
+
+#: ../rules/base.xml.in.h:533
+msgid "Right Alt (while pressed)"
+msgstr ""
+
+#: ../rules/base.xml.in.h:534
+msgid "Right Alt key never chooses 3rd level"
+msgstr ""
+
+#: ../rules/base.xml.in.h:535
+msgid "Right Alt, Shift+Right Alt key is Multi_Key"
+msgstr ""
+
+#: ../rules/base.xml.in.h:536
+msgid "Right Ctrl"
+msgstr ""
+
+#: ../rules/base.xml.in.h:537
+msgid "Right Ctrl (while pressed)"
+msgstr ""
+
+#: ../rules/base.xml.in.h:538
+msgid "Right Ctrl as Right Alt"
+msgstr ""
+
+#: ../rules/base.xml.in.h:539
+#, fuzzy
+msgid "Right Ctrl+Right Shift"
+msgstr "ΑÏιστεÏÏŒ Ctrl+ΑÏιστεÏÏŒ Shift"
+
+#: ../rules/base.xml.in.h:540
+msgid "Right Shift"
+msgstr ""
+
+#: ../rules/base.xml.in.h:541
+msgid "Right Win"
+msgstr ""
+
+#: ../rules/base.xml.in.h:542
+msgid "Right Win (while pressed)"
+msgstr ""
+
+#: ../rules/base.xml.in.h:543
+msgid "Right hand"
+msgstr ""
+
+#: ../rules/base.xml.in.h:544
+msgid "Right handed Dvorak"
+msgstr ""
+
+#: ../rules/base.xml.in.h:545
+msgid "Romania"
+msgstr "Ρουμανία"
+
+#: ../rules/base.xml.in.h:546
+msgid "Romanian keyboard with German letters"
+msgstr ""
+
+#: ../rules/base.xml.in.h:547
+msgid "Romanian keyboard with German letters, eliminate dead keys"
+msgstr ""
+
+#: ../rules/base.xml.in.h:548
+msgid "Rou"
+msgstr "ΡΟΥ"
+
+#: ../rules/base.xml.in.h:549
+msgid "Rus"
+msgstr "ΡΩΣ"
+
+#: ../rules/base.xml.in.h:550
+msgid "Russia"
+msgstr "Ρωσία"
+
+#: ../rules/base.xml.in.h:551
+msgid "Russian"
+msgstr "Ρωσσικό"
+
+#: ../rules/base.xml.in.h:552
+msgid "Russian phonetic"
+msgstr "Ρωσσικό φωνητικό"
+
+#: ../rules/base.xml.in.h:553
+msgid "Russian phonetic Dvorak"
+msgstr ""
+
+#: ../rules/base.xml.in.h:554
+msgid "Russian phonetic, eliminate dead keys"
+msgstr "Ρωσσικό φωνητικό, χωÏίς νεκÏά πλήκτÏα"
+
+#: ../rules/base.xml.in.h:555
+msgid "Russian with Kazakh"
+msgstr ""
+
+#: ../rules/base.xml.in.h:556
+msgid "SILVERCREST Multimedia Wireless Keyboard"
+msgstr ""
+
+#: ../rules/base.xml.in.h:557
+msgid "SK-1300"
+msgstr "SK-1300"
+
+#: ../rules/base.xml.in.h:558
+msgid "SK-2500"
+msgstr "SK-2500"
+
+#: ../rules/base.xml.in.h:559
+msgid "SK-6200"
+msgstr "SK-6200"
+
+#: ../rules/base.xml.in.h:560
+msgid "SK-7100"
+msgstr "SK-7100"
+
+#: ../rules/base.xml.in.h:561 ../rules/base.extras.xml.in.h:7
+msgid "SRB"
+msgstr "SRB"
+
+#: ../rules/base.xml.in.h:562
+msgid "SVEN Ergonomic 2500"
+msgstr "SVEN Ergonomic 2500"
+
+#: ../rules/base.xml.in.h:563
+msgid "SVEN Slim 303"
+msgstr ""
+
+#: ../rules/base.xml.in.h:564
+msgid "Samsung SDM 4500P"
+msgstr "Samsung SDM 4500P"
+
+#: ../rules/base.xml.in.h:565
+msgid "Samsung SDM 4510P"
+msgstr "Samsung SDM 4510P"
+
+#: ../rules/base.xml.in.h:566
+msgid "Scroll Lock"
+msgstr ""
+
+#: ../rules/base.xml.in.h:567
+msgid "ScrollLock"
+msgstr ""
+
+#: ../rules/base.xml.in.h:568
+msgid "Secwepemctsin"
+msgstr ""
+
+#: ../rules/base.xml.in.h:569
+msgid "Semi-colon on third level"
+msgstr ""
+
+#: ../rules/base.xml.in.h:570 ../rules/base.extras.xml.in.h:8
+msgid "Serbia"
+msgstr ""
+
+#: ../rules/base.xml.in.h:571
+msgid "Shift cancels CapsLock"
+msgstr ""
+
+#: ../rules/base.xml.in.h:572
+msgid "Shift does not cancel NumLock, chooses 3d level instead"
+msgstr ""
+
+#: ../rules/base.xml.in.h:573
+msgid "Shift with numeric keypad keys works as in MS Windows"
+msgstr ""
+
+#: ../rules/base.xml.in.h:574
+msgid "Shift+CapsLock"
+msgstr ""
+
+#: ../rules/base.xml.in.h:575
+msgid "Simple"
+msgstr "Απλό"
+
+#: ../rules/base.xml.in.h:576
+msgid "Slovakia"
+msgstr "Σλοβακία"
+
+#: ../rules/base.xml.in.h:577
+msgid "Slovenia"
+msgstr "Σλοβενία"
+
+#: ../rules/base.xml.in.h:578
+msgid "South Africa"
+msgstr ""
+
+#: ../rules/base.xml.in.h:579
+msgid "Southern Uzbek"
+msgstr ""
+
+#: ../rules/base.xml.in.h:580
+msgid "Spain"
+msgstr "Ισπανία"
+
+#: ../rules/base.xml.in.h:581
+msgid "Special keys (Ctrl+Alt+&lt;key&gt;) handled in a server"
+msgstr ""
+
+#: ../rules/base.xml.in.h:582
+msgid "SrL"
+msgstr "ΣΡΛ"
+
+#: ../rules/base.xml.in.h:583
+msgid "Sri Lanka"
+msgstr "ΣÏι Λάνκα"
+
+#: ../rules/base.xml.in.h:584
+msgid "Standard"
+msgstr "Τυπικό"
+
+#: ../rules/base.xml.in.h:585
+msgid "Standard (Cedilla)"
+msgstr ""
+
+#. RSTU 2019-91
+#: ../rules/base.xml.in.h:587
+msgid "Standard RSTU"
+msgstr ""
+
+#. RSTU 2019-91
+#: ../rules/base.xml.in.h:589
+msgid "Standard RSTU on Russian layout"
+msgstr "Τυπικό RSTU σε Ρωσσική διάταξη"
+
+#: ../rules/base.xml.in.h:590
+msgid "Sun Type 5/6"
+msgstr ""
+
+#: ../rules/base.xml.in.h:591
+msgid "Sun dead keys"
+msgstr "ÎεκÏά πλήκτÏα Sun"
+
+#: ../rules/base.xml.in.h:592
+msgid "Super Power Multimedia Keyboard"
+msgstr "Super Power Multimedia Keyboard"
+
+#: ../rules/base.xml.in.h:593
+msgid "Svdvorak"
+msgstr ""
+
+#: ../rules/base.xml.in.h:594
+msgid "Svk"
+msgstr "ΣΒΚ"
+
+#: ../rules/base.xml.in.h:595
+msgid "Svn"
+msgstr "ΣΒÎ"
+
+#: ../rules/base.xml.in.h:596
+msgid "Swap Ctrl and CapsLock"
+msgstr ""
+
+#: ../rules/base.xml.in.h:597
+msgid "Swap ESC and CapsLock"
+msgstr ""
+
+#: ../rules/base.xml.in.h:598
+msgid "Swe"
+msgstr "ΣΟΥ"
+
+#: ../rules/base.xml.in.h:599
+msgid "Sweden"
+msgstr "Σουηδία"
+
+#: ../rules/base.xml.in.h:600
+msgid "Switzerland"
+msgstr "Ελβετία"
+
+#: ../rules/base.xml.in.h:601
+msgid "Symplon PaceBook (tablet PC)"
+msgstr "Symplon PaceBook (tablet PC)"
+
+#: ../rules/base.xml.in.h:602
+msgid "Syr"
+msgstr "ΣΥΡ"
+
+#: ../rules/base.xml.in.h:603
+msgid "Syria"
+msgstr "ΣυÏία"
+
+#: ../rules/base.xml.in.h:604
+msgid "Syriac"
+msgstr "ΣυÏιακό"
+
+#: ../rules/base.xml.in.h:605
+msgid "Syriac phonetic"
+msgstr "ΣυÏιακό φωνητικό"
+
+#: ../rules/base.xml.in.h:606
+msgid "TIS-820.2538"
+msgstr "TIS-820.2538"
+
+#: ../rules/base.xml.in.h:607
+msgid "Tajikistan"
+msgstr "Τατζικιστάν"
+
+#: ../rules/base.xml.in.h:608
+msgid "Tamil"
+msgstr "Ταμίλ"
+
+#: ../rules/base.xml.in.h:609
+msgid "Tamil TAB Typewriter"
+msgstr "Ταμίλ ΓÏαφομηχανή ΤΑΒ"
+
+#: ../rules/base.xml.in.h:610
+msgid "Tamil TSCII Typewriter"
+msgstr "Ταμίλ ΓÏαφομηχανή TSCII"
+
+#: ../rules/base.xml.in.h:611
+msgid "Tamil Unicode"
+msgstr "Ταμίλ Unicode"
+
+#: ../rules/base.xml.in.h:612
+msgid "Targa Visionary 811"
+msgstr "Targa Visionary 811"
+
+#: ../rules/base.xml.in.h:613
+msgid "Tatar"
+msgstr ""
+
+#: ../rules/base.xml.in.h:614
+msgid "Telugu"
+msgstr "ΤελοÏγκου"
+
+#: ../rules/base.xml.in.h:615
+msgid "Tha"
+msgstr "ΤΑΫ"
+
+#: ../rules/base.xml.in.h:616
+msgid "Thailand"
+msgstr "Ταϊλάνδη"
+
+#: ../rules/base.xml.in.h:617
+msgid "Tibetan"
+msgstr ""
+
+#: ../rules/base.xml.in.h:618
+msgid "Tibetan (with ASCII numerals)"
+msgstr ""
+
+#: ../rules/base.xml.in.h:619
+msgid "Tifinagh"
+msgstr ""
+
+#: ../rules/base.xml.in.h:620
+msgid "Tifinagh Alternative"
+msgstr ""
+
+#: ../rules/base.xml.in.h:621
+msgid "Tifinagh Alternative Phonetic"
+msgstr ""
+
+#: ../rules/base.xml.in.h:622
+msgid "Tifinagh Extended"
+msgstr ""
+
+#: ../rules/base.xml.in.h:623
+msgid "Tifinagh Extended Phonetic"
+msgstr ""
+
+#: ../rules/base.xml.in.h:624
+msgid "Tifinagh Phonetic"
+msgstr ""
+
+#: ../rules/base.xml.in.h:625
+msgid "Tilde (~) variant"
+msgstr ""
+
+#: ../rules/base.xml.in.h:626
+msgid "Tjk"
+msgstr "ΤΖΚ"
+
+#: ../rules/base.xml.in.h:627
+msgid "To the corresponding key in a Dvorak keyboard."
+msgstr ""
+
+#: ../rules/base.xml.in.h:628
+msgid "To the corresponding key in a Qwerty keyboard."
+msgstr ""
+
+#: ../rules/base.xml.in.h:629
+msgid "Toshiba Satellite S3000"
+msgstr ""
+
+#: ../rules/base.xml.in.h:630
+#, fuzzy
+msgid "Traditional phonetic"
+msgstr "ΣυÏιακό φωνητικό"
+
+#: ../rules/base.xml.in.h:631
+msgid "Trust Direct Access Keyboard"
+msgstr ""
+
+#: ../rules/base.xml.in.h:632
+msgid "Trust Slimline"
+msgstr ""
+
+#: ../rules/base.xml.in.h:633
+msgid "Trust Wireless Keyboard Classic"
+msgstr ""
+
+#: ../rules/base.xml.in.h:634
+msgid "Tur"
+msgstr "ΤΟΥ"
+
+#: ../rules/base.xml.in.h:635
+msgid "Turkey"
+msgstr ""
+
+#: ../rules/base.xml.in.h:636
+msgid "Turkmenistan"
+msgstr ""
+
+#: ../rules/base.xml.in.h:637
+msgid "Typewriter"
+msgstr "ΓÏαφομηχανή"
+
+#: ../rules/base.xml.in.h:638
+#, fuzzy
+msgid "Typewriter, legacy"
+msgstr "ΓÏαφομηχανή"
+
+#: ../rules/base.xml.in.h:639
+msgid "UCW layout (accented letters only)"
+msgstr ""
+
+#: ../rules/base.xml.in.h:640
+msgid "US keyboard with Bosnian digraphs"
+msgstr ""
+
+#: ../rules/base.xml.in.h:641
+msgid "US keyboard with Bosnian letters"
+msgstr ""
+
+#: ../rules/base.xml.in.h:642
+msgid "US keyboard with Croatian digraphs"
+msgstr ""
+
+#: ../rules/base.xml.in.h:643
+msgid "US keyboard with Croatian letters"
+msgstr ""
+
+#: ../rules/base.xml.in.h:644
+msgid "US keyboard with Estonian letters"
+msgstr ""
+
+#: ../rules/base.xml.in.h:645
+msgid "US keyboard with Italian letters"
+msgstr ""
+
+#: ../rules/base.xml.in.h:646
+msgid "US keyboard with Lithuanian letters"
+msgstr ""
+
+#: ../rules/base.xml.in.h:647
+msgid "US keyboard with Slovenian letters"
+msgstr ""
+
+#: ../rules/base.xml.in.h:648 ../rules/base.extras.xml.in.h:9
+msgid "USA"
+msgstr "ΑΓΓ"
+
+#: ../rules/base.xml.in.h:649
+msgid "Udmurt"
+msgstr ""
+
+#: ../rules/base.xml.in.h:650
+msgid "Ukr"
+msgstr "ΟΥΚ"
+
+#: ../rules/base.xml.in.h:651
+msgid "Ukraine"
+msgstr "ΟυκÏανία"
+
+#: ../rules/base.xml.in.h:652
+msgid "Unicode additions (arrows and math operators)"
+msgstr ""
+
+#: ../rules/base.xml.in.h:653
+msgid "Unicode additions (arrows and math operators). Math operators on default level"
+msgstr ""
+
+#: ../rules/base.xml.in.h:654
+msgid "UnicodeExpert"
+msgstr "UnicodeExpert"
+
+#: ../rules/base.xml.in.h:655
+msgid "United Kingdom"
+msgstr "Ηνωμένο Βασίλειο"
+
+#: ../rules/base.xml.in.h:656
+msgid "Unitek KB-1925"
+msgstr ""
+
+#: ../rules/base.xml.in.h:657
+msgid "Urdu, Alternative phonetic"
+msgstr ""
+
+#: ../rules/base.xml.in.h:658
+msgid "Urdu, Phonetic"
+msgstr ""
+
+#: ../rules/base.xml.in.h:659
+msgid "Urdu, Winkeys"
+msgstr ""
+
+#: ../rules/base.xml.in.h:660
+msgid "Use Bosnian digraphs"
+msgstr ""
+
+#: ../rules/base.xml.in.h:661
+msgid "Use Croatian digraphs"
+msgstr ""
+
+#: ../rules/base.xml.in.h:662
+msgid "Use guillemets for quotes"
+msgstr ""
+
+#: ../rules/base.xml.in.h:663
+msgid "Use keyboard LED to show alternative layout"
+msgstr ""
+
+#: ../rules/base.xml.in.h:664
+msgid "Using space key to input non-breakable space character"
+msgstr "ΧÏήση πλήκτÏου διαστήματος για εισαγωγή μη-διασπώμενου χαÏακτήÏα διαστήματος"
+
+#: ../rules/base.xml.in.h:665
+msgid "Usual space at any level"
+msgstr ""
+
+#: ../rules/base.xml.in.h:666
+msgid "Uzb"
+msgstr "ΟΥΖ"
+
+#: ../rules/base.xml.in.h:667
+msgid "Uzbekistan"
+msgstr "Ουζμπεκιστάν"
+
+#: ../rules/base.xml.in.h:668
+msgid "Vietnam"
+msgstr "Βιετνάμ"
+
+#: ../rules/base.xml.in.h:669
+msgid "ViewSonic KU-306 Internet Keyboard"
+msgstr ""
+
+#: ../rules/base.xml.in.h:670
+msgid "Vnm"
+msgstr "ΒΙΕ"
+
+#: ../rules/base.xml.in.h:671
+msgid "Wang 724 keypad with unicode additions (arrows and math operators)"
+msgstr ""
+
+#: ../rules/base.xml.in.h:672
+msgid "Wang 724 keypad with unicode additions (arrows and math operators). Math operators on default level"
+msgstr ""
+
+#: ../rules/base.xml.in.h:673
+msgid "Wang model 724 azerty"
+msgstr ""
+
+#: ../rules/base.xml.in.h:674
+msgid "Western"
+msgstr ""
+
+#: ../rules/base.xml.in.h:675
+msgid "Winbook Model XP5"
+msgstr "Winbook Model XP5"
+
+#: ../rules/base.xml.in.h:676
+msgid "Winkeys"
+msgstr "Winkeys"
+
+#: ../rules/base.xml.in.h:677
+msgid "With &lt;\\|&gt; key"
+msgstr "Με πλήκτÏο &lt;\\|&gt;"
+
+#: ../rules/base.xml.in.h:678
+msgid "With EuroSign on 5"
+msgstr "Με το σÏμβολο του ΕυÏÏŽ στο 5"
+
+#: ../rules/base.xml.in.h:679
+msgid "With guillemets"
+msgstr ""
+
+#: ../rules/base.xml.in.h:680
+msgid "Yahoo! Internet Keyboard"
+msgstr "Yahoo! Internet Keyboard"
+
+#: ../rules/base.xml.in.h:681
+msgid "Yakut"
+msgstr ""
+
+#: ../rules/base.xml.in.h:682
+msgid "Yoruba"
+msgstr ""
+
+#: ../rules/base.xml.in.h:683
+msgid "Z and ZHE swapped"
+msgstr ""
+
+#: ../rules/base.xml.in.h:684
+msgid "Zar"
+msgstr ""
+
+#: ../rules/base.xml.in.h:685
+msgid "azerty"
+msgstr "azerty"
+
+#: ../rules/base.xml.in.h:686
+msgid "azerty/digits"
+msgstr "azerty/digits"
+
+#: ../rules/base.xml.in.h:687
+msgid "digits"
+msgstr "digits"
+
+#: ../rules/base.xml.in.h:688
+msgid "displaced semicolon and quote (obsolete)"
+msgstr ""
+
+#: ../rules/base.xml.in.h:689
+msgid "lyx"
+msgstr "lyx"
+
+#: ../rules/base.xml.in.h:690
+msgid "qwerty"
+msgstr "qwerty"
+
+#: ../rules/base.xml.in.h:691
+msgid "qwerty, extended Backslash"
+msgstr ""
+
+#: ../rules/base.xml.in.h:692
+msgid "qwerty/digits"
+msgstr ""
+
+#: ../rules/base.xml.in.h:693
+msgid "qwertz"
+msgstr "qwertz"
+
+#: ../rules/base.extras.xml.in.h:1
+msgid "APL"
+msgstr ""
+
+#: ../rules/base.extras.xml.in.h:2
+msgid "Atsina"
+msgstr ""
+
+#: ../rules/base.extras.xml.in.h:3
+msgid "Combining accents instead of dead keys"
+msgstr ""
+
+#: ../rules/base.extras.xml.in.h:4
+msgid "Couer D'alene Salish"
+msgstr ""
+
+#: ../rules/base.extras.xml.in.h:5
+#, fuzzy
+msgid "International (AltGr Unicode combining)"
+msgstr "Διεθνές (με νεκÏά πλήκτÏα)"
+
+#: ../rules/base.extras.xml.in.h:6
+msgid "International (AltGr Unicode combining, alternative)"
+msgstr ""
+
+#~ msgid "Alt+Control changes group."
+#~ msgstr "Το Alt+Control αλλάζει ομάδα."
+
+#~ msgid "Alt+Shift changes group."
+#~ msgstr "Το Alt+Shift αλλάζει ομάδα."
+
+#~ msgid "Control+Shift changes group."
+#~ msgstr "Το Control+Shift αλλάζει ομάδα."
+
+#~ msgid "Devanagari"
+#~ msgstr "ÎτεναβαγκάÏι"
+
+#~ msgid "Dzo"
+#~ msgstr "ΤΖΟ"
+
+#~ msgid "Dzongkha"
+#~ msgstr "Τζόνγκα"
+
+#~ msgid "Finish and Swedish"
+#~ msgstr "Φινλανδικά και Σουηδικά"
+
+#~ msgid "Sinhala"
+#~ msgstr "Σινχάλα"
+
+#~ msgid "Third level choosers"
+#~ msgstr "Επιλογείς Ï„Ïίτου επιπέδου"
+
+#~ msgid "si1452"
+#~ msgstr "si1452"
+
+#, fuzzy
+#~ msgid "\"Standard\""
+#~ msgstr "Τυπικό"
+
+#, fuzzy
+#~ msgid "Add the EuroSign to the 2 key."
+#~ msgstr "ΠÏοσθήκη του συμβόλου του ΕυÏÏŽ (€) σε πλήκτÏα"
+
+#, fuzzy
+#~ msgid "Add the EuroSign to the E key."
+#~ msgstr "ΠÏοσθήκη του συμβόλου του ΕυÏÏŽ (€) σε πλήκτÏα"
+
+#, fuzzy
+#~ msgid "Deva"
+#~ msgstr "ÎτβόÏακ"
+
+#, fuzzy
+#~ msgid "Sin"
+#~ msgstr "Ισπανία"
+
+#, fuzzy
+#~ msgid "Tam"
+#~ msgstr "Ταμίλ"
+
+#, fuzzy
+#~ msgid "Tel"
+#~ msgstr "ΒΕΛ"
+
+#, fuzzy
+#~ msgid "Turkish"
+#~ msgstr "ΤΟΥ"
+
+#, fuzzy
+#~ msgid "Urd"
+#~ msgstr "ΟΥΚ"
+
+#~ msgid "Pro Keypad"
+#~ msgstr "Pro Keypad"
+
+#~ msgid "IBM ThinkPad 560Z/600/600E/A22E, Intl"
+#~ msgstr "IBM ThinkPad 560Z/600/600E/A22E, Intl"
diff --git a/xorg-server/xkeyboard-config/po/en_GB.po b/xorg-server/xkeyboard-config/po/en_GB.po
index 0f1ac9874..48af18093 100644
--- a/xorg-server/xkeyboard-config/po/en_GB.po
+++ b/xorg-server/xkeyboard-config/po/en_GB.po
@@ -1,1867 +1,1867 @@
-# British English translations for xkeyboard-config package.
-# Copyright (C) 2005 Free Software Foundation
-# This file is distributed under the same license as the xkeyboard-config package.
-# Christopher Orr <chris@protactin.co.uk>, 2005.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: xkeyboard-config\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2005-09-04 23:04+0100\n"
-"PO-Revision-Date: 2005-04-09 16:58+0100\n"
-"Last-Translator: Christopher Orr <chris@protactin.co.uk>\n"
-"Language-Team: English <en_gb@li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=ASCII\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: ../rules/base.xml.in.h:1
-msgid "(F)"
-msgstr "(F)"
-
-#: ../rules/base.xml.in.h:2
-msgid "101/qwerty/comma/Dead keys"
-msgstr "101/qwerty/comma/Dead keys"
-
-#: ../rules/base.xml.in.h:3
-msgid "101/qwerty/comma/Eliminate dead keys"
-msgstr "101/qwerty/comma/Eliminate dead keys"
-
-#: ../rules/base.xml.in.h:4
-msgid "101/qwerty/dot/Dead keys"
-msgstr "101/qwerty/dot/Dead keys"
-
-#: ../rules/base.xml.in.h:5
-msgid "101/qwerty/dot/Eliminate dead keys"
-msgstr "101/qwerty/dot/Eliminate dead keys"
-
-#: ../rules/base.xml.in.h:6
-msgid "101/qwertz/comma/Dead keys"
-msgstr "101/qwertz/comma/Dead keys"
-
-#: ../rules/base.xml.in.h:7
-msgid "101/qwertz/comma/Eliminate dead keys"
-msgstr "101/qwertz/comma/Eliminate dead keys"
-
-#: ../rules/base.xml.in.h:8
-msgid "101/qwertz/dot/Dead keys"
-msgstr "101/qwertz/dot/Dead keys"
-
-#: ../rules/base.xml.in.h:9
-msgid "101/qwertz/dot/Eliminate dead keys"
-msgstr "101/qwertz/dot/Eliminate dead keys"
-
-#: ../rules/base.xml.in.h:10
-msgid "102/qwerty/comma/Dead keys"
-msgstr "102/qwerty/comma/Dead keys"
-
-#: ../rules/base.xml.in.h:11
-msgid "102/qwerty/comma/Eliminate dead keys"
-msgstr "102/qwerty/comma/Eliminate dead keys"
-
-#: ../rules/base.xml.in.h:12
-msgid "102/qwerty/dot/Dead keys"
-msgstr "102/qwerty/dot/Dead keys"
-
-#: ../rules/base.xml.in.h:13
-msgid "102/qwerty/dot/Eliminate dead keys"
-msgstr "102/qwerty/dot/Eliminate dead keys"
-
-#: ../rules/base.xml.in.h:14
-msgid "102/qwertz/comma/Dead keys"
-msgstr "102/qwertz/comma/Dead keys"
-
-#: ../rules/base.xml.in.h:15
-msgid "102/qwertz/comma/Eliminate dead keys"
-msgstr "102/qwertz/comma/Eliminate dead keys"
-
-#: ../rules/base.xml.in.h:16
-msgid "102/qwertz/dot/Dead keys"
-msgstr "102/qwertz/dot/Dead keys"
-
-#: ../rules/base.xml.in.h:17
-msgid "102/qwertz/dot/Eliminate dead keys"
-msgstr "102/qwertz/dot/Eliminate dead keys"
-
-#: ../rules/base.xml.in.h:18
-msgid "A4Tech KB-21"
-msgstr "A4Tech KB-21"
-
-#: ../rules/base.xml.in.h:19
-msgid "A4Tech KBS-8"
-msgstr "A4Tech KBS-8"
-
-#: ../rules/base.xml.in.h:20
-msgid "ACPI Standard"
-msgstr "ACPI Standard"
-
-#: ../rules/base.xml.in.h:21
-msgid "Acer AirKey V"
-msgstr "Acer AirKey V"
-
-#: ../rules/base.xml.in.h:22
-msgid "Acer TravelMate 800"
-msgstr "Acer TravelMate 800"
-
-#: ../rules/base.xml.in.h:23
-msgid "Add the EuroSign to the 2 key."
-msgstr "Add the Euro sign to the 2 key."
-
-#: ../rules/base.xml.in.h:24
-msgid "Add the EuroSign to the 5 key."
-msgstr "Add the Euro sign to the 5 key."
-
-#: ../rules/base.xml.in.h:25
-msgid "Add the EuroSign to the E key."
-msgstr "Add the Euro sign to the E key."
-
-#: ../rules/base.xml.in.h:26
-msgid "Add the standard behavior to Menu key."
-msgstr "Add the standard behaviour to Menu key."
-
-#: ../rules/base.xml.in.h:27
-msgid "Adding the EuroSign to certain keys"
-msgstr "Adding the Euro sign to certain keys"
-
-#: ../rules/base.xml.in.h:28
-msgid "Advance Scorpius KI"
-msgstr "Advance Scorpius KI"
-
-#: ../rules/base.xml.in.h:29
-msgid "Alb"
-msgstr "Alb"
-
-#: ../rules/base.xml.in.h:30
-msgid "Albania"
-msgstr "Albania"
-
-#: ../rules/base.xml.in.h:31
-msgid "Alt and Meta are on the Alt keys (default)."
-msgstr "Alt and Meta are on the Alt keys (default)."
-
-#: ../rules/base.xml.in.h:32
-msgid "Alt is mapped to the right Win-key and Super to Menu."
-msgstr "Alt is mapped to the right Win-key and Super to Menu."
-
-#: ../rules/base.xml.in.h:33
-#, fuzzy
-msgid "Alt+Ctrl changes group."
-msgstr "Alt+Control changes group."
-
-#: ../rules/base.xml.in.h:34
-msgid "Alt+Shift changes group."
-msgstr "Alt+Shift changes group."
-
-#: ../rules/base.xml.in.h:35
-msgid "Alt-Q"
-msgstr "Alt-Q"
-
-#: ../rules/base.xml.in.h:36
-msgid "Alt/Win key behavior"
-msgstr "Alt/Win key behaviour"
-
-#: ../rules/base.xml.in.h:37
-msgid "Alternative"
-msgstr "Alternative"
-
-#: ../rules/base.xml.in.h:38
-msgid "Alternative international (former us_intl)"
-msgstr "Alternative international (former us_intl)"
-
-#: ../rules/base.xml.in.h:39
-msgid "Alternative, Sun dead keys"
-msgstr "Alternative, Sun dead keys"
-
-#: ../rules/base.xml.in.h:40
-msgid "Alternative, eliminate dead keys"
-msgstr "Alternative, eliminate dead keys"
-
-#: ../rules/base.xml.in.h:41
-msgid "Apostrophe (') variant"
-msgstr "Apostrophe (') variant"
-
-#: ../rules/base.xml.in.h:42
-msgid "Ara"
-msgstr "Ara"
-
-#: ../rules/base.xml.in.h:43
-msgid "Arabic"
-msgstr "Arabic"
-
-#: ../rules/base.xml.in.h:44
-msgid "Arm"
-msgstr "Arm"
-
-#: ../rules/base.xml.in.h:45
-msgid "Armenia"
-msgstr "Armenia"
-
-#: ../rules/base.xml.in.h:46
-msgid "Aze"
-msgstr "Aze"
-
-#: ../rules/base.xml.in.h:47
-msgid "Azerbaijan"
-msgstr "Azerbaijan"
-
-#: ../rules/base.xml.in.h:48
-msgid "Azona RF2300 wireless Internet Keyboard"
-msgstr "Azona RF2300 wireless Internet Keyboard"
-
-#: ../rules/base.xml.in.h:49
-msgid "BTC 5090"
-msgstr "BTC 5090"
-
-#: ../rules/base.xml.in.h:50
-msgid "BTC 5113RF Multimedia"
-msgstr "BTC 5113RF Multimedia"
-
-#: ../rules/base.xml.in.h:51
-msgid "BTC 5126T"
-msgstr "BTC 5126T"
-
-#: ../rules/base.xml.in.h:52
-msgid "BTC 9000"
-msgstr "BTC 9000"
-
-#: ../rules/base.xml.in.h:53
-msgid "BTC 9000A"
-msgstr "BTC 9000A"
-
-#: ../rules/base.xml.in.h:54
-msgid "BTC 9001AH"
-msgstr "BTC 9001AH"
-
-#: ../rules/base.xml.in.h:55
-#, fuzzy
-msgid "Ban"
-msgstr "Kan"
-
-#: ../rules/base.xml.in.h:56
-msgid "Bangladesh"
-msgstr ""
-
-#: ../rules/base.xml.in.h:57
-msgid "Bel"
-msgstr "Bel"
-
-#: ../rules/base.xml.in.h:58
-msgid "Belarus"
-msgstr "Belarus"
-
-#: ../rules/base.xml.in.h:59
-msgid "Belgium"
-msgstr "Belgium"
-
-#: ../rules/base.xml.in.h:60
-#, fuzzy
-msgid "Bengali"
-msgstr "Probhat"
-
-#: ../rules/base.xml.in.h:61
-#, fuzzy
-msgid "Bengali Probhat"
-msgstr "Probhat"
-
-#: ../rules/base.xml.in.h:62
-msgid "Bgr"
-msgstr "Bgr"
-
-#: ../rules/base.xml.in.h:63
-#, fuzzy
-msgid "Bhu"
-msgstr "Bih"
-
-#: ../rules/base.xml.in.h:64
-#, fuzzy
-msgid "Bhutan"
-msgstr "Kan"
-
-#: ../rules/base.xml.in.h:65
-msgid "Bih"
-msgstr "Bih"
-
-#: ../rules/base.xml.in.h:66
-msgid "Blr"
-msgstr "Blr"
-
-#: ../rules/base.xml.in.h:67
-msgid "Bosnia and Herzegovina"
-msgstr "Bosnia and Herzegovina"
-
-#: ../rules/base.xml.in.h:68
-msgid "Both Alt keys together change group."
-msgstr "Both Alt keys together change group."
-
-#: ../rules/base.xml.in.h:69
-msgid "Both Ctrl keys together change group."
-msgstr "Both Ctrl keys together change group."
-
-#: ../rules/base.xml.in.h:70
-msgid "Both Shift keys together change group."
-msgstr "Both Shift keys together change group."
-
-#: ../rules/base.xml.in.h:71
-msgid "Both Win-keys switch group while pressed."
-msgstr "Both Win-keys switch group while pressed."
-
-#: ../rules/base.xml.in.h:72
-msgid "Bra"
-msgstr "Bra"
-
-#: ../rules/base.xml.in.h:73
-msgid "Brazil"
-msgstr "Brazil"
-
-#: ../rules/base.xml.in.h:74
-msgid "Brazilian ABNT2"
-msgstr "Brazilian ABNT2"
-
-#: ../rules/base.xml.in.h:75
-msgid "Brother Internet Keyboard"
-msgstr "Brother Internet Keyboard"
-
-#: ../rules/base.xml.in.h:76
-msgid "Bulgaria"
-msgstr "Bulgaria"
-
-#: ../rules/base.xml.in.h:77
-msgid "Can"
-msgstr "Can"
-
-#: ../rules/base.xml.in.h:78
-msgid "Canada"
-msgstr "Canada"
-
-#: ../rules/base.xml.in.h:79
-msgid "CapsLock LED shows alternative group."
-msgstr "Caps Lock LED shows alternative group."
-
-#: ../rules/base.xml.in.h:80
-msgid "CapsLock acts as Shift with locking. Shift cancels CapsLock."
-msgstr "Caps Lock acts as Shift with locking. Shift cancels Caps Lock."
-
-#: ../rules/base.xml.in.h:81
-msgid "CapsLock acts as Shift with locking. Shift doesn't cancel CapsLock."
-msgstr "Caps Lock acts as Shift with locking. Shift doesn't cancel Caps Lock."
-
-#: ../rules/base.xml.in.h:82
-msgid "CapsLock just locks the Shift modifier."
-msgstr "Caps Lock just locks the Shift modifier."
-
-#: ../rules/base.xml.in.h:83
-msgid "CapsLock key behavior"
-msgstr "Caps Lock key behaviour"
-
-#: ../rules/base.xml.in.h:84
-msgid "CapsLock key changes group."
-msgstr "Caps Lock key changes group."
-
-#: ../rules/base.xml.in.h:85
-msgid "CapsLock toggles Shift so all keys are affected."
-msgstr "Caps Lock toggles Shift so all keys are affected."
-
-#: ../rules/base.xml.in.h:86
-msgid "CapsLock toggles normal capitalization of alphabetic characters."
-msgstr "Caps Lock toggles normal capitalisation of alphabetic characters."
-
-#: ../rules/base.xml.in.h:87
-msgid "CapsLock uses internal capitalization. Shift cancels CapsLock."
-msgstr "Caps Lock uses internal capitalisation. Shift cancels Caps Lock."
-
-#: ../rules/base.xml.in.h:88
-msgid "CapsLock uses internal capitalization. Shift doesn't cancel CapsLock."
-msgstr ""
-"Caps Lock uses internal capitalisation. Shift doesn't cancel Caps Lock."
-
-#: ../rules/base.xml.in.h:89
-msgid "Che"
-msgstr "Che"
-
-#: ../rules/base.xml.in.h:90
-msgid "Cherry Blue Line CyBo@rd"
-msgstr "Cherry Blue Line CyBo@rd"
-
-#: ../rules/base.xml.in.h:91
-msgid "Cherry Blue Line CyBo@rd (alternate option)"
-msgstr "Cherry Blue Line CyBo@rd (alternate option)"
-
-#: ../rules/base.xml.in.h:92
-msgid "Cherry CyMotion Master Linux"
-msgstr ""
-
-#: ../rules/base.xml.in.h:93
-msgid "Chicony Internet Keyboard"
-msgstr "Chicony Internet Keyboard"
-
-#: ../rules/base.xml.in.h:94
-msgid "Chicony KB-9885"
-msgstr "Chicony KB-9885"
-
-#: ../rules/base.xml.in.h:95
-msgid "CloGaelach"
-msgstr "CloGaelach"
-
-#: ../rules/base.xml.in.h:96
-msgid "Compaq Easy Access Keyboard"
-msgstr "Compaq Easy Access Keyboard"
-
-#: ../rules/base.xml.in.h:97
-msgid "Compaq Internet Keyboard (13 keys)"
-msgstr "Compaq Internet Keyboard (13 keys)"
-
-#: ../rules/base.xml.in.h:98
-msgid "Compaq Internet Keyboard (18 keys)"
-msgstr "Compaq Internet Keyboard (18 keys)"
-
-#: ../rules/base.xml.in.h:99
-msgid "Compaq Internet Keyboard (7 keys)"
-msgstr "Compaq Internet Keyboard (7 keys)"
-
-#: ../rules/base.xml.in.h:100
-msgid "Compaq iPaq Keyboard"
-msgstr "Compaq iPaq Keyboard"
-
-#: ../rules/base.xml.in.h:101
-#, fuzzy
-msgid "Compose key position"
-msgstr "Control Key Position"
-
-#: ../rules/base.xml.in.h:102
-msgid "Croatia"
-msgstr "Croatia"
-
-#: ../rules/base.xml.in.h:103
-#, fuzzy
-msgid "Ctrl key at bottom left"
-msgstr "Control key at bottom left"
-
-#: ../rules/base.xml.in.h:104
-#, fuzzy
-msgid "Ctrl key at left of 'A'"
-msgstr "Control key at left of 'A'"
-
-#: ../rules/base.xml.in.h:105
-#, fuzzy
-msgid "Ctrl key position"
-msgstr "Control Key Position"
-
-#: ../rules/base.xml.in.h:106
-#, fuzzy
-msgid "Ctrl+Shift changes group."
-msgstr "Control+Shift changes group."
-
-#: ../rules/base.xml.in.h:107
-msgid "Cyrillic"
-msgstr "Cyrillic"
-
-#: ../rules/base.xml.in.h:108
-msgid "Cze"
-msgstr "Cze"
-
-#: ../rules/base.xml.in.h:109
-msgid "Czechia"
-msgstr "Czechia"
-
-#: ../rules/base.xml.in.h:110
-msgid "DTK2000"
-msgstr "DTK2000"
-
-#: ../rules/base.xml.in.h:111
-msgid "Dead acute"
-msgstr "Dead acute"
-
-#: ../rules/base.xml.in.h:112
-msgid "Dead grave acute"
-msgstr "Dead grave acute"
-
-#: ../rules/base.xml.in.h:113
-msgid "Dell"
-msgstr "Dell"
-
-#: ../rules/base.xml.in.h:114
-msgid "Dell 101-key PC"
-msgstr "Dell 101-key PC"
-
-#: ../rules/base.xml.in.h:115
-msgid "Denmark"
-msgstr "Denmark"
-
-#: ../rules/base.xml.in.h:116
-msgid "Deu"
-msgstr "Deu"
-
-#: ../rules/base.xml.in.h:117
-msgid "Dexxa Wireless Desktop Keyboard"
-msgstr "Dexxa Wireless Desktop Keyboard"
-
-#: ../rules/base.xml.in.h:118
-msgid "Diamond 9801 / 9802 series"
-msgstr "Diamond 9801 / 9802 series"
-
-#: ../rules/base.xml.in.h:119
-msgid "Dnk"
-msgstr "Dnk"
-
-#: ../rules/base.xml.in.h:120
-msgid "Dvorak"
-msgstr "Dvorak"
-
-#: ../rules/base.xml.in.h:121
-msgid "Dvorak, Polish quotes on key \"1/!\""
-msgstr "Dvorak, Polish quotes on key \"1/!\""
-
-#: ../rules/base.xml.in.h:122
-msgid "Dvorak, Polish quotes on quotemark key"
-msgstr "Dvorak, Polish quotes on quotemark key"
-
-#: ../rules/base.xml.in.h:123
-msgid "Eliminate dead keys"
-msgstr "Eliminate dead keys"
-
-#: ../rules/base.xml.in.h:124
-msgid "Ennyah DKB-1008"
-msgstr "Ennyah DKB-1008"
-
-#: ../rules/base.xml.in.h:125
-msgid "Esp"
-msgstr "Esp"
-
-#: ../rules/base.xml.in.h:126
-msgid "Est"
-msgstr "Est"
-
-#: ../rules/base.xml.in.h:127
-msgid "Estonia"
-msgstr "Estonia"
-
-#: ../rules/base.xml.in.h:128
-msgid "Everex STEPnote"
-msgstr "Everex STEPnote"
-
-#: ../rules/base.xml.in.h:129
-msgid "Extended"
-msgstr "Extended"
-
-#: ../rules/base.xml.in.h:130
-msgid "Extended Backslash"
-msgstr "Extended Backslash"
-
-#: ../rules/base.xml.in.h:131
-msgid "F-letter (F) variant"
-msgstr "F-letter (F) variant"
-
-#: ../rules/base.xml.in.h:132
-msgid "Fao"
-msgstr "Fao"
-
-#: ../rules/base.xml.in.h:133
-msgid "Faroe Islands"
-msgstr "Faroe Islands"
-
-#: ../rules/base.xml.in.h:134
-msgid "Fin"
-msgstr "Fin"
-
-#: ../rules/base.xml.in.h:135
-msgid "Finland"
-msgstr "Finland"
-
-#: ../rules/base.xml.in.h:136
-msgid "Fra"
-msgstr "Fra"
-
-#: ../rules/base.xml.in.h:137
-msgid "France"
-msgstr "France"
-
-#: ../rules/base.xml.in.h:138
-msgid "French"
-msgstr "French"
-
-#: ../rules/base.xml.in.h:139
-msgid "French (legacy)"
-msgstr "French (legacy)"
-
-#: ../rules/base.xml.in.h:140
-msgid "French Dvorak"
-msgstr "French Dvorak"
-
-#: ../rules/base.xml.in.h:141
-msgid "French, Sun dead keys"
-msgstr "French, Sun dead keys"
-
-#: ../rules/base.xml.in.h:142
-msgid "French, eliminate dead keys"
-msgstr "French, eliminate dead keys"
-
-#: ../rules/base.xml.in.h:143
-msgid "GBr"
-msgstr "GBr"
-
-#: ../rules/base.xml.in.h:144
-msgid "Generic 101-key PC"
-msgstr "Generic 101-key PC"
-
-#: ../rules/base.xml.in.h:145
-msgid "Generic 102-key (Intl) PC"
-msgstr "Generic 102-key (Intl) PC"
-
-#: ../rules/base.xml.in.h:146
-msgid "Generic 104-key PC"
-msgstr "Generic 104-key PC"
-
-#: ../rules/base.xml.in.h:147
-msgid "Generic 105-key (Intl) PC"
-msgstr "Generic 105-key (Intl) PC"
-
-#: ../rules/base.xml.in.h:148
-msgid "Genius Comfy KB-16M / Genius MM Keyboard KWD-910"
-msgstr "Genius Comfy KB-16M / Genius MM Keyboard KWD-910"
-
-#: ../rules/base.xml.in.h:149
-msgid "Genius Comfy KB-21e-Scroll"
-msgstr "Genius Comfy KB-21e-Scroll"
-
-#: ../rules/base.xml.in.h:150
-msgid "Geo"
-msgstr "Geo"
-
-#: ../rules/base.xml.in.h:151
-msgid "Georgia"
-msgstr "Georgia"
-
-#: ../rules/base.xml.in.h:152
-msgid "German, Sun dead keys"
-msgstr "German, Sun dead keys"
-
-#: ../rules/base.xml.in.h:153
-msgid "German, eliminate dead keys"
-msgstr "German, eliminate dead keys"
-
-#: ../rules/base.xml.in.h:154
-msgid "Germany"
-msgstr "Germany"
-
-#: ../rules/base.xml.in.h:155
-msgid "Gre"
-msgstr "Gre"
-
-#: ../rules/base.xml.in.h:156
-msgid "Greece"
-msgstr "Greece"
-
-#: ../rules/base.xml.in.h:157
-msgid "Group Shift/Lock behavior"
-msgstr "Group Shift/Lock behaviour"
-
-#: ../rules/base.xml.in.h:158
-#, fuzzy
-msgid "Gujarati"
-msgstr "Gujarati"
-
-#: ../rules/base.xml.in.h:159
-#, fuzzy
-msgid "Gurmukhi"
-msgstr "Guru"
-
-#: ../rules/base.xml.in.h:160
-msgid "Gyration"
-msgstr "Gyration"
-
-#: ../rules/base.xml.in.h:161
-msgid "Hewlett-Packard Internet Keyboard"
-msgstr "Hewlett-Packard Internet Keyboard"
-
-#: ../rules/base.xml.in.h:162
-msgid "Hewlett-Packard Omnibook 500 FA"
-msgstr "Hewlett-Packard Omnibook 500 FA"
-
-#: ../rules/base.xml.in.h:163
-msgid "Hewlett-Packard Omnibook 5xx"
-msgstr "Hewlett-Packard Omnibook 5xx"
-
-#: ../rules/base.xml.in.h:164
-msgid "Hewlett-Packard Omnibook 6000/6100"
-msgstr "Hewlett-Packard Omnibook 6000/6100"
-
-#: ../rules/base.xml.in.h:165
-msgid "Hewlett-Packard Omnibook XE3 GC"
-msgstr "Hewlett-Packard Omnibook XE3 GC"
-
-#: ../rules/base.xml.in.h:166
-msgid "Hewlett-Packard Omnibook XE3 GF"
-msgstr "Hewlett-Packard Omnibook XE3 GF"
-
-#: ../rules/base.xml.in.h:167
-msgid "Hewlett-Packard Omnibook XT1000"
-msgstr "Hewlett-Packard Omnibook XT1000"
-
-#: ../rules/base.xml.in.h:168
-msgid "Hewlett-Packard Pavilion ZT11xx"
-msgstr "Hewlett-Packard Pavilion ZT11xx"
-
-#: ../rules/base.xml.in.h:169
-msgid "Hewlett-Packard SK-2501 Multimedia Keyboard"
-msgstr "Hewlett-Packard SK-2501 Multimedia Keyboard"
-
-#: ../rules/base.xml.in.h:170
-msgid "Hewlett-Packard SK-2505 Internet Keyboard"
-msgstr "Hewlett-Packard SK-2505 Internet Keyboard"
-
-#: ../rules/base.xml.in.h:171
-msgid "Honeywell Euroboard"
-msgstr "Honeywell Euroboard"
-
-#: ../rules/base.xml.in.h:172
-msgid "Hrv"
-msgstr "Hrv"
-
-#: ../rules/base.xml.in.h:173
-msgid "Hun"
-msgstr "Hun"
-
-#: ../rules/base.xml.in.h:174
-msgid "Hungary"
-msgstr "Hungary"
-
-#: ../rules/base.xml.in.h:175
-msgid "Hyper is mapped to the Win-keys."
-msgstr "Hyper is mapped to the Win-keys."
-
-#: ../rules/base.xml.in.h:176
-msgid "IBM Rapid Access"
-msgstr "IBM Rapid Access"
-
-#: ../rules/base.xml.in.h:177
-msgid "IBM Rapid Access II"
-msgstr "IBM Rapid Access II"
-
-#: ../rules/base.xml.in.h:178
-msgid "IBM Rapid Access II (alternate option)"
-msgstr "IBM Rapid Access II (alternate option)"
-
-#: ../rules/base.xml.in.h:179
-msgid "IBM ThinkPad 560Z/600/600E/A22E"
-msgstr "IBM ThinkPad 560Z/600/600E/A22E"
-
-#: ../rules/base.xml.in.h:180
-msgid "ISO Alternate"
-msgstr "ISO Alternate"
-
-#: ../rules/base.xml.in.h:181
-msgid "Iceland"
-msgstr "Iceland"
-
-#: ../rules/base.xml.in.h:182
-#, fuzzy
-msgid "Ind"
-msgstr "Irn"
-
-#: ../rules/base.xml.in.h:183
-msgid "India"
-msgstr ""
-
-#: ../rules/base.xml.in.h:184
-msgid "International (with dead keys)"
-msgstr "International (with dead keys)"
-
-#: ../rules/base.xml.in.h:185
-msgid "Inuktitut"
-msgstr "Inuktitut"
-
-#: ../rules/base.xml.in.h:186
-msgid "Iran"
-msgstr "Iran"
-
-#: ../rules/base.xml.in.h:187
-msgid "Ireland"
-msgstr "Ireland"
-
-#: ../rules/base.xml.in.h:188
-msgid "Irl"
-msgstr "Irl"
-
-#: ../rules/base.xml.in.h:189
-msgid "Irn"
-msgstr "Irn"
-
-#: ../rules/base.xml.in.h:190
-msgid "Isl"
-msgstr "Isl"
-
-#: ../rules/base.xml.in.h:191
-msgid "Isr"
-msgstr "Isr"
-
-#: ../rules/base.xml.in.h:192
-msgid "Israel"
-msgstr "Israel"
-
-#: ../rules/base.xml.in.h:193
-msgid "Ita"
-msgstr "Ita"
-
-#: ../rules/base.xml.in.h:194
-msgid "Italy"
-msgstr "Italy"
-
-#: ../rules/base.xml.in.h:195
-msgid "Japan"
-msgstr "Japan"
-
-#: ../rules/base.xml.in.h:196
-msgid "Japanese 106-key"
-msgstr "Japanese 106-key"
-
-#: ../rules/base.xml.in.h:197
-msgid "Jpn"
-msgstr "Jpn"
-
-#: ../rules/base.xml.in.h:198
-#, fuzzy
-msgid "Kannada"
-msgstr "Canada"
-
-#: ../rules/base.xml.in.h:199
-msgid "Keypad"
-msgstr ""
-
-#: ../rules/base.xml.in.h:200
-msgid "Keytronic FlexPro"
-msgstr "Keytronic FlexPro"
-
-#: ../rules/base.xml.in.h:201
-msgid "Kyr"
-msgstr "Kyr"
-
-#: ../rules/base.xml.in.h:202
-msgid "Kyrgyzstan"
-msgstr "Kyrgyzstan"
-
-#: ../rules/base.xml.in.h:203
-msgid "LAm"
-msgstr "LAm"
-
-#: ../rules/base.xml.in.h:204
-msgid "Lao"
-msgstr "Lao"
-
-#: ../rules/base.xml.in.h:205
-msgid "Laos"
-msgstr "Laos"
-
-#: ../rules/base.xml.in.h:206
-msgid "Laptop/notebook Compaq (eg. Armada) Laptop Keyboard"
-msgstr "Laptop/notebook Compaq (eg. Armada) Laptop Keyboard"
-
-#: ../rules/base.xml.in.h:207
-msgid "Laptop/notebook Compaq (eg. Presario) Internet Keyboard"
-msgstr "Laptop/notebook Compaq (eg. Presario) Internet Keyboard"
-
-#: ../rules/base.xml.in.h:208
-msgid "Laptop/notebook Dell Inspiron 8xxx"
-msgstr "Laptop/notebook Dell Inspiron 8xxx"
-
-#: ../rules/base.xml.in.h:209
-msgid "Latin"
-msgstr "Latin"
-
-#: ../rules/base.xml.in.h:210
-msgid "Latin American"
-msgstr "Latin American"
-
-#: ../rules/base.xml.in.h:211
-msgid "Latin Unicode"
-msgstr "Latin Unicode"
-
-#: ../rules/base.xml.in.h:212
-msgid "Latin Unicode qwerty"
-msgstr "Latin Unicode qwerty"
-
-#: ../rules/base.xml.in.h:213
-msgid "Latin qwerty"
-msgstr "Latin qwerty"
-
-#: ../rules/base.xml.in.h:214
-msgid "Latin with guillemots"
-msgstr "Latin with guillemots"
-
-#: ../rules/base.xml.in.h:215
-msgid "Latvia"
-msgstr "Latvia"
-
-#: ../rules/base.xml.in.h:216
-msgid "Left Alt key changes group."
-msgstr "Left Alt key changes group."
-
-#: ../rules/base.xml.in.h:217
-msgid "Left Alt key switches group while pressed."
-msgstr "Left Alt key switches group while pressed."
-
-#: ../rules/base.xml.in.h:218
-msgid "Left Ctrl key changes group."
-msgstr "Left Ctrl key changes group."
-
-#: ../rules/base.xml.in.h:219
-msgid "Left Shift key changes group."
-msgstr "Left Shift key changes group."
-
-#: ../rules/base.xml.in.h:220
-msgid "Left Win-key changes group."
-msgstr "Left Win-key changes group."
-
-#: ../rules/base.xml.in.h:221
-msgid "Left Win-key switches group while pressed."
-msgstr "Left Win-key switches group while pressed."
-
-#: ../rules/base.xml.in.h:222
-msgid "Lithuania"
-msgstr "Lithuania"
-
-#: ../rules/base.xml.in.h:223
-msgid "Logitech Access Keyboard"
-msgstr "Logitech Access Keyboard"
-
-#: ../rules/base.xml.in.h:224
-msgid "Logitech Cordless Desktop"
-msgstr "Logitech Cordless Desktop"
-
-#: ../rules/base.xml.in.h:225
-msgid "Logitech Cordless Desktop Navigator"
-msgstr "Logitech Cordless Desktop Navigator"
-
-#: ../rules/base.xml.in.h:226
-msgid "Logitech Cordless Desktop Optical"
-msgstr "Logitech Cordless Desktop Optical"
-
-#: ../rules/base.xml.in.h:227
-msgid "Logitech Cordless Desktop Pro"
-msgstr "Logitech Cordless Desktop Pro"
-
-#: ../rules/base.xml.in.h:228
-msgid "Logitech Cordless Desktop Pro (alternate option)"
-msgstr "Logitech Cordless Desktop Pro (alternate option)"
-
-#: ../rules/base.xml.in.h:229
-msgid "Logitech Cordless Desktop Pro (alternate option2)"
-msgstr "Logitech Cordless Desktop Pro (alternate option2)"
-
-#: ../rules/base.xml.in.h:230
-msgid "Logitech Cordless Desktop iTouch"
-msgstr "Logitech Cordless Desktop iTouch"
-
-#: ../rules/base.xml.in.h:231
-msgid "Logitech Cordless Freedom/Desktop Navigator"
-msgstr "Logitech Cordless Freedom/Desktop Navigator"
-
-#: ../rules/base.xml.in.h:232
-msgid "Logitech Deluxe Access Keyboard"
-msgstr "Logitech Deluxe Access Keyboard"
-
-#: ../rules/base.xml.in.h:233
-msgid "Logitech Internet Keyboard"
-msgstr "Logitech Internet Keyboard"
-
-#: ../rules/base.xml.in.h:234
-msgid "Logitech Internet Navigator Keyboard"
-msgstr "Logitech Internet Navigator Keyboard"
-
-#: ../rules/base.xml.in.h:235
-#, fuzzy
-msgid "Logitech Ultra-X Keyboard"
-msgstr "Logitech Internet Keyboard"
-
-#: ../rules/base.xml.in.h:236
-msgid "Logitech iTouch"
-msgstr "Logitech iTouch"
-
-#: ../rules/base.xml.in.h:237
-msgid "Logitech iTouch Cordless Keyboard (model Y-RB6)"
-msgstr "Logitech iTouch Cordless Keyboard (model Y-RB6)"
-
-#: ../rules/base.xml.in.h:238
-msgid "Logitech iTouch keyboard Internet Navigator"
-msgstr "Logitech iTouch keyboard Internet Navigator"
-
-#: ../rules/base.xml.in.h:239
-msgid "Ltu"
-msgstr "Ltu"
-
-#: ../rules/base.xml.in.h:240
-msgid "Lva"
-msgstr "Lva"
-
-#: ../rules/base.xml.in.h:241
-#, fuzzy
-msgid "Macedonia (FYROM)"
-msgstr "Macedonian"
-
-#: ../rules/base.xml.in.h:242
-msgid "Macintosh"
-msgstr "Macintosh"
-
-#: ../rules/base.xml.in.h:243
-msgid "Macintosh Old"
-msgstr "Macintosh Old"
-
-#: ../rules/base.xml.in.h:244
-#, fuzzy
-msgid "Make CapsLock an additional Ctrl."
-msgstr "Make Caps Lock an additional Control."
-
-#: ../rules/base.xml.in.h:245
-msgid "Mal"
-msgstr "Mal"
-
-#: ../rules/base.xml.in.h:246
-#, fuzzy
-msgid "Malayalam"
-msgstr "Malayalam"
-
-#: ../rules/base.xml.in.h:247
-msgid "Maldives"
-msgstr ""
-
-#: ../rules/base.xml.in.h:248
-msgid "Malta"
-msgstr "Malta"
-
-#: ../rules/base.xml.in.h:249
-msgid "Mao"
-msgstr "Mao"
-
-#: ../rules/base.xml.in.h:250
-msgid "Maori"
-msgstr "Maori"
-
-#: ../rules/base.xml.in.h:251
-msgid "Memorex MX1998"
-msgstr "Memorex MX1998"
-
-#: ../rules/base.xml.in.h:252
-msgid "Memorex MX2500 EZ-Access Keyboard"
-msgstr "Memorex MX2500 EZ-Access Keyboard"
-
-#: ../rules/base.xml.in.h:253
-msgid "Memorex MX2750"
-msgstr "Memorex MX2750"
-
-#: ../rules/base.xml.in.h:254
-msgid "Menu is Compose."
-msgstr "Menu is Compose."
-
-#: ../rules/base.xml.in.h:255
-msgid "Menu key changes group."
-msgstr "Menu key changes group."
-
-#: ../rules/base.xml.in.h:256
-msgid "Meta is mapped to the Win-keys."
-msgstr "Meta is mapped to the Win-keys."
-
-#: ../rules/base.xml.in.h:257
-msgid "Meta is mapped to the left Win-key."
-msgstr "Meta is mapped to the left Win-key."
-
-#: ../rules/base.xml.in.h:258
-msgid "Microsoft Internet Keyboard"
-msgstr "Microsoft Internet Keyboard"
-
-#: ../rules/base.xml.in.h:259
-msgid "Microsoft Internet Keyboard Pro, Swedish"
-msgstr "Microsoft Internet Keyboard Pro, Swedish"
-
-#: ../rules/base.xml.in.h:260
-msgid "Microsoft Natural"
-msgstr "Microsoft Natural"
-
-#: ../rules/base.xml.in.h:261
-msgid "Microsoft Natural Keyboard Pro / Microsoft Internet Keyboard Pro"
-msgstr "Microsoft Natural Keyboard Pro / Microsoft Internet Keyboard Pro"
-
-#: ../rules/base.xml.in.h:262
-msgid "Microsoft Natural Keyboard Pro OEM"
-msgstr "Microsoft Natural Keyboard Pro OEM"
-
-#: ../rules/base.xml.in.h:263
-msgid "Microsoft Natural Keyboard Pro USB / Microsoft Internet Keyboard Pro"
-msgstr "Microsoft Natural Keyboard Pro USB / Microsoft Internet Keyboard Pro"
-
-#: ../rules/base.xml.in.h:264
-msgid "Microsoft Office Keyboard"
-msgstr "Microsoft Office Keyboard"
-
-#: ../rules/base.xml.in.h:265
-msgid "Microsoft Wireless Multimedia Keyboard 1.0A"
-msgstr "Microsoft Wireless Multimedia Keyboard 1.0A"
-
-#: ../rules/base.xml.in.h:266
-msgid "Miscellaneous compatibility options"
-msgstr "Miscellaneous compatibility options"
-
-#: ../rules/base.xml.in.h:267
-msgid "Mkd"
-msgstr "Mkd"
-
-#: ../rules/base.xml.in.h:268
-msgid "Mlt"
-msgstr "Mlt"
-
-#: ../rules/base.xml.in.h:269
-msgid "Mmr"
-msgstr "Mmr"
-
-#: ../rules/base.xml.in.h:270
-msgid "Mng"
-msgstr "Mng"
-
-#: ../rules/base.xml.in.h:271
-msgid "Mongolia"
-msgstr "Mongolia"
-
-#: ../rules/base.xml.in.h:272
-msgid "Multilingual"
-msgstr "Multilingual"
-
-#: ../rules/base.xml.in.h:273
-msgid "Multilingual, second part"
-msgstr "Multilingual, second part"
-
-#: ../rules/base.xml.in.h:274
-msgid "Myanmar"
-msgstr "Myanmar"
-
-#: ../rules/base.xml.in.h:275
-msgid "Netherlands"
-msgstr "Netherlands"
-
-#: ../rules/base.xml.in.h:276
-msgid "Nld"
-msgstr "Nld"
-
-#: ../rules/base.xml.in.h:277
-msgid "Nor"
-msgstr "Nor"
-
-#: ../rules/base.xml.in.h:278
-msgid "Northern Saami"
-msgstr "Northern Saami"
-
-#: ../rules/base.xml.in.h:279
-#, fuzzy
-msgid "Northern Saami, eliminate dead keys"
-msgstr "Alternative, eliminate dead keys"
-
-#: ../rules/base.xml.in.h:280
-msgid "Northgate OmniKey 101"
-msgstr "Northgate OmniKey 101"
-
-#: ../rules/base.xml.in.h:281
-msgid "Norway"
-msgstr "Norway"
-
-#: ../rules/base.xml.in.h:282
-msgid "NumLock LED shows alternative group."
-msgstr "Num Lock LED shows alternative group."
-
-#: ../rules/base.xml.in.h:283
-msgid "Ogham"
-msgstr "Ogham"
-
-#: ../rules/base.xml.in.h:284
-#, fuzzy
-msgid "Ogham IS434"
-msgstr "IS434"
-
-#: ../rules/base.xml.in.h:285
-msgid "Oretec MCK-800 MM/Internet keyboard"
-msgstr "Oretec MCK-800 MM/Internet keyboard"
-
-#: ../rules/base.xml.in.h:286
-msgid "Oriya"
-msgstr "Oriya"
-
-#: ../rules/base.xml.in.h:287
-msgid "PC-98xx Series"
-msgstr "PC-98xx Series"
-
-#: ../rules/base.xml.in.h:288
-msgid "Pak"
-msgstr ""
-
-#: ../rules/base.xml.in.h:289
-#, fuzzy
-msgid "Pakistan"
-msgstr "Tajikistan"
-
-#: ../rules/base.xml.in.h:290
-msgid "Pattachote"
-msgstr "Pattachote"
-
-#: ../rules/base.xml.in.h:291
-msgid "Phonetic"
-msgstr "Phonetic"
-
-#: ../rules/base.xml.in.h:292
-msgid "Pol"
-msgstr "Pol"
-
-#: ../rules/base.xml.in.h:293
-msgid "Poland"
-msgstr "Poland"
-
-#: ../rules/base.xml.in.h:294
-msgid "Polytonic"
-msgstr "Polytonic"
-
-#: ../rules/base.xml.in.h:295
-msgid "Portugal"
-msgstr "Portugal"
-
-#: ../rules/base.xml.in.h:296
-#, fuzzy
-msgid "Power G5"
-msgstr "PowerPC PS/2"
-
-#: ../rules/base.xml.in.h:297
-msgid "PowerPC PS/2"
-msgstr "PowerPC PS/2"
-
-#: ../rules/base.xml.in.h:298
-msgid "Press Left Alt key to choose 3rd level."
-msgstr "Press Left Alt key to choose 3rd level."
-
-#: ../rules/base.xml.in.h:299
-msgid "Press Left Win-key to choose 3rd level."
-msgstr "Press Left Win-key to choose 3rd level."
-
-#: ../rules/base.xml.in.h:300
-msgid "Press Menu key to choose 3rd level."
-msgstr "Press Menu key to choose 3rd level."
-
-#: ../rules/base.xml.in.h:301
-msgid "Press Right Alt key to choose 3rd level."
-msgstr "Press Right Alt key to choose 3rd level."
-
-#: ../rules/base.xml.in.h:302
-#, fuzzy
-msgid "Press Right Ctrl to choose 3rd level."
-msgstr "Press Right Control to choose 3rd level."
-
-#: ../rules/base.xml.in.h:303
-msgid "Press Right Win-key to choose 3rd level."
-msgstr "Press Right Win-key to choose 3rd level."
-
-#: ../rules/base.xml.in.h:304
-msgid "Press any of Alt keys to choose 3rd level."
-msgstr "Press any of Alt keys to choose 3rd level."
-
-#: ../rules/base.xml.in.h:305
-msgid "Press any of Win-keys to choose 3rd level."
-msgstr "Press any of Win-keys to choose 3rd level."
-
-#: ../rules/base.xml.in.h:306
-#, fuzzy
-msgid "Pro"
-msgstr "Prt"
-
-#: ../rules/base.xml.in.h:307
-msgid "Pro Keypad"
-msgstr ""
-
-#: ../rules/base.xml.in.h:308
-msgid "Probhat"
-msgstr "Probhat"
-
-#: ../rules/base.xml.in.h:309
-msgid "Propeller Voyager (KTEZ-1000)"
-msgstr "Propeller Voyager (KTEZ-1000)"
-
-#: ../rules/base.xml.in.h:310
-msgid "Prt"
-msgstr "Prt"
-
-#: ../rules/base.xml.in.h:311
-msgid "QTronix Scorpius 98N+"
-msgstr "QTronix Scorpius 98N+"
-
-#: ../rules/base.xml.in.h:312
-msgid "R-Alt switches group while pressed."
-msgstr "R-Alt switches group while pressed."
-
-#: ../rules/base.xml.in.h:313
-msgid "Right Alt is Compose."
-msgstr "Right Alt is Compose."
-
-#: ../rules/base.xml.in.h:314
-msgid "Right Alt key changes group."
-msgstr "Right Alt key changes group."
-
-#: ../rules/base.xml.in.h:315
-msgid "Right Ctrl is Compose."
-msgstr "Right Ctrl is Compose."
-
-#: ../rules/base.xml.in.h:316
-msgid "Right Ctrl key changes group."
-msgstr "Right Ctrl key changes group."
-
-#: ../rules/base.xml.in.h:317
-msgid "Right Ctrl key switches group while pressed."
-msgstr "Right Ctrl key switches group while pressed."
-
-#: ../rules/base.xml.in.h:318
-#, fuzzy
-msgid "Right Ctrl key works as Right Alt."
-msgstr "Right Control key works as Right Alt."
-
-#: ../rules/base.xml.in.h:319
-msgid "Right Shift key changes group."
-msgstr "Right Shift key changes group."
-
-#: ../rules/base.xml.in.h:320
-msgid "Right Win-key changes group."
-msgstr "Right Win-key changes group."
-
-#: ../rules/base.xml.in.h:321
-msgid "Right Win-key is Compose."
-msgstr "Right Win-key is Compose."
-
-#: ../rules/base.xml.in.h:322
-msgid "Right Win-key switches group while pressed."
-msgstr "Right Win-key switches group while pressed."
-
-#: ../rules/base.xml.in.h:323
-msgid "Romania"
-msgstr "Romania"
-
-#: ../rules/base.xml.in.h:324
-msgid "Romanian keyboard with German letters"
-msgstr "Romanian keyboard with German letters"
-
-#: ../rules/base.xml.in.h:325
-msgid "Romanian keyboard with German letters, eliminate dead keys"
-msgstr "Romanian keyboard with German letters, eliminate dead keys"
-
-#: ../rules/base.xml.in.h:326
-msgid "Rou"
-msgstr "Rou"
-
-#: ../rules/base.xml.in.h:327
-msgid "Rus"
-msgstr "Rus"
-
-#: ../rules/base.xml.in.h:328
-msgid "Russia"
-msgstr "Russia"
-
-#: ../rules/base.xml.in.h:329
-msgid "Russian"
-msgstr "Russian"
-
-#: ../rules/base.xml.in.h:330
-#, fuzzy
-msgid "Russian phonetic"
-msgstr "Russian"
-
-#: ../rules/base.xml.in.h:331
-#, fuzzy
-msgid "Russian phonetic, eliminate dead keys"
-msgstr "French, eliminate dead keys"
-
-#: ../rules/base.xml.in.h:332
-msgid "SCG"
-msgstr ""
-
-#: ../rules/base.xml.in.h:333
-msgid "SK-1300"
-msgstr "SK-1300"
-
-#: ../rules/base.xml.in.h:334
-msgid "SK-2500"
-msgstr "SK-2500"
-
-#: ../rules/base.xml.in.h:335
-msgid "SK-6200"
-msgstr "SK-6200"
-
-#: ../rules/base.xml.in.h:336
-msgid "SK-7100"
-msgstr "SK-7100"
-
-#: ../rules/base.xml.in.h:337
-msgid "SVEN Ergonomic 2500"
-msgstr "SVEN Ergonomic 2500"
-
-#: ../rules/base.xml.in.h:338
-msgid "Samsung SDM 4500P"
-msgstr "Samsung SDM 4500P"
-
-#: ../rules/base.xml.in.h:339
-msgid "Samsung SDM 4510P"
-msgstr "Samsung SDM 4510P"
-
-#: ../rules/base.xml.in.h:340
-msgid "ScrollLock LED shows alternative group."
-msgstr "Scroll Lock LED shows alternative group."
-
-#: ../rules/base.xml.in.h:341
-msgid "Serbia and Montenegro"
-msgstr ""
-
-#: ../rules/base.xml.in.h:342
-msgid "Shift with numpad keys works as in MS Windows."
-msgstr "Shift with numpad keys works as in MS Windows."
-
-#: ../rules/base.xml.in.h:343
-msgid "Shift+CapsLock changes group."
-msgstr "Shift+Caps Lock changes group."
-
-#: ../rules/base.xml.in.h:344
-msgid "Slovakia"
-msgstr "Slovakia"
-
-#: ../rules/base.xml.in.h:345
-msgid "Slovenia"
-msgstr "Slovenia"
-
-#: ../rules/base.xml.in.h:346
-msgid "Spain"
-msgstr "Spain"
-
-#: ../rules/base.xml.in.h:347
-msgid "Special keys (Ctrl+Alt+&lt;key&gt;) handled in a server."
-msgstr "Special keys (Ctrl+Alt+&lt;key&gt;) handled in a server."
-
-#: ../rules/base.xml.in.h:348
-#, fuzzy
-msgid "SrL"
-msgstr "Syr"
-
-#: ../rules/base.xml.in.h:349
-#, fuzzy
-msgid "Sri Lanka"
-msgstr "Serbian"
-
-#: ../rules/base.xml.in.h:350
-msgid "Standard"
-msgstr "Standard"
-
-#. RSTU 2019-91
-#: ../rules/base.xml.in.h:352
-#, fuzzy
-msgid "Standard RSTU"
-msgstr "Standard"
-
-#. RSTU 2019-91
-#: ../rules/base.xml.in.h:354
-msgid "Standard RSTU on Russian layout"
-msgstr ""
-
-#: ../rules/base.xml.in.h:355
-msgid "Sun dead keys"
-msgstr "Sun dead keys"
-
-#: ../rules/base.xml.in.h:356
-msgid "Super Power Multimedia Keyboard"
-msgstr "Super Power Multimedia Keyboard"
-
-#: ../rules/base.xml.in.h:357
-msgid "Super is mapped to the Win-keys (default)."
-msgstr "Super is mapped to the Win-keys (default)."
-
-#: ../rules/base.xml.in.h:358
-msgid "Svk"
-msgstr "Svk"
-
-#: ../rules/base.xml.in.h:359
-msgid "Svn"
-msgstr "Svn"
-
-#: ../rules/base.xml.in.h:360
-#, fuzzy
-msgid "Swap Ctrl and CapsLock."
-msgstr "Swap Control and Caps Lock."
-
-#: ../rules/base.xml.in.h:361
-msgid "Swe"
-msgstr "Swe"
-
-#: ../rules/base.xml.in.h:362
-msgid "Sweden"
-msgstr "Sweden"
-
-#: ../rules/base.xml.in.h:363
-msgid "Switzerland"
-msgstr "Switzerland"
-
-#: ../rules/base.xml.in.h:364
-msgid "Symplon PaceBook (tablet PC)"
-msgstr "Symplon PaceBook (tablet PC)"
-
-#: ../rules/base.xml.in.h:365
-msgid "Syr"
-msgstr "Syr"
-
-#: ../rules/base.xml.in.h:366
-#, fuzzy
-msgid "Syria"
-msgstr "Syriac"
-
-#: ../rules/base.xml.in.h:367
-msgid "Syriac"
-msgstr "Syriac"
-
-#: ../rules/base.xml.in.h:368
-#, fuzzy
-msgid "Syriac phonetic"
-msgstr "Russian"
-
-#: ../rules/base.xml.in.h:369
-msgid "TIS-820.2538"
-msgstr "TIS-820.2538"
-
-#: ../rules/base.xml.in.h:370
-msgid "Tajikistan"
-msgstr "Tajikistan"
-
-#: ../rules/base.xml.in.h:371
-msgid "Tamil"
-msgstr "Tamil"
-
-#: ../rules/base.xml.in.h:372
-#, fuzzy
-msgid "Tamil TAB Typewriter"
-msgstr "\"Typewriter\""
-
-#: ../rules/base.xml.in.h:373
-msgid "Tamil TSCII Typewriter"
-msgstr ""
-
-#: ../rules/base.xml.in.h:374
-#, fuzzy
-msgid "Tamil Unicode"
-msgstr "Latin Unicode"
-
-#: ../rules/base.xml.in.h:375
-msgid "Telugu"
-msgstr "Telugu"
-
-#: ../rules/base.xml.in.h:376
-msgid "Tha"
-msgstr "Tha"
-
-#: ../rules/base.xml.in.h:377
-msgid "Thailand"
-msgstr "Thailand"
-
-#: ../rules/base.xml.in.h:378
-msgid "Third level choosers"
-msgstr "Third level choosers"
-
-#: ../rules/base.xml.in.h:379
-msgid "Tilde (~) variant"
-msgstr "Tilde (~) variant"
-
-#: ../rules/base.xml.in.h:380
-msgid "Tjk"
-msgstr "Tjk"
-
-#: ../rules/base.xml.in.h:381
-msgid "Toshiba Satellite S3000"
-msgstr "Toshiba Satellite S3000"
-
-#: ../rules/base.xml.in.h:382
-msgid "Trust Direct Access Keyboard"
-msgstr "Trust Direct Access Keyboard"
-
-#: ../rules/base.xml.in.h:383
-msgid "Trust Wireless Keyboard Classic"
-msgstr "Trust Wireless Keyboard Classic"
-
-#: ../rules/base.xml.in.h:384
-msgid "Tur"
-msgstr "Tur"
-
-#: ../rules/base.xml.in.h:385
-msgid "Turkish"
-msgstr "Turkish"
-
-#: ../rules/base.xml.in.h:386
-#, fuzzy
-msgid "Typewriter"
-msgstr "\"Typewriter\""
-
-#: ../rules/base.xml.in.h:387
-msgid "U.S. English"
-msgstr "U.S. English"
-
-#: ../rules/base.xml.in.h:388
-#, fuzzy
-msgid "US keyboard with Bosnian digraphs"
-msgstr "US keyboard with Romanian letters"
-
-#: ../rules/base.xml.in.h:389
-#, fuzzy
-msgid "US keyboard with Bosnian letters"
-msgstr "US keyboard with Romanian letters"
-
-#: ../rules/base.xml.in.h:390
-#, fuzzy
-msgid "US keyboard with Croatian digraphs"
-msgstr "US keyboard with Croatian letters"
-
-#: ../rules/base.xml.in.h:391
-msgid "US keyboard with Croatian letters"
-msgstr "US keyboard with Croatian letters"
-
-#: ../rules/base.xml.in.h:392
-msgid "US keyboard with Lithuanian letters"
-msgstr "US keyboard with Lithuanian letters"
-
-#: ../rules/base.xml.in.h:393
-msgid "US keyboard with Maltian letters"
-msgstr "US keyboard with Maltian letters"
-
-#: ../rules/base.xml.in.h:394
-#, fuzzy
-msgid "US keyboard with Slovenian digraphs"
-msgstr "US keyboard with Romanian letters"
-
-#: ../rules/base.xml.in.h:395
-#, fuzzy
-msgid "US keyboard with Slovenian letters"
-msgstr "US keyboard with Romanian letters"
-
-#: ../rules/base.xml.in.h:396
-msgid "USA"
-msgstr "USA"
-
-#: ../rules/base.xml.in.h:397
-msgid "Ukr"
-msgstr "Ukr"
-
-#: ../rules/base.xml.in.h:398
-msgid "Ukraine"
-msgstr "Ukraine"
-
-#: ../rules/base.xml.in.h:399
-msgid "UnicodeExpert"
-msgstr "UnicodeExpert"
-
-#: ../rules/base.xml.in.h:400
-msgid "United Kingdom"
-msgstr "United Kingdom"
-
-#: ../rules/base.xml.in.h:401
-msgid "Urdu"
-msgstr "Urdu"
-
-#: ../rules/base.xml.in.h:402
-msgid "Use Bosnian digraphs"
-msgstr ""
-
-#: ../rules/base.xml.in.h:403
-msgid "Use Croatian digraphs"
-msgstr ""
-
-#: ../rules/base.xml.in.h:404
-msgid "Use Slovenian digraphs"
-msgstr ""
-
-#: ../rules/base.xml.in.h:405
-msgid "Use guillemots for quotes"
-msgstr ""
-
-#: ../rules/base.xml.in.h:406
-msgid "Use keyboard LED to show alternative group."
-msgstr "Use keyboard LED to show alternative group."
-
-#: ../rules/base.xml.in.h:407
-msgid "Uzb"
-msgstr "Uzb"
-
-#: ../rules/base.xml.in.h:408
-msgid "Uzbekistan"
-msgstr "Uzbekistan"
-
-#: ../rules/base.xml.in.h:409
-msgid "Vietnam"
-msgstr "Vietnam"
-
-#: ../rules/base.xml.in.h:410
-msgid "Vnm"
-msgstr "Vnm"
-
-#: ../rules/base.xml.in.h:411
-msgid "Winbook Model XP5"
-msgstr "Winbook Model XP5"
-
-#: ../rules/base.xml.in.h:412
-msgid "Winkeys"
-msgstr "Winkeys"
-
-#: ../rules/base.xml.in.h:413
-msgid "With &lt;\\|&gt; key"
-msgstr "With &lt;\\|&gt; key"
-
-#: ../rules/base.xml.in.h:414
-msgid "With guillemots"
-msgstr "With guillemots"
-
-#: ../rules/base.xml.in.h:415
-msgid "Yahoo! Internet Keyboard"
-msgstr "Yahoo! Internet Keyboard"
-
-#: ../rules/base.xml.in.h:416
-msgid "Z and ZHE swapped"
-msgstr "Z and ZHE swapped"
-
-#: ../rules/base.xml.in.h:417
-msgid "azerty"
-msgstr "azerty"
-
-#: ../rules/base.xml.in.h:418
-msgid "azerty/digits"
-msgstr "azerty/digits"
-
-#: ../rules/base.xml.in.h:419
-msgid "digits"
-msgstr "digits"
-
-#: ../rules/base.xml.in.h:420
-msgid "lyx"
-msgstr "lyx"
-
-#: ../rules/base.xml.in.h:421
-msgid "qwerty"
-msgstr "qwerty"
-
-#: ../rules/base.xml.in.h:422
-msgid "qwerty, extended Backslash"
-msgstr "qwerty, extended Backslash"
-
-#: ../rules/base.xml.in.h:423
-msgid "qwerty/digits"
-msgstr "qwerty/digits"
-
-#: ../rules/base.xml.in.h:424
-msgid "qwertz"
-msgstr "qwertz"
-
-#: ../rules/base.xml.in.h:425
-msgid "si1452"
-msgstr "si1452"
-
-#~ msgid "\"Standard\""
-#~ msgstr "\"Standard\""
-
-#, fuzzy
-#~ msgid "Romanian keyboard with MS layout"
-#~ msgstr "Romanian keyboard with German letters"
-
-#, fuzzy
-#~ msgid "Romanian standard keyboard"
-#~ msgstr "Ukrainian standard RSTU"
-
-#, fuzzy
-#~ msgid "Serbia"
-#~ msgstr "Serbian"
-
-#~ msgid "Srp"
-#~ msgstr "Srp"
-
-#, fuzzy
-#~ msgid "Tamil INSCRIPT"
-#~ msgstr "Bengali"
-
-#~ msgid "US keyboard with Romanian letters"
-#~ msgstr "US keyboard with Romanian letters"
-
-#~ msgid "CloGaelach Laptop"
-#~ msgstr "CloGaelach Laptop"
-
-#~ msgid "Laptop"
-#~ msgstr "Laptop"
-
-#, fuzzy
-#~ msgid "Ogham IS434 laptop"
-#~ msgstr "IS434 laptop"
-
-#, fuzzy
-#~ msgid "Sinhala phonetic"
-#~ msgstr "Russian"
-
-#, fuzzy
-#~ msgid "Malayalam with Malayalam digits"
-#~ msgstr "With Malayalam digits"
-
-#, fuzzy
-#~ msgid "Devanagari INSCRIPT"
-#~ msgstr "Devanagari"
-
-#~ msgid "Dzo"
-#~ msgstr "Dzo"
-
-#~ msgid "Dzongkha"
-#~ msgstr "Dzongkha"
-
-#~ msgid "Finish and Swedish"
-#~ msgstr "Finish and Swedish"
-
-#, fuzzy
-#~ msgid "Gurmukhi INSCRIPT"
-#~ msgstr "Gurmukhi"
-
-#, fuzzy
-#~ msgid "Kannada INSCRIPT"
-#~ msgstr "Kannada"
-
-#~ msgid "Smi"
-#~ msgstr "Smi"
-
-#~ msgid "Ben"
-#~ msgstr "Ben"
-
-#~ msgid "Deva"
-#~ msgstr "Deva"
-
-#~ msgid "Guj"
-#~ msgstr "Guj"
-
-#~ msgid "INSCRIPT layout"
-#~ msgstr "INSCRIPT layout"
-
-#~ msgid "Iku"
-#~ msgstr "Iku"
-
-#~ msgid "Ogam"
-#~ msgstr "Ogam"
-
-#~ msgid "Ori"
-#~ msgstr "Ori"
-
-#~ msgid "Sin"
-#~ msgstr "Sin"
-
-#~ msgid "Sinhala"
-#~ msgstr "Sinhala"
-
-#~ msgid "Tam"
-#~ msgstr "Tam"
-
-#~ msgid "Tel"
-#~ msgstr "Tel"
-
-#~ msgid "Typewrite-style keymap; TAB encoding"
-#~ msgstr "Typewrite-style keymap; TAB encoding"
-
-#, fuzzy
-#~ msgid "Typewrite-style keymap; TSCII encoding"
-#~ msgstr "Typewrite-style keymap; TAB encoding"
-
-#~ msgid "Urd"
-#~ msgstr "Urd"
-
-#~ msgid "Typewrite-style keymap; Unicode encoding"
-#~ msgstr "Typewrite-style keymap; Unicode encoding"
+# British English translations for xkeyboard-config package.
+# Copyright (C) 2005 Free Software Foundation
+# This file is distributed under the same license as the xkeyboard-config package.
+# Christopher Orr <chris@protactin.co.uk>, 2005.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: xkeyboard-config\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2005-09-04 23:04+0100\n"
+"PO-Revision-Date: 2005-04-09 16:58+0100\n"
+"Last-Translator: Christopher Orr <chris@protactin.co.uk>\n"
+"Language-Team: English <en_gb@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=ASCII\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#: ../rules/base.xml.in.h:1
+msgid "(F)"
+msgstr "(F)"
+
+#: ../rules/base.xml.in.h:2
+msgid "101/qwerty/comma/Dead keys"
+msgstr "101/qwerty/comma/Dead keys"
+
+#: ../rules/base.xml.in.h:3
+msgid "101/qwerty/comma/Eliminate dead keys"
+msgstr "101/qwerty/comma/Eliminate dead keys"
+
+#: ../rules/base.xml.in.h:4
+msgid "101/qwerty/dot/Dead keys"
+msgstr "101/qwerty/dot/Dead keys"
+
+#: ../rules/base.xml.in.h:5
+msgid "101/qwerty/dot/Eliminate dead keys"
+msgstr "101/qwerty/dot/Eliminate dead keys"
+
+#: ../rules/base.xml.in.h:6
+msgid "101/qwertz/comma/Dead keys"
+msgstr "101/qwertz/comma/Dead keys"
+
+#: ../rules/base.xml.in.h:7
+msgid "101/qwertz/comma/Eliminate dead keys"
+msgstr "101/qwertz/comma/Eliminate dead keys"
+
+#: ../rules/base.xml.in.h:8
+msgid "101/qwertz/dot/Dead keys"
+msgstr "101/qwertz/dot/Dead keys"
+
+#: ../rules/base.xml.in.h:9
+msgid "101/qwertz/dot/Eliminate dead keys"
+msgstr "101/qwertz/dot/Eliminate dead keys"
+
+#: ../rules/base.xml.in.h:10
+msgid "102/qwerty/comma/Dead keys"
+msgstr "102/qwerty/comma/Dead keys"
+
+#: ../rules/base.xml.in.h:11
+msgid "102/qwerty/comma/Eliminate dead keys"
+msgstr "102/qwerty/comma/Eliminate dead keys"
+
+#: ../rules/base.xml.in.h:12
+msgid "102/qwerty/dot/Dead keys"
+msgstr "102/qwerty/dot/Dead keys"
+
+#: ../rules/base.xml.in.h:13
+msgid "102/qwerty/dot/Eliminate dead keys"
+msgstr "102/qwerty/dot/Eliminate dead keys"
+
+#: ../rules/base.xml.in.h:14
+msgid "102/qwertz/comma/Dead keys"
+msgstr "102/qwertz/comma/Dead keys"
+
+#: ../rules/base.xml.in.h:15
+msgid "102/qwertz/comma/Eliminate dead keys"
+msgstr "102/qwertz/comma/Eliminate dead keys"
+
+#: ../rules/base.xml.in.h:16
+msgid "102/qwertz/dot/Dead keys"
+msgstr "102/qwertz/dot/Dead keys"
+
+#: ../rules/base.xml.in.h:17
+msgid "102/qwertz/dot/Eliminate dead keys"
+msgstr "102/qwertz/dot/Eliminate dead keys"
+
+#: ../rules/base.xml.in.h:18
+msgid "A4Tech KB-21"
+msgstr "A4Tech KB-21"
+
+#: ../rules/base.xml.in.h:19
+msgid "A4Tech KBS-8"
+msgstr "A4Tech KBS-8"
+
+#: ../rules/base.xml.in.h:20
+msgid "ACPI Standard"
+msgstr "ACPI Standard"
+
+#: ../rules/base.xml.in.h:21
+msgid "Acer AirKey V"
+msgstr "Acer AirKey V"
+
+#: ../rules/base.xml.in.h:22
+msgid "Acer TravelMate 800"
+msgstr "Acer TravelMate 800"
+
+#: ../rules/base.xml.in.h:23
+msgid "Add the EuroSign to the 2 key."
+msgstr "Add the Euro sign to the 2 key."
+
+#: ../rules/base.xml.in.h:24
+msgid "Add the EuroSign to the 5 key."
+msgstr "Add the Euro sign to the 5 key."
+
+#: ../rules/base.xml.in.h:25
+msgid "Add the EuroSign to the E key."
+msgstr "Add the Euro sign to the E key."
+
+#: ../rules/base.xml.in.h:26
+msgid "Add the standard behavior to Menu key."
+msgstr "Add the standard behaviour to Menu key."
+
+#: ../rules/base.xml.in.h:27
+msgid "Adding the EuroSign to certain keys"
+msgstr "Adding the Euro sign to certain keys"
+
+#: ../rules/base.xml.in.h:28
+msgid "Advance Scorpius KI"
+msgstr "Advance Scorpius KI"
+
+#: ../rules/base.xml.in.h:29
+msgid "Alb"
+msgstr "Alb"
+
+#: ../rules/base.xml.in.h:30
+msgid "Albania"
+msgstr "Albania"
+
+#: ../rules/base.xml.in.h:31
+msgid "Alt and Meta are on the Alt keys (default)."
+msgstr "Alt and Meta are on the Alt keys (default)."
+
+#: ../rules/base.xml.in.h:32
+msgid "Alt is mapped to the right Win-key and Super to Menu."
+msgstr "Alt is mapped to the right Win-key and Super to Menu."
+
+#: ../rules/base.xml.in.h:33
+#, fuzzy
+msgid "Alt+Ctrl changes group."
+msgstr "Alt+Control changes group."
+
+#: ../rules/base.xml.in.h:34
+msgid "Alt+Shift changes group."
+msgstr "Alt+Shift changes group."
+
+#: ../rules/base.xml.in.h:35
+msgid "Alt-Q"
+msgstr "Alt-Q"
+
+#: ../rules/base.xml.in.h:36
+msgid "Alt/Win key behavior"
+msgstr "Alt/Win key behaviour"
+
+#: ../rules/base.xml.in.h:37
+msgid "Alternative"
+msgstr "Alternative"
+
+#: ../rules/base.xml.in.h:38
+msgid "Alternative international (former us_intl)"
+msgstr "Alternative international (former us_intl)"
+
+#: ../rules/base.xml.in.h:39
+msgid "Alternative, Sun dead keys"
+msgstr "Alternative, Sun dead keys"
+
+#: ../rules/base.xml.in.h:40
+msgid "Alternative, eliminate dead keys"
+msgstr "Alternative, eliminate dead keys"
+
+#: ../rules/base.xml.in.h:41
+msgid "Apostrophe (') variant"
+msgstr "Apostrophe (') variant"
+
+#: ../rules/base.xml.in.h:42
+msgid "Ara"
+msgstr "Ara"
+
+#: ../rules/base.xml.in.h:43
+msgid "Arabic"
+msgstr "Arabic"
+
+#: ../rules/base.xml.in.h:44
+msgid "Arm"
+msgstr "Arm"
+
+#: ../rules/base.xml.in.h:45
+msgid "Armenia"
+msgstr "Armenia"
+
+#: ../rules/base.xml.in.h:46
+msgid "Aze"
+msgstr "Aze"
+
+#: ../rules/base.xml.in.h:47
+msgid "Azerbaijan"
+msgstr "Azerbaijan"
+
+#: ../rules/base.xml.in.h:48
+msgid "Azona RF2300 wireless Internet Keyboard"
+msgstr "Azona RF2300 wireless Internet Keyboard"
+
+#: ../rules/base.xml.in.h:49
+msgid "BTC 5090"
+msgstr "BTC 5090"
+
+#: ../rules/base.xml.in.h:50
+msgid "BTC 5113RF Multimedia"
+msgstr "BTC 5113RF Multimedia"
+
+#: ../rules/base.xml.in.h:51
+msgid "BTC 5126T"
+msgstr "BTC 5126T"
+
+#: ../rules/base.xml.in.h:52
+msgid "BTC 9000"
+msgstr "BTC 9000"
+
+#: ../rules/base.xml.in.h:53
+msgid "BTC 9000A"
+msgstr "BTC 9000A"
+
+#: ../rules/base.xml.in.h:54
+msgid "BTC 9001AH"
+msgstr "BTC 9001AH"
+
+#: ../rules/base.xml.in.h:55
+#, fuzzy
+msgid "Ban"
+msgstr "Kan"
+
+#: ../rules/base.xml.in.h:56
+msgid "Bangladesh"
+msgstr ""
+
+#: ../rules/base.xml.in.h:57
+msgid "Bel"
+msgstr "Bel"
+
+#: ../rules/base.xml.in.h:58
+msgid "Belarus"
+msgstr "Belarus"
+
+#: ../rules/base.xml.in.h:59
+msgid "Belgium"
+msgstr "Belgium"
+
+#: ../rules/base.xml.in.h:60
+#, fuzzy
+msgid "Bengali"
+msgstr "Probhat"
+
+#: ../rules/base.xml.in.h:61
+#, fuzzy
+msgid "Bengali Probhat"
+msgstr "Probhat"
+
+#: ../rules/base.xml.in.h:62
+msgid "Bgr"
+msgstr "Bgr"
+
+#: ../rules/base.xml.in.h:63
+#, fuzzy
+msgid "Bhu"
+msgstr "Bih"
+
+#: ../rules/base.xml.in.h:64
+#, fuzzy
+msgid "Bhutan"
+msgstr "Kan"
+
+#: ../rules/base.xml.in.h:65
+msgid "Bih"
+msgstr "Bih"
+
+#: ../rules/base.xml.in.h:66
+msgid "Blr"
+msgstr "Blr"
+
+#: ../rules/base.xml.in.h:67
+msgid "Bosnia and Herzegovina"
+msgstr "Bosnia and Herzegovina"
+
+#: ../rules/base.xml.in.h:68
+msgid "Both Alt keys together change group."
+msgstr "Both Alt keys together change group."
+
+#: ../rules/base.xml.in.h:69
+msgid "Both Ctrl keys together change group."
+msgstr "Both Ctrl keys together change group."
+
+#: ../rules/base.xml.in.h:70
+msgid "Both Shift keys together change group."
+msgstr "Both Shift keys together change group."
+
+#: ../rules/base.xml.in.h:71
+msgid "Both Win-keys switch group while pressed."
+msgstr "Both Win-keys switch group while pressed."
+
+#: ../rules/base.xml.in.h:72
+msgid "Bra"
+msgstr "Bra"
+
+#: ../rules/base.xml.in.h:73
+msgid "Brazil"
+msgstr "Brazil"
+
+#: ../rules/base.xml.in.h:74
+msgid "Brazilian ABNT2"
+msgstr "Brazilian ABNT2"
+
+#: ../rules/base.xml.in.h:75
+msgid "Brother Internet Keyboard"
+msgstr "Brother Internet Keyboard"
+
+#: ../rules/base.xml.in.h:76
+msgid "Bulgaria"
+msgstr "Bulgaria"
+
+#: ../rules/base.xml.in.h:77
+msgid "Can"
+msgstr "Can"
+
+#: ../rules/base.xml.in.h:78
+msgid "Canada"
+msgstr "Canada"
+
+#: ../rules/base.xml.in.h:79
+msgid "CapsLock LED shows alternative group."
+msgstr "Caps Lock LED shows alternative group."
+
+#: ../rules/base.xml.in.h:80
+msgid "CapsLock acts as Shift with locking. Shift cancels CapsLock."
+msgstr "Caps Lock acts as Shift with locking. Shift cancels Caps Lock."
+
+#: ../rules/base.xml.in.h:81
+msgid "CapsLock acts as Shift with locking. Shift doesn't cancel CapsLock."
+msgstr "Caps Lock acts as Shift with locking. Shift doesn't cancel Caps Lock."
+
+#: ../rules/base.xml.in.h:82
+msgid "CapsLock just locks the Shift modifier."
+msgstr "Caps Lock just locks the Shift modifier."
+
+#: ../rules/base.xml.in.h:83
+msgid "CapsLock key behavior"
+msgstr "Caps Lock key behaviour"
+
+#: ../rules/base.xml.in.h:84
+msgid "CapsLock key changes group."
+msgstr "Caps Lock key changes group."
+
+#: ../rules/base.xml.in.h:85
+msgid "CapsLock toggles Shift so all keys are affected."
+msgstr "Caps Lock toggles Shift so all keys are affected."
+
+#: ../rules/base.xml.in.h:86
+msgid "CapsLock toggles normal capitalization of alphabetic characters."
+msgstr "Caps Lock toggles normal capitalisation of alphabetic characters."
+
+#: ../rules/base.xml.in.h:87
+msgid "CapsLock uses internal capitalization. Shift cancels CapsLock."
+msgstr "Caps Lock uses internal capitalisation. Shift cancels Caps Lock."
+
+#: ../rules/base.xml.in.h:88
+msgid "CapsLock uses internal capitalization. Shift doesn't cancel CapsLock."
+msgstr ""
+"Caps Lock uses internal capitalisation. Shift doesn't cancel Caps Lock."
+
+#: ../rules/base.xml.in.h:89
+msgid "Che"
+msgstr "Che"
+
+#: ../rules/base.xml.in.h:90
+msgid "Cherry Blue Line CyBo@rd"
+msgstr "Cherry Blue Line CyBo@rd"
+
+#: ../rules/base.xml.in.h:91
+msgid "Cherry Blue Line CyBo@rd (alternate option)"
+msgstr "Cherry Blue Line CyBo@rd (alternate option)"
+
+#: ../rules/base.xml.in.h:92
+msgid "Cherry CyMotion Master Linux"
+msgstr ""
+
+#: ../rules/base.xml.in.h:93
+msgid "Chicony Internet Keyboard"
+msgstr "Chicony Internet Keyboard"
+
+#: ../rules/base.xml.in.h:94
+msgid "Chicony KB-9885"
+msgstr "Chicony KB-9885"
+
+#: ../rules/base.xml.in.h:95
+msgid "CloGaelach"
+msgstr "CloGaelach"
+
+#: ../rules/base.xml.in.h:96
+msgid "Compaq Easy Access Keyboard"
+msgstr "Compaq Easy Access Keyboard"
+
+#: ../rules/base.xml.in.h:97
+msgid "Compaq Internet Keyboard (13 keys)"
+msgstr "Compaq Internet Keyboard (13 keys)"
+
+#: ../rules/base.xml.in.h:98
+msgid "Compaq Internet Keyboard (18 keys)"
+msgstr "Compaq Internet Keyboard (18 keys)"
+
+#: ../rules/base.xml.in.h:99
+msgid "Compaq Internet Keyboard (7 keys)"
+msgstr "Compaq Internet Keyboard (7 keys)"
+
+#: ../rules/base.xml.in.h:100
+msgid "Compaq iPaq Keyboard"
+msgstr "Compaq iPaq Keyboard"
+
+#: ../rules/base.xml.in.h:101
+#, fuzzy
+msgid "Compose key position"
+msgstr "Control Key Position"
+
+#: ../rules/base.xml.in.h:102
+msgid "Croatia"
+msgstr "Croatia"
+
+#: ../rules/base.xml.in.h:103
+#, fuzzy
+msgid "Ctrl key at bottom left"
+msgstr "Control key at bottom left"
+
+#: ../rules/base.xml.in.h:104
+#, fuzzy
+msgid "Ctrl key at left of 'A'"
+msgstr "Control key at left of 'A'"
+
+#: ../rules/base.xml.in.h:105
+#, fuzzy
+msgid "Ctrl key position"
+msgstr "Control Key Position"
+
+#: ../rules/base.xml.in.h:106
+#, fuzzy
+msgid "Ctrl+Shift changes group."
+msgstr "Control+Shift changes group."
+
+#: ../rules/base.xml.in.h:107
+msgid "Cyrillic"
+msgstr "Cyrillic"
+
+#: ../rules/base.xml.in.h:108
+msgid "Cze"
+msgstr "Cze"
+
+#: ../rules/base.xml.in.h:109
+msgid "Czechia"
+msgstr "Czechia"
+
+#: ../rules/base.xml.in.h:110
+msgid "DTK2000"
+msgstr "DTK2000"
+
+#: ../rules/base.xml.in.h:111
+msgid "Dead acute"
+msgstr "Dead acute"
+
+#: ../rules/base.xml.in.h:112
+msgid "Dead grave acute"
+msgstr "Dead grave acute"
+
+#: ../rules/base.xml.in.h:113
+msgid "Dell"
+msgstr "Dell"
+
+#: ../rules/base.xml.in.h:114
+msgid "Dell 101-key PC"
+msgstr "Dell 101-key PC"
+
+#: ../rules/base.xml.in.h:115
+msgid "Denmark"
+msgstr "Denmark"
+
+#: ../rules/base.xml.in.h:116
+msgid "Deu"
+msgstr "Deu"
+
+#: ../rules/base.xml.in.h:117
+msgid "Dexxa Wireless Desktop Keyboard"
+msgstr "Dexxa Wireless Desktop Keyboard"
+
+#: ../rules/base.xml.in.h:118
+msgid "Diamond 9801 / 9802 series"
+msgstr "Diamond 9801 / 9802 series"
+
+#: ../rules/base.xml.in.h:119
+msgid "Dnk"
+msgstr "Dnk"
+
+#: ../rules/base.xml.in.h:120
+msgid "Dvorak"
+msgstr "Dvorak"
+
+#: ../rules/base.xml.in.h:121
+msgid "Dvorak, Polish quotes on key \"1/!\""
+msgstr "Dvorak, Polish quotes on key \"1/!\""
+
+#: ../rules/base.xml.in.h:122
+msgid "Dvorak, Polish quotes on quotemark key"
+msgstr "Dvorak, Polish quotes on quotemark key"
+
+#: ../rules/base.xml.in.h:123
+msgid "Eliminate dead keys"
+msgstr "Eliminate dead keys"
+
+#: ../rules/base.xml.in.h:124
+msgid "Ennyah DKB-1008"
+msgstr "Ennyah DKB-1008"
+
+#: ../rules/base.xml.in.h:125
+msgid "Esp"
+msgstr "Esp"
+
+#: ../rules/base.xml.in.h:126
+msgid "Est"
+msgstr "Est"
+
+#: ../rules/base.xml.in.h:127
+msgid "Estonia"
+msgstr "Estonia"
+
+#: ../rules/base.xml.in.h:128
+msgid "Everex STEPnote"
+msgstr "Everex STEPnote"
+
+#: ../rules/base.xml.in.h:129
+msgid "Extended"
+msgstr "Extended"
+
+#: ../rules/base.xml.in.h:130
+msgid "Extended Backslash"
+msgstr "Extended Backslash"
+
+#: ../rules/base.xml.in.h:131
+msgid "F-letter (F) variant"
+msgstr "F-letter (F) variant"
+
+#: ../rules/base.xml.in.h:132
+msgid "Fao"
+msgstr "Fao"
+
+#: ../rules/base.xml.in.h:133
+msgid "Faroe Islands"
+msgstr "Faroe Islands"
+
+#: ../rules/base.xml.in.h:134
+msgid "Fin"
+msgstr "Fin"
+
+#: ../rules/base.xml.in.h:135
+msgid "Finland"
+msgstr "Finland"
+
+#: ../rules/base.xml.in.h:136
+msgid "Fra"
+msgstr "Fra"
+
+#: ../rules/base.xml.in.h:137
+msgid "France"
+msgstr "France"
+
+#: ../rules/base.xml.in.h:138
+msgid "French"
+msgstr "French"
+
+#: ../rules/base.xml.in.h:139
+msgid "French (legacy)"
+msgstr "French (legacy)"
+
+#: ../rules/base.xml.in.h:140
+msgid "French Dvorak"
+msgstr "French Dvorak"
+
+#: ../rules/base.xml.in.h:141
+msgid "French, Sun dead keys"
+msgstr "French, Sun dead keys"
+
+#: ../rules/base.xml.in.h:142
+msgid "French, eliminate dead keys"
+msgstr "French, eliminate dead keys"
+
+#: ../rules/base.xml.in.h:143
+msgid "GBr"
+msgstr "GBr"
+
+#: ../rules/base.xml.in.h:144
+msgid "Generic 101-key PC"
+msgstr "Generic 101-key PC"
+
+#: ../rules/base.xml.in.h:145
+msgid "Generic 102-key (Intl) PC"
+msgstr "Generic 102-key (Intl) PC"
+
+#: ../rules/base.xml.in.h:146
+msgid "Generic 104-key PC"
+msgstr "Generic 104-key PC"
+
+#: ../rules/base.xml.in.h:147
+msgid "Generic 105-key (Intl) PC"
+msgstr "Generic 105-key (Intl) PC"
+
+#: ../rules/base.xml.in.h:148
+msgid "Genius Comfy KB-16M / Genius MM Keyboard KWD-910"
+msgstr "Genius Comfy KB-16M / Genius MM Keyboard KWD-910"
+
+#: ../rules/base.xml.in.h:149
+msgid "Genius Comfy KB-21e-Scroll"
+msgstr "Genius Comfy KB-21e-Scroll"
+
+#: ../rules/base.xml.in.h:150
+msgid "Geo"
+msgstr "Geo"
+
+#: ../rules/base.xml.in.h:151
+msgid "Georgia"
+msgstr "Georgia"
+
+#: ../rules/base.xml.in.h:152
+msgid "German, Sun dead keys"
+msgstr "German, Sun dead keys"
+
+#: ../rules/base.xml.in.h:153
+msgid "German, eliminate dead keys"
+msgstr "German, eliminate dead keys"
+
+#: ../rules/base.xml.in.h:154
+msgid "Germany"
+msgstr "Germany"
+
+#: ../rules/base.xml.in.h:155
+msgid "Gre"
+msgstr "Gre"
+
+#: ../rules/base.xml.in.h:156
+msgid "Greece"
+msgstr "Greece"
+
+#: ../rules/base.xml.in.h:157
+msgid "Group Shift/Lock behavior"
+msgstr "Group Shift/Lock behaviour"
+
+#: ../rules/base.xml.in.h:158
+#, fuzzy
+msgid "Gujarati"
+msgstr "Gujarati"
+
+#: ../rules/base.xml.in.h:159
+#, fuzzy
+msgid "Gurmukhi"
+msgstr "Guru"
+
+#: ../rules/base.xml.in.h:160
+msgid "Gyration"
+msgstr "Gyration"
+
+#: ../rules/base.xml.in.h:161
+msgid "Hewlett-Packard Internet Keyboard"
+msgstr "Hewlett-Packard Internet Keyboard"
+
+#: ../rules/base.xml.in.h:162
+msgid "Hewlett-Packard Omnibook 500 FA"
+msgstr "Hewlett-Packard Omnibook 500 FA"
+
+#: ../rules/base.xml.in.h:163
+msgid "Hewlett-Packard Omnibook 5xx"
+msgstr "Hewlett-Packard Omnibook 5xx"
+
+#: ../rules/base.xml.in.h:164
+msgid "Hewlett-Packard Omnibook 6000/6100"
+msgstr "Hewlett-Packard Omnibook 6000/6100"
+
+#: ../rules/base.xml.in.h:165
+msgid "Hewlett-Packard Omnibook XE3 GC"
+msgstr "Hewlett-Packard Omnibook XE3 GC"
+
+#: ../rules/base.xml.in.h:166
+msgid "Hewlett-Packard Omnibook XE3 GF"
+msgstr "Hewlett-Packard Omnibook XE3 GF"
+
+#: ../rules/base.xml.in.h:167
+msgid "Hewlett-Packard Omnibook XT1000"
+msgstr "Hewlett-Packard Omnibook XT1000"
+
+#: ../rules/base.xml.in.h:168
+msgid "Hewlett-Packard Pavilion ZT11xx"
+msgstr "Hewlett-Packard Pavilion ZT11xx"
+
+#: ../rules/base.xml.in.h:169
+msgid "Hewlett-Packard SK-2501 Multimedia Keyboard"
+msgstr "Hewlett-Packard SK-2501 Multimedia Keyboard"
+
+#: ../rules/base.xml.in.h:170
+msgid "Hewlett-Packard SK-2505 Internet Keyboard"
+msgstr "Hewlett-Packard SK-2505 Internet Keyboard"
+
+#: ../rules/base.xml.in.h:171
+msgid "Honeywell Euroboard"
+msgstr "Honeywell Euroboard"
+
+#: ../rules/base.xml.in.h:172
+msgid "Hrv"
+msgstr "Hrv"
+
+#: ../rules/base.xml.in.h:173
+msgid "Hun"
+msgstr "Hun"
+
+#: ../rules/base.xml.in.h:174
+msgid "Hungary"
+msgstr "Hungary"
+
+#: ../rules/base.xml.in.h:175
+msgid "Hyper is mapped to the Win-keys."
+msgstr "Hyper is mapped to the Win-keys."
+
+#: ../rules/base.xml.in.h:176
+msgid "IBM Rapid Access"
+msgstr "IBM Rapid Access"
+
+#: ../rules/base.xml.in.h:177
+msgid "IBM Rapid Access II"
+msgstr "IBM Rapid Access II"
+
+#: ../rules/base.xml.in.h:178
+msgid "IBM Rapid Access II (alternate option)"
+msgstr "IBM Rapid Access II (alternate option)"
+
+#: ../rules/base.xml.in.h:179
+msgid "IBM ThinkPad 560Z/600/600E/A22E"
+msgstr "IBM ThinkPad 560Z/600/600E/A22E"
+
+#: ../rules/base.xml.in.h:180
+msgid "ISO Alternate"
+msgstr "ISO Alternate"
+
+#: ../rules/base.xml.in.h:181
+msgid "Iceland"
+msgstr "Iceland"
+
+#: ../rules/base.xml.in.h:182
+#, fuzzy
+msgid "Ind"
+msgstr "Irn"
+
+#: ../rules/base.xml.in.h:183
+msgid "India"
+msgstr ""
+
+#: ../rules/base.xml.in.h:184
+msgid "International (with dead keys)"
+msgstr "International (with dead keys)"
+
+#: ../rules/base.xml.in.h:185
+msgid "Inuktitut"
+msgstr "Inuktitut"
+
+#: ../rules/base.xml.in.h:186
+msgid "Iran"
+msgstr "Iran"
+
+#: ../rules/base.xml.in.h:187
+msgid "Ireland"
+msgstr "Ireland"
+
+#: ../rules/base.xml.in.h:188
+msgid "Irl"
+msgstr "Irl"
+
+#: ../rules/base.xml.in.h:189
+msgid "Irn"
+msgstr "Irn"
+
+#: ../rules/base.xml.in.h:190
+msgid "Isl"
+msgstr "Isl"
+
+#: ../rules/base.xml.in.h:191
+msgid "Isr"
+msgstr "Isr"
+
+#: ../rules/base.xml.in.h:192
+msgid "Israel"
+msgstr "Israel"
+
+#: ../rules/base.xml.in.h:193
+msgid "Ita"
+msgstr "Ita"
+
+#: ../rules/base.xml.in.h:194
+msgid "Italy"
+msgstr "Italy"
+
+#: ../rules/base.xml.in.h:195
+msgid "Japan"
+msgstr "Japan"
+
+#: ../rules/base.xml.in.h:196
+msgid "Japanese 106-key"
+msgstr "Japanese 106-key"
+
+#: ../rules/base.xml.in.h:197
+msgid "Jpn"
+msgstr "Jpn"
+
+#: ../rules/base.xml.in.h:198
+#, fuzzy
+msgid "Kannada"
+msgstr "Canada"
+
+#: ../rules/base.xml.in.h:199
+msgid "Keypad"
+msgstr ""
+
+#: ../rules/base.xml.in.h:200
+msgid "Keytronic FlexPro"
+msgstr "Keytronic FlexPro"
+
+#: ../rules/base.xml.in.h:201
+msgid "Kyr"
+msgstr "Kyr"
+
+#: ../rules/base.xml.in.h:202
+msgid "Kyrgyzstan"
+msgstr "Kyrgyzstan"
+
+#: ../rules/base.xml.in.h:203
+msgid "LAm"
+msgstr "LAm"
+
+#: ../rules/base.xml.in.h:204
+msgid "Lao"
+msgstr "Lao"
+
+#: ../rules/base.xml.in.h:205
+msgid "Laos"
+msgstr "Laos"
+
+#: ../rules/base.xml.in.h:206
+msgid "Laptop/notebook Compaq (eg. Armada) Laptop Keyboard"
+msgstr "Laptop/notebook Compaq (eg. Armada) Laptop Keyboard"
+
+#: ../rules/base.xml.in.h:207
+msgid "Laptop/notebook Compaq (eg. Presario) Internet Keyboard"
+msgstr "Laptop/notebook Compaq (eg. Presario) Internet Keyboard"
+
+#: ../rules/base.xml.in.h:208
+msgid "Laptop/notebook Dell Inspiron 8xxx"
+msgstr "Laptop/notebook Dell Inspiron 8xxx"
+
+#: ../rules/base.xml.in.h:209
+msgid "Latin"
+msgstr "Latin"
+
+#: ../rules/base.xml.in.h:210
+msgid "Latin American"
+msgstr "Latin American"
+
+#: ../rules/base.xml.in.h:211
+msgid "Latin Unicode"
+msgstr "Latin Unicode"
+
+#: ../rules/base.xml.in.h:212
+msgid "Latin Unicode qwerty"
+msgstr "Latin Unicode qwerty"
+
+#: ../rules/base.xml.in.h:213
+msgid "Latin qwerty"
+msgstr "Latin qwerty"
+
+#: ../rules/base.xml.in.h:214
+msgid "Latin with guillemots"
+msgstr "Latin with guillemots"
+
+#: ../rules/base.xml.in.h:215
+msgid "Latvia"
+msgstr "Latvia"
+
+#: ../rules/base.xml.in.h:216
+msgid "Left Alt key changes group."
+msgstr "Left Alt key changes group."
+
+#: ../rules/base.xml.in.h:217
+msgid "Left Alt key switches group while pressed."
+msgstr "Left Alt key switches group while pressed."
+
+#: ../rules/base.xml.in.h:218
+msgid "Left Ctrl key changes group."
+msgstr "Left Ctrl key changes group."
+
+#: ../rules/base.xml.in.h:219
+msgid "Left Shift key changes group."
+msgstr "Left Shift key changes group."
+
+#: ../rules/base.xml.in.h:220
+msgid "Left Win-key changes group."
+msgstr "Left Win-key changes group."
+
+#: ../rules/base.xml.in.h:221
+msgid "Left Win-key switches group while pressed."
+msgstr "Left Win-key switches group while pressed."
+
+#: ../rules/base.xml.in.h:222
+msgid "Lithuania"
+msgstr "Lithuania"
+
+#: ../rules/base.xml.in.h:223
+msgid "Logitech Access Keyboard"
+msgstr "Logitech Access Keyboard"
+
+#: ../rules/base.xml.in.h:224
+msgid "Logitech Cordless Desktop"
+msgstr "Logitech Cordless Desktop"
+
+#: ../rules/base.xml.in.h:225
+msgid "Logitech Cordless Desktop Navigator"
+msgstr "Logitech Cordless Desktop Navigator"
+
+#: ../rules/base.xml.in.h:226
+msgid "Logitech Cordless Desktop Optical"
+msgstr "Logitech Cordless Desktop Optical"
+
+#: ../rules/base.xml.in.h:227
+msgid "Logitech Cordless Desktop Pro"
+msgstr "Logitech Cordless Desktop Pro"
+
+#: ../rules/base.xml.in.h:228
+msgid "Logitech Cordless Desktop Pro (alternate option)"
+msgstr "Logitech Cordless Desktop Pro (alternate option)"
+
+#: ../rules/base.xml.in.h:229
+msgid "Logitech Cordless Desktop Pro (alternate option2)"
+msgstr "Logitech Cordless Desktop Pro (alternate option2)"
+
+#: ../rules/base.xml.in.h:230
+msgid "Logitech Cordless Desktop iTouch"
+msgstr "Logitech Cordless Desktop iTouch"
+
+#: ../rules/base.xml.in.h:231
+msgid "Logitech Cordless Freedom/Desktop Navigator"
+msgstr "Logitech Cordless Freedom/Desktop Navigator"
+
+#: ../rules/base.xml.in.h:232
+msgid "Logitech Deluxe Access Keyboard"
+msgstr "Logitech Deluxe Access Keyboard"
+
+#: ../rules/base.xml.in.h:233
+msgid "Logitech Internet Keyboard"
+msgstr "Logitech Internet Keyboard"
+
+#: ../rules/base.xml.in.h:234
+msgid "Logitech Internet Navigator Keyboard"
+msgstr "Logitech Internet Navigator Keyboard"
+
+#: ../rules/base.xml.in.h:235
+#, fuzzy
+msgid "Logitech Ultra-X Keyboard"
+msgstr "Logitech Internet Keyboard"
+
+#: ../rules/base.xml.in.h:236
+msgid "Logitech iTouch"
+msgstr "Logitech iTouch"
+
+#: ../rules/base.xml.in.h:237
+msgid "Logitech iTouch Cordless Keyboard (model Y-RB6)"
+msgstr "Logitech iTouch Cordless Keyboard (model Y-RB6)"
+
+#: ../rules/base.xml.in.h:238
+msgid "Logitech iTouch keyboard Internet Navigator"
+msgstr "Logitech iTouch keyboard Internet Navigator"
+
+#: ../rules/base.xml.in.h:239
+msgid "Ltu"
+msgstr "Ltu"
+
+#: ../rules/base.xml.in.h:240
+msgid "Lva"
+msgstr "Lva"
+
+#: ../rules/base.xml.in.h:241
+#, fuzzy
+msgid "Macedonia (FYROM)"
+msgstr "Macedonian"
+
+#: ../rules/base.xml.in.h:242
+msgid "Macintosh"
+msgstr "Macintosh"
+
+#: ../rules/base.xml.in.h:243
+msgid "Macintosh Old"
+msgstr "Macintosh Old"
+
+#: ../rules/base.xml.in.h:244
+#, fuzzy
+msgid "Make CapsLock an additional Ctrl."
+msgstr "Make Caps Lock an additional Control."
+
+#: ../rules/base.xml.in.h:245
+msgid "Mal"
+msgstr "Mal"
+
+#: ../rules/base.xml.in.h:246
+#, fuzzy
+msgid "Malayalam"
+msgstr "Malayalam"
+
+#: ../rules/base.xml.in.h:247
+msgid "Maldives"
+msgstr ""
+
+#: ../rules/base.xml.in.h:248
+msgid "Malta"
+msgstr "Malta"
+
+#: ../rules/base.xml.in.h:249
+msgid "Mao"
+msgstr "Mao"
+
+#: ../rules/base.xml.in.h:250
+msgid "Maori"
+msgstr "Maori"
+
+#: ../rules/base.xml.in.h:251
+msgid "Memorex MX1998"
+msgstr "Memorex MX1998"
+
+#: ../rules/base.xml.in.h:252
+msgid "Memorex MX2500 EZ-Access Keyboard"
+msgstr "Memorex MX2500 EZ-Access Keyboard"
+
+#: ../rules/base.xml.in.h:253
+msgid "Memorex MX2750"
+msgstr "Memorex MX2750"
+
+#: ../rules/base.xml.in.h:254
+msgid "Menu is Compose."
+msgstr "Menu is Compose."
+
+#: ../rules/base.xml.in.h:255
+msgid "Menu key changes group."
+msgstr "Menu key changes group."
+
+#: ../rules/base.xml.in.h:256
+msgid "Meta is mapped to the Win-keys."
+msgstr "Meta is mapped to the Win-keys."
+
+#: ../rules/base.xml.in.h:257
+msgid "Meta is mapped to the left Win-key."
+msgstr "Meta is mapped to the left Win-key."
+
+#: ../rules/base.xml.in.h:258
+msgid "Microsoft Internet Keyboard"
+msgstr "Microsoft Internet Keyboard"
+
+#: ../rules/base.xml.in.h:259
+msgid "Microsoft Internet Keyboard Pro, Swedish"
+msgstr "Microsoft Internet Keyboard Pro, Swedish"
+
+#: ../rules/base.xml.in.h:260
+msgid "Microsoft Natural"
+msgstr "Microsoft Natural"
+
+#: ../rules/base.xml.in.h:261
+msgid "Microsoft Natural Keyboard Pro / Microsoft Internet Keyboard Pro"
+msgstr "Microsoft Natural Keyboard Pro / Microsoft Internet Keyboard Pro"
+
+#: ../rules/base.xml.in.h:262
+msgid "Microsoft Natural Keyboard Pro OEM"
+msgstr "Microsoft Natural Keyboard Pro OEM"
+
+#: ../rules/base.xml.in.h:263
+msgid "Microsoft Natural Keyboard Pro USB / Microsoft Internet Keyboard Pro"
+msgstr "Microsoft Natural Keyboard Pro USB / Microsoft Internet Keyboard Pro"
+
+#: ../rules/base.xml.in.h:264
+msgid "Microsoft Office Keyboard"
+msgstr "Microsoft Office Keyboard"
+
+#: ../rules/base.xml.in.h:265
+msgid "Microsoft Wireless Multimedia Keyboard 1.0A"
+msgstr "Microsoft Wireless Multimedia Keyboard 1.0A"
+
+#: ../rules/base.xml.in.h:266
+msgid "Miscellaneous compatibility options"
+msgstr "Miscellaneous compatibility options"
+
+#: ../rules/base.xml.in.h:267
+msgid "Mkd"
+msgstr "Mkd"
+
+#: ../rules/base.xml.in.h:268
+msgid "Mlt"
+msgstr "Mlt"
+
+#: ../rules/base.xml.in.h:269
+msgid "Mmr"
+msgstr "Mmr"
+
+#: ../rules/base.xml.in.h:270
+msgid "Mng"
+msgstr "Mng"
+
+#: ../rules/base.xml.in.h:271
+msgid "Mongolia"
+msgstr "Mongolia"
+
+#: ../rules/base.xml.in.h:272
+msgid "Multilingual"
+msgstr "Multilingual"
+
+#: ../rules/base.xml.in.h:273
+msgid "Multilingual, second part"
+msgstr "Multilingual, second part"
+
+#: ../rules/base.xml.in.h:274
+msgid "Myanmar"
+msgstr "Myanmar"
+
+#: ../rules/base.xml.in.h:275
+msgid "Netherlands"
+msgstr "Netherlands"
+
+#: ../rules/base.xml.in.h:276
+msgid "Nld"
+msgstr "Nld"
+
+#: ../rules/base.xml.in.h:277
+msgid "Nor"
+msgstr "Nor"
+
+#: ../rules/base.xml.in.h:278
+msgid "Northern Saami"
+msgstr "Northern Saami"
+
+#: ../rules/base.xml.in.h:279
+#, fuzzy
+msgid "Northern Saami, eliminate dead keys"
+msgstr "Alternative, eliminate dead keys"
+
+#: ../rules/base.xml.in.h:280
+msgid "Northgate OmniKey 101"
+msgstr "Northgate OmniKey 101"
+
+#: ../rules/base.xml.in.h:281
+msgid "Norway"
+msgstr "Norway"
+
+#: ../rules/base.xml.in.h:282
+msgid "NumLock LED shows alternative group."
+msgstr "Num Lock LED shows alternative group."
+
+#: ../rules/base.xml.in.h:283
+msgid "Ogham"
+msgstr "Ogham"
+
+#: ../rules/base.xml.in.h:284
+#, fuzzy
+msgid "Ogham IS434"
+msgstr "IS434"
+
+#: ../rules/base.xml.in.h:285
+msgid "Oretec MCK-800 MM/Internet keyboard"
+msgstr "Oretec MCK-800 MM/Internet keyboard"
+
+#: ../rules/base.xml.in.h:286
+msgid "Oriya"
+msgstr "Oriya"
+
+#: ../rules/base.xml.in.h:287
+msgid "PC-98xx Series"
+msgstr "PC-98xx Series"
+
+#: ../rules/base.xml.in.h:288
+msgid "Pak"
+msgstr ""
+
+#: ../rules/base.xml.in.h:289
+#, fuzzy
+msgid "Pakistan"
+msgstr "Tajikistan"
+
+#: ../rules/base.xml.in.h:290
+msgid "Pattachote"
+msgstr "Pattachote"
+
+#: ../rules/base.xml.in.h:291
+msgid "Phonetic"
+msgstr "Phonetic"
+
+#: ../rules/base.xml.in.h:292
+msgid "Pol"
+msgstr "Pol"
+
+#: ../rules/base.xml.in.h:293
+msgid "Poland"
+msgstr "Poland"
+
+#: ../rules/base.xml.in.h:294
+msgid "Polytonic"
+msgstr "Polytonic"
+
+#: ../rules/base.xml.in.h:295
+msgid "Portugal"
+msgstr "Portugal"
+
+#: ../rules/base.xml.in.h:296
+#, fuzzy
+msgid "Power G5"
+msgstr "PowerPC PS/2"
+
+#: ../rules/base.xml.in.h:297
+msgid "PowerPC PS/2"
+msgstr "PowerPC PS/2"
+
+#: ../rules/base.xml.in.h:298
+msgid "Press Left Alt key to choose 3rd level."
+msgstr "Press Left Alt key to choose 3rd level."
+
+#: ../rules/base.xml.in.h:299
+msgid "Press Left Win-key to choose 3rd level."
+msgstr "Press Left Win-key to choose 3rd level."
+
+#: ../rules/base.xml.in.h:300
+msgid "Press Menu key to choose 3rd level."
+msgstr "Press Menu key to choose 3rd level."
+
+#: ../rules/base.xml.in.h:301
+msgid "Press Right Alt key to choose 3rd level."
+msgstr "Press Right Alt key to choose 3rd level."
+
+#: ../rules/base.xml.in.h:302
+#, fuzzy
+msgid "Press Right Ctrl to choose 3rd level."
+msgstr "Press Right Control to choose 3rd level."
+
+#: ../rules/base.xml.in.h:303
+msgid "Press Right Win-key to choose 3rd level."
+msgstr "Press Right Win-key to choose 3rd level."
+
+#: ../rules/base.xml.in.h:304
+msgid "Press any of Alt keys to choose 3rd level."
+msgstr "Press any of Alt keys to choose 3rd level."
+
+#: ../rules/base.xml.in.h:305
+msgid "Press any of Win-keys to choose 3rd level."
+msgstr "Press any of Win-keys to choose 3rd level."
+
+#: ../rules/base.xml.in.h:306
+#, fuzzy
+msgid "Pro"
+msgstr "Prt"
+
+#: ../rules/base.xml.in.h:307
+msgid "Pro Keypad"
+msgstr ""
+
+#: ../rules/base.xml.in.h:308
+msgid "Probhat"
+msgstr "Probhat"
+
+#: ../rules/base.xml.in.h:309
+msgid "Propeller Voyager (KTEZ-1000)"
+msgstr "Propeller Voyager (KTEZ-1000)"
+
+#: ../rules/base.xml.in.h:310
+msgid "Prt"
+msgstr "Prt"
+
+#: ../rules/base.xml.in.h:311
+msgid "QTronix Scorpius 98N+"
+msgstr "QTronix Scorpius 98N+"
+
+#: ../rules/base.xml.in.h:312
+msgid "R-Alt switches group while pressed."
+msgstr "R-Alt switches group while pressed."
+
+#: ../rules/base.xml.in.h:313
+msgid "Right Alt is Compose."
+msgstr "Right Alt is Compose."
+
+#: ../rules/base.xml.in.h:314
+msgid "Right Alt key changes group."
+msgstr "Right Alt key changes group."
+
+#: ../rules/base.xml.in.h:315
+msgid "Right Ctrl is Compose."
+msgstr "Right Ctrl is Compose."
+
+#: ../rules/base.xml.in.h:316
+msgid "Right Ctrl key changes group."
+msgstr "Right Ctrl key changes group."
+
+#: ../rules/base.xml.in.h:317
+msgid "Right Ctrl key switches group while pressed."
+msgstr "Right Ctrl key switches group while pressed."
+
+#: ../rules/base.xml.in.h:318
+#, fuzzy
+msgid "Right Ctrl key works as Right Alt."
+msgstr "Right Control key works as Right Alt."
+
+#: ../rules/base.xml.in.h:319
+msgid "Right Shift key changes group."
+msgstr "Right Shift key changes group."
+
+#: ../rules/base.xml.in.h:320
+msgid "Right Win-key changes group."
+msgstr "Right Win-key changes group."
+
+#: ../rules/base.xml.in.h:321
+msgid "Right Win-key is Compose."
+msgstr "Right Win-key is Compose."
+
+#: ../rules/base.xml.in.h:322
+msgid "Right Win-key switches group while pressed."
+msgstr "Right Win-key switches group while pressed."
+
+#: ../rules/base.xml.in.h:323
+msgid "Romania"
+msgstr "Romania"
+
+#: ../rules/base.xml.in.h:324
+msgid "Romanian keyboard with German letters"
+msgstr "Romanian keyboard with German letters"
+
+#: ../rules/base.xml.in.h:325
+msgid "Romanian keyboard with German letters, eliminate dead keys"
+msgstr "Romanian keyboard with German letters, eliminate dead keys"
+
+#: ../rules/base.xml.in.h:326
+msgid "Rou"
+msgstr "Rou"
+
+#: ../rules/base.xml.in.h:327
+msgid "Rus"
+msgstr "Rus"
+
+#: ../rules/base.xml.in.h:328
+msgid "Russia"
+msgstr "Russia"
+
+#: ../rules/base.xml.in.h:329
+msgid "Russian"
+msgstr "Russian"
+
+#: ../rules/base.xml.in.h:330
+#, fuzzy
+msgid "Russian phonetic"
+msgstr "Russian"
+
+#: ../rules/base.xml.in.h:331
+#, fuzzy
+msgid "Russian phonetic, eliminate dead keys"
+msgstr "French, eliminate dead keys"
+
+#: ../rules/base.xml.in.h:332
+msgid "SCG"
+msgstr ""
+
+#: ../rules/base.xml.in.h:333
+msgid "SK-1300"
+msgstr "SK-1300"
+
+#: ../rules/base.xml.in.h:334
+msgid "SK-2500"
+msgstr "SK-2500"
+
+#: ../rules/base.xml.in.h:335
+msgid "SK-6200"
+msgstr "SK-6200"
+
+#: ../rules/base.xml.in.h:336
+msgid "SK-7100"
+msgstr "SK-7100"
+
+#: ../rules/base.xml.in.h:337
+msgid "SVEN Ergonomic 2500"
+msgstr "SVEN Ergonomic 2500"
+
+#: ../rules/base.xml.in.h:338
+msgid "Samsung SDM 4500P"
+msgstr "Samsung SDM 4500P"
+
+#: ../rules/base.xml.in.h:339
+msgid "Samsung SDM 4510P"
+msgstr "Samsung SDM 4510P"
+
+#: ../rules/base.xml.in.h:340
+msgid "ScrollLock LED shows alternative group."
+msgstr "Scroll Lock LED shows alternative group."
+
+#: ../rules/base.xml.in.h:341
+msgid "Serbia and Montenegro"
+msgstr ""
+
+#: ../rules/base.xml.in.h:342
+msgid "Shift with numpad keys works as in MS Windows."
+msgstr "Shift with numpad keys works as in MS Windows."
+
+#: ../rules/base.xml.in.h:343
+msgid "Shift+CapsLock changes group."
+msgstr "Shift+Caps Lock changes group."
+
+#: ../rules/base.xml.in.h:344
+msgid "Slovakia"
+msgstr "Slovakia"
+
+#: ../rules/base.xml.in.h:345
+msgid "Slovenia"
+msgstr "Slovenia"
+
+#: ../rules/base.xml.in.h:346
+msgid "Spain"
+msgstr "Spain"
+
+#: ../rules/base.xml.in.h:347
+msgid "Special keys (Ctrl+Alt+&lt;key&gt;) handled in a server."
+msgstr "Special keys (Ctrl+Alt+&lt;key&gt;) handled in a server."
+
+#: ../rules/base.xml.in.h:348
+#, fuzzy
+msgid "SrL"
+msgstr "Syr"
+
+#: ../rules/base.xml.in.h:349
+#, fuzzy
+msgid "Sri Lanka"
+msgstr "Serbian"
+
+#: ../rules/base.xml.in.h:350
+msgid "Standard"
+msgstr "Standard"
+
+#. RSTU 2019-91
+#: ../rules/base.xml.in.h:352
+#, fuzzy
+msgid "Standard RSTU"
+msgstr "Standard"
+
+#. RSTU 2019-91
+#: ../rules/base.xml.in.h:354
+msgid "Standard RSTU on Russian layout"
+msgstr ""
+
+#: ../rules/base.xml.in.h:355
+msgid "Sun dead keys"
+msgstr "Sun dead keys"
+
+#: ../rules/base.xml.in.h:356
+msgid "Super Power Multimedia Keyboard"
+msgstr "Super Power Multimedia Keyboard"
+
+#: ../rules/base.xml.in.h:357
+msgid "Super is mapped to the Win-keys (default)."
+msgstr "Super is mapped to the Win-keys (default)."
+
+#: ../rules/base.xml.in.h:358
+msgid "Svk"
+msgstr "Svk"
+
+#: ../rules/base.xml.in.h:359
+msgid "Svn"
+msgstr "Svn"
+
+#: ../rules/base.xml.in.h:360
+#, fuzzy
+msgid "Swap Ctrl and CapsLock."
+msgstr "Swap Control and Caps Lock."
+
+#: ../rules/base.xml.in.h:361
+msgid "Swe"
+msgstr "Swe"
+
+#: ../rules/base.xml.in.h:362
+msgid "Sweden"
+msgstr "Sweden"
+
+#: ../rules/base.xml.in.h:363
+msgid "Switzerland"
+msgstr "Switzerland"
+
+#: ../rules/base.xml.in.h:364
+msgid "Symplon PaceBook (tablet PC)"
+msgstr "Symplon PaceBook (tablet PC)"
+
+#: ../rules/base.xml.in.h:365
+msgid "Syr"
+msgstr "Syr"
+
+#: ../rules/base.xml.in.h:366
+#, fuzzy
+msgid "Syria"
+msgstr "Syriac"
+
+#: ../rules/base.xml.in.h:367
+msgid "Syriac"
+msgstr "Syriac"
+
+#: ../rules/base.xml.in.h:368
+#, fuzzy
+msgid "Syriac phonetic"
+msgstr "Russian"
+
+#: ../rules/base.xml.in.h:369
+msgid "TIS-820.2538"
+msgstr "TIS-820.2538"
+
+#: ../rules/base.xml.in.h:370
+msgid "Tajikistan"
+msgstr "Tajikistan"
+
+#: ../rules/base.xml.in.h:371
+msgid "Tamil"
+msgstr "Tamil"
+
+#: ../rules/base.xml.in.h:372
+#, fuzzy
+msgid "Tamil TAB Typewriter"
+msgstr "\"Typewriter\""
+
+#: ../rules/base.xml.in.h:373
+msgid "Tamil TSCII Typewriter"
+msgstr ""
+
+#: ../rules/base.xml.in.h:374
+#, fuzzy
+msgid "Tamil Unicode"
+msgstr "Latin Unicode"
+
+#: ../rules/base.xml.in.h:375
+msgid "Telugu"
+msgstr "Telugu"
+
+#: ../rules/base.xml.in.h:376
+msgid "Tha"
+msgstr "Tha"
+
+#: ../rules/base.xml.in.h:377
+msgid "Thailand"
+msgstr "Thailand"
+
+#: ../rules/base.xml.in.h:378
+msgid "Third level choosers"
+msgstr "Third level choosers"
+
+#: ../rules/base.xml.in.h:379
+msgid "Tilde (~) variant"
+msgstr "Tilde (~) variant"
+
+#: ../rules/base.xml.in.h:380
+msgid "Tjk"
+msgstr "Tjk"
+
+#: ../rules/base.xml.in.h:381
+msgid "Toshiba Satellite S3000"
+msgstr "Toshiba Satellite S3000"
+
+#: ../rules/base.xml.in.h:382
+msgid "Trust Direct Access Keyboard"
+msgstr "Trust Direct Access Keyboard"
+
+#: ../rules/base.xml.in.h:383
+msgid "Trust Wireless Keyboard Classic"
+msgstr "Trust Wireless Keyboard Classic"
+
+#: ../rules/base.xml.in.h:384
+msgid "Tur"
+msgstr "Tur"
+
+#: ../rules/base.xml.in.h:385
+msgid "Turkish"
+msgstr "Turkish"
+
+#: ../rules/base.xml.in.h:386
+#, fuzzy
+msgid "Typewriter"
+msgstr "\"Typewriter\""
+
+#: ../rules/base.xml.in.h:387
+msgid "U.S. English"
+msgstr "U.S. English"
+
+#: ../rules/base.xml.in.h:388
+#, fuzzy
+msgid "US keyboard with Bosnian digraphs"
+msgstr "US keyboard with Romanian letters"
+
+#: ../rules/base.xml.in.h:389
+#, fuzzy
+msgid "US keyboard with Bosnian letters"
+msgstr "US keyboard with Romanian letters"
+
+#: ../rules/base.xml.in.h:390
+#, fuzzy
+msgid "US keyboard with Croatian digraphs"
+msgstr "US keyboard with Croatian letters"
+
+#: ../rules/base.xml.in.h:391
+msgid "US keyboard with Croatian letters"
+msgstr "US keyboard with Croatian letters"
+
+#: ../rules/base.xml.in.h:392
+msgid "US keyboard with Lithuanian letters"
+msgstr "US keyboard with Lithuanian letters"
+
+#: ../rules/base.xml.in.h:393
+msgid "US keyboard with Maltian letters"
+msgstr "US keyboard with Maltian letters"
+
+#: ../rules/base.xml.in.h:394
+#, fuzzy
+msgid "US keyboard with Slovenian digraphs"
+msgstr "US keyboard with Romanian letters"
+
+#: ../rules/base.xml.in.h:395
+#, fuzzy
+msgid "US keyboard with Slovenian letters"
+msgstr "US keyboard with Romanian letters"
+
+#: ../rules/base.xml.in.h:396
+msgid "USA"
+msgstr "USA"
+
+#: ../rules/base.xml.in.h:397
+msgid "Ukr"
+msgstr "Ukr"
+
+#: ../rules/base.xml.in.h:398
+msgid "Ukraine"
+msgstr "Ukraine"
+
+#: ../rules/base.xml.in.h:399
+msgid "UnicodeExpert"
+msgstr "UnicodeExpert"
+
+#: ../rules/base.xml.in.h:400
+msgid "United Kingdom"
+msgstr "United Kingdom"
+
+#: ../rules/base.xml.in.h:401
+msgid "Urdu"
+msgstr "Urdu"
+
+#: ../rules/base.xml.in.h:402
+msgid "Use Bosnian digraphs"
+msgstr ""
+
+#: ../rules/base.xml.in.h:403
+msgid "Use Croatian digraphs"
+msgstr ""
+
+#: ../rules/base.xml.in.h:404
+msgid "Use Slovenian digraphs"
+msgstr ""
+
+#: ../rules/base.xml.in.h:405
+msgid "Use guillemots for quotes"
+msgstr ""
+
+#: ../rules/base.xml.in.h:406
+msgid "Use keyboard LED to show alternative group."
+msgstr "Use keyboard LED to show alternative group."
+
+#: ../rules/base.xml.in.h:407
+msgid "Uzb"
+msgstr "Uzb"
+
+#: ../rules/base.xml.in.h:408
+msgid "Uzbekistan"
+msgstr "Uzbekistan"
+
+#: ../rules/base.xml.in.h:409
+msgid "Vietnam"
+msgstr "Vietnam"
+
+#: ../rules/base.xml.in.h:410
+msgid "Vnm"
+msgstr "Vnm"
+
+#: ../rules/base.xml.in.h:411
+msgid "Winbook Model XP5"
+msgstr "Winbook Model XP5"
+
+#: ../rules/base.xml.in.h:412
+msgid "Winkeys"
+msgstr "Winkeys"
+
+#: ../rules/base.xml.in.h:413
+msgid "With &lt;\\|&gt; key"
+msgstr "With &lt;\\|&gt; key"
+
+#: ../rules/base.xml.in.h:414
+msgid "With guillemots"
+msgstr "With guillemots"
+
+#: ../rules/base.xml.in.h:415
+msgid "Yahoo! Internet Keyboard"
+msgstr "Yahoo! Internet Keyboard"
+
+#: ../rules/base.xml.in.h:416
+msgid "Z and ZHE swapped"
+msgstr "Z and ZHE swapped"
+
+#: ../rules/base.xml.in.h:417
+msgid "azerty"
+msgstr "azerty"
+
+#: ../rules/base.xml.in.h:418
+msgid "azerty/digits"
+msgstr "azerty/digits"
+
+#: ../rules/base.xml.in.h:419
+msgid "digits"
+msgstr "digits"
+
+#: ../rules/base.xml.in.h:420
+msgid "lyx"
+msgstr "lyx"
+
+#: ../rules/base.xml.in.h:421
+msgid "qwerty"
+msgstr "qwerty"
+
+#: ../rules/base.xml.in.h:422
+msgid "qwerty, extended Backslash"
+msgstr "qwerty, extended Backslash"
+
+#: ../rules/base.xml.in.h:423
+msgid "qwerty/digits"
+msgstr "qwerty/digits"
+
+#: ../rules/base.xml.in.h:424
+msgid "qwertz"
+msgstr "qwertz"
+
+#: ../rules/base.xml.in.h:425
+msgid "si1452"
+msgstr "si1452"
+
+#~ msgid "\"Standard\""
+#~ msgstr "\"Standard\""
+
+#, fuzzy
+#~ msgid "Romanian keyboard with MS layout"
+#~ msgstr "Romanian keyboard with German letters"
+
+#, fuzzy
+#~ msgid "Romanian standard keyboard"
+#~ msgstr "Ukrainian standard RSTU"
+
+#, fuzzy
+#~ msgid "Serbia"
+#~ msgstr "Serbian"
+
+#~ msgid "Srp"
+#~ msgstr "Srp"
+
+#, fuzzy
+#~ msgid "Tamil INSCRIPT"
+#~ msgstr "Bengali"
+
+#~ msgid "US keyboard with Romanian letters"
+#~ msgstr "US keyboard with Romanian letters"
+
+#~ msgid "CloGaelach Laptop"
+#~ msgstr "CloGaelach Laptop"
+
+#~ msgid "Laptop"
+#~ msgstr "Laptop"
+
+#, fuzzy
+#~ msgid "Ogham IS434 laptop"
+#~ msgstr "IS434 laptop"
+
+#, fuzzy
+#~ msgid "Sinhala phonetic"
+#~ msgstr "Russian"
+
+#, fuzzy
+#~ msgid "Malayalam with Malayalam digits"
+#~ msgstr "With Malayalam digits"
+
+#, fuzzy
+#~ msgid "Devanagari INSCRIPT"
+#~ msgstr "Devanagari"
+
+#~ msgid "Dzo"
+#~ msgstr "Dzo"
+
+#~ msgid "Dzongkha"
+#~ msgstr "Dzongkha"
+
+#~ msgid "Finish and Swedish"
+#~ msgstr "Finish and Swedish"
+
+#, fuzzy
+#~ msgid "Gurmukhi INSCRIPT"
+#~ msgstr "Gurmukhi"
+
+#, fuzzy
+#~ msgid "Kannada INSCRIPT"
+#~ msgstr "Kannada"
+
+#~ msgid "Smi"
+#~ msgstr "Smi"
+
+#~ msgid "Ben"
+#~ msgstr "Ben"
+
+#~ msgid "Deva"
+#~ msgstr "Deva"
+
+#~ msgid "Guj"
+#~ msgstr "Guj"
+
+#~ msgid "INSCRIPT layout"
+#~ msgstr "INSCRIPT layout"
+
+#~ msgid "Iku"
+#~ msgstr "Iku"
+
+#~ msgid "Ogam"
+#~ msgstr "Ogam"
+
+#~ msgid "Ori"
+#~ msgstr "Ori"
+
+#~ msgid "Sin"
+#~ msgstr "Sin"
+
+#~ msgid "Sinhala"
+#~ msgstr "Sinhala"
+
+#~ msgid "Tam"
+#~ msgstr "Tam"
+
+#~ msgid "Tel"
+#~ msgstr "Tel"
+
+#~ msgid "Typewrite-style keymap; TAB encoding"
+#~ msgstr "Typewrite-style keymap; TAB encoding"
+
+#, fuzzy
+#~ msgid "Typewrite-style keymap; TSCII encoding"
+#~ msgstr "Typewrite-style keymap; TAB encoding"
+
+#~ msgid "Urd"
+#~ msgstr "Urd"
+
+#~ msgid "Typewrite-style keymap; Unicode encoding"
+#~ msgstr "Typewrite-style keymap; Unicode encoding"
diff --git a/xorg-server/xkeyboard-config/po/fi.po b/xorg-server/xkeyboard-config/po/fi.po
index 20a5358e4..bcbd30464 100644
--- a/xorg-server/xkeyboard-config/po/fi.po
+++ b/xorg-server/xkeyboard-config/po/fi.po
@@ -1,3459 +1,3459 @@
-# Finnish translations for xkeyboard-config package.
-# Copyright (C) 2005 Free Software Foundation, Inc.
-# This file is distributed under the same license as the xkeyboard-config package.
-# Tommi Vainikainen <Tommi.Vainikainen@iki.fi>, 2005, 2007-2010.
-# Ilkka Tuohela <hile@iki.fi>, 2007.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: xkeyboard-config 2.0\n"
-"Report-Msgid-Bugs-To: svu@users.sourceforge.net\n"
-"POT-Creation-Date: 2010-09-15 21:57+0100\n"
-"PO-Revision-Date: 2010-09-20 08:49+0300\n"
-"Last-Translator: Tommi Vainikainen <Tommi.Vainikainen@iki.fi>\n"
-"Language-Team: Finnish <translation-team-fi@lists.sourceforge.net>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: ../rules/base.xml.in.h:1
-msgid "&lt;Less/Greater&gt;"
-msgstr "&lt;Pienempi/suurempi-kuin&gt;"
-
-#: ../rules/base.xml.in.h:2
-msgid "&lt;Less/Greater&gt; chooses 5th level, locks when pressed together with another 5th-level-chooser"
-msgstr "&lt;Pienempi/suurempi-kuin&gt; valitsee 5. tason, lukitsee kun painetaan yhdessä toisen 5. tason valitsimen kanssa"
-
-#: ../rules/base.xml.in.h:3
-msgid "&lt;Less/Greater&gt; chooses 5th level, locks when pressed together with another 5th-level-chooser, one press releases the lock"
-msgstr "&lt;Pienempi/suurempi-kuin&gt; valitsee 5. tason, lukitsee kun painetaan yhdessä toisen 5. tason valitsimen kanssa, yksi painallus vapauttaa lukon"
-
-#: ../rules/base.xml.in.h:4
-msgid "(F)"
-msgstr "(F)"
-
-#: ../rules/base.xml.in.h:5
-msgid "(Legacy) Alternative"
-msgstr "(Perinteinen) vaihtoehtoinen"
-
-#: ../rules/base.xml.in.h:6
-msgid "(Legacy) Alternative, Sun dead keys"
-msgstr "(Perinteinen) vaihtoehtoinen, Sunin kuolleet näppäimet"
-
-#: ../rules/base.xml.in.h:7
-msgid "(Legacy) Alternative, eliminate dead keys"
-msgstr "(Perinteinen) vaihtoehtoinen, ei kuolleita näppäimiä"
-
-#: ../rules/base.xml.in.h:8
-msgid "101/104 key Compatible"
-msgstr "101/104-näppäiminen tai yhteensopiva"
-
-#: ../rules/base.xml.in.h:9
-msgid "101/qwerty/comma/Dead keys"
-msgstr "101/qwerty/pilkku/Kuolleet näppäimet"
-
-#: ../rules/base.xml.in.h:10
-msgid "101/qwerty/comma/Eliminate dead keys"
-msgstr "101/qwerty/pilkku/Ei kuolleita näppäimiä"
-
-#: ../rules/base.xml.in.h:11
-msgid "101/qwerty/dot/Dead keys"
-msgstr "101/qwerty/piste/Kuolleet näppäimet"
-
-#: ../rules/base.xml.in.h:12
-msgid "101/qwerty/dot/Eliminate dead keys"
-msgstr "101/qwerty/piste/Ei kuolleita näppäimiä"
-
-#: ../rules/base.xml.in.h:13
-msgid "101/qwertz/comma/Dead keys"
-msgstr "101/qwertz/pilkku/Kuolleet näppäimet"
-
-#: ../rules/base.xml.in.h:14
-msgid "101/qwertz/comma/Eliminate dead keys"
-msgstr "101/qwertz/pilkku/Ei kuolleita näppäimiä"
-
-#: ../rules/base.xml.in.h:15
-msgid "101/qwertz/dot/Dead keys"
-msgstr "101/qwertz/piste/Kuolleet näppäimet"
-
-#: ../rules/base.xml.in.h:16
-msgid "101/qwertz/dot/Eliminate dead keys"
-msgstr "101/qwertz/piste/Ei kuolleita näppäimiä"
-
-#: ../rules/base.xml.in.h:17
-msgid "102/qwerty/comma/Dead keys"
-msgstr "102/qwerty/pilkku/Kuolleet näppäimet"
-
-#: ../rules/base.xml.in.h:18
-msgid "102/qwerty/comma/Eliminate dead keys"
-msgstr "102/qwerty/pilkku/Ei kuolleita näppäimiä"
-
-#: ../rules/base.xml.in.h:19
-msgid "102/qwerty/dot/Dead keys"
-msgstr "102/qwerty/piste/Kuolleet näppäimet"
-
-#: ../rules/base.xml.in.h:20
-msgid "102/qwerty/dot/Eliminate dead keys"
-msgstr "102/qwerty/piste/Ei kuolleita näppäimiä"
-
-#: ../rules/base.xml.in.h:21
-msgid "102/qwertz/comma/Dead keys"
-msgstr "102/qwertz/pilkku/Kuolleet näppäimet"
-
-#: ../rules/base.xml.in.h:22
-msgid "102/qwertz/comma/Eliminate dead keys"
-msgstr "102/qwertz/pilkku/Ei kuolleita näppäimiä"
-
-#: ../rules/base.xml.in.h:23
-msgid "102/qwertz/dot/Dead keys"
-msgstr "102/qwertz/piste/Kuolleet näppäimet"
-
-#: ../rules/base.xml.in.h:24
-msgid "102/qwertz/dot/Eliminate dead keys"
-msgstr "102/qwertz/piste/Ei kuolleita näppäimiä"
-
-#: ../rules/base.xml.in.h:25
-msgid "2"
-msgstr "2"
-
-#: ../rules/base.xml.in.h:26
-msgid "4"
-msgstr "4"
-
-#: ../rules/base.xml.in.h:27
-msgid "5"
-msgstr "5"
-
-#: ../rules/base.xml.in.h:28
-msgid "A4Tech KB-21"
-msgstr "A4Tech KB-21"
-
-#: ../rules/base.xml.in.h:29
-msgid "A4Tech KBS-8"
-msgstr "A4Tech KBS-8"
-
-#: ../rules/base.xml.in.h:30
-msgid "A4Tech Wireless Desktop RFKB-23"
-msgstr "A4Tech-langaton työpöytänäppäimistö RFKB-23"
-
-#: ../rules/base.xml.in.h:31
-msgid "ATM/phone-style"
-msgstr "ATM/puhelintyyppi"
-
-#: ../rules/base.xml.in.h:32
-msgid "Acer AirKey V"
-msgstr "Acer AirKey V"
-
-#: ../rules/base.xml.in.h:33
-msgid "Acer C300"
-msgstr "Acer C300"
-
-#: ../rules/base.xml.in.h:34
-msgid "Acer Ferrari 4000"
-msgstr "Acer Ferrari 4000"
-
-#: ../rules/base.xml.in.h:35
-msgid "Acer Laptop"
-msgstr "Acer-kannettava"
-
-#: ../rules/base.xml.in.h:36
-msgid "Add the standard behavior to Menu key"
-msgstr "Lisää standardi toiminta valikkonäppäimeen"
-
-# Tulkitsin asiaa pikaisella tutkimuksella siten, että supersigno on
-# esperantoa ja tarkoittaa noin suunnilleen korkomerkkiä.
-#: ../rules/base.xml.in.h:37
-msgid "Adding Esperanto circumflexes (supersigno)"
-msgstr "Esperanton tarkkeiden lisäys (supersigno)"
-
-#: ../rules/base.xml.in.h:38
-msgid "Adding EuroSign to certain keys"
-msgstr "Euro-merkin lisäys haluttuun näppäimeen"
-
-#: ../rules/base.xml.in.h:39
-msgid "Advance Scorpius KI"
-msgstr "Advance Scorpius KI"
-
-#: ../rules/base.xml.in.h:40
-msgid "Afg"
-msgstr "Afg"
-
-#: ../rules/base.xml.in.h:41
-msgid "Afghanistan"
-msgstr "Afganistan"
-
-#: ../rules/base.xml.in.h:42
-msgid "Akan"
-msgstr "Akan"
-
-#: ../rules/base.xml.in.h:43
-msgid "Alb"
-msgstr "Alb"
-
-#: ../rules/base.xml.in.h:44
-msgid "Albania"
-msgstr "Albania"
-
-#: ../rules/base.xml.in.h:45
-msgid "Alt and Meta are on Alt keys"
-msgstr "Alt ja Meta ovat Alt-näppäimissä"
-
-#: ../rules/base.xml.in.h:46
-msgid "Alt is mapped to Right Win, Super to Menu"
-msgstr "Alt tulee oikeasta Win-näppäimestä, Super valikkonäppäimestä"
-
-#: ../rules/base.xml.in.h:47
-msgid "Alt+Caps Lock"
-msgstr "Alt+Caps Lock"
-
-#: ../rules/base.xml.in.h:48
-msgid "Alt+Ctrl"
-msgstr "Alt+Ctrl"
-
-#: ../rules/base.xml.in.h:49
-msgid "Alt+Shift"
-msgstr "Alt+Shift"
-
-#: ../rules/base.xml.in.h:50
-msgid "Alt+Space"
-msgstr "Alt+Välilyönti"
-
-#: ../rules/base.xml.in.h:51
-msgid "Alt-Q"
-msgstr "Alt-Q"
-
-#: ../rules/base.xml.in.h:52
-msgid "Alt/Win key behavior"
-msgstr "Alt- ja Win-näppäinten toiminta"
-
-#: ../rules/base.xml.in.h:53
-msgid "Alternative"
-msgstr "Vaihtoehtoinen"
-
-#: ../rules/base.xml.in.h:54
-msgid "Alternative Eastern"
-msgstr "Vaihtoehtoinen itäinen"
-
-#: ../rules/base.xml.in.h:55
-msgid "Alternative Phonetic"
-msgstr "Vaihtoehtoinen foneettinen"
-
-#: ../rules/base.xml.in.h:56
-msgid "Alternative international"
-msgstr "Vaihtoehtoinen kansainvälinen"
-
-#: ../rules/base.xml.in.h:57
-msgid "Alternative, Sun dead keys"
-msgstr "Vaihtoehtoinen, Sunin kuolleet näppäimet"
-
-#: ../rules/base.xml.in.h:58
-msgid "Alternative, eliminate dead keys"
-msgstr "Vaihtoehtoinen, ei kuolleita näppäimiä"
-
-#: ../rules/base.xml.in.h:59
-msgid "Alternative, latin-9 only"
-msgstr "Vaihtoehtoinen, vain latin-9"
-
-#: ../rules/base.xml.in.h:60
-msgid "And"
-msgstr "And"
-
-#: ../rules/base.xml.in.h:61
-msgid "Andorra"
-msgstr "Andorra"
-
-#: ../rules/base.xml.in.h:62
-msgid "Any Alt key"
-msgstr "Mikä tahansa Alt-näppäin"
-
-#: ../rules/base.xml.in.h:63
-msgid "Any Win key"
-msgstr "Mikä tahansa Win-näppäin"
-
-#: ../rules/base.xml.in.h:64
-msgid "Any Win key (while pressed)"
-msgstr "Mikä tahansa Win-näppäin (painettaessa)"
-
-#: ../rules/base.xml.in.h:65
-msgid "Apostrophe (') variant"
-msgstr "Heittomerkkimuunnos (')"
-
-#: ../rules/base.xml.in.h:66
-msgid "Apple"
-msgstr "Apple"
-
-#: ../rules/base.xml.in.h:67
-msgid "Apple Aluminium Keyboard (ANSI)"
-msgstr "Apple Aluminium -näppäimistö (ANSI)"
-
-#: ../rules/base.xml.in.h:68
-msgid "Apple Aluminium Keyboard (ISO)"
-msgstr "Apple Aluminium -näppäimistö (ISO)"
-
-#: ../rules/base.xml.in.h:69
-msgid "Apple Aluminium Keyboard (JIS)"
-msgstr "Apple Aluminium -näppäimistö (JIS)"
-
-#: ../rules/base.xml.in.h:70
-msgid "Apple Aluminium Keyboard: emulate PC keys (Print, Scroll Lock, Pause, Num Lock)"
-msgstr "Apple Aluminium -näppäimistö: emuloi PC-näppäimiä (Print, Scroll Lock, Pause, Num Lock)"
-
-#: ../rules/base.xml.in.h:71
-msgid "Apple Laptop"
-msgstr "Apple-kannettava"
-
-#: ../rules/base.xml.in.h:72
-msgid "Ara"
-msgstr "Ara"
-
-#: ../rules/base.xml.in.h:73
-msgid "Arabic"
-msgstr "Arabia"
-
-#: ../rules/base.xml.in.h:74
-msgid "Arm"
-msgstr "Arm"
-
-#: ../rules/base.xml.in.h:75
-msgid "Armenia"
-msgstr "Armenia"
-
-#: ../rules/base.xml.in.h:76
-msgid "Asturian variant with bottom-dot H and bottom-dot L"
-msgstr "Asturia-vaihtoehto keskipilkullisella H-kirjaimella ja alapilkullisella L-kirjaimella"
-
-#: ../rules/base.xml.in.h:77
-msgid "Asus Laptop"
-msgstr "Asus-kannettava"
-
-#: ../rules/base.xml.in.h:78
-msgid "At bottom left"
-msgstr "Alhaalla vasemmalla"
-
-#: ../rules/base.xml.in.h:79
-msgid "At left of 'A'"
-msgstr "â€Aâ€-näppäimestä vasemmalla"
-
-#: ../rules/base.xml.in.h:80
-msgid "Austria"
-msgstr "Itävalta"
-
-#: ../rules/base.xml.in.h:81
-msgid "Aut"
-msgstr "Aut"
-
-#: ../rules/base.xml.in.h:82
-msgid "Avatime"
-msgstr "Avatime"
-
-#: ../rules/base.xml.in.h:83
-msgid "Aze"
-msgstr "Aze"
-
-#: ../rules/base.xml.in.h:84
-msgid "Azerbaijan"
-msgstr "Azerbaidzan"
-
-#: ../rules/base.xml.in.h:85
-msgid "Azona RF2300 wireless Internet Keyboard"
-msgstr "Azona RF2300 -langaton Internet-näppäimistö"
-
-#: ../rules/base.xml.in.h:86
-msgid "BTC 5090"
-msgstr "BTC 5090"
-
-#: ../rules/base.xml.in.h:87
-msgid "BTC 5113RF Multimedia"
-msgstr "BTC 5113RF Multimedia"
-
-#: ../rules/base.xml.in.h:88
-msgid "BTC 5126T"
-msgstr "BTC 5126T"
-
-#: ../rules/base.xml.in.h:89
-msgid "BTC 6301URF"
-msgstr "BTC 6301URF"
-
-#: ../rules/base.xml.in.h:90
-msgid "BTC 9000"
-msgstr "BTC 9000"
-
-#: ../rules/base.xml.in.h:91
-msgid "BTC 9000A"
-msgstr "BTC 9000A"
-
-#: ../rules/base.xml.in.h:92
-msgid "BTC 9001AH"
-msgstr "BTC 9001AH"
-
-#: ../rules/base.xml.in.h:93
-msgid "BTC 9019U"
-msgstr "BTC 9019U"
-
-#: ../rules/base.xml.in.h:94
-msgid "BTC 9116U Mini Wireless Internet and Gaming"
-msgstr "BTC 9116U Mini Wireless Internet and Gaming"
-
-#: ../rules/base.xml.in.h:95
-msgid "Backslash"
-msgstr "Kenoviiva"
-
-#: ../rules/base.xml.in.h:96
-msgid "Bangladesh"
-msgstr "Bangladesh"
-
-#: ../rules/base.xml.in.h:97
-msgid "Bashkirian"
-msgstr "baškiiri"
-
-#: ../rules/base.xml.in.h:98
-msgid "Bel"
-msgstr "Bel"
-
-#: ../rules/base.xml.in.h:99
-msgid "Belarus"
-msgstr "Valko-Venäjä"
-
-#: ../rules/base.xml.in.h:100
-msgid "Belgium"
-msgstr "Belgia"
-
-#: ../rules/base.xml.in.h:101
-msgid "BenQ X-Touch"
-msgstr "BenQ X-Touch"
-
-#: ../rules/base.xml.in.h:102
-msgid "BenQ X-Touch 730"
-msgstr "BenQ X-Touch 730"
-
-#: ../rules/base.xml.in.h:103
-msgid "BenQ X-Touch 800"
-msgstr "BenQ X-Touch 800"
-
-#: ../rules/base.xml.in.h:104
-msgid "Bengali"
-msgstr "Bengali"
-
-#: ../rules/base.xml.in.h:105
-msgid "Bengali Probhat"
-msgstr "Bengali probhat"
-
-#: ../rules/base.xml.in.h:106
-msgid "Bepo, ergonomic, Dvorak way"
-msgstr "Bepo, ergonominen, Dvorak-tavalla"
-
-#: ../rules/base.xml.in.h:107
-msgid "Bepo, ergonomic, Dvorak way, latin-9 only"
-msgstr "Bepo, ergonominen, Dvorak-tavalla, pelkkä latin-9"
-
-#: ../rules/base.xml.in.h:108
-msgid "Bgd"
-msgstr "Bgd"
-
-#: ../rules/base.xml.in.h:109
-msgid "Bgr"
-msgstr "Bgr"
-
-#: ../rules/base.xml.in.h:110
-msgid "Bhutan"
-msgstr "Bhutan"
-
-#: ../rules/base.xml.in.h:111
-msgid "Biblical Hebrew (Tiro)"
-msgstr "Raamatullinen Heprea (Tiro)"
-
-#: ../rules/base.xml.in.h:112
-msgid "Bih"
-msgstr "Bih"
-
-#: ../rules/base.xml.in.h:113
-msgid "Blr"
-msgstr "Blr"
-
-#: ../rules/base.xml.in.h:114
-msgid "Bosnia and Herzegovina"
-msgstr "Bosnia-Hertsegovina"
-
-#: ../rules/base.xml.in.h:115
-msgid "Both Alt keys together"
-msgstr "Molemmat Alt-näppäimet"
-
-#: ../rules/base.xml.in.h:116
-msgid "Both Ctrl keys together"
-msgstr "Molemmat Ctrl-näppäimet"
-
-#: ../rules/base.xml.in.h:117
-msgid "Both Shift keys together"
-msgstr "Molemmat Shift-näppäimet"
-
-#: ../rules/base.xml.in.h:118
-msgid "Both Shift-Keys together toggle Caps Lock"
-msgstr "Molemmat Shift-näppäimet yhdessä vaihtavat Caps Lockin."
-
-#: ../rules/base.xml.in.h:119
-msgid "Botswana"
-msgstr "Botswana"
-
-#: ../rules/base.xml.in.h:120
-msgid "Bra"
-msgstr "Bra"
-
-#: ../rules/base.xml.in.h:121
-msgid "Braille"
-msgstr "Braille"
-
-#: ../rules/base.xml.in.h:122
-msgid "Brazil"
-msgstr "Brasilia"
-
-#: ../rules/base.xml.in.h:123
-msgid "Breton"
-msgstr "Bretoni"
-
-#: ../rules/base.xml.in.h:124
-msgid "Brl"
-msgstr "Brl"
-
-#: ../rules/base.xml.in.h:125
-msgid "Brother Internet Keyboard"
-msgstr "Brother-Internet-näppäimistö"
-
-#: ../rules/base.xml.in.h:126
-msgid "Btn"
-msgstr "Btn"
-
-#: ../rules/base.xml.in.h:127
-msgid "Buckwalter"
-msgstr "Buckwalter"
-
-#: ../rules/base.xml.in.h:128
-msgid "Bulgaria"
-msgstr "Bulgaria"
-
-#: ../rules/base.xml.in.h:129
-msgid "Bwa"
-msgstr "Bwa"
-
-#: ../rules/base.xml.in.h:130
-msgid "COD"
-msgstr "COD"
-
-#: ../rules/base.xml.in.h:131
-msgid "CRULP"
-msgstr "CRULP"
-
-#: ../rules/base.xml.in.h:132
-msgid "Cambodia"
-msgstr "Kambodža"
-
-#: ../rules/base.xml.in.h:133
-msgid "Can"
-msgstr "Can"
-
-#: ../rules/base.xml.in.h:134
-msgid "Canada"
-msgstr "Kanada"
-
-#: ../rules/base.xml.in.h:135
-msgid "Caps Lock"
-msgstr "Caps Lock"
-
-#: ../rules/base.xml.in.h:136
-msgid "Caps Lock (to first layout), Shift+Caps Lock (to last layout)"
-msgstr "Caps Lock (ensimmäiselle tasolle), Shift+Caps Lock (viimeiselle tasolle)"
-
-#: ../rules/base.xml.in.h:137
-msgid "Caps Lock (while pressed), Alt+Caps Lock does the original capslock action"
-msgstr "Caps Lock (painettaessa), Alt+Caps Lock tekee normaalin CapsLock-toiminnon"
-
-#: ../rules/base.xml.in.h:138
-msgid "Caps Lock acts as Shift with locking. Shift \"pauses\" Caps Lock"
-msgstr "Caps Lock toimii lukitsevana Shiftinä. Shift kumoaa Caps Lockin"
-
-#: ../rules/base.xml.in.h:139
-msgid "Caps Lock acts as Shift with locking. Shift doesn't affect Caps Lock"
-msgstr "Caps Lock toimii lukitsevana Shiftinä. Shift ei kumoa Caps Lockia"
-
-#: ../rules/base.xml.in.h:140
-msgid "Caps Lock is disabled"
-msgstr "Caps Lock ei käytössä"
-
-#: ../rules/base.xml.in.h:141
-msgid "Caps Lock key behavior"
-msgstr "Caps Lock-näppäimen toiminta"
-
-#: ../rules/base.xml.in.h:142
-msgid "Caps Lock toggles Shift so all keys are affected"
-msgstr "Caps Lock vaihtaa Shiftiä vaikuttaen kaikkiin näppäimiin"
-
-#: ../rules/base.xml.in.h:143
-msgid "Caps Lock toggles normal capitalization of alphabetic characters"
-msgstr "Caps Lock vaihtaa normaalin suuraakkostuksen aakkosille"
-
-#: ../rules/base.xml.in.h:144
-msgid "Caps Lock uses internal capitalization. Shift \"pauses\" Caps Lock"
-msgstr "Caps Lock käyttää sisäistä suuraakkostusta. Shift kumoaa Caps Lockin"
-
-#: ../rules/base.xml.in.h:145
-msgid "Caps Lock uses internal capitalization. Shift doesn't affect Caps Lock"
-msgstr "Caps Lock käyttää sisäistä suuraakkostusta. Shift ei kumoa Caps Lockia"
-
-#: ../rules/base.xml.in.h:146
-msgid "Catalan variant with middle-dot L"
-msgstr "Katalaani-vaihtoehto keskipilkullisella L-kirjaimella"
-
-#: ../rules/base.xml.in.h:147
-msgid "Cedilla"
-msgstr "Sedilji"
-
-#: ../rules/base.xml.in.h:148
-msgid "Che"
-msgstr "Che"
-
-#: ../rules/base.xml.in.h:149
-msgid "Cherokee"
-msgstr "Cherokee"
-
-#: ../rules/base.xml.in.h:150
-msgid "Cherry B.UNLIMITED"
-msgstr "Cherry B.UNLIMITED"
-
-#: ../rules/base.xml.in.h:151
-msgid "Cherry Blue Line CyBo@rd"
-msgstr "Cherry Blue Line CyBo@rd"
-
-#: ../rules/base.xml.in.h:152
-msgid "Cherry Blue Line CyBo@rd (alternate option)"
-msgstr "Cherry Blue Line CyBo@rd (vaihtoehtoinen valinta)"
-
-#: ../rules/base.xml.in.h:153
-msgid "Cherry CyBo@rd USB-Hub"
-msgstr "Cherry CyBo@rd USB-Hub"
-
-#: ../rules/base.xml.in.h:154
-msgid "Cherry CyMotion Expert"
-msgstr "Cherry CyMotion Expert"
-
-#: ../rules/base.xml.in.h:155
-msgid "Cherry CyMotion Master Linux"
-msgstr "Cherry CyMotion Master Linux"
-
-#: ../rules/base.xml.in.h:156
-msgid "Cherry CyMotion Master XPress"
-msgstr "Cherry CyMotion Master XPress"
-
-#: ../rules/base.xml.in.h:157
-msgid "Chicony Internet Keyboard"
-msgstr "Chicony-Internet-näppäimistö"
-
-#: ../rules/base.xml.in.h:158
-msgid "Chicony KB-9885"
-msgstr "Chicony KB-9885"
-
-#: ../rules/base.xml.in.h:159
-msgid "Chicony KU-0108"
-msgstr "Chicony KU-0108"
-
-#: ../rules/base.xml.in.h:160
-msgid "Chicony KU-0420"
-msgstr "Chicony KU-0420"
-
-#: ../rules/base.xml.in.h:161
-msgid "China"
-msgstr "Kiina"
-
-#: ../rules/base.xml.in.h:162
-msgid "Chn"
-msgstr "Chn"
-
-#: ../rules/base.xml.in.h:163
-msgid "Chuvash"
-msgstr "Chuvash"
-
-#: ../rules/base.xml.in.h:164
-msgid "Chuvash Latin"
-msgstr "Chuvash latinalainen"
-
-#: ../rules/base.xml.in.h:165
-msgid "Classic"
-msgstr "Perinteinen"
-
-#: ../rules/base.xml.in.h:166
-msgid "Classic Dvorak"
-msgstr "Perinteinen dvorak"
-
-#: ../rules/base.xml.in.h:167
-msgid "Classic, eliminate dead keys"
-msgstr "Perinteinen, ei kuolleita näppäimiä"
-
-#: ../rules/base.xml.in.h:168
-msgid "Classmate PC"
-msgstr "Classmate PC"
-
-#: ../rules/base.xml.in.h:169
-msgid "CloGaelach"
-msgstr "CloGaelach"
-
-#: ../rules/base.xml.in.h:170
-msgid "Colemak"
-msgstr "Colemak"
-
-#: ../rules/base.xml.in.h:171
-msgid "Compaq Easy Access Keyboard"
-msgstr "Compaq Easy Access -näppäimistö"
-
-#: ../rules/base.xml.in.h:172
-msgid "Compaq Internet Keyboard (13 keys)"
-msgstr "Compaq-Internet-näppäimistö (13 näppäintä)"
-
-#: ../rules/base.xml.in.h:173
-msgid "Compaq Internet Keyboard (18 keys)"
-msgstr "Compaq-Internet-näppäimistö (18 näppäintä)"
-
-#: ../rules/base.xml.in.h:174
-msgid "Compaq Internet Keyboard (7 keys)"
-msgstr "Compaq-Internet-näppäimistö (7 näppäintä)"
-
-#: ../rules/base.xml.in.h:175
-msgid "Compaq iPaq Keyboard"
-msgstr "Compaq iPaq-näppäimistö"
-
-#: ../rules/base.xml.in.h:176
-msgid "Compose key position"
-msgstr "Compose-näppäimen sijainti"
-
-#: ../rules/base.xml.in.h:177
-msgid "Congo, Democratic Republic of the"
-msgstr "Kongon tasavalta"
-
-#: ../rules/base.xml.in.h:178
-msgid "Control + Alt + Backspace"
-msgstr "Control + Alt + Backspace"
-
-#: ../rules/base.xml.in.h:179
-msgid "Control is mapped to Alt keys, Alt is mapped to Win keys"
-msgstr "Contol on liitetty Alt-näppäimiin, Alt Win-näppäimiin"
-
-#: ../rules/base.xml.in.h:180
-msgid "Control is mapped to Win keys (and the usual Ctrl keys)"
-msgstr "Contol on liitetty Win-näppäimiin (ja tavalliset Ctrl-näppämet)"
-
-#: ../rules/base.xml.in.h:181
-msgid "Creative Desktop Wireless 7000"
-msgstr "Creative Desktop Wireless 7000"
-
-#: ../rules/base.xml.in.h:182
-msgid "Crimean Tatar (Dobruca-1 Q)"
-msgstr "Krimintataari (Dobruca-1 Q)"
-
-#: ../rules/base.xml.in.h:183
-msgid "Crimean Tatar (Dobruca-2 Q)"
-msgstr "Krimintataari (Dobruca-2 Q)"
-
-#: ../rules/base.xml.in.h:184
-msgid "Crimean Tatar (Turkish Alt-Q)"
-msgstr "Krimintataari (turkkilainen Alt-Q)"
-
-#: ../rules/base.xml.in.h:185
-msgid "Crimean Tatar (Turkish F)"
-msgstr "Krimintataari (turkkilainen F)"
-
-#: ../rules/base.xml.in.h:186
-msgid "Crimean Tatar (Turkish Q)"
-msgstr "Krimintataari (turkkilainen Q)"
-
-#: ../rules/base.xml.in.h:187
-msgid "Croatia"
-msgstr "Kroatia"
-
-#: ../rules/base.xml.in.h:188
-msgid "Ctrl key position"
-msgstr "Ctrl-näppäimen sijainti"
-
-#: ../rules/base.xml.in.h:189
-msgid "Ctrl+Shift"
-msgstr "Ctrl+Shift"
-
-#: ../rules/base.xml.in.h:190
-msgid "Cyrillic"
-msgstr "Kyrillinen"
-
-#: ../rules/base.xml.in.h:191
-msgid "Cyrillic with guillemets"
-msgstr "Kyrillinen guillemot-lainausmerkeillä"
-
-#: ../rules/base.xml.in.h:192
-msgid "Cyrillic, Z and ZHE swapped"
-msgstr "Kyrillinen, Z ja ZHE vaihdettu"
-
-#: ../rules/base.xml.in.h:193
-msgid "Cze"
-msgstr "Cze"
-
-#: ../rules/base.xml.in.h:194
-msgid "Czechia"
-msgstr "TÅ¡ekki"
-
-#: ../rules/base.xml.in.h:195
-msgid "DOS"
-msgstr "DOS"
-
-#: ../rules/base.xml.in.h:196
-msgid "DTK2000"
-msgstr "DTK2000"
-
-#: ../rules/base.xml.in.h:197
-msgid "Dead acute"
-msgstr "Kuollut akuutti"
-
-#: ../rules/base.xml.in.h:198
-msgid "Dead grave acute"
-msgstr "Kuollut gravis"
-
-#: ../rules/base.xml.in.h:199
-msgid "Default numeric keypad keys"
-msgstr "Oletussormionäppäimet"
-
-#: ../rules/base.xml.in.h:200
-msgid "Dell"
-msgstr "Dell"
-
-#: ../rules/base.xml.in.h:201
-msgid "Dell 101-key PC"
-msgstr "Dell 101-näppäiminen PC"
-
-#: ../rules/base.xml.in.h:202
-msgid "Dell Laptop/notebook Inspiron 6xxx/8xxx"
-msgstr "Kannettava Dell Inspiron 6xxx/8xxx"
-
-#: ../rules/base.xml.in.h:203
-msgid "Dell Laptop/notebook Precision M series"
-msgstr "Kannettava Dell Precision M -sarja"
-
-#: ../rules/base.xml.in.h:204
-msgid "Dell Latitude series laptop"
-msgstr "Kannettava Dell Latitude-sarja"
-
-#: ../rules/base.xml.in.h:205
-msgid "Dell Precision M65"
-msgstr "Dell Precision M65"
-
-#: ../rules/base.xml.in.h:206
-msgid "Dell SK-8125"
-msgstr "Dell SK-8125"
-
-#: ../rules/base.xml.in.h:207
-msgid "Dell SK-8135"
-msgstr "Dell SK-8135"
-
-#: ../rules/base.xml.in.h:208
-msgid "Dell USB Multimedia Keyboard"
-msgstr "Dell USB -multimedianäppäimistö"
-
-#: ../rules/base.xml.in.h:209
-msgid "Denmark"
-msgstr "Tanska"
-
-#: ../rules/base.xml.in.h:210
-msgid "Deu"
-msgstr "Deu"
-
-#: ../rules/base.xml.in.h:211
-msgid "Dexxa Wireless Desktop Keyboard"
-msgstr "Dexxa-langaton työpöytänäppäimistö"
-
-#: ../rules/base.xml.in.h:212
-msgid "Diamond 9801 / 9802 series"
-msgstr "Diamond 9801/9802-sarja"
-
-#: ../rules/base.xml.in.h:213
-msgid "Dnk"
-msgstr "Dnk"
-
-#: ../rules/base.xml.in.h:214
-msgid "Dvorak"
-msgstr "Dvorak"
-
-#: ../rules/base.xml.in.h:215
-msgid "Dvorak (UK Punctuation)"
-msgstr "Dvorak (UK-pilkutus)"
-
-#: ../rules/base.xml.in.h:216
-msgid "Dvorak alternative international (no dead keys)"
-msgstr "Dvorak vaihtoehtoinen kansainvälinen (ei kuolleita näppäimiä)"
-
-#: ../rules/base.xml.in.h:217
-msgid "Dvorak international (with dead keys)"
-msgstr "Dvorak kansainvälinen (kuolleilla näppäimillä)"
-
-#: ../rules/base.xml.in.h:218
-msgid "Dvorak, Polish quotes on key 1"
-msgstr "Dvorak, puolalaiset lainausmerkit â€1â€-näppäimistä"
-
-#: ../rules/base.xml.in.h:219
-msgid "Dvorak, Polish quotes on quotemark key"
-msgstr "Dvorak, puolalaiset lainausmerkit lainausmerkkinäppäimestä"
-
-#: ../rules/base.xml.in.h:220
-msgid "E"
-msgstr "E"
-
-#: ../rules/base.xml.in.h:221
-msgid "Eastern"
-msgstr "Itäinen"
-
-#: ../rules/base.xml.in.h:222
-msgid "Eliminate dead keys"
-msgstr "Ei kuolleita näppäimiä"
-
-#: ../rules/base.xml.in.h:223
-msgid "Enable extra typographic characters"
-msgstr "Ota käyttöön ylimääräiset typografiset merkit"
-
-#: ../rules/base.xml.in.h:224
-msgid "English"
-msgstr "englanti"
-
-#: ../rules/base.xml.in.h:225
-msgid "English (USA International)"
-msgstr "Englantilainen (USA kansainvälinen)"
-
-#: ../rules/base.xml.in.h:226
-msgid "English (USA Macintosh)"
-msgstr "Englantilainen (USA Macintosh)"
-
-#: ../rules/base.xml.in.h:227
-msgid "Ennyah DKB-1008"
-msgstr "Ennyah DKB-1008"
-
-#: ../rules/base.xml.in.h:228
-msgid "Enter on keypad"
-msgstr "Enter sormiossa"
-
-#: ../rules/base.xml.in.h:229
-msgid "Epo"
-msgstr "Epo"
-
-#: ../rules/base.xml.in.h:230
-msgid "Ergonomic"
-msgstr "ergonominen"
-
-#: ../rules/base.xml.in.h:231
-msgid "Esp"
-msgstr "Esp"
-
-#: ../rules/base.xml.in.h:232
-msgid "Esperanto"
-msgstr "Esperanto"
-
-#: ../rules/base.xml.in.h:233
-msgid "Est"
-msgstr "Est"
-
-#: ../rules/base.xml.in.h:234
-msgid "Estonia"
-msgstr "Viro"
-
-#: ../rules/base.xml.in.h:235
-msgid "Eth"
-msgstr "Eth"
-
-#: ../rules/base.xml.in.h:236
-msgid "Ethiopia"
-msgstr "Etiopia"
-
-#: ../rules/base.xml.in.h:237
-msgid "Everex STEPnote"
-msgstr "Everex STEPnote"
-
-#: ../rules/base.xml.in.h:238
-msgid "Ewe"
-msgstr "Ewe"
-
-#: ../rules/base.xml.in.h:239
-msgid "Extended"
-msgstr "Laajennettu"
-
-#: ../rules/base.xml.in.h:240
-msgid "Extended - Winkeys"
-msgstr "Laajennettu - Win-näppäimet"
-
-#: ../rules/base.xml.in.h:241
-msgid "Extended Backslash"
-msgstr "Laajennettu kenoviiva"
-
-#: ../rules/base.xml.in.h:242
-msgid "F-letter (F) variant"
-msgstr "F-kirjainmuunnos (F)"
-
-#: ../rules/base.xml.in.h:243
-msgid "FL90"
-msgstr "FL90"
-
-#: ../rules/base.xml.in.h:244
-msgid "Faroe Islands"
-msgstr "Färsaaret"
-
-#: ../rules/base.xml.in.h:245
-msgid "Fin"
-msgstr "Fin"
-
-#: ../rules/base.xml.in.h:246
-msgid "Finland"
-msgstr "Suomi"
-
-#. This assumes the KP_ abstract symbols are actually useful for some apps
-#. The description needs to be rewritten
-#: ../rules/base.xml.in.h:249
-msgid "Four-level key with abstract separators"
-msgstr "Neljännen tason näppäin abstrakteilla erottimilla"
-
-#: ../rules/base.xml.in.h:250
-msgid "Four-level key with comma"
-msgstr "Neljännen tason näppäin pilkulla"
-
-#: ../rules/base.xml.in.h:251
-msgid "Four-level key with dot"
-msgstr "Neljännen tason näppäin pisteellä"
-
-#: ../rules/base.xml.in.h:252
-msgid "Four-level key with dot, latin-9 restriction"
-msgstr "Neljännen tason näppäin pisteellä, latin-9-rajoituksella"
-
-# Wikipediasta katsoin, että momayyez on persialainen desimaalierotin, joka näyttää kauttaviivalta
-#: ../rules/base.xml.in.h:253
-msgid "Four-level key with momayyez"
-msgstr "Neljännen tason näppäin persialaisella desimaalierottimella (momayyez)"
-
-#: ../rules/base.xml.in.h:254
-msgid "Fra"
-msgstr "Fra"
-
-#: ../rules/base.xml.in.h:255
-msgid "France"
-msgstr "Ranska"
-
-#: ../rules/base.xml.in.h:256
-msgid "Français (France Alternative)"
-msgstr "Ranskalainen (Ranska vaihtoehtoinen)"
-
-#: ../rules/base.xml.in.h:257
-msgid "French"
-msgstr "Ranskalainen"
-
-#: ../rules/base.xml.in.h:258
-msgid "French (Macintosh)"
-msgstr "Ranskalainen (Macintosh)"
-
-#: ../rules/base.xml.in.h:259
-msgid "French (legacy)"
-msgstr "Ranskalainen (vanha)"
-
-#: ../rules/base.xml.in.h:260
-msgid "French Dvorak"
-msgstr "Ranskalainen dvorak"
-
-#: ../rules/base.xml.in.h:261
-msgid "French, Sun dead keys"
-msgstr "Ranskalainen, Sunin kuolleet näppäimet"
-
-#: ../rules/base.xml.in.h:262
-msgid "French, eliminate dead keys"
-msgstr "Ranskalainen, ei kuolleita näppäimiä"
-
-#: ../rules/base.xml.in.h:263
-msgid "Fro"
-msgstr "Fro"
-
-#: ../rules/base.xml.in.h:264
-msgid "Fujitsu-Siemens Computers AMILO laptop"
-msgstr "Fujitsu-Siemens Computers AMILO-kannettava"
-
-#: ../rules/base.xml.in.h:265
-msgid "Fula"
-msgstr "Fula"
-
-#: ../rules/base.xml.in.h:266
-msgid "GBr"
-msgstr "GBr"
-
-#: ../rules/base.xml.in.h:267
-msgid "GILLBT"
-msgstr "GILLBT"
-
-#: ../rules/base.xml.in.h:268
-msgid "Ga"
-msgstr "Ga"
-
-#: ../rules/base.xml.in.h:269
-msgid "Generic 101-key PC"
-msgstr "Yleinen 101-näppäiminen PC"
-
-#: ../rules/base.xml.in.h:270
-msgid "Generic 102-key (Intl) PC"
-msgstr "Yleinen 102-näppäiminen (kansainvälinen) PC"
-
-#: ../rules/base.xml.in.h:271
-msgid "Generic 104-key PC"
-msgstr "Yleinen 104-näppäiminen PC"
-
-#: ../rules/base.xml.in.h:272
-msgid "Generic 105-key (Intl) PC"
-msgstr "Yleinen 105-näppäiminen (kansainvälinen) PC"
-
-#: ../rules/base.xml.in.h:273
-msgid "Genius Comfy KB-12e"
-msgstr "Genius Comfy KB-21e"
-
-#: ../rules/base.xml.in.h:274
-msgid "Genius Comfy KB-16M / Genius MM Keyboard KWD-910"
-msgstr "Genius Comfy KB-16M / Genius MM-näppäimistö KWD-910"
-
-#: ../rules/base.xml.in.h:275
-msgid "Genius Comfy KB-21e-Scroll"
-msgstr "Genius Comfy KB-21e-rulla"
-
-#: ../rules/base.xml.in.h:276
-msgid "Genius KB-19e NB"
-msgstr "Genius KB-19e NB"
-
-#: ../rules/base.xml.in.h:277
-msgid "Genius KKB-2050HS"
-msgstr "Genius KKB-2050HS"
-
-#: ../rules/base.xml.in.h:278
-msgid "Geo"
-msgstr "Geo"
-
-#: ../rules/base.xml.in.h:279
-msgid "Georgia"
-msgstr "Georgia"
-
-#: ../rules/base.xml.in.h:280
-msgid "Georgian"
-msgstr "Georgia"
-
-#: ../rules/base.xml.in.h:281
-msgid "Georgian AZERTY Tskapo"
-msgstr "Georgian AZERTY Tskapo"
-
-#: ../rules/base.xml.in.h:282
-msgid "German (Macintosh)"
-msgstr "Saksalainen (Macintosh)"
-
-#: ../rules/base.xml.in.h:283
-msgid "German, Sun dead keys"
-msgstr "Saksalainen, Sunin kuolleet näppäimet"
-
-#: ../rules/base.xml.in.h:284
-msgid "German, eliminate dead keys"
-msgstr "Saksalainen, ei kuolleita näppäimiä"
-
-#: ../rules/base.xml.in.h:285
-msgid "Germany"
-msgstr "Saksa"
-
-#: ../rules/base.xml.in.h:286
-msgid "Gha"
-msgstr "Gha"
-
-#: ../rules/base.xml.in.h:287
-msgid "Ghana"
-msgstr "Ghana"
-
-#: ../rules/base.xml.in.h:288
-msgid "Gin"
-msgstr "Gin"
-
-#: ../rules/base.xml.in.h:289
-msgid "Grc"
-msgstr "Grc"
-
-#: ../rules/base.xml.in.h:290
-msgid "Greece"
-msgstr "Kreikka"
-
-#: ../rules/base.xml.in.h:291
-msgid "Guinea"
-msgstr "Guinea"
-
-#: ../rules/base.xml.in.h:292
-msgid "Gujarati"
-msgstr "Gujarati"
-
-#: ../rules/base.xml.in.h:293
-msgid "Gurmukhi"
-msgstr "Gurmukhi"
-
-#: ../rules/base.xml.in.h:294
-msgid "Gurmukhi Jhelum"
-msgstr "Gurmukhi Jhelum"
-
-# Lienee tuotemerkki
-#: ../rules/base.xml.in.h:295
-msgid "Gyration"
-msgstr "Gyration"
-
-#: ../rules/base.xml.in.h:296
-msgid "Happy Hacking Keyboard"
-msgstr "Happy Hacking -näppäimistö"
-
-#: ../rules/base.xml.in.h:297
-msgid "Happy Hacking Keyboard for Mac"
-msgstr "Happy Hacking -näppäimistö, Mac-versio"
-
-#: ../rules/base.xml.in.h:298
-msgid "Hausa"
-msgstr "Hausa"
-
-#: ../rules/base.xml.in.h:299
-msgid "Hewlett-Packard Internet Keyboard"
-msgstr "Hewlett-Packard-Internet-näppäimistö"
-
-#: ../rules/base.xml.in.h:300
-msgid "Hewlett-Packard Mini 110 Notebook"
-msgstr "Hewlett-Packard Mini 110 Notebook"
-
-#: ../rules/base.xml.in.h:301
-msgid "Hewlett-Packard Omnibook 500 FA"
-msgstr "Hewlett-Packard Omnibook 500 FA"
-
-#: ../rules/base.xml.in.h:302
-msgid "Hewlett-Packard Omnibook 5xx"
-msgstr "Hewlett-Packard Omnibook 5xx"
-
-#: ../rules/base.xml.in.h:303
-msgid "Hewlett-Packard Omnibook 6000/6100"
-msgstr "Hewlett-Packard Omnibook 6000/6100"
-
-#: ../rules/base.xml.in.h:304
-msgid "Hewlett-Packard Omnibook XE3 GC"
-msgstr "Hewlett-Packard Omnibook XE3 GC"
-
-#: ../rules/base.xml.in.h:305
-msgid "Hewlett-Packard Omnibook XE3 GF"
-msgstr "Hewlett-Packard Omnibook XE3 GF"
-
-#: ../rules/base.xml.in.h:306
-msgid "Hewlett-Packard Omnibook XT1000"
-msgstr "Hewlett-Packard Omnibook XT1000"
-
-#: ../rules/base.xml.in.h:307
-msgid "Hewlett-Packard Pavilion ZT11xx"
-msgstr "Hewlett-Packard Pavilion ZT11xx"
-
-#: ../rules/base.xml.in.h:308
-msgid "Hewlett-Packard Pavilion dv5"
-msgstr "Hewlett-Packard Pavilion dv5"
-
-#: ../rules/base.xml.in.h:309
-msgid "Hewlett-Packard SK-250x Multimedia Keyboard"
-msgstr "Hewlett-Packard SK-250x-multimedianäppäimistö"
-
-#: ../rules/base.xml.in.h:310
-msgid "Hewlett-Packard nx9020"
-msgstr "Hewlett-Packard nx9020"
-
-#: ../rules/base.xml.in.h:311
-msgid "Hexadecimal"
-msgstr "Heksadesimaali"
-
-#: ../rules/base.xml.in.h:312
-msgid "Hindi Bolnagri"
-msgstr "Hindi Bolnagri"
-
-#: ../rules/base.xml.in.h:313
-msgid "Hindi Wx"
-msgstr "Hindi Wx"
-
-#: ../rules/base.xml.in.h:314
-msgid "Homophonic"
-msgstr "Homofoninen"
-
-#: ../rules/base.xml.in.h:315
-msgid "Honeywell Euroboard"
-msgstr "Honeywell Euroboard"
-
-#: ../rules/base.xml.in.h:316
-msgid "Hrv"
-msgstr "Hrv"
-
-#: ../rules/base.xml.in.h:317
-msgid "Hun"
-msgstr "Hun"
-
-#: ../rules/base.xml.in.h:318
-msgid "Hungary"
-msgstr "Unkari"
-
-#: ../rules/base.xml.in.h:319
-msgid "Hyper is mapped to Win-keys"
-msgstr "Hyper tulee Win-näppäimistä"
-
-#: ../rules/base.xml.in.h:320
-msgid "IBM (LST 1205-92)"
-msgstr "IMB (LST 1205-92)"
-
-#: ../rules/base.xml.in.h:321
-msgid "IBM Rapid Access"
-msgstr "IBM Rapid Access"
-
-#: ../rules/base.xml.in.h:322
-msgid "IBM Rapid Access II"
-msgstr "IBM Rapid Access II"
-
-#: ../rules/base.xml.in.h:323
-msgid "IBM Space Saver"
-msgstr "IBM Space Saver"
-
-#: ../rules/base.xml.in.h:324
-msgid "IBM ThinkPad 560Z/600/600E/A22E"
-msgstr "IBM ThinkPad 560Z/600/600E/A22E"
-
-#: ../rules/base.xml.in.h:325
-msgid "IBM ThinkPad R60/T60/R61/T61"
-msgstr "IBM ThinkPad R60/T60/R61/T61"
-
-#: ../rules/base.xml.in.h:326
-msgid "IBM ThinkPad Z60m/Z60t/Z61m/Z61t"
-msgstr "IBM ThinkPad Z60m/Z60t/Z61m/Z61t"
-
-#: ../rules/base.xml.in.h:327
-msgid "ISO Alternate"
-msgstr "ISO vaihtoehtoinen"
-
-#: ../rules/base.xml.in.h:328
-msgid "Iceland"
-msgstr "Islanti"
-
-#: ../rules/base.xml.in.h:329
-msgid "Igbo"
-msgstr "Igbo"
-
-#: ../rules/base.xml.in.h:330
-msgid "Include dead tilde"
-msgstr "Sisällytä kuollut tilde"
-
-#: ../rules/base.xml.in.h:331
-msgid "Ind"
-msgstr "Ind"
-
-#: ../rules/base.xml.in.h:332
-msgid "India"
-msgstr "Intia"
-
-#: ../rules/base.xml.in.h:333
-msgid "International (AltGr dead keys)"
-msgstr "Kansainvälinen (AltGr -kuolleet näppäimet)"
-
-#: ../rules/base.xml.in.h:334
-msgid "International (with dead keys)"
-msgstr "Kansainvälinen (ilman kuolleita näppäimiä)"
-
-#: ../rules/base.xml.in.h:335
-msgid "Inuktitut"
-msgstr "Inuktitut"
-
-#: ../rules/base.xml.in.h:336 ../rules/base.extras.xml.in.h:8
-msgid "Iran"
-msgstr "Iran"
-
-#: ../rules/base.xml.in.h:337
-msgid "Iraq"
-msgstr "Irak"
-
-#: ../rules/base.xml.in.h:338
-msgid "Ireland"
-msgstr "Irlanti"
-
-#: ../rules/base.xml.in.h:339
-msgid "Irl"
-msgstr "Irl"
-
-#: ../rules/base.xml.in.h:340
-msgid "Irn"
-msgstr "Irn"
-
-#: ../rules/base.xml.in.h:341
-msgid "Irq"
-msgstr "Irq"
-
-#: ../rules/base.xml.in.h:342
-msgid "Isl"
-msgstr "Isl"
-
-#: ../rules/base.xml.in.h:343
-msgid "Isr"
-msgstr "Isr"
-
-#: ../rules/base.xml.in.h:344
-msgid "Israel"
-msgstr "Israel"
-
-#: ../rules/base.xml.in.h:345
-msgid "Ita"
-msgstr "Ita"
-
-#: ../rules/base.xml.in.h:346
-msgid "Italy"
-msgstr "Italia"
-
-#: ../rules/base.xml.in.h:347
-msgid "Japan"
-msgstr "Japani"
-
-#: ../rules/base.xml.in.h:348
-msgid "Japan (PC-98xx Series)"
-msgstr "Japani (PC-98xx-sarja)"
-
-#: ../rules/base.xml.in.h:349
-msgid "Japanese keyboard options"
-msgstr "japanilaisen näppäimistön valinnat"
-
-#: ../rules/base.xml.in.h:350
-msgid "Jpn"
-msgstr "Jpn"
-
-#: ../rules/base.xml.in.h:351
-msgid "Kalmyk"
-msgstr "kalmukki"
-
-#: ../rules/base.xml.in.h:352
-msgid "Kana"
-msgstr "Kana"
-
-#: ../rules/base.xml.in.h:353
-msgid "Kana Lock key is locking"
-msgstr "Kana, lukitusnäppäin lukitseva"
-
-#: ../rules/base.xml.in.h:354
-msgid "Kannada"
-msgstr "Kannada"
-
-#: ../rules/base.xml.in.h:355
-msgid "Kashubian"
-msgstr "Kashubia"
-
-#: ../rules/base.xml.in.h:356
-msgid "Kaz"
-msgstr "Kaz"
-
-#: ../rules/base.xml.in.h:357
-msgid "Kazakh with Russian"
-msgstr "Kazakstan venäjän kanssa"
-
-#: ../rules/base.xml.in.h:358
-msgid "Kazakhstan"
-msgstr "Kazakstan"
-
-#: ../rules/base.xml.in.h:359
-msgid "Ken"
-msgstr "Ken"
-
-#: ../rules/base.xml.in.h:360
-msgid "Kenya"
-msgstr "Kenia"
-
-#: ../rules/base.xml.in.h:361
-msgid "Key sequence to kill the X server"
-msgstr "Näppäinyhdistelmä, joka tappaa X-palvelimen"
-
-#: ../rules/base.xml.in.h:362
-msgid "Key to choose 3rd level"
-msgstr "Kolmannen tason valintanäppäin"
-
-#: ../rules/base.xml.in.h:363
-msgid "Key to choose 5th level"
-msgstr "Viidennen tason valintanäppäin"
-
-#: ../rules/base.xml.in.h:364
-msgid "Key(s) to change layout"
-msgstr "Asettelunvaihtonäppäimet"
-
-#: ../rules/base.xml.in.h:365
-msgid "Keytronic FlexPro"
-msgstr "Keytronic FlexPro"
-
-#: ../rules/base.xml.in.h:366
-msgid "Kgz"
-msgstr "Kgz"
-
-#: ../rules/base.xml.in.h:367
-msgid "Khm"
-msgstr "Khm"
-
-#: ../rules/base.xml.in.h:368
-msgid "Kikuyu"
-msgstr "Kikuju"
-
-#: ../rules/base.xml.in.h:369
-msgid "Kinesis"
-msgstr "Kinesis"
-
-#: ../rules/base.xml.in.h:370
-msgid "Komi"
-msgstr "Komi"
-
-#: ../rules/base.xml.in.h:371
-msgid "Kor"
-msgstr "Kor"
-
-#: ../rules/base.xml.in.h:372
-msgid "Korea, Republic of"
-msgstr "Etelä-Korea"
-
-#: ../rules/base.xml.in.h:373
-msgid "Ktunaxa"
-msgstr "Ktunaxa"
-
-#: ../rules/base.xml.in.h:374
-msgid "Kurdish, (F)"
-msgstr "Kurdi, (F)"
-
-#: ../rules/base.xml.in.h:375
-msgid "Kurdish, Arabic-Latin"
-msgstr "Kurdi, arabia-latinalainen"
-
-#: ../rules/base.xml.in.h:376
-msgid "Kurdish, Latin Alt-Q"
-msgstr "Kurdi, latinalainen Alt-Q"
-
-#: ../rules/base.xml.in.h:377
-msgid "Kurdish, Latin Q"
-msgstr "Kurdi, latinalainen Q"
-
-#: ../rules/base.xml.in.h:378
-msgid "Kyrgyzstan"
-msgstr "Kirgisia"
-
-#: ../rules/base.xml.in.h:379
-msgid "LAm"
-msgstr "LAm"
-
-#: ../rules/base.xml.in.h:380
-msgid "LEKP"
-msgstr "LEKP"
-
-#: ../rules/base.xml.in.h:381
-msgid "LEKPa"
-msgstr "LEKPa"
-
-#: ../rules/base.xml.in.h:382
-msgid "Lao"
-msgstr "Lao"
-
-#: ../rules/base.xml.in.h:383
-msgid "Laos"
-msgstr "Laos"
-
-#: ../rules/base.xml.in.h:384
-msgid "Laptop/notebook Compaq (eg. Armada) Laptop Keyboard"
-msgstr "Kannettava Compaq (esim. Armada) kannettavan näppäimistö "
-
-#: ../rules/base.xml.in.h:385
-msgid "Laptop/notebook Compaq (eg. Presario) Internet Keyboard"
-msgstr "Kannettava Compaq (esim. Armada) Internet-näppäimistö "
-
-#: ../rules/base.xml.in.h:386
-msgid "Laptop/notebook eMachines m68xx"
-msgstr "Kannettava eMachines m68xx"
-
-#: ../rules/base.xml.in.h:387
-msgid "Latin"
-msgstr "Latinalainen"
-
-#: ../rules/base.xml.in.h:388
-msgid "Latin American"
-msgstr "Latinalainen amerikka"
-
-#: ../rules/base.xml.in.h:389
-msgid "Latin Unicode"
-msgstr "Latinalainen Unicode"
-
-#: ../rules/base.xml.in.h:390
-msgid "Latin Unicode qwerty"
-msgstr "Latinalainen Unicode-qwerty"
-
-#: ../rules/base.xml.in.h:391
-msgid "Latin qwerty"
-msgstr "Latinalainen qwerty"
-
-#: ../rules/base.xml.in.h:392
-msgid "Latin unicode"
-msgstr "Latinalainen Unicode"
-
-#: ../rules/base.xml.in.h:393
-msgid "Latin unicode qwerty"
-msgstr "Latinalainen Unicode-qwerty"
-
-#: ../rules/base.xml.in.h:394
-msgid "Latin with guillemets"
-msgstr "Latinalainen guillemot-lainausmerkeillä"
-
-#: ../rules/base.xml.in.h:395
-msgid "Latvia"
-msgstr "Latvia"
-
-#: ../rules/base.xml.in.h:396
-msgid "Layout toggle on multiply/divide key"
-msgstr "Ryhmän vaihto kerto/jako-näppäimellä"
-
-#: ../rules/base.xml.in.h:397
-msgid "Left Alt"
-msgstr "Vasen Alt"
-
-#: ../rules/base.xml.in.h:398
-msgid "Left Alt (while pressed)"
-msgstr "Vasen Alt-näppäin (painettaessa)"
-
-#: ../rules/base.xml.in.h:399
-msgid "Left Alt is swapped with Left Win"
-msgstr "Vaihda vasen Alt-näppän vasemman Win-näppäimen kanssa"
-
-#: ../rules/base.xml.in.h:400
-msgid "Left Ctrl"
-msgstr "Vasen Ctrl"
-
-#: ../rules/base.xml.in.h:401
-msgid "Left Ctrl (to first layout), Right Ctrl (to last layout)"
-msgstr "Vasen ctrl (ensimmäiselle asettelulle), Oikea Ctrl (viimeiselle asettelulle)"
-
-#: ../rules/base.xml.in.h:402
-msgid "Left Ctrl+Left Shift"
-msgstr "Vasen Ctrl+Vasen Shift"
-
-#: ../rules/base.xml.in.h:403
-msgid "Left Shift"
-msgstr "Vasen Shift"
-
-#: ../rules/base.xml.in.h:404
-msgid "Left Win"
-msgstr "Vasen Win"
-
-#: ../rules/base.xml.in.h:405
-msgid "Left Win (to first layout), Right Win/Menu (to last layout)"
-msgstr "Vasen Win (ensimmäiselle asettelulle), Oikea Win/valikko (viimeiselle asettelulle)"
-
-#: ../rules/base.xml.in.h:406
-msgid "Left Win (while pressed)"
-msgstr "Vasen Win (painettaessa)"
-
-#: ../rules/base.xml.in.h:407
-msgid "Left Win chooses 5th level, locks when pressed together with another 5th-level-chooser"
-msgstr "Vasen Win valitsee 5. tason, lukitsee kun painetaan yhdessä toisen 5. tason valitsimen kanssa"
-
-#: ../rules/base.xml.in.h:408
-msgid "Left Win chooses 5th level, locks when pressed together with another 5th-level-chooser, one press releases the lock"
-msgstr "Vasen Win valitsee 5. tason, lukitsee kun painetaan yhdessä toisen 5. tason valitsimen kanssa, yksi painallus vapauttaa lukon"
-
-#: ../rules/base.xml.in.h:409
-msgid "Left hand"
-msgstr "Vasenkätinen"
-
-#: ../rules/base.xml.in.h:410
-msgid "Left handed Dvorak"
-msgstr "Vasenkätinen dvorak"
-
-#: ../rules/base.xml.in.h:411
-msgid "Legacy"
-msgstr "Perinteinen"
-
-#: ../rules/base.xml.in.h:412
-msgid "Legacy Wang 724"
-msgstr "Perinteinen Wang 724"
-
-#. Actually, with KP_SEPARATOR, as the old keypad(comma)
-#: ../rules/base.xml.in.h:414
-msgid "Legacy key with comma"
-msgstr "Perinteinen näppäin pilkulla"
-
-#: ../rules/base.xml.in.h:415
-msgid "Legacy key with dot"
-msgstr "Perinteinen näppäin pisteellä"
-
-#: ../rules/base.xml.in.h:416
-msgid "Lithuania"
-msgstr "Liettua"
-
-#: ../rules/base.xml.in.h:417
-msgid "Lka"
-msgstr "Lka"
-
-#: ../rules/base.xml.in.h:418
-msgid "Logitech Access Keyboard"
-msgstr "Logitech Access Keyboard"
-
-#: ../rules/base.xml.in.h:419
-msgid "Logitech Cordless Desktop"
-msgstr "Logitech Cordless Desktop"
-
-#: ../rules/base.xml.in.h:420
-msgid "Logitech Cordless Desktop (alternate option)"
-msgstr "Logitech Cordless Desktop (vaihtoehtoinen)"
-
-#: ../rules/base.xml.in.h:421
-msgid "Logitech Cordless Desktop EX110"
-msgstr "Logitech Cordless Desktop EX110"
-
-#: ../rules/base.xml.in.h:422
-msgid "Logitech Cordless Desktop LX-300"
-msgstr "Logitech Cordless Desktop LX-300"
-
-#: ../rules/base.xml.in.h:423
-msgid "Logitech Cordless Desktop Navigator"
-msgstr "Logitech Cordless Desktop Navigator"
-
-#: ../rules/base.xml.in.h:424
-msgid "Logitech Cordless Desktop Optical"
-msgstr "Logitech Cordless Desktop Optical"
-
-#: ../rules/base.xml.in.h:425
-msgid "Logitech Cordless Desktop Pro (alternate option 2)"
-msgstr "Logitech Cordless Desktop Pro (vaihtoehtoinen 2)"
-
-#: ../rules/base.xml.in.h:426
-msgid "Logitech Cordless Desktop iTouch"
-msgstr "Logitech Cordless Desktop iTouch"
-
-#: ../rules/base.xml.in.h:427
-msgid "Logitech Cordless Freedom/Desktop Navigator"
-msgstr "Logitech Cordless Freedom/Desktop Navigator"
-
-#: ../rules/base.xml.in.h:428
-msgid "Logitech G15 extra keys via G15daemon"
-msgstr "Logitech G15 -lisänäppäimet G15daemon-ohjelmasta"
-
-#: ../rules/base.xml.in.h:429
-msgid "Logitech Generic Keyboard"
-msgstr "Logitech-yleisnäppäimistö"
-
-#: ../rules/base.xml.in.h:430
-msgid "Logitech Internet 350 Keyboard"
-msgstr "Logitech Internet 350 -näppämistö"
-
-#: ../rules/base.xml.in.h:431
-msgid "Logitech Internet Keyboard"
-msgstr "Logitech Internet -näppämistö"
-
-#: ../rules/base.xml.in.h:432
-msgid "Logitech Internet Navigator Keyboard"
-msgstr "Logitech Internet Navigator -näppämistö"
-
-#: ../rules/base.xml.in.h:433
-msgid "Logitech Media Elite Keyboard"
-msgstr "Logitech Media Elite -näppäimistö"
-
-#: ../rules/base.xml.in.h:434
-msgid "Logitech Ultra-X Cordless Media Desktop Keyboard"
-msgstr "Logitech Ultra-X Cordless Media Desktop -näppäimistö"
-
-#: ../rules/base.xml.in.h:435
-msgid "Logitech Ultra-X Keyboard"
-msgstr "Logitech Ultra-X-näppäimistö"
-
-#: ../rules/base.xml.in.h:436
-msgid "Logitech diNovo Edge Keyboard"
-msgstr "Logitech diNovo Edge -näppäimistö"
-
-#: ../rules/base.xml.in.h:437
-msgid "Logitech diNovo Keyboard"
-msgstr "Logitech diNovo-näppäimistö"
-
-#: ../rules/base.xml.in.h:438
-msgid "Logitech iTouch"
-msgstr "Logitech iTouch"
-
-#: ../rules/base.xml.in.h:439
-msgid "Logitech iTouch Cordless Keyboard (model Y-RB6)"
-msgstr "Logitech iTouch Cordless Keyboard (malli Y-RB6)"
-
-#: ../rules/base.xml.in.h:440
-msgid "Logitech iTouch Internet Navigator Keyboard SE"
-msgstr "Logitech iTouch Internet Navigator Keyboard SE"
-
-#: ../rules/base.xml.in.h:441
-msgid "Logitech iTouch Internet Navigator Keyboard SE (USB)"
-msgstr "Logitech iTouch Internet Navigator Keyboard SE (USB)"
-
-#: ../rules/base.xml.in.h:442
-msgid "Lower Sorbian"
-msgstr "alasorbi"
-
-#: ../rules/base.xml.in.h:443
-msgid "Lower Sorbian (qwertz)"
-msgstr "alasorbi (qwertz)"
-
-#: ../rules/base.xml.in.h:444
-msgid "Ltu"
-msgstr "Ltu"
-
-#: ../rules/base.xml.in.h:445
-msgid "Lva"
-msgstr "Lva"
-
-#: ../rules/base.xml.in.h:446
-msgid "MESS"
-msgstr "MESS"
-
-#: ../rules/base.xml.in.h:447
-msgid "MNE"
-msgstr "MNE"
-
-#: ../rules/base.xml.in.h:448
-msgid "MacBook/MacBook Pro"
-msgstr "MacBook/MacBook Pro"
-
-#: ../rules/base.xml.in.h:449
-msgid "MacBook/MacBook Pro (Intl)"
-msgstr "MacBook/MacBook Pro (kansainvälinen)"
-
-#: ../rules/base.xml.in.h:450
-msgid "Macedonia"
-msgstr "Makedonia"
-
-#: ../rules/base.xml.in.h:451
-msgid "Macintosh"
-msgstr "Macintosh"
-
-#: ../rules/base.xml.in.h:452
-msgid "Macintosh (International)"
-msgstr "Macintosh (kansainvälinen)"
-
-#: ../rules/base.xml.in.h:453
-msgid "Macintosh Old"
-msgstr "Macintosh vanha"
-
-#: ../rules/base.xml.in.h:454
-msgid "Macintosh, Sun dead keys"
-msgstr "Macintosh, Sunin kuolleet näppäimet"
-
-#: ../rules/base.xml.in.h:455
-msgid "Macintosh, eliminate dead keys"
-msgstr "Macintosh, ei kuolleita näppäimiä"
-
-#: ../rules/base.xml.in.h:456
-msgid "Make Caps Lock an additional Backspace"
-msgstr "Tee Caps Lockista ylimääräinen askelpalautin"
-
-#: ../rules/base.xml.in.h:457
-msgid "Make Caps Lock an additional Ctrl"
-msgstr "Tee Caps Lockista ylimääräinen Ctrl"
-
-#: ../rules/base.xml.in.h:458
-msgid "Make Caps Lock an additional ESC"
-msgstr "Tee Caps Lockista ylimääräinen Esc"
-
-#: ../rules/base.xml.in.h:459
-msgid "Make Caps Lock an additional Hyper"
-msgstr "Tee Caps Lockista ylimääräinen Hyper"
-
-#: ../rules/base.xml.in.h:460
-msgid "Make Caps Lock an additional Num Lock"
-msgstr "Tee Caps Lockista ylimääräinen Num Lock"
-
-#: ../rules/base.xml.in.h:461
-msgid "Make Caps Lock an additional Super"
-msgstr "Tee Caps Lockista ylimääräinen Super"
-
-#: ../rules/base.xml.in.h:462
-msgid "Malayalam"
-msgstr "Malayalam"
-
-#: ../rules/base.xml.in.h:463
-msgid "Malayalam Lalitha"
-msgstr "Malayalam Lalitha"
-
-#: ../rules/base.xml.in.h:464
-msgid "Maldives"
-msgstr "Malediivit"
-
-#: ../rules/base.xml.in.h:465
-msgid "Mali"
-msgstr "Mali"
-
-#: ../rules/base.xml.in.h:466
-msgid "Malta"
-msgstr "Malta"
-
-#: ../rules/base.xml.in.h:467
-msgid "Maltese keyboard with US layout"
-msgstr "Maltalainen näppäimistö US-asettelulla"
-
-#: ../rules/base.xml.in.h:468
-msgid "Mao"
-msgstr "Mao"
-
-#: ../rules/base.xml.in.h:469
-msgid "Maori"
-msgstr "Maori"
-
-#: ../rules/base.xml.in.h:470
-msgid "Mdv"
-msgstr "Mdv"
-
-#: ../rules/base.xml.in.h:471
-msgid "Memorex MX1998"
-msgstr "Memorex MX1998"
-
-#: ../rules/base.xml.in.h:472
-msgid "Memorex MX2500 EZ-Access Keyboard"
-msgstr "Memorex MX2500 EZ-Access-näppäimistö"
-
-#: ../rules/base.xml.in.h:473
-msgid "Memorex MX2750"
-msgstr "Memorex MX2750"
-
-#: ../rules/base.xml.in.h:474
-msgid "Menu"
-msgstr "Valikko"
-
-#: ../rules/base.xml.in.h:475
-msgid "Meta is mapped to Left Win"
-msgstr "Meta tulee vasemmasta Win-näppäimestä"
-
-#: ../rules/base.xml.in.h:476
-msgid "Meta is mapped to Win keys"
-msgstr "Meta tulee Win-näppäimistä"
-
-#: ../rules/base.xml.in.h:477
-msgid "Microsoft Comfort Curve Keyboard 2000"
-msgstr "Microsoft Comfort Curve 2000 -näppäimistö"
-
-#: ../rules/base.xml.in.h:478
-msgid "Microsoft Internet Keyboard"
-msgstr "Microsoft-Internet-näppäimistö"
-
-#: ../rules/base.xml.in.h:479
-msgid "Microsoft Internet Keyboard Pro, Swedish"
-msgstr "Microsoft-Internet-näppäimistö Pro, ruotsalainen"
-
-#: ../rules/base.xml.in.h:480
-msgid "Microsoft Natural"
-msgstr "Microsoft Natural"
-
-#: ../rules/base.xml.in.h:481
-msgid "Microsoft Natural Keyboard Elite"
-msgstr "Microsoft Natural-näppäimistö Elite"
-
-#: ../rules/base.xml.in.h:482
-msgid "Microsoft Natural Keyboard Pro / Microsoft Internet Keyboard Pro"
-msgstr "Microsoft Natural-näppäimistö Pro / Microsoft-Internet-näppäimistö Pro"
-
-#: ../rules/base.xml.in.h:483
-msgid "Microsoft Natural Keyboard Pro OEM"
-msgstr "Microsoft Natural-näppäimistö Pro OEM"
-
-#: ../rules/base.xml.in.h:484
-msgid "Microsoft Natural Keyboard Pro USB / Microsoft Internet Keyboard Pro"
-msgstr "Microsoft Natural-näppäimistö Pro USB / Microsoft-Internet-näppäimistö Pro"
-
-#: ../rules/base.xml.in.h:485
-msgid "Microsoft Natural Wireless Ergonomic Keyboard 7000"
-msgstr "Microsoft Natural Wireless Ergonomic -näppäimistö 7000"
-
-#: ../rules/base.xml.in.h:486
-msgid "Microsoft Office Keyboard"
-msgstr "Microsoft Office-näppäimistö"
-
-#: ../rules/base.xml.in.h:487
-msgid "Microsoft Wireless Multimedia Keyboard 1.0A"
-msgstr "Microsoft-langaton multimedianäppämistö 1.0A"
-
-#: ../rules/base.xml.in.h:488
-msgid "Miscellaneous compatibility options"
-msgstr "Sekalaisia yhteensopivuusvalintoja"
-
-#: ../rules/base.xml.in.h:489
-msgid "Mkd"
-msgstr "Mkd"
-
-#: ../rules/base.xml.in.h:490
-msgid "Mli"
-msgstr "Mli"
-
-#: ../rules/base.xml.in.h:491
-msgid "Mlt"
-msgstr "Mlt"
-
-#: ../rules/base.xml.in.h:492
-msgid "Mmr"
-msgstr "Mmr"
-
-#: ../rules/base.xml.in.h:493
-msgid "Mng"
-msgstr "Mng"
-
-#: ../rules/base.xml.in.h:494
-msgid "Mongolia"
-msgstr "Mongolia"
-
-#: ../rules/base.xml.in.h:495
-msgid "Montenegro"
-msgstr "Montenegro"
-
-#: ../rules/base.xml.in.h:496
-msgid "Morocco"
-msgstr "Marokko"
-
-#: ../rules/base.xml.in.h:497
-msgid "Multilingual"
-msgstr "Monikielinen"
-
-#: ../rules/base.xml.in.h:498
-msgid "Multilingual, first part"
-msgstr "Monikielinen, ensimmäinen osa"
-
-#: ../rules/base.xml.in.h:499
-msgid "Multilingual, second part"
-msgstr "Monikielinen, toinen osa"
-
-#: ../rules/base.xml.in.h:500
-msgid "Myanmar"
-msgstr "Myanmar"
-
-#: ../rules/base.xml.in.h:501
-msgid "NICOLA-F style Backspace"
-msgstr "NICOLA-F-tyylin Backspace"
-
-#: ../rules/base.xml.in.h:502
-msgid "NLA"
-msgstr "NLA"
-
-#: ../rules/base.xml.in.h:503
-msgid "Nativo"
-msgstr "Nativo"
-
-#: ../rules/base.xml.in.h:504
-msgid "Nativo for Esperanto"
-msgstr "Nativo esperantolle"
-
-#: ../rules/base.xml.in.h:505
-msgid "Nativo for USA keyboards"
-msgstr "Nativo yhdysvaltalaisille näppäimistöille"
-
-#: ../rules/base.xml.in.h:506
-msgid "Neo 2"
-msgstr "Neo 2"
-
-#: ../rules/base.xml.in.h:507
-msgid "Nepal"
-msgstr "Nepal"
-
-#: ../rules/base.xml.in.h:508
-msgid "Netherlands"
-msgstr "Alankomaat"
-
-#: ../rules/base.xml.in.h:509
-msgid "New phonetic"
-msgstr "Uusi foneettinen"
-
-#: ../rules/base.xml.in.h:510
-msgid "Nga"
-msgstr "Nga"
-
-#: ../rules/base.xml.in.h:511
-msgid "Nigeria"
-msgstr "Nigeria"
-
-#: ../rules/base.xml.in.h:512
-msgid "Nld"
-msgstr "Nld"
-
-#: ../rules/base.xml.in.h:513
-msgid "Non-breakable space character at fourth level"
-msgstr "Sitova välilyöntimerkki 4. tasolla"
-
-#: ../rules/base.xml.in.h:514
-msgid "Non-breakable space character at fourth level, thin non-breakable space character at sixth level"
-msgstr "Sitova välilyöntimerkki 4. tasolla ja kapea sitova välilyöntimerkki 6. tasolla"
-
-#: ../rules/base.xml.in.h:515
-msgid "Non-breakable space character at fourth level, thin non-breakable space character at sixth level (via Ctrl+Shift)"
-msgstr "Sitova välilyöntimerkki 4. tasolla, kapea sitova välilyöntimerkki 6. tasolla (Ctrl+Shift)"
-
-#: ../rules/base.xml.in.h:516
-msgid "Non-breakable space character at second level"
-msgstr "Sitova välilyöntimerkki 2. tasolla"
-
-#: ../rules/base.xml.in.h:517
-msgid "Non-breakable space character at third level"
-msgstr "Sitova välilyöntimerkki 3. tasolla"
-
-#: ../rules/base.xml.in.h:518
-msgid "Non-breakable space character at third level, nothing at fourth level"
-msgstr "Sitova välilyöntimerkki 3. tasolla eikä mitään 4. tasolla"
-
-#: ../rules/base.xml.in.h:519
-msgid "Non-breakable space character at third level, thin non-breakable space character at fourth level"
-msgstr "Sitova välilyöntimerkki 3. tasolla, kapea sitova välilyöntimerkki 4. tasolla"
-
-#: ../rules/base.xml.in.h:520
-msgid "Nor"
-msgstr "Nor"
-
-#: ../rules/base.xml.in.h:521
-msgid "Northern Saami"
-msgstr "Pohjoissaami"
-
-#: ../rules/base.xml.in.h:522
-msgid "Northern Saami, eliminate dead keys"
-msgstr "Pohjoissaami, ei kuolleita näppäimiä"
-
-#: ../rules/base.xml.in.h:523
-msgid "Northgate OmniKey 101"
-msgstr "Northgate OmniKey 101"
-
-#: ../rules/base.xml.in.h:524
-msgid "Norway"
-msgstr "Norja"
-
-#: ../rules/base.xml.in.h:525
-msgid "Npl"
-msgstr "Npl"
-
-#: ../rules/base.xml.in.h:526
-msgid "Num Lock"
-msgstr "Num Lock"
-
-#: ../rules/base.xml.in.h:527
-msgid "Numeric keypad delete key behaviour"
-msgstr "Numerosormion Del-näppäimen toiminta"
-
-#: ../rules/base.xml.in.h:528
-msgid "Numeric keypad keys work as with Mac"
-msgstr "Sormionäppäimet toimivat kuten Macissa"
-
-#: ../rules/base.xml.in.h:529
-msgid "Numeric keypad layout selection"
-msgstr "Sormion asettelun valinta"
-
-#: ../rules/base.xml.in.h:530
-msgid "OADG 109A"
-msgstr "OADG 109A"
-
-#: ../rules/base.xml.in.h:531
-msgid "OLPC"
-msgstr "OLPC"
-
-#: ../rules/base.xml.in.h:532
-msgid "OLPC Dari"
-msgstr "OLPC, dari"
-
-#: ../rules/base.xml.in.h:533
-msgid "OLPC Pashto"
-msgstr "OLPC, pashto"
-
-#: ../rules/base.xml.in.h:534
-msgid "OLPC Southern Uzbek"
-msgstr "OLPC, eteläinen uzbeekki"
-
-#: ../rules/base.xml.in.h:535
-msgid "Occitan"
-msgstr "oksitaani"
-
-#: ../rules/base.xml.in.h:536
-msgid "Ogham"
-msgstr "Ogham"
-
-#: ../rules/base.xml.in.h:537
-msgid "Ogham IS434"
-msgstr "Ogham IS434"
-
-#: ../rules/base.xml.in.h:538
-msgid "Oriya"
-msgstr "Oriya"
-
-#: ../rules/base.xml.in.h:539
-msgid "Ortek MCK-800 MM/Internet keyboard"
-msgstr "Ortek MCK-800 MM/Internet-näppäimistö"
-
-#: ../rules/base.xml.in.h:540
-msgid "Ossetian"
-msgstr "Ossetia"
-
-#: ../rules/base.xml.in.h:541
-msgid "Ossetian, Winkeys"
-msgstr "Ossetia, Win-näppäimet"
-
-#: ../rules/base.xml.in.h:542
-msgid "Ossetian, legacy"
-msgstr "Ossetia, vanha"
-
-#: ../rules/base.xml.in.h:543
-msgid "PC-98xx Series"
-msgstr "PC-98xx-sarja"
-
-#: ../rules/base.xml.in.h:544
-msgid "Pak"
-msgstr "Pak"
-
-#: ../rules/base.xml.in.h:545
-msgid "Pakistan"
-msgstr "Pakistan"
-
-#: ../rules/base.xml.in.h:546
-msgid "Pannonian Rusyn Homophonic"
-msgstr "Homofooninen Pannonian ruteeni"
-
-#: ../rules/base.xml.in.h:547
-msgid "Pashto"
-msgstr "Pashto"
-
-#: ../rules/base.xml.in.h:548
-msgid "Pattachote"
-msgstr "Pattachote"
-
-#: ../rules/base.xml.in.h:549
-msgid "Pause"
-msgstr "Tauko"
-
-#: ../rules/base.xml.in.h:550
-msgid "Persian, with Persian Keypad"
-msgstr "Persia, persialaisella sormiolla"
-
-#: ../rules/base.xml.in.h:551
-msgid "Phonetic"
-msgstr "Foneettinen"
-
-#: ../rules/base.xml.in.h:552
-msgid "Phonetic Winkeys"
-msgstr "Foneettinen, Win-näppäimet"
-
-#: ../rules/base.xml.in.h:553
-msgid "Pol"
-msgstr "Pol"
-
-#: ../rules/base.xml.in.h:554
-msgid "Poland"
-msgstr "Puola"
-
-#: ../rules/base.xml.in.h:555
-msgid "Polytonic"
-msgstr "Polytoninen"
-
-#: ../rules/base.xml.in.h:556
-msgid "Portugal"
-msgstr "Portugali"
-
-#: ../rules/base.xml.in.h:557
-msgid "Probhat"
-msgstr "Probhat"
-
-#: ../rules/base.xml.in.h:558
-msgid "Programmer Dvorak"
-msgstr "Ohjelmoijan dvorak"
-
-#: ../rules/base.xml.in.h:559
-msgid "Propeller Voyager (KTEZ-1000)"
-msgstr "Propeller Voyager (KTEZ-1000)"
-
-#: ../rules/base.xml.in.h:560
-msgid "Prt"
-msgstr "Prt"
-
-#: ../rules/base.xml.in.h:561
-msgid "PrtSc"
-msgstr "PrtSc"
-
-#: ../rules/base.xml.in.h:562
-msgid "QTronix Scorpius 98N+"
-msgstr "QTronix Scorpius 98N+"
-
-#: ../rules/base.xml.in.h:563
-msgid "Right Alt"
-msgstr "Oikea Alt"
-
-#: ../rules/base.xml.in.h:564
-msgid "Right Alt (while pressed)"
-msgstr "Oikea Alt (painettaessa)"
-
-#: ../rules/base.xml.in.h:565
-msgid "Right Alt chooses 5th level, locks when pressed together with another 5th-level-chooser"
-msgstr "Oikea Alt valitsee 5. tason, lukitsee kun painetaan yhdessä toisen 5. tason valitsimen kanssa"
-
-#: ../rules/base.xml.in.h:566
-msgid "Right Alt chooses 5th level, locks when pressed together with another 5th-level-chooser, one press releases the lock"
-msgstr "Oikea Alt valitsee 5. tason, lukitsee kun painetaan yhdessä toisen 5. tason valitsimen kanssa, yksi painallus vapauttaa lukon"
-
-#: ../rules/base.xml.in.h:567
-msgid "Right Alt key never chooses 3rd level"
-msgstr "Oikea Alt-näppäin ei koskaan valitse kolmatta tasoa"
-
-#: ../rules/base.xml.in.h:568
-msgid "Right Alt, Shift+Right Alt key is Multi_Key"
-msgstr "Oikea Alt, Shift-Oikea Alt on Multi_Key"
-
-#: ../rules/base.xml.in.h:569
-msgid "Right Ctrl"
-msgstr "Oikea Ctrl"
-
-#: ../rules/base.xml.in.h:570
-msgid "Right Ctrl (while pressed)"
-msgstr "Oikea Ctrl (painettaessa)"
-
-#: ../rules/base.xml.in.h:571
-msgid "Right Ctrl as Right Alt"
-msgstr "Oikea Ctrl kuten oikea Alt"
-
-#: ../rules/base.xml.in.h:572
-msgid "Right Ctrl+Right Shift"
-msgstr "Oikea Ctrl+Oikea Shift"
-
-#: ../rules/base.xml.in.h:573
-msgid "Right Shift"
-msgstr "Oikea Shift"
-
-#: ../rules/base.xml.in.h:574
-msgid "Right Win"
-msgstr "Oikea Win"
-
-#: ../rules/base.xml.in.h:575
-msgid "Right Win (while pressed)"
-msgstr "Oikea Win (painettaessa)"
-
-#: ../rules/base.xml.in.h:576
-msgid "Right Win chooses 5th level, locks when pressed together with another 5th-level-chooser"
-msgstr "Oikea Win valitsee 5. tason, lukitsee kun painetaan yhdessä toisen 5. tason valitsimen kanssa"
-
-#: ../rules/base.xml.in.h:577
-msgid "Right Win chooses 5th level, locks when pressed together with another 5th-level-chooser, one press releases the lock"
-msgstr "Oikea Win valitsee 5. tason, lukitsee kun painetaan yhdessä toisen 5. tason valitsimen kanssa, yksi painallus vapauttaa lukon"
-
-#: ../rules/base.xml.in.h:578
-msgid "Right hand"
-msgstr "Oikeakätinen"
-
-#: ../rules/base.xml.in.h:579
-msgid "Right handed Dvorak"
-msgstr "Oikeakätinen dvorak"
-
-#: ../rules/base.xml.in.h:580
-msgid "Romania"
-msgstr "Romania"
-
-#: ../rules/base.xml.in.h:581
-msgid "Romanian keyboard with German letters"
-msgstr "Romanialainen näppäimistö saksalaisilla kirjaimilla"
-
-#: ../rules/base.xml.in.h:582
-msgid "Romanian keyboard with German letters, eliminate dead keys"
-msgstr "Romanialainen näppäimistö saksalaisilla kirjaimilla, ei kuolleita näppäimiä"
-
-#: ../rules/base.xml.in.h:583
-msgid "Rou"
-msgstr "Rou"
-
-#: ../rules/base.xml.in.h:584
-msgid "Rus"
-msgstr "Rus"
-
-#: ../rules/base.xml.in.h:585
-msgid "Russia"
-msgstr "Venäjä"
-
-#: ../rules/base.xml.in.h:586
-msgid "Russian"
-msgstr "Venäläinen"
-
-#: ../rules/base.xml.in.h:587
-msgid "Russian phonetic"
-msgstr "Venäläinen foneettinen"
-
-#: ../rules/base.xml.in.h:588
-msgid "Russian phonetic Dvorak"
-msgstr "Venäläinen foneettinen dvorak"
-
-#: ../rules/base.xml.in.h:589
-msgid "Russian phonetic, eliminate dead keys"
-msgstr "Venäläinen foneettinen, ei kuolleita näppäimiä"
-
-#: ../rules/base.xml.in.h:590
-msgid "Russian with Kazakh"
-msgstr "Venäjä kazakhin kanssa"
-
-#: ../rules/base.xml.in.h:591
-msgid "SILVERCREST Multimedia Wireless Keyboard"
-msgstr "SILVERCREST langaton multimedianäppäimistö"
-
-#: ../rules/base.xml.in.h:592
-msgid "SK-1300"
-msgstr "SK-1300"
-
-#: ../rules/base.xml.in.h:593
-msgid "SK-2500"
-msgstr "SK-2500"
-
-#: ../rules/base.xml.in.h:594
-msgid "SK-6200"
-msgstr "SK-6200"
-
-#: ../rules/base.xml.in.h:595
-msgid "SK-7100"
-msgstr "SK-7100"
-
-#: ../rules/base.xml.in.h:596 ../rules/base.extras.xml.in.h:9
-msgid "SRB"
-msgstr "SRB"
-
-#: ../rules/base.xml.in.h:597
-msgid "SVEN Ergonomic 2500"
-msgstr "SVEN Ergonomic 2500"
-
-#: ../rules/base.xml.in.h:598
-msgid "SVEN Slim 303"
-msgstr "SVEN Slim 303"
-
-#: ../rules/base.xml.in.h:599
-msgid "Samsung SDM 4500P"
-msgstr "Samsung SDM 4500P"
-
-#: ../rules/base.xml.in.h:600
-msgid "Samsung SDM 4510P"
-msgstr "Samsung SDM 4510P"
-
-#: ../rules/base.xml.in.h:601
-msgid "Scroll Lock"
-msgstr "Scroll Lock"
-
-#: ../rules/base.xml.in.h:602
-msgid "Secwepemctsin"
-msgstr "Secwepemctsin"
-
-#: ../rules/base.xml.in.h:603
-msgid "Semi-colon on third level"
-msgstr "Puolipilkku kolmannella tasolla"
-
-#: ../rules/base.xml.in.h:604
-msgid "Sen"
-msgstr "Sen"
-
-#: ../rules/base.xml.in.h:605
-msgid "Senegal"
-msgstr "Senegal"
-
-#: ../rules/base.xml.in.h:606 ../rules/base.extras.xml.in.h:10
-msgid "Serbia"
-msgstr "Serbia"
-
-#: ../rules/base.xml.in.h:607
-msgid "Serbian"
-msgstr "Serbialainen"
-
-#: ../rules/base.xml.in.h:608
-msgid "Shift cancels Caps Lock"
-msgstr "Shift kumoaa Caps Lockin"
-
-#: ../rules/base.xml.in.h:609
-msgid "Shift does not cancel Num Lock, chooses 3rd level instead"
-msgstr "Shift ei kumoa Num Lockia, valitsee 3. tason sen sijaan"
-
-#: ../rules/base.xml.in.h:610
-msgid "Shift with numeric keypad keys works as in MS Windows"
-msgstr "Shift ja sormionäppäimet toimivat kuten MS Windowsissa"
-
-#: ../rules/base.xml.in.h:611
-msgid "Shift+Caps Lock"
-msgstr "Shift+Caps Lock"
-
-#: ../rules/base.xml.in.h:612
-msgid "Simple"
-msgstr "yksinkertainen"
-
-#: ../rules/base.xml.in.h:613
-msgid "Sindhi"
-msgstr "Sindhi"
-
-#: ../rules/base.xml.in.h:614
-msgid "Slovakia"
-msgstr "Slovakia"
-
-#: ../rules/base.xml.in.h:615
-msgid "Slovenia"
-msgstr "Slovenia"
-
-#: ../rules/base.xml.in.h:616
-msgid "South Africa"
-msgstr "Etelä-Afrikka"
-
-#: ../rules/base.xml.in.h:617
-msgid "Southern Uzbek"
-msgstr "Eteläinen uzbeekki"
-
-#: ../rules/base.xml.in.h:618
-msgid "Spain"
-msgstr "Espanja"
-
-#: ../rules/base.xml.in.h:619
-msgid "Special keys (Ctrl+Alt+&lt;key&gt;) handled in a server"
-msgstr "Erikoisnäppäimet (Ctrl+Alt+&lt;näppäin&gt;) käsitellään palvelimessa"
-
-#: ../rules/base.xml.in.h:620
-msgid "Sri Lanka"
-msgstr "Sri Lanka"
-
-#: ../rules/base.xml.in.h:621
-msgid "Standard"
-msgstr "Tavallinen"
-
-#: ../rules/base.xml.in.h:622
-msgid "Standard (Cedilla)"
-msgstr "Tavallinen (Pilkku alla)"
-
-#. RSTU 2019-91
-#: ../rules/base.xml.in.h:624
-msgid "Standard RSTU"
-msgstr "Tavallinen RSTU"
-
-#. RSTU 2019-91
-#: ../rules/base.xml.in.h:626
-msgid "Standard RSTU on Russian layout"
-msgstr "Tavallinen RSTU venäläisellä asettelulla"
-
-#: ../rules/base.xml.in.h:627
-msgid "Sun Type 5/6"
-msgstr "Sun Type 5/6"
-
-#: ../rules/base.xml.in.h:628
-msgid "Sun dead keys"
-msgstr "Sunin kuolleet näppäimet"
-
-#: ../rules/base.xml.in.h:629
-msgid "Super Power Multimedia Keyboard"
-msgstr "Super Power -multimedianäppäimistö"
-
-#: ../rules/base.xml.in.h:630
-msgid "Svdvorak"
-msgstr "Svdvorak"
-
-#: ../rules/base.xml.in.h:631
-msgid "Svk"
-msgstr "Svk"
-
-#: ../rules/base.xml.in.h:632
-msgid "Svn"
-msgstr "Svn"
-
-#: ../rules/base.xml.in.h:633
-msgid "Swap Ctrl and Caps Lock"
-msgstr "Vaihda Ctrl ja Caps Lock"
-
-#: ../rules/base.xml.in.h:634
-msgid "Swap ESC and Caps Lock"
-msgstr "Vaihda Esc ja Caps Lock"
-
-#: ../rules/base.xml.in.h:635
-msgid "Swe"
-msgstr "Swe"
-
-#: ../rules/base.xml.in.h:636
-msgid "Sweden"
-msgstr "Ruotsi"
-
-#: ../rules/base.xml.in.h:637
-msgid "Switzerland"
-msgstr "Sveitsi"
-
-#: ../rules/base.xml.in.h:638
-msgid "Symplon PaceBook (tablet PC)"
-msgstr "Symplon PaceBook (lehtiö-PC)"
-
-#: ../rules/base.xml.in.h:639
-msgid "Syr"
-msgstr "Syr"
-
-#: ../rules/base.xml.in.h:640
-msgid "Syria"
-msgstr "Syyria"
-
-#: ../rules/base.xml.in.h:641
-msgid "Syriac"
-msgstr "Syyrialainen"
-
-#: ../rules/base.xml.in.h:642
-msgid "Syriac phonetic"
-msgstr "Syyrialainen foneettinen"
-
-#: ../rules/base.xml.in.h:643
-msgid "TIS-820.2538"
-msgstr "TIS-820.2538"
-
-#: ../rules/base.xml.in.h:644
-msgid "Tajikistan"
-msgstr "Tadžikistan"
-
-#: ../rules/base.xml.in.h:645
-msgid "Tamil"
-msgstr "Tamili"
-
-#: ../rules/base.xml.in.h:646
-msgid "Tamil Keyboard with Numerals"
-msgstr "Tamilinäppäimistö numeroilla"
-
-#: ../rules/base.xml.in.h:647
-msgid "Tamil TAB Typewriter"
-msgstr "Tamili TAB Typewriter"
-
-#: ../rules/base.xml.in.h:648
-msgid "Tamil TSCII Typewriter"
-msgstr "Tamili TSCII Typewriter"
-
-#: ../rules/base.xml.in.h:649
-msgid "Tamil Unicode"
-msgstr "Tamili Unicode"
-
-#: ../rules/base.xml.in.h:650
-msgid "Tanzania"
-msgstr "Tansania"
-
-#: ../rules/base.xml.in.h:651
-msgid "Targa Visionary 811"
-msgstr "Targa Visionary 811"
-
-#: ../rules/base.xml.in.h:652
-msgid "Tatar"
-msgstr "Tataari"
-
-#: ../rules/base.xml.in.h:653
-msgid "Telugu"
-msgstr "Telugu"
-
-#: ../rules/base.xml.in.h:654
-msgid "Tha"
-msgstr "Tha"
-
-#: ../rules/base.xml.in.h:655
-msgid "Thailand"
-msgstr "Thaimaa"
-
-#: ../rules/base.xml.in.h:656
-msgid "Tibetan"
-msgstr "Tiibet"
-
-#: ../rules/base.xml.in.h:657
-msgid "Tibetan (with ASCII numerals)"
-msgstr "Tiibet (ASCII-numeroilla)"
-
-#: ../rules/base.xml.in.h:658
-msgid "Tifinagh"
-msgstr "Tifinagh"
-
-#: ../rules/base.xml.in.h:659
-msgid "Tifinagh alternative"
-msgstr "Tifinagh, vaihtoehtoinen"
-
-#: ../rules/base.xml.in.h:660
-msgid "Tifinagh alternative phonetic"
-msgstr "Tifinagh, vaihtoehtoinen foneettinen"
-
-#: ../rules/base.xml.in.h:661
-msgid "Tifinagh extended"
-msgstr "Tifinagh, laajennettu"
-
-#: ../rules/base.xml.in.h:662
-msgid "Tifinagh extended phonetic"
-msgstr "Tifinagh, laajennettu foneettinen"
-
-#: ../rules/base.xml.in.h:663
-msgid "Tifinagh phonetic"
-msgstr "Tifinagh, foneettinen"
-
-#: ../rules/base.xml.in.h:664
-msgid "Tilde (~) variant"
-msgstr "Tildemuunnos (~)"
-
-#: ../rules/base.xml.in.h:665
-msgid "Tjk"
-msgstr "Tjk"
-
-#: ../rules/base.xml.in.h:666
-msgid "Tkm"
-msgstr "Tkm"
-
-#: ../rules/base.xml.in.h:667
-msgid "To the corresponding key in a Dvorak keyboard."
-msgstr "Vastaavaan näppäimeen Dvorak-näppäimistössä."
-
-#: ../rules/base.xml.in.h:668
-msgid "To the corresponding key in a Qwerty keyboard."
-msgstr "Vastaavaan näppäimeen Qwerty-näppäimistössä."
-
-#: ../rules/base.xml.in.h:669
-msgid "Toshiba Satellite S3000"
-msgstr "Toshiba Satellite S3000"
-
-#: ../rules/base.xml.in.h:670
-msgid "Traditional phonetic"
-msgstr "Perinteinen foneettinen"
-
-#: ../rules/base.xml.in.h:671
-msgid "Trust Direct Access Keyboard"
-msgstr "Trust Direct Access Keyboard"
-
-#: ../rules/base.xml.in.h:672
-msgid "Trust Slimline"
-msgstr "Trust Slimline"
-
-#: ../rules/base.xml.in.h:673
-msgid "Trust Wireless Keyboard Classic"
-msgstr "Trust Wireless Keyboard Classic"
-
-#: ../rules/base.xml.in.h:674
-msgid "Tur"
-msgstr "Tur"
-
-#: ../rules/base.xml.in.h:675
-msgid "Turkey"
-msgstr "Turkki"
-
-#: ../rules/base.xml.in.h:676
-msgid "Turkmenistan"
-msgstr "Turkmenistan"
-
-#: ../rules/base.xml.in.h:677
-msgid "TypeMatrix EZ-Reach 2020"
-msgstr "TypeMatrix EZ-Reach 2020"
-
-#: ../rules/base.xml.in.h:678
-msgid "TypeMatrix EZ-Reach 2030 PS2"
-msgstr "TypeMatrix EZ-Reach 2030 PS2"
-
-#: ../rules/base.xml.in.h:679
-msgid "TypeMatrix EZ-Reach 2030 USB"
-msgstr "TypeMatrix EZ-Reach 2030 USB"
-
-#: ../rules/base.xml.in.h:680
-msgid "TypeMatrix EZ-Reach 2030 USB (102/105:EU mode)"
-msgstr "TypeMatrix EZ-Reach 2030 USB (102/105:EU-tila)"
-
-#: ../rules/base.xml.in.h:681
-msgid "TypeMatrix EZ-Reach 2030 USB (106:JP mode)"
-msgstr "TypeMatrix EZ-Reach 2030 USB (106:JP-tila)"
-
-#: ../rules/base.xml.in.h:682
-msgid "Typewriter"
-msgstr "Kirjoituskone"
-
-#: ../rules/base.xml.in.h:683
-msgid "Typewriter, legacy"
-msgstr "Kirjoituskone, perinteinen"
-
-#: ../rules/base.xml.in.h:684
-msgid "Tza"
-msgstr "Tza"
-
-#: ../rules/base.xml.in.h:685
-msgid "UCW layout (accented letters only)"
-msgstr "UCW-asettelu (vain aksenttikirjaimet)"
-
-#: ../rules/base.xml.in.h:686
-msgid "US Dvorak with CZ UCW support"
-msgstr "Yhdysvaltalainen Dvorak CZ UCW -tuella"
-
-#: ../rules/base.xml.in.h:687
-msgid "US keyboard with Bosnian digraphs"
-msgstr "Yhdysvaltalainen näppäimistö bosnialaisilla merkkipareilla"
-
-#: ../rules/base.xml.in.h:688
-msgid "US keyboard with Bosnian letters"
-msgstr "Yhdysvaltalainen näppäimistö bosnialaisilla kirjaimilla"
-
-#: ../rules/base.xml.in.h:689
-msgid "US keyboard with Croatian digraphs"
-msgstr "Yhdysvaltalainen näppäimistö kroatialaisilla merkkipareilla"
-
-#: ../rules/base.xml.in.h:690
-msgid "US keyboard with Croatian letters"
-msgstr "Yhdysvaltalainen näppäimistö kroatialaisilla kirjaimilla"
-
-#: ../rules/base.xml.in.h:691
-msgid "US keyboard with Estonian letters"
-msgstr "Yhdysvaltalainen näppäimistö virolaisilla kirjaimilla"
-
-#: ../rules/base.xml.in.h:692
-msgid "US keyboard with Italian letters"
-msgstr "Yhdysvaltalainen näppäimistö italialaisilla kirjaimilla"
-
-#: ../rules/base.xml.in.h:693
-msgid "US keyboard with Lithuanian letters"
-msgstr "Yhdysvaltalainen näppäimistö liettualaisilla kirjaimilla"
-
-#: ../rules/base.xml.in.h:694
-msgid "US keyboard with Slovenian letters"
-msgstr "Yhdysvaltalainen näppäimistö slovenialaisilla kirjaimilla"
-
-#: ../rules/base.xml.in.h:695 ../rules/base.extras.xml.in.h:11
-msgid "USA"
-msgstr "USA"
-
-#: ../rules/base.xml.in.h:696
-msgid "Udmurt"
-msgstr "Udmurt"
-
-#: ../rules/base.xml.in.h:697
-msgid "Ukr"
-msgstr "Ukr"
-
-#: ../rules/base.xml.in.h:698
-msgid "Ukraine"
-msgstr "Ukraina"
-
-#: ../rules/base.xml.in.h:699
-msgid "Unicode additions (arrows and math operators)"
-msgstr "Unicode-lisäosat (nuolet ja matematiikkatoiminnot)"
-
-#: ../rules/base.xml.in.h:700
-msgid "Unicode additions (arrows and math operators). Math operators on default level"
-msgstr "Unicode-lisäosat (nuolet ja matematiikkatoiminnot). Matematiikkatoiminnot oletustasolla"
-
-#: ../rules/base.xml.in.h:701
-msgid "UnicodeExpert"
-msgstr "Unicode-asiantuntija"
-
-#: ../rules/base.xml.in.h:702
-msgid "United Kingdom"
-msgstr "Iso-Britannia"
-
-#: ../rules/base.xml.in.h:703
-msgid "Unitek KB-1925"
-msgstr "Unitek KB-1925"
-
-#: ../rules/base.xml.in.h:704
-msgid "Urdu, Alternative phonetic"
-msgstr "Urdu, vaihtoehtoinen foneettinen"
-
-#: ../rules/base.xml.in.h:705
-msgid "Urdu, Phonetic"
-msgstr "Urdu, foneettinen"
-
-#: ../rules/base.xml.in.h:706
-msgid "Urdu, Winkeys"
-msgstr "Urdu, Win-näppäimet"
-
-#: ../rules/base.xml.in.h:707
-msgid "Use Bosnian digraphs"
-msgstr "Käytä bosnialaisia merkkipareja"
-
-#: ../rules/base.xml.in.h:708
-msgid "Use Croatian digraphs"
-msgstr "Käytä kroatialaisia merkkipareja"
-
-#: ../rules/base.xml.in.h:709
-msgid "Use guillemets for quotes"
-msgstr "Käytä guillemot-lainausmerkkejä"
-
-#: ../rules/base.xml.in.h:710
-msgid "Use keyboard LED to show alternative layout"
-msgstr "Käytä näppäimistö-lediä näyttämään vaihtoehtoista asettelua"
-
-#: ../rules/base.xml.in.h:711
-msgid "Using space key to input non-breakable space character"
-msgstr "Sitovan välilyöntimerkin syöttäminen"
-
-#: ../rules/base.xml.in.h:712
-msgid "Usual space at any level"
-msgstr "Normaali välilyönti kaikilla tasoilla"
-
-#: ../rules/base.xml.in.h:713
-msgid "Uzb"
-msgstr "Uzb"
-
-#: ../rules/base.xml.in.h:714
-msgid "Uzbekistan"
-msgstr "Uzbekistan"
-
-#: ../rules/base.xml.in.h:715
-msgid "Vietnam"
-msgstr "Vietnam"
-
-#: ../rules/base.xml.in.h:716
-msgid "ViewSonic KU-306 Internet Keyboard"
-msgstr "ViewSonic KU-306 Internet -näppäimistö"
-
-#: ../rules/base.xml.in.h:717
-msgid "Vnm"
-msgstr "Vnm"
-
-#: ../rules/base.xml.in.h:718
-msgid "Wang 724 keypad with unicode additions (arrows and math operators)"
-msgstr "Wang 724 -sormio Unicode-lisäyksin (nuolet sekä matematiikkaoperaatiot)"
-
-#: ../rules/base.xml.in.h:719
-msgid "Wang 724 keypad with unicode additions (arrows and math operators). Math operators on default level"
-msgstr "Wang 724 -sormio Unicode-lisäyksin (nuolet sekä matematiikkaoperaatiot). Matematiikkaoperaatiot oletustasolla"
-
-#: ../rules/base.xml.in.h:720
-msgid "Wang model 724 azerty"
-msgstr "Wang malli 724 azerty"
-
-#: ../rules/base.xml.in.h:721
-msgid "Western"
-msgstr "Läntinen"
-
-#: ../rules/base.xml.in.h:722
-msgid "Winbook Model XP5"
-msgstr "Winbook Model XP5"
-
-#: ../rules/base.xml.in.h:723
-msgid "Winkeys"
-msgstr "Win-näppäimet"
-
-#: ../rules/base.xml.in.h:724
-msgid "With &lt;\\|&gt; key"
-msgstr "&lt;\\|&gt;-näppäimillä"
-
-#: ../rules/base.xml.in.h:725
-msgid "With EuroSign on 5"
-msgstr "Euro-merkki 5-näppäimessä"
-
-#: ../rules/base.xml.in.h:726
-msgid "With guillemets"
-msgstr "Guillemot-lainausmerkeillä"
-
-#: ../rules/base.xml.in.h:727
-msgid "Yahoo! Internet Keyboard"
-msgstr "Yahoo!-Internet-näppäimistö"
-
-#: ../rules/base.xml.in.h:728
-msgid "Yakut"
-msgstr "Yakut"
-
-#: ../rules/base.xml.in.h:729
-msgid "Yoruba"
-msgstr "Yoruba"
-
-#: ../rules/base.xml.in.h:730
-msgid "Z and ZHE swapped"
-msgstr "Z ja ZHE vaihdettu"
-
-#: ../rules/base.xml.in.h:731
-msgid "Zaf"
-msgstr "Zaf"
-
-#: ../rules/base.xml.in.h:732
-msgid "Zero-width non-joiner character at second level"
-msgstr "Leveydetön ei-yhdistävä merkki 2. tasolla"
-
-#: ../rules/base.xml.in.h:733
-msgid "Zero-width non-joiner character at second level, non-breakable space character at third level"
-msgstr "Leveydetön ei-yhdistävä merkki 2. tasolla, sitova välilyöntimerkki 3. tasolla"
-
-#: ../rules/base.xml.in.h:734
-msgid "Zero-width non-joiner character at second level, non-breakable space character at third level, nothing at fourth level"
-msgstr "Leveydetön ei-yhdistävä merkki 2. tasolla, sitova välilyöntimerkki 3. tasolla eikä mitään 4. tasolla"
-
-#: ../rules/base.xml.in.h:735
-msgid "Zero-width non-joiner character at second level, non-breakable space character at third level, thin non-breakable space at fourth level"
-msgstr "Leveydetön ei-yhdistävä merkki 2. tsaolla, sitova välilyöntimerkki 3. tasolla, kapea sitova välilyöntimerkki 4. tasolla"
-
-#: ../rules/base.xml.in.h:736
-msgid "Zero-width non-joiner character at second level, non-breakable space character at third level, zero-width joiner at fourth level"
-msgstr "Leveydetön ei-yhdistävä merkki 2. tasolla, sitova välilyöntimerkki 3. tasolla ja leveydetön yhdistävä merkki 4. tasolla"
-
-#: ../rules/base.xml.in.h:737
-msgid "Zero-width non-joiner character at second level, zero-width joiner character at third level"
-msgstr "Leveydetön ei-yhdistävä merkki 2. tasolla, leveydetön yhdistävä merkki 3. tasolla"
-
-#: ../rules/base.xml.in.h:738
-msgid "Zero-width non-joiner character at second level, zero-width joiner character at third level, non-breakable space character at fourth level"
-msgstr "Leveydetön ei-yhdistävä merkki 2. tasolla, leveydetön yhdistävä merkki 3. tasolla, sitova välilyöntimerkki 4. tasolla"
-
-#: ../rules/base.xml.in.h:739
-msgid "Zero-width non-joiner character at third level, zero-width joiner at fourth level"
-msgstr "Leveydetön ei-yhdistävä merkki 3. tasolla ja leveydetön yhdistävä merkki 4. tasolla"
-
-#: ../rules/base.xml.in.h:740
-msgid "azerty"
-msgstr "azerty"
-
-#: ../rules/base.xml.in.h:741
-msgid "azerty/digits"
-msgstr "azerty/numerot"
-
-#: ../rules/base.xml.in.h:742
-msgid "digits"
-msgstr "numerot"
-
-#: ../rules/base.xml.in.h:743
-msgid "displaced semicolon and quote (obsolete)"
-msgstr "sijoiltaan olevat puolipilkku ja lainaismekrki (vanhentunut)"
-
-#: ../rules/base.xml.in.h:744
-msgid "lyx"
-msgstr "lyx"
-
-#: ../rules/base.xml.in.h:745
-msgid "qwerty"
-msgstr "qwerty"
-
-#: ../rules/base.xml.in.h:746
-msgid "qwerty, extended Backslash"
-msgstr "qwerty, laajennettu Backslash"
-
-#: ../rules/base.xml.in.h:747
-msgid "qwerty/digits"
-msgstr "qwerty/numerot"
-
-#: ../rules/base.xml.in.h:748
-msgid "qwertz"
-msgstr "qwertz"
-
-#: ../rules/base.extras.xml.in.h:1
-msgid "APL"
-msgstr "APL"
-
-#: ../rules/base.extras.xml.in.h:2
-msgid "Atsina"
-msgstr "Atsina"
-
-#: ../rules/base.extras.xml.in.h:3
-msgid "Avestan"
-msgstr "Avestan"
-
-#: ../rules/base.extras.xml.in.h:4
-msgid "Combining accents instead of dead keys"
-msgstr "Aksenttien yhdistäminen kuolleiden näppäinten sijaan"
-
-#: ../rules/base.extras.xml.in.h:5
-msgid "Couer D'alene Salish"
-msgstr "Couer D'alene Salish"
-
-#: ../rules/base.extras.xml.in.h:6
-msgid "International (AltGr Unicode combining)"
-msgstr "Kansainvälinen (AltGr-Unicode-yhdistäminen)"
-
-#: ../rules/base.extras.xml.in.h:7
-msgid "International (AltGr Unicode combining, alternative)"
-msgstr "Kansainvälinen (AltGr-Unicode-yhdistäminen, vaihtoehtoinen)"
-
-#~ msgid "CapsLock"
-#~ msgstr "CapsLock"
-
-#~ msgid "ScrollLock"
-#~ msgstr "ScrollLock"
-
-#~ msgid "ACPI Standard"
-#~ msgstr "ACPI-standardi"
-
-#~ msgid "Bhu"
-#~ msgstr "Bhu"
-
-#~ msgid "DRC"
-#~ msgstr "DRC"
-
-#~ msgid "Dan"
-#~ msgstr "Dan"
-
-#~ msgid "Dvorak international"
-#~ msgstr "Dvorak kansainvälinen"
-
-#~ msgid "Evdev-managed keyboard"
-#~ msgstr "Evdev-hallittu näppäimistö"
-
-#~ msgid "Gre"
-#~ msgstr "Gre"
-
-#~ msgid "Gui"
-#~ msgstr "Gui"
-
-#~ msgid "Lav"
-#~ msgstr "Lav"
-
-#~ msgid "Nep"
-#~ msgstr "Nep"
-
-#~ msgid "SrL"
-#~ msgstr "SrL"
-
-#~ msgid "Baltic+"
-#~ msgstr "Baltic+"
-
-#~ msgid "IBM ThinkPad 560Z/600/600E/A22E, Intl"
-#~ msgstr "IBM ThinkPad 560Z/600/600E/A22E, kansainvälinen"
-
-#~ msgid "Brazilian ABNT2"
-#~ msgstr "Brasilialainen ABNT2"
-
-#~ msgid "Japanese 106-key"
-#~ msgstr "Japanilainen 106-näppäiminen"
-
-#~ msgid "Kir"
-#~ msgstr "Kir"
-
-#~ msgid "Korean 106-key"
-#~ msgstr "Korealainen 106-näppäiminen"
-
-#~ msgid "Pro"
-#~ msgstr "Pro"
-
-#~ msgid "Super is mapped to Win keys"
-#~ msgstr "Super tulee Win-näppäimistä"
-
-#~ msgid "US keyboard with Slovenian digraphs"
-#~ msgstr "Yhdysvaltalainen näppäimistö slovenialaisilla merkkipareilla"
-
-#~ msgid "Unicode"
-#~ msgstr "Unicode"
-
-#~ msgid "Use Slovenian digraphs"
-#~ msgstr "Käytä slovenialaisia merkkipareja"
-
-#~ msgid "(Legacy) Dvorak"
-#~ msgstr "(Perinteinen) dvorak"
-
-#~ msgid "Add the EuroSign to the 2 key."
-#~ msgstr "Lisää euro-merkki 2-näppäimeen."
-
-#~ msgid "Add the EuroSign to the 5 key."
-#~ msgstr "Lisää euro-merkki 5-näppäimeen."
-
-#~ msgid "Add the EuroSign to the E key."
-#~ msgstr "Lisää euro-merkki E-näppäimeen."
-
-#~ msgid "Alt+Ctrl change layout."
-#~ msgstr "Alt+Ctrl vaihtaa asettelua."
-
-#~ msgid "Alt+Shift change layout."
-#~ msgstr "Alt+Shift vaihtaa asettelua."
-
-#~ msgid "Both Alt keys together change layout."
-#~ msgstr "Molemmat Alt-näppäimet yhdessä vaihtavat asettelua."
-
-#~ msgid "Both Ctrl keys together change layout."
-#~ msgstr "Molemmat Ctrl-näppäimet yhdessä vaihtavat asettelua."
-
-#~ msgid "CapsLock LED shows alternative layout."
-#~ msgstr "CapsLock-ledi näyttää vaihtoehtoista asettelua."
-
-#~ msgid "CapsLock just locks the Shift modifier."
-#~ msgstr "CapsLock vain lukitsee Shift-muunnoksen."
-
-#~ msgid "CapsLock key changes layout."
-#~ msgstr "CapsLock-näppäin vaihtaa asettelua."
-
-#~ msgid "Commabelow"
-#~ msgstr "Commabelow"
-
-#~ msgid "Ctrl+Shift change layout."
-#~ msgstr "Ctrl+Shift vaihtaa asettelua."
-
-#~ msgid "Hewlett-Packard SK-2505 Internet Keyboard"
-#~ msgstr "Hewlett-Packard SK-2505-Internet-näppäimistö"
-
-#~ msgid "IBM Rapid Access II (alternate option)"
-#~ msgstr "IBM Rapid Access II (vaihtoehtoinen)"
-
-#~ msgid "Kotoistus"
-#~ msgstr "Kotoistus"
-
-#~ msgid "Kyr"
-#~ msgstr "Kyr"
-
-#~ msgid "LCtrl+LShift change layout."
-#~ msgstr "LCtrl+LShift vaihtaa ryhmää"
-
-#~ msgid "Layout switching"
-#~ msgstr "Asettelun vaihto"
-
-#~ msgid "Left Alt key changes layout."
-#~ msgstr "Vasen Alt-näppäin vaihtaa asettelua."
-
-#~ msgid "Left Alt key switches layout while pressed."
-#~ msgstr "Vasen Alt-näppäin vaihtaa asettelua painettaessa."
-
-#~ msgid "Left Ctrl key changes layout."
-#~ msgstr "Vasen Ctrl-näppäin vaihtaa asettelua."
-
-#~ msgid "Left Shift key changes layout."
-#~ msgstr "Vasen Shift-näppäin vaihtaa asettelua."
-
-#~ msgid "Left Win-key changes layout."
-#~ msgstr "Vasen Win-näppäin vaihtaa asettelua."
-
-#~ msgid "Left Win-key is Compose."
-#~ msgstr "Vasen Win-näppäin on Compose."
-
-#~ msgid "Menu is Compose."
-#~ msgstr "Valikko on Compose."
-
-#~ msgid "Neostyle"
-#~ msgstr "Neostyle"
-
-#~ msgid "NumLock LED shows alternative layout."
-#~ msgstr "Numlock-ledi näyttää vaihtoehtoista asettelua."
-
-#~ msgid "Press Left Alt key to choose 3rd level."
-#~ msgstr "Paina vasenta Alt-näppäintä valitaksesi kolmannen tason."
-
-#~ msgid "Press Left Win-key to choose 3rd level."
-#~ msgstr "Paina vasenta Win-näppäintä valitaksesi kolmannen tason."
-
-#~ msgid "Press Right Alt key to choose 3rd level."
-#~ msgstr "Paina oikeaa Alt-näppäintä valitaksesi kolmannen tason."
-
-#~ msgid "Press Right Ctrl to choose 3rd level."
-#~ msgstr "Paina oikeaa Ctrl-näppäintä valitaksesi kolmannen tason."
-
-#~ msgid "Press Right Win-key to choose 3rd level."
-#~ msgstr "Paina oikeaa Win-näppäintä valitaksesi kolmannen tason."
-
-#~ msgid "Press any of Alt keys to choose 3rd level."
-#~ msgstr "Paina jotakin Alt-näppäintä valitaksesi kolmannen tason."
-
-#~ msgid "Press any of Win-keys to choose 3rd level."
-#~ msgstr "Paina jotakin Win-näppäintä valitaksesi kolmannen tason."
-
-#~ msgid "R-Alt switches layout while pressed."
-#~ msgstr "Oikea Alt vaihtaa asettelua painettaessa."
-
-#~ msgid "Right Alt is Compose."
-#~ msgstr "Oikea Alt on Compose."
-
-#~ msgid "Right Alt key changes layout."
-#~ msgstr "Oikea Alt-näppäin vaihtaa asettelua."
-
-#~ msgid "Right Ctrl key changes layout."
-#~ msgstr "Oikea Ctrl-näppäin vaihtaa asettelua."
-
-#~ msgid "Right Ctrl key switches layout while pressed."
-#~ msgstr "Oikea Ctrl-näppäin vaihtaa asettelua painettaessa."
-
-#~ msgid "Right Shift key changes layout."
-#~ msgstr "Oikea Shift-näppäin vaihtaa asettelua."
-
-#~ msgid "Right Win-key changes layout."
-#~ msgstr "Oikea Win-näppäin vaihtaa asettelua."
-
-#~ msgid "Right Win-key is Compose."
-#~ msgstr "Oikea Win-näppäin on Compose."
-
-#~ msgid "SCG"
-#~ msgstr "SCG"
-
-#~ msgid "ScrollLock LED shows alternative layout."
-#~ msgstr "ScrollLock-ledi näyttää vaihtoehtoista asettelua."
-
-#~ msgid "Shift+CapsLock changes layout."
-#~ msgstr "Shift+CapsLock vaihtaa asettelua."
-
-#~ msgid "Swap keycodes of two keys when Mac keyboards are misdetected by kernel."
-#~ msgstr "Vaihda kahden näppäimen näppäinkoodin, jos ydin tunnistaa väärin Mac-näppäimistön."
-
-#~ msgid "Third level choosers"
-#~ msgstr "Kolmannnen tason valitsimet"
-
-#~ msgid "Urdu"
-#~ msgstr "Urdu"
-
-#~ msgid "Acts as Shift with locking. Shift cancels Caps."
-#~ msgstr "Toimii lukitsevana Shiftinä. Shift kumoaa CapsLockin."
-
-#~ msgid "Acts as Shift with locking. Shift doesn't cancel Caps."
-#~ msgstr "Toimii lukitsevana Shiftinä. Shift ei kumoa CapsLockia."
-
-#~ msgid "Alt+Control changes group"
-#~ msgstr "Alt+Ctrl vaihtaa ryhmää"
-
-#~ msgid "Alt+Shift changes group"
-#~ msgstr "Alt+Shift vaihtaa ryhmää"
-
-#~ msgid "Belgian"
-#~ msgstr "belgialainen"
-
-#~ msgid "Bulgarian"
-#~ msgstr "bulgarialainen"
-
-#~ msgid "Caps Lock key changes group"
-#~ msgstr "CapsLock-näppäin vaihtaa ryhmää"
-
-#~ msgid "Caps_Lock LED shows alternative group"
-#~ msgstr "CapsLock-ledi näyttää vaihtoehtoista ryhmää"
-
-#~ msgid "Control Key Position"
-#~ msgstr "Ctrl-näppäimen sijainti"
-
-#~ msgid "Control key at bottom left"
-#~ msgstr "Ctrl-näppäin alhaalla vasemmalla"
-
-#~ msgid "Control+Shift changes group"
-#~ msgstr "Ctrl+Shift vaihtaa ryhmää"
-
-#~ msgid "Czech"
-#~ msgstr "tšekkiläinen"
-
-#~ msgid "Danish"
-#~ msgstr "tanskalainen"
-
-#~ msgid "DeuCH"
-#~ msgstr "DeuCH"
-
-#~ msgid "Dvo"
-#~ msgstr "Dvo"
-
-#~ msgid "Finnish"
-#~ msgstr "suomalainen"
-
-#~ msgid "FraCH"
-#~ msgstr "FraCH"
-
-#~ msgid "German"
-#~ msgstr "saksalainen"
-
-#~ msgid "Group Shift/Lock behavior"
-#~ msgstr "Ryhmien vaihto ja lukitus"
-
-#~ msgid "Hungarian"
-#~ msgstr "unkarilainen"
-
-#~ msgid "Italian"
-#~ msgstr "italialainen"
-
-#~ msgid "Japanese"
-#~ msgstr "japanilainen"
-
-#~ msgid "Left Alt key changes group"
-#~ msgstr "Vasen Alt-näppäin vaihtaa ryhmää"
-
-#~ msgid "Left Ctrl key changes group"
-#~ msgstr "Vasen Ctrl-näppäin vaihtaa ryhmää"
-
-#~ msgid "Left Shift key changes group"
-#~ msgstr "Vasen Shift-näppäin vaihtaa ryhmää"
-
-#~ msgid "Make CapsLock an additional Control"
-#~ msgstr "Tee CapsLockista ylimääräinen Ctrl"
-
-#~ msgid "Norwegian"
-#~ msgstr "norjalainen"
-
-#~ msgid "Num_Lock LED shows alternative group"
-#~ msgstr "Numlock-ledi näyttää vaihtoehtoista ryhmää"
-
-#~ msgid "Polish"
-#~ msgstr "puolalainen"
-
-#~ msgid "Portuguese"
-#~ msgstr "portugalilainen"
-
-#~ msgid "Press Left Alt key to choose 3rd level"
-#~ msgstr "Paina vasenta Alt-näppäintä valitaksesi kolmannen tason"
-
-#~ msgid "Press Right Alt key to choose 3rd level"
-#~ msgstr "Paina oikeaa Alt-näppäintä valitaksesi kolmannen tason"
-
-#~ msgid "Press Right Alt-key to choose 3rd level, Shift+Right Alt-key is Multi_Key"
-#~ msgstr "Paina oikeaa Alt-näppäintä valitaksesi kolmannen tason, Shift-Oikea Alt on Multi_Key"
-
-#~ msgid "Press Right Control to choose 3rd level"
-#~ msgstr "Paina oikeaa Ctrl-näppäintä valitaksesi kolmannen tason"
-
-#~ msgid "Press any of Alt keys to choose 3rd level"
-#~ msgstr "Paina jotakin Alt-näppäintä valitaksesi kolmannen tason"
-
-#~ msgid "Right Alt key changes group"
-#~ msgstr "Oikea Alt-näppäin vaihtaa ryhmää"
-
-#~ msgid "Right Control key works as Right Alt"
-#~ msgstr "Oikea Ctrl-näppäin toimii oikeana Alt-näppäimenä"
-
-#~ msgid "Right Ctrl key changes group"
-#~ msgstr "Oikea Ctrl-näppäin vaihtaa ryhmää"
-
-#~ msgid "Right Shift key changes group"
-#~ msgstr "Oikea Shift-näppäin vaihtaa ryhmää"
-
-#~ msgid "Scroll Lock changes group"
-#~ msgstr "Scrolllock vaihtaa ryhmää"
-
-#~ msgid "Scroll_Lock LED shows alternative group"
-#~ msgstr "Scrolllock-ledi näyttää vaihtoehtoista ryhmää"
-
-#~ msgid "Shift with numpad keys works as in MS Windows"
-#~ msgstr "Shift ja sormionäppäimet toimivat kuten MS Windowsissa"
-
-#~ msgid "Slovak"
-#~ msgstr "slovakialainen"
-
-#~ msgid "Spanish"
-#~ msgstr "espanjalainen"
-
-#~ msgid "Sun Type 4"
-#~ msgstr "Sun Type 4"
-
-#~ msgid "Sun Type 5 European"
-#~ msgstr "Sun Type 5 eurooppalainen"
-
-#~ msgid "Sun Type 5 Unix"
-#~ msgstr "Sun Type 5 Unix"
-
-#~ msgid "Sun Type 6"
-#~ msgstr "Sun Type 6"
-
-#~ msgid "Sun Type 6 Unix"
-#~ msgstr "Sun Type 6 Unix"
-
-#~ msgid "Sun Type 6 with Euro key"
-#~ msgstr "Sun Type 6 Euro-näppäimellä"
-
-#~ msgid "Swap Control and Caps Lock"
-#~ msgstr "Vaihda Ctrl ja CapsLock"
-
-#~ msgid "Swedish"
-#~ msgstr "ruotsalainen"
-
-#~ msgid "Swiss French"
-#~ msgstr "sveitsinranskalainen"
-
-#~ msgid "Swiss German"
-#~ msgstr "sveitsinsaksalainen"
-
-#~ msgid "Turkish"
-#~ msgstr "turkkilainen"
-
-#~ msgid "Turkish (F)"
-#~ msgstr "turkkilainen (F)"
-
-#~ msgid "Turkish Alt-Q Layout"
-#~ msgstr "turkkilainen Alt-Q-asettelu"
-
-#~ msgid "U.S. English w/ ISO9995-3"
-#~ msgstr "Amerikanenglanti + ISO9995-3"
-
-#~ msgid "Use keyboard LED to show alternative group"
-#~ msgstr "Käytä näppäimistö-lediä näyttämään vaihtoehtoista ryhmää"
-
-#~ msgid "Uses internal capitalization. Shift cancels Caps."
-#~ msgstr "Käyttää sisäistä suuraakkostusta. Shift kumoaa CapsLockin."
-
-#~ msgid "Uses internal capitalization. Shift doesn't cancel Caps."
-#~ msgstr "Käyttää sisäistä suuraakkostusta. Shift ei kumoa CapsLockia."
-
-#~ msgid "bksl"
-#~ msgstr "bksl"
-
-#~ msgid "type4"
-#~ msgstr "type4"
-
-#~ msgid "Acer TravelMate 800"
-#~ msgstr "Acer TravelMate 800"
-
-#~ msgid "Dell SK-8125 USB Multimedia Keybard"
-#~ msgstr "Dell SK-8125 USB -multimedianäppäimistö"
-
-#~ msgid "Dell SK-8135 USB Multimedia Keybard"
-#~ msgstr "Dell SK-8135 USB -multimedianäppäimistö"
-
-#~ msgid "Force standard legacy keypad"
-#~ msgstr "Pakota standardi vanha sormio"
-
-#~ msgid "Logitech Cordless Desktop Pro (alternate option)"
-#~ msgstr "Logitech Cordless Desktop Pro (vaihtoehtoinen)"
-
-#~ msgid "Use keypad with unicode additions (arrows and math operators)"
-#~ msgstr "Käytä sormiota unicodelisäyksin (nuolet sekä matematiikkaoperaattorit)"
-
-#~ msgid "Adding the nobreakspace keysym to space key"
-#~ msgstr "Sitovan välilyönnin lisäys välilyöntinäppäimeen"
-
-#~ msgid "PowerPC PS/2"
-#~ msgstr "PowerPC PS/2"
+# Finnish translations for xkeyboard-config package.
+# Copyright (C) 2005 Free Software Foundation, Inc.
+# This file is distributed under the same license as the xkeyboard-config package.
+# Tommi Vainikainen <Tommi.Vainikainen@iki.fi>, 2005, 2007-2010.
+# Ilkka Tuohela <hile@iki.fi>, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: xkeyboard-config 2.0\n"
+"Report-Msgid-Bugs-To: svu@users.sourceforge.net\n"
+"POT-Creation-Date: 2010-09-15 21:57+0100\n"
+"PO-Revision-Date: 2010-09-20 08:49+0300\n"
+"Last-Translator: Tommi Vainikainen <Tommi.Vainikainen@iki.fi>\n"
+"Language-Team: Finnish <translation-team-fi@lists.sourceforge.net>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#: ../rules/base.xml.in.h:1
+msgid "&lt;Less/Greater&gt;"
+msgstr "&lt;Pienempi/suurempi-kuin&gt;"
+
+#: ../rules/base.xml.in.h:2
+msgid "&lt;Less/Greater&gt; chooses 5th level, locks when pressed together with another 5th-level-chooser"
+msgstr "&lt;Pienempi/suurempi-kuin&gt; valitsee 5. tason, lukitsee kun painetaan yhdessä toisen 5. tason valitsimen kanssa"
+
+#: ../rules/base.xml.in.h:3
+msgid "&lt;Less/Greater&gt; chooses 5th level, locks when pressed together with another 5th-level-chooser, one press releases the lock"
+msgstr "&lt;Pienempi/suurempi-kuin&gt; valitsee 5. tason, lukitsee kun painetaan yhdessä toisen 5. tason valitsimen kanssa, yksi painallus vapauttaa lukon"
+
+#: ../rules/base.xml.in.h:4
+msgid "(F)"
+msgstr "(F)"
+
+#: ../rules/base.xml.in.h:5
+msgid "(Legacy) Alternative"
+msgstr "(Perinteinen) vaihtoehtoinen"
+
+#: ../rules/base.xml.in.h:6
+msgid "(Legacy) Alternative, Sun dead keys"
+msgstr "(Perinteinen) vaihtoehtoinen, Sunin kuolleet näppäimet"
+
+#: ../rules/base.xml.in.h:7
+msgid "(Legacy) Alternative, eliminate dead keys"
+msgstr "(Perinteinen) vaihtoehtoinen, ei kuolleita näppäimiä"
+
+#: ../rules/base.xml.in.h:8
+msgid "101/104 key Compatible"
+msgstr "101/104-näppäiminen tai yhteensopiva"
+
+#: ../rules/base.xml.in.h:9
+msgid "101/qwerty/comma/Dead keys"
+msgstr "101/qwerty/pilkku/Kuolleet näppäimet"
+
+#: ../rules/base.xml.in.h:10
+msgid "101/qwerty/comma/Eliminate dead keys"
+msgstr "101/qwerty/pilkku/Ei kuolleita näppäimiä"
+
+#: ../rules/base.xml.in.h:11
+msgid "101/qwerty/dot/Dead keys"
+msgstr "101/qwerty/piste/Kuolleet näppäimet"
+
+#: ../rules/base.xml.in.h:12
+msgid "101/qwerty/dot/Eliminate dead keys"
+msgstr "101/qwerty/piste/Ei kuolleita näppäimiä"
+
+#: ../rules/base.xml.in.h:13
+msgid "101/qwertz/comma/Dead keys"
+msgstr "101/qwertz/pilkku/Kuolleet näppäimet"
+
+#: ../rules/base.xml.in.h:14
+msgid "101/qwertz/comma/Eliminate dead keys"
+msgstr "101/qwertz/pilkku/Ei kuolleita näppäimiä"
+
+#: ../rules/base.xml.in.h:15
+msgid "101/qwertz/dot/Dead keys"
+msgstr "101/qwertz/piste/Kuolleet näppäimet"
+
+#: ../rules/base.xml.in.h:16
+msgid "101/qwertz/dot/Eliminate dead keys"
+msgstr "101/qwertz/piste/Ei kuolleita näppäimiä"
+
+#: ../rules/base.xml.in.h:17
+msgid "102/qwerty/comma/Dead keys"
+msgstr "102/qwerty/pilkku/Kuolleet näppäimet"
+
+#: ../rules/base.xml.in.h:18
+msgid "102/qwerty/comma/Eliminate dead keys"
+msgstr "102/qwerty/pilkku/Ei kuolleita näppäimiä"
+
+#: ../rules/base.xml.in.h:19
+msgid "102/qwerty/dot/Dead keys"
+msgstr "102/qwerty/piste/Kuolleet näppäimet"
+
+#: ../rules/base.xml.in.h:20
+msgid "102/qwerty/dot/Eliminate dead keys"
+msgstr "102/qwerty/piste/Ei kuolleita näppäimiä"
+
+#: ../rules/base.xml.in.h:21
+msgid "102/qwertz/comma/Dead keys"
+msgstr "102/qwertz/pilkku/Kuolleet näppäimet"
+
+#: ../rules/base.xml.in.h:22
+msgid "102/qwertz/comma/Eliminate dead keys"
+msgstr "102/qwertz/pilkku/Ei kuolleita näppäimiä"
+
+#: ../rules/base.xml.in.h:23
+msgid "102/qwertz/dot/Dead keys"
+msgstr "102/qwertz/piste/Kuolleet näppäimet"
+
+#: ../rules/base.xml.in.h:24
+msgid "102/qwertz/dot/Eliminate dead keys"
+msgstr "102/qwertz/piste/Ei kuolleita näppäimiä"
+
+#: ../rules/base.xml.in.h:25
+msgid "2"
+msgstr "2"
+
+#: ../rules/base.xml.in.h:26
+msgid "4"
+msgstr "4"
+
+#: ../rules/base.xml.in.h:27
+msgid "5"
+msgstr "5"
+
+#: ../rules/base.xml.in.h:28
+msgid "A4Tech KB-21"
+msgstr "A4Tech KB-21"
+
+#: ../rules/base.xml.in.h:29
+msgid "A4Tech KBS-8"
+msgstr "A4Tech KBS-8"
+
+#: ../rules/base.xml.in.h:30
+msgid "A4Tech Wireless Desktop RFKB-23"
+msgstr "A4Tech-langaton työpöytänäppäimistö RFKB-23"
+
+#: ../rules/base.xml.in.h:31
+msgid "ATM/phone-style"
+msgstr "ATM/puhelintyyppi"
+
+#: ../rules/base.xml.in.h:32
+msgid "Acer AirKey V"
+msgstr "Acer AirKey V"
+
+#: ../rules/base.xml.in.h:33
+msgid "Acer C300"
+msgstr "Acer C300"
+
+#: ../rules/base.xml.in.h:34
+msgid "Acer Ferrari 4000"
+msgstr "Acer Ferrari 4000"
+
+#: ../rules/base.xml.in.h:35
+msgid "Acer Laptop"
+msgstr "Acer-kannettava"
+
+#: ../rules/base.xml.in.h:36
+msgid "Add the standard behavior to Menu key"
+msgstr "Lisää standardi toiminta valikkonäppäimeen"
+
+# Tulkitsin asiaa pikaisella tutkimuksella siten, että supersigno on
+# esperantoa ja tarkoittaa noin suunnilleen korkomerkkiä.
+#: ../rules/base.xml.in.h:37
+msgid "Adding Esperanto circumflexes (supersigno)"
+msgstr "Esperanton tarkkeiden lisäys (supersigno)"
+
+#: ../rules/base.xml.in.h:38
+msgid "Adding EuroSign to certain keys"
+msgstr "Euro-merkin lisäys haluttuun näppäimeen"
+
+#: ../rules/base.xml.in.h:39
+msgid "Advance Scorpius KI"
+msgstr "Advance Scorpius KI"
+
+#: ../rules/base.xml.in.h:40
+msgid "Afg"
+msgstr "Afg"
+
+#: ../rules/base.xml.in.h:41
+msgid "Afghanistan"
+msgstr "Afganistan"
+
+#: ../rules/base.xml.in.h:42
+msgid "Akan"
+msgstr "Akan"
+
+#: ../rules/base.xml.in.h:43
+msgid "Alb"
+msgstr "Alb"
+
+#: ../rules/base.xml.in.h:44
+msgid "Albania"
+msgstr "Albania"
+
+#: ../rules/base.xml.in.h:45
+msgid "Alt and Meta are on Alt keys"
+msgstr "Alt ja Meta ovat Alt-näppäimissä"
+
+#: ../rules/base.xml.in.h:46
+msgid "Alt is mapped to Right Win, Super to Menu"
+msgstr "Alt tulee oikeasta Win-näppäimestä, Super valikkonäppäimestä"
+
+#: ../rules/base.xml.in.h:47
+msgid "Alt+Caps Lock"
+msgstr "Alt+Caps Lock"
+
+#: ../rules/base.xml.in.h:48
+msgid "Alt+Ctrl"
+msgstr "Alt+Ctrl"
+
+#: ../rules/base.xml.in.h:49
+msgid "Alt+Shift"
+msgstr "Alt+Shift"
+
+#: ../rules/base.xml.in.h:50
+msgid "Alt+Space"
+msgstr "Alt+Välilyönti"
+
+#: ../rules/base.xml.in.h:51
+msgid "Alt-Q"
+msgstr "Alt-Q"
+
+#: ../rules/base.xml.in.h:52
+msgid "Alt/Win key behavior"
+msgstr "Alt- ja Win-näppäinten toiminta"
+
+#: ../rules/base.xml.in.h:53
+msgid "Alternative"
+msgstr "Vaihtoehtoinen"
+
+#: ../rules/base.xml.in.h:54
+msgid "Alternative Eastern"
+msgstr "Vaihtoehtoinen itäinen"
+
+#: ../rules/base.xml.in.h:55
+msgid "Alternative Phonetic"
+msgstr "Vaihtoehtoinen foneettinen"
+
+#: ../rules/base.xml.in.h:56
+msgid "Alternative international"
+msgstr "Vaihtoehtoinen kansainvälinen"
+
+#: ../rules/base.xml.in.h:57
+msgid "Alternative, Sun dead keys"
+msgstr "Vaihtoehtoinen, Sunin kuolleet näppäimet"
+
+#: ../rules/base.xml.in.h:58
+msgid "Alternative, eliminate dead keys"
+msgstr "Vaihtoehtoinen, ei kuolleita näppäimiä"
+
+#: ../rules/base.xml.in.h:59
+msgid "Alternative, latin-9 only"
+msgstr "Vaihtoehtoinen, vain latin-9"
+
+#: ../rules/base.xml.in.h:60
+msgid "And"
+msgstr "And"
+
+#: ../rules/base.xml.in.h:61
+msgid "Andorra"
+msgstr "Andorra"
+
+#: ../rules/base.xml.in.h:62
+msgid "Any Alt key"
+msgstr "Mikä tahansa Alt-näppäin"
+
+#: ../rules/base.xml.in.h:63
+msgid "Any Win key"
+msgstr "Mikä tahansa Win-näppäin"
+
+#: ../rules/base.xml.in.h:64
+msgid "Any Win key (while pressed)"
+msgstr "Mikä tahansa Win-näppäin (painettaessa)"
+
+#: ../rules/base.xml.in.h:65
+msgid "Apostrophe (') variant"
+msgstr "Heittomerkkimuunnos (')"
+
+#: ../rules/base.xml.in.h:66
+msgid "Apple"
+msgstr "Apple"
+
+#: ../rules/base.xml.in.h:67
+msgid "Apple Aluminium Keyboard (ANSI)"
+msgstr "Apple Aluminium -näppäimistö (ANSI)"
+
+#: ../rules/base.xml.in.h:68
+msgid "Apple Aluminium Keyboard (ISO)"
+msgstr "Apple Aluminium -näppäimistö (ISO)"
+
+#: ../rules/base.xml.in.h:69
+msgid "Apple Aluminium Keyboard (JIS)"
+msgstr "Apple Aluminium -näppäimistö (JIS)"
+
+#: ../rules/base.xml.in.h:70
+msgid "Apple Aluminium Keyboard: emulate PC keys (Print, Scroll Lock, Pause, Num Lock)"
+msgstr "Apple Aluminium -näppäimistö: emuloi PC-näppäimiä (Print, Scroll Lock, Pause, Num Lock)"
+
+#: ../rules/base.xml.in.h:71
+msgid "Apple Laptop"
+msgstr "Apple-kannettava"
+
+#: ../rules/base.xml.in.h:72
+msgid "Ara"
+msgstr "Ara"
+
+#: ../rules/base.xml.in.h:73
+msgid "Arabic"
+msgstr "Arabia"
+
+#: ../rules/base.xml.in.h:74
+msgid "Arm"
+msgstr "Arm"
+
+#: ../rules/base.xml.in.h:75
+msgid "Armenia"
+msgstr "Armenia"
+
+#: ../rules/base.xml.in.h:76
+msgid "Asturian variant with bottom-dot H and bottom-dot L"
+msgstr "Asturia-vaihtoehto keskipilkullisella H-kirjaimella ja alapilkullisella L-kirjaimella"
+
+#: ../rules/base.xml.in.h:77
+msgid "Asus Laptop"
+msgstr "Asus-kannettava"
+
+#: ../rules/base.xml.in.h:78
+msgid "At bottom left"
+msgstr "Alhaalla vasemmalla"
+
+#: ../rules/base.xml.in.h:79
+msgid "At left of 'A'"
+msgstr "â€Aâ€-näppäimestä vasemmalla"
+
+#: ../rules/base.xml.in.h:80
+msgid "Austria"
+msgstr "Itävalta"
+
+#: ../rules/base.xml.in.h:81
+msgid "Aut"
+msgstr "Aut"
+
+#: ../rules/base.xml.in.h:82
+msgid "Avatime"
+msgstr "Avatime"
+
+#: ../rules/base.xml.in.h:83
+msgid "Aze"
+msgstr "Aze"
+
+#: ../rules/base.xml.in.h:84
+msgid "Azerbaijan"
+msgstr "Azerbaidzan"
+
+#: ../rules/base.xml.in.h:85
+msgid "Azona RF2300 wireless Internet Keyboard"
+msgstr "Azona RF2300 -langaton Internet-näppäimistö"
+
+#: ../rules/base.xml.in.h:86
+msgid "BTC 5090"
+msgstr "BTC 5090"
+
+#: ../rules/base.xml.in.h:87
+msgid "BTC 5113RF Multimedia"
+msgstr "BTC 5113RF Multimedia"
+
+#: ../rules/base.xml.in.h:88
+msgid "BTC 5126T"
+msgstr "BTC 5126T"
+
+#: ../rules/base.xml.in.h:89
+msgid "BTC 6301URF"
+msgstr "BTC 6301URF"
+
+#: ../rules/base.xml.in.h:90
+msgid "BTC 9000"
+msgstr "BTC 9000"
+
+#: ../rules/base.xml.in.h:91
+msgid "BTC 9000A"
+msgstr "BTC 9000A"
+
+#: ../rules/base.xml.in.h:92
+msgid "BTC 9001AH"
+msgstr "BTC 9001AH"
+
+#: ../rules/base.xml.in.h:93
+msgid "BTC 9019U"
+msgstr "BTC 9019U"
+
+#: ../rules/base.xml.in.h:94
+msgid "BTC 9116U Mini Wireless Internet and Gaming"
+msgstr "BTC 9116U Mini Wireless Internet and Gaming"
+
+#: ../rules/base.xml.in.h:95
+msgid "Backslash"
+msgstr "Kenoviiva"
+
+#: ../rules/base.xml.in.h:96
+msgid "Bangladesh"
+msgstr "Bangladesh"
+
+#: ../rules/base.xml.in.h:97
+msgid "Bashkirian"
+msgstr "baškiiri"
+
+#: ../rules/base.xml.in.h:98
+msgid "Bel"
+msgstr "Bel"
+
+#: ../rules/base.xml.in.h:99
+msgid "Belarus"
+msgstr "Valko-Venäjä"
+
+#: ../rules/base.xml.in.h:100
+msgid "Belgium"
+msgstr "Belgia"
+
+#: ../rules/base.xml.in.h:101
+msgid "BenQ X-Touch"
+msgstr "BenQ X-Touch"
+
+#: ../rules/base.xml.in.h:102
+msgid "BenQ X-Touch 730"
+msgstr "BenQ X-Touch 730"
+
+#: ../rules/base.xml.in.h:103
+msgid "BenQ X-Touch 800"
+msgstr "BenQ X-Touch 800"
+
+#: ../rules/base.xml.in.h:104
+msgid "Bengali"
+msgstr "Bengali"
+
+#: ../rules/base.xml.in.h:105
+msgid "Bengali Probhat"
+msgstr "Bengali probhat"
+
+#: ../rules/base.xml.in.h:106
+msgid "Bepo, ergonomic, Dvorak way"
+msgstr "Bepo, ergonominen, Dvorak-tavalla"
+
+#: ../rules/base.xml.in.h:107
+msgid "Bepo, ergonomic, Dvorak way, latin-9 only"
+msgstr "Bepo, ergonominen, Dvorak-tavalla, pelkkä latin-9"
+
+#: ../rules/base.xml.in.h:108
+msgid "Bgd"
+msgstr "Bgd"
+
+#: ../rules/base.xml.in.h:109
+msgid "Bgr"
+msgstr "Bgr"
+
+#: ../rules/base.xml.in.h:110
+msgid "Bhutan"
+msgstr "Bhutan"
+
+#: ../rules/base.xml.in.h:111
+msgid "Biblical Hebrew (Tiro)"
+msgstr "Raamatullinen Heprea (Tiro)"
+
+#: ../rules/base.xml.in.h:112
+msgid "Bih"
+msgstr "Bih"
+
+#: ../rules/base.xml.in.h:113
+msgid "Blr"
+msgstr "Blr"
+
+#: ../rules/base.xml.in.h:114
+msgid "Bosnia and Herzegovina"
+msgstr "Bosnia-Hertsegovina"
+
+#: ../rules/base.xml.in.h:115
+msgid "Both Alt keys together"
+msgstr "Molemmat Alt-näppäimet"
+
+#: ../rules/base.xml.in.h:116
+msgid "Both Ctrl keys together"
+msgstr "Molemmat Ctrl-näppäimet"
+
+#: ../rules/base.xml.in.h:117
+msgid "Both Shift keys together"
+msgstr "Molemmat Shift-näppäimet"
+
+#: ../rules/base.xml.in.h:118
+msgid "Both Shift-Keys together toggle Caps Lock"
+msgstr "Molemmat Shift-näppäimet yhdessä vaihtavat Caps Lockin."
+
+#: ../rules/base.xml.in.h:119
+msgid "Botswana"
+msgstr "Botswana"
+
+#: ../rules/base.xml.in.h:120
+msgid "Bra"
+msgstr "Bra"
+
+#: ../rules/base.xml.in.h:121
+msgid "Braille"
+msgstr "Braille"
+
+#: ../rules/base.xml.in.h:122
+msgid "Brazil"
+msgstr "Brasilia"
+
+#: ../rules/base.xml.in.h:123
+msgid "Breton"
+msgstr "Bretoni"
+
+#: ../rules/base.xml.in.h:124
+msgid "Brl"
+msgstr "Brl"
+
+#: ../rules/base.xml.in.h:125
+msgid "Brother Internet Keyboard"
+msgstr "Brother-Internet-näppäimistö"
+
+#: ../rules/base.xml.in.h:126
+msgid "Btn"
+msgstr "Btn"
+
+#: ../rules/base.xml.in.h:127
+msgid "Buckwalter"
+msgstr "Buckwalter"
+
+#: ../rules/base.xml.in.h:128
+msgid "Bulgaria"
+msgstr "Bulgaria"
+
+#: ../rules/base.xml.in.h:129
+msgid "Bwa"
+msgstr "Bwa"
+
+#: ../rules/base.xml.in.h:130
+msgid "COD"
+msgstr "COD"
+
+#: ../rules/base.xml.in.h:131
+msgid "CRULP"
+msgstr "CRULP"
+
+#: ../rules/base.xml.in.h:132
+msgid "Cambodia"
+msgstr "Kambodža"
+
+#: ../rules/base.xml.in.h:133
+msgid "Can"
+msgstr "Can"
+
+#: ../rules/base.xml.in.h:134
+msgid "Canada"
+msgstr "Kanada"
+
+#: ../rules/base.xml.in.h:135
+msgid "Caps Lock"
+msgstr "Caps Lock"
+
+#: ../rules/base.xml.in.h:136
+msgid "Caps Lock (to first layout), Shift+Caps Lock (to last layout)"
+msgstr "Caps Lock (ensimmäiselle tasolle), Shift+Caps Lock (viimeiselle tasolle)"
+
+#: ../rules/base.xml.in.h:137
+msgid "Caps Lock (while pressed), Alt+Caps Lock does the original capslock action"
+msgstr "Caps Lock (painettaessa), Alt+Caps Lock tekee normaalin CapsLock-toiminnon"
+
+#: ../rules/base.xml.in.h:138
+msgid "Caps Lock acts as Shift with locking. Shift \"pauses\" Caps Lock"
+msgstr "Caps Lock toimii lukitsevana Shiftinä. Shift kumoaa Caps Lockin"
+
+#: ../rules/base.xml.in.h:139
+msgid "Caps Lock acts as Shift with locking. Shift doesn't affect Caps Lock"
+msgstr "Caps Lock toimii lukitsevana Shiftinä. Shift ei kumoa Caps Lockia"
+
+#: ../rules/base.xml.in.h:140
+msgid "Caps Lock is disabled"
+msgstr "Caps Lock ei käytössä"
+
+#: ../rules/base.xml.in.h:141
+msgid "Caps Lock key behavior"
+msgstr "Caps Lock-näppäimen toiminta"
+
+#: ../rules/base.xml.in.h:142
+msgid "Caps Lock toggles Shift so all keys are affected"
+msgstr "Caps Lock vaihtaa Shiftiä vaikuttaen kaikkiin näppäimiin"
+
+#: ../rules/base.xml.in.h:143
+msgid "Caps Lock toggles normal capitalization of alphabetic characters"
+msgstr "Caps Lock vaihtaa normaalin suuraakkostuksen aakkosille"
+
+#: ../rules/base.xml.in.h:144
+msgid "Caps Lock uses internal capitalization. Shift \"pauses\" Caps Lock"
+msgstr "Caps Lock käyttää sisäistä suuraakkostusta. Shift kumoaa Caps Lockin"
+
+#: ../rules/base.xml.in.h:145
+msgid "Caps Lock uses internal capitalization. Shift doesn't affect Caps Lock"
+msgstr "Caps Lock käyttää sisäistä suuraakkostusta. Shift ei kumoa Caps Lockia"
+
+#: ../rules/base.xml.in.h:146
+msgid "Catalan variant with middle-dot L"
+msgstr "Katalaani-vaihtoehto keskipilkullisella L-kirjaimella"
+
+#: ../rules/base.xml.in.h:147
+msgid "Cedilla"
+msgstr "Sedilji"
+
+#: ../rules/base.xml.in.h:148
+msgid "Che"
+msgstr "Che"
+
+#: ../rules/base.xml.in.h:149
+msgid "Cherokee"
+msgstr "Cherokee"
+
+#: ../rules/base.xml.in.h:150
+msgid "Cherry B.UNLIMITED"
+msgstr "Cherry B.UNLIMITED"
+
+#: ../rules/base.xml.in.h:151
+msgid "Cherry Blue Line CyBo@rd"
+msgstr "Cherry Blue Line CyBo@rd"
+
+#: ../rules/base.xml.in.h:152
+msgid "Cherry Blue Line CyBo@rd (alternate option)"
+msgstr "Cherry Blue Line CyBo@rd (vaihtoehtoinen valinta)"
+
+#: ../rules/base.xml.in.h:153
+msgid "Cherry CyBo@rd USB-Hub"
+msgstr "Cherry CyBo@rd USB-Hub"
+
+#: ../rules/base.xml.in.h:154
+msgid "Cherry CyMotion Expert"
+msgstr "Cherry CyMotion Expert"
+
+#: ../rules/base.xml.in.h:155
+msgid "Cherry CyMotion Master Linux"
+msgstr "Cherry CyMotion Master Linux"
+
+#: ../rules/base.xml.in.h:156
+msgid "Cherry CyMotion Master XPress"
+msgstr "Cherry CyMotion Master XPress"
+
+#: ../rules/base.xml.in.h:157
+msgid "Chicony Internet Keyboard"
+msgstr "Chicony-Internet-näppäimistö"
+
+#: ../rules/base.xml.in.h:158
+msgid "Chicony KB-9885"
+msgstr "Chicony KB-9885"
+
+#: ../rules/base.xml.in.h:159
+msgid "Chicony KU-0108"
+msgstr "Chicony KU-0108"
+
+#: ../rules/base.xml.in.h:160
+msgid "Chicony KU-0420"
+msgstr "Chicony KU-0420"
+
+#: ../rules/base.xml.in.h:161
+msgid "China"
+msgstr "Kiina"
+
+#: ../rules/base.xml.in.h:162
+msgid "Chn"
+msgstr "Chn"
+
+#: ../rules/base.xml.in.h:163
+msgid "Chuvash"
+msgstr "Chuvash"
+
+#: ../rules/base.xml.in.h:164
+msgid "Chuvash Latin"
+msgstr "Chuvash latinalainen"
+
+#: ../rules/base.xml.in.h:165
+msgid "Classic"
+msgstr "Perinteinen"
+
+#: ../rules/base.xml.in.h:166
+msgid "Classic Dvorak"
+msgstr "Perinteinen dvorak"
+
+#: ../rules/base.xml.in.h:167
+msgid "Classic, eliminate dead keys"
+msgstr "Perinteinen, ei kuolleita näppäimiä"
+
+#: ../rules/base.xml.in.h:168
+msgid "Classmate PC"
+msgstr "Classmate PC"
+
+#: ../rules/base.xml.in.h:169
+msgid "CloGaelach"
+msgstr "CloGaelach"
+
+#: ../rules/base.xml.in.h:170
+msgid "Colemak"
+msgstr "Colemak"
+
+#: ../rules/base.xml.in.h:171
+msgid "Compaq Easy Access Keyboard"
+msgstr "Compaq Easy Access -näppäimistö"
+
+#: ../rules/base.xml.in.h:172
+msgid "Compaq Internet Keyboard (13 keys)"
+msgstr "Compaq-Internet-näppäimistö (13 näppäintä)"
+
+#: ../rules/base.xml.in.h:173
+msgid "Compaq Internet Keyboard (18 keys)"
+msgstr "Compaq-Internet-näppäimistö (18 näppäintä)"
+
+#: ../rules/base.xml.in.h:174
+msgid "Compaq Internet Keyboard (7 keys)"
+msgstr "Compaq-Internet-näppäimistö (7 näppäintä)"
+
+#: ../rules/base.xml.in.h:175
+msgid "Compaq iPaq Keyboard"
+msgstr "Compaq iPaq-näppäimistö"
+
+#: ../rules/base.xml.in.h:176
+msgid "Compose key position"
+msgstr "Compose-näppäimen sijainti"
+
+#: ../rules/base.xml.in.h:177
+msgid "Congo, Democratic Republic of the"
+msgstr "Kongon tasavalta"
+
+#: ../rules/base.xml.in.h:178
+msgid "Control + Alt + Backspace"
+msgstr "Control + Alt + Backspace"
+
+#: ../rules/base.xml.in.h:179
+msgid "Control is mapped to Alt keys, Alt is mapped to Win keys"
+msgstr "Contol on liitetty Alt-näppäimiin, Alt Win-näppäimiin"
+
+#: ../rules/base.xml.in.h:180
+msgid "Control is mapped to Win keys (and the usual Ctrl keys)"
+msgstr "Contol on liitetty Win-näppäimiin (ja tavalliset Ctrl-näppämet)"
+
+#: ../rules/base.xml.in.h:181
+msgid "Creative Desktop Wireless 7000"
+msgstr "Creative Desktop Wireless 7000"
+
+#: ../rules/base.xml.in.h:182
+msgid "Crimean Tatar (Dobruca-1 Q)"
+msgstr "Krimintataari (Dobruca-1 Q)"
+
+#: ../rules/base.xml.in.h:183
+msgid "Crimean Tatar (Dobruca-2 Q)"
+msgstr "Krimintataari (Dobruca-2 Q)"
+
+#: ../rules/base.xml.in.h:184
+msgid "Crimean Tatar (Turkish Alt-Q)"
+msgstr "Krimintataari (turkkilainen Alt-Q)"
+
+#: ../rules/base.xml.in.h:185
+msgid "Crimean Tatar (Turkish F)"
+msgstr "Krimintataari (turkkilainen F)"
+
+#: ../rules/base.xml.in.h:186
+msgid "Crimean Tatar (Turkish Q)"
+msgstr "Krimintataari (turkkilainen Q)"
+
+#: ../rules/base.xml.in.h:187
+msgid "Croatia"
+msgstr "Kroatia"
+
+#: ../rules/base.xml.in.h:188
+msgid "Ctrl key position"
+msgstr "Ctrl-näppäimen sijainti"
+
+#: ../rules/base.xml.in.h:189
+msgid "Ctrl+Shift"
+msgstr "Ctrl+Shift"
+
+#: ../rules/base.xml.in.h:190
+msgid "Cyrillic"
+msgstr "Kyrillinen"
+
+#: ../rules/base.xml.in.h:191
+msgid "Cyrillic with guillemets"
+msgstr "Kyrillinen guillemot-lainausmerkeillä"
+
+#: ../rules/base.xml.in.h:192
+msgid "Cyrillic, Z and ZHE swapped"
+msgstr "Kyrillinen, Z ja ZHE vaihdettu"
+
+#: ../rules/base.xml.in.h:193
+msgid "Cze"
+msgstr "Cze"
+
+#: ../rules/base.xml.in.h:194
+msgid "Czechia"
+msgstr "TÅ¡ekki"
+
+#: ../rules/base.xml.in.h:195
+msgid "DOS"
+msgstr "DOS"
+
+#: ../rules/base.xml.in.h:196
+msgid "DTK2000"
+msgstr "DTK2000"
+
+#: ../rules/base.xml.in.h:197
+msgid "Dead acute"
+msgstr "Kuollut akuutti"
+
+#: ../rules/base.xml.in.h:198
+msgid "Dead grave acute"
+msgstr "Kuollut gravis"
+
+#: ../rules/base.xml.in.h:199
+msgid "Default numeric keypad keys"
+msgstr "Oletussormionäppäimet"
+
+#: ../rules/base.xml.in.h:200
+msgid "Dell"
+msgstr "Dell"
+
+#: ../rules/base.xml.in.h:201
+msgid "Dell 101-key PC"
+msgstr "Dell 101-näppäiminen PC"
+
+#: ../rules/base.xml.in.h:202
+msgid "Dell Laptop/notebook Inspiron 6xxx/8xxx"
+msgstr "Kannettava Dell Inspiron 6xxx/8xxx"
+
+#: ../rules/base.xml.in.h:203
+msgid "Dell Laptop/notebook Precision M series"
+msgstr "Kannettava Dell Precision M -sarja"
+
+#: ../rules/base.xml.in.h:204
+msgid "Dell Latitude series laptop"
+msgstr "Kannettava Dell Latitude-sarja"
+
+#: ../rules/base.xml.in.h:205
+msgid "Dell Precision M65"
+msgstr "Dell Precision M65"
+
+#: ../rules/base.xml.in.h:206
+msgid "Dell SK-8125"
+msgstr "Dell SK-8125"
+
+#: ../rules/base.xml.in.h:207
+msgid "Dell SK-8135"
+msgstr "Dell SK-8135"
+
+#: ../rules/base.xml.in.h:208
+msgid "Dell USB Multimedia Keyboard"
+msgstr "Dell USB -multimedianäppäimistö"
+
+#: ../rules/base.xml.in.h:209
+msgid "Denmark"
+msgstr "Tanska"
+
+#: ../rules/base.xml.in.h:210
+msgid "Deu"
+msgstr "Deu"
+
+#: ../rules/base.xml.in.h:211
+msgid "Dexxa Wireless Desktop Keyboard"
+msgstr "Dexxa-langaton työpöytänäppäimistö"
+
+#: ../rules/base.xml.in.h:212
+msgid "Diamond 9801 / 9802 series"
+msgstr "Diamond 9801/9802-sarja"
+
+#: ../rules/base.xml.in.h:213
+msgid "Dnk"
+msgstr "Dnk"
+
+#: ../rules/base.xml.in.h:214
+msgid "Dvorak"
+msgstr "Dvorak"
+
+#: ../rules/base.xml.in.h:215
+msgid "Dvorak (UK Punctuation)"
+msgstr "Dvorak (UK-pilkutus)"
+
+#: ../rules/base.xml.in.h:216
+msgid "Dvorak alternative international (no dead keys)"
+msgstr "Dvorak vaihtoehtoinen kansainvälinen (ei kuolleita näppäimiä)"
+
+#: ../rules/base.xml.in.h:217
+msgid "Dvorak international (with dead keys)"
+msgstr "Dvorak kansainvälinen (kuolleilla näppäimillä)"
+
+#: ../rules/base.xml.in.h:218
+msgid "Dvorak, Polish quotes on key 1"
+msgstr "Dvorak, puolalaiset lainausmerkit â€1â€-näppäimistä"
+
+#: ../rules/base.xml.in.h:219
+msgid "Dvorak, Polish quotes on quotemark key"
+msgstr "Dvorak, puolalaiset lainausmerkit lainausmerkkinäppäimestä"
+
+#: ../rules/base.xml.in.h:220
+msgid "E"
+msgstr "E"
+
+#: ../rules/base.xml.in.h:221
+msgid "Eastern"
+msgstr "Itäinen"
+
+#: ../rules/base.xml.in.h:222
+msgid "Eliminate dead keys"
+msgstr "Ei kuolleita näppäimiä"
+
+#: ../rules/base.xml.in.h:223
+msgid "Enable extra typographic characters"
+msgstr "Ota käyttöön ylimääräiset typografiset merkit"
+
+#: ../rules/base.xml.in.h:224
+msgid "English"
+msgstr "englanti"
+
+#: ../rules/base.xml.in.h:225
+msgid "English (USA International)"
+msgstr "Englantilainen (USA kansainvälinen)"
+
+#: ../rules/base.xml.in.h:226
+msgid "English (USA Macintosh)"
+msgstr "Englantilainen (USA Macintosh)"
+
+#: ../rules/base.xml.in.h:227
+msgid "Ennyah DKB-1008"
+msgstr "Ennyah DKB-1008"
+
+#: ../rules/base.xml.in.h:228
+msgid "Enter on keypad"
+msgstr "Enter sormiossa"
+
+#: ../rules/base.xml.in.h:229
+msgid "Epo"
+msgstr "Epo"
+
+#: ../rules/base.xml.in.h:230
+msgid "Ergonomic"
+msgstr "ergonominen"
+
+#: ../rules/base.xml.in.h:231
+msgid "Esp"
+msgstr "Esp"
+
+#: ../rules/base.xml.in.h:232
+msgid "Esperanto"
+msgstr "Esperanto"
+
+#: ../rules/base.xml.in.h:233
+msgid "Est"
+msgstr "Est"
+
+#: ../rules/base.xml.in.h:234
+msgid "Estonia"
+msgstr "Viro"
+
+#: ../rules/base.xml.in.h:235
+msgid "Eth"
+msgstr "Eth"
+
+#: ../rules/base.xml.in.h:236
+msgid "Ethiopia"
+msgstr "Etiopia"
+
+#: ../rules/base.xml.in.h:237
+msgid "Everex STEPnote"
+msgstr "Everex STEPnote"
+
+#: ../rules/base.xml.in.h:238
+msgid "Ewe"
+msgstr "Ewe"
+
+#: ../rules/base.xml.in.h:239
+msgid "Extended"
+msgstr "Laajennettu"
+
+#: ../rules/base.xml.in.h:240
+msgid "Extended - Winkeys"
+msgstr "Laajennettu - Win-näppäimet"
+
+#: ../rules/base.xml.in.h:241
+msgid "Extended Backslash"
+msgstr "Laajennettu kenoviiva"
+
+#: ../rules/base.xml.in.h:242
+msgid "F-letter (F) variant"
+msgstr "F-kirjainmuunnos (F)"
+
+#: ../rules/base.xml.in.h:243
+msgid "FL90"
+msgstr "FL90"
+
+#: ../rules/base.xml.in.h:244
+msgid "Faroe Islands"
+msgstr "Färsaaret"
+
+#: ../rules/base.xml.in.h:245
+msgid "Fin"
+msgstr "Fin"
+
+#: ../rules/base.xml.in.h:246
+msgid "Finland"
+msgstr "Suomi"
+
+#. This assumes the KP_ abstract symbols are actually useful for some apps
+#. The description needs to be rewritten
+#: ../rules/base.xml.in.h:249
+msgid "Four-level key with abstract separators"
+msgstr "Neljännen tason näppäin abstrakteilla erottimilla"
+
+#: ../rules/base.xml.in.h:250
+msgid "Four-level key with comma"
+msgstr "Neljännen tason näppäin pilkulla"
+
+#: ../rules/base.xml.in.h:251
+msgid "Four-level key with dot"
+msgstr "Neljännen tason näppäin pisteellä"
+
+#: ../rules/base.xml.in.h:252
+msgid "Four-level key with dot, latin-9 restriction"
+msgstr "Neljännen tason näppäin pisteellä, latin-9-rajoituksella"
+
+# Wikipediasta katsoin, että momayyez on persialainen desimaalierotin, joka näyttää kauttaviivalta
+#: ../rules/base.xml.in.h:253
+msgid "Four-level key with momayyez"
+msgstr "Neljännen tason näppäin persialaisella desimaalierottimella (momayyez)"
+
+#: ../rules/base.xml.in.h:254
+msgid "Fra"
+msgstr "Fra"
+
+#: ../rules/base.xml.in.h:255
+msgid "France"
+msgstr "Ranska"
+
+#: ../rules/base.xml.in.h:256
+msgid "Français (France Alternative)"
+msgstr "Ranskalainen (Ranska vaihtoehtoinen)"
+
+#: ../rules/base.xml.in.h:257
+msgid "French"
+msgstr "Ranskalainen"
+
+#: ../rules/base.xml.in.h:258
+msgid "French (Macintosh)"
+msgstr "Ranskalainen (Macintosh)"
+
+#: ../rules/base.xml.in.h:259
+msgid "French (legacy)"
+msgstr "Ranskalainen (vanha)"
+
+#: ../rules/base.xml.in.h:260
+msgid "French Dvorak"
+msgstr "Ranskalainen dvorak"
+
+#: ../rules/base.xml.in.h:261
+msgid "French, Sun dead keys"
+msgstr "Ranskalainen, Sunin kuolleet näppäimet"
+
+#: ../rules/base.xml.in.h:262
+msgid "French, eliminate dead keys"
+msgstr "Ranskalainen, ei kuolleita näppäimiä"
+
+#: ../rules/base.xml.in.h:263
+msgid "Fro"
+msgstr "Fro"
+
+#: ../rules/base.xml.in.h:264
+msgid "Fujitsu-Siemens Computers AMILO laptop"
+msgstr "Fujitsu-Siemens Computers AMILO-kannettava"
+
+#: ../rules/base.xml.in.h:265
+msgid "Fula"
+msgstr "Fula"
+
+#: ../rules/base.xml.in.h:266
+msgid "GBr"
+msgstr "GBr"
+
+#: ../rules/base.xml.in.h:267
+msgid "GILLBT"
+msgstr "GILLBT"
+
+#: ../rules/base.xml.in.h:268
+msgid "Ga"
+msgstr "Ga"
+
+#: ../rules/base.xml.in.h:269
+msgid "Generic 101-key PC"
+msgstr "Yleinen 101-näppäiminen PC"
+
+#: ../rules/base.xml.in.h:270
+msgid "Generic 102-key (Intl) PC"
+msgstr "Yleinen 102-näppäiminen (kansainvälinen) PC"
+
+#: ../rules/base.xml.in.h:271
+msgid "Generic 104-key PC"
+msgstr "Yleinen 104-näppäiminen PC"
+
+#: ../rules/base.xml.in.h:272
+msgid "Generic 105-key (Intl) PC"
+msgstr "Yleinen 105-näppäiminen (kansainvälinen) PC"
+
+#: ../rules/base.xml.in.h:273
+msgid "Genius Comfy KB-12e"
+msgstr "Genius Comfy KB-21e"
+
+#: ../rules/base.xml.in.h:274
+msgid "Genius Comfy KB-16M / Genius MM Keyboard KWD-910"
+msgstr "Genius Comfy KB-16M / Genius MM-näppäimistö KWD-910"
+
+#: ../rules/base.xml.in.h:275
+msgid "Genius Comfy KB-21e-Scroll"
+msgstr "Genius Comfy KB-21e-rulla"
+
+#: ../rules/base.xml.in.h:276
+msgid "Genius KB-19e NB"
+msgstr "Genius KB-19e NB"
+
+#: ../rules/base.xml.in.h:277
+msgid "Genius KKB-2050HS"
+msgstr "Genius KKB-2050HS"
+
+#: ../rules/base.xml.in.h:278
+msgid "Geo"
+msgstr "Geo"
+
+#: ../rules/base.xml.in.h:279
+msgid "Georgia"
+msgstr "Georgia"
+
+#: ../rules/base.xml.in.h:280
+msgid "Georgian"
+msgstr "Georgia"
+
+#: ../rules/base.xml.in.h:281
+msgid "Georgian AZERTY Tskapo"
+msgstr "Georgian AZERTY Tskapo"
+
+#: ../rules/base.xml.in.h:282
+msgid "German (Macintosh)"
+msgstr "Saksalainen (Macintosh)"
+
+#: ../rules/base.xml.in.h:283
+msgid "German, Sun dead keys"
+msgstr "Saksalainen, Sunin kuolleet näppäimet"
+
+#: ../rules/base.xml.in.h:284
+msgid "German, eliminate dead keys"
+msgstr "Saksalainen, ei kuolleita näppäimiä"
+
+#: ../rules/base.xml.in.h:285
+msgid "Germany"
+msgstr "Saksa"
+
+#: ../rules/base.xml.in.h:286
+msgid "Gha"
+msgstr "Gha"
+
+#: ../rules/base.xml.in.h:287
+msgid "Ghana"
+msgstr "Ghana"
+
+#: ../rules/base.xml.in.h:288
+msgid "Gin"
+msgstr "Gin"
+
+#: ../rules/base.xml.in.h:289
+msgid "Grc"
+msgstr "Grc"
+
+#: ../rules/base.xml.in.h:290
+msgid "Greece"
+msgstr "Kreikka"
+
+#: ../rules/base.xml.in.h:291
+msgid "Guinea"
+msgstr "Guinea"
+
+#: ../rules/base.xml.in.h:292
+msgid "Gujarati"
+msgstr "Gujarati"
+
+#: ../rules/base.xml.in.h:293
+msgid "Gurmukhi"
+msgstr "Gurmukhi"
+
+#: ../rules/base.xml.in.h:294
+msgid "Gurmukhi Jhelum"
+msgstr "Gurmukhi Jhelum"
+
+# Lienee tuotemerkki
+#: ../rules/base.xml.in.h:295
+msgid "Gyration"
+msgstr "Gyration"
+
+#: ../rules/base.xml.in.h:296
+msgid "Happy Hacking Keyboard"
+msgstr "Happy Hacking -näppäimistö"
+
+#: ../rules/base.xml.in.h:297
+msgid "Happy Hacking Keyboard for Mac"
+msgstr "Happy Hacking -näppäimistö, Mac-versio"
+
+#: ../rules/base.xml.in.h:298
+msgid "Hausa"
+msgstr "Hausa"
+
+#: ../rules/base.xml.in.h:299
+msgid "Hewlett-Packard Internet Keyboard"
+msgstr "Hewlett-Packard-Internet-näppäimistö"
+
+#: ../rules/base.xml.in.h:300
+msgid "Hewlett-Packard Mini 110 Notebook"
+msgstr "Hewlett-Packard Mini 110 Notebook"
+
+#: ../rules/base.xml.in.h:301
+msgid "Hewlett-Packard Omnibook 500 FA"
+msgstr "Hewlett-Packard Omnibook 500 FA"
+
+#: ../rules/base.xml.in.h:302
+msgid "Hewlett-Packard Omnibook 5xx"
+msgstr "Hewlett-Packard Omnibook 5xx"
+
+#: ../rules/base.xml.in.h:303
+msgid "Hewlett-Packard Omnibook 6000/6100"
+msgstr "Hewlett-Packard Omnibook 6000/6100"
+
+#: ../rules/base.xml.in.h:304
+msgid "Hewlett-Packard Omnibook XE3 GC"
+msgstr "Hewlett-Packard Omnibook XE3 GC"
+
+#: ../rules/base.xml.in.h:305
+msgid "Hewlett-Packard Omnibook XE3 GF"
+msgstr "Hewlett-Packard Omnibook XE3 GF"
+
+#: ../rules/base.xml.in.h:306
+msgid "Hewlett-Packard Omnibook XT1000"
+msgstr "Hewlett-Packard Omnibook XT1000"
+
+#: ../rules/base.xml.in.h:307
+msgid "Hewlett-Packard Pavilion ZT11xx"
+msgstr "Hewlett-Packard Pavilion ZT11xx"
+
+#: ../rules/base.xml.in.h:308
+msgid "Hewlett-Packard Pavilion dv5"
+msgstr "Hewlett-Packard Pavilion dv5"
+
+#: ../rules/base.xml.in.h:309
+msgid "Hewlett-Packard SK-250x Multimedia Keyboard"
+msgstr "Hewlett-Packard SK-250x-multimedianäppäimistö"
+
+#: ../rules/base.xml.in.h:310
+msgid "Hewlett-Packard nx9020"
+msgstr "Hewlett-Packard nx9020"
+
+#: ../rules/base.xml.in.h:311
+msgid "Hexadecimal"
+msgstr "Heksadesimaali"
+
+#: ../rules/base.xml.in.h:312
+msgid "Hindi Bolnagri"
+msgstr "Hindi Bolnagri"
+
+#: ../rules/base.xml.in.h:313
+msgid "Hindi Wx"
+msgstr "Hindi Wx"
+
+#: ../rules/base.xml.in.h:314
+msgid "Homophonic"
+msgstr "Homofoninen"
+
+#: ../rules/base.xml.in.h:315
+msgid "Honeywell Euroboard"
+msgstr "Honeywell Euroboard"
+
+#: ../rules/base.xml.in.h:316
+msgid "Hrv"
+msgstr "Hrv"
+
+#: ../rules/base.xml.in.h:317
+msgid "Hun"
+msgstr "Hun"
+
+#: ../rules/base.xml.in.h:318
+msgid "Hungary"
+msgstr "Unkari"
+
+#: ../rules/base.xml.in.h:319
+msgid "Hyper is mapped to Win-keys"
+msgstr "Hyper tulee Win-näppäimistä"
+
+#: ../rules/base.xml.in.h:320
+msgid "IBM (LST 1205-92)"
+msgstr "IMB (LST 1205-92)"
+
+#: ../rules/base.xml.in.h:321
+msgid "IBM Rapid Access"
+msgstr "IBM Rapid Access"
+
+#: ../rules/base.xml.in.h:322
+msgid "IBM Rapid Access II"
+msgstr "IBM Rapid Access II"
+
+#: ../rules/base.xml.in.h:323
+msgid "IBM Space Saver"
+msgstr "IBM Space Saver"
+
+#: ../rules/base.xml.in.h:324
+msgid "IBM ThinkPad 560Z/600/600E/A22E"
+msgstr "IBM ThinkPad 560Z/600/600E/A22E"
+
+#: ../rules/base.xml.in.h:325
+msgid "IBM ThinkPad R60/T60/R61/T61"
+msgstr "IBM ThinkPad R60/T60/R61/T61"
+
+#: ../rules/base.xml.in.h:326
+msgid "IBM ThinkPad Z60m/Z60t/Z61m/Z61t"
+msgstr "IBM ThinkPad Z60m/Z60t/Z61m/Z61t"
+
+#: ../rules/base.xml.in.h:327
+msgid "ISO Alternate"
+msgstr "ISO vaihtoehtoinen"
+
+#: ../rules/base.xml.in.h:328
+msgid "Iceland"
+msgstr "Islanti"
+
+#: ../rules/base.xml.in.h:329
+msgid "Igbo"
+msgstr "Igbo"
+
+#: ../rules/base.xml.in.h:330
+msgid "Include dead tilde"
+msgstr "Sisällytä kuollut tilde"
+
+#: ../rules/base.xml.in.h:331
+msgid "Ind"
+msgstr "Ind"
+
+#: ../rules/base.xml.in.h:332
+msgid "India"
+msgstr "Intia"
+
+#: ../rules/base.xml.in.h:333
+msgid "International (AltGr dead keys)"
+msgstr "Kansainvälinen (AltGr -kuolleet näppäimet)"
+
+#: ../rules/base.xml.in.h:334
+msgid "International (with dead keys)"
+msgstr "Kansainvälinen (ilman kuolleita näppäimiä)"
+
+#: ../rules/base.xml.in.h:335
+msgid "Inuktitut"
+msgstr "Inuktitut"
+
+#: ../rules/base.xml.in.h:336 ../rules/base.extras.xml.in.h:8
+msgid "Iran"
+msgstr "Iran"
+
+#: ../rules/base.xml.in.h:337
+msgid "Iraq"
+msgstr "Irak"
+
+#: ../rules/base.xml.in.h:338
+msgid "Ireland"
+msgstr "Irlanti"
+
+#: ../rules/base.xml.in.h:339
+msgid "Irl"
+msgstr "Irl"
+
+#: ../rules/base.xml.in.h:340
+msgid "Irn"
+msgstr "Irn"
+
+#: ../rules/base.xml.in.h:341
+msgid "Irq"
+msgstr "Irq"
+
+#: ../rules/base.xml.in.h:342
+msgid "Isl"
+msgstr "Isl"
+
+#: ../rules/base.xml.in.h:343
+msgid "Isr"
+msgstr "Isr"
+
+#: ../rules/base.xml.in.h:344
+msgid "Israel"
+msgstr "Israel"
+
+#: ../rules/base.xml.in.h:345
+msgid "Ita"
+msgstr "Ita"
+
+#: ../rules/base.xml.in.h:346
+msgid "Italy"
+msgstr "Italia"
+
+#: ../rules/base.xml.in.h:347
+msgid "Japan"
+msgstr "Japani"
+
+#: ../rules/base.xml.in.h:348
+msgid "Japan (PC-98xx Series)"
+msgstr "Japani (PC-98xx-sarja)"
+
+#: ../rules/base.xml.in.h:349
+msgid "Japanese keyboard options"
+msgstr "japanilaisen näppäimistön valinnat"
+
+#: ../rules/base.xml.in.h:350
+msgid "Jpn"
+msgstr "Jpn"
+
+#: ../rules/base.xml.in.h:351
+msgid "Kalmyk"
+msgstr "kalmukki"
+
+#: ../rules/base.xml.in.h:352
+msgid "Kana"
+msgstr "Kana"
+
+#: ../rules/base.xml.in.h:353
+msgid "Kana Lock key is locking"
+msgstr "Kana, lukitusnäppäin lukitseva"
+
+#: ../rules/base.xml.in.h:354
+msgid "Kannada"
+msgstr "Kannada"
+
+#: ../rules/base.xml.in.h:355
+msgid "Kashubian"
+msgstr "Kashubia"
+
+#: ../rules/base.xml.in.h:356
+msgid "Kaz"
+msgstr "Kaz"
+
+#: ../rules/base.xml.in.h:357
+msgid "Kazakh with Russian"
+msgstr "Kazakstan venäjän kanssa"
+
+#: ../rules/base.xml.in.h:358
+msgid "Kazakhstan"
+msgstr "Kazakstan"
+
+#: ../rules/base.xml.in.h:359
+msgid "Ken"
+msgstr "Ken"
+
+#: ../rules/base.xml.in.h:360
+msgid "Kenya"
+msgstr "Kenia"
+
+#: ../rules/base.xml.in.h:361
+msgid "Key sequence to kill the X server"
+msgstr "Näppäinyhdistelmä, joka tappaa X-palvelimen"
+
+#: ../rules/base.xml.in.h:362
+msgid "Key to choose 3rd level"
+msgstr "Kolmannen tason valintanäppäin"
+
+#: ../rules/base.xml.in.h:363
+msgid "Key to choose 5th level"
+msgstr "Viidennen tason valintanäppäin"
+
+#: ../rules/base.xml.in.h:364
+msgid "Key(s) to change layout"
+msgstr "Asettelunvaihtonäppäimet"
+
+#: ../rules/base.xml.in.h:365
+msgid "Keytronic FlexPro"
+msgstr "Keytronic FlexPro"
+
+#: ../rules/base.xml.in.h:366
+msgid "Kgz"
+msgstr "Kgz"
+
+#: ../rules/base.xml.in.h:367
+msgid "Khm"
+msgstr "Khm"
+
+#: ../rules/base.xml.in.h:368
+msgid "Kikuyu"
+msgstr "Kikuju"
+
+#: ../rules/base.xml.in.h:369
+msgid "Kinesis"
+msgstr "Kinesis"
+
+#: ../rules/base.xml.in.h:370
+msgid "Komi"
+msgstr "Komi"
+
+#: ../rules/base.xml.in.h:371
+msgid "Kor"
+msgstr "Kor"
+
+#: ../rules/base.xml.in.h:372
+msgid "Korea, Republic of"
+msgstr "Etelä-Korea"
+
+#: ../rules/base.xml.in.h:373
+msgid "Ktunaxa"
+msgstr "Ktunaxa"
+
+#: ../rules/base.xml.in.h:374
+msgid "Kurdish, (F)"
+msgstr "Kurdi, (F)"
+
+#: ../rules/base.xml.in.h:375
+msgid "Kurdish, Arabic-Latin"
+msgstr "Kurdi, arabia-latinalainen"
+
+#: ../rules/base.xml.in.h:376
+msgid "Kurdish, Latin Alt-Q"
+msgstr "Kurdi, latinalainen Alt-Q"
+
+#: ../rules/base.xml.in.h:377
+msgid "Kurdish, Latin Q"
+msgstr "Kurdi, latinalainen Q"
+
+#: ../rules/base.xml.in.h:378
+msgid "Kyrgyzstan"
+msgstr "Kirgisia"
+
+#: ../rules/base.xml.in.h:379
+msgid "LAm"
+msgstr "LAm"
+
+#: ../rules/base.xml.in.h:380
+msgid "LEKP"
+msgstr "LEKP"
+
+#: ../rules/base.xml.in.h:381
+msgid "LEKPa"
+msgstr "LEKPa"
+
+#: ../rules/base.xml.in.h:382
+msgid "Lao"
+msgstr "Lao"
+
+#: ../rules/base.xml.in.h:383
+msgid "Laos"
+msgstr "Laos"
+
+#: ../rules/base.xml.in.h:384
+msgid "Laptop/notebook Compaq (eg. Armada) Laptop Keyboard"
+msgstr "Kannettava Compaq (esim. Armada) kannettavan näppäimistö "
+
+#: ../rules/base.xml.in.h:385
+msgid "Laptop/notebook Compaq (eg. Presario) Internet Keyboard"
+msgstr "Kannettava Compaq (esim. Armada) Internet-näppäimistö "
+
+#: ../rules/base.xml.in.h:386
+msgid "Laptop/notebook eMachines m68xx"
+msgstr "Kannettava eMachines m68xx"
+
+#: ../rules/base.xml.in.h:387
+msgid "Latin"
+msgstr "Latinalainen"
+
+#: ../rules/base.xml.in.h:388
+msgid "Latin American"
+msgstr "Latinalainen amerikka"
+
+#: ../rules/base.xml.in.h:389
+msgid "Latin Unicode"
+msgstr "Latinalainen Unicode"
+
+#: ../rules/base.xml.in.h:390
+msgid "Latin Unicode qwerty"
+msgstr "Latinalainen Unicode-qwerty"
+
+#: ../rules/base.xml.in.h:391
+msgid "Latin qwerty"
+msgstr "Latinalainen qwerty"
+
+#: ../rules/base.xml.in.h:392
+msgid "Latin unicode"
+msgstr "Latinalainen Unicode"
+
+#: ../rules/base.xml.in.h:393
+msgid "Latin unicode qwerty"
+msgstr "Latinalainen Unicode-qwerty"
+
+#: ../rules/base.xml.in.h:394
+msgid "Latin with guillemets"
+msgstr "Latinalainen guillemot-lainausmerkeillä"
+
+#: ../rules/base.xml.in.h:395
+msgid "Latvia"
+msgstr "Latvia"
+
+#: ../rules/base.xml.in.h:396
+msgid "Layout toggle on multiply/divide key"
+msgstr "Ryhmän vaihto kerto/jako-näppäimellä"
+
+#: ../rules/base.xml.in.h:397
+msgid "Left Alt"
+msgstr "Vasen Alt"
+
+#: ../rules/base.xml.in.h:398
+msgid "Left Alt (while pressed)"
+msgstr "Vasen Alt-näppäin (painettaessa)"
+
+#: ../rules/base.xml.in.h:399
+msgid "Left Alt is swapped with Left Win"
+msgstr "Vaihda vasen Alt-näppän vasemman Win-näppäimen kanssa"
+
+#: ../rules/base.xml.in.h:400
+msgid "Left Ctrl"
+msgstr "Vasen Ctrl"
+
+#: ../rules/base.xml.in.h:401
+msgid "Left Ctrl (to first layout), Right Ctrl (to last layout)"
+msgstr "Vasen ctrl (ensimmäiselle asettelulle), Oikea Ctrl (viimeiselle asettelulle)"
+
+#: ../rules/base.xml.in.h:402
+msgid "Left Ctrl+Left Shift"
+msgstr "Vasen Ctrl+Vasen Shift"
+
+#: ../rules/base.xml.in.h:403
+msgid "Left Shift"
+msgstr "Vasen Shift"
+
+#: ../rules/base.xml.in.h:404
+msgid "Left Win"
+msgstr "Vasen Win"
+
+#: ../rules/base.xml.in.h:405
+msgid "Left Win (to first layout), Right Win/Menu (to last layout)"
+msgstr "Vasen Win (ensimmäiselle asettelulle), Oikea Win/valikko (viimeiselle asettelulle)"
+
+#: ../rules/base.xml.in.h:406
+msgid "Left Win (while pressed)"
+msgstr "Vasen Win (painettaessa)"
+
+#: ../rules/base.xml.in.h:407
+msgid "Left Win chooses 5th level, locks when pressed together with another 5th-level-chooser"
+msgstr "Vasen Win valitsee 5. tason, lukitsee kun painetaan yhdessä toisen 5. tason valitsimen kanssa"
+
+#: ../rules/base.xml.in.h:408
+msgid "Left Win chooses 5th level, locks when pressed together with another 5th-level-chooser, one press releases the lock"
+msgstr "Vasen Win valitsee 5. tason, lukitsee kun painetaan yhdessä toisen 5. tason valitsimen kanssa, yksi painallus vapauttaa lukon"
+
+#: ../rules/base.xml.in.h:409
+msgid "Left hand"
+msgstr "Vasenkätinen"
+
+#: ../rules/base.xml.in.h:410
+msgid "Left handed Dvorak"
+msgstr "Vasenkätinen dvorak"
+
+#: ../rules/base.xml.in.h:411
+msgid "Legacy"
+msgstr "Perinteinen"
+
+#: ../rules/base.xml.in.h:412
+msgid "Legacy Wang 724"
+msgstr "Perinteinen Wang 724"
+
+#. Actually, with KP_SEPARATOR, as the old keypad(comma)
+#: ../rules/base.xml.in.h:414
+msgid "Legacy key with comma"
+msgstr "Perinteinen näppäin pilkulla"
+
+#: ../rules/base.xml.in.h:415
+msgid "Legacy key with dot"
+msgstr "Perinteinen näppäin pisteellä"
+
+#: ../rules/base.xml.in.h:416
+msgid "Lithuania"
+msgstr "Liettua"
+
+#: ../rules/base.xml.in.h:417
+msgid "Lka"
+msgstr "Lka"
+
+#: ../rules/base.xml.in.h:418
+msgid "Logitech Access Keyboard"
+msgstr "Logitech Access Keyboard"
+
+#: ../rules/base.xml.in.h:419
+msgid "Logitech Cordless Desktop"
+msgstr "Logitech Cordless Desktop"
+
+#: ../rules/base.xml.in.h:420
+msgid "Logitech Cordless Desktop (alternate option)"
+msgstr "Logitech Cordless Desktop (vaihtoehtoinen)"
+
+#: ../rules/base.xml.in.h:421
+msgid "Logitech Cordless Desktop EX110"
+msgstr "Logitech Cordless Desktop EX110"
+
+#: ../rules/base.xml.in.h:422
+msgid "Logitech Cordless Desktop LX-300"
+msgstr "Logitech Cordless Desktop LX-300"
+
+#: ../rules/base.xml.in.h:423
+msgid "Logitech Cordless Desktop Navigator"
+msgstr "Logitech Cordless Desktop Navigator"
+
+#: ../rules/base.xml.in.h:424
+msgid "Logitech Cordless Desktop Optical"
+msgstr "Logitech Cordless Desktop Optical"
+
+#: ../rules/base.xml.in.h:425
+msgid "Logitech Cordless Desktop Pro (alternate option 2)"
+msgstr "Logitech Cordless Desktop Pro (vaihtoehtoinen 2)"
+
+#: ../rules/base.xml.in.h:426
+msgid "Logitech Cordless Desktop iTouch"
+msgstr "Logitech Cordless Desktop iTouch"
+
+#: ../rules/base.xml.in.h:427
+msgid "Logitech Cordless Freedom/Desktop Navigator"
+msgstr "Logitech Cordless Freedom/Desktop Navigator"
+
+#: ../rules/base.xml.in.h:428
+msgid "Logitech G15 extra keys via G15daemon"
+msgstr "Logitech G15 -lisänäppäimet G15daemon-ohjelmasta"
+
+#: ../rules/base.xml.in.h:429
+msgid "Logitech Generic Keyboard"
+msgstr "Logitech-yleisnäppäimistö"
+
+#: ../rules/base.xml.in.h:430
+msgid "Logitech Internet 350 Keyboard"
+msgstr "Logitech Internet 350 -näppämistö"
+
+#: ../rules/base.xml.in.h:431
+msgid "Logitech Internet Keyboard"
+msgstr "Logitech Internet -näppämistö"
+
+#: ../rules/base.xml.in.h:432
+msgid "Logitech Internet Navigator Keyboard"
+msgstr "Logitech Internet Navigator -näppämistö"
+
+#: ../rules/base.xml.in.h:433
+msgid "Logitech Media Elite Keyboard"
+msgstr "Logitech Media Elite -näppäimistö"
+
+#: ../rules/base.xml.in.h:434
+msgid "Logitech Ultra-X Cordless Media Desktop Keyboard"
+msgstr "Logitech Ultra-X Cordless Media Desktop -näppäimistö"
+
+#: ../rules/base.xml.in.h:435
+msgid "Logitech Ultra-X Keyboard"
+msgstr "Logitech Ultra-X-näppäimistö"
+
+#: ../rules/base.xml.in.h:436
+msgid "Logitech diNovo Edge Keyboard"
+msgstr "Logitech diNovo Edge -näppäimistö"
+
+#: ../rules/base.xml.in.h:437
+msgid "Logitech diNovo Keyboard"
+msgstr "Logitech diNovo-näppäimistö"
+
+#: ../rules/base.xml.in.h:438
+msgid "Logitech iTouch"
+msgstr "Logitech iTouch"
+
+#: ../rules/base.xml.in.h:439
+msgid "Logitech iTouch Cordless Keyboard (model Y-RB6)"
+msgstr "Logitech iTouch Cordless Keyboard (malli Y-RB6)"
+
+#: ../rules/base.xml.in.h:440
+msgid "Logitech iTouch Internet Navigator Keyboard SE"
+msgstr "Logitech iTouch Internet Navigator Keyboard SE"
+
+#: ../rules/base.xml.in.h:441
+msgid "Logitech iTouch Internet Navigator Keyboard SE (USB)"
+msgstr "Logitech iTouch Internet Navigator Keyboard SE (USB)"
+
+#: ../rules/base.xml.in.h:442
+msgid "Lower Sorbian"
+msgstr "alasorbi"
+
+#: ../rules/base.xml.in.h:443
+msgid "Lower Sorbian (qwertz)"
+msgstr "alasorbi (qwertz)"
+
+#: ../rules/base.xml.in.h:444
+msgid "Ltu"
+msgstr "Ltu"
+
+#: ../rules/base.xml.in.h:445
+msgid "Lva"
+msgstr "Lva"
+
+#: ../rules/base.xml.in.h:446
+msgid "MESS"
+msgstr "MESS"
+
+#: ../rules/base.xml.in.h:447
+msgid "MNE"
+msgstr "MNE"
+
+#: ../rules/base.xml.in.h:448
+msgid "MacBook/MacBook Pro"
+msgstr "MacBook/MacBook Pro"
+
+#: ../rules/base.xml.in.h:449
+msgid "MacBook/MacBook Pro (Intl)"
+msgstr "MacBook/MacBook Pro (kansainvälinen)"
+
+#: ../rules/base.xml.in.h:450
+msgid "Macedonia"
+msgstr "Makedonia"
+
+#: ../rules/base.xml.in.h:451
+msgid "Macintosh"
+msgstr "Macintosh"
+
+#: ../rules/base.xml.in.h:452
+msgid "Macintosh (International)"
+msgstr "Macintosh (kansainvälinen)"
+
+#: ../rules/base.xml.in.h:453
+msgid "Macintosh Old"
+msgstr "Macintosh vanha"
+
+#: ../rules/base.xml.in.h:454
+msgid "Macintosh, Sun dead keys"
+msgstr "Macintosh, Sunin kuolleet näppäimet"
+
+#: ../rules/base.xml.in.h:455
+msgid "Macintosh, eliminate dead keys"
+msgstr "Macintosh, ei kuolleita näppäimiä"
+
+#: ../rules/base.xml.in.h:456
+msgid "Make Caps Lock an additional Backspace"
+msgstr "Tee Caps Lockista ylimääräinen askelpalautin"
+
+#: ../rules/base.xml.in.h:457
+msgid "Make Caps Lock an additional Ctrl"
+msgstr "Tee Caps Lockista ylimääräinen Ctrl"
+
+#: ../rules/base.xml.in.h:458
+msgid "Make Caps Lock an additional ESC"
+msgstr "Tee Caps Lockista ylimääräinen Esc"
+
+#: ../rules/base.xml.in.h:459
+msgid "Make Caps Lock an additional Hyper"
+msgstr "Tee Caps Lockista ylimääräinen Hyper"
+
+#: ../rules/base.xml.in.h:460
+msgid "Make Caps Lock an additional Num Lock"
+msgstr "Tee Caps Lockista ylimääräinen Num Lock"
+
+#: ../rules/base.xml.in.h:461
+msgid "Make Caps Lock an additional Super"
+msgstr "Tee Caps Lockista ylimääräinen Super"
+
+#: ../rules/base.xml.in.h:462
+msgid "Malayalam"
+msgstr "Malayalam"
+
+#: ../rules/base.xml.in.h:463
+msgid "Malayalam Lalitha"
+msgstr "Malayalam Lalitha"
+
+#: ../rules/base.xml.in.h:464
+msgid "Maldives"
+msgstr "Malediivit"
+
+#: ../rules/base.xml.in.h:465
+msgid "Mali"
+msgstr "Mali"
+
+#: ../rules/base.xml.in.h:466
+msgid "Malta"
+msgstr "Malta"
+
+#: ../rules/base.xml.in.h:467
+msgid "Maltese keyboard with US layout"
+msgstr "Maltalainen näppäimistö US-asettelulla"
+
+#: ../rules/base.xml.in.h:468
+msgid "Mao"
+msgstr "Mao"
+
+#: ../rules/base.xml.in.h:469
+msgid "Maori"
+msgstr "Maori"
+
+#: ../rules/base.xml.in.h:470
+msgid "Mdv"
+msgstr "Mdv"
+
+#: ../rules/base.xml.in.h:471
+msgid "Memorex MX1998"
+msgstr "Memorex MX1998"
+
+#: ../rules/base.xml.in.h:472
+msgid "Memorex MX2500 EZ-Access Keyboard"
+msgstr "Memorex MX2500 EZ-Access-näppäimistö"
+
+#: ../rules/base.xml.in.h:473
+msgid "Memorex MX2750"
+msgstr "Memorex MX2750"
+
+#: ../rules/base.xml.in.h:474
+msgid "Menu"
+msgstr "Valikko"
+
+#: ../rules/base.xml.in.h:475
+msgid "Meta is mapped to Left Win"
+msgstr "Meta tulee vasemmasta Win-näppäimestä"
+
+#: ../rules/base.xml.in.h:476
+msgid "Meta is mapped to Win keys"
+msgstr "Meta tulee Win-näppäimistä"
+
+#: ../rules/base.xml.in.h:477
+msgid "Microsoft Comfort Curve Keyboard 2000"
+msgstr "Microsoft Comfort Curve 2000 -näppäimistö"
+
+#: ../rules/base.xml.in.h:478
+msgid "Microsoft Internet Keyboard"
+msgstr "Microsoft-Internet-näppäimistö"
+
+#: ../rules/base.xml.in.h:479
+msgid "Microsoft Internet Keyboard Pro, Swedish"
+msgstr "Microsoft-Internet-näppäimistö Pro, ruotsalainen"
+
+#: ../rules/base.xml.in.h:480
+msgid "Microsoft Natural"
+msgstr "Microsoft Natural"
+
+#: ../rules/base.xml.in.h:481
+msgid "Microsoft Natural Keyboard Elite"
+msgstr "Microsoft Natural-näppäimistö Elite"
+
+#: ../rules/base.xml.in.h:482
+msgid "Microsoft Natural Keyboard Pro / Microsoft Internet Keyboard Pro"
+msgstr "Microsoft Natural-näppäimistö Pro / Microsoft-Internet-näppäimistö Pro"
+
+#: ../rules/base.xml.in.h:483
+msgid "Microsoft Natural Keyboard Pro OEM"
+msgstr "Microsoft Natural-näppäimistö Pro OEM"
+
+#: ../rules/base.xml.in.h:484
+msgid "Microsoft Natural Keyboard Pro USB / Microsoft Internet Keyboard Pro"
+msgstr "Microsoft Natural-näppäimistö Pro USB / Microsoft-Internet-näppäimistö Pro"
+
+#: ../rules/base.xml.in.h:485
+msgid "Microsoft Natural Wireless Ergonomic Keyboard 7000"
+msgstr "Microsoft Natural Wireless Ergonomic -näppäimistö 7000"
+
+#: ../rules/base.xml.in.h:486
+msgid "Microsoft Office Keyboard"
+msgstr "Microsoft Office-näppäimistö"
+
+#: ../rules/base.xml.in.h:487
+msgid "Microsoft Wireless Multimedia Keyboard 1.0A"
+msgstr "Microsoft-langaton multimedianäppämistö 1.0A"
+
+#: ../rules/base.xml.in.h:488
+msgid "Miscellaneous compatibility options"
+msgstr "Sekalaisia yhteensopivuusvalintoja"
+
+#: ../rules/base.xml.in.h:489
+msgid "Mkd"
+msgstr "Mkd"
+
+#: ../rules/base.xml.in.h:490
+msgid "Mli"
+msgstr "Mli"
+
+#: ../rules/base.xml.in.h:491
+msgid "Mlt"
+msgstr "Mlt"
+
+#: ../rules/base.xml.in.h:492
+msgid "Mmr"
+msgstr "Mmr"
+
+#: ../rules/base.xml.in.h:493
+msgid "Mng"
+msgstr "Mng"
+
+#: ../rules/base.xml.in.h:494
+msgid "Mongolia"
+msgstr "Mongolia"
+
+#: ../rules/base.xml.in.h:495
+msgid "Montenegro"
+msgstr "Montenegro"
+
+#: ../rules/base.xml.in.h:496
+msgid "Morocco"
+msgstr "Marokko"
+
+#: ../rules/base.xml.in.h:497
+msgid "Multilingual"
+msgstr "Monikielinen"
+
+#: ../rules/base.xml.in.h:498
+msgid "Multilingual, first part"
+msgstr "Monikielinen, ensimmäinen osa"
+
+#: ../rules/base.xml.in.h:499
+msgid "Multilingual, second part"
+msgstr "Monikielinen, toinen osa"
+
+#: ../rules/base.xml.in.h:500
+msgid "Myanmar"
+msgstr "Myanmar"
+
+#: ../rules/base.xml.in.h:501
+msgid "NICOLA-F style Backspace"
+msgstr "NICOLA-F-tyylin Backspace"
+
+#: ../rules/base.xml.in.h:502
+msgid "NLA"
+msgstr "NLA"
+
+#: ../rules/base.xml.in.h:503
+msgid "Nativo"
+msgstr "Nativo"
+
+#: ../rules/base.xml.in.h:504
+msgid "Nativo for Esperanto"
+msgstr "Nativo esperantolle"
+
+#: ../rules/base.xml.in.h:505
+msgid "Nativo for USA keyboards"
+msgstr "Nativo yhdysvaltalaisille näppäimistöille"
+
+#: ../rules/base.xml.in.h:506
+msgid "Neo 2"
+msgstr "Neo 2"
+
+#: ../rules/base.xml.in.h:507
+msgid "Nepal"
+msgstr "Nepal"
+
+#: ../rules/base.xml.in.h:508
+msgid "Netherlands"
+msgstr "Alankomaat"
+
+#: ../rules/base.xml.in.h:509
+msgid "New phonetic"
+msgstr "Uusi foneettinen"
+
+#: ../rules/base.xml.in.h:510
+msgid "Nga"
+msgstr "Nga"
+
+#: ../rules/base.xml.in.h:511
+msgid "Nigeria"
+msgstr "Nigeria"
+
+#: ../rules/base.xml.in.h:512
+msgid "Nld"
+msgstr "Nld"
+
+#: ../rules/base.xml.in.h:513
+msgid "Non-breakable space character at fourth level"
+msgstr "Sitova välilyöntimerkki 4. tasolla"
+
+#: ../rules/base.xml.in.h:514
+msgid "Non-breakable space character at fourth level, thin non-breakable space character at sixth level"
+msgstr "Sitova välilyöntimerkki 4. tasolla ja kapea sitova välilyöntimerkki 6. tasolla"
+
+#: ../rules/base.xml.in.h:515
+msgid "Non-breakable space character at fourth level, thin non-breakable space character at sixth level (via Ctrl+Shift)"
+msgstr "Sitova välilyöntimerkki 4. tasolla, kapea sitova välilyöntimerkki 6. tasolla (Ctrl+Shift)"
+
+#: ../rules/base.xml.in.h:516
+msgid "Non-breakable space character at second level"
+msgstr "Sitova välilyöntimerkki 2. tasolla"
+
+#: ../rules/base.xml.in.h:517
+msgid "Non-breakable space character at third level"
+msgstr "Sitova välilyöntimerkki 3. tasolla"
+
+#: ../rules/base.xml.in.h:518
+msgid "Non-breakable space character at third level, nothing at fourth level"
+msgstr "Sitova välilyöntimerkki 3. tasolla eikä mitään 4. tasolla"
+
+#: ../rules/base.xml.in.h:519
+msgid "Non-breakable space character at third level, thin non-breakable space character at fourth level"
+msgstr "Sitova välilyöntimerkki 3. tasolla, kapea sitova välilyöntimerkki 4. tasolla"
+
+#: ../rules/base.xml.in.h:520
+msgid "Nor"
+msgstr "Nor"
+
+#: ../rules/base.xml.in.h:521
+msgid "Northern Saami"
+msgstr "Pohjoissaami"
+
+#: ../rules/base.xml.in.h:522
+msgid "Northern Saami, eliminate dead keys"
+msgstr "Pohjoissaami, ei kuolleita näppäimiä"
+
+#: ../rules/base.xml.in.h:523
+msgid "Northgate OmniKey 101"
+msgstr "Northgate OmniKey 101"
+
+#: ../rules/base.xml.in.h:524
+msgid "Norway"
+msgstr "Norja"
+
+#: ../rules/base.xml.in.h:525
+msgid "Npl"
+msgstr "Npl"
+
+#: ../rules/base.xml.in.h:526
+msgid "Num Lock"
+msgstr "Num Lock"
+
+#: ../rules/base.xml.in.h:527
+msgid "Numeric keypad delete key behaviour"
+msgstr "Numerosormion Del-näppäimen toiminta"
+
+#: ../rules/base.xml.in.h:528
+msgid "Numeric keypad keys work as with Mac"
+msgstr "Sormionäppäimet toimivat kuten Macissa"
+
+#: ../rules/base.xml.in.h:529
+msgid "Numeric keypad layout selection"
+msgstr "Sormion asettelun valinta"
+
+#: ../rules/base.xml.in.h:530
+msgid "OADG 109A"
+msgstr "OADG 109A"
+
+#: ../rules/base.xml.in.h:531
+msgid "OLPC"
+msgstr "OLPC"
+
+#: ../rules/base.xml.in.h:532
+msgid "OLPC Dari"
+msgstr "OLPC, dari"
+
+#: ../rules/base.xml.in.h:533
+msgid "OLPC Pashto"
+msgstr "OLPC, pashto"
+
+#: ../rules/base.xml.in.h:534
+msgid "OLPC Southern Uzbek"
+msgstr "OLPC, eteläinen uzbeekki"
+
+#: ../rules/base.xml.in.h:535
+msgid "Occitan"
+msgstr "oksitaani"
+
+#: ../rules/base.xml.in.h:536
+msgid "Ogham"
+msgstr "Ogham"
+
+#: ../rules/base.xml.in.h:537
+msgid "Ogham IS434"
+msgstr "Ogham IS434"
+
+#: ../rules/base.xml.in.h:538
+msgid "Oriya"
+msgstr "Oriya"
+
+#: ../rules/base.xml.in.h:539
+msgid "Ortek MCK-800 MM/Internet keyboard"
+msgstr "Ortek MCK-800 MM/Internet-näppäimistö"
+
+#: ../rules/base.xml.in.h:540
+msgid "Ossetian"
+msgstr "Ossetia"
+
+#: ../rules/base.xml.in.h:541
+msgid "Ossetian, Winkeys"
+msgstr "Ossetia, Win-näppäimet"
+
+#: ../rules/base.xml.in.h:542
+msgid "Ossetian, legacy"
+msgstr "Ossetia, vanha"
+
+#: ../rules/base.xml.in.h:543
+msgid "PC-98xx Series"
+msgstr "PC-98xx-sarja"
+
+#: ../rules/base.xml.in.h:544
+msgid "Pak"
+msgstr "Pak"
+
+#: ../rules/base.xml.in.h:545
+msgid "Pakistan"
+msgstr "Pakistan"
+
+#: ../rules/base.xml.in.h:546
+msgid "Pannonian Rusyn Homophonic"
+msgstr "Homofooninen Pannonian ruteeni"
+
+#: ../rules/base.xml.in.h:547
+msgid "Pashto"
+msgstr "Pashto"
+
+#: ../rules/base.xml.in.h:548
+msgid "Pattachote"
+msgstr "Pattachote"
+
+#: ../rules/base.xml.in.h:549
+msgid "Pause"
+msgstr "Tauko"
+
+#: ../rules/base.xml.in.h:550
+msgid "Persian, with Persian Keypad"
+msgstr "Persia, persialaisella sormiolla"
+
+#: ../rules/base.xml.in.h:551
+msgid "Phonetic"
+msgstr "Foneettinen"
+
+#: ../rules/base.xml.in.h:552
+msgid "Phonetic Winkeys"
+msgstr "Foneettinen, Win-näppäimet"
+
+#: ../rules/base.xml.in.h:553
+msgid "Pol"
+msgstr "Pol"
+
+#: ../rules/base.xml.in.h:554
+msgid "Poland"
+msgstr "Puola"
+
+#: ../rules/base.xml.in.h:555
+msgid "Polytonic"
+msgstr "Polytoninen"
+
+#: ../rules/base.xml.in.h:556
+msgid "Portugal"
+msgstr "Portugali"
+
+#: ../rules/base.xml.in.h:557
+msgid "Probhat"
+msgstr "Probhat"
+
+#: ../rules/base.xml.in.h:558
+msgid "Programmer Dvorak"
+msgstr "Ohjelmoijan dvorak"
+
+#: ../rules/base.xml.in.h:559
+msgid "Propeller Voyager (KTEZ-1000)"
+msgstr "Propeller Voyager (KTEZ-1000)"
+
+#: ../rules/base.xml.in.h:560
+msgid "Prt"
+msgstr "Prt"
+
+#: ../rules/base.xml.in.h:561
+msgid "PrtSc"
+msgstr "PrtSc"
+
+#: ../rules/base.xml.in.h:562
+msgid "QTronix Scorpius 98N+"
+msgstr "QTronix Scorpius 98N+"
+
+#: ../rules/base.xml.in.h:563
+msgid "Right Alt"
+msgstr "Oikea Alt"
+
+#: ../rules/base.xml.in.h:564
+msgid "Right Alt (while pressed)"
+msgstr "Oikea Alt (painettaessa)"
+
+#: ../rules/base.xml.in.h:565
+msgid "Right Alt chooses 5th level, locks when pressed together with another 5th-level-chooser"
+msgstr "Oikea Alt valitsee 5. tason, lukitsee kun painetaan yhdessä toisen 5. tason valitsimen kanssa"
+
+#: ../rules/base.xml.in.h:566
+msgid "Right Alt chooses 5th level, locks when pressed together with another 5th-level-chooser, one press releases the lock"
+msgstr "Oikea Alt valitsee 5. tason, lukitsee kun painetaan yhdessä toisen 5. tason valitsimen kanssa, yksi painallus vapauttaa lukon"
+
+#: ../rules/base.xml.in.h:567
+msgid "Right Alt key never chooses 3rd level"
+msgstr "Oikea Alt-näppäin ei koskaan valitse kolmatta tasoa"
+
+#: ../rules/base.xml.in.h:568
+msgid "Right Alt, Shift+Right Alt key is Multi_Key"
+msgstr "Oikea Alt, Shift-Oikea Alt on Multi_Key"
+
+#: ../rules/base.xml.in.h:569
+msgid "Right Ctrl"
+msgstr "Oikea Ctrl"
+
+#: ../rules/base.xml.in.h:570
+msgid "Right Ctrl (while pressed)"
+msgstr "Oikea Ctrl (painettaessa)"
+
+#: ../rules/base.xml.in.h:571
+msgid "Right Ctrl as Right Alt"
+msgstr "Oikea Ctrl kuten oikea Alt"
+
+#: ../rules/base.xml.in.h:572
+msgid "Right Ctrl+Right Shift"
+msgstr "Oikea Ctrl+Oikea Shift"
+
+#: ../rules/base.xml.in.h:573
+msgid "Right Shift"
+msgstr "Oikea Shift"
+
+#: ../rules/base.xml.in.h:574
+msgid "Right Win"
+msgstr "Oikea Win"
+
+#: ../rules/base.xml.in.h:575
+msgid "Right Win (while pressed)"
+msgstr "Oikea Win (painettaessa)"
+
+#: ../rules/base.xml.in.h:576
+msgid "Right Win chooses 5th level, locks when pressed together with another 5th-level-chooser"
+msgstr "Oikea Win valitsee 5. tason, lukitsee kun painetaan yhdessä toisen 5. tason valitsimen kanssa"
+
+#: ../rules/base.xml.in.h:577
+msgid "Right Win chooses 5th level, locks when pressed together with another 5th-level-chooser, one press releases the lock"
+msgstr "Oikea Win valitsee 5. tason, lukitsee kun painetaan yhdessä toisen 5. tason valitsimen kanssa, yksi painallus vapauttaa lukon"
+
+#: ../rules/base.xml.in.h:578
+msgid "Right hand"
+msgstr "Oikeakätinen"
+
+#: ../rules/base.xml.in.h:579
+msgid "Right handed Dvorak"
+msgstr "Oikeakätinen dvorak"
+
+#: ../rules/base.xml.in.h:580
+msgid "Romania"
+msgstr "Romania"
+
+#: ../rules/base.xml.in.h:581
+msgid "Romanian keyboard with German letters"
+msgstr "Romanialainen näppäimistö saksalaisilla kirjaimilla"
+
+#: ../rules/base.xml.in.h:582
+msgid "Romanian keyboard with German letters, eliminate dead keys"
+msgstr "Romanialainen näppäimistö saksalaisilla kirjaimilla, ei kuolleita näppäimiä"
+
+#: ../rules/base.xml.in.h:583
+msgid "Rou"
+msgstr "Rou"
+
+#: ../rules/base.xml.in.h:584
+msgid "Rus"
+msgstr "Rus"
+
+#: ../rules/base.xml.in.h:585
+msgid "Russia"
+msgstr "Venäjä"
+
+#: ../rules/base.xml.in.h:586
+msgid "Russian"
+msgstr "Venäläinen"
+
+#: ../rules/base.xml.in.h:587
+msgid "Russian phonetic"
+msgstr "Venäläinen foneettinen"
+
+#: ../rules/base.xml.in.h:588
+msgid "Russian phonetic Dvorak"
+msgstr "Venäläinen foneettinen dvorak"
+
+#: ../rules/base.xml.in.h:589
+msgid "Russian phonetic, eliminate dead keys"
+msgstr "Venäläinen foneettinen, ei kuolleita näppäimiä"
+
+#: ../rules/base.xml.in.h:590
+msgid "Russian with Kazakh"
+msgstr "Venäjä kazakhin kanssa"
+
+#: ../rules/base.xml.in.h:591
+msgid "SILVERCREST Multimedia Wireless Keyboard"
+msgstr "SILVERCREST langaton multimedianäppäimistö"
+
+#: ../rules/base.xml.in.h:592
+msgid "SK-1300"
+msgstr "SK-1300"
+
+#: ../rules/base.xml.in.h:593
+msgid "SK-2500"
+msgstr "SK-2500"
+
+#: ../rules/base.xml.in.h:594
+msgid "SK-6200"
+msgstr "SK-6200"
+
+#: ../rules/base.xml.in.h:595
+msgid "SK-7100"
+msgstr "SK-7100"
+
+#: ../rules/base.xml.in.h:596 ../rules/base.extras.xml.in.h:9
+msgid "SRB"
+msgstr "SRB"
+
+#: ../rules/base.xml.in.h:597
+msgid "SVEN Ergonomic 2500"
+msgstr "SVEN Ergonomic 2500"
+
+#: ../rules/base.xml.in.h:598
+msgid "SVEN Slim 303"
+msgstr "SVEN Slim 303"
+
+#: ../rules/base.xml.in.h:599
+msgid "Samsung SDM 4500P"
+msgstr "Samsung SDM 4500P"
+
+#: ../rules/base.xml.in.h:600
+msgid "Samsung SDM 4510P"
+msgstr "Samsung SDM 4510P"
+
+#: ../rules/base.xml.in.h:601
+msgid "Scroll Lock"
+msgstr "Scroll Lock"
+
+#: ../rules/base.xml.in.h:602
+msgid "Secwepemctsin"
+msgstr "Secwepemctsin"
+
+#: ../rules/base.xml.in.h:603
+msgid "Semi-colon on third level"
+msgstr "Puolipilkku kolmannella tasolla"
+
+#: ../rules/base.xml.in.h:604
+msgid "Sen"
+msgstr "Sen"
+
+#: ../rules/base.xml.in.h:605
+msgid "Senegal"
+msgstr "Senegal"
+
+#: ../rules/base.xml.in.h:606 ../rules/base.extras.xml.in.h:10
+msgid "Serbia"
+msgstr "Serbia"
+
+#: ../rules/base.xml.in.h:607
+msgid "Serbian"
+msgstr "Serbialainen"
+
+#: ../rules/base.xml.in.h:608
+msgid "Shift cancels Caps Lock"
+msgstr "Shift kumoaa Caps Lockin"
+
+#: ../rules/base.xml.in.h:609
+msgid "Shift does not cancel Num Lock, chooses 3rd level instead"
+msgstr "Shift ei kumoa Num Lockia, valitsee 3. tason sen sijaan"
+
+#: ../rules/base.xml.in.h:610
+msgid "Shift with numeric keypad keys works as in MS Windows"
+msgstr "Shift ja sormionäppäimet toimivat kuten MS Windowsissa"
+
+#: ../rules/base.xml.in.h:611
+msgid "Shift+Caps Lock"
+msgstr "Shift+Caps Lock"
+
+#: ../rules/base.xml.in.h:612
+msgid "Simple"
+msgstr "yksinkertainen"
+
+#: ../rules/base.xml.in.h:613
+msgid "Sindhi"
+msgstr "Sindhi"
+
+#: ../rules/base.xml.in.h:614
+msgid "Slovakia"
+msgstr "Slovakia"
+
+#: ../rules/base.xml.in.h:615
+msgid "Slovenia"
+msgstr "Slovenia"
+
+#: ../rules/base.xml.in.h:616
+msgid "South Africa"
+msgstr "Etelä-Afrikka"
+
+#: ../rules/base.xml.in.h:617
+msgid "Southern Uzbek"
+msgstr "Eteläinen uzbeekki"
+
+#: ../rules/base.xml.in.h:618
+msgid "Spain"
+msgstr "Espanja"
+
+#: ../rules/base.xml.in.h:619
+msgid "Special keys (Ctrl+Alt+&lt;key&gt;) handled in a server"
+msgstr "Erikoisnäppäimet (Ctrl+Alt+&lt;näppäin&gt;) käsitellään palvelimessa"
+
+#: ../rules/base.xml.in.h:620
+msgid "Sri Lanka"
+msgstr "Sri Lanka"
+
+#: ../rules/base.xml.in.h:621
+msgid "Standard"
+msgstr "Tavallinen"
+
+#: ../rules/base.xml.in.h:622
+msgid "Standard (Cedilla)"
+msgstr "Tavallinen (Pilkku alla)"
+
+#. RSTU 2019-91
+#: ../rules/base.xml.in.h:624
+msgid "Standard RSTU"
+msgstr "Tavallinen RSTU"
+
+#. RSTU 2019-91
+#: ../rules/base.xml.in.h:626
+msgid "Standard RSTU on Russian layout"
+msgstr "Tavallinen RSTU venäläisellä asettelulla"
+
+#: ../rules/base.xml.in.h:627
+msgid "Sun Type 5/6"
+msgstr "Sun Type 5/6"
+
+#: ../rules/base.xml.in.h:628
+msgid "Sun dead keys"
+msgstr "Sunin kuolleet näppäimet"
+
+#: ../rules/base.xml.in.h:629
+msgid "Super Power Multimedia Keyboard"
+msgstr "Super Power -multimedianäppäimistö"
+
+#: ../rules/base.xml.in.h:630
+msgid "Svdvorak"
+msgstr "Svdvorak"
+
+#: ../rules/base.xml.in.h:631
+msgid "Svk"
+msgstr "Svk"
+
+#: ../rules/base.xml.in.h:632
+msgid "Svn"
+msgstr "Svn"
+
+#: ../rules/base.xml.in.h:633
+msgid "Swap Ctrl and Caps Lock"
+msgstr "Vaihda Ctrl ja Caps Lock"
+
+#: ../rules/base.xml.in.h:634
+msgid "Swap ESC and Caps Lock"
+msgstr "Vaihda Esc ja Caps Lock"
+
+#: ../rules/base.xml.in.h:635
+msgid "Swe"
+msgstr "Swe"
+
+#: ../rules/base.xml.in.h:636
+msgid "Sweden"
+msgstr "Ruotsi"
+
+#: ../rules/base.xml.in.h:637
+msgid "Switzerland"
+msgstr "Sveitsi"
+
+#: ../rules/base.xml.in.h:638
+msgid "Symplon PaceBook (tablet PC)"
+msgstr "Symplon PaceBook (lehtiö-PC)"
+
+#: ../rules/base.xml.in.h:639
+msgid "Syr"
+msgstr "Syr"
+
+#: ../rules/base.xml.in.h:640
+msgid "Syria"
+msgstr "Syyria"
+
+#: ../rules/base.xml.in.h:641
+msgid "Syriac"
+msgstr "Syyrialainen"
+
+#: ../rules/base.xml.in.h:642
+msgid "Syriac phonetic"
+msgstr "Syyrialainen foneettinen"
+
+#: ../rules/base.xml.in.h:643
+msgid "TIS-820.2538"
+msgstr "TIS-820.2538"
+
+#: ../rules/base.xml.in.h:644
+msgid "Tajikistan"
+msgstr "Tadžikistan"
+
+#: ../rules/base.xml.in.h:645
+msgid "Tamil"
+msgstr "Tamili"
+
+#: ../rules/base.xml.in.h:646
+msgid "Tamil Keyboard with Numerals"
+msgstr "Tamilinäppäimistö numeroilla"
+
+#: ../rules/base.xml.in.h:647
+msgid "Tamil TAB Typewriter"
+msgstr "Tamili TAB Typewriter"
+
+#: ../rules/base.xml.in.h:648
+msgid "Tamil TSCII Typewriter"
+msgstr "Tamili TSCII Typewriter"
+
+#: ../rules/base.xml.in.h:649
+msgid "Tamil Unicode"
+msgstr "Tamili Unicode"
+
+#: ../rules/base.xml.in.h:650
+msgid "Tanzania"
+msgstr "Tansania"
+
+#: ../rules/base.xml.in.h:651
+msgid "Targa Visionary 811"
+msgstr "Targa Visionary 811"
+
+#: ../rules/base.xml.in.h:652
+msgid "Tatar"
+msgstr "Tataari"
+
+#: ../rules/base.xml.in.h:653
+msgid "Telugu"
+msgstr "Telugu"
+
+#: ../rules/base.xml.in.h:654
+msgid "Tha"
+msgstr "Tha"
+
+#: ../rules/base.xml.in.h:655
+msgid "Thailand"
+msgstr "Thaimaa"
+
+#: ../rules/base.xml.in.h:656
+msgid "Tibetan"
+msgstr "Tiibet"
+
+#: ../rules/base.xml.in.h:657
+msgid "Tibetan (with ASCII numerals)"
+msgstr "Tiibet (ASCII-numeroilla)"
+
+#: ../rules/base.xml.in.h:658
+msgid "Tifinagh"
+msgstr "Tifinagh"
+
+#: ../rules/base.xml.in.h:659
+msgid "Tifinagh alternative"
+msgstr "Tifinagh, vaihtoehtoinen"
+
+#: ../rules/base.xml.in.h:660
+msgid "Tifinagh alternative phonetic"
+msgstr "Tifinagh, vaihtoehtoinen foneettinen"
+
+#: ../rules/base.xml.in.h:661
+msgid "Tifinagh extended"
+msgstr "Tifinagh, laajennettu"
+
+#: ../rules/base.xml.in.h:662
+msgid "Tifinagh extended phonetic"
+msgstr "Tifinagh, laajennettu foneettinen"
+
+#: ../rules/base.xml.in.h:663
+msgid "Tifinagh phonetic"
+msgstr "Tifinagh, foneettinen"
+
+#: ../rules/base.xml.in.h:664
+msgid "Tilde (~) variant"
+msgstr "Tildemuunnos (~)"
+
+#: ../rules/base.xml.in.h:665
+msgid "Tjk"
+msgstr "Tjk"
+
+#: ../rules/base.xml.in.h:666
+msgid "Tkm"
+msgstr "Tkm"
+
+#: ../rules/base.xml.in.h:667
+msgid "To the corresponding key in a Dvorak keyboard."
+msgstr "Vastaavaan näppäimeen Dvorak-näppäimistössä."
+
+#: ../rules/base.xml.in.h:668
+msgid "To the corresponding key in a Qwerty keyboard."
+msgstr "Vastaavaan näppäimeen Qwerty-näppäimistössä."
+
+#: ../rules/base.xml.in.h:669
+msgid "Toshiba Satellite S3000"
+msgstr "Toshiba Satellite S3000"
+
+#: ../rules/base.xml.in.h:670
+msgid "Traditional phonetic"
+msgstr "Perinteinen foneettinen"
+
+#: ../rules/base.xml.in.h:671
+msgid "Trust Direct Access Keyboard"
+msgstr "Trust Direct Access Keyboard"
+
+#: ../rules/base.xml.in.h:672
+msgid "Trust Slimline"
+msgstr "Trust Slimline"
+
+#: ../rules/base.xml.in.h:673
+msgid "Trust Wireless Keyboard Classic"
+msgstr "Trust Wireless Keyboard Classic"
+
+#: ../rules/base.xml.in.h:674
+msgid "Tur"
+msgstr "Tur"
+
+#: ../rules/base.xml.in.h:675
+msgid "Turkey"
+msgstr "Turkki"
+
+#: ../rules/base.xml.in.h:676
+msgid "Turkmenistan"
+msgstr "Turkmenistan"
+
+#: ../rules/base.xml.in.h:677
+msgid "TypeMatrix EZ-Reach 2020"
+msgstr "TypeMatrix EZ-Reach 2020"
+
+#: ../rules/base.xml.in.h:678
+msgid "TypeMatrix EZ-Reach 2030 PS2"
+msgstr "TypeMatrix EZ-Reach 2030 PS2"
+
+#: ../rules/base.xml.in.h:679
+msgid "TypeMatrix EZ-Reach 2030 USB"
+msgstr "TypeMatrix EZ-Reach 2030 USB"
+
+#: ../rules/base.xml.in.h:680
+msgid "TypeMatrix EZ-Reach 2030 USB (102/105:EU mode)"
+msgstr "TypeMatrix EZ-Reach 2030 USB (102/105:EU-tila)"
+
+#: ../rules/base.xml.in.h:681
+msgid "TypeMatrix EZ-Reach 2030 USB (106:JP mode)"
+msgstr "TypeMatrix EZ-Reach 2030 USB (106:JP-tila)"
+
+#: ../rules/base.xml.in.h:682
+msgid "Typewriter"
+msgstr "Kirjoituskone"
+
+#: ../rules/base.xml.in.h:683
+msgid "Typewriter, legacy"
+msgstr "Kirjoituskone, perinteinen"
+
+#: ../rules/base.xml.in.h:684
+msgid "Tza"
+msgstr "Tza"
+
+#: ../rules/base.xml.in.h:685
+msgid "UCW layout (accented letters only)"
+msgstr "UCW-asettelu (vain aksenttikirjaimet)"
+
+#: ../rules/base.xml.in.h:686
+msgid "US Dvorak with CZ UCW support"
+msgstr "Yhdysvaltalainen Dvorak CZ UCW -tuella"
+
+#: ../rules/base.xml.in.h:687
+msgid "US keyboard with Bosnian digraphs"
+msgstr "Yhdysvaltalainen näppäimistö bosnialaisilla merkkipareilla"
+
+#: ../rules/base.xml.in.h:688
+msgid "US keyboard with Bosnian letters"
+msgstr "Yhdysvaltalainen näppäimistö bosnialaisilla kirjaimilla"
+
+#: ../rules/base.xml.in.h:689
+msgid "US keyboard with Croatian digraphs"
+msgstr "Yhdysvaltalainen näppäimistö kroatialaisilla merkkipareilla"
+
+#: ../rules/base.xml.in.h:690
+msgid "US keyboard with Croatian letters"
+msgstr "Yhdysvaltalainen näppäimistö kroatialaisilla kirjaimilla"
+
+#: ../rules/base.xml.in.h:691
+msgid "US keyboard with Estonian letters"
+msgstr "Yhdysvaltalainen näppäimistö virolaisilla kirjaimilla"
+
+#: ../rules/base.xml.in.h:692
+msgid "US keyboard with Italian letters"
+msgstr "Yhdysvaltalainen näppäimistö italialaisilla kirjaimilla"
+
+#: ../rules/base.xml.in.h:693
+msgid "US keyboard with Lithuanian letters"
+msgstr "Yhdysvaltalainen näppäimistö liettualaisilla kirjaimilla"
+
+#: ../rules/base.xml.in.h:694
+msgid "US keyboard with Slovenian letters"
+msgstr "Yhdysvaltalainen näppäimistö slovenialaisilla kirjaimilla"
+
+#: ../rules/base.xml.in.h:695 ../rules/base.extras.xml.in.h:11
+msgid "USA"
+msgstr "USA"
+
+#: ../rules/base.xml.in.h:696
+msgid "Udmurt"
+msgstr "Udmurt"
+
+#: ../rules/base.xml.in.h:697
+msgid "Ukr"
+msgstr "Ukr"
+
+#: ../rules/base.xml.in.h:698
+msgid "Ukraine"
+msgstr "Ukraina"
+
+#: ../rules/base.xml.in.h:699
+msgid "Unicode additions (arrows and math operators)"
+msgstr "Unicode-lisäosat (nuolet ja matematiikkatoiminnot)"
+
+#: ../rules/base.xml.in.h:700
+msgid "Unicode additions (arrows and math operators). Math operators on default level"
+msgstr "Unicode-lisäosat (nuolet ja matematiikkatoiminnot). Matematiikkatoiminnot oletustasolla"
+
+#: ../rules/base.xml.in.h:701
+msgid "UnicodeExpert"
+msgstr "Unicode-asiantuntija"
+
+#: ../rules/base.xml.in.h:702
+msgid "United Kingdom"
+msgstr "Iso-Britannia"
+
+#: ../rules/base.xml.in.h:703
+msgid "Unitek KB-1925"
+msgstr "Unitek KB-1925"
+
+#: ../rules/base.xml.in.h:704
+msgid "Urdu, Alternative phonetic"
+msgstr "Urdu, vaihtoehtoinen foneettinen"
+
+#: ../rules/base.xml.in.h:705
+msgid "Urdu, Phonetic"
+msgstr "Urdu, foneettinen"
+
+#: ../rules/base.xml.in.h:706
+msgid "Urdu, Winkeys"
+msgstr "Urdu, Win-näppäimet"
+
+#: ../rules/base.xml.in.h:707
+msgid "Use Bosnian digraphs"
+msgstr "Käytä bosnialaisia merkkipareja"
+
+#: ../rules/base.xml.in.h:708
+msgid "Use Croatian digraphs"
+msgstr "Käytä kroatialaisia merkkipareja"
+
+#: ../rules/base.xml.in.h:709
+msgid "Use guillemets for quotes"
+msgstr "Käytä guillemot-lainausmerkkejä"
+
+#: ../rules/base.xml.in.h:710
+msgid "Use keyboard LED to show alternative layout"
+msgstr "Käytä näppäimistö-lediä näyttämään vaihtoehtoista asettelua"
+
+#: ../rules/base.xml.in.h:711
+msgid "Using space key to input non-breakable space character"
+msgstr "Sitovan välilyöntimerkin syöttäminen"
+
+#: ../rules/base.xml.in.h:712
+msgid "Usual space at any level"
+msgstr "Normaali välilyönti kaikilla tasoilla"
+
+#: ../rules/base.xml.in.h:713
+msgid "Uzb"
+msgstr "Uzb"
+
+#: ../rules/base.xml.in.h:714
+msgid "Uzbekistan"
+msgstr "Uzbekistan"
+
+#: ../rules/base.xml.in.h:715
+msgid "Vietnam"
+msgstr "Vietnam"
+
+#: ../rules/base.xml.in.h:716
+msgid "ViewSonic KU-306 Internet Keyboard"
+msgstr "ViewSonic KU-306 Internet -näppäimistö"
+
+#: ../rules/base.xml.in.h:717
+msgid "Vnm"
+msgstr "Vnm"
+
+#: ../rules/base.xml.in.h:718
+msgid "Wang 724 keypad with unicode additions (arrows and math operators)"
+msgstr "Wang 724 -sormio Unicode-lisäyksin (nuolet sekä matematiikkaoperaatiot)"
+
+#: ../rules/base.xml.in.h:719
+msgid "Wang 724 keypad with unicode additions (arrows and math operators). Math operators on default level"
+msgstr "Wang 724 -sormio Unicode-lisäyksin (nuolet sekä matematiikkaoperaatiot). Matematiikkaoperaatiot oletustasolla"
+
+#: ../rules/base.xml.in.h:720
+msgid "Wang model 724 azerty"
+msgstr "Wang malli 724 azerty"
+
+#: ../rules/base.xml.in.h:721
+msgid "Western"
+msgstr "Läntinen"
+
+#: ../rules/base.xml.in.h:722
+msgid "Winbook Model XP5"
+msgstr "Winbook Model XP5"
+
+#: ../rules/base.xml.in.h:723
+msgid "Winkeys"
+msgstr "Win-näppäimet"
+
+#: ../rules/base.xml.in.h:724
+msgid "With &lt;\\|&gt; key"
+msgstr "&lt;\\|&gt;-näppäimillä"
+
+#: ../rules/base.xml.in.h:725
+msgid "With EuroSign on 5"
+msgstr "Euro-merkki 5-näppäimessä"
+
+#: ../rules/base.xml.in.h:726
+msgid "With guillemets"
+msgstr "Guillemot-lainausmerkeillä"
+
+#: ../rules/base.xml.in.h:727
+msgid "Yahoo! Internet Keyboard"
+msgstr "Yahoo!-Internet-näppäimistö"
+
+#: ../rules/base.xml.in.h:728
+msgid "Yakut"
+msgstr "Yakut"
+
+#: ../rules/base.xml.in.h:729
+msgid "Yoruba"
+msgstr "Yoruba"
+
+#: ../rules/base.xml.in.h:730
+msgid "Z and ZHE swapped"
+msgstr "Z ja ZHE vaihdettu"
+
+#: ../rules/base.xml.in.h:731
+msgid "Zaf"
+msgstr "Zaf"
+
+#: ../rules/base.xml.in.h:732
+msgid "Zero-width non-joiner character at second level"
+msgstr "Leveydetön ei-yhdistävä merkki 2. tasolla"
+
+#: ../rules/base.xml.in.h:733
+msgid "Zero-width non-joiner character at second level, non-breakable space character at third level"
+msgstr "Leveydetön ei-yhdistävä merkki 2. tasolla, sitova välilyöntimerkki 3. tasolla"
+
+#: ../rules/base.xml.in.h:734
+msgid "Zero-width non-joiner character at second level, non-breakable space character at third level, nothing at fourth level"
+msgstr "Leveydetön ei-yhdistävä merkki 2. tasolla, sitova välilyöntimerkki 3. tasolla eikä mitään 4. tasolla"
+
+#: ../rules/base.xml.in.h:735
+msgid "Zero-width non-joiner character at second level, non-breakable space character at third level, thin non-breakable space at fourth level"
+msgstr "Leveydetön ei-yhdistävä merkki 2. tsaolla, sitova välilyöntimerkki 3. tasolla, kapea sitova välilyöntimerkki 4. tasolla"
+
+#: ../rules/base.xml.in.h:736
+msgid "Zero-width non-joiner character at second level, non-breakable space character at third level, zero-width joiner at fourth level"
+msgstr "Leveydetön ei-yhdistävä merkki 2. tasolla, sitova välilyöntimerkki 3. tasolla ja leveydetön yhdistävä merkki 4. tasolla"
+
+#: ../rules/base.xml.in.h:737
+msgid "Zero-width non-joiner character at second level, zero-width joiner character at third level"
+msgstr "Leveydetön ei-yhdistävä merkki 2. tasolla, leveydetön yhdistävä merkki 3. tasolla"
+
+#: ../rules/base.xml.in.h:738
+msgid "Zero-width non-joiner character at second level, zero-width joiner character at third level, non-breakable space character at fourth level"
+msgstr "Leveydetön ei-yhdistävä merkki 2. tasolla, leveydetön yhdistävä merkki 3. tasolla, sitova välilyöntimerkki 4. tasolla"
+
+#: ../rules/base.xml.in.h:739
+msgid "Zero-width non-joiner character at third level, zero-width joiner at fourth level"
+msgstr "Leveydetön ei-yhdistävä merkki 3. tasolla ja leveydetön yhdistävä merkki 4. tasolla"
+
+#: ../rules/base.xml.in.h:740
+msgid "azerty"
+msgstr "azerty"
+
+#: ../rules/base.xml.in.h:741
+msgid "azerty/digits"
+msgstr "azerty/numerot"
+
+#: ../rules/base.xml.in.h:742
+msgid "digits"
+msgstr "numerot"
+
+#: ../rules/base.xml.in.h:743
+msgid "displaced semicolon and quote (obsolete)"
+msgstr "sijoiltaan olevat puolipilkku ja lainaismekrki (vanhentunut)"
+
+#: ../rules/base.xml.in.h:744
+msgid "lyx"
+msgstr "lyx"
+
+#: ../rules/base.xml.in.h:745
+msgid "qwerty"
+msgstr "qwerty"
+
+#: ../rules/base.xml.in.h:746
+msgid "qwerty, extended Backslash"
+msgstr "qwerty, laajennettu Backslash"
+
+#: ../rules/base.xml.in.h:747
+msgid "qwerty/digits"
+msgstr "qwerty/numerot"
+
+#: ../rules/base.xml.in.h:748
+msgid "qwertz"
+msgstr "qwertz"
+
+#: ../rules/base.extras.xml.in.h:1
+msgid "APL"
+msgstr "APL"
+
+#: ../rules/base.extras.xml.in.h:2
+msgid "Atsina"
+msgstr "Atsina"
+
+#: ../rules/base.extras.xml.in.h:3
+msgid "Avestan"
+msgstr "Avestan"
+
+#: ../rules/base.extras.xml.in.h:4
+msgid "Combining accents instead of dead keys"
+msgstr "Aksenttien yhdistäminen kuolleiden näppäinten sijaan"
+
+#: ../rules/base.extras.xml.in.h:5
+msgid "Couer D'alene Salish"
+msgstr "Couer D'alene Salish"
+
+#: ../rules/base.extras.xml.in.h:6
+msgid "International (AltGr Unicode combining)"
+msgstr "Kansainvälinen (AltGr-Unicode-yhdistäminen)"
+
+#: ../rules/base.extras.xml.in.h:7
+msgid "International (AltGr Unicode combining, alternative)"
+msgstr "Kansainvälinen (AltGr-Unicode-yhdistäminen, vaihtoehtoinen)"
+
+#~ msgid "CapsLock"
+#~ msgstr "CapsLock"
+
+#~ msgid "ScrollLock"
+#~ msgstr "ScrollLock"
+
+#~ msgid "ACPI Standard"
+#~ msgstr "ACPI-standardi"
+
+#~ msgid "Bhu"
+#~ msgstr "Bhu"
+
+#~ msgid "DRC"
+#~ msgstr "DRC"
+
+#~ msgid "Dan"
+#~ msgstr "Dan"
+
+#~ msgid "Dvorak international"
+#~ msgstr "Dvorak kansainvälinen"
+
+#~ msgid "Evdev-managed keyboard"
+#~ msgstr "Evdev-hallittu näppäimistö"
+
+#~ msgid "Gre"
+#~ msgstr "Gre"
+
+#~ msgid "Gui"
+#~ msgstr "Gui"
+
+#~ msgid "Lav"
+#~ msgstr "Lav"
+
+#~ msgid "Nep"
+#~ msgstr "Nep"
+
+#~ msgid "SrL"
+#~ msgstr "SrL"
+
+#~ msgid "Baltic+"
+#~ msgstr "Baltic+"
+
+#~ msgid "IBM ThinkPad 560Z/600/600E/A22E, Intl"
+#~ msgstr "IBM ThinkPad 560Z/600/600E/A22E, kansainvälinen"
+
+#~ msgid "Brazilian ABNT2"
+#~ msgstr "Brasilialainen ABNT2"
+
+#~ msgid "Japanese 106-key"
+#~ msgstr "Japanilainen 106-näppäiminen"
+
+#~ msgid "Kir"
+#~ msgstr "Kir"
+
+#~ msgid "Korean 106-key"
+#~ msgstr "Korealainen 106-näppäiminen"
+
+#~ msgid "Pro"
+#~ msgstr "Pro"
+
+#~ msgid "Super is mapped to Win keys"
+#~ msgstr "Super tulee Win-näppäimistä"
+
+#~ msgid "US keyboard with Slovenian digraphs"
+#~ msgstr "Yhdysvaltalainen näppäimistö slovenialaisilla merkkipareilla"
+
+#~ msgid "Unicode"
+#~ msgstr "Unicode"
+
+#~ msgid "Use Slovenian digraphs"
+#~ msgstr "Käytä slovenialaisia merkkipareja"
+
+#~ msgid "(Legacy) Dvorak"
+#~ msgstr "(Perinteinen) dvorak"
+
+#~ msgid "Add the EuroSign to the 2 key."
+#~ msgstr "Lisää euro-merkki 2-näppäimeen."
+
+#~ msgid "Add the EuroSign to the 5 key."
+#~ msgstr "Lisää euro-merkki 5-näppäimeen."
+
+#~ msgid "Add the EuroSign to the E key."
+#~ msgstr "Lisää euro-merkki E-näppäimeen."
+
+#~ msgid "Alt+Ctrl change layout."
+#~ msgstr "Alt+Ctrl vaihtaa asettelua."
+
+#~ msgid "Alt+Shift change layout."
+#~ msgstr "Alt+Shift vaihtaa asettelua."
+
+#~ msgid "Both Alt keys together change layout."
+#~ msgstr "Molemmat Alt-näppäimet yhdessä vaihtavat asettelua."
+
+#~ msgid "Both Ctrl keys together change layout."
+#~ msgstr "Molemmat Ctrl-näppäimet yhdessä vaihtavat asettelua."
+
+#~ msgid "CapsLock LED shows alternative layout."
+#~ msgstr "CapsLock-ledi näyttää vaihtoehtoista asettelua."
+
+#~ msgid "CapsLock just locks the Shift modifier."
+#~ msgstr "CapsLock vain lukitsee Shift-muunnoksen."
+
+#~ msgid "CapsLock key changes layout."
+#~ msgstr "CapsLock-näppäin vaihtaa asettelua."
+
+#~ msgid "Commabelow"
+#~ msgstr "Commabelow"
+
+#~ msgid "Ctrl+Shift change layout."
+#~ msgstr "Ctrl+Shift vaihtaa asettelua."
+
+#~ msgid "Hewlett-Packard SK-2505 Internet Keyboard"
+#~ msgstr "Hewlett-Packard SK-2505-Internet-näppäimistö"
+
+#~ msgid "IBM Rapid Access II (alternate option)"
+#~ msgstr "IBM Rapid Access II (vaihtoehtoinen)"
+
+#~ msgid "Kotoistus"
+#~ msgstr "Kotoistus"
+
+#~ msgid "Kyr"
+#~ msgstr "Kyr"
+
+#~ msgid "LCtrl+LShift change layout."
+#~ msgstr "LCtrl+LShift vaihtaa ryhmää"
+
+#~ msgid "Layout switching"
+#~ msgstr "Asettelun vaihto"
+
+#~ msgid "Left Alt key changes layout."
+#~ msgstr "Vasen Alt-näppäin vaihtaa asettelua."
+
+#~ msgid "Left Alt key switches layout while pressed."
+#~ msgstr "Vasen Alt-näppäin vaihtaa asettelua painettaessa."
+
+#~ msgid "Left Ctrl key changes layout."
+#~ msgstr "Vasen Ctrl-näppäin vaihtaa asettelua."
+
+#~ msgid "Left Shift key changes layout."
+#~ msgstr "Vasen Shift-näppäin vaihtaa asettelua."
+
+#~ msgid "Left Win-key changes layout."
+#~ msgstr "Vasen Win-näppäin vaihtaa asettelua."
+
+#~ msgid "Left Win-key is Compose."
+#~ msgstr "Vasen Win-näppäin on Compose."
+
+#~ msgid "Menu is Compose."
+#~ msgstr "Valikko on Compose."
+
+#~ msgid "Neostyle"
+#~ msgstr "Neostyle"
+
+#~ msgid "NumLock LED shows alternative layout."
+#~ msgstr "Numlock-ledi näyttää vaihtoehtoista asettelua."
+
+#~ msgid "Press Left Alt key to choose 3rd level."
+#~ msgstr "Paina vasenta Alt-näppäintä valitaksesi kolmannen tason."
+
+#~ msgid "Press Left Win-key to choose 3rd level."
+#~ msgstr "Paina vasenta Win-näppäintä valitaksesi kolmannen tason."
+
+#~ msgid "Press Right Alt key to choose 3rd level."
+#~ msgstr "Paina oikeaa Alt-näppäintä valitaksesi kolmannen tason."
+
+#~ msgid "Press Right Ctrl to choose 3rd level."
+#~ msgstr "Paina oikeaa Ctrl-näppäintä valitaksesi kolmannen tason."
+
+#~ msgid "Press Right Win-key to choose 3rd level."
+#~ msgstr "Paina oikeaa Win-näppäintä valitaksesi kolmannen tason."
+
+#~ msgid "Press any of Alt keys to choose 3rd level."
+#~ msgstr "Paina jotakin Alt-näppäintä valitaksesi kolmannen tason."
+
+#~ msgid "Press any of Win-keys to choose 3rd level."
+#~ msgstr "Paina jotakin Win-näppäintä valitaksesi kolmannen tason."
+
+#~ msgid "R-Alt switches layout while pressed."
+#~ msgstr "Oikea Alt vaihtaa asettelua painettaessa."
+
+#~ msgid "Right Alt is Compose."
+#~ msgstr "Oikea Alt on Compose."
+
+#~ msgid "Right Alt key changes layout."
+#~ msgstr "Oikea Alt-näppäin vaihtaa asettelua."
+
+#~ msgid "Right Ctrl key changes layout."
+#~ msgstr "Oikea Ctrl-näppäin vaihtaa asettelua."
+
+#~ msgid "Right Ctrl key switches layout while pressed."
+#~ msgstr "Oikea Ctrl-näppäin vaihtaa asettelua painettaessa."
+
+#~ msgid "Right Shift key changes layout."
+#~ msgstr "Oikea Shift-näppäin vaihtaa asettelua."
+
+#~ msgid "Right Win-key changes layout."
+#~ msgstr "Oikea Win-näppäin vaihtaa asettelua."
+
+#~ msgid "Right Win-key is Compose."
+#~ msgstr "Oikea Win-näppäin on Compose."
+
+#~ msgid "SCG"
+#~ msgstr "SCG"
+
+#~ msgid "ScrollLock LED shows alternative layout."
+#~ msgstr "ScrollLock-ledi näyttää vaihtoehtoista asettelua."
+
+#~ msgid "Shift+CapsLock changes layout."
+#~ msgstr "Shift+CapsLock vaihtaa asettelua."
+
+#~ msgid "Swap keycodes of two keys when Mac keyboards are misdetected by kernel."
+#~ msgstr "Vaihda kahden näppäimen näppäinkoodin, jos ydin tunnistaa väärin Mac-näppäimistön."
+
+#~ msgid "Third level choosers"
+#~ msgstr "Kolmannnen tason valitsimet"
+
+#~ msgid "Urdu"
+#~ msgstr "Urdu"
+
+#~ msgid "Acts as Shift with locking. Shift cancels Caps."
+#~ msgstr "Toimii lukitsevana Shiftinä. Shift kumoaa CapsLockin."
+
+#~ msgid "Acts as Shift with locking. Shift doesn't cancel Caps."
+#~ msgstr "Toimii lukitsevana Shiftinä. Shift ei kumoa CapsLockia."
+
+#~ msgid "Alt+Control changes group"
+#~ msgstr "Alt+Ctrl vaihtaa ryhmää"
+
+#~ msgid "Alt+Shift changes group"
+#~ msgstr "Alt+Shift vaihtaa ryhmää"
+
+#~ msgid "Belgian"
+#~ msgstr "belgialainen"
+
+#~ msgid "Bulgarian"
+#~ msgstr "bulgarialainen"
+
+#~ msgid "Caps Lock key changes group"
+#~ msgstr "CapsLock-näppäin vaihtaa ryhmää"
+
+#~ msgid "Caps_Lock LED shows alternative group"
+#~ msgstr "CapsLock-ledi näyttää vaihtoehtoista ryhmää"
+
+#~ msgid "Control Key Position"
+#~ msgstr "Ctrl-näppäimen sijainti"
+
+#~ msgid "Control key at bottom left"
+#~ msgstr "Ctrl-näppäin alhaalla vasemmalla"
+
+#~ msgid "Control+Shift changes group"
+#~ msgstr "Ctrl+Shift vaihtaa ryhmää"
+
+#~ msgid "Czech"
+#~ msgstr "tšekkiläinen"
+
+#~ msgid "Danish"
+#~ msgstr "tanskalainen"
+
+#~ msgid "DeuCH"
+#~ msgstr "DeuCH"
+
+#~ msgid "Dvo"
+#~ msgstr "Dvo"
+
+#~ msgid "Finnish"
+#~ msgstr "suomalainen"
+
+#~ msgid "FraCH"
+#~ msgstr "FraCH"
+
+#~ msgid "German"
+#~ msgstr "saksalainen"
+
+#~ msgid "Group Shift/Lock behavior"
+#~ msgstr "Ryhmien vaihto ja lukitus"
+
+#~ msgid "Hungarian"
+#~ msgstr "unkarilainen"
+
+#~ msgid "Italian"
+#~ msgstr "italialainen"
+
+#~ msgid "Japanese"
+#~ msgstr "japanilainen"
+
+#~ msgid "Left Alt key changes group"
+#~ msgstr "Vasen Alt-näppäin vaihtaa ryhmää"
+
+#~ msgid "Left Ctrl key changes group"
+#~ msgstr "Vasen Ctrl-näppäin vaihtaa ryhmää"
+
+#~ msgid "Left Shift key changes group"
+#~ msgstr "Vasen Shift-näppäin vaihtaa ryhmää"
+
+#~ msgid "Make CapsLock an additional Control"
+#~ msgstr "Tee CapsLockista ylimääräinen Ctrl"
+
+#~ msgid "Norwegian"
+#~ msgstr "norjalainen"
+
+#~ msgid "Num_Lock LED shows alternative group"
+#~ msgstr "Numlock-ledi näyttää vaihtoehtoista ryhmää"
+
+#~ msgid "Polish"
+#~ msgstr "puolalainen"
+
+#~ msgid "Portuguese"
+#~ msgstr "portugalilainen"
+
+#~ msgid "Press Left Alt key to choose 3rd level"
+#~ msgstr "Paina vasenta Alt-näppäintä valitaksesi kolmannen tason"
+
+#~ msgid "Press Right Alt key to choose 3rd level"
+#~ msgstr "Paina oikeaa Alt-näppäintä valitaksesi kolmannen tason"
+
+#~ msgid "Press Right Alt-key to choose 3rd level, Shift+Right Alt-key is Multi_Key"
+#~ msgstr "Paina oikeaa Alt-näppäintä valitaksesi kolmannen tason, Shift-Oikea Alt on Multi_Key"
+
+#~ msgid "Press Right Control to choose 3rd level"
+#~ msgstr "Paina oikeaa Ctrl-näppäintä valitaksesi kolmannen tason"
+
+#~ msgid "Press any of Alt keys to choose 3rd level"
+#~ msgstr "Paina jotakin Alt-näppäintä valitaksesi kolmannen tason"
+
+#~ msgid "Right Alt key changes group"
+#~ msgstr "Oikea Alt-näppäin vaihtaa ryhmää"
+
+#~ msgid "Right Control key works as Right Alt"
+#~ msgstr "Oikea Ctrl-näppäin toimii oikeana Alt-näppäimenä"
+
+#~ msgid "Right Ctrl key changes group"
+#~ msgstr "Oikea Ctrl-näppäin vaihtaa ryhmää"
+
+#~ msgid "Right Shift key changes group"
+#~ msgstr "Oikea Shift-näppäin vaihtaa ryhmää"
+
+#~ msgid "Scroll Lock changes group"
+#~ msgstr "Scrolllock vaihtaa ryhmää"
+
+#~ msgid "Scroll_Lock LED shows alternative group"
+#~ msgstr "Scrolllock-ledi näyttää vaihtoehtoista ryhmää"
+
+#~ msgid "Shift with numpad keys works as in MS Windows"
+#~ msgstr "Shift ja sormionäppäimet toimivat kuten MS Windowsissa"
+
+#~ msgid "Slovak"
+#~ msgstr "slovakialainen"
+
+#~ msgid "Spanish"
+#~ msgstr "espanjalainen"
+
+#~ msgid "Sun Type 4"
+#~ msgstr "Sun Type 4"
+
+#~ msgid "Sun Type 5 European"
+#~ msgstr "Sun Type 5 eurooppalainen"
+
+#~ msgid "Sun Type 5 Unix"
+#~ msgstr "Sun Type 5 Unix"
+
+#~ msgid "Sun Type 6"
+#~ msgstr "Sun Type 6"
+
+#~ msgid "Sun Type 6 Unix"
+#~ msgstr "Sun Type 6 Unix"
+
+#~ msgid "Sun Type 6 with Euro key"
+#~ msgstr "Sun Type 6 Euro-näppäimellä"
+
+#~ msgid "Swap Control and Caps Lock"
+#~ msgstr "Vaihda Ctrl ja CapsLock"
+
+#~ msgid "Swedish"
+#~ msgstr "ruotsalainen"
+
+#~ msgid "Swiss French"
+#~ msgstr "sveitsinranskalainen"
+
+#~ msgid "Swiss German"
+#~ msgstr "sveitsinsaksalainen"
+
+#~ msgid "Turkish"
+#~ msgstr "turkkilainen"
+
+#~ msgid "Turkish (F)"
+#~ msgstr "turkkilainen (F)"
+
+#~ msgid "Turkish Alt-Q Layout"
+#~ msgstr "turkkilainen Alt-Q-asettelu"
+
+#~ msgid "U.S. English w/ ISO9995-3"
+#~ msgstr "Amerikanenglanti + ISO9995-3"
+
+#~ msgid "Use keyboard LED to show alternative group"
+#~ msgstr "Käytä näppäimistö-lediä näyttämään vaihtoehtoista ryhmää"
+
+#~ msgid "Uses internal capitalization. Shift cancels Caps."
+#~ msgstr "Käyttää sisäistä suuraakkostusta. Shift kumoaa CapsLockin."
+
+#~ msgid "Uses internal capitalization. Shift doesn't cancel Caps."
+#~ msgstr "Käyttää sisäistä suuraakkostusta. Shift ei kumoa CapsLockia."
+
+#~ msgid "bksl"
+#~ msgstr "bksl"
+
+#~ msgid "type4"
+#~ msgstr "type4"
+
+#~ msgid "Acer TravelMate 800"
+#~ msgstr "Acer TravelMate 800"
+
+#~ msgid "Dell SK-8125 USB Multimedia Keybard"
+#~ msgstr "Dell SK-8125 USB -multimedianäppäimistö"
+
+#~ msgid "Dell SK-8135 USB Multimedia Keybard"
+#~ msgstr "Dell SK-8135 USB -multimedianäppäimistö"
+
+#~ msgid "Force standard legacy keypad"
+#~ msgstr "Pakota standardi vanha sormio"
+
+#~ msgid "Logitech Cordless Desktop Pro (alternate option)"
+#~ msgstr "Logitech Cordless Desktop Pro (vaihtoehtoinen)"
+
+#~ msgid "Use keypad with unicode additions (arrows and math operators)"
+#~ msgstr "Käytä sormiota unicodelisäyksin (nuolet sekä matematiikkaoperaattorit)"
+
+#~ msgid "Adding the nobreakspace keysym to space key"
+#~ msgstr "Sitovan välilyönnin lisäys välilyöntinäppäimeen"
+
+#~ msgid "PowerPC PS/2"
+#~ msgstr "PowerPC PS/2"
diff --git a/xorg-server/xkeyboard-config/po/ka.po b/xorg-server/xkeyboard-config/po/ka.po
index 52ea245e2..f1dad4d71 100644
--- a/xorg-server/xkeyboard-config/po/ka.po
+++ b/xorg-server/xkeyboard-config/po/ka.po
@@ -1,2274 +1,2274 @@
-# translation of xkeyboard-config.po to Georgian
-# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
-# This file is distributed under the same license as the PACKAGE package.
-#
-# Vladimer Sichinava <vlsichinava@gmail.com>, 2006.
-msgid ""
-msgstr ""
-"Project-Id-Version: xkeyboard-config\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2006-09-17 21:37+0100\n"
-"PO-Revision-Date: 2006-09-20 22:48+0200\n"
-"Last-Translator: Vladimer Sichinava <vlsichinava@gmail.com>\n"
-"Language-Team: Georgian <www.gia.ge>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"X-Generator: KBabel 1.11.4\n"
-"Plural-Forms: nplurals=1; plural=0\n"
-
-#: ../rules/base.xml.in.h:1
-msgid "(F)"
-msgstr "(F)"
-
-#: ../rules/base.xml.in.h:2
-msgid "101/104 key Compatible"
-msgstr "101/104 ღილáƒáƒ™áƒ˜áƒáƒœáƒ˜ თáƒáƒ•áƒ¡áƒ”ბáƒáƒ“ი"
-
-#: ../rules/base.xml.in.h:3
-msgid "101/qwerty/comma/Dead keys"
-msgstr ""
-"pc101, qwerty, მძიმე, სპეც კლáƒáƒ•áƒ˜áƒ¨áƒ”ბი "
-"(dead keys)"
-
-#: ../rules/base.xml.in.h:4
-msgid "101/qwerty/comma/Eliminate dead keys"
-msgstr ""
-"pc101, qwerty, მძიმე, სპეც კლáƒáƒ•áƒ˜áƒ¨áƒ”ბის "
-"(dead keys) გáƒáƒ áƒ”შე"
-
-#: ../rules/base.xml.in.h:5
-msgid "101/qwerty/dot/Dead keys"
-msgstr ""
-"pc101, qwerty, წერტილი, სპეც "
-"კლáƒáƒ•áƒ˜áƒ¨áƒ”ბი (dead keys)"
-
-#: ../rules/base.xml.in.h:6
-msgid "101/qwerty/dot/Eliminate dead keys"
-msgstr ""
-"pc101, qwerty, წერტილი, სპეც "
-"კლáƒáƒ•áƒ˜áƒ¨áƒ”ბი (dead keys) გáƒáƒ áƒ”შე"
-
-#: ../rules/base.xml.in.h:7
-msgid "101/qwertz/comma/Dead keys"
-msgstr ""
-"pc101, qwertz, მძიმე, სპეც კლáƒáƒ•áƒ˜áƒ¨áƒ”ბი "
-"(dead keys)"
-
-#: ../rules/base.xml.in.h:8
-msgid "101/qwertz/comma/Eliminate dead keys"
-msgstr ""
-"pc101, qwertz, მძიმე, სპეც კლáƒáƒ•áƒ˜áƒ¨áƒ”ბის "
-"(dead keys) გáƒáƒ áƒ”შე"
-
-#: ../rules/base.xml.in.h:9
-msgid "101/qwertz/dot/Dead keys"
-msgstr ""
-"pc101, qwertz, წერტილი, სპეც "
-"კლáƒáƒ•áƒ˜áƒ¨áƒ”ბი (dead keys)"
-
-#: ../rules/base.xml.in.h:10
-msgid "101/qwertz/dot/Eliminate dead keys"
-msgstr ""
-"pc101, qwertz, წერტილი, სპეც "
-"კლáƒáƒ•áƒ˜áƒ¨áƒ”ბის (dead keys) გáƒáƒ áƒ”შე"
-
-#: ../rules/base.xml.in.h:11
-msgid "102/qwerty/comma/Dead keys"
-msgstr ""
-"pc102, qwerty, მძიმე, სპეც კლáƒáƒ•áƒ˜áƒ¨áƒ”ბი "
-"(dead keys)"
-
-#: ../rules/base.xml.in.h:12
-msgid "102/qwerty/comma/Eliminate dead keys"
-msgstr ""
-"pc102, qwerty, მძიმე, სპეც კლáƒáƒ•áƒ˜áƒ¨áƒ”ბის "
-"(dead keys) გáƒáƒ áƒ”შე"
-
-#: ../rules/base.xml.in.h:13
-msgid "102/qwerty/dot/Dead keys"
-msgstr ""
-"pc102, qwertz, წერტილი, სპეც "
-"კლáƒáƒ•áƒ˜áƒ¨áƒ”ბი (dead keys)"
-
-#: ../rules/base.xml.in.h:14
-msgid "102/qwerty/dot/Eliminate dead keys"
-msgstr ""
-"pc102, qwerty, წერტილი, სპეც "
-"კლáƒáƒ•áƒ˜áƒ¨áƒ”ბის (dead keys) გáƒáƒ áƒ”შე"
-
-#: ../rules/base.xml.in.h:15
-msgid "102/qwertz/comma/Dead keys"
-msgstr ""
-"pc102, qwertz, მძიმე, სპეც კლáƒáƒ•áƒ˜áƒ¨áƒ”ბი "
-"(dead keys)"
-
-#: ../rules/base.xml.in.h:16
-msgid "102/qwertz/comma/Eliminate dead keys"
-msgstr ""
-"pc102, qwertz, მძიმე, სპეც კლáƒáƒ•áƒ˜áƒ¨áƒ”ბის "
-"(dead keys) გáƒáƒ áƒ”შე"
-
-#: ../rules/base.xml.in.h:17
-msgid "102/qwertz/dot/Dead keys"
-msgstr ""
-"pc102, qwertz, წერტილი, სპეც "
-"კლáƒáƒ•áƒ˜áƒ¨áƒ”ბი (dead keys)"
-
-#: ../rules/base.xml.in.h:18
-msgid "102/qwertz/dot/Eliminate dead keys"
-msgstr ""
-"pc102, qwertz, წერტილი, სპეც "
-"კლáƒáƒ•áƒ˜áƒ¨áƒ”ბის (dead keys) გáƒáƒ áƒ”შე"
-
-#: ../rules/base.xml.in.h:19
-msgid "A4Tech KB-21"
-msgstr "A4Tech KB-21"
-
-#: ../rules/base.xml.in.h:20
-msgid "A4Tech KBS-8"
-msgstr "A4Tech KBS-8"
-
-#: ../rules/base.xml.in.h:21
-msgid "A4Tech Wireless Desktop RFKB-23"
-msgstr "A4Tech Wireless Desktop RFKB-23"
-
-#: ../rules/base.xml.in.h:22
-msgid "ACPI Standard"
-msgstr "სტáƒáƒœáƒ“áƒáƒ áƒ¢áƒ£áƒšáƒ˜ ACPI"
-
-#: ../rules/base.xml.in.h:23
-msgid "Acer AirKey V"
-msgstr "Acer AirKey V"
-
-#: ../rules/base.xml.in.h:24
-msgid "Acer C300"
-msgstr "Acer C300"
-
-#: ../rules/base.xml.in.h:25
-msgid "Acer Ferrari 4000"
-msgstr "Acer Ferrari 4000"
-
-#: ../rules/base.xml.in.h:26
-msgid "Acer TravelMate 800"
-msgstr "Acer TravelMate 800"
-
-#: ../rules/base.xml.in.h:27
-msgid "Add the EuroSign to the 2 key."
-msgstr ""
-"ევრáƒáƒ¡ ნიშნის 2იáƒáƒœáƒ˜áƒ¡ კლáƒáƒ•áƒ˜áƒ¨áƒ–ე "
-"დáƒáƒ›áƒáƒ¢áƒ”ბáƒ."
-
-#: ../rules/base.xml.in.h:28
-msgid "Add the EuroSign to the 5 key."
-msgstr ""
-"ევრáƒáƒ¡ ნიშნის 5იáƒáƒœáƒ˜áƒ¡ კლáƒáƒ•áƒ˜áƒ¨áƒ–ე "
-"დáƒáƒ›áƒáƒ¢áƒ”ბáƒ."
-
-#: ../rules/base.xml.in.h:29
-msgid "Add the EuroSign to the E key."
-msgstr ""
-"ევრáƒáƒ¡ ნიშნის E áƒáƒ¡áƒáƒ¡ კლáƒáƒ•áƒ˜áƒ¨áƒ–ე "
-"დáƒáƒ›áƒáƒ¢áƒ”ბáƒ."
-
-#: ../rules/base.xml.in.h:30
-msgid "Add the standard behavior to Menu key."
-msgstr ""
-"მენიუს კლáƒáƒ•áƒ˜áƒ¨áƒ˜áƒ¡áƒ—ვის "
-"სტáƒáƒœáƒ“áƒáƒ áƒ¢áƒ£áƒšáƒ˜ ქცევის "
-"მინიჭებáƒ."
-
-#: ../rules/base.xml.in.h:31
-msgid "Adding the EuroSign to certain keys"
-msgstr ""
-"ევრáƒáƒ¡ ნიშნის ზáƒáƒ’იერთ "
-"კლáƒáƒ•áƒ˜áƒ¨áƒ”ბზე დáƒáƒ›áƒáƒ¢áƒ”ბáƒ"
-
-#: ../rules/base.xml.in.h:32
-msgid "Advance Scorpius KI"
-msgstr "Advance Scorpius KI"
-
-#: ../rules/base.xml.in.h:33
-msgid "Afg"
-msgstr "áƒáƒ•áƒ¦"
-
-#: ../rules/base.xml.in.h:34
-msgid "Afghanistan"
-msgstr "áƒáƒ•áƒ¦áƒáƒœáƒ”თი"
-
-#: ../rules/base.xml.in.h:35
-msgid "Akan"
-msgstr "áƒáƒ™áƒáƒœáƒ˜"
-
-#: ../rules/base.xml.in.h:36
-msgid "Alb"
-msgstr "áƒáƒšáƒ‘"
-
-#: ../rules/base.xml.in.h:37
-msgid "Albania"
-msgstr "áƒáƒšáƒ‘áƒáƒœáƒ”თი"
-
-#: ../rules/base.xml.in.h:38
-msgid "Alt and Meta are on the Alt keys (default)."
-msgstr ""
-"Alt დრMeta, Alt ღილáƒáƒ™áƒ–ე "
-"(ნáƒáƒ’ულისხმევიáƒ)."
-
-#: ../rules/base.xml.in.h:39
-msgid "Alt is mapped to the right Win-key and Super to Menu."
-msgstr ""
-"Alt შეესáƒáƒ‘áƒáƒ›áƒ”ბრმáƒáƒ áƒ¯áƒ•áƒ”ნრWin "
-"ღილáƒáƒ™áƒ¡, Super კი Menu-ს."
-
-#: ../rules/base.xml.in.h:40
-msgid "Alt+CapsLock changes group."
-msgstr "Alt + CapsLock ცვლის ჯგუფს."
-
-#: ../rules/base.xml.in.h:41
-msgid "Alt+Ctrl changes group."
-msgstr "Alt + Ctrl ცვლის ჯგუფს."
-
-#: ../rules/base.xml.in.h:42
-msgid "Alt+Shift changes group."
-msgstr "Alt + Shift ცვლის ჯგუფს."
-
-#: ../rules/base.xml.in.h:43
-msgid "Alt-Q"
-msgstr "Alt-Q"
-
-#: ../rules/base.xml.in.h:44
-msgid "Alt/Win key behavior"
-msgstr "Alt/Win კლáƒáƒ•áƒ˜áƒ¨áƒ—რქცევáƒ"
-
-#: ../rules/base.xml.in.h:45
-msgid "Alternative"
-msgstr "áƒáƒšáƒ¢áƒ”რნáƒáƒ¢áƒ˜áƒ£áƒšáƒ˜"
-
-#: ../rules/base.xml.in.h:46
-msgid "Alternative international (former us_intl)"
-msgstr ""
-"áƒáƒšáƒ¢áƒ”რნáƒáƒ¢áƒ˜áƒ£áƒšáƒ˜ "
-"ინტერნáƒáƒªáƒ˜áƒáƒœáƒáƒšáƒ£áƒ áƒ˜"
-
-#: ../rules/base.xml.in.h:47
-msgid "Alternative, Sun dead keys"
-msgstr ""
-"áƒáƒšáƒ¢áƒ”რნáƒáƒ¢áƒ˜áƒ£áƒšáƒ˜, Sun სპეც "
-"კლáƒáƒ•áƒ˜áƒ¨áƒ”ბით (dead keys)"
-
-#: ../rules/base.xml.in.h:48
-msgid "Alternative, eliminate dead keys"
-msgstr ""
-"áƒáƒšáƒ¢áƒ”რნáƒáƒ¢áƒ˜áƒ£áƒšáƒ˜, სპეც "
-"კლáƒáƒ•áƒ˜áƒ¨áƒ”ბის (dead keys) გáƒáƒ áƒ”შე"
-
-#: ../rules/base.xml.in.h:49
-msgid "And"
-msgstr "áƒáƒœáƒ“"
-
-#: ../rules/base.xml.in.h:50
-msgid "Andorra"
-msgstr "áƒáƒœáƒ“áƒáƒ áƒ"
-
-#: ../rules/base.xml.in.h:51
-msgid "Apostrophe (') variant"
-msgstr "(') áƒáƒžáƒáƒ¡áƒ¢áƒ áƒáƒ¤áƒ˜áƒáƒœáƒ˜ ვáƒáƒ áƒ˜áƒáƒœáƒ¢áƒ˜"
-
-#: ../rules/base.xml.in.h:52
-msgid "Apple"
-msgstr "Apple"
-
-#: ../rules/base.xml.in.h:53
-msgid "Apple Laptop"
-msgstr "Apple ლეპტáƒáƒžáƒ˜"
-
-#: ../rules/base.xml.in.h:54
-msgid "Ara"
-msgstr "áƒáƒ áƒ"
-
-#: ../rules/base.xml.in.h:55
-msgid "Arabic"
-msgstr "áƒáƒ áƒáƒ‘ული"
-
-#: ../rules/base.xml.in.h:56
-msgid "Arm"
-msgstr "სáƒáƒ›áƒ®"
-
-#: ../rules/base.xml.in.h:57
-msgid "Armenia"
-msgstr "სáƒáƒ›áƒ®áƒ”თი"
-
-#: ../rules/base.xml.in.h:58
-msgid "Aze"
-msgstr "áƒáƒ–ერ"
-
-#: ../rules/base.xml.in.h:59
-msgid "Azerbaijan"
-msgstr "áƒáƒ–ერბáƒáƒ˜áƒ¯áƒáƒœáƒ˜"
-
-#: ../rules/base.xml.in.h:60
-msgid "Azona RF2300 wireless Internet Keyboard"
-msgstr "Azona RF2300 wireless Internet Keyboard"
-
-#: ../rules/base.xml.in.h:61
-msgid "BTC 5090"
-msgstr "BTC 5090"
-
-#: ../rules/base.xml.in.h:62
-msgid "BTC 5113RF Multimedia"
-msgstr "BTC 5113RF Multimedia"
-
-#: ../rules/base.xml.in.h:63
-msgid "BTC 5126T"
-msgstr "BTC 5126T"
-
-#: ../rules/base.xml.in.h:64
-msgid "BTC 9000"
-msgstr "BTC 9000"
-
-#: ../rules/base.xml.in.h:65
-msgid "BTC 9000A"
-msgstr "BTC 9000A"
-
-#: ../rules/base.xml.in.h:66
-msgid "BTC 9001AH"
-msgstr "BTC 9001AH"
-
-#: ../rules/base.xml.in.h:67
-msgid "BTC 9019U"
-msgstr "BTC 9019U"
-
-#: ../rules/base.xml.in.h:68
-msgid "Ban"
-msgstr "ბáƒáƒœ"
-
-#: ../rules/base.xml.in.h:69
-msgid "Bangladesh"
-msgstr "ბáƒáƒœáƒ’ლáƒáƒ“ეში"
-
-#: ../rules/base.xml.in.h:70
-msgid "Bel"
-msgstr "ბელ"
-
-#: ../rules/base.xml.in.h:71
-msgid "Belarus"
-msgstr "ბელáƒáƒ áƒ£áƒ¡áƒ˜áƒ"
-
-#: ../rules/base.xml.in.h:72
-msgid "Belgium"
-msgstr "ბელგიáƒ"
-
-#: ../rules/base.xml.in.h:73
-msgid "Bengali"
-msgstr "ბენგáƒáƒšáƒ˜"
-
-#: ../rules/base.xml.in.h:74
-msgid "Bengali Probhat"
-msgstr "ბენგáƒáƒšáƒ˜áƒ¡ პრáƒáƒ‘áƒáƒ¢áƒ˜"
-
-#: ../rules/base.xml.in.h:75
-msgid "Bgr"
-msgstr "ბáƒáƒšáƒ’"
-
-#: ../rules/base.xml.in.h:76
-msgid "Bhu"
-msgstr "ბუტ"
-
-#: ../rules/base.xml.in.h:77
-msgid "Bhutan"
-msgstr "ბუტáƒáƒœáƒ˜"
-
-#: ../rules/base.xml.in.h:78
-msgid "Bih"
-msgstr "ბáƒáƒ¡áƒœ"
-
-#: ../rules/base.xml.in.h:79
-msgid "Blr"
-msgstr "ბელ"
-
-#: ../rules/base.xml.in.h:80
-msgid "Bosnia and Herzegovina"
-msgstr "ბáƒáƒ¡áƒœáƒ˜áƒ დრჰერცáƒáƒ’áƒáƒ•áƒ˜áƒœáƒ"
-
-#: ../rules/base.xml.in.h:81
-msgid "Both Alt keys together change group."
-msgstr ""
-"áƒáƒ áƒ˜áƒ•áƒ” Alt ღილáƒáƒ™áƒ˜ ერთáƒáƒ“ ცვლის "
-"ჯგუფს."
-
-#: ../rules/base.xml.in.h:82
-msgid "Both Ctrl keys together change group."
-msgstr ""
-"áƒáƒ áƒ˜áƒ•áƒ” Ctrl ღილáƒáƒ™áƒ˜ ერთáƒáƒ“ ცვლის "
-"ჯგუფს."
-
-#: ../rules/base.xml.in.h:83
-msgid "Both Shift keys together change group."
-msgstr ""
-"áƒáƒ áƒ˜áƒ•áƒ” Shift ღილáƒáƒ™áƒ˜ ერთáƒáƒ“ ცვლის "
-"ჯგუფს."
-
-#: ../rules/base.xml.in.h:84
-msgid "Both Win-keys switch group while pressed."
-msgstr ""
-"áƒáƒ áƒ˜áƒ•áƒ” Win ღილáƒáƒ™áƒ˜ ერთáƒáƒ“ ცვლის "
-"ჯგუფს."
-
-#: ../rules/base.xml.in.h:85
-msgid "Bra"
-msgstr "ბრáƒáƒ–"
-
-#: ../rules/base.xml.in.h:86
-msgid "Brazil"
-msgstr "ბრáƒáƒ–ილიáƒ"
-
-#: ../rules/base.xml.in.h:87
-msgid "Brazilian ABNT2"
-msgstr "ბრáƒáƒ–ილიური ABNT2"
-
-#: ../rules/base.xml.in.h:88
-msgid "Brother Internet Keyboard"
-msgstr "Brother Internet Keyboard"
-
-#: ../rules/base.xml.in.h:89
-msgid "Bulgaria"
-msgstr "ბულგáƒáƒ áƒ”თი"
-
-#: ../rules/base.xml.in.h:90
-msgid "Cambodia"
-msgstr "კáƒáƒ›áƒ‘áƒáƒ¯áƒ"
-
-#: ../rules/base.xml.in.h:91
-msgid "Can"
-msgstr "კáƒáƒœ"
-
-#: ../rules/base.xml.in.h:92
-msgid "Canada"
-msgstr "კáƒáƒœáƒáƒ“áƒ"
-
-#: ../rules/base.xml.in.h:93
-msgid "Caps Lock is Compose."
-msgstr ""
-"ღილáƒáƒ™áƒ˜ Caps Lock შეესáƒáƒ‘áƒáƒ›áƒ”ბრCompose-ს."
-
-#: ../rules/base.xml.in.h:94
-msgid "CapsLock LED shows alternative group."
-msgstr ""
-"CapsLock-ის ინდიკáƒáƒ¢áƒáƒ áƒ˜ áƒáƒ©áƒ•áƒ”ნებს "
-"დáƒáƒ›áƒáƒ¢áƒ”ბით ჯგუფებს."
-
-#: ../rules/base.xml.in.h:95
-msgid "CapsLock acts as Shift with locking. Shift \"pauses\" CapsLock."
-msgstr ""
-"მუშáƒáƒáƒ‘ს რáƒáƒ’áƒáƒ áƒª დáƒáƒ‘ლáƒáƒ™áƒ˜áƒšáƒ˜ Shift, "
-"ის áƒáƒ§áƒáƒ•áƒœáƒ”ბს CapsLock-ის "
-"მáƒáƒ¥áƒ›áƒ”დებáƒáƒ¡."
-
-#: ../rules/base.xml.in.h:96
-msgid "CapsLock acts as Shift with locking. Shift doesn't affect CapsLock."
-msgstr ""
-"მუშáƒáƒáƒ‘ს რáƒáƒ’áƒáƒ áƒª დáƒáƒ‘ლáƒáƒ™áƒ˜áƒšáƒ˜ Shift, "
-"ის áƒáƒ  áƒáƒ§áƒáƒ•áƒœáƒ”ბს CapsLock-ის "
-"მáƒáƒ¥áƒ›áƒ”დებáƒáƒ¡."
-
-#: ../rules/base.xml.in.h:97
-msgid "CapsLock just locks the Shift modifier."
-msgstr ""
-"CapsLock-ი ბლáƒáƒ™áƒáƒ•áƒ¡ Shift "
-"მáƒáƒ“იფიკáƒáƒ¢áƒáƒ áƒ¡."
-
-#: ../rules/base.xml.in.h:98
-msgid "CapsLock key behavior"
-msgstr "CapsLock ღილáƒáƒ™áƒ˜áƒ¡ ქცევáƒ"
-
-#: ../rules/base.xml.in.h:99
-msgid "CapsLock key changes group."
-msgstr "CapsLock ღილáƒáƒ™áƒ˜ ცვლის ჯგუფს."
-
-#: ../rules/base.xml.in.h:100
-msgid "CapsLock toggles Shift so all keys are affected."
-msgstr ""
-"CapsLock რთáƒáƒ•áƒ¡ Shift-ს, ეხებრყველრ"
-"ღილáƒáƒ™áƒ¡."
-
-#: ../rules/base.xml.in.h:101
-msgid "CapsLock toggles normal capitalization of alphabetic characters."
-msgstr ""
-"CapsLock რთáƒáƒ•áƒ¡ áƒáƒšáƒ¤áƒáƒ•áƒ˜áƒ¢áƒ˜áƒ¡ "
-"სიმბáƒáƒšáƒáƒ”ბის უბრáƒáƒšáƒ "
-"კáƒáƒžáƒ˜áƒ¢áƒáƒšáƒ˜áƒ–áƒáƒªáƒ˜áƒáƒ¡."
-
-#: ../rules/base.xml.in.h:102
-msgid "CapsLock uses internal capitalization. Shift \"pauses\" CapsLock."
-msgstr ""
-"რთáƒáƒ•áƒ¡ შიდრკáƒáƒžáƒ˜áƒ¢áƒáƒšáƒ˜áƒ–áƒáƒªáƒ˜áƒáƒ¡. "
-"Shift áƒáƒ§áƒáƒ•áƒœáƒ”ბს CapsLock-ს. "
-
-#: ../rules/base.xml.in.h:103
-msgid "CapsLock uses internal capitalization. Shift doesn't affect CapsLock."
-msgstr ""
-"რთáƒáƒ•áƒ¡ შიდრკáƒáƒžáƒ˜áƒ¢áƒáƒšáƒ˜áƒ–áƒáƒªáƒ˜áƒáƒ¡. "
-"Shift áƒáƒ  ეხებრCapsLock-ს. "
-
-#: ../rules/base.xml.in.h:104
-msgid "Catalan variant with middle-dot L"
-msgstr "კáƒáƒ¢áƒáƒšáƒáƒœáƒ£áƒ áƒ˜ სáƒáƒ¨áƒ£áƒáƒšáƒ L-ით"
-
-#: ../rules/base.xml.in.h:105
-msgid "Che"
-msgstr "შვეიც"
-
-#: ../rules/base.xml.in.h:106
-msgid "Cherry Blue Line CyBo@rd"
-msgstr "Cherry Blue Line CyBo@rd"
-
-#: ../rules/base.xml.in.h:107
-msgid "Cherry Blue Line CyBo@rd (alternate option)"
-msgstr ""
-"Cherry Blue Line CyBo@rd (áƒáƒšáƒ¢áƒ”რნáƒáƒ¢áƒ˜áƒ£áƒšáƒ˜ "
-"ვáƒáƒ áƒ˜áƒáƒœáƒ¢áƒ˜)"
-
-#: ../rules/base.xml.in.h:108
-msgid "Cherry CyBo@rd USB-Hub"
-msgstr "Cherry CyBo@rd USB-Hub"
-
-#: ../rules/base.xml.in.h:109
-msgid "Cherry CyMotion Master Linux"
-msgstr "Cherry CyMotion Master Linux"
-
-#: ../rules/base.xml.in.h:110
-msgid "Chicony Internet Keyboard"
-msgstr "Chicony Internet Keyboard"
-
-#: ../rules/base.xml.in.h:111
-msgid "Chicony KB-9885"
-msgstr "Chicony KB-9885"
-
-#: ../rules/base.xml.in.h:112
-msgid "Classic Dvorak"
-msgstr "კლáƒáƒ¡áƒ˜áƒ™áƒ£áƒ áƒ˜ Dvorak"
-
-#: ../rules/base.xml.in.h:113
-msgid "CloGaelach"
-msgstr "CloGaelach"
-
-#: ../rules/base.xml.in.h:114
-msgid "Compaq Easy Access Keyboard"
-msgstr "Compaq Easy Access Keyboard"
-
-#: ../rules/base.xml.in.h:115
-msgid "Compaq Internet Keyboard (13 keys)"
-msgstr "Compaq Internet Keyboard (13 ღილáƒáƒ™áƒ˜áƒáƒœáƒ˜)"
-
-#: ../rules/base.xml.in.h:116
-msgid "Compaq Internet Keyboard (18 keys)"
-msgstr "Compaq Internet Keyboard (18 ღილáƒáƒ™áƒ˜áƒáƒœáƒ˜)"
-
-#: ../rules/base.xml.in.h:117
-msgid "Compaq Internet Keyboard (7 keys)"
-msgstr "Compaq Internet Keyboard (7 ღილáƒáƒ™áƒ˜áƒáƒœáƒ˜)"
-
-#: ../rules/base.xml.in.h:118
-msgid "Compaq iPaq Keyboard"
-msgstr "Compaq iPaq Keyboard"
-
-#: ../rules/base.xml.in.h:119
-msgid "Compose key position"
-msgstr "Compose კლáƒáƒ•áƒ˜áƒ¨áƒ˜áƒ¡ პáƒáƒ–იციáƒ"
-
-#: ../rules/base.xml.in.h:120
-msgid "Congo, Democratic Republic of the"
-msgstr ""
-"კáƒáƒœáƒ’áƒáƒ¡ დემáƒáƒ™áƒ áƒáƒ¢áƒ˜áƒ£áƒšáƒ˜ "
-"რესპუბლიკáƒ"
-
-#: ../rules/base.xml.in.h:121
-msgid "Croatia"
-msgstr "ხáƒáƒ áƒ•áƒáƒ¢áƒ˜áƒ"
-
-#: ../rules/base.xml.in.h:122
-msgid "Ctrl key at bottom left"
-msgstr "Ctrl ღილáƒáƒ™áƒ˜ ქვემáƒáƒ— მáƒáƒ áƒªáƒ®áƒœáƒ˜áƒ•"
-
-#: ../rules/base.xml.in.h:123
-msgid "Ctrl key at left of 'A'"
-msgstr "Ctrl ღილáƒáƒ™áƒ˜ A áƒáƒ¡áƒáƒ¡ მáƒáƒ áƒªáƒ®áƒœáƒ˜áƒ•"
-
-#: ../rules/base.xml.in.h:124
-msgid "Ctrl key position"
-msgstr ""
-"Ctrl ღილáƒáƒ™áƒ˜áƒ¡ áƒáƒ“გილმდებáƒáƒ áƒ”áƒáƒ‘áƒ"
-
-#: ../rules/base.xml.in.h:125
-msgid "Ctrl+Shift changes group."
-msgstr "Ctrl Shift ცვლის ჯგუფს."
-
-#: ../rules/base.xml.in.h:126
-msgid "Cyrillic"
-msgstr "კირილიცáƒ"
-
-#: ../rules/base.xml.in.h:127
-msgid "Cze"
-msgstr "ჩეხ"
-
-#: ../rules/base.xml.in.h:128
-msgid "Czechia"
-msgstr "ჩეხეთი"
-
-#: ../rules/base.xml.in.h:129
-msgid "DRC"
-msgstr "DRC"
-
-#: ../rules/base.xml.in.h:130
-msgid "DTK2000"
-msgstr "DTK2000"
-
-#: ../rules/base.xml.in.h:131
-msgid "Dead acute"
-msgstr "სპეც. სიმბáƒáƒšáƒ Dead acute"
-
-#: ../rules/base.xml.in.h:132
-msgid "Dead grave acute"
-msgstr "სპეც. სიმბáƒáƒšáƒ Dead grave acute"
-
-#: ../rules/base.xml.in.h:133
-msgid "Default numpad keys."
-msgstr ""
-"სტáƒáƒœáƒ“áƒáƒ áƒ¢áƒ£áƒšáƒ˜ ციფრული "
-"კლáƒáƒ•áƒ˜áƒ¨áƒ”ბი"
-
-#: ../rules/base.xml.in.h:134
-msgid "Dell"
-msgstr "Dell"
-
-#: ../rules/base.xml.in.h:135
-msgid "Dell 101-key PC"
-msgstr "Dell 101-კლáƒáƒ•áƒ˜áƒ¨áƒ˜áƒáƒœáƒ˜ PC"
-
-#: ../rules/base.xml.in.h:136
-msgid "Dell Latitude series laptop"
-msgstr "Dell Latitude series laptop"
-
-#: ../rules/base.xml.in.h:137
-msgid "Dell USB Multimedia Keybard"
-msgstr "Dell USB Multimedia Keybard"
-
-#: ../rules/base.xml.in.h:138
-msgid "Denmark"
-msgstr "დáƒáƒœáƒ˜áƒ"
-
-#: ../rules/base.xml.in.h:139
-msgid "Deu"
-msgstr "გერ"
-
-#: ../rules/base.xml.in.h:140
-msgid "Dexxa Wireless Desktop Keyboard"
-msgstr "Dexxa Wireless Desktop Keyboard"
-
-#: ../rules/base.xml.in.h:141
-msgid "Diamond 9801 / 9802 series"
-msgstr "მáƒáƒ“ელები Diamond 9801 / 9802 series"
-
-#: ../rules/base.xml.in.h:142
-msgid "Dnk"
-msgstr "დáƒáƒœ"
-
-#: ../rules/base.xml.in.h:143
-msgid "Dvorak"
-msgstr "დვáƒáƒ áƒáƒ™áƒ£áƒšáƒ˜"
-
-#: ../rules/base.xml.in.h:144
-msgid "Dvorak, Polish quotes on key \"1/!\""
-msgstr ""
-"Dvorak, პáƒáƒšáƒáƒœáƒ£áƒ áƒ˜ ფრჩხილები \"1/!\" "
-"ღილáƒáƒ™áƒ–ეáƒ"
-
-#: ../rules/base.xml.in.h:145
-msgid "Dvorak, Polish quotes on quotemark key"
-msgstr ""
-"Dvorak, პáƒáƒšáƒáƒœáƒ£áƒ áƒ˜ ფრჩხილები, "
-"ფრჩხილების კლáƒáƒ•áƒ˜áƒ¨áƒ–ე"
-
-#: ../rules/base.xml.in.h:146
-msgid "Eliminate dead keys"
-msgstr ""
-"სპეც ღილáƒáƒ™áƒ”ბის (dead keys) გáƒáƒ›áƒáƒ áƒ—ვáƒ"
-
-#: ../rules/base.xml.in.h:147
-msgid "Ennyah DKB-1008"
-msgstr "Ennyah DKB-1008"
-
-#: ../rules/base.xml.in.h:148
-msgid "Epo"
-msgstr "ეპáƒ"
-
-#: ../rules/base.xml.in.h:149
-msgid "Esp"
-msgstr "ესპ"
-
-#: ../rules/base.xml.in.h:150
-msgid "Esperanto"
-msgstr "ესპერáƒáƒœáƒ¢áƒ"
-
-#: ../rules/base.xml.in.h:151
-msgid "Est"
-msgstr "ესტ"
-
-#: ../rules/base.xml.in.h:152
-msgid "Estonia"
-msgstr "ესტáƒáƒœáƒ”თი"
-
-#: ../rules/base.xml.in.h:153
-msgid "Evdev-managed keyboard"
-msgstr "Evdev-managed keyboard"
-
-#: ../rules/base.xml.in.h:154
-msgid "Everex STEPnote"
-msgstr "Everex STEPnote"
-
-#: ../rules/base.xml.in.h:155
-msgid "Ewe"
-msgstr "ივი"
-
-#: ../rules/base.xml.in.h:156
-msgid "Extended"
-msgstr "გáƒáƒ¤áƒáƒ áƒ—áƒáƒ”ბული"
-
-#: ../rules/base.xml.in.h:157
-msgid "Extended Backslash"
-msgstr ""
-"Backslash გáƒáƒ¤áƒáƒ áƒ—áƒáƒ”ბული ფუნქციები"
-
-#: ../rules/base.xml.in.h:158
-msgid "F-letter (F) variant"
-msgstr "F-ს ვáƒáƒ áƒ˜áƒáƒœáƒ¢áƒ˜"
-
-#: ../rules/base.xml.in.h:159
-msgid "Fao"
-msgstr "ფáƒáƒ "
-
-#: ../rules/base.xml.in.h:160
-msgid "Faroe Islands"
-msgstr "ფáƒáƒ áƒ”რის კუნძულები"
-
-#: ../rules/base.xml.in.h:161
-msgid "Fin"
-msgstr "ფინ"
-
-#: ../rules/base.xml.in.h:162
-msgid "Finland"
-msgstr "ფინეთი"
-
-#: ../rules/base.xml.in.h:163
-msgid "Fra"
-msgstr "ფრáƒ"
-
-#: ../rules/base.xml.in.h:164
-msgid "France"
-msgstr "სáƒáƒ¤áƒ áƒáƒœáƒ’ეთი"
-
-#: ../rules/base.xml.in.h:165
-msgid "French"
-msgstr "ფრáƒáƒœáƒ’ული"
-
-#: ../rules/base.xml.in.h:166
-msgid "French (Macintosh)"
-msgstr "ფრáƒáƒœáƒ’ული (Macintosh)"
-
-#: ../rules/base.xml.in.h:167
-msgid "French (legacy)"
-msgstr "ფრáƒáƒœáƒ’ული (legacy)"
-
-#: ../rules/base.xml.in.h:168
-msgid "French Dvorak"
-msgstr "ფრáƒáƒœáƒ’ული Dvorak"
-
-#: ../rules/base.xml.in.h:169
-msgid "French, Sun dead keys"
-msgstr "ფრáƒáƒœáƒ’ული, Sun dead keys"
-
-#: ../rules/base.xml.in.h:170
-msgid "French, eliminate dead keys"
-msgstr "ფრáƒáƒœáƒ’ული, dead keys გáƒáƒ áƒ”შე"
-
-#: ../rules/base.xml.in.h:171
-msgid "Fula"
-msgstr "ფულáƒ"
-
-#: ../rules/base.xml.in.h:172
-msgid "GBr"
-msgstr "ბრიტ"
-
-#: ../rules/base.xml.in.h:173
-msgid "Ga"
-msgstr "გáƒ"
-
-#: ../rules/base.xml.in.h:174
-msgid "Generic 101-key PC"
-msgstr "სტáƒáƒœáƒ“áƒáƒ áƒ¢áƒ£áƒšáƒ˜ 101-ღილáƒáƒ™áƒ˜áƒáƒœáƒ˜ PC"
-
-#: ../rules/base.xml.in.h:175
-msgid "Generic 102-key (Intl) PC"
-msgstr ""
-"სტáƒáƒœáƒ“áƒáƒ áƒ¢áƒ£áƒšáƒ˜ 102-ღილáƒáƒ™áƒ˜áƒáƒœáƒ˜ (Intl) PC"
-
-#: ../rules/base.xml.in.h:176
-msgid "Generic 104-key PC"
-msgstr "სტáƒáƒœáƒ“áƒáƒ áƒ¢áƒ£áƒšáƒ˜ 104-ღილáƒáƒ™áƒ˜áƒáƒœáƒ˜ PC"
-
-#: ../rules/base.xml.in.h:177
-msgid "Generic 105-key (Intl) PC"
-msgstr ""
-"სტáƒáƒœáƒ“áƒáƒ áƒ¢áƒ£áƒšáƒ˜ 105-ღილáƒáƒ™áƒ˜áƒáƒœáƒ˜ (Intl) PC"
-
-#: ../rules/base.xml.in.h:178
-msgid "Genius Comfy KB-12e"
-msgstr "Genius Comfy KB-12e"
-
-#: ../rules/base.xml.in.h:179
-msgid "Genius Comfy KB-16M / Genius MM Keyboard KWD-910"
-msgstr "Genius Comfy KB-16M / Genius MM Keyboard KWD-910"
-
-#: ../rules/base.xml.in.h:180
-msgid "Genius Comfy KB-21e-Scroll"
-msgstr "Genius Comfy KB-21e-Scroll"
-
-#: ../rules/base.xml.in.h:181
-msgid "Genius KB-19e NB"
-msgstr "Genius KB-19e NB"
-
-#: ../rules/base.xml.in.h:182
-msgid "Geo"
-msgstr "ქáƒáƒ áƒ—"
-
-#: ../rules/base.xml.in.h:183
-msgid "Georgia"
-msgstr "სáƒáƒ¥áƒáƒ áƒ—ველáƒ"
-
-#: ../rules/base.xml.in.h:184
-msgid "German (Macintosh)"
-msgstr "გერმáƒáƒœáƒ£áƒšáƒ˜ (Macintosh)"
-
-#: ../rules/base.xml.in.h:185
-msgid "German, Sun dead keys"
-msgstr "გერმáƒáƒœáƒ£áƒšáƒ˜, Sun dead keys"
-
-#: ../rules/base.xml.in.h:186
-msgid "German, eliminate dead keys"
-msgstr "გერმáƒáƒœáƒ£áƒšáƒ˜, სპეც dead keys გáƒáƒ áƒ”შე"
-
-#: ../rules/base.xml.in.h:187
-msgid "Germany"
-msgstr "გერმáƒáƒœáƒ˜áƒ"
-
-#: ../rules/base.xml.in.h:188
-msgid "Gha"
-msgstr "გáƒáƒœ"
-
-#: ../rules/base.xml.in.h:189
-msgid "Ghana"
-msgstr "გáƒáƒœáƒ"
-
-#: ../rules/base.xml.in.h:190
-msgid "Gre"
-msgstr "სáƒáƒ‘"
-
-#: ../rules/base.xml.in.h:191
-msgid "Greece"
-msgstr "სáƒáƒ‘ერძნეთი"
-
-#: ../rules/base.xml.in.h:192
-msgid "Group Shift/Lock behavior"
-msgstr ""
-"გáƒáƒœáƒšáƒáƒ’ების შეცვლის ფუნქციáƒ"
-
-#: ../rules/base.xml.in.h:193
-msgid "Gujarati"
-msgstr "გუჯáƒáƒ áƒáƒ—ი"
-
-#: ../rules/base.xml.in.h:194
-msgid "Gurmukhi"
-msgstr "გურმუხი"
-
-#: ../rules/base.xml.in.h:195
-msgid "Gyration"
-msgstr "გირáƒáƒ¨áƒœ"
-
-#: ../rules/base.xml.in.h:196
-msgid "Hausa"
-msgstr "ჰáƒáƒ£áƒ¡áƒ"
-
-#: ../rules/base.xml.in.h:197
-msgid "Hewlett-Packard Internet Keyboard"
-msgstr "Hewlett-Packard Internet Keyboard"
-
-#: ../rules/base.xml.in.h:198
-msgid "Hewlett-Packard Omnibook 500 FA"
-msgstr "Hewlett-Packard Omnibook 500 FA"
-
-#: ../rules/base.xml.in.h:199
-msgid "Hewlett-Packard Omnibook 5xx"
-msgstr "Hewlett-Packard Omnibook 5xx"
-
-#: ../rules/base.xml.in.h:200
-msgid "Hewlett-Packard Omnibook 6000/6100"
-msgstr "Hewlett-Packard Omnibook 6000/6100"
-
-#: ../rules/base.xml.in.h:201
-msgid "Hewlett-Packard Omnibook XE3 GC"
-msgstr "Hewlett-Packard Omnibook XE3 GC"
-
-#: ../rules/base.xml.in.h:202
-msgid "Hewlett-Packard Omnibook XE3 GF"
-msgstr "Hewlett-Packard Omnibook XE3 GF"
-
-#: ../rules/base.xml.in.h:203
-msgid "Hewlett-Packard Omnibook XT1000"
-msgstr "Hewlett-Packard Omnibook XT1000"
-
-#: ../rules/base.xml.in.h:204
-msgid "Hewlett-Packard Pavilion ZT11xx"
-msgstr "Hewlett-Packard Pavilion ZT11xx"
-
-#: ../rules/base.xml.in.h:205
-msgid "Hewlett-Packard SK-2501 Multimedia Keyboard"
-msgstr "Hewlett-Packard SK-2501 Multimedia Keyboard"
-
-#: ../rules/base.xml.in.h:206
-msgid "Hewlett-Packard SK-2505 Internet Keyboard"
-msgstr "Hewlett-Packard SK-2505 Internet Keyboard"
-
-#: ../rules/base.xml.in.h:207
-msgid "Honeywell Euroboard"
-msgstr "Honeywell Euroboard"
-
-#: ../rules/base.xml.in.h:208
-msgid "Hrv"
-msgstr "ხáƒáƒ "
-
-#: ../rules/base.xml.in.h:209
-msgid "Hun"
-msgstr "უნგ"
-
-#: ../rules/base.xml.in.h:210
-msgid "Hungary"
-msgstr "უნგრეთი"
-
-#: ../rules/base.xml.in.h:211
-msgid "Hyper is mapped to the Win-keys."
-msgstr "Hyper შეესáƒáƒ‘áƒáƒ›áƒ”ბრWin ღილáƒáƒ™áƒ”ბს."
-
-#: ../rules/base.xml.in.h:212
-msgid "IBM (LST 1205-92)"
-msgstr "IBM (LST 1205-92)"
-
-#: ../rules/base.xml.in.h:213
-msgid "IBM Rapid Access"
-msgstr "IBM Rapid Access"
-
-#: ../rules/base.xml.in.h:214
-msgid "IBM Rapid Access II"
-msgstr "IBM Rapid Access II"
-
-#: ../rules/base.xml.in.h:215
-msgid "IBM Rapid Access II (alternate option)"
-msgstr ""
-"IBM Rapid Access II (áƒáƒšáƒ¢áƒ”რნáƒáƒ¢áƒ˜áƒ£áƒšáƒ˜ "
-"ვáƒáƒ áƒ˜áƒáƒœáƒ¢áƒ˜)"
-
-#: ../rules/base.xml.in.h:216
-msgid "IBM ThinkPad 560Z/600/600E/A22E"
-msgstr "IBM ThinkPad 560Z/600/600E/A22E"
-
-#: ../rules/base.xml.in.h:217
-msgid "IBM ThinkPad 560Z/600/600E/A22E, Intl"
-msgstr "IBM ThinkPad 560Z/600/600E/A22E, Intl"
-
-#: ../rules/base.xml.in.h:218
-msgid "ISO Alternate"
-msgstr "დáƒáƒ›áƒáƒ¢áƒ”ბითი ISO"
-
-#: ../rules/base.xml.in.h:219
-msgid "Iceland"
-msgstr "ისლáƒáƒœáƒ“იáƒ"
-
-#: ../rules/base.xml.in.h:220
-msgid "Ind"
-msgstr "ინდ"
-
-#: ../rules/base.xml.in.h:221
-msgid "India"
-msgstr "ინდáƒáƒ”თი"
-
-#: ../rules/base.xml.in.h:222
-msgid "International (with dead keys)"
-msgstr ""
-"სáƒáƒ”რთáƒáƒ¨áƒáƒ áƒ˜áƒ¡áƒ, სპეც "
-"ღილáƒáƒ™áƒ”ბით (dead keys)"
-
-#: ../rules/base.xml.in.h:223
-msgid "Inuktitut"
-msgstr "ინუკტიტუტი"
-
-#: ../rules/base.xml.in.h:224
-msgid "Iran"
-msgstr "ირáƒáƒœáƒ˜"
-
-#: ../rules/base.xml.in.h:225
-msgid "Iraq"
-msgstr "ერáƒáƒ§áƒ˜"
-
-#: ../rules/base.xml.in.h:226
-msgid "Ireland"
-msgstr "ირლáƒáƒœáƒ“იáƒ"
-
-#: ../rules/base.xml.in.h:227
-msgid "Irl"
-msgstr "ირლ"
-
-#: ../rules/base.xml.in.h:228
-msgid "Irn"
-msgstr "ირáƒ"
-
-#: ../rules/base.xml.in.h:229
-msgid "Irq"
-msgstr "ერáƒ"
-
-#: ../rules/base.xml.in.h:230
-msgid "Isl"
-msgstr "ისლ"
-
-#: ../rules/base.xml.in.h:231
-msgid "Isr"
-msgstr "ებრ"
-
-#: ../rules/base.xml.in.h:232
-msgid "Israel"
-msgstr "ისრáƒáƒ”ლი"
-
-#: ../rules/base.xml.in.h:233
-msgid "Ita"
-msgstr "იტáƒ"
-
-#: ../rules/base.xml.in.h:234
-msgid "Italy"
-msgstr "იტáƒáƒšáƒ˜áƒ"
-
-#: ../rules/base.xml.in.h:235
-msgid "Japan"
-msgstr "იáƒáƒžáƒáƒœáƒ˜áƒ"
-
-#: ../rules/base.xml.in.h:236
-msgid "Japan (PC-98xx Series)"
-msgstr "Japan (PC-98xx Series)"
-
-#: ../rules/base.xml.in.h:237
-msgid "Japanese 106-key"
-msgstr "იáƒáƒžáƒáƒœáƒ˜áƒ 106-ღილáƒáƒ™áƒ˜áƒáƒœáƒ˜"
-
-#: ../rules/base.xml.in.h:238
-msgid "Jpn"
-msgstr "იáƒáƒž"
-
-#: ../rules/base.xml.in.h:239
-msgid "Kannada"
-msgstr "კáƒáƒœáƒœáƒáƒ“áƒ"
-
-#: ../rules/base.xml.in.h:240
-msgid "Kashubian"
-msgstr "კáƒáƒ¨áƒ£áƒ‘იáƒáƒœáƒ˜"
-
-#: ../rules/base.xml.in.h:241
-msgid "Kaz"
-msgstr "ყáƒáƒ–"
-
-#: ../rules/base.xml.in.h:242
-msgid "Kazakh with Russian"
-msgstr "ყáƒáƒ–áƒáƒ®áƒ£áƒ áƒ˜ რუსულთáƒáƒœ"
-
-#: ../rules/base.xml.in.h:243
-msgid "Kazakhstan"
-msgstr "ყáƒáƒ–áƒáƒ®áƒ”თი"
-
-#: ../rules/base.xml.in.h:244
-msgid "Keypad"
-msgstr "დáƒáƒ›áƒáƒ¢áƒ”ბითი პáƒáƒœáƒ”ლით"
-
-#: ../rules/base.xml.in.h:245
-msgid "Keytronic FlexPro"
-msgstr "Keytronic FlexPro"
-
-#: ../rules/base.xml.in.h:246
-msgid "Khm"
-msgstr "კხმ"
-
-#: ../rules/base.xml.in.h:247
-msgid "Kor"
-msgstr "კáƒáƒ "
-
-#: ../rules/base.xml.in.h:248
-msgid "Korea, Republic of"
-msgstr "კáƒáƒ áƒ”áƒ, რესპუბლიკáƒ"
-
-#: ../rules/base.xml.in.h:249
-msgid "Korean 106-key"
-msgstr "კáƒáƒ áƒ”ული 106-ღილáƒáƒ™áƒ˜áƒáƒœáƒ˜"
-
-#: ../rules/base.xml.in.h:250
-msgid "Kotoistus"
-msgstr "Kotoistus"
-
-#: ../rules/base.xml.in.h:251
-msgid "Kurdish, (F)"
-msgstr "ქურთული, (F)"
-
-#: ../rules/base.xml.in.h:252
-msgid "Kurdish, Arabic-Latin"
-msgstr "ქურთული, áƒáƒ áƒáƒ‘ულ-ლáƒáƒ—ინური"
-
-#: ../rules/base.xml.in.h:253
-msgid "Kurdish, Latin Alt-Q"
-msgstr "ქურთული, ლáƒáƒ—ინური Alt-Q"
-
-#: ../rules/base.xml.in.h:254
-msgid "Kurdish, Latin Q"
-msgstr "ქურთული, ლáƒáƒ—ინური Q"
-
-#: ../rules/base.xml.in.h:255
-msgid "Kyr"
-msgstr "ყირ"
-
-#: ../rules/base.xml.in.h:256
-msgid "Kyrgyzstan"
-msgstr "ყირღიზეთი"
-
-#: ../rules/base.xml.in.h:257
-msgid "LAm"
-msgstr "ლáƒáƒ—áƒáƒ›"
-
-#: ../rules/base.xml.in.h:258
-msgid "Lao"
-msgstr "ლáƒáƒáƒ¡áƒ£áƒ áƒ˜"
-
-#: ../rules/base.xml.in.h:259
-msgid "Laos"
-msgstr "ლáƒáƒáƒ¡áƒ˜"
-
-#: ../rules/base.xml.in.h:260
-msgid "Laptop/notebook Compaq (eg. Armada) Laptop Keyboard"
-msgstr ""
-"Compaq ლეპტáƒáƒž/ნáƒáƒ£áƒ—ბუქის "
-"კლáƒáƒ•áƒ˜áƒáƒ¢áƒ£áƒ áƒ (მáƒáƒ’. Armada)"
-
-#: ../rules/base.xml.in.h:261
-msgid "Laptop/notebook Compaq (eg. Presario) Internet Keyboard"
-msgstr ""
-"Compaq ლეპტáƒáƒž/ნáƒáƒ£áƒ—ბუქის "
-"კლáƒáƒ•áƒ˜áƒáƒ¢áƒ£áƒ áƒ (მáƒáƒ’. Presario)"
-
-#: ../rules/base.xml.in.h:262
-msgid "Laptop/notebook Dell Inspiron 6xxx/8xxx"
-msgstr "ლეპტáƒáƒž/ნáƒáƒ£áƒ—ბუქი Dell Inspiron 6xxx/8xxx"
-
-#: ../rules/base.xml.in.h:263
-msgid "Laptop/notebook eMachines m68xx"
-msgstr "ლეპტáƒáƒž/ნáƒáƒ£áƒ—ბუქი eMachines m68xx"
-
-#: ../rules/base.xml.in.h:264
-msgid "Latin"
-msgstr "ლáƒáƒ—ინური"
-
-#: ../rules/base.xml.in.h:265
-msgid "Latin American"
-msgstr "ლáƒáƒ—ინურ áƒáƒ›áƒ”რიკული"
-
-#: ../rules/base.xml.in.h:266
-msgid "Latin Unicode"
-msgstr "ლáƒáƒ—ინური უნიკáƒáƒ“ი"
-
-#: ../rules/base.xml.in.h:267
-msgid "Latin Unicode qwerty"
-msgstr "ლáƒáƒ—ინური უნიკáƒáƒ“ი qwerty"
-
-#: ../rules/base.xml.in.h:268
-msgid "Latin qwerty"
-msgstr "ლáƒáƒ—ინური qwerty"
-
-#: ../rules/base.xml.in.h:269
-msgid "Latin with guillemets"
-msgstr ""
-"ლáƒáƒ—ინური ფრáƒáƒœáƒ’ული "
-"ბრჭყáƒáƒšáƒ”ბით"
-
-#: ../rules/base.xml.in.h:270
-msgid "Latvia"
-msgstr "ლáƒáƒ¢áƒ•áƒ˜áƒ"
-
-#: ../rules/base.xml.in.h:271
-msgid "Left Alt is swapped with left Win-key."
-msgstr ""
-"მáƒáƒ áƒªáƒ®áƒ”ნრAlt-ი შეცვლილირWin "
-"ღილáƒáƒ™áƒ˜áƒ—"
-
-#: ../rules/base.xml.in.h:272
-msgid "Left Alt key changes group."
-msgstr ""
-"მáƒáƒ áƒªáƒ®áƒ”ნრAlt ღილáƒáƒ™áƒ˜ ცვლის "
-"ჯგუფს."
-
-#: ../rules/base.xml.in.h:273
-msgid "Left Alt key switches group while pressed."
-msgstr ""
-"მáƒáƒ áƒªáƒ®áƒ”ნრAlt ღილáƒáƒ™áƒ˜ ცვლის "
-"ჯგუფს დáƒáƒ­áƒ”რის დრáƒáƒ¡."
-
-#: ../rules/base.xml.in.h:274
-msgid "Left Ctrl key changes group."
-msgstr ""
-"მáƒáƒ áƒªáƒ®áƒ”ნრAlt ღილáƒáƒ™áƒ˜ ცვლის "
-"ჯგუფს."
-
-#: ../rules/base.xml.in.h:275
-msgid "Left Shift key changes group."
-msgstr ""
-"მáƒáƒ áƒªáƒ®áƒ”ნრShift ღილáƒáƒ™áƒ˜ ცვლის "
-"ჯგუფს."
-
-#: ../rules/base.xml.in.h:276
-msgid "Left Win-key changes group."
-msgstr ""
-"მáƒáƒ áƒªáƒ®áƒ”ნრWin ღილáƒáƒ™áƒ˜ ცვლის "
-"ჯგუფს."
-
-#: ../rules/base.xml.in.h:277
-msgid "Left Win-key is Compose."
-msgstr ""
-"მáƒáƒ áƒªáƒ®áƒ”ნრWin ღილáƒáƒ™áƒ˜ "
-"შეესáƒáƒ‘áƒáƒ›áƒ”ბრCompose-ს."
-
-#: ../rules/base.xml.in.h:278
-msgid "Left Win-key switches group while pressed."
-msgstr ""
-"მáƒáƒ áƒªáƒ®áƒ”ნრWin ღილáƒáƒ™áƒ˜ ცვლის "
-"ჯგუფს დáƒáƒ­áƒ”რის დრáƒáƒ¡."
-
-#: ../rules/base.xml.in.h:279
-msgid "Left handed Dvorak"
-msgstr "Dvorak ცáƒáƒªáƒ˜áƒ”ბისთვის"
-
-#: ../rules/base.xml.in.h:280
-msgid "Lithuania"
-msgstr "ლიტვáƒ"
-
-#: ../rules/base.xml.in.h:281
-msgid "Logitech Access Keyboard"
-msgstr "Logitech Access Keyboard"
-
-#: ../rules/base.xml.in.h:282
-msgid "Logitech Cordless Desktop"
-msgstr "Logitech Cordless Desktop"
-
-#: ../rules/base.xml.in.h:283
-msgid "Logitech Cordless Desktop LX-300"
-msgstr "Logitech Cordless Desktop LX-300"
-
-#: ../rules/base.xml.in.h:284
-msgid "Logitech Cordless Desktop Navigator"
-msgstr "Logitech Cordless Desktop Navigator"
-
-#: ../rules/base.xml.in.h:285
-msgid "Logitech Cordless Desktop Optical"
-msgstr "Logitech Cordless Desktop Optical"
-
-#: ../rules/base.xml.in.h:286
-msgid "Logitech Cordless Desktop Pro"
-msgstr "Logitech Cordless Desktop Pro"
-
-#: ../rules/base.xml.in.h:287
-msgid "Logitech Cordless Desktop Pro (alternate option)"
-msgstr ""
-"Logitech Cordless Desktop Pro (áƒáƒšáƒ¢áƒ”რნáƒáƒ¢áƒ˜áƒ£áƒšáƒ˜ "
-"ვáƒáƒ áƒ˜áƒáƒœáƒ¢áƒ˜)"
-
-#: ../rules/base.xml.in.h:288
-msgid "Logitech Cordless Desktop Pro (alternate option2)"
-msgstr ""
-"Logitech Cordless Desktop Pro (áƒáƒšáƒ¢áƒ”რნáƒáƒ¢áƒ˜áƒ£áƒšáƒ˜ "
-"ვáƒáƒ áƒ˜áƒáƒœáƒ¢áƒ˜2)"
-
-#: ../rules/base.xml.in.h:289
-msgid "Logitech Cordless Desktop iTouch"
-msgstr "Logitech Cordless Desktop iTouch"
-
-#: ../rules/base.xml.in.h:290
-msgid "Logitech Cordless Freedom/Desktop Navigator"
-msgstr "Logitech Cordless Freedom/Desktop Navigator"
-
-#: ../rules/base.xml.in.h:291
-msgid "Logitech Internet Keyboard"
-msgstr "Logitech Internet Keyboard"
-
-#: ../rules/base.xml.in.h:292
-msgid "Logitech Internet Navigator Keyboard"
-msgstr "Logitech Internet Navigator Keyboard"
-
-#: ../rules/base.xml.in.h:293
-msgid "Logitech Ultra-X Keyboard"
-msgstr "Logitech Ultra-X Keyboard"
-
-#: ../rules/base.xml.in.h:294
-msgid "Logitech diNovo Keyboard"
-msgstr "Logitech diNovo Keyboard"
-
-#: ../rules/base.xml.in.h:295
-msgid "Logitech iTouch"
-msgstr "Logitech iTouch"
-
-#: ../rules/base.xml.in.h:296
-msgid "Logitech iTouch Cordless Keyboard (model Y-RB6)"
-msgstr "Logitech iTouch Cordless Keyboard (model Y-RB6)"
-
-#: ../rules/base.xml.in.h:297
-msgid "Logitech iTouch Internet Navigator Keyboard SE"
-msgstr "Logitech iTouch Internet Navigator Keyboard SE"
-
-#: ../rules/base.xml.in.h:298
-msgid "Logitech iTouch Internet Navigator Keyboard SE (USB)"
-msgstr "Logitech iTouch Internet Navigator Keyboard SE (USB)"
-
-#: ../rules/base.xml.in.h:299
-msgid "Ltu"
-msgstr "ლიტ"
-
-#: ../rules/base.xml.in.h:300
-msgid "Lva"
-msgstr "ლáƒáƒ¢áƒ•"
-
-#: ../rules/base.xml.in.h:301
-msgid "Macedonia"
-msgstr "მáƒáƒ™áƒ”დáƒáƒœáƒ˜áƒ"
-
-#: ../rules/base.xml.in.h:302
-msgid "Macintosh"
-msgstr "Macintosh"
-
-#: ../rules/base.xml.in.h:303
-msgid "Macintosh Old"
-msgstr "Macintosh ძველი"
-
-#: ../rules/base.xml.in.h:304
-msgid "Macintosh layout"
-msgstr "Macintosh-ის გáƒáƒœáƒšáƒáƒ’ებáƒ"
-
-#: ../rules/base.xml.in.h:305
-msgid "Macintosh layout, eliminate dead keys"
-msgstr ""
-"Macintosh-ის გáƒáƒœáƒšáƒáƒ’ებáƒ, სპეც "
-"კლáƒáƒ•áƒ˜áƒ¨áƒ”ბის (dead keys) გáƒáƒ áƒ”შე"
-
-#: ../rules/base.xml.in.h:306
-msgid "Make CapsLock an additional Ctrl."
-msgstr ""
-"გáƒáƒ›áƒáƒ˜áƒ§áƒ”ნე CapsLock რáƒáƒ’áƒáƒ áƒª "
-"დáƒáƒ›áƒáƒ¢áƒ”ბითი Ctrl კლáƒáƒ•áƒ˜áƒ¨áƒ˜."
-
-#: ../rules/base.xml.in.h:307
-msgid "Mal"
-msgstr "მáƒáƒš"
-
-#: ../rules/base.xml.in.h:308
-msgid "Malayalam"
-msgstr "მáƒáƒšáƒáƒ£áƒ áƒ˜"
-
-#: ../rules/base.xml.in.h:309
-msgid "Maldives"
-msgstr "მáƒáƒšáƒ“ივები"
-
-#: ../rules/base.xml.in.h:310
-msgid "Malta"
-msgstr "მáƒáƒšáƒ¢áƒ"
-
-#: ../rules/base.xml.in.h:311
-msgid "Maltese keyboard with US layout"
-msgstr ""
-"მáƒáƒšáƒ¢áƒ˜áƒ¡ კლáƒáƒ•áƒ˜áƒáƒ¢áƒ£áƒ áƒ áƒáƒ¨áƒ¨-ს "
-"გáƒáƒœáƒšáƒáƒ’ებით"
-
-#: ../rules/base.xml.in.h:312
-msgid "Mao"
-msgstr "მáƒáƒ"
-
-#: ../rules/base.xml.in.h:313
-msgid "Maori"
-msgstr "მáƒáƒáƒ áƒ˜"
-
-#: ../rules/base.xml.in.h:314
-msgid "Memorex MX1998"
-msgstr "Memorex MX1998"
-
-#: ../rules/base.xml.in.h:315
-msgid "Memorex MX2500 EZ-Access Keyboard"
-msgstr "Memorex MX2500 EZ-Access Keyboard"
-
-#: ../rules/base.xml.in.h:316
-msgid "Memorex MX2750"
-msgstr "Memorex MX2750"
-
-#: ../rules/base.xml.in.h:317
-msgid "Menu is Compose."
-msgstr ""
-"Menu ღილáƒáƒ™áƒ˜ შეესáƒáƒ‘áƒáƒ›áƒ”ბრCompose-ის "
-"ღილáƒáƒ™áƒ¡."
-
-#: ../rules/base.xml.in.h:318
-msgid "Menu key changes group."
-msgstr "Menu-ს ღილáƒáƒ™áƒ˜ ცვლის ჯგუფს."
-
-#: ../rules/base.xml.in.h:319
-msgid "Meta is mapped to the Win-keys."
-msgstr ""
-"Мета შეესáƒáƒ‘áƒáƒ›áƒ”ბრWin ღილáƒáƒ™áƒ”ბს."
-
-#: ../rules/base.xml.in.h:320
-msgid "Meta is mapped to the left Win-key."
-msgstr ""
-"Мета შეესáƒáƒ‘áƒáƒ›áƒ”ბრმáƒáƒ áƒªáƒ®áƒ”ნრWin "
-"ღილáƒáƒ™áƒ¡."
-
-#: ../rules/base.xml.in.h:321
-msgid "Microsoft Internet Keyboard"
-msgstr "Microsoft Internet Keyboard"
-
-#: ../rules/base.xml.in.h:322
-msgid "Microsoft Internet Keyboard Pro, Swedish"
-msgstr "Microsoft Internet Keyboard Pro, შვედური"
-
-#: ../rules/base.xml.in.h:323
-msgid "Microsoft Natural"
-msgstr "Microsoft Natural"
-
-#: ../rules/base.xml.in.h:324
-msgid "Microsoft Natural Keyboard Pro / Microsoft Internet Keyboard Pro"
-msgstr "Microsoft Natural Keyboard Pro / Microsoft Internet Keyboard Pro"
-
-#: ../rules/base.xml.in.h:325
-msgid "Microsoft Natural Keyboard Pro OEM"
-msgstr " Microsoft Natural Keyboard Pro OEM"
-
-#: ../rules/base.xml.in.h:326
-msgid "Microsoft Natural Keyboard Pro USB / Microsoft Internet Keyboard Pro"
-msgstr "Microsoft Natural Keyboard Pro USB / Microsoft Internet Keyboard Pro"
-
-#: ../rules/base.xml.in.h:327
-msgid "Microsoft Office Keyboard"
-msgstr "Microsoft Office Keyboard"
-
-#: ../rules/base.xml.in.h:328
-msgid "Microsoft Wireless Multimedia Keyboard 1.0A"
-msgstr "Microsoft Wireless Multimedia Keyboard 1.0A"
-
-#: ../rules/base.xml.in.h:329
-msgid "Miscellaneous compatibility options"
-msgstr ""
-"თáƒáƒ•áƒ¡áƒ”ბáƒáƒ“áƒáƒ‘ის სხვáƒáƒ“áƒáƒ¡áƒ®áƒ•áƒ "
-"პáƒáƒ áƒáƒ›áƒ”ტრი"
-
-#: ../rules/base.xml.in.h:330
-msgid "Mkd"
-msgstr "მáƒáƒ™"
-
-#: ../rules/base.xml.in.h:331
-msgid "Mlt"
-msgstr "მáƒáƒšáƒ¢"
-
-#: ../rules/base.xml.in.h:332
-msgid "Mmr"
-msgstr "მიáƒáƒœ"
-
-#: ../rules/base.xml.in.h:333
-msgid "Mng"
-msgstr "მáƒáƒœáƒ¦"
-
-#: ../rules/base.xml.in.h:334
-msgid "Mongolia"
-msgstr "მáƒáƒœáƒ¦áƒáƒšáƒ”თი"
-
-#: ../rules/base.xml.in.h:335
-msgid "Multilingual"
-msgstr "მრáƒáƒ•áƒáƒšáƒ”ნáƒáƒ•áƒáƒœáƒ˜"
-
-#: ../rules/base.xml.in.h:336
-msgid "Multilingual, first part"
-msgstr ""
-"მრáƒáƒ•áƒáƒšáƒ”ნáƒáƒ•áƒáƒœáƒ˜, პირველი "
-"ნáƒáƒ¬áƒ˜áƒšáƒ˜"
-
-#: ../rules/base.xml.in.h:337
-msgid "Multilingual, second part"
-msgstr ""
-"მრáƒáƒ•áƒáƒšáƒ”ნáƒáƒ•áƒáƒœáƒ˜, მეáƒáƒ áƒ” ნáƒáƒ¬áƒ˜áƒšáƒ˜"
-
-#: ../rules/base.xml.in.h:338
-msgid "Myanmar"
-msgstr "მიáƒáƒœáƒ›áƒ"
-
-#: ../rules/base.xml.in.h:339
-msgid "Neostyle"
-msgstr "Neostyle"
-
-#: ../rules/base.xml.in.h:340
-msgid "Nep"
-msgstr "ნეპ"
-
-#: ../rules/base.xml.in.h:341
-msgid "Nepal"
-msgstr "ნეპáƒáƒšáƒ˜"
-
-#: ../rules/base.xml.in.h:342
-msgid "Netherlands"
-msgstr "ნიდერლáƒáƒœáƒ“ები"
-
-#: ../rules/base.xml.in.h:343
-msgid "Nld"
-msgstr "ჰáƒáƒš"
-
-#: ../rules/base.xml.in.h:344
-msgid "Nor"
-msgstr "ნáƒáƒ "
-
-#: ../rules/base.xml.in.h:345
-msgid "Northern Saami"
-msgstr "ჩრდილáƒáƒ”თ სáƒáƒáƒ›áƒ£áƒ áƒ˜"
-
-#: ../rules/base.xml.in.h:346
-msgid "Northern Saami, eliminate dead keys"
-msgstr ""
-"ჩრდილáƒáƒ”თ სáƒáƒáƒ›áƒ£áƒ áƒ˜, სპეც "
-"ღილáƒáƒ™áƒ”ბის (dead keys) გáƒáƒ áƒ”შე"
-
-#: ../rules/base.xml.in.h:347
-msgid "Northgate OmniKey 101"
-msgstr "Northgate OmniKey 101"
-
-#: ../rules/base.xml.in.h:348
-msgid "Norway"
-msgstr "ნáƒáƒ áƒ•áƒ”გიáƒ"
-
-#: ../rules/base.xml.in.h:349
-msgid "NumLock LED shows alternative group."
-msgstr ""
-"NumLock-ის ინდიკáƒáƒ¢áƒáƒ áƒ˜ áƒáƒ©áƒ•áƒ”ნებს "
-"დáƒáƒ›áƒáƒ¢áƒ”ბით ჯგუფს."
-
-#: ../rules/base.xml.in.h:350
-msgid "Numpad keys work as with Mac."
-msgstr ""
-"ციფრული ღილáƒáƒ™áƒ”ბი "
-"მáƒáƒ¥áƒ›áƒ”დებენ რáƒáƒ’áƒáƒ áƒª Mac-ის "
-"კლáƒáƒ•áƒ˜áƒáƒ¢áƒ£áƒ áƒáƒ¨áƒ˜."
-
-#: ../rules/base.xml.in.h:351
-msgid "Ogham"
-msgstr "áƒáƒ’ხáƒáƒ›áƒ˜"
-
-#: ../rules/base.xml.in.h:352
-msgid "Ogham IS434"
-msgstr "Ogham IS434"
-
-#: ../rules/base.xml.in.h:353
-msgid "Oretec MCK-800 MM/Internet keyboard"
-msgstr "Oretec MCK-800 MM/Internet keyboard"
-
-#: ../rules/base.xml.in.h:354
-msgid "Oriya"
-msgstr "áƒáƒ áƒ˜áƒ"
-
-#: ../rules/base.xml.in.h:355
-msgid "Ossetian"
-msgstr "áƒáƒ¡áƒ£áƒ áƒ˜"
-
-#: ../rules/base.xml.in.h:356
-msgid "Ossetian, Winkeys"
-msgstr "áƒáƒ¡áƒ£áƒ áƒ˜, Windows კლáƒáƒ•áƒ˜áƒáƒ¢áƒ£áƒ áƒ"
-
-#: ../rules/base.xml.in.h:357
-msgid "PC-98xx Series"
-msgstr "PC-98xx Series"
-
-#: ../rules/base.xml.in.h:358
-msgid "Pak"
-msgstr "პáƒáƒ™"
-
-#: ../rules/base.xml.in.h:359
-msgid "Pakistan"
-msgstr "პáƒáƒ™áƒ˜áƒ¡áƒ¢áƒáƒœáƒ˜"
-
-#: ../rules/base.xml.in.h:360
-msgid "Pashto"
-msgstr "პáƒáƒ¨áƒ¢áƒ"
-
-#: ../rules/base.xml.in.h:361
-msgid "Pattachote"
-msgstr "პáƒáƒ¢áƒáƒ©áƒáƒ¢áƒ˜"
-
-#: ../rules/base.xml.in.h:362
-msgid "Phonetic"
-msgstr "ფáƒáƒœáƒ”ტიკური"
-
-#: ../rules/base.xml.in.h:363
-msgid "Pol"
-msgstr "პáƒáƒš"
-
-#: ../rules/base.xml.in.h:364
-msgid "Poland"
-msgstr "პáƒáƒšáƒáƒœáƒ”თი"
-
-#: ../rules/base.xml.in.h:365
-msgid "Polytonic"
-msgstr "პáƒáƒšáƒ˜áƒ¤áƒáƒœáƒ˜áƒ£áƒ áƒ˜"
-
-#: ../rules/base.xml.in.h:366
-msgid "Portugal"
-msgstr "პáƒáƒ áƒ¢áƒ£áƒ’áƒáƒšáƒ˜áƒ"
-
-#: ../rules/base.xml.in.h:367
-msgid "PowerPC PS/2"
-msgstr "PowerPC PS/2"
-
-#: ../rules/base.xml.in.h:368
-msgid "Press Left Alt key to choose 3rd level."
-msgstr ""
-"მე-3 სáƒáƒ¤áƒ”ხურის "
-"áƒáƒ›áƒáƒ áƒ©áƒ”ვისთვის, დáƒáƒáƒ­áƒ˜áƒ áƒ”თ "
-"მáƒáƒ áƒªáƒ®áƒ”ნრAlt-ს"
-
-#: ../rules/base.xml.in.h:369
-msgid "Press Left Win-key to choose 3rd level."
-msgstr ""
-"მე-3 სáƒáƒ¤áƒ”ხურის "
-"áƒáƒ›áƒáƒ áƒ©áƒ”ვისთვის, დáƒáƒáƒ­áƒ˜áƒ áƒ”თ "
-"მáƒáƒ áƒªáƒ®áƒ”ნრWin ღილáƒáƒ™áƒ¡."
-
-#: ../rules/base.xml.in.h:370
-msgid "Press Menu key to choose 3rd level."
-msgstr ""
-"მე-3 სáƒáƒ¤áƒ”ხურის "
-"áƒáƒ›áƒáƒ áƒ©áƒ”ვისთვის, დáƒáƒáƒ­áƒ˜áƒ áƒ”თ Menu "
-"ღილáƒáƒ™áƒ¡."
-
-#: ../rules/base.xml.in.h:371
-msgid ""
-"Press Right Alt key to choose 3rd level, Shift+Right Alt key is Multi_Key."
-msgstr ""
-"მე-3 სáƒáƒ¤áƒ”ხურის "
-"áƒáƒ›áƒáƒ áƒ©áƒ”ვისთვის, დáƒáƒáƒ­áƒ˜áƒ áƒ”თ "
-"მáƒáƒ áƒ¯áƒ•áƒ”ნრAlt ღილáƒáƒ™áƒ¡. "
-"Shift+მáƒáƒ áƒ¯áƒ•áƒ”ნრAlt ღილáƒáƒ™áƒ˜ "
-"იმáƒáƒ¥áƒ›áƒ”დებენ რáƒáƒ’áƒáƒ áƒª Multi_Key."
-
-#: ../rules/base.xml.in.h:372
-msgid "Press Right Alt key to choose 3rd level."
-msgstr ""
-"მე-3 სáƒáƒ¤áƒ”ხურის "
-"áƒáƒ›áƒáƒ áƒ©áƒ”ვისთვის, დáƒáƒáƒ­áƒ˜áƒ áƒ”თ "
-"მáƒáƒ áƒ¯áƒ•áƒ”ნრAlt ღილáƒáƒ™áƒ¡."
-
-#: ../rules/base.xml.in.h:373
-msgid "Press Right Ctrl to choose 3rd level."
-msgstr ""
-"მე-3 სáƒáƒ¤áƒ”ხურის "
-"áƒáƒ›áƒáƒ áƒ©áƒ”ვისთვის, დáƒáƒáƒ­áƒ˜áƒ áƒ”თ "
-"მáƒáƒ áƒ¯áƒ•áƒ”ნრCtrl-ს."
-
-#: ../rules/base.xml.in.h:374
-msgid "Press Right Win-key to choose 3rd level."
-msgstr ""
-"მე-3 სáƒáƒ¤áƒ”ხურის áƒáƒ›áƒáƒ áƒ©áƒ”ვრ"
-"მáƒáƒ áƒ¯áƒ•áƒ”ნრWin ღილáƒáƒ™áƒ˜áƒ¡ დáƒáƒ­áƒ”რით."
-
-#: ../rules/base.xml.in.h:375
-msgid "Press any of Alt keys to choose 3rd level."
-msgstr ""
-"მე-3 სáƒáƒ¤áƒ”ხურის áƒáƒ›áƒáƒ áƒ©áƒ”ვრ"
-"ნებისმიერი Alt ღილáƒáƒ™áƒ˜áƒ¡ "
-"დáƒáƒ­áƒ”რით."
-
-#: ../rules/base.xml.in.h:376
-msgid "Press any of Win-keys to choose 3rd level."
-msgstr ""
-"მე-3 სáƒáƒ¤áƒ”ხურის áƒáƒ›áƒáƒ áƒ©áƒ”ვრ"
-"ნებისმიერი Win ღილáƒáƒ™áƒ˜áƒ¡ "
-"დáƒáƒ­áƒ”რით."
-
-#: ../rules/base.xml.in.h:377
-msgid "Pro"
-msgstr "Pro"
-
-#: ../rules/base.xml.in.h:378
-msgid "Pro Keypad"
-msgstr "Pro დáƒáƒ›áƒáƒ¢áƒ”ბ. პáƒáƒœáƒ”ლით"
-
-#: ../rules/base.xml.in.h:379
-msgid "Probhat"
-msgstr "პრáƒáƒ‘áƒáƒ¢áƒ˜"
-
-#: ../rules/base.xml.in.h:380
-msgid "Propeller Voyager (KTEZ-1000)"
-msgstr "Propeller Voyager (KTEZ-1000)"
-
-#: ../rules/base.xml.in.h:381
-msgid "Prt"
-msgstr "პáƒáƒ áƒ¢"
-
-#: ../rules/base.xml.in.h:382
-msgid "QTronix Scorpius 98N+"
-msgstr "QTronix Scorpius 98N+"
-
-#: ../rules/base.xml.in.h:383
-msgid "R-Alt switches group while pressed."
-msgstr ""
-"მáƒáƒ áƒ¯áƒ•áƒ”ნრAlt კლáƒáƒ•áƒ˜áƒ¨áƒ˜ ცვლის "
-"ჯგუფს დáƒáƒ­áƒ”რილ "
-"მდგáƒáƒ›áƒáƒ áƒ”áƒáƒ‘áƒáƒ¨áƒ˜."
-
-#: ../rules/base.xml.in.h:384
-msgid "Right Alt is Compose."
-msgstr ""
-"მáƒáƒ áƒ¯áƒ•áƒ”ნრAlt ღილáƒáƒ™áƒ˜ "
-"შეესáƒáƒ‘áƒáƒ›áƒ”ბრCompose-ს."
-
-#: ../rules/base.xml.in.h:385
-msgid "Right Alt key changes group."
-msgstr ""
-"მáƒáƒ áƒ¯áƒ•áƒ”ნრAlt ღილáƒáƒ™áƒ˜ ცვლის "
-"ჯგუფს."
-
-#: ../rules/base.xml.in.h:386
-msgid "Right Ctrl is Compose."
-msgstr ""
-"მáƒáƒ áƒ¯áƒ•áƒ”ნრCtrl ღილáƒáƒ™áƒ˜ "
-"შეესáƒáƒ‘áƒáƒ›áƒ”ბრCompose-ს."
-
-#: ../rules/base.xml.in.h:387
-msgid "Right Ctrl key changes group."
-msgstr ""
-"მáƒáƒ áƒ¯áƒ•áƒ”ნრCtrl ღილáƒáƒ™áƒ˜ ცვლის "
-"ჯგუფს."
-
-#: ../rules/base.xml.in.h:388
-msgid "Right Ctrl key switches group while pressed."
-msgstr ""
-"მáƒáƒ áƒ¯áƒ•áƒ”ნრCtrl ღილáƒáƒ™áƒ˜ ცვლის "
-"ჯგუფს დáƒáƒ­áƒ”რილ "
-"მდგáƒáƒ›áƒáƒ áƒ”áƒáƒ‘áƒáƒ¨áƒ˜."
-
-#: ../rules/base.xml.in.h:389
-msgid "Right Ctrl key works as Right Alt."
-msgstr ""
-"მáƒáƒ áƒ¯áƒ•áƒ”ნრCtrl ღილáƒáƒ™áƒ˜ მáƒáƒ¥áƒ›áƒ”დებს "
-"რáƒáƒ’áƒáƒ áƒª მáƒáƒ áƒ¯áƒ•áƒ”ნრAlt."
-
-#: ../rules/base.xml.in.h:390
-msgid "Right Shift key changes group."
-msgstr ""
-"მáƒáƒ áƒ¯áƒ•áƒ”ნრShift ღილáƒáƒ™áƒ˜ ცვლის "
-"ჯგუფს."
-
-#: ../rules/base.xml.in.h:391
-msgid "Right Win-key changes group."
-msgstr ""
-"მáƒáƒ áƒ¯áƒ•áƒ”ნრWin ღილáƒáƒ™áƒ˜ ცვლის "
-"ჯგუფს."
-
-#: ../rules/base.xml.in.h:392
-msgid "Right Win-key is Compose."
-msgstr ""
-"მáƒáƒ áƒ¯áƒ•áƒ”ნრWin ღილáƒáƒ™áƒ˜ "
-"შეესáƒáƒ‘áƒáƒ›áƒ”ბრCompose-ს."
-
-#: ../rules/base.xml.in.h:393
-msgid "Right Win-key switches group while pressed."
-msgstr ""
-"მáƒáƒ áƒ¯áƒ•áƒ”ნრWin ღილáƒáƒ™áƒ˜ ცვლის "
-"ჯგუფს დáƒáƒ­áƒ”რილ "
-"მდგáƒáƒ›áƒáƒ áƒ”áƒáƒ‘áƒáƒ¨áƒ˜."
-
-#: ../rules/base.xml.in.h:394
-msgid "Right handed Dvorak"
-msgstr ""
-"Dvorak კლáƒáƒ•áƒ˜áƒáƒ¢áƒ£áƒ áƒ "
-"áƒáƒ áƒ-ცáƒáƒªáƒ˜áƒ”ბისთვის"
-
-#: ../rules/base.xml.in.h:395
-msgid "Romania"
-msgstr "რუმინეთი"
-
-#: ../rules/base.xml.in.h:396
-msgid "Romanian keyboard with German letters"
-msgstr ""
-"რუმინული კლáƒáƒ•áƒ˜áƒáƒ¢áƒ£áƒ áƒ "
-"გერმáƒáƒœáƒ£áƒšáƒ˜ áƒáƒ¡áƒáƒ”ბით"
-
-#: ../rules/base.xml.in.h:397
-msgid "Romanian keyboard with German letters, eliminate dead keys"
-msgstr ""
-"რუმინული კლáƒáƒ•áƒ˜áƒáƒ¢áƒ£áƒ áƒ "
-"გერმáƒáƒœáƒ£áƒšáƒ˜ áƒáƒ¡áƒáƒ”ბით, dead keys "
-"გáƒáƒ áƒ”შე. "
-
-#: ../rules/base.xml.in.h:398
-msgid "Rou"
-msgstr "რუმ"
-
-#: ../rules/base.xml.in.h:399
-msgid "Rus"
-msgstr "რუს"
-
-#: ../rules/base.xml.in.h:400
-msgid "Russia"
-msgstr "რუსეთი"
-
-#: ../rules/base.xml.in.h:401
-msgid "Russian"
-msgstr "რუსული"
-
-#: ../rules/base.xml.in.h:402
-msgid "Russian phonetic"
-msgstr "რუსული ფáƒáƒœáƒ”ტიკური"
-
-#: ../rules/base.xml.in.h:403
-msgid "Russian phonetic, eliminate dead keys"
-msgstr ""
-"რუსული ფáƒáƒœáƒ”ტიკური, სპეც (dead keys) "
-"კლáƒáƒ•áƒ˜áƒ¨áƒ”ბის გáƒáƒ áƒ”შე"
-
-#: ../rules/base.xml.in.h:404
-msgid "Russian with Kazakh"
-msgstr "რუსული ყáƒáƒ–áƒáƒ®áƒ£áƒ áƒ—áƒáƒœ ერთáƒáƒ“"
-
-#: ../rules/base.xml.in.h:405
-msgid "SCG"
-msgstr "SCG"
-
-#: ../rules/base.xml.in.h:406
-msgid "SILVERCREST Multimedia Wireless Keyboard"
-msgstr "SILVERCREST Multimedia Wireless Keyboard"
-
-#: ../rules/base.xml.in.h:407
-msgid "SK-1300"
-msgstr "SK-1300"
-
-#: ../rules/base.xml.in.h:408
-msgid "SK-2500"
-msgstr "SK-2500"
-
-#: ../rules/base.xml.in.h:409
-msgid "SK-6200"
-msgstr "SK-6200"
-
-#: ../rules/base.xml.in.h:410
-msgid "SK-7100"
-msgstr "SK-7100"
-
-#: ../rules/base.xml.in.h:411
-msgid "SVEN Ergonomic 2500"
-msgstr "SVEN Ergonomic 2500"
-
-#: ../rules/base.xml.in.h:412
-msgid "Samsung SDM 4500P"
-msgstr "Samsung SDM 4500P"
-
-#: ../rules/base.xml.in.h:413
-msgid "Samsung SDM 4510P"
-msgstr "Samsung SDM 4510P"
-
-#: ../rules/base.xml.in.h:414
-msgid "ScrollLock LED shows alternative group."
-msgstr ""
-"ScrollLock ინდიკáƒáƒ¢áƒáƒ áƒ˜ áƒáƒœáƒáƒ®áƒ”ბს "
-"áƒáƒšáƒ¢áƒ”რ. ჯგუფს."
-
-#: ../rules/base.xml.in.h:415
-msgid "Serbia and Montenegro"
-msgstr "სერბირდრმáƒáƒœáƒ¢áƒ”ნეგრáƒ"
-
-#: ../rules/base.xml.in.h:416
-msgid "Shift with numpad keys works as in MS Windows."
-msgstr ""
-"Shift ღილáƒáƒ™áƒ˜ ციფრულ "
-"კლáƒáƒ•áƒ˜áƒáƒ¢áƒ£áƒ áƒáƒ¡áƒ—áƒáƒœ, მუშáƒáƒáƒ‘ენ "
-"რáƒáƒ’áƒáƒ áƒª MS Window-ში."
-
-#: ../rules/base.xml.in.h:417
-msgid "Shift+CapsLock changes group."
-msgstr "Shift+CapsLock ცვლიáƒáƒœ ჯგუფს."
-
-#: ../rules/base.xml.in.h:418
-msgid "Slovakia"
-msgstr "სლáƒáƒ•áƒáƒ™áƒ”თი"
-
-#: ../rules/base.xml.in.h:419
-msgid "Slovenia"
-msgstr "სლáƒáƒ•áƒ”ნიáƒ"
-
-#: ../rules/base.xml.in.h:420
-msgid "South Africa"
-msgstr "სáƒáƒ›áƒ®áƒ áƒ”თ áƒáƒ¤áƒ áƒ˜áƒ™áƒ"
-
-#: ../rules/base.xml.in.h:421
-msgid "Southern Uzbek"
-msgstr "სáƒáƒ›áƒ®áƒ áƒ”თ-უზბეკური"
-
-#: ../rules/base.xml.in.h:422
-msgid "Spain"
-msgstr "ესპáƒáƒœáƒ”თი"
-
-#: ../rules/base.xml.in.h:423
-msgid "Special keys (Ctrl+Alt+&lt;key&gt;) handled in a server."
-msgstr ""
-"სპეც კლáƒáƒ•áƒ˜áƒ¨áƒ”ბს (Ctrl+Alt+&lt;клв&gt;) "
-"სერვერი áƒáƒ›áƒ£áƒ¨áƒáƒ•áƒ”ბთ."
-
-#: ../rules/base.xml.in.h:424
-msgid "SrL"
-msgstr "შრლ"
-
-#: ../rules/base.xml.in.h:425
-msgid "Sri Lanka"
-msgstr "შრი-ლáƒáƒœáƒ™áƒ"
-
-#: ../rules/base.xml.in.h:426
-msgid "Standard"
-msgstr "სტáƒáƒœáƒ“áƒáƒ áƒ¢áƒ£áƒšáƒ˜"
-
-#. RSTU 2019-91
-#: ../rules/base.xml.in.h:428
-msgid "Standard RSTU"
-msgstr "სტáƒáƒœáƒ“áƒáƒ áƒ¢áƒ£áƒšáƒ˜ RSTU"
-
-#. RSTU 2019-91
-#: ../rules/base.xml.in.h:430
-msgid "Standard RSTU on Russian layout"
-msgstr ""
-"სტáƒáƒœáƒ“áƒáƒ áƒ¢áƒ£áƒšáƒ˜ RSTU რუსულ "
-"გáƒáƒœáƒšáƒáƒ’ებáƒáƒ–ე"
-
-#: ../rules/base.xml.in.h:431
-msgid "Sun dead keys"
-msgstr "სპეც ღილáƒáƒ™áƒ”ბი (dead keys) Sun"
-
-#: ../rules/base.xml.in.h:432
-msgid "Super Power Multimedia Keyboard"
-msgstr "Super Power Multimedia Keyboard"
-
-#: ../rules/base.xml.in.h:433
-msgid "Super is mapped to the Win-keys (default)."
-msgstr ""
-"Super შეესáƒáƒ‘áƒáƒ›áƒ”ბრWin "
-"ღილáƒáƒ™áƒ”ბს.(ნáƒáƒ’ულისმევიáƒ)"
-
-#: ../rules/base.xml.in.h:434
-msgid "Svk"
-msgstr "სლáƒáƒ•áƒ™"
-
-#: ../rules/base.xml.in.h:435
-msgid "Svn"
-msgstr "სლáƒáƒ•áƒ”ნ"
-
-#: ../rules/base.xml.in.h:436
-msgid "Swap Ctrl and CapsLock."
-msgstr "CapsLock ის Ctrl-ით შეცვლáƒ."
-
-#: ../rules/base.xml.in.h:437
-msgid "Swe"
-msgstr "შვედ"
-
-#: ../rules/base.xml.in.h:438
-msgid "Sweden"
-msgstr "შვედეთი"
-
-#: ../rules/base.xml.in.h:439
-msgid "Switzerland"
-msgstr "შვეიცáƒáƒ áƒ˜áƒ"
-
-#: ../rules/base.xml.in.h:440
-msgid "Symplon PaceBook (tablet PC)"
-msgstr "Symplon PaceBook (tablet PC)"
-
-#: ../rules/base.xml.in.h:441
-msgid "Syr"
-msgstr "სირ"
-
-#: ../rules/base.xml.in.h:442
-msgid "Syria"
-msgstr "სირიáƒ"
-
-#: ../rules/base.xml.in.h:443
-msgid "Syriac"
-msgstr "სირიული"
-
-#: ../rules/base.xml.in.h:444
-msgid "Syriac phonetic"
-msgstr "სირიის ფáƒáƒœáƒ”ტიკური"
-
-#: ../rules/base.xml.in.h:445
-msgid "TIS-820.2538"
-msgstr "TIS-820.2538"
-
-#: ../rules/base.xml.in.h:446
-msgid "Tajikistan"
-msgstr "ტáƒáƒ¯áƒ˜áƒ™áƒ”თი"
-
-#: ../rules/base.xml.in.h:447
-msgid "Tamil"
-msgstr "თáƒáƒ›áƒ˜áƒšáƒ£áƒ áƒ˜"
-
-#: ../rules/base.xml.in.h:448
-msgid "Tamil TAB Typewriter"
-msgstr ""
-"თáƒáƒ›áƒ˜áƒšáƒ£áƒ áƒ˜ TAB სáƒáƒ‘ეჭდი მáƒáƒœáƒ¥áƒáƒœáƒ"
-
-#: ../rules/base.xml.in.h:449
-msgid "Tamil TSCII Typewriter"
-msgstr ""
-"თáƒáƒ›áƒ˜áƒšáƒ£áƒ áƒ˜ TSCII სáƒáƒ‘ეჭდი მáƒáƒœáƒ¥áƒáƒœáƒ"
-
-#: ../rules/base.xml.in.h:450
-msgid "Tamil Unicode"
-msgstr "ტáƒáƒ›áƒ˜áƒšáƒ£áƒ áƒ˜ უნიკáƒáƒ“ი"
-
-#: ../rules/base.xml.in.h:451
-msgid "Tatar"
-msgstr "თáƒáƒ—რული"
-
-#: ../rules/base.xml.in.h:452
-msgid "Telugu"
-msgstr "თელუგუ"
-
-#: ../rules/base.xml.in.h:453
-msgid "Tha"
-msgstr "ტáƒáƒ˜"
-
-#: ../rules/base.xml.in.h:454
-msgid "Thailand"
-msgstr "ტáƒáƒ˜áƒšáƒáƒœáƒ“ი"
-
-#: ../rules/base.xml.in.h:455
-msgid "Third level choosers"
-msgstr "მე-3 სáƒáƒ¤áƒ”ხურის áƒáƒ›áƒáƒ áƒ©áƒ”ვáƒ"
-
-#: ../rules/base.xml.in.h:456
-msgid "Tilde (~) variant"
-msgstr "ვáƒáƒ áƒ˜áƒáƒœáƒ¢áƒ˜ (~)-ით"
-
-#: ../rules/base.xml.in.h:457
-msgid "Tjk"
-msgstr "ტáƒáƒ¯"
-
-#: ../rules/base.xml.in.h:458
-msgid "Toshiba Satellite S3000"
-msgstr "Toshiba Satellite S3000"
-
-#: ../rules/base.xml.in.h:459
-msgid "Trust Direct Access Keyboard"
-msgstr "Trust Direct Access Keyboard"
-
-#: ../rules/base.xml.in.h:460
-msgid "Trust Wireless Keyboard Classic"
-msgstr "Trust Wireless Keyboard Classic"
-
-#: ../rules/base.xml.in.h:461
-msgid "Tur"
-msgstr "თურქ"
-
-#: ../rules/base.xml.in.h:462
-msgid "Turkey"
-msgstr "თურქეთი"
-
-#: ../rules/base.xml.in.h:463
-msgid "Typewriter"
-msgstr "სáƒáƒ‘ეჭდი მáƒáƒœáƒ¥áƒáƒœáƒ"
-
-#: ../rules/base.xml.in.h:464
-msgid "U.S. English"
-msgstr "ინგლისუáƒáƒ áƒ˜ áƒ.შ.შ"
-
-#: ../rules/base.xml.in.h:465
-msgid "US keyboard with Bosnian digraphs"
-msgstr ""
-"áƒáƒ¨áƒ¨-ს კლáƒáƒ•áƒ˜áƒáƒ¢áƒ£áƒ áƒ ბáƒáƒ¡áƒœáƒ˜áƒ£áƒ áƒ˜ "
-"დიგრáƒáƒ¤áƒ”ბით"
-
-#: ../rules/base.xml.in.h:466
-msgid "US keyboard with Bosnian letters"
-msgstr ""
-"áƒáƒ¨áƒ¨-ს კლáƒáƒ•áƒ˜áƒáƒ¢áƒ£áƒ áƒ ბáƒáƒ¡áƒœáƒ˜áƒ£áƒ áƒ˜ "
-"áƒáƒ¡áƒáƒ”ბით"
-
-#: ../rules/base.xml.in.h:467
-msgid "US keyboard with Croatian digraphs"
-msgstr ""
-"áƒáƒ¨áƒ¨-ს კლáƒáƒ•áƒ˜áƒáƒ¢áƒ£áƒ áƒ ხáƒáƒ áƒ•áƒáƒ¢áƒ˜áƒ£áƒšáƒ˜ "
-"დიგრáƒáƒ¤áƒ”ბით"
-
-#: ../rules/base.xml.in.h:468
-msgid "US keyboard with Croatian letters"
-msgstr ""
-"áƒáƒ¨áƒ¨-ს კლáƒáƒ•áƒ˜áƒáƒ¢áƒ£áƒ áƒ ხáƒáƒ áƒ•áƒáƒ¢áƒ˜áƒ£áƒšáƒ˜ "
-"áƒáƒ¡áƒáƒ”ბით"
-
-#: ../rules/base.xml.in.h:469
-msgid "US keyboard with Lithuanian letters"
-msgstr ""
-"áƒáƒ¨áƒ¨-ს კლáƒáƒ•áƒ˜áƒáƒ¢áƒ£áƒ áƒ ლიტვური "
-"áƒáƒ¡áƒáƒ”ბით"
-
-#: ../rules/base.xml.in.h:470
-msgid "US keyboard with Slovenian digraphs"
-msgstr ""
-"áƒáƒ¨áƒ¨-ს კლáƒáƒ•áƒ˜áƒáƒ¢áƒ£áƒ áƒ სლáƒáƒ•áƒáƒ™áƒ£áƒ áƒ˜ "
-"დიგრáƒáƒ¤áƒ”ბით"
-
-#: ../rules/base.xml.in.h:471
-msgid "US keyboard with Slovenian letters"
-msgstr ""
-"áƒáƒ¨áƒ¨-ს კლáƒáƒ•áƒ˜áƒáƒ¢áƒ£áƒ áƒ სლáƒáƒ•áƒáƒ™áƒ£áƒ áƒ˜ "
-"áƒáƒ¡áƒáƒ”ბით"
-
-#: ../rules/base.xml.in.h:472
-msgid "USA"
-msgstr "áƒáƒ¨áƒ¨"
-
-#: ../rules/base.xml.in.h:473
-msgid "Ukr"
-msgstr "უკრ"
-
-#: ../rules/base.xml.in.h:474
-msgid "Ukraine"
-msgstr "უკრáƒáƒ˜áƒœáƒ"
-
-#: ../rules/base.xml.in.h:475
-msgid "UnicodeExpert"
-msgstr "UnicodeExpert"
-
-#: ../rules/base.xml.in.h:476
-msgid "United Kingdom"
-msgstr "დიდი ბრიტáƒáƒœáƒ”თი"
-
-#: ../rules/base.xml.in.h:477
-msgid "Urdu"
-msgstr "ურდუ"
-
-#: ../rules/base.xml.in.h:478
-msgid "Use Bosnian digraphs"
-msgstr ""
-"ბáƒáƒ¡áƒœáƒ˜áƒ£áƒ áƒ˜ დიგრáƒáƒ¤áƒ”ბის "
-"გáƒáƒ›áƒáƒ§áƒ”ნებáƒ"
-
-#: ../rules/base.xml.in.h:479
-msgid "Use Croatian digraphs"
-msgstr ""
-"ხáƒáƒ áƒ•áƒáƒ¢áƒ˜áƒ£áƒšáƒ˜ დიგრáƒáƒ¤áƒ”ბის "
-"გáƒáƒ›áƒáƒ§áƒ”ნებáƒ"
-
-#: ../rules/base.xml.in.h:480
-msgid "Use Slovenian digraphs"
-msgstr ""
-"სლáƒáƒ•áƒ”ნური დიგრáƒáƒ¤áƒ”ბის "
-"გáƒáƒ›áƒáƒ§áƒ”ნებáƒ"
-
-#: ../rules/base.xml.in.h:481
-msgid "Use guillemets for quotes"
-msgstr ""
-"ფრáƒáƒœáƒ’ული ბრჭყáƒáƒšáƒ”ბის, "
-"ბრჭყáƒáƒšáƒ”ბáƒáƒ“ გáƒáƒ›áƒáƒ§áƒ”ნებáƒ"
-
-#: ../rules/base.xml.in.h:482
-msgid "Use keyboard LED to show alternative group."
-msgstr ""
-"დáƒáƒ›áƒáƒ¢áƒ”ბითი ჯგუფის "
-"სáƒáƒ©áƒ•áƒ”ნებლáƒáƒ“, კლáƒáƒ•áƒ˜áƒáƒ¢áƒ£áƒ áƒ˜áƒ¡ "
-"ინდიკáƒáƒ¢áƒáƒ áƒ˜áƒ¡ გáƒáƒ›áƒáƒ§áƒ”ნებáƒ."
-
-#: ../rules/base.xml.in.h:483
-msgid "Uzb"
-msgstr "უზბ"
-
-#: ../rules/base.xml.in.h:484
-msgid "Uzbekistan"
-msgstr "უზბეკეთი"
-
-#: ../rules/base.xml.in.h:485
-msgid "Vietnam"
-msgstr "ვიეტნáƒáƒ›áƒ˜"
-
-#: ../rules/base.xml.in.h:486
-msgid "Vnm"
-msgstr "ვიეტ"
-
-#: ../rules/base.xml.in.h:487
-msgid "Wang model 724 azerty"
-msgstr "Wang model 724 azerty"
-
-#: ../rules/base.xml.in.h:488
-msgid "Winbook Model XP5"
-msgstr "Winbook Model XP5"
-
-#: ../rules/base.xml.in.h:489
-msgid "Winkeys"
-msgstr "Windows კლáƒáƒ•áƒ˜áƒáƒ¢áƒ£áƒ áƒ"
-
-#: ../rules/base.xml.in.h:490
-msgid "With &lt;\\|&gt; key"
-msgstr "კლáƒáƒ•áƒ˜áƒ¨áƒ”ბით &lt;\\|&gt;"
-
-#: ../rules/base.xml.in.h:491
-msgid "With guillemets"
-msgstr "გრáƒáƒœáƒ’ული ბრჭყáƒáƒšáƒ”ბით"
-
-#: ../rules/base.xml.in.h:492
-msgid "Yahoo! Internet Keyboard"
-msgstr "Yahoo! Internet Keyboard"
-
-#: ../rules/base.xml.in.h:493
-msgid "Z and ZHE swapped"
-msgstr "Z დრZHE გáƒáƒ“áƒáƒ¢áƒáƒœáƒ˜áƒšáƒ˜áƒ"
-
-#: ../rules/base.xml.in.h:494
-msgid "Zar"
-msgstr "უáƒáƒ áƒ˜"
-
-#: ../rules/base.xml.in.h:495
-msgid "azerty"
-msgstr "azerty"
-
-#: ../rules/base.xml.in.h:496
-msgid "azerty/digits"
-msgstr "zerty/ციფრები"
-
-#: ../rules/base.xml.in.h:497
-msgid "digits"
-msgstr "ციფრები"
-
-#: ../rules/base.xml.in.h:498
-msgid "lyx"
-msgstr "lyx"
-
-#: ../rules/base.xml.in.h:499
-msgid "qwerty"
-msgstr "qwerty"
-
-#: ../rules/base.xml.in.h:500
-msgid "qwerty, extended Backslash"
-msgstr ""
-"qwerty, დრBackslash-ის დáƒáƒ›áƒáƒ¢áƒ”ბითი "
-"ფუნქციები"
-
-#: ../rules/base.xml.in.h:501
-msgid "qwerty/digits"
-msgstr "qwerty/ციფრები"
-
-#: ../rules/base.xml.in.h:502
-msgid "qwertz"
-msgstr "qwertz"
-
+# translation of xkeyboard-config.po to Georgian
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+#
+# Vladimer Sichinava <vlsichinava@gmail.com>, 2006.
+msgid ""
+msgstr ""
+"Project-Id-Version: xkeyboard-config\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2006-09-17 21:37+0100\n"
+"PO-Revision-Date: 2006-09-20 22:48+0200\n"
+"Last-Translator: Vladimer Sichinava <vlsichinava@gmail.com>\n"
+"Language-Team: Georgian <www.gia.ge>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+"Plural-Forms: nplurals=1; plural=0\n"
+
+#: ../rules/base.xml.in.h:1
+msgid "(F)"
+msgstr "(F)"
+
+#: ../rules/base.xml.in.h:2
+msgid "101/104 key Compatible"
+msgstr "101/104 ღილáƒáƒ™áƒ˜áƒáƒœáƒ˜ თáƒáƒ•áƒ¡áƒ”ბáƒáƒ“ი"
+
+#: ../rules/base.xml.in.h:3
+msgid "101/qwerty/comma/Dead keys"
+msgstr ""
+"pc101, qwerty, მძიმე, სპეც კლáƒáƒ•áƒ˜áƒ¨áƒ”ბი "
+"(dead keys)"
+
+#: ../rules/base.xml.in.h:4
+msgid "101/qwerty/comma/Eliminate dead keys"
+msgstr ""
+"pc101, qwerty, მძიმე, სპეც კლáƒáƒ•áƒ˜áƒ¨áƒ”ბის "
+"(dead keys) გáƒáƒ áƒ”შე"
+
+#: ../rules/base.xml.in.h:5
+msgid "101/qwerty/dot/Dead keys"
+msgstr ""
+"pc101, qwerty, წერტილი, სპეც "
+"კლáƒáƒ•áƒ˜áƒ¨áƒ”ბი (dead keys)"
+
+#: ../rules/base.xml.in.h:6
+msgid "101/qwerty/dot/Eliminate dead keys"
+msgstr ""
+"pc101, qwerty, წერტილი, სპეც "
+"კლáƒáƒ•áƒ˜áƒ¨áƒ”ბი (dead keys) გáƒáƒ áƒ”შე"
+
+#: ../rules/base.xml.in.h:7
+msgid "101/qwertz/comma/Dead keys"
+msgstr ""
+"pc101, qwertz, მძიმე, სპეც კლáƒáƒ•áƒ˜áƒ¨áƒ”ბი "
+"(dead keys)"
+
+#: ../rules/base.xml.in.h:8
+msgid "101/qwertz/comma/Eliminate dead keys"
+msgstr ""
+"pc101, qwertz, მძიმე, სპეც კლáƒáƒ•áƒ˜áƒ¨áƒ”ბის "
+"(dead keys) გáƒáƒ áƒ”შე"
+
+#: ../rules/base.xml.in.h:9
+msgid "101/qwertz/dot/Dead keys"
+msgstr ""
+"pc101, qwertz, წერტილი, სპეც "
+"კლáƒáƒ•áƒ˜áƒ¨áƒ”ბი (dead keys)"
+
+#: ../rules/base.xml.in.h:10
+msgid "101/qwertz/dot/Eliminate dead keys"
+msgstr ""
+"pc101, qwertz, წერტილი, სპეც "
+"კლáƒáƒ•áƒ˜áƒ¨áƒ”ბის (dead keys) გáƒáƒ áƒ”შე"
+
+#: ../rules/base.xml.in.h:11
+msgid "102/qwerty/comma/Dead keys"
+msgstr ""
+"pc102, qwerty, მძიმე, სპეც კლáƒáƒ•áƒ˜áƒ¨áƒ”ბი "
+"(dead keys)"
+
+#: ../rules/base.xml.in.h:12
+msgid "102/qwerty/comma/Eliminate dead keys"
+msgstr ""
+"pc102, qwerty, მძიმე, სპეც კლáƒáƒ•áƒ˜áƒ¨áƒ”ბის "
+"(dead keys) გáƒáƒ áƒ”შე"
+
+#: ../rules/base.xml.in.h:13
+msgid "102/qwerty/dot/Dead keys"
+msgstr ""
+"pc102, qwertz, წერტილი, სპეც "
+"კლáƒáƒ•áƒ˜áƒ¨áƒ”ბი (dead keys)"
+
+#: ../rules/base.xml.in.h:14
+msgid "102/qwerty/dot/Eliminate dead keys"
+msgstr ""
+"pc102, qwerty, წერტილი, სპეც "
+"კლáƒáƒ•áƒ˜áƒ¨áƒ”ბის (dead keys) გáƒáƒ áƒ”შე"
+
+#: ../rules/base.xml.in.h:15
+msgid "102/qwertz/comma/Dead keys"
+msgstr ""
+"pc102, qwertz, მძიმე, სპეც კლáƒáƒ•áƒ˜áƒ¨áƒ”ბი "
+"(dead keys)"
+
+#: ../rules/base.xml.in.h:16
+msgid "102/qwertz/comma/Eliminate dead keys"
+msgstr ""
+"pc102, qwertz, მძიმე, სპეც კლáƒáƒ•áƒ˜áƒ¨áƒ”ბის "
+"(dead keys) გáƒáƒ áƒ”შე"
+
+#: ../rules/base.xml.in.h:17
+msgid "102/qwertz/dot/Dead keys"
+msgstr ""
+"pc102, qwertz, წერტილი, სპეც "
+"კლáƒáƒ•áƒ˜áƒ¨áƒ”ბი (dead keys)"
+
+#: ../rules/base.xml.in.h:18
+msgid "102/qwertz/dot/Eliminate dead keys"
+msgstr ""
+"pc102, qwertz, წერტილი, სპეც "
+"კლáƒáƒ•áƒ˜áƒ¨áƒ”ბის (dead keys) გáƒáƒ áƒ”შე"
+
+#: ../rules/base.xml.in.h:19
+msgid "A4Tech KB-21"
+msgstr "A4Tech KB-21"
+
+#: ../rules/base.xml.in.h:20
+msgid "A4Tech KBS-8"
+msgstr "A4Tech KBS-8"
+
+#: ../rules/base.xml.in.h:21
+msgid "A4Tech Wireless Desktop RFKB-23"
+msgstr "A4Tech Wireless Desktop RFKB-23"
+
+#: ../rules/base.xml.in.h:22
+msgid "ACPI Standard"
+msgstr "სტáƒáƒœáƒ“áƒáƒ áƒ¢áƒ£áƒšáƒ˜ ACPI"
+
+#: ../rules/base.xml.in.h:23
+msgid "Acer AirKey V"
+msgstr "Acer AirKey V"
+
+#: ../rules/base.xml.in.h:24
+msgid "Acer C300"
+msgstr "Acer C300"
+
+#: ../rules/base.xml.in.h:25
+msgid "Acer Ferrari 4000"
+msgstr "Acer Ferrari 4000"
+
+#: ../rules/base.xml.in.h:26
+msgid "Acer TravelMate 800"
+msgstr "Acer TravelMate 800"
+
+#: ../rules/base.xml.in.h:27
+msgid "Add the EuroSign to the 2 key."
+msgstr ""
+"ევრáƒáƒ¡ ნიშნის 2იáƒáƒœáƒ˜áƒ¡ კლáƒáƒ•áƒ˜áƒ¨áƒ–ე "
+"დáƒáƒ›áƒáƒ¢áƒ”ბáƒ."
+
+#: ../rules/base.xml.in.h:28
+msgid "Add the EuroSign to the 5 key."
+msgstr ""
+"ევრáƒáƒ¡ ნიშნის 5იáƒáƒœáƒ˜áƒ¡ კლáƒáƒ•áƒ˜áƒ¨áƒ–ე "
+"დáƒáƒ›áƒáƒ¢áƒ”ბáƒ."
+
+#: ../rules/base.xml.in.h:29
+msgid "Add the EuroSign to the E key."
+msgstr ""
+"ევრáƒáƒ¡ ნიშნის E áƒáƒ¡áƒáƒ¡ კლáƒáƒ•áƒ˜áƒ¨áƒ–ე "
+"დáƒáƒ›áƒáƒ¢áƒ”ბáƒ."
+
+#: ../rules/base.xml.in.h:30
+msgid "Add the standard behavior to Menu key."
+msgstr ""
+"მენიუს კლáƒáƒ•áƒ˜áƒ¨áƒ˜áƒ¡áƒ—ვის "
+"სტáƒáƒœáƒ“áƒáƒ áƒ¢áƒ£áƒšáƒ˜ ქცევის "
+"მინიჭებáƒ."
+
+#: ../rules/base.xml.in.h:31
+msgid "Adding the EuroSign to certain keys"
+msgstr ""
+"ევრáƒáƒ¡ ნიშნის ზáƒáƒ’იერთ "
+"კლáƒáƒ•áƒ˜áƒ¨áƒ”ბზე დáƒáƒ›áƒáƒ¢áƒ”ბáƒ"
+
+#: ../rules/base.xml.in.h:32
+msgid "Advance Scorpius KI"
+msgstr "Advance Scorpius KI"
+
+#: ../rules/base.xml.in.h:33
+msgid "Afg"
+msgstr "áƒáƒ•áƒ¦"
+
+#: ../rules/base.xml.in.h:34
+msgid "Afghanistan"
+msgstr "áƒáƒ•áƒ¦áƒáƒœáƒ”თი"
+
+#: ../rules/base.xml.in.h:35
+msgid "Akan"
+msgstr "áƒáƒ™áƒáƒœáƒ˜"
+
+#: ../rules/base.xml.in.h:36
+msgid "Alb"
+msgstr "áƒáƒšáƒ‘"
+
+#: ../rules/base.xml.in.h:37
+msgid "Albania"
+msgstr "áƒáƒšáƒ‘áƒáƒœáƒ”თი"
+
+#: ../rules/base.xml.in.h:38
+msgid "Alt and Meta are on the Alt keys (default)."
+msgstr ""
+"Alt დრMeta, Alt ღილáƒáƒ™áƒ–ე "
+"(ნáƒáƒ’ულისხმევიáƒ)."
+
+#: ../rules/base.xml.in.h:39
+msgid "Alt is mapped to the right Win-key and Super to Menu."
+msgstr ""
+"Alt შეესáƒáƒ‘áƒáƒ›áƒ”ბრმáƒáƒ áƒ¯áƒ•áƒ”ნრWin "
+"ღილáƒáƒ™áƒ¡, Super კი Menu-ს."
+
+#: ../rules/base.xml.in.h:40
+msgid "Alt+CapsLock changes group."
+msgstr "Alt + CapsLock ცვლის ჯგუფს."
+
+#: ../rules/base.xml.in.h:41
+msgid "Alt+Ctrl changes group."
+msgstr "Alt + Ctrl ცვლის ჯგუფს."
+
+#: ../rules/base.xml.in.h:42
+msgid "Alt+Shift changes group."
+msgstr "Alt + Shift ცვლის ჯგუფს."
+
+#: ../rules/base.xml.in.h:43
+msgid "Alt-Q"
+msgstr "Alt-Q"
+
+#: ../rules/base.xml.in.h:44
+msgid "Alt/Win key behavior"
+msgstr "Alt/Win კლáƒáƒ•áƒ˜áƒ¨áƒ—რქცევáƒ"
+
+#: ../rules/base.xml.in.h:45
+msgid "Alternative"
+msgstr "áƒáƒšáƒ¢áƒ”რნáƒáƒ¢áƒ˜áƒ£áƒšáƒ˜"
+
+#: ../rules/base.xml.in.h:46
+msgid "Alternative international (former us_intl)"
+msgstr ""
+"áƒáƒšáƒ¢áƒ”რნáƒáƒ¢áƒ˜áƒ£áƒšáƒ˜ "
+"ინტერნáƒáƒªáƒ˜áƒáƒœáƒáƒšáƒ£áƒ áƒ˜"
+
+#: ../rules/base.xml.in.h:47
+msgid "Alternative, Sun dead keys"
+msgstr ""
+"áƒáƒšáƒ¢áƒ”რნáƒáƒ¢áƒ˜áƒ£áƒšáƒ˜, Sun სპეც "
+"კლáƒáƒ•áƒ˜áƒ¨áƒ”ბით (dead keys)"
+
+#: ../rules/base.xml.in.h:48
+msgid "Alternative, eliminate dead keys"
+msgstr ""
+"áƒáƒšáƒ¢áƒ”რნáƒáƒ¢áƒ˜áƒ£áƒšáƒ˜, სპეც "
+"კლáƒáƒ•áƒ˜áƒ¨áƒ”ბის (dead keys) გáƒáƒ áƒ”შე"
+
+#: ../rules/base.xml.in.h:49
+msgid "And"
+msgstr "áƒáƒœáƒ“"
+
+#: ../rules/base.xml.in.h:50
+msgid "Andorra"
+msgstr "áƒáƒœáƒ“áƒáƒ áƒ"
+
+#: ../rules/base.xml.in.h:51
+msgid "Apostrophe (') variant"
+msgstr "(') áƒáƒžáƒáƒ¡áƒ¢áƒ áƒáƒ¤áƒ˜áƒáƒœáƒ˜ ვáƒáƒ áƒ˜áƒáƒœáƒ¢áƒ˜"
+
+#: ../rules/base.xml.in.h:52
+msgid "Apple"
+msgstr "Apple"
+
+#: ../rules/base.xml.in.h:53
+msgid "Apple Laptop"
+msgstr "Apple ლეპტáƒáƒžáƒ˜"
+
+#: ../rules/base.xml.in.h:54
+msgid "Ara"
+msgstr "áƒáƒ áƒ"
+
+#: ../rules/base.xml.in.h:55
+msgid "Arabic"
+msgstr "áƒáƒ áƒáƒ‘ული"
+
+#: ../rules/base.xml.in.h:56
+msgid "Arm"
+msgstr "სáƒáƒ›áƒ®"
+
+#: ../rules/base.xml.in.h:57
+msgid "Armenia"
+msgstr "სáƒáƒ›áƒ®áƒ”თი"
+
+#: ../rules/base.xml.in.h:58
+msgid "Aze"
+msgstr "áƒáƒ–ერ"
+
+#: ../rules/base.xml.in.h:59
+msgid "Azerbaijan"
+msgstr "áƒáƒ–ერბáƒáƒ˜áƒ¯áƒáƒœáƒ˜"
+
+#: ../rules/base.xml.in.h:60
+msgid "Azona RF2300 wireless Internet Keyboard"
+msgstr "Azona RF2300 wireless Internet Keyboard"
+
+#: ../rules/base.xml.in.h:61
+msgid "BTC 5090"
+msgstr "BTC 5090"
+
+#: ../rules/base.xml.in.h:62
+msgid "BTC 5113RF Multimedia"
+msgstr "BTC 5113RF Multimedia"
+
+#: ../rules/base.xml.in.h:63
+msgid "BTC 5126T"
+msgstr "BTC 5126T"
+
+#: ../rules/base.xml.in.h:64
+msgid "BTC 9000"
+msgstr "BTC 9000"
+
+#: ../rules/base.xml.in.h:65
+msgid "BTC 9000A"
+msgstr "BTC 9000A"
+
+#: ../rules/base.xml.in.h:66
+msgid "BTC 9001AH"
+msgstr "BTC 9001AH"
+
+#: ../rules/base.xml.in.h:67
+msgid "BTC 9019U"
+msgstr "BTC 9019U"
+
+#: ../rules/base.xml.in.h:68
+msgid "Ban"
+msgstr "ბáƒáƒœ"
+
+#: ../rules/base.xml.in.h:69
+msgid "Bangladesh"
+msgstr "ბáƒáƒœáƒ’ლáƒáƒ“ეში"
+
+#: ../rules/base.xml.in.h:70
+msgid "Bel"
+msgstr "ბელ"
+
+#: ../rules/base.xml.in.h:71
+msgid "Belarus"
+msgstr "ბელáƒáƒ áƒ£áƒ¡áƒ˜áƒ"
+
+#: ../rules/base.xml.in.h:72
+msgid "Belgium"
+msgstr "ბელგიáƒ"
+
+#: ../rules/base.xml.in.h:73
+msgid "Bengali"
+msgstr "ბენგáƒáƒšáƒ˜"
+
+#: ../rules/base.xml.in.h:74
+msgid "Bengali Probhat"
+msgstr "ბენგáƒáƒšáƒ˜áƒ¡ პრáƒáƒ‘áƒáƒ¢áƒ˜"
+
+#: ../rules/base.xml.in.h:75
+msgid "Bgr"
+msgstr "ბáƒáƒšáƒ’"
+
+#: ../rules/base.xml.in.h:76
+msgid "Bhu"
+msgstr "ბუტ"
+
+#: ../rules/base.xml.in.h:77
+msgid "Bhutan"
+msgstr "ბუტáƒáƒœáƒ˜"
+
+#: ../rules/base.xml.in.h:78
+msgid "Bih"
+msgstr "ბáƒáƒ¡áƒœ"
+
+#: ../rules/base.xml.in.h:79
+msgid "Blr"
+msgstr "ბელ"
+
+#: ../rules/base.xml.in.h:80
+msgid "Bosnia and Herzegovina"
+msgstr "ბáƒáƒ¡áƒœáƒ˜áƒ დრჰერცáƒáƒ’áƒáƒ•áƒ˜áƒœáƒ"
+
+#: ../rules/base.xml.in.h:81
+msgid "Both Alt keys together change group."
+msgstr ""
+"áƒáƒ áƒ˜áƒ•áƒ” Alt ღილáƒáƒ™áƒ˜ ერთáƒáƒ“ ცვლის "
+"ჯგუფს."
+
+#: ../rules/base.xml.in.h:82
+msgid "Both Ctrl keys together change group."
+msgstr ""
+"áƒáƒ áƒ˜áƒ•áƒ” Ctrl ღილáƒáƒ™áƒ˜ ერთáƒáƒ“ ცვლის "
+"ჯგუფს."
+
+#: ../rules/base.xml.in.h:83
+msgid "Both Shift keys together change group."
+msgstr ""
+"áƒáƒ áƒ˜áƒ•áƒ” Shift ღილáƒáƒ™áƒ˜ ერთáƒáƒ“ ცვლის "
+"ჯგუფს."
+
+#: ../rules/base.xml.in.h:84
+msgid "Both Win-keys switch group while pressed."
+msgstr ""
+"áƒáƒ áƒ˜áƒ•áƒ” Win ღილáƒáƒ™áƒ˜ ერთáƒáƒ“ ცვლის "
+"ჯგუფს."
+
+#: ../rules/base.xml.in.h:85
+msgid "Bra"
+msgstr "ბრáƒáƒ–"
+
+#: ../rules/base.xml.in.h:86
+msgid "Brazil"
+msgstr "ბრáƒáƒ–ილიáƒ"
+
+#: ../rules/base.xml.in.h:87
+msgid "Brazilian ABNT2"
+msgstr "ბრáƒáƒ–ილიური ABNT2"
+
+#: ../rules/base.xml.in.h:88
+msgid "Brother Internet Keyboard"
+msgstr "Brother Internet Keyboard"
+
+#: ../rules/base.xml.in.h:89
+msgid "Bulgaria"
+msgstr "ბულგáƒáƒ áƒ”თი"
+
+#: ../rules/base.xml.in.h:90
+msgid "Cambodia"
+msgstr "კáƒáƒ›áƒ‘áƒáƒ¯áƒ"
+
+#: ../rules/base.xml.in.h:91
+msgid "Can"
+msgstr "კáƒáƒœ"
+
+#: ../rules/base.xml.in.h:92
+msgid "Canada"
+msgstr "კáƒáƒœáƒáƒ“áƒ"
+
+#: ../rules/base.xml.in.h:93
+msgid "Caps Lock is Compose."
+msgstr ""
+"ღილáƒáƒ™áƒ˜ Caps Lock შეესáƒáƒ‘áƒáƒ›áƒ”ბრCompose-ს."
+
+#: ../rules/base.xml.in.h:94
+msgid "CapsLock LED shows alternative group."
+msgstr ""
+"CapsLock-ის ინდიკáƒáƒ¢áƒáƒ áƒ˜ áƒáƒ©áƒ•áƒ”ნებს "
+"დáƒáƒ›áƒáƒ¢áƒ”ბით ჯგუფებს."
+
+#: ../rules/base.xml.in.h:95
+msgid "CapsLock acts as Shift with locking. Shift \"pauses\" CapsLock."
+msgstr ""
+"მუშáƒáƒáƒ‘ს რáƒáƒ’áƒáƒ áƒª დáƒáƒ‘ლáƒáƒ™áƒ˜áƒšáƒ˜ Shift, "
+"ის áƒáƒ§áƒáƒ•áƒœáƒ”ბს CapsLock-ის "
+"მáƒáƒ¥áƒ›áƒ”დებáƒáƒ¡."
+
+#: ../rules/base.xml.in.h:96
+msgid "CapsLock acts as Shift with locking. Shift doesn't affect CapsLock."
+msgstr ""
+"მუშáƒáƒáƒ‘ს რáƒáƒ’áƒáƒ áƒª დáƒáƒ‘ლáƒáƒ™áƒ˜áƒšáƒ˜ Shift, "
+"ის áƒáƒ  áƒáƒ§áƒáƒ•áƒœáƒ”ბს CapsLock-ის "
+"მáƒáƒ¥áƒ›áƒ”დებáƒáƒ¡."
+
+#: ../rules/base.xml.in.h:97
+msgid "CapsLock just locks the Shift modifier."
+msgstr ""
+"CapsLock-ი ბლáƒáƒ™áƒáƒ•áƒ¡ Shift "
+"მáƒáƒ“იფიკáƒáƒ¢áƒáƒ áƒ¡."
+
+#: ../rules/base.xml.in.h:98
+msgid "CapsLock key behavior"
+msgstr "CapsLock ღილáƒáƒ™áƒ˜áƒ¡ ქცევáƒ"
+
+#: ../rules/base.xml.in.h:99
+msgid "CapsLock key changes group."
+msgstr "CapsLock ღილáƒáƒ™áƒ˜ ცვლის ჯგუფს."
+
+#: ../rules/base.xml.in.h:100
+msgid "CapsLock toggles Shift so all keys are affected."
+msgstr ""
+"CapsLock რთáƒáƒ•áƒ¡ Shift-ს, ეხებრყველრ"
+"ღილáƒáƒ™áƒ¡."
+
+#: ../rules/base.xml.in.h:101
+msgid "CapsLock toggles normal capitalization of alphabetic characters."
+msgstr ""
+"CapsLock რთáƒáƒ•áƒ¡ áƒáƒšáƒ¤áƒáƒ•áƒ˜áƒ¢áƒ˜áƒ¡ "
+"სიმბáƒáƒšáƒáƒ”ბის უბრáƒáƒšáƒ "
+"კáƒáƒžáƒ˜áƒ¢áƒáƒšáƒ˜áƒ–áƒáƒªáƒ˜áƒáƒ¡."
+
+#: ../rules/base.xml.in.h:102
+msgid "CapsLock uses internal capitalization. Shift \"pauses\" CapsLock."
+msgstr ""
+"რთáƒáƒ•áƒ¡ შიდრკáƒáƒžáƒ˜áƒ¢áƒáƒšáƒ˜áƒ–áƒáƒªáƒ˜áƒáƒ¡. "
+"Shift áƒáƒ§áƒáƒ•áƒœáƒ”ბს CapsLock-ს. "
+
+#: ../rules/base.xml.in.h:103
+msgid "CapsLock uses internal capitalization. Shift doesn't affect CapsLock."
+msgstr ""
+"რთáƒáƒ•áƒ¡ შიდრკáƒáƒžáƒ˜áƒ¢áƒáƒšáƒ˜áƒ–áƒáƒªáƒ˜áƒáƒ¡. "
+"Shift áƒáƒ  ეხებრCapsLock-ს. "
+
+#: ../rules/base.xml.in.h:104
+msgid "Catalan variant with middle-dot L"
+msgstr "კáƒáƒ¢áƒáƒšáƒáƒœáƒ£áƒ áƒ˜ სáƒáƒ¨áƒ£áƒáƒšáƒ L-ით"
+
+#: ../rules/base.xml.in.h:105
+msgid "Che"
+msgstr "შვეიც"
+
+#: ../rules/base.xml.in.h:106
+msgid "Cherry Blue Line CyBo@rd"
+msgstr "Cherry Blue Line CyBo@rd"
+
+#: ../rules/base.xml.in.h:107
+msgid "Cherry Blue Line CyBo@rd (alternate option)"
+msgstr ""
+"Cherry Blue Line CyBo@rd (áƒáƒšáƒ¢áƒ”რნáƒáƒ¢áƒ˜áƒ£áƒšáƒ˜ "
+"ვáƒáƒ áƒ˜áƒáƒœáƒ¢áƒ˜)"
+
+#: ../rules/base.xml.in.h:108
+msgid "Cherry CyBo@rd USB-Hub"
+msgstr "Cherry CyBo@rd USB-Hub"
+
+#: ../rules/base.xml.in.h:109
+msgid "Cherry CyMotion Master Linux"
+msgstr "Cherry CyMotion Master Linux"
+
+#: ../rules/base.xml.in.h:110
+msgid "Chicony Internet Keyboard"
+msgstr "Chicony Internet Keyboard"
+
+#: ../rules/base.xml.in.h:111
+msgid "Chicony KB-9885"
+msgstr "Chicony KB-9885"
+
+#: ../rules/base.xml.in.h:112
+msgid "Classic Dvorak"
+msgstr "კლáƒáƒ¡áƒ˜áƒ™áƒ£áƒ áƒ˜ Dvorak"
+
+#: ../rules/base.xml.in.h:113
+msgid "CloGaelach"
+msgstr "CloGaelach"
+
+#: ../rules/base.xml.in.h:114
+msgid "Compaq Easy Access Keyboard"
+msgstr "Compaq Easy Access Keyboard"
+
+#: ../rules/base.xml.in.h:115
+msgid "Compaq Internet Keyboard (13 keys)"
+msgstr "Compaq Internet Keyboard (13 ღილáƒáƒ™áƒ˜áƒáƒœáƒ˜)"
+
+#: ../rules/base.xml.in.h:116
+msgid "Compaq Internet Keyboard (18 keys)"
+msgstr "Compaq Internet Keyboard (18 ღილáƒáƒ™áƒ˜áƒáƒœáƒ˜)"
+
+#: ../rules/base.xml.in.h:117
+msgid "Compaq Internet Keyboard (7 keys)"
+msgstr "Compaq Internet Keyboard (7 ღილáƒáƒ™áƒ˜áƒáƒœáƒ˜)"
+
+#: ../rules/base.xml.in.h:118
+msgid "Compaq iPaq Keyboard"
+msgstr "Compaq iPaq Keyboard"
+
+#: ../rules/base.xml.in.h:119
+msgid "Compose key position"
+msgstr "Compose კლáƒáƒ•áƒ˜áƒ¨áƒ˜áƒ¡ პáƒáƒ–იციáƒ"
+
+#: ../rules/base.xml.in.h:120
+msgid "Congo, Democratic Republic of the"
+msgstr ""
+"კáƒáƒœáƒ’áƒáƒ¡ დემáƒáƒ™áƒ áƒáƒ¢áƒ˜áƒ£áƒšáƒ˜ "
+"რესპუბლიკáƒ"
+
+#: ../rules/base.xml.in.h:121
+msgid "Croatia"
+msgstr "ხáƒáƒ áƒ•áƒáƒ¢áƒ˜áƒ"
+
+#: ../rules/base.xml.in.h:122
+msgid "Ctrl key at bottom left"
+msgstr "Ctrl ღილáƒáƒ™áƒ˜ ქვემáƒáƒ— მáƒáƒ áƒªáƒ®áƒœáƒ˜áƒ•"
+
+#: ../rules/base.xml.in.h:123
+msgid "Ctrl key at left of 'A'"
+msgstr "Ctrl ღილáƒáƒ™áƒ˜ A áƒáƒ¡áƒáƒ¡ მáƒáƒ áƒªáƒ®áƒœáƒ˜áƒ•"
+
+#: ../rules/base.xml.in.h:124
+msgid "Ctrl key position"
+msgstr ""
+"Ctrl ღილáƒáƒ™áƒ˜áƒ¡ áƒáƒ“გილმდებáƒáƒ áƒ”áƒáƒ‘áƒ"
+
+#: ../rules/base.xml.in.h:125
+msgid "Ctrl+Shift changes group."
+msgstr "Ctrl Shift ცვლის ჯგუფს."
+
+#: ../rules/base.xml.in.h:126
+msgid "Cyrillic"
+msgstr "კირილიცáƒ"
+
+#: ../rules/base.xml.in.h:127
+msgid "Cze"
+msgstr "ჩეხ"
+
+#: ../rules/base.xml.in.h:128
+msgid "Czechia"
+msgstr "ჩეხეთი"
+
+#: ../rules/base.xml.in.h:129
+msgid "DRC"
+msgstr "DRC"
+
+#: ../rules/base.xml.in.h:130
+msgid "DTK2000"
+msgstr "DTK2000"
+
+#: ../rules/base.xml.in.h:131
+msgid "Dead acute"
+msgstr "სპეც. სიმბáƒáƒšáƒ Dead acute"
+
+#: ../rules/base.xml.in.h:132
+msgid "Dead grave acute"
+msgstr "სპეც. სიმბáƒáƒšáƒ Dead grave acute"
+
+#: ../rules/base.xml.in.h:133
+msgid "Default numpad keys."
+msgstr ""
+"სტáƒáƒœáƒ“áƒáƒ áƒ¢áƒ£áƒšáƒ˜ ციფრული "
+"კლáƒáƒ•áƒ˜áƒ¨áƒ”ბი"
+
+#: ../rules/base.xml.in.h:134
+msgid "Dell"
+msgstr "Dell"
+
+#: ../rules/base.xml.in.h:135
+msgid "Dell 101-key PC"
+msgstr "Dell 101-კლáƒáƒ•áƒ˜áƒ¨áƒ˜áƒáƒœáƒ˜ PC"
+
+#: ../rules/base.xml.in.h:136
+msgid "Dell Latitude series laptop"
+msgstr "Dell Latitude series laptop"
+
+#: ../rules/base.xml.in.h:137
+msgid "Dell USB Multimedia Keybard"
+msgstr "Dell USB Multimedia Keybard"
+
+#: ../rules/base.xml.in.h:138
+msgid "Denmark"
+msgstr "დáƒáƒœáƒ˜áƒ"
+
+#: ../rules/base.xml.in.h:139
+msgid "Deu"
+msgstr "გერ"
+
+#: ../rules/base.xml.in.h:140
+msgid "Dexxa Wireless Desktop Keyboard"
+msgstr "Dexxa Wireless Desktop Keyboard"
+
+#: ../rules/base.xml.in.h:141
+msgid "Diamond 9801 / 9802 series"
+msgstr "მáƒáƒ“ელები Diamond 9801 / 9802 series"
+
+#: ../rules/base.xml.in.h:142
+msgid "Dnk"
+msgstr "დáƒáƒœ"
+
+#: ../rules/base.xml.in.h:143
+msgid "Dvorak"
+msgstr "დვáƒáƒ áƒáƒ™áƒ£áƒšáƒ˜"
+
+#: ../rules/base.xml.in.h:144
+msgid "Dvorak, Polish quotes on key \"1/!\""
+msgstr ""
+"Dvorak, პáƒáƒšáƒáƒœáƒ£áƒ áƒ˜ ფრჩხილები \"1/!\" "
+"ღილáƒáƒ™áƒ–ეáƒ"
+
+#: ../rules/base.xml.in.h:145
+msgid "Dvorak, Polish quotes on quotemark key"
+msgstr ""
+"Dvorak, პáƒáƒšáƒáƒœáƒ£áƒ áƒ˜ ფრჩხილები, "
+"ფრჩხილების კლáƒáƒ•áƒ˜áƒ¨áƒ–ე"
+
+#: ../rules/base.xml.in.h:146
+msgid "Eliminate dead keys"
+msgstr ""
+"სპეც ღილáƒáƒ™áƒ”ბის (dead keys) გáƒáƒ›áƒáƒ áƒ—ვáƒ"
+
+#: ../rules/base.xml.in.h:147
+msgid "Ennyah DKB-1008"
+msgstr "Ennyah DKB-1008"
+
+#: ../rules/base.xml.in.h:148
+msgid "Epo"
+msgstr "ეპáƒ"
+
+#: ../rules/base.xml.in.h:149
+msgid "Esp"
+msgstr "ესპ"
+
+#: ../rules/base.xml.in.h:150
+msgid "Esperanto"
+msgstr "ესპერáƒáƒœáƒ¢áƒ"
+
+#: ../rules/base.xml.in.h:151
+msgid "Est"
+msgstr "ესტ"
+
+#: ../rules/base.xml.in.h:152
+msgid "Estonia"
+msgstr "ესტáƒáƒœáƒ”თი"
+
+#: ../rules/base.xml.in.h:153
+msgid "Evdev-managed keyboard"
+msgstr "Evdev-managed keyboard"
+
+#: ../rules/base.xml.in.h:154
+msgid "Everex STEPnote"
+msgstr "Everex STEPnote"
+
+#: ../rules/base.xml.in.h:155
+msgid "Ewe"
+msgstr "ივი"
+
+#: ../rules/base.xml.in.h:156
+msgid "Extended"
+msgstr "გáƒáƒ¤áƒáƒ áƒ—áƒáƒ”ბული"
+
+#: ../rules/base.xml.in.h:157
+msgid "Extended Backslash"
+msgstr ""
+"Backslash გáƒáƒ¤áƒáƒ áƒ—áƒáƒ”ბული ფუნქციები"
+
+#: ../rules/base.xml.in.h:158
+msgid "F-letter (F) variant"
+msgstr "F-ს ვáƒáƒ áƒ˜áƒáƒœáƒ¢áƒ˜"
+
+#: ../rules/base.xml.in.h:159
+msgid "Fao"
+msgstr "ფáƒáƒ "
+
+#: ../rules/base.xml.in.h:160
+msgid "Faroe Islands"
+msgstr "ფáƒáƒ áƒ”რის კუნძულები"
+
+#: ../rules/base.xml.in.h:161
+msgid "Fin"
+msgstr "ფინ"
+
+#: ../rules/base.xml.in.h:162
+msgid "Finland"
+msgstr "ფინეთი"
+
+#: ../rules/base.xml.in.h:163
+msgid "Fra"
+msgstr "ფრáƒ"
+
+#: ../rules/base.xml.in.h:164
+msgid "France"
+msgstr "სáƒáƒ¤áƒ áƒáƒœáƒ’ეთი"
+
+#: ../rules/base.xml.in.h:165
+msgid "French"
+msgstr "ფრáƒáƒœáƒ’ული"
+
+#: ../rules/base.xml.in.h:166
+msgid "French (Macintosh)"
+msgstr "ფრáƒáƒœáƒ’ული (Macintosh)"
+
+#: ../rules/base.xml.in.h:167
+msgid "French (legacy)"
+msgstr "ფრáƒáƒœáƒ’ული (legacy)"
+
+#: ../rules/base.xml.in.h:168
+msgid "French Dvorak"
+msgstr "ფრáƒáƒœáƒ’ული Dvorak"
+
+#: ../rules/base.xml.in.h:169
+msgid "French, Sun dead keys"
+msgstr "ფრáƒáƒœáƒ’ული, Sun dead keys"
+
+#: ../rules/base.xml.in.h:170
+msgid "French, eliminate dead keys"
+msgstr "ფრáƒáƒœáƒ’ული, dead keys გáƒáƒ áƒ”შე"
+
+#: ../rules/base.xml.in.h:171
+msgid "Fula"
+msgstr "ფულáƒ"
+
+#: ../rules/base.xml.in.h:172
+msgid "GBr"
+msgstr "ბრიტ"
+
+#: ../rules/base.xml.in.h:173
+msgid "Ga"
+msgstr "გáƒ"
+
+#: ../rules/base.xml.in.h:174
+msgid "Generic 101-key PC"
+msgstr "სტáƒáƒœáƒ“áƒáƒ áƒ¢áƒ£áƒšáƒ˜ 101-ღილáƒáƒ™áƒ˜áƒáƒœáƒ˜ PC"
+
+#: ../rules/base.xml.in.h:175
+msgid "Generic 102-key (Intl) PC"
+msgstr ""
+"სტáƒáƒœáƒ“áƒáƒ áƒ¢áƒ£áƒšáƒ˜ 102-ღილáƒáƒ™áƒ˜áƒáƒœáƒ˜ (Intl) PC"
+
+#: ../rules/base.xml.in.h:176
+msgid "Generic 104-key PC"
+msgstr "სტáƒáƒœáƒ“áƒáƒ áƒ¢áƒ£áƒšáƒ˜ 104-ღილáƒáƒ™áƒ˜áƒáƒœáƒ˜ PC"
+
+#: ../rules/base.xml.in.h:177
+msgid "Generic 105-key (Intl) PC"
+msgstr ""
+"სტáƒáƒœáƒ“áƒáƒ áƒ¢áƒ£áƒšáƒ˜ 105-ღილáƒáƒ™áƒ˜áƒáƒœáƒ˜ (Intl) PC"
+
+#: ../rules/base.xml.in.h:178
+msgid "Genius Comfy KB-12e"
+msgstr "Genius Comfy KB-12e"
+
+#: ../rules/base.xml.in.h:179
+msgid "Genius Comfy KB-16M / Genius MM Keyboard KWD-910"
+msgstr "Genius Comfy KB-16M / Genius MM Keyboard KWD-910"
+
+#: ../rules/base.xml.in.h:180
+msgid "Genius Comfy KB-21e-Scroll"
+msgstr "Genius Comfy KB-21e-Scroll"
+
+#: ../rules/base.xml.in.h:181
+msgid "Genius KB-19e NB"
+msgstr "Genius KB-19e NB"
+
+#: ../rules/base.xml.in.h:182
+msgid "Geo"
+msgstr "ქáƒáƒ áƒ—"
+
+#: ../rules/base.xml.in.h:183
+msgid "Georgia"
+msgstr "სáƒáƒ¥áƒáƒ áƒ—ველáƒ"
+
+#: ../rules/base.xml.in.h:184
+msgid "German (Macintosh)"
+msgstr "გერმáƒáƒœáƒ£áƒšáƒ˜ (Macintosh)"
+
+#: ../rules/base.xml.in.h:185
+msgid "German, Sun dead keys"
+msgstr "გერმáƒáƒœáƒ£áƒšáƒ˜, Sun dead keys"
+
+#: ../rules/base.xml.in.h:186
+msgid "German, eliminate dead keys"
+msgstr "გერმáƒáƒœáƒ£áƒšáƒ˜, სპეც dead keys გáƒáƒ áƒ”შე"
+
+#: ../rules/base.xml.in.h:187
+msgid "Germany"
+msgstr "გერმáƒáƒœáƒ˜áƒ"
+
+#: ../rules/base.xml.in.h:188
+msgid "Gha"
+msgstr "გáƒáƒœ"
+
+#: ../rules/base.xml.in.h:189
+msgid "Ghana"
+msgstr "გáƒáƒœáƒ"
+
+#: ../rules/base.xml.in.h:190
+msgid "Gre"
+msgstr "სáƒáƒ‘"
+
+#: ../rules/base.xml.in.h:191
+msgid "Greece"
+msgstr "სáƒáƒ‘ერძნეთი"
+
+#: ../rules/base.xml.in.h:192
+msgid "Group Shift/Lock behavior"
+msgstr ""
+"გáƒáƒœáƒšáƒáƒ’ების შეცვლის ფუნქციáƒ"
+
+#: ../rules/base.xml.in.h:193
+msgid "Gujarati"
+msgstr "გუჯáƒáƒ áƒáƒ—ი"
+
+#: ../rules/base.xml.in.h:194
+msgid "Gurmukhi"
+msgstr "გურმუხი"
+
+#: ../rules/base.xml.in.h:195
+msgid "Gyration"
+msgstr "გირáƒáƒ¨áƒœ"
+
+#: ../rules/base.xml.in.h:196
+msgid "Hausa"
+msgstr "ჰáƒáƒ£áƒ¡áƒ"
+
+#: ../rules/base.xml.in.h:197
+msgid "Hewlett-Packard Internet Keyboard"
+msgstr "Hewlett-Packard Internet Keyboard"
+
+#: ../rules/base.xml.in.h:198
+msgid "Hewlett-Packard Omnibook 500 FA"
+msgstr "Hewlett-Packard Omnibook 500 FA"
+
+#: ../rules/base.xml.in.h:199
+msgid "Hewlett-Packard Omnibook 5xx"
+msgstr "Hewlett-Packard Omnibook 5xx"
+
+#: ../rules/base.xml.in.h:200
+msgid "Hewlett-Packard Omnibook 6000/6100"
+msgstr "Hewlett-Packard Omnibook 6000/6100"
+
+#: ../rules/base.xml.in.h:201
+msgid "Hewlett-Packard Omnibook XE3 GC"
+msgstr "Hewlett-Packard Omnibook XE3 GC"
+
+#: ../rules/base.xml.in.h:202
+msgid "Hewlett-Packard Omnibook XE3 GF"
+msgstr "Hewlett-Packard Omnibook XE3 GF"
+
+#: ../rules/base.xml.in.h:203
+msgid "Hewlett-Packard Omnibook XT1000"
+msgstr "Hewlett-Packard Omnibook XT1000"
+
+#: ../rules/base.xml.in.h:204
+msgid "Hewlett-Packard Pavilion ZT11xx"
+msgstr "Hewlett-Packard Pavilion ZT11xx"
+
+#: ../rules/base.xml.in.h:205
+msgid "Hewlett-Packard SK-2501 Multimedia Keyboard"
+msgstr "Hewlett-Packard SK-2501 Multimedia Keyboard"
+
+#: ../rules/base.xml.in.h:206
+msgid "Hewlett-Packard SK-2505 Internet Keyboard"
+msgstr "Hewlett-Packard SK-2505 Internet Keyboard"
+
+#: ../rules/base.xml.in.h:207
+msgid "Honeywell Euroboard"
+msgstr "Honeywell Euroboard"
+
+#: ../rules/base.xml.in.h:208
+msgid "Hrv"
+msgstr "ხáƒáƒ "
+
+#: ../rules/base.xml.in.h:209
+msgid "Hun"
+msgstr "უნგ"
+
+#: ../rules/base.xml.in.h:210
+msgid "Hungary"
+msgstr "უნგრეთი"
+
+#: ../rules/base.xml.in.h:211
+msgid "Hyper is mapped to the Win-keys."
+msgstr "Hyper შეესáƒáƒ‘áƒáƒ›áƒ”ბრWin ღილáƒáƒ™áƒ”ბს."
+
+#: ../rules/base.xml.in.h:212
+msgid "IBM (LST 1205-92)"
+msgstr "IBM (LST 1205-92)"
+
+#: ../rules/base.xml.in.h:213
+msgid "IBM Rapid Access"
+msgstr "IBM Rapid Access"
+
+#: ../rules/base.xml.in.h:214
+msgid "IBM Rapid Access II"
+msgstr "IBM Rapid Access II"
+
+#: ../rules/base.xml.in.h:215
+msgid "IBM Rapid Access II (alternate option)"
+msgstr ""
+"IBM Rapid Access II (áƒáƒšáƒ¢áƒ”რნáƒáƒ¢áƒ˜áƒ£áƒšáƒ˜ "
+"ვáƒáƒ áƒ˜áƒáƒœáƒ¢áƒ˜)"
+
+#: ../rules/base.xml.in.h:216
+msgid "IBM ThinkPad 560Z/600/600E/A22E"
+msgstr "IBM ThinkPad 560Z/600/600E/A22E"
+
+#: ../rules/base.xml.in.h:217
+msgid "IBM ThinkPad 560Z/600/600E/A22E, Intl"
+msgstr "IBM ThinkPad 560Z/600/600E/A22E, Intl"
+
+#: ../rules/base.xml.in.h:218
+msgid "ISO Alternate"
+msgstr "დáƒáƒ›áƒáƒ¢áƒ”ბითი ISO"
+
+#: ../rules/base.xml.in.h:219
+msgid "Iceland"
+msgstr "ისლáƒáƒœáƒ“იáƒ"
+
+#: ../rules/base.xml.in.h:220
+msgid "Ind"
+msgstr "ინდ"
+
+#: ../rules/base.xml.in.h:221
+msgid "India"
+msgstr "ინდáƒáƒ”თი"
+
+#: ../rules/base.xml.in.h:222
+msgid "International (with dead keys)"
+msgstr ""
+"სáƒáƒ”რთáƒáƒ¨áƒáƒ áƒ˜áƒ¡áƒ, სპეც "
+"ღილáƒáƒ™áƒ”ბით (dead keys)"
+
+#: ../rules/base.xml.in.h:223
+msgid "Inuktitut"
+msgstr "ინუკტიტუტი"
+
+#: ../rules/base.xml.in.h:224
+msgid "Iran"
+msgstr "ირáƒáƒœáƒ˜"
+
+#: ../rules/base.xml.in.h:225
+msgid "Iraq"
+msgstr "ერáƒáƒ§áƒ˜"
+
+#: ../rules/base.xml.in.h:226
+msgid "Ireland"
+msgstr "ირლáƒáƒœáƒ“იáƒ"
+
+#: ../rules/base.xml.in.h:227
+msgid "Irl"
+msgstr "ირლ"
+
+#: ../rules/base.xml.in.h:228
+msgid "Irn"
+msgstr "ირáƒ"
+
+#: ../rules/base.xml.in.h:229
+msgid "Irq"
+msgstr "ერáƒ"
+
+#: ../rules/base.xml.in.h:230
+msgid "Isl"
+msgstr "ისლ"
+
+#: ../rules/base.xml.in.h:231
+msgid "Isr"
+msgstr "ებრ"
+
+#: ../rules/base.xml.in.h:232
+msgid "Israel"
+msgstr "ისრáƒáƒ”ლი"
+
+#: ../rules/base.xml.in.h:233
+msgid "Ita"
+msgstr "იტáƒ"
+
+#: ../rules/base.xml.in.h:234
+msgid "Italy"
+msgstr "იტáƒáƒšáƒ˜áƒ"
+
+#: ../rules/base.xml.in.h:235
+msgid "Japan"
+msgstr "იáƒáƒžáƒáƒœáƒ˜áƒ"
+
+#: ../rules/base.xml.in.h:236
+msgid "Japan (PC-98xx Series)"
+msgstr "Japan (PC-98xx Series)"
+
+#: ../rules/base.xml.in.h:237
+msgid "Japanese 106-key"
+msgstr "იáƒáƒžáƒáƒœáƒ˜áƒ 106-ღილáƒáƒ™áƒ˜áƒáƒœáƒ˜"
+
+#: ../rules/base.xml.in.h:238
+msgid "Jpn"
+msgstr "იáƒáƒž"
+
+#: ../rules/base.xml.in.h:239
+msgid "Kannada"
+msgstr "კáƒáƒœáƒœáƒáƒ“áƒ"
+
+#: ../rules/base.xml.in.h:240
+msgid "Kashubian"
+msgstr "კáƒáƒ¨áƒ£áƒ‘იáƒáƒœáƒ˜"
+
+#: ../rules/base.xml.in.h:241
+msgid "Kaz"
+msgstr "ყáƒáƒ–"
+
+#: ../rules/base.xml.in.h:242
+msgid "Kazakh with Russian"
+msgstr "ყáƒáƒ–áƒáƒ®áƒ£áƒ áƒ˜ რუსულთáƒáƒœ"
+
+#: ../rules/base.xml.in.h:243
+msgid "Kazakhstan"
+msgstr "ყáƒáƒ–áƒáƒ®áƒ”თი"
+
+#: ../rules/base.xml.in.h:244
+msgid "Keypad"
+msgstr "დáƒáƒ›áƒáƒ¢áƒ”ბითი პáƒáƒœáƒ”ლით"
+
+#: ../rules/base.xml.in.h:245
+msgid "Keytronic FlexPro"
+msgstr "Keytronic FlexPro"
+
+#: ../rules/base.xml.in.h:246
+msgid "Khm"
+msgstr "კხმ"
+
+#: ../rules/base.xml.in.h:247
+msgid "Kor"
+msgstr "კáƒáƒ "
+
+#: ../rules/base.xml.in.h:248
+msgid "Korea, Republic of"
+msgstr "კáƒáƒ áƒ”áƒ, რესპუბლიკáƒ"
+
+#: ../rules/base.xml.in.h:249
+msgid "Korean 106-key"
+msgstr "კáƒáƒ áƒ”ული 106-ღილáƒáƒ™áƒ˜áƒáƒœáƒ˜"
+
+#: ../rules/base.xml.in.h:250
+msgid "Kotoistus"
+msgstr "Kotoistus"
+
+#: ../rules/base.xml.in.h:251
+msgid "Kurdish, (F)"
+msgstr "ქურთული, (F)"
+
+#: ../rules/base.xml.in.h:252
+msgid "Kurdish, Arabic-Latin"
+msgstr "ქურთული, áƒáƒ áƒáƒ‘ულ-ლáƒáƒ—ინური"
+
+#: ../rules/base.xml.in.h:253
+msgid "Kurdish, Latin Alt-Q"
+msgstr "ქურთული, ლáƒáƒ—ინური Alt-Q"
+
+#: ../rules/base.xml.in.h:254
+msgid "Kurdish, Latin Q"
+msgstr "ქურთული, ლáƒáƒ—ინური Q"
+
+#: ../rules/base.xml.in.h:255
+msgid "Kyr"
+msgstr "ყირ"
+
+#: ../rules/base.xml.in.h:256
+msgid "Kyrgyzstan"
+msgstr "ყირღიზეთი"
+
+#: ../rules/base.xml.in.h:257
+msgid "LAm"
+msgstr "ლáƒáƒ—áƒáƒ›"
+
+#: ../rules/base.xml.in.h:258
+msgid "Lao"
+msgstr "ლáƒáƒáƒ¡áƒ£áƒ áƒ˜"
+
+#: ../rules/base.xml.in.h:259
+msgid "Laos"
+msgstr "ლáƒáƒáƒ¡áƒ˜"
+
+#: ../rules/base.xml.in.h:260
+msgid "Laptop/notebook Compaq (eg. Armada) Laptop Keyboard"
+msgstr ""
+"Compaq ლეპტáƒáƒž/ნáƒáƒ£áƒ—ბუქის "
+"კლáƒáƒ•áƒ˜áƒáƒ¢áƒ£áƒ áƒ (მáƒáƒ’. Armada)"
+
+#: ../rules/base.xml.in.h:261
+msgid "Laptop/notebook Compaq (eg. Presario) Internet Keyboard"
+msgstr ""
+"Compaq ლეპტáƒáƒž/ნáƒáƒ£áƒ—ბუქის "
+"კლáƒáƒ•áƒ˜áƒáƒ¢áƒ£áƒ áƒ (მáƒáƒ’. Presario)"
+
+#: ../rules/base.xml.in.h:262
+msgid "Laptop/notebook Dell Inspiron 6xxx/8xxx"
+msgstr "ლეპტáƒáƒž/ნáƒáƒ£áƒ—ბუქი Dell Inspiron 6xxx/8xxx"
+
+#: ../rules/base.xml.in.h:263
+msgid "Laptop/notebook eMachines m68xx"
+msgstr "ლეპტáƒáƒž/ნáƒáƒ£áƒ—ბუქი eMachines m68xx"
+
+#: ../rules/base.xml.in.h:264
+msgid "Latin"
+msgstr "ლáƒáƒ—ინური"
+
+#: ../rules/base.xml.in.h:265
+msgid "Latin American"
+msgstr "ლáƒáƒ—ინურ áƒáƒ›áƒ”რიკული"
+
+#: ../rules/base.xml.in.h:266
+msgid "Latin Unicode"
+msgstr "ლáƒáƒ—ინური უნიკáƒáƒ“ი"
+
+#: ../rules/base.xml.in.h:267
+msgid "Latin Unicode qwerty"
+msgstr "ლáƒáƒ—ინური უნიკáƒáƒ“ი qwerty"
+
+#: ../rules/base.xml.in.h:268
+msgid "Latin qwerty"
+msgstr "ლáƒáƒ—ინური qwerty"
+
+#: ../rules/base.xml.in.h:269
+msgid "Latin with guillemets"
+msgstr ""
+"ლáƒáƒ—ინური ფრáƒáƒœáƒ’ული "
+"ბრჭყáƒáƒšáƒ”ბით"
+
+#: ../rules/base.xml.in.h:270
+msgid "Latvia"
+msgstr "ლáƒáƒ¢áƒ•áƒ˜áƒ"
+
+#: ../rules/base.xml.in.h:271
+msgid "Left Alt is swapped with left Win-key."
+msgstr ""
+"მáƒáƒ áƒªáƒ®áƒ”ნრAlt-ი შეცვლილირWin "
+"ღილáƒáƒ™áƒ˜áƒ—"
+
+#: ../rules/base.xml.in.h:272
+msgid "Left Alt key changes group."
+msgstr ""
+"მáƒáƒ áƒªáƒ®áƒ”ნრAlt ღილáƒáƒ™áƒ˜ ცვლის "
+"ჯგუფს."
+
+#: ../rules/base.xml.in.h:273
+msgid "Left Alt key switches group while pressed."
+msgstr ""
+"მáƒáƒ áƒªáƒ®áƒ”ნრAlt ღილáƒáƒ™áƒ˜ ცვლის "
+"ჯგუფს დáƒáƒ­áƒ”რის დრáƒáƒ¡."
+
+#: ../rules/base.xml.in.h:274
+msgid "Left Ctrl key changes group."
+msgstr ""
+"მáƒáƒ áƒªáƒ®áƒ”ნრAlt ღილáƒáƒ™áƒ˜ ცვლის "
+"ჯგუფს."
+
+#: ../rules/base.xml.in.h:275
+msgid "Left Shift key changes group."
+msgstr ""
+"მáƒáƒ áƒªáƒ®áƒ”ნრShift ღილáƒáƒ™áƒ˜ ცვლის "
+"ჯგუფს."
+
+#: ../rules/base.xml.in.h:276
+msgid "Left Win-key changes group."
+msgstr ""
+"მáƒáƒ áƒªáƒ®áƒ”ნრWin ღილáƒáƒ™áƒ˜ ცვლის "
+"ჯგუფს."
+
+#: ../rules/base.xml.in.h:277
+msgid "Left Win-key is Compose."
+msgstr ""
+"მáƒáƒ áƒªáƒ®áƒ”ნრWin ღილáƒáƒ™áƒ˜ "
+"შეესáƒáƒ‘áƒáƒ›áƒ”ბრCompose-ს."
+
+#: ../rules/base.xml.in.h:278
+msgid "Left Win-key switches group while pressed."
+msgstr ""
+"მáƒáƒ áƒªáƒ®áƒ”ნრWin ღილáƒáƒ™áƒ˜ ცვლის "
+"ჯგუფს დáƒáƒ­áƒ”რის დრáƒáƒ¡."
+
+#: ../rules/base.xml.in.h:279
+msgid "Left handed Dvorak"
+msgstr "Dvorak ცáƒáƒªáƒ˜áƒ”ბისთვის"
+
+#: ../rules/base.xml.in.h:280
+msgid "Lithuania"
+msgstr "ლიტვáƒ"
+
+#: ../rules/base.xml.in.h:281
+msgid "Logitech Access Keyboard"
+msgstr "Logitech Access Keyboard"
+
+#: ../rules/base.xml.in.h:282
+msgid "Logitech Cordless Desktop"
+msgstr "Logitech Cordless Desktop"
+
+#: ../rules/base.xml.in.h:283
+msgid "Logitech Cordless Desktop LX-300"
+msgstr "Logitech Cordless Desktop LX-300"
+
+#: ../rules/base.xml.in.h:284
+msgid "Logitech Cordless Desktop Navigator"
+msgstr "Logitech Cordless Desktop Navigator"
+
+#: ../rules/base.xml.in.h:285
+msgid "Logitech Cordless Desktop Optical"
+msgstr "Logitech Cordless Desktop Optical"
+
+#: ../rules/base.xml.in.h:286
+msgid "Logitech Cordless Desktop Pro"
+msgstr "Logitech Cordless Desktop Pro"
+
+#: ../rules/base.xml.in.h:287
+msgid "Logitech Cordless Desktop Pro (alternate option)"
+msgstr ""
+"Logitech Cordless Desktop Pro (áƒáƒšáƒ¢áƒ”რნáƒáƒ¢áƒ˜áƒ£áƒšáƒ˜ "
+"ვáƒáƒ áƒ˜áƒáƒœáƒ¢áƒ˜)"
+
+#: ../rules/base.xml.in.h:288
+msgid "Logitech Cordless Desktop Pro (alternate option2)"
+msgstr ""
+"Logitech Cordless Desktop Pro (áƒáƒšáƒ¢áƒ”რნáƒáƒ¢áƒ˜áƒ£áƒšáƒ˜ "
+"ვáƒáƒ áƒ˜áƒáƒœáƒ¢áƒ˜2)"
+
+#: ../rules/base.xml.in.h:289
+msgid "Logitech Cordless Desktop iTouch"
+msgstr "Logitech Cordless Desktop iTouch"
+
+#: ../rules/base.xml.in.h:290
+msgid "Logitech Cordless Freedom/Desktop Navigator"
+msgstr "Logitech Cordless Freedom/Desktop Navigator"
+
+#: ../rules/base.xml.in.h:291
+msgid "Logitech Internet Keyboard"
+msgstr "Logitech Internet Keyboard"
+
+#: ../rules/base.xml.in.h:292
+msgid "Logitech Internet Navigator Keyboard"
+msgstr "Logitech Internet Navigator Keyboard"
+
+#: ../rules/base.xml.in.h:293
+msgid "Logitech Ultra-X Keyboard"
+msgstr "Logitech Ultra-X Keyboard"
+
+#: ../rules/base.xml.in.h:294
+msgid "Logitech diNovo Keyboard"
+msgstr "Logitech diNovo Keyboard"
+
+#: ../rules/base.xml.in.h:295
+msgid "Logitech iTouch"
+msgstr "Logitech iTouch"
+
+#: ../rules/base.xml.in.h:296
+msgid "Logitech iTouch Cordless Keyboard (model Y-RB6)"
+msgstr "Logitech iTouch Cordless Keyboard (model Y-RB6)"
+
+#: ../rules/base.xml.in.h:297
+msgid "Logitech iTouch Internet Navigator Keyboard SE"
+msgstr "Logitech iTouch Internet Navigator Keyboard SE"
+
+#: ../rules/base.xml.in.h:298
+msgid "Logitech iTouch Internet Navigator Keyboard SE (USB)"
+msgstr "Logitech iTouch Internet Navigator Keyboard SE (USB)"
+
+#: ../rules/base.xml.in.h:299
+msgid "Ltu"
+msgstr "ლიტ"
+
+#: ../rules/base.xml.in.h:300
+msgid "Lva"
+msgstr "ლáƒáƒ¢áƒ•"
+
+#: ../rules/base.xml.in.h:301
+msgid "Macedonia"
+msgstr "მáƒáƒ™áƒ”დáƒáƒœáƒ˜áƒ"
+
+#: ../rules/base.xml.in.h:302
+msgid "Macintosh"
+msgstr "Macintosh"
+
+#: ../rules/base.xml.in.h:303
+msgid "Macintosh Old"
+msgstr "Macintosh ძველი"
+
+#: ../rules/base.xml.in.h:304
+msgid "Macintosh layout"
+msgstr "Macintosh-ის გáƒáƒœáƒšáƒáƒ’ებáƒ"
+
+#: ../rules/base.xml.in.h:305
+msgid "Macintosh layout, eliminate dead keys"
+msgstr ""
+"Macintosh-ის გáƒáƒœáƒšáƒáƒ’ებáƒ, სპეც "
+"კლáƒáƒ•áƒ˜áƒ¨áƒ”ბის (dead keys) გáƒáƒ áƒ”შე"
+
+#: ../rules/base.xml.in.h:306
+msgid "Make CapsLock an additional Ctrl."
+msgstr ""
+"გáƒáƒ›áƒáƒ˜áƒ§áƒ”ნე CapsLock რáƒáƒ’áƒáƒ áƒª "
+"დáƒáƒ›áƒáƒ¢áƒ”ბითი Ctrl კლáƒáƒ•áƒ˜áƒ¨áƒ˜."
+
+#: ../rules/base.xml.in.h:307
+msgid "Mal"
+msgstr "მáƒáƒš"
+
+#: ../rules/base.xml.in.h:308
+msgid "Malayalam"
+msgstr "მáƒáƒšáƒáƒ£áƒ áƒ˜"
+
+#: ../rules/base.xml.in.h:309
+msgid "Maldives"
+msgstr "მáƒáƒšáƒ“ივები"
+
+#: ../rules/base.xml.in.h:310
+msgid "Malta"
+msgstr "მáƒáƒšáƒ¢áƒ"
+
+#: ../rules/base.xml.in.h:311
+msgid "Maltese keyboard with US layout"
+msgstr ""
+"მáƒáƒšáƒ¢áƒ˜áƒ¡ კლáƒáƒ•áƒ˜áƒáƒ¢áƒ£áƒ áƒ áƒáƒ¨áƒ¨-ს "
+"გáƒáƒœáƒšáƒáƒ’ებით"
+
+#: ../rules/base.xml.in.h:312
+msgid "Mao"
+msgstr "მáƒáƒ"
+
+#: ../rules/base.xml.in.h:313
+msgid "Maori"
+msgstr "მáƒáƒáƒ áƒ˜"
+
+#: ../rules/base.xml.in.h:314
+msgid "Memorex MX1998"
+msgstr "Memorex MX1998"
+
+#: ../rules/base.xml.in.h:315
+msgid "Memorex MX2500 EZ-Access Keyboard"
+msgstr "Memorex MX2500 EZ-Access Keyboard"
+
+#: ../rules/base.xml.in.h:316
+msgid "Memorex MX2750"
+msgstr "Memorex MX2750"
+
+#: ../rules/base.xml.in.h:317
+msgid "Menu is Compose."
+msgstr ""
+"Menu ღილáƒáƒ™áƒ˜ შეესáƒáƒ‘áƒáƒ›áƒ”ბრCompose-ის "
+"ღილáƒáƒ™áƒ¡."
+
+#: ../rules/base.xml.in.h:318
+msgid "Menu key changes group."
+msgstr "Menu-ს ღილáƒáƒ™áƒ˜ ცვლის ჯგუფს."
+
+#: ../rules/base.xml.in.h:319
+msgid "Meta is mapped to the Win-keys."
+msgstr ""
+"Мета შეესáƒáƒ‘áƒáƒ›áƒ”ბრWin ღილáƒáƒ™áƒ”ბს."
+
+#: ../rules/base.xml.in.h:320
+msgid "Meta is mapped to the left Win-key."
+msgstr ""
+"Мета შეესáƒáƒ‘áƒáƒ›áƒ”ბრმáƒáƒ áƒªáƒ®áƒ”ნრWin "
+"ღილáƒáƒ™áƒ¡."
+
+#: ../rules/base.xml.in.h:321
+msgid "Microsoft Internet Keyboard"
+msgstr "Microsoft Internet Keyboard"
+
+#: ../rules/base.xml.in.h:322
+msgid "Microsoft Internet Keyboard Pro, Swedish"
+msgstr "Microsoft Internet Keyboard Pro, შვედური"
+
+#: ../rules/base.xml.in.h:323
+msgid "Microsoft Natural"
+msgstr "Microsoft Natural"
+
+#: ../rules/base.xml.in.h:324
+msgid "Microsoft Natural Keyboard Pro / Microsoft Internet Keyboard Pro"
+msgstr "Microsoft Natural Keyboard Pro / Microsoft Internet Keyboard Pro"
+
+#: ../rules/base.xml.in.h:325
+msgid "Microsoft Natural Keyboard Pro OEM"
+msgstr " Microsoft Natural Keyboard Pro OEM"
+
+#: ../rules/base.xml.in.h:326
+msgid "Microsoft Natural Keyboard Pro USB / Microsoft Internet Keyboard Pro"
+msgstr "Microsoft Natural Keyboard Pro USB / Microsoft Internet Keyboard Pro"
+
+#: ../rules/base.xml.in.h:327
+msgid "Microsoft Office Keyboard"
+msgstr "Microsoft Office Keyboard"
+
+#: ../rules/base.xml.in.h:328
+msgid "Microsoft Wireless Multimedia Keyboard 1.0A"
+msgstr "Microsoft Wireless Multimedia Keyboard 1.0A"
+
+#: ../rules/base.xml.in.h:329
+msgid "Miscellaneous compatibility options"
+msgstr ""
+"თáƒáƒ•áƒ¡áƒ”ბáƒáƒ“áƒáƒ‘ის სხვáƒáƒ“áƒáƒ¡áƒ®áƒ•áƒ "
+"პáƒáƒ áƒáƒ›áƒ”ტრი"
+
+#: ../rules/base.xml.in.h:330
+msgid "Mkd"
+msgstr "მáƒáƒ™"
+
+#: ../rules/base.xml.in.h:331
+msgid "Mlt"
+msgstr "მáƒáƒšáƒ¢"
+
+#: ../rules/base.xml.in.h:332
+msgid "Mmr"
+msgstr "მიáƒáƒœ"
+
+#: ../rules/base.xml.in.h:333
+msgid "Mng"
+msgstr "მáƒáƒœáƒ¦"
+
+#: ../rules/base.xml.in.h:334
+msgid "Mongolia"
+msgstr "მáƒáƒœáƒ¦áƒáƒšáƒ”თი"
+
+#: ../rules/base.xml.in.h:335
+msgid "Multilingual"
+msgstr "მრáƒáƒ•áƒáƒšáƒ”ნáƒáƒ•áƒáƒœáƒ˜"
+
+#: ../rules/base.xml.in.h:336
+msgid "Multilingual, first part"
+msgstr ""
+"მრáƒáƒ•áƒáƒšáƒ”ნáƒáƒ•áƒáƒœáƒ˜, პირველი "
+"ნáƒáƒ¬áƒ˜áƒšáƒ˜"
+
+#: ../rules/base.xml.in.h:337
+msgid "Multilingual, second part"
+msgstr ""
+"მრáƒáƒ•áƒáƒšáƒ”ნáƒáƒ•áƒáƒœáƒ˜, მეáƒáƒ áƒ” ნáƒáƒ¬áƒ˜áƒšáƒ˜"
+
+#: ../rules/base.xml.in.h:338
+msgid "Myanmar"
+msgstr "მიáƒáƒœáƒ›áƒ"
+
+#: ../rules/base.xml.in.h:339
+msgid "Neostyle"
+msgstr "Neostyle"
+
+#: ../rules/base.xml.in.h:340
+msgid "Nep"
+msgstr "ნეპ"
+
+#: ../rules/base.xml.in.h:341
+msgid "Nepal"
+msgstr "ნეპáƒáƒšáƒ˜"
+
+#: ../rules/base.xml.in.h:342
+msgid "Netherlands"
+msgstr "ნიდერლáƒáƒœáƒ“ები"
+
+#: ../rules/base.xml.in.h:343
+msgid "Nld"
+msgstr "ჰáƒáƒš"
+
+#: ../rules/base.xml.in.h:344
+msgid "Nor"
+msgstr "ნáƒáƒ "
+
+#: ../rules/base.xml.in.h:345
+msgid "Northern Saami"
+msgstr "ჩრდილáƒáƒ”თ სáƒáƒáƒ›áƒ£áƒ áƒ˜"
+
+#: ../rules/base.xml.in.h:346
+msgid "Northern Saami, eliminate dead keys"
+msgstr ""
+"ჩრდილáƒáƒ”თ სáƒáƒáƒ›áƒ£áƒ áƒ˜, სპეც "
+"ღილáƒáƒ™áƒ”ბის (dead keys) გáƒáƒ áƒ”შე"
+
+#: ../rules/base.xml.in.h:347
+msgid "Northgate OmniKey 101"
+msgstr "Northgate OmniKey 101"
+
+#: ../rules/base.xml.in.h:348
+msgid "Norway"
+msgstr "ნáƒáƒ áƒ•áƒ”გიáƒ"
+
+#: ../rules/base.xml.in.h:349
+msgid "NumLock LED shows alternative group."
+msgstr ""
+"NumLock-ის ინდიკáƒáƒ¢áƒáƒ áƒ˜ áƒáƒ©áƒ•áƒ”ნებს "
+"დáƒáƒ›áƒáƒ¢áƒ”ბით ჯგუფს."
+
+#: ../rules/base.xml.in.h:350
+msgid "Numpad keys work as with Mac."
+msgstr ""
+"ციფრული ღილáƒáƒ™áƒ”ბი "
+"მáƒáƒ¥áƒ›áƒ”დებენ რáƒáƒ’áƒáƒ áƒª Mac-ის "
+"კლáƒáƒ•áƒ˜áƒáƒ¢áƒ£áƒ áƒáƒ¨áƒ˜."
+
+#: ../rules/base.xml.in.h:351
+msgid "Ogham"
+msgstr "áƒáƒ’ხáƒáƒ›áƒ˜"
+
+#: ../rules/base.xml.in.h:352
+msgid "Ogham IS434"
+msgstr "Ogham IS434"
+
+#: ../rules/base.xml.in.h:353
+msgid "Oretec MCK-800 MM/Internet keyboard"
+msgstr "Oretec MCK-800 MM/Internet keyboard"
+
+#: ../rules/base.xml.in.h:354
+msgid "Oriya"
+msgstr "áƒáƒ áƒ˜áƒ"
+
+#: ../rules/base.xml.in.h:355
+msgid "Ossetian"
+msgstr "áƒáƒ¡áƒ£áƒ áƒ˜"
+
+#: ../rules/base.xml.in.h:356
+msgid "Ossetian, Winkeys"
+msgstr "áƒáƒ¡áƒ£áƒ áƒ˜, Windows კლáƒáƒ•áƒ˜áƒáƒ¢áƒ£áƒ áƒ"
+
+#: ../rules/base.xml.in.h:357
+msgid "PC-98xx Series"
+msgstr "PC-98xx Series"
+
+#: ../rules/base.xml.in.h:358
+msgid "Pak"
+msgstr "პáƒáƒ™"
+
+#: ../rules/base.xml.in.h:359
+msgid "Pakistan"
+msgstr "პáƒáƒ™áƒ˜áƒ¡áƒ¢áƒáƒœáƒ˜"
+
+#: ../rules/base.xml.in.h:360
+msgid "Pashto"
+msgstr "პáƒáƒ¨áƒ¢áƒ"
+
+#: ../rules/base.xml.in.h:361
+msgid "Pattachote"
+msgstr "პáƒáƒ¢áƒáƒ©áƒáƒ¢áƒ˜"
+
+#: ../rules/base.xml.in.h:362
+msgid "Phonetic"
+msgstr "ფáƒáƒœáƒ”ტიკური"
+
+#: ../rules/base.xml.in.h:363
+msgid "Pol"
+msgstr "პáƒáƒš"
+
+#: ../rules/base.xml.in.h:364
+msgid "Poland"
+msgstr "პáƒáƒšáƒáƒœáƒ”თი"
+
+#: ../rules/base.xml.in.h:365
+msgid "Polytonic"
+msgstr "პáƒáƒšáƒ˜áƒ¤áƒáƒœáƒ˜áƒ£áƒ áƒ˜"
+
+#: ../rules/base.xml.in.h:366
+msgid "Portugal"
+msgstr "პáƒáƒ áƒ¢áƒ£áƒ’áƒáƒšáƒ˜áƒ"
+
+#: ../rules/base.xml.in.h:367
+msgid "PowerPC PS/2"
+msgstr "PowerPC PS/2"
+
+#: ../rules/base.xml.in.h:368
+msgid "Press Left Alt key to choose 3rd level."
+msgstr ""
+"მე-3 სáƒáƒ¤áƒ”ხურის "
+"áƒáƒ›áƒáƒ áƒ©áƒ”ვისთვის, დáƒáƒáƒ­áƒ˜áƒ áƒ”თ "
+"მáƒáƒ áƒªáƒ®áƒ”ნრAlt-ს"
+
+#: ../rules/base.xml.in.h:369
+msgid "Press Left Win-key to choose 3rd level."
+msgstr ""
+"მე-3 სáƒáƒ¤áƒ”ხურის "
+"áƒáƒ›áƒáƒ áƒ©áƒ”ვისთვის, დáƒáƒáƒ­áƒ˜áƒ áƒ”თ "
+"მáƒáƒ áƒªáƒ®áƒ”ნრWin ღილáƒáƒ™áƒ¡."
+
+#: ../rules/base.xml.in.h:370
+msgid "Press Menu key to choose 3rd level."
+msgstr ""
+"მე-3 სáƒáƒ¤áƒ”ხურის "
+"áƒáƒ›áƒáƒ áƒ©áƒ”ვისთვის, დáƒáƒáƒ­áƒ˜áƒ áƒ”თ Menu "
+"ღილáƒáƒ™áƒ¡."
+
+#: ../rules/base.xml.in.h:371
+msgid ""
+"Press Right Alt key to choose 3rd level, Shift+Right Alt key is Multi_Key."
+msgstr ""
+"მე-3 სáƒáƒ¤áƒ”ხურის "
+"áƒáƒ›áƒáƒ áƒ©áƒ”ვისთვის, დáƒáƒáƒ­áƒ˜áƒ áƒ”თ "
+"მáƒáƒ áƒ¯áƒ•áƒ”ნრAlt ღილáƒáƒ™áƒ¡. "
+"Shift+მáƒáƒ áƒ¯áƒ•áƒ”ნრAlt ღილáƒáƒ™áƒ˜ "
+"იმáƒáƒ¥áƒ›áƒ”დებენ რáƒáƒ’áƒáƒ áƒª Multi_Key."
+
+#: ../rules/base.xml.in.h:372
+msgid "Press Right Alt key to choose 3rd level."
+msgstr ""
+"მე-3 სáƒáƒ¤áƒ”ხურის "
+"áƒáƒ›áƒáƒ áƒ©áƒ”ვისთვის, დáƒáƒáƒ­áƒ˜áƒ áƒ”თ "
+"მáƒáƒ áƒ¯áƒ•áƒ”ნრAlt ღილáƒáƒ™áƒ¡."
+
+#: ../rules/base.xml.in.h:373
+msgid "Press Right Ctrl to choose 3rd level."
+msgstr ""
+"მე-3 სáƒáƒ¤áƒ”ხურის "
+"áƒáƒ›áƒáƒ áƒ©áƒ”ვისთვის, დáƒáƒáƒ­áƒ˜áƒ áƒ”თ "
+"მáƒáƒ áƒ¯áƒ•áƒ”ნრCtrl-ს."
+
+#: ../rules/base.xml.in.h:374
+msgid "Press Right Win-key to choose 3rd level."
+msgstr ""
+"მე-3 სáƒáƒ¤áƒ”ხურის áƒáƒ›áƒáƒ áƒ©áƒ”ვრ"
+"მáƒáƒ áƒ¯áƒ•áƒ”ნრWin ღილáƒáƒ™áƒ˜áƒ¡ დáƒáƒ­áƒ”რით."
+
+#: ../rules/base.xml.in.h:375
+msgid "Press any of Alt keys to choose 3rd level."
+msgstr ""
+"მე-3 სáƒáƒ¤áƒ”ხურის áƒáƒ›áƒáƒ áƒ©áƒ”ვრ"
+"ნებისმიერი Alt ღილáƒáƒ™áƒ˜áƒ¡ "
+"დáƒáƒ­áƒ”რით."
+
+#: ../rules/base.xml.in.h:376
+msgid "Press any of Win-keys to choose 3rd level."
+msgstr ""
+"მე-3 სáƒáƒ¤áƒ”ხურის áƒáƒ›áƒáƒ áƒ©áƒ”ვრ"
+"ნებისმიერი Win ღილáƒáƒ™áƒ˜áƒ¡ "
+"დáƒáƒ­áƒ”რით."
+
+#: ../rules/base.xml.in.h:377
+msgid "Pro"
+msgstr "Pro"
+
+#: ../rules/base.xml.in.h:378
+msgid "Pro Keypad"
+msgstr "Pro დáƒáƒ›áƒáƒ¢áƒ”ბ. პáƒáƒœáƒ”ლით"
+
+#: ../rules/base.xml.in.h:379
+msgid "Probhat"
+msgstr "პრáƒáƒ‘áƒáƒ¢áƒ˜"
+
+#: ../rules/base.xml.in.h:380
+msgid "Propeller Voyager (KTEZ-1000)"
+msgstr "Propeller Voyager (KTEZ-1000)"
+
+#: ../rules/base.xml.in.h:381
+msgid "Prt"
+msgstr "პáƒáƒ áƒ¢"
+
+#: ../rules/base.xml.in.h:382
+msgid "QTronix Scorpius 98N+"
+msgstr "QTronix Scorpius 98N+"
+
+#: ../rules/base.xml.in.h:383
+msgid "R-Alt switches group while pressed."
+msgstr ""
+"მáƒáƒ áƒ¯áƒ•áƒ”ნრAlt კლáƒáƒ•áƒ˜áƒ¨áƒ˜ ცვლის "
+"ჯგუფს დáƒáƒ­áƒ”რილ "
+"მდგáƒáƒ›áƒáƒ áƒ”áƒáƒ‘áƒáƒ¨áƒ˜."
+
+#: ../rules/base.xml.in.h:384
+msgid "Right Alt is Compose."
+msgstr ""
+"მáƒáƒ áƒ¯áƒ•áƒ”ნრAlt ღილáƒáƒ™áƒ˜ "
+"შეესáƒáƒ‘áƒáƒ›áƒ”ბრCompose-ს."
+
+#: ../rules/base.xml.in.h:385
+msgid "Right Alt key changes group."
+msgstr ""
+"მáƒáƒ áƒ¯áƒ•áƒ”ნრAlt ღილáƒáƒ™áƒ˜ ცვლის "
+"ჯგუფს."
+
+#: ../rules/base.xml.in.h:386
+msgid "Right Ctrl is Compose."
+msgstr ""
+"მáƒáƒ áƒ¯áƒ•áƒ”ნრCtrl ღილáƒáƒ™áƒ˜ "
+"შეესáƒáƒ‘áƒáƒ›áƒ”ბრCompose-ს."
+
+#: ../rules/base.xml.in.h:387
+msgid "Right Ctrl key changes group."
+msgstr ""
+"მáƒáƒ áƒ¯áƒ•áƒ”ნრCtrl ღილáƒáƒ™áƒ˜ ცვლის "
+"ჯგუფს."
+
+#: ../rules/base.xml.in.h:388
+msgid "Right Ctrl key switches group while pressed."
+msgstr ""
+"მáƒáƒ áƒ¯áƒ•áƒ”ნრCtrl ღილáƒáƒ™áƒ˜ ცვლის "
+"ჯგუფს დáƒáƒ­áƒ”რილ "
+"მდგáƒáƒ›áƒáƒ áƒ”áƒáƒ‘áƒáƒ¨áƒ˜."
+
+#: ../rules/base.xml.in.h:389
+msgid "Right Ctrl key works as Right Alt."
+msgstr ""
+"მáƒáƒ áƒ¯áƒ•áƒ”ნრCtrl ღილáƒáƒ™áƒ˜ მáƒáƒ¥áƒ›áƒ”დებს "
+"რáƒáƒ’áƒáƒ áƒª მáƒáƒ áƒ¯áƒ•áƒ”ნრAlt."
+
+#: ../rules/base.xml.in.h:390
+msgid "Right Shift key changes group."
+msgstr ""
+"მáƒáƒ áƒ¯áƒ•áƒ”ნრShift ღილáƒáƒ™áƒ˜ ცვლის "
+"ჯგუფს."
+
+#: ../rules/base.xml.in.h:391
+msgid "Right Win-key changes group."
+msgstr ""
+"მáƒáƒ áƒ¯áƒ•áƒ”ნრWin ღილáƒáƒ™áƒ˜ ცვლის "
+"ჯგუფს."
+
+#: ../rules/base.xml.in.h:392
+msgid "Right Win-key is Compose."
+msgstr ""
+"მáƒáƒ áƒ¯áƒ•áƒ”ნრWin ღილáƒáƒ™áƒ˜ "
+"შეესáƒáƒ‘áƒáƒ›áƒ”ბრCompose-ს."
+
+#: ../rules/base.xml.in.h:393
+msgid "Right Win-key switches group while pressed."
+msgstr ""
+"მáƒáƒ áƒ¯áƒ•áƒ”ნრWin ღილáƒáƒ™áƒ˜ ცვლის "
+"ჯგუფს დáƒáƒ­áƒ”რილ "
+"მდგáƒáƒ›áƒáƒ áƒ”áƒáƒ‘áƒáƒ¨áƒ˜."
+
+#: ../rules/base.xml.in.h:394
+msgid "Right handed Dvorak"
+msgstr ""
+"Dvorak კლáƒáƒ•áƒ˜áƒáƒ¢áƒ£áƒ áƒ "
+"áƒáƒ áƒ-ცáƒáƒªáƒ˜áƒ”ბისთვის"
+
+#: ../rules/base.xml.in.h:395
+msgid "Romania"
+msgstr "რუმინეთი"
+
+#: ../rules/base.xml.in.h:396
+msgid "Romanian keyboard with German letters"
+msgstr ""
+"რუმინული კლáƒáƒ•áƒ˜áƒáƒ¢áƒ£áƒ áƒ "
+"გერმáƒáƒœáƒ£áƒšáƒ˜ áƒáƒ¡áƒáƒ”ბით"
+
+#: ../rules/base.xml.in.h:397
+msgid "Romanian keyboard with German letters, eliminate dead keys"
+msgstr ""
+"რუმინული კლáƒáƒ•áƒ˜áƒáƒ¢áƒ£áƒ áƒ "
+"გერმáƒáƒœáƒ£áƒšáƒ˜ áƒáƒ¡áƒáƒ”ბით, dead keys "
+"გáƒáƒ áƒ”შე. "
+
+#: ../rules/base.xml.in.h:398
+msgid "Rou"
+msgstr "რუმ"
+
+#: ../rules/base.xml.in.h:399
+msgid "Rus"
+msgstr "რუს"
+
+#: ../rules/base.xml.in.h:400
+msgid "Russia"
+msgstr "რუსეთი"
+
+#: ../rules/base.xml.in.h:401
+msgid "Russian"
+msgstr "რუსული"
+
+#: ../rules/base.xml.in.h:402
+msgid "Russian phonetic"
+msgstr "რუსული ფáƒáƒœáƒ”ტიკური"
+
+#: ../rules/base.xml.in.h:403
+msgid "Russian phonetic, eliminate dead keys"
+msgstr ""
+"რუსული ფáƒáƒœáƒ”ტიკური, სპეც (dead keys) "
+"კლáƒáƒ•áƒ˜áƒ¨áƒ”ბის გáƒáƒ áƒ”შე"
+
+#: ../rules/base.xml.in.h:404
+msgid "Russian with Kazakh"
+msgstr "რუსული ყáƒáƒ–áƒáƒ®áƒ£áƒ áƒ—áƒáƒœ ერთáƒáƒ“"
+
+#: ../rules/base.xml.in.h:405
+msgid "SCG"
+msgstr "SCG"
+
+#: ../rules/base.xml.in.h:406
+msgid "SILVERCREST Multimedia Wireless Keyboard"
+msgstr "SILVERCREST Multimedia Wireless Keyboard"
+
+#: ../rules/base.xml.in.h:407
+msgid "SK-1300"
+msgstr "SK-1300"
+
+#: ../rules/base.xml.in.h:408
+msgid "SK-2500"
+msgstr "SK-2500"
+
+#: ../rules/base.xml.in.h:409
+msgid "SK-6200"
+msgstr "SK-6200"
+
+#: ../rules/base.xml.in.h:410
+msgid "SK-7100"
+msgstr "SK-7100"
+
+#: ../rules/base.xml.in.h:411
+msgid "SVEN Ergonomic 2500"
+msgstr "SVEN Ergonomic 2500"
+
+#: ../rules/base.xml.in.h:412
+msgid "Samsung SDM 4500P"
+msgstr "Samsung SDM 4500P"
+
+#: ../rules/base.xml.in.h:413
+msgid "Samsung SDM 4510P"
+msgstr "Samsung SDM 4510P"
+
+#: ../rules/base.xml.in.h:414
+msgid "ScrollLock LED shows alternative group."
+msgstr ""
+"ScrollLock ინდიკáƒáƒ¢áƒáƒ áƒ˜ áƒáƒœáƒáƒ®áƒ”ბს "
+"áƒáƒšáƒ¢áƒ”რ. ჯგუფს."
+
+#: ../rules/base.xml.in.h:415
+msgid "Serbia and Montenegro"
+msgstr "სერბირდრმáƒáƒœáƒ¢áƒ”ნეგრáƒ"
+
+#: ../rules/base.xml.in.h:416
+msgid "Shift with numpad keys works as in MS Windows."
+msgstr ""
+"Shift ღილáƒáƒ™áƒ˜ ციფრულ "
+"კლáƒáƒ•áƒ˜áƒáƒ¢áƒ£áƒ áƒáƒ¡áƒ—áƒáƒœ, მუშáƒáƒáƒ‘ენ "
+"რáƒáƒ’áƒáƒ áƒª MS Window-ში."
+
+#: ../rules/base.xml.in.h:417
+msgid "Shift+CapsLock changes group."
+msgstr "Shift+CapsLock ცვლიáƒáƒœ ჯგუფს."
+
+#: ../rules/base.xml.in.h:418
+msgid "Slovakia"
+msgstr "სლáƒáƒ•áƒáƒ™áƒ”თი"
+
+#: ../rules/base.xml.in.h:419
+msgid "Slovenia"
+msgstr "სლáƒáƒ•áƒ”ნიáƒ"
+
+#: ../rules/base.xml.in.h:420
+msgid "South Africa"
+msgstr "სáƒáƒ›áƒ®áƒ áƒ”თ áƒáƒ¤áƒ áƒ˜áƒ™áƒ"
+
+#: ../rules/base.xml.in.h:421
+msgid "Southern Uzbek"
+msgstr "სáƒáƒ›áƒ®áƒ áƒ”თ-უზბეკური"
+
+#: ../rules/base.xml.in.h:422
+msgid "Spain"
+msgstr "ესპáƒáƒœáƒ”თი"
+
+#: ../rules/base.xml.in.h:423
+msgid "Special keys (Ctrl+Alt+&lt;key&gt;) handled in a server."
+msgstr ""
+"სპეც კლáƒáƒ•áƒ˜áƒ¨áƒ”ბს (Ctrl+Alt+&lt;клв&gt;) "
+"სერვერი áƒáƒ›áƒ£áƒ¨áƒáƒ•áƒ”ბთ."
+
+#: ../rules/base.xml.in.h:424
+msgid "SrL"
+msgstr "შრლ"
+
+#: ../rules/base.xml.in.h:425
+msgid "Sri Lanka"
+msgstr "შრი-ლáƒáƒœáƒ™áƒ"
+
+#: ../rules/base.xml.in.h:426
+msgid "Standard"
+msgstr "სტáƒáƒœáƒ“áƒáƒ áƒ¢áƒ£áƒšáƒ˜"
+
+#. RSTU 2019-91
+#: ../rules/base.xml.in.h:428
+msgid "Standard RSTU"
+msgstr "სტáƒáƒœáƒ“áƒáƒ áƒ¢áƒ£áƒšáƒ˜ RSTU"
+
+#. RSTU 2019-91
+#: ../rules/base.xml.in.h:430
+msgid "Standard RSTU on Russian layout"
+msgstr ""
+"სტáƒáƒœáƒ“áƒáƒ áƒ¢áƒ£áƒšáƒ˜ RSTU რუსულ "
+"გáƒáƒœáƒšáƒáƒ’ებáƒáƒ–ე"
+
+#: ../rules/base.xml.in.h:431
+msgid "Sun dead keys"
+msgstr "სპეც ღილáƒáƒ™áƒ”ბი (dead keys) Sun"
+
+#: ../rules/base.xml.in.h:432
+msgid "Super Power Multimedia Keyboard"
+msgstr "Super Power Multimedia Keyboard"
+
+#: ../rules/base.xml.in.h:433
+msgid "Super is mapped to the Win-keys (default)."
+msgstr ""
+"Super შეესáƒáƒ‘áƒáƒ›áƒ”ბრWin "
+"ღილáƒáƒ™áƒ”ბს.(ნáƒáƒ’ულისმევიáƒ)"
+
+#: ../rules/base.xml.in.h:434
+msgid "Svk"
+msgstr "სლáƒáƒ•áƒ™"
+
+#: ../rules/base.xml.in.h:435
+msgid "Svn"
+msgstr "სლáƒáƒ•áƒ”ნ"
+
+#: ../rules/base.xml.in.h:436
+msgid "Swap Ctrl and CapsLock."
+msgstr "CapsLock ის Ctrl-ით შეცვლáƒ."
+
+#: ../rules/base.xml.in.h:437
+msgid "Swe"
+msgstr "შვედ"
+
+#: ../rules/base.xml.in.h:438
+msgid "Sweden"
+msgstr "შვედეთი"
+
+#: ../rules/base.xml.in.h:439
+msgid "Switzerland"
+msgstr "შვეიცáƒáƒ áƒ˜áƒ"
+
+#: ../rules/base.xml.in.h:440
+msgid "Symplon PaceBook (tablet PC)"
+msgstr "Symplon PaceBook (tablet PC)"
+
+#: ../rules/base.xml.in.h:441
+msgid "Syr"
+msgstr "სირ"
+
+#: ../rules/base.xml.in.h:442
+msgid "Syria"
+msgstr "სირიáƒ"
+
+#: ../rules/base.xml.in.h:443
+msgid "Syriac"
+msgstr "სირიული"
+
+#: ../rules/base.xml.in.h:444
+msgid "Syriac phonetic"
+msgstr "სირიის ფáƒáƒœáƒ”ტიკური"
+
+#: ../rules/base.xml.in.h:445
+msgid "TIS-820.2538"
+msgstr "TIS-820.2538"
+
+#: ../rules/base.xml.in.h:446
+msgid "Tajikistan"
+msgstr "ტáƒáƒ¯áƒ˜áƒ™áƒ”თი"
+
+#: ../rules/base.xml.in.h:447
+msgid "Tamil"
+msgstr "თáƒáƒ›áƒ˜áƒšáƒ£áƒ áƒ˜"
+
+#: ../rules/base.xml.in.h:448
+msgid "Tamil TAB Typewriter"
+msgstr ""
+"თáƒáƒ›áƒ˜áƒšáƒ£áƒ áƒ˜ TAB სáƒáƒ‘ეჭდი მáƒáƒœáƒ¥áƒáƒœáƒ"
+
+#: ../rules/base.xml.in.h:449
+msgid "Tamil TSCII Typewriter"
+msgstr ""
+"თáƒáƒ›áƒ˜áƒšáƒ£áƒ áƒ˜ TSCII სáƒáƒ‘ეჭდი მáƒáƒœáƒ¥áƒáƒœáƒ"
+
+#: ../rules/base.xml.in.h:450
+msgid "Tamil Unicode"
+msgstr "ტáƒáƒ›áƒ˜áƒšáƒ£áƒ áƒ˜ უნიკáƒáƒ“ი"
+
+#: ../rules/base.xml.in.h:451
+msgid "Tatar"
+msgstr "თáƒáƒ—რული"
+
+#: ../rules/base.xml.in.h:452
+msgid "Telugu"
+msgstr "თელუგუ"
+
+#: ../rules/base.xml.in.h:453
+msgid "Tha"
+msgstr "ტáƒáƒ˜"
+
+#: ../rules/base.xml.in.h:454
+msgid "Thailand"
+msgstr "ტáƒáƒ˜áƒšáƒáƒœáƒ“ი"
+
+#: ../rules/base.xml.in.h:455
+msgid "Third level choosers"
+msgstr "მე-3 სáƒáƒ¤áƒ”ხურის áƒáƒ›áƒáƒ áƒ©áƒ”ვáƒ"
+
+#: ../rules/base.xml.in.h:456
+msgid "Tilde (~) variant"
+msgstr "ვáƒáƒ áƒ˜áƒáƒœáƒ¢áƒ˜ (~)-ით"
+
+#: ../rules/base.xml.in.h:457
+msgid "Tjk"
+msgstr "ტáƒáƒ¯"
+
+#: ../rules/base.xml.in.h:458
+msgid "Toshiba Satellite S3000"
+msgstr "Toshiba Satellite S3000"
+
+#: ../rules/base.xml.in.h:459
+msgid "Trust Direct Access Keyboard"
+msgstr "Trust Direct Access Keyboard"
+
+#: ../rules/base.xml.in.h:460
+msgid "Trust Wireless Keyboard Classic"
+msgstr "Trust Wireless Keyboard Classic"
+
+#: ../rules/base.xml.in.h:461
+msgid "Tur"
+msgstr "თურქ"
+
+#: ../rules/base.xml.in.h:462
+msgid "Turkey"
+msgstr "თურქეთი"
+
+#: ../rules/base.xml.in.h:463
+msgid "Typewriter"
+msgstr "სáƒáƒ‘ეჭდი მáƒáƒœáƒ¥áƒáƒœáƒ"
+
+#: ../rules/base.xml.in.h:464
+msgid "U.S. English"
+msgstr "ინგლისუáƒáƒ áƒ˜ áƒ.შ.შ"
+
+#: ../rules/base.xml.in.h:465
+msgid "US keyboard with Bosnian digraphs"
+msgstr ""
+"áƒáƒ¨áƒ¨-ს კლáƒáƒ•áƒ˜áƒáƒ¢áƒ£áƒ áƒ ბáƒáƒ¡áƒœáƒ˜áƒ£áƒ áƒ˜ "
+"დიგრáƒáƒ¤áƒ”ბით"
+
+#: ../rules/base.xml.in.h:466
+msgid "US keyboard with Bosnian letters"
+msgstr ""
+"áƒáƒ¨áƒ¨-ს კლáƒáƒ•áƒ˜áƒáƒ¢áƒ£áƒ áƒ ბáƒáƒ¡áƒœáƒ˜áƒ£áƒ áƒ˜ "
+"áƒáƒ¡áƒáƒ”ბით"
+
+#: ../rules/base.xml.in.h:467
+msgid "US keyboard with Croatian digraphs"
+msgstr ""
+"áƒáƒ¨áƒ¨-ს კლáƒáƒ•áƒ˜áƒáƒ¢áƒ£áƒ áƒ ხáƒáƒ áƒ•áƒáƒ¢áƒ˜áƒ£áƒšáƒ˜ "
+"დიგრáƒáƒ¤áƒ”ბით"
+
+#: ../rules/base.xml.in.h:468
+msgid "US keyboard with Croatian letters"
+msgstr ""
+"áƒáƒ¨áƒ¨-ს კლáƒáƒ•áƒ˜áƒáƒ¢áƒ£áƒ áƒ ხáƒáƒ áƒ•áƒáƒ¢áƒ˜áƒ£áƒšáƒ˜ "
+"áƒáƒ¡áƒáƒ”ბით"
+
+#: ../rules/base.xml.in.h:469
+msgid "US keyboard with Lithuanian letters"
+msgstr ""
+"áƒáƒ¨áƒ¨-ს კლáƒáƒ•áƒ˜áƒáƒ¢áƒ£áƒ áƒ ლიტვური "
+"áƒáƒ¡áƒáƒ”ბით"
+
+#: ../rules/base.xml.in.h:470
+msgid "US keyboard with Slovenian digraphs"
+msgstr ""
+"áƒáƒ¨áƒ¨-ს კლáƒáƒ•áƒ˜áƒáƒ¢áƒ£áƒ áƒ სლáƒáƒ•áƒáƒ™áƒ£áƒ áƒ˜ "
+"დიგრáƒáƒ¤áƒ”ბით"
+
+#: ../rules/base.xml.in.h:471
+msgid "US keyboard with Slovenian letters"
+msgstr ""
+"áƒáƒ¨áƒ¨-ს კლáƒáƒ•áƒ˜áƒáƒ¢áƒ£áƒ áƒ სლáƒáƒ•áƒáƒ™áƒ£áƒ áƒ˜ "
+"áƒáƒ¡áƒáƒ”ბით"
+
+#: ../rules/base.xml.in.h:472
+msgid "USA"
+msgstr "áƒáƒ¨áƒ¨"
+
+#: ../rules/base.xml.in.h:473
+msgid "Ukr"
+msgstr "უკრ"
+
+#: ../rules/base.xml.in.h:474
+msgid "Ukraine"
+msgstr "უკრáƒáƒ˜áƒœáƒ"
+
+#: ../rules/base.xml.in.h:475
+msgid "UnicodeExpert"
+msgstr "UnicodeExpert"
+
+#: ../rules/base.xml.in.h:476
+msgid "United Kingdom"
+msgstr "დიდი ბრიტáƒáƒœáƒ”თი"
+
+#: ../rules/base.xml.in.h:477
+msgid "Urdu"
+msgstr "ურდუ"
+
+#: ../rules/base.xml.in.h:478
+msgid "Use Bosnian digraphs"
+msgstr ""
+"ბáƒáƒ¡áƒœáƒ˜áƒ£áƒ áƒ˜ დიგრáƒáƒ¤áƒ”ბის "
+"გáƒáƒ›áƒáƒ§áƒ”ნებáƒ"
+
+#: ../rules/base.xml.in.h:479
+msgid "Use Croatian digraphs"
+msgstr ""
+"ხáƒáƒ áƒ•áƒáƒ¢áƒ˜áƒ£áƒšáƒ˜ დიგრáƒáƒ¤áƒ”ბის "
+"გáƒáƒ›áƒáƒ§áƒ”ნებáƒ"
+
+#: ../rules/base.xml.in.h:480
+msgid "Use Slovenian digraphs"
+msgstr ""
+"სლáƒáƒ•áƒ”ნური დიგრáƒáƒ¤áƒ”ბის "
+"გáƒáƒ›áƒáƒ§áƒ”ნებáƒ"
+
+#: ../rules/base.xml.in.h:481
+msgid "Use guillemets for quotes"
+msgstr ""
+"ფრáƒáƒœáƒ’ული ბრჭყáƒáƒšáƒ”ბის, "
+"ბრჭყáƒáƒšáƒ”ბáƒáƒ“ გáƒáƒ›áƒáƒ§áƒ”ნებáƒ"
+
+#: ../rules/base.xml.in.h:482
+msgid "Use keyboard LED to show alternative group."
+msgstr ""
+"დáƒáƒ›áƒáƒ¢áƒ”ბითი ჯგუფის "
+"სáƒáƒ©áƒ•áƒ”ნებლáƒáƒ“, კლáƒáƒ•áƒ˜áƒáƒ¢áƒ£áƒ áƒ˜áƒ¡ "
+"ინდიკáƒáƒ¢áƒáƒ áƒ˜áƒ¡ გáƒáƒ›áƒáƒ§áƒ”ნებáƒ."
+
+#: ../rules/base.xml.in.h:483
+msgid "Uzb"
+msgstr "უზბ"
+
+#: ../rules/base.xml.in.h:484
+msgid "Uzbekistan"
+msgstr "უზბეკეთი"
+
+#: ../rules/base.xml.in.h:485
+msgid "Vietnam"
+msgstr "ვიეტნáƒáƒ›áƒ˜"
+
+#: ../rules/base.xml.in.h:486
+msgid "Vnm"
+msgstr "ვიეტ"
+
+#: ../rules/base.xml.in.h:487
+msgid "Wang model 724 azerty"
+msgstr "Wang model 724 azerty"
+
+#: ../rules/base.xml.in.h:488
+msgid "Winbook Model XP5"
+msgstr "Winbook Model XP5"
+
+#: ../rules/base.xml.in.h:489
+msgid "Winkeys"
+msgstr "Windows კლáƒáƒ•áƒ˜áƒáƒ¢áƒ£áƒ áƒ"
+
+#: ../rules/base.xml.in.h:490
+msgid "With &lt;\\|&gt; key"
+msgstr "კლáƒáƒ•áƒ˜áƒ¨áƒ”ბით &lt;\\|&gt;"
+
+#: ../rules/base.xml.in.h:491
+msgid "With guillemets"
+msgstr "გრáƒáƒœáƒ’ული ბრჭყáƒáƒšáƒ”ბით"
+
+#: ../rules/base.xml.in.h:492
+msgid "Yahoo! Internet Keyboard"
+msgstr "Yahoo! Internet Keyboard"
+
+#: ../rules/base.xml.in.h:493
+msgid "Z and ZHE swapped"
+msgstr "Z დრZHE გáƒáƒ“áƒáƒ¢áƒáƒœáƒ˜áƒšáƒ˜áƒ"
+
+#: ../rules/base.xml.in.h:494
+msgid "Zar"
+msgstr "უáƒáƒ áƒ˜"
+
+#: ../rules/base.xml.in.h:495
+msgid "azerty"
+msgstr "azerty"
+
+#: ../rules/base.xml.in.h:496
+msgid "azerty/digits"
+msgstr "zerty/ციფრები"
+
+#: ../rules/base.xml.in.h:497
+msgid "digits"
+msgstr "ციფრები"
+
+#: ../rules/base.xml.in.h:498
+msgid "lyx"
+msgstr "lyx"
+
+#: ../rules/base.xml.in.h:499
+msgid "qwerty"
+msgstr "qwerty"
+
+#: ../rules/base.xml.in.h:500
+msgid "qwerty, extended Backslash"
+msgstr ""
+"qwerty, დრBackslash-ის დáƒáƒ›áƒáƒ¢áƒ”ბითი "
+"ფუნქციები"
+
+#: ../rules/base.xml.in.h:501
+msgid "qwerty/digits"
+msgstr "qwerty/ციფრები"
+
+#: ../rules/base.xml.in.h:502
+msgid "qwertz"
+msgstr "qwertz"
+
diff --git a/xorg-server/xkeyboard-config/po/ky.po b/xorg-server/xkeyboard-config/po/ky.po
index 4584c3ea6..b08ebf695 100644
--- a/xorg-server/xkeyboard-config/po/ky.po
+++ b/xorg-server/xkeyboard-config/po/ky.po
@@ -1,3017 +1,3017 @@
-# Translation of 'xkeyboard-config' messages to Kirghiz.
-# Copyright (C) 2002 Free Software Foundation, Inc.
-# This file is distributed under the same license as the xkeyboard-config package.
-# Ilyas Bakirov <just_ilyas@yahoo.com>, 2009, 2010
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: xkeyboard-config 1.6.99\n"
-"Report-Msgid-Bugs-To: svu@users.sourceforge.net\n"
-"POT-Creation-Date: 2009-09-15 23:31+0100\n"
-"PO-Revision-Date: 2009-09-17 20:10+0600\n"
-"Last-Translator: Ilyas Bakirov <just_ilyas@yahoo.com>\n"
-"Language-Team: Kirghiz <i18n-team-ky-kyrgyz@lists.sourceforge.net>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"X-Poedit-Language: Kyrgyz\n"
-"X-Poedit-Country: KYRGYZSTAN\n"
-
-#: ../rules/base.xml.in.h:1
-msgid "(F)"
-msgstr "(F)"
-
-#: ../rules/base.xml.in.h:2
-msgid "(Legacy) Alternative"
-msgstr "(ЭÑкирген) Ðльтернативдик"
-
-#: ../rules/base.xml.in.h:3
-msgid "(Legacy) Alternative, Sun dead keys"
-msgstr "(ЭÑкирген) Ðльтернативдик, атайын (dead keys) Sun клавишалары менен"
-
-#: ../rules/base.xml.in.h:4
-msgid "(Legacy) Alternative, eliminate dead keys"
-msgstr "(ЭÑкирген) Ðльтернативдик, атайын (dead keys) клавишаларÑыз"
-
-#: ../rules/base.xml.in.h:5
-msgid "101/104 key Compatible"
-msgstr "101/104 баÑкычтар менен жарамдуу"
-
-#: ../rules/base.xml.in.h:6
-msgid "101/qwerty/comma/Dead keys"
-msgstr "pc101, qwerty, үтүр, атайын (dead keys) клавишалары менен"
-
-#: ../rules/base.xml.in.h:7
-msgid "101/qwerty/comma/Eliminate dead keys"
-msgstr "pc101, qwerty, үтүр, атайын (dead keys) клавишаларÑыз "
-
-#: ../rules/base.xml.in.h:8
-msgid "101/qwerty/dot/Dead keys"
-msgstr "pc101, qwerty, чекит, атайын (dead keys) клавшилары менен"
-
-#: ../rules/base.xml.in.h:9
-msgid "101/qwerty/dot/Eliminate dead keys"
-msgstr "pc101, qwerty, үтур, атайын (dead keys) клавишаларÑыз"
-
-#: ../rules/base.xml.in.h:10
-msgid "101/qwertz/comma/Dead keys"
-msgstr "pc101, qwertz, үтур, атайын (dead keys) клавишалары менен"
-
-#: ../rules/base.xml.in.h:11
-msgid "101/qwertz/comma/Eliminate dead keys"
-msgstr "pc101, qwertz, үтүр, атайын (dead keys) клавишаларÑыз"
-
-#: ../rules/base.xml.in.h:12
-msgid "101/qwertz/dot/Dead keys"
-msgstr "pc101, qwertz, чекит, атайын (dead keys) клавишалары менен"
-
-#: ../rules/base.xml.in.h:13
-msgid "101/qwertz/dot/Eliminate dead keys"
-msgstr "pc101, qwertz, чекит, атайын (dead keys) клавишаларÑыз"
-
-#: ../rules/base.xml.in.h:14
-msgid "102/qwerty/comma/Dead keys"
-msgstr "pc102, qwerty, үтүр, атайын (dead keys) клавишалары менен"
-
-#: ../rules/base.xml.in.h:15
-msgid "102/qwerty/comma/Eliminate dead keys"
-msgstr "pc102, qwerty, үтүр, атаыйн (dead keys) клавишаларÑыз"
-
-#: ../rules/base.xml.in.h:16
-msgid "102/qwerty/dot/Dead keys"
-msgstr "pc102, qwerty, чекит, атайын (dead keys) клавишалары менен"
-
-#: ../rules/base.xml.in.h:17
-msgid "102/qwerty/dot/Eliminate dead keys"
-msgstr "pc102, qwerty, чекит, атайын (dead keys) клавишаларÑыз"
-
-#: ../rules/base.xml.in.h:18
-msgid "102/qwertz/comma/Dead keys"
-msgstr "pc102, qwertz, үтүр, атайын (dead keys) клавишалары менен"
-
-#: ../rules/base.xml.in.h:19
-msgid "102/qwertz/comma/Eliminate dead keys"
-msgstr "pc102, qwertz, үтур, атайын (dead keys) клавишаларÑыз"
-
-#: ../rules/base.xml.in.h:20
-msgid "102/qwertz/dot/Dead keys"
-msgstr "pc102, qwertz, чекит, атайын (dead keys) клавишалары менен"
-
-#: ../rules/base.xml.in.h:21
-msgid "102/qwertz/dot/Eliminate dead keys"
-msgstr "pc102, qwertz, чекит, атайын (dead keys) клавишаларÑыз"
-
-#: ../rules/base.xml.in.h:22
-msgid "2"
-msgstr "2"
-
-#: ../rules/base.xml.in.h:23
-msgid "4"
-msgstr "4"
-
-#: ../rules/base.xml.in.h:24
-msgid "5"
-msgstr "5"
-
-#: ../rules/base.xml.in.h:25
-msgid "A4Tech KB-21"
-msgstr "A4Tech KB-21"
-
-#: ../rules/base.xml.in.h:26
-msgid "A4Tech KBS-8"
-msgstr "A4Tech KBS-8"
-
-#: ../rules/base.xml.in.h:27
-msgid "A4Tech Wireless Desktop RFKB-23"
-msgstr "A4Tech Wireless Desktop RFKB-23"
-
-#: ../rules/base.xml.in.h:28
-msgid "ACPI Standard"
-msgstr "ACPI Ñтандарттуу"
-
-#: ../rules/base.xml.in.h:29
-msgid "ATM/phone-style"
-msgstr "Банкомат(ATM)/телефондук Ñтилинде"
-
-#: ../rules/base.xml.in.h:30
-msgid "Acer AirKey V"
-msgstr "Acer AirKey V"
-
-#: ../rules/base.xml.in.h:31
-msgid "Acer C300"
-msgstr "Acer C300"
-
-#: ../rules/base.xml.in.h:32
-msgid "Acer Ferrari 4000"
-msgstr "Acer Ferrari 4000"
-
-#: ../rules/base.xml.in.h:33
-msgid "Acer Laptop"
-msgstr "Acer ноутбугу"
-
-#: ../rules/base.xml.in.h:34
-msgid "Add the standard behavior to Menu key"
-msgstr ""
-
-#: ../rules/base.xml.in.h:35
-msgid "Adding Esperanto circumflexes (supersigno)"
-msgstr ""
-
-#: ../rules/base.xml.in.h:36
-msgid "Adding EuroSign to certain keys"
-msgstr "Белгилүү клавишаларга Евро белгиÑин кошуу."
-
-#: ../rules/base.xml.in.h:37
-msgid "Advance Scorpius KI"
-msgstr "Advance Scorpius KI"
-
-#: ../rules/base.xml.in.h:38
-msgid "Afg"
-msgstr "Ðфг"
-
-#: ../rules/base.xml.in.h:39
-msgid "Afghanistan"
-msgstr "ÐфганиÑтан"
-
-#: ../rules/base.xml.in.h:40
-msgid "Akan"
-msgstr "Ðкан"
-
-#: ../rules/base.xml.in.h:41
-msgid "Alb"
-msgstr "Ðлб"
-
-#: ../rules/base.xml.in.h:42
-msgid "Albania"
-msgstr "ÐлбаниÑ"
-
-#: ../rules/base.xml.in.h:43
-msgid "Alt and Meta are on Alt keys"
-msgstr "Alt жана Meta Alt клавишаларда"
-
-#: ../rules/base.xml.in.h:44
-msgid "Alt is mapped to Right Win, Super to Menu"
-msgstr "Alt is mapped to Right Win, Super to Menu"
-
-#: ../rules/base.xml.in.h:45
-msgid "Alt+CapsLock"
-msgstr "Alt+CapsLock"
-
-#: ../rules/base.xml.in.h:46
-msgid "Alt+Ctrl"
-msgstr "Alt+Ctrl"
-
-#: ../rules/base.xml.in.h:47
-msgid "Alt+Shift"
-msgstr "Alt+Shift"
-
-#: ../rules/base.xml.in.h:48
-msgid "Alt+Space"
-msgstr "Alt+Боштук"
-
-#: ../rules/base.xml.in.h:49
-msgid "Alt-Q"
-msgstr "Alt-Q"
-
-#: ../rules/base.xml.in.h:50
-msgid "Alt/Win key behavior"
-msgstr "Alt/Win клавишалары"
-
-#: ../rules/base.xml.in.h:51
-msgid "Alternative"
-msgstr "Ðльтернативдик"
-
-#: ../rules/base.xml.in.h:52
-msgid "Alternative Eastern"
-msgstr "Ðльтернативдик"
-
-#: ../rules/base.xml.in.h:53
-msgid "Alternative Phonetic"
-msgstr "Ðльтернативдүү фонетикалык"
-
-#: ../rules/base.xml.in.h:54
-msgid "Alternative international (former us_intl)"
-msgstr "Эларалык Ðльтернативдик (мурунку us_intl)"
-
-#: ../rules/base.xml.in.h:55
-msgid "Alternative, Sun dead keys"
-msgstr "Ðльтернативдик, атайын (dead keys) Sun клавишалары менен"
-
-#: ../rules/base.xml.in.h:56
-msgid "Alternative, eliminate dead keys"
-msgstr "Ðльтернативдик, атайын (dead keys) клавишаларÑыз"
-
-#: ../rules/base.xml.in.h:57
-msgid "Alternative, latin-9 only"
-msgstr "Ðльтернативдик, latin-9 гана"
-
-#: ../rules/base.xml.in.h:58
-msgid "And"
-msgstr "Ðнд"
-
-#: ../rules/base.xml.in.h:59
-msgid "Andorra"
-msgstr "Ðндорра"
-
-#: ../rules/base.xml.in.h:60
-msgid "Any Alt key"
-msgstr ""
-
-#: ../rules/base.xml.in.h:61
-msgid "Any Win key"
-msgstr "Каалаган Win клавишаÑÑ‹"
-
-#: ../rules/base.xml.in.h:62
-msgid "Any Win key (while pressed)"
-msgstr ""
-
-#: ../rules/base.xml.in.h:63
-msgid "Apostrophe (') variant"
-msgstr "Вариант апоÑтроф (') менен"
-
-#: ../rules/base.xml.in.h:64
-msgid "Apple"
-msgstr "Apple"
-
-#: ../rules/base.xml.in.h:65
-msgid "Apple Laptop"
-msgstr "Apple Ðоутбугу"
-
-#: ../rules/base.xml.in.h:66
-msgid "Ara"
-msgstr "Ðра"
-
-#: ../rules/base.xml.in.h:67
-msgid "Arabic"
-msgstr "Ðраб"
-
-#: ../rules/base.xml.in.h:68
-msgid "Arm"
-msgstr "Ðрм"
-
-#: ../rules/base.xml.in.h:69
-msgid "Armenia"
-msgstr "ÐрмениÑ"
-
-#: ../rules/base.xml.in.h:70
-msgid "Asturian variant with bottom-dot H and bottom-dot L"
-msgstr ""
-
-#: ../rules/base.xml.in.h:71
-msgid "Asus Laptop"
-msgstr "Asus ноутбугу"
-
-#: ../rules/base.xml.in.h:72
-msgid "At bottom left"
-msgstr "Төмөн Ñол жакта"
-
-#: ../rules/base.xml.in.h:73
-msgid "At left of 'A'"
-msgstr "'Ð' клавишанын Ñол жагында"
-
-#: ../rules/base.xml.in.h:74
-msgid "Aze"
-msgstr "Ðзр"
-
-#: ../rules/base.xml.in.h:75
-msgid "Azerbaijan"
-msgstr "Ðзербайджан"
-
-#: ../rules/base.xml.in.h:76
-msgid "Azona RF2300 wireless Internet Keyboard"
-msgstr "Azona RF2300 wireless Internet Keyboard"
-
-#: ../rules/base.xml.in.h:77
-msgid "BTC 5090"
-msgstr "BTC 5090"
-
-#: ../rules/base.xml.in.h:78
-msgid "BTC 5113RF Multimedia"
-msgstr "BTC 5113RF Multimedia"
-
-#: ../rules/base.xml.in.h:79
-msgid "BTC 5126T"
-msgstr "BTC 5126T"
-
-#: ../rules/base.xml.in.h:80
-msgid "BTC 6301URF"
-msgstr "BTC 6301URF"
-
-#: ../rules/base.xml.in.h:81
-msgid "BTC 9000"
-msgstr "BTC 9000"
-
-#: ../rules/base.xml.in.h:82
-msgid "BTC 9000A"
-msgstr "BTC 9000A"
-
-#: ../rules/base.xml.in.h:83
-msgid "BTC 9001AH"
-msgstr "BTC 9001AH"
-
-#: ../rules/base.xml.in.h:84
-msgid "BTC 9019U"
-msgstr "BTC 9019U"
-
-#: ../rules/base.xml.in.h:85
-msgid "BTC 9116U Mini Wireless Internet and Gaming"
-msgstr "BTC 9116U Mini Wireless Internet and Gaming"
-
-#: ../rules/base.xml.in.h:86
-msgid "Baltic+"
-msgstr "Baltic+"
-
-#: ../rules/base.xml.in.h:87
-msgid "Ban"
-msgstr "Бан"
-
-#: ../rules/base.xml.in.h:88
-msgid "Bangladesh"
-msgstr "Бангладеш"
-
-#: ../rules/base.xml.in.h:89
-msgid "Bashkirian"
-msgstr "Башкирдик"
-
-#: ../rules/base.xml.in.h:90
-msgid "Bel"
-msgstr "Бел"
-
-#: ../rules/base.xml.in.h:91
-msgid "Belarus"
-msgstr "БеларуÑиÑ"
-
-#: ../rules/base.xml.in.h:92
-msgid "Belgium"
-msgstr "БельгиÑ"
-
-#: ../rules/base.xml.in.h:93
-msgid "BenQ X-Touch"
-msgstr "BenQ X-Touch"
-
-#: ../rules/base.xml.in.h:94
-msgid "BenQ X-Touch 730"
-msgstr "BenQ X-Touch 730"
-
-#: ../rules/base.xml.in.h:95
-msgid "BenQ X-Touch 800"
-msgstr "BenQ X-Touch 800"
-
-#: ../rules/base.xml.in.h:96
-msgid "Bengali"
-msgstr "Бенгальдык"
-
-#: ../rules/base.xml.in.h:97
-msgid "Bengali Probhat"
-msgstr "Бенгальдык Пробат"
-
-#: ../rules/base.xml.in.h:98
-msgid "Bepo, ergonomic, Dvorak way"
-msgstr "Бепо, Ñргономикалык, Dvorak'ка окшош"
-
-#: ../rules/base.xml.in.h:99
-msgid "Bepo, ergonomic, Dvorak way, latin-9 only"
-msgstr "Бепо, Ñргономикалык, Dvorak'ка окшош, latin-9 гана"
-
-#: ../rules/base.xml.in.h:100
-msgid "Bgr"
-msgstr "Болг"
-
-#: ../rules/base.xml.in.h:101
-msgid "Bhu"
-msgstr "Бут"
-
-#: ../rules/base.xml.in.h:102
-msgid "Bhutan"
-msgstr "Бутан"
-
-#: ../rules/base.xml.in.h:103
-msgid "Biblical Hebrew (Tiro)"
-msgstr "Библейдик иврит (Tiro)"
-
-#: ../rules/base.xml.in.h:104
-msgid "Bih"
-msgstr "БоÑн"
-
-#: ../rules/base.xml.in.h:105
-msgid "Blr"
-msgstr "Бел"
-
-#: ../rules/base.xml.in.h:106
-msgid "Bosnia and Herzegovina"
-msgstr "БоÑÐ½Ð¸Ñ Ð¶Ð°Ð½Ð° ГерциговиниÑ"
-
-#: ../rules/base.xml.in.h:107
-msgid "Both Alt keys together"
-msgstr "Эки Alt клавишалары бирге"
-
-#: ../rules/base.xml.in.h:108
-msgid "Both Ctrl keys together"
-msgstr "Эки Ctrl клавишалары бирге"
-
-#: ../rules/base.xml.in.h:109
-msgid "Both Shift keys together"
-msgstr "Эки Shift клавишалары бирге"
-
-#: ../rules/base.xml.in.h:110
-msgid "Bra"
-msgstr "Бра"
-
-#: ../rules/base.xml.in.h:111
-msgid "Braille"
-msgstr "Браиил"
-
-#: ../rules/base.xml.in.h:112
-msgid "Brazil"
-msgstr "БразилиÑ"
-
-#: ../rules/base.xml.in.h:113
-msgid "Breton"
-msgstr "Бретон"
-
-#: ../rules/base.xml.in.h:114
-msgid "Brl"
-msgstr "Брл"
-
-#: ../rules/base.xml.in.h:115
-msgid "Brother Internet Keyboard"
-msgstr "Brother Internet Keyboard"
-
-#: ../rules/base.xml.in.h:116
-msgid "Buckwalter"
-msgstr "Buckwalter"
-
-#: ../rules/base.xml.in.h:117
-msgid "Bulgaria"
-msgstr "БолгариÑ"
-
-#: ../rules/base.xml.in.h:118
-msgid "CRULP"
-msgstr "CRULP"
-
-#: ../rules/base.xml.in.h:119
-msgid "Cambodia"
-msgstr "КамбоджиÑ"
-
-#: ../rules/base.xml.in.h:120
-msgid "Can"
-msgstr "Кан"
-
-#: ../rules/base.xml.in.h:121
-msgid "Canada"
-msgstr "Канада"
-
-#: ../rules/base.xml.in.h:122
-msgid "Caps Lock"
-msgstr "Caps Lock"
-
-#: ../rules/base.xml.in.h:123
-msgid "CapsLock"
-msgstr "CapsLock"
-
-#: ../rules/base.xml.in.h:124
-msgid "CapsLock (to first layout), Shift+CapsLock (to last layout)"
-msgstr ""
-
-#: ../rules/base.xml.in.h:125
-msgid "CapsLock (while pressed), Alt+CapsLock does the original capslock action"
-msgstr ""
-
-#: ../rules/base.xml.in.h:126
-msgid "CapsLock acts as Shift with locking. Shift \"pauses\" CapsLock"
-msgstr ""
-
-#: ../rules/base.xml.in.h:127
-msgid "CapsLock acts as Shift with locking. Shift doesn't affect CapsLock"
-msgstr "CapsLock Shift блокировка менен клавишаÑÑ‹ катары амал жаÑайт. Shift CapsLock амалына тоÑкол болбойт"
-
-#: ../rules/base.xml.in.h:128
-msgid "CapsLock is disabled"
-msgstr "CapsLock иштен чыгарылды"
-
-#: ../rules/base.xml.in.h:129
-msgid "CapsLock key behavior"
-msgstr ""
-
-#: ../rules/base.xml.in.h:130
-msgid "CapsLock toggles Shift so all keys are affected"
-msgstr ""
-
-#: ../rules/base.xml.in.h:131
-msgid "CapsLock toggles normal capitalization of alphabetic characters"
-msgstr ""
-
-#: ../rules/base.xml.in.h:132
-msgid "CapsLock uses internal capitalization. Shift \"pauses\" CapsLock"
-msgstr "CapsLock ички капитализацыÑны ачат. Shift CapsLock амалын токтотот"
-
-#: ../rules/base.xml.in.h:133
-msgid "CapsLock uses internal capitalization. Shift doesn't affect CapsLock"
-msgstr "CapsLock ички капитализацыÑны ачат. Shift CapsLock амалына тааÑир тийгизбейт"
-
-#: ../rules/base.xml.in.h:134
-msgid "Catalan variant with middle-dot L"
-msgstr ""
-
-#: ../rules/base.xml.in.h:135
-msgid "Cedilla"
-msgstr "Седиль"
-
-#: ../rules/base.xml.in.h:136
-msgid "Che"
-msgstr "Че"
-
-#: ../rules/base.xml.in.h:137
-msgid "Cherokee"
-msgstr "Чероки"
-
-#: ../rules/base.xml.in.h:138
-msgid "Cherry B.UNLIMITED"
-msgstr "Cherry B.UNLIMITED"
-
-#: ../rules/base.xml.in.h:139
-msgid "Cherry Blue Line CyBo@rd"
-msgstr "Cherry Blue Line CyBo@rd"
-
-#: ../rules/base.xml.in.h:140
-msgid "Cherry Blue Line CyBo@rd (alternate option)"
-msgstr "Cherry Blue Line CyBo@rd (альтернативдик)"
-
-#: ../rules/base.xml.in.h:141
-msgid "Cherry CyBo@rd USB-Hub"
-msgstr "Cherry CyBo@rd USB-Hub"
-
-#: ../rules/base.xml.in.h:142
-msgid "Cherry CyMotion Expert"
-msgstr "Cherry CyMotion Expert"
-
-#: ../rules/base.xml.in.h:143
-msgid "Cherry CyMotion Master Linux"
-msgstr "Cherry CyMotion Master Linux"
-
-#: ../rules/base.xml.in.h:144
-msgid "Cherry CyMotion Master XPress"
-msgstr "Cherry CyMotion Master XPress"
-
-#: ../rules/base.xml.in.h:145
-msgid "Chicony Internet Keyboard"
-msgstr "Chicony Internet Keyboard"
-
-#: ../rules/base.xml.in.h:146
-msgid "Chicony KB-9885"
-msgstr "Chicony KB-9885"
-
-#: ../rules/base.xml.in.h:147
-msgid "Chicony KU-0108"
-msgstr "Chicony KU-0108"
-
-#: ../rules/base.xml.in.h:148
-msgid "Chicony KU-0420"
-msgstr "Chicony KU-0420"
-
-#: ../rules/base.xml.in.h:149
-msgid "China"
-msgstr "Кытай"
-
-#: ../rules/base.xml.in.h:150
-msgid "Chuvash"
-msgstr "Чуваш"
-
-#: ../rules/base.xml.in.h:151
-msgid "Chuvash Latin"
-msgstr "Чуваш латындык"
-
-#: ../rules/base.xml.in.h:152
-msgid "Classic"
-msgstr "КлаÑÑикалык"
-
-#: ../rules/base.xml.in.h:153
-msgid "Classic Dvorak"
-msgstr "КлаÑÑикалык Дровак"
-
-#: ../rules/base.xml.in.h:154
-msgid "Classmate PC"
-msgstr "Classmate PC"
-
-#: ../rules/base.xml.in.h:155
-msgid "CloGaelach"
-msgstr "CloGaelach"
-
-#: ../rules/base.xml.in.h:156
-msgid "Colemak"
-msgstr "Colemak"
-
-#: ../rules/base.xml.in.h:157
-msgid "Compaq Easy Access Keyboard"
-msgstr "Compaq Easy Access Keyboard"
-
-#: ../rules/base.xml.in.h:158
-msgid "Compaq Internet Keyboard (13 keys)"
-msgstr "Compaq \"Интернет\" клавиатураÑÑ‹ (13 клавиша менен)"
-
-#: ../rules/base.xml.in.h:159
-msgid "Compaq Internet Keyboard (18 keys)"
-msgstr "Compaq \"Интернет\" клавиатураÑÑ‹ (18 клавиша менен)"
-
-#: ../rules/base.xml.in.h:160
-msgid "Compaq Internet Keyboard (7 keys)"
-msgstr "Compaq \"Интернет\" клавиатураÑÑ‹ (7 клавиша менен)"
-
-#: ../rules/base.xml.in.h:161
-msgid "Compaq iPaq Keyboard"
-msgstr "Compaq iPaq Keyboard"
-
-#: ../rules/base.xml.in.h:162
-msgid "Compose key position"
-msgstr ""
-
-#: ../rules/base.xml.in.h:163
-msgid "Congo, Democratic Republic of the"
-msgstr "Конго, Демократикалык реÑпубликаÑÑ‹"
-
-#: ../rules/base.xml.in.h:164
-msgid "Control + Alt + Backspace"
-msgstr ""
-
-#: ../rules/base.xml.in.h:165
-msgid "Control is mapped to Alt keys, Alt is mapped to Win keys"
-msgstr ""
-
-#: ../rules/base.xml.in.h:166
-msgid "Control is mapped to Win keys (and the usual Ctrl keys)"
-msgstr ""
-
-#: ../rules/base.xml.in.h:167
-msgid "Creative Desktop Wireless 7000"
-msgstr ""
-
-#: ../rules/base.xml.in.h:168
-msgid "Crimean Tatar (Dobruca-1 Q)"
-msgstr "Крым татардык (Dobruca-1 Q)"
-
-#: ../rules/base.xml.in.h:169
-msgid "Crimean Tatar (Dobruca-2 Q)"
-msgstr "Крым татардык (Dobruca-2 Q)"
-
-#: ../rules/base.xml.in.h:170
-msgid "Crimean Tatar (Turkish Alt-Q)"
-msgstr "Крым татардык (түрк Alt-Q)"
-
-#: ../rules/base.xml.in.h:171
-msgid "Crimean Tatar (Turkish F)"
-msgstr "Крым татардык (түрк F)"
-
-#: ../rules/base.xml.in.h:172
-msgid "Crimean Tatar (Turkish Q)"
-msgstr "Крым татардык (түрк Q)"
-
-#: ../rules/base.xml.in.h:173
-msgid "Croatia"
-msgstr "ХорватиÑ"
-
-#: ../rules/base.xml.in.h:174
-msgid "Ctrl key position"
-msgstr "Ctrl клавишанын жайгашууÑу"
-
-#: ../rules/base.xml.in.h:175
-msgid "Ctrl+Shift"
-msgstr "Ctrl+Shift"
-
-#: ../rules/base.xml.in.h:176
-msgid "Cyrillic"
-msgstr "Кириллица"
-
-#: ../rules/base.xml.in.h:177
-msgid "Cyrillic with guillemets"
-msgstr ""
-
-#: ../rules/base.xml.in.h:178
-msgid "Cyrillic, Z and ZHE swapped"
-msgstr "Кирилл, З жана Ж орундарын алмаштырган"
-
-#: ../rules/base.xml.in.h:179
-msgid "Cze"
-msgstr "Чех"
-
-#: ../rules/base.xml.in.h:180
-msgid "Czechia"
-msgstr "ЧехиÑ"
-
-#: ../rules/base.xml.in.h:181
-msgid "DOS"
-msgstr "DOS"
-
-#: ../rules/base.xml.in.h:182
-msgid "DRC"
-msgstr "DRC"
-
-#: ../rules/base.xml.in.h:183
-msgid "DTK2000"
-msgstr "DTK2000"
-
-#: ../rules/base.xml.in.h:184
-msgid "Dan"
-msgstr "Дан"
-
-#: ../rules/base.xml.in.h:185
-msgid "Dead acute"
-msgstr "Dead acute атайын Ñимволу"
-
-#: ../rules/base.xml.in.h:186
-msgid "Dead grave acute"
-msgstr "Dead grave acute атайын Ñимволу"
-
-#: ../rules/base.xml.in.h:187
-msgid "Default numeric keypad keys"
-msgstr ""
-
-#: ../rules/base.xml.in.h:188
-msgid "Dell"
-msgstr "Dell"
-
-#: ../rules/base.xml.in.h:189
-msgid "Dell 101-key PC"
-msgstr "Dell 101-клавиша менен PC"
-
-#: ../rules/base.xml.in.h:190
-msgid "Dell Laptop/notebook Inspiron 6xxx/8xxx"
-msgstr "Dell Inspiron 6xxx/8xxx ноутбугу"
-
-#: ../rules/base.xml.in.h:191
-msgid "Dell Laptop/notebook Precision M series"
-msgstr "Dell Precision M ÑериÑлуу ноутбугу"
-
-#: ../rules/base.xml.in.h:192
-msgid "Dell Latitude series laptop"
-msgstr "Dell Latitude ÑериÑлуу ноутбугу"
-
-#: ../rules/base.xml.in.h:193
-msgid "Dell Precision M65"
-msgstr "Dell Precision M65"
-
-#: ../rules/base.xml.in.h:194
-msgid "Dell SK-8125"
-msgstr "Dell SK-8125"
-
-#: ../rules/base.xml.in.h:195
-msgid "Dell SK-8135"
-msgstr "Dell SK-8135"
-
-#: ../rules/base.xml.in.h:196
-msgid "Dell USB Multimedia Keyboard"
-msgstr "Dell USB Multimedia Keyboard"
-
-#: ../rules/base.xml.in.h:197
-msgid "Denmark"
-msgstr "ДаниÑ"
-
-#: ../rules/base.xml.in.h:198
-msgid "Deu"
-msgstr "Ðем"
-
-#: ../rules/base.xml.in.h:199
-msgid "Dexxa Wireless Desktop Keyboard"
-msgstr "Dexxa Wireless Desktop Keyboard"
-
-#: ../rules/base.xml.in.h:200
-msgid "Diamond 9801 / 9802 series"
-msgstr "Diamond 9801 / 9802 ÑериÑлары"
-
-#: ../rules/base.xml.in.h:201
-msgid "Dvorak"
-msgstr "Дровак"
-
-#: ../rules/base.xml.in.h:202
-msgid "Dvorak (UK Punctuation)"
-msgstr ""
-
-#: ../rules/base.xml.in.h:203
-msgid "Dvorak international"
-msgstr ""
-
-#: ../rules/base.xml.in.h:204
-msgid "Dvorak, Polish quotes on key 1"
-msgstr ""
-
-#: ../rules/base.xml.in.h:205
-msgid "Dvorak, Polish quotes on quotemark key"
-msgstr ""
-
-#: ../rules/base.xml.in.h:206
-msgid "E"
-msgstr "E"
-
-#: ../rules/base.xml.in.h:207
-msgid "Eastern"
-msgstr "Чыгыш"
-
-#: ../rules/base.xml.in.h:208
-msgid "Eliminate dead keys"
-msgstr ""
-
-#: ../rules/base.xml.in.h:209
-msgid "Enable extra typographic characters"
-msgstr ""
-
-#: ../rules/base.xml.in.h:210
-msgid "English"
-msgstr "ÐнглиÑ"
-
-#: ../rules/base.xml.in.h:211
-msgid "Ennyah DKB-1008"
-msgstr "Ennyah DKB-1008"
-
-#: ../rules/base.xml.in.h:212
-msgid "Enter on keypad"
-msgstr "Enter Ñандык клавиатураÑында"
-
-#: ../rules/base.xml.in.h:213
-msgid "Epo"
-msgstr "ЭÑп"
-
-#: ../rules/base.xml.in.h:214
-msgid "Ergonomic"
-msgstr "Ergonomic"
-
-#: ../rules/base.xml.in.h:215
-msgid "Esp"
-msgstr "ИÑп"
-
-#: ../rules/base.xml.in.h:216
-msgid "Esperanto"
-msgstr "ЭÑперанто"
-
-#: ../rules/base.xml.in.h:217
-msgid "Est"
-msgstr "ЭÑÑ‚"
-
-#: ../rules/base.xml.in.h:218
-msgid "Estonia"
-msgstr "ЭÑтониÑ"
-
-#: ../rules/base.xml.in.h:219
-msgid "Eth"
-msgstr "Эфп"
-
-#: ../rules/base.xml.in.h:220
-msgid "Ethiopia"
-msgstr "ЭфиопиÑ"
-
-#: ../rules/base.xml.in.h:221
-msgid "Evdev-managed keyboard"
-msgstr ""
-
-#: ../rules/base.xml.in.h:222
-msgid "Everex STEPnote"
-msgstr "Everex STEPnote"
-
-#: ../rules/base.xml.in.h:223
-msgid "Ewe"
-msgstr "Эве"
-
-#: ../rules/base.xml.in.h:224
-msgid "Extended"
-msgstr "Кеңейтилген"
-
-#: ../rules/base.xml.in.h:225
-msgid "Extended - Winkeys"
-msgstr ""
-
-#: ../rules/base.xml.in.h:226
-msgid "Extended Backslash"
-msgstr ""
-
-#: ../rules/base.xml.in.h:227
-msgid "F-letter (F) variant"
-msgstr ""
-
-#: ../rules/base.xml.in.h:228
-msgid "FL90"
-msgstr "FL90"
-
-#: ../rules/base.xml.in.h:229
-msgid "Fao"
-msgstr "Фар"
-
-#: ../rules/base.xml.in.h:230
-msgid "Faroe Islands"
-msgstr "Фаро аралдары"
-
-#: ../rules/base.xml.in.h:231
-msgid "Fin"
-msgstr "Фин"
-
-#: ../rules/base.xml.in.h:232
-msgid "Finland"
-msgstr "ФинлÑндиÑ"
-
-#. This assumes the KP_ abstract symbols are actually useful for some apps
-#. The description needs to be rewritten
-#: ../rules/base.xml.in.h:235
-msgid "Four-level key with abstract separators"
-msgstr ""
-
-#: ../rules/base.xml.in.h:236
-msgid "Four-level key with comma"
-msgstr ""
-
-#: ../rules/base.xml.in.h:237
-msgid "Four-level key with dot"
-msgstr ""
-
-#: ../rules/base.xml.in.h:238
-msgid "Four-level key with dot, latin-9 restriction"
-msgstr ""
-
-#: ../rules/base.xml.in.h:239
-msgid "Four-level key with momayyez"
-msgstr ""
-
-#: ../rules/base.xml.in.h:240
-msgid "Fra"
-msgstr "Фра"
-
-#: ../rules/base.xml.in.h:241
-msgid "France"
-msgstr "ФранциÑ"
-
-#: ../rules/base.xml.in.h:242
-msgid "French"
-msgstr "Француз"
-
-#: ../rules/base.xml.in.h:243
-msgid "French (Macintosh)"
-msgstr "Француз (Macintosh)"
-
-#: ../rules/base.xml.in.h:244
-msgid "French (legacy)"
-msgstr ""
-
-#: ../rules/base.xml.in.h:245
-msgid "French Dvorak"
-msgstr "Француз Dvorak"
-
-#: ../rules/base.xml.in.h:246
-msgid "French, Sun dead keys"
-msgstr "Француз,атайын (dead keys) Sun клавишалары менен"
-
-#: ../rules/base.xml.in.h:247
-msgid "French, eliminate dead keys"
-msgstr ""
-
-#: ../rules/base.xml.in.h:248
-msgid "Fujitsu-Siemens Computers AMILO laptop"
-msgstr "Fujitsu-Siemens Computers AMILO laptop"
-
-#: ../rules/base.xml.in.h:249
-msgid "Fula"
-msgstr "Фула"
-
-#: ../rules/base.xml.in.h:250
-msgid "GBr"
-msgstr "Брит"
-
-#: ../rules/base.xml.in.h:251
-msgid "Ga"
-msgstr "Га"
-
-#: ../rules/base.xml.in.h:252
-msgid "Generic 101-key PC"
-msgstr "Жалпы 101-клавишалары менен PC"
-
-#: ../rules/base.xml.in.h:253
-msgid "Generic 102-key (Intl) PC"
-msgstr "Жалпы 102-клавишалары менен (Инт.) PC"
-
-#: ../rules/base.xml.in.h:254
-msgid "Generic 104-key PC"
-msgstr "Жалпы 104-клавишалары менен PC"
-
-#: ../rules/base.xml.in.h:255
-msgid "Generic 105-key (Intl) PC"
-msgstr "Жалпы 105-клавишалары менен (Инт.) PC"
-
-#: ../rules/base.xml.in.h:256
-msgid "Genius Comfy KB-12e"
-msgstr "Genius Comfy KB-12e"
-
-#: ../rules/base.xml.in.h:257
-msgid "Genius Comfy KB-16M / Genius MM Keyboard KWD-910"
-msgstr "Genius Comfy KB-16M / Genius MM Keyboard KWD-910"
-
-#: ../rules/base.xml.in.h:258
-msgid "Genius Comfy KB-21e-Scroll"
-msgstr "Genius Comfy KB-21e-Scroll"
-
-#: ../rules/base.xml.in.h:259
-msgid "Genius KB-19e NB"
-msgstr "Genius KB-19e NB"
-
-#: ../rules/base.xml.in.h:260
-msgid "Genius KKB-2050HS"
-msgstr "Genius KKB-2050HS"
-
-#: ../rules/base.xml.in.h:261
-msgid "Geo"
-msgstr "Груз"
-
-#: ../rules/base.xml.in.h:262
-msgid "Georgia"
-msgstr "ГрузиÑ"
-
-#: ../rules/base.xml.in.h:263
-msgid "Georgian"
-msgstr "Грузиндик"
-
-#: ../rules/base.xml.in.h:264
-msgid "Georgian AZERTY Tskapo"
-msgstr "Грузин AZERTY Tskapo"
-
-#: ../rules/base.xml.in.h:265
-msgid "German (Macintosh)"
-msgstr "Ðемец (Macintosh)"
-
-#: ../rules/base.xml.in.h:266
-msgid "German, Sun dead keys"
-msgstr "Ðемец, атайын (dead keys) Sun клавишалары менен"
-
-#: ../rules/base.xml.in.h:267
-msgid "German, eliminate dead keys"
-msgstr ""
-
-#: ../rules/base.xml.in.h:268
-msgid "Germany"
-msgstr "ГерманиÑ"
-
-#: ../rules/base.xml.in.h:269
-msgid "Gha"
-msgstr "Ган"
-
-#: ../rules/base.xml.in.h:270
-msgid "Ghana"
-msgstr "Гана"
-
-#: ../rules/base.xml.in.h:271
-msgid "Gre"
-msgstr "Гре"
-
-#: ../rules/base.xml.in.h:272
-msgid "Greece"
-msgstr "ГрециÑ"
-
-#: ../rules/base.xml.in.h:273
-msgid "Group toggle on multiply/divide key"
-msgstr ""
-
-#: ../rules/base.xml.in.h:274
-msgid "Gui"
-msgstr "Гви"
-
-#: ../rules/base.xml.in.h:275
-msgid "Guinea"
-msgstr "ГвинеÑ"
-
-#: ../rules/base.xml.in.h:276
-msgid "Gujarati"
-msgstr "Гуджарати"
-
-#: ../rules/base.xml.in.h:277
-msgid "Gurmukhi"
-msgstr "Гурмукхи"
-
-#: ../rules/base.xml.in.h:278
-msgid "Gurmukhi Jhelum"
-msgstr "Гурмукхи Jhelum"
-
-#: ../rules/base.xml.in.h:279
-msgid "Gyration"
-msgstr "Гирашн"
-
-#: ../rules/base.xml.in.h:280
-msgid "Happy Hacking Keyboard"
-msgstr ""
-
-#: ../rules/base.xml.in.h:281
-msgid "Happy Hacking Keyboard for Mac"
-msgstr ""
-
-#: ../rules/base.xml.in.h:282
-msgid "Hausa"
-msgstr "Хауза"
-
-#: ../rules/base.xml.in.h:283
-msgid "Hewlett-Packard Internet Keyboard"
-msgstr "Hewlett-Packard Internet Keyboard"
-
-#: ../rules/base.xml.in.h:284
-msgid "Hewlett-Packard Omnibook 500 FA"
-msgstr "Hewlett-Packard Omnibook 500 FA"
-
-#: ../rules/base.xml.in.h:285
-msgid "Hewlett-Packard Omnibook 5xx"
-msgstr "Hewlett-Packard Omnibook 5xx"
-
-#: ../rules/base.xml.in.h:286
-msgid "Hewlett-Packard Omnibook 6000/6100"
-msgstr "Hewlett-Packard Omnibook 6000/6100"
-
-#: ../rules/base.xml.in.h:287
-msgid "Hewlett-Packard Omnibook XE3 GC"
-msgstr "Hewlett-Packard Omnibook XE3 GC"
-
-#: ../rules/base.xml.in.h:288
-msgid "Hewlett-Packard Omnibook XE3 GF"
-msgstr "Hewlett-Packard Omnibook XE3 GF"
-
-#: ../rules/base.xml.in.h:289
-msgid "Hewlett-Packard Omnibook XT1000"
-msgstr "Hewlett-Packard Omnibook XT1000"
-
-#: ../rules/base.xml.in.h:290
-msgid "Hewlett-Packard Pavilion ZT11xx"
-msgstr "Hewlett-Packard Pavilion ZT11xx"
-
-#: ../rules/base.xml.in.h:291
-msgid "Hewlett-Packard Pavilion dv5"
-msgstr "Hewlett-Packard Pavilion dv5"
-
-#: ../rules/base.xml.in.h:292
-msgid "Hewlett-Packard SK-250x Multimedia Keyboard"
-msgstr "Hewlett-Packard SK-250x Multimedia Keyboard"
-
-#: ../rules/base.xml.in.h:293
-msgid "Hewlett-Packard nx9020"
-msgstr "Hewlett-Packard nx9020"
-
-#: ../rules/base.xml.in.h:294
-msgid "Hexadecimal"
-msgstr ""
-
-#: ../rules/base.xml.in.h:295
-msgid "Hindi Bolnagri"
-msgstr "Хинди Болнагри"
-
-#: ../rules/base.xml.in.h:296
-msgid "Hindi Wx"
-msgstr "Хинди Wx"
-
-#: ../rules/base.xml.in.h:297
-msgid "Homophonic"
-msgstr ""
-
-#: ../rules/base.xml.in.h:298
-msgid "Honeywell Euroboard"
-msgstr "Honeywell Euroboard"
-
-#: ../rules/base.xml.in.h:299
-msgid "Hrv"
-msgstr "Хорв"
-
-#: ../rules/base.xml.in.h:300
-msgid "Hun"
-msgstr "Венг"
-
-#: ../rules/base.xml.in.h:301
-msgid "Hungary"
-msgstr "ВенгриÑ"
-
-#: ../rules/base.xml.in.h:302
-msgid "Hyper is mapped to Win-keys"
-msgstr ""
-
-#: ../rules/base.xml.in.h:303
-msgid "IBM (LST 1205-92)"
-msgstr "IBM (LST 1205-92)"
-
-#: ../rules/base.xml.in.h:304
-msgid "IBM Rapid Access"
-msgstr "IBM Rapid Access"
-
-#: ../rules/base.xml.in.h:305
-msgid "IBM Rapid Access II"
-msgstr "IBM Rapid Access II"
-
-#: ../rules/base.xml.in.h:306
-msgid "IBM Space Saver"
-msgstr "IBM Space Saver"
-
-#: ../rules/base.xml.in.h:307
-msgid "IBM ThinkPad 560Z/600/600E/A22E"
-msgstr "IBM ThinkPad 560Z/600/600E/A22E"
-
-#: ../rules/base.xml.in.h:308
-msgid "IBM ThinkPad 560Z/600/600E/A22E, Intl"
-msgstr "IBM ThinkPad 560Z/600/600E/A22E, Intl"
-
-#: ../rules/base.xml.in.h:309
-msgid "IBM ThinkPad R60/T60/R61/T61"
-msgstr "IBM ThinkPad R60/T60/R61/T61"
-
-#: ../rules/base.xml.in.h:310
-msgid "IBM ThinkPad Z60m/Z60t/Z61m/Z61t"
-msgstr "IBM ThinkPad Z60m/Z60t/Z61m/Z61t"
-
-#: ../rules/base.xml.in.h:311
-msgid "ISO Alternate"
-msgstr "Кошумча ISO"
-
-#: ../rules/base.xml.in.h:312
-msgid "Iceland"
-msgstr "ИÑландиÑ"
-
-#: ../rules/base.xml.in.h:313
-msgid "Igbo"
-msgstr "Igbo"
-
-#: ../rules/base.xml.in.h:314
-msgid "Include dead tilde"
-msgstr ""
-
-#: ../rules/base.xml.in.h:315
-msgid "Ind"
-msgstr "Инд"
-
-#: ../rules/base.xml.in.h:316
-msgid "India"
-msgstr "ИндиÑ"
-
-#: ../rules/base.xml.in.h:317
-msgid "International (AltGr dead keys)"
-msgstr ""
-
-#: ../rules/base.xml.in.h:318
-msgid "International (with dead keys)"
-msgstr ""
-
-#: ../rules/base.xml.in.h:319
-msgid "Inuktitut"
-msgstr "ИннуитÑкаÑ"
-
-#: ../rules/base.xml.in.h:320
-msgid "Iran"
-msgstr "Иран"
-
-#: ../rules/base.xml.in.h:321
-msgid "Iraq"
-msgstr "Ирак"
-
-#: ../rules/base.xml.in.h:322
-msgid "Ireland"
-msgstr "ИрландиÑ"
-
-#: ../rules/base.xml.in.h:323
-msgid "Irl"
-msgstr "Ирл"
-
-#: ../rules/base.xml.in.h:324
-msgid "Irn"
-msgstr "ФарÑ"
-
-#: ../rules/base.xml.in.h:325
-msgid "Irq"
-msgstr "Ирк"
-
-#: ../rules/base.xml.in.h:326
-msgid "Isl"
-msgstr "ИÑл"
-
-#: ../rules/base.xml.in.h:327
-msgid "Isr"
-msgstr "Ивр"
-
-#: ../rules/base.xml.in.h:328
-msgid "Israel"
-msgstr "Израиль"
-
-#: ../rules/base.xml.in.h:329
-msgid "Ita"
-msgstr "Ит"
-
-#: ../rules/base.xml.in.h:330
-msgid "Italy"
-msgstr "ИталиÑ"
-
-#: ../rules/base.xml.in.h:331
-msgid "Japan"
-msgstr "ЯпониÑ"
-
-#: ../rules/base.xml.in.h:332
-msgid "Japan (PC-98xx Series)"
-msgstr "Japan (PC-98xx Series)"
-
-#: ../rules/base.xml.in.h:333
-msgid "Japanese keyboard options"
-msgstr ""
-
-#: ../rules/base.xml.in.h:334
-msgid "Jpn"
-msgstr "Яп"
-
-#: ../rules/base.xml.in.h:335
-msgid "Kalmyk"
-msgstr "Калмык"
-
-#: ../rules/base.xml.in.h:336
-msgid "Kana"
-msgstr "Кана"
-
-#: ../rules/base.xml.in.h:337
-msgid "Kana Lock key is locking"
-msgstr ""
-
-#: ../rules/base.xml.in.h:338
-msgid "Kannada"
-msgstr "Каннада"
-
-#: ../rules/base.xml.in.h:339
-msgid "Kashubian"
-msgstr "Кашуб"
-
-#: ../rules/base.xml.in.h:340
-msgid "Kaz"
-msgstr "Каз"
-
-#: ../rules/base.xml.in.h:341
-msgid "Kazakh with Russian"
-msgstr "Казакча ОруÑча менен"
-
-#: ../rules/base.xml.in.h:342
-msgid "Kazakhstan"
-msgstr "КазахÑтан"
-
-#: ../rules/base.xml.in.h:343
-msgid "Key sequence to kill the X server"
-msgstr ""
-
-#: ../rules/base.xml.in.h:344
-msgid "Key to choose 3rd level"
-msgstr "3-чү денгÑÑлди тандоо баÑкычы"
-
-#: ../rules/base.xml.in.h:345
-msgid "Key(s) to change layout"
-msgstr ""
-
-#: ../rules/base.xml.in.h:346
-msgid "Keytronic FlexPro"
-msgstr "Keytronic FlexPro"
-
-#: ../rules/base.xml.in.h:347
-msgid "Kgz"
-msgstr "Кгз"
-
-#: ../rules/base.xml.in.h:348
-msgid "Khm"
-msgstr "Кхм"
-
-#: ../rules/base.xml.in.h:349
-msgid "Komi"
-msgstr "Коми"
-
-#: ../rules/base.xml.in.h:350
-msgid "Kor"
-msgstr "Кор"
-
-#: ../rules/base.xml.in.h:351
-msgid "Korea, Republic of"
-msgstr "ÐšÐ¾Ñ€ÐµÑ Ð ÐµÑпубликаÑÑ‹"
-
-#: ../rules/base.xml.in.h:352
-msgid "Ktunaxa"
-msgstr "Кутенай"
-
-#: ../rules/base.xml.in.h:353
-msgid "Kurdish, (F)"
-msgstr "Курд, (F)"
-
-#: ../rules/base.xml.in.h:354
-msgid "Kurdish, Arabic-Latin"
-msgstr "Курд, араб-латын"
-
-#: ../rules/base.xml.in.h:355
-msgid "Kurdish, Latin Alt-Q"
-msgstr "Курд, латын Alt-Q"
-
-#: ../rules/base.xml.in.h:356
-msgid "Kurdish, Latin Q"
-msgstr "Курд, латын Q"
-
-#: ../rules/base.xml.in.h:357
-msgid "Kyrgyzstan"
-msgstr "КыргызÑтан"
-
-#: ../rules/base.xml.in.h:358
-msgid "LAm"
-msgstr "ЛатÐм"
-
-#: ../rules/base.xml.in.h:359
-msgid "LEKP"
-msgstr "LEKP"
-
-#: ../rules/base.xml.in.h:360
-msgid "LEKPa"
-msgstr "LEKPa"
-
-#: ../rules/base.xml.in.h:361
-msgid "Lao"
-msgstr "Лао"
-
-#: ../rules/base.xml.in.h:362
-msgid "Laos"
-msgstr "ЛаоÑ"
-
-#: ../rules/base.xml.in.h:363
-msgid "Laptop/notebook Compaq (eg. Armada) Laptop Keyboard"
-msgstr ""
-
-#: ../rules/base.xml.in.h:364
-msgid "Laptop/notebook Compaq (eg. Presario) Internet Keyboard"
-msgstr ""
-
-#: ../rules/base.xml.in.h:365
-msgid "Laptop/notebook eMachines m68xx"
-msgstr ""
-
-#: ../rules/base.xml.in.h:366
-msgid "Latin"
-msgstr "Латын"
-
-#: ../rules/base.xml.in.h:367
-msgid "Latin American"
-msgstr "Латын американдык"
-
-#: ../rules/base.xml.in.h:368
-msgid "Latin Unicode"
-msgstr "Латын Unicode"
-
-#: ../rules/base.xml.in.h:369
-msgid "Latin Unicode qwerty"
-msgstr "Латын Unicode qwerty"
-
-#: ../rules/base.xml.in.h:370
-msgid "Latin qwerty"
-msgstr "Латын qwerty"
-
-#: ../rules/base.xml.in.h:371
-msgid "Latin unicode"
-msgstr "Латын unicode"
-
-#: ../rules/base.xml.in.h:372
-msgid "Latin unicode qwerty"
-msgstr "Латын unicode qwerty"
-
-#: ../rules/base.xml.in.h:373
-msgid "Latin with guillemets"
-msgstr ""
-
-#: ../rules/base.xml.in.h:374
-msgid "Latvia"
-msgstr "ЛатвиÑ"
-
-#: ../rules/base.xml.in.h:375
-msgid "Lav"
-msgstr "Лат"
-
-#: ../rules/base.xml.in.h:376
-msgid "Left Alt"
-msgstr "Сол Alt"
-
-#: ../rules/base.xml.in.h:377
-msgid "Left Alt (while pressed)"
-msgstr "Сол Alt клавишаÑÑ‹ (баÑылган учурда)"
-
-#: ../rules/base.xml.in.h:378
-msgid "Left Alt is swapped with Left Win"
-msgstr ""
-
-#: ../rules/base.xml.in.h:379
-msgid "Left Ctrl"
-msgstr "Сол Ctrl"
-
-#: ../rules/base.xml.in.h:380
-msgid "Left Ctrl+Left Shift"
-msgstr ""
-
-#: ../rules/base.xml.in.h:381
-msgid "Left Shift"
-msgstr "Сол Shift"
-
-#: ../rules/base.xml.in.h:382
-msgid "Left Win"
-msgstr "Сол Win"
-
-#: ../rules/base.xml.in.h:383
-msgid "Left Win (to first layout), Right Win/Menu (to last layout)"
-msgstr ""
-
-#: ../rules/base.xml.in.h:384
-msgid "Left Win (while pressed)"
-msgstr "Сол Alt клавишаÑÑ‹ (баÑылган учурда)"
-
-#: ../rules/base.xml.in.h:385
-msgid "Left hand"
-msgstr ""
-
-#: ../rules/base.xml.in.h:386
-msgid "Left handed Dvorak"
-msgstr ""
-
-#: ../rules/base.xml.in.h:387
-msgid "Legacy"
-msgstr "Legacy"
-
-#: ../rules/base.xml.in.h:388
-msgid "Legacy Wang 724"
-msgstr ""
-
-#. Actually, with KP_SEPARATOR, as the old keypad(comma)
-#: ../rules/base.xml.in.h:390
-msgid "Legacy key with comma"
-msgstr ""
-
-#: ../rules/base.xml.in.h:391
-msgid "Legacy key with dot"
-msgstr ""
-
-#: ../rules/base.xml.in.h:392
-msgid "Less-than/Greater-than"
-msgstr ""
-
-#: ../rules/base.xml.in.h:393
-msgid "Lithuania"
-msgstr "Литва"
-
-#: ../rules/base.xml.in.h:394
-msgid "Logitech Access Keyboard"
-msgstr "Logitech Access Keyboard"
-
-#: ../rules/base.xml.in.h:395
-msgid "Logitech Cordless Desktop"
-msgstr "Logitech Cordless Desktop"
-
-#: ../rules/base.xml.in.h:396
-msgid "Logitech Cordless Desktop (alternate option)"
-msgstr "Logitech Cordless Desktop (альтернативдик вариант)"
-
-#: ../rules/base.xml.in.h:397
-msgid "Logitech Cordless Desktop EX110"
-msgstr "Logitech Cordless Desktop EX110"
-
-#: ../rules/base.xml.in.h:398
-msgid "Logitech Cordless Desktop LX-300"
-msgstr "Logitech Cordless Desktop LX-300"
-
-#: ../rules/base.xml.in.h:399
-msgid "Logitech Cordless Desktop Navigator"
-msgstr "Logitech Cordless Desktop Navigator"
-
-#: ../rules/base.xml.in.h:400
-msgid "Logitech Cordless Desktop Optical"
-msgstr "Logitech Cordless Desktop Optical"
-
-#: ../rules/base.xml.in.h:401
-msgid "Logitech Cordless Desktop Pro (alternate option 2)"
-msgstr "Logitech Cordless Desktop Pro (альтернативдик вариант 2)"
-
-#: ../rules/base.xml.in.h:402
-msgid "Logitech Cordless Desktop iTouch"
-msgstr "Logitech Cordless Desktop iTouch"
-
-#: ../rules/base.xml.in.h:403
-msgid "Logitech Cordless Freedom/Desktop Navigator"
-msgstr "Logitech Cordless Freedom/Desktop Navigator"
-
-#: ../rules/base.xml.in.h:404
-msgid "Logitech G15 extra keys via G15daemon"
-msgstr "Logitech G15 extra keys via G15daemon"
-
-#: ../rules/base.xml.in.h:405
-msgid "Logitech Generic Keyboard"
-msgstr "Logitech Generic Keyboard"
-
-#: ../rules/base.xml.in.h:406
-msgid "Logitech Internet 350 Keyboard"
-msgstr "Logitech Internet 350 Keyboard"
-
-#: ../rules/base.xml.in.h:407
-msgid "Logitech Internet Keyboard"
-msgstr "Logitech Internet Keyboard"
-
-#: ../rules/base.xml.in.h:408
-msgid "Logitech Internet Navigator Keyboard"
-msgstr "Logitech Internet Navigator Keyboard"
-
-#: ../rules/base.xml.in.h:409
-msgid "Logitech Media Elite Keyboard"
-msgstr "Logitech Media Elite Keyboard"
-
-#: ../rules/base.xml.in.h:410
-msgid "Logitech Ultra-X Cordless Media Desktop Keyboard"
-msgstr "Logitech Ultra-X Cordless Media Desktop Keyboard"
-
-#: ../rules/base.xml.in.h:411
-msgid "Logitech Ultra-X Keyboard"
-msgstr "Logitech Ultra-X Keyboard"
-
-#: ../rules/base.xml.in.h:412
-msgid "Logitech diNovo Edge Keyboard"
-msgstr "Logitech diNovo Edge Keyboard"
-
-#: ../rules/base.xml.in.h:413
-msgid "Logitech diNovo Keyboard"
-msgstr "Logitech diNovo Keyboard"
-
-#: ../rules/base.xml.in.h:414
-msgid "Logitech iTouch"
-msgstr "Logitech iTouch"
-
-#: ../rules/base.xml.in.h:415
-msgid "Logitech iTouch Cordless Keyboard (model Y-RB6)"
-msgstr "Logitech iTouch Cordless Keyboard (Y-RB6 модели)"
-
-#: ../rules/base.xml.in.h:416
-msgid "Logitech iTouch Internet Navigator Keyboard SE"
-msgstr "Logitech iTouch Internet Navigator Keyboard SE"
-
-#: ../rules/base.xml.in.h:417
-msgid "Logitech iTouch Internet Navigator Keyboard SE (USB)"
-msgstr "Logitech iTouch Internet Navigator Keyboard SE (USB)"
-
-#: ../rules/base.xml.in.h:418
-msgid "Lower Sorbian"
-msgstr ""
-
-#: ../rules/base.xml.in.h:419
-msgid "Lower Sorbian (qwertz)"
-msgstr ""
-
-#: ../rules/base.xml.in.h:420
-msgid "Ltu"
-msgstr "Лит"
-
-#: ../rules/base.xml.in.h:421
-msgid "MESS"
-msgstr "MESS"
-
-#: ../rules/base.xml.in.h:422
-msgid "MNE"
-msgstr "MNE"
-
-#: ../rules/base.xml.in.h:423
-msgid "MacBook/MacBook Pro"
-msgstr "MacBook/MacBook Pro"
-
-#: ../rules/base.xml.in.h:424
-msgid "MacBook/MacBook Pro (Intl)"
-msgstr "MacBook/MacBook Pro (Инт.)"
-
-#: ../rules/base.xml.in.h:425
-msgid "Macedonia"
-msgstr "МакедониÑ"
-
-#: ../rules/base.xml.in.h:426
-msgid "Macintosh"
-msgstr "Macintosh"
-
-#: ../rules/base.xml.in.h:427
-msgid "Macintosh Old"
-msgstr "ЭÑки Macintosh"
-
-#: ../rules/base.xml.in.h:428
-msgid "Macintosh, Sun dead keys"
-msgstr "Macintosh, атайын (dead keys) Sun клавишалары менен"
-
-#: ../rules/base.xml.in.h:429
-msgid "Macintosh, eliminate dead keys"
-msgstr ""
-
-#: ../rules/base.xml.in.h:430
-msgid "Make CapsLock an additional Backspace"
-msgstr "CapsLock кошумча Боштук клавиша катары колдонуу"
-
-#: ../rules/base.xml.in.h:431
-msgid "Make CapsLock an additional Ctrl"
-msgstr "CapsLock кошумча Ctrl клавиша катары колдонуу"
-
-#: ../rules/base.xml.in.h:432
-msgid "Make CapsLock an additional ESC"
-msgstr "CapsLock кошумча ESC клавиша катары колдонуу"
-
-#: ../rules/base.xml.in.h:433
-msgid "Make CapsLock an additional Hyper"
-msgstr "CapsLock кошумча Hyper клавиша катары колдонуу"
-
-#: ../rules/base.xml.in.h:434
-msgid "Make CapsLock an additional NumLock"
-msgstr "CapsLock кошумча NumLock клавиша катары колдонуу"
-
-#: ../rules/base.xml.in.h:435
-msgid "Make CapsLock an additional Super"
-msgstr "CapsLock кошумча Super клавиша катары колдонуу"
-
-#: ../rules/base.xml.in.h:436
-msgid "Mal"
-msgstr "Мал"
-
-#: ../rules/base.xml.in.h:437
-msgid "Malayalam"
-msgstr "Малайaлам"
-
-#: ../rules/base.xml.in.h:438
-msgid "Malayalam Lalitha"
-msgstr "Малайaлам (Lalitha)"
-
-#: ../rules/base.xml.in.h:439
-msgid "Maldives"
-msgstr "Мальдивалар"
-
-#: ../rules/base.xml.in.h:440
-msgid "Malta"
-msgstr "Мальта"
-
-#: ../rules/base.xml.in.h:441
-msgid "Maltese keyboard with US layout"
-msgstr ""
-
-#: ../rules/base.xml.in.h:442
-msgid "Mao"
-msgstr "Мао"
-
-#: ../rules/base.xml.in.h:443
-msgid "Maori"
-msgstr "Маори"
-
-#: ../rules/base.xml.in.h:444
-msgid "Memorex MX1998"
-msgstr "Memorex MX1998"
-
-#: ../rules/base.xml.in.h:445
-msgid "Memorex MX2500 EZ-Access Keyboard"
-msgstr "Memorex MX2500 EZ-Access Keyboard"
-
-#: ../rules/base.xml.in.h:446
-msgid "Memorex MX2750"
-msgstr "Memorex MX2750"
-
-#: ../rules/base.xml.in.h:447
-msgid "Menu"
-msgstr "Menu"
-
-#: ../rules/base.xml.in.h:448
-msgid "Meta is mapped to Left Win"
-msgstr ""
-
-#: ../rules/base.xml.in.h:449
-msgid "Meta is mapped to Win keys"
-msgstr ""
-
-#: ../rules/base.xml.in.h:450
-msgid "Microsoft Comfort Curve Keyboard 2000"
-msgstr "Microsoft Comfort Curve Keyboard 2000"
-
-#: ../rules/base.xml.in.h:451
-msgid "Microsoft Internet Keyboard"
-msgstr "Microsoft Internet Keyboard"
-
-#: ../rules/base.xml.in.h:452
-msgid "Microsoft Internet Keyboard Pro, Swedish"
-msgstr "Microsoft Internet Keyboard Pro, швед"
-
-#: ../rules/base.xml.in.h:453
-msgid "Microsoft Natural"
-msgstr "Microsoft Natural"
-
-#: ../rules/base.xml.in.h:454
-msgid "Microsoft Natural Keyboard Elite"
-msgstr "Microsoft Natural Keyboard Elite"
-
-#: ../rules/base.xml.in.h:455
-msgid "Microsoft Natural Keyboard Pro / Microsoft Internet Keyboard Pro"
-msgstr "Microsoft Natural Keyboard Pro / Microsoft Internet Keyboard Pro"
-
-#: ../rules/base.xml.in.h:456
-msgid "Microsoft Natural Keyboard Pro OEM"
-msgstr "Microsoft Natural Keyboard Pro OEM"
-
-#: ../rules/base.xml.in.h:457
-msgid "Microsoft Natural Keyboard Pro USB / Microsoft Internet Keyboard Pro"
-msgstr "Microsoft Natural Keyboard Pro USB / Microsoft Internet Keyboard Pro"
-
-#: ../rules/base.xml.in.h:458
-msgid "Microsoft Natural Wireless Ergonomic Keyboard 7000"
-msgstr "Microsoft Natural Wireless Ergonomic Keyboard 7000"
-
-#: ../rules/base.xml.in.h:459
-msgid "Microsoft Office Keyboard"
-msgstr "Microsoft Office Keyboard"
-
-#: ../rules/base.xml.in.h:460
-msgid "Microsoft Wireless Multimedia Keyboard 1.0A"
-msgstr "Microsoft Wireless Multimedia Keyboard 1.0A"
-
-#: ../rules/base.xml.in.h:461
-msgid "Miscellaneous compatibility options"
-msgstr ""
-
-#: ../rules/base.xml.in.h:462
-msgid "Mkd"
-msgstr "Мак"
-
-#: ../rules/base.xml.in.h:463
-msgid "Mlt"
-msgstr "Мальт"
-
-#: ../rules/base.xml.in.h:464
-msgid "Mmr"
-msgstr "МьÑнм"
-
-#: ../rules/base.xml.in.h:465
-msgid "Mng"
-msgstr "Монг"
-
-#: ../rules/base.xml.in.h:466
-msgid "Mongolia"
-msgstr "МонголиÑ"
-
-#: ../rules/base.xml.in.h:467
-msgid "Montenegro"
-msgstr "ЧерногориÑ"
-
-#: ../rules/base.xml.in.h:468
-msgid "Morocco"
-msgstr "Морокко"
-
-#: ../rules/base.xml.in.h:469
-msgid "Multilingual"
-msgstr "Көп тилдүү"
-
-#: ../rules/base.xml.in.h:470
-msgid "Multilingual, first part"
-msgstr "Көп тилдүү, биринчи бөлүк"
-
-#: ../rules/base.xml.in.h:471
-msgid "Multilingual, second part"
-msgstr "Көп тилдүү, Ñкинчи бөлүк"
-
-#: ../rules/base.xml.in.h:472
-msgid "Myanmar"
-msgstr "МьÑнмар"
-
-#: ../rules/base.xml.in.h:473
-msgid "NICOLA-F style Backspace"
-msgstr ""
-
-#: ../rules/base.xml.in.h:474
-msgid "NLA"
-msgstr "NLA"
-
-#: ../rules/base.xml.in.h:475
-msgid "Nativo"
-msgstr "Nativo"
-
-#: ../rules/base.xml.in.h:476
-msgid "Nativo for Esperanto"
-msgstr "Nativo ÑÑперанто үчүн"
-
-#: ../rules/base.xml.in.h:477
-msgid "Nativo for USA keyboards"
-msgstr ""
-
-#: ../rules/base.xml.in.h:478
-msgid "Neo 2"
-msgstr "Neo 2"
-
-#: ../rules/base.xml.in.h:479
-msgid "Nep"
-msgstr "Ðеп"
-
-#: ../rules/base.xml.in.h:480
-msgid "Nepal"
-msgstr "Ðепал"
-
-#: ../rules/base.xml.in.h:481
-msgid "Netherlands"
-msgstr "ÐидерландиÑ"
-
-#: ../rules/base.xml.in.h:482
-msgid "New phonetic"
-msgstr "Жаңы фонетикалык"
-
-#: ../rules/base.xml.in.h:483
-msgid "Nig"
-msgstr "Ðгр"
-
-#: ../rules/base.xml.in.h:484
-msgid "Nigeria"
-msgstr "ÐигериÑ"
-
-#: ../rules/base.xml.in.h:485
-msgid "Nld"
-msgstr "Флам"
-
-#: ../rules/base.xml.in.h:486
-msgid "Non-breakable space character at fourth level"
-msgstr ""
-
-#: ../rules/base.xml.in.h:487
-msgid "Non-breakable space character at fourth level, thin non-breakable space character at sixth level"
-msgstr ""
-
-#: ../rules/base.xml.in.h:488
-msgid "Non-breakable space character at fourth level, thin non-breakable space character at sixth level (via Ctrl+Shift)"
-msgstr ""
-
-#: ../rules/base.xml.in.h:489
-msgid "Non-breakable space character at second level"
-msgstr ""
-
-#: ../rules/base.xml.in.h:490
-msgid "Non-breakable space character at third level"
-msgstr ""
-
-#: ../rules/base.xml.in.h:491
-msgid "Non-breakable space character at third level, nothing at fourth level"
-msgstr ""
-
-#: ../rules/base.xml.in.h:492
-msgid "Non-breakable space character at third level, thin non-breakable space character at fourth level"
-msgstr ""
-
-#: ../rules/base.xml.in.h:493
-msgid "Nor"
-msgstr "Ðор"
-
-#: ../rules/base.xml.in.h:494
-msgid "Northern Saami"
-msgstr "Түндүк Саами"
-
-#: ../rules/base.xml.in.h:495
-msgid "Northern Saami, eliminate dead keys"
-msgstr ""
-
-#: ../rules/base.xml.in.h:496
-msgid "Northgate OmniKey 101"
-msgstr "Northgate OmniKey 101"
-
-#: ../rules/base.xml.in.h:497
-msgid "Norway"
-msgstr "ÐорвегиÑ"
-
-#: ../rules/base.xml.in.h:498
-msgid "NumLock"
-msgstr "NumLock"
-
-#: ../rules/base.xml.in.h:499
-msgid "Numeric keypad delete key behaviour"
-msgstr ""
-
-#: ../rules/base.xml.in.h:500
-msgid "Numeric keypad keys work as with Mac"
-msgstr ""
-
-#: ../rules/base.xml.in.h:501
-msgid "Numeric keypad layout selection"
-msgstr ""
-
-#: ../rules/base.xml.in.h:502
-msgid "OADG 109A"
-msgstr "OADG 109A"
-
-#: ../rules/base.xml.in.h:503
-msgid "OLPC"
-msgstr "OLPC"
-
-#: ../rules/base.xml.in.h:504
-msgid "OLPC Dari"
-msgstr "OLPC Dari"
-
-#: ../rules/base.xml.in.h:505
-msgid "OLPC Pashto"
-msgstr "OLPC Pashto"
-
-#: ../rules/base.xml.in.h:506
-msgid "OLPC Southern Uzbek"
-msgstr "Түштүк-өзбөк OLPC"
-
-#: ../rules/base.xml.in.h:507
-msgid "Occitan"
-msgstr "ОкÑитандык"
-
-#: ../rules/base.xml.in.h:508
-msgid "Ogham"
-msgstr "Огхам"
-
-#: ../rules/base.xml.in.h:509
-msgid "Ogham IS434"
-msgstr "Огхам IS434"
-
-#: ../rules/base.xml.in.h:510
-msgid "Oriya"
-msgstr "ОрийÑ"
-
-#: ../rules/base.xml.in.h:511
-msgid "Ortek MCK-800 MM/Internet keyboard"
-msgstr "Ortek MCK-800 MM/Internet keyboard"
-
-#: ../rules/base.xml.in.h:512
-msgid "Ossetian"
-msgstr "ОÑетиндик"
-
-#: ../rules/base.xml.in.h:513
-msgid "Ossetian, Winkeys"
-msgstr "ОÑетиндик Windows клавиатураÑÑ‹"
-
-#: ../rules/base.xml.in.h:514
-msgid "Ossetian, legacy"
-msgstr "ОÑетиндик, ÑÑкирген"
-
-#: ../rules/base.xml.in.h:515
-msgid "PC-98xx Series"
-msgstr "PC-98xx"
-
-#: ../rules/base.xml.in.h:516
-msgid "Pak"
-msgstr "Пак"
-
-#: ../rules/base.xml.in.h:517
-msgid "Pakistan"
-msgstr "ПакиÑтан"
-
-#: ../rules/base.xml.in.h:518
-msgid "Pashto"
-msgstr "Пуштундук"
-
-#: ../rules/base.xml.in.h:519
-msgid "Pattachote"
-msgstr "Паттачот"
-
-#: ../rules/base.xml.in.h:520
-msgid "Persian, with Persian Keypad"
-msgstr ""
-
-#: ../rules/base.xml.in.h:521
-msgid "Phonetic"
-msgstr "Фонетикалык"
-
-#: ../rules/base.xml.in.h:522
-msgid "Phonetic Winkeys"
-msgstr "Win клавишалары менен фонетикалык"
-
-#: ../rules/base.xml.in.h:523
-msgid "Pol"
-msgstr "ПольÑк"
-
-#: ../rules/base.xml.in.h:524
-msgid "Poland"
-msgstr "Польша"
-
-#: ../rules/base.xml.in.h:525
-msgid "Polytonic"
-msgstr "Полифоникалык"
-
-#: ../rules/base.xml.in.h:526
-msgid "Portugal"
-msgstr "ПортугалиÑ"
-
-#: ../rules/base.xml.in.h:527
-msgid "Probhat"
-msgstr "Пробат"
-
-#: ../rules/base.xml.in.h:528
-msgid "Programmer Dvorak"
-msgstr ""
-
-#: ../rules/base.xml.in.h:529
-msgid "Propeller Voyager (KTEZ-1000)"
-msgstr "Propeller Voyager (KTEZ-1000)"
-
-#: ../rules/base.xml.in.h:530
-msgid "Prt"
-msgstr "Порт"
-
-#: ../rules/base.xml.in.h:531
-msgid "QTronix Scorpius 98N+"
-msgstr "QTronix Scorpius 98N+"
-
-#: ../rules/base.xml.in.h:532
-msgid "Right Alt"
-msgstr "Оң Alt"
-
-#: ../rules/base.xml.in.h:533
-msgid "Right Alt (while pressed)"
-msgstr "Оң Alt клавишаÑÑ‹ (баÑылган учурда)"
-
-#: ../rules/base.xml.in.h:534
-msgid "Right Alt key never chooses 3rd level"
-msgstr "Оң Alt клавишаÑÑ‹ Ñч качан 3-чү денгÑÑлди тандабайт"
-
-#: ../rules/base.xml.in.h:535
-msgid "Right Alt, Shift+Right Alt key is Multi_Key"
-msgstr "Оң Alt, Shift жана оң Alt бирге Multi_Key катары амал жаÑайт"
-
-#: ../rules/base.xml.in.h:536
-msgid "Right Ctrl"
-msgstr "Оң Ctrl"
-
-#: ../rules/base.xml.in.h:537
-msgid "Right Ctrl (while pressed)"
-msgstr "Оң Alt клавишаÑÑ‹ (баÑылган учурда)"
-
-#: ../rules/base.xml.in.h:538
-msgid "Right Ctrl as Right Alt"
-msgstr "Оң Ctrl оң Alt клавишадай амал жаÑайт"
-
-#: ../rules/base.xml.in.h:539
-msgid "Right Shift"
-msgstr "Оң Shift"
-
-#: ../rules/base.xml.in.h:540
-msgid "Right Win"
-msgstr "Оң Win"
-
-#: ../rules/base.xml.in.h:541
-msgid "Right Win (while pressed)"
-msgstr "Оң Win клавишаÑÑ‹ (баÑылган учурда)"
-
-#: ../rules/base.xml.in.h:542
-msgid "Right hand"
-msgstr ""
-
-#: ../rules/base.xml.in.h:543
-msgid "Right handed Dvorak"
-msgstr "Dvorak оң колдуу адамдар үчүн"
-
-#: ../rules/base.xml.in.h:544
-msgid "Romania"
-msgstr "РумыниÑ"
-
-#: ../rules/base.xml.in.h:545
-msgid "Romanian keyboard with German letters"
-msgstr "Румындык клавиатура немец ариптери менен"
-
-#: ../rules/base.xml.in.h:546
-msgid "Romanian keyboard with German letters, eliminate dead keys"
-msgstr "Румындык клавиатура немец ариптери менен, атайын (dead keys) клавишаларÑыз"
-
-#: ../rules/base.xml.in.h:547
-msgid "Rou"
-msgstr "Рум"
-
-#: ../rules/base.xml.in.h:548
-msgid "Rus"
-msgstr "РуÑ"
-
-#: ../rules/base.xml.in.h:549
-msgid "Russia"
-msgstr "РоÑÑиÑ"
-
-#: ../rules/base.xml.in.h:550
-msgid "Russian"
-msgstr "ОруÑча"
-
-#: ../rules/base.xml.in.h:551
-msgid "Russian phonetic"
-msgstr "ОруÑча фонетикалык"
-
-#: ../rules/base.xml.in.h:552
-msgid "Russian phonetic Dvorak"
-msgstr "ОруÑча фонетикалык Dvorak"
-
-#: ../rules/base.xml.in.h:553
-msgid "Russian phonetic, eliminate dead keys"
-msgstr "ОруÑча фонетикалык, атайын (dead keys) клавишаларÑыз"
-
-#: ../rules/base.xml.in.h:554
-msgid "Russian with Kazakh"
-msgstr "ОруÑча Казакча менен"
-
-#: ../rules/base.xml.in.h:555
-msgid "SILVERCREST Multimedia Wireless Keyboard"
-msgstr "SILVERCREST Multimedia Wireless Keyboard"
-
-#: ../rules/base.xml.in.h:556
-msgid "SK-1300"
-msgstr "SK-1300"
-
-#: ../rules/base.xml.in.h:557
-msgid "SK-2500"
-msgstr "SK-2500"
-
-#: ../rules/base.xml.in.h:558
-msgid "SK-6200"
-msgstr "SK-6200"
-
-#: ../rules/base.xml.in.h:559
-msgid "SK-7100"
-msgstr "SK-7100"
-
-#: ../rules/base.xml.in.h:560 ../rules/base.extras.xml.in.h:7
-msgid "SRB"
-msgstr "SRB"
-
-#: ../rules/base.xml.in.h:561
-msgid "SVEN Ergonomic 2500"
-msgstr "SVEN Ergonomic 2500"
-
-#: ../rules/base.xml.in.h:562
-msgid "SVEN Slim 303"
-msgstr "SVEN Slim 303"
-
-#: ../rules/base.xml.in.h:563
-msgid "Samsung SDM 4500P"
-msgstr "Samsung SDM 4500P"
-
-#: ../rules/base.xml.in.h:564
-msgid "Samsung SDM 4510P"
-msgstr "Samsung SDM 4510P"
-
-#: ../rules/base.xml.in.h:565
-msgid "Scroll Lock"
-msgstr "Scroll Lock"
-
-#: ../rules/base.xml.in.h:566
-msgid "ScrollLock"
-msgstr "ScrollLock"
-
-#: ../rules/base.xml.in.h:567
-msgid "Secwepemctsin"
-msgstr "Secwepemctsin"
-
-#: ../rules/base.xml.in.h:568
-msgid "Semi-colon on third level"
-msgstr ""
-
-#: ../rules/base.xml.in.h:569 ../rules/base.extras.xml.in.h:8
-msgid "Serbia"
-msgstr "СербиÑ"
-
-#: ../rules/base.xml.in.h:570
-msgid "Shift cancels CapsLock"
-msgstr "Shift CapsLock амалын очүрөт"
-
-#: ../rules/base.xml.in.h:571
-msgid "Shift does not cancel NumLock, chooses 3d level instead"
-msgstr ""
-
-#: ../rules/base.xml.in.h:572
-msgid "Shift with numeric keypad keys works as in MS Windows"
-msgstr "Shift Ñандык клавиатура клавишалары менен MS Windows'тогу клавишадай амал жаÑайт"
-
-#: ../rules/base.xml.in.h:573
-msgid "Shift+CapsLock"
-msgstr "Shift+CapsLock"
-
-#: ../rules/base.xml.in.h:574
-msgid "Simple"
-msgstr "Жөнөкөй"
-
-#: ../rules/base.xml.in.h:575
-msgid "Slovakia"
-msgstr "СловакиÑ"
-
-#: ../rules/base.xml.in.h:576
-msgid "Slovenia"
-msgstr "СловениÑ"
-
-#: ../rules/base.xml.in.h:577
-msgid "South Africa"
-msgstr "Түштүк Ðфрика"
-
-#: ../rules/base.xml.in.h:578
-msgid "Southern Uzbek"
-msgstr "Түштүк өзбөкчө"
-
-#: ../rules/base.xml.in.h:579
-msgid "Spain"
-msgstr "ИÑпаниÑ"
-
-#: ../rules/base.xml.in.h:580
-msgid "Special keys (Ctrl+Alt+&lt;key&gt;) handled in a server"
-msgstr "Ðтайын клавишалар (Ctrl+Alt+&lt;клв&gt;) Ñервер менен долборлонот"
-
-#: ../rules/base.xml.in.h:581
-msgid "SrL"
-msgstr "ШрЛ"
-
-#: ../rules/base.xml.in.h:582
-msgid "Sri Lanka"
-msgstr "Шри Ланка"
-
-#: ../rules/base.xml.in.h:583
-msgid "Standard"
-msgstr "Стандарттык"
-
-#: ../rules/base.xml.in.h:584
-msgid "Standard (Cedilla)"
-msgstr "Стандарттык (Седиль)"
-
-#. RSTU 2019-91
-#: ../rules/base.xml.in.h:586
-msgid "Standard RSTU"
-msgstr "Стандарттык RSTU"
-
-#. RSTU 2019-91
-#: ../rules/base.xml.in.h:588
-msgid "Standard RSTU on Russian layout"
-msgstr "Стандарттык RSTU, оруÑча"
-
-#: ../rules/base.xml.in.h:589
-msgid "Sun Type 5/6"
-msgstr "Sun Type 5/6"
-
-#: ../rules/base.xml.in.h:590
-msgid "Sun dead keys"
-msgstr "Ðтайын (dead keys) Sun клавишалар"
-
-#: ../rules/base.xml.in.h:591
-msgid "Super Power Multimedia Keyboard"
-msgstr "Super Power Multimedia Keyboard"
-
-#: ../rules/base.xml.in.h:592
-msgid "Svdvorak"
-msgstr "Svdvorak"
-
-#: ../rules/base.xml.in.h:593
-msgid "Svk"
-msgstr "Слов"
-
-#: ../rules/base.xml.in.h:594
-msgid "Svn"
-msgstr "Cловен"
-
-#: ../rules/base.xml.in.h:595
-msgid "Swap Ctrl and CapsLock"
-msgstr "Ctrl жана CapsLock клавишаларды алмаштыруу"
-
-#: ../rules/base.xml.in.h:596
-msgid "Swap ESC and CapsLock"
-msgstr "ESC жана CapsLock клавишаларды алмаштыруу"
-
-#: ../rules/base.xml.in.h:597
-msgid "Swe"
-msgstr "Швед"
-
-#: ../rules/base.xml.in.h:598
-msgid "Sweden"
-msgstr "ШвециÑ"
-
-#: ../rules/base.xml.in.h:599
-msgid "Switzerland"
-msgstr "ШвейцариÑ"
-
-#: ../rules/base.xml.in.h:600
-msgid "Symplon PaceBook (tablet PC)"
-msgstr "Symplon PaceBook (чөнтөк ПК)"
-
-#: ../rules/base.xml.in.h:601
-msgid "Syr"
-msgstr "ÐÑÑ"
-
-#: ../rules/base.xml.in.h:602
-msgid "Syria"
-msgstr "Сирийдик"
-
-#: ../rules/base.xml.in.h:603
-msgid "Syriac"
-msgstr "Сирийдик"
-
-#: ../rules/base.xml.in.h:604
-msgid "Syriac phonetic"
-msgstr "Сирийдик фонетикалык"
-
-#: ../rules/base.xml.in.h:605
-msgid "TIS-820.2538"
-msgstr "TIS-820.2538"
-
-#: ../rules/base.xml.in.h:606
-msgid "Tajikistan"
-msgstr "ТаджикиÑтан"
-
-#: ../rules/base.xml.in.h:607
-msgid "Tamil"
-msgstr "Тамильдик"
-
-#: ../rules/base.xml.in.h:608
-msgid "Tamil TAB Typewriter"
-msgstr "Тамильдик \"БаÑма машинаÑÑ‹\" TAB"
-
-#: ../rules/base.xml.in.h:609
-msgid "Tamil TSCII Typewriter"
-msgstr "Тамиль TSCII печать машинаÑÑ‹"
-
-#: ../rules/base.xml.in.h:610
-msgid "Tamil Unicode"
-msgstr "Тамиль Unicode"
-
-#: ../rules/base.xml.in.h:611
-msgid "Targa Visionary 811"
-msgstr "Targa Visionary 811"
-
-#: ../rules/base.xml.in.h:612
-msgid "Tatar"
-msgstr "Татар"
-
-#: ../rules/base.xml.in.h:613
-msgid "Telugu"
-msgstr "Телугу"
-
-#: ../rules/base.xml.in.h:614
-msgid "Tha"
-msgstr "Тай"
-
-#: ../rules/base.xml.in.h:615
-msgid "Thailand"
-msgstr "Тайланд"
-
-#: ../rules/base.xml.in.h:616
-msgid "Tibetan"
-msgstr "Тибет"
-
-#: ../rules/base.xml.in.h:617
-msgid "Tibetan (with ASCII numerals)"
-msgstr "Тибет (ASCII номерлери менен)"
-
-#: ../rules/base.xml.in.h:618
-msgid "Tifinagh"
-msgstr "Тифинагдык"
-
-#: ../rules/base.xml.in.h:619
-msgid "Tifinagh Alternative"
-msgstr "Тифинагдык альтернативдик"
-
-#: ../rules/base.xml.in.h:620
-msgid "Tifinagh Alternative Phonetic"
-msgstr "Тифинагдык альтернативдик фонетикалык"
-
-#: ../rules/base.xml.in.h:621
-msgid "Tifinagh Extended"
-msgstr "Тифинагдык кеңейтилген"
-
-#: ../rules/base.xml.in.h:622
-msgid "Tifinagh Extended Phonetic"
-msgstr "Тифинагдык кеңейтилген фонетикалык"
-
-#: ../rules/base.xml.in.h:623
-msgid "Tifinagh Phonetic"
-msgstr "Тифинагдык фонетикалык"
-
-#: ../rules/base.xml.in.h:624
-msgid "Tilde (~) variant"
-msgstr "Тильда (~) менен вариант"
-
-#: ../rules/base.xml.in.h:625
-msgid "Tjk"
-msgstr "Тадж"
-
-#: ../rules/base.xml.in.h:626
-msgid "To the corresponding key in a Dvorak keyboard."
-msgstr ""
-
-#: ../rules/base.xml.in.h:627
-msgid "To the corresponding key in a Qwerty keyboard."
-msgstr ""
-
-#: ../rules/base.xml.in.h:628
-msgid "Toshiba Satellite S3000"
-msgstr "Toshiba Satellite S3000"
-
-#: ../rules/base.xml.in.h:629
-msgid "Traditional phonetic"
-msgstr "Традициондук фонетикалык"
-
-#: ../rules/base.xml.in.h:630
-msgid "Trust Direct Access Keyboard"
-msgstr "Trust Direct Access Keyboard"
-
-#: ../rules/base.xml.in.h:631
-msgid "Trust Slimline"
-msgstr "Trust Slimline"
-
-#: ../rules/base.xml.in.h:632
-msgid "Trust Wireless Keyboard Classic"
-msgstr "Trust Wireless Keyboard Classic"
-
-#: ../rules/base.xml.in.h:633
-msgid "Tur"
-msgstr "Тур"
-
-#: ../rules/base.xml.in.h:634
-msgid "Turkey"
-msgstr "ТурциÑ"
-
-#: ../rules/base.xml.in.h:635
-msgid "Turkmenistan"
-msgstr "ТүркмениÑтан"
-
-#: ../rules/base.xml.in.h:636
-msgid "Typewriter"
-msgstr "БаÑма машинаÑÑ‹"
-
-#: ../rules/base.xml.in.h:637
-msgid "UCW layout (accented letters only)"
-msgstr ""
-
-#: ../rules/base.xml.in.h:638
-msgid "US keyboard with Bosnian digraphs"
-msgstr "ÐКШ клавиатураÑÑ‹ боÑнийдик диграфтар менен"
-
-#: ../rules/base.xml.in.h:639
-msgid "US keyboard with Bosnian letters"
-msgstr "ÐКШ клавиатураÑÑ‹ боÑнийдик ариптер менен"
-
-#: ../rules/base.xml.in.h:640
-msgid "US keyboard with Croatian digraphs"
-msgstr "ÐКШ клавиатураÑÑ‹ хорваттык диграфтар менен"
-
-#: ../rules/base.xml.in.h:641
-msgid "US keyboard with Croatian letters"
-msgstr "ÐКШ клавиатураÑÑ‹ хорваттык ариптер менен"
-
-#: ../rules/base.xml.in.h:642
-msgid "US keyboard with Estonian letters"
-msgstr "ÐКШ клавиатураÑÑ‹ ÑÑтондук ариптер менен"
-
-#: ../rules/base.xml.in.h:643
-msgid "US keyboard with Italian letters"
-msgstr "ÐКШ клавиатураÑÑ‹ итальÑндык ариптер менен"
-
-#: ../rules/base.xml.in.h:644
-msgid "US keyboard with Lithuanian letters"
-msgstr "ÐКШ клавиатураÑÑ‹ литовдук ариптер менен"
-
-#: ../rules/base.xml.in.h:645
-msgid "US keyboard with Slovenian letters"
-msgstr "ÐКШ клавиатураÑÑ‹ Ñловендик ариптер менен"
-
-#: ../rules/base.xml.in.h:646 ../rules/base.extras.xml.in.h:9
-msgid "USA"
-msgstr "ÐКШ"
-
-#: ../rules/base.xml.in.h:647
-msgid "Udmurt"
-msgstr "Удмурттук"
-
-#: ../rules/base.xml.in.h:648
-msgid "Ukr"
-msgstr "Укр"
-
-#: ../rules/base.xml.in.h:649
-msgid "Ukraine"
-msgstr "Украина"
-
-#: ../rules/base.xml.in.h:650
-msgid "Unicode additions (arrows and math operators)"
-msgstr ""
-
-#: ../rules/base.xml.in.h:651
-msgid "Unicode additions (arrows and math operators). Math operators on default level"
-msgstr ""
-
-#: ../rules/base.xml.in.h:652
-msgid "UnicodeExpert"
-msgstr "UnicodeExpert"
-
-#: ../rules/base.xml.in.h:653
-msgid "United Kingdom"
-msgstr "ÐÐ½Ð³Ð»Ð¸Ñ (Улуу БританиÑ)"
-
-#: ../rules/base.xml.in.h:654
-msgid "Unitek KB-1925"
-msgstr "Unitek KB-1925"
-
-#: ../rules/base.xml.in.h:655
-msgid "Urdu, Alternative phonetic"
-msgstr "Урду, альтернативдик фонетикалык"
-
-#: ../rules/base.xml.in.h:656
-msgid "Urdu, Phonetic"
-msgstr "Урду, фонетикалык"
-
-#: ../rules/base.xml.in.h:657
-msgid "Urdu, Winkeys"
-msgstr "Урду, Windows клавишалары менен"
-
-#: ../rules/base.xml.in.h:658
-msgid "Use Bosnian digraphs"
-msgstr "БоÑнийдик диаграфтарды колдонуу"
-
-#: ../rules/base.xml.in.h:659
-msgid "Use Croatian digraphs"
-msgstr "Хорваттык диаграфтарды колдонуу"
-
-#: ../rules/base.xml.in.h:660
-msgid "Use guillemets for quotes"
-msgstr "Француздук тырмакчаларды тырмакчалардай колдонуу"
-
-#: ../rules/base.xml.in.h:661
-msgid "Use keyboard LED to show alternative layout"
-msgstr "Клавиатура индикаторлорду кошумча группаларды көрÑÓ©Ñ‚Ò¯Ò¯ үчүн колдонуу"
-
-#: ../rules/base.xml.in.h:662
-msgid "Using space key to input non-breakable space character"
-msgstr ""
-
-#: ../rules/base.xml.in.h:663
-msgid "Usual space at any level"
-msgstr ""
-
-#: ../rules/base.xml.in.h:664
-msgid "Uzb"
-msgstr "Өзб"
-
-#: ../rules/base.xml.in.h:665
-msgid "Uzbekistan"
-msgstr "ӨзбекиÑтан"
-
-#: ../rules/base.xml.in.h:666
-msgid "Vietnam"
-msgstr "Вьетнам"
-
-#: ../rules/base.xml.in.h:667
-msgid "ViewSonic KU-306 Internet Keyboard"
-msgstr "ViewSonic KU-306 Internet Keyboard"
-
-#: ../rules/base.xml.in.h:668
-msgid "Vnm"
-msgstr "Вьет"
-
-#: ../rules/base.xml.in.h:669
-msgid "Wang 724 keypad with unicode additions (arrows and math operators)"
-msgstr ""
-
-#: ../rules/base.xml.in.h:670
-msgid "Wang 724 keypad with unicode additions (arrows and math operators). Math operators on default level"
-msgstr ""
-
-#: ../rules/base.xml.in.h:671
-msgid "Wang model 724 azerty"
-msgstr "Wang model 724 azerty"
-
-#: ../rules/base.xml.in.h:672
-msgid "Western"
-msgstr "Батыш"
-
-#: ../rules/base.xml.in.h:673
-msgid "Winbook Model XP5"
-msgstr "Winbook Model XP5"
-
-#: ../rules/base.xml.in.h:674
-msgid "Winkeys"
-msgstr "Windows клавиатураÑÑ‹"
-
-#: ../rules/base.xml.in.h:675
-msgid "With &lt;\\|&gt; key"
-msgstr "&lt;\\|&gt; клавиша менен"
-
-#: ../rules/base.xml.in.h:676
-msgid "With EuroSign on 5"
-msgstr ""
-
-#: ../rules/base.xml.in.h:677
-msgid "With guillemets"
-msgstr "Француздук тырмакчалар менен"
-
-#: ../rules/base.xml.in.h:678
-msgid "Yahoo! Internet Keyboard"
-msgstr "Yahoo! Internet Keyboard"
-
-#: ../rules/base.xml.in.h:679
-msgid "Yakut"
-msgstr "Якуттук"
-
-#: ../rules/base.xml.in.h:680
-msgid "Yoruba"
-msgstr "Йоруба"
-
-#: ../rules/base.xml.in.h:681
-msgid "Z and ZHE swapped"
-msgstr "З жана Ж орундарын алмаштырган"
-
-#: ../rules/base.xml.in.h:682
-msgid "Zar"
-msgstr "ЮÐР"
-
-#: ../rules/base.xml.in.h:683
-msgid "azerty"
-msgstr "azerty"
-
-#: ../rules/base.xml.in.h:684
-msgid "azerty/digits"
-msgstr "azerty/цифры"
-
-#: ../rules/base.xml.in.h:685
-msgid "digits"
-msgstr "Ñандар"
-
-#: ../rules/base.xml.in.h:686
-msgid "displaced semicolon and quote (obsolete)"
-msgstr ""
-
-#: ../rules/base.xml.in.h:687
-msgid "lyx"
-msgstr "lyx"
-
-#: ../rules/base.xml.in.h:688
-msgid "qwerty"
-msgstr "qwerty"
-
-#: ../rules/base.xml.in.h:689
-msgid "qwerty, extended Backslash"
-msgstr "qwerty, Backslash кеңейтилген функциÑлары"
-
-#: ../rules/base.xml.in.h:690
-msgid "qwerty/digits"
-msgstr "qwerty/Ñандар"
-
-#: ../rules/base.xml.in.h:691
-msgid "qwertz"
-msgstr "qwertz"
-
-#: ../rules/base.extras.xml.in.h:1
-msgid "APL"
-msgstr "APL"
-
-#: ../rules/base.extras.xml.in.h:2
-msgid "Atsina"
-msgstr "ÐÑ‚Ñиндик"
-
-#: ../rules/base.extras.xml.in.h:3
-msgid "Combining accents instead of dead keys"
-msgstr ""
-
-#: ../rules/base.extras.xml.in.h:4
-msgid "Couer D'alene Salish"
-msgstr "Салишдик кёр-д’ален"
-
-#: ../rules/base.extras.xml.in.h:5
-msgid "International (AltGr Unicode combining)"
-msgstr ""
-
-#: ../rules/base.extras.xml.in.h:6
-msgid "International (AltGr Unicode combining, alternative)"
-msgstr ""
-
-#~ msgid "Pro"
-#~ msgstr "Pro"
-
-#~ msgid "Pro Keypad"
-#~ msgstr "Pro кошумча панели менен"
-
-#, fuzzy
-#~ msgid "Standard Phonetic"
-#~ msgstr "Ðльтернативдүү фонетикалык"
-
-#~ msgid "(Legacy) Dvorak"
-#~ msgstr "(ЭÑкирген) Dvorak"
-
-#~ msgid "Add the EuroSign to the 5 key."
-#~ msgstr "5 деген клавишага Евро белгиÑин кошуу."
-
-#~ msgid "Add the EuroSign to the E key."
-#~ msgstr "E клавишаÑына Евро белгиÑин кошуу."
-
-#~ msgid "Alt+Shift change layout."
-#~ msgstr "Alt+Shift раÑкладканы алмаштырат."
-
-#~ msgid "Brazilian ABNT2"
-#~ msgstr "Бразилдик ABNT2"
-
-#~ msgid "Press Left Alt key to choose 3rd level."
-#~ msgstr "3-чү денгÑÑлди тандоо Ñол Alt клавишанын баÑылышы менен."
-
-#~ msgid "Press Left Win-key to choose 3rd level."
-#~ msgstr "3-чү денгÑÑлди тандоо Ñол Win клавишанын баÑылышы менен."
-
-#~ msgid "Press Right Alt key to choose 3rd level."
-#~ msgstr "3-чү денгÑÑлди тандоо оң Alt клавишанын баÑылышы менен."
-
-#~ msgid "Press Right Ctrl to choose 3rd level."
-#~ msgstr "3-чү денгÑÑлди тандоо оң Ctrl клавишанын баÑылышы менен."
-
-#~ msgid "Press Right Win-key to choose 3rd level."
-#~ msgstr "3-чү денгÑÑлди тандоо оң Win клавишанын баÑылышы менен."
-
-#~ msgid "Press any of Alt keys to choose 3rd level."
-#~ msgstr "3-чү денгÑÑлди тандоо Alt клавишалардын бирөөÑүнүн баÑылышы менен."
-
-#~ msgid "Press any of Win-keys to choose 3rd level."
-#~ msgstr "3-чү денгÑÑлди тандоо Win клавишалардын бирөөÑүнүн баÑылышы менен."
-
-#~ msgid "Right Win-key is Compose."
-#~ msgstr "Оң Win Compose клавишадай."
-
-#~ msgid "SCG"
-#~ msgstr "СМÐ"
-
-#~ msgid "Swap keycodes of two keys when Mac keyboards are misdetected by kernel."
-#~ msgstr "Swap keycodes of two keys when Mac keyboards are misdetected by kernel."
-
-#~ msgid "US keyboard with Slovenian digraphs"
-#~ msgstr "ÐКШ клавиатураÑÑ‹ Ñловендик диграфтар менен"
-
-#~ msgid "Urdu"
-#~ msgstr "Урду"
-
-#~ msgid "Use Slovenian digraphs"
-#~ msgstr "Словендик диаграфтарды колдонуу"
-
-#~ msgid "\"Typewriter\""
-#~ msgstr "БаÑма машинаÑÑ‹"
-
-#~ msgid "Alt+Control changes group"
-#~ msgstr "Alt+Control группаны алмаштырат"
-
-#~ msgid "Alt+Shift changes group"
-#~ msgstr "Alt+Shift группаны алмаштырат"
-
-#~ msgid "Belgian"
-#~ msgstr "БельгиÑлык"
-
-#~ msgid "Bulgarian"
-#~ msgstr "Болгардык"
-
-#~ msgid "Canadian"
-#~ msgstr "Канаддык"
-
-#~ msgid "Caps Lock key changes group"
-#~ msgstr "Caps Lock клавишаÑÑ‹ группаны алмаштырат"
-
-#~ msgid "Caps_Lock LED shows alternative group"
-#~ msgstr "Caps_Lock индикатору башка группаны көрÑÓ©Ñ‚Ó©Ñ‚"
-
-#~ msgid "Control Key Position"
-#~ msgstr "Control клавишанын жайгашууÑу"
-
-#~ msgid "Control key at bottom left"
-#~ msgstr "Control клавишаÑÑ‹ төмөн Ñол жакта жайгашкан"
-
-#~ msgid "Control key at left of 'A'"
-#~ msgstr "Control клавишаÑÑ‹ 'Ф' Ñол жагында"
-
-#~ msgid "Control+Shift changes group"
-#~ msgstr "Control+Shift группаны алмаштырат"
-
-#~ msgid "Czech"
-#~ msgstr "Чех"
-
-#~ msgid "Danish"
-#~ msgstr "Даттык"
-
-#~ msgid "DeuCH"
-#~ msgstr "ÐемШВ"
-
-#~ msgid "Dvo"
-#~ msgstr "Dvo"
-
-#~ msgid "Finnish"
-#~ msgstr "Финдик"
-
-#~ msgid "FraCH"
-#~ msgstr "ФраШВ"
-
-#~ msgid "Hungarian"
-#~ msgstr "Венгердик"
-
-#~ msgid "Italian"
-#~ msgstr "ИтальÑндык"
-
-#~ msgid "Japanese"
-#~ msgstr "Япондук"
-
-#~ msgid "Left Alt key changes group"
-#~ msgstr "Сол Alt клавишаÑÑ‹ группаны алмаштырат"
-
-#~ msgid "Left Ctrl key changes group"
-#~ msgstr "Сол Ctrl клавишаÑÑ‹ группаны алмаштырат"
-
-#~ msgid "Left Shift key changes group"
-#~ msgstr "Сол Shift клавишаÑÑ‹ группаны алмаштырат"
-
-#~ msgid "Norwegian"
-#~ msgstr "Ðорвеждик"
-
-#~ msgid "Num_Lock LED shows alternative group"
-#~ msgstr "Num_Lock индикатору кошумча группаны көрÑÓ©Ñ‚Ó©Ñ‚"
-
-#~ msgid "Polish"
-#~ msgstr "Польдук"
-
-#~ msgid "Portuguese"
-#~ msgstr "Португалдык"
-
-#~ msgid "Press Left Alt key to choose 3rd level"
-#~ msgstr "3-чү денгÑÑлди тандоо Ñол Alt клавишанын баÑылышы менен."
-
-#~ msgid "Press Right Control to choose 3rd level"
-#~ msgstr "3-чү денгÑÑлди тандоо оң Control клавишанын баÑылышы менен."
-
-#~ msgid "Press any of Alt keys to choose 3rd level"
-#~ msgstr "3-чү денгÑÑлди тандоо Alt клавишалардан бирөөÑүнүн баÑылышы менен."
-
-#~ msgid "Right Alt key changes group"
-#~ msgstr "Оң Alt клавишаÑÑ‹ группаны алмаштырат"
-
-#~ msgid "Right Control key works as Right Alt"
-#~ msgstr "Оң Control оң Alt клавишадай"
-
-#~ msgid "Right Ctrl key changes group"
-#~ msgstr "Оң Ctrl клавишаÑÑ‹ группаны алмаштырат"
-
-#~ msgid "Right Shift key changes group"
-#~ msgstr "Оң Shift клавишаÑÑ‹ группаны алмаштырат"
-
-#~ msgid "Scroll_Lock LED shows alternative group"
-#~ msgstr "Scroll_Lock индикатору кошумча панелди көрÑÓ©Ñ‚Ó©Ñ‚"
-
-#~ msgid "Slovak"
-#~ msgstr "Словак"
-
-#~ msgid "Spanish"
-#~ msgstr "ИÑпандык"
-
-#~ msgid "Sun Type 4"
-#~ msgstr "Sun Type 4"
-
-#~ msgid "Sun Type 5 European"
-#~ msgstr "Sun Type 5 Европейдик"
-
-#~ msgid "Sun Type 5 Unix"
-#~ msgstr "Sun Type 5 Unix үчүн"
-
-#~ msgid "Sun Type 6"
-#~ msgstr "Sun Type 6"
-
-#~ msgid "Sun Type 6 Unix"
-#~ msgstr "Sun Type 6 Unix үчүн"
-
-#~ msgid "Sun Type 6 with Euro key"
-#~ msgstr "Sun Type 6 Евро белгиÑи менен"
-
-#~ msgid "Swap Control and Caps Lock"
-#~ msgstr "Control жана Caps Lock клавишалардын ордун алмаштыруу"
-
-#~ msgid "Swedish"
-#~ msgstr "Шведдик"
-
-#~ msgid "Swiss French"
-#~ msgstr "ШвейцариÑлык французча"
-
-#~ msgid "Swiss German"
-#~ msgstr "ШвейцариÑлык немецче"
-
-#~ msgid "Turkish"
-#~ msgstr "Түркчө"
-
-#~ msgid "Turkish (F)"
-#~ msgstr "Түркчө (F) менен"
-
-#~ msgid "Turkish Alt-Q Layout"
-#~ msgstr "Түрк раÑкладкаÑÑ‹ Alt-Q менен"
-
-#~ msgid "U.S. English w/ ISO9995-3"
-#~ msgstr "ÐÐ½Ð³Ð»Ð¸Ñ (ÐКШ) ISO9995-3 менен"
-
-#~ msgid "bksl"
-#~ msgstr "bksl"
-
-#~ msgid "type4"
-#~ msgstr "type4"
+# Translation of 'xkeyboard-config' messages to Kirghiz.
+# Copyright (C) 2002 Free Software Foundation, Inc.
+# This file is distributed under the same license as the xkeyboard-config package.
+# Ilyas Bakirov <just_ilyas@yahoo.com>, 2009, 2010
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: xkeyboard-config 1.6.99\n"
+"Report-Msgid-Bugs-To: svu@users.sourceforge.net\n"
+"POT-Creation-Date: 2009-09-15 23:31+0100\n"
+"PO-Revision-Date: 2009-09-17 20:10+0600\n"
+"Last-Translator: Ilyas Bakirov <just_ilyas@yahoo.com>\n"
+"Language-Team: Kirghiz <i18n-team-ky-kyrgyz@lists.sourceforge.net>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Poedit-Language: Kyrgyz\n"
+"X-Poedit-Country: KYRGYZSTAN\n"
+
+#: ../rules/base.xml.in.h:1
+msgid "(F)"
+msgstr "(F)"
+
+#: ../rules/base.xml.in.h:2
+msgid "(Legacy) Alternative"
+msgstr "(ЭÑкирген) Ðльтернативдик"
+
+#: ../rules/base.xml.in.h:3
+msgid "(Legacy) Alternative, Sun dead keys"
+msgstr "(ЭÑкирген) Ðльтернативдик, атайын (dead keys) Sun клавишалары менен"
+
+#: ../rules/base.xml.in.h:4
+msgid "(Legacy) Alternative, eliminate dead keys"
+msgstr "(ЭÑкирген) Ðльтернативдик, атайын (dead keys) клавишаларÑыз"
+
+#: ../rules/base.xml.in.h:5
+msgid "101/104 key Compatible"
+msgstr "101/104 баÑкычтар менен жарамдуу"
+
+#: ../rules/base.xml.in.h:6
+msgid "101/qwerty/comma/Dead keys"
+msgstr "pc101, qwerty, үтүр, атайын (dead keys) клавишалары менен"
+
+#: ../rules/base.xml.in.h:7
+msgid "101/qwerty/comma/Eliminate dead keys"
+msgstr "pc101, qwerty, үтүр, атайын (dead keys) клавишаларÑыз "
+
+#: ../rules/base.xml.in.h:8
+msgid "101/qwerty/dot/Dead keys"
+msgstr "pc101, qwerty, чекит, атайын (dead keys) клавшилары менен"
+
+#: ../rules/base.xml.in.h:9
+msgid "101/qwerty/dot/Eliminate dead keys"
+msgstr "pc101, qwerty, үтур, атайын (dead keys) клавишаларÑыз"
+
+#: ../rules/base.xml.in.h:10
+msgid "101/qwertz/comma/Dead keys"
+msgstr "pc101, qwertz, үтур, атайын (dead keys) клавишалары менен"
+
+#: ../rules/base.xml.in.h:11
+msgid "101/qwertz/comma/Eliminate dead keys"
+msgstr "pc101, qwertz, үтүр, атайын (dead keys) клавишаларÑыз"
+
+#: ../rules/base.xml.in.h:12
+msgid "101/qwertz/dot/Dead keys"
+msgstr "pc101, qwertz, чекит, атайын (dead keys) клавишалары менен"
+
+#: ../rules/base.xml.in.h:13
+msgid "101/qwertz/dot/Eliminate dead keys"
+msgstr "pc101, qwertz, чекит, атайын (dead keys) клавишаларÑыз"
+
+#: ../rules/base.xml.in.h:14
+msgid "102/qwerty/comma/Dead keys"
+msgstr "pc102, qwerty, үтүр, атайын (dead keys) клавишалары менен"
+
+#: ../rules/base.xml.in.h:15
+msgid "102/qwerty/comma/Eliminate dead keys"
+msgstr "pc102, qwerty, үтүр, атаыйн (dead keys) клавишаларÑыз"
+
+#: ../rules/base.xml.in.h:16
+msgid "102/qwerty/dot/Dead keys"
+msgstr "pc102, qwerty, чекит, атайын (dead keys) клавишалары менен"
+
+#: ../rules/base.xml.in.h:17
+msgid "102/qwerty/dot/Eliminate dead keys"
+msgstr "pc102, qwerty, чекит, атайын (dead keys) клавишаларÑыз"
+
+#: ../rules/base.xml.in.h:18
+msgid "102/qwertz/comma/Dead keys"
+msgstr "pc102, qwertz, үтүр, атайын (dead keys) клавишалары менен"
+
+#: ../rules/base.xml.in.h:19
+msgid "102/qwertz/comma/Eliminate dead keys"
+msgstr "pc102, qwertz, үтур, атайын (dead keys) клавишаларÑыз"
+
+#: ../rules/base.xml.in.h:20
+msgid "102/qwertz/dot/Dead keys"
+msgstr "pc102, qwertz, чекит, атайын (dead keys) клавишалары менен"
+
+#: ../rules/base.xml.in.h:21
+msgid "102/qwertz/dot/Eliminate dead keys"
+msgstr "pc102, qwertz, чекит, атайын (dead keys) клавишаларÑыз"
+
+#: ../rules/base.xml.in.h:22
+msgid "2"
+msgstr "2"
+
+#: ../rules/base.xml.in.h:23
+msgid "4"
+msgstr "4"
+
+#: ../rules/base.xml.in.h:24
+msgid "5"
+msgstr "5"
+
+#: ../rules/base.xml.in.h:25
+msgid "A4Tech KB-21"
+msgstr "A4Tech KB-21"
+
+#: ../rules/base.xml.in.h:26
+msgid "A4Tech KBS-8"
+msgstr "A4Tech KBS-8"
+
+#: ../rules/base.xml.in.h:27
+msgid "A4Tech Wireless Desktop RFKB-23"
+msgstr "A4Tech Wireless Desktop RFKB-23"
+
+#: ../rules/base.xml.in.h:28
+msgid "ACPI Standard"
+msgstr "ACPI Ñтандарттуу"
+
+#: ../rules/base.xml.in.h:29
+msgid "ATM/phone-style"
+msgstr "Банкомат(ATM)/телефондук Ñтилинде"
+
+#: ../rules/base.xml.in.h:30
+msgid "Acer AirKey V"
+msgstr "Acer AirKey V"
+
+#: ../rules/base.xml.in.h:31
+msgid "Acer C300"
+msgstr "Acer C300"
+
+#: ../rules/base.xml.in.h:32
+msgid "Acer Ferrari 4000"
+msgstr "Acer Ferrari 4000"
+
+#: ../rules/base.xml.in.h:33
+msgid "Acer Laptop"
+msgstr "Acer ноутбугу"
+
+#: ../rules/base.xml.in.h:34
+msgid "Add the standard behavior to Menu key"
+msgstr ""
+
+#: ../rules/base.xml.in.h:35
+msgid "Adding Esperanto circumflexes (supersigno)"
+msgstr ""
+
+#: ../rules/base.xml.in.h:36
+msgid "Adding EuroSign to certain keys"
+msgstr "Белгилүү клавишаларга Евро белгиÑин кошуу."
+
+#: ../rules/base.xml.in.h:37
+msgid "Advance Scorpius KI"
+msgstr "Advance Scorpius KI"
+
+#: ../rules/base.xml.in.h:38
+msgid "Afg"
+msgstr "Ðфг"
+
+#: ../rules/base.xml.in.h:39
+msgid "Afghanistan"
+msgstr "ÐфганиÑтан"
+
+#: ../rules/base.xml.in.h:40
+msgid "Akan"
+msgstr "Ðкан"
+
+#: ../rules/base.xml.in.h:41
+msgid "Alb"
+msgstr "Ðлб"
+
+#: ../rules/base.xml.in.h:42
+msgid "Albania"
+msgstr "ÐлбаниÑ"
+
+#: ../rules/base.xml.in.h:43
+msgid "Alt and Meta are on Alt keys"
+msgstr "Alt жана Meta Alt клавишаларда"
+
+#: ../rules/base.xml.in.h:44
+msgid "Alt is mapped to Right Win, Super to Menu"
+msgstr "Alt is mapped to Right Win, Super to Menu"
+
+#: ../rules/base.xml.in.h:45
+msgid "Alt+CapsLock"
+msgstr "Alt+CapsLock"
+
+#: ../rules/base.xml.in.h:46
+msgid "Alt+Ctrl"
+msgstr "Alt+Ctrl"
+
+#: ../rules/base.xml.in.h:47
+msgid "Alt+Shift"
+msgstr "Alt+Shift"
+
+#: ../rules/base.xml.in.h:48
+msgid "Alt+Space"
+msgstr "Alt+Боштук"
+
+#: ../rules/base.xml.in.h:49
+msgid "Alt-Q"
+msgstr "Alt-Q"
+
+#: ../rules/base.xml.in.h:50
+msgid "Alt/Win key behavior"
+msgstr "Alt/Win клавишалары"
+
+#: ../rules/base.xml.in.h:51
+msgid "Alternative"
+msgstr "Ðльтернативдик"
+
+#: ../rules/base.xml.in.h:52
+msgid "Alternative Eastern"
+msgstr "Ðльтернативдик"
+
+#: ../rules/base.xml.in.h:53
+msgid "Alternative Phonetic"
+msgstr "Ðльтернативдүү фонетикалык"
+
+#: ../rules/base.xml.in.h:54
+msgid "Alternative international (former us_intl)"
+msgstr "Эларалык Ðльтернативдик (мурунку us_intl)"
+
+#: ../rules/base.xml.in.h:55
+msgid "Alternative, Sun dead keys"
+msgstr "Ðльтернативдик, атайын (dead keys) Sun клавишалары менен"
+
+#: ../rules/base.xml.in.h:56
+msgid "Alternative, eliminate dead keys"
+msgstr "Ðльтернативдик, атайын (dead keys) клавишаларÑыз"
+
+#: ../rules/base.xml.in.h:57
+msgid "Alternative, latin-9 only"
+msgstr "Ðльтернативдик, latin-9 гана"
+
+#: ../rules/base.xml.in.h:58
+msgid "And"
+msgstr "Ðнд"
+
+#: ../rules/base.xml.in.h:59
+msgid "Andorra"
+msgstr "Ðндорра"
+
+#: ../rules/base.xml.in.h:60
+msgid "Any Alt key"
+msgstr ""
+
+#: ../rules/base.xml.in.h:61
+msgid "Any Win key"
+msgstr "Каалаган Win клавишаÑÑ‹"
+
+#: ../rules/base.xml.in.h:62
+msgid "Any Win key (while pressed)"
+msgstr ""
+
+#: ../rules/base.xml.in.h:63
+msgid "Apostrophe (') variant"
+msgstr "Вариант апоÑтроф (') менен"
+
+#: ../rules/base.xml.in.h:64
+msgid "Apple"
+msgstr "Apple"
+
+#: ../rules/base.xml.in.h:65
+msgid "Apple Laptop"
+msgstr "Apple Ðоутбугу"
+
+#: ../rules/base.xml.in.h:66
+msgid "Ara"
+msgstr "Ðра"
+
+#: ../rules/base.xml.in.h:67
+msgid "Arabic"
+msgstr "Ðраб"
+
+#: ../rules/base.xml.in.h:68
+msgid "Arm"
+msgstr "Ðрм"
+
+#: ../rules/base.xml.in.h:69
+msgid "Armenia"
+msgstr "ÐрмениÑ"
+
+#: ../rules/base.xml.in.h:70
+msgid "Asturian variant with bottom-dot H and bottom-dot L"
+msgstr ""
+
+#: ../rules/base.xml.in.h:71
+msgid "Asus Laptop"
+msgstr "Asus ноутбугу"
+
+#: ../rules/base.xml.in.h:72
+msgid "At bottom left"
+msgstr "Төмөн Ñол жакта"
+
+#: ../rules/base.xml.in.h:73
+msgid "At left of 'A'"
+msgstr "'Ð' клавишанын Ñол жагында"
+
+#: ../rules/base.xml.in.h:74
+msgid "Aze"
+msgstr "Ðзр"
+
+#: ../rules/base.xml.in.h:75
+msgid "Azerbaijan"
+msgstr "Ðзербайджан"
+
+#: ../rules/base.xml.in.h:76
+msgid "Azona RF2300 wireless Internet Keyboard"
+msgstr "Azona RF2300 wireless Internet Keyboard"
+
+#: ../rules/base.xml.in.h:77
+msgid "BTC 5090"
+msgstr "BTC 5090"
+
+#: ../rules/base.xml.in.h:78
+msgid "BTC 5113RF Multimedia"
+msgstr "BTC 5113RF Multimedia"
+
+#: ../rules/base.xml.in.h:79
+msgid "BTC 5126T"
+msgstr "BTC 5126T"
+
+#: ../rules/base.xml.in.h:80
+msgid "BTC 6301URF"
+msgstr "BTC 6301URF"
+
+#: ../rules/base.xml.in.h:81
+msgid "BTC 9000"
+msgstr "BTC 9000"
+
+#: ../rules/base.xml.in.h:82
+msgid "BTC 9000A"
+msgstr "BTC 9000A"
+
+#: ../rules/base.xml.in.h:83
+msgid "BTC 9001AH"
+msgstr "BTC 9001AH"
+
+#: ../rules/base.xml.in.h:84
+msgid "BTC 9019U"
+msgstr "BTC 9019U"
+
+#: ../rules/base.xml.in.h:85
+msgid "BTC 9116U Mini Wireless Internet and Gaming"
+msgstr "BTC 9116U Mini Wireless Internet and Gaming"
+
+#: ../rules/base.xml.in.h:86
+msgid "Baltic+"
+msgstr "Baltic+"
+
+#: ../rules/base.xml.in.h:87
+msgid "Ban"
+msgstr "Бан"
+
+#: ../rules/base.xml.in.h:88
+msgid "Bangladesh"
+msgstr "Бангладеш"
+
+#: ../rules/base.xml.in.h:89
+msgid "Bashkirian"
+msgstr "Башкирдик"
+
+#: ../rules/base.xml.in.h:90
+msgid "Bel"
+msgstr "Бел"
+
+#: ../rules/base.xml.in.h:91
+msgid "Belarus"
+msgstr "БеларуÑиÑ"
+
+#: ../rules/base.xml.in.h:92
+msgid "Belgium"
+msgstr "БельгиÑ"
+
+#: ../rules/base.xml.in.h:93
+msgid "BenQ X-Touch"
+msgstr "BenQ X-Touch"
+
+#: ../rules/base.xml.in.h:94
+msgid "BenQ X-Touch 730"
+msgstr "BenQ X-Touch 730"
+
+#: ../rules/base.xml.in.h:95
+msgid "BenQ X-Touch 800"
+msgstr "BenQ X-Touch 800"
+
+#: ../rules/base.xml.in.h:96
+msgid "Bengali"
+msgstr "Бенгальдык"
+
+#: ../rules/base.xml.in.h:97
+msgid "Bengali Probhat"
+msgstr "Бенгальдык Пробат"
+
+#: ../rules/base.xml.in.h:98
+msgid "Bepo, ergonomic, Dvorak way"
+msgstr "Бепо, Ñргономикалык, Dvorak'ка окшош"
+
+#: ../rules/base.xml.in.h:99
+msgid "Bepo, ergonomic, Dvorak way, latin-9 only"
+msgstr "Бепо, Ñргономикалык, Dvorak'ка окшош, latin-9 гана"
+
+#: ../rules/base.xml.in.h:100
+msgid "Bgr"
+msgstr "Болг"
+
+#: ../rules/base.xml.in.h:101
+msgid "Bhu"
+msgstr "Бут"
+
+#: ../rules/base.xml.in.h:102
+msgid "Bhutan"
+msgstr "Бутан"
+
+#: ../rules/base.xml.in.h:103
+msgid "Biblical Hebrew (Tiro)"
+msgstr "Библейдик иврит (Tiro)"
+
+#: ../rules/base.xml.in.h:104
+msgid "Bih"
+msgstr "БоÑн"
+
+#: ../rules/base.xml.in.h:105
+msgid "Blr"
+msgstr "Бел"
+
+#: ../rules/base.xml.in.h:106
+msgid "Bosnia and Herzegovina"
+msgstr "БоÑÐ½Ð¸Ñ Ð¶Ð°Ð½Ð° ГерциговиниÑ"
+
+#: ../rules/base.xml.in.h:107
+msgid "Both Alt keys together"
+msgstr "Эки Alt клавишалары бирге"
+
+#: ../rules/base.xml.in.h:108
+msgid "Both Ctrl keys together"
+msgstr "Эки Ctrl клавишалары бирге"
+
+#: ../rules/base.xml.in.h:109
+msgid "Both Shift keys together"
+msgstr "Эки Shift клавишалары бирге"
+
+#: ../rules/base.xml.in.h:110
+msgid "Bra"
+msgstr "Бра"
+
+#: ../rules/base.xml.in.h:111
+msgid "Braille"
+msgstr "Браиил"
+
+#: ../rules/base.xml.in.h:112
+msgid "Brazil"
+msgstr "БразилиÑ"
+
+#: ../rules/base.xml.in.h:113
+msgid "Breton"
+msgstr "Бретон"
+
+#: ../rules/base.xml.in.h:114
+msgid "Brl"
+msgstr "Брл"
+
+#: ../rules/base.xml.in.h:115
+msgid "Brother Internet Keyboard"
+msgstr "Brother Internet Keyboard"
+
+#: ../rules/base.xml.in.h:116
+msgid "Buckwalter"
+msgstr "Buckwalter"
+
+#: ../rules/base.xml.in.h:117
+msgid "Bulgaria"
+msgstr "БолгариÑ"
+
+#: ../rules/base.xml.in.h:118
+msgid "CRULP"
+msgstr "CRULP"
+
+#: ../rules/base.xml.in.h:119
+msgid "Cambodia"
+msgstr "КамбоджиÑ"
+
+#: ../rules/base.xml.in.h:120
+msgid "Can"
+msgstr "Кан"
+
+#: ../rules/base.xml.in.h:121
+msgid "Canada"
+msgstr "Канада"
+
+#: ../rules/base.xml.in.h:122
+msgid "Caps Lock"
+msgstr "Caps Lock"
+
+#: ../rules/base.xml.in.h:123
+msgid "CapsLock"
+msgstr "CapsLock"
+
+#: ../rules/base.xml.in.h:124
+msgid "CapsLock (to first layout), Shift+CapsLock (to last layout)"
+msgstr ""
+
+#: ../rules/base.xml.in.h:125
+msgid "CapsLock (while pressed), Alt+CapsLock does the original capslock action"
+msgstr ""
+
+#: ../rules/base.xml.in.h:126
+msgid "CapsLock acts as Shift with locking. Shift \"pauses\" CapsLock"
+msgstr ""
+
+#: ../rules/base.xml.in.h:127
+msgid "CapsLock acts as Shift with locking. Shift doesn't affect CapsLock"
+msgstr "CapsLock Shift блокировка менен клавишаÑÑ‹ катары амал жаÑайт. Shift CapsLock амалына тоÑкол болбойт"
+
+#: ../rules/base.xml.in.h:128
+msgid "CapsLock is disabled"
+msgstr "CapsLock иштен чыгарылды"
+
+#: ../rules/base.xml.in.h:129
+msgid "CapsLock key behavior"
+msgstr ""
+
+#: ../rules/base.xml.in.h:130
+msgid "CapsLock toggles Shift so all keys are affected"
+msgstr ""
+
+#: ../rules/base.xml.in.h:131
+msgid "CapsLock toggles normal capitalization of alphabetic characters"
+msgstr ""
+
+#: ../rules/base.xml.in.h:132
+msgid "CapsLock uses internal capitalization. Shift \"pauses\" CapsLock"
+msgstr "CapsLock ички капитализацыÑны ачат. Shift CapsLock амалын токтотот"
+
+#: ../rules/base.xml.in.h:133
+msgid "CapsLock uses internal capitalization. Shift doesn't affect CapsLock"
+msgstr "CapsLock ички капитализацыÑны ачат. Shift CapsLock амалына тааÑир тийгизбейт"
+
+#: ../rules/base.xml.in.h:134
+msgid "Catalan variant with middle-dot L"
+msgstr ""
+
+#: ../rules/base.xml.in.h:135
+msgid "Cedilla"
+msgstr "Седиль"
+
+#: ../rules/base.xml.in.h:136
+msgid "Che"
+msgstr "Че"
+
+#: ../rules/base.xml.in.h:137
+msgid "Cherokee"
+msgstr "Чероки"
+
+#: ../rules/base.xml.in.h:138
+msgid "Cherry B.UNLIMITED"
+msgstr "Cherry B.UNLIMITED"
+
+#: ../rules/base.xml.in.h:139
+msgid "Cherry Blue Line CyBo@rd"
+msgstr "Cherry Blue Line CyBo@rd"
+
+#: ../rules/base.xml.in.h:140
+msgid "Cherry Blue Line CyBo@rd (alternate option)"
+msgstr "Cherry Blue Line CyBo@rd (альтернативдик)"
+
+#: ../rules/base.xml.in.h:141
+msgid "Cherry CyBo@rd USB-Hub"
+msgstr "Cherry CyBo@rd USB-Hub"
+
+#: ../rules/base.xml.in.h:142
+msgid "Cherry CyMotion Expert"
+msgstr "Cherry CyMotion Expert"
+
+#: ../rules/base.xml.in.h:143
+msgid "Cherry CyMotion Master Linux"
+msgstr "Cherry CyMotion Master Linux"
+
+#: ../rules/base.xml.in.h:144
+msgid "Cherry CyMotion Master XPress"
+msgstr "Cherry CyMotion Master XPress"
+
+#: ../rules/base.xml.in.h:145
+msgid "Chicony Internet Keyboard"
+msgstr "Chicony Internet Keyboard"
+
+#: ../rules/base.xml.in.h:146
+msgid "Chicony KB-9885"
+msgstr "Chicony KB-9885"
+
+#: ../rules/base.xml.in.h:147
+msgid "Chicony KU-0108"
+msgstr "Chicony KU-0108"
+
+#: ../rules/base.xml.in.h:148
+msgid "Chicony KU-0420"
+msgstr "Chicony KU-0420"
+
+#: ../rules/base.xml.in.h:149
+msgid "China"
+msgstr "Кытай"
+
+#: ../rules/base.xml.in.h:150
+msgid "Chuvash"
+msgstr "Чуваш"
+
+#: ../rules/base.xml.in.h:151
+msgid "Chuvash Latin"
+msgstr "Чуваш латындык"
+
+#: ../rules/base.xml.in.h:152
+msgid "Classic"
+msgstr "КлаÑÑикалык"
+
+#: ../rules/base.xml.in.h:153
+msgid "Classic Dvorak"
+msgstr "КлаÑÑикалык Дровак"
+
+#: ../rules/base.xml.in.h:154
+msgid "Classmate PC"
+msgstr "Classmate PC"
+
+#: ../rules/base.xml.in.h:155
+msgid "CloGaelach"
+msgstr "CloGaelach"
+
+#: ../rules/base.xml.in.h:156
+msgid "Colemak"
+msgstr "Colemak"
+
+#: ../rules/base.xml.in.h:157
+msgid "Compaq Easy Access Keyboard"
+msgstr "Compaq Easy Access Keyboard"
+
+#: ../rules/base.xml.in.h:158
+msgid "Compaq Internet Keyboard (13 keys)"
+msgstr "Compaq \"Интернет\" клавиатураÑÑ‹ (13 клавиша менен)"
+
+#: ../rules/base.xml.in.h:159
+msgid "Compaq Internet Keyboard (18 keys)"
+msgstr "Compaq \"Интернет\" клавиатураÑÑ‹ (18 клавиша менен)"
+
+#: ../rules/base.xml.in.h:160
+msgid "Compaq Internet Keyboard (7 keys)"
+msgstr "Compaq \"Интернет\" клавиатураÑÑ‹ (7 клавиша менен)"
+
+#: ../rules/base.xml.in.h:161
+msgid "Compaq iPaq Keyboard"
+msgstr "Compaq iPaq Keyboard"
+
+#: ../rules/base.xml.in.h:162
+msgid "Compose key position"
+msgstr ""
+
+#: ../rules/base.xml.in.h:163
+msgid "Congo, Democratic Republic of the"
+msgstr "Конго, Демократикалык реÑпубликаÑÑ‹"
+
+#: ../rules/base.xml.in.h:164
+msgid "Control + Alt + Backspace"
+msgstr ""
+
+#: ../rules/base.xml.in.h:165
+msgid "Control is mapped to Alt keys, Alt is mapped to Win keys"
+msgstr ""
+
+#: ../rules/base.xml.in.h:166
+msgid "Control is mapped to Win keys (and the usual Ctrl keys)"
+msgstr ""
+
+#: ../rules/base.xml.in.h:167
+msgid "Creative Desktop Wireless 7000"
+msgstr ""
+
+#: ../rules/base.xml.in.h:168
+msgid "Crimean Tatar (Dobruca-1 Q)"
+msgstr "Крым татардык (Dobruca-1 Q)"
+
+#: ../rules/base.xml.in.h:169
+msgid "Crimean Tatar (Dobruca-2 Q)"
+msgstr "Крым татардык (Dobruca-2 Q)"
+
+#: ../rules/base.xml.in.h:170
+msgid "Crimean Tatar (Turkish Alt-Q)"
+msgstr "Крым татардык (түрк Alt-Q)"
+
+#: ../rules/base.xml.in.h:171
+msgid "Crimean Tatar (Turkish F)"
+msgstr "Крым татардык (түрк F)"
+
+#: ../rules/base.xml.in.h:172
+msgid "Crimean Tatar (Turkish Q)"
+msgstr "Крым татардык (түрк Q)"
+
+#: ../rules/base.xml.in.h:173
+msgid "Croatia"
+msgstr "ХорватиÑ"
+
+#: ../rules/base.xml.in.h:174
+msgid "Ctrl key position"
+msgstr "Ctrl клавишанын жайгашууÑу"
+
+#: ../rules/base.xml.in.h:175
+msgid "Ctrl+Shift"
+msgstr "Ctrl+Shift"
+
+#: ../rules/base.xml.in.h:176
+msgid "Cyrillic"
+msgstr "Кириллица"
+
+#: ../rules/base.xml.in.h:177
+msgid "Cyrillic with guillemets"
+msgstr ""
+
+#: ../rules/base.xml.in.h:178
+msgid "Cyrillic, Z and ZHE swapped"
+msgstr "Кирилл, З жана Ж орундарын алмаштырган"
+
+#: ../rules/base.xml.in.h:179
+msgid "Cze"
+msgstr "Чех"
+
+#: ../rules/base.xml.in.h:180
+msgid "Czechia"
+msgstr "ЧехиÑ"
+
+#: ../rules/base.xml.in.h:181
+msgid "DOS"
+msgstr "DOS"
+
+#: ../rules/base.xml.in.h:182
+msgid "DRC"
+msgstr "DRC"
+
+#: ../rules/base.xml.in.h:183
+msgid "DTK2000"
+msgstr "DTK2000"
+
+#: ../rules/base.xml.in.h:184
+msgid "Dan"
+msgstr "Дан"
+
+#: ../rules/base.xml.in.h:185
+msgid "Dead acute"
+msgstr "Dead acute атайын Ñимволу"
+
+#: ../rules/base.xml.in.h:186
+msgid "Dead grave acute"
+msgstr "Dead grave acute атайын Ñимволу"
+
+#: ../rules/base.xml.in.h:187
+msgid "Default numeric keypad keys"
+msgstr ""
+
+#: ../rules/base.xml.in.h:188
+msgid "Dell"
+msgstr "Dell"
+
+#: ../rules/base.xml.in.h:189
+msgid "Dell 101-key PC"
+msgstr "Dell 101-клавиша менен PC"
+
+#: ../rules/base.xml.in.h:190
+msgid "Dell Laptop/notebook Inspiron 6xxx/8xxx"
+msgstr "Dell Inspiron 6xxx/8xxx ноутбугу"
+
+#: ../rules/base.xml.in.h:191
+msgid "Dell Laptop/notebook Precision M series"
+msgstr "Dell Precision M ÑериÑлуу ноутбугу"
+
+#: ../rules/base.xml.in.h:192
+msgid "Dell Latitude series laptop"
+msgstr "Dell Latitude ÑериÑлуу ноутбугу"
+
+#: ../rules/base.xml.in.h:193
+msgid "Dell Precision M65"
+msgstr "Dell Precision M65"
+
+#: ../rules/base.xml.in.h:194
+msgid "Dell SK-8125"
+msgstr "Dell SK-8125"
+
+#: ../rules/base.xml.in.h:195
+msgid "Dell SK-8135"
+msgstr "Dell SK-8135"
+
+#: ../rules/base.xml.in.h:196
+msgid "Dell USB Multimedia Keyboard"
+msgstr "Dell USB Multimedia Keyboard"
+
+#: ../rules/base.xml.in.h:197
+msgid "Denmark"
+msgstr "ДаниÑ"
+
+#: ../rules/base.xml.in.h:198
+msgid "Deu"
+msgstr "Ðем"
+
+#: ../rules/base.xml.in.h:199
+msgid "Dexxa Wireless Desktop Keyboard"
+msgstr "Dexxa Wireless Desktop Keyboard"
+
+#: ../rules/base.xml.in.h:200
+msgid "Diamond 9801 / 9802 series"
+msgstr "Diamond 9801 / 9802 ÑериÑлары"
+
+#: ../rules/base.xml.in.h:201
+msgid "Dvorak"
+msgstr "Дровак"
+
+#: ../rules/base.xml.in.h:202
+msgid "Dvorak (UK Punctuation)"
+msgstr ""
+
+#: ../rules/base.xml.in.h:203
+msgid "Dvorak international"
+msgstr ""
+
+#: ../rules/base.xml.in.h:204
+msgid "Dvorak, Polish quotes on key 1"
+msgstr ""
+
+#: ../rules/base.xml.in.h:205
+msgid "Dvorak, Polish quotes on quotemark key"
+msgstr ""
+
+#: ../rules/base.xml.in.h:206
+msgid "E"
+msgstr "E"
+
+#: ../rules/base.xml.in.h:207
+msgid "Eastern"
+msgstr "Чыгыш"
+
+#: ../rules/base.xml.in.h:208
+msgid "Eliminate dead keys"
+msgstr ""
+
+#: ../rules/base.xml.in.h:209
+msgid "Enable extra typographic characters"
+msgstr ""
+
+#: ../rules/base.xml.in.h:210
+msgid "English"
+msgstr "ÐнглиÑ"
+
+#: ../rules/base.xml.in.h:211
+msgid "Ennyah DKB-1008"
+msgstr "Ennyah DKB-1008"
+
+#: ../rules/base.xml.in.h:212
+msgid "Enter on keypad"
+msgstr "Enter Ñандык клавиатураÑында"
+
+#: ../rules/base.xml.in.h:213
+msgid "Epo"
+msgstr "ЭÑп"
+
+#: ../rules/base.xml.in.h:214
+msgid "Ergonomic"
+msgstr "Ergonomic"
+
+#: ../rules/base.xml.in.h:215
+msgid "Esp"
+msgstr "ИÑп"
+
+#: ../rules/base.xml.in.h:216
+msgid "Esperanto"
+msgstr "ЭÑперанто"
+
+#: ../rules/base.xml.in.h:217
+msgid "Est"
+msgstr "ЭÑÑ‚"
+
+#: ../rules/base.xml.in.h:218
+msgid "Estonia"
+msgstr "ЭÑтониÑ"
+
+#: ../rules/base.xml.in.h:219
+msgid "Eth"
+msgstr "Эфп"
+
+#: ../rules/base.xml.in.h:220
+msgid "Ethiopia"
+msgstr "ЭфиопиÑ"
+
+#: ../rules/base.xml.in.h:221
+msgid "Evdev-managed keyboard"
+msgstr ""
+
+#: ../rules/base.xml.in.h:222
+msgid "Everex STEPnote"
+msgstr "Everex STEPnote"
+
+#: ../rules/base.xml.in.h:223
+msgid "Ewe"
+msgstr "Эве"
+
+#: ../rules/base.xml.in.h:224
+msgid "Extended"
+msgstr "Кеңейтилген"
+
+#: ../rules/base.xml.in.h:225
+msgid "Extended - Winkeys"
+msgstr ""
+
+#: ../rules/base.xml.in.h:226
+msgid "Extended Backslash"
+msgstr ""
+
+#: ../rules/base.xml.in.h:227
+msgid "F-letter (F) variant"
+msgstr ""
+
+#: ../rules/base.xml.in.h:228
+msgid "FL90"
+msgstr "FL90"
+
+#: ../rules/base.xml.in.h:229
+msgid "Fao"
+msgstr "Фар"
+
+#: ../rules/base.xml.in.h:230
+msgid "Faroe Islands"
+msgstr "Фаро аралдары"
+
+#: ../rules/base.xml.in.h:231
+msgid "Fin"
+msgstr "Фин"
+
+#: ../rules/base.xml.in.h:232
+msgid "Finland"
+msgstr "ФинлÑндиÑ"
+
+#. This assumes the KP_ abstract symbols are actually useful for some apps
+#. The description needs to be rewritten
+#: ../rules/base.xml.in.h:235
+msgid "Four-level key with abstract separators"
+msgstr ""
+
+#: ../rules/base.xml.in.h:236
+msgid "Four-level key with comma"
+msgstr ""
+
+#: ../rules/base.xml.in.h:237
+msgid "Four-level key with dot"
+msgstr ""
+
+#: ../rules/base.xml.in.h:238
+msgid "Four-level key with dot, latin-9 restriction"
+msgstr ""
+
+#: ../rules/base.xml.in.h:239
+msgid "Four-level key with momayyez"
+msgstr ""
+
+#: ../rules/base.xml.in.h:240
+msgid "Fra"
+msgstr "Фра"
+
+#: ../rules/base.xml.in.h:241
+msgid "France"
+msgstr "ФранциÑ"
+
+#: ../rules/base.xml.in.h:242
+msgid "French"
+msgstr "Француз"
+
+#: ../rules/base.xml.in.h:243
+msgid "French (Macintosh)"
+msgstr "Француз (Macintosh)"
+
+#: ../rules/base.xml.in.h:244
+msgid "French (legacy)"
+msgstr ""
+
+#: ../rules/base.xml.in.h:245
+msgid "French Dvorak"
+msgstr "Француз Dvorak"
+
+#: ../rules/base.xml.in.h:246
+msgid "French, Sun dead keys"
+msgstr "Француз,атайын (dead keys) Sun клавишалары менен"
+
+#: ../rules/base.xml.in.h:247
+msgid "French, eliminate dead keys"
+msgstr ""
+
+#: ../rules/base.xml.in.h:248
+msgid "Fujitsu-Siemens Computers AMILO laptop"
+msgstr "Fujitsu-Siemens Computers AMILO laptop"
+
+#: ../rules/base.xml.in.h:249
+msgid "Fula"
+msgstr "Фула"
+
+#: ../rules/base.xml.in.h:250
+msgid "GBr"
+msgstr "Брит"
+
+#: ../rules/base.xml.in.h:251
+msgid "Ga"
+msgstr "Га"
+
+#: ../rules/base.xml.in.h:252
+msgid "Generic 101-key PC"
+msgstr "Жалпы 101-клавишалары менен PC"
+
+#: ../rules/base.xml.in.h:253
+msgid "Generic 102-key (Intl) PC"
+msgstr "Жалпы 102-клавишалары менен (Инт.) PC"
+
+#: ../rules/base.xml.in.h:254
+msgid "Generic 104-key PC"
+msgstr "Жалпы 104-клавишалары менен PC"
+
+#: ../rules/base.xml.in.h:255
+msgid "Generic 105-key (Intl) PC"
+msgstr "Жалпы 105-клавишалары менен (Инт.) PC"
+
+#: ../rules/base.xml.in.h:256
+msgid "Genius Comfy KB-12e"
+msgstr "Genius Comfy KB-12e"
+
+#: ../rules/base.xml.in.h:257
+msgid "Genius Comfy KB-16M / Genius MM Keyboard KWD-910"
+msgstr "Genius Comfy KB-16M / Genius MM Keyboard KWD-910"
+
+#: ../rules/base.xml.in.h:258
+msgid "Genius Comfy KB-21e-Scroll"
+msgstr "Genius Comfy KB-21e-Scroll"
+
+#: ../rules/base.xml.in.h:259
+msgid "Genius KB-19e NB"
+msgstr "Genius KB-19e NB"
+
+#: ../rules/base.xml.in.h:260
+msgid "Genius KKB-2050HS"
+msgstr "Genius KKB-2050HS"
+
+#: ../rules/base.xml.in.h:261
+msgid "Geo"
+msgstr "Груз"
+
+#: ../rules/base.xml.in.h:262
+msgid "Georgia"
+msgstr "ГрузиÑ"
+
+#: ../rules/base.xml.in.h:263
+msgid "Georgian"
+msgstr "Грузиндик"
+
+#: ../rules/base.xml.in.h:264
+msgid "Georgian AZERTY Tskapo"
+msgstr "Грузин AZERTY Tskapo"
+
+#: ../rules/base.xml.in.h:265
+msgid "German (Macintosh)"
+msgstr "Ðемец (Macintosh)"
+
+#: ../rules/base.xml.in.h:266
+msgid "German, Sun dead keys"
+msgstr "Ðемец, атайын (dead keys) Sun клавишалары менен"
+
+#: ../rules/base.xml.in.h:267
+msgid "German, eliminate dead keys"
+msgstr ""
+
+#: ../rules/base.xml.in.h:268
+msgid "Germany"
+msgstr "ГерманиÑ"
+
+#: ../rules/base.xml.in.h:269
+msgid "Gha"
+msgstr "Ган"
+
+#: ../rules/base.xml.in.h:270
+msgid "Ghana"
+msgstr "Гана"
+
+#: ../rules/base.xml.in.h:271
+msgid "Gre"
+msgstr "Гре"
+
+#: ../rules/base.xml.in.h:272
+msgid "Greece"
+msgstr "ГрециÑ"
+
+#: ../rules/base.xml.in.h:273
+msgid "Group toggle on multiply/divide key"
+msgstr ""
+
+#: ../rules/base.xml.in.h:274
+msgid "Gui"
+msgstr "Гви"
+
+#: ../rules/base.xml.in.h:275
+msgid "Guinea"
+msgstr "ГвинеÑ"
+
+#: ../rules/base.xml.in.h:276
+msgid "Gujarati"
+msgstr "Гуджарати"
+
+#: ../rules/base.xml.in.h:277
+msgid "Gurmukhi"
+msgstr "Гурмукхи"
+
+#: ../rules/base.xml.in.h:278
+msgid "Gurmukhi Jhelum"
+msgstr "Гурмукхи Jhelum"
+
+#: ../rules/base.xml.in.h:279
+msgid "Gyration"
+msgstr "Гирашн"
+
+#: ../rules/base.xml.in.h:280
+msgid "Happy Hacking Keyboard"
+msgstr ""
+
+#: ../rules/base.xml.in.h:281
+msgid "Happy Hacking Keyboard for Mac"
+msgstr ""
+
+#: ../rules/base.xml.in.h:282
+msgid "Hausa"
+msgstr "Хауза"
+
+#: ../rules/base.xml.in.h:283
+msgid "Hewlett-Packard Internet Keyboard"
+msgstr "Hewlett-Packard Internet Keyboard"
+
+#: ../rules/base.xml.in.h:284
+msgid "Hewlett-Packard Omnibook 500 FA"
+msgstr "Hewlett-Packard Omnibook 500 FA"
+
+#: ../rules/base.xml.in.h:285
+msgid "Hewlett-Packard Omnibook 5xx"
+msgstr "Hewlett-Packard Omnibook 5xx"
+
+#: ../rules/base.xml.in.h:286
+msgid "Hewlett-Packard Omnibook 6000/6100"
+msgstr "Hewlett-Packard Omnibook 6000/6100"
+
+#: ../rules/base.xml.in.h:287
+msgid "Hewlett-Packard Omnibook XE3 GC"
+msgstr "Hewlett-Packard Omnibook XE3 GC"
+
+#: ../rules/base.xml.in.h:288
+msgid "Hewlett-Packard Omnibook XE3 GF"
+msgstr "Hewlett-Packard Omnibook XE3 GF"
+
+#: ../rules/base.xml.in.h:289
+msgid "Hewlett-Packard Omnibook XT1000"
+msgstr "Hewlett-Packard Omnibook XT1000"
+
+#: ../rules/base.xml.in.h:290
+msgid "Hewlett-Packard Pavilion ZT11xx"
+msgstr "Hewlett-Packard Pavilion ZT11xx"
+
+#: ../rules/base.xml.in.h:291
+msgid "Hewlett-Packard Pavilion dv5"
+msgstr "Hewlett-Packard Pavilion dv5"
+
+#: ../rules/base.xml.in.h:292
+msgid "Hewlett-Packard SK-250x Multimedia Keyboard"
+msgstr "Hewlett-Packard SK-250x Multimedia Keyboard"
+
+#: ../rules/base.xml.in.h:293
+msgid "Hewlett-Packard nx9020"
+msgstr "Hewlett-Packard nx9020"
+
+#: ../rules/base.xml.in.h:294
+msgid "Hexadecimal"
+msgstr ""
+
+#: ../rules/base.xml.in.h:295
+msgid "Hindi Bolnagri"
+msgstr "Хинди Болнагри"
+
+#: ../rules/base.xml.in.h:296
+msgid "Hindi Wx"
+msgstr "Хинди Wx"
+
+#: ../rules/base.xml.in.h:297
+msgid "Homophonic"
+msgstr ""
+
+#: ../rules/base.xml.in.h:298
+msgid "Honeywell Euroboard"
+msgstr "Honeywell Euroboard"
+
+#: ../rules/base.xml.in.h:299
+msgid "Hrv"
+msgstr "Хорв"
+
+#: ../rules/base.xml.in.h:300
+msgid "Hun"
+msgstr "Венг"
+
+#: ../rules/base.xml.in.h:301
+msgid "Hungary"
+msgstr "ВенгриÑ"
+
+#: ../rules/base.xml.in.h:302
+msgid "Hyper is mapped to Win-keys"
+msgstr ""
+
+#: ../rules/base.xml.in.h:303
+msgid "IBM (LST 1205-92)"
+msgstr "IBM (LST 1205-92)"
+
+#: ../rules/base.xml.in.h:304
+msgid "IBM Rapid Access"
+msgstr "IBM Rapid Access"
+
+#: ../rules/base.xml.in.h:305
+msgid "IBM Rapid Access II"
+msgstr "IBM Rapid Access II"
+
+#: ../rules/base.xml.in.h:306
+msgid "IBM Space Saver"
+msgstr "IBM Space Saver"
+
+#: ../rules/base.xml.in.h:307
+msgid "IBM ThinkPad 560Z/600/600E/A22E"
+msgstr "IBM ThinkPad 560Z/600/600E/A22E"
+
+#: ../rules/base.xml.in.h:308
+msgid "IBM ThinkPad 560Z/600/600E/A22E, Intl"
+msgstr "IBM ThinkPad 560Z/600/600E/A22E, Intl"
+
+#: ../rules/base.xml.in.h:309
+msgid "IBM ThinkPad R60/T60/R61/T61"
+msgstr "IBM ThinkPad R60/T60/R61/T61"
+
+#: ../rules/base.xml.in.h:310
+msgid "IBM ThinkPad Z60m/Z60t/Z61m/Z61t"
+msgstr "IBM ThinkPad Z60m/Z60t/Z61m/Z61t"
+
+#: ../rules/base.xml.in.h:311
+msgid "ISO Alternate"
+msgstr "Кошумча ISO"
+
+#: ../rules/base.xml.in.h:312
+msgid "Iceland"
+msgstr "ИÑландиÑ"
+
+#: ../rules/base.xml.in.h:313
+msgid "Igbo"
+msgstr "Igbo"
+
+#: ../rules/base.xml.in.h:314
+msgid "Include dead tilde"
+msgstr ""
+
+#: ../rules/base.xml.in.h:315
+msgid "Ind"
+msgstr "Инд"
+
+#: ../rules/base.xml.in.h:316
+msgid "India"
+msgstr "ИндиÑ"
+
+#: ../rules/base.xml.in.h:317
+msgid "International (AltGr dead keys)"
+msgstr ""
+
+#: ../rules/base.xml.in.h:318
+msgid "International (with dead keys)"
+msgstr ""
+
+#: ../rules/base.xml.in.h:319
+msgid "Inuktitut"
+msgstr "ИннуитÑкаÑ"
+
+#: ../rules/base.xml.in.h:320
+msgid "Iran"
+msgstr "Иран"
+
+#: ../rules/base.xml.in.h:321
+msgid "Iraq"
+msgstr "Ирак"
+
+#: ../rules/base.xml.in.h:322
+msgid "Ireland"
+msgstr "ИрландиÑ"
+
+#: ../rules/base.xml.in.h:323
+msgid "Irl"
+msgstr "Ирл"
+
+#: ../rules/base.xml.in.h:324
+msgid "Irn"
+msgstr "ФарÑ"
+
+#: ../rules/base.xml.in.h:325
+msgid "Irq"
+msgstr "Ирк"
+
+#: ../rules/base.xml.in.h:326
+msgid "Isl"
+msgstr "ИÑл"
+
+#: ../rules/base.xml.in.h:327
+msgid "Isr"
+msgstr "Ивр"
+
+#: ../rules/base.xml.in.h:328
+msgid "Israel"
+msgstr "Израиль"
+
+#: ../rules/base.xml.in.h:329
+msgid "Ita"
+msgstr "Ит"
+
+#: ../rules/base.xml.in.h:330
+msgid "Italy"
+msgstr "ИталиÑ"
+
+#: ../rules/base.xml.in.h:331
+msgid "Japan"
+msgstr "ЯпониÑ"
+
+#: ../rules/base.xml.in.h:332
+msgid "Japan (PC-98xx Series)"
+msgstr "Japan (PC-98xx Series)"
+
+#: ../rules/base.xml.in.h:333
+msgid "Japanese keyboard options"
+msgstr ""
+
+#: ../rules/base.xml.in.h:334
+msgid "Jpn"
+msgstr "Яп"
+
+#: ../rules/base.xml.in.h:335
+msgid "Kalmyk"
+msgstr "Калмык"
+
+#: ../rules/base.xml.in.h:336
+msgid "Kana"
+msgstr "Кана"
+
+#: ../rules/base.xml.in.h:337
+msgid "Kana Lock key is locking"
+msgstr ""
+
+#: ../rules/base.xml.in.h:338
+msgid "Kannada"
+msgstr "Каннада"
+
+#: ../rules/base.xml.in.h:339
+msgid "Kashubian"
+msgstr "Кашуб"
+
+#: ../rules/base.xml.in.h:340
+msgid "Kaz"
+msgstr "Каз"
+
+#: ../rules/base.xml.in.h:341
+msgid "Kazakh with Russian"
+msgstr "Казакча ОруÑча менен"
+
+#: ../rules/base.xml.in.h:342
+msgid "Kazakhstan"
+msgstr "КазахÑтан"
+
+#: ../rules/base.xml.in.h:343
+msgid "Key sequence to kill the X server"
+msgstr ""
+
+#: ../rules/base.xml.in.h:344
+msgid "Key to choose 3rd level"
+msgstr "3-чү денгÑÑлди тандоо баÑкычы"
+
+#: ../rules/base.xml.in.h:345
+msgid "Key(s) to change layout"
+msgstr ""
+
+#: ../rules/base.xml.in.h:346
+msgid "Keytronic FlexPro"
+msgstr "Keytronic FlexPro"
+
+#: ../rules/base.xml.in.h:347
+msgid "Kgz"
+msgstr "Кгз"
+
+#: ../rules/base.xml.in.h:348
+msgid "Khm"
+msgstr "Кхм"
+
+#: ../rules/base.xml.in.h:349
+msgid "Komi"
+msgstr "Коми"
+
+#: ../rules/base.xml.in.h:350
+msgid "Kor"
+msgstr "Кор"
+
+#: ../rules/base.xml.in.h:351
+msgid "Korea, Republic of"
+msgstr "ÐšÐ¾Ñ€ÐµÑ Ð ÐµÑпубликаÑÑ‹"
+
+#: ../rules/base.xml.in.h:352
+msgid "Ktunaxa"
+msgstr "Кутенай"
+
+#: ../rules/base.xml.in.h:353
+msgid "Kurdish, (F)"
+msgstr "Курд, (F)"
+
+#: ../rules/base.xml.in.h:354
+msgid "Kurdish, Arabic-Latin"
+msgstr "Курд, араб-латын"
+
+#: ../rules/base.xml.in.h:355
+msgid "Kurdish, Latin Alt-Q"
+msgstr "Курд, латын Alt-Q"
+
+#: ../rules/base.xml.in.h:356
+msgid "Kurdish, Latin Q"
+msgstr "Курд, латын Q"
+
+#: ../rules/base.xml.in.h:357
+msgid "Kyrgyzstan"
+msgstr "КыргызÑтан"
+
+#: ../rules/base.xml.in.h:358
+msgid "LAm"
+msgstr "ЛатÐм"
+
+#: ../rules/base.xml.in.h:359
+msgid "LEKP"
+msgstr "LEKP"
+
+#: ../rules/base.xml.in.h:360
+msgid "LEKPa"
+msgstr "LEKPa"
+
+#: ../rules/base.xml.in.h:361
+msgid "Lao"
+msgstr "Лао"
+
+#: ../rules/base.xml.in.h:362
+msgid "Laos"
+msgstr "ЛаоÑ"
+
+#: ../rules/base.xml.in.h:363
+msgid "Laptop/notebook Compaq (eg. Armada) Laptop Keyboard"
+msgstr ""
+
+#: ../rules/base.xml.in.h:364
+msgid "Laptop/notebook Compaq (eg. Presario) Internet Keyboard"
+msgstr ""
+
+#: ../rules/base.xml.in.h:365
+msgid "Laptop/notebook eMachines m68xx"
+msgstr ""
+
+#: ../rules/base.xml.in.h:366
+msgid "Latin"
+msgstr "Латын"
+
+#: ../rules/base.xml.in.h:367
+msgid "Latin American"
+msgstr "Латын американдык"
+
+#: ../rules/base.xml.in.h:368
+msgid "Latin Unicode"
+msgstr "Латын Unicode"
+
+#: ../rules/base.xml.in.h:369
+msgid "Latin Unicode qwerty"
+msgstr "Латын Unicode qwerty"
+
+#: ../rules/base.xml.in.h:370
+msgid "Latin qwerty"
+msgstr "Латын qwerty"
+
+#: ../rules/base.xml.in.h:371
+msgid "Latin unicode"
+msgstr "Латын unicode"
+
+#: ../rules/base.xml.in.h:372
+msgid "Latin unicode qwerty"
+msgstr "Латын unicode qwerty"
+
+#: ../rules/base.xml.in.h:373
+msgid "Latin with guillemets"
+msgstr ""
+
+#: ../rules/base.xml.in.h:374
+msgid "Latvia"
+msgstr "ЛатвиÑ"
+
+#: ../rules/base.xml.in.h:375
+msgid "Lav"
+msgstr "Лат"
+
+#: ../rules/base.xml.in.h:376
+msgid "Left Alt"
+msgstr "Сол Alt"
+
+#: ../rules/base.xml.in.h:377
+msgid "Left Alt (while pressed)"
+msgstr "Сол Alt клавишаÑÑ‹ (баÑылган учурда)"
+
+#: ../rules/base.xml.in.h:378
+msgid "Left Alt is swapped with Left Win"
+msgstr ""
+
+#: ../rules/base.xml.in.h:379
+msgid "Left Ctrl"
+msgstr "Сол Ctrl"
+
+#: ../rules/base.xml.in.h:380
+msgid "Left Ctrl+Left Shift"
+msgstr ""
+
+#: ../rules/base.xml.in.h:381
+msgid "Left Shift"
+msgstr "Сол Shift"
+
+#: ../rules/base.xml.in.h:382
+msgid "Left Win"
+msgstr "Сол Win"
+
+#: ../rules/base.xml.in.h:383
+msgid "Left Win (to first layout), Right Win/Menu (to last layout)"
+msgstr ""
+
+#: ../rules/base.xml.in.h:384
+msgid "Left Win (while pressed)"
+msgstr "Сол Alt клавишаÑÑ‹ (баÑылган учурда)"
+
+#: ../rules/base.xml.in.h:385
+msgid "Left hand"
+msgstr ""
+
+#: ../rules/base.xml.in.h:386
+msgid "Left handed Dvorak"
+msgstr ""
+
+#: ../rules/base.xml.in.h:387
+msgid "Legacy"
+msgstr "Legacy"
+
+#: ../rules/base.xml.in.h:388
+msgid "Legacy Wang 724"
+msgstr ""
+
+#. Actually, with KP_SEPARATOR, as the old keypad(comma)
+#: ../rules/base.xml.in.h:390
+msgid "Legacy key with comma"
+msgstr ""
+
+#: ../rules/base.xml.in.h:391
+msgid "Legacy key with dot"
+msgstr ""
+
+#: ../rules/base.xml.in.h:392
+msgid "Less-than/Greater-than"
+msgstr ""
+
+#: ../rules/base.xml.in.h:393
+msgid "Lithuania"
+msgstr "Литва"
+
+#: ../rules/base.xml.in.h:394
+msgid "Logitech Access Keyboard"
+msgstr "Logitech Access Keyboard"
+
+#: ../rules/base.xml.in.h:395
+msgid "Logitech Cordless Desktop"
+msgstr "Logitech Cordless Desktop"
+
+#: ../rules/base.xml.in.h:396
+msgid "Logitech Cordless Desktop (alternate option)"
+msgstr "Logitech Cordless Desktop (альтернативдик вариант)"
+
+#: ../rules/base.xml.in.h:397
+msgid "Logitech Cordless Desktop EX110"
+msgstr "Logitech Cordless Desktop EX110"
+
+#: ../rules/base.xml.in.h:398
+msgid "Logitech Cordless Desktop LX-300"
+msgstr "Logitech Cordless Desktop LX-300"
+
+#: ../rules/base.xml.in.h:399
+msgid "Logitech Cordless Desktop Navigator"
+msgstr "Logitech Cordless Desktop Navigator"
+
+#: ../rules/base.xml.in.h:400
+msgid "Logitech Cordless Desktop Optical"
+msgstr "Logitech Cordless Desktop Optical"
+
+#: ../rules/base.xml.in.h:401
+msgid "Logitech Cordless Desktop Pro (alternate option 2)"
+msgstr "Logitech Cordless Desktop Pro (альтернативдик вариант 2)"
+
+#: ../rules/base.xml.in.h:402
+msgid "Logitech Cordless Desktop iTouch"
+msgstr "Logitech Cordless Desktop iTouch"
+
+#: ../rules/base.xml.in.h:403
+msgid "Logitech Cordless Freedom/Desktop Navigator"
+msgstr "Logitech Cordless Freedom/Desktop Navigator"
+
+#: ../rules/base.xml.in.h:404
+msgid "Logitech G15 extra keys via G15daemon"
+msgstr "Logitech G15 extra keys via G15daemon"
+
+#: ../rules/base.xml.in.h:405
+msgid "Logitech Generic Keyboard"
+msgstr "Logitech Generic Keyboard"
+
+#: ../rules/base.xml.in.h:406
+msgid "Logitech Internet 350 Keyboard"
+msgstr "Logitech Internet 350 Keyboard"
+
+#: ../rules/base.xml.in.h:407
+msgid "Logitech Internet Keyboard"
+msgstr "Logitech Internet Keyboard"
+
+#: ../rules/base.xml.in.h:408
+msgid "Logitech Internet Navigator Keyboard"
+msgstr "Logitech Internet Navigator Keyboard"
+
+#: ../rules/base.xml.in.h:409
+msgid "Logitech Media Elite Keyboard"
+msgstr "Logitech Media Elite Keyboard"
+
+#: ../rules/base.xml.in.h:410
+msgid "Logitech Ultra-X Cordless Media Desktop Keyboard"
+msgstr "Logitech Ultra-X Cordless Media Desktop Keyboard"
+
+#: ../rules/base.xml.in.h:411
+msgid "Logitech Ultra-X Keyboard"
+msgstr "Logitech Ultra-X Keyboard"
+
+#: ../rules/base.xml.in.h:412
+msgid "Logitech diNovo Edge Keyboard"
+msgstr "Logitech diNovo Edge Keyboard"
+
+#: ../rules/base.xml.in.h:413
+msgid "Logitech diNovo Keyboard"
+msgstr "Logitech diNovo Keyboard"
+
+#: ../rules/base.xml.in.h:414
+msgid "Logitech iTouch"
+msgstr "Logitech iTouch"
+
+#: ../rules/base.xml.in.h:415
+msgid "Logitech iTouch Cordless Keyboard (model Y-RB6)"
+msgstr "Logitech iTouch Cordless Keyboard (Y-RB6 модели)"
+
+#: ../rules/base.xml.in.h:416
+msgid "Logitech iTouch Internet Navigator Keyboard SE"
+msgstr "Logitech iTouch Internet Navigator Keyboard SE"
+
+#: ../rules/base.xml.in.h:417
+msgid "Logitech iTouch Internet Navigator Keyboard SE (USB)"
+msgstr "Logitech iTouch Internet Navigator Keyboard SE (USB)"
+
+#: ../rules/base.xml.in.h:418
+msgid "Lower Sorbian"
+msgstr ""
+
+#: ../rules/base.xml.in.h:419
+msgid "Lower Sorbian (qwertz)"
+msgstr ""
+
+#: ../rules/base.xml.in.h:420
+msgid "Ltu"
+msgstr "Лит"
+
+#: ../rules/base.xml.in.h:421
+msgid "MESS"
+msgstr "MESS"
+
+#: ../rules/base.xml.in.h:422
+msgid "MNE"
+msgstr "MNE"
+
+#: ../rules/base.xml.in.h:423
+msgid "MacBook/MacBook Pro"
+msgstr "MacBook/MacBook Pro"
+
+#: ../rules/base.xml.in.h:424
+msgid "MacBook/MacBook Pro (Intl)"
+msgstr "MacBook/MacBook Pro (Инт.)"
+
+#: ../rules/base.xml.in.h:425
+msgid "Macedonia"
+msgstr "МакедониÑ"
+
+#: ../rules/base.xml.in.h:426
+msgid "Macintosh"
+msgstr "Macintosh"
+
+#: ../rules/base.xml.in.h:427
+msgid "Macintosh Old"
+msgstr "ЭÑки Macintosh"
+
+#: ../rules/base.xml.in.h:428
+msgid "Macintosh, Sun dead keys"
+msgstr "Macintosh, атайын (dead keys) Sun клавишалары менен"
+
+#: ../rules/base.xml.in.h:429
+msgid "Macintosh, eliminate dead keys"
+msgstr ""
+
+#: ../rules/base.xml.in.h:430
+msgid "Make CapsLock an additional Backspace"
+msgstr "CapsLock кошумча Боштук клавиша катары колдонуу"
+
+#: ../rules/base.xml.in.h:431
+msgid "Make CapsLock an additional Ctrl"
+msgstr "CapsLock кошумча Ctrl клавиша катары колдонуу"
+
+#: ../rules/base.xml.in.h:432
+msgid "Make CapsLock an additional ESC"
+msgstr "CapsLock кошумча ESC клавиша катары колдонуу"
+
+#: ../rules/base.xml.in.h:433
+msgid "Make CapsLock an additional Hyper"
+msgstr "CapsLock кошумча Hyper клавиша катары колдонуу"
+
+#: ../rules/base.xml.in.h:434
+msgid "Make CapsLock an additional NumLock"
+msgstr "CapsLock кошумча NumLock клавиша катары колдонуу"
+
+#: ../rules/base.xml.in.h:435
+msgid "Make CapsLock an additional Super"
+msgstr "CapsLock кошумча Super клавиша катары колдонуу"
+
+#: ../rules/base.xml.in.h:436
+msgid "Mal"
+msgstr "Мал"
+
+#: ../rules/base.xml.in.h:437
+msgid "Malayalam"
+msgstr "Малайaлам"
+
+#: ../rules/base.xml.in.h:438
+msgid "Malayalam Lalitha"
+msgstr "Малайaлам (Lalitha)"
+
+#: ../rules/base.xml.in.h:439
+msgid "Maldives"
+msgstr "Мальдивалар"
+
+#: ../rules/base.xml.in.h:440
+msgid "Malta"
+msgstr "Мальта"
+
+#: ../rules/base.xml.in.h:441
+msgid "Maltese keyboard with US layout"
+msgstr ""
+
+#: ../rules/base.xml.in.h:442
+msgid "Mao"
+msgstr "Мао"
+
+#: ../rules/base.xml.in.h:443
+msgid "Maori"
+msgstr "Маори"
+
+#: ../rules/base.xml.in.h:444
+msgid "Memorex MX1998"
+msgstr "Memorex MX1998"
+
+#: ../rules/base.xml.in.h:445
+msgid "Memorex MX2500 EZ-Access Keyboard"
+msgstr "Memorex MX2500 EZ-Access Keyboard"
+
+#: ../rules/base.xml.in.h:446
+msgid "Memorex MX2750"
+msgstr "Memorex MX2750"
+
+#: ../rules/base.xml.in.h:447
+msgid "Menu"
+msgstr "Menu"
+
+#: ../rules/base.xml.in.h:448
+msgid "Meta is mapped to Left Win"
+msgstr ""
+
+#: ../rules/base.xml.in.h:449
+msgid "Meta is mapped to Win keys"
+msgstr ""
+
+#: ../rules/base.xml.in.h:450
+msgid "Microsoft Comfort Curve Keyboard 2000"
+msgstr "Microsoft Comfort Curve Keyboard 2000"
+
+#: ../rules/base.xml.in.h:451
+msgid "Microsoft Internet Keyboard"
+msgstr "Microsoft Internet Keyboard"
+
+#: ../rules/base.xml.in.h:452
+msgid "Microsoft Internet Keyboard Pro, Swedish"
+msgstr "Microsoft Internet Keyboard Pro, швед"
+
+#: ../rules/base.xml.in.h:453
+msgid "Microsoft Natural"
+msgstr "Microsoft Natural"
+
+#: ../rules/base.xml.in.h:454
+msgid "Microsoft Natural Keyboard Elite"
+msgstr "Microsoft Natural Keyboard Elite"
+
+#: ../rules/base.xml.in.h:455
+msgid "Microsoft Natural Keyboard Pro / Microsoft Internet Keyboard Pro"
+msgstr "Microsoft Natural Keyboard Pro / Microsoft Internet Keyboard Pro"
+
+#: ../rules/base.xml.in.h:456
+msgid "Microsoft Natural Keyboard Pro OEM"
+msgstr "Microsoft Natural Keyboard Pro OEM"
+
+#: ../rules/base.xml.in.h:457
+msgid "Microsoft Natural Keyboard Pro USB / Microsoft Internet Keyboard Pro"
+msgstr "Microsoft Natural Keyboard Pro USB / Microsoft Internet Keyboard Pro"
+
+#: ../rules/base.xml.in.h:458
+msgid "Microsoft Natural Wireless Ergonomic Keyboard 7000"
+msgstr "Microsoft Natural Wireless Ergonomic Keyboard 7000"
+
+#: ../rules/base.xml.in.h:459
+msgid "Microsoft Office Keyboard"
+msgstr "Microsoft Office Keyboard"
+
+#: ../rules/base.xml.in.h:460
+msgid "Microsoft Wireless Multimedia Keyboard 1.0A"
+msgstr "Microsoft Wireless Multimedia Keyboard 1.0A"
+
+#: ../rules/base.xml.in.h:461
+msgid "Miscellaneous compatibility options"
+msgstr ""
+
+#: ../rules/base.xml.in.h:462
+msgid "Mkd"
+msgstr "Мак"
+
+#: ../rules/base.xml.in.h:463
+msgid "Mlt"
+msgstr "Мальт"
+
+#: ../rules/base.xml.in.h:464
+msgid "Mmr"
+msgstr "МьÑнм"
+
+#: ../rules/base.xml.in.h:465
+msgid "Mng"
+msgstr "Монг"
+
+#: ../rules/base.xml.in.h:466
+msgid "Mongolia"
+msgstr "МонголиÑ"
+
+#: ../rules/base.xml.in.h:467
+msgid "Montenegro"
+msgstr "ЧерногориÑ"
+
+#: ../rules/base.xml.in.h:468
+msgid "Morocco"
+msgstr "Морокко"
+
+#: ../rules/base.xml.in.h:469
+msgid "Multilingual"
+msgstr "Көп тилдүү"
+
+#: ../rules/base.xml.in.h:470
+msgid "Multilingual, first part"
+msgstr "Көп тилдүү, биринчи бөлүк"
+
+#: ../rules/base.xml.in.h:471
+msgid "Multilingual, second part"
+msgstr "Көп тилдүү, Ñкинчи бөлүк"
+
+#: ../rules/base.xml.in.h:472
+msgid "Myanmar"
+msgstr "МьÑнмар"
+
+#: ../rules/base.xml.in.h:473
+msgid "NICOLA-F style Backspace"
+msgstr ""
+
+#: ../rules/base.xml.in.h:474
+msgid "NLA"
+msgstr "NLA"
+
+#: ../rules/base.xml.in.h:475
+msgid "Nativo"
+msgstr "Nativo"
+
+#: ../rules/base.xml.in.h:476
+msgid "Nativo for Esperanto"
+msgstr "Nativo ÑÑперанто үчүн"
+
+#: ../rules/base.xml.in.h:477
+msgid "Nativo for USA keyboards"
+msgstr ""
+
+#: ../rules/base.xml.in.h:478
+msgid "Neo 2"
+msgstr "Neo 2"
+
+#: ../rules/base.xml.in.h:479
+msgid "Nep"
+msgstr "Ðеп"
+
+#: ../rules/base.xml.in.h:480
+msgid "Nepal"
+msgstr "Ðепал"
+
+#: ../rules/base.xml.in.h:481
+msgid "Netherlands"
+msgstr "ÐидерландиÑ"
+
+#: ../rules/base.xml.in.h:482
+msgid "New phonetic"
+msgstr "Жаңы фонетикалык"
+
+#: ../rules/base.xml.in.h:483
+msgid "Nig"
+msgstr "Ðгр"
+
+#: ../rules/base.xml.in.h:484
+msgid "Nigeria"
+msgstr "ÐигериÑ"
+
+#: ../rules/base.xml.in.h:485
+msgid "Nld"
+msgstr "Флам"
+
+#: ../rules/base.xml.in.h:486
+msgid "Non-breakable space character at fourth level"
+msgstr ""
+
+#: ../rules/base.xml.in.h:487
+msgid "Non-breakable space character at fourth level, thin non-breakable space character at sixth level"
+msgstr ""
+
+#: ../rules/base.xml.in.h:488
+msgid "Non-breakable space character at fourth level, thin non-breakable space character at sixth level (via Ctrl+Shift)"
+msgstr ""
+
+#: ../rules/base.xml.in.h:489
+msgid "Non-breakable space character at second level"
+msgstr ""
+
+#: ../rules/base.xml.in.h:490
+msgid "Non-breakable space character at third level"
+msgstr ""
+
+#: ../rules/base.xml.in.h:491
+msgid "Non-breakable space character at third level, nothing at fourth level"
+msgstr ""
+
+#: ../rules/base.xml.in.h:492
+msgid "Non-breakable space character at third level, thin non-breakable space character at fourth level"
+msgstr ""
+
+#: ../rules/base.xml.in.h:493
+msgid "Nor"
+msgstr "Ðор"
+
+#: ../rules/base.xml.in.h:494
+msgid "Northern Saami"
+msgstr "Түндүк Саами"
+
+#: ../rules/base.xml.in.h:495
+msgid "Northern Saami, eliminate dead keys"
+msgstr ""
+
+#: ../rules/base.xml.in.h:496
+msgid "Northgate OmniKey 101"
+msgstr "Northgate OmniKey 101"
+
+#: ../rules/base.xml.in.h:497
+msgid "Norway"
+msgstr "ÐорвегиÑ"
+
+#: ../rules/base.xml.in.h:498
+msgid "NumLock"
+msgstr "NumLock"
+
+#: ../rules/base.xml.in.h:499
+msgid "Numeric keypad delete key behaviour"
+msgstr ""
+
+#: ../rules/base.xml.in.h:500
+msgid "Numeric keypad keys work as with Mac"
+msgstr ""
+
+#: ../rules/base.xml.in.h:501
+msgid "Numeric keypad layout selection"
+msgstr ""
+
+#: ../rules/base.xml.in.h:502
+msgid "OADG 109A"
+msgstr "OADG 109A"
+
+#: ../rules/base.xml.in.h:503
+msgid "OLPC"
+msgstr "OLPC"
+
+#: ../rules/base.xml.in.h:504
+msgid "OLPC Dari"
+msgstr "OLPC Dari"
+
+#: ../rules/base.xml.in.h:505
+msgid "OLPC Pashto"
+msgstr "OLPC Pashto"
+
+#: ../rules/base.xml.in.h:506
+msgid "OLPC Southern Uzbek"
+msgstr "Түштүк-өзбөк OLPC"
+
+#: ../rules/base.xml.in.h:507
+msgid "Occitan"
+msgstr "ОкÑитандык"
+
+#: ../rules/base.xml.in.h:508
+msgid "Ogham"
+msgstr "Огхам"
+
+#: ../rules/base.xml.in.h:509
+msgid "Ogham IS434"
+msgstr "Огхам IS434"
+
+#: ../rules/base.xml.in.h:510
+msgid "Oriya"
+msgstr "ОрийÑ"
+
+#: ../rules/base.xml.in.h:511
+msgid "Ortek MCK-800 MM/Internet keyboard"
+msgstr "Ortek MCK-800 MM/Internet keyboard"
+
+#: ../rules/base.xml.in.h:512
+msgid "Ossetian"
+msgstr "ОÑетиндик"
+
+#: ../rules/base.xml.in.h:513
+msgid "Ossetian, Winkeys"
+msgstr "ОÑетиндик Windows клавиатураÑÑ‹"
+
+#: ../rules/base.xml.in.h:514
+msgid "Ossetian, legacy"
+msgstr "ОÑетиндик, ÑÑкирген"
+
+#: ../rules/base.xml.in.h:515
+msgid "PC-98xx Series"
+msgstr "PC-98xx"
+
+#: ../rules/base.xml.in.h:516
+msgid "Pak"
+msgstr "Пак"
+
+#: ../rules/base.xml.in.h:517
+msgid "Pakistan"
+msgstr "ПакиÑтан"
+
+#: ../rules/base.xml.in.h:518
+msgid "Pashto"
+msgstr "Пуштундук"
+
+#: ../rules/base.xml.in.h:519
+msgid "Pattachote"
+msgstr "Паттачот"
+
+#: ../rules/base.xml.in.h:520
+msgid "Persian, with Persian Keypad"
+msgstr ""
+
+#: ../rules/base.xml.in.h:521
+msgid "Phonetic"
+msgstr "Фонетикалык"
+
+#: ../rules/base.xml.in.h:522
+msgid "Phonetic Winkeys"
+msgstr "Win клавишалары менен фонетикалык"
+
+#: ../rules/base.xml.in.h:523
+msgid "Pol"
+msgstr "ПольÑк"
+
+#: ../rules/base.xml.in.h:524
+msgid "Poland"
+msgstr "Польша"
+
+#: ../rules/base.xml.in.h:525
+msgid "Polytonic"
+msgstr "Полифоникалык"
+
+#: ../rules/base.xml.in.h:526
+msgid "Portugal"
+msgstr "ПортугалиÑ"
+
+#: ../rules/base.xml.in.h:527
+msgid "Probhat"
+msgstr "Пробат"
+
+#: ../rules/base.xml.in.h:528
+msgid "Programmer Dvorak"
+msgstr ""
+
+#: ../rules/base.xml.in.h:529
+msgid "Propeller Voyager (KTEZ-1000)"
+msgstr "Propeller Voyager (KTEZ-1000)"
+
+#: ../rules/base.xml.in.h:530
+msgid "Prt"
+msgstr "Порт"
+
+#: ../rules/base.xml.in.h:531
+msgid "QTronix Scorpius 98N+"
+msgstr "QTronix Scorpius 98N+"
+
+#: ../rules/base.xml.in.h:532
+msgid "Right Alt"
+msgstr "Оң Alt"
+
+#: ../rules/base.xml.in.h:533
+msgid "Right Alt (while pressed)"
+msgstr "Оң Alt клавишаÑÑ‹ (баÑылган учурда)"
+
+#: ../rules/base.xml.in.h:534
+msgid "Right Alt key never chooses 3rd level"
+msgstr "Оң Alt клавишаÑÑ‹ Ñч качан 3-чү денгÑÑлди тандабайт"
+
+#: ../rules/base.xml.in.h:535
+msgid "Right Alt, Shift+Right Alt key is Multi_Key"
+msgstr "Оң Alt, Shift жана оң Alt бирге Multi_Key катары амал жаÑайт"
+
+#: ../rules/base.xml.in.h:536
+msgid "Right Ctrl"
+msgstr "Оң Ctrl"
+
+#: ../rules/base.xml.in.h:537
+msgid "Right Ctrl (while pressed)"
+msgstr "Оң Alt клавишаÑÑ‹ (баÑылган учурда)"
+
+#: ../rules/base.xml.in.h:538
+msgid "Right Ctrl as Right Alt"
+msgstr "Оң Ctrl оң Alt клавишадай амал жаÑайт"
+
+#: ../rules/base.xml.in.h:539
+msgid "Right Shift"
+msgstr "Оң Shift"
+
+#: ../rules/base.xml.in.h:540
+msgid "Right Win"
+msgstr "Оң Win"
+
+#: ../rules/base.xml.in.h:541
+msgid "Right Win (while pressed)"
+msgstr "Оң Win клавишаÑÑ‹ (баÑылган учурда)"
+
+#: ../rules/base.xml.in.h:542
+msgid "Right hand"
+msgstr ""
+
+#: ../rules/base.xml.in.h:543
+msgid "Right handed Dvorak"
+msgstr "Dvorak оң колдуу адамдар үчүн"
+
+#: ../rules/base.xml.in.h:544
+msgid "Romania"
+msgstr "РумыниÑ"
+
+#: ../rules/base.xml.in.h:545
+msgid "Romanian keyboard with German letters"
+msgstr "Румындык клавиатура немец ариптери менен"
+
+#: ../rules/base.xml.in.h:546
+msgid "Romanian keyboard with German letters, eliminate dead keys"
+msgstr "Румындык клавиатура немец ариптери менен, атайын (dead keys) клавишаларÑыз"
+
+#: ../rules/base.xml.in.h:547
+msgid "Rou"
+msgstr "Рум"
+
+#: ../rules/base.xml.in.h:548
+msgid "Rus"
+msgstr "РуÑ"
+
+#: ../rules/base.xml.in.h:549
+msgid "Russia"
+msgstr "РоÑÑиÑ"
+
+#: ../rules/base.xml.in.h:550
+msgid "Russian"
+msgstr "ОруÑча"
+
+#: ../rules/base.xml.in.h:551
+msgid "Russian phonetic"
+msgstr "ОруÑча фонетикалык"
+
+#: ../rules/base.xml.in.h:552
+msgid "Russian phonetic Dvorak"
+msgstr "ОруÑча фонетикалык Dvorak"
+
+#: ../rules/base.xml.in.h:553
+msgid "Russian phonetic, eliminate dead keys"
+msgstr "ОруÑча фонетикалык, атайын (dead keys) клавишаларÑыз"
+
+#: ../rules/base.xml.in.h:554
+msgid "Russian with Kazakh"
+msgstr "ОруÑча Казакча менен"
+
+#: ../rules/base.xml.in.h:555
+msgid "SILVERCREST Multimedia Wireless Keyboard"
+msgstr "SILVERCREST Multimedia Wireless Keyboard"
+
+#: ../rules/base.xml.in.h:556
+msgid "SK-1300"
+msgstr "SK-1300"
+
+#: ../rules/base.xml.in.h:557
+msgid "SK-2500"
+msgstr "SK-2500"
+
+#: ../rules/base.xml.in.h:558
+msgid "SK-6200"
+msgstr "SK-6200"
+
+#: ../rules/base.xml.in.h:559
+msgid "SK-7100"
+msgstr "SK-7100"
+
+#: ../rules/base.xml.in.h:560 ../rules/base.extras.xml.in.h:7
+msgid "SRB"
+msgstr "SRB"
+
+#: ../rules/base.xml.in.h:561
+msgid "SVEN Ergonomic 2500"
+msgstr "SVEN Ergonomic 2500"
+
+#: ../rules/base.xml.in.h:562
+msgid "SVEN Slim 303"
+msgstr "SVEN Slim 303"
+
+#: ../rules/base.xml.in.h:563
+msgid "Samsung SDM 4500P"
+msgstr "Samsung SDM 4500P"
+
+#: ../rules/base.xml.in.h:564
+msgid "Samsung SDM 4510P"
+msgstr "Samsung SDM 4510P"
+
+#: ../rules/base.xml.in.h:565
+msgid "Scroll Lock"
+msgstr "Scroll Lock"
+
+#: ../rules/base.xml.in.h:566
+msgid "ScrollLock"
+msgstr "ScrollLock"
+
+#: ../rules/base.xml.in.h:567
+msgid "Secwepemctsin"
+msgstr "Secwepemctsin"
+
+#: ../rules/base.xml.in.h:568
+msgid "Semi-colon on third level"
+msgstr ""
+
+#: ../rules/base.xml.in.h:569 ../rules/base.extras.xml.in.h:8
+msgid "Serbia"
+msgstr "СербиÑ"
+
+#: ../rules/base.xml.in.h:570
+msgid "Shift cancels CapsLock"
+msgstr "Shift CapsLock амалын очүрөт"
+
+#: ../rules/base.xml.in.h:571
+msgid "Shift does not cancel NumLock, chooses 3d level instead"
+msgstr ""
+
+#: ../rules/base.xml.in.h:572
+msgid "Shift with numeric keypad keys works as in MS Windows"
+msgstr "Shift Ñандык клавиатура клавишалары менен MS Windows'тогу клавишадай амал жаÑайт"
+
+#: ../rules/base.xml.in.h:573
+msgid "Shift+CapsLock"
+msgstr "Shift+CapsLock"
+
+#: ../rules/base.xml.in.h:574
+msgid "Simple"
+msgstr "Жөнөкөй"
+
+#: ../rules/base.xml.in.h:575
+msgid "Slovakia"
+msgstr "СловакиÑ"
+
+#: ../rules/base.xml.in.h:576
+msgid "Slovenia"
+msgstr "СловениÑ"
+
+#: ../rules/base.xml.in.h:577
+msgid "South Africa"
+msgstr "Түштүк Ðфрика"
+
+#: ../rules/base.xml.in.h:578
+msgid "Southern Uzbek"
+msgstr "Түштүк өзбөкчө"
+
+#: ../rules/base.xml.in.h:579
+msgid "Spain"
+msgstr "ИÑпаниÑ"
+
+#: ../rules/base.xml.in.h:580
+msgid "Special keys (Ctrl+Alt+&lt;key&gt;) handled in a server"
+msgstr "Ðтайын клавишалар (Ctrl+Alt+&lt;клв&gt;) Ñервер менен долборлонот"
+
+#: ../rules/base.xml.in.h:581
+msgid "SrL"
+msgstr "ШрЛ"
+
+#: ../rules/base.xml.in.h:582
+msgid "Sri Lanka"
+msgstr "Шри Ланка"
+
+#: ../rules/base.xml.in.h:583
+msgid "Standard"
+msgstr "Стандарттык"
+
+#: ../rules/base.xml.in.h:584
+msgid "Standard (Cedilla)"
+msgstr "Стандарттык (Седиль)"
+
+#. RSTU 2019-91
+#: ../rules/base.xml.in.h:586
+msgid "Standard RSTU"
+msgstr "Стандарттык RSTU"
+
+#. RSTU 2019-91
+#: ../rules/base.xml.in.h:588
+msgid "Standard RSTU on Russian layout"
+msgstr "Стандарттык RSTU, оруÑча"
+
+#: ../rules/base.xml.in.h:589
+msgid "Sun Type 5/6"
+msgstr "Sun Type 5/6"
+
+#: ../rules/base.xml.in.h:590
+msgid "Sun dead keys"
+msgstr "Ðтайын (dead keys) Sun клавишалар"
+
+#: ../rules/base.xml.in.h:591
+msgid "Super Power Multimedia Keyboard"
+msgstr "Super Power Multimedia Keyboard"
+
+#: ../rules/base.xml.in.h:592
+msgid "Svdvorak"
+msgstr "Svdvorak"
+
+#: ../rules/base.xml.in.h:593
+msgid "Svk"
+msgstr "Слов"
+
+#: ../rules/base.xml.in.h:594
+msgid "Svn"
+msgstr "Cловен"
+
+#: ../rules/base.xml.in.h:595
+msgid "Swap Ctrl and CapsLock"
+msgstr "Ctrl жана CapsLock клавишаларды алмаштыруу"
+
+#: ../rules/base.xml.in.h:596
+msgid "Swap ESC and CapsLock"
+msgstr "ESC жана CapsLock клавишаларды алмаштыруу"
+
+#: ../rules/base.xml.in.h:597
+msgid "Swe"
+msgstr "Швед"
+
+#: ../rules/base.xml.in.h:598
+msgid "Sweden"
+msgstr "ШвециÑ"
+
+#: ../rules/base.xml.in.h:599
+msgid "Switzerland"
+msgstr "ШвейцариÑ"
+
+#: ../rules/base.xml.in.h:600
+msgid "Symplon PaceBook (tablet PC)"
+msgstr "Symplon PaceBook (чөнтөк ПК)"
+
+#: ../rules/base.xml.in.h:601
+msgid "Syr"
+msgstr "ÐÑÑ"
+
+#: ../rules/base.xml.in.h:602
+msgid "Syria"
+msgstr "Сирийдик"
+
+#: ../rules/base.xml.in.h:603
+msgid "Syriac"
+msgstr "Сирийдик"
+
+#: ../rules/base.xml.in.h:604
+msgid "Syriac phonetic"
+msgstr "Сирийдик фонетикалык"
+
+#: ../rules/base.xml.in.h:605
+msgid "TIS-820.2538"
+msgstr "TIS-820.2538"
+
+#: ../rules/base.xml.in.h:606
+msgid "Tajikistan"
+msgstr "ТаджикиÑтан"
+
+#: ../rules/base.xml.in.h:607
+msgid "Tamil"
+msgstr "Тамильдик"
+
+#: ../rules/base.xml.in.h:608
+msgid "Tamil TAB Typewriter"
+msgstr "Тамильдик \"БаÑма машинаÑÑ‹\" TAB"
+
+#: ../rules/base.xml.in.h:609
+msgid "Tamil TSCII Typewriter"
+msgstr "Тамиль TSCII печать машинаÑÑ‹"
+
+#: ../rules/base.xml.in.h:610
+msgid "Tamil Unicode"
+msgstr "Тамиль Unicode"
+
+#: ../rules/base.xml.in.h:611
+msgid "Targa Visionary 811"
+msgstr "Targa Visionary 811"
+
+#: ../rules/base.xml.in.h:612
+msgid "Tatar"
+msgstr "Татар"
+
+#: ../rules/base.xml.in.h:613
+msgid "Telugu"
+msgstr "Телугу"
+
+#: ../rules/base.xml.in.h:614
+msgid "Tha"
+msgstr "Тай"
+
+#: ../rules/base.xml.in.h:615
+msgid "Thailand"
+msgstr "Тайланд"
+
+#: ../rules/base.xml.in.h:616
+msgid "Tibetan"
+msgstr "Тибет"
+
+#: ../rules/base.xml.in.h:617
+msgid "Tibetan (with ASCII numerals)"
+msgstr "Тибет (ASCII номерлери менен)"
+
+#: ../rules/base.xml.in.h:618
+msgid "Tifinagh"
+msgstr "Тифинагдык"
+
+#: ../rules/base.xml.in.h:619
+msgid "Tifinagh Alternative"
+msgstr "Тифинагдык альтернативдик"
+
+#: ../rules/base.xml.in.h:620
+msgid "Tifinagh Alternative Phonetic"
+msgstr "Тифинагдык альтернативдик фонетикалык"
+
+#: ../rules/base.xml.in.h:621
+msgid "Tifinagh Extended"
+msgstr "Тифинагдык кеңейтилген"
+
+#: ../rules/base.xml.in.h:622
+msgid "Tifinagh Extended Phonetic"
+msgstr "Тифинагдык кеңейтилген фонетикалык"
+
+#: ../rules/base.xml.in.h:623
+msgid "Tifinagh Phonetic"
+msgstr "Тифинагдык фонетикалык"
+
+#: ../rules/base.xml.in.h:624
+msgid "Tilde (~) variant"
+msgstr "Тильда (~) менен вариант"
+
+#: ../rules/base.xml.in.h:625
+msgid "Tjk"
+msgstr "Тадж"
+
+#: ../rules/base.xml.in.h:626
+msgid "To the corresponding key in a Dvorak keyboard."
+msgstr ""
+
+#: ../rules/base.xml.in.h:627
+msgid "To the corresponding key in a Qwerty keyboard."
+msgstr ""
+
+#: ../rules/base.xml.in.h:628
+msgid "Toshiba Satellite S3000"
+msgstr "Toshiba Satellite S3000"
+
+#: ../rules/base.xml.in.h:629
+msgid "Traditional phonetic"
+msgstr "Традициондук фонетикалык"
+
+#: ../rules/base.xml.in.h:630
+msgid "Trust Direct Access Keyboard"
+msgstr "Trust Direct Access Keyboard"
+
+#: ../rules/base.xml.in.h:631
+msgid "Trust Slimline"
+msgstr "Trust Slimline"
+
+#: ../rules/base.xml.in.h:632
+msgid "Trust Wireless Keyboard Classic"
+msgstr "Trust Wireless Keyboard Classic"
+
+#: ../rules/base.xml.in.h:633
+msgid "Tur"
+msgstr "Тур"
+
+#: ../rules/base.xml.in.h:634
+msgid "Turkey"
+msgstr "ТурциÑ"
+
+#: ../rules/base.xml.in.h:635
+msgid "Turkmenistan"
+msgstr "ТүркмениÑтан"
+
+#: ../rules/base.xml.in.h:636
+msgid "Typewriter"
+msgstr "БаÑма машинаÑÑ‹"
+
+#: ../rules/base.xml.in.h:637
+msgid "UCW layout (accented letters only)"
+msgstr ""
+
+#: ../rules/base.xml.in.h:638
+msgid "US keyboard with Bosnian digraphs"
+msgstr "ÐКШ клавиатураÑÑ‹ боÑнийдик диграфтар менен"
+
+#: ../rules/base.xml.in.h:639
+msgid "US keyboard with Bosnian letters"
+msgstr "ÐКШ клавиатураÑÑ‹ боÑнийдик ариптер менен"
+
+#: ../rules/base.xml.in.h:640
+msgid "US keyboard with Croatian digraphs"
+msgstr "ÐКШ клавиатураÑÑ‹ хорваттык диграфтар менен"
+
+#: ../rules/base.xml.in.h:641
+msgid "US keyboard with Croatian letters"
+msgstr "ÐКШ клавиатураÑÑ‹ хорваттык ариптер менен"
+
+#: ../rules/base.xml.in.h:642
+msgid "US keyboard with Estonian letters"
+msgstr "ÐКШ клавиатураÑÑ‹ ÑÑтондук ариптер менен"
+
+#: ../rules/base.xml.in.h:643
+msgid "US keyboard with Italian letters"
+msgstr "ÐКШ клавиатураÑÑ‹ итальÑндык ариптер менен"
+
+#: ../rules/base.xml.in.h:644
+msgid "US keyboard with Lithuanian letters"
+msgstr "ÐКШ клавиатураÑÑ‹ литовдук ариптер менен"
+
+#: ../rules/base.xml.in.h:645
+msgid "US keyboard with Slovenian letters"
+msgstr "ÐКШ клавиатураÑÑ‹ Ñловендик ариптер менен"
+
+#: ../rules/base.xml.in.h:646 ../rules/base.extras.xml.in.h:9
+msgid "USA"
+msgstr "ÐКШ"
+
+#: ../rules/base.xml.in.h:647
+msgid "Udmurt"
+msgstr "Удмурттук"
+
+#: ../rules/base.xml.in.h:648
+msgid "Ukr"
+msgstr "Укр"
+
+#: ../rules/base.xml.in.h:649
+msgid "Ukraine"
+msgstr "Украина"
+
+#: ../rules/base.xml.in.h:650
+msgid "Unicode additions (arrows and math operators)"
+msgstr ""
+
+#: ../rules/base.xml.in.h:651
+msgid "Unicode additions (arrows and math operators). Math operators on default level"
+msgstr ""
+
+#: ../rules/base.xml.in.h:652
+msgid "UnicodeExpert"
+msgstr "UnicodeExpert"
+
+#: ../rules/base.xml.in.h:653
+msgid "United Kingdom"
+msgstr "ÐÐ½Ð³Ð»Ð¸Ñ (Улуу БританиÑ)"
+
+#: ../rules/base.xml.in.h:654
+msgid "Unitek KB-1925"
+msgstr "Unitek KB-1925"
+
+#: ../rules/base.xml.in.h:655
+msgid "Urdu, Alternative phonetic"
+msgstr "Урду, альтернативдик фонетикалык"
+
+#: ../rules/base.xml.in.h:656
+msgid "Urdu, Phonetic"
+msgstr "Урду, фонетикалык"
+
+#: ../rules/base.xml.in.h:657
+msgid "Urdu, Winkeys"
+msgstr "Урду, Windows клавишалары менен"
+
+#: ../rules/base.xml.in.h:658
+msgid "Use Bosnian digraphs"
+msgstr "БоÑнийдик диаграфтарды колдонуу"
+
+#: ../rules/base.xml.in.h:659
+msgid "Use Croatian digraphs"
+msgstr "Хорваттык диаграфтарды колдонуу"
+
+#: ../rules/base.xml.in.h:660
+msgid "Use guillemets for quotes"
+msgstr "Француздук тырмакчаларды тырмакчалардай колдонуу"
+
+#: ../rules/base.xml.in.h:661
+msgid "Use keyboard LED to show alternative layout"
+msgstr "Клавиатура индикаторлорду кошумча группаларды көрÑÓ©Ñ‚Ò¯Ò¯ үчүн колдонуу"
+
+#: ../rules/base.xml.in.h:662
+msgid "Using space key to input non-breakable space character"
+msgstr ""
+
+#: ../rules/base.xml.in.h:663
+msgid "Usual space at any level"
+msgstr ""
+
+#: ../rules/base.xml.in.h:664
+msgid "Uzb"
+msgstr "Өзб"
+
+#: ../rules/base.xml.in.h:665
+msgid "Uzbekistan"
+msgstr "ӨзбекиÑтан"
+
+#: ../rules/base.xml.in.h:666
+msgid "Vietnam"
+msgstr "Вьетнам"
+
+#: ../rules/base.xml.in.h:667
+msgid "ViewSonic KU-306 Internet Keyboard"
+msgstr "ViewSonic KU-306 Internet Keyboard"
+
+#: ../rules/base.xml.in.h:668
+msgid "Vnm"
+msgstr "Вьет"
+
+#: ../rules/base.xml.in.h:669
+msgid "Wang 724 keypad with unicode additions (arrows and math operators)"
+msgstr ""
+
+#: ../rules/base.xml.in.h:670
+msgid "Wang 724 keypad with unicode additions (arrows and math operators). Math operators on default level"
+msgstr ""
+
+#: ../rules/base.xml.in.h:671
+msgid "Wang model 724 azerty"
+msgstr "Wang model 724 azerty"
+
+#: ../rules/base.xml.in.h:672
+msgid "Western"
+msgstr "Батыш"
+
+#: ../rules/base.xml.in.h:673
+msgid "Winbook Model XP5"
+msgstr "Winbook Model XP5"
+
+#: ../rules/base.xml.in.h:674
+msgid "Winkeys"
+msgstr "Windows клавиатураÑÑ‹"
+
+#: ../rules/base.xml.in.h:675
+msgid "With &lt;\\|&gt; key"
+msgstr "&lt;\\|&gt; клавиша менен"
+
+#: ../rules/base.xml.in.h:676
+msgid "With EuroSign on 5"
+msgstr ""
+
+#: ../rules/base.xml.in.h:677
+msgid "With guillemets"
+msgstr "Француздук тырмакчалар менен"
+
+#: ../rules/base.xml.in.h:678
+msgid "Yahoo! Internet Keyboard"
+msgstr "Yahoo! Internet Keyboard"
+
+#: ../rules/base.xml.in.h:679
+msgid "Yakut"
+msgstr "Якуттук"
+
+#: ../rules/base.xml.in.h:680
+msgid "Yoruba"
+msgstr "Йоруба"
+
+#: ../rules/base.xml.in.h:681
+msgid "Z and ZHE swapped"
+msgstr "З жана Ж орундарын алмаштырган"
+
+#: ../rules/base.xml.in.h:682
+msgid "Zar"
+msgstr "ЮÐР"
+
+#: ../rules/base.xml.in.h:683
+msgid "azerty"
+msgstr "azerty"
+
+#: ../rules/base.xml.in.h:684
+msgid "azerty/digits"
+msgstr "azerty/цифры"
+
+#: ../rules/base.xml.in.h:685
+msgid "digits"
+msgstr "Ñандар"
+
+#: ../rules/base.xml.in.h:686
+msgid "displaced semicolon and quote (obsolete)"
+msgstr ""
+
+#: ../rules/base.xml.in.h:687
+msgid "lyx"
+msgstr "lyx"
+
+#: ../rules/base.xml.in.h:688
+msgid "qwerty"
+msgstr "qwerty"
+
+#: ../rules/base.xml.in.h:689
+msgid "qwerty, extended Backslash"
+msgstr "qwerty, Backslash кеңейтилген функциÑлары"
+
+#: ../rules/base.xml.in.h:690
+msgid "qwerty/digits"
+msgstr "qwerty/Ñандар"
+
+#: ../rules/base.xml.in.h:691
+msgid "qwertz"
+msgstr "qwertz"
+
+#: ../rules/base.extras.xml.in.h:1
+msgid "APL"
+msgstr "APL"
+
+#: ../rules/base.extras.xml.in.h:2
+msgid "Atsina"
+msgstr "ÐÑ‚Ñиндик"
+
+#: ../rules/base.extras.xml.in.h:3
+msgid "Combining accents instead of dead keys"
+msgstr ""
+
+#: ../rules/base.extras.xml.in.h:4
+msgid "Couer D'alene Salish"
+msgstr "Салишдик кёр-д’ален"
+
+#: ../rules/base.extras.xml.in.h:5
+msgid "International (AltGr Unicode combining)"
+msgstr ""
+
+#: ../rules/base.extras.xml.in.h:6
+msgid "International (AltGr Unicode combining, alternative)"
+msgstr ""
+
+#~ msgid "Pro"
+#~ msgstr "Pro"
+
+#~ msgid "Pro Keypad"
+#~ msgstr "Pro кошумча панели менен"
+
+#, fuzzy
+#~ msgid "Standard Phonetic"
+#~ msgstr "Ðльтернативдүү фонетикалык"
+
+#~ msgid "(Legacy) Dvorak"
+#~ msgstr "(ЭÑкирген) Dvorak"
+
+#~ msgid "Add the EuroSign to the 5 key."
+#~ msgstr "5 деген клавишага Евро белгиÑин кошуу."
+
+#~ msgid "Add the EuroSign to the E key."
+#~ msgstr "E клавишаÑына Евро белгиÑин кошуу."
+
+#~ msgid "Alt+Shift change layout."
+#~ msgstr "Alt+Shift раÑкладканы алмаштырат."
+
+#~ msgid "Brazilian ABNT2"
+#~ msgstr "Бразилдик ABNT2"
+
+#~ msgid "Press Left Alt key to choose 3rd level."
+#~ msgstr "3-чү денгÑÑлди тандоо Ñол Alt клавишанын баÑылышы менен."
+
+#~ msgid "Press Left Win-key to choose 3rd level."
+#~ msgstr "3-чү денгÑÑлди тандоо Ñол Win клавишанын баÑылышы менен."
+
+#~ msgid "Press Right Alt key to choose 3rd level."
+#~ msgstr "3-чү денгÑÑлди тандоо оң Alt клавишанын баÑылышы менен."
+
+#~ msgid "Press Right Ctrl to choose 3rd level."
+#~ msgstr "3-чү денгÑÑлди тандоо оң Ctrl клавишанын баÑылышы менен."
+
+#~ msgid "Press Right Win-key to choose 3rd level."
+#~ msgstr "3-чү денгÑÑлди тандоо оң Win клавишанын баÑылышы менен."
+
+#~ msgid "Press any of Alt keys to choose 3rd level."
+#~ msgstr "3-чү денгÑÑлди тандоо Alt клавишалардын бирөөÑүнүн баÑылышы менен."
+
+#~ msgid "Press any of Win-keys to choose 3rd level."
+#~ msgstr "3-чү денгÑÑлди тандоо Win клавишалардын бирөөÑүнүн баÑылышы менен."
+
+#~ msgid "Right Win-key is Compose."
+#~ msgstr "Оң Win Compose клавишадай."
+
+#~ msgid "SCG"
+#~ msgstr "СМÐ"
+
+#~ msgid "Swap keycodes of two keys when Mac keyboards are misdetected by kernel."
+#~ msgstr "Swap keycodes of two keys when Mac keyboards are misdetected by kernel."
+
+#~ msgid "US keyboard with Slovenian digraphs"
+#~ msgstr "ÐКШ клавиатураÑÑ‹ Ñловендик диграфтар менен"
+
+#~ msgid "Urdu"
+#~ msgstr "Урду"
+
+#~ msgid "Use Slovenian digraphs"
+#~ msgstr "Словендик диаграфтарды колдонуу"
+
+#~ msgid "\"Typewriter\""
+#~ msgstr "БаÑма машинаÑÑ‹"
+
+#~ msgid "Alt+Control changes group"
+#~ msgstr "Alt+Control группаны алмаштырат"
+
+#~ msgid "Alt+Shift changes group"
+#~ msgstr "Alt+Shift группаны алмаштырат"
+
+#~ msgid "Belgian"
+#~ msgstr "БельгиÑлык"
+
+#~ msgid "Bulgarian"
+#~ msgstr "Болгардык"
+
+#~ msgid "Canadian"
+#~ msgstr "Канаддык"
+
+#~ msgid "Caps Lock key changes group"
+#~ msgstr "Caps Lock клавишаÑÑ‹ группаны алмаштырат"
+
+#~ msgid "Caps_Lock LED shows alternative group"
+#~ msgstr "Caps_Lock индикатору башка группаны көрÑÓ©Ñ‚Ó©Ñ‚"
+
+#~ msgid "Control Key Position"
+#~ msgstr "Control клавишанын жайгашууÑу"
+
+#~ msgid "Control key at bottom left"
+#~ msgstr "Control клавишаÑÑ‹ төмөн Ñол жакта жайгашкан"
+
+#~ msgid "Control key at left of 'A'"
+#~ msgstr "Control клавишаÑÑ‹ 'Ф' Ñол жагында"
+
+#~ msgid "Control+Shift changes group"
+#~ msgstr "Control+Shift группаны алмаштырат"
+
+#~ msgid "Czech"
+#~ msgstr "Чех"
+
+#~ msgid "Danish"
+#~ msgstr "Даттык"
+
+#~ msgid "DeuCH"
+#~ msgstr "ÐемШВ"
+
+#~ msgid "Dvo"
+#~ msgstr "Dvo"
+
+#~ msgid "Finnish"
+#~ msgstr "Финдик"
+
+#~ msgid "FraCH"
+#~ msgstr "ФраШВ"
+
+#~ msgid "Hungarian"
+#~ msgstr "Венгердик"
+
+#~ msgid "Italian"
+#~ msgstr "ИтальÑндык"
+
+#~ msgid "Japanese"
+#~ msgstr "Япондук"
+
+#~ msgid "Left Alt key changes group"
+#~ msgstr "Сол Alt клавишаÑÑ‹ группаны алмаштырат"
+
+#~ msgid "Left Ctrl key changes group"
+#~ msgstr "Сол Ctrl клавишаÑÑ‹ группаны алмаштырат"
+
+#~ msgid "Left Shift key changes group"
+#~ msgstr "Сол Shift клавишаÑÑ‹ группаны алмаштырат"
+
+#~ msgid "Norwegian"
+#~ msgstr "Ðорвеждик"
+
+#~ msgid "Num_Lock LED shows alternative group"
+#~ msgstr "Num_Lock индикатору кошумча группаны көрÑÓ©Ñ‚Ó©Ñ‚"
+
+#~ msgid "Polish"
+#~ msgstr "Польдук"
+
+#~ msgid "Portuguese"
+#~ msgstr "Португалдык"
+
+#~ msgid "Press Left Alt key to choose 3rd level"
+#~ msgstr "3-чү денгÑÑлди тандоо Ñол Alt клавишанын баÑылышы менен."
+
+#~ msgid "Press Right Control to choose 3rd level"
+#~ msgstr "3-чү денгÑÑлди тандоо оң Control клавишанын баÑылышы менен."
+
+#~ msgid "Press any of Alt keys to choose 3rd level"
+#~ msgstr "3-чү денгÑÑлди тандоо Alt клавишалардан бирөөÑүнүн баÑылышы менен."
+
+#~ msgid "Right Alt key changes group"
+#~ msgstr "Оң Alt клавишаÑÑ‹ группаны алмаштырат"
+
+#~ msgid "Right Control key works as Right Alt"
+#~ msgstr "Оң Control оң Alt клавишадай"
+
+#~ msgid "Right Ctrl key changes group"
+#~ msgstr "Оң Ctrl клавишаÑÑ‹ группаны алмаштырат"
+
+#~ msgid "Right Shift key changes group"
+#~ msgstr "Оң Shift клавишаÑÑ‹ группаны алмаштырат"
+
+#~ msgid "Scroll_Lock LED shows alternative group"
+#~ msgstr "Scroll_Lock индикатору кошумча панелди көрÑÓ©Ñ‚Ó©Ñ‚"
+
+#~ msgid "Slovak"
+#~ msgstr "Словак"
+
+#~ msgid "Spanish"
+#~ msgstr "ИÑпандык"
+
+#~ msgid "Sun Type 4"
+#~ msgstr "Sun Type 4"
+
+#~ msgid "Sun Type 5 European"
+#~ msgstr "Sun Type 5 Европейдик"
+
+#~ msgid "Sun Type 5 Unix"
+#~ msgstr "Sun Type 5 Unix үчүн"
+
+#~ msgid "Sun Type 6"
+#~ msgstr "Sun Type 6"
+
+#~ msgid "Sun Type 6 Unix"
+#~ msgstr "Sun Type 6 Unix үчүн"
+
+#~ msgid "Sun Type 6 with Euro key"
+#~ msgstr "Sun Type 6 Евро белгиÑи менен"
+
+#~ msgid "Swap Control and Caps Lock"
+#~ msgstr "Control жана Caps Lock клавишалардын ордун алмаштыруу"
+
+#~ msgid "Swedish"
+#~ msgstr "Шведдик"
+
+#~ msgid "Swiss French"
+#~ msgstr "ШвейцариÑлык французча"
+
+#~ msgid "Swiss German"
+#~ msgstr "ШвейцариÑлык немецче"
+
+#~ msgid "Turkish"
+#~ msgstr "Түркчө"
+
+#~ msgid "Turkish (F)"
+#~ msgstr "Түркчө (F) менен"
+
+#~ msgid "Turkish Alt-Q Layout"
+#~ msgstr "Түрк раÑкладкаÑÑ‹ Alt-Q менен"
+
+#~ msgid "U.S. English w/ ISO9995-3"
+#~ msgstr "ÐÐ½Ð³Ð»Ð¸Ñ (ÐКШ) ISO9995-3 менен"
+
+#~ msgid "bksl"
+#~ msgstr "bksl"
+
+#~ msgid "type4"
+#~ msgstr "type4"
diff --git a/xorg-server/xkeyboard-config/po/nb.po b/xorg-server/xkeyboard-config/po/nb.po
index ffac02c31..ce3b94416 100644
--- a/xorg-server/xkeyboard-config/po/nb.po
+++ b/xorg-server/xkeyboard-config/po/nb.po
@@ -1,2689 +1,2689 @@
-# Norwegian bokmaal translation of xkeyboard-config.
-# Copyright (C) 2007 THE PACKAGE'S COPYRIGHT HOLDER
-# This file is distributed under the same license as the xkeyboard-config package.
-# Kjartan Maraas <kmaraas@gnome.org>, 2007-2009.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: xkeyboard-config 1.5\n"
-"Report-Msgid-Bugs-To: svu@users.sourceforge.net\n"
-"POT-Creation-Date: 2009-01-13 23:12+0000\n"
-"PO-Revision-Date: 2009-04-12 11:33+0200\n"
-"Last-Translator: Kjartan Maraas <kmaraas@gnome.org>\n"
-"Language-Team: Norwegian Bokmaal <i18n-nb@lister.ping.uio.no>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-#: ../rules/base.xml.in.h:1 ../rules/evdev.xml.in.h:1
-msgid "(F)"
-msgstr "(F)"
-
-#: ../rules/base.xml.in.h:2 ../rules/evdev.xml.in.h:2
-msgid "(Legacy) Alternative"
-msgstr ""
-
-#: ../rules/base.xml.in.h:3 ../rules/evdev.xml.in.h:3
-msgid "(Legacy) Alternative, Sun dead keys"
-msgstr ""
-
-#: ../rules/base.xml.in.h:4 ../rules/evdev.xml.in.h:4
-msgid "(Legacy) Alternative, eliminate dead keys"
-msgstr ""
-
-#: ../rules/base.xml.in.h:5 ../rules/evdev.xml.in.h:5
-msgid "101/104 key Compatible"
-msgstr "101/104-taster kompatibelt"
-
-#: ../rules/base.xml.in.h:6 ../rules/evdev.xml.in.h:6
-msgid "101/qwerty/comma/Dead keys"
-msgstr ""
-
-#: ../rules/base.xml.in.h:7 ../rules/evdev.xml.in.h:7
-msgid "101/qwerty/comma/Eliminate dead keys"
-msgstr ""
-
-#: ../rules/base.xml.in.h:8 ../rules/evdev.xml.in.h:8
-msgid "101/qwerty/dot/Dead keys"
-msgstr ""
-
-#: ../rules/base.xml.in.h:9 ../rules/evdev.xml.in.h:9
-msgid "101/qwerty/dot/Eliminate dead keys"
-msgstr ""
-
-#: ../rules/base.xml.in.h:10 ../rules/evdev.xml.in.h:10
-msgid "101/qwertz/comma/Dead keys"
-msgstr ""
-
-#: ../rules/base.xml.in.h:11 ../rules/evdev.xml.in.h:11
-msgid "101/qwertz/comma/Eliminate dead keys"
-msgstr ""
-
-#: ../rules/base.xml.in.h:12 ../rules/evdev.xml.in.h:12
-msgid "101/qwertz/dot/Dead keys"
-msgstr ""
-
-#: ../rules/base.xml.in.h:13 ../rules/evdev.xml.in.h:13
-msgid "101/qwertz/dot/Eliminate dead keys"
-msgstr ""
-
-#: ../rules/base.xml.in.h:14 ../rules/evdev.xml.in.h:14
-msgid "102/qwerty/comma/Dead keys"
-msgstr ""
-
-#: ../rules/base.xml.in.h:15 ../rules/evdev.xml.in.h:15
-msgid "102/qwerty/comma/Eliminate dead keys"
-msgstr ""
-
-#: ../rules/base.xml.in.h:16 ../rules/evdev.xml.in.h:16
-msgid "102/qwerty/dot/Dead keys"
-msgstr ""
-
-#: ../rules/base.xml.in.h:17 ../rules/evdev.xml.in.h:17
-msgid "102/qwerty/dot/Eliminate dead keys"
-msgstr ""
-
-#: ../rules/base.xml.in.h:18 ../rules/evdev.xml.in.h:18
-msgid "102/qwertz/comma/Dead keys"
-msgstr ""
-
-#: ../rules/base.xml.in.h:19 ../rules/evdev.xml.in.h:19
-msgid "102/qwertz/comma/Eliminate dead keys"
-msgstr ""
-
-#: ../rules/base.xml.in.h:20 ../rules/evdev.xml.in.h:20
-msgid "102/qwertz/dot/Dead keys"
-msgstr ""
-
-#: ../rules/base.xml.in.h:21 ../rules/evdev.xml.in.h:21
-msgid "102/qwertz/dot/Eliminate dead keys"
-msgstr ""
-
-#: ../rules/base.xml.in.h:22 ../rules/evdev.xml.in.h:22
-msgid "2"
-msgstr ""
-
-#: ../rules/base.xml.in.h:23 ../rules/evdev.xml.in.h:23
-msgid "4"
-msgstr ""
-
-#: ../rules/base.xml.in.h:24 ../rules/evdev.xml.in.h:24
-msgid "5"
-msgstr ""
-
-#: ../rules/base.xml.in.h:25 ../rules/evdev.xml.in.h:25
-msgid "A4Tech KB-21"
-msgstr ""
-
-#: ../rules/base.xml.in.h:26 ../rules/evdev.xml.in.h:26
-msgid "A4Tech KBS-8"
-msgstr ""
-
-#: ../rules/base.xml.in.h:27 ../rules/evdev.xml.in.h:27
-msgid "A4Tech Wireless Desktop RFKB-23"
-msgstr ""
-
-#: ../rules/base.xml.in.h:28 ../rules/evdev.xml.in.h:28
-msgid "ACPI Standard"
-msgstr "ACPI-standard"
-
-#: ../rules/base.xml.in.h:29 ../rules/evdev.xml.in.h:29
-msgid "ATM/phone-style"
-msgstr ""
-
-#: ../rules/base.xml.in.h:30 ../rules/evdev.xml.in.h:30
-msgid "Acer AirKey V"
-msgstr ""
-
-#: ../rules/base.xml.in.h:31 ../rules/evdev.xml.in.h:31
-msgid "Acer C300"
-msgstr ""
-
-#: ../rules/base.xml.in.h:32 ../rules/evdev.xml.in.h:32
-msgid "Acer Ferrari 4000"
-msgstr "Acer Ferrari 4000"
-
-#: ../rules/base.xml.in.h:33 ../rules/evdev.xml.in.h:33
-msgid "Acer Laptop"
-msgstr "Acer bærbar"
-
-#: ../rules/base.xml.in.h:34 ../rules/evdev.xml.in.h:34
-msgid "Add the standard behavior to Menu key"
-msgstr ""
-
-#: ../rules/base.xml.in.h:35 ../rules/evdev.xml.in.h:35
-msgid "Adding Esperanto circumflexes (supersigno)"
-msgstr ""
-
-#: ../rules/base.xml.in.h:36 ../rules/evdev.xml.in.h:36
-#, fuzzy
-msgid "Adding EuroSign to certain keys"
-msgstr "Legg til Euro-tegnet på 2-tasten."
-
-#: ../rules/base.xml.in.h:37 ../rules/evdev.xml.in.h:37
-msgid "Advance Scorpius KI"
-msgstr ""
-
-#: ../rules/base.xml.in.h:38 ../rules/evdev.xml.in.h:38
-msgid "Afg"
-msgstr "Afg"
-
-#: ../rules/base.xml.in.h:39 ../rules/evdev.xml.in.h:39
-msgid "Afghanistan"
-msgstr "Afghanistan"
-
-#: ../rules/base.xml.in.h:40 ../rules/evdev.xml.in.h:40
-msgid "Akan"
-msgstr "Akan"
-
-#: ../rules/base.xml.in.h:41 ../rules/evdev.xml.in.h:41
-msgid "Alb"
-msgstr "Alb"
-
-#: ../rules/base.xml.in.h:42 ../rules/evdev.xml.in.h:42
-msgid "Albania"
-msgstr "Albania"
-
-#: ../rules/base.xml.in.h:43 ../rules/evdev.xml.in.h:43
-msgid "Alt and Meta are on Alt keys"
-msgstr ""
-
-#: ../rules/base.xml.in.h:44 ../rules/evdev.xml.in.h:44
-msgid "Alt is mapped to Right Win, Super to Menu"
-msgstr ""
-
-#: ../rules/base.xml.in.h:45 ../rules/evdev.xml.in.h:45
-msgid "Alt+CapsLock"
-msgstr ""
-
-#: ../rules/base.xml.in.h:46 ../rules/evdev.xml.in.h:46
-msgid "Alt+Ctrl"
-msgstr ""
-
-#: ../rules/base.xml.in.h:47 ../rules/evdev.xml.in.h:47
-msgid "Alt+Shift"
-msgstr ""
-
-#: ../rules/base.xml.in.h:48 ../rules/evdev.xml.in.h:48
-msgid "Alt+Space"
-msgstr ""
-
-#: ../rules/base.xml.in.h:49 ../rules/evdev.xml.in.h:49
-msgid "Alt-Q"
-msgstr "Alt-Q"
-
-#: ../rules/base.xml.in.h:50 ../rules/evdev.xml.in.h:50
-msgid "Alt/Win key behavior"
-msgstr ""
-
-#: ../rules/base.xml.in.h:51 ../rules/evdev.xml.in.h:51
-msgid "Alternative"
-msgstr "Alternativ"
-
-#: ../rules/base.xml.in.h:52 ../rules/evdev.xml.in.h:52
-msgid "Alternative Eastern"
-msgstr "Alternativ østlig"
-
-#: ../rules/base.xml.in.h:53 ../rules/evdev.xml.in.h:53
-msgid "Alternative Phonetic"
-msgstr "Alternativ fonetisk"
-
-#: ../rules/base.xml.in.h:54 ../rules/evdev.xml.in.h:54
-msgid "Alternative international (former us_intl)"
-msgstr ""
-
-#: ../rules/base.xml.in.h:55 ../rules/evdev.xml.in.h:55
-msgid "Alternative, Sun dead keys"
-msgstr ""
-
-#: ../rules/base.xml.in.h:56 ../rules/evdev.xml.in.h:56
-msgid "Alternative, eliminate dead keys"
-msgstr ""
-
-#: ../rules/base.xml.in.h:57 ../rules/evdev.xml.in.h:57
-msgid "Alternative, latin-9 only"
-msgstr ""
-
-#: ../rules/base.xml.in.h:58 ../rules/evdev.xml.in.h:58
-msgid "And"
-msgstr "And"
-
-#: ../rules/base.xml.in.h:59 ../rules/evdev.xml.in.h:59
-msgid "Andorra"
-msgstr "Andorra"
-
-#: ../rules/base.xml.in.h:60 ../rules/evdev.xml.in.h:60
-msgid "Any Alt key"
-msgstr ""
-
-#: ../rules/base.xml.in.h:61 ../rules/evdev.xml.in.h:61
-msgid "Any Win key"
-msgstr ""
-
-#: ../rules/base.xml.in.h:62 ../rules/evdev.xml.in.h:62
-msgid "Any Win key (while pressed)"
-msgstr ""
-
-#: ../rules/base.xml.in.h:63 ../rules/evdev.xml.in.h:63
-msgid "Apostrophe (') variant"
-msgstr ""
-
-#: ../rules/base.xml.in.h:64 ../rules/evdev.xml.in.h:64
-msgid "Apple"
-msgstr "Apple"
-
-#: ../rules/base.xml.in.h:65 ../rules/evdev.xml.in.h:65
-msgid "Apple Laptop"
-msgstr "Apple bærbar"
-
-#: ../rules/base.xml.in.h:66 ../rules/evdev.xml.in.h:66
-msgid "Ara"
-msgstr "Ara"
-
-#: ../rules/base.xml.in.h:67 ../rules/evdev.xml.in.h:67
-msgid "Arabic"
-msgstr "Arabisk"
-
-#: ../rules/base.xml.in.h:68 ../rules/evdev.xml.in.h:68
-msgid "Arm"
-msgstr "Arm"
-
-#: ../rules/base.xml.in.h:69 ../rules/evdev.xml.in.h:69
-msgid "Armenia"
-msgstr "Armenia"
-
-#: ../rules/base.xml.in.h:70 ../rules/evdev.xml.in.h:70
-msgid "Asturian variant with bottom-dot H and bottom-dot L"
-msgstr ""
-
-#: ../rules/base.xml.in.h:71 ../rules/evdev.xml.in.h:71
-msgid "Asus Laptop"
-msgstr "Asus bærbar"
-
-#: ../rules/base.xml.in.h:72 ../rules/evdev.xml.in.h:72
-msgid "At bottom left"
-msgstr ""
-
-#: ../rules/base.xml.in.h:73 ../rules/evdev.xml.in.h:73
-msgid "At left of 'A'"
-msgstr ""
-
-#: ../rules/base.xml.in.h:74 ../rules/evdev.xml.in.h:74
-msgid "Aze"
-msgstr "Ase"
-
-#: ../rules/base.xml.in.h:75 ../rules/evdev.xml.in.h:75
-msgid "Azerbaijan"
-msgstr "Aserbaijdsjan"
-
-#: ../rules/base.xml.in.h:76 ../rules/evdev.xml.in.h:76
-msgid "Azona RF2300 wireless Internet Keyboard"
-msgstr ""
-
-#: ../rules/base.xml.in.h:77 ../rules/evdev.xml.in.h:77
-msgid "BTC 5090"
-msgstr ""
-
-#: ../rules/base.xml.in.h:78 ../rules/evdev.xml.in.h:78
-msgid "BTC 5113RF Multimedia"
-msgstr ""
-
-#: ../rules/base.xml.in.h:79 ../rules/evdev.xml.in.h:79
-msgid "BTC 5126T"
-msgstr ""
-
-#: ../rules/base.xml.in.h:80 ../rules/evdev.xml.in.h:80
-msgid "BTC 6301URF"
-msgstr ""
-
-#: ../rules/base.xml.in.h:81 ../rules/evdev.xml.in.h:81
-msgid "BTC 9000"
-msgstr ""
-
-#: ../rules/base.xml.in.h:82 ../rules/evdev.xml.in.h:82
-msgid "BTC 9000A"
-msgstr ""
-
-#: ../rules/base.xml.in.h:83 ../rules/evdev.xml.in.h:83
-msgid "BTC 9001AH"
-msgstr ""
-
-#: ../rules/base.xml.in.h:84 ../rules/evdev.xml.in.h:84
-msgid "BTC 9019U"
-msgstr ""
-
-#: ../rules/base.xml.in.h:85 ../rules/evdev.xml.in.h:85
-msgid "BTC 9116U Mini Wireless Internet and Gaming"
-msgstr ""
-
-#: ../rules/base.xml.in.h:86 ../rules/evdev.xml.in.h:86
-msgid "Ban"
-msgstr ""
-
-#: ../rules/base.xml.in.h:87 ../rules/evdev.xml.in.h:87
-msgid "Bangladesh"
-msgstr "Bangladesh"
-
-#: ../rules/base.xml.in.h:88 ../rules/evdev.xml.in.h:88
-msgid "Bel"
-msgstr ""
-
-#: ../rules/base.xml.in.h:89 ../rules/evdev.xml.in.h:89
-msgid "Belarus"
-msgstr "Hviterussland"
-
-#: ../rules/base.xml.in.h:90 ../rules/evdev.xml.in.h:90
-msgid "Belgium"
-msgstr "Belgia"
-
-#: ../rules/base.xml.in.h:91 ../rules/evdev.xml.in.h:91
-msgid "BenQ X-Touch"
-msgstr ""
-
-#: ../rules/base.xml.in.h:92 ../rules/evdev.xml.in.h:92
-msgid "BenQ X-Touch 730"
-msgstr ""
-
-#: ../rules/base.xml.in.h:93 ../rules/evdev.xml.in.h:93
-msgid "BenQ X-Touch 800"
-msgstr ""
-
-#: ../rules/base.xml.in.h:94 ../rules/evdev.xml.in.h:94
-msgid "Bengali"
-msgstr ""
-
-#: ../rules/base.xml.in.h:95 ../rules/evdev.xml.in.h:95
-msgid "Bengali Probhat"
-msgstr ""
-
-#: ../rules/base.xml.in.h:96 ../rules/evdev.xml.in.h:96
-msgid "Bepo, ergonomic, Dvorak way"
-msgstr ""
-
-#: ../rules/base.xml.in.h:97 ../rules/evdev.xml.in.h:97
-msgid "Bepo, ergonomic, Dvorak way, latin-9 only"
-msgstr ""
-
-#: ../rules/base.xml.in.h:98 ../rules/evdev.xml.in.h:98
-msgid "Bgr"
-msgstr ""
-
-#: ../rules/base.xml.in.h:99 ../rules/evdev.xml.in.h:99
-msgid "Bhu"
-msgstr ""
-
-#: ../rules/base.xml.in.h:100 ../rules/evdev.xml.in.h:100
-msgid "Bhutan"
-msgstr "Bhutan"
-
-#: ../rules/base.xml.in.h:101 ../rules/evdev.xml.in.h:101
-msgid "Biblical Hebrew (Tiro)"
-msgstr ""
-
-#: ../rules/base.xml.in.h:102 ../rules/evdev.xml.in.h:102
-msgid "Bih"
-msgstr ""
-
-#: ../rules/base.xml.in.h:103 ../rules/evdev.xml.in.h:103
-msgid "Blr"
-msgstr ""
-
-#: ../rules/base.xml.in.h:104 ../rules/evdev.xml.in.h:104
-msgid "Bosnia and Herzegovina"
-msgstr "Bosnia og Herzegovina"
-
-#: ../rules/base.xml.in.h:105 ../rules/evdev.xml.in.h:105
-msgid "Both Alt keys together"
-msgstr ""
-
-#: ../rules/base.xml.in.h:106 ../rules/evdev.xml.in.h:106
-msgid "Both Ctrl keys together"
-msgstr ""
-
-#: ../rules/base.xml.in.h:107 ../rules/evdev.xml.in.h:107
-msgid "Both Shift keys together"
-msgstr ""
-
-#: ../rules/base.xml.in.h:108 ../rules/evdev.xml.in.h:108
-msgid "Bra"
-msgstr ""
-
-#: ../rules/base.xml.in.h:109 ../rules/evdev.xml.in.h:109
-msgid "Braille"
-msgstr ""
-
-#: ../rules/base.xml.in.h:110 ../rules/evdev.xml.in.h:110
-msgid "Brazil"
-msgstr "Brasil"
-
-#: ../rules/base.xml.in.h:111 ../rules/evdev.xml.in.h:111
-msgid "Brazilian ABNT2"
-msgstr ""
-
-#: ../rules/base.xml.in.h:112 ../rules/evdev.xml.in.h:112
-msgid "Breton"
-msgstr ""
-
-#: ../rules/base.xml.in.h:113 ../rules/evdev.xml.in.h:113
-msgid "Brl"
-msgstr ""
-
-#: ../rules/base.xml.in.h:114 ../rules/evdev.xml.in.h:114
-msgid "Brother Internet Keyboard"
-msgstr ""
-
-#: ../rules/base.xml.in.h:115 ../rules/evdev.xml.in.h:115
-msgid "Buckwalter"
-msgstr ""
-
-#: ../rules/base.xml.in.h:116 ../rules/evdev.xml.in.h:116
-msgid "Bulgaria"
-msgstr "Bulgaria"
-
-#: ../rules/base.xml.in.h:117 ../rules/evdev.xml.in.h:117
-msgid "CRULP"
-msgstr ""
-
-#: ../rules/base.xml.in.h:118 ../rules/evdev.xml.in.h:118
-msgid "Cambodia"
-msgstr ""
-
-#: ../rules/base.xml.in.h:119 ../rules/evdev.xml.in.h:119
-msgid "Can"
-msgstr ""
-
-#: ../rules/base.xml.in.h:120 ../rules/evdev.xml.in.h:120
-msgid "Canada"
-msgstr ""
-
-#: ../rules/base.xml.in.h:121 ../rules/evdev.xml.in.h:121
-msgid "Caps Lock"
-msgstr ""
-
-#: ../rules/base.xml.in.h:122 ../rules/evdev.xml.in.h:122
-msgid "CapsLock"
-msgstr ""
-
-#: ../rules/base.xml.in.h:123 ../rules/evdev.xml.in.h:123
-msgid "CapsLock (to first layout), Shift+CapsLock (to last layout)"
-msgstr ""
-
-#: ../rules/base.xml.in.h:124 ../rules/evdev.xml.in.h:124
-msgid "CapsLock (while pressed), Alt+CapsLock does the original capslock action"
-msgstr ""
-
-#: ../rules/base.xml.in.h:125 ../rules/evdev.xml.in.h:125
-msgid "CapsLock acts as Shift with locking. Shift \"pauses\" CapsLock"
-msgstr ""
-
-#: ../rules/base.xml.in.h:126 ../rules/evdev.xml.in.h:126
-msgid "CapsLock acts as Shift with locking. Shift doesn't affect CapsLock"
-msgstr ""
-
-#: ../rules/base.xml.in.h:127 ../rules/evdev.xml.in.h:127
-msgid "CapsLock key behavior"
-msgstr ""
-
-#: ../rules/base.xml.in.h:128 ../rules/evdev.xml.in.h:128
-msgid "CapsLock toggles Shift so all keys are affected"
-msgstr ""
-
-#: ../rules/base.xml.in.h:129 ../rules/evdev.xml.in.h:129
-msgid "CapsLock toggles normal capitalization of alphabetic characters"
-msgstr ""
-
-#: ../rules/base.xml.in.h:130 ../rules/evdev.xml.in.h:130
-msgid "CapsLock uses internal capitalization. Shift \"pauses\" CapsLock"
-msgstr ""
-
-#: ../rules/base.xml.in.h:131 ../rules/evdev.xml.in.h:131
-msgid "CapsLock uses internal capitalization. Shift doesn't affect CapsLock"
-msgstr ""
-
-#: ../rules/base.xml.in.h:132 ../rules/evdev.xml.in.h:132
-msgid "Catalan variant with middle-dot L"
-msgstr ""
-
-#: ../rules/base.xml.in.h:133 ../rules/evdev.xml.in.h:133
-msgid "Cedilla"
-msgstr ""
-
-#: ../rules/base.xml.in.h:134 ../rules/evdev.xml.in.h:134
-msgid "Che"
-msgstr ""
-
-#: ../rules/base.xml.in.h:135 ../rules/evdev.xml.in.h:135
-msgid "Cherokee"
-msgstr ""
-
-#: ../rules/base.xml.in.h:136 ../rules/evdev.xml.in.h:136
-msgid "Cherry Blue Line CyBo@rd"
-msgstr ""
-
-#: ../rules/base.xml.in.h:137 ../rules/evdev.xml.in.h:137
-msgid "Cherry Blue Line CyBo@rd (alternate option)"
-msgstr ""
-
-#: ../rules/base.xml.in.h:138 ../rules/evdev.xml.in.h:138
-msgid "Cherry CyBo@rd USB-Hub"
-msgstr ""
-
-#: ../rules/base.xml.in.h:139 ../rules/evdev.xml.in.h:139
-msgid "Cherry CyMotion Expert"
-msgstr ""
-
-#: ../rules/base.xml.in.h:140 ../rules/evdev.xml.in.h:140
-msgid "Cherry CyMotion Master Linux"
-msgstr ""
-
-#: ../rules/base.xml.in.h:141 ../rules/evdev.xml.in.h:141
-msgid "Cherry CyMotion Master XPress"
-msgstr ""
-
-#: ../rules/base.xml.in.h:142 ../rules/evdev.xml.in.h:142
-msgid "Chicony Internet Keyboard"
-msgstr ""
-
-#: ../rules/base.xml.in.h:143 ../rules/evdev.xml.in.h:143
-msgid "Chicony KB-9885"
-msgstr ""
-
-#: ../rules/base.xml.in.h:144 ../rules/evdev.xml.in.h:144
-msgid "Chicony KU-0108"
-msgstr ""
-
-#: ../rules/base.xml.in.h:145 ../rules/evdev.xml.in.h:145
-msgid "Chicony KU-0420"
-msgstr ""
-
-#: ../rules/base.xml.in.h:146 ../rules/evdev.xml.in.h:146
-msgid "China"
-msgstr "Kina"
-
-#: ../rules/base.xml.in.h:147 ../rules/evdev.xml.in.h:147
-msgid "Chuvash"
-msgstr ""
-
-#: ../rules/base.xml.in.h:148 ../rules/evdev.xml.in.h:148
-msgid "Chuvash Latin"
-msgstr ""
-
-#: ../rules/base.xml.in.h:149 ../rules/evdev.xml.in.h:149
-msgid "Classic"
-msgstr "Klassisk"
-
-#: ../rules/base.xml.in.h:150 ../rules/evdev.xml.in.h:150
-msgid "Classic Dvorak"
-msgstr ""
-
-#: ../rules/base.xml.in.h:151 ../rules/evdev.xml.in.h:151
-msgid "Classmate PC"
-msgstr ""
-
-#: ../rules/base.xml.in.h:152 ../rules/evdev.xml.in.h:152
-msgid "CloGaelach"
-msgstr ""
-
-#: ../rules/base.xml.in.h:153 ../rules/evdev.xml.in.h:153
-msgid "Colemak"
-msgstr ""
-
-#: ../rules/base.xml.in.h:154 ../rules/evdev.xml.in.h:154
-msgid "Compaq Easy Access Keyboard"
-msgstr ""
-
-#: ../rules/base.xml.in.h:155 ../rules/evdev.xml.in.h:155
-msgid "Compaq Internet Keyboard (13 keys)"
-msgstr ""
-
-#: ../rules/base.xml.in.h:156 ../rules/evdev.xml.in.h:156
-msgid "Compaq Internet Keyboard (18 keys)"
-msgstr ""
-
-#: ../rules/base.xml.in.h:157 ../rules/evdev.xml.in.h:157
-msgid "Compaq Internet Keyboard (7 keys)"
-msgstr ""
-
-#: ../rules/base.xml.in.h:158 ../rules/evdev.xml.in.h:158
-msgid "Compaq iPaq Keyboard"
-msgstr ""
-
-#: ../rules/base.xml.in.h:159 ../rules/evdev.xml.in.h:159
-msgid "Compose key position"
-msgstr ""
-
-#: ../rules/base.xml.in.h:160 ../rules/evdev.xml.in.h:160
-msgid "Congo, Democratic Republic of the"
-msgstr ""
-
-#: ../rules/base.xml.in.h:161 ../rules/evdev.xml.in.h:161
-msgid "Control is mapped to Alt keys, Alt is mapped to Win keys"
-msgstr ""
-
-#: ../rules/base.xml.in.h:162 ../rules/evdev.xml.in.h:162
-msgid "Control is mapped to Win keys (and the usual Ctrl keys)"
-msgstr ""
-
-#: ../rules/base.xml.in.h:163 ../rules/evdev.xml.in.h:163
-msgid "Croatia"
-msgstr "Kroatia"
-
-#: ../rules/base.xml.in.h:164 ../rules/evdev.xml.in.h:164
-msgid "Ctrl key position"
-msgstr ""
-
-#: ../rules/base.xml.in.h:165 ../rules/evdev.xml.in.h:165
-msgid "Ctrl+Shift"
-msgstr ""
-
-#: ../rules/base.xml.in.h:166 ../rules/evdev.xml.in.h:166
-msgid "Cyrillic"
-msgstr "Kyrillisk"
-
-#: ../rules/base.xml.in.h:167 ../rules/evdev.xml.in.h:167
-msgid "Cyrillic with guillemets"
-msgstr ""
-
-#: ../rules/base.xml.in.h:168 ../rules/evdev.xml.in.h:168
-msgid "Cyrillic, Z and ZHE swapped"
-msgstr ""
-
-#: ../rules/base.xml.in.h:169 ../rules/evdev.xml.in.h:169
-msgid "Cze"
-msgstr ""
-
-#: ../rules/base.xml.in.h:170 ../rules/evdev.xml.in.h:170
-msgid "Czechia"
-msgstr ""
-
-#: ../rules/base.xml.in.h:171 ../rules/evdev.xml.in.h:171
-msgid "DRC"
-msgstr ""
-
-#: ../rules/base.xml.in.h:172 ../rules/evdev.xml.in.h:172
-msgid "DTK2000"
-msgstr ""
-
-#: ../rules/base.xml.in.h:173 ../rules/evdev.xml.in.h:173
-msgid "Dan"
-msgstr ""
-
-#: ../rules/base.xml.in.h:174 ../rules/evdev.xml.in.h:174
-msgid "Dead acute"
-msgstr ""
-
-#: ../rules/base.xml.in.h:175 ../rules/evdev.xml.in.h:175
-msgid "Dead grave acute"
-msgstr ""
-
-#: ../rules/base.xml.in.h:176 ../rules/evdev.xml.in.h:176
-msgid "Default numeric keypad keys"
-msgstr ""
-
-#: ../rules/base.xml.in.h:177 ../rules/evdev.xml.in.h:177
-msgid "Dell"
-msgstr "Dell"
-
-#: ../rules/base.xml.in.h:178 ../rules/evdev.xml.in.h:178
-msgid "Dell 101-key PC"
-msgstr ""
-
-#: ../rules/base.xml.in.h:179 ../rules/evdev.xml.in.h:179
-msgid "Dell Laptop/notebook Inspiron 6xxx/8xxx"
-msgstr ""
-
-#: ../rules/base.xml.in.h:180 ../rules/evdev.xml.in.h:180
-msgid "Dell Laptop/notebook Precision M series"
-msgstr ""
-
-#: ../rules/base.xml.in.h:181 ../rules/evdev.xml.in.h:181
-msgid "Dell Latitude series laptop"
-msgstr ""
-
-#: ../rules/base.xml.in.h:182 ../rules/evdev.xml.in.h:182
-msgid "Dell Precision M65"
-msgstr ""
-
-#: ../rules/base.xml.in.h:183 ../rules/evdev.xml.in.h:183
-msgid "Dell SK-8125"
-msgstr ""
-
-#: ../rules/base.xml.in.h:184 ../rules/evdev.xml.in.h:184
-msgid "Dell SK-8135"
-msgstr ""
-
-#: ../rules/base.xml.in.h:185 ../rules/evdev.xml.in.h:185
-msgid "Dell USB Multimedia Keyboard"
-msgstr ""
-
-#: ../rules/base.xml.in.h:186 ../rules/evdev.xml.in.h:186
-msgid "Denmark"
-msgstr "Danmark"
-
-#: ../rules/base.xml.in.h:187 ../rules/evdev.xml.in.h:187
-msgid "Deu"
-msgstr ""
-
-#: ../rules/base.xml.in.h:188 ../rules/evdev.xml.in.h:188
-msgid "Dexxa Wireless Desktop Keyboard"
-msgstr ""
-
-#: ../rules/base.xml.in.h:189 ../rules/evdev.xml.in.h:189
-msgid "Diamond 9801 / 9802 series"
-msgstr ""
-
-#: ../rules/base.xml.in.h:190 ../rules/evdev.xml.in.h:190
-msgid "Dvorak"
-msgstr "Dvorak"
-
-#: ../rules/base.xml.in.h:191 ../rules/evdev.xml.in.h:191
-msgid "Dvorak (UK Punctuation)"
-msgstr ""
-
-#: ../rules/base.xml.in.h:192 ../rules/evdev.xml.in.h:192
-msgid "Dvorak international"
-msgstr ""
-
-#: ../rules/base.xml.in.h:193 ../rules/evdev.xml.in.h:193
-msgid "Dvorak, Polish quotes on key \"1/!\""
-msgstr ""
-
-#: ../rules/base.xml.in.h:194 ../rules/evdev.xml.in.h:194
-msgid "Dvorak, Polish quotes on quotemark key"
-msgstr ""
-
-#: ../rules/base.xml.in.h:195 ../rules/evdev.xml.in.h:195
-msgid "E"
-msgstr ""
-
-#: ../rules/base.xml.in.h:196 ../rules/evdev.xml.in.h:196
-msgid "Eastern"
-msgstr "Østlig"
-
-#: ../rules/base.xml.in.h:197 ../rules/evdev.xml.in.h:197
-msgid "Eliminate dead keys"
-msgstr ""
-
-#: ../rules/base.xml.in.h:198 ../rules/evdev.xml.in.h:198
-msgid "Enable extra typographic characters"
-msgstr ""
-
-#: ../rules/base.xml.in.h:199 ../rules/evdev.xml.in.h:199
-msgid "Ennyah DKB-1008"
-msgstr ""
-
-#: ../rules/base.xml.in.h:200 ../rules/evdev.xml.in.h:200
-msgid "Epo"
-msgstr ""
-
-#: ../rules/base.xml.in.h:201 ../rules/evdev.xml.in.h:201
-msgid "Ergonomic"
-msgstr "Ergonomisk"
-
-#: ../rules/base.xml.in.h:202 ../rules/evdev.xml.in.h:202
-msgid "Esp"
-msgstr ""
-
-#: ../rules/base.xml.in.h:203 ../rules/evdev.xml.in.h:203
-msgid "Esperanto"
-msgstr "Esperanto"
-
-#: ../rules/base.xml.in.h:204 ../rules/evdev.xml.in.h:204
-msgid "Est"
-msgstr "Est"
-
-#: ../rules/base.xml.in.h:205 ../rules/evdev.xml.in.h:205
-msgid "Estonia"
-msgstr "Estland"
-
-#: ../rules/base.xml.in.h:206 ../rules/evdev.xml.in.h:206
-msgid "Eth"
-msgstr "Eth"
-
-#: ../rules/base.xml.in.h:207 ../rules/evdev.xml.in.h:207
-msgid "Ethiopia"
-msgstr "Etiopia"
-
-#: ../rules/base.xml.in.h:208 ../rules/evdev.xml.in.h:208
-msgid "Evdev-managed keyboard"
-msgstr ""
-
-#: ../rules/base.xml.in.h:209 ../rules/evdev.xml.in.h:209
-msgid "Everex STEPnote"
-msgstr ""
-
-#: ../rules/base.xml.in.h:210 ../rules/evdev.xml.in.h:210
-msgid "Ewe"
-msgstr ""
-
-#: ../rules/base.xml.in.h:211 ../rules/evdev.xml.in.h:211
-msgid "Extended"
-msgstr "Utvidet"
-
-#: ../rules/base.xml.in.h:212 ../rules/evdev.xml.in.h:212
-msgid "Extended Backslash"
-msgstr ""
-
-#: ../rules/base.xml.in.h:213 ../rules/evdev.xml.in.h:213
-msgid "F-letter (F) variant"
-msgstr ""
-
-#: ../rules/base.xml.in.h:214 ../rules/evdev.xml.in.h:214
-msgid "FL90"
-msgstr ""
-
-#: ../rules/base.xml.in.h:215 ../rules/evdev.xml.in.h:215
-msgid "Fao"
-msgstr ""
-
-#: ../rules/base.xml.in.h:216 ../rules/evdev.xml.in.h:216
-msgid "Faroe Islands"
-msgstr "Færøyene"
-
-#: ../rules/base.xml.in.h:217 ../rules/evdev.xml.in.h:217
-msgid "Fin"
-msgstr "Fin"
-
-#: ../rules/base.xml.in.h:218 ../rules/evdev.xml.in.h:218
-msgid "Finland"
-msgstr "Finland"
-
-#. This assumes the KP_ abstract symbols are actually useful for some apps
-#. The description needs to be rewritten
-#: ../rules/base.xml.in.h:221 ../rules/evdev.xml.in.h:221
-msgid "Four-level key with abstract separators"
-msgstr ""
-
-#: ../rules/base.xml.in.h:222 ../rules/evdev.xml.in.h:222
-msgid "Four-level key with comma"
-msgstr ""
-
-#: ../rules/base.xml.in.h:223 ../rules/evdev.xml.in.h:223
-msgid "Four-level key with dot"
-msgstr ""
-
-#: ../rules/base.xml.in.h:224 ../rules/evdev.xml.in.h:224
-msgid "Four-level key with dot, latin-9 restriction"
-msgstr ""
-
-#: ../rules/base.xml.in.h:225 ../rules/evdev.xml.in.h:225
-msgid "Four-level key with momayyez"
-msgstr ""
-
-#: ../rules/base.xml.in.h:226 ../rules/evdev.xml.in.h:226
-msgid "Fra"
-msgstr "Fra"
-
-#: ../rules/base.xml.in.h:227 ../rules/evdev.xml.in.h:227
-msgid "France"
-msgstr "Frankrike"
-
-#: ../rules/base.xml.in.h:228 ../rules/evdev.xml.in.h:228
-msgid "French"
-msgstr "Fransk"
-
-#: ../rules/base.xml.in.h:229 ../rules/evdev.xml.in.h:229
-msgid "French (Macintosh)"
-msgstr "Fransk (Macintosh)"
-
-#: ../rules/base.xml.in.h:230 ../rules/evdev.xml.in.h:230
-msgid "French (legacy)"
-msgstr "Fransk (gammel)"
-
-#: ../rules/base.xml.in.h:231 ../rules/evdev.xml.in.h:231
-msgid "French Dvorak"
-msgstr "Fransk dvorak"
-
-#: ../rules/base.xml.in.h:232 ../rules/evdev.xml.in.h:232
-msgid "French, Sun dead keys"
-msgstr ""
-
-#: ../rules/base.xml.in.h:233 ../rules/evdev.xml.in.h:233
-msgid "French, eliminate dead keys"
-msgstr ""
-
-#: ../rules/base.xml.in.h:234 ../rules/evdev.xml.in.h:234
-msgid "Fujitsu-Siemens Computers AMILO laptop"
-msgstr ""
-
-#: ../rules/base.xml.in.h:235 ../rules/evdev.xml.in.h:235
-msgid "Fula"
-msgstr ""
-
-#: ../rules/base.xml.in.h:236 ../rules/evdev.xml.in.h:236
-msgid "GBr"
-msgstr ""
-
-#: ../rules/base.xml.in.h:237 ../rules/evdev.xml.in.h:237
-msgid "Ga"
-msgstr ""
-
-#: ../rules/base.xml.in.h:238 ../rules/evdev.xml.in.h:238
-msgid "Generic 101-key PC"
-msgstr "Vanlig 101-tasters PC"
-
-#: ../rules/base.xml.in.h:239 ../rules/evdev.xml.in.h:239
-msgid "Generic 102-key (Intl) PC"
-msgstr "Vanlig 102-tasters (Intl) PC"
-
-#: ../rules/base.xml.in.h:240 ../rules/evdev.xml.in.h:240
-msgid "Generic 104-key PC"
-msgstr "Vanlig 104-tasters PC"
-
-#: ../rules/base.xml.in.h:241 ../rules/evdev.xml.in.h:241
-msgid "Generic 105-key (Intl) PC"
-msgstr "Vanlig 105-tasters (Intl) PC"
-
-#: ../rules/base.xml.in.h:242 ../rules/evdev.xml.in.h:242
-msgid "Genius Comfy KB-12e"
-msgstr ""
-
-#: ../rules/base.xml.in.h:243 ../rules/evdev.xml.in.h:243
-msgid "Genius Comfy KB-16M / Genius MM Keyboard KWD-910"
-msgstr ""
-
-#: ../rules/base.xml.in.h:244 ../rules/evdev.xml.in.h:244
-msgid "Genius Comfy KB-21e-Scroll"
-msgstr ""
-
-#: ../rules/base.xml.in.h:245 ../rules/evdev.xml.in.h:245
-msgid "Genius KB-19e NB"
-msgstr ""
-
-#: ../rules/base.xml.in.h:246 ../rules/evdev.xml.in.h:246
-msgid "Geo"
-msgstr ""
-
-#: ../rules/base.xml.in.h:247 ../rules/evdev.xml.in.h:247
-msgid "Georgia"
-msgstr "Georgia"
-
-#: ../rules/base.xml.in.h:248 ../rules/evdev.xml.in.h:248
-msgid "Georgian"
-msgstr "Georgisk"
-
-#: ../rules/base.xml.in.h:249 ../rules/evdev.xml.in.h:249
-msgid "Georgian AZERTY Tskapo"
-msgstr ""
-
-#: ../rules/base.xml.in.h:250 ../rules/evdev.xml.in.h:250
-msgid "German (Macintosh)"
-msgstr "Tysk (Macintosh)"
-
-#: ../rules/base.xml.in.h:251 ../rules/evdev.xml.in.h:251
-msgid "German, Sun dead keys"
-msgstr ""
-
-#: ../rules/base.xml.in.h:252 ../rules/evdev.xml.in.h:252
-msgid "German, eliminate dead keys"
-msgstr ""
-
-#: ../rules/base.xml.in.h:253 ../rules/evdev.xml.in.h:253
-msgid "Germany"
-msgstr "Tyskland"
-
-#: ../rules/base.xml.in.h:254 ../rules/evdev.xml.in.h:254
-msgid "Gha"
-msgstr ""
-
-#: ../rules/base.xml.in.h:255 ../rules/evdev.xml.in.h:255
-msgid "Ghana"
-msgstr "Ghana"
-
-#: ../rules/base.xml.in.h:256 ../rules/evdev.xml.in.h:256
-msgid "Gre"
-msgstr ""
-
-#: ../rules/base.xml.in.h:257 ../rules/evdev.xml.in.h:257
-msgid "Greece"
-msgstr "Hellas"
-
-#: ../rules/base.xml.in.h:258 ../rules/evdev.xml.in.h:258
-msgid "Group toggle on multiply/divide key"
-msgstr ""
-
-#: ../rules/base.xml.in.h:259 ../rules/evdev.xml.in.h:259
-msgid "Gui"
-msgstr "Gui"
-
-#: ../rules/base.xml.in.h:260 ../rules/evdev.xml.in.h:260
-msgid "Guinea"
-msgstr "Guinea"
-
-#: ../rules/base.xml.in.h:261 ../rules/evdev.xml.in.h:261
-msgid "Gujarati"
-msgstr ""
-
-#: ../rules/base.xml.in.h:262 ../rules/evdev.xml.in.h:262
-msgid "Gurmukhi"
-msgstr ""
-
-#: ../rules/base.xml.in.h:263 ../rules/evdev.xml.in.h:263
-msgid "Gurmukhi Jhelum"
-msgstr ""
-
-#: ../rules/base.xml.in.h:264 ../rules/evdev.xml.in.h:264
-msgid "Gyration"
-msgstr ""
-
-#: ../rules/base.xml.in.h:265 ../rules/evdev.xml.in.h:265
-msgid "Happy Hacking Keyboard"
-msgstr ""
-
-#: ../rules/base.xml.in.h:266 ../rules/evdev.xml.in.h:266
-msgid "Happy Hacking Keyboard for Mac"
-msgstr ""
-
-#: ../rules/base.xml.in.h:267 ../rules/evdev.xml.in.h:267
-msgid "Hausa"
-msgstr ""
-
-#: ../rules/base.xml.in.h:268 ../rules/evdev.xml.in.h:268
-msgid "Hewlett-Packard Internet Keyboard"
-msgstr ""
-
-#: ../rules/base.xml.in.h:269 ../rules/evdev.xml.in.h:269
-msgid "Hewlett-Packard Omnibook 500 FA"
-msgstr ""
-
-#: ../rules/base.xml.in.h:270 ../rules/evdev.xml.in.h:270
-msgid "Hewlett-Packard Omnibook 5xx"
-msgstr ""
-
-#: ../rules/base.xml.in.h:271 ../rules/evdev.xml.in.h:271
-msgid "Hewlett-Packard Omnibook 6000/6100"
-msgstr ""
-
-#: ../rules/base.xml.in.h:272 ../rules/evdev.xml.in.h:272
-msgid "Hewlett-Packard Omnibook XE3 GC"
-msgstr ""
-
-#: ../rules/base.xml.in.h:273 ../rules/evdev.xml.in.h:273
-msgid "Hewlett-Packard Omnibook XE3 GF"
-msgstr ""
-
-#: ../rules/base.xml.in.h:274 ../rules/evdev.xml.in.h:274
-msgid "Hewlett-Packard Omnibook XT1000"
-msgstr ""
-
-#: ../rules/base.xml.in.h:275 ../rules/evdev.xml.in.h:275
-msgid "Hewlett-Packard Pavilion ZT11xx"
-msgstr ""
-
-#: ../rules/base.xml.in.h:276 ../rules/evdev.xml.in.h:276
-msgid "Hewlett-Packard Pavilion dv5"
-msgstr ""
-
-#: ../rules/base.xml.in.h:277 ../rules/evdev.xml.in.h:277
-msgid "Hewlett-Packard SK-250x Multimedia Keyboard"
-msgstr ""
-
-#: ../rules/base.xml.in.h:278 ../rules/evdev.xml.in.h:278
-msgid "Hewlett-Packard nx9020"
-msgstr ""
-
-#: ../rules/base.xml.in.h:279 ../rules/evdev.xml.in.h:279
-msgid "Hexadecimal"
-msgstr ""
-
-#: ../rules/base.xml.in.h:280 ../rules/evdev.xml.in.h:280
-msgid "Hindi Bolnagri"
-msgstr ""
-
-#: ../rules/base.xml.in.h:281 ../rules/evdev.xml.in.h:281
-msgid "Homophonic"
-msgstr ""
-
-#: ../rules/base.xml.in.h:282 ../rules/evdev.xml.in.h:282
-msgid "Honeywell Euroboard"
-msgstr ""
-
-#: ../rules/base.xml.in.h:283 ../rules/evdev.xml.in.h:283
-msgid "Hrv"
-msgstr ""
-
-#: ../rules/base.xml.in.h:284 ../rules/evdev.xml.in.h:284
-msgid "Hun"
-msgstr ""
-
-#: ../rules/base.xml.in.h:285 ../rules/evdev.xml.in.h:285
-msgid "Hungary"
-msgstr "Ungarn"
-
-#: ../rules/base.xml.in.h:286 ../rules/evdev.xml.in.h:286
-msgid "Hyper is mapped to Win-keys"
-msgstr ""
-
-#: ../rules/base.xml.in.h:287 ../rules/evdev.xml.in.h:287
-msgid "IBM (LST 1205-92)"
-msgstr ""
-
-#: ../rules/base.xml.in.h:288 ../rules/evdev.xml.in.h:288
-msgid "IBM Rapid Access"
-msgstr ""
-
-#: ../rules/base.xml.in.h:289 ../rules/evdev.xml.in.h:289
-msgid "IBM Rapid Access II"
-msgstr ""
-
-#: ../rules/base.xml.in.h:290 ../rules/evdev.xml.in.h:290
-msgid "IBM Space Saver"
-msgstr ""
-
-#: ../rules/base.xml.in.h:291 ../rules/evdev.xml.in.h:291
-msgid "IBM ThinkPad 560Z/600/600E/A22E"
-msgstr ""
-
-#: ../rules/base.xml.in.h:292 ../rules/evdev.xml.in.h:292
-msgid "IBM ThinkPad 560Z/600/600E/A22E, Intl"
-msgstr ""
-
-#: ../rules/base.xml.in.h:293 ../rules/evdev.xml.in.h:293
-msgid "IBM ThinkPad R60/T60/R61/T61"
-msgstr ""
-
-#: ../rules/base.xml.in.h:294 ../rules/evdev.xml.in.h:294
-msgid "IBM ThinkPad Z60m/Z60t/Z61m/Z61t"
-msgstr ""
-
-#: ../rules/base.xml.in.h:295 ../rules/evdev.xml.in.h:295
-msgid "ISO Alternate"
-msgstr ""
-
-#: ../rules/base.xml.in.h:296 ../rules/evdev.xml.in.h:296
-msgid "Iceland"
-msgstr "Island"
-
-#: ../rules/base.xml.in.h:297 ../rules/evdev.xml.in.h:297
-msgid "Igbo"
-msgstr ""
-
-#: ../rules/base.xml.in.h:298 ../rules/evdev.xml.in.h:298
-msgid "Include dead tilde"
-msgstr ""
-
-#: ../rules/base.xml.in.h:299 ../rules/evdev.xml.in.h:299
-msgid "Ind"
-msgstr "Ind"
-
-#: ../rules/base.xml.in.h:300 ../rules/evdev.xml.in.h:300
-msgid "India"
-msgstr "India"
-
-#: ../rules/base.xml.in.h:301 ../rules/evdev.xml.in.h:301
-msgid "International (AltGr dead keys)"
-msgstr ""
-
-#: ../rules/base.xml.in.h:302 ../rules/evdev.xml.in.h:302
-msgid "International (with dead keys)"
-msgstr ""
-
-#: ../rules/base.xml.in.h:303 ../rules/evdev.xml.in.h:303
-msgid "Inuktitut"
-msgstr ""
-
-#: ../rules/base.xml.in.h:304 ../rules/evdev.xml.in.h:304
-msgid "Iran"
-msgstr "Iran"
-
-#: ../rules/base.xml.in.h:305 ../rules/evdev.xml.in.h:305
-msgid "Iraq"
-msgstr "Irak"
-
-#: ../rules/base.xml.in.h:306 ../rules/evdev.xml.in.h:306
-msgid "Ireland"
-msgstr "Irland"
-
-#: ../rules/base.xml.in.h:307 ../rules/evdev.xml.in.h:307
-msgid "Irl"
-msgstr "Irl"
-
-#: ../rules/base.xml.in.h:308 ../rules/evdev.xml.in.h:308
-msgid "Irn"
-msgstr "Irn"
-
-#: ../rules/base.xml.in.h:309 ../rules/evdev.xml.in.h:309
-msgid "Irq"
-msgstr "Irk"
-
-#: ../rules/base.xml.in.h:310 ../rules/evdev.xml.in.h:310
-msgid "Isl"
-msgstr "Isl"
-
-#: ../rules/base.xml.in.h:311 ../rules/evdev.xml.in.h:311
-msgid "Isr"
-msgstr "Isr"
-
-#: ../rules/base.xml.in.h:312 ../rules/evdev.xml.in.h:312
-msgid "Israel"
-msgstr "Irsrael"
-
-#: ../rules/base.xml.in.h:313 ../rules/evdev.xml.in.h:313
-msgid "Ita"
-msgstr "Ita"
-
-#: ../rules/base.xml.in.h:314 ../rules/evdev.xml.in.h:314
-msgid "Italy"
-msgstr "Italia"
-
-#: ../rules/base.xml.in.h:315 ../rules/evdev.xml.in.h:315
-msgid "Japan"
-msgstr "Japan"
-
-#: ../rules/base.xml.in.h:316 ../rules/evdev.xml.in.h:316
-msgid "Japan (PC-98xx Series)"
-msgstr ""
-
-#: ../rules/base.xml.in.h:317 ../rules/evdev.xml.in.h:317
-msgid "Japanese 106-key"
-msgstr ""
-
-#: ../rules/base.xml.in.h:318 ../rules/evdev.xml.in.h:318
-msgid "Japanese keyboard options"
-msgstr ""
-
-#: ../rules/base.xml.in.h:319 ../rules/evdev.xml.in.h:319
-msgid "Jpn"
-msgstr "Jpn"
-
-#: ../rules/base.xml.in.h:320 ../rules/evdev.xml.in.h:320
-msgid "Kalmyk"
-msgstr ""
-
-#: ../rules/base.xml.in.h:321 ../rules/evdev.xml.in.h:321
-msgid "Kana"
-msgstr ""
-
-#: ../rules/base.xml.in.h:322 ../rules/evdev.xml.in.h:322
-msgid "Kana Lock key is locking"
-msgstr ""
-
-#: ../rules/base.xml.in.h:323 ../rules/evdev.xml.in.h:323
-msgid "Kannada"
-msgstr ""
-
-#: ../rules/base.xml.in.h:324 ../rules/evdev.xml.in.h:324
-msgid "Kashubian"
-msgstr ""
-
-#: ../rules/base.xml.in.h:325 ../rules/evdev.xml.in.h:325
-msgid "Kaz"
-msgstr ""
-
-#: ../rules/base.xml.in.h:326 ../rules/evdev.xml.in.h:326
-msgid "Kazakh with Russian"
-msgstr ""
-
-#: ../rules/base.xml.in.h:327 ../rules/evdev.xml.in.h:327
-msgid "Kazakhstan"
-msgstr ""
-
-#: ../rules/base.xml.in.h:328 ../rules/evdev.xml.in.h:328
-msgid "Key to choose 3rd level"
-msgstr ""
-
-#: ../rules/base.xml.in.h:329 ../rules/evdev.xml.in.h:329
-msgid "Key(s) to change layout"
-msgstr ""
-
-#: ../rules/base.xml.in.h:330 ../rules/evdev.xml.in.h:330
-msgid "Keypad"
-msgstr "Nummertastatur"
-
-#: ../rules/base.xml.in.h:331 ../rules/evdev.xml.in.h:331
-msgid "Keytronic FlexPro"
-msgstr ""
-
-#: ../rules/base.xml.in.h:332 ../rules/evdev.xml.in.h:332
-msgid "Khm"
-msgstr ""
-
-#: ../rules/base.xml.in.h:333 ../rules/evdev.xml.in.h:333
-msgid "Kir"
-msgstr "Kir"
-
-#: ../rules/base.xml.in.h:334 ../rules/evdev.xml.in.h:334
-msgid "Komi"
-msgstr "Komi"
-
-#: ../rules/base.xml.in.h:335 ../rules/evdev.xml.in.h:335
-msgid "Kor"
-msgstr "Kor"
-
-#: ../rules/base.xml.in.h:336 ../rules/evdev.xml.in.h:336
-msgid "Korea, Republic of"
-msgstr ""
-
-#: ../rules/base.xml.in.h:337 ../rules/evdev.xml.in.h:337
-msgid "Korean 106-key"
-msgstr ""
-
-#: ../rules/base.xml.in.h:338 ../rules/evdev.xml.in.h:338
-msgid "Ktunaxa"
-msgstr "Ktunaxa"
-
-#: ../rules/base.xml.in.h:339 ../rules/evdev.xml.in.h:339
-msgid "Kurdish, (F)"
-msgstr "Kurdisk, (F)"
-
-#: ../rules/base.xml.in.h:340 ../rules/evdev.xml.in.h:340
-msgid "Kurdish, Arabic-Latin"
-msgstr ""
-
-#: ../rules/base.xml.in.h:341 ../rules/evdev.xml.in.h:341
-msgid "Kurdish, Latin Alt-Q"
-msgstr ""
-
-#: ../rules/base.xml.in.h:342 ../rules/evdev.xml.in.h:342
-msgid "Kurdish, Latin Q"
-msgstr ""
-
-#: ../rules/base.xml.in.h:343 ../rules/evdev.xml.in.h:343
-msgid "Kyrgyzstan"
-msgstr "Kirgistan"
-
-#: ../rules/base.xml.in.h:344 ../rules/evdev.xml.in.h:344
-msgid "LAm"
-msgstr ""
-
-#: ../rules/base.xml.in.h:345 ../rules/evdev.xml.in.h:345
-msgid "LEKP"
-msgstr ""
-
-#: ../rules/base.xml.in.h:346 ../rules/evdev.xml.in.h:346
-msgid "LEKPa"
-msgstr ""
-
-#: ../rules/base.xml.in.h:347 ../rules/evdev.xml.in.h:347
-msgid "Lao"
-msgstr "Lao"
-
-#: ../rules/base.xml.in.h:348 ../rules/evdev.xml.in.h:348
-msgid "Laos"
-msgstr "Laos"
-
-#: ../rules/base.xml.in.h:349 ../rules/evdev.xml.in.h:349
-msgid "Laptop/notebook Compaq (eg. Armada) Laptop Keyboard"
-msgstr ""
-
-#: ../rules/base.xml.in.h:350 ../rules/evdev.xml.in.h:350
-msgid "Laptop/notebook Compaq (eg. Presario) Internet Keyboard"
-msgstr ""
-
-#: ../rules/base.xml.in.h:351 ../rules/evdev.xml.in.h:351
-msgid "Laptop/notebook eMachines m68xx"
-msgstr ""
-
-#: ../rules/base.xml.in.h:352 ../rules/evdev.xml.in.h:352
-msgid "Latin"
-msgstr "Latin"
-
-#: ../rules/base.xml.in.h:353 ../rules/evdev.xml.in.h:353
-msgid "Latin American"
-msgstr "Latinamerikansk"
-
-#: ../rules/base.xml.in.h:354 ../rules/evdev.xml.in.h:354
-msgid "Latin Unicode"
-msgstr ""
-
-#: ../rules/base.xml.in.h:355 ../rules/evdev.xml.in.h:355
-msgid "Latin Unicode qwerty"
-msgstr ""
-
-#: ../rules/base.xml.in.h:356 ../rules/evdev.xml.in.h:356
-msgid "Latin qwerty"
-msgstr ""
-
-#: ../rules/base.xml.in.h:357 ../rules/evdev.xml.in.h:357
-msgid "Latin unicode"
-msgstr ""
-
-#: ../rules/base.xml.in.h:358 ../rules/evdev.xml.in.h:358
-msgid "Latin unicode qwerty"
-msgstr ""
-
-#: ../rules/base.xml.in.h:359 ../rules/evdev.xml.in.h:359
-msgid "Latin with guillemets"
-msgstr ""
-
-#: ../rules/base.xml.in.h:360 ../rules/evdev.xml.in.h:360
-msgid "Latvia"
-msgstr "Latvia"
-
-#: ../rules/base.xml.in.h:361 ../rules/evdev.xml.in.h:361
-msgid "Lav"
-msgstr "Lav"
-
-#: ../rules/base.xml.in.h:362 ../rules/evdev.xml.in.h:362
-msgid "Left Alt"
-msgstr "Venstre Alt"
-
-#: ../rules/base.xml.in.h:363 ../rules/evdev.xml.in.h:363
-msgid "Left Alt (while pressed)"
-msgstr ""
-
-#: ../rules/base.xml.in.h:364 ../rules/evdev.xml.in.h:364
-msgid "Left Alt is swapped with Left Win"
-msgstr ""
-
-#: ../rules/base.xml.in.h:365 ../rules/evdev.xml.in.h:365
-msgid "Left Ctrl"
-msgstr "Venstre Ctrl"
-
-#: ../rules/base.xml.in.h:366 ../rules/evdev.xml.in.h:366
-msgid "Left Ctrl+Left Shift"
-msgstr ""
-
-#: ../rules/base.xml.in.h:367 ../rules/evdev.xml.in.h:367
-msgid "Left Shift"
-msgstr "Venstre Shift"
-
-#: ../rules/base.xml.in.h:368 ../rules/evdev.xml.in.h:368
-msgid "Left Win"
-msgstr "Venstre Win"
-
-#: ../rules/base.xml.in.h:369 ../rules/evdev.xml.in.h:369
-msgid "Left Win (to first layout), Right Win/Menu (to last layout)"
-msgstr ""
-
-#: ../rules/base.xml.in.h:370 ../rules/evdev.xml.in.h:370
-msgid "Left Win (while pressed)"
-msgstr ""
-
-#: ../rules/base.xml.in.h:371 ../rules/evdev.xml.in.h:371
-msgid "Left hand"
-msgstr "Venstre hånd"
-
-#: ../rules/base.xml.in.h:372 ../rules/evdev.xml.in.h:372
-msgid "Left handed Dvorak"
-msgstr ""
-
-#: ../rules/base.xml.in.h:373 ../rules/evdev.xml.in.h:373
-msgid "Legacy"
-msgstr ""
-
-#: ../rules/base.xml.in.h:374 ../rules/evdev.xml.in.h:374
-msgid "Legacy Wang 724"
-msgstr ""
-
-#. Actually, with KP_SEPARATOR, as the old keypad(comma)
-#: ../rules/base.xml.in.h:376 ../rules/evdev.xml.in.h:376
-msgid "Legacy key with comma"
-msgstr ""
-
-#: ../rules/base.xml.in.h:377 ../rules/evdev.xml.in.h:377
-msgid "Legacy key with dot"
-msgstr ""
-
-#: ../rules/base.xml.in.h:378 ../rules/evdev.xml.in.h:378
-msgid "Less-than/Greater-than"
-msgstr ""
-
-#: ../rules/base.xml.in.h:379 ../rules/evdev.xml.in.h:379
-msgid "Lithuania"
-msgstr "Litauen"
-
-#: ../rules/base.xml.in.h:380 ../rules/evdev.xml.in.h:380
-msgid "Logitech Access Keyboard"
-msgstr ""
-
-#: ../rules/base.xml.in.h:381 ../rules/evdev.xml.in.h:381
-msgid "Logitech Cordless Desktop"
-msgstr ""
-
-#: ../rules/base.xml.in.h:382 ../rules/evdev.xml.in.h:382
-msgid "Logitech Cordless Desktop (alternate option)"
-msgstr ""
-
-#: ../rules/base.xml.in.h:383 ../rules/evdev.xml.in.h:383
-msgid "Logitech Cordless Desktop EX110"
-msgstr ""
-
-#: ../rules/base.xml.in.h:384 ../rules/evdev.xml.in.h:384
-msgid "Logitech Cordless Desktop LX-300"
-msgstr ""
-
-#: ../rules/base.xml.in.h:385 ../rules/evdev.xml.in.h:385
-msgid "Logitech Cordless Desktop Navigator"
-msgstr ""
-
-#: ../rules/base.xml.in.h:386 ../rules/evdev.xml.in.h:386
-msgid "Logitech Cordless Desktop Optical"
-msgstr ""
-
-#: ../rules/base.xml.in.h:387 ../rules/evdev.xml.in.h:387
-msgid "Logitech Cordless Desktop Pro (alternate option2)"
-msgstr ""
-
-#: ../rules/base.xml.in.h:388 ../rules/evdev.xml.in.h:388
-msgid "Logitech Cordless Desktop iTouch"
-msgstr ""
-
-#: ../rules/base.xml.in.h:389 ../rules/evdev.xml.in.h:389
-msgid "Logitech Cordless Freedom/Desktop Navigator"
-msgstr ""
-
-#: ../rules/base.xml.in.h:390 ../rules/evdev.xml.in.h:390
-msgid "Logitech G15 extra keys via G15daemon"
-msgstr ""
-
-#: ../rules/base.xml.in.h:391 ../rules/evdev.xml.in.h:391
-msgid "Logitech Generic Keyboard"
-msgstr ""
-
-#: ../rules/base.xml.in.h:392 ../rules/evdev.xml.in.h:392
-msgid "Logitech Internet 350 Keyboard"
-msgstr ""
-
-#: ../rules/base.xml.in.h:393 ../rules/evdev.xml.in.h:393
-msgid "Logitech Internet Keyboard"
-msgstr ""
-
-#: ../rules/base.xml.in.h:394 ../rules/evdev.xml.in.h:394
-msgid "Logitech Internet Navigator Keyboard"
-msgstr ""
-
-#: ../rules/base.xml.in.h:395 ../rules/evdev.xml.in.h:395
-msgid "Logitech Media Elite Keyboard"
-msgstr ""
-
-#: ../rules/base.xml.in.h:396 ../rules/evdev.xml.in.h:396
-msgid "Logitech Ultra-X Cordless Media Desktop Keyboard"
-msgstr ""
-
-#: ../rules/base.xml.in.h:397 ../rules/evdev.xml.in.h:397
-msgid "Logitech Ultra-X Keyboard"
-msgstr ""
-
-#: ../rules/base.xml.in.h:398 ../rules/evdev.xml.in.h:398
-msgid "Logitech diNovo Edge Keyboard"
-msgstr ""
-
-#: ../rules/base.xml.in.h:399 ../rules/evdev.xml.in.h:399
-msgid "Logitech diNovo Keyboard"
-msgstr ""
-
-#: ../rules/base.xml.in.h:400 ../rules/evdev.xml.in.h:400
-msgid "Logitech iTouch"
-msgstr ""
-
-#: ../rules/base.xml.in.h:401 ../rules/evdev.xml.in.h:401
-msgid "Logitech iTouch Cordless Keyboard (model Y-RB6)"
-msgstr ""
-
-#: ../rules/base.xml.in.h:402 ../rules/evdev.xml.in.h:402
-msgid "Logitech iTouch Internet Navigator Keyboard SE"
-msgstr ""
-
-#: ../rules/base.xml.in.h:403 ../rules/evdev.xml.in.h:403
-msgid "Logitech iTouch Internet Navigator Keyboard SE (USB)"
-msgstr ""
-
-#: ../rules/base.xml.in.h:404 ../rules/evdev.xml.in.h:404
-msgid "Lower Sorbian"
-msgstr ""
-
-#: ../rules/base.xml.in.h:405 ../rules/evdev.xml.in.h:405
-msgid "Lower Sorbian (qwertz)"
-msgstr ""
-
-#: ../rules/base.xml.in.h:406 ../rules/evdev.xml.in.h:406
-msgid "Ltu"
-msgstr "Ltu"
-
-#: ../rules/base.xml.in.h:407 ../rules/evdev.xml.in.h:407
-msgid "MESS"
-msgstr "MESS"
-
-#: ../rules/base.xml.in.h:408 ../rules/evdev.xml.in.h:408
-msgid "MNE"
-msgstr ""
-
-#: ../rules/base.xml.in.h:409 ../rules/evdev.xml.in.h:409
-msgid "MacBook/MacBook Pro"
-msgstr ""
-
-#: ../rules/base.xml.in.h:410 ../rules/evdev.xml.in.h:410
-msgid "MacBook/MacBook Pro (Intl)"
-msgstr ""
-
-#: ../rules/base.xml.in.h:411 ../rules/evdev.xml.in.h:411
-msgid "Macedonia"
-msgstr "Makedonia"
-
-#: ../rules/base.xml.in.h:412 ../rules/evdev.xml.in.h:412
-msgid "Macintosh"
-msgstr ""
-
-#: ../rules/base.xml.in.h:413 ../rules/evdev.xml.in.h:413
-msgid "Macintosh Old"
-msgstr ""
-
-#: ../rules/base.xml.in.h:414 ../rules/evdev.xml.in.h:414
-msgid "Macintosh, Sun dead keys"
-msgstr ""
-
-#: ../rules/base.xml.in.h:415 ../rules/evdev.xml.in.h:415
-msgid "Macintosh, eliminate dead keys"
-msgstr ""
-
-#: ../rules/base.xml.in.h:416 ../rules/evdev.xml.in.h:416
-msgid "Make CapsLock an additional Backspace"
-msgstr ""
-
-#: ../rules/base.xml.in.h:417 ../rules/evdev.xml.in.h:417
-msgid "Make CapsLock an additional Ctrl"
-msgstr ""
-
-#: ../rules/base.xml.in.h:418 ../rules/evdev.xml.in.h:418
-msgid "Make CapsLock an additional ESC"
-msgstr ""
-
-#: ../rules/base.xml.in.h:419 ../rules/evdev.xml.in.h:419
-msgid "Mal"
-msgstr ""
-
-#: ../rules/base.xml.in.h:420 ../rules/evdev.xml.in.h:420
-msgid "Malayalam"
-msgstr ""
-
-#: ../rules/base.xml.in.h:421 ../rules/evdev.xml.in.h:421
-msgid "Malayalam Lalitha"
-msgstr ""
-
-#: ../rules/base.xml.in.h:422 ../rules/evdev.xml.in.h:422
-msgid "Maldives"
-msgstr "Maldivene"
-
-#: ../rules/base.xml.in.h:423 ../rules/evdev.xml.in.h:423
-msgid "Malta"
-msgstr "Malta"
-
-#: ../rules/base.xml.in.h:424 ../rules/evdev.xml.in.h:424
-msgid "Maltese keyboard with US layout"
-msgstr ""
-
-#: ../rules/base.xml.in.h:425 ../rules/evdev.xml.in.h:425
-msgid "Mao"
-msgstr "Mao"
-
-#: ../rules/base.xml.in.h:426 ../rules/evdev.xml.in.h:426
-msgid "Maori"
-msgstr "Maori"
-
-#: ../rules/base.xml.in.h:427 ../rules/evdev.xml.in.h:427
-msgid "Memorex MX1998"
-msgstr ""
-
-#: ../rules/base.xml.in.h:428 ../rules/evdev.xml.in.h:428
-msgid "Memorex MX2500 EZ-Access Keyboard"
-msgstr ""
-
-#: ../rules/base.xml.in.h:429 ../rules/evdev.xml.in.h:429
-msgid "Memorex MX2750"
-msgstr ""
-
-#: ../rules/base.xml.in.h:430 ../rules/evdev.xml.in.h:430
-msgid "Menu"
-msgstr ""
-
-#: ../rules/base.xml.in.h:431 ../rules/evdev.xml.in.h:431
-msgid "Meta is mapped to Left Win"
-msgstr ""
-
-#: ../rules/base.xml.in.h:432 ../rules/evdev.xml.in.h:432
-msgid "Meta is mapped to Win keys"
-msgstr ""
-
-#: ../rules/base.xml.in.h:433 ../rules/evdev.xml.in.h:433
-msgid "Microsoft Comfort Curve Keyboard 2000"
-msgstr ""
-
-#: ../rules/base.xml.in.h:434 ../rules/evdev.xml.in.h:434
-msgid "Microsoft Internet Keyboard"
-msgstr ""
-
-#: ../rules/base.xml.in.h:435 ../rules/evdev.xml.in.h:435
-msgid "Microsoft Internet Keyboard Pro, Swedish"
-msgstr ""
-
-#: ../rules/base.xml.in.h:436 ../rules/evdev.xml.in.h:436
-msgid "Microsoft Natural"
-msgstr ""
-
-#: ../rules/base.xml.in.h:437 ../rules/evdev.xml.in.h:437
-msgid "Microsoft Natural Keyboard Elite"
-msgstr ""
-
-#: ../rules/base.xml.in.h:438 ../rules/evdev.xml.in.h:438
-msgid "Microsoft Natural Keyboard Pro / Microsoft Internet Keyboard Pro"
-msgstr ""
-
-#: ../rules/base.xml.in.h:439 ../rules/evdev.xml.in.h:439
-msgid "Microsoft Natural Keyboard Pro OEM"
-msgstr ""
-
-#: ../rules/base.xml.in.h:440 ../rules/evdev.xml.in.h:440
-msgid "Microsoft Natural Keyboard Pro USB / Microsoft Internet Keyboard Pro"
-msgstr ""
-
-#: ../rules/base.xml.in.h:441 ../rules/evdev.xml.in.h:441
-msgid "Microsoft Natural Wireless Ergonomic Keyboard 7000"
-msgstr ""
-
-#: ../rules/base.xml.in.h:442 ../rules/evdev.xml.in.h:442
-msgid "Microsoft Office Keyboard"
-msgstr ""
-
-#: ../rules/base.xml.in.h:443 ../rules/evdev.xml.in.h:443
-msgid "Microsoft Wireless Multimedia Keyboard 1.0A"
-msgstr ""
-
-#: ../rules/base.xml.in.h:444 ../rules/evdev.xml.in.h:444
-msgid "Miscellaneous compatibility options"
-msgstr ""
-
-#: ../rules/base.xml.in.h:445 ../rules/evdev.xml.in.h:445
-msgid "Mkd"
-msgstr ""
-
-#: ../rules/base.xml.in.h:446 ../rules/evdev.xml.in.h:446
-msgid "Mlt"
-msgstr ""
-
-#: ../rules/base.xml.in.h:447 ../rules/evdev.xml.in.h:447
-msgid "Mmr"
-msgstr ""
-
-#: ../rules/base.xml.in.h:448 ../rules/evdev.xml.in.h:448
-msgid "Mng"
-msgstr ""
-
-#: ../rules/base.xml.in.h:449 ../rules/evdev.xml.in.h:449
-msgid "Mongolia"
-msgstr ""
-
-#: ../rules/base.xml.in.h:450 ../rules/evdev.xml.in.h:450
-msgid "Montenegro"
-msgstr ""
-
-#: ../rules/base.xml.in.h:451 ../rules/evdev.xml.in.h:451
-msgid "Morocco"
-msgstr ""
-
-#: ../rules/base.xml.in.h:452 ../rules/evdev.xml.in.h:452
-msgid "Multilingual"
-msgstr ""
-
-#: ../rules/base.xml.in.h:453 ../rules/evdev.xml.in.h:453
-msgid "Multilingual, first part"
-msgstr ""
-
-#: ../rules/base.xml.in.h:454 ../rules/evdev.xml.in.h:454
-msgid "Multilingual, second part"
-msgstr ""
-
-#: ../rules/base.xml.in.h:455 ../rules/evdev.xml.in.h:455
-msgid "Myanmar"
-msgstr ""
-
-#: ../rules/base.xml.in.h:456 ../rules/evdev.xml.in.h:456
-msgid "NICOLA-F style Backspace"
-msgstr ""
-
-#: ../rules/base.xml.in.h:457 ../rules/evdev.xml.in.h:457
-msgid "NLA"
-msgstr ""
-
-#: ../rules/base.xml.in.h:458 ../rules/evdev.xml.in.h:458
-msgid "Nativo"
-msgstr ""
-
-#: ../rules/base.xml.in.h:459 ../rules/evdev.xml.in.h:459
-#, fuzzy
-msgid "Nativo for Esperanto"
-msgstr "Esperanto"
-
-#: ../rules/base.xml.in.h:460 ../rules/evdev.xml.in.h:460
-msgid "Nativo for USA keyboards"
-msgstr ""
-
-#: ../rules/base.xml.in.h:461 ../rules/evdev.xml.in.h:461
-msgid "Neo 2"
-msgstr ""
-
-#: ../rules/base.xml.in.h:462 ../rules/evdev.xml.in.h:462
-msgid "Nep"
-msgstr "Nep"
-
-#: ../rules/base.xml.in.h:463 ../rules/evdev.xml.in.h:463
-msgid "Nepal"
-msgstr "Nepal"
-
-#: ../rules/base.xml.in.h:464 ../rules/evdev.xml.in.h:464
-msgid "Netherlands"
-msgstr "Nederland"
-
-#: ../rules/base.xml.in.h:465 ../rules/evdev.xml.in.h:465
-msgid "Nig"
-msgstr "Nig"
-
-#: ../rules/base.xml.in.h:466 ../rules/evdev.xml.in.h:466
-msgid "Nigeria"
-msgstr "Nigeria"
-
-#: ../rules/base.xml.in.h:467 ../rules/evdev.xml.in.h:467
-msgid "Nld"
-msgstr ""
-
-#: ../rules/base.xml.in.h:468 ../rules/evdev.xml.in.h:468
-msgid "Non-breakable space character at fourth level"
-msgstr ""
-
-#: ../rules/base.xml.in.h:469 ../rules/evdev.xml.in.h:469
-msgid "Non-breakable space character at fourth level, thin non-breakable space character at sixth level"
-msgstr ""
-
-#: ../rules/base.xml.in.h:470 ../rules/evdev.xml.in.h:470
-msgid "Non-breakable space character at fourth level, thin non-breakable space character at sixth level (via Ctrl+Shift)"
-msgstr ""
-
-#: ../rules/base.xml.in.h:471 ../rules/evdev.xml.in.h:471
-msgid "Non-breakable space character at second level"
-msgstr ""
-
-#: ../rules/base.xml.in.h:472 ../rules/evdev.xml.in.h:472
-msgid "Non-breakable space character at third level"
-msgstr ""
-
-#: ../rules/base.xml.in.h:473 ../rules/evdev.xml.in.h:473
-msgid "Non-breakable space character at third level, nothing at fourth level"
-msgstr ""
-
-#: ../rules/base.xml.in.h:474 ../rules/evdev.xml.in.h:474
-msgid "Non-breakable space character at third level, thin non-breakable space character at fourth level"
-msgstr ""
-
-#: ../rules/base.xml.in.h:475 ../rules/evdev.xml.in.h:475
-msgid "Nor"
-msgstr "Nor"
-
-#: ../rules/base.xml.in.h:476 ../rules/evdev.xml.in.h:476
-msgid "Northern Saami"
-msgstr "Nord-samisk"
-
-#: ../rules/base.xml.in.h:477 ../rules/evdev.xml.in.h:477
-msgid "Northern Saami, eliminate dead keys"
-msgstr "Nord-samisk, uten døde taster"
-
-#: ../rules/base.xml.in.h:478 ../rules/evdev.xml.in.h:478
-msgid "Northgate OmniKey 101"
-msgstr ""
-
-#: ../rules/base.xml.in.h:479 ../rules/evdev.xml.in.h:479
-msgid "Norway"
-msgstr "Norge"
-
-#: ../rules/base.xml.in.h:480 ../rules/evdev.xml.in.h:480
-msgid "NumLock"
-msgstr ""
-
-#: ../rules/base.xml.in.h:481 ../rules/evdev.xml.in.h:481
-msgid "Numeric keypad delete key behaviour"
-msgstr ""
-
-#: ../rules/base.xml.in.h:482 ../rules/evdev.xml.in.h:482
-msgid "Numeric keypad keys work as with Mac"
-msgstr ""
-
-#: ../rules/base.xml.in.h:483 ../rules/evdev.xml.in.h:483
-msgid "Numeric keypad layout selection"
-msgstr ""
-
-#: ../rules/base.xml.in.h:484 ../rules/evdev.xml.in.h:484
-msgid "OADG 109A"
-msgstr ""
-
-#: ../rules/base.xml.in.h:485 ../rules/evdev.xml.in.h:485
-msgid "OLPC"
-msgstr ""
-
-#: ../rules/base.xml.in.h:486 ../rules/evdev.xml.in.h:486
-msgid "OLPC Dari"
-msgstr ""
-
-#: ../rules/base.xml.in.h:487 ../rules/evdev.xml.in.h:487
-msgid "OLPC Pashto"
-msgstr ""
-
-#: ../rules/base.xml.in.h:488 ../rules/evdev.xml.in.h:488
-msgid "OLPC Southern Uzbek"
-msgstr ""
-
-#: ../rules/base.xml.in.h:489 ../rules/evdev.xml.in.h:489
-msgid "Ogham"
-msgstr ""
-
-#: ../rules/base.xml.in.h:490 ../rules/evdev.xml.in.h:490
-msgid "Ogham IS434"
-msgstr ""
-
-#: ../rules/base.xml.in.h:491 ../rules/evdev.xml.in.h:491
-msgid "Oriya"
-msgstr ""
-
-#: ../rules/base.xml.in.h:492 ../rules/evdev.xml.in.h:492
-msgid "Ortek MCK-800 MM/Internet keyboard"
-msgstr ""
-
-#: ../rules/base.xml.in.h:493 ../rules/evdev.xml.in.h:493
-msgid "Ossetian"
-msgstr ""
-
-#: ../rules/base.xml.in.h:494 ../rules/evdev.xml.in.h:494
-msgid "Ossetian, Winkeys"
-msgstr ""
-
-#: ../rules/base.xml.in.h:495 ../rules/evdev.xml.in.h:495
-msgid "Ossetian, legacy"
-msgstr ""
-
-#: ../rules/base.xml.in.h:496 ../rules/evdev.xml.in.h:496
-msgid "PC-98xx Series"
-msgstr ""
-
-#: ../rules/base.xml.in.h:497 ../rules/evdev.xml.in.h:497
-msgid "Pak"
-msgstr ""
-
-#: ../rules/base.xml.in.h:498 ../rules/evdev.xml.in.h:498
-msgid "Pakistan"
-msgstr ""
-
-#: ../rules/base.xml.in.h:499 ../rules/evdev.xml.in.h:499
-msgid "Pashto"
-msgstr ""
-
-#: ../rules/base.xml.in.h:500 ../rules/evdev.xml.in.h:500
-msgid "Pattachote"
-msgstr ""
-
-#: ../rules/base.xml.in.h:501 ../rules/evdev.xml.in.h:501
-msgid "Phonetic"
-msgstr ""
-
-#: ../rules/base.xml.in.h:502 ../rules/evdev.xml.in.h:502
-msgid "Pol"
-msgstr ""
-
-#: ../rules/base.xml.in.h:503 ../rules/evdev.xml.in.h:503
-msgid "Poland"
-msgstr ""
-
-#: ../rules/base.xml.in.h:504 ../rules/evdev.xml.in.h:504
-msgid "Polytonic"
-msgstr ""
-
-#: ../rules/base.xml.in.h:505 ../rules/evdev.xml.in.h:505
-msgid "Portugal"
-msgstr "Portugal"
-
-#: ../rules/base.xml.in.h:506 ../rules/evdev.xml.in.h:506
-msgid "Pro"
-msgstr ""
-
-#: ../rules/base.xml.in.h:507 ../rules/evdev.xml.in.h:507
-msgid "Pro Keypad"
-msgstr ""
-
-#: ../rules/base.xml.in.h:508 ../rules/evdev.xml.in.h:508
-msgid "Probhat"
-msgstr ""
-
-#: ../rules/base.xml.in.h:509 ../rules/evdev.xml.in.h:509
-#, fuzzy
-msgid "Programmer Dvorak"
-msgstr "Fransk dvorak"
-
-#: ../rules/base.xml.in.h:510 ../rules/evdev.xml.in.h:510
-msgid "Propeller Voyager (KTEZ-1000)"
-msgstr ""
-
-#: ../rules/base.xml.in.h:511 ../rules/evdev.xml.in.h:511
-msgid "Prt"
-msgstr ""
-
-#: ../rules/base.xml.in.h:512 ../rules/evdev.xml.in.h:512
-msgid "QTronix Scorpius 98N+"
-msgstr ""
-
-#: ../rules/base.xml.in.h:513 ../rules/evdev.xml.in.h:513
-msgid "Right Alt"
-msgstr "Høyre Alt"
-
-#: ../rules/base.xml.in.h:514 ../rules/evdev.xml.in.h:514
-msgid "Right Alt (while pressed)"
-msgstr ""
-
-#: ../rules/base.xml.in.h:515 ../rules/evdev.xml.in.h:515
-msgid "Right Alt key never chooses 3rd level"
-msgstr ""
-
-#: ../rules/base.xml.in.h:516 ../rules/evdev.xml.in.h:516
-msgid "Right Alt, Shift+Right Alt key is Multi_Key"
-msgstr ""
-
-#: ../rules/base.xml.in.h:517 ../rules/evdev.xml.in.h:517
-msgid "Right Ctrl"
-msgstr "Høyre Ctrl"
-
-#: ../rules/base.xml.in.h:518 ../rules/evdev.xml.in.h:518
-msgid "Right Ctrl (while pressed)"
-msgstr ""
-
-#: ../rules/base.xml.in.h:519 ../rules/evdev.xml.in.h:519
-msgid "Right Ctrl as Right Alt"
-msgstr ""
-
-#: ../rules/base.xml.in.h:520 ../rules/evdev.xml.in.h:520
-msgid "Right Shift"
-msgstr "Høyre Shift"
-
-#: ../rules/base.xml.in.h:521 ../rules/evdev.xml.in.h:521
-msgid "Right Win"
-msgstr "Høyre Win"
-
-#: ../rules/base.xml.in.h:522 ../rules/evdev.xml.in.h:522
-msgid "Right Win (while pressed)"
-msgstr ""
-
-#: ../rules/base.xml.in.h:523 ../rules/evdev.xml.in.h:523
-msgid "Right hand"
-msgstr ""
-
-#: ../rules/base.xml.in.h:524 ../rules/evdev.xml.in.h:524
-msgid "Right handed Dvorak"
-msgstr ""
-
-#: ../rules/base.xml.in.h:525 ../rules/evdev.xml.in.h:525
-msgid "Romania"
-msgstr "Romania"
-
-#: ../rules/base.xml.in.h:526 ../rules/evdev.xml.in.h:526
-msgid "Romanian keyboard with German letters"
-msgstr ""
-
-#: ../rules/base.xml.in.h:527 ../rules/evdev.xml.in.h:527
-msgid "Romanian keyboard with German letters, eliminate dead keys"
-msgstr ""
-
-#: ../rules/base.xml.in.h:528 ../rules/evdev.xml.in.h:528
-msgid "Rou"
-msgstr ""
-
-#: ../rules/base.xml.in.h:529 ../rules/evdev.xml.in.h:529
-msgid "Rus"
-msgstr ""
-
-#: ../rules/base.xml.in.h:530 ../rules/evdev.xml.in.h:530
-msgid "Russia"
-msgstr "Russland"
-
-#: ../rules/base.xml.in.h:531 ../rules/evdev.xml.in.h:531
-msgid "Russian"
-msgstr "Russisk"
-
-#: ../rules/base.xml.in.h:532 ../rules/evdev.xml.in.h:532
-msgid "Russian phonetic"
-msgstr "Russisk fonetisk"
-
-#: ../rules/base.xml.in.h:533 ../rules/evdev.xml.in.h:533
-msgid "Russian phonetic Dvorak"
-msgstr ""
-
-#: ../rules/base.xml.in.h:534 ../rules/evdev.xml.in.h:534
-msgid "Russian phonetic, eliminate dead keys"
-msgstr ""
-
-#: ../rules/base.xml.in.h:535 ../rules/evdev.xml.in.h:535
-msgid "Russian with Kazakh"
-msgstr ""
-
-#: ../rules/base.xml.in.h:536 ../rules/evdev.xml.in.h:536
-msgid "SILVERCREST Multimedia Wireless Keyboard"
-msgstr ""
-
-#: ../rules/base.xml.in.h:537 ../rules/evdev.xml.in.h:537
-msgid "SK-1300"
-msgstr ""
-
-#: ../rules/base.xml.in.h:538 ../rules/evdev.xml.in.h:538
-msgid "SK-2500"
-msgstr ""
-
-#: ../rules/base.xml.in.h:539 ../rules/evdev.xml.in.h:539
-msgid "SK-6200"
-msgstr ""
-
-#: ../rules/base.xml.in.h:540 ../rules/evdev.xml.in.h:540
-msgid "SK-7100"
-msgstr ""
-
-#: ../rules/base.xml.in.h:541 ../rules/evdev.xml.in.h:541
-msgid "SRB"
-msgstr ""
-
-#: ../rules/base.xml.in.h:542 ../rules/evdev.xml.in.h:542
-msgid "SVEN Ergonomic 2500"
-msgstr ""
-
-#: ../rules/base.xml.in.h:543 ../rules/evdev.xml.in.h:543
-msgid "SVEN Slim 303"
-msgstr ""
-
-#: ../rules/base.xml.in.h:544 ../rules/evdev.xml.in.h:544
-msgid "Samsung SDM 4500P"
-msgstr ""
-
-#: ../rules/base.xml.in.h:545 ../rules/evdev.xml.in.h:545
-msgid "Samsung SDM 4510P"
-msgstr ""
-
-#: ../rules/base.xml.in.h:546 ../rules/evdev.xml.in.h:546
-msgid "ScrollLock"
-msgstr ""
-
-#: ../rules/base.xml.in.h:547 ../rules/evdev.xml.in.h:547
-msgid "Secwepemctsin"
-msgstr ""
-
-#: ../rules/base.xml.in.h:548 ../rules/evdev.xml.in.h:548
-msgid "Semi-colon on third level"
-msgstr ""
-
-#: ../rules/base.xml.in.h:549 ../rules/evdev.xml.in.h:549
-msgid "Serbia"
-msgstr "Serbia"
-
-#: ../rules/base.xml.in.h:550 ../rules/evdev.xml.in.h:550
-msgid "Shift cancels CapsLock"
-msgstr ""
-
-#: ../rules/base.xml.in.h:551 ../rules/evdev.xml.in.h:551
-msgid "Shift does not cancel NumLock, chooses 3d level instead"
-msgstr ""
-
-#: ../rules/base.xml.in.h:552 ../rules/evdev.xml.in.h:552
-msgid "Shift with numeric keypad keys works as in MS Windows"
-msgstr ""
-
-#: ../rules/base.xml.in.h:553 ../rules/evdev.xml.in.h:553
-msgid "Shift+CapsLock"
-msgstr ""
-
-#: ../rules/base.xml.in.h:554 ../rules/evdev.xml.in.h:554
-msgid "Simple"
-msgstr ""
-
-#: ../rules/base.xml.in.h:555 ../rules/evdev.xml.in.h:555
-msgid "Slovakia"
-msgstr "Slovakia"
-
-#: ../rules/base.xml.in.h:556 ../rules/evdev.xml.in.h:556
-msgid "Slovenia"
-msgstr "Slovenia"
-
-#: ../rules/base.xml.in.h:557 ../rules/evdev.xml.in.h:557
-msgid "South Africa"
-msgstr "Sør-Afrika"
-
-#: ../rules/base.xml.in.h:558 ../rules/evdev.xml.in.h:558
-msgid "Southern Uzbek"
-msgstr ""
-
-#: ../rules/base.xml.in.h:559 ../rules/evdev.xml.in.h:559
-msgid "Spain"
-msgstr "Spania"
-
-#: ../rules/base.xml.in.h:560 ../rules/evdev.xml.in.h:560
-msgid "Special keys (Ctrl+Alt+&lt;key&gt;) handled in a server"
-msgstr ""
-
-#: ../rules/base.xml.in.h:561 ../rules/evdev.xml.in.h:561
-msgid "SrL"
-msgstr ""
-
-#: ../rules/base.xml.in.h:562 ../rules/evdev.xml.in.h:562
-msgid "Sri Lanka"
-msgstr ""
-
-#: ../rules/base.xml.in.h:563 ../rules/evdev.xml.in.h:563
-msgid "Standard"
-msgstr ""
-
-#: ../rules/base.xml.in.h:564 ../rules/evdev.xml.in.h:564
-msgid "Standard (Cedilla)"
-msgstr ""
-
-#. RSTU 2019-91
-#: ../rules/base.xml.in.h:566 ../rules/evdev.xml.in.h:566
-msgid "Standard RSTU"
-msgstr ""
-
-#. RSTU 2019-91
-#: ../rules/base.xml.in.h:568 ../rules/evdev.xml.in.h:568
-msgid "Standard RSTU on Russian layout"
-msgstr ""
-
-#: ../rules/base.xml.in.h:569 ../rules/evdev.xml.in.h:569
-msgid "Sun Type 5/6"
-msgstr ""
-
-#: ../rules/base.xml.in.h:570 ../rules/evdev.xml.in.h:570
-msgid "Sun dead keys"
-msgstr ""
-
-#: ../rules/base.xml.in.h:571 ../rules/evdev.xml.in.h:571
-msgid "Super Power Multimedia Keyboard"
-msgstr ""
-
-#: ../rules/base.xml.in.h:572 ../rules/evdev.xml.in.h:572
-msgid "Super is mapped to Win keys"
-msgstr ""
-
-#: ../rules/base.xml.in.h:573 ../rules/evdev.xml.in.h:573
-msgid "Svdvorak"
-msgstr ""
-
-#: ../rules/base.xml.in.h:574 ../rules/evdev.xml.in.h:574
-msgid "Svk"
-msgstr ""
-
-#: ../rules/base.xml.in.h:575 ../rules/evdev.xml.in.h:575
-msgid "Svn"
-msgstr ""
-
-#: ../rules/base.xml.in.h:576 ../rules/evdev.xml.in.h:576
-msgid "Swap Ctrl and CapsLock"
-msgstr ""
-
-#: ../rules/base.xml.in.h:577 ../rules/evdev.xml.in.h:577
-msgid "Swap ESC and CapsLock"
-msgstr ""
-
-#: ../rules/base.xml.in.h:578 ../rules/evdev.xml.in.h:578
-msgid "Swe"
-msgstr ""
-
-#: ../rules/base.xml.in.h:579 ../rules/evdev.xml.in.h:579
-msgid "Sweden"
-msgstr ""
-
-#: ../rules/base.xml.in.h:580 ../rules/evdev.xml.in.h:580
-msgid "Switzerland"
-msgstr ""
-
-#: ../rules/base.xml.in.h:581 ../rules/evdev.xml.in.h:581
-msgid "Symplon PaceBook (tablet PC)"
-msgstr ""
-
-#: ../rules/base.xml.in.h:582 ../rules/evdev.xml.in.h:582
-msgid "Syr"
-msgstr ""
-
-#: ../rules/base.xml.in.h:583 ../rules/evdev.xml.in.h:583
-msgid "Syria"
-msgstr ""
-
-#: ../rules/base.xml.in.h:584 ../rules/evdev.xml.in.h:584
-msgid "Syriac"
-msgstr ""
-
-#: ../rules/base.xml.in.h:585 ../rules/evdev.xml.in.h:585
-msgid "Syriac phonetic"
-msgstr ""
-
-#: ../rules/base.xml.in.h:586 ../rules/evdev.xml.in.h:586
-msgid "TIS-820.2538"
-msgstr ""
-
-#: ../rules/base.xml.in.h:587 ../rules/evdev.xml.in.h:587
-msgid "Tajikistan"
-msgstr ""
-
-#: ../rules/base.xml.in.h:588 ../rules/evdev.xml.in.h:588
-msgid "Tamil"
-msgstr ""
-
-#: ../rules/base.xml.in.h:589 ../rules/evdev.xml.in.h:589
-msgid "Tamil TAB Typewriter"
-msgstr ""
-
-#: ../rules/base.xml.in.h:590 ../rules/evdev.xml.in.h:590
-msgid "Tamil TSCII Typewriter"
-msgstr ""
-
-#: ../rules/base.xml.in.h:591 ../rules/evdev.xml.in.h:591
-msgid "Tamil Unicode"
-msgstr ""
-
-#: ../rules/base.xml.in.h:592 ../rules/evdev.xml.in.h:592
-msgid "Targa Visionary 811"
-msgstr ""
-
-#: ../rules/base.xml.in.h:593 ../rules/evdev.xml.in.h:593
-msgid "Tatar"
-msgstr ""
-
-#: ../rules/base.xml.in.h:594 ../rules/evdev.xml.in.h:594
-msgid "Telugu"
-msgstr ""
-
-#: ../rules/base.xml.in.h:595 ../rules/evdev.xml.in.h:595
-msgid "Tha"
-msgstr ""
-
-#: ../rules/base.xml.in.h:596 ../rules/evdev.xml.in.h:596
-msgid "Thailand"
-msgstr ""
-
-#: ../rules/base.xml.in.h:597 ../rules/evdev.xml.in.h:597
-msgid "Tibetan"
-msgstr ""
-
-#: ../rules/base.xml.in.h:598 ../rules/evdev.xml.in.h:598
-msgid "Tibetan (with ASCII numerals)"
-msgstr ""
-
-#: ../rules/base.xml.in.h:599 ../rules/evdev.xml.in.h:599
-msgid "Tifinagh"
-msgstr ""
-
-#: ../rules/base.xml.in.h:600 ../rules/evdev.xml.in.h:600
-msgid "Tifinagh Alternative"
-msgstr ""
-
-#: ../rules/base.xml.in.h:601 ../rules/evdev.xml.in.h:601
-msgid "Tifinagh Alternative Phonetic"
-msgstr ""
-
-#: ../rules/base.xml.in.h:602 ../rules/evdev.xml.in.h:602
-msgid "Tifinagh Extended"
-msgstr ""
-
-#: ../rules/base.xml.in.h:603 ../rules/evdev.xml.in.h:603
-msgid "Tifinagh Extended Phonetic"
-msgstr ""
-
-#: ../rules/base.xml.in.h:604 ../rules/evdev.xml.in.h:604
-msgid "Tifinagh Phonetic"
-msgstr ""
-
-#: ../rules/base.xml.in.h:605 ../rules/evdev.xml.in.h:605
-msgid "Tilde (~) variant"
-msgstr ""
-
-#: ../rules/base.xml.in.h:606 ../rules/evdev.xml.in.h:606
-msgid "Tjk"
-msgstr ""
-
-#: ../rules/base.xml.in.h:607 ../rules/evdev.xml.in.h:607
-msgid "To the corresponding key in a Dvorak keyboard."
-msgstr ""
-
-#: ../rules/base.xml.in.h:608 ../rules/evdev.xml.in.h:608
-msgid "To the corresponding key in a Qwerty keyboard."
-msgstr ""
-
-#: ../rules/base.xml.in.h:609 ../rules/evdev.xml.in.h:609
-msgid "Toshiba Satellite S3000"
-msgstr ""
-
-#: ../rules/base.xml.in.h:610 ../rules/evdev.xml.in.h:610
-msgid "Trust Direct Access Keyboard"
-msgstr ""
-
-#: ../rules/base.xml.in.h:611 ../rules/evdev.xml.in.h:611
-msgid "Trust Wireless Keyboard Classic"
-msgstr ""
-
-#: ../rules/base.xml.in.h:612 ../rules/evdev.xml.in.h:612
-msgid "Tur"
-msgstr ""
-
-#: ../rules/base.xml.in.h:613 ../rules/evdev.xml.in.h:613
-msgid "Turkey"
-msgstr ""
-
-#: ../rules/base.xml.in.h:614 ../rules/evdev.xml.in.h:614
-msgid "Typewriter"
-msgstr ""
-
-#: ../rules/base.xml.in.h:615 ../rules/evdev.xml.in.h:615
-msgid "UCW layout (accented letters only)"
-msgstr ""
-
-#: ../rules/base.xml.in.h:616 ../rules/evdev.xml.in.h:616
-msgid "US keyboard with Bosnian digraphs"
-msgstr ""
-
-#: ../rules/base.xml.in.h:617 ../rules/evdev.xml.in.h:617
-msgid "US keyboard with Bosnian letters"
-msgstr ""
-
-#: ../rules/base.xml.in.h:618 ../rules/evdev.xml.in.h:618
-msgid "US keyboard with Croatian digraphs"
-msgstr ""
-
-#: ../rules/base.xml.in.h:619 ../rules/evdev.xml.in.h:619
-msgid "US keyboard with Croatian letters"
-msgstr ""
-
-#: ../rules/base.xml.in.h:620 ../rules/evdev.xml.in.h:620
-msgid "US keyboard with Estonian letters"
-msgstr ""
-
-#: ../rules/base.xml.in.h:621 ../rules/evdev.xml.in.h:621
-msgid "US keyboard with Lithuanian letters"
-msgstr ""
-
-#: ../rules/base.xml.in.h:622 ../rules/evdev.xml.in.h:622
-msgid "US keyboard with Slovenian digraphs"
-msgstr ""
-
-#: ../rules/base.xml.in.h:623 ../rules/evdev.xml.in.h:623
-msgid "US keyboard with Slovenian letters"
-msgstr ""
-
-#: ../rules/base.xml.in.h:624 ../rules/evdev.xml.in.h:624
-msgid "USA"
-msgstr ""
-
-#: ../rules/base.xml.in.h:625 ../rules/evdev.xml.in.h:625
-msgid "Udmurt"
-msgstr ""
-
-#: ../rules/base.xml.in.h:626 ../rules/evdev.xml.in.h:626
-msgid "Ukr"
-msgstr ""
-
-#: ../rules/base.xml.in.h:627 ../rules/evdev.xml.in.h:627
-msgid "Ukraine"
-msgstr ""
-
-#: ../rules/base.xml.in.h:628 ../rules/evdev.xml.in.h:628
-msgid "Unicode"
-msgstr ""
-
-#: ../rules/base.xml.in.h:629 ../rules/evdev.xml.in.h:629
-msgid "Unicode additions (arrows and math operators)"
-msgstr ""
-
-#: ../rules/base.xml.in.h:630 ../rules/evdev.xml.in.h:630
-msgid "Unicode additions (arrows and math operators). Math operators on default level"
-msgstr ""
-
-#: ../rules/base.xml.in.h:631 ../rules/evdev.xml.in.h:631
-msgid "UnicodeExpert"
-msgstr ""
-
-#: ../rules/base.xml.in.h:632 ../rules/evdev.xml.in.h:632
-msgid "United Kingdom"
-msgstr ""
-
-#: ../rules/base.xml.in.h:633 ../rules/evdev.xml.in.h:633
-msgid "Unitek KB-1925"
-msgstr ""
-
-#: ../rules/base.xml.in.h:634 ../rules/evdev.xml.in.h:634
-#, fuzzy
-msgid "Urdu, Alternative phonetic"
-msgstr "Alternativ fonetisk"
-
-#: ../rules/base.xml.in.h:635 ../rules/evdev.xml.in.h:635
-msgid "Urdu, Phonetic"
-msgstr ""
-
-#: ../rules/base.xml.in.h:636 ../rules/evdev.xml.in.h:636
-msgid "Urdu, Winkeys"
-msgstr ""
-
-#: ../rules/base.xml.in.h:637 ../rules/evdev.xml.in.h:637
-msgid "Use Bosnian digraphs"
-msgstr ""
-
-#: ../rules/base.xml.in.h:638 ../rules/evdev.xml.in.h:638
-msgid "Use Croatian digraphs"
-msgstr ""
-
-#: ../rules/base.xml.in.h:639 ../rules/evdev.xml.in.h:639
-msgid "Use Slovenian digraphs"
-msgstr ""
-
-#: ../rules/base.xml.in.h:640 ../rules/evdev.xml.in.h:640
-msgid "Use guillemets for quotes"
-msgstr ""
-
-#: ../rules/base.xml.in.h:641 ../rules/evdev.xml.in.h:641
-msgid "Use keyboard LED to show alternative layout"
-msgstr ""
-
-#: ../rules/base.xml.in.h:642 ../rules/evdev.xml.in.h:642
-msgid "Using space key to input non-breakable space character"
-msgstr ""
-
-#: ../rules/base.xml.in.h:643 ../rules/evdev.xml.in.h:643
-msgid "Usual space at any level"
-msgstr ""
-
-#: ../rules/base.xml.in.h:644 ../rules/evdev.xml.in.h:644
-msgid "Uzb"
-msgstr ""
-
-#: ../rules/base.xml.in.h:645 ../rules/evdev.xml.in.h:645
-msgid "Uzbekistan"
-msgstr ""
-
-#: ../rules/base.xml.in.h:646 ../rules/evdev.xml.in.h:646
-msgid "Vietnam"
-msgstr ""
-
-#: ../rules/base.xml.in.h:647 ../rules/evdev.xml.in.h:647
-msgid "ViewSonic KU-306 Internet Keyboard"
-msgstr ""
-
-#: ../rules/base.xml.in.h:648 ../rules/evdev.xml.in.h:648
-msgid "Vnm"
-msgstr ""
-
-#: ../rules/base.xml.in.h:649 ../rules/evdev.xml.in.h:649
-msgid "Wang 724 keypad with unicode additions (arrows and math operators)"
-msgstr ""
-
-#: ../rules/base.xml.in.h:650 ../rules/evdev.xml.in.h:650
-msgid "Wang 724 keypad with unicode additions (arrows and math operators). Math operators on default level"
-msgstr ""
-
-#: ../rules/base.xml.in.h:651 ../rules/evdev.xml.in.h:651
-msgid "Wang model 724 azerty"
-msgstr ""
-
-#: ../rules/base.xml.in.h:652 ../rules/evdev.xml.in.h:652
-msgid "Western"
-msgstr ""
-
-#: ../rules/base.xml.in.h:653 ../rules/evdev.xml.in.h:653
-msgid "Winbook Model XP5"
-msgstr ""
-
-#: ../rules/base.xml.in.h:654 ../rules/evdev.xml.in.h:654
-msgid "Winkeys"
-msgstr ""
-
-#: ../rules/base.xml.in.h:655 ../rules/evdev.xml.in.h:655
-msgid "With &lt;\\|&gt; key"
-msgstr ""
-
-#: ../rules/base.xml.in.h:656 ../rules/evdev.xml.in.h:656
-msgid "With EuroSign on 5"
-msgstr ""
-
-#: ../rules/base.xml.in.h:657 ../rules/evdev.xml.in.h:657
-msgid "With guillemets"
-msgstr ""
-
-#: ../rules/base.xml.in.h:658 ../rules/evdev.xml.in.h:658
-msgid "Yahoo! Internet Keyboard"
-msgstr ""
-
-#: ../rules/base.xml.in.h:659 ../rules/evdev.xml.in.h:659
-msgid "Yakut"
-msgstr ""
-
-#: ../rules/base.xml.in.h:660 ../rules/evdev.xml.in.h:660
-msgid "Yoruba"
-msgstr ""
-
-#: ../rules/base.xml.in.h:661 ../rules/evdev.xml.in.h:661
-msgid "Z and ZHE swapped"
-msgstr ""
-
-#: ../rules/base.xml.in.h:662 ../rules/evdev.xml.in.h:662
-msgid "Zar"
-msgstr ""
-
-#: ../rules/base.xml.in.h:663 ../rules/evdev.xml.in.h:663
-msgid "azerty"
-msgstr ""
-
-#: ../rules/base.xml.in.h:664 ../rules/evdev.xml.in.h:664
-msgid "azerty/digits"
-msgstr ""
-
-#: ../rules/base.xml.in.h:665 ../rules/evdev.xml.in.h:665
-msgid "digits"
-msgstr ""
-
-#: ../rules/base.xml.in.h:666 ../rules/evdev.xml.in.h:666
-msgid "displaced semicolon and quote (obsolete)"
-msgstr ""
-
-#: ../rules/base.xml.in.h:667 ../rules/evdev.xml.in.h:667
-msgid "lyx"
-msgstr ""
-
-#: ../rules/base.xml.in.h:668 ../rules/evdev.xml.in.h:668
-msgid "qwerty"
-msgstr ""
-
-#: ../rules/base.xml.in.h:669 ../rules/evdev.xml.in.h:669
-msgid "qwerty, extended Backslash"
-msgstr ""
-
-#: ../rules/base.xml.in.h:670 ../rules/evdev.xml.in.h:670
-msgid "qwerty/digits"
-msgstr ""
-
-#: ../rules/base.xml.in.h:671 ../rules/evdev.xml.in.h:671
-msgid "qwertz"
-msgstr ""
+# Norwegian bokmaal translation of xkeyboard-config.
+# Copyright (C) 2007 THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the xkeyboard-config package.
+# Kjartan Maraas <kmaraas@gnome.org>, 2007-2009.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: xkeyboard-config 1.5\n"
+"Report-Msgid-Bugs-To: svu@users.sourceforge.net\n"
+"POT-Creation-Date: 2009-01-13 23:12+0000\n"
+"PO-Revision-Date: 2009-04-12 11:33+0200\n"
+"Last-Translator: Kjartan Maraas <kmaraas@gnome.org>\n"
+"Language-Team: Norwegian Bokmaal <i18n-nb@lister.ping.uio.no>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../rules/base.xml.in.h:1 ../rules/evdev.xml.in.h:1
+msgid "(F)"
+msgstr "(F)"
+
+#: ../rules/base.xml.in.h:2 ../rules/evdev.xml.in.h:2
+msgid "(Legacy) Alternative"
+msgstr ""
+
+#: ../rules/base.xml.in.h:3 ../rules/evdev.xml.in.h:3
+msgid "(Legacy) Alternative, Sun dead keys"
+msgstr ""
+
+#: ../rules/base.xml.in.h:4 ../rules/evdev.xml.in.h:4
+msgid "(Legacy) Alternative, eliminate dead keys"
+msgstr ""
+
+#: ../rules/base.xml.in.h:5 ../rules/evdev.xml.in.h:5
+msgid "101/104 key Compatible"
+msgstr "101/104-taster kompatibelt"
+
+#: ../rules/base.xml.in.h:6 ../rules/evdev.xml.in.h:6
+msgid "101/qwerty/comma/Dead keys"
+msgstr ""
+
+#: ../rules/base.xml.in.h:7 ../rules/evdev.xml.in.h:7
+msgid "101/qwerty/comma/Eliminate dead keys"
+msgstr ""
+
+#: ../rules/base.xml.in.h:8 ../rules/evdev.xml.in.h:8
+msgid "101/qwerty/dot/Dead keys"
+msgstr ""
+
+#: ../rules/base.xml.in.h:9 ../rules/evdev.xml.in.h:9
+msgid "101/qwerty/dot/Eliminate dead keys"
+msgstr ""
+
+#: ../rules/base.xml.in.h:10 ../rules/evdev.xml.in.h:10
+msgid "101/qwertz/comma/Dead keys"
+msgstr ""
+
+#: ../rules/base.xml.in.h:11 ../rules/evdev.xml.in.h:11
+msgid "101/qwertz/comma/Eliminate dead keys"
+msgstr ""
+
+#: ../rules/base.xml.in.h:12 ../rules/evdev.xml.in.h:12
+msgid "101/qwertz/dot/Dead keys"
+msgstr ""
+
+#: ../rules/base.xml.in.h:13 ../rules/evdev.xml.in.h:13
+msgid "101/qwertz/dot/Eliminate dead keys"
+msgstr ""
+
+#: ../rules/base.xml.in.h:14 ../rules/evdev.xml.in.h:14
+msgid "102/qwerty/comma/Dead keys"
+msgstr ""
+
+#: ../rules/base.xml.in.h:15 ../rules/evdev.xml.in.h:15
+msgid "102/qwerty/comma/Eliminate dead keys"
+msgstr ""
+
+#: ../rules/base.xml.in.h:16 ../rules/evdev.xml.in.h:16
+msgid "102/qwerty/dot/Dead keys"
+msgstr ""
+
+#: ../rules/base.xml.in.h:17 ../rules/evdev.xml.in.h:17
+msgid "102/qwerty/dot/Eliminate dead keys"
+msgstr ""
+
+#: ../rules/base.xml.in.h:18 ../rules/evdev.xml.in.h:18
+msgid "102/qwertz/comma/Dead keys"
+msgstr ""
+
+#: ../rules/base.xml.in.h:19 ../rules/evdev.xml.in.h:19
+msgid "102/qwertz/comma/Eliminate dead keys"
+msgstr ""
+
+#: ../rules/base.xml.in.h:20 ../rules/evdev.xml.in.h:20
+msgid "102/qwertz/dot/Dead keys"
+msgstr ""
+
+#: ../rules/base.xml.in.h:21 ../rules/evdev.xml.in.h:21
+msgid "102/qwertz/dot/Eliminate dead keys"
+msgstr ""
+
+#: ../rules/base.xml.in.h:22 ../rules/evdev.xml.in.h:22
+msgid "2"
+msgstr ""
+
+#: ../rules/base.xml.in.h:23 ../rules/evdev.xml.in.h:23
+msgid "4"
+msgstr ""
+
+#: ../rules/base.xml.in.h:24 ../rules/evdev.xml.in.h:24
+msgid "5"
+msgstr ""
+
+#: ../rules/base.xml.in.h:25 ../rules/evdev.xml.in.h:25
+msgid "A4Tech KB-21"
+msgstr ""
+
+#: ../rules/base.xml.in.h:26 ../rules/evdev.xml.in.h:26
+msgid "A4Tech KBS-8"
+msgstr ""
+
+#: ../rules/base.xml.in.h:27 ../rules/evdev.xml.in.h:27
+msgid "A4Tech Wireless Desktop RFKB-23"
+msgstr ""
+
+#: ../rules/base.xml.in.h:28 ../rules/evdev.xml.in.h:28
+msgid "ACPI Standard"
+msgstr "ACPI-standard"
+
+#: ../rules/base.xml.in.h:29 ../rules/evdev.xml.in.h:29
+msgid "ATM/phone-style"
+msgstr ""
+
+#: ../rules/base.xml.in.h:30 ../rules/evdev.xml.in.h:30
+msgid "Acer AirKey V"
+msgstr ""
+
+#: ../rules/base.xml.in.h:31 ../rules/evdev.xml.in.h:31
+msgid "Acer C300"
+msgstr ""
+
+#: ../rules/base.xml.in.h:32 ../rules/evdev.xml.in.h:32
+msgid "Acer Ferrari 4000"
+msgstr "Acer Ferrari 4000"
+
+#: ../rules/base.xml.in.h:33 ../rules/evdev.xml.in.h:33
+msgid "Acer Laptop"
+msgstr "Acer bærbar"
+
+#: ../rules/base.xml.in.h:34 ../rules/evdev.xml.in.h:34
+msgid "Add the standard behavior to Menu key"
+msgstr ""
+
+#: ../rules/base.xml.in.h:35 ../rules/evdev.xml.in.h:35
+msgid "Adding Esperanto circumflexes (supersigno)"
+msgstr ""
+
+#: ../rules/base.xml.in.h:36 ../rules/evdev.xml.in.h:36
+#, fuzzy
+msgid "Adding EuroSign to certain keys"
+msgstr "Legg til Euro-tegnet på 2-tasten."
+
+#: ../rules/base.xml.in.h:37 ../rules/evdev.xml.in.h:37
+msgid "Advance Scorpius KI"
+msgstr ""
+
+#: ../rules/base.xml.in.h:38 ../rules/evdev.xml.in.h:38
+msgid "Afg"
+msgstr "Afg"
+
+#: ../rules/base.xml.in.h:39 ../rules/evdev.xml.in.h:39
+msgid "Afghanistan"
+msgstr "Afghanistan"
+
+#: ../rules/base.xml.in.h:40 ../rules/evdev.xml.in.h:40
+msgid "Akan"
+msgstr "Akan"
+
+#: ../rules/base.xml.in.h:41 ../rules/evdev.xml.in.h:41
+msgid "Alb"
+msgstr "Alb"
+
+#: ../rules/base.xml.in.h:42 ../rules/evdev.xml.in.h:42
+msgid "Albania"
+msgstr "Albania"
+
+#: ../rules/base.xml.in.h:43 ../rules/evdev.xml.in.h:43
+msgid "Alt and Meta are on Alt keys"
+msgstr ""
+
+#: ../rules/base.xml.in.h:44 ../rules/evdev.xml.in.h:44
+msgid "Alt is mapped to Right Win, Super to Menu"
+msgstr ""
+
+#: ../rules/base.xml.in.h:45 ../rules/evdev.xml.in.h:45
+msgid "Alt+CapsLock"
+msgstr ""
+
+#: ../rules/base.xml.in.h:46 ../rules/evdev.xml.in.h:46
+msgid "Alt+Ctrl"
+msgstr ""
+
+#: ../rules/base.xml.in.h:47 ../rules/evdev.xml.in.h:47
+msgid "Alt+Shift"
+msgstr ""
+
+#: ../rules/base.xml.in.h:48 ../rules/evdev.xml.in.h:48
+msgid "Alt+Space"
+msgstr ""
+
+#: ../rules/base.xml.in.h:49 ../rules/evdev.xml.in.h:49
+msgid "Alt-Q"
+msgstr "Alt-Q"
+
+#: ../rules/base.xml.in.h:50 ../rules/evdev.xml.in.h:50
+msgid "Alt/Win key behavior"
+msgstr ""
+
+#: ../rules/base.xml.in.h:51 ../rules/evdev.xml.in.h:51
+msgid "Alternative"
+msgstr "Alternativ"
+
+#: ../rules/base.xml.in.h:52 ../rules/evdev.xml.in.h:52
+msgid "Alternative Eastern"
+msgstr "Alternativ østlig"
+
+#: ../rules/base.xml.in.h:53 ../rules/evdev.xml.in.h:53
+msgid "Alternative Phonetic"
+msgstr "Alternativ fonetisk"
+
+#: ../rules/base.xml.in.h:54 ../rules/evdev.xml.in.h:54
+msgid "Alternative international (former us_intl)"
+msgstr ""
+
+#: ../rules/base.xml.in.h:55 ../rules/evdev.xml.in.h:55
+msgid "Alternative, Sun dead keys"
+msgstr ""
+
+#: ../rules/base.xml.in.h:56 ../rules/evdev.xml.in.h:56
+msgid "Alternative, eliminate dead keys"
+msgstr ""
+
+#: ../rules/base.xml.in.h:57 ../rules/evdev.xml.in.h:57
+msgid "Alternative, latin-9 only"
+msgstr ""
+
+#: ../rules/base.xml.in.h:58 ../rules/evdev.xml.in.h:58
+msgid "And"
+msgstr "And"
+
+#: ../rules/base.xml.in.h:59 ../rules/evdev.xml.in.h:59
+msgid "Andorra"
+msgstr "Andorra"
+
+#: ../rules/base.xml.in.h:60 ../rules/evdev.xml.in.h:60
+msgid "Any Alt key"
+msgstr ""
+
+#: ../rules/base.xml.in.h:61 ../rules/evdev.xml.in.h:61
+msgid "Any Win key"
+msgstr ""
+
+#: ../rules/base.xml.in.h:62 ../rules/evdev.xml.in.h:62
+msgid "Any Win key (while pressed)"
+msgstr ""
+
+#: ../rules/base.xml.in.h:63 ../rules/evdev.xml.in.h:63
+msgid "Apostrophe (') variant"
+msgstr ""
+
+#: ../rules/base.xml.in.h:64 ../rules/evdev.xml.in.h:64
+msgid "Apple"
+msgstr "Apple"
+
+#: ../rules/base.xml.in.h:65 ../rules/evdev.xml.in.h:65
+msgid "Apple Laptop"
+msgstr "Apple bærbar"
+
+#: ../rules/base.xml.in.h:66 ../rules/evdev.xml.in.h:66
+msgid "Ara"
+msgstr "Ara"
+
+#: ../rules/base.xml.in.h:67 ../rules/evdev.xml.in.h:67
+msgid "Arabic"
+msgstr "Arabisk"
+
+#: ../rules/base.xml.in.h:68 ../rules/evdev.xml.in.h:68
+msgid "Arm"
+msgstr "Arm"
+
+#: ../rules/base.xml.in.h:69 ../rules/evdev.xml.in.h:69
+msgid "Armenia"
+msgstr "Armenia"
+
+#: ../rules/base.xml.in.h:70 ../rules/evdev.xml.in.h:70
+msgid "Asturian variant with bottom-dot H and bottom-dot L"
+msgstr ""
+
+#: ../rules/base.xml.in.h:71 ../rules/evdev.xml.in.h:71
+msgid "Asus Laptop"
+msgstr "Asus bærbar"
+
+#: ../rules/base.xml.in.h:72 ../rules/evdev.xml.in.h:72
+msgid "At bottom left"
+msgstr ""
+
+#: ../rules/base.xml.in.h:73 ../rules/evdev.xml.in.h:73
+msgid "At left of 'A'"
+msgstr ""
+
+#: ../rules/base.xml.in.h:74 ../rules/evdev.xml.in.h:74
+msgid "Aze"
+msgstr "Ase"
+
+#: ../rules/base.xml.in.h:75 ../rules/evdev.xml.in.h:75
+msgid "Azerbaijan"
+msgstr "Aserbaijdsjan"
+
+#: ../rules/base.xml.in.h:76 ../rules/evdev.xml.in.h:76
+msgid "Azona RF2300 wireless Internet Keyboard"
+msgstr ""
+
+#: ../rules/base.xml.in.h:77 ../rules/evdev.xml.in.h:77
+msgid "BTC 5090"
+msgstr ""
+
+#: ../rules/base.xml.in.h:78 ../rules/evdev.xml.in.h:78
+msgid "BTC 5113RF Multimedia"
+msgstr ""
+
+#: ../rules/base.xml.in.h:79 ../rules/evdev.xml.in.h:79
+msgid "BTC 5126T"
+msgstr ""
+
+#: ../rules/base.xml.in.h:80 ../rules/evdev.xml.in.h:80
+msgid "BTC 6301URF"
+msgstr ""
+
+#: ../rules/base.xml.in.h:81 ../rules/evdev.xml.in.h:81
+msgid "BTC 9000"
+msgstr ""
+
+#: ../rules/base.xml.in.h:82 ../rules/evdev.xml.in.h:82
+msgid "BTC 9000A"
+msgstr ""
+
+#: ../rules/base.xml.in.h:83 ../rules/evdev.xml.in.h:83
+msgid "BTC 9001AH"
+msgstr ""
+
+#: ../rules/base.xml.in.h:84 ../rules/evdev.xml.in.h:84
+msgid "BTC 9019U"
+msgstr ""
+
+#: ../rules/base.xml.in.h:85 ../rules/evdev.xml.in.h:85
+msgid "BTC 9116U Mini Wireless Internet and Gaming"
+msgstr ""
+
+#: ../rules/base.xml.in.h:86 ../rules/evdev.xml.in.h:86
+msgid "Ban"
+msgstr ""
+
+#: ../rules/base.xml.in.h:87 ../rules/evdev.xml.in.h:87
+msgid "Bangladesh"
+msgstr "Bangladesh"
+
+#: ../rules/base.xml.in.h:88 ../rules/evdev.xml.in.h:88
+msgid "Bel"
+msgstr ""
+
+#: ../rules/base.xml.in.h:89 ../rules/evdev.xml.in.h:89
+msgid "Belarus"
+msgstr "Hviterussland"
+
+#: ../rules/base.xml.in.h:90 ../rules/evdev.xml.in.h:90
+msgid "Belgium"
+msgstr "Belgia"
+
+#: ../rules/base.xml.in.h:91 ../rules/evdev.xml.in.h:91
+msgid "BenQ X-Touch"
+msgstr ""
+
+#: ../rules/base.xml.in.h:92 ../rules/evdev.xml.in.h:92
+msgid "BenQ X-Touch 730"
+msgstr ""
+
+#: ../rules/base.xml.in.h:93 ../rules/evdev.xml.in.h:93
+msgid "BenQ X-Touch 800"
+msgstr ""
+
+#: ../rules/base.xml.in.h:94 ../rules/evdev.xml.in.h:94
+msgid "Bengali"
+msgstr ""
+
+#: ../rules/base.xml.in.h:95 ../rules/evdev.xml.in.h:95
+msgid "Bengali Probhat"
+msgstr ""
+
+#: ../rules/base.xml.in.h:96 ../rules/evdev.xml.in.h:96
+msgid "Bepo, ergonomic, Dvorak way"
+msgstr ""
+
+#: ../rules/base.xml.in.h:97 ../rules/evdev.xml.in.h:97
+msgid "Bepo, ergonomic, Dvorak way, latin-9 only"
+msgstr ""
+
+#: ../rules/base.xml.in.h:98 ../rules/evdev.xml.in.h:98
+msgid "Bgr"
+msgstr ""
+
+#: ../rules/base.xml.in.h:99 ../rules/evdev.xml.in.h:99
+msgid "Bhu"
+msgstr ""
+
+#: ../rules/base.xml.in.h:100 ../rules/evdev.xml.in.h:100
+msgid "Bhutan"
+msgstr "Bhutan"
+
+#: ../rules/base.xml.in.h:101 ../rules/evdev.xml.in.h:101
+msgid "Biblical Hebrew (Tiro)"
+msgstr ""
+
+#: ../rules/base.xml.in.h:102 ../rules/evdev.xml.in.h:102
+msgid "Bih"
+msgstr ""
+
+#: ../rules/base.xml.in.h:103 ../rules/evdev.xml.in.h:103
+msgid "Blr"
+msgstr ""
+
+#: ../rules/base.xml.in.h:104 ../rules/evdev.xml.in.h:104
+msgid "Bosnia and Herzegovina"
+msgstr "Bosnia og Herzegovina"
+
+#: ../rules/base.xml.in.h:105 ../rules/evdev.xml.in.h:105
+msgid "Both Alt keys together"
+msgstr ""
+
+#: ../rules/base.xml.in.h:106 ../rules/evdev.xml.in.h:106
+msgid "Both Ctrl keys together"
+msgstr ""
+
+#: ../rules/base.xml.in.h:107 ../rules/evdev.xml.in.h:107
+msgid "Both Shift keys together"
+msgstr ""
+
+#: ../rules/base.xml.in.h:108 ../rules/evdev.xml.in.h:108
+msgid "Bra"
+msgstr ""
+
+#: ../rules/base.xml.in.h:109 ../rules/evdev.xml.in.h:109
+msgid "Braille"
+msgstr ""
+
+#: ../rules/base.xml.in.h:110 ../rules/evdev.xml.in.h:110
+msgid "Brazil"
+msgstr "Brasil"
+
+#: ../rules/base.xml.in.h:111 ../rules/evdev.xml.in.h:111
+msgid "Brazilian ABNT2"
+msgstr ""
+
+#: ../rules/base.xml.in.h:112 ../rules/evdev.xml.in.h:112
+msgid "Breton"
+msgstr ""
+
+#: ../rules/base.xml.in.h:113 ../rules/evdev.xml.in.h:113
+msgid "Brl"
+msgstr ""
+
+#: ../rules/base.xml.in.h:114 ../rules/evdev.xml.in.h:114
+msgid "Brother Internet Keyboard"
+msgstr ""
+
+#: ../rules/base.xml.in.h:115 ../rules/evdev.xml.in.h:115
+msgid "Buckwalter"
+msgstr ""
+
+#: ../rules/base.xml.in.h:116 ../rules/evdev.xml.in.h:116
+msgid "Bulgaria"
+msgstr "Bulgaria"
+
+#: ../rules/base.xml.in.h:117 ../rules/evdev.xml.in.h:117
+msgid "CRULP"
+msgstr ""
+
+#: ../rules/base.xml.in.h:118 ../rules/evdev.xml.in.h:118
+msgid "Cambodia"
+msgstr ""
+
+#: ../rules/base.xml.in.h:119 ../rules/evdev.xml.in.h:119
+msgid "Can"
+msgstr ""
+
+#: ../rules/base.xml.in.h:120 ../rules/evdev.xml.in.h:120
+msgid "Canada"
+msgstr ""
+
+#: ../rules/base.xml.in.h:121 ../rules/evdev.xml.in.h:121
+msgid "Caps Lock"
+msgstr ""
+
+#: ../rules/base.xml.in.h:122 ../rules/evdev.xml.in.h:122
+msgid "CapsLock"
+msgstr ""
+
+#: ../rules/base.xml.in.h:123 ../rules/evdev.xml.in.h:123
+msgid "CapsLock (to first layout), Shift+CapsLock (to last layout)"
+msgstr ""
+
+#: ../rules/base.xml.in.h:124 ../rules/evdev.xml.in.h:124
+msgid "CapsLock (while pressed), Alt+CapsLock does the original capslock action"
+msgstr ""
+
+#: ../rules/base.xml.in.h:125 ../rules/evdev.xml.in.h:125
+msgid "CapsLock acts as Shift with locking. Shift \"pauses\" CapsLock"
+msgstr ""
+
+#: ../rules/base.xml.in.h:126 ../rules/evdev.xml.in.h:126
+msgid "CapsLock acts as Shift with locking. Shift doesn't affect CapsLock"
+msgstr ""
+
+#: ../rules/base.xml.in.h:127 ../rules/evdev.xml.in.h:127
+msgid "CapsLock key behavior"
+msgstr ""
+
+#: ../rules/base.xml.in.h:128 ../rules/evdev.xml.in.h:128
+msgid "CapsLock toggles Shift so all keys are affected"
+msgstr ""
+
+#: ../rules/base.xml.in.h:129 ../rules/evdev.xml.in.h:129
+msgid "CapsLock toggles normal capitalization of alphabetic characters"
+msgstr ""
+
+#: ../rules/base.xml.in.h:130 ../rules/evdev.xml.in.h:130
+msgid "CapsLock uses internal capitalization. Shift \"pauses\" CapsLock"
+msgstr ""
+
+#: ../rules/base.xml.in.h:131 ../rules/evdev.xml.in.h:131
+msgid "CapsLock uses internal capitalization. Shift doesn't affect CapsLock"
+msgstr ""
+
+#: ../rules/base.xml.in.h:132 ../rules/evdev.xml.in.h:132
+msgid "Catalan variant with middle-dot L"
+msgstr ""
+
+#: ../rules/base.xml.in.h:133 ../rules/evdev.xml.in.h:133
+msgid "Cedilla"
+msgstr ""
+
+#: ../rules/base.xml.in.h:134 ../rules/evdev.xml.in.h:134
+msgid "Che"
+msgstr ""
+
+#: ../rules/base.xml.in.h:135 ../rules/evdev.xml.in.h:135
+msgid "Cherokee"
+msgstr ""
+
+#: ../rules/base.xml.in.h:136 ../rules/evdev.xml.in.h:136
+msgid "Cherry Blue Line CyBo@rd"
+msgstr ""
+
+#: ../rules/base.xml.in.h:137 ../rules/evdev.xml.in.h:137
+msgid "Cherry Blue Line CyBo@rd (alternate option)"
+msgstr ""
+
+#: ../rules/base.xml.in.h:138 ../rules/evdev.xml.in.h:138
+msgid "Cherry CyBo@rd USB-Hub"
+msgstr ""
+
+#: ../rules/base.xml.in.h:139 ../rules/evdev.xml.in.h:139
+msgid "Cherry CyMotion Expert"
+msgstr ""
+
+#: ../rules/base.xml.in.h:140 ../rules/evdev.xml.in.h:140
+msgid "Cherry CyMotion Master Linux"
+msgstr ""
+
+#: ../rules/base.xml.in.h:141 ../rules/evdev.xml.in.h:141
+msgid "Cherry CyMotion Master XPress"
+msgstr ""
+
+#: ../rules/base.xml.in.h:142 ../rules/evdev.xml.in.h:142
+msgid "Chicony Internet Keyboard"
+msgstr ""
+
+#: ../rules/base.xml.in.h:143 ../rules/evdev.xml.in.h:143
+msgid "Chicony KB-9885"
+msgstr ""
+
+#: ../rules/base.xml.in.h:144 ../rules/evdev.xml.in.h:144
+msgid "Chicony KU-0108"
+msgstr ""
+
+#: ../rules/base.xml.in.h:145 ../rules/evdev.xml.in.h:145
+msgid "Chicony KU-0420"
+msgstr ""
+
+#: ../rules/base.xml.in.h:146 ../rules/evdev.xml.in.h:146
+msgid "China"
+msgstr "Kina"
+
+#: ../rules/base.xml.in.h:147 ../rules/evdev.xml.in.h:147
+msgid "Chuvash"
+msgstr ""
+
+#: ../rules/base.xml.in.h:148 ../rules/evdev.xml.in.h:148
+msgid "Chuvash Latin"
+msgstr ""
+
+#: ../rules/base.xml.in.h:149 ../rules/evdev.xml.in.h:149
+msgid "Classic"
+msgstr "Klassisk"
+
+#: ../rules/base.xml.in.h:150 ../rules/evdev.xml.in.h:150
+msgid "Classic Dvorak"
+msgstr ""
+
+#: ../rules/base.xml.in.h:151 ../rules/evdev.xml.in.h:151
+msgid "Classmate PC"
+msgstr ""
+
+#: ../rules/base.xml.in.h:152 ../rules/evdev.xml.in.h:152
+msgid "CloGaelach"
+msgstr ""
+
+#: ../rules/base.xml.in.h:153 ../rules/evdev.xml.in.h:153
+msgid "Colemak"
+msgstr ""
+
+#: ../rules/base.xml.in.h:154 ../rules/evdev.xml.in.h:154
+msgid "Compaq Easy Access Keyboard"
+msgstr ""
+
+#: ../rules/base.xml.in.h:155 ../rules/evdev.xml.in.h:155
+msgid "Compaq Internet Keyboard (13 keys)"
+msgstr ""
+
+#: ../rules/base.xml.in.h:156 ../rules/evdev.xml.in.h:156
+msgid "Compaq Internet Keyboard (18 keys)"
+msgstr ""
+
+#: ../rules/base.xml.in.h:157 ../rules/evdev.xml.in.h:157
+msgid "Compaq Internet Keyboard (7 keys)"
+msgstr ""
+
+#: ../rules/base.xml.in.h:158 ../rules/evdev.xml.in.h:158
+msgid "Compaq iPaq Keyboard"
+msgstr ""
+
+#: ../rules/base.xml.in.h:159 ../rules/evdev.xml.in.h:159
+msgid "Compose key position"
+msgstr ""
+
+#: ../rules/base.xml.in.h:160 ../rules/evdev.xml.in.h:160
+msgid "Congo, Democratic Republic of the"
+msgstr ""
+
+#: ../rules/base.xml.in.h:161 ../rules/evdev.xml.in.h:161
+msgid "Control is mapped to Alt keys, Alt is mapped to Win keys"
+msgstr ""
+
+#: ../rules/base.xml.in.h:162 ../rules/evdev.xml.in.h:162
+msgid "Control is mapped to Win keys (and the usual Ctrl keys)"
+msgstr ""
+
+#: ../rules/base.xml.in.h:163 ../rules/evdev.xml.in.h:163
+msgid "Croatia"
+msgstr "Kroatia"
+
+#: ../rules/base.xml.in.h:164 ../rules/evdev.xml.in.h:164
+msgid "Ctrl key position"
+msgstr ""
+
+#: ../rules/base.xml.in.h:165 ../rules/evdev.xml.in.h:165
+msgid "Ctrl+Shift"
+msgstr ""
+
+#: ../rules/base.xml.in.h:166 ../rules/evdev.xml.in.h:166
+msgid "Cyrillic"
+msgstr "Kyrillisk"
+
+#: ../rules/base.xml.in.h:167 ../rules/evdev.xml.in.h:167
+msgid "Cyrillic with guillemets"
+msgstr ""
+
+#: ../rules/base.xml.in.h:168 ../rules/evdev.xml.in.h:168
+msgid "Cyrillic, Z and ZHE swapped"
+msgstr ""
+
+#: ../rules/base.xml.in.h:169 ../rules/evdev.xml.in.h:169
+msgid "Cze"
+msgstr ""
+
+#: ../rules/base.xml.in.h:170 ../rules/evdev.xml.in.h:170
+msgid "Czechia"
+msgstr ""
+
+#: ../rules/base.xml.in.h:171 ../rules/evdev.xml.in.h:171
+msgid "DRC"
+msgstr ""
+
+#: ../rules/base.xml.in.h:172 ../rules/evdev.xml.in.h:172
+msgid "DTK2000"
+msgstr ""
+
+#: ../rules/base.xml.in.h:173 ../rules/evdev.xml.in.h:173
+msgid "Dan"
+msgstr ""
+
+#: ../rules/base.xml.in.h:174 ../rules/evdev.xml.in.h:174
+msgid "Dead acute"
+msgstr ""
+
+#: ../rules/base.xml.in.h:175 ../rules/evdev.xml.in.h:175
+msgid "Dead grave acute"
+msgstr ""
+
+#: ../rules/base.xml.in.h:176 ../rules/evdev.xml.in.h:176
+msgid "Default numeric keypad keys"
+msgstr ""
+
+#: ../rules/base.xml.in.h:177 ../rules/evdev.xml.in.h:177
+msgid "Dell"
+msgstr "Dell"
+
+#: ../rules/base.xml.in.h:178 ../rules/evdev.xml.in.h:178
+msgid "Dell 101-key PC"
+msgstr ""
+
+#: ../rules/base.xml.in.h:179 ../rules/evdev.xml.in.h:179
+msgid "Dell Laptop/notebook Inspiron 6xxx/8xxx"
+msgstr ""
+
+#: ../rules/base.xml.in.h:180 ../rules/evdev.xml.in.h:180
+msgid "Dell Laptop/notebook Precision M series"
+msgstr ""
+
+#: ../rules/base.xml.in.h:181 ../rules/evdev.xml.in.h:181
+msgid "Dell Latitude series laptop"
+msgstr ""
+
+#: ../rules/base.xml.in.h:182 ../rules/evdev.xml.in.h:182
+msgid "Dell Precision M65"
+msgstr ""
+
+#: ../rules/base.xml.in.h:183 ../rules/evdev.xml.in.h:183
+msgid "Dell SK-8125"
+msgstr ""
+
+#: ../rules/base.xml.in.h:184 ../rules/evdev.xml.in.h:184
+msgid "Dell SK-8135"
+msgstr ""
+
+#: ../rules/base.xml.in.h:185 ../rules/evdev.xml.in.h:185
+msgid "Dell USB Multimedia Keyboard"
+msgstr ""
+
+#: ../rules/base.xml.in.h:186 ../rules/evdev.xml.in.h:186
+msgid "Denmark"
+msgstr "Danmark"
+
+#: ../rules/base.xml.in.h:187 ../rules/evdev.xml.in.h:187
+msgid "Deu"
+msgstr ""
+
+#: ../rules/base.xml.in.h:188 ../rules/evdev.xml.in.h:188
+msgid "Dexxa Wireless Desktop Keyboard"
+msgstr ""
+
+#: ../rules/base.xml.in.h:189 ../rules/evdev.xml.in.h:189
+msgid "Diamond 9801 / 9802 series"
+msgstr ""
+
+#: ../rules/base.xml.in.h:190 ../rules/evdev.xml.in.h:190
+msgid "Dvorak"
+msgstr "Dvorak"
+
+#: ../rules/base.xml.in.h:191 ../rules/evdev.xml.in.h:191
+msgid "Dvorak (UK Punctuation)"
+msgstr ""
+
+#: ../rules/base.xml.in.h:192 ../rules/evdev.xml.in.h:192
+msgid "Dvorak international"
+msgstr ""
+
+#: ../rules/base.xml.in.h:193 ../rules/evdev.xml.in.h:193
+msgid "Dvorak, Polish quotes on key \"1/!\""
+msgstr ""
+
+#: ../rules/base.xml.in.h:194 ../rules/evdev.xml.in.h:194
+msgid "Dvorak, Polish quotes on quotemark key"
+msgstr ""
+
+#: ../rules/base.xml.in.h:195 ../rules/evdev.xml.in.h:195
+msgid "E"
+msgstr ""
+
+#: ../rules/base.xml.in.h:196 ../rules/evdev.xml.in.h:196
+msgid "Eastern"
+msgstr "Østlig"
+
+#: ../rules/base.xml.in.h:197 ../rules/evdev.xml.in.h:197
+msgid "Eliminate dead keys"
+msgstr ""
+
+#: ../rules/base.xml.in.h:198 ../rules/evdev.xml.in.h:198
+msgid "Enable extra typographic characters"
+msgstr ""
+
+#: ../rules/base.xml.in.h:199 ../rules/evdev.xml.in.h:199
+msgid "Ennyah DKB-1008"
+msgstr ""
+
+#: ../rules/base.xml.in.h:200 ../rules/evdev.xml.in.h:200
+msgid "Epo"
+msgstr ""
+
+#: ../rules/base.xml.in.h:201 ../rules/evdev.xml.in.h:201
+msgid "Ergonomic"
+msgstr "Ergonomisk"
+
+#: ../rules/base.xml.in.h:202 ../rules/evdev.xml.in.h:202
+msgid "Esp"
+msgstr ""
+
+#: ../rules/base.xml.in.h:203 ../rules/evdev.xml.in.h:203
+msgid "Esperanto"
+msgstr "Esperanto"
+
+#: ../rules/base.xml.in.h:204 ../rules/evdev.xml.in.h:204
+msgid "Est"
+msgstr "Est"
+
+#: ../rules/base.xml.in.h:205 ../rules/evdev.xml.in.h:205
+msgid "Estonia"
+msgstr "Estland"
+
+#: ../rules/base.xml.in.h:206 ../rules/evdev.xml.in.h:206
+msgid "Eth"
+msgstr "Eth"
+
+#: ../rules/base.xml.in.h:207 ../rules/evdev.xml.in.h:207
+msgid "Ethiopia"
+msgstr "Etiopia"
+
+#: ../rules/base.xml.in.h:208 ../rules/evdev.xml.in.h:208
+msgid "Evdev-managed keyboard"
+msgstr ""
+
+#: ../rules/base.xml.in.h:209 ../rules/evdev.xml.in.h:209
+msgid "Everex STEPnote"
+msgstr ""
+
+#: ../rules/base.xml.in.h:210 ../rules/evdev.xml.in.h:210
+msgid "Ewe"
+msgstr ""
+
+#: ../rules/base.xml.in.h:211 ../rules/evdev.xml.in.h:211
+msgid "Extended"
+msgstr "Utvidet"
+
+#: ../rules/base.xml.in.h:212 ../rules/evdev.xml.in.h:212
+msgid "Extended Backslash"
+msgstr ""
+
+#: ../rules/base.xml.in.h:213 ../rules/evdev.xml.in.h:213
+msgid "F-letter (F) variant"
+msgstr ""
+
+#: ../rules/base.xml.in.h:214 ../rules/evdev.xml.in.h:214
+msgid "FL90"
+msgstr ""
+
+#: ../rules/base.xml.in.h:215 ../rules/evdev.xml.in.h:215
+msgid "Fao"
+msgstr ""
+
+#: ../rules/base.xml.in.h:216 ../rules/evdev.xml.in.h:216
+msgid "Faroe Islands"
+msgstr "Færøyene"
+
+#: ../rules/base.xml.in.h:217 ../rules/evdev.xml.in.h:217
+msgid "Fin"
+msgstr "Fin"
+
+#: ../rules/base.xml.in.h:218 ../rules/evdev.xml.in.h:218
+msgid "Finland"
+msgstr "Finland"
+
+#. This assumes the KP_ abstract symbols are actually useful for some apps
+#. The description needs to be rewritten
+#: ../rules/base.xml.in.h:221 ../rules/evdev.xml.in.h:221
+msgid "Four-level key with abstract separators"
+msgstr ""
+
+#: ../rules/base.xml.in.h:222 ../rules/evdev.xml.in.h:222
+msgid "Four-level key with comma"
+msgstr ""
+
+#: ../rules/base.xml.in.h:223 ../rules/evdev.xml.in.h:223
+msgid "Four-level key with dot"
+msgstr ""
+
+#: ../rules/base.xml.in.h:224 ../rules/evdev.xml.in.h:224
+msgid "Four-level key with dot, latin-9 restriction"
+msgstr ""
+
+#: ../rules/base.xml.in.h:225 ../rules/evdev.xml.in.h:225
+msgid "Four-level key with momayyez"
+msgstr ""
+
+#: ../rules/base.xml.in.h:226 ../rules/evdev.xml.in.h:226
+msgid "Fra"
+msgstr "Fra"
+
+#: ../rules/base.xml.in.h:227 ../rules/evdev.xml.in.h:227
+msgid "France"
+msgstr "Frankrike"
+
+#: ../rules/base.xml.in.h:228 ../rules/evdev.xml.in.h:228
+msgid "French"
+msgstr "Fransk"
+
+#: ../rules/base.xml.in.h:229 ../rules/evdev.xml.in.h:229
+msgid "French (Macintosh)"
+msgstr "Fransk (Macintosh)"
+
+#: ../rules/base.xml.in.h:230 ../rules/evdev.xml.in.h:230
+msgid "French (legacy)"
+msgstr "Fransk (gammel)"
+
+#: ../rules/base.xml.in.h:231 ../rules/evdev.xml.in.h:231
+msgid "French Dvorak"
+msgstr "Fransk dvorak"
+
+#: ../rules/base.xml.in.h:232 ../rules/evdev.xml.in.h:232
+msgid "French, Sun dead keys"
+msgstr ""
+
+#: ../rules/base.xml.in.h:233 ../rules/evdev.xml.in.h:233
+msgid "French, eliminate dead keys"
+msgstr ""
+
+#: ../rules/base.xml.in.h:234 ../rules/evdev.xml.in.h:234
+msgid "Fujitsu-Siemens Computers AMILO laptop"
+msgstr ""
+
+#: ../rules/base.xml.in.h:235 ../rules/evdev.xml.in.h:235
+msgid "Fula"
+msgstr ""
+
+#: ../rules/base.xml.in.h:236 ../rules/evdev.xml.in.h:236
+msgid "GBr"
+msgstr ""
+
+#: ../rules/base.xml.in.h:237 ../rules/evdev.xml.in.h:237
+msgid "Ga"
+msgstr ""
+
+#: ../rules/base.xml.in.h:238 ../rules/evdev.xml.in.h:238
+msgid "Generic 101-key PC"
+msgstr "Vanlig 101-tasters PC"
+
+#: ../rules/base.xml.in.h:239 ../rules/evdev.xml.in.h:239
+msgid "Generic 102-key (Intl) PC"
+msgstr "Vanlig 102-tasters (Intl) PC"
+
+#: ../rules/base.xml.in.h:240 ../rules/evdev.xml.in.h:240
+msgid "Generic 104-key PC"
+msgstr "Vanlig 104-tasters PC"
+
+#: ../rules/base.xml.in.h:241 ../rules/evdev.xml.in.h:241
+msgid "Generic 105-key (Intl) PC"
+msgstr "Vanlig 105-tasters (Intl) PC"
+
+#: ../rules/base.xml.in.h:242 ../rules/evdev.xml.in.h:242
+msgid "Genius Comfy KB-12e"
+msgstr ""
+
+#: ../rules/base.xml.in.h:243 ../rules/evdev.xml.in.h:243
+msgid "Genius Comfy KB-16M / Genius MM Keyboard KWD-910"
+msgstr ""
+
+#: ../rules/base.xml.in.h:244 ../rules/evdev.xml.in.h:244
+msgid "Genius Comfy KB-21e-Scroll"
+msgstr ""
+
+#: ../rules/base.xml.in.h:245 ../rules/evdev.xml.in.h:245
+msgid "Genius KB-19e NB"
+msgstr ""
+
+#: ../rules/base.xml.in.h:246 ../rules/evdev.xml.in.h:246
+msgid "Geo"
+msgstr ""
+
+#: ../rules/base.xml.in.h:247 ../rules/evdev.xml.in.h:247
+msgid "Georgia"
+msgstr "Georgia"
+
+#: ../rules/base.xml.in.h:248 ../rules/evdev.xml.in.h:248
+msgid "Georgian"
+msgstr "Georgisk"
+
+#: ../rules/base.xml.in.h:249 ../rules/evdev.xml.in.h:249
+msgid "Georgian AZERTY Tskapo"
+msgstr ""
+
+#: ../rules/base.xml.in.h:250 ../rules/evdev.xml.in.h:250
+msgid "German (Macintosh)"
+msgstr "Tysk (Macintosh)"
+
+#: ../rules/base.xml.in.h:251 ../rules/evdev.xml.in.h:251
+msgid "German, Sun dead keys"
+msgstr ""
+
+#: ../rules/base.xml.in.h:252 ../rules/evdev.xml.in.h:252
+msgid "German, eliminate dead keys"
+msgstr ""
+
+#: ../rules/base.xml.in.h:253 ../rules/evdev.xml.in.h:253
+msgid "Germany"
+msgstr "Tyskland"
+
+#: ../rules/base.xml.in.h:254 ../rules/evdev.xml.in.h:254
+msgid "Gha"
+msgstr ""
+
+#: ../rules/base.xml.in.h:255 ../rules/evdev.xml.in.h:255
+msgid "Ghana"
+msgstr "Ghana"
+
+#: ../rules/base.xml.in.h:256 ../rules/evdev.xml.in.h:256
+msgid "Gre"
+msgstr ""
+
+#: ../rules/base.xml.in.h:257 ../rules/evdev.xml.in.h:257
+msgid "Greece"
+msgstr "Hellas"
+
+#: ../rules/base.xml.in.h:258 ../rules/evdev.xml.in.h:258
+msgid "Group toggle on multiply/divide key"
+msgstr ""
+
+#: ../rules/base.xml.in.h:259 ../rules/evdev.xml.in.h:259
+msgid "Gui"
+msgstr "Gui"
+
+#: ../rules/base.xml.in.h:260 ../rules/evdev.xml.in.h:260
+msgid "Guinea"
+msgstr "Guinea"
+
+#: ../rules/base.xml.in.h:261 ../rules/evdev.xml.in.h:261
+msgid "Gujarati"
+msgstr ""
+
+#: ../rules/base.xml.in.h:262 ../rules/evdev.xml.in.h:262
+msgid "Gurmukhi"
+msgstr ""
+
+#: ../rules/base.xml.in.h:263 ../rules/evdev.xml.in.h:263
+msgid "Gurmukhi Jhelum"
+msgstr ""
+
+#: ../rules/base.xml.in.h:264 ../rules/evdev.xml.in.h:264
+msgid "Gyration"
+msgstr ""
+
+#: ../rules/base.xml.in.h:265 ../rules/evdev.xml.in.h:265
+msgid "Happy Hacking Keyboard"
+msgstr ""
+
+#: ../rules/base.xml.in.h:266 ../rules/evdev.xml.in.h:266
+msgid "Happy Hacking Keyboard for Mac"
+msgstr ""
+
+#: ../rules/base.xml.in.h:267 ../rules/evdev.xml.in.h:267
+msgid "Hausa"
+msgstr ""
+
+#: ../rules/base.xml.in.h:268 ../rules/evdev.xml.in.h:268
+msgid "Hewlett-Packard Internet Keyboard"
+msgstr ""
+
+#: ../rules/base.xml.in.h:269 ../rules/evdev.xml.in.h:269
+msgid "Hewlett-Packard Omnibook 500 FA"
+msgstr ""
+
+#: ../rules/base.xml.in.h:270 ../rules/evdev.xml.in.h:270
+msgid "Hewlett-Packard Omnibook 5xx"
+msgstr ""
+
+#: ../rules/base.xml.in.h:271 ../rules/evdev.xml.in.h:271
+msgid "Hewlett-Packard Omnibook 6000/6100"
+msgstr ""
+
+#: ../rules/base.xml.in.h:272 ../rules/evdev.xml.in.h:272
+msgid "Hewlett-Packard Omnibook XE3 GC"
+msgstr ""
+
+#: ../rules/base.xml.in.h:273 ../rules/evdev.xml.in.h:273
+msgid "Hewlett-Packard Omnibook XE3 GF"
+msgstr ""
+
+#: ../rules/base.xml.in.h:274 ../rules/evdev.xml.in.h:274
+msgid "Hewlett-Packard Omnibook XT1000"
+msgstr ""
+
+#: ../rules/base.xml.in.h:275 ../rules/evdev.xml.in.h:275
+msgid "Hewlett-Packard Pavilion ZT11xx"
+msgstr ""
+
+#: ../rules/base.xml.in.h:276 ../rules/evdev.xml.in.h:276
+msgid "Hewlett-Packard Pavilion dv5"
+msgstr ""
+
+#: ../rules/base.xml.in.h:277 ../rules/evdev.xml.in.h:277
+msgid "Hewlett-Packard SK-250x Multimedia Keyboard"
+msgstr ""
+
+#: ../rules/base.xml.in.h:278 ../rules/evdev.xml.in.h:278
+msgid "Hewlett-Packard nx9020"
+msgstr ""
+
+#: ../rules/base.xml.in.h:279 ../rules/evdev.xml.in.h:279
+msgid "Hexadecimal"
+msgstr ""
+
+#: ../rules/base.xml.in.h:280 ../rules/evdev.xml.in.h:280
+msgid "Hindi Bolnagri"
+msgstr ""
+
+#: ../rules/base.xml.in.h:281 ../rules/evdev.xml.in.h:281
+msgid "Homophonic"
+msgstr ""
+
+#: ../rules/base.xml.in.h:282 ../rules/evdev.xml.in.h:282
+msgid "Honeywell Euroboard"
+msgstr ""
+
+#: ../rules/base.xml.in.h:283 ../rules/evdev.xml.in.h:283
+msgid "Hrv"
+msgstr ""
+
+#: ../rules/base.xml.in.h:284 ../rules/evdev.xml.in.h:284
+msgid "Hun"
+msgstr ""
+
+#: ../rules/base.xml.in.h:285 ../rules/evdev.xml.in.h:285
+msgid "Hungary"
+msgstr "Ungarn"
+
+#: ../rules/base.xml.in.h:286 ../rules/evdev.xml.in.h:286
+msgid "Hyper is mapped to Win-keys"
+msgstr ""
+
+#: ../rules/base.xml.in.h:287 ../rules/evdev.xml.in.h:287
+msgid "IBM (LST 1205-92)"
+msgstr ""
+
+#: ../rules/base.xml.in.h:288 ../rules/evdev.xml.in.h:288
+msgid "IBM Rapid Access"
+msgstr ""
+
+#: ../rules/base.xml.in.h:289 ../rules/evdev.xml.in.h:289
+msgid "IBM Rapid Access II"
+msgstr ""
+
+#: ../rules/base.xml.in.h:290 ../rules/evdev.xml.in.h:290
+msgid "IBM Space Saver"
+msgstr ""
+
+#: ../rules/base.xml.in.h:291 ../rules/evdev.xml.in.h:291
+msgid "IBM ThinkPad 560Z/600/600E/A22E"
+msgstr ""
+
+#: ../rules/base.xml.in.h:292 ../rules/evdev.xml.in.h:292
+msgid "IBM ThinkPad 560Z/600/600E/A22E, Intl"
+msgstr ""
+
+#: ../rules/base.xml.in.h:293 ../rules/evdev.xml.in.h:293
+msgid "IBM ThinkPad R60/T60/R61/T61"
+msgstr ""
+
+#: ../rules/base.xml.in.h:294 ../rules/evdev.xml.in.h:294
+msgid "IBM ThinkPad Z60m/Z60t/Z61m/Z61t"
+msgstr ""
+
+#: ../rules/base.xml.in.h:295 ../rules/evdev.xml.in.h:295
+msgid "ISO Alternate"
+msgstr ""
+
+#: ../rules/base.xml.in.h:296 ../rules/evdev.xml.in.h:296
+msgid "Iceland"
+msgstr "Island"
+
+#: ../rules/base.xml.in.h:297 ../rules/evdev.xml.in.h:297
+msgid "Igbo"
+msgstr ""
+
+#: ../rules/base.xml.in.h:298 ../rules/evdev.xml.in.h:298
+msgid "Include dead tilde"
+msgstr ""
+
+#: ../rules/base.xml.in.h:299 ../rules/evdev.xml.in.h:299
+msgid "Ind"
+msgstr "Ind"
+
+#: ../rules/base.xml.in.h:300 ../rules/evdev.xml.in.h:300
+msgid "India"
+msgstr "India"
+
+#: ../rules/base.xml.in.h:301 ../rules/evdev.xml.in.h:301
+msgid "International (AltGr dead keys)"
+msgstr ""
+
+#: ../rules/base.xml.in.h:302 ../rules/evdev.xml.in.h:302
+msgid "International (with dead keys)"
+msgstr ""
+
+#: ../rules/base.xml.in.h:303 ../rules/evdev.xml.in.h:303
+msgid "Inuktitut"
+msgstr ""
+
+#: ../rules/base.xml.in.h:304 ../rules/evdev.xml.in.h:304
+msgid "Iran"
+msgstr "Iran"
+
+#: ../rules/base.xml.in.h:305 ../rules/evdev.xml.in.h:305
+msgid "Iraq"
+msgstr "Irak"
+
+#: ../rules/base.xml.in.h:306 ../rules/evdev.xml.in.h:306
+msgid "Ireland"
+msgstr "Irland"
+
+#: ../rules/base.xml.in.h:307 ../rules/evdev.xml.in.h:307
+msgid "Irl"
+msgstr "Irl"
+
+#: ../rules/base.xml.in.h:308 ../rules/evdev.xml.in.h:308
+msgid "Irn"
+msgstr "Irn"
+
+#: ../rules/base.xml.in.h:309 ../rules/evdev.xml.in.h:309
+msgid "Irq"
+msgstr "Irk"
+
+#: ../rules/base.xml.in.h:310 ../rules/evdev.xml.in.h:310
+msgid "Isl"
+msgstr "Isl"
+
+#: ../rules/base.xml.in.h:311 ../rules/evdev.xml.in.h:311
+msgid "Isr"
+msgstr "Isr"
+
+#: ../rules/base.xml.in.h:312 ../rules/evdev.xml.in.h:312
+msgid "Israel"
+msgstr "Irsrael"
+
+#: ../rules/base.xml.in.h:313 ../rules/evdev.xml.in.h:313
+msgid "Ita"
+msgstr "Ita"
+
+#: ../rules/base.xml.in.h:314 ../rules/evdev.xml.in.h:314
+msgid "Italy"
+msgstr "Italia"
+
+#: ../rules/base.xml.in.h:315 ../rules/evdev.xml.in.h:315
+msgid "Japan"
+msgstr "Japan"
+
+#: ../rules/base.xml.in.h:316 ../rules/evdev.xml.in.h:316
+msgid "Japan (PC-98xx Series)"
+msgstr ""
+
+#: ../rules/base.xml.in.h:317 ../rules/evdev.xml.in.h:317
+msgid "Japanese 106-key"
+msgstr ""
+
+#: ../rules/base.xml.in.h:318 ../rules/evdev.xml.in.h:318
+msgid "Japanese keyboard options"
+msgstr ""
+
+#: ../rules/base.xml.in.h:319 ../rules/evdev.xml.in.h:319
+msgid "Jpn"
+msgstr "Jpn"
+
+#: ../rules/base.xml.in.h:320 ../rules/evdev.xml.in.h:320
+msgid "Kalmyk"
+msgstr ""
+
+#: ../rules/base.xml.in.h:321 ../rules/evdev.xml.in.h:321
+msgid "Kana"
+msgstr ""
+
+#: ../rules/base.xml.in.h:322 ../rules/evdev.xml.in.h:322
+msgid "Kana Lock key is locking"
+msgstr ""
+
+#: ../rules/base.xml.in.h:323 ../rules/evdev.xml.in.h:323
+msgid "Kannada"
+msgstr ""
+
+#: ../rules/base.xml.in.h:324 ../rules/evdev.xml.in.h:324
+msgid "Kashubian"
+msgstr ""
+
+#: ../rules/base.xml.in.h:325 ../rules/evdev.xml.in.h:325
+msgid "Kaz"
+msgstr ""
+
+#: ../rules/base.xml.in.h:326 ../rules/evdev.xml.in.h:326
+msgid "Kazakh with Russian"
+msgstr ""
+
+#: ../rules/base.xml.in.h:327 ../rules/evdev.xml.in.h:327
+msgid "Kazakhstan"
+msgstr ""
+
+#: ../rules/base.xml.in.h:328 ../rules/evdev.xml.in.h:328
+msgid "Key to choose 3rd level"
+msgstr ""
+
+#: ../rules/base.xml.in.h:329 ../rules/evdev.xml.in.h:329
+msgid "Key(s) to change layout"
+msgstr ""
+
+#: ../rules/base.xml.in.h:330 ../rules/evdev.xml.in.h:330
+msgid "Keypad"
+msgstr "Nummertastatur"
+
+#: ../rules/base.xml.in.h:331 ../rules/evdev.xml.in.h:331
+msgid "Keytronic FlexPro"
+msgstr ""
+
+#: ../rules/base.xml.in.h:332 ../rules/evdev.xml.in.h:332
+msgid "Khm"
+msgstr ""
+
+#: ../rules/base.xml.in.h:333 ../rules/evdev.xml.in.h:333
+msgid "Kir"
+msgstr "Kir"
+
+#: ../rules/base.xml.in.h:334 ../rules/evdev.xml.in.h:334
+msgid "Komi"
+msgstr "Komi"
+
+#: ../rules/base.xml.in.h:335 ../rules/evdev.xml.in.h:335
+msgid "Kor"
+msgstr "Kor"
+
+#: ../rules/base.xml.in.h:336 ../rules/evdev.xml.in.h:336
+msgid "Korea, Republic of"
+msgstr ""
+
+#: ../rules/base.xml.in.h:337 ../rules/evdev.xml.in.h:337
+msgid "Korean 106-key"
+msgstr ""
+
+#: ../rules/base.xml.in.h:338 ../rules/evdev.xml.in.h:338
+msgid "Ktunaxa"
+msgstr "Ktunaxa"
+
+#: ../rules/base.xml.in.h:339 ../rules/evdev.xml.in.h:339
+msgid "Kurdish, (F)"
+msgstr "Kurdisk, (F)"
+
+#: ../rules/base.xml.in.h:340 ../rules/evdev.xml.in.h:340
+msgid "Kurdish, Arabic-Latin"
+msgstr ""
+
+#: ../rules/base.xml.in.h:341 ../rules/evdev.xml.in.h:341
+msgid "Kurdish, Latin Alt-Q"
+msgstr ""
+
+#: ../rules/base.xml.in.h:342 ../rules/evdev.xml.in.h:342
+msgid "Kurdish, Latin Q"
+msgstr ""
+
+#: ../rules/base.xml.in.h:343 ../rules/evdev.xml.in.h:343
+msgid "Kyrgyzstan"
+msgstr "Kirgistan"
+
+#: ../rules/base.xml.in.h:344 ../rules/evdev.xml.in.h:344
+msgid "LAm"
+msgstr ""
+
+#: ../rules/base.xml.in.h:345 ../rules/evdev.xml.in.h:345
+msgid "LEKP"
+msgstr ""
+
+#: ../rules/base.xml.in.h:346 ../rules/evdev.xml.in.h:346
+msgid "LEKPa"
+msgstr ""
+
+#: ../rules/base.xml.in.h:347 ../rules/evdev.xml.in.h:347
+msgid "Lao"
+msgstr "Lao"
+
+#: ../rules/base.xml.in.h:348 ../rules/evdev.xml.in.h:348
+msgid "Laos"
+msgstr "Laos"
+
+#: ../rules/base.xml.in.h:349 ../rules/evdev.xml.in.h:349
+msgid "Laptop/notebook Compaq (eg. Armada) Laptop Keyboard"
+msgstr ""
+
+#: ../rules/base.xml.in.h:350 ../rules/evdev.xml.in.h:350
+msgid "Laptop/notebook Compaq (eg. Presario) Internet Keyboard"
+msgstr ""
+
+#: ../rules/base.xml.in.h:351 ../rules/evdev.xml.in.h:351
+msgid "Laptop/notebook eMachines m68xx"
+msgstr ""
+
+#: ../rules/base.xml.in.h:352 ../rules/evdev.xml.in.h:352
+msgid "Latin"
+msgstr "Latin"
+
+#: ../rules/base.xml.in.h:353 ../rules/evdev.xml.in.h:353
+msgid "Latin American"
+msgstr "Latinamerikansk"
+
+#: ../rules/base.xml.in.h:354 ../rules/evdev.xml.in.h:354
+msgid "Latin Unicode"
+msgstr ""
+
+#: ../rules/base.xml.in.h:355 ../rules/evdev.xml.in.h:355
+msgid "Latin Unicode qwerty"
+msgstr ""
+
+#: ../rules/base.xml.in.h:356 ../rules/evdev.xml.in.h:356
+msgid "Latin qwerty"
+msgstr ""
+
+#: ../rules/base.xml.in.h:357 ../rules/evdev.xml.in.h:357
+msgid "Latin unicode"
+msgstr ""
+
+#: ../rules/base.xml.in.h:358 ../rules/evdev.xml.in.h:358
+msgid "Latin unicode qwerty"
+msgstr ""
+
+#: ../rules/base.xml.in.h:359 ../rules/evdev.xml.in.h:359
+msgid "Latin with guillemets"
+msgstr ""
+
+#: ../rules/base.xml.in.h:360 ../rules/evdev.xml.in.h:360
+msgid "Latvia"
+msgstr "Latvia"
+
+#: ../rules/base.xml.in.h:361 ../rules/evdev.xml.in.h:361
+msgid "Lav"
+msgstr "Lav"
+
+#: ../rules/base.xml.in.h:362 ../rules/evdev.xml.in.h:362
+msgid "Left Alt"
+msgstr "Venstre Alt"
+
+#: ../rules/base.xml.in.h:363 ../rules/evdev.xml.in.h:363
+msgid "Left Alt (while pressed)"
+msgstr ""
+
+#: ../rules/base.xml.in.h:364 ../rules/evdev.xml.in.h:364
+msgid "Left Alt is swapped with Left Win"
+msgstr ""
+
+#: ../rules/base.xml.in.h:365 ../rules/evdev.xml.in.h:365
+msgid "Left Ctrl"
+msgstr "Venstre Ctrl"
+
+#: ../rules/base.xml.in.h:366 ../rules/evdev.xml.in.h:366
+msgid "Left Ctrl+Left Shift"
+msgstr ""
+
+#: ../rules/base.xml.in.h:367 ../rules/evdev.xml.in.h:367
+msgid "Left Shift"
+msgstr "Venstre Shift"
+
+#: ../rules/base.xml.in.h:368 ../rules/evdev.xml.in.h:368
+msgid "Left Win"
+msgstr "Venstre Win"
+
+#: ../rules/base.xml.in.h:369 ../rules/evdev.xml.in.h:369
+msgid "Left Win (to first layout), Right Win/Menu (to last layout)"
+msgstr ""
+
+#: ../rules/base.xml.in.h:370 ../rules/evdev.xml.in.h:370
+msgid "Left Win (while pressed)"
+msgstr ""
+
+#: ../rules/base.xml.in.h:371 ../rules/evdev.xml.in.h:371
+msgid "Left hand"
+msgstr "Venstre hånd"
+
+#: ../rules/base.xml.in.h:372 ../rules/evdev.xml.in.h:372
+msgid "Left handed Dvorak"
+msgstr ""
+
+#: ../rules/base.xml.in.h:373 ../rules/evdev.xml.in.h:373
+msgid "Legacy"
+msgstr ""
+
+#: ../rules/base.xml.in.h:374 ../rules/evdev.xml.in.h:374
+msgid "Legacy Wang 724"
+msgstr ""
+
+#. Actually, with KP_SEPARATOR, as the old keypad(comma)
+#: ../rules/base.xml.in.h:376 ../rules/evdev.xml.in.h:376
+msgid "Legacy key with comma"
+msgstr ""
+
+#: ../rules/base.xml.in.h:377 ../rules/evdev.xml.in.h:377
+msgid "Legacy key with dot"
+msgstr ""
+
+#: ../rules/base.xml.in.h:378 ../rules/evdev.xml.in.h:378
+msgid "Less-than/Greater-than"
+msgstr ""
+
+#: ../rules/base.xml.in.h:379 ../rules/evdev.xml.in.h:379
+msgid "Lithuania"
+msgstr "Litauen"
+
+#: ../rules/base.xml.in.h:380 ../rules/evdev.xml.in.h:380
+msgid "Logitech Access Keyboard"
+msgstr ""
+
+#: ../rules/base.xml.in.h:381 ../rules/evdev.xml.in.h:381
+msgid "Logitech Cordless Desktop"
+msgstr ""
+
+#: ../rules/base.xml.in.h:382 ../rules/evdev.xml.in.h:382
+msgid "Logitech Cordless Desktop (alternate option)"
+msgstr ""
+
+#: ../rules/base.xml.in.h:383 ../rules/evdev.xml.in.h:383
+msgid "Logitech Cordless Desktop EX110"
+msgstr ""
+
+#: ../rules/base.xml.in.h:384 ../rules/evdev.xml.in.h:384
+msgid "Logitech Cordless Desktop LX-300"
+msgstr ""
+
+#: ../rules/base.xml.in.h:385 ../rules/evdev.xml.in.h:385
+msgid "Logitech Cordless Desktop Navigator"
+msgstr ""
+
+#: ../rules/base.xml.in.h:386 ../rules/evdev.xml.in.h:386
+msgid "Logitech Cordless Desktop Optical"
+msgstr ""
+
+#: ../rules/base.xml.in.h:387 ../rules/evdev.xml.in.h:387
+msgid "Logitech Cordless Desktop Pro (alternate option2)"
+msgstr ""
+
+#: ../rules/base.xml.in.h:388 ../rules/evdev.xml.in.h:388
+msgid "Logitech Cordless Desktop iTouch"
+msgstr ""
+
+#: ../rules/base.xml.in.h:389 ../rules/evdev.xml.in.h:389
+msgid "Logitech Cordless Freedom/Desktop Navigator"
+msgstr ""
+
+#: ../rules/base.xml.in.h:390 ../rules/evdev.xml.in.h:390
+msgid "Logitech G15 extra keys via G15daemon"
+msgstr ""
+
+#: ../rules/base.xml.in.h:391 ../rules/evdev.xml.in.h:391
+msgid "Logitech Generic Keyboard"
+msgstr ""
+
+#: ../rules/base.xml.in.h:392 ../rules/evdev.xml.in.h:392
+msgid "Logitech Internet 350 Keyboard"
+msgstr ""
+
+#: ../rules/base.xml.in.h:393 ../rules/evdev.xml.in.h:393
+msgid "Logitech Internet Keyboard"
+msgstr ""
+
+#: ../rules/base.xml.in.h:394 ../rules/evdev.xml.in.h:394
+msgid "Logitech Internet Navigator Keyboard"
+msgstr ""
+
+#: ../rules/base.xml.in.h:395 ../rules/evdev.xml.in.h:395
+msgid "Logitech Media Elite Keyboard"
+msgstr ""
+
+#: ../rules/base.xml.in.h:396 ../rules/evdev.xml.in.h:396
+msgid "Logitech Ultra-X Cordless Media Desktop Keyboard"
+msgstr ""
+
+#: ../rules/base.xml.in.h:397 ../rules/evdev.xml.in.h:397
+msgid "Logitech Ultra-X Keyboard"
+msgstr ""
+
+#: ../rules/base.xml.in.h:398 ../rules/evdev.xml.in.h:398
+msgid "Logitech diNovo Edge Keyboard"
+msgstr ""
+
+#: ../rules/base.xml.in.h:399 ../rules/evdev.xml.in.h:399
+msgid "Logitech diNovo Keyboard"
+msgstr ""
+
+#: ../rules/base.xml.in.h:400 ../rules/evdev.xml.in.h:400
+msgid "Logitech iTouch"
+msgstr ""
+
+#: ../rules/base.xml.in.h:401 ../rules/evdev.xml.in.h:401
+msgid "Logitech iTouch Cordless Keyboard (model Y-RB6)"
+msgstr ""
+
+#: ../rules/base.xml.in.h:402 ../rules/evdev.xml.in.h:402
+msgid "Logitech iTouch Internet Navigator Keyboard SE"
+msgstr ""
+
+#: ../rules/base.xml.in.h:403 ../rules/evdev.xml.in.h:403
+msgid "Logitech iTouch Internet Navigator Keyboard SE (USB)"
+msgstr ""
+
+#: ../rules/base.xml.in.h:404 ../rules/evdev.xml.in.h:404
+msgid "Lower Sorbian"
+msgstr ""
+
+#: ../rules/base.xml.in.h:405 ../rules/evdev.xml.in.h:405
+msgid "Lower Sorbian (qwertz)"
+msgstr ""
+
+#: ../rules/base.xml.in.h:406 ../rules/evdev.xml.in.h:406
+msgid "Ltu"
+msgstr "Ltu"
+
+#: ../rules/base.xml.in.h:407 ../rules/evdev.xml.in.h:407
+msgid "MESS"
+msgstr "MESS"
+
+#: ../rules/base.xml.in.h:408 ../rules/evdev.xml.in.h:408
+msgid "MNE"
+msgstr ""
+
+#: ../rules/base.xml.in.h:409 ../rules/evdev.xml.in.h:409
+msgid "MacBook/MacBook Pro"
+msgstr ""
+
+#: ../rules/base.xml.in.h:410 ../rules/evdev.xml.in.h:410
+msgid "MacBook/MacBook Pro (Intl)"
+msgstr ""
+
+#: ../rules/base.xml.in.h:411 ../rules/evdev.xml.in.h:411
+msgid "Macedonia"
+msgstr "Makedonia"
+
+#: ../rules/base.xml.in.h:412 ../rules/evdev.xml.in.h:412
+msgid "Macintosh"
+msgstr ""
+
+#: ../rules/base.xml.in.h:413 ../rules/evdev.xml.in.h:413
+msgid "Macintosh Old"
+msgstr ""
+
+#: ../rules/base.xml.in.h:414 ../rules/evdev.xml.in.h:414
+msgid "Macintosh, Sun dead keys"
+msgstr ""
+
+#: ../rules/base.xml.in.h:415 ../rules/evdev.xml.in.h:415
+msgid "Macintosh, eliminate dead keys"
+msgstr ""
+
+#: ../rules/base.xml.in.h:416 ../rules/evdev.xml.in.h:416
+msgid "Make CapsLock an additional Backspace"
+msgstr ""
+
+#: ../rules/base.xml.in.h:417 ../rules/evdev.xml.in.h:417
+msgid "Make CapsLock an additional Ctrl"
+msgstr ""
+
+#: ../rules/base.xml.in.h:418 ../rules/evdev.xml.in.h:418
+msgid "Make CapsLock an additional ESC"
+msgstr ""
+
+#: ../rules/base.xml.in.h:419 ../rules/evdev.xml.in.h:419
+msgid "Mal"
+msgstr ""
+
+#: ../rules/base.xml.in.h:420 ../rules/evdev.xml.in.h:420
+msgid "Malayalam"
+msgstr ""
+
+#: ../rules/base.xml.in.h:421 ../rules/evdev.xml.in.h:421
+msgid "Malayalam Lalitha"
+msgstr ""
+
+#: ../rules/base.xml.in.h:422 ../rules/evdev.xml.in.h:422
+msgid "Maldives"
+msgstr "Maldivene"
+
+#: ../rules/base.xml.in.h:423 ../rules/evdev.xml.in.h:423
+msgid "Malta"
+msgstr "Malta"
+
+#: ../rules/base.xml.in.h:424 ../rules/evdev.xml.in.h:424
+msgid "Maltese keyboard with US layout"
+msgstr ""
+
+#: ../rules/base.xml.in.h:425 ../rules/evdev.xml.in.h:425
+msgid "Mao"
+msgstr "Mao"
+
+#: ../rules/base.xml.in.h:426 ../rules/evdev.xml.in.h:426
+msgid "Maori"
+msgstr "Maori"
+
+#: ../rules/base.xml.in.h:427 ../rules/evdev.xml.in.h:427
+msgid "Memorex MX1998"
+msgstr ""
+
+#: ../rules/base.xml.in.h:428 ../rules/evdev.xml.in.h:428
+msgid "Memorex MX2500 EZ-Access Keyboard"
+msgstr ""
+
+#: ../rules/base.xml.in.h:429 ../rules/evdev.xml.in.h:429
+msgid "Memorex MX2750"
+msgstr ""
+
+#: ../rules/base.xml.in.h:430 ../rules/evdev.xml.in.h:430
+msgid "Menu"
+msgstr ""
+
+#: ../rules/base.xml.in.h:431 ../rules/evdev.xml.in.h:431
+msgid "Meta is mapped to Left Win"
+msgstr ""
+
+#: ../rules/base.xml.in.h:432 ../rules/evdev.xml.in.h:432
+msgid "Meta is mapped to Win keys"
+msgstr ""
+
+#: ../rules/base.xml.in.h:433 ../rules/evdev.xml.in.h:433
+msgid "Microsoft Comfort Curve Keyboard 2000"
+msgstr ""
+
+#: ../rules/base.xml.in.h:434 ../rules/evdev.xml.in.h:434
+msgid "Microsoft Internet Keyboard"
+msgstr ""
+
+#: ../rules/base.xml.in.h:435 ../rules/evdev.xml.in.h:435
+msgid "Microsoft Internet Keyboard Pro, Swedish"
+msgstr ""
+
+#: ../rules/base.xml.in.h:436 ../rules/evdev.xml.in.h:436
+msgid "Microsoft Natural"
+msgstr ""
+
+#: ../rules/base.xml.in.h:437 ../rules/evdev.xml.in.h:437
+msgid "Microsoft Natural Keyboard Elite"
+msgstr ""
+
+#: ../rules/base.xml.in.h:438 ../rules/evdev.xml.in.h:438
+msgid "Microsoft Natural Keyboard Pro / Microsoft Internet Keyboard Pro"
+msgstr ""
+
+#: ../rules/base.xml.in.h:439 ../rules/evdev.xml.in.h:439
+msgid "Microsoft Natural Keyboard Pro OEM"
+msgstr ""
+
+#: ../rules/base.xml.in.h:440 ../rules/evdev.xml.in.h:440
+msgid "Microsoft Natural Keyboard Pro USB / Microsoft Internet Keyboard Pro"
+msgstr ""
+
+#: ../rules/base.xml.in.h:441 ../rules/evdev.xml.in.h:441
+msgid "Microsoft Natural Wireless Ergonomic Keyboard 7000"
+msgstr ""
+
+#: ../rules/base.xml.in.h:442 ../rules/evdev.xml.in.h:442
+msgid "Microsoft Office Keyboard"
+msgstr ""
+
+#: ../rules/base.xml.in.h:443 ../rules/evdev.xml.in.h:443
+msgid "Microsoft Wireless Multimedia Keyboard 1.0A"
+msgstr ""
+
+#: ../rules/base.xml.in.h:444 ../rules/evdev.xml.in.h:444
+msgid "Miscellaneous compatibility options"
+msgstr ""
+
+#: ../rules/base.xml.in.h:445 ../rules/evdev.xml.in.h:445
+msgid "Mkd"
+msgstr ""
+
+#: ../rules/base.xml.in.h:446 ../rules/evdev.xml.in.h:446
+msgid "Mlt"
+msgstr ""
+
+#: ../rules/base.xml.in.h:447 ../rules/evdev.xml.in.h:447
+msgid "Mmr"
+msgstr ""
+
+#: ../rules/base.xml.in.h:448 ../rules/evdev.xml.in.h:448
+msgid "Mng"
+msgstr ""
+
+#: ../rules/base.xml.in.h:449 ../rules/evdev.xml.in.h:449
+msgid "Mongolia"
+msgstr ""
+
+#: ../rules/base.xml.in.h:450 ../rules/evdev.xml.in.h:450
+msgid "Montenegro"
+msgstr ""
+
+#: ../rules/base.xml.in.h:451 ../rules/evdev.xml.in.h:451
+msgid "Morocco"
+msgstr ""
+
+#: ../rules/base.xml.in.h:452 ../rules/evdev.xml.in.h:452
+msgid "Multilingual"
+msgstr ""
+
+#: ../rules/base.xml.in.h:453 ../rules/evdev.xml.in.h:453
+msgid "Multilingual, first part"
+msgstr ""
+
+#: ../rules/base.xml.in.h:454 ../rules/evdev.xml.in.h:454
+msgid "Multilingual, second part"
+msgstr ""
+
+#: ../rules/base.xml.in.h:455 ../rules/evdev.xml.in.h:455
+msgid "Myanmar"
+msgstr ""
+
+#: ../rules/base.xml.in.h:456 ../rules/evdev.xml.in.h:456
+msgid "NICOLA-F style Backspace"
+msgstr ""
+
+#: ../rules/base.xml.in.h:457 ../rules/evdev.xml.in.h:457
+msgid "NLA"
+msgstr ""
+
+#: ../rules/base.xml.in.h:458 ../rules/evdev.xml.in.h:458
+msgid "Nativo"
+msgstr ""
+
+#: ../rules/base.xml.in.h:459 ../rules/evdev.xml.in.h:459
+#, fuzzy
+msgid "Nativo for Esperanto"
+msgstr "Esperanto"
+
+#: ../rules/base.xml.in.h:460 ../rules/evdev.xml.in.h:460
+msgid "Nativo for USA keyboards"
+msgstr ""
+
+#: ../rules/base.xml.in.h:461 ../rules/evdev.xml.in.h:461
+msgid "Neo 2"
+msgstr ""
+
+#: ../rules/base.xml.in.h:462 ../rules/evdev.xml.in.h:462
+msgid "Nep"
+msgstr "Nep"
+
+#: ../rules/base.xml.in.h:463 ../rules/evdev.xml.in.h:463
+msgid "Nepal"
+msgstr "Nepal"
+
+#: ../rules/base.xml.in.h:464 ../rules/evdev.xml.in.h:464
+msgid "Netherlands"
+msgstr "Nederland"
+
+#: ../rules/base.xml.in.h:465 ../rules/evdev.xml.in.h:465
+msgid "Nig"
+msgstr "Nig"
+
+#: ../rules/base.xml.in.h:466 ../rules/evdev.xml.in.h:466
+msgid "Nigeria"
+msgstr "Nigeria"
+
+#: ../rules/base.xml.in.h:467 ../rules/evdev.xml.in.h:467
+msgid "Nld"
+msgstr ""
+
+#: ../rules/base.xml.in.h:468 ../rules/evdev.xml.in.h:468
+msgid "Non-breakable space character at fourth level"
+msgstr ""
+
+#: ../rules/base.xml.in.h:469 ../rules/evdev.xml.in.h:469
+msgid "Non-breakable space character at fourth level, thin non-breakable space character at sixth level"
+msgstr ""
+
+#: ../rules/base.xml.in.h:470 ../rules/evdev.xml.in.h:470
+msgid "Non-breakable space character at fourth level, thin non-breakable space character at sixth level (via Ctrl+Shift)"
+msgstr ""
+
+#: ../rules/base.xml.in.h:471 ../rules/evdev.xml.in.h:471
+msgid "Non-breakable space character at second level"
+msgstr ""
+
+#: ../rules/base.xml.in.h:472 ../rules/evdev.xml.in.h:472
+msgid "Non-breakable space character at third level"
+msgstr ""
+
+#: ../rules/base.xml.in.h:473 ../rules/evdev.xml.in.h:473
+msgid "Non-breakable space character at third level, nothing at fourth level"
+msgstr ""
+
+#: ../rules/base.xml.in.h:474 ../rules/evdev.xml.in.h:474
+msgid "Non-breakable space character at third level, thin non-breakable space character at fourth level"
+msgstr ""
+
+#: ../rules/base.xml.in.h:475 ../rules/evdev.xml.in.h:475
+msgid "Nor"
+msgstr "Nor"
+
+#: ../rules/base.xml.in.h:476 ../rules/evdev.xml.in.h:476
+msgid "Northern Saami"
+msgstr "Nord-samisk"
+
+#: ../rules/base.xml.in.h:477 ../rules/evdev.xml.in.h:477
+msgid "Northern Saami, eliminate dead keys"
+msgstr "Nord-samisk, uten døde taster"
+
+#: ../rules/base.xml.in.h:478 ../rules/evdev.xml.in.h:478
+msgid "Northgate OmniKey 101"
+msgstr ""
+
+#: ../rules/base.xml.in.h:479 ../rules/evdev.xml.in.h:479
+msgid "Norway"
+msgstr "Norge"
+
+#: ../rules/base.xml.in.h:480 ../rules/evdev.xml.in.h:480
+msgid "NumLock"
+msgstr ""
+
+#: ../rules/base.xml.in.h:481 ../rules/evdev.xml.in.h:481
+msgid "Numeric keypad delete key behaviour"
+msgstr ""
+
+#: ../rules/base.xml.in.h:482 ../rules/evdev.xml.in.h:482
+msgid "Numeric keypad keys work as with Mac"
+msgstr ""
+
+#: ../rules/base.xml.in.h:483 ../rules/evdev.xml.in.h:483
+msgid "Numeric keypad layout selection"
+msgstr ""
+
+#: ../rules/base.xml.in.h:484 ../rules/evdev.xml.in.h:484
+msgid "OADG 109A"
+msgstr ""
+
+#: ../rules/base.xml.in.h:485 ../rules/evdev.xml.in.h:485
+msgid "OLPC"
+msgstr ""
+
+#: ../rules/base.xml.in.h:486 ../rules/evdev.xml.in.h:486
+msgid "OLPC Dari"
+msgstr ""
+
+#: ../rules/base.xml.in.h:487 ../rules/evdev.xml.in.h:487
+msgid "OLPC Pashto"
+msgstr ""
+
+#: ../rules/base.xml.in.h:488 ../rules/evdev.xml.in.h:488
+msgid "OLPC Southern Uzbek"
+msgstr ""
+
+#: ../rules/base.xml.in.h:489 ../rules/evdev.xml.in.h:489
+msgid "Ogham"
+msgstr ""
+
+#: ../rules/base.xml.in.h:490 ../rules/evdev.xml.in.h:490
+msgid "Ogham IS434"
+msgstr ""
+
+#: ../rules/base.xml.in.h:491 ../rules/evdev.xml.in.h:491
+msgid "Oriya"
+msgstr ""
+
+#: ../rules/base.xml.in.h:492 ../rules/evdev.xml.in.h:492
+msgid "Ortek MCK-800 MM/Internet keyboard"
+msgstr ""
+
+#: ../rules/base.xml.in.h:493 ../rules/evdev.xml.in.h:493
+msgid "Ossetian"
+msgstr ""
+
+#: ../rules/base.xml.in.h:494 ../rules/evdev.xml.in.h:494
+msgid "Ossetian, Winkeys"
+msgstr ""
+
+#: ../rules/base.xml.in.h:495 ../rules/evdev.xml.in.h:495
+msgid "Ossetian, legacy"
+msgstr ""
+
+#: ../rules/base.xml.in.h:496 ../rules/evdev.xml.in.h:496
+msgid "PC-98xx Series"
+msgstr ""
+
+#: ../rules/base.xml.in.h:497 ../rules/evdev.xml.in.h:497
+msgid "Pak"
+msgstr ""
+
+#: ../rules/base.xml.in.h:498 ../rules/evdev.xml.in.h:498
+msgid "Pakistan"
+msgstr ""
+
+#: ../rules/base.xml.in.h:499 ../rules/evdev.xml.in.h:499
+msgid "Pashto"
+msgstr ""
+
+#: ../rules/base.xml.in.h:500 ../rules/evdev.xml.in.h:500
+msgid "Pattachote"
+msgstr ""
+
+#: ../rules/base.xml.in.h:501 ../rules/evdev.xml.in.h:501
+msgid "Phonetic"
+msgstr ""
+
+#: ../rules/base.xml.in.h:502 ../rules/evdev.xml.in.h:502
+msgid "Pol"
+msgstr ""
+
+#: ../rules/base.xml.in.h:503 ../rules/evdev.xml.in.h:503
+msgid "Poland"
+msgstr ""
+
+#: ../rules/base.xml.in.h:504 ../rules/evdev.xml.in.h:504
+msgid "Polytonic"
+msgstr ""
+
+#: ../rules/base.xml.in.h:505 ../rules/evdev.xml.in.h:505
+msgid "Portugal"
+msgstr "Portugal"
+
+#: ../rules/base.xml.in.h:506 ../rules/evdev.xml.in.h:506
+msgid "Pro"
+msgstr ""
+
+#: ../rules/base.xml.in.h:507 ../rules/evdev.xml.in.h:507
+msgid "Pro Keypad"
+msgstr ""
+
+#: ../rules/base.xml.in.h:508 ../rules/evdev.xml.in.h:508
+msgid "Probhat"
+msgstr ""
+
+#: ../rules/base.xml.in.h:509 ../rules/evdev.xml.in.h:509
+#, fuzzy
+msgid "Programmer Dvorak"
+msgstr "Fransk dvorak"
+
+#: ../rules/base.xml.in.h:510 ../rules/evdev.xml.in.h:510
+msgid "Propeller Voyager (KTEZ-1000)"
+msgstr ""
+
+#: ../rules/base.xml.in.h:511 ../rules/evdev.xml.in.h:511
+msgid "Prt"
+msgstr ""
+
+#: ../rules/base.xml.in.h:512 ../rules/evdev.xml.in.h:512
+msgid "QTronix Scorpius 98N+"
+msgstr ""
+
+#: ../rules/base.xml.in.h:513 ../rules/evdev.xml.in.h:513
+msgid "Right Alt"
+msgstr "Høyre Alt"
+
+#: ../rules/base.xml.in.h:514 ../rules/evdev.xml.in.h:514
+msgid "Right Alt (while pressed)"
+msgstr ""
+
+#: ../rules/base.xml.in.h:515 ../rules/evdev.xml.in.h:515
+msgid "Right Alt key never chooses 3rd level"
+msgstr ""
+
+#: ../rules/base.xml.in.h:516 ../rules/evdev.xml.in.h:516
+msgid "Right Alt, Shift+Right Alt key is Multi_Key"
+msgstr ""
+
+#: ../rules/base.xml.in.h:517 ../rules/evdev.xml.in.h:517
+msgid "Right Ctrl"
+msgstr "Høyre Ctrl"
+
+#: ../rules/base.xml.in.h:518 ../rules/evdev.xml.in.h:518
+msgid "Right Ctrl (while pressed)"
+msgstr ""
+
+#: ../rules/base.xml.in.h:519 ../rules/evdev.xml.in.h:519
+msgid "Right Ctrl as Right Alt"
+msgstr ""
+
+#: ../rules/base.xml.in.h:520 ../rules/evdev.xml.in.h:520
+msgid "Right Shift"
+msgstr "Høyre Shift"
+
+#: ../rules/base.xml.in.h:521 ../rules/evdev.xml.in.h:521
+msgid "Right Win"
+msgstr "Høyre Win"
+
+#: ../rules/base.xml.in.h:522 ../rules/evdev.xml.in.h:522
+msgid "Right Win (while pressed)"
+msgstr ""
+
+#: ../rules/base.xml.in.h:523 ../rules/evdev.xml.in.h:523
+msgid "Right hand"
+msgstr ""
+
+#: ../rules/base.xml.in.h:524 ../rules/evdev.xml.in.h:524
+msgid "Right handed Dvorak"
+msgstr ""
+
+#: ../rules/base.xml.in.h:525 ../rules/evdev.xml.in.h:525
+msgid "Romania"
+msgstr "Romania"
+
+#: ../rules/base.xml.in.h:526 ../rules/evdev.xml.in.h:526
+msgid "Romanian keyboard with German letters"
+msgstr ""
+
+#: ../rules/base.xml.in.h:527 ../rules/evdev.xml.in.h:527
+msgid "Romanian keyboard with German letters, eliminate dead keys"
+msgstr ""
+
+#: ../rules/base.xml.in.h:528 ../rules/evdev.xml.in.h:528
+msgid "Rou"
+msgstr ""
+
+#: ../rules/base.xml.in.h:529 ../rules/evdev.xml.in.h:529
+msgid "Rus"
+msgstr ""
+
+#: ../rules/base.xml.in.h:530 ../rules/evdev.xml.in.h:530
+msgid "Russia"
+msgstr "Russland"
+
+#: ../rules/base.xml.in.h:531 ../rules/evdev.xml.in.h:531
+msgid "Russian"
+msgstr "Russisk"
+
+#: ../rules/base.xml.in.h:532 ../rules/evdev.xml.in.h:532
+msgid "Russian phonetic"
+msgstr "Russisk fonetisk"
+
+#: ../rules/base.xml.in.h:533 ../rules/evdev.xml.in.h:533
+msgid "Russian phonetic Dvorak"
+msgstr ""
+
+#: ../rules/base.xml.in.h:534 ../rules/evdev.xml.in.h:534
+msgid "Russian phonetic, eliminate dead keys"
+msgstr ""
+
+#: ../rules/base.xml.in.h:535 ../rules/evdev.xml.in.h:535
+msgid "Russian with Kazakh"
+msgstr ""
+
+#: ../rules/base.xml.in.h:536 ../rules/evdev.xml.in.h:536
+msgid "SILVERCREST Multimedia Wireless Keyboard"
+msgstr ""
+
+#: ../rules/base.xml.in.h:537 ../rules/evdev.xml.in.h:537
+msgid "SK-1300"
+msgstr ""
+
+#: ../rules/base.xml.in.h:538 ../rules/evdev.xml.in.h:538
+msgid "SK-2500"
+msgstr ""
+
+#: ../rules/base.xml.in.h:539 ../rules/evdev.xml.in.h:539
+msgid "SK-6200"
+msgstr ""
+
+#: ../rules/base.xml.in.h:540 ../rules/evdev.xml.in.h:540
+msgid "SK-7100"
+msgstr ""
+
+#: ../rules/base.xml.in.h:541 ../rules/evdev.xml.in.h:541
+msgid "SRB"
+msgstr ""
+
+#: ../rules/base.xml.in.h:542 ../rules/evdev.xml.in.h:542
+msgid "SVEN Ergonomic 2500"
+msgstr ""
+
+#: ../rules/base.xml.in.h:543 ../rules/evdev.xml.in.h:543
+msgid "SVEN Slim 303"
+msgstr ""
+
+#: ../rules/base.xml.in.h:544 ../rules/evdev.xml.in.h:544
+msgid "Samsung SDM 4500P"
+msgstr ""
+
+#: ../rules/base.xml.in.h:545 ../rules/evdev.xml.in.h:545
+msgid "Samsung SDM 4510P"
+msgstr ""
+
+#: ../rules/base.xml.in.h:546 ../rules/evdev.xml.in.h:546
+msgid "ScrollLock"
+msgstr ""
+
+#: ../rules/base.xml.in.h:547 ../rules/evdev.xml.in.h:547
+msgid "Secwepemctsin"
+msgstr ""
+
+#: ../rules/base.xml.in.h:548 ../rules/evdev.xml.in.h:548
+msgid "Semi-colon on third level"
+msgstr ""
+
+#: ../rules/base.xml.in.h:549 ../rules/evdev.xml.in.h:549
+msgid "Serbia"
+msgstr "Serbia"
+
+#: ../rules/base.xml.in.h:550 ../rules/evdev.xml.in.h:550
+msgid "Shift cancels CapsLock"
+msgstr ""
+
+#: ../rules/base.xml.in.h:551 ../rules/evdev.xml.in.h:551
+msgid "Shift does not cancel NumLock, chooses 3d level instead"
+msgstr ""
+
+#: ../rules/base.xml.in.h:552 ../rules/evdev.xml.in.h:552
+msgid "Shift with numeric keypad keys works as in MS Windows"
+msgstr ""
+
+#: ../rules/base.xml.in.h:553 ../rules/evdev.xml.in.h:553
+msgid "Shift+CapsLock"
+msgstr ""
+
+#: ../rules/base.xml.in.h:554 ../rules/evdev.xml.in.h:554
+msgid "Simple"
+msgstr ""
+
+#: ../rules/base.xml.in.h:555 ../rules/evdev.xml.in.h:555
+msgid "Slovakia"
+msgstr "Slovakia"
+
+#: ../rules/base.xml.in.h:556 ../rules/evdev.xml.in.h:556
+msgid "Slovenia"
+msgstr "Slovenia"
+
+#: ../rules/base.xml.in.h:557 ../rules/evdev.xml.in.h:557
+msgid "South Africa"
+msgstr "Sør-Afrika"
+
+#: ../rules/base.xml.in.h:558 ../rules/evdev.xml.in.h:558
+msgid "Southern Uzbek"
+msgstr ""
+
+#: ../rules/base.xml.in.h:559 ../rules/evdev.xml.in.h:559
+msgid "Spain"
+msgstr "Spania"
+
+#: ../rules/base.xml.in.h:560 ../rules/evdev.xml.in.h:560
+msgid "Special keys (Ctrl+Alt+&lt;key&gt;) handled in a server"
+msgstr ""
+
+#: ../rules/base.xml.in.h:561 ../rules/evdev.xml.in.h:561
+msgid "SrL"
+msgstr ""
+
+#: ../rules/base.xml.in.h:562 ../rules/evdev.xml.in.h:562
+msgid "Sri Lanka"
+msgstr ""
+
+#: ../rules/base.xml.in.h:563 ../rules/evdev.xml.in.h:563
+msgid "Standard"
+msgstr ""
+
+#: ../rules/base.xml.in.h:564 ../rules/evdev.xml.in.h:564
+msgid "Standard (Cedilla)"
+msgstr ""
+
+#. RSTU 2019-91
+#: ../rules/base.xml.in.h:566 ../rules/evdev.xml.in.h:566
+msgid "Standard RSTU"
+msgstr ""
+
+#. RSTU 2019-91
+#: ../rules/base.xml.in.h:568 ../rules/evdev.xml.in.h:568
+msgid "Standard RSTU on Russian layout"
+msgstr ""
+
+#: ../rules/base.xml.in.h:569 ../rules/evdev.xml.in.h:569
+msgid "Sun Type 5/6"
+msgstr ""
+
+#: ../rules/base.xml.in.h:570 ../rules/evdev.xml.in.h:570
+msgid "Sun dead keys"
+msgstr ""
+
+#: ../rules/base.xml.in.h:571 ../rules/evdev.xml.in.h:571
+msgid "Super Power Multimedia Keyboard"
+msgstr ""
+
+#: ../rules/base.xml.in.h:572 ../rules/evdev.xml.in.h:572
+msgid "Super is mapped to Win keys"
+msgstr ""
+
+#: ../rules/base.xml.in.h:573 ../rules/evdev.xml.in.h:573
+msgid "Svdvorak"
+msgstr ""
+
+#: ../rules/base.xml.in.h:574 ../rules/evdev.xml.in.h:574
+msgid "Svk"
+msgstr ""
+
+#: ../rules/base.xml.in.h:575 ../rules/evdev.xml.in.h:575
+msgid "Svn"
+msgstr ""
+
+#: ../rules/base.xml.in.h:576 ../rules/evdev.xml.in.h:576
+msgid "Swap Ctrl and CapsLock"
+msgstr ""
+
+#: ../rules/base.xml.in.h:577 ../rules/evdev.xml.in.h:577
+msgid "Swap ESC and CapsLock"
+msgstr ""
+
+#: ../rules/base.xml.in.h:578 ../rules/evdev.xml.in.h:578
+msgid "Swe"
+msgstr ""
+
+#: ../rules/base.xml.in.h:579 ../rules/evdev.xml.in.h:579
+msgid "Sweden"
+msgstr ""
+
+#: ../rules/base.xml.in.h:580 ../rules/evdev.xml.in.h:580
+msgid "Switzerland"
+msgstr ""
+
+#: ../rules/base.xml.in.h:581 ../rules/evdev.xml.in.h:581
+msgid "Symplon PaceBook (tablet PC)"
+msgstr ""
+
+#: ../rules/base.xml.in.h:582 ../rules/evdev.xml.in.h:582
+msgid "Syr"
+msgstr ""
+
+#: ../rules/base.xml.in.h:583 ../rules/evdev.xml.in.h:583
+msgid "Syria"
+msgstr ""
+
+#: ../rules/base.xml.in.h:584 ../rules/evdev.xml.in.h:584
+msgid "Syriac"
+msgstr ""
+
+#: ../rules/base.xml.in.h:585 ../rules/evdev.xml.in.h:585
+msgid "Syriac phonetic"
+msgstr ""
+
+#: ../rules/base.xml.in.h:586 ../rules/evdev.xml.in.h:586
+msgid "TIS-820.2538"
+msgstr ""
+
+#: ../rules/base.xml.in.h:587 ../rules/evdev.xml.in.h:587
+msgid "Tajikistan"
+msgstr ""
+
+#: ../rules/base.xml.in.h:588 ../rules/evdev.xml.in.h:588
+msgid "Tamil"
+msgstr ""
+
+#: ../rules/base.xml.in.h:589 ../rules/evdev.xml.in.h:589
+msgid "Tamil TAB Typewriter"
+msgstr ""
+
+#: ../rules/base.xml.in.h:590 ../rules/evdev.xml.in.h:590
+msgid "Tamil TSCII Typewriter"
+msgstr ""
+
+#: ../rules/base.xml.in.h:591 ../rules/evdev.xml.in.h:591
+msgid "Tamil Unicode"
+msgstr ""
+
+#: ../rules/base.xml.in.h:592 ../rules/evdev.xml.in.h:592
+msgid "Targa Visionary 811"
+msgstr ""
+
+#: ../rules/base.xml.in.h:593 ../rules/evdev.xml.in.h:593
+msgid "Tatar"
+msgstr ""
+
+#: ../rules/base.xml.in.h:594 ../rules/evdev.xml.in.h:594
+msgid "Telugu"
+msgstr ""
+
+#: ../rules/base.xml.in.h:595 ../rules/evdev.xml.in.h:595
+msgid "Tha"
+msgstr ""
+
+#: ../rules/base.xml.in.h:596 ../rules/evdev.xml.in.h:596
+msgid "Thailand"
+msgstr ""
+
+#: ../rules/base.xml.in.h:597 ../rules/evdev.xml.in.h:597
+msgid "Tibetan"
+msgstr ""
+
+#: ../rules/base.xml.in.h:598 ../rules/evdev.xml.in.h:598
+msgid "Tibetan (with ASCII numerals)"
+msgstr ""
+
+#: ../rules/base.xml.in.h:599 ../rules/evdev.xml.in.h:599
+msgid "Tifinagh"
+msgstr ""
+
+#: ../rules/base.xml.in.h:600 ../rules/evdev.xml.in.h:600
+msgid "Tifinagh Alternative"
+msgstr ""
+
+#: ../rules/base.xml.in.h:601 ../rules/evdev.xml.in.h:601
+msgid "Tifinagh Alternative Phonetic"
+msgstr ""
+
+#: ../rules/base.xml.in.h:602 ../rules/evdev.xml.in.h:602
+msgid "Tifinagh Extended"
+msgstr ""
+
+#: ../rules/base.xml.in.h:603 ../rules/evdev.xml.in.h:603
+msgid "Tifinagh Extended Phonetic"
+msgstr ""
+
+#: ../rules/base.xml.in.h:604 ../rules/evdev.xml.in.h:604
+msgid "Tifinagh Phonetic"
+msgstr ""
+
+#: ../rules/base.xml.in.h:605 ../rules/evdev.xml.in.h:605
+msgid "Tilde (~) variant"
+msgstr ""
+
+#: ../rules/base.xml.in.h:606 ../rules/evdev.xml.in.h:606
+msgid "Tjk"
+msgstr ""
+
+#: ../rules/base.xml.in.h:607 ../rules/evdev.xml.in.h:607
+msgid "To the corresponding key in a Dvorak keyboard."
+msgstr ""
+
+#: ../rules/base.xml.in.h:608 ../rules/evdev.xml.in.h:608
+msgid "To the corresponding key in a Qwerty keyboard."
+msgstr ""
+
+#: ../rules/base.xml.in.h:609 ../rules/evdev.xml.in.h:609
+msgid "Toshiba Satellite S3000"
+msgstr ""
+
+#: ../rules/base.xml.in.h:610 ../rules/evdev.xml.in.h:610
+msgid "Trust Direct Access Keyboard"
+msgstr ""
+
+#: ../rules/base.xml.in.h:611 ../rules/evdev.xml.in.h:611
+msgid "Trust Wireless Keyboard Classic"
+msgstr ""
+
+#: ../rules/base.xml.in.h:612 ../rules/evdev.xml.in.h:612
+msgid "Tur"
+msgstr ""
+
+#: ../rules/base.xml.in.h:613 ../rules/evdev.xml.in.h:613
+msgid "Turkey"
+msgstr ""
+
+#: ../rules/base.xml.in.h:614 ../rules/evdev.xml.in.h:614
+msgid "Typewriter"
+msgstr ""
+
+#: ../rules/base.xml.in.h:615 ../rules/evdev.xml.in.h:615
+msgid "UCW layout (accented letters only)"
+msgstr ""
+
+#: ../rules/base.xml.in.h:616 ../rules/evdev.xml.in.h:616
+msgid "US keyboard with Bosnian digraphs"
+msgstr ""
+
+#: ../rules/base.xml.in.h:617 ../rules/evdev.xml.in.h:617
+msgid "US keyboard with Bosnian letters"
+msgstr ""
+
+#: ../rules/base.xml.in.h:618 ../rules/evdev.xml.in.h:618
+msgid "US keyboard with Croatian digraphs"
+msgstr ""
+
+#: ../rules/base.xml.in.h:619 ../rules/evdev.xml.in.h:619
+msgid "US keyboard with Croatian letters"
+msgstr ""
+
+#: ../rules/base.xml.in.h:620 ../rules/evdev.xml.in.h:620
+msgid "US keyboard with Estonian letters"
+msgstr ""
+
+#: ../rules/base.xml.in.h:621 ../rules/evdev.xml.in.h:621
+msgid "US keyboard with Lithuanian letters"
+msgstr ""
+
+#: ../rules/base.xml.in.h:622 ../rules/evdev.xml.in.h:622
+msgid "US keyboard with Slovenian digraphs"
+msgstr ""
+
+#: ../rules/base.xml.in.h:623 ../rules/evdev.xml.in.h:623
+msgid "US keyboard with Slovenian letters"
+msgstr ""
+
+#: ../rules/base.xml.in.h:624 ../rules/evdev.xml.in.h:624
+msgid "USA"
+msgstr ""
+
+#: ../rules/base.xml.in.h:625 ../rules/evdev.xml.in.h:625
+msgid "Udmurt"
+msgstr ""
+
+#: ../rules/base.xml.in.h:626 ../rules/evdev.xml.in.h:626
+msgid "Ukr"
+msgstr ""
+
+#: ../rules/base.xml.in.h:627 ../rules/evdev.xml.in.h:627
+msgid "Ukraine"
+msgstr ""
+
+#: ../rules/base.xml.in.h:628 ../rules/evdev.xml.in.h:628
+msgid "Unicode"
+msgstr ""
+
+#: ../rules/base.xml.in.h:629 ../rules/evdev.xml.in.h:629
+msgid "Unicode additions (arrows and math operators)"
+msgstr ""
+
+#: ../rules/base.xml.in.h:630 ../rules/evdev.xml.in.h:630
+msgid "Unicode additions (arrows and math operators). Math operators on default level"
+msgstr ""
+
+#: ../rules/base.xml.in.h:631 ../rules/evdev.xml.in.h:631
+msgid "UnicodeExpert"
+msgstr ""
+
+#: ../rules/base.xml.in.h:632 ../rules/evdev.xml.in.h:632
+msgid "United Kingdom"
+msgstr ""
+
+#: ../rules/base.xml.in.h:633 ../rules/evdev.xml.in.h:633
+msgid "Unitek KB-1925"
+msgstr ""
+
+#: ../rules/base.xml.in.h:634 ../rules/evdev.xml.in.h:634
+#, fuzzy
+msgid "Urdu, Alternative phonetic"
+msgstr "Alternativ fonetisk"
+
+#: ../rules/base.xml.in.h:635 ../rules/evdev.xml.in.h:635
+msgid "Urdu, Phonetic"
+msgstr ""
+
+#: ../rules/base.xml.in.h:636 ../rules/evdev.xml.in.h:636
+msgid "Urdu, Winkeys"
+msgstr ""
+
+#: ../rules/base.xml.in.h:637 ../rules/evdev.xml.in.h:637
+msgid "Use Bosnian digraphs"
+msgstr ""
+
+#: ../rules/base.xml.in.h:638 ../rules/evdev.xml.in.h:638
+msgid "Use Croatian digraphs"
+msgstr ""
+
+#: ../rules/base.xml.in.h:639 ../rules/evdev.xml.in.h:639
+msgid "Use Slovenian digraphs"
+msgstr ""
+
+#: ../rules/base.xml.in.h:640 ../rules/evdev.xml.in.h:640
+msgid "Use guillemets for quotes"
+msgstr ""
+
+#: ../rules/base.xml.in.h:641 ../rules/evdev.xml.in.h:641
+msgid "Use keyboard LED to show alternative layout"
+msgstr ""
+
+#: ../rules/base.xml.in.h:642 ../rules/evdev.xml.in.h:642
+msgid "Using space key to input non-breakable space character"
+msgstr ""
+
+#: ../rules/base.xml.in.h:643 ../rules/evdev.xml.in.h:643
+msgid "Usual space at any level"
+msgstr ""
+
+#: ../rules/base.xml.in.h:644 ../rules/evdev.xml.in.h:644
+msgid "Uzb"
+msgstr ""
+
+#: ../rules/base.xml.in.h:645 ../rules/evdev.xml.in.h:645
+msgid "Uzbekistan"
+msgstr ""
+
+#: ../rules/base.xml.in.h:646 ../rules/evdev.xml.in.h:646
+msgid "Vietnam"
+msgstr ""
+
+#: ../rules/base.xml.in.h:647 ../rules/evdev.xml.in.h:647
+msgid "ViewSonic KU-306 Internet Keyboard"
+msgstr ""
+
+#: ../rules/base.xml.in.h:648 ../rules/evdev.xml.in.h:648
+msgid "Vnm"
+msgstr ""
+
+#: ../rules/base.xml.in.h:649 ../rules/evdev.xml.in.h:649
+msgid "Wang 724 keypad with unicode additions (arrows and math operators)"
+msgstr ""
+
+#: ../rules/base.xml.in.h:650 ../rules/evdev.xml.in.h:650
+msgid "Wang 724 keypad with unicode additions (arrows and math operators). Math operators on default level"
+msgstr ""
+
+#: ../rules/base.xml.in.h:651 ../rules/evdev.xml.in.h:651
+msgid "Wang model 724 azerty"
+msgstr ""
+
+#: ../rules/base.xml.in.h:652 ../rules/evdev.xml.in.h:652
+msgid "Western"
+msgstr ""
+
+#: ../rules/base.xml.in.h:653 ../rules/evdev.xml.in.h:653
+msgid "Winbook Model XP5"
+msgstr ""
+
+#: ../rules/base.xml.in.h:654 ../rules/evdev.xml.in.h:654
+msgid "Winkeys"
+msgstr ""
+
+#: ../rules/base.xml.in.h:655 ../rules/evdev.xml.in.h:655
+msgid "With &lt;\\|&gt; key"
+msgstr ""
+
+#: ../rules/base.xml.in.h:656 ../rules/evdev.xml.in.h:656
+msgid "With EuroSign on 5"
+msgstr ""
+
+#: ../rules/base.xml.in.h:657 ../rules/evdev.xml.in.h:657
+msgid "With guillemets"
+msgstr ""
+
+#: ../rules/base.xml.in.h:658 ../rules/evdev.xml.in.h:658
+msgid "Yahoo! Internet Keyboard"
+msgstr ""
+
+#: ../rules/base.xml.in.h:659 ../rules/evdev.xml.in.h:659
+msgid "Yakut"
+msgstr ""
+
+#: ../rules/base.xml.in.h:660 ../rules/evdev.xml.in.h:660
+msgid "Yoruba"
+msgstr ""
+
+#: ../rules/base.xml.in.h:661 ../rules/evdev.xml.in.h:661
+msgid "Z and ZHE swapped"
+msgstr ""
+
+#: ../rules/base.xml.in.h:662 ../rules/evdev.xml.in.h:662
+msgid "Zar"
+msgstr ""
+
+#: ../rules/base.xml.in.h:663 ../rules/evdev.xml.in.h:663
+msgid "azerty"
+msgstr ""
+
+#: ../rules/base.xml.in.h:664 ../rules/evdev.xml.in.h:664
+msgid "azerty/digits"
+msgstr ""
+
+#: ../rules/base.xml.in.h:665 ../rules/evdev.xml.in.h:665
+msgid "digits"
+msgstr ""
+
+#: ../rules/base.xml.in.h:666 ../rules/evdev.xml.in.h:666
+msgid "displaced semicolon and quote (obsolete)"
+msgstr ""
+
+#: ../rules/base.xml.in.h:667 ../rules/evdev.xml.in.h:667
+msgid "lyx"
+msgstr ""
+
+#: ../rules/base.xml.in.h:668 ../rules/evdev.xml.in.h:668
+msgid "qwerty"
+msgstr ""
+
+#: ../rules/base.xml.in.h:669 ../rules/evdev.xml.in.h:669
+msgid "qwerty, extended Backslash"
+msgstr ""
+
+#: ../rules/base.xml.in.h:670 ../rules/evdev.xml.in.h:670
+msgid "qwerty/digits"
+msgstr ""
+
+#: ../rules/base.xml.in.h:671 ../rules/evdev.xml.in.h:671
+msgid "qwertz"
+msgstr ""
diff --git a/xorg-server/xkeyboard-config/po/ro.po b/xorg-server/xkeyboard-config/po/ro.po
index e1c3a3876..09e789d74 100644
--- a/xorg-server/xkeyboard-config/po/ro.po
+++ b/xorg-server/xkeyboard-config/po/ro.po
@@ -1,3079 +1,3079 @@
-# Romanian translation for xkeyboard-config
-# Copyright (c) 2009 Rosetta Contributors and Canonical Ltd 2009
-# This file is distributed under the same license as the xkeyboard-config package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, 2009.
-# Lucian Adrian Grijincu <lucian.grijincu@gmail.com>, 2010.
-msgid ""
-msgstr ""
-"Project-Id-Version: xkeyboard-config 1.9\n"
-"Report-Msgid-Bugs-To: svu@users.sourceforge.net\n"
-"POT-Creation-Date: 2010-05-11 21:34+0100\n"
-"PO-Revision-Date: 2010-08-06 23:36+0300\n"
-"Last-Translator: Lucian Adrian Grijincu <lucian.grijincu@gmail.com>\n"
-"Language-Team: Romanian <translation-team-ro@lists.sourceforge.net>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: ro\n"
-"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : (n==0 || (n%100 > 0 && n%100 < 20)) ? 1 : 2);;\n"
-"X-Generator: Virtaal 0.6.1\n"
-"X-Launchpad-Export-Date: 2010-08-06 19:56+0000\n"
-
-#: ../rules/base.xml.in.h:1
-msgid "&lt;Less/Greater&gt;"
-msgstr "&lt;Mai mic/Mai mare&gt;"
-
-#: ../rules/base.xml.in.h:2
-msgid "&lt;Less/Greater&gt; chooses 5th level, locks when pressed together with another 5th-level-chooser"
-msgstr ""
-
-#: ../rules/base.xml.in.h:3
-msgid "&lt;Less/Greater&gt; chooses 5th level, locks when pressed together with another 5th-level-chooser, one press releases the lock"
-msgstr ""
-
-#: ../rules/base.xml.in.h:4
-msgid "(F)"
-msgstr "(F)"
-
-#: ../rules/base.xml.in.h:5
-msgid "(Legacy) Alternative"
-msgstr "(Moștenire) Alternativ"
-
-#: ../rules/base.xml.in.h:6
-msgid "(Legacy) Alternative, Sun dead keys"
-msgstr "(Moștenire) Alternativ, taste învechite de la Sun"
-
-#: ../rules/base.xml.in.h:7
-msgid "(Legacy) Alternative, eliminate dead keys"
-msgstr "(Moștenire) Alternative, elimină tastele învechite"
-
-#: ../rules/base.xml.in.h:8
-msgid "101/104 key Compatible"
-msgstr "Compatibil cu tasta 101/104"
-
-#: ../rules/base.xml.in.h:9
-msgid "101/qwerty/comma/Dead keys"
-msgstr "101/qwerty/virgulă/Taste moarte"
-
-#: ../rules/base.xml.in.h:10
-msgid "101/qwerty/comma/Eliminate dead keys"
-msgstr "101/qwerty/virgulă/Elimină tastele moarte"
-
-#: ../rules/base.xml.in.h:11
-msgid "101/qwerty/dot/Dead keys"
-msgstr "101/qwerty/punct/Taste moarte"
-
-#: ../rules/base.xml.in.h:12
-msgid "101/qwerty/dot/Eliminate dead keys"
-msgstr "101/qwerty/punct/Elimină tastele moarte"
-
-#: ../rules/base.xml.in.h:13
-msgid "101/qwertz/comma/Dead keys"
-msgstr "101/qwertz/virgulă/Taste moarte"
-
-#: ../rules/base.xml.in.h:14
-msgid "101/qwertz/comma/Eliminate dead keys"
-msgstr "101/qwertz/virgulă/Elimină tastele moarte"
-
-#: ../rules/base.xml.in.h:15
-msgid "101/qwertz/dot/Dead keys"
-msgstr "101/qwertz/punct/Taste moarte"
-
-#: ../rules/base.xml.in.h:16
-msgid "101/qwertz/dot/Eliminate dead keys"
-msgstr "101/qwertz/punct/Elimină tastele moarte"
-
-#: ../rules/base.xml.in.h:17
-msgid "102/qwerty/comma/Dead keys"
-msgstr "102/qwerty/virgulă/Taste moarte"
-
-#: ../rules/base.xml.in.h:18
-msgid "102/qwerty/comma/Eliminate dead keys"
-msgstr "102/qwerty/virgulă/Elimină tastele moarte"
-
-#: ../rules/base.xml.in.h:19
-msgid "102/qwerty/dot/Dead keys"
-msgstr "102/qwerty/punct/Taste moarte"
-
-#: ../rules/base.xml.in.h:20
-msgid "102/qwerty/dot/Eliminate dead keys"
-msgstr "102/qwerty/punct/Elimină tastele moarte"
-
-#: ../rules/base.xml.in.h:21
-msgid "102/qwertz/comma/Dead keys"
-msgstr "102/qwertz/virgulă/Taste moarte"
-
-#: ../rules/base.xml.in.h:22
-msgid "102/qwertz/comma/Eliminate dead keys"
-msgstr "102/qwertz/virgulă/Elimină tastele moarte"
-
-#: ../rules/base.xml.in.h:23
-msgid "102/qwertz/dot/Dead keys"
-msgstr "102/qwertz/punct/Taste moarte"
-
-#: ../rules/base.xml.in.h:24
-msgid "102/qwertz/dot/Eliminate dead keys"
-msgstr "102/qwertz/punct/Elimină tastele moarte"
-
-#: ../rules/base.xml.in.h:25
-msgid "2"
-msgstr "2"
-
-#: ../rules/base.xml.in.h:26
-msgid "4"
-msgstr "4"
-
-#: ../rules/base.xml.in.h:27
-msgid "5"
-msgstr "5"
-
-#: ../rules/base.xml.in.h:28
-msgid "A4Tech KB-21"
-msgstr "A4Tech KB-21"
-
-#: ../rules/base.xml.in.h:29
-msgid "A4Tech KBS-8"
-msgstr "A4Tech KBS-8"
-
-#: ../rules/base.xml.in.h:30
-msgid "A4Tech Wireless Desktop RFKB-23"
-msgstr "A4Tech Wireless Desktop RFKB-23"
-
-#: ../rules/base.xml.in.h:31
-msgid "ATM/phone-style"
-msgstr "ATM/phone-style"
-
-#: ../rules/base.xml.in.h:32
-msgid "Acer AirKey V"
-msgstr "Acer AirKey V"
-
-#: ../rules/base.xml.in.h:33
-msgid "Acer C300"
-msgstr "Acer C300"
-
-#: ../rules/base.xml.in.h:34
-msgid "Acer Ferrari 4000"
-msgstr "Acer Ferrari 4000"
-
-#: ../rules/base.xml.in.h:35
-msgid "Acer Laptop"
-msgstr "Laptop Acer"
-
-#: ../rules/base.xml.in.h:36
-msgid "Add the standard behavior to Menu key"
-msgstr "Adaugă comportamentul standard la tasta Meniu"
-
-#: ../rules/base.xml.in.h:37
-msgid "Adding Esperanto circumflexes (supersigno)"
-msgstr "Adăugare circumflexe esperanto (supersigno)"
-
-#: ../rules/base.xml.in.h:38
-msgid "Adding EuroSign to certain keys"
-msgstr "Adăugare Semn Euro la anumite taste"
-
-#: ../rules/base.xml.in.h:39
-msgid "Advance Scorpius KI"
-msgstr "Advance Scorpius KI"
-
-#: ../rules/base.xml.in.h:40
-msgid "Afg"
-msgstr "Afg"
-
-#: ../rules/base.xml.in.h:41
-msgid "Afghanistan"
-msgstr "Afganistan"
-
-#: ../rules/base.xml.in.h:42
-msgid "Akan"
-msgstr "Akană"
-
-#: ../rules/base.xml.in.h:43
-msgid "Alb"
-msgstr "Alb"
-
-#: ../rules/base.xml.in.h:44
-msgid "Albania"
-msgstr "Albania"
-
-#: ../rules/base.xml.in.h:45
-msgid "Alt and Meta are on Alt keys"
-msgstr "Alt și Meta sunt pe tastele Alt"
-
-#: ../rules/base.xml.in.h:46
-msgid "Alt is mapped to Right Win, Super to Menu"
-msgstr "Alt e mapat la tasta Win stângă, Super la Meniu"
-
-#: ../rules/base.xml.in.h:47
-msgid "Alt+CapsLock"
-msgstr "Alt+CapsLock"
-
-#: ../rules/base.xml.in.h:48
-msgid "Alt+Ctrl"
-msgstr "Alt+Ctrl"
-
-#: ../rules/base.xml.in.h:49
-msgid "Alt+Shift"
-msgstr "Alt+Shift"
-
-#: ../rules/base.xml.in.h:50
-msgid "Alt+Space"
-msgstr "Alt+Spațiu"
-
-#: ../rules/base.xml.in.h:51
-msgid "Alt-Q"
-msgstr "Alt-Q"
-
-#: ../rules/base.xml.in.h:52
-msgid "Alt/Win key behavior"
-msgstr "Comportamentul tastelor Alt/Win"
-
-#: ../rules/base.xml.in.h:53
-msgid "Alternative"
-msgstr "Alternativ"
-
-#: ../rules/base.xml.in.h:54
-msgid "Alternative Eastern"
-msgstr "Alternativ estic"
-
-#: ../rules/base.xml.in.h:55
-msgid "Alternative Phonetic"
-msgstr "Alternativ fonetic"
-
-#: ../rules/base.xml.in.h:56
-msgid "Alternative international"
-msgstr "Alternativ internațională"
-
-#: ../rules/base.xml.in.h:57
-msgid "Alternative, Sun dead keys"
-msgstr "Alternativ, taste moarte Sun"
-
-#: ../rules/base.xml.in.h:58
-msgid "Alternative, eliminate dead keys"
-msgstr "Alternativ, elimină tastele moarte"
-
-#: ../rules/base.xml.in.h:59
-msgid "Alternative, latin-9 only"
-msgstr "Alternativ, doar latin-9"
-
-#: ../rules/base.xml.in.h:60
-msgid "And"
-msgstr "And"
-
-#: ../rules/base.xml.in.h:61
-msgid "Andorra"
-msgstr "Andora"
-
-#: ../rules/base.xml.in.h:62
-msgid "Any Alt key"
-msgstr "Oricare tastă Alt"
-
-#: ../rules/base.xml.in.h:63
-msgid "Any Win key"
-msgstr "Oricare tastă Win"
-
-#: ../rules/base.xml.in.h:64
-msgid "Any Win key (while pressed)"
-msgstr "Oricare tastă Win (cât timp e apăsată)"
-
-#: ../rules/base.xml.in.h:65
-msgid "Apostrophe (') variant"
-msgstr "Variantă apostrof (')"
-
-#: ../rules/base.xml.in.h:66
-msgid "Apple"
-msgstr "Apple"
-
-#: ../rules/base.xml.in.h:67
-msgid "Apple Aluminium Keyboard (ANSI)"
-msgstr "Tastatură Apple Aluminium (ANSI)"
-
-#: ../rules/base.xml.in.h:68
-msgid "Apple Aluminium Keyboard (ISO)"
-msgstr "Tastatură Apple Aluminium (ISO)"
-
-#: ../rules/base.xml.in.h:69
-msgid "Apple Aluminium Keyboard (JIS)"
-msgstr "Tastatură Apple Aluminium (JIS)"
-
-#: ../rules/base.xml.in.h:70
-msgid "Apple Aluminium Keyboard: emulate PC keys (Print, Scroll_Lock, Pause, NumLock)"
-msgstr ""
-
-#: ../rules/base.xml.in.h:71
-msgid "Apple Laptop"
-msgstr "Laptop Apple"
-
-#: ../rules/base.xml.in.h:72
-msgid "Ara"
-msgstr "Ara"
-
-#: ../rules/base.xml.in.h:73
-msgid "Arabic"
-msgstr "Arabă"
-
-#: ../rules/base.xml.in.h:74
-msgid "Arm"
-msgstr "Arm"
-
-#: ../rules/base.xml.in.h:75
-msgid "Armenia"
-msgstr "Armenia"
-
-#: ../rules/base.xml.in.h:76
-msgid "Asturian variant with bottom-dot H and bottom-dot L"
-msgstr "Varianta asturiană cu punct sub H și sub L"
-
-#: ../rules/base.xml.in.h:77
-msgid "Asus Laptop"
-msgstr "Laptop Asus"
-
-#: ../rules/base.xml.in.h:78
-msgid "At bottom left"
-msgstr "În stânga jos"
-
-#: ../rules/base.xml.in.h:79
-msgid "At left of 'A'"
-msgstr "La stânga lui „Aâ€"
-
-#: ../rules/base.xml.in.h:80
-msgid "Avatime"
-msgstr "Avatime"
-
-#: ../rules/base.xml.in.h:81
-msgid "Aze"
-msgstr "Aze"
-
-#: ../rules/base.xml.in.h:82
-msgid "Azerbaijan"
-msgstr "Azerbaijan"
-
-#: ../rules/base.xml.in.h:83
-msgid "Azona RF2300 wireless Internet Keyboard"
-msgstr "Tastatură internațională fără fir Azona RF2300"
-
-#: ../rules/base.xml.in.h:84
-msgid "BTC 5090"
-msgstr "BTC 5090"
-
-#: ../rules/base.xml.in.h:85
-msgid "BTC 5113RF Multimedia"
-msgstr "BTC 5113RF Multimedia"
-
-#: ../rules/base.xml.in.h:86
-msgid "BTC 5126T"
-msgstr "BTC 5126T"
-
-#: ../rules/base.xml.in.h:87
-msgid "BTC 6301URF"
-msgstr "BTC 6301URF"
-
-#: ../rules/base.xml.in.h:88
-msgid "BTC 9000"
-msgstr "BTC 9000"
-
-#: ../rules/base.xml.in.h:89
-msgid "BTC 9000A"
-msgstr "BTC 9000A"
-
-#: ../rules/base.xml.in.h:90
-msgid "BTC 9001AH"
-msgstr "BTC 9001AH"
-
-#: ../rules/base.xml.in.h:91
-msgid "BTC 9019U"
-msgstr "BTC 9019U"
-
-#: ../rules/base.xml.in.h:92
-msgid "BTC 9116U Mini Wireless Internet and Gaming"
-msgstr "BTC 9116U Mini fără fir, pentru Internet și jocuri"
-
-#: ../rules/base.xml.in.h:93
-msgid "Backslash"
-msgstr ""
-
-#: ../rules/base.xml.in.h:94
-msgid "Bangladesh"
-msgstr "BangladeÈ™"
-
-#: ../rules/base.xml.in.h:95
-msgid "Bashkirian"
-msgstr "Bashkirian"
-
-#: ../rules/base.xml.in.h:96
-msgid "Bel"
-msgstr "Bel"
-
-#: ../rules/base.xml.in.h:97
-msgid "Belarus"
-msgstr "Belarus"
-
-#: ../rules/base.xml.in.h:98
-msgid "Belgium"
-msgstr "Belgia"
-
-#: ../rules/base.xml.in.h:99
-msgid "BenQ X-Touch"
-msgstr "BenQ X-Touch"
-
-#: ../rules/base.xml.in.h:100
-msgid "BenQ X-Touch 730"
-msgstr "BenQ X-Touch 730"
-
-#: ../rules/base.xml.in.h:101
-msgid "BenQ X-Touch 800"
-msgstr "BenQ X-Touch 800"
-
-#: ../rules/base.xml.in.h:102
-msgid "Bengali"
-msgstr "Bengaleză"
-
-#: ../rules/base.xml.in.h:103
-msgid "Bengali Probhat"
-msgstr "Bengaleză Probhat"
-
-#: ../rules/base.xml.in.h:104
-msgid "Bepo, ergonomic, Dvorak way"
-msgstr "Bepo, ergonomică, în mod Dvorak"
-
-#: ../rules/base.xml.in.h:105
-msgid "Bepo, ergonomic, Dvorak way, latin-9 only"
-msgstr "Bepo, ergonomică, în mod Dvorak, doar latin-9"
-
-#: ../rules/base.xml.in.h:106
-msgid "Bgd"
-msgstr "Bgd"
-
-#: ../rules/base.xml.in.h:107
-msgid "Bgr"
-msgstr "Bgr"
-
-#: ../rules/base.xml.in.h:108
-msgid "Bhutan"
-msgstr "Butan"
-
-#: ../rules/base.xml.in.h:109
-msgid "Biblical Hebrew (Tiro)"
-msgstr "Ebraică biblică (Tiro)"
-
-#: ../rules/base.xml.in.h:110
-msgid "Bih"
-msgstr "Bih"
-
-#: ../rules/base.xml.in.h:111
-msgid "Blr"
-msgstr "Blr"
-
-#: ../rules/base.xml.in.h:112
-msgid "Bosnia and Herzegovina"
-msgstr "Bosnia și Herțegovina"
-
-#: ../rules/base.xml.in.h:113
-msgid "Both Alt keys together"
-msgstr "Ambele taste Alt în același timp"
-
-#: ../rules/base.xml.in.h:114
-msgid "Both Ctrl keys together"
-msgstr "Ambele taste Ctrl în același timp"
-
-#: ../rules/base.xml.in.h:115
-msgid "Both Shift keys together"
-msgstr "Ambele taste Shift în același timp"
-
-#: ../rules/base.xml.in.h:116
-msgid "Both Shift-Keys together toggle CapsLock"
-msgstr "Ambele taste Shift în același timp comută CapsLock"
-
-#: ../rules/base.xml.in.h:117
-msgid "Botswana"
-msgstr "Botsuana"
-
-#: ../rules/base.xml.in.h:118
-msgid "Bra"
-msgstr "Bra"
-
-#: ../rules/base.xml.in.h:119
-msgid "Braille"
-msgstr "Braille"
-
-#: ../rules/base.xml.in.h:120
-msgid "Brazil"
-msgstr "Brazilia"
-
-#: ../rules/base.xml.in.h:121
-msgid "Breton"
-msgstr "Bretonă"
-
-#: ../rules/base.xml.in.h:122
-msgid "Brl"
-msgstr "Brl"
-
-#: ../rules/base.xml.in.h:123
-msgid "Brother Internet Keyboard"
-msgstr "Tastatură Brother Internet"
-
-#: ../rules/base.xml.in.h:124
-msgid "Btn"
-msgstr "Btn"
-
-#: ../rules/base.xml.in.h:125
-msgid "Buckwalter"
-msgstr "Buckwalter"
-
-#: ../rules/base.xml.in.h:126
-msgid "Bulgaria"
-msgstr "Bulgaria"
-
-#: ../rules/base.xml.in.h:127
-msgid "Bwa"
-msgstr "Bwa"
-
-#: ../rules/base.xml.in.h:128
-msgid "COD"
-msgstr "COD"
-
-#: ../rules/base.xml.in.h:129
-msgid "CRULP"
-msgstr "CRULP"
-
-#: ../rules/base.xml.in.h:130
-msgid "Cambodia"
-msgstr "Cambodgia"
-
-#: ../rules/base.xml.in.h:131
-msgid "Can"
-msgstr "Can"
-
-#: ../rules/base.xml.in.h:132
-msgid "Canada"
-msgstr "Canada"
-
-#: ../rules/base.xml.in.h:133
-msgid "CapsLock"
-msgstr "CapsLock"
-
-#: ../rules/base.xml.in.h:134
-msgid "CapsLock (to first layout), Shift+CapsLock (to last layout)"
-msgstr "CapsLock (la primul aranjament), Shift+CapsLock (la ultimul aranjament)"
-
-#: ../rules/base.xml.in.h:135
-msgid "CapsLock (while pressed), Alt+CapsLock does the original capslock action"
-msgstr "CapsLock (cât timp e apăsat), Alt+CapsLock execută aceeași acțiune CapsLock"
-
-#: ../rules/base.xml.in.h:136
-msgid "CapsLock acts as Shift with locking. Shift \"pauses\" CapsLock"
-msgstr "CapsLock funcționează ca și Shift cu blocare. Shift „întrerupe†temporar CapsLock"
-
-#: ../rules/base.xml.in.h:137
-msgid "CapsLock acts as Shift with locking. Shift doesn't affect CapsLock"
-msgstr "CapsLock funcționează ca și Shift la blocare. Shift nu afectează CapsLock"
-
-#: ../rules/base.xml.in.h:138
-msgid "CapsLock is disabled"
-msgstr "CapsLock este dezactivat"
-
-#: ../rules/base.xml.in.h:139
-msgid "CapsLock key behavior"
-msgstr "Comportamentul tastei Caps Lock"
-
-#: ../rules/base.xml.in.h:140
-msgid "CapsLock toggles Shift so all keys are affected"
-msgstr "CapsLock comută Shift astfel încât toate tastele sunt afectate"
-
-#: ../rules/base.xml.in.h:141
-msgid "CapsLock toggles normal capitalization of alphabetic characters"
-msgstr "CapsLock comută capitalizarea normală a tuturor caracterelor alfa-numerice."
-
-#: ../rules/base.xml.in.h:142
-msgid "CapsLock uses internal capitalization. Shift \"pauses\" CapsLock"
-msgstr "CapsLock utilizează capitalizarea internă. Shift „întrerupe†temporar CapsLock"
-
-#: ../rules/base.xml.in.h:143
-msgid "CapsLock uses internal capitalization. Shift doesn't affect CapsLock"
-msgstr "CapsLock utilizează capitalizarea internă. Shift nu afectează CapsLock"
-
-#: ../rules/base.xml.in.h:144
-msgid "Catalan variant with middle-dot L"
-msgstr "Varianta catalană cu L cu punct în mijloc"
-
-#: ../rules/base.xml.in.h:145
-msgid "Cedilla"
-msgstr "Sedilă"
-
-#: ../rules/base.xml.in.h:146
-msgid "Che"
-msgstr "Che"
-
-#: ../rules/base.xml.in.h:147
-msgid "Cherokee"
-msgstr "Cherokee"
-
-#: ../rules/base.xml.in.h:148
-msgid "Cherry B.UNLIMITED"
-msgstr "Cherry B.UNLIMITED"
-
-#: ../rules/base.xml.in.h:149
-msgid "Cherry Blue Line CyBo@rd"
-msgstr "Cherry Blue Line CyBo@rd"
-
-#: ../rules/base.xml.in.h:150
-msgid "Cherry Blue Line CyBo@rd (alternate option)"
-msgstr "Cherry Blue Line CyBo@rd (opțiune alternativă)"
-
-#: ../rules/base.xml.in.h:151
-msgid "Cherry CyBo@rd USB-Hub"
-msgstr "Cherry CyBo@rd USB-Hub"
-
-#: ../rules/base.xml.in.h:152
-msgid "Cherry CyMotion Expert"
-msgstr "Cherry CyMotion Expert"
-
-#: ../rules/base.xml.in.h:153
-msgid "Cherry CyMotion Master Linux"
-msgstr "Cherry CyMotion Master Linux"
-
-#: ../rules/base.xml.in.h:154
-msgid "Cherry CyMotion Master XPress"
-msgstr "Cherry CyMotion Master XPress"
-
-#: ../rules/base.xml.in.h:155
-msgid "Chicony Internet Keyboard"
-msgstr "Tastatură Chicony Internet"
-
-#: ../rules/base.xml.in.h:156
-msgid "Chicony KB-9885"
-msgstr "Chicony KB-9885"
-
-#: ../rules/base.xml.in.h:157
-msgid "Chicony KU-0108"
-msgstr "Chicony KU-0108"
-
-#: ../rules/base.xml.in.h:158
-msgid "Chicony KU-0420"
-msgstr "Chicony KU-0420"
-
-#: ../rules/base.xml.in.h:159
-msgid "China"
-msgstr "China"
-
-#: ../rules/base.xml.in.h:160
-msgid "Chn"
-msgstr "Chn"
-
-#: ../rules/base.xml.in.h:161
-msgid "Chuvash"
-msgstr "Ciuvașă"
-
-#: ../rules/base.xml.in.h:162
-msgid "Chuvash Latin"
-msgstr "Ciuvașă latină"
-
-#: ../rules/base.xml.in.h:163
-msgid "Classic"
-msgstr "Clasică"
-
-#: ../rules/base.xml.in.h:164
-msgid "Classic Dvorak"
-msgstr "Dvorak clasică"
-
-#: ../rules/base.xml.in.h:165
-msgid "Classic, eliminate dead keys"
-msgstr "Clasică, elimină tastele moarte"
-
-#: ../rules/base.xml.in.h:166
-msgid "Classmate PC"
-msgstr "Classmate PC"
-
-#: ../rules/base.xml.in.h:167
-msgid "CloGaelach"
-msgstr "CloGaelach"
-
-#: ../rules/base.xml.in.h:168
-msgid "Colemak"
-msgstr "Colemak"
-
-#: ../rules/base.xml.in.h:169
-msgid "Compaq Easy Access Keyboard"
-msgstr "Tastatură cu acces facil Compaq"
-
-#: ../rules/base.xml.in.h:170
-msgid "Compaq Internet Keyboard (13 keys)"
-msgstr "Tastatură Compaq Internet (13 taste)"
-
-#: ../rules/base.xml.in.h:171
-msgid "Compaq Internet Keyboard (18 keys)"
-msgstr "Tastatură Compaq Internet (18 taste)"
-
-#: ../rules/base.xml.in.h:172
-msgid "Compaq Internet Keyboard (7 keys)"
-msgstr "Tastatură Compaq Internet (7 taste)"
-
-#: ../rules/base.xml.in.h:173
-msgid "Compaq iPaq Keyboard"
-msgstr "Tastatură Compaq iPaq"
-
-#: ../rules/base.xml.in.h:174
-msgid "Compose key position"
-msgstr "Poziție tastă de compunere"
-
-#: ../rules/base.xml.in.h:175
-msgid "Congo, Democratic Republic of the"
-msgstr "Republica democrată Congo"
-
-#: ../rules/base.xml.in.h:176
-msgid "Control + Alt + Backspace"
-msgstr "Control + Alt + Backspace"
-
-#: ../rules/base.xml.in.h:177
-msgid "Control is mapped to Alt keys, Alt is mapped to Win keys"
-msgstr "Control este mapat la tastele Alt, Alt e mapat la tastele Win"
-
-#: ../rules/base.xml.in.h:178
-msgid "Control is mapped to Win keys (and the usual Ctrl keys)"
-msgstr "Control este mapat la tastele Win (și tastele Ctrl obișnuite)"
-
-#: ../rules/base.xml.in.h:179
-msgid "Creative Desktop Wireless 7000"
-msgstr "Creative Desktop Wireless 7000"
-
-#: ../rules/base.xml.in.h:180
-msgid "Crimean Tatar (Dobruca-1 Q)"
-msgstr "Tătară din Crimea (Dobruca-1 Q)"
-
-#: ../rules/base.xml.in.h:181
-msgid "Crimean Tatar (Dobruca-2 Q)"
-msgstr "Tătară din Crimea (Dobruca-2 Q)"
-
-#: ../rules/base.xml.in.h:182
-msgid "Crimean Tatar (Turkish Alt-Q)"
-msgstr "Tătară din Crimea (Alt-Q turcesc)"
-
-#: ../rules/base.xml.in.h:183
-msgid "Crimean Tatar (Turkish F)"
-msgstr "Tătară din Crimea (F turcesc)"
-
-#: ../rules/base.xml.in.h:184
-msgid "Crimean Tatar (Turkish Q)"
-msgstr "Tătară din Crimea (Q turcesc)"
-
-#: ../rules/base.xml.in.h:185
-msgid "Croatia"
-msgstr "Croația"
-
-#: ../rules/base.xml.in.h:186
-msgid "Ctrl key position"
-msgstr "Poziția tastei Ctrl"
-
-#: ../rules/base.xml.in.h:187
-msgid "Ctrl+Shift"
-msgstr "Ctrl+Shift"
-
-#: ../rules/base.xml.in.h:188
-msgid "Cyrillic"
-msgstr "Chirilică"
-
-#: ../rules/base.xml.in.h:189
-msgid "Cyrillic with guillemets"
-msgstr "Chirilică cu ghilimele franceze"
-
-#: ../rules/base.xml.in.h:190
-msgid "Cyrillic, Z and ZHE swapped"
-msgstr "Chirilică, Z și ZHE interschimbate"
-
-#: ../rules/base.xml.in.h:191
-msgid "Cze"
-msgstr "Cze"
-
-#: ../rules/base.xml.in.h:192
-msgid "Czechia"
-msgstr "Cehia"
-
-#: ../rules/base.xml.in.h:193
-msgid "DOS"
-msgstr "DOS"
-
-#: ../rules/base.xml.in.h:194
-msgid "DTK2000"
-msgstr "DTK2000"
-
-#: ../rules/base.xml.in.h:195
-msgid "Dead acute"
-msgstr "Accent ascuțit mort"
-
-#: ../rules/base.xml.in.h:196
-msgid "Dead grave acute"
-msgstr "Accent grav mort"
-
-#: ../rules/base.xml.in.h:197
-msgid "Default numeric keypad keys"
-msgstr "Taste implicite de la tastatura numerică"
-
-#: ../rules/base.xml.in.h:198
-msgid "Dell"
-msgstr "Dell"
-
-#: ../rules/base.xml.in.h:199
-msgid "Dell 101-key PC"
-msgstr "Dell 101 taste PC"
-
-#: ../rules/base.xml.in.h:200
-msgid "Dell Laptop/notebook Inspiron 6xxx/8xxx"
-msgstr "Laptop/notebook Dell Inspiron 6xxx/8xxx"
-
-#: ../rules/base.xml.in.h:201
-msgid "Dell Laptop/notebook Precision M series"
-msgstr "Laptop/notebook Dell seria Precision M"
-
-#: ../rules/base.xml.in.h:202
-msgid "Dell Latitude series laptop"
-msgstr "Laptop seria Dell Latitude"
-
-#: ../rules/base.xml.in.h:203
-msgid "Dell Precision M65"
-msgstr "Dell Precision M65"
-
-#: ../rules/base.xml.in.h:204
-msgid "Dell SK-8125"
-msgstr "Dell SK-8125"
-
-#: ../rules/base.xml.in.h:205
-msgid "Dell SK-8135"
-msgstr "Dell SK-8135"
-
-#: ../rules/base.xml.in.h:206
-msgid "Dell USB Multimedia Keyboard"
-msgstr "Tastatură multimedia Dell USB"
-
-#: ../rules/base.xml.in.h:207
-msgid "Denmark"
-msgstr "Danemarca"
-
-#: ../rules/base.xml.in.h:208
-msgid "Deu"
-msgstr "Deu"
-
-#: ../rules/base.xml.in.h:209
-msgid "Dexxa Wireless Desktop Keyboard"
-msgstr "Tastatură Dexxa Wireless Desktop"
-
-#: ../rules/base.xml.in.h:210
-msgid "Diamond 9801 / 9802 series"
-msgstr "Seria Diamond 9801 / 9802"
-
-#: ../rules/base.xml.in.h:211
-msgid "Dnk"
-msgstr "Dnk"
-
-#: ../rules/base.xml.in.h:212
-msgid "Dvorak"
-msgstr "Dvorak"
-
-#: ../rules/base.xml.in.h:213
-msgid "Dvorak (UK Punctuation)"
-msgstr "Dvorak (punctuație britanică)"
-
-#: ../rules/base.xml.in.h:214
-msgid "Dvorak alternative international (no dead keys)"
-msgstr "Dvorak alternativă internațională (fără taste moarte)"
-
-#: ../rules/base.xml.in.h:215
-msgid "Dvorak international (with dead keys)"
-msgstr ""
-
-#: ../rules/base.xml.in.h:216
-msgid "Dvorak, Polish quotes on key 1"
-msgstr "Dvorak, citate poloneze pe tasta 1"
-
-#: ../rules/base.xml.in.h:217
-msgid "Dvorak, Polish quotes on quotemark key"
-msgstr "Dvorak, citate poloneze pe tasta de ghilimele inversate"
-
-#: ../rules/base.xml.in.h:218
-msgid "E"
-msgstr "E"
-
-#: ../rules/base.xml.in.h:219
-msgid "Eastern"
-msgstr "Estică"
-
-#: ../rules/base.xml.in.h:220
-msgid "Eliminate dead keys"
-msgstr "Elimină tastele moarte"
-
-#: ../rules/base.xml.in.h:221
-msgid "Enable extra typographic characters"
-msgstr "Activează caracterele tipografice adiționale"
-
-#: ../rules/base.xml.in.h:222
-msgid "English"
-msgstr "Engleză"
-
-#: ../rules/base.xml.in.h:223
-msgid "English (USA International)"
-msgstr "Engleză (USA Internațional)"
-
-#: ../rules/base.xml.in.h:224
-msgid "English (USA Macintosh)"
-msgstr "Engleză (USA Macintosh)"
-
-#: ../rules/base.xml.in.h:225
-msgid "Ennyah DKB-1008"
-msgstr "Ennyah DKB-1008"
-
-#: ../rules/base.xml.in.h:226
-msgid "Enter on keypad"
-msgstr "Enter de pe tastatura numerică"
-
-#: ../rules/base.xml.in.h:227
-msgid "Epo"
-msgstr "Epo"
-
-#: ../rules/base.xml.in.h:228
-msgid "Ergonomic"
-msgstr "Ergonomică"
-
-#: ../rules/base.xml.in.h:229
-msgid "Esp"
-msgstr "Esp"
-
-#: ../rules/base.xml.in.h:230
-msgid "Esperanto"
-msgstr "Esperanto"
-
-#: ../rules/base.xml.in.h:231
-msgid "Est"
-msgstr "Est"
-
-#: ../rules/base.xml.in.h:232
-msgid "Estonia"
-msgstr "Estonia"
-
-#: ../rules/base.xml.in.h:233
-msgid "Eth"
-msgstr "Eti"
-
-#: ../rules/base.xml.in.h:234
-msgid "Ethiopia"
-msgstr "Etiopia"
-
-#: ../rules/base.xml.in.h:235
-msgid "Everex STEPnote"
-msgstr "Everex STEPnote"
-
-#: ../rules/base.xml.in.h:236
-msgid "Ewe"
-msgstr "Ewe"
-
-#: ../rules/base.xml.in.h:237
-msgid "Extended"
-msgstr "Extinsă"
-
-#: ../rules/base.xml.in.h:238
-msgid "Extended - Winkeys"
-msgstr "Extentins - Winkeys"
-
-#: ../rules/base.xml.in.h:239
-msgid "Extended Backslash"
-msgstr "Backslash extins"
-
-#: ../rules/base.xml.in.h:240
-msgid "F-letter (F) variant"
-msgstr "Varianta litera-F (F)"
-
-#: ../rules/base.xml.in.h:241
-msgid "FL90"
-msgstr "FL90"
-
-#: ../rules/base.xml.in.h:242
-msgid "Faroe Islands"
-msgstr "Insulele Feroe"
-
-#: ../rules/base.xml.in.h:243
-msgid "Fin"
-msgstr "Fin"
-
-#: ../rules/base.xml.in.h:244
-msgid "Finland"
-msgstr "Finlanda"
-
-#. This assumes the KP_ abstract symbols are actually useful for some apps
-#. The description needs to be rewritten
-#: ../rules/base.xml.in.h:247
-msgid "Four-level key with abstract separators"
-msgstr "Tastă de nivelul patru cu separatori abstracți"
-
-#: ../rules/base.xml.in.h:248
-msgid "Four-level key with comma"
-msgstr "Tastă de nivelul patru cu virgulă"
-
-#: ../rules/base.xml.in.h:249
-msgid "Four-level key with dot"
-msgstr "Tastă de nivelul patru cu punct"
-
-#: ../rules/base.xml.in.h:250
-msgid "Four-level key with dot, latin-9 restriction"
-msgstr "Tastă de nivelul patru cu punct, restricție latin-9"
-
-#: ../rules/base.xml.in.h:251
-msgid "Four-level key with momayyez"
-msgstr "Tastă de nivelul patru cu momayyez"
-
-#: ../rules/base.xml.in.h:252
-msgid "Fra"
-msgstr "Fra"
-
-#: ../rules/base.xml.in.h:253
-msgid "France"
-msgstr "Franța"
-
-#: ../rules/base.xml.in.h:254
-msgid "Français (France Alternative)"
-msgstr "Franceză (France Alternative)"
-
-#: ../rules/base.xml.in.h:255
-msgid "French"
-msgstr "Franceză"
-
-#: ../rules/base.xml.in.h:256
-msgid "French (Macintosh)"
-msgstr "Franceză (Macintosh)"
-
-#: ../rules/base.xml.in.h:257
-msgid "French (legacy)"
-msgstr "Franceză (moștenire)"
-
-#: ../rules/base.xml.in.h:258
-msgid "French Dvorak"
-msgstr "Dvorak franceză"
-
-#: ../rules/base.xml.in.h:259
-msgid "French, Sun dead keys"
-msgstr "Franceză, taste moarte Sun"
-
-#: ../rules/base.xml.in.h:260
-msgid "French, eliminate dead keys"
-msgstr "Franceză, elimină tastele moarte"
-
-#: ../rules/base.xml.in.h:261
-msgid "Fro"
-msgstr ""
-
-#: ../rules/base.xml.in.h:262
-msgid "Fujitsu-Siemens Computers AMILO laptop"
-msgstr "Laptop Fujitsu-Siemens Computers AMILO"
-
-#: ../rules/base.xml.in.h:263
-msgid "Fula"
-msgstr "Fula"
-
-#: ../rules/base.xml.in.h:264
-msgid "GBr"
-msgstr "MBr"
-
-#: ../rules/base.xml.in.h:265
-msgid "GILLBT"
-msgstr ""
-
-#: ../rules/base.xml.in.h:266
-msgid "Ga"
-msgstr "Ga"
-
-#: ../rules/base.xml.in.h:267
-msgid "Generic 101-key PC"
-msgstr "PC 101 taste, generică"
-
-#: ../rules/base.xml.in.h:268
-msgid "Generic 102-key (Intl) PC"
-msgstr "PC 102 taste, generică (Intl)"
-
-#: ../rules/base.xml.in.h:269
-msgid "Generic 104-key PC"
-msgstr "PC 104 taste, generică"
-
-#: ../rules/base.xml.in.h:270
-msgid "Generic 105-key (Intl) PC"
-msgstr "PC 105 taste, generică (Intl)"
-
-#: ../rules/base.xml.in.h:271
-msgid "Genius Comfy KB-12e"
-msgstr "Genius Comfy KB-12e"
-
-#: ../rules/base.xml.in.h:272
-msgid "Genius Comfy KB-16M / Genius MM Keyboard KWD-910"
-msgstr "Tastatură Genius Comfy KB-16M / Genius MM KWD-910"
-
-#: ../rules/base.xml.in.h:273
-msgid "Genius Comfy KB-21e-Scroll"
-msgstr "Genius Comfy KB-21e-Scroll"
-
-#: ../rules/base.xml.in.h:274
-msgid "Genius KB-19e NB"
-msgstr "Genius KB-19e NB"
-
-#: ../rules/base.xml.in.h:275
-msgid "Genius KKB-2050HS"
-msgstr "Genius KKB-2050HS"
-
-#: ../rules/base.xml.in.h:276
-msgid "Geo"
-msgstr "Geo"
-
-#: ../rules/base.xml.in.h:277
-msgid "Georgia"
-msgstr "Georgia"
-
-#: ../rules/base.xml.in.h:278
-msgid "Georgian"
-msgstr "Georgiană"
-
-#: ../rules/base.xml.in.h:279
-msgid "Georgian AZERTY Tskapo"
-msgstr "Georgiană AZERTY Tskapo"
-
-#: ../rules/base.xml.in.h:280
-msgid "German (Macintosh)"
-msgstr "Germană (Macintosh)"
-
-#: ../rules/base.xml.in.h:281
-msgid "German, Sun dead keys"
-msgstr "Germană, taste moarte Sun"
-
-#: ../rules/base.xml.in.h:282
-msgid "German, eliminate dead keys"
-msgstr "Germană, elimină tastele moarte"
-
-#: ../rules/base.xml.in.h:283
-msgid "Germany"
-msgstr "Germania"
-
-#: ../rules/base.xml.in.h:284
-msgid "Gha"
-msgstr "Gha"
-
-#: ../rules/base.xml.in.h:285
-msgid "Ghana"
-msgstr "Ghana"
-
-#: ../rules/base.xml.in.h:286
-msgid "Gin"
-msgstr ""
-
-#: ../rules/base.xml.in.h:287
-msgid "Grc"
-msgstr ""
-
-#: ../rules/base.xml.in.h:288
-msgid "Greece"
-msgstr "Grecia"
-
-#: ../rules/base.xml.in.h:289
-msgid "Guinea"
-msgstr "Guinea"
-
-#: ../rules/base.xml.in.h:290
-msgid "Gujarati"
-msgstr "Gujarati"
-
-#: ../rules/base.xml.in.h:291
-msgid "Gurmukhi"
-msgstr "Gurmukhi"
-
-#: ../rules/base.xml.in.h:292
-msgid "Gurmukhi Jhelum"
-msgstr "Gurmukhi Jhelum"
-
-#: ../rules/base.xml.in.h:293
-msgid "Gyration"
-msgstr "Gyration"
-
-#: ../rules/base.xml.in.h:294
-msgid "Happy Hacking Keyboard"
-msgstr "Tastatură Happy Hacking"
-
-#: ../rules/base.xml.in.h:295
-msgid "Happy Hacking Keyboard for Mac"
-msgstr "Tastatură Happy Hacking pentru Mac"
-
-#: ../rules/base.xml.in.h:296
-msgid "Hausa"
-msgstr "Hausă"
-
-#: ../rules/base.xml.in.h:297
-msgid "Hewlett-Packard Internet Keyboard"
-msgstr "Tastatură Hewlett-Packard Internet"
-
-#: ../rules/base.xml.in.h:298
-msgid "Hewlett-Packard Mini 110 Notebook"
-msgstr "Hewlett-Packard Mini 110 Notebook"
-
-#: ../rules/base.xml.in.h:299
-msgid "Hewlett-Packard Omnibook 500 FA"
-msgstr "Hewlett-Packard Omnibook 500 FA"
-
-#: ../rules/base.xml.in.h:300
-msgid "Hewlett-Packard Omnibook 5xx"
-msgstr "Hewlett-Packard Omnibook 5xx"
-
-#: ../rules/base.xml.in.h:301
-msgid "Hewlett-Packard Omnibook 6000/6100"
-msgstr "Hewlett-Packard Omnibook 6000/6100"
-
-#: ../rules/base.xml.in.h:302
-msgid "Hewlett-Packard Omnibook XE3 GC"
-msgstr "Hewlett-Packard Omnibook XE3 GC"
-
-#: ../rules/base.xml.in.h:303
-msgid "Hewlett-Packard Omnibook XE3 GF"
-msgstr "Hewlett-Packard Omnibook XE3 GF"
-
-#: ../rules/base.xml.in.h:304
-msgid "Hewlett-Packard Omnibook XT1000"
-msgstr "Hewlett-Packard Omnibook XT1000"
-
-#: ../rules/base.xml.in.h:305
-msgid "Hewlett-Packard Pavilion ZT11xx"
-msgstr "Hewlett-Packard Pavilion ZT11xx"
-
-#: ../rules/base.xml.in.h:306
-msgid "Hewlett-Packard Pavilion dv5"
-msgstr "Hewlett-Packard Pavilion dv5"
-
-#: ../rules/base.xml.in.h:307
-msgid "Hewlett-Packard SK-250x Multimedia Keyboard"
-msgstr "Tastatură multimedia Hewlett-Packard SK-250x"
-
-#: ../rules/base.xml.in.h:308
-msgid "Hewlett-Packard nx9020"
-msgstr "Hewlett-Packard nx9020"
-
-#: ../rules/base.xml.in.h:309
-msgid "Hexadecimal"
-msgstr "Hexazecimal"
-
-#: ../rules/base.xml.in.h:310
-msgid "Hindi Bolnagri"
-msgstr "Hindi Bolnagri"
-
-#: ../rules/base.xml.in.h:311
-msgid "Hindi Wx"
-msgstr "Hindi Wx"
-
-#: ../rules/base.xml.in.h:312
-msgid "Homophonic"
-msgstr "Homofonic"
-
-#: ../rules/base.xml.in.h:313
-msgid "Honeywell Euroboard"
-msgstr "Honeywell Euroboard"
-
-#: ../rules/base.xml.in.h:314
-msgid "Hrv"
-msgstr "Hrv"
-
-#: ../rules/base.xml.in.h:315
-msgid "Hun"
-msgstr "Ung"
-
-#: ../rules/base.xml.in.h:316
-msgid "Hungary"
-msgstr "Ungaria"
-
-#: ../rules/base.xml.in.h:317
-msgid "Hyper is mapped to Win-keys"
-msgstr "Liniuța e mapată la tastele Win"
-
-#: ../rules/base.xml.in.h:318
-msgid "IBM (LST 1205-92)"
-msgstr "IBM (LST 1205-92)"
-
-#: ../rules/base.xml.in.h:319
-msgid "IBM Rapid Access"
-msgstr "IBM Rapid Access"
-
-#: ../rules/base.xml.in.h:320
-msgid "IBM Rapid Access II"
-msgstr "IBM Rapid Access II"
-
-#: ../rules/base.xml.in.h:321
-msgid "IBM Space Saver"
-msgstr "IBM Space Saver"
-
-#: ../rules/base.xml.in.h:322
-msgid "IBM ThinkPad 560Z/600/600E/A22E"
-msgstr "IBM ThinkPad 560Z/600/600E/A22E"
-
-#: ../rules/base.xml.in.h:323
-msgid "IBM ThinkPad R60/T60/R61/T61"
-msgstr "IBM ThinkPad R60/T60/R61/T61"
-
-#: ../rules/base.xml.in.h:324
-msgid "IBM ThinkPad Z60m/Z60t/Z61m/Z61t"
-msgstr "IBM ThinkPad Z60m/Z60t/Z61m/Z61t"
-
-#: ../rules/base.xml.in.h:325
-msgid "ISO Alternate"
-msgstr "Alternativ ISO"
-
-#: ../rules/base.xml.in.h:326
-msgid "Iceland"
-msgstr "Islanda"
-
-#: ../rules/base.xml.in.h:327
-msgid "Igbo"
-msgstr "Igboneză"
-
-#: ../rules/base.xml.in.h:328
-msgid "Include dead tilde"
-msgstr "Include tilda moartă"
-
-#: ../rules/base.xml.in.h:329
-msgid "Ind"
-msgstr "Ind"
-
-#: ../rules/base.xml.in.h:330
-msgid "India"
-msgstr "India"
-
-#: ../rules/base.xml.in.h:331
-msgid "International (AltGr dead keys)"
-msgstr "Internațional (taste moarte AltGr)"
-
-#: ../rules/base.xml.in.h:332
-msgid "International (with dead keys)"
-msgstr "Internațională (cu taste moarte)"
-
-#: ../rules/base.xml.in.h:333
-msgid "Inuktitut"
-msgstr "Inuktitut"
-
-#: ../rules/base.xml.in.h:334
-msgid "Iran"
-msgstr "Iran"
-
-#: ../rules/base.xml.in.h:335
-msgid "Iraq"
-msgstr "Irak"
-
-#: ../rules/base.xml.in.h:336
-msgid "Ireland"
-msgstr "Irlanda"
-
-#: ../rules/base.xml.in.h:337
-msgid "Irl"
-msgstr "Irl"
-
-#: ../rules/base.xml.in.h:338
-msgid "Irn"
-msgstr "Irn"
-
-#: ../rules/base.xml.in.h:339
-msgid "Irq"
-msgstr "Irk"
-
-#: ../rules/base.xml.in.h:340
-msgid "Isl"
-msgstr "Isl"
-
-#: ../rules/base.xml.in.h:341
-msgid "Isr"
-msgstr "Isr"
-
-#: ../rules/base.xml.in.h:342
-msgid "Israel"
-msgstr "Israel"
-
-#: ../rules/base.xml.in.h:343
-msgid "Ita"
-msgstr "Ita"
-
-#: ../rules/base.xml.in.h:344
-msgid "Italy"
-msgstr "Italia"
-
-#: ../rules/base.xml.in.h:345
-msgid "Japan"
-msgstr "Japonia"
-
-#: ../rules/base.xml.in.h:346
-msgid "Japan (PC-98xx Series)"
-msgstr "Japoneză (seria PC-98xx)"
-
-#: ../rules/base.xml.in.h:347
-msgid "Japanese keyboard options"
-msgstr "Opțiuni tastatură japoneză"
-
-#: ../rules/base.xml.in.h:348
-msgid "Jpn"
-msgstr "Jpn"
-
-#: ../rules/base.xml.in.h:349
-msgid "Kalmyk"
-msgstr "Kalmyk"
-
-#: ../rules/base.xml.in.h:350
-msgid "Kana"
-msgstr "Kana"
-
-#: ../rules/base.xml.in.h:351
-msgid "Kana Lock key is locking"
-msgstr "Tasta de blocare Kana blochează"
-
-#: ../rules/base.xml.in.h:352
-msgid "Kannada"
-msgstr "Kanadă"
-
-#: ../rules/base.xml.in.h:353
-msgid "Kashubian"
-msgstr "Kashubiană"
-
-#: ../rules/base.xml.in.h:354
-msgid "Kaz"
-msgstr "Kaz"
-
-#: ../rules/base.xml.in.h:355
-msgid "Kazakh with Russian"
-msgstr "Cazacă cu rusă"
-
-#: ../rules/base.xml.in.h:356
-msgid "Kazakhstan"
-msgstr "Kazahstan"
-
-#: ../rules/base.xml.in.h:357
-msgid "Ken"
-msgstr ""
-
-#: ../rules/base.xml.in.h:358
-msgid "Kenya"
-msgstr ""
-
-#: ../rules/base.xml.in.h:359
-msgid "Key sequence to kill the X server"
-msgstr "Secvență de taste pentru a termina forțat server-ul X"
-
-#: ../rules/base.xml.in.h:360
-msgid "Key to choose 3rd level"
-msgstr "Tasta pentru alegerea celui de-al treilea nivel"
-
-#: ../rules/base.xml.in.h:361
-msgid "Key to choose 5th level"
-msgstr ""
-
-#: ../rules/base.xml.in.h:362
-msgid "Key(s) to change layout"
-msgstr "Tasta(ele) pentru modificarea aranjamentului"
-
-#: ../rules/base.xml.in.h:363
-msgid "Keytronic FlexPro"
-msgstr "Keytronic FlexPro"
-
-#: ../rules/base.xml.in.h:364
-msgid "Kgz"
-msgstr "Kgz"
-
-#: ../rules/base.xml.in.h:365
-msgid "Khm"
-msgstr "Khm"
-
-#: ../rules/base.xml.in.h:366
-msgid "Kikuyu"
-msgstr ""
-
-#: ../rules/base.xml.in.h:367
-msgid "Komi"
-msgstr "Komi"
-
-#: ../rules/base.xml.in.h:368
-msgid "Kor"
-msgstr "Cor"
-
-#: ../rules/base.xml.in.h:369
-msgid "Korea, Republic of"
-msgstr "Coreea, Republica"
-
-#: ../rules/base.xml.in.h:370
-msgid "Ktunaxa"
-msgstr "Ktunaxa"
-
-#: ../rules/base.xml.in.h:371
-msgid "Kurdish, (F)"
-msgstr "Kurdă, (F)"
-
-#: ../rules/base.xml.in.h:372
-msgid "Kurdish, Arabic-Latin"
-msgstr "Kurdă, arabă-latină"
-
-#: ../rules/base.xml.in.h:373
-msgid "Kurdish, Latin Alt-Q"
-msgstr "Kurdă, Alt-Q latin"
-
-#: ../rules/base.xml.in.h:374
-msgid "Kurdish, Latin Q"
-msgstr "Kurdă, Q latin"
-
-#: ../rules/base.xml.in.h:375
-msgid "Kyrgyzstan"
-msgstr "Kârgâzstan"
-
-#: ../rules/base.xml.in.h:376
-msgid "LAm"
-msgstr "LAm"
-
-#: ../rules/base.xml.in.h:377
-msgid "LEKP"
-msgstr "LEKP"
-
-#: ../rules/base.xml.in.h:378
-msgid "LEKPa"
-msgstr "LEKPa"
-
-#: ../rules/base.xml.in.h:379
-msgid "Lao"
-msgstr "Lao"
-
-#: ../rules/base.xml.in.h:380
-msgid "Laos"
-msgstr "Laos"
-
-#: ../rules/base.xml.in.h:381
-msgid "Laptop/notebook Compaq (eg. Armada) Laptop Keyboard"
-msgstr "Tastatură Laptop/notebook Compaq (eg. Armada)"
-
-#: ../rules/base.xml.in.h:382
-msgid "Laptop/notebook Compaq (eg. Presario) Internet Keyboard"
-msgstr "Tastatură Internet Laptop/notebook Compaq (eg. Presario)"
-
-#: ../rules/base.xml.in.h:383
-msgid "Laptop/notebook eMachines m68xx"
-msgstr "Laptop/notebook eMachines m68xx"
-
-#: ../rules/base.xml.in.h:384
-msgid "Latin"
-msgstr "Latină"
-
-#: ../rules/base.xml.in.h:385
-msgid "Latin American"
-msgstr "Latino americană"
-
-#: ../rules/base.xml.in.h:386
-msgid "Latin Unicode"
-msgstr "Unicode latin"
-
-#: ../rules/base.xml.in.h:387
-msgid "Latin Unicode qwerty"
-msgstr "Unicode qwerty latin"
-
-#: ../rules/base.xml.in.h:388
-msgid "Latin qwerty"
-msgstr "qwerty latin"
-
-#: ../rules/base.xml.in.h:389
-msgid "Latin unicode"
-msgstr "unicode latin"
-
-#: ../rules/base.xml.in.h:390
-msgid "Latin unicode qwerty"
-msgstr "unicode qwerty latin"
-
-#: ../rules/base.xml.in.h:391
-msgid "Latin with guillemets"
-msgstr "Latin cu ghilimele franceze"
-
-#: ../rules/base.xml.in.h:392
-msgid "Latvia"
-msgstr "Letonia"
-
-#: ../rules/base.xml.in.h:393
-msgid "Layout toggle on multiply/divide key"
-msgstr ""
-
-#: ../rules/base.xml.in.h:394
-msgid "Left Alt"
-msgstr "Alt din stânga"
-
-#: ../rules/base.xml.in.h:395
-msgid "Left Alt (while pressed)"
-msgstr "Alt din stânga (cât timp e apăsată)"
-
-#: ../rules/base.xml.in.h:396
-msgid "Left Alt is swapped with Left Win"
-msgstr "Alt din stânga e interschimbat cu Win din stânga"
-
-#: ../rules/base.xml.in.h:397
-msgid "Left Ctrl"
-msgstr "Ctrl din stânga"
-
-#: ../rules/base.xml.in.h:398
-msgid "Left Ctrl (to first layout), Right Ctrl (to last layout)"
-msgstr "Ctrl stânga (la primul aranjament), Ctrl dreapta (la ultimul aranjament)"
-
-#: ../rules/base.xml.in.h:399
-msgid "Left Ctrl+Left Shift"
-msgstr "Ctrl stânga+Shift stânga"
-
-#: ../rules/base.xml.in.h:400
-msgid "Left Shift"
-msgstr "Shift stânga"
-
-#: ../rules/base.xml.in.h:401
-msgid "Left Win"
-msgstr "Win stânga"
-
-#: ../rules/base.xml.in.h:402
-msgid "Left Win (to first layout), Right Win/Menu (to last layout)"
-msgstr "Win stânga (la primul aranjament), Win dreapta/Menu (la ultimul aranjament)"
-
-#: ../rules/base.xml.in.h:403
-msgid "Left Win (while pressed)"
-msgstr "Win stânga (cât timp e apăsat)"
-
-#: ../rules/base.xml.in.h:404
-msgid "Left Win chooses 5th level, locks when pressed together with another 5th-level-chooser"
-msgstr ""
-
-#: ../rules/base.xml.in.h:405
-msgid "Left Win chooses 5th level, locks when pressed together with another 5th-level-chooser, one press releases the lock"
-msgstr ""
-
-#: ../rules/base.xml.in.h:406
-msgid "Left hand"
-msgstr "Mâna stângă"
-
-#: ../rules/base.xml.in.h:407
-msgid "Left handed Dvorak"
-msgstr "Dvorak pentru stângaci"
-
-#: ../rules/base.xml.in.h:408
-msgid "Legacy"
-msgstr "Moștenire"
-
-#: ../rules/base.xml.in.h:409
-msgid "Legacy Wang 724"
-msgstr "Wang 724 - moștenire"
-
-#. Actually, with KP_SEPARATOR, as the old keypad(comma)
-#: ../rules/base.xml.in.h:411
-msgid "Legacy key with comma"
-msgstr "Tastă moștenită cu virgulă"
-
-#: ../rules/base.xml.in.h:412
-msgid "Legacy key with dot"
-msgstr "Tastă moștenită cu punct"
-
-#: ../rules/base.xml.in.h:413
-msgid "Lithuania"
-msgstr "Lituania"
-
-#: ../rules/base.xml.in.h:414
-msgid "Lka"
-msgstr ""
-
-#: ../rules/base.xml.in.h:415
-msgid "Logitech Access Keyboard"
-msgstr "Tastatură Logitech Access"
-
-#: ../rules/base.xml.in.h:416
-msgid "Logitech Cordless Desktop"
-msgstr "Logitech Desktop fără fir"
-
-#: ../rules/base.xml.in.h:417
-msgid "Logitech Cordless Desktop (alternate option)"
-msgstr "Logitech Desktop fără fir (opțiune alternativă)"
-
-#: ../rules/base.xml.in.h:418
-msgid "Logitech Cordless Desktop EX110"
-msgstr "Logitech Desktop EX110 fără fir"
-
-#: ../rules/base.xml.in.h:419
-msgid "Logitech Cordless Desktop LX-300"
-msgstr "Logitech Desktop LX-300 fără fir"
-
-#: ../rules/base.xml.in.h:420
-msgid "Logitech Cordless Desktop Navigator"
-msgstr "Logitech Desktop Navigator fără fir"
-
-#: ../rules/base.xml.in.h:421
-msgid "Logitech Cordless Desktop Optical"
-msgstr "Logitech Desktop Optical fără fir"
-
-#: ../rules/base.xml.in.h:422
-msgid "Logitech Cordless Desktop Pro (alternate option 2)"
-msgstr "Logitech Desktop Pro (opțiune alternativă 2) fără fir"
-
-#: ../rules/base.xml.in.h:423
-msgid "Logitech Cordless Desktop iTouch"
-msgstr "Logitech Desktop iTouch fără fir"
-
-#: ../rules/base.xml.in.h:424
-msgid "Logitech Cordless Freedom/Desktop Navigator"
-msgstr "Logitech Freedom/Desktop Navigator fără fir"
-
-#: ../rules/base.xml.in.h:425
-msgid "Logitech G15 extra keys via G15daemon"
-msgstr "Logitech G15 via G15daemon cu taste suplimentare"
-
-#: ../rules/base.xml.in.h:426
-msgid "Logitech Generic Keyboard"
-msgstr "Tastatură generică Logitech"
-
-#: ../rules/base.xml.in.h:427
-msgid "Logitech Internet 350 Keyboard"
-msgstr "Tastatură Logitech Internet 350"
-
-#: ../rules/base.xml.in.h:428
-msgid "Logitech Internet Keyboard"
-msgstr "Tastatură Logitech Internet"
-
-#: ../rules/base.xml.in.h:429
-msgid "Logitech Internet Navigator Keyboard"
-msgstr "Tastatură Logitech Internet Navigator"
-
-#: ../rules/base.xml.in.h:430
-msgid "Logitech Media Elite Keyboard"
-msgstr "Tastatură Logitech Media Elite"
-
-#: ../rules/base.xml.in.h:431
-msgid "Logitech Ultra-X Cordless Media Desktop Keyboard"
-msgstr "Tastatură Logitech Ultra-X Media Desktop fără fir"
-
-#: ../rules/base.xml.in.h:432
-msgid "Logitech Ultra-X Keyboard"
-msgstr "Tastatură Logitech Ultra-X"
-
-#: ../rules/base.xml.in.h:433
-msgid "Logitech diNovo Edge Keyboard"
-msgstr "Tastatură Logitech diNovo Edge"
-
-#: ../rules/base.xml.in.h:434
-msgid "Logitech diNovo Keyboard"
-msgstr "Tastatură Logitech diNovo"
-
-#: ../rules/base.xml.in.h:435
-msgid "Logitech iTouch"
-msgstr "Logitech iTouch"
-
-#: ../rules/base.xml.in.h:436
-msgid "Logitech iTouch Cordless Keyboard (model Y-RB6)"
-msgstr "Tastatură Logitech iTouch fără fir (model Y-RB6)"
-
-#: ../rules/base.xml.in.h:437
-msgid "Logitech iTouch Internet Navigator Keyboard SE"
-msgstr "Tastatură Logitech iTouch Internet Navigator SE"
-
-#: ../rules/base.xml.in.h:438
-msgid "Logitech iTouch Internet Navigator Keyboard SE (USB)"
-msgstr "Tastatură Logitech iTouch Internet Navigator SE (USB)"
-
-#: ../rules/base.xml.in.h:439
-msgid "Lower Sorbian"
-msgstr "Sârbă de jos"
-
-#: ../rules/base.xml.in.h:440
-msgid "Lower Sorbian (qwertz)"
-msgstr "Sârbă de jos (qwerty)"
-
-#: ../rules/base.xml.in.h:441
-msgid "Ltu"
-msgstr "Ltu"
-
-#: ../rules/base.xml.in.h:442
-msgid "Lva"
-msgstr "Lva"
-
-#: ../rules/base.xml.in.h:443
-msgid "MESS"
-msgstr "MESS"
-
-#: ../rules/base.xml.in.h:444
-msgid "MNE"
-msgstr "MNE"
-
-#: ../rules/base.xml.in.h:445
-msgid "MacBook/MacBook Pro"
-msgstr "MacBook/MacBook Pro"
-
-#: ../rules/base.xml.in.h:446
-msgid "MacBook/MacBook Pro (Intl)"
-msgstr "MacBook/MacBook Pro (Intl)"
-
-#: ../rules/base.xml.in.h:447
-msgid "Macedonia"
-msgstr "Macedonia"
-
-#: ../rules/base.xml.in.h:448
-msgid "Macintosh"
-msgstr "Macintosh"
-
-#: ../rules/base.xml.in.h:449
-msgid "Macintosh Old"
-msgstr "Macintosh veche"
-
-#: ../rules/base.xml.in.h:450
-msgid "Macintosh, Sun dead keys"
-msgstr "Macintosh, taste moarte Sun"
-
-#: ../rules/base.xml.in.h:451
-msgid "Macintosh, eliminate dead keys"
-msgstr "Macintosh, elimină tastele moarte"
-
-#: ../rules/base.xml.in.h:452
-msgid "Make CapsLock an additional Backspace"
-msgstr "CapsLock este un Backspace suplimentar"
-
-#: ../rules/base.xml.in.h:453
-msgid "Make CapsLock an additional Ctrl"
-msgstr "CapsLock este un Ctlr suplimentar"
-
-#: ../rules/base.xml.in.h:454
-msgid "Make CapsLock an additional ESC"
-msgstr "CapsLock este un ESC suplimentar"
-
-#: ../rules/base.xml.in.h:455
-msgid "Make CapsLock an additional Hyper"
-msgstr "Fă CapsLock un alt Hyper"
-
-#: ../rules/base.xml.in.h:456
-msgid "Make CapsLock an additional NumLock"
-msgstr "Fă CapsLock un alt NumLock"
-
-#: ../rules/base.xml.in.h:457
-msgid "Make CapsLock an additional Super"
-msgstr "Fă CapsLock un alt Super"
-
-#: ../rules/base.xml.in.h:458
-msgid "Malayalam"
-msgstr "Malailamă"
-
-#: ../rules/base.xml.in.h:459
-msgid "Malayalam Lalitha"
-msgstr "Malailamă Lalitha"
-
-#: ../rules/base.xml.in.h:460
-msgid "Maldives"
-msgstr "Maldive"
-
-#: ../rules/base.xml.in.h:461
-msgid "Mali"
-msgstr "Mali"
-
-#: ../rules/base.xml.in.h:462
-msgid "Malta"
-msgstr "Malta"
-
-#: ../rules/base.xml.in.h:463
-msgid "Maltese keyboard with US layout"
-msgstr "Tastatura malteză cu aranjament US"
-
-#: ../rules/base.xml.in.h:464
-msgid "Mao"
-msgstr "Mao"
-
-#: ../rules/base.xml.in.h:465
-msgid "Maori"
-msgstr "Maură"
-
-#: ../rules/base.xml.in.h:466
-msgid "Mdv"
-msgstr "Mdv"
-
-#: ../rules/base.xml.in.h:467
-msgid "Memorex MX1998"
-msgstr "Memorex MX1998"
-
-#: ../rules/base.xml.in.h:468
-msgid "Memorex MX2500 EZ-Access Keyboard"
-msgstr "Tastatură Memorex MX2500 EZ-Access"
-
-#: ../rules/base.xml.in.h:469
-msgid "Memorex MX2750"
-msgstr "Memorex MX2750"
-
-#: ../rules/base.xml.in.h:470
-msgid "Menu"
-msgstr "Meniu"
-
-#: ../rules/base.xml.in.h:471
-msgid "Meta is mapped to Left Win"
-msgstr "Meta e mapat la Win stânga"
-
-#: ../rules/base.xml.in.h:472
-msgid "Meta is mapped to Win keys"
-msgstr "Meta e mapat la tastele Win"
-
-#: ../rules/base.xml.in.h:473
-msgid "Microsoft Comfort Curve Keyboard 2000"
-msgstr "Tastatură Microsoft Comfort Curve 2000"
-
-#: ../rules/base.xml.in.h:474
-msgid "Microsoft Internet Keyboard"
-msgstr "Tastatură Internet Microsoft"
-
-#: ../rules/base.xml.in.h:475
-msgid "Microsoft Internet Keyboard Pro, Swedish"
-msgstr "Tastatură Internet Microsoft Pro, suedeză"
-
-#: ../rules/base.xml.in.h:476
-msgid "Microsoft Natural"
-msgstr "Microsoft Natural"
-
-#: ../rules/base.xml.in.h:477
-msgid "Microsoft Natural Keyboard Elite"
-msgstr "Tastatură Microsoft Natural Elite"
-
-#: ../rules/base.xml.in.h:478
-msgid "Microsoft Natural Keyboard Pro / Microsoft Internet Keyboard Pro"
-msgstr "Tastatură Microsoft Natural Pro / Microsoft Internet Pro"
-
-#: ../rules/base.xml.in.h:479
-msgid "Microsoft Natural Keyboard Pro OEM"
-msgstr "Tastatură Microsoft Natural Pro OEM"
-
-#: ../rules/base.xml.in.h:480
-msgid "Microsoft Natural Keyboard Pro USB / Microsoft Internet Keyboard Pro"
-msgstr "Tastatură Microsoft Natural Pro USB / Microsoft Internet Pro"
-
-#: ../rules/base.xml.in.h:481
-msgid "Microsoft Natural Wireless Ergonomic Keyboard 7000"
-msgstr "Tastatură ergonomică Microsoft Natural Wireless 7000"
-
-#: ../rules/base.xml.in.h:482
-msgid "Microsoft Office Keyboard"
-msgstr "Tastatură pentru birou Microsoft"
-
-#: ../rules/base.xml.in.h:483
-msgid "Microsoft Wireless Multimedia Keyboard 1.0A"
-msgstr "Tastatură multimedia Microsoft Wireless 1.0A"
-
-#: ../rules/base.xml.in.h:484
-msgid "Miscellaneous compatibility options"
-msgstr "Diverse opțiuni pentru compatibilitate"
-
-#: ../rules/base.xml.in.h:485
-msgid "Mkd"
-msgstr "Mkd"
-
-#: ../rules/base.xml.in.h:486
-msgid "Mli"
-msgstr "Mli"
-
-#: ../rules/base.xml.in.h:487
-msgid "Mlt"
-msgstr "Mlt"
-
-#: ../rules/base.xml.in.h:488
-msgid "Mmr"
-msgstr "Mmr"
-
-#: ../rules/base.xml.in.h:489
-msgid "Mng"
-msgstr "Mng"
-
-#: ../rules/base.xml.in.h:490
-msgid "Mongolia"
-msgstr "Mongolia"
-
-#: ../rules/base.xml.in.h:491
-msgid "Montenegro"
-msgstr "Muntenegru"
-
-#: ../rules/base.xml.in.h:492
-msgid "Morocco"
-msgstr "Maroc"
-
-#: ../rules/base.xml.in.h:493
-msgid "Multilingual"
-msgstr "Multilingv"
-
-#: ../rules/base.xml.in.h:494
-msgid "Multilingual, first part"
-msgstr "Multilingv, prima parte"
-
-#: ../rules/base.xml.in.h:495
-msgid "Multilingual, second part"
-msgstr "Multilingv, a doua parte"
-
-#: ../rules/base.xml.in.h:496
-msgid "Myanmar"
-msgstr "Mianmar"
-
-#: ../rules/base.xml.in.h:497
-msgid "NICOLA-F style Backspace"
-msgstr "Backspace în stil NICOLA-F"
-
-#: ../rules/base.xml.in.h:498
-msgid "NLA"
-msgstr "NLA"
-
-#: ../rules/base.xml.in.h:499
-msgid "Nativo"
-msgstr "Nativo"
-
-#: ../rules/base.xml.in.h:500
-msgid "Nativo for Esperanto"
-msgstr "Nativo pentru esperanto"
-
-#: ../rules/base.xml.in.h:501
-msgid "Nativo for USA keyboards"
-msgstr "Nativo pentru tastaturile din SUA"
-
-#: ../rules/base.xml.in.h:502
-msgid "Neo 2"
-msgstr "Neo 2"
-
-#: ../rules/base.xml.in.h:503
-msgid "Nepal"
-msgstr "Nepal"
-
-#: ../rules/base.xml.in.h:504
-msgid "Netherlands"
-msgstr "Olanda"
-
-#: ../rules/base.xml.in.h:505
-msgid "New phonetic"
-msgstr "Fonetic nou"
-
-#: ../rules/base.xml.in.h:506
-msgid "Nga"
-msgstr "Nga"
-
-#: ../rules/base.xml.in.h:507
-msgid "Nigeria"
-msgstr "Nigeria"
-
-#: ../rules/base.xml.in.h:508
-msgid "Nld"
-msgstr "Ola"
-
-#: ../rules/base.xml.in.h:509
-msgid "Non-breakable space character at fourth level"
-msgstr "Caracterul spațiu indivizibil la nivelul al patrulea."
-
-#: ../rules/base.xml.in.h:510
-msgid "Non-breakable space character at fourth level, thin non-breakable space character at sixth level"
-msgstr "Caracterul spațiu indivizibil la nivelul al patrulea, caracterul spațiu mic indivizibil la nivelul al șaselea."
-
-#: ../rules/base.xml.in.h:511
-msgid "Non-breakable space character at fourth level, thin non-breakable space character at sixth level (via Ctrl+Shift)"
-msgstr "Caracterul spațiu indivizibil la nivelul al patrulea, caracterul spațiu mic indivizibil la nivelul al șaselea (prin Ctrl+Shift)"
-
-#: ../rules/base.xml.in.h:512
-msgid "Non-breakable space character at second level"
-msgstr "Caracterul spațiu indivizibil la nivelul al doilea"
-
-#: ../rules/base.xml.in.h:513
-msgid "Non-breakable space character at third level"
-msgstr "Caracterul spațiu indivizibil la nivelul al treilea"
-
-#: ../rules/base.xml.in.h:514
-msgid "Non-breakable space character at third level, nothing at fourth level"
-msgstr "Caracterul spațiu indivizibil la nivelul al treilea, nimic la nivelul al patrulea"
-
-#: ../rules/base.xml.in.h:515
-msgid "Non-breakable space character at third level, thin non-breakable space character at fourth level"
-msgstr "Caracterul spațiu indivizibil la nivelul al treilea, caracterul spațiu mic indivizibil la nivelul al patrulea"
-
-#: ../rules/base.xml.in.h:516
-msgid "Nor"
-msgstr "Nor"
-
-#: ../rules/base.xml.in.h:517
-msgid "Northern Saami"
-msgstr "Saami de Nord"
-
-#: ../rules/base.xml.in.h:518
-msgid "Northern Saami, eliminate dead keys"
-msgstr "Saami de nord, fără taste moarte"
-
-#: ../rules/base.xml.in.h:519
-msgid "Northgate OmniKey 101"
-msgstr "Northgate OmniKey 101"
-
-#: ../rules/base.xml.in.h:520
-msgid "Norway"
-msgstr "Norvegia"
-
-#: ../rules/base.xml.in.h:521
-msgid "Npl"
-msgstr "Npl"
-
-#: ../rules/base.xml.in.h:522
-msgid "NumLock"
-msgstr "NumLock"
-
-#: ../rules/base.xml.in.h:523
-msgid "Numeric keypad delete key behaviour"
-msgstr "Comportamentul tastei „Delete†din tastatura numerică"
-
-#: ../rules/base.xml.in.h:524
-msgid "Numeric keypad keys work as with Mac"
-msgstr "Tastele tastaturii numerice funcționează ca și la Mac"
-
-#: ../rules/base.xml.in.h:525
-msgid "Numeric keypad layout selection"
-msgstr "Selectare aranjament tastatură numerică"
-
-#: ../rules/base.xml.in.h:526
-msgid "OADG 109A"
-msgstr "OADG 109A"
-
-#: ../rules/base.xml.in.h:527
-msgid "OLPC"
-msgstr "OLPC"
-
-#: ../rules/base.xml.in.h:528
-msgid "OLPC Dari"
-msgstr "OLPC Dari"
-
-#: ../rules/base.xml.in.h:529
-msgid "OLPC Pashto"
-msgstr "OLPC Pashto"
-
-#: ../rules/base.xml.in.h:530
-msgid "OLPC Southern Uzbek"
-msgstr "Uzbekă de sud OLPC"
-
-#: ../rules/base.xml.in.h:531
-msgid "Occitan"
-msgstr "Occitană"
-
-#: ../rules/base.xml.in.h:532
-msgid "Ogham"
-msgstr "Ogamă"
-
-#: ../rules/base.xml.in.h:533
-msgid "Ogham IS434"
-msgstr "Ogamă IS434"
-
-#: ../rules/base.xml.in.h:534
-msgid "Oriya"
-msgstr "Oriană"
-
-#: ../rules/base.xml.in.h:535
-msgid "Ortek MCK-800 MM/Internet keyboard"
-msgstr "Tastatură Ortek MCK-800 MM/Internet"
-
-#: ../rules/base.xml.in.h:536
-msgid "Ossetian"
-msgstr "Osetiană"
-
-#: ../rules/base.xml.in.h:537
-msgid "Ossetian, Winkeys"
-msgstr "Osetiană, Winkeys"
-
-#: ../rules/base.xml.in.h:538
-msgid "Ossetian, legacy"
-msgstr "Osetiană, moștenire"
-
-#: ../rules/base.xml.in.h:539
-msgid "PC-98xx Series"
-msgstr "Seria PC-98xx"
-
-#: ../rules/base.xml.in.h:540
-msgid "Pak"
-msgstr "Pak"
-
-#: ../rules/base.xml.in.h:541
-msgid "Pakistan"
-msgstr "Pakistaneză"
-
-#: ../rules/base.xml.in.h:542
-msgid "Pannonian Rusyn Homophonic"
-msgstr "Panonică Rusyn Homofonică"
-
-#: ../rules/base.xml.in.h:543
-msgid "Pashto"
-msgstr "Pașto"
-
-#: ../rules/base.xml.in.h:544
-msgid "Pattachote"
-msgstr "Pattachote"
-
-#: ../rules/base.xml.in.h:545
-msgid "Pause"
-msgstr "Pauză"
-
-#: ../rules/base.xml.in.h:546
-msgid "Persian, with Persian Keypad"
-msgstr "Persiană, cu tastatură numerică Persiană"
-
-#: ../rules/base.xml.in.h:547
-msgid "Phonetic"
-msgstr "Fonetic"
-
-#: ../rules/base.xml.in.h:548
-msgid "Phonetic Winkeys"
-msgstr "Taste Win fonetice"
-
-#: ../rules/base.xml.in.h:549
-msgid "Pol"
-msgstr "Pol"
-
-#: ../rules/base.xml.in.h:550
-msgid "Poland"
-msgstr "Polonia"
-
-#: ../rules/base.xml.in.h:551
-msgid "Polytonic"
-msgstr "Politonic"
-
-#: ../rules/base.xml.in.h:552
-msgid "Portugal"
-msgstr "Portugalia"
-
-#: ../rules/base.xml.in.h:553
-msgid "Probhat"
-msgstr "Probhat"
-
-#: ../rules/base.xml.in.h:554
-msgid "Programmer Dvorak"
-msgstr "Dvorak pentru programatori"
-
-#: ../rules/base.xml.in.h:555
-msgid "Propeller Voyager (KTEZ-1000)"
-msgstr "Propeller Voyager (KTEZ-1000)"
-
-#: ../rules/base.xml.in.h:556
-msgid "Prt"
-msgstr "Prt"
-
-#: ../rules/base.xml.in.h:557
-msgid "PrtSc"
-msgstr "PrtSc"
-
-#: ../rules/base.xml.in.h:558
-msgid "QTronix Scorpius 98N+"
-msgstr "QTronix Scorpius 98N+"
-
-#: ../rules/base.xml.in.h:559
-msgid "Right Alt"
-msgstr "Alt dreapta"
-
-#: ../rules/base.xml.in.h:560
-msgid "Right Alt (while pressed)"
-msgstr "Alt dreapta (cât timp e apăsat)"
-
-#: ../rules/base.xml.in.h:561
-msgid "Right Alt chooses 5th level, locks when pressed together with another 5th-level-chooser"
-msgstr ""
-
-#: ../rules/base.xml.in.h:562
-msgid "Right Alt chooses 5th level, locks when pressed together with another 5th-level-chooser, one press releases the lock"
-msgstr ""
-
-#: ../rules/base.xml.in.h:563
-msgid "Right Alt key never chooses 3rd level"
-msgstr "Alt dreapta nu alege niciodata al treilea nivel"
-
-#: ../rules/base.xml.in.h:564
-msgid "Right Alt, Shift+Right Alt key is Multi_Key"
-msgstr "Tastele Alt dreapta, Shift+Alt dreapta sunt Multi_key"
-
-#: ../rules/base.xml.in.h:565
-msgid "Right Ctrl"
-msgstr "Ctrl dreapta"
-
-#: ../rules/base.xml.in.h:566
-msgid "Right Ctrl (while pressed)"
-msgstr "Ctrl dreapta (cât timp e apăsat)"
-
-#: ../rules/base.xml.in.h:567
-msgid "Right Ctrl as Right Alt"
-msgstr "Ctrl dreapta ca și Alt dreapta"
-
-#: ../rules/base.xml.in.h:568
-msgid "Right Ctrl+Right Shift"
-msgstr "Right Ctrl+Right Shift"
-
-#: ../rules/base.xml.in.h:569
-msgid "Right Shift"
-msgstr "Shift dreapta"
-
-#: ../rules/base.xml.in.h:570
-msgid "Right Win"
-msgstr "Win dreapta"
-
-#: ../rules/base.xml.in.h:571
-msgid "Right Win (while pressed)"
-msgstr "Win dreapta (cât timp e apăsat)"
-
-#: ../rules/base.xml.in.h:572
-msgid "Right Win chooses 5th level, locks when pressed together with another 5th-level-chooser"
-msgstr ""
-
-#: ../rules/base.xml.in.h:573
-msgid "Right Win chooses 5th level, locks when pressed together with another 5th-level-chooser, one press releases the lock"
-msgstr ""
-
-#: ../rules/base.xml.in.h:574
-msgid "Right hand"
-msgstr "Mâna dreaptă"
-
-#: ../rules/base.xml.in.h:575
-msgid "Right handed Dvorak"
-msgstr "Dvorak pentru mâna dreaptâ"
-
-#: ../rules/base.xml.in.h:576
-msgid "Romania"
-msgstr "România"
-
-#: ../rules/base.xml.in.h:577
-msgid "Romanian keyboard with German letters"
-msgstr "Tastatură românească cu litere germane"
-
-#: ../rules/base.xml.in.h:578
-msgid "Romanian keyboard with German letters, eliminate dead keys"
-msgstr "Tastatură românească cu caractere germane, fără taste moarte"
-
-#: ../rules/base.xml.in.h:579
-msgid "Rou"
-msgstr "Rom"
-
-#: ../rules/base.xml.in.h:580
-msgid "Rus"
-msgstr "Rus"
-
-#: ../rules/base.xml.in.h:581
-msgid "Russia"
-msgstr "Rusia"
-
-#: ../rules/base.xml.in.h:582
-msgid "Russian"
-msgstr "Rusă"
-
-#: ../rules/base.xml.in.h:583
-msgid "Russian phonetic"
-msgstr "Rusă fonetică"
-
-#: ../rules/base.xml.in.h:584
-msgid "Russian phonetic Dvorak"
-msgstr "Rusă fonetică Dvorak"
-
-#: ../rules/base.xml.in.h:585
-msgid "Russian phonetic, eliminate dead keys"
-msgstr "Rusă fonetică, fără taste moarte"
-
-#: ../rules/base.xml.in.h:586
-msgid "Russian with Kazakh"
-msgstr "Rusă cu cazacă"
-
-#: ../rules/base.xml.in.h:587
-msgid "SILVERCREST Multimedia Wireless Keyboard"
-msgstr "Tastatură SILVERCREST Multimedia Wireless"
-
-#: ../rules/base.xml.in.h:588
-msgid "SK-1300"
-msgstr "SK-1300"
-
-#: ../rules/base.xml.in.h:589
-msgid "SK-2500"
-msgstr "SK-2500"
-
-#: ../rules/base.xml.in.h:590
-msgid "SK-6200"
-msgstr "SK-6200"
-
-#: ../rules/base.xml.in.h:591
-msgid "SK-7100"
-msgstr "SK-7100"
-
-#: ../rules/base.xml.in.h:592 ../rules/base.extras.xml.in.h:7
-msgid "SRB"
-msgstr "SRB"
-
-#: ../rules/base.xml.in.h:593
-msgid "SVEN Ergonomic 2500"
-msgstr "SVEN Ergonomic 2500"
-
-#: ../rules/base.xml.in.h:594
-msgid "SVEN Slim 303"
-msgstr "SVEN Slim 303"
-
-#: ../rules/base.xml.in.h:595
-msgid "Samsung SDM 4500P"
-msgstr "Samsung SDM 4500P"
-
-#: ../rules/base.xml.in.h:596
-msgid "Samsung SDM 4510P"
-msgstr "Samsung SDM 4510P"
-
-#: ../rules/base.xml.in.h:597
-msgid "ScrollLock"
-msgstr "ScrollLock"
-
-#: ../rules/base.xml.in.h:598
-msgid "Secwepemctsin"
-msgstr "Secwepemctsin"
-
-#: ../rules/base.xml.in.h:599
-msgid "Semi-colon on third level"
-msgstr "Punct și virgulă la al treilea nivel"
-
-#: ../rules/base.xml.in.h:600
-msgid "Sen"
-msgstr "Sen"
-
-#: ../rules/base.xml.in.h:601
-msgid "Senegal"
-msgstr "Senegal"
-
-#: ../rules/base.xml.in.h:602 ../rules/base.extras.xml.in.h:8
-msgid "Serbia"
-msgstr "Serbia"
-
-#: ../rules/base.xml.in.h:603
-msgid "Serbian"
-msgstr "Sârbă"
-
-#: ../rules/base.xml.in.h:604
-msgid "Shift cancels CapsLock"
-msgstr "Shift anulează CapsLock"
-
-#: ../rules/base.xml.in.h:605
-msgid "Shift does not cancel NumLock, chooses 3rd level instead"
-msgstr "Shift nu anulează NumLock, ci alege al treilea nivel"
-
-#: ../rules/base.xml.in.h:606
-msgid "Shift with numeric keypad keys works as in MS Windows"
-msgstr "Shift cu tastatura numerică funcționează ca și în MS Windows"
-
-#: ../rules/base.xml.in.h:607
-msgid "Shift+CapsLock"
-msgstr "Shift+CapsLock"
-
-#: ../rules/base.xml.in.h:608
-msgid "Simple"
-msgstr "Simplu"
-
-#: ../rules/base.xml.in.h:609
-msgid "Slovakia"
-msgstr "Slovacia"
-
-#: ../rules/base.xml.in.h:610
-msgid "Slovenia"
-msgstr "Slovenia"
-
-#: ../rules/base.xml.in.h:611
-msgid "South Africa"
-msgstr "Africa de Sud"
-
-#: ../rules/base.xml.in.h:612
-msgid "Southern Uzbek"
-msgstr "Uzbecă de sud"
-
-#: ../rules/base.xml.in.h:613
-msgid "Spain"
-msgstr "Spania"
-
-#: ../rules/base.xml.in.h:614
-msgid "Special keys (Ctrl+Alt+&lt;key&gt;) handled in a server"
-msgstr "Taste speciale (Ctrl+Alt+&lt;key&gt;) operate într-un server."
-
-#: ../rules/base.xml.in.h:615
-msgid "Sri Lanka"
-msgstr "Sri Lanka"
-
-#: ../rules/base.xml.in.h:616
-msgid "Standard"
-msgstr "Standard"
-
-#: ../rules/base.xml.in.h:617
-msgid "Standard (Cedilla)"
-msgstr "Standard (sedile)"
-
-#. RSTU 2019-91
-#: ../rules/base.xml.in.h:619
-msgid "Standard RSTU"
-msgstr "RSTU standard"
-
-#. RSTU 2019-91
-#: ../rules/base.xml.in.h:621
-msgid "Standard RSTU on Russian layout"
-msgstr "RSTU standard pe aranjamentul rusesc"
-
-#: ../rules/base.xml.in.h:622
-msgid "Sun Type 5/6"
-msgstr "Sun Type 5/6"
-
-#: ../rules/base.xml.in.h:623
-msgid "Sun dead keys"
-msgstr "Taste moarte Sun"
-
-#: ../rules/base.xml.in.h:624
-msgid "Super Power Multimedia Keyboard"
-msgstr "Tastatură multimedia Super Power"
-
-#: ../rules/base.xml.in.h:625
-msgid "Svdvorak"
-msgstr "Svdvorak"
-
-#: ../rules/base.xml.in.h:626
-msgid "Svk"
-msgstr "Svc"
-
-#: ../rules/base.xml.in.h:627
-msgid "Svn"
-msgstr "Svn"
-
-#: ../rules/base.xml.in.h:628
-msgid "Swap Ctrl and CapsLock"
-msgstr "Interschimbă Ctrl cu CapsLock"
-
-#: ../rules/base.xml.in.h:629
-msgid "Swap ESC and CapsLock"
-msgstr "Interschimbă ESC cu CapsLock"
-
-#: ../rules/base.xml.in.h:630
-msgid "Swe"
-msgstr "Sue"
-
-#: ../rules/base.xml.in.h:631
-msgid "Sweden"
-msgstr "Suedia"
-
-#: ../rules/base.xml.in.h:632
-msgid "Switzerland"
-msgstr "Elveția"
-
-#: ../rules/base.xml.in.h:633
-msgid "Symplon PaceBook (tablet PC)"
-msgstr "Symplon PaceBook (tabletă PC)"
-
-#: ../rules/base.xml.in.h:634
-msgid "Syr"
-msgstr "Sir"
-
-#: ../rules/base.xml.in.h:635
-msgid "Syria"
-msgstr "Siria"
-
-#: ../rules/base.xml.in.h:636
-msgid "Syriac"
-msgstr "Siriană"
-
-#: ../rules/base.xml.in.h:637
-msgid "Syriac phonetic"
-msgstr "Siriană fonetică"
-
-#: ../rules/base.xml.in.h:638
-msgid "TIS-820.2538"
-msgstr "TIS-820.2538"
-
-#: ../rules/base.xml.in.h:639
-msgid "Tajikistan"
-msgstr "Tajikistan"
-
-#: ../rules/base.xml.in.h:640
-msgid "Tamil"
-msgstr "Tamilă"
-
-#: ../rules/base.xml.in.h:641
-msgid "Tamil Keyboard with Numerals"
-msgstr "Tastatură Tamil cu cifre"
-
-#: ../rules/base.xml.in.h:642
-msgid "Tamil TAB Typewriter"
-msgstr "Mașină de scris Tamil TAB"
-
-#: ../rules/base.xml.in.h:643
-msgid "Tamil TSCII Typewriter"
-msgstr "Mașină de scris Tamil TSCII"
-
-#: ../rules/base.xml.in.h:644
-msgid "Tamil Unicode"
-msgstr "Unicode tamil"
-
-#: ../rules/base.xml.in.h:645
-msgid "Tanzania"
-msgstr "Tanzania"
-
-#: ../rules/base.xml.in.h:646
-msgid "Targa Visionary 811"
-msgstr "Targa Visionary 811"
-
-#: ../rules/base.xml.in.h:647
-msgid "Tatar"
-msgstr "Tătară"
-
-#: ../rules/base.xml.in.h:648
-msgid "Telugu"
-msgstr "Teluguă"
-
-#: ../rules/base.xml.in.h:649
-msgid "Tha"
-msgstr "Tha"
-
-#: ../rules/base.xml.in.h:650
-msgid "Thailand"
-msgstr "Tailanda"
-
-#: ../rules/base.xml.in.h:651
-msgid "Tibetan"
-msgstr "Tibetană"
-
-#: ../rules/base.xml.in.h:652
-msgid "Tibetan (with ASCII numerals)"
-msgstr "Tibetană (cu numerale ASCII)"
-
-#: ../rules/base.xml.in.h:653
-msgid "Tifinagh"
-msgstr "Tifinag"
-
-#: ../rules/base.xml.in.h:654
-msgid "Tifinagh Alternative"
-msgstr "Tifinagh alternativ"
-
-#: ../rules/base.xml.in.h:655
-msgid "Tifinagh Alternative Phonetic"
-msgstr "Tifinagh alternativ fonetic"
-
-#: ../rules/base.xml.in.h:656
-msgid "Tifinagh Extended"
-msgstr "Tifinagh extins"
-
-#: ../rules/base.xml.in.h:657
-msgid "Tifinagh Extended Phonetic"
-msgstr "Tifinagh fonetic extins"
-
-#: ../rules/base.xml.in.h:658
-msgid "Tifinagh Phonetic"
-msgstr "Tifinagh fonetic"
-
-#: ../rules/base.xml.in.h:659
-msgid "Tilde (~) variant"
-msgstr "Variantă tilda (~)"
-
-#: ../rules/base.xml.in.h:660
-msgid "Tjk"
-msgstr "Tjk"
-
-#: ../rules/base.xml.in.h:661
-msgid "Tkm"
-msgstr "Tkm"
-
-#: ../rules/base.xml.in.h:662
-msgid "To the corresponding key in a Dvorak keyboard."
-msgstr "La tasta corespunzătoare pentru o tastatură Dvorak."
-
-#: ../rules/base.xml.in.h:663
-msgid "To the corresponding key in a Qwerty keyboard."
-msgstr "La tasta corespunzătoare pentru o tastatură Qwerty."
-
-#: ../rules/base.xml.in.h:664
-msgid "Toshiba Satellite S3000"
-msgstr "Toshiba Satellite S3000"
-
-#: ../rules/base.xml.in.h:665
-msgid "Traditional phonetic"
-msgstr "Fonetic tradițional"
-
-#: ../rules/base.xml.in.h:666
-msgid "Trust Direct Access Keyboard"
-msgstr "Tastatură Trust Direct Access"
-
-#: ../rules/base.xml.in.h:667
-msgid "Trust Slimline"
-msgstr "Trust Slimline"
-
-#: ../rules/base.xml.in.h:668
-msgid "Trust Wireless Keyboard Classic"
-msgstr "Tastatură Trust Wireless Classic"
-
-#: ../rules/base.xml.in.h:669
-msgid "Tur"
-msgstr "Tur"
-
-#: ../rules/base.xml.in.h:670
-msgid "Turkey"
-msgstr "Turcia"
-
-#: ../rules/base.xml.in.h:671
-msgid "Turkmenistan"
-msgstr "Turkmenistan"
-
-#: ../rules/base.xml.in.h:672
-msgid "TypeMatrix EZ-Reach 2020"
-msgstr "TypeMatrix EZ-Reach 2020"
-
-#: ../rules/base.xml.in.h:673
-msgid "TypeMatrix EZ-Reach 2030 PS2"
-msgstr "TypeMatrix EZ-Reach 2030 PS2"
-
-#: ../rules/base.xml.in.h:674
-msgid "TypeMatrix EZ-Reach 2030 USB"
-msgstr "TypeMatrix EZ-Reach 2030 USB"
-
-#: ../rules/base.xml.in.h:675
-msgid "TypeMatrix EZ-Reach 2030 USB (102/105:EU mode)"
-msgstr "TypeMatrix EZ-Reach 2030 USB (mod 102/105:EU)"
-
-#: ../rules/base.xml.in.h:676
-msgid "TypeMatrix EZ-Reach 2030 USB (106:JP mode)"
-msgstr "TypeMatrix EZ-Reach 2030 USB (mod 106:JP)"
-
-#: ../rules/base.xml.in.h:677
-msgid "Typewriter"
-msgstr "Mașină de scris"
-
-#: ../rules/base.xml.in.h:678
-msgid "Typewriter, legacy"
-msgstr "Mașină de scrie, moștenire"
-
-#: ../rules/base.xml.in.h:679
-msgid "Tza"
-msgstr "Tza"
-
-#: ../rules/base.xml.in.h:680
-msgid "UCW layout (accented letters only)"
-msgstr "Aranjament UCW (doar caracterele cu accent)"
-
-#: ../rules/base.xml.in.h:681
-msgid "US Dvorak with CZ UCW support"
-msgstr "US Dvorak cu suport CZ UCW"
-
-#: ../rules/base.xml.in.h:682
-msgid "US keyboard with Bosnian digraphs"
-msgstr "Tastatură US cu diagrame bosniace"
-
-#: ../rules/base.xml.in.h:683
-msgid "US keyboard with Bosnian letters"
-msgstr "Tastatură SUA cu litere bosniace"
-
-#: ../rules/base.xml.in.h:684
-msgid "US keyboard with Croatian digraphs"
-msgstr "Tastatură US cu diagrame croate"
-
-#: ../rules/base.xml.in.h:685
-msgid "US keyboard with Croatian letters"
-msgstr "Tastatură SUA cu litere croate"
-
-#: ../rules/base.xml.in.h:686
-msgid "US keyboard with Estonian letters"
-msgstr "Tastatură SUA cu litere estoniene"
-
-#: ../rules/base.xml.in.h:687
-msgid "US keyboard with Italian letters"
-msgstr "Tastatură US cu litere italiene"
-
-#: ../rules/base.xml.in.h:688
-msgid "US keyboard with Lithuanian letters"
-msgstr "Tastatură SUA cu litere lituaniene"
-
-#: ../rules/base.xml.in.h:689
-msgid "US keyboard with Slovenian letters"
-msgstr "Tastatură SUA cu litere slovene"
-
-#: ../rules/base.xml.in.h:690 ../rules/base.extras.xml.in.h:9
-msgid "USA"
-msgstr "SUA"
-
-#: ../rules/base.xml.in.h:691
-msgid "Udmurt"
-msgstr "Udmurtă"
-
-#: ../rules/base.xml.in.h:692
-msgid "Ukr"
-msgstr "Ukr"
-
-#: ../rules/base.xml.in.h:693
-msgid "Ukraine"
-msgstr "Ucraina"
-
-#: ../rules/base.xml.in.h:694
-msgid "Unicode additions (arrows and math operators)"
-msgstr "Adăugări Unicode (săgeți și operatori matematici)"
-
-#: ../rules/base.xml.in.h:695
-msgid "Unicode additions (arrows and math operators). Math operators on default level"
-msgstr "Adăugări Unicode (săgeți și operatori matematici). Operatorii matematici sunt pe nivelul prestabilit"
-
-#: ../rules/base.xml.in.h:696
-msgid "UnicodeExpert"
-msgstr "UnicodeExpert"
-
-#: ../rules/base.xml.in.h:697
-msgid "United Kingdom"
-msgstr "Regatul Unit al Marii Britanii"
-
-#: ../rules/base.xml.in.h:698
-msgid "Unitek KB-1925"
-msgstr "Unitek KB-1925"
-
-#: ../rules/base.xml.in.h:699
-msgid "Urdu, Alternative phonetic"
-msgstr "Urdu, fonetic alternativ"
-
-#: ../rules/base.xml.in.h:700
-msgid "Urdu, Phonetic"
-msgstr "Urdu, fonetică"
-
-#: ../rules/base.xml.in.h:701
-msgid "Urdu, Winkeys"
-msgstr "Urdu, Winkeys"
-
-#: ../rules/base.xml.in.h:702
-msgid "Use Bosnian digraphs"
-msgstr "Utilizează diagrame bosniace"
-
-#: ../rules/base.xml.in.h:703
-msgid "Use Croatian digraphs"
-msgstr "Utilizează diagrame croate"
-
-#: ../rules/base.xml.in.h:704
-msgid "Use guillemets for quotes"
-msgstr "Utilizează ghilimele francez pentru citate"
-
-#: ../rules/base.xml.in.h:705
-msgid "Use keyboard LED to show alternative layout"
-msgstr "Indică aranjamentul alternativ cu ajutorul LED-urilor tastaturii"
-
-#: ../rules/base.xml.in.h:706
-msgid "Using space key to input non-breakable space character"
-msgstr "Utilizează tasta spațiu la introducerea caracterului spațiu indivizibil"
-
-#: ../rules/base.xml.in.h:707
-msgid "Usual space at any level"
-msgstr "Utilizează spațiu la orice nivel"
-
-#: ../rules/base.xml.in.h:708
-msgid "Uzb"
-msgstr "Uzb"
-
-#: ../rules/base.xml.in.h:709
-msgid "Uzbekistan"
-msgstr "Uzbekistan"
-
-#: ../rules/base.xml.in.h:710
-msgid "Vietnam"
-msgstr "Vietnam"
-
-#: ../rules/base.xml.in.h:711
-msgid "ViewSonic KU-306 Internet Keyboard"
-msgstr "Tastatură Internet ViewSonic KU-306"
-
-#: ../rules/base.xml.in.h:712
-msgid "Vnm"
-msgstr "Vnm"
-
-#: ../rules/base.xml.in.h:713
-msgid "Wang 724 keypad with unicode additions (arrows and math operators)"
-msgstr "Tastatură Wang 724 cu adăugări unicode (săgeți și operatori matematici)"
-
-#: ../rules/base.xml.in.h:714
-msgid "Wang 724 keypad with unicode additions (arrows and math operators). Math operators on default level"
-msgstr "Tastatură Wang 724 cu adăugări unicode (săgeți și operatori matematici). Operatorii matematici sunt pe nivelul prestabilit"
-
-#: ../rules/base.xml.in.h:715
-msgid "Wang model 724 azerty"
-msgstr "Wang model 724 azerty"
-
-#: ../rules/base.xml.in.h:716
-msgid "Western"
-msgstr "Occidental"
-
-#: ../rules/base.xml.in.h:717
-msgid "Winbook Model XP5"
-msgstr "Winbook Model XP5"
-
-#: ../rules/base.xml.in.h:718
-msgid "Winkeys"
-msgstr "Winkeys"
-
-#: ../rules/base.xml.in.h:719
-msgid "With &lt;\\|&gt; key"
-msgstr "Cu tastele &lt;\\|&gt;"
-
-#: ../rules/base.xml.in.h:720
-msgid "With EuroSign on 5"
-msgstr "Cu Semn Euro pe tasta 5"
-
-#: ../rules/base.xml.in.h:721
-msgid "With guillemets"
-msgstr "Cu ghilimele franceze"
-
-#: ../rules/base.xml.in.h:722
-msgid "Yahoo! Internet Keyboard"
-msgstr "Tastatură Yahoo! Internet"
-
-#: ../rules/base.xml.in.h:723
-msgid "Yakut"
-msgstr "Iacută"
-
-#: ../rules/base.xml.in.h:724
-msgid "Yoruba"
-msgstr "Iorubă"
-
-#: ../rules/base.xml.in.h:725
-msgid "Z and ZHE swapped"
-msgstr "Z și ZHE interschimbate"
-
-#: ../rules/base.xml.in.h:726
-msgid "Zaf"
-msgstr "Zaf"
-
-#: ../rules/base.xml.in.h:727
-msgid "Zero-width non-joiner character at second level"
-msgstr ""
-
-#: ../rules/base.xml.in.h:728
-msgid "Zero-width non-joiner character at second level, non-breakable space character at third level"
-msgstr ""
-
-#: ../rules/base.xml.in.h:729
-msgid "Zero-width non-joiner character at second level, non-breakable space character at third level, nothing at fourth level"
-msgstr ""
-
-#: ../rules/base.xml.in.h:730
-msgid "Zero-width non-joiner character at second level, non-breakable space character at third level, thin non-breakable space at fourth level"
-msgstr ""
-
-#: ../rules/base.xml.in.h:731
-msgid "Zero-width non-joiner character at second level, non-breakable space character at third level, zero-width joiner at fourth level"
-msgstr ""
-
-#: ../rules/base.xml.in.h:732
-msgid "Zero-width non-joiner character at second level, zero-width joiner character at third level"
-msgstr ""
-
-#: ../rules/base.xml.in.h:733
-msgid "Zero-width non-joiner character at second level, zero-width joiner character at third level, non-breakable space character at fourth level"
-msgstr ""
-
-#: ../rules/base.xml.in.h:734
-msgid "Zero-width non-joiner character at third level, zero-width joiner at fourth level"
-msgstr ""
-
-#: ../rules/base.xml.in.h:735
-msgid "azerty"
-msgstr "azerty"
-
-#: ../rules/base.xml.in.h:736
-msgid "azerty/digits"
-msgstr "azerty/cifre"
-
-#: ../rules/base.xml.in.h:737
-msgid "digits"
-msgstr "cifre"
-
-#: ../rules/base.xml.in.h:738
-msgid "displaced semicolon and quote (obsolete)"
-msgstr "punct și virgulă și ghilimele strămutate (învechit)."
-
-#: ../rules/base.xml.in.h:739
-msgid "lyx"
-msgstr "lyx"
-
-#: ../rules/base.xml.in.h:740
-msgid "qwerty"
-msgstr "qwerty"
-
-#: ../rules/base.xml.in.h:741
-msgid "qwerty, extended Backslash"
-msgstr "qwerty, Backslash extins"
-
-#: ../rules/base.xml.in.h:742
-msgid "qwerty/digits"
-msgstr "qwerty/cifre"
-
-#: ../rules/base.xml.in.h:743
-msgid "qwertz"
-msgstr "qwertz"
-
-#: ../rules/base.extras.xml.in.h:1
-msgid "APL"
-msgstr "APL"
-
-#: ../rules/base.extras.xml.in.h:2
-msgid "Atsina"
-msgstr "Atsina"
-
-#: ../rules/base.extras.xml.in.h:3
-msgid "Combining accents instead of dead keys"
-msgstr ""
-
-#: ../rules/base.extras.xml.in.h:4
-msgid "Couer D'alene Salish"
-msgstr "Couer D'alene Salish"
-
-#: ../rules/base.extras.xml.in.h:5
-msgid "International (AltGr Unicode combining)"
-msgstr ""
-
-#: ../rules/base.extras.xml.in.h:6
-msgid "International (AltGr Unicode combining, alternative)"
-msgstr ""
-
-#~ msgid "ACPI Standard"
-#~ msgstr "ACPI Standard"
-
-#~ msgid "Alternative international (former us_intl)"
-#~ msgstr "Alternativ internațional (fostul us_intl)"
-
-#~ msgid "Ban"
-#~ msgstr "Ban"
-
-#~ msgid "Bhu"
-#~ msgstr "But"
-
-#~ msgid "Caps Lock"
-#~ msgstr "Caps Lock"
-
-#~ msgid "DRC"
-#~ msgstr "DRC"
-
-#~ msgid "Dan"
-#~ msgstr "Dan"
-
-#~ msgid "Dvorak international"
-#~ msgstr "Dvorak internațională"
-
-#~ msgid "Evdev-managed keyboard"
-#~ msgstr "Tastatură Evdev-managed"
-
-#~ msgid "Fao"
-#~ msgstr "Fer"
-
-#~ msgid "Gre"
-#~ msgstr "Gre"
-
-#~ msgid "Group toggle on multiply/divide key"
-#~ msgstr "Grupează comutatorul la tasta de înmulțire/împărțire"
-
-#~ msgid "Gui"
-#~ msgstr "Gui"
-
-#~ msgid "Indigenous"
-#~ msgstr "Indigen"
-
-#~ msgid "Laos - STEA (proposed standard layout)"
-#~ msgstr "Laos - STEA (propunere de aranjament standard)"
-
-#~ msgid "Lav"
-#~ msgstr "Let"
-
-#~ msgid "Less-than/Greater-than"
-#~ msgstr "Mai mic ca/mai mare ca"
-
-#~ msgid "Mal"
-#~ msgstr "Mal"
-
-#~ msgid "Nep"
-#~ msgstr "Nep"
-
-#~ msgid "Nig"
-#~ msgstr "Nig"
-
-#~ msgid "Saisiyat"
-#~ msgstr "Saisiyat"
-
-#~ msgid "Scroll Lock"
-#~ msgstr "Scroll Lock"
-
-#~ msgid "SrL"
-#~ msgstr "SrL"
-
-#~ msgid "Taiwan"
-#~ msgstr "Taiwan"
-
-#~ msgid "Twn"
-#~ msgstr "Twn"
-
-#~ msgid "Zar"
-#~ msgstr "Zar"
+# Romanian translation for xkeyboard-config
+# Copyright (c) 2009 Rosetta Contributors and Canonical Ltd 2009
+# This file is distributed under the same license as the xkeyboard-config package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2009.
+# Lucian Adrian Grijincu <lucian.grijincu@gmail.com>, 2010.
+msgid ""
+msgstr ""
+"Project-Id-Version: xkeyboard-config 1.9\n"
+"Report-Msgid-Bugs-To: svu@users.sourceforge.net\n"
+"POT-Creation-Date: 2010-05-11 21:34+0100\n"
+"PO-Revision-Date: 2010-08-06 23:36+0300\n"
+"Last-Translator: Lucian Adrian Grijincu <lucian.grijincu@gmail.com>\n"
+"Language-Team: Romanian <translation-team-ro@lists.sourceforge.net>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Language: ro\n"
+"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : (n==0 || (n%100 > 0 && n%100 < 20)) ? 1 : 2);;\n"
+"X-Generator: Virtaal 0.6.1\n"
+"X-Launchpad-Export-Date: 2010-08-06 19:56+0000\n"
+
+#: ../rules/base.xml.in.h:1
+msgid "&lt;Less/Greater&gt;"
+msgstr "&lt;Mai mic/Mai mare&gt;"
+
+#: ../rules/base.xml.in.h:2
+msgid "&lt;Less/Greater&gt; chooses 5th level, locks when pressed together with another 5th-level-chooser"
+msgstr ""
+
+#: ../rules/base.xml.in.h:3
+msgid "&lt;Less/Greater&gt; chooses 5th level, locks when pressed together with another 5th-level-chooser, one press releases the lock"
+msgstr ""
+
+#: ../rules/base.xml.in.h:4
+msgid "(F)"
+msgstr "(F)"
+
+#: ../rules/base.xml.in.h:5
+msgid "(Legacy) Alternative"
+msgstr "(Moștenire) Alternativ"
+
+#: ../rules/base.xml.in.h:6
+msgid "(Legacy) Alternative, Sun dead keys"
+msgstr "(Moștenire) Alternativ, taste învechite de la Sun"
+
+#: ../rules/base.xml.in.h:7
+msgid "(Legacy) Alternative, eliminate dead keys"
+msgstr "(Moștenire) Alternative, elimină tastele învechite"
+
+#: ../rules/base.xml.in.h:8
+msgid "101/104 key Compatible"
+msgstr "Compatibil cu tasta 101/104"
+
+#: ../rules/base.xml.in.h:9
+msgid "101/qwerty/comma/Dead keys"
+msgstr "101/qwerty/virgulă/Taste moarte"
+
+#: ../rules/base.xml.in.h:10
+msgid "101/qwerty/comma/Eliminate dead keys"
+msgstr "101/qwerty/virgulă/Elimină tastele moarte"
+
+#: ../rules/base.xml.in.h:11
+msgid "101/qwerty/dot/Dead keys"
+msgstr "101/qwerty/punct/Taste moarte"
+
+#: ../rules/base.xml.in.h:12
+msgid "101/qwerty/dot/Eliminate dead keys"
+msgstr "101/qwerty/punct/Elimină tastele moarte"
+
+#: ../rules/base.xml.in.h:13
+msgid "101/qwertz/comma/Dead keys"
+msgstr "101/qwertz/virgulă/Taste moarte"
+
+#: ../rules/base.xml.in.h:14
+msgid "101/qwertz/comma/Eliminate dead keys"
+msgstr "101/qwertz/virgulă/Elimină tastele moarte"
+
+#: ../rules/base.xml.in.h:15
+msgid "101/qwertz/dot/Dead keys"
+msgstr "101/qwertz/punct/Taste moarte"
+
+#: ../rules/base.xml.in.h:16
+msgid "101/qwertz/dot/Eliminate dead keys"
+msgstr "101/qwertz/punct/Elimină tastele moarte"
+
+#: ../rules/base.xml.in.h:17
+msgid "102/qwerty/comma/Dead keys"
+msgstr "102/qwerty/virgulă/Taste moarte"
+
+#: ../rules/base.xml.in.h:18
+msgid "102/qwerty/comma/Eliminate dead keys"
+msgstr "102/qwerty/virgulă/Elimină tastele moarte"
+
+#: ../rules/base.xml.in.h:19
+msgid "102/qwerty/dot/Dead keys"
+msgstr "102/qwerty/punct/Taste moarte"
+
+#: ../rules/base.xml.in.h:20
+msgid "102/qwerty/dot/Eliminate dead keys"
+msgstr "102/qwerty/punct/Elimină tastele moarte"
+
+#: ../rules/base.xml.in.h:21
+msgid "102/qwertz/comma/Dead keys"
+msgstr "102/qwertz/virgulă/Taste moarte"
+
+#: ../rules/base.xml.in.h:22
+msgid "102/qwertz/comma/Eliminate dead keys"
+msgstr "102/qwertz/virgulă/Elimină tastele moarte"
+
+#: ../rules/base.xml.in.h:23
+msgid "102/qwertz/dot/Dead keys"
+msgstr "102/qwertz/punct/Taste moarte"
+
+#: ../rules/base.xml.in.h:24
+msgid "102/qwertz/dot/Eliminate dead keys"
+msgstr "102/qwertz/punct/Elimină tastele moarte"
+
+#: ../rules/base.xml.in.h:25
+msgid "2"
+msgstr "2"
+
+#: ../rules/base.xml.in.h:26
+msgid "4"
+msgstr "4"
+
+#: ../rules/base.xml.in.h:27
+msgid "5"
+msgstr "5"
+
+#: ../rules/base.xml.in.h:28
+msgid "A4Tech KB-21"
+msgstr "A4Tech KB-21"
+
+#: ../rules/base.xml.in.h:29
+msgid "A4Tech KBS-8"
+msgstr "A4Tech KBS-8"
+
+#: ../rules/base.xml.in.h:30
+msgid "A4Tech Wireless Desktop RFKB-23"
+msgstr "A4Tech Wireless Desktop RFKB-23"
+
+#: ../rules/base.xml.in.h:31
+msgid "ATM/phone-style"
+msgstr "ATM/phone-style"
+
+#: ../rules/base.xml.in.h:32
+msgid "Acer AirKey V"
+msgstr "Acer AirKey V"
+
+#: ../rules/base.xml.in.h:33
+msgid "Acer C300"
+msgstr "Acer C300"
+
+#: ../rules/base.xml.in.h:34
+msgid "Acer Ferrari 4000"
+msgstr "Acer Ferrari 4000"
+
+#: ../rules/base.xml.in.h:35
+msgid "Acer Laptop"
+msgstr "Laptop Acer"
+
+#: ../rules/base.xml.in.h:36
+msgid "Add the standard behavior to Menu key"
+msgstr "Adaugă comportamentul standard la tasta Meniu"
+
+#: ../rules/base.xml.in.h:37
+msgid "Adding Esperanto circumflexes (supersigno)"
+msgstr "Adăugare circumflexe esperanto (supersigno)"
+
+#: ../rules/base.xml.in.h:38
+msgid "Adding EuroSign to certain keys"
+msgstr "Adăugare Semn Euro la anumite taste"
+
+#: ../rules/base.xml.in.h:39
+msgid "Advance Scorpius KI"
+msgstr "Advance Scorpius KI"
+
+#: ../rules/base.xml.in.h:40
+msgid "Afg"
+msgstr "Afg"
+
+#: ../rules/base.xml.in.h:41
+msgid "Afghanistan"
+msgstr "Afganistan"
+
+#: ../rules/base.xml.in.h:42
+msgid "Akan"
+msgstr "Akană"
+
+#: ../rules/base.xml.in.h:43
+msgid "Alb"
+msgstr "Alb"
+
+#: ../rules/base.xml.in.h:44
+msgid "Albania"
+msgstr "Albania"
+
+#: ../rules/base.xml.in.h:45
+msgid "Alt and Meta are on Alt keys"
+msgstr "Alt și Meta sunt pe tastele Alt"
+
+#: ../rules/base.xml.in.h:46
+msgid "Alt is mapped to Right Win, Super to Menu"
+msgstr "Alt e mapat la tasta Win stângă, Super la Meniu"
+
+#: ../rules/base.xml.in.h:47
+msgid "Alt+CapsLock"
+msgstr "Alt+CapsLock"
+
+#: ../rules/base.xml.in.h:48
+msgid "Alt+Ctrl"
+msgstr "Alt+Ctrl"
+
+#: ../rules/base.xml.in.h:49
+msgid "Alt+Shift"
+msgstr "Alt+Shift"
+
+#: ../rules/base.xml.in.h:50
+msgid "Alt+Space"
+msgstr "Alt+Spațiu"
+
+#: ../rules/base.xml.in.h:51
+msgid "Alt-Q"
+msgstr "Alt-Q"
+
+#: ../rules/base.xml.in.h:52
+msgid "Alt/Win key behavior"
+msgstr "Comportamentul tastelor Alt/Win"
+
+#: ../rules/base.xml.in.h:53
+msgid "Alternative"
+msgstr "Alternativ"
+
+#: ../rules/base.xml.in.h:54
+msgid "Alternative Eastern"
+msgstr "Alternativ estic"
+
+#: ../rules/base.xml.in.h:55
+msgid "Alternative Phonetic"
+msgstr "Alternativ fonetic"
+
+#: ../rules/base.xml.in.h:56
+msgid "Alternative international"
+msgstr "Alternativ internațională"
+
+#: ../rules/base.xml.in.h:57
+msgid "Alternative, Sun dead keys"
+msgstr "Alternativ, taste moarte Sun"
+
+#: ../rules/base.xml.in.h:58
+msgid "Alternative, eliminate dead keys"
+msgstr "Alternativ, elimină tastele moarte"
+
+#: ../rules/base.xml.in.h:59
+msgid "Alternative, latin-9 only"
+msgstr "Alternativ, doar latin-9"
+
+#: ../rules/base.xml.in.h:60
+msgid "And"
+msgstr "And"
+
+#: ../rules/base.xml.in.h:61
+msgid "Andorra"
+msgstr "Andora"
+
+#: ../rules/base.xml.in.h:62
+msgid "Any Alt key"
+msgstr "Oricare tastă Alt"
+
+#: ../rules/base.xml.in.h:63
+msgid "Any Win key"
+msgstr "Oricare tastă Win"
+
+#: ../rules/base.xml.in.h:64
+msgid "Any Win key (while pressed)"
+msgstr "Oricare tastă Win (cât timp e apăsată)"
+
+#: ../rules/base.xml.in.h:65
+msgid "Apostrophe (') variant"
+msgstr "Variantă apostrof (')"
+
+#: ../rules/base.xml.in.h:66
+msgid "Apple"
+msgstr "Apple"
+
+#: ../rules/base.xml.in.h:67
+msgid "Apple Aluminium Keyboard (ANSI)"
+msgstr "Tastatură Apple Aluminium (ANSI)"
+
+#: ../rules/base.xml.in.h:68
+msgid "Apple Aluminium Keyboard (ISO)"
+msgstr "Tastatură Apple Aluminium (ISO)"
+
+#: ../rules/base.xml.in.h:69
+msgid "Apple Aluminium Keyboard (JIS)"
+msgstr "Tastatură Apple Aluminium (JIS)"
+
+#: ../rules/base.xml.in.h:70
+msgid "Apple Aluminium Keyboard: emulate PC keys (Print, Scroll_Lock, Pause, NumLock)"
+msgstr ""
+
+#: ../rules/base.xml.in.h:71
+msgid "Apple Laptop"
+msgstr "Laptop Apple"
+
+#: ../rules/base.xml.in.h:72
+msgid "Ara"
+msgstr "Ara"
+
+#: ../rules/base.xml.in.h:73
+msgid "Arabic"
+msgstr "Arabă"
+
+#: ../rules/base.xml.in.h:74
+msgid "Arm"
+msgstr "Arm"
+
+#: ../rules/base.xml.in.h:75
+msgid "Armenia"
+msgstr "Armenia"
+
+#: ../rules/base.xml.in.h:76
+msgid "Asturian variant with bottom-dot H and bottom-dot L"
+msgstr "Varianta asturiană cu punct sub H și sub L"
+
+#: ../rules/base.xml.in.h:77
+msgid "Asus Laptop"
+msgstr "Laptop Asus"
+
+#: ../rules/base.xml.in.h:78
+msgid "At bottom left"
+msgstr "În stânga jos"
+
+#: ../rules/base.xml.in.h:79
+msgid "At left of 'A'"
+msgstr "La stânga lui „Aâ€"
+
+#: ../rules/base.xml.in.h:80
+msgid "Avatime"
+msgstr "Avatime"
+
+#: ../rules/base.xml.in.h:81
+msgid "Aze"
+msgstr "Aze"
+
+#: ../rules/base.xml.in.h:82
+msgid "Azerbaijan"
+msgstr "Azerbaijan"
+
+#: ../rules/base.xml.in.h:83
+msgid "Azona RF2300 wireless Internet Keyboard"
+msgstr "Tastatură internațională fără fir Azona RF2300"
+
+#: ../rules/base.xml.in.h:84
+msgid "BTC 5090"
+msgstr "BTC 5090"
+
+#: ../rules/base.xml.in.h:85
+msgid "BTC 5113RF Multimedia"
+msgstr "BTC 5113RF Multimedia"
+
+#: ../rules/base.xml.in.h:86
+msgid "BTC 5126T"
+msgstr "BTC 5126T"
+
+#: ../rules/base.xml.in.h:87
+msgid "BTC 6301URF"
+msgstr "BTC 6301URF"
+
+#: ../rules/base.xml.in.h:88
+msgid "BTC 9000"
+msgstr "BTC 9000"
+
+#: ../rules/base.xml.in.h:89
+msgid "BTC 9000A"
+msgstr "BTC 9000A"
+
+#: ../rules/base.xml.in.h:90
+msgid "BTC 9001AH"
+msgstr "BTC 9001AH"
+
+#: ../rules/base.xml.in.h:91
+msgid "BTC 9019U"
+msgstr "BTC 9019U"
+
+#: ../rules/base.xml.in.h:92
+msgid "BTC 9116U Mini Wireless Internet and Gaming"
+msgstr "BTC 9116U Mini fără fir, pentru Internet și jocuri"
+
+#: ../rules/base.xml.in.h:93
+msgid "Backslash"
+msgstr ""
+
+#: ../rules/base.xml.in.h:94
+msgid "Bangladesh"
+msgstr "BangladeÈ™"
+
+#: ../rules/base.xml.in.h:95
+msgid "Bashkirian"
+msgstr "Bashkirian"
+
+#: ../rules/base.xml.in.h:96
+msgid "Bel"
+msgstr "Bel"
+
+#: ../rules/base.xml.in.h:97
+msgid "Belarus"
+msgstr "Belarus"
+
+#: ../rules/base.xml.in.h:98
+msgid "Belgium"
+msgstr "Belgia"
+
+#: ../rules/base.xml.in.h:99
+msgid "BenQ X-Touch"
+msgstr "BenQ X-Touch"
+
+#: ../rules/base.xml.in.h:100
+msgid "BenQ X-Touch 730"
+msgstr "BenQ X-Touch 730"
+
+#: ../rules/base.xml.in.h:101
+msgid "BenQ X-Touch 800"
+msgstr "BenQ X-Touch 800"
+
+#: ../rules/base.xml.in.h:102
+msgid "Bengali"
+msgstr "Bengaleză"
+
+#: ../rules/base.xml.in.h:103
+msgid "Bengali Probhat"
+msgstr "Bengaleză Probhat"
+
+#: ../rules/base.xml.in.h:104
+msgid "Bepo, ergonomic, Dvorak way"
+msgstr "Bepo, ergonomică, în mod Dvorak"
+
+#: ../rules/base.xml.in.h:105
+msgid "Bepo, ergonomic, Dvorak way, latin-9 only"
+msgstr "Bepo, ergonomică, în mod Dvorak, doar latin-9"
+
+#: ../rules/base.xml.in.h:106
+msgid "Bgd"
+msgstr "Bgd"
+
+#: ../rules/base.xml.in.h:107
+msgid "Bgr"
+msgstr "Bgr"
+
+#: ../rules/base.xml.in.h:108
+msgid "Bhutan"
+msgstr "Butan"
+
+#: ../rules/base.xml.in.h:109
+msgid "Biblical Hebrew (Tiro)"
+msgstr "Ebraică biblică (Tiro)"
+
+#: ../rules/base.xml.in.h:110
+msgid "Bih"
+msgstr "Bih"
+
+#: ../rules/base.xml.in.h:111
+msgid "Blr"
+msgstr "Blr"
+
+#: ../rules/base.xml.in.h:112
+msgid "Bosnia and Herzegovina"
+msgstr "Bosnia și Herțegovina"
+
+#: ../rules/base.xml.in.h:113
+msgid "Both Alt keys together"
+msgstr "Ambele taste Alt în același timp"
+
+#: ../rules/base.xml.in.h:114
+msgid "Both Ctrl keys together"
+msgstr "Ambele taste Ctrl în același timp"
+
+#: ../rules/base.xml.in.h:115
+msgid "Both Shift keys together"
+msgstr "Ambele taste Shift în același timp"
+
+#: ../rules/base.xml.in.h:116
+msgid "Both Shift-Keys together toggle CapsLock"
+msgstr "Ambele taste Shift în același timp comută CapsLock"
+
+#: ../rules/base.xml.in.h:117
+msgid "Botswana"
+msgstr "Botsuana"
+
+#: ../rules/base.xml.in.h:118
+msgid "Bra"
+msgstr "Bra"
+
+#: ../rules/base.xml.in.h:119
+msgid "Braille"
+msgstr "Braille"
+
+#: ../rules/base.xml.in.h:120
+msgid "Brazil"
+msgstr "Brazilia"
+
+#: ../rules/base.xml.in.h:121
+msgid "Breton"
+msgstr "Bretonă"
+
+#: ../rules/base.xml.in.h:122
+msgid "Brl"
+msgstr "Brl"
+
+#: ../rules/base.xml.in.h:123
+msgid "Brother Internet Keyboard"
+msgstr "Tastatură Brother Internet"
+
+#: ../rules/base.xml.in.h:124
+msgid "Btn"
+msgstr "Btn"
+
+#: ../rules/base.xml.in.h:125
+msgid "Buckwalter"
+msgstr "Buckwalter"
+
+#: ../rules/base.xml.in.h:126
+msgid "Bulgaria"
+msgstr "Bulgaria"
+
+#: ../rules/base.xml.in.h:127
+msgid "Bwa"
+msgstr "Bwa"
+
+#: ../rules/base.xml.in.h:128
+msgid "COD"
+msgstr "COD"
+
+#: ../rules/base.xml.in.h:129
+msgid "CRULP"
+msgstr "CRULP"
+
+#: ../rules/base.xml.in.h:130
+msgid "Cambodia"
+msgstr "Cambodgia"
+
+#: ../rules/base.xml.in.h:131
+msgid "Can"
+msgstr "Can"
+
+#: ../rules/base.xml.in.h:132
+msgid "Canada"
+msgstr "Canada"
+
+#: ../rules/base.xml.in.h:133
+msgid "CapsLock"
+msgstr "CapsLock"
+
+#: ../rules/base.xml.in.h:134
+msgid "CapsLock (to first layout), Shift+CapsLock (to last layout)"
+msgstr "CapsLock (la primul aranjament), Shift+CapsLock (la ultimul aranjament)"
+
+#: ../rules/base.xml.in.h:135
+msgid "CapsLock (while pressed), Alt+CapsLock does the original capslock action"
+msgstr "CapsLock (cât timp e apăsat), Alt+CapsLock execută aceeași acțiune CapsLock"
+
+#: ../rules/base.xml.in.h:136
+msgid "CapsLock acts as Shift with locking. Shift \"pauses\" CapsLock"
+msgstr "CapsLock funcționează ca și Shift cu blocare. Shift „întrerupe†temporar CapsLock"
+
+#: ../rules/base.xml.in.h:137
+msgid "CapsLock acts as Shift with locking. Shift doesn't affect CapsLock"
+msgstr "CapsLock funcționează ca și Shift la blocare. Shift nu afectează CapsLock"
+
+#: ../rules/base.xml.in.h:138
+msgid "CapsLock is disabled"
+msgstr "CapsLock este dezactivat"
+
+#: ../rules/base.xml.in.h:139
+msgid "CapsLock key behavior"
+msgstr "Comportamentul tastei Caps Lock"
+
+#: ../rules/base.xml.in.h:140
+msgid "CapsLock toggles Shift so all keys are affected"
+msgstr "CapsLock comută Shift astfel încât toate tastele sunt afectate"
+
+#: ../rules/base.xml.in.h:141
+msgid "CapsLock toggles normal capitalization of alphabetic characters"
+msgstr "CapsLock comută capitalizarea normală a tuturor caracterelor alfa-numerice."
+
+#: ../rules/base.xml.in.h:142
+msgid "CapsLock uses internal capitalization. Shift \"pauses\" CapsLock"
+msgstr "CapsLock utilizează capitalizarea internă. Shift „întrerupe†temporar CapsLock"
+
+#: ../rules/base.xml.in.h:143
+msgid "CapsLock uses internal capitalization. Shift doesn't affect CapsLock"
+msgstr "CapsLock utilizează capitalizarea internă. Shift nu afectează CapsLock"
+
+#: ../rules/base.xml.in.h:144
+msgid "Catalan variant with middle-dot L"
+msgstr "Varianta catalană cu L cu punct în mijloc"
+
+#: ../rules/base.xml.in.h:145
+msgid "Cedilla"
+msgstr "Sedilă"
+
+#: ../rules/base.xml.in.h:146
+msgid "Che"
+msgstr "Che"
+
+#: ../rules/base.xml.in.h:147
+msgid "Cherokee"
+msgstr "Cherokee"
+
+#: ../rules/base.xml.in.h:148
+msgid "Cherry B.UNLIMITED"
+msgstr "Cherry B.UNLIMITED"
+
+#: ../rules/base.xml.in.h:149
+msgid "Cherry Blue Line CyBo@rd"
+msgstr "Cherry Blue Line CyBo@rd"
+
+#: ../rules/base.xml.in.h:150
+msgid "Cherry Blue Line CyBo@rd (alternate option)"
+msgstr "Cherry Blue Line CyBo@rd (opțiune alternativă)"
+
+#: ../rules/base.xml.in.h:151
+msgid "Cherry CyBo@rd USB-Hub"
+msgstr "Cherry CyBo@rd USB-Hub"
+
+#: ../rules/base.xml.in.h:152
+msgid "Cherry CyMotion Expert"
+msgstr "Cherry CyMotion Expert"
+
+#: ../rules/base.xml.in.h:153
+msgid "Cherry CyMotion Master Linux"
+msgstr "Cherry CyMotion Master Linux"
+
+#: ../rules/base.xml.in.h:154
+msgid "Cherry CyMotion Master XPress"
+msgstr "Cherry CyMotion Master XPress"
+
+#: ../rules/base.xml.in.h:155
+msgid "Chicony Internet Keyboard"
+msgstr "Tastatură Chicony Internet"
+
+#: ../rules/base.xml.in.h:156
+msgid "Chicony KB-9885"
+msgstr "Chicony KB-9885"
+
+#: ../rules/base.xml.in.h:157
+msgid "Chicony KU-0108"
+msgstr "Chicony KU-0108"
+
+#: ../rules/base.xml.in.h:158
+msgid "Chicony KU-0420"
+msgstr "Chicony KU-0420"
+
+#: ../rules/base.xml.in.h:159
+msgid "China"
+msgstr "China"
+
+#: ../rules/base.xml.in.h:160
+msgid "Chn"
+msgstr "Chn"
+
+#: ../rules/base.xml.in.h:161
+msgid "Chuvash"
+msgstr "Ciuvașă"
+
+#: ../rules/base.xml.in.h:162
+msgid "Chuvash Latin"
+msgstr "Ciuvașă latină"
+
+#: ../rules/base.xml.in.h:163
+msgid "Classic"
+msgstr "Clasică"
+
+#: ../rules/base.xml.in.h:164
+msgid "Classic Dvorak"
+msgstr "Dvorak clasică"
+
+#: ../rules/base.xml.in.h:165
+msgid "Classic, eliminate dead keys"
+msgstr "Clasică, elimină tastele moarte"
+
+#: ../rules/base.xml.in.h:166
+msgid "Classmate PC"
+msgstr "Classmate PC"
+
+#: ../rules/base.xml.in.h:167
+msgid "CloGaelach"
+msgstr "CloGaelach"
+
+#: ../rules/base.xml.in.h:168
+msgid "Colemak"
+msgstr "Colemak"
+
+#: ../rules/base.xml.in.h:169
+msgid "Compaq Easy Access Keyboard"
+msgstr "Tastatură cu acces facil Compaq"
+
+#: ../rules/base.xml.in.h:170
+msgid "Compaq Internet Keyboard (13 keys)"
+msgstr "Tastatură Compaq Internet (13 taste)"
+
+#: ../rules/base.xml.in.h:171
+msgid "Compaq Internet Keyboard (18 keys)"
+msgstr "Tastatură Compaq Internet (18 taste)"
+
+#: ../rules/base.xml.in.h:172
+msgid "Compaq Internet Keyboard (7 keys)"
+msgstr "Tastatură Compaq Internet (7 taste)"
+
+#: ../rules/base.xml.in.h:173
+msgid "Compaq iPaq Keyboard"
+msgstr "Tastatură Compaq iPaq"
+
+#: ../rules/base.xml.in.h:174
+msgid "Compose key position"
+msgstr "Poziție tastă de compunere"
+
+#: ../rules/base.xml.in.h:175
+msgid "Congo, Democratic Republic of the"
+msgstr "Republica democrată Congo"
+
+#: ../rules/base.xml.in.h:176
+msgid "Control + Alt + Backspace"
+msgstr "Control + Alt + Backspace"
+
+#: ../rules/base.xml.in.h:177
+msgid "Control is mapped to Alt keys, Alt is mapped to Win keys"
+msgstr "Control este mapat la tastele Alt, Alt e mapat la tastele Win"
+
+#: ../rules/base.xml.in.h:178
+msgid "Control is mapped to Win keys (and the usual Ctrl keys)"
+msgstr "Control este mapat la tastele Win (și tastele Ctrl obișnuite)"
+
+#: ../rules/base.xml.in.h:179
+msgid "Creative Desktop Wireless 7000"
+msgstr "Creative Desktop Wireless 7000"
+
+#: ../rules/base.xml.in.h:180
+msgid "Crimean Tatar (Dobruca-1 Q)"
+msgstr "Tătară din Crimea (Dobruca-1 Q)"
+
+#: ../rules/base.xml.in.h:181
+msgid "Crimean Tatar (Dobruca-2 Q)"
+msgstr "Tătară din Crimea (Dobruca-2 Q)"
+
+#: ../rules/base.xml.in.h:182
+msgid "Crimean Tatar (Turkish Alt-Q)"
+msgstr "Tătară din Crimea (Alt-Q turcesc)"
+
+#: ../rules/base.xml.in.h:183
+msgid "Crimean Tatar (Turkish F)"
+msgstr "Tătară din Crimea (F turcesc)"
+
+#: ../rules/base.xml.in.h:184
+msgid "Crimean Tatar (Turkish Q)"
+msgstr "Tătară din Crimea (Q turcesc)"
+
+#: ../rules/base.xml.in.h:185
+msgid "Croatia"
+msgstr "Croația"
+
+#: ../rules/base.xml.in.h:186
+msgid "Ctrl key position"
+msgstr "Poziția tastei Ctrl"
+
+#: ../rules/base.xml.in.h:187
+msgid "Ctrl+Shift"
+msgstr "Ctrl+Shift"
+
+#: ../rules/base.xml.in.h:188
+msgid "Cyrillic"
+msgstr "Chirilică"
+
+#: ../rules/base.xml.in.h:189
+msgid "Cyrillic with guillemets"
+msgstr "Chirilică cu ghilimele franceze"
+
+#: ../rules/base.xml.in.h:190
+msgid "Cyrillic, Z and ZHE swapped"
+msgstr "Chirilică, Z și ZHE interschimbate"
+
+#: ../rules/base.xml.in.h:191
+msgid "Cze"
+msgstr "Cze"
+
+#: ../rules/base.xml.in.h:192
+msgid "Czechia"
+msgstr "Cehia"
+
+#: ../rules/base.xml.in.h:193
+msgid "DOS"
+msgstr "DOS"
+
+#: ../rules/base.xml.in.h:194
+msgid "DTK2000"
+msgstr "DTK2000"
+
+#: ../rules/base.xml.in.h:195
+msgid "Dead acute"
+msgstr "Accent ascuțit mort"
+
+#: ../rules/base.xml.in.h:196
+msgid "Dead grave acute"
+msgstr "Accent grav mort"
+
+#: ../rules/base.xml.in.h:197
+msgid "Default numeric keypad keys"
+msgstr "Taste implicite de la tastatura numerică"
+
+#: ../rules/base.xml.in.h:198
+msgid "Dell"
+msgstr "Dell"
+
+#: ../rules/base.xml.in.h:199
+msgid "Dell 101-key PC"
+msgstr "Dell 101 taste PC"
+
+#: ../rules/base.xml.in.h:200
+msgid "Dell Laptop/notebook Inspiron 6xxx/8xxx"
+msgstr "Laptop/notebook Dell Inspiron 6xxx/8xxx"
+
+#: ../rules/base.xml.in.h:201
+msgid "Dell Laptop/notebook Precision M series"
+msgstr "Laptop/notebook Dell seria Precision M"
+
+#: ../rules/base.xml.in.h:202
+msgid "Dell Latitude series laptop"
+msgstr "Laptop seria Dell Latitude"
+
+#: ../rules/base.xml.in.h:203
+msgid "Dell Precision M65"
+msgstr "Dell Precision M65"
+
+#: ../rules/base.xml.in.h:204
+msgid "Dell SK-8125"
+msgstr "Dell SK-8125"
+
+#: ../rules/base.xml.in.h:205
+msgid "Dell SK-8135"
+msgstr "Dell SK-8135"
+
+#: ../rules/base.xml.in.h:206
+msgid "Dell USB Multimedia Keyboard"
+msgstr "Tastatură multimedia Dell USB"
+
+#: ../rules/base.xml.in.h:207
+msgid "Denmark"
+msgstr "Danemarca"
+
+#: ../rules/base.xml.in.h:208
+msgid "Deu"
+msgstr "Deu"
+
+#: ../rules/base.xml.in.h:209
+msgid "Dexxa Wireless Desktop Keyboard"
+msgstr "Tastatură Dexxa Wireless Desktop"
+
+#: ../rules/base.xml.in.h:210
+msgid "Diamond 9801 / 9802 series"
+msgstr "Seria Diamond 9801 / 9802"
+
+#: ../rules/base.xml.in.h:211
+msgid "Dnk"
+msgstr "Dnk"
+
+#: ../rules/base.xml.in.h:212
+msgid "Dvorak"
+msgstr "Dvorak"
+
+#: ../rules/base.xml.in.h:213
+msgid "Dvorak (UK Punctuation)"
+msgstr "Dvorak (punctuație britanică)"
+
+#: ../rules/base.xml.in.h:214
+msgid "Dvorak alternative international (no dead keys)"
+msgstr "Dvorak alternativă internațională (fără taste moarte)"
+
+#: ../rules/base.xml.in.h:215
+msgid "Dvorak international (with dead keys)"
+msgstr ""
+
+#: ../rules/base.xml.in.h:216
+msgid "Dvorak, Polish quotes on key 1"
+msgstr "Dvorak, citate poloneze pe tasta 1"
+
+#: ../rules/base.xml.in.h:217
+msgid "Dvorak, Polish quotes on quotemark key"
+msgstr "Dvorak, citate poloneze pe tasta de ghilimele inversate"
+
+#: ../rules/base.xml.in.h:218
+msgid "E"
+msgstr "E"
+
+#: ../rules/base.xml.in.h:219
+msgid "Eastern"
+msgstr "Estică"
+
+#: ../rules/base.xml.in.h:220
+msgid "Eliminate dead keys"
+msgstr "Elimină tastele moarte"
+
+#: ../rules/base.xml.in.h:221
+msgid "Enable extra typographic characters"
+msgstr "Activează caracterele tipografice adiționale"
+
+#: ../rules/base.xml.in.h:222
+msgid "English"
+msgstr "Engleză"
+
+#: ../rules/base.xml.in.h:223
+msgid "English (USA International)"
+msgstr "Engleză (USA Internațional)"
+
+#: ../rules/base.xml.in.h:224
+msgid "English (USA Macintosh)"
+msgstr "Engleză (USA Macintosh)"
+
+#: ../rules/base.xml.in.h:225
+msgid "Ennyah DKB-1008"
+msgstr "Ennyah DKB-1008"
+
+#: ../rules/base.xml.in.h:226
+msgid "Enter on keypad"
+msgstr "Enter de pe tastatura numerică"
+
+#: ../rules/base.xml.in.h:227
+msgid "Epo"
+msgstr "Epo"
+
+#: ../rules/base.xml.in.h:228
+msgid "Ergonomic"
+msgstr "Ergonomică"
+
+#: ../rules/base.xml.in.h:229
+msgid "Esp"
+msgstr "Esp"
+
+#: ../rules/base.xml.in.h:230
+msgid "Esperanto"
+msgstr "Esperanto"
+
+#: ../rules/base.xml.in.h:231
+msgid "Est"
+msgstr "Est"
+
+#: ../rules/base.xml.in.h:232
+msgid "Estonia"
+msgstr "Estonia"
+
+#: ../rules/base.xml.in.h:233
+msgid "Eth"
+msgstr "Eti"
+
+#: ../rules/base.xml.in.h:234
+msgid "Ethiopia"
+msgstr "Etiopia"
+
+#: ../rules/base.xml.in.h:235
+msgid "Everex STEPnote"
+msgstr "Everex STEPnote"
+
+#: ../rules/base.xml.in.h:236
+msgid "Ewe"
+msgstr "Ewe"
+
+#: ../rules/base.xml.in.h:237
+msgid "Extended"
+msgstr "Extinsă"
+
+#: ../rules/base.xml.in.h:238
+msgid "Extended - Winkeys"
+msgstr "Extentins - Winkeys"
+
+#: ../rules/base.xml.in.h:239
+msgid "Extended Backslash"
+msgstr "Backslash extins"
+
+#: ../rules/base.xml.in.h:240
+msgid "F-letter (F) variant"
+msgstr "Varianta litera-F (F)"
+
+#: ../rules/base.xml.in.h:241
+msgid "FL90"
+msgstr "FL90"
+
+#: ../rules/base.xml.in.h:242
+msgid "Faroe Islands"
+msgstr "Insulele Feroe"
+
+#: ../rules/base.xml.in.h:243
+msgid "Fin"
+msgstr "Fin"
+
+#: ../rules/base.xml.in.h:244
+msgid "Finland"
+msgstr "Finlanda"
+
+#. This assumes the KP_ abstract symbols are actually useful for some apps
+#. The description needs to be rewritten
+#: ../rules/base.xml.in.h:247
+msgid "Four-level key with abstract separators"
+msgstr "Tastă de nivelul patru cu separatori abstracți"
+
+#: ../rules/base.xml.in.h:248
+msgid "Four-level key with comma"
+msgstr "Tastă de nivelul patru cu virgulă"
+
+#: ../rules/base.xml.in.h:249
+msgid "Four-level key with dot"
+msgstr "Tastă de nivelul patru cu punct"
+
+#: ../rules/base.xml.in.h:250
+msgid "Four-level key with dot, latin-9 restriction"
+msgstr "Tastă de nivelul patru cu punct, restricție latin-9"
+
+#: ../rules/base.xml.in.h:251
+msgid "Four-level key with momayyez"
+msgstr "Tastă de nivelul patru cu momayyez"
+
+#: ../rules/base.xml.in.h:252
+msgid "Fra"
+msgstr "Fra"
+
+#: ../rules/base.xml.in.h:253
+msgid "France"
+msgstr "Franța"
+
+#: ../rules/base.xml.in.h:254
+msgid "Français (France Alternative)"
+msgstr "Franceză (France Alternative)"
+
+#: ../rules/base.xml.in.h:255
+msgid "French"
+msgstr "Franceză"
+
+#: ../rules/base.xml.in.h:256
+msgid "French (Macintosh)"
+msgstr "Franceză (Macintosh)"
+
+#: ../rules/base.xml.in.h:257
+msgid "French (legacy)"
+msgstr "Franceză (moștenire)"
+
+#: ../rules/base.xml.in.h:258
+msgid "French Dvorak"
+msgstr "Dvorak franceză"
+
+#: ../rules/base.xml.in.h:259
+msgid "French, Sun dead keys"
+msgstr "Franceză, taste moarte Sun"
+
+#: ../rules/base.xml.in.h:260
+msgid "French, eliminate dead keys"
+msgstr "Franceză, elimină tastele moarte"
+
+#: ../rules/base.xml.in.h:261
+msgid "Fro"
+msgstr ""
+
+#: ../rules/base.xml.in.h:262
+msgid "Fujitsu-Siemens Computers AMILO laptop"
+msgstr "Laptop Fujitsu-Siemens Computers AMILO"
+
+#: ../rules/base.xml.in.h:263
+msgid "Fula"
+msgstr "Fula"
+
+#: ../rules/base.xml.in.h:264
+msgid "GBr"
+msgstr "MBr"
+
+#: ../rules/base.xml.in.h:265
+msgid "GILLBT"
+msgstr ""
+
+#: ../rules/base.xml.in.h:266
+msgid "Ga"
+msgstr "Ga"
+
+#: ../rules/base.xml.in.h:267
+msgid "Generic 101-key PC"
+msgstr "PC 101 taste, generică"
+
+#: ../rules/base.xml.in.h:268
+msgid "Generic 102-key (Intl) PC"
+msgstr "PC 102 taste, generică (Intl)"
+
+#: ../rules/base.xml.in.h:269
+msgid "Generic 104-key PC"
+msgstr "PC 104 taste, generică"
+
+#: ../rules/base.xml.in.h:270
+msgid "Generic 105-key (Intl) PC"
+msgstr "PC 105 taste, generică (Intl)"
+
+#: ../rules/base.xml.in.h:271
+msgid "Genius Comfy KB-12e"
+msgstr "Genius Comfy KB-12e"
+
+#: ../rules/base.xml.in.h:272
+msgid "Genius Comfy KB-16M / Genius MM Keyboard KWD-910"
+msgstr "Tastatură Genius Comfy KB-16M / Genius MM KWD-910"
+
+#: ../rules/base.xml.in.h:273
+msgid "Genius Comfy KB-21e-Scroll"
+msgstr "Genius Comfy KB-21e-Scroll"
+
+#: ../rules/base.xml.in.h:274
+msgid "Genius KB-19e NB"
+msgstr "Genius KB-19e NB"
+
+#: ../rules/base.xml.in.h:275
+msgid "Genius KKB-2050HS"
+msgstr "Genius KKB-2050HS"
+
+#: ../rules/base.xml.in.h:276
+msgid "Geo"
+msgstr "Geo"
+
+#: ../rules/base.xml.in.h:277
+msgid "Georgia"
+msgstr "Georgia"
+
+#: ../rules/base.xml.in.h:278
+msgid "Georgian"
+msgstr "Georgiană"
+
+#: ../rules/base.xml.in.h:279
+msgid "Georgian AZERTY Tskapo"
+msgstr "Georgiană AZERTY Tskapo"
+
+#: ../rules/base.xml.in.h:280
+msgid "German (Macintosh)"
+msgstr "Germană (Macintosh)"
+
+#: ../rules/base.xml.in.h:281
+msgid "German, Sun dead keys"
+msgstr "Germană, taste moarte Sun"
+
+#: ../rules/base.xml.in.h:282
+msgid "German, eliminate dead keys"
+msgstr "Germană, elimină tastele moarte"
+
+#: ../rules/base.xml.in.h:283
+msgid "Germany"
+msgstr "Germania"
+
+#: ../rules/base.xml.in.h:284
+msgid "Gha"
+msgstr "Gha"
+
+#: ../rules/base.xml.in.h:285
+msgid "Ghana"
+msgstr "Ghana"
+
+#: ../rules/base.xml.in.h:286
+msgid "Gin"
+msgstr ""
+
+#: ../rules/base.xml.in.h:287
+msgid "Grc"
+msgstr ""
+
+#: ../rules/base.xml.in.h:288
+msgid "Greece"
+msgstr "Grecia"
+
+#: ../rules/base.xml.in.h:289
+msgid "Guinea"
+msgstr "Guinea"
+
+#: ../rules/base.xml.in.h:290
+msgid "Gujarati"
+msgstr "Gujarati"
+
+#: ../rules/base.xml.in.h:291
+msgid "Gurmukhi"
+msgstr "Gurmukhi"
+
+#: ../rules/base.xml.in.h:292
+msgid "Gurmukhi Jhelum"
+msgstr "Gurmukhi Jhelum"
+
+#: ../rules/base.xml.in.h:293
+msgid "Gyration"
+msgstr "Gyration"
+
+#: ../rules/base.xml.in.h:294
+msgid "Happy Hacking Keyboard"
+msgstr "Tastatură Happy Hacking"
+
+#: ../rules/base.xml.in.h:295
+msgid "Happy Hacking Keyboard for Mac"
+msgstr "Tastatură Happy Hacking pentru Mac"
+
+#: ../rules/base.xml.in.h:296
+msgid "Hausa"
+msgstr "Hausă"
+
+#: ../rules/base.xml.in.h:297
+msgid "Hewlett-Packard Internet Keyboard"
+msgstr "Tastatură Hewlett-Packard Internet"
+
+#: ../rules/base.xml.in.h:298
+msgid "Hewlett-Packard Mini 110 Notebook"
+msgstr "Hewlett-Packard Mini 110 Notebook"
+
+#: ../rules/base.xml.in.h:299
+msgid "Hewlett-Packard Omnibook 500 FA"
+msgstr "Hewlett-Packard Omnibook 500 FA"
+
+#: ../rules/base.xml.in.h:300
+msgid "Hewlett-Packard Omnibook 5xx"
+msgstr "Hewlett-Packard Omnibook 5xx"
+
+#: ../rules/base.xml.in.h:301
+msgid "Hewlett-Packard Omnibook 6000/6100"
+msgstr "Hewlett-Packard Omnibook 6000/6100"
+
+#: ../rules/base.xml.in.h:302
+msgid "Hewlett-Packard Omnibook XE3 GC"
+msgstr "Hewlett-Packard Omnibook XE3 GC"
+
+#: ../rules/base.xml.in.h:303
+msgid "Hewlett-Packard Omnibook XE3 GF"
+msgstr "Hewlett-Packard Omnibook XE3 GF"
+
+#: ../rules/base.xml.in.h:304
+msgid "Hewlett-Packard Omnibook XT1000"
+msgstr "Hewlett-Packard Omnibook XT1000"
+
+#: ../rules/base.xml.in.h:305
+msgid "Hewlett-Packard Pavilion ZT11xx"
+msgstr "Hewlett-Packard Pavilion ZT11xx"
+
+#: ../rules/base.xml.in.h:306
+msgid "Hewlett-Packard Pavilion dv5"
+msgstr "Hewlett-Packard Pavilion dv5"
+
+#: ../rules/base.xml.in.h:307
+msgid "Hewlett-Packard SK-250x Multimedia Keyboard"
+msgstr "Tastatură multimedia Hewlett-Packard SK-250x"
+
+#: ../rules/base.xml.in.h:308
+msgid "Hewlett-Packard nx9020"
+msgstr "Hewlett-Packard nx9020"
+
+#: ../rules/base.xml.in.h:309
+msgid "Hexadecimal"
+msgstr "Hexazecimal"
+
+#: ../rules/base.xml.in.h:310
+msgid "Hindi Bolnagri"
+msgstr "Hindi Bolnagri"
+
+#: ../rules/base.xml.in.h:311
+msgid "Hindi Wx"
+msgstr "Hindi Wx"
+
+#: ../rules/base.xml.in.h:312
+msgid "Homophonic"
+msgstr "Homofonic"
+
+#: ../rules/base.xml.in.h:313
+msgid "Honeywell Euroboard"
+msgstr "Honeywell Euroboard"
+
+#: ../rules/base.xml.in.h:314
+msgid "Hrv"
+msgstr "Hrv"
+
+#: ../rules/base.xml.in.h:315
+msgid "Hun"
+msgstr "Ung"
+
+#: ../rules/base.xml.in.h:316
+msgid "Hungary"
+msgstr "Ungaria"
+
+#: ../rules/base.xml.in.h:317
+msgid "Hyper is mapped to Win-keys"
+msgstr "Liniuța e mapată la tastele Win"
+
+#: ../rules/base.xml.in.h:318
+msgid "IBM (LST 1205-92)"
+msgstr "IBM (LST 1205-92)"
+
+#: ../rules/base.xml.in.h:319
+msgid "IBM Rapid Access"
+msgstr "IBM Rapid Access"
+
+#: ../rules/base.xml.in.h:320
+msgid "IBM Rapid Access II"
+msgstr "IBM Rapid Access II"
+
+#: ../rules/base.xml.in.h:321
+msgid "IBM Space Saver"
+msgstr "IBM Space Saver"
+
+#: ../rules/base.xml.in.h:322
+msgid "IBM ThinkPad 560Z/600/600E/A22E"
+msgstr "IBM ThinkPad 560Z/600/600E/A22E"
+
+#: ../rules/base.xml.in.h:323
+msgid "IBM ThinkPad R60/T60/R61/T61"
+msgstr "IBM ThinkPad R60/T60/R61/T61"
+
+#: ../rules/base.xml.in.h:324
+msgid "IBM ThinkPad Z60m/Z60t/Z61m/Z61t"
+msgstr "IBM ThinkPad Z60m/Z60t/Z61m/Z61t"
+
+#: ../rules/base.xml.in.h:325
+msgid "ISO Alternate"
+msgstr "Alternativ ISO"
+
+#: ../rules/base.xml.in.h:326
+msgid "Iceland"
+msgstr "Islanda"
+
+#: ../rules/base.xml.in.h:327
+msgid "Igbo"
+msgstr "Igboneză"
+
+#: ../rules/base.xml.in.h:328
+msgid "Include dead tilde"
+msgstr "Include tilda moartă"
+
+#: ../rules/base.xml.in.h:329
+msgid "Ind"
+msgstr "Ind"
+
+#: ../rules/base.xml.in.h:330
+msgid "India"
+msgstr "India"
+
+#: ../rules/base.xml.in.h:331
+msgid "International (AltGr dead keys)"
+msgstr "Internațional (taste moarte AltGr)"
+
+#: ../rules/base.xml.in.h:332
+msgid "International (with dead keys)"
+msgstr "Internațională (cu taste moarte)"
+
+#: ../rules/base.xml.in.h:333
+msgid "Inuktitut"
+msgstr "Inuktitut"
+
+#: ../rules/base.xml.in.h:334
+msgid "Iran"
+msgstr "Iran"
+
+#: ../rules/base.xml.in.h:335
+msgid "Iraq"
+msgstr "Irak"
+
+#: ../rules/base.xml.in.h:336
+msgid "Ireland"
+msgstr "Irlanda"
+
+#: ../rules/base.xml.in.h:337
+msgid "Irl"
+msgstr "Irl"
+
+#: ../rules/base.xml.in.h:338
+msgid "Irn"
+msgstr "Irn"
+
+#: ../rules/base.xml.in.h:339
+msgid "Irq"
+msgstr "Irk"
+
+#: ../rules/base.xml.in.h:340
+msgid "Isl"
+msgstr "Isl"
+
+#: ../rules/base.xml.in.h:341
+msgid "Isr"
+msgstr "Isr"
+
+#: ../rules/base.xml.in.h:342
+msgid "Israel"
+msgstr "Israel"
+
+#: ../rules/base.xml.in.h:343
+msgid "Ita"
+msgstr "Ita"
+
+#: ../rules/base.xml.in.h:344
+msgid "Italy"
+msgstr "Italia"
+
+#: ../rules/base.xml.in.h:345
+msgid "Japan"
+msgstr "Japonia"
+
+#: ../rules/base.xml.in.h:346
+msgid "Japan (PC-98xx Series)"
+msgstr "Japoneză (seria PC-98xx)"
+
+#: ../rules/base.xml.in.h:347
+msgid "Japanese keyboard options"
+msgstr "Opțiuni tastatură japoneză"
+
+#: ../rules/base.xml.in.h:348
+msgid "Jpn"
+msgstr "Jpn"
+
+#: ../rules/base.xml.in.h:349
+msgid "Kalmyk"
+msgstr "Kalmyk"
+
+#: ../rules/base.xml.in.h:350
+msgid "Kana"
+msgstr "Kana"
+
+#: ../rules/base.xml.in.h:351
+msgid "Kana Lock key is locking"
+msgstr "Tasta de blocare Kana blochează"
+
+#: ../rules/base.xml.in.h:352
+msgid "Kannada"
+msgstr "Kanadă"
+
+#: ../rules/base.xml.in.h:353
+msgid "Kashubian"
+msgstr "Kashubiană"
+
+#: ../rules/base.xml.in.h:354
+msgid "Kaz"
+msgstr "Kaz"
+
+#: ../rules/base.xml.in.h:355
+msgid "Kazakh with Russian"
+msgstr "Cazacă cu rusă"
+
+#: ../rules/base.xml.in.h:356
+msgid "Kazakhstan"
+msgstr "Kazahstan"
+
+#: ../rules/base.xml.in.h:357
+msgid "Ken"
+msgstr ""
+
+#: ../rules/base.xml.in.h:358
+msgid "Kenya"
+msgstr ""
+
+#: ../rules/base.xml.in.h:359
+msgid "Key sequence to kill the X server"
+msgstr "Secvență de taste pentru a termina forțat server-ul X"
+
+#: ../rules/base.xml.in.h:360
+msgid "Key to choose 3rd level"
+msgstr "Tasta pentru alegerea celui de-al treilea nivel"
+
+#: ../rules/base.xml.in.h:361
+msgid "Key to choose 5th level"
+msgstr ""
+
+#: ../rules/base.xml.in.h:362
+msgid "Key(s) to change layout"
+msgstr "Tasta(ele) pentru modificarea aranjamentului"
+
+#: ../rules/base.xml.in.h:363
+msgid "Keytronic FlexPro"
+msgstr "Keytronic FlexPro"
+
+#: ../rules/base.xml.in.h:364
+msgid "Kgz"
+msgstr "Kgz"
+
+#: ../rules/base.xml.in.h:365
+msgid "Khm"
+msgstr "Khm"
+
+#: ../rules/base.xml.in.h:366
+msgid "Kikuyu"
+msgstr ""
+
+#: ../rules/base.xml.in.h:367
+msgid "Komi"
+msgstr "Komi"
+
+#: ../rules/base.xml.in.h:368
+msgid "Kor"
+msgstr "Cor"
+
+#: ../rules/base.xml.in.h:369
+msgid "Korea, Republic of"
+msgstr "Coreea, Republica"
+
+#: ../rules/base.xml.in.h:370
+msgid "Ktunaxa"
+msgstr "Ktunaxa"
+
+#: ../rules/base.xml.in.h:371
+msgid "Kurdish, (F)"
+msgstr "Kurdă, (F)"
+
+#: ../rules/base.xml.in.h:372
+msgid "Kurdish, Arabic-Latin"
+msgstr "Kurdă, arabă-latină"
+
+#: ../rules/base.xml.in.h:373
+msgid "Kurdish, Latin Alt-Q"
+msgstr "Kurdă, Alt-Q latin"
+
+#: ../rules/base.xml.in.h:374
+msgid "Kurdish, Latin Q"
+msgstr "Kurdă, Q latin"
+
+#: ../rules/base.xml.in.h:375
+msgid "Kyrgyzstan"
+msgstr "Kârgâzstan"
+
+#: ../rules/base.xml.in.h:376
+msgid "LAm"
+msgstr "LAm"
+
+#: ../rules/base.xml.in.h:377
+msgid "LEKP"
+msgstr "LEKP"
+
+#: ../rules/base.xml.in.h:378
+msgid "LEKPa"
+msgstr "LEKPa"
+
+#: ../rules/base.xml.in.h:379
+msgid "Lao"
+msgstr "Lao"
+
+#: ../rules/base.xml.in.h:380
+msgid "Laos"
+msgstr "Laos"
+
+#: ../rules/base.xml.in.h:381
+msgid "Laptop/notebook Compaq (eg. Armada) Laptop Keyboard"
+msgstr "Tastatură Laptop/notebook Compaq (eg. Armada)"
+
+#: ../rules/base.xml.in.h:382
+msgid "Laptop/notebook Compaq (eg. Presario) Internet Keyboard"
+msgstr "Tastatură Internet Laptop/notebook Compaq (eg. Presario)"
+
+#: ../rules/base.xml.in.h:383
+msgid "Laptop/notebook eMachines m68xx"
+msgstr "Laptop/notebook eMachines m68xx"
+
+#: ../rules/base.xml.in.h:384
+msgid "Latin"
+msgstr "Latină"
+
+#: ../rules/base.xml.in.h:385
+msgid "Latin American"
+msgstr "Latino americană"
+
+#: ../rules/base.xml.in.h:386
+msgid "Latin Unicode"
+msgstr "Unicode latin"
+
+#: ../rules/base.xml.in.h:387
+msgid "Latin Unicode qwerty"
+msgstr "Unicode qwerty latin"
+
+#: ../rules/base.xml.in.h:388
+msgid "Latin qwerty"
+msgstr "qwerty latin"
+
+#: ../rules/base.xml.in.h:389
+msgid "Latin unicode"
+msgstr "unicode latin"
+
+#: ../rules/base.xml.in.h:390
+msgid "Latin unicode qwerty"
+msgstr "unicode qwerty latin"
+
+#: ../rules/base.xml.in.h:391
+msgid "Latin with guillemets"
+msgstr "Latin cu ghilimele franceze"
+
+#: ../rules/base.xml.in.h:392
+msgid "Latvia"
+msgstr "Letonia"
+
+#: ../rules/base.xml.in.h:393
+msgid "Layout toggle on multiply/divide key"
+msgstr ""
+
+#: ../rules/base.xml.in.h:394
+msgid "Left Alt"
+msgstr "Alt din stânga"
+
+#: ../rules/base.xml.in.h:395
+msgid "Left Alt (while pressed)"
+msgstr "Alt din stânga (cât timp e apăsată)"
+
+#: ../rules/base.xml.in.h:396
+msgid "Left Alt is swapped with Left Win"
+msgstr "Alt din stânga e interschimbat cu Win din stânga"
+
+#: ../rules/base.xml.in.h:397
+msgid "Left Ctrl"
+msgstr "Ctrl din stânga"
+
+#: ../rules/base.xml.in.h:398
+msgid "Left Ctrl (to first layout), Right Ctrl (to last layout)"
+msgstr "Ctrl stânga (la primul aranjament), Ctrl dreapta (la ultimul aranjament)"
+
+#: ../rules/base.xml.in.h:399
+msgid "Left Ctrl+Left Shift"
+msgstr "Ctrl stânga+Shift stânga"
+
+#: ../rules/base.xml.in.h:400
+msgid "Left Shift"
+msgstr "Shift stânga"
+
+#: ../rules/base.xml.in.h:401
+msgid "Left Win"
+msgstr "Win stânga"
+
+#: ../rules/base.xml.in.h:402
+msgid "Left Win (to first layout), Right Win/Menu (to last layout)"
+msgstr "Win stânga (la primul aranjament), Win dreapta/Menu (la ultimul aranjament)"
+
+#: ../rules/base.xml.in.h:403
+msgid "Left Win (while pressed)"
+msgstr "Win stânga (cât timp e apăsat)"
+
+#: ../rules/base.xml.in.h:404
+msgid "Left Win chooses 5th level, locks when pressed together with another 5th-level-chooser"
+msgstr ""
+
+#: ../rules/base.xml.in.h:405
+msgid "Left Win chooses 5th level, locks when pressed together with another 5th-level-chooser, one press releases the lock"
+msgstr ""
+
+#: ../rules/base.xml.in.h:406
+msgid "Left hand"
+msgstr "Mâna stângă"
+
+#: ../rules/base.xml.in.h:407
+msgid "Left handed Dvorak"
+msgstr "Dvorak pentru stângaci"
+
+#: ../rules/base.xml.in.h:408
+msgid "Legacy"
+msgstr "Moștenire"
+
+#: ../rules/base.xml.in.h:409
+msgid "Legacy Wang 724"
+msgstr "Wang 724 - moștenire"
+
+#. Actually, with KP_SEPARATOR, as the old keypad(comma)
+#: ../rules/base.xml.in.h:411
+msgid "Legacy key with comma"
+msgstr "Tastă moștenită cu virgulă"
+
+#: ../rules/base.xml.in.h:412
+msgid "Legacy key with dot"
+msgstr "Tastă moștenită cu punct"
+
+#: ../rules/base.xml.in.h:413
+msgid "Lithuania"
+msgstr "Lituania"
+
+#: ../rules/base.xml.in.h:414
+msgid "Lka"
+msgstr ""
+
+#: ../rules/base.xml.in.h:415
+msgid "Logitech Access Keyboard"
+msgstr "Tastatură Logitech Access"
+
+#: ../rules/base.xml.in.h:416
+msgid "Logitech Cordless Desktop"
+msgstr "Logitech Desktop fără fir"
+
+#: ../rules/base.xml.in.h:417
+msgid "Logitech Cordless Desktop (alternate option)"
+msgstr "Logitech Desktop fără fir (opțiune alternativă)"
+
+#: ../rules/base.xml.in.h:418
+msgid "Logitech Cordless Desktop EX110"
+msgstr "Logitech Desktop EX110 fără fir"
+
+#: ../rules/base.xml.in.h:419
+msgid "Logitech Cordless Desktop LX-300"
+msgstr "Logitech Desktop LX-300 fără fir"
+
+#: ../rules/base.xml.in.h:420
+msgid "Logitech Cordless Desktop Navigator"
+msgstr "Logitech Desktop Navigator fără fir"
+
+#: ../rules/base.xml.in.h:421
+msgid "Logitech Cordless Desktop Optical"
+msgstr "Logitech Desktop Optical fără fir"
+
+#: ../rules/base.xml.in.h:422
+msgid "Logitech Cordless Desktop Pro (alternate option 2)"
+msgstr "Logitech Desktop Pro (opțiune alternativă 2) fără fir"
+
+#: ../rules/base.xml.in.h:423
+msgid "Logitech Cordless Desktop iTouch"
+msgstr "Logitech Desktop iTouch fără fir"
+
+#: ../rules/base.xml.in.h:424
+msgid "Logitech Cordless Freedom/Desktop Navigator"
+msgstr "Logitech Freedom/Desktop Navigator fără fir"
+
+#: ../rules/base.xml.in.h:425
+msgid "Logitech G15 extra keys via G15daemon"
+msgstr "Logitech G15 via G15daemon cu taste suplimentare"
+
+#: ../rules/base.xml.in.h:426
+msgid "Logitech Generic Keyboard"
+msgstr "Tastatură generică Logitech"
+
+#: ../rules/base.xml.in.h:427
+msgid "Logitech Internet 350 Keyboard"
+msgstr "Tastatură Logitech Internet 350"
+
+#: ../rules/base.xml.in.h:428
+msgid "Logitech Internet Keyboard"
+msgstr "Tastatură Logitech Internet"
+
+#: ../rules/base.xml.in.h:429
+msgid "Logitech Internet Navigator Keyboard"
+msgstr "Tastatură Logitech Internet Navigator"
+
+#: ../rules/base.xml.in.h:430
+msgid "Logitech Media Elite Keyboard"
+msgstr "Tastatură Logitech Media Elite"
+
+#: ../rules/base.xml.in.h:431
+msgid "Logitech Ultra-X Cordless Media Desktop Keyboard"
+msgstr "Tastatură Logitech Ultra-X Media Desktop fără fir"
+
+#: ../rules/base.xml.in.h:432
+msgid "Logitech Ultra-X Keyboard"
+msgstr "Tastatură Logitech Ultra-X"
+
+#: ../rules/base.xml.in.h:433
+msgid "Logitech diNovo Edge Keyboard"
+msgstr "Tastatură Logitech diNovo Edge"
+
+#: ../rules/base.xml.in.h:434
+msgid "Logitech diNovo Keyboard"
+msgstr "Tastatură Logitech diNovo"
+
+#: ../rules/base.xml.in.h:435
+msgid "Logitech iTouch"
+msgstr "Logitech iTouch"
+
+#: ../rules/base.xml.in.h:436
+msgid "Logitech iTouch Cordless Keyboard (model Y-RB6)"
+msgstr "Tastatură Logitech iTouch fără fir (model Y-RB6)"
+
+#: ../rules/base.xml.in.h:437
+msgid "Logitech iTouch Internet Navigator Keyboard SE"
+msgstr "Tastatură Logitech iTouch Internet Navigator SE"
+
+#: ../rules/base.xml.in.h:438
+msgid "Logitech iTouch Internet Navigator Keyboard SE (USB)"
+msgstr "Tastatură Logitech iTouch Internet Navigator SE (USB)"
+
+#: ../rules/base.xml.in.h:439
+msgid "Lower Sorbian"
+msgstr "Sârbă de jos"
+
+#: ../rules/base.xml.in.h:440
+msgid "Lower Sorbian (qwertz)"
+msgstr "Sârbă de jos (qwerty)"
+
+#: ../rules/base.xml.in.h:441
+msgid "Ltu"
+msgstr "Ltu"
+
+#: ../rules/base.xml.in.h:442
+msgid "Lva"
+msgstr "Lva"
+
+#: ../rules/base.xml.in.h:443
+msgid "MESS"
+msgstr "MESS"
+
+#: ../rules/base.xml.in.h:444
+msgid "MNE"
+msgstr "MNE"
+
+#: ../rules/base.xml.in.h:445
+msgid "MacBook/MacBook Pro"
+msgstr "MacBook/MacBook Pro"
+
+#: ../rules/base.xml.in.h:446
+msgid "MacBook/MacBook Pro (Intl)"
+msgstr "MacBook/MacBook Pro (Intl)"
+
+#: ../rules/base.xml.in.h:447
+msgid "Macedonia"
+msgstr "Macedonia"
+
+#: ../rules/base.xml.in.h:448
+msgid "Macintosh"
+msgstr "Macintosh"
+
+#: ../rules/base.xml.in.h:449
+msgid "Macintosh Old"
+msgstr "Macintosh veche"
+
+#: ../rules/base.xml.in.h:450
+msgid "Macintosh, Sun dead keys"
+msgstr "Macintosh, taste moarte Sun"
+
+#: ../rules/base.xml.in.h:451
+msgid "Macintosh, eliminate dead keys"
+msgstr "Macintosh, elimină tastele moarte"
+
+#: ../rules/base.xml.in.h:452
+msgid "Make CapsLock an additional Backspace"
+msgstr "CapsLock este un Backspace suplimentar"
+
+#: ../rules/base.xml.in.h:453
+msgid "Make CapsLock an additional Ctrl"
+msgstr "CapsLock este un Ctlr suplimentar"
+
+#: ../rules/base.xml.in.h:454
+msgid "Make CapsLock an additional ESC"
+msgstr "CapsLock este un ESC suplimentar"
+
+#: ../rules/base.xml.in.h:455
+msgid "Make CapsLock an additional Hyper"
+msgstr "Fă CapsLock un alt Hyper"
+
+#: ../rules/base.xml.in.h:456
+msgid "Make CapsLock an additional NumLock"
+msgstr "Fă CapsLock un alt NumLock"
+
+#: ../rules/base.xml.in.h:457
+msgid "Make CapsLock an additional Super"
+msgstr "Fă CapsLock un alt Super"
+
+#: ../rules/base.xml.in.h:458
+msgid "Malayalam"
+msgstr "Malailamă"
+
+#: ../rules/base.xml.in.h:459
+msgid "Malayalam Lalitha"
+msgstr "Malailamă Lalitha"
+
+#: ../rules/base.xml.in.h:460
+msgid "Maldives"
+msgstr "Maldive"
+
+#: ../rules/base.xml.in.h:461
+msgid "Mali"
+msgstr "Mali"
+
+#: ../rules/base.xml.in.h:462
+msgid "Malta"
+msgstr "Malta"
+
+#: ../rules/base.xml.in.h:463
+msgid "Maltese keyboard with US layout"
+msgstr "Tastatura malteză cu aranjament US"
+
+#: ../rules/base.xml.in.h:464
+msgid "Mao"
+msgstr "Mao"
+
+#: ../rules/base.xml.in.h:465
+msgid "Maori"
+msgstr "Maură"
+
+#: ../rules/base.xml.in.h:466
+msgid "Mdv"
+msgstr "Mdv"
+
+#: ../rules/base.xml.in.h:467
+msgid "Memorex MX1998"
+msgstr "Memorex MX1998"
+
+#: ../rules/base.xml.in.h:468
+msgid "Memorex MX2500 EZ-Access Keyboard"
+msgstr "Tastatură Memorex MX2500 EZ-Access"
+
+#: ../rules/base.xml.in.h:469
+msgid "Memorex MX2750"
+msgstr "Memorex MX2750"
+
+#: ../rules/base.xml.in.h:470
+msgid "Menu"
+msgstr "Meniu"
+
+#: ../rules/base.xml.in.h:471
+msgid "Meta is mapped to Left Win"
+msgstr "Meta e mapat la Win stânga"
+
+#: ../rules/base.xml.in.h:472
+msgid "Meta is mapped to Win keys"
+msgstr "Meta e mapat la tastele Win"
+
+#: ../rules/base.xml.in.h:473
+msgid "Microsoft Comfort Curve Keyboard 2000"
+msgstr "Tastatură Microsoft Comfort Curve 2000"
+
+#: ../rules/base.xml.in.h:474
+msgid "Microsoft Internet Keyboard"
+msgstr "Tastatură Internet Microsoft"
+
+#: ../rules/base.xml.in.h:475
+msgid "Microsoft Internet Keyboard Pro, Swedish"
+msgstr "Tastatură Internet Microsoft Pro, suedeză"
+
+#: ../rules/base.xml.in.h:476
+msgid "Microsoft Natural"
+msgstr "Microsoft Natural"
+
+#: ../rules/base.xml.in.h:477
+msgid "Microsoft Natural Keyboard Elite"
+msgstr "Tastatură Microsoft Natural Elite"
+
+#: ../rules/base.xml.in.h:478
+msgid "Microsoft Natural Keyboard Pro / Microsoft Internet Keyboard Pro"
+msgstr "Tastatură Microsoft Natural Pro / Microsoft Internet Pro"
+
+#: ../rules/base.xml.in.h:479
+msgid "Microsoft Natural Keyboard Pro OEM"
+msgstr "Tastatură Microsoft Natural Pro OEM"
+
+#: ../rules/base.xml.in.h:480
+msgid "Microsoft Natural Keyboard Pro USB / Microsoft Internet Keyboard Pro"
+msgstr "Tastatură Microsoft Natural Pro USB / Microsoft Internet Pro"
+
+#: ../rules/base.xml.in.h:481
+msgid "Microsoft Natural Wireless Ergonomic Keyboard 7000"
+msgstr "Tastatură ergonomică Microsoft Natural Wireless 7000"
+
+#: ../rules/base.xml.in.h:482
+msgid "Microsoft Office Keyboard"
+msgstr "Tastatură pentru birou Microsoft"
+
+#: ../rules/base.xml.in.h:483
+msgid "Microsoft Wireless Multimedia Keyboard 1.0A"
+msgstr "Tastatură multimedia Microsoft Wireless 1.0A"
+
+#: ../rules/base.xml.in.h:484
+msgid "Miscellaneous compatibility options"
+msgstr "Diverse opțiuni pentru compatibilitate"
+
+#: ../rules/base.xml.in.h:485
+msgid "Mkd"
+msgstr "Mkd"
+
+#: ../rules/base.xml.in.h:486
+msgid "Mli"
+msgstr "Mli"
+
+#: ../rules/base.xml.in.h:487
+msgid "Mlt"
+msgstr "Mlt"
+
+#: ../rules/base.xml.in.h:488
+msgid "Mmr"
+msgstr "Mmr"
+
+#: ../rules/base.xml.in.h:489
+msgid "Mng"
+msgstr "Mng"
+
+#: ../rules/base.xml.in.h:490
+msgid "Mongolia"
+msgstr "Mongolia"
+
+#: ../rules/base.xml.in.h:491
+msgid "Montenegro"
+msgstr "Muntenegru"
+
+#: ../rules/base.xml.in.h:492
+msgid "Morocco"
+msgstr "Maroc"
+
+#: ../rules/base.xml.in.h:493
+msgid "Multilingual"
+msgstr "Multilingv"
+
+#: ../rules/base.xml.in.h:494
+msgid "Multilingual, first part"
+msgstr "Multilingv, prima parte"
+
+#: ../rules/base.xml.in.h:495
+msgid "Multilingual, second part"
+msgstr "Multilingv, a doua parte"
+
+#: ../rules/base.xml.in.h:496
+msgid "Myanmar"
+msgstr "Mianmar"
+
+#: ../rules/base.xml.in.h:497
+msgid "NICOLA-F style Backspace"
+msgstr "Backspace în stil NICOLA-F"
+
+#: ../rules/base.xml.in.h:498
+msgid "NLA"
+msgstr "NLA"
+
+#: ../rules/base.xml.in.h:499
+msgid "Nativo"
+msgstr "Nativo"
+
+#: ../rules/base.xml.in.h:500
+msgid "Nativo for Esperanto"
+msgstr "Nativo pentru esperanto"
+
+#: ../rules/base.xml.in.h:501
+msgid "Nativo for USA keyboards"
+msgstr "Nativo pentru tastaturile din SUA"
+
+#: ../rules/base.xml.in.h:502
+msgid "Neo 2"
+msgstr "Neo 2"
+
+#: ../rules/base.xml.in.h:503
+msgid "Nepal"
+msgstr "Nepal"
+
+#: ../rules/base.xml.in.h:504
+msgid "Netherlands"
+msgstr "Olanda"
+
+#: ../rules/base.xml.in.h:505
+msgid "New phonetic"
+msgstr "Fonetic nou"
+
+#: ../rules/base.xml.in.h:506
+msgid "Nga"
+msgstr "Nga"
+
+#: ../rules/base.xml.in.h:507
+msgid "Nigeria"
+msgstr "Nigeria"
+
+#: ../rules/base.xml.in.h:508
+msgid "Nld"
+msgstr "Ola"
+
+#: ../rules/base.xml.in.h:509
+msgid "Non-breakable space character at fourth level"
+msgstr "Caracterul spațiu indivizibil la nivelul al patrulea."
+
+#: ../rules/base.xml.in.h:510
+msgid "Non-breakable space character at fourth level, thin non-breakable space character at sixth level"
+msgstr "Caracterul spațiu indivizibil la nivelul al patrulea, caracterul spațiu mic indivizibil la nivelul al șaselea."
+
+#: ../rules/base.xml.in.h:511
+msgid "Non-breakable space character at fourth level, thin non-breakable space character at sixth level (via Ctrl+Shift)"
+msgstr "Caracterul spațiu indivizibil la nivelul al patrulea, caracterul spațiu mic indivizibil la nivelul al șaselea (prin Ctrl+Shift)"
+
+#: ../rules/base.xml.in.h:512
+msgid "Non-breakable space character at second level"
+msgstr "Caracterul spațiu indivizibil la nivelul al doilea"
+
+#: ../rules/base.xml.in.h:513
+msgid "Non-breakable space character at third level"
+msgstr "Caracterul spațiu indivizibil la nivelul al treilea"
+
+#: ../rules/base.xml.in.h:514
+msgid "Non-breakable space character at third level, nothing at fourth level"
+msgstr "Caracterul spațiu indivizibil la nivelul al treilea, nimic la nivelul al patrulea"
+
+#: ../rules/base.xml.in.h:515
+msgid "Non-breakable space character at third level, thin non-breakable space character at fourth level"
+msgstr "Caracterul spațiu indivizibil la nivelul al treilea, caracterul spațiu mic indivizibil la nivelul al patrulea"
+
+#: ../rules/base.xml.in.h:516
+msgid "Nor"
+msgstr "Nor"
+
+#: ../rules/base.xml.in.h:517
+msgid "Northern Saami"
+msgstr "Saami de Nord"
+
+#: ../rules/base.xml.in.h:518
+msgid "Northern Saami, eliminate dead keys"
+msgstr "Saami de nord, fără taste moarte"
+
+#: ../rules/base.xml.in.h:519
+msgid "Northgate OmniKey 101"
+msgstr "Northgate OmniKey 101"
+
+#: ../rules/base.xml.in.h:520
+msgid "Norway"
+msgstr "Norvegia"
+
+#: ../rules/base.xml.in.h:521
+msgid "Npl"
+msgstr "Npl"
+
+#: ../rules/base.xml.in.h:522
+msgid "NumLock"
+msgstr "NumLock"
+
+#: ../rules/base.xml.in.h:523
+msgid "Numeric keypad delete key behaviour"
+msgstr "Comportamentul tastei „Delete†din tastatura numerică"
+
+#: ../rules/base.xml.in.h:524
+msgid "Numeric keypad keys work as with Mac"
+msgstr "Tastele tastaturii numerice funcționează ca și la Mac"
+
+#: ../rules/base.xml.in.h:525
+msgid "Numeric keypad layout selection"
+msgstr "Selectare aranjament tastatură numerică"
+
+#: ../rules/base.xml.in.h:526
+msgid "OADG 109A"
+msgstr "OADG 109A"
+
+#: ../rules/base.xml.in.h:527
+msgid "OLPC"
+msgstr "OLPC"
+
+#: ../rules/base.xml.in.h:528
+msgid "OLPC Dari"
+msgstr "OLPC Dari"
+
+#: ../rules/base.xml.in.h:529
+msgid "OLPC Pashto"
+msgstr "OLPC Pashto"
+
+#: ../rules/base.xml.in.h:530
+msgid "OLPC Southern Uzbek"
+msgstr "Uzbekă de sud OLPC"
+
+#: ../rules/base.xml.in.h:531
+msgid "Occitan"
+msgstr "Occitană"
+
+#: ../rules/base.xml.in.h:532
+msgid "Ogham"
+msgstr "Ogamă"
+
+#: ../rules/base.xml.in.h:533
+msgid "Ogham IS434"
+msgstr "Ogamă IS434"
+
+#: ../rules/base.xml.in.h:534
+msgid "Oriya"
+msgstr "Oriană"
+
+#: ../rules/base.xml.in.h:535
+msgid "Ortek MCK-800 MM/Internet keyboard"
+msgstr "Tastatură Ortek MCK-800 MM/Internet"
+
+#: ../rules/base.xml.in.h:536
+msgid "Ossetian"
+msgstr "Osetiană"
+
+#: ../rules/base.xml.in.h:537
+msgid "Ossetian, Winkeys"
+msgstr "Osetiană, Winkeys"
+
+#: ../rules/base.xml.in.h:538
+msgid "Ossetian, legacy"
+msgstr "Osetiană, moștenire"
+
+#: ../rules/base.xml.in.h:539
+msgid "PC-98xx Series"
+msgstr "Seria PC-98xx"
+
+#: ../rules/base.xml.in.h:540
+msgid "Pak"
+msgstr "Pak"
+
+#: ../rules/base.xml.in.h:541
+msgid "Pakistan"
+msgstr "Pakistaneză"
+
+#: ../rules/base.xml.in.h:542
+msgid "Pannonian Rusyn Homophonic"
+msgstr "Panonică Rusyn Homofonică"
+
+#: ../rules/base.xml.in.h:543
+msgid "Pashto"
+msgstr "Pașto"
+
+#: ../rules/base.xml.in.h:544
+msgid "Pattachote"
+msgstr "Pattachote"
+
+#: ../rules/base.xml.in.h:545
+msgid "Pause"
+msgstr "Pauză"
+
+#: ../rules/base.xml.in.h:546
+msgid "Persian, with Persian Keypad"
+msgstr "Persiană, cu tastatură numerică Persiană"
+
+#: ../rules/base.xml.in.h:547
+msgid "Phonetic"
+msgstr "Fonetic"
+
+#: ../rules/base.xml.in.h:548
+msgid "Phonetic Winkeys"
+msgstr "Taste Win fonetice"
+
+#: ../rules/base.xml.in.h:549
+msgid "Pol"
+msgstr "Pol"
+
+#: ../rules/base.xml.in.h:550
+msgid "Poland"
+msgstr "Polonia"
+
+#: ../rules/base.xml.in.h:551
+msgid "Polytonic"
+msgstr "Politonic"
+
+#: ../rules/base.xml.in.h:552
+msgid "Portugal"
+msgstr "Portugalia"
+
+#: ../rules/base.xml.in.h:553
+msgid "Probhat"
+msgstr "Probhat"
+
+#: ../rules/base.xml.in.h:554
+msgid "Programmer Dvorak"
+msgstr "Dvorak pentru programatori"
+
+#: ../rules/base.xml.in.h:555
+msgid "Propeller Voyager (KTEZ-1000)"
+msgstr "Propeller Voyager (KTEZ-1000)"
+
+#: ../rules/base.xml.in.h:556
+msgid "Prt"
+msgstr "Prt"
+
+#: ../rules/base.xml.in.h:557
+msgid "PrtSc"
+msgstr "PrtSc"
+
+#: ../rules/base.xml.in.h:558
+msgid "QTronix Scorpius 98N+"
+msgstr "QTronix Scorpius 98N+"
+
+#: ../rules/base.xml.in.h:559
+msgid "Right Alt"
+msgstr "Alt dreapta"
+
+#: ../rules/base.xml.in.h:560
+msgid "Right Alt (while pressed)"
+msgstr "Alt dreapta (cât timp e apăsat)"
+
+#: ../rules/base.xml.in.h:561
+msgid "Right Alt chooses 5th level, locks when pressed together with another 5th-level-chooser"
+msgstr ""
+
+#: ../rules/base.xml.in.h:562
+msgid "Right Alt chooses 5th level, locks when pressed together with another 5th-level-chooser, one press releases the lock"
+msgstr ""
+
+#: ../rules/base.xml.in.h:563
+msgid "Right Alt key never chooses 3rd level"
+msgstr "Alt dreapta nu alege niciodata al treilea nivel"
+
+#: ../rules/base.xml.in.h:564
+msgid "Right Alt, Shift+Right Alt key is Multi_Key"
+msgstr "Tastele Alt dreapta, Shift+Alt dreapta sunt Multi_key"
+
+#: ../rules/base.xml.in.h:565
+msgid "Right Ctrl"
+msgstr "Ctrl dreapta"
+
+#: ../rules/base.xml.in.h:566
+msgid "Right Ctrl (while pressed)"
+msgstr "Ctrl dreapta (cât timp e apăsat)"
+
+#: ../rules/base.xml.in.h:567
+msgid "Right Ctrl as Right Alt"
+msgstr "Ctrl dreapta ca și Alt dreapta"
+
+#: ../rules/base.xml.in.h:568
+msgid "Right Ctrl+Right Shift"
+msgstr "Right Ctrl+Right Shift"
+
+#: ../rules/base.xml.in.h:569
+msgid "Right Shift"
+msgstr "Shift dreapta"
+
+#: ../rules/base.xml.in.h:570
+msgid "Right Win"
+msgstr "Win dreapta"
+
+#: ../rules/base.xml.in.h:571
+msgid "Right Win (while pressed)"
+msgstr "Win dreapta (cât timp e apăsat)"
+
+#: ../rules/base.xml.in.h:572
+msgid "Right Win chooses 5th level, locks when pressed together with another 5th-level-chooser"
+msgstr ""
+
+#: ../rules/base.xml.in.h:573
+msgid "Right Win chooses 5th level, locks when pressed together with another 5th-level-chooser, one press releases the lock"
+msgstr ""
+
+#: ../rules/base.xml.in.h:574
+msgid "Right hand"
+msgstr "Mâna dreaptă"
+
+#: ../rules/base.xml.in.h:575
+msgid "Right handed Dvorak"
+msgstr "Dvorak pentru mâna dreaptâ"
+
+#: ../rules/base.xml.in.h:576
+msgid "Romania"
+msgstr "România"
+
+#: ../rules/base.xml.in.h:577
+msgid "Romanian keyboard with German letters"
+msgstr "Tastatură românească cu litere germane"
+
+#: ../rules/base.xml.in.h:578
+msgid "Romanian keyboard with German letters, eliminate dead keys"
+msgstr "Tastatură românească cu caractere germane, fără taste moarte"
+
+#: ../rules/base.xml.in.h:579
+msgid "Rou"
+msgstr "Rom"
+
+#: ../rules/base.xml.in.h:580
+msgid "Rus"
+msgstr "Rus"
+
+#: ../rules/base.xml.in.h:581
+msgid "Russia"
+msgstr "Rusia"
+
+#: ../rules/base.xml.in.h:582
+msgid "Russian"
+msgstr "Rusă"
+
+#: ../rules/base.xml.in.h:583
+msgid "Russian phonetic"
+msgstr "Rusă fonetică"
+
+#: ../rules/base.xml.in.h:584
+msgid "Russian phonetic Dvorak"
+msgstr "Rusă fonetică Dvorak"
+
+#: ../rules/base.xml.in.h:585
+msgid "Russian phonetic, eliminate dead keys"
+msgstr "Rusă fonetică, fără taste moarte"
+
+#: ../rules/base.xml.in.h:586
+msgid "Russian with Kazakh"
+msgstr "Rusă cu cazacă"
+
+#: ../rules/base.xml.in.h:587
+msgid "SILVERCREST Multimedia Wireless Keyboard"
+msgstr "Tastatură SILVERCREST Multimedia Wireless"
+
+#: ../rules/base.xml.in.h:588
+msgid "SK-1300"
+msgstr "SK-1300"
+
+#: ../rules/base.xml.in.h:589
+msgid "SK-2500"
+msgstr "SK-2500"
+
+#: ../rules/base.xml.in.h:590
+msgid "SK-6200"
+msgstr "SK-6200"
+
+#: ../rules/base.xml.in.h:591
+msgid "SK-7100"
+msgstr "SK-7100"
+
+#: ../rules/base.xml.in.h:592 ../rules/base.extras.xml.in.h:7
+msgid "SRB"
+msgstr "SRB"
+
+#: ../rules/base.xml.in.h:593
+msgid "SVEN Ergonomic 2500"
+msgstr "SVEN Ergonomic 2500"
+
+#: ../rules/base.xml.in.h:594
+msgid "SVEN Slim 303"
+msgstr "SVEN Slim 303"
+
+#: ../rules/base.xml.in.h:595
+msgid "Samsung SDM 4500P"
+msgstr "Samsung SDM 4500P"
+
+#: ../rules/base.xml.in.h:596
+msgid "Samsung SDM 4510P"
+msgstr "Samsung SDM 4510P"
+
+#: ../rules/base.xml.in.h:597
+msgid "ScrollLock"
+msgstr "ScrollLock"
+
+#: ../rules/base.xml.in.h:598
+msgid "Secwepemctsin"
+msgstr "Secwepemctsin"
+
+#: ../rules/base.xml.in.h:599
+msgid "Semi-colon on third level"
+msgstr "Punct și virgulă la al treilea nivel"
+
+#: ../rules/base.xml.in.h:600
+msgid "Sen"
+msgstr "Sen"
+
+#: ../rules/base.xml.in.h:601
+msgid "Senegal"
+msgstr "Senegal"
+
+#: ../rules/base.xml.in.h:602 ../rules/base.extras.xml.in.h:8
+msgid "Serbia"
+msgstr "Serbia"
+
+#: ../rules/base.xml.in.h:603
+msgid "Serbian"
+msgstr "Sârbă"
+
+#: ../rules/base.xml.in.h:604
+msgid "Shift cancels CapsLock"
+msgstr "Shift anulează CapsLock"
+
+#: ../rules/base.xml.in.h:605
+msgid "Shift does not cancel NumLock, chooses 3rd level instead"
+msgstr "Shift nu anulează NumLock, ci alege al treilea nivel"
+
+#: ../rules/base.xml.in.h:606
+msgid "Shift with numeric keypad keys works as in MS Windows"
+msgstr "Shift cu tastatura numerică funcționează ca și în MS Windows"
+
+#: ../rules/base.xml.in.h:607
+msgid "Shift+CapsLock"
+msgstr "Shift+CapsLock"
+
+#: ../rules/base.xml.in.h:608
+msgid "Simple"
+msgstr "Simplu"
+
+#: ../rules/base.xml.in.h:609
+msgid "Slovakia"
+msgstr "Slovacia"
+
+#: ../rules/base.xml.in.h:610
+msgid "Slovenia"
+msgstr "Slovenia"
+
+#: ../rules/base.xml.in.h:611
+msgid "South Africa"
+msgstr "Africa de Sud"
+
+#: ../rules/base.xml.in.h:612
+msgid "Southern Uzbek"
+msgstr "Uzbecă de sud"
+
+#: ../rules/base.xml.in.h:613
+msgid "Spain"
+msgstr "Spania"
+
+#: ../rules/base.xml.in.h:614
+msgid "Special keys (Ctrl+Alt+&lt;key&gt;) handled in a server"
+msgstr "Taste speciale (Ctrl+Alt+&lt;key&gt;) operate într-un server."
+
+#: ../rules/base.xml.in.h:615
+msgid "Sri Lanka"
+msgstr "Sri Lanka"
+
+#: ../rules/base.xml.in.h:616
+msgid "Standard"
+msgstr "Standard"
+
+#: ../rules/base.xml.in.h:617
+msgid "Standard (Cedilla)"
+msgstr "Standard (sedile)"
+
+#. RSTU 2019-91
+#: ../rules/base.xml.in.h:619
+msgid "Standard RSTU"
+msgstr "RSTU standard"
+
+#. RSTU 2019-91
+#: ../rules/base.xml.in.h:621
+msgid "Standard RSTU on Russian layout"
+msgstr "RSTU standard pe aranjamentul rusesc"
+
+#: ../rules/base.xml.in.h:622
+msgid "Sun Type 5/6"
+msgstr "Sun Type 5/6"
+
+#: ../rules/base.xml.in.h:623
+msgid "Sun dead keys"
+msgstr "Taste moarte Sun"
+
+#: ../rules/base.xml.in.h:624
+msgid "Super Power Multimedia Keyboard"
+msgstr "Tastatură multimedia Super Power"
+
+#: ../rules/base.xml.in.h:625
+msgid "Svdvorak"
+msgstr "Svdvorak"
+
+#: ../rules/base.xml.in.h:626
+msgid "Svk"
+msgstr "Svc"
+
+#: ../rules/base.xml.in.h:627
+msgid "Svn"
+msgstr "Svn"
+
+#: ../rules/base.xml.in.h:628
+msgid "Swap Ctrl and CapsLock"
+msgstr "Interschimbă Ctrl cu CapsLock"
+
+#: ../rules/base.xml.in.h:629
+msgid "Swap ESC and CapsLock"
+msgstr "Interschimbă ESC cu CapsLock"
+
+#: ../rules/base.xml.in.h:630
+msgid "Swe"
+msgstr "Sue"
+
+#: ../rules/base.xml.in.h:631
+msgid "Sweden"
+msgstr "Suedia"
+
+#: ../rules/base.xml.in.h:632
+msgid "Switzerland"
+msgstr "Elveția"
+
+#: ../rules/base.xml.in.h:633
+msgid "Symplon PaceBook (tablet PC)"
+msgstr "Symplon PaceBook (tabletă PC)"
+
+#: ../rules/base.xml.in.h:634
+msgid "Syr"
+msgstr "Sir"
+
+#: ../rules/base.xml.in.h:635
+msgid "Syria"
+msgstr "Siria"
+
+#: ../rules/base.xml.in.h:636
+msgid "Syriac"
+msgstr "Siriană"
+
+#: ../rules/base.xml.in.h:637
+msgid "Syriac phonetic"
+msgstr "Siriană fonetică"
+
+#: ../rules/base.xml.in.h:638
+msgid "TIS-820.2538"
+msgstr "TIS-820.2538"
+
+#: ../rules/base.xml.in.h:639
+msgid "Tajikistan"
+msgstr "Tajikistan"
+
+#: ../rules/base.xml.in.h:640
+msgid "Tamil"
+msgstr "Tamilă"
+
+#: ../rules/base.xml.in.h:641
+msgid "Tamil Keyboard with Numerals"
+msgstr "Tastatură Tamil cu cifre"
+
+#: ../rules/base.xml.in.h:642
+msgid "Tamil TAB Typewriter"
+msgstr "Mașină de scris Tamil TAB"
+
+#: ../rules/base.xml.in.h:643
+msgid "Tamil TSCII Typewriter"
+msgstr "Mașină de scris Tamil TSCII"
+
+#: ../rules/base.xml.in.h:644
+msgid "Tamil Unicode"
+msgstr "Unicode tamil"
+
+#: ../rules/base.xml.in.h:645
+msgid "Tanzania"
+msgstr "Tanzania"
+
+#: ../rules/base.xml.in.h:646
+msgid "Targa Visionary 811"
+msgstr "Targa Visionary 811"
+
+#: ../rules/base.xml.in.h:647
+msgid "Tatar"
+msgstr "Tătară"
+
+#: ../rules/base.xml.in.h:648
+msgid "Telugu"
+msgstr "Teluguă"
+
+#: ../rules/base.xml.in.h:649
+msgid "Tha"
+msgstr "Tha"
+
+#: ../rules/base.xml.in.h:650
+msgid "Thailand"
+msgstr "Tailanda"
+
+#: ../rules/base.xml.in.h:651
+msgid "Tibetan"
+msgstr "Tibetană"
+
+#: ../rules/base.xml.in.h:652
+msgid "Tibetan (with ASCII numerals)"
+msgstr "Tibetană (cu numerale ASCII)"
+
+#: ../rules/base.xml.in.h:653
+msgid "Tifinagh"
+msgstr "Tifinag"
+
+#: ../rules/base.xml.in.h:654
+msgid "Tifinagh Alternative"
+msgstr "Tifinagh alternativ"
+
+#: ../rules/base.xml.in.h:655
+msgid "Tifinagh Alternative Phonetic"
+msgstr "Tifinagh alternativ fonetic"
+
+#: ../rules/base.xml.in.h:656
+msgid "Tifinagh Extended"
+msgstr "Tifinagh extins"
+
+#: ../rules/base.xml.in.h:657
+msgid "Tifinagh Extended Phonetic"
+msgstr "Tifinagh fonetic extins"
+
+#: ../rules/base.xml.in.h:658
+msgid "Tifinagh Phonetic"
+msgstr "Tifinagh fonetic"
+
+#: ../rules/base.xml.in.h:659
+msgid "Tilde (~) variant"
+msgstr "Variantă tilda (~)"
+
+#: ../rules/base.xml.in.h:660
+msgid "Tjk"
+msgstr "Tjk"
+
+#: ../rules/base.xml.in.h:661
+msgid "Tkm"
+msgstr "Tkm"
+
+#: ../rules/base.xml.in.h:662
+msgid "To the corresponding key in a Dvorak keyboard."
+msgstr "La tasta corespunzătoare pentru o tastatură Dvorak."
+
+#: ../rules/base.xml.in.h:663
+msgid "To the corresponding key in a Qwerty keyboard."
+msgstr "La tasta corespunzătoare pentru o tastatură Qwerty."
+
+#: ../rules/base.xml.in.h:664
+msgid "Toshiba Satellite S3000"
+msgstr "Toshiba Satellite S3000"
+
+#: ../rules/base.xml.in.h:665
+msgid "Traditional phonetic"
+msgstr "Fonetic tradițional"
+
+#: ../rules/base.xml.in.h:666
+msgid "Trust Direct Access Keyboard"
+msgstr "Tastatură Trust Direct Access"
+
+#: ../rules/base.xml.in.h:667
+msgid "Trust Slimline"
+msgstr "Trust Slimline"
+
+#: ../rules/base.xml.in.h:668
+msgid "Trust Wireless Keyboard Classic"
+msgstr "Tastatură Trust Wireless Classic"
+
+#: ../rules/base.xml.in.h:669
+msgid "Tur"
+msgstr "Tur"
+
+#: ../rules/base.xml.in.h:670
+msgid "Turkey"
+msgstr "Turcia"
+
+#: ../rules/base.xml.in.h:671
+msgid "Turkmenistan"
+msgstr "Turkmenistan"
+
+#: ../rules/base.xml.in.h:672
+msgid "TypeMatrix EZ-Reach 2020"
+msgstr "TypeMatrix EZ-Reach 2020"
+
+#: ../rules/base.xml.in.h:673
+msgid "TypeMatrix EZ-Reach 2030 PS2"
+msgstr "TypeMatrix EZ-Reach 2030 PS2"
+
+#: ../rules/base.xml.in.h:674
+msgid "TypeMatrix EZ-Reach 2030 USB"
+msgstr "TypeMatrix EZ-Reach 2030 USB"
+
+#: ../rules/base.xml.in.h:675
+msgid "TypeMatrix EZ-Reach 2030 USB (102/105:EU mode)"
+msgstr "TypeMatrix EZ-Reach 2030 USB (mod 102/105:EU)"
+
+#: ../rules/base.xml.in.h:676
+msgid "TypeMatrix EZ-Reach 2030 USB (106:JP mode)"
+msgstr "TypeMatrix EZ-Reach 2030 USB (mod 106:JP)"
+
+#: ../rules/base.xml.in.h:677
+msgid "Typewriter"
+msgstr "Mașină de scris"
+
+#: ../rules/base.xml.in.h:678
+msgid "Typewriter, legacy"
+msgstr "Mașină de scrie, moștenire"
+
+#: ../rules/base.xml.in.h:679
+msgid "Tza"
+msgstr "Tza"
+
+#: ../rules/base.xml.in.h:680
+msgid "UCW layout (accented letters only)"
+msgstr "Aranjament UCW (doar caracterele cu accent)"
+
+#: ../rules/base.xml.in.h:681
+msgid "US Dvorak with CZ UCW support"
+msgstr "US Dvorak cu suport CZ UCW"
+
+#: ../rules/base.xml.in.h:682
+msgid "US keyboard with Bosnian digraphs"
+msgstr "Tastatură US cu diagrame bosniace"
+
+#: ../rules/base.xml.in.h:683
+msgid "US keyboard with Bosnian letters"
+msgstr "Tastatură SUA cu litere bosniace"
+
+#: ../rules/base.xml.in.h:684
+msgid "US keyboard with Croatian digraphs"
+msgstr "Tastatură US cu diagrame croate"
+
+#: ../rules/base.xml.in.h:685
+msgid "US keyboard with Croatian letters"
+msgstr "Tastatură SUA cu litere croate"
+
+#: ../rules/base.xml.in.h:686
+msgid "US keyboard with Estonian letters"
+msgstr "Tastatură SUA cu litere estoniene"
+
+#: ../rules/base.xml.in.h:687
+msgid "US keyboard with Italian letters"
+msgstr "Tastatură US cu litere italiene"
+
+#: ../rules/base.xml.in.h:688
+msgid "US keyboard with Lithuanian letters"
+msgstr "Tastatură SUA cu litere lituaniene"
+
+#: ../rules/base.xml.in.h:689
+msgid "US keyboard with Slovenian letters"
+msgstr "Tastatură SUA cu litere slovene"
+
+#: ../rules/base.xml.in.h:690 ../rules/base.extras.xml.in.h:9
+msgid "USA"
+msgstr "SUA"
+
+#: ../rules/base.xml.in.h:691
+msgid "Udmurt"
+msgstr "Udmurtă"
+
+#: ../rules/base.xml.in.h:692
+msgid "Ukr"
+msgstr "Ukr"
+
+#: ../rules/base.xml.in.h:693
+msgid "Ukraine"
+msgstr "Ucraina"
+
+#: ../rules/base.xml.in.h:694
+msgid "Unicode additions (arrows and math operators)"
+msgstr "Adăugări Unicode (săgeți și operatori matematici)"
+
+#: ../rules/base.xml.in.h:695
+msgid "Unicode additions (arrows and math operators). Math operators on default level"
+msgstr "Adăugări Unicode (săgeți și operatori matematici). Operatorii matematici sunt pe nivelul prestabilit"
+
+#: ../rules/base.xml.in.h:696
+msgid "UnicodeExpert"
+msgstr "UnicodeExpert"
+
+#: ../rules/base.xml.in.h:697
+msgid "United Kingdom"
+msgstr "Regatul Unit al Marii Britanii"
+
+#: ../rules/base.xml.in.h:698
+msgid "Unitek KB-1925"
+msgstr "Unitek KB-1925"
+
+#: ../rules/base.xml.in.h:699
+msgid "Urdu, Alternative phonetic"
+msgstr "Urdu, fonetic alternativ"
+
+#: ../rules/base.xml.in.h:700
+msgid "Urdu, Phonetic"
+msgstr "Urdu, fonetică"
+
+#: ../rules/base.xml.in.h:701
+msgid "Urdu, Winkeys"
+msgstr "Urdu, Winkeys"
+
+#: ../rules/base.xml.in.h:702
+msgid "Use Bosnian digraphs"
+msgstr "Utilizează diagrame bosniace"
+
+#: ../rules/base.xml.in.h:703
+msgid "Use Croatian digraphs"
+msgstr "Utilizează diagrame croate"
+
+#: ../rules/base.xml.in.h:704
+msgid "Use guillemets for quotes"
+msgstr "Utilizează ghilimele francez pentru citate"
+
+#: ../rules/base.xml.in.h:705
+msgid "Use keyboard LED to show alternative layout"
+msgstr "Indică aranjamentul alternativ cu ajutorul LED-urilor tastaturii"
+
+#: ../rules/base.xml.in.h:706
+msgid "Using space key to input non-breakable space character"
+msgstr "Utilizează tasta spațiu la introducerea caracterului spațiu indivizibil"
+
+#: ../rules/base.xml.in.h:707
+msgid "Usual space at any level"
+msgstr "Utilizează spațiu la orice nivel"
+
+#: ../rules/base.xml.in.h:708
+msgid "Uzb"
+msgstr "Uzb"
+
+#: ../rules/base.xml.in.h:709
+msgid "Uzbekistan"
+msgstr "Uzbekistan"
+
+#: ../rules/base.xml.in.h:710
+msgid "Vietnam"
+msgstr "Vietnam"
+
+#: ../rules/base.xml.in.h:711
+msgid "ViewSonic KU-306 Internet Keyboard"
+msgstr "Tastatură Internet ViewSonic KU-306"
+
+#: ../rules/base.xml.in.h:712
+msgid "Vnm"
+msgstr "Vnm"
+
+#: ../rules/base.xml.in.h:713
+msgid "Wang 724 keypad with unicode additions (arrows and math operators)"
+msgstr "Tastatură Wang 724 cu adăugări unicode (săgeți și operatori matematici)"
+
+#: ../rules/base.xml.in.h:714
+msgid "Wang 724 keypad with unicode additions (arrows and math operators). Math operators on default level"
+msgstr "Tastatură Wang 724 cu adăugări unicode (săgeți și operatori matematici). Operatorii matematici sunt pe nivelul prestabilit"
+
+#: ../rules/base.xml.in.h:715
+msgid "Wang model 724 azerty"
+msgstr "Wang model 724 azerty"
+
+#: ../rules/base.xml.in.h:716
+msgid "Western"
+msgstr "Occidental"
+
+#: ../rules/base.xml.in.h:717
+msgid "Winbook Model XP5"
+msgstr "Winbook Model XP5"
+
+#: ../rules/base.xml.in.h:718
+msgid "Winkeys"
+msgstr "Winkeys"
+
+#: ../rules/base.xml.in.h:719
+msgid "With &lt;\\|&gt; key"
+msgstr "Cu tastele &lt;\\|&gt;"
+
+#: ../rules/base.xml.in.h:720
+msgid "With EuroSign on 5"
+msgstr "Cu Semn Euro pe tasta 5"
+
+#: ../rules/base.xml.in.h:721
+msgid "With guillemets"
+msgstr "Cu ghilimele franceze"
+
+#: ../rules/base.xml.in.h:722
+msgid "Yahoo! Internet Keyboard"
+msgstr "Tastatură Yahoo! Internet"
+
+#: ../rules/base.xml.in.h:723
+msgid "Yakut"
+msgstr "Iacută"
+
+#: ../rules/base.xml.in.h:724
+msgid "Yoruba"
+msgstr "Iorubă"
+
+#: ../rules/base.xml.in.h:725
+msgid "Z and ZHE swapped"
+msgstr "Z și ZHE interschimbate"
+
+#: ../rules/base.xml.in.h:726
+msgid "Zaf"
+msgstr "Zaf"
+
+#: ../rules/base.xml.in.h:727
+msgid "Zero-width non-joiner character at second level"
+msgstr ""
+
+#: ../rules/base.xml.in.h:728
+msgid "Zero-width non-joiner character at second level, non-breakable space character at third level"
+msgstr ""
+
+#: ../rules/base.xml.in.h:729
+msgid "Zero-width non-joiner character at second level, non-breakable space character at third level, nothing at fourth level"
+msgstr ""
+
+#: ../rules/base.xml.in.h:730
+msgid "Zero-width non-joiner character at second level, non-breakable space character at third level, thin non-breakable space at fourth level"
+msgstr ""
+
+#: ../rules/base.xml.in.h:731
+msgid "Zero-width non-joiner character at second level, non-breakable space character at third level, zero-width joiner at fourth level"
+msgstr ""
+
+#: ../rules/base.xml.in.h:732
+msgid "Zero-width non-joiner character at second level, zero-width joiner character at third level"
+msgstr ""
+
+#: ../rules/base.xml.in.h:733
+msgid "Zero-width non-joiner character at second level, zero-width joiner character at third level, non-breakable space character at fourth level"
+msgstr ""
+
+#: ../rules/base.xml.in.h:734
+msgid "Zero-width non-joiner character at third level, zero-width joiner at fourth level"
+msgstr ""
+
+#: ../rules/base.xml.in.h:735
+msgid "azerty"
+msgstr "azerty"
+
+#: ../rules/base.xml.in.h:736
+msgid "azerty/digits"
+msgstr "azerty/cifre"
+
+#: ../rules/base.xml.in.h:737
+msgid "digits"
+msgstr "cifre"
+
+#: ../rules/base.xml.in.h:738
+msgid "displaced semicolon and quote (obsolete)"
+msgstr "punct și virgulă și ghilimele strămutate (învechit)."
+
+#: ../rules/base.xml.in.h:739
+msgid "lyx"
+msgstr "lyx"
+
+#: ../rules/base.xml.in.h:740
+msgid "qwerty"
+msgstr "qwerty"
+
+#: ../rules/base.xml.in.h:741
+msgid "qwerty, extended Backslash"
+msgstr "qwerty, Backslash extins"
+
+#: ../rules/base.xml.in.h:742
+msgid "qwerty/digits"
+msgstr "qwerty/cifre"
+
+#: ../rules/base.xml.in.h:743
+msgid "qwertz"
+msgstr "qwertz"
+
+#: ../rules/base.extras.xml.in.h:1
+msgid "APL"
+msgstr "APL"
+
+#: ../rules/base.extras.xml.in.h:2
+msgid "Atsina"
+msgstr "Atsina"
+
+#: ../rules/base.extras.xml.in.h:3
+msgid "Combining accents instead of dead keys"
+msgstr ""
+
+#: ../rules/base.extras.xml.in.h:4
+msgid "Couer D'alene Salish"
+msgstr "Couer D'alene Salish"
+
+#: ../rules/base.extras.xml.in.h:5
+msgid "International (AltGr Unicode combining)"
+msgstr ""
+
+#: ../rules/base.extras.xml.in.h:6
+msgid "International (AltGr Unicode combining, alternative)"
+msgstr ""
+
+#~ msgid "ACPI Standard"
+#~ msgstr "ACPI Standard"
+
+#~ msgid "Alternative international (former us_intl)"
+#~ msgstr "Alternativ internațional (fostul us_intl)"
+
+#~ msgid "Ban"
+#~ msgstr "Ban"
+
+#~ msgid "Bhu"
+#~ msgstr "But"
+
+#~ msgid "Caps Lock"
+#~ msgstr "Caps Lock"
+
+#~ msgid "DRC"
+#~ msgstr "DRC"
+
+#~ msgid "Dan"
+#~ msgstr "Dan"
+
+#~ msgid "Dvorak international"
+#~ msgstr "Dvorak internațională"
+
+#~ msgid "Evdev-managed keyboard"
+#~ msgstr "Tastatură Evdev-managed"
+
+#~ msgid "Fao"
+#~ msgstr "Fer"
+
+#~ msgid "Gre"
+#~ msgstr "Gre"
+
+#~ msgid "Group toggle on multiply/divide key"
+#~ msgstr "Grupează comutatorul la tasta de înmulțire/împărțire"
+
+#~ msgid "Gui"
+#~ msgstr "Gui"
+
+#~ msgid "Indigenous"
+#~ msgstr "Indigen"
+
+#~ msgid "Laos - STEA (proposed standard layout)"
+#~ msgstr "Laos - STEA (propunere de aranjament standard)"
+
+#~ msgid "Lav"
+#~ msgstr "Let"
+
+#~ msgid "Less-than/Greater-than"
+#~ msgstr "Mai mic ca/mai mare ca"
+
+#~ msgid "Mal"
+#~ msgstr "Mal"
+
+#~ msgid "Nep"
+#~ msgstr "Nep"
+
+#~ msgid "Nig"
+#~ msgstr "Nig"
+
+#~ msgid "Saisiyat"
+#~ msgstr "Saisiyat"
+
+#~ msgid "Scroll Lock"
+#~ msgstr "Scroll Lock"
+
+#~ msgid "SrL"
+#~ msgstr "SrL"
+
+#~ msgid "Taiwan"
+#~ msgstr "Taiwan"
+
+#~ msgid "Twn"
+#~ msgstr "Twn"
+
+#~ msgid "Zar"
+#~ msgstr "Zar"
diff --git a/xorg-server/xkeyboard-config/po/rw.po b/xorg-server/xkeyboard-config/po/rw.po
index e2c25df90..935d6c33e 100644
--- a/xorg-server/xkeyboard-config/po/rw.po
+++ b/xorg-server/xkeyboard-config/po/rw.po
@@ -1,1827 +1,1827 @@
-# Kinyarwanda translations for xkeyboard-config package.
-# Copyright (C) 2005 Free Software Foundation, Inc.
-# This file is distributed under the same license as the xkeyboard-config package.
-# Steve Murphy <murf@e-tools.com>, 2005.
-# Steve performed initial rough translation from compendium built from translations provided by the following translators:
-# Philibert Ndandali <ndandali@yahoo.fr>, 2005.
-# Viateur MUGENZI <muvia1@yahoo.fr>, 2005.
-# Noëlla Mupole <s24211045@tuks.co.za>, 2005.
-# Carole Karema <karemacarole@hotmail.com>, 2005.
-# JEAN BAPTISTE NGENDAHAYO <ngenda_denis@yahoo.co.uk>, 2005.
-# Augustin KIBERWA <akiberwa@yahoo.co.uk>, 2005.
-# Donatien NSENGIYUMVA <ndonatienuk@yahoo.co.uk>, 2005.
-# Antoine Bigirimana <antoine@e-tools.com>, 2005.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: xkeyboard-config 0.5\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2005-01-24 22:57+0000\n"
-"PO-Revision-Date: 2005-04-04 10:55-0700\n"
-"Last-Translator: Steven Michael Murphy <murf@e-tools.com>\n"
-"Language-Team: Kinyarwanda <translation-team-rw@lists.sourceforge.net>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-# sc/source\ui\src\scstring.src:SCSTR_STDFILTER.text
-#: rules/base.xml.in.h:1
-#, fuzzy
-msgid "\"Standard\""
-msgstr "\"Bisanzwe-"
-
-#: rules/base.xml.in.h:2
-msgid "\"Typewriter\""
-msgstr ""
-
-#: rules/base.xml.in.h:3
-msgid "(F)"
-msgstr ""
-
-#: rules/base.xml.in.h:4
-#, fuzzy
-msgid "101/qwerty/comma/Dead keys"
-msgstr "Akitso Utubuto"
-
-#: rules/base.xml.in.h:5
-#, fuzzy
-msgid "101/qwerty/comma/Eliminate dead keys"
-msgstr "Akitso Utubuto"
-
-#: rules/base.xml.in.h:6
-#, fuzzy
-msgid "101/qwerty/dot/Dead keys"
-msgstr "Akadomo Utubuto"
-
-#: rules/base.xml.in.h:7
-#, fuzzy
-msgid "101/qwerty/dot/Eliminate dead keys"
-msgstr "Akadomo Utubuto"
-
-#: rules/base.xml.in.h:8
-#, fuzzy
-msgid "101/qwertz/comma/Dead keys"
-msgstr "Akitso Utubuto"
-
-#: rules/base.xml.in.h:9
-#, fuzzy
-msgid "101/qwertz/comma/Eliminate dead keys"
-msgstr "Akitso Utubuto"
-
-#: rules/base.xml.in.h:10
-#, fuzzy
-msgid "101/qwertz/dot/Dead keys"
-msgstr "Akadomo Utubuto"
-
-#: rules/base.xml.in.h:11
-#, fuzzy
-msgid "101/qwertz/dot/Eliminate dead keys"
-msgstr "Akadomo Utubuto"
-
-#: rules/base.xml.in.h:12
-#, fuzzy
-msgid "102/qwerty/comma/Dead keys"
-msgstr "Akitso Utubuto"
-
-#: rules/base.xml.in.h:13
-#, fuzzy
-msgid "102/qwerty/comma/Eliminate dead keys"
-msgstr "Akitso Utubuto"
-
-#: rules/base.xml.in.h:14
-#, fuzzy
-msgid "102/qwerty/dot/Dead keys"
-msgstr "Akadomo Utubuto"
-
-#: rules/base.xml.in.h:15
-#, fuzzy
-msgid "102/qwerty/dot/Eliminate dead keys"
-msgstr "Akadomo Utubuto"
-
-#: rules/base.xml.in.h:16
-#, fuzzy
-msgid "102/qwertz/comma/Dead keys"
-msgstr "Akitso Utubuto"
-
-#: rules/base.xml.in.h:17
-#, fuzzy
-msgid "102/qwertz/comma/Eliminate dead keys"
-msgstr "Akitso Utubuto"
-
-#: rules/base.xml.in.h:18
-#, fuzzy
-msgid "102/qwertz/dot/Dead keys"
-msgstr "Akadomo Utubuto"
-
-#: rules/base.xml.in.h:19
-#, fuzzy
-msgid "102/qwertz/dot/Eliminate dead keys"
-msgstr "Akadomo Utubuto"
-
-#: rules/base.xml.in.h:20
-#, fuzzy
-msgid "A4Tech KB-21"
-msgstr "21"
-
-#: rules/base.xml.in.h:21
-#, fuzzy
-msgid "A4Tech KBS-8"
-msgstr "8"
-
-#: rules/base.xml.in.h:22
-msgid "ACPI Standard"
-msgstr ""
-
-#: rules/base.xml.in.h:23
-#, fuzzy
-msgid "Acer AirKey V"
-msgstr "V"
-
-#: rules/base.xml.in.h:24
-#, fuzzy
-msgid "Add the EuroSign to the 2 key."
-msgstr "i Kuri i 2. Urufunguzo"
-
-#: rules/base.xml.in.h:25
-#, fuzzy
-msgid "Add the EuroSign to the 5 key."
-msgstr "i Kuri i 5 Urufunguzo"
-
-#: rules/base.xml.in.h:26
-#, fuzzy
-msgid "Add the EuroSign to the E key."
-msgstr "i Kuri i E Urufunguzo"
-
-#: rules/base.xml.in.h:27
-#, fuzzy
-msgid "Add the standard behavior to Menu key."
-msgstr "i Bisanzwe imyitwarire Kuri Urufunguzo"
-
-#: rules/base.xml.in.h:28
-#, fuzzy
-msgid "Adding the EuroSign to certain keys"
-msgstr "i Kuri Utubuto"
-
-#: rules/base.xml.in.h:29
-msgid "Advance Scorpius KI"
-msgstr ""
-
-#: rules/base.xml.in.h:30
-msgid "Alb"
-msgstr ""
-
-#: rules/base.xml.in.h:31
-msgid "Albania"
-msgstr "Alubaniya"
-
-#: rules/base.xml.in.h:32
-#, fuzzy
-msgid "Alt and Meta are on the Alt keys (default)."
-msgstr "Na ku i Utubuto Mburabuzi"
-
-#: rules/base.xml.in.h:33
-#, fuzzy
-msgid "Alt is mapped to the right Win-key and Super to Menu."
-msgstr "ni Kuri i Iburyo: Urufunguzo Na Kuri"
-
-#: rules/base.xml.in.h:34
-#, fuzzy
-msgid "Alt+Control changes group."
-msgstr "Amahinduka Itsinda"
-
-#: rules/base.xml.in.h:35
-#, fuzzy
-msgid "Alt+Shift changes group."
-msgstr "Amahinduka Itsinda"
-
-#: rules/base.xml.in.h:36
-msgid "Alt-Q"
-msgstr ""
-
-#: rules/base.xml.in.h:37
-#, fuzzy
-msgid "Alt/Win key behavior"
-msgstr "Urufunguzo imyitwarire"
-
-#: rules/base.xml.in.h:38
-msgid "Alternative"
-msgstr ""
-
-#: rules/base.xml.in.h:39
-#, fuzzy
-msgid "Alternative international (former us_intl)"
-msgstr "Mpuzamahanga"
-
-#: rules/base.xml.in.h:40
-#, fuzzy
-msgid "Alternative, Sun dead keys"
-msgstr "Utubuto"
-
-#: rules/base.xml.in.h:41
-#, fuzzy
-msgid "Alternative, eliminate dead keys"
-msgstr "Utubuto"
-
-#: rules/base.xml.in.h:42
-msgid "Apostrophe (') variant"
-msgstr ""
-
-#: rules/base.xml.in.h:43
-msgid "Ara"
-msgstr ""
-
-#: rules/base.xml.in.h:44
-msgid "Arabic"
-msgstr "Icyarabu"
-
-#: rules/base.xml.in.h:45
-msgid "Arm"
-msgstr ""
-
-#: rules/base.xml.in.h:46
-msgid "Armenia"
-msgstr "Arumeniya"
-
-#: rules/base.xml.in.h:47
-msgid "Aze"
-msgstr ""
-
-#: rules/base.xml.in.h:48
-msgid "Azerbaijan"
-msgstr "Azeribayijani"
-
-#: rules/base.xml.in.h:49
-msgid "Azona RF2300 wireless Internet Keyboard"
-msgstr ""
-
-#: rules/base.xml.in.h:50
-msgid "BTC 5090"
-msgstr ""
-
-#: rules/base.xml.in.h:51
-msgid "BTC 5113RF Multimedia"
-msgstr ""
-
-#: rules/base.xml.in.h:52
-msgid "BTC 5126T"
-msgstr ""
-
-#: rules/base.xml.in.h:53
-msgid "BTC 9000"
-msgstr ""
-
-#: rules/base.xml.in.h:54
-msgid "BTC 9000A"
-msgstr ""
-
-#: rules/base.xml.in.h:55
-msgid "BTC 9001AH"
-msgstr ""
-
-#: rules/base.xml.in.h:56
-msgid "Bel"
-msgstr ""
-
-#: rules/base.xml.in.h:57
-msgid "Belarus"
-msgstr "Belarusi"
-
-#: rules/base.xml.in.h:58
-msgid "Belgium"
-msgstr "Ububiligi"
-
-#: rules/base.xml.in.h:59
-msgid "Ben"
-msgstr ""
-
-#: rules/base.xml.in.h:60
-msgid "Bengali"
-msgstr "Bengali"
-
-#: rules/base.xml.in.h:61
-msgid "Bgr"
-msgstr ""
-
-#: rules/base.xml.in.h:62
-msgid "Bih"
-msgstr ""
-
-#: rules/base.xml.in.h:63
-msgid "Blr"
-msgstr ""
-
-#: rules/base.xml.in.h:64
-msgid "Bosnia and Herzegovina"
-msgstr "Bosiniya na Herizegovina"
-
-#: rules/base.xml.in.h:65
-#, fuzzy
-msgid "Both Alt keys together change group."
-msgstr "Utubuto Guhindura>> Itsinda"
-
-#: rules/base.xml.in.h:66
-#, fuzzy
-msgid "Both Ctrl keys together change group."
-msgstr "Utubuto Guhindura>> Itsinda"
-
-#: rules/base.xml.in.h:67
-#, fuzzy
-msgid "Both Shift keys together change group."
-msgstr "Utubuto Guhindura>> Itsinda"
-
-#: rules/base.xml.in.h:68
-#, fuzzy
-msgid "Both Win-keys switch group while pressed."
-msgstr "Utubuto Hindura Itsinda"
-
-#: rules/base.xml.in.h:69
-msgid "Bra"
-msgstr ""
-
-#: rules/base.xml.in.h:70
-msgid "Brazil"
-msgstr "Burezile"
-
-#: rules/base.xml.in.h:71
-msgid "Brazilian ABNT2"
-msgstr ""
-
-#: rules/base.xml.in.h:72
-msgid "Brother Internet Keyboard"
-msgstr ""
-
-#: rules/base.xml.in.h:73
-msgid "Bulgaria"
-msgstr "Buligariya"
-
-#: rules/base.xml.in.h:74
-msgid "Can"
-msgstr ""
-
-#: rules/base.xml.in.h:75
-msgid "Canada"
-msgstr "Kanada"
-
-#: rules/base.xml.in.h:76
-#, fuzzy
-msgid "CapsLock LED shows alternative group."
-msgstr "Itsinda"
-
-#: rules/base.xml.in.h:77
-#, fuzzy
-msgid "CapsLock acts as Shift with locking. Shift cancels CapsLock."
-msgstr "Nka Na:"
-
-#: rules/base.xml.in.h:78
-#, fuzzy
-msgid "CapsLock acts as Shift with locking. Shift doesn't cancel CapsLock."
-msgstr "Nka Na: Kureka"
-
-#: rules/base.xml.in.h:79
-#, fuzzy
-msgid "CapsLock just locks the Shift modifier."
-msgstr "i"
-
-#: rules/base.xml.in.h:80
-#, fuzzy
-msgid "CapsLock key behavior"
-msgstr "Urufunguzo imyitwarire"
-
-#: rules/base.xml.in.h:81
-#, fuzzy
-msgid "CapsLock key changes group."
-msgstr "Urufunguzo Amahinduka Itsinda"
-
-#: rules/base.xml.in.h:82
-#, fuzzy
-msgid "CapsLock toggles Shift so all keys are affected."
-msgstr "Byose Utubuto"
-
-#: rules/base.xml.in.h:83
-#, fuzzy
-msgid "CapsLock toggles normal capitalization of alphabetic characters."
-msgstr "Bisanzwe Bya Inyuguti"
-
-#: rules/base.xml.in.h:84
-#, fuzzy
-msgid "CapsLock uses internal capitalization. Shift cancels CapsLock."
-msgstr "By'imbere"
-
-#: rules/base.xml.in.h:85
-#, fuzzy
-msgid "CapsLock uses internal capitalization. Shift doesn't cancel CapsLock."
-msgstr "By'imbere Kureka"
-
-#: rules/base.xml.in.h:86
-msgid "Che"
-msgstr ""
-
-#: rules/base.xml.in.h:87
-msgid "Cherry Blue Line CyBo@rd"
-msgstr ""
-
-#: rules/base.xml.in.h:88
-#, fuzzy
-msgid "Cherry Blue Line CyBo@rd (alternate option)"
-msgstr "Ihitamo"
-
-#: rules/base.xml.in.h:89
-msgid "Chicony Internet Keyboard"
-msgstr ""
-
-#: rules/base.xml.in.h:90
-msgid "Chicony KB-9885"
-msgstr ""
-
-#: rules/base.xml.in.h:91
-msgid "CloGaelach"
-msgstr ""
-
-#: rules/base.xml.in.h:92
-msgid "CloGaelach Laptop"
-msgstr ""
-
-#: rules/base.xml.in.h:93
-msgid "Compaq Easy Access Keyboard"
-msgstr ""
-
-#: rules/base.xml.in.h:94
-#, fuzzy
-msgid "Compaq Internet Keyboard (13 keys)"
-msgstr "Utubuto"
-
-#: rules/base.xml.in.h:95
-#, fuzzy
-msgid "Compaq Internet Keyboard (18 keys)"
-msgstr "Utubuto"
-
-#: rules/base.xml.in.h:96
-#, fuzzy
-msgid "Compaq Internet Keyboard (7 keys)"
-msgstr "7 Utubuto"
-
-#: rules/base.xml.in.h:97
-msgid "Compaq iPaq Keyboard"
-msgstr ""
-
-#: rules/base.xml.in.h:98
-msgid "Control Key Position"
-msgstr ""
-
-#: rules/base.xml.in.h:99
-#, fuzzy
-msgid "Control key at bottom left"
-msgstr "Urufunguzo ku Hasi: Ibumoso:"
-
-#: rules/base.xml.in.h:100
-#, fuzzy
-msgid "Control key at left of 'A'"
-msgstr "Urufunguzo ku Ibumoso: Bya"
-
-#: rules/base.xml.in.h:101
-#, fuzzy
-msgid "Control+Shift changes group."
-msgstr "Amahinduka Itsinda"
-
-#: rules/base.xml.in.h:102
-msgid "Croatia"
-msgstr "Korowatiya"
-
-#: rules/base.xml.in.h:103
-msgid "Cyrillic"
-msgstr "Nyasilike"
-
-#: rules/base.xml.in.h:104
-msgid "Cze"
-msgstr ""
-
-#: rules/base.xml.in.h:105
-msgid "Czechia"
-msgstr ""
-
-#: rules/base.xml.in.h:106
-msgid "DTK2000"
-msgstr ""
-
-#: rules/base.xml.in.h:107
-msgid "Dead acute"
-msgstr ""
-
-#: rules/base.xml.in.h:108
-msgid "Dead grave acute"
-msgstr ""
-
-#: rules/base.xml.in.h:109
-msgid "Dell"
-msgstr ""
-
-#: rules/base.xml.in.h:110
-#, fuzzy
-msgid "Dell 101-key PC"
-msgstr "Urufunguzo"
-
-#: rules/base.xml.in.h:111
-msgid "Denmark"
-msgstr "Danimarike"
-
-#: rules/base.xml.in.h:112
-msgid "Deu"
-msgstr ""
-
-#: rules/base.xml.in.h:113
-msgid "Deva"
-msgstr ""
-
-#: rules/base.xml.in.h:114
-msgid "Devanagari"
-msgstr "Devanagari"
-
-#: rules/base.xml.in.h:115
-msgid "Dexxa Wireless Desktop Keyboard"
-msgstr ""
-
-#: rules/base.xml.in.h:116
-#, fuzzy
-msgid "Diamond 9801 / 9802 series"
-msgstr "Ibyiciro"
-
-#: rules/base.xml.in.h:117
-msgid "Dnk"
-msgstr ""
-
-#: rules/base.xml.in.h:118
-msgid "Dvorak"
-msgstr ""
-
-#: rules/base.xml.in.h:119
-#, fuzzy
-msgid "Dvorak, Polish quotes on key \"1/!\""
-msgstr "ku Urufunguzo 1."
-
-#: rules/base.xml.in.h:120
-#, fuzzy
-msgid "Dvorak, Polish quotes on quotemark key"
-msgstr "ku Urufunguzo"
-
-#: rules/base.xml.in.h:121
-msgid "Dzo"
-msgstr ""
-
-#: rules/base.xml.in.h:122
-msgid "Dzongkha"
-msgstr "Ikinyazongika"
-
-#: rules/base.xml.in.h:123
-#, fuzzy
-msgid "Eliminate dead keys"
-msgstr "Utubuto"
-
-#: rules/base.xml.in.h:124
-msgid "Ennyah DKB-1008"
-msgstr ""
-
-#: rules/base.xml.in.h:125
-msgid "Esp"
-msgstr ""
-
-#: rules/base.xml.in.h:126
-msgid "Est"
-msgstr ""
-
-#: rules/base.xml.in.h:127
-msgid "Estonia"
-msgstr "Esitoniya"
-
-#: rules/base.xml.in.h:128
-msgid "Everex STEPnote"
-msgstr ""
-
-#: rules/base.xml.in.h:129
-msgid "Extended"
-msgstr "cya/byagutse"
-
-#: rules/base.xml.in.h:130
-msgid "Extended Backslash"
-msgstr ""
-
-#: rules/base.xml.in.h:131
-#, fuzzy
-msgid "F-letter (F) variant"
-msgstr "Ibaruwa..."
-
-#: rules/base.xml.in.h:132
-msgid "Fao"
-msgstr ""
-
-#: rules/base.xml.in.h:133
-msgid "Faroe Islands"
-msgstr "Ibirwa bya Farowe"
-
-#: rules/base.xml.in.h:134
-msgid "Fin"
-msgstr ""
-
-#: rules/base.xml.in.h:135
-#, fuzzy
-msgid "Finish and Swedish"
-msgstr "Na"
-
-#: rules/base.xml.in.h:136
-msgid "Finland"
-msgstr "Finilande"
-
-#: rules/base.xml.in.h:137
-msgid "Fra"
-msgstr ""
-
-#: rules/base.xml.in.h:138
-msgid "France"
-msgstr "Ubufaransa"
-
-#: rules/base.xml.in.h:139
-msgid "French"
-msgstr "Igifaransa"
-
-#: rules/base.xml.in.h:140
-msgid "French (legacy)"
-msgstr ""
-
-#: rules/base.xml.in.h:141
-msgid "French Dvorak"
-msgstr ""
-
-#: rules/base.xml.in.h:142
-#, fuzzy
-msgid "French, Sun dead keys"
-msgstr "Utubuto"
-
-#: rules/base.xml.in.h:143
-#, fuzzy
-msgid "French, eliminate dead keys"
-msgstr "Utubuto"
-
-#: rules/base.xml.in.h:144
-msgid "GBr"
-msgstr ""
-
-#: rules/base.xml.in.h:145
-#, fuzzy
-msgid "Generic 101-key PC"
-msgstr "Urufunguzo"
-
-#: rules/base.xml.in.h:146
-#, fuzzy
-msgid "Generic 102-key (Intl) PC"
-msgstr "Urufunguzo"
-
-#: rules/base.xml.in.h:147
-#, fuzzy
-msgid "Generic 104-key PC"
-msgstr "Urufunguzo"
-
-#: rules/base.xml.in.h:148
-#, fuzzy
-msgid "Generic 105-key (Intl) PC"
-msgstr "Urufunguzo"
-
-#: rules/base.xml.in.h:149
-msgid "Genius Comfy KB-16M / Genius MM Keyboard KWD-910"
-msgstr ""
-
-#: rules/base.xml.in.h:150
-msgid "Genius Comfy KB-21e-Scroll"
-msgstr ""
-
-#: rules/base.xml.in.h:151
-msgid "Geo"
-msgstr ""
-
-#: rules/base.xml.in.h:152
-msgid "Georgia"
-msgstr "Geworigiya"
-
-#: rules/base.xml.in.h:153
-#, fuzzy
-msgid "German, Sun dead keys"
-msgstr "Utubuto"
-
-#: rules/base.xml.in.h:154
-#, fuzzy
-msgid "German, eliminate dead keys"
-msgstr "Utubuto"
-
-#: rules/base.xml.in.h:155
-msgid "Germany"
-msgstr "Ubudage"
-
-#: rules/base.xml.in.h:156
-msgid "Gre"
-msgstr ""
-
-#: rules/base.xml.in.h:157
-msgid "Greece"
-msgstr "Ikigereki"
-
-#: rules/base.xml.in.h:158
-#, fuzzy
-msgid "Group Shift/Lock behavior"
-msgstr "imyitwarire"
-
-#: rules/base.xml.in.h:159
-msgid "Guj"
-msgstr ""
-
-#: rules/base.xml.in.h:160
-msgid "Gujarati"
-msgstr "Gujarati"
-
-#: rules/base.xml.in.h:161
-msgid "Gurmukhi"
-msgstr "Gurumuki"
-
-#: rules/base.xml.in.h:162
-msgid "Guru"
-msgstr ""
-
-#: rules/base.xml.in.h:163
-msgid "Gyration"
-msgstr ""
-
-#: rules/base.xml.in.h:164
-msgid "Hewlett-Packard Internet Keyboard"
-msgstr ""
-
-#: rules/base.xml.in.h:165
-#, fuzzy
-msgid "Hewlett-Packard Omnibook 500 FA"
-msgstr "500"
-
-#: rules/base.xml.in.h:166
-msgid "Hewlett-Packard Omnibook 5xx"
-msgstr ""
-
-#: rules/base.xml.in.h:167
-msgid "Hewlett-Packard Omnibook 6000/6100"
-msgstr ""
-
-#: rules/base.xml.in.h:168
-msgid "Hewlett-Packard Omnibook XE3 GC"
-msgstr ""
-
-#: rules/base.xml.in.h:169
-msgid "Hewlett-Packard Omnibook XE3 GF"
-msgstr ""
-
-#: rules/base.xml.in.h:170
-msgid "Hewlett-Packard Omnibook XT1000"
-msgstr ""
-
-#: rules/base.xml.in.h:171
-msgid "Hewlett-Packard Pavilion ZT11xx"
-msgstr ""
-
-#: rules/base.xml.in.h:172
-msgid "Hewlett-Packard SK-2501 Multimedia Keyboard"
-msgstr ""
-
-#: rules/base.xml.in.h:173
-msgid "Hewlett-Packard SK-2505 Internet Keyboard"
-msgstr ""
-
-#: rules/base.xml.in.h:174
-msgid "Honeywell Euroboard"
-msgstr ""
-
-#: rules/base.xml.in.h:175
-msgid "Hrv"
-msgstr ""
-
-#: rules/base.xml.in.h:176
-msgid "Hun"
-msgstr ""
-
-#: rules/base.xml.in.h:177
-msgid "Hungary"
-msgstr "Hongiriya"
-
-#: rules/base.xml.in.h:178
-#, fuzzy
-msgid "Hyper is mapped to the Win-keys."
-msgstr "ni Kuri i Utubuto"
-
-#: rules/base.xml.in.h:179
-msgid "IBM Rapid Access"
-msgstr ""
-
-#: rules/base.xml.in.h:180
-msgid "IBM Rapid Access II"
-msgstr ""
-
-#: rules/base.xml.in.h:181
-#, fuzzy
-msgid "IBM Rapid Access II (alternate option)"
-msgstr "Ihitamo"
-
-#: rules/base.xml.in.h:182
-#, fuzzy
-msgid "IBM ThinkPad 560Z/600/600E/A22E"
-msgstr "600"
-
-#: rules/base.xml.in.h:183
-#, fuzzy
-msgid "INSCRIPT layout"
-msgstr "Imigaragarire"
-
-#: rules/base.xml.in.h:184
-msgid "IS434"
-msgstr ""
-
-#: rules/base.xml.in.h:185
-msgid "IS434 laptop"
-msgstr ""
-
-#: rules/base.xml.in.h:186
-msgid "ISO Alternate"
-msgstr ""
-
-#: rules/base.xml.in.h:187
-msgid "Iceland"
-msgstr "Isilande"
-
-#: rules/base.xml.in.h:188
-msgid "Iku"
-msgstr ""
-
-#: rules/base.xml.in.h:189
-#, fuzzy
-msgid "International (with dead keys)"
-msgstr "Na: Utubuto"
-
-#: rules/base.xml.in.h:190
-msgid "Inuktitut"
-msgstr "Ikinukititutu"
-
-#: rules/base.xml.in.h:191
-msgid "Iran"
-msgstr ""
-
-#: rules/base.xml.in.h:192
-msgid "Ireland"
-msgstr "Irilande"
-
-#: rules/base.xml.in.h:193
-msgid "Irl"
-msgstr ""
-
-#: rules/base.xml.in.h:194
-msgid "Irn"
-msgstr ""
-
-#: rules/base.xml.in.h:195
-msgid "Isl"
-msgstr ""
-
-#: rules/base.xml.in.h:196
-msgid "Isr"
-msgstr ""
-
-#: rules/base.xml.in.h:197
-msgid "Israel"
-msgstr "Isirayeli"
-
-#: rules/base.xml.in.h:198
-msgid "Ita"
-msgstr ""
-
-#: rules/base.xml.in.h:199
-msgid "Italy"
-msgstr "Ubutariyani"
-
-#: rules/base.xml.in.h:200
-msgid "Japan"
-msgstr "Ubuyapani"
-
-#: rules/base.xml.in.h:201
-#, fuzzy
-msgid "Japanese 106-key"
-msgstr "Urufunguzo"
-
-#: rules/base.xml.in.h:202
-msgid "Jpn"
-msgstr ""
-
-#: rules/base.xml.in.h:203
-msgid "Kan"
-msgstr ""
-
-#: rules/base.xml.in.h:204
-msgid "Kannada"
-msgstr "Kannada"
-
-#: rules/base.xml.in.h:205
-msgid "Keytronic FlexPro"
-msgstr ""
-
-#: rules/base.xml.in.h:206
-msgid "Kyr"
-msgstr ""
-
-#: rules/base.xml.in.h:207
-msgid "Kyrgyzstan"
-msgstr "Kirigizasitani"
-
-#: rules/base.xml.in.h:208
-msgid "LAm"
-msgstr ""
-
-#: rules/base.xml.in.h:209
-msgid "Lao"
-msgstr "Lawo"
-
-#: rules/base.xml.in.h:210
-msgid "Laos"
-msgstr ""
-
-#: rules/base.xml.in.h:211
-msgid "Laptop"
-msgstr ""
-
-#: rules/base.xml.in.h:212
-msgid "Laptop/notebook Compaq (eg. Armada) Laptop Keyboard"
-msgstr ""
-
-#: rules/base.xml.in.h:213
-msgid "Laptop/notebook Compaq (eg. Presario) Internet Keyboard"
-msgstr ""
-
-#: rules/base.xml.in.h:214
-msgid "Laptop/notebook Dell Inspiron 8xxx"
-msgstr ""
-
-#: rules/base.xml.in.h:215
-msgid "Latin"
-msgstr "Ikiratini"
-
-#: rules/base.xml.in.h:216
-msgid "Latin American"
-msgstr ""
-
-#: rules/base.xml.in.h:217
-msgid "Latin Unicode"
-msgstr ""
-
-#: rules/base.xml.in.h:218
-msgid "Latin Unicode qwerty"
-msgstr ""
-
-#: rules/base.xml.in.h:219
-msgid "Latin qwerty"
-msgstr ""
-
-#: rules/base.xml.in.h:220
-#, fuzzy
-msgid "Latin with guillemots"
-msgstr "Na:"
-
-#: rules/base.xml.in.h:221
-msgid "Latvia"
-msgstr "Lativiya"
-
-#: rules/base.xml.in.h:222
-#, fuzzy
-msgid "Left Alt key changes group."
-msgstr "Urufunguzo Amahinduka Itsinda"
-
-#: rules/base.xml.in.h:223
-#, fuzzy
-msgid "Left Alt key switches group while pressed."
-msgstr "Urufunguzo Itsinda"
-
-#: rules/base.xml.in.h:224
-#, fuzzy
-msgid "Left Ctrl key changes group."
-msgstr "Urufunguzo Amahinduka Itsinda"
-
-#: rules/base.xml.in.h:225
-#, fuzzy
-msgid "Left Shift key changes group."
-msgstr "Urufunguzo Amahinduka Itsinda"
-
-#: rules/base.xml.in.h:226
-#, fuzzy
-msgid "Left Win-key changes group."
-msgstr "Urufunguzo Amahinduka Itsinda"
-
-#: rules/base.xml.in.h:227
-#, fuzzy
-msgid "Left Win-key switches group while pressed."
-msgstr "Urufunguzo Itsinda"
-
-#: rules/base.xml.in.h:228
-msgid "Lithuania"
-msgstr "Lituwaniya"
-
-#: rules/base.xml.in.h:229
-msgid "Logitech Access Keyboard"
-msgstr ""
-
-#: rules/base.xml.in.h:230
-msgid "Logitech Cordless Desktop"
-msgstr ""
-
-#: rules/base.xml.in.h:231
-msgid "Logitech Cordless Desktop Navigator"
-msgstr ""
-
-#: rules/base.xml.in.h:232
-msgid "Logitech Cordless Desktop Optical"
-msgstr ""
-
-#: rules/base.xml.in.h:233
-msgid "Logitech Cordless Desktop Pro"
-msgstr ""
-
-#: rules/base.xml.in.h:234
-#, fuzzy
-msgid "Logitech Cordless Desktop Pro (alternate option)"
-msgstr "Ihitamo"
-
-#: rules/base.xml.in.h:235
-msgid "Logitech Cordless Desktop Pro (alternate option2)"
-msgstr ""
-
-#: rules/base.xml.in.h:236
-msgid "Logitech Cordless Desktop iTouch"
-msgstr ""
-
-#: rules/base.xml.in.h:237
-msgid "Logitech Cordless Freedom/Desktop Navigator"
-msgstr ""
-
-#: rules/base.xml.in.h:238
-msgid "Logitech Deluxe Access Keyboard"
-msgstr ""
-
-#: rules/base.xml.in.h:239
-msgid "Logitech Internet Keyboard"
-msgstr ""
-
-#: rules/base.xml.in.h:240
-msgid "Logitech Internet Navigator Keyboard"
-msgstr ""
-
-#: rules/base.xml.in.h:241
-msgid "Logitech iTouch"
-msgstr ""
-
-#: rules/base.xml.in.h:242
-#, fuzzy
-msgid "Logitech iTouch Cordless Keyboard (model Y-RB6)"
-msgstr "Urugero"
-
-#: rules/base.xml.in.h:243
-#, fuzzy
-msgid "Logitech iTouch keyboard Internet Navigator"
-msgstr "Mwandikisho"
-
-#: rules/base.xml.in.h:244
-msgid "Ltu"
-msgstr ""
-
-#: rules/base.xml.in.h:245
-msgid "Lva"
-msgstr ""
-
-#: rules/base.xml.in.h:246
-msgid "Macedonian"
-msgstr "Nyamasedoniya"
-
-#: rules/base.xml.in.h:247
-msgid "Macintosh"
-msgstr "masinitoshi"
-
-#: rules/base.xml.in.h:248
-msgid "Macintosh Old"
-msgstr ""
-
-#: rules/base.xml.in.h:249
-msgid "Make CapsLock an additional Control."
-msgstr ""
-
-#: rules/base.xml.in.h:250
-msgid "Mal"
-msgstr ""
-
-#: rules/base.xml.in.h:251
-msgid "Malayalam"
-msgstr "Malayalamu"
-
-#: rules/base.xml.in.h:252
-msgid "Malta"
-msgstr "Malita"
-
-#: rules/base.xml.in.h:253
-msgid "Mao"
-msgstr ""
-
-#: rules/base.xml.in.h:254
-msgid "Maori"
-msgstr "Ikimawori"
-
-#: rules/base.xml.in.h:255
-msgid "Memorex MX1998"
-msgstr ""
-
-#: rules/base.xml.in.h:256
-msgid "Memorex MX2500 EZ-Access Keyboard"
-msgstr ""
-
-#: rules/base.xml.in.h:257
-msgid "Memorex MX2750"
-msgstr ""
-
-#: rules/base.xml.in.h:258
-#, fuzzy
-msgid "Menu is Compose."
-msgstr "ni"
-
-#: rules/base.xml.in.h:259
-#, fuzzy
-msgid "Menu key changes group."
-msgstr "Urufunguzo Amahinduka Itsinda"
-
-#: rules/base.xml.in.h:260
-#, fuzzy
-msgid "Meta is mapped to the Win-keys."
-msgstr "ni Kuri i Utubuto"
-
-#: rules/base.xml.in.h:261
-#, fuzzy
-msgid "Meta is mapped to the left Win-key."
-msgstr "ni Kuri i Ibumoso: Urufunguzo"
-
-#: rules/base.xml.in.h:262
-msgid "Microsoft Internet Keyboard"
-msgstr ""
-
-#: rules/base.xml.in.h:263
-msgid "Microsoft Internet Keyboard Pro, Swedish"
-msgstr ""
-
-#: rules/base.xml.in.h:264
-msgid "Microsoft Natural"
-msgstr ""
-
-#: rules/base.xml.in.h:265
-msgid "Microsoft Natural Keyboard Pro / Microsoft Internet Keyboard Pro"
-msgstr ""
-
-#: rules/base.xml.in.h:266
-msgid "Microsoft Natural Keyboard Pro OEM"
-msgstr ""
-
-#: rules/base.xml.in.h:267
-msgid "Microsoft Natural Keyboard Pro USB / Microsoft Internet Keyboard Pro"
-msgstr ""
-
-#: rules/base.xml.in.h:268
-msgid "Microsoft Office Keyboard"
-msgstr ""
-
-#: rules/base.xml.in.h:269
-#, fuzzy
-msgid "Microsoft Wireless Multimedia Keyboard 1.0A"
-msgstr "1."
-
-#: rules/base.xml.in.h:270
-#, fuzzy
-msgid "Miscellaneous compatibility options"
-msgstr "Bihuye neza Amahitamo"
-
-#: rules/base.xml.in.h:271
-msgid "Mkd"
-msgstr ""
-
-#: rules/base.xml.in.h:272
-msgid "Mlt"
-msgstr ""
-
-#: rules/base.xml.in.h:273
-msgid "Mmr"
-msgstr ""
-
-#: rules/base.xml.in.h:274
-msgid "Mng"
-msgstr ""
-
-#: rules/base.xml.in.h:275
-msgid "Mongolia"
-msgstr "Mongoliya"
-
-#: rules/base.xml.in.h:276
-msgid "Multilingual"
-msgstr ""
-
-#: rules/base.xml.in.h:277
-#, fuzzy
-msgid "Multilingual, second part"
-msgstr "ISEGONDA"
-
-#: rules/base.xml.in.h:278
-msgid "Myanmar"
-msgstr "Myanmar"
-
-#: rules/base.xml.in.h:279
-msgid "Netherlands"
-msgstr "Nederilande"
-
-#: rules/base.xml.in.h:280
-msgid "Nld"
-msgstr ""
-
-#: rules/base.xml.in.h:281
-msgid "Nor"
-msgstr ""
-
-#: rules/base.xml.in.h:282
-msgid "Northern Saami"
-msgstr "Sami y'Amajyaruguru"
-
-#: rules/base.xml.in.h:283
-msgid "Northgate OmniKey 101"
-msgstr ""
-
-#: rules/base.xml.in.h:284
-msgid "Norway"
-msgstr "Noruveje"
-
-#: rules/base.xml.in.h:285
-#, fuzzy
-msgid "NumLock LED shows alternative group."
-msgstr "Itsinda"
-
-#: rules/base.xml.in.h:286
-msgid "Ogam"
-msgstr ""
-
-#: rules/base.xml.in.h:287
-msgid "Ogham"
-msgstr "Ogham"
-
-#: rules/base.xml.in.h:288
-#, fuzzy
-msgid "Oretec MCK-800 MM/Internet keyboard"
-msgstr "Mwandikisho"
-
-#: rules/base.xml.in.h:289
-msgid "Ori"
-msgstr ""
-
-#: rules/base.xml.in.h:290
-msgid "Oriya"
-msgstr "Oriya"
-
-#: rules/base.xml.in.h:291
-msgid "PC-98xx Series"
-msgstr ""
-
-#: rules/base.xml.in.h:292
-msgid "Pattachote"
-msgstr ""
-
-#: rules/base.xml.in.h:293
-#, fuzzy
-msgid "Phonetic"
-msgstr "Nyigamvugo:"
-
-#: rules/base.xml.in.h:294
-msgid "Pol"
-msgstr ""
-
-#: rules/base.xml.in.h:295
-msgid "Poland"
-msgstr "Polonye"
-
-#: rules/base.xml.in.h:296
-msgid "Polytonic"
-msgstr ""
-
-#: rules/base.xml.in.h:297
-msgid "Portugal"
-msgstr "Porutigali"
-
-#: rules/base.xml.in.h:298
-#, fuzzy
-msgid "PowerPC PS/2"
-msgstr "2."
-
-#: rules/base.xml.in.h:299
-#, fuzzy
-msgid "Press Left Alt key to choose 3rd level."
-msgstr "Urufunguzo Kuri Guhitamo urwego"
-
-#: rules/base.xml.in.h:300
-#, fuzzy
-msgid "Press Left Win-key to choose 3rd level."
-msgstr "Urufunguzo Kuri Guhitamo urwego"
-
-#: rules/base.xml.in.h:301
-#, fuzzy
-msgid "Press Menu key to choose 3rd level."
-msgstr "Urufunguzo Kuri Guhitamo urwego"
-
-#: rules/base.xml.in.h:302
-#, fuzzy
-msgid "Press Right Alt key to choose 3rd level."
-msgstr "Urufunguzo Kuri Guhitamo urwego"
-
-#: rules/base.xml.in.h:303
-#, fuzzy
-msgid "Press Right Control to choose 3rd level."
-msgstr "Kuri Guhitamo urwego"
-
-#: rules/base.xml.in.h:304
-#, fuzzy
-msgid "Press Right Win-key to choose 3rd level."
-msgstr "Urufunguzo Kuri Guhitamo urwego"
-
-#: rules/base.xml.in.h:305
-#, fuzzy
-msgid "Press any of Alt keys to choose 3rd level."
-msgstr "Bya Utubuto Kuri Guhitamo urwego"
-
-#: rules/base.xml.in.h:306
-#, fuzzy
-msgid "Press any of Win-keys to choose 3rd level."
-msgstr "Bya Utubuto Kuri Guhitamo urwego"
-
-#: rules/base.xml.in.h:307
-msgid "Probhat"
-msgstr ""
-
-#: rules/base.xml.in.h:308
-#, fuzzy
-msgid "Propeller Voyager (KTEZ-1000)"
-msgstr "1000"
-
-#: rules/base.xml.in.h:309
-msgid "Prt"
-msgstr ""
-
-#: rules/base.xml.in.h:310
-msgid "QTronix Scorpius 98N+"
-msgstr ""
-
-#: rules/base.xml.in.h:311
-#, fuzzy
-msgid "R-Alt switches group while pressed."
-msgstr "Itsinda"
-
-#: rules/base.xml.in.h:312
-#, fuzzy
-msgid "Right Alt is Compose."
-msgstr "ni"
-
-#: rules/base.xml.in.h:313
-#, fuzzy
-msgid "Right Alt key changes group."
-msgstr "Urufunguzo Amahinduka Itsinda"
-
-#: rules/base.xml.in.h:314
-#, fuzzy
-msgid "Right Control key works as Right Alt."
-msgstr "Urufunguzo Nka"
-
-#: rules/base.xml.in.h:315
-#, fuzzy
-msgid "Right Ctrl is Compose."
-msgstr "ni"
-
-#: rules/base.xml.in.h:316
-#, fuzzy
-msgid "Right Ctrl key changes group."
-msgstr "Urufunguzo Amahinduka Itsinda"
-
-#: rules/base.xml.in.h:317
-#, fuzzy
-msgid "Right Ctrl key switches group while pressed."
-msgstr "Urufunguzo Itsinda"
-
-#: rules/base.xml.in.h:318
-#, fuzzy
-msgid "Right Shift key changes group."
-msgstr "Urufunguzo Amahinduka Itsinda"
-
-#: rules/base.xml.in.h:319
-#, fuzzy
-msgid "Right Win-key changes group."
-msgstr "Urufunguzo Amahinduka Itsinda"
-
-#: rules/base.xml.in.h:320
-#, fuzzy
-msgid "Right Win-key is Compose."
-msgstr "Urufunguzo ni"
-
-#: rules/base.xml.in.h:321
-#, fuzzy
-msgid "Right Win-key switches group while pressed."
-msgstr "Urufunguzo Itsinda"
-
-#: rules/base.xml.in.h:322
-msgid "Romania"
-msgstr "Romaniya"
-
-#: rules/base.xml.in.h:323
-#, fuzzy
-msgid "Romanian keyboard with German letters"
-msgstr "Mwandikisho Na:"
-
-#: rules/base.xml.in.h:324
-#, fuzzy
-msgid "Romanian keyboard with German letters, eliminate dead keys"
-msgstr "Mwandikisho Na: Utubuto"
-
-#: rules/base.xml.in.h:325
-msgid "Rou"
-msgstr ""
-
-#: rules/base.xml.in.h:326
-msgid "Rus"
-msgstr ""
-
-#: rules/base.xml.in.h:327
-msgid "Russia"
-msgstr ""
-
-#: rules/base.xml.in.h:328
-msgid "Russian"
-msgstr "Ikirusiya"
-
-#: rules/base.xml.in.h:329
-msgid "SK-1300"
-msgstr ""
-
-#: rules/base.xml.in.h:330
-msgid "SK-2500"
-msgstr ""
-
-#: rules/base.xml.in.h:331
-msgid "SK-6200"
-msgstr ""
-
-#: rules/base.xml.in.h:332
-msgid "SK-7100"
-msgstr ""
-
-#: rules/base.xml.in.h:333
-msgid "SVEN Ergonomic 2500"
-msgstr ""
-
-#: rules/base.xml.in.h:334
-msgid "Samsung SDM 4500P"
-msgstr ""
-
-#: rules/base.xml.in.h:335
-msgid "Samsung SDM 4510P"
-msgstr ""
-
-#: rules/base.xml.in.h:336
-#, fuzzy
-msgid "ScrollLock LED shows alternative group."
-msgstr "Itsinda"
-
-#: rules/base.xml.in.h:337
-msgid "Serbian"
-msgstr "Ikinyaseribiya"
-
-#: rules/base.xml.in.h:338
-#, fuzzy
-msgid "Shift with numpad keys works as in MS Windows."
-msgstr "Na: Utubuto Nka in"
-
-#: rules/base.xml.in.h:339
-#, fuzzy
-msgid "Shift+CapsLock changes group."
-msgstr "Amahinduka Itsinda"
-
-# sc/source\core\src\compiler.src:RID_SC_FUNCTION_NAMES.SC_OPCODE_SIN.text
-#: rules/base.xml.in.h:340
-#, fuzzy
-msgid "Sin"
-msgstr "SIN"
-
-#: rules/base.xml.in.h:341
-msgid "Sinhala"
-msgstr "Sinhala"
-
-#: rules/base.xml.in.h:342
-msgid "Slovakia"
-msgstr "Silovakiya"
-
-#: rules/base.xml.in.h:343
-msgid "Slovenia"
-msgstr "Siloveniya"
-
-#: rules/base.xml.in.h:344
-msgid "Smi"
-msgstr ""
-
-#: rules/base.xml.in.h:345
-msgid "Spain"
-msgstr "Esipanye"
-
-#: rules/base.xml.in.h:346
-#, fuzzy
-msgid "Special keys (Ctrl+Alt+&lt;key&gt;) handled in a server."
-msgstr "Utubuto in a Seriveri"
-
-#: rules/base.xml.in.h:347
-msgid "Srp"
-msgstr ""
-
-#: rules/base.xml.in.h:348
-msgid "Standard"
-msgstr "gisanzwe/kimenyerewe"
-
-#: rules/base.xml.in.h:349
-#, fuzzy
-msgid "Sun dead keys"
-msgstr "Utubuto"
-
-#: rules/base.xml.in.h:350
-msgid "Super Power Multimedia Keyboard"
-msgstr ""
-
-#: rules/base.xml.in.h:351
-#, fuzzy
-msgid "Super is mapped to the Win-keys (default)."
-msgstr "ni Kuri i Utubuto Mburabuzi"
-
-#: rules/base.xml.in.h:352
-msgid "Svk"
-msgstr ""
-
-#: rules/base.xml.in.h:353
-msgid "Svn"
-msgstr ""
-
-#: rules/base.xml.in.h:354
-#, fuzzy
-msgid "Swap Control and CapsLock."
-msgstr "Na"
-
-#: rules/base.xml.in.h:355
-msgid "Swe"
-msgstr ""
-
-#: rules/base.xml.in.h:356
-msgid "Sweden"
-msgstr "Suwede"
-
-#: rules/base.xml.in.h:357
-msgid "Switzerland"
-msgstr "Ubusuwisi"
-
-#: rules/base.xml.in.h:358
-msgid "Symplon PaceBook (tablet PC)"
-msgstr ""
-
-#: rules/base.xml.in.h:359
-msgid "Syr"
-msgstr ""
-
-#: rules/base.xml.in.h:360
-msgid "Syriac"
-msgstr "Syriac"
-
-#: rules/base.xml.in.h:361
-msgid "TIS-820.2538"
-msgstr ""
-
-#: rules/base.xml.in.h:362
-msgid "Tajikistan"
-msgstr "Tajikisitani"
-
-#: rules/base.xml.in.h:363
-msgid "Tam"
-msgstr ""
-
-#: rules/base.xml.in.h:364
-msgid "Tamil"
-msgstr "Tamili"
-
-# #-#-#-#-# sw.pot (PACKAGE VERSION) #-#-#-#-#
-# sw/source\ui\wizard\wizbmp.src:STR_GoF_AbsTelefon.text
-# #-#-#-#-# sw.pot (PACKAGE VERSION) #-#-#-#-#
-# sw/source\ui\wizard\wizbmp.src:STR_GoF_EmpTelefon.text
-# #-#-#-#-# sw.pot (PACKAGE VERSION) #-#-#-#-#
-# sw/source\ui\wizard\wizbmp.src:STR_Usr_TelePrivat.text
-# #-#-#-#-# sw.pot (PACKAGE VERSION) #-#-#-#-#
-# sw/source\ui\wizard\wizbmp.src:STR_Usr_TeleDienst.text
-#: rules/base.xml.in.h:365
-#, fuzzy
-msgid "Tel"
-msgstr "Telefoni:"
-
-#: rules/base.xml.in.h:366
-msgid "Telugu"
-msgstr "Tegulu"
-
-#: rules/base.xml.in.h:367
-msgid "Tha"
-msgstr ""
-
-#: rules/base.xml.in.h:368
-msgid "Thailand"
-msgstr "Tayilande"
-
-#: rules/base.xml.in.h:369
-#, fuzzy
-msgid "Third level choosers"
-msgstr "urwego"
-
-#: rules/base.xml.in.h:370
-msgid "Tilde (~) variant"
-msgstr ""
-
-#: rules/base.xml.in.h:371
-msgid "Tjk"
-msgstr ""
-
-#: rules/base.xml.in.h:372
-msgid "Toshiba Satellite S3000"
-msgstr ""
-
-#: rules/base.xml.in.h:373
-msgid "Trust Direct Access Keyboard"
-msgstr ""
-
-#: rules/base.xml.in.h:374
-msgid "Trust Wireless Keyboard Classic"
-msgstr ""
-
-#: rules/base.xml.in.h:375
-msgid "Tur"
-msgstr ""
-
-#: rules/base.xml.in.h:376
-msgid "Turkish"
-msgstr "Ikinyaturukiya"
-
-#: rules/base.xml.in.h:377
-#, fuzzy
-msgid "Typewrite-style keymap; TAB encoding"
-msgstr "IMISUSIRE Imisobekere:"
-
-#: rules/base.xml.in.h:378
-#, fuzzy
-msgid "Typewrite-style keymap; Unicode encoding"
-msgstr "IMISUSIRE Imisobekere:"
-
-#: rules/base.xml.in.h:379
-#, fuzzy
-msgid "U.S. English"
-msgstr "U."
-
-#: rules/base.xml.in.h:380
-#, fuzzy
-msgid "US keyboard with Croatian letters"
-msgstr "Mwandikisho Na:"
-
-#: rules/base.xml.in.h:381
-#, fuzzy
-msgid "US keyboard with Lithuanian letters"
-msgstr "Mwandikisho Na:"
-
-#: rules/base.xml.in.h:382
-#, fuzzy
-msgid "US keyboard with Maltian letters"
-msgstr "Mwandikisho Na:"
-
-#: rules/base.xml.in.h:383
-#, fuzzy
-msgid "US keyboard with Romanian letters"
-msgstr "Mwandikisho Na:"
-
-#: rules/base.xml.in.h:384
-msgid "USA"
-msgstr "Amerika"
-
-#: rules/base.xml.in.h:385
-msgid "Ukr"
-msgstr ""
-
-#: rules/base.xml.in.h:386
-msgid "Ukraine"
-msgstr "Ikerene"
-
-#. RSTU 2019-91
-#: rules/base.xml.in.h:388
-#, fuzzy
-msgid "Ukrainian standard RSTU"
-msgstr "Bisanzwe"
-
-#: rules/base.xml.in.h:389
-msgid "UnicodeExpert"
-msgstr ""
-
-#: rules/base.xml.in.h:390
-msgid "United Kingdom"
-msgstr "Ubwongereza (UK)"
-
-#: rules/base.xml.in.h:391
-msgid "Urd"
-msgstr ""
-
-#: rules/base.xml.in.h:392
-msgid "Urdu"
-msgstr "Urudu"
-
-#: rules/base.xml.in.h:393
-#, fuzzy
-msgid "Use keyboard LED to show alternative group."
-msgstr "Mwandikisho Kuri Garagaza Itsinda"
-
-#: rules/base.xml.in.h:394
-msgid "Uzb"
-msgstr ""
-
-#: rules/base.xml.in.h:395
-msgid "Uzbekistan"
-msgstr "Uzubekisitani"
-
-# setup2/source\ui\pages\paddr.src:RESID_PAGE_PAGEADDRESS.LB_COUNTRY.121.text
-#: rules/base.xml.in.h:396
-msgid "Vietnam"
-msgstr "Viyetinamu"
-
-#: rules/base.xml.in.h:397
-msgid "Vnm"
-msgstr ""
-
-#: rules/base.xml.in.h:398
-msgid "Winbook Model XP5"
-msgstr ""
-
-#: rules/base.xml.in.h:399
-msgid "Winkeys"
-msgstr ""
-
-#: rules/base.xml.in.h:400
-#, fuzzy
-msgid "With &lt;\\|&gt; key"
-msgstr "Urufunguzo"
-
-#: rules/base.xml.in.h:401
-msgid "With Malayalam digits"
-msgstr ""
-
-#: rules/base.xml.in.h:402
-msgid "With guillemots"
-msgstr ""
-
-#: rules/base.xml.in.h:403
-msgid "Yahoo! Internet Keyboard"
-msgstr ""
-
-#: rules/base.xml.in.h:404
-#, fuzzy
-msgid "Z and ZHE swapped"
-msgstr "Na"
-
-#: rules/base.xml.in.h:405
-msgid "azerty"
-msgstr ""
-
-#: rules/base.xml.in.h:406
-msgid "azerty/digits"
-msgstr ""
-
-#: rules/base.xml.in.h:407
-msgid "digits"
-msgstr ""
-
-#: rules/base.xml.in.h:408
-msgid "lyx"
-msgstr ""
-
-#: rules/base.xml.in.h:409
-msgid "qwerty"
-msgstr ""
-
-#: rules/base.xml.in.h:410
-#, fuzzy
-msgid "qwerty, extended Backslash"
-msgstr "Byongerewe..."
-
-#: rules/base.xml.in.h:411
-msgid "qwerty/digits"
-msgstr ""
-
-#: rules/base.xml.in.h:412
-msgid "qwertz"
-msgstr ""
-
-#: rules/base.xml.in.h:413
-msgid "si1452"
-msgstr ""
+# Kinyarwanda translations for xkeyboard-config package.
+# Copyright (C) 2005 Free Software Foundation, Inc.
+# This file is distributed under the same license as the xkeyboard-config package.
+# Steve Murphy <murf@e-tools.com>, 2005.
+# Steve performed initial rough translation from compendium built from translations provided by the following translators:
+# Philibert Ndandali <ndandali@yahoo.fr>, 2005.
+# Viateur MUGENZI <muvia1@yahoo.fr>, 2005.
+# Noëlla Mupole <s24211045@tuks.co.za>, 2005.
+# Carole Karema <karemacarole@hotmail.com>, 2005.
+# JEAN BAPTISTE NGENDAHAYO <ngenda_denis@yahoo.co.uk>, 2005.
+# Augustin KIBERWA <akiberwa@yahoo.co.uk>, 2005.
+# Donatien NSENGIYUMVA <ndonatienuk@yahoo.co.uk>, 2005.
+# Antoine Bigirimana <antoine@e-tools.com>, 2005.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: xkeyboard-config 0.5\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2005-01-24 22:57+0000\n"
+"PO-Revision-Date: 2005-04-04 10:55-0700\n"
+"Last-Translator: Steven Michael Murphy <murf@e-tools.com>\n"
+"Language-Team: Kinyarwanda <translation-team-rw@lists.sourceforge.net>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+# sc/source\ui\src\scstring.src:SCSTR_STDFILTER.text
+#: rules/base.xml.in.h:1
+#, fuzzy
+msgid "\"Standard\""
+msgstr "\"Bisanzwe-"
+
+#: rules/base.xml.in.h:2
+msgid "\"Typewriter\""
+msgstr ""
+
+#: rules/base.xml.in.h:3
+msgid "(F)"
+msgstr ""
+
+#: rules/base.xml.in.h:4
+#, fuzzy
+msgid "101/qwerty/comma/Dead keys"
+msgstr "Akitso Utubuto"
+
+#: rules/base.xml.in.h:5
+#, fuzzy
+msgid "101/qwerty/comma/Eliminate dead keys"
+msgstr "Akitso Utubuto"
+
+#: rules/base.xml.in.h:6
+#, fuzzy
+msgid "101/qwerty/dot/Dead keys"
+msgstr "Akadomo Utubuto"
+
+#: rules/base.xml.in.h:7
+#, fuzzy
+msgid "101/qwerty/dot/Eliminate dead keys"
+msgstr "Akadomo Utubuto"
+
+#: rules/base.xml.in.h:8
+#, fuzzy
+msgid "101/qwertz/comma/Dead keys"
+msgstr "Akitso Utubuto"
+
+#: rules/base.xml.in.h:9
+#, fuzzy
+msgid "101/qwertz/comma/Eliminate dead keys"
+msgstr "Akitso Utubuto"
+
+#: rules/base.xml.in.h:10
+#, fuzzy
+msgid "101/qwertz/dot/Dead keys"
+msgstr "Akadomo Utubuto"
+
+#: rules/base.xml.in.h:11
+#, fuzzy
+msgid "101/qwertz/dot/Eliminate dead keys"
+msgstr "Akadomo Utubuto"
+
+#: rules/base.xml.in.h:12
+#, fuzzy
+msgid "102/qwerty/comma/Dead keys"
+msgstr "Akitso Utubuto"
+
+#: rules/base.xml.in.h:13
+#, fuzzy
+msgid "102/qwerty/comma/Eliminate dead keys"
+msgstr "Akitso Utubuto"
+
+#: rules/base.xml.in.h:14
+#, fuzzy
+msgid "102/qwerty/dot/Dead keys"
+msgstr "Akadomo Utubuto"
+
+#: rules/base.xml.in.h:15
+#, fuzzy
+msgid "102/qwerty/dot/Eliminate dead keys"
+msgstr "Akadomo Utubuto"
+
+#: rules/base.xml.in.h:16
+#, fuzzy
+msgid "102/qwertz/comma/Dead keys"
+msgstr "Akitso Utubuto"
+
+#: rules/base.xml.in.h:17
+#, fuzzy
+msgid "102/qwertz/comma/Eliminate dead keys"
+msgstr "Akitso Utubuto"
+
+#: rules/base.xml.in.h:18
+#, fuzzy
+msgid "102/qwertz/dot/Dead keys"
+msgstr "Akadomo Utubuto"
+
+#: rules/base.xml.in.h:19
+#, fuzzy
+msgid "102/qwertz/dot/Eliminate dead keys"
+msgstr "Akadomo Utubuto"
+
+#: rules/base.xml.in.h:20
+#, fuzzy
+msgid "A4Tech KB-21"
+msgstr "21"
+
+#: rules/base.xml.in.h:21
+#, fuzzy
+msgid "A4Tech KBS-8"
+msgstr "8"
+
+#: rules/base.xml.in.h:22
+msgid "ACPI Standard"
+msgstr ""
+
+#: rules/base.xml.in.h:23
+#, fuzzy
+msgid "Acer AirKey V"
+msgstr "V"
+
+#: rules/base.xml.in.h:24
+#, fuzzy
+msgid "Add the EuroSign to the 2 key."
+msgstr "i Kuri i 2. Urufunguzo"
+
+#: rules/base.xml.in.h:25
+#, fuzzy
+msgid "Add the EuroSign to the 5 key."
+msgstr "i Kuri i 5 Urufunguzo"
+
+#: rules/base.xml.in.h:26
+#, fuzzy
+msgid "Add the EuroSign to the E key."
+msgstr "i Kuri i E Urufunguzo"
+
+#: rules/base.xml.in.h:27
+#, fuzzy
+msgid "Add the standard behavior to Menu key."
+msgstr "i Bisanzwe imyitwarire Kuri Urufunguzo"
+
+#: rules/base.xml.in.h:28
+#, fuzzy
+msgid "Adding the EuroSign to certain keys"
+msgstr "i Kuri Utubuto"
+
+#: rules/base.xml.in.h:29
+msgid "Advance Scorpius KI"
+msgstr ""
+
+#: rules/base.xml.in.h:30
+msgid "Alb"
+msgstr ""
+
+#: rules/base.xml.in.h:31
+msgid "Albania"
+msgstr "Alubaniya"
+
+#: rules/base.xml.in.h:32
+#, fuzzy
+msgid "Alt and Meta are on the Alt keys (default)."
+msgstr "Na ku i Utubuto Mburabuzi"
+
+#: rules/base.xml.in.h:33
+#, fuzzy
+msgid "Alt is mapped to the right Win-key and Super to Menu."
+msgstr "ni Kuri i Iburyo: Urufunguzo Na Kuri"
+
+#: rules/base.xml.in.h:34
+#, fuzzy
+msgid "Alt+Control changes group."
+msgstr "Amahinduka Itsinda"
+
+#: rules/base.xml.in.h:35
+#, fuzzy
+msgid "Alt+Shift changes group."
+msgstr "Amahinduka Itsinda"
+
+#: rules/base.xml.in.h:36
+msgid "Alt-Q"
+msgstr ""
+
+#: rules/base.xml.in.h:37
+#, fuzzy
+msgid "Alt/Win key behavior"
+msgstr "Urufunguzo imyitwarire"
+
+#: rules/base.xml.in.h:38
+msgid "Alternative"
+msgstr ""
+
+#: rules/base.xml.in.h:39
+#, fuzzy
+msgid "Alternative international (former us_intl)"
+msgstr "Mpuzamahanga"
+
+#: rules/base.xml.in.h:40
+#, fuzzy
+msgid "Alternative, Sun dead keys"
+msgstr "Utubuto"
+
+#: rules/base.xml.in.h:41
+#, fuzzy
+msgid "Alternative, eliminate dead keys"
+msgstr "Utubuto"
+
+#: rules/base.xml.in.h:42
+msgid "Apostrophe (') variant"
+msgstr ""
+
+#: rules/base.xml.in.h:43
+msgid "Ara"
+msgstr ""
+
+#: rules/base.xml.in.h:44
+msgid "Arabic"
+msgstr "Icyarabu"
+
+#: rules/base.xml.in.h:45
+msgid "Arm"
+msgstr ""
+
+#: rules/base.xml.in.h:46
+msgid "Armenia"
+msgstr "Arumeniya"
+
+#: rules/base.xml.in.h:47
+msgid "Aze"
+msgstr ""
+
+#: rules/base.xml.in.h:48
+msgid "Azerbaijan"
+msgstr "Azeribayijani"
+
+#: rules/base.xml.in.h:49
+msgid "Azona RF2300 wireless Internet Keyboard"
+msgstr ""
+
+#: rules/base.xml.in.h:50
+msgid "BTC 5090"
+msgstr ""
+
+#: rules/base.xml.in.h:51
+msgid "BTC 5113RF Multimedia"
+msgstr ""
+
+#: rules/base.xml.in.h:52
+msgid "BTC 5126T"
+msgstr ""
+
+#: rules/base.xml.in.h:53
+msgid "BTC 9000"
+msgstr ""
+
+#: rules/base.xml.in.h:54
+msgid "BTC 9000A"
+msgstr ""
+
+#: rules/base.xml.in.h:55
+msgid "BTC 9001AH"
+msgstr ""
+
+#: rules/base.xml.in.h:56
+msgid "Bel"
+msgstr ""
+
+#: rules/base.xml.in.h:57
+msgid "Belarus"
+msgstr "Belarusi"
+
+#: rules/base.xml.in.h:58
+msgid "Belgium"
+msgstr "Ububiligi"
+
+#: rules/base.xml.in.h:59
+msgid "Ben"
+msgstr ""
+
+#: rules/base.xml.in.h:60
+msgid "Bengali"
+msgstr "Bengali"
+
+#: rules/base.xml.in.h:61
+msgid "Bgr"
+msgstr ""
+
+#: rules/base.xml.in.h:62
+msgid "Bih"
+msgstr ""
+
+#: rules/base.xml.in.h:63
+msgid "Blr"
+msgstr ""
+
+#: rules/base.xml.in.h:64
+msgid "Bosnia and Herzegovina"
+msgstr "Bosiniya na Herizegovina"
+
+#: rules/base.xml.in.h:65
+#, fuzzy
+msgid "Both Alt keys together change group."
+msgstr "Utubuto Guhindura>> Itsinda"
+
+#: rules/base.xml.in.h:66
+#, fuzzy
+msgid "Both Ctrl keys together change group."
+msgstr "Utubuto Guhindura>> Itsinda"
+
+#: rules/base.xml.in.h:67
+#, fuzzy
+msgid "Both Shift keys together change group."
+msgstr "Utubuto Guhindura>> Itsinda"
+
+#: rules/base.xml.in.h:68
+#, fuzzy
+msgid "Both Win-keys switch group while pressed."
+msgstr "Utubuto Hindura Itsinda"
+
+#: rules/base.xml.in.h:69
+msgid "Bra"
+msgstr ""
+
+#: rules/base.xml.in.h:70
+msgid "Brazil"
+msgstr "Burezile"
+
+#: rules/base.xml.in.h:71
+msgid "Brazilian ABNT2"
+msgstr ""
+
+#: rules/base.xml.in.h:72
+msgid "Brother Internet Keyboard"
+msgstr ""
+
+#: rules/base.xml.in.h:73
+msgid "Bulgaria"
+msgstr "Buligariya"
+
+#: rules/base.xml.in.h:74
+msgid "Can"
+msgstr ""
+
+#: rules/base.xml.in.h:75
+msgid "Canada"
+msgstr "Kanada"
+
+#: rules/base.xml.in.h:76
+#, fuzzy
+msgid "CapsLock LED shows alternative group."
+msgstr "Itsinda"
+
+#: rules/base.xml.in.h:77
+#, fuzzy
+msgid "CapsLock acts as Shift with locking. Shift cancels CapsLock."
+msgstr "Nka Na:"
+
+#: rules/base.xml.in.h:78
+#, fuzzy
+msgid "CapsLock acts as Shift with locking. Shift doesn't cancel CapsLock."
+msgstr "Nka Na: Kureka"
+
+#: rules/base.xml.in.h:79
+#, fuzzy
+msgid "CapsLock just locks the Shift modifier."
+msgstr "i"
+
+#: rules/base.xml.in.h:80
+#, fuzzy
+msgid "CapsLock key behavior"
+msgstr "Urufunguzo imyitwarire"
+
+#: rules/base.xml.in.h:81
+#, fuzzy
+msgid "CapsLock key changes group."
+msgstr "Urufunguzo Amahinduka Itsinda"
+
+#: rules/base.xml.in.h:82
+#, fuzzy
+msgid "CapsLock toggles Shift so all keys are affected."
+msgstr "Byose Utubuto"
+
+#: rules/base.xml.in.h:83
+#, fuzzy
+msgid "CapsLock toggles normal capitalization of alphabetic characters."
+msgstr "Bisanzwe Bya Inyuguti"
+
+#: rules/base.xml.in.h:84
+#, fuzzy
+msgid "CapsLock uses internal capitalization. Shift cancels CapsLock."
+msgstr "By'imbere"
+
+#: rules/base.xml.in.h:85
+#, fuzzy
+msgid "CapsLock uses internal capitalization. Shift doesn't cancel CapsLock."
+msgstr "By'imbere Kureka"
+
+#: rules/base.xml.in.h:86
+msgid "Che"
+msgstr ""
+
+#: rules/base.xml.in.h:87
+msgid "Cherry Blue Line CyBo@rd"
+msgstr ""
+
+#: rules/base.xml.in.h:88
+#, fuzzy
+msgid "Cherry Blue Line CyBo@rd (alternate option)"
+msgstr "Ihitamo"
+
+#: rules/base.xml.in.h:89
+msgid "Chicony Internet Keyboard"
+msgstr ""
+
+#: rules/base.xml.in.h:90
+msgid "Chicony KB-9885"
+msgstr ""
+
+#: rules/base.xml.in.h:91
+msgid "CloGaelach"
+msgstr ""
+
+#: rules/base.xml.in.h:92
+msgid "CloGaelach Laptop"
+msgstr ""
+
+#: rules/base.xml.in.h:93
+msgid "Compaq Easy Access Keyboard"
+msgstr ""
+
+#: rules/base.xml.in.h:94
+#, fuzzy
+msgid "Compaq Internet Keyboard (13 keys)"
+msgstr "Utubuto"
+
+#: rules/base.xml.in.h:95
+#, fuzzy
+msgid "Compaq Internet Keyboard (18 keys)"
+msgstr "Utubuto"
+
+#: rules/base.xml.in.h:96
+#, fuzzy
+msgid "Compaq Internet Keyboard (7 keys)"
+msgstr "7 Utubuto"
+
+#: rules/base.xml.in.h:97
+msgid "Compaq iPaq Keyboard"
+msgstr ""
+
+#: rules/base.xml.in.h:98
+msgid "Control Key Position"
+msgstr ""
+
+#: rules/base.xml.in.h:99
+#, fuzzy
+msgid "Control key at bottom left"
+msgstr "Urufunguzo ku Hasi: Ibumoso:"
+
+#: rules/base.xml.in.h:100
+#, fuzzy
+msgid "Control key at left of 'A'"
+msgstr "Urufunguzo ku Ibumoso: Bya"
+
+#: rules/base.xml.in.h:101
+#, fuzzy
+msgid "Control+Shift changes group."
+msgstr "Amahinduka Itsinda"
+
+#: rules/base.xml.in.h:102
+msgid "Croatia"
+msgstr "Korowatiya"
+
+#: rules/base.xml.in.h:103
+msgid "Cyrillic"
+msgstr "Nyasilike"
+
+#: rules/base.xml.in.h:104
+msgid "Cze"
+msgstr ""
+
+#: rules/base.xml.in.h:105
+msgid "Czechia"
+msgstr ""
+
+#: rules/base.xml.in.h:106
+msgid "DTK2000"
+msgstr ""
+
+#: rules/base.xml.in.h:107
+msgid "Dead acute"
+msgstr ""
+
+#: rules/base.xml.in.h:108
+msgid "Dead grave acute"
+msgstr ""
+
+#: rules/base.xml.in.h:109
+msgid "Dell"
+msgstr ""
+
+#: rules/base.xml.in.h:110
+#, fuzzy
+msgid "Dell 101-key PC"
+msgstr "Urufunguzo"
+
+#: rules/base.xml.in.h:111
+msgid "Denmark"
+msgstr "Danimarike"
+
+#: rules/base.xml.in.h:112
+msgid "Deu"
+msgstr ""
+
+#: rules/base.xml.in.h:113
+msgid "Deva"
+msgstr ""
+
+#: rules/base.xml.in.h:114
+msgid "Devanagari"
+msgstr "Devanagari"
+
+#: rules/base.xml.in.h:115
+msgid "Dexxa Wireless Desktop Keyboard"
+msgstr ""
+
+#: rules/base.xml.in.h:116
+#, fuzzy
+msgid "Diamond 9801 / 9802 series"
+msgstr "Ibyiciro"
+
+#: rules/base.xml.in.h:117
+msgid "Dnk"
+msgstr ""
+
+#: rules/base.xml.in.h:118
+msgid "Dvorak"
+msgstr ""
+
+#: rules/base.xml.in.h:119
+#, fuzzy
+msgid "Dvorak, Polish quotes on key \"1/!\""
+msgstr "ku Urufunguzo 1."
+
+#: rules/base.xml.in.h:120
+#, fuzzy
+msgid "Dvorak, Polish quotes on quotemark key"
+msgstr "ku Urufunguzo"
+
+#: rules/base.xml.in.h:121
+msgid "Dzo"
+msgstr ""
+
+#: rules/base.xml.in.h:122
+msgid "Dzongkha"
+msgstr "Ikinyazongika"
+
+#: rules/base.xml.in.h:123
+#, fuzzy
+msgid "Eliminate dead keys"
+msgstr "Utubuto"
+
+#: rules/base.xml.in.h:124
+msgid "Ennyah DKB-1008"
+msgstr ""
+
+#: rules/base.xml.in.h:125
+msgid "Esp"
+msgstr ""
+
+#: rules/base.xml.in.h:126
+msgid "Est"
+msgstr ""
+
+#: rules/base.xml.in.h:127
+msgid "Estonia"
+msgstr "Esitoniya"
+
+#: rules/base.xml.in.h:128
+msgid "Everex STEPnote"
+msgstr ""
+
+#: rules/base.xml.in.h:129
+msgid "Extended"
+msgstr "cya/byagutse"
+
+#: rules/base.xml.in.h:130
+msgid "Extended Backslash"
+msgstr ""
+
+#: rules/base.xml.in.h:131
+#, fuzzy
+msgid "F-letter (F) variant"
+msgstr "Ibaruwa..."
+
+#: rules/base.xml.in.h:132
+msgid "Fao"
+msgstr ""
+
+#: rules/base.xml.in.h:133
+msgid "Faroe Islands"
+msgstr "Ibirwa bya Farowe"
+
+#: rules/base.xml.in.h:134
+msgid "Fin"
+msgstr ""
+
+#: rules/base.xml.in.h:135
+#, fuzzy
+msgid "Finish and Swedish"
+msgstr "Na"
+
+#: rules/base.xml.in.h:136
+msgid "Finland"
+msgstr "Finilande"
+
+#: rules/base.xml.in.h:137
+msgid "Fra"
+msgstr ""
+
+#: rules/base.xml.in.h:138
+msgid "France"
+msgstr "Ubufaransa"
+
+#: rules/base.xml.in.h:139
+msgid "French"
+msgstr "Igifaransa"
+
+#: rules/base.xml.in.h:140
+msgid "French (legacy)"
+msgstr ""
+
+#: rules/base.xml.in.h:141
+msgid "French Dvorak"
+msgstr ""
+
+#: rules/base.xml.in.h:142
+#, fuzzy
+msgid "French, Sun dead keys"
+msgstr "Utubuto"
+
+#: rules/base.xml.in.h:143
+#, fuzzy
+msgid "French, eliminate dead keys"
+msgstr "Utubuto"
+
+#: rules/base.xml.in.h:144
+msgid "GBr"
+msgstr ""
+
+#: rules/base.xml.in.h:145
+#, fuzzy
+msgid "Generic 101-key PC"
+msgstr "Urufunguzo"
+
+#: rules/base.xml.in.h:146
+#, fuzzy
+msgid "Generic 102-key (Intl) PC"
+msgstr "Urufunguzo"
+
+#: rules/base.xml.in.h:147
+#, fuzzy
+msgid "Generic 104-key PC"
+msgstr "Urufunguzo"
+
+#: rules/base.xml.in.h:148
+#, fuzzy
+msgid "Generic 105-key (Intl) PC"
+msgstr "Urufunguzo"
+
+#: rules/base.xml.in.h:149
+msgid "Genius Comfy KB-16M / Genius MM Keyboard KWD-910"
+msgstr ""
+
+#: rules/base.xml.in.h:150
+msgid "Genius Comfy KB-21e-Scroll"
+msgstr ""
+
+#: rules/base.xml.in.h:151
+msgid "Geo"
+msgstr ""
+
+#: rules/base.xml.in.h:152
+msgid "Georgia"
+msgstr "Geworigiya"
+
+#: rules/base.xml.in.h:153
+#, fuzzy
+msgid "German, Sun dead keys"
+msgstr "Utubuto"
+
+#: rules/base.xml.in.h:154
+#, fuzzy
+msgid "German, eliminate dead keys"
+msgstr "Utubuto"
+
+#: rules/base.xml.in.h:155
+msgid "Germany"
+msgstr "Ubudage"
+
+#: rules/base.xml.in.h:156
+msgid "Gre"
+msgstr ""
+
+#: rules/base.xml.in.h:157
+msgid "Greece"
+msgstr "Ikigereki"
+
+#: rules/base.xml.in.h:158
+#, fuzzy
+msgid "Group Shift/Lock behavior"
+msgstr "imyitwarire"
+
+#: rules/base.xml.in.h:159
+msgid "Guj"
+msgstr ""
+
+#: rules/base.xml.in.h:160
+msgid "Gujarati"
+msgstr "Gujarati"
+
+#: rules/base.xml.in.h:161
+msgid "Gurmukhi"
+msgstr "Gurumuki"
+
+#: rules/base.xml.in.h:162
+msgid "Guru"
+msgstr ""
+
+#: rules/base.xml.in.h:163
+msgid "Gyration"
+msgstr ""
+
+#: rules/base.xml.in.h:164
+msgid "Hewlett-Packard Internet Keyboard"
+msgstr ""
+
+#: rules/base.xml.in.h:165
+#, fuzzy
+msgid "Hewlett-Packard Omnibook 500 FA"
+msgstr "500"
+
+#: rules/base.xml.in.h:166
+msgid "Hewlett-Packard Omnibook 5xx"
+msgstr ""
+
+#: rules/base.xml.in.h:167
+msgid "Hewlett-Packard Omnibook 6000/6100"
+msgstr ""
+
+#: rules/base.xml.in.h:168
+msgid "Hewlett-Packard Omnibook XE3 GC"
+msgstr ""
+
+#: rules/base.xml.in.h:169
+msgid "Hewlett-Packard Omnibook XE3 GF"
+msgstr ""
+
+#: rules/base.xml.in.h:170
+msgid "Hewlett-Packard Omnibook XT1000"
+msgstr ""
+
+#: rules/base.xml.in.h:171
+msgid "Hewlett-Packard Pavilion ZT11xx"
+msgstr ""
+
+#: rules/base.xml.in.h:172
+msgid "Hewlett-Packard SK-2501 Multimedia Keyboard"
+msgstr ""
+
+#: rules/base.xml.in.h:173
+msgid "Hewlett-Packard SK-2505 Internet Keyboard"
+msgstr ""
+
+#: rules/base.xml.in.h:174
+msgid "Honeywell Euroboard"
+msgstr ""
+
+#: rules/base.xml.in.h:175
+msgid "Hrv"
+msgstr ""
+
+#: rules/base.xml.in.h:176
+msgid "Hun"
+msgstr ""
+
+#: rules/base.xml.in.h:177
+msgid "Hungary"
+msgstr "Hongiriya"
+
+#: rules/base.xml.in.h:178
+#, fuzzy
+msgid "Hyper is mapped to the Win-keys."
+msgstr "ni Kuri i Utubuto"
+
+#: rules/base.xml.in.h:179
+msgid "IBM Rapid Access"
+msgstr ""
+
+#: rules/base.xml.in.h:180
+msgid "IBM Rapid Access II"
+msgstr ""
+
+#: rules/base.xml.in.h:181
+#, fuzzy
+msgid "IBM Rapid Access II (alternate option)"
+msgstr "Ihitamo"
+
+#: rules/base.xml.in.h:182
+#, fuzzy
+msgid "IBM ThinkPad 560Z/600/600E/A22E"
+msgstr "600"
+
+#: rules/base.xml.in.h:183
+#, fuzzy
+msgid "INSCRIPT layout"
+msgstr "Imigaragarire"
+
+#: rules/base.xml.in.h:184
+msgid "IS434"
+msgstr ""
+
+#: rules/base.xml.in.h:185
+msgid "IS434 laptop"
+msgstr ""
+
+#: rules/base.xml.in.h:186
+msgid "ISO Alternate"
+msgstr ""
+
+#: rules/base.xml.in.h:187
+msgid "Iceland"
+msgstr "Isilande"
+
+#: rules/base.xml.in.h:188
+msgid "Iku"
+msgstr ""
+
+#: rules/base.xml.in.h:189
+#, fuzzy
+msgid "International (with dead keys)"
+msgstr "Na: Utubuto"
+
+#: rules/base.xml.in.h:190
+msgid "Inuktitut"
+msgstr "Ikinukititutu"
+
+#: rules/base.xml.in.h:191
+msgid "Iran"
+msgstr ""
+
+#: rules/base.xml.in.h:192
+msgid "Ireland"
+msgstr "Irilande"
+
+#: rules/base.xml.in.h:193
+msgid "Irl"
+msgstr ""
+
+#: rules/base.xml.in.h:194
+msgid "Irn"
+msgstr ""
+
+#: rules/base.xml.in.h:195
+msgid "Isl"
+msgstr ""
+
+#: rules/base.xml.in.h:196
+msgid "Isr"
+msgstr ""
+
+#: rules/base.xml.in.h:197
+msgid "Israel"
+msgstr "Isirayeli"
+
+#: rules/base.xml.in.h:198
+msgid "Ita"
+msgstr ""
+
+#: rules/base.xml.in.h:199
+msgid "Italy"
+msgstr "Ubutariyani"
+
+#: rules/base.xml.in.h:200
+msgid "Japan"
+msgstr "Ubuyapani"
+
+#: rules/base.xml.in.h:201
+#, fuzzy
+msgid "Japanese 106-key"
+msgstr "Urufunguzo"
+
+#: rules/base.xml.in.h:202
+msgid "Jpn"
+msgstr ""
+
+#: rules/base.xml.in.h:203
+msgid "Kan"
+msgstr ""
+
+#: rules/base.xml.in.h:204
+msgid "Kannada"
+msgstr "Kannada"
+
+#: rules/base.xml.in.h:205
+msgid "Keytronic FlexPro"
+msgstr ""
+
+#: rules/base.xml.in.h:206
+msgid "Kyr"
+msgstr ""
+
+#: rules/base.xml.in.h:207
+msgid "Kyrgyzstan"
+msgstr "Kirigizasitani"
+
+#: rules/base.xml.in.h:208
+msgid "LAm"
+msgstr ""
+
+#: rules/base.xml.in.h:209
+msgid "Lao"
+msgstr "Lawo"
+
+#: rules/base.xml.in.h:210
+msgid "Laos"
+msgstr ""
+
+#: rules/base.xml.in.h:211
+msgid "Laptop"
+msgstr ""
+
+#: rules/base.xml.in.h:212
+msgid "Laptop/notebook Compaq (eg. Armada) Laptop Keyboard"
+msgstr ""
+
+#: rules/base.xml.in.h:213
+msgid "Laptop/notebook Compaq (eg. Presario) Internet Keyboard"
+msgstr ""
+
+#: rules/base.xml.in.h:214
+msgid "Laptop/notebook Dell Inspiron 8xxx"
+msgstr ""
+
+#: rules/base.xml.in.h:215
+msgid "Latin"
+msgstr "Ikiratini"
+
+#: rules/base.xml.in.h:216
+msgid "Latin American"
+msgstr ""
+
+#: rules/base.xml.in.h:217
+msgid "Latin Unicode"
+msgstr ""
+
+#: rules/base.xml.in.h:218
+msgid "Latin Unicode qwerty"
+msgstr ""
+
+#: rules/base.xml.in.h:219
+msgid "Latin qwerty"
+msgstr ""
+
+#: rules/base.xml.in.h:220
+#, fuzzy
+msgid "Latin with guillemots"
+msgstr "Na:"
+
+#: rules/base.xml.in.h:221
+msgid "Latvia"
+msgstr "Lativiya"
+
+#: rules/base.xml.in.h:222
+#, fuzzy
+msgid "Left Alt key changes group."
+msgstr "Urufunguzo Amahinduka Itsinda"
+
+#: rules/base.xml.in.h:223
+#, fuzzy
+msgid "Left Alt key switches group while pressed."
+msgstr "Urufunguzo Itsinda"
+
+#: rules/base.xml.in.h:224
+#, fuzzy
+msgid "Left Ctrl key changes group."
+msgstr "Urufunguzo Amahinduka Itsinda"
+
+#: rules/base.xml.in.h:225
+#, fuzzy
+msgid "Left Shift key changes group."
+msgstr "Urufunguzo Amahinduka Itsinda"
+
+#: rules/base.xml.in.h:226
+#, fuzzy
+msgid "Left Win-key changes group."
+msgstr "Urufunguzo Amahinduka Itsinda"
+
+#: rules/base.xml.in.h:227
+#, fuzzy
+msgid "Left Win-key switches group while pressed."
+msgstr "Urufunguzo Itsinda"
+
+#: rules/base.xml.in.h:228
+msgid "Lithuania"
+msgstr "Lituwaniya"
+
+#: rules/base.xml.in.h:229
+msgid "Logitech Access Keyboard"
+msgstr ""
+
+#: rules/base.xml.in.h:230
+msgid "Logitech Cordless Desktop"
+msgstr ""
+
+#: rules/base.xml.in.h:231
+msgid "Logitech Cordless Desktop Navigator"
+msgstr ""
+
+#: rules/base.xml.in.h:232
+msgid "Logitech Cordless Desktop Optical"
+msgstr ""
+
+#: rules/base.xml.in.h:233
+msgid "Logitech Cordless Desktop Pro"
+msgstr ""
+
+#: rules/base.xml.in.h:234
+#, fuzzy
+msgid "Logitech Cordless Desktop Pro (alternate option)"
+msgstr "Ihitamo"
+
+#: rules/base.xml.in.h:235
+msgid "Logitech Cordless Desktop Pro (alternate option2)"
+msgstr ""
+
+#: rules/base.xml.in.h:236
+msgid "Logitech Cordless Desktop iTouch"
+msgstr ""
+
+#: rules/base.xml.in.h:237
+msgid "Logitech Cordless Freedom/Desktop Navigator"
+msgstr ""
+
+#: rules/base.xml.in.h:238
+msgid "Logitech Deluxe Access Keyboard"
+msgstr ""
+
+#: rules/base.xml.in.h:239
+msgid "Logitech Internet Keyboard"
+msgstr ""
+
+#: rules/base.xml.in.h:240
+msgid "Logitech Internet Navigator Keyboard"
+msgstr ""
+
+#: rules/base.xml.in.h:241
+msgid "Logitech iTouch"
+msgstr ""
+
+#: rules/base.xml.in.h:242
+#, fuzzy
+msgid "Logitech iTouch Cordless Keyboard (model Y-RB6)"
+msgstr "Urugero"
+
+#: rules/base.xml.in.h:243
+#, fuzzy
+msgid "Logitech iTouch keyboard Internet Navigator"
+msgstr "Mwandikisho"
+
+#: rules/base.xml.in.h:244
+msgid "Ltu"
+msgstr ""
+
+#: rules/base.xml.in.h:245
+msgid "Lva"
+msgstr ""
+
+#: rules/base.xml.in.h:246
+msgid "Macedonian"
+msgstr "Nyamasedoniya"
+
+#: rules/base.xml.in.h:247
+msgid "Macintosh"
+msgstr "masinitoshi"
+
+#: rules/base.xml.in.h:248
+msgid "Macintosh Old"
+msgstr ""
+
+#: rules/base.xml.in.h:249
+msgid "Make CapsLock an additional Control."
+msgstr ""
+
+#: rules/base.xml.in.h:250
+msgid "Mal"
+msgstr ""
+
+#: rules/base.xml.in.h:251
+msgid "Malayalam"
+msgstr "Malayalamu"
+
+#: rules/base.xml.in.h:252
+msgid "Malta"
+msgstr "Malita"
+
+#: rules/base.xml.in.h:253
+msgid "Mao"
+msgstr ""
+
+#: rules/base.xml.in.h:254
+msgid "Maori"
+msgstr "Ikimawori"
+
+#: rules/base.xml.in.h:255
+msgid "Memorex MX1998"
+msgstr ""
+
+#: rules/base.xml.in.h:256
+msgid "Memorex MX2500 EZ-Access Keyboard"
+msgstr ""
+
+#: rules/base.xml.in.h:257
+msgid "Memorex MX2750"
+msgstr ""
+
+#: rules/base.xml.in.h:258
+#, fuzzy
+msgid "Menu is Compose."
+msgstr "ni"
+
+#: rules/base.xml.in.h:259
+#, fuzzy
+msgid "Menu key changes group."
+msgstr "Urufunguzo Amahinduka Itsinda"
+
+#: rules/base.xml.in.h:260
+#, fuzzy
+msgid "Meta is mapped to the Win-keys."
+msgstr "ni Kuri i Utubuto"
+
+#: rules/base.xml.in.h:261
+#, fuzzy
+msgid "Meta is mapped to the left Win-key."
+msgstr "ni Kuri i Ibumoso: Urufunguzo"
+
+#: rules/base.xml.in.h:262
+msgid "Microsoft Internet Keyboard"
+msgstr ""
+
+#: rules/base.xml.in.h:263
+msgid "Microsoft Internet Keyboard Pro, Swedish"
+msgstr ""
+
+#: rules/base.xml.in.h:264
+msgid "Microsoft Natural"
+msgstr ""
+
+#: rules/base.xml.in.h:265
+msgid "Microsoft Natural Keyboard Pro / Microsoft Internet Keyboard Pro"
+msgstr ""
+
+#: rules/base.xml.in.h:266
+msgid "Microsoft Natural Keyboard Pro OEM"
+msgstr ""
+
+#: rules/base.xml.in.h:267
+msgid "Microsoft Natural Keyboard Pro USB / Microsoft Internet Keyboard Pro"
+msgstr ""
+
+#: rules/base.xml.in.h:268
+msgid "Microsoft Office Keyboard"
+msgstr ""
+
+#: rules/base.xml.in.h:269
+#, fuzzy
+msgid "Microsoft Wireless Multimedia Keyboard 1.0A"
+msgstr "1."
+
+#: rules/base.xml.in.h:270
+#, fuzzy
+msgid "Miscellaneous compatibility options"
+msgstr "Bihuye neza Amahitamo"
+
+#: rules/base.xml.in.h:271
+msgid "Mkd"
+msgstr ""
+
+#: rules/base.xml.in.h:272
+msgid "Mlt"
+msgstr ""
+
+#: rules/base.xml.in.h:273
+msgid "Mmr"
+msgstr ""
+
+#: rules/base.xml.in.h:274
+msgid "Mng"
+msgstr ""
+
+#: rules/base.xml.in.h:275
+msgid "Mongolia"
+msgstr "Mongoliya"
+
+#: rules/base.xml.in.h:276
+msgid "Multilingual"
+msgstr ""
+
+#: rules/base.xml.in.h:277
+#, fuzzy
+msgid "Multilingual, second part"
+msgstr "ISEGONDA"
+
+#: rules/base.xml.in.h:278
+msgid "Myanmar"
+msgstr "Myanmar"
+
+#: rules/base.xml.in.h:279
+msgid "Netherlands"
+msgstr "Nederilande"
+
+#: rules/base.xml.in.h:280
+msgid "Nld"
+msgstr ""
+
+#: rules/base.xml.in.h:281
+msgid "Nor"
+msgstr ""
+
+#: rules/base.xml.in.h:282
+msgid "Northern Saami"
+msgstr "Sami y'Amajyaruguru"
+
+#: rules/base.xml.in.h:283
+msgid "Northgate OmniKey 101"
+msgstr ""
+
+#: rules/base.xml.in.h:284
+msgid "Norway"
+msgstr "Noruveje"
+
+#: rules/base.xml.in.h:285
+#, fuzzy
+msgid "NumLock LED shows alternative group."
+msgstr "Itsinda"
+
+#: rules/base.xml.in.h:286
+msgid "Ogam"
+msgstr ""
+
+#: rules/base.xml.in.h:287
+msgid "Ogham"
+msgstr "Ogham"
+
+#: rules/base.xml.in.h:288
+#, fuzzy
+msgid "Oretec MCK-800 MM/Internet keyboard"
+msgstr "Mwandikisho"
+
+#: rules/base.xml.in.h:289
+msgid "Ori"
+msgstr ""
+
+#: rules/base.xml.in.h:290
+msgid "Oriya"
+msgstr "Oriya"
+
+#: rules/base.xml.in.h:291
+msgid "PC-98xx Series"
+msgstr ""
+
+#: rules/base.xml.in.h:292
+msgid "Pattachote"
+msgstr ""
+
+#: rules/base.xml.in.h:293
+#, fuzzy
+msgid "Phonetic"
+msgstr "Nyigamvugo:"
+
+#: rules/base.xml.in.h:294
+msgid "Pol"
+msgstr ""
+
+#: rules/base.xml.in.h:295
+msgid "Poland"
+msgstr "Polonye"
+
+#: rules/base.xml.in.h:296
+msgid "Polytonic"
+msgstr ""
+
+#: rules/base.xml.in.h:297
+msgid "Portugal"
+msgstr "Porutigali"
+
+#: rules/base.xml.in.h:298
+#, fuzzy
+msgid "PowerPC PS/2"
+msgstr "2."
+
+#: rules/base.xml.in.h:299
+#, fuzzy
+msgid "Press Left Alt key to choose 3rd level."
+msgstr "Urufunguzo Kuri Guhitamo urwego"
+
+#: rules/base.xml.in.h:300
+#, fuzzy
+msgid "Press Left Win-key to choose 3rd level."
+msgstr "Urufunguzo Kuri Guhitamo urwego"
+
+#: rules/base.xml.in.h:301
+#, fuzzy
+msgid "Press Menu key to choose 3rd level."
+msgstr "Urufunguzo Kuri Guhitamo urwego"
+
+#: rules/base.xml.in.h:302
+#, fuzzy
+msgid "Press Right Alt key to choose 3rd level."
+msgstr "Urufunguzo Kuri Guhitamo urwego"
+
+#: rules/base.xml.in.h:303
+#, fuzzy
+msgid "Press Right Control to choose 3rd level."
+msgstr "Kuri Guhitamo urwego"
+
+#: rules/base.xml.in.h:304
+#, fuzzy
+msgid "Press Right Win-key to choose 3rd level."
+msgstr "Urufunguzo Kuri Guhitamo urwego"
+
+#: rules/base.xml.in.h:305
+#, fuzzy
+msgid "Press any of Alt keys to choose 3rd level."
+msgstr "Bya Utubuto Kuri Guhitamo urwego"
+
+#: rules/base.xml.in.h:306
+#, fuzzy
+msgid "Press any of Win-keys to choose 3rd level."
+msgstr "Bya Utubuto Kuri Guhitamo urwego"
+
+#: rules/base.xml.in.h:307
+msgid "Probhat"
+msgstr ""
+
+#: rules/base.xml.in.h:308
+#, fuzzy
+msgid "Propeller Voyager (KTEZ-1000)"
+msgstr "1000"
+
+#: rules/base.xml.in.h:309
+msgid "Prt"
+msgstr ""
+
+#: rules/base.xml.in.h:310
+msgid "QTronix Scorpius 98N+"
+msgstr ""
+
+#: rules/base.xml.in.h:311
+#, fuzzy
+msgid "R-Alt switches group while pressed."
+msgstr "Itsinda"
+
+#: rules/base.xml.in.h:312
+#, fuzzy
+msgid "Right Alt is Compose."
+msgstr "ni"
+
+#: rules/base.xml.in.h:313
+#, fuzzy
+msgid "Right Alt key changes group."
+msgstr "Urufunguzo Amahinduka Itsinda"
+
+#: rules/base.xml.in.h:314
+#, fuzzy
+msgid "Right Control key works as Right Alt."
+msgstr "Urufunguzo Nka"
+
+#: rules/base.xml.in.h:315
+#, fuzzy
+msgid "Right Ctrl is Compose."
+msgstr "ni"
+
+#: rules/base.xml.in.h:316
+#, fuzzy
+msgid "Right Ctrl key changes group."
+msgstr "Urufunguzo Amahinduka Itsinda"
+
+#: rules/base.xml.in.h:317
+#, fuzzy
+msgid "Right Ctrl key switches group while pressed."
+msgstr "Urufunguzo Itsinda"
+
+#: rules/base.xml.in.h:318
+#, fuzzy
+msgid "Right Shift key changes group."
+msgstr "Urufunguzo Amahinduka Itsinda"
+
+#: rules/base.xml.in.h:319
+#, fuzzy
+msgid "Right Win-key changes group."
+msgstr "Urufunguzo Amahinduka Itsinda"
+
+#: rules/base.xml.in.h:320
+#, fuzzy
+msgid "Right Win-key is Compose."
+msgstr "Urufunguzo ni"
+
+#: rules/base.xml.in.h:321
+#, fuzzy
+msgid "Right Win-key switches group while pressed."
+msgstr "Urufunguzo Itsinda"
+
+#: rules/base.xml.in.h:322
+msgid "Romania"
+msgstr "Romaniya"
+
+#: rules/base.xml.in.h:323
+#, fuzzy
+msgid "Romanian keyboard with German letters"
+msgstr "Mwandikisho Na:"
+
+#: rules/base.xml.in.h:324
+#, fuzzy
+msgid "Romanian keyboard with German letters, eliminate dead keys"
+msgstr "Mwandikisho Na: Utubuto"
+
+#: rules/base.xml.in.h:325
+msgid "Rou"
+msgstr ""
+
+#: rules/base.xml.in.h:326
+msgid "Rus"
+msgstr ""
+
+#: rules/base.xml.in.h:327
+msgid "Russia"
+msgstr ""
+
+#: rules/base.xml.in.h:328
+msgid "Russian"
+msgstr "Ikirusiya"
+
+#: rules/base.xml.in.h:329
+msgid "SK-1300"
+msgstr ""
+
+#: rules/base.xml.in.h:330
+msgid "SK-2500"
+msgstr ""
+
+#: rules/base.xml.in.h:331
+msgid "SK-6200"
+msgstr ""
+
+#: rules/base.xml.in.h:332
+msgid "SK-7100"
+msgstr ""
+
+#: rules/base.xml.in.h:333
+msgid "SVEN Ergonomic 2500"
+msgstr ""
+
+#: rules/base.xml.in.h:334
+msgid "Samsung SDM 4500P"
+msgstr ""
+
+#: rules/base.xml.in.h:335
+msgid "Samsung SDM 4510P"
+msgstr ""
+
+#: rules/base.xml.in.h:336
+#, fuzzy
+msgid "ScrollLock LED shows alternative group."
+msgstr "Itsinda"
+
+#: rules/base.xml.in.h:337
+msgid "Serbian"
+msgstr "Ikinyaseribiya"
+
+#: rules/base.xml.in.h:338
+#, fuzzy
+msgid "Shift with numpad keys works as in MS Windows."
+msgstr "Na: Utubuto Nka in"
+
+#: rules/base.xml.in.h:339
+#, fuzzy
+msgid "Shift+CapsLock changes group."
+msgstr "Amahinduka Itsinda"
+
+# sc/source\core\src\compiler.src:RID_SC_FUNCTION_NAMES.SC_OPCODE_SIN.text
+#: rules/base.xml.in.h:340
+#, fuzzy
+msgid "Sin"
+msgstr "SIN"
+
+#: rules/base.xml.in.h:341
+msgid "Sinhala"
+msgstr "Sinhala"
+
+#: rules/base.xml.in.h:342
+msgid "Slovakia"
+msgstr "Silovakiya"
+
+#: rules/base.xml.in.h:343
+msgid "Slovenia"
+msgstr "Siloveniya"
+
+#: rules/base.xml.in.h:344
+msgid "Smi"
+msgstr ""
+
+#: rules/base.xml.in.h:345
+msgid "Spain"
+msgstr "Esipanye"
+
+#: rules/base.xml.in.h:346
+#, fuzzy
+msgid "Special keys (Ctrl+Alt+&lt;key&gt;) handled in a server."
+msgstr "Utubuto in a Seriveri"
+
+#: rules/base.xml.in.h:347
+msgid "Srp"
+msgstr ""
+
+#: rules/base.xml.in.h:348
+msgid "Standard"
+msgstr "gisanzwe/kimenyerewe"
+
+#: rules/base.xml.in.h:349
+#, fuzzy
+msgid "Sun dead keys"
+msgstr "Utubuto"
+
+#: rules/base.xml.in.h:350
+msgid "Super Power Multimedia Keyboard"
+msgstr ""
+
+#: rules/base.xml.in.h:351
+#, fuzzy
+msgid "Super is mapped to the Win-keys (default)."
+msgstr "ni Kuri i Utubuto Mburabuzi"
+
+#: rules/base.xml.in.h:352
+msgid "Svk"
+msgstr ""
+
+#: rules/base.xml.in.h:353
+msgid "Svn"
+msgstr ""
+
+#: rules/base.xml.in.h:354
+#, fuzzy
+msgid "Swap Control and CapsLock."
+msgstr "Na"
+
+#: rules/base.xml.in.h:355
+msgid "Swe"
+msgstr ""
+
+#: rules/base.xml.in.h:356
+msgid "Sweden"
+msgstr "Suwede"
+
+#: rules/base.xml.in.h:357
+msgid "Switzerland"
+msgstr "Ubusuwisi"
+
+#: rules/base.xml.in.h:358
+msgid "Symplon PaceBook (tablet PC)"
+msgstr ""
+
+#: rules/base.xml.in.h:359
+msgid "Syr"
+msgstr ""
+
+#: rules/base.xml.in.h:360
+msgid "Syriac"
+msgstr "Syriac"
+
+#: rules/base.xml.in.h:361
+msgid "TIS-820.2538"
+msgstr ""
+
+#: rules/base.xml.in.h:362
+msgid "Tajikistan"
+msgstr "Tajikisitani"
+
+#: rules/base.xml.in.h:363
+msgid "Tam"
+msgstr ""
+
+#: rules/base.xml.in.h:364
+msgid "Tamil"
+msgstr "Tamili"
+
+# #-#-#-#-# sw.pot (PACKAGE VERSION) #-#-#-#-#
+# sw/source\ui\wizard\wizbmp.src:STR_GoF_AbsTelefon.text
+# #-#-#-#-# sw.pot (PACKAGE VERSION) #-#-#-#-#
+# sw/source\ui\wizard\wizbmp.src:STR_GoF_EmpTelefon.text
+# #-#-#-#-# sw.pot (PACKAGE VERSION) #-#-#-#-#
+# sw/source\ui\wizard\wizbmp.src:STR_Usr_TelePrivat.text
+# #-#-#-#-# sw.pot (PACKAGE VERSION) #-#-#-#-#
+# sw/source\ui\wizard\wizbmp.src:STR_Usr_TeleDienst.text
+#: rules/base.xml.in.h:365
+#, fuzzy
+msgid "Tel"
+msgstr "Telefoni:"
+
+#: rules/base.xml.in.h:366
+msgid "Telugu"
+msgstr "Tegulu"
+
+#: rules/base.xml.in.h:367
+msgid "Tha"
+msgstr ""
+
+#: rules/base.xml.in.h:368
+msgid "Thailand"
+msgstr "Tayilande"
+
+#: rules/base.xml.in.h:369
+#, fuzzy
+msgid "Third level choosers"
+msgstr "urwego"
+
+#: rules/base.xml.in.h:370
+msgid "Tilde (~) variant"
+msgstr ""
+
+#: rules/base.xml.in.h:371
+msgid "Tjk"
+msgstr ""
+
+#: rules/base.xml.in.h:372
+msgid "Toshiba Satellite S3000"
+msgstr ""
+
+#: rules/base.xml.in.h:373
+msgid "Trust Direct Access Keyboard"
+msgstr ""
+
+#: rules/base.xml.in.h:374
+msgid "Trust Wireless Keyboard Classic"
+msgstr ""
+
+#: rules/base.xml.in.h:375
+msgid "Tur"
+msgstr ""
+
+#: rules/base.xml.in.h:376
+msgid "Turkish"
+msgstr "Ikinyaturukiya"
+
+#: rules/base.xml.in.h:377
+#, fuzzy
+msgid "Typewrite-style keymap; TAB encoding"
+msgstr "IMISUSIRE Imisobekere:"
+
+#: rules/base.xml.in.h:378
+#, fuzzy
+msgid "Typewrite-style keymap; Unicode encoding"
+msgstr "IMISUSIRE Imisobekere:"
+
+#: rules/base.xml.in.h:379
+#, fuzzy
+msgid "U.S. English"
+msgstr "U."
+
+#: rules/base.xml.in.h:380
+#, fuzzy
+msgid "US keyboard with Croatian letters"
+msgstr "Mwandikisho Na:"
+
+#: rules/base.xml.in.h:381
+#, fuzzy
+msgid "US keyboard with Lithuanian letters"
+msgstr "Mwandikisho Na:"
+
+#: rules/base.xml.in.h:382
+#, fuzzy
+msgid "US keyboard with Maltian letters"
+msgstr "Mwandikisho Na:"
+
+#: rules/base.xml.in.h:383
+#, fuzzy
+msgid "US keyboard with Romanian letters"
+msgstr "Mwandikisho Na:"
+
+#: rules/base.xml.in.h:384
+msgid "USA"
+msgstr "Amerika"
+
+#: rules/base.xml.in.h:385
+msgid "Ukr"
+msgstr ""
+
+#: rules/base.xml.in.h:386
+msgid "Ukraine"
+msgstr "Ikerene"
+
+#. RSTU 2019-91
+#: rules/base.xml.in.h:388
+#, fuzzy
+msgid "Ukrainian standard RSTU"
+msgstr "Bisanzwe"
+
+#: rules/base.xml.in.h:389
+msgid "UnicodeExpert"
+msgstr ""
+
+#: rules/base.xml.in.h:390
+msgid "United Kingdom"
+msgstr "Ubwongereza (UK)"
+
+#: rules/base.xml.in.h:391
+msgid "Urd"
+msgstr ""
+
+#: rules/base.xml.in.h:392
+msgid "Urdu"
+msgstr "Urudu"
+
+#: rules/base.xml.in.h:393
+#, fuzzy
+msgid "Use keyboard LED to show alternative group."
+msgstr "Mwandikisho Kuri Garagaza Itsinda"
+
+#: rules/base.xml.in.h:394
+msgid "Uzb"
+msgstr ""
+
+#: rules/base.xml.in.h:395
+msgid "Uzbekistan"
+msgstr "Uzubekisitani"
+
+# setup2/source\ui\pages\paddr.src:RESID_PAGE_PAGEADDRESS.LB_COUNTRY.121.text
+#: rules/base.xml.in.h:396
+msgid "Vietnam"
+msgstr "Viyetinamu"
+
+#: rules/base.xml.in.h:397
+msgid "Vnm"
+msgstr ""
+
+#: rules/base.xml.in.h:398
+msgid "Winbook Model XP5"
+msgstr ""
+
+#: rules/base.xml.in.h:399
+msgid "Winkeys"
+msgstr ""
+
+#: rules/base.xml.in.h:400
+#, fuzzy
+msgid "With &lt;\\|&gt; key"
+msgstr "Urufunguzo"
+
+#: rules/base.xml.in.h:401
+msgid "With Malayalam digits"
+msgstr ""
+
+#: rules/base.xml.in.h:402
+msgid "With guillemots"
+msgstr ""
+
+#: rules/base.xml.in.h:403
+msgid "Yahoo! Internet Keyboard"
+msgstr ""
+
+#: rules/base.xml.in.h:404
+#, fuzzy
+msgid "Z and ZHE swapped"
+msgstr "Na"
+
+#: rules/base.xml.in.h:405
+msgid "azerty"
+msgstr ""
+
+#: rules/base.xml.in.h:406
+msgid "azerty/digits"
+msgstr ""
+
+#: rules/base.xml.in.h:407
+msgid "digits"
+msgstr ""
+
+#: rules/base.xml.in.h:408
+msgid "lyx"
+msgstr ""
+
+#: rules/base.xml.in.h:409
+msgid "qwerty"
+msgstr ""
+
+#: rules/base.xml.in.h:410
+#, fuzzy
+msgid "qwerty, extended Backslash"
+msgstr "Byongerewe..."
+
+#: rules/base.xml.in.h:411
+msgid "qwerty/digits"
+msgstr ""
+
+#: rules/base.xml.in.h:412
+msgid "qwertz"
+msgstr ""
+
+#: rules/base.xml.in.h:413
+msgid "si1452"
+msgstr ""
diff --git a/xorg-server/xkeyboard-config/po/sk.po b/xorg-server/xkeyboard-config/po/sk.po
index 140a700f9..fe53d5b61 100644
--- a/xorg-server/xkeyboard-config/po/sk.po
+++ b/xorg-server/xkeyboard-config/po/sk.po
@@ -1,2781 +1,2781 @@
-# Slovak translation of xkeyboard-config
-# Copyright (C) 2003 Free Software Foundation
-# Zdenko Podobný <zdpo@mailbox.sk>, 2003.
-# Ivan Masár <helix84@centrum.sk>, 2007.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: xkeyboard-config 1.0-pre1\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2007-06-28 15:21+0100\n"
-"PO-Revision-Date: 2007-09-04 22:49+0100\n"
-"Last-Translator: Zdenko Podobný <zdpo@mailbox.sk>\n"
-"Language-Team: Slovak <sk-i18n@lists.linux.sk>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"X-Generator: KBabel 1.2beta3\n"
-
-#: ../rules/base.xml.in.h:1
-msgid "(F)"
-msgstr "(F)"
-
-#: ../rules/base.xml.in.h:2
-msgid "(Legacy) Alternative"
-msgstr "(Zastaralé) alternatívne"
-
-#: ../rules/base.xml.in.h:3
-msgid "(Legacy) Alternative, Sun dead keys"
-msgstr "(Zastaralé) alternatívne, s mŕtvymi klávesmi Sun"
-
-#: ../rules/base.xml.in.h:4
-msgid "(Legacy) Alternative, eliminate dead keys"
-msgstr "(Zastaralé) alternatívne, eliminovať mŕtve klávesy"
-
-#: ../rules/base.xml.in.h:5
-msgid "(Legacy) Dvorak"
-msgstr "(Zastaralé) dvorak"
-
-#: ../rules/base.xml.in.h:6
-msgid "101/104 key Compatible"
-msgstr "Kompatibilná s 101/104 klávesami"
-
-#: ../rules/base.xml.in.h:7 ../rules/sun.xml.in.h:2
-msgid "101/qwerty/comma/Dead keys"
-msgstr "101/qwerty/Äiarka/mÅ•tve klávesy"
-
-#: ../rules/base.xml.in.h:8 ../rules/sun.xml.in.h:3
-msgid "101/qwerty/comma/Eliminate dead keys"
-msgstr "101/qwerty/Äiarka/eliminovaÅ¥ mÅ•tve klávesy"
-
-#: ../rules/base.xml.in.h:9 ../rules/sun.xml.in.h:4
-msgid "101/qwerty/dot/Dead keys"
-msgstr "101/qwerty/bodka/mŕtve klávesy"
-
-#: ../rules/base.xml.in.h:10 ../rules/sun.xml.in.h:5
-msgid "101/qwerty/dot/Eliminate dead keys"
-msgstr "101/qwerty/bodka/eliminovať mŕtve klávesy"
-
-#: ../rules/base.xml.in.h:11 ../rules/sun.xml.in.h:6
-msgid "101/qwertz/comma/Dead keys"
-msgstr "101/qwertz/Äiarka/mÅ•tve klávesy"
-
-#: ../rules/base.xml.in.h:12
-msgid "101/qwertz/comma/Eliminate dead keys"
-msgstr "101/qwertz/Äiarka/eliminovaÅ¥ mÅ•tve klávesy"
-
-#: ../rules/base.xml.in.h:13 ../rules/sun.xml.in.h:7
-msgid "101/qwertz/dot/Dead keys"
-msgstr "101/qwertz/bodka/mŕtve klávesy"
-
-#: ../rules/base.xml.in.h:14 ../rules/sun.xml.in.h:8
-msgid "101/qwertz/dot/Eliminate dead keys"
-msgstr "101/qwertz/bodka/eliminovať mŕtve klávesy"
-
-#: ../rules/base.xml.in.h:15 ../rules/sun.xml.in.h:9
-msgid "102/qwerty/comma/Dead keys"
-msgstr "102/qwerty/Äiarka/mÅ•tve klávesy"
-
-#: ../rules/base.xml.in.h:16 ../rules/sun.xml.in.h:10
-msgid "102/qwerty/comma/Eliminate dead keys"
-msgstr "102/qwerty/Äiarka/eliminovaÅ¥ mÅ•tve klávesy"
-
-#: ../rules/base.xml.in.h:17 ../rules/sun.xml.in.h:11
-msgid "102/qwerty/dot/Dead keys"
-msgstr "102/qwerty/bodka/mŕtve klávesy"
-
-#: ../rules/base.xml.in.h:18 ../rules/sun.xml.in.h:12
-msgid "102/qwerty/dot/Eliminate dead keys"
-msgstr "102/qwerty/bodka/eliminovať mŕtve klávesy"
-
-#: ../rules/base.xml.in.h:19 ../rules/sun.xml.in.h:13
-msgid "102/qwertz/comma/Dead keys"
-msgstr "102/qwertz/Äiarka/mÅ•tve klávesy"
-
-#: ../rules/base.xml.in.h:20 ../rules/sun.xml.in.h:14
-msgid "102/qwertz/comma/Eliminate dead keys"
-msgstr "102/qwertz/Äiarka/eliminovaÅ¥ mÅ•tve klávesy"
-
-#: ../rules/base.xml.in.h:21 ../rules/sun.xml.in.h:15
-msgid "102/qwertz/dot/Dead keys"
-msgstr "102/qwertz/bodka/mŕtve klávesy"
-
-#: ../rules/base.xml.in.h:22 ../rules/sun.xml.in.h:16
-msgid "102/qwertz/dot/Eliminate dead keys"
-msgstr "102/qwertz/bodka/eliminovať mŕtve klávesy"
-
-#: ../rules/base.xml.in.h:23
-msgid "A4Tech KB-21"
-msgstr "A4Tech KB-21"
-
-#: ../rules/base.xml.in.h:24
-msgid "A4Tech KBS-8"
-msgstr "A4Tech KBS-8"
-
-#: ../rules/base.xml.in.h:25
-msgid "A4Tech Wireless Desktop RFKB-23"
-msgstr "A4Tech Wireless Desktop RFKB-23"
-
-#: ../rules/base.xml.in.h:26
-msgid "ACPI Standard"
-msgstr "Å tandard ACPI"
-
-# gruzínske rozloženie
-#: ../rules/base.xml.in.h:27
-msgid "AZERTY Tskapo"
-msgstr "AZERTY Tskapo"
-
-#: ../rules/base.xml.in.h:28
-msgid "Acer AirKey V"
-msgstr "Acer AirKey V"
-
-#: ../rules/base.xml.in.h:29
-msgid "Acer C300"
-msgstr "Acer C300"
-
-#: ../rules/base.xml.in.h:30
-msgid "Acer Ferrari 4000"
-msgstr "Acer Ferrari 4000"
-
-#: ../rules/base.xml.in.h:31
-msgid "Acer TravelMate 800"
-msgstr "Acer TravelMate 800"
-
-#: ../rules/base.xml.in.h:32
-msgid "Add the EuroSign to the 2 key."
-msgstr "Pridať znak euro na kláves 2."
-
-#: ../rules/base.xml.in.h:33
-msgid "Add the EuroSign to the 5 key."
-msgstr "Pridať znak euro na kláves 5."
-
-#: ../rules/base.xml.in.h:34
-msgid "Add the EuroSign to the E key."
-msgstr "Pridať znak euro na kláves E."
-
-#: ../rules/base.xml.in.h:35
-msgid "Add the standard behavior to Menu key."
-msgstr "Pridať štandardné chovanie klávesu Ponuka."
-
-#: ../rules/base.xml.in.h:36
-msgid "Adding the EuroSign to certain keys"
-msgstr "Pridať znak euro na isté klávesy."
-
-#: ../rules/base.xml.in.h:37
-msgid "Advance Scorpius KI"
-msgstr "Advance Scorpius KI"
-
-#: ../rules/base.xml.in.h:38
-msgid "Afg"
-msgstr "Afg"
-
-#: ../rules/base.xml.in.h:39
-msgid "Afghanistan"
-msgstr "Afganistan"
-
-#: ../rules/base.xml.in.h:40
-msgid "Akan"
-msgstr "Akan"
-
-#: ../rules/base.xml.in.h:41
-msgid "Alb"
-msgstr "Alb"
-
-#: ../rules/base.xml.in.h:42
-msgid "Albania"
-msgstr "Albánsko"
-
-#: ../rules/base.xml.in.h:43
-msgid "Alt and Meta are on the Alt keys."
-msgstr "Alt a Meta sú na klávesoch Alt."
-
-#: ../rules/base.xml.in.h:44
-msgid "Alt is mapped to the right Win-key and Super to Menu."
-msgstr "Meta je mapovaný na pravý kláves Win a Super na Ponuku."
-
-#: ../rules/base.xml.in.h:45
-msgid "Alt+CapsLock changes layout."
-msgstr "Alt+Caps Lock mení rozloženie."
-
-#: ../rules/base.xml.in.h:46
-msgid "Alt+Ctrl change layout."
-msgstr "Alt+Control mení rozloženie."
-
-#: ../rules/base.xml.in.h:47
-msgid "Alt+Shift change layout."
-msgstr "Alt+Shift mení rozloženie."
-
-#: ../rules/base.xml.in.h:48
-msgid "Alt-Q"
-msgstr "Alt-Q"
-
-#: ../rules/base.xml.in.h:49
-msgid "Alt/Win key behavior"
-msgstr "Chovanie klávesu Alt/Win"
-
-#: ../rules/base.xml.in.h:50
-msgid "Alternative"
-msgstr "alternatívne"
-
-#: ../rules/base.xml.in.h:51
-msgid "Alternative Eastern"
-msgstr "alternatívne východné"
-
-#: ../rules/base.xml.in.h:52
-msgid "Alternative Phonetic"
-msgstr "alternatívne fonetické"
-
-#: ../rules/base.xml.in.h:53
-msgid "Alternative international (former us_intl)"
-msgstr "alternatívne medzinárodné (býv. us_intl)"
-
-#: ../rules/base.xml.in.h:54
-msgid "Alternative, Sun dead keys"
-msgstr "alternatívne, mŕtve klávesy Sun"
-
-#: ../rules/base.xml.in.h:55
-msgid "Alternative, eliminate dead keys"
-msgstr "alternatívne, eliminovať mŕtve klávesy"
-
-#: ../rules/base.xml.in.h:56
-msgid "Alternative, latin-9 only"
-msgstr "alternatívne, iba latin-9"
-
-#: ../rules/base.xml.in.h:57
-msgid "And"
-msgstr "And"
-
-#: ../rules/base.xml.in.h:58
-msgid "Andorra"
-msgstr "Andorra"
-
-#: ../rules/base.xml.in.h:59
-msgid "Apostrophe (') variant"
-msgstr "Variant (') apostrof"
-
-#: ../rules/base.xml.in.h:60
-msgid "Apple"
-msgstr "Apple"
-
-#: ../rules/base.xml.in.h:61
-msgid "Apple Laptop"
-msgstr "Apple laptop"
-
-#: ../rules/base.xml.in.h:62
-msgid "Ara"
-msgstr "Ara"
-
-#: ../rules/base.xml.in.h:63
-msgid "Arabic"
-msgstr "Arabsky"
-
-#: ../rules/base.xml.in.h:64
-msgid "Arm"
-msgstr "Arm"
-
-#: ../rules/base.xml.in.h:65
-msgid "Armenia"
-msgstr "Arménsko"
-
-#: ../rules/base.xml.in.h:66
-msgid "Aze"
-msgstr "Aze"
-
-#: ../rules/base.xml.in.h:67
-msgid "Azerbaijan"
-msgstr "Azerbajdžan"
-
-#: ../rules/base.xml.in.h:68
-msgid "Azona RF2300 wireless Internet Keyboard"
-msgstr "Azona RF2300 bezdrôtová internetová klávesnica"
-
-#: ../rules/base.xml.in.h:69
-msgid "BTC 5090"
-msgstr "BTC 5090"
-
-#: ../rules/base.xml.in.h:70
-msgid "BTC 5113RF Multimedia"
-msgstr "BTC 5113RF Multimedia"
-
-#: ../rules/base.xml.in.h:71
-msgid "BTC 5126T"
-msgstr "BTC 5126T"
-
-#: ../rules/base.xml.in.h:72
-msgid "BTC 9000"
-msgstr "BTC 9000"
-
-#: ../rules/base.xml.in.h:73
-msgid "BTC 9000A"
-msgstr "BTC 9000A"
-
-#: ../rules/base.xml.in.h:74
-msgid "BTC 9001AH"
-msgstr "BTC 9001AH"
-
-#: ../rules/base.xml.in.h:75
-msgid "BTC 9019U"
-msgstr "BTC 9019U"
-
-#: ../rules/base.xml.in.h:76
-msgid "Ban"
-msgstr "Ban"
-
-#: ../rules/base.xml.in.h:77
-msgid "Bangladesh"
-msgstr "Bangladéš"
-
-#: ../rules/base.xml.in.h:78 ../rules/sun.xml.in.h:22
-msgid "Bel"
-msgstr "Bel"
-
-#: ../rules/base.xml.in.h:79
-msgid "Belarus"
-msgstr "Bielorusko"
-
-#: ../rules/base.xml.in.h:80
-msgid "Belgium"
-msgstr "Belgicko"
-
-#: ../rules/base.xml.in.h:81
-msgid "BenQ X-Touch 730"
-msgstr "BenQ X-Touch 730"
-
-#: ../rules/base.xml.in.h:82
-msgid "BenQ X-Touch 800"
-msgstr "BenQ X-Touch 800"
-
-#: ../rules/base.xml.in.h:83
-msgid "Bengali"
-msgstr "Bengálska"
-
-#: ../rules/base.xml.in.h:84
-msgid "Bengali Probhat"
-msgstr "Bengálsky Probhat"
-
-#: ../rules/base.xml.in.h:85
-msgid "Bepo, ergonomic, Dvorak way"
-msgstr "Bepo, ergonomické, na spôsob Dvorak"
-
-#: ../rules/base.xml.in.h:86
-msgid "Bepo, ergonomic, Dvorak way, latin-9 only"
-msgstr "Bepo, ergonomické, na spôsob Dvorak, iba latin-9"
-
-#: ../rules/base.xml.in.h:87 ../rules/sun.xml.in.h:24
-msgid "Bgr"
-msgstr "Bgr"
-
-#: ../rules/base.xml.in.h:88
-msgid "Bhu"
-msgstr "Bhu"
-
-#: ../rules/base.xml.in.h:89
-msgid "Bhutan"
-msgstr "Bhután"
-
-#: ../rules/base.xml.in.h:90
-msgid "Biblical Hebrew (Tiro)"
-msgstr "biblická hebrejÄina (Tiro)"
-
-#: ../rules/base.xml.in.h:91
-msgid "Bih"
-msgstr "Bih"
-
-#: ../rules/base.xml.in.h:92
-msgid "Blr"
-msgstr "Blr"
-
-#: ../rules/base.xml.in.h:93
-msgid "Bosnia and Herzegovina"
-msgstr "Bosna a Hercegovina"
-
-#: ../rules/base.xml.in.h:94
-msgid "Both Alt keys together change layout."
-msgstr "Oba klávesy Alt spolu menia rozloženie."
-
-#: ../rules/base.xml.in.h:95
-msgid "Both Ctrl keys together change layout."
-msgstr "Oba klávesy Ctrl spolu menia rozloženie."
-
-#: ../rules/base.xml.in.h:96
-msgid "Both Shift keys together change layout."
-msgstr "Oba klávesy Shift spolu menia rozloženie."
-
-#: ../rules/base.xml.in.h:97
-msgid "Both Win-keys switch layout while pressed."
-msgstr "Oba klávesy Win spolu menia rozloženie."
-
-#: ../rules/base.xml.in.h:98
-msgid "Bra"
-msgstr "Bra"
-
-#: ../rules/base.xml.in.h:99
-msgid "Braille"
-msgstr "Brailleovo"
-
-#: ../rules/base.xml.in.h:100
-msgid "Brazil"
-msgstr "Brazília"
-
-#: ../rules/base.xml.in.h:101
-msgid "Brazilian ABNT2"
-msgstr "Brazílska ABNT2"
-
-#: ../rules/base.xml.in.h:102
-msgid "Brl"
-msgstr "Brl"
-
-#: ../rules/base.xml.in.h:103
-msgid "Brother Internet Keyboard"
-msgstr "Brother Internet Keyboard"
-
-#: ../rules/base.xml.in.h:104
-msgid "Buckwalter"
-msgstr "Buckwalter (transliterácia arabÄiny)"
-
-#: ../rules/base.xml.in.h:105
-msgid "Bulgaria"
-msgstr "Bulharsko"
-
-#: ../rules/base.xml.in.h:106
-msgid "Cambodia"
-msgstr "Kambodža"
-
-#: ../rules/base.xml.in.h:107 ../rules/sun.xml.in.h:29
-msgid "Can"
-msgstr "Can"
-
-#: ../rules/base.xml.in.h:108
-msgid "Canada"
-msgstr "Kanada"
-
-#: ../rules/base.xml.in.h:109
-msgid "Caps Lock is Compose."
-msgstr "Caps Lock je Compose."
-
-#: ../rules/base.xml.in.h:110
-msgid "CapsLock LED shows alternative layout."
-msgstr "Caps Lock LED zobrazuje alternatívne rozloženie."
-
-#: ../rules/base.xml.in.h:111
-msgid "CapsLock acts as Shift with locking. Shift \"pauses\" CapsLock."
-msgstr "Caps Lock funguje ako Shift s uzamknutím. Shift „pozastaví“ Caps Lock."
-
-#: ../rules/base.xml.in.h:112
-msgid "CapsLock acts as Shift with locking. Shift doesn't affect CapsLock."
-msgstr "Caps Lock funguje ako Shift s uzamknutím. Shift neovplyvňuje Caps Lock."
-
-#: ../rules/base.xml.in.h:113
-msgid "CapsLock just locks the Shift modifier."
-msgstr "CapsLock iba zamkne modifikátor Shift."
-
-#: ../rules/base.xml.in.h:114 ../rules/sun.xml.in.h:33
-msgid "CapsLock key behavior"
-msgstr "Správanie klávesu Caps Lock"
-
-#: ../rules/base.xml.in.h:115
-msgid "CapsLock key changes layout."
-msgstr "Kláves Caps Lock mení rozloženie."
-
-#: ../rules/base.xml.in.h:116
-msgid "CapsLock toggles Shift so all keys are affected."
-msgstr "Caps Lock prepne Shift, Äím ovplyvní vÅ¡etky klávesy."
-
-#: ../rules/base.xml.in.h:117
-msgid "CapsLock toggles normal capitalization of alphabetic characters."
-msgstr "Caps Lock prepne nermálnu kapitalizáciu abecedných znakov."
-
-#: ../rules/base.xml.in.h:118
-msgid "CapsLock uses internal capitalization. Shift \"pauses\" CapsLock."
-msgstr "Caps Lock používa interný prevod na kapitálky. Shift „pozastaví“ Caps Lock."
-
-#: ../rules/base.xml.in.h:119
-msgid "CapsLock uses internal capitalization. Shift doesn't affect CapsLock."
-msgstr "Caps Lock používa interný prevod na kapitálky. Shift neovplyvňuje Caps Lock."
-
-#: ../rules/base.xml.in.h:120
-msgid "Catalan variant with middle-dot L"
-msgstr "Katalánsky variant s L s bodkou v strede"
-
-#: ../rules/base.xml.in.h:121
-msgid "Che"
-msgstr "Che"
-
-#: ../rules/base.xml.in.h:122
-msgid "Cherry Blue Line CyBo@rd"
-msgstr "Cherry Blue Line CyBo@rd"
-
-#: ../rules/base.xml.in.h:123
-msgid "Cherry Blue Line CyBo@rd (alternate option)"
-msgstr "Cherry Blue Line CyBo@rd (alternatívna voľba)"
-
-#: ../rules/base.xml.in.h:124
-msgid "Cherry CyBo@rd USB-Hub"
-msgstr "Cherry CyBo@rd USB-Hub"
-
-#: ../rules/base.xml.in.h:125
-msgid "Cherry CyMotion Master Linux"
-msgstr "Cherry CyMotion Master Linux"
-
-#: ../rules/base.xml.in.h:126
-msgid "Cherry CyMotion Master XPress"
-msgstr "Cherry CyMotion Master XPress"
-
-#: ../rules/base.xml.in.h:127
-msgid "Chicony Internet Keyboard"
-msgstr "Chicony Internet Keyboard"
-
-#: ../rules/base.xml.in.h:128
-msgid "Chicony KB-9885"
-msgstr "Chicony KB-9885"
-
-#: ../rules/base.xml.in.h:129
-msgid "Chuvash"
-msgstr "Čuvašské"
-
-#: ../rules/base.xml.in.h:130
-msgid "Chuvash Latin"
-msgstr "Čuvašské latin"
-
-#: ../rules/base.xml.in.h:131
-msgid "Classic Dvorak"
-msgstr "Klasické dvorak"
-
-#: ../rules/base.xml.in.h:132
-msgid "CloGaelach"
-msgstr "CloGaelach"
-
-#: ../rules/base.xml.in.h:133
-msgid "Compaq Easy Access Keyboard"
-msgstr "Compaq Easy Access Keyboard"
-
-#: ../rules/base.xml.in.h:134
-msgid "Compaq Internet Keyboard (13 keys)"
-msgstr "Compaq Internet Keyboard (13 kláves)"
-
-#: ../rules/base.xml.in.h:135
-msgid "Compaq Internet Keyboard (18 keys)"
-msgstr "Compaq Internet Keyboard (18 kláves)"
-
-#: ../rules/base.xml.in.h:136
-msgid "Compaq Internet Keyboard (7 keys)"
-msgstr "Compaq Internet Keyboard (7 kláves)"
-
-#: ../rules/base.xml.in.h:137
-msgid "Compaq iPaq Keyboard"
-msgstr "Compaq iPaq Keyboard"
-
-#: ../rules/base.xml.in.h:138
-msgid "Compose key position"
-msgstr "Pozícia klávesu Compose"
-
-#: ../rules/base.xml.in.h:139
-msgid "Congo, Democratic Republic of the"
-msgstr "Konžská demokratická republika"
-
-#: ../rules/base.xml.in.h:140
-msgid "Control is mapped to the Win-keys (and the usual Ctrl keys)."
-msgstr "Control je mapovaný na klávesy Win (a zvyÄajné klávesy Ctrl)."
-
-#: ../rules/base.xml.in.h:141
-msgid "Croatia"
-msgstr "Chorvátsko"
-
-#: ../rules/base.xml.in.h:142
-msgid "Ctrl key at bottom left"
-msgstr "Kláves Ctrl vľavo dole"
-
-#: ../rules/base.xml.in.h:143
-msgid "Ctrl key at left of 'A'"
-msgstr "Kláves Ctrl naľavo od „A“"
-
-#: ../rules/base.xml.in.h:144
-msgid "Ctrl key position"
-msgstr "Pozícia klávesu Ctrl"
-
-#: ../rules/base.xml.in.h:145
-msgid "Ctrl+Shift change layout."
-msgstr "Ctrl+Shift mení rozloženie."
-
-#: ../rules/base.xml.in.h:146
-msgid "Cyrillic"
-msgstr "azbuka"
-
-#: ../rules/base.xml.in.h:147 ../rules/sun.xml.in.h:39
-msgid "Cze"
-msgstr "ÄŒes"
-
-#: ../rules/base.xml.in.h:148
-msgid "Czechia"
-msgstr "ÄŒesko"
-
-#: ../rules/base.xml.in.h:149
-msgid "DRC"
-msgstr "DRC"
-
-#: ../rules/base.xml.in.h:150
-msgid "DTK2000"
-msgstr "DTK2000"
-
-#: ../rules/base.xml.in.h:151 ../rules/sun.xml.in.h:42
-msgid "Dead acute"
-msgstr "mŕtvy dĺžeň"
-
-#: ../rules/base.xml.in.h:152 ../rules/sun.xml.in.h:43
-msgid "Dead grave acute"
-msgstr "mÅ•tvy opaÄný dĺžeň"
-
-#: ../rules/base.xml.in.h:153
-msgid "Default numeric keypad keys."
-msgstr "Štandardné klávesy numerickej klávesnice."
-
-#: ../rules/base.xml.in.h:154
-msgid "Dell"
-msgstr "Dell"
-
-#: ../rules/base.xml.in.h:155
-msgid "Dell 101-key PC"
-msgstr "DELL PC 101 kláves"
-
-#: ../rules/base.xml.in.h:156
-msgid "Dell Laptop/notebook Inspiron 6xxx/8xxx"
-msgstr "Dell Laptop/notebook Inspiron 6xxx/8xxx"
-
-#: ../rules/base.xml.in.h:157
-msgid "Dell Laptop/notebook Precision M series"
-msgstr "Dell Laptop/notebook Precision série M"
-
-#: ../rules/base.xml.in.h:158
-msgid "Dell Latitude series laptop"
-msgstr "Laptop série Dell Latitude"
-
-#: ../rules/base.xml.in.h:159
-msgid "Dell SK-8125 USB Multimedia Keybard"
-msgstr "Dell SK-8125 USB multimediálna klávesnica"
-
-#: ../rules/base.xml.in.h:160
-msgid "Dell SK-8135 USB Multimedia Keybard"
-msgstr "Dell SK-8135 USB multimediálna klávesnica"
-
-#: ../rules/base.xml.in.h:161
-msgid "Dell USB Multimedia Keybard"
-msgstr "Dell USB multimediálna klávesnica"
-
-#: ../rules/base.xml.in.h:162
-msgid "Denmark"
-msgstr "Dánsko"
-
-#: ../rules/base.xml.in.h:163 ../rules/sun.xml.in.h:44
-msgid "Deu"
-msgstr "Nem"
-
-#: ../rules/base.xml.in.h:164
-msgid "Dexxa Wireless Desktop Keyboard"
-msgstr "Dexxa Wireless Desktop Keyboard"
-
-#: ../rules/base.xml.in.h:165
-msgid "Diamond 9801 / 9802 series"
-msgstr "Diamond séria 9801 / 9802"
-
-#: ../rules/base.xml.in.h:166 ../rules/sun.xml.in.h:46
-msgid "Dnk"
-msgstr "Dán"
-
-# rozloženie klávesnice
-#: ../rules/base.xml.in.h:167 ../rules/sun.xml.in.h:48
-msgid "Dvorak"
-msgstr "Dvorak"
-
-#: ../rules/base.xml.in.h:168
-msgid "Dvorak, Polish quotes on key \"1/!\""
-msgstr "Dvorak, poľské úvodzovky na klávese „1/!“"
-
-#: ../rules/base.xml.in.h:169
-msgid "Dvorak, Polish quotes on quotemark key"
-msgstr "Dvorak, poľské úvodzovky na klávese úvodzoviek"
-
-#: ../rules/base.xml.in.h:170
-msgid "Eastern"
-msgstr "východné"
-
-#: ../rules/base.xml.in.h:171 ../rules/sun.xml.in.h:49
-msgid "Eliminate dead keys"
-msgstr "Eliminovať mrtvé kláves"
-
-#: ../rules/base.xml.in.h:172
-msgid "Ennyah DKB-1008"
-msgstr "Ennyah DKB-1008"
-
-#: ../rules/base.xml.in.h:173
-msgid "Epo"
-msgstr "Epo"
-
-#: ../rules/base.xml.in.h:174
-msgid "Ergonomic"
-msgstr "ergonomické"
-
-#: ../rules/base.xml.in.h:175 ../rules/sun.xml.in.h:50
-msgid "Esp"
-msgstr "Å pa"
-
-#: ../rules/base.xml.in.h:176
-msgid "Esperanto"
-msgstr "esperanto"
-
-#: ../rules/base.xml.in.h:177
-msgid "Est"
-msgstr "Est"
-
-#: ../rules/base.xml.in.h:178
-msgid "Estonia"
-msgstr "Estónsko"
-
-#: ../rules/base.xml.in.h:179
-msgid "Eth"
-msgstr "Eth"
-
-#: ../rules/base.xml.in.h:180
-msgid "Ethiopia"
-msgstr "Etiópia"
-
-#: ../rules/base.xml.in.h:181
-msgid "Evdev-managed keyboard"
-msgstr "Klávesnica spravovaná Evdev"
-
-#: ../rules/base.xml.in.h:182
-msgid "Everex STEPnote"
-msgstr "Everex STEPnote"
-
-#: ../rules/base.xml.in.h:183
-msgid "Ewe"
-msgstr "Ewe"
-
-#: ../rules/base.xml.in.h:184
-msgid "Extended"
-msgstr "rozšírené"
-
-#: ../rules/base.xml.in.h:185
-msgid "Extended Backslash"
-msgstr "Široký backslash"
-
-#: ../rules/base.xml.in.h:186
-msgid "F-letter (F) variant"
-msgstr "variant písmena F"
-
-#: ../rules/base.xml.in.h:187
-msgid "Fao"
-msgstr "Fao"
-
-#: ../rules/base.xml.in.h:188
-msgid "Faroe Islands"
-msgstr "Faerské ostrovy"
-
-#: ../rules/base.xml.in.h:189 ../rules/sun.xml.in.h:51
-msgid "Fin"
-msgstr "Fín"
-
-#: ../rules/base.xml.in.h:190
-msgid "Finland"
-msgstr "Fínsko"
-
-#: ../rules/base.xml.in.h:191
-msgid "Force standard legacy keypad"
-msgstr "Vynútiť štandardnú zastaralú numerickú klávesnicu"
-
-#: ../rules/base.xml.in.h:192 ../rules/sun.xml.in.h:53
-msgid "Fra"
-msgstr "Fra"
-
-#: ../rules/base.xml.in.h:193
-msgid "France"
-msgstr "Francúzsko"
-
-#: ../rules/base.xml.in.h:194 ../rules/sun.xml.in.h:55
-msgid "French"
-msgstr "Francúzske"
-
-#: ../rules/base.xml.in.h:195
-msgid "French (Macintosh)"
-msgstr "Francúzske (Macintosh)"
-
-#: ../rules/base.xml.in.h:196 ../rules/sun.xml.in.h:56
-msgid "French (legacy)"
-msgstr "Francúzske (zastaralé)"
-
-#: ../rules/base.xml.in.h:197
-msgid "French Dvorak"
-msgstr "Francúzske dvorak"
-
-#: ../rules/base.xml.in.h:198
-msgid "French, Sun dead keys"
-msgstr "Francúzske, mŕtve klávesy Sun"
-
-#: ../rules/base.xml.in.h:199
-msgid "French, eliminate dead keys"
-msgstr "Francúzske, eliminovať mŕtve klávesy"
-
-#: ../rules/base.xml.in.h:200
-msgid "Fula"
-msgstr "fulbÄina"
-
-#: ../rules/base.xml.in.h:201
-msgid "GBr"
-msgstr "VBr"
-
-#: ../rules/base.xml.in.h:202
-msgid "Ga"
-msgstr "Ga"
-
-#: ../rules/base.xml.in.h:203
-msgid "Generic 101-key PC"
-msgstr "všeobecná PC 101 kláves"
-
-#: ../rules/base.xml.in.h:204
-msgid "Generic 102-key (Intl) PC"
-msgstr "všeobecná PC 102 kláves (medz.)"
-
-#: ../rules/base.xml.in.h:205
-msgid "Generic 104-key PC"
-msgstr "všeobecná PC 104 kláves"
-
-#: ../rules/base.xml.in.h:206
-msgid "Generic 105-key (Intl) PC"
-msgstr "všeobecná 105-kláv. (medzinár.) PC"
-
-#: ../rules/base.xml.in.h:207
-msgid "Genius Comfy KB-12e"
-msgstr "Genius Comfy KB-12e"
-
-#: ../rules/base.xml.in.h:208
-msgid "Genius Comfy KB-16M / Genius MM Keyboard KWD-910"
-msgstr "Genius Comfy KB-16M / Genius MM Keyboard KWD-910"
-
-#: ../rules/base.xml.in.h:209
-msgid "Genius Comfy KB-21e-Scroll"
-msgstr "Genius Comfy KB-21e-Scroll"
-
-#: ../rules/base.xml.in.h:210
-msgid "Genius KB-19e NB"
-msgstr "Genius KB-19e NB"
-
-#: ../rules/base.xml.in.h:211
-msgid "Geo"
-msgstr "Gru"
-
-#: ../rules/base.xml.in.h:212
-msgid "Georgia"
-msgstr "Gruzínsko"
-
-#: ../rules/base.xml.in.h:213
-msgid "German (Macintosh)"
-msgstr "Nemecké (Macintosh)"
-
-#: ../rules/base.xml.in.h:214
-msgid "German, Sun dead keys"
-msgstr "Nemecké, mŕtve klávesy Sun"
-
-#: ../rules/base.xml.in.h:215
-msgid "German, eliminate dead keys"
-msgstr "Francúzske, eliminovať mŕtve klávesy"
-
-#: ../rules/base.xml.in.h:216
-msgid "Germany"
-msgstr "Nemecko"
-
-#: ../rules/base.xml.in.h:217
-msgid "Gha"
-msgstr "Gha"
-
-#: ../rules/base.xml.in.h:218
-msgid "Ghana"
-msgstr "Ghana"
-
-#: ../rules/base.xml.in.h:219
-msgid "Gre"
-msgstr "Gre"
-
-#: ../rules/base.xml.in.h:220
-msgid "Greece"
-msgstr "Grécko"
-
-#: ../rules/base.xml.in.h:221
-msgid "Gujarati"
-msgstr "Gudžarátska"
-
-#: ../rules/base.xml.in.h:222
-msgid "Gurmukhi"
-msgstr "Gurmuchské"
-
-# je firma
-#: ../rules/base.xml.in.h:223
-msgid "Gyration"
-msgstr "Gyration"
-
-#: ../rules/base.xml.in.h:224
-msgid "Hausa"
-msgstr "hauské"
-
-#: ../rules/base.xml.in.h:225
-msgid "Hewlett-Packard Internet Keyboard"
-msgstr "Hewlett-Packard Internet Keyboard"
-
-#: ../rules/base.xml.in.h:226
-msgid "Hewlett-Packard Omnibook 500 FA"
-msgstr "Hewlett-Packard Omnibook 500 FA"
-
-#: ../rules/base.xml.in.h:227
-msgid "Hewlett-Packard Omnibook 5xx"
-msgstr "Hewlett-Packard Omnibook 5xx"
-
-#: ../rules/base.xml.in.h:228
-msgid "Hewlett-Packard Omnibook 6000/6100"
-msgstr "Hewlett-Packard Omnibook 6000/6100"
-
-#: ../rules/base.xml.in.h:229
-msgid "Hewlett-Packard Omnibook XE3 GC"
-msgstr "Hewlett-Packard Omnibook XE3 GC"
-
-#: ../rules/base.xml.in.h:230
-msgid "Hewlett-Packard Omnibook XE3 GF"
-msgstr "Hewlett-Packard Omnibook XE3 GF"
-
-#: ../rules/base.xml.in.h:231
-msgid "Hewlett-Packard Omnibook XT1000"
-msgstr "Hewlett-Packard Omnibook XT1000"
-
-#: ../rules/base.xml.in.h:232
-msgid "Hewlett-Packard Pavilion ZT11xx"
-msgstr "Hewlett-Packard Pavilion ZT11xx"
-
-#: ../rules/base.xml.in.h:233
-msgid "Hewlett-Packard SK-2501 Multimedia Keyboard"
-msgstr "Hewlett-Packard SK-2501 Multimedia Keyboard"
-
-#: ../rules/base.xml.in.h:234
-msgid "Hewlett-Packard SK-2505 Internet Keyboard"
-msgstr "Hewlett-Packard SK-2505 Internet Keyboard"
-
-# bolnagri je vstupná metóda
-#: ../rules/base.xml.in.h:235
-msgid "Hindi Bolnagri"
-msgstr "hindské bolnagri"
-
-#: ../rules/base.xml.in.h:236
-msgid "Honeywell Euroboard"
-msgstr "Honeywell Euroboard"
-
-#: ../rules/base.xml.in.h:237
-msgid "Hrv"
-msgstr "Chor"
-
-#: ../rules/base.xml.in.h:238 ../rules/sun.xml.in.h:59
-msgid "Hun"
-msgstr "MaÄ"
-
-#: ../rules/base.xml.in.h:239
-msgid "Hungary"
-msgstr "MaÄarsko"
-
-#: ../rules/base.xml.in.h:240
-msgid "Hyper is mapped to the Win-keys."
-msgstr "Hyper je mapovaný na Win-klávesy."
-
-#: ../rules/base.xml.in.h:241
-msgid "IBM (LST 1205-92)"
-msgstr "IBM (LST 1205-92)"
-
-#: ../rules/base.xml.in.h:242
-msgid "IBM Rapid Access"
-msgstr "IBM Rapid Access"
-
-#: ../rules/base.xml.in.h:243
-msgid "IBM Rapid Access II"
-msgstr "IBM Rapid Access II"
-
-#: ../rules/base.xml.in.h:244
-msgid "IBM Rapid Access II (alternate option)"
-msgstr "IBM Rapid Access II (alternatívna voľba)"
-
-#: ../rules/base.xml.in.h:245
-msgid "IBM ThinkPad 560Z/600/600E/A22E"
-msgstr "IBM ThinkPad 560Z/600/600E/A22E"
-
-#: ../rules/base.xml.in.h:246
-msgid "IBM ThinkPad 560Z/600/600E/A22E, Intl"
-msgstr "IBM ThinkPad 560Z/600/600E/A22E, Intl"
-
-#: ../rules/base.xml.in.h:247 ../rules/sun.xml.in.h:61
-msgid "ISO Alternate"
-msgstr "ISO alternatívne"
-
-#: ../rules/base.xml.in.h:248
-msgid "Iceland"
-msgstr "Island"
-
-#: ../rules/base.xml.in.h:249
-msgid "Igbo"
-msgstr "igbo"
-
-#: ../rules/base.xml.in.h:250
-msgid "Ind"
-msgstr "Ind"
-
-#: ../rules/base.xml.in.h:251
-msgid "India"
-msgstr "India"
-
-#: ../rules/base.xml.in.h:252 ../rules/sun.xml.in.h:62
-msgid "International (with dead keys)"
-msgstr "Medzinárodné (s mŕtvymi klávesmi)"
-
-#: ../rules/base.xml.in.h:253
-msgid "Inuktitut"
-msgstr "inuktitut"
-
-#: ../rules/base.xml.in.h:254
-msgid "Iran"
-msgstr "Irán"
-
-#: ../rules/base.xml.in.h:255
-msgid "Iraq"
-msgstr "Irak"
-
-#: ../rules/base.xml.in.h:256
-msgid "Ireland"
-msgstr "Ãrsko"
-
-#: ../rules/base.xml.in.h:257
-msgid "Irl"
-msgstr "Irs"
-
-#: ../rules/base.xml.in.h:258
-msgid "Irn"
-msgstr "Irn"
-
-#: ../rules/base.xml.in.h:259
-msgid "Irq"
-msgstr "Irq"
-
-#: ../rules/base.xml.in.h:260
-msgid "Isl"
-msgstr "Isl"
-
-#: ../rules/base.xml.in.h:261
-msgid "Isr"
-msgstr "Izr"
-
-#: ../rules/base.xml.in.h:262
-msgid "Israel"
-msgstr "Izrael"
-
-#: ../rules/base.xml.in.h:263 ../rules/sun.xml.in.h:63
-msgid "Ita"
-msgstr "Tal"
-
-#: ../rules/base.xml.in.h:264
-msgid "Italy"
-msgstr "Taliansko"
-
-#: ../rules/base.xml.in.h:265
-msgid "Japan"
-msgstr "Japonsko"
-
-#: ../rules/base.xml.in.h:266
-msgid "Japan (PC-98xx Series)"
-msgstr "Japonské (séria PC-98xx)"
-
-#: ../rules/base.xml.in.h:267
-msgid "Japanese 106-key"
-msgstr "Japonské 106 kláves"
-
-#: ../rules/base.xml.in.h:268
-msgid "Japanese keyboard options"
-msgstr "Japonské možnosti klávesnice"
-
-#: ../rules/base.xml.in.h:269 ../rules/sun.xml.in.h:66
-msgid "Jpn"
-msgstr "Jpn"
-
-# Kana is a general term for the syllabic Japanese scripts hiragana (ã²ã‚‰ãŒãª) and katakana (カタカナ) as well as the old system known as man'yÅgana.
-#: ../rules/base.xml.in.h:270
-msgid "Kana"
-msgstr "Kana"
-
-#: ../rules/base.xml.in.h:271
-msgid "Kana Lock key is locking"
-msgstr "Kláves Kana Lock zamyká"
-
-#: ../rules/base.xml.in.h:272
-msgid "Kannada"
-msgstr "Kannadské"
-
-#: ../rules/base.xml.in.h:273
-msgid "Kashubian"
-msgstr "kaÅ¡ubÄina"
-
-#: ../rules/base.xml.in.h:274
-msgid "Kaz"
-msgstr "Kaz"
-
-#: ../rules/base.xml.in.h:275
-msgid "Kazakh with Russian"
-msgstr "Kazašské s ruštinou"
-
-#: ../rules/base.xml.in.h:276
-msgid "Kazakhstan"
-msgstr "Kazachstan"
-
-#: ../rules/base.xml.in.h:277
-msgid "Keypad"
-msgstr "Numerická klávesnica"
-
-#: ../rules/base.xml.in.h:278
-msgid "Keytronic FlexPro"
-msgstr "Keytronic FlexPro"
-
-#: ../rules/base.xml.in.h:279
-msgid "Khm"
-msgstr "Khm"
-
-#: ../rules/base.xml.in.h:280
-msgid "Kor"
-msgstr "Kor"
-
-#: ../rules/base.xml.in.h:281
-msgid "Korea, Republic of"
-msgstr "Kórejská republika"
-
-#: ../rules/base.xml.in.h:282
-msgid "Korean 106-key"
-msgstr "Kórejské, 106 kláves"
-
-# fínske rozloženie
-# http://kotoistus.tksoft.com/linux/index-en.html
-#: ../rules/base.xml.in.h:283
-msgid "Kotoistus"
-msgstr "Kotoistus"
-
-#: ../rules/base.xml.in.h:284
-msgid "Kurdish, (F)"
-msgstr "Kurdské, (F)"
-
-#: ../rules/base.xml.in.h:285
-msgid "Kurdish, Arabic-Latin"
-msgstr "kurdÄina, arabsko-latinské"
-
-#: ../rules/base.xml.in.h:286
-msgid "Kurdish, Latin Alt-Q"
-msgstr "kurdÄina, latinské Alt-Q"
-
-#: ../rules/base.xml.in.h:287
-msgid "Kurdish, Latin Q"
-msgstr "kurdÄina, latinské Q"
-
-#: ../rules/base.xml.in.h:288
-msgid "Kyr"
-msgstr "Kyr"
-
-#: ../rules/base.xml.in.h:289
-msgid "Kyrgyzstan"
-msgstr "Kirgizsko"
-
-#: ../rules/base.xml.in.h:290
-msgid "LAm"
-msgstr "LAm"
-
-#: ../rules/base.xml.in.h:291
-msgid "LCtrl+LShift change layout."
-msgstr "ľavý Ctrl+ľavý Shift mení rozloženie."
-
-#: ../rules/base.xml.in.h:292
-msgid "Lao"
-msgstr "Lao"
-
-#: ../rules/base.xml.in.h:293
-msgid "Laos"
-msgstr "Laos"
-
-#: ../rules/base.xml.in.h:294
-msgid "Laptop/notebook Compaq (eg. Armada) Laptop Keyboard"
-msgstr "Laptop/notebook Compaq (napr. Armada) Laptop Keyboard"
-
-#: ../rules/base.xml.in.h:295
-msgid "Laptop/notebook Compaq (eg. Presario) Internet Keyboard"
-msgstr "Laptop/notebook Compaq (napr. Presario) Internet Keyboard"
-
-#: ../rules/base.xml.in.h:296
-msgid "Laptop/notebook eMachines m68xx"
-msgstr "Laptop/notebook eMachines m68xx"
-
-#: ../rules/base.xml.in.h:297
-msgid "Latin"
-msgstr "Latinské"
-
-#: ../rules/base.xml.in.h:298
-msgid "Latin American"
-msgstr "Latinskoamerické"
-
-#: ../rules/base.xml.in.h:299
-msgid "Latin Unicode"
-msgstr "Latinské Unicode"
-
-#: ../rules/base.xml.in.h:300
-msgid "Latin Unicode qwerty"
-msgstr "Latinské Unicode qwerty"
-
-#: ../rules/base.xml.in.h:301
-msgid "Latin qwerty"
-msgstr "Latinské qwerty"
-
-# « »
-#: ../rules/base.xml.in.h:302
-msgid "Latin with guillemets"
-msgstr "Latinské s uhlovými zátvorkami"
-
-#: ../rules/base.xml.in.h:303
-msgid "Latvia"
-msgstr "Lotyšsko"
-
-#: ../rules/base.xml.in.h:304
-msgid "Layout switching"
-msgstr "Prepínanie rozloženia"
-
-#: ../rules/base.xml.in.h:305
-msgid "Left Alt is swapped with left Win-key."
-msgstr "Ľavý Alt je vymenený s ľavým klávesom Win."
-
-#: ../rules/base.xml.in.h:306
-msgid "Left Alt key changes layout."
-msgstr "Ľavý kláves Alt mení rozloženie."
-
-#: ../rules/base.xml.in.h:307
-msgid "Left Alt key switches layout while pressed."
-msgstr "Ľavý kláves Alt prepína rozloženie pri stlaÄení."
-
-#: ../rules/base.xml.in.h:308
-msgid "Left Ctrl key changes layout."
-msgstr "Ľavý kláves Ctrl mení rozloženie."
-
-#: ../rules/base.xml.in.h:309
-msgid "Left Shift key changes layout."
-msgstr "Ľavý kláves Shift mení rozloženie."
-
-#: ../rules/base.xml.in.h:310
-msgid "Left Win-key changes layout."
-msgstr "Ľavý kláves Win mení rozloženie."
-
-#: ../rules/base.xml.in.h:311
-msgid "Left Win-key is Compose."
-msgstr "Ľavý kláves Win je Compose."
-
-#: ../rules/base.xml.in.h:312
-msgid "Left Win-key switches layout while pressed."
-msgstr "Ľavý kláves Win prepína rozloženie pri stlaÄení."
-
-#: ../rules/base.xml.in.h:313
-msgid "Left hand"
-msgstr "ľavá ruka"
-
-#: ../rules/base.xml.in.h:314
-msgid "Left handed Dvorak"
-msgstr "ľavá ruka dvorak"
-
-#: ../rules/base.xml.in.h:315
-msgid "Lithuania"
-msgstr "Litva"
-
-#: ../rules/base.xml.in.h:316
-msgid "Logitech Access Keyboard"
-msgstr "Logitech Access Keyboard"
-
-#: ../rules/base.xml.in.h:317
-msgid "Logitech Cordless Desktop"
-msgstr "Logitech Cordless Desktop"
-
-#: ../rules/base.xml.in.h:318
-msgid "Logitech Cordless Desktop LX-300"
-msgstr "Logitech Cordless Desktop LX-300"
-
-#: ../rules/base.xml.in.h:319
-msgid "Logitech Cordless Desktop Navigator"
-msgstr "Logitech Cordless Desktop Navigator"
-
-#: ../rules/base.xml.in.h:320
-msgid "Logitech Cordless Desktop Optical"
-msgstr "Logitech Cordless Desktop Optical"
-
-#: ../rules/base.xml.in.h:321
-msgid "Logitech Cordless Desktop Pro"
-msgstr "Logitech Cordless Desktop Pro"
-
-#: ../rules/base.xml.in.h:322
-msgid "Logitech Cordless Desktop Pro (alternate option)"
-msgstr "Logitech Cordless Desktop Pro (alternatívna voľba)"
-
-#: ../rules/base.xml.in.h:323
-msgid "Logitech Cordless Desktop Pro (alternate option2)"
-msgstr "Logitech Cordless Desktop Pro (alternatívna voľba2)"
-
-#: ../rules/base.xml.in.h:324
-msgid "Logitech Cordless Desktop iTouch"
-msgstr "Logitech Cordless Desktop iTouch"
-
-#: ../rules/base.xml.in.h:325
-msgid "Logitech Cordless Freedom/Desktop Navigator"
-msgstr "Logitech Cordless Freedom/Desktop Navigator"
-
-#: ../rules/base.xml.in.h:326
-msgid "Logitech G15 extra keys via G15daemon"
-msgstr "Logitech G15 extra klávesy pomocou G15daemon"
-
-#: ../rules/base.xml.in.h:327
-msgid "Logitech Internet Keyboard"
-msgstr "Logitech Internet Keyboard"
-
-#: ../rules/base.xml.in.h:328
-msgid "Logitech Internet Navigator Keyboard"
-msgstr "Logitech Internet Navigator Keyboard"
-
-#: ../rules/base.xml.in.h:329
-msgid "Logitech Ultra-X Keyboard"
-msgstr "Logitech Ultra-X Keyboard"
-
-#: ../rules/base.xml.in.h:330
-msgid "Logitech diNovo Keyboard"
-msgstr "Logitech diNovo Keyboard"
-
-#: ../rules/base.xml.in.h:331
-msgid "Logitech iTouch"
-msgstr "Logitech iTouch"
-
-#: ../rules/base.xml.in.h:332
-msgid "Logitech iTouch Cordless Keyboard (model Y-RB6)"
-msgstr "Logitech iTouch Cordless Keyboard (model Y-RB6)"
-
-#: ../rules/base.xml.in.h:333
-msgid "Logitech iTouch Internet Navigator Keyboard SE"
-msgstr "Logitech iTouch Internet Navigator Keyboard SE"
-
-#: ../rules/base.xml.in.h:334
-msgid "Logitech iTouch Internet Navigator Keyboard SE (USB)"
-msgstr "Logitech iTouch Internet Navigator Keyboard SE (USB)"
-
-#: ../rules/base.xml.in.h:335
-msgid "Ltu"
-msgstr "Lit"
-
-#: ../rules/base.xml.in.h:336
-msgid "Lva"
-msgstr "Lot"
-
-#: ../rules/base.xml.in.h:337
-msgid "MESS"
-msgstr "MESS"
-
-#: ../rules/base.xml.in.h:338
-msgid "MacBook/MacBook Pro"
-msgstr "MacBook/MacBook Pro"
-
-#: ../rules/base.xml.in.h:339
-msgid "MacBook/MacBook Pro (Intl)"
-msgstr "MacBook/MacBook Pro (medzin)"
-
-#: ../rules/base.xml.in.h:340
-msgid "Macedonia"
-msgstr "Macedónsko"
-
-#: ../rules/base.xml.in.h:341
-msgid "Macintosh"
-msgstr "Macintosh"
-
-#: ../rules/base.xml.in.h:342
-msgid "Macintosh Old"
-msgstr "Macintosh staré"
-
-#: ../rules/base.xml.in.h:343
-msgid "Macintosh, Sun dead keys"
-msgstr "Macintosh, mŕtve klávesy Sun"
-
-#: ../rules/base.xml.in.h:344
-msgid "Macintosh, eliminate dead keys"
-msgstr "Macintosh, eliminovať mŕtve klávesy"
-
-#: ../rules/base.xml.in.h:345
-msgid "Make CapsLock an additional Ctrl."
-msgstr "UrobiÅ¥ z CapsLock Äalší Ctrl."
-
-#: ../rules/base.xml.in.h:346
-msgid "Mal"
-msgstr "Mal"
-
-#: ../rules/base.xml.in.h:347
-msgid "Malayalam"
-msgstr "Malajalámske"
-
-#: ../rules/base.xml.in.h:348
-msgid "Maldives"
-msgstr "Maldivy"
-
-#: ../rules/base.xml.in.h:349
-msgid "Malta"
-msgstr "Malta"
-
-#: ../rules/base.xml.in.h:350
-msgid "Maltese keyboard with US layout"
-msgstr "Maltézska klávesnica s rozložením USA"
-
-#: ../rules/base.xml.in.h:351
-msgid "Mao"
-msgstr "Mao"
-
-#: ../rules/base.xml.in.h:352
-msgid "Maori"
-msgstr "maorÄina"
-
-#: ../rules/base.xml.in.h:353
-msgid "Memorex MX1998"
-msgstr "Memorex MX1998"
-
-#: ../rules/base.xml.in.h:354
-msgid "Memorex MX2500 EZ-Access Keyboard"
-msgstr "Memorex MX2500 EZ-Access Keyboard"
-
-#: ../rules/base.xml.in.h:355
-msgid "Memorex MX2750"
-msgstr "Memorex MX2750"
-
-#: ../rules/base.xml.in.h:356
-msgid "Menu is Compose."
-msgstr "Ponuka je Compose."
-
-#: ../rules/base.xml.in.h:357
-msgid "Menu key changes layout."
-msgstr "Kláves Ponuka mení rozloženie."
-
-#: ../rules/base.xml.in.h:358
-msgid "Meta is mapped to the Win-keys."
-msgstr "Meta je mapovaný na Win-klávesy."
-
-#: ../rules/base.xml.in.h:359
-msgid "Meta is mapped to the left Win-key."
-msgstr "Meta je mapovaný na ľavý Win-kláves."
-
-#: ../rules/base.xml.in.h:360
-msgid "Microsoft Internet Keyboard"
-msgstr "Microsoft Internet Keyboard"
-
-#: ../rules/base.xml.in.h:361
-msgid "Microsoft Internet Keyboard Pro, Swedish"
-msgstr "Microsoft Internet Keyboard Pro, Švédska"
-
-#: ../rules/base.xml.in.h:362
-msgid "Microsoft Natural"
-msgstr "Microsoft Natural"
-
-#: ../rules/base.xml.in.h:363
-msgid "Microsoft Natural Keyboard Pro / Microsoft Internet Keyboard Pro"
-msgstr "Microsoft Natural Keyboard Pro / Microsoft Internet Keyboard Pro"
-
-#: ../rules/base.xml.in.h:364
-msgid "Microsoft Natural Keyboard Pro OEM"
-msgstr "Microsoft Natural Keyboard Pro OEM"
-
-#: ../rules/base.xml.in.h:365
-msgid "Microsoft Natural Keyboard Pro USB / Microsoft Internet Keyboard Pro"
-msgstr "Microsoft Natural Keyboard Pro USB / Microsoft Internet Keyboard Pro"
-
-#: ../rules/base.xml.in.h:366
-msgid "Microsoft Office Keyboard"
-msgstr "Microsoft Office Keyboard"
-
-#: ../rules/base.xml.in.h:367
-msgid "Microsoft Wireless Multimedia Keyboard 1.0A"
-msgstr "Microsoft Wireless Multimedia Keyboard 1.0A"
-
-#: ../rules/base.xml.in.h:368 ../rules/sun.xml.in.h:72
-msgid "Miscellaneous compatibility options"
-msgstr "DodatoÄné voľby pre kompatibilitu"
-
-#: ../rules/base.xml.in.h:369
-msgid "Mkd"
-msgstr "Mak"
-
-#: ../rules/base.xml.in.h:370
-msgid "Mlt"
-msgstr "Mlt"
-
-#: ../rules/base.xml.in.h:371
-msgid "Mmr"
-msgstr "Mmr"
-
-#: ../rules/base.xml.in.h:372
-msgid "Mng"
-msgstr "Mng"
-
-#: ../rules/base.xml.in.h:373
-msgid "Mongolia"
-msgstr "Mongolsko"
-
-#: ../rules/base.xml.in.h:374
-msgid "Morocco"
-msgstr "Maroko"
-
-#: ../rules/base.xml.in.h:375 ../rules/sun.xml.in.h:73
-msgid "Multilingual"
-msgstr "ViacjazyÄné"
-
-#: ../rules/base.xml.in.h:376
-msgid "Multilingual, first part"
-msgstr "ViacjazyÄné, prvá ÄasÅ¥"
-
-#: ../rules/base.xml.in.h:377 ../rules/sun.xml.in.h:74
-msgid "Multilingual, second part"
-msgstr "ViacjazyÄné, druhá ÄasÅ¥"
-
-#: ../rules/base.xml.in.h:378
-msgid "Myanmar"
-msgstr "Mjanmarsko"
-
-#: ../rules/base.xml.in.h:379
-msgid "NICOLA-F style Backspace"
-msgstr "Backspace v štýle NICOLA-F"
-
-#: ../rules/base.xml.in.h:380
-msgid "Neostyle"
-msgstr "Neoštýl"
-
-#: ../rules/base.xml.in.h:381
-msgid "Nep"
-msgstr "Nep"
-
-#: ../rules/base.xml.in.h:382
-msgid "Nepal"
-msgstr "Nepál"
-
-#: ../rules/base.xml.in.h:383
-msgid "Netherlands"
-msgstr "Holandsko"
-
-#: ../rules/base.xml.in.h:384
-msgid "Nig"
-msgstr "Nig"
-
-#: ../rules/base.xml.in.h:385
-msgid "Nigeria"
-msgstr "Nigéria"
-
-#: ../rules/base.xml.in.h:386
-msgid "Nld"
-msgstr "Nld"
-
-#: ../rules/base.xml.in.h:387 ../rules/sun.xml.in.h:75
-msgid "Nor"
-msgstr "Nor"
-
-#: ../rules/base.xml.in.h:388
-msgid "Northern Saami"
-msgstr "severná saamÄina"
-
-#: ../rules/base.xml.in.h:389
-msgid "Northern Saami, eliminate dead keys"
-msgstr "severná saamÄina, eliminovaÅ¥ mÅ•tve klávesy"
-
-#: ../rules/base.xml.in.h:390
-msgid "Northgate OmniKey 101"
-msgstr "Northgate OmniKey 101"
-
-#: ../rules/base.xml.in.h:391
-msgid "Norway"
-msgstr "Nórsko"
-
-#: ../rules/base.xml.in.h:392
-msgid "NumLock LED shows alternative layout."
-msgstr "Num Lock LED zobrazuje alternatívne rozloženie."
-
-#: ../rules/base.xml.in.h:393
-msgid "Numeric keypad keys work as with Mac."
-msgstr "Numerická klávesnica funguje ako na Mac."
-
-#: ../rules/base.xml.in.h:394
-msgid "Numeric keypad layout selection"
-msgstr "Výber rozloženia numerickej klávesnice"
-
-#: ../rules/base.xml.in.h:395
-msgid "OADG 109A"
-msgstr "OADG 109A"
-
-#: ../rules/base.xml.in.h:396
-msgid "Ogham"
-msgstr "Oghamské"
-
-#: ../rules/base.xml.in.h:397
-msgid "Ogham IS434"
-msgstr "Ogham IS434"
-
-#: ../rules/base.xml.in.h:398
-msgid "Oriya"
-msgstr "uríjÄina"
-
-#: ../rules/base.xml.in.h:399
-msgid "Ortek MCK-800 MM/Internet keyboard"
-msgstr "Ortek MCK-800 MM/internetová klávesnica"
-
-#: ../rules/base.xml.in.h:400
-msgid "Ossetian"
-msgstr "Osetské"
-
-#: ../rules/base.xml.in.h:401
-msgid "Ossetian, Winkeys"
-msgstr "Osetské, klávesy Win"
-
-#: ../rules/base.xml.in.h:402
-msgid "PC-98xx Series"
-msgstr "Séria PC-98xx"
-
-#: ../rules/base.xml.in.h:403
-msgid "Pak"
-msgstr "Pak"
-
-#: ../rules/base.xml.in.h:404
-msgid "Pakistan"
-msgstr "Pakistan"
-
-#: ../rules/base.xml.in.h:405
-msgid "Pashto"
-msgstr "paÅ¡tÄina"
-
-# thajské rozloženie
-#: ../rules/base.xml.in.h:406
-msgid "Pattachote"
-msgstr "Pattachote"
-
-#: ../rules/base.xml.in.h:407 ../rules/sun.xml.in.h:78
-msgid "Phonetic"
-msgstr "Fonetické"
-
-#: ../rules/base.xml.in.h:408 ../rules/sun.xml.in.h:79
-msgid "Pol"
-msgstr "Pol"
-
-#: ../rules/base.xml.in.h:409
-msgid "Poland"
-msgstr "Poľsko"
-
-#: ../rules/base.xml.in.h:410
-msgid "Polytonic"
-msgstr "Polytónické"
-
-#: ../rules/base.xml.in.h:411
-msgid "Portugal"
-msgstr "Portugalsko"
-
-#: ../rules/base.xml.in.h:412
-msgid "Press Left Alt key to choose 3rd level."
-msgstr "StlaÄenie ľavého klávesu Alt vyberá 3. úroveň."
-
-#: ../rules/base.xml.in.h:413
-msgid "Press Left Win-key to choose 3rd level."
-msgstr "StlaÄenie ľavého klávesu Win vyberá 3. úroveň."
-
-#: ../rules/base.xml.in.h:414
-msgid "Press Menu key to choose 3rd level."
-msgstr "StlaÄenie klávesu Ponuka vyberá 3. úroveň."
-
-#: ../rules/base.xml.in.h:415
-msgid "Press Right Alt key to choose 3rd level, Shift+Right Alt key is Multi_Key."
-msgstr "StlaÄenie pravého klávesu Alt vyberá 3. úroveň, Shift+pravý kláves Alt key je Multi_Key."
-
-#: ../rules/base.xml.in.h:416
-msgid "Press Right Alt key to choose 3rd level."
-msgstr "StlaÄenie pravého klávesu Alt vyberá 3. úroveň."
-
-#: ../rules/base.xml.in.h:417
-msgid "Press Right Ctrl to choose 3rd level."
-msgstr "StlaÄenie pravého Ctrl vyberá 3. úroveň."
-
-#: ../rules/base.xml.in.h:418
-msgid "Press Right Win-key to choose 3rd level."
-msgstr "StlaÄenie pravého klávesu Win vyberá 3. úroveň."
-
-#: ../rules/base.xml.in.h:419
-msgid "Press any of Alt keys to choose 3rd level."
-msgstr "StlaÄenie ľubovoľného klávesu Alt vyberá 3. úroveň."
-
-#: ../rules/base.xml.in.h:420
-msgid "Press any of Win-keys to choose 3rd level."
-msgstr "StlaÄenie ľubovoľného klávesu Win vyberá 3. úroveň."
-
-#: ../rules/base.xml.in.h:421
-msgid "Pro"
-msgstr "Pro"
-
-#: ../rules/base.xml.in.h:422
-msgid "Pro Keypad"
-msgstr "Pro Keypad"
-
-#: ../rules/base.xml.in.h:423
-msgid "Probhat"
-msgstr "Probhat"
-
-#: ../rules/base.xml.in.h:424
-msgid "Propeller Voyager (KTEZ-1000)"
-msgstr "Propeller Voyager (KTEZ-1000)"
-
-#: ../rules/base.xml.in.h:425 ../rules/sun.xml.in.h:88
-msgid "Prt"
-msgstr "Prt"
-
-#: ../rules/base.xml.in.h:426
-msgid "QTronix Scorpius 98N+"
-msgstr "QTronix Scorpius 98N+"
-
-#: ../rules/base.xml.in.h:427
-msgid "R-Alt switches layout while pressed."
-msgstr "Pravý kláves Alt prepína rozloženie pri stlaÄení."
-
-#: ../rules/base.xml.in.h:428
-msgid "Right Alt is Compose."
-msgstr "Pravý Alt je Compose."
-
-#: ../rules/base.xml.in.h:429
-msgid "Right Alt key changes layout."
-msgstr "Pravý kláves Alt mení rozloženie."
-
-#: ../rules/base.xml.in.h:430 ../rules/sun.xml.in.h:90
-msgid "Right Alt key never chooses 3rd level."
-msgstr "Pravý kláves Alt nikdy nevyberá 3. úroveň."
-
-#: ../rules/base.xml.in.h:431
-msgid "Right Ctrl is Compose."
-msgstr "Pravý Alt je Compose."
-
-#: ../rules/base.xml.in.h:432
-msgid "Right Ctrl key changes layout."
-msgstr "Pravý kláves Ctrl mení rozloženie."
-
-#: ../rules/base.xml.in.h:433
-msgid "Right Ctrl key switches layout while pressed."
-msgstr "Pravý kláves Win prepína rozloženie pri stlaÄení."
-
-#: ../rules/base.xml.in.h:434
-msgid "Right Ctrl key works as Right Alt."
-msgstr "Pravý kláves Control funguje ako pravý Alt."
-
-#: ../rules/base.xml.in.h:435
-msgid "Right Shift key changes layout."
-msgstr "Pravý kláves Shift mení rozloženie."
-
-#: ../rules/base.xml.in.h:436
-msgid "Right Win-key changes layout."
-msgstr "Pravý kláves Win mení rozloženie."
-
-#: ../rules/base.xml.in.h:437
-msgid "Right Win-key is Compose."
-msgstr "Pravý kláves Win je Compose"
-
-#: ../rules/base.xml.in.h:438
-msgid "Right Win-key switches layout while pressed."
-msgstr "Pravý kláves Win prepína rozloženie pri stlaÄení."
-
-#: ../rules/base.xml.in.h:439
-msgid "Right hand"
-msgstr "pravá ruka"
-
-#: ../rules/base.xml.in.h:440
-msgid "Right handed Dvorak"
-msgstr "pravá ruka dvorak"
-
-#: ../rules/base.xml.in.h:441
-msgid "Romania"
-msgstr "Rumunsko"
-
-#: ../rules/base.xml.in.h:442
-msgid "Romanian keyboard with German letters"
-msgstr "Rumunská klávesnica s nemeckými písmenmi"
-
-#: ../rules/base.xml.in.h:443
-msgid "Romanian keyboard with German letters, eliminate dead keys"
-msgstr "Rumunská klávesnica s nemeckými písmenami, eliminovať mŕtve klávesy"
-
-#: ../rules/base.xml.in.h:444
-msgid "Rou"
-msgstr "Rum"
-
-#: ../rules/base.xml.in.h:445 ../rules/sun.xml.in.h:95
-msgid "Rus"
-msgstr "Rus"
-
-#: ../rules/base.xml.in.h:446
-msgid "Russia"
-msgstr "Rusko"
-
-#: ../rules/base.xml.in.h:447 ../rules/sun.xml.in.h:96
-msgid "Russian"
-msgstr "Ruské"
-
-#: ../rules/base.xml.in.h:448
-msgid "Russian phonetic"
-msgstr "Ruské fonetické"
-
-#: ../rules/base.xml.in.h:449
-msgid "Russian phonetic, eliminate dead keys"
-msgstr "Ruské fonetické, eliminovať mrtvé klávesy"
-
-#: ../rules/base.xml.in.h:450
-msgid "Russian with Kazakh"
-msgstr "Ruská s kazaštinou"
-
-#: ../rules/base.xml.in.h:451
-msgid "SCG"
-msgstr "SCG"
-
-#: ../rules/base.xml.in.h:452
-msgid "SILVERCREST Multimedia Wireless Keyboard"
-msgstr "SILVERCREST Multimedia Wireless Keyboard"
-
-#: ../rules/base.xml.in.h:453
-msgid "SK-1300"
-msgstr "SK-1300"
-
-#: ../rules/base.xml.in.h:454
-msgid "SK-2500"
-msgstr "SK-2500"
-
-#: ../rules/base.xml.in.h:455
-msgid "SK-6200"
-msgstr "SK-6200"
-
-#: ../rules/base.xml.in.h:456
-msgid "SK-7100"
-msgstr "SK-7100"
-
-#: ../rules/base.xml.in.h:457
-msgid "SVEN Ergonomic 2500"
-msgstr "SVEN Ergonomic 2500"
-
-#: ../rules/base.xml.in.h:458
-msgid "Samsung SDM 4500P"
-msgstr "Samsung SDM 4500P"
-
-#: ../rules/base.xml.in.h:459
-msgid "Samsung SDM 4510P"
-msgstr "Samsung SDM 4510P"
-
-#: ../rules/base.xml.in.h:460
-msgid "ScrollLock LED shows alternative layout."
-msgstr "Scroll Lock LED zobrazuje alternatívne rozloženie."
-
-#: ../rules/base.xml.in.h:461
-msgid "Serbia and Montenegro"
-msgstr "Srbsko a ÄŒierna Hora"
-
-#: ../rules/base.xml.in.h:462
-msgid "Shift with numeric keypad keys works as in MS Windows."
-msgstr "Shift s numerickými klávesmi pracuje ako v MS Windows."
-
-#: ../rules/base.xml.in.h:463
-msgid "Shift+CapsLock changes layout."
-msgstr "Shift+Caps Lock mení rozloženie."
-
-#: ../rules/base.xml.in.h:464
-msgid "Slovakia"
-msgstr "Slovensko"
-
-#: ../rules/base.xml.in.h:465
-msgid "Slovenia"
-msgstr "Slovinsko"
-
-#: ../rules/base.xml.in.h:466
-msgid "South Africa"
-msgstr "Južná Afrika"
-
-#: ../rules/base.xml.in.h:467
-msgid "Southern Uzbek"
-msgstr "južná uzbeÄtina"
-
-#: ../rules/base.xml.in.h:468
-msgid "Space key outputs non-breakable space character at fourth level, thin non-breakable space character at sixth level"
-msgstr "Medzerník dáva znak nezalomiteľná medzera na štvrtej úrovni, tenká nezalomiteľná medzera na šiestej úrovni."
-
-#: ../rules/base.xml.in.h:469
-msgid "Space key outputs non-breakable space character at fourth level."
-msgstr "Medzerník dáva znak nezalomiteľná medzera na štvrtej úrovni."
-
-#: ../rules/base.xml.in.h:470
-msgid "Space key outputs non-breakable space character at second level."
-msgstr "Medzerník dáva znak nezalomiteľná medzera na druhej úrovni."
-
-#: ../rules/base.xml.in.h:471
-msgid "Space key outputs non-breakable space character at third level, nothing at fourth level."
-msgstr "Medzerník dáva znak nezalomiteľná medzera na tretej úrovni, niÄ na Å¡tvrtej úrovni."
-
-#: ../rules/base.xml.in.h:472
-msgid "Space key outputs non-breakable space character at third level, thin non-breakable space character at fourth level"
-msgstr "Medzerník dáva znak nezalomiteľná medzera na tretej úrovni, tenká nezalomiteľná medzera na štvrtej úrovni."
-
-#: ../rules/base.xml.in.h:473
-msgid "Space key outputs non-breakable space character at third level."
-msgstr "Medzerník dáva znak nezalomiteľná medzera na tretej úrovni."
-
-#: ../rules/base.xml.in.h:474
-msgid "Space key outputs usual space at any level."
-msgstr "Medzerník dáva obyÄajnú medzeru na každej úrovni."
-
-#: ../rules/base.xml.in.h:475
-msgid "Spain"
-msgstr "Å panielsko"
-
-#: ../rules/base.xml.in.h:476 ../rules/sun.xml.in.h:103
-msgid "Special keys (Ctrl+Alt+&lt;key&gt;) handled in a server."
-msgstr "Špeciálne klávesy (Ctrl+Alt+&lt;key&gt;) spracované na serveru."
-
-#: ../rules/base.xml.in.h:477
-msgid "SrL"
-msgstr "SrL"
-
-#: ../rules/base.xml.in.h:478
-msgid "Sri Lanka"
-msgstr "Srí Lanka"
-
-#: ../rules/base.xml.in.h:479 ../rules/sun.xml.in.h:104
-msgid "Standard"
-msgstr "štandardné"
-
-#. RSTU 2019-91
-#: ../rules/base.xml.in.h:481
-msgid "Standard RSTU"
-msgstr "štandardné RSTU"
-
-#. RSTU 2019-91
-#: ../rules/base.xml.in.h:483
-msgid "Standard RSTU on Russian layout"
-msgstr "štandardné RSTU na ruskom rozložení"
-
-#: ../rules/base.xml.in.h:484 ../rules/sun.xml.in.h:112
-msgid "Sun dead keys"
-msgstr "mŕtve klávesy Sun"
-
-#: ../rules/base.xml.in.h:485
-msgid "Super Power Multimedia Keyboard"
-msgstr "Super Power Multimedia Keyboard"
-
-#: ../rules/base.xml.in.h:486
-msgid "Super is mapped to the Win-keys."
-msgstr "Super je mapovaný na klávesy Win."
-
-#: ../rules/base.xml.in.h:487
-msgid "Svdvorak"
-msgstr "Svdvorak"
-
-#: ../rules/base.xml.in.h:488 ../rules/sun.xml.in.h:113
-msgid "Svk"
-msgstr "Svk"
-
-#: ../rules/base.xml.in.h:489
-msgid "Svn"
-msgstr "Svn"
-
-#: ../rules/base.xml.in.h:490
-msgid "Swap Ctrl and CapsLock."
-msgstr "Vymeniť Control a Caps Lock"
-
-#: ../rules/base.xml.in.h:491
-msgid "Swap keycodes of two keys when Mac keyboards are misdetected by kernel."
-msgstr "VymeniÅ¥ kódy dvoch kláves keÄ jadro chybne detekuje klávesnice Mac."
-
-#: ../rules/base.xml.in.h:492 ../rules/sun.xml.in.h:115
-msgid "Swe"
-msgstr "Swe"
-
-#: ../rules/base.xml.in.h:493
-msgid "Sweden"
-msgstr "Švédsko"
-
-#: ../rules/base.xml.in.h:494
-msgid "Switzerland"
-msgstr "Å vajÄiarsko"
-
-#: ../rules/base.xml.in.h:495
-msgid "Symplon PaceBook (tablet PC)"
-msgstr "Symplon PaceBook (tablet PC)"
-
-#: ../rules/base.xml.in.h:496
-msgid "Syr"
-msgstr "Syr"
-
-#: ../rules/base.xml.in.h:497
-msgid "Syria"
-msgstr "Sýrske"
-
-#: ../rules/base.xml.in.h:498
-msgid "Syriac"
-msgstr "Syrské"
-
-#: ../rules/base.xml.in.h:499
-msgid "Syriac phonetic"
-msgstr "Sýske fonetické"
-
-#: ../rules/base.xml.in.h:500
-msgid "TIS-820.2538"
-msgstr "TIS-820.2538"
-
-#: ../rules/base.xml.in.h:501
-msgid "Tajikistan"
-msgstr "Tadžické"
-
-#: ../rules/base.xml.in.h:502
-msgid "Tamil"
-msgstr "Tamilské"
-
-#: ../rules/base.xml.in.h:503
-msgid "Tamil TAB Typewriter"
-msgstr "Tamiský TAB písací stroj"
-
-#: ../rules/base.xml.in.h:504
-msgid "Tamil TSCII Typewriter"
-msgstr "Tamilské TSCII písací stroj"
-
-#: ../rules/base.xml.in.h:505
-msgid "Tamil Unicode"
-msgstr "Tamilské Unicode"
-
-#: ../rules/base.xml.in.h:506
-msgid "Tatar"
-msgstr "tatárÄina"
-
-#: ../rules/base.xml.in.h:507
-msgid "Telugu"
-msgstr "Telugské"
-
-#: ../rules/base.xml.in.h:508
-msgid "Tha"
-msgstr "Tha"
-
-#: ../rules/base.xml.in.h:509
-msgid "Thailand"
-msgstr "Thajsko"
-
-#: ../rules/base.xml.in.h:510 ../rules/sun.xml.in.h:119
-msgid "Third level choosers"
-msgstr "Výber tretej úrovne"
-
-# berberská latinská abeceda
-#: ../rules/base.xml.in.h:511
-msgid "Tifinagh"
-msgstr "Tifinagh"
-
-# berberská latinská abeceda
-#: ../rules/base.xml.in.h:512
-msgid "Tifinagh Alternative"
-msgstr "Tifinagh alternatívne"
-
-# berberská latinská abeceda
-#: ../rules/base.xml.in.h:513
-msgid "Tifinagh Alternative Phonetic"
-msgstr "Tifinagh alternatívne fonetické"
-
-# berberská latinská abeceda
-#: ../rules/base.xml.in.h:514
-msgid "Tifinagh Extended"
-msgstr "Tifinagh rozšírené"
-
-# berberská latinská abeceda
-#: ../rules/base.xml.in.h:515
-msgid "Tifinagh Extended Phonetic"
-msgstr "Tifinagh rozšírené fonetické"
-
-# berberská latinská abeceda
-#: ../rules/base.xml.in.h:516
-msgid "Tifinagh Phonetic"
-msgstr "Tifinagh fonetické"
-
-#: ../rules/base.xml.in.h:517
-msgid "Tilde (~) variant"
-msgstr "Variant vlnovky (~)"
-
-#: ../rules/base.xml.in.h:518
-msgid "Tjk"
-msgstr "Tjk"
-
-#: ../rules/base.xml.in.h:519
-msgid "Toshiba Satellite S3000"
-msgstr "Toshiba Satellite S3000"
-
-#: ../rules/base.xml.in.h:520
-msgid "Trust Direct Access Keyboard"
-msgstr "Trust Direct Access Keyboard"
-
-#: ../rules/base.xml.in.h:521
-msgid "Trust Wireless Keyboard Classic"
-msgstr "Trust Wireless Keyboard Classic"
-
-#: ../rules/base.xml.in.h:522 ../rules/sun.xml.in.h:120
-msgid "Tur"
-msgstr "Tur"
-
-#: ../rules/base.xml.in.h:523
-msgid "Turkey"
-msgstr "Turecko"
-
-#: ../rules/base.xml.in.h:524
-msgid "Typewriter"
-msgstr "Písací stroj"
-
-#: ../rules/base.xml.in.h:525 ../rules/sun.xml.in.h:124
-msgid "U.S. English"
-msgstr "USA anglické"
-
-#: ../rules/base.xml.in.h:526
-#, fuzzy
-msgid "US keyboard with Bosnian digraphs"
-msgstr "Klávesnica USA s bosniackymi digraphs"
-
-#: ../rules/base.xml.in.h:527
-#, fuzzy
-msgid "US keyboard with Bosnian letters"
-msgstr "Klávesnica USA s bosniackymi písmenami"
-
-#: ../rules/base.xml.in.h:528
-#, fuzzy
-msgid "US keyboard with Croatian digraphs"
-msgstr "Klávesnica USA s chorvátskymi digraphs"
-
-#: ../rules/base.xml.in.h:529
-#, fuzzy
-msgid "US keyboard with Croatian letters"
-msgstr "Klávesnica USA s chorvátskymi písmenami"
-
-#: ../rules/base.xml.in.h:530
-msgid "US keyboard with Lithuanian letters"
-msgstr "Americká klávesnica s litovskými písmenami"
-
-#: ../rules/base.xml.in.h:531
-#, fuzzy
-msgid "US keyboard with Slovenian digraphs"
-msgstr "Klávesnica USA so slovinskými digraphs"
-
-#: ../rules/base.xml.in.h:532
-#, fuzzy
-msgid "US keyboard with Slovenian letters"
-msgstr "Klávesnica USA so slovinskými písmenami"
-
-#: ../rules/base.xml.in.h:533 ../rules/sun.xml.in.h:126
-msgid "USA"
-msgstr "USA"
-
-#: ../rules/base.xml.in.h:534
-msgid "Udmurt"
-msgstr "udmurtÄina"
-
-#: ../rules/base.xml.in.h:535
-msgid "Ukr"
-msgstr "Ukr"
-
-#: ../rules/base.xml.in.h:536
-msgid "Ukraine"
-msgstr "Ukrajinské"
-
-#: ../rules/base.xml.in.h:537
-msgid "UnicodeExpert"
-msgstr "UnicodeExpert"
-
-#: ../rules/base.xml.in.h:538 ../rules/sun.xml.in.h:127
-msgid "United Kingdom"
-msgstr "Spojené kráľovstvo"
-
-#: ../rules/base.xml.in.h:539
-msgid "Urdu"
-msgstr "urdÄina"
-
-#: ../rules/base.xml.in.h:540
-#, fuzzy
-msgid "Use Bosnian digraphs"
-msgstr "Použiť bosniacke digraphs"
-
-#: ../rules/base.xml.in.h:541
-#, fuzzy
-msgid "Use Croatian digraphs"
-msgstr "Použiť chorvátske digraphs"
-
-#: ../rules/base.xml.in.h:542
-#, fuzzy
-msgid "Use Slovenian digraphs"
-msgstr "Použiť slovinské digraphs"
-
-#: ../rules/base.xml.in.h:543
-msgid "Use guillemets for quotes"
-msgstr "Použiť uhlové zátvorky pre úvodzovky"
-
-#: ../rules/base.xml.in.h:544
-msgid "Use keyboard LED to show alternative layout."
-msgstr "Použiť LED klávesnice pre zobrazenie alternatívneho rozloženia."
-
-#: ../rules/base.xml.in.h:545
-msgid "Use keypad with unicode additions (arrows and math operators)"
-msgstr "Použiť numerickú klávesnicu s doplnkami Unicode (šípky a matematické operátory)"
-
-#: ../rules/base.xml.in.h:546
-msgid "Using space key to input non-breakable space character"
-msgstr "Použiť klávesu medzera na zadanie znaku nezalomiteľná medzera"
-
-#: ../rules/base.xml.in.h:547
-msgid "Uzb"
-msgstr "Uzb"
-
-#: ../rules/base.xml.in.h:548
-msgid "Uzbekistan"
-msgstr "Uzbecké"
-
-#: ../rules/base.xml.in.h:549
-msgid "Vietnam"
-msgstr "Vietnamské"
-
-#: ../rules/base.xml.in.h:550
-msgid "Vnm"
-msgstr "Vnm"
-
-#: ../rules/base.xml.in.h:551
-msgid "Wang model 724 azerty"
-msgstr "Wang model 724 azerty"
-
-#: ../rules/base.xml.in.h:552
-msgid "Western"
-msgstr "západné"
-
-#: ../rules/base.xml.in.h:553
-msgid "Winbook Model XP5"
-msgstr "Winbook Model XP5"
-
-#: ../rules/base.xml.in.h:554
-msgid "Winkeys"
-msgstr "Win klávesy"
-
-#: ../rules/base.xml.in.h:555
-msgid "With &lt;\\|&gt; key"
-msgstr "s klávesmi &lt;\\|&gt;"
-
-#: ../rules/base.xml.in.h:556
-msgid "With EuroSign on 5"
-msgstr "so znakom euro na 5"
-
-#: ../rules/base.xml.in.h:557
-msgid "With guillemets"
-msgstr "s uhlovými zátvorkami"
-
-#: ../rules/base.xml.in.h:558
-msgid "Yahoo! Internet Keyboard"
-msgstr "Yahoo! Internet Keyboard"
-
-#: ../rules/base.xml.in.h:559
-msgid "Yoruba"
-msgstr "jorubÄina"
-
-#: ../rules/base.xml.in.h:560
-msgid "Z and ZHE swapped"
-msgstr "Z a ZHE vymenené"
-
-#: ../rules/base.xml.in.h:561
-msgid "Zar"
-msgstr "Zar"
-
-#: ../rules/base.xml.in.h:562
-msgid "azerty"
-msgstr "azerty"
-
-#: ../rules/base.xml.in.h:563
-msgid "azerty/digits"
-msgstr "azerty/Äíslice"
-
-#: ../rules/base.xml.in.h:564
-msgid "digits"
-msgstr "Äíslice"
-
-#: ../rules/base.xml.in.h:565
-msgid "displaced semicolon and quote (obsolete)"
-msgstr "posunutá bodkoÄiarka a dvojbodka (zastaralé)"
-
-#: ../rules/base.xml.in.h:566
-msgid "lyx"
-msgstr "lyx"
-
-#: ../rules/base.xml.in.h:567 ../rules/sun.xml.in.h:132
-msgid "qwerty"
-msgstr "qwerty"
-
-#: ../rules/base.xml.in.h:568
-msgid "qwerty, extended Backslash"
-msgstr "qwerty, rozšírená spätná lomka"
-
-#: ../rules/base.xml.in.h:569
-msgid "qwerty/digits"
-msgstr "qwerty/Äíslice"
-
-#: ../rules/base.xml.in.h:570
-msgid "qwertz"
-msgstr "qwertz"
-
-#: ../rules/sun.xml.in.h:1
-msgid "\"Typewriter\""
-msgstr "Písací stroj"
-
-#: ../rules/sun.xml.in.h:17
-msgid "Acts as Shift with locking. Shift cancels Caps."
-msgstr "Pracuje ako Shift s uzamknutím. Shift ruší Caps."
-
-#: ../rules/sun.xml.in.h:18
-msgid "Acts as Shift with locking. Shift doesn't cancel Caps."
-msgstr "Pracuje ako Shift s uzamknutím. Shift neruší Caps."
-
-#: ../rules/sun.xml.in.h:19
-msgid "Alt+Control changes group"
-msgstr "Alt+Control mení rozloženie"
-
-#: ../rules/sun.xml.in.h:20
-msgid "Alt+Shift changes group"
-msgstr "Alt+Shift mení rozloženie"
-
-#: ../rules/sun.xml.in.h:21
-msgid "Basic"
-msgstr "základné"
-
-#: ../rules/sun.xml.in.h:23
-msgid "Belgian"
-msgstr "Belgická"
-
-#: ../rules/sun.xml.in.h:25
-msgid "Both Alt keys together change group"
-msgstr "Oba klávesy Alt spolu menia rozloženie"
-
-#: ../rules/sun.xml.in.h:26
-msgid "Both Ctrl keys together change group"
-msgstr "Oba klávesy Ctrl spolu menia rozloženie"
-
-#: ../rules/sun.xml.in.h:27
-msgid "Both Shift keys together change group"
-msgstr "SpoloÄné stlaÄenie oboch Shift mení rozloženie"
-
-#: ../rules/sun.xml.in.h:28
-msgid "Bulgarian"
-msgstr "Bulharské"
-
-#: ../rules/sun.xml.in.h:30
-msgid "Canadian"
-msgstr "Kanadské"
-
-#: ../rules/sun.xml.in.h:31
-msgid "Caps Lock is Compose"
-msgstr "Caps Lock je Compose"
-
-#: ../rules/sun.xml.in.h:32
-msgid "Caps Lock key changes group"
-msgstr "Kláves Caps Lock mení rozloženie"
-
-#: ../rules/sun.xml.in.h:34
-msgid "Caps_Lock LED shows alternative group"
-msgstr "Caps Lock LED zobrazuje alternatívne rozloženie"
-
-#: ../rules/sun.xml.in.h:35
-msgid "Control Key Position"
-msgstr "Pozícia klávesu Control"
-
-#: ../rules/sun.xml.in.h:36
-msgid "Control key at bottom left"
-msgstr "Kláves Control vľavo dole"
-
-#: ../rules/sun.xml.in.h:37
-msgid "Control key at left of 'A'"
-msgstr "Kláves Control naľavo od „A“"
-
-#: ../rules/sun.xml.in.h:38
-msgid "Control+Shift changes group"
-msgstr "Control+Shift mení rozloženie"
-
-#: ../rules/sun.xml.in.h:40
-msgid "Czech"
-msgstr "České"
-
-#: ../rules/sun.xml.in.h:41
-msgid "Danish"
-msgstr "Dánske"
-
-#: ../rules/sun.xml.in.h:45
-msgid "DeuCH"
-msgstr "NemÅ v"
-
-#: ../rules/sun.xml.in.h:47
-msgid "Dvo"
-msgstr "Dvo"
-
-#: ../rules/sun.xml.in.h:52
-msgid "Finnish"
-msgstr "Fínske"
-
-#: ../rules/sun.xml.in.h:54
-msgid "FraCH"
-msgstr "FraÅ v"
-
-#: ../rules/sun.xml.in.h:57
-msgid "German"
-msgstr "Nemecké"
-
-#: ../rules/sun.xml.in.h:58
-msgid "Group Shift/Lock behavior"
-msgstr "Zoskupiť chovanie Shift/Lock"
-
-#: ../rules/sun.xml.in.h:60
-msgid "Hungarian"
-msgstr "MaÄarské"
-
-#: ../rules/sun.xml.in.h:64
-msgid "Italian"
-msgstr "Talianske"
-
-#: ../rules/sun.xml.in.h:65
-msgid "Japanese"
-msgstr "Japonské"
-
-#: ../rules/sun.xml.in.h:67
-msgid "Left Alt key changes group"
-msgstr "Ľavý kláves Alt mení rozloženie"
-
-#: ../rules/sun.xml.in.h:68
-msgid "Left Alt key switches group while pressed"
-msgstr "Ľavý kláves Alt prepína rozloženie pri stlaÄení"
-
-#: ../rules/sun.xml.in.h:69
-msgid "Left Ctrl key changes group"
-msgstr "Ľavý kláves Ctrl mení rozloženie"
-
-#: ../rules/sun.xml.in.h:70
-msgid "Left Shift key changes group"
-msgstr "Ľavý kláves Shift mení rozloženie"
-
-#: ../rules/sun.xml.in.h:71
-msgid "Make CapsLock an additional Control"
-msgstr "UrobiÅ¥ z CapsLock dodatoÄný Control"
-
-#: ../rules/sun.xml.in.h:76
-msgid "Norwegian"
-msgstr "Nórske"
-
-#: ../rules/sun.xml.in.h:77
-msgid "Num_Lock LED shows alternative group"
-msgstr "Num Lock LED zobrazuje alternatívne rozloženie"
-
-#: ../rules/sun.xml.in.h:80
-msgid "Polish"
-msgstr "Poľské"
-
-#: ../rules/sun.xml.in.h:81
-msgid "Polish with Polish quotes on key \"1/!\""
-msgstr "Poľské s poľskými úvodzovkami na klávese „1/!“"
-
-#: ../rules/sun.xml.in.h:82
-msgid "Portuguese"
-msgstr "Portugalské"
-
-#: ../rules/sun.xml.in.h:83
-msgid "Press Left Alt key to choose 3rd level"
-msgstr "StlaÄením ľavého klávesu Win vyberiete 3. úroveň"
-
-#: ../rules/sun.xml.in.h:84
-msgid "Press Right Alt key to choose 3rd level"
-msgstr "StlaÄením pravého klávesu Win vyberiete 3. úroveň"
-
-#: ../rules/sun.xml.in.h:85
-msgid "Press Right Alt-key to choose 3rd level, Shift+Right Alt-key is Multi_Key"
-msgstr "StlaÄením pravého klávesu Win vyberiete 3. úroveň, shift+pravý Alt je Multi_Key"
-
-#: ../rules/sun.xml.in.h:86
-msgid "Press Right Control to choose 3rd level"
-msgstr "StlaÄenie pravého Control vyberá 3. úroveň"
-
-#: ../rules/sun.xml.in.h:87
-msgid "Press any of Alt keys to choose 3rd level"
-msgstr "StlaÄením ľuboboľného klávesu Alt vyberiete 3. úroveň"
-
-#: ../rules/sun.xml.in.h:89
-msgid "Right Alt key changes group"
-msgstr "Pravý Alt mení rozloženie"
-
-#: ../rules/sun.xml.in.h:91
-msgid "Right Alt switches group while pressed"
-msgstr "Pravý kláves Alt prepína rozloženie pri stlaÄení"
-
-#: ../rules/sun.xml.in.h:92
-msgid "Right Control key works as Right Alt"
-msgstr "Kláves pravý Control funguje ako pravý Alt"
-
-#: ../rules/sun.xml.in.h:93
-msgid "Right Ctrl key changes group"
-msgstr "Kláves pravý Ctrl mení rozloženie"
-
-#: ../rules/sun.xml.in.h:94
-msgid "Right Shift key changes group"
-msgstr "Kláves pravý Shift mení rozloženie"
-
-#: ../rules/sun.xml.in.h:97
-msgid "Scroll Lock changes group"
-msgstr "Kláves Scroll Lock mení rozloženie"
-
-#: ../rules/sun.xml.in.h:98
-msgid "Scroll_Lock LED shows alternative group"
-msgstr "Scroll Lock LED zobrazuje alternatívne rozloženie"
-
-#: ../rules/sun.xml.in.h:99
-msgid "Shift with numpad keys works as in MS Windows"
-msgstr "Shift s numerickými klávesmi pracuje ako v MS Windows"
-
-#: ../rules/sun.xml.in.h:100
-msgid "Shift+CapsLock changes group"
-msgstr "Shift+Caps Lock mení rozloženie"
-
-#: ../rules/sun.xml.in.h:101
-msgid "Slovak"
-msgstr "Slovenské"
-
-#: ../rules/sun.xml.in.h:102
-msgid "Spanish"
-msgstr "Å panielske"
-
-#: ../rules/sun.xml.in.h:105
-msgid "Sun Type 4"
-msgstr "Sun Type 4"
-
-#: ../rules/sun.xml.in.h:106
-msgid "Sun Type 5"
-msgstr "Sun Type 5"
-
-#: ../rules/sun.xml.in.h:107
-msgid "Sun Type 5 European"
-msgstr "Sun Type 5 európske"
-
-#: ../rules/sun.xml.in.h:108
-msgid "Sun Type 5 Unix"
-msgstr "Sun Type 5 Unix"
-
-#: ../rules/sun.xml.in.h:109
-msgid "Sun Type 6"
-msgstr "Sun Type 6"
-
-#: ../rules/sun.xml.in.h:110
-msgid "Sun Type 6 Unix"
-msgstr "Sun Type 6 Unix"
-
-#: ../rules/sun.xml.in.h:111
-msgid "Sun Type 6 with Euro key"
-msgstr "Sun Type 6 s klávesom euro"
-
-#: ../rules/sun.xml.in.h:114
-msgid "Swap Control and Caps Lock"
-msgstr "Prehodiť Control a Caps Lock"
-
-#: ../rules/sun.xml.in.h:116
-msgid "Swedish"
-msgstr "Švédske"
-
-#: ../rules/sun.xml.in.h:117
-msgid "Swiss French"
-msgstr "Å vajÄiarske francúzske"
-
-#: ../rules/sun.xml.in.h:118
-msgid "Swiss German"
-msgstr "Nemecké (Å vajÄiarsko)"
-
-#: ../rules/sun.xml.in.h:121
-msgid "Turkish"
-msgstr "Turecké"
-
-#: ../rules/sun.xml.in.h:122
-msgid "Turkish (F)"
-msgstr "Turecké (F)"
-
-#: ../rules/sun.xml.in.h:123
-msgid "Turkish Alt-Q Layout"
-msgstr "Turecké rozloženie Alt-Q"
-
-#: ../rules/sun.xml.in.h:125
-msgid "U.S. English w/ ISO9995-3"
-msgstr "U.S.A. anglické s ISO9995-3"
-
-#: ../rules/sun.xml.in.h:128
-msgid "Use keyboard LED to show alternative group"
-msgstr "Použiť LED klávesnice pre zobrazenie alternatívnej skupiny"
-
-#: ../rules/sun.xml.in.h:129
-msgid "Uses internal capitalization. Shift cancels Caps."
-msgstr "Používa interný prevod na kapitálky. Shift ruší Caps."
-
-#: ../rules/sun.xml.in.h:130
-msgid "Uses internal capitalization. Shift doesn't cancel Caps."
-msgstr "Používa interný prevod na kapitálky. Shift neruší Caps."
-
-#: ../rules/sun.xml.in.h:131
-msgid "bksl"
-msgstr "bksl"
-
-#: ../rules/sun.xml.in.h:133
-msgid "type4"
-msgstr "type4"
-
-#~ msgid "A Tamil typewrite-style keymap; TAB encoding"
-#~ msgstr "Tamilská klávesová mapa v štýle písacieho stroja, kódovanie TAB"
-
-#~ msgid "A Tamil typewrite-style keymap; TSCII encoding"
-#~ msgstr "Tamilská klávesová mapa v štýle písacieho stroja, kódovanie TSCII"
-
-#~ msgid "A Tamil typewrite-style keymap; Unicode encoding"
-#~ msgstr "Tamilská klávesová mapa v štýle písacieho stroja, kódovanie Unicode"
-
-#~ msgid "Arb"
-#~ msgstr "Arb"
-
-#~ msgid "Bosnian"
-#~ msgstr "Bosnianske"
-
-#~ msgid "Burmese"
-#~ msgstr "Burmézsky"
-
-#~ msgid "CloGaelach Laptop"
-#~ msgstr "CloGaelach Laptop"
-
-#~ msgid "Czech (qwerty)"
-#~ msgstr "České (qwerty)"
-
-#~ msgid "Dutch"
-#~ msgstr "Holandské"
-
-#~ msgid "French Canadian"
-#~ msgstr "Francúzske kanadské"
-
-#~ msgid "Georgian (latin)"
-#~ msgstr "Gruzínske (latinka)"
-
-#~ msgid "Georgian (russian)"
-#~ msgstr "Gruzínske (azbuka)"
-
-#~ msgid "Grc"
-#~ msgstr "Grc"
-
-#~ msgid "Guj"
-#~ msgstr "Guj"
-
-#~ msgid "Hin"
-#~ msgstr "Hin"
-
-#~ msgid "Hindi"
-#~ msgstr "Hindské"
-
-#~ msgid "INSCRIPT layout"
-#~ msgstr "INSCRIPT rozloženie"
-
-#~ msgid "IS434 laptop"
-#~ msgstr "IS434 laptop"
-
-#~ msgid "Iku"
-#~ msgstr "Inu"
-
-#~ msgid "Irish"
-#~ msgstr "Ãrske"
-
-#~ msgid "Lithuanian azerty standard"
-#~ msgstr "Litovské azerty štandardné"
-
-#~ msgid "Lithuanian qwerty \"numeric\""
-#~ msgstr "Litovské qwerty \"Äíselné\""
-
-#~ msgid "Logitech iTouch keyboard Internet Navigator"
-#~ msgstr "Logitech iTouch keyboard Internet Navigator"
-
-#~ msgid "Northern Saami (Finland)"
-#~ msgstr "Severný Saami (Fínsko)"
-
-#~ msgid "Northern Saami (Sweden)"
-#~ msgstr "Severný Saami (Švédsko)"
-
-#~ msgid "Ogh"
-#~ msgstr "Ogh"
-
-#~ msgid "Ori"
-#~ msgstr "Ori"
-
-#~ msgid "PC104"
-#~ msgstr "PC104"
-
-#~ msgid "Polish (qwertz)"
-#~ msgstr "Poľské (qwertz)"
-
-#~ msgid "PowerPC PS/2"
-#~ msgstr "PowerPC PS/2"
-
-#~ msgid "Sapmi"
-#~ msgstr "Sapmi"
-
-#~ msgid "Scg"
-#~ msgstr "Scg"
-
-#~ msgid "Slovak (qwerty)"
-#~ msgstr "Slovenské (qwerty)"
-
-#~ msgid "Sme"
-#~ msgstr "Sme"
-
-#~ msgid "Sv"
-#~ msgstr "Sv"
-
-#~ msgid "Tel"
-#~ msgstr "Tel"
-
-#~ msgid "Thai (Kedmanee)"
-#~ msgstr "Thajské (Kedmanee)"
-
-#~ msgid "Tml"
-#~ msgstr "Tml"
-
-#~ msgid "U.S. English w/ dead keys"
-#~ msgstr "Anglické (US) s mŕtvymi klávesmi"
-
-#~ msgid "US"
-#~ msgstr "US"
-
-#~ msgid "Yug"
-#~ msgstr "Juh"
-
-#~ msgid "Yugoslavian"
-#~ msgstr "Juhoslovanské"
-
-#~ msgid "abnt2"
-#~ msgstr "abnt2"
-
-#~ msgid "laptop"
-#~ msgstr "laptop"
-
-#~ msgid "sefi"
-#~ msgstr "sefi"
-
-#~ msgid "si1452"
-#~ msgstr "si1452"
-
-#~ msgid "uni/101/qwerty/comma"
-#~ msgstr "uni/101/qwerty/Äiarka"
-
-#~ msgid "uni/101/qwerty/dot"
-#~ msgstr "uni/101/qwerty/bodka"
-
-#~ msgid "uni/101/qwertz/comma"
-#~ msgstr "uni/101/qwertz/Äiarka"
-
-#~ msgid "uni/101/qwertz/dot"
-#~ msgstr "uni/101/qwertz/bodka"
-
-#~ msgid "uni/102/qwerty/comma"
-#~ msgstr "uni/102/qwerty/Äiarka"
-
-#~ msgid "uni/102/qwerty/dot"
-#~ msgstr "uni/102/qwerty/bodka"
-
-#~ msgid "uni/102/qwertz/comma"
-#~ msgstr "uni/102/qwertz/Äiarka"
-
-#~ msgid "uni/102/qwertz/dot"
-#~ msgstr "uni/102/qwertz/bodka"
+# Slovak translation of xkeyboard-config
+# Copyright (C) 2003 Free Software Foundation
+# Zdenko Podobný <zdpo@mailbox.sk>, 2003.
+# Ivan Masár <helix84@centrum.sk>, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: xkeyboard-config 1.0-pre1\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2007-06-28 15:21+0100\n"
+"PO-Revision-Date: 2007-09-04 22:49+0100\n"
+"Last-Translator: Zdenko Podobný <zdpo@mailbox.sk>\n"
+"Language-Team: Slovak <sk-i18n@lists.linux.sk>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.2beta3\n"
+
+#: ../rules/base.xml.in.h:1
+msgid "(F)"
+msgstr "(F)"
+
+#: ../rules/base.xml.in.h:2
+msgid "(Legacy) Alternative"
+msgstr "(Zastaralé) alternatívne"
+
+#: ../rules/base.xml.in.h:3
+msgid "(Legacy) Alternative, Sun dead keys"
+msgstr "(Zastaralé) alternatívne, s mŕtvymi klávesmi Sun"
+
+#: ../rules/base.xml.in.h:4
+msgid "(Legacy) Alternative, eliminate dead keys"
+msgstr "(Zastaralé) alternatívne, eliminovať mŕtve klávesy"
+
+#: ../rules/base.xml.in.h:5
+msgid "(Legacy) Dvorak"
+msgstr "(Zastaralé) dvorak"
+
+#: ../rules/base.xml.in.h:6
+msgid "101/104 key Compatible"
+msgstr "Kompatibilná s 101/104 klávesami"
+
+#: ../rules/base.xml.in.h:7 ../rules/sun.xml.in.h:2
+msgid "101/qwerty/comma/Dead keys"
+msgstr "101/qwerty/Äiarka/mÅ•tve klávesy"
+
+#: ../rules/base.xml.in.h:8 ../rules/sun.xml.in.h:3
+msgid "101/qwerty/comma/Eliminate dead keys"
+msgstr "101/qwerty/Äiarka/eliminovaÅ¥ mÅ•tve klávesy"
+
+#: ../rules/base.xml.in.h:9 ../rules/sun.xml.in.h:4
+msgid "101/qwerty/dot/Dead keys"
+msgstr "101/qwerty/bodka/mŕtve klávesy"
+
+#: ../rules/base.xml.in.h:10 ../rules/sun.xml.in.h:5
+msgid "101/qwerty/dot/Eliminate dead keys"
+msgstr "101/qwerty/bodka/eliminovať mŕtve klávesy"
+
+#: ../rules/base.xml.in.h:11 ../rules/sun.xml.in.h:6
+msgid "101/qwertz/comma/Dead keys"
+msgstr "101/qwertz/Äiarka/mÅ•tve klávesy"
+
+#: ../rules/base.xml.in.h:12
+msgid "101/qwertz/comma/Eliminate dead keys"
+msgstr "101/qwertz/Äiarka/eliminovaÅ¥ mÅ•tve klávesy"
+
+#: ../rules/base.xml.in.h:13 ../rules/sun.xml.in.h:7
+msgid "101/qwertz/dot/Dead keys"
+msgstr "101/qwertz/bodka/mŕtve klávesy"
+
+#: ../rules/base.xml.in.h:14 ../rules/sun.xml.in.h:8
+msgid "101/qwertz/dot/Eliminate dead keys"
+msgstr "101/qwertz/bodka/eliminovať mŕtve klávesy"
+
+#: ../rules/base.xml.in.h:15 ../rules/sun.xml.in.h:9
+msgid "102/qwerty/comma/Dead keys"
+msgstr "102/qwerty/Äiarka/mÅ•tve klávesy"
+
+#: ../rules/base.xml.in.h:16 ../rules/sun.xml.in.h:10
+msgid "102/qwerty/comma/Eliminate dead keys"
+msgstr "102/qwerty/Äiarka/eliminovaÅ¥ mÅ•tve klávesy"
+
+#: ../rules/base.xml.in.h:17 ../rules/sun.xml.in.h:11
+msgid "102/qwerty/dot/Dead keys"
+msgstr "102/qwerty/bodka/mŕtve klávesy"
+
+#: ../rules/base.xml.in.h:18 ../rules/sun.xml.in.h:12
+msgid "102/qwerty/dot/Eliminate dead keys"
+msgstr "102/qwerty/bodka/eliminovať mŕtve klávesy"
+
+#: ../rules/base.xml.in.h:19 ../rules/sun.xml.in.h:13
+msgid "102/qwertz/comma/Dead keys"
+msgstr "102/qwertz/Äiarka/mÅ•tve klávesy"
+
+#: ../rules/base.xml.in.h:20 ../rules/sun.xml.in.h:14
+msgid "102/qwertz/comma/Eliminate dead keys"
+msgstr "102/qwertz/Äiarka/eliminovaÅ¥ mÅ•tve klávesy"
+
+#: ../rules/base.xml.in.h:21 ../rules/sun.xml.in.h:15
+msgid "102/qwertz/dot/Dead keys"
+msgstr "102/qwertz/bodka/mŕtve klávesy"
+
+#: ../rules/base.xml.in.h:22 ../rules/sun.xml.in.h:16
+msgid "102/qwertz/dot/Eliminate dead keys"
+msgstr "102/qwertz/bodka/eliminovať mŕtve klávesy"
+
+#: ../rules/base.xml.in.h:23
+msgid "A4Tech KB-21"
+msgstr "A4Tech KB-21"
+
+#: ../rules/base.xml.in.h:24
+msgid "A4Tech KBS-8"
+msgstr "A4Tech KBS-8"
+
+#: ../rules/base.xml.in.h:25
+msgid "A4Tech Wireless Desktop RFKB-23"
+msgstr "A4Tech Wireless Desktop RFKB-23"
+
+#: ../rules/base.xml.in.h:26
+msgid "ACPI Standard"
+msgstr "Å tandard ACPI"
+
+# gruzínske rozloženie
+#: ../rules/base.xml.in.h:27
+msgid "AZERTY Tskapo"
+msgstr "AZERTY Tskapo"
+
+#: ../rules/base.xml.in.h:28
+msgid "Acer AirKey V"
+msgstr "Acer AirKey V"
+
+#: ../rules/base.xml.in.h:29
+msgid "Acer C300"
+msgstr "Acer C300"
+
+#: ../rules/base.xml.in.h:30
+msgid "Acer Ferrari 4000"
+msgstr "Acer Ferrari 4000"
+
+#: ../rules/base.xml.in.h:31
+msgid "Acer TravelMate 800"
+msgstr "Acer TravelMate 800"
+
+#: ../rules/base.xml.in.h:32
+msgid "Add the EuroSign to the 2 key."
+msgstr "Pridať znak euro na kláves 2."
+
+#: ../rules/base.xml.in.h:33
+msgid "Add the EuroSign to the 5 key."
+msgstr "Pridať znak euro na kláves 5."
+
+#: ../rules/base.xml.in.h:34
+msgid "Add the EuroSign to the E key."
+msgstr "Pridať znak euro na kláves E."
+
+#: ../rules/base.xml.in.h:35
+msgid "Add the standard behavior to Menu key."
+msgstr "Pridať štandardné chovanie klávesu Ponuka."
+
+#: ../rules/base.xml.in.h:36
+msgid "Adding the EuroSign to certain keys"
+msgstr "Pridať znak euro na isté klávesy."
+
+#: ../rules/base.xml.in.h:37
+msgid "Advance Scorpius KI"
+msgstr "Advance Scorpius KI"
+
+#: ../rules/base.xml.in.h:38
+msgid "Afg"
+msgstr "Afg"
+
+#: ../rules/base.xml.in.h:39
+msgid "Afghanistan"
+msgstr "Afganistan"
+
+#: ../rules/base.xml.in.h:40
+msgid "Akan"
+msgstr "Akan"
+
+#: ../rules/base.xml.in.h:41
+msgid "Alb"
+msgstr "Alb"
+
+#: ../rules/base.xml.in.h:42
+msgid "Albania"
+msgstr "Albánsko"
+
+#: ../rules/base.xml.in.h:43
+msgid "Alt and Meta are on the Alt keys."
+msgstr "Alt a Meta sú na klávesoch Alt."
+
+#: ../rules/base.xml.in.h:44
+msgid "Alt is mapped to the right Win-key and Super to Menu."
+msgstr "Meta je mapovaný na pravý kláves Win a Super na Ponuku."
+
+#: ../rules/base.xml.in.h:45
+msgid "Alt+CapsLock changes layout."
+msgstr "Alt+Caps Lock mení rozloženie."
+
+#: ../rules/base.xml.in.h:46
+msgid "Alt+Ctrl change layout."
+msgstr "Alt+Control mení rozloženie."
+
+#: ../rules/base.xml.in.h:47
+msgid "Alt+Shift change layout."
+msgstr "Alt+Shift mení rozloženie."
+
+#: ../rules/base.xml.in.h:48
+msgid "Alt-Q"
+msgstr "Alt-Q"
+
+#: ../rules/base.xml.in.h:49
+msgid "Alt/Win key behavior"
+msgstr "Chovanie klávesu Alt/Win"
+
+#: ../rules/base.xml.in.h:50
+msgid "Alternative"
+msgstr "alternatívne"
+
+#: ../rules/base.xml.in.h:51
+msgid "Alternative Eastern"
+msgstr "alternatívne východné"
+
+#: ../rules/base.xml.in.h:52
+msgid "Alternative Phonetic"
+msgstr "alternatívne fonetické"
+
+#: ../rules/base.xml.in.h:53
+msgid "Alternative international (former us_intl)"
+msgstr "alternatívne medzinárodné (býv. us_intl)"
+
+#: ../rules/base.xml.in.h:54
+msgid "Alternative, Sun dead keys"
+msgstr "alternatívne, mŕtve klávesy Sun"
+
+#: ../rules/base.xml.in.h:55
+msgid "Alternative, eliminate dead keys"
+msgstr "alternatívne, eliminovať mŕtve klávesy"
+
+#: ../rules/base.xml.in.h:56
+msgid "Alternative, latin-9 only"
+msgstr "alternatívne, iba latin-9"
+
+#: ../rules/base.xml.in.h:57
+msgid "And"
+msgstr "And"
+
+#: ../rules/base.xml.in.h:58
+msgid "Andorra"
+msgstr "Andorra"
+
+#: ../rules/base.xml.in.h:59
+msgid "Apostrophe (') variant"
+msgstr "Variant (') apostrof"
+
+#: ../rules/base.xml.in.h:60
+msgid "Apple"
+msgstr "Apple"
+
+#: ../rules/base.xml.in.h:61
+msgid "Apple Laptop"
+msgstr "Apple laptop"
+
+#: ../rules/base.xml.in.h:62
+msgid "Ara"
+msgstr "Ara"
+
+#: ../rules/base.xml.in.h:63
+msgid "Arabic"
+msgstr "Arabsky"
+
+#: ../rules/base.xml.in.h:64
+msgid "Arm"
+msgstr "Arm"
+
+#: ../rules/base.xml.in.h:65
+msgid "Armenia"
+msgstr "Arménsko"
+
+#: ../rules/base.xml.in.h:66
+msgid "Aze"
+msgstr "Aze"
+
+#: ../rules/base.xml.in.h:67
+msgid "Azerbaijan"
+msgstr "Azerbajdžan"
+
+#: ../rules/base.xml.in.h:68
+msgid "Azona RF2300 wireless Internet Keyboard"
+msgstr "Azona RF2300 bezdrôtová internetová klávesnica"
+
+#: ../rules/base.xml.in.h:69
+msgid "BTC 5090"
+msgstr "BTC 5090"
+
+#: ../rules/base.xml.in.h:70
+msgid "BTC 5113RF Multimedia"
+msgstr "BTC 5113RF Multimedia"
+
+#: ../rules/base.xml.in.h:71
+msgid "BTC 5126T"
+msgstr "BTC 5126T"
+
+#: ../rules/base.xml.in.h:72
+msgid "BTC 9000"
+msgstr "BTC 9000"
+
+#: ../rules/base.xml.in.h:73
+msgid "BTC 9000A"
+msgstr "BTC 9000A"
+
+#: ../rules/base.xml.in.h:74
+msgid "BTC 9001AH"
+msgstr "BTC 9001AH"
+
+#: ../rules/base.xml.in.h:75
+msgid "BTC 9019U"
+msgstr "BTC 9019U"
+
+#: ../rules/base.xml.in.h:76
+msgid "Ban"
+msgstr "Ban"
+
+#: ../rules/base.xml.in.h:77
+msgid "Bangladesh"
+msgstr "Bangladéš"
+
+#: ../rules/base.xml.in.h:78 ../rules/sun.xml.in.h:22
+msgid "Bel"
+msgstr "Bel"
+
+#: ../rules/base.xml.in.h:79
+msgid "Belarus"
+msgstr "Bielorusko"
+
+#: ../rules/base.xml.in.h:80
+msgid "Belgium"
+msgstr "Belgicko"
+
+#: ../rules/base.xml.in.h:81
+msgid "BenQ X-Touch 730"
+msgstr "BenQ X-Touch 730"
+
+#: ../rules/base.xml.in.h:82
+msgid "BenQ X-Touch 800"
+msgstr "BenQ X-Touch 800"
+
+#: ../rules/base.xml.in.h:83
+msgid "Bengali"
+msgstr "Bengálska"
+
+#: ../rules/base.xml.in.h:84
+msgid "Bengali Probhat"
+msgstr "Bengálsky Probhat"
+
+#: ../rules/base.xml.in.h:85
+msgid "Bepo, ergonomic, Dvorak way"
+msgstr "Bepo, ergonomické, na spôsob Dvorak"
+
+#: ../rules/base.xml.in.h:86
+msgid "Bepo, ergonomic, Dvorak way, latin-9 only"
+msgstr "Bepo, ergonomické, na spôsob Dvorak, iba latin-9"
+
+#: ../rules/base.xml.in.h:87 ../rules/sun.xml.in.h:24
+msgid "Bgr"
+msgstr "Bgr"
+
+#: ../rules/base.xml.in.h:88
+msgid "Bhu"
+msgstr "Bhu"
+
+#: ../rules/base.xml.in.h:89
+msgid "Bhutan"
+msgstr "Bhután"
+
+#: ../rules/base.xml.in.h:90
+msgid "Biblical Hebrew (Tiro)"
+msgstr "biblická hebrejÄina (Tiro)"
+
+#: ../rules/base.xml.in.h:91
+msgid "Bih"
+msgstr "Bih"
+
+#: ../rules/base.xml.in.h:92
+msgid "Blr"
+msgstr "Blr"
+
+#: ../rules/base.xml.in.h:93
+msgid "Bosnia and Herzegovina"
+msgstr "Bosna a Hercegovina"
+
+#: ../rules/base.xml.in.h:94
+msgid "Both Alt keys together change layout."
+msgstr "Oba klávesy Alt spolu menia rozloženie."
+
+#: ../rules/base.xml.in.h:95
+msgid "Both Ctrl keys together change layout."
+msgstr "Oba klávesy Ctrl spolu menia rozloženie."
+
+#: ../rules/base.xml.in.h:96
+msgid "Both Shift keys together change layout."
+msgstr "Oba klávesy Shift spolu menia rozloženie."
+
+#: ../rules/base.xml.in.h:97
+msgid "Both Win-keys switch layout while pressed."
+msgstr "Oba klávesy Win spolu menia rozloženie."
+
+#: ../rules/base.xml.in.h:98
+msgid "Bra"
+msgstr "Bra"
+
+#: ../rules/base.xml.in.h:99
+msgid "Braille"
+msgstr "Brailleovo"
+
+#: ../rules/base.xml.in.h:100
+msgid "Brazil"
+msgstr "Brazília"
+
+#: ../rules/base.xml.in.h:101
+msgid "Brazilian ABNT2"
+msgstr "Brazílska ABNT2"
+
+#: ../rules/base.xml.in.h:102
+msgid "Brl"
+msgstr "Brl"
+
+#: ../rules/base.xml.in.h:103
+msgid "Brother Internet Keyboard"
+msgstr "Brother Internet Keyboard"
+
+#: ../rules/base.xml.in.h:104
+msgid "Buckwalter"
+msgstr "Buckwalter (transliterácia arabÄiny)"
+
+#: ../rules/base.xml.in.h:105
+msgid "Bulgaria"
+msgstr "Bulharsko"
+
+#: ../rules/base.xml.in.h:106
+msgid "Cambodia"
+msgstr "Kambodža"
+
+#: ../rules/base.xml.in.h:107 ../rules/sun.xml.in.h:29
+msgid "Can"
+msgstr "Can"
+
+#: ../rules/base.xml.in.h:108
+msgid "Canada"
+msgstr "Kanada"
+
+#: ../rules/base.xml.in.h:109
+msgid "Caps Lock is Compose."
+msgstr "Caps Lock je Compose."
+
+#: ../rules/base.xml.in.h:110
+msgid "CapsLock LED shows alternative layout."
+msgstr "Caps Lock LED zobrazuje alternatívne rozloženie."
+
+#: ../rules/base.xml.in.h:111
+msgid "CapsLock acts as Shift with locking. Shift \"pauses\" CapsLock."
+msgstr "Caps Lock funguje ako Shift s uzamknutím. Shift „pozastaví“ Caps Lock."
+
+#: ../rules/base.xml.in.h:112
+msgid "CapsLock acts as Shift with locking. Shift doesn't affect CapsLock."
+msgstr "Caps Lock funguje ako Shift s uzamknutím. Shift neovplyvňuje Caps Lock."
+
+#: ../rules/base.xml.in.h:113
+msgid "CapsLock just locks the Shift modifier."
+msgstr "CapsLock iba zamkne modifikátor Shift."
+
+#: ../rules/base.xml.in.h:114 ../rules/sun.xml.in.h:33
+msgid "CapsLock key behavior"
+msgstr "Správanie klávesu Caps Lock"
+
+#: ../rules/base.xml.in.h:115
+msgid "CapsLock key changes layout."
+msgstr "Kláves Caps Lock mení rozloženie."
+
+#: ../rules/base.xml.in.h:116
+msgid "CapsLock toggles Shift so all keys are affected."
+msgstr "Caps Lock prepne Shift, Äím ovplyvní vÅ¡etky klávesy."
+
+#: ../rules/base.xml.in.h:117
+msgid "CapsLock toggles normal capitalization of alphabetic characters."
+msgstr "Caps Lock prepne nermálnu kapitalizáciu abecedných znakov."
+
+#: ../rules/base.xml.in.h:118
+msgid "CapsLock uses internal capitalization. Shift \"pauses\" CapsLock."
+msgstr "Caps Lock používa interný prevod na kapitálky. Shift „pozastaví“ Caps Lock."
+
+#: ../rules/base.xml.in.h:119
+msgid "CapsLock uses internal capitalization. Shift doesn't affect CapsLock."
+msgstr "Caps Lock používa interný prevod na kapitálky. Shift neovplyvňuje Caps Lock."
+
+#: ../rules/base.xml.in.h:120
+msgid "Catalan variant with middle-dot L"
+msgstr "Katalánsky variant s L s bodkou v strede"
+
+#: ../rules/base.xml.in.h:121
+msgid "Che"
+msgstr "Che"
+
+#: ../rules/base.xml.in.h:122
+msgid "Cherry Blue Line CyBo@rd"
+msgstr "Cherry Blue Line CyBo@rd"
+
+#: ../rules/base.xml.in.h:123
+msgid "Cherry Blue Line CyBo@rd (alternate option)"
+msgstr "Cherry Blue Line CyBo@rd (alternatívna voľba)"
+
+#: ../rules/base.xml.in.h:124
+msgid "Cherry CyBo@rd USB-Hub"
+msgstr "Cherry CyBo@rd USB-Hub"
+
+#: ../rules/base.xml.in.h:125
+msgid "Cherry CyMotion Master Linux"
+msgstr "Cherry CyMotion Master Linux"
+
+#: ../rules/base.xml.in.h:126
+msgid "Cherry CyMotion Master XPress"
+msgstr "Cherry CyMotion Master XPress"
+
+#: ../rules/base.xml.in.h:127
+msgid "Chicony Internet Keyboard"
+msgstr "Chicony Internet Keyboard"
+
+#: ../rules/base.xml.in.h:128
+msgid "Chicony KB-9885"
+msgstr "Chicony KB-9885"
+
+#: ../rules/base.xml.in.h:129
+msgid "Chuvash"
+msgstr "Čuvašské"
+
+#: ../rules/base.xml.in.h:130
+msgid "Chuvash Latin"
+msgstr "Čuvašské latin"
+
+#: ../rules/base.xml.in.h:131
+msgid "Classic Dvorak"
+msgstr "Klasické dvorak"
+
+#: ../rules/base.xml.in.h:132
+msgid "CloGaelach"
+msgstr "CloGaelach"
+
+#: ../rules/base.xml.in.h:133
+msgid "Compaq Easy Access Keyboard"
+msgstr "Compaq Easy Access Keyboard"
+
+#: ../rules/base.xml.in.h:134
+msgid "Compaq Internet Keyboard (13 keys)"
+msgstr "Compaq Internet Keyboard (13 kláves)"
+
+#: ../rules/base.xml.in.h:135
+msgid "Compaq Internet Keyboard (18 keys)"
+msgstr "Compaq Internet Keyboard (18 kláves)"
+
+#: ../rules/base.xml.in.h:136
+msgid "Compaq Internet Keyboard (7 keys)"
+msgstr "Compaq Internet Keyboard (7 kláves)"
+
+#: ../rules/base.xml.in.h:137
+msgid "Compaq iPaq Keyboard"
+msgstr "Compaq iPaq Keyboard"
+
+#: ../rules/base.xml.in.h:138
+msgid "Compose key position"
+msgstr "Pozícia klávesu Compose"
+
+#: ../rules/base.xml.in.h:139
+msgid "Congo, Democratic Republic of the"
+msgstr "Konžská demokratická republika"
+
+#: ../rules/base.xml.in.h:140
+msgid "Control is mapped to the Win-keys (and the usual Ctrl keys)."
+msgstr "Control je mapovaný na klávesy Win (a zvyÄajné klávesy Ctrl)."
+
+#: ../rules/base.xml.in.h:141
+msgid "Croatia"
+msgstr "Chorvátsko"
+
+#: ../rules/base.xml.in.h:142
+msgid "Ctrl key at bottom left"
+msgstr "Kláves Ctrl vľavo dole"
+
+#: ../rules/base.xml.in.h:143
+msgid "Ctrl key at left of 'A'"
+msgstr "Kláves Ctrl naľavo od „A“"
+
+#: ../rules/base.xml.in.h:144
+msgid "Ctrl key position"
+msgstr "Pozícia klávesu Ctrl"
+
+#: ../rules/base.xml.in.h:145
+msgid "Ctrl+Shift change layout."
+msgstr "Ctrl+Shift mení rozloženie."
+
+#: ../rules/base.xml.in.h:146
+msgid "Cyrillic"
+msgstr "azbuka"
+
+#: ../rules/base.xml.in.h:147 ../rules/sun.xml.in.h:39
+msgid "Cze"
+msgstr "ÄŒes"
+
+#: ../rules/base.xml.in.h:148
+msgid "Czechia"
+msgstr "ÄŒesko"
+
+#: ../rules/base.xml.in.h:149
+msgid "DRC"
+msgstr "DRC"
+
+#: ../rules/base.xml.in.h:150
+msgid "DTK2000"
+msgstr "DTK2000"
+
+#: ../rules/base.xml.in.h:151 ../rules/sun.xml.in.h:42
+msgid "Dead acute"
+msgstr "mŕtvy dĺžeň"
+
+#: ../rules/base.xml.in.h:152 ../rules/sun.xml.in.h:43
+msgid "Dead grave acute"
+msgstr "mÅ•tvy opaÄný dĺžeň"
+
+#: ../rules/base.xml.in.h:153
+msgid "Default numeric keypad keys."
+msgstr "Štandardné klávesy numerickej klávesnice."
+
+#: ../rules/base.xml.in.h:154
+msgid "Dell"
+msgstr "Dell"
+
+#: ../rules/base.xml.in.h:155
+msgid "Dell 101-key PC"
+msgstr "DELL PC 101 kláves"
+
+#: ../rules/base.xml.in.h:156
+msgid "Dell Laptop/notebook Inspiron 6xxx/8xxx"
+msgstr "Dell Laptop/notebook Inspiron 6xxx/8xxx"
+
+#: ../rules/base.xml.in.h:157
+msgid "Dell Laptop/notebook Precision M series"
+msgstr "Dell Laptop/notebook Precision série M"
+
+#: ../rules/base.xml.in.h:158
+msgid "Dell Latitude series laptop"
+msgstr "Laptop série Dell Latitude"
+
+#: ../rules/base.xml.in.h:159
+msgid "Dell SK-8125 USB Multimedia Keybard"
+msgstr "Dell SK-8125 USB multimediálna klávesnica"
+
+#: ../rules/base.xml.in.h:160
+msgid "Dell SK-8135 USB Multimedia Keybard"
+msgstr "Dell SK-8135 USB multimediálna klávesnica"
+
+#: ../rules/base.xml.in.h:161
+msgid "Dell USB Multimedia Keybard"
+msgstr "Dell USB multimediálna klávesnica"
+
+#: ../rules/base.xml.in.h:162
+msgid "Denmark"
+msgstr "Dánsko"
+
+#: ../rules/base.xml.in.h:163 ../rules/sun.xml.in.h:44
+msgid "Deu"
+msgstr "Nem"
+
+#: ../rules/base.xml.in.h:164
+msgid "Dexxa Wireless Desktop Keyboard"
+msgstr "Dexxa Wireless Desktop Keyboard"
+
+#: ../rules/base.xml.in.h:165
+msgid "Diamond 9801 / 9802 series"
+msgstr "Diamond séria 9801 / 9802"
+
+#: ../rules/base.xml.in.h:166 ../rules/sun.xml.in.h:46
+msgid "Dnk"
+msgstr "Dán"
+
+# rozloženie klávesnice
+#: ../rules/base.xml.in.h:167 ../rules/sun.xml.in.h:48
+msgid "Dvorak"
+msgstr "Dvorak"
+
+#: ../rules/base.xml.in.h:168
+msgid "Dvorak, Polish quotes on key \"1/!\""
+msgstr "Dvorak, poľské úvodzovky na klávese „1/!“"
+
+#: ../rules/base.xml.in.h:169
+msgid "Dvorak, Polish quotes on quotemark key"
+msgstr "Dvorak, poľské úvodzovky na klávese úvodzoviek"
+
+#: ../rules/base.xml.in.h:170
+msgid "Eastern"
+msgstr "východné"
+
+#: ../rules/base.xml.in.h:171 ../rules/sun.xml.in.h:49
+msgid "Eliminate dead keys"
+msgstr "Eliminovať mrtvé kláves"
+
+#: ../rules/base.xml.in.h:172
+msgid "Ennyah DKB-1008"
+msgstr "Ennyah DKB-1008"
+
+#: ../rules/base.xml.in.h:173
+msgid "Epo"
+msgstr "Epo"
+
+#: ../rules/base.xml.in.h:174
+msgid "Ergonomic"
+msgstr "ergonomické"
+
+#: ../rules/base.xml.in.h:175 ../rules/sun.xml.in.h:50
+msgid "Esp"
+msgstr "Å pa"
+
+#: ../rules/base.xml.in.h:176
+msgid "Esperanto"
+msgstr "esperanto"
+
+#: ../rules/base.xml.in.h:177
+msgid "Est"
+msgstr "Est"
+
+#: ../rules/base.xml.in.h:178
+msgid "Estonia"
+msgstr "Estónsko"
+
+#: ../rules/base.xml.in.h:179
+msgid "Eth"
+msgstr "Eth"
+
+#: ../rules/base.xml.in.h:180
+msgid "Ethiopia"
+msgstr "Etiópia"
+
+#: ../rules/base.xml.in.h:181
+msgid "Evdev-managed keyboard"
+msgstr "Klávesnica spravovaná Evdev"
+
+#: ../rules/base.xml.in.h:182
+msgid "Everex STEPnote"
+msgstr "Everex STEPnote"
+
+#: ../rules/base.xml.in.h:183
+msgid "Ewe"
+msgstr "Ewe"
+
+#: ../rules/base.xml.in.h:184
+msgid "Extended"
+msgstr "rozšírené"
+
+#: ../rules/base.xml.in.h:185
+msgid "Extended Backslash"
+msgstr "Široký backslash"
+
+#: ../rules/base.xml.in.h:186
+msgid "F-letter (F) variant"
+msgstr "variant písmena F"
+
+#: ../rules/base.xml.in.h:187
+msgid "Fao"
+msgstr "Fao"
+
+#: ../rules/base.xml.in.h:188
+msgid "Faroe Islands"
+msgstr "Faerské ostrovy"
+
+#: ../rules/base.xml.in.h:189 ../rules/sun.xml.in.h:51
+msgid "Fin"
+msgstr "Fín"
+
+#: ../rules/base.xml.in.h:190
+msgid "Finland"
+msgstr "Fínsko"
+
+#: ../rules/base.xml.in.h:191
+msgid "Force standard legacy keypad"
+msgstr "Vynútiť štandardnú zastaralú numerickú klávesnicu"
+
+#: ../rules/base.xml.in.h:192 ../rules/sun.xml.in.h:53
+msgid "Fra"
+msgstr "Fra"
+
+#: ../rules/base.xml.in.h:193
+msgid "France"
+msgstr "Francúzsko"
+
+#: ../rules/base.xml.in.h:194 ../rules/sun.xml.in.h:55
+msgid "French"
+msgstr "Francúzske"
+
+#: ../rules/base.xml.in.h:195
+msgid "French (Macintosh)"
+msgstr "Francúzske (Macintosh)"
+
+#: ../rules/base.xml.in.h:196 ../rules/sun.xml.in.h:56
+msgid "French (legacy)"
+msgstr "Francúzske (zastaralé)"
+
+#: ../rules/base.xml.in.h:197
+msgid "French Dvorak"
+msgstr "Francúzske dvorak"
+
+#: ../rules/base.xml.in.h:198
+msgid "French, Sun dead keys"
+msgstr "Francúzske, mŕtve klávesy Sun"
+
+#: ../rules/base.xml.in.h:199
+msgid "French, eliminate dead keys"
+msgstr "Francúzske, eliminovať mŕtve klávesy"
+
+#: ../rules/base.xml.in.h:200
+msgid "Fula"
+msgstr "fulbÄina"
+
+#: ../rules/base.xml.in.h:201
+msgid "GBr"
+msgstr "VBr"
+
+#: ../rules/base.xml.in.h:202
+msgid "Ga"
+msgstr "Ga"
+
+#: ../rules/base.xml.in.h:203
+msgid "Generic 101-key PC"
+msgstr "všeobecná PC 101 kláves"
+
+#: ../rules/base.xml.in.h:204
+msgid "Generic 102-key (Intl) PC"
+msgstr "všeobecná PC 102 kláves (medz.)"
+
+#: ../rules/base.xml.in.h:205
+msgid "Generic 104-key PC"
+msgstr "všeobecná PC 104 kláves"
+
+#: ../rules/base.xml.in.h:206
+msgid "Generic 105-key (Intl) PC"
+msgstr "všeobecná 105-kláv. (medzinár.) PC"
+
+#: ../rules/base.xml.in.h:207
+msgid "Genius Comfy KB-12e"
+msgstr "Genius Comfy KB-12e"
+
+#: ../rules/base.xml.in.h:208
+msgid "Genius Comfy KB-16M / Genius MM Keyboard KWD-910"
+msgstr "Genius Comfy KB-16M / Genius MM Keyboard KWD-910"
+
+#: ../rules/base.xml.in.h:209
+msgid "Genius Comfy KB-21e-Scroll"
+msgstr "Genius Comfy KB-21e-Scroll"
+
+#: ../rules/base.xml.in.h:210
+msgid "Genius KB-19e NB"
+msgstr "Genius KB-19e NB"
+
+#: ../rules/base.xml.in.h:211
+msgid "Geo"
+msgstr "Gru"
+
+#: ../rules/base.xml.in.h:212
+msgid "Georgia"
+msgstr "Gruzínsko"
+
+#: ../rules/base.xml.in.h:213
+msgid "German (Macintosh)"
+msgstr "Nemecké (Macintosh)"
+
+#: ../rules/base.xml.in.h:214
+msgid "German, Sun dead keys"
+msgstr "Nemecké, mŕtve klávesy Sun"
+
+#: ../rules/base.xml.in.h:215
+msgid "German, eliminate dead keys"
+msgstr "Francúzske, eliminovať mŕtve klávesy"
+
+#: ../rules/base.xml.in.h:216
+msgid "Germany"
+msgstr "Nemecko"
+
+#: ../rules/base.xml.in.h:217
+msgid "Gha"
+msgstr "Gha"
+
+#: ../rules/base.xml.in.h:218
+msgid "Ghana"
+msgstr "Ghana"
+
+#: ../rules/base.xml.in.h:219
+msgid "Gre"
+msgstr "Gre"
+
+#: ../rules/base.xml.in.h:220
+msgid "Greece"
+msgstr "Grécko"
+
+#: ../rules/base.xml.in.h:221
+msgid "Gujarati"
+msgstr "Gudžarátska"
+
+#: ../rules/base.xml.in.h:222
+msgid "Gurmukhi"
+msgstr "Gurmuchské"
+
+# je firma
+#: ../rules/base.xml.in.h:223
+msgid "Gyration"
+msgstr "Gyration"
+
+#: ../rules/base.xml.in.h:224
+msgid "Hausa"
+msgstr "hauské"
+
+#: ../rules/base.xml.in.h:225
+msgid "Hewlett-Packard Internet Keyboard"
+msgstr "Hewlett-Packard Internet Keyboard"
+
+#: ../rules/base.xml.in.h:226
+msgid "Hewlett-Packard Omnibook 500 FA"
+msgstr "Hewlett-Packard Omnibook 500 FA"
+
+#: ../rules/base.xml.in.h:227
+msgid "Hewlett-Packard Omnibook 5xx"
+msgstr "Hewlett-Packard Omnibook 5xx"
+
+#: ../rules/base.xml.in.h:228
+msgid "Hewlett-Packard Omnibook 6000/6100"
+msgstr "Hewlett-Packard Omnibook 6000/6100"
+
+#: ../rules/base.xml.in.h:229
+msgid "Hewlett-Packard Omnibook XE3 GC"
+msgstr "Hewlett-Packard Omnibook XE3 GC"
+
+#: ../rules/base.xml.in.h:230
+msgid "Hewlett-Packard Omnibook XE3 GF"
+msgstr "Hewlett-Packard Omnibook XE3 GF"
+
+#: ../rules/base.xml.in.h:231
+msgid "Hewlett-Packard Omnibook XT1000"
+msgstr "Hewlett-Packard Omnibook XT1000"
+
+#: ../rules/base.xml.in.h:232
+msgid "Hewlett-Packard Pavilion ZT11xx"
+msgstr "Hewlett-Packard Pavilion ZT11xx"
+
+#: ../rules/base.xml.in.h:233
+msgid "Hewlett-Packard SK-2501 Multimedia Keyboard"
+msgstr "Hewlett-Packard SK-2501 Multimedia Keyboard"
+
+#: ../rules/base.xml.in.h:234
+msgid "Hewlett-Packard SK-2505 Internet Keyboard"
+msgstr "Hewlett-Packard SK-2505 Internet Keyboard"
+
+# bolnagri je vstupná metóda
+#: ../rules/base.xml.in.h:235
+msgid "Hindi Bolnagri"
+msgstr "hindské bolnagri"
+
+#: ../rules/base.xml.in.h:236
+msgid "Honeywell Euroboard"
+msgstr "Honeywell Euroboard"
+
+#: ../rules/base.xml.in.h:237
+msgid "Hrv"
+msgstr "Chor"
+
+#: ../rules/base.xml.in.h:238 ../rules/sun.xml.in.h:59
+msgid "Hun"
+msgstr "MaÄ"
+
+#: ../rules/base.xml.in.h:239
+msgid "Hungary"
+msgstr "MaÄarsko"
+
+#: ../rules/base.xml.in.h:240
+msgid "Hyper is mapped to the Win-keys."
+msgstr "Hyper je mapovaný na Win-klávesy."
+
+#: ../rules/base.xml.in.h:241
+msgid "IBM (LST 1205-92)"
+msgstr "IBM (LST 1205-92)"
+
+#: ../rules/base.xml.in.h:242
+msgid "IBM Rapid Access"
+msgstr "IBM Rapid Access"
+
+#: ../rules/base.xml.in.h:243
+msgid "IBM Rapid Access II"
+msgstr "IBM Rapid Access II"
+
+#: ../rules/base.xml.in.h:244
+msgid "IBM Rapid Access II (alternate option)"
+msgstr "IBM Rapid Access II (alternatívna voľba)"
+
+#: ../rules/base.xml.in.h:245
+msgid "IBM ThinkPad 560Z/600/600E/A22E"
+msgstr "IBM ThinkPad 560Z/600/600E/A22E"
+
+#: ../rules/base.xml.in.h:246
+msgid "IBM ThinkPad 560Z/600/600E/A22E, Intl"
+msgstr "IBM ThinkPad 560Z/600/600E/A22E, Intl"
+
+#: ../rules/base.xml.in.h:247 ../rules/sun.xml.in.h:61
+msgid "ISO Alternate"
+msgstr "ISO alternatívne"
+
+#: ../rules/base.xml.in.h:248
+msgid "Iceland"
+msgstr "Island"
+
+#: ../rules/base.xml.in.h:249
+msgid "Igbo"
+msgstr "igbo"
+
+#: ../rules/base.xml.in.h:250
+msgid "Ind"
+msgstr "Ind"
+
+#: ../rules/base.xml.in.h:251
+msgid "India"
+msgstr "India"
+
+#: ../rules/base.xml.in.h:252 ../rules/sun.xml.in.h:62
+msgid "International (with dead keys)"
+msgstr "Medzinárodné (s mŕtvymi klávesmi)"
+
+#: ../rules/base.xml.in.h:253
+msgid "Inuktitut"
+msgstr "inuktitut"
+
+#: ../rules/base.xml.in.h:254
+msgid "Iran"
+msgstr "Irán"
+
+#: ../rules/base.xml.in.h:255
+msgid "Iraq"
+msgstr "Irak"
+
+#: ../rules/base.xml.in.h:256
+msgid "Ireland"
+msgstr "Ãrsko"
+
+#: ../rules/base.xml.in.h:257
+msgid "Irl"
+msgstr "Irs"
+
+#: ../rules/base.xml.in.h:258
+msgid "Irn"
+msgstr "Irn"
+
+#: ../rules/base.xml.in.h:259
+msgid "Irq"
+msgstr "Irq"
+
+#: ../rules/base.xml.in.h:260
+msgid "Isl"
+msgstr "Isl"
+
+#: ../rules/base.xml.in.h:261
+msgid "Isr"
+msgstr "Izr"
+
+#: ../rules/base.xml.in.h:262
+msgid "Israel"
+msgstr "Izrael"
+
+#: ../rules/base.xml.in.h:263 ../rules/sun.xml.in.h:63
+msgid "Ita"
+msgstr "Tal"
+
+#: ../rules/base.xml.in.h:264
+msgid "Italy"
+msgstr "Taliansko"
+
+#: ../rules/base.xml.in.h:265
+msgid "Japan"
+msgstr "Japonsko"
+
+#: ../rules/base.xml.in.h:266
+msgid "Japan (PC-98xx Series)"
+msgstr "Japonské (séria PC-98xx)"
+
+#: ../rules/base.xml.in.h:267
+msgid "Japanese 106-key"
+msgstr "Japonské 106 kláves"
+
+#: ../rules/base.xml.in.h:268
+msgid "Japanese keyboard options"
+msgstr "Japonské možnosti klávesnice"
+
+#: ../rules/base.xml.in.h:269 ../rules/sun.xml.in.h:66
+msgid "Jpn"
+msgstr "Jpn"
+
+# Kana is a general term for the syllabic Japanese scripts hiragana (ã²ã‚‰ãŒãª) and katakana (カタカナ) as well as the old system known as man'yÅgana.
+#: ../rules/base.xml.in.h:270
+msgid "Kana"
+msgstr "Kana"
+
+#: ../rules/base.xml.in.h:271
+msgid "Kana Lock key is locking"
+msgstr "Kláves Kana Lock zamyká"
+
+#: ../rules/base.xml.in.h:272
+msgid "Kannada"
+msgstr "Kannadské"
+
+#: ../rules/base.xml.in.h:273
+msgid "Kashubian"
+msgstr "kaÅ¡ubÄina"
+
+#: ../rules/base.xml.in.h:274
+msgid "Kaz"
+msgstr "Kaz"
+
+#: ../rules/base.xml.in.h:275
+msgid "Kazakh with Russian"
+msgstr "Kazašské s ruštinou"
+
+#: ../rules/base.xml.in.h:276
+msgid "Kazakhstan"
+msgstr "Kazachstan"
+
+#: ../rules/base.xml.in.h:277
+msgid "Keypad"
+msgstr "Numerická klávesnica"
+
+#: ../rules/base.xml.in.h:278
+msgid "Keytronic FlexPro"
+msgstr "Keytronic FlexPro"
+
+#: ../rules/base.xml.in.h:279
+msgid "Khm"
+msgstr "Khm"
+
+#: ../rules/base.xml.in.h:280
+msgid "Kor"
+msgstr "Kor"
+
+#: ../rules/base.xml.in.h:281
+msgid "Korea, Republic of"
+msgstr "Kórejská republika"
+
+#: ../rules/base.xml.in.h:282
+msgid "Korean 106-key"
+msgstr "Kórejské, 106 kláves"
+
+# fínske rozloženie
+# http://kotoistus.tksoft.com/linux/index-en.html
+#: ../rules/base.xml.in.h:283
+msgid "Kotoistus"
+msgstr "Kotoistus"
+
+#: ../rules/base.xml.in.h:284
+msgid "Kurdish, (F)"
+msgstr "Kurdské, (F)"
+
+#: ../rules/base.xml.in.h:285
+msgid "Kurdish, Arabic-Latin"
+msgstr "kurdÄina, arabsko-latinské"
+
+#: ../rules/base.xml.in.h:286
+msgid "Kurdish, Latin Alt-Q"
+msgstr "kurdÄina, latinské Alt-Q"
+
+#: ../rules/base.xml.in.h:287
+msgid "Kurdish, Latin Q"
+msgstr "kurdÄina, latinské Q"
+
+#: ../rules/base.xml.in.h:288
+msgid "Kyr"
+msgstr "Kyr"
+
+#: ../rules/base.xml.in.h:289
+msgid "Kyrgyzstan"
+msgstr "Kirgizsko"
+
+#: ../rules/base.xml.in.h:290
+msgid "LAm"
+msgstr "LAm"
+
+#: ../rules/base.xml.in.h:291
+msgid "LCtrl+LShift change layout."
+msgstr "ľavý Ctrl+ľavý Shift mení rozloženie."
+
+#: ../rules/base.xml.in.h:292
+msgid "Lao"
+msgstr "Lao"
+
+#: ../rules/base.xml.in.h:293
+msgid "Laos"
+msgstr "Laos"
+
+#: ../rules/base.xml.in.h:294
+msgid "Laptop/notebook Compaq (eg. Armada) Laptop Keyboard"
+msgstr "Laptop/notebook Compaq (napr. Armada) Laptop Keyboard"
+
+#: ../rules/base.xml.in.h:295
+msgid "Laptop/notebook Compaq (eg. Presario) Internet Keyboard"
+msgstr "Laptop/notebook Compaq (napr. Presario) Internet Keyboard"
+
+#: ../rules/base.xml.in.h:296
+msgid "Laptop/notebook eMachines m68xx"
+msgstr "Laptop/notebook eMachines m68xx"
+
+#: ../rules/base.xml.in.h:297
+msgid "Latin"
+msgstr "Latinské"
+
+#: ../rules/base.xml.in.h:298
+msgid "Latin American"
+msgstr "Latinskoamerické"
+
+#: ../rules/base.xml.in.h:299
+msgid "Latin Unicode"
+msgstr "Latinské Unicode"
+
+#: ../rules/base.xml.in.h:300
+msgid "Latin Unicode qwerty"
+msgstr "Latinské Unicode qwerty"
+
+#: ../rules/base.xml.in.h:301
+msgid "Latin qwerty"
+msgstr "Latinské qwerty"
+
+# « »
+#: ../rules/base.xml.in.h:302
+msgid "Latin with guillemets"
+msgstr "Latinské s uhlovými zátvorkami"
+
+#: ../rules/base.xml.in.h:303
+msgid "Latvia"
+msgstr "Lotyšsko"
+
+#: ../rules/base.xml.in.h:304
+msgid "Layout switching"
+msgstr "Prepínanie rozloženia"
+
+#: ../rules/base.xml.in.h:305
+msgid "Left Alt is swapped with left Win-key."
+msgstr "Ľavý Alt je vymenený s ľavým klávesom Win."
+
+#: ../rules/base.xml.in.h:306
+msgid "Left Alt key changes layout."
+msgstr "Ľavý kláves Alt mení rozloženie."
+
+#: ../rules/base.xml.in.h:307
+msgid "Left Alt key switches layout while pressed."
+msgstr "Ľavý kláves Alt prepína rozloženie pri stlaÄení."
+
+#: ../rules/base.xml.in.h:308
+msgid "Left Ctrl key changes layout."
+msgstr "Ľavý kláves Ctrl mení rozloženie."
+
+#: ../rules/base.xml.in.h:309
+msgid "Left Shift key changes layout."
+msgstr "Ľavý kláves Shift mení rozloženie."
+
+#: ../rules/base.xml.in.h:310
+msgid "Left Win-key changes layout."
+msgstr "Ľavý kláves Win mení rozloženie."
+
+#: ../rules/base.xml.in.h:311
+msgid "Left Win-key is Compose."
+msgstr "Ľavý kláves Win je Compose."
+
+#: ../rules/base.xml.in.h:312
+msgid "Left Win-key switches layout while pressed."
+msgstr "Ľavý kláves Win prepína rozloženie pri stlaÄení."
+
+#: ../rules/base.xml.in.h:313
+msgid "Left hand"
+msgstr "ľavá ruka"
+
+#: ../rules/base.xml.in.h:314
+msgid "Left handed Dvorak"
+msgstr "ľavá ruka dvorak"
+
+#: ../rules/base.xml.in.h:315
+msgid "Lithuania"
+msgstr "Litva"
+
+#: ../rules/base.xml.in.h:316
+msgid "Logitech Access Keyboard"
+msgstr "Logitech Access Keyboard"
+
+#: ../rules/base.xml.in.h:317
+msgid "Logitech Cordless Desktop"
+msgstr "Logitech Cordless Desktop"
+
+#: ../rules/base.xml.in.h:318
+msgid "Logitech Cordless Desktop LX-300"
+msgstr "Logitech Cordless Desktop LX-300"
+
+#: ../rules/base.xml.in.h:319
+msgid "Logitech Cordless Desktop Navigator"
+msgstr "Logitech Cordless Desktop Navigator"
+
+#: ../rules/base.xml.in.h:320
+msgid "Logitech Cordless Desktop Optical"
+msgstr "Logitech Cordless Desktop Optical"
+
+#: ../rules/base.xml.in.h:321
+msgid "Logitech Cordless Desktop Pro"
+msgstr "Logitech Cordless Desktop Pro"
+
+#: ../rules/base.xml.in.h:322
+msgid "Logitech Cordless Desktop Pro (alternate option)"
+msgstr "Logitech Cordless Desktop Pro (alternatívna voľba)"
+
+#: ../rules/base.xml.in.h:323
+msgid "Logitech Cordless Desktop Pro (alternate option2)"
+msgstr "Logitech Cordless Desktop Pro (alternatívna voľba2)"
+
+#: ../rules/base.xml.in.h:324
+msgid "Logitech Cordless Desktop iTouch"
+msgstr "Logitech Cordless Desktop iTouch"
+
+#: ../rules/base.xml.in.h:325
+msgid "Logitech Cordless Freedom/Desktop Navigator"
+msgstr "Logitech Cordless Freedom/Desktop Navigator"
+
+#: ../rules/base.xml.in.h:326
+msgid "Logitech G15 extra keys via G15daemon"
+msgstr "Logitech G15 extra klávesy pomocou G15daemon"
+
+#: ../rules/base.xml.in.h:327
+msgid "Logitech Internet Keyboard"
+msgstr "Logitech Internet Keyboard"
+
+#: ../rules/base.xml.in.h:328
+msgid "Logitech Internet Navigator Keyboard"
+msgstr "Logitech Internet Navigator Keyboard"
+
+#: ../rules/base.xml.in.h:329
+msgid "Logitech Ultra-X Keyboard"
+msgstr "Logitech Ultra-X Keyboard"
+
+#: ../rules/base.xml.in.h:330
+msgid "Logitech diNovo Keyboard"
+msgstr "Logitech diNovo Keyboard"
+
+#: ../rules/base.xml.in.h:331
+msgid "Logitech iTouch"
+msgstr "Logitech iTouch"
+
+#: ../rules/base.xml.in.h:332
+msgid "Logitech iTouch Cordless Keyboard (model Y-RB6)"
+msgstr "Logitech iTouch Cordless Keyboard (model Y-RB6)"
+
+#: ../rules/base.xml.in.h:333
+msgid "Logitech iTouch Internet Navigator Keyboard SE"
+msgstr "Logitech iTouch Internet Navigator Keyboard SE"
+
+#: ../rules/base.xml.in.h:334
+msgid "Logitech iTouch Internet Navigator Keyboard SE (USB)"
+msgstr "Logitech iTouch Internet Navigator Keyboard SE (USB)"
+
+#: ../rules/base.xml.in.h:335
+msgid "Ltu"
+msgstr "Lit"
+
+#: ../rules/base.xml.in.h:336
+msgid "Lva"
+msgstr "Lot"
+
+#: ../rules/base.xml.in.h:337
+msgid "MESS"
+msgstr "MESS"
+
+#: ../rules/base.xml.in.h:338
+msgid "MacBook/MacBook Pro"
+msgstr "MacBook/MacBook Pro"
+
+#: ../rules/base.xml.in.h:339
+msgid "MacBook/MacBook Pro (Intl)"
+msgstr "MacBook/MacBook Pro (medzin)"
+
+#: ../rules/base.xml.in.h:340
+msgid "Macedonia"
+msgstr "Macedónsko"
+
+#: ../rules/base.xml.in.h:341
+msgid "Macintosh"
+msgstr "Macintosh"
+
+#: ../rules/base.xml.in.h:342
+msgid "Macintosh Old"
+msgstr "Macintosh staré"
+
+#: ../rules/base.xml.in.h:343
+msgid "Macintosh, Sun dead keys"
+msgstr "Macintosh, mŕtve klávesy Sun"
+
+#: ../rules/base.xml.in.h:344
+msgid "Macintosh, eliminate dead keys"
+msgstr "Macintosh, eliminovať mŕtve klávesy"
+
+#: ../rules/base.xml.in.h:345
+msgid "Make CapsLock an additional Ctrl."
+msgstr "UrobiÅ¥ z CapsLock Äalší Ctrl."
+
+#: ../rules/base.xml.in.h:346
+msgid "Mal"
+msgstr "Mal"
+
+#: ../rules/base.xml.in.h:347
+msgid "Malayalam"
+msgstr "Malajalámske"
+
+#: ../rules/base.xml.in.h:348
+msgid "Maldives"
+msgstr "Maldivy"
+
+#: ../rules/base.xml.in.h:349
+msgid "Malta"
+msgstr "Malta"
+
+#: ../rules/base.xml.in.h:350
+msgid "Maltese keyboard with US layout"
+msgstr "Maltézska klávesnica s rozložením USA"
+
+#: ../rules/base.xml.in.h:351
+msgid "Mao"
+msgstr "Mao"
+
+#: ../rules/base.xml.in.h:352
+msgid "Maori"
+msgstr "maorÄina"
+
+#: ../rules/base.xml.in.h:353
+msgid "Memorex MX1998"
+msgstr "Memorex MX1998"
+
+#: ../rules/base.xml.in.h:354
+msgid "Memorex MX2500 EZ-Access Keyboard"
+msgstr "Memorex MX2500 EZ-Access Keyboard"
+
+#: ../rules/base.xml.in.h:355
+msgid "Memorex MX2750"
+msgstr "Memorex MX2750"
+
+#: ../rules/base.xml.in.h:356
+msgid "Menu is Compose."
+msgstr "Ponuka je Compose."
+
+#: ../rules/base.xml.in.h:357
+msgid "Menu key changes layout."
+msgstr "Kláves Ponuka mení rozloženie."
+
+#: ../rules/base.xml.in.h:358
+msgid "Meta is mapped to the Win-keys."
+msgstr "Meta je mapovaný na Win-klávesy."
+
+#: ../rules/base.xml.in.h:359
+msgid "Meta is mapped to the left Win-key."
+msgstr "Meta je mapovaný na ľavý Win-kláves."
+
+#: ../rules/base.xml.in.h:360
+msgid "Microsoft Internet Keyboard"
+msgstr "Microsoft Internet Keyboard"
+
+#: ../rules/base.xml.in.h:361
+msgid "Microsoft Internet Keyboard Pro, Swedish"
+msgstr "Microsoft Internet Keyboard Pro, Švédska"
+
+#: ../rules/base.xml.in.h:362
+msgid "Microsoft Natural"
+msgstr "Microsoft Natural"
+
+#: ../rules/base.xml.in.h:363
+msgid "Microsoft Natural Keyboard Pro / Microsoft Internet Keyboard Pro"
+msgstr "Microsoft Natural Keyboard Pro / Microsoft Internet Keyboard Pro"
+
+#: ../rules/base.xml.in.h:364
+msgid "Microsoft Natural Keyboard Pro OEM"
+msgstr "Microsoft Natural Keyboard Pro OEM"
+
+#: ../rules/base.xml.in.h:365
+msgid "Microsoft Natural Keyboard Pro USB / Microsoft Internet Keyboard Pro"
+msgstr "Microsoft Natural Keyboard Pro USB / Microsoft Internet Keyboard Pro"
+
+#: ../rules/base.xml.in.h:366
+msgid "Microsoft Office Keyboard"
+msgstr "Microsoft Office Keyboard"
+
+#: ../rules/base.xml.in.h:367
+msgid "Microsoft Wireless Multimedia Keyboard 1.0A"
+msgstr "Microsoft Wireless Multimedia Keyboard 1.0A"
+
+#: ../rules/base.xml.in.h:368 ../rules/sun.xml.in.h:72
+msgid "Miscellaneous compatibility options"
+msgstr "DodatoÄné voľby pre kompatibilitu"
+
+#: ../rules/base.xml.in.h:369
+msgid "Mkd"
+msgstr "Mak"
+
+#: ../rules/base.xml.in.h:370
+msgid "Mlt"
+msgstr "Mlt"
+
+#: ../rules/base.xml.in.h:371
+msgid "Mmr"
+msgstr "Mmr"
+
+#: ../rules/base.xml.in.h:372
+msgid "Mng"
+msgstr "Mng"
+
+#: ../rules/base.xml.in.h:373
+msgid "Mongolia"
+msgstr "Mongolsko"
+
+#: ../rules/base.xml.in.h:374
+msgid "Morocco"
+msgstr "Maroko"
+
+#: ../rules/base.xml.in.h:375 ../rules/sun.xml.in.h:73
+msgid "Multilingual"
+msgstr "ViacjazyÄné"
+
+#: ../rules/base.xml.in.h:376
+msgid "Multilingual, first part"
+msgstr "ViacjazyÄné, prvá ÄasÅ¥"
+
+#: ../rules/base.xml.in.h:377 ../rules/sun.xml.in.h:74
+msgid "Multilingual, second part"
+msgstr "ViacjazyÄné, druhá ÄasÅ¥"
+
+#: ../rules/base.xml.in.h:378
+msgid "Myanmar"
+msgstr "Mjanmarsko"
+
+#: ../rules/base.xml.in.h:379
+msgid "NICOLA-F style Backspace"
+msgstr "Backspace v štýle NICOLA-F"
+
+#: ../rules/base.xml.in.h:380
+msgid "Neostyle"
+msgstr "Neoštýl"
+
+#: ../rules/base.xml.in.h:381
+msgid "Nep"
+msgstr "Nep"
+
+#: ../rules/base.xml.in.h:382
+msgid "Nepal"
+msgstr "Nepál"
+
+#: ../rules/base.xml.in.h:383
+msgid "Netherlands"
+msgstr "Holandsko"
+
+#: ../rules/base.xml.in.h:384
+msgid "Nig"
+msgstr "Nig"
+
+#: ../rules/base.xml.in.h:385
+msgid "Nigeria"
+msgstr "Nigéria"
+
+#: ../rules/base.xml.in.h:386
+msgid "Nld"
+msgstr "Nld"
+
+#: ../rules/base.xml.in.h:387 ../rules/sun.xml.in.h:75
+msgid "Nor"
+msgstr "Nor"
+
+#: ../rules/base.xml.in.h:388
+msgid "Northern Saami"
+msgstr "severná saamÄina"
+
+#: ../rules/base.xml.in.h:389
+msgid "Northern Saami, eliminate dead keys"
+msgstr "severná saamÄina, eliminovaÅ¥ mÅ•tve klávesy"
+
+#: ../rules/base.xml.in.h:390
+msgid "Northgate OmniKey 101"
+msgstr "Northgate OmniKey 101"
+
+#: ../rules/base.xml.in.h:391
+msgid "Norway"
+msgstr "Nórsko"
+
+#: ../rules/base.xml.in.h:392
+msgid "NumLock LED shows alternative layout."
+msgstr "Num Lock LED zobrazuje alternatívne rozloženie."
+
+#: ../rules/base.xml.in.h:393
+msgid "Numeric keypad keys work as with Mac."
+msgstr "Numerická klávesnica funguje ako na Mac."
+
+#: ../rules/base.xml.in.h:394
+msgid "Numeric keypad layout selection"
+msgstr "Výber rozloženia numerickej klávesnice"
+
+#: ../rules/base.xml.in.h:395
+msgid "OADG 109A"
+msgstr "OADG 109A"
+
+#: ../rules/base.xml.in.h:396
+msgid "Ogham"
+msgstr "Oghamské"
+
+#: ../rules/base.xml.in.h:397
+msgid "Ogham IS434"
+msgstr "Ogham IS434"
+
+#: ../rules/base.xml.in.h:398
+msgid "Oriya"
+msgstr "uríjÄina"
+
+#: ../rules/base.xml.in.h:399
+msgid "Ortek MCK-800 MM/Internet keyboard"
+msgstr "Ortek MCK-800 MM/internetová klávesnica"
+
+#: ../rules/base.xml.in.h:400
+msgid "Ossetian"
+msgstr "Osetské"
+
+#: ../rules/base.xml.in.h:401
+msgid "Ossetian, Winkeys"
+msgstr "Osetské, klávesy Win"
+
+#: ../rules/base.xml.in.h:402
+msgid "PC-98xx Series"
+msgstr "Séria PC-98xx"
+
+#: ../rules/base.xml.in.h:403
+msgid "Pak"
+msgstr "Pak"
+
+#: ../rules/base.xml.in.h:404
+msgid "Pakistan"
+msgstr "Pakistan"
+
+#: ../rules/base.xml.in.h:405
+msgid "Pashto"
+msgstr "paÅ¡tÄina"
+
+# thajské rozloženie
+#: ../rules/base.xml.in.h:406
+msgid "Pattachote"
+msgstr "Pattachote"
+
+#: ../rules/base.xml.in.h:407 ../rules/sun.xml.in.h:78
+msgid "Phonetic"
+msgstr "Fonetické"
+
+#: ../rules/base.xml.in.h:408 ../rules/sun.xml.in.h:79
+msgid "Pol"
+msgstr "Pol"
+
+#: ../rules/base.xml.in.h:409
+msgid "Poland"
+msgstr "Poľsko"
+
+#: ../rules/base.xml.in.h:410
+msgid "Polytonic"
+msgstr "Polytónické"
+
+#: ../rules/base.xml.in.h:411
+msgid "Portugal"
+msgstr "Portugalsko"
+
+#: ../rules/base.xml.in.h:412
+msgid "Press Left Alt key to choose 3rd level."
+msgstr "StlaÄenie ľavého klávesu Alt vyberá 3. úroveň."
+
+#: ../rules/base.xml.in.h:413
+msgid "Press Left Win-key to choose 3rd level."
+msgstr "StlaÄenie ľavého klávesu Win vyberá 3. úroveň."
+
+#: ../rules/base.xml.in.h:414
+msgid "Press Menu key to choose 3rd level."
+msgstr "StlaÄenie klávesu Ponuka vyberá 3. úroveň."
+
+#: ../rules/base.xml.in.h:415
+msgid "Press Right Alt key to choose 3rd level, Shift+Right Alt key is Multi_Key."
+msgstr "StlaÄenie pravého klávesu Alt vyberá 3. úroveň, Shift+pravý kláves Alt key je Multi_Key."
+
+#: ../rules/base.xml.in.h:416
+msgid "Press Right Alt key to choose 3rd level."
+msgstr "StlaÄenie pravého klávesu Alt vyberá 3. úroveň."
+
+#: ../rules/base.xml.in.h:417
+msgid "Press Right Ctrl to choose 3rd level."
+msgstr "StlaÄenie pravého Ctrl vyberá 3. úroveň."
+
+#: ../rules/base.xml.in.h:418
+msgid "Press Right Win-key to choose 3rd level."
+msgstr "StlaÄenie pravého klávesu Win vyberá 3. úroveň."
+
+#: ../rules/base.xml.in.h:419
+msgid "Press any of Alt keys to choose 3rd level."
+msgstr "StlaÄenie ľubovoľného klávesu Alt vyberá 3. úroveň."
+
+#: ../rules/base.xml.in.h:420
+msgid "Press any of Win-keys to choose 3rd level."
+msgstr "StlaÄenie ľubovoľného klávesu Win vyberá 3. úroveň."
+
+#: ../rules/base.xml.in.h:421
+msgid "Pro"
+msgstr "Pro"
+
+#: ../rules/base.xml.in.h:422
+msgid "Pro Keypad"
+msgstr "Pro Keypad"
+
+#: ../rules/base.xml.in.h:423
+msgid "Probhat"
+msgstr "Probhat"
+
+#: ../rules/base.xml.in.h:424
+msgid "Propeller Voyager (KTEZ-1000)"
+msgstr "Propeller Voyager (KTEZ-1000)"
+
+#: ../rules/base.xml.in.h:425 ../rules/sun.xml.in.h:88
+msgid "Prt"
+msgstr "Prt"
+
+#: ../rules/base.xml.in.h:426
+msgid "QTronix Scorpius 98N+"
+msgstr "QTronix Scorpius 98N+"
+
+#: ../rules/base.xml.in.h:427
+msgid "R-Alt switches layout while pressed."
+msgstr "Pravý kláves Alt prepína rozloženie pri stlaÄení."
+
+#: ../rules/base.xml.in.h:428
+msgid "Right Alt is Compose."
+msgstr "Pravý Alt je Compose."
+
+#: ../rules/base.xml.in.h:429
+msgid "Right Alt key changes layout."
+msgstr "Pravý kláves Alt mení rozloženie."
+
+#: ../rules/base.xml.in.h:430 ../rules/sun.xml.in.h:90
+msgid "Right Alt key never chooses 3rd level."
+msgstr "Pravý kláves Alt nikdy nevyberá 3. úroveň."
+
+#: ../rules/base.xml.in.h:431
+msgid "Right Ctrl is Compose."
+msgstr "Pravý Alt je Compose."
+
+#: ../rules/base.xml.in.h:432
+msgid "Right Ctrl key changes layout."
+msgstr "Pravý kláves Ctrl mení rozloženie."
+
+#: ../rules/base.xml.in.h:433
+msgid "Right Ctrl key switches layout while pressed."
+msgstr "Pravý kláves Win prepína rozloženie pri stlaÄení."
+
+#: ../rules/base.xml.in.h:434
+msgid "Right Ctrl key works as Right Alt."
+msgstr "Pravý kláves Control funguje ako pravý Alt."
+
+#: ../rules/base.xml.in.h:435
+msgid "Right Shift key changes layout."
+msgstr "Pravý kláves Shift mení rozloženie."
+
+#: ../rules/base.xml.in.h:436
+msgid "Right Win-key changes layout."
+msgstr "Pravý kláves Win mení rozloženie."
+
+#: ../rules/base.xml.in.h:437
+msgid "Right Win-key is Compose."
+msgstr "Pravý kláves Win je Compose"
+
+#: ../rules/base.xml.in.h:438
+msgid "Right Win-key switches layout while pressed."
+msgstr "Pravý kláves Win prepína rozloženie pri stlaÄení."
+
+#: ../rules/base.xml.in.h:439
+msgid "Right hand"
+msgstr "pravá ruka"
+
+#: ../rules/base.xml.in.h:440
+msgid "Right handed Dvorak"
+msgstr "pravá ruka dvorak"
+
+#: ../rules/base.xml.in.h:441
+msgid "Romania"
+msgstr "Rumunsko"
+
+#: ../rules/base.xml.in.h:442
+msgid "Romanian keyboard with German letters"
+msgstr "Rumunská klávesnica s nemeckými písmenmi"
+
+#: ../rules/base.xml.in.h:443
+msgid "Romanian keyboard with German letters, eliminate dead keys"
+msgstr "Rumunská klávesnica s nemeckými písmenami, eliminovať mŕtve klávesy"
+
+#: ../rules/base.xml.in.h:444
+msgid "Rou"
+msgstr "Rum"
+
+#: ../rules/base.xml.in.h:445 ../rules/sun.xml.in.h:95
+msgid "Rus"
+msgstr "Rus"
+
+#: ../rules/base.xml.in.h:446
+msgid "Russia"
+msgstr "Rusko"
+
+#: ../rules/base.xml.in.h:447 ../rules/sun.xml.in.h:96
+msgid "Russian"
+msgstr "Ruské"
+
+#: ../rules/base.xml.in.h:448
+msgid "Russian phonetic"
+msgstr "Ruské fonetické"
+
+#: ../rules/base.xml.in.h:449
+msgid "Russian phonetic, eliminate dead keys"
+msgstr "Ruské fonetické, eliminovať mrtvé klávesy"
+
+#: ../rules/base.xml.in.h:450
+msgid "Russian with Kazakh"
+msgstr "Ruská s kazaštinou"
+
+#: ../rules/base.xml.in.h:451
+msgid "SCG"
+msgstr "SCG"
+
+#: ../rules/base.xml.in.h:452
+msgid "SILVERCREST Multimedia Wireless Keyboard"
+msgstr "SILVERCREST Multimedia Wireless Keyboard"
+
+#: ../rules/base.xml.in.h:453
+msgid "SK-1300"
+msgstr "SK-1300"
+
+#: ../rules/base.xml.in.h:454
+msgid "SK-2500"
+msgstr "SK-2500"
+
+#: ../rules/base.xml.in.h:455
+msgid "SK-6200"
+msgstr "SK-6200"
+
+#: ../rules/base.xml.in.h:456
+msgid "SK-7100"
+msgstr "SK-7100"
+
+#: ../rules/base.xml.in.h:457
+msgid "SVEN Ergonomic 2500"
+msgstr "SVEN Ergonomic 2500"
+
+#: ../rules/base.xml.in.h:458
+msgid "Samsung SDM 4500P"
+msgstr "Samsung SDM 4500P"
+
+#: ../rules/base.xml.in.h:459
+msgid "Samsung SDM 4510P"
+msgstr "Samsung SDM 4510P"
+
+#: ../rules/base.xml.in.h:460
+msgid "ScrollLock LED shows alternative layout."
+msgstr "Scroll Lock LED zobrazuje alternatívne rozloženie."
+
+#: ../rules/base.xml.in.h:461
+msgid "Serbia and Montenegro"
+msgstr "Srbsko a ÄŒierna Hora"
+
+#: ../rules/base.xml.in.h:462
+msgid "Shift with numeric keypad keys works as in MS Windows."
+msgstr "Shift s numerickými klávesmi pracuje ako v MS Windows."
+
+#: ../rules/base.xml.in.h:463
+msgid "Shift+CapsLock changes layout."
+msgstr "Shift+Caps Lock mení rozloženie."
+
+#: ../rules/base.xml.in.h:464
+msgid "Slovakia"
+msgstr "Slovensko"
+
+#: ../rules/base.xml.in.h:465
+msgid "Slovenia"
+msgstr "Slovinsko"
+
+#: ../rules/base.xml.in.h:466
+msgid "South Africa"
+msgstr "Južná Afrika"
+
+#: ../rules/base.xml.in.h:467
+msgid "Southern Uzbek"
+msgstr "južná uzbeÄtina"
+
+#: ../rules/base.xml.in.h:468
+msgid "Space key outputs non-breakable space character at fourth level, thin non-breakable space character at sixth level"
+msgstr "Medzerník dáva znak nezalomiteľná medzera na štvrtej úrovni, tenká nezalomiteľná medzera na šiestej úrovni."
+
+#: ../rules/base.xml.in.h:469
+msgid "Space key outputs non-breakable space character at fourth level."
+msgstr "Medzerník dáva znak nezalomiteľná medzera na štvrtej úrovni."
+
+#: ../rules/base.xml.in.h:470
+msgid "Space key outputs non-breakable space character at second level."
+msgstr "Medzerník dáva znak nezalomiteľná medzera na druhej úrovni."
+
+#: ../rules/base.xml.in.h:471
+msgid "Space key outputs non-breakable space character at third level, nothing at fourth level."
+msgstr "Medzerník dáva znak nezalomiteľná medzera na tretej úrovni, niÄ na Å¡tvrtej úrovni."
+
+#: ../rules/base.xml.in.h:472
+msgid "Space key outputs non-breakable space character at third level, thin non-breakable space character at fourth level"
+msgstr "Medzerník dáva znak nezalomiteľná medzera na tretej úrovni, tenká nezalomiteľná medzera na štvrtej úrovni."
+
+#: ../rules/base.xml.in.h:473
+msgid "Space key outputs non-breakable space character at third level."
+msgstr "Medzerník dáva znak nezalomiteľná medzera na tretej úrovni."
+
+#: ../rules/base.xml.in.h:474
+msgid "Space key outputs usual space at any level."
+msgstr "Medzerník dáva obyÄajnú medzeru na každej úrovni."
+
+#: ../rules/base.xml.in.h:475
+msgid "Spain"
+msgstr "Å panielsko"
+
+#: ../rules/base.xml.in.h:476 ../rules/sun.xml.in.h:103
+msgid "Special keys (Ctrl+Alt+&lt;key&gt;) handled in a server."
+msgstr "Špeciálne klávesy (Ctrl+Alt+&lt;key&gt;) spracované na serveru."
+
+#: ../rules/base.xml.in.h:477
+msgid "SrL"
+msgstr "SrL"
+
+#: ../rules/base.xml.in.h:478
+msgid "Sri Lanka"
+msgstr "Srí Lanka"
+
+#: ../rules/base.xml.in.h:479 ../rules/sun.xml.in.h:104
+msgid "Standard"
+msgstr "štandardné"
+
+#. RSTU 2019-91
+#: ../rules/base.xml.in.h:481
+msgid "Standard RSTU"
+msgstr "štandardné RSTU"
+
+#. RSTU 2019-91
+#: ../rules/base.xml.in.h:483
+msgid "Standard RSTU on Russian layout"
+msgstr "štandardné RSTU na ruskom rozložení"
+
+#: ../rules/base.xml.in.h:484 ../rules/sun.xml.in.h:112
+msgid "Sun dead keys"
+msgstr "mŕtve klávesy Sun"
+
+#: ../rules/base.xml.in.h:485
+msgid "Super Power Multimedia Keyboard"
+msgstr "Super Power Multimedia Keyboard"
+
+#: ../rules/base.xml.in.h:486
+msgid "Super is mapped to the Win-keys."
+msgstr "Super je mapovaný na klávesy Win."
+
+#: ../rules/base.xml.in.h:487
+msgid "Svdvorak"
+msgstr "Svdvorak"
+
+#: ../rules/base.xml.in.h:488 ../rules/sun.xml.in.h:113
+msgid "Svk"
+msgstr "Svk"
+
+#: ../rules/base.xml.in.h:489
+msgid "Svn"
+msgstr "Svn"
+
+#: ../rules/base.xml.in.h:490
+msgid "Swap Ctrl and CapsLock."
+msgstr "Vymeniť Control a Caps Lock"
+
+#: ../rules/base.xml.in.h:491
+msgid "Swap keycodes of two keys when Mac keyboards are misdetected by kernel."
+msgstr "VymeniÅ¥ kódy dvoch kláves keÄ jadro chybne detekuje klávesnice Mac."
+
+#: ../rules/base.xml.in.h:492 ../rules/sun.xml.in.h:115
+msgid "Swe"
+msgstr "Swe"
+
+#: ../rules/base.xml.in.h:493
+msgid "Sweden"
+msgstr "Švédsko"
+
+#: ../rules/base.xml.in.h:494
+msgid "Switzerland"
+msgstr "Å vajÄiarsko"
+
+#: ../rules/base.xml.in.h:495
+msgid "Symplon PaceBook (tablet PC)"
+msgstr "Symplon PaceBook (tablet PC)"
+
+#: ../rules/base.xml.in.h:496
+msgid "Syr"
+msgstr "Syr"
+
+#: ../rules/base.xml.in.h:497
+msgid "Syria"
+msgstr "Sýrske"
+
+#: ../rules/base.xml.in.h:498
+msgid "Syriac"
+msgstr "Syrské"
+
+#: ../rules/base.xml.in.h:499
+msgid "Syriac phonetic"
+msgstr "Sýske fonetické"
+
+#: ../rules/base.xml.in.h:500
+msgid "TIS-820.2538"
+msgstr "TIS-820.2538"
+
+#: ../rules/base.xml.in.h:501
+msgid "Tajikistan"
+msgstr "Tadžické"
+
+#: ../rules/base.xml.in.h:502
+msgid "Tamil"
+msgstr "Tamilské"
+
+#: ../rules/base.xml.in.h:503
+msgid "Tamil TAB Typewriter"
+msgstr "Tamiský TAB písací stroj"
+
+#: ../rules/base.xml.in.h:504
+msgid "Tamil TSCII Typewriter"
+msgstr "Tamilské TSCII písací stroj"
+
+#: ../rules/base.xml.in.h:505
+msgid "Tamil Unicode"
+msgstr "Tamilské Unicode"
+
+#: ../rules/base.xml.in.h:506
+msgid "Tatar"
+msgstr "tatárÄina"
+
+#: ../rules/base.xml.in.h:507
+msgid "Telugu"
+msgstr "Telugské"
+
+#: ../rules/base.xml.in.h:508
+msgid "Tha"
+msgstr "Tha"
+
+#: ../rules/base.xml.in.h:509
+msgid "Thailand"
+msgstr "Thajsko"
+
+#: ../rules/base.xml.in.h:510 ../rules/sun.xml.in.h:119
+msgid "Third level choosers"
+msgstr "Výber tretej úrovne"
+
+# berberská latinská abeceda
+#: ../rules/base.xml.in.h:511
+msgid "Tifinagh"
+msgstr "Tifinagh"
+
+# berberská latinská abeceda
+#: ../rules/base.xml.in.h:512
+msgid "Tifinagh Alternative"
+msgstr "Tifinagh alternatívne"
+
+# berberská latinská abeceda
+#: ../rules/base.xml.in.h:513
+msgid "Tifinagh Alternative Phonetic"
+msgstr "Tifinagh alternatívne fonetické"
+
+# berberská latinská abeceda
+#: ../rules/base.xml.in.h:514
+msgid "Tifinagh Extended"
+msgstr "Tifinagh rozšírené"
+
+# berberská latinská abeceda
+#: ../rules/base.xml.in.h:515
+msgid "Tifinagh Extended Phonetic"
+msgstr "Tifinagh rozšírené fonetické"
+
+# berberská latinská abeceda
+#: ../rules/base.xml.in.h:516
+msgid "Tifinagh Phonetic"
+msgstr "Tifinagh fonetické"
+
+#: ../rules/base.xml.in.h:517
+msgid "Tilde (~) variant"
+msgstr "Variant vlnovky (~)"
+
+#: ../rules/base.xml.in.h:518
+msgid "Tjk"
+msgstr "Tjk"
+
+#: ../rules/base.xml.in.h:519
+msgid "Toshiba Satellite S3000"
+msgstr "Toshiba Satellite S3000"
+
+#: ../rules/base.xml.in.h:520
+msgid "Trust Direct Access Keyboard"
+msgstr "Trust Direct Access Keyboard"
+
+#: ../rules/base.xml.in.h:521
+msgid "Trust Wireless Keyboard Classic"
+msgstr "Trust Wireless Keyboard Classic"
+
+#: ../rules/base.xml.in.h:522 ../rules/sun.xml.in.h:120
+msgid "Tur"
+msgstr "Tur"
+
+#: ../rules/base.xml.in.h:523
+msgid "Turkey"
+msgstr "Turecko"
+
+#: ../rules/base.xml.in.h:524
+msgid "Typewriter"
+msgstr "Písací stroj"
+
+#: ../rules/base.xml.in.h:525 ../rules/sun.xml.in.h:124
+msgid "U.S. English"
+msgstr "USA anglické"
+
+#: ../rules/base.xml.in.h:526
+#, fuzzy
+msgid "US keyboard with Bosnian digraphs"
+msgstr "Klávesnica USA s bosniackymi digraphs"
+
+#: ../rules/base.xml.in.h:527
+#, fuzzy
+msgid "US keyboard with Bosnian letters"
+msgstr "Klávesnica USA s bosniackymi písmenami"
+
+#: ../rules/base.xml.in.h:528
+#, fuzzy
+msgid "US keyboard with Croatian digraphs"
+msgstr "Klávesnica USA s chorvátskymi digraphs"
+
+#: ../rules/base.xml.in.h:529
+#, fuzzy
+msgid "US keyboard with Croatian letters"
+msgstr "Klávesnica USA s chorvátskymi písmenami"
+
+#: ../rules/base.xml.in.h:530
+msgid "US keyboard with Lithuanian letters"
+msgstr "Americká klávesnica s litovskými písmenami"
+
+#: ../rules/base.xml.in.h:531
+#, fuzzy
+msgid "US keyboard with Slovenian digraphs"
+msgstr "Klávesnica USA so slovinskými digraphs"
+
+#: ../rules/base.xml.in.h:532
+#, fuzzy
+msgid "US keyboard with Slovenian letters"
+msgstr "Klávesnica USA so slovinskými písmenami"
+
+#: ../rules/base.xml.in.h:533 ../rules/sun.xml.in.h:126
+msgid "USA"
+msgstr "USA"
+
+#: ../rules/base.xml.in.h:534
+msgid "Udmurt"
+msgstr "udmurtÄina"
+
+#: ../rules/base.xml.in.h:535
+msgid "Ukr"
+msgstr "Ukr"
+
+#: ../rules/base.xml.in.h:536
+msgid "Ukraine"
+msgstr "Ukrajinské"
+
+#: ../rules/base.xml.in.h:537
+msgid "UnicodeExpert"
+msgstr "UnicodeExpert"
+
+#: ../rules/base.xml.in.h:538 ../rules/sun.xml.in.h:127
+msgid "United Kingdom"
+msgstr "Spojené kráľovstvo"
+
+#: ../rules/base.xml.in.h:539
+msgid "Urdu"
+msgstr "urdÄina"
+
+#: ../rules/base.xml.in.h:540
+#, fuzzy
+msgid "Use Bosnian digraphs"
+msgstr "Použiť bosniacke digraphs"
+
+#: ../rules/base.xml.in.h:541
+#, fuzzy
+msgid "Use Croatian digraphs"
+msgstr "Použiť chorvátske digraphs"
+
+#: ../rules/base.xml.in.h:542
+#, fuzzy
+msgid "Use Slovenian digraphs"
+msgstr "Použiť slovinské digraphs"
+
+#: ../rules/base.xml.in.h:543
+msgid "Use guillemets for quotes"
+msgstr "Použiť uhlové zátvorky pre úvodzovky"
+
+#: ../rules/base.xml.in.h:544
+msgid "Use keyboard LED to show alternative layout."
+msgstr "Použiť LED klávesnice pre zobrazenie alternatívneho rozloženia."
+
+#: ../rules/base.xml.in.h:545
+msgid "Use keypad with unicode additions (arrows and math operators)"
+msgstr "Použiť numerickú klávesnicu s doplnkami Unicode (šípky a matematické operátory)"
+
+#: ../rules/base.xml.in.h:546
+msgid "Using space key to input non-breakable space character"
+msgstr "Použiť klávesu medzera na zadanie znaku nezalomiteľná medzera"
+
+#: ../rules/base.xml.in.h:547
+msgid "Uzb"
+msgstr "Uzb"
+
+#: ../rules/base.xml.in.h:548
+msgid "Uzbekistan"
+msgstr "Uzbecké"
+
+#: ../rules/base.xml.in.h:549
+msgid "Vietnam"
+msgstr "Vietnamské"
+
+#: ../rules/base.xml.in.h:550
+msgid "Vnm"
+msgstr "Vnm"
+
+#: ../rules/base.xml.in.h:551
+msgid "Wang model 724 azerty"
+msgstr "Wang model 724 azerty"
+
+#: ../rules/base.xml.in.h:552
+msgid "Western"
+msgstr "západné"
+
+#: ../rules/base.xml.in.h:553
+msgid "Winbook Model XP5"
+msgstr "Winbook Model XP5"
+
+#: ../rules/base.xml.in.h:554
+msgid "Winkeys"
+msgstr "Win klávesy"
+
+#: ../rules/base.xml.in.h:555
+msgid "With &lt;\\|&gt; key"
+msgstr "s klávesmi &lt;\\|&gt;"
+
+#: ../rules/base.xml.in.h:556
+msgid "With EuroSign on 5"
+msgstr "so znakom euro na 5"
+
+#: ../rules/base.xml.in.h:557
+msgid "With guillemets"
+msgstr "s uhlovými zátvorkami"
+
+#: ../rules/base.xml.in.h:558
+msgid "Yahoo! Internet Keyboard"
+msgstr "Yahoo! Internet Keyboard"
+
+#: ../rules/base.xml.in.h:559
+msgid "Yoruba"
+msgstr "jorubÄina"
+
+#: ../rules/base.xml.in.h:560
+msgid "Z and ZHE swapped"
+msgstr "Z a ZHE vymenené"
+
+#: ../rules/base.xml.in.h:561
+msgid "Zar"
+msgstr "Zar"
+
+#: ../rules/base.xml.in.h:562
+msgid "azerty"
+msgstr "azerty"
+
+#: ../rules/base.xml.in.h:563
+msgid "azerty/digits"
+msgstr "azerty/Äíslice"
+
+#: ../rules/base.xml.in.h:564
+msgid "digits"
+msgstr "Äíslice"
+
+#: ../rules/base.xml.in.h:565
+msgid "displaced semicolon and quote (obsolete)"
+msgstr "posunutá bodkoÄiarka a dvojbodka (zastaralé)"
+
+#: ../rules/base.xml.in.h:566
+msgid "lyx"
+msgstr "lyx"
+
+#: ../rules/base.xml.in.h:567 ../rules/sun.xml.in.h:132
+msgid "qwerty"
+msgstr "qwerty"
+
+#: ../rules/base.xml.in.h:568
+msgid "qwerty, extended Backslash"
+msgstr "qwerty, rozšírená spätná lomka"
+
+#: ../rules/base.xml.in.h:569
+msgid "qwerty/digits"
+msgstr "qwerty/Äíslice"
+
+#: ../rules/base.xml.in.h:570
+msgid "qwertz"
+msgstr "qwertz"
+
+#: ../rules/sun.xml.in.h:1
+msgid "\"Typewriter\""
+msgstr "Písací stroj"
+
+#: ../rules/sun.xml.in.h:17
+msgid "Acts as Shift with locking. Shift cancels Caps."
+msgstr "Pracuje ako Shift s uzamknutím. Shift ruší Caps."
+
+#: ../rules/sun.xml.in.h:18
+msgid "Acts as Shift with locking. Shift doesn't cancel Caps."
+msgstr "Pracuje ako Shift s uzamknutím. Shift neruší Caps."
+
+#: ../rules/sun.xml.in.h:19
+msgid "Alt+Control changes group"
+msgstr "Alt+Control mení rozloženie"
+
+#: ../rules/sun.xml.in.h:20
+msgid "Alt+Shift changes group"
+msgstr "Alt+Shift mení rozloženie"
+
+#: ../rules/sun.xml.in.h:21
+msgid "Basic"
+msgstr "základné"
+
+#: ../rules/sun.xml.in.h:23
+msgid "Belgian"
+msgstr "Belgická"
+
+#: ../rules/sun.xml.in.h:25
+msgid "Both Alt keys together change group"
+msgstr "Oba klávesy Alt spolu menia rozloženie"
+
+#: ../rules/sun.xml.in.h:26
+msgid "Both Ctrl keys together change group"
+msgstr "Oba klávesy Ctrl spolu menia rozloženie"
+
+#: ../rules/sun.xml.in.h:27
+msgid "Both Shift keys together change group"
+msgstr "SpoloÄné stlaÄenie oboch Shift mení rozloženie"
+
+#: ../rules/sun.xml.in.h:28
+msgid "Bulgarian"
+msgstr "Bulharské"
+
+#: ../rules/sun.xml.in.h:30
+msgid "Canadian"
+msgstr "Kanadské"
+
+#: ../rules/sun.xml.in.h:31
+msgid "Caps Lock is Compose"
+msgstr "Caps Lock je Compose"
+
+#: ../rules/sun.xml.in.h:32
+msgid "Caps Lock key changes group"
+msgstr "Kláves Caps Lock mení rozloženie"
+
+#: ../rules/sun.xml.in.h:34
+msgid "Caps_Lock LED shows alternative group"
+msgstr "Caps Lock LED zobrazuje alternatívne rozloženie"
+
+#: ../rules/sun.xml.in.h:35
+msgid "Control Key Position"
+msgstr "Pozícia klávesu Control"
+
+#: ../rules/sun.xml.in.h:36
+msgid "Control key at bottom left"
+msgstr "Kláves Control vľavo dole"
+
+#: ../rules/sun.xml.in.h:37
+msgid "Control key at left of 'A'"
+msgstr "Kláves Control naľavo od „A“"
+
+#: ../rules/sun.xml.in.h:38
+msgid "Control+Shift changes group"
+msgstr "Control+Shift mení rozloženie"
+
+#: ../rules/sun.xml.in.h:40
+msgid "Czech"
+msgstr "České"
+
+#: ../rules/sun.xml.in.h:41
+msgid "Danish"
+msgstr "Dánske"
+
+#: ../rules/sun.xml.in.h:45
+msgid "DeuCH"
+msgstr "NemÅ v"
+
+#: ../rules/sun.xml.in.h:47
+msgid "Dvo"
+msgstr "Dvo"
+
+#: ../rules/sun.xml.in.h:52
+msgid "Finnish"
+msgstr "Fínske"
+
+#: ../rules/sun.xml.in.h:54
+msgid "FraCH"
+msgstr "FraÅ v"
+
+#: ../rules/sun.xml.in.h:57
+msgid "German"
+msgstr "Nemecké"
+
+#: ../rules/sun.xml.in.h:58
+msgid "Group Shift/Lock behavior"
+msgstr "Zoskupiť chovanie Shift/Lock"
+
+#: ../rules/sun.xml.in.h:60
+msgid "Hungarian"
+msgstr "MaÄarské"
+
+#: ../rules/sun.xml.in.h:64
+msgid "Italian"
+msgstr "Talianske"
+
+#: ../rules/sun.xml.in.h:65
+msgid "Japanese"
+msgstr "Japonské"
+
+#: ../rules/sun.xml.in.h:67
+msgid "Left Alt key changes group"
+msgstr "Ľavý kláves Alt mení rozloženie"
+
+#: ../rules/sun.xml.in.h:68
+msgid "Left Alt key switches group while pressed"
+msgstr "Ľavý kláves Alt prepína rozloženie pri stlaÄení"
+
+#: ../rules/sun.xml.in.h:69
+msgid "Left Ctrl key changes group"
+msgstr "Ľavý kláves Ctrl mení rozloženie"
+
+#: ../rules/sun.xml.in.h:70
+msgid "Left Shift key changes group"
+msgstr "Ľavý kláves Shift mení rozloženie"
+
+#: ../rules/sun.xml.in.h:71
+msgid "Make CapsLock an additional Control"
+msgstr "UrobiÅ¥ z CapsLock dodatoÄný Control"
+
+#: ../rules/sun.xml.in.h:76
+msgid "Norwegian"
+msgstr "Nórske"
+
+#: ../rules/sun.xml.in.h:77
+msgid "Num_Lock LED shows alternative group"
+msgstr "Num Lock LED zobrazuje alternatívne rozloženie"
+
+#: ../rules/sun.xml.in.h:80
+msgid "Polish"
+msgstr "Poľské"
+
+#: ../rules/sun.xml.in.h:81
+msgid "Polish with Polish quotes on key \"1/!\""
+msgstr "Poľské s poľskými úvodzovkami na klávese „1/!“"
+
+#: ../rules/sun.xml.in.h:82
+msgid "Portuguese"
+msgstr "Portugalské"
+
+#: ../rules/sun.xml.in.h:83
+msgid "Press Left Alt key to choose 3rd level"
+msgstr "StlaÄením ľavého klávesu Win vyberiete 3. úroveň"
+
+#: ../rules/sun.xml.in.h:84
+msgid "Press Right Alt key to choose 3rd level"
+msgstr "StlaÄením pravého klávesu Win vyberiete 3. úroveň"
+
+#: ../rules/sun.xml.in.h:85
+msgid "Press Right Alt-key to choose 3rd level, Shift+Right Alt-key is Multi_Key"
+msgstr "StlaÄením pravého klávesu Win vyberiete 3. úroveň, shift+pravý Alt je Multi_Key"
+
+#: ../rules/sun.xml.in.h:86
+msgid "Press Right Control to choose 3rd level"
+msgstr "StlaÄenie pravého Control vyberá 3. úroveň"
+
+#: ../rules/sun.xml.in.h:87
+msgid "Press any of Alt keys to choose 3rd level"
+msgstr "StlaÄením ľuboboľného klávesu Alt vyberiete 3. úroveň"
+
+#: ../rules/sun.xml.in.h:89
+msgid "Right Alt key changes group"
+msgstr "Pravý Alt mení rozloženie"
+
+#: ../rules/sun.xml.in.h:91
+msgid "Right Alt switches group while pressed"
+msgstr "Pravý kláves Alt prepína rozloženie pri stlaÄení"
+
+#: ../rules/sun.xml.in.h:92
+msgid "Right Control key works as Right Alt"
+msgstr "Kláves pravý Control funguje ako pravý Alt"
+
+#: ../rules/sun.xml.in.h:93
+msgid "Right Ctrl key changes group"
+msgstr "Kláves pravý Ctrl mení rozloženie"
+
+#: ../rules/sun.xml.in.h:94
+msgid "Right Shift key changes group"
+msgstr "Kláves pravý Shift mení rozloženie"
+
+#: ../rules/sun.xml.in.h:97
+msgid "Scroll Lock changes group"
+msgstr "Kláves Scroll Lock mení rozloženie"
+
+#: ../rules/sun.xml.in.h:98
+msgid "Scroll_Lock LED shows alternative group"
+msgstr "Scroll Lock LED zobrazuje alternatívne rozloženie"
+
+#: ../rules/sun.xml.in.h:99
+msgid "Shift with numpad keys works as in MS Windows"
+msgstr "Shift s numerickými klávesmi pracuje ako v MS Windows"
+
+#: ../rules/sun.xml.in.h:100
+msgid "Shift+CapsLock changes group"
+msgstr "Shift+Caps Lock mení rozloženie"
+
+#: ../rules/sun.xml.in.h:101
+msgid "Slovak"
+msgstr "Slovenské"
+
+#: ../rules/sun.xml.in.h:102
+msgid "Spanish"
+msgstr "Å panielske"
+
+#: ../rules/sun.xml.in.h:105
+msgid "Sun Type 4"
+msgstr "Sun Type 4"
+
+#: ../rules/sun.xml.in.h:106
+msgid "Sun Type 5"
+msgstr "Sun Type 5"
+
+#: ../rules/sun.xml.in.h:107
+msgid "Sun Type 5 European"
+msgstr "Sun Type 5 európske"
+
+#: ../rules/sun.xml.in.h:108
+msgid "Sun Type 5 Unix"
+msgstr "Sun Type 5 Unix"
+
+#: ../rules/sun.xml.in.h:109
+msgid "Sun Type 6"
+msgstr "Sun Type 6"
+
+#: ../rules/sun.xml.in.h:110
+msgid "Sun Type 6 Unix"
+msgstr "Sun Type 6 Unix"
+
+#: ../rules/sun.xml.in.h:111
+msgid "Sun Type 6 with Euro key"
+msgstr "Sun Type 6 s klávesom euro"
+
+#: ../rules/sun.xml.in.h:114
+msgid "Swap Control and Caps Lock"
+msgstr "Prehodiť Control a Caps Lock"
+
+#: ../rules/sun.xml.in.h:116
+msgid "Swedish"
+msgstr "Švédske"
+
+#: ../rules/sun.xml.in.h:117
+msgid "Swiss French"
+msgstr "Å vajÄiarske francúzske"
+
+#: ../rules/sun.xml.in.h:118
+msgid "Swiss German"
+msgstr "Nemecké (Å vajÄiarsko)"
+
+#: ../rules/sun.xml.in.h:121
+msgid "Turkish"
+msgstr "Turecké"
+
+#: ../rules/sun.xml.in.h:122
+msgid "Turkish (F)"
+msgstr "Turecké (F)"
+
+#: ../rules/sun.xml.in.h:123
+msgid "Turkish Alt-Q Layout"
+msgstr "Turecké rozloženie Alt-Q"
+
+#: ../rules/sun.xml.in.h:125
+msgid "U.S. English w/ ISO9995-3"
+msgstr "U.S.A. anglické s ISO9995-3"
+
+#: ../rules/sun.xml.in.h:128
+msgid "Use keyboard LED to show alternative group"
+msgstr "Použiť LED klávesnice pre zobrazenie alternatívnej skupiny"
+
+#: ../rules/sun.xml.in.h:129
+msgid "Uses internal capitalization. Shift cancels Caps."
+msgstr "Používa interný prevod na kapitálky. Shift ruší Caps."
+
+#: ../rules/sun.xml.in.h:130
+msgid "Uses internal capitalization. Shift doesn't cancel Caps."
+msgstr "Používa interný prevod na kapitálky. Shift neruší Caps."
+
+#: ../rules/sun.xml.in.h:131
+msgid "bksl"
+msgstr "bksl"
+
+#: ../rules/sun.xml.in.h:133
+msgid "type4"
+msgstr "type4"
+
+#~ msgid "A Tamil typewrite-style keymap; TAB encoding"
+#~ msgstr "Tamilská klávesová mapa v štýle písacieho stroja, kódovanie TAB"
+
+#~ msgid "A Tamil typewrite-style keymap; TSCII encoding"
+#~ msgstr "Tamilská klávesová mapa v štýle písacieho stroja, kódovanie TSCII"
+
+#~ msgid "A Tamil typewrite-style keymap; Unicode encoding"
+#~ msgstr "Tamilská klávesová mapa v štýle písacieho stroja, kódovanie Unicode"
+
+#~ msgid "Arb"
+#~ msgstr "Arb"
+
+#~ msgid "Bosnian"
+#~ msgstr "Bosnianske"
+
+#~ msgid "Burmese"
+#~ msgstr "Burmézsky"
+
+#~ msgid "CloGaelach Laptop"
+#~ msgstr "CloGaelach Laptop"
+
+#~ msgid "Czech (qwerty)"
+#~ msgstr "České (qwerty)"
+
+#~ msgid "Dutch"
+#~ msgstr "Holandské"
+
+#~ msgid "French Canadian"
+#~ msgstr "Francúzske kanadské"
+
+#~ msgid "Georgian (latin)"
+#~ msgstr "Gruzínske (latinka)"
+
+#~ msgid "Georgian (russian)"
+#~ msgstr "Gruzínske (azbuka)"
+
+#~ msgid "Grc"
+#~ msgstr "Grc"
+
+#~ msgid "Guj"
+#~ msgstr "Guj"
+
+#~ msgid "Hin"
+#~ msgstr "Hin"
+
+#~ msgid "Hindi"
+#~ msgstr "Hindské"
+
+#~ msgid "INSCRIPT layout"
+#~ msgstr "INSCRIPT rozloženie"
+
+#~ msgid "IS434 laptop"
+#~ msgstr "IS434 laptop"
+
+#~ msgid "Iku"
+#~ msgstr "Inu"
+
+#~ msgid "Irish"
+#~ msgstr "Ãrske"
+
+#~ msgid "Lithuanian azerty standard"
+#~ msgstr "Litovské azerty štandardné"
+
+#~ msgid "Lithuanian qwerty \"numeric\""
+#~ msgstr "Litovské qwerty \"Äíselné\""
+
+#~ msgid "Logitech iTouch keyboard Internet Navigator"
+#~ msgstr "Logitech iTouch keyboard Internet Navigator"
+
+#~ msgid "Northern Saami (Finland)"
+#~ msgstr "Severný Saami (Fínsko)"
+
+#~ msgid "Northern Saami (Sweden)"
+#~ msgstr "Severný Saami (Švédsko)"
+
+#~ msgid "Ogh"
+#~ msgstr "Ogh"
+
+#~ msgid "Ori"
+#~ msgstr "Ori"
+
+#~ msgid "PC104"
+#~ msgstr "PC104"
+
+#~ msgid "Polish (qwertz)"
+#~ msgstr "Poľské (qwertz)"
+
+#~ msgid "PowerPC PS/2"
+#~ msgstr "PowerPC PS/2"
+
+#~ msgid "Sapmi"
+#~ msgstr "Sapmi"
+
+#~ msgid "Scg"
+#~ msgstr "Scg"
+
+#~ msgid "Slovak (qwerty)"
+#~ msgstr "Slovenské (qwerty)"
+
+#~ msgid "Sme"
+#~ msgstr "Sme"
+
+#~ msgid "Sv"
+#~ msgstr "Sv"
+
+#~ msgid "Tel"
+#~ msgstr "Tel"
+
+#~ msgid "Thai (Kedmanee)"
+#~ msgstr "Thajské (Kedmanee)"
+
+#~ msgid "Tml"
+#~ msgstr "Tml"
+
+#~ msgid "U.S. English w/ dead keys"
+#~ msgstr "Anglické (US) s mŕtvymi klávesmi"
+
+#~ msgid "US"
+#~ msgstr "US"
+
+#~ msgid "Yug"
+#~ msgstr "Juh"
+
+#~ msgid "Yugoslavian"
+#~ msgstr "Juhoslovanské"
+
+#~ msgid "abnt2"
+#~ msgstr "abnt2"
+
+#~ msgid "laptop"
+#~ msgstr "laptop"
+
+#~ msgid "sefi"
+#~ msgstr "sefi"
+
+#~ msgid "si1452"
+#~ msgstr "si1452"
+
+#~ msgid "uni/101/qwerty/comma"
+#~ msgstr "uni/101/qwerty/Äiarka"
+
+#~ msgid "uni/101/qwerty/dot"
+#~ msgstr "uni/101/qwerty/bodka"
+
+#~ msgid "uni/101/qwertz/comma"
+#~ msgstr "uni/101/qwertz/Äiarka"
+
+#~ msgid "uni/101/qwertz/dot"
+#~ msgstr "uni/101/qwertz/bodka"
+
+#~ msgid "uni/102/qwerty/comma"
+#~ msgstr "uni/102/qwerty/Äiarka"
+
+#~ msgid "uni/102/qwerty/dot"
+#~ msgstr "uni/102/qwerty/bodka"
+
+#~ msgid "uni/102/qwertz/comma"
+#~ msgstr "uni/102/qwertz/Äiarka"
+
+#~ msgid "uni/102/qwertz/dot"
+#~ msgstr "uni/102/qwertz/bodka"
diff --git a/xorg-server/xkeyboard-config/po/sq.po b/xorg-server/xkeyboard-config/po/sq.po
index bfac1d6fc..4efec73dc 100644
--- a/xorg-server/xkeyboard-config/po/sq.po
+++ b/xorg-server/xkeyboard-config/po/sq.po
@@ -1,1465 +1,1465 @@
-# translation of xfree86_xkb_xml-4.4pre1 to Albanian
-# This file is distributed under the same license as the xfree86_xkb_xml-4.4pre1 package.
-# Laurent Dhima <laurenti@alblinux.net>, 2004.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: xfree86_xkb_xml 4.4pre1\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2003-11-25 23:38+0000\n"
-"PO-Revision-Date: 2004-03-03 08:55-0500\n"
-"Last-Translator: Laurent Dhima <laurenti@alblinux.net>\n"
-"Language-Team: Albanian <gnome-albanian-perkthyesit@lists.sourceforge.net>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"X-Generator: KBabel 1.3\n"
-
-#: xfree86.xml.in.h:1
-msgid "\"Typewriter\""
-msgstr "\"Makinë shkrimi\""
-
-#: xfree86.xml.in.h:2
-msgid "A Tamil typewrite-style keymap; TAB encoding"
-msgstr "Një tastierë Tamil-ane stil makinë shkrimi; kodifikim TAB"
-
-#: xfree86.xml.in.h:3
-msgid "A Tamil typewrite-style keymap; TSCII encoding"
-msgstr "Një tastierë Tamil-ane stil makinë shkrimi; kodifikim TSCII"
-
-#: xfree86.xml.in.h:4
-msgid "A Tamil typewrite-style keymap; Unicode encoding"
-msgstr "Një tastierë Tamil-ane stil makinë shkrimi; kodifikim Unicode"
-
-#: xfree86.xml.in.h:5
-msgid "ACPI Standard"
-msgstr "ACPI Standart"
-
-#: xfree86.xml.in.h:6
-msgid "Acer AirKey V"
-msgstr "Acer AirKey V"
-
-#: xfree86.xml.in.h:7
-msgid "Acts as Shift with locking. Shift cancels Caps."
-msgstr "Vepron si Shift me bllokues. Shift fshin Caps."
-
-#: xfree86.xml.in.h:8
-msgid "Acts as Shift with locking. Shift doesn't cancel Caps."
-msgstr "Vepron si Shift me bllokues. Shift nuk fshin Caps."
-
-#: xfree86.xml.in.h:9
-msgid "Add the standard behavior to Menu key."
-msgstr "Shto sjelljen standarte tek Menu key."
-
-#: xfree86.xml.in.h:10
-msgid "Advance Scorpius KI"
-msgstr "Advance Scorpius KI"
-
-#: xfree86.xml.in.h:11
-msgid "Alb"
-msgstr "Alb"
-
-#: xfree86.xml.in.h:12
-msgid "Albanian"
-msgstr "Shqip"
-
-#: xfree86.xml.in.h:13
-msgid "Alt and Meta on the Alt keys (default)."
-msgstr "Alt dhe Meta tek pulsanti Alt (e prezgjedhur)."
-
-#: xfree86.xml.in.h:14
-msgid "Alt+Control changes group"
-msgstr "Alt+Control ndryshon grupin"
-
-#: xfree86.xml.in.h:15
-msgid "Alt+Shift changes group"
-msgstr "Alt+Shift ndryshon grupin"
-
-#: xfree86.xml.in.h:16
-msgid "Alt/Win key behavior"
-msgstr "Sjellja e pulsantit Alt/Win"
-
-#: xfree86.xml.in.h:17
-msgid "Alternate"
-msgstr "Alterno"
-
-#: xfree86.xml.in.h:18
-msgid "Arabic"
-msgstr "Arabe"
-
-#: xfree86.xml.in.h:19
-msgid "Arb"
-msgstr "Arb"
-
-#: xfree86.xml.in.h:20
-msgid "Arm"
-msgstr "Arm"
-
-#: xfree86.xml.in.h:21
-msgid "Armenian"
-msgstr "Armenisht"
-
-#: xfree86.xml.in.h:22
-msgid "Aze"
-msgstr "Aze"
-
-#: xfree86.xml.in.h:23
-msgid "Azerbaijani"
-msgstr "Azerbaijani"
-
-#: xfree86.xml.in.h:24
-msgid "BTC 5090"
-msgstr "BTC 5090"
-
-#: xfree86.xml.in.h:25
-msgid "BTC 5113RF Multimedia"
-msgstr "BTC 5113RF Multimedia"
-
-#: xfree86.xml.in.h:26
-msgid "BTC 5126T"
-msgstr "BTC 5126T"
-
-#: xfree86.xml.in.h:27
-msgid "BTC 9000"
-msgstr "BTC 9000"
-
-#: xfree86.xml.in.h:28
-msgid "BTC 9000A"
-msgstr "BTC 9000A"
-
-#: xfree86.xml.in.h:29
-msgid "BTC 9001AH"
-msgstr "BTC 9001AH"
-
-#: xfree86.xml.in.h:30
-msgid "Basic"
-msgstr "Bazë"
-
-#: xfree86.xml.in.h:31
-msgid "Bel"
-msgstr "Bel"
-
-#: xfree86.xml.in.h:32
-msgid "Belarusian"
-msgstr "Bjelloruse"
-
-#: xfree86.xml.in.h:33
-msgid "Belgian"
-msgstr "Belg"
-
-#: xfree86.xml.in.h:34
-msgid "Ben"
-msgstr "Ben"
-
-#: xfree86.xml.in.h:35
-msgid "Bengali"
-msgstr "Bengali"
-
-#: xfree86.xml.in.h:36
-msgid "Bgr"
-msgstr "Bgr"
-
-#: xfree86.xml.in.h:37
-msgid "Bih"
-msgstr "Bih"
-
-#: xfree86.xml.in.h:38
-msgid "Blr"
-msgstr "Blr"
-
-#: xfree86.xml.in.h:39
-msgid "Bosnian"
-msgstr "Bosnjake"
-
-#: xfree86.xml.in.h:40
-msgid "Both Alt keys together change group"
-msgstr "Dy pulsantët Alt së bashku ndryshjnë grupin"
-
-#: xfree86.xml.in.h:41
-msgid "Both Ctrl keys together change group"
-msgstr "Dy pulsantët Ctrl së bashku ndryshojnë grupin"
-
-#: xfree86.xml.in.h:42
-msgid "Both Shift keys together change group"
-msgstr "Dy pulsantët Shift së bashku ndryshojnë grupin"
-
-#: xfree86.xml.in.h:43
-msgid "Both Win-keys switch group while pressed"
-msgstr "Të dy pulsantët Win ndryshojnë gropin kur shtypen"
-
-#: xfree86.xml.in.h:44
-msgid "Bra"
-msgstr "Bra"
-
-#: xfree86.xml.in.h:45
-msgid "Brazilian"
-msgstr "Braziliane"
-
-#: xfree86.xml.in.h:46
-msgid "Brazilian ABNT2"
-msgstr "Braziliane ABNT2"
-
-#: xfree86.xml.in.h:47
-msgid "Brother Internet Keyboard"
-msgstr "Tastiera Internet Brother"
-
-#: xfree86.xml.in.h:48
-msgid "Bulgarian"
-msgstr "Bullgarisht"
-
-#: xfree86.xml.in.h:49
-msgid "Burmese"
-msgstr "Burmese"
-
-#: xfree86.xml.in.h:50
-msgid "Can"
-msgstr "Can"
-
-#: xfree86.xml.in.h:51
-msgid "Canadian"
-msgstr "Kanadeze"
-
-#: xfree86.xml.in.h:52
-msgid "Caps Lock key changes group"
-msgstr "Pulsanti Caps Lock ndryshon grupin"
-
-#: xfree86.xml.in.h:53
-msgid "CapsLock key behavior"
-msgstr "Sjellja e pulsantit CapsLock"
-
-#: xfree86.xml.in.h:54
-msgid "Caps_Lock LED shows alternative group"
-msgstr "Llampa e Caps_Lock tregon grupin alternativ"
-
-#: xfree86.xml.in.h:55
-msgid "Cherry Blue Line CyBo@rd"
-msgstr "Cherry Blue Line CyBo@rd"
-
-#: xfree86.xml.in.h:56
-msgid "Cherry Blue Line CyBo@rd (alternate option)"
-msgstr "Cherry Blue Line CyBo@rd (opcioni alterno)"
-
-#: xfree86.xml.in.h:57
-msgid "Chicony Internet Keyboard"
-msgstr "Tastiera Internet Chicony"
-
-#: xfree86.xml.in.h:58
-msgid "Chicony KB-9885"
-msgstr "Chicony KB-9885"
-
-#: xfree86.xml.in.h:59
-msgid "CloGaelach"
-msgstr "CloGaelach"
-
-#: xfree86.xml.in.h:60
-msgid "CloGaelach Laptop"
-msgstr "Laptop CloGaelach"
-
-#: xfree86.xml.in.h:61
-msgid "Compaq Easy Access Keyboard"
-msgstr "Tastiera Compaq Easy Access"
-
-#: xfree86.xml.in.h:62
-msgid "Compaq Internet Keyboard (13 keys)"
-msgstr "Tatiera Internet Compaq (13 pulsante)"
-
-#: xfree86.xml.in.h:63
-msgid "Compaq Internet Keyboard (18 keys)"
-msgstr "Tastiera Internet Compaq (18 pulsante)"
-
-#: xfree86.xml.in.h:64
-msgid "Compaq Internet Keyboard (7 keys)"
-msgstr "Tastiera Internet Compaq (7 pulsante)"
-
-#: xfree86.xml.in.h:65
-msgid "Compaq iPaq Keyboard"
-msgstr "Tastiera Compaq iPaq"
-
-#: xfree86.xml.in.h:66
-msgid "Control Key Position"
-msgstr "Pozicioni i pulsantit Control"
-
-#: xfree86.xml.in.h:67
-msgid "Control key at bottom left"
-msgstr "Pulsanti Control sipër majtas"
-
-#: xfree86.xml.in.h:68
-msgid "Control key at left of 'A'"
-msgstr "Pulsanti Control në të majtë të 'A'"
-
-#: xfree86.xml.in.h:69
-msgid "Control+Shift changes group"
-msgstr "Control+Shift ndryshon grupin"
-
-#: xfree86.xml.in.h:70
-msgid "Croatian"
-msgstr "Kroate"
-
-#: xfree86.xml.in.h:71
-msgid "Cyrillic"
-msgstr "Cyrillic"
-
-#: xfree86.xml.in.h:72
-msgid "Cze"
-msgstr "Cze"
-
-#: xfree86.xml.in.h:73
-msgid "Czech"
-msgstr "Çekisht"
-
-#: xfree86.xml.in.h:74
-msgid "Czech (qwerty)"
-msgstr "Czech (qwerty)"
-
-#: xfree86.xml.in.h:75
-msgid "Danish"
-msgstr "Danisht"
-
-#: xfree86.xml.in.h:76
-msgid "Dead acute"
-msgstr "Fund kritik"
-
-#: xfree86.xml.in.h:77
-msgid "Dead grave acute"
-msgstr "Fund kritik serioz"
-
-#: xfree86.xml.in.h:78
-msgid "Dell"
-msgstr "Dell"
-
-#: xfree86.xml.in.h:79
-msgid "Dell 101-key PC"
-msgstr "Dell 101-key PC"
-
-#: xfree86.xml.in.h:80
-msgid "Deu"
-msgstr "Deu"
-
-#: xfree86.xml.in.h:81
-msgid "Dexxa Wireless Desktop Keyboard"
-msgstr "Tastierë Dexxa Wireless Desktop"
-
-#: xfree86.xml.in.h:82
-msgid "Diamond 9801 / 9802 series"
-msgstr "Seritë Diamond 9801 / 9802"
-
-#: xfree86.xml.in.h:83
-msgid "Dnk"
-msgstr "Dnk"
-
-#: xfree86.xml.in.h:84
-msgid "Dutch"
-msgstr "Hollandeze"
-
-#: xfree86.xml.in.h:85
-msgid "Dvo"
-msgstr "Dvo"
-
-#: xfree86.xml.in.h:86
-msgid "Dvorak"
-msgstr "Dvorak"
-
-#: xfree86.xml.in.h:87
-msgid "Eliminate dead keys"
-msgstr "Elemino pulsantët e vdekur"
-
-#: xfree86.xml.in.h:88
-msgid "Ennyah DKB-1008"
-msgstr "Ennyah DKB-1008"
-
-#: xfree86.xml.in.h:89
-msgid "Esp"
-msgstr "Esp"
-
-#: xfree86.xml.in.h:90
-msgid "Est"
-msgstr "Est"
-
-#: xfree86.xml.in.h:91
-msgid "Estonian"
-msgstr "Estonisht"
-
-#: xfree86.xml.in.h:92
-msgid "Everex STEPnote"
-msgstr "Everex STEPnote"
-
-#: xfree86.xml.in.h:93
-msgid "Extended"
-msgstr "E zgjeruar"
-
-#: xfree86.xml.in.h:94
-msgid "Fao"
-msgstr "Fao"
-
-#: xfree86.xml.in.h:95
-msgid "Faroese"
-msgstr "Faroese"
-
-#: xfree86.xml.in.h:96
-msgid "Farsi"
-msgstr "Farsi"
-
-#: xfree86.xml.in.h:97
-msgid "Fin"
-msgstr "Fin"
-
-#: xfree86.xml.in.h:98
-msgid "Finnish"
-msgstr "Finlandeze"
-
-#: xfree86.xml.in.h:99
-msgid "Fra"
-msgstr "Fra"
-
-#: xfree86.xml.in.h:100
-msgid "French"
-msgstr "Frengjisht"
-
-#: xfree86.xml.in.h:101
-msgid "French (alternative)"
-msgstr "Franceze (alternativa)"
-
-#: xfree86.xml.in.h:102
-msgid "French Canadian"
-msgstr "Frengjisht e Kanadasë"
-
-#: xfree86.xml.in.h:103
-msgid "GBr"
-msgstr "GBr"
-
-#: xfree86.xml.in.h:104
-msgid "Generic 101-key PC"
-msgstr "Generic 101-key PC"
-
-#: xfree86.xml.in.h:105
-msgid "Generic 102-key (Intl) PC"
-msgstr "Generic 102-key (Intl) PC"
-
-#: xfree86.xml.in.h:106
-msgid "Generic 104-key PC"
-msgstr "Generic 104-key PC"
-
-#: xfree86.xml.in.h:107
-msgid "Generic 105-key (Intl) PC"
-msgstr "Generic 105-key (Intl) PC"
-
-#: xfree86.xml.in.h:108
-msgid "Genius Comfy KB-16M / Genius MM Keyboard KWD-910"
-msgstr "Genius Comfy KB-16M / Genius MM Keyboard KWD-910"
-
-#: xfree86.xml.in.h:109
-msgid "Geo"
-msgstr "Geo"
-
-#: xfree86.xml.in.h:110
-msgid "Georgian (latin)"
-msgstr "Georgian (latine)"
-
-#: xfree86.xml.in.h:111
-msgid "Georgian (russian)"
-msgstr "Georgian (rusisht)"
-
-#: xfree86.xml.in.h:112
-msgid "German"
-msgstr "Gjermanisht"
-
-#: xfree86.xml.in.h:113
-msgid "Grc"
-msgstr "Grc"
-
-#: xfree86.xml.in.h:114
-msgid "Greek"
-msgstr "Greqisht"
-
-#: xfree86.xml.in.h:115
-msgid "Group Shift/Lock behavior"
-msgstr "Sjellja e grupit Shift/Lock"
-
-#: xfree86.xml.in.h:116
-msgid "Guj"
-msgstr "Guj"
-
-#: xfree86.xml.in.h:117
-msgid "Gujarati"
-msgstr "Gujarati"
-
-#: xfree86.xml.in.h:118
-msgid "Gurmukhi"
-msgstr "Gurmukhi"
-
-#: xfree86.xml.in.h:119
-msgid "Hewlett-Packard Internet Keyboard"
-msgstr "Tastierë për Internet Hewlett-Packard"
-
-#: xfree86.xml.in.h:120
-msgid "Hewlett-Packard Omnibook 500 FA"
-msgstr "Hewlett-Packard Omnibook 500 FA"
-
-#: xfree86.xml.in.h:121
-msgid "Hewlett-Packard Omnibook 5xx"
-msgstr "Hewlett-Packard Omnibook 5xx"
-
-#: xfree86.xml.in.h:122
-msgid "Hewlett-Packard Omnibook 6000/6100"
-msgstr "Hewlett-Packard Omnibook 6000/6100"
-
-#: xfree86.xml.in.h:123
-msgid "Hewlett-Packard Omnibook XE3 GC"
-msgstr "Hewlett-Packard Omnibook XE3 GC"
-
-#: xfree86.xml.in.h:124
-msgid "Hewlett-Packard Omnibook XE3 GF"
-msgstr "Hewlett-Packard Omnibook XE3 GF"
-
-#: xfree86.xml.in.h:125
-msgid "Hewlett-Packard Omnibook XT1000"
-msgstr "Hewlett-Packard Omnibook XT1000"
-
-#: xfree86.xml.in.h:126
-msgid "Hewlett-Packard Pavilion ZT11xx"
-msgstr "Hewlett-Packard Pavilion ZT11xx"
-
-#: xfree86.xml.in.h:127
-msgid "Hewlett-Packard SK-2501 Multimedia Keyboard"
-msgstr "Tastierë multimediale Hewlett-Packard SK-2501"
-
-#: xfree86.xml.in.h:128
-msgid "Hewlett-Packard SK-2505 Internet Keyboard"
-msgstr "Tastierë për Internet Hewlett-Packard SK-2505"
-
-#: xfree86.xml.in.h:129
-msgid "Hin"
-msgstr "Hin"
-
-#: xfree86.xml.in.h:130
-msgid "Hindi"
-msgstr "Hindi"
-
-#: xfree86.xml.in.h:131
-msgid "Honeywell Euroboard"
-msgstr "Honeywell Euroboard"
-
-#: xfree86.xml.in.h:132
-msgid "Hrv"
-msgstr "Hrv"
-
-#: xfree86.xml.in.h:133
-msgid "Hun"
-msgstr "Hun"
-
-#: xfree86.xml.in.h:134
-msgid "Hungarian"
-msgstr "Hungarisht"
-
-#: xfree86.xml.in.h:135
-msgid "Hungarian (qwerty)"
-msgstr "Hungareze (qwerty)"
-
-#: xfree86.xml.in.h:136
-msgid "Hyper is mapped to the Win-keys."
-msgstr "Hyper është vendosur tek pulsantët Win."
-
-#: xfree86.xml.in.h:137
-msgid "IBM Rapid Access"
-msgstr "IBM Rapid Access"
-
-#: xfree86.xml.in.h:138
-msgid "IBM Rapid Access II"
-msgstr "IBM Rapid Access II"
-
-#: xfree86.xml.in.h:139
-msgid "IBM Rapid Access II (alternate option)"
-msgstr "IBM Rapid Access II (opcioni alternativ)"
-
-#: xfree86.xml.in.h:140
-msgid "IBM ThinkPad 560Z/600/600E/A22E"
-msgstr "IBM ThinkPad 560Z/600/600E/A22E"
-
-#: xfree86.xml.in.h:141
-msgid "INSCRIPT layout"
-msgstr "Planimetri INSCRIPT"
-
-#: xfree86.xml.in.h:142
-msgid "IS434"
-msgstr "IS434"
-
-#: xfree86.xml.in.h:143
-msgid "IS434 laptop"
-msgstr "Laptop IS434"
-
-#: xfree86.xml.in.h:144
-msgid "ISO Alternate"
-msgstr "ISO Alternative"
-
-#: xfree86.xml.in.h:145
-msgid "Icelandic"
-msgstr "Islandeze"
-
-#: xfree86.xml.in.h:146
-msgid "Iku"
-msgstr "Iku"
-
-#: xfree86.xml.in.h:147
-msgid "Inuktitut"
-msgstr "Inuktitut"
-
-#: xfree86.xml.in.h:148
-msgid "Irish"
-msgstr "Irlandeze"
-
-#: xfree86.xml.in.h:149
-msgid "Irl"
-msgstr "Irl"
-
-#: xfree86.xml.in.h:150
-msgid "Irn"
-msgstr "Irn"
-
-#: xfree86.xml.in.h:151
-msgid "Isl"
-msgstr "Isl"
-
-#: xfree86.xml.in.h:152
-msgid "Isr"
-msgstr "Isr"
-
-#: xfree86.xml.in.h:153
-msgid "Israeli"
-msgstr "Izraeliane"
-
-#: xfree86.xml.in.h:154
-msgid "Ita"
-msgstr "Ita"
-
-#: xfree86.xml.in.h:155
-msgid "Italian"
-msgstr "Italisht"
-
-#: xfree86.xml.in.h:156
-msgid "Japanese"
-msgstr "Japonisht"
-
-#: xfree86.xml.in.h:157
-msgid "Japanese 106-key"
-msgstr "Japoneze 106-pulsantë"
-
-#: xfree86.xml.in.h:158
-msgid "Jpn"
-msgstr "Jpn"
-
-#: xfree86.xml.in.h:159
-msgid "Kan"
-msgstr "Kan"
-
-#: xfree86.xml.in.h:160
-msgid "Kannada"
-msgstr "Kanadeze"
-
-#: xfree86.xml.in.h:161
-msgid "Keytronic FlexPro"
-msgstr "Keytronic FlexPro"
-
-#: xfree86.xml.in.h:162
-msgid "LAm"
-msgstr "LAm"
-
-#: xfree86.xml.in.h:163
-msgid "Laptop"
-msgstr "Laptop"
-
-#: xfree86.xml.in.h:164
-msgid "Laptop/notebook Compaq (eg. Armada) Laptop Keyboard"
-msgstr "Tastierë laptop për Laptop/notebook Compaq (p.sh. Armada)"
-
-#: xfree86.xml.in.h:165
-msgid "Laptop/notebook Compaq (eg. Presario) Internet Keyboard"
-msgstr "Tastierë për Internet për Laptop/notebook Compaq (p.sh. Presario)"
-
-#: xfree86.xml.in.h:166
-msgid "Laptop/notebook Dell Inspiron 8xxx"
-msgstr "Laptop/notebook Dell Inspiron 8xxx"
-
-#: xfree86.xml.in.h:167
-msgid "Latin"
-msgstr "Latinishte"
-
-#: xfree86.xml.in.h:168
-msgid "Latin America"
-msgstr "Latino amerikane"
-
-#: xfree86.xml.in.h:169
-msgid "Latvian"
-msgstr "Letonisht"
-
-#: xfree86.xml.in.h:170
-msgid "Left Alt key changes group"
-msgstr "Pulsanti i majtë Alt ndryshon grupin"
-
-#: xfree86.xml.in.h:171
-msgid "Left Ctrl key changes group"
-msgstr "Pulsanti i majtë Ctrl ndryshon grupin"
-
-#: xfree86.xml.in.h:172
-msgid "Left Shift key changes group"
-msgstr "Pulsanti i majtë Shift ndryshon grupin"
-
-#: xfree86.xml.in.h:173
-msgid "Left Win-key changes group"
-msgstr "Pulsanti i majtë Win ndryshon grupin"
-
-#: xfree86.xml.in.h:174
-msgid "Left Win-key switches group while pressed"
-msgstr "Pulsanti i majtë Win ndryshon grupin kur është i shtypur"
-
-#: xfree86.xml.in.h:175
-msgid "Lithuanian azerty standard"
-msgstr "Lithuanian azerty standart"
-
-#: xfree86.xml.in.h:176
-msgid "Lithuanian qwerty \"numeric\""
-msgstr "Lithuanian qwerty \"numerike\""
-
-#: xfree86.xml.in.h:177
-msgid "Logitech Cordless Desktop"
-msgstr "Logitech Cordless Desktop"
-
-#: xfree86.xml.in.h:178
-msgid "Logitech Cordless Desktop Navigator"
-msgstr "Logitech Cordless Desktop Navigator"
-
-#: xfree86.xml.in.h:179
-msgid "Logitech Cordless Desktop Optical"
-msgstr "Logitech Cordless Desktop Optical"
-
-#: xfree86.xml.in.h:180
-msgid "Logitech Cordless Desktop Pro"
-msgstr "Logitech Cordless Desktop Pro"
-
-#: xfree86.xml.in.h:181
-msgid "Logitech Cordless Desktop Pro (alternate option)"
-msgstr "Logitech Cordless Desktop Pro (opcioni alternativ)"
-
-#: xfree86.xml.in.h:182
-msgid "Logitech Cordless Desktop Pro (alternate option2)"
-msgstr "Logitech Cordless Desktop Pro (opcioni i dytë alternativ)"
-
-#: xfree86.xml.in.h:183
-msgid "Logitech Cordless Desktop iTouch"
-msgstr "Logitech Cordless Desktop iTouch"
-
-#: xfree86.xml.in.h:184
-msgid "Logitech Cordless Freedom/Desktop Navigator"
-msgstr "Logitech Cordless Freedom/Desktop Navigator"
-
-#: xfree86.xml.in.h:185
-msgid "Logitech Deluxe Access Keyboard"
-msgstr "Tastierë Logitech Deluxe Access"
-
-#: xfree86.xml.in.h:186
-msgid "Logitech Internet Keyboard"
-msgstr "Tastierë për Internet Logitech"
-
-#: xfree86.xml.in.h:187
-msgid "Logitech Internet Navigator Keyboard"
-msgstr "Tastierë Logitech Internet Navigator"
-
-#: xfree86.xml.in.h:188
-msgid "Logitech iTouch"
-msgstr "Logitech iTouch"
-
-#: xfree86.xml.in.h:189
-msgid "Logitech iTouch Cordless Keyboard (model Y-RB6)"
-msgstr "Logitech iTouch Cordless Keyboard (model Y-RB6)"
-
-#: xfree86.xml.in.h:190
-msgid "Logitech iTouch keyboard Internet Navigator"
-msgstr "Logitech iTouch keyboard Internet Navigator"
-
-#: xfree86.xml.in.h:191
-msgid "Ltu"
-msgstr "Ltu"
-
-#: xfree86.xml.in.h:192
-msgid "Lva"
-msgstr "Lva"
-
-#: xfree86.xml.in.h:193
-msgid "Macedonian"
-msgstr "Maqedonisht"
-
-#: xfree86.xml.in.h:194
-msgid "Macintosh"
-msgstr "Macintosh"
-
-#: xfree86.xml.in.h:195
-msgid "Macintosh Old"
-msgstr "Macintosh i vjetër"
-
-#: xfree86.xml.in.h:196
-msgid "Make CapsLock an additional Control"
-msgstr "Kthe CapsLock në një Control shtesë"
-
-#: xfree86.xml.in.h:197
-msgid "Mal"
-msgstr "Mal"
-
-#: xfree86.xml.in.h:198
-msgid "Malayalam"
-msgstr "Malayalam"
-
-#: xfree86.xml.in.h:199
-msgid "Maltese"
-msgstr "Malteze"
-
-#: xfree86.xml.in.h:200
-msgid "Maltese (US layout)"
-msgstr "Maltese (harta US)"
-
-#: xfree86.xml.in.h:201
-msgid "Memorex MX1998"
-msgstr "Memorex MX1998"
-
-#: xfree86.xml.in.h:202
-msgid "Memorex MX2500 EZ-Access Keyboard"
-msgstr "Tastierë Memorex MX2500 EZ-Access"
-
-#: xfree86.xml.in.h:203
-msgid "Memorex MX2750"
-msgstr "Memorex MX2750"
-
-#: xfree86.xml.in.h:204
-msgid "Menu is Compose"
-msgstr "Menu është krijuar"
-
-#: xfree86.xml.in.h:205
-msgid "Menu key changes group"
-msgstr "Pulsanti i menu ndryshon grupin"
-
-#: xfree86.xml.in.h:206
-msgid "Meta is mapped to the Win-keys."
-msgstr "Meta është vendosur tek pulsantët Win. "
-
-#: xfree86.xml.in.h:207
-msgid "Meta is mapped to the left Win-key."
-msgstr "Meta është vendosur tek pulsanti i majtë Win."
-
-#: xfree86.xml.in.h:208
-msgid "Microsoft Internet Keyboard"
-msgstr "Tastierë Microsoft Internet"
-
-#: xfree86.xml.in.h:209
-msgid "Microsoft Internet Keyboard Pro, Swedish"
-msgstr "Microsoft Internet Keyboard Pro, Suedeze"
-
-#: xfree86.xml.in.h:210
-msgid "Microsoft Natural"
-msgstr "Microsoft Natural"
-
-#: xfree86.xml.in.h:211
-msgid "Microsoft Natural Keyboard Pro / Microsoft Internet Keyboard Pro"
-msgstr "Microsoft Natural Keyboard Pro / Microsoft Internet Keyboard Pro"
-
-#: xfree86.xml.in.h:212
-msgid "Microsoft Natural Keyboard Pro OEM"
-msgstr "Microsoft Natural Keyboard Pro OEM"
-
-#: xfree86.xml.in.h:213
-msgid "Microsoft Office Keyboard"
-msgstr "Tastierë Microsoft Office"
-
-#: xfree86.xml.in.h:214
-msgid "Miscellaneous compatibility options"
-msgstr "Opcione të ndryshme kompatibiliteti"
-
-#: xfree86.xml.in.h:215
-msgid "Mkd"
-msgstr "Mkd"
-
-#: xfree86.xml.in.h:216
-msgid "Mlt"
-msgstr "Mlt"
-
-#: xfree86.xml.in.h:217
-msgid "Mmr"
-msgstr "Mmr"
-
-#: xfree86.xml.in.h:218
-msgid "Mng"
-msgstr "Mng"
-
-#: xfree86.xml.in.h:219
-msgid "Mongolian"
-msgstr "Mongoliane"
-
-#: xfree86.xml.in.h:220
-msgid "Nld"
-msgstr "Nld"
-
-#: xfree86.xml.in.h:221
-msgid "Nor"
-msgstr "Nor"
-
-#: xfree86.xml.in.h:222
-msgid "Northern Saami (Finland)"
-msgstr "Northern Saami (Finlandeze)"
-
-#: xfree86.xml.in.h:223
-msgid "Northern Saami (Norway)"
-msgstr "Northern Saami (Norvegjeze)"
-
-#: xfree86.xml.in.h:224
-msgid "Northern Saami (Sweden)"
-msgstr "Northern Saami (Suedeze)"
-
-#: xfree86.xml.in.h:225
-msgid "Northgate OmniKey 101"
-msgstr "Northgate OmniKey 101"
-
-#: xfree86.xml.in.h:226
-msgid "Norwegian"
-msgstr "Norvegjeze"
-
-#: xfree86.xml.in.h:227
-msgid "Num_Lock LED shows alternative group"
-msgstr "Llampa e Num_Lock tregon grupin alternativ"
-
-#: xfree86.xml.in.h:228
-msgid "Ogh"
-msgstr "Ogh"
-
-#: xfree86.xml.in.h:229
-msgid "Ogham"
-msgstr "Ogham"
-
-#: xfree86.xml.in.h:230
-msgid "Oretec MCK-800 MM/Internet keyboard"
-msgstr "Tastierë Oretec MCK-800 MM/Internet"
-
-#: xfree86.xml.in.h:231
-msgid "Ori"
-msgstr "Ori"
-
-#: xfree86.xml.in.h:232
-msgid "Oriya"
-msgstr "Oriya"
-
-#: xfree86.xml.in.h:233
-msgid "PC-98xx Series"
-msgstr "Seritë PC-98xx"
-
-#: xfree86.xml.in.h:234
-msgid "PC104"
-msgstr "PC104"
-
-#: xfree86.xml.in.h:235
-msgid "Pan"
-msgstr "Pan"
-
-#: xfree86.xml.in.h:236
-msgid "Phonetic"
-msgstr "Phonetic"
-
-#: xfree86.xml.in.h:237
-msgid "Pol"
-msgstr "Pol"
-
-#: xfree86.xml.in.h:238
-msgid "Polish"
-msgstr "Polonisht"
-
-#: xfree86.xml.in.h:239
-msgid "Polish (qwertz)"
-msgstr "Polake (qwertz)"
-
-#: xfree86.xml.in.h:240
-msgid "Polytonic"
-msgstr "Polytonic"
-
-#: xfree86.xml.in.h:241
-msgid "Portuguese"
-msgstr "Portugeze"
-
-#: xfree86.xml.in.h:242
-msgid "PowerPC PS/2"
-msgstr "PowerPC PS/2"
-
-#: xfree86.xml.in.h:243
-msgid "Press Left Win-key to choose 3rd level"
-msgstr "Shtyp pulsantin e majtë Win për të zgjedhur nivelin e tretë"
-
-#: xfree86.xml.in.h:244
-msgid "Press Menu key to choose 3rd level"
-msgstr "Shtyp pulsantin Menu për të zgjedhur nivelin e tretë"
-
-#: xfree86.xml.in.h:245
-msgid "Press Right Control to choose 3rd level"
-msgstr "Shtyp pulsantin e djathtë Control për të zgjedhur nivelin e tretë"
-
-#: xfree86.xml.in.h:246
-msgid "Press Right Win-key to choose 3rd level"
-msgstr "Shtyp pulsantin e djathtë Win për të zgjedhur nivelin e tretë"
-
-#: xfree86.xml.in.h:247
-msgid "Press any of Win-keys to choose 3rd level"
-msgstr "Shtyp çfarëdo pulsanti Win për të zgjedhur nivelin e tretë"
-
-#: xfree86.xml.in.h:248
-msgid "Propeller Voyager (KTEZ-1000)"
-msgstr "Propeller Voyager (KTEZ-1000)"
-
-#: xfree86.xml.in.h:249
-msgid "Prt"
-msgstr "Prt"
-
-#: xfree86.xml.in.h:250
-msgid "QTronix Scorpius 98N+"
-msgstr "QTronix Scorpius 98N+"
-
-#: xfree86.xml.in.h:251
-msgid "R-Alt switches group while pressed"
-msgstr "D-Alt ndryshon grupin kur është i shtypur"
-
-#: xfree86.xml.in.h:252
-msgid "Right Alt is Compose"
-msgstr "Alt i djathtë u krijua"
-
-#: xfree86.xml.in.h:253
-msgid "Right Alt key changes group"
-msgstr "Pulsanti i djathtë Alt ndryshon grupin"
-
-#: xfree86.xml.in.h:254
-msgid "Right Control key works as Right Alt"
-msgstr "Pulsanti i djathtë Control punon si Alt i djathtë"
-
-#: xfree86.xml.in.h:255
-msgid "Right Ctrl key changes group"
-msgstr "Pulsanti i djathtë Ctrl ndryshon grupin"
-
-#: xfree86.xml.in.h:256
-msgid "Right Shift key changes group"
-msgstr "Pulsanti i djathtë Shift ndryshon grupin"
-
-#: xfree86.xml.in.h:257
-msgid "Right Win-key changes group"
-msgstr "Pulsanti i djathtë Win ndryshon grupin"
-
-#: xfree86.xml.in.h:258
-msgid "Right Win-key is Compose"
-msgstr "Pulsanti Win i djathtë u krijua"
-
-#: xfree86.xml.in.h:259
-msgid "Right Win-key switches group while pressed"
-msgstr "Pulsanti i djathtë Win ndryshon grupin kur është i shtypur"
-
-#: xfree86.xml.in.h:260
-msgid "Romanian"
-msgstr "Rumanisht"
-
-#: xfree86.xml.in.h:261
-msgid "Rou"
-msgstr "Rou"
-
-#: xfree86.xml.in.h:262
-msgid "Rus"
-msgstr "Rus"
-
-#: xfree86.xml.in.h:263
-msgid "Russian"
-msgstr "Rusisht"
-
-#: xfree86.xml.in.h:264
-msgid "SK-1300"
-msgstr "SK-1300"
-
-#: xfree86.xml.in.h:265
-msgid "SK-2500"
-msgstr "SK-2500"
-
-#: xfree86.xml.in.h:266
-msgid "SK-6200"
-msgstr "SK-6200"
-
-#: xfree86.xml.in.h:267
-msgid "SK-7100"
-msgstr "SK-7100"
-
-#: xfree86.xml.in.h:268
-msgid "SVEN Ergonomic 2500"
-msgstr "SVEN Ergonomic 2500"
-
-#: xfree86.xml.in.h:269
-msgid "Samsung SDM 4500P"
-msgstr "Samsung SDM 4500P"
-
-#: xfree86.xml.in.h:270
-msgid "Samsung SDM 4510P"
-msgstr "Samsung SDM 4510P"
-
-#: xfree86.xml.in.h:271
-msgid "Sapmi"
-msgstr "Sapmi"
-
-#: xfree86.xml.in.h:272
-msgid "Scg"
-msgstr "Scg"
-
-#: xfree86.xml.in.h:273
-msgid "Scroll_Lock LED shows alternative group"
-msgstr "Llampa e Scroll_Lock tregon grupin alternativ"
-
-#: xfree86.xml.in.h:274
-msgid "Serbian"
-msgstr "Sërbisht"
-
-#: xfree86.xml.in.h:275
-msgid "Shift with numpad keys works as in MS Windows"
-msgstr "Shift së bashku me pulsantin numpad funksionon si tek MS Windows"
-
-#: xfree86.xml.in.h:276
-msgid "Slovak"
-msgstr "Sllovake"
-
-#: xfree86.xml.in.h:277
-msgid "Slovak (qwerty)"
-msgstr "Sllovake (qwerty)"
-
-#: xfree86.xml.in.h:278
-msgid "Slovenian"
-msgstr "Sllovene"
-
-#: xfree86.xml.in.h:279
-msgid "Sme"
-msgstr "Sme"
-
-#: xfree86.xml.in.h:280
-msgid "Spanish"
-msgstr "Spanjisht"
-
-#: xfree86.xml.in.h:281
-msgid "Special keys (Ctrl+Alt+&lt;key&gt;) handled in a server."
-msgstr "Çelsa specialë (Ctrl+Alt+&lt;çelsi&gt;) të manazhuar në një server."
-
-#: xfree86.xml.in.h:282
-msgid "Standard"
-msgstr "Standart"
-
-#: xfree86.xml.in.h:283
-msgid "Sun dead keys"
-msgstr "Pulsantë të vdekur Sun"
-
-#: xfree86.xml.in.h:284
-msgid "Super is mapped to the Win-keys (default)."
-msgstr "Super është vendosur tek pulsantët Win (e prezgjedhur)."
-
-#: xfree86.xml.in.h:285
-msgid "Sv"
-msgstr "Sv"
-
-#: xfree86.xml.in.h:286
-msgid "Svk"
-msgstr "Svk"
-
-#: xfree86.xml.in.h:287
-msgid "Svn"
-msgstr "Svn"
-
-#: xfree86.xml.in.h:288
-msgid "Swap Control and Caps Lock"
-msgstr "Shkëmbyesi Control dhe Caps Lock"
-
-#: xfree86.xml.in.h:289
-msgid "Swe"
-msgstr "Swe"
-
-#: xfree86.xml.in.h:290
-msgid "Swedish"
-msgstr "Suedisht"
-
-#: xfree86.xml.in.h:291
-msgid "Swiss French"
-msgstr "Frengjisht e Zvicrës"
-
-#: xfree86.xml.in.h:292
-msgid "Swiss German"
-msgstr "Gjermenishte e Zvicrës"
-
-#: xfree86.xml.in.h:293
-msgid "Symplon PaceBook (tablet PC)"
-msgstr "Symplon PaceBook (tablet PC)"
-
-#: xfree86.xml.in.h:294
-msgid "Syr"
-msgstr "Syr"
-
-#: xfree86.xml.in.h:295
-msgid "Syriac"
-msgstr "Siriane"
-
-#: xfree86.xml.in.h:296
-msgid "Tajik"
-msgstr "Tajik"
-
-#: xfree86.xml.in.h:297
-msgid "Tamil"
-msgstr "Tamil"
-
-#: xfree86.xml.in.h:298
-msgid "Tel"
-msgstr "Tel"
-
-#: xfree86.xml.in.h:299
-msgid "Telugu"
-msgstr "Telugu"
-
-#: xfree86.xml.in.h:300
-msgid "Tha"
-msgstr "Tha"
-
-#: xfree86.xml.in.h:301
-msgid "Thai (Kedmanee)"
-msgstr "Thai (Kedmanee)"
-
-#: xfree86.xml.in.h:302
-msgid "Thai (Pattachote)"
-msgstr "Thai (Pattachote)"
-
-#: xfree86.xml.in.h:303
-msgid "Thai (TIS-820.2538)"
-msgstr "Thai (TIS-820.2538)"
-
-#: xfree86.xml.in.h:304
-msgid "Third level choosers"
-msgstr "Zgjedhësit e nivelit të tretë"
-
-#: xfree86.xml.in.h:305
-msgid "Tjk"
-msgstr "Tjk"
-
-#: xfree86.xml.in.h:306
-msgid "Tml"
-msgstr "Tml"
-
-#: xfree86.xml.in.h:307
-msgid "Toshiba Satellite S3000"
-msgstr "Toshiba Satellite S3000"
-
-#: xfree86.xml.in.h:308
-msgid "Trust Direct Access Keyboard"
-msgstr "Tastierë Trust Direct Access"
-
-#: xfree86.xml.in.h:309
-msgid "Trust Wireless Keyboard Classic"
-msgstr "Tastierë klasike Trust Wireless"
-
-#: xfree86.xml.in.h:310
-msgid "Tur"
-msgstr "Tur"
-
-#: xfree86.xml.in.h:311
-msgid "Turkish"
-msgstr "Turqisht"
-
-#: xfree86.xml.in.h:312
-msgid "Turkish (F)"
-msgstr "Turke (F)"
-
-#: xfree86.xml.in.h:313
-msgid "Turkish Alt-Q Layout"
-msgstr "Planimetria Alt-Q Turke"
-
-#: xfree86.xml.in.h:314
-msgid "U.S. English"
-msgstr "U.S. Anglisht"
-
-#: xfree86.xml.in.h:315
-msgid "U.S. English w/ ISO9995-3"
-msgstr "U.S. Anglisht w/ ISO9995-3"
-
-#: xfree86.xml.in.h:316
-msgid "U.S. English w/ dead keys"
-msgstr "U.S. Anglisht w/ dead keys"
-
-#: xfree86.xml.in.h:317
-msgid "US"
-msgstr "US"
-
-#: xfree86.xml.in.h:318
-msgid "US keyboard with Romanian letters"
-msgstr "Tastierë US me gërma Romane"
-
-#: xfree86.xml.in.h:319
-msgid "USA"
-msgstr "USA"
-
-#: xfree86.xml.in.h:320
-msgid "Ukr"
-msgstr "Ukr"
-
-#: xfree86.xml.in.h:321
-msgid "Ukrainian"
-msgstr "Ukrahinase"
-
-#: xfree86.xml.in.h:322
-msgid "UnicodeExpert"
-msgstr "EkspertUnicode"
-
-#: xfree86.xml.in.h:323
-msgid "United Kingdom"
-msgstr "Mbretëria e Bashkuar"
-
-#: xfree86.xml.in.h:324
-msgid "Use keyboard LED to show alternative group"
-msgstr "Përdor LED e tastierës për të treguar grupin alternativ"
-
-#: xfree86.xml.in.h:325
-msgid "Uses internal capitalization. Shift cancels Caps."
-msgstr "Përdor gërma të mëdha në brendësi. Shift fshin Caps."
-
-#: xfree86.xml.in.h:326
-msgid "Uses internal capitalization. Shift doesn't cancel Caps."
-msgstr "Përdor gërma të mëdha në brendësi. Shift nuk fshin Caps."
-
-#: xfree86.xml.in.h:327
-msgid "Uzb"
-msgstr "Uzb"
-
-#: xfree86.xml.in.h:328
-msgid "Uzbek"
-msgstr "Uzbek"
-
-#: xfree86.xml.in.h:329
-msgid "Vietnamese"
-msgstr "Vietnamisht"
-
-#: xfree86.xml.in.h:330
-msgid "Vnm"
-msgstr "Vnm"
-
-#: xfree86.xml.in.h:331
-msgid "Winbook Model XP5"
-msgstr "Winbook Model XP5"
-
-#: xfree86.xml.in.h:332
-msgid "Winkeys"
-msgstr "Winkeys"
-
-#: xfree86.xml.in.h:333
-msgid "Yahoo! Internet Keyboard"
-msgstr "Tastierë Yahoo! Internet"
-
-#: xfree86.xml.in.h:334
-msgid "Yug"
-msgstr "Yug"
-
-#: xfree86.xml.in.h:335
-msgid "Yugoslavian"
-msgstr "Yugoslavian"
-
-#: xfree86.xml.in.h:336
-msgid "abnt2"
-msgstr "abnt2"
-
-#: xfree86.xml.in.h:337
-msgid "azerty"
-msgstr "azerty"
-
-#: xfree86.xml.in.h:338
-msgid "azerty/digits"
-msgstr "azerty/digits"
-
-#: xfree86.xml.in.h:339
-msgid "bksl"
-msgstr "bksl"
-
-#: xfree86.xml.in.h:340
-msgid "digits"
-msgstr "numra"
-
-#: xfree86.xml.in.h:341
-msgid "l2/101/qwerty/comma"
-msgstr "l2/101/qwerty/presje"
-
-#: xfree86.xml.in.h:342
-msgid "l2/101/qwerty/dot"
-msgstr "l2/101/qwerty/pikë"
-
-#: xfree86.xml.in.h:343
-msgid "l2/101/qwertz/comma"
-msgstr "l2/101/qwertz/presje"
-
-#: xfree86.xml.in.h:344
-msgid "l2/101/qwertz/dot"
-msgstr "l2/101/qwertz/pikë"
-
-#: xfree86.xml.in.h:345
-msgid "l2/102/qwerty/comma"
-msgstr "l2/102/qwerty/presje"
-
-#: xfree86.xml.in.h:346
-msgid "l2/102/qwerty/dot"
-msgstr "l2/102/qwerty/pikë"
-
-#: xfree86.xml.in.h:347
-msgid "l2/102/qwertz/comma"
-msgstr "l2/102/qwertz/presje"
-
-#: xfree86.xml.in.h:348
-msgid "l2/102/qwertz/dot"
-msgstr "l2/102/qwertz/pikë"
-
-#: xfree86.xml.in.h:349
-msgid "laptop"
-msgstr "laptop"
-
-#: xfree86.xml.in.h:350
-msgid "lyx"
-msgstr "lyx"
-
-#: xfree86.xml.in.h:351
-msgid "qwerty"
-msgstr "qwerty"
-
-#: xfree86.xml.in.h:352
-msgid "qwerty/digits"
-msgstr "qwerty/numra"
-
-#: xfree86.xml.in.h:353
-msgid "sefi"
-msgstr "sefi"
-
-#: xfree86.xml.in.h:354
-msgid "si1452"
-msgstr "si1452"
-
-#: xfree86.xml.in.h:355
-msgid "uni/101/qwerty/comma"
-msgstr "uni/101/qwerty/presje"
-
-#: xfree86.xml.in.h:356
-msgid "uni/101/qwerty/dot"
-msgstr "uni/101/qwerty/pikë"
-
-#: xfree86.xml.in.h:357
-msgid "uni/101/qwertz/comma"
-msgstr "uni/101/qwertz/presje"
-
-#: xfree86.xml.in.h:358
-msgid "uni/101/qwertz/dot"
-msgstr "uni/101/qwertz/pikë"
-
-#: xfree86.xml.in.h:359
-msgid "uni/102/qwerty/comma"
-msgstr "uni/102/qwerty/presje"
-
-#: xfree86.xml.in.h:360
-msgid "uni/102/qwerty/dot"
-msgstr "uni/102/qwerty/pikë"
-
-#: xfree86.xml.in.h:361
-msgid "uni/102/qwertz/comma"
-msgstr "uni/102/qwertz/presje"
-
-#: xfree86.xml.in.h:362
-msgid "uni/102/qwertz/dot"
-msgstr "uni/102/qwertz/pikë"
-
+# translation of xfree86_xkb_xml-4.4pre1 to Albanian
+# This file is distributed under the same license as the xfree86_xkb_xml-4.4pre1 package.
+# Laurent Dhima <laurenti@alblinux.net>, 2004.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: xfree86_xkb_xml 4.4pre1\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2003-11-25 23:38+0000\n"
+"PO-Revision-Date: 2004-03-03 08:55-0500\n"
+"Last-Translator: Laurent Dhima <laurenti@alblinux.net>\n"
+"Language-Team: Albanian <gnome-albanian-perkthyesit@lists.sourceforge.net>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.3\n"
+
+#: xfree86.xml.in.h:1
+msgid "\"Typewriter\""
+msgstr "\"Makinë shkrimi\""
+
+#: xfree86.xml.in.h:2
+msgid "A Tamil typewrite-style keymap; TAB encoding"
+msgstr "Një tastierë Tamil-ane stil makinë shkrimi; kodifikim TAB"
+
+#: xfree86.xml.in.h:3
+msgid "A Tamil typewrite-style keymap; TSCII encoding"
+msgstr "Një tastierë Tamil-ane stil makinë shkrimi; kodifikim TSCII"
+
+#: xfree86.xml.in.h:4
+msgid "A Tamil typewrite-style keymap; Unicode encoding"
+msgstr "Një tastierë Tamil-ane stil makinë shkrimi; kodifikim Unicode"
+
+#: xfree86.xml.in.h:5
+msgid "ACPI Standard"
+msgstr "ACPI Standart"
+
+#: xfree86.xml.in.h:6
+msgid "Acer AirKey V"
+msgstr "Acer AirKey V"
+
+#: xfree86.xml.in.h:7
+msgid "Acts as Shift with locking. Shift cancels Caps."
+msgstr "Vepron si Shift me bllokues. Shift fshin Caps."
+
+#: xfree86.xml.in.h:8
+msgid "Acts as Shift with locking. Shift doesn't cancel Caps."
+msgstr "Vepron si Shift me bllokues. Shift nuk fshin Caps."
+
+#: xfree86.xml.in.h:9
+msgid "Add the standard behavior to Menu key."
+msgstr "Shto sjelljen standarte tek Menu key."
+
+#: xfree86.xml.in.h:10
+msgid "Advance Scorpius KI"
+msgstr "Advance Scorpius KI"
+
+#: xfree86.xml.in.h:11
+msgid "Alb"
+msgstr "Alb"
+
+#: xfree86.xml.in.h:12
+msgid "Albanian"
+msgstr "Shqip"
+
+#: xfree86.xml.in.h:13
+msgid "Alt and Meta on the Alt keys (default)."
+msgstr "Alt dhe Meta tek pulsanti Alt (e prezgjedhur)."
+
+#: xfree86.xml.in.h:14
+msgid "Alt+Control changes group"
+msgstr "Alt+Control ndryshon grupin"
+
+#: xfree86.xml.in.h:15
+msgid "Alt+Shift changes group"
+msgstr "Alt+Shift ndryshon grupin"
+
+#: xfree86.xml.in.h:16
+msgid "Alt/Win key behavior"
+msgstr "Sjellja e pulsantit Alt/Win"
+
+#: xfree86.xml.in.h:17
+msgid "Alternate"
+msgstr "Alterno"
+
+#: xfree86.xml.in.h:18
+msgid "Arabic"
+msgstr "Arabe"
+
+#: xfree86.xml.in.h:19
+msgid "Arb"
+msgstr "Arb"
+
+#: xfree86.xml.in.h:20
+msgid "Arm"
+msgstr "Arm"
+
+#: xfree86.xml.in.h:21
+msgid "Armenian"
+msgstr "Armenisht"
+
+#: xfree86.xml.in.h:22
+msgid "Aze"
+msgstr "Aze"
+
+#: xfree86.xml.in.h:23
+msgid "Azerbaijani"
+msgstr "Azerbaijani"
+
+#: xfree86.xml.in.h:24
+msgid "BTC 5090"
+msgstr "BTC 5090"
+
+#: xfree86.xml.in.h:25
+msgid "BTC 5113RF Multimedia"
+msgstr "BTC 5113RF Multimedia"
+
+#: xfree86.xml.in.h:26
+msgid "BTC 5126T"
+msgstr "BTC 5126T"
+
+#: xfree86.xml.in.h:27
+msgid "BTC 9000"
+msgstr "BTC 9000"
+
+#: xfree86.xml.in.h:28
+msgid "BTC 9000A"
+msgstr "BTC 9000A"
+
+#: xfree86.xml.in.h:29
+msgid "BTC 9001AH"
+msgstr "BTC 9001AH"
+
+#: xfree86.xml.in.h:30
+msgid "Basic"
+msgstr "Bazë"
+
+#: xfree86.xml.in.h:31
+msgid "Bel"
+msgstr "Bel"
+
+#: xfree86.xml.in.h:32
+msgid "Belarusian"
+msgstr "Bjelloruse"
+
+#: xfree86.xml.in.h:33
+msgid "Belgian"
+msgstr "Belg"
+
+#: xfree86.xml.in.h:34
+msgid "Ben"
+msgstr "Ben"
+
+#: xfree86.xml.in.h:35
+msgid "Bengali"
+msgstr "Bengali"
+
+#: xfree86.xml.in.h:36
+msgid "Bgr"
+msgstr "Bgr"
+
+#: xfree86.xml.in.h:37
+msgid "Bih"
+msgstr "Bih"
+
+#: xfree86.xml.in.h:38
+msgid "Blr"
+msgstr "Blr"
+
+#: xfree86.xml.in.h:39
+msgid "Bosnian"
+msgstr "Bosnjake"
+
+#: xfree86.xml.in.h:40
+msgid "Both Alt keys together change group"
+msgstr "Dy pulsantët Alt së bashku ndryshjnë grupin"
+
+#: xfree86.xml.in.h:41
+msgid "Both Ctrl keys together change group"
+msgstr "Dy pulsantët Ctrl së bashku ndryshojnë grupin"
+
+#: xfree86.xml.in.h:42
+msgid "Both Shift keys together change group"
+msgstr "Dy pulsantët Shift së bashku ndryshojnë grupin"
+
+#: xfree86.xml.in.h:43
+msgid "Both Win-keys switch group while pressed"
+msgstr "Të dy pulsantët Win ndryshojnë gropin kur shtypen"
+
+#: xfree86.xml.in.h:44
+msgid "Bra"
+msgstr "Bra"
+
+#: xfree86.xml.in.h:45
+msgid "Brazilian"
+msgstr "Braziliane"
+
+#: xfree86.xml.in.h:46
+msgid "Brazilian ABNT2"
+msgstr "Braziliane ABNT2"
+
+#: xfree86.xml.in.h:47
+msgid "Brother Internet Keyboard"
+msgstr "Tastiera Internet Brother"
+
+#: xfree86.xml.in.h:48
+msgid "Bulgarian"
+msgstr "Bullgarisht"
+
+#: xfree86.xml.in.h:49
+msgid "Burmese"
+msgstr "Burmese"
+
+#: xfree86.xml.in.h:50
+msgid "Can"
+msgstr "Can"
+
+#: xfree86.xml.in.h:51
+msgid "Canadian"
+msgstr "Kanadeze"
+
+#: xfree86.xml.in.h:52
+msgid "Caps Lock key changes group"
+msgstr "Pulsanti Caps Lock ndryshon grupin"
+
+#: xfree86.xml.in.h:53
+msgid "CapsLock key behavior"
+msgstr "Sjellja e pulsantit CapsLock"
+
+#: xfree86.xml.in.h:54
+msgid "Caps_Lock LED shows alternative group"
+msgstr "Llampa e Caps_Lock tregon grupin alternativ"
+
+#: xfree86.xml.in.h:55
+msgid "Cherry Blue Line CyBo@rd"
+msgstr "Cherry Blue Line CyBo@rd"
+
+#: xfree86.xml.in.h:56
+msgid "Cherry Blue Line CyBo@rd (alternate option)"
+msgstr "Cherry Blue Line CyBo@rd (opcioni alterno)"
+
+#: xfree86.xml.in.h:57
+msgid "Chicony Internet Keyboard"
+msgstr "Tastiera Internet Chicony"
+
+#: xfree86.xml.in.h:58
+msgid "Chicony KB-9885"
+msgstr "Chicony KB-9885"
+
+#: xfree86.xml.in.h:59
+msgid "CloGaelach"
+msgstr "CloGaelach"
+
+#: xfree86.xml.in.h:60
+msgid "CloGaelach Laptop"
+msgstr "Laptop CloGaelach"
+
+#: xfree86.xml.in.h:61
+msgid "Compaq Easy Access Keyboard"
+msgstr "Tastiera Compaq Easy Access"
+
+#: xfree86.xml.in.h:62
+msgid "Compaq Internet Keyboard (13 keys)"
+msgstr "Tatiera Internet Compaq (13 pulsante)"
+
+#: xfree86.xml.in.h:63
+msgid "Compaq Internet Keyboard (18 keys)"
+msgstr "Tastiera Internet Compaq (18 pulsante)"
+
+#: xfree86.xml.in.h:64
+msgid "Compaq Internet Keyboard (7 keys)"
+msgstr "Tastiera Internet Compaq (7 pulsante)"
+
+#: xfree86.xml.in.h:65
+msgid "Compaq iPaq Keyboard"
+msgstr "Tastiera Compaq iPaq"
+
+#: xfree86.xml.in.h:66
+msgid "Control Key Position"
+msgstr "Pozicioni i pulsantit Control"
+
+#: xfree86.xml.in.h:67
+msgid "Control key at bottom left"
+msgstr "Pulsanti Control sipër majtas"
+
+#: xfree86.xml.in.h:68
+msgid "Control key at left of 'A'"
+msgstr "Pulsanti Control në të majtë të 'A'"
+
+#: xfree86.xml.in.h:69
+msgid "Control+Shift changes group"
+msgstr "Control+Shift ndryshon grupin"
+
+#: xfree86.xml.in.h:70
+msgid "Croatian"
+msgstr "Kroate"
+
+#: xfree86.xml.in.h:71
+msgid "Cyrillic"
+msgstr "Cyrillic"
+
+#: xfree86.xml.in.h:72
+msgid "Cze"
+msgstr "Cze"
+
+#: xfree86.xml.in.h:73
+msgid "Czech"
+msgstr "Çekisht"
+
+#: xfree86.xml.in.h:74
+msgid "Czech (qwerty)"
+msgstr "Czech (qwerty)"
+
+#: xfree86.xml.in.h:75
+msgid "Danish"
+msgstr "Danisht"
+
+#: xfree86.xml.in.h:76
+msgid "Dead acute"
+msgstr "Fund kritik"
+
+#: xfree86.xml.in.h:77
+msgid "Dead grave acute"
+msgstr "Fund kritik serioz"
+
+#: xfree86.xml.in.h:78
+msgid "Dell"
+msgstr "Dell"
+
+#: xfree86.xml.in.h:79
+msgid "Dell 101-key PC"
+msgstr "Dell 101-key PC"
+
+#: xfree86.xml.in.h:80
+msgid "Deu"
+msgstr "Deu"
+
+#: xfree86.xml.in.h:81
+msgid "Dexxa Wireless Desktop Keyboard"
+msgstr "Tastierë Dexxa Wireless Desktop"
+
+#: xfree86.xml.in.h:82
+msgid "Diamond 9801 / 9802 series"
+msgstr "Seritë Diamond 9801 / 9802"
+
+#: xfree86.xml.in.h:83
+msgid "Dnk"
+msgstr "Dnk"
+
+#: xfree86.xml.in.h:84
+msgid "Dutch"
+msgstr "Hollandeze"
+
+#: xfree86.xml.in.h:85
+msgid "Dvo"
+msgstr "Dvo"
+
+#: xfree86.xml.in.h:86
+msgid "Dvorak"
+msgstr "Dvorak"
+
+#: xfree86.xml.in.h:87
+msgid "Eliminate dead keys"
+msgstr "Elemino pulsantët e vdekur"
+
+#: xfree86.xml.in.h:88
+msgid "Ennyah DKB-1008"
+msgstr "Ennyah DKB-1008"
+
+#: xfree86.xml.in.h:89
+msgid "Esp"
+msgstr "Esp"
+
+#: xfree86.xml.in.h:90
+msgid "Est"
+msgstr "Est"
+
+#: xfree86.xml.in.h:91
+msgid "Estonian"
+msgstr "Estonisht"
+
+#: xfree86.xml.in.h:92
+msgid "Everex STEPnote"
+msgstr "Everex STEPnote"
+
+#: xfree86.xml.in.h:93
+msgid "Extended"
+msgstr "E zgjeruar"
+
+#: xfree86.xml.in.h:94
+msgid "Fao"
+msgstr "Fao"
+
+#: xfree86.xml.in.h:95
+msgid "Faroese"
+msgstr "Faroese"
+
+#: xfree86.xml.in.h:96
+msgid "Farsi"
+msgstr "Farsi"
+
+#: xfree86.xml.in.h:97
+msgid "Fin"
+msgstr "Fin"
+
+#: xfree86.xml.in.h:98
+msgid "Finnish"
+msgstr "Finlandeze"
+
+#: xfree86.xml.in.h:99
+msgid "Fra"
+msgstr "Fra"
+
+#: xfree86.xml.in.h:100
+msgid "French"
+msgstr "Frengjisht"
+
+#: xfree86.xml.in.h:101
+msgid "French (alternative)"
+msgstr "Franceze (alternativa)"
+
+#: xfree86.xml.in.h:102
+msgid "French Canadian"
+msgstr "Frengjisht e Kanadasë"
+
+#: xfree86.xml.in.h:103
+msgid "GBr"
+msgstr "GBr"
+
+#: xfree86.xml.in.h:104
+msgid "Generic 101-key PC"
+msgstr "Generic 101-key PC"
+
+#: xfree86.xml.in.h:105
+msgid "Generic 102-key (Intl) PC"
+msgstr "Generic 102-key (Intl) PC"
+
+#: xfree86.xml.in.h:106
+msgid "Generic 104-key PC"
+msgstr "Generic 104-key PC"
+
+#: xfree86.xml.in.h:107
+msgid "Generic 105-key (Intl) PC"
+msgstr "Generic 105-key (Intl) PC"
+
+#: xfree86.xml.in.h:108
+msgid "Genius Comfy KB-16M / Genius MM Keyboard KWD-910"
+msgstr "Genius Comfy KB-16M / Genius MM Keyboard KWD-910"
+
+#: xfree86.xml.in.h:109
+msgid "Geo"
+msgstr "Geo"
+
+#: xfree86.xml.in.h:110
+msgid "Georgian (latin)"
+msgstr "Georgian (latine)"
+
+#: xfree86.xml.in.h:111
+msgid "Georgian (russian)"
+msgstr "Georgian (rusisht)"
+
+#: xfree86.xml.in.h:112
+msgid "German"
+msgstr "Gjermanisht"
+
+#: xfree86.xml.in.h:113
+msgid "Grc"
+msgstr "Grc"
+
+#: xfree86.xml.in.h:114
+msgid "Greek"
+msgstr "Greqisht"
+
+#: xfree86.xml.in.h:115
+msgid "Group Shift/Lock behavior"
+msgstr "Sjellja e grupit Shift/Lock"
+
+#: xfree86.xml.in.h:116
+msgid "Guj"
+msgstr "Guj"
+
+#: xfree86.xml.in.h:117
+msgid "Gujarati"
+msgstr "Gujarati"
+
+#: xfree86.xml.in.h:118
+msgid "Gurmukhi"
+msgstr "Gurmukhi"
+
+#: xfree86.xml.in.h:119
+msgid "Hewlett-Packard Internet Keyboard"
+msgstr "Tastierë për Internet Hewlett-Packard"
+
+#: xfree86.xml.in.h:120
+msgid "Hewlett-Packard Omnibook 500 FA"
+msgstr "Hewlett-Packard Omnibook 500 FA"
+
+#: xfree86.xml.in.h:121
+msgid "Hewlett-Packard Omnibook 5xx"
+msgstr "Hewlett-Packard Omnibook 5xx"
+
+#: xfree86.xml.in.h:122
+msgid "Hewlett-Packard Omnibook 6000/6100"
+msgstr "Hewlett-Packard Omnibook 6000/6100"
+
+#: xfree86.xml.in.h:123
+msgid "Hewlett-Packard Omnibook XE3 GC"
+msgstr "Hewlett-Packard Omnibook XE3 GC"
+
+#: xfree86.xml.in.h:124
+msgid "Hewlett-Packard Omnibook XE3 GF"
+msgstr "Hewlett-Packard Omnibook XE3 GF"
+
+#: xfree86.xml.in.h:125
+msgid "Hewlett-Packard Omnibook XT1000"
+msgstr "Hewlett-Packard Omnibook XT1000"
+
+#: xfree86.xml.in.h:126
+msgid "Hewlett-Packard Pavilion ZT11xx"
+msgstr "Hewlett-Packard Pavilion ZT11xx"
+
+#: xfree86.xml.in.h:127
+msgid "Hewlett-Packard SK-2501 Multimedia Keyboard"
+msgstr "Tastierë multimediale Hewlett-Packard SK-2501"
+
+#: xfree86.xml.in.h:128
+msgid "Hewlett-Packard SK-2505 Internet Keyboard"
+msgstr "Tastierë për Internet Hewlett-Packard SK-2505"
+
+#: xfree86.xml.in.h:129
+msgid "Hin"
+msgstr "Hin"
+
+#: xfree86.xml.in.h:130
+msgid "Hindi"
+msgstr "Hindi"
+
+#: xfree86.xml.in.h:131
+msgid "Honeywell Euroboard"
+msgstr "Honeywell Euroboard"
+
+#: xfree86.xml.in.h:132
+msgid "Hrv"
+msgstr "Hrv"
+
+#: xfree86.xml.in.h:133
+msgid "Hun"
+msgstr "Hun"
+
+#: xfree86.xml.in.h:134
+msgid "Hungarian"
+msgstr "Hungarisht"
+
+#: xfree86.xml.in.h:135
+msgid "Hungarian (qwerty)"
+msgstr "Hungareze (qwerty)"
+
+#: xfree86.xml.in.h:136
+msgid "Hyper is mapped to the Win-keys."
+msgstr "Hyper është vendosur tek pulsantët Win."
+
+#: xfree86.xml.in.h:137
+msgid "IBM Rapid Access"
+msgstr "IBM Rapid Access"
+
+#: xfree86.xml.in.h:138
+msgid "IBM Rapid Access II"
+msgstr "IBM Rapid Access II"
+
+#: xfree86.xml.in.h:139
+msgid "IBM Rapid Access II (alternate option)"
+msgstr "IBM Rapid Access II (opcioni alternativ)"
+
+#: xfree86.xml.in.h:140
+msgid "IBM ThinkPad 560Z/600/600E/A22E"
+msgstr "IBM ThinkPad 560Z/600/600E/A22E"
+
+#: xfree86.xml.in.h:141
+msgid "INSCRIPT layout"
+msgstr "Planimetri INSCRIPT"
+
+#: xfree86.xml.in.h:142
+msgid "IS434"
+msgstr "IS434"
+
+#: xfree86.xml.in.h:143
+msgid "IS434 laptop"
+msgstr "Laptop IS434"
+
+#: xfree86.xml.in.h:144
+msgid "ISO Alternate"
+msgstr "ISO Alternative"
+
+#: xfree86.xml.in.h:145
+msgid "Icelandic"
+msgstr "Islandeze"
+
+#: xfree86.xml.in.h:146
+msgid "Iku"
+msgstr "Iku"
+
+#: xfree86.xml.in.h:147
+msgid "Inuktitut"
+msgstr "Inuktitut"
+
+#: xfree86.xml.in.h:148
+msgid "Irish"
+msgstr "Irlandeze"
+
+#: xfree86.xml.in.h:149
+msgid "Irl"
+msgstr "Irl"
+
+#: xfree86.xml.in.h:150
+msgid "Irn"
+msgstr "Irn"
+
+#: xfree86.xml.in.h:151
+msgid "Isl"
+msgstr "Isl"
+
+#: xfree86.xml.in.h:152
+msgid "Isr"
+msgstr "Isr"
+
+#: xfree86.xml.in.h:153
+msgid "Israeli"
+msgstr "Izraeliane"
+
+#: xfree86.xml.in.h:154
+msgid "Ita"
+msgstr "Ita"
+
+#: xfree86.xml.in.h:155
+msgid "Italian"
+msgstr "Italisht"
+
+#: xfree86.xml.in.h:156
+msgid "Japanese"
+msgstr "Japonisht"
+
+#: xfree86.xml.in.h:157
+msgid "Japanese 106-key"
+msgstr "Japoneze 106-pulsantë"
+
+#: xfree86.xml.in.h:158
+msgid "Jpn"
+msgstr "Jpn"
+
+#: xfree86.xml.in.h:159
+msgid "Kan"
+msgstr "Kan"
+
+#: xfree86.xml.in.h:160
+msgid "Kannada"
+msgstr "Kanadeze"
+
+#: xfree86.xml.in.h:161
+msgid "Keytronic FlexPro"
+msgstr "Keytronic FlexPro"
+
+#: xfree86.xml.in.h:162
+msgid "LAm"
+msgstr "LAm"
+
+#: xfree86.xml.in.h:163
+msgid "Laptop"
+msgstr "Laptop"
+
+#: xfree86.xml.in.h:164
+msgid "Laptop/notebook Compaq (eg. Armada) Laptop Keyboard"
+msgstr "Tastierë laptop për Laptop/notebook Compaq (p.sh. Armada)"
+
+#: xfree86.xml.in.h:165
+msgid "Laptop/notebook Compaq (eg. Presario) Internet Keyboard"
+msgstr "Tastierë për Internet për Laptop/notebook Compaq (p.sh. Presario)"
+
+#: xfree86.xml.in.h:166
+msgid "Laptop/notebook Dell Inspiron 8xxx"
+msgstr "Laptop/notebook Dell Inspiron 8xxx"
+
+#: xfree86.xml.in.h:167
+msgid "Latin"
+msgstr "Latinishte"
+
+#: xfree86.xml.in.h:168
+msgid "Latin America"
+msgstr "Latino amerikane"
+
+#: xfree86.xml.in.h:169
+msgid "Latvian"
+msgstr "Letonisht"
+
+#: xfree86.xml.in.h:170
+msgid "Left Alt key changes group"
+msgstr "Pulsanti i majtë Alt ndryshon grupin"
+
+#: xfree86.xml.in.h:171
+msgid "Left Ctrl key changes group"
+msgstr "Pulsanti i majtë Ctrl ndryshon grupin"
+
+#: xfree86.xml.in.h:172
+msgid "Left Shift key changes group"
+msgstr "Pulsanti i majtë Shift ndryshon grupin"
+
+#: xfree86.xml.in.h:173
+msgid "Left Win-key changes group"
+msgstr "Pulsanti i majtë Win ndryshon grupin"
+
+#: xfree86.xml.in.h:174
+msgid "Left Win-key switches group while pressed"
+msgstr "Pulsanti i majtë Win ndryshon grupin kur është i shtypur"
+
+#: xfree86.xml.in.h:175
+msgid "Lithuanian azerty standard"
+msgstr "Lithuanian azerty standart"
+
+#: xfree86.xml.in.h:176
+msgid "Lithuanian qwerty \"numeric\""
+msgstr "Lithuanian qwerty \"numerike\""
+
+#: xfree86.xml.in.h:177
+msgid "Logitech Cordless Desktop"
+msgstr "Logitech Cordless Desktop"
+
+#: xfree86.xml.in.h:178
+msgid "Logitech Cordless Desktop Navigator"
+msgstr "Logitech Cordless Desktop Navigator"
+
+#: xfree86.xml.in.h:179
+msgid "Logitech Cordless Desktop Optical"
+msgstr "Logitech Cordless Desktop Optical"
+
+#: xfree86.xml.in.h:180
+msgid "Logitech Cordless Desktop Pro"
+msgstr "Logitech Cordless Desktop Pro"
+
+#: xfree86.xml.in.h:181
+msgid "Logitech Cordless Desktop Pro (alternate option)"
+msgstr "Logitech Cordless Desktop Pro (opcioni alternativ)"
+
+#: xfree86.xml.in.h:182
+msgid "Logitech Cordless Desktop Pro (alternate option2)"
+msgstr "Logitech Cordless Desktop Pro (opcioni i dytë alternativ)"
+
+#: xfree86.xml.in.h:183
+msgid "Logitech Cordless Desktop iTouch"
+msgstr "Logitech Cordless Desktop iTouch"
+
+#: xfree86.xml.in.h:184
+msgid "Logitech Cordless Freedom/Desktop Navigator"
+msgstr "Logitech Cordless Freedom/Desktop Navigator"
+
+#: xfree86.xml.in.h:185
+msgid "Logitech Deluxe Access Keyboard"
+msgstr "Tastierë Logitech Deluxe Access"
+
+#: xfree86.xml.in.h:186
+msgid "Logitech Internet Keyboard"
+msgstr "Tastierë për Internet Logitech"
+
+#: xfree86.xml.in.h:187
+msgid "Logitech Internet Navigator Keyboard"
+msgstr "Tastierë Logitech Internet Navigator"
+
+#: xfree86.xml.in.h:188
+msgid "Logitech iTouch"
+msgstr "Logitech iTouch"
+
+#: xfree86.xml.in.h:189
+msgid "Logitech iTouch Cordless Keyboard (model Y-RB6)"
+msgstr "Logitech iTouch Cordless Keyboard (model Y-RB6)"
+
+#: xfree86.xml.in.h:190
+msgid "Logitech iTouch keyboard Internet Navigator"
+msgstr "Logitech iTouch keyboard Internet Navigator"
+
+#: xfree86.xml.in.h:191
+msgid "Ltu"
+msgstr "Ltu"
+
+#: xfree86.xml.in.h:192
+msgid "Lva"
+msgstr "Lva"
+
+#: xfree86.xml.in.h:193
+msgid "Macedonian"
+msgstr "Maqedonisht"
+
+#: xfree86.xml.in.h:194
+msgid "Macintosh"
+msgstr "Macintosh"
+
+#: xfree86.xml.in.h:195
+msgid "Macintosh Old"
+msgstr "Macintosh i vjetër"
+
+#: xfree86.xml.in.h:196
+msgid "Make CapsLock an additional Control"
+msgstr "Kthe CapsLock në një Control shtesë"
+
+#: xfree86.xml.in.h:197
+msgid "Mal"
+msgstr "Mal"
+
+#: xfree86.xml.in.h:198
+msgid "Malayalam"
+msgstr "Malayalam"
+
+#: xfree86.xml.in.h:199
+msgid "Maltese"
+msgstr "Malteze"
+
+#: xfree86.xml.in.h:200
+msgid "Maltese (US layout)"
+msgstr "Maltese (harta US)"
+
+#: xfree86.xml.in.h:201
+msgid "Memorex MX1998"
+msgstr "Memorex MX1998"
+
+#: xfree86.xml.in.h:202
+msgid "Memorex MX2500 EZ-Access Keyboard"
+msgstr "Tastierë Memorex MX2500 EZ-Access"
+
+#: xfree86.xml.in.h:203
+msgid "Memorex MX2750"
+msgstr "Memorex MX2750"
+
+#: xfree86.xml.in.h:204
+msgid "Menu is Compose"
+msgstr "Menu është krijuar"
+
+#: xfree86.xml.in.h:205
+msgid "Menu key changes group"
+msgstr "Pulsanti i menu ndryshon grupin"
+
+#: xfree86.xml.in.h:206
+msgid "Meta is mapped to the Win-keys."
+msgstr "Meta është vendosur tek pulsantët Win. "
+
+#: xfree86.xml.in.h:207
+msgid "Meta is mapped to the left Win-key."
+msgstr "Meta është vendosur tek pulsanti i majtë Win."
+
+#: xfree86.xml.in.h:208
+msgid "Microsoft Internet Keyboard"
+msgstr "Tastierë Microsoft Internet"
+
+#: xfree86.xml.in.h:209
+msgid "Microsoft Internet Keyboard Pro, Swedish"
+msgstr "Microsoft Internet Keyboard Pro, Suedeze"
+
+#: xfree86.xml.in.h:210
+msgid "Microsoft Natural"
+msgstr "Microsoft Natural"
+
+#: xfree86.xml.in.h:211
+msgid "Microsoft Natural Keyboard Pro / Microsoft Internet Keyboard Pro"
+msgstr "Microsoft Natural Keyboard Pro / Microsoft Internet Keyboard Pro"
+
+#: xfree86.xml.in.h:212
+msgid "Microsoft Natural Keyboard Pro OEM"
+msgstr "Microsoft Natural Keyboard Pro OEM"
+
+#: xfree86.xml.in.h:213
+msgid "Microsoft Office Keyboard"
+msgstr "Tastierë Microsoft Office"
+
+#: xfree86.xml.in.h:214
+msgid "Miscellaneous compatibility options"
+msgstr "Opcione të ndryshme kompatibiliteti"
+
+#: xfree86.xml.in.h:215
+msgid "Mkd"
+msgstr "Mkd"
+
+#: xfree86.xml.in.h:216
+msgid "Mlt"
+msgstr "Mlt"
+
+#: xfree86.xml.in.h:217
+msgid "Mmr"
+msgstr "Mmr"
+
+#: xfree86.xml.in.h:218
+msgid "Mng"
+msgstr "Mng"
+
+#: xfree86.xml.in.h:219
+msgid "Mongolian"
+msgstr "Mongoliane"
+
+#: xfree86.xml.in.h:220
+msgid "Nld"
+msgstr "Nld"
+
+#: xfree86.xml.in.h:221
+msgid "Nor"
+msgstr "Nor"
+
+#: xfree86.xml.in.h:222
+msgid "Northern Saami (Finland)"
+msgstr "Northern Saami (Finlandeze)"
+
+#: xfree86.xml.in.h:223
+msgid "Northern Saami (Norway)"
+msgstr "Northern Saami (Norvegjeze)"
+
+#: xfree86.xml.in.h:224
+msgid "Northern Saami (Sweden)"
+msgstr "Northern Saami (Suedeze)"
+
+#: xfree86.xml.in.h:225
+msgid "Northgate OmniKey 101"
+msgstr "Northgate OmniKey 101"
+
+#: xfree86.xml.in.h:226
+msgid "Norwegian"
+msgstr "Norvegjeze"
+
+#: xfree86.xml.in.h:227
+msgid "Num_Lock LED shows alternative group"
+msgstr "Llampa e Num_Lock tregon grupin alternativ"
+
+#: xfree86.xml.in.h:228
+msgid "Ogh"
+msgstr "Ogh"
+
+#: xfree86.xml.in.h:229
+msgid "Ogham"
+msgstr "Ogham"
+
+#: xfree86.xml.in.h:230
+msgid "Oretec MCK-800 MM/Internet keyboard"
+msgstr "Tastierë Oretec MCK-800 MM/Internet"
+
+#: xfree86.xml.in.h:231
+msgid "Ori"
+msgstr "Ori"
+
+#: xfree86.xml.in.h:232
+msgid "Oriya"
+msgstr "Oriya"
+
+#: xfree86.xml.in.h:233
+msgid "PC-98xx Series"
+msgstr "Seritë PC-98xx"
+
+#: xfree86.xml.in.h:234
+msgid "PC104"
+msgstr "PC104"
+
+#: xfree86.xml.in.h:235
+msgid "Pan"
+msgstr "Pan"
+
+#: xfree86.xml.in.h:236
+msgid "Phonetic"
+msgstr "Phonetic"
+
+#: xfree86.xml.in.h:237
+msgid "Pol"
+msgstr "Pol"
+
+#: xfree86.xml.in.h:238
+msgid "Polish"
+msgstr "Polonisht"
+
+#: xfree86.xml.in.h:239
+msgid "Polish (qwertz)"
+msgstr "Polake (qwertz)"
+
+#: xfree86.xml.in.h:240
+msgid "Polytonic"
+msgstr "Polytonic"
+
+#: xfree86.xml.in.h:241
+msgid "Portuguese"
+msgstr "Portugeze"
+
+#: xfree86.xml.in.h:242
+msgid "PowerPC PS/2"
+msgstr "PowerPC PS/2"
+
+#: xfree86.xml.in.h:243
+msgid "Press Left Win-key to choose 3rd level"
+msgstr "Shtyp pulsantin e majtë Win për të zgjedhur nivelin e tretë"
+
+#: xfree86.xml.in.h:244
+msgid "Press Menu key to choose 3rd level"
+msgstr "Shtyp pulsantin Menu për të zgjedhur nivelin e tretë"
+
+#: xfree86.xml.in.h:245
+msgid "Press Right Control to choose 3rd level"
+msgstr "Shtyp pulsantin e djathtë Control për të zgjedhur nivelin e tretë"
+
+#: xfree86.xml.in.h:246
+msgid "Press Right Win-key to choose 3rd level"
+msgstr "Shtyp pulsantin e djathtë Win për të zgjedhur nivelin e tretë"
+
+#: xfree86.xml.in.h:247
+msgid "Press any of Win-keys to choose 3rd level"
+msgstr "Shtyp çfarëdo pulsanti Win për të zgjedhur nivelin e tretë"
+
+#: xfree86.xml.in.h:248
+msgid "Propeller Voyager (KTEZ-1000)"
+msgstr "Propeller Voyager (KTEZ-1000)"
+
+#: xfree86.xml.in.h:249
+msgid "Prt"
+msgstr "Prt"
+
+#: xfree86.xml.in.h:250
+msgid "QTronix Scorpius 98N+"
+msgstr "QTronix Scorpius 98N+"
+
+#: xfree86.xml.in.h:251
+msgid "R-Alt switches group while pressed"
+msgstr "D-Alt ndryshon grupin kur është i shtypur"
+
+#: xfree86.xml.in.h:252
+msgid "Right Alt is Compose"
+msgstr "Alt i djathtë u krijua"
+
+#: xfree86.xml.in.h:253
+msgid "Right Alt key changes group"
+msgstr "Pulsanti i djathtë Alt ndryshon grupin"
+
+#: xfree86.xml.in.h:254
+msgid "Right Control key works as Right Alt"
+msgstr "Pulsanti i djathtë Control punon si Alt i djathtë"
+
+#: xfree86.xml.in.h:255
+msgid "Right Ctrl key changes group"
+msgstr "Pulsanti i djathtë Ctrl ndryshon grupin"
+
+#: xfree86.xml.in.h:256
+msgid "Right Shift key changes group"
+msgstr "Pulsanti i djathtë Shift ndryshon grupin"
+
+#: xfree86.xml.in.h:257
+msgid "Right Win-key changes group"
+msgstr "Pulsanti i djathtë Win ndryshon grupin"
+
+#: xfree86.xml.in.h:258
+msgid "Right Win-key is Compose"
+msgstr "Pulsanti Win i djathtë u krijua"
+
+#: xfree86.xml.in.h:259
+msgid "Right Win-key switches group while pressed"
+msgstr "Pulsanti i djathtë Win ndryshon grupin kur është i shtypur"
+
+#: xfree86.xml.in.h:260
+msgid "Romanian"
+msgstr "Rumanisht"
+
+#: xfree86.xml.in.h:261
+msgid "Rou"
+msgstr "Rou"
+
+#: xfree86.xml.in.h:262
+msgid "Rus"
+msgstr "Rus"
+
+#: xfree86.xml.in.h:263
+msgid "Russian"
+msgstr "Rusisht"
+
+#: xfree86.xml.in.h:264
+msgid "SK-1300"
+msgstr "SK-1300"
+
+#: xfree86.xml.in.h:265
+msgid "SK-2500"
+msgstr "SK-2500"
+
+#: xfree86.xml.in.h:266
+msgid "SK-6200"
+msgstr "SK-6200"
+
+#: xfree86.xml.in.h:267
+msgid "SK-7100"
+msgstr "SK-7100"
+
+#: xfree86.xml.in.h:268
+msgid "SVEN Ergonomic 2500"
+msgstr "SVEN Ergonomic 2500"
+
+#: xfree86.xml.in.h:269
+msgid "Samsung SDM 4500P"
+msgstr "Samsung SDM 4500P"
+
+#: xfree86.xml.in.h:270
+msgid "Samsung SDM 4510P"
+msgstr "Samsung SDM 4510P"
+
+#: xfree86.xml.in.h:271
+msgid "Sapmi"
+msgstr "Sapmi"
+
+#: xfree86.xml.in.h:272
+msgid "Scg"
+msgstr "Scg"
+
+#: xfree86.xml.in.h:273
+msgid "Scroll_Lock LED shows alternative group"
+msgstr "Llampa e Scroll_Lock tregon grupin alternativ"
+
+#: xfree86.xml.in.h:274
+msgid "Serbian"
+msgstr "Sërbisht"
+
+#: xfree86.xml.in.h:275
+msgid "Shift with numpad keys works as in MS Windows"
+msgstr "Shift së bashku me pulsantin numpad funksionon si tek MS Windows"
+
+#: xfree86.xml.in.h:276
+msgid "Slovak"
+msgstr "Sllovake"
+
+#: xfree86.xml.in.h:277
+msgid "Slovak (qwerty)"
+msgstr "Sllovake (qwerty)"
+
+#: xfree86.xml.in.h:278
+msgid "Slovenian"
+msgstr "Sllovene"
+
+#: xfree86.xml.in.h:279
+msgid "Sme"
+msgstr "Sme"
+
+#: xfree86.xml.in.h:280
+msgid "Spanish"
+msgstr "Spanjisht"
+
+#: xfree86.xml.in.h:281
+msgid "Special keys (Ctrl+Alt+&lt;key&gt;) handled in a server."
+msgstr "Çelsa specialë (Ctrl+Alt+&lt;çelsi&gt;) të manazhuar në një server."
+
+#: xfree86.xml.in.h:282
+msgid "Standard"
+msgstr "Standart"
+
+#: xfree86.xml.in.h:283
+msgid "Sun dead keys"
+msgstr "Pulsantë të vdekur Sun"
+
+#: xfree86.xml.in.h:284
+msgid "Super is mapped to the Win-keys (default)."
+msgstr "Super është vendosur tek pulsantët Win (e prezgjedhur)."
+
+#: xfree86.xml.in.h:285
+msgid "Sv"
+msgstr "Sv"
+
+#: xfree86.xml.in.h:286
+msgid "Svk"
+msgstr "Svk"
+
+#: xfree86.xml.in.h:287
+msgid "Svn"
+msgstr "Svn"
+
+#: xfree86.xml.in.h:288
+msgid "Swap Control and Caps Lock"
+msgstr "Shkëmbyesi Control dhe Caps Lock"
+
+#: xfree86.xml.in.h:289
+msgid "Swe"
+msgstr "Swe"
+
+#: xfree86.xml.in.h:290
+msgid "Swedish"
+msgstr "Suedisht"
+
+#: xfree86.xml.in.h:291
+msgid "Swiss French"
+msgstr "Frengjisht e Zvicrës"
+
+#: xfree86.xml.in.h:292
+msgid "Swiss German"
+msgstr "Gjermenishte e Zvicrës"
+
+#: xfree86.xml.in.h:293
+msgid "Symplon PaceBook (tablet PC)"
+msgstr "Symplon PaceBook (tablet PC)"
+
+#: xfree86.xml.in.h:294
+msgid "Syr"
+msgstr "Syr"
+
+#: xfree86.xml.in.h:295
+msgid "Syriac"
+msgstr "Siriane"
+
+#: xfree86.xml.in.h:296
+msgid "Tajik"
+msgstr "Tajik"
+
+#: xfree86.xml.in.h:297
+msgid "Tamil"
+msgstr "Tamil"
+
+#: xfree86.xml.in.h:298
+msgid "Tel"
+msgstr "Tel"
+
+#: xfree86.xml.in.h:299
+msgid "Telugu"
+msgstr "Telugu"
+
+#: xfree86.xml.in.h:300
+msgid "Tha"
+msgstr "Tha"
+
+#: xfree86.xml.in.h:301
+msgid "Thai (Kedmanee)"
+msgstr "Thai (Kedmanee)"
+
+#: xfree86.xml.in.h:302
+msgid "Thai (Pattachote)"
+msgstr "Thai (Pattachote)"
+
+#: xfree86.xml.in.h:303
+msgid "Thai (TIS-820.2538)"
+msgstr "Thai (TIS-820.2538)"
+
+#: xfree86.xml.in.h:304
+msgid "Third level choosers"
+msgstr "Zgjedhësit e nivelit të tretë"
+
+#: xfree86.xml.in.h:305
+msgid "Tjk"
+msgstr "Tjk"
+
+#: xfree86.xml.in.h:306
+msgid "Tml"
+msgstr "Tml"
+
+#: xfree86.xml.in.h:307
+msgid "Toshiba Satellite S3000"
+msgstr "Toshiba Satellite S3000"
+
+#: xfree86.xml.in.h:308
+msgid "Trust Direct Access Keyboard"
+msgstr "Tastierë Trust Direct Access"
+
+#: xfree86.xml.in.h:309
+msgid "Trust Wireless Keyboard Classic"
+msgstr "Tastierë klasike Trust Wireless"
+
+#: xfree86.xml.in.h:310
+msgid "Tur"
+msgstr "Tur"
+
+#: xfree86.xml.in.h:311
+msgid "Turkish"
+msgstr "Turqisht"
+
+#: xfree86.xml.in.h:312
+msgid "Turkish (F)"
+msgstr "Turke (F)"
+
+#: xfree86.xml.in.h:313
+msgid "Turkish Alt-Q Layout"
+msgstr "Planimetria Alt-Q Turke"
+
+#: xfree86.xml.in.h:314
+msgid "U.S. English"
+msgstr "U.S. Anglisht"
+
+#: xfree86.xml.in.h:315
+msgid "U.S. English w/ ISO9995-3"
+msgstr "U.S. Anglisht w/ ISO9995-3"
+
+#: xfree86.xml.in.h:316
+msgid "U.S. English w/ dead keys"
+msgstr "U.S. Anglisht w/ dead keys"
+
+#: xfree86.xml.in.h:317
+msgid "US"
+msgstr "US"
+
+#: xfree86.xml.in.h:318
+msgid "US keyboard with Romanian letters"
+msgstr "Tastierë US me gërma Romane"
+
+#: xfree86.xml.in.h:319
+msgid "USA"
+msgstr "USA"
+
+#: xfree86.xml.in.h:320
+msgid "Ukr"
+msgstr "Ukr"
+
+#: xfree86.xml.in.h:321
+msgid "Ukrainian"
+msgstr "Ukrahinase"
+
+#: xfree86.xml.in.h:322
+msgid "UnicodeExpert"
+msgstr "EkspertUnicode"
+
+#: xfree86.xml.in.h:323
+msgid "United Kingdom"
+msgstr "Mbretëria e Bashkuar"
+
+#: xfree86.xml.in.h:324
+msgid "Use keyboard LED to show alternative group"
+msgstr "Përdor LED e tastierës për të treguar grupin alternativ"
+
+#: xfree86.xml.in.h:325
+msgid "Uses internal capitalization. Shift cancels Caps."
+msgstr "Përdor gërma të mëdha në brendësi. Shift fshin Caps."
+
+#: xfree86.xml.in.h:326
+msgid "Uses internal capitalization. Shift doesn't cancel Caps."
+msgstr "Përdor gërma të mëdha në brendësi. Shift nuk fshin Caps."
+
+#: xfree86.xml.in.h:327
+msgid "Uzb"
+msgstr "Uzb"
+
+#: xfree86.xml.in.h:328
+msgid "Uzbek"
+msgstr "Uzbek"
+
+#: xfree86.xml.in.h:329
+msgid "Vietnamese"
+msgstr "Vietnamisht"
+
+#: xfree86.xml.in.h:330
+msgid "Vnm"
+msgstr "Vnm"
+
+#: xfree86.xml.in.h:331
+msgid "Winbook Model XP5"
+msgstr "Winbook Model XP5"
+
+#: xfree86.xml.in.h:332
+msgid "Winkeys"
+msgstr "Winkeys"
+
+#: xfree86.xml.in.h:333
+msgid "Yahoo! Internet Keyboard"
+msgstr "Tastierë Yahoo! Internet"
+
+#: xfree86.xml.in.h:334
+msgid "Yug"
+msgstr "Yug"
+
+#: xfree86.xml.in.h:335
+msgid "Yugoslavian"
+msgstr "Yugoslavian"
+
+#: xfree86.xml.in.h:336
+msgid "abnt2"
+msgstr "abnt2"
+
+#: xfree86.xml.in.h:337
+msgid "azerty"
+msgstr "azerty"
+
+#: xfree86.xml.in.h:338
+msgid "azerty/digits"
+msgstr "azerty/digits"
+
+#: xfree86.xml.in.h:339
+msgid "bksl"
+msgstr "bksl"
+
+#: xfree86.xml.in.h:340
+msgid "digits"
+msgstr "numra"
+
+#: xfree86.xml.in.h:341
+msgid "l2/101/qwerty/comma"
+msgstr "l2/101/qwerty/presje"
+
+#: xfree86.xml.in.h:342
+msgid "l2/101/qwerty/dot"
+msgstr "l2/101/qwerty/pikë"
+
+#: xfree86.xml.in.h:343
+msgid "l2/101/qwertz/comma"
+msgstr "l2/101/qwertz/presje"
+
+#: xfree86.xml.in.h:344
+msgid "l2/101/qwertz/dot"
+msgstr "l2/101/qwertz/pikë"
+
+#: xfree86.xml.in.h:345
+msgid "l2/102/qwerty/comma"
+msgstr "l2/102/qwerty/presje"
+
+#: xfree86.xml.in.h:346
+msgid "l2/102/qwerty/dot"
+msgstr "l2/102/qwerty/pikë"
+
+#: xfree86.xml.in.h:347
+msgid "l2/102/qwertz/comma"
+msgstr "l2/102/qwertz/presje"
+
+#: xfree86.xml.in.h:348
+msgid "l2/102/qwertz/dot"
+msgstr "l2/102/qwertz/pikë"
+
+#: xfree86.xml.in.h:349
+msgid "laptop"
+msgstr "laptop"
+
+#: xfree86.xml.in.h:350
+msgid "lyx"
+msgstr "lyx"
+
+#: xfree86.xml.in.h:351
+msgid "qwerty"
+msgstr "qwerty"
+
+#: xfree86.xml.in.h:352
+msgid "qwerty/digits"
+msgstr "qwerty/numra"
+
+#: xfree86.xml.in.h:353
+msgid "sefi"
+msgstr "sefi"
+
+#: xfree86.xml.in.h:354
+msgid "si1452"
+msgstr "si1452"
+
+#: xfree86.xml.in.h:355
+msgid "uni/101/qwerty/comma"
+msgstr "uni/101/qwerty/presje"
+
+#: xfree86.xml.in.h:356
+msgid "uni/101/qwerty/dot"
+msgstr "uni/101/qwerty/pikë"
+
+#: xfree86.xml.in.h:357
+msgid "uni/101/qwertz/comma"
+msgstr "uni/101/qwertz/presje"
+
+#: xfree86.xml.in.h:358
+msgid "uni/101/qwertz/dot"
+msgstr "uni/101/qwertz/pikë"
+
+#: xfree86.xml.in.h:359
+msgid "uni/102/qwerty/comma"
+msgstr "uni/102/qwerty/presje"
+
+#: xfree86.xml.in.h:360
+msgid "uni/102/qwerty/dot"
+msgstr "uni/102/qwerty/pikë"
+
+#: xfree86.xml.in.h:361
+msgid "uni/102/qwertz/comma"
+msgstr "uni/102/qwertz/presje"
+
+#: xfree86.xml.in.h:362
+msgid "uni/102/qwertz/dot"
+msgstr "uni/102/qwertz/pikë"
+
diff --git a/xorg-server/xkeyboard-config/po/sr.po b/xorg-server/xkeyboard-config/po/sr.po
index 2e9b2a874..d4ed4a5f3 100644
--- a/xorg-server/xkeyboard-config/po/sr.po
+++ b/xorg-server/xkeyboard-config/po/sr.po
@@ -1,2066 +1,2066 @@
-# Serbian translation of xfree_xkb_xml-4.4pre1
-# Copyright (C) 2003, 2004, 2005 Free Software Foundation, Inc.
-# Danilo Segan <dsegan@gmx.net>, 2003, 2004, 2005.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: xfree86_xkb_xml 4.4pre1\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2006-03-02 19:07+0100\n"
-"PO-Revision-Date: 2006-03-02 19:14+0100\n"
-"Last-Translator: Danilo Segan <dsegan@gmx.net>\n"
-"Language-Team: Serbian <sr@li.org>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-#: ../rules/base.xml.in.h:1
-msgid "(F)"
-msgstr "(F)"
-
-#: ../rules/base.xml.in.h:2
-msgid "101/qwerty/comma/Dead keys"
-msgstr "101/qwerty/запета/акценти"
-
-#: ../rules/base.xml.in.h:3
-msgid "101/qwerty/comma/Eliminate dead keys"
-msgstr "101/qwerty/запета/без акцената"
-
-#: ../rules/base.xml.in.h:4
-msgid "101/qwerty/dot/Dead keys"
-msgstr "101/qwerty/тачка/акценти"
-
-#: ../rules/base.xml.in.h:5
-msgid "101/qwerty/dot/Eliminate dead keys"
-msgstr "101/qwerty/тачка/без акцената"
-
-#: ../rules/base.xml.in.h:6
-msgid "101/qwertz/comma/Dead keys"
-msgstr "101/qwertz/запета/акценти"
-
-#: ../rules/base.xml.in.h:7
-msgid "101/qwertz/comma/Eliminate dead keys"
-msgstr "101/qwertz/запета/без акцената"
-
-#: ../rules/base.xml.in.h:8
-msgid "101/qwertz/dot/Dead keys"
-msgstr "101/qwertz/тачка/акценти"
-
-#: ../rules/base.xml.in.h:9
-msgid "101/qwertz/dot/Eliminate dead keys"
-msgstr "101/qwertz/тачка/без акцената"
-
-#: ../rules/base.xml.in.h:10
-msgid "102/qwerty/comma/Dead keys"
-msgstr "102/qwerty/запета/акценти"
-
-#: ../rules/base.xml.in.h:11
-msgid "102/qwerty/comma/Eliminate dead keys"
-msgstr "102/qwerty/запета/без акцената"
-
-#: ../rules/base.xml.in.h:12
-msgid "102/qwerty/dot/Dead keys"
-msgstr "102/qwerty/тачка/акценти"
-
-#: ../rules/base.xml.in.h:13
-msgid "102/qwerty/dot/Eliminate dead keys"
-msgstr "102/qwerty/тачка/без акцената"
-
-#: ../rules/base.xml.in.h:14
-msgid "102/qwertz/comma/Dead keys"
-msgstr "102/qwertz/запета/акценти"
-
-#: ../rules/base.xml.in.h:15
-msgid "102/qwertz/comma/Eliminate dead keys"
-msgstr "102/qwertz/запета/без акцената"
-
-#: ../rules/base.xml.in.h:16
-msgid "102/qwertz/dot/Dead keys"
-msgstr "102/qwertz/тачка/акценти"
-
-#: ../rules/base.xml.in.h:17
-msgid "102/qwertz/dot/Eliminate dead keys"
-msgstr "102/qwertz/тачка/без акцената"
-
-#: ../rules/base.xml.in.h:18
-msgid "A4Tech KB-21"
-msgstr "A4Tech KB-21"
-
-#: ../rules/base.xml.in.h:19
-msgid "A4Tech KBS-8"
-msgstr "A4Tech KBS-8"
-
-#: ../rules/base.xml.in.h:20
-msgid "ACPI Standard"
-msgstr "ACPI Ñтандард"
-
-#: ../rules/base.xml.in.h:21
-msgid "Acer AirKey V"
-msgstr "Acer AirKey V"
-
-#: ../rules/base.xml.in.h:22
-msgid "Acer TravelMate 800"
-msgstr "Acer TravelMate 800"
-
-#: ../rules/base.xml.in.h:23
-msgid "Add the EuroSign to the 2 key."
-msgstr "Додај знак за евро на таÑтер 2."
-
-#: ../rules/base.xml.in.h:24
-msgid "Add the EuroSign to the 5 key."
-msgstr "Додај знак за евро на таÑтер 5."
-
-#: ../rules/base.xml.in.h:25
-msgid "Add the EuroSign to the E key."
-msgstr "Додај знак за евро на таÑтер E."
-
-#: ../rules/base.xml.in.h:26
-msgid "Add the standard behavior to Menu key."
-msgstr "Додај обично понашање Menu таÑтеру."
-
-#: ../rules/base.xml.in.h:27
-msgid "Adding the EuroSign to certain keys"
-msgstr "Додавање знака за евро одређеним таÑтерима"
-
-#
-#: ../rules/base.xml.in.h:28
-msgid "Advance Scorpius KI"
-msgstr "Ðапредни Шкорпион КИ"
-
-#: ../rules/base.xml.in.h:29
-msgid "Afg"
-msgstr "афг"
-
-#: ../rules/base.xml.in.h:30
-msgid "Afghanistan"
-msgstr "ÐфганиÑтан"
-
-#: ../rules/base.xml.in.h:31
-msgid "Akan"
-msgstr "акан"
-
-#: ../rules/base.xml.in.h:32
-msgid "Alb"
-msgstr "алб"
-
-#: ../rules/base.xml.in.h:33
-msgid "Albania"
-msgstr "Ðлбанија"
-
-#: ../rules/base.xml.in.h:34
-msgid "Alt and Meta are on the Alt keys (default)."
-msgstr "Alt и Meta Ñу на Alt таÑтерима (подразумевано)."
-
-#: ../rules/base.xml.in.h:35
-msgid "Alt is mapped to the right Win-key and Super to Menu."
-msgstr "Alt је мапиран на деÑни Windows таÑтер, а Super на Menu."
-
-#: ../rules/base.xml.in.h:36
-msgid "Alt+Ctrl changes group."
-msgstr "Alt+Ctrl мења групу."
-
-#: ../rules/base.xml.in.h:37
-msgid "Alt+Shift changes group."
-msgstr "Alt+Shift мења групу."
-
-#: ../rules/base.xml.in.h:38
-msgid "Alt-Q"
-msgstr "Alt-Q"
-
-#: ../rules/base.xml.in.h:39
-msgid "Alt/Win key behavior"
-msgstr "Понашање Alt/Win таÑтера"
-
-# Ðаизменично?
-#: ../rules/base.xml.in.h:40
-msgid "Alternative"
-msgstr "ДопунÑка"
-
-#: ../rules/base.xml.in.h:41
-msgid "Alternative international (former us_intl)"
-msgstr "ДопунÑка међународна (бивша us_intl)"
-
-#: ../rules/base.xml.in.h:42
-msgid "Alternative, Sun dead keys"
-msgstr "ДопунÑка, Sun-ови акценти"
-
-#: ../rules/base.xml.in.h:43
-msgid "Alternative, eliminate dead keys"
-msgstr "ДопунÑка, без акцената"
-
-#: ../rules/base.xml.in.h:44
-msgid "And"
-msgstr "анд"
-
-#: ../rules/base.xml.in.h:45
-msgid "Andorra"
-msgstr "Ðндора"
-
-#: ../rules/base.xml.in.h:46
-msgid "Apostrophe (') variant"
-msgstr "Варијанта Ñа апоÑтрофом (')"
-
-#: ../rules/base.xml.in.h:47
-msgid "Ara"
-msgstr "ара"
-
-#: ../rules/base.xml.in.h:48
-msgid "Arabic"
-msgstr "арапÑки"
-
-#: ../rules/base.xml.in.h:49
-msgid "Arm"
-msgstr "јрм"
-
-#: ../rules/base.xml.in.h:50
-msgid "Armenia"
-msgstr "Јерменија"
-
-#: ../rules/base.xml.in.h:51
-msgid "Aze"
-msgstr "азб"
-
-#: ../rules/base.xml.in.h:52
-msgid "Azerbaijan"
-msgstr "Ðзербејџан"
-
-#: ../rules/base.xml.in.h:53
-msgid "Azona RF2300 wireless Internet Keyboard"
-msgstr "Azona RF2300 бежична Интернет таÑтатура"
-
-#: ../rules/base.xml.in.h:54
-msgid "BTC 5090"
-msgstr "BTC 5090"
-
-#: ../rules/base.xml.in.h:55
-msgid "BTC 5113RF Multimedia"
-msgstr "BTC 5113RF мултимедијална"
-
-#: ../rules/base.xml.in.h:56
-msgid "BTC 5126T"
-msgstr "BTC 5126T"
-
-#: ../rules/base.xml.in.h:57
-msgid "BTC 9000"
-msgstr "BTC 9000"
-
-#: ../rules/base.xml.in.h:58
-msgid "BTC 9000A"
-msgstr "BTC 9000A"
-
-#: ../rules/base.xml.in.h:59
-msgid "BTC 9001AH"
-msgstr "BTC 9001AH"
-
-#: ../rules/base.xml.in.h:60
-msgid "Ban"
-msgstr "бан"
-
-#: ../rules/base.xml.in.h:61
-msgid "Bangladesh"
-msgstr "Бангладеш"
-
-#: ../rules/base.xml.in.h:62
-msgid "Bel"
-msgstr "блг"
-
-#: ../rules/base.xml.in.h:63
-msgid "Belarus"
-msgstr "БелоруÑија"
-
-#: ../rules/base.xml.in.h:64
-msgid "Belgium"
-msgstr "Белгија"
-
-#: ../rules/base.xml.in.h:65
-msgid "Bengali"
-msgstr "бенгалÑки"
-
-#: ../rules/base.xml.in.h:66
-msgid "Bengali Probhat"
-msgstr "бенгалÑки пробат"
-
-#: ../rules/base.xml.in.h:67
-msgid "Bgr"
-msgstr "буг"
-
-#: ../rules/base.xml.in.h:68
-msgid "Bhu"
-msgstr "бут"
-
-#: ../rules/base.xml.in.h:69
-msgid "Bhutan"
-msgstr "Бутан"
-
-#: ../rules/base.xml.in.h:70
-msgid "Bih"
-msgstr "бих"
-
-#: ../rules/base.xml.in.h:71
-msgid "Blr"
-msgstr "блр"
-
-#: ../rules/base.xml.in.h:72
-msgid "Bosnia and Herzegovina"
-msgstr "БоÑна и Херцеговина"
-
-#: ../rules/base.xml.in.h:73
-msgid "Both Alt keys together change group."
-msgstr "Оба Alt таÑтера мењају групу."
-
-#: ../rules/base.xml.in.h:74
-msgid "Both Ctrl keys together change group."
-msgstr "Оба Ctrl таÑтера мењају групу."
-
-#: ../rules/base.xml.in.h:75
-msgid "Both Shift keys together change group."
-msgstr "Оба Shift таÑтера мењају групу."
-
-#: ../rules/base.xml.in.h:76
-msgid "Both Win-keys switch group while pressed."
-msgstr "Оба Win-таÑтера мењају групу када Ñу притиÑнути."
-
-#: ../rules/base.xml.in.h:77
-msgid "Bra"
-msgstr "бра"
-
-#: ../rules/base.xml.in.h:78
-msgid "Brazil"
-msgstr "Бразил"
-
-#: ../rules/base.xml.in.h:79
-msgid "Brazilian ABNT2"
-msgstr "бразилÑка ABNT2"
-
-#: ../rules/base.xml.in.h:80
-msgid "Brother Internet Keyboard"
-msgstr "Brother Интернет таÑтатура"
-
-#: ../rules/base.xml.in.h:81
-msgid "Bulgaria"
-msgstr "БугарÑка"
-
-#: ../rules/base.xml.in.h:82
-msgid "Cambodia"
-msgstr "Камбоџа"
-
-#: ../rules/base.xml.in.h:83
-msgid "Can"
-msgstr "кан"
-
-#: ../rules/base.xml.in.h:84
-msgid "Canada"
-msgstr "Канада"
-
-#: ../rules/base.xml.in.h:85
-msgid "Caps Lock is Compose."
-msgstr "Caps Lock је комбинујући таÑтер."
-
-#: ../rules/base.xml.in.h:86
-msgid "CapsLock LED shows alternative group."
-msgstr "Лампица за Caps Lock показује измењивање групе."
-
-#: ../rules/base.xml.in.h:87
-msgid "CapsLock acts as Shift with locking. Shift cancels CapsLock."
-msgstr "CapsLock Ñе понаша као трајни Shift. Shift укида Caps."
-
-#: ../rules/base.xml.in.h:88
-msgid "CapsLock acts as Shift with locking. Shift doesn't cancel CapsLock."
-msgstr "CapsLock Ñе понаша као трајни Shift. Shift не укида Caps."
-
-#: ../rules/base.xml.in.h:89
-msgid "CapsLock just locks the Shift modifier."
-msgstr "CapsLock проÑто трајно укључује Shift."
-
-#: ../rules/base.xml.in.h:90
-msgid "CapsLock key behavior"
-msgstr "Понашање Caps Lock таÑтера"
-
-#: ../rules/base.xml.in.h:91
-msgid "CapsLock key changes group."
-msgstr "Caps Lock таÑтер мења групу."
-
-#: ../rules/base.xml.in.h:92
-msgid "CapsLock toggles Shift so all keys are affected."
-msgstr "CapsLock мења Shift Ñтање па делује на Ñве таÑтере."
-
-#: ../rules/base.xml.in.h:93
-msgid "CapsLock toggles normal capitalization of alphabetic characters."
-msgstr "CapsLock мења обичну величину Ñлова."
-
-#: ../rules/base.xml.in.h:94
-msgid "CapsLock uses internal capitalization. Shift cancels CapsLock."
-msgstr "CapsLock кориÑти унутрашњу величину Ñлова. Shift укида Caps Lock."
-
-#: ../rules/base.xml.in.h:95
-msgid "CapsLock uses internal capitalization. Shift doesn't cancel CapsLock."
-msgstr "CapsLock кориÑти унутрашњу величину Ñлова. Shift не укида Caps Lock."
-
-#: ../rules/base.xml.in.h:96
-msgid "Catalan variant with middle-dot L"
-msgstr "каталонÑка варијанта Ñа L и Ñредњом тачком"
-
-#: ../rules/base.xml.in.h:97
-msgid "Che"
-msgstr "швц"
-
-#: ../rules/base.xml.in.h:98
-msgid "Cherry Blue Line CyBo@rd"
-msgstr "Cherry Blue Line CyBo@rd"
-
-#: ../rules/base.xml.in.h:99
-msgid "Cherry Blue Line CyBo@rd (alternate option)"
-msgstr "Cherry Blue Line CyBo@rd (друга могућноÑÑ‚)"
-
-#: ../rules/base.xml.in.h:100
-msgid "Cherry CyBo@rd USB-Hub"
-msgstr "Cherry CyBo@rd USB-Hub"
-
-#: ../rules/base.xml.in.h:101
-msgid "Cherry CyMotion Master Linux"
-msgstr "Cherry CyMotion Master Linux"
-
-#: ../rules/base.xml.in.h:102
-msgid "Chicony Internet Keyboard"
-msgstr "Chicony Интернет таÑтатура"
-
-#: ../rules/base.xml.in.h:103
-msgid "Chicony KB-9885"
-msgstr "Chicony KB-9885"
-
-#: ../rules/base.xml.in.h:104
-msgid "CloGaelach"
-msgstr "CloGaelach"
-
-#: ../rules/base.xml.in.h:105
-msgid "Compaq Easy Access Keyboard"
-msgstr "Compaq таÑтатура за лак приÑтуп"
-
-#: ../rules/base.xml.in.h:106
-msgid "Compaq Internet Keyboard (13 keys)"
-msgstr "Compaq Интернет таÑтатура (13 таÑтера)"
-
-#: ../rules/base.xml.in.h:107
-msgid "Compaq Internet Keyboard (18 keys)"
-msgstr "Compaq Интернет таÑтатура (18 таÑтера)"
-
-#: ../rules/base.xml.in.h:108
-msgid "Compaq Internet Keyboard (7 keys)"
-msgstr "Compaq Интернет таÑтатура (7 таÑтера)"
-
-#: ../rules/base.xml.in.h:109
-msgid "Compaq iPaq Keyboard"
-msgstr "Compaq iPaq таÑтатура"
-
-#: ../rules/base.xml.in.h:110
-msgid "Compose key position"
-msgstr "Положај таÑтера Compose"
-
-#: ../rules/base.xml.in.h:111
-msgid "Croatia"
-msgstr "ХрватÑка"
-
-#: ../rules/base.xml.in.h:112
-msgid "Ctrl key at bottom left"
-msgstr "ТаÑтер Ctrl је у дну лево"
-
-#: ../rules/base.xml.in.h:113
-msgid "Ctrl key at left of 'A'"
-msgstr "ТаÑтер Ctrl је у лево од „Ð“"
-
-#: ../rules/base.xml.in.h:114
-msgid "Ctrl key position"
-msgstr "Положај таÑтера Ctrl"
-
-#: ../rules/base.xml.in.h:115
-msgid "Ctrl+Shift changes group."
-msgstr "Ctrl+Shift мења групу."
-
-#: ../rules/base.xml.in.h:116
-msgid "Cyrillic"
-msgstr "ћирилични"
-
-#: ../rules/base.xml.in.h:117
-msgid "Cze"
-msgstr "чеш"
-
-#: ../rules/base.xml.in.h:118
-msgid "Czechia"
-msgstr "Чешка"
-
-#: ../rules/base.xml.in.h:119
-msgid "DTK2000"
-msgstr "DTK2000"
-
-#: ../rules/base.xml.in.h:120
-msgid "Dead acute"
-msgstr "ÐкутÑки акценат"
-
-#: ../rules/base.xml.in.h:121
-msgid "Dead grave acute"
-msgstr "Ð“Ñ€Ð°Ð²Ð¸Ñ Ð°ÐºÑƒÑ‚Ñки акценат"
-
-#: ../rules/base.xml.in.h:122
-msgid "Dell"
-msgstr "Dell"
-
-#: ../rules/base.xml.in.h:123
-msgid "Dell 101-key PC"
-msgstr "Dell 101-таÑтер PC"
-
-#: ../rules/base.xml.in.h:124
-msgid "Dell USB Multimedia Keybard"
-msgstr "Dell USB мултимедијална таÑтатура"
-
-#: ../rules/base.xml.in.h:125
-msgid "Denmark"
-msgstr "ДанÑка"
-
-#: ../rules/base.xml.in.h:126
-msgid "Deu"
-msgstr "нем"
-
-#: ../rules/base.xml.in.h:127
-msgid "Dexxa Wireless Desktop Keyboard"
-msgstr "Dexxa бежична таÑтатура"
-
-#: ../rules/base.xml.in.h:128
-msgid "Diamond 9801 / 9802 series"
-msgstr "Diamond 9801 / 9802 Ñерија"
-
-#: ../rules/base.xml.in.h:129
-msgid "Dnk"
-msgstr "дан"
-
-#: ../rules/base.xml.in.h:130
-msgid "Dvorak"
-msgstr "дворак"
-
-#: ../rules/base.xml.in.h:131
-msgid "Dvorak, Polish quotes on key \"1/!\""
-msgstr "дворак, пољÑки наводници на таÑтеру „1/!“"
-
-#: ../rules/base.xml.in.h:132
-msgid "Dvorak, Polish quotes on quotemark key"
-msgstr "дворак, пољÑки наводници на таÑтеру наводника"
-
-#: ../rules/base.xml.in.h:133
-msgid "Eliminate dead keys"
-msgstr "Уклони акценте"
-
-#: ../rules/base.xml.in.h:134
-msgid "Ennyah DKB-1008"
-msgstr "Ennyah DKB-1008"
-
-#: ../rules/base.xml.in.h:135
-msgid "Epo"
-msgstr "еÑп"
-
-#: ../rules/base.xml.in.h:136
-msgid "Esp"
-msgstr "шпа"
-
-#: ../rules/base.xml.in.h:137
-msgid "Esperanto"
-msgstr "еÑперанто"
-
-#: ../rules/base.xml.in.h:138
-msgid "Est"
-msgstr "еÑÑ‚"
-
-#: ../rules/base.xml.in.h:139
-msgid "Estonia"
-msgstr "ЕÑтонија"
-
-#: ../rules/base.xml.in.h:140
-msgid "Everex STEPnote"
-msgstr "Everex STEPnote"
-
-#: ../rules/base.xml.in.h:141
-msgid "Ewe"
-msgstr "Еве"
-
-#: ../rules/base.xml.in.h:142
-msgid "Extended"
-msgstr "Проширено"
-
-#: ../rules/base.xml.in.h:143
-msgid "Extended Backslash"
-msgstr "Проширено уз обрнуту коÑу црту"
-
-#: ../rules/base.xml.in.h:144
-msgid "F-letter (F) variant"
-msgstr "Варијанта Ñа F-Ñловом (F)"
-
-#: ../rules/base.xml.in.h:145
-msgid "Fao"
-msgstr "фар"
-
-#: ../rules/base.xml.in.h:146
-msgid "Faroe Islands"
-msgstr "ФарÑка оÑтрва"
-
-#: ../rules/base.xml.in.h:147
-msgid "Fin"
-msgstr "фин"
-
-#: ../rules/base.xml.in.h:148
-msgid "Finland"
-msgstr "ФинÑка"
-
-#: ../rules/base.xml.in.h:149
-msgid "Fra"
-msgstr "фра"
-
-#: ../rules/base.xml.in.h:150
-msgid "France"
-msgstr "ФранцуÑка"
-
-#: ../rules/base.xml.in.h:151
-msgid "French"
-msgstr "француÑки"
-
-#: ../rules/base.xml.in.h:152
-msgid "French (legacy)"
-msgstr "француÑки (клаÑични)"
-
-#: ../rules/base.xml.in.h:153
-msgid "French Dvorak"
-msgstr "француÑки дворак"
-
-#: ../rules/base.xml.in.h:154
-msgid "French, Sun dead keys"
-msgstr "француÑки, Sun-ови акценти"
-
-#: ../rules/base.xml.in.h:155
-msgid "French, eliminate dead keys"
-msgstr "ФранцуÑки, без акцената"
-
-#: ../rules/base.xml.in.h:156
-msgid "Fula"
-msgstr "Фула"
-
-#: ../rules/base.xml.in.h:157
-msgid "GBr"
-msgstr "вбр"
-
-#: ../rules/base.xml.in.h:158
-msgid "Ga"
-msgstr "Га"
-
-#: ../rules/base.xml.in.h:159
-msgid "Generic 101-key PC"
-msgstr "Обична Ñа 101 таÑтером"
-
-#: ../rules/base.xml.in.h:160
-msgid "Generic 102-key (Intl) PC"
-msgstr "Обична Ñа 102 таÑтера (међунар.)"
-
-#: ../rules/base.xml.in.h:161
-msgid "Generic 104-key PC"
-msgstr "Обична Ñа 104 таÑтера"
-
-#: ../rules/base.xml.in.h:162
-msgid "Generic 105-key (Intl) PC"
-msgstr "Обична Ñа 105 таÑтера (међунар.)"
-
-#: ../rules/base.xml.in.h:163
-msgid "Genius Comfy KB-12e"
-msgstr "Genius Comfy KB-12e"
-
-#: ../rules/base.xml.in.h:164
-msgid "Genius Comfy KB-16M / Genius MM Keyboard KWD-910"
-msgstr "Genius Comfy KB-16M / Genius ММ таÑтатура KWD-910"
-
-#: ../rules/base.xml.in.h:165
-msgid "Genius Comfy KB-21e-Scroll"
-msgstr "Genius Comfy KB-21e-Scroll"
-
-#: ../rules/base.xml.in.h:166
-msgid "Geo"
-msgstr "гру"
-
-#: ../rules/base.xml.in.h:167
-msgid "Georgia"
-msgstr "Грузија"
-
-#: ../rules/base.xml.in.h:168
-msgid "German, Sun dead keys"
-msgstr "немачки, Sun-ови акценти"
-
-#: ../rules/base.xml.in.h:169
-msgid "German, eliminate dead keys"
-msgstr "немачки, без акцената"
-
-#: ../rules/base.xml.in.h:170
-msgid "Germany"
-msgstr "Ðемачка"
-
-#: ../rules/base.xml.in.h:171
-msgid "Gha"
-msgstr "га"
-
-#: ../rules/base.xml.in.h:172
-msgid "Ghana"
-msgstr "Гана"
-
-#: ../rules/base.xml.in.h:173
-msgid "Gre"
-msgstr "грк"
-
-#: ../rules/base.xml.in.h:174
-msgid "Greece"
-msgstr "Грчка"
-
-#: ../rules/base.xml.in.h:175
-msgid "Group Shift/Lock behavior"
-msgstr "Понашање измене/избора групе"
-
-#: ../rules/base.xml.in.h:176
-msgid "Gujarati"
-msgstr "гујарати"
-
-#: ../rules/base.xml.in.h:177
-msgid "Gurmukhi"
-msgstr "гурмуки"
-
-#: ../rules/base.xml.in.h:178
-msgid "Gyration"
-msgstr "Gyration"
-
-#: ../rules/base.xml.in.h:179
-msgid "Hausa"
-msgstr "ХауÑа"
-
-#: ../rules/base.xml.in.h:180
-msgid "Hewlett-Packard Internet Keyboard"
-msgstr "Hewlett-Packard Интернет таÑтатура"
-
-#: ../rules/base.xml.in.h:181
-msgid "Hewlett-Packard Omnibook 500 FA"
-msgstr "Hewlett-Packard Omnibook 500 FA"
-
-#: ../rules/base.xml.in.h:182
-msgid "Hewlett-Packard Omnibook 5xx"
-msgstr "Hewlett-Packard Omnibook 5xx"
-
-#: ../rules/base.xml.in.h:183
-msgid "Hewlett-Packard Omnibook 6000/6100"
-msgstr "Hewlett-Packard Omnibook 6000/6100"
-
-#: ../rules/base.xml.in.h:184
-msgid "Hewlett-Packard Omnibook XE3 GC"
-msgstr "Hewlett-Packard Omnibook XE3 GC"
-
-#: ../rules/base.xml.in.h:185
-msgid "Hewlett-Packard Omnibook XE3 GF"
-msgstr "Hewlett-Packard Omnibook XE3 GF"
-
-#: ../rules/base.xml.in.h:186
-msgid "Hewlett-Packard Omnibook XT1000"
-msgstr "Hewlett-Packard Omnibook XT1000"
-
-#: ../rules/base.xml.in.h:187
-msgid "Hewlett-Packard Pavilion ZT11xx"
-msgstr "Hewlett-Packard Pavilion ZT11xx"
-
-#: ../rules/base.xml.in.h:188
-msgid "Hewlett-Packard SK-2501 Multimedia Keyboard"
-msgstr "Hewlett-Packard SK-2501 мултимедијална таÑтатура"
-
-#: ../rules/base.xml.in.h:189
-msgid "Hewlett-Packard SK-2505 Internet Keyboard"
-msgstr "Hewlett-Packard SK-2505 Интернет таÑтатура"
-
-#: ../rules/base.xml.in.h:190
-msgid "Honeywell Euroboard"
-msgstr "Honeywell Euroboard"
-
-#: ../rules/base.xml.in.h:191
-msgid "Hrv"
-msgstr "хрв"
-
-#: ../rules/base.xml.in.h:192
-msgid "Hun"
-msgstr "мађ"
-
-#: ../rules/base.xml.in.h:193
-msgid "Hungary"
-msgstr "МађарÑка"
-
-#: ../rules/base.xml.in.h:194
-msgid "Hyper is mapped to the Win-keys."
-msgstr "Hyper је мапиран на Win таÑтере."
-
-#: ../rules/base.xml.in.h:195
-msgid "IBM Rapid Access"
-msgstr "IBM Rapid Access"
-
-#: ../rules/base.xml.in.h:196
-msgid "IBM Rapid Access II"
-msgstr "IBM Rapid Access II"
-
-#: ../rules/base.xml.in.h:197
-msgid "IBM Rapid Access II (alternate option)"
-msgstr "IBM Rapid Access II (друга могућноÑÑ‚)"
-
-#: ../rules/base.xml.in.h:198
-msgid "IBM ThinkPad 560Z/600/600E/A22E"
-msgstr "IBM ThinkPad 560Z/600/600E/A22E"
-
-#: ../rules/base.xml.in.h:199
-msgid "ISO Alternate"
-msgstr "Додатни ИСО"
-
-#: ../rules/base.xml.in.h:200
-msgid "Iceland"
-msgstr "ИÑланд"
-
-#: ../rules/base.xml.in.h:201
-msgid "Ind"
-msgstr "инд"
-
-#: ../rules/base.xml.in.h:202
-msgid "India"
-msgstr "Индија"
-
-#: ../rules/base.xml.in.h:203
-msgid "International (with dead keys)"
-msgstr "Међународна (Ñа акцентима)"
-
-#: ../rules/base.xml.in.h:204
-msgid "Inuktitut"
-msgstr "инуктитут"
-
-#: ../rules/base.xml.in.h:205
-msgid "Iran"
-msgstr "Иран"
-
-#: ../rules/base.xml.in.h:206
-msgid "Ireland"
-msgstr "ИрÑка"
-
-#: ../rules/base.xml.in.h:207
-msgid "Irl"
-msgstr "ирÑ"
-
-#: ../rules/base.xml.in.h:208
-msgid "Irn"
-msgstr "ирн"
-
-#: ../rules/base.xml.in.h:209
-msgid "Isl"
-msgstr "иÑл"
-
-#: ../rules/base.xml.in.h:210
-msgid "Isr"
-msgstr "изр"
-
-#: ../rules/base.xml.in.h:211
-msgid "Israel"
-msgstr "Израел"
-
-#: ../rules/base.xml.in.h:212
-msgid "Ita"
-msgstr "ита"
-
-#: ../rules/base.xml.in.h:213
-msgid "Italy"
-msgstr "Италија"
-
-#: ../rules/base.xml.in.h:214
-msgid "Japan"
-msgstr "Јапан"
-
-#: ../rules/base.xml.in.h:215
-msgid "Japanese 106-key"
-msgstr "јапанÑки Ñа 106 таÑтера"
-
-#: ../rules/base.xml.in.h:216
-msgid "Jpn"
-msgstr "јпн"
-
-#: ../rules/base.xml.in.h:217
-msgid "Kannada"
-msgstr "канада (јужна индија)"
-
-#: ../rules/base.xml.in.h:218
-msgid "Kaz"
-msgstr "каз"
-
-#: ../rules/base.xml.in.h:219
-msgid "Kazakh with Russian"
-msgstr "казахÑтанÑки Ñа руÑким"
-
-#: ../rules/base.xml.in.h:220
-msgid "Kazakhstan"
-msgstr "КазахÑтан"
-
-#: ../rules/base.xml.in.h:221
-msgid "Keypad"
-msgstr "Ðумеричка таÑтатура"
-
-#: ../rules/base.xml.in.h:222
-msgid "Keytronic FlexPro"
-msgstr "Keytronic FlexPro"
-
-#: ../rules/base.xml.in.h:223
-msgid "Khm"
-msgstr "кмб"
-
-#: ../rules/base.xml.in.h:224
-msgid "Kyr"
-msgstr "кир"
-
-#: ../rules/base.xml.in.h:225
-msgid "Kyrgyzstan"
-msgstr "КиргиÑтан"
-
-#: ../rules/base.xml.in.h:226
-msgid "LAm"
-msgstr "ЈÐм"
-
-#: ../rules/base.xml.in.h:227
-msgid "Lao"
-msgstr "лао"
-
-#: ../rules/base.xml.in.h:228
-msgid "Laos"
-msgstr "ЛаоÑ"
-
-#: ../rules/base.xml.in.h:229
-msgid "Laptop/notebook Compaq (eg. Armada) Laptop Keyboard"
-msgstr "ТаÑтатуре преноÑних рачунара из Compaq-а (нпр. Armada)"
-
-#: ../rules/base.xml.in.h:230
-msgid "Laptop/notebook Compaq (eg. Presario) Internet Keyboard"
-msgstr "ТаÑтатуре преноÑних рачунара из Compaq-а (нпр. Presario)"
-
-#: ../rules/base.xml.in.h:231
-msgid "Laptop/notebook Dell Inspiron 6xxx/8xxx"
-msgstr "ТаÑтатуре преноÑних рачунара Dell Inspiron 6xxx/8xxx"
-
-#: ../rules/base.xml.in.h:232
-msgid "Laptop/notebook eMachines m68xx"
-msgstr "ПреноÑне eMachines m68xx"
-
-#: ../rules/base.xml.in.h:233
-msgid "Latin"
-msgstr "латинични"
-
-#: ../rules/base.xml.in.h:234
-msgid "Latin American"
-msgstr "јужноамерички"
-
-#: ../rules/base.xml.in.h:235
-msgid "Latin Unicode"
-msgstr "латинични Уникод"
-
-#: ../rules/base.xml.in.h:236
-msgid "Latin Unicode qwerty"
-msgstr "латинични Уникод qwerty"
-
-#: ../rules/base.xml.in.h:237
-msgid "Latin qwerty"
-msgstr "латинични qwerty"
-
-#: ../rules/base.xml.in.h:238
-msgid "Latin with guillemots"
-msgstr "латинични Ñа гиљемотима"
-
-#: ../rules/base.xml.in.h:239
-msgid "Latvia"
-msgstr "Летонија"
-
-#: ../rules/base.xml.in.h:240
-msgid "Left Alt key changes group."
-msgstr "Леви Alt таÑтер мења групу."
-
-#: ../rules/base.xml.in.h:241
-msgid "Left Alt key switches group while pressed."
-msgstr "Леви Alt таÑтер мења групу док је притиÑнут."
-
-#: ../rules/base.xml.in.h:242
-msgid "Left Ctrl key changes group."
-msgstr "Леви Ctrl таÑтер мења групу."
-
-#: ../rules/base.xml.in.h:243
-msgid "Left Shift key changes group."
-msgstr "Леви Shift таÑтер мења групу."
-
-#: ../rules/base.xml.in.h:244
-msgid "Left Win-key changes group."
-msgstr "Леви Windows таÑтер мења групу."
-
-#: ../rules/base.xml.in.h:245
-msgid "Left Win-key switches group while pressed."
-msgstr "Леви Windows таÑтер мења групу док је притиÑнут."
-
-#: ../rules/base.xml.in.h:246
-msgid "Left handed Dvorak"
-msgstr "Леворучни Дворак"
-
-#: ../rules/base.xml.in.h:247
-msgid "Lithuania"
-msgstr "Литванија"
-
-#: ../rules/base.xml.in.h:248
-msgid "Logitech Access Keyboard"
-msgstr "Logitech Access таÑтатура"
-
-#: ../rules/base.xml.in.h:249
-msgid "Logitech Cordless Desktop"
-msgstr "Logitech Cordless Desktop"
-
-#: ../rules/base.xml.in.h:250
-msgid "Logitech Cordless Desktop Navigator"
-msgstr "Logitech Cordless Desktop Navigator"
-
-#: ../rules/base.xml.in.h:251
-msgid "Logitech Cordless Desktop Optical"
-msgstr "Logitech Cordless Desktop Optical"
-
-#: ../rules/base.xml.in.h:252
-msgid "Logitech Cordless Desktop Pro"
-msgstr "Logitech Cordless Desktop Pro"
-
-#: ../rules/base.xml.in.h:253
-msgid "Logitech Cordless Desktop Pro (alternate option)"
-msgstr "Logitech Cordless Desktop Pro (додатна могућноÑÑ‚)"
-
-#: ../rules/base.xml.in.h:254
-msgid "Logitech Cordless Desktop Pro (alternate option2)"
-msgstr "Logitech Cordless Desktop Pro (додатна могућноÑÑ‚ 2)"
-
-#: ../rules/base.xml.in.h:255
-msgid "Logitech Cordless Desktop iTouch"
-msgstr "Logitech Cordless Desktop iTouch"
-
-#: ../rules/base.xml.in.h:256
-msgid "Logitech Cordless Freedom/Desktop Navigator"
-msgstr "Logitech Cordless Freedom/Desktop Navigator"
-
-#: ../rules/base.xml.in.h:257
-msgid "Logitech Deluxe Access Keyboard"
-msgstr "Logitech Deluxe Access таÑтатура"
-
-#: ../rules/base.xml.in.h:258
-msgid "Logitech Internet Keyboard"
-msgstr "Logitech Интернет таÑтатура"
-
-#: ../rules/base.xml.in.h:259
-msgid "Logitech Internet Navigator Keyboard"
-msgstr "Logitech Интернет навигатор таÑтатура"
-
-#: ../rules/base.xml.in.h:260
-msgid "Logitech Ultra-X Keyboard"
-msgstr "Logitech Ultra-X таÑтатура"
-
-#: ../rules/base.xml.in.h:261
-msgid "Logitech iTouch"
-msgstr "Logitech iTouch"
-
-#: ../rules/base.xml.in.h:262
-msgid "Logitech iTouch Cordless Keyboard (model Y-RB6)"
-msgstr "Logitech iTouch Cordless таÑтатура (модел Y-RB6)"
-
-#: ../rules/base.xml.in.h:263
-msgid "Logitech iTouch keyboard Internet Navigator"
-msgstr "Logitech iTouch таÑтатура Интернет навигатор"
-
-#: ../rules/base.xml.in.h:264
-msgid "Ltu"
-msgstr "лит"
-
-#: ../rules/base.xml.in.h:265
-msgid "Lva"
-msgstr "лет"
-
-#: ../rules/base.xml.in.h:266
-msgid "Macedonia"
-msgstr "Македонија"
-
-#: ../rules/base.xml.in.h:267
-msgid "Macintosh"
-msgstr "Мекинтош"
-
-#: ../rules/base.xml.in.h:268
-msgid "Macintosh Old"
-msgstr "Стари Мекинтош"
-
-#: ../rules/base.xml.in.h:269
-msgid "Make CapsLock an additional Ctrl."
-msgstr "Учини Caps Lock додатним Ctrl таÑтером."
-
-#: ../rules/base.xml.in.h:270
-msgid "Mal"
-msgstr "мал"
-
-#: ../rules/base.xml.in.h:271
-msgid "Malayalam"
-msgstr "малајамÑки"
-
-#: ../rules/base.xml.in.h:272
-msgid "Maldives"
-msgstr "Малдиви"
-
-#: ../rules/base.xml.in.h:273
-msgid "Malta"
-msgstr "Малта"
-
-#: ../rules/base.xml.in.h:274
-msgid "Mao"
-msgstr "мао"
-
-#: ../rules/base.xml.in.h:275
-msgid "Maori"
-msgstr "Маори"
-
-#: ../rules/base.xml.in.h:276
-msgid "Memorex MX1998"
-msgstr "Memorex MX1998"
-
-#: ../rules/base.xml.in.h:277
-msgid "Memorex MX2500 EZ-Access Keyboard"
-msgstr "Memorex MX2500 EZ-Access таÑтатура"
-
-#: ../rules/base.xml.in.h:278
-msgid "Memorex MX2750"
-msgstr "Memorex MX2750"
-
-#: ../rules/base.xml.in.h:279
-msgid "Menu is Compose."
-msgstr "Menu је комбинујући таÑтер."
-
-#: ../rules/base.xml.in.h:280
-msgid "Menu key changes group."
-msgstr "Menu таÑтер мења групу."
-
-#: ../rules/base.xml.in.h:281
-msgid "Meta is mapped to the Win-keys."
-msgstr "Meta је мапиран на Windows таÑтере."
-
-#: ../rules/base.xml.in.h:282
-msgid "Meta is mapped to the left Win-key."
-msgstr "Meta је мапиран на леви Windows таÑтер."
-
-#: ../rules/base.xml.in.h:283
-msgid "Microsoft Internet Keyboard"
-msgstr "МикроÑофтова Интернет таÑтатура"
-
-#: ../rules/base.xml.in.h:284
-msgid "Microsoft Internet Keyboard Pro, Swedish"
-msgstr "МикроÑофтова Интернет Про таÑтатура, шведÑки"
-
-#: ../rules/base.xml.in.h:285
-msgid "Microsoft Natural"
-msgstr "МикроÑофт Ðатурал"
-
-#: ../rules/base.xml.in.h:286
-msgid "Microsoft Natural Keyboard Pro / Microsoft Internet Keyboard Pro"
-msgstr "МикроÑофт Ðатурал таÑтатура Про / МикроÑофт Интернет таÑтатура Про "
-
-#: ../rules/base.xml.in.h:287
-msgid "Microsoft Natural Keyboard Pro OEM"
-msgstr "МикроÑофт Ðатурал таÑтатура Про ОЕМ"
-
-#: ../rules/base.xml.in.h:288
-msgid "Microsoft Natural Keyboard Pro USB / Microsoft Internet Keyboard Pro"
-msgstr ""
-"МикроÑофтова Ðатурал таÑтатура Про УСБ / МикроÑофт Интернет таÑтатура Про "
-
-#: ../rules/base.xml.in.h:289
-msgid "Microsoft Office Keyboard"
-msgstr "МикроÑофтова канцеларијÑка таÑтатура"
-
-#: ../rules/base.xml.in.h:290
-msgid "Microsoft Wireless Multimedia Keyboard 1.0A"
-msgstr "МикроÑофтова бежична мултимедијална таÑтатура 1.0Ð"
-
-#: ../rules/base.xml.in.h:291
-msgid "Miscellaneous compatibility options"
-msgstr "Разне могућноÑти за ÑаглаÑноÑÑ‚"
-
-#: ../rules/base.xml.in.h:292
-msgid "Mkd"
-msgstr "мак"
-
-#: ../rules/base.xml.in.h:293
-msgid "Mlt"
-msgstr "мал"
-
-#: ../rules/base.xml.in.h:294
-msgid "Mmr"
-msgstr "ммр"
-
-#: ../rules/base.xml.in.h:295
-msgid "Mng"
-msgstr "мнг"
-
-#: ../rules/base.xml.in.h:296
-msgid "Mongolia"
-msgstr "Монголија"
-
-#: ../rules/base.xml.in.h:297
-msgid "Multilingual"
-msgstr "Вишејезична"
-
-#: ../rules/base.xml.in.h:298
-msgid "Multilingual, first part"
-msgstr "Вишејезична, први део"
-
-#: ../rules/base.xml.in.h:299
-msgid "Multilingual, second part"
-msgstr "Вишејезична, други део"
-
-#: ../rules/base.xml.in.h:300
-msgid "Myanmar"
-msgstr "Мијанмар"
-
-#: ../rules/base.xml.in.h:301
-msgid "Netherlands"
-msgstr "Холандија"
-
-#: ../rules/base.xml.in.h:302
-msgid "Nld"
-msgstr "хол"
-
-#: ../rules/base.xml.in.h:303
-msgid "Nor"
-msgstr "нор"
-
-#: ../rules/base.xml.in.h:304
-msgid "Northern Saami"
-msgstr "ÑеверноÑаамÑки"
-
-#: ../rules/base.xml.in.h:305
-msgid "Northern Saami, eliminate dead keys"
-msgstr "ÑеверноÑаамÑки, без акцената"
-
-#: ../rules/base.xml.in.h:306
-msgid "Northgate OmniKey 101"
-msgstr "Northgate OmniKey 101"
-
-#: ../rules/base.xml.in.h:307
-msgid "Norway"
-msgstr "Ðорвешка"
-
-#: ../rules/base.xml.in.h:308
-msgid "NumLock LED shows alternative group."
-msgstr "NumLock лампица приказује измене група."
-
-#: ../rules/base.xml.in.h:309
-msgid "Ogham"
-msgstr "огам"
-
-#: ../rules/base.xml.in.h:310
-msgid "Ogham IS434"
-msgstr "огам IS434"
-
-#: ../rules/base.xml.in.h:311
-msgid "Oretec MCK-800 MM/Internet keyboard"
-msgstr "Oretec MCK-800 ММ/Интернет таÑтатура"
-
-#: ../rules/base.xml.in.h:312
-msgid "Oriya"
-msgstr "орија"
-
-#: ../rules/base.xml.in.h:313
-msgid "PC-98xx Series"
-msgstr "PC-98xx Ñерија"
-
-#: ../rules/base.xml.in.h:314
-msgid "Pak"
-msgstr "пак"
-
-#: ../rules/base.xml.in.h:315
-msgid "Pakistan"
-msgstr "ПакиÑтан"
-
-#: ../rules/base.xml.in.h:316
-msgid "Pashto"
-msgstr "пашто"
-
-#: ../rules/base.xml.in.h:317
-msgid "Pattachote"
-msgstr "Паташоте"
-
-#: ../rules/base.xml.in.h:318
-msgid "Phonetic"
-msgstr "фонетÑки"
-
-#: ../rules/base.xml.in.h:319
-msgid "Pol"
-msgstr "пољ"
-
-#: ../rules/base.xml.in.h:320
-msgid "Poland"
-msgstr "ПољÑка"
-
-# не ваља, можда вишезвучни?
-#: ../rules/base.xml.in.h:321
-msgid "Polytonic"
-msgstr "вишезвучни"
-
-#: ../rules/base.xml.in.h:322
-msgid "Portugal"
-msgstr "Португалија"
-
-#: ../rules/base.xml.in.h:323
-msgid "Power G5"
-msgstr "Power G5"
-
-#: ../rules/base.xml.in.h:324
-msgid "PowerPC PS/2"
-msgstr "PowerPC PS/2"
-
-#: ../rules/base.xml.in.h:325
-msgid "Press Left Alt key to choose 3rd level."
-msgstr "ПритиÑкање левог Alt таÑтера за избор 3. нивоа."
-
-#: ../rules/base.xml.in.h:326
-msgid "Press Left Win-key to choose 3rd level."
-msgstr "ПритиÑкање левог Windows таÑтера за избор 3. нивоа."
-
-#: ../rules/base.xml.in.h:327
-msgid "Press Menu key to choose 3rd level."
-msgstr "ПритиÑкање Menu таÑтера за избор 3. нивоа."
-
-#: ../rules/base.xml.in.h:328
-msgid "Press Right Alt key to choose 3rd level."
-msgstr "ПритиÑкање деÑног Alt таÑтера за избор 3. нивоа."
-
-#: ../rules/base.xml.in.h:329
-msgid "Press Right Ctrl to choose 3rd level."
-msgstr "ПритиÑкање деÑног Ctrl таÑтера за избор 3. нивоа."
-
-#: ../rules/base.xml.in.h:330
-msgid "Press Right Win-key to choose 3rd level."
-msgstr "ПритиÑкање деÑног Windows таÑтера за избор 3. нивоа."
-
-#: ../rules/base.xml.in.h:331
-msgid "Press any of Alt keys to choose 3rd level."
-msgstr "ПритиÑкање било ког Alt таÑтера за избор 3. нивоа."
-
-#: ../rules/base.xml.in.h:332
-msgid "Press any of Win-keys to choose 3rd level."
-msgstr "ПритиÑкање било ког Windows таÑтера за избор 3. нивоа."
-
-#: ../rules/base.xml.in.h:333
-msgid "Pro"
-msgstr "про"
-
-#: ../rules/base.xml.in.h:334
-msgid "Pro Keypad"
-msgstr "Про таÑтатура"
-
-#: ../rules/base.xml.in.h:335
-msgid "Probhat"
-msgstr "пробат"
-
-#: ../rules/base.xml.in.h:336
-msgid "Propeller Voyager (KTEZ-1000)"
-msgstr "Propeller Voyager (KTEZ-1000)"
-
-#: ../rules/base.xml.in.h:337
-msgid "Prt"
-msgstr "прт"
-
-#: ../rules/base.xml.in.h:338
-msgid "QTronix Scorpius 98N+"
-msgstr "QTronix Scorpius 98N+"
-
-#: ../rules/base.xml.in.h:339
-msgid "R-Alt switches group while pressed."
-msgstr "ДеÑни Alt мења групу док је притиÑнут."
-
-#: ../rules/base.xml.in.h:340
-msgid "Right Alt is Compose."
-msgstr "ДеÑни Alt је комбинујући."
-
-#: ../rules/base.xml.in.h:341
-msgid "Right Alt key changes group."
-msgstr "ДеÑни Alt је мења групу."
-
-#: ../rules/base.xml.in.h:342
-msgid "Right Ctrl is Compose."
-msgstr "ДеÑни Ctrl је комбинујући."
-
-#: ../rules/base.xml.in.h:343
-msgid "Right Ctrl key changes group."
-msgstr "ДеÑни Ctrl мења групу."
-
-#: ../rules/base.xml.in.h:344
-msgid "Right Ctrl key switches group while pressed."
-msgstr "ДеÑни Ctrl таÑтер мења групу док је притиÑнут."
-
-#: ../rules/base.xml.in.h:345
-msgid "Right Ctrl key works as Right Alt."
-msgstr "ДеÑни Ctrl таÑтер Ñе понаша као деÑни Alt."
-
-#: ../rules/base.xml.in.h:346
-msgid "Right Shift key changes group."
-msgstr "ДеÑни Shift мења групу."
-
-#: ../rules/base.xml.in.h:347
-msgid "Right Win-key changes group."
-msgstr "ДеÑни Windows таÑтер мења групу."
-
-#: ../rules/base.xml.in.h:348
-msgid "Right Win-key is Compose."
-msgstr "ДеÑни Windows таÑтер је комбинујући."
-
-#: ../rules/base.xml.in.h:349
-msgid "Right Win-key switches group while pressed."
-msgstr "ДеÑни Windows таÑтер мења групу док је притиÑнут."
-
-#: ../rules/base.xml.in.h:350
-msgid "Right handed Dvorak"
-msgstr "ДеÑноручни Дворак"
-
-#: ../rules/base.xml.in.h:351
-msgid "Romania"
-msgstr "Румунија"
-
-#: ../rules/base.xml.in.h:352
-msgid "Romanian keyboard with German letters"
-msgstr "румунÑка таÑтатура Ñа немачким Ñловима"
-
-#: ../rules/base.xml.in.h:353
-msgid "Romanian keyboard with German letters, eliminate dead keys"
-msgstr "румунÑка таÑтатура Ñа немачким Ñловима, без акцената"
-
-#: ../rules/base.xml.in.h:354
-msgid "Rou"
-msgstr "рум"
-
-#: ../rules/base.xml.in.h:355
-msgid "Rus"
-msgstr "руÑ"
-
-#: ../rules/base.xml.in.h:356
-msgid "Russia"
-msgstr "РуÑија"
-
-#: ../rules/base.xml.in.h:357
-msgid "Russian"
-msgstr "руÑки"
-
-#: ../rules/base.xml.in.h:358
-msgid "Russian phonetic"
-msgstr "руÑки фонетÑки"
-
-#: ../rules/base.xml.in.h:359
-msgid "Russian phonetic, eliminate dead keys"
-msgstr "руÑки фонетÑки, без акцената"
-
-#: ../rules/base.xml.in.h:360
-msgid "Russian with Kazakh"
-msgstr "руÑки Ñа казахÑтанÑким"
-
-#: ../rules/base.xml.in.h:361
-msgid "SCG"
-msgstr "СЦГ"
-
-#: ../rules/base.xml.in.h:362
-msgid "SILVERCREST Multimedia Wireless Keyboard"
-msgstr "SILVERCREST мултимедијална бежична таÑтатура"
-
-#: ../rules/base.xml.in.h:363
-msgid "SK-1300"
-msgstr "SK-1300"
-
-#: ../rules/base.xml.in.h:364
-msgid "SK-2500"
-msgstr "SK-2500"
-
-#: ../rules/base.xml.in.h:365
-msgid "SK-6200"
-msgstr "SK-6200"
-
-#: ../rules/base.xml.in.h:366
-msgid "SK-7100"
-msgstr "SK-7100"
-
-#: ../rules/base.xml.in.h:367
-msgid "SVEN Ergonomic 2500"
-msgstr "SVEN ергономÑка 2500"
-
-#: ../rules/base.xml.in.h:368
-msgid "Samsung SDM 4500P"
-msgstr "Samsung SDM 4500P"
-
-#: ../rules/base.xml.in.h:369
-msgid "Samsung SDM 4510P"
-msgstr "Samsung SDM 4510P"
-
-#: ../rules/base.xml.in.h:370
-msgid "ScrollLock LED shows alternative group."
-msgstr "ScrollLock лампица приказује измене група."
-
-#: ../rules/base.xml.in.h:371
-msgid "Serbia and Montenegro"
-msgstr "Србија и Црна Гора"
-
-#: ../rules/base.xml.in.h:372
-msgid "Shift with numpad keys works as in MS Windows."
-msgstr "Shift уз нумеричку таÑатуру ради као у MS Windows-у."
-
-#: ../rules/base.xml.in.h:373
-msgid "Shift+CapsLock changes group."
-msgstr "Shift+CapsLock таÑтер мења групу."
-
-#: ../rules/base.xml.in.h:374
-msgid "Slovakia"
-msgstr "Словачка"
-
-#: ../rules/base.xml.in.h:375
-msgid "Slovenia"
-msgstr "Словенија"
-
-#: ../rules/base.xml.in.h:376
-msgid "South Africa"
-msgstr "Јужна Ðфрика"
-
-#: ../rules/base.xml.in.h:377
-msgid "Southern Uzbek"
-msgstr "Јужни УзбекиÑтан"
-
-#: ../rules/base.xml.in.h:378
-msgid "Spain"
-msgstr "Шпанија"
-
-#: ../rules/base.xml.in.h:379
-msgid "Special keys (Ctrl+Alt+&lt;key&gt;) handled in a server."
-msgstr "Ðарочити таÑтери (Ctrl+Alt+&lt;таÑтер&gt;) које обрађује Ñервер."
-
-#: ../rules/base.xml.in.h:380
-msgid "SrL"
-msgstr "шрл"
-
-#: ../rules/base.xml.in.h:381
-msgid "Sri Lanka"
-msgstr "Шри Ланка"
-
-#: ../rules/base.xml.in.h:382
-msgid "Standard"
-msgstr "Ñтандардна"
-
-#. RSTU 2019-91
-#: ../rules/base.xml.in.h:384
-msgid "Standard RSTU"
-msgstr "Ñтандардна RSTU"
-
-#. RSTU 2019-91
-#: ../rules/base.xml.in.h:386
-msgid "Standard RSTU on Russian layout"
-msgstr "Ñтандардна RSTU на руÑком раÑпореду"
-
-#: ../rules/base.xml.in.h:387
-msgid "Sun dead keys"
-msgstr "Sun-ови акценти"
-
-#: ../rules/base.xml.in.h:388
-msgid "Super Power Multimedia Keyboard"
-msgstr "Супер моћна мултимедијална таÑтатура"
-
-#: ../rules/base.xml.in.h:389
-msgid "Super is mapped to the Win-keys (default)."
-msgstr "Super је мапиран на Windows таÑтере (подразумевано)."
-
-#: ../rules/base.xml.in.h:390
-msgid "Svk"
-msgstr "Ñлк"
-
-#: ../rules/base.xml.in.h:391
-msgid "Svn"
-msgstr "Ñло"
-
-#: ../rules/base.xml.in.h:392
-msgid "Swap Ctrl and CapsLock."
-msgstr "Размени Ctrl и Caps Lock."
-
-#: ../rules/base.xml.in.h:393
-msgid "Swe"
-msgstr "шве"
-
-#: ../rules/base.xml.in.h:394
-msgid "Sweden"
-msgstr "ШведÑка"
-
-#: ../rules/base.xml.in.h:395
-msgid "Switzerland"
-msgstr "ШвајцарÑка"
-
-#: ../rules/base.xml.in.h:396
-msgid "Symplon PaceBook (tablet PC)"
-msgstr "Symplon PaceBook (tablet PC)"
-
-#: ../rules/base.xml.in.h:397
-msgid "Syr"
-msgstr "Ñир"
-
-#: ../rules/base.xml.in.h:398
-msgid "Syria"
-msgstr "Сирија"
-
-#: ../rules/base.xml.in.h:399
-msgid "Syriac"
-msgstr "ÑиријÑки"
-
-#: ../rules/base.xml.in.h:400
-msgid "Syriac phonetic"
-msgstr "ÑиријÑки фонетÑки"
-
-#: ../rules/base.xml.in.h:401
-msgid "TIS-820.2538"
-msgstr "TIS-820.2538"
-
-#: ../rules/base.xml.in.h:402
-msgid "Tajikistan"
-msgstr "ТаџикиÑтан"
-
-#: ../rules/base.xml.in.h:403
-msgid "Tamil"
-msgstr "тамил"
-
-#: ../rules/base.xml.in.h:404
-msgid "Tamil TAB Typewriter"
-msgstr "тамил TAB куцаћа машина"
-
-#: ../rules/base.xml.in.h:405
-msgid "Tamil TSCII Typewriter"
-msgstr "тамил TSCII куцаћа машина"
-
-#: ../rules/base.xml.in.h:406
-msgid "Tamil Unicode"
-msgstr "тамил Уникод"
-
-#: ../rules/base.xml.in.h:407
-msgid "Tatar"
-msgstr "татарÑки"
-
-#: ../rules/base.xml.in.h:408
-msgid "Telugu"
-msgstr "телугу"
-
-#: ../rules/base.xml.in.h:409
-msgid "Tha"
-msgstr "тај"
-
-#: ../rules/base.xml.in.h:410
-msgid "Thailand"
-msgstr "Тајланд"
-
-#: ../rules/base.xml.in.h:411
-msgid "Third level choosers"
-msgstr "Избор трећег нивоа"
-
-#: ../rules/base.xml.in.h:412
-msgid "Tilde (~) variant"
-msgstr "Варијанта Ñа тилдом (~)"
-
-#: ../rules/base.xml.in.h:413
-msgid "Tjk"
-msgstr "тџк"
-
-#: ../rules/base.xml.in.h:414
-msgid "Toshiba Satellite S3000"
-msgstr "Toshiba Satellite S3000"
-
-#: ../rules/base.xml.in.h:415
-msgid "Trust Direct Access Keyboard"
-msgstr "Trust Direct Access таÑтатура"
-
-#: ../rules/base.xml.in.h:416
-msgid "Trust Wireless Keyboard Classic"
-msgstr "Trust клаÑична бежична таÑтатура"
-
-#: ../rules/base.xml.in.h:417
-msgid "Tur"
-msgstr "тур"
-
-#: ../rules/base.xml.in.h:418
-msgid "Turkey"
-msgstr "ТурÑка"
-
-#: ../rules/base.xml.in.h:419
-msgid "Typewriter"
-msgstr "„Куцаћа машина“"
-
-#: ../rules/base.xml.in.h:420
-msgid "U.S. English"
-msgstr "амерички енглеÑки"
-
-#: ../rules/base.xml.in.h:421
-msgid "US keyboard with Bosnian digraphs"
-msgstr "Ðмеричка таÑтатура Ñа боÑанÑким диграфима"
-
-#: ../rules/base.xml.in.h:422
-msgid "US keyboard with Bosnian letters"
-msgstr "Ðмеричка таÑтатура Ñа боÑанÑким Ñловима"
-
-#: ../rules/base.xml.in.h:423
-msgid "US keyboard with Croatian digraphs"
-msgstr "Ðмеричка таÑтатура Ñа хрватÑким диграфима"
-
-#: ../rules/base.xml.in.h:424
-msgid "US keyboard with Croatian letters"
-msgstr "Ðмеричка таÑтатура Ñа хрватÑким Ñловима"
-
-#: ../rules/base.xml.in.h:425
-msgid "US keyboard with Lithuanian letters"
-msgstr "Ðмеричка таÑтатура Ñа литванÑким Ñловима"
-
-#: ../rules/base.xml.in.h:426
-msgid "US keyboard with Maltian letters"
-msgstr "Ðмеричка таÑтатура Ñа малтешким Ñловима"
-
-#: ../rules/base.xml.in.h:427
-msgid "US keyboard with Slovenian digraphs"
-msgstr "Ðмеричка таÑтатура Ñа Ñловеначким диграфима"
-
-#: ../rules/base.xml.in.h:428
-msgid "US keyboard with Slovenian letters"
-msgstr "Ðмеричка таÑтатура Ñа Ñловеначким Ñловима"
-
-#: ../rules/base.xml.in.h:429
-msgid "USA"
-msgstr "СÐД"
-
-#: ../rules/base.xml.in.h:430
-msgid "Ukr"
-msgstr "укр"
-
-#: ../rules/base.xml.in.h:431
-msgid "Ukraine"
-msgstr "Украјина"
-
-#: ../rules/base.xml.in.h:432
-msgid "UnicodeExpert"
-msgstr "Стручна за Уникод"
-
-#: ../rules/base.xml.in.h:433
-msgid "United Kingdom"
-msgstr "Велика Британија"
-
-#: ../rules/base.xml.in.h:434
-msgid "Urdu"
-msgstr "Урду"
-
-#: ../rules/base.xml.in.h:435
-msgid "Use Bosnian digraphs"
-msgstr "КориÑти боÑанÑке диграфе"
-
-#: ../rules/base.xml.in.h:436
-msgid "Use Croatian digraphs"
-msgstr "КориÑти хрватÑке диграфе"
-
-#: ../rules/base.xml.in.h:437
-msgid "Use Slovenian digraphs"
-msgstr "КориÑти Ñловеначке диграфе"
-
-#: ../rules/base.xml.in.h:438
-msgid "Use guillemots for quotes"
-msgstr "КориÑти гиљемоте за наводнике"
-
-#: ../rules/base.xml.in.h:439
-msgid "Use keyboard LED to show alternative group."
-msgstr "КориÑти лампицу таÑтатуре за приказ измене група."
-
-#: ../rules/base.xml.in.h:440
-msgid "Uzb"
-msgstr "узб"
-
-#: ../rules/base.xml.in.h:441
-msgid "Uzbekistan"
-msgstr "УзбекиÑтан"
-
-#: ../rules/base.xml.in.h:442
-msgid "Vietnam"
-msgstr "Вијетнам"
-
-#: ../rules/base.xml.in.h:443
-msgid "Vnm"
-msgstr "вјт"
-
-#: ../rules/base.xml.in.h:444
-msgid "Winbook Model XP5"
-msgstr "Winbook Model XP5"
-
-#: ../rules/base.xml.in.h:445
-msgid "Winkeys"
-msgstr "Windows таÑтери"
-
-#: ../rules/base.xml.in.h:446
-msgid "With &lt;\\|&gt; key"
-msgstr "Уз таÑтер &lt;\\|&gt;"
-
-#: ../rules/base.xml.in.h:447
-msgid "With guillemots"
-msgstr "Са гиљемотима"
-
-#: ../rules/base.xml.in.h:448
-msgid "Yahoo! Internet Keyboard"
-msgstr "Yahoo! Интернет таÑтатура"
-
-#: ../rules/base.xml.in.h:449
-msgid "Z and ZHE swapped"
-msgstr "Размењено З и Ж"
-
-#: ../rules/base.xml.in.h:450
-msgid "Zar"
-msgstr "Зар"
-
-#: ../rules/base.xml.in.h:451
-msgid "azerty"
-msgstr "azerty"
-
-#: ../rules/base.xml.in.h:452
-msgid "azerty/digits"
-msgstr "azerty/цифре"
-
-#: ../rules/base.xml.in.h:453
-msgid "digits"
-msgstr "цифре"
-
-#: ../rules/base.xml.in.h:454
-msgid "lyx"
-msgstr "lyx"
-
-#: ../rules/base.xml.in.h:455
-msgid "qwerty"
-msgstr "qwerty"
-
-#: ../rules/base.xml.in.h:456
-msgid "qwerty, extended Backslash"
-msgstr "qwerty, проширено Ñа обрнутом коÑом цртом"
-
-#: ../rules/base.xml.in.h:457
-msgid "qwerty/digits"
-msgstr "qwerty/цифре"
-
-#: ../rules/base.xml.in.h:458
-msgid "qwertz"
-msgstr "qwertz"
-
-#: ../rules/base.xml.in.h:459
-msgid "si1452"
-msgstr "si1452"
-
-#~ msgid "Turkish"
-#~ msgstr "турÑки"
-
-#~ msgid "\"Standard\""
-#~ msgstr "„Стандардна“"
-
-# bug: Serbia and Montenegro
-#~ msgid "Serbia"
-#~ msgstr "Србија"
-
-#~ msgid "Srp"
-#~ msgstr "Ñрп"
-
-#~ msgid "Tamil INSCRIPT"
-#~ msgstr "тамил инÑкрипт"
-
-#~ msgid "US keyboard with Romanian letters"
-#~ msgstr "Ðмеричка таÑтатура Ñа румунÑким Ñловима"
-
-#~ msgid "A Tamil typewrite-style keymap; TAB encoding"
-#~ msgstr "Тамил раÑпоред налик куцаћој машини; TAB кодирање"
-
-#~ msgid "A Tamil typewrite-style keymap; TSCII encoding"
-#~ msgstr "Тамил раÑпоред налик куцаћој машини; TSCII кодирање"
-
-#~ msgid "A Tamil typewrite-style keymap; Unicode encoding"
-#~ msgstr "Тамил раÑпоред налик куцаћој машини; Уникод кодирање"
-
-#~ msgid "Arb"
-#~ msgstr "арп"
-
-#~ msgid "Basic"
-#~ msgstr "ОÑновно"
-
-#~ msgid "Ben"
-#~ msgstr "бнг"
-
-#~ msgid "Bosnian"
-#~ msgstr "бошњачки"
-
-#~ msgid "Burmese"
-#~ msgstr "бурмиÑки"
-
-#~ msgid "CloGaelach Laptop"
-#~ msgstr "CloGaelach за преноÑне рачунаре"
-
-#~ msgid "Czech (qwerty)"
-#~ msgstr "Чешки (qwerty)"
-
-#~ msgid "Danish"
-#~ msgstr "данÑки"
-
-#~ msgid "Dutch"
-#~ msgstr "холандÑки"
-
-#~ msgid "Dvo"
-#~ msgstr "дво"
-
-#~ msgid "Finnish"
-#~ msgstr "финÑки"
-
-#~ msgid "French Canadian"
-#~ msgstr "француÑки канадÑки"
-
-#~ msgid "Georgian (latin)"
-#~ msgstr "грузијÑки (латиница)"
-
-#~ msgid "Georgian (russian)"
-#~ msgstr "грузијÑки (руÑки)"
-
-#~ msgid "Grc"
-#~ msgstr "грк"
-
-#~ msgid "Guj"
-#~ msgstr "гуј"
-
-#~ msgid "Hin"
-#~ msgstr "инд"
-
-#~ msgid "Hindi"
-#~ msgstr "индијÑки"
-
-#~ msgid "Hungarian (qwerty)"
-#~ msgstr "МађарÑки (qwerty)"
-
-#~ msgid "INSCRIPT layout"
-#~ msgstr "INSCRIPT раÑпоред"
-
-#~ msgid "IS434 laptop"
-#~ msgstr "IS434 преноÑни"
-
-#~ msgid "Iku"
-#~ msgstr "ику"
-
-#~ msgid "Irish"
-#~ msgstr "ирÑки"
-
-#~ msgid "Italian"
-#~ msgstr "италијанÑки"
-
-#~ msgid "Lithuanian azerty standard"
-#~ msgstr "литванÑки azerty раÑпоред"
-
-#~ msgid "Lithuanian qwerty \"numeric\""
-#~ msgstr "литванÑки qwerty „бројевни“"
-
-#~ msgid "Maltese (US layout)"
-#~ msgstr "малтÑки (амерички раÑпоред)"
-
-#~ msgid "Northern Saami (Finland)"
-#~ msgstr "ÑеверноÑаамÑки (ФинÑка)"
-
-#~ msgid "Northern Saami (Sweden)"
-#~ msgstr "ÑеверноÑаамÑки (ШведÑка)"
-
-#~ msgid "Ogh"
-#~ msgstr "огм"
-
-#~ msgid "Ori"
-#~ msgstr "ори"
-
-#~ msgid "PC104"
-#~ msgstr "PC104"
-
-#~ msgid "Polish"
-#~ msgstr "пољÑки"
-
-#~ msgid "Polish (qwertz)"
-#~ msgstr "пољÑки (qwertz)"
-
-#~ msgid "Sapmi"
-#~ msgstr "Sapmi"
-
-#~ msgid "Scg"
-#~ msgstr "Ñрп"
-
-#~ msgid "Slovak (qwerty)"
-#~ msgstr "Ñловачки (qwerty)"
-
-#~ msgid "Sme"
-#~ msgstr "Ñме"
-
-#~ msgid "Sv"
-#~ msgstr "Ñв"
-
-#~ msgid "Swedish"
-#~ msgstr "шведÑки"
-
-#~ msgid "Swiss French"
-#~ msgstr "швајцарÑки француÑки"
-
-#~ msgid "Tel"
-#~ msgstr "тел"
-
-#~ msgid "Thai (Kedmanee)"
-#~ msgstr "тајландÑки (Кедмани)"
-
-#~ msgid "Tml"
-#~ msgstr "тмл"
-
-#~ msgid "Turkish (F)"
-#~ msgstr "турÑки (F)"
-
-#~ msgid "Turkish Alt-Q Layout"
-#~ msgstr "турÑки Alt-Q раÑпоред"
-
-#~ msgid "U.S. English w/ ISO9995-3"
-#~ msgstr "амерички енглеÑки Ñа ИСО9995-3"
-
-#~ msgid "U.S. English w/ dead keys"
-#~ msgstr "амерички енглеÑки Ñа акцентима"
-
-#~ msgid "US"
-#~ msgstr "СÐД"
-
-#~ msgid "Yug"
-#~ msgstr "Ñцг"
-
-#~ msgid "Yugoslavian"
-#~ msgstr "латинични ÑрпÑки"
-
-#~ msgid "abnt2"
-#~ msgstr "абнт2"
-
-#~ msgid "bksl"
-#~ msgstr "бкÑл"
-
-#~ msgid "laptop"
-#~ msgstr "преноÑни"
-
-#~ msgid "sefi"
-#~ msgstr "sefi"
-
-#~ msgid "uni/101/qwerty/comma"
-#~ msgstr "уни/101/qwerty/запета"
-
-#~ msgid "uni/101/qwerty/dot"
-#~ msgstr "уни/101/qwerty/тачка"
-
-#~ msgid "uni/101/qwertz/comma"
-#~ msgstr "уни/101/qwertz/запета"
-
-#~ msgid "uni/101/qwertz/dot"
-#~ msgstr "уни/101/qwertz/тачка"
-
-#~ msgid "uni/102/qwerty/comma"
-#~ msgstr "уни/102/qwerty/запета"
-
-#~ msgid "uni/102/qwerty/dot"
-#~ msgstr "уни/102/qwerty/тачка"
-
-#~ msgid "uni/102/qwertz/comma"
-#~ msgstr "уни/102/qwertz/запета"
-
-#~ msgid "uni/102/qwertz/dot"
-#~ msgstr "уни/102/qwertz/тачка"
+# Serbian translation of xfree_xkb_xml-4.4pre1
+# Copyright (C) 2003, 2004, 2005 Free Software Foundation, Inc.
+# Danilo Segan <dsegan@gmx.net>, 2003, 2004, 2005.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: xfree86_xkb_xml 4.4pre1\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2006-03-02 19:07+0100\n"
+"PO-Revision-Date: 2006-03-02 19:14+0100\n"
+"Last-Translator: Danilo Segan <dsegan@gmx.net>\n"
+"Language-Team: Serbian <sr@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../rules/base.xml.in.h:1
+msgid "(F)"
+msgstr "(F)"
+
+#: ../rules/base.xml.in.h:2
+msgid "101/qwerty/comma/Dead keys"
+msgstr "101/qwerty/запета/акценти"
+
+#: ../rules/base.xml.in.h:3
+msgid "101/qwerty/comma/Eliminate dead keys"
+msgstr "101/qwerty/запета/без акцената"
+
+#: ../rules/base.xml.in.h:4
+msgid "101/qwerty/dot/Dead keys"
+msgstr "101/qwerty/тачка/акценти"
+
+#: ../rules/base.xml.in.h:5
+msgid "101/qwerty/dot/Eliminate dead keys"
+msgstr "101/qwerty/тачка/без акцената"
+
+#: ../rules/base.xml.in.h:6
+msgid "101/qwertz/comma/Dead keys"
+msgstr "101/qwertz/запета/акценти"
+
+#: ../rules/base.xml.in.h:7
+msgid "101/qwertz/comma/Eliminate dead keys"
+msgstr "101/qwertz/запета/без акцената"
+
+#: ../rules/base.xml.in.h:8
+msgid "101/qwertz/dot/Dead keys"
+msgstr "101/qwertz/тачка/акценти"
+
+#: ../rules/base.xml.in.h:9
+msgid "101/qwertz/dot/Eliminate dead keys"
+msgstr "101/qwertz/тачка/без акцената"
+
+#: ../rules/base.xml.in.h:10
+msgid "102/qwerty/comma/Dead keys"
+msgstr "102/qwerty/запета/акценти"
+
+#: ../rules/base.xml.in.h:11
+msgid "102/qwerty/comma/Eliminate dead keys"
+msgstr "102/qwerty/запета/без акцената"
+
+#: ../rules/base.xml.in.h:12
+msgid "102/qwerty/dot/Dead keys"
+msgstr "102/qwerty/тачка/акценти"
+
+#: ../rules/base.xml.in.h:13
+msgid "102/qwerty/dot/Eliminate dead keys"
+msgstr "102/qwerty/тачка/без акцената"
+
+#: ../rules/base.xml.in.h:14
+msgid "102/qwertz/comma/Dead keys"
+msgstr "102/qwertz/запета/акценти"
+
+#: ../rules/base.xml.in.h:15
+msgid "102/qwertz/comma/Eliminate dead keys"
+msgstr "102/qwertz/запета/без акцената"
+
+#: ../rules/base.xml.in.h:16
+msgid "102/qwertz/dot/Dead keys"
+msgstr "102/qwertz/тачка/акценти"
+
+#: ../rules/base.xml.in.h:17
+msgid "102/qwertz/dot/Eliminate dead keys"
+msgstr "102/qwertz/тачка/без акцената"
+
+#: ../rules/base.xml.in.h:18
+msgid "A4Tech KB-21"
+msgstr "A4Tech KB-21"
+
+#: ../rules/base.xml.in.h:19
+msgid "A4Tech KBS-8"
+msgstr "A4Tech KBS-8"
+
+#: ../rules/base.xml.in.h:20
+msgid "ACPI Standard"
+msgstr "ACPI Ñтандард"
+
+#: ../rules/base.xml.in.h:21
+msgid "Acer AirKey V"
+msgstr "Acer AirKey V"
+
+#: ../rules/base.xml.in.h:22
+msgid "Acer TravelMate 800"
+msgstr "Acer TravelMate 800"
+
+#: ../rules/base.xml.in.h:23
+msgid "Add the EuroSign to the 2 key."
+msgstr "Додај знак за евро на таÑтер 2."
+
+#: ../rules/base.xml.in.h:24
+msgid "Add the EuroSign to the 5 key."
+msgstr "Додај знак за евро на таÑтер 5."
+
+#: ../rules/base.xml.in.h:25
+msgid "Add the EuroSign to the E key."
+msgstr "Додај знак за евро на таÑтер E."
+
+#: ../rules/base.xml.in.h:26
+msgid "Add the standard behavior to Menu key."
+msgstr "Додај обично понашање Menu таÑтеру."
+
+#: ../rules/base.xml.in.h:27
+msgid "Adding the EuroSign to certain keys"
+msgstr "Додавање знака за евро одређеним таÑтерима"
+
+#
+#: ../rules/base.xml.in.h:28
+msgid "Advance Scorpius KI"
+msgstr "Ðапредни Шкорпион КИ"
+
+#: ../rules/base.xml.in.h:29
+msgid "Afg"
+msgstr "афг"
+
+#: ../rules/base.xml.in.h:30
+msgid "Afghanistan"
+msgstr "ÐфганиÑтан"
+
+#: ../rules/base.xml.in.h:31
+msgid "Akan"
+msgstr "акан"
+
+#: ../rules/base.xml.in.h:32
+msgid "Alb"
+msgstr "алб"
+
+#: ../rules/base.xml.in.h:33
+msgid "Albania"
+msgstr "Ðлбанија"
+
+#: ../rules/base.xml.in.h:34
+msgid "Alt and Meta are on the Alt keys (default)."
+msgstr "Alt и Meta Ñу на Alt таÑтерима (подразумевано)."
+
+#: ../rules/base.xml.in.h:35
+msgid "Alt is mapped to the right Win-key and Super to Menu."
+msgstr "Alt је мапиран на деÑни Windows таÑтер, а Super на Menu."
+
+#: ../rules/base.xml.in.h:36
+msgid "Alt+Ctrl changes group."
+msgstr "Alt+Ctrl мења групу."
+
+#: ../rules/base.xml.in.h:37
+msgid "Alt+Shift changes group."
+msgstr "Alt+Shift мења групу."
+
+#: ../rules/base.xml.in.h:38
+msgid "Alt-Q"
+msgstr "Alt-Q"
+
+#: ../rules/base.xml.in.h:39
+msgid "Alt/Win key behavior"
+msgstr "Понашање Alt/Win таÑтера"
+
+# Ðаизменично?
+#: ../rules/base.xml.in.h:40
+msgid "Alternative"
+msgstr "ДопунÑка"
+
+#: ../rules/base.xml.in.h:41
+msgid "Alternative international (former us_intl)"
+msgstr "ДопунÑка међународна (бивша us_intl)"
+
+#: ../rules/base.xml.in.h:42
+msgid "Alternative, Sun dead keys"
+msgstr "ДопунÑка, Sun-ови акценти"
+
+#: ../rules/base.xml.in.h:43
+msgid "Alternative, eliminate dead keys"
+msgstr "ДопунÑка, без акцената"
+
+#: ../rules/base.xml.in.h:44
+msgid "And"
+msgstr "анд"
+
+#: ../rules/base.xml.in.h:45
+msgid "Andorra"
+msgstr "Ðндора"
+
+#: ../rules/base.xml.in.h:46
+msgid "Apostrophe (') variant"
+msgstr "Варијанта Ñа апоÑтрофом (')"
+
+#: ../rules/base.xml.in.h:47
+msgid "Ara"
+msgstr "ара"
+
+#: ../rules/base.xml.in.h:48
+msgid "Arabic"
+msgstr "арапÑки"
+
+#: ../rules/base.xml.in.h:49
+msgid "Arm"
+msgstr "јрм"
+
+#: ../rules/base.xml.in.h:50
+msgid "Armenia"
+msgstr "Јерменија"
+
+#: ../rules/base.xml.in.h:51
+msgid "Aze"
+msgstr "азб"
+
+#: ../rules/base.xml.in.h:52
+msgid "Azerbaijan"
+msgstr "Ðзербејџан"
+
+#: ../rules/base.xml.in.h:53
+msgid "Azona RF2300 wireless Internet Keyboard"
+msgstr "Azona RF2300 бежична Интернет таÑтатура"
+
+#: ../rules/base.xml.in.h:54
+msgid "BTC 5090"
+msgstr "BTC 5090"
+
+#: ../rules/base.xml.in.h:55
+msgid "BTC 5113RF Multimedia"
+msgstr "BTC 5113RF мултимедијална"
+
+#: ../rules/base.xml.in.h:56
+msgid "BTC 5126T"
+msgstr "BTC 5126T"
+
+#: ../rules/base.xml.in.h:57
+msgid "BTC 9000"
+msgstr "BTC 9000"
+
+#: ../rules/base.xml.in.h:58
+msgid "BTC 9000A"
+msgstr "BTC 9000A"
+
+#: ../rules/base.xml.in.h:59
+msgid "BTC 9001AH"
+msgstr "BTC 9001AH"
+
+#: ../rules/base.xml.in.h:60
+msgid "Ban"
+msgstr "бан"
+
+#: ../rules/base.xml.in.h:61
+msgid "Bangladesh"
+msgstr "Бангладеш"
+
+#: ../rules/base.xml.in.h:62
+msgid "Bel"
+msgstr "блг"
+
+#: ../rules/base.xml.in.h:63
+msgid "Belarus"
+msgstr "БелоруÑија"
+
+#: ../rules/base.xml.in.h:64
+msgid "Belgium"
+msgstr "Белгија"
+
+#: ../rules/base.xml.in.h:65
+msgid "Bengali"
+msgstr "бенгалÑки"
+
+#: ../rules/base.xml.in.h:66
+msgid "Bengali Probhat"
+msgstr "бенгалÑки пробат"
+
+#: ../rules/base.xml.in.h:67
+msgid "Bgr"
+msgstr "буг"
+
+#: ../rules/base.xml.in.h:68
+msgid "Bhu"
+msgstr "бут"
+
+#: ../rules/base.xml.in.h:69
+msgid "Bhutan"
+msgstr "Бутан"
+
+#: ../rules/base.xml.in.h:70
+msgid "Bih"
+msgstr "бих"
+
+#: ../rules/base.xml.in.h:71
+msgid "Blr"
+msgstr "блр"
+
+#: ../rules/base.xml.in.h:72
+msgid "Bosnia and Herzegovina"
+msgstr "БоÑна и Херцеговина"
+
+#: ../rules/base.xml.in.h:73
+msgid "Both Alt keys together change group."
+msgstr "Оба Alt таÑтера мењају групу."
+
+#: ../rules/base.xml.in.h:74
+msgid "Both Ctrl keys together change group."
+msgstr "Оба Ctrl таÑтера мењају групу."
+
+#: ../rules/base.xml.in.h:75
+msgid "Both Shift keys together change group."
+msgstr "Оба Shift таÑтера мењају групу."
+
+#: ../rules/base.xml.in.h:76
+msgid "Both Win-keys switch group while pressed."
+msgstr "Оба Win-таÑтера мењају групу када Ñу притиÑнути."
+
+#: ../rules/base.xml.in.h:77
+msgid "Bra"
+msgstr "бра"
+
+#: ../rules/base.xml.in.h:78
+msgid "Brazil"
+msgstr "Бразил"
+
+#: ../rules/base.xml.in.h:79
+msgid "Brazilian ABNT2"
+msgstr "бразилÑка ABNT2"
+
+#: ../rules/base.xml.in.h:80
+msgid "Brother Internet Keyboard"
+msgstr "Brother Интернет таÑтатура"
+
+#: ../rules/base.xml.in.h:81
+msgid "Bulgaria"
+msgstr "БугарÑка"
+
+#: ../rules/base.xml.in.h:82
+msgid "Cambodia"
+msgstr "Камбоџа"
+
+#: ../rules/base.xml.in.h:83
+msgid "Can"
+msgstr "кан"
+
+#: ../rules/base.xml.in.h:84
+msgid "Canada"
+msgstr "Канада"
+
+#: ../rules/base.xml.in.h:85
+msgid "Caps Lock is Compose."
+msgstr "Caps Lock је комбинујући таÑтер."
+
+#: ../rules/base.xml.in.h:86
+msgid "CapsLock LED shows alternative group."
+msgstr "Лампица за Caps Lock показује измењивање групе."
+
+#: ../rules/base.xml.in.h:87
+msgid "CapsLock acts as Shift with locking. Shift cancels CapsLock."
+msgstr "CapsLock Ñе понаша као трајни Shift. Shift укида Caps."
+
+#: ../rules/base.xml.in.h:88
+msgid "CapsLock acts as Shift with locking. Shift doesn't cancel CapsLock."
+msgstr "CapsLock Ñе понаша као трајни Shift. Shift не укида Caps."
+
+#: ../rules/base.xml.in.h:89
+msgid "CapsLock just locks the Shift modifier."
+msgstr "CapsLock проÑто трајно укључује Shift."
+
+#: ../rules/base.xml.in.h:90
+msgid "CapsLock key behavior"
+msgstr "Понашање Caps Lock таÑтера"
+
+#: ../rules/base.xml.in.h:91
+msgid "CapsLock key changes group."
+msgstr "Caps Lock таÑтер мења групу."
+
+#: ../rules/base.xml.in.h:92
+msgid "CapsLock toggles Shift so all keys are affected."
+msgstr "CapsLock мења Shift Ñтање па делује на Ñве таÑтере."
+
+#: ../rules/base.xml.in.h:93
+msgid "CapsLock toggles normal capitalization of alphabetic characters."
+msgstr "CapsLock мења обичну величину Ñлова."
+
+#: ../rules/base.xml.in.h:94
+msgid "CapsLock uses internal capitalization. Shift cancels CapsLock."
+msgstr "CapsLock кориÑти унутрашњу величину Ñлова. Shift укида Caps Lock."
+
+#: ../rules/base.xml.in.h:95
+msgid "CapsLock uses internal capitalization. Shift doesn't cancel CapsLock."
+msgstr "CapsLock кориÑти унутрашњу величину Ñлова. Shift не укида Caps Lock."
+
+#: ../rules/base.xml.in.h:96
+msgid "Catalan variant with middle-dot L"
+msgstr "каталонÑка варијанта Ñа L и Ñредњом тачком"
+
+#: ../rules/base.xml.in.h:97
+msgid "Che"
+msgstr "швц"
+
+#: ../rules/base.xml.in.h:98
+msgid "Cherry Blue Line CyBo@rd"
+msgstr "Cherry Blue Line CyBo@rd"
+
+#: ../rules/base.xml.in.h:99
+msgid "Cherry Blue Line CyBo@rd (alternate option)"
+msgstr "Cherry Blue Line CyBo@rd (друга могућноÑÑ‚)"
+
+#: ../rules/base.xml.in.h:100
+msgid "Cherry CyBo@rd USB-Hub"
+msgstr "Cherry CyBo@rd USB-Hub"
+
+#: ../rules/base.xml.in.h:101
+msgid "Cherry CyMotion Master Linux"
+msgstr "Cherry CyMotion Master Linux"
+
+#: ../rules/base.xml.in.h:102
+msgid "Chicony Internet Keyboard"
+msgstr "Chicony Интернет таÑтатура"
+
+#: ../rules/base.xml.in.h:103
+msgid "Chicony KB-9885"
+msgstr "Chicony KB-9885"
+
+#: ../rules/base.xml.in.h:104
+msgid "CloGaelach"
+msgstr "CloGaelach"
+
+#: ../rules/base.xml.in.h:105
+msgid "Compaq Easy Access Keyboard"
+msgstr "Compaq таÑтатура за лак приÑтуп"
+
+#: ../rules/base.xml.in.h:106
+msgid "Compaq Internet Keyboard (13 keys)"
+msgstr "Compaq Интернет таÑтатура (13 таÑтера)"
+
+#: ../rules/base.xml.in.h:107
+msgid "Compaq Internet Keyboard (18 keys)"
+msgstr "Compaq Интернет таÑтатура (18 таÑтера)"
+
+#: ../rules/base.xml.in.h:108
+msgid "Compaq Internet Keyboard (7 keys)"
+msgstr "Compaq Интернет таÑтатура (7 таÑтера)"
+
+#: ../rules/base.xml.in.h:109
+msgid "Compaq iPaq Keyboard"
+msgstr "Compaq iPaq таÑтатура"
+
+#: ../rules/base.xml.in.h:110
+msgid "Compose key position"
+msgstr "Положај таÑтера Compose"
+
+#: ../rules/base.xml.in.h:111
+msgid "Croatia"
+msgstr "ХрватÑка"
+
+#: ../rules/base.xml.in.h:112
+msgid "Ctrl key at bottom left"
+msgstr "ТаÑтер Ctrl је у дну лево"
+
+#: ../rules/base.xml.in.h:113
+msgid "Ctrl key at left of 'A'"
+msgstr "ТаÑтер Ctrl је у лево од „Ð“"
+
+#: ../rules/base.xml.in.h:114
+msgid "Ctrl key position"
+msgstr "Положај таÑтера Ctrl"
+
+#: ../rules/base.xml.in.h:115
+msgid "Ctrl+Shift changes group."
+msgstr "Ctrl+Shift мења групу."
+
+#: ../rules/base.xml.in.h:116
+msgid "Cyrillic"
+msgstr "ћирилични"
+
+#: ../rules/base.xml.in.h:117
+msgid "Cze"
+msgstr "чеш"
+
+#: ../rules/base.xml.in.h:118
+msgid "Czechia"
+msgstr "Чешка"
+
+#: ../rules/base.xml.in.h:119
+msgid "DTK2000"
+msgstr "DTK2000"
+
+#: ../rules/base.xml.in.h:120
+msgid "Dead acute"
+msgstr "ÐкутÑки акценат"
+
+#: ../rules/base.xml.in.h:121
+msgid "Dead grave acute"
+msgstr "Ð“Ñ€Ð°Ð²Ð¸Ñ Ð°ÐºÑƒÑ‚Ñки акценат"
+
+#: ../rules/base.xml.in.h:122
+msgid "Dell"
+msgstr "Dell"
+
+#: ../rules/base.xml.in.h:123
+msgid "Dell 101-key PC"
+msgstr "Dell 101-таÑтер PC"
+
+#: ../rules/base.xml.in.h:124
+msgid "Dell USB Multimedia Keybard"
+msgstr "Dell USB мултимедијална таÑтатура"
+
+#: ../rules/base.xml.in.h:125
+msgid "Denmark"
+msgstr "ДанÑка"
+
+#: ../rules/base.xml.in.h:126
+msgid "Deu"
+msgstr "нем"
+
+#: ../rules/base.xml.in.h:127
+msgid "Dexxa Wireless Desktop Keyboard"
+msgstr "Dexxa бежична таÑтатура"
+
+#: ../rules/base.xml.in.h:128
+msgid "Diamond 9801 / 9802 series"
+msgstr "Diamond 9801 / 9802 Ñерија"
+
+#: ../rules/base.xml.in.h:129
+msgid "Dnk"
+msgstr "дан"
+
+#: ../rules/base.xml.in.h:130
+msgid "Dvorak"
+msgstr "дворак"
+
+#: ../rules/base.xml.in.h:131
+msgid "Dvorak, Polish quotes on key \"1/!\""
+msgstr "дворак, пољÑки наводници на таÑтеру „1/!“"
+
+#: ../rules/base.xml.in.h:132
+msgid "Dvorak, Polish quotes on quotemark key"
+msgstr "дворак, пољÑки наводници на таÑтеру наводника"
+
+#: ../rules/base.xml.in.h:133
+msgid "Eliminate dead keys"
+msgstr "Уклони акценте"
+
+#: ../rules/base.xml.in.h:134
+msgid "Ennyah DKB-1008"
+msgstr "Ennyah DKB-1008"
+
+#: ../rules/base.xml.in.h:135
+msgid "Epo"
+msgstr "еÑп"
+
+#: ../rules/base.xml.in.h:136
+msgid "Esp"
+msgstr "шпа"
+
+#: ../rules/base.xml.in.h:137
+msgid "Esperanto"
+msgstr "еÑперанто"
+
+#: ../rules/base.xml.in.h:138
+msgid "Est"
+msgstr "еÑÑ‚"
+
+#: ../rules/base.xml.in.h:139
+msgid "Estonia"
+msgstr "ЕÑтонија"
+
+#: ../rules/base.xml.in.h:140
+msgid "Everex STEPnote"
+msgstr "Everex STEPnote"
+
+#: ../rules/base.xml.in.h:141
+msgid "Ewe"
+msgstr "Еве"
+
+#: ../rules/base.xml.in.h:142
+msgid "Extended"
+msgstr "Проширено"
+
+#: ../rules/base.xml.in.h:143
+msgid "Extended Backslash"
+msgstr "Проширено уз обрнуту коÑу црту"
+
+#: ../rules/base.xml.in.h:144
+msgid "F-letter (F) variant"
+msgstr "Варијанта Ñа F-Ñловом (F)"
+
+#: ../rules/base.xml.in.h:145
+msgid "Fao"
+msgstr "фар"
+
+#: ../rules/base.xml.in.h:146
+msgid "Faroe Islands"
+msgstr "ФарÑка оÑтрва"
+
+#: ../rules/base.xml.in.h:147
+msgid "Fin"
+msgstr "фин"
+
+#: ../rules/base.xml.in.h:148
+msgid "Finland"
+msgstr "ФинÑка"
+
+#: ../rules/base.xml.in.h:149
+msgid "Fra"
+msgstr "фра"
+
+#: ../rules/base.xml.in.h:150
+msgid "France"
+msgstr "ФранцуÑка"
+
+#: ../rules/base.xml.in.h:151
+msgid "French"
+msgstr "француÑки"
+
+#: ../rules/base.xml.in.h:152
+msgid "French (legacy)"
+msgstr "француÑки (клаÑични)"
+
+#: ../rules/base.xml.in.h:153
+msgid "French Dvorak"
+msgstr "француÑки дворак"
+
+#: ../rules/base.xml.in.h:154
+msgid "French, Sun dead keys"
+msgstr "француÑки, Sun-ови акценти"
+
+#: ../rules/base.xml.in.h:155
+msgid "French, eliminate dead keys"
+msgstr "ФранцуÑки, без акцената"
+
+#: ../rules/base.xml.in.h:156
+msgid "Fula"
+msgstr "Фула"
+
+#: ../rules/base.xml.in.h:157
+msgid "GBr"
+msgstr "вбр"
+
+#: ../rules/base.xml.in.h:158
+msgid "Ga"
+msgstr "Га"
+
+#: ../rules/base.xml.in.h:159
+msgid "Generic 101-key PC"
+msgstr "Обична Ñа 101 таÑтером"
+
+#: ../rules/base.xml.in.h:160
+msgid "Generic 102-key (Intl) PC"
+msgstr "Обична Ñа 102 таÑтера (међунар.)"
+
+#: ../rules/base.xml.in.h:161
+msgid "Generic 104-key PC"
+msgstr "Обична Ñа 104 таÑтера"
+
+#: ../rules/base.xml.in.h:162
+msgid "Generic 105-key (Intl) PC"
+msgstr "Обична Ñа 105 таÑтера (међунар.)"
+
+#: ../rules/base.xml.in.h:163
+msgid "Genius Comfy KB-12e"
+msgstr "Genius Comfy KB-12e"
+
+#: ../rules/base.xml.in.h:164
+msgid "Genius Comfy KB-16M / Genius MM Keyboard KWD-910"
+msgstr "Genius Comfy KB-16M / Genius ММ таÑтатура KWD-910"
+
+#: ../rules/base.xml.in.h:165
+msgid "Genius Comfy KB-21e-Scroll"
+msgstr "Genius Comfy KB-21e-Scroll"
+
+#: ../rules/base.xml.in.h:166
+msgid "Geo"
+msgstr "гру"
+
+#: ../rules/base.xml.in.h:167
+msgid "Georgia"
+msgstr "Грузија"
+
+#: ../rules/base.xml.in.h:168
+msgid "German, Sun dead keys"
+msgstr "немачки, Sun-ови акценти"
+
+#: ../rules/base.xml.in.h:169
+msgid "German, eliminate dead keys"
+msgstr "немачки, без акцената"
+
+#: ../rules/base.xml.in.h:170
+msgid "Germany"
+msgstr "Ðемачка"
+
+#: ../rules/base.xml.in.h:171
+msgid "Gha"
+msgstr "га"
+
+#: ../rules/base.xml.in.h:172
+msgid "Ghana"
+msgstr "Гана"
+
+#: ../rules/base.xml.in.h:173
+msgid "Gre"
+msgstr "грк"
+
+#: ../rules/base.xml.in.h:174
+msgid "Greece"
+msgstr "Грчка"
+
+#: ../rules/base.xml.in.h:175
+msgid "Group Shift/Lock behavior"
+msgstr "Понашање измене/избора групе"
+
+#: ../rules/base.xml.in.h:176
+msgid "Gujarati"
+msgstr "гујарати"
+
+#: ../rules/base.xml.in.h:177
+msgid "Gurmukhi"
+msgstr "гурмуки"
+
+#: ../rules/base.xml.in.h:178
+msgid "Gyration"
+msgstr "Gyration"
+
+#: ../rules/base.xml.in.h:179
+msgid "Hausa"
+msgstr "ХауÑа"
+
+#: ../rules/base.xml.in.h:180
+msgid "Hewlett-Packard Internet Keyboard"
+msgstr "Hewlett-Packard Интернет таÑтатура"
+
+#: ../rules/base.xml.in.h:181
+msgid "Hewlett-Packard Omnibook 500 FA"
+msgstr "Hewlett-Packard Omnibook 500 FA"
+
+#: ../rules/base.xml.in.h:182
+msgid "Hewlett-Packard Omnibook 5xx"
+msgstr "Hewlett-Packard Omnibook 5xx"
+
+#: ../rules/base.xml.in.h:183
+msgid "Hewlett-Packard Omnibook 6000/6100"
+msgstr "Hewlett-Packard Omnibook 6000/6100"
+
+#: ../rules/base.xml.in.h:184
+msgid "Hewlett-Packard Omnibook XE3 GC"
+msgstr "Hewlett-Packard Omnibook XE3 GC"
+
+#: ../rules/base.xml.in.h:185
+msgid "Hewlett-Packard Omnibook XE3 GF"
+msgstr "Hewlett-Packard Omnibook XE3 GF"
+
+#: ../rules/base.xml.in.h:186
+msgid "Hewlett-Packard Omnibook XT1000"
+msgstr "Hewlett-Packard Omnibook XT1000"
+
+#: ../rules/base.xml.in.h:187
+msgid "Hewlett-Packard Pavilion ZT11xx"
+msgstr "Hewlett-Packard Pavilion ZT11xx"
+
+#: ../rules/base.xml.in.h:188
+msgid "Hewlett-Packard SK-2501 Multimedia Keyboard"
+msgstr "Hewlett-Packard SK-2501 мултимедијална таÑтатура"
+
+#: ../rules/base.xml.in.h:189
+msgid "Hewlett-Packard SK-2505 Internet Keyboard"
+msgstr "Hewlett-Packard SK-2505 Интернет таÑтатура"
+
+#: ../rules/base.xml.in.h:190
+msgid "Honeywell Euroboard"
+msgstr "Honeywell Euroboard"
+
+#: ../rules/base.xml.in.h:191
+msgid "Hrv"
+msgstr "хрв"
+
+#: ../rules/base.xml.in.h:192
+msgid "Hun"
+msgstr "мађ"
+
+#: ../rules/base.xml.in.h:193
+msgid "Hungary"
+msgstr "МађарÑка"
+
+#: ../rules/base.xml.in.h:194
+msgid "Hyper is mapped to the Win-keys."
+msgstr "Hyper је мапиран на Win таÑтере."
+
+#: ../rules/base.xml.in.h:195
+msgid "IBM Rapid Access"
+msgstr "IBM Rapid Access"
+
+#: ../rules/base.xml.in.h:196
+msgid "IBM Rapid Access II"
+msgstr "IBM Rapid Access II"
+
+#: ../rules/base.xml.in.h:197
+msgid "IBM Rapid Access II (alternate option)"
+msgstr "IBM Rapid Access II (друга могућноÑÑ‚)"
+
+#: ../rules/base.xml.in.h:198
+msgid "IBM ThinkPad 560Z/600/600E/A22E"
+msgstr "IBM ThinkPad 560Z/600/600E/A22E"
+
+#: ../rules/base.xml.in.h:199
+msgid "ISO Alternate"
+msgstr "Додатни ИСО"
+
+#: ../rules/base.xml.in.h:200
+msgid "Iceland"
+msgstr "ИÑланд"
+
+#: ../rules/base.xml.in.h:201
+msgid "Ind"
+msgstr "инд"
+
+#: ../rules/base.xml.in.h:202
+msgid "India"
+msgstr "Индија"
+
+#: ../rules/base.xml.in.h:203
+msgid "International (with dead keys)"
+msgstr "Међународна (Ñа акцентима)"
+
+#: ../rules/base.xml.in.h:204
+msgid "Inuktitut"
+msgstr "инуктитут"
+
+#: ../rules/base.xml.in.h:205
+msgid "Iran"
+msgstr "Иран"
+
+#: ../rules/base.xml.in.h:206
+msgid "Ireland"
+msgstr "ИрÑка"
+
+#: ../rules/base.xml.in.h:207
+msgid "Irl"
+msgstr "ирÑ"
+
+#: ../rules/base.xml.in.h:208
+msgid "Irn"
+msgstr "ирн"
+
+#: ../rules/base.xml.in.h:209
+msgid "Isl"
+msgstr "иÑл"
+
+#: ../rules/base.xml.in.h:210
+msgid "Isr"
+msgstr "изр"
+
+#: ../rules/base.xml.in.h:211
+msgid "Israel"
+msgstr "Израел"
+
+#: ../rules/base.xml.in.h:212
+msgid "Ita"
+msgstr "ита"
+
+#: ../rules/base.xml.in.h:213
+msgid "Italy"
+msgstr "Италија"
+
+#: ../rules/base.xml.in.h:214
+msgid "Japan"
+msgstr "Јапан"
+
+#: ../rules/base.xml.in.h:215
+msgid "Japanese 106-key"
+msgstr "јапанÑки Ñа 106 таÑтера"
+
+#: ../rules/base.xml.in.h:216
+msgid "Jpn"
+msgstr "јпн"
+
+#: ../rules/base.xml.in.h:217
+msgid "Kannada"
+msgstr "канада (јужна индија)"
+
+#: ../rules/base.xml.in.h:218
+msgid "Kaz"
+msgstr "каз"
+
+#: ../rules/base.xml.in.h:219
+msgid "Kazakh with Russian"
+msgstr "казахÑтанÑки Ñа руÑким"
+
+#: ../rules/base.xml.in.h:220
+msgid "Kazakhstan"
+msgstr "КазахÑтан"
+
+#: ../rules/base.xml.in.h:221
+msgid "Keypad"
+msgstr "Ðумеричка таÑтатура"
+
+#: ../rules/base.xml.in.h:222
+msgid "Keytronic FlexPro"
+msgstr "Keytronic FlexPro"
+
+#: ../rules/base.xml.in.h:223
+msgid "Khm"
+msgstr "кмб"
+
+#: ../rules/base.xml.in.h:224
+msgid "Kyr"
+msgstr "кир"
+
+#: ../rules/base.xml.in.h:225
+msgid "Kyrgyzstan"
+msgstr "КиргиÑтан"
+
+#: ../rules/base.xml.in.h:226
+msgid "LAm"
+msgstr "ЈÐм"
+
+#: ../rules/base.xml.in.h:227
+msgid "Lao"
+msgstr "лао"
+
+#: ../rules/base.xml.in.h:228
+msgid "Laos"
+msgstr "ЛаоÑ"
+
+#: ../rules/base.xml.in.h:229
+msgid "Laptop/notebook Compaq (eg. Armada) Laptop Keyboard"
+msgstr "ТаÑтатуре преноÑних рачунара из Compaq-а (нпр. Armada)"
+
+#: ../rules/base.xml.in.h:230
+msgid "Laptop/notebook Compaq (eg. Presario) Internet Keyboard"
+msgstr "ТаÑтатуре преноÑних рачунара из Compaq-а (нпр. Presario)"
+
+#: ../rules/base.xml.in.h:231
+msgid "Laptop/notebook Dell Inspiron 6xxx/8xxx"
+msgstr "ТаÑтатуре преноÑних рачунара Dell Inspiron 6xxx/8xxx"
+
+#: ../rules/base.xml.in.h:232
+msgid "Laptop/notebook eMachines m68xx"
+msgstr "ПреноÑне eMachines m68xx"
+
+#: ../rules/base.xml.in.h:233
+msgid "Latin"
+msgstr "латинични"
+
+#: ../rules/base.xml.in.h:234
+msgid "Latin American"
+msgstr "јужноамерички"
+
+#: ../rules/base.xml.in.h:235
+msgid "Latin Unicode"
+msgstr "латинични Уникод"
+
+#: ../rules/base.xml.in.h:236
+msgid "Latin Unicode qwerty"
+msgstr "латинични Уникод qwerty"
+
+#: ../rules/base.xml.in.h:237
+msgid "Latin qwerty"
+msgstr "латинични qwerty"
+
+#: ../rules/base.xml.in.h:238
+msgid "Latin with guillemots"
+msgstr "латинични Ñа гиљемотима"
+
+#: ../rules/base.xml.in.h:239
+msgid "Latvia"
+msgstr "Летонија"
+
+#: ../rules/base.xml.in.h:240
+msgid "Left Alt key changes group."
+msgstr "Леви Alt таÑтер мења групу."
+
+#: ../rules/base.xml.in.h:241
+msgid "Left Alt key switches group while pressed."
+msgstr "Леви Alt таÑтер мења групу док је притиÑнут."
+
+#: ../rules/base.xml.in.h:242
+msgid "Left Ctrl key changes group."
+msgstr "Леви Ctrl таÑтер мења групу."
+
+#: ../rules/base.xml.in.h:243
+msgid "Left Shift key changes group."
+msgstr "Леви Shift таÑтер мења групу."
+
+#: ../rules/base.xml.in.h:244
+msgid "Left Win-key changes group."
+msgstr "Леви Windows таÑтер мења групу."
+
+#: ../rules/base.xml.in.h:245
+msgid "Left Win-key switches group while pressed."
+msgstr "Леви Windows таÑтер мења групу док је притиÑнут."
+
+#: ../rules/base.xml.in.h:246
+msgid "Left handed Dvorak"
+msgstr "Леворучни Дворак"
+
+#: ../rules/base.xml.in.h:247
+msgid "Lithuania"
+msgstr "Литванија"
+
+#: ../rules/base.xml.in.h:248
+msgid "Logitech Access Keyboard"
+msgstr "Logitech Access таÑтатура"
+
+#: ../rules/base.xml.in.h:249
+msgid "Logitech Cordless Desktop"
+msgstr "Logitech Cordless Desktop"
+
+#: ../rules/base.xml.in.h:250
+msgid "Logitech Cordless Desktop Navigator"
+msgstr "Logitech Cordless Desktop Navigator"
+
+#: ../rules/base.xml.in.h:251
+msgid "Logitech Cordless Desktop Optical"
+msgstr "Logitech Cordless Desktop Optical"
+
+#: ../rules/base.xml.in.h:252
+msgid "Logitech Cordless Desktop Pro"
+msgstr "Logitech Cordless Desktop Pro"
+
+#: ../rules/base.xml.in.h:253
+msgid "Logitech Cordless Desktop Pro (alternate option)"
+msgstr "Logitech Cordless Desktop Pro (додатна могућноÑÑ‚)"
+
+#: ../rules/base.xml.in.h:254
+msgid "Logitech Cordless Desktop Pro (alternate option2)"
+msgstr "Logitech Cordless Desktop Pro (додатна могућноÑÑ‚ 2)"
+
+#: ../rules/base.xml.in.h:255
+msgid "Logitech Cordless Desktop iTouch"
+msgstr "Logitech Cordless Desktop iTouch"
+
+#: ../rules/base.xml.in.h:256
+msgid "Logitech Cordless Freedom/Desktop Navigator"
+msgstr "Logitech Cordless Freedom/Desktop Navigator"
+
+#: ../rules/base.xml.in.h:257
+msgid "Logitech Deluxe Access Keyboard"
+msgstr "Logitech Deluxe Access таÑтатура"
+
+#: ../rules/base.xml.in.h:258
+msgid "Logitech Internet Keyboard"
+msgstr "Logitech Интернет таÑтатура"
+
+#: ../rules/base.xml.in.h:259
+msgid "Logitech Internet Navigator Keyboard"
+msgstr "Logitech Интернет навигатор таÑтатура"
+
+#: ../rules/base.xml.in.h:260
+msgid "Logitech Ultra-X Keyboard"
+msgstr "Logitech Ultra-X таÑтатура"
+
+#: ../rules/base.xml.in.h:261
+msgid "Logitech iTouch"
+msgstr "Logitech iTouch"
+
+#: ../rules/base.xml.in.h:262
+msgid "Logitech iTouch Cordless Keyboard (model Y-RB6)"
+msgstr "Logitech iTouch Cordless таÑтатура (модел Y-RB6)"
+
+#: ../rules/base.xml.in.h:263
+msgid "Logitech iTouch keyboard Internet Navigator"
+msgstr "Logitech iTouch таÑтатура Интернет навигатор"
+
+#: ../rules/base.xml.in.h:264
+msgid "Ltu"
+msgstr "лит"
+
+#: ../rules/base.xml.in.h:265
+msgid "Lva"
+msgstr "лет"
+
+#: ../rules/base.xml.in.h:266
+msgid "Macedonia"
+msgstr "Македонија"
+
+#: ../rules/base.xml.in.h:267
+msgid "Macintosh"
+msgstr "Мекинтош"
+
+#: ../rules/base.xml.in.h:268
+msgid "Macintosh Old"
+msgstr "Стари Мекинтош"
+
+#: ../rules/base.xml.in.h:269
+msgid "Make CapsLock an additional Ctrl."
+msgstr "Учини Caps Lock додатним Ctrl таÑтером."
+
+#: ../rules/base.xml.in.h:270
+msgid "Mal"
+msgstr "мал"
+
+#: ../rules/base.xml.in.h:271
+msgid "Malayalam"
+msgstr "малајамÑки"
+
+#: ../rules/base.xml.in.h:272
+msgid "Maldives"
+msgstr "Малдиви"
+
+#: ../rules/base.xml.in.h:273
+msgid "Malta"
+msgstr "Малта"
+
+#: ../rules/base.xml.in.h:274
+msgid "Mao"
+msgstr "мао"
+
+#: ../rules/base.xml.in.h:275
+msgid "Maori"
+msgstr "Маори"
+
+#: ../rules/base.xml.in.h:276
+msgid "Memorex MX1998"
+msgstr "Memorex MX1998"
+
+#: ../rules/base.xml.in.h:277
+msgid "Memorex MX2500 EZ-Access Keyboard"
+msgstr "Memorex MX2500 EZ-Access таÑтатура"
+
+#: ../rules/base.xml.in.h:278
+msgid "Memorex MX2750"
+msgstr "Memorex MX2750"
+
+#: ../rules/base.xml.in.h:279
+msgid "Menu is Compose."
+msgstr "Menu је комбинујући таÑтер."
+
+#: ../rules/base.xml.in.h:280
+msgid "Menu key changes group."
+msgstr "Menu таÑтер мења групу."
+
+#: ../rules/base.xml.in.h:281
+msgid "Meta is mapped to the Win-keys."
+msgstr "Meta је мапиран на Windows таÑтере."
+
+#: ../rules/base.xml.in.h:282
+msgid "Meta is mapped to the left Win-key."
+msgstr "Meta је мапиран на леви Windows таÑтер."
+
+#: ../rules/base.xml.in.h:283
+msgid "Microsoft Internet Keyboard"
+msgstr "МикроÑофтова Интернет таÑтатура"
+
+#: ../rules/base.xml.in.h:284
+msgid "Microsoft Internet Keyboard Pro, Swedish"
+msgstr "МикроÑофтова Интернет Про таÑтатура, шведÑки"
+
+#: ../rules/base.xml.in.h:285
+msgid "Microsoft Natural"
+msgstr "МикроÑофт Ðатурал"
+
+#: ../rules/base.xml.in.h:286
+msgid "Microsoft Natural Keyboard Pro / Microsoft Internet Keyboard Pro"
+msgstr "МикроÑофт Ðатурал таÑтатура Про / МикроÑофт Интернет таÑтатура Про "
+
+#: ../rules/base.xml.in.h:287
+msgid "Microsoft Natural Keyboard Pro OEM"
+msgstr "МикроÑофт Ðатурал таÑтатура Про ОЕМ"
+
+#: ../rules/base.xml.in.h:288
+msgid "Microsoft Natural Keyboard Pro USB / Microsoft Internet Keyboard Pro"
+msgstr ""
+"МикроÑофтова Ðатурал таÑтатура Про УСБ / МикроÑофт Интернет таÑтатура Про "
+
+#: ../rules/base.xml.in.h:289
+msgid "Microsoft Office Keyboard"
+msgstr "МикроÑофтова канцеларијÑка таÑтатура"
+
+#: ../rules/base.xml.in.h:290
+msgid "Microsoft Wireless Multimedia Keyboard 1.0A"
+msgstr "МикроÑофтова бежична мултимедијална таÑтатура 1.0Ð"
+
+#: ../rules/base.xml.in.h:291
+msgid "Miscellaneous compatibility options"
+msgstr "Разне могућноÑти за ÑаглаÑноÑÑ‚"
+
+#: ../rules/base.xml.in.h:292
+msgid "Mkd"
+msgstr "мак"
+
+#: ../rules/base.xml.in.h:293
+msgid "Mlt"
+msgstr "мал"
+
+#: ../rules/base.xml.in.h:294
+msgid "Mmr"
+msgstr "ммр"
+
+#: ../rules/base.xml.in.h:295
+msgid "Mng"
+msgstr "мнг"
+
+#: ../rules/base.xml.in.h:296
+msgid "Mongolia"
+msgstr "Монголија"
+
+#: ../rules/base.xml.in.h:297
+msgid "Multilingual"
+msgstr "Вишејезична"
+
+#: ../rules/base.xml.in.h:298
+msgid "Multilingual, first part"
+msgstr "Вишејезична, први део"
+
+#: ../rules/base.xml.in.h:299
+msgid "Multilingual, second part"
+msgstr "Вишејезична, други део"
+
+#: ../rules/base.xml.in.h:300
+msgid "Myanmar"
+msgstr "Мијанмар"
+
+#: ../rules/base.xml.in.h:301
+msgid "Netherlands"
+msgstr "Холандија"
+
+#: ../rules/base.xml.in.h:302
+msgid "Nld"
+msgstr "хол"
+
+#: ../rules/base.xml.in.h:303
+msgid "Nor"
+msgstr "нор"
+
+#: ../rules/base.xml.in.h:304
+msgid "Northern Saami"
+msgstr "ÑеверноÑаамÑки"
+
+#: ../rules/base.xml.in.h:305
+msgid "Northern Saami, eliminate dead keys"
+msgstr "ÑеверноÑаамÑки, без акцената"
+
+#: ../rules/base.xml.in.h:306
+msgid "Northgate OmniKey 101"
+msgstr "Northgate OmniKey 101"
+
+#: ../rules/base.xml.in.h:307
+msgid "Norway"
+msgstr "Ðорвешка"
+
+#: ../rules/base.xml.in.h:308
+msgid "NumLock LED shows alternative group."
+msgstr "NumLock лампица приказује измене група."
+
+#: ../rules/base.xml.in.h:309
+msgid "Ogham"
+msgstr "огам"
+
+#: ../rules/base.xml.in.h:310
+msgid "Ogham IS434"
+msgstr "огам IS434"
+
+#: ../rules/base.xml.in.h:311
+msgid "Oretec MCK-800 MM/Internet keyboard"
+msgstr "Oretec MCK-800 ММ/Интернет таÑтатура"
+
+#: ../rules/base.xml.in.h:312
+msgid "Oriya"
+msgstr "орија"
+
+#: ../rules/base.xml.in.h:313
+msgid "PC-98xx Series"
+msgstr "PC-98xx Ñерија"
+
+#: ../rules/base.xml.in.h:314
+msgid "Pak"
+msgstr "пак"
+
+#: ../rules/base.xml.in.h:315
+msgid "Pakistan"
+msgstr "ПакиÑтан"
+
+#: ../rules/base.xml.in.h:316
+msgid "Pashto"
+msgstr "пашто"
+
+#: ../rules/base.xml.in.h:317
+msgid "Pattachote"
+msgstr "Паташоте"
+
+#: ../rules/base.xml.in.h:318
+msgid "Phonetic"
+msgstr "фонетÑки"
+
+#: ../rules/base.xml.in.h:319
+msgid "Pol"
+msgstr "пољ"
+
+#: ../rules/base.xml.in.h:320
+msgid "Poland"
+msgstr "ПољÑка"
+
+# не ваља, можда вишезвучни?
+#: ../rules/base.xml.in.h:321
+msgid "Polytonic"
+msgstr "вишезвучни"
+
+#: ../rules/base.xml.in.h:322
+msgid "Portugal"
+msgstr "Португалија"
+
+#: ../rules/base.xml.in.h:323
+msgid "Power G5"
+msgstr "Power G5"
+
+#: ../rules/base.xml.in.h:324
+msgid "PowerPC PS/2"
+msgstr "PowerPC PS/2"
+
+#: ../rules/base.xml.in.h:325
+msgid "Press Left Alt key to choose 3rd level."
+msgstr "ПритиÑкање левог Alt таÑтера за избор 3. нивоа."
+
+#: ../rules/base.xml.in.h:326
+msgid "Press Left Win-key to choose 3rd level."
+msgstr "ПритиÑкање левог Windows таÑтера за избор 3. нивоа."
+
+#: ../rules/base.xml.in.h:327
+msgid "Press Menu key to choose 3rd level."
+msgstr "ПритиÑкање Menu таÑтера за избор 3. нивоа."
+
+#: ../rules/base.xml.in.h:328
+msgid "Press Right Alt key to choose 3rd level."
+msgstr "ПритиÑкање деÑног Alt таÑтера за избор 3. нивоа."
+
+#: ../rules/base.xml.in.h:329
+msgid "Press Right Ctrl to choose 3rd level."
+msgstr "ПритиÑкање деÑног Ctrl таÑтера за избор 3. нивоа."
+
+#: ../rules/base.xml.in.h:330
+msgid "Press Right Win-key to choose 3rd level."
+msgstr "ПритиÑкање деÑног Windows таÑтера за избор 3. нивоа."
+
+#: ../rules/base.xml.in.h:331
+msgid "Press any of Alt keys to choose 3rd level."
+msgstr "ПритиÑкање било ког Alt таÑтера за избор 3. нивоа."
+
+#: ../rules/base.xml.in.h:332
+msgid "Press any of Win-keys to choose 3rd level."
+msgstr "ПритиÑкање било ког Windows таÑтера за избор 3. нивоа."
+
+#: ../rules/base.xml.in.h:333
+msgid "Pro"
+msgstr "про"
+
+#: ../rules/base.xml.in.h:334
+msgid "Pro Keypad"
+msgstr "Про таÑтатура"
+
+#: ../rules/base.xml.in.h:335
+msgid "Probhat"
+msgstr "пробат"
+
+#: ../rules/base.xml.in.h:336
+msgid "Propeller Voyager (KTEZ-1000)"
+msgstr "Propeller Voyager (KTEZ-1000)"
+
+#: ../rules/base.xml.in.h:337
+msgid "Prt"
+msgstr "прт"
+
+#: ../rules/base.xml.in.h:338
+msgid "QTronix Scorpius 98N+"
+msgstr "QTronix Scorpius 98N+"
+
+#: ../rules/base.xml.in.h:339
+msgid "R-Alt switches group while pressed."
+msgstr "ДеÑни Alt мења групу док је притиÑнут."
+
+#: ../rules/base.xml.in.h:340
+msgid "Right Alt is Compose."
+msgstr "ДеÑни Alt је комбинујући."
+
+#: ../rules/base.xml.in.h:341
+msgid "Right Alt key changes group."
+msgstr "ДеÑни Alt је мења групу."
+
+#: ../rules/base.xml.in.h:342
+msgid "Right Ctrl is Compose."
+msgstr "ДеÑни Ctrl је комбинујући."
+
+#: ../rules/base.xml.in.h:343
+msgid "Right Ctrl key changes group."
+msgstr "ДеÑни Ctrl мења групу."
+
+#: ../rules/base.xml.in.h:344
+msgid "Right Ctrl key switches group while pressed."
+msgstr "ДеÑни Ctrl таÑтер мења групу док је притиÑнут."
+
+#: ../rules/base.xml.in.h:345
+msgid "Right Ctrl key works as Right Alt."
+msgstr "ДеÑни Ctrl таÑтер Ñе понаша као деÑни Alt."
+
+#: ../rules/base.xml.in.h:346
+msgid "Right Shift key changes group."
+msgstr "ДеÑни Shift мења групу."
+
+#: ../rules/base.xml.in.h:347
+msgid "Right Win-key changes group."
+msgstr "ДеÑни Windows таÑтер мења групу."
+
+#: ../rules/base.xml.in.h:348
+msgid "Right Win-key is Compose."
+msgstr "ДеÑни Windows таÑтер је комбинујући."
+
+#: ../rules/base.xml.in.h:349
+msgid "Right Win-key switches group while pressed."
+msgstr "ДеÑни Windows таÑтер мења групу док је притиÑнут."
+
+#: ../rules/base.xml.in.h:350
+msgid "Right handed Dvorak"
+msgstr "ДеÑноручни Дворак"
+
+#: ../rules/base.xml.in.h:351
+msgid "Romania"
+msgstr "Румунија"
+
+#: ../rules/base.xml.in.h:352
+msgid "Romanian keyboard with German letters"
+msgstr "румунÑка таÑтатура Ñа немачким Ñловима"
+
+#: ../rules/base.xml.in.h:353
+msgid "Romanian keyboard with German letters, eliminate dead keys"
+msgstr "румунÑка таÑтатура Ñа немачким Ñловима, без акцената"
+
+#: ../rules/base.xml.in.h:354
+msgid "Rou"
+msgstr "рум"
+
+#: ../rules/base.xml.in.h:355
+msgid "Rus"
+msgstr "руÑ"
+
+#: ../rules/base.xml.in.h:356
+msgid "Russia"
+msgstr "РуÑија"
+
+#: ../rules/base.xml.in.h:357
+msgid "Russian"
+msgstr "руÑки"
+
+#: ../rules/base.xml.in.h:358
+msgid "Russian phonetic"
+msgstr "руÑки фонетÑки"
+
+#: ../rules/base.xml.in.h:359
+msgid "Russian phonetic, eliminate dead keys"
+msgstr "руÑки фонетÑки, без акцената"
+
+#: ../rules/base.xml.in.h:360
+msgid "Russian with Kazakh"
+msgstr "руÑки Ñа казахÑтанÑким"
+
+#: ../rules/base.xml.in.h:361
+msgid "SCG"
+msgstr "СЦГ"
+
+#: ../rules/base.xml.in.h:362
+msgid "SILVERCREST Multimedia Wireless Keyboard"
+msgstr "SILVERCREST мултимедијална бежична таÑтатура"
+
+#: ../rules/base.xml.in.h:363
+msgid "SK-1300"
+msgstr "SK-1300"
+
+#: ../rules/base.xml.in.h:364
+msgid "SK-2500"
+msgstr "SK-2500"
+
+#: ../rules/base.xml.in.h:365
+msgid "SK-6200"
+msgstr "SK-6200"
+
+#: ../rules/base.xml.in.h:366
+msgid "SK-7100"
+msgstr "SK-7100"
+
+#: ../rules/base.xml.in.h:367
+msgid "SVEN Ergonomic 2500"
+msgstr "SVEN ергономÑка 2500"
+
+#: ../rules/base.xml.in.h:368
+msgid "Samsung SDM 4500P"
+msgstr "Samsung SDM 4500P"
+
+#: ../rules/base.xml.in.h:369
+msgid "Samsung SDM 4510P"
+msgstr "Samsung SDM 4510P"
+
+#: ../rules/base.xml.in.h:370
+msgid "ScrollLock LED shows alternative group."
+msgstr "ScrollLock лампица приказује измене група."
+
+#: ../rules/base.xml.in.h:371
+msgid "Serbia and Montenegro"
+msgstr "Србија и Црна Гора"
+
+#: ../rules/base.xml.in.h:372
+msgid "Shift with numpad keys works as in MS Windows."
+msgstr "Shift уз нумеричку таÑатуру ради као у MS Windows-у."
+
+#: ../rules/base.xml.in.h:373
+msgid "Shift+CapsLock changes group."
+msgstr "Shift+CapsLock таÑтер мења групу."
+
+#: ../rules/base.xml.in.h:374
+msgid "Slovakia"
+msgstr "Словачка"
+
+#: ../rules/base.xml.in.h:375
+msgid "Slovenia"
+msgstr "Словенија"
+
+#: ../rules/base.xml.in.h:376
+msgid "South Africa"
+msgstr "Јужна Ðфрика"
+
+#: ../rules/base.xml.in.h:377
+msgid "Southern Uzbek"
+msgstr "Јужни УзбекиÑтан"
+
+#: ../rules/base.xml.in.h:378
+msgid "Spain"
+msgstr "Шпанија"
+
+#: ../rules/base.xml.in.h:379
+msgid "Special keys (Ctrl+Alt+&lt;key&gt;) handled in a server."
+msgstr "Ðарочити таÑтери (Ctrl+Alt+&lt;таÑтер&gt;) које обрађује Ñервер."
+
+#: ../rules/base.xml.in.h:380
+msgid "SrL"
+msgstr "шрл"
+
+#: ../rules/base.xml.in.h:381
+msgid "Sri Lanka"
+msgstr "Шри Ланка"
+
+#: ../rules/base.xml.in.h:382
+msgid "Standard"
+msgstr "Ñтандардна"
+
+#. RSTU 2019-91
+#: ../rules/base.xml.in.h:384
+msgid "Standard RSTU"
+msgstr "Ñтандардна RSTU"
+
+#. RSTU 2019-91
+#: ../rules/base.xml.in.h:386
+msgid "Standard RSTU on Russian layout"
+msgstr "Ñтандардна RSTU на руÑком раÑпореду"
+
+#: ../rules/base.xml.in.h:387
+msgid "Sun dead keys"
+msgstr "Sun-ови акценти"
+
+#: ../rules/base.xml.in.h:388
+msgid "Super Power Multimedia Keyboard"
+msgstr "Супер моћна мултимедијална таÑтатура"
+
+#: ../rules/base.xml.in.h:389
+msgid "Super is mapped to the Win-keys (default)."
+msgstr "Super је мапиран на Windows таÑтере (подразумевано)."
+
+#: ../rules/base.xml.in.h:390
+msgid "Svk"
+msgstr "Ñлк"
+
+#: ../rules/base.xml.in.h:391
+msgid "Svn"
+msgstr "Ñло"
+
+#: ../rules/base.xml.in.h:392
+msgid "Swap Ctrl and CapsLock."
+msgstr "Размени Ctrl и Caps Lock."
+
+#: ../rules/base.xml.in.h:393
+msgid "Swe"
+msgstr "шве"
+
+#: ../rules/base.xml.in.h:394
+msgid "Sweden"
+msgstr "ШведÑка"
+
+#: ../rules/base.xml.in.h:395
+msgid "Switzerland"
+msgstr "ШвајцарÑка"
+
+#: ../rules/base.xml.in.h:396
+msgid "Symplon PaceBook (tablet PC)"
+msgstr "Symplon PaceBook (tablet PC)"
+
+#: ../rules/base.xml.in.h:397
+msgid "Syr"
+msgstr "Ñир"
+
+#: ../rules/base.xml.in.h:398
+msgid "Syria"
+msgstr "Сирија"
+
+#: ../rules/base.xml.in.h:399
+msgid "Syriac"
+msgstr "ÑиријÑки"
+
+#: ../rules/base.xml.in.h:400
+msgid "Syriac phonetic"
+msgstr "ÑиријÑки фонетÑки"
+
+#: ../rules/base.xml.in.h:401
+msgid "TIS-820.2538"
+msgstr "TIS-820.2538"
+
+#: ../rules/base.xml.in.h:402
+msgid "Tajikistan"
+msgstr "ТаџикиÑтан"
+
+#: ../rules/base.xml.in.h:403
+msgid "Tamil"
+msgstr "тамил"
+
+#: ../rules/base.xml.in.h:404
+msgid "Tamil TAB Typewriter"
+msgstr "тамил TAB куцаћа машина"
+
+#: ../rules/base.xml.in.h:405
+msgid "Tamil TSCII Typewriter"
+msgstr "тамил TSCII куцаћа машина"
+
+#: ../rules/base.xml.in.h:406
+msgid "Tamil Unicode"
+msgstr "тамил Уникод"
+
+#: ../rules/base.xml.in.h:407
+msgid "Tatar"
+msgstr "татарÑки"
+
+#: ../rules/base.xml.in.h:408
+msgid "Telugu"
+msgstr "телугу"
+
+#: ../rules/base.xml.in.h:409
+msgid "Tha"
+msgstr "тај"
+
+#: ../rules/base.xml.in.h:410
+msgid "Thailand"
+msgstr "Тајланд"
+
+#: ../rules/base.xml.in.h:411
+msgid "Third level choosers"
+msgstr "Избор трећег нивоа"
+
+#: ../rules/base.xml.in.h:412
+msgid "Tilde (~) variant"
+msgstr "Варијанта Ñа тилдом (~)"
+
+#: ../rules/base.xml.in.h:413
+msgid "Tjk"
+msgstr "тџк"
+
+#: ../rules/base.xml.in.h:414
+msgid "Toshiba Satellite S3000"
+msgstr "Toshiba Satellite S3000"
+
+#: ../rules/base.xml.in.h:415
+msgid "Trust Direct Access Keyboard"
+msgstr "Trust Direct Access таÑтатура"
+
+#: ../rules/base.xml.in.h:416
+msgid "Trust Wireless Keyboard Classic"
+msgstr "Trust клаÑична бежична таÑтатура"
+
+#: ../rules/base.xml.in.h:417
+msgid "Tur"
+msgstr "тур"
+
+#: ../rules/base.xml.in.h:418
+msgid "Turkey"
+msgstr "ТурÑка"
+
+#: ../rules/base.xml.in.h:419
+msgid "Typewriter"
+msgstr "„Куцаћа машина“"
+
+#: ../rules/base.xml.in.h:420
+msgid "U.S. English"
+msgstr "амерички енглеÑки"
+
+#: ../rules/base.xml.in.h:421
+msgid "US keyboard with Bosnian digraphs"
+msgstr "Ðмеричка таÑтатура Ñа боÑанÑким диграфима"
+
+#: ../rules/base.xml.in.h:422
+msgid "US keyboard with Bosnian letters"
+msgstr "Ðмеричка таÑтатура Ñа боÑанÑким Ñловима"
+
+#: ../rules/base.xml.in.h:423
+msgid "US keyboard with Croatian digraphs"
+msgstr "Ðмеричка таÑтатура Ñа хрватÑким диграфима"
+
+#: ../rules/base.xml.in.h:424
+msgid "US keyboard with Croatian letters"
+msgstr "Ðмеричка таÑтатура Ñа хрватÑким Ñловима"
+
+#: ../rules/base.xml.in.h:425
+msgid "US keyboard with Lithuanian letters"
+msgstr "Ðмеричка таÑтатура Ñа литванÑким Ñловима"
+
+#: ../rules/base.xml.in.h:426
+msgid "US keyboard with Maltian letters"
+msgstr "Ðмеричка таÑтатура Ñа малтешким Ñловима"
+
+#: ../rules/base.xml.in.h:427
+msgid "US keyboard with Slovenian digraphs"
+msgstr "Ðмеричка таÑтатура Ñа Ñловеначким диграфима"
+
+#: ../rules/base.xml.in.h:428
+msgid "US keyboard with Slovenian letters"
+msgstr "Ðмеричка таÑтатура Ñа Ñловеначким Ñловима"
+
+#: ../rules/base.xml.in.h:429
+msgid "USA"
+msgstr "СÐД"
+
+#: ../rules/base.xml.in.h:430
+msgid "Ukr"
+msgstr "укр"
+
+#: ../rules/base.xml.in.h:431
+msgid "Ukraine"
+msgstr "Украјина"
+
+#: ../rules/base.xml.in.h:432
+msgid "UnicodeExpert"
+msgstr "Стручна за Уникод"
+
+#: ../rules/base.xml.in.h:433
+msgid "United Kingdom"
+msgstr "Велика Британија"
+
+#: ../rules/base.xml.in.h:434
+msgid "Urdu"
+msgstr "Урду"
+
+#: ../rules/base.xml.in.h:435
+msgid "Use Bosnian digraphs"
+msgstr "КориÑти боÑанÑке диграфе"
+
+#: ../rules/base.xml.in.h:436
+msgid "Use Croatian digraphs"
+msgstr "КориÑти хрватÑке диграфе"
+
+#: ../rules/base.xml.in.h:437
+msgid "Use Slovenian digraphs"
+msgstr "КориÑти Ñловеначке диграфе"
+
+#: ../rules/base.xml.in.h:438
+msgid "Use guillemots for quotes"
+msgstr "КориÑти гиљемоте за наводнике"
+
+#: ../rules/base.xml.in.h:439
+msgid "Use keyboard LED to show alternative group."
+msgstr "КориÑти лампицу таÑтатуре за приказ измене група."
+
+#: ../rules/base.xml.in.h:440
+msgid "Uzb"
+msgstr "узб"
+
+#: ../rules/base.xml.in.h:441
+msgid "Uzbekistan"
+msgstr "УзбекиÑтан"
+
+#: ../rules/base.xml.in.h:442
+msgid "Vietnam"
+msgstr "Вијетнам"
+
+#: ../rules/base.xml.in.h:443
+msgid "Vnm"
+msgstr "вјт"
+
+#: ../rules/base.xml.in.h:444
+msgid "Winbook Model XP5"
+msgstr "Winbook Model XP5"
+
+#: ../rules/base.xml.in.h:445
+msgid "Winkeys"
+msgstr "Windows таÑтери"
+
+#: ../rules/base.xml.in.h:446
+msgid "With &lt;\\|&gt; key"
+msgstr "Уз таÑтер &lt;\\|&gt;"
+
+#: ../rules/base.xml.in.h:447
+msgid "With guillemots"
+msgstr "Са гиљемотима"
+
+#: ../rules/base.xml.in.h:448
+msgid "Yahoo! Internet Keyboard"
+msgstr "Yahoo! Интернет таÑтатура"
+
+#: ../rules/base.xml.in.h:449
+msgid "Z and ZHE swapped"
+msgstr "Размењено З и Ж"
+
+#: ../rules/base.xml.in.h:450
+msgid "Zar"
+msgstr "Зар"
+
+#: ../rules/base.xml.in.h:451
+msgid "azerty"
+msgstr "azerty"
+
+#: ../rules/base.xml.in.h:452
+msgid "azerty/digits"
+msgstr "azerty/цифре"
+
+#: ../rules/base.xml.in.h:453
+msgid "digits"
+msgstr "цифре"
+
+#: ../rules/base.xml.in.h:454
+msgid "lyx"
+msgstr "lyx"
+
+#: ../rules/base.xml.in.h:455
+msgid "qwerty"
+msgstr "qwerty"
+
+#: ../rules/base.xml.in.h:456
+msgid "qwerty, extended Backslash"
+msgstr "qwerty, проширено Ñа обрнутом коÑом цртом"
+
+#: ../rules/base.xml.in.h:457
+msgid "qwerty/digits"
+msgstr "qwerty/цифре"
+
+#: ../rules/base.xml.in.h:458
+msgid "qwertz"
+msgstr "qwertz"
+
+#: ../rules/base.xml.in.h:459
+msgid "si1452"
+msgstr "si1452"
+
+#~ msgid "Turkish"
+#~ msgstr "турÑки"
+
+#~ msgid "\"Standard\""
+#~ msgstr "„Стандардна“"
+
+# bug: Serbia and Montenegro
+#~ msgid "Serbia"
+#~ msgstr "Србија"
+
+#~ msgid "Srp"
+#~ msgstr "Ñрп"
+
+#~ msgid "Tamil INSCRIPT"
+#~ msgstr "тамил инÑкрипт"
+
+#~ msgid "US keyboard with Romanian letters"
+#~ msgstr "Ðмеричка таÑтатура Ñа румунÑким Ñловима"
+
+#~ msgid "A Tamil typewrite-style keymap; TAB encoding"
+#~ msgstr "Тамил раÑпоред налик куцаћој машини; TAB кодирање"
+
+#~ msgid "A Tamil typewrite-style keymap; TSCII encoding"
+#~ msgstr "Тамил раÑпоред налик куцаћој машини; TSCII кодирање"
+
+#~ msgid "A Tamil typewrite-style keymap; Unicode encoding"
+#~ msgstr "Тамил раÑпоред налик куцаћој машини; Уникод кодирање"
+
+#~ msgid "Arb"
+#~ msgstr "арп"
+
+#~ msgid "Basic"
+#~ msgstr "ОÑновно"
+
+#~ msgid "Ben"
+#~ msgstr "бнг"
+
+#~ msgid "Bosnian"
+#~ msgstr "бошњачки"
+
+#~ msgid "Burmese"
+#~ msgstr "бурмиÑки"
+
+#~ msgid "CloGaelach Laptop"
+#~ msgstr "CloGaelach за преноÑне рачунаре"
+
+#~ msgid "Czech (qwerty)"
+#~ msgstr "Чешки (qwerty)"
+
+#~ msgid "Danish"
+#~ msgstr "данÑки"
+
+#~ msgid "Dutch"
+#~ msgstr "холандÑки"
+
+#~ msgid "Dvo"
+#~ msgstr "дво"
+
+#~ msgid "Finnish"
+#~ msgstr "финÑки"
+
+#~ msgid "French Canadian"
+#~ msgstr "француÑки канадÑки"
+
+#~ msgid "Georgian (latin)"
+#~ msgstr "грузијÑки (латиница)"
+
+#~ msgid "Georgian (russian)"
+#~ msgstr "грузијÑки (руÑки)"
+
+#~ msgid "Grc"
+#~ msgstr "грк"
+
+#~ msgid "Guj"
+#~ msgstr "гуј"
+
+#~ msgid "Hin"
+#~ msgstr "инд"
+
+#~ msgid "Hindi"
+#~ msgstr "индијÑки"
+
+#~ msgid "Hungarian (qwerty)"
+#~ msgstr "МађарÑки (qwerty)"
+
+#~ msgid "INSCRIPT layout"
+#~ msgstr "INSCRIPT раÑпоред"
+
+#~ msgid "IS434 laptop"
+#~ msgstr "IS434 преноÑни"
+
+#~ msgid "Iku"
+#~ msgstr "ику"
+
+#~ msgid "Irish"
+#~ msgstr "ирÑки"
+
+#~ msgid "Italian"
+#~ msgstr "италијанÑки"
+
+#~ msgid "Lithuanian azerty standard"
+#~ msgstr "литванÑки azerty раÑпоред"
+
+#~ msgid "Lithuanian qwerty \"numeric\""
+#~ msgstr "литванÑки qwerty „бројевни“"
+
+#~ msgid "Maltese (US layout)"
+#~ msgstr "малтÑки (амерички раÑпоред)"
+
+#~ msgid "Northern Saami (Finland)"
+#~ msgstr "ÑеверноÑаамÑки (ФинÑка)"
+
+#~ msgid "Northern Saami (Sweden)"
+#~ msgstr "ÑеверноÑаамÑки (ШведÑка)"
+
+#~ msgid "Ogh"
+#~ msgstr "огм"
+
+#~ msgid "Ori"
+#~ msgstr "ори"
+
+#~ msgid "PC104"
+#~ msgstr "PC104"
+
+#~ msgid "Polish"
+#~ msgstr "пољÑки"
+
+#~ msgid "Polish (qwertz)"
+#~ msgstr "пољÑки (qwertz)"
+
+#~ msgid "Sapmi"
+#~ msgstr "Sapmi"
+
+#~ msgid "Scg"
+#~ msgstr "Ñрп"
+
+#~ msgid "Slovak (qwerty)"
+#~ msgstr "Ñловачки (qwerty)"
+
+#~ msgid "Sme"
+#~ msgstr "Ñме"
+
+#~ msgid "Sv"
+#~ msgstr "Ñв"
+
+#~ msgid "Swedish"
+#~ msgstr "шведÑки"
+
+#~ msgid "Swiss French"
+#~ msgstr "швајцарÑки француÑки"
+
+#~ msgid "Tel"
+#~ msgstr "тел"
+
+#~ msgid "Thai (Kedmanee)"
+#~ msgstr "тајландÑки (Кедмани)"
+
+#~ msgid "Tml"
+#~ msgstr "тмл"
+
+#~ msgid "Turkish (F)"
+#~ msgstr "турÑки (F)"
+
+#~ msgid "Turkish Alt-Q Layout"
+#~ msgstr "турÑки Alt-Q раÑпоред"
+
+#~ msgid "U.S. English w/ ISO9995-3"
+#~ msgstr "амерички енглеÑки Ñа ИСО9995-3"
+
+#~ msgid "U.S. English w/ dead keys"
+#~ msgstr "амерички енглеÑки Ñа акцентима"
+
+#~ msgid "US"
+#~ msgstr "СÐД"
+
+#~ msgid "Yug"
+#~ msgstr "Ñцг"
+
+#~ msgid "Yugoslavian"
+#~ msgstr "латинични ÑрпÑки"
+
+#~ msgid "abnt2"
+#~ msgstr "абнт2"
+
+#~ msgid "bksl"
+#~ msgstr "бкÑл"
+
+#~ msgid "laptop"
+#~ msgstr "преноÑни"
+
+#~ msgid "sefi"
+#~ msgstr "sefi"
+
+#~ msgid "uni/101/qwerty/comma"
+#~ msgstr "уни/101/qwerty/запета"
+
+#~ msgid "uni/101/qwerty/dot"
+#~ msgstr "уни/101/qwerty/тачка"
+
+#~ msgid "uni/101/qwertz/comma"
+#~ msgstr "уни/101/qwertz/запета"
+
+#~ msgid "uni/101/qwertz/dot"
+#~ msgstr "уни/101/qwertz/тачка"
+
+#~ msgid "uni/102/qwerty/comma"
+#~ msgstr "уни/102/qwerty/запета"
+
+#~ msgid "uni/102/qwerty/dot"
+#~ msgstr "уни/102/qwerty/тачка"
+
+#~ msgid "uni/102/qwertz/comma"
+#~ msgstr "уни/102/qwertz/запета"
+
+#~ msgid "uni/102/qwertz/dot"
+#~ msgstr "уни/102/qwertz/тачка"
diff --git a/xorg-server/xkeyboard-config/po/tr.po b/xorg-server/xkeyboard-config/po/tr.po
index 122e1da0f..8f68328b8 100644
--- a/xorg-server/xkeyboard-config/po/tr.po
+++ b/xorg-server/xkeyboard-config/po/tr.po
@@ -1,2595 +1,2595 @@
-# Turkish translations for xkeyboard-config.
-# Copyright (C) 2007 Free Software Foundation, Inc.
-#
-# Nilgün Belma Bugüner <nilgun@buguner.name.tr>, 2003, ..., 2007.
-msgid ""
-msgstr ""
-"Project-Id-Version: xkeyboard-config 1.0-pre1\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2007-06-28 15:21+0100\n"
-"PO-Revision-Date: 2007-07-09 10:09+0300\n"
-"Last-Translator: Nilgün Belma Bugüner <nilgun@buguner.name.tr>\n"
-"Language-Team: Turkish <gnu-tr-u12a@lists.sourceforge.net>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"X-Generator: KBabel 1.11.4\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: ../rules/base.xml.in.h:1
-msgid "(F)"
-msgstr "F Klavye"
-
-#: ../rules/base.xml.in.h:2
-msgid "(Legacy) Alternative"
-msgstr "(Eski) DiÄŸer"
-
-#: ../rules/base.xml.in.h:3
-msgid "(Legacy) Alternative, Sun dead keys"
-msgstr "(Eski) Diğer, Sun ölü tuşlar"
-
-#: ../rules/base.xml.in.h:4
-msgid "(Legacy) Alternative, eliminate dead keys"
-msgstr "(Eski) Diğer, ölü tuşsuz"
-
-#: ../rules/base.xml.in.h:5
-msgid "(Legacy) Dvorak"
-msgstr "(Kadim) Dvorak"
-
-#: ../rules/base.xml.in.h:6
-msgid "101/104 key Compatible"
-msgstr "101/104 tuÅŸ Uyumlu"
-
-#: ../rules/base.xml.in.h:7 ../rules/sun.xml.in.h:2
-msgid "101/qwerty/comma/Dead keys"
-msgstr "101/qwerty/virgül/Ölü tuşlar"
-
-#: ../rules/base.xml.in.h:8 ../rules/sun.xml.in.h:3
-msgid "101/qwerty/comma/Eliminate dead keys"
-msgstr "101/qwerty/virgül/Ölü tuşları normal yapar"
-
-#: ../rules/base.xml.in.h:9 ../rules/sun.xml.in.h:4
-msgid "101/qwerty/dot/Dead keys"
-msgstr "101/qwerty/nokta/Ölü tuşlar"
-
-#: ../rules/base.xml.in.h:10 ../rules/sun.xml.in.h:5
-msgid "101/qwerty/dot/Eliminate dead keys"
-msgstr "101/qwerty/nokta/Ölü tuşsuz"
-
-#: ../rules/base.xml.in.h:11 ../rules/sun.xml.in.h:6
-msgid "101/qwertz/comma/Dead keys"
-msgstr "101/qwertz/virgül/Ölü tuşlar"
-
-#: ../rules/base.xml.in.h:12
-msgid "101/qwertz/comma/Eliminate dead keys"
-msgstr "101/qwertz/virgül/Ölü tuşsuz"
-
-#: ../rules/base.xml.in.h:13 ../rules/sun.xml.in.h:7
-msgid "101/qwertz/dot/Dead keys"
-msgstr "101/qwertz/nokta/Ölü tuşlar"
-
-#: ../rules/base.xml.in.h:14 ../rules/sun.xml.in.h:8
-msgid "101/qwertz/dot/Eliminate dead keys"
-msgstr "101/qwertz/nokta/Ölü tuşsuz"
-
-#: ../rules/base.xml.in.h:15 ../rules/sun.xml.in.h:9
-msgid "102/qwerty/comma/Dead keys"
-msgstr "102/qwerty/virgül/Ölü tuşlar"
-
-#: ../rules/base.xml.in.h:16 ../rules/sun.xml.in.h:10
-msgid "102/qwerty/comma/Eliminate dead keys"
-msgstr "102/qwerty/virgül/Ölü tuşsuz"
-
-#: ../rules/base.xml.in.h:17 ../rules/sun.xml.in.h:11
-msgid "102/qwerty/dot/Dead keys"
-msgstr "102/qwerty/nokta/Ölü tuşlar"
-
-#: ../rules/base.xml.in.h:18 ../rules/sun.xml.in.h:12
-msgid "102/qwerty/dot/Eliminate dead keys"
-msgstr "102/qwerty/nokta/Ölü tuşsuz"
-
-#: ../rules/base.xml.in.h:19 ../rules/sun.xml.in.h:13
-msgid "102/qwertz/comma/Dead keys"
-msgstr "102/qwertz/virgül/Ölü tuşlar"
-
-#: ../rules/base.xml.in.h:20 ../rules/sun.xml.in.h:14
-msgid "102/qwertz/comma/Eliminate dead keys"
-msgstr "102/qwertz/virgül/Ölü tuşsuz"
-
-#: ../rules/base.xml.in.h:21 ../rules/sun.xml.in.h:15
-msgid "102/qwertz/dot/Dead keys"
-msgstr "102/qwertz/nokta/Ölü tuşlar"
-
-#: ../rules/base.xml.in.h:22 ../rules/sun.xml.in.h:16
-msgid "102/qwertz/dot/Eliminate dead keys"
-msgstr "102/qwertz/nokta/Ölü tuşsuz"
-
-#: ../rules/base.xml.in.h:23
-msgid "A4Tech KB-21"
-msgstr "A4Tech KB-21"
-
-#: ../rules/base.xml.in.h:24
-msgid "A4Tech KBS-8"
-msgstr "A4Tech KBS-8"
-
-#: ../rules/base.xml.in.h:25
-msgid "A4Tech Wireless Desktop RFKB-23"
-msgstr "A4Tech Wireless Desktop RFKB-23"
-
-#: ../rules/base.xml.in.h:26
-msgid "ACPI Standard"
-msgstr "ACPI Standardı"
-
-#: ../rules/base.xml.in.h:27
-msgid "AZERTY Tskapo"
-msgstr "AZERTY Tskapo"
-
-#: ../rules/base.xml.in.h:28
-msgid "Acer AirKey V"
-msgstr "Acer AirKey V"
-
-#: ../rules/base.xml.in.h:29
-msgid "Acer C300"
-msgstr "Acer C300"
-
-#: ../rules/base.xml.in.h:30
-msgid "Acer Ferrari 4000"
-msgstr "Acer Ferrari 4000"
-
-#: ../rules/base.xml.in.h:31
-msgid "Acer TravelMate 800"
-msgstr "Acer TravelMate 800"
-
-#: ../rules/base.xml.in.h:32
-msgid "Add the EuroSign to the 2 key."
-msgstr "2 tuşuna € sembolünü ekler"
-
-#: ../rules/base.xml.in.h:33
-msgid "Add the EuroSign to the 5 key."
-msgstr "5 tuşuna € sembolünü ekler"
-
-#: ../rules/base.xml.in.h:34
-msgid "Add the EuroSign to the E key."
-msgstr "E tuşuna € sembolünü ekler"
-
-#: ../rules/base.xml.in.h:35
-msgid "Add the standard behavior to Menu key."
-msgstr "Menü tuşuna standart işlevini ekler."
-
-#: ../rules/base.xml.in.h:36
-msgid "Adding the EuroSign to certain keys"
-msgstr "Belli tuşlara € sembolünün eklenmesi"
-
-#: ../rules/base.xml.in.h:37
-msgid "Advance Scorpius KI"
-msgstr "Advance Scorpius KI"
-
-#: ../rules/base.xml.in.h:38
-msgid "Afg"
-msgstr "Afg"
-
-#: ../rules/base.xml.in.h:39
-msgid "Afghanistan"
-msgstr "Afganistan"
-
-#: ../rules/base.xml.in.h:40
-msgid "Akan"
-msgstr "Akan"
-
-#: ../rules/base.xml.in.h:41
-msgid "Alb"
-msgstr "Arn"
-
-#: ../rules/base.xml.in.h:42
-msgid "Albania"
-msgstr "Arnavutluk"
-
-#: ../rules/base.xml.in.h:43
-msgid "Alt and Meta are on the Alt keys."
-msgstr "Alt ve Meta, Alt tuşlarındadır."
-
-#: ../rules/base.xml.in.h:44
-msgid "Alt is mapped to the right Win-key and Super to Menu."
-msgstr "Alt, sağdaki Pencere tuşu ile Süper ise Menü tuşu ile eşleştirilir."
-
-#: ../rules/base.xml.in.h:45
-msgid "Alt+CapsLock changes layout."
-msgstr "Alt+CapsLock yerleÅŸimi deÄŸiÅŸtirir."
-
-#: ../rules/base.xml.in.h:46
-msgid "Alt+Ctrl change layout."
-msgstr "Alt+CtrlyerleÅŸimi deÄŸiÅŸtirir."
-
-#: ../rules/base.xml.in.h:47
-msgid "Alt+Shift change layout."
-msgstr "Alt+Shift yerleÅŸimi deÄŸiÅŸtirir."
-
-#: ../rules/base.xml.in.h:48
-msgid "Alt-Q"
-msgstr "Yazılımcı klavyesi (Q)"
-
-#: ../rules/base.xml.in.h:49
-msgid "Alt/Win key behavior"
-msgstr "Alt/Pencere tuşu davranışı"
-
-#: ../rules/base.xml.in.h:50
-msgid "Alternative"
-msgstr "DiÄŸer"
-
-#: ../rules/base.xml.in.h:51
-msgid "Alternative Eastern"
-msgstr "DiÄŸer DoÄŸu"
-
-#: ../rules/base.xml.in.h:52
-msgid "Alternative Phonetic"
-msgstr "DiÄŸer Fonetik"
-
-#: ../rules/base.xml.in.h:53
-msgid "Alternative international (former us_intl)"
-msgstr "Uluslararası Q klavle (nam-ı diğer us_intl)"
-
-#: ../rules/base.xml.in.h:54
-msgid "Alternative, Sun dead keys"
-msgstr "Diğer, Sun ölü tuşlar"
-
-#: ../rules/base.xml.in.h:55
-msgid "Alternative, eliminate dead keys"
-msgstr "Diğer, ölü tuşsuz"
-
-#: ../rules/base.xml.in.h:56
-msgid "Alternative, latin-9 only"
-msgstr "DiÄŸer, sadece latin-9"
-
-#: ../rules/base.xml.in.h:57
-msgid "And"
-msgstr "And"
-
-#: ../rules/base.xml.in.h:58
-msgid "Andorra"
-msgstr "Andora"
-
-#: ../rules/base.xml.in.h:59
-msgid "Apostrophe (') variant"
-msgstr "Tek tırnaklı (')"
-
-#: ../rules/base.xml.in.h:60
-msgid "Apple"
-msgstr "Apple"
-
-#: ../rules/base.xml.in.h:61
-msgid "Apple Laptop"
-msgstr "Apple Dizüstü"
-
-#: ../rules/base.xml.in.h:62
-msgid "Ara"
-msgstr "Ara"
-
-#: ../rules/base.xml.in.h:63
-msgid "Arabic"
-msgstr "Arapça"
-
-#: ../rules/base.xml.in.h:64
-msgid "Arm"
-msgstr "Erm"
-
-#: ../rules/base.xml.in.h:65
-msgid "Armenia"
-msgstr "Ermenistan"
-
-#: ../rules/base.xml.in.h:66
-msgid "Aze"
-msgstr "Aze"
-
-#: ../rules/base.xml.in.h:67
-msgid "Azerbaijan"
-msgstr "Azerbaycan"
-
-#: ../rules/base.xml.in.h:68
-msgid "Azona RF2300 wireless Internet Keyboard"
-msgstr "Azona RF2300 wireless Internet Keyboard"
-
-#: ../rules/base.xml.in.h:69
-msgid "BTC 5090"
-msgstr "BTC 5090"
-
-#: ../rules/base.xml.in.h:70
-msgid "BTC 5113RF Multimedia"
-msgstr "BTC 5113RF Çokluortam"
-
-#: ../rules/base.xml.in.h:71
-msgid "BTC 5126T"
-msgstr "BTC 5126T"
-
-#: ../rules/base.xml.in.h:72
-msgid "BTC 9000"
-msgstr "BTC 9000"
-
-#: ../rules/base.xml.in.h:73
-msgid "BTC 9000A"
-msgstr "BTC 9000A"
-
-#: ../rules/base.xml.in.h:74
-msgid "BTC 9001AH"
-msgstr "BTC 9001AH"
-
-#: ../rules/base.xml.in.h:75
-msgid "BTC 9019U"
-msgstr "BTC 9019U"
-
-#: ../rules/base.xml.in.h:76
-msgid "Ban"
-msgstr "Ban"
-
-#: ../rules/base.xml.in.h:77
-msgid "Bangladesh"
-msgstr "BangladeÅŸ"
-
-#: ../rules/base.xml.in.h:78 ../rules/sun.xml.in.h:22
-msgid "Bel"
-msgstr "Bel"
-
-#: ../rules/base.xml.in.h:79
-msgid "Belarus"
-msgstr "Belarus"
-
-#: ../rules/base.xml.in.h:80
-msgid "Belgium"
-msgstr "Belçika"
-
-#: ../rules/base.xml.in.h:81
-msgid "BenQ X-Touch 730"
-msgstr "BenQ X-Touch 730"
-
-#: ../rules/base.xml.in.h:82
-msgid "BenQ X-Touch 800"
-msgstr "BenQ X-Touch 800"
-
-#: ../rules/base.xml.in.h:83
-msgid "Bengali"
-msgstr "Bengalce"
-
-#: ../rules/base.xml.in.h:84
-msgid "Bengali Probhat"
-msgstr "Bengali Probhat"
-
-#: ../rules/base.xml.in.h:85
-msgid "Bepo, ergonomic, Dvorak way"
-msgstr "Bepo, ergonomik, Dvorak yolu"
-
-#: ../rules/base.xml.in.h:86
-msgid "Bepo, ergonomic, Dvorak way, latin-9 only"
-msgstr "Bepo, ergonomik, Dvorak yolu, sadece latin-9"
-
-#: ../rules/base.xml.in.h:87 ../rules/sun.xml.in.h:24
-msgid "Bgr"
-msgstr "Bgr"
-
-#: ../rules/base.xml.in.h:88
-msgid "Bhu"
-msgstr "Bhu"
-
-#: ../rules/base.xml.in.h:89
-msgid "Bhutan"
-msgstr "Butan"
-
-#: ../rules/base.xml.in.h:90
-msgid "Biblical Hebrew (Tiro)"
-msgstr "Dini Ä°branice (Tiro)"
-
-#: ../rules/base.xml.in.h:91
-msgid "Bih"
-msgstr "Bih"
-
-#: ../rules/base.xml.in.h:92
-msgid "Blr"
-msgstr "Blr"
-
-#: ../rules/base.xml.in.h:93
-msgid "Bosnia and Herzegovina"
-msgstr "Bosna Hersek"
-
-#: ../rules/base.xml.in.h:94
-msgid "Both Alt keys together change layout."
-msgstr "Alt tuşları birlikte yerleşimi değiştirir."
-
-#: ../rules/base.xml.in.h:95
-msgid "Both Ctrl keys together change layout."
-msgstr "Ctrl tuşları birlikte yerleşimi değiştirir."
-
-#: ../rules/base.xml.in.h:96
-msgid "Both Shift keys together change layout."
-msgstr "Shift tuşları birlikte yerleşimi değiştirir."
-
-#: ../rules/base.xml.in.h:97
-msgid "Both Win-keys switch layout while pressed."
-msgstr "Pencere tuşları birlikte yerleşimi değiştirir."
-
-#: ../rules/base.xml.in.h:98
-msgid "Bra"
-msgstr "Bra"
-
-#: ../rules/base.xml.in.h:99
-msgid "Braille"
-msgstr "Üç noktalı"
-
-#: ../rules/base.xml.in.h:100
-msgid "Brazil"
-msgstr "Brezilya"
-
-#: ../rules/base.xml.in.h:101
-msgid "Brazilian ABNT2"
-msgstr "Brazilya dili ABNT2"
-
-#: ../rules/base.xml.in.h:102
-msgid "Brl"
-msgstr "Brl"
-
-#: ../rules/base.xml.in.h:103
-msgid "Brother Internet Keyboard"
-msgstr "Brother Genel AÄŸ Klavyesi"
-
-#: ../rules/base.xml.in.h:104
-msgid "Buckwalter"
-msgstr "Bükvalter"
-
-#: ../rules/base.xml.in.h:105
-msgid "Bulgaria"
-msgstr "Bulgaristan"
-
-#: ../rules/base.xml.in.h:106
-msgid "Cambodia"
-msgstr "Kamboçya"
-
-#: ../rules/base.xml.in.h:107 ../rules/sun.xml.in.h:29
-msgid "Can"
-msgstr "Kan"
-
-#: ../rules/base.xml.in.h:108
-msgid "Canada"
-msgstr "Kanada"
-
-#: ../rules/base.xml.in.h:109
-msgid "Caps Lock is Compose."
-msgstr "CapsLock tuÅŸu karakter birleÅŸimi yapar."
-
-#: ../rules/base.xml.in.h:110
-msgid "CapsLock LED shows alternative layout."
-msgstr "Caps Lock LED'i diğer yerleşimi gösterir."
-
-#: ../rules/base.xml.in.h:111
-msgid "CapsLock acts as Shift with locking. Shift \"pauses\" CapsLock."
-msgstr "Caps Lock kilitlemeli Shift tuşu gibi çalışır. Shift tuşu ise Caps Lock tuşunu \"bekletir\"."
-
-#: ../rules/base.xml.in.h:112
-msgid "CapsLock acts as Shift with locking. Shift doesn't affect CapsLock."
-msgstr "Caps Lock kilitlemeli Shift tuşu gibi çalışır. Shift tuşu Caps Lock davranışını etkilemez."
-
-#: ../rules/base.xml.in.h:113
-msgid "CapsLock just locks the Shift modifier."
-msgstr "Caps Lock sadece kilitlemeli Shift tuşu gibi çalışır."
-
-#: ../rules/base.xml.in.h:114 ../rules/sun.xml.in.h:33
-msgid "CapsLock key behavior"
-msgstr "CapsLock tuşunun davranışı"
-
-#: ../rules/base.xml.in.h:115
-msgid "CapsLock key changes layout."
-msgstr "Caps Lock tuÅŸu yerleÅŸimi deÄŸiÅŸtirir"
-
-#: ../rules/base.xml.in.h:116
-msgid "CapsLock toggles Shift so all keys are affected."
-msgstr "Caps Lock tuşu Shift davranışını ters çevirir; bundan alfabetik olmayan tuşlar da etkilenir."
-
-#: ../rules/base.xml.in.h:117
-msgid "CapsLock toggles normal capitalization of alphabetic characters."
-msgstr "Caps Lock tuşu büyük/küçük harf geçişi yapar."
-
-#: ../rules/base.xml.in.h:118
-msgid "CapsLock uses internal capitalization. Shift \"pauses\" CapsLock."
-msgstr "CapsLock dahili dönüşümü kullanılır, Shift tuşu Caps Lock tuşunu \"bekletir\"."
-
-#: ../rules/base.xml.in.h:119
-msgid "CapsLock uses internal capitalization. Shift doesn't affect CapsLock."
-msgstr "CapsLock dahili dönüşümü kullanır. Shift tuşu Caps Lock davranışını etkilemez."
-
-#: ../rules/base.xml.in.h:120
-msgid "Catalan variant with middle-dot L"
-msgstr "Ortası noktalı L'li Katalan yerleşimi"
-
-#: ../rules/base.xml.in.h:121
-msgid "Che"
-msgstr "Che"
-
-#: ../rules/base.xml.in.h:122
-msgid "Cherry Blue Line CyBo@rd"
-msgstr "Cherry Blue Line CyBo@rd"
-
-#: ../rules/base.xml.in.h:123
-msgid "Cherry Blue Line CyBo@rd (alternate option)"
-msgstr "Cherry Blue Line CyBo@rd (diğer seçenek)"
-
-#: ../rules/base.xml.in.h:124
-msgid "Cherry CyBo@rd USB-Hub"
-msgstr "Cherry CyBo@rd USB-Hub"
-
-#: ../rules/base.xml.in.h:125
-msgid "Cherry CyMotion Master Linux"
-msgstr "Cherry CyMotion Master Linux"
-
-#: ../rules/base.xml.in.h:126
-msgid "Cherry CyMotion Master XPress"
-msgstr "Cherry CyMotion Master XPress"
-
-#: ../rules/base.xml.in.h:127
-msgid "Chicony Internet Keyboard"
-msgstr "Chicony Genel AÄŸ Klavyesi"
-
-#: ../rules/base.xml.in.h:128
-msgid "Chicony KB-9885"
-msgstr "Chicony KB-9885"
-
-#: ../rules/base.xml.in.h:129
-msgid "Chuvash"
-msgstr "Çuvaş"
-
-#: ../rules/base.xml.in.h:130
-msgid "Chuvash Latin"
-msgstr "Çuvaş Latin"
-
-#: ../rules/base.xml.in.h:131
-msgid "Classic Dvorak"
-msgstr "Klasik Dvorak"
-
-#: ../rules/base.xml.in.h:132
-msgid "CloGaelach"
-msgstr "CloGaelach"
-
-#: ../rules/base.xml.in.h:133
-msgid "Compaq Easy Access Keyboard"
-msgstr "Compaq Kolay EriÅŸim Klavyesi"
-
-#: ../rules/base.xml.in.h:134
-msgid "Compaq Internet Keyboard (13 keys)"
-msgstr "Compaq Genel AÄŸ Klavyesi (13 tuÅŸlu)"
-
-#: ../rules/base.xml.in.h:135
-msgid "Compaq Internet Keyboard (18 keys)"
-msgstr "Compaq Genel AÄŸ Klavyesi (18 tuÅŸlu)"
-
-#: ../rules/base.xml.in.h:136
-msgid "Compaq Internet Keyboard (7 keys)"
-msgstr "Genel AÄŸ Klavyesi (7 tuÅŸlu)"
-
-#: ../rules/base.xml.in.h:137
-msgid "Compaq iPaq Keyboard"
-msgstr "Compaq iPaq Klavyesi"
-
-#: ../rules/base.xml.in.h:138
-msgid "Compose key position"
-msgstr "Karakter oluÅŸturma (compose) tuÅŸu konumu"
-
-#: ../rules/base.xml.in.h:139
-msgid "Congo, Democratic Republic of the"
-msgstr "Kongo Demokratik Cumhuriyeti"
-
-#: ../rules/base.xml.in.h:140
-msgid "Control is mapped to the Win-keys (and the usual Ctrl keys)."
-msgstr "Ctrl, Win tuşlarına eşlenir."
-
-#: ../rules/base.xml.in.h:141
-msgid "Croatia"
-msgstr "Hırvatistan"
-
-#: ../rules/base.xml.in.h:142
-msgid "Ctrl key at bottom left"
-msgstr "Sol alttaki Ctrl tuÅŸu"
-
-#: ../rules/base.xml.in.h:143
-msgid "Ctrl key at left of 'A'"
-msgstr "'A'nın solundaki Ctrl Tuşu"
-
-#: ../rules/base.xml.in.h:144
-msgid "Ctrl key position"
-msgstr "Ctrl tuÅŸunun yeri"
-
-#: ../rules/base.xml.in.h:145
-msgid "Ctrl+Shift change layout."
-msgstr "Ctrl+Shift tuşları yerleşimi değiştirir."
-
-#: ../rules/base.xml.in.h:146
-msgid "Cyrillic"
-msgstr "Kril"
-
-#: ../rules/base.xml.in.h:147 ../rules/sun.xml.in.h:39
-msgid "Cze"
-msgstr "Çek"
-
-#: ../rules/base.xml.in.h:148
-msgid "Czechia"
-msgstr "Çek Cumhuriyeti"
-
-#: ../rules/base.xml.in.h:149
-msgid "DRC"
-msgstr "DRC"
-
-#: ../rules/base.xml.in.h:150
-msgid "DTK2000"
-msgstr "DTK2000"
-
-#: ../rules/base.xml.in.h:151 ../rules/sun.xml.in.h:42
-msgid "Dead acute"
-msgstr "Ölü acute (´)"
-
-#: ../rules/base.xml.in.h:152 ../rules/sun.xml.in.h:43
-msgid "Dead grave acute"
-msgstr "Ölü grave acute (`)"
-
-#: ../rules/base.xml.in.h:153
-msgid "Default numeric keypad keys."
-msgstr "Öntanımlı tuştakımı tuşları."
-
-#: ../rules/base.xml.in.h:154
-msgid "Dell"
-msgstr "Dell"
-
-#: ../rules/base.xml.in.h:155
-msgid "Dell 101-key PC"
-msgstr "Dell 101 tuÅŸlu PC"
-
-#: ../rules/base.xml.in.h:156
-msgid "Dell Laptop/notebook Inspiron 6xxx/8xxx"
-msgstr "Dizüstü/defter Dell Inspiron 6xxx/8xxx"
-
-#: ../rules/base.xml.in.h:157
-msgid "Dell Laptop/notebook Precision M series"
-msgstr "Dell Dizüstü/defter Precision M series"
-
-#: ../rules/base.xml.in.h:158
-msgid "Dell Latitude series laptop"
-msgstr "Dell Latitude serisi Dizüstü"
-
-#: ../rules/base.xml.in.h:159
-msgid "Dell SK-8125 USB Multimedia Keybard"
-msgstr "Dell SK-8125 USB Çokluortam Klavyesi"
-
-#: ../rules/base.xml.in.h:160
-msgid "Dell SK-8135 USB Multimedia Keybard"
-msgstr "Dell SK-8135 USB Çokluortam Klavyesi"
-
-#: ../rules/base.xml.in.h:161
-msgid "Dell USB Multimedia Keybard"
-msgstr "Dell USB Çokluortam Klavyesi"
-
-#: ../rules/base.xml.in.h:162
-msgid "Denmark"
-msgstr "Danimarka"
-
-#: ../rules/base.xml.in.h:163 ../rules/sun.xml.in.h:44
-msgid "Deu"
-msgstr "Alm"
-
-#: ../rules/base.xml.in.h:164
-msgid "Dexxa Wireless Desktop Keyboard"
-msgstr "Dexxa Kablosuz Masaüstü Klavyesi"
-
-#: ../rules/base.xml.in.h:165
-msgid "Diamond 9801 / 9802 series"
-msgstr "Diamond 9801 / 9802 serileri"
-
-#: ../rules/base.xml.in.h:166 ../rules/sun.xml.in.h:46
-msgid "Dnk"
-msgstr "Dnk"
-
-#: ../rules/base.xml.in.h:167 ../rules/sun.xml.in.h:48
-msgid "Dvorak"
-msgstr "Dvorak"
-
-#: ../rules/base.xml.in.h:168
-msgid "Dvorak, Polish quotes on key \"1/!\""
-msgstr "Dvorak, \"1/!\" tuşunda Lehçe tırnaklar"
-
-#: ../rules/base.xml.in.h:169
-msgid "Dvorak, Polish quotes on quotemark key"
-msgstr "Dvorak, çift tırnak tuşunda Lehçe tırnaklar"
-
-#: ../rules/base.xml.in.h:170
-msgid "Eastern"
-msgstr "DoÄŸu"
-
-#: ../rules/base.xml.in.h:171 ../rules/sun.xml.in.h:49
-msgid "Eliminate dead keys"
-msgstr "Ölü tuşları normal yapar"
-
-#: ../rules/base.xml.in.h:172
-msgid "Ennyah DKB-1008"
-msgstr "Ennyah DKB-1008"
-
-#: ../rules/base.xml.in.h:173
-msgid "Epo"
-msgstr "Epo"
-
-#: ../rules/base.xml.in.h:174
-msgid "Ergonomic"
-msgstr "Ergonomik"
-
-#: ../rules/base.xml.in.h:175 ../rules/sun.xml.in.h:50
-msgid "Esp"
-msgstr "Esp"
-
-#: ../rules/base.xml.in.h:176
-msgid "Esperanto"
-msgstr "Esperanto"
-
-#: ../rules/base.xml.in.h:177
-msgid "Est"
-msgstr "Est"
-
-#: ../rules/base.xml.in.h:178
-msgid "Estonia"
-msgstr "Estonya"
-
-#: ../rules/base.xml.in.h:179
-msgid "Eth"
-msgstr "Ety"
-
-#: ../rules/base.xml.in.h:180
-msgid "Ethiopia"
-msgstr "Etyopya"
-
-#: ../rules/base.xml.in.h:181
-msgid "Evdev-managed keyboard"
-msgstr "Evdev yönetimli klavye"
-
-#: ../rules/base.xml.in.h:182
-msgid "Everex STEPnote"
-msgstr "Everex STEPnote"
-
-#: ../rules/base.xml.in.h:183
-msgid "Ewe"
-msgstr "Eve"
-
-#: ../rules/base.xml.in.h:184
-msgid "Extended"
-msgstr "GeliÅŸmiÅŸ"
-
-#: ../rules/base.xml.in.h:185
-msgid "Extended Backslash"
-msgstr "GeliÅŸmiÅŸ Gerisilme"
-
-#: ../rules/base.xml.in.h:186
-msgid "F-letter (F) variant"
-msgstr "F harfli (F) türü"
-
-#: ../rules/base.xml.in.h:187
-msgid "Fao"
-msgstr "Fao"
-
-#: ../rules/base.xml.in.h:188
-msgid "Faroe Islands"
-msgstr "Faroe Adaları"
-
-#: ../rules/base.xml.in.h:189 ../rules/sun.xml.in.h:51
-msgid "Fin"
-msgstr "Fin"
-
-#: ../rules/base.xml.in.h:190
-msgid "Finland"
-msgstr "Finlandiya"
-
-#: ../rules/base.xml.in.h:191
-msgid "Force standard legacy keypad"
-msgstr "Standart kadim tuştakımını etkin kılar"
-
-#: ../rules/base.xml.in.h:192 ../rules/sun.xml.in.h:53
-msgid "Fra"
-msgstr "Fra"
-
-#: ../rules/base.xml.in.h:193
-msgid "France"
-msgstr "Fransa"
-
-#: ../rules/base.xml.in.h:194 ../rules/sun.xml.in.h:55
-msgid "French"
-msgstr "Fransızca"
-
-#: ../rules/base.xml.in.h:195
-msgid "French (Macintosh)"
-msgstr "Fransız (Makintoş)"
-
-#: ../rules/base.xml.in.h:196 ../rules/sun.xml.in.h:56
-msgid "French (legacy)"
-msgstr "Fransızca (eski)"
-
-#: ../rules/base.xml.in.h:197
-msgid "French Dvorak"
-msgstr "Fransızca Dvorak"
-
-#: ../rules/base.xml.in.h:198
-msgid "French, Sun dead keys"
-msgstr "Fransızca, Sun ölü tuşlar"
-
-#: ../rules/base.xml.in.h:199
-msgid "French, eliminate dead keys"
-msgstr "Fransızca, ölü tuşsuz"
-
-#: ../rules/base.xml.in.h:200
-msgid "Fula"
-msgstr "Fula"
-
-#: ../rules/base.xml.in.h:201
-msgid "GBr"
-msgstr "GBr"
-
-#: ../rules/base.xml.in.h:202
-msgid "Ga"
-msgstr "Ga"
-
-#: ../rules/base.xml.in.h:203
-msgid "Generic 101-key PC"
-msgstr "Soysal 101 tuÅŸlu PC"
-
-#: ../rules/base.xml.in.h:204
-msgid "Generic 102-key (Intl) PC"
-msgstr "Soysal 102 tuşlu (Uluslararası) PC"
-
-#: ../rules/base.xml.in.h:205
-msgid "Generic 104-key PC"
-msgstr "Soysal 104 tuÅŸlu PC"
-
-#: ../rules/base.xml.in.h:206
-msgid "Generic 105-key (Intl) PC"
-msgstr "Soysal 105 tuşlu (uluslararası) PC"
-
-#: ../rules/base.xml.in.h:207
-msgid "Genius Comfy KB-12e"
-msgstr "Genius Comfy KB-12e"
-
-#: ../rules/base.xml.in.h:208
-msgid "Genius Comfy KB-16M / Genius MM Keyboard KWD-910"
-msgstr "Genius Comfy KB-16M / Genius MM Keyboard KWD-910"
-
-#: ../rules/base.xml.in.h:209
-msgid "Genius Comfy KB-21e-Scroll"
-msgstr "Genius Comfy KB-21e-Scroll"
-
-#: ../rules/base.xml.in.h:210
-msgid "Genius KB-19e NB"
-msgstr "Genius KB-19e NB"
-
-#: ../rules/base.xml.in.h:211
-msgid "Geo"
-msgstr "Geo"
-
-#: ../rules/base.xml.in.h:212
-msgid "Georgia"
-msgstr "Gürcistan"
-
-#: ../rules/base.xml.in.h:213
-msgid "German (Macintosh)"
-msgstr "Alman (MakintoÅŸ)"
-
-#: ../rules/base.xml.in.h:214
-msgid "German, Sun dead keys"
-msgstr "Almanca, Sun ölü tuşlar"
-
-#: ../rules/base.xml.in.h:215
-msgid "German, eliminate dead keys"
-msgstr "Almanca, ölü tuşsuz"
-
-#: ../rules/base.xml.in.h:216
-msgid "Germany"
-msgstr "Almanya"
-
-#: ../rules/base.xml.in.h:217
-msgid "Gha"
-msgstr "Gha"
-
-#: ../rules/base.xml.in.h:218
-msgid "Ghana"
-msgstr "Gana"
-
-#: ../rules/base.xml.in.h:219
-msgid "Gre"
-msgstr "Gre"
-
-#: ../rules/base.xml.in.h:220
-msgid "Greece"
-msgstr "Yunanistan"
-
-#: ../rules/base.xml.in.h:221
-msgid "Gujarati"
-msgstr "Batı Hint dili"
-
-#: ../rules/base.xml.in.h:222
-msgid "Gurmukhi"
-msgstr "Gurmukhi"
-
-#: ../rules/base.xml.in.h:223
-msgid "Gyration"
-msgstr "Çekimsel"
-
-#: ../rules/base.xml.in.h:224
-msgid "Hausa"
-msgstr "Havza"
-
-#: ../rules/base.xml.in.h:225
-msgid "Hewlett-Packard Internet Keyboard"
-msgstr "Hewlett-Packard Genel AÄŸ Klavyesi"
-
-#: ../rules/base.xml.in.h:226
-msgid "Hewlett-Packard Omnibook 500 FA"
-msgstr "Hewlett-Packard Omnibook 500 FA"
-
-#: ../rules/base.xml.in.h:227
-msgid "Hewlett-Packard Omnibook 5xx"
-msgstr "Hewlett-Packard Omnibook 5xx"
-
-#: ../rules/base.xml.in.h:228
-msgid "Hewlett-Packard Omnibook 6000/6100"
-msgstr "Hewlett-Packard Omnibook 6000/6100"
-
-#: ../rules/base.xml.in.h:229
-msgid "Hewlett-Packard Omnibook XE3 GC"
-msgstr "Hewlett-Packard Omnibook XE3 GC"
-
-#: ../rules/base.xml.in.h:230
-msgid "Hewlett-Packard Omnibook XE3 GF"
-msgstr "Hewlett-Packard Omnibook XE3 GF"
-
-#: ../rules/base.xml.in.h:231
-msgid "Hewlett-Packard Omnibook XT1000"
-msgstr "Hewlett-Packard Omnibook XT1000"
-
-#: ../rules/base.xml.in.h:232
-msgid "Hewlett-Packard Pavilion ZT11xx"
-msgstr "Hewlett-Packard Pavilion ZT11xx"
-
-#: ../rules/base.xml.in.h:233
-msgid "Hewlett-Packard SK-2501 Multimedia Keyboard"
-msgstr "Hewlett-Packard SK-2501 Çokluortam Klavyesi"
-
-#: ../rules/base.xml.in.h:234
-msgid "Hewlett-Packard SK-2505 Internet Keyboard"
-msgstr "Hewlett-Packard SK-2505 Genel AÄŸ Klavyesi"
-
-#: ../rules/base.xml.in.h:235
-msgid "Hindi Bolnagri"
-msgstr "Hindi Bolnagri"
-
-#: ../rules/base.xml.in.h:236
-msgid "Honeywell Euroboard"
-msgstr "Honeywell Euroboard"
-
-#: ../rules/base.xml.in.h:237
-msgid "Hrv"
-msgstr "Hrv"
-
-#: ../rules/base.xml.in.h:238 ../rules/sun.xml.in.h:59
-msgid "Hun"
-msgstr "Mcr"
-
-#: ../rules/base.xml.in.h:239
-msgid "Hungary"
-msgstr "Macaristan"
-
-#: ../rules/base.xml.in.h:240
-msgid "Hyper is mapped to the Win-keys."
-msgstr "Hyper, Pencere tuşlarına eşlenir."
-
-#: ../rules/base.xml.in.h:241
-msgid "IBM (LST 1205-92)"
-msgstr "IBM (LST 1205-92)"
-
-#: ../rules/base.xml.in.h:242
-msgid "IBM Rapid Access"
-msgstr "IBM Hızlı Erişim"
-
-#: ../rules/base.xml.in.h:243
-msgid "IBM Rapid Access II"
-msgstr "IBM Hızlı Erişim II"
-
-#: ../rules/base.xml.in.h:244
-msgid "IBM Rapid Access II (alternate option)"
-msgstr "IBM Hızlı Erişim II (diğer seçenek)"
-
-#: ../rules/base.xml.in.h:245
-msgid "IBM ThinkPad 560Z/600/600E/A22E"
-msgstr "IBM ThinkPad 560Z/600/600E/A22E"
-
-#: ../rules/base.xml.in.h:246
-msgid "IBM ThinkPad 560Z/600/600E/A22E, Intl"
-msgstr "IBM ThinkPad 560Z/600/600E/A22E, Intl"
-
-#: ../rules/base.xml.in.h:247 ../rules/sun.xml.in.h:61
-msgid "ISO Alternate"
-msgstr "ISO diÄŸer"
-
-#: ../rules/base.xml.in.h:248
-msgid "Iceland"
-msgstr "Ä°zlanda"
-
-#: ../rules/base.xml.in.h:249
-msgid "Igbo"
-msgstr "Igbo"
-
-#: ../rules/base.xml.in.h:250
-msgid "Ind"
-msgstr "Ind"
-
-#: ../rules/base.xml.in.h:251
-msgid "India"
-msgstr "Hindistan"
-
-#: ../rules/base.xml.in.h:252 ../rules/sun.xml.in.h:62
-msgid "International (with dead keys)"
-msgstr "Uluslararası (ölü tuşlarla)"
-
-#: ../rules/base.xml.in.h:253
-msgid "Inuktitut"
-msgstr "Inuktitut"
-
-#: ../rules/base.xml.in.h:254
-msgid "Iran"
-msgstr "Ä°ran"
-
-#: ../rules/base.xml.in.h:255
-msgid "Iraq"
-msgstr "Irak"
-
-#: ../rules/base.xml.in.h:256
-msgid "Ireland"
-msgstr "Ä°rlanda"
-
-#: ../rules/base.xml.in.h:257
-msgid "Irl"
-msgstr "Ä°rl"
-
-#: ../rules/base.xml.in.h:258
-msgid "Irn"
-msgstr "Irn"
-
-#: ../rules/base.xml.in.h:259
-msgid "Irq"
-msgstr "Irk"
-
-#: ../rules/base.xml.in.h:260
-msgid "Isl"
-msgstr "Izl"
-
-#: ../rules/base.xml.in.h:261
-msgid "Isr"
-msgstr "Ä°br"
-
-#: ../rules/base.xml.in.h:262
-msgid "Israel"
-msgstr "Ä°srail"
-
-#: ../rules/base.xml.in.h:263 ../rules/sun.xml.in.h:63
-msgid "Ita"
-msgstr "Ä°ta"
-
-#: ../rules/base.xml.in.h:264
-msgid "Italy"
-msgstr "Ä°talya"
-
-#: ../rules/base.xml.in.h:265
-msgid "Japan"
-msgstr "Japonya"
-
-#: ../rules/base.xml.in.h:266
-msgid "Japan (PC-98xx Series)"
-msgstr "Japon (PC-98xx Series)"
-
-#: ../rules/base.xml.in.h:267
-msgid "Japanese 106-key"
-msgstr "Japonca 106 tuÅŸlu"
-
-#: ../rules/base.xml.in.h:268
-msgid "Japanese keyboard options"
-msgstr "Japonca klavye seçenekleri"
-
-#: ../rules/base.xml.in.h:269 ../rules/sun.xml.in.h:66
-msgid "Jpn"
-msgstr "Jpn"
-
-#: ../rules/base.xml.in.h:270
-msgid "Kana"
-msgstr "Kana"
-
-#: ../rules/base.xml.in.h:271
-msgid "Kana Lock key is locking"
-msgstr "Kana Lock tuÅŸu kilitler"
-
-#: ../rules/base.xml.in.h:272
-msgid "Kannada"
-msgstr "Güney Hint dili"
-
-#: ../rules/base.xml.in.h:273
-msgid "Kashubian"
-msgstr "Kaşubyalı"
-
-#: ../rules/base.xml.in.h:274
-msgid "Kaz"
-msgstr "Kaz"
-
-#: ../rules/base.xml.in.h:275
-msgid "Kazakh with Russian"
-msgstr "Kazak (rus)"
-
-#: ../rules/base.xml.in.h:276
-msgid "Kazakhstan"
-msgstr "Kazakistan"
-
-#: ../rules/base.xml.in.h:277
-msgid "Keypad"
-msgstr "Tuştakımı"
-
-#: ../rules/base.xml.in.h:278
-msgid "Keytronic FlexPro"
-msgstr "Keytronic FlexPro"
-
-#: ../rules/base.xml.in.h:279
-msgid "Khm"
-msgstr "Kım"
-
-#: ../rules/base.xml.in.h:280
-msgid "Kor"
-msgstr "Kor"
-
-#: ../rules/base.xml.in.h:281
-msgid "Korea, Republic of"
-msgstr "Kore Cumhuriyeti"
-
-#: ../rules/base.xml.in.h:282
-msgid "Korean 106-key"
-msgstr "Korece 106 tuÅŸlu"
-
-#: ../rules/base.xml.in.h:283
-msgid "Kotoistus"
-msgstr "Kotüstus"
-
-#: ../rules/base.xml.in.h:284
-msgid "Kurdish, (F)"
-msgstr "Kürtçe (Türkçe F klavye)"
-
-#: ../rules/base.xml.in.h:285
-msgid "Kurdish, Arabic-Latin"
-msgstr "Kürtçe (Arapça-Latin)"
-
-#: ../rules/base.xml.in.h:286
-msgid "Kurdish, Latin Alt-Q"
-msgstr "Kürtçe (Türkçe Alt-Q klavye)"
-
-#: ../rules/base.xml.in.h:287
-msgid "Kurdish, Latin Q"
-msgstr "Kürtçe (Türkçe Q klavye)"
-
-#: ../rules/base.xml.in.h:288
-msgid "Kyr"
-msgstr "Kır"
-
-#: ../rules/base.xml.in.h:289
-msgid "Kyrgyzstan"
-msgstr "Kırgızistan"
-
-#: ../rules/base.xml.in.h:290
-msgid "LAm"
-msgstr "LAm"
-
-#: ../rules/base.xml.in.h:291
-msgid "LCtrl+LShift change layout."
-msgstr "Ctrl+Shift tuşları yerleşimi değiştirir."
-
-#: ../rules/base.xml.in.h:292
-msgid "Lao"
-msgstr "Lao"
-
-#: ../rules/base.xml.in.h:293
-msgid "Laos"
-msgstr "Laos"
-
-#: ../rules/base.xml.in.h:294
-msgid "Laptop/notebook Compaq (eg. Armada) Laptop Keyboard"
-msgstr "Dizüstü/defter Compaq (örn. Armada) Dizüstü Klavyesi"
-
-#: ../rules/base.xml.in.h:295
-msgid "Laptop/notebook Compaq (eg. Presario) Internet Keyboard"
-msgstr "Dizüstü/defter Compaq (örn. Presario) Genel Ağ Klavyesi"
-
-#: ../rules/base.xml.in.h:296
-msgid "Laptop/notebook eMachines m68xx"
-msgstr "Dizüstü/defter eMachines m68xx"
-
-#: ../rules/base.xml.in.h:297
-msgid "Latin"
-msgstr "Latin"
-
-#: ../rules/base.xml.in.h:298
-msgid "Latin American"
-msgstr "Latin Amerikanca"
-
-#: ../rules/base.xml.in.h:299
-msgid "Latin Unicode"
-msgstr "Latin Unicode"
-
-#: ../rules/base.xml.in.h:300
-msgid "Latin Unicode qwerty"
-msgstr "Latin Unicode qwerty"
-
-#: ../rules/base.xml.in.h:301
-msgid "Latin qwerty"
-msgstr "Latin qwerty"
-
-#: ../rules/base.xml.in.h:302
-msgid "Latin with guillemets"
-msgstr "Açılı ayraçlarla Latin"
-
-#: ../rules/base.xml.in.h:303
-msgid "Latvia"
-msgstr "Letonya"
-
-#: ../rules/base.xml.in.h:304
-msgid "Layout switching"
-msgstr "YerleÅŸim deÄŸiÅŸtirme "
-
-#: ../rules/base.xml.in.h:305
-msgid "Left Alt is swapped with left Win-key."
-msgstr "Soydaki Alt tuÅŸu ile soldaki Pencere tuÅŸu yerdeÄŸiÅŸtirir."
-
-#: ../rules/base.xml.in.h:306
-msgid "Left Alt key changes layout."
-msgstr "Soldaki Alt tuÅŸu yerleÅŸimi deÄŸiÅŸtirir."
-
-#: ../rules/base.xml.in.h:307
-msgid "Left Alt key switches layout while pressed."
-msgstr "Soldaki Alt tuşu basılıyken diğer yerleşimi etkin olur."
-
-#: ../rules/base.xml.in.h:308
-msgid "Left Ctrl key changes layout."
-msgstr "Soldaki Ctrl tuÅŸu yerleÅŸimi deÄŸiÅŸtirir."
-
-#: ../rules/base.xml.in.h:309
-msgid "Left Shift key changes layout."
-msgstr "Soldaki Shift tuÅŸu yerleÅŸimi deÄŸiÅŸtirir."
-
-#: ../rules/base.xml.in.h:310
-msgid "Left Win-key changes layout."
-msgstr "Soldaki Pencere tuÅŸu yerleÅŸimi deÄŸiÅŸtirir."
-
-#: ../rules/base.xml.in.h:311
-msgid "Left Win-key is Compose."
-msgstr "Soldaki Pencere tuÅŸu karakter birleÅŸimi yapar."
-
-#: ../rules/base.xml.in.h:312
-msgid "Left Win-key switches layout while pressed."
-msgstr "Soldaki Win tuşu basılıyken diğer yerleşim etkin olur."
-
-#: ../rules/base.xml.in.h:313
-msgid "Left hand"
-msgstr "Solak"
-
-#: ../rules/base.xml.in.h:314
-msgid "Left handed Dvorak"
-msgstr "Solak Dvorak"
-
-#: ../rules/base.xml.in.h:315
-msgid "Lithuania"
-msgstr "Litvanya"
-
-#: ../rules/base.xml.in.h:316
-msgid "Logitech Access Keyboard"
-msgstr "Logitech Access Keyboard"
-
-#: ../rules/base.xml.in.h:317
-msgid "Logitech Cordless Desktop"
-msgstr "Logitech Kablosuz Masaüstü"
-
-#: ../rules/base.xml.in.h:318
-msgid "Logitech Cordless Desktop LX-300"
-msgstr "Logitech Kablosuz Masaüstü LX-300"
-
-#: ../rules/base.xml.in.h:319
-msgid "Logitech Cordless Desktop Navigator"
-msgstr "Logitech Kablosuz Masaüstü Tarayıcı"
-
-#: ../rules/base.xml.in.h:320
-msgid "Logitech Cordless Desktop Optical"
-msgstr "Logitech Kablosuz Masaüstü Optik"
-
-#: ../rules/base.xml.in.h:321
-msgid "Logitech Cordless Desktop Pro"
-msgstr "Logitech Kablosuz Masaüstü Pro"
-
-#: ../rules/base.xml.in.h:322
-msgid "Logitech Cordless Desktop Pro (alternate option)"
-msgstr "Logitech Kablosuz Masaüstü Pro (diğer seçenek)"
-
-#: ../rules/base.xml.in.h:323
-msgid "Logitech Cordless Desktop Pro (alternate option2)"
-msgstr "Logitech Kablosuz Masaüstü Pro (diğer 2. seçenek)"
-
-#: ../rules/base.xml.in.h:324
-msgid "Logitech Cordless Desktop iTouch"
-msgstr "Logitech Kablosuz Masaüstü iTouch"
-
-#: ../rules/base.xml.in.h:325
-msgid "Logitech Cordless Freedom/Desktop Navigator"
-msgstr "Logitech Kablosuz Özgür/Masaüstü Tarayıcı"
-
-#: ../rules/base.xml.in.h:326
-msgid "Logitech G15 extra keys via G15daemon"
-msgstr "Logitech G15, G15daemon üzerinden ek tuşlu"
-
-#: ../rules/base.xml.in.h:327
-msgid "Logitech Internet Keyboard"
-msgstr "Logitech Genel AÄŸ Klavyesi"
-
-#: ../rules/base.xml.in.h:328
-msgid "Logitech Internet Navigator Keyboard"
-msgstr "Logitech Genel Ağ Tarayıcı Klavyesi"
-
-#: ../rules/base.xml.in.h:329
-msgid "Logitech Ultra-X Keyboard"
-msgstr "Logitech Ultra-X Keyboard"
-
-#: ../rules/base.xml.in.h:330
-msgid "Logitech diNovo Keyboard"
-msgstr "Logitech Access Klavye"
-
-#: ../rules/base.xml.in.h:331
-msgid "Logitech iTouch"
-msgstr "Logitech iTouch"
-
-#: ../rules/base.xml.in.h:332
-msgid "Logitech iTouch Cordless Keyboard (model Y-RB6)"
-msgstr "Logitech iTouch Kablosuz Klavyesi (model Y-RB6)"
-
-#: ../rules/base.xml.in.h:333
-msgid "Logitech iTouch Internet Navigator Keyboard SE"
-msgstr "Logitech iTouch Genel Ağ Tarayıcı Klavyesi SE"
-
-#: ../rules/base.xml.in.h:334
-msgid "Logitech iTouch Internet Navigator Keyboard SE (USB)"
-msgstr "Logitech iTouch Genel Ağ Tarayıcı Klavyesi SE (USB)"
-
-#: ../rules/base.xml.in.h:335
-msgid "Ltu"
-msgstr "Ltu"
-
-#: ../rules/base.xml.in.h:336
-msgid "Lva"
-msgstr "Lva"
-
-#: ../rules/base.xml.in.h:337
-msgid "MESS"
-msgstr "MESS"
-
-#: ../rules/base.xml.in.h:338
-msgid "MacBook/MacBook Pro"
-msgstr "MacBook/MacBook Pro"
-
-#: ../rules/base.xml.in.h:339
-msgid "MacBook/MacBook Pro (Intl)"
-msgstr "MacBook/MacBook Pro (Uluslararası)"
-
-#: ../rules/base.xml.in.h:340
-msgid "Macedonia"
-msgstr "Makedonya"
-
-#: ../rules/base.xml.in.h:341
-msgid "Macintosh"
-msgstr "Macintosh"
-
-#: ../rules/base.xml.in.h:342
-msgid "Macintosh Old"
-msgstr "Eski Macintosh"
-
-#: ../rules/base.xml.in.h:343
-msgid "Macintosh, Sun dead keys"
-msgstr "Makintoş, Sun ölü tuşlar"
-
-#: ../rules/base.xml.in.h:344
-msgid "Macintosh, eliminate dead keys"
-msgstr "Makintoş, ölü tuşsuz"
-
-#: ../rules/base.xml.in.h:345
-msgid "Make CapsLock an additional Ctrl."
-msgstr "CapsLock tuÅŸunu ek bir Ctrl tuÅŸu yapar."
-
-#: ../rules/base.xml.in.h:346
-msgid "Mal"
-msgstr "Mal"
-
-#: ../rules/base.xml.in.h:347
-msgid "Malayalam"
-msgstr "Malayalam dili"
-
-#: ../rules/base.xml.in.h:348
-msgid "Maldives"
-msgstr "Maldivler"
-
-#: ../rules/base.xml.in.h:349
-msgid "Malta"
-msgstr "Malta"
-
-#: ../rules/base.xml.in.h:350
-msgid "Maltese keyboard with US layout"
-msgstr "Ameriken yerleşimli Maltız klavyesi"
-
-#: ../rules/base.xml.in.h:351
-msgid "Mao"
-msgstr "Mao"
-
-#: ../rules/base.xml.in.h:352
-msgid "Maori"
-msgstr "Mayorka"
-
-#: ../rules/base.xml.in.h:353
-msgid "Memorex MX1998"
-msgstr "Memorex MX1998"
-
-#: ../rules/base.xml.in.h:354
-msgid "Memorex MX2500 EZ-Access Keyboard"
-msgstr "Memorex MX2500 EZ EriÅŸim Klavyesi"
-
-#: ../rules/base.xml.in.h:355
-msgid "Memorex MX2750"
-msgstr "Memorex MX2750"
-
-#: ../rules/base.xml.in.h:356
-msgid "Menu is Compose."
-msgstr "Menü tuşu karakter birleşimi yapar."
-
-#: ../rules/base.xml.in.h:357
-msgid "Menu key changes layout."
-msgstr "Menü tuşu yerleşimi değiştirir."
-
-#: ../rules/base.xml.in.h:358
-msgid "Meta is mapped to the Win-keys."
-msgstr "Meta, Win tuşları ile eşleştirilir."
-
-#: ../rules/base.xml.in.h:359
-msgid "Meta is mapped to the left Win-key."
-msgstr "Meta, soldaki Win tuÅŸu ile eÅŸleÅŸtirilir."
-
-#: ../rules/base.xml.in.h:360
-msgid "Microsoft Internet Keyboard"
-msgstr "Microsoft Genel AÄŸ Klavyesi"
-
-#: ../rules/base.xml.in.h:361
-msgid "Microsoft Internet Keyboard Pro, Swedish"
-msgstr "Microsoft Genel Ağ Klavyesi Pro, İsveçce"
-
-#: ../rules/base.xml.in.h:362
-msgid "Microsoft Natural"
-msgstr "Microsoft Basit"
-
-#: ../rules/base.xml.in.h:363
-msgid "Microsoft Natural Keyboard Pro / Microsoft Internet Keyboard Pro"
-msgstr "Microsoft Basit Klavye Pro / Microsoft Genel AÄŸ Klavyesi Pro"
-
-#: ../rules/base.xml.in.h:364
-msgid "Microsoft Natural Keyboard Pro OEM"
-msgstr "Microsoft Basit Klavye Pro OEM"
-
-#: ../rules/base.xml.in.h:365
-msgid "Microsoft Natural Keyboard Pro USB / Microsoft Internet Keyboard Pro"
-msgstr "Microsoft Natural Keyboard Pro USB / Microsoft Internet Keyboard Pro"
-
-#: ../rules/base.xml.in.h:366
-msgid "Microsoft Office Keyboard"
-msgstr "Microsoft Ofis Klavyesi"
-
-#: ../rules/base.xml.in.h:367
-msgid "Microsoft Wireless Multimedia Keyboard 1.0A"
-msgstr "Microsoft Wireless Multimedia Keyboard 1.0A"
-
-#: ../rules/base.xml.in.h:368 ../rules/sun.xml.in.h:72
-msgid "Miscellaneous compatibility options"
-msgstr "Çeşitli uyumluluk seçenekleri"
-
-#: ../rules/base.xml.in.h:369
-msgid "Mkd"
-msgstr "Mkd"
-
-#: ../rules/base.xml.in.h:370
-msgid "Mlt"
-msgstr "Mlt"
-
-#: ../rules/base.xml.in.h:371
-msgid "Mmr"
-msgstr "Mmr"
-
-#: ../rules/base.xml.in.h:372
-msgid "Mng"
-msgstr "MoÄŸ"
-
-#: ../rules/base.xml.in.h:373
-msgid "Mongolia"
-msgstr "MoÄŸolistan"
-
-#: ../rules/base.xml.in.h:374
-msgid "Morocco"
-msgstr "Fas"
-
-#: ../rules/base.xml.in.h:375 ../rules/sun.xml.in.h:73
-msgid "Multilingual"
-msgstr "Çokdilli"
-
-#: ../rules/base.xml.in.h:376
-msgid "Multilingual, first part"
-msgstr "Çokdilli, ilk bölüm"
-
-#: ../rules/base.xml.in.h:377 ../rules/sun.xml.in.h:74
-msgid "Multilingual, second part"
-msgstr "Çokdilli, ikinci bölüm"
-
-#: ../rules/base.xml.in.h:378
-msgid "Myanmar"
-msgstr "Miyanmar"
-
-#: ../rules/base.xml.in.h:379
-msgid "NICOLA-F style Backspace"
-msgstr "NICOLA-F tarzı Gerisilme"
-
-#: ../rules/base.xml.in.h:380
-msgid "Neostyle"
-msgstr "Yenitarz"
-
-#: ../rules/base.xml.in.h:381
-msgid "Nep"
-msgstr "Nep"
-
-#: ../rules/base.xml.in.h:382
-msgid "Nepal"
-msgstr "Nepal"
-
-#: ../rules/base.xml.in.h:383
-msgid "Netherlands"
-msgstr "Hollanda"
-
-#: ../rules/base.xml.in.h:384
-msgid "Nig"
-msgstr "Nij"
-
-#: ../rules/base.xml.in.h:385
-msgid "Nigeria"
-msgstr "Nijerya"
-
-#: ../rules/base.xml.in.h:386
-msgid "Nld"
-msgstr "Hol"
-
-#: ../rules/base.xml.in.h:387 ../rules/sun.xml.in.h:75
-msgid "Nor"
-msgstr "Nor"
-
-#: ../rules/base.xml.in.h:388
-msgid "Northern Saami"
-msgstr "Kuzey Sami"
-
-#: ../rules/base.xml.in.h:389
-msgid "Northern Saami, eliminate dead keys"
-msgstr "Kuzey Sami, ölü tuşsuz"
-
-#: ../rules/base.xml.in.h:390
-msgid "Northgate OmniKey 101"
-msgstr "Northgate OmniKey 101"
-
-#: ../rules/base.xml.in.h:391
-msgid "Norway"
-msgstr "Norveç"
-
-#: ../rules/base.xml.in.h:392
-msgid "NumLock LED shows alternative layout."
-msgstr "Num_Lock LED'i diğer yerleşimi gösterir."
-
-#: ../rules/base.xml.in.h:393
-msgid "Numeric keypad keys work as with Mac."
-msgstr "Tuştakımı Mac gibi çalışır."
-
-#: ../rules/base.xml.in.h:394
-msgid "Numeric keypad layout selection"
-msgstr "Sayısal tuştakımı yerleşimi seçimi"
-
-#: ../rules/base.xml.in.h:395
-msgid "OADG 109A"
-msgstr "OADG 109A"
-
-#: ../rules/base.xml.in.h:396
-msgid "Ogham"
-msgstr "Ogham"
-
-#: ../rules/base.xml.in.h:397
-msgid "Ogham IS434"
-msgstr "Ogham IS434"
-
-#: ../rules/base.xml.in.h:398
-msgid "Oriya"
-msgstr "Orissa dili"
-
-#: ../rules/base.xml.in.h:399
-msgid "Ortek MCK-800 MM/Internet keyboard"
-msgstr "Oretec MCK-800 MM/Genel AÄŸ Klavyesi"
-
-#: ../rules/base.xml.in.h:400
-msgid "Ossetian"
-msgstr "Osetya"
-
-#: ../rules/base.xml.in.h:401
-msgid "Ossetian, Winkeys"
-msgstr "Osetya, Pencere tuşları"
-
-#: ../rules/base.xml.in.h:402
-msgid "PC-98xx Series"
-msgstr "PC-98xx Serisi"
-
-#: ../rules/base.xml.in.h:403
-msgid "Pak"
-msgstr "Pak"
-
-#: ../rules/base.xml.in.h:404
-msgid "Pakistan"
-msgstr "Pakistan"
-
-#: ../rules/base.xml.in.h:405
-msgid "Pashto"
-msgstr "PaÅŸto"
-
-#: ../rules/base.xml.in.h:406
-msgid "Pattachote"
-msgstr "Pataküte"
-
-#: ../rules/base.xml.in.h:407 ../rules/sun.xml.in.h:78
-msgid "Phonetic"
-msgstr "Fonetik"
-
-#: ../rules/base.xml.in.h:408 ../rules/sun.xml.in.h:79
-msgid "Pol"
-msgstr "Pol"
-
-#: ../rules/base.xml.in.h:409
-msgid "Poland"
-msgstr "Polonya"
-
-#: ../rules/base.xml.in.h:410
-msgid "Polytonic"
-msgstr "Politonik"
-
-#: ../rules/base.xml.in.h:411
-msgid "Portugal"
-msgstr "Portekiz"
-
-#: ../rules/base.xml.in.h:412
-msgid "Press Left Alt key to choose 3rd level."
-msgstr "3. seviyeyi seçmek için soldaki Alt tuşuna basın."
-
-#: ../rules/base.xml.in.h:413
-msgid "Press Left Win-key to choose 3rd level."
-msgstr "3. seviyeyi seçmek için soldaki Win tuşuna basın."
-
-#: ../rules/base.xml.in.h:414
-msgid "Press Menu key to choose 3rd level."
-msgstr "3. seviyeyi seçmek için Menü tuşuna basın."
-
-#: ../rules/base.xml.in.h:415
-msgid "Press Right Alt key to choose 3rd level, Shift+Right Alt key is Multi_Key."
-msgstr "3. seviyeyi seçmek için sağdaki Alt tuşuna basın, Sağdaki Alt tuşuyla birlikte Shift tuşu AltGr gibi davranır."
-
-#: ../rules/base.xml.in.h:416
-msgid "Press Right Alt key to choose 3rd level."
-msgstr "3. seviyeyi seçmek için sağdaki Alt tuşuna basın."
-
-#: ../rules/base.xml.in.h:417
-msgid "Press Right Ctrl to choose 3rd level."
-msgstr "3. seviyeyi seçmek için sağdaki Ctrl tuşuna basın."
-
-#: ../rules/base.xml.in.h:418
-msgid "Press Right Win-key to choose 3rd level."
-msgstr "3. seviyeyi seçmek için sağdaki Win tuşuna basın."
-
-#: ../rules/base.xml.in.h:419
-msgid "Press any of Alt keys to choose 3rd level."
-msgstr "3. seviyeyi seçmek için Alt tuşlarından birine basın."
-
-#: ../rules/base.xml.in.h:420
-msgid "Press any of Win-keys to choose 3rd level."
-msgstr "3. seviyeyi seçmek için Win tuşlarından birine basın."
-
-#: ../rules/base.xml.in.h:421
-msgid "Pro"
-msgstr "Pro"
-
-#: ../rules/base.xml.in.h:422
-msgid "Pro Keypad"
-msgstr "Pro Klavye"
-
-#: ../rules/base.xml.in.h:423
-msgid "Probhat"
-msgstr "Probat"
-
-#: ../rules/base.xml.in.h:424
-msgid "Propeller Voyager (KTEZ-1000)"
-msgstr "Propeller Voyager (KTEZ-1000)"
-
-#: ../rules/base.xml.in.h:425 ../rules/sun.xml.in.h:88
-msgid "Prt"
-msgstr "Prt"
-
-#: ../rules/base.xml.in.h:426
-msgid "QTronix Scorpius 98N+"
-msgstr "QTronix Scorpius 98N+"
-
-#: ../rules/base.xml.in.h:427
-msgid "R-Alt switches layout while pressed."
-msgstr "Sağdaki Alt tuşu basılıyken diğer yerleşim etkin olur."
-
-#: ../rules/base.xml.in.h:428
-msgid "Right Alt is Compose."
-msgstr "SaÄŸdaki Alt tuÅŸu karakter birleÅŸimi yapar."
-
-#: ../rules/base.xml.in.h:429
-msgid "Right Alt key changes layout."
-msgstr "SaÄŸdaki Alt tuÅŸu yerleÅŸimi deÄŸiÅŸtirir."
-
-#: ../rules/base.xml.in.h:430 ../rules/sun.xml.in.h:90
-msgid "Right Alt key never chooses 3rd level."
-msgstr "Sağdaki Alt tuşu 3. seviyeyi asla seçmez."
-
-#: ../rules/base.xml.in.h:431
-msgid "Right Ctrl is Compose."
-msgstr "SaÄŸdaki Ctrl tuÅŸu karakter birleÅŸimi yapar."
-
-#: ../rules/base.xml.in.h:432
-msgid "Right Ctrl key changes layout."
-msgstr "SaÄŸdaki Ctrl tuÅŸu yerleÅŸimi deÄŸiÅŸtirir."
-
-#: ../rules/base.xml.in.h:433
-msgid "Right Ctrl key switches layout while pressed."
-msgstr "Sağdaki Ctrl tuşu basılıyken diğer yerleşim etkin olur."
-
-#: ../rules/base.xml.in.h:434
-msgid "Right Ctrl key works as Right Alt."
-msgstr "Sağdaki Ctrl tuşu sağdaki Alt tuşu gibi çalışır."
-
-#: ../rules/base.xml.in.h:435
-msgid "Right Shift key changes layout."
-msgstr "SaÄŸdaki Shift tuÅŸu yerleÅŸimi deÄŸiÅŸtirir."
-
-#: ../rules/base.xml.in.h:436
-msgid "Right Win-key changes layout."
-msgstr "SaÄŸdaki Win tuÅŸu yerleÅŸimi deÄŸiÅŸtirir."
-
-#: ../rules/base.xml.in.h:437
-msgid "Right Win-key is Compose."
-msgstr "SaÄŸdaki Win tuÅŸu karakter birleÅŸimi yapar."
-
-#: ../rules/base.xml.in.h:438
-msgid "Right Win-key switches layout while pressed."
-msgstr "Sağdaki Win tuşu basılıyken diğer yerleşim etkin olur."
-
-#: ../rules/base.xml.in.h:439
-msgid "Right hand"
-msgstr "SaÄŸ el"
-
-#: ../rules/base.xml.in.h:440
-msgid "Right handed Dvorak"
-msgstr "SaÄŸ elle Dvorak"
-
-#: ../rules/base.xml.in.h:441
-msgid "Romania"
-msgstr "Romenya"
-
-#: ../rules/base.xml.in.h:442
-msgid "Romanian keyboard with German letters"
-msgstr "Alman harfleriyle Romanya klavyesi"
-
-#: ../rules/base.xml.in.h:443
-msgid "Romanian keyboard with German letters, eliminate dead keys"
-msgstr "Alman harfleriyle Romanya klavyesi, ölü tuşsuz"
-
-#: ../rules/base.xml.in.h:444
-msgid "Rou"
-msgstr "Rou"
-
-#: ../rules/base.xml.in.h:445 ../rules/sun.xml.in.h:95
-msgid "Rus"
-msgstr "Rus"
-
-#: ../rules/base.xml.in.h:446
-msgid "Russia"
-msgstr "Rusya"
-
-#: ../rules/base.xml.in.h:447 ../rules/sun.xml.in.h:96
-msgid "Russian"
-msgstr "Rusça"
-
-#: ../rules/base.xml.in.h:448
-msgid "Russian phonetic"
-msgstr "Rusça fonetik"
-
-#: ../rules/base.xml.in.h:449
-msgid "Russian phonetic, eliminate dead keys"
-msgstr "Rusça fonetik, ölü tuşsuz"
-
-#: ../rules/base.xml.in.h:450
-msgid "Russian with Kazakh"
-msgstr "Rusça (kazak)"
-
-#: ../rules/base.xml.in.h:451
-msgid "SCG"
-msgstr "SCG"
-
-#: ../rules/base.xml.in.h:452
-msgid "SILVERCREST Multimedia Wireless Keyboard"
-msgstr "SILVERCREST Çokluortam Kablosuz Klavyesi"
-
-#: ../rules/base.xml.in.h:453
-msgid "SK-1300"
-msgstr "SK-1300"
-
-#: ../rules/base.xml.in.h:454
-msgid "SK-2500"
-msgstr "SK-2500"
-
-#: ../rules/base.xml.in.h:455
-msgid "SK-6200"
-msgstr "SK-6200"
-
-#: ../rules/base.xml.in.h:456
-msgid "SK-7100"
-msgstr "SK-7100"
-
-#: ../rules/base.xml.in.h:457
-msgid "SVEN Ergonomic 2500"
-msgstr "SVEN Ergonomik 2500"
-
-#: ../rules/base.xml.in.h:458
-msgid "Samsung SDM 4500P"
-msgstr "Samsung SDM 4500P"
-
-#: ../rules/base.xml.in.h:459
-msgid "Samsung SDM 4510P"
-msgstr "Samsung SDM 4510P"
-
-#: ../rules/base.xml.in.h:460
-msgid "ScrollLock LED shows alternative layout."
-msgstr "Scroll_Lock LED'i diğer yerleşimi gösterir."
-
-#: ../rules/base.xml.in.h:461
-msgid "Serbia and Montenegro"
-msgstr "Sırbistan ve Karadağ"
-
-#: ../rules/base.xml.in.h:462
-msgid "Shift with numeric keypad keys works as in MS Windows."
-msgstr "Sayısal tuştakımı Shift ile MS Windows'daki gibi çalışır."
-
-#: ../rules/base.xml.in.h:463
-msgid "Shift+CapsLock changes layout."
-msgstr "Shift+CapsLock tuşları yerleşimi değiştirir."
-
-#: ../rules/base.xml.in.h:464
-msgid "Slovakia"
-msgstr "Slovakya"
-
-#: ../rules/base.xml.in.h:465
-msgid "Slovenia"
-msgstr "Slovenya"
-
-#: ../rules/base.xml.in.h:466
-msgid "South Africa"
-msgstr "Güney Afrika"
-
-#: ../rules/base.xml.in.h:467
-msgid "Southern Uzbek"
-msgstr "Güney Özbekistan"
-
-#: ../rules/base.xml.in.h:468
-msgid "Space key outputs non-breakable space character at fourth level, thin non-breakable space character at sixth level"
-msgstr "Boşluk tuşu nobreakspace'i dördüncü seviyede çıktılar, altıncı seviyede incesini basar"
-
-#: ../rules/base.xml.in.h:469
-msgid "Space key outputs non-breakable space character at fourth level."
-msgstr "Boşluk tuşu nobreakspace'i dördüncü seviyede çıktılar."
-
-#: ../rules/base.xml.in.h:470
-msgid "Space key outputs non-breakable space character at second level."
-msgstr "Boşluk tuşu nobreakspace'i ikinci seviyede çıktılar."
-
-#: ../rules/base.xml.in.h:471
-msgid "Space key outputs non-breakable space character at third level, nothing at fourth level."
-msgstr "Boşluk tuşu nobreakspace'i dördüncü seviyede çıktılar, üçüncü işlevsizdir."
-
-#: ../rules/base.xml.in.h:472
-msgid "Space key outputs non-breakable space character at third level, thin non-breakable space character at fourth level"
-msgstr "Boşluk tuşu üçüncü seviyede nobreakspace basar, dördüncü seviyede incesini basar"
-
-#: ../rules/base.xml.in.h:473
-msgid "Space key outputs non-breakable space character at third level."
-msgstr "Boşluk tuşu nobreakspace'i üçüncü seviyede çıktılar."
-
-#: ../rules/base.xml.in.h:474
-msgid "Space key outputs usual space at any level."
-msgstr "BoÅŸluk tuÅŸu her seviyede boÅŸluk basar (nobreakspace basmaz)."
-
-#: ../rules/base.xml.in.h:475
-msgid "Spain"
-msgstr "Ä°spanya"
-
-#: ../rules/base.xml.in.h:476 ../rules/sun.xml.in.h:103
-msgid "Special keys (Ctrl+Alt+&lt;key&gt;) handled in a server."
-msgstr "Bir sunucuda elde edilen özel tuşlar (Ctrl+Alt+&lt;tuş&gt;)"
-
-#: ../rules/base.xml.in.h:477
-msgid "SrL"
-msgstr "SrL"
-
-#: ../rules/base.xml.in.h:478
-msgid "Sri Lanka"
-msgstr "Sri Lanka"
-
-#: ../rules/base.xml.in.h:479 ../rules/sun.xml.in.h:104
-msgid "Standard"
-msgstr "Standart"
-
-#. RSTU 2019-91
-#: ../rules/base.xml.in.h:481
-msgid "Standard RSTU"
-msgstr "Standart RSTU"
-
-#. RSTU 2019-91
-#: ../rules/base.xml.in.h:483
-msgid "Standard RSTU on Russian layout"
-msgstr "Rusça yerleşimde standart RSTU"
-
-#: ../rules/base.xml.in.h:484 ../rules/sun.xml.in.h:112
-msgid "Sun dead keys"
-msgstr "Sun ölü tuşlar"
-
-#: ../rules/base.xml.in.h:485
-msgid "Super Power Multimedia Keyboard"
-msgstr "Super Power Multimedia Keyboard"
-
-#: ../rules/base.xml.in.h:486
-msgid "Super is mapped to the Win-keys."
-msgstr "Super, Pencere tuşlarına eşlenir."
-
-#: ../rules/base.xml.in.h:487
-msgid "Svdvorak"
-msgstr "Svdvorak"
-
-#: ../rules/base.xml.in.h:488 ../rules/sun.xml.in.h:113
-msgid "Svk"
-msgstr "Svk"
-
-#: ../rules/base.xml.in.h:489
-msgid "Svn"
-msgstr "Svn"
-
-#: ../rules/base.xml.in.h:490
-msgid "Swap Ctrl and CapsLock."
-msgstr "Ctrl ile Caps Lock yer deÄŸiÅŸtirir."
-
-#: ../rules/base.xml.in.h:491
-msgid "Swap keycodes of two keys when Mac keyboards are misdetected by kernel."
-msgstr "Makintoş klavyeler çekirdek tarafından algılanamadığında iki seviyeli tuş kodlarına geçilir."
-
-#: ../rules/base.xml.in.h:492 ../rules/sun.xml.in.h:115
-msgid "Swe"
-msgstr "Ä°sve"
-
-#: ../rules/base.xml.in.h:493
-msgid "Sweden"
-msgstr "İsveç"
-
-#: ../rules/base.xml.in.h:494
-msgid "Switzerland"
-msgstr "İsviçre"
-
-#: ../rules/base.xml.in.h:495
-msgid "Symplon PaceBook (tablet PC)"
-msgstr "Symplon PaceBook (tablet PC)"
-
-#: ../rules/base.xml.in.h:496
-msgid "Syr"
-msgstr "Sur"
-
-#: ../rules/base.xml.in.h:497
-msgid "Syria"
-msgstr "Suriye"
-
-#: ../rules/base.xml.in.h:498
-msgid "Syriac"
-msgstr "Suriye"
-
-#: ../rules/base.xml.in.h:499
-msgid "Syriac phonetic"
-msgstr "Suriye fonetik"
-
-#: ../rules/base.xml.in.h:500
-msgid "TIS-820.2538"
-msgstr "TIS-820.2538"
-
-#: ../rules/base.xml.in.h:501
-msgid "Tajikistan"
-msgstr "Tacikistan"
-
-#: ../rules/base.xml.in.h:502
-msgid "Tamil"
-msgstr "Tamil dili"
-
-#: ../rules/base.xml.in.h:503
-msgid "Tamil TAB Typewriter"
-msgstr "Tamil TAB Daktilo"
-
-#: ../rules/base.xml.in.h:504
-msgid "Tamil TSCII Typewriter"
-msgstr "Tamil TSCII Daktilo"
-
-#: ../rules/base.xml.in.h:505
-msgid "Tamil Unicode"
-msgstr "Tamil Unicode"
-
-#: ../rules/base.xml.in.h:506
-msgid "Tatar"
-msgstr "Tatar"
-
-#: ../rules/base.xml.in.h:507
-msgid "Telugu"
-msgstr "Telugu dili"
-
-#: ../rules/base.xml.in.h:508
-msgid "Tha"
-msgstr "Tha"
-
-#: ../rules/base.xml.in.h:509
-msgid "Thailand"
-msgstr "Tayland"
-
-#: ../rules/base.xml.in.h:510 ../rules/sun.xml.in.h:119
-msgid "Third level choosers"
-msgstr "3. seviye seçiciler"
-
-#: ../rules/base.xml.in.h:511
-msgid "Tifinagh"
-msgstr "Tifinagh"
-
-#: ../rules/base.xml.in.h:512
-msgid "Tifinagh Alternative"
-msgstr "Tifinagh DiÄŸer"
-
-#: ../rules/base.xml.in.h:513
-msgid "Tifinagh Alternative Phonetic"
-msgstr "Tifinagh DiÄŸer Fonetik"
-
-#: ../rules/base.xml.in.h:514
-msgid "Tifinagh Extended"
-msgstr "Tifinagh GeliÅŸkin"
-
-#: ../rules/base.xml.in.h:515
-msgid "Tifinagh Extended Phonetic"
-msgstr "Tifinagh GeliÅŸmiÅŸ Fonetik"
-
-#: ../rules/base.xml.in.h:516
-msgid "Tifinagh Phonetic"
-msgstr "Tifinagh Fonetik"
-
-#: ../rules/base.xml.in.h:517
-msgid "Tilde (~) variant"
-msgstr "Tilde (~) tuÅŸlu"
-
-#: ../rules/base.xml.in.h:518
-msgid "Tjk"
-msgstr "Tck"
-
-#: ../rules/base.xml.in.h:519
-msgid "Toshiba Satellite S3000"
-msgstr "Toshiba Satellite S3000"
-
-#: ../rules/base.xml.in.h:520
-msgid "Trust Direct Access Keyboard"
-msgstr "Trust DoÄŸrudan EriÅŸimli Klavye"
-
-#: ../rules/base.xml.in.h:521
-msgid "Trust Wireless Keyboard Classic"
-msgstr "Trust Kablosuz Klasik Klavye"
-
-#: ../rules/base.xml.in.h:522 ../rules/sun.xml.in.h:120
-msgid "Tur"
-msgstr "Trk"
-
-#: ../rules/base.xml.in.h:523
-msgid "Turkey"
-msgstr "Türkiye"
-
-#: ../rules/base.xml.in.h:524
-msgid "Typewriter"
-msgstr "Daktilo"
-
-#: ../rules/base.xml.in.h:525 ../rules/sun.xml.in.h:124
-msgid "U.S. English"
-msgstr "Amerikan ingilizcesi"
-
-#: ../rules/base.xml.in.h:526
-msgid "US keyboard with Bosnian digraphs"
-msgstr "Bosna ikil harfleriyle amerikan klavyesi"
-
-#: ../rules/base.xml.in.h:527
-msgid "US keyboard with Bosnian letters"
-msgstr "Bosna harfleriyle amerikan klavyesi"
-
-#: ../rules/base.xml.in.h:528
-msgid "US keyboard with Croatian digraphs"
-msgstr "Hırvat ikil harfleriyle amerikan klavyesi"
-
-#: ../rules/base.xml.in.h:529
-msgid "US keyboard with Croatian letters"
-msgstr "Hırvat harfleriyle amerikan klavyesi"
-
-#: ../rules/base.xml.in.h:530
-msgid "US keyboard with Lithuanian letters"
-msgstr "Litvanya harfleriyle amerikan klavyesi"
-
-#: ../rules/base.xml.in.h:531
-msgid "US keyboard with Slovenian digraphs"
-msgstr "Sloven ikil harfleriyle amerikan klavyesi"
-
-#: ../rules/base.xml.in.h:532
-msgid "US keyboard with Slovenian letters"
-msgstr "Sloven harfleriyle amerikan klavyesi"
-
-#: ../rules/base.xml.in.h:533 ../rules/sun.xml.in.h:126
-msgid "USA"
-msgstr "ABD"
-
-#: ../rules/base.xml.in.h:534
-msgid "Udmurt"
-msgstr "Udmurt"
-
-#: ../rules/base.xml.in.h:535
-msgid "Ukr"
-msgstr "Ukr"
-
-#: ../rules/base.xml.in.h:536
-msgid "Ukraine"
-msgstr "Ukrayna"
-
-#: ../rules/base.xml.in.h:537
-msgid "UnicodeExpert"
-msgstr "Unicode Uzman"
-
-#: ../rules/base.xml.in.h:538 ../rules/sun.xml.in.h:127
-msgid "United Kingdom"
-msgstr "Ä°ngiltere"
-
-#: ../rules/base.xml.in.h:539
-msgid "Urdu"
-msgstr "Urdu"
-
-#: ../rules/base.xml.in.h:540
-msgid "Use Bosnian digraphs"
-msgstr "Bosna ikil harflerini kullanır"
-
-#: ../rules/base.xml.in.h:541
-msgid "Use Croatian digraphs"
-msgstr "Hırvat ikil harflerini kullanır"
-
-#: ../rules/base.xml.in.h:542
-msgid "Use Slovenian digraphs"
-msgstr "Sloven ikil harflerini kullanır"
-
-#: ../rules/base.xml.in.h:543
-msgid "Use guillemets for quotes"
-msgstr "Tırnakların yerine açılı ayraçlar kullanılır"
-
-#: ../rules/base.xml.in.h:544
-msgid "Use keyboard LED to show alternative layout."
-msgstr "Diğer yerleşimi göstermek için klavye LED'i kullanılır."
-
-#: ../rules/base.xml.in.h:545
-msgid "Use keypad with unicode additions (arrows and math operators)"
-msgstr "Tuştakımı Unicode eklentileri ile kullanılır (ok ve aritmetik tuşları)"
-
-#: ../rules/base.xml.in.h:546
-msgid "Using space key to input non-breakable space character"
-msgstr "nobreakspace'i yazmak için boşluk tuşu kullanımı"
-
-#: ../rules/base.xml.in.h:547
-msgid "Uzb"
-msgstr "Özb"
-
-#: ../rules/base.xml.in.h:548
-msgid "Uzbekistan"
-msgstr "Özbekistan"
-
-#: ../rules/base.xml.in.h:549
-msgid "Vietnam"
-msgstr "Vietnam"
-
-#: ../rules/base.xml.in.h:550
-msgid "Vnm"
-msgstr "Vnm"
-
-#: ../rules/base.xml.in.h:551
-msgid "Wang model 724 azerty"
-msgstr "Wang model 724 azerty"
-
-#: ../rules/base.xml.in.h:552
-msgid "Western"
-msgstr "Batı"
-
-#: ../rules/base.xml.in.h:553
-msgid "Winbook Model XP5"
-msgstr "Winbook Model XP5"
-
-#: ../rules/base.xml.in.h:554
-msgid "Winkeys"
-msgstr "Win tuşları"
-
-#: ../rules/base.xml.in.h:555
-msgid "With &lt;\\|&gt; key"
-msgstr "&lt;\\|&gt; tuÅŸuyla"
-
-#: ../rules/base.xml.in.h:556
-msgid "With EuroSign on 5"
-msgstr "€ sembolü ile 5 tuşu"
-
-#: ../rules/base.xml.in.h:557
-msgid "With guillemets"
-msgstr "Açılı ayraçlarla"
-
-#: ../rules/base.xml.in.h:558
-msgid "Yahoo! Internet Keyboard"
-msgstr "Yahoo! Genel AÄŸ Klavyesi"
-
-#: ../rules/base.xml.in.h:559
-msgid "Yoruba"
-msgstr "Yoruba"
-
-#: ../rules/base.xml.in.h:560
-msgid "Z and ZHE swapped"
-msgstr "Z ile ZHE yer deÄŸiÅŸtirir"
-
-#: ../rules/base.xml.in.h:561
-msgid "Zar"
-msgstr "Zar"
-
-#: ../rules/base.xml.in.h:562
-msgid "azerty"
-msgstr "azerty"
-
-#: ../rules/base.xml.in.h:563
-msgid "azerty/digits"
-msgstr "azerty/rakamlar"
-
-#: ../rules/base.xml.in.h:564
-msgid "digits"
-msgstr "rakamlar"
-
-#: ../rules/base.xml.in.h:565
-msgid "displaced semicolon and quote (obsolete)"
-msgstr "noktalı virgül ve çift tırnak kalkar (atıl)"
-
-#: ../rules/base.xml.in.h:566
-msgid "lyx"
-msgstr "lyx"
-
-#: ../rules/base.xml.in.h:567 ../rules/sun.xml.in.h:132
-msgid "qwerty"
-msgstr "qwerty"
-
-#: ../rules/base.xml.in.h:568
-msgid "qwerty, extended Backslash"
-msgstr "qwerty, galiÅŸmiÅŸ Gerisilme"
-
-#: ../rules/base.xml.in.h:569
-msgid "qwerty/digits"
-msgstr "qwerty/rakamlar"
-
-#: ../rules/base.xml.in.h:570
-msgid "qwertz"
-msgstr "qwertz"
-
-#: ../rules/sun.xml.in.h:1
-msgid "\"Typewriter\""
-msgstr "\"Daktilo\""
-
-#: ../rules/sun.xml.in.h:17
-msgid "Acts as Shift with locking. Shift cancels Caps."
-msgstr "Caps Lock kilitlemeli Shift tuşu gibi çalışır. Shift tuşu ise Caps Lock tuşunu keser."
-
-#: ../rules/sun.xml.in.h:18
-msgid "Acts as Shift with locking. Shift doesn't cancel Caps."
-msgstr "Caps Lock kilitlemeli Shift tuşu gibi çalışır. Shift tuşu Caps Lock'u kesmez"
-
-#: ../rules/sun.xml.in.h:19
-msgid "Alt+Control changes group"
-msgstr "Alt+Ctrl grubu deÄŸiÅŸtirir."
-
-#: ../rules/sun.xml.in.h:20
-msgid "Alt+Shift changes group"
-msgstr "Alt+Shift grubu deÄŸiÅŸtirir."
-
-#: ../rules/sun.xml.in.h:21
-msgid "Basic"
-msgstr "Temel"
-
-#: ../rules/sun.xml.in.h:23
-msgid "Belgian"
-msgstr "Belçikaca"
-
-#: ../rules/sun.xml.in.h:25
-msgid "Both Alt keys together change group"
-msgstr "Alt tuşları birlikte grubu değiştirir"
-
-#: ../rules/sun.xml.in.h:26
-msgid "Both Ctrl keys together change group"
-msgstr "Ctrl tuşları birlikte grubu değiştirir"
-
-#: ../rules/sun.xml.in.h:27
-msgid "Both Shift keys together change group"
-msgstr "Shift tuşları birlikte grubu değiştirir"
-
-#: ../rules/sun.xml.in.h:28
-msgid "Bulgarian"
-msgstr "Bulgarca"
-
-#: ../rules/sun.xml.in.h:30
-msgid "Canadian"
-msgstr "Kanadaca"
-
-#: ../rules/sun.xml.in.h:31
-msgid "Caps Lock is Compose"
-msgstr "CapsLock tuÅŸu karakter birleÅŸimi yapar"
-
-#: ../rules/sun.xml.in.h:32
-msgid "Caps Lock key changes group"
-msgstr "Caps Lock tuÅŸu grubu deÄŸiÅŸtirir"
-
-#: ../rules/sun.xml.in.h:34
-msgid "Caps_Lock LED shows alternative group"
-msgstr "Caps Lock LED'i diğer grubu gösterir"
-
-#: ../rules/sun.xml.in.h:35
-msgid "Control Key Position"
-msgstr "Ctrl tuÅŸunun yeri"
-
-#: ../rules/sun.xml.in.h:36
-msgid "Control key at bottom left"
-msgstr "Sol alttaki Ctrl tuÅŸu"
-
-#: ../rules/sun.xml.in.h:37
-msgid "Control key at left of 'A'"
-msgstr "'A'nın solundaki Ctrl Tuşu"
-
-#: ../rules/sun.xml.in.h:38
-msgid "Control+Shift changes group"
-msgstr "Ctrl+Shift tuşları grubu değiştirir"
-
-#: ../rules/sun.xml.in.h:40
-msgid "Czech"
-msgstr "Çekçe"
-
-#: ../rules/sun.xml.in.h:41
-msgid "Danish"
-msgstr "Danca"
-
-#: ../rules/sun.xml.in.h:45
-msgid "DeuCH"
-msgstr "DeuCH"
-
-#: ../rules/sun.xml.in.h:47
-msgid "Dvo"
-msgstr "Dvo"
-
-#: ../rules/sun.xml.in.h:52
-msgid "Finnish"
-msgstr "Fince"
-
-#: ../rules/sun.xml.in.h:54
-msgid "FraCH"
-msgstr "FraCH"
-
-#: ../rules/sun.xml.in.h:57
-msgid "German"
-msgstr "Almanca"
-
-#: ../rules/sun.xml.in.h:58
-msgid "Group Shift/Lock behavior"
-msgstr "Shift/Lock Grubu davranışı"
-
-#: ../rules/sun.xml.in.h:60
-msgid "Hungarian"
-msgstr "Macarca"
-
-#: ../rules/sun.xml.in.h:64
-msgid "Italian"
-msgstr "Ä°talyanca"
-
-#: ../rules/sun.xml.in.h:65
-msgid "Japanese"
-msgstr "Japonca"
-
-#: ../rules/sun.xml.in.h:67
-msgid "Left Alt key changes group"
-msgstr "Soldaki Alt tuÅŸu grubu deÄŸiÅŸtirir"
-
-#: ../rules/sun.xml.in.h:68
-msgid "Left Alt key switches group while pressed"
-msgstr "Soldaki Alt tuşu basılıyken diğer grup etkin olur"
-
-#: ../rules/sun.xml.in.h:69
-msgid "Left Ctrl key changes group"
-msgstr "Soldaki Ctrl tuÅŸu grubu deÄŸiÅŸtirir"
-
-#: ../rules/sun.xml.in.h:70
-msgid "Left Shift key changes group"
-msgstr "Soldaki Shift tuÅŸu grubu deÄŸiÅŸtirir"
-
-#: ../rules/sun.xml.in.h:71
-msgid "Make CapsLock an additional Control"
-msgstr "CapsLock tuÅŸunu ek bir Ctrl tuÅŸu yapar"
-
-#: ../rules/sun.xml.in.h:76
-msgid "Norwegian"
-msgstr "Norveçce"
-
-#: ../rules/sun.xml.in.h:77
-msgid "Num_Lock LED shows alternative group"
-msgstr "Num_Lock LED'i diğer grubu gösterir"
-
-#: ../rules/sun.xml.in.h:80
-msgid "Polish"
-msgstr "Polonez"
-
-#: ../rules/sun.xml.in.h:81
-msgid "Polish with Polish quotes on key \"1/!\""
-msgstr "Lehçe, \"1/!\" tuşunda Lehçe tırnaklar"
-
-#: ../rules/sun.xml.in.h:82
-msgid "Portuguese"
-msgstr "Portekizce"
-
-#: ../rules/sun.xml.in.h:83
-msgid "Press Left Alt key to choose 3rd level"
-msgstr "3. seviyeyi seçmek için soldaki Alt tuşuna basın"
-
-#: ../rules/sun.xml.in.h:84
-msgid "Press Right Alt key to choose 3rd level"
-msgstr "3. seviyeyi seçmek için sağdaki Alt tuşuna basın"
-
-#: ../rules/sun.xml.in.h:85
-msgid "Press Right Alt-key to choose 3rd level, Shift+Right Alt-key is Multi_Key"
-msgstr "3. seviyeyi seçmek için sağdaki Alt tuşuna basın, Sağdaki Alt tuşuyla birlikte Shift tuşu AltGr gibi davranır"
-
-#: ../rules/sun.xml.in.h:86
-msgid "Press Right Control to choose 3rd level"
-msgstr "3. seviyeyi seçmek için sağdaki Ctrl tuşuna basın"
-
-#: ../rules/sun.xml.in.h:87
-msgid "Press any of Alt keys to choose 3rd level"
-msgstr "3. seviyeyi seçmek için Alt tuşlarından birine basın"
-
-#: ../rules/sun.xml.in.h:89
-msgid "Right Alt key changes group"
-msgstr "SaÄŸdaki Alt tuÅŸu grubu deÄŸiÅŸtirir"
-
-#: ../rules/sun.xml.in.h:91
-msgid "Right Alt switches group while pressed"
-msgstr "Sağdaki Alt tuşu basılıyken diğer grup etkin olur"
-
-#: ../rules/sun.xml.in.h:92
-msgid "Right Control key works as Right Alt"
-msgstr "Sağdaki Ctrl tuşu sağdaki Alt tuşu gibi çalışır"
-
-#: ../rules/sun.xml.in.h:93
-msgid "Right Ctrl key changes group"
-msgstr "SaÄŸdaki Ctrl tuÅŸu grubu deÄŸiÅŸtirir"
-
-#: ../rules/sun.xml.in.h:94
-msgid "Right Shift key changes group"
-msgstr "SaÄŸdaki Shift tuÅŸu grubu deÄŸiÅŸtirir"
-
-#: ../rules/sun.xml.in.h:97
-msgid "Scroll Lock changes group"
-msgstr "Scroll Lock grubu deÄŸiÅŸtirir"
-
-#: ../rules/sun.xml.in.h:98
-msgid "Scroll_Lock LED shows alternative group"
-msgstr "Scroll_Lock LED'i diğer grubu gösterir"
-
-#: ../rules/sun.xml.in.h:99
-msgid "Shift with numpad keys works as in MS Windows"
-msgstr "Sayısal tuştakımı Shift ile MS Windows'daki gibi çalışır"
-
-#: ../rules/sun.xml.in.h:100
-msgid "Shift+CapsLock changes group"
-msgstr "Shift+CapsLock tuşları grubu değiştirir"
-
-#: ../rules/sun.xml.in.h:101
-msgid "Slovak"
-msgstr "Slovakça"
-
-#: ../rules/sun.xml.in.h:102
-msgid "Spanish"
-msgstr "Ä°spanyolca"
-
-#: ../rules/sun.xml.in.h:105
-msgid "Sun Type 4"
-msgstr "Sun 4. tür"
-
-#: ../rules/sun.xml.in.h:106
-msgid "Sun Type 5"
-msgstr "Sun 5. Tür"
-
-#: ../rules/sun.xml.in.h:107
-msgid "Sun Type 5 European"
-msgstr "Sun 5. tür Avrupa"
-
-#: ../rules/sun.xml.in.h:108
-msgid "Sun Type 5 Unix"
-msgstr "Sun 5. tür, Unix"
-
-#: ../rules/sun.xml.in.h:109
-msgid "Sun Type 6"
-msgstr "Sun 6. tür"
-
-#: ../rules/sun.xml.in.h:110
-msgid "Sun Type 6 Unix"
-msgstr "Sun 6. tür, Unix"
-
-#: ../rules/sun.xml.in.h:111
-msgid "Sun Type 6 with Euro key"
-msgstr "Sun 6. Tür, € tuşlu"
-
-#: ../rules/sun.xml.in.h:114
-msgid "Swap Control and Caps Lock"
-msgstr "Ctrl ile Caps Lock yer deÄŸiÅŸtirir"
-
-#: ../rules/sun.xml.in.h:116
-msgid "Swedish"
-msgstr "İsveçce"
-
-#: ../rules/sun.xml.in.h:117
-msgid "Swiss French"
-msgstr "İsviçre Fransızcası"
-
-#: ../rules/sun.xml.in.h:118
-msgid "Swiss German"
-msgstr "İsviçre Almancası"
-
-#: ../rules/sun.xml.in.h:121
-msgid "Turkish"
-msgstr "Türkçe Q Klavye"
-
-#: ../rules/sun.xml.in.h:122
-msgid "Turkish (F)"
-msgstr "Türkçe F klavye"
-
-#: ../rules/sun.xml.in.h:123
-msgid "Turkish Alt-Q Layout"
-msgstr "Türkçe Alt-Q (yazılımcılar ve dizüstü) klavye"
-
-#: ../rules/sun.xml.in.h:125
-msgid "U.S. English w/ ISO9995-3"
-msgstr "Amerikan ingilizcesi (ISO9995-3 ile)"
-
-#: ../rules/sun.xml.in.h:128
-msgid "Use keyboard LED to show alternative group"
-msgstr "Diğer grubu göstermek içim klavye LED'i kullanılır"
-
-#: ../rules/sun.xml.in.h:129
-msgid "Uses internal capitalization. Shift cancels Caps."
-msgstr "CapsLock dahili dönüşümü kullanılır, Shift tuşu Caps Lock tuşunu keser."
-
-#: ../rules/sun.xml.in.h:130
-msgid "Uses internal capitalization. Shift doesn't cancel Caps."
-msgstr "CapsLock dahili dönüşümü kullanır. Shift tuşu Caps Lock'u kesmez."
-
-#: ../rules/sun.xml.in.h:131
-msgid "bksl"
-msgstr "bksl"
-
-#: ../rules/sun.xml.in.h:133
-msgid "type4"
-msgstr "4. tür"
+# Turkish translations for xkeyboard-config.
+# Copyright (C) 2007 Free Software Foundation, Inc.
+#
+# Nilgün Belma Bugüner <nilgun@buguner.name.tr>, 2003, ..., 2007.
+msgid ""
+msgstr ""
+"Project-Id-Version: xkeyboard-config 1.0-pre1\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2007-06-28 15:21+0100\n"
+"PO-Revision-Date: 2007-07-09 10:09+0300\n"
+"Last-Translator: Nilgün Belma Bugüner <nilgun@buguner.name.tr>\n"
+"Language-Team: Turkish <gnu-tr-u12a@lists.sourceforge.net>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#: ../rules/base.xml.in.h:1
+msgid "(F)"
+msgstr "F Klavye"
+
+#: ../rules/base.xml.in.h:2
+msgid "(Legacy) Alternative"
+msgstr "(Eski) DiÄŸer"
+
+#: ../rules/base.xml.in.h:3
+msgid "(Legacy) Alternative, Sun dead keys"
+msgstr "(Eski) Diğer, Sun ölü tuşlar"
+
+#: ../rules/base.xml.in.h:4
+msgid "(Legacy) Alternative, eliminate dead keys"
+msgstr "(Eski) Diğer, ölü tuşsuz"
+
+#: ../rules/base.xml.in.h:5
+msgid "(Legacy) Dvorak"
+msgstr "(Kadim) Dvorak"
+
+#: ../rules/base.xml.in.h:6
+msgid "101/104 key Compatible"
+msgstr "101/104 tuÅŸ Uyumlu"
+
+#: ../rules/base.xml.in.h:7 ../rules/sun.xml.in.h:2
+msgid "101/qwerty/comma/Dead keys"
+msgstr "101/qwerty/virgül/Ölü tuşlar"
+
+#: ../rules/base.xml.in.h:8 ../rules/sun.xml.in.h:3
+msgid "101/qwerty/comma/Eliminate dead keys"
+msgstr "101/qwerty/virgül/Ölü tuşları normal yapar"
+
+#: ../rules/base.xml.in.h:9 ../rules/sun.xml.in.h:4
+msgid "101/qwerty/dot/Dead keys"
+msgstr "101/qwerty/nokta/Ölü tuşlar"
+
+#: ../rules/base.xml.in.h:10 ../rules/sun.xml.in.h:5
+msgid "101/qwerty/dot/Eliminate dead keys"
+msgstr "101/qwerty/nokta/Ölü tuşsuz"
+
+#: ../rules/base.xml.in.h:11 ../rules/sun.xml.in.h:6
+msgid "101/qwertz/comma/Dead keys"
+msgstr "101/qwertz/virgül/Ölü tuşlar"
+
+#: ../rules/base.xml.in.h:12
+msgid "101/qwertz/comma/Eliminate dead keys"
+msgstr "101/qwertz/virgül/Ölü tuşsuz"
+
+#: ../rules/base.xml.in.h:13 ../rules/sun.xml.in.h:7
+msgid "101/qwertz/dot/Dead keys"
+msgstr "101/qwertz/nokta/Ölü tuşlar"
+
+#: ../rules/base.xml.in.h:14 ../rules/sun.xml.in.h:8
+msgid "101/qwertz/dot/Eliminate dead keys"
+msgstr "101/qwertz/nokta/Ölü tuşsuz"
+
+#: ../rules/base.xml.in.h:15 ../rules/sun.xml.in.h:9
+msgid "102/qwerty/comma/Dead keys"
+msgstr "102/qwerty/virgül/Ölü tuşlar"
+
+#: ../rules/base.xml.in.h:16 ../rules/sun.xml.in.h:10
+msgid "102/qwerty/comma/Eliminate dead keys"
+msgstr "102/qwerty/virgül/Ölü tuşsuz"
+
+#: ../rules/base.xml.in.h:17 ../rules/sun.xml.in.h:11
+msgid "102/qwerty/dot/Dead keys"
+msgstr "102/qwerty/nokta/Ölü tuşlar"
+
+#: ../rules/base.xml.in.h:18 ../rules/sun.xml.in.h:12
+msgid "102/qwerty/dot/Eliminate dead keys"
+msgstr "102/qwerty/nokta/Ölü tuşsuz"
+
+#: ../rules/base.xml.in.h:19 ../rules/sun.xml.in.h:13
+msgid "102/qwertz/comma/Dead keys"
+msgstr "102/qwertz/virgül/Ölü tuşlar"
+
+#: ../rules/base.xml.in.h:20 ../rules/sun.xml.in.h:14
+msgid "102/qwertz/comma/Eliminate dead keys"
+msgstr "102/qwertz/virgül/Ölü tuşsuz"
+
+#: ../rules/base.xml.in.h:21 ../rules/sun.xml.in.h:15
+msgid "102/qwertz/dot/Dead keys"
+msgstr "102/qwertz/nokta/Ölü tuşlar"
+
+#: ../rules/base.xml.in.h:22 ../rules/sun.xml.in.h:16
+msgid "102/qwertz/dot/Eliminate dead keys"
+msgstr "102/qwertz/nokta/Ölü tuşsuz"
+
+#: ../rules/base.xml.in.h:23
+msgid "A4Tech KB-21"
+msgstr "A4Tech KB-21"
+
+#: ../rules/base.xml.in.h:24
+msgid "A4Tech KBS-8"
+msgstr "A4Tech KBS-8"
+
+#: ../rules/base.xml.in.h:25
+msgid "A4Tech Wireless Desktop RFKB-23"
+msgstr "A4Tech Wireless Desktop RFKB-23"
+
+#: ../rules/base.xml.in.h:26
+msgid "ACPI Standard"
+msgstr "ACPI Standardı"
+
+#: ../rules/base.xml.in.h:27
+msgid "AZERTY Tskapo"
+msgstr "AZERTY Tskapo"
+
+#: ../rules/base.xml.in.h:28
+msgid "Acer AirKey V"
+msgstr "Acer AirKey V"
+
+#: ../rules/base.xml.in.h:29
+msgid "Acer C300"
+msgstr "Acer C300"
+
+#: ../rules/base.xml.in.h:30
+msgid "Acer Ferrari 4000"
+msgstr "Acer Ferrari 4000"
+
+#: ../rules/base.xml.in.h:31
+msgid "Acer TravelMate 800"
+msgstr "Acer TravelMate 800"
+
+#: ../rules/base.xml.in.h:32
+msgid "Add the EuroSign to the 2 key."
+msgstr "2 tuşuna € sembolünü ekler"
+
+#: ../rules/base.xml.in.h:33
+msgid "Add the EuroSign to the 5 key."
+msgstr "5 tuşuna € sembolünü ekler"
+
+#: ../rules/base.xml.in.h:34
+msgid "Add the EuroSign to the E key."
+msgstr "E tuşuna € sembolünü ekler"
+
+#: ../rules/base.xml.in.h:35
+msgid "Add the standard behavior to Menu key."
+msgstr "Menü tuşuna standart işlevini ekler."
+
+#: ../rules/base.xml.in.h:36
+msgid "Adding the EuroSign to certain keys"
+msgstr "Belli tuşlara € sembolünün eklenmesi"
+
+#: ../rules/base.xml.in.h:37
+msgid "Advance Scorpius KI"
+msgstr "Advance Scorpius KI"
+
+#: ../rules/base.xml.in.h:38
+msgid "Afg"
+msgstr "Afg"
+
+#: ../rules/base.xml.in.h:39
+msgid "Afghanistan"
+msgstr "Afganistan"
+
+#: ../rules/base.xml.in.h:40
+msgid "Akan"
+msgstr "Akan"
+
+#: ../rules/base.xml.in.h:41
+msgid "Alb"
+msgstr "Arn"
+
+#: ../rules/base.xml.in.h:42
+msgid "Albania"
+msgstr "Arnavutluk"
+
+#: ../rules/base.xml.in.h:43
+msgid "Alt and Meta are on the Alt keys."
+msgstr "Alt ve Meta, Alt tuşlarındadır."
+
+#: ../rules/base.xml.in.h:44
+msgid "Alt is mapped to the right Win-key and Super to Menu."
+msgstr "Alt, sağdaki Pencere tuşu ile Süper ise Menü tuşu ile eşleştirilir."
+
+#: ../rules/base.xml.in.h:45
+msgid "Alt+CapsLock changes layout."
+msgstr "Alt+CapsLock yerleÅŸimi deÄŸiÅŸtirir."
+
+#: ../rules/base.xml.in.h:46
+msgid "Alt+Ctrl change layout."
+msgstr "Alt+CtrlyerleÅŸimi deÄŸiÅŸtirir."
+
+#: ../rules/base.xml.in.h:47
+msgid "Alt+Shift change layout."
+msgstr "Alt+Shift yerleÅŸimi deÄŸiÅŸtirir."
+
+#: ../rules/base.xml.in.h:48
+msgid "Alt-Q"
+msgstr "Yazılımcı klavyesi (Q)"
+
+#: ../rules/base.xml.in.h:49
+msgid "Alt/Win key behavior"
+msgstr "Alt/Pencere tuşu davranışı"
+
+#: ../rules/base.xml.in.h:50
+msgid "Alternative"
+msgstr "DiÄŸer"
+
+#: ../rules/base.xml.in.h:51
+msgid "Alternative Eastern"
+msgstr "DiÄŸer DoÄŸu"
+
+#: ../rules/base.xml.in.h:52
+msgid "Alternative Phonetic"
+msgstr "DiÄŸer Fonetik"
+
+#: ../rules/base.xml.in.h:53
+msgid "Alternative international (former us_intl)"
+msgstr "Uluslararası Q klavle (nam-ı diğer us_intl)"
+
+#: ../rules/base.xml.in.h:54
+msgid "Alternative, Sun dead keys"
+msgstr "Diğer, Sun ölü tuşlar"
+
+#: ../rules/base.xml.in.h:55
+msgid "Alternative, eliminate dead keys"
+msgstr "Diğer, ölü tuşsuz"
+
+#: ../rules/base.xml.in.h:56
+msgid "Alternative, latin-9 only"
+msgstr "DiÄŸer, sadece latin-9"
+
+#: ../rules/base.xml.in.h:57
+msgid "And"
+msgstr "And"
+
+#: ../rules/base.xml.in.h:58
+msgid "Andorra"
+msgstr "Andora"
+
+#: ../rules/base.xml.in.h:59
+msgid "Apostrophe (') variant"
+msgstr "Tek tırnaklı (')"
+
+#: ../rules/base.xml.in.h:60
+msgid "Apple"
+msgstr "Apple"
+
+#: ../rules/base.xml.in.h:61
+msgid "Apple Laptop"
+msgstr "Apple Dizüstü"
+
+#: ../rules/base.xml.in.h:62
+msgid "Ara"
+msgstr "Ara"
+
+#: ../rules/base.xml.in.h:63
+msgid "Arabic"
+msgstr "Arapça"
+
+#: ../rules/base.xml.in.h:64
+msgid "Arm"
+msgstr "Erm"
+
+#: ../rules/base.xml.in.h:65
+msgid "Armenia"
+msgstr "Ermenistan"
+
+#: ../rules/base.xml.in.h:66
+msgid "Aze"
+msgstr "Aze"
+
+#: ../rules/base.xml.in.h:67
+msgid "Azerbaijan"
+msgstr "Azerbaycan"
+
+#: ../rules/base.xml.in.h:68
+msgid "Azona RF2300 wireless Internet Keyboard"
+msgstr "Azona RF2300 wireless Internet Keyboard"
+
+#: ../rules/base.xml.in.h:69
+msgid "BTC 5090"
+msgstr "BTC 5090"
+
+#: ../rules/base.xml.in.h:70
+msgid "BTC 5113RF Multimedia"
+msgstr "BTC 5113RF Çokluortam"
+
+#: ../rules/base.xml.in.h:71
+msgid "BTC 5126T"
+msgstr "BTC 5126T"
+
+#: ../rules/base.xml.in.h:72
+msgid "BTC 9000"
+msgstr "BTC 9000"
+
+#: ../rules/base.xml.in.h:73
+msgid "BTC 9000A"
+msgstr "BTC 9000A"
+
+#: ../rules/base.xml.in.h:74
+msgid "BTC 9001AH"
+msgstr "BTC 9001AH"
+
+#: ../rules/base.xml.in.h:75
+msgid "BTC 9019U"
+msgstr "BTC 9019U"
+
+#: ../rules/base.xml.in.h:76
+msgid "Ban"
+msgstr "Ban"
+
+#: ../rules/base.xml.in.h:77
+msgid "Bangladesh"
+msgstr "BangladeÅŸ"
+
+#: ../rules/base.xml.in.h:78 ../rules/sun.xml.in.h:22
+msgid "Bel"
+msgstr "Bel"
+
+#: ../rules/base.xml.in.h:79
+msgid "Belarus"
+msgstr "Belarus"
+
+#: ../rules/base.xml.in.h:80
+msgid "Belgium"
+msgstr "Belçika"
+
+#: ../rules/base.xml.in.h:81
+msgid "BenQ X-Touch 730"
+msgstr "BenQ X-Touch 730"
+
+#: ../rules/base.xml.in.h:82
+msgid "BenQ X-Touch 800"
+msgstr "BenQ X-Touch 800"
+
+#: ../rules/base.xml.in.h:83
+msgid "Bengali"
+msgstr "Bengalce"
+
+#: ../rules/base.xml.in.h:84
+msgid "Bengali Probhat"
+msgstr "Bengali Probhat"
+
+#: ../rules/base.xml.in.h:85
+msgid "Bepo, ergonomic, Dvorak way"
+msgstr "Bepo, ergonomik, Dvorak yolu"
+
+#: ../rules/base.xml.in.h:86
+msgid "Bepo, ergonomic, Dvorak way, latin-9 only"
+msgstr "Bepo, ergonomik, Dvorak yolu, sadece latin-9"
+
+#: ../rules/base.xml.in.h:87 ../rules/sun.xml.in.h:24
+msgid "Bgr"
+msgstr "Bgr"
+
+#: ../rules/base.xml.in.h:88
+msgid "Bhu"
+msgstr "Bhu"
+
+#: ../rules/base.xml.in.h:89
+msgid "Bhutan"
+msgstr "Butan"
+
+#: ../rules/base.xml.in.h:90
+msgid "Biblical Hebrew (Tiro)"
+msgstr "Dini Ä°branice (Tiro)"
+
+#: ../rules/base.xml.in.h:91
+msgid "Bih"
+msgstr "Bih"
+
+#: ../rules/base.xml.in.h:92
+msgid "Blr"
+msgstr "Blr"
+
+#: ../rules/base.xml.in.h:93
+msgid "Bosnia and Herzegovina"
+msgstr "Bosna Hersek"
+
+#: ../rules/base.xml.in.h:94
+msgid "Both Alt keys together change layout."
+msgstr "Alt tuşları birlikte yerleşimi değiştirir."
+
+#: ../rules/base.xml.in.h:95
+msgid "Both Ctrl keys together change layout."
+msgstr "Ctrl tuşları birlikte yerleşimi değiştirir."
+
+#: ../rules/base.xml.in.h:96
+msgid "Both Shift keys together change layout."
+msgstr "Shift tuşları birlikte yerleşimi değiştirir."
+
+#: ../rules/base.xml.in.h:97
+msgid "Both Win-keys switch layout while pressed."
+msgstr "Pencere tuşları birlikte yerleşimi değiştirir."
+
+#: ../rules/base.xml.in.h:98
+msgid "Bra"
+msgstr "Bra"
+
+#: ../rules/base.xml.in.h:99
+msgid "Braille"
+msgstr "Üç noktalı"
+
+#: ../rules/base.xml.in.h:100
+msgid "Brazil"
+msgstr "Brezilya"
+
+#: ../rules/base.xml.in.h:101
+msgid "Brazilian ABNT2"
+msgstr "Brazilya dili ABNT2"
+
+#: ../rules/base.xml.in.h:102
+msgid "Brl"
+msgstr "Brl"
+
+#: ../rules/base.xml.in.h:103
+msgid "Brother Internet Keyboard"
+msgstr "Brother Genel AÄŸ Klavyesi"
+
+#: ../rules/base.xml.in.h:104
+msgid "Buckwalter"
+msgstr "Bükvalter"
+
+#: ../rules/base.xml.in.h:105
+msgid "Bulgaria"
+msgstr "Bulgaristan"
+
+#: ../rules/base.xml.in.h:106
+msgid "Cambodia"
+msgstr "Kamboçya"
+
+#: ../rules/base.xml.in.h:107 ../rules/sun.xml.in.h:29
+msgid "Can"
+msgstr "Kan"
+
+#: ../rules/base.xml.in.h:108
+msgid "Canada"
+msgstr "Kanada"
+
+#: ../rules/base.xml.in.h:109
+msgid "Caps Lock is Compose."
+msgstr "CapsLock tuÅŸu karakter birleÅŸimi yapar."
+
+#: ../rules/base.xml.in.h:110
+msgid "CapsLock LED shows alternative layout."
+msgstr "Caps Lock LED'i diğer yerleşimi gösterir."
+
+#: ../rules/base.xml.in.h:111
+msgid "CapsLock acts as Shift with locking. Shift \"pauses\" CapsLock."
+msgstr "Caps Lock kilitlemeli Shift tuşu gibi çalışır. Shift tuşu ise Caps Lock tuşunu \"bekletir\"."
+
+#: ../rules/base.xml.in.h:112
+msgid "CapsLock acts as Shift with locking. Shift doesn't affect CapsLock."
+msgstr "Caps Lock kilitlemeli Shift tuşu gibi çalışır. Shift tuşu Caps Lock davranışını etkilemez."
+
+#: ../rules/base.xml.in.h:113
+msgid "CapsLock just locks the Shift modifier."
+msgstr "Caps Lock sadece kilitlemeli Shift tuşu gibi çalışır."
+
+#: ../rules/base.xml.in.h:114 ../rules/sun.xml.in.h:33
+msgid "CapsLock key behavior"
+msgstr "CapsLock tuşunun davranışı"
+
+#: ../rules/base.xml.in.h:115
+msgid "CapsLock key changes layout."
+msgstr "Caps Lock tuÅŸu yerleÅŸimi deÄŸiÅŸtirir"
+
+#: ../rules/base.xml.in.h:116
+msgid "CapsLock toggles Shift so all keys are affected."
+msgstr "Caps Lock tuşu Shift davranışını ters çevirir; bundan alfabetik olmayan tuşlar da etkilenir."
+
+#: ../rules/base.xml.in.h:117
+msgid "CapsLock toggles normal capitalization of alphabetic characters."
+msgstr "Caps Lock tuşu büyük/küçük harf geçişi yapar."
+
+#: ../rules/base.xml.in.h:118
+msgid "CapsLock uses internal capitalization. Shift \"pauses\" CapsLock."
+msgstr "CapsLock dahili dönüşümü kullanılır, Shift tuşu Caps Lock tuşunu \"bekletir\"."
+
+#: ../rules/base.xml.in.h:119
+msgid "CapsLock uses internal capitalization. Shift doesn't affect CapsLock."
+msgstr "CapsLock dahili dönüşümü kullanır. Shift tuşu Caps Lock davranışını etkilemez."
+
+#: ../rules/base.xml.in.h:120
+msgid "Catalan variant with middle-dot L"
+msgstr "Ortası noktalı L'li Katalan yerleşimi"
+
+#: ../rules/base.xml.in.h:121
+msgid "Che"
+msgstr "Che"
+
+#: ../rules/base.xml.in.h:122
+msgid "Cherry Blue Line CyBo@rd"
+msgstr "Cherry Blue Line CyBo@rd"
+
+#: ../rules/base.xml.in.h:123
+msgid "Cherry Blue Line CyBo@rd (alternate option)"
+msgstr "Cherry Blue Line CyBo@rd (diğer seçenek)"
+
+#: ../rules/base.xml.in.h:124
+msgid "Cherry CyBo@rd USB-Hub"
+msgstr "Cherry CyBo@rd USB-Hub"
+
+#: ../rules/base.xml.in.h:125
+msgid "Cherry CyMotion Master Linux"
+msgstr "Cherry CyMotion Master Linux"
+
+#: ../rules/base.xml.in.h:126
+msgid "Cherry CyMotion Master XPress"
+msgstr "Cherry CyMotion Master XPress"
+
+#: ../rules/base.xml.in.h:127
+msgid "Chicony Internet Keyboard"
+msgstr "Chicony Genel AÄŸ Klavyesi"
+
+#: ../rules/base.xml.in.h:128
+msgid "Chicony KB-9885"
+msgstr "Chicony KB-9885"
+
+#: ../rules/base.xml.in.h:129
+msgid "Chuvash"
+msgstr "Çuvaş"
+
+#: ../rules/base.xml.in.h:130
+msgid "Chuvash Latin"
+msgstr "Çuvaş Latin"
+
+#: ../rules/base.xml.in.h:131
+msgid "Classic Dvorak"
+msgstr "Klasik Dvorak"
+
+#: ../rules/base.xml.in.h:132
+msgid "CloGaelach"
+msgstr "CloGaelach"
+
+#: ../rules/base.xml.in.h:133
+msgid "Compaq Easy Access Keyboard"
+msgstr "Compaq Kolay EriÅŸim Klavyesi"
+
+#: ../rules/base.xml.in.h:134
+msgid "Compaq Internet Keyboard (13 keys)"
+msgstr "Compaq Genel AÄŸ Klavyesi (13 tuÅŸlu)"
+
+#: ../rules/base.xml.in.h:135
+msgid "Compaq Internet Keyboard (18 keys)"
+msgstr "Compaq Genel AÄŸ Klavyesi (18 tuÅŸlu)"
+
+#: ../rules/base.xml.in.h:136
+msgid "Compaq Internet Keyboard (7 keys)"
+msgstr "Genel AÄŸ Klavyesi (7 tuÅŸlu)"
+
+#: ../rules/base.xml.in.h:137
+msgid "Compaq iPaq Keyboard"
+msgstr "Compaq iPaq Klavyesi"
+
+#: ../rules/base.xml.in.h:138
+msgid "Compose key position"
+msgstr "Karakter oluÅŸturma (compose) tuÅŸu konumu"
+
+#: ../rules/base.xml.in.h:139
+msgid "Congo, Democratic Republic of the"
+msgstr "Kongo Demokratik Cumhuriyeti"
+
+#: ../rules/base.xml.in.h:140
+msgid "Control is mapped to the Win-keys (and the usual Ctrl keys)."
+msgstr "Ctrl, Win tuşlarına eşlenir."
+
+#: ../rules/base.xml.in.h:141
+msgid "Croatia"
+msgstr "Hırvatistan"
+
+#: ../rules/base.xml.in.h:142
+msgid "Ctrl key at bottom left"
+msgstr "Sol alttaki Ctrl tuÅŸu"
+
+#: ../rules/base.xml.in.h:143
+msgid "Ctrl key at left of 'A'"
+msgstr "'A'nın solundaki Ctrl Tuşu"
+
+#: ../rules/base.xml.in.h:144
+msgid "Ctrl key position"
+msgstr "Ctrl tuÅŸunun yeri"
+
+#: ../rules/base.xml.in.h:145
+msgid "Ctrl+Shift change layout."
+msgstr "Ctrl+Shift tuşları yerleşimi değiştirir."
+
+#: ../rules/base.xml.in.h:146
+msgid "Cyrillic"
+msgstr "Kril"
+
+#: ../rules/base.xml.in.h:147 ../rules/sun.xml.in.h:39
+msgid "Cze"
+msgstr "Çek"
+
+#: ../rules/base.xml.in.h:148
+msgid "Czechia"
+msgstr "Çek Cumhuriyeti"
+
+#: ../rules/base.xml.in.h:149
+msgid "DRC"
+msgstr "DRC"
+
+#: ../rules/base.xml.in.h:150
+msgid "DTK2000"
+msgstr "DTK2000"
+
+#: ../rules/base.xml.in.h:151 ../rules/sun.xml.in.h:42
+msgid "Dead acute"
+msgstr "Ölü acute (´)"
+
+#: ../rules/base.xml.in.h:152 ../rules/sun.xml.in.h:43
+msgid "Dead grave acute"
+msgstr "Ölü grave acute (`)"
+
+#: ../rules/base.xml.in.h:153
+msgid "Default numeric keypad keys."
+msgstr "Öntanımlı tuştakımı tuşları."
+
+#: ../rules/base.xml.in.h:154
+msgid "Dell"
+msgstr "Dell"
+
+#: ../rules/base.xml.in.h:155
+msgid "Dell 101-key PC"
+msgstr "Dell 101 tuÅŸlu PC"
+
+#: ../rules/base.xml.in.h:156
+msgid "Dell Laptop/notebook Inspiron 6xxx/8xxx"
+msgstr "Dizüstü/defter Dell Inspiron 6xxx/8xxx"
+
+#: ../rules/base.xml.in.h:157
+msgid "Dell Laptop/notebook Precision M series"
+msgstr "Dell Dizüstü/defter Precision M series"
+
+#: ../rules/base.xml.in.h:158
+msgid "Dell Latitude series laptop"
+msgstr "Dell Latitude serisi Dizüstü"
+
+#: ../rules/base.xml.in.h:159
+msgid "Dell SK-8125 USB Multimedia Keybard"
+msgstr "Dell SK-8125 USB Çokluortam Klavyesi"
+
+#: ../rules/base.xml.in.h:160
+msgid "Dell SK-8135 USB Multimedia Keybard"
+msgstr "Dell SK-8135 USB Çokluortam Klavyesi"
+
+#: ../rules/base.xml.in.h:161
+msgid "Dell USB Multimedia Keybard"
+msgstr "Dell USB Çokluortam Klavyesi"
+
+#: ../rules/base.xml.in.h:162
+msgid "Denmark"
+msgstr "Danimarka"
+
+#: ../rules/base.xml.in.h:163 ../rules/sun.xml.in.h:44
+msgid "Deu"
+msgstr "Alm"
+
+#: ../rules/base.xml.in.h:164
+msgid "Dexxa Wireless Desktop Keyboard"
+msgstr "Dexxa Kablosuz Masaüstü Klavyesi"
+
+#: ../rules/base.xml.in.h:165
+msgid "Diamond 9801 / 9802 series"
+msgstr "Diamond 9801 / 9802 serileri"
+
+#: ../rules/base.xml.in.h:166 ../rules/sun.xml.in.h:46
+msgid "Dnk"
+msgstr "Dnk"
+
+#: ../rules/base.xml.in.h:167 ../rules/sun.xml.in.h:48
+msgid "Dvorak"
+msgstr "Dvorak"
+
+#: ../rules/base.xml.in.h:168
+msgid "Dvorak, Polish quotes on key \"1/!\""
+msgstr "Dvorak, \"1/!\" tuşunda Lehçe tırnaklar"
+
+#: ../rules/base.xml.in.h:169
+msgid "Dvorak, Polish quotes on quotemark key"
+msgstr "Dvorak, çift tırnak tuşunda Lehçe tırnaklar"
+
+#: ../rules/base.xml.in.h:170
+msgid "Eastern"
+msgstr "DoÄŸu"
+
+#: ../rules/base.xml.in.h:171 ../rules/sun.xml.in.h:49
+msgid "Eliminate dead keys"
+msgstr "Ölü tuşları normal yapar"
+
+#: ../rules/base.xml.in.h:172
+msgid "Ennyah DKB-1008"
+msgstr "Ennyah DKB-1008"
+
+#: ../rules/base.xml.in.h:173
+msgid "Epo"
+msgstr "Epo"
+
+#: ../rules/base.xml.in.h:174
+msgid "Ergonomic"
+msgstr "Ergonomik"
+
+#: ../rules/base.xml.in.h:175 ../rules/sun.xml.in.h:50
+msgid "Esp"
+msgstr "Esp"
+
+#: ../rules/base.xml.in.h:176
+msgid "Esperanto"
+msgstr "Esperanto"
+
+#: ../rules/base.xml.in.h:177
+msgid "Est"
+msgstr "Est"
+
+#: ../rules/base.xml.in.h:178
+msgid "Estonia"
+msgstr "Estonya"
+
+#: ../rules/base.xml.in.h:179
+msgid "Eth"
+msgstr "Ety"
+
+#: ../rules/base.xml.in.h:180
+msgid "Ethiopia"
+msgstr "Etyopya"
+
+#: ../rules/base.xml.in.h:181
+msgid "Evdev-managed keyboard"
+msgstr "Evdev yönetimli klavye"
+
+#: ../rules/base.xml.in.h:182
+msgid "Everex STEPnote"
+msgstr "Everex STEPnote"
+
+#: ../rules/base.xml.in.h:183
+msgid "Ewe"
+msgstr "Eve"
+
+#: ../rules/base.xml.in.h:184
+msgid "Extended"
+msgstr "GeliÅŸmiÅŸ"
+
+#: ../rules/base.xml.in.h:185
+msgid "Extended Backslash"
+msgstr "GeliÅŸmiÅŸ Gerisilme"
+
+#: ../rules/base.xml.in.h:186
+msgid "F-letter (F) variant"
+msgstr "F harfli (F) türü"
+
+#: ../rules/base.xml.in.h:187
+msgid "Fao"
+msgstr "Fao"
+
+#: ../rules/base.xml.in.h:188
+msgid "Faroe Islands"
+msgstr "Faroe Adaları"
+
+#: ../rules/base.xml.in.h:189 ../rules/sun.xml.in.h:51
+msgid "Fin"
+msgstr "Fin"
+
+#: ../rules/base.xml.in.h:190
+msgid "Finland"
+msgstr "Finlandiya"
+
+#: ../rules/base.xml.in.h:191
+msgid "Force standard legacy keypad"
+msgstr "Standart kadim tuştakımını etkin kılar"
+
+#: ../rules/base.xml.in.h:192 ../rules/sun.xml.in.h:53
+msgid "Fra"
+msgstr "Fra"
+
+#: ../rules/base.xml.in.h:193
+msgid "France"
+msgstr "Fransa"
+
+#: ../rules/base.xml.in.h:194 ../rules/sun.xml.in.h:55
+msgid "French"
+msgstr "Fransızca"
+
+#: ../rules/base.xml.in.h:195
+msgid "French (Macintosh)"
+msgstr "Fransız (Makintoş)"
+
+#: ../rules/base.xml.in.h:196 ../rules/sun.xml.in.h:56
+msgid "French (legacy)"
+msgstr "Fransızca (eski)"
+
+#: ../rules/base.xml.in.h:197
+msgid "French Dvorak"
+msgstr "Fransızca Dvorak"
+
+#: ../rules/base.xml.in.h:198
+msgid "French, Sun dead keys"
+msgstr "Fransızca, Sun ölü tuşlar"
+
+#: ../rules/base.xml.in.h:199
+msgid "French, eliminate dead keys"
+msgstr "Fransızca, ölü tuşsuz"
+
+#: ../rules/base.xml.in.h:200
+msgid "Fula"
+msgstr "Fula"
+
+#: ../rules/base.xml.in.h:201
+msgid "GBr"
+msgstr "GBr"
+
+#: ../rules/base.xml.in.h:202
+msgid "Ga"
+msgstr "Ga"
+
+#: ../rules/base.xml.in.h:203
+msgid "Generic 101-key PC"
+msgstr "Soysal 101 tuÅŸlu PC"
+
+#: ../rules/base.xml.in.h:204
+msgid "Generic 102-key (Intl) PC"
+msgstr "Soysal 102 tuşlu (Uluslararası) PC"
+
+#: ../rules/base.xml.in.h:205
+msgid "Generic 104-key PC"
+msgstr "Soysal 104 tuÅŸlu PC"
+
+#: ../rules/base.xml.in.h:206
+msgid "Generic 105-key (Intl) PC"
+msgstr "Soysal 105 tuşlu (uluslararası) PC"
+
+#: ../rules/base.xml.in.h:207
+msgid "Genius Comfy KB-12e"
+msgstr "Genius Comfy KB-12e"
+
+#: ../rules/base.xml.in.h:208
+msgid "Genius Comfy KB-16M / Genius MM Keyboard KWD-910"
+msgstr "Genius Comfy KB-16M / Genius MM Keyboard KWD-910"
+
+#: ../rules/base.xml.in.h:209
+msgid "Genius Comfy KB-21e-Scroll"
+msgstr "Genius Comfy KB-21e-Scroll"
+
+#: ../rules/base.xml.in.h:210
+msgid "Genius KB-19e NB"
+msgstr "Genius KB-19e NB"
+
+#: ../rules/base.xml.in.h:211
+msgid "Geo"
+msgstr "Geo"
+
+#: ../rules/base.xml.in.h:212
+msgid "Georgia"
+msgstr "Gürcistan"
+
+#: ../rules/base.xml.in.h:213
+msgid "German (Macintosh)"
+msgstr "Alman (MakintoÅŸ)"
+
+#: ../rules/base.xml.in.h:214
+msgid "German, Sun dead keys"
+msgstr "Almanca, Sun ölü tuşlar"
+
+#: ../rules/base.xml.in.h:215
+msgid "German, eliminate dead keys"
+msgstr "Almanca, ölü tuşsuz"
+
+#: ../rules/base.xml.in.h:216
+msgid "Germany"
+msgstr "Almanya"
+
+#: ../rules/base.xml.in.h:217
+msgid "Gha"
+msgstr "Gha"
+
+#: ../rules/base.xml.in.h:218
+msgid "Ghana"
+msgstr "Gana"
+
+#: ../rules/base.xml.in.h:219
+msgid "Gre"
+msgstr "Gre"
+
+#: ../rules/base.xml.in.h:220
+msgid "Greece"
+msgstr "Yunanistan"
+
+#: ../rules/base.xml.in.h:221
+msgid "Gujarati"
+msgstr "Batı Hint dili"
+
+#: ../rules/base.xml.in.h:222
+msgid "Gurmukhi"
+msgstr "Gurmukhi"
+
+#: ../rules/base.xml.in.h:223
+msgid "Gyration"
+msgstr "Çekimsel"
+
+#: ../rules/base.xml.in.h:224
+msgid "Hausa"
+msgstr "Havza"
+
+#: ../rules/base.xml.in.h:225
+msgid "Hewlett-Packard Internet Keyboard"
+msgstr "Hewlett-Packard Genel AÄŸ Klavyesi"
+
+#: ../rules/base.xml.in.h:226
+msgid "Hewlett-Packard Omnibook 500 FA"
+msgstr "Hewlett-Packard Omnibook 500 FA"
+
+#: ../rules/base.xml.in.h:227
+msgid "Hewlett-Packard Omnibook 5xx"
+msgstr "Hewlett-Packard Omnibook 5xx"
+
+#: ../rules/base.xml.in.h:228
+msgid "Hewlett-Packard Omnibook 6000/6100"
+msgstr "Hewlett-Packard Omnibook 6000/6100"
+
+#: ../rules/base.xml.in.h:229
+msgid "Hewlett-Packard Omnibook XE3 GC"
+msgstr "Hewlett-Packard Omnibook XE3 GC"
+
+#: ../rules/base.xml.in.h:230
+msgid "Hewlett-Packard Omnibook XE3 GF"
+msgstr "Hewlett-Packard Omnibook XE3 GF"
+
+#: ../rules/base.xml.in.h:231
+msgid "Hewlett-Packard Omnibook XT1000"
+msgstr "Hewlett-Packard Omnibook XT1000"
+
+#: ../rules/base.xml.in.h:232
+msgid "Hewlett-Packard Pavilion ZT11xx"
+msgstr "Hewlett-Packard Pavilion ZT11xx"
+
+#: ../rules/base.xml.in.h:233
+msgid "Hewlett-Packard SK-2501 Multimedia Keyboard"
+msgstr "Hewlett-Packard SK-2501 Çokluortam Klavyesi"
+
+#: ../rules/base.xml.in.h:234
+msgid "Hewlett-Packard SK-2505 Internet Keyboard"
+msgstr "Hewlett-Packard SK-2505 Genel AÄŸ Klavyesi"
+
+#: ../rules/base.xml.in.h:235
+msgid "Hindi Bolnagri"
+msgstr "Hindi Bolnagri"
+
+#: ../rules/base.xml.in.h:236
+msgid "Honeywell Euroboard"
+msgstr "Honeywell Euroboard"
+
+#: ../rules/base.xml.in.h:237
+msgid "Hrv"
+msgstr "Hrv"
+
+#: ../rules/base.xml.in.h:238 ../rules/sun.xml.in.h:59
+msgid "Hun"
+msgstr "Mcr"
+
+#: ../rules/base.xml.in.h:239
+msgid "Hungary"
+msgstr "Macaristan"
+
+#: ../rules/base.xml.in.h:240
+msgid "Hyper is mapped to the Win-keys."
+msgstr "Hyper, Pencere tuşlarına eşlenir."
+
+#: ../rules/base.xml.in.h:241
+msgid "IBM (LST 1205-92)"
+msgstr "IBM (LST 1205-92)"
+
+#: ../rules/base.xml.in.h:242
+msgid "IBM Rapid Access"
+msgstr "IBM Hızlı Erişim"
+
+#: ../rules/base.xml.in.h:243
+msgid "IBM Rapid Access II"
+msgstr "IBM Hızlı Erişim II"
+
+#: ../rules/base.xml.in.h:244
+msgid "IBM Rapid Access II (alternate option)"
+msgstr "IBM Hızlı Erişim II (diğer seçenek)"
+
+#: ../rules/base.xml.in.h:245
+msgid "IBM ThinkPad 560Z/600/600E/A22E"
+msgstr "IBM ThinkPad 560Z/600/600E/A22E"
+
+#: ../rules/base.xml.in.h:246
+msgid "IBM ThinkPad 560Z/600/600E/A22E, Intl"
+msgstr "IBM ThinkPad 560Z/600/600E/A22E, Intl"
+
+#: ../rules/base.xml.in.h:247 ../rules/sun.xml.in.h:61
+msgid "ISO Alternate"
+msgstr "ISO diÄŸer"
+
+#: ../rules/base.xml.in.h:248
+msgid "Iceland"
+msgstr "Ä°zlanda"
+
+#: ../rules/base.xml.in.h:249
+msgid "Igbo"
+msgstr "Igbo"
+
+#: ../rules/base.xml.in.h:250
+msgid "Ind"
+msgstr "Ind"
+
+#: ../rules/base.xml.in.h:251
+msgid "India"
+msgstr "Hindistan"
+
+#: ../rules/base.xml.in.h:252 ../rules/sun.xml.in.h:62
+msgid "International (with dead keys)"
+msgstr "Uluslararası (ölü tuşlarla)"
+
+#: ../rules/base.xml.in.h:253
+msgid "Inuktitut"
+msgstr "Inuktitut"
+
+#: ../rules/base.xml.in.h:254
+msgid "Iran"
+msgstr "Ä°ran"
+
+#: ../rules/base.xml.in.h:255
+msgid "Iraq"
+msgstr "Irak"
+
+#: ../rules/base.xml.in.h:256
+msgid "Ireland"
+msgstr "Ä°rlanda"
+
+#: ../rules/base.xml.in.h:257
+msgid "Irl"
+msgstr "Ä°rl"
+
+#: ../rules/base.xml.in.h:258
+msgid "Irn"
+msgstr "Irn"
+
+#: ../rules/base.xml.in.h:259
+msgid "Irq"
+msgstr "Irk"
+
+#: ../rules/base.xml.in.h:260
+msgid "Isl"
+msgstr "Izl"
+
+#: ../rules/base.xml.in.h:261
+msgid "Isr"
+msgstr "Ä°br"
+
+#: ../rules/base.xml.in.h:262
+msgid "Israel"
+msgstr "Ä°srail"
+
+#: ../rules/base.xml.in.h:263 ../rules/sun.xml.in.h:63
+msgid "Ita"
+msgstr "Ä°ta"
+
+#: ../rules/base.xml.in.h:264
+msgid "Italy"
+msgstr "Ä°talya"
+
+#: ../rules/base.xml.in.h:265
+msgid "Japan"
+msgstr "Japonya"
+
+#: ../rules/base.xml.in.h:266
+msgid "Japan (PC-98xx Series)"
+msgstr "Japon (PC-98xx Series)"
+
+#: ../rules/base.xml.in.h:267
+msgid "Japanese 106-key"
+msgstr "Japonca 106 tuÅŸlu"
+
+#: ../rules/base.xml.in.h:268
+msgid "Japanese keyboard options"
+msgstr "Japonca klavye seçenekleri"
+
+#: ../rules/base.xml.in.h:269 ../rules/sun.xml.in.h:66
+msgid "Jpn"
+msgstr "Jpn"
+
+#: ../rules/base.xml.in.h:270
+msgid "Kana"
+msgstr "Kana"
+
+#: ../rules/base.xml.in.h:271
+msgid "Kana Lock key is locking"
+msgstr "Kana Lock tuÅŸu kilitler"
+
+#: ../rules/base.xml.in.h:272
+msgid "Kannada"
+msgstr "Güney Hint dili"
+
+#: ../rules/base.xml.in.h:273
+msgid "Kashubian"
+msgstr "Kaşubyalı"
+
+#: ../rules/base.xml.in.h:274
+msgid "Kaz"
+msgstr "Kaz"
+
+#: ../rules/base.xml.in.h:275
+msgid "Kazakh with Russian"
+msgstr "Kazak (rus)"
+
+#: ../rules/base.xml.in.h:276
+msgid "Kazakhstan"
+msgstr "Kazakistan"
+
+#: ../rules/base.xml.in.h:277
+msgid "Keypad"
+msgstr "Tuştakımı"
+
+#: ../rules/base.xml.in.h:278
+msgid "Keytronic FlexPro"
+msgstr "Keytronic FlexPro"
+
+#: ../rules/base.xml.in.h:279
+msgid "Khm"
+msgstr "Kım"
+
+#: ../rules/base.xml.in.h:280
+msgid "Kor"
+msgstr "Kor"
+
+#: ../rules/base.xml.in.h:281
+msgid "Korea, Republic of"
+msgstr "Kore Cumhuriyeti"
+
+#: ../rules/base.xml.in.h:282
+msgid "Korean 106-key"
+msgstr "Korece 106 tuÅŸlu"
+
+#: ../rules/base.xml.in.h:283
+msgid "Kotoistus"
+msgstr "Kotüstus"
+
+#: ../rules/base.xml.in.h:284
+msgid "Kurdish, (F)"
+msgstr "Kürtçe (Türkçe F klavye)"
+
+#: ../rules/base.xml.in.h:285
+msgid "Kurdish, Arabic-Latin"
+msgstr "Kürtçe (Arapça-Latin)"
+
+#: ../rules/base.xml.in.h:286
+msgid "Kurdish, Latin Alt-Q"
+msgstr "Kürtçe (Türkçe Alt-Q klavye)"
+
+#: ../rules/base.xml.in.h:287
+msgid "Kurdish, Latin Q"
+msgstr "Kürtçe (Türkçe Q klavye)"
+
+#: ../rules/base.xml.in.h:288
+msgid "Kyr"
+msgstr "Kır"
+
+#: ../rules/base.xml.in.h:289
+msgid "Kyrgyzstan"
+msgstr "Kırgızistan"
+
+#: ../rules/base.xml.in.h:290
+msgid "LAm"
+msgstr "LAm"
+
+#: ../rules/base.xml.in.h:291
+msgid "LCtrl+LShift change layout."
+msgstr "Ctrl+Shift tuşları yerleşimi değiştirir."
+
+#: ../rules/base.xml.in.h:292
+msgid "Lao"
+msgstr "Lao"
+
+#: ../rules/base.xml.in.h:293
+msgid "Laos"
+msgstr "Laos"
+
+#: ../rules/base.xml.in.h:294
+msgid "Laptop/notebook Compaq (eg. Armada) Laptop Keyboard"
+msgstr "Dizüstü/defter Compaq (örn. Armada) Dizüstü Klavyesi"
+
+#: ../rules/base.xml.in.h:295
+msgid "Laptop/notebook Compaq (eg. Presario) Internet Keyboard"
+msgstr "Dizüstü/defter Compaq (örn. Presario) Genel Ağ Klavyesi"
+
+#: ../rules/base.xml.in.h:296
+msgid "Laptop/notebook eMachines m68xx"
+msgstr "Dizüstü/defter eMachines m68xx"
+
+#: ../rules/base.xml.in.h:297
+msgid "Latin"
+msgstr "Latin"
+
+#: ../rules/base.xml.in.h:298
+msgid "Latin American"
+msgstr "Latin Amerikanca"
+
+#: ../rules/base.xml.in.h:299
+msgid "Latin Unicode"
+msgstr "Latin Unicode"
+
+#: ../rules/base.xml.in.h:300
+msgid "Latin Unicode qwerty"
+msgstr "Latin Unicode qwerty"
+
+#: ../rules/base.xml.in.h:301
+msgid "Latin qwerty"
+msgstr "Latin qwerty"
+
+#: ../rules/base.xml.in.h:302
+msgid "Latin with guillemets"
+msgstr "Açılı ayraçlarla Latin"
+
+#: ../rules/base.xml.in.h:303
+msgid "Latvia"
+msgstr "Letonya"
+
+#: ../rules/base.xml.in.h:304
+msgid "Layout switching"
+msgstr "YerleÅŸim deÄŸiÅŸtirme "
+
+#: ../rules/base.xml.in.h:305
+msgid "Left Alt is swapped with left Win-key."
+msgstr "Soydaki Alt tuÅŸu ile soldaki Pencere tuÅŸu yerdeÄŸiÅŸtirir."
+
+#: ../rules/base.xml.in.h:306
+msgid "Left Alt key changes layout."
+msgstr "Soldaki Alt tuÅŸu yerleÅŸimi deÄŸiÅŸtirir."
+
+#: ../rules/base.xml.in.h:307
+msgid "Left Alt key switches layout while pressed."
+msgstr "Soldaki Alt tuşu basılıyken diğer yerleşimi etkin olur."
+
+#: ../rules/base.xml.in.h:308
+msgid "Left Ctrl key changes layout."
+msgstr "Soldaki Ctrl tuÅŸu yerleÅŸimi deÄŸiÅŸtirir."
+
+#: ../rules/base.xml.in.h:309
+msgid "Left Shift key changes layout."
+msgstr "Soldaki Shift tuÅŸu yerleÅŸimi deÄŸiÅŸtirir."
+
+#: ../rules/base.xml.in.h:310
+msgid "Left Win-key changes layout."
+msgstr "Soldaki Pencere tuÅŸu yerleÅŸimi deÄŸiÅŸtirir."
+
+#: ../rules/base.xml.in.h:311
+msgid "Left Win-key is Compose."
+msgstr "Soldaki Pencere tuÅŸu karakter birleÅŸimi yapar."
+
+#: ../rules/base.xml.in.h:312
+msgid "Left Win-key switches layout while pressed."
+msgstr "Soldaki Win tuşu basılıyken diğer yerleşim etkin olur."
+
+#: ../rules/base.xml.in.h:313
+msgid "Left hand"
+msgstr "Solak"
+
+#: ../rules/base.xml.in.h:314
+msgid "Left handed Dvorak"
+msgstr "Solak Dvorak"
+
+#: ../rules/base.xml.in.h:315
+msgid "Lithuania"
+msgstr "Litvanya"
+
+#: ../rules/base.xml.in.h:316
+msgid "Logitech Access Keyboard"
+msgstr "Logitech Access Keyboard"
+
+#: ../rules/base.xml.in.h:317
+msgid "Logitech Cordless Desktop"
+msgstr "Logitech Kablosuz Masaüstü"
+
+#: ../rules/base.xml.in.h:318
+msgid "Logitech Cordless Desktop LX-300"
+msgstr "Logitech Kablosuz Masaüstü LX-300"
+
+#: ../rules/base.xml.in.h:319
+msgid "Logitech Cordless Desktop Navigator"
+msgstr "Logitech Kablosuz Masaüstü Tarayıcı"
+
+#: ../rules/base.xml.in.h:320
+msgid "Logitech Cordless Desktop Optical"
+msgstr "Logitech Kablosuz Masaüstü Optik"
+
+#: ../rules/base.xml.in.h:321
+msgid "Logitech Cordless Desktop Pro"
+msgstr "Logitech Kablosuz Masaüstü Pro"
+
+#: ../rules/base.xml.in.h:322
+msgid "Logitech Cordless Desktop Pro (alternate option)"
+msgstr "Logitech Kablosuz Masaüstü Pro (diğer seçenek)"
+
+#: ../rules/base.xml.in.h:323
+msgid "Logitech Cordless Desktop Pro (alternate option2)"
+msgstr "Logitech Kablosuz Masaüstü Pro (diğer 2. seçenek)"
+
+#: ../rules/base.xml.in.h:324
+msgid "Logitech Cordless Desktop iTouch"
+msgstr "Logitech Kablosuz Masaüstü iTouch"
+
+#: ../rules/base.xml.in.h:325
+msgid "Logitech Cordless Freedom/Desktop Navigator"
+msgstr "Logitech Kablosuz Özgür/Masaüstü Tarayıcı"
+
+#: ../rules/base.xml.in.h:326
+msgid "Logitech G15 extra keys via G15daemon"
+msgstr "Logitech G15, G15daemon üzerinden ek tuşlu"
+
+#: ../rules/base.xml.in.h:327
+msgid "Logitech Internet Keyboard"
+msgstr "Logitech Genel AÄŸ Klavyesi"
+
+#: ../rules/base.xml.in.h:328
+msgid "Logitech Internet Navigator Keyboard"
+msgstr "Logitech Genel Ağ Tarayıcı Klavyesi"
+
+#: ../rules/base.xml.in.h:329
+msgid "Logitech Ultra-X Keyboard"
+msgstr "Logitech Ultra-X Keyboard"
+
+#: ../rules/base.xml.in.h:330
+msgid "Logitech diNovo Keyboard"
+msgstr "Logitech Access Klavye"
+
+#: ../rules/base.xml.in.h:331
+msgid "Logitech iTouch"
+msgstr "Logitech iTouch"
+
+#: ../rules/base.xml.in.h:332
+msgid "Logitech iTouch Cordless Keyboard (model Y-RB6)"
+msgstr "Logitech iTouch Kablosuz Klavyesi (model Y-RB6)"
+
+#: ../rules/base.xml.in.h:333
+msgid "Logitech iTouch Internet Navigator Keyboard SE"
+msgstr "Logitech iTouch Genel Ağ Tarayıcı Klavyesi SE"
+
+#: ../rules/base.xml.in.h:334
+msgid "Logitech iTouch Internet Navigator Keyboard SE (USB)"
+msgstr "Logitech iTouch Genel Ağ Tarayıcı Klavyesi SE (USB)"
+
+#: ../rules/base.xml.in.h:335
+msgid "Ltu"
+msgstr "Ltu"
+
+#: ../rules/base.xml.in.h:336
+msgid "Lva"
+msgstr "Lva"
+
+#: ../rules/base.xml.in.h:337
+msgid "MESS"
+msgstr "MESS"
+
+#: ../rules/base.xml.in.h:338
+msgid "MacBook/MacBook Pro"
+msgstr "MacBook/MacBook Pro"
+
+#: ../rules/base.xml.in.h:339
+msgid "MacBook/MacBook Pro (Intl)"
+msgstr "MacBook/MacBook Pro (Uluslararası)"
+
+#: ../rules/base.xml.in.h:340
+msgid "Macedonia"
+msgstr "Makedonya"
+
+#: ../rules/base.xml.in.h:341
+msgid "Macintosh"
+msgstr "Macintosh"
+
+#: ../rules/base.xml.in.h:342
+msgid "Macintosh Old"
+msgstr "Eski Macintosh"
+
+#: ../rules/base.xml.in.h:343
+msgid "Macintosh, Sun dead keys"
+msgstr "Makintoş, Sun ölü tuşlar"
+
+#: ../rules/base.xml.in.h:344
+msgid "Macintosh, eliminate dead keys"
+msgstr "Makintoş, ölü tuşsuz"
+
+#: ../rules/base.xml.in.h:345
+msgid "Make CapsLock an additional Ctrl."
+msgstr "CapsLock tuÅŸunu ek bir Ctrl tuÅŸu yapar."
+
+#: ../rules/base.xml.in.h:346
+msgid "Mal"
+msgstr "Mal"
+
+#: ../rules/base.xml.in.h:347
+msgid "Malayalam"
+msgstr "Malayalam dili"
+
+#: ../rules/base.xml.in.h:348
+msgid "Maldives"
+msgstr "Maldivler"
+
+#: ../rules/base.xml.in.h:349
+msgid "Malta"
+msgstr "Malta"
+
+#: ../rules/base.xml.in.h:350
+msgid "Maltese keyboard with US layout"
+msgstr "Ameriken yerleşimli Maltız klavyesi"
+
+#: ../rules/base.xml.in.h:351
+msgid "Mao"
+msgstr "Mao"
+
+#: ../rules/base.xml.in.h:352
+msgid "Maori"
+msgstr "Mayorka"
+
+#: ../rules/base.xml.in.h:353
+msgid "Memorex MX1998"
+msgstr "Memorex MX1998"
+
+#: ../rules/base.xml.in.h:354
+msgid "Memorex MX2500 EZ-Access Keyboard"
+msgstr "Memorex MX2500 EZ EriÅŸim Klavyesi"
+
+#: ../rules/base.xml.in.h:355
+msgid "Memorex MX2750"
+msgstr "Memorex MX2750"
+
+#: ../rules/base.xml.in.h:356
+msgid "Menu is Compose."
+msgstr "Menü tuşu karakter birleşimi yapar."
+
+#: ../rules/base.xml.in.h:357
+msgid "Menu key changes layout."
+msgstr "Menü tuşu yerleşimi değiştirir."
+
+#: ../rules/base.xml.in.h:358
+msgid "Meta is mapped to the Win-keys."
+msgstr "Meta, Win tuşları ile eşleştirilir."
+
+#: ../rules/base.xml.in.h:359
+msgid "Meta is mapped to the left Win-key."
+msgstr "Meta, soldaki Win tuÅŸu ile eÅŸleÅŸtirilir."
+
+#: ../rules/base.xml.in.h:360
+msgid "Microsoft Internet Keyboard"
+msgstr "Microsoft Genel AÄŸ Klavyesi"
+
+#: ../rules/base.xml.in.h:361
+msgid "Microsoft Internet Keyboard Pro, Swedish"
+msgstr "Microsoft Genel Ağ Klavyesi Pro, İsveçce"
+
+#: ../rules/base.xml.in.h:362
+msgid "Microsoft Natural"
+msgstr "Microsoft Basit"
+
+#: ../rules/base.xml.in.h:363
+msgid "Microsoft Natural Keyboard Pro / Microsoft Internet Keyboard Pro"
+msgstr "Microsoft Basit Klavye Pro / Microsoft Genel AÄŸ Klavyesi Pro"
+
+#: ../rules/base.xml.in.h:364
+msgid "Microsoft Natural Keyboard Pro OEM"
+msgstr "Microsoft Basit Klavye Pro OEM"
+
+#: ../rules/base.xml.in.h:365
+msgid "Microsoft Natural Keyboard Pro USB / Microsoft Internet Keyboard Pro"
+msgstr "Microsoft Natural Keyboard Pro USB / Microsoft Internet Keyboard Pro"
+
+#: ../rules/base.xml.in.h:366
+msgid "Microsoft Office Keyboard"
+msgstr "Microsoft Ofis Klavyesi"
+
+#: ../rules/base.xml.in.h:367
+msgid "Microsoft Wireless Multimedia Keyboard 1.0A"
+msgstr "Microsoft Wireless Multimedia Keyboard 1.0A"
+
+#: ../rules/base.xml.in.h:368 ../rules/sun.xml.in.h:72
+msgid "Miscellaneous compatibility options"
+msgstr "Çeşitli uyumluluk seçenekleri"
+
+#: ../rules/base.xml.in.h:369
+msgid "Mkd"
+msgstr "Mkd"
+
+#: ../rules/base.xml.in.h:370
+msgid "Mlt"
+msgstr "Mlt"
+
+#: ../rules/base.xml.in.h:371
+msgid "Mmr"
+msgstr "Mmr"
+
+#: ../rules/base.xml.in.h:372
+msgid "Mng"
+msgstr "MoÄŸ"
+
+#: ../rules/base.xml.in.h:373
+msgid "Mongolia"
+msgstr "MoÄŸolistan"
+
+#: ../rules/base.xml.in.h:374
+msgid "Morocco"
+msgstr "Fas"
+
+#: ../rules/base.xml.in.h:375 ../rules/sun.xml.in.h:73
+msgid "Multilingual"
+msgstr "Çokdilli"
+
+#: ../rules/base.xml.in.h:376
+msgid "Multilingual, first part"
+msgstr "Çokdilli, ilk bölüm"
+
+#: ../rules/base.xml.in.h:377 ../rules/sun.xml.in.h:74
+msgid "Multilingual, second part"
+msgstr "Çokdilli, ikinci bölüm"
+
+#: ../rules/base.xml.in.h:378
+msgid "Myanmar"
+msgstr "Miyanmar"
+
+#: ../rules/base.xml.in.h:379
+msgid "NICOLA-F style Backspace"
+msgstr "NICOLA-F tarzı Gerisilme"
+
+#: ../rules/base.xml.in.h:380
+msgid "Neostyle"
+msgstr "Yenitarz"
+
+#: ../rules/base.xml.in.h:381
+msgid "Nep"
+msgstr "Nep"
+
+#: ../rules/base.xml.in.h:382
+msgid "Nepal"
+msgstr "Nepal"
+
+#: ../rules/base.xml.in.h:383
+msgid "Netherlands"
+msgstr "Hollanda"
+
+#: ../rules/base.xml.in.h:384
+msgid "Nig"
+msgstr "Nij"
+
+#: ../rules/base.xml.in.h:385
+msgid "Nigeria"
+msgstr "Nijerya"
+
+#: ../rules/base.xml.in.h:386
+msgid "Nld"
+msgstr "Hol"
+
+#: ../rules/base.xml.in.h:387 ../rules/sun.xml.in.h:75
+msgid "Nor"
+msgstr "Nor"
+
+#: ../rules/base.xml.in.h:388
+msgid "Northern Saami"
+msgstr "Kuzey Sami"
+
+#: ../rules/base.xml.in.h:389
+msgid "Northern Saami, eliminate dead keys"
+msgstr "Kuzey Sami, ölü tuşsuz"
+
+#: ../rules/base.xml.in.h:390
+msgid "Northgate OmniKey 101"
+msgstr "Northgate OmniKey 101"
+
+#: ../rules/base.xml.in.h:391
+msgid "Norway"
+msgstr "Norveç"
+
+#: ../rules/base.xml.in.h:392
+msgid "NumLock LED shows alternative layout."
+msgstr "Num_Lock LED'i diğer yerleşimi gösterir."
+
+#: ../rules/base.xml.in.h:393
+msgid "Numeric keypad keys work as with Mac."
+msgstr "Tuştakımı Mac gibi çalışır."
+
+#: ../rules/base.xml.in.h:394
+msgid "Numeric keypad layout selection"
+msgstr "Sayısal tuştakımı yerleşimi seçimi"
+
+#: ../rules/base.xml.in.h:395
+msgid "OADG 109A"
+msgstr "OADG 109A"
+
+#: ../rules/base.xml.in.h:396
+msgid "Ogham"
+msgstr "Ogham"
+
+#: ../rules/base.xml.in.h:397
+msgid "Ogham IS434"
+msgstr "Ogham IS434"
+
+#: ../rules/base.xml.in.h:398
+msgid "Oriya"
+msgstr "Orissa dili"
+
+#: ../rules/base.xml.in.h:399
+msgid "Ortek MCK-800 MM/Internet keyboard"
+msgstr "Oretec MCK-800 MM/Genel AÄŸ Klavyesi"
+
+#: ../rules/base.xml.in.h:400
+msgid "Ossetian"
+msgstr "Osetya"
+
+#: ../rules/base.xml.in.h:401
+msgid "Ossetian, Winkeys"
+msgstr "Osetya, Pencere tuşları"
+
+#: ../rules/base.xml.in.h:402
+msgid "PC-98xx Series"
+msgstr "PC-98xx Serisi"
+
+#: ../rules/base.xml.in.h:403
+msgid "Pak"
+msgstr "Pak"
+
+#: ../rules/base.xml.in.h:404
+msgid "Pakistan"
+msgstr "Pakistan"
+
+#: ../rules/base.xml.in.h:405
+msgid "Pashto"
+msgstr "PaÅŸto"
+
+#: ../rules/base.xml.in.h:406
+msgid "Pattachote"
+msgstr "Pataküte"
+
+#: ../rules/base.xml.in.h:407 ../rules/sun.xml.in.h:78
+msgid "Phonetic"
+msgstr "Fonetik"
+
+#: ../rules/base.xml.in.h:408 ../rules/sun.xml.in.h:79
+msgid "Pol"
+msgstr "Pol"
+
+#: ../rules/base.xml.in.h:409
+msgid "Poland"
+msgstr "Polonya"
+
+#: ../rules/base.xml.in.h:410
+msgid "Polytonic"
+msgstr "Politonik"
+
+#: ../rules/base.xml.in.h:411
+msgid "Portugal"
+msgstr "Portekiz"
+
+#: ../rules/base.xml.in.h:412
+msgid "Press Left Alt key to choose 3rd level."
+msgstr "3. seviyeyi seçmek için soldaki Alt tuşuna basın."
+
+#: ../rules/base.xml.in.h:413
+msgid "Press Left Win-key to choose 3rd level."
+msgstr "3. seviyeyi seçmek için soldaki Win tuşuna basın."
+
+#: ../rules/base.xml.in.h:414
+msgid "Press Menu key to choose 3rd level."
+msgstr "3. seviyeyi seçmek için Menü tuşuna basın."
+
+#: ../rules/base.xml.in.h:415
+msgid "Press Right Alt key to choose 3rd level, Shift+Right Alt key is Multi_Key."
+msgstr "3. seviyeyi seçmek için sağdaki Alt tuşuna basın, Sağdaki Alt tuşuyla birlikte Shift tuşu AltGr gibi davranır."
+
+#: ../rules/base.xml.in.h:416
+msgid "Press Right Alt key to choose 3rd level."
+msgstr "3. seviyeyi seçmek için sağdaki Alt tuşuna basın."
+
+#: ../rules/base.xml.in.h:417
+msgid "Press Right Ctrl to choose 3rd level."
+msgstr "3. seviyeyi seçmek için sağdaki Ctrl tuşuna basın."
+
+#: ../rules/base.xml.in.h:418
+msgid "Press Right Win-key to choose 3rd level."
+msgstr "3. seviyeyi seçmek için sağdaki Win tuşuna basın."
+
+#: ../rules/base.xml.in.h:419
+msgid "Press any of Alt keys to choose 3rd level."
+msgstr "3. seviyeyi seçmek için Alt tuşlarından birine basın."
+
+#: ../rules/base.xml.in.h:420
+msgid "Press any of Win-keys to choose 3rd level."
+msgstr "3. seviyeyi seçmek için Win tuşlarından birine basın."
+
+#: ../rules/base.xml.in.h:421
+msgid "Pro"
+msgstr "Pro"
+
+#: ../rules/base.xml.in.h:422
+msgid "Pro Keypad"
+msgstr "Pro Klavye"
+
+#: ../rules/base.xml.in.h:423
+msgid "Probhat"
+msgstr "Probat"
+
+#: ../rules/base.xml.in.h:424
+msgid "Propeller Voyager (KTEZ-1000)"
+msgstr "Propeller Voyager (KTEZ-1000)"
+
+#: ../rules/base.xml.in.h:425 ../rules/sun.xml.in.h:88
+msgid "Prt"
+msgstr "Prt"
+
+#: ../rules/base.xml.in.h:426
+msgid "QTronix Scorpius 98N+"
+msgstr "QTronix Scorpius 98N+"
+
+#: ../rules/base.xml.in.h:427
+msgid "R-Alt switches layout while pressed."
+msgstr "Sağdaki Alt tuşu basılıyken diğer yerleşim etkin olur."
+
+#: ../rules/base.xml.in.h:428
+msgid "Right Alt is Compose."
+msgstr "SaÄŸdaki Alt tuÅŸu karakter birleÅŸimi yapar."
+
+#: ../rules/base.xml.in.h:429
+msgid "Right Alt key changes layout."
+msgstr "SaÄŸdaki Alt tuÅŸu yerleÅŸimi deÄŸiÅŸtirir."
+
+#: ../rules/base.xml.in.h:430 ../rules/sun.xml.in.h:90
+msgid "Right Alt key never chooses 3rd level."
+msgstr "Sağdaki Alt tuşu 3. seviyeyi asla seçmez."
+
+#: ../rules/base.xml.in.h:431
+msgid "Right Ctrl is Compose."
+msgstr "SaÄŸdaki Ctrl tuÅŸu karakter birleÅŸimi yapar."
+
+#: ../rules/base.xml.in.h:432
+msgid "Right Ctrl key changes layout."
+msgstr "SaÄŸdaki Ctrl tuÅŸu yerleÅŸimi deÄŸiÅŸtirir."
+
+#: ../rules/base.xml.in.h:433
+msgid "Right Ctrl key switches layout while pressed."
+msgstr "Sağdaki Ctrl tuşu basılıyken diğer yerleşim etkin olur."
+
+#: ../rules/base.xml.in.h:434
+msgid "Right Ctrl key works as Right Alt."
+msgstr "Sağdaki Ctrl tuşu sağdaki Alt tuşu gibi çalışır."
+
+#: ../rules/base.xml.in.h:435
+msgid "Right Shift key changes layout."
+msgstr "SaÄŸdaki Shift tuÅŸu yerleÅŸimi deÄŸiÅŸtirir."
+
+#: ../rules/base.xml.in.h:436
+msgid "Right Win-key changes layout."
+msgstr "SaÄŸdaki Win tuÅŸu yerleÅŸimi deÄŸiÅŸtirir."
+
+#: ../rules/base.xml.in.h:437
+msgid "Right Win-key is Compose."
+msgstr "SaÄŸdaki Win tuÅŸu karakter birleÅŸimi yapar."
+
+#: ../rules/base.xml.in.h:438
+msgid "Right Win-key switches layout while pressed."
+msgstr "Sağdaki Win tuşu basılıyken diğer yerleşim etkin olur."
+
+#: ../rules/base.xml.in.h:439
+msgid "Right hand"
+msgstr "SaÄŸ el"
+
+#: ../rules/base.xml.in.h:440
+msgid "Right handed Dvorak"
+msgstr "SaÄŸ elle Dvorak"
+
+#: ../rules/base.xml.in.h:441
+msgid "Romania"
+msgstr "Romenya"
+
+#: ../rules/base.xml.in.h:442
+msgid "Romanian keyboard with German letters"
+msgstr "Alman harfleriyle Romanya klavyesi"
+
+#: ../rules/base.xml.in.h:443
+msgid "Romanian keyboard with German letters, eliminate dead keys"
+msgstr "Alman harfleriyle Romanya klavyesi, ölü tuşsuz"
+
+#: ../rules/base.xml.in.h:444
+msgid "Rou"
+msgstr "Rou"
+
+#: ../rules/base.xml.in.h:445 ../rules/sun.xml.in.h:95
+msgid "Rus"
+msgstr "Rus"
+
+#: ../rules/base.xml.in.h:446
+msgid "Russia"
+msgstr "Rusya"
+
+#: ../rules/base.xml.in.h:447 ../rules/sun.xml.in.h:96
+msgid "Russian"
+msgstr "Rusça"
+
+#: ../rules/base.xml.in.h:448
+msgid "Russian phonetic"
+msgstr "Rusça fonetik"
+
+#: ../rules/base.xml.in.h:449
+msgid "Russian phonetic, eliminate dead keys"
+msgstr "Rusça fonetik, ölü tuşsuz"
+
+#: ../rules/base.xml.in.h:450
+msgid "Russian with Kazakh"
+msgstr "Rusça (kazak)"
+
+#: ../rules/base.xml.in.h:451
+msgid "SCG"
+msgstr "SCG"
+
+#: ../rules/base.xml.in.h:452
+msgid "SILVERCREST Multimedia Wireless Keyboard"
+msgstr "SILVERCREST Çokluortam Kablosuz Klavyesi"
+
+#: ../rules/base.xml.in.h:453
+msgid "SK-1300"
+msgstr "SK-1300"
+
+#: ../rules/base.xml.in.h:454
+msgid "SK-2500"
+msgstr "SK-2500"
+
+#: ../rules/base.xml.in.h:455
+msgid "SK-6200"
+msgstr "SK-6200"
+
+#: ../rules/base.xml.in.h:456
+msgid "SK-7100"
+msgstr "SK-7100"
+
+#: ../rules/base.xml.in.h:457
+msgid "SVEN Ergonomic 2500"
+msgstr "SVEN Ergonomik 2500"
+
+#: ../rules/base.xml.in.h:458
+msgid "Samsung SDM 4500P"
+msgstr "Samsung SDM 4500P"
+
+#: ../rules/base.xml.in.h:459
+msgid "Samsung SDM 4510P"
+msgstr "Samsung SDM 4510P"
+
+#: ../rules/base.xml.in.h:460
+msgid "ScrollLock LED shows alternative layout."
+msgstr "Scroll_Lock LED'i diğer yerleşimi gösterir."
+
+#: ../rules/base.xml.in.h:461
+msgid "Serbia and Montenegro"
+msgstr "Sırbistan ve Karadağ"
+
+#: ../rules/base.xml.in.h:462
+msgid "Shift with numeric keypad keys works as in MS Windows."
+msgstr "Sayısal tuştakımı Shift ile MS Windows'daki gibi çalışır."
+
+#: ../rules/base.xml.in.h:463
+msgid "Shift+CapsLock changes layout."
+msgstr "Shift+CapsLock tuşları yerleşimi değiştirir."
+
+#: ../rules/base.xml.in.h:464
+msgid "Slovakia"
+msgstr "Slovakya"
+
+#: ../rules/base.xml.in.h:465
+msgid "Slovenia"
+msgstr "Slovenya"
+
+#: ../rules/base.xml.in.h:466
+msgid "South Africa"
+msgstr "Güney Afrika"
+
+#: ../rules/base.xml.in.h:467
+msgid "Southern Uzbek"
+msgstr "Güney Özbekistan"
+
+#: ../rules/base.xml.in.h:468
+msgid "Space key outputs non-breakable space character at fourth level, thin non-breakable space character at sixth level"
+msgstr "Boşluk tuşu nobreakspace'i dördüncü seviyede çıktılar, altıncı seviyede incesini basar"
+
+#: ../rules/base.xml.in.h:469
+msgid "Space key outputs non-breakable space character at fourth level."
+msgstr "Boşluk tuşu nobreakspace'i dördüncü seviyede çıktılar."
+
+#: ../rules/base.xml.in.h:470
+msgid "Space key outputs non-breakable space character at second level."
+msgstr "Boşluk tuşu nobreakspace'i ikinci seviyede çıktılar."
+
+#: ../rules/base.xml.in.h:471
+msgid "Space key outputs non-breakable space character at third level, nothing at fourth level."
+msgstr "Boşluk tuşu nobreakspace'i dördüncü seviyede çıktılar, üçüncü işlevsizdir."
+
+#: ../rules/base.xml.in.h:472
+msgid "Space key outputs non-breakable space character at third level, thin non-breakable space character at fourth level"
+msgstr "Boşluk tuşu üçüncü seviyede nobreakspace basar, dördüncü seviyede incesini basar"
+
+#: ../rules/base.xml.in.h:473
+msgid "Space key outputs non-breakable space character at third level."
+msgstr "Boşluk tuşu nobreakspace'i üçüncü seviyede çıktılar."
+
+#: ../rules/base.xml.in.h:474
+msgid "Space key outputs usual space at any level."
+msgstr "BoÅŸluk tuÅŸu her seviyede boÅŸluk basar (nobreakspace basmaz)."
+
+#: ../rules/base.xml.in.h:475
+msgid "Spain"
+msgstr "Ä°spanya"
+
+#: ../rules/base.xml.in.h:476 ../rules/sun.xml.in.h:103
+msgid "Special keys (Ctrl+Alt+&lt;key&gt;) handled in a server."
+msgstr "Bir sunucuda elde edilen özel tuşlar (Ctrl+Alt+&lt;tuş&gt;)"
+
+#: ../rules/base.xml.in.h:477
+msgid "SrL"
+msgstr "SrL"
+
+#: ../rules/base.xml.in.h:478
+msgid "Sri Lanka"
+msgstr "Sri Lanka"
+
+#: ../rules/base.xml.in.h:479 ../rules/sun.xml.in.h:104
+msgid "Standard"
+msgstr "Standart"
+
+#. RSTU 2019-91
+#: ../rules/base.xml.in.h:481
+msgid "Standard RSTU"
+msgstr "Standart RSTU"
+
+#. RSTU 2019-91
+#: ../rules/base.xml.in.h:483
+msgid "Standard RSTU on Russian layout"
+msgstr "Rusça yerleşimde standart RSTU"
+
+#: ../rules/base.xml.in.h:484 ../rules/sun.xml.in.h:112
+msgid "Sun dead keys"
+msgstr "Sun ölü tuşlar"
+
+#: ../rules/base.xml.in.h:485
+msgid "Super Power Multimedia Keyboard"
+msgstr "Super Power Multimedia Keyboard"
+
+#: ../rules/base.xml.in.h:486
+msgid "Super is mapped to the Win-keys."
+msgstr "Super, Pencere tuşlarına eşlenir."
+
+#: ../rules/base.xml.in.h:487
+msgid "Svdvorak"
+msgstr "Svdvorak"
+
+#: ../rules/base.xml.in.h:488 ../rules/sun.xml.in.h:113
+msgid "Svk"
+msgstr "Svk"
+
+#: ../rules/base.xml.in.h:489
+msgid "Svn"
+msgstr "Svn"
+
+#: ../rules/base.xml.in.h:490
+msgid "Swap Ctrl and CapsLock."
+msgstr "Ctrl ile Caps Lock yer deÄŸiÅŸtirir."
+
+#: ../rules/base.xml.in.h:491
+msgid "Swap keycodes of two keys when Mac keyboards are misdetected by kernel."
+msgstr "Makintoş klavyeler çekirdek tarafından algılanamadığında iki seviyeli tuş kodlarına geçilir."
+
+#: ../rules/base.xml.in.h:492 ../rules/sun.xml.in.h:115
+msgid "Swe"
+msgstr "Ä°sve"
+
+#: ../rules/base.xml.in.h:493
+msgid "Sweden"
+msgstr "İsveç"
+
+#: ../rules/base.xml.in.h:494
+msgid "Switzerland"
+msgstr "İsviçre"
+
+#: ../rules/base.xml.in.h:495
+msgid "Symplon PaceBook (tablet PC)"
+msgstr "Symplon PaceBook (tablet PC)"
+
+#: ../rules/base.xml.in.h:496
+msgid "Syr"
+msgstr "Sur"
+
+#: ../rules/base.xml.in.h:497
+msgid "Syria"
+msgstr "Suriye"
+
+#: ../rules/base.xml.in.h:498
+msgid "Syriac"
+msgstr "Suriye"
+
+#: ../rules/base.xml.in.h:499
+msgid "Syriac phonetic"
+msgstr "Suriye fonetik"
+
+#: ../rules/base.xml.in.h:500
+msgid "TIS-820.2538"
+msgstr "TIS-820.2538"
+
+#: ../rules/base.xml.in.h:501
+msgid "Tajikistan"
+msgstr "Tacikistan"
+
+#: ../rules/base.xml.in.h:502
+msgid "Tamil"
+msgstr "Tamil dili"
+
+#: ../rules/base.xml.in.h:503
+msgid "Tamil TAB Typewriter"
+msgstr "Tamil TAB Daktilo"
+
+#: ../rules/base.xml.in.h:504
+msgid "Tamil TSCII Typewriter"
+msgstr "Tamil TSCII Daktilo"
+
+#: ../rules/base.xml.in.h:505
+msgid "Tamil Unicode"
+msgstr "Tamil Unicode"
+
+#: ../rules/base.xml.in.h:506
+msgid "Tatar"
+msgstr "Tatar"
+
+#: ../rules/base.xml.in.h:507
+msgid "Telugu"
+msgstr "Telugu dili"
+
+#: ../rules/base.xml.in.h:508
+msgid "Tha"
+msgstr "Tha"
+
+#: ../rules/base.xml.in.h:509
+msgid "Thailand"
+msgstr "Tayland"
+
+#: ../rules/base.xml.in.h:510 ../rules/sun.xml.in.h:119
+msgid "Third level choosers"
+msgstr "3. seviye seçiciler"
+
+#: ../rules/base.xml.in.h:511
+msgid "Tifinagh"
+msgstr "Tifinagh"
+
+#: ../rules/base.xml.in.h:512
+msgid "Tifinagh Alternative"
+msgstr "Tifinagh DiÄŸer"
+
+#: ../rules/base.xml.in.h:513
+msgid "Tifinagh Alternative Phonetic"
+msgstr "Tifinagh DiÄŸer Fonetik"
+
+#: ../rules/base.xml.in.h:514
+msgid "Tifinagh Extended"
+msgstr "Tifinagh GeliÅŸkin"
+
+#: ../rules/base.xml.in.h:515
+msgid "Tifinagh Extended Phonetic"
+msgstr "Tifinagh GeliÅŸmiÅŸ Fonetik"
+
+#: ../rules/base.xml.in.h:516
+msgid "Tifinagh Phonetic"
+msgstr "Tifinagh Fonetik"
+
+#: ../rules/base.xml.in.h:517
+msgid "Tilde (~) variant"
+msgstr "Tilde (~) tuÅŸlu"
+
+#: ../rules/base.xml.in.h:518
+msgid "Tjk"
+msgstr "Tck"
+
+#: ../rules/base.xml.in.h:519
+msgid "Toshiba Satellite S3000"
+msgstr "Toshiba Satellite S3000"
+
+#: ../rules/base.xml.in.h:520
+msgid "Trust Direct Access Keyboard"
+msgstr "Trust DoÄŸrudan EriÅŸimli Klavye"
+
+#: ../rules/base.xml.in.h:521
+msgid "Trust Wireless Keyboard Classic"
+msgstr "Trust Kablosuz Klasik Klavye"
+
+#: ../rules/base.xml.in.h:522 ../rules/sun.xml.in.h:120
+msgid "Tur"
+msgstr "Trk"
+
+#: ../rules/base.xml.in.h:523
+msgid "Turkey"
+msgstr "Türkiye"
+
+#: ../rules/base.xml.in.h:524
+msgid "Typewriter"
+msgstr "Daktilo"
+
+#: ../rules/base.xml.in.h:525 ../rules/sun.xml.in.h:124
+msgid "U.S. English"
+msgstr "Amerikan ingilizcesi"
+
+#: ../rules/base.xml.in.h:526
+msgid "US keyboard with Bosnian digraphs"
+msgstr "Bosna ikil harfleriyle amerikan klavyesi"
+
+#: ../rules/base.xml.in.h:527
+msgid "US keyboard with Bosnian letters"
+msgstr "Bosna harfleriyle amerikan klavyesi"
+
+#: ../rules/base.xml.in.h:528
+msgid "US keyboard with Croatian digraphs"
+msgstr "Hırvat ikil harfleriyle amerikan klavyesi"
+
+#: ../rules/base.xml.in.h:529
+msgid "US keyboard with Croatian letters"
+msgstr "Hırvat harfleriyle amerikan klavyesi"
+
+#: ../rules/base.xml.in.h:530
+msgid "US keyboard with Lithuanian letters"
+msgstr "Litvanya harfleriyle amerikan klavyesi"
+
+#: ../rules/base.xml.in.h:531
+msgid "US keyboard with Slovenian digraphs"
+msgstr "Sloven ikil harfleriyle amerikan klavyesi"
+
+#: ../rules/base.xml.in.h:532
+msgid "US keyboard with Slovenian letters"
+msgstr "Sloven harfleriyle amerikan klavyesi"
+
+#: ../rules/base.xml.in.h:533 ../rules/sun.xml.in.h:126
+msgid "USA"
+msgstr "ABD"
+
+#: ../rules/base.xml.in.h:534
+msgid "Udmurt"
+msgstr "Udmurt"
+
+#: ../rules/base.xml.in.h:535
+msgid "Ukr"
+msgstr "Ukr"
+
+#: ../rules/base.xml.in.h:536
+msgid "Ukraine"
+msgstr "Ukrayna"
+
+#: ../rules/base.xml.in.h:537
+msgid "UnicodeExpert"
+msgstr "Unicode Uzman"
+
+#: ../rules/base.xml.in.h:538 ../rules/sun.xml.in.h:127
+msgid "United Kingdom"
+msgstr "Ä°ngiltere"
+
+#: ../rules/base.xml.in.h:539
+msgid "Urdu"
+msgstr "Urdu"
+
+#: ../rules/base.xml.in.h:540
+msgid "Use Bosnian digraphs"
+msgstr "Bosna ikil harflerini kullanır"
+
+#: ../rules/base.xml.in.h:541
+msgid "Use Croatian digraphs"
+msgstr "Hırvat ikil harflerini kullanır"
+
+#: ../rules/base.xml.in.h:542
+msgid "Use Slovenian digraphs"
+msgstr "Sloven ikil harflerini kullanır"
+
+#: ../rules/base.xml.in.h:543
+msgid "Use guillemets for quotes"
+msgstr "Tırnakların yerine açılı ayraçlar kullanılır"
+
+#: ../rules/base.xml.in.h:544
+msgid "Use keyboard LED to show alternative layout."
+msgstr "Diğer yerleşimi göstermek için klavye LED'i kullanılır."
+
+#: ../rules/base.xml.in.h:545
+msgid "Use keypad with unicode additions (arrows and math operators)"
+msgstr "Tuştakımı Unicode eklentileri ile kullanılır (ok ve aritmetik tuşları)"
+
+#: ../rules/base.xml.in.h:546
+msgid "Using space key to input non-breakable space character"
+msgstr "nobreakspace'i yazmak için boşluk tuşu kullanımı"
+
+#: ../rules/base.xml.in.h:547
+msgid "Uzb"
+msgstr "Özb"
+
+#: ../rules/base.xml.in.h:548
+msgid "Uzbekistan"
+msgstr "Özbekistan"
+
+#: ../rules/base.xml.in.h:549
+msgid "Vietnam"
+msgstr "Vietnam"
+
+#: ../rules/base.xml.in.h:550
+msgid "Vnm"
+msgstr "Vnm"
+
+#: ../rules/base.xml.in.h:551
+msgid "Wang model 724 azerty"
+msgstr "Wang model 724 azerty"
+
+#: ../rules/base.xml.in.h:552
+msgid "Western"
+msgstr "Batı"
+
+#: ../rules/base.xml.in.h:553
+msgid "Winbook Model XP5"
+msgstr "Winbook Model XP5"
+
+#: ../rules/base.xml.in.h:554
+msgid "Winkeys"
+msgstr "Win tuşları"
+
+#: ../rules/base.xml.in.h:555
+msgid "With &lt;\\|&gt; key"
+msgstr "&lt;\\|&gt; tuÅŸuyla"
+
+#: ../rules/base.xml.in.h:556
+msgid "With EuroSign on 5"
+msgstr "€ sembolü ile 5 tuşu"
+
+#: ../rules/base.xml.in.h:557
+msgid "With guillemets"
+msgstr "Açılı ayraçlarla"
+
+#: ../rules/base.xml.in.h:558
+msgid "Yahoo! Internet Keyboard"
+msgstr "Yahoo! Genel AÄŸ Klavyesi"
+
+#: ../rules/base.xml.in.h:559
+msgid "Yoruba"
+msgstr "Yoruba"
+
+#: ../rules/base.xml.in.h:560
+msgid "Z and ZHE swapped"
+msgstr "Z ile ZHE yer deÄŸiÅŸtirir"
+
+#: ../rules/base.xml.in.h:561
+msgid "Zar"
+msgstr "Zar"
+
+#: ../rules/base.xml.in.h:562
+msgid "azerty"
+msgstr "azerty"
+
+#: ../rules/base.xml.in.h:563
+msgid "azerty/digits"
+msgstr "azerty/rakamlar"
+
+#: ../rules/base.xml.in.h:564
+msgid "digits"
+msgstr "rakamlar"
+
+#: ../rules/base.xml.in.h:565
+msgid "displaced semicolon and quote (obsolete)"
+msgstr "noktalı virgül ve çift tırnak kalkar (atıl)"
+
+#: ../rules/base.xml.in.h:566
+msgid "lyx"
+msgstr "lyx"
+
+#: ../rules/base.xml.in.h:567 ../rules/sun.xml.in.h:132
+msgid "qwerty"
+msgstr "qwerty"
+
+#: ../rules/base.xml.in.h:568
+msgid "qwerty, extended Backslash"
+msgstr "qwerty, galiÅŸmiÅŸ Gerisilme"
+
+#: ../rules/base.xml.in.h:569
+msgid "qwerty/digits"
+msgstr "qwerty/rakamlar"
+
+#: ../rules/base.xml.in.h:570
+msgid "qwertz"
+msgstr "qwertz"
+
+#: ../rules/sun.xml.in.h:1
+msgid "\"Typewriter\""
+msgstr "\"Daktilo\""
+
+#: ../rules/sun.xml.in.h:17
+msgid "Acts as Shift with locking. Shift cancels Caps."
+msgstr "Caps Lock kilitlemeli Shift tuşu gibi çalışır. Shift tuşu ise Caps Lock tuşunu keser."
+
+#: ../rules/sun.xml.in.h:18
+msgid "Acts as Shift with locking. Shift doesn't cancel Caps."
+msgstr "Caps Lock kilitlemeli Shift tuşu gibi çalışır. Shift tuşu Caps Lock'u kesmez"
+
+#: ../rules/sun.xml.in.h:19
+msgid "Alt+Control changes group"
+msgstr "Alt+Ctrl grubu deÄŸiÅŸtirir."
+
+#: ../rules/sun.xml.in.h:20
+msgid "Alt+Shift changes group"
+msgstr "Alt+Shift grubu deÄŸiÅŸtirir."
+
+#: ../rules/sun.xml.in.h:21
+msgid "Basic"
+msgstr "Temel"
+
+#: ../rules/sun.xml.in.h:23
+msgid "Belgian"
+msgstr "Belçikaca"
+
+#: ../rules/sun.xml.in.h:25
+msgid "Both Alt keys together change group"
+msgstr "Alt tuşları birlikte grubu değiştirir"
+
+#: ../rules/sun.xml.in.h:26
+msgid "Both Ctrl keys together change group"
+msgstr "Ctrl tuşları birlikte grubu değiştirir"
+
+#: ../rules/sun.xml.in.h:27
+msgid "Both Shift keys together change group"
+msgstr "Shift tuşları birlikte grubu değiştirir"
+
+#: ../rules/sun.xml.in.h:28
+msgid "Bulgarian"
+msgstr "Bulgarca"
+
+#: ../rules/sun.xml.in.h:30
+msgid "Canadian"
+msgstr "Kanadaca"
+
+#: ../rules/sun.xml.in.h:31
+msgid "Caps Lock is Compose"
+msgstr "CapsLock tuÅŸu karakter birleÅŸimi yapar"
+
+#: ../rules/sun.xml.in.h:32
+msgid "Caps Lock key changes group"
+msgstr "Caps Lock tuÅŸu grubu deÄŸiÅŸtirir"
+
+#: ../rules/sun.xml.in.h:34
+msgid "Caps_Lock LED shows alternative group"
+msgstr "Caps Lock LED'i diğer grubu gösterir"
+
+#: ../rules/sun.xml.in.h:35
+msgid "Control Key Position"
+msgstr "Ctrl tuÅŸunun yeri"
+
+#: ../rules/sun.xml.in.h:36
+msgid "Control key at bottom left"
+msgstr "Sol alttaki Ctrl tuÅŸu"
+
+#: ../rules/sun.xml.in.h:37
+msgid "Control key at left of 'A'"
+msgstr "'A'nın solundaki Ctrl Tuşu"
+
+#: ../rules/sun.xml.in.h:38
+msgid "Control+Shift changes group"
+msgstr "Ctrl+Shift tuşları grubu değiştirir"
+
+#: ../rules/sun.xml.in.h:40
+msgid "Czech"
+msgstr "Çekçe"
+
+#: ../rules/sun.xml.in.h:41
+msgid "Danish"
+msgstr "Danca"
+
+#: ../rules/sun.xml.in.h:45
+msgid "DeuCH"
+msgstr "DeuCH"
+
+#: ../rules/sun.xml.in.h:47
+msgid "Dvo"
+msgstr "Dvo"
+
+#: ../rules/sun.xml.in.h:52
+msgid "Finnish"
+msgstr "Fince"
+
+#: ../rules/sun.xml.in.h:54
+msgid "FraCH"
+msgstr "FraCH"
+
+#: ../rules/sun.xml.in.h:57
+msgid "German"
+msgstr "Almanca"
+
+#: ../rules/sun.xml.in.h:58
+msgid "Group Shift/Lock behavior"
+msgstr "Shift/Lock Grubu davranışı"
+
+#: ../rules/sun.xml.in.h:60
+msgid "Hungarian"
+msgstr "Macarca"
+
+#: ../rules/sun.xml.in.h:64
+msgid "Italian"
+msgstr "Ä°talyanca"
+
+#: ../rules/sun.xml.in.h:65
+msgid "Japanese"
+msgstr "Japonca"
+
+#: ../rules/sun.xml.in.h:67
+msgid "Left Alt key changes group"
+msgstr "Soldaki Alt tuÅŸu grubu deÄŸiÅŸtirir"
+
+#: ../rules/sun.xml.in.h:68
+msgid "Left Alt key switches group while pressed"
+msgstr "Soldaki Alt tuşu basılıyken diğer grup etkin olur"
+
+#: ../rules/sun.xml.in.h:69
+msgid "Left Ctrl key changes group"
+msgstr "Soldaki Ctrl tuÅŸu grubu deÄŸiÅŸtirir"
+
+#: ../rules/sun.xml.in.h:70
+msgid "Left Shift key changes group"
+msgstr "Soldaki Shift tuÅŸu grubu deÄŸiÅŸtirir"
+
+#: ../rules/sun.xml.in.h:71
+msgid "Make CapsLock an additional Control"
+msgstr "CapsLock tuÅŸunu ek bir Ctrl tuÅŸu yapar"
+
+#: ../rules/sun.xml.in.h:76
+msgid "Norwegian"
+msgstr "Norveçce"
+
+#: ../rules/sun.xml.in.h:77
+msgid "Num_Lock LED shows alternative group"
+msgstr "Num_Lock LED'i diğer grubu gösterir"
+
+#: ../rules/sun.xml.in.h:80
+msgid "Polish"
+msgstr "Polonez"
+
+#: ../rules/sun.xml.in.h:81
+msgid "Polish with Polish quotes on key \"1/!\""
+msgstr "Lehçe, \"1/!\" tuşunda Lehçe tırnaklar"
+
+#: ../rules/sun.xml.in.h:82
+msgid "Portuguese"
+msgstr "Portekizce"
+
+#: ../rules/sun.xml.in.h:83
+msgid "Press Left Alt key to choose 3rd level"
+msgstr "3. seviyeyi seçmek için soldaki Alt tuşuna basın"
+
+#: ../rules/sun.xml.in.h:84
+msgid "Press Right Alt key to choose 3rd level"
+msgstr "3. seviyeyi seçmek için sağdaki Alt tuşuna basın"
+
+#: ../rules/sun.xml.in.h:85
+msgid "Press Right Alt-key to choose 3rd level, Shift+Right Alt-key is Multi_Key"
+msgstr "3. seviyeyi seçmek için sağdaki Alt tuşuna basın, Sağdaki Alt tuşuyla birlikte Shift tuşu AltGr gibi davranır"
+
+#: ../rules/sun.xml.in.h:86
+msgid "Press Right Control to choose 3rd level"
+msgstr "3. seviyeyi seçmek için sağdaki Ctrl tuşuna basın"
+
+#: ../rules/sun.xml.in.h:87
+msgid "Press any of Alt keys to choose 3rd level"
+msgstr "3. seviyeyi seçmek için Alt tuşlarından birine basın"
+
+#: ../rules/sun.xml.in.h:89
+msgid "Right Alt key changes group"
+msgstr "SaÄŸdaki Alt tuÅŸu grubu deÄŸiÅŸtirir"
+
+#: ../rules/sun.xml.in.h:91
+msgid "Right Alt switches group while pressed"
+msgstr "Sağdaki Alt tuşu basılıyken diğer grup etkin olur"
+
+#: ../rules/sun.xml.in.h:92
+msgid "Right Control key works as Right Alt"
+msgstr "Sağdaki Ctrl tuşu sağdaki Alt tuşu gibi çalışır"
+
+#: ../rules/sun.xml.in.h:93
+msgid "Right Ctrl key changes group"
+msgstr "SaÄŸdaki Ctrl tuÅŸu grubu deÄŸiÅŸtirir"
+
+#: ../rules/sun.xml.in.h:94
+msgid "Right Shift key changes group"
+msgstr "SaÄŸdaki Shift tuÅŸu grubu deÄŸiÅŸtirir"
+
+#: ../rules/sun.xml.in.h:97
+msgid "Scroll Lock changes group"
+msgstr "Scroll Lock grubu deÄŸiÅŸtirir"
+
+#: ../rules/sun.xml.in.h:98
+msgid "Scroll_Lock LED shows alternative group"
+msgstr "Scroll_Lock LED'i diğer grubu gösterir"
+
+#: ../rules/sun.xml.in.h:99
+msgid "Shift with numpad keys works as in MS Windows"
+msgstr "Sayısal tuştakımı Shift ile MS Windows'daki gibi çalışır"
+
+#: ../rules/sun.xml.in.h:100
+msgid "Shift+CapsLock changes group"
+msgstr "Shift+CapsLock tuşları grubu değiştirir"
+
+#: ../rules/sun.xml.in.h:101
+msgid "Slovak"
+msgstr "Slovakça"
+
+#: ../rules/sun.xml.in.h:102
+msgid "Spanish"
+msgstr "Ä°spanyolca"
+
+#: ../rules/sun.xml.in.h:105
+msgid "Sun Type 4"
+msgstr "Sun 4. tür"
+
+#: ../rules/sun.xml.in.h:106
+msgid "Sun Type 5"
+msgstr "Sun 5. Tür"
+
+#: ../rules/sun.xml.in.h:107
+msgid "Sun Type 5 European"
+msgstr "Sun 5. tür Avrupa"
+
+#: ../rules/sun.xml.in.h:108
+msgid "Sun Type 5 Unix"
+msgstr "Sun 5. tür, Unix"
+
+#: ../rules/sun.xml.in.h:109
+msgid "Sun Type 6"
+msgstr "Sun 6. tür"
+
+#: ../rules/sun.xml.in.h:110
+msgid "Sun Type 6 Unix"
+msgstr "Sun 6. tür, Unix"
+
+#: ../rules/sun.xml.in.h:111
+msgid "Sun Type 6 with Euro key"
+msgstr "Sun 6. Tür, € tuşlu"
+
+#: ../rules/sun.xml.in.h:114
+msgid "Swap Control and Caps Lock"
+msgstr "Ctrl ile Caps Lock yer deÄŸiÅŸtirir"
+
+#: ../rules/sun.xml.in.h:116
+msgid "Swedish"
+msgstr "İsveçce"
+
+#: ../rules/sun.xml.in.h:117
+msgid "Swiss French"
+msgstr "İsviçre Fransızcası"
+
+#: ../rules/sun.xml.in.h:118
+msgid "Swiss German"
+msgstr "İsviçre Almancası"
+
+#: ../rules/sun.xml.in.h:121
+msgid "Turkish"
+msgstr "Türkçe Q Klavye"
+
+#: ../rules/sun.xml.in.h:122
+msgid "Turkish (F)"
+msgstr "Türkçe F klavye"
+
+#: ../rules/sun.xml.in.h:123
+msgid "Turkish Alt-Q Layout"
+msgstr "Türkçe Alt-Q (yazılımcılar ve dizüstü) klavye"
+
+#: ../rules/sun.xml.in.h:125
+msgid "U.S. English w/ ISO9995-3"
+msgstr "Amerikan ingilizcesi (ISO9995-3 ile)"
+
+#: ../rules/sun.xml.in.h:128
+msgid "Use keyboard LED to show alternative group"
+msgstr "Diğer grubu göstermek içim klavye LED'i kullanılır"
+
+#: ../rules/sun.xml.in.h:129
+msgid "Uses internal capitalization. Shift cancels Caps."
+msgstr "CapsLock dahili dönüşümü kullanılır, Shift tuşu Caps Lock tuşunu keser."
+
+#: ../rules/sun.xml.in.h:130
+msgid "Uses internal capitalization. Shift doesn't cancel Caps."
+msgstr "CapsLock dahili dönüşümü kullanır. Shift tuşu Caps Lock'u kesmez."
+
+#: ../rules/sun.xml.in.h:131
+msgid "bksl"
+msgstr "bksl"
+
+#: ../rules/sun.xml.in.h:133
+msgid "type4"
+msgstr "4. tür"
diff --git a/xorg-server/xkeyboard-config/po/vi.po b/xorg-server/xkeyboard-config/po/vi.po
index e69aab919..960517c5c 100644
--- a/xorg-server/xkeyboard-config/po/vi.po
+++ b/xorg-server/xkeyboard-config/po/vi.po
@@ -1,3030 +1,3030 @@
-# Vietnamese translation for X Keyboard Config.
-# Copyright © 2010 Free Software Foundation, Inc.
-# This file is distributed under the same license as the xkeyboard-config package.
-# Phan Vinh Thinh <teppi82@gmail.com>, 2005.
-# Clytie Siddall <clytie@riverland.net.au>, 2007-2010.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: xkeyboard-config 2.0\n"
-"Report-Msgid-Bugs-To: svu@users.sourceforge.net\n"
-"POT-Creation-Date: 2010-09-15 21:57+0100\n"
-"PO-Revision-Date: 2010-09-28 19:37+0930\n"
-"Last-Translator: Clytie Siddall <clytie@riverland.net.au>\n"
-"Language-Team: Vietnamese <vi-VN@googlegroups.com>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-"X-Generator: LocFactoryEditor 1.8\n"
-
-#: ../rules/base.xml.in.h:1
-msgid "&lt;Less/Greater&gt;"
-msgstr "&lt;Nhá»/Lá»›n hÆ¡n&gt;"
-
-#: ../rules/base.xml.in.h:2
-msgid "&lt;Less/Greater&gt; chooses 5th level, locks when pressed together with another 5th-level-chooser"
-msgstr "&lt;Nhá»/Lá»›n hÆ¡n&gt; chá»n cấp năm, khoá khi bấm nhau vá»›i má»™t bá»™ chá»n cấp năm khác"
-
-#: ../rules/base.xml.in.h:3
-msgid "&lt;Less/Greater&gt; chooses 5th level, locks when pressed together with another 5th-level-chooser, one press releases the lock"
-msgstr "&lt;Nhá»/Lá»›n hÆ¡n&gt; chá»n cấp năm, khoá khi bấm nhau vá»›i má»™t bá»™ chá»n cấp năm khác, má»™t cú bấm cÅ©ng buông khoá"
-
-#: ../rules/base.xml.in.h:4
-msgid "(F)"
-msgstr "(F)"
-
-#: ../rules/base.xml.in.h:5
-msgid "(Legacy) Alternative"
-msgstr "(Thừa tự) Tương đương"
-
-#: ../rules/base.xml.in.h:6
-msgid "(Legacy) Alternative, Sun dead keys"
-msgstr "(Thừa tự) Tương đương, phím chết Sun"
-
-#: ../rules/base.xml.in.h:7
-msgid "(Legacy) Alternative, eliminate dead keys"
-msgstr "(Thừa tự) Tương đương, phím chết loại trừ"
-
-#: ../rules/base.xml.in.h:8
-msgid "101/104 key Compatible"
-msgstr "Tương thích với kiểu 101/104 phím"
-
-#: ../rules/base.xml.in.h:9
-msgid "101/qwerty/comma/Dead keys"
-msgstr "101/qwerty/dấu phẩy/Phím chết"
-
-#: ../rules/base.xml.in.h:10
-msgid "101/qwerty/comma/Eliminate dead keys"
-msgstr "101/qwerty/dấu phẩy/Phím chết loại trừ"
-
-#: ../rules/base.xml.in.h:11
-msgid "101/qwerty/dot/Dead keys"
-msgstr "101/qwerty/dấu chấm/Phím chết"
-
-#: ../rules/base.xml.in.h:12
-msgid "101/qwerty/dot/Eliminate dead keys"
-msgstr "101/qwerty/dấu chấm/Phím chết loại trừ"
-
-#: ../rules/base.xml.in.h:13
-msgid "101/qwertz/comma/Dead keys"
-msgstr "101/qwertz/dấu phẩy/Phím chết"
-
-#: ../rules/base.xml.in.h:14
-msgid "101/qwertz/comma/Eliminate dead keys"
-msgstr "101/qwertz/dấu phẩy/Phím chết loại trừ"
-
-#: ../rules/base.xml.in.h:15
-msgid "101/qwertz/dot/Dead keys"
-msgstr "101/qwertz/dấu chấm/Phím chết"
-
-#: ../rules/base.xml.in.h:16
-msgid "101/qwertz/dot/Eliminate dead keys"
-msgstr "101/qwertz/dấu chấm/Phím chết loại trừ"
-
-#: ../rules/base.xml.in.h:17
-msgid "102/qwerty/comma/Dead keys"
-msgstr "102/qwerty/dấu phẩy/Phím chết"
-
-#: ../rules/base.xml.in.h:18
-msgid "102/qwerty/comma/Eliminate dead keys"
-msgstr "102/qwerty/dấu phẩy/Phím chết loại trừ"
-
-#: ../rules/base.xml.in.h:19
-msgid "102/qwerty/dot/Dead keys"
-msgstr "102/qwerty/dấu chấm/Phím chết"
-
-#: ../rules/base.xml.in.h:20
-msgid "102/qwerty/dot/Eliminate dead keys"
-msgstr "102/qwerty/dấu chấm/Phím chết loại trừ"
-
-#: ../rules/base.xml.in.h:21
-msgid "102/qwertz/comma/Dead keys"
-msgstr "102/qwertz/dấu phẩy/Phím chết"
-
-#: ../rules/base.xml.in.h:22
-msgid "102/qwertz/comma/Eliminate dead keys"
-msgstr "102/qwertz/dấu phẩy/Phím chết loại trừ"
-
-#: ../rules/base.xml.in.h:23
-msgid "102/qwertz/dot/Dead keys"
-msgstr "102/qwertz/dấu chấm/Phím chết"
-
-#: ../rules/base.xml.in.h:24
-msgid "102/qwertz/dot/Eliminate dead keys"
-msgstr "102/qwertz/dấu chấm/Phím chết loại trừ"
-
-#: ../rules/base.xml.in.h:25
-msgid "2"
-msgstr "2"
-
-#: ../rules/base.xml.in.h:26
-msgid "4"
-msgstr "4"
-
-#: ../rules/base.xml.in.h:27
-msgid "5"
-msgstr "5"
-
-#: ../rules/base.xml.in.h:28
-msgid "A4Tech KB-21"
-msgstr "A4Tech KB-21"
-
-#: ../rules/base.xml.in.h:29
-msgid "A4Tech KBS-8"
-msgstr "A4Tech KBS-8"
-
-#: ../rules/base.xml.in.h:30
-msgid "A4Tech Wireless Desktop RFKB-23"
-msgstr "Không dây Äể bàn RFKB-23 A4Tech"
-
-#: ../rules/base.xml.in.h:31
-msgid "ATM/phone-style"
-msgstr "Kiểu điện thoại/ATM"
-
-#: ../rules/base.xml.in.h:32
-msgid "Acer AirKey V"
-msgstr "Acer AirKey V"
-
-#: ../rules/base.xml.in.h:33
-msgid "Acer C300"
-msgstr "Acer C300"
-
-#: ../rules/base.xml.in.h:34
-msgid "Acer Ferrari 4000"
-msgstr "Acer Ferrari 4000"
-
-#: ../rules/base.xml.in.h:35
-msgid "Acer Laptop"
-msgstr "Xách tay Acer"
-
-#: ../rules/base.xml.in.h:36
-msgid "Add the standard behavior to Menu key"
-msgstr "Thêm ứng xử tiêu chuẩn vào phím trình đơn."
-
-#: ../rules/base.xml.in.h:37
-msgid "Adding Esperanto circumflexes (supersigno)"
-msgstr "Äang thêm các dấu mÅ© tiếng Ét-pe-ran-tô (supersigno)"
-
-#: ../rules/base.xml.in.h:38
-msgid "Adding EuroSign to certain keys"
-msgstr "Äang thêm ký hiệu đồng Euro vào má»™t số phím nào đó"
-
-#: ../rules/base.xml.in.h:39
-msgid "Advance Scorpius KI"
-msgstr "Nâng cao Scorpius KI"
-
-#: ../rules/base.xml.in.h:40
-msgid "Afg"
-msgstr "Afg"
-
-#: ../rules/base.xml.in.h:41
-msgid "Afghanistan"
-msgstr "A Phú Hãn"
-
-#: ../rules/base.xml.in.h:42
-msgid "Akan"
-msgstr "Akan"
-
-#: ../rules/base.xml.in.h:43
-msgid "Alb"
-msgstr "Alb"
-
-#: ../rules/base.xml.in.h:44
-msgid "Albania"
-msgstr "Al-ba-ni-a"
-
-#: ../rules/base.xml.in.h:45
-msgid "Alt and Meta are on Alt keys"
-msgstr "Alt và Meta nằm trên các phím Alt"
-
-#: ../rules/base.xml.in.h:46
-msgid "Alt is mapped to Right Win, Super to Menu"
-msgstr "Ãnh xạ Alt sang phím Win bên phải và Super sang phím trình Ä‘Æ¡n"
-
-#: ../rules/base.xml.in.h:47
-msgid "Alt+Caps Lock"
-msgstr "Alt+CapsLock"
-
-#: ../rules/base.xml.in.h:48
-msgid "Alt+Ctrl"
-msgstr "Alt+Ctrl"
-
-#: ../rules/base.xml.in.h:49
-msgid "Alt+Shift"
-msgstr "Alt+Shift"
-
-#: ../rules/base.xml.in.h:50
-msgid "Alt+Space"
-msgstr "Alt+Space"
-
-#: ../rules/base.xml.in.h:51
-msgid "Alt-Q"
-msgstr "Alt-Q"
-
-#: ../rules/base.xml.in.h:52
-msgid "Alt/Win key behavior"
-msgstr "Ứng xử phím Alt/Win"
-
-#: ../rules/base.xml.in.h:53
-msgid "Alternative"
-msgstr "TÆ°Æ¡ng Ä‘Æ°Æ¡ng"
-
-#: ../rules/base.xml.in.h:54
-msgid "Alternative Eastern"
-msgstr "Äông tÆ°Æ¡ng Ä‘Æ°Æ¡ng"
-
-#: ../rules/base.xml.in.h:55
-msgid "Alternative Phonetic"
-msgstr "Ngữ âm tương đương"
-
-#: ../rules/base.xml.in.h:56
-msgid "Alternative international"
-msgstr "Quốc tế tương đương"
-
-#: ../rules/base.xml.in.h:57
-msgid "Alternative, Sun dead keys"
-msgstr "Tương đương, phím chết Sun"
-
-#: ../rules/base.xml.in.h:58
-msgid "Alternative, eliminate dead keys"
-msgstr "Tương đương, phím chết loại trừ"
-
-#: ../rules/base.xml.in.h:59
-msgid "Alternative, latin-9 only"
-msgstr "Tương đương, chỉ Latin-9"
-
-# Literal: don't translate/Nghĩa chữ : đừng dịch
-#: ../rules/base.xml.in.h:60
-msgid "And"
-msgstr "And"
-
-#: ../rules/base.xml.in.h:61
-msgid "Andorra"
-msgstr "An-Ä‘oa-ra"
-
-#: ../rules/base.xml.in.h:62
-msgid "Any Alt key"
-msgstr "Bất kỳ phím Alt"
-
-#: ../rules/base.xml.in.h:63
-msgid "Any Win key"
-msgstr "Bất kỳ phím Win"
-
-#: ../rules/base.xml.in.h:64
-msgid "Any Win key (while pressed)"
-msgstr "Bất kỳ phím Win (trong khi bấm)"
-
-#: ../rules/base.xml.in.h:65
-msgid "Apostrophe (') variant"
-msgstr "Phương án hô ngữ (')"
-
-# Name: don't translate/Tên: đừng dịch
-#: ../rules/base.xml.in.h:66
-msgid "Apple"
-msgstr "Apple"
-
-#: ../rules/base.xml.in.h:67
-msgid "Apple Aluminium Keyboard (ANSI)"
-msgstr "Bàn phím nhôm Apple (ANSI)"
-
-#: ../rules/base.xml.in.h:68
-msgid "Apple Aluminium Keyboard (ISO)"
-msgstr "Bàn phím nhôm Apple (ISO)"
-
-#: ../rules/base.xml.in.h:69
-msgid "Apple Aluminium Keyboard (JIS)"
-msgstr "Bàn phím nhôm Apple (JIS)"
-
-#: ../rules/base.xml.in.h:70
-msgid "Apple Aluminium Keyboard: emulate PC keys (Print, Scroll Lock, Pause, Num Lock)"
-msgstr "Bàn phím nhôm Apple: mô phá»ng phím PC: Print (In), Scroll_Lock (Khoá cuá»™n), Pause (Tạm dừng), NumLock (Khoá số)"
-
-#: ../rules/base.xml.in.h:71
-msgid "Apple Laptop"
-msgstr "Máy tính xách tay Apple"
-
-#: ../rules/base.xml.in.h:72
-msgid "Ara"
-msgstr "Ara"
-
-#: ../rules/base.xml.in.h:73
-msgid "Arabic"
-msgstr "Ả Rập"
-
-#: ../rules/base.xml.in.h:74
-msgid "Arm"
-msgstr "Arm"
-
-#: ../rules/base.xml.in.h:75
-msgid "Armenia"
-msgstr "Ãc-mê-ni"
-
-#: ../rules/base.xml.in.h:76
-msgid "Asturian variant with bottom-dot H and bottom-dot L"
-msgstr "Biến thế Ax-tu-ri có H chấm dưới và L chấm dưới"
-
-#: ../rules/base.xml.in.h:77
-msgid "Asus Laptop"
-msgstr "Mấy tính xách tay Asus"
-
-#: ../rules/base.xml.in.h:78
-msgid "At bottom left"
-msgstr "Dưới trái"
-
-#: ../rules/base.xml.in.h:79
-msgid "At left of 'A'"
-msgstr "Bên trái của 'A'"
-
-#: ../rules/base.xml.in.h:80
-msgid "Austria"
-msgstr "Ao"
-
-#: ../rules/base.xml.in.h:81
-msgid "Aut"
-msgstr "Aut"
-
-#: ../rules/base.xml.in.h:82
-msgid "Avatime"
-msgstr "Avatime"
-
-#: ../rules/base.xml.in.h:83
-msgid "Aze"
-msgstr "Aze"
-
-#: ../rules/base.xml.in.h:84
-msgid "Azerbaijan"
-msgstr "A-xơ-bai-gian"
-
-#: ../rules/base.xml.in.h:85
-msgid "Azona RF2300 wireless Internet Keyboard"
-msgstr "Bàn phím không dây Internet Azona RF2300"
-
-#: ../rules/base.xml.in.h:86
-msgid "BTC 5090"
-msgstr "BTC 5090"
-
-#: ../rules/base.xml.in.h:87
-msgid "BTC 5113RF Multimedia"
-msgstr "BTC 5113RF Phim nhạc"
-
-#: ../rules/base.xml.in.h:88
-msgid "BTC 5126T"
-msgstr "BTC 5126T"
-
-#: ../rules/base.xml.in.h:89
-msgid "BTC 6301URF"
-msgstr "BTC 6301URF"
-
-#: ../rules/base.xml.in.h:90
-msgid "BTC 9000"
-msgstr "BTC 9000"
-
-#: ../rules/base.xml.in.h:91
-msgid "BTC 9000A"
-msgstr "BTC 9000A"
-
-#: ../rules/base.xml.in.h:92
-msgid "BTC 9001AH"
-msgstr "BTC 9001AH"
-
-#: ../rules/base.xml.in.h:93
-msgid "BTC 9019U"
-msgstr "BTC 9019U"
-
-#: ../rules/base.xml.in.h:94
-msgid "BTC 9116U Mini Wireless Internet and Gaming"
-msgstr "BTC 9116U Internet và Chạy trò Không dây Nhá»"
-
-#: ../rules/base.xml.in.h:95
-msgid "Backslash"
-msgstr "Gạch chéo ngược"
-
-#: ../rules/base.xml.in.h:96
-msgid "Bangladesh"
-msgstr "Băng-la-đexợ"
-
-#: ../rules/base.xml.in.h:97
-msgid "Bashkirian"
-msgstr "Ba-s-khi-ri"
-
-#: ../rules/base.xml.in.h:98
-msgid "Bel"
-msgstr "Bel"
-
-#: ../rules/base.xml.in.h:99
-msgid "Belarus"
-msgstr "Bê-la-rút"
-
-#: ../rules/base.xml.in.h:100
-msgid "Belgium"
-msgstr "Bỉ"
-
-#: ../rules/base.xml.in.h:101
-msgid "BenQ X-Touch"
-msgstr "BenQ X-Touch"
-
-#: ../rules/base.xml.in.h:102
-msgid "BenQ X-Touch 730"
-msgstr "BenQ X-Touch 730"
-
-#: ../rules/base.xml.in.h:103
-msgid "BenQ X-Touch 800"
-msgstr "BenQ X-Touch 800"
-
-#: ../rules/base.xml.in.h:104
-msgid "Bengali"
-msgstr "Ben-ga-li"
-
-#: ../rules/base.xml.in.h:105
-msgid "Bengali Probhat"
-msgstr "Ben-ga-li Probhat"
-
-#: ../rules/base.xml.in.h:106
-msgid "Bepo, ergonomic, Dvorak way"
-msgstr "Bepo, tối ưu nhân tố, cách Dvorak"
-
-#: ../rules/base.xml.in.h:107
-msgid "Bepo, ergonomic, Dvorak way, latin-9 only"
-msgstr "Bepo, tối ưu nhân tố, cách Dvorak, chỉ Latin-9"
-
-#: ../rules/base.xml.in.h:108
-msgid "Bgd"
-msgstr "Bgd"
-
-#: ../rules/base.xml.in.h:109
-msgid "Bgr"
-msgstr "Bgr"
-
-#: ../rules/base.xml.in.h:110
-msgid "Bhutan"
-msgstr "Bhu-tan"
-
-#: ../rules/base.xml.in.h:111
-msgid "Biblical Hebrew (Tiro)"
-msgstr "Do Thái kinh thánh (Tiro)"
-
-#: ../rules/base.xml.in.h:112
-msgid "Bih"
-msgstr "Bih"
-
-#: ../rules/base.xml.in.h:113
-msgid "Blr"
-msgstr "Blr"
-
-#: ../rules/base.xml.in.h:114
-msgid "Bosnia and Herzegovina"
-msgstr "Bô-xni-a và Héc-xê-gô-vi-na"
-
-#: ../rules/base.xml.in.h:115
-msgid "Both Alt keys together"
-msgstr "Cả hai phím Alt với nhau"
-
-#: ../rules/base.xml.in.h:116
-msgid "Both Ctrl keys together"
-msgstr "Cả hai phím Ctrl với nhau"
-
-#: ../rules/base.xml.in.h:117
-msgid "Both Shift keys together"
-msgstr "Cả hai phím Shift với nhau"
-
-#: ../rules/base.xml.in.h:118
-msgid "Both Shift-Keys together toggle Caps Lock"
-msgstr "Cả hai phím Shift với nhau thì bật/tắt CapsLock (khoá chữ hoa)"
-
-#: ../rules/base.xml.in.h:119
-msgid "Botswana"
-msgstr "Bốt-xoă-na"
-
-#: ../rules/base.xml.in.h:120
-msgid "Bra"
-msgstr "Bra"
-
-#: ../rules/base.xml.in.h:121
-msgid "Braille"
-msgstr "Chữ nổi"
-
-#: ../rules/base.xml.in.h:122
-msgid "Brazil"
-msgstr "Bra-xin"
-
-#: ../rules/base.xml.in.h:123
-msgid "Breton"
-msgstr "Bợ-re-ton"
-
-#: ../rules/base.xml.in.h:124
-msgid "Brl"
-msgstr "Brl"
-
-#: ../rules/base.xml.in.h:125
-msgid "Brother Internet Keyboard"
-msgstr "Bàn phím Internet Brother"
-
-#: ../rules/base.xml.in.h:126
-msgid "Btn"
-msgstr "Btn"
-
-#: ../rules/base.xml.in.h:127
-msgid "Buckwalter"
-msgstr "Buckwalter"
-
-#: ../rules/base.xml.in.h:128
-msgid "Bulgaria"
-msgstr "Bun-ga-ri"
-
-#: ../rules/base.xml.in.h:129
-msgid "Bwa"
-msgstr "Bwa"
-
-#: ../rules/base.xml.in.h:130
-msgid "COD"
-msgstr "COD"
-
-#: ../rules/base.xml.in.h:131
-msgid "CRULP"
-msgstr "CRULP"
-
-#: ../rules/base.xml.in.h:132
-msgid "Cambodia"
-msgstr "Căm Bốt"
-
-#: ../rules/base.xml.in.h:133
-msgid "Can"
-msgstr "Can"
-
-#: ../rules/base.xml.in.h:134
-msgid "Canada"
-msgstr "Ca-na-da"
-
-#: ../rules/base.xml.in.h:135
-msgid "Caps Lock"
-msgstr "CapsLock"
-
-#: ../rules/base.xml.in.h:136
-msgid "Caps Lock (to first layout), Shift+Caps Lock (to last layout)"
-msgstr "CapsLock (tới bố trí đầu tiên), Shift+CapsLock (tới bố trí cuối cùng)"
-
-#: ../rules/base.xml.in.h:137
-msgid "Caps Lock (while pressed), Alt+Caps Lock does the original capslock action"
-msgstr "CapsLock (trong khi bấm), Alt+CapsLock thì làm việc gốc khoá chữ hoa"
-
-#: ../rules/base.xml.in.h:138
-msgid "Caps Lock acts as Shift with locking. Shift \"pauses\" Caps Lock"
-msgstr "CapsLock hoạt động như Shift mà cũng khoá. Shift « tạm dừng » CapsLock."
-
-#: ../rules/base.xml.in.h:139
-msgid "Caps Lock acts as Shift with locking. Shift doesn't affect Caps Lock"
-msgstr "CapsLock hoạt động như Shift mà cũng khoá. Shift không có tác động CapsLock."
-
-#: ../rules/base.xml.in.h:140
-msgid "Caps Lock is disabled"
-msgstr "CapsLock bị tắt"
-
-#: ../rules/base.xml.in.h:141
-msgid "Caps Lock key behavior"
-msgstr "Äặc Ä‘iểm của phím CapsLock"
-
-#: ../rules/base.xml.in.h:142
-msgid "Caps Lock toggles Shift so all keys are affected"
-msgstr "CapsLock bật tắt Shift thì má»i phím Ä‘á»u bị ảnh hưởng"
-
-#: ../rules/base.xml.in.h:143
-msgid "Caps Lock toggles normal capitalization of alphabetic characters"
-msgstr "CapsLock bật tắt viết hoa thông thÆ°á»ng của các ký tá»± chữ cái"
-
-#: ../rules/base.xml.in.h:144
-msgid "Caps Lock uses internal capitalization. Shift \"pauses\" Caps Lock"
-msgstr "CapsLock sử dụng chức năng viết hoa nội bộ. Shift « tạm dừng » CapsLock."
-
-#: ../rules/base.xml.in.h:145
-msgid "Caps Lock uses internal capitalization. Shift doesn't affect Caps Lock"
-msgstr "CapsLock sử dụng chức năng viết hoa nội bộ. Shift không có tác động CapsLock."
-
-#: ../rules/base.xml.in.h:146
-msgid "Catalan variant with middle-dot L"
-msgstr "Biến thể Ca-ta-lan có chữ L chấm giữa"
-
-# Tên bố trí bàn phím ?
-#: ../rules/base.xml.in.h:147
-msgid "Cedilla"
-msgstr "Cedilla"
-
-#: ../rules/base.xml.in.h:148
-msgid "Che"
-msgstr "Che"
-
-#: ../rules/base.xml.in.h:149
-msgid "Cherokee"
-msgstr "Che-rô-khi"
-
-#: ../rules/base.xml.in.h:150
-msgid "Cherry B.UNLIMITED"
-msgstr "Cherry B.VÔ_HẠN"
-
-#: ../rules/base.xml.in.h:151
-msgid "Cherry Blue Line CyBo@rd"
-msgstr "Cherry Blue Line CyBo@rd"
-
-#: ../rules/base.xml.in.h:152
-msgid "Cherry Blue Line CyBo@rd (alternate option)"
-msgstr "Cherry Blue Line CyBo@rd (luân phiên tùy chá»n)"
-
-#: ../rules/base.xml.in.h:153
-msgid "Cherry CyBo@rd USB-Hub"
-msgstr "Cherry CyBo@rd Cái Nối USB"
-
-#: ../rules/base.xml.in.h:154
-msgid "Cherry CyMotion Expert"
-msgstr "Cherry CyMotion Expert"
-
-#: ../rules/base.xml.in.h:155
-msgid "Cherry CyMotion Master Linux"
-msgstr "Cherry CyMotion Master Linux"
-
-#: ../rules/base.xml.in.h:156
-msgid "Cherry CyMotion Master XPress"
-msgstr "Cherry CyMotion Master XPress"
-
-#: ../rules/base.xml.in.h:157
-msgid "Chicony Internet Keyboard"
-msgstr "Bàn phím Internet Chicony"
-
-#: ../rules/base.xml.in.h:158
-msgid "Chicony KB-9885"
-msgstr "Chicony KB-9885"
-
-#: ../rules/base.xml.in.h:159
-msgid "Chicony KU-0108"
-msgstr "Chicony KU-0108"
-
-#: ../rules/base.xml.in.h:160
-msgid "Chicony KU-0420"
-msgstr "Chicony KU-0420"
-
-#: ../rules/base.xml.in.h:161
-msgid "China"
-msgstr "Trung Quốc"
-
-#: ../rules/base.xml.in.h:162
-msgid "Chn"
-msgstr "Chn"
-
-#: ../rules/base.xml.in.h:163
-msgid "Chuvash"
-msgstr "Chu-vasợ"
-
-#: ../rules/base.xml.in.h:164
-msgid "Chuvash Latin"
-msgstr "Chu-vasợ La-tinh"
-
-#: ../rules/base.xml.in.h:165
-msgid "Classic"
-msgstr "Kinh điển"
-
-#: ../rules/base.xml.in.h:166
-msgid "Classic Dvorak"
-msgstr "Dvorak kinh điển"
-
-#: ../rules/base.xml.in.h:167
-msgid "Classic, eliminate dead keys"
-msgstr "Kinh điển, loại trừ phím chết"
-
-#: ../rules/base.xml.in.h:168
-msgid "Classmate PC"
-msgstr "Classmate PC"
-
-#: ../rules/base.xml.in.h:169
-msgid "CloGaelach"
-msgstr "CloGaelach"
-
-#: ../rules/base.xml.in.h:170
-msgid "Colemak"
-msgstr "Colemak"
-
-#: ../rules/base.xml.in.h:171
-msgid "Compaq Easy Access Keyboard"
-msgstr "Bàn phím Truy cập Dễ dàng của Compaq"
-
-#: ../rules/base.xml.in.h:172
-msgid "Compaq Internet Keyboard (13 keys)"
-msgstr "Bàn phím Internet Compaq (13 phím)"
-
-#: ../rules/base.xml.in.h:173
-msgid "Compaq Internet Keyboard (18 keys)"
-msgstr "Bàn phím Internet Compaq (18 phím)"
-
-#: ../rules/base.xml.in.h:174
-msgid "Compaq Internet Keyboard (7 keys)"
-msgstr "Bàn phím Internet Compaq (7 phím)"
-
-#: ../rules/base.xml.in.h:175
-msgid "Compaq iPaq Keyboard"
-msgstr "Bàn phím iPaq Compaq"
-
-#: ../rules/base.xml.in.h:176
-msgid "Compose key position"
-msgstr "Vị trí phím Soạn thảo"
-
-#: ../rules/base.xml.in.h:177
-msgid "Congo, Democratic Republic of the"
-msgstr "Cộng Hoà Dân Chủ Công-gô"
-
-#: ../rules/base.xml.in.h:178
-msgid "Control + Alt + Backspace"
-msgstr "Control + Alt + Backspace"
-
-#: ../rules/base.xml.in.h:179
-msgid "Control is mapped to Alt keys, Alt is mapped to Win keys"
-msgstr "Control ánh xạ tới các phím Alt, Alt ánh xạ tới các phím Win"
-
-#: ../rules/base.xml.in.h:180
-msgid "Control is mapped to Win keys (and the usual Ctrl keys)"
-msgstr "Control ánh xạ tá»›i các phím Win (và các phím Ctrl thÆ°á»ng dùng)"
-
-#: ../rules/base.xml.in.h:181
-msgid "Creative Desktop Wireless 7000"
-msgstr "Creative Desktop Wireless 7000"
-
-#: ../rules/base.xml.in.h:182
-msgid "Crimean Tatar (Dobruca-1 Q)"
-msgstr "Ta-tă Cợ-ri-mia (Dobruca-1 Q)"
-
-#: ../rules/base.xml.in.h:183
-msgid "Crimean Tatar (Dobruca-2 Q)"
-msgstr "Ta-tă Cợ-ri-mia (Dobruca-2 Q)"
-
-#: ../rules/base.xml.in.h:184
-msgid "Crimean Tatar (Turkish Alt-Q)"
-msgstr "Ta-tă Cợ-ri-mia (Thổ Nhĩ Kỳ Alt-Q)"
-
-#: ../rules/base.xml.in.h:185
-msgid "Crimean Tatar (Turkish F)"
-msgstr "Ta-tă Cợ-ri-mia (Thổ Nhĩ Kỳ F)"
-
-#: ../rules/base.xml.in.h:186
-msgid "Crimean Tatar (Turkish Q)"
-msgstr "Ta-tă Cợ-ri-mia (Thổ Nhĩ Kỳ Q)"
-
-#: ../rules/base.xml.in.h:187
-msgid "Croatia"
-msgstr "Cợ-rô-a-ti-a"
-
-#: ../rules/base.xml.in.h:188
-msgid "Ctrl key position"
-msgstr "Vị trí phím Ctrl"
-
-#: ../rules/base.xml.in.h:189
-msgid "Ctrl+Shift"
-msgstr "Ctrl+Shift"
-
-#: ../rules/base.xml.in.h:190
-msgid "Cyrillic"
-msgstr "Ki-rin"
-
-#: ../rules/base.xml.in.h:191
-msgid "Cyrillic with guillemets"
-msgstr "Ki-rin với « chim uria »"
-
-#: ../rules/base.xml.in.h:192
-msgid "Cyrillic, Z and ZHE swapped"
-msgstr "Ki-rin, đổi chỗ Z và ZHE"
-
-#: ../rules/base.xml.in.h:193
-msgid "Cze"
-msgstr "Cze"
-
-#: ../rules/base.xml.in.h:194
-msgid "Czechia"
-msgstr "Séc"
-
-#: ../rules/base.xml.in.h:195
-msgid "DOS"
-msgstr "DOS"
-
-#: ../rules/base.xml.in.h:196
-msgid "DTK2000"
-msgstr "DTK2000"
-
-#: ../rules/base.xml.in.h:197
-msgid "Dead acute"
-msgstr "Chết sắc"
-
-#: ../rules/base.xml.in.h:198
-msgid "Dead grave acute"
-msgstr "Chết huyá»n sắc"
-
-#: ../rules/base.xml.in.h:199
-msgid "Default numeric keypad keys"
-msgstr "Các phím vùng số mặc định"
-
-#: ../rules/base.xml.in.h:200
-msgid "Dell"
-msgstr "Dell"
-
-#: ../rules/base.xml.in.h:201
-msgid "Dell 101-key PC"
-msgstr "Dell PC 101 phím"
-
-#: ../rules/base.xml.in.h:202
-msgid "Dell Laptop/notebook Inspiron 6xxx/8xxx"
-msgstr "Xách tay Dell Inspiron 6xxx/8xxx"
-
-#: ../rules/base.xml.in.h:203
-msgid "Dell Laptop/notebook Precision M series"
-msgstr "Xách tay Dell dãy Precision M"
-
-#: ../rules/base.xml.in.h:204
-msgid "Dell Latitude series laptop"
-msgstr "Xách tay Dell dãy Latitude"
-
-#: ../rules/base.xml.in.h:205
-msgid "Dell Precision M65"
-msgstr "Dell Precision M65"
-
-#: ../rules/base.xml.in.h:206
-msgid "Dell SK-8125"
-msgstr "Dell SK-8125"
-
-#: ../rules/base.xml.in.h:207
-msgid "Dell SK-8135"
-msgstr "Dell SK-8135"
-
-#: ../rules/base.xml.in.h:208
-msgid "Dell USB Multimedia Keyboard"
-msgstr "Bàn phím đa phương tiện USB Dell"
-
-#: ../rules/base.xml.in.h:209
-msgid "Denmark"
-msgstr "Äan Mạch"
-
-#: ../rules/base.xml.in.h:210
-msgid "Deu"
-msgstr "Deu"
-
-#: ../rules/base.xml.in.h:211
-msgid "Dexxa Wireless Desktop Keyboard"
-msgstr "Bàn phím Không dây Dexxa cho Desktop"
-
-#: ../rules/base.xml.in.h:212
-msgid "Diamond 9801 / 9802 series"
-msgstr "Sê ri Diamond 9801 / 9802"
-
-#: ../rules/base.xml.in.h:213
-msgid "Dnk"
-msgstr "Dnk"
-
-#: ../rules/base.xml.in.h:214
-msgid "Dvorak"
-msgstr "Dvorak"
-
-#: ../rules/base.xml.in.h:215
-msgid "Dvorak (UK Punctuation)"
-msgstr "Dvorak (dấu chấm câu Quốc Anh)"
-
-#: ../rules/base.xml.in.h:216
-msgid "Dvorak alternative international (no dead keys)"
-msgstr "Dvorak quốc tế tương đương (không có phím chết)"
-
-#: ../rules/base.xml.in.h:217
-msgid "Dvorak international (with dead keys)"
-msgstr "Dvorak quốc tế (với phím chết)"
-
-#: ../rules/base.xml.in.h:218
-msgid "Dvorak, Polish quotes on key 1"
-msgstr "Dvorak, dấu ngoặc tiếng Ba Lan trên phím 1"
-
-#: ../rules/base.xml.in.h:219
-msgid "Dvorak, Polish quotes on quotemark key"
-msgstr "Dvorak, dấu ngoặc Polish trên phím đánh dấu ngoặc"
-
-#: ../rules/base.xml.in.h:220
-msgid "E"
-msgstr "E"
-
-#: ../rules/base.xml.in.h:221
-msgid "Eastern"
-msgstr "Vùng Äông"
-
-#: ../rules/base.xml.in.h:222
-msgid "Eliminate dead keys"
-msgstr "Phím chết loại trừ"
-
-#: ../rules/base.xml.in.h:223
-msgid "Enable extra typographic characters"
-msgstr "Bật thêm ký tự thuật in máy"
-
-#: ../rules/base.xml.in.h:224
-msgid "English"
-msgstr "Anh"
-
-#: ../rules/base.xml.in.h:225
-msgid "English (USA International)"
-msgstr "Anh (Mỹ quốc tế)"
-
-#: ../rules/base.xml.in.h:226
-msgid "English (USA Macintosh)"
-msgstr "Anh (Mỹ Macintosh)"
-
-#: ../rules/base.xml.in.h:227
-msgid "Ennyah DKB-1008"
-msgstr "Ennyah DKB-1008"
-
-#: ../rules/base.xml.in.h:228
-msgid "Enter on keypad"
-msgstr "Enter trên vùng phím"
-
-#: ../rules/base.xml.in.h:229
-msgid "Epo"
-msgstr "Epo"
-
-#: ../rules/base.xml.in.h:230
-msgid "Ergonomic"
-msgstr "Tối ưu nhân tố"
-
-#: ../rules/base.xml.in.h:231
-msgid "Esp"
-msgstr "Esp"
-
-#: ../rules/base.xml.in.h:232
-msgid "Esperanto"
-msgstr "Ét-pe-ran-tô"
-
-#: ../rules/base.xml.in.h:233
-msgid "Est"
-msgstr "Est"
-
-#: ../rules/base.xml.in.h:234
-msgid "Estonia"
-msgstr "Ex-tô-ni-a"
-
-#: ../rules/base.xml.in.h:235
-msgid "Eth"
-msgstr "Eth"
-
-#: ../rules/base.xml.in.h:236
-msgid "Ethiopia"
-msgstr "Ê-ti-ô-pi"
-
-#: ../rules/base.xml.in.h:237
-msgid "Everex STEPnote"
-msgstr "Everex STEPnote"
-
-#: ../rules/base.xml.in.h:238
-msgid "Ewe"
-msgstr "Ewe"
-
-#: ../rules/base.xml.in.h:239
-msgid "Extended"
-msgstr "Mở rộng"
-
-#: ../rules/base.xml.in.h:240
-msgid "Extended - Winkeys"
-msgstr "Mở rộng — Winkeys"
-
-#: ../rules/base.xml.in.h:241
-msgid "Extended Backslash"
-msgstr "Gạch chéo ngược Mở rộng"
-
-#: ../rules/base.xml.in.h:242
-msgid "F-letter (F) variant"
-msgstr "Phương án chữ cái F (F)"
-
-#: ../rules/base.xml.in.h:243
-msgid "FL90"
-msgstr "FL90"
-
-#: ../rules/base.xml.in.h:244
-msgid "Faroe Islands"
-msgstr "Quần Äảo Pha-rô"
-
-#: ../rules/base.xml.in.h:245
-msgid "Fin"
-msgstr "Fin"
-
-#: ../rules/base.xml.in.h:246
-msgid "Finland"
-msgstr "Phần Lan"
-
-#. This assumes the KP_ abstract symbols are actually useful for some apps
-#. The description needs to be rewritten
-#: ../rules/base.xml.in.h:249
-msgid "Four-level key with abstract separators"
-msgstr "Phím bốn bậc có bộ phân cách ảo"
-
-#: ../rules/base.xml.in.h:250
-msgid "Four-level key with comma"
-msgstr "Phím bốn bậc có dấu phẩy"
-
-#: ../rules/base.xml.in.h:251
-msgid "Four-level key with dot"
-msgstr "Phím bốn bậc có chấm"
-
-#: ../rules/base.xml.in.h:252
-msgid "Four-level key with dot, latin-9 restriction"
-msgstr "Phím bốn bậc có chấm, sự hạn chế latin-9"
-
-#: ../rules/base.xml.in.h:253
-msgid "Four-level key with momayyez"
-msgstr "Phím bốn bậc có momayyez"
-
-#: ../rules/base.xml.in.h:254
-msgid "Fra"
-msgstr "Fra"
-
-#: ../rules/base.xml.in.h:255
-msgid "France"
-msgstr "Pháp"
-
-#: ../rules/base.xml.in.h:256
-msgid "Français (France Alternative)"
-msgstr "Pháp (Pháp tương đương)"
-
-#: ../rules/base.xml.in.h:257
-msgid "French"
-msgstr "Pháp"
-
-#: ../rules/base.xml.in.h:258
-msgid "French (Macintosh)"
-msgstr "Pháp (Macintosh)"
-
-#: ../rules/base.xml.in.h:259
-msgid "French (legacy)"
-msgstr "Pháp (di sản)"
-
-#: ../rules/base.xml.in.h:260
-msgid "French Dvorak"
-msgstr "Pháp Dvorak"
-
-#: ../rules/base.xml.in.h:261
-msgid "French, Sun dead keys"
-msgstr "Pháp, phím chết Sun"
-
-#: ../rules/base.xml.in.h:262
-msgid "French, eliminate dead keys"
-msgstr "Pháp, phím chết loại trừ"
-
-#: ../rules/base.xml.in.h:263
-msgid "Fro"
-msgstr "Fro"
-
-#: ../rules/base.xml.in.h:264
-msgid "Fujitsu-Siemens Computers AMILO laptop"
-msgstr "Máy tính xách tay AMILO Fujitsu-Siemens"
-
-#: ../rules/base.xml.in.h:265
-msgid "Fula"
-msgstr "Fula"
-
-#: ../rules/base.xml.in.h:266
-msgid "GBr"
-msgstr "GBr"
-
-#: ../rules/base.xml.in.h:267
-msgid "GILLBT"
-msgstr "GILLBT"
-
-#: ../rules/base.xml.in.h:268
-msgid "Ga"
-msgstr "Ga"
-
-#: ../rules/base.xml.in.h:269
-msgid "Generic 101-key PC"
-msgstr "PC chung 101 phím"
-
-#: ../rules/base.xml.in.h:270
-msgid "Generic 102-key (Intl) PC"
-msgstr "PC chung 102 phím (Intl)"
-
-#: ../rules/base.xml.in.h:271
-msgid "Generic 104-key PC"
-msgstr "PC chung 104 phím"
-
-#: ../rules/base.xml.in.h:272
-msgid "Generic 105-key (Intl) PC"
-msgstr "PC chung 105 phím (Intl)"
-
-# Name: don't translate/Tên: đừng dịch
-#: ../rules/base.xml.in.h:273
-msgid "Genius Comfy KB-12e"
-msgstr "Genius Comfy KB-12e"
-
-#: ../rules/base.xml.in.h:274
-msgid "Genius Comfy KB-16M / Genius MM Keyboard KWD-910"
-msgstr "Genius Tiện lợi KB-16M / Bàn phím Genius MM KWD-910"
-
-#: ../rules/base.xml.in.h:275
-msgid "Genius Comfy KB-21e-Scroll"
-msgstr "Genius Comfy KB-21e-Scroll"
-
-# Name: don't translate/Tên: đừng dịch
-#: ../rules/base.xml.in.h:276
-msgid "Genius KB-19e NB"
-msgstr "Genius KB-19e NB"
-
-# Name: don't translate/Tên: đừng dịch
-#: ../rules/base.xml.in.h:277
-msgid "Genius KKB-2050HS"
-msgstr "Genius KKB-2050HS"
-
-#: ../rules/base.xml.in.h:278
-msgid "Geo"
-msgstr "Geo"
-
-#: ../rules/base.xml.in.h:279
-msgid "Georgia"
-msgstr "Gi-oa-gi-a"
-
-#: ../rules/base.xml.in.h:280
-msgid "Georgian"
-msgstr "Gi-oa-gi-a"
-
-#: ../rules/base.xml.in.h:281
-msgid "Georgian AZERTY Tskapo"
-msgstr "Gi-oa-gi-a AZERTY Tskapo"
-
-#: ../rules/base.xml.in.h:282
-msgid "German (Macintosh)"
-msgstr "Äức (Macintosh)"
-
-#: ../rules/base.xml.in.h:283
-msgid "German, Sun dead keys"
-msgstr "Äức, phím chết Sun"
-
-#: ../rules/base.xml.in.h:284
-msgid "German, eliminate dead keys"
-msgstr "Äức, phím chết loại trừ"
-
-#: ../rules/base.xml.in.h:285
-msgid "Germany"
-msgstr "Äức"
-
-#: ../rules/base.xml.in.h:286
-msgid "Gha"
-msgstr "Gha"
-
-#: ../rules/base.xml.in.h:287
-msgid "Ghana"
-msgstr "Gha-na"
-
-#: ../rules/base.xml.in.h:288
-msgid "Gin"
-msgstr "Gin"
-
-#: ../rules/base.xml.in.h:289
-msgid "Grc"
-msgstr "Grc"
-
-#: ../rules/base.xml.in.h:290
-msgid "Greece"
-msgstr "Hy Lạp"
-
-#: ../rules/base.xml.in.h:291
-msgid "Guinea"
-msgstr "Ghi-nê"
-
-#: ../rules/base.xml.in.h:292
-msgid "Gujarati"
-msgstr "Gu-gia-ra-ti"
-
-#: ../rules/base.xml.in.h:293
-msgid "Gurmukhi"
-msgstr "Gổ-mu-khi"
-
-#: ../rules/base.xml.in.h:294
-msgid "Gurmukhi Jhelum"
-msgstr "Gổ-mu-khi Jhelum"
-
-#: ../rules/base.xml.in.h:295
-msgid "Gyration"
-msgstr "Sự chuyển hồi"
-
-#: ../rules/base.xml.in.h:296
-msgid "Happy Hacking Keyboard"
-msgstr "Bàn phím Happy Hacking"
-
-#: ../rules/base.xml.in.h:297
-msgid "Happy Hacking Keyboard for Mac"
-msgstr "Bàn phím Happy Hacking cho Mac"
-
-#: ../rules/base.xml.in.h:298
-msgid "Hausa"
-msgstr "Hau-xa"
-
-#: ../rules/base.xml.in.h:299
-msgid "Hewlett-Packard Internet Keyboard"
-msgstr "Bàn phím Internet Hewlett-Packard"
-
-#: ../rules/base.xml.in.h:300
-msgid "Hewlett-Packard Mini 110 Notebook"
-msgstr "Hewlett-Packard Mini 110 Notebook"
-
-#: ../rules/base.xml.in.h:301
-msgid "Hewlett-Packard Omnibook 500 FA"
-msgstr "Hewlett-Packard Omnibook 500 FA"
-
-#: ../rules/base.xml.in.h:302
-msgid "Hewlett-Packard Omnibook 5xx"
-msgstr "Hewlett-Packard Omnibook 5xx"
-
-#: ../rules/base.xml.in.h:303
-msgid "Hewlett-Packard Omnibook 6000/6100"
-msgstr "Hewlett-Packard Omnibook 6000/6100"
-
-#: ../rules/base.xml.in.h:304
-msgid "Hewlett-Packard Omnibook XE3 GC"
-msgstr "Hewlett-Packard Omnibook XE3 GC"
-
-#: ../rules/base.xml.in.h:305
-msgid "Hewlett-Packard Omnibook XE3 GF"
-msgstr "Hewlett-Packard Omnibook XE3 GF"
-
-#: ../rules/base.xml.in.h:306
-msgid "Hewlett-Packard Omnibook XT1000"
-msgstr "Hewlett-Packard Omnibook XT1000"
-
-#: ../rules/base.xml.in.h:307
-msgid "Hewlett-Packard Pavilion ZT11xx"
-msgstr "Hewlett-Packard Pavilion ZT11xx"
-
-#: ../rules/base.xml.in.h:308
-msgid "Hewlett-Packard Pavilion dv5"
-msgstr "Hewlett-Packard Pavilion dv5"
-
-#: ../rules/base.xml.in.h:309
-msgid "Hewlett-Packard SK-250x Multimedia Keyboard"
-msgstr "Bàn phím phim nhạc Hewlett-Packard SK-250x"
-
-#: ../rules/base.xml.in.h:310
-msgid "Hewlett-Packard nx9020"
-msgstr "Hewlett-Packard nx9020"
-
-#: ../rules/base.xml.in.h:311
-msgid "Hexadecimal"
-msgstr "Thập lục"
-
-#: ../rules/base.xml.in.h:312
-msgid "Hindi Bolnagri"
-msgstr "Hin-Ä‘i Bolnagri"
-
-#: ../rules/base.xml.in.h:313
-msgid "Hindi Wx"
-msgstr "Hin-Ä‘i Wx"
-
-#: ../rules/base.xml.in.h:314
-msgid "Homophonic"
-msgstr "Cùng một chủ điệu"
-
-#: ../rules/base.xml.in.h:315
-msgid "Honeywell Euroboard"
-msgstr "Honeywell Euroboard"
-
-#: ../rules/base.xml.in.h:316
-msgid "Hrv"
-msgstr "Hrv"
-
-#: ../rules/base.xml.in.h:317
-msgid "Hun"
-msgstr "Hun"
-
-#: ../rules/base.xml.in.h:318
-msgid "Hungary"
-msgstr "Hun-ga-ri"
-
-#: ../rules/base.xml.in.h:319
-msgid "Hyper is mapped to Win-keys"
-msgstr "Hyper ánh xạ tới các phím Win"
-
-#: ../rules/base.xml.in.h:320
-msgid "IBM (LST 1205-92)"
-msgstr "IBM (LST 1205-92)"
-
-#: ../rules/base.xml.in.h:321
-msgid "IBM Rapid Access"
-msgstr "Truy cập nhanh IBM"
-
-#: ../rules/base.xml.in.h:322
-msgid "IBM Rapid Access II"
-msgstr "Truy cập nhanh IBM II"
-
-#: ../rules/base.xml.in.h:323
-msgid "IBM Space Saver"
-msgstr "IBM Space Saver"
-
-#: ../rules/base.xml.in.h:324
-msgid "IBM ThinkPad 560Z/600/600E/A22E"
-msgstr "IBM ThinkPad 560Z/600/600E/A22E"
-
-#: ../rules/base.xml.in.h:325
-msgid "IBM ThinkPad R60/T60/R61/T61"
-msgstr "IBM ThinkPad R60/T60/R61/T61"
-
-#: ../rules/base.xml.in.h:326
-msgid "IBM ThinkPad Z60m/Z60t/Z61m/Z61t"
-msgstr "IBM ThinkPad Z60m/Z60t/Z61m/Z61t"
-
-#: ../rules/base.xml.in.h:327
-msgid "ISO Alternate"
-msgstr "ISO Xen kẽ"
-
-#: ../rules/base.xml.in.h:328
-msgid "Iceland"
-msgstr "Băng Äảo"
-
-#: ../rules/base.xml.in.h:329
-msgid "Igbo"
-msgstr "Ig-bô"
-
-#: ../rules/base.xml.in.h:330
-msgid "Include dead tilde"
-msgstr "Bao gồm dấu sóng chết"
-
-#: ../rules/base.xml.in.h:331
-msgid "Ind"
-msgstr "Ind"
-
-#: ../rules/base.xml.in.h:332
-msgid "India"
-msgstr "Ấn Äá»™"
-
-#: ../rules/base.xml.in.h:333
-msgid "International (AltGr dead keys)"
-msgstr "Quốc tế (với phím chết AltGr)"
-
-#: ../rules/base.xml.in.h:334
-msgid "International (with dead keys)"
-msgstr "Quốc tế (với phím chết)"
-
-#: ../rules/base.xml.in.h:335
-msgid "Inuktitut"
-msgstr "I-nukh-ti-tu-th"
-
-#: ../rules/base.xml.in.h:336 ../rules/base.extras.xml.in.h:8
-msgid "Iran"
-msgstr "I-rắn"
-
-#: ../rules/base.xml.in.h:337
-msgid "Iraq"
-msgstr "I-rắc"
-
-#: ../rules/base.xml.in.h:338
-msgid "Ireland"
-msgstr "Ãi-nhÄ©-lan"
-
-#: ../rules/base.xml.in.h:339
-msgid "Irl"
-msgstr "Irl"
-
-#: ../rules/base.xml.in.h:340
-msgid "Irn"
-msgstr "Irn"
-
-#: ../rules/base.xml.in.h:341
-msgid "Irq"
-msgstr "Irq"
-
-#: ../rules/base.xml.in.h:342
-msgid "Isl"
-msgstr "Isl"
-
-#: ../rules/base.xml.in.h:343
-msgid "Isr"
-msgstr "Isr"
-
-#: ../rules/base.xml.in.h:344
-msgid "Israel"
-msgstr "Do Thái"
-
-#: ../rules/base.xml.in.h:345
-msgid "Ita"
-msgstr "Ita"
-
-#: ../rules/base.xml.in.h:346
-msgid "Italy"
-msgstr "Ã"
-
-#: ../rules/base.xml.in.h:347
-msgid "Japan"
-msgstr "Nhật Bản"
-
-#: ../rules/base.xml.in.h:348
-msgid "Japan (PC-98xx Series)"
-msgstr "Nhật (dãy PC-98xx)"
-
-#: ../rules/base.xml.in.h:349
-msgid "Japanese keyboard options"
-msgstr "Tùy chá»n bàn phím tiếng Nhật"
-
-#: ../rules/base.xml.in.h:350
-msgid "Jpn"
-msgstr "Jpn"
-
-#: ../rules/base.xml.in.h:351
-msgid "Kalmyk"
-msgstr "Kalmyk"
-
-#: ../rules/base.xml.in.h:352
-msgid "Kana"
-msgstr "Kana"
-
-#: ../rules/base.xml.in.h:353
-msgid "Kana Lock key is locking"
-msgstr "Phím Kana Lock sẽ khoá"
-
-#: ../rules/base.xml.in.h:354
-msgid "Kannada"
-msgstr "Kannada"
-
-#: ../rules/base.xml.in.h:355
-msgid "Kashubian"
-msgstr "Kha-su-bi"
-
-#: ../rules/base.xml.in.h:356
-msgid "Kaz"
-msgstr "Kaz"
-
-#: ../rules/base.xml.in.h:357
-msgid "Kazakh with Russian"
-msgstr "Kha-xắc với tiếng Nga"
-
-#: ../rules/base.xml.in.h:358
-msgid "Kazakhstan"
-msgstr "Kha-xắc-x-tanh"
-
-#: ../rules/base.xml.in.h:359
-msgid "Ken"
-msgstr "Ken"
-
-#: ../rules/base.xml.in.h:360
-msgid "Kenya"
-msgstr "Khi-nia"
-
-#: ../rules/base.xml.in.h:361
-msgid "Key sequence to kill the X server"
-msgstr "Dãy phím để giết trình phục vụ X"
-
-#: ../rules/base.xml.in.h:362
-msgid "Key to choose 3rd level"
-msgstr "Phím để chá»n cấp ba"
-
-#: ../rules/base.xml.in.h:363
-msgid "Key to choose 5th level"
-msgstr "Phím để chá»n cấp 5"
-
-#: ../rules/base.xml.in.h:364
-msgid "Key(s) to change layout"
-msgstr "(Các) phím để chuyển đổi bố trí"
-
-#: ../rules/base.xml.in.h:365
-msgid "Keytronic FlexPro"
-msgstr "Keytronic FlexPro"
-
-#: ../rules/base.xml.in.h:366
-msgid "Kgz"
-msgstr "Kgz"
-
-#: ../rules/base.xml.in.h:367
-msgid "Khm"
-msgstr "Khm"
-
-#: ../rules/base.xml.in.h:368
-msgid "Kikuyu"
-msgstr "Ki-ku-yu"
-
-#: ../rules/base.xml.in.h:369
-msgid "Kinesis"
-msgstr "Kinesis"
-
-#: ../rules/base.xml.in.h:370
-msgid "Komi"
-msgstr "Komi"
-
-#: ../rules/base.xml.in.h:371
-msgid "Kor"
-msgstr "Kor"
-
-#: ../rules/base.xml.in.h:372
-msgid "Korea, Republic of"
-msgstr "Cộng Hoà Nam Hàn"
-
-#: ../rules/base.xml.in.h:373
-msgid "Ktunaxa"
-msgstr "Ktunaxa"
-
-#: ../rules/base.xml.in.h:374
-msgid "Kurdish, (F)"
-msgstr "Kuổ-đít (F)"
-
-#: ../rules/base.xml.in.h:375
-msgid "Kurdish, Arabic-Latin"
-msgstr "Kuổ-đít, A Rập/La-tinh"
-
-#: ../rules/base.xml.in.h:376
-msgid "Kurdish, Latin Alt-Q"
-msgstr "Kuổ-đít, La-tinh Alt-Q"
-
-#: ../rules/base.xml.in.h:377
-msgid "Kurdish, Latin Q"
-msgstr "Kuổ-đít, La-tinh Q"
-
-#: ../rules/base.xml.in.h:378
-msgid "Kyrgyzstan"
-msgstr "Kyr-gi-x-tanh"
-
-#: ../rules/base.xml.in.h:379
-msgid "LAm"
-msgstr "LAm"
-
-#: ../rules/base.xml.in.h:380
-msgid "LEKP"
-msgstr "LEKP"
-
-#: ../rules/base.xml.in.h:381
-msgid "LEKPa"
-msgstr "LEKPa"
-
-#: ../rules/base.xml.in.h:382
-msgid "Lao"
-msgstr "Lào"
-
-#: ../rules/base.xml.in.h:383
-msgid "Laos"
-msgstr "Lào"
-
-#: ../rules/base.xml.in.h:384
-msgid "Laptop/notebook Compaq (eg. Armada) Laptop Keyboard"
-msgstr "Bàn phím nhá» gá»n cho máy xách tay/notebook Compaq (ví dụ Armada)"
-
-#: ../rules/base.xml.in.h:385
-msgid "Laptop/notebook Compaq (eg. Presario) Internet Keyboard"
-msgstr "Bàn phím Internet cho máy xách tay/notebook Compaq (ví dụ Presario)"
-
-#: ../rules/base.xml.in.h:386
-msgid "Laptop/notebook eMachines m68xx"
-msgstr "Xách tay eMachines m68xx"
-
-#: ../rules/base.xml.in.h:387
-msgid "Latin"
-msgstr "La-tinh"
-
-#: ../rules/base.xml.in.h:388
-msgid "Latin American"
-msgstr "La-tinh Mỹ"
-
-#: ../rules/base.xml.in.h:389
-msgid "Latin Unicode"
-msgstr "La-tinh Unicode"
-
-#: ../rules/base.xml.in.h:390
-msgid "Latin Unicode qwerty"
-msgstr "La-tinh Unicode qwerty"
-
-#: ../rules/base.xml.in.h:391
-msgid "Latin qwerty"
-msgstr "La-tinh qwerty"
-
-#: ../rules/base.xml.in.h:392
-msgid "Latin unicode"
-msgstr "La-tinh Unicode"
-
-#: ../rules/base.xml.in.h:393
-msgid "Latin unicode qwerty"
-msgstr "La-tinh Unicode QWERTY"
-
-#: ../rules/base.xml.in.h:394
-msgid "Latin with guillemets"
-msgstr "La-tinh với « chim uria »"
-
-#: ../rules/base.xml.in.h:395
-msgid "Latvia"
-msgstr "Lát-via"
-
-#: ../rules/base.xml.in.h:396
-msgid "Layout toggle on multiply/divide key"
-msgstr "Bật/tắt bố trí với phím nhân/chia"
-
-#: ../rules/base.xml.in.h:397
-msgid "Left Alt"
-msgstr "Alt trái"
-
-#: ../rules/base.xml.in.h:398
-msgid "Left Alt (while pressed)"
-msgstr "Alt trái (trong khi bấm)"
-
-#: ../rules/base.xml.in.h:399
-msgid "Left Alt is swapped with Left Win"
-msgstr "Alt bên trái được trao đổi với phím Win bên trái"
-
-#: ../rules/base.xml.in.h:400
-msgid "Left Ctrl"
-msgstr "Ctrl trái"
-
-#: ../rules/base.xml.in.h:401
-msgid "Left Ctrl (to first layout), Right Ctrl (to last layout)"
-msgstr "Ctrl trái (tới bố trí đầu tiên), Ctrl phải (tới bố trí cuối cùng)"
-
-#: ../rules/base.xml.in.h:402
-msgid "Left Ctrl+Left Shift"
-msgstr "Ctrl trái+Shift trái"
-
-#: ../rules/base.xml.in.h:403
-msgid "Left Shift"
-msgstr "Shift trái"
-
-#: ../rules/base.xml.in.h:404
-msgid "Left Win"
-msgstr "Win trái"
-
-#: ../rules/base.xml.in.h:405
-msgid "Left Win (to first layout), Right Win/Menu (to last layout)"
-msgstr "Win trái (tới bố trí đầu tiên), Win phải/Trình đơn (tới bố trí cuối cùng)"
-
-#: ../rules/base.xml.in.h:406
-msgid "Left Win (while pressed)"
-msgstr "Win trái (trong khi bấm)"
-
-#: ../rules/base.xml.in.h:407
-msgid "Left Win chooses 5th level, locks when pressed together with another 5th-level-chooser"
-msgstr "Win trái chá»n cấp 5, khoá khi bấm nhau vá»›i má»™t bá»™ chá»n năm 5 khác"
-
-#: ../rules/base.xml.in.h:408
-msgid "Left Win chooses 5th level, locks when pressed together with another 5th-level-chooser, one press releases the lock"
-msgstr "Win trái chá»n cấp 5, khoá khi bấm nhau vá»›i má»™t bá»™ chá»n năm 5 khác, má»™t cú bấm cÅ©ng buông khoá"
-
-#: ../rules/base.xml.in.h:409
-msgid "Left hand"
-msgstr "Thuận tay trái"
-
-#: ../rules/base.xml.in.h:410
-msgid "Left handed Dvorak"
-msgstr "Dvorak thuận tay trái"
-
-#: ../rules/base.xml.in.h:411
-msgid "Legacy"
-msgstr "Thừa tự"
-
-#: ../rules/base.xml.in.h:412
-msgid "Legacy Wang 724"
-msgstr "Wang 724 thừa tự"
-
-#. Actually, with KP_SEPARATOR, as the old keypad(comma)
-#: ../rules/base.xml.in.h:414
-msgid "Legacy key with comma"
-msgstr "Phím thừa tự có dấu phẩy"
-
-#: ../rules/base.xml.in.h:415
-msgid "Legacy key with dot"
-msgstr "Phím thừa tự có chấm"
-
-#: ../rules/base.xml.in.h:416
-msgid "Lithuania"
-msgstr "Li-tu-a-ni"
-
-#: ../rules/base.xml.in.h:417
-msgid "Lka"
-msgstr "Lka"
-
-#: ../rules/base.xml.in.h:418
-msgid "Logitech Access Keyboard"
-msgstr "Bàn phím Truy cập Logitech"
-
-#: ../rules/base.xml.in.h:419
-msgid "Logitech Cordless Desktop"
-msgstr "Logitech Cordless Desktop"
-
-#: ../rules/base.xml.in.h:420
-msgid "Logitech Cordless Desktop (alternate option)"
-msgstr "Logitech Cordless Desktop (tùy chá»n thay thế)"
-
-#: ../rules/base.xml.in.h:421
-msgid "Logitech Cordless Desktop EX110"
-msgstr "Logitech Cordless Desktop EX110"
-
-#: ../rules/base.xml.in.h:422
-msgid "Logitech Cordless Desktop LX-300"
-msgstr "Logitech Cordless Desktop LX-300"
-
-#: ../rules/base.xml.in.h:423
-msgid "Logitech Cordless Desktop Navigator"
-msgstr "Logitech Cordless Desktop Navigator"
-
-#: ../rules/base.xml.in.h:424
-msgid "Logitech Cordless Desktop Optical"
-msgstr "Logitech Cordless Desktop Optical"
-
-#: ../rules/base.xml.in.h:425
-msgid "Logitech Cordless Desktop Pro (alternate option 2)"
-msgstr "Logitech Cordless Desktop Pro (luân phiên tùy chá»n 2)"
-
-#: ../rules/base.xml.in.h:426
-msgid "Logitech Cordless Desktop iTouch"
-msgstr "Logitech Cordless Desktop iTouch"
-
-#: ../rules/base.xml.in.h:427
-msgid "Logitech Cordless Freedom/Desktop Navigator"
-msgstr "Logitech Cordless Freedom/Desktop Navigator"
-
-#: ../rules/base.xml.in.h:428
-msgid "Logitech G15 extra keys via G15daemon"
-msgstr "Logitech G15 các phím thêm thông qua G15daemon"
-
-#: ../rules/base.xml.in.h:429
-msgid "Logitech Generic Keyboard"
-msgstr "Bàn phím chung Logitech"
-
-#: ../rules/base.xml.in.h:430
-msgid "Logitech Internet 350 Keyboard"
-msgstr "Bàn phím Internet Logitech 350"
-
-#: ../rules/base.xml.in.h:431
-msgid "Logitech Internet Keyboard"
-msgstr "Bàn phím Internet Logitech"
-
-#: ../rules/base.xml.in.h:432
-msgid "Logitech Internet Navigator Keyboard"
-msgstr "Bàn phím Logitech Internet Navigator"
-
-#: ../rules/base.xml.in.h:433
-msgid "Logitech Media Elite Keyboard"
-msgstr "Bàn phím Logitech Media Elite"
-
-#: ../rules/base.xml.in.h:434
-msgid "Logitech Ultra-X Cordless Media Desktop Keyboard"
-msgstr "Bàn phím Logitech Ultra-X Cordless Media Desktop"
-
-#: ../rules/base.xml.in.h:435
-msgid "Logitech Ultra-X Keyboard"
-msgstr "Bàn phím Logitech Ultra-X"
-
-#: ../rules/base.xml.in.h:436
-msgid "Logitech diNovo Edge Keyboard"
-msgstr "Bàn phím Logitech diNovo Edge"
-
-#: ../rules/base.xml.in.h:437
-msgid "Logitech diNovo Keyboard"
-msgstr "Bàn phím Logitech diNovo"
-
-#: ../rules/base.xml.in.h:438
-msgid "Logitech iTouch"
-msgstr "Logitech iTouch"
-
-#: ../rules/base.xml.in.h:439
-msgid "Logitech iTouch Cordless Keyboard (model Y-RB6)"
-msgstr "Bàn phím Không dây Logitech iTouch (mẫu mã Y-RB6)"
-
-#: ../rules/base.xml.in.h:440
-msgid "Logitech iTouch Internet Navigator Keyboard SE"
-msgstr "Bàn phím Logitech iTouch Internet Navigator SE"
-
-#: ../rules/base.xml.in.h:441
-msgid "Logitech iTouch Internet Navigator Keyboard SE (USB)"
-msgstr "Bàn phím Logitech iTouch Internet Navigator SE (USB)"
-
-#: ../rules/base.xml.in.h:442
-msgid "Lower Sorbian"
-msgstr "Xoa-bi Thấp"
-
-#: ../rules/base.xml.in.h:443
-msgid "Lower Sorbian (qwertz)"
-msgstr "Xoa-bi Thấp (qwertz)"
-
-#: ../rules/base.xml.in.h:444
-msgid "Ltu"
-msgstr "Ltu"
-
-#: ../rules/base.xml.in.h:445
-msgid "Lva"
-msgstr "Lva"
-
-#: ../rules/base.xml.in.h:446
-msgid "MESS"
-msgstr "MESS"
-
-#: ../rules/base.xml.in.h:447
-msgid "MNE"
-msgstr "MNE"
-
-#: ../rules/base.xml.in.h:448
-msgid "MacBook/MacBook Pro"
-msgstr "MacBook/MacBook Pro"
-
-#: ../rules/base.xml.in.h:449
-msgid "MacBook/MacBook Pro (Intl)"
-msgstr "MacBook/MacBook Pro (quốc tế)"
-
-#: ../rules/base.xml.in.h:450
-msgid "Macedonia"
-msgstr "Ma-xê-đô-ni-a"
-
-#: ../rules/base.xml.in.h:451
-msgid "Macintosh"
-msgstr "Macintosh"
-
-#: ../rules/base.xml.in.h:452
-msgid "Macintosh (International)"
-msgstr "Macintosh (Quốc tế)"
-
-#: ../rules/base.xml.in.h:453
-msgid "Macintosh Old"
-msgstr "Macintosh CÅ©"
-
-#: ../rules/base.xml.in.h:454
-msgid "Macintosh, Sun dead keys"
-msgstr "Macintosh, phím chết Sun"
-
-#: ../rules/base.xml.in.h:455
-msgid "Macintosh, eliminate dead keys"
-msgstr "Macintosh, phím chết loại trừ"
-
-#: ../rules/base.xml.in.h:456
-msgid "Make Caps Lock an additional Backspace"
-msgstr "Äặt CapsLock làm má»™t phím Xoá lùi bổ sung"
-
-#: ../rules/base.xml.in.h:457
-msgid "Make Caps Lock an additional Ctrl"
-msgstr "Äặt CapsLock làm má»™t phím Ctrl bổ sung"
-
-#: ../rules/base.xml.in.h:458
-msgid "Make Caps Lock an additional ESC"
-msgstr "Äặt CapsLock làm má»™t phím ESC bổ sung"
-
-#: ../rules/base.xml.in.h:459
-msgid "Make Caps Lock an additional Hyper"
-msgstr "Äặt CapsLock làm má»™t phím Hyper bổ sung"
-
-#: ../rules/base.xml.in.h:460
-msgid "Make Caps Lock an additional Num Lock"
-msgstr "Äặt CapsLock làm má»™t phím NumLock bổ sung"
-
-#: ../rules/base.xml.in.h:461
-msgid "Make Caps Lock an additional Super"
-msgstr "Äặt CapsLock làm má»™t phím Super bổ sung"
-
-#: ../rules/base.xml.in.h:462
-msgid "Malayalam"
-msgstr "Malayalam"
-
-#: ../rules/base.xml.in.h:463
-msgid "Malayalam Lalitha"
-msgstr "Malayalam Lalitha"
-
-#: ../rules/base.xml.in.h:464
-msgid "Maldives"
-msgstr "Man-đi-vơ-xợ"
-
-#: ../rules/base.xml.in.h:465
-msgid "Mali"
-msgstr "Ma-li"
-
-#: ../rules/base.xml.in.h:466
-msgid "Malta"
-msgstr "Man-tợ"
-
-#: ../rules/base.xml.in.h:467
-msgid "Maltese keyboard with US layout"
-msgstr "Bàn phím Man-tợ có bố trí Mỹ"
-
-#: ../rules/base.xml.in.h:468
-msgid "Mao"
-msgstr "Mao"
-
-#: ../rules/base.xml.in.h:469
-msgid "Maori"
-msgstr "Mao-ri"
-
-#: ../rules/base.xml.in.h:470
-msgid "Mdv"
-msgstr "Mdv"
-
-#: ../rules/base.xml.in.h:471
-msgid "Memorex MX1998"
-msgstr "Memorex MX1998"
-
-#: ../rules/base.xml.in.h:472
-msgid "Memorex MX2500 EZ-Access Keyboard"
-msgstr "Bàn phím Memorex MX2500 EZ-Access"
-
-#: ../rules/base.xml.in.h:473
-msgid "Memorex MX2750"
-msgstr "Memorex MX2750"
-
-#: ../rules/base.xml.in.h:474
-msgid "Menu"
-msgstr "Trình đơn"
-
-#: ../rules/base.xml.in.h:475
-msgid "Meta is mapped to Left Win"
-msgstr "Meta ánh xạ tới Win trái"
-
-#: ../rules/base.xml.in.h:476
-msgid "Meta is mapped to Win keys"
-msgstr "Meta ánh xạ tới các phím Win"
-
-#: ../rules/base.xml.in.h:477
-msgid "Microsoft Comfort Curve Keyboard 2000"
-msgstr "Microsoft Comfort Curve Keyboard 2000"
-
-#: ../rules/base.xml.in.h:478
-msgid "Microsoft Internet Keyboard"
-msgstr "Bàn phím Internet Microsoft"
-
-#: ../rules/base.xml.in.h:479
-msgid "Microsoft Internet Keyboard Pro, Swedish"
-msgstr "Bàn phím Internet Microsoft Pro, Thụy Äiển"
-
-#: ../rules/base.xml.in.h:480
-msgid "Microsoft Natural"
-msgstr "Microsoft Natural"
-
-#: ../rules/base.xml.in.h:481
-msgid "Microsoft Natural Keyboard Elite"
-msgstr "Microsoft Natural Keyboard Elite"
-
-#: ../rules/base.xml.in.h:482
-msgid "Microsoft Natural Keyboard Pro / Microsoft Internet Keyboard Pro"
-msgstr "Microsoft Natural Keyboard Pro / Microsoft Internet Keyboard Pro"
-
-#: ../rules/base.xml.in.h:483
-msgid "Microsoft Natural Keyboard Pro OEM"
-msgstr "Microsoft Natural Keyboard Pro OEM"
-
-#: ../rules/base.xml.in.h:484
-msgid "Microsoft Natural Keyboard Pro USB / Microsoft Internet Keyboard Pro"
-msgstr "Microsoft Natural Keyboard Pro USB / Microsoft Internet Keyboard Pro"
-
-#: ../rules/base.xml.in.h:485
-msgid "Microsoft Natural Wireless Ergonomic Keyboard 7000"
-msgstr "Microsoft Natural Wireless Ergonomic Keyboard 7000"
-
-#: ../rules/base.xml.in.h:486
-msgid "Microsoft Office Keyboard"
-msgstr "Bàn phím Văn phòng Microsoft"
-
-#: ../rules/base.xml.in.h:487
-msgid "Microsoft Wireless Multimedia Keyboard 1.0A"
-msgstr "Microsoft Wireless Multimedia Keyboard 1.0A"
-
-#: ../rules/base.xml.in.h:488
-msgid "Miscellaneous compatibility options"
-msgstr "Tùy chá»n tÆ°Æ¡ng thích khác"
-
-#: ../rules/base.xml.in.h:489
-msgid "Mkd"
-msgstr "Mkd"
-
-#: ../rules/base.xml.in.h:490
-msgid "Mli"
-msgstr "Mli"
-
-#: ../rules/base.xml.in.h:491
-msgid "Mlt"
-msgstr "Mlt"
-
-#: ../rules/base.xml.in.h:492
-msgid "Mmr"
-msgstr "Mmr"
-
-#: ../rules/base.xml.in.h:493
-msgid "Mng"
-msgstr "Mng"
-
-#: ../rules/base.xml.in.h:494
-msgid "Mongolia"
-msgstr "Mông Cổ"
-
-#: ../rules/base.xml.in.h:495
-msgid "Montenegro"
-msgstr "Mon-te-nê-gợ-rô"
-
-#: ../rules/base.xml.in.h:496
-msgid "Morocco"
-msgstr "Ma Rốc"
-
-#: ../rules/base.xml.in.h:497
-msgid "Multilingual"
-msgstr "Äa ngôn ngữ"
-
-#: ../rules/base.xml.in.h:498
-msgid "Multilingual, first part"
-msgstr "Äa ngôn ngữ, phần đầu"
-
-#: ../rules/base.xml.in.h:499
-msgid "Multilingual, second part"
-msgstr "Äa ngôn ngữ, phần hai"
-
-#: ../rules/base.xml.in.h:500
-msgid "Myanmar"
-msgstr "Miến Äiện"
-
-#: ../rules/base.xml.in.h:501
-msgid "NICOLA-F style Backspace"
-msgstr "Xoá lùi kiểu NICOLA-F"
-
-#: ../rules/base.xml.in.h:502
-msgid "NLA"
-msgstr "NLA"
-
-#: ../rules/base.xml.in.h:503
-msgid "Nativo"
-msgstr "Nativo"
-
-#: ../rules/base.xml.in.h:504
-msgid "Nativo for Esperanto"
-msgstr "Nativo cho Ét-pe-ran-tô"
-
-#: ../rules/base.xml.in.h:505
-msgid "Nativo for USA keyboards"
-msgstr "Nativo cho bàn phím Mỹ"
-
-#: ../rules/base.xml.in.h:506
-msgid "Neo 2"
-msgstr "Neo 2"
-
-#: ../rules/base.xml.in.h:507
-msgid "Nepal"
-msgstr "Ne-pan"
-
-#: ../rules/base.xml.in.h:508
-msgid "Netherlands"
-msgstr "Hà Lan"
-
-#: ../rules/base.xml.in.h:509
-msgid "New phonetic"
-msgstr "Ngữ âm mới"
-
-#: ../rules/base.xml.in.h:510
-msgid "Nga"
-msgstr "Nga"
-
-#: ../rules/base.xml.in.h:511
-msgid "Nigeria"
-msgstr "Ni-gê-ri-a"
-
-#: ../rules/base.xml.in.h:512
-msgid "Nld"
-msgstr "Nld"
-
-#: ../rules/base.xml.in.h:513
-msgid "Non-breakable space character at fourth level"
-msgstr "Ký tự dấu cách không thể ngắt ở bậc thứ tư"
-
-#: ../rules/base.xml.in.h:514
-msgid "Non-breakable space character at fourth level, thin non-breakable space character at sixth level"
-msgstr "Ký tự dấu cách không thể ngắt ở bậc thứ tư, ký tự dấu cách không thể ngắt mảnh ở bậc thứ sáu"
-
-#: ../rules/base.xml.in.h:515
-msgid "Non-breakable space character at fourth level, thin non-breakable space character at sixth level (via Ctrl+Shift)"
-msgstr "Ký tự dấu cách không thể ngắt ở bậc thứ tư, ký tự dấu cách không thể ngắt mảnh ở bậc thứ sáu (dùng Ctrl+Shift)"
-
-#: ../rules/base.xml.in.h:516
-msgid "Non-breakable space character at second level"
-msgstr "Ký tự dấu cách không thể ngắt ở bậc thứ hai"
-
-#: ../rules/base.xml.in.h:517
-msgid "Non-breakable space character at third level"
-msgstr "Ký tự dấu cách không thể ngắt ở bậc thứ ba"
-
-#: ../rules/base.xml.in.h:518
-msgid "Non-breakable space character at third level, nothing at fourth level"
-msgstr "Ký tự dấu cách không thể ngắt ở bậc thứ ba, không nhập gì ở bậc thứ tư"
-
-#: ../rules/base.xml.in.h:519
-msgid "Non-breakable space character at third level, thin non-breakable space character at fourth level"
-msgstr "Ký tự dấu cách không thể ngắt ở bậc thứ ba, ký tự dấu cách không thể ngắt mảnh ở bậc thứ tư"
-
-#: ../rules/base.xml.in.h:520
-msgid "Nor"
-msgstr "Nor"
-
-#: ../rules/base.xml.in.h:521
-msgid "Northern Saami"
-msgstr "Bắc Xa-mi"
-
-#: ../rules/base.xml.in.h:522
-msgid "Northern Saami, eliminate dead keys"
-msgstr "Bắc Xa-mi, phím chết loại trừ"
-
-#: ../rules/base.xml.in.h:523
-msgid "Northgate OmniKey 101"
-msgstr "Northgate OmniKey 101"
-
-#: ../rules/base.xml.in.h:524
-msgid "Norway"
-msgstr "Na Uy"
-
-#: ../rules/base.xml.in.h:525
-msgid "Npl"
-msgstr "Npl"
-
-#: ../rules/base.xml.in.h:526
-msgid "Num Lock"
-msgstr "NumLock"
-
-#: ../rules/base.xml.in.h:527
-msgid "Numeric keypad delete key behaviour"
-msgstr "Ứng xử phím xoá của vùng số"
-
-#: ../rules/base.xml.in.h:528
-msgid "Numeric keypad keys work as with Mac"
-msgstr "Phím vùng số hoạt động như trên Mac"
-
-#: ../rules/base.xml.in.h:529
-msgid "Numeric keypad layout selection"
-msgstr "Chá»n bố trí vùng phím số"
-
-#: ../rules/base.xml.in.h:530
-msgid "OADG 109A"
-msgstr "OADG 109A"
-
-#: ../rules/base.xml.in.h:531
-msgid "OLPC"
-msgstr "OLPC"
-
-#: ../rules/base.xml.in.h:532
-msgid "OLPC Dari"
-msgstr "OLPC Dari"
-
-#: ../rules/base.xml.in.h:533
-msgid "OLPC Pashto"
-msgstr "OLPC Pas-tô"
-
-#: ../rules/base.xml.in.h:534
-msgid "OLPC Southern Uzbek"
-msgstr "OLPC Nam Ux-béc"
-
-#: ../rules/base.xml.in.h:535
-msgid "Occitan"
-msgstr "Óc-khi-tanh"
-
-#: ../rules/base.xml.in.h:536
-msgid "Ogham"
-msgstr "Og-âm"
-
-#: ../rules/base.xml.in.h:537
-msgid "Ogham IS434"
-msgstr "Ogam IS434"
-
-#: ../rules/base.xml.in.h:538
-msgid "Oriya"
-msgstr "Ô-ri-a"
-
-#: ../rules/base.xml.in.h:539
-msgid "Ortek MCK-800 MM/Internet keyboard"
-msgstr "Bàn phím Ortek MCK-800 MM/Internet"
-
-#: ../rules/base.xml.in.h:540
-msgid "Ossetian"
-msgstr "O-xét"
-
-#: ../rules/base.xml.in.h:541
-msgid "Ossetian, Winkeys"
-msgstr "O-xét, phím Win"
-
-#: ../rules/base.xml.in.h:542
-msgid "Ossetian, legacy"
-msgstr "O-xét, thừa tự"
-
-#: ../rules/base.xml.in.h:543
-msgid "PC-98xx Series"
-msgstr "Sê ri PC-98xx"
-
-#: ../rules/base.xml.in.h:544
-msgid "Pak"
-msgstr "Pak"
-
-#: ../rules/base.xml.in.h:545
-msgid "Pakistan"
-msgstr "Pa-khi-x-tanh"
-
-#: ../rules/base.xml.in.h:546
-msgid "Pannonian Rusyn Homophonic"
-msgstr "Äồng Ä‘iệu Ru-xin Pa-non"
-
-#: ../rules/base.xml.in.h:547
-msgid "Pashto"
-msgstr "Pas-tô"
-
-#: ../rules/base.xml.in.h:548
-msgid "Pattachote"
-msgstr "Pa-ta-chô-te"
-
-#: ../rules/base.xml.in.h:549
-msgid "Pause"
-msgstr "Pause"
-
-#: ../rules/base.xml.in.h:550
-msgid "Persian, with Persian Keypad"
-msgstr "Ba Tư có vùng phím Ba Tư"
-
-#: ../rules/base.xml.in.h:551
-msgid "Phonetic"
-msgstr "Ngữ âm"
-
-#: ../rules/base.xml.in.h:552
-msgid "Phonetic Winkeys"
-msgstr "Winkeys ngữ âm"
-
-#: ../rules/base.xml.in.h:553
-msgid "Pol"
-msgstr "Pol"
-
-#: ../rules/base.xml.in.h:554
-msgid "Poland"
-msgstr "Phần Lan"
-
-#: ../rules/base.xml.in.h:555
-msgid "Polytonic"
-msgstr "Nhiá»u âm"
-
-#: ../rules/base.xml.in.h:556
-msgid "Portugal"
-msgstr "Bồ Äào Nha"
-
-#: ../rules/base.xml.in.h:557
-msgid "Probhat"
-msgstr "Probhat"
-
-#: ../rules/base.xml.in.h:558
-msgid "Programmer Dvorak"
-msgstr "Programmer Dvorak"
-
-#: ../rules/base.xml.in.h:559
-msgid "Propeller Voyager (KTEZ-1000)"
-msgstr "Propeller Voyager (KTEZ-1000)"
-
-#: ../rules/base.xml.in.h:560
-msgid "Prt"
-msgstr "Prt"
-
-#: ../rules/base.xml.in.h:561
-msgid "PrtSc"
-msgstr "PrtSc"
-
-#: ../rules/base.xml.in.h:562
-msgid "QTronix Scorpius 98N+"
-msgstr "QTronix Scorpius 98N+"
-
-#: ../rules/base.xml.in.h:563
-msgid "Right Alt"
-msgstr "Alt phải"
-
-#: ../rules/base.xml.in.h:564
-msgid "Right Alt (while pressed)"
-msgstr "Alt phải (trong khi bấm)"
-
-#: ../rules/base.xml.in.h:565
-msgid "Right Alt chooses 5th level, locks when pressed together with another 5th-level-chooser"
-msgstr "Alt phải chá»n cấp 5, khoá khi bấm nhau vá»›i má»™t bá»™ chá»n cấp 5 khác"
-
-#: ../rules/base.xml.in.h:566
-msgid "Right Alt chooses 5th level, locks when pressed together with another 5th-level-chooser, one press releases the lock"
-msgstr "Alt phải chá»n cấp 5, khoá khi bấm nhau vá»›i má»™t bá»™ chá»n cấp 5 khác, má»™t cú bấm cÅ©ng buông khoá"
-
-#: ../rules/base.xml.in.h:567
-msgid "Right Alt key never chooses 3rd level"
-msgstr "Phím Alt bên phải không bao giá» chá»n bậc thứ 3"
-
-#: ../rules/base.xml.in.h:568
-msgid "Right Alt, Shift+Right Alt key is Multi_Key"
-msgstr "Alt phải, phím Shift+Right Alt là Multi_Key"
-
-#: ../rules/base.xml.in.h:569
-msgid "Right Ctrl"
-msgstr "Ctrl phải"
-
-#: ../rules/base.xml.in.h:570
-msgid "Right Ctrl (while pressed)"
-msgstr "Ctrl phải (trong khi bấm)"
-
-#: ../rules/base.xml.in.h:571
-msgid "Right Ctrl as Right Alt"
-msgstr "Ctrl phải làm Alt phải"
-
-#: ../rules/base.xml.in.h:572
-msgid "Right Ctrl+Right Shift"
-msgstr "Ctrl phải + Shift phải"
-
-#: ../rules/base.xml.in.h:573
-msgid "Right Shift"
-msgstr "Shift phải"
-
-#: ../rules/base.xml.in.h:574
-msgid "Right Win"
-msgstr "Win phải"
-
-#: ../rules/base.xml.in.h:575
-msgid "Right Win (while pressed)"
-msgstr "Win phải (trong khi bấm)"
-
-#: ../rules/base.xml.in.h:576
-msgid "Right Win chooses 5th level, locks when pressed together with another 5th-level-chooser"
-msgstr "Win phải chá»n cấp 5, khoá khi bấm nhau vá»›i má»™t bá»™ chá»n cấp 5 khác"
-
-#: ../rules/base.xml.in.h:577
-msgid "Right Win chooses 5th level, locks when pressed together with another 5th-level-chooser, one press releases the lock"
-msgstr "Win phải chá»n cấp 5, khoá khi bấm nhau vá»›i má»™t bá»™ chá»n cấp 5 khác, má»™t cú bấm cÅ©ng buông khoá"
-
-#: ../rules/base.xml.in.h:578
-msgid "Right hand"
-msgstr "Thuận tay phải"
-
-#: ../rules/base.xml.in.h:579
-msgid "Right handed Dvorak"
-msgstr "Dvorak thuận tay phải"
-
-#: ../rules/base.xml.in.h:580
-msgid "Romania"
-msgstr "Rô-ma-ni"
-
-#: ../rules/base.xml.in.h:581
-msgid "Romanian keyboard with German letters"
-msgstr "Bàn phím Rô-ma-ni vá»›i các chữ cái Äức"
-
-#: ../rules/base.xml.in.h:582
-msgid "Romanian keyboard with German letters, eliminate dead keys"
-msgstr "Bàn phím Rô-ma-ni vá»›i các chữ cái Äức, các phím chết loại trừ"
-
-#: ../rules/base.xml.in.h:583
-msgid "Rou"
-msgstr "Rou"
-
-#: ../rules/base.xml.in.h:584
-msgid "Rus"
-msgstr "Nga"
-
-#: ../rules/base.xml.in.h:585
-msgid "Russia"
-msgstr "Nga"
-
-#: ../rules/base.xml.in.h:586
-msgid "Russian"
-msgstr "Nga"
-
-#: ../rules/base.xml.in.h:587
-msgid "Russian phonetic"
-msgstr "Nga ngữ âm"
-
-#: ../rules/base.xml.in.h:588
-msgid "Russian phonetic Dvorak"
-msgstr "Nga ngữ âm Dvorak"
-
-#: ../rules/base.xml.in.h:589
-msgid "Russian phonetic, eliminate dead keys"
-msgstr "Nga ngữ âm, phím chết loại trừ"
-
-#: ../rules/base.xml.in.h:590
-msgid "Russian with Kazakh"
-msgstr "Nga có Kha-xắc"
-
-#: ../rules/base.xml.in.h:591
-msgid "SILVERCREST Multimedia Wireless Keyboard"
-msgstr "Bàn phím Không dây Äa phÆ°Æ¡ng tiện SILVERCREST"
-
-#: ../rules/base.xml.in.h:592
-msgid "SK-1300"
-msgstr "SK-1300"
-
-#: ../rules/base.xml.in.h:593
-msgid "SK-2500"
-msgstr "SK-2500"
-
-#: ../rules/base.xml.in.h:594
-msgid "SK-6200"
-msgstr "SK-6200"
-
-#: ../rules/base.xml.in.h:595
-msgid "SK-7100"
-msgstr "SK-7100"
-
-#: ../rules/base.xml.in.h:596 ../rules/base.extras.xml.in.h:9
-msgid "SRB"
-msgstr "SRB"
-
-#: ../rules/base.xml.in.h:597
-msgid "SVEN Ergonomic 2500"
-msgstr "SVEN Ergonomic 2500"
-
-#: ../rules/base.xml.in.h:598
-msgid "SVEN Slim 303"
-msgstr "SVEN Slim 303"
-
-#: ../rules/base.xml.in.h:599
-msgid "Samsung SDM 4500P"
-msgstr "Samsung SDM 4500P"
-
-#: ../rules/base.xml.in.h:600
-msgid "Samsung SDM 4510P"
-msgstr "Samsung SDM 4510P"
-
-#: ../rules/base.xml.in.h:601
-msgid "Scroll Lock"
-msgstr "Scroll Lock"
-
-#: ../rules/base.xml.in.h:602
-msgid "Secwepemctsin"
-msgstr "Secwepemctsin"
-
-#: ../rules/base.xml.in.h:603
-msgid "Semi-colon on third level"
-msgstr "Dấu chấm phẩy ở cấp ba"
-
-#: ../rules/base.xml.in.h:604
-msgid "Sen"
-msgstr "Sen"
-
-#: ../rules/base.xml.in.h:605
-msgid "Senegal"
-msgstr "Xe-ne-gan"
-
-#: ../rules/base.xml.in.h:606 ../rules/base.extras.xml.in.h:10
-msgid "Serbia"
-msgstr "Xéc-bi"
-
-#: ../rules/base.xml.in.h:607
-msgid "Serbian"
-msgstr "Xéc-bi"
-
-#: ../rules/base.xml.in.h:608
-msgid "Shift cancels Caps Lock"
-msgstr "Shift thôi CapsLock"
-
-#: ../rules/base.xml.in.h:609
-msgid "Shift does not cancel Num Lock, chooses 3rd level instead"
-msgstr "Shift không thôi Numlock, chá»n cấp 3 để thay thế"
-
-#: ../rules/base.xml.in.h:610
-msgid "Shift with numeric keypad keys works as in MS Windows"
-msgstr "Shift với các phím vùng số làm việc như trong MS Windows"
-
-#: ../rules/base.xml.in.h:611
-msgid "Shift+Caps Lock"
-msgstr "Shift+CapsLock"
-
-#: ../rules/base.xml.in.h:612
-msgid "Simple"
-msgstr "ÄÆ¡n giản"
-
-#: ../rules/base.xml.in.h:613
-msgid "Sindhi"
-msgstr "Xin-Ä‘i"
-
-#: ../rules/base.xml.in.h:614
-msgid "Slovakia"
-msgstr "Xlô-vác"
-
-#: ../rules/base.xml.in.h:615
-msgid "Slovenia"
-msgstr "Xlô-ven"
-
-#: ../rules/base.xml.in.h:616
-msgid "South Africa"
-msgstr "Nam Phi"
-
-#: ../rules/base.xml.in.h:617
-msgid "Southern Uzbek"
-msgstr "Nam Ux-béc"
-
-#: ../rules/base.xml.in.h:618
-msgid "Spain"
-msgstr "Tây Ban Nha"
-
-#: ../rules/base.xml.in.h:619
-msgid "Special keys (Ctrl+Alt+&lt;key&gt;) handled in a server"
-msgstr "Các ký tự đặc biệt (Ctrl+Alt+&lt;key&gt;) được xử lý bằng một trình phục vụ"
-
-#: ../rules/base.xml.in.h:620
-msgid "Sri Lanka"
-msgstr "Tích-lan"
-
-#: ../rules/base.xml.in.h:621
-msgid "Standard"
-msgstr "Tiêu chuẩn"
-
-#: ../rules/base.xml.in.h:622
-msgid "Standard (Cedilla)"
-msgstr "Chuẩn (dấu móc dưới)"
-
-#. RSTU 2019-91
-#: ../rules/base.xml.in.h:624
-msgid "Standard RSTU"
-msgstr "RSTU chuẩn"
-
-#. RSTU 2019-91
-#: ../rules/base.xml.in.h:626
-msgid "Standard RSTU on Russian layout"
-msgstr "RSTU chuẩn trên bố trí tiếng Nga"
-
-#: ../rules/base.xml.in.h:627
-msgid "Sun Type 5/6"
-msgstr "Sun kiểu 5/6"
-
-#: ../rules/base.xml.in.h:628
-msgid "Sun dead keys"
-msgstr "Phím chết Sun"
-
-#: ../rules/base.xml.in.h:629
-msgid "Super Power Multimedia Keyboard"
-msgstr "Bàn phím Phim nhạc Siêu Năng Lực"
-
-#: ../rules/base.xml.in.h:630
-msgid "Svdvorak"
-msgstr "Svdvorak"
-
-#: ../rules/base.xml.in.h:631
-msgid "Svk"
-msgstr "Svk"
-
-#: ../rules/base.xml.in.h:632
-msgid "Svn"
-msgstr "Svn"
-
-#: ../rules/base.xml.in.h:633
-msgid "Swap Ctrl and Caps Lock"
-msgstr "Trao đổi Ctrl và CapsLock"
-
-#: ../rules/base.xml.in.h:634
-msgid "Swap ESC and Caps Lock"
-msgstr "Trao đổi ESC và CapsLock"
-
-#: ../rules/base.xml.in.h:635
-msgid "Swe"
-msgstr "Swe"
-
-#: ../rules/base.xml.in.h:636
-msgid "Sweden"
-msgstr "Thuỵ Äiển"
-
-#: ../rules/base.xml.in.h:637
-msgid "Switzerland"
-msgstr "Thuỵ Sĩ"
-
-#: ../rules/base.xml.in.h:638
-msgid "Symplon PaceBook (tablet PC)"
-msgstr "Symplon PaceBook (tablet PC)"
-
-#: ../rules/base.xml.in.h:639
-msgid "Syr"
-msgstr "Syr"
-
-#: ../rules/base.xml.in.h:640
-msgid "Syria"
-msgstr "Xy-ri"
-
-#: ../rules/base.xml.in.h:641
-msgid "Syriac"
-msgstr "Xi-ri"
-
-#: ../rules/base.xml.in.h:642
-msgid "Syriac phonetic"
-msgstr "Xy-ri ngữ âm"
-
-#: ../rules/base.xml.in.h:643
-msgid "TIS-820.2538"
-msgstr "TIS-820.2538"
-
-#: ../rules/base.xml.in.h:644
-msgid "Tajikistan"
-msgstr "Ta-gikh-x-tanh"
-
-#: ../rules/base.xml.in.h:645
-msgid "Tamil"
-msgstr "Ta-min"
-
-#: ../rules/base.xml.in.h:646
-msgid "Tamil Keyboard with Numerals"
-msgstr "Bàn phím Ta-min với các chữ số"
-
-#: ../rules/base.xml.in.h:647
-msgid "Tamil TAB Typewriter"
-msgstr "Ta-min TAB máy chữ"
-
-#: ../rules/base.xml.in.h:648
-msgid "Tamil TSCII Typewriter"
-msgstr "Ta-min TSCII máy chữ"
-
-#: ../rules/base.xml.in.h:649
-msgid "Tamil Unicode"
-msgstr "Ta-min Unicode"
-
-#: ../rules/base.xml.in.h:650
-msgid "Tanzania"
-msgstr "Tan-xa-nia"
-
-#: ../rules/base.xml.in.h:651
-msgid "Targa Visionary 811"
-msgstr "Targa Visionary 811"
-
-#: ../rules/base.xml.in.h:652
-msgid "Tatar"
-msgstr "Ta-tă"
-
-#: ../rules/base.xml.in.h:653
-msgid "Telugu"
-msgstr "Te-lu-gu"
-
-#: ../rules/base.xml.in.h:654
-msgid "Tha"
-msgstr "Tha"
-
-#: ../rules/base.xml.in.h:655
-msgid "Thailand"
-msgstr "Thái Lan"
-
-#: ../rules/base.xml.in.h:656
-msgid "Tibetan"
-msgstr "Tây Tạng"
-
-#: ../rules/base.xml.in.h:657
-msgid "Tibetan (with ASCII numerals)"
-msgstr "Tây Tạng (có chữ số ASCII)"
-
-#: ../rules/base.xml.in.h:658
-msgid "Tifinagh"
-msgstr "Ti-phi-nac"
-
-#: ../rules/base.xml.in.h:659
-msgid "Tifinagh alternative"
-msgstr "Ti-phi-nac tÆ°Æ¡ng Ä‘Æ°Æ¡ng"
-
-#: ../rules/base.xml.in.h:660
-msgid "Tifinagh alternative phonetic"
-msgstr "Ti-phi-nac ngữ âm tương đương"
-
-#: ../rules/base.xml.in.h:661
-msgid "Tifinagh extended"
-msgstr "Ti-phi-nac mở rộng"
-
-#: ../rules/base.xml.in.h:662
-msgid "Tifinagh extended phonetic"
-msgstr "Ti-phi-nac mở rộng ngữ âm"
-
-#: ../rules/base.xml.in.h:663
-msgid "Tifinagh phonetic"
-msgstr "Ti-phi-nac ngữ âm"
-
-#: ../rules/base.xml.in.h:664
-msgid "Tilde (~) variant"
-msgstr "Phương án dấu sóng (~)"
-
-#: ../rules/base.xml.in.h:665
-msgid "Tjk"
-msgstr "Tjk"
-
-#: ../rules/base.xml.in.h:666
-msgid "Tkm"
-msgstr "Tkm"
-
-#: ../rules/base.xml.in.h:667
-msgid "To the corresponding key in a Dvorak keyboard."
-msgstr "Tới phím tương ứng trên một bàn phím Dvorak."
-
-#: ../rules/base.xml.in.h:668
-msgid "To the corresponding key in a Qwerty keyboard."
-msgstr "Tới phím tương ứng trên một bàn phím Qwerty."
-
-#: ../rules/base.xml.in.h:669
-msgid "Toshiba Satellite S3000"
-msgstr "Toshiba Satellite S3000"
-
-#: ../rules/base.xml.in.h:670
-msgid "Traditional phonetic"
-msgstr "Ngữ âm truyá»n thống"
-
-#: ../rules/base.xml.in.h:671
-msgid "Trust Direct Access Keyboard"
-msgstr "Bàn phím Truy cập Thẳng Tin tưởng"
-
-#: ../rules/base.xml.in.h:672
-msgid "Trust Slimline"
-msgstr "Trust Slimline"
-
-#: ../rules/base.xml.in.h:673
-msgid "Trust Wireless Keyboard Classic"
-msgstr "Bàn Phím Cổ điển Không dây Tin tưởng"
-
-#: ../rules/base.xml.in.h:674
-msgid "Tur"
-msgstr "Tur"
-
-#: ../rules/base.xml.in.h:675
-msgid "Turkey"
-msgstr "Thổ Nhĩ Kỳ"
-
-#: ../rules/base.xml.in.h:676
-msgid "Turkmenistan"
-msgstr "Thổ-kh-me-ni-x-tanh"
-
-#: ../rules/base.xml.in.h:677
-msgid "TypeMatrix EZ-Reach 2020"
-msgstr "TypeMatrix EZ-Reach 2020"
-
-#: ../rules/base.xml.in.h:678
-msgid "TypeMatrix EZ-Reach 2030 PS2"
-msgstr "TypeMatrix EZ-Reach 2030 PS2"
-
-#: ../rules/base.xml.in.h:679
-msgid "TypeMatrix EZ-Reach 2030 USB"
-msgstr "TypeMatrix EZ-Reach 2030 USB"
-
-#: ../rules/base.xml.in.h:680
-msgid "TypeMatrix EZ-Reach 2030 USB (102/105:EU mode)"
-msgstr "TypeMatrix EZ-Reach 2030 USB (chế độ 102/105:EU)"
-
-#: ../rules/base.xml.in.h:681
-msgid "TypeMatrix EZ-Reach 2030 USB (106:JP mode)"
-msgstr "TypeMatrix EZ-Reach 2030 USB (chế độ 106:JP)"
-
-#: ../rules/base.xml.in.h:682
-msgid "Typewriter"
-msgstr "Máy chữ"
-
-#: ../rules/base.xml.in.h:683
-msgid "Typewriter, legacy"
-msgstr "Máy chữ, thừa tự"
-
-#: ../rules/base.xml.in.h:684
-msgid "Tza"
-msgstr "Tza"
-
-#: ../rules/base.xml.in.h:685
-msgid "UCW layout (accented letters only)"
-msgstr "Bố trí UCW (chỉ chữ có dấu)"
-
-#: ../rules/base.xml.in.h:686
-msgid "US Dvorak with CZ UCW support"
-msgstr "Mỹ Dvorak cũng hỗ trợ CZ UCW"
-
-#: ../rules/base.xml.in.h:687
-msgid "US keyboard with Bosnian digraphs"
-msgstr "Bàn phím Mỹ với các chữ ghép Bo-x-ni-a"
-
-#: ../rules/base.xml.in.h:688
-msgid "US keyboard with Bosnian letters"
-msgstr "Bàn phím Mỹ với các chữ cái Bo-x-ni-a"
-
-#: ../rules/base.xml.in.h:689
-msgid "US keyboard with Croatian digraphs"
-msgstr "Bàn phím Mỹ với các chữ ghép Cợ-rô-a-ti-a"
-
-#: ../rules/base.xml.in.h:690
-msgid "US keyboard with Croatian letters"
-msgstr "Bàn phím Mỹ với các chữ cái Croát-chi-a"
-
-#: ../rules/base.xml.in.h:691
-msgid "US keyboard with Estonian letters"
-msgstr "Bàn phím Mỹ với các chữ cái E-x-tô-ni-a"
-
-#: ../rules/base.xml.in.h:692
-msgid "US keyboard with Italian letters"
-msgstr "Bàn phím Mỹ vá»›i các chữ cái Ã"
-
-#: ../rules/base.xml.in.h:693
-msgid "US keyboard with Lithuanian letters"
-msgstr "Bàn phím Mỹ với các chữ cái Li-tu-a-nia"
-
-#: ../rules/base.xml.in.h:694
-msgid "US keyboard with Slovenian letters"
-msgstr "Bàn phím Mỹ với các chữ cái Xlô-ven"
-
-#: ../rules/base.xml.in.h:695 ../rules/base.extras.xml.in.h:11
-msgid "USA"
-msgstr "Mỹ"
-
-#: ../rules/base.xml.in.h:696
-msgid "Udmurt"
-msgstr "U-đ-muổt"
-
-#: ../rules/base.xml.in.h:697
-msgid "Ukr"
-msgstr "Ukr"
-
-#: ../rules/base.xml.in.h:698
-msgid "Ukraine"
-msgstr "U-cợ-rainh"
-
-#: ../rules/base.xml.in.h:699
-msgid "Unicode additions (arrows and math operators)"
-msgstr "Phần thêm Unicode (các mÅ©i tên và toán tá»­ toán há»c)"
-
-#: ../rules/base.xml.in.h:700
-msgid "Unicode additions (arrows and math operators). Math operators on default level"
-msgstr "Phần thêm Unicode (các mÅ©i tên và toán tá»­ toán há»c). Bậc mặc định thì nhập các toán tá»­ toán há»c."
-
-#: ../rules/base.xml.in.h:701
-msgid "UnicodeExpert"
-msgstr "Unicode Chuyên môn"
-
-#: ../rules/base.xml.in.h:702
-msgid "United Kingdom"
-msgstr "Vương Quốc Anh"
-
-#: ../rules/base.xml.in.h:703
-msgid "Unitek KB-1925"
-msgstr "Unitek KB-1925"
-
-#: ../rules/base.xml.in.h:704
-msgid "Urdu, Alternative phonetic"
-msgstr "Urdu, Ngữ âm xen kẽ"
-
-#: ../rules/base.xml.in.h:705
-msgid "Urdu, Phonetic"
-msgstr "Urdu, Ngữ âm"
-
-#: ../rules/base.xml.in.h:706
-msgid "Urdu, Winkeys"
-msgstr "Urdu, Phím Win"
-
-#: ../rules/base.xml.in.h:707
-msgid "Use Bosnian digraphs"
-msgstr "Dùng chữ ghép Bo-x-ni-a"
-
-#: ../rules/base.xml.in.h:708
-msgid "Use Croatian digraphs"
-msgstr "Dùng chữ ghép Cợ-rô-a-ti-a"
-
-#: ../rules/base.xml.in.h:709
-msgid "Use guillemets for quotes"
-msgstr "Dùng « chim uria » làm dấu trích dẫn"
-
-#: ../rules/base.xml.in.h:710
-msgid "Use keyboard LED to show alternative layout"
-msgstr "Sử dụng đèn bàn phím để chỉ ra bố trí xen kẽ"
-
-#: ../rules/base.xml.in.h:711
-msgid "Using space key to input non-breakable space character"
-msgstr "Dùng phím dài để nhập ký tự dấu cách không thể ngắt"
-
-#: ../rules/base.xml.in.h:712
-msgid "Usual space at any level"
-msgstr "Dấu cách bình thÆ°á»ng ở má»i bậc"
-
-#: ../rules/base.xml.in.h:713
-msgid "Uzb"
-msgstr "Uzb"
-
-#: ../rules/base.xml.in.h:714
-msgid "Uzbekistan"
-msgstr "Uz-be-khi-xtanh"
-
-#: ../rules/base.xml.in.h:715
-msgid "Vietnam"
-msgstr "Việt Nam"
-
-#: ../rules/base.xml.in.h:716
-msgid "ViewSonic KU-306 Internet Keyboard"
-msgstr "Bàn phím Internet ViewSonic KU-306"
-
-#: ../rules/base.xml.in.h:717
-msgid "Vnm"
-msgstr "Vnm"
-
-#: ../rules/base.xml.in.h:718
-msgid "Wang 724 keypad with unicode additions (arrows and math operators)"
-msgstr "Vùng phím Wang 724 có phần thêm Unicode (các mÅ©i tên và toán tá»­ toán há»c)"
-
-#: ../rules/base.xml.in.h:719
-msgid "Wang 724 keypad with unicode additions (arrows and math operators). Math operators on default level"
-msgstr "Vùng phím Wang 724 có phần thêm Unicode (các mÅ©i tên và toán tá»­ toán há»c). Mặc định thì nhập toán tá»­ toán há»c."
-
-#: ../rules/base.xml.in.h:720
-msgid "Wang model 724 azerty"
-msgstr "Wang mô hình 724 azerty"
-
-#: ../rules/base.xml.in.h:721
-msgid "Western"
-msgstr "Phương Tây"
-
-#: ../rules/base.xml.in.h:722
-msgid "Winbook Model XP5"
-msgstr "Winbook kiểu mẫu XP5"
-
-#: ../rules/base.xml.in.h:723
-msgid "Winkeys"
-msgstr "Phím Win"
-
-#: ../rules/base.xml.in.h:724
-msgid "With &lt;\\|&gt; key"
-msgstr "Với phím &lt;\\|&gt;"
-
-#: ../rules/base.xml.in.h:725
-msgid "With EuroSign on 5"
-msgstr "Thêm ký hiệu đồng Euro vào phím 5."
-
-#: ../rules/base.xml.in.h:726
-msgid "With guillemets"
-msgstr "Với « chim uria »"
-
-#: ../rules/base.xml.in.h:727
-msgid "Yahoo! Internet Keyboard"
-msgstr "Bàn phím Internet Yahoo!"
-
-#: ../rules/base.xml.in.h:728
-msgid "Yakut"
-msgstr "Ya-khú-th"
-
-#: ../rules/base.xml.in.h:729
-msgid "Yoruba"
-msgstr "Yoa-ru-ba"
-
-#: ../rules/base.xml.in.h:730
-msgid "Z and ZHE swapped"
-msgstr "Äổi chá»— Z và ZHE"
-
-#: ../rules/base.xml.in.h:731
-msgid "Zaf"
-msgstr "Zaf"
-
-#: ../rules/base.xml.in.h:732
-msgid "Zero-width non-joiner character at second level"
-msgstr "Ký tá»± không nối có chiá»u rá»™ng không tại cấp 2"
-
-#: ../rules/base.xml.in.h:733
-msgid "Zero-width non-joiner character at second level, non-breakable space character at third level"
-msgstr "Ký tá»± không nối có chiá»u rá»™ng không tại cấp 2, ký tá»± dấu cách không thể ngắt ở cấp 3"
-
-#: ../rules/base.xml.in.h:734
-msgid "Zero-width non-joiner character at second level, non-breakable space character at third level, nothing at fourth level"
-msgstr "Ký tá»± không nối có chiá»u rá»™ng không tại cấp 2, ký tá»± dấu cách không thể ngắt ở cấp 3, không có gì ở cấp 4"
-
-#: ../rules/base.xml.in.h:735
-msgid "Zero-width non-joiner character at second level, non-breakable space character at third level, thin non-breakable space at fourth level"
-msgstr "Ký tá»± không nối có chiá»u rá»™ng không tại cấp 2, ký tá»± dấu cách không thể ngắt ở cấp 3, ký tá»± dấu cách mảnh không thể ngắt ở cấp 4"
-
-#: ../rules/base.xml.in.h:736
-msgid "Zero-width non-joiner character at second level, non-breakable space character at third level, zero-width joiner at fourth level"
-msgstr "Ký tá»± không nối có chiá»u rá»™ng không tại cấp 2, ký tá»± dấu cách không thể ngắt ở cấp 3, ký tá»± nối có chiá»u rá»™ng không ở cấp 4"
-
-#: ../rules/base.xml.in.h:737
-msgid "Zero-width non-joiner character at second level, zero-width joiner character at third level"
-msgstr "Ký tá»± không nối có chiá»u rá»™ng không tại cấp 2, ký tá»± nối có chiá»u rá»™ng không ở cấp 3"
-
-#: ../rules/base.xml.in.h:738
-msgid "Zero-width non-joiner character at second level, zero-width joiner character at third level, non-breakable space character at fourth level"
-msgstr "Ký tá»± không nối có chiá»u rá»™ng không tại cấp 2, ký tá»± nối có chiá»u rá»™ng không ở cấp 3, ký tá»± dấu cách không thể ngắt ở cấp 4"
-
-#: ../rules/base.xml.in.h:739
-msgid "Zero-width non-joiner character at third level, zero-width joiner at fourth level"
-msgstr "Ký tá»± không nối có chiá»u rá»™ng không tại cấp 3, ký tá»± nối có chiá»u rá»™ng không ở cấp 4"
-
-#: ../rules/base.xml.in.h:740
-msgid "azerty"
-msgstr "azerty"
-
-#: ../rules/base.xml.in.h:741
-msgid "azerty/digits"
-msgstr "azerty/chữ số"
-
-#: ../rules/base.xml.in.h:742
-msgid "digits"
-msgstr "chữ số"
-
-#: ../rules/base.xml.in.h:743
-msgid "displaced semicolon and quote (obsolete)"
-msgstr "dấu chấm phẩy và dấu trích dẫn bị dịch (quá cũ)"
-
-#: ../rules/base.xml.in.h:744
-msgid "lyx"
-msgstr "lyx"
-
-#: ../rules/base.xml.in.h:745
-msgid "qwerty"
-msgstr "qwerty"
-
-#: ../rules/base.xml.in.h:746
-msgid "qwerty, extended Backslash"
-msgstr "qwerty, Gạch ngược mở rộng"
-
-#: ../rules/base.xml.in.h:747
-msgid "qwerty/digits"
-msgstr "qwerty/chữ số"
-
-#: ../rules/base.xml.in.h:748
-msgid "qwertz"
-msgstr "qwertz"
-
-#: ../rules/base.extras.xml.in.h:1
-msgid "APL"
-msgstr "APL"
-
-#: ../rules/base.extras.xml.in.h:2
-msgid "Atsina"
-msgstr "Ãt-xi-na"
-
-#: ../rules/base.extras.xml.in.h:3
-msgid "Avestan"
-msgstr "A-ve-x-tanh"
-
-#: ../rules/base.extras.xml.in.h:4
-msgid "Combining accents instead of dead keys"
-msgstr "Tổ hợp dấu phụ thay cho phím chết"
-
-#: ../rules/base.extras.xml.in.h:5
-msgid "Couer D'alene Salish"
-msgstr "Couer D'alene Salish"
-
-#: ../rules/base.extras.xml.in.h:6
-msgid "International (AltGr Unicode combining)"
-msgstr "Quốc tế (tổ hợp Unicode AltGr)"
-
-#: ../rules/base.extras.xml.in.h:7
-msgid "International (AltGr Unicode combining, alternative)"
-msgstr "Quốc tế (tổ hợp Unicode AltGr, thay thế)"
+# Vietnamese translation for X Keyboard Config.
+# Copyright © 2010 Free Software Foundation, Inc.
+# This file is distributed under the same license as the xkeyboard-config package.
+# Phan Vinh Thinh <teppi82@gmail.com>, 2005.
+# Clytie Siddall <clytie@riverland.net.au>, 2007-2010.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: xkeyboard-config 2.0\n"
+"Report-Msgid-Bugs-To: svu@users.sourceforge.net\n"
+"POT-Creation-Date: 2010-09-15 21:57+0100\n"
+"PO-Revision-Date: 2010-09-28 19:37+0930\n"
+"Last-Translator: Clytie Siddall <clytie@riverland.net.au>\n"
+"Language-Team: Vietnamese <vi-VN@googlegroups.com>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+"X-Generator: LocFactoryEditor 1.8\n"
+
+#: ../rules/base.xml.in.h:1
+msgid "&lt;Less/Greater&gt;"
+msgstr "&lt;Nhá»/Lá»›n hÆ¡n&gt;"
+
+#: ../rules/base.xml.in.h:2
+msgid "&lt;Less/Greater&gt; chooses 5th level, locks when pressed together with another 5th-level-chooser"
+msgstr "&lt;Nhá»/Lá»›n hÆ¡n&gt; chá»n cấp năm, khoá khi bấm nhau vá»›i má»™t bá»™ chá»n cấp năm khác"
+
+#: ../rules/base.xml.in.h:3
+msgid "&lt;Less/Greater&gt; chooses 5th level, locks when pressed together with another 5th-level-chooser, one press releases the lock"
+msgstr "&lt;Nhá»/Lá»›n hÆ¡n&gt; chá»n cấp năm, khoá khi bấm nhau vá»›i má»™t bá»™ chá»n cấp năm khác, má»™t cú bấm cÅ©ng buông khoá"
+
+#: ../rules/base.xml.in.h:4
+msgid "(F)"
+msgstr "(F)"
+
+#: ../rules/base.xml.in.h:5
+msgid "(Legacy) Alternative"
+msgstr "(Thừa tự) Tương đương"
+
+#: ../rules/base.xml.in.h:6
+msgid "(Legacy) Alternative, Sun dead keys"
+msgstr "(Thừa tự) Tương đương, phím chết Sun"
+
+#: ../rules/base.xml.in.h:7
+msgid "(Legacy) Alternative, eliminate dead keys"
+msgstr "(Thừa tự) Tương đương, phím chết loại trừ"
+
+#: ../rules/base.xml.in.h:8
+msgid "101/104 key Compatible"
+msgstr "Tương thích với kiểu 101/104 phím"
+
+#: ../rules/base.xml.in.h:9
+msgid "101/qwerty/comma/Dead keys"
+msgstr "101/qwerty/dấu phẩy/Phím chết"
+
+#: ../rules/base.xml.in.h:10
+msgid "101/qwerty/comma/Eliminate dead keys"
+msgstr "101/qwerty/dấu phẩy/Phím chết loại trừ"
+
+#: ../rules/base.xml.in.h:11
+msgid "101/qwerty/dot/Dead keys"
+msgstr "101/qwerty/dấu chấm/Phím chết"
+
+#: ../rules/base.xml.in.h:12
+msgid "101/qwerty/dot/Eliminate dead keys"
+msgstr "101/qwerty/dấu chấm/Phím chết loại trừ"
+
+#: ../rules/base.xml.in.h:13
+msgid "101/qwertz/comma/Dead keys"
+msgstr "101/qwertz/dấu phẩy/Phím chết"
+
+#: ../rules/base.xml.in.h:14
+msgid "101/qwertz/comma/Eliminate dead keys"
+msgstr "101/qwertz/dấu phẩy/Phím chết loại trừ"
+
+#: ../rules/base.xml.in.h:15
+msgid "101/qwertz/dot/Dead keys"
+msgstr "101/qwertz/dấu chấm/Phím chết"
+
+#: ../rules/base.xml.in.h:16
+msgid "101/qwertz/dot/Eliminate dead keys"
+msgstr "101/qwertz/dấu chấm/Phím chết loại trừ"
+
+#: ../rules/base.xml.in.h:17
+msgid "102/qwerty/comma/Dead keys"
+msgstr "102/qwerty/dấu phẩy/Phím chết"
+
+#: ../rules/base.xml.in.h:18
+msgid "102/qwerty/comma/Eliminate dead keys"
+msgstr "102/qwerty/dấu phẩy/Phím chết loại trừ"
+
+#: ../rules/base.xml.in.h:19
+msgid "102/qwerty/dot/Dead keys"
+msgstr "102/qwerty/dấu chấm/Phím chết"
+
+#: ../rules/base.xml.in.h:20
+msgid "102/qwerty/dot/Eliminate dead keys"
+msgstr "102/qwerty/dấu chấm/Phím chết loại trừ"
+
+#: ../rules/base.xml.in.h:21
+msgid "102/qwertz/comma/Dead keys"
+msgstr "102/qwertz/dấu phẩy/Phím chết"
+
+#: ../rules/base.xml.in.h:22
+msgid "102/qwertz/comma/Eliminate dead keys"
+msgstr "102/qwertz/dấu phẩy/Phím chết loại trừ"
+
+#: ../rules/base.xml.in.h:23
+msgid "102/qwertz/dot/Dead keys"
+msgstr "102/qwertz/dấu chấm/Phím chết"
+
+#: ../rules/base.xml.in.h:24
+msgid "102/qwertz/dot/Eliminate dead keys"
+msgstr "102/qwertz/dấu chấm/Phím chết loại trừ"
+
+#: ../rules/base.xml.in.h:25
+msgid "2"
+msgstr "2"
+
+#: ../rules/base.xml.in.h:26
+msgid "4"
+msgstr "4"
+
+#: ../rules/base.xml.in.h:27
+msgid "5"
+msgstr "5"
+
+#: ../rules/base.xml.in.h:28
+msgid "A4Tech KB-21"
+msgstr "A4Tech KB-21"
+
+#: ../rules/base.xml.in.h:29
+msgid "A4Tech KBS-8"
+msgstr "A4Tech KBS-8"
+
+#: ../rules/base.xml.in.h:30
+msgid "A4Tech Wireless Desktop RFKB-23"
+msgstr "Không dây Äể bàn RFKB-23 A4Tech"
+
+#: ../rules/base.xml.in.h:31
+msgid "ATM/phone-style"
+msgstr "Kiểu điện thoại/ATM"
+
+#: ../rules/base.xml.in.h:32
+msgid "Acer AirKey V"
+msgstr "Acer AirKey V"
+
+#: ../rules/base.xml.in.h:33
+msgid "Acer C300"
+msgstr "Acer C300"
+
+#: ../rules/base.xml.in.h:34
+msgid "Acer Ferrari 4000"
+msgstr "Acer Ferrari 4000"
+
+#: ../rules/base.xml.in.h:35
+msgid "Acer Laptop"
+msgstr "Xách tay Acer"
+
+#: ../rules/base.xml.in.h:36
+msgid "Add the standard behavior to Menu key"
+msgstr "Thêm ứng xử tiêu chuẩn vào phím trình đơn."
+
+#: ../rules/base.xml.in.h:37
+msgid "Adding Esperanto circumflexes (supersigno)"
+msgstr "Äang thêm các dấu mÅ© tiếng Ét-pe-ran-tô (supersigno)"
+
+#: ../rules/base.xml.in.h:38
+msgid "Adding EuroSign to certain keys"
+msgstr "Äang thêm ký hiệu đồng Euro vào má»™t số phím nào đó"
+
+#: ../rules/base.xml.in.h:39
+msgid "Advance Scorpius KI"
+msgstr "Nâng cao Scorpius KI"
+
+#: ../rules/base.xml.in.h:40
+msgid "Afg"
+msgstr "Afg"
+
+#: ../rules/base.xml.in.h:41
+msgid "Afghanistan"
+msgstr "A Phú Hãn"
+
+#: ../rules/base.xml.in.h:42
+msgid "Akan"
+msgstr "Akan"
+
+#: ../rules/base.xml.in.h:43
+msgid "Alb"
+msgstr "Alb"
+
+#: ../rules/base.xml.in.h:44
+msgid "Albania"
+msgstr "Al-ba-ni-a"
+
+#: ../rules/base.xml.in.h:45
+msgid "Alt and Meta are on Alt keys"
+msgstr "Alt và Meta nằm trên các phím Alt"
+
+#: ../rules/base.xml.in.h:46
+msgid "Alt is mapped to Right Win, Super to Menu"
+msgstr "Ãnh xạ Alt sang phím Win bên phải và Super sang phím trình Ä‘Æ¡n"
+
+#: ../rules/base.xml.in.h:47
+msgid "Alt+Caps Lock"
+msgstr "Alt+CapsLock"
+
+#: ../rules/base.xml.in.h:48
+msgid "Alt+Ctrl"
+msgstr "Alt+Ctrl"
+
+#: ../rules/base.xml.in.h:49
+msgid "Alt+Shift"
+msgstr "Alt+Shift"
+
+#: ../rules/base.xml.in.h:50
+msgid "Alt+Space"
+msgstr "Alt+Space"
+
+#: ../rules/base.xml.in.h:51
+msgid "Alt-Q"
+msgstr "Alt-Q"
+
+#: ../rules/base.xml.in.h:52
+msgid "Alt/Win key behavior"
+msgstr "Ứng xử phím Alt/Win"
+
+#: ../rules/base.xml.in.h:53
+msgid "Alternative"
+msgstr "TÆ°Æ¡ng Ä‘Æ°Æ¡ng"
+
+#: ../rules/base.xml.in.h:54
+msgid "Alternative Eastern"
+msgstr "Äông tÆ°Æ¡ng Ä‘Æ°Æ¡ng"
+
+#: ../rules/base.xml.in.h:55
+msgid "Alternative Phonetic"
+msgstr "Ngữ âm tương đương"
+
+#: ../rules/base.xml.in.h:56
+msgid "Alternative international"
+msgstr "Quốc tế tương đương"
+
+#: ../rules/base.xml.in.h:57
+msgid "Alternative, Sun dead keys"
+msgstr "Tương đương, phím chết Sun"
+
+#: ../rules/base.xml.in.h:58
+msgid "Alternative, eliminate dead keys"
+msgstr "Tương đương, phím chết loại trừ"
+
+#: ../rules/base.xml.in.h:59
+msgid "Alternative, latin-9 only"
+msgstr "Tương đương, chỉ Latin-9"
+
+# Literal: don't translate/Nghĩa chữ : đừng dịch
+#: ../rules/base.xml.in.h:60
+msgid "And"
+msgstr "And"
+
+#: ../rules/base.xml.in.h:61
+msgid "Andorra"
+msgstr "An-Ä‘oa-ra"
+
+#: ../rules/base.xml.in.h:62
+msgid "Any Alt key"
+msgstr "Bất kỳ phím Alt"
+
+#: ../rules/base.xml.in.h:63
+msgid "Any Win key"
+msgstr "Bất kỳ phím Win"
+
+#: ../rules/base.xml.in.h:64
+msgid "Any Win key (while pressed)"
+msgstr "Bất kỳ phím Win (trong khi bấm)"
+
+#: ../rules/base.xml.in.h:65
+msgid "Apostrophe (') variant"
+msgstr "Phương án hô ngữ (')"
+
+# Name: don't translate/Tên: đừng dịch
+#: ../rules/base.xml.in.h:66
+msgid "Apple"
+msgstr "Apple"
+
+#: ../rules/base.xml.in.h:67
+msgid "Apple Aluminium Keyboard (ANSI)"
+msgstr "Bàn phím nhôm Apple (ANSI)"
+
+#: ../rules/base.xml.in.h:68
+msgid "Apple Aluminium Keyboard (ISO)"
+msgstr "Bàn phím nhôm Apple (ISO)"
+
+#: ../rules/base.xml.in.h:69
+msgid "Apple Aluminium Keyboard (JIS)"
+msgstr "Bàn phím nhôm Apple (JIS)"
+
+#: ../rules/base.xml.in.h:70
+msgid "Apple Aluminium Keyboard: emulate PC keys (Print, Scroll Lock, Pause, Num Lock)"
+msgstr "Bàn phím nhôm Apple: mô phá»ng phím PC: Print (In), Scroll_Lock (Khoá cuá»™n), Pause (Tạm dừng), NumLock (Khoá số)"
+
+#: ../rules/base.xml.in.h:71
+msgid "Apple Laptop"
+msgstr "Máy tính xách tay Apple"
+
+#: ../rules/base.xml.in.h:72
+msgid "Ara"
+msgstr "Ara"
+
+#: ../rules/base.xml.in.h:73
+msgid "Arabic"
+msgstr "Ả Rập"
+
+#: ../rules/base.xml.in.h:74
+msgid "Arm"
+msgstr "Arm"
+
+#: ../rules/base.xml.in.h:75
+msgid "Armenia"
+msgstr "Ãc-mê-ni"
+
+#: ../rules/base.xml.in.h:76
+msgid "Asturian variant with bottom-dot H and bottom-dot L"
+msgstr "Biến thế Ax-tu-ri có H chấm dưới và L chấm dưới"
+
+#: ../rules/base.xml.in.h:77
+msgid "Asus Laptop"
+msgstr "Mấy tính xách tay Asus"
+
+#: ../rules/base.xml.in.h:78
+msgid "At bottom left"
+msgstr "Dưới trái"
+
+#: ../rules/base.xml.in.h:79
+msgid "At left of 'A'"
+msgstr "Bên trái của 'A'"
+
+#: ../rules/base.xml.in.h:80
+msgid "Austria"
+msgstr "Ao"
+
+#: ../rules/base.xml.in.h:81
+msgid "Aut"
+msgstr "Aut"
+
+#: ../rules/base.xml.in.h:82
+msgid "Avatime"
+msgstr "Avatime"
+
+#: ../rules/base.xml.in.h:83
+msgid "Aze"
+msgstr "Aze"
+
+#: ../rules/base.xml.in.h:84
+msgid "Azerbaijan"
+msgstr "A-xơ-bai-gian"
+
+#: ../rules/base.xml.in.h:85
+msgid "Azona RF2300 wireless Internet Keyboard"
+msgstr "Bàn phím không dây Internet Azona RF2300"
+
+#: ../rules/base.xml.in.h:86
+msgid "BTC 5090"
+msgstr "BTC 5090"
+
+#: ../rules/base.xml.in.h:87
+msgid "BTC 5113RF Multimedia"
+msgstr "BTC 5113RF Phim nhạc"
+
+#: ../rules/base.xml.in.h:88
+msgid "BTC 5126T"
+msgstr "BTC 5126T"
+
+#: ../rules/base.xml.in.h:89
+msgid "BTC 6301URF"
+msgstr "BTC 6301URF"
+
+#: ../rules/base.xml.in.h:90
+msgid "BTC 9000"
+msgstr "BTC 9000"
+
+#: ../rules/base.xml.in.h:91
+msgid "BTC 9000A"
+msgstr "BTC 9000A"
+
+#: ../rules/base.xml.in.h:92
+msgid "BTC 9001AH"
+msgstr "BTC 9001AH"
+
+#: ../rules/base.xml.in.h:93
+msgid "BTC 9019U"
+msgstr "BTC 9019U"
+
+#: ../rules/base.xml.in.h:94
+msgid "BTC 9116U Mini Wireless Internet and Gaming"
+msgstr "BTC 9116U Internet và Chạy trò Không dây Nhá»"
+
+#: ../rules/base.xml.in.h:95
+msgid "Backslash"
+msgstr "Gạch chéo ngược"
+
+#: ../rules/base.xml.in.h:96
+msgid "Bangladesh"
+msgstr "Băng-la-đexợ"
+
+#: ../rules/base.xml.in.h:97
+msgid "Bashkirian"
+msgstr "Ba-s-khi-ri"
+
+#: ../rules/base.xml.in.h:98
+msgid "Bel"
+msgstr "Bel"
+
+#: ../rules/base.xml.in.h:99
+msgid "Belarus"
+msgstr "Bê-la-rút"
+
+#: ../rules/base.xml.in.h:100
+msgid "Belgium"
+msgstr "Bỉ"
+
+#: ../rules/base.xml.in.h:101
+msgid "BenQ X-Touch"
+msgstr "BenQ X-Touch"
+
+#: ../rules/base.xml.in.h:102
+msgid "BenQ X-Touch 730"
+msgstr "BenQ X-Touch 730"
+
+#: ../rules/base.xml.in.h:103
+msgid "BenQ X-Touch 800"
+msgstr "BenQ X-Touch 800"
+
+#: ../rules/base.xml.in.h:104
+msgid "Bengali"
+msgstr "Ben-ga-li"
+
+#: ../rules/base.xml.in.h:105
+msgid "Bengali Probhat"
+msgstr "Ben-ga-li Probhat"
+
+#: ../rules/base.xml.in.h:106
+msgid "Bepo, ergonomic, Dvorak way"
+msgstr "Bepo, tối ưu nhân tố, cách Dvorak"
+
+#: ../rules/base.xml.in.h:107
+msgid "Bepo, ergonomic, Dvorak way, latin-9 only"
+msgstr "Bepo, tối ưu nhân tố, cách Dvorak, chỉ Latin-9"
+
+#: ../rules/base.xml.in.h:108
+msgid "Bgd"
+msgstr "Bgd"
+
+#: ../rules/base.xml.in.h:109
+msgid "Bgr"
+msgstr "Bgr"
+
+#: ../rules/base.xml.in.h:110
+msgid "Bhutan"
+msgstr "Bhu-tan"
+
+#: ../rules/base.xml.in.h:111
+msgid "Biblical Hebrew (Tiro)"
+msgstr "Do Thái kinh thánh (Tiro)"
+
+#: ../rules/base.xml.in.h:112
+msgid "Bih"
+msgstr "Bih"
+
+#: ../rules/base.xml.in.h:113
+msgid "Blr"
+msgstr "Blr"
+
+#: ../rules/base.xml.in.h:114
+msgid "Bosnia and Herzegovina"
+msgstr "Bô-xni-a và Héc-xê-gô-vi-na"
+
+#: ../rules/base.xml.in.h:115
+msgid "Both Alt keys together"
+msgstr "Cả hai phím Alt với nhau"
+
+#: ../rules/base.xml.in.h:116
+msgid "Both Ctrl keys together"
+msgstr "Cả hai phím Ctrl với nhau"
+
+#: ../rules/base.xml.in.h:117
+msgid "Both Shift keys together"
+msgstr "Cả hai phím Shift với nhau"
+
+#: ../rules/base.xml.in.h:118
+msgid "Both Shift-Keys together toggle Caps Lock"
+msgstr "Cả hai phím Shift với nhau thì bật/tắt CapsLock (khoá chữ hoa)"
+
+#: ../rules/base.xml.in.h:119
+msgid "Botswana"
+msgstr "Bốt-xoă-na"
+
+#: ../rules/base.xml.in.h:120
+msgid "Bra"
+msgstr "Bra"
+
+#: ../rules/base.xml.in.h:121
+msgid "Braille"
+msgstr "Chữ nổi"
+
+#: ../rules/base.xml.in.h:122
+msgid "Brazil"
+msgstr "Bra-xin"
+
+#: ../rules/base.xml.in.h:123
+msgid "Breton"
+msgstr "Bợ-re-ton"
+
+#: ../rules/base.xml.in.h:124
+msgid "Brl"
+msgstr "Brl"
+
+#: ../rules/base.xml.in.h:125
+msgid "Brother Internet Keyboard"
+msgstr "Bàn phím Internet Brother"
+
+#: ../rules/base.xml.in.h:126
+msgid "Btn"
+msgstr "Btn"
+
+#: ../rules/base.xml.in.h:127
+msgid "Buckwalter"
+msgstr "Buckwalter"
+
+#: ../rules/base.xml.in.h:128
+msgid "Bulgaria"
+msgstr "Bun-ga-ri"
+
+#: ../rules/base.xml.in.h:129
+msgid "Bwa"
+msgstr "Bwa"
+
+#: ../rules/base.xml.in.h:130
+msgid "COD"
+msgstr "COD"
+
+#: ../rules/base.xml.in.h:131
+msgid "CRULP"
+msgstr "CRULP"
+
+#: ../rules/base.xml.in.h:132
+msgid "Cambodia"
+msgstr "Căm Bốt"
+
+#: ../rules/base.xml.in.h:133
+msgid "Can"
+msgstr "Can"
+
+#: ../rules/base.xml.in.h:134
+msgid "Canada"
+msgstr "Ca-na-da"
+
+#: ../rules/base.xml.in.h:135
+msgid "Caps Lock"
+msgstr "CapsLock"
+
+#: ../rules/base.xml.in.h:136
+msgid "Caps Lock (to first layout), Shift+Caps Lock (to last layout)"
+msgstr "CapsLock (tới bố trí đầu tiên), Shift+CapsLock (tới bố trí cuối cùng)"
+
+#: ../rules/base.xml.in.h:137
+msgid "Caps Lock (while pressed), Alt+Caps Lock does the original capslock action"
+msgstr "CapsLock (trong khi bấm), Alt+CapsLock thì làm việc gốc khoá chữ hoa"
+
+#: ../rules/base.xml.in.h:138
+msgid "Caps Lock acts as Shift with locking. Shift \"pauses\" Caps Lock"
+msgstr "CapsLock hoạt động như Shift mà cũng khoá. Shift « tạm dừng » CapsLock."
+
+#: ../rules/base.xml.in.h:139
+msgid "Caps Lock acts as Shift with locking. Shift doesn't affect Caps Lock"
+msgstr "CapsLock hoạt động như Shift mà cũng khoá. Shift không có tác động CapsLock."
+
+#: ../rules/base.xml.in.h:140
+msgid "Caps Lock is disabled"
+msgstr "CapsLock bị tắt"
+
+#: ../rules/base.xml.in.h:141
+msgid "Caps Lock key behavior"
+msgstr "Äặc Ä‘iểm của phím CapsLock"
+
+#: ../rules/base.xml.in.h:142
+msgid "Caps Lock toggles Shift so all keys are affected"
+msgstr "CapsLock bật tắt Shift thì má»i phím Ä‘á»u bị ảnh hưởng"
+
+#: ../rules/base.xml.in.h:143
+msgid "Caps Lock toggles normal capitalization of alphabetic characters"
+msgstr "CapsLock bật tắt viết hoa thông thÆ°á»ng của các ký tá»± chữ cái"
+
+#: ../rules/base.xml.in.h:144
+msgid "Caps Lock uses internal capitalization. Shift \"pauses\" Caps Lock"
+msgstr "CapsLock sử dụng chức năng viết hoa nội bộ. Shift « tạm dừng » CapsLock."
+
+#: ../rules/base.xml.in.h:145
+msgid "Caps Lock uses internal capitalization. Shift doesn't affect Caps Lock"
+msgstr "CapsLock sử dụng chức năng viết hoa nội bộ. Shift không có tác động CapsLock."
+
+#: ../rules/base.xml.in.h:146
+msgid "Catalan variant with middle-dot L"
+msgstr "Biến thể Ca-ta-lan có chữ L chấm giữa"
+
+# Tên bố trí bàn phím ?
+#: ../rules/base.xml.in.h:147
+msgid "Cedilla"
+msgstr "Cedilla"
+
+#: ../rules/base.xml.in.h:148
+msgid "Che"
+msgstr "Che"
+
+#: ../rules/base.xml.in.h:149
+msgid "Cherokee"
+msgstr "Che-rô-khi"
+
+#: ../rules/base.xml.in.h:150
+msgid "Cherry B.UNLIMITED"
+msgstr "Cherry B.VÔ_HẠN"
+
+#: ../rules/base.xml.in.h:151
+msgid "Cherry Blue Line CyBo@rd"
+msgstr "Cherry Blue Line CyBo@rd"
+
+#: ../rules/base.xml.in.h:152
+msgid "Cherry Blue Line CyBo@rd (alternate option)"
+msgstr "Cherry Blue Line CyBo@rd (luân phiên tùy chá»n)"
+
+#: ../rules/base.xml.in.h:153
+msgid "Cherry CyBo@rd USB-Hub"
+msgstr "Cherry CyBo@rd Cái Nối USB"
+
+#: ../rules/base.xml.in.h:154
+msgid "Cherry CyMotion Expert"
+msgstr "Cherry CyMotion Expert"
+
+#: ../rules/base.xml.in.h:155
+msgid "Cherry CyMotion Master Linux"
+msgstr "Cherry CyMotion Master Linux"
+
+#: ../rules/base.xml.in.h:156
+msgid "Cherry CyMotion Master XPress"
+msgstr "Cherry CyMotion Master XPress"
+
+#: ../rules/base.xml.in.h:157
+msgid "Chicony Internet Keyboard"
+msgstr "Bàn phím Internet Chicony"
+
+#: ../rules/base.xml.in.h:158
+msgid "Chicony KB-9885"
+msgstr "Chicony KB-9885"
+
+#: ../rules/base.xml.in.h:159
+msgid "Chicony KU-0108"
+msgstr "Chicony KU-0108"
+
+#: ../rules/base.xml.in.h:160
+msgid "Chicony KU-0420"
+msgstr "Chicony KU-0420"
+
+#: ../rules/base.xml.in.h:161
+msgid "China"
+msgstr "Trung Quốc"
+
+#: ../rules/base.xml.in.h:162
+msgid "Chn"
+msgstr "Chn"
+
+#: ../rules/base.xml.in.h:163
+msgid "Chuvash"
+msgstr "Chu-vasợ"
+
+#: ../rules/base.xml.in.h:164
+msgid "Chuvash Latin"
+msgstr "Chu-vasợ La-tinh"
+
+#: ../rules/base.xml.in.h:165
+msgid "Classic"
+msgstr "Kinh điển"
+
+#: ../rules/base.xml.in.h:166
+msgid "Classic Dvorak"
+msgstr "Dvorak kinh điển"
+
+#: ../rules/base.xml.in.h:167
+msgid "Classic, eliminate dead keys"
+msgstr "Kinh điển, loại trừ phím chết"
+
+#: ../rules/base.xml.in.h:168
+msgid "Classmate PC"
+msgstr "Classmate PC"
+
+#: ../rules/base.xml.in.h:169
+msgid "CloGaelach"
+msgstr "CloGaelach"
+
+#: ../rules/base.xml.in.h:170
+msgid "Colemak"
+msgstr "Colemak"
+
+#: ../rules/base.xml.in.h:171
+msgid "Compaq Easy Access Keyboard"
+msgstr "Bàn phím Truy cập Dễ dàng của Compaq"
+
+#: ../rules/base.xml.in.h:172
+msgid "Compaq Internet Keyboard (13 keys)"
+msgstr "Bàn phím Internet Compaq (13 phím)"
+
+#: ../rules/base.xml.in.h:173
+msgid "Compaq Internet Keyboard (18 keys)"
+msgstr "Bàn phím Internet Compaq (18 phím)"
+
+#: ../rules/base.xml.in.h:174
+msgid "Compaq Internet Keyboard (7 keys)"
+msgstr "Bàn phím Internet Compaq (7 phím)"
+
+#: ../rules/base.xml.in.h:175
+msgid "Compaq iPaq Keyboard"
+msgstr "Bàn phím iPaq Compaq"
+
+#: ../rules/base.xml.in.h:176
+msgid "Compose key position"
+msgstr "Vị trí phím Soạn thảo"
+
+#: ../rules/base.xml.in.h:177
+msgid "Congo, Democratic Republic of the"
+msgstr "Cộng Hoà Dân Chủ Công-gô"
+
+#: ../rules/base.xml.in.h:178
+msgid "Control + Alt + Backspace"
+msgstr "Control + Alt + Backspace"
+
+#: ../rules/base.xml.in.h:179
+msgid "Control is mapped to Alt keys, Alt is mapped to Win keys"
+msgstr "Control ánh xạ tới các phím Alt, Alt ánh xạ tới các phím Win"
+
+#: ../rules/base.xml.in.h:180
+msgid "Control is mapped to Win keys (and the usual Ctrl keys)"
+msgstr "Control ánh xạ tá»›i các phím Win (và các phím Ctrl thÆ°á»ng dùng)"
+
+#: ../rules/base.xml.in.h:181
+msgid "Creative Desktop Wireless 7000"
+msgstr "Creative Desktop Wireless 7000"
+
+#: ../rules/base.xml.in.h:182
+msgid "Crimean Tatar (Dobruca-1 Q)"
+msgstr "Ta-tă Cợ-ri-mia (Dobruca-1 Q)"
+
+#: ../rules/base.xml.in.h:183
+msgid "Crimean Tatar (Dobruca-2 Q)"
+msgstr "Ta-tă Cợ-ri-mia (Dobruca-2 Q)"
+
+#: ../rules/base.xml.in.h:184
+msgid "Crimean Tatar (Turkish Alt-Q)"
+msgstr "Ta-tă Cợ-ri-mia (Thổ Nhĩ Kỳ Alt-Q)"
+
+#: ../rules/base.xml.in.h:185
+msgid "Crimean Tatar (Turkish F)"
+msgstr "Ta-tă Cợ-ri-mia (Thổ Nhĩ Kỳ F)"
+
+#: ../rules/base.xml.in.h:186
+msgid "Crimean Tatar (Turkish Q)"
+msgstr "Ta-tă Cợ-ri-mia (Thổ Nhĩ Kỳ Q)"
+
+#: ../rules/base.xml.in.h:187
+msgid "Croatia"
+msgstr "Cợ-rô-a-ti-a"
+
+#: ../rules/base.xml.in.h:188
+msgid "Ctrl key position"
+msgstr "Vị trí phím Ctrl"
+
+#: ../rules/base.xml.in.h:189
+msgid "Ctrl+Shift"
+msgstr "Ctrl+Shift"
+
+#: ../rules/base.xml.in.h:190
+msgid "Cyrillic"
+msgstr "Ki-rin"
+
+#: ../rules/base.xml.in.h:191
+msgid "Cyrillic with guillemets"
+msgstr "Ki-rin với « chim uria »"
+
+#: ../rules/base.xml.in.h:192
+msgid "Cyrillic, Z and ZHE swapped"
+msgstr "Ki-rin, đổi chỗ Z và ZHE"
+
+#: ../rules/base.xml.in.h:193
+msgid "Cze"
+msgstr "Cze"
+
+#: ../rules/base.xml.in.h:194
+msgid "Czechia"
+msgstr "Séc"
+
+#: ../rules/base.xml.in.h:195
+msgid "DOS"
+msgstr "DOS"
+
+#: ../rules/base.xml.in.h:196
+msgid "DTK2000"
+msgstr "DTK2000"
+
+#: ../rules/base.xml.in.h:197
+msgid "Dead acute"
+msgstr "Chết sắc"
+
+#: ../rules/base.xml.in.h:198
+msgid "Dead grave acute"
+msgstr "Chết huyá»n sắc"
+
+#: ../rules/base.xml.in.h:199
+msgid "Default numeric keypad keys"
+msgstr "Các phím vùng số mặc định"
+
+#: ../rules/base.xml.in.h:200
+msgid "Dell"
+msgstr "Dell"
+
+#: ../rules/base.xml.in.h:201
+msgid "Dell 101-key PC"
+msgstr "Dell PC 101 phím"
+
+#: ../rules/base.xml.in.h:202
+msgid "Dell Laptop/notebook Inspiron 6xxx/8xxx"
+msgstr "Xách tay Dell Inspiron 6xxx/8xxx"
+
+#: ../rules/base.xml.in.h:203
+msgid "Dell Laptop/notebook Precision M series"
+msgstr "Xách tay Dell dãy Precision M"
+
+#: ../rules/base.xml.in.h:204
+msgid "Dell Latitude series laptop"
+msgstr "Xách tay Dell dãy Latitude"
+
+#: ../rules/base.xml.in.h:205
+msgid "Dell Precision M65"
+msgstr "Dell Precision M65"
+
+#: ../rules/base.xml.in.h:206
+msgid "Dell SK-8125"
+msgstr "Dell SK-8125"
+
+#: ../rules/base.xml.in.h:207
+msgid "Dell SK-8135"
+msgstr "Dell SK-8135"
+
+#: ../rules/base.xml.in.h:208
+msgid "Dell USB Multimedia Keyboard"
+msgstr "Bàn phím đa phương tiện USB Dell"
+
+#: ../rules/base.xml.in.h:209
+msgid "Denmark"
+msgstr "Äan Mạch"
+
+#: ../rules/base.xml.in.h:210
+msgid "Deu"
+msgstr "Deu"
+
+#: ../rules/base.xml.in.h:211
+msgid "Dexxa Wireless Desktop Keyboard"
+msgstr "Bàn phím Không dây Dexxa cho Desktop"
+
+#: ../rules/base.xml.in.h:212
+msgid "Diamond 9801 / 9802 series"
+msgstr "Sê ri Diamond 9801 / 9802"
+
+#: ../rules/base.xml.in.h:213
+msgid "Dnk"
+msgstr "Dnk"
+
+#: ../rules/base.xml.in.h:214
+msgid "Dvorak"
+msgstr "Dvorak"
+
+#: ../rules/base.xml.in.h:215
+msgid "Dvorak (UK Punctuation)"
+msgstr "Dvorak (dấu chấm câu Quốc Anh)"
+
+#: ../rules/base.xml.in.h:216
+msgid "Dvorak alternative international (no dead keys)"
+msgstr "Dvorak quốc tế tương đương (không có phím chết)"
+
+#: ../rules/base.xml.in.h:217
+msgid "Dvorak international (with dead keys)"
+msgstr "Dvorak quốc tế (với phím chết)"
+
+#: ../rules/base.xml.in.h:218
+msgid "Dvorak, Polish quotes on key 1"
+msgstr "Dvorak, dấu ngoặc tiếng Ba Lan trên phím 1"
+
+#: ../rules/base.xml.in.h:219
+msgid "Dvorak, Polish quotes on quotemark key"
+msgstr "Dvorak, dấu ngoặc Polish trên phím đánh dấu ngoặc"
+
+#: ../rules/base.xml.in.h:220
+msgid "E"
+msgstr "E"
+
+#: ../rules/base.xml.in.h:221
+msgid "Eastern"
+msgstr "Vùng Äông"
+
+#: ../rules/base.xml.in.h:222
+msgid "Eliminate dead keys"
+msgstr "Phím chết loại trừ"
+
+#: ../rules/base.xml.in.h:223
+msgid "Enable extra typographic characters"
+msgstr "Bật thêm ký tự thuật in máy"
+
+#: ../rules/base.xml.in.h:224
+msgid "English"
+msgstr "Anh"
+
+#: ../rules/base.xml.in.h:225
+msgid "English (USA International)"
+msgstr "Anh (Mỹ quốc tế)"
+
+#: ../rules/base.xml.in.h:226
+msgid "English (USA Macintosh)"
+msgstr "Anh (Mỹ Macintosh)"
+
+#: ../rules/base.xml.in.h:227
+msgid "Ennyah DKB-1008"
+msgstr "Ennyah DKB-1008"
+
+#: ../rules/base.xml.in.h:228
+msgid "Enter on keypad"
+msgstr "Enter trên vùng phím"
+
+#: ../rules/base.xml.in.h:229
+msgid "Epo"
+msgstr "Epo"
+
+#: ../rules/base.xml.in.h:230
+msgid "Ergonomic"
+msgstr "Tối ưu nhân tố"
+
+#: ../rules/base.xml.in.h:231
+msgid "Esp"
+msgstr "Esp"
+
+#: ../rules/base.xml.in.h:232
+msgid "Esperanto"
+msgstr "Ét-pe-ran-tô"
+
+#: ../rules/base.xml.in.h:233
+msgid "Est"
+msgstr "Est"
+
+#: ../rules/base.xml.in.h:234
+msgid "Estonia"
+msgstr "Ex-tô-ni-a"
+
+#: ../rules/base.xml.in.h:235
+msgid "Eth"
+msgstr "Eth"
+
+#: ../rules/base.xml.in.h:236
+msgid "Ethiopia"
+msgstr "Ê-ti-ô-pi"
+
+#: ../rules/base.xml.in.h:237
+msgid "Everex STEPnote"
+msgstr "Everex STEPnote"
+
+#: ../rules/base.xml.in.h:238
+msgid "Ewe"
+msgstr "Ewe"
+
+#: ../rules/base.xml.in.h:239
+msgid "Extended"
+msgstr "Mở rộng"
+
+#: ../rules/base.xml.in.h:240
+msgid "Extended - Winkeys"
+msgstr "Mở rộng — Winkeys"
+
+#: ../rules/base.xml.in.h:241
+msgid "Extended Backslash"
+msgstr "Gạch chéo ngược Mở rộng"
+
+#: ../rules/base.xml.in.h:242
+msgid "F-letter (F) variant"
+msgstr "Phương án chữ cái F (F)"
+
+#: ../rules/base.xml.in.h:243
+msgid "FL90"
+msgstr "FL90"
+
+#: ../rules/base.xml.in.h:244
+msgid "Faroe Islands"
+msgstr "Quần Äảo Pha-rô"
+
+#: ../rules/base.xml.in.h:245
+msgid "Fin"
+msgstr "Fin"
+
+#: ../rules/base.xml.in.h:246
+msgid "Finland"
+msgstr "Phần Lan"
+
+#. This assumes the KP_ abstract symbols are actually useful for some apps
+#. The description needs to be rewritten
+#: ../rules/base.xml.in.h:249
+msgid "Four-level key with abstract separators"
+msgstr "Phím bốn bậc có bộ phân cách ảo"
+
+#: ../rules/base.xml.in.h:250
+msgid "Four-level key with comma"
+msgstr "Phím bốn bậc có dấu phẩy"
+
+#: ../rules/base.xml.in.h:251
+msgid "Four-level key with dot"
+msgstr "Phím bốn bậc có chấm"
+
+#: ../rules/base.xml.in.h:252
+msgid "Four-level key with dot, latin-9 restriction"
+msgstr "Phím bốn bậc có chấm, sự hạn chế latin-9"
+
+#: ../rules/base.xml.in.h:253
+msgid "Four-level key with momayyez"
+msgstr "Phím bốn bậc có momayyez"
+
+#: ../rules/base.xml.in.h:254
+msgid "Fra"
+msgstr "Fra"
+
+#: ../rules/base.xml.in.h:255
+msgid "France"
+msgstr "Pháp"
+
+#: ../rules/base.xml.in.h:256
+msgid "Français (France Alternative)"
+msgstr "Pháp (Pháp tương đương)"
+
+#: ../rules/base.xml.in.h:257
+msgid "French"
+msgstr "Pháp"
+
+#: ../rules/base.xml.in.h:258
+msgid "French (Macintosh)"
+msgstr "Pháp (Macintosh)"
+
+#: ../rules/base.xml.in.h:259
+msgid "French (legacy)"
+msgstr "Pháp (di sản)"
+
+#: ../rules/base.xml.in.h:260
+msgid "French Dvorak"
+msgstr "Pháp Dvorak"
+
+#: ../rules/base.xml.in.h:261
+msgid "French, Sun dead keys"
+msgstr "Pháp, phím chết Sun"
+
+#: ../rules/base.xml.in.h:262
+msgid "French, eliminate dead keys"
+msgstr "Pháp, phím chết loại trừ"
+
+#: ../rules/base.xml.in.h:263
+msgid "Fro"
+msgstr "Fro"
+
+#: ../rules/base.xml.in.h:264
+msgid "Fujitsu-Siemens Computers AMILO laptop"
+msgstr "Máy tính xách tay AMILO Fujitsu-Siemens"
+
+#: ../rules/base.xml.in.h:265
+msgid "Fula"
+msgstr "Fula"
+
+#: ../rules/base.xml.in.h:266
+msgid "GBr"
+msgstr "GBr"
+
+#: ../rules/base.xml.in.h:267
+msgid "GILLBT"
+msgstr "GILLBT"
+
+#: ../rules/base.xml.in.h:268
+msgid "Ga"
+msgstr "Ga"
+
+#: ../rules/base.xml.in.h:269
+msgid "Generic 101-key PC"
+msgstr "PC chung 101 phím"
+
+#: ../rules/base.xml.in.h:270
+msgid "Generic 102-key (Intl) PC"
+msgstr "PC chung 102 phím (Intl)"
+
+#: ../rules/base.xml.in.h:271
+msgid "Generic 104-key PC"
+msgstr "PC chung 104 phím"
+
+#: ../rules/base.xml.in.h:272
+msgid "Generic 105-key (Intl) PC"
+msgstr "PC chung 105 phím (Intl)"
+
+# Name: don't translate/Tên: đừng dịch
+#: ../rules/base.xml.in.h:273
+msgid "Genius Comfy KB-12e"
+msgstr "Genius Comfy KB-12e"
+
+#: ../rules/base.xml.in.h:274
+msgid "Genius Comfy KB-16M / Genius MM Keyboard KWD-910"
+msgstr "Genius Tiện lợi KB-16M / Bàn phím Genius MM KWD-910"
+
+#: ../rules/base.xml.in.h:275
+msgid "Genius Comfy KB-21e-Scroll"
+msgstr "Genius Comfy KB-21e-Scroll"
+
+# Name: don't translate/Tên: đừng dịch
+#: ../rules/base.xml.in.h:276
+msgid "Genius KB-19e NB"
+msgstr "Genius KB-19e NB"
+
+# Name: don't translate/Tên: đừng dịch
+#: ../rules/base.xml.in.h:277
+msgid "Genius KKB-2050HS"
+msgstr "Genius KKB-2050HS"
+
+#: ../rules/base.xml.in.h:278
+msgid "Geo"
+msgstr "Geo"
+
+#: ../rules/base.xml.in.h:279
+msgid "Georgia"
+msgstr "Gi-oa-gi-a"
+
+#: ../rules/base.xml.in.h:280
+msgid "Georgian"
+msgstr "Gi-oa-gi-a"
+
+#: ../rules/base.xml.in.h:281
+msgid "Georgian AZERTY Tskapo"
+msgstr "Gi-oa-gi-a AZERTY Tskapo"
+
+#: ../rules/base.xml.in.h:282
+msgid "German (Macintosh)"
+msgstr "Äức (Macintosh)"
+
+#: ../rules/base.xml.in.h:283
+msgid "German, Sun dead keys"
+msgstr "Äức, phím chết Sun"
+
+#: ../rules/base.xml.in.h:284
+msgid "German, eliminate dead keys"
+msgstr "Äức, phím chết loại trừ"
+
+#: ../rules/base.xml.in.h:285
+msgid "Germany"
+msgstr "Äức"
+
+#: ../rules/base.xml.in.h:286
+msgid "Gha"
+msgstr "Gha"
+
+#: ../rules/base.xml.in.h:287
+msgid "Ghana"
+msgstr "Gha-na"
+
+#: ../rules/base.xml.in.h:288
+msgid "Gin"
+msgstr "Gin"
+
+#: ../rules/base.xml.in.h:289
+msgid "Grc"
+msgstr "Grc"
+
+#: ../rules/base.xml.in.h:290
+msgid "Greece"
+msgstr "Hy Lạp"
+
+#: ../rules/base.xml.in.h:291
+msgid "Guinea"
+msgstr "Ghi-nê"
+
+#: ../rules/base.xml.in.h:292
+msgid "Gujarati"
+msgstr "Gu-gia-ra-ti"
+
+#: ../rules/base.xml.in.h:293
+msgid "Gurmukhi"
+msgstr "Gổ-mu-khi"
+
+#: ../rules/base.xml.in.h:294
+msgid "Gurmukhi Jhelum"
+msgstr "Gổ-mu-khi Jhelum"
+
+#: ../rules/base.xml.in.h:295
+msgid "Gyration"
+msgstr "Sự chuyển hồi"
+
+#: ../rules/base.xml.in.h:296
+msgid "Happy Hacking Keyboard"
+msgstr "Bàn phím Happy Hacking"
+
+#: ../rules/base.xml.in.h:297
+msgid "Happy Hacking Keyboard for Mac"
+msgstr "Bàn phím Happy Hacking cho Mac"
+
+#: ../rules/base.xml.in.h:298
+msgid "Hausa"
+msgstr "Hau-xa"
+
+#: ../rules/base.xml.in.h:299
+msgid "Hewlett-Packard Internet Keyboard"
+msgstr "Bàn phím Internet Hewlett-Packard"
+
+#: ../rules/base.xml.in.h:300
+msgid "Hewlett-Packard Mini 110 Notebook"
+msgstr "Hewlett-Packard Mini 110 Notebook"
+
+#: ../rules/base.xml.in.h:301
+msgid "Hewlett-Packard Omnibook 500 FA"
+msgstr "Hewlett-Packard Omnibook 500 FA"
+
+#: ../rules/base.xml.in.h:302
+msgid "Hewlett-Packard Omnibook 5xx"
+msgstr "Hewlett-Packard Omnibook 5xx"
+
+#: ../rules/base.xml.in.h:303
+msgid "Hewlett-Packard Omnibook 6000/6100"
+msgstr "Hewlett-Packard Omnibook 6000/6100"
+
+#: ../rules/base.xml.in.h:304
+msgid "Hewlett-Packard Omnibook XE3 GC"
+msgstr "Hewlett-Packard Omnibook XE3 GC"
+
+#: ../rules/base.xml.in.h:305
+msgid "Hewlett-Packard Omnibook XE3 GF"
+msgstr "Hewlett-Packard Omnibook XE3 GF"
+
+#: ../rules/base.xml.in.h:306
+msgid "Hewlett-Packard Omnibook XT1000"
+msgstr "Hewlett-Packard Omnibook XT1000"
+
+#: ../rules/base.xml.in.h:307
+msgid "Hewlett-Packard Pavilion ZT11xx"
+msgstr "Hewlett-Packard Pavilion ZT11xx"
+
+#: ../rules/base.xml.in.h:308
+msgid "Hewlett-Packard Pavilion dv5"
+msgstr "Hewlett-Packard Pavilion dv5"
+
+#: ../rules/base.xml.in.h:309
+msgid "Hewlett-Packard SK-250x Multimedia Keyboard"
+msgstr "Bàn phím phim nhạc Hewlett-Packard SK-250x"
+
+#: ../rules/base.xml.in.h:310
+msgid "Hewlett-Packard nx9020"
+msgstr "Hewlett-Packard nx9020"
+
+#: ../rules/base.xml.in.h:311
+msgid "Hexadecimal"
+msgstr "Thập lục"
+
+#: ../rules/base.xml.in.h:312
+msgid "Hindi Bolnagri"
+msgstr "Hin-Ä‘i Bolnagri"
+
+#: ../rules/base.xml.in.h:313
+msgid "Hindi Wx"
+msgstr "Hin-Ä‘i Wx"
+
+#: ../rules/base.xml.in.h:314
+msgid "Homophonic"
+msgstr "Cùng một chủ điệu"
+
+#: ../rules/base.xml.in.h:315
+msgid "Honeywell Euroboard"
+msgstr "Honeywell Euroboard"
+
+#: ../rules/base.xml.in.h:316
+msgid "Hrv"
+msgstr "Hrv"
+
+#: ../rules/base.xml.in.h:317
+msgid "Hun"
+msgstr "Hun"
+
+#: ../rules/base.xml.in.h:318
+msgid "Hungary"
+msgstr "Hun-ga-ri"
+
+#: ../rules/base.xml.in.h:319
+msgid "Hyper is mapped to Win-keys"
+msgstr "Hyper ánh xạ tới các phím Win"
+
+#: ../rules/base.xml.in.h:320
+msgid "IBM (LST 1205-92)"
+msgstr "IBM (LST 1205-92)"
+
+#: ../rules/base.xml.in.h:321
+msgid "IBM Rapid Access"
+msgstr "Truy cập nhanh IBM"
+
+#: ../rules/base.xml.in.h:322
+msgid "IBM Rapid Access II"
+msgstr "Truy cập nhanh IBM II"
+
+#: ../rules/base.xml.in.h:323
+msgid "IBM Space Saver"
+msgstr "IBM Space Saver"
+
+#: ../rules/base.xml.in.h:324
+msgid "IBM ThinkPad 560Z/600/600E/A22E"
+msgstr "IBM ThinkPad 560Z/600/600E/A22E"
+
+#: ../rules/base.xml.in.h:325
+msgid "IBM ThinkPad R60/T60/R61/T61"
+msgstr "IBM ThinkPad R60/T60/R61/T61"
+
+#: ../rules/base.xml.in.h:326
+msgid "IBM ThinkPad Z60m/Z60t/Z61m/Z61t"
+msgstr "IBM ThinkPad Z60m/Z60t/Z61m/Z61t"
+
+#: ../rules/base.xml.in.h:327
+msgid "ISO Alternate"
+msgstr "ISO Xen kẽ"
+
+#: ../rules/base.xml.in.h:328
+msgid "Iceland"
+msgstr "Băng Äảo"
+
+#: ../rules/base.xml.in.h:329
+msgid "Igbo"
+msgstr "Ig-bô"
+
+#: ../rules/base.xml.in.h:330
+msgid "Include dead tilde"
+msgstr "Bao gồm dấu sóng chết"
+
+#: ../rules/base.xml.in.h:331
+msgid "Ind"
+msgstr "Ind"
+
+#: ../rules/base.xml.in.h:332
+msgid "India"
+msgstr "Ấn Äá»™"
+
+#: ../rules/base.xml.in.h:333
+msgid "International (AltGr dead keys)"
+msgstr "Quốc tế (với phím chết AltGr)"
+
+#: ../rules/base.xml.in.h:334
+msgid "International (with dead keys)"
+msgstr "Quốc tế (với phím chết)"
+
+#: ../rules/base.xml.in.h:335
+msgid "Inuktitut"
+msgstr "I-nukh-ti-tu-th"
+
+#: ../rules/base.xml.in.h:336 ../rules/base.extras.xml.in.h:8
+msgid "Iran"
+msgstr "I-rắn"
+
+#: ../rules/base.xml.in.h:337
+msgid "Iraq"
+msgstr "I-rắc"
+
+#: ../rules/base.xml.in.h:338
+msgid "Ireland"
+msgstr "Ãi-nhÄ©-lan"
+
+#: ../rules/base.xml.in.h:339
+msgid "Irl"
+msgstr "Irl"
+
+#: ../rules/base.xml.in.h:340
+msgid "Irn"
+msgstr "Irn"
+
+#: ../rules/base.xml.in.h:341
+msgid "Irq"
+msgstr "Irq"
+
+#: ../rules/base.xml.in.h:342
+msgid "Isl"
+msgstr "Isl"
+
+#: ../rules/base.xml.in.h:343
+msgid "Isr"
+msgstr "Isr"
+
+#: ../rules/base.xml.in.h:344
+msgid "Israel"
+msgstr "Do Thái"
+
+#: ../rules/base.xml.in.h:345
+msgid "Ita"
+msgstr "Ita"
+
+#: ../rules/base.xml.in.h:346
+msgid "Italy"
+msgstr "Ã"
+
+#: ../rules/base.xml.in.h:347
+msgid "Japan"
+msgstr "Nhật Bản"
+
+#: ../rules/base.xml.in.h:348
+msgid "Japan (PC-98xx Series)"
+msgstr "Nhật (dãy PC-98xx)"
+
+#: ../rules/base.xml.in.h:349
+msgid "Japanese keyboard options"
+msgstr "Tùy chá»n bàn phím tiếng Nhật"
+
+#: ../rules/base.xml.in.h:350
+msgid "Jpn"
+msgstr "Jpn"
+
+#: ../rules/base.xml.in.h:351
+msgid "Kalmyk"
+msgstr "Kalmyk"
+
+#: ../rules/base.xml.in.h:352
+msgid "Kana"
+msgstr "Kana"
+
+#: ../rules/base.xml.in.h:353
+msgid "Kana Lock key is locking"
+msgstr "Phím Kana Lock sẽ khoá"
+
+#: ../rules/base.xml.in.h:354
+msgid "Kannada"
+msgstr "Kannada"
+
+#: ../rules/base.xml.in.h:355
+msgid "Kashubian"
+msgstr "Kha-su-bi"
+
+#: ../rules/base.xml.in.h:356
+msgid "Kaz"
+msgstr "Kaz"
+
+#: ../rules/base.xml.in.h:357
+msgid "Kazakh with Russian"
+msgstr "Kha-xắc với tiếng Nga"
+
+#: ../rules/base.xml.in.h:358
+msgid "Kazakhstan"
+msgstr "Kha-xắc-x-tanh"
+
+#: ../rules/base.xml.in.h:359
+msgid "Ken"
+msgstr "Ken"
+
+#: ../rules/base.xml.in.h:360
+msgid "Kenya"
+msgstr "Khi-nia"
+
+#: ../rules/base.xml.in.h:361
+msgid "Key sequence to kill the X server"
+msgstr "Dãy phím để giết trình phục vụ X"
+
+#: ../rules/base.xml.in.h:362
+msgid "Key to choose 3rd level"
+msgstr "Phím để chá»n cấp ba"
+
+#: ../rules/base.xml.in.h:363
+msgid "Key to choose 5th level"
+msgstr "Phím để chá»n cấp 5"
+
+#: ../rules/base.xml.in.h:364
+msgid "Key(s) to change layout"
+msgstr "(Các) phím để chuyển đổi bố trí"
+
+#: ../rules/base.xml.in.h:365
+msgid "Keytronic FlexPro"
+msgstr "Keytronic FlexPro"
+
+#: ../rules/base.xml.in.h:366
+msgid "Kgz"
+msgstr "Kgz"
+
+#: ../rules/base.xml.in.h:367
+msgid "Khm"
+msgstr "Khm"
+
+#: ../rules/base.xml.in.h:368
+msgid "Kikuyu"
+msgstr "Ki-ku-yu"
+
+#: ../rules/base.xml.in.h:369
+msgid "Kinesis"
+msgstr "Kinesis"
+
+#: ../rules/base.xml.in.h:370
+msgid "Komi"
+msgstr "Komi"
+
+#: ../rules/base.xml.in.h:371
+msgid "Kor"
+msgstr "Kor"
+
+#: ../rules/base.xml.in.h:372
+msgid "Korea, Republic of"
+msgstr "Cộng Hoà Nam Hàn"
+
+#: ../rules/base.xml.in.h:373
+msgid "Ktunaxa"
+msgstr "Ktunaxa"
+
+#: ../rules/base.xml.in.h:374
+msgid "Kurdish, (F)"
+msgstr "Kuổ-đít (F)"
+
+#: ../rules/base.xml.in.h:375
+msgid "Kurdish, Arabic-Latin"
+msgstr "Kuổ-đít, A Rập/La-tinh"
+
+#: ../rules/base.xml.in.h:376
+msgid "Kurdish, Latin Alt-Q"
+msgstr "Kuổ-đít, La-tinh Alt-Q"
+
+#: ../rules/base.xml.in.h:377
+msgid "Kurdish, Latin Q"
+msgstr "Kuổ-đít, La-tinh Q"
+
+#: ../rules/base.xml.in.h:378
+msgid "Kyrgyzstan"
+msgstr "Kyr-gi-x-tanh"
+
+#: ../rules/base.xml.in.h:379
+msgid "LAm"
+msgstr "LAm"
+
+#: ../rules/base.xml.in.h:380
+msgid "LEKP"
+msgstr "LEKP"
+
+#: ../rules/base.xml.in.h:381
+msgid "LEKPa"
+msgstr "LEKPa"
+
+#: ../rules/base.xml.in.h:382
+msgid "Lao"
+msgstr "Lào"
+
+#: ../rules/base.xml.in.h:383
+msgid "Laos"
+msgstr "Lào"
+
+#: ../rules/base.xml.in.h:384
+msgid "Laptop/notebook Compaq (eg. Armada) Laptop Keyboard"
+msgstr "Bàn phím nhá» gá»n cho máy xách tay/notebook Compaq (ví dụ Armada)"
+
+#: ../rules/base.xml.in.h:385
+msgid "Laptop/notebook Compaq (eg. Presario) Internet Keyboard"
+msgstr "Bàn phím Internet cho máy xách tay/notebook Compaq (ví dụ Presario)"
+
+#: ../rules/base.xml.in.h:386
+msgid "Laptop/notebook eMachines m68xx"
+msgstr "Xách tay eMachines m68xx"
+
+#: ../rules/base.xml.in.h:387
+msgid "Latin"
+msgstr "La-tinh"
+
+#: ../rules/base.xml.in.h:388
+msgid "Latin American"
+msgstr "La-tinh Mỹ"
+
+#: ../rules/base.xml.in.h:389
+msgid "Latin Unicode"
+msgstr "La-tinh Unicode"
+
+#: ../rules/base.xml.in.h:390
+msgid "Latin Unicode qwerty"
+msgstr "La-tinh Unicode qwerty"
+
+#: ../rules/base.xml.in.h:391
+msgid "Latin qwerty"
+msgstr "La-tinh qwerty"
+
+#: ../rules/base.xml.in.h:392
+msgid "Latin unicode"
+msgstr "La-tinh Unicode"
+
+#: ../rules/base.xml.in.h:393
+msgid "Latin unicode qwerty"
+msgstr "La-tinh Unicode QWERTY"
+
+#: ../rules/base.xml.in.h:394
+msgid "Latin with guillemets"
+msgstr "La-tinh với « chim uria »"
+
+#: ../rules/base.xml.in.h:395
+msgid "Latvia"
+msgstr "Lát-via"
+
+#: ../rules/base.xml.in.h:396
+msgid "Layout toggle on multiply/divide key"
+msgstr "Bật/tắt bố trí với phím nhân/chia"
+
+#: ../rules/base.xml.in.h:397
+msgid "Left Alt"
+msgstr "Alt trái"
+
+#: ../rules/base.xml.in.h:398
+msgid "Left Alt (while pressed)"
+msgstr "Alt trái (trong khi bấm)"
+
+#: ../rules/base.xml.in.h:399
+msgid "Left Alt is swapped with Left Win"
+msgstr "Alt bên trái được trao đổi với phím Win bên trái"
+
+#: ../rules/base.xml.in.h:400
+msgid "Left Ctrl"
+msgstr "Ctrl trái"
+
+#: ../rules/base.xml.in.h:401
+msgid "Left Ctrl (to first layout), Right Ctrl (to last layout)"
+msgstr "Ctrl trái (tới bố trí đầu tiên), Ctrl phải (tới bố trí cuối cùng)"
+
+#: ../rules/base.xml.in.h:402
+msgid "Left Ctrl+Left Shift"
+msgstr "Ctrl trái+Shift trái"
+
+#: ../rules/base.xml.in.h:403
+msgid "Left Shift"
+msgstr "Shift trái"
+
+#: ../rules/base.xml.in.h:404
+msgid "Left Win"
+msgstr "Win trái"
+
+#: ../rules/base.xml.in.h:405
+msgid "Left Win (to first layout), Right Win/Menu (to last layout)"
+msgstr "Win trái (tới bố trí đầu tiên), Win phải/Trình đơn (tới bố trí cuối cùng)"
+
+#: ../rules/base.xml.in.h:406
+msgid "Left Win (while pressed)"
+msgstr "Win trái (trong khi bấm)"
+
+#: ../rules/base.xml.in.h:407
+msgid "Left Win chooses 5th level, locks when pressed together with another 5th-level-chooser"
+msgstr "Win trái chá»n cấp 5, khoá khi bấm nhau vá»›i má»™t bá»™ chá»n năm 5 khác"
+
+#: ../rules/base.xml.in.h:408
+msgid "Left Win chooses 5th level, locks when pressed together with another 5th-level-chooser, one press releases the lock"
+msgstr "Win trái chá»n cấp 5, khoá khi bấm nhau vá»›i má»™t bá»™ chá»n năm 5 khác, má»™t cú bấm cÅ©ng buông khoá"
+
+#: ../rules/base.xml.in.h:409
+msgid "Left hand"
+msgstr "Thuận tay trái"
+
+#: ../rules/base.xml.in.h:410
+msgid "Left handed Dvorak"
+msgstr "Dvorak thuận tay trái"
+
+#: ../rules/base.xml.in.h:411
+msgid "Legacy"
+msgstr "Thừa tự"
+
+#: ../rules/base.xml.in.h:412
+msgid "Legacy Wang 724"
+msgstr "Wang 724 thừa tự"
+
+#. Actually, with KP_SEPARATOR, as the old keypad(comma)
+#: ../rules/base.xml.in.h:414
+msgid "Legacy key with comma"
+msgstr "Phím thừa tự có dấu phẩy"
+
+#: ../rules/base.xml.in.h:415
+msgid "Legacy key with dot"
+msgstr "Phím thừa tự có chấm"
+
+#: ../rules/base.xml.in.h:416
+msgid "Lithuania"
+msgstr "Li-tu-a-ni"
+
+#: ../rules/base.xml.in.h:417
+msgid "Lka"
+msgstr "Lka"
+
+#: ../rules/base.xml.in.h:418
+msgid "Logitech Access Keyboard"
+msgstr "Bàn phím Truy cập Logitech"
+
+#: ../rules/base.xml.in.h:419
+msgid "Logitech Cordless Desktop"
+msgstr "Logitech Cordless Desktop"
+
+#: ../rules/base.xml.in.h:420
+msgid "Logitech Cordless Desktop (alternate option)"
+msgstr "Logitech Cordless Desktop (tùy chá»n thay thế)"
+
+#: ../rules/base.xml.in.h:421
+msgid "Logitech Cordless Desktop EX110"
+msgstr "Logitech Cordless Desktop EX110"
+
+#: ../rules/base.xml.in.h:422
+msgid "Logitech Cordless Desktop LX-300"
+msgstr "Logitech Cordless Desktop LX-300"
+
+#: ../rules/base.xml.in.h:423
+msgid "Logitech Cordless Desktop Navigator"
+msgstr "Logitech Cordless Desktop Navigator"
+
+#: ../rules/base.xml.in.h:424
+msgid "Logitech Cordless Desktop Optical"
+msgstr "Logitech Cordless Desktop Optical"
+
+#: ../rules/base.xml.in.h:425
+msgid "Logitech Cordless Desktop Pro (alternate option 2)"
+msgstr "Logitech Cordless Desktop Pro (luân phiên tùy chá»n 2)"
+
+#: ../rules/base.xml.in.h:426
+msgid "Logitech Cordless Desktop iTouch"
+msgstr "Logitech Cordless Desktop iTouch"
+
+#: ../rules/base.xml.in.h:427
+msgid "Logitech Cordless Freedom/Desktop Navigator"
+msgstr "Logitech Cordless Freedom/Desktop Navigator"
+
+#: ../rules/base.xml.in.h:428
+msgid "Logitech G15 extra keys via G15daemon"
+msgstr "Logitech G15 các phím thêm thông qua G15daemon"
+
+#: ../rules/base.xml.in.h:429
+msgid "Logitech Generic Keyboard"
+msgstr "Bàn phím chung Logitech"
+
+#: ../rules/base.xml.in.h:430
+msgid "Logitech Internet 350 Keyboard"
+msgstr "Bàn phím Internet Logitech 350"
+
+#: ../rules/base.xml.in.h:431
+msgid "Logitech Internet Keyboard"
+msgstr "Bàn phím Internet Logitech"
+
+#: ../rules/base.xml.in.h:432
+msgid "Logitech Internet Navigator Keyboard"
+msgstr "Bàn phím Logitech Internet Navigator"
+
+#: ../rules/base.xml.in.h:433
+msgid "Logitech Media Elite Keyboard"
+msgstr "Bàn phím Logitech Media Elite"
+
+#: ../rules/base.xml.in.h:434
+msgid "Logitech Ultra-X Cordless Media Desktop Keyboard"
+msgstr "Bàn phím Logitech Ultra-X Cordless Media Desktop"
+
+#: ../rules/base.xml.in.h:435
+msgid "Logitech Ultra-X Keyboard"
+msgstr "Bàn phím Logitech Ultra-X"
+
+#: ../rules/base.xml.in.h:436
+msgid "Logitech diNovo Edge Keyboard"
+msgstr "Bàn phím Logitech diNovo Edge"
+
+#: ../rules/base.xml.in.h:437
+msgid "Logitech diNovo Keyboard"
+msgstr "Bàn phím Logitech diNovo"
+
+#: ../rules/base.xml.in.h:438
+msgid "Logitech iTouch"
+msgstr "Logitech iTouch"
+
+#: ../rules/base.xml.in.h:439
+msgid "Logitech iTouch Cordless Keyboard (model Y-RB6)"
+msgstr "Bàn phím Không dây Logitech iTouch (mẫu mã Y-RB6)"
+
+#: ../rules/base.xml.in.h:440
+msgid "Logitech iTouch Internet Navigator Keyboard SE"
+msgstr "Bàn phím Logitech iTouch Internet Navigator SE"
+
+#: ../rules/base.xml.in.h:441
+msgid "Logitech iTouch Internet Navigator Keyboard SE (USB)"
+msgstr "Bàn phím Logitech iTouch Internet Navigator SE (USB)"
+
+#: ../rules/base.xml.in.h:442
+msgid "Lower Sorbian"
+msgstr "Xoa-bi Thấp"
+
+#: ../rules/base.xml.in.h:443
+msgid "Lower Sorbian (qwertz)"
+msgstr "Xoa-bi Thấp (qwertz)"
+
+#: ../rules/base.xml.in.h:444
+msgid "Ltu"
+msgstr "Ltu"
+
+#: ../rules/base.xml.in.h:445
+msgid "Lva"
+msgstr "Lva"
+
+#: ../rules/base.xml.in.h:446
+msgid "MESS"
+msgstr "MESS"
+
+#: ../rules/base.xml.in.h:447
+msgid "MNE"
+msgstr "MNE"
+
+#: ../rules/base.xml.in.h:448
+msgid "MacBook/MacBook Pro"
+msgstr "MacBook/MacBook Pro"
+
+#: ../rules/base.xml.in.h:449
+msgid "MacBook/MacBook Pro (Intl)"
+msgstr "MacBook/MacBook Pro (quốc tế)"
+
+#: ../rules/base.xml.in.h:450
+msgid "Macedonia"
+msgstr "Ma-xê-đô-ni-a"
+
+#: ../rules/base.xml.in.h:451
+msgid "Macintosh"
+msgstr "Macintosh"
+
+#: ../rules/base.xml.in.h:452
+msgid "Macintosh (International)"
+msgstr "Macintosh (Quốc tế)"
+
+#: ../rules/base.xml.in.h:453
+msgid "Macintosh Old"
+msgstr "Macintosh CÅ©"
+
+#: ../rules/base.xml.in.h:454
+msgid "Macintosh, Sun dead keys"
+msgstr "Macintosh, phím chết Sun"
+
+#: ../rules/base.xml.in.h:455
+msgid "Macintosh, eliminate dead keys"
+msgstr "Macintosh, phím chết loại trừ"
+
+#: ../rules/base.xml.in.h:456
+msgid "Make Caps Lock an additional Backspace"
+msgstr "Äặt CapsLock làm má»™t phím Xoá lùi bổ sung"
+
+#: ../rules/base.xml.in.h:457
+msgid "Make Caps Lock an additional Ctrl"
+msgstr "Äặt CapsLock làm má»™t phím Ctrl bổ sung"
+
+#: ../rules/base.xml.in.h:458
+msgid "Make Caps Lock an additional ESC"
+msgstr "Äặt CapsLock làm má»™t phím ESC bổ sung"
+
+#: ../rules/base.xml.in.h:459
+msgid "Make Caps Lock an additional Hyper"
+msgstr "Äặt CapsLock làm má»™t phím Hyper bổ sung"
+
+#: ../rules/base.xml.in.h:460
+msgid "Make Caps Lock an additional Num Lock"
+msgstr "Äặt CapsLock làm má»™t phím NumLock bổ sung"
+
+#: ../rules/base.xml.in.h:461
+msgid "Make Caps Lock an additional Super"
+msgstr "Äặt CapsLock làm má»™t phím Super bổ sung"
+
+#: ../rules/base.xml.in.h:462
+msgid "Malayalam"
+msgstr "Malayalam"
+
+#: ../rules/base.xml.in.h:463
+msgid "Malayalam Lalitha"
+msgstr "Malayalam Lalitha"
+
+#: ../rules/base.xml.in.h:464
+msgid "Maldives"
+msgstr "Man-đi-vơ-xợ"
+
+#: ../rules/base.xml.in.h:465
+msgid "Mali"
+msgstr "Ma-li"
+
+#: ../rules/base.xml.in.h:466
+msgid "Malta"
+msgstr "Man-tợ"
+
+#: ../rules/base.xml.in.h:467
+msgid "Maltese keyboard with US layout"
+msgstr "Bàn phím Man-tợ có bố trí Mỹ"
+
+#: ../rules/base.xml.in.h:468
+msgid "Mao"
+msgstr "Mao"
+
+#: ../rules/base.xml.in.h:469
+msgid "Maori"
+msgstr "Mao-ri"
+
+#: ../rules/base.xml.in.h:470
+msgid "Mdv"
+msgstr "Mdv"
+
+#: ../rules/base.xml.in.h:471
+msgid "Memorex MX1998"
+msgstr "Memorex MX1998"
+
+#: ../rules/base.xml.in.h:472
+msgid "Memorex MX2500 EZ-Access Keyboard"
+msgstr "Bàn phím Memorex MX2500 EZ-Access"
+
+#: ../rules/base.xml.in.h:473
+msgid "Memorex MX2750"
+msgstr "Memorex MX2750"
+
+#: ../rules/base.xml.in.h:474
+msgid "Menu"
+msgstr "Trình đơn"
+
+#: ../rules/base.xml.in.h:475
+msgid "Meta is mapped to Left Win"
+msgstr "Meta ánh xạ tới Win trái"
+
+#: ../rules/base.xml.in.h:476
+msgid "Meta is mapped to Win keys"
+msgstr "Meta ánh xạ tới các phím Win"
+
+#: ../rules/base.xml.in.h:477
+msgid "Microsoft Comfort Curve Keyboard 2000"
+msgstr "Microsoft Comfort Curve Keyboard 2000"
+
+#: ../rules/base.xml.in.h:478
+msgid "Microsoft Internet Keyboard"
+msgstr "Bàn phím Internet Microsoft"
+
+#: ../rules/base.xml.in.h:479
+msgid "Microsoft Internet Keyboard Pro, Swedish"
+msgstr "Bàn phím Internet Microsoft Pro, Thụy Äiển"
+
+#: ../rules/base.xml.in.h:480
+msgid "Microsoft Natural"
+msgstr "Microsoft Natural"
+
+#: ../rules/base.xml.in.h:481
+msgid "Microsoft Natural Keyboard Elite"
+msgstr "Microsoft Natural Keyboard Elite"
+
+#: ../rules/base.xml.in.h:482
+msgid "Microsoft Natural Keyboard Pro / Microsoft Internet Keyboard Pro"
+msgstr "Microsoft Natural Keyboard Pro / Microsoft Internet Keyboard Pro"
+
+#: ../rules/base.xml.in.h:483
+msgid "Microsoft Natural Keyboard Pro OEM"
+msgstr "Microsoft Natural Keyboard Pro OEM"
+
+#: ../rules/base.xml.in.h:484
+msgid "Microsoft Natural Keyboard Pro USB / Microsoft Internet Keyboard Pro"
+msgstr "Microsoft Natural Keyboard Pro USB / Microsoft Internet Keyboard Pro"
+
+#: ../rules/base.xml.in.h:485
+msgid "Microsoft Natural Wireless Ergonomic Keyboard 7000"
+msgstr "Microsoft Natural Wireless Ergonomic Keyboard 7000"
+
+#: ../rules/base.xml.in.h:486
+msgid "Microsoft Office Keyboard"
+msgstr "Bàn phím Văn phòng Microsoft"
+
+#: ../rules/base.xml.in.h:487
+msgid "Microsoft Wireless Multimedia Keyboard 1.0A"
+msgstr "Microsoft Wireless Multimedia Keyboard 1.0A"
+
+#: ../rules/base.xml.in.h:488
+msgid "Miscellaneous compatibility options"
+msgstr "Tùy chá»n tÆ°Æ¡ng thích khác"
+
+#: ../rules/base.xml.in.h:489
+msgid "Mkd"
+msgstr "Mkd"
+
+#: ../rules/base.xml.in.h:490
+msgid "Mli"
+msgstr "Mli"
+
+#: ../rules/base.xml.in.h:491
+msgid "Mlt"
+msgstr "Mlt"
+
+#: ../rules/base.xml.in.h:492
+msgid "Mmr"
+msgstr "Mmr"
+
+#: ../rules/base.xml.in.h:493
+msgid "Mng"
+msgstr "Mng"
+
+#: ../rules/base.xml.in.h:494
+msgid "Mongolia"
+msgstr "Mông Cổ"
+
+#: ../rules/base.xml.in.h:495
+msgid "Montenegro"
+msgstr "Mon-te-nê-gợ-rô"
+
+#: ../rules/base.xml.in.h:496
+msgid "Morocco"
+msgstr "Ma Rốc"
+
+#: ../rules/base.xml.in.h:497
+msgid "Multilingual"
+msgstr "Äa ngôn ngữ"
+
+#: ../rules/base.xml.in.h:498
+msgid "Multilingual, first part"
+msgstr "Äa ngôn ngữ, phần đầu"
+
+#: ../rules/base.xml.in.h:499
+msgid "Multilingual, second part"
+msgstr "Äa ngôn ngữ, phần hai"
+
+#: ../rules/base.xml.in.h:500
+msgid "Myanmar"
+msgstr "Miến Äiện"
+
+#: ../rules/base.xml.in.h:501
+msgid "NICOLA-F style Backspace"
+msgstr "Xoá lùi kiểu NICOLA-F"
+
+#: ../rules/base.xml.in.h:502
+msgid "NLA"
+msgstr "NLA"
+
+#: ../rules/base.xml.in.h:503
+msgid "Nativo"
+msgstr "Nativo"
+
+#: ../rules/base.xml.in.h:504
+msgid "Nativo for Esperanto"
+msgstr "Nativo cho Ét-pe-ran-tô"
+
+#: ../rules/base.xml.in.h:505
+msgid "Nativo for USA keyboards"
+msgstr "Nativo cho bàn phím Mỹ"
+
+#: ../rules/base.xml.in.h:506
+msgid "Neo 2"
+msgstr "Neo 2"
+
+#: ../rules/base.xml.in.h:507
+msgid "Nepal"
+msgstr "Ne-pan"
+
+#: ../rules/base.xml.in.h:508
+msgid "Netherlands"
+msgstr "Hà Lan"
+
+#: ../rules/base.xml.in.h:509
+msgid "New phonetic"
+msgstr "Ngữ âm mới"
+
+#: ../rules/base.xml.in.h:510
+msgid "Nga"
+msgstr "Nga"
+
+#: ../rules/base.xml.in.h:511
+msgid "Nigeria"
+msgstr "Ni-gê-ri-a"
+
+#: ../rules/base.xml.in.h:512
+msgid "Nld"
+msgstr "Nld"
+
+#: ../rules/base.xml.in.h:513
+msgid "Non-breakable space character at fourth level"
+msgstr "Ký tự dấu cách không thể ngắt ở bậc thứ tư"
+
+#: ../rules/base.xml.in.h:514
+msgid "Non-breakable space character at fourth level, thin non-breakable space character at sixth level"
+msgstr "Ký tự dấu cách không thể ngắt ở bậc thứ tư, ký tự dấu cách không thể ngắt mảnh ở bậc thứ sáu"
+
+#: ../rules/base.xml.in.h:515
+msgid "Non-breakable space character at fourth level, thin non-breakable space character at sixth level (via Ctrl+Shift)"
+msgstr "Ký tự dấu cách không thể ngắt ở bậc thứ tư, ký tự dấu cách không thể ngắt mảnh ở bậc thứ sáu (dùng Ctrl+Shift)"
+
+#: ../rules/base.xml.in.h:516
+msgid "Non-breakable space character at second level"
+msgstr "Ký tự dấu cách không thể ngắt ở bậc thứ hai"
+
+#: ../rules/base.xml.in.h:517
+msgid "Non-breakable space character at third level"
+msgstr "Ký tự dấu cách không thể ngắt ở bậc thứ ba"
+
+#: ../rules/base.xml.in.h:518
+msgid "Non-breakable space character at third level, nothing at fourth level"
+msgstr "Ký tự dấu cách không thể ngắt ở bậc thứ ba, không nhập gì ở bậc thứ tư"
+
+#: ../rules/base.xml.in.h:519
+msgid "Non-breakable space character at third level, thin non-breakable space character at fourth level"
+msgstr "Ký tự dấu cách không thể ngắt ở bậc thứ ba, ký tự dấu cách không thể ngắt mảnh ở bậc thứ tư"
+
+#: ../rules/base.xml.in.h:520
+msgid "Nor"
+msgstr "Nor"
+
+#: ../rules/base.xml.in.h:521
+msgid "Northern Saami"
+msgstr "Bắc Xa-mi"
+
+#: ../rules/base.xml.in.h:522
+msgid "Northern Saami, eliminate dead keys"
+msgstr "Bắc Xa-mi, phím chết loại trừ"
+
+#: ../rules/base.xml.in.h:523
+msgid "Northgate OmniKey 101"
+msgstr "Northgate OmniKey 101"
+
+#: ../rules/base.xml.in.h:524
+msgid "Norway"
+msgstr "Na Uy"
+
+#: ../rules/base.xml.in.h:525
+msgid "Npl"
+msgstr "Npl"
+
+#: ../rules/base.xml.in.h:526
+msgid "Num Lock"
+msgstr "NumLock"
+
+#: ../rules/base.xml.in.h:527
+msgid "Numeric keypad delete key behaviour"
+msgstr "Ứng xử phím xoá của vùng số"
+
+#: ../rules/base.xml.in.h:528
+msgid "Numeric keypad keys work as with Mac"
+msgstr "Phím vùng số hoạt động như trên Mac"
+
+#: ../rules/base.xml.in.h:529
+msgid "Numeric keypad layout selection"
+msgstr "Chá»n bố trí vùng phím số"
+
+#: ../rules/base.xml.in.h:530
+msgid "OADG 109A"
+msgstr "OADG 109A"
+
+#: ../rules/base.xml.in.h:531
+msgid "OLPC"
+msgstr "OLPC"
+
+#: ../rules/base.xml.in.h:532
+msgid "OLPC Dari"
+msgstr "OLPC Dari"
+
+#: ../rules/base.xml.in.h:533
+msgid "OLPC Pashto"
+msgstr "OLPC Pas-tô"
+
+#: ../rules/base.xml.in.h:534
+msgid "OLPC Southern Uzbek"
+msgstr "OLPC Nam Ux-béc"
+
+#: ../rules/base.xml.in.h:535
+msgid "Occitan"
+msgstr "Óc-khi-tanh"
+
+#: ../rules/base.xml.in.h:536
+msgid "Ogham"
+msgstr "Og-âm"
+
+#: ../rules/base.xml.in.h:537
+msgid "Ogham IS434"
+msgstr "Ogam IS434"
+
+#: ../rules/base.xml.in.h:538
+msgid "Oriya"
+msgstr "Ô-ri-a"
+
+#: ../rules/base.xml.in.h:539
+msgid "Ortek MCK-800 MM/Internet keyboard"
+msgstr "Bàn phím Ortek MCK-800 MM/Internet"
+
+#: ../rules/base.xml.in.h:540
+msgid "Ossetian"
+msgstr "O-xét"
+
+#: ../rules/base.xml.in.h:541
+msgid "Ossetian, Winkeys"
+msgstr "O-xét, phím Win"
+
+#: ../rules/base.xml.in.h:542
+msgid "Ossetian, legacy"
+msgstr "O-xét, thừa tự"
+
+#: ../rules/base.xml.in.h:543
+msgid "PC-98xx Series"
+msgstr "Sê ri PC-98xx"
+
+#: ../rules/base.xml.in.h:544
+msgid "Pak"
+msgstr "Pak"
+
+#: ../rules/base.xml.in.h:545
+msgid "Pakistan"
+msgstr "Pa-khi-x-tanh"
+
+#: ../rules/base.xml.in.h:546
+msgid "Pannonian Rusyn Homophonic"
+msgstr "Äồng Ä‘iệu Ru-xin Pa-non"
+
+#: ../rules/base.xml.in.h:547
+msgid "Pashto"
+msgstr "Pas-tô"
+
+#: ../rules/base.xml.in.h:548
+msgid "Pattachote"
+msgstr "Pa-ta-chô-te"
+
+#: ../rules/base.xml.in.h:549
+msgid "Pause"
+msgstr "Pause"
+
+#: ../rules/base.xml.in.h:550
+msgid "Persian, with Persian Keypad"
+msgstr "Ba Tư có vùng phím Ba Tư"
+
+#: ../rules/base.xml.in.h:551
+msgid "Phonetic"
+msgstr "Ngữ âm"
+
+#: ../rules/base.xml.in.h:552
+msgid "Phonetic Winkeys"
+msgstr "Winkeys ngữ âm"
+
+#: ../rules/base.xml.in.h:553
+msgid "Pol"
+msgstr "Pol"
+
+#: ../rules/base.xml.in.h:554
+msgid "Poland"
+msgstr "Phần Lan"
+
+#: ../rules/base.xml.in.h:555
+msgid "Polytonic"
+msgstr "Nhiá»u âm"
+
+#: ../rules/base.xml.in.h:556
+msgid "Portugal"
+msgstr "Bồ Äào Nha"
+
+#: ../rules/base.xml.in.h:557
+msgid "Probhat"
+msgstr "Probhat"
+
+#: ../rules/base.xml.in.h:558
+msgid "Programmer Dvorak"
+msgstr "Programmer Dvorak"
+
+#: ../rules/base.xml.in.h:559
+msgid "Propeller Voyager (KTEZ-1000)"
+msgstr "Propeller Voyager (KTEZ-1000)"
+
+#: ../rules/base.xml.in.h:560
+msgid "Prt"
+msgstr "Prt"
+
+#: ../rules/base.xml.in.h:561
+msgid "PrtSc"
+msgstr "PrtSc"
+
+#: ../rules/base.xml.in.h:562
+msgid "QTronix Scorpius 98N+"
+msgstr "QTronix Scorpius 98N+"
+
+#: ../rules/base.xml.in.h:563
+msgid "Right Alt"
+msgstr "Alt phải"
+
+#: ../rules/base.xml.in.h:564
+msgid "Right Alt (while pressed)"
+msgstr "Alt phải (trong khi bấm)"
+
+#: ../rules/base.xml.in.h:565
+msgid "Right Alt chooses 5th level, locks when pressed together with another 5th-level-chooser"
+msgstr "Alt phải chá»n cấp 5, khoá khi bấm nhau vá»›i má»™t bá»™ chá»n cấp 5 khác"
+
+#: ../rules/base.xml.in.h:566
+msgid "Right Alt chooses 5th level, locks when pressed together with another 5th-level-chooser, one press releases the lock"
+msgstr "Alt phải chá»n cấp 5, khoá khi bấm nhau vá»›i má»™t bá»™ chá»n cấp 5 khác, má»™t cú bấm cÅ©ng buông khoá"
+
+#: ../rules/base.xml.in.h:567
+msgid "Right Alt key never chooses 3rd level"
+msgstr "Phím Alt bên phải không bao giá» chá»n bậc thứ 3"
+
+#: ../rules/base.xml.in.h:568
+msgid "Right Alt, Shift+Right Alt key is Multi_Key"
+msgstr "Alt phải, phím Shift+Right Alt là Multi_Key"
+
+#: ../rules/base.xml.in.h:569
+msgid "Right Ctrl"
+msgstr "Ctrl phải"
+
+#: ../rules/base.xml.in.h:570
+msgid "Right Ctrl (while pressed)"
+msgstr "Ctrl phải (trong khi bấm)"
+
+#: ../rules/base.xml.in.h:571
+msgid "Right Ctrl as Right Alt"
+msgstr "Ctrl phải làm Alt phải"
+
+#: ../rules/base.xml.in.h:572
+msgid "Right Ctrl+Right Shift"
+msgstr "Ctrl phải + Shift phải"
+
+#: ../rules/base.xml.in.h:573
+msgid "Right Shift"
+msgstr "Shift phải"
+
+#: ../rules/base.xml.in.h:574
+msgid "Right Win"
+msgstr "Win phải"
+
+#: ../rules/base.xml.in.h:575
+msgid "Right Win (while pressed)"
+msgstr "Win phải (trong khi bấm)"
+
+#: ../rules/base.xml.in.h:576
+msgid "Right Win chooses 5th level, locks when pressed together with another 5th-level-chooser"
+msgstr "Win phải chá»n cấp 5, khoá khi bấm nhau vá»›i má»™t bá»™ chá»n cấp 5 khác"
+
+#: ../rules/base.xml.in.h:577
+msgid "Right Win chooses 5th level, locks when pressed together with another 5th-level-chooser, one press releases the lock"
+msgstr "Win phải chá»n cấp 5, khoá khi bấm nhau vá»›i má»™t bá»™ chá»n cấp 5 khác, má»™t cú bấm cÅ©ng buông khoá"
+
+#: ../rules/base.xml.in.h:578
+msgid "Right hand"
+msgstr "Thuận tay phải"
+
+#: ../rules/base.xml.in.h:579
+msgid "Right handed Dvorak"
+msgstr "Dvorak thuận tay phải"
+
+#: ../rules/base.xml.in.h:580
+msgid "Romania"
+msgstr "Rô-ma-ni"
+
+#: ../rules/base.xml.in.h:581
+msgid "Romanian keyboard with German letters"
+msgstr "Bàn phím Rô-ma-ni vá»›i các chữ cái Äức"
+
+#: ../rules/base.xml.in.h:582
+msgid "Romanian keyboard with German letters, eliminate dead keys"
+msgstr "Bàn phím Rô-ma-ni vá»›i các chữ cái Äức, các phím chết loại trừ"
+
+#: ../rules/base.xml.in.h:583
+msgid "Rou"
+msgstr "Rou"
+
+#: ../rules/base.xml.in.h:584
+msgid "Rus"
+msgstr "Nga"
+
+#: ../rules/base.xml.in.h:585
+msgid "Russia"
+msgstr "Nga"
+
+#: ../rules/base.xml.in.h:586
+msgid "Russian"
+msgstr "Nga"
+
+#: ../rules/base.xml.in.h:587
+msgid "Russian phonetic"
+msgstr "Nga ngữ âm"
+
+#: ../rules/base.xml.in.h:588
+msgid "Russian phonetic Dvorak"
+msgstr "Nga ngữ âm Dvorak"
+
+#: ../rules/base.xml.in.h:589
+msgid "Russian phonetic, eliminate dead keys"
+msgstr "Nga ngữ âm, phím chết loại trừ"
+
+#: ../rules/base.xml.in.h:590
+msgid "Russian with Kazakh"
+msgstr "Nga có Kha-xắc"
+
+#: ../rules/base.xml.in.h:591
+msgid "SILVERCREST Multimedia Wireless Keyboard"
+msgstr "Bàn phím Không dây Äa phÆ°Æ¡ng tiện SILVERCREST"
+
+#: ../rules/base.xml.in.h:592
+msgid "SK-1300"
+msgstr "SK-1300"
+
+#: ../rules/base.xml.in.h:593
+msgid "SK-2500"
+msgstr "SK-2500"
+
+#: ../rules/base.xml.in.h:594
+msgid "SK-6200"
+msgstr "SK-6200"
+
+#: ../rules/base.xml.in.h:595
+msgid "SK-7100"
+msgstr "SK-7100"
+
+#: ../rules/base.xml.in.h:596 ../rules/base.extras.xml.in.h:9
+msgid "SRB"
+msgstr "SRB"
+
+#: ../rules/base.xml.in.h:597
+msgid "SVEN Ergonomic 2500"
+msgstr "SVEN Ergonomic 2500"
+
+#: ../rules/base.xml.in.h:598
+msgid "SVEN Slim 303"
+msgstr "SVEN Slim 303"
+
+#: ../rules/base.xml.in.h:599
+msgid "Samsung SDM 4500P"
+msgstr "Samsung SDM 4500P"
+
+#: ../rules/base.xml.in.h:600
+msgid "Samsung SDM 4510P"
+msgstr "Samsung SDM 4510P"
+
+#: ../rules/base.xml.in.h:601
+msgid "Scroll Lock"
+msgstr "Scroll Lock"
+
+#: ../rules/base.xml.in.h:602
+msgid "Secwepemctsin"
+msgstr "Secwepemctsin"
+
+#: ../rules/base.xml.in.h:603
+msgid "Semi-colon on third level"
+msgstr "Dấu chấm phẩy ở cấp ba"
+
+#: ../rules/base.xml.in.h:604
+msgid "Sen"
+msgstr "Sen"
+
+#: ../rules/base.xml.in.h:605
+msgid "Senegal"
+msgstr "Xe-ne-gan"
+
+#: ../rules/base.xml.in.h:606 ../rules/base.extras.xml.in.h:10
+msgid "Serbia"
+msgstr "Xéc-bi"
+
+#: ../rules/base.xml.in.h:607
+msgid "Serbian"
+msgstr "Xéc-bi"
+
+#: ../rules/base.xml.in.h:608
+msgid "Shift cancels Caps Lock"
+msgstr "Shift thôi CapsLock"
+
+#: ../rules/base.xml.in.h:609
+msgid "Shift does not cancel Num Lock, chooses 3rd level instead"
+msgstr "Shift không thôi Numlock, chá»n cấp 3 để thay thế"
+
+#: ../rules/base.xml.in.h:610
+msgid "Shift with numeric keypad keys works as in MS Windows"
+msgstr "Shift với các phím vùng số làm việc như trong MS Windows"
+
+#: ../rules/base.xml.in.h:611
+msgid "Shift+Caps Lock"
+msgstr "Shift+CapsLock"
+
+#: ../rules/base.xml.in.h:612
+msgid "Simple"
+msgstr "ÄÆ¡n giản"
+
+#: ../rules/base.xml.in.h:613
+msgid "Sindhi"
+msgstr "Xin-Ä‘i"
+
+#: ../rules/base.xml.in.h:614
+msgid "Slovakia"
+msgstr "Xlô-vác"
+
+#: ../rules/base.xml.in.h:615
+msgid "Slovenia"
+msgstr "Xlô-ven"
+
+#: ../rules/base.xml.in.h:616
+msgid "South Africa"
+msgstr "Nam Phi"
+
+#: ../rules/base.xml.in.h:617
+msgid "Southern Uzbek"
+msgstr "Nam Ux-béc"
+
+#: ../rules/base.xml.in.h:618
+msgid "Spain"
+msgstr "Tây Ban Nha"
+
+#: ../rules/base.xml.in.h:619
+msgid "Special keys (Ctrl+Alt+&lt;key&gt;) handled in a server"
+msgstr "Các ký tự đặc biệt (Ctrl+Alt+&lt;key&gt;) được xử lý bằng một trình phục vụ"
+
+#: ../rules/base.xml.in.h:620
+msgid "Sri Lanka"
+msgstr "Tích-lan"
+
+#: ../rules/base.xml.in.h:621
+msgid "Standard"
+msgstr "Tiêu chuẩn"
+
+#: ../rules/base.xml.in.h:622
+msgid "Standard (Cedilla)"
+msgstr "Chuẩn (dấu móc dưới)"
+
+#. RSTU 2019-91
+#: ../rules/base.xml.in.h:624
+msgid "Standard RSTU"
+msgstr "RSTU chuẩn"
+
+#. RSTU 2019-91
+#: ../rules/base.xml.in.h:626
+msgid "Standard RSTU on Russian layout"
+msgstr "RSTU chuẩn trên bố trí tiếng Nga"
+
+#: ../rules/base.xml.in.h:627
+msgid "Sun Type 5/6"
+msgstr "Sun kiểu 5/6"
+
+#: ../rules/base.xml.in.h:628
+msgid "Sun dead keys"
+msgstr "Phím chết Sun"
+
+#: ../rules/base.xml.in.h:629
+msgid "Super Power Multimedia Keyboard"
+msgstr "Bàn phím Phim nhạc Siêu Năng Lực"
+
+#: ../rules/base.xml.in.h:630
+msgid "Svdvorak"
+msgstr "Svdvorak"
+
+#: ../rules/base.xml.in.h:631
+msgid "Svk"
+msgstr "Svk"
+
+#: ../rules/base.xml.in.h:632
+msgid "Svn"
+msgstr "Svn"
+
+#: ../rules/base.xml.in.h:633
+msgid "Swap Ctrl and Caps Lock"
+msgstr "Trao đổi Ctrl và CapsLock"
+
+#: ../rules/base.xml.in.h:634
+msgid "Swap ESC and Caps Lock"
+msgstr "Trao đổi ESC và CapsLock"
+
+#: ../rules/base.xml.in.h:635
+msgid "Swe"
+msgstr "Swe"
+
+#: ../rules/base.xml.in.h:636
+msgid "Sweden"
+msgstr "Thuỵ Äiển"
+
+#: ../rules/base.xml.in.h:637
+msgid "Switzerland"
+msgstr "Thuỵ Sĩ"
+
+#: ../rules/base.xml.in.h:638
+msgid "Symplon PaceBook (tablet PC)"
+msgstr "Symplon PaceBook (tablet PC)"
+
+#: ../rules/base.xml.in.h:639
+msgid "Syr"
+msgstr "Syr"
+
+#: ../rules/base.xml.in.h:640
+msgid "Syria"
+msgstr "Xy-ri"
+
+#: ../rules/base.xml.in.h:641
+msgid "Syriac"
+msgstr "Xi-ri"
+
+#: ../rules/base.xml.in.h:642
+msgid "Syriac phonetic"
+msgstr "Xy-ri ngữ âm"
+
+#: ../rules/base.xml.in.h:643
+msgid "TIS-820.2538"
+msgstr "TIS-820.2538"
+
+#: ../rules/base.xml.in.h:644
+msgid "Tajikistan"
+msgstr "Ta-gikh-x-tanh"
+
+#: ../rules/base.xml.in.h:645
+msgid "Tamil"
+msgstr "Ta-min"
+
+#: ../rules/base.xml.in.h:646
+msgid "Tamil Keyboard with Numerals"
+msgstr "Bàn phím Ta-min với các chữ số"
+
+#: ../rules/base.xml.in.h:647
+msgid "Tamil TAB Typewriter"
+msgstr "Ta-min TAB máy chữ"
+
+#: ../rules/base.xml.in.h:648
+msgid "Tamil TSCII Typewriter"
+msgstr "Ta-min TSCII máy chữ"
+
+#: ../rules/base.xml.in.h:649
+msgid "Tamil Unicode"
+msgstr "Ta-min Unicode"
+
+#: ../rules/base.xml.in.h:650
+msgid "Tanzania"
+msgstr "Tan-xa-nia"
+
+#: ../rules/base.xml.in.h:651
+msgid "Targa Visionary 811"
+msgstr "Targa Visionary 811"
+
+#: ../rules/base.xml.in.h:652
+msgid "Tatar"
+msgstr "Ta-tă"
+
+#: ../rules/base.xml.in.h:653
+msgid "Telugu"
+msgstr "Te-lu-gu"
+
+#: ../rules/base.xml.in.h:654
+msgid "Tha"
+msgstr "Tha"
+
+#: ../rules/base.xml.in.h:655
+msgid "Thailand"
+msgstr "Thái Lan"
+
+#: ../rules/base.xml.in.h:656
+msgid "Tibetan"
+msgstr "Tây Tạng"
+
+#: ../rules/base.xml.in.h:657
+msgid "Tibetan (with ASCII numerals)"
+msgstr "Tây Tạng (có chữ số ASCII)"
+
+#: ../rules/base.xml.in.h:658
+msgid "Tifinagh"
+msgstr "Ti-phi-nac"
+
+#: ../rules/base.xml.in.h:659
+msgid "Tifinagh alternative"
+msgstr "Ti-phi-nac tÆ°Æ¡ng Ä‘Æ°Æ¡ng"
+
+#: ../rules/base.xml.in.h:660
+msgid "Tifinagh alternative phonetic"
+msgstr "Ti-phi-nac ngữ âm tương đương"
+
+#: ../rules/base.xml.in.h:661
+msgid "Tifinagh extended"
+msgstr "Ti-phi-nac mở rộng"
+
+#: ../rules/base.xml.in.h:662
+msgid "Tifinagh extended phonetic"
+msgstr "Ti-phi-nac mở rộng ngữ âm"
+
+#: ../rules/base.xml.in.h:663
+msgid "Tifinagh phonetic"
+msgstr "Ti-phi-nac ngữ âm"
+
+#: ../rules/base.xml.in.h:664
+msgid "Tilde (~) variant"
+msgstr "Phương án dấu sóng (~)"
+
+#: ../rules/base.xml.in.h:665
+msgid "Tjk"
+msgstr "Tjk"
+
+#: ../rules/base.xml.in.h:666
+msgid "Tkm"
+msgstr "Tkm"
+
+#: ../rules/base.xml.in.h:667
+msgid "To the corresponding key in a Dvorak keyboard."
+msgstr "Tới phím tương ứng trên một bàn phím Dvorak."
+
+#: ../rules/base.xml.in.h:668
+msgid "To the corresponding key in a Qwerty keyboard."
+msgstr "Tới phím tương ứng trên một bàn phím Qwerty."
+
+#: ../rules/base.xml.in.h:669
+msgid "Toshiba Satellite S3000"
+msgstr "Toshiba Satellite S3000"
+
+#: ../rules/base.xml.in.h:670
+msgid "Traditional phonetic"
+msgstr "Ngữ âm truyá»n thống"
+
+#: ../rules/base.xml.in.h:671
+msgid "Trust Direct Access Keyboard"
+msgstr "Bàn phím Truy cập Thẳng Tin tưởng"
+
+#: ../rules/base.xml.in.h:672
+msgid "Trust Slimline"
+msgstr "Trust Slimline"
+
+#: ../rules/base.xml.in.h:673
+msgid "Trust Wireless Keyboard Classic"
+msgstr "Bàn Phím Cổ điển Không dây Tin tưởng"
+
+#: ../rules/base.xml.in.h:674
+msgid "Tur"
+msgstr "Tur"
+
+#: ../rules/base.xml.in.h:675
+msgid "Turkey"
+msgstr "Thổ Nhĩ Kỳ"
+
+#: ../rules/base.xml.in.h:676
+msgid "Turkmenistan"
+msgstr "Thổ-kh-me-ni-x-tanh"
+
+#: ../rules/base.xml.in.h:677
+msgid "TypeMatrix EZ-Reach 2020"
+msgstr "TypeMatrix EZ-Reach 2020"
+
+#: ../rules/base.xml.in.h:678
+msgid "TypeMatrix EZ-Reach 2030 PS2"
+msgstr "TypeMatrix EZ-Reach 2030 PS2"
+
+#: ../rules/base.xml.in.h:679
+msgid "TypeMatrix EZ-Reach 2030 USB"
+msgstr "TypeMatrix EZ-Reach 2030 USB"
+
+#: ../rules/base.xml.in.h:680
+msgid "TypeMatrix EZ-Reach 2030 USB (102/105:EU mode)"
+msgstr "TypeMatrix EZ-Reach 2030 USB (chế độ 102/105:EU)"
+
+#: ../rules/base.xml.in.h:681
+msgid "TypeMatrix EZ-Reach 2030 USB (106:JP mode)"
+msgstr "TypeMatrix EZ-Reach 2030 USB (chế độ 106:JP)"
+
+#: ../rules/base.xml.in.h:682
+msgid "Typewriter"
+msgstr "Máy chữ"
+
+#: ../rules/base.xml.in.h:683
+msgid "Typewriter, legacy"
+msgstr "Máy chữ, thừa tự"
+
+#: ../rules/base.xml.in.h:684
+msgid "Tza"
+msgstr "Tza"
+
+#: ../rules/base.xml.in.h:685
+msgid "UCW layout (accented letters only)"
+msgstr "Bố trí UCW (chỉ chữ có dấu)"
+
+#: ../rules/base.xml.in.h:686
+msgid "US Dvorak with CZ UCW support"
+msgstr "Mỹ Dvorak cũng hỗ trợ CZ UCW"
+
+#: ../rules/base.xml.in.h:687
+msgid "US keyboard with Bosnian digraphs"
+msgstr "Bàn phím Mỹ với các chữ ghép Bo-x-ni-a"
+
+#: ../rules/base.xml.in.h:688
+msgid "US keyboard with Bosnian letters"
+msgstr "Bàn phím Mỹ với các chữ cái Bo-x-ni-a"
+
+#: ../rules/base.xml.in.h:689
+msgid "US keyboard with Croatian digraphs"
+msgstr "Bàn phím Mỹ với các chữ ghép Cợ-rô-a-ti-a"
+
+#: ../rules/base.xml.in.h:690
+msgid "US keyboard with Croatian letters"
+msgstr "Bàn phím Mỹ với các chữ cái Croát-chi-a"
+
+#: ../rules/base.xml.in.h:691
+msgid "US keyboard with Estonian letters"
+msgstr "Bàn phím Mỹ với các chữ cái E-x-tô-ni-a"
+
+#: ../rules/base.xml.in.h:692
+msgid "US keyboard with Italian letters"
+msgstr "Bàn phím Mỹ vá»›i các chữ cái Ã"
+
+#: ../rules/base.xml.in.h:693
+msgid "US keyboard with Lithuanian letters"
+msgstr "Bàn phím Mỹ với các chữ cái Li-tu-a-nia"
+
+#: ../rules/base.xml.in.h:694
+msgid "US keyboard with Slovenian letters"
+msgstr "Bàn phím Mỹ với các chữ cái Xlô-ven"
+
+#: ../rules/base.xml.in.h:695 ../rules/base.extras.xml.in.h:11
+msgid "USA"
+msgstr "Mỹ"
+
+#: ../rules/base.xml.in.h:696
+msgid "Udmurt"
+msgstr "U-đ-muổt"
+
+#: ../rules/base.xml.in.h:697
+msgid "Ukr"
+msgstr "Ukr"
+
+#: ../rules/base.xml.in.h:698
+msgid "Ukraine"
+msgstr "U-cợ-rainh"
+
+#: ../rules/base.xml.in.h:699
+msgid "Unicode additions (arrows and math operators)"
+msgstr "Phần thêm Unicode (các mÅ©i tên và toán tá»­ toán há»c)"
+
+#: ../rules/base.xml.in.h:700
+msgid "Unicode additions (arrows and math operators). Math operators on default level"
+msgstr "Phần thêm Unicode (các mÅ©i tên và toán tá»­ toán há»c). Bậc mặc định thì nhập các toán tá»­ toán há»c."
+
+#: ../rules/base.xml.in.h:701
+msgid "UnicodeExpert"
+msgstr "Unicode Chuyên môn"
+
+#: ../rules/base.xml.in.h:702
+msgid "United Kingdom"
+msgstr "Vương Quốc Anh"
+
+#: ../rules/base.xml.in.h:703
+msgid "Unitek KB-1925"
+msgstr "Unitek KB-1925"
+
+#: ../rules/base.xml.in.h:704
+msgid "Urdu, Alternative phonetic"
+msgstr "Urdu, Ngữ âm xen kẽ"
+
+#: ../rules/base.xml.in.h:705
+msgid "Urdu, Phonetic"
+msgstr "Urdu, Ngữ âm"
+
+#: ../rules/base.xml.in.h:706
+msgid "Urdu, Winkeys"
+msgstr "Urdu, Phím Win"
+
+#: ../rules/base.xml.in.h:707
+msgid "Use Bosnian digraphs"
+msgstr "Dùng chữ ghép Bo-x-ni-a"
+
+#: ../rules/base.xml.in.h:708
+msgid "Use Croatian digraphs"
+msgstr "Dùng chữ ghép Cợ-rô-a-ti-a"
+
+#: ../rules/base.xml.in.h:709
+msgid "Use guillemets for quotes"
+msgstr "Dùng « chim uria » làm dấu trích dẫn"
+
+#: ../rules/base.xml.in.h:710
+msgid "Use keyboard LED to show alternative layout"
+msgstr "Sử dụng đèn bàn phím để chỉ ra bố trí xen kẽ"
+
+#: ../rules/base.xml.in.h:711
+msgid "Using space key to input non-breakable space character"
+msgstr "Dùng phím dài để nhập ký tự dấu cách không thể ngắt"
+
+#: ../rules/base.xml.in.h:712
+msgid "Usual space at any level"
+msgstr "Dấu cách bình thÆ°á»ng ở má»i bậc"
+
+#: ../rules/base.xml.in.h:713
+msgid "Uzb"
+msgstr "Uzb"
+
+#: ../rules/base.xml.in.h:714
+msgid "Uzbekistan"
+msgstr "Uz-be-khi-xtanh"
+
+#: ../rules/base.xml.in.h:715
+msgid "Vietnam"
+msgstr "Việt Nam"
+
+#: ../rules/base.xml.in.h:716
+msgid "ViewSonic KU-306 Internet Keyboard"
+msgstr "Bàn phím Internet ViewSonic KU-306"
+
+#: ../rules/base.xml.in.h:717
+msgid "Vnm"
+msgstr "Vnm"
+
+#: ../rules/base.xml.in.h:718
+msgid "Wang 724 keypad with unicode additions (arrows and math operators)"
+msgstr "Vùng phím Wang 724 có phần thêm Unicode (các mÅ©i tên và toán tá»­ toán há»c)"
+
+#: ../rules/base.xml.in.h:719
+msgid "Wang 724 keypad with unicode additions (arrows and math operators). Math operators on default level"
+msgstr "Vùng phím Wang 724 có phần thêm Unicode (các mÅ©i tên và toán tá»­ toán há»c). Mặc định thì nhập toán tá»­ toán há»c."
+
+#: ../rules/base.xml.in.h:720
+msgid "Wang model 724 azerty"
+msgstr "Wang mô hình 724 azerty"
+
+#: ../rules/base.xml.in.h:721
+msgid "Western"
+msgstr "Phương Tây"
+
+#: ../rules/base.xml.in.h:722
+msgid "Winbook Model XP5"
+msgstr "Winbook kiểu mẫu XP5"
+
+#: ../rules/base.xml.in.h:723
+msgid "Winkeys"
+msgstr "Phím Win"
+
+#: ../rules/base.xml.in.h:724
+msgid "With &lt;\\|&gt; key"
+msgstr "Với phím &lt;\\|&gt;"
+
+#: ../rules/base.xml.in.h:725
+msgid "With EuroSign on 5"
+msgstr "Thêm ký hiệu đồng Euro vào phím 5."
+
+#: ../rules/base.xml.in.h:726
+msgid "With guillemets"
+msgstr "Với « chim uria »"
+
+#: ../rules/base.xml.in.h:727
+msgid "Yahoo! Internet Keyboard"
+msgstr "Bàn phím Internet Yahoo!"
+
+#: ../rules/base.xml.in.h:728
+msgid "Yakut"
+msgstr "Ya-khú-th"
+
+#: ../rules/base.xml.in.h:729
+msgid "Yoruba"
+msgstr "Yoa-ru-ba"
+
+#: ../rules/base.xml.in.h:730
+msgid "Z and ZHE swapped"
+msgstr "Äổi chá»— Z và ZHE"
+
+#: ../rules/base.xml.in.h:731
+msgid "Zaf"
+msgstr "Zaf"
+
+#: ../rules/base.xml.in.h:732
+msgid "Zero-width non-joiner character at second level"
+msgstr "Ký tá»± không nối có chiá»u rá»™ng không tại cấp 2"
+
+#: ../rules/base.xml.in.h:733
+msgid "Zero-width non-joiner character at second level, non-breakable space character at third level"
+msgstr "Ký tá»± không nối có chiá»u rá»™ng không tại cấp 2, ký tá»± dấu cách không thể ngắt ở cấp 3"
+
+#: ../rules/base.xml.in.h:734
+msgid "Zero-width non-joiner character at second level, non-breakable space character at third level, nothing at fourth level"
+msgstr "Ký tá»± không nối có chiá»u rá»™ng không tại cấp 2, ký tá»± dấu cách không thể ngắt ở cấp 3, không có gì ở cấp 4"
+
+#: ../rules/base.xml.in.h:735
+msgid "Zero-width non-joiner character at second level, non-breakable space character at third level, thin non-breakable space at fourth level"
+msgstr "Ký tá»± không nối có chiá»u rá»™ng không tại cấp 2, ký tá»± dấu cách không thể ngắt ở cấp 3, ký tá»± dấu cách mảnh không thể ngắt ở cấp 4"
+
+#: ../rules/base.xml.in.h:736
+msgid "Zero-width non-joiner character at second level, non-breakable space character at third level, zero-width joiner at fourth level"
+msgstr "Ký tá»± không nối có chiá»u rá»™ng không tại cấp 2, ký tá»± dấu cách không thể ngắt ở cấp 3, ký tá»± nối có chiá»u rá»™ng không ở cấp 4"
+
+#: ../rules/base.xml.in.h:737
+msgid "Zero-width non-joiner character at second level, zero-width joiner character at third level"
+msgstr "Ký tá»± không nối có chiá»u rá»™ng không tại cấp 2, ký tá»± nối có chiá»u rá»™ng không ở cấp 3"
+
+#: ../rules/base.xml.in.h:738
+msgid "Zero-width non-joiner character at second level, zero-width joiner character at third level, non-breakable space character at fourth level"
+msgstr "Ký tá»± không nối có chiá»u rá»™ng không tại cấp 2, ký tá»± nối có chiá»u rá»™ng không ở cấp 3, ký tá»± dấu cách không thể ngắt ở cấp 4"
+
+#: ../rules/base.xml.in.h:739
+msgid "Zero-width non-joiner character at third level, zero-width joiner at fourth level"
+msgstr "Ký tá»± không nối có chiá»u rá»™ng không tại cấp 3, ký tá»± nối có chiá»u rá»™ng không ở cấp 4"
+
+#: ../rules/base.xml.in.h:740
+msgid "azerty"
+msgstr "azerty"
+
+#: ../rules/base.xml.in.h:741
+msgid "azerty/digits"
+msgstr "azerty/chữ số"
+
+#: ../rules/base.xml.in.h:742
+msgid "digits"
+msgstr "chữ số"
+
+#: ../rules/base.xml.in.h:743
+msgid "displaced semicolon and quote (obsolete)"
+msgstr "dấu chấm phẩy và dấu trích dẫn bị dịch (quá cũ)"
+
+#: ../rules/base.xml.in.h:744
+msgid "lyx"
+msgstr "lyx"
+
+#: ../rules/base.xml.in.h:745
+msgid "qwerty"
+msgstr "qwerty"
+
+#: ../rules/base.xml.in.h:746
+msgid "qwerty, extended Backslash"
+msgstr "qwerty, Gạch ngược mở rộng"
+
+#: ../rules/base.xml.in.h:747
+msgid "qwerty/digits"
+msgstr "qwerty/chữ số"
+
+#: ../rules/base.xml.in.h:748
+msgid "qwertz"
+msgstr "qwertz"
+
+#: ../rules/base.extras.xml.in.h:1
+msgid "APL"
+msgstr "APL"
+
+#: ../rules/base.extras.xml.in.h:2
+msgid "Atsina"
+msgstr "Ãt-xi-na"
+
+#: ../rules/base.extras.xml.in.h:3
+msgid "Avestan"
+msgstr "A-ve-x-tanh"
+
+#: ../rules/base.extras.xml.in.h:4
+msgid "Combining accents instead of dead keys"
+msgstr "Tổ hợp dấu phụ thay cho phím chết"
+
+#: ../rules/base.extras.xml.in.h:5
+msgid "Couer D'alene Salish"
+msgstr "Couer D'alene Salish"
+
+#: ../rules/base.extras.xml.in.h:6
+msgid "International (AltGr Unicode combining)"
+msgstr "Quốc tế (tổ hợp Unicode AltGr)"
+
+#: ../rules/base.extras.xml.in.h:7
+msgid "International (AltGr Unicode combining, alternative)"
+msgstr "Quốc tế (tổ hợp Unicode AltGr, thay thế)"
diff --git a/xorg-server/xkeyboard-config/po/zh_TW.po b/xorg-server/xkeyboard-config/po/zh_TW.po
index 9cc90fb5b..383e01e3f 100644
--- a/xorg-server/xkeyboard-config/po/zh_TW.po
+++ b/xorg-server/xkeyboard-config/po/zh_TW.po
@@ -1,1671 +1,1671 @@
-# Traditional Chinese Messages for xkeyboard-config
-# Copyright (C) 2003, 05 Free Software Foundation, Inc.
-# Funda Wang <fundawang@linux.net.cn>, 2003
-# Wei-Lun Chao <chaoweilun@pcmail.com.tw>, 2005
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: xkeyboard-config 0.6\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2005-08-14 00:39+0100\n"
-"PO-Revision-Date: 2005-09-19 17:19+0800\n"
-"Last-Translator: Wei-Lun Chao <chaoweilun@pcmail.com.tw>\n"
-"Language-Team: Chinese (traditional) <zh-l10n@linux.org.tw>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-
-#: ../rules/base.xml.in.h:1
-msgid "\"Standard\""
-msgstr "「標準ã€"
-
-#: ../rules/base.xml.in.h:2
-msgid "(F)"
-msgstr "(F)"
-
-#: ../rules/base.xml.in.h:3
-msgid "101/qwerty/comma/Dead keys"
-msgstr "101/qwerty/逗點/無用按éµ"
-
-#: ../rules/base.xml.in.h:4
-msgid "101/qwerty/comma/Eliminate dead keys"
-msgstr "101/qwerty/逗點/除去無用按éµ"
-
-#: ../rules/base.xml.in.h:5
-msgid "101/qwerty/dot/Dead keys"
-msgstr "101/qwerty/å¥é»ž/無用按éµ"
-
-#: ../rules/base.xml.in.h:6
-msgid "101/qwerty/dot/Eliminate dead keys"
-msgstr "101/qwerty/å¥é»ž/除去無用按éµ"
-
-#: ../rules/base.xml.in.h:7
-msgid "101/qwertz/comma/Dead keys"
-msgstr "101/qwertz/逗點/無用按éµ"
-
-#: ../rules/base.xml.in.h:8
-msgid "101/qwertz/comma/Eliminate dead keys"
-msgstr "101/qwerty/逗點/除去無用按éµ"
-
-#: ../rules/base.xml.in.h:9
-msgid "101/qwertz/dot/Dead keys"
-msgstr "101/qwertz/å¥é»ž/無用按éµ"
-
-#: ../rules/base.xml.in.h:10
-msgid "101/qwertz/dot/Eliminate dead keys"
-msgstr "101/qwertz/å¥é»ž/除去無用按éµ"
-
-#: ../rules/base.xml.in.h:11
-msgid "102/qwerty/comma/Dead keys"
-msgstr "102/qwerty/逗點/無用按éµ"
-
-#: ../rules/base.xml.in.h:12
-msgid "102/qwerty/comma/Eliminate dead keys"
-msgstr "102/qwerty/逗點/除去無用按éµ"
-
-#: ../rules/base.xml.in.h:13
-msgid "102/qwerty/dot/Dead keys"
-msgstr "102/qwerty/å¥é»ž/無用按éµ"
-
-#: ../rules/base.xml.in.h:14
-msgid "102/qwerty/dot/Eliminate dead keys"
-msgstr "102/qwerty/å¥é»ž/除去無用按éµ"
-
-#: ../rules/base.xml.in.h:15
-msgid "102/qwertz/comma/Dead keys"
-msgstr "102/qwertz/逗點/無用按éµ"
-
-#: ../rules/base.xml.in.h:16
-msgid "102/qwertz/comma/Eliminate dead keys"
-msgstr "102/qwertz/逗點/除去無用按éµ"
-
-#: ../rules/base.xml.in.h:17
-msgid "102/qwertz/dot/Dead keys"
-msgstr "102/qwertz/å¥é»ž/無用按éµ"
-
-#: ../rules/base.xml.in.h:18
-msgid "102/qwertz/dot/Eliminate dead keys"
-msgstr "102/qwertz/å¥é»ž/除去無用按éµ"
-
-#: ../rules/base.xml.in.h:19
-msgid "A4Tech KB-21"
-msgstr "A4Tech KB-21"
-
-#: ../rules/base.xml.in.h:20
-msgid "A4Tech KBS-8"
-msgstr "A4Tech KBS-8"
-
-#: ../rules/base.xml.in.h:21
-msgid "ACPI Standard"
-msgstr "ACPI 標準"
-
-#: ../rules/base.xml.in.h:22
-msgid "Acer AirKey V"
-msgstr "Acer AirKey V"
-
-#: ../rules/base.xml.in.h:23
-msgid "Acer TravelMate 800"
-msgstr "Acer TravelMate 800"
-
-#: ../rules/base.xml.in.h:24
-msgid "Add the EuroSign to the 2 key."
-msgstr "å°‡æ­å…ƒç¬¦è™ŸåŠ åˆ° 2 éµä¹‹ä¸Š"
-
-#: ../rules/base.xml.in.h:25
-msgid "Add the EuroSign to the 5 key."
-msgstr "å°‡æ­å…ƒç¬¦è™ŸåŠ åˆ° 5 éµä¹‹ä¸Š"
-
-#: ../rules/base.xml.in.h:26
-msgid "Add the EuroSign to the E key."
-msgstr "å°‡æ­å…ƒç¬¦è™ŸåŠ åˆ° E éµä¹‹ä¸Š"
-
-#: ../rules/base.xml.in.h:27
-msgid "Add the standard behavior to Menu key."
-msgstr "增加標準功能至 Menu éµã€‚"
-
-#: ../rules/base.xml.in.h:28
-msgid "Adding the EuroSign to certain keys"
-msgstr "å°‡æ­å…ƒç¬¦è™ŸåŠ åˆ°ç‰¹å®šéµä¹‹ä¸Š"
-
-#: ../rules/base.xml.in.h:29
-msgid "Advance Scorpius KI"
-msgstr "進階 Scorpius KI"
-
-#: ../rules/base.xml.in.h:30
-msgid "Alb"
-msgstr "Alb"
-
-#: ../rules/base.xml.in.h:31
-msgid "Albania"
-msgstr "阿爾巴尼亞"
-
-#: ../rules/base.xml.in.h:32
-msgid "Alt and Meta are on the Alt keys (default)."
-msgstr "Alt 與 Meta é…置於 Alt éµï¼ˆé è¨­å€¼ï¼‰ã€‚"
-
-#: ../rules/base.xml.in.h:33
-msgid "Alt is mapped to the right Win-key and Super to Menu."
-msgstr "Alt é…置到å³é‚Šçš„ Win-key 並優先於 Menu。"
-
-#: ../rules/base.xml.in.h:34
-msgid "Alt+Control changes group."
-msgstr "以 Alt+Control 改變群組。"
-
-#: ../rules/base.xml.in.h:35
-msgid "Alt+Shift changes group."
-msgstr "以 Alt+Shift 改變群組。"
-
-#: ../rules/base.xml.in.h:36
-msgid "Alt-Q"
-msgstr "Alt-Q"
-
-#: ../rules/base.xml.in.h:37
-msgid "Alt/Win key behavior"
-msgstr "Alt/Win éµåŠŸèƒ½"
-
-#: ../rules/base.xml.in.h:38
-msgid "Alternative"
-msgstr "替代é¸æ“‡"
-
-#: ../rules/base.xml.in.h:39
-msgid "Alternative international (former us_intl)"
-msgstr "替代國際化 (之å‰ç‚º us_intl)"
-
-#: ../rules/base.xml.in.h:40
-msgid "Alternative, Sun dead keys"
-msgstr "替代é¸æ“‡ï¼ŒSun 的無用按éµ"
-
-#: ../rules/base.xml.in.h:41
-msgid "Alternative, eliminate dead keys"
-msgstr "替代é¸æ“‡ï¼Œé™¤åŽ»ç„¡ç”¨æŒ‰éµ"
-
-#: ../rules/base.xml.in.h:42
-msgid "Apostrophe (') variant"
-msgstr "撇號 (') 變型"
-
-#: ../rules/base.xml.in.h:43
-msgid "Ara"
-msgstr "Ara"
-
-#: ../rules/base.xml.in.h:44
-msgid "Arabic"
-msgstr "阿拉伯文"
-
-#: ../rules/base.xml.in.h:45
-msgid "Arm"
-msgstr "Arm"
-
-#: ../rules/base.xml.in.h:46
-msgid "Armenia"
-msgstr "亞美尼亞"
-
-#: ../rules/base.xml.in.h:47
-msgid "Aze"
-msgstr "Aze"
-
-#: ../rules/base.xml.in.h:48
-msgid "Azerbaijan"
-msgstr "亞塞拜然"
-
-#: ../rules/base.xml.in.h:49
-msgid "Azona RF2300 wireless Internet Keyboard"
-msgstr "Azona RF2300 無線網際éµç›¤"
-
-#: ../rules/base.xml.in.h:50
-msgid "BTC 5090"
-msgstr "BTC 5090"
-
-#: ../rules/base.xml.in.h:51
-msgid "BTC 5113RF Multimedia"
-msgstr "BTC 5113RF 多媒體"
-
-#: ../rules/base.xml.in.h:52
-msgid "BTC 5126T"
-msgstr "BTC 5126T"
-
-#: ../rules/base.xml.in.h:53
-msgid "BTC 9000"
-msgstr "BTC 9000"
-
-#: ../rules/base.xml.in.h:54
-msgid "BTC 9000A"
-msgstr "BTC 9000A"
-
-#: ../rules/base.xml.in.h:55
-msgid "BTC 9001AH"
-msgstr "BTC 9001AH"
-
-#: ../rules/base.xml.in.h:56
-msgid "Ban"
-msgstr "Ban"
-
-#: ../rules/base.xml.in.h:57
-msgid "Bangladesh"
-msgstr "孟加拉"
-
-#: ../rules/base.xml.in.h:58
-msgid "Bel"
-msgstr "Bel"
-
-#: ../rules/base.xml.in.h:59
-msgid "Belarus"
-msgstr "白俄"
-
-#: ../rules/base.xml.in.h:60
-msgid "Belgium"
-msgstr "比利時"
-
-#: ../rules/base.xml.in.h:61
-msgid "Bengali"
-msgstr "孟加拉文"
-
-#: ../rules/base.xml.in.h:62
-msgid "Bengali Probhat"
-msgstr "孟加拉 Probhat 文"
-
-#: ../rules/base.xml.in.h:63
-msgid "Bgr"
-msgstr "Bgr"
-
-#: ../rules/base.xml.in.h:64
-msgid "Bhu"
-msgstr "Bhu"
-
-#: ../rules/base.xml.in.h:65
-msgid "Bhutan"
-msgstr "ä¸ä¸¹"
-
-#: ../rules/base.xml.in.h:66
-msgid "Bih"
-msgstr "Bih"
-
-#: ../rules/base.xml.in.h:67
-msgid "Blr"
-msgstr "Blr"
-
-#: ../rules/base.xml.in.h:68
-msgid "Bosnia and Herzegovina"
-msgstr "波士尼亞åŠèµ«å¡žå“¥ç¶­é‚£"
-
-#: ../rules/base.xml.in.h:69
-msgid "Both Alt keys together change group."
-msgstr "åŒæ™‚以兩個 Alt éµæ”¹è®Šç¾¤çµ„。"
-
-#: ../rules/base.xml.in.h:70
-msgid "Both Ctrl keys together change group."
-msgstr "åŒæ™‚以兩個 Ctrl éµæ”¹è®Šç¾¤çµ„。"
-
-#: ../rules/base.xml.in.h:71
-msgid "Both Shift keys together change group."
-msgstr "åŒæ™‚以兩個 Shift éµæ”¹è®Šç¾¤çµ„。"
-
-#: ../rules/base.xml.in.h:72
-msgid "Both Win-keys switch group while pressed."
-msgstr "當按下兩個 Win-key 時切æ›ç¾¤çµ„。"
-
-#: ../rules/base.xml.in.h:73
-msgid "Bra"
-msgstr "Bra"
-
-#: ../rules/base.xml.in.h:74
-msgid "Brazil"
-msgstr "巴西"
-
-#: ../rules/base.xml.in.h:75
-msgid "Brazilian ABNT2"
-msgstr "巴西 ABNT2 éµç›¤"
-
-#: ../rules/base.xml.in.h:76
-msgid "Brother Internet Keyboard"
-msgstr "Brother 網際éµç›¤"
-
-#: ../rules/base.xml.in.h:77
-msgid "Bulgaria"
-msgstr "ä¿åŠ åˆ©äºž"
-
-#: ../rules/base.xml.in.h:78
-msgid "Can"
-msgstr "Can"
-
-#: ../rules/base.xml.in.h:79
-msgid "Canada"
-msgstr "加拿大"
-
-#: ../rules/base.xml.in.h:80
-msgid "CapsLock LED shows alternative group."
-msgstr "以 CapsLock 燈號來顯示替代的群組。"
-
-#: ../rules/base.xml.in.h:81
-msgid "CapsLock acts as Shift with locking. Shift cancels CapsLock."
-msgstr "Caps Lock 充當鎖定的 Shift。å¯ä»¥æŒ‰ Shift å–消之。"
-
-#: ../rules/base.xml.in.h:82
-msgid "CapsLock acts as Shift with locking. Shift doesn't cancel CapsLock."
-msgstr "Caps Lock 充當鎖定的 Shift。無法以按 Shift å–消之。"
-
-#: ../rules/base.xml.in.h:83
-msgid "CapsLock just locks the Shift modifier."
-msgstr "Caps Lock åªç”¨æ–¼éŽ–定 Shift 變更éµã€‚"
-
-#: ../rules/base.xml.in.h:84
-msgid "CapsLock key behavior"
-msgstr "Caps Lock éµåŠŸèƒ½"
-
-#: ../rules/base.xml.in.h:85
-msgid "CapsLock key changes group."
-msgstr "以 Caps Lock éµæ”¹è®Šç¾¤çµ„"
-
-#: ../rules/base.xml.in.h:86
-msgid "CapsLock toggles Shift so all keys are affected."
-msgstr "以 Caps Lock åˆ‡æ› Shift 狀態而影響到所有按éµã€‚"
-
-#: ../rules/base.xml.in.h:87
-msgid "CapsLock toggles normal capitalization of alphabetic characters."
-msgstr "以 Caps Lock 切æ›æ­£å¸¸çš„å­—æ¯å­—元大寫功能。"
-
-#: ../rules/base.xml.in.h:88
-msgid "CapsLock uses internal capitalization. Shift cancels CapsLock."
-msgstr "Caps Lock 使用內建的大寫功能。å¯ä»¥ Shift å–消之。"
-
-#: ../rules/base.xml.in.h:89
-msgid "CapsLock uses internal capitalization. Shift doesn't cancel CapsLock."
-msgstr "Caps Lock 使用內建的大寫功能。無法以 Shift å–消之。"
-
-#: ../rules/base.xml.in.h:90
-msgid "Che"
-msgstr "Che"
-
-#: ../rules/base.xml.in.h:91
-msgid "Cherry Blue Line CyBo@rd"
-msgstr "Cherry Blue Line CyBo@rd"
-
-#: ../rules/base.xml.in.h:92
-msgid "Cherry Blue Line CyBo@rd (alternate option)"
-msgstr "Cherry Blue Line CyBo@rd (替代é¸é …)"
-
-#: ../rules/base.xml.in.h:93
-msgid "Cherry CyMotion Master Linux"
-msgstr "Cherry CyMotion Master Linux"
-
-#: ../rules/base.xml.in.h:94
-msgid "Chicony Internet Keyboard"
-msgstr "Chicony 網際網路éµç›¤"
-
-#: ../rules/base.xml.in.h:95
-msgid "Chicony KB-9885"
-msgstr "Chicony KB-9885"
-
-#: ../rules/base.xml.in.h:96
-msgid "CloGaelach"
-msgstr "CloGaelach"
-
-#: ../rules/base.xml.in.h:97
-msgid "Compaq Easy Access Keyboard"
-msgstr "康æŸè¼•é¬†å­˜å–éµç›¤"
-
-#: ../rules/base.xml.in.h:98
-msgid "Compaq Internet Keyboard (13 keys)"
-msgstr "康æŸç¶²éš›éµç›¤(13éµ)"
-
-#: ../rules/base.xml.in.h:99
-msgid "Compaq Internet Keyboard (18 keys)"
-msgstr "康æŸç¶²éš›éµç›¤(18éµ)"
-
-#: ../rules/base.xml.in.h:100
-msgid "Compaq Internet Keyboard (7 keys)"
-msgstr "康æŸç¶²éš›éµç›¤(7éµ)"
-
-#: ../rules/base.xml.in.h:101
-msgid "Compaq iPaq Keyboard"
-msgstr "åº·æŸ iPaq éµç›¤"
-
-#: ../rules/base.xml.in.h:102
-msgid "Compose key position"
-msgstr "Compose éµçš„ä½ç½®"
-
-#: ../rules/base.xml.in.h:103
-msgid "Control key at bottom left"
-msgstr "Control éµåœ¨å·¦ä¸‹æ–¹"
-
-#: ../rules/base.xml.in.h:104
-msgid "Control key at left of 'A'"
-msgstr "Control éµåœ¨â€œAâ€çš„左邊"
-
-#: ../rules/base.xml.in.h:105
-msgid "Control key position"
-msgstr "Control éµçš„ä½ç½®"
-
-#: ../rules/base.xml.in.h:106
-msgid "Control+Shift changes group."
-msgstr "以 Control+Shift éµæ”¹è®Šç¾¤çµ„。"
-
-#: ../rules/base.xml.in.h:107
-msgid "Croatia"
-msgstr "克羅埃西亞"
-
-#: ../rules/base.xml.in.h:108
-msgid "Cyrillic"
-msgstr "斯拉夫文"
-
-#: ../rules/base.xml.in.h:109
-msgid "Cze"
-msgstr "Cze"
-
-#: ../rules/base.xml.in.h:110
-msgid "Czechia"
-msgstr "æ·å…‹æ–‡"
-
-#: ../rules/base.xml.in.h:111
-msgid "DTK2000"
-msgstr "DTK2000"
-
-#: ../rules/base.xml.in.h:112
-msgid "Dead acute"
-msgstr "Dead acute"
-
-#: ../rules/base.xml.in.h:113
-msgid "Dead grave acute"
-msgstr "Dead grave acute"
-
-#: ../rules/base.xml.in.h:114
-msgid "Dell"
-msgstr "戴爾"
-
-#: ../rules/base.xml.in.h:115
-msgid "Dell 101-key PC"
-msgstr "戴爾 101 éµ éµç›¤"
-
-#: ../rules/base.xml.in.h:116
-msgid "Denmark"
-msgstr "丹麥"
-
-#: ../rules/base.xml.in.h:117
-msgid "Deu"
-msgstr "Deu"
-
-#: ../rules/base.xml.in.h:118
-msgid "Dexxa Wireless Desktop Keyboard"
-msgstr "Dexxa ç„¡ç·šæ¡Œé¢éµç›¤"
-
-#: ../rules/base.xml.in.h:119
-msgid "Dhivehi"
-msgstr "迪è²å–œæ–‡"
-
-#: ../rules/base.xml.in.h:120
-msgid "Diamond 9801 / 9802 series"
-msgstr "Diamond 9801 / 9802 系列"
-
-#: ../rules/base.xml.in.h:121
-msgid "Div"
-msgstr "Div"
-
-#: ../rules/base.xml.in.h:122
-msgid "Dnk"
-msgstr "Dnk"
-
-#: ../rules/base.xml.in.h:123
-msgid "Dvorak"
-msgstr "Dvorak"
-
-#: ../rules/base.xml.in.h:124
-msgid "Dvorak, Polish quotes on key \"1/!\""
-msgstr "Dvorak,波蘭å¼å¼•è™Ÿç½®æ–¼ã€Œ1/!ã€æŒ‰éµ"
-
-#: ../rules/base.xml.in.h:125
-msgid "Dvorak, Polish quotes on quotemark key"
-msgstr "Dvorak,波蘭å¼å¼•è™Ÿç½®æ–¼ã€Œ1/!ã€æŒ‰éµ"
-
-#: ../rules/base.xml.in.h:126
-msgid "Eliminate dead keys"
-msgstr "除去無用按éµ"
-
-#: ../rules/base.xml.in.h:127
-msgid "Ennyah DKB-1008"
-msgstr "Ennyah DKB-1008"
-
-#: ../rules/base.xml.in.h:128
-msgid "Esp"
-msgstr "Esp"
-
-#: ../rules/base.xml.in.h:129
-msgid "Est"
-msgstr "Est"
-
-#: ../rules/base.xml.in.h:130
-msgid "Estonia"
-msgstr "愛沙尼亞"
-
-#: ../rules/base.xml.in.h:131
-msgid "Everex STEPnote"
-msgstr "Everex STEPnote"
-
-#: ../rules/base.xml.in.h:132
-msgid "Extended"
-msgstr "延伸的"
-
-#: ../rules/base.xml.in.h:133
-msgid "Extended Backslash"
-msgstr "延伸的å斜線"
-
-#: ../rules/base.xml.in.h:134
-msgid "F-letter (F) variant"
-msgstr "F å­—æ¯è®ŠåŒ–"
-
-#: ../rules/base.xml.in.h:135
-msgid "Fao"
-msgstr "Fao"
-
-#: ../rules/base.xml.in.h:136
-msgid "Faroe Islands"
-msgstr "法羅群島"
-
-#: ../rules/base.xml.in.h:137
-msgid "Fin"
-msgstr "Fin"
-
-#: ../rules/base.xml.in.h:138
-msgid "Finland"
-msgstr "芬蘭"
-
-#: ../rules/base.xml.in.h:139
-msgid "Fra"
-msgstr "Fra"
-
-#: ../rules/base.xml.in.h:140
-msgid "France"
-msgstr "法國"
-
-#: ../rules/base.xml.in.h:141
-msgid "French"
-msgstr "法文"
-
-#: ../rules/base.xml.in.h:142
-msgid "French (legacy)"
-msgstr "法文 (傳統)"
-
-#: ../rules/base.xml.in.h:143
-msgid "French Dvorak"
-msgstr "法文 Dvorak"
-
-#: ../rules/base.xml.in.h:144
-msgid "French, Sun dead keys"
-msgstr "法文,Sun 的無用按éµ"
-
-#: ../rules/base.xml.in.h:145
-msgid "French, eliminate dead keys"
-msgstr "法文,除去無用按éµ"
-
-#: ../rules/base.xml.in.h:146
-msgid "GBr"
-msgstr "GBr"
-
-#: ../rules/base.xml.in.h:147
-msgid "Generic 101-key PC"
-msgstr "一般 101éµ éµç›¤"
-
-#: ../rules/base.xml.in.h:148
-msgid "Generic 102-key (Intl) PC"
-msgstr "一般 102éµ (國際) éµç›¤"
-
-#: ../rules/base.xml.in.h:149
-msgid "Generic 104-key PC"
-msgstr "一般 104éµ éµç›¤"
-
-#: ../rules/base.xml.in.h:150
-msgid "Generic 105-key (Intl) PC"
-msgstr "一般 105 éµ (國際) éµç›¤"
-
-#: ../rules/base.xml.in.h:151
-msgid "Genius Comfy KB-16M / Genius MM Keyboard KWD-910"
-msgstr "昆盈 Comfy KB-16M / 昆盈 MM éµç›¤ KWD-910"
-
-#: ../rules/base.xml.in.h:152
-msgid "Genius Comfy KB-21e-Scroll"
-msgstr "昆盈 Comfy KB-21e-Scroll"
-
-#: ../rules/base.xml.in.h:153
-msgid "Geo"
-msgstr "Geo"
-
-#: ../rules/base.xml.in.h:154
-msgid "Georgia"
-msgstr "喬治亞"
-
-#: ../rules/base.xml.in.h:155
-msgid "German, Sun dead keys"
-msgstr "德文,Sun 的無用按éµ"
-
-#: ../rules/base.xml.in.h:156
-msgid "German, eliminate dead keys"
-msgstr "德文,除去無用按éµ"
-
-#: ../rules/base.xml.in.h:157
-msgid "Germany"
-msgstr "德國"
-
-#: ../rules/base.xml.in.h:158
-msgid "Gre"
-msgstr "Gre"
-
-#: ../rules/base.xml.in.h:159
-msgid "Greece"
-msgstr "希臘"
-
-#: ../rules/base.xml.in.h:160
-msgid "Group Shift/Lock behavior"
-msgstr "群組 Shift/Lock 功能"
-
-#: ../rules/base.xml.in.h:161
-msgid "Gujarati"
-msgstr "å¤å‰æ‹‰ç‰¹æ–‡(å°åº¦)"
-
-#: ../rules/base.xml.in.h:162
-msgid "Gurmukhi"
-msgstr "å¤çˆ¾ç©†å¸Œæ–‡"
-
-#: ../rules/base.xml.in.h:163
-msgid "Gyration"
-msgstr "回轉"
-
-#: ../rules/base.xml.in.h:164
-msgid "Hewlett-Packard Internet Keyboard"
-msgstr "惠普網際éµç›¤"
-
-#: ../rules/base.xml.in.h:165
-msgid "Hewlett-Packard Omnibook 500 FA"
-msgstr "惠普 Omnibook 500 FA"
-
-#: ../rules/base.xml.in.h:166
-msgid "Hewlett-Packard Omnibook 5xx"
-msgstr "惠普 Omnibook 5xx"
-
-#: ../rules/base.xml.in.h:167
-msgid "Hewlett-Packard Omnibook 6000/6100"
-msgstr "惠普 Omnibook 6000/6100"
-
-#: ../rules/base.xml.in.h:168
-msgid "Hewlett-Packard Omnibook XE3 GC"
-msgstr "惠普 Omnibook XE3 GC"
-
-#: ../rules/base.xml.in.h:169
-msgid "Hewlett-Packard Omnibook XE3 GF"
-msgstr "惠普 Omnibook XE3 CF"
-
-#: ../rules/base.xml.in.h:170
-msgid "Hewlett-Packard Omnibook XT1000"
-msgstr "惠普 Omnibook XT1000"
-
-#: ../rules/base.xml.in.h:171
-msgid "Hewlett-Packard Pavilion ZT11xx"
-msgstr "惠普 Pavilion ZT11xx"
-
-#: ../rules/base.xml.in.h:172
-msgid "Hewlett-Packard SK-2501 Multimedia Keyboard"
-msgstr "惠普 SK-2501 多媒體éµç›¤"
-
-#: ../rules/base.xml.in.h:173
-msgid "Hewlett-Packard SK-2505 Internet Keyboard"
-msgstr "惠普 SK-2505 網際éµç›¤"
-
-#: ../rules/base.xml.in.h:174
-msgid "Honeywell Euroboard"
-msgstr "Honeywell æ­æ´²éµç›¤"
-
-#: ../rules/base.xml.in.h:175
-msgid "Hrv"
-msgstr "Hrv"
-
-#: ../rules/base.xml.in.h:176
-msgid "Hun"
-msgstr "Hun"
-
-#: ../rules/base.xml.in.h:177
-msgid "Hungary"
-msgstr "匈牙利"
-
-#: ../rules/base.xml.in.h:178
-msgid "Hyper is mapped to the Win-keys."
-msgstr "Hyper é…置到兩個 Win-key。"
-
-#: ../rules/base.xml.in.h:179
-msgid "IBM Rapid Access"
-msgstr "IBM Rapid Access"
-
-#: ../rules/base.xml.in.h:180
-msgid "IBM Rapid Access II"
-msgstr "IBM Rapid Access II"
-
-#: ../rules/base.xml.in.h:181
-msgid "IBM Rapid Access II (alternate option)"
-msgstr "IBM Rapid Access II(替代é¸é …)"
-
-#: ../rules/base.xml.in.h:182
-msgid "IBM ThinkPad 560Z/600/600E/A22E"
-msgstr "IBM ThinkPad 560Z/600/600E/A22E"
-
-#: ../rules/base.xml.in.h:183
-msgid "ISO Alternate"
-msgstr "ISO 替代"
-
-#: ../rules/base.xml.in.h:184
-msgid "Iceland"
-msgstr "冰島"
-
-#: ../rules/base.xml.in.h:185
-msgid "Ind"
-msgstr "Ind"
-
-#: ../rules/base.xml.in.h:186
-msgid "India"
-msgstr "å°åº¦"
-
-#: ../rules/base.xml.in.h:187
-msgid "International (with dead keys)"
-msgstr "國際éµç›¤ (附無用按éµ)"
-
-#: ../rules/base.xml.in.h:188
-msgid "Inuktitut"
-msgstr "伊努伊特éµç›¤"
-
-#: ../rules/base.xml.in.h:189
-msgid "Iran"
-msgstr "伊朗"
-
-#: ../rules/base.xml.in.h:190
-msgid "Ireland"
-msgstr "愛爾蘭"
-
-#: ../rules/base.xml.in.h:191
-msgid "Irl"
-msgstr "Irl"
-
-#: ../rules/base.xml.in.h:192
-msgid "Irn"
-msgstr "Irn"
-
-#: ../rules/base.xml.in.h:193
-msgid "Isl"
-msgstr "Isl"
-
-#: ../rules/base.xml.in.h:194
-msgid "Isr"
-msgstr "Isr"
-
-#: ../rules/base.xml.in.h:195
-msgid "Israel"
-msgstr "以色列"
-
-#: ../rules/base.xml.in.h:196
-msgid "Ita"
-msgstr "Ita"
-
-#: ../rules/base.xml.in.h:197
-msgid "Italy"
-msgstr "æ„大利"
-
-#: ../rules/base.xml.in.h:198
-msgid "Japan"
-msgstr "日本"
-
-#: ../rules/base.xml.in.h:199
-msgid "Japanese 106-key"
-msgstr "日文 106éµ éµç›¤"
-
-#: ../rules/base.xml.in.h:200
-msgid "Jpn"
-msgstr "Jpn"
-
-#: ../rules/base.xml.in.h:201
-msgid "Kannada"
-msgstr "å°åº¦å¡ç´é”æ–‡"
-
-#: ../rules/base.xml.in.h:202
-msgid "Keytronic FlexPro"
-msgstr "Keytronic FlexPro"
-
-#: ../rules/base.xml.in.h:203
-msgid "Kyr"
-msgstr "Kyr"
-
-#: ../rules/base.xml.in.h:204
-msgid "Kyrgyzstan"
-msgstr "å‰çˆ¾å‰æ–¯"
-
-#: ../rules/base.xml.in.h:205
-msgid "LAm"
-msgstr "LAm"
-
-#: ../rules/base.xml.in.h:206
-msgid "Lao"
-msgstr "Lao"
-
-#: ../rules/base.xml.in.h:207
-msgid "Laos"
-msgstr "寮國"
-
-#: ../rules/base.xml.in.h:208
-msgid "Laptop/notebook Compaq (eg. Armada) Laptop Keyboard"
-msgstr "å¯æ”œå¼/筆記型 åº·æŸ (如 Armada) å¯æ”œå¼éµç›¤"
-
-#: ../rules/base.xml.in.h:209
-msgid "Laptop/notebook Compaq (eg. Presario) Internet Keyboard"
-msgstr "å¯æ”œå¼/筆記型 åº·æŸ (如 Presario) 網際éµç›¤"
-
-#: ../rules/base.xml.in.h:210
-msgid "Laptop/notebook Dell Inspiron 8xxx"
-msgstr "å¯æ”œå¼/筆記型 戴爾 Inspiron 8xxx"
-
-#: ../rules/base.xml.in.h:211
-msgid "Latin"
-msgstr "拉ä¸æ–‡"
-
-#: ../rules/base.xml.in.h:212
-msgid "Latin American"
-msgstr "拉ä¸ç¾Žæ´²"
-
-#: ../rules/base.xml.in.h:213
-msgid "Latin Unicode"
-msgstr "拉ä¸æ–‡çµ±ä¸€ç¢¼"
-
-#: ../rules/base.xml.in.h:214
-msgid "Latin Unicode qwerty"
-msgstr "拉ä¸æ–‡çµ±ä¸€ç¢¼ qwerty"
-
-#: ../rules/base.xml.in.h:215
-msgid "Latin qwerty"
-msgstr "拉ä¸æ–‡ qwerty"
-
-#: ../rules/base.xml.in.h:216
-msgid "Latin with guillemots"
-msgstr "拉ä¸æ–‡é™„海鳩符號"
-
-#: ../rules/base.xml.in.h:217
-msgid "Latvia"
-msgstr "拉脫維亞"
-
-#: ../rules/base.xml.in.h:218
-msgid "Left Alt key changes group."
-msgstr "以左邊的 Alt éµæ”¹è®Šç¾¤çµ„。"
-
-#: ../rules/base.xml.in.h:219
-msgid "Left Alt key switches group while pressed."
-msgstr "當按下左邊的 Alt éµæ™‚切æ›ç¾¤çµ„。"
-
-#: ../rules/base.xml.in.h:220
-msgid "Left Ctrl key changes group."
-msgstr "以左邊的 Ctrl éµæ”¹è®Šç¾¤çµ„。"
-
-#: ../rules/base.xml.in.h:221
-msgid "Left Shift key changes group."
-msgstr "以左邊的 Shift éµæ”¹è®Šç¾¤çµ„。"
-
-#: ../rules/base.xml.in.h:222
-msgid "Left Win-key changes group."
-msgstr "以左邊的 Win-key 改變群組。"
-
-#: ../rules/base.xml.in.h:223
-msgid "Left Win-key switches group while pressed."
-msgstr "當按下左邊的 Win-key 時切æ›ç¾¤çµ„。"
-
-#: ../rules/base.xml.in.h:224
-msgid "Lithuania"
-msgstr "立陶宛"
-
-#: ../rules/base.xml.in.h:225
-msgid "Logitech Access Keyboard"
-msgstr "羅技 Access éµç›¤"
-
-#: ../rules/base.xml.in.h:226
-msgid "Logitech Cordless Desktop"
-msgstr "羅技無影手"
-
-#: ../rules/base.xml.in.h:227
-msgid "Logitech Cordless Desktop Navigator"
-msgstr "羅技無影手桌é¢å°Žèˆªå™¨"
-
-#: ../rules/base.xml.in.h:228
-msgid "Logitech Cordless Desktop Optical"
-msgstr "羅技無影手光學組åˆ"
-
-#: ../rules/base.xml.in.h:229
-msgid "Logitech Cordless Desktop Pro"
-msgstr "羅技無影手進階版"
-
-#: ../rules/base.xml.in.h:230
-msgid "Logitech Cordless Desktop Pro (alternate option)"
-msgstr "羅技無影手進階版(替代é¸é …)"
-
-#: ../rules/base.xml.in.h:231
-msgid "Logitech Cordless Desktop Pro (alternate option2)"
-msgstr "羅技無影手進階版(替代é¸é …)"
-
-#: ../rules/base.xml.in.h:232
-msgid "Logitech Cordless Desktop iTouch"
-msgstr "羅技網際無影手"
-
-#: ../rules/base.xml.in.h:233
-msgid "Logitech Cordless Freedom/Desktop Navigator"
-msgstr "羅技極光無影手組åˆ/æ¡Œé¢å°Žèˆªå™¨"
-
-#: ../rules/base.xml.in.h:234
-msgid "Logitech Deluxe Access Keyboard"
-msgstr "羅技強手éµç›¤"
-
-#: ../rules/base.xml.in.h:235
-msgid "Logitech Internet Keyboard"
-msgstr "羅技網際éµç›¤"
-
-#: ../rules/base.xml.in.h:236
-msgid "Logitech Internet Navigator Keyboard"
-msgstr "羅技網際導航éµç›¤"
-
-#: ../rules/base.xml.in.h:237
-msgid "Logitech Ultra-X Keyboard"
-msgstr "羅技銀幻手éµç›¤"
-
-#: ../rules/base.xml.in.h:238
-msgid "Logitech iTouch"
-msgstr "羅技 iTouch"
-
-#: ../rules/base.xml.in.h:239
-msgid "Logitech iTouch Cordless Keyboard (model Y-RB6)"
-msgstr "羅技 iTouch 無影手éµç›¤(型號 Y-RB6)"
-
-#: ../rules/base.xml.in.h:240
-msgid "Logitech iTouch keyboard Internet Navigator"
-msgstr "羅技 iTouch éµç›¤ç¶²éš›å°Žèˆªå™¨"
-
-#: ../rules/base.xml.in.h:241
-msgid "Ltu"
-msgstr "Ltu"
-
-#: ../rules/base.xml.in.h:242
-msgid "Lva"
-msgstr "Lva"
-
-#: ../rules/base.xml.in.h:243
-msgid "Macedonian"
-msgstr "馬其頓文"
-
-#: ../rules/base.xml.in.h:244
-msgid "Macintosh"
-msgstr "Macintosh"
-
-#: ../rules/base.xml.in.h:245
-msgid "Macintosh Old"
-msgstr "Macintosh 舊產å“"
-
-#: ../rules/base.xml.in.h:246
-msgid "Make CapsLock an additional Control."
-msgstr "以 Caps Lock åšç‚ºé™„加的控制éµã€‚"
-
-#: ../rules/base.xml.in.h:247
-msgid "Malayalam"
-msgstr "(å°åº¦)馬來雅拉姆文字"
-
-#: ../rules/base.xml.in.h:248
-msgid "Malta"
-msgstr "馬爾它"
-
-#: ../rules/base.xml.in.h:249
-msgid "Mao"
-msgstr "Mao"
-
-#: ../rules/base.xml.in.h:250
-msgid "Maori"
-msgstr "毛利"
-
-#: ../rules/base.xml.in.h:251
-msgid "Memorex MX1998"
-msgstr "Memorex MX1998"
-
-#: ../rules/base.xml.in.h:252
-msgid "Memorex MX2500 EZ-Access Keyboard"
-msgstr "Memorex MX2500 EZ-Access éµç›¤"
-
-#: ../rules/base.xml.in.h:253
-msgid "Memorex MX2750"
-msgstr "Memorex MX2750"
-
-#: ../rules/base.xml.in.h:254
-msgid "Menu is Compose."
-msgstr "Menu 為組åˆéµã€‚"
-
-#: ../rules/base.xml.in.h:255
-msgid "Menu key changes group."
-msgstr "以 Menu éµæ”¹è®Šç¾¤çµ„。"
-
-#: ../rules/base.xml.in.h:256
-msgid "Meta is mapped to the Win-keys."
-msgstr "Meta é…置到兩個 Win-key。"
-
-#: ../rules/base.xml.in.h:257
-msgid "Meta is mapped to the left Win-key."
-msgstr "Meta é…置到左邊的 Win-key。"
-
-#: ../rules/base.xml.in.h:258
-msgid "Microsoft Internet Keyboard"
-msgstr "微軟網際éµç›¤"
-
-#: ../rules/base.xml.in.h:259
-msgid "Microsoft Internet Keyboard Pro, Swedish"
-msgstr "微軟網際éµç›¤å¢žå¼·ç‰ˆï¼Œç‘žå…¸"
-
-#: ../rules/base.xml.in.h:260
-msgid "Microsoft Natural"
-msgstr "微軟自然éµç›¤"
-
-#: ../rules/base.xml.in.h:261
-msgid "Microsoft Natural Keyboard Pro / Microsoft Internet Keyboard Pro"
-msgstr "微軟原生éµç›¤å¢žå¼·ç‰ˆ/微軟網際éµç›¤å¢žå¼·ç‰ˆ"
-
-#: ../rules/base.xml.in.h:262
-msgid "Microsoft Natural Keyboard Pro OEM"
-msgstr "微軟原生éµç›¤å¢žå¼·ç‰ˆ OEM"
-
-#: ../rules/base.xml.in.h:263
-msgid "Microsoft Natural Keyboard Pro USB / Microsoft Internet Keyboard Pro"
-msgstr "微軟自然éµç›¤å¢žå¼·ç‰ˆ USB/微軟網際éµç›¤å¢žå¼·ç‰ˆ"
-
-#: ../rules/base.xml.in.h:264
-msgid "Microsoft Office Keyboard"
-msgstr "微軟 Office éµç›¤"
-
-#: ../rules/base.xml.in.h:265
-msgid "Microsoft Wireless Multimedia Keyboard 1.0A"
-msgstr "微軟無線多媒體éµç›¤ 1.0A"
-
-#: ../rules/base.xml.in.h:266
-msgid "Miscellaneous compatibility options"
-msgstr "其它相容é¸é …"
-
-#: ../rules/base.xml.in.h:267
-msgid "Mkd"
-msgstr "Mkd"
-
-#: ../rules/base.xml.in.h:268
-msgid "Mlt"
-msgstr "Mlt"
-
-#: ../rules/base.xml.in.h:269
-msgid "Mmr"
-msgstr "Mmr"
-
-#: ../rules/base.xml.in.h:270
-msgid "Mng"
-msgstr "Mng"
-
-#: ../rules/base.xml.in.h:271
-msgid "Mongolia"
-msgstr "è’™å¤"
-
-#: ../rules/base.xml.in.h:272
-msgid "Multilingual"
-msgstr "多語言"
-
-#: ../rules/base.xml.in.h:273
-msgid "Multilingual, second part"
-msgstr "多語言,第二部份"
-
-#: ../rules/base.xml.in.h:274
-msgid "Myanmar"
-msgstr "緬甸"
-
-#: ../rules/base.xml.in.h:275
-msgid "Netherlands"
-msgstr "è·è˜­"
-
-#: ../rules/base.xml.in.h:276
-msgid "Nld"
-msgstr "Nld"
-
-#: ../rules/base.xml.in.h:277
-msgid "Nor"
-msgstr "Nor"
-
-#: ../rules/base.xml.in.h:278
-msgid "Northern Saami"
-msgstr "北部沙米文"
-
-#: ../rules/base.xml.in.h:279
-msgid "Northern Saami, eliminate dead keys"
-msgstr "北部沙米文,除去無用按éµ"
-
-#: ../rules/base.xml.in.h:280
-msgid "Northgate OmniKey 101"
-msgstr "Northgate Omnikey 101"
-
-#: ../rules/base.xml.in.h:281
-msgid "Norway"
-msgstr "挪å¨"
-
-#: ../rules/base.xml.in.h:282
-msgid "NumLock LED shows alternative group."
-msgstr "以 Num Lock 燈號來顯示替代的群組。"
-
-#: ../rules/base.xml.in.h:283
-msgid "Ogham"
-msgstr "(å¤æ„›çˆ¾è˜­)æ­ç”˜æ–‡å­—"
-
-#: ../rules/base.xml.in.h:284
-msgid "Ogham IS434"
-msgstr "æ­ç”˜æ–‡å­— IS434"
-
-#: ../rules/base.xml.in.h:285
-msgid "Oretec MCK-800 MM/Internet keyboard"
-msgstr "Oretec MCK-800 MM/網際éµç›¤"
-
-#: ../rules/base.xml.in.h:286
-msgid "Oriya"
-msgstr "(å°åº¦)奧里雅æ—文字"
-
-#: ../rules/base.xml.in.h:287
-msgid "PC-98xx Series"
-msgstr "PC-98xx 系列"
-
-#: ../rules/base.xml.in.h:288
-msgid "Pak"
-msgstr "Pak"
-
-#: ../rules/base.xml.in.h:289
-msgid "Pakistan"
-msgstr "巴基斯å¦"
-
-#: ../rules/base.xml.in.h:290
-msgid "Pattachote"
-msgstr "æ³°æ–‡"
-
-#: ../rules/base.xml.in.h:291
-msgid "Phonetic"
-msgstr "音標"
-
-#: ../rules/base.xml.in.h:292
-msgid "Pol"
-msgstr "Pol"
-
-#: ../rules/base.xml.in.h:293
-msgid "Poland"
-msgstr "波蘭"
-
-#: ../rules/base.xml.in.h:294
-msgid "Polytonic"
-msgstr "多音字æ¯"
-
-#: ../rules/base.xml.in.h:295
-msgid "Portugal"
-msgstr "è‘¡è„牙"
-
-#: ../rules/base.xml.in.h:296
-msgid "PowerPC PS/2"
-msgstr "PowerPC PS/2"
-
-#: ../rules/base.xml.in.h:297
-msgid "Press Left Alt key to choose 3rd level."
-msgstr "按下左邊的 Alt éµä»¥é¸æ“‡ç¬¬ä¸‰ç´šã€‚"
-
-#: ../rules/base.xml.in.h:298
-msgid "Press Left Win-key to choose 3rd level."
-msgstr "按下左邊的 Win-key 以é¸æ“‡ç¬¬ä¸‰ç´šã€‚"
-
-#: ../rules/base.xml.in.h:299
-msgid "Press Menu key to choose 3rd level."
-msgstr "按下 Menu éµä»¥é¸æ“‡ç¬¬ä¸‰ç´šã€‚"
-
-#: ../rules/base.xml.in.h:300
-msgid "Press Right Alt key to choose 3rd level."
-msgstr "按下å³é‚Šçš„ Alt éµä»¥é¸æ“‡ç¬¬ä¸‰ç´šã€‚"
-
-#: ../rules/base.xml.in.h:301
-msgid "Press Right Control to choose 3rd level."
-msgstr "按下å³é‚Šçš„ Control 以é¸æ“‡ç¬¬ä¸‰ç´šã€‚"
-
-#: ../rules/base.xml.in.h:302
-msgid "Press Right Win-key to choose 3rd level."
-msgstr "按下å³é‚Šçš„ Win-key 以é¸æ“‡ç¬¬ä¸‰ç´šã€‚"
-
-#: ../rules/base.xml.in.h:303
-msgid "Press any of Alt keys to choose 3rd level."
-msgstr "按下任一 Alt éµä»¥é¸æ“‡ç¬¬ä¸‰ç´šã€‚"
-
-#: ../rules/base.xml.in.h:304
-msgid "Press any of Win-keys to choose 3rd level."
-msgstr "按下任一 Win-key 以é¸æ“‡ç¬¬ä¸‰ç´šã€‚"
-
-#: ../rules/base.xml.in.h:305
-msgid "Probhat"
-msgstr "孟加拉 Probhat"
-
-#: ../rules/base.xml.in.h:306
-msgid "Propeller Voyager (KTEZ-1000)"
-msgstr "Propeller Voyager (KTEZ-1000)"
-
-#: ../rules/base.xml.in.h:307
-msgid "Prt"
-msgstr "Prt"
-
-#: ../rules/base.xml.in.h:308
-msgid "QTronix Scorpius 98N+"
-msgstr "QTronix Scorpius 98N+"
-
-#: ../rules/base.xml.in.h:309
-msgid "R-Alt switches group while pressed."
-msgstr "當按下å³é‚Š Alt 時切æ›ç¾¤çµ„。"
-
-#: ../rules/base.xml.in.h:310
-msgid "Right Alt is Compose."
-msgstr "å³é‚Šçš„ Alt 為組åˆéµã€‚"
-
-#: ../rules/base.xml.in.h:311
-msgid "Right Alt key changes group."
-msgstr "以å³é‚Šçš„ Alt éµæ”¹è®Šç¾¤çµ„。"
-
-#: ../rules/base.xml.in.h:312
-msgid "Right Control key works as Right Alt."
-msgstr "å³é‚Š Ctrl éµç­‰åŒæ–¼å³é‚Š Alt。"
-
-#: ../rules/base.xml.in.h:313
-msgid "Right Ctrl is Compose."
-msgstr "å³é‚Šçš„ Ctrl 為組åˆéµã€‚"
-
-#: ../rules/base.xml.in.h:314
-msgid "Right Ctrl key changes group."
-msgstr "以å³é‚Šçš„ Ctrl éµæ”¹è®Šç¾¤çµ„。"
-
-#: ../rules/base.xml.in.h:315
-msgid "Right Ctrl key switches group while pressed."
-msgstr "當按下å³é‚Šçš„ Ctrl éµæ™‚切æ›ç¾¤çµ„。"
-
-#: ../rules/base.xml.in.h:316
-msgid "Right Shift key changes group."
-msgstr "以å³é‚Šçš„ Shift éµæ”¹è®Šç¾¤çµ„。"
-
-#: ../rules/base.xml.in.h:317
-msgid "Right Win-key changes group."
-msgstr "以å³é‚Šçš„ Win-key 改變群組。"
-
-#: ../rules/base.xml.in.h:318
-msgid "Right Win-key is Compose."
-msgstr "å³é‚Šçš„ Win-key 為組åˆéµã€‚"
-
-#: ../rules/base.xml.in.h:319
-msgid "Right Win-key switches group while pressed."
-msgstr "當按下å³é‚Šçš„ Win-key 時切æ›ç¾¤çµ„。"
-
-#: ../rules/base.xml.in.h:320
-msgid "Romania"
-msgstr "羅馬尼亞"
-
-#: ../rules/base.xml.in.h:321
-msgid "Romanian keyboard with German letters"
-msgstr "羅馬尼亞éµç›¤é™„德文字æ¯"
-
-#: ../rules/base.xml.in.h:322
-msgid "Romanian keyboard with German letters, eliminate dead keys"
-msgstr "羅馬尼亞éµç›¤é™„德文字æ¯ï¼Œé™¤åŽ»ç„¡ç”¨æŒ‰éµ"
-
-#: ../rules/base.xml.in.h:323
-msgid "Rou"
-msgstr "Rou"
-
-#: ../rules/base.xml.in.h:324
-msgid "Rus"
-msgstr "Rus"
-
-#: ../rules/base.xml.in.h:325
-msgid "Russia"
-msgstr "ä¿„ç¾…æ–¯"
-
-#: ../rules/base.xml.in.h:326
-msgid "Russian"
-msgstr "ä¿„æ–‡"
-
-#: ../rules/base.xml.in.h:327
-msgid "Russian phonetic"
-msgstr "俄文音標"
-
-#: ../rules/base.xml.in.h:328
-msgid "Russian phonetic, eliminate dead keys"
-msgstr "俄文音標,除去無用按éµ"
-
-#: ../rules/base.xml.in.h:329
-msgid "SK-1300"
-msgstr "SK-1300"
-
-#: ../rules/base.xml.in.h:330
-msgid "SK-2500"
-msgstr "SK-2500"
-
-#: ../rules/base.xml.in.h:331
-msgid "SK-6200"
-msgstr "SK-6200"
-
-#: ../rules/base.xml.in.h:332
-msgid "SK-7100"
-msgstr "SK-7100"
-
-#: ../rules/base.xml.in.h:333
-msgid "SVEN Ergonomic 2500"
-msgstr "SVEN Ergonomic 2500"
-
-#: ../rules/base.xml.in.h:334
-msgid "Samsung SDM 4500P"
-msgstr "三星 SDM 4500P"
-
-#: ../rules/base.xml.in.h:335
-msgid "Samsung SDM 4510P"
-msgstr "三星 SDM 4510P"
-
-#: ../rules/base.xml.in.h:336
-msgid "ScrollLock LED shows alternative group."
-msgstr "以 Scroll Lock 燈號來顯示替代的群組。"
-
-#: ../rules/base.xml.in.h:337
-msgid "Serbian"
-msgstr "塞爾維亞文"
-
-#: ../rules/base.xml.in.h:338
-msgid "Shift with numpad keys works as in MS Windows."
-msgstr "Shift+數字éµç›¤çš„功能等åŒæ–¼åœ¨ MS Windows 之中。"
-
-#: ../rules/base.xml.in.h:339
-msgid "Shift+CapsLock changes group."
-msgstr "以 Shift+Caps Lock éµæ”¹è®Šç¾¤çµ„。"
-
-#: ../rules/base.xml.in.h:340
-msgid "Slovakia"
-msgstr "斯洛ä¼å…‹"
-
-#: ../rules/base.xml.in.h:341
-msgid "Slovenia"
-msgstr "斯洛凡尼亞"
-
-#: ../rules/base.xml.in.h:342
-msgid "Spain"
-msgstr "西ç­ç‰™"
-
-#: ../rules/base.xml.in.h:343
-msgid "Special keys (Ctrl+Alt+&lt;key&gt;) handled in a server."
-msgstr "伺æœå™¨è™•ç†çš„ç‰¹æ®Šéµ (Ctrl+Alt+&lt;key&gt;)。"
-
-#: ../rules/base.xml.in.h:344
-msgid "SrL"
-msgstr "SrL"
-
-#: ../rules/base.xml.in.h:345
-msgid "Sri Lanka"
-msgstr "斯里蘭å¡"
-
-#: ../rules/base.xml.in.h:346
-msgid "Srp"
-msgstr "Srp"
-
-#: ../rules/base.xml.in.h:347
-msgid "Standard"
-msgstr "標準"
-
-#. RSTU 2019-91
-#: ../rules/base.xml.in.h:349
-msgid "Standard RSTU"
-msgstr "標準 RSTU"
-
-#. RSTU 2019-91
-#: ../rules/base.xml.in.h:351
-msgid "Standard RSTU on Russian layout"
-msgstr "俄文排列上的標準 RSTU"
-
-#: ../rules/base.xml.in.h:352
-msgid "Sun dead keys"
-msgstr "Sun 無用按éµ"
-
-#: ../rules/base.xml.in.h:353
-msgid "Super Power Multimedia Keyboard"
-msgstr "Super Power 多媒體éµç›¤"
-
-#: ../rules/base.xml.in.h:354
-msgid "Super is mapped to the Win-keys (default)."
-msgstr "Super é…置到兩個 Win-key (é è¨­å€¼ï¼‰ã€‚"
-
-#: ../rules/base.xml.in.h:355
-msgid "Svk"
-msgstr "Svk"
-
-#: ../rules/base.xml.in.h:356
-msgid "Svn"
-msgstr "Svn"
-
-#: ../rules/base.xml.in.h:357
-msgid "Swap Control and CapsLock."
-msgstr "Control 與 Caps Lock éµäº’æ›ã€‚"
-
-#: ../rules/base.xml.in.h:358
-msgid "Swe"
-msgstr "Swe"
-
-#: ../rules/base.xml.in.h:359
-msgid "Sweden"
-msgstr "ç‘žå…¸"
-
-#: ../rules/base.xml.in.h:360
-msgid "Switzerland"
-msgstr "瑞士"
-
-#: ../rules/base.xml.in.h:361
-msgid "Symplon PaceBook (tablet PC)"
-msgstr "Symplon PaceBook (å¹³æ¿é›»è…¦)"
-
-#: ../rules/base.xml.in.h:362
-msgid "Syr"
-msgstr "Syr"
-
-#: ../rules/base.xml.in.h:363
-msgid "Syria"
-msgstr "敘利亞"
-
-#: ../rules/base.xml.in.h:364
-msgid "Syriac"
-msgstr "敘利亞語"
-
-#: ../rules/base.xml.in.h:365
-msgid "Syriac phonetic"
-msgstr "敘利亞音標"
-
-#: ../rules/base.xml.in.h:366
-msgid "TIS-820.2538"
-msgstr "泰語(TIS-820.2538)"
-
-#: ../rules/base.xml.in.h:367
-msgid "Tajikistan"
-msgstr "å¡”å‰å…‹"
-
-#: ../rules/base.xml.in.h:368
-msgid "Tamil"
-msgstr "å¦ç±³çˆ¾æ–‡"
-
-#: ../rules/base.xml.in.h:369
-msgid "Tamil INSCRIPT"
-msgstr "å¦ç±³çˆ¾æ–‡ INSCRIPT"
-
-#: ../rules/base.xml.in.h:370
-msgid "Tamil TAB Typewriter"
-msgstr "å¦ç±³çˆ¾æ–‡ TAB 打字機"
-
-#: ../rules/base.xml.in.h:371
-msgid "Tamil TSCII Typewriter"
-msgstr "å¦ç±³çˆ¾æ–‡ TSCII 打字機"
-
-#: ../rules/base.xml.in.h:372
-msgid "Tamil Unicode"
-msgstr "å¦ç±³çˆ¾æ–‡çµ±ä¸€ç¢¼"
-
-#: ../rules/base.xml.in.h:373
-msgid "Telugu"
-msgstr "泰盧固語"
-
-#: ../rules/base.xml.in.h:374
-msgid "Tha"
-msgstr "Tha"
-
-#: ../rules/base.xml.in.h:375
-msgid "Thailand"
-msgstr "泰國"
-
-#: ../rules/base.xml.in.h:376
-msgid "Third level choosers"
-msgstr "第三級é¸æ“‡å™¨"
-
-#: ../rules/base.xml.in.h:377
-msgid "Tilde (~) variant"
-msgstr "波折號 (~) 變化"
-
-#: ../rules/base.xml.in.h:378
-msgid "Tjk"
-msgstr "Tjk"
-
-#: ../rules/base.xml.in.h:379
-msgid "Toshiba Satellite S3000"
-msgstr "æ±èŠ Satellite S3000"
-
-#: ../rules/base.xml.in.h:380
-msgid "Trust Direct Access Keyboard"
-msgstr "Trust Direct Access éµç›¤"
-
-#: ../rules/base.xml.in.h:381
-msgid "Trust Wireless Keyboard Classic"
-msgstr "Trust 無線經典éµç›¤"
-
-#: ../rules/base.xml.in.h:382
-msgid "Tur"
-msgstr "Tur"
-
-#: ../rules/base.xml.in.h:383
-msgid "Turkish"
-msgstr "土耳其文"
-
-#: ../rules/base.xml.in.h:384
-msgid "Typewriter"
-msgstr "打字機"
-
-#: ../rules/base.xml.in.h:385
-msgid "U.S. English"
-msgstr "美å¼è‹±æ–‡"
-
-#: ../rules/base.xml.in.h:386
-msgid "US keyboard with Croatian letters"
-msgstr "美國éµç›¤é™„克羅埃西亞字æ¯"
-
-#: ../rules/base.xml.in.h:387
-msgid "US keyboard with Lithuanian letters"
-msgstr "美國éµç›¤é™„立陶宛字æ¯"
-
-#: ../rules/base.xml.in.h:388
-msgid "US keyboard with Maltian letters"
-msgstr "美國éµç›¤é™„馬爾它字æ¯"
-
-#: ../rules/base.xml.in.h:389
-msgid "US keyboard with Romanian letters"
-msgstr "美國éµç›¤é™„羅馬尼亞字æ¯"
-
-#: ../rules/base.xml.in.h:390
-msgid "USA"
-msgstr "USA"
-
-#: ../rules/base.xml.in.h:391
-msgid "Ukr"
-msgstr "Ukr"
-
-#: ../rules/base.xml.in.h:392
-msgid "Ukraine"
-msgstr "çƒå…‹è˜­"
-
-#: ../rules/base.xml.in.h:393
-msgid "UnicodeExpert"
-msgstr "UnicodeExpert"
-
-#: ../rules/base.xml.in.h:394
-msgid "United Kingdom"
-msgstr "英國"
-
-#: ../rules/base.xml.in.h:395
-msgid "Urdu"
-msgstr "çƒéƒ½æ–‡"
-
-#: ../rules/base.xml.in.h:396
-msgid "Use keyboard LED to show alternative group."
-msgstr "使用éµç›¤ç‡ˆè™Ÿä¾†é¡¯ç¤ºæ›¿ä»£çš„群組。"
-
-#: ../rules/base.xml.in.h:397
-msgid "Uzb"
-msgstr "Uzb"
-
-#: ../rules/base.xml.in.h:398
-msgid "Uzbekistan"
-msgstr "çƒèŒ²åˆ¥å…‹"
-
-#: ../rules/base.xml.in.h:399
-msgid "Vietnam"
-msgstr "越å—"
-
-#: ../rules/base.xml.in.h:400
-msgid "Vnm"
-msgstr "Vnm"
-
-#: ../rules/base.xml.in.h:401
-msgid "Winbook Model XP5"
-msgstr "Winbook XP5 éµç›¤"
-
-#: ../rules/base.xml.in.h:402
-msgid "Winkeys"
-msgstr "Winkeys"
-
-#: ../rules/base.xml.in.h:403
-msgid "With &lt;\\|&gt; key"
-msgstr "附帶 &lt;\\|&gt; éµ"
-
-#: ../rules/base.xml.in.h:404
-msgid "With guillemots"
-msgstr "附帶海鳩符號"
-
-#: ../rules/base.xml.in.h:405
-msgid "Yahoo! Internet Keyboard"
-msgstr "雅虎網際éµç›¤"
-
-#: ../rules/base.xml.in.h:406
-msgid "Z and ZHE swapped"
-msgstr "å·²äº¤æ› Z 與 ZHE"
-
-#: ../rules/base.xml.in.h:407
-msgid "azerty"
-msgstr "azerty"
-
-#: ../rules/base.xml.in.h:408
-msgid "azerty/digits"
-msgstr "azerty/數字"
-
-#: ../rules/base.xml.in.h:409
-msgid "digits"
-msgstr "數字"
-
-#: ../rules/base.xml.in.h:410
-msgid "lyx"
-msgstr "lyx"
-
-#: ../rules/base.xml.in.h:411
-msgid "qwerty"
-msgstr "qwerty"
-
-#: ../rules/base.xml.in.h:412
-msgid "qwerty, extended Backslash"
-msgstr "qwerty,延伸的å斜線"
-
-#: ../rules/base.xml.in.h:413
-msgid "qwerty/digits"
-msgstr "qwerty/數字"
-
-#: ../rules/base.xml.in.h:414
-msgid "qwertz"
-msgstr "qwertz"
-
-#: ../rules/base.xml.in.h:415
-msgid "si1452"
-msgstr "si1452"
+# Traditional Chinese Messages for xkeyboard-config
+# Copyright (C) 2003, 05 Free Software Foundation, Inc.
+# Funda Wang <fundawang@linux.net.cn>, 2003
+# Wei-Lun Chao <chaoweilun@pcmail.com.tw>, 2005
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: xkeyboard-config 0.6\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2005-08-14 00:39+0100\n"
+"PO-Revision-Date: 2005-09-19 17:19+0800\n"
+"Last-Translator: Wei-Lun Chao <chaoweilun@pcmail.com.tw>\n"
+"Language-Team: Chinese (traditional) <zh-l10n@linux.org.tw>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+
+#: ../rules/base.xml.in.h:1
+msgid "\"Standard\""
+msgstr "「標準ã€"
+
+#: ../rules/base.xml.in.h:2
+msgid "(F)"
+msgstr "(F)"
+
+#: ../rules/base.xml.in.h:3
+msgid "101/qwerty/comma/Dead keys"
+msgstr "101/qwerty/逗點/無用按éµ"
+
+#: ../rules/base.xml.in.h:4
+msgid "101/qwerty/comma/Eliminate dead keys"
+msgstr "101/qwerty/逗點/除去無用按éµ"
+
+#: ../rules/base.xml.in.h:5
+msgid "101/qwerty/dot/Dead keys"
+msgstr "101/qwerty/å¥é»ž/無用按éµ"
+
+#: ../rules/base.xml.in.h:6
+msgid "101/qwerty/dot/Eliminate dead keys"
+msgstr "101/qwerty/å¥é»ž/除去無用按éµ"
+
+#: ../rules/base.xml.in.h:7
+msgid "101/qwertz/comma/Dead keys"
+msgstr "101/qwertz/逗點/無用按éµ"
+
+#: ../rules/base.xml.in.h:8
+msgid "101/qwertz/comma/Eliminate dead keys"
+msgstr "101/qwerty/逗點/除去無用按éµ"
+
+#: ../rules/base.xml.in.h:9
+msgid "101/qwertz/dot/Dead keys"
+msgstr "101/qwertz/å¥é»ž/無用按éµ"
+
+#: ../rules/base.xml.in.h:10
+msgid "101/qwertz/dot/Eliminate dead keys"
+msgstr "101/qwertz/å¥é»ž/除去無用按éµ"
+
+#: ../rules/base.xml.in.h:11
+msgid "102/qwerty/comma/Dead keys"
+msgstr "102/qwerty/逗點/無用按éµ"
+
+#: ../rules/base.xml.in.h:12
+msgid "102/qwerty/comma/Eliminate dead keys"
+msgstr "102/qwerty/逗點/除去無用按éµ"
+
+#: ../rules/base.xml.in.h:13
+msgid "102/qwerty/dot/Dead keys"
+msgstr "102/qwerty/å¥é»ž/無用按éµ"
+
+#: ../rules/base.xml.in.h:14
+msgid "102/qwerty/dot/Eliminate dead keys"
+msgstr "102/qwerty/å¥é»ž/除去無用按éµ"
+
+#: ../rules/base.xml.in.h:15
+msgid "102/qwertz/comma/Dead keys"
+msgstr "102/qwertz/逗點/無用按éµ"
+
+#: ../rules/base.xml.in.h:16
+msgid "102/qwertz/comma/Eliminate dead keys"
+msgstr "102/qwertz/逗點/除去無用按éµ"
+
+#: ../rules/base.xml.in.h:17
+msgid "102/qwertz/dot/Dead keys"
+msgstr "102/qwertz/å¥é»ž/無用按éµ"
+
+#: ../rules/base.xml.in.h:18
+msgid "102/qwertz/dot/Eliminate dead keys"
+msgstr "102/qwertz/å¥é»ž/除去無用按éµ"
+
+#: ../rules/base.xml.in.h:19
+msgid "A4Tech KB-21"
+msgstr "A4Tech KB-21"
+
+#: ../rules/base.xml.in.h:20
+msgid "A4Tech KBS-8"
+msgstr "A4Tech KBS-8"
+
+#: ../rules/base.xml.in.h:21
+msgid "ACPI Standard"
+msgstr "ACPI 標準"
+
+#: ../rules/base.xml.in.h:22
+msgid "Acer AirKey V"
+msgstr "Acer AirKey V"
+
+#: ../rules/base.xml.in.h:23
+msgid "Acer TravelMate 800"
+msgstr "Acer TravelMate 800"
+
+#: ../rules/base.xml.in.h:24
+msgid "Add the EuroSign to the 2 key."
+msgstr "å°‡æ­å…ƒç¬¦è™ŸåŠ åˆ° 2 éµä¹‹ä¸Š"
+
+#: ../rules/base.xml.in.h:25
+msgid "Add the EuroSign to the 5 key."
+msgstr "å°‡æ­å…ƒç¬¦è™ŸåŠ åˆ° 5 éµä¹‹ä¸Š"
+
+#: ../rules/base.xml.in.h:26
+msgid "Add the EuroSign to the E key."
+msgstr "å°‡æ­å…ƒç¬¦è™ŸåŠ åˆ° E éµä¹‹ä¸Š"
+
+#: ../rules/base.xml.in.h:27
+msgid "Add the standard behavior to Menu key."
+msgstr "增加標準功能至 Menu éµã€‚"
+
+#: ../rules/base.xml.in.h:28
+msgid "Adding the EuroSign to certain keys"
+msgstr "å°‡æ­å…ƒç¬¦è™ŸåŠ åˆ°ç‰¹å®šéµä¹‹ä¸Š"
+
+#: ../rules/base.xml.in.h:29
+msgid "Advance Scorpius KI"
+msgstr "進階 Scorpius KI"
+
+#: ../rules/base.xml.in.h:30
+msgid "Alb"
+msgstr "Alb"
+
+#: ../rules/base.xml.in.h:31
+msgid "Albania"
+msgstr "阿爾巴尼亞"
+
+#: ../rules/base.xml.in.h:32
+msgid "Alt and Meta are on the Alt keys (default)."
+msgstr "Alt 與 Meta é…置於 Alt éµï¼ˆé è¨­å€¼ï¼‰ã€‚"
+
+#: ../rules/base.xml.in.h:33
+msgid "Alt is mapped to the right Win-key and Super to Menu."
+msgstr "Alt é…置到å³é‚Šçš„ Win-key 並優先於 Menu。"
+
+#: ../rules/base.xml.in.h:34
+msgid "Alt+Control changes group."
+msgstr "以 Alt+Control 改變群組。"
+
+#: ../rules/base.xml.in.h:35
+msgid "Alt+Shift changes group."
+msgstr "以 Alt+Shift 改變群組。"
+
+#: ../rules/base.xml.in.h:36
+msgid "Alt-Q"
+msgstr "Alt-Q"
+
+#: ../rules/base.xml.in.h:37
+msgid "Alt/Win key behavior"
+msgstr "Alt/Win éµåŠŸèƒ½"
+
+#: ../rules/base.xml.in.h:38
+msgid "Alternative"
+msgstr "替代é¸æ“‡"
+
+#: ../rules/base.xml.in.h:39
+msgid "Alternative international (former us_intl)"
+msgstr "替代國際化 (之å‰ç‚º us_intl)"
+
+#: ../rules/base.xml.in.h:40
+msgid "Alternative, Sun dead keys"
+msgstr "替代é¸æ“‡ï¼ŒSun 的無用按éµ"
+
+#: ../rules/base.xml.in.h:41
+msgid "Alternative, eliminate dead keys"
+msgstr "替代é¸æ“‡ï¼Œé™¤åŽ»ç„¡ç”¨æŒ‰éµ"
+
+#: ../rules/base.xml.in.h:42
+msgid "Apostrophe (') variant"
+msgstr "撇號 (') 變型"
+
+#: ../rules/base.xml.in.h:43
+msgid "Ara"
+msgstr "Ara"
+
+#: ../rules/base.xml.in.h:44
+msgid "Arabic"
+msgstr "阿拉伯文"
+
+#: ../rules/base.xml.in.h:45
+msgid "Arm"
+msgstr "Arm"
+
+#: ../rules/base.xml.in.h:46
+msgid "Armenia"
+msgstr "亞美尼亞"
+
+#: ../rules/base.xml.in.h:47
+msgid "Aze"
+msgstr "Aze"
+
+#: ../rules/base.xml.in.h:48
+msgid "Azerbaijan"
+msgstr "亞塞拜然"
+
+#: ../rules/base.xml.in.h:49
+msgid "Azona RF2300 wireless Internet Keyboard"
+msgstr "Azona RF2300 無線網際éµç›¤"
+
+#: ../rules/base.xml.in.h:50
+msgid "BTC 5090"
+msgstr "BTC 5090"
+
+#: ../rules/base.xml.in.h:51
+msgid "BTC 5113RF Multimedia"
+msgstr "BTC 5113RF 多媒體"
+
+#: ../rules/base.xml.in.h:52
+msgid "BTC 5126T"
+msgstr "BTC 5126T"
+
+#: ../rules/base.xml.in.h:53
+msgid "BTC 9000"
+msgstr "BTC 9000"
+
+#: ../rules/base.xml.in.h:54
+msgid "BTC 9000A"
+msgstr "BTC 9000A"
+
+#: ../rules/base.xml.in.h:55
+msgid "BTC 9001AH"
+msgstr "BTC 9001AH"
+
+#: ../rules/base.xml.in.h:56
+msgid "Ban"
+msgstr "Ban"
+
+#: ../rules/base.xml.in.h:57
+msgid "Bangladesh"
+msgstr "孟加拉"
+
+#: ../rules/base.xml.in.h:58
+msgid "Bel"
+msgstr "Bel"
+
+#: ../rules/base.xml.in.h:59
+msgid "Belarus"
+msgstr "白俄"
+
+#: ../rules/base.xml.in.h:60
+msgid "Belgium"
+msgstr "比利時"
+
+#: ../rules/base.xml.in.h:61
+msgid "Bengali"
+msgstr "孟加拉文"
+
+#: ../rules/base.xml.in.h:62
+msgid "Bengali Probhat"
+msgstr "孟加拉 Probhat 文"
+
+#: ../rules/base.xml.in.h:63
+msgid "Bgr"
+msgstr "Bgr"
+
+#: ../rules/base.xml.in.h:64
+msgid "Bhu"
+msgstr "Bhu"
+
+#: ../rules/base.xml.in.h:65
+msgid "Bhutan"
+msgstr "ä¸ä¸¹"
+
+#: ../rules/base.xml.in.h:66
+msgid "Bih"
+msgstr "Bih"
+
+#: ../rules/base.xml.in.h:67
+msgid "Blr"
+msgstr "Blr"
+
+#: ../rules/base.xml.in.h:68
+msgid "Bosnia and Herzegovina"
+msgstr "波士尼亞åŠèµ«å¡žå“¥ç¶­é‚£"
+
+#: ../rules/base.xml.in.h:69
+msgid "Both Alt keys together change group."
+msgstr "åŒæ™‚以兩個 Alt éµæ”¹è®Šç¾¤çµ„。"
+
+#: ../rules/base.xml.in.h:70
+msgid "Both Ctrl keys together change group."
+msgstr "åŒæ™‚以兩個 Ctrl éµæ”¹è®Šç¾¤çµ„。"
+
+#: ../rules/base.xml.in.h:71
+msgid "Both Shift keys together change group."
+msgstr "åŒæ™‚以兩個 Shift éµæ”¹è®Šç¾¤çµ„。"
+
+#: ../rules/base.xml.in.h:72
+msgid "Both Win-keys switch group while pressed."
+msgstr "當按下兩個 Win-key 時切æ›ç¾¤çµ„。"
+
+#: ../rules/base.xml.in.h:73
+msgid "Bra"
+msgstr "Bra"
+
+#: ../rules/base.xml.in.h:74
+msgid "Brazil"
+msgstr "巴西"
+
+#: ../rules/base.xml.in.h:75
+msgid "Brazilian ABNT2"
+msgstr "巴西 ABNT2 éµç›¤"
+
+#: ../rules/base.xml.in.h:76
+msgid "Brother Internet Keyboard"
+msgstr "Brother 網際éµç›¤"
+
+#: ../rules/base.xml.in.h:77
+msgid "Bulgaria"
+msgstr "ä¿åŠ åˆ©äºž"
+
+#: ../rules/base.xml.in.h:78
+msgid "Can"
+msgstr "Can"
+
+#: ../rules/base.xml.in.h:79
+msgid "Canada"
+msgstr "加拿大"
+
+#: ../rules/base.xml.in.h:80
+msgid "CapsLock LED shows alternative group."
+msgstr "以 CapsLock 燈號來顯示替代的群組。"
+
+#: ../rules/base.xml.in.h:81
+msgid "CapsLock acts as Shift with locking. Shift cancels CapsLock."
+msgstr "Caps Lock 充當鎖定的 Shift。å¯ä»¥æŒ‰ Shift å–消之。"
+
+#: ../rules/base.xml.in.h:82
+msgid "CapsLock acts as Shift with locking. Shift doesn't cancel CapsLock."
+msgstr "Caps Lock 充當鎖定的 Shift。無法以按 Shift å–消之。"
+
+#: ../rules/base.xml.in.h:83
+msgid "CapsLock just locks the Shift modifier."
+msgstr "Caps Lock åªç”¨æ–¼éŽ–定 Shift 變更éµã€‚"
+
+#: ../rules/base.xml.in.h:84
+msgid "CapsLock key behavior"
+msgstr "Caps Lock éµåŠŸèƒ½"
+
+#: ../rules/base.xml.in.h:85
+msgid "CapsLock key changes group."
+msgstr "以 Caps Lock éµæ”¹è®Šç¾¤çµ„"
+
+#: ../rules/base.xml.in.h:86
+msgid "CapsLock toggles Shift so all keys are affected."
+msgstr "以 Caps Lock åˆ‡æ› Shift 狀態而影響到所有按éµã€‚"
+
+#: ../rules/base.xml.in.h:87
+msgid "CapsLock toggles normal capitalization of alphabetic characters."
+msgstr "以 Caps Lock 切æ›æ­£å¸¸çš„å­—æ¯å­—元大寫功能。"
+
+#: ../rules/base.xml.in.h:88
+msgid "CapsLock uses internal capitalization. Shift cancels CapsLock."
+msgstr "Caps Lock 使用內建的大寫功能。å¯ä»¥ Shift å–消之。"
+
+#: ../rules/base.xml.in.h:89
+msgid "CapsLock uses internal capitalization. Shift doesn't cancel CapsLock."
+msgstr "Caps Lock 使用內建的大寫功能。無法以 Shift å–消之。"
+
+#: ../rules/base.xml.in.h:90
+msgid "Che"
+msgstr "Che"
+
+#: ../rules/base.xml.in.h:91
+msgid "Cherry Blue Line CyBo@rd"
+msgstr "Cherry Blue Line CyBo@rd"
+
+#: ../rules/base.xml.in.h:92
+msgid "Cherry Blue Line CyBo@rd (alternate option)"
+msgstr "Cherry Blue Line CyBo@rd (替代é¸é …)"
+
+#: ../rules/base.xml.in.h:93
+msgid "Cherry CyMotion Master Linux"
+msgstr "Cherry CyMotion Master Linux"
+
+#: ../rules/base.xml.in.h:94
+msgid "Chicony Internet Keyboard"
+msgstr "Chicony 網際網路éµç›¤"
+
+#: ../rules/base.xml.in.h:95
+msgid "Chicony KB-9885"
+msgstr "Chicony KB-9885"
+
+#: ../rules/base.xml.in.h:96
+msgid "CloGaelach"
+msgstr "CloGaelach"
+
+#: ../rules/base.xml.in.h:97
+msgid "Compaq Easy Access Keyboard"
+msgstr "康æŸè¼•é¬†å­˜å–éµç›¤"
+
+#: ../rules/base.xml.in.h:98
+msgid "Compaq Internet Keyboard (13 keys)"
+msgstr "康æŸç¶²éš›éµç›¤(13éµ)"
+
+#: ../rules/base.xml.in.h:99
+msgid "Compaq Internet Keyboard (18 keys)"
+msgstr "康æŸç¶²éš›éµç›¤(18éµ)"
+
+#: ../rules/base.xml.in.h:100
+msgid "Compaq Internet Keyboard (7 keys)"
+msgstr "康æŸç¶²éš›éµç›¤(7éµ)"
+
+#: ../rules/base.xml.in.h:101
+msgid "Compaq iPaq Keyboard"
+msgstr "åº·æŸ iPaq éµç›¤"
+
+#: ../rules/base.xml.in.h:102
+msgid "Compose key position"
+msgstr "Compose éµçš„ä½ç½®"
+
+#: ../rules/base.xml.in.h:103
+msgid "Control key at bottom left"
+msgstr "Control éµåœ¨å·¦ä¸‹æ–¹"
+
+#: ../rules/base.xml.in.h:104
+msgid "Control key at left of 'A'"
+msgstr "Control éµåœ¨â€œAâ€çš„左邊"
+
+#: ../rules/base.xml.in.h:105
+msgid "Control key position"
+msgstr "Control éµçš„ä½ç½®"
+
+#: ../rules/base.xml.in.h:106
+msgid "Control+Shift changes group."
+msgstr "以 Control+Shift éµæ”¹è®Šç¾¤çµ„。"
+
+#: ../rules/base.xml.in.h:107
+msgid "Croatia"
+msgstr "克羅埃西亞"
+
+#: ../rules/base.xml.in.h:108
+msgid "Cyrillic"
+msgstr "斯拉夫文"
+
+#: ../rules/base.xml.in.h:109
+msgid "Cze"
+msgstr "Cze"
+
+#: ../rules/base.xml.in.h:110
+msgid "Czechia"
+msgstr "æ·å…‹æ–‡"
+
+#: ../rules/base.xml.in.h:111
+msgid "DTK2000"
+msgstr "DTK2000"
+
+#: ../rules/base.xml.in.h:112
+msgid "Dead acute"
+msgstr "Dead acute"
+
+#: ../rules/base.xml.in.h:113
+msgid "Dead grave acute"
+msgstr "Dead grave acute"
+
+#: ../rules/base.xml.in.h:114
+msgid "Dell"
+msgstr "戴爾"
+
+#: ../rules/base.xml.in.h:115
+msgid "Dell 101-key PC"
+msgstr "戴爾 101 éµ éµç›¤"
+
+#: ../rules/base.xml.in.h:116
+msgid "Denmark"
+msgstr "丹麥"
+
+#: ../rules/base.xml.in.h:117
+msgid "Deu"
+msgstr "Deu"
+
+#: ../rules/base.xml.in.h:118
+msgid "Dexxa Wireless Desktop Keyboard"
+msgstr "Dexxa ç„¡ç·šæ¡Œé¢éµç›¤"
+
+#: ../rules/base.xml.in.h:119
+msgid "Dhivehi"
+msgstr "迪è²å–œæ–‡"
+
+#: ../rules/base.xml.in.h:120
+msgid "Diamond 9801 / 9802 series"
+msgstr "Diamond 9801 / 9802 系列"
+
+#: ../rules/base.xml.in.h:121
+msgid "Div"
+msgstr "Div"
+
+#: ../rules/base.xml.in.h:122
+msgid "Dnk"
+msgstr "Dnk"
+
+#: ../rules/base.xml.in.h:123
+msgid "Dvorak"
+msgstr "Dvorak"
+
+#: ../rules/base.xml.in.h:124
+msgid "Dvorak, Polish quotes on key \"1/!\""
+msgstr "Dvorak,波蘭å¼å¼•è™Ÿç½®æ–¼ã€Œ1/!ã€æŒ‰éµ"
+
+#: ../rules/base.xml.in.h:125
+msgid "Dvorak, Polish quotes on quotemark key"
+msgstr "Dvorak,波蘭å¼å¼•è™Ÿç½®æ–¼ã€Œ1/!ã€æŒ‰éµ"
+
+#: ../rules/base.xml.in.h:126
+msgid "Eliminate dead keys"
+msgstr "除去無用按éµ"
+
+#: ../rules/base.xml.in.h:127
+msgid "Ennyah DKB-1008"
+msgstr "Ennyah DKB-1008"
+
+#: ../rules/base.xml.in.h:128
+msgid "Esp"
+msgstr "Esp"
+
+#: ../rules/base.xml.in.h:129
+msgid "Est"
+msgstr "Est"
+
+#: ../rules/base.xml.in.h:130
+msgid "Estonia"
+msgstr "愛沙尼亞"
+
+#: ../rules/base.xml.in.h:131
+msgid "Everex STEPnote"
+msgstr "Everex STEPnote"
+
+#: ../rules/base.xml.in.h:132
+msgid "Extended"
+msgstr "延伸的"
+
+#: ../rules/base.xml.in.h:133
+msgid "Extended Backslash"
+msgstr "延伸的å斜線"
+
+#: ../rules/base.xml.in.h:134
+msgid "F-letter (F) variant"
+msgstr "F å­—æ¯è®ŠåŒ–"
+
+#: ../rules/base.xml.in.h:135
+msgid "Fao"
+msgstr "Fao"
+
+#: ../rules/base.xml.in.h:136
+msgid "Faroe Islands"
+msgstr "法羅群島"
+
+#: ../rules/base.xml.in.h:137
+msgid "Fin"
+msgstr "Fin"
+
+#: ../rules/base.xml.in.h:138
+msgid "Finland"
+msgstr "芬蘭"
+
+#: ../rules/base.xml.in.h:139
+msgid "Fra"
+msgstr "Fra"
+
+#: ../rules/base.xml.in.h:140
+msgid "France"
+msgstr "法國"
+
+#: ../rules/base.xml.in.h:141
+msgid "French"
+msgstr "法文"
+
+#: ../rules/base.xml.in.h:142
+msgid "French (legacy)"
+msgstr "法文 (傳統)"
+
+#: ../rules/base.xml.in.h:143
+msgid "French Dvorak"
+msgstr "法文 Dvorak"
+
+#: ../rules/base.xml.in.h:144
+msgid "French, Sun dead keys"
+msgstr "法文,Sun 的無用按éµ"
+
+#: ../rules/base.xml.in.h:145
+msgid "French, eliminate dead keys"
+msgstr "法文,除去無用按éµ"
+
+#: ../rules/base.xml.in.h:146
+msgid "GBr"
+msgstr "GBr"
+
+#: ../rules/base.xml.in.h:147
+msgid "Generic 101-key PC"
+msgstr "一般 101éµ éµç›¤"
+
+#: ../rules/base.xml.in.h:148
+msgid "Generic 102-key (Intl) PC"
+msgstr "一般 102éµ (國際) éµç›¤"
+
+#: ../rules/base.xml.in.h:149
+msgid "Generic 104-key PC"
+msgstr "一般 104éµ éµç›¤"
+
+#: ../rules/base.xml.in.h:150
+msgid "Generic 105-key (Intl) PC"
+msgstr "一般 105 éµ (國際) éµç›¤"
+
+#: ../rules/base.xml.in.h:151
+msgid "Genius Comfy KB-16M / Genius MM Keyboard KWD-910"
+msgstr "昆盈 Comfy KB-16M / 昆盈 MM éµç›¤ KWD-910"
+
+#: ../rules/base.xml.in.h:152
+msgid "Genius Comfy KB-21e-Scroll"
+msgstr "昆盈 Comfy KB-21e-Scroll"
+
+#: ../rules/base.xml.in.h:153
+msgid "Geo"
+msgstr "Geo"
+
+#: ../rules/base.xml.in.h:154
+msgid "Georgia"
+msgstr "喬治亞"
+
+#: ../rules/base.xml.in.h:155
+msgid "German, Sun dead keys"
+msgstr "德文,Sun 的無用按éµ"
+
+#: ../rules/base.xml.in.h:156
+msgid "German, eliminate dead keys"
+msgstr "德文,除去無用按éµ"
+
+#: ../rules/base.xml.in.h:157
+msgid "Germany"
+msgstr "德國"
+
+#: ../rules/base.xml.in.h:158
+msgid "Gre"
+msgstr "Gre"
+
+#: ../rules/base.xml.in.h:159
+msgid "Greece"
+msgstr "希臘"
+
+#: ../rules/base.xml.in.h:160
+msgid "Group Shift/Lock behavior"
+msgstr "群組 Shift/Lock 功能"
+
+#: ../rules/base.xml.in.h:161
+msgid "Gujarati"
+msgstr "å¤å‰æ‹‰ç‰¹æ–‡(å°åº¦)"
+
+#: ../rules/base.xml.in.h:162
+msgid "Gurmukhi"
+msgstr "å¤çˆ¾ç©†å¸Œæ–‡"
+
+#: ../rules/base.xml.in.h:163
+msgid "Gyration"
+msgstr "回轉"
+
+#: ../rules/base.xml.in.h:164
+msgid "Hewlett-Packard Internet Keyboard"
+msgstr "惠普網際éµç›¤"
+
+#: ../rules/base.xml.in.h:165
+msgid "Hewlett-Packard Omnibook 500 FA"
+msgstr "惠普 Omnibook 500 FA"
+
+#: ../rules/base.xml.in.h:166
+msgid "Hewlett-Packard Omnibook 5xx"
+msgstr "惠普 Omnibook 5xx"
+
+#: ../rules/base.xml.in.h:167
+msgid "Hewlett-Packard Omnibook 6000/6100"
+msgstr "惠普 Omnibook 6000/6100"
+
+#: ../rules/base.xml.in.h:168
+msgid "Hewlett-Packard Omnibook XE3 GC"
+msgstr "惠普 Omnibook XE3 GC"
+
+#: ../rules/base.xml.in.h:169
+msgid "Hewlett-Packard Omnibook XE3 GF"
+msgstr "惠普 Omnibook XE3 CF"
+
+#: ../rules/base.xml.in.h:170
+msgid "Hewlett-Packard Omnibook XT1000"
+msgstr "惠普 Omnibook XT1000"
+
+#: ../rules/base.xml.in.h:171
+msgid "Hewlett-Packard Pavilion ZT11xx"
+msgstr "惠普 Pavilion ZT11xx"
+
+#: ../rules/base.xml.in.h:172
+msgid "Hewlett-Packard SK-2501 Multimedia Keyboard"
+msgstr "惠普 SK-2501 多媒體éµç›¤"
+
+#: ../rules/base.xml.in.h:173
+msgid "Hewlett-Packard SK-2505 Internet Keyboard"
+msgstr "惠普 SK-2505 網際éµç›¤"
+
+#: ../rules/base.xml.in.h:174
+msgid "Honeywell Euroboard"
+msgstr "Honeywell æ­æ´²éµç›¤"
+
+#: ../rules/base.xml.in.h:175
+msgid "Hrv"
+msgstr "Hrv"
+
+#: ../rules/base.xml.in.h:176
+msgid "Hun"
+msgstr "Hun"
+
+#: ../rules/base.xml.in.h:177
+msgid "Hungary"
+msgstr "匈牙利"
+
+#: ../rules/base.xml.in.h:178
+msgid "Hyper is mapped to the Win-keys."
+msgstr "Hyper é…置到兩個 Win-key。"
+
+#: ../rules/base.xml.in.h:179
+msgid "IBM Rapid Access"
+msgstr "IBM Rapid Access"
+
+#: ../rules/base.xml.in.h:180
+msgid "IBM Rapid Access II"
+msgstr "IBM Rapid Access II"
+
+#: ../rules/base.xml.in.h:181
+msgid "IBM Rapid Access II (alternate option)"
+msgstr "IBM Rapid Access II(替代é¸é …)"
+
+#: ../rules/base.xml.in.h:182
+msgid "IBM ThinkPad 560Z/600/600E/A22E"
+msgstr "IBM ThinkPad 560Z/600/600E/A22E"
+
+#: ../rules/base.xml.in.h:183
+msgid "ISO Alternate"
+msgstr "ISO 替代"
+
+#: ../rules/base.xml.in.h:184
+msgid "Iceland"
+msgstr "冰島"
+
+#: ../rules/base.xml.in.h:185
+msgid "Ind"
+msgstr "Ind"
+
+#: ../rules/base.xml.in.h:186
+msgid "India"
+msgstr "å°åº¦"
+
+#: ../rules/base.xml.in.h:187
+msgid "International (with dead keys)"
+msgstr "國際éµç›¤ (附無用按éµ)"
+
+#: ../rules/base.xml.in.h:188
+msgid "Inuktitut"
+msgstr "伊努伊特éµç›¤"
+
+#: ../rules/base.xml.in.h:189
+msgid "Iran"
+msgstr "伊朗"
+
+#: ../rules/base.xml.in.h:190
+msgid "Ireland"
+msgstr "愛爾蘭"
+
+#: ../rules/base.xml.in.h:191
+msgid "Irl"
+msgstr "Irl"
+
+#: ../rules/base.xml.in.h:192
+msgid "Irn"
+msgstr "Irn"
+
+#: ../rules/base.xml.in.h:193
+msgid "Isl"
+msgstr "Isl"
+
+#: ../rules/base.xml.in.h:194
+msgid "Isr"
+msgstr "Isr"
+
+#: ../rules/base.xml.in.h:195
+msgid "Israel"
+msgstr "以色列"
+
+#: ../rules/base.xml.in.h:196
+msgid "Ita"
+msgstr "Ita"
+
+#: ../rules/base.xml.in.h:197
+msgid "Italy"
+msgstr "æ„大利"
+
+#: ../rules/base.xml.in.h:198
+msgid "Japan"
+msgstr "日本"
+
+#: ../rules/base.xml.in.h:199
+msgid "Japanese 106-key"
+msgstr "日文 106éµ éµç›¤"
+
+#: ../rules/base.xml.in.h:200
+msgid "Jpn"
+msgstr "Jpn"
+
+#: ../rules/base.xml.in.h:201
+msgid "Kannada"
+msgstr "å°åº¦å¡ç´é”æ–‡"
+
+#: ../rules/base.xml.in.h:202
+msgid "Keytronic FlexPro"
+msgstr "Keytronic FlexPro"
+
+#: ../rules/base.xml.in.h:203
+msgid "Kyr"
+msgstr "Kyr"
+
+#: ../rules/base.xml.in.h:204
+msgid "Kyrgyzstan"
+msgstr "å‰çˆ¾å‰æ–¯"
+
+#: ../rules/base.xml.in.h:205
+msgid "LAm"
+msgstr "LAm"
+
+#: ../rules/base.xml.in.h:206
+msgid "Lao"
+msgstr "Lao"
+
+#: ../rules/base.xml.in.h:207
+msgid "Laos"
+msgstr "寮國"
+
+#: ../rules/base.xml.in.h:208
+msgid "Laptop/notebook Compaq (eg. Armada) Laptop Keyboard"
+msgstr "å¯æ”œå¼/筆記型 åº·æŸ (如 Armada) å¯æ”œå¼éµç›¤"
+
+#: ../rules/base.xml.in.h:209
+msgid "Laptop/notebook Compaq (eg. Presario) Internet Keyboard"
+msgstr "å¯æ”œå¼/筆記型 åº·æŸ (如 Presario) 網際éµç›¤"
+
+#: ../rules/base.xml.in.h:210
+msgid "Laptop/notebook Dell Inspiron 8xxx"
+msgstr "å¯æ”œå¼/筆記型 戴爾 Inspiron 8xxx"
+
+#: ../rules/base.xml.in.h:211
+msgid "Latin"
+msgstr "拉ä¸æ–‡"
+
+#: ../rules/base.xml.in.h:212
+msgid "Latin American"
+msgstr "拉ä¸ç¾Žæ´²"
+
+#: ../rules/base.xml.in.h:213
+msgid "Latin Unicode"
+msgstr "拉ä¸æ–‡çµ±ä¸€ç¢¼"
+
+#: ../rules/base.xml.in.h:214
+msgid "Latin Unicode qwerty"
+msgstr "拉ä¸æ–‡çµ±ä¸€ç¢¼ qwerty"
+
+#: ../rules/base.xml.in.h:215
+msgid "Latin qwerty"
+msgstr "拉ä¸æ–‡ qwerty"
+
+#: ../rules/base.xml.in.h:216
+msgid "Latin with guillemots"
+msgstr "拉ä¸æ–‡é™„海鳩符號"
+
+#: ../rules/base.xml.in.h:217
+msgid "Latvia"
+msgstr "拉脫維亞"
+
+#: ../rules/base.xml.in.h:218
+msgid "Left Alt key changes group."
+msgstr "以左邊的 Alt éµæ”¹è®Šç¾¤çµ„。"
+
+#: ../rules/base.xml.in.h:219
+msgid "Left Alt key switches group while pressed."
+msgstr "當按下左邊的 Alt éµæ™‚切æ›ç¾¤çµ„。"
+
+#: ../rules/base.xml.in.h:220
+msgid "Left Ctrl key changes group."
+msgstr "以左邊的 Ctrl éµæ”¹è®Šç¾¤çµ„。"
+
+#: ../rules/base.xml.in.h:221
+msgid "Left Shift key changes group."
+msgstr "以左邊的 Shift éµæ”¹è®Šç¾¤çµ„。"
+
+#: ../rules/base.xml.in.h:222
+msgid "Left Win-key changes group."
+msgstr "以左邊的 Win-key 改變群組。"
+
+#: ../rules/base.xml.in.h:223
+msgid "Left Win-key switches group while pressed."
+msgstr "當按下左邊的 Win-key 時切æ›ç¾¤çµ„。"
+
+#: ../rules/base.xml.in.h:224
+msgid "Lithuania"
+msgstr "立陶宛"
+
+#: ../rules/base.xml.in.h:225
+msgid "Logitech Access Keyboard"
+msgstr "羅技 Access éµç›¤"
+
+#: ../rules/base.xml.in.h:226
+msgid "Logitech Cordless Desktop"
+msgstr "羅技無影手"
+
+#: ../rules/base.xml.in.h:227
+msgid "Logitech Cordless Desktop Navigator"
+msgstr "羅技無影手桌é¢å°Žèˆªå™¨"
+
+#: ../rules/base.xml.in.h:228
+msgid "Logitech Cordless Desktop Optical"
+msgstr "羅技無影手光學組åˆ"
+
+#: ../rules/base.xml.in.h:229
+msgid "Logitech Cordless Desktop Pro"
+msgstr "羅技無影手進階版"
+
+#: ../rules/base.xml.in.h:230
+msgid "Logitech Cordless Desktop Pro (alternate option)"
+msgstr "羅技無影手進階版(替代é¸é …)"
+
+#: ../rules/base.xml.in.h:231
+msgid "Logitech Cordless Desktop Pro (alternate option2)"
+msgstr "羅技無影手進階版(替代é¸é …)"
+
+#: ../rules/base.xml.in.h:232
+msgid "Logitech Cordless Desktop iTouch"
+msgstr "羅技網際無影手"
+
+#: ../rules/base.xml.in.h:233
+msgid "Logitech Cordless Freedom/Desktop Navigator"
+msgstr "羅技極光無影手組åˆ/æ¡Œé¢å°Žèˆªå™¨"
+
+#: ../rules/base.xml.in.h:234
+msgid "Logitech Deluxe Access Keyboard"
+msgstr "羅技強手éµç›¤"
+
+#: ../rules/base.xml.in.h:235
+msgid "Logitech Internet Keyboard"
+msgstr "羅技網際éµç›¤"
+
+#: ../rules/base.xml.in.h:236
+msgid "Logitech Internet Navigator Keyboard"
+msgstr "羅技網際導航éµç›¤"
+
+#: ../rules/base.xml.in.h:237
+msgid "Logitech Ultra-X Keyboard"
+msgstr "羅技銀幻手éµç›¤"
+
+#: ../rules/base.xml.in.h:238
+msgid "Logitech iTouch"
+msgstr "羅技 iTouch"
+
+#: ../rules/base.xml.in.h:239
+msgid "Logitech iTouch Cordless Keyboard (model Y-RB6)"
+msgstr "羅技 iTouch 無影手éµç›¤(型號 Y-RB6)"
+
+#: ../rules/base.xml.in.h:240
+msgid "Logitech iTouch keyboard Internet Navigator"
+msgstr "羅技 iTouch éµç›¤ç¶²éš›å°Žèˆªå™¨"
+
+#: ../rules/base.xml.in.h:241
+msgid "Ltu"
+msgstr "Ltu"
+
+#: ../rules/base.xml.in.h:242
+msgid "Lva"
+msgstr "Lva"
+
+#: ../rules/base.xml.in.h:243
+msgid "Macedonian"
+msgstr "馬其頓文"
+
+#: ../rules/base.xml.in.h:244
+msgid "Macintosh"
+msgstr "Macintosh"
+
+#: ../rules/base.xml.in.h:245
+msgid "Macintosh Old"
+msgstr "Macintosh 舊產å“"
+
+#: ../rules/base.xml.in.h:246
+msgid "Make CapsLock an additional Control."
+msgstr "以 Caps Lock åšç‚ºé™„加的控制éµã€‚"
+
+#: ../rules/base.xml.in.h:247
+msgid "Malayalam"
+msgstr "(å°åº¦)馬來雅拉姆文字"
+
+#: ../rules/base.xml.in.h:248
+msgid "Malta"
+msgstr "馬爾它"
+
+#: ../rules/base.xml.in.h:249
+msgid "Mao"
+msgstr "Mao"
+
+#: ../rules/base.xml.in.h:250
+msgid "Maori"
+msgstr "毛利"
+
+#: ../rules/base.xml.in.h:251
+msgid "Memorex MX1998"
+msgstr "Memorex MX1998"
+
+#: ../rules/base.xml.in.h:252
+msgid "Memorex MX2500 EZ-Access Keyboard"
+msgstr "Memorex MX2500 EZ-Access éµç›¤"
+
+#: ../rules/base.xml.in.h:253
+msgid "Memorex MX2750"
+msgstr "Memorex MX2750"
+
+#: ../rules/base.xml.in.h:254
+msgid "Menu is Compose."
+msgstr "Menu 為組åˆéµã€‚"
+
+#: ../rules/base.xml.in.h:255
+msgid "Menu key changes group."
+msgstr "以 Menu éµæ”¹è®Šç¾¤çµ„。"
+
+#: ../rules/base.xml.in.h:256
+msgid "Meta is mapped to the Win-keys."
+msgstr "Meta é…置到兩個 Win-key。"
+
+#: ../rules/base.xml.in.h:257
+msgid "Meta is mapped to the left Win-key."
+msgstr "Meta é…置到左邊的 Win-key。"
+
+#: ../rules/base.xml.in.h:258
+msgid "Microsoft Internet Keyboard"
+msgstr "微軟網際éµç›¤"
+
+#: ../rules/base.xml.in.h:259
+msgid "Microsoft Internet Keyboard Pro, Swedish"
+msgstr "微軟網際éµç›¤å¢žå¼·ç‰ˆï¼Œç‘žå…¸"
+
+#: ../rules/base.xml.in.h:260
+msgid "Microsoft Natural"
+msgstr "微軟自然éµç›¤"
+
+#: ../rules/base.xml.in.h:261
+msgid "Microsoft Natural Keyboard Pro / Microsoft Internet Keyboard Pro"
+msgstr "微軟原生éµç›¤å¢žå¼·ç‰ˆ/微軟網際éµç›¤å¢žå¼·ç‰ˆ"
+
+#: ../rules/base.xml.in.h:262
+msgid "Microsoft Natural Keyboard Pro OEM"
+msgstr "微軟原生éµç›¤å¢žå¼·ç‰ˆ OEM"
+
+#: ../rules/base.xml.in.h:263
+msgid "Microsoft Natural Keyboard Pro USB / Microsoft Internet Keyboard Pro"
+msgstr "微軟自然éµç›¤å¢žå¼·ç‰ˆ USB/微軟網際éµç›¤å¢žå¼·ç‰ˆ"
+
+#: ../rules/base.xml.in.h:264
+msgid "Microsoft Office Keyboard"
+msgstr "微軟 Office éµç›¤"
+
+#: ../rules/base.xml.in.h:265
+msgid "Microsoft Wireless Multimedia Keyboard 1.0A"
+msgstr "微軟無線多媒體éµç›¤ 1.0A"
+
+#: ../rules/base.xml.in.h:266
+msgid "Miscellaneous compatibility options"
+msgstr "其它相容é¸é …"
+
+#: ../rules/base.xml.in.h:267
+msgid "Mkd"
+msgstr "Mkd"
+
+#: ../rules/base.xml.in.h:268
+msgid "Mlt"
+msgstr "Mlt"
+
+#: ../rules/base.xml.in.h:269
+msgid "Mmr"
+msgstr "Mmr"
+
+#: ../rules/base.xml.in.h:270
+msgid "Mng"
+msgstr "Mng"
+
+#: ../rules/base.xml.in.h:271
+msgid "Mongolia"
+msgstr "è’™å¤"
+
+#: ../rules/base.xml.in.h:272
+msgid "Multilingual"
+msgstr "多語言"
+
+#: ../rules/base.xml.in.h:273
+msgid "Multilingual, second part"
+msgstr "多語言,第二部份"
+
+#: ../rules/base.xml.in.h:274
+msgid "Myanmar"
+msgstr "緬甸"
+
+#: ../rules/base.xml.in.h:275
+msgid "Netherlands"
+msgstr "è·è˜­"
+
+#: ../rules/base.xml.in.h:276
+msgid "Nld"
+msgstr "Nld"
+
+#: ../rules/base.xml.in.h:277
+msgid "Nor"
+msgstr "Nor"
+
+#: ../rules/base.xml.in.h:278
+msgid "Northern Saami"
+msgstr "北部沙米文"
+
+#: ../rules/base.xml.in.h:279
+msgid "Northern Saami, eliminate dead keys"
+msgstr "北部沙米文,除去無用按éµ"
+
+#: ../rules/base.xml.in.h:280
+msgid "Northgate OmniKey 101"
+msgstr "Northgate Omnikey 101"
+
+#: ../rules/base.xml.in.h:281
+msgid "Norway"
+msgstr "挪å¨"
+
+#: ../rules/base.xml.in.h:282
+msgid "NumLock LED shows alternative group."
+msgstr "以 Num Lock 燈號來顯示替代的群組。"
+
+#: ../rules/base.xml.in.h:283
+msgid "Ogham"
+msgstr "(å¤æ„›çˆ¾è˜­)æ­ç”˜æ–‡å­—"
+
+#: ../rules/base.xml.in.h:284
+msgid "Ogham IS434"
+msgstr "æ­ç”˜æ–‡å­— IS434"
+
+#: ../rules/base.xml.in.h:285
+msgid "Oretec MCK-800 MM/Internet keyboard"
+msgstr "Oretec MCK-800 MM/網際éµç›¤"
+
+#: ../rules/base.xml.in.h:286
+msgid "Oriya"
+msgstr "(å°åº¦)奧里雅æ—文字"
+
+#: ../rules/base.xml.in.h:287
+msgid "PC-98xx Series"
+msgstr "PC-98xx 系列"
+
+#: ../rules/base.xml.in.h:288
+msgid "Pak"
+msgstr "Pak"
+
+#: ../rules/base.xml.in.h:289
+msgid "Pakistan"
+msgstr "巴基斯å¦"
+
+#: ../rules/base.xml.in.h:290
+msgid "Pattachote"
+msgstr "æ³°æ–‡"
+
+#: ../rules/base.xml.in.h:291
+msgid "Phonetic"
+msgstr "音標"
+
+#: ../rules/base.xml.in.h:292
+msgid "Pol"
+msgstr "Pol"
+
+#: ../rules/base.xml.in.h:293
+msgid "Poland"
+msgstr "波蘭"
+
+#: ../rules/base.xml.in.h:294
+msgid "Polytonic"
+msgstr "多音字æ¯"
+
+#: ../rules/base.xml.in.h:295
+msgid "Portugal"
+msgstr "è‘¡è„牙"
+
+#: ../rules/base.xml.in.h:296
+msgid "PowerPC PS/2"
+msgstr "PowerPC PS/2"
+
+#: ../rules/base.xml.in.h:297
+msgid "Press Left Alt key to choose 3rd level."
+msgstr "按下左邊的 Alt éµä»¥é¸æ“‡ç¬¬ä¸‰ç´šã€‚"
+
+#: ../rules/base.xml.in.h:298
+msgid "Press Left Win-key to choose 3rd level."
+msgstr "按下左邊的 Win-key 以é¸æ“‡ç¬¬ä¸‰ç´šã€‚"
+
+#: ../rules/base.xml.in.h:299
+msgid "Press Menu key to choose 3rd level."
+msgstr "按下 Menu éµä»¥é¸æ“‡ç¬¬ä¸‰ç´šã€‚"
+
+#: ../rules/base.xml.in.h:300
+msgid "Press Right Alt key to choose 3rd level."
+msgstr "按下å³é‚Šçš„ Alt éµä»¥é¸æ“‡ç¬¬ä¸‰ç´šã€‚"
+
+#: ../rules/base.xml.in.h:301
+msgid "Press Right Control to choose 3rd level."
+msgstr "按下å³é‚Šçš„ Control 以é¸æ“‡ç¬¬ä¸‰ç´šã€‚"
+
+#: ../rules/base.xml.in.h:302
+msgid "Press Right Win-key to choose 3rd level."
+msgstr "按下å³é‚Šçš„ Win-key 以é¸æ“‡ç¬¬ä¸‰ç´šã€‚"
+
+#: ../rules/base.xml.in.h:303
+msgid "Press any of Alt keys to choose 3rd level."
+msgstr "按下任一 Alt éµä»¥é¸æ“‡ç¬¬ä¸‰ç´šã€‚"
+
+#: ../rules/base.xml.in.h:304
+msgid "Press any of Win-keys to choose 3rd level."
+msgstr "按下任一 Win-key 以é¸æ“‡ç¬¬ä¸‰ç´šã€‚"
+
+#: ../rules/base.xml.in.h:305
+msgid "Probhat"
+msgstr "孟加拉 Probhat"
+
+#: ../rules/base.xml.in.h:306
+msgid "Propeller Voyager (KTEZ-1000)"
+msgstr "Propeller Voyager (KTEZ-1000)"
+
+#: ../rules/base.xml.in.h:307
+msgid "Prt"
+msgstr "Prt"
+
+#: ../rules/base.xml.in.h:308
+msgid "QTronix Scorpius 98N+"
+msgstr "QTronix Scorpius 98N+"
+
+#: ../rules/base.xml.in.h:309
+msgid "R-Alt switches group while pressed."
+msgstr "當按下å³é‚Š Alt 時切æ›ç¾¤çµ„。"
+
+#: ../rules/base.xml.in.h:310
+msgid "Right Alt is Compose."
+msgstr "å³é‚Šçš„ Alt 為組åˆéµã€‚"
+
+#: ../rules/base.xml.in.h:311
+msgid "Right Alt key changes group."
+msgstr "以å³é‚Šçš„ Alt éµæ”¹è®Šç¾¤çµ„。"
+
+#: ../rules/base.xml.in.h:312
+msgid "Right Control key works as Right Alt."
+msgstr "å³é‚Š Ctrl éµç­‰åŒæ–¼å³é‚Š Alt。"
+
+#: ../rules/base.xml.in.h:313
+msgid "Right Ctrl is Compose."
+msgstr "å³é‚Šçš„ Ctrl 為組åˆéµã€‚"
+
+#: ../rules/base.xml.in.h:314
+msgid "Right Ctrl key changes group."
+msgstr "以å³é‚Šçš„ Ctrl éµæ”¹è®Šç¾¤çµ„。"
+
+#: ../rules/base.xml.in.h:315
+msgid "Right Ctrl key switches group while pressed."
+msgstr "當按下å³é‚Šçš„ Ctrl éµæ™‚切æ›ç¾¤çµ„。"
+
+#: ../rules/base.xml.in.h:316
+msgid "Right Shift key changes group."
+msgstr "以å³é‚Šçš„ Shift éµæ”¹è®Šç¾¤çµ„。"
+
+#: ../rules/base.xml.in.h:317
+msgid "Right Win-key changes group."
+msgstr "以å³é‚Šçš„ Win-key 改變群組。"
+
+#: ../rules/base.xml.in.h:318
+msgid "Right Win-key is Compose."
+msgstr "å³é‚Šçš„ Win-key 為組åˆéµã€‚"
+
+#: ../rules/base.xml.in.h:319
+msgid "Right Win-key switches group while pressed."
+msgstr "當按下å³é‚Šçš„ Win-key 時切æ›ç¾¤çµ„。"
+
+#: ../rules/base.xml.in.h:320
+msgid "Romania"
+msgstr "羅馬尼亞"
+
+#: ../rules/base.xml.in.h:321
+msgid "Romanian keyboard with German letters"
+msgstr "羅馬尼亞éµç›¤é™„德文字æ¯"
+
+#: ../rules/base.xml.in.h:322
+msgid "Romanian keyboard with German letters, eliminate dead keys"
+msgstr "羅馬尼亞éµç›¤é™„德文字æ¯ï¼Œé™¤åŽ»ç„¡ç”¨æŒ‰éµ"
+
+#: ../rules/base.xml.in.h:323
+msgid "Rou"
+msgstr "Rou"
+
+#: ../rules/base.xml.in.h:324
+msgid "Rus"
+msgstr "Rus"
+
+#: ../rules/base.xml.in.h:325
+msgid "Russia"
+msgstr "ä¿„ç¾…æ–¯"
+
+#: ../rules/base.xml.in.h:326
+msgid "Russian"
+msgstr "ä¿„æ–‡"
+
+#: ../rules/base.xml.in.h:327
+msgid "Russian phonetic"
+msgstr "俄文音標"
+
+#: ../rules/base.xml.in.h:328
+msgid "Russian phonetic, eliminate dead keys"
+msgstr "俄文音標,除去無用按éµ"
+
+#: ../rules/base.xml.in.h:329
+msgid "SK-1300"
+msgstr "SK-1300"
+
+#: ../rules/base.xml.in.h:330
+msgid "SK-2500"
+msgstr "SK-2500"
+
+#: ../rules/base.xml.in.h:331
+msgid "SK-6200"
+msgstr "SK-6200"
+
+#: ../rules/base.xml.in.h:332
+msgid "SK-7100"
+msgstr "SK-7100"
+
+#: ../rules/base.xml.in.h:333
+msgid "SVEN Ergonomic 2500"
+msgstr "SVEN Ergonomic 2500"
+
+#: ../rules/base.xml.in.h:334
+msgid "Samsung SDM 4500P"
+msgstr "三星 SDM 4500P"
+
+#: ../rules/base.xml.in.h:335
+msgid "Samsung SDM 4510P"
+msgstr "三星 SDM 4510P"
+
+#: ../rules/base.xml.in.h:336
+msgid "ScrollLock LED shows alternative group."
+msgstr "以 Scroll Lock 燈號來顯示替代的群組。"
+
+#: ../rules/base.xml.in.h:337
+msgid "Serbian"
+msgstr "塞爾維亞文"
+
+#: ../rules/base.xml.in.h:338
+msgid "Shift with numpad keys works as in MS Windows."
+msgstr "Shift+數字éµç›¤çš„功能等åŒæ–¼åœ¨ MS Windows 之中。"
+
+#: ../rules/base.xml.in.h:339
+msgid "Shift+CapsLock changes group."
+msgstr "以 Shift+Caps Lock éµæ”¹è®Šç¾¤çµ„。"
+
+#: ../rules/base.xml.in.h:340
+msgid "Slovakia"
+msgstr "斯洛ä¼å…‹"
+
+#: ../rules/base.xml.in.h:341
+msgid "Slovenia"
+msgstr "斯洛凡尼亞"
+
+#: ../rules/base.xml.in.h:342
+msgid "Spain"
+msgstr "西ç­ç‰™"
+
+#: ../rules/base.xml.in.h:343
+msgid "Special keys (Ctrl+Alt+&lt;key&gt;) handled in a server."
+msgstr "伺æœå™¨è™•ç†çš„ç‰¹æ®Šéµ (Ctrl+Alt+&lt;key&gt;)。"
+
+#: ../rules/base.xml.in.h:344
+msgid "SrL"
+msgstr "SrL"
+
+#: ../rules/base.xml.in.h:345
+msgid "Sri Lanka"
+msgstr "斯里蘭å¡"
+
+#: ../rules/base.xml.in.h:346
+msgid "Srp"
+msgstr "Srp"
+
+#: ../rules/base.xml.in.h:347
+msgid "Standard"
+msgstr "標準"
+
+#. RSTU 2019-91
+#: ../rules/base.xml.in.h:349
+msgid "Standard RSTU"
+msgstr "標準 RSTU"
+
+#. RSTU 2019-91
+#: ../rules/base.xml.in.h:351
+msgid "Standard RSTU on Russian layout"
+msgstr "俄文排列上的標準 RSTU"
+
+#: ../rules/base.xml.in.h:352
+msgid "Sun dead keys"
+msgstr "Sun 無用按éµ"
+
+#: ../rules/base.xml.in.h:353
+msgid "Super Power Multimedia Keyboard"
+msgstr "Super Power 多媒體éµç›¤"
+
+#: ../rules/base.xml.in.h:354
+msgid "Super is mapped to the Win-keys (default)."
+msgstr "Super é…置到兩個 Win-key (é è¨­å€¼ï¼‰ã€‚"
+
+#: ../rules/base.xml.in.h:355
+msgid "Svk"
+msgstr "Svk"
+
+#: ../rules/base.xml.in.h:356
+msgid "Svn"
+msgstr "Svn"
+
+#: ../rules/base.xml.in.h:357
+msgid "Swap Control and CapsLock."
+msgstr "Control 與 Caps Lock éµäº’æ›ã€‚"
+
+#: ../rules/base.xml.in.h:358
+msgid "Swe"
+msgstr "Swe"
+
+#: ../rules/base.xml.in.h:359
+msgid "Sweden"
+msgstr "ç‘žå…¸"
+
+#: ../rules/base.xml.in.h:360
+msgid "Switzerland"
+msgstr "瑞士"
+
+#: ../rules/base.xml.in.h:361
+msgid "Symplon PaceBook (tablet PC)"
+msgstr "Symplon PaceBook (å¹³æ¿é›»è…¦)"
+
+#: ../rules/base.xml.in.h:362
+msgid "Syr"
+msgstr "Syr"
+
+#: ../rules/base.xml.in.h:363
+msgid "Syria"
+msgstr "敘利亞"
+
+#: ../rules/base.xml.in.h:364
+msgid "Syriac"
+msgstr "敘利亞語"
+
+#: ../rules/base.xml.in.h:365
+msgid "Syriac phonetic"
+msgstr "敘利亞音標"
+
+#: ../rules/base.xml.in.h:366
+msgid "TIS-820.2538"
+msgstr "泰語(TIS-820.2538)"
+
+#: ../rules/base.xml.in.h:367
+msgid "Tajikistan"
+msgstr "å¡”å‰å…‹"
+
+#: ../rules/base.xml.in.h:368
+msgid "Tamil"
+msgstr "å¦ç±³çˆ¾æ–‡"
+
+#: ../rules/base.xml.in.h:369
+msgid "Tamil INSCRIPT"
+msgstr "å¦ç±³çˆ¾æ–‡ INSCRIPT"
+
+#: ../rules/base.xml.in.h:370
+msgid "Tamil TAB Typewriter"
+msgstr "å¦ç±³çˆ¾æ–‡ TAB 打字機"
+
+#: ../rules/base.xml.in.h:371
+msgid "Tamil TSCII Typewriter"
+msgstr "å¦ç±³çˆ¾æ–‡ TSCII 打字機"
+
+#: ../rules/base.xml.in.h:372
+msgid "Tamil Unicode"
+msgstr "å¦ç±³çˆ¾æ–‡çµ±ä¸€ç¢¼"
+
+#: ../rules/base.xml.in.h:373
+msgid "Telugu"
+msgstr "泰盧固語"
+
+#: ../rules/base.xml.in.h:374
+msgid "Tha"
+msgstr "Tha"
+
+#: ../rules/base.xml.in.h:375
+msgid "Thailand"
+msgstr "泰國"
+
+#: ../rules/base.xml.in.h:376
+msgid "Third level choosers"
+msgstr "第三級é¸æ“‡å™¨"
+
+#: ../rules/base.xml.in.h:377
+msgid "Tilde (~) variant"
+msgstr "波折號 (~) 變化"
+
+#: ../rules/base.xml.in.h:378
+msgid "Tjk"
+msgstr "Tjk"
+
+#: ../rules/base.xml.in.h:379
+msgid "Toshiba Satellite S3000"
+msgstr "æ±èŠ Satellite S3000"
+
+#: ../rules/base.xml.in.h:380
+msgid "Trust Direct Access Keyboard"
+msgstr "Trust Direct Access éµç›¤"
+
+#: ../rules/base.xml.in.h:381
+msgid "Trust Wireless Keyboard Classic"
+msgstr "Trust 無線經典éµç›¤"
+
+#: ../rules/base.xml.in.h:382
+msgid "Tur"
+msgstr "Tur"
+
+#: ../rules/base.xml.in.h:383
+msgid "Turkish"
+msgstr "土耳其文"
+
+#: ../rules/base.xml.in.h:384
+msgid "Typewriter"
+msgstr "打字機"
+
+#: ../rules/base.xml.in.h:385
+msgid "U.S. English"
+msgstr "美å¼è‹±æ–‡"
+
+#: ../rules/base.xml.in.h:386
+msgid "US keyboard with Croatian letters"
+msgstr "美國éµç›¤é™„克羅埃西亞字æ¯"
+
+#: ../rules/base.xml.in.h:387
+msgid "US keyboard with Lithuanian letters"
+msgstr "美國éµç›¤é™„立陶宛字æ¯"
+
+#: ../rules/base.xml.in.h:388
+msgid "US keyboard with Maltian letters"
+msgstr "美國éµç›¤é™„馬爾它字æ¯"
+
+#: ../rules/base.xml.in.h:389
+msgid "US keyboard with Romanian letters"
+msgstr "美國éµç›¤é™„羅馬尼亞字æ¯"
+
+#: ../rules/base.xml.in.h:390
+msgid "USA"
+msgstr "USA"
+
+#: ../rules/base.xml.in.h:391
+msgid "Ukr"
+msgstr "Ukr"
+
+#: ../rules/base.xml.in.h:392
+msgid "Ukraine"
+msgstr "çƒå…‹è˜­"
+
+#: ../rules/base.xml.in.h:393
+msgid "UnicodeExpert"
+msgstr "UnicodeExpert"
+
+#: ../rules/base.xml.in.h:394
+msgid "United Kingdom"
+msgstr "英國"
+
+#: ../rules/base.xml.in.h:395
+msgid "Urdu"
+msgstr "çƒéƒ½æ–‡"
+
+#: ../rules/base.xml.in.h:396
+msgid "Use keyboard LED to show alternative group."
+msgstr "使用éµç›¤ç‡ˆè™Ÿä¾†é¡¯ç¤ºæ›¿ä»£çš„群組。"
+
+#: ../rules/base.xml.in.h:397
+msgid "Uzb"
+msgstr "Uzb"
+
+#: ../rules/base.xml.in.h:398
+msgid "Uzbekistan"
+msgstr "çƒèŒ²åˆ¥å…‹"
+
+#: ../rules/base.xml.in.h:399
+msgid "Vietnam"
+msgstr "越å—"
+
+#: ../rules/base.xml.in.h:400
+msgid "Vnm"
+msgstr "Vnm"
+
+#: ../rules/base.xml.in.h:401
+msgid "Winbook Model XP5"
+msgstr "Winbook XP5 éµç›¤"
+
+#: ../rules/base.xml.in.h:402
+msgid "Winkeys"
+msgstr "Winkeys"
+
+#: ../rules/base.xml.in.h:403
+msgid "With &lt;\\|&gt; key"
+msgstr "附帶 &lt;\\|&gt; éµ"
+
+#: ../rules/base.xml.in.h:404
+msgid "With guillemots"
+msgstr "附帶海鳩符號"
+
+#: ../rules/base.xml.in.h:405
+msgid "Yahoo! Internet Keyboard"
+msgstr "雅虎網際éµç›¤"
+
+#: ../rules/base.xml.in.h:406
+msgid "Z and ZHE swapped"
+msgstr "å·²äº¤æ› Z 與 ZHE"
+
+#: ../rules/base.xml.in.h:407
+msgid "azerty"
+msgstr "azerty"
+
+#: ../rules/base.xml.in.h:408
+msgid "azerty/digits"
+msgstr "azerty/數字"
+
+#: ../rules/base.xml.in.h:409
+msgid "digits"
+msgstr "數字"
+
+#: ../rules/base.xml.in.h:410
+msgid "lyx"
+msgstr "lyx"
+
+#: ../rules/base.xml.in.h:411
+msgid "qwerty"
+msgstr "qwerty"
+
+#: ../rules/base.xml.in.h:412
+msgid "qwerty, extended Backslash"
+msgstr "qwerty,延伸的å斜線"
+
+#: ../rules/base.xml.in.h:413
+msgid "qwerty/digits"
+msgstr "qwerty/數字"
+
+#: ../rules/base.xml.in.h:414
+msgid "qwertz"
+msgstr "qwertz"
+
+#: ../rules/base.xml.in.h:415
+msgid "si1452"
+msgstr "si1452"
diff --git a/xorg-server/xkeyboard-config/rules/HDR b/xorg-server/xkeyboard-config/rules/HDR
index 664d48ef2..769b8fc7f 100644
--- a/xorg-server/xkeyboard-config/rules/HDR
+++ b/xorg-server/xkeyboard-config/rules/HDR
@@ -1,33 +1,33 @@
-! model = keycodes
-! layout[1] = keycodes
-! layout = keycodes
-! option = keycodes
-! model layout = geometry
-! model = geometry
-! model layout variant = symbols
-! model layout = symbols
-! model layout[1] = symbols
-! model layout[1] variant[1] = symbols
-! model layout[2] = symbols
-! model layout[3] = symbols
-! model layout[4] = symbols
-! model layout[2] variant[2] = symbols
-! model layout[3] variant[3] = symbols
-! model layout[4] variant[4] = symbols
-! model = symbols
-! layout variant = compat
-! layout[1] variant[1] = compat
-! layout[2] variant[2] = compat
-! layout[3] variant[3] = compat
-! layout[4] variant[4] = compat
-! model layout = compat
-! model layout[1] = compat
-! model = types
-! layout option = symbols
-! layout[1] option = symbols
-! layout[2] option = symbols
-! layout[3] option = symbols
-! layout[4] option = symbols
-! option = symbols
-! option = compat
-! option = types
+! model = keycodes
+! layout[1] = keycodes
+! layout = keycodes
+! option = keycodes
+! model layout = geometry
+! model = geometry
+! model layout variant = symbols
+! model layout = symbols
+! model layout[1] = symbols
+! model layout[1] variant[1] = symbols
+! model layout[2] = symbols
+! model layout[3] = symbols
+! model layout[4] = symbols
+! model layout[2] variant[2] = symbols
+! model layout[3] variant[3] = symbols
+! model layout[4] variant[4] = symbols
+! model = symbols
+! layout variant = compat
+! layout[1] variant[1] = compat
+! layout[2] variant[2] = compat
+! layout[3] variant[3] = compat
+! layout[4] variant[4] = compat
+! model layout = compat
+! model layout[1] = compat
+! model = types
+! layout option = symbols
+! layout[1] option = symbols
+! layout[2] option = symbols
+! layout[3] option = symbols
+! layout[4] option = symbols
+! option = symbols
+! option = compat
+! option = types
diff --git a/xorg-server/xkeyboard-config/rules/README b/xorg-server/xkeyboard-config/rules/README
index cd73bca8f..bcf19ce0c 100644
--- a/xorg-server/xkeyboard-config/rules/README
+++ b/xorg-server/xkeyboard-config/rules/README
@@ -1,2 +1,2 @@
-This directory lists sets of rules which can be used to obtain an exact XKB
-configuration.
+This directory lists sets of rules which can be used to obtain an exact XKB
+configuration.
diff --git a/xorg-server/xkeyboard-config/rules/base.l1_k.part b/xorg-server/xkeyboard-config/rules/base.l1_k.part
index 032ca5331..91b775396 100644
--- a/xorg-server/xkeyboard-config/rules/base.l1_k.part
+++ b/xorg-server/xkeyboard-config/rules/base.l1_k.part
@@ -1,3 +1,3 @@
- $azerty = +aliases(azerty)
- $qwertz = +aliases(qwertz)
- * = +aliases(qwerty)
+ $azerty = +aliases(azerty)
+ $qwertz = +aliases(qwertz)
+ * = +aliases(qwerty)
diff --git a/xorg-server/xkeyboard-config/rules/base.l1o_s.part b/xorg-server/xkeyboard-config/rules/base.l1o_s.part
index 098539443..592fab272 100644
--- a/xorg-server/xkeyboard-config/rules/base.l1o_s.part
+++ b/xorg-server/xkeyboard-config/rules/base.l1o_s.part
@@ -1,2 +1,2 @@
- $threelevellayouts grp:alts_toggle = +level3(ralt_switch_for_alts_toggle):1
- * misc:typo = +typo(base):1
+ $threelevellayouts grp:alts_toggle = +level3(ralt_switch_for_alts_toggle):1
+ * misc:typo = +typo(base):1
diff --git a/xorg-server/xkeyboard-config/rules/base.l2o_s.part b/xorg-server/xkeyboard-config/rules/base.l2o_s.part
index 5f4a5e60f..aac680e9d 100644
--- a/xorg-server/xkeyboard-config/rules/base.l2o_s.part
+++ b/xorg-server/xkeyboard-config/rules/base.l2o_s.part
@@ -1,2 +1,2 @@
- $threelevellayouts grp:alts_toggle = +level3(ralt_switch_for_alts_toggle):2
- * misc:typo = +typo(base):2
+ $threelevellayouts grp:alts_toggle = +level3(ralt_switch_for_alts_toggle):2
+ * misc:typo = +typo(base):2
diff --git a/xorg-server/xkeyboard-config/rules/base.l3o_s.part b/xorg-server/xkeyboard-config/rules/base.l3o_s.part
index 270af2bdc..1010e2e03 100644
--- a/xorg-server/xkeyboard-config/rules/base.l3o_s.part
+++ b/xorg-server/xkeyboard-config/rules/base.l3o_s.part
@@ -1,2 +1,2 @@
- $threelevellayouts grp:alts_toggle = +level3(ralt_switch_for_alts_toggle):3
- * misc:typo = +typo(base):3
+ $threelevellayouts grp:alts_toggle = +level3(ralt_switch_for_alts_toggle):3
+ * misc:typo = +typo(base):3
diff --git a/xorg-server/xkeyboard-config/rules/base.l4o_s.part b/xorg-server/xkeyboard-config/rules/base.l4o_s.part
index 7e6175637..49650ad9c 100644
--- a/xorg-server/xkeyboard-config/rules/base.l4o_s.part
+++ b/xorg-server/xkeyboard-config/rules/base.l4o_s.part
@@ -1,2 +1,2 @@
- $threelevellayouts grp:alts_toggle = +level3(ralt_switch_for_alts_toggle):4
- * misc:typo = +typo(base):4
+ $threelevellayouts grp:alts_toggle = +level3(ralt_switch_for_alts_toggle):4
+ * misc:typo = +typo(base):4
diff --git a/xorg-server/xkeyboard-config/rules/base.l_k.part b/xorg-server/xkeyboard-config/rules/base.l_k.part
index 032ca5331..91b775396 100644
--- a/xorg-server/xkeyboard-config/rules/base.l_k.part
+++ b/xorg-server/xkeyboard-config/rules/base.l_k.part
@@ -1,3 +1,3 @@
- $azerty = +aliases(azerty)
- $qwertz = +aliases(qwertz)
- * = +aliases(qwerty)
+ $azerty = +aliases(azerty)
+ $qwertz = +aliases(qwertz)
+ * = +aliases(qwerty)
diff --git a/xorg-server/xkeyboard-config/rules/base.lo_s.part b/xorg-server/xkeyboard-config/rules/base.lo_s.part
index 1a37c3d48..dee7b6daa 100644
--- a/xorg-server/xkeyboard-config/rules/base.lo_s.part
+++ b/xorg-server/xkeyboard-config/rules/base.lo_s.part
@@ -1,2 +1,2 @@
- $threelevellayouts grp:alts_toggle = +level3(ralt_switch_for_alts_toggle)
- * misc:typo = +typo(base)
+ $threelevellayouts grp:alts_toggle = +level3(ralt_switch_for_alts_toggle)
+ * misc:typo = +typo(base)
diff --git a/xorg-server/xkeyboard-config/rules/base.m_g.part b/xorg-server/xkeyboard-config/rules/base.m_g.part
index 978aac0c7..753f2ed75 100644
--- a/xorg-server/xkeyboard-config/rules/base.m_g.part
+++ b/xorg-server/xkeyboard-config/rules/base.m_g.part
@@ -1,27 +1,27 @@
- microsoftelite = microsoft(elite)
- $msmodels = microsoft(natural)
- dell101 = dell(dell101)
- dellm65 = dell(dellm65)
- latitude = dell(latitude)
- flexpro = keytronic(FlexPro)
- hp6000 = hp(omnibook)
- hpmini110 = hp(mini110)
- hpdv5 = hp(dv5)
- omnikey101 = northgate(omnikey101)
- sanwaskbkg3 = sanwa(sanwaskbkg3)
- $pcmodels = pc(%m)
- $pcgeometries = pc(%m)
- everex = everex(STEPnote)
- thinkpad = thinkpad(intl)
- thinkpad60 = thinkpad(60)
- thinkpadz60 = thinkpad(60)
- $tmgeometries = typematrix(%m)
- winbook = winbook(XP5)
- pc98 = nec(pc98)
- $applealu = macintosh(%m)
- $macbooks = macintosh(%m)
- $macs = macintosh(macintosh)
- hhk = hhk(basic)
- kinesis = kinesis(model100)
- $nokiamodels = nokia(%m)
- * = pc(pc104)
+ microsoftelite = microsoft(elite)
+ $msmodels = microsoft(natural)
+ dell101 = dell(dell101)
+ dellm65 = dell(dellm65)
+ latitude = dell(latitude)
+ flexpro = keytronic(FlexPro)
+ hp6000 = hp(omnibook)
+ hpmini110 = hp(mini110)
+ hpdv5 = hp(dv5)
+ omnikey101 = northgate(omnikey101)
+ sanwaskbkg3 = sanwa(sanwaskbkg3)
+ $pcmodels = pc(%m)
+ $pcgeometries = pc(%m)
+ everex = everex(STEPnote)
+ thinkpad = thinkpad(intl)
+ thinkpad60 = thinkpad(60)
+ thinkpadz60 = thinkpad(60)
+ $tmgeometries = typematrix(%m)
+ winbook = winbook(XP5)
+ pc98 = nec(pc98)
+ $applealu = macintosh(%m)
+ $macbooks = macintosh(%m)
+ $macs = macintosh(macintosh)
+ hhk = hhk(basic)
+ kinesis = kinesis(model100)
+ $nokiamodels = nokia(%m)
+ * = pc(pc104)
diff --git a/xorg-server/xkeyboard-config/rules/base.m_k.part b/xorg-server/xkeyboard-config/rules/base.m_k.part
index bae06c55d..2c621208f 100644
--- a/xorg-server/xkeyboard-config/rules/base.m_k.part
+++ b/xorg-server/xkeyboard-config/rules/base.m_k.part
@@ -1,14 +1,14 @@
- amiga = amiga(de)
- ataritt = ataritt(de)
- empty = empty
- sun4 = sun(type4_euro)
- sun5 = sun(type5_euro)
- sun6 = sun(type6_usb)
- sun6euro = sun(type6tuv_usb)
- pc98 = xfree98(pc98)
- $applealu = macintosh(alukbd)
- macintosh_hhk = macintosh(hhk)
- macintosh_old = macintosh(old)
- $macs = macintosh
- thinkpadz60 = xfree86(thinkpadz60)
- * = xfree86
+ amiga = amiga(de)
+ ataritt = ataritt(de)
+ empty = empty
+ sun4 = sun(type4_euro)
+ sun5 = sun(type5_euro)
+ sun6 = sun(type6_usb)
+ sun6euro = sun(type6tuv_usb)
+ pc98 = xfree98(pc98)
+ $applealu = macintosh(alukbd)
+ macintosh_hhk = macintosh(hhk)
+ macintosh_old = macintosh(old)
+ $macs = macintosh
+ thinkpadz60 = xfree86(thinkpadz60)
+ * = xfree86
diff --git a/xorg-server/xkeyboard-config/rules/base.m_s.part b/xorg-server/xkeyboard-config/rules/base.m_s.part
index 0eee0456d..4bbbcce31 100644
--- a/xorg-server/xkeyboard-config/rules/base.m_s.part
+++ b/xorg-server/xkeyboard-config/rules/base.m_s.part
@@ -1,51 +1,51 @@
- a4techKB21 = +inet(media_nav_common)
- a4techKBS8 = +inet(media_nav_acpi_common)
- a4_rfkb23 = +inet(media_nav_acpi_common)
- asus_laptop = +inet(media_common)
- acer_tm_800 = +inet(acer_laptop)
- benqx730 = +inet(benqx)
- benqx800 = +inet(benqx)
- btc5126t = +inet(nav_acpi_common)
- btc9116u = +inet(btc9019u)
- btc6301urf = +inet(media_nav_acpi_common)
- dellsk8125 = +inet(dell)
- dellsk8135 = +inet(dell)
- cherrybunlim = +inet(nav_common)
- dexxa = +inet(media_nav_common)
- dtk2000 = +inet(media_nav_acpi_common)
- fscaa1667g = +inet(media_nav_common)
- geniuskb19e = +inet(media_nav_acpi_common)
- geniuscomfy = +inet(media_nav_acpi_common)
- geniuskkb2050hs = +inet(dellusbmm)
- hpnx9020 = +inet(hpi6)
- latitude = +inet(media_common)
- logicd = +inet(logitech_base)
- logicd_it = +inet(logitech_base)
- logicd_nav = +inet(logitech_base)
- logicd_opt = +inet(logitech_base)
- logiultrax = +inet(logitech_base)
- logiclx300 = +inet(logiex110)
- logii350 = +inet(logiex110)
- logimel = +inet(logiex110)
- logicdit = +inet(logicd)
- logicdo = +inet(logicd)
- logicdp = +inet(logicd)
- logicdpa = +inet(logicda)
- logiciink = +inet(logicink)
- ltcd = +inet(logicda)
- microsoftccurve2k = +inet(microsoftprooem)
- microsoftpro = +inet(media_nav_acpi_common)
- precision_m = +inet(media_nav_common)
- scorpius = +inet(media_nav_acpi_common)
- sp_inet = +inet(media_nav_acpi_common)
- targa_v811 = +inet(media_nav_acpi_common)
- thinkpad = +inet(media_nav_common)
- thinkpadz60 = +inet(thinkpad60)
- tm2030USB-102 = +inet(media_nav_acpi_common)
- tm2030USB-106 = +inet(media_nav_acpi_common)
- trust_slimline = +inet(media_nav_acpi_common)
- vsonku306 = +inet(microsoftprooem)
- $inetkbds = +inet(%m)
- $maclaptop = +inet(apple)+level3(enter_switch)
- $applealu = +inet(apple)
- $macs = +inet(apple)
+ a4techKB21 = +inet(media_nav_common)
+ a4techKBS8 = +inet(media_nav_acpi_common)
+ a4_rfkb23 = +inet(media_nav_acpi_common)
+ asus_laptop = +inet(media_common)
+ acer_tm_800 = +inet(acer_laptop)
+ benqx730 = +inet(benqx)
+ benqx800 = +inet(benqx)
+ btc5126t = +inet(nav_acpi_common)
+ btc9116u = +inet(btc9019u)
+ btc6301urf = +inet(media_nav_acpi_common)
+ dellsk8125 = +inet(dell)
+ dellsk8135 = +inet(dell)
+ cherrybunlim = +inet(nav_common)
+ dexxa = +inet(media_nav_common)
+ dtk2000 = +inet(media_nav_acpi_common)
+ fscaa1667g = +inet(media_nav_common)
+ geniuskb19e = +inet(media_nav_acpi_common)
+ geniuscomfy = +inet(media_nav_acpi_common)
+ geniuskkb2050hs = +inet(dellusbmm)
+ hpnx9020 = +inet(hpi6)
+ latitude = +inet(media_common)
+ logicd = +inet(logitech_base)
+ logicd_it = +inet(logitech_base)
+ logicd_nav = +inet(logitech_base)
+ logicd_opt = +inet(logitech_base)
+ logiultrax = +inet(logitech_base)
+ logiclx300 = +inet(logiex110)
+ logii350 = +inet(logiex110)
+ logimel = +inet(logiex110)
+ logicdit = +inet(logicd)
+ logicdo = +inet(logicd)
+ logicdp = +inet(logicd)
+ logicdpa = +inet(logicda)
+ logiciink = +inet(logicink)
+ ltcd = +inet(logicda)
+ microsoftccurve2k = +inet(microsoftprooem)
+ microsoftpro = +inet(media_nav_acpi_common)
+ precision_m = +inet(media_nav_common)
+ scorpius = +inet(media_nav_acpi_common)
+ sp_inet = +inet(media_nav_acpi_common)
+ targa_v811 = +inet(media_nav_acpi_common)
+ thinkpad = +inet(media_nav_common)
+ thinkpadz60 = +inet(thinkpad60)
+ tm2030USB-102 = +inet(media_nav_acpi_common)
+ tm2030USB-106 = +inet(media_nav_acpi_common)
+ trust_slimline = +inet(media_nav_acpi_common)
+ vsonku306 = +inet(microsoftprooem)
+ $inetkbds = +inet(%m)
+ $maclaptop = +inet(apple)+level3(enter_switch)
+ $applealu = +inet(apple)
+ $macs = +inet(apple)
diff --git a/xorg-server/xkeyboard-config/rules/base.m_t.part b/xorg-server/xkeyboard-config/rules/base.m_t.part
index 7ccbf47b9..9669d6b38 100644
--- a/xorg-server/xkeyboard-config/rules/base.m_t.part
+++ b/xorg-server/xkeyboard-config/rules/base.m_t.part
@@ -1,4 +1,4 @@
- $macs = complete+numpad(mac)
- $applealu = complete+numpad(mac)
- $nokiamodels = complete+nokia
- * = complete
+ $macs = complete+numpad(mac)
+ $applealu = complete+numpad(mac)
+ $nokiamodels = complete+nokia
+ * = complete
diff --git a/xorg-server/xkeyboard-config/rules/base.ml1_c.part b/xorg-server/xkeyboard-config/rules/base.ml1_c.part
index 0e6147b23..f59e596d5 100644
--- a/xorg-server/xkeyboard-config/rules/base.ml1_c.part
+++ b/xorg-server/xkeyboard-config/rules/base.ml1_c.part
@@ -1 +1 @@
- * * = complete
+ * * = complete
diff --git a/xorg-server/xkeyboard-config/rules/base.ml1_s.part b/xorg-server/xkeyboard-config/rules/base.ml1_s.part
index efe8ae124..20b4276ed 100644
--- a/xorg-server/xkeyboard-config/rules/base.ml1_s.part
+++ b/xorg-server/xkeyboard-config/rules/base.ml1_s.part
@@ -1,15 +1,15 @@
- ataritt * = xfree68_vndr/ataritt(us)+%l[1]%(v[1])
- amiga * = xfree68_vndr/amiga(usa1)+%l[1]%(v[1])
- sun4 * = latin+sun_vndr/us(type4)+%l[1]%(v[1])
- sun5 * = latin+sun_vndr/us(type5)+%l[1]%(v[1])
- macintosh_old us = macintosh_vndr/us(oldmac)
- macintosh_old $macvendorlayouts = macintosh_vndr/us(oldmac)+macintosh_vndr/%l[1]%(v[1])
- macintosh_old * = macintosh_vndr/us(oldmac)+%l[1]%(v[1])
- applealu_jis us = macintosh_vndr/apple(alukbd)+macintosh_vndr/jp(usmac)
- $applealu $macvendorlayouts = macintosh_vndr/apple(alukbd)+macintosh_vndr/%l[1]%(v[1])
- $applealu * = macintosh_vndr/apple(alukbd)+%l[1]%(v[1])
- $macs $macvendorlayouts = pc+macintosh_vndr/%l[1]%(v[1])
- nokiarx51 cz(qwerty) = nokia_vndr/rx-51(common)+nokia_vndr/rx-51(cz_qwerty)
- nokiarx51 * = nokia_vndr/rx-51(common)+nokia_vndr/rx-51(%l[1]%_v[1])
- $thinkpads br = pc+%l[1](thinkpad)
- * * = pc+%l[1]%(v[1])
+ ataritt * = xfree68_vndr/ataritt(us)+%l[1]%(v[1])
+ amiga * = xfree68_vndr/amiga(usa1)+%l[1]%(v[1])
+ sun4 * = latin+sun_vndr/us(type4)+%l[1]%(v[1])
+ sun5 * = latin+sun_vndr/us(type5)+%l[1]%(v[1])
+ macintosh_old us = macintosh_vndr/us(oldmac)
+ macintosh_old $macvendorlayouts = macintosh_vndr/us(oldmac)+macintosh_vndr/%l[1]%(v[1])
+ macintosh_old * = macintosh_vndr/us(oldmac)+%l[1]%(v[1])
+ applealu_jis us = macintosh_vndr/apple(alukbd)+macintosh_vndr/jp(usmac)
+ $applealu $macvendorlayouts = macintosh_vndr/apple(alukbd)+macintosh_vndr/%l[1]%(v[1])
+ $applealu * = macintosh_vndr/apple(alukbd)+%l[1]%(v[1])
+ $macs $macvendorlayouts = pc+macintosh_vndr/%l[1]%(v[1])
+ nokiarx51 cz(qwerty) = nokia_vndr/rx-51(common)+nokia_vndr/rx-51(cz_qwerty)
+ nokiarx51 * = nokia_vndr/rx-51(common)+nokia_vndr/rx-51(%l[1]%_v[1])
+ $thinkpads br = pc+%l[1](thinkpad)
+ * * = pc+%l[1]%(v[1])
diff --git a/xorg-server/xkeyboard-config/rules/base.ml2_s.part b/xorg-server/xkeyboard-config/rules/base.ml2_s.part
index 3c80545d5..27f997529 100644
--- a/xorg-server/xkeyboard-config/rules/base.ml2_s.part
+++ b/xorg-server/xkeyboard-config/rules/base.ml2_s.part
@@ -1,3 +1,3 @@
- nokiarx51 cz(qwerty) = +nokia_vndr/rx-51(cz_qwerty):2
- nokiarx51 * = +nokia_vndr/rx-51(%l[2]%_v[2]):2
- * * = +%l[2]%(v[2]):2
+ nokiarx51 cz(qwerty) = +nokia_vndr/rx-51(cz_qwerty):2
+ nokiarx51 * = +nokia_vndr/rx-51(%l[2]%_v[2]):2
+ * * = +%l[2]%(v[2]):2
diff --git a/xorg-server/xkeyboard-config/rules/base.ml3_s.part b/xorg-server/xkeyboard-config/rules/base.ml3_s.part
index b7e669f87..607752509 100644
--- a/xorg-server/xkeyboard-config/rules/base.ml3_s.part
+++ b/xorg-server/xkeyboard-config/rules/base.ml3_s.part
@@ -1,3 +1,3 @@
- nokiarx51 cz(qwerty) = +nokia_vndr/rx-51(cz_qwerty):3
- nokiarx51 * = +nokia_vndr/rx-51(%l[3]%_v[3]):3
- * * = +%l[3]%(v[3]):3
+ nokiarx51 cz(qwerty) = +nokia_vndr/rx-51(cz_qwerty):3
+ nokiarx51 * = +nokia_vndr/rx-51(%l[3]%_v[3]):3
+ * * = +%l[3]%(v[3]):3
diff --git a/xorg-server/xkeyboard-config/rules/base.ml4_s.part b/xorg-server/xkeyboard-config/rules/base.ml4_s.part
index d8830ae34..8d92f393c 100644
--- a/xorg-server/xkeyboard-config/rules/base.ml4_s.part
+++ b/xorg-server/xkeyboard-config/rules/base.ml4_s.part
@@ -1,3 +1,3 @@
- nokiarx51 cz(qwerty) = +nokia_vndr/rx-51(cz_qwerty):4
- nokiarx51 * = +nokia_vndr/rx-51(%l[4]%_v[4]):4
- * * = +%l[4]%(v[4]):4
+ nokiarx51 cz(qwerty) = +nokia_vndr/rx-51(cz_qwerty):4
+ nokiarx51 * = +nokia_vndr/rx-51(%l[4]%_v[4]):4
+ * * = +%l[4]%(v[4]):4
diff --git a/xorg-server/xkeyboard-config/rules/base.ml_c.part b/xorg-server/xkeyboard-config/rules/base.ml_c.part
index f71278ff1..ec8f02291 100644
--- a/xorg-server/xkeyboard-config/rules/base.ml_c.part
+++ b/xorg-server/xkeyboard-config/rules/base.ml_c.part
@@ -1,4 +1,4 @@
- pc98 nec_vndr/jp = pc98(basic)
- * jp = complete+japan
- olpc * = olpc
- * * = complete
+ pc98 nec_vndr/jp = pc98(basic)
+ * jp = complete+japan
+ olpc * = olpc
+ * * = complete
diff --git a/xorg-server/xkeyboard-config/rules/base.ml_g.part b/xorg-server/xkeyboard-config/rules/base.ml_g.part
index 353bdae23..e66bb0b50 100644
--- a/xorg-server/xkeyboard-config/rules/base.ml_g.part
+++ b/xorg-server/xkeyboard-config/rules/base.ml_g.part
@@ -1 +1 @@
- thinkpad us = thinkpad(us)
+ thinkpad us = thinkpad(us)
diff --git a/xorg-server/xkeyboard-config/rules/base.mlv_s.part b/xorg-server/xkeyboard-config/rules/base.mlv_s.part
index 2bdd8612b..1eecc55c0 100644
--- a/xorg-server/xkeyboard-config/rules/base.mlv_s.part
+++ b/xorg-server/xkeyboard-config/rules/base.mlv_s.part
@@ -1,4 +1,4 @@
- classmate us intl = pc+us(classmate-intl)
- classmate us alt-intl = pc+us(classmate-alt-intl)
- classmate us altgr-intl = pc+us(classmate-altgr-intl)
- nokiarx51 cz qwerty = nokia_vndr/rx-51(cz_qwerty)
+ classmate us intl = pc+us(classmate-intl)
+ classmate us alt-intl = pc+us(classmate-alt-intl)
+ classmate us altgr-intl = pc+us(classmate-altgr-intl)
+ nokiarx51 cz qwerty = nokia_vndr/rx-51(cz_qwerty)
diff --git a/xorg-server/xkeyboard-config/rules/base.o_t.part b/xorg-server/xkeyboard-config/rules/base.o_t.part
index 9b3155e74..e0d4b15ed 100644
--- a/xorg-server/xkeyboard-config/rules/base.o_t.part
+++ b/xorg-server/xkeyboard-config/rules/base.o_t.part
@@ -1,8 +1,8 @@
- caps:internal = +caps(internal)
- caps:internal_nocancel = +caps(internal_nocancel)
- caps:shift = +caps(shift)
- caps:shift_nocancel = +caps(shift_nocancel)
- numpad:pc = +numpad(pc)
- numpad:mac = +numpad(mac)
- numpad:microsoft = +numpad(microsoft)
- numpad:shift3 = +numpad(shift3)
+ caps:internal = +caps(internal)
+ caps:internal_nocancel = +caps(internal_nocancel)
+ caps:shift = +caps(shift)
+ caps:shift_nocancel = +caps(shift_nocancel)
+ numpad:pc = +numpad(pc)
+ numpad:mac = +numpad(mac)
+ numpad:microsoft = +numpad(microsoft)
+ numpad:shift3 = +numpad(shift3)
diff --git a/xorg-server/xkeyboard-config/rules/bin/Makefile.am b/xorg-server/xkeyboard-config/rules/bin/Makefile.am
index 787e34f8a..99077804a 100644
--- a/xorg-server/xkeyboard-config/rules/bin/Makefile.am
+++ b/xorg-server/xkeyboard-config/rules/bin/Makefile.am
@@ -1,10 +1,10 @@
-transform_scripts= \
-mln_s.sh \
-mlnvn_s.sh \
-ml_s.sh \
-mlv_s.sh \
-ml1_s.sh \
-ml1v_s.sh \
-ml1v1_s.sh
-
-EXTRA_DIST=$(transform_scripts)
+transform_scripts= \
+mln_s.sh \
+mlnvn_s.sh \
+ml_s.sh \
+mlv_s.sh \
+ml1_s.sh \
+ml1v_s.sh \
+ml1v1_s.sh
+
+EXTRA_DIST=$(transform_scripts)
diff --git a/xorg-server/xkeyboard-config/rules/bin/ml1_s.sh b/xorg-server/xkeyboard-config/rules/bin/ml1_s.sh
index 449874909..b09459a5d 100644..100755
--- a/xorg-server/xkeyboard-config/rules/bin/ml1_s.sh
+++ b/xorg-server/xkeyboard-config/rules/bin/ml1_s.sh
@@ -1,9 +1,9 @@
-@echo off
-
-set OUTFILE=base.ml1_s.part
-
-if exist %OUTFILE% del %OUTFILE%
-
-gawk "{ if (index($2, """(""") == 0) { printf """ * %%s = pc+%%s%%%%(v[1])\n""", $1, $2; } else { printf """ * %%s = pc+%%s\n""", $1, $2; }}" < layoutsMapping.lst >> %OUTFILE%
-
-gawk "{ printf """ * %%s(%%s) = pc+%%s(%%s)\n""", $1, $2, $3, $4; }" < variantsMapping.lst >> %OUTFILE%
+@echo off
+
+set OUTFILE=base.ml1_s.part
+
+if exist %OUTFILE% del %OUTFILE%
+
+gawk "{ if (index($2, """(""") == 0) { printf """ * %%s = pc+%%s%%%%(v[1])\n""", $1, $2; } else { printf """ * %%s = pc+%%s\n""", $1, $2; }}" < layoutsMapping.lst >> %OUTFILE%
+
+gawk "{ printf """ * %%s(%%s) = pc+%%s(%%s)\n""", $1, $2, $3, $4; }" < variantsMapping.lst >> %OUTFILE%
diff --git a/xorg-server/xkeyboard-config/rules/bin/ml1v1_s.sh b/xorg-server/xkeyboard-config/rules/bin/ml1v1_s.sh
index 68696c9e2..4d492e02b 100644..100755
--- a/xorg-server/xkeyboard-config/rules/bin/ml1v1_s.sh
+++ b/xorg-server/xkeyboard-config/rules/bin/ml1v1_s.sh
@@ -1,7 +1,7 @@
-@echo off
-
-set OUTFILE=base.ml1v1_s.part
-
-if exist %OUTFILE% del %OUTFILE%
-
-gawk "{ printf """ * %%s %%s = pc+%%s(%%s)\n""", $1, $2, $3, $4; }" < variantsMapping.lst >> %OUTFILE%
+@echo off
+
+set OUTFILE=base.ml1v1_s.part
+
+if exist %OUTFILE% del %OUTFILE%
+
+gawk "{ printf """ * %%s %%s = pc+%%s(%%s)\n""", $1, $2, $3, $4; }" < variantsMapping.lst >> %OUTFILE%
diff --git a/xorg-server/xkeyboard-config/rules/bin/ml1v_s.sh b/xorg-server/xkeyboard-config/rules/bin/ml1v_s.sh
index cae53259c..cec1334c0 100644..100755
--- a/xorg-server/xkeyboard-config/rules/bin/ml1v_s.sh
+++ b/xorg-server/xkeyboard-config/rules/bin/ml1v_s.sh
@@ -1,7 +1,7 @@
-@echo off
-
-set OUTFILE=base.ml1v_s.part
-
-if exist %OUTFILE% del %OUTFILE%
-
-gawk "{ printf """ * %%s %%s = pc+%%s(%%s)\n""", $1, $2, $3, $4; }" < variantsMapping.lst >> %OUTFILE%
+@echo off
+
+set OUTFILE=base.ml1v_s.part
+
+if exist %OUTFILE% del %OUTFILE%
+
+gawk "{ printf """ * %%s %%s = pc+%%s(%%s)\n""", $1, $2, $3, $4; }" < variantsMapping.lst >> %OUTFILE%
diff --git a/xorg-server/xkeyboard-config/rules/bin/ml_s.sh b/xorg-server/xkeyboard-config/rules/bin/ml_s.sh
index d15355918..b7f0d9c46 100644..100755
--- a/xorg-server/xkeyboard-config/rules/bin/ml_s.sh
+++ b/xorg-server/xkeyboard-config/rules/bin/ml_s.sh
@@ -1,9 +1,9 @@
-@echo off
-
-set OUTFILE=base.ml_s.part
-
-if exist %OUTFILE% del %OUTFILE%
-
-gawk "{ printf """ * %%s = pc+%%s\n""", $1, $2; }" < layoutsMapping.lst >> %OUTFILE%
-
-gawk "{ printf """ * %%s(%%s) = pc+%%s(%%s)\n""", $1, $2, $3, $4; }" < variantsMapping.lst >> %OUTFILE%
+@echo off
+
+set OUTFILE=base.ml_s.part
+
+if exist %OUTFILE% del %OUTFILE%
+
+gawk "{ printf """ * %%s = pc+%%s\n""", $1, $2; }" < layoutsMapping.lst >> %OUTFILE%
+
+gawk "{ printf """ * %%s(%%s) = pc+%%s(%%s)\n""", $1, $2, $3, $4; }" < variantsMapping.lst >> %OUTFILE%
diff --git a/xorg-server/xkeyboard-config/rules/bin/mln_s.sh b/xorg-server/xkeyboard-config/rules/bin/mln_s.sh
index 66794a4fc..15e0629be 100644..100755
--- a/xorg-server/xkeyboard-config/rules/bin/mln_s.sh
+++ b/xorg-server/xkeyboard-config/rules/bin/mln_s.sh
@@ -1,10 +1,10 @@
-@echo off
-set variant=%1
-
-set OUTFILE=base.ml%variant%_s.part
-
-if exist %OUTFILE% del %OUTFILE%
-
-echo "{ if (index($2, """(""") == 0) { printf """ * %%s = +%%s%%%%(v[%variant%]):%variant%\n""", $1, $2; } else { printf """ * %%s = +%%s:%variant%\n""", $1, $2; }}" < layoutsMapping.lst >> %OUTFILE%
-
-gawk "{ printf """ * %%s(%%s) = +%%s(%%s):%variant%\n""", $1, $2, $3, $4;}" < variantsMapping.lst >> %OUTFILE%
+@echo off
+set variant=%1
+
+set OUTFILE=base.ml%variant%_s.part
+
+if exist %OUTFILE% del %OUTFILE%
+
+echo "{ if (index($2, """(""") == 0) { printf """ * %%s = +%%s%%%%(v[%variant%]):%variant%\n""", $1, $2; } else { printf """ * %%s = +%%s:%variant%\n""", $1, $2; }}" < layoutsMapping.lst >> %OUTFILE%
+
+gawk "{ printf """ * %%s(%%s) = +%%s(%%s):%variant%\n""", $1, $2, $3, $4;}" < variantsMapping.lst >> %OUTFILE%
diff --git a/xorg-server/xkeyboard-config/rules/bin/mlnvn_s.sh b/xorg-server/xkeyboard-config/rules/bin/mlnvn_s.sh
index 8e252943b..78119bcc7 100644..100755
--- a/xorg-server/xkeyboard-config/rules/bin/mlnvn_s.sh
+++ b/xorg-server/xkeyboard-config/rules/bin/mlnvn_s.sh
@@ -1,8 +1,8 @@
-@echo off
-set variant=%1
-
-set OUTFILE=base.ml%variant%v%variant%_s.part
-
-if exist %OUTFILE% del %OUTFILE%
-
-gawk "{ printf """ * %%s %%s = +%%s(%%s):%variant%\n""", $1, $2, $3, $4;}" < variantsMapping.lst >> %OUTFILE%
+@echo off
+set variant=%1
+
+set OUTFILE=base.ml%variant%v%variant%_s.part
+
+if exist %OUTFILE% del %OUTFILE%
+
+gawk "{ printf """ * %%s %%s = +%%s(%%s):%variant%\n""", $1, $2, $3, $4;}" < variantsMapping.lst >> %OUTFILE%
diff --git a/xorg-server/xkeyboard-config/rules/bin/mlv_s.sh b/xorg-server/xkeyboard-config/rules/bin/mlv_s.sh
index 21205ef97..573cb930f 100644..100755
--- a/xorg-server/xkeyboard-config/rules/bin/mlv_s.sh
+++ b/xorg-server/xkeyboard-config/rules/bin/mlv_s.sh
@@ -1,7 +1,7 @@
-@echo off
-
-set OUTFILE=base.mlv_s.part
-
-if exist %OUTFILE% del %OUTFILE%
-
-gawk "{ printf """ * %%s %%s = pc+%%s(%%s)\n""", $1, $2, $3, $4; }" < variantsMapping.lst >> %OUTFILE%
+@echo off
+
+set OUTFILE=base.mlv_s.part
+
+if exist %OUTFILE% del %OUTFILE%
+
+gawk "{ printf """ * %%s %%s = pc+%%s(%%s)\n""", $1, $2, $3, $4; }" < variantsMapping.lst >> %OUTFILE%
diff --git a/xorg-server/xkeyboard-config/rules/compat/.gitignore b/xorg-server/xkeyboard-config/rules/compat/.gitignore
index 24ecdb6ba..077356fbb 100644
--- a/xorg-server/xkeyboard-config/rules/compat/.gitignore
+++ b/xorg-server/xkeyboard-config/rules/compat/.gitignore
@@ -1,16 +1,16 @@
-base.ml1_s.part
-base.ml1v1_s.part
-base.ml2_s.part
-base.ml2v2_s.part
-base.ml3_s.part
-base.ml3v3_s.part
-base.ml4_s.part
-base.ml4v4_s.part
-base.ml_s.part
-base.mlv_s.part
-ml1_s.bat
-ml1v1_s.bat
-ml_s.bat
-mln_s.bat
-mlnvn_s.bat
+base.ml1_s.part
+base.ml1v1_s.part
+base.ml2_s.part
+base.ml2v2_s.part
+base.ml3_s.part
+base.ml3v3_s.part
+base.ml4_s.part
+base.ml4v4_s.part
+base.ml_s.part
+base.mlv_s.part
+ml1_s.bat
+ml1v1_s.bat
+ml_s.bat
+mln_s.bat
+mlnvn_s.bat
mlv_s.bat \ No newline at end of file
diff --git a/xorg-server/xkeyboard-config/rules/compat/base.l1v1_c.part b/xorg-server/xkeyboard-config/rules/compat/base.l1v1_c.part
index d85efe4e7..64ff0f2f5 100644
--- a/xorg-server/xkeyboard-config/rules/compat/base.l1v1_c.part
+++ b/xorg-server/xkeyboard-config/rules/compat/base.l1v1_c.part
@@ -1 +1 @@
- de neo = +caps(caps_lock)+misc(assign_shift_left_action)+level5(level5_lock)
+ de neo = +caps(caps_lock)+misc(assign_shift_left_action)+level5(level5_lock)
diff --git a/xorg-server/xkeyboard-config/rules/compat/base.l2v2_c.part b/xorg-server/xkeyboard-config/rules/compat/base.l2v2_c.part
index fd80f998d..fea61be76 100644
--- a/xorg-server/xkeyboard-config/rules/compat/base.l2v2_c.part
+++ b/xorg-server/xkeyboard-config/rules/compat/base.l2v2_c.part
@@ -1 +1 @@
- de neo = +caps(caps_lock):2+misc(assign_shift_left_action):2+level5(level5_lock):2
+ de neo = +caps(caps_lock):2+misc(assign_shift_left_action):2+level5(level5_lock):2
diff --git a/xorg-server/xkeyboard-config/rules/compat/base.l3v3_c.part b/xorg-server/xkeyboard-config/rules/compat/base.l3v3_c.part
index 0fc152316..5a1fb2f8a 100644
--- a/xorg-server/xkeyboard-config/rules/compat/base.l3v3_c.part
+++ b/xorg-server/xkeyboard-config/rules/compat/base.l3v3_c.part
@@ -1 +1 @@
- de neo = +caps(caps_lock):3+misc(assign_shift_left_action):3+level5(level5_lock):3
+ de neo = +caps(caps_lock):3+misc(assign_shift_left_action):3+level5(level5_lock):3
diff --git a/xorg-server/xkeyboard-config/rules/compat/base.l4v4_c.part b/xorg-server/xkeyboard-config/rules/compat/base.l4v4_c.part
index 8954744ea..ac8a91102 100644
--- a/xorg-server/xkeyboard-config/rules/compat/base.l4v4_c.part
+++ b/xorg-server/xkeyboard-config/rules/compat/base.l4v4_c.part
@@ -1 +1 @@
- de neo = +caps(caps_lock):4+misc(assign_shift_left_action):4+level5(level5_lock):4
+ de neo = +caps(caps_lock):4+misc(assign_shift_left_action):4+level5(level5_lock):4
diff --git a/xorg-server/xkeyboard-config/rules/compat/base.lists.part b/xorg-server/xkeyboard-config/rules/compat/base.lists.part
index 98c54127a..f1cf7ee22 100644
--- a/xorg-server/xkeyboard-config/rules/compat/base.lists.part
+++ b/xorg-server/xkeyboard-config/rules/compat/base.lists.part
@@ -1,2 +1,2 @@
-
-! $dvoraklayouts = br ca de ee es fr gb no pl se us
+
+! $dvoraklayouts = br ca de ee es fr gb no pl se us
diff --git a/xorg-server/xkeyboard-config/rules/compat/base.lv_c.part b/xorg-server/xkeyboard-config/rules/compat/base.lv_c.part
index d85efe4e7..64ff0f2f5 100644
--- a/xorg-server/xkeyboard-config/rules/compat/base.lv_c.part
+++ b/xorg-server/xkeyboard-config/rules/compat/base.lv_c.part
@@ -1 +1 @@
- de neo = +caps(caps_lock)+misc(assign_shift_left_action)+level5(level5_lock)
+ de neo = +caps(caps_lock)+misc(assign_shift_left_action)+level5(level5_lock)
diff --git a/xorg-server/xkeyboard-config/rules/compat/base.o_s.part b/xorg-server/xkeyboard-config/rules/compat/base.o_s.part
index 8a3cecf3a..8f1e9e452 100644
--- a/xorg-server/xkeyboard-config/rules/compat/base.o_s.part
+++ b/xorg-server/xkeyboard-config/rules/compat/base.o_s.part
@@ -1 +1 @@
- grp:shift_toggle = +group(shifts_toggle)
+ grp:shift_toggle = +group(shifts_toggle)
diff --git a/xorg-server/xkeyboard-config/rules/compat/layoutsMapping.lst b/xorg-server/xkeyboard-config/rules/compat/layoutsMapping.lst
index 2318de247..cecda6d8a 100644
--- a/xorg-server/xkeyboard-config/rules/compat/layoutsMapping.lst
+++ b/xorg-server/xkeyboard-config/rules/compat/layoutsMapping.lst
@@ -1,27 +1,27 @@
-ar ara
-ben in(ben)
-bs ba
-cs rs
-cz_qwerty cz(qwerty)
-dev in(deva)
-dvorak us(dvorak)
-dzdwi bt
-el gr
-en_US latin
-guj in(guj)
-gur in(guru)
-iu ca(ike)
-lo la
-kan in(kan)
-mi mao
-ml in(mal)
-ogham ie(ogam)
-ori ie(ori)
-sapmi no(smi)
-sr srp
-syr sy(syc)
-tel in(tel)
-tml in(tam)
-yu srp
-fr-latin9 fr(latin9)
-us_intl us(alt-intl)
+ar ara
+ben in(ben)
+bs ba
+cs rs
+cz_qwerty cz(qwerty)
+dev in(deva)
+dvorak us(dvorak)
+dzdwi bt
+el gr
+en_US latin
+guj in(guj)
+gur in(guru)
+iu ca(ike)
+lo la
+kan in(kan)
+mi mao
+ml in(mal)
+ogham ie(ogam)
+ori ie(ori)
+sapmi no(smi)
+sr srp
+syr sy(syc)
+tel in(tel)
+tml in(tam)
+yu srp
+fr-latin9 fr(latin9)
+us_intl us(alt-intl)
diff --git a/xorg-server/xkeyboard-config/rules/evdev.m_k.part b/xorg-server/xkeyboard-config/rules/evdev.m_k.part
index 4f1c5c30a..810675463 100644
--- a/xorg-server/xkeyboard-config/rules/evdev.m_k.part
+++ b/xorg-server/xkeyboard-config/rules/evdev.m_k.part
@@ -1,3 +1,3 @@
- pc98 = evdev(pc98)
- applealu_jis = evdev+macintosh(jisevdev)
- * = evdev
+ pc98 = evdev(pc98)
+ applealu_jis = evdev+macintosh(jisevdev)
+ * = evdev
diff --git a/xorg-server/xkeyboard-config/rules/evdev.m_s.part b/xorg-server/xkeyboard-config/rules/evdev.m_s.part
index 1b423053c..5a6416bf7 100644
--- a/xorg-server/xkeyboard-config/rules/evdev.m_s.part
+++ b/xorg-server/xkeyboard-config/rules/evdev.m_s.part
@@ -1,3 +1,3 @@
- $evdevkbds = +inet(evdev)+inet(%m)
- applealu_jis = +inet(evdev)+macintosh_vndr/jp(alujiskeys)
- * = +inet(evdev)
+ $evdevkbds = +inet(evdev)+inet(%m)
+ applealu_jis = +inet(evdev)+macintosh_vndr/jp(alujiskeys)
+ * = +inet(evdev)
diff --git a/xorg-server/xkeyboard-config/rules/merge.sh b/xorg-server/xkeyboard-config/rules/merge.sh
index be06dfc71..b18af7c3d 100644
--- a/xorg-server/xkeyboard-config/rules/merge.sh
+++ b/xorg-server/xkeyboard-config/rules/merge.sh
@@ -1,25 +1,25 @@
-#!/bin/sh
-
-INDIR=`dirname $0`
-DEST=$1
-shift
-
-if [ -z "$HDR" ]; then
- HDR="HDR"
-fi
-
-basename=`basename $0`
-echo "// DO NOT EDIT THIS FILE - IT WAS AUTOGENERATED BY $basename FROM rules/*.part" >$DEST
-
-for i in $*; do
- if [ "$i" = "$HDR" ] || [ "$i" = "HDR" ]; then
- echo >> $DEST;
- read hdr
- echo "$hdr" >> $DEST
- elif test -f $i; then
- cat $i >> $DEST || exit 1
- else
- cat $INDIR/$i >> $DEST || exit 1
- fi
-done < $HDR
-
+#!/bin/sh
+
+INDIR=`dirname $0`
+DEST=$1
+shift
+
+if [ -z "$HDR" ]; then
+ HDR="HDR"
+fi
+
+basename=`basename $0`
+echo "// DO NOT EDIT THIS FILE - IT WAS AUTOGENERATED BY $basename FROM rules/*.part" >$DEST
+
+for i in $*; do
+ if [ "$i" = "$HDR" ] || [ "$i" = "HDR" ]; then
+ echo >> $DEST;
+ read hdr
+ echo "$hdr" >> $DEST
+ elif test -f $i; then
+ cat $i >> $DEST || exit 1
+ else
+ cat $INDIR/$i >> $DEST || exit 1
+ fi
+done < $HDR
+
diff --git a/xorg-server/xkeyboard-config/symbols/digital_vndr/Makefile.am b/xorg-server/xkeyboard-config/symbols/digital_vndr/Makefile.am
index 69184024b..063fc8d57 100644
--- a/xorg-server/xkeyboard-config/symbols/digital_vndr/Makefile.am
+++ b/xorg-server/xkeyboard-config/symbols/digital_vndr/Makefile.am
@@ -1,5 +1,5 @@
-symbolsdir = $(xkb_base)/symbols/digital_vndr
-
-dist_symbols_DATA = \
-lk pc us \
-vt
+symbolsdir = $(xkb_base)/symbols/digital_vndr
+
+dist_symbols_DATA = \
+lk pc us \
+vt
diff --git a/xorg-server/xkeyboard-config/symbols/extractGroupNames.sh b/xorg-server/xkeyboard-config/symbols/extractGroupNames.sh
index bbcd6d58d..fb128fd19 100644
--- a/xorg-server/xkeyboard-config/symbols/extractGroupNames.sh
+++ b/xorg-server/xkeyboard-config/symbols/extractGroupNames.sh
@@ -1,3 +1,3 @@
-#!/bin/sh
-
-grep 'name\[Group1\]' * | sed 's/[[:space:]]*name\[Group1\].*=[[:space:]]*//;s/;[[:space:]]*$//' | sort
+#!/bin/sh
+
+grep 'name\[Group1\]' * | sed 's/[[:space:]]*name\[Group1\].*=[[:space:]]*//;s/;[[:space:]]*$//' | sort
diff --git a/xorg-server/xkeyboard-config/symbols/fujitsu_vndr/Makefile.am b/xorg-server/xkeyboard-config/symbols/fujitsu_vndr/Makefile.am
index 5c9b0b833..4e3a96ee1 100644
--- a/xorg-server/xkeyboard-config/symbols/fujitsu_vndr/Makefile.am
+++ b/xorg-server/xkeyboard-config/symbols/fujitsu_vndr/Makefile.am
@@ -1,4 +1,4 @@
-symbolsdir = $(xkb_base)/symbols/fujitsu_vndr
-
-dist_symbols_DATA = \
-jp us
+symbolsdir = $(xkb_base)/symbols/fujitsu_vndr
+
+dist_symbols_DATA = \
+jp us
diff --git a/xorg-server/xkeyboard-config/symbols/hp_vndr/Makefile.am b/xorg-server/xkeyboard-config/symbols/hp_vndr/Makefile.am
index 25e8fa44f..6bcd4da3e 100644
--- a/xorg-server/xkeyboard-config/symbols/hp_vndr/Makefile.am
+++ b/xorg-server/xkeyboard-config/symbols/hp_vndr/Makefile.am
@@ -1,4 +1,4 @@
-symbolsdir = $(xkb_base)/symbols/hp_vndr
-
-dist_symbols_DATA = \
-us
+symbolsdir = $(xkb_base)/symbols/hp_vndr
+
+dist_symbols_DATA = \
+us
diff --git a/xorg-server/xkeyboard-config/symbols/macintosh_vndr/Makefile.am b/xorg-server/xkeyboard-config/symbols/macintosh_vndr/Makefile.am
index 1d43f40c2..f39662e4c 100644
--- a/xorg-server/xkeyboard-config/symbols/macintosh_vndr/Makefile.am
+++ b/xorg-server/xkeyboard-config/symbols/macintosh_vndr/Makefile.am
@@ -1,8 +1,8 @@
-symbolsdir = $(xkb_base)/symbols/macintosh_vndr
-
-dist_symbols_DATA = \
-apple ch de dk \
-fi fr \
-gb is it jp \
-latam nl no pt \
-se us
+symbolsdir = $(xkb_base)/symbols/macintosh_vndr
+
+dist_symbols_DATA = \
+apple ch de dk \
+fi fr \
+gb is it jp \
+latam nl no pt \
+se us
diff --git a/xorg-server/xkeyboard-config/symbols/macintosh_vndr/fr b/xorg-server/xkeyboard-config/symbols/macintosh_vndr/fr
index c76551d30..9a8f8de23 100644
--- a/xorg-server/xkeyboard-config/symbols/macintosh_vndr/fr
+++ b/xorg-server/xkeyboard-config/symbols/macintosh_vndr/fr
@@ -1,110 +1,110 @@
-// Marc.Shapiro@inria.fr 19-sep-1998
-// modifications : Etienne Herlent <eherlent@linux-france.org> june 2000
-// adapted to the new input layer :
-// Martin Costabel <costabel@wanadoo.fr> 3-jan-2001
-//////////////////////////////////////////////////////////////////
-// Petites Modification le juillet 2005 par Bin Zhang <bb.zhang@free.fr> :
-// 1) La ligne 83 : remplacer les deux "VoidSymbol" par oe et OE
-// 2) La ligne 89 : remplacer "VoidSymbol" par "EuroSign"
-// ( 1) et 2) fonctionnent sous UTF-8, mais pas sous iso-8859-1. )
-// 3) Remplacer la ligne 148 par la ligne 149 pour que la touche Alt_L
-// (la touche Apple-Pomme) fonctionne correctement sous Xorg, une idée
-// motivée par http://www.linux-france.org/macintosh/clavier_gentoo.html
-//////////////////////////////////////////////////////////////////
-// This map is an almost-complete mapping of the standard French
-// MacIntosh keyboard under Xwindows. I tried to remain as faithful
-// as possible to the Mac meaning of each key. I did this entirely by
-// hand and by intuition, relying on the Clavier (Keyboard?) Desktop
-// Accessory for the Mac meaning of keys, and on reading keysymdef.h
-// to intuit the corresponding X names. Lacking proper documentation,
-// I may have made some mistakes.
-
-// Entries marked CHECK are particularly uncertain
-
-// Entries marked MISSING mark Mac characters for which I was unable
-// to find a corresponding keysym. (Some for sure don't: e.g. the
-// Apple mark and the oe/OE character; others I may have simply not
-// found.)
-
-default
-xkb_symbols "extended" {
-
- name[Group1]= "France - Mac";
-
- key <ESC> { [ Escape ] };
-
- // Alphanumeric section
- key <TLDE> { [ at, numbersign, periodcentered, Ydiaeresis ] };
- key <ENTR> { [ KP_Enter ] };
- key <AE01> { [ ampersand, 1, VoidSymbol, dead_acute ] }; // MISSING: Apple
- key <AE02> { [ eacute, 2, ediaeresis, Eacute ] };
- key <AE03> { [ quotedbl, 3, leftdoublequotemark, rightdoublequotemark ] };
- key <AE04> { [ apostrophe, 4, leftsinglequotemark, rightsinglequotemark ] };
- key <AE05> { [ parenleft, 5, braceleft, bracketleft ] };
- key <AE06> { [ section, 6, paragraph, aring ] };
- key <AE07> { [ egrave, 7, guillemotleft, guillemotright] };
- key <AE08> { [ exclam, 8, exclamdown, Ucircumflex ] };
- key <AE09> { [ ccedilla, 9, Ccedilla, Aacute ] };
- key <AE10> { [ agrave, 0, oslash, Oslash ] };
- key <AE11> { [ parenright, degree, braceright, bracketright ] };
- key <AE12> { [ minus, underscore, emdash, endash ] };
- key <BKSP> { [ BackSpace, VoidSymbol, Delete, VoidSymbol ] };
-
- key <TAB> { [ Tab, ISO_Left_Tab ] };
- key <AD01> { [ a, A, ae, AE ] };
- key <AD02> { [ z, Z, Acircumflex, Aring ] };
- key <AD03> { [ e, E, ecircumflex, Ecircumflex ] };
- key <AD04> { [ r, R, registered, currency ] };
- key <AD05> { [ t, T, dagger, trademark ] };
- key <AD06> { [ y, Y, Uacute, Ydiaeresis ] };
- key <AD07> { [ u, U, masculine, ordfeminine ] };
- key <AD08> { [ i, I, icircumflex, idiaeresis ] };
- key <AD09> { [ o, O, oe, OE ] };
- key <AD10> { [ p, P, Greek_pi, Greek_PI ] };
- key <AD11> { [dead_circumflex,dead_diaeresis,ocircumflex, Ocircumflex ] };
- key <AD12> { [ dollar, asterisk, EuroSign, yen ] };
- key <CAPS> { [ Caps_Lock ] };
- key <AC01> { [ q, Q, doubledagger, Greek_OMEGA ] };
- key <AC02> { [ s, S, Ograve, Greek_SIGMA ] };
- key <AC03> { [ d, D, Greek_delta, Greek_DELTA ] };
- key <AC04> { [ f, F, VoidSymbol, periodcentered ] };
- key <AC05> { [ g, G, VoidSymbol, VoidSymbol ] }; // MISSING: ligature fi,fl
- key <AC06> { [ h, H, Igrave, Icircumflex ] };
- key <AC07> { [ j, J, Idiaeresis, Iacute ] };
- key <AC08> { [ k, K, Egrave, Ediaeresis ] };
- key <AC09> { [ l, L, notsign, bar ] };
- key <AC10> { [ m, M, mu, Oacute ] };
- key <AC11> { [ ugrave, percent, Ugrave, 0x1002030 ] };
- key <BKSL> { [ dead_grave, sterling, at, numbersign ] };
- key <RTRN> { [ Return ] };
-
- key <LSGT> { [ less, greater, lessthanequal, greaterthanequal ] };
- key <AB01> { [ w, W, guilsinglleft, guilsinglright ] }; // MISSING: half-guillemot (single angle bracket)
- key <AB02> { [ x, X, VoidSymbol, VoidSymbol ] }; // CHECK: similarequal; MISSING: extra-slanted slash
- key <AB03> { [ c, C, copyright, cent ] };
- key <AB04> { [ v, V, diamond, radical ] }; // CHECK diamond
- key <AB05> { [ b, B, ssharp, integral ] };
- key <AB06> { [ n, N, dead_tilde, asciitilde ] };
- key <AB07> { [ comma, question, infinity, questiondown ] };
- key <AB08> { [ semicolon, period, ellipsis, periodcentered ] };
- key <AB09> { [ colon, slash, division, backslash ] };
- key <AB10> { [ equal, plus, notequal, plusminus ] };
-
- key <SPCE> { [ space, space, nobreakspace, nobreakspace ] };
- // End alphanumeric section
-
- include "level3(ralt_switch)"
-};
-
-
-
-xkb_symbols "nodeadkeys" {
-include "macintosh_vndr/fr(extended)"
- name[Group1]= "France - Mac, eliminate dead keys";
-
- key <AE01> { [ ampersand, 1, VoidSymbol, acute ] }; // MISSING: Apple
- key <AD11> { [asciicircum,diaeresis,ocircumflex, Ocircumflex ] };
- key <BKSL> { [ grave, sterling, at, numbersign ] };
-
- key <AB06> { [ n, N, asciitilde, dead_tilde ] };
-};
+// Marc.Shapiro@inria.fr 19-sep-1998
+// modifications : Etienne Herlent <eherlent@linux-france.org> june 2000
+// adapted to the new input layer :
+// Martin Costabel <costabel@wanadoo.fr> 3-jan-2001
+//////////////////////////////////////////////////////////////////
+// Petites Modification le juillet 2005 par Bin Zhang <bb.zhang@free.fr> :
+// 1) La ligne 83 : remplacer les deux "VoidSymbol" par oe et OE
+// 2) La ligne 89 : remplacer "VoidSymbol" par "EuroSign"
+// ( 1) et 2) fonctionnent sous UTF-8, mais pas sous iso-8859-1. )
+// 3) Remplacer la ligne 148 par la ligne 149 pour que la touche Alt_L
+// (la touche Apple-Pomme) fonctionne correctement sous Xorg, une idée
+// motivée par http://www.linux-france.org/macintosh/clavier_gentoo.html
+//////////////////////////////////////////////////////////////////
+// This map is an almost-complete mapping of the standard French
+// MacIntosh keyboard under Xwindows. I tried to remain as faithful
+// as possible to the Mac meaning of each key. I did this entirely by
+// hand and by intuition, relying on the Clavier (Keyboard?) Desktop
+// Accessory for the Mac meaning of keys, and on reading keysymdef.h
+// to intuit the corresponding X names. Lacking proper documentation,
+// I may have made some mistakes.
+
+// Entries marked CHECK are particularly uncertain
+
+// Entries marked MISSING mark Mac characters for which I was unable
+// to find a corresponding keysym. (Some for sure don't: e.g. the
+// Apple mark and the oe/OE character; others I may have simply not
+// found.)
+
+default
+xkb_symbols "extended" {
+
+ name[Group1]= "France - Mac";
+
+ key <ESC> { [ Escape ] };
+
+ // Alphanumeric section
+ key <TLDE> { [ at, numbersign, periodcentered, Ydiaeresis ] };
+ key <ENTR> { [ KP_Enter ] };
+ key <AE01> { [ ampersand, 1, VoidSymbol, dead_acute ] }; // MISSING: Apple
+ key <AE02> { [ eacute, 2, ediaeresis, Eacute ] };
+ key <AE03> { [ quotedbl, 3, leftdoublequotemark, rightdoublequotemark ] };
+ key <AE04> { [ apostrophe, 4, leftsinglequotemark, rightsinglequotemark ] };
+ key <AE05> { [ parenleft, 5, braceleft, bracketleft ] };
+ key <AE06> { [ section, 6, paragraph, aring ] };
+ key <AE07> { [ egrave, 7, guillemotleft, guillemotright] };
+ key <AE08> { [ exclam, 8, exclamdown, Ucircumflex ] };
+ key <AE09> { [ ccedilla, 9, Ccedilla, Aacute ] };
+ key <AE10> { [ agrave, 0, oslash, Oslash ] };
+ key <AE11> { [ parenright, degree, braceright, bracketright ] };
+ key <AE12> { [ minus, underscore, emdash, endash ] };
+ key <BKSP> { [ BackSpace, VoidSymbol, Delete, VoidSymbol ] };
+
+ key <TAB> { [ Tab, ISO_Left_Tab ] };
+ key <AD01> { [ a, A, ae, AE ] };
+ key <AD02> { [ z, Z, Acircumflex, Aring ] };
+ key <AD03> { [ e, E, ecircumflex, Ecircumflex ] };
+ key <AD04> { [ r, R, registered, currency ] };
+ key <AD05> { [ t, T, dagger, trademark ] };
+ key <AD06> { [ y, Y, Uacute, Ydiaeresis ] };
+ key <AD07> { [ u, U, masculine, ordfeminine ] };
+ key <AD08> { [ i, I, icircumflex, idiaeresis ] };
+ key <AD09> { [ o, O, oe, OE ] };
+ key <AD10> { [ p, P, Greek_pi, Greek_PI ] };
+ key <AD11> { [dead_circumflex,dead_diaeresis,ocircumflex, Ocircumflex ] };
+ key <AD12> { [ dollar, asterisk, EuroSign, yen ] };
+ key <CAPS> { [ Caps_Lock ] };
+ key <AC01> { [ q, Q, doubledagger, Greek_OMEGA ] };
+ key <AC02> { [ s, S, Ograve, Greek_SIGMA ] };
+ key <AC03> { [ d, D, Greek_delta, Greek_DELTA ] };
+ key <AC04> { [ f, F, VoidSymbol, periodcentered ] };
+ key <AC05> { [ g, G, VoidSymbol, VoidSymbol ] }; // MISSING: ligature fi,fl
+ key <AC06> { [ h, H, Igrave, Icircumflex ] };
+ key <AC07> { [ j, J, Idiaeresis, Iacute ] };
+ key <AC08> { [ k, K, Egrave, Ediaeresis ] };
+ key <AC09> { [ l, L, notsign, bar ] };
+ key <AC10> { [ m, M, mu, Oacute ] };
+ key <AC11> { [ ugrave, percent, Ugrave, 0x1002030 ] };
+ key <BKSL> { [ dead_grave, sterling, at, numbersign ] };
+ key <RTRN> { [ Return ] };
+
+ key <LSGT> { [ less, greater, lessthanequal, greaterthanequal ] };
+ key <AB01> { [ w, W, guilsinglleft, guilsinglright ] }; // MISSING: half-guillemot (single angle bracket)
+ key <AB02> { [ x, X, VoidSymbol, VoidSymbol ] }; // CHECK: similarequal; MISSING: extra-slanted slash
+ key <AB03> { [ c, C, copyright, cent ] };
+ key <AB04> { [ v, V, diamond, radical ] }; // CHECK diamond
+ key <AB05> { [ b, B, ssharp, integral ] };
+ key <AB06> { [ n, N, dead_tilde, asciitilde ] };
+ key <AB07> { [ comma, question, infinity, questiondown ] };
+ key <AB08> { [ semicolon, period, ellipsis, periodcentered ] };
+ key <AB09> { [ colon, slash, division, backslash ] };
+ key <AB10> { [ equal, plus, notequal, plusminus ] };
+
+ key <SPCE> { [ space, space, nobreakspace, nobreakspace ] };
+ // End alphanumeric section
+
+ include "level3(ralt_switch)"
+};
+
+
+
+xkb_symbols "nodeadkeys" {
+include "macintosh_vndr/fr(extended)"
+ name[Group1]= "France - Mac, eliminate dead keys";
+
+ key <AE01> { [ ampersand, 1, VoidSymbol, acute ] }; // MISSING: Apple
+ key <AD11> { [asciicircum,diaeresis,ocircumflex, Ocircumflex ] };
+ key <BKSL> { [ grave, sterling, at, numbersign ] };
+
+ key <AB06> { [ n, N, asciitilde, dead_tilde ] };
+};
diff --git a/xorg-server/xkeyboard-config/symbols/macintosh_vndr/jp b/xorg-server/xkeyboard-config/symbols/macintosh_vndr/jp
index a4af79f35..331257a82 100644
--- a/xorg-server/xkeyboard-config/symbols/macintosh_vndr/jp
+++ b/xorg-server/xkeyboard-config/symbols/macintosh_vndr/jp
@@ -1,35 +1,35 @@
-// JIS symbol mapping for Apple Aluminium Keyboard
-// (Damien Ciabrini <damien.ciabrini@gmail.com>)
-//
-// The JIS version of the Aluminium Keyboard is made of
-// QWERTY-like map for the latin part
-// PC98-like map for the kana part
-// EISU and KANA keys found on other Apple keyboards
-
-partial default alphanumeric_keys
-xkb_symbols "usmac" {
- name[Group1] = "Japan - Macintosh, US map";
- include "jp(common)"
-
- key <JPCM> { [ KP_Separator ] };
- key <AE13> { [ yen, bar ] };
- replace key <AE10> { [ 0 ] };
- replace key <AB11> { [ underscore ] };
- replace key <CAPS> { [ Caps_Lock ] };
-};
-
-partial alphanumeric_keys
-xkb_symbols "mac" {
- name[Group1] = "Japan - Macintosh";
- include "jp(kana)"
-
- replace key <CAPS> { [ Caps_Lock ] };
-};
-
-partial alphanumeric_keys
-xkb_symbols "alujiskeys" {
- // On JIS USB keyboard, EISU and KANA replace Hangul and Hanja
- // see keycodes macintosh(jisevdev)
- replace key <HJCV> { [ Hiragana_Katakana ] };
- replace key <HNGL> { [ Eisu_toggle ] };
-};
+// JIS symbol mapping for Apple Aluminium Keyboard
+// (Damien Ciabrini <damien.ciabrini@gmail.com>)
+//
+// The JIS version of the Aluminium Keyboard is made of
+// QWERTY-like map for the latin part
+// PC98-like map for the kana part
+// EISU and KANA keys found on other Apple keyboards
+
+partial default alphanumeric_keys
+xkb_symbols "usmac" {
+ name[Group1] = "Japan - Macintosh, US map";
+ include "jp(common)"
+
+ key <JPCM> { [ KP_Separator ] };
+ key <AE13> { [ yen, bar ] };
+ replace key <AE10> { [ 0 ] };
+ replace key <AB11> { [ underscore ] };
+ replace key <CAPS> { [ Caps_Lock ] };
+};
+
+partial alphanumeric_keys
+xkb_symbols "mac" {
+ name[Group1] = "Japan - Macintosh";
+ include "jp(kana)"
+
+ replace key <CAPS> { [ Caps_Lock ] };
+};
+
+partial alphanumeric_keys
+xkb_symbols "alujiskeys" {
+ // On JIS USB keyboard, EISU and KANA replace Hangul and Hanja
+ // see keycodes macintosh(jisevdev)
+ replace key <HJCV> { [ Hiragana_Katakana ] };
+ replace key <HNGL> { [ Eisu_toggle ] };
+};
diff --git a/xorg-server/xkeyboard-config/symbols/nec_vndr/Makefile.am b/xorg-server/xkeyboard-config/symbols/nec_vndr/Makefile.am
index ac1de6ec9..ff070065a 100644
--- a/xorg-server/xkeyboard-config/symbols/nec_vndr/Makefile.am
+++ b/xorg-server/xkeyboard-config/symbols/nec_vndr/Makefile.am
@@ -1,4 +1,4 @@
-symbolsdir = $(xkb_base)/symbols/nec_vndr
-
-dist_symbols_DATA = \
-jp
+symbolsdir = $(xkb_base)/symbols/nec_vndr
+
+dist_symbols_DATA = \
+jp
diff --git a/xorg-server/xkeyboard-config/symbols/nokia_vndr/Makefile.am b/xorg-server/xkeyboard-config/symbols/nokia_vndr/Makefile.am
index 63dc5db6e..71200ec4d 100644
--- a/xorg-server/xkeyboard-config/symbols/nokia_vndr/Makefile.am
+++ b/xorg-server/xkeyboard-config/symbols/nokia_vndr/Makefile.am
@@ -1,6 +1,6 @@
-symbolsdir = $(xkb_base)/symbols/nokia_vndr
-
-dist_symbols_DATA = \
-rx-44 \
-rx-51 \
-su-8w
+symbolsdir = $(xkb_base)/symbols/nokia_vndr
+
+dist_symbols_DATA = \
+rx-44 \
+rx-51 \
+su-8w
diff --git a/xorg-server/xkeyboard-config/symbols/nokia_vndr/rx-44 b/xorg-server/xkeyboard-config/symbols/nokia_vndr/rx-44
index 7d91d6db3..515b69eef 100644
--- a/xorg-server/xkeyboard-config/symbols/nokia_vndr/rx-44
+++ b/xorg-server/xkeyboard-config/symbols/nokia_vndr/rx-44
@@ -1,303 +1,303 @@
-partial alphanumeric_keys
-xkb_symbols "us" {
- name[Group1] = "U.S. English";
-
- include "nokia_vndr/rx-44(base)"
-
- key <AC01> { [ a, A, exclam, exclam ] };
- key <AC02> { [ s, S, quotedbl, quotedbl ] };
- key <AC03> { [ d, D, at, at ] };
- key <AC04> { [ f, F, numbersign, numbersign ] };
- key <AC05> { [ g, G, backslash, backslash ] };
- key <AC06> { [ h, H, slash, slash ] };
- key <AC07> { [ j, J, parenleft, parenleft ] };
- key <AC08> { [ k, K, parenright, parenright ] };
- key <AC09> { [ l, L, asterisk, asterisk ] };
- key <AC11> { [ apostrophe, question, question, question ] };
-
- key <AB01> { [ z, Z, yen, yen ] };
- key <AB02> { [ x, X, asciicircum, asciicircum ] };
- key <AB03> { [ c, C, asciitilde, asciitilde ] };
- key <AB04> { [ v, V, percent, percent ] };
- key <AB05> { [ b, B, ampersand, ampersand ] };
- key <AB06> { [ n, N, dollar, dollar ] };
- key <AB07> { [ m, M, EuroSign, EuroSign ] };
- key <AC10> { [ semicolon, colon, sterling, sterling ] };
- key <AE11> { [ minus, underscore, underscore, underscore ] };
- key <AE12> { [ plus, equal, equal, equal ] };
-
- key <AB08> { [ comma, less, comma, less ] };
- key <AB09> { [ period, greater, period, greater ] };
-};
-
-
-
-partial alphanumeric_keys
-xkb_symbols "fisenoda" {
- name[Group1] = "Finnish/Swedish/Norwegian/Danish";
-
- include "nokia_vndr/rx-44(base)"
-
- key <AC01> { [ a, A, exclam, exclam ] };
- key <AC02> { [ s, S, quotedbl, quotedbl ] };
- key <AC03> { [ d, D, at, at ] };
- key <AC04> { [ f, F, numbersign, numbersign ] };
- key <AC05> { [ g, G, asterisk, asterisk ] };
- key <AC06> { [ h, H, backslash, backslash ] };
- key <AC07> { [ j, J, slash, slash ] };
- key <AC08> { [ k, K, parenleft, parenleft ] };
- key <AC09> { [ l, L, parenright, parenright ] };
- key <AC11> { [ aring, Aring, question, question ] };
-
- key <AB01> { [ z, Z, EuroSign, EuroSign ] };
- key <AB02> { [ x, X, asciitilde, asciitilde ] };
- key <AB03> { [ c, C, percent, percent ] };
- key <AB04> { [ v, V, ampersand, ampersand ] };
- key <AB05> { [ b, B, plus, plus ] };
- key <AB06> { [ n, N, less, less ] };
- key <AB07> { [ m, M, greater, greater ] };
- key <AC10> { type="EIGHT_LEVEL", [ oslash, Oslash, equal, equal, odiaeresis, Odiaeresis, equal, equal ] };
- key <AE11> { type="EIGHT_LEVEL", [ ae, AE, apostrophe, apostrophe, adiaeresis, Adiaeresis, apostrophe, apostrophe ] };
- key <AE12> { [ minus, underscore, underscore, underscore ] };
-
- key <AB08> { [ comma, semicolon, comma, semicolon ] };
- key <AB09> { [ period, colon, period, colon ] };
-};
-
-
-
-partial alphanumeric_keys
-xkb_symbols "ptes" {
- name[Group1] = "Portuguese/Spanish";
-
- include "nokia_vndr/rx-44(base)"
-
- key <AC01> { [ a, A, exclam, exclam ] };
- key <AC02> { [ s, S, quotedbl, quotedbl ] };
- key <AC03> { [ d, D, at, at ] };
- key <AC04> { [ f, F, numbersign, numbersign ] };
- key <AC05> { [ g, G, asterisk, asterisk ] };
- key <AC06> { [ h, H, backslash, backslash ] };
- key <AC07> { [ j, J, slash, slash ] };
- key <AC08> { [ k, K, parenleft, parenleft ] };
- key <AC09> { [ l, L, parenright, parenright ] };
- key <AC11> { [ dead_acute, dead_grave, dead_diaeresis, dead_diaeresis ] };
-
- key <AB01> { [ z, Z, EuroSign, EuroSign ] };
- key <AB02> { [ x, X, percent, percent ] };
- key <AB03> { [ c, C, ampersand, ampersand ] };
- key <AB04> { [ v, V, exclamdown, exclamdown ] };
- key <AB05> { [ b, B, apostrophe, apostrophe ] };
- key <AB06> { [ n, N, plus, plus ] };
- key <AB07> { [ m, M, equal, equal ] };
- key <AC10> { [ ccedilla, Ccedilla, questiondown, questiondown ] };
- key <AE11> { [ ntilde, Ntilde, question, question ] };
- key <AE12> { [ dead_tilde, dead_circumflex, dead_circumflex, dead_circumflex ] };
-
- key <AB08> { [ comma, semicolon, minus, minus ] };
- key <AB09> { [ period, colon, underscore, underscore ] };
-};
-
-
-
-partial alphanumeric_keys
-xkb_symbols "fr" {
- name[Group1] = "French";
-
- include "nokia_vndr/rx-44(base)"
-
- key <AD01> { [ a, A, 1, 1 ] };
- key <AD02> { [ z, Z, 2, 2 ] };
-
- key <AC01> { [ q, Q, at, at ] };
- key <AC02> { [ s, S, percent, percent ] };
- key <AC03> { [ d, D, ecircumflex, Ecircumflex ] };
- key <AC04> { [ f, F, eacute, Eacute ] };
- key <AC05> { [ g, G, egrave, Egrave ] };
- key <AC06> { [ h, H, oe, OE ] };
- key <AC07> { [ j, J, parenleft, parenleft ] };
- key <AC08> { [ k, K, parenright, parenright ] };
- key <AC09> { [ l, L, agrave, Agrave ] };
- key <AC11> { [ m, M, ugrave, Ugrave ] };
-
- key <AB01> { [ w, w, EuroSign, EuroSign ] };
- key <AB02> { [ x, X, numbersign, numbersign ] };
- key <AB03> { [ c, C, ccedilla, Ccedilla ] };
- key <AB04> { [ v, V, plus, plus ] };
- key <AB05> { [ b, B, equal, equal ] };
- key <AB06> { [ n, N, quotedbl, quotedbl ] };
- key <AB07> { [ comma, question, backslash, backslash ] };
- key <AC10> { [ semicolon, period, minus, minus ] };
- key <AE11> { [ colon, slash, underscore, underscore ] };
- key <AE12> { [ apostrophe, apostrophe, mu, mu ] };
-
- key <AB08> { [ less, greater, less, greater ] };
- key <AB09> { [ exclam, section, asterisk, asterisk ] };
-};
-
-
-
-partial alphanumeric_keys
-xkb_symbols "de" {
- name[Group1] = "German";
-
- include "nokia_vndr/rx-44(base)"
-
- key <AD06> { [ z, Z, 6, 6 ] };
-
- key <AC01> { [ a, A, exclam, exclam ] };
- key <AC02> { [ s, S, quotedbl, quotedbl ] };
- key <AC03> { [ d, D, at, at ] };
- key <AC04> { [ f, F, numbersign, numbersign ] };
- key <AC05> { [ g, G, percent, percent ] };
- key <AC06> { [ h, H, backslash, backslash ] };
- key <AC07> { [ j, J, slash, slash ] };
- key <AC08> { [ k, K, parenleft, parenleft ] };
- key <AC09> { [ l, L, parenright, parenright ] };
- key <AC11> { [ udiaeresis, Udiaeresis, question, question ] };
-
- key <AB01> { [ y, Y, EuroSign, EuroSign ] };
- key <AB02> { [ x, X, asciitilde, asciitilde ] };
- key <AB03> { [ c, C, asterisk, asterisk ] };
- key <AB04> { [ v, V, ampersand, ampersand ] };
- key <AB05> { [ b, B, plus, plus ] };
- key <AB06> { [ n, N, less, less ] };
- key <AB07> { [ m, M, greater, greater ] };
- key <AC10> { [ odiaeresis, Odiaeresis, equal, equal ] };
- key <AE11> { [ adiaeresis, Adiaeresis, apostrophe, apostrophe ] };
- key <AE12> { [ minus, underscore, ssharp, ssharp ] };
-
- key <AB08> { [ comma, semicolon, comma, semicolon ] };
- key <AB09> { [ period, colon, period, colon ] };
-};
-
-
-// Levels 5-8 are Russian, levels 1-4 US English, for shortcut reasons.
-partial alphanumeric_keys
-xkb_symbols "ru" {
- name[Group1] = "Russian";
-
- include "nokia_vndr/rx-44(base)"
-
- key <AD01> { type="EIGHT_LEVEL", [ q, Q, 1, 1, Cyrillic_shorti, Cyrillic_SHORTI, 1, 1 ] };
- key <AD02> { type="EIGHT_LEVEL", [ w, W, 2, 2, Cyrillic_tse, Cyrillic_TSE, 2, 2 ] };
- key <AD03> { type="EIGHT_LEVEL", [ e, E, 3, 3, Cyrillic_u, Cyrillic_U, 3, 3 ] };
- key <AD04> { type="EIGHT_LEVEL", [ r, R, 4, 4, Cyrillic_ka, Cyrillic_KA, 4, 4 ] };
- key <AD05> { type="EIGHT_LEVEL", [ t, T, 5, 5, Cyrillic_ie, Cyrillic_IE, 5, 5 ] };
- key <AD06> { type="EIGHT_LEVEL", [ y, Y, 6, 6, Cyrillic_en, Cyrillic_EN, 6, 6 ] };
- key <AD07> { type="EIGHT_LEVEL", [ u, U, 7, 7, Cyrillic_ghe, Cyrillic_GHE, 7, 7 ] };
- key <AD08> { type="EIGHT_LEVEL", [ i, I, 8, 8, Cyrillic_sha, Cyrillic_SHA, 8, 8 ] };
- key <AD09> { type="EIGHT_LEVEL", [ o, O, 9, 9, Cyrillic_shcha, Cyrillic_SHCHA, 9, 9 ] };
- key <AD10> { type="EIGHT_LEVEL", [ p, P, 0, 0, Cyrillic_ze, Cyrillic_ZE, 0, 0 ] };
-
- key <AC01> { type="EIGHT_LEVEL", [ a, A, exclam, exclam, Cyrillic_ef, Cyrillic_EF, exclam, exclam ] };
- key <AC02> { type="EIGHT_LEVEL", [ s, S, quotedbl, quotedbl, Cyrillic_yeru, Cyrillic_YERU, quotedbl, quotedbl ] };
- key <AC03> { type="EIGHT_LEVEL", [ d, D, at, at, Cyrillic_ve, Cyrillic_VE, at, at ] };
- key <AC04> { type="EIGHT_LEVEL", [ f, F, numbersign, numbersign, Cyrillic_a, Cyrillic_A, numbersign, numbersign ] };
- key <AC05> { type="EIGHT_LEVEL", [ g, G, backslash, backslash, Cyrillic_pe, Cyrillic_PE, backslash, backslash ] };
- key <AC06> { type="EIGHT_LEVEL", [ h, H, slash, slash, Cyrillic_er, Cyrillic_ER, slash, slash ] };
- key <AC07> { type="EIGHT_LEVEL", [ j, J, parenleft, parenleft, Cyrillic_o, Cyrillic_O, parenleft, parenleft ] };
- key <AC08> { type="EIGHT_LEVEL", [ k, K, parenright, parenright, Cyrillic_el, Cyrillic_EL, parenright, parenright ] };
- key <AC09> { type="EIGHT_LEVEL", [ l, L, colon, colon, Cyrillic_de, Cyrillic_DE, colon, colon ] };
- key <AC11> { type="EIGHT_LEVEL", [ NoSymbol, NoSymbol, semicolon, semicolon, Cyrillic_zhe, Cyrillic_ZHE, semicolon, semicolon ] };
-
- key <AB01> { type="EIGHT_LEVEL", [ z, Z, underscore, underscore, Cyrillic_ya, Cyrillic_YA, minus, minus ] };
- key <AB02> { type="EIGHT_LEVEL", [ x, X, percent, percent, Cyrillic_che, Cyrillic_CHE, percent, percent ] };
- key <AB03> { type="EIGHT_LEVEL", [ c, C, 0x1002116, 0x1002116, Cyrillic_es, Cyrillic_ES, 0x1002116, 0x1002116 ] };
- key <AB04> { type="EIGHT_LEVEL", [ v, V, equal, equal, Cyrillic_em, Cyrillic_EM, equal, equal ] };
- key <AB05> { type="EIGHT_LEVEL", [ b, B, ampersand, ampersand, Cyrillic_i, Cyrillic_I, ampersand, ampersand ] };
- key <AB06> { type="EIGHT_LEVEL", [ n, N, asterisk, asterisk, Cyrillic_te, Cyrillic_TE, asterisk, asterisk ] };
- key <AB07> { type="EIGHT_LEVEL", [ m, M, apostrophe, apostrophe, Cyrillic_softsign, Cyrillic_SOFTSIGN, apostrophe, apostrophe ] };
- key <AC10> { type="EIGHT_LEVEL", [ NoSymbol, NoSymbol, minus, minus, Cyrillic_be, Cyrillic_BE, minus, minus ] };
- key <AE11> { type="EIGHT_LEVEL", [ NoSymbol, NoSymbol, question, question, Cyrillic_yu, Cyrillic_YU, question, question ] };
- key <AE12> { type="EIGHT_LEVEL", [ NoSymbol, NoSymbol, Cyrillic_hardsign, Cyrillic_HARDSIGN, Cyrillic_ha, Cyrillic_HA, Cyrillic_hardsign, Cyrillic_HARDSIGN ] };
-
- key <AB08> { type="EIGHT_LEVEL", [ period, comma, period, comma, period, comma, period, comma ] };
- key <AB09> { type="EIGHT_LEVEL", [ NoSymbol, NoSymbol, Cyrillic_io, Cyrillic_IO, Cyrillic_e, Cyrillic_E, Cyrillic_io, Cyrillic_IO ] };
-};
-
-
-
-partial alphanumeric_keys
-xkb_symbols "it" {
- name[Group1] = "Italian";
-
- include "nokia_vndr/rx-44(base)"
-
- key <AC01> { [ a, A, exclam, exclam ] };
- key <AC02> { [ s, S, quotedbl, quotedbl ] };
- key <AC03> { [ d, D, at, at ] };
- key <AC04> { [ f, F, numbersign, numbersign ] };
- key <AC05> { [ g, G, asterisk, asterisk ] };
- key <AC06> { [ h, H, backslash, backslash ] };
- key <AC07> { [ j, J, slash, slash ] };
- key <AC08> { [ k, K, parenleft, parenleft ] };
- key <AC09> { [ l, L, parenright, parenright ] };
- key <AC11> { [ apostrophe, question, igrave, Igrave ] };
-
- key <AB01> { [ z, Z, EuroSign, EuroSign ] };
- key <AB02> { [ x, X, asciitilde, asciitilde ] };
- key <AB03> { [ c, C, ampersand, ampersand ] };
- key <AB04> { [ v, V, equal, equal ] };
- key <AB05> { [ b, B, less, less ] };
- key <AB06> { [ n, N, greater, greater ] };
- key <AB07> { [ m, M, plus, plus ] };
- key <AC10> { [ eacute, Eacute, ograve, Ograve ] };
- key <AE11> { [ egrave, Egrave, agrave, Agrave ] };
- key <AE12> { [ minus, underscore, ugrave, Ugrave ] };
-
- key <AB08> { [ comma, semicolon, comma, semicolon ] };
- key <AB09> { [ period, colon, period, colon ] };
-};
-
-partial default alphanumeric_keys
-xkb_symbols "base" {
- key <AD01> { [ q, Q, 1, 1 ] };
- key <AD02> { [ w, W, 2, 2 ] };
- key <AD03> { [ e, E, 3, 3 ] };
- key <AD04> { [ r, R, 4, 4 ] };
- key <AD05> { [ t, T, 5, 5 ] };
- key <AD06> { [ y, Y, 6, 6 ] };
- key <AD07> { [ u, U, 7, 7 ] };
- key <AD08> { [ i, I, 8, 8 ] };
- key <AD09> { [ o, O, 9, 9 ] };
- key <AD10> { [ p, P, 0, 0 ] };
- key <BKSP> { [ BackSpace, BackSpace, BackSpace, BackSpace ] };
-
- // broken UI spec.
- key <RTRN> { [ KP_Enter, KP_Enter, KP_Enter, KP_Enter ] };
-
- key <COMP> { [ Multi_key, Multi_key, Multi_key, Multi_key ] };
- key <LFSH> { [ Shift_L, Shift_L, Shift_L, Shift_L ] };
- key <FN> { [ ISO_Level3_Shift, ISO_Level3_Shift, ISO_Level3_Shift, ISO_Level3_Shift ] };
- key <SPCE> { [ space, space, space, space ] };
- key <RCTL> { [ Control_R, Control_R, Control_R, Control_R ] };
- key <TAB> { [ Tab, Tab, Tab, Tab ] };
-
- modifier_map Shift { Shift_L };
- modifier_map Mod5 { ISO_Level3_Shift };
- modifier_map Control { Control_R };
-
- key <KPEN> { [ Return ] };
- key <UP> { [ Up ] };
- key <DOWN> { [ Down ] };
- key <LEFT> { [ Left ] };
- key <RGHT> { [ Right ] };
-
- key <ESC> { [ Escape ] };
- key <FK01> { [ F1 ] };
- key <FK02> { [ F2 ] };
- key <FK03> { [ F3 ] };
- key <FK04> { [ F4 ] };
- key <FK05> { [ F5 ] };
- key <FK06> { [ F6 ] };
- key <FK07> { [ F7 ] };
- key <FK08> { [ F8 ] };
- key <FK09> { [ F9 ] };
- key <FK10> { [ F10 ] };
- key <FK11> { [ F11 ] };
- key <FK12> { [ F12 ] };
-
- // generated from the headset, must always be in the map.
- key <I29> { [ XF86Phone ] };
-};
+partial alphanumeric_keys
+xkb_symbols "us" {
+ name[Group1] = "U.S. English";
+
+ include "nokia_vndr/rx-44(base)"
+
+ key <AC01> { [ a, A, exclam, exclam ] };
+ key <AC02> { [ s, S, quotedbl, quotedbl ] };
+ key <AC03> { [ d, D, at, at ] };
+ key <AC04> { [ f, F, numbersign, numbersign ] };
+ key <AC05> { [ g, G, backslash, backslash ] };
+ key <AC06> { [ h, H, slash, slash ] };
+ key <AC07> { [ j, J, parenleft, parenleft ] };
+ key <AC08> { [ k, K, parenright, parenright ] };
+ key <AC09> { [ l, L, asterisk, asterisk ] };
+ key <AC11> { [ apostrophe, question, question, question ] };
+
+ key <AB01> { [ z, Z, yen, yen ] };
+ key <AB02> { [ x, X, asciicircum, asciicircum ] };
+ key <AB03> { [ c, C, asciitilde, asciitilde ] };
+ key <AB04> { [ v, V, percent, percent ] };
+ key <AB05> { [ b, B, ampersand, ampersand ] };
+ key <AB06> { [ n, N, dollar, dollar ] };
+ key <AB07> { [ m, M, EuroSign, EuroSign ] };
+ key <AC10> { [ semicolon, colon, sterling, sterling ] };
+ key <AE11> { [ minus, underscore, underscore, underscore ] };
+ key <AE12> { [ plus, equal, equal, equal ] };
+
+ key <AB08> { [ comma, less, comma, less ] };
+ key <AB09> { [ period, greater, period, greater ] };
+};
+
+
+
+partial alphanumeric_keys
+xkb_symbols "fisenoda" {
+ name[Group1] = "Finnish/Swedish/Norwegian/Danish";
+
+ include "nokia_vndr/rx-44(base)"
+
+ key <AC01> { [ a, A, exclam, exclam ] };
+ key <AC02> { [ s, S, quotedbl, quotedbl ] };
+ key <AC03> { [ d, D, at, at ] };
+ key <AC04> { [ f, F, numbersign, numbersign ] };
+ key <AC05> { [ g, G, asterisk, asterisk ] };
+ key <AC06> { [ h, H, backslash, backslash ] };
+ key <AC07> { [ j, J, slash, slash ] };
+ key <AC08> { [ k, K, parenleft, parenleft ] };
+ key <AC09> { [ l, L, parenright, parenright ] };
+ key <AC11> { [ aring, Aring, question, question ] };
+
+ key <AB01> { [ z, Z, EuroSign, EuroSign ] };
+ key <AB02> { [ x, X, asciitilde, asciitilde ] };
+ key <AB03> { [ c, C, percent, percent ] };
+ key <AB04> { [ v, V, ampersand, ampersand ] };
+ key <AB05> { [ b, B, plus, plus ] };
+ key <AB06> { [ n, N, less, less ] };
+ key <AB07> { [ m, M, greater, greater ] };
+ key <AC10> { type="EIGHT_LEVEL", [ oslash, Oslash, equal, equal, odiaeresis, Odiaeresis, equal, equal ] };
+ key <AE11> { type="EIGHT_LEVEL", [ ae, AE, apostrophe, apostrophe, adiaeresis, Adiaeresis, apostrophe, apostrophe ] };
+ key <AE12> { [ minus, underscore, underscore, underscore ] };
+
+ key <AB08> { [ comma, semicolon, comma, semicolon ] };
+ key <AB09> { [ period, colon, period, colon ] };
+};
+
+
+
+partial alphanumeric_keys
+xkb_symbols "ptes" {
+ name[Group1] = "Portuguese/Spanish";
+
+ include "nokia_vndr/rx-44(base)"
+
+ key <AC01> { [ a, A, exclam, exclam ] };
+ key <AC02> { [ s, S, quotedbl, quotedbl ] };
+ key <AC03> { [ d, D, at, at ] };
+ key <AC04> { [ f, F, numbersign, numbersign ] };
+ key <AC05> { [ g, G, asterisk, asterisk ] };
+ key <AC06> { [ h, H, backslash, backslash ] };
+ key <AC07> { [ j, J, slash, slash ] };
+ key <AC08> { [ k, K, parenleft, parenleft ] };
+ key <AC09> { [ l, L, parenright, parenright ] };
+ key <AC11> { [ dead_acute, dead_grave, dead_diaeresis, dead_diaeresis ] };
+
+ key <AB01> { [ z, Z, EuroSign, EuroSign ] };
+ key <AB02> { [ x, X, percent, percent ] };
+ key <AB03> { [ c, C, ampersand, ampersand ] };
+ key <AB04> { [ v, V, exclamdown, exclamdown ] };
+ key <AB05> { [ b, B, apostrophe, apostrophe ] };
+ key <AB06> { [ n, N, plus, plus ] };
+ key <AB07> { [ m, M, equal, equal ] };
+ key <AC10> { [ ccedilla, Ccedilla, questiondown, questiondown ] };
+ key <AE11> { [ ntilde, Ntilde, question, question ] };
+ key <AE12> { [ dead_tilde, dead_circumflex, dead_circumflex, dead_circumflex ] };
+
+ key <AB08> { [ comma, semicolon, minus, minus ] };
+ key <AB09> { [ period, colon, underscore, underscore ] };
+};
+
+
+
+partial alphanumeric_keys
+xkb_symbols "fr" {
+ name[Group1] = "French";
+
+ include "nokia_vndr/rx-44(base)"
+
+ key <AD01> { [ a, A, 1, 1 ] };
+ key <AD02> { [ z, Z, 2, 2 ] };
+
+ key <AC01> { [ q, Q, at, at ] };
+ key <AC02> { [ s, S, percent, percent ] };
+ key <AC03> { [ d, D, ecircumflex, Ecircumflex ] };
+ key <AC04> { [ f, F, eacute, Eacute ] };
+ key <AC05> { [ g, G, egrave, Egrave ] };
+ key <AC06> { [ h, H, oe, OE ] };
+ key <AC07> { [ j, J, parenleft, parenleft ] };
+ key <AC08> { [ k, K, parenright, parenright ] };
+ key <AC09> { [ l, L, agrave, Agrave ] };
+ key <AC11> { [ m, M, ugrave, Ugrave ] };
+
+ key <AB01> { [ w, w, EuroSign, EuroSign ] };
+ key <AB02> { [ x, X, numbersign, numbersign ] };
+ key <AB03> { [ c, C, ccedilla, Ccedilla ] };
+ key <AB04> { [ v, V, plus, plus ] };
+ key <AB05> { [ b, B, equal, equal ] };
+ key <AB06> { [ n, N, quotedbl, quotedbl ] };
+ key <AB07> { [ comma, question, backslash, backslash ] };
+ key <AC10> { [ semicolon, period, minus, minus ] };
+ key <AE11> { [ colon, slash, underscore, underscore ] };
+ key <AE12> { [ apostrophe, apostrophe, mu, mu ] };
+
+ key <AB08> { [ less, greater, less, greater ] };
+ key <AB09> { [ exclam, section, asterisk, asterisk ] };
+};
+
+
+
+partial alphanumeric_keys
+xkb_symbols "de" {
+ name[Group1] = "German";
+
+ include "nokia_vndr/rx-44(base)"
+
+ key <AD06> { [ z, Z, 6, 6 ] };
+
+ key <AC01> { [ a, A, exclam, exclam ] };
+ key <AC02> { [ s, S, quotedbl, quotedbl ] };
+ key <AC03> { [ d, D, at, at ] };
+ key <AC04> { [ f, F, numbersign, numbersign ] };
+ key <AC05> { [ g, G, percent, percent ] };
+ key <AC06> { [ h, H, backslash, backslash ] };
+ key <AC07> { [ j, J, slash, slash ] };
+ key <AC08> { [ k, K, parenleft, parenleft ] };
+ key <AC09> { [ l, L, parenright, parenright ] };
+ key <AC11> { [ udiaeresis, Udiaeresis, question, question ] };
+
+ key <AB01> { [ y, Y, EuroSign, EuroSign ] };
+ key <AB02> { [ x, X, asciitilde, asciitilde ] };
+ key <AB03> { [ c, C, asterisk, asterisk ] };
+ key <AB04> { [ v, V, ampersand, ampersand ] };
+ key <AB05> { [ b, B, plus, plus ] };
+ key <AB06> { [ n, N, less, less ] };
+ key <AB07> { [ m, M, greater, greater ] };
+ key <AC10> { [ odiaeresis, Odiaeresis, equal, equal ] };
+ key <AE11> { [ adiaeresis, Adiaeresis, apostrophe, apostrophe ] };
+ key <AE12> { [ minus, underscore, ssharp, ssharp ] };
+
+ key <AB08> { [ comma, semicolon, comma, semicolon ] };
+ key <AB09> { [ period, colon, period, colon ] };
+};
+
+
+// Levels 5-8 are Russian, levels 1-4 US English, for shortcut reasons.
+partial alphanumeric_keys
+xkb_symbols "ru" {
+ name[Group1] = "Russian";
+
+ include "nokia_vndr/rx-44(base)"
+
+ key <AD01> { type="EIGHT_LEVEL", [ q, Q, 1, 1, Cyrillic_shorti, Cyrillic_SHORTI, 1, 1 ] };
+ key <AD02> { type="EIGHT_LEVEL", [ w, W, 2, 2, Cyrillic_tse, Cyrillic_TSE, 2, 2 ] };
+ key <AD03> { type="EIGHT_LEVEL", [ e, E, 3, 3, Cyrillic_u, Cyrillic_U, 3, 3 ] };
+ key <AD04> { type="EIGHT_LEVEL", [ r, R, 4, 4, Cyrillic_ka, Cyrillic_KA, 4, 4 ] };
+ key <AD05> { type="EIGHT_LEVEL", [ t, T, 5, 5, Cyrillic_ie, Cyrillic_IE, 5, 5 ] };
+ key <AD06> { type="EIGHT_LEVEL", [ y, Y, 6, 6, Cyrillic_en, Cyrillic_EN, 6, 6 ] };
+ key <AD07> { type="EIGHT_LEVEL", [ u, U, 7, 7, Cyrillic_ghe, Cyrillic_GHE, 7, 7 ] };
+ key <AD08> { type="EIGHT_LEVEL", [ i, I, 8, 8, Cyrillic_sha, Cyrillic_SHA, 8, 8 ] };
+ key <AD09> { type="EIGHT_LEVEL", [ o, O, 9, 9, Cyrillic_shcha, Cyrillic_SHCHA, 9, 9 ] };
+ key <AD10> { type="EIGHT_LEVEL", [ p, P, 0, 0, Cyrillic_ze, Cyrillic_ZE, 0, 0 ] };
+
+ key <AC01> { type="EIGHT_LEVEL", [ a, A, exclam, exclam, Cyrillic_ef, Cyrillic_EF, exclam, exclam ] };
+ key <AC02> { type="EIGHT_LEVEL", [ s, S, quotedbl, quotedbl, Cyrillic_yeru, Cyrillic_YERU, quotedbl, quotedbl ] };
+ key <AC03> { type="EIGHT_LEVEL", [ d, D, at, at, Cyrillic_ve, Cyrillic_VE, at, at ] };
+ key <AC04> { type="EIGHT_LEVEL", [ f, F, numbersign, numbersign, Cyrillic_a, Cyrillic_A, numbersign, numbersign ] };
+ key <AC05> { type="EIGHT_LEVEL", [ g, G, backslash, backslash, Cyrillic_pe, Cyrillic_PE, backslash, backslash ] };
+ key <AC06> { type="EIGHT_LEVEL", [ h, H, slash, slash, Cyrillic_er, Cyrillic_ER, slash, slash ] };
+ key <AC07> { type="EIGHT_LEVEL", [ j, J, parenleft, parenleft, Cyrillic_o, Cyrillic_O, parenleft, parenleft ] };
+ key <AC08> { type="EIGHT_LEVEL", [ k, K, parenright, parenright, Cyrillic_el, Cyrillic_EL, parenright, parenright ] };
+ key <AC09> { type="EIGHT_LEVEL", [ l, L, colon, colon, Cyrillic_de, Cyrillic_DE, colon, colon ] };
+ key <AC11> { type="EIGHT_LEVEL", [ NoSymbol, NoSymbol, semicolon, semicolon, Cyrillic_zhe, Cyrillic_ZHE, semicolon, semicolon ] };
+
+ key <AB01> { type="EIGHT_LEVEL", [ z, Z, underscore, underscore, Cyrillic_ya, Cyrillic_YA, minus, minus ] };
+ key <AB02> { type="EIGHT_LEVEL", [ x, X, percent, percent, Cyrillic_che, Cyrillic_CHE, percent, percent ] };
+ key <AB03> { type="EIGHT_LEVEL", [ c, C, 0x1002116, 0x1002116, Cyrillic_es, Cyrillic_ES, 0x1002116, 0x1002116 ] };
+ key <AB04> { type="EIGHT_LEVEL", [ v, V, equal, equal, Cyrillic_em, Cyrillic_EM, equal, equal ] };
+ key <AB05> { type="EIGHT_LEVEL", [ b, B, ampersand, ampersand, Cyrillic_i, Cyrillic_I, ampersand, ampersand ] };
+ key <AB06> { type="EIGHT_LEVEL", [ n, N, asterisk, asterisk, Cyrillic_te, Cyrillic_TE, asterisk, asterisk ] };
+ key <AB07> { type="EIGHT_LEVEL", [ m, M, apostrophe, apostrophe, Cyrillic_softsign, Cyrillic_SOFTSIGN, apostrophe, apostrophe ] };
+ key <AC10> { type="EIGHT_LEVEL", [ NoSymbol, NoSymbol, minus, minus, Cyrillic_be, Cyrillic_BE, minus, minus ] };
+ key <AE11> { type="EIGHT_LEVEL", [ NoSymbol, NoSymbol, question, question, Cyrillic_yu, Cyrillic_YU, question, question ] };
+ key <AE12> { type="EIGHT_LEVEL", [ NoSymbol, NoSymbol, Cyrillic_hardsign, Cyrillic_HARDSIGN, Cyrillic_ha, Cyrillic_HA, Cyrillic_hardsign, Cyrillic_HARDSIGN ] };
+
+ key <AB08> { type="EIGHT_LEVEL", [ period, comma, period, comma, period, comma, period, comma ] };
+ key <AB09> { type="EIGHT_LEVEL", [ NoSymbol, NoSymbol, Cyrillic_io, Cyrillic_IO, Cyrillic_e, Cyrillic_E, Cyrillic_io, Cyrillic_IO ] };
+};
+
+
+
+partial alphanumeric_keys
+xkb_symbols "it" {
+ name[Group1] = "Italian";
+
+ include "nokia_vndr/rx-44(base)"
+
+ key <AC01> { [ a, A, exclam, exclam ] };
+ key <AC02> { [ s, S, quotedbl, quotedbl ] };
+ key <AC03> { [ d, D, at, at ] };
+ key <AC04> { [ f, F, numbersign, numbersign ] };
+ key <AC05> { [ g, G, asterisk, asterisk ] };
+ key <AC06> { [ h, H, backslash, backslash ] };
+ key <AC07> { [ j, J, slash, slash ] };
+ key <AC08> { [ k, K, parenleft, parenleft ] };
+ key <AC09> { [ l, L, parenright, parenright ] };
+ key <AC11> { [ apostrophe, question, igrave, Igrave ] };
+
+ key <AB01> { [ z, Z, EuroSign, EuroSign ] };
+ key <AB02> { [ x, X, asciitilde, asciitilde ] };
+ key <AB03> { [ c, C, ampersand, ampersand ] };
+ key <AB04> { [ v, V, equal, equal ] };
+ key <AB05> { [ b, B, less, less ] };
+ key <AB06> { [ n, N, greater, greater ] };
+ key <AB07> { [ m, M, plus, plus ] };
+ key <AC10> { [ eacute, Eacute, ograve, Ograve ] };
+ key <AE11> { [ egrave, Egrave, agrave, Agrave ] };
+ key <AE12> { [ minus, underscore, ugrave, Ugrave ] };
+
+ key <AB08> { [ comma, semicolon, comma, semicolon ] };
+ key <AB09> { [ period, colon, period, colon ] };
+};
+
+partial default alphanumeric_keys
+xkb_symbols "base" {
+ key <AD01> { [ q, Q, 1, 1 ] };
+ key <AD02> { [ w, W, 2, 2 ] };
+ key <AD03> { [ e, E, 3, 3 ] };
+ key <AD04> { [ r, R, 4, 4 ] };
+ key <AD05> { [ t, T, 5, 5 ] };
+ key <AD06> { [ y, Y, 6, 6 ] };
+ key <AD07> { [ u, U, 7, 7 ] };
+ key <AD08> { [ i, I, 8, 8 ] };
+ key <AD09> { [ o, O, 9, 9 ] };
+ key <AD10> { [ p, P, 0, 0 ] };
+ key <BKSP> { [ BackSpace, BackSpace, BackSpace, BackSpace ] };
+
+ // broken UI spec.
+ key <RTRN> { [ KP_Enter, KP_Enter, KP_Enter, KP_Enter ] };
+
+ key <COMP> { [ Multi_key, Multi_key, Multi_key, Multi_key ] };
+ key <LFSH> { [ Shift_L, Shift_L, Shift_L, Shift_L ] };
+ key <FN> { [ ISO_Level3_Shift, ISO_Level3_Shift, ISO_Level3_Shift, ISO_Level3_Shift ] };
+ key <SPCE> { [ space, space, space, space ] };
+ key <RCTL> { [ Control_R, Control_R, Control_R, Control_R ] };
+ key <TAB> { [ Tab, Tab, Tab, Tab ] };
+
+ modifier_map Shift { Shift_L };
+ modifier_map Mod5 { ISO_Level3_Shift };
+ modifier_map Control { Control_R };
+
+ key <KPEN> { [ Return ] };
+ key <UP> { [ Up ] };
+ key <DOWN> { [ Down ] };
+ key <LEFT> { [ Left ] };
+ key <RGHT> { [ Right ] };
+
+ key <ESC> { [ Escape ] };
+ key <FK01> { [ F1 ] };
+ key <FK02> { [ F2 ] };
+ key <FK03> { [ F3 ] };
+ key <FK04> { [ F4 ] };
+ key <FK05> { [ F5 ] };
+ key <FK06> { [ F6 ] };
+ key <FK07> { [ F7 ] };
+ key <FK08> { [ F8 ] };
+ key <FK09> { [ F9 ] };
+ key <FK10> { [ F10 ] };
+ key <FK11> { [ F11 ] };
+ key <FK12> { [ F12 ] };
+
+ // generated from the headset, must always be in the map.
+ key <I29> { [ XF86Phone ] };
+};
diff --git a/xorg-server/xkeyboard-config/symbols/sgi_vndr/Makefile.am b/xorg-server/xkeyboard-config/symbols/sgi_vndr/Makefile.am
index 0133ca001..b1123e70e 100644
--- a/xorg-server/xkeyboard-config/symbols/sgi_vndr/Makefile.am
+++ b/xorg-server/xkeyboard-config/symbols/sgi_vndr/Makefile.am
@@ -1,4 +1,4 @@
-symbolsdir = $(xkb_base)/symbols/sgi_vndr
-
-dist_symbols_DATA = \
-jp
+symbolsdir = $(xkb_base)/symbols/sgi_vndr
+
+dist_symbols_DATA = \
+jp
diff --git a/xorg-server/xkeyboard-config/symbols/sony_vndr/Makefile.am b/xorg-server/xkeyboard-config/symbols/sony_vndr/Makefile.am
index 5577f7c7c..e1a77d957 100644
--- a/xorg-server/xkeyboard-config/symbols/sony_vndr/Makefile.am
+++ b/xorg-server/xkeyboard-config/symbols/sony_vndr/Makefile.am
@@ -1,4 +1,4 @@
-symbolsdir = $(xkb_base)/symbols/sony_vndr
-
-dist_symbols_DATA = \
-us
+symbolsdir = $(xkb_base)/symbols/sony_vndr
+
+dist_symbols_DATA = \
+us
diff --git a/xorg-server/xkeyboard-config/symbols/sun_vndr/Makefile.am b/xorg-server/xkeyboard-config/symbols/sun_vndr/Makefile.am
index 00692e334..cc4c5b620 100644
--- a/xorg-server/xkeyboard-config/symbols/sun_vndr/Makefile.am
+++ b/xorg-server/xkeyboard-config/symbols/sun_vndr/Makefile.am
@@ -1,10 +1,10 @@
-symbolsdir = $(xkb_base)/symbols/sun_vndr
-
-dist_symbols_DATA = \
- ara be br ca ch \
- cz de dk ee es \
- fi fr gb gr it \
- jp kr lt lv nl \
- no pl pt ro ru \
- se sk solaris tr tuv \
- tw ua us
+symbolsdir = $(xkb_base)/symbols/sun_vndr
+
+dist_symbols_DATA = \
+ ara be br ca ch \
+ cz de dk ee es \
+ fi fr gb gr it \
+ jp kr lt lv nl \
+ no pl pt ro ru \
+ se sk solaris tr tuv \
+ tw ua us
diff --git a/xorg-server/xkeyboard-config/symbols/sun_vndr/solaris b/xorg-server/xkeyboard-config/symbols/sun_vndr/solaris
index d07b150d1..c435744ee 100644
--- a/xorg-server/xkeyboard-config/symbols/sun_vndr/solaris
+++ b/xorg-server/xkeyboard-config/symbols/sun_vndr/solaris
@@ -1,213 +1,213 @@
-//-------------------------------------------------------------------------
-//
-// Copyright 2010 Sun Microsystems, Inc. All rights reserved.
-//
-// Permission is hereby granted, free of charge, to any person obtaining a
-// copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, and/or sell copies of the Software, and to permit persons
-// to whom the Software is furnished to do so, provided that the above
-// copyright notice(s) and this permission notice appear in all copies of
-// the Software and that both the above copyright notice(s) and this
-// permission notice appear in supporting documentation.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
-// OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
-// HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL
-// INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING
-// FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
-// NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
-// WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
-//
-// Except as contained in this notice, the name of a copyright holder
-// shall not be used in advertising or otherwise to promote the sale, use
-// or other dealings in this Software without prior written authorization
-// of the copyright holder.
-//
-//-------------------------------------------------------------------------
-//
-
-//
-// CDDL HEADER START
-//
-// The contents of this file are subject to the terms of the
-// Common Development and Distribution License (the "License").
-// You may not use this file except in compliance with the License.
-//
-// You can obtain a copy of the license at src/OPENSOLARIS.LICENSE
-// or http://www.opensolaris.org/os/licensing.
-// See the License for the specific language governing permissions
-// and limitations under the License.
-//
-// When distributing Covered Code, include this CDDL HEADER in each
-// file and include the License file at src/OPENSOLARIS.LICENSE.
-// If applicable, add the following below this CDDL HEADER, with the
-// fields enclosed by brackets "[]" replaced with your own identifying
-// information: Portions Copyright [yyyy] [name of copyright owner]
-//
-// CDDL HEADER END
-//
-
-// Default map provides backwards compatibility with Sun keyboards from
-// long ago and the key mappings still used in Solaris Xsun today
-
-partial default
-xkb_symbols "defaults_common" {
-
- // Left side keys were labeled L1-L10 on Sun Type 2 & Type 3 keyboards
- // and the names have stuck (you can spot a longtime Sun admin when you
- // hear them say to hit "L1-A" to enter the OpenBoot PROM)
- // These names get mapped to the keysyms F11-F20
- key <STOP> { [ L1, L1 ], [ SunStop ] };
- key <AGAI> { [ L2, L2 ], [ SunAgain ] };
- key <PROP> { [ L3, L3 ], [ SunProps ] };
- key <UNDO> { [ L4, L4 ], [ SunUndo ] };
- key <FRNT> { [ L5, L5 ], [ SunFront ] };
- key <COPY> { [ L6, L6 ], [ SunCopy ] };
- key <OPEN> { [ L7, L7 ], [ SunOpen ] };
- key <PAST> { [ L8, L8 ], [ SunPaste ] };
- key <FIND> { [ L9, L9 ], [ SunFind ] };
- key <CUT> { [ L10, L10 ], [ SunCut ] };
-
- // And on the right side, the function keys were labeled R1-R15,
- // which get mapped to the keysyms F21-F35
- // This includes the keys that became the numeric keypad
- key <PAUS> { [ R1, R1 ], [ Pause ] };
- key <PRSC> { [ R2, R2 ], [ Print ] };
- key <SCLK> { [ R3, R3 ], [ Scroll_Lock, Break ] };
-
- key <KPEQ> { [ KP_Equal ], [ R4, KP_Equal ] };
- key <KPDV> { [ KP_Divide ], [ R5, KP_Divide ] };
- key <KPMU> { [ KP_Multiply ], [ R6, KP_Multiply ] };
-
- key <KP7> { [ KP_Home, KP_7, R7 ], [ R7, KP_7, Home ] };
- key <KP8> { [ KP_Up, KP_8, R8 ], [ R8, KP_8, Up ] };
- key <KP9> { [ KP_Prior, KP_9, R9 ], [ R9, KP_9, Prior ] };
-
- key <KP4> { [ KP_Left, KP_4, R10 ], [ R10, KP_4, Left ] };
- key <KP5> { [ KP_Begin, KP_5, R11 ], [ R11, KP_5 ] };
- key <KP6> { [ KP_Right, KP_6, R12 ], [ R12, KP_6, Right ] };
-
- key <KP1> { [ KP_End, KP_1, R13 ], [ R13, KP_1, End ] };
- key <KP2> { [ KP_Down, KP_2, R14 ], [ R14, KP_2, Down ] };
- key <KP3> { [ KP_Next, KP_3, R15 ], [ R15, KP_3, Next ] };
-
- // F11 & F12 are mapped to SunF36 and SunF37 since they were added
- // after F11-F35 were already assigned on Sun keyboards
- key <FK11> { [ SunF36 ], [ F11 ] };
- key <FK12> { [ SunF37 ], [ F12 ] };
-
- // These were added to the keyboard much later and simply got mapped
- // to their logical names
- key <HELP> { [ Help ] };
- key <MUTE> { [ SunAudioMute, SunVideoDegauss ] };
- key <VOL-> { [ SunAudioLowerVolume,SunVideoLowerBrightness ] };
- key <VOL+> { [ SunAudioRaiseVolume,SunVideoRaiseBrightness ] };
- key <POWR> { [ XF86Sleep, XF86Hibernate ] };
-
-// key <LALT> { [ Alt_L ] };
-// key <LMTA> { [ Meta_L ] };
-// key <RMTA> { [ Meta_R ] };
-// key <COMP> { [ Multi_key ] };
-};
-
-partial default
-xkb_symbols "defaults" {
- include "sun_vndr/solaris(defaults_common)"
-// key <RALT> { [ Mode_switch ] };
-// key <ALGR> { [ Mode_switch ] };
-
- // begin modifier mappings
-// modifier_map Shift { Shift_R, Shift_L };
-// modifier_map Mod1 { Alt_L };
-// modifier_map Mod2 { Num_Lock };
-// modifier_map Mod3 { Alt_R, Mode_switch };
-// modifier_map Mod4 { Meta_L, Meta_R };
-};
-
-partial default
-xkb_symbols "defaults_type7jp" {
- include "sun_vndr/solaris(defaults_common)"
- // begin modifier mappings
- modifier_map Shift { Shift_R, Shift_L };
- modifier_map Mod1 { Alt_L , Alt_R};
- modifier_map Mod2 { Num_Lock };
- modifier_map Mod3 { Mode_switch };
- modifier_map Mod4 { Meta_L, Meta_R };
-};
-
-// Map the keys to the actual key names instead of the ancient Sun function
-// keys
-partial
-xkb_symbols "keynames" {
- key <FK11> { [ F11 ], [ SunF36 ] };
- key <FK12> { [ F12 ], [ SunF37 ] };
-
- key <STOP> { [ Cancel ], [ F11 ] };
- key <AGAI> { [ Redo ], [ F12 ] };
- key <PROP> { [ SunProps ], [ F13 ] };
- key <UNDO> { [ Undo ], [ F14 ] };
- key <FRNT> { [ SunFront ], [ F15 ] };
- key <COPY> { [ SunCopy ], [ F16 ] };
- key <OPEN> { [ SunOpen ], [ F17 ] };
- key <PAST> { [ SunPaste ], [ F18 ] };
- key <FIND> { [ Find ], [ F19 ] };
- key <CUT> { [ SunCut ], [ F20 ] };
-
- key <HELP> { [ Help ] };
-
- key <PAUS> { [ Pause ] };
- key <PRSC> { [ Print ] };
- key <SCLK> { [ Scroll_Lock, Break ] };
-
- key <KP7> { [ KP_Home, KP_7 ] };
- key <KP8> { [ KP_Up, KP_8 ] };
- key <KP9> { [ KP_Prior, KP_9 ] };
-
- key <KP4> { [ KP_Left, KP_4 ] };
- key <KP5> { [ KP_Begin, KP_5 ] };
- key <KP6> { [ KP_Right, KP_6 ] };
-
- key <KP1> { [ KP_End, KP_1 ] };
- key <KP2> { [ KP_Down, KP_2 ] };
- key <KP3> { [ KP_Next, KP_3 ] };
-
- key <KPEN> { [ KP_Enter ] };
- key <KPEQ> { [ KP_Equal ] };
-
- key <MUTE> { [ SunAudioMute, SunVideoDegauss ] };
- key <VOL-> { [ SunAudioLowerVolume, SunVideoLowerBrightness ] };
- key <VOL+> { [ SunAudioRaiseVolume, SunVideoRaiseBrightness ] };
- key <POWR> { [ SunPowerSwitch, SunPowerSwitchShift ] };
-
- key <LALT> { [ Alt_L ] };
- key <RALT> { [ Mode_switch ] };
- key <ALGR> { [ Mode_switch ] };
- key <LMTA> { [ Meta_L ] };
- key <RMTA> { [ Meta_R ] };
- key <COMP> { [ Multi_key ] };
-
-};
-
-// Map the keys to the XFree86 key names instead of the Sun key names
-partial
-xkb_symbols "xf86keynames" {
- key <STOP> { [ XF86Stop ], [ F11 ] };
- key <AGAI> { [ Redo ], [ F12 ] };
- key <PROP> { [ SunProps ], [ F13 ] };
- key <UNDO> { [ Undo ], [ F14 ] };
- key <FRNT> { [ SunFront ], [ F15 ] };
- key <COPY> { [ XF86Copy ], [ F16 ] };
- key <OPEN> { [ XF86Open ], [ F17 ] };
- key <PAST> { [ XF86Paste ], [ F18 ] };
- key <FIND> { [ Find ], [ F19 ] };
- key <CUT> { [ XF86Cut ], [ F20 ] };
-
- key <MUTE> { [ XF86AudioMute, SunVideoDegauss ] };
- key <VOL-> { [ XF86AudioLowerVolume,SunVideoLowerBrightness ] };
- key <VOL+> { [ XF86AudioRaiseVolume,SunVideoRaiseBrightness ] };
- key <POWR> { [ XF86Sleep, XF86PowerDown ] };
-};
+//-------------------------------------------------------------------------
+//
+// Copyright 2010 Sun Microsystems, Inc. All rights reserved.
+//
+// Permission is hereby granted, free of charge, to any person obtaining a
+// copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, and/or sell copies of the Software, and to permit persons
+// to whom the Software is furnished to do so, provided that the above
+// copyright notice(s) and this permission notice appear in all copies of
+// the Software and that both the above copyright notice(s) and this
+// permission notice appear in supporting documentation.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
+// OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+// HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL
+// INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING
+// FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
+// NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
+// WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+//
+// Except as contained in this notice, the name of a copyright holder
+// shall not be used in advertising or otherwise to promote the sale, use
+// or other dealings in this Software without prior written authorization
+// of the copyright holder.
+//
+//-------------------------------------------------------------------------
+//
+
+//
+// CDDL HEADER START
+//
+// The contents of this file are subject to the terms of the
+// Common Development and Distribution License (the "License").
+// You may not use this file except in compliance with the License.
+//
+// You can obtain a copy of the license at src/OPENSOLARIS.LICENSE
+// or http://www.opensolaris.org/os/licensing.
+// See the License for the specific language governing permissions
+// and limitations under the License.
+//
+// When distributing Covered Code, include this CDDL HEADER in each
+// file and include the License file at src/OPENSOLARIS.LICENSE.
+// If applicable, add the following below this CDDL HEADER, with the
+// fields enclosed by brackets "[]" replaced with your own identifying
+// information: Portions Copyright [yyyy] [name of copyright owner]
+//
+// CDDL HEADER END
+//
+
+// Default map provides backwards compatibility with Sun keyboards from
+// long ago and the key mappings still used in Solaris Xsun today
+
+partial default
+xkb_symbols "defaults_common" {
+
+ // Left side keys were labeled L1-L10 on Sun Type 2 & Type 3 keyboards
+ // and the names have stuck (you can spot a longtime Sun admin when you
+ // hear them say to hit "L1-A" to enter the OpenBoot PROM)
+ // These names get mapped to the keysyms F11-F20
+ key <STOP> { [ L1, L1 ], [ SunStop ] };
+ key <AGAI> { [ L2, L2 ], [ SunAgain ] };
+ key <PROP> { [ L3, L3 ], [ SunProps ] };
+ key <UNDO> { [ L4, L4 ], [ SunUndo ] };
+ key <FRNT> { [ L5, L5 ], [ SunFront ] };
+ key <COPY> { [ L6, L6 ], [ SunCopy ] };
+ key <OPEN> { [ L7, L7 ], [ SunOpen ] };
+ key <PAST> { [ L8, L8 ], [ SunPaste ] };
+ key <FIND> { [ L9, L9 ], [ SunFind ] };
+ key <CUT> { [ L10, L10 ], [ SunCut ] };
+
+ // And on the right side, the function keys were labeled R1-R15,
+ // which get mapped to the keysyms F21-F35
+ // This includes the keys that became the numeric keypad
+ key <PAUS> { [ R1, R1 ], [ Pause ] };
+ key <PRSC> { [ R2, R2 ], [ Print ] };
+ key <SCLK> { [ R3, R3 ], [ Scroll_Lock, Break ] };
+
+ key <KPEQ> { [ KP_Equal ], [ R4, KP_Equal ] };
+ key <KPDV> { [ KP_Divide ], [ R5, KP_Divide ] };
+ key <KPMU> { [ KP_Multiply ], [ R6, KP_Multiply ] };
+
+ key <KP7> { [ KP_Home, KP_7, R7 ], [ R7, KP_7, Home ] };
+ key <KP8> { [ KP_Up, KP_8, R8 ], [ R8, KP_8, Up ] };
+ key <KP9> { [ KP_Prior, KP_9, R9 ], [ R9, KP_9, Prior ] };
+
+ key <KP4> { [ KP_Left, KP_4, R10 ], [ R10, KP_4, Left ] };
+ key <KP5> { [ KP_Begin, KP_5, R11 ], [ R11, KP_5 ] };
+ key <KP6> { [ KP_Right, KP_6, R12 ], [ R12, KP_6, Right ] };
+
+ key <KP1> { [ KP_End, KP_1, R13 ], [ R13, KP_1, End ] };
+ key <KP2> { [ KP_Down, KP_2, R14 ], [ R14, KP_2, Down ] };
+ key <KP3> { [ KP_Next, KP_3, R15 ], [ R15, KP_3, Next ] };
+
+ // F11 & F12 are mapped to SunF36 and SunF37 since they were added
+ // after F11-F35 were already assigned on Sun keyboards
+ key <FK11> { [ SunF36 ], [ F11 ] };
+ key <FK12> { [ SunF37 ], [ F12 ] };
+
+ // These were added to the keyboard much later and simply got mapped
+ // to their logical names
+ key <HELP> { [ Help ] };
+ key <MUTE> { [ SunAudioMute, SunVideoDegauss ] };
+ key <VOL-> { [ SunAudioLowerVolume,SunVideoLowerBrightness ] };
+ key <VOL+> { [ SunAudioRaiseVolume,SunVideoRaiseBrightness ] };
+ key <POWR> { [ XF86Sleep, XF86Hibernate ] };
+
+// key <LALT> { [ Alt_L ] };
+// key <LMTA> { [ Meta_L ] };
+// key <RMTA> { [ Meta_R ] };
+// key <COMP> { [ Multi_key ] };
+};
+
+partial default
+xkb_symbols "defaults" {
+ include "sun_vndr/solaris(defaults_common)"
+// key <RALT> { [ Mode_switch ] };
+// key <ALGR> { [ Mode_switch ] };
+
+ // begin modifier mappings
+// modifier_map Shift { Shift_R, Shift_L };
+// modifier_map Mod1 { Alt_L };
+// modifier_map Mod2 { Num_Lock };
+// modifier_map Mod3 { Alt_R, Mode_switch };
+// modifier_map Mod4 { Meta_L, Meta_R };
+};
+
+partial default
+xkb_symbols "defaults_type7jp" {
+ include "sun_vndr/solaris(defaults_common)"
+ // begin modifier mappings
+ modifier_map Shift { Shift_R, Shift_L };
+ modifier_map Mod1 { Alt_L , Alt_R};
+ modifier_map Mod2 { Num_Lock };
+ modifier_map Mod3 { Mode_switch };
+ modifier_map Mod4 { Meta_L, Meta_R };
+};
+
+// Map the keys to the actual key names instead of the ancient Sun function
+// keys
+partial
+xkb_symbols "keynames" {
+ key <FK11> { [ F11 ], [ SunF36 ] };
+ key <FK12> { [ F12 ], [ SunF37 ] };
+
+ key <STOP> { [ Cancel ], [ F11 ] };
+ key <AGAI> { [ Redo ], [ F12 ] };
+ key <PROP> { [ SunProps ], [ F13 ] };
+ key <UNDO> { [ Undo ], [ F14 ] };
+ key <FRNT> { [ SunFront ], [ F15 ] };
+ key <COPY> { [ SunCopy ], [ F16 ] };
+ key <OPEN> { [ SunOpen ], [ F17 ] };
+ key <PAST> { [ SunPaste ], [ F18 ] };
+ key <FIND> { [ Find ], [ F19 ] };
+ key <CUT> { [ SunCut ], [ F20 ] };
+
+ key <HELP> { [ Help ] };
+
+ key <PAUS> { [ Pause ] };
+ key <PRSC> { [ Print ] };
+ key <SCLK> { [ Scroll_Lock, Break ] };
+
+ key <KP7> { [ KP_Home, KP_7 ] };
+ key <KP8> { [ KP_Up, KP_8 ] };
+ key <KP9> { [ KP_Prior, KP_9 ] };
+
+ key <KP4> { [ KP_Left, KP_4 ] };
+ key <KP5> { [ KP_Begin, KP_5 ] };
+ key <KP6> { [ KP_Right, KP_6 ] };
+
+ key <KP1> { [ KP_End, KP_1 ] };
+ key <KP2> { [ KP_Down, KP_2 ] };
+ key <KP3> { [ KP_Next, KP_3 ] };
+
+ key <KPEN> { [ KP_Enter ] };
+ key <KPEQ> { [ KP_Equal ] };
+
+ key <MUTE> { [ SunAudioMute, SunVideoDegauss ] };
+ key <VOL-> { [ SunAudioLowerVolume, SunVideoLowerBrightness ] };
+ key <VOL+> { [ SunAudioRaiseVolume, SunVideoRaiseBrightness ] };
+ key <POWR> { [ SunPowerSwitch, SunPowerSwitchShift ] };
+
+ key <LALT> { [ Alt_L ] };
+ key <RALT> { [ Mode_switch ] };
+ key <ALGR> { [ Mode_switch ] };
+ key <LMTA> { [ Meta_L ] };
+ key <RMTA> { [ Meta_R ] };
+ key <COMP> { [ Multi_key ] };
+
+};
+
+// Map the keys to the XFree86 key names instead of the Sun key names
+partial
+xkb_symbols "xf86keynames" {
+ key <STOP> { [ XF86Stop ], [ F11 ] };
+ key <AGAI> { [ Redo ], [ F12 ] };
+ key <PROP> { [ SunProps ], [ F13 ] };
+ key <UNDO> { [ Undo ], [ F14 ] };
+ key <FRNT> { [ SunFront ], [ F15 ] };
+ key <COPY> { [ XF86Copy ], [ F16 ] };
+ key <OPEN> { [ XF86Open ], [ F17 ] };
+ key <PAST> { [ XF86Paste ], [ F18 ] };
+ key <FIND> { [ Find ], [ F19 ] };
+ key <CUT> { [ XF86Cut ], [ F20 ] };
+
+ key <MUTE> { [ XF86AudioMute, SunVideoDegauss ] };
+ key <VOL-> { [ XF86AudioLowerVolume,SunVideoLowerBrightness ] };
+ key <VOL+> { [ XF86AudioRaiseVolume,SunVideoRaiseBrightness ] };
+ key <POWR> { [ XF86Sleep, XF86PowerDown ] };
+};
diff --git a/xorg-server/xkeyboard-config/symbols/xfree68_vndr/Makefile.am b/xorg-server/xkeyboard-config/symbols/xfree68_vndr/Makefile.am
index e7b931bf0..50be49bb4 100644
--- a/xorg-server/xkeyboard-config/symbols/xfree68_vndr/Makefile.am
+++ b/xorg-server/xkeyboard-config/symbols/xfree68_vndr/Makefile.am
@@ -1,4 +1,4 @@
-symbolsdir = $(xkb_base)/symbols/xfree68_vndr
-
-dist_symbols_DATA = \
-amiga ataritt
+symbolsdir = $(xkb_base)/symbols/xfree68_vndr
+
+dist_symbols_DATA = \
+amiga ataritt
diff --git a/xorg-server/xkeyboard-config/tests/listCI2.xsl b/xorg-server/xkeyboard-config/tests/listCI2.xsl
index 09ee37abb..484d9dd8b 100644
--- a/xorg-server/xkeyboard-config/tests/listCI2.xsl
+++ b/xorg-server/xkeyboard-config/tests/listCI2.xsl
@@ -1,21 +1,21 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<xsl:stylesheet version="1.0"
- xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
- >
-<xsl:output method="text"/>
-
- <xsl:param name="type"/>
- <xsl:param name="parentId"/>
-
- <xsl:template match="xkbConfigRegistry">
- <xsl:apply-templates select=".//configItem[(name(..) = $type) and (../../../configItem/name = $parentId or ../../configItem/name = $parentId )]">
- <xsl:sort select="name"/>
- </xsl:apply-templates>
- </xsl:template>
-
- <xsl:template match="configItem">
- <xsl:value-of select="./name"/><xsl:text>
-</xsl:text>
- </xsl:template>
-
-</xsl:stylesheet>
+<?xml version="1.0" encoding="UTF-8"?>
+<xsl:stylesheet version="1.0"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ >
+<xsl:output method="text"/>
+
+ <xsl:param name="type"/>
+ <xsl:param name="parentId"/>
+
+ <xsl:template match="xkbConfigRegistry">
+ <xsl:apply-templates select=".//configItem[(name(..) = $type) and (../../../configItem/name = $parentId or ../../configItem/name = $parentId )]">
+ <xsl:sort select="name"/>
+ </xsl:apply-templates>
+ </xsl:template>
+
+ <xsl:template match="configItem">
+ <xsl:value-of select="./name"/><xsl:text>
+</xsl:text>
+ </xsl:template>
+
+</xsl:stylesheet>
diff --git a/xorg-server/xkeyboard-config/tests/listCIs.xsl b/xorg-server/xkeyboard-config/tests/listCIs.xsl
index 87e5bd9de..09cf4d92a 100644
--- a/xorg-server/xkeyboard-config/tests/listCIs.xsl
+++ b/xorg-server/xkeyboard-config/tests/listCIs.xsl
@@ -1,20 +1,20 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<xsl:stylesheet version="1.0"
- xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
- >
-<xsl:output method="text"/>
-
- <xsl:param name="type"/>
-
- <xsl:template match="xkbConfigRegistry">
- <xsl:apply-templates select=".//configItem[name(..) = $type]">
- <xsl:sort select="name"/>
- </xsl:apply-templates>
- </xsl:template>
-
- <xsl:template match="configItem">
- <xsl:value-of select="./name"/><xsl:text>
-</xsl:text>
- </xsl:template>
-
-</xsl:stylesheet>
+<?xml version="1.0" encoding="UTF-8"?>
+<xsl:stylesheet version="1.0"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ >
+<xsl:output method="text"/>
+
+ <xsl:param name="type"/>
+
+ <xsl:template match="xkbConfigRegistry">
+ <xsl:apply-templates select=".//configItem[name(..) = $type]">
+ <xsl:sort select="name"/>
+ </xsl:apply-templates>
+ </xsl:template>
+
+ <xsl:template match="configItem">
+ <xsl:value-of select="./name"/><xsl:text>
+</xsl:text>
+ </xsl:template>
+
+</xsl:stylesheet>
diff --git a/xorg-server/xkeyboard-config/tests/mxkbledpanel/Imakefile b/xorg-server/xkeyboard-config/tests/mxkbledpanel/Imakefile
index 3fd46021e..5bc53bd76 100644
--- a/xorg-server/xkeyboard-config/tests/mxkbledpanel/Imakefile
+++ b/xorg-server/xkeyboard-config/tests/mxkbledpanel/Imakefile
@@ -1,8 +1,8 @@
-LOCAL_LIBRARIES1 = -lXm
- SRCS1 = mxkbledpanel.c
- OBJS1 = mxkbledpanel.o
-
-PROGRAMS=mxkbledpanel
-
-ComplexProgramTarget_1(mxkbledpanel,$(LOCAL_LIBRARIES1),)
-
+LOCAL_LIBRARIES1 = -lXm
+ SRCS1 = mxkbledpanel.c
+ OBJS1 = mxkbledpanel.o
+
+PROGRAMS=mxkbledpanel
+
+ComplexProgramTarget_1(mxkbledpanel,$(LOCAL_LIBRARIES1),)
+
diff --git a/xorg-server/xkeyboard-config/tests/mxkbledpanel/mxkbledpanel.c b/xorg-server/xkeyboard-config/tests/mxkbledpanel/mxkbledpanel.c
index 5d52c52c1..9c79b09f5 100644
--- a/xorg-server/xkeyboard-config/tests/mxkbledpanel/mxkbledpanel.c
+++ b/xorg-server/xkeyboard-config/tests/mxkbledpanel/mxkbledpanel.c
@@ -1,605 +1,605 @@
-#include <stdio.h>
-#include <stdlib.h>
-#include <X11/Xlib.h>
-#include <X11/Intrinsic.h>
-#include <X11/XKBlib.h>
-#include <Xm/MainW.h>
-#include <Xm/RowColumn.h>
-#include <Xm/ToggleB.h>
-
-Display *theDisplay;
-XtAppContext appContext;
-int xkbEventBase;
-Widget topLevel;
-Widget leds[XkbNumIndicators];
-Atom ledAtoms[XkbNumIndicators];
-XmString ledNames[XkbNumIndicators];
-XkbDescPtr xkb_desc;
-
-void valueChangedProc(Widget,XtPointer,XmToggleButtonCallbackStruct *);
-XtCallbackRec valueChangedCB[2]={(XtCallbackProc)valueChangedProc,NULL};
-
-/************************************************************************/
-/* */
-/* Application Resources */
-/* */
-/************************************************************************/
-#define YES 1
-#define NO 0
-#define DONT_CARE -1
-
-typedef struct
-{
- int wanted;
- int wantAutomatic;
- int wantExplicit;
- int wantNamed;
- int wantReal;
- int wantVirtual;
- int useUnion;
-} OptionsRec;
-
-OptionsRec options;
-
-#define Offset(field) XtOffsetOf(OptionsRec,field)
-XtResource resources[] =
-{
- {"wanted", "Wanted", XtRInt, sizeof(int),
- Offset(wanted), XtRImmediate, (XtPointer) DONT_CARE },
- {"wantAutomatic", "WantAutomatic", XtRInt, sizeof(int),
- Offset(wantAutomatic), XtRImmediate, (XtPointer) DONT_CARE},
- {"wantExplicit", "WantExplicit", XtRInt, sizeof(int),
- Offset(wantExplicit), XtRImmediate, (XtPointer) DONT_CARE},
- {"wantNamed", "WantNamed", XtRInt, sizeof(int),
- Offset(wantNamed), XtRImmediate, (XtPointer) DONT_CARE},
- {"wantReal", "WantReal", XtRInt, sizeof(int),
- Offset(wantReal), XtRImmediate, (XtPointer) DONT_CARE},
- {"wantVirtual", "WantVirtual", XtRInt, sizeof(int),
- Offset(wantVirtual), XtRImmediate, (XtPointer) DONT_CARE},
- {"useUnion", "UseUnion", XtRInt, sizeof(int),
- Offset(useUnion), XtRImmediate, (XtPointer) YES},
- NULL
-};
-#undef Offset
-
-String fallbackResources[] =
-{
- "*mainWindow.width: 100",
- "*mainWindow.height: 50",
- NULL
-};
-
-XrmOptionDescRec optionDesc[] =
-{
- {"-watch", "*wanted", XrmoptionSepArg, (XtPointer) "0"},
- {"-automatic", "*wantAutomatic", XrmoptionNoArg, (XtPointer) "0"},
- {"+automatic", "*wantAutomatic", XrmoptionNoArg, (XtPointer) "1"},
- {"-explicit", "*wantExplicit", XrmoptionNoArg, (XtPointer) "0"},
- {"+explicit", "*wantExplicit", XrmoptionNoArg, (XtPointer) "1"},
- {"-named", "*wantNamed", XrmoptionNoArg, (XtPointer) "0"},
- {"+named", "*wantNamed", XrmoptionNoArg, (XtPointer) "1"},
- {"-real", "*wantReal", XrmoptionNoArg, (XtPointer) "0"},
- {"+real", "*wantReal", XrmoptionNoArg, (XtPointer) "1"},
- {"-virtual", "*wantVirtual", XrmoptionNoArg, (XtPointer) "0"},
- {"+virtual", "*wantVirtual", XrmoptionNoArg, (XtPointer) "1"},
- {"-intersection", "*useUnion", XrmoptionNoArg, (XtPointer) "0"},
- {"-union", "*useUnion", XrmoptionNoArg, (XtPointer) "1"}
-};
-
-/************************************************************************/
-/* */
-/* usage */
-/* */
-/************************************************************************/
-void usage(char *program)
-{
- printf("Usage: %s <options>\n",program);
- printf("Legal options include the usual X toolkit options plus:\n");
- printf(" -help Print this message\n");
- printf(" -indpy <name> Name of display to watch\n");
- printf(" -watch <leds> Mask of LEDs to watch\n");
- printf(" [-+]automatic (Don't) watch automatic LEDs\n");
- printf(" [-+]explicit (Don't) watch explicit LEDs\n");
- printf(" [-+]named (Don't) watch named LEDs\n");
- printf(" [-+]real (Don't) watch real LEDs\n");
- printf(" [-+]virtual (Don't) watch virtual LEDs\n");
- printf(" -intersection Watch only LEDs in all desired sets\n");
- printf(" -union Watch LEDs in any desired sets\n");
- printf("The default set of LEDs is -intersection +named +virtual\n");
- return;
-}
-/************************************************************************/
-/* */
-/* XkbEventHandler */
-/* */
-/* DESCRIPTION: */
-/* */
-/* Handles events generated by the Xkb server extension. */
-/* */
-/************************************************************************/
-Boolean XkbEventHandler(XEvent *event)
-{
- XkbEvent *xkbEv = (XkbEvent *) event;
-
- if (xkbEv->any.xkb_type==XkbIndicatorStateNotify) {
- register int i;
- register unsigned bit;
- for (i=0,bit=1;i<XkbNumIndicators;i++,bit<<=1)
- if ((xkbEv->indicators.changed&bit)&&(leds[i]))
- {
- if (xkbEv->indicators.state&bit)
- XmToggleButtonSetState(leds[i],True,False);
- else
- XmToggleButtonSetState(leds[i],False,False);
- }
- }
- else if (xkbEv->any.xkb_type==XkbIndicatorMapNotify) {
- unsigned change= xkbEv->indicators.changed;
-
- if (XkbGetIndicatorMap(theDisplay,change,xkb_desc)!=Success)
- fprintf(stderr,"Couldn't get changed indicator maps\n");
- }
-
- return True;
-
-} /* XkbEventHandler */
-
-/************************************************************************/
-/* */
-/* InitXkb */
-/* */
-/************************************************************************/
-Boolean InitXkb(Display *theDisplay)
-{
- int i,opcode,errorBase,major,minor;
- XkbDescPtr xkb;
- unsigned int bit;
- unsigned int real,virtual,named,explicit,automatic;
- char *name;
-
- if (!XkbQueryExtension(theDisplay,
- &opcode,
- &xkbEventBase,
- &errorBase,
- &major,
- &minor))
- return False;
-
- if (!XkbUseExtension(theDisplay,&major,&minor))
- return False;
-
- XkbSelectEvents(theDisplay,
- XkbUseCoreKbd,
- XkbIndicatorStateNotifyMask|XkbIndicatorMapNotifyMask,
- XkbIndicatorStateNotifyMask|XkbIndicatorMapNotifyMask);
-
- XtSetEventDispatcher(theDisplay,
- xkbEventBase+XkbEventCode,
- XkbEventHandler);
-
- xkb=XkbGetMap(theDisplay,0,XkbUseCoreKbd);
- real=virtual=named=explicit=automatic=0;
-
- if (!xkb)
- {
- fprintf(stderr,"Couldn't get keymap\n");
- return False;
- }
- if (XkbGetIndicatorMap(theDisplay,XkbAllIndicatorsMask,xkb)!=Success)
- {
- fprintf(stderr,"Couldn't read indicator map\n");
- XkbFreeKeyboard(xkb,XkbAllComponentsMask,True);
- return False;
- }
- real=virtual=named=explicit=automatic=0;
-
- if (XkbGetNames(theDisplay,XkbIndicatorNamesMask,xkb)!=Success)
- {
- fprintf(stderr,"Couldn't read indicator names\n");
- XkbFreeKeyboard(xkb,XkbAllComponentsMask,True);
- return False;
- }
- real=virtual=named=explicit=automatic=0;
-
- for (i=0,bit=1;i<XkbNumIndicators;i++,bit<<=1)
- {
- XkbIndicatorMapPtr map= &xkb->indicators->maps[i];
- name = NULL;
- if (xkb->names->indicators[i]!=None)
- {
- named|= bit;
- name = XGetAtomName(theDisplay,xkb->names->indicators[i]);
- }
- if (name != NULL)
- {
- ledAtoms[i] = xkb->names->indicators[i];
- ledNames[i] = XmStringCreate(name,XmSTRING_DEFAULT_CHARSET);
- }
- else
- {
- char temp[12];
- sprintf(temp,"led%d\0",i+1);
- ledAtoms[i] = None;
- ledNames[i] = XmStringCreate(temp,XmSTRING_DEFAULT_CHARSET);
- }
- if (xkb->indicators->phys_indicators&bit)
- real|= bit;
- if ((((map->which_groups!=0)&&(map->groups!=0))||
- ((map->which_mods!=0)&&
- ((map->mods.real_mods!=0)||(map->mods.vmods!=0)))||
- (map->ctrls!=0))&&
- ((map->flags&XkbIM_NoAutomatic)==0)) {
- automatic|= bit;
- }
- else explicit|= bit;
- }
-
- virtual = ~real;
-
- if (options.useUnion)
- {
- if ((options.wantReal==NO) || (options.wantReal==DONT_CARE))
- real = 0;
- if ((options.wantVirtual==NO) || (options.wantVirtual==DONT_CARE))
- virtual = 0;
- if ((options.wantNamed==NO) || (options.wantNamed==DONT_CARE))
- named = 0;
- if ((options.wantAutomatic==NO) || (options.wantAutomatic==DONT_CARE))
- automatic = 0;
- if ((options.wantExplicit==NO) || (options.wantExplicit==DONT_CARE))
- explicit = 0;
-
- options.wanted |= real|virtual|named|automatic|explicit;
- }
- else
- {
- if (options.wanted == DONT_CARE)
- options.wanted = ~0;
-
- if (options.wantReal==NO)
- real = ~real;
- else if (options.wantReal==DONT_CARE)
- real = ~0;
-
- if (options.wantVirtual==NO)
- virtual = ~virtual;
- else if (options.wantVirtual==DONT_CARE)
- virtual = ~0;
-
- if (options.wantNamed==NO)
- named = ~named;
- else if (options.wantNamed==DONT_CARE)
- named = ~0;
-
- if (options.wantAutomatic==NO)
- automatic = ~automatic;
- else if (options.wantAutomatic==DONT_CARE)
- automatic = ~0;
-
- if (options.wantExplicit==NO)
- explicit = ~explicit;
- else if (options.wantExplicit==DONT_CARE)
- explicit = ~0;
-
- options.wanted &= real&virtual&named&automatic&explicit;
- }
-
- XkbFreeKeyboard(xkb,XkbAllComponentsMask,True);
- return True;
-
-} /* InitXkb */
-
-/************************************************************************/
-/* */
-/* valueChangedProc - called when a toggle button is pressed. */
-/* */
-/************************************************************************/
-void valueChangedProc(Widget w,
- XtPointer clientData,
- XmToggleButtonCallbackStruct *callbackData)
-{
- int led = (int) clientData;
- XkbDescPtr xkb;
-
- xkb = XkbGetMap(theDisplay,0,XkbUseCoreKbd);
- if (!xkb)
- {
- fprintf(stderr,"XkbGetMap failed\n");
- return;
- }
-
- if (XkbGetIndicatorMap(theDisplay,XkbAllIndicatorsMask,xkb)!=Success)
- {
- fprintf(stderr,"GetIndicatorMap failed\n");
- XkbFreeKeyboard(xkb,XkbAllComponentsMask,True);
- return;
- }
-
- /* The 'flags' field tells whether this indicator is automatic
- * (XkbIM_NoExplicit - 0x80), explicit (XkbIM_NoAutomatic - 0x40),
- * or neither (both - 0xC0).
- *
- * If NoAutomatic is set, the server ignores the rest of the
- * fields in the indicator map (i.e. it disables automatic control
- * of the LED). If NoExplicit is set, the server prevents clients
- * from explicitly changing the value of the LED (using the core
- * protocol *or* XKB). If NoAutomatic *and* NoExplicit are set,
- * the LED cannot be changed (unless you change the map first).
- * If neither NoAutomatic nor NoExplicit are set, the server will
- * change the LED according to the indicator map, but clients can
- * override that (until the next automatic change) using the core
- * protocol or XKB.
- */
- switch (xkb->indicators->maps[led].flags &
- (XkbIM_NoExplicit|XkbIM_NoAutomatic))
- {
- case XkbIM_NoExplicit|XkbIM_NoAutomatic:
- {
- XmToggleButtonSetState(w,!callbackData->set,FALSE);
- XkbFreeKeyboard(xkb,XkbAllComponentsMask,True);
- return;
- }
-
- case XkbIM_NoAutomatic:
- {
- if (ledAtoms[led] != None)
- XkbSetNamedIndicator(theDisplay,XkbUseCoreKbd,
- ledAtoms[led],callbackData->set,
- FALSE,NULL);
- else
- {
- XKeyboardControl xkc;
- xkc.led= led;
- if (callbackData->set)
- xkc.led_mode= LedModeOn;
- else xkc.led_mode= LedModeOff;
- XChangeKeyboardControl(theDisplay,KBLed|KBLedMode,&xkc);
- XSync(theDisplay,0);
- }
-
- XkbFreeKeyboard(xkb,XkbAllComponentsMask,True);
- return;
- }
-
- case XkbIM_NoExplicit:
- break;
- }
-
- /* The 'ctrls' field tells what controls tell this indicator to
- * to turn on: RepeatKeys (0x1), SlowKeys (0x2), BounceKeys (0x4),
- * StickyKeys (0x8), MouseKeys (0x10), AccessXKeys (0x20),
- * TimeOut (0x40), Feedback (0x80), ToggleKeys (0x100),
- * Overlay1 (0x200), Overlay2 (0x400), GroupsWrap (0x800),
- * InternalMods (0x1000), IgnoreLockMods (0x2000),
- * PerKeyRepeat (0x3000), or ControlsEnabled (0x4000)
- */
- if (xkb->indicators->maps[led].ctrls)
- {
- unsigned long which = xkb->indicators->maps[led].ctrls;
-
- XkbGetControls(theDisplay,XkbAllControlsMask,xkb);
- if (callbackData->set)
- xkb->ctrls->enabled_ctrls |= which;
- else
- xkb->ctrls->enabled_ctrls &= ~which;
- XkbSetControls(theDisplay,which|XkbControlsEnabledMask,xkb);
- }
-
- /* The 'which_groups' field tells when this indicator turns on
- * for the 'groups' field: base (0x1), latched (0x2), locked (0x4),
- * or effective (0x8).
- */
- if (xkb->indicators->maps[led].groups)
- {
- int i;
- unsigned int group = 1;
-
- /* Turning on a group indicator is kind of tricky. For
- * now, we will just Latch or Lock the first group we find
- * if that is what this indicator does. Otherwise, we're
- * just going to punt and get out of here.
- */
- if (callbackData->set)
- {
- for (i = XkbNumKbdGroups-1; i >= 0; i--)
- if ((1 << i) &
- xkb->indicators->maps[led].groups)
- group = i;
- if (xkb->indicators->maps[led].which_groups &
- (XkbIM_UseLocked | XkbIM_UseEffective))
- XkbLockGroup(theDisplay,XkbUseCoreKbd,group);
- else if (xkb->indicators->maps[led].which_groups&XkbIM_UseLatched)
- XkbLatchGroup(theDisplay,XkbUseCoreKbd,group);
- else
- {
- XmToggleButtonSetState(w,!callbackData->set,FALSE);
- XkbFreeKeyboard(xkb,XkbAllComponentsMask,True);
- return;
- }
- }
- /* Turning off a group indicator will mean that we just
- * Lock the first group that this indicator doesn't watch.
- */
- else
- {
- for (i = XkbNumKbdGroups-1; i >= 0; i--)
- if (!((1 << i) &
- xkb->indicators->maps[led].groups))
- group = i;
- XkbLockGroup(theDisplay,XkbUseCoreKbd,group);
- }
- }
-
- /* The 'which_mods' field tells when this indicator turns on
- * for the modifiers: base (0x1), latched (0x2), locked (0x4),
- * or effective (0x8).
- *
- * The 'real_mods' field tells whether this turns on when one of
- * the real X modifiers is set: Shift (0x1), Lock (0x2), Control (0x4),
- * Mod1 (0x8), Mod2 (0x10), Mod3 (0x20), Mod4 (0x40), or Mod5 (0x80).
- *
- * The 'virtual_mods' field tells whether this turns on when one of
- * the virtual modifiers is set.
- *
- * The 'mask' field tells what real X modifiers the virtual_modifiers
- * map to?
- */
- if (xkb->indicators->maps[led].mods.real_mods ||
- xkb->indicators->maps[led].mods.mask)
- {
- XkbStateRec state;
- unsigned int affect,mods;
-
- affect = (xkb->indicators->maps[led].mods.real_mods |
- xkb->indicators->maps[led].mods.mask);
-
- if (callbackData->set)
- mods = affect;
- else
- mods = 0;
-
- if (xkb->indicators->maps[led].which_mods &
- (XkbIM_UseLocked | XkbIM_UseEffective))
- XkbLockModifiers(theDisplay,XkbUseCoreKbd,affect,mods);
- else if (xkb->indicators->maps[led].which_mods &
- XkbIM_UseLatched)
- XkbLatchModifiers(theDisplay,XkbUseCoreKbd,affect,mods);
- else
- {
- XmToggleButtonSetState(w,!callbackData->set,FALSE);
- XkbFreeKeyboard(xkb,XkbAllComponentsMask,True);
- return;
- }
- }
-
- XkbFreeKeyboard(xkb,XkbAllComponentsMask,True);
-
-} /* valueChangedProc */
-
-/************************************************************************/
-/* */
-/* InitializeUI */
-/* */
-/************************************************************************/
-void InitializeUI(Widget topLevel)
-{
- Arg argList[3];
- char buf[256];
- int i;
- unsigned int bit,n;
- Widget mainWindow,rowColumn;
- XmString tempString;
-
- mainWindow = (Widget) XmCreateMainWindow(topLevel,"mainWindow",NULL,0);
- XtManageChild(mainWindow);
- rowColumn = (Widget) XmCreateRowColumn(mainWindow,"rowColumn",NULL,0);
- XtManageChild(rowColumn);
-
- XkbGetIndicatorState(theDisplay,XkbUseCoreKbd,&n);
- for (i=0,bit=1;i<XkbNumIndicators;i++,bit<<=1)
- {
- if (options.wanted&bit)
- {
- /* [[[ WDW - If we wanted to be really fancy, we
- * would look for a "*ledxx.labelString" value
- * in the resource database so the I18N dudes
- * can see localized strings. ]]]
- */
- XtSetArg(argList[0], XmNlabelString,ledNames[i]);
- if (n&bit) XtSetArg(argList[1], XmNset, True);
- else XtSetArg(argList[1], XmNset, False);
- sprintf(buf,"led%d\0",i);
- valueChangedCB[0].closure = (XtPointer) i;
- XtSetArg(argList[2], XmNvalueChangedCallback, valueChangedCB);
- leds[i]= XmCreateToggleButton(rowColumn,buf,argList,3);
- XtManageChild(leds[i]);
- }
- else
- leds[i]=0;
- }
-
-} /* InitializeUI */
-
-/************************************************************************/
-/* */
-/* main */
-/* */
-/************************************************************************/
-#if NeedFunctionPrototypes
-int main(int argc,
- char *argv[])
-#else
-int main(argc, argv)
- int argc;
- char *argv[];
-#endif
-{
- /********************************************************************/
- /* */
- /* Initialize the toolkit */
- /* */
- /********************************************************************/
- Arg argList[2];
- topLevel = XtAppInitialize(&appContext, "xkbleds",
- optionDesc, XtNumber(optionDesc),
- &argc, argv,
- fallbackResources,
- NULL, 0);
- XtSetArg(argList[0], XtNallowShellResize, TRUE);
- XtSetValues(topLevel,argList,1);
- XtGetApplicationResources(topLevel, (XtPointer)&options, resources,
- XtNumber(resources), NULL, 0);
-
- if (argc > 1)
- {
- usage(argv[0]);
- exit(0);
- }
-
- /* Defaults
- */
- if ((options.wanted == DONT_CARE) &&
- (options.wantReal == DONT_CARE) &&
- (options.wantVirtual == DONT_CARE) &&
- (options.wantNamed == DONT_CARE) &&
- (options.wantAutomatic == DONT_CARE) &&
- (options.wantExplicit == DONT_CARE) &&
- (options.useUnion == YES))
- {
- options.wanted = 0;
- options.wantReal = YES;
- options.wantNamed = YES;
- options.wantAutomatic = YES;
- }
-
- /********************************************************************/
- /* */
- /* See if the server has XKB. */
- /* */
- /********************************************************************/
- theDisplay = XtDisplay(topLevel);
- if (!InitXkb(theDisplay))
- {
- fprintf(stderr,"Could not initialize XKB extension.\n");
- exit(0);
- }
-
- if (options.wanted == 0)
- {
- fprintf(stderr,"No LED's were selected.\n\n");
- usage(argv[0]);
- exit(0);
- }
-
- /********************************************************************/
- /* */
- /* Set up the UI and go. */
- /* */
- /********************************************************************/
- XtRealizeWidget(topLevel);
- InitializeUI(topLevel);
- XtAppMainLoop(appContext);
-
- /* NOT REACHED */
- exit(0L);
-}
+#include <stdio.h>
+#include <stdlib.h>
+#include <X11/Xlib.h>
+#include <X11/Intrinsic.h>
+#include <X11/XKBlib.h>
+#include <Xm/MainW.h>
+#include <Xm/RowColumn.h>
+#include <Xm/ToggleB.h>
+
+Display *theDisplay;
+XtAppContext appContext;
+int xkbEventBase;
+Widget topLevel;
+Widget leds[XkbNumIndicators];
+Atom ledAtoms[XkbNumIndicators];
+XmString ledNames[XkbNumIndicators];
+XkbDescPtr xkb_desc;
+
+void valueChangedProc(Widget,XtPointer,XmToggleButtonCallbackStruct *);
+XtCallbackRec valueChangedCB[2]={(XtCallbackProc)valueChangedProc,NULL};
+
+/************************************************************************/
+/* */
+/* Application Resources */
+/* */
+/************************************************************************/
+#define YES 1
+#define NO 0
+#define DONT_CARE -1
+
+typedef struct
+{
+ int wanted;
+ int wantAutomatic;
+ int wantExplicit;
+ int wantNamed;
+ int wantReal;
+ int wantVirtual;
+ int useUnion;
+} OptionsRec;
+
+OptionsRec options;
+
+#define Offset(field) XtOffsetOf(OptionsRec,field)
+XtResource resources[] =
+{
+ {"wanted", "Wanted", XtRInt, sizeof(int),
+ Offset(wanted), XtRImmediate, (XtPointer) DONT_CARE },
+ {"wantAutomatic", "WantAutomatic", XtRInt, sizeof(int),
+ Offset(wantAutomatic), XtRImmediate, (XtPointer) DONT_CARE},
+ {"wantExplicit", "WantExplicit", XtRInt, sizeof(int),
+ Offset(wantExplicit), XtRImmediate, (XtPointer) DONT_CARE},
+ {"wantNamed", "WantNamed", XtRInt, sizeof(int),
+ Offset(wantNamed), XtRImmediate, (XtPointer) DONT_CARE},
+ {"wantReal", "WantReal", XtRInt, sizeof(int),
+ Offset(wantReal), XtRImmediate, (XtPointer) DONT_CARE},
+ {"wantVirtual", "WantVirtual", XtRInt, sizeof(int),
+ Offset(wantVirtual), XtRImmediate, (XtPointer) DONT_CARE},
+ {"useUnion", "UseUnion", XtRInt, sizeof(int),
+ Offset(useUnion), XtRImmediate, (XtPointer) YES},
+ NULL
+};
+#undef Offset
+
+String fallbackResources[] =
+{
+ "*mainWindow.width: 100",
+ "*mainWindow.height: 50",
+ NULL
+};
+
+XrmOptionDescRec optionDesc[] =
+{
+ {"-watch", "*wanted", XrmoptionSepArg, (XtPointer) "0"},
+ {"-automatic", "*wantAutomatic", XrmoptionNoArg, (XtPointer) "0"},
+ {"+automatic", "*wantAutomatic", XrmoptionNoArg, (XtPointer) "1"},
+ {"-explicit", "*wantExplicit", XrmoptionNoArg, (XtPointer) "0"},
+ {"+explicit", "*wantExplicit", XrmoptionNoArg, (XtPointer) "1"},
+ {"-named", "*wantNamed", XrmoptionNoArg, (XtPointer) "0"},
+ {"+named", "*wantNamed", XrmoptionNoArg, (XtPointer) "1"},
+ {"-real", "*wantReal", XrmoptionNoArg, (XtPointer) "0"},
+ {"+real", "*wantReal", XrmoptionNoArg, (XtPointer) "1"},
+ {"-virtual", "*wantVirtual", XrmoptionNoArg, (XtPointer) "0"},
+ {"+virtual", "*wantVirtual", XrmoptionNoArg, (XtPointer) "1"},
+ {"-intersection", "*useUnion", XrmoptionNoArg, (XtPointer) "0"},
+ {"-union", "*useUnion", XrmoptionNoArg, (XtPointer) "1"}
+};
+
+/************************************************************************/
+/* */
+/* usage */
+/* */
+/************************************************************************/
+void usage(char *program)
+{
+ printf("Usage: %s <options>\n",program);
+ printf("Legal options include the usual X toolkit options plus:\n");
+ printf(" -help Print this message\n");
+ printf(" -indpy <name> Name of display to watch\n");
+ printf(" -watch <leds> Mask of LEDs to watch\n");
+ printf(" [-+]automatic (Don't) watch automatic LEDs\n");
+ printf(" [-+]explicit (Don't) watch explicit LEDs\n");
+ printf(" [-+]named (Don't) watch named LEDs\n");
+ printf(" [-+]real (Don't) watch real LEDs\n");
+ printf(" [-+]virtual (Don't) watch virtual LEDs\n");
+ printf(" -intersection Watch only LEDs in all desired sets\n");
+ printf(" -union Watch LEDs in any desired sets\n");
+ printf("The default set of LEDs is -intersection +named +virtual\n");
+ return;
+}
+/************************************************************************/
+/* */
+/* XkbEventHandler */
+/* */
+/* DESCRIPTION: */
+/* */
+/* Handles events generated by the Xkb server extension. */
+/* */
+/************************************************************************/
+Boolean XkbEventHandler(XEvent *event)
+{
+ XkbEvent *xkbEv = (XkbEvent *) event;
+
+ if (xkbEv->any.xkb_type==XkbIndicatorStateNotify) {
+ register int i;
+ register unsigned bit;
+ for (i=0,bit=1;i<XkbNumIndicators;i++,bit<<=1)
+ if ((xkbEv->indicators.changed&bit)&&(leds[i]))
+ {
+ if (xkbEv->indicators.state&bit)
+ XmToggleButtonSetState(leds[i],True,False);
+ else
+ XmToggleButtonSetState(leds[i],False,False);
+ }
+ }
+ else if (xkbEv->any.xkb_type==XkbIndicatorMapNotify) {
+ unsigned change= xkbEv->indicators.changed;
+
+ if (XkbGetIndicatorMap(theDisplay,change,xkb_desc)!=Success)
+ fprintf(stderr,"Couldn't get changed indicator maps\n");
+ }
+
+ return True;
+
+} /* XkbEventHandler */
+
+/************************************************************************/
+/* */
+/* InitXkb */
+/* */
+/************************************************************************/
+Boolean InitXkb(Display *theDisplay)
+{
+ int i,opcode,errorBase,major,minor;
+ XkbDescPtr xkb;
+ unsigned int bit;
+ unsigned int real,virtual,named,explicit,automatic;
+ char *name;
+
+ if (!XkbQueryExtension(theDisplay,
+ &opcode,
+ &xkbEventBase,
+ &errorBase,
+ &major,
+ &minor))
+ return False;
+
+ if (!XkbUseExtension(theDisplay,&major,&minor))
+ return False;
+
+ XkbSelectEvents(theDisplay,
+ XkbUseCoreKbd,
+ XkbIndicatorStateNotifyMask|XkbIndicatorMapNotifyMask,
+ XkbIndicatorStateNotifyMask|XkbIndicatorMapNotifyMask);
+
+ XtSetEventDispatcher(theDisplay,
+ xkbEventBase+XkbEventCode,
+ XkbEventHandler);
+
+ xkb=XkbGetMap(theDisplay,0,XkbUseCoreKbd);
+ real=virtual=named=explicit=automatic=0;
+
+ if (!xkb)
+ {
+ fprintf(stderr,"Couldn't get keymap\n");
+ return False;
+ }
+ if (XkbGetIndicatorMap(theDisplay,XkbAllIndicatorsMask,xkb)!=Success)
+ {
+ fprintf(stderr,"Couldn't read indicator map\n");
+ XkbFreeKeyboard(xkb,XkbAllComponentsMask,True);
+ return False;
+ }
+ real=virtual=named=explicit=automatic=0;
+
+ if (XkbGetNames(theDisplay,XkbIndicatorNamesMask,xkb)!=Success)
+ {
+ fprintf(stderr,"Couldn't read indicator names\n");
+ XkbFreeKeyboard(xkb,XkbAllComponentsMask,True);
+ return False;
+ }
+ real=virtual=named=explicit=automatic=0;
+
+ for (i=0,bit=1;i<XkbNumIndicators;i++,bit<<=1)
+ {
+ XkbIndicatorMapPtr map= &xkb->indicators->maps[i];
+ name = NULL;
+ if (xkb->names->indicators[i]!=None)
+ {
+ named|= bit;
+ name = XGetAtomName(theDisplay,xkb->names->indicators[i]);
+ }
+ if (name != NULL)
+ {
+ ledAtoms[i] = xkb->names->indicators[i];
+ ledNames[i] = XmStringCreate(name,XmSTRING_DEFAULT_CHARSET);
+ }
+ else
+ {
+ char temp[12];
+ sprintf(temp,"led%d\0",i+1);
+ ledAtoms[i] = None;
+ ledNames[i] = XmStringCreate(temp,XmSTRING_DEFAULT_CHARSET);
+ }
+ if (xkb->indicators->phys_indicators&bit)
+ real|= bit;
+ if ((((map->which_groups!=0)&&(map->groups!=0))||
+ ((map->which_mods!=0)&&
+ ((map->mods.real_mods!=0)||(map->mods.vmods!=0)))||
+ (map->ctrls!=0))&&
+ ((map->flags&XkbIM_NoAutomatic)==0)) {
+ automatic|= bit;
+ }
+ else explicit|= bit;
+ }
+
+ virtual = ~real;
+
+ if (options.useUnion)
+ {
+ if ((options.wantReal==NO) || (options.wantReal==DONT_CARE))
+ real = 0;
+ if ((options.wantVirtual==NO) || (options.wantVirtual==DONT_CARE))
+ virtual = 0;
+ if ((options.wantNamed==NO) || (options.wantNamed==DONT_CARE))
+ named = 0;
+ if ((options.wantAutomatic==NO) || (options.wantAutomatic==DONT_CARE))
+ automatic = 0;
+ if ((options.wantExplicit==NO) || (options.wantExplicit==DONT_CARE))
+ explicit = 0;
+
+ options.wanted |= real|virtual|named|automatic|explicit;
+ }
+ else
+ {
+ if (options.wanted == DONT_CARE)
+ options.wanted = ~0;
+
+ if (options.wantReal==NO)
+ real = ~real;
+ else if (options.wantReal==DONT_CARE)
+ real = ~0;
+
+ if (options.wantVirtual==NO)
+ virtual = ~virtual;
+ else if (options.wantVirtual==DONT_CARE)
+ virtual = ~0;
+
+ if (options.wantNamed==NO)
+ named = ~named;
+ else if (options.wantNamed==DONT_CARE)
+ named = ~0;
+
+ if (options.wantAutomatic==NO)
+ automatic = ~automatic;
+ else if (options.wantAutomatic==DONT_CARE)
+ automatic = ~0;
+
+ if (options.wantExplicit==NO)
+ explicit = ~explicit;
+ else if (options.wantExplicit==DONT_CARE)
+ explicit = ~0;
+
+ options.wanted &= real&virtual&named&automatic&explicit;
+ }
+
+ XkbFreeKeyboard(xkb,XkbAllComponentsMask,True);
+ return True;
+
+} /* InitXkb */
+
+/************************************************************************/
+/* */
+/* valueChangedProc - called when a toggle button is pressed. */
+/* */
+/************************************************************************/
+void valueChangedProc(Widget w,
+ XtPointer clientData,
+ XmToggleButtonCallbackStruct *callbackData)
+{
+ int led = (int) clientData;
+ XkbDescPtr xkb;
+
+ xkb = XkbGetMap(theDisplay,0,XkbUseCoreKbd);
+ if (!xkb)
+ {
+ fprintf(stderr,"XkbGetMap failed\n");
+ return;
+ }
+
+ if (XkbGetIndicatorMap(theDisplay,XkbAllIndicatorsMask,xkb)!=Success)
+ {
+ fprintf(stderr,"GetIndicatorMap failed\n");
+ XkbFreeKeyboard(xkb,XkbAllComponentsMask,True);
+ return;
+ }
+
+ /* The 'flags' field tells whether this indicator is automatic
+ * (XkbIM_NoExplicit - 0x80), explicit (XkbIM_NoAutomatic - 0x40),
+ * or neither (both - 0xC0).
+ *
+ * If NoAutomatic is set, the server ignores the rest of the
+ * fields in the indicator map (i.e. it disables automatic control
+ * of the LED). If NoExplicit is set, the server prevents clients
+ * from explicitly changing the value of the LED (using the core
+ * protocol *or* XKB). If NoAutomatic *and* NoExplicit are set,
+ * the LED cannot be changed (unless you change the map first).
+ * If neither NoAutomatic nor NoExplicit are set, the server will
+ * change the LED according to the indicator map, but clients can
+ * override that (until the next automatic change) using the core
+ * protocol or XKB.
+ */
+ switch (xkb->indicators->maps[led].flags &
+ (XkbIM_NoExplicit|XkbIM_NoAutomatic))
+ {
+ case XkbIM_NoExplicit|XkbIM_NoAutomatic:
+ {
+ XmToggleButtonSetState(w,!callbackData->set,FALSE);
+ XkbFreeKeyboard(xkb,XkbAllComponentsMask,True);
+ return;
+ }
+
+ case XkbIM_NoAutomatic:
+ {
+ if (ledAtoms[led] != None)
+ XkbSetNamedIndicator(theDisplay,XkbUseCoreKbd,
+ ledAtoms[led],callbackData->set,
+ FALSE,NULL);
+ else
+ {
+ XKeyboardControl xkc;
+ xkc.led= led;
+ if (callbackData->set)
+ xkc.led_mode= LedModeOn;
+ else xkc.led_mode= LedModeOff;
+ XChangeKeyboardControl(theDisplay,KBLed|KBLedMode,&xkc);
+ XSync(theDisplay,0);
+ }
+
+ XkbFreeKeyboard(xkb,XkbAllComponentsMask,True);
+ return;
+ }
+
+ case XkbIM_NoExplicit:
+ break;
+ }
+
+ /* The 'ctrls' field tells what controls tell this indicator to
+ * to turn on: RepeatKeys (0x1), SlowKeys (0x2), BounceKeys (0x4),
+ * StickyKeys (0x8), MouseKeys (0x10), AccessXKeys (0x20),
+ * TimeOut (0x40), Feedback (0x80), ToggleKeys (0x100),
+ * Overlay1 (0x200), Overlay2 (0x400), GroupsWrap (0x800),
+ * InternalMods (0x1000), IgnoreLockMods (0x2000),
+ * PerKeyRepeat (0x3000), or ControlsEnabled (0x4000)
+ */
+ if (xkb->indicators->maps[led].ctrls)
+ {
+ unsigned long which = xkb->indicators->maps[led].ctrls;
+
+ XkbGetControls(theDisplay,XkbAllControlsMask,xkb);
+ if (callbackData->set)
+ xkb->ctrls->enabled_ctrls |= which;
+ else
+ xkb->ctrls->enabled_ctrls &= ~which;
+ XkbSetControls(theDisplay,which|XkbControlsEnabledMask,xkb);
+ }
+
+ /* The 'which_groups' field tells when this indicator turns on
+ * for the 'groups' field: base (0x1), latched (0x2), locked (0x4),
+ * or effective (0x8).
+ */
+ if (xkb->indicators->maps[led].groups)
+ {
+ int i;
+ unsigned int group = 1;
+
+ /* Turning on a group indicator is kind of tricky. For
+ * now, we will just Latch or Lock the first group we find
+ * if that is what this indicator does. Otherwise, we're
+ * just going to punt and get out of here.
+ */
+ if (callbackData->set)
+ {
+ for (i = XkbNumKbdGroups-1; i >= 0; i--)
+ if ((1 << i) &
+ xkb->indicators->maps[led].groups)
+ group = i;
+ if (xkb->indicators->maps[led].which_groups &
+ (XkbIM_UseLocked | XkbIM_UseEffective))
+ XkbLockGroup(theDisplay,XkbUseCoreKbd,group);
+ else if (xkb->indicators->maps[led].which_groups&XkbIM_UseLatched)
+ XkbLatchGroup(theDisplay,XkbUseCoreKbd,group);
+ else
+ {
+ XmToggleButtonSetState(w,!callbackData->set,FALSE);
+ XkbFreeKeyboard(xkb,XkbAllComponentsMask,True);
+ return;
+ }
+ }
+ /* Turning off a group indicator will mean that we just
+ * Lock the first group that this indicator doesn't watch.
+ */
+ else
+ {
+ for (i = XkbNumKbdGroups-1; i >= 0; i--)
+ if (!((1 << i) &
+ xkb->indicators->maps[led].groups))
+ group = i;
+ XkbLockGroup(theDisplay,XkbUseCoreKbd,group);
+ }
+ }
+
+ /* The 'which_mods' field tells when this indicator turns on
+ * for the modifiers: base (0x1), latched (0x2), locked (0x4),
+ * or effective (0x8).
+ *
+ * The 'real_mods' field tells whether this turns on when one of
+ * the real X modifiers is set: Shift (0x1), Lock (0x2), Control (0x4),
+ * Mod1 (0x8), Mod2 (0x10), Mod3 (0x20), Mod4 (0x40), or Mod5 (0x80).
+ *
+ * The 'virtual_mods' field tells whether this turns on when one of
+ * the virtual modifiers is set.
+ *
+ * The 'mask' field tells what real X modifiers the virtual_modifiers
+ * map to?
+ */
+ if (xkb->indicators->maps[led].mods.real_mods ||
+ xkb->indicators->maps[led].mods.mask)
+ {
+ XkbStateRec state;
+ unsigned int affect,mods;
+
+ affect = (xkb->indicators->maps[led].mods.real_mods |
+ xkb->indicators->maps[led].mods.mask);
+
+ if (callbackData->set)
+ mods = affect;
+ else
+ mods = 0;
+
+ if (xkb->indicators->maps[led].which_mods &
+ (XkbIM_UseLocked | XkbIM_UseEffective))
+ XkbLockModifiers(theDisplay,XkbUseCoreKbd,affect,mods);
+ else if (xkb->indicators->maps[led].which_mods &
+ XkbIM_UseLatched)
+ XkbLatchModifiers(theDisplay,XkbUseCoreKbd,affect,mods);
+ else
+ {
+ XmToggleButtonSetState(w,!callbackData->set,FALSE);
+ XkbFreeKeyboard(xkb,XkbAllComponentsMask,True);
+ return;
+ }
+ }
+
+ XkbFreeKeyboard(xkb,XkbAllComponentsMask,True);
+
+} /* valueChangedProc */
+
+/************************************************************************/
+/* */
+/* InitializeUI */
+/* */
+/************************************************************************/
+void InitializeUI(Widget topLevel)
+{
+ Arg argList[3];
+ char buf[256];
+ int i;
+ unsigned int bit,n;
+ Widget mainWindow,rowColumn;
+ XmString tempString;
+
+ mainWindow = (Widget) XmCreateMainWindow(topLevel,"mainWindow",NULL,0);
+ XtManageChild(mainWindow);
+ rowColumn = (Widget) XmCreateRowColumn(mainWindow,"rowColumn",NULL,0);
+ XtManageChild(rowColumn);
+
+ XkbGetIndicatorState(theDisplay,XkbUseCoreKbd,&n);
+ for (i=0,bit=1;i<XkbNumIndicators;i++,bit<<=1)
+ {
+ if (options.wanted&bit)
+ {
+ /* [[[ WDW - If we wanted to be really fancy, we
+ * would look for a "*ledxx.labelString" value
+ * in the resource database so the I18N dudes
+ * can see localized strings. ]]]
+ */
+ XtSetArg(argList[0], XmNlabelString,ledNames[i]);
+ if (n&bit) XtSetArg(argList[1], XmNset, True);
+ else XtSetArg(argList[1], XmNset, False);
+ sprintf(buf,"led%d\0",i);
+ valueChangedCB[0].closure = (XtPointer) i;
+ XtSetArg(argList[2], XmNvalueChangedCallback, valueChangedCB);
+ leds[i]= XmCreateToggleButton(rowColumn,buf,argList,3);
+ XtManageChild(leds[i]);
+ }
+ else
+ leds[i]=0;
+ }
+
+} /* InitializeUI */
+
+/************************************************************************/
+/* */
+/* main */
+/* */
+/************************************************************************/
+#if NeedFunctionPrototypes
+int main(int argc,
+ char *argv[])
+#else
+int main(argc, argv)
+ int argc;
+ char *argv[];
+#endif
+{
+ /********************************************************************/
+ /* */
+ /* Initialize the toolkit */
+ /* */
+ /********************************************************************/
+ Arg argList[2];
+ topLevel = XtAppInitialize(&appContext, "xkbleds",
+ optionDesc, XtNumber(optionDesc),
+ &argc, argv,
+ fallbackResources,
+ NULL, 0);
+ XtSetArg(argList[0], XtNallowShellResize, TRUE);
+ XtSetValues(topLevel,argList,1);
+ XtGetApplicationResources(topLevel, (XtPointer)&options, resources,
+ XtNumber(resources), NULL, 0);
+
+ if (argc > 1)
+ {
+ usage(argv[0]);
+ exit(0);
+ }
+
+ /* Defaults
+ */
+ if ((options.wanted == DONT_CARE) &&
+ (options.wantReal == DONT_CARE) &&
+ (options.wantVirtual == DONT_CARE) &&
+ (options.wantNamed == DONT_CARE) &&
+ (options.wantAutomatic == DONT_CARE) &&
+ (options.wantExplicit == DONT_CARE) &&
+ (options.useUnion == YES))
+ {
+ options.wanted = 0;
+ options.wantReal = YES;
+ options.wantNamed = YES;
+ options.wantAutomatic = YES;
+ }
+
+ /********************************************************************/
+ /* */
+ /* See if the server has XKB. */
+ /* */
+ /********************************************************************/
+ theDisplay = XtDisplay(topLevel);
+ if (!InitXkb(theDisplay))
+ {
+ fprintf(stderr,"Could not initialize XKB extension.\n");
+ exit(0);
+ }
+
+ if (options.wanted == 0)
+ {
+ fprintf(stderr,"No LED's were selected.\n\n");
+ usage(argv[0]);
+ exit(0);
+ }
+
+ /********************************************************************/
+ /* */
+ /* Set up the UI and go. */
+ /* */
+ /********************************************************************/
+ XtRealizeWidget(topLevel);
+ InitializeUI(topLevel);
+ XtAppMainLoop(appContext);
+
+ /* NOT REACHED */
+ exit(0L);
+}
diff --git a/xorg-server/xkeyboard-config/tests/ruby/README b/xorg-server/xkeyboard-config/tests/ruby/README
index 2ddf58a82..b1198b2c5 100644
--- a/xorg-server/xkeyboard-config/tests/ruby/README
+++ b/xorg-server/xkeyboard-config/tests/ruby/README
@@ -1,3 +1,3 @@
-This is just some stuff to play with symbols/inet file, trying to analize it.
-Only maintainers might be interested. It is written in Ruby - but it will
-never be actually used in xkeyboard-config distribution.
+This is just some stuff to play with symbols/inet file, trying to analize it.
+Only maintainers might be interested. It is written in Ruby - but it will
+never be actually used in xkeyboard-config distribution.
diff --git a/xorg-server/xkeyboard-config/tests/ruby/find_fragments.rb b/xorg-server/xkeyboard-config/tests/ruby/find_fragments.rb
index f991ad0ab..118de03be 100644
--- a/xorg-server/xkeyboard-config/tests/ruby/find_fragments.rb
+++ b/xorg-server/xkeyboard-config/tests/ruby/find_fragments.rb
@@ -1,52 +1,52 @@
-#!/usr/bin/ruby
-#
-# $Id$
-# The script finds the fragments
-#
-
-require "xkbparser.rb"
-
-baseDir = "../.."
-
-symbolsDir = "#{baseDir}/symbols"
-#symbolsDir = "."
-
-parser = Parser.new
-
-allSyms = parser.parse("#{symbolsDir}/inet")
-
-everything = allSyms.merge
-
-everything.filter(1)
-
-#numCombinations = 1
-
-#puts "everything:"
-
-#everything.find_all do | symName, keycodes |
-#puts "#{symName}, #{keycodes.length} mappings -> "
-# keycodes.find_all do | keycode, counter |
-# puts " #{keycode} -> #{counter} occurences"
-# end
-# numCombinations *= (keycodes.length + 1)
-#end
-
-#puts "Total mappings: #{everything.length}/#{everything.full_length()}, #{numCombinations} combinations"
-#
-
-numCombinations = 0
-allSyms.find_all do | symsName, symbols |
- puts "n: #{symsName}"
-
- # Counting only symbols which used more than once
- numDupSymbols = symbols.keys.inject(0) do | rv, keycode |
- c = everything.cardinality(keycode, symbols[keycode])
- puts "#{keycode} -> #{symbols[keycode]}, #{c}"
- (c > 0) ? rv : rv + 1
- end
-
- numCombinations += (1 << numDupSymbols)
- puts "l: #{symbols.length} d: #{numDupSymbols} c: #{numCombinations}"
-end
-
-puts "numCombinations: #{numCombinations}"
+#!/usr/bin/ruby
+#
+# $Id$
+# The script finds the fragments
+#
+
+require "xkbparser.rb"
+
+baseDir = "../.."
+
+symbolsDir = "#{baseDir}/symbols"
+#symbolsDir = "."
+
+parser = Parser.new
+
+allSyms = parser.parse("#{symbolsDir}/inet")
+
+everything = allSyms.merge
+
+everything.filter(1)
+
+#numCombinations = 1
+
+#puts "everything:"
+
+#everything.find_all do | symName, keycodes |
+#puts "#{symName}, #{keycodes.length} mappings -> "
+# keycodes.find_all do | keycode, counter |
+# puts " #{keycode} -> #{counter} occurences"
+# end
+# numCombinations *= (keycodes.length + 1)
+#end
+
+#puts "Total mappings: #{everything.length}/#{everything.full_length()}, #{numCombinations} combinations"
+#
+
+numCombinations = 0
+allSyms.find_all do | symsName, symbols |
+ puts "n: #{symsName}"
+
+ # Counting only symbols which used more than once
+ numDupSymbols = symbols.keys.inject(0) do | rv, keycode |
+ c = everything.cardinality(keycode, symbols[keycode])
+ puts "#{keycode} -> #{symbols[keycode]}, #{c}"
+ (c > 0) ? rv : rv + 1
+ end
+
+ numCombinations += (1 << numDupSymbols)
+ puts "l: #{symbols.length} d: #{numDupSymbols} c: #{numCombinations}"
+end
+
+puts "numCombinations: #{numCombinations}"
diff --git a/xorg-server/xkeyboard-config/tests/ruby/find_match.rb b/xorg-server/xkeyboard-config/tests/ruby/find_match.rb
index 43af93482..10738fafd 100644
--- a/xorg-server/xkeyboard-config/tests/ruby/find_match.rb
+++ b/xorg-server/xkeyboard-config/tests/ruby/find_match.rb
@@ -1,42 +1,42 @@
-#!/usr/bin/ruby
-#
-# $Id$
-# The script finds best matching xkb_symbols in symbols/in
-#
-# Parameters: $0 - the name of the file with new xkb_symbols
-# $1 - max number of non-matching mappings (0 by default)
-#
-
-require "xkbparser.rb"
-
-baseDir = "../.."
-
-symbolsDir = "#{baseDir}/symbols"
-#symbolsDir = "."
-
-parser = Parser.new
-
-allSyms = parser.parse("#{symbolsDir}/inet")
-
-newSyms = parser.parse(ARGV[0])
-limit = ARGV[1].to_i
-
-newSyms.find_all do | key, value |
-
- if value.hidden?
- next
- end
-
- puts "Existing xkb_symbols matching #{key}: "
-
- sorted = allSyms.match_symbols(value,limit).sort_by do | symsName, diff |
- sprintf "%03d_%s", diff.size, symsName
- end
-
- sorted.find_all do | symsName, diff |
- puts " #{symsName}, up to #{allSyms[symsName].size} keys (difference #{diff.size})-> #{diff}"
- end
-
-end
-
-
+#!/usr/bin/ruby
+#
+# $Id$
+# The script finds best matching xkb_symbols in symbols/in
+#
+# Parameters: $0 - the name of the file with new xkb_symbols
+# $1 - max number of non-matching mappings (0 by default)
+#
+
+require "xkbparser.rb"
+
+baseDir = "../.."
+
+symbolsDir = "#{baseDir}/symbols"
+#symbolsDir = "."
+
+parser = Parser.new
+
+allSyms = parser.parse("#{symbolsDir}/inet")
+
+newSyms = parser.parse(ARGV[0])
+limit = ARGV[1].to_i
+
+newSyms.find_all do | key, value |
+
+ if value.hidden?
+ next
+ end
+
+ puts "Existing xkb_symbols matching #{key}: "
+
+ sorted = allSyms.match_symbols(value,limit).sort_by do | symsName, diff |
+ sprintf "%03d_%s", diff.size, symsName
+ end
+
+ sorted.find_all do | symsName, diff |
+ puts " #{symsName}, up to #{allSyms[symsName].size} keys (difference #{diff.size})-> #{diff}"
+ end
+
+end
+
+
diff --git a/xorg-server/xkeyboard-config/tests/ruby/utils.rb b/xorg-server/xkeyboard-config/tests/ruby/utils.rb
index 93ff0ee5e..3c699a7a8 100644
--- a/xorg-server/xkeyboard-config/tests/ruby/utils.rb
+++ b/xorg-server/xkeyboard-config/tests/ruby/utils.rb
@@ -1,64 +1,64 @@
-#
-# $Id$
-#
-# Commont classes
-#
-
-#
-# The hash containing non-unique mappings
-# It can have a->b and a->c together
-# Also, for every mapping it counts the number of times this mapping was set
-#
-class NonuniqueCountingHash < Hash
-
- alias get_original []
- alias put_original []=
-
- def []=(key, value)
- own = self.get_original(key)
- hash = get_original(key)
- if hash.nil?
- put_original(key, hash = Hash.new)
- end
- if hash.has_key?(value)
- hash[value] += 1
- else
- hash[value] = 1
- end
- end
-
- #
- # Number of all mappings (a->b and a->c counted as 2 mappings)
- #
- def full_length()
- values.inject(0) do | rv, hash |
- rv + hash.length
- end
- end
-
- def cardinality(key1, key2)
- if has_key?(key1)
- hash = get_original(key1)
- if hash.has_key?(key2)
- hash[key2]
- else
- 0
- end
- else
- 0
- end
- end
-
- def filter(limit)
- find_all do | key, hash |
- hash.find_all do | key1, counter |
- if (counter <= limit)
- hash.delete(key1)
- end
- end
- if hash.empty?
- delete(key)
- end
- end
- end
-end
+#
+# $Id$
+#
+# Commont classes
+#
+
+#
+# The hash containing non-unique mappings
+# It can have a->b and a->c together
+# Also, for every mapping it counts the number of times this mapping was set
+#
+class NonuniqueCountingHash < Hash
+
+ alias get_original []
+ alias put_original []=
+
+ def []=(key, value)
+ own = self.get_original(key)
+ hash = get_original(key)
+ if hash.nil?
+ put_original(key, hash = Hash.new)
+ end
+ if hash.has_key?(value)
+ hash[value] += 1
+ else
+ hash[value] = 1
+ end
+ end
+
+ #
+ # Number of all mappings (a->b and a->c counted as 2 mappings)
+ #
+ def full_length()
+ values.inject(0) do | rv, hash |
+ rv + hash.length
+ end
+ end
+
+ def cardinality(key1, key2)
+ if has_key?(key1)
+ hash = get_original(key1)
+ if hash.has_key?(key2)
+ hash[key2]
+ else
+ 0
+ end
+ else
+ 0
+ end
+ end
+
+ def filter(limit)
+ find_all do | key, hash |
+ hash.find_all do | key1, counter |
+ if (counter <= limit)
+ hash.delete(key1)
+ end
+ end
+ if hash.empty?
+ delete(key)
+ end
+ end
+ end
+end
diff --git a/xorg-server/xkeyboard-config/tests/ruby/xkbparser.rb b/xorg-server/xkeyboard-config/tests/ruby/xkbparser.rb
index ecf246b6c..4b15df3d2 100644
--- a/xorg-server/xkeyboard-config/tests/ruby/xkbparser.rb
+++ b/xorg-server/xkeyboard-config/tests/ruby/xkbparser.rb
@@ -1,185 +1,185 @@
-#
-# $Id$
-#
-# Commont parsing classes for symbols/inet
-# The parsing is simplified, based on regex - it is NOT a real parser for very
-# complex XKB format
-#
-
-require "utils.rb"
-
-class Symbols < Hash
-
- #
- # Constructor
- #
- def initialize
- @includedSyms = Array.new
- end
-
- # Write-only property, parent list of symbols definitions
- def symbols_list=(symbolsList)
- @symbolsList = symbolsList
- end
-
- # Whether this set of symbols is hidden or not
- def hidden?
- @hidden
- end
-
- def hidden=(h)
- @hidden = h
- end
-
- #
- # Add "dependency" - the symbols referenced using the "include" statement.
- #
- def add_included(other)
- @includedSyms.push(other)
- end
-
- alias get_original []
- alias keys_original keys
-
- #
- # Get the symbol, trying first own definitions, then walking through all
- # dependenies
- #
- def [](symName)
- own = self.get_original(symName)
- if own.nil?
- @includedSyms.find_all do | symsName |
- syms = @symbolsList[symsName]
- his = syms[symName]
- if !his.nil?
- own = his
- break
- end
- end
- end
- own
- end
-
- #
- # All keys - including the ones specified in the included sections
- #
- def keys()
- @includedSyms.inject(keys_original) do | rv, symsName |
- syms = @symbolsList[symsName]
- rv | syms.keys
- end
- end
-
- # Size of all keys
- def length()
- keys().length()
- end
-
- #
- # Size - takes into account overlapping key definitions
- #
- def size()
- keys.size()
- end
-
- #
- # Create a hash including all elements of this hash which are not in the
- # other hash, use symbols + and * for marking the elements which existed in
- # the original hash (+ if not existed)
- #
- def -(other)
- diff = self.class.new
- self.find_all do | key, value |
- existing = other[key]
- if existing != value
- diff[key] = [ value, existing.nil? ? '+' : '' ]
- end
- end
- diff
- end
-
-
- def to_s
- s = "{\n"
- # First output included syms
- @includedSyms.find_all do | symsName |
- s += " include \"inet(#{symsName})\"\n"
- end
- # Then - own definitions
- self.find_all do | key, value |
- s += " key #{key} { [ #{value} ] };\n"
- end
- s + "}";
- end
-
-end
-
-class SymbolsList < Hash
-
- #
- # Add new xkb_symbols
- #
- def add_symbols (symbolsName, hidden)
- newSyms = Symbols.new
- newSyms.symbols_list = self
- newSyms.hidden = hidden
- self[symbolsName] = newSyms
- end
-
- def to_s
- s = "// Autogenerated\n\n"
- self.find_all do | symbols, mapping |
- s += "partial alphanumeric_keys\nxkb_symbols \"#{symbols}\" #{mapping};\n\n"
- end
- s
- end
-
- def match_symbols(new_symbols,limit)
- matching = Hash.new
- find_all do | symbols, mapping |
- diff = new_symbols - mapping
- if diff.size <= limit
- matching[symbols] = diff
- end
- end
- matching
- end
-
- def merge()
- everything = NonuniqueCountingHash.new
- find_all do | symsName, syms |
- syms.find_all do | symName, keycode |
- everything[symName] = keycode
- end
- end
- everything
- end
-
-end
-
-class Parser
-
- def parse (fileName)
- allSyms = SymbolsList.new;
- currentSyms = nil
- hidden = false
- File.open(fileName) do | file |
- file.each_line do | line |
- line.scan(/xkb_symbols\s+"(\w+)"/) do | symsName |
- currentSyms = allSyms.add_symbols(symsName[0], hidden)
- end
- line.scan(/^\s*key\s*<(\w+)>\s*\{\s*\[\s*(\w+)/) do | keycode, keysym |
- currentSyms[keycode] = keysym
- end
- line.scan(/^partial\s+(hidden\s+)?alphanumeric_keys/) do | h |
- hidden = !h[0].nil?
- end
- line.scan(/^\s*include\s+"inet\((\w+)\)"/) do | otherPart |
- currentSyms.add_included(otherPart[0])
- end
- end
- end
- allSyms
- end
-
-end
+#
+# $Id$
+#
+# Commont parsing classes for symbols/inet
+# The parsing is simplified, based on regex - it is NOT a real parser for very
+# complex XKB format
+#
+
+require "utils.rb"
+
+class Symbols < Hash
+
+ #
+ # Constructor
+ #
+ def initialize
+ @includedSyms = Array.new
+ end
+
+ # Write-only property, parent list of symbols definitions
+ def symbols_list=(symbolsList)
+ @symbolsList = symbolsList
+ end
+
+ # Whether this set of symbols is hidden or not
+ def hidden?
+ @hidden
+ end
+
+ def hidden=(h)
+ @hidden = h
+ end
+
+ #
+ # Add "dependency" - the symbols referenced using the "include" statement.
+ #
+ def add_included(other)
+ @includedSyms.push(other)
+ end
+
+ alias get_original []
+ alias keys_original keys
+
+ #
+ # Get the symbol, trying first own definitions, then walking through all
+ # dependenies
+ #
+ def [](symName)
+ own = self.get_original(symName)
+ if own.nil?
+ @includedSyms.find_all do | symsName |
+ syms = @symbolsList[symsName]
+ his = syms[symName]
+ if !his.nil?
+ own = his
+ break
+ end
+ end
+ end
+ own
+ end
+
+ #
+ # All keys - including the ones specified in the included sections
+ #
+ def keys()
+ @includedSyms.inject(keys_original) do | rv, symsName |
+ syms = @symbolsList[symsName]
+ rv | syms.keys
+ end
+ end
+
+ # Size of all keys
+ def length()
+ keys().length()
+ end
+
+ #
+ # Size - takes into account overlapping key definitions
+ #
+ def size()
+ keys.size()
+ end
+
+ #
+ # Create a hash including all elements of this hash which are not in the
+ # other hash, use symbols + and * for marking the elements which existed in
+ # the original hash (+ if not existed)
+ #
+ def -(other)
+ diff = self.class.new
+ self.find_all do | key, value |
+ existing = other[key]
+ if existing != value
+ diff[key] = [ value, existing.nil? ? '+' : '' ]
+ end
+ end
+ diff
+ end
+
+
+ def to_s
+ s = "{\n"
+ # First output included syms
+ @includedSyms.find_all do | symsName |
+ s += " include \"inet(#{symsName})\"\n"
+ end
+ # Then - own definitions
+ self.find_all do | key, value |
+ s += " key #{key} { [ #{value} ] };\n"
+ end
+ s + "}";
+ end
+
+end
+
+class SymbolsList < Hash
+
+ #
+ # Add new xkb_symbols
+ #
+ def add_symbols (symbolsName, hidden)
+ newSyms = Symbols.new
+ newSyms.symbols_list = self
+ newSyms.hidden = hidden
+ self[symbolsName] = newSyms
+ end
+
+ def to_s
+ s = "// Autogenerated\n\n"
+ self.find_all do | symbols, mapping |
+ s += "partial alphanumeric_keys\nxkb_symbols \"#{symbols}\" #{mapping};\n\n"
+ end
+ s
+ end
+
+ def match_symbols(new_symbols,limit)
+ matching = Hash.new
+ find_all do | symbols, mapping |
+ diff = new_symbols - mapping
+ if diff.size <= limit
+ matching[symbols] = diff
+ end
+ end
+ matching
+ end
+
+ def merge()
+ everything = NonuniqueCountingHash.new
+ find_all do | symsName, syms |
+ syms.find_all do | symName, keycode |
+ everything[symName] = keycode
+ end
+ end
+ everything
+ end
+
+end
+
+class Parser
+
+ def parse (fileName)
+ allSyms = SymbolsList.new;
+ currentSyms = nil
+ hidden = false
+ File.open(fileName) do | file |
+ file.each_line do | line |
+ line.scan(/xkb_symbols\s+"(\w+)"/) do | symsName |
+ currentSyms = allSyms.add_symbols(symsName[0], hidden)
+ end
+ line.scan(/^\s*key\s*<(\w+)>\s*\{\s*\[\s*(\w+)/) do | keycode, keysym |
+ currentSyms[keycode] = keysym
+ end
+ line.scan(/^partial\s+(hidden\s+)?alphanumeric_keys/) do | h |
+ hidden = !h[0].nil?
+ end
+ line.scan(/^\s*include\s+"inet\((\w+)\)"/) do | otherPart |
+ currentSyms.add_included(otherPart[0])
+ end
+ end
+ end
+ allSyms
+ end
+
+end
diff --git a/xorg-server/xkeyboard-config/tests/testLayouts.pl b/xorg-server/xkeyboard-config/tests/testLayouts.pl
index a1d43a395..8013db424 100644
--- a/xorg-server/xkeyboard-config/tests/testLayouts.pl
+++ b/xorg-server/xkeyboard-config/tests/testLayouts.pl
@@ -1,17 +1,17 @@
-#!/usr/bin/env perl
-
-use strict;
-use warnings;
-use xkbTestFunc;
-
-xkbTestFunc::backupXkbSettings();
-
-xkbTestFunc::dumpXkbSettingsBackup();
-
-xkbTestFunc::testLevel2( "layout", "variant", 2, "(", ")", 1, 1, 0 );
-
-sleep 2;
-
-xkbTestFunc::restoreXkbSettings();
-
-print "Done!\n";
+#!/usr/bin/env perl
+
+use strict;
+use warnings;
+use xkbTestFunc;
+
+xkbTestFunc::backupXkbSettings();
+
+xkbTestFunc::dumpXkbSettingsBackup();
+
+xkbTestFunc::testLevel2( "layout", "variant", 2, "(", ")", 1, 1, 0 );
+
+sleep 2;
+
+xkbTestFunc::restoreXkbSettings();
+
+print "Done!\n";
diff --git a/xorg-server/xkeyboard-config/tests/testModels.pl b/xorg-server/xkeyboard-config/tests/testModels.pl
index ed4f99341..a7a51c1d4 100644
--- a/xorg-server/xkeyboard-config/tests/testModels.pl
+++ b/xorg-server/xkeyboard-config/tests/testModels.pl
@@ -1,15 +1,15 @@
-#!/usr/bin/env perl
-
-use strict;
-use warnings;
-use xkbTestFunc;
-
-xkbTestFunc::backupXkbSettings();
-
-xkbTestFunc::dumpXkbSettingsBackup();
-
-xkbTestFunc::testLevel1( "model", 1 );
-
-xkbTestFunc::restoreXkbSettings();
-
-print "Done!\n";
+#!/usr/bin/env perl
+
+use strict;
+use warnings;
+use xkbTestFunc;
+
+xkbTestFunc::backupXkbSettings();
+
+xkbTestFunc::dumpXkbSettingsBackup();
+
+xkbTestFunc::testLevel1( "model", 1 );
+
+xkbTestFunc::restoreXkbSettings();
+
+print "Done!\n";
diff --git a/xorg-server/xkeyboard-config/tests/testOptions.pl b/xorg-server/xkeyboard-config/tests/testOptions.pl
index 57ccc58d3..8a0cb0f48 100644
--- a/xorg-server/xkeyboard-config/tests/testOptions.pl
+++ b/xorg-server/xkeyboard-config/tests/testOptions.pl
@@ -1,15 +1,15 @@
-#!/usr/bin/env perl
-
-use strict;
-use warnings;
-use xkbTestFunc;
-
-xkbTestFunc::backupXkbSettings();
-
-xkbTestFunc::dumpXkbSettingsBackup();
-
-xkbTestFunc::testLevel2( "group", "option", 4, ":", "", 0, 0, 1 );
-
-xkbTestFunc::restoreXkbSettings();
-
-print "Done!\n";
+#!/usr/bin/env perl
+
+use strict;
+use warnings;
+use xkbTestFunc;
+
+xkbTestFunc::backupXkbSettings();
+
+xkbTestFunc::dumpXkbSettingsBackup();
+
+xkbTestFunc::testLevel2( "group", "option", 4, ":", "", 0, 0, 1 );
+
+xkbTestFunc::restoreXkbSettings();
+
+print "Done!\n";
diff --git a/xorg-server/xkeyboard-config/tests/testShortDescriptions b/xorg-server/xkeyboard-config/tests/testShortDescriptions
index c05299e97..886b5ab0c 100644
--- a/xorg-server/xkeyboard-config/tests/testShortDescriptions
+++ b/xorg-server/xkeyboard-config/tests/testShortDescriptions
@@ -1,6 +1,6 @@
-#!/bin/sh
-
-awk '/shortDescr/{print toupper($0)}' ../rules/base.xml.in | sed 's/<[^>]*>//g;s/ //g' | sort | uniq > xml.sd
-awk '{print $1}' ../docs/iso3166-3.csv | sort > iso.sd
-diff -u iso.sd xml.sd | grep '+'
-
+#!/bin/sh
+
+awk '/shortDescr/{print toupper($0)}' ../rules/base.xml.in | sed 's/<[^>]*>//g;s/ //g' | sort | uniq > xml.sd
+awk '{print $1}' ../docs/iso3166-3.csv | sort > iso.sd
+diff -u iso.sd xml.sd | grep '+'
+
diff --git a/xorg-server/xkeyboard-config/tests/xkbTestFunc.pm b/xorg-server/xkeyboard-config/tests/xkbTestFunc.pm
index 77f03144f..0ec3ada23 100644
--- a/xorg-server/xkeyboard-config/tests/xkbTestFunc.pm
+++ b/xorg-server/xkeyboard-config/tests/xkbTestFunc.pm
@@ -1,165 +1,165 @@
-package xkbTestFunc;
-
-use strict;
-use warnings;
-
-our $VERSION='1.00';
-
-our $origXkbRules;
-our $origXkbModel;
-our $origXkbLayouts;
-our $origXkbOptions;
-our $origXkbVariants;
-
-sub backupXkbSettings
-{
- ( $origXkbRules, $origXkbModel, $origXkbLayouts, $origXkbVariants, $origXkbOptions ) = getXkbSettings();
-}
-
-sub getXkbSettings
-{
- my ( $xkbRules, $xkbModel, $xkbLayouts, $xkbVariants, $xkbOptions );
-
- open (XPROP, "xprop -root |") or die "Could not start xprop";
- PROP: while (<XPROP>)
- {
- if (/_XKB_RULES_NAMES\(STRING\) = \"(.*)\", \"(.*)\", \"(.*)\", \"(.*)\", \"(.*)\"/)
- {
- ( $xkbRules, $xkbModel, $xkbLayouts, $xkbVariants, $xkbOptions ) =
- ( $1, $2, $3, $4, $5 ) ;
- last PROP;
- }
- }
- close XPROP;
-
- return ( $xkbRules, $xkbModel, $xkbLayouts, $xkbVariants, $xkbOptions );
-}
-
-sub setXkbSettings
-{
- my ( $xkbRules, $xkbModel, $xkbLayouts, $xkbVariants, $xkbOptions ) = @_;
- my $outfile = ".test.out.xkb";
- ( system ( "setxkbmap -rules \"$xkbRules\" " .
- "-model \"$xkbModel\" " .
- "-layout \"$xkbLayouts\" " .
- "-variant \"$xkbVariants\" " .
- "-option \"$xkbOptions\" " .
- "-print | xkbcomp - -xkb $outfile" ) == 0 ) or die "Could not set xkb configuration";
- unlink($outfile);
-}
-
-sub restoreXkbSettings
-{
- setXkbSettings( $origXkbRules, $origXkbModel, $origXkbLayouts, $origXkbVariants, $origXkbOptions );
-}
-
-sub defaultXkbSettings
-{
- return ( "base", "pc105", "us", "", "" );
-}
-
-sub dumpXkbSettings
-{
- my ( $xkbRules, $xkbModel, $xkbLayouts, $xkbVariants, $xkbOptions ) = @_;
- print "rules: [$xkbRules]\n" ;
- print "model: [$xkbModel]\n" ;
- print "layouts: [$xkbLayouts]\n" ;
- print "variants: [$xkbVariants]\n" ;
- print "options: [$xkbOptions]\n" ;
-}
-
-sub dumpXkbSettingsBackup
-{
- dumpXkbSettings( $origXkbRules, $origXkbModel, $origXkbLayouts, $origXkbVariants, $origXkbOptions );
-}
-
-sub testLevel1
-{
- my ( $type, $idx ) = @_;
-
- open ( XSLTPROC, "xsltproc --stringparam type $type listCIs.xsl ../rules/base.xml.in |" ) or
- die ( "Could not start xsltproc" );
- while (<XSLTPROC>)
- {
- chomp();
- if (/(\S+)/)
- {
- my $paramValue=$1;
- print "--- setting $type: [$paramValue]\n";
- my @params = defaultXkbSettings();
- $params[$idx] = $paramValue;
- dumpXkbSettings ( @params );
- setXkbSettings ( @params );
- #print "--- dump:\n";
- #dumpXkbSettings( getXkbSettings() );
- }
- }
- close XSLTPROC;
-}
-
-sub testLevel2
-{
- my ( $type, $subtype, $idx, $delim1, $delim2, $ifCheckLevel1, $ifAddLevel1, $ifResetToDefault ) = @_;
-
- open ( XSLTPROC, "xsltproc --stringparam type $type listCIs.xsl ../rules/base.xml.in |" ) or
- die ( "Could not start xsltproc" );
- while (<XSLTPROC>)
- {
- chomp();
- if (/(\S+)/)
- {
- my $paramValue=$1;
- print "--- scanning $type: [$paramValue]\n";
-
- if ( $ifCheckLevel1 )
- {
- my @params = defaultXkbSettings();
- if ( $ifResetToDefault )
- {
- setXkbSettings ( @params );
- }
- $params[$idx] = "$paramValue";
- dumpXkbSettings ( @params );
- setXkbSettings ( @params );
- #print "--- dump:\n";
- #dumpXkbSettings( getXkbSettings() );
- }
-
- open ( XSLTPROC2, "xsltproc --stringparam type $subtype --stringparam parentId $paramValue listCI2.xsl ../rules/base.xml.in |" ) or
- die ( "Could not start xsltproc" );
- while (<XSLTPROC2>)
- {
- chomp();
- if (/(\S+)/)
- {
- my $paramValue2=$1;
- print " --- $subtype: [$paramValue2]\n";
- my @params = defaultXkbSettings();
- if ( $ifResetToDefault )
- {
- setXkbSettings ( @params );
- }
- if ( $ifAddLevel1 )
- {
- $params[$idx] = "$paramValue$delim1$paramValue2$delim2";
- }
- else
- {
- $params[$idx] = "$paramValue2";
- }
- dumpXkbSettings ( @params );
- setXkbSettings ( @params );
- #print "--- dump:\n";
- #dumpXkbSettings( getXkbSettings() );
- }
- }
- close XSLTPROC2;
- }
- }
- close XSLTPROC;
-}
-
-1;
-__END__
-
-No docs yet
+package xkbTestFunc;
+
+use strict;
+use warnings;
+
+our $VERSION='1.00';
+
+our $origXkbRules;
+our $origXkbModel;
+our $origXkbLayouts;
+our $origXkbOptions;
+our $origXkbVariants;
+
+sub backupXkbSettings
+{
+ ( $origXkbRules, $origXkbModel, $origXkbLayouts, $origXkbVariants, $origXkbOptions ) = getXkbSettings();
+}
+
+sub getXkbSettings
+{
+ my ( $xkbRules, $xkbModel, $xkbLayouts, $xkbVariants, $xkbOptions );
+
+ open (XPROP, "xprop -root |") or die "Could not start xprop";
+ PROP: while (<XPROP>)
+ {
+ if (/_XKB_RULES_NAMES\(STRING\) = \"(.*)\", \"(.*)\", \"(.*)\", \"(.*)\", \"(.*)\"/)
+ {
+ ( $xkbRules, $xkbModel, $xkbLayouts, $xkbVariants, $xkbOptions ) =
+ ( $1, $2, $3, $4, $5 ) ;
+ last PROP;
+ }
+ }
+ close XPROP;
+
+ return ( $xkbRules, $xkbModel, $xkbLayouts, $xkbVariants, $xkbOptions );
+}
+
+sub setXkbSettings
+{
+ my ( $xkbRules, $xkbModel, $xkbLayouts, $xkbVariants, $xkbOptions ) = @_;
+ my $outfile = ".test.out.xkb";
+ ( system ( "setxkbmap -rules \"$xkbRules\" " .
+ "-model \"$xkbModel\" " .
+ "-layout \"$xkbLayouts\" " .
+ "-variant \"$xkbVariants\" " .
+ "-option \"$xkbOptions\" " .
+ "-print | xkbcomp - -xkb $outfile" ) == 0 ) or die "Could not set xkb configuration";
+ unlink($outfile);
+}
+
+sub restoreXkbSettings
+{
+ setXkbSettings( $origXkbRules, $origXkbModel, $origXkbLayouts, $origXkbVariants, $origXkbOptions );
+}
+
+sub defaultXkbSettings
+{
+ return ( "base", "pc105", "us", "", "" );
+}
+
+sub dumpXkbSettings
+{
+ my ( $xkbRules, $xkbModel, $xkbLayouts, $xkbVariants, $xkbOptions ) = @_;
+ print "rules: [$xkbRules]\n" ;
+ print "model: [$xkbModel]\n" ;
+ print "layouts: [$xkbLayouts]\n" ;
+ print "variants: [$xkbVariants]\n" ;
+ print "options: [$xkbOptions]\n" ;
+}
+
+sub dumpXkbSettingsBackup
+{
+ dumpXkbSettings( $origXkbRules, $origXkbModel, $origXkbLayouts, $origXkbVariants, $origXkbOptions );
+}
+
+sub testLevel1
+{
+ my ( $type, $idx ) = @_;
+
+ open ( XSLTPROC, "xsltproc --stringparam type $type listCIs.xsl ../rules/base.xml.in |" ) or
+ die ( "Could not start xsltproc" );
+ while (<XSLTPROC>)
+ {
+ chomp();
+ if (/(\S+)/)
+ {
+ my $paramValue=$1;
+ print "--- setting $type: [$paramValue]\n";
+ my @params = defaultXkbSettings();
+ $params[$idx] = $paramValue;
+ dumpXkbSettings ( @params );
+ setXkbSettings ( @params );
+ #print "--- dump:\n";
+ #dumpXkbSettings( getXkbSettings() );
+ }
+ }
+ close XSLTPROC;
+}
+
+sub testLevel2
+{
+ my ( $type, $subtype, $idx, $delim1, $delim2, $ifCheckLevel1, $ifAddLevel1, $ifResetToDefault ) = @_;
+
+ open ( XSLTPROC, "xsltproc --stringparam type $type listCIs.xsl ../rules/base.xml.in |" ) or
+ die ( "Could not start xsltproc" );
+ while (<XSLTPROC>)
+ {
+ chomp();
+ if (/(\S+)/)
+ {
+ my $paramValue=$1;
+ print "--- scanning $type: [$paramValue]\n";
+
+ if ( $ifCheckLevel1 )
+ {
+ my @params = defaultXkbSettings();
+ if ( $ifResetToDefault )
+ {
+ setXkbSettings ( @params );
+ }
+ $params[$idx] = "$paramValue";
+ dumpXkbSettings ( @params );
+ setXkbSettings ( @params );
+ #print "--- dump:\n";
+ #dumpXkbSettings( getXkbSettings() );
+ }
+
+ open ( XSLTPROC2, "xsltproc --stringparam type $subtype --stringparam parentId $paramValue listCI2.xsl ../rules/base.xml.in |" ) or
+ die ( "Could not start xsltproc" );
+ while (<XSLTPROC2>)
+ {
+ chomp();
+ if (/(\S+)/)
+ {
+ my $paramValue2=$1;
+ print " --- $subtype: [$paramValue2]\n";
+ my @params = defaultXkbSettings();
+ if ( $ifResetToDefault )
+ {
+ setXkbSettings ( @params );
+ }
+ if ( $ifAddLevel1 )
+ {
+ $params[$idx] = "$paramValue$delim1$paramValue2$delim2";
+ }
+ else
+ {
+ $params[$idx] = "$paramValue2";
+ }
+ dumpXkbSettings ( @params );
+ setXkbSettings ( @params );
+ #print "--- dump:\n";
+ #dumpXkbSettings( getXkbSettings() );
+ }
+ }
+ close XSLTPROC2;
+ }
+ }
+ close XSLTPROC;
+}
+
+1;
+__END__
+
+No docs yet
diff --git a/xorg-server/xkeyboard-config/types/README b/xorg-server/xkeyboard-config/types/README
index 8165c7bd8..1a1e2c01e 100644
--- a/xorg-server/xkeyboard-config/types/README
+++ b/xorg-server/xkeyboard-config/types/README
@@ -1,4 +1,4 @@
-The types component of a keyboard mapping specifies the key types that can be
-associated with the various keyboard keys. The types component can also
-optionally contain real modifiers binding and symbolic names for one
-or more virtual modifiers.
+The types component of a keyboard mapping specifies the key types that can be
+associated with the various keyboard keys. The types component can also
+optionally contain real modifiers binding and symbolic names for one
+or more virtual modifiers.
diff --git a/xorg-server/xkeyboard-config/types/nokia b/xorg-server/xkeyboard-config/types/nokia
index e08095a66..f77d8868a 100644
--- a/xorg-server/xkeyboard-config/types/nokia
+++ b/xorg-server/xkeyboard-config/types/nokia
@@ -1,14 +1,14 @@
-partial default xkb_types "default" {
-
- // Some types that are used by Nokia devices and keyboard.
- virtual_modifiers LevelThree;
-
- type "PC_FN_LEVEL2" {
- modifiers = LevelThree;
- map[None] = Level1;
- map[LevelThree] = Level2;
- level_name[Level1] = "Base";
- level_name[Level2] = "Fn";
- };
-
-};
+partial default xkb_types "default" {
+
+ // Some types that are used by Nokia devices and keyboard.
+ virtual_modifiers LevelThree;
+
+ type "PC_FN_LEVEL2" {
+ modifiers = LevelThree;
+ map[None] = Level1;
+ map[LevelThree] = Level2;
+ level_name[Level1] = "Base";
+ level_name[Level2] = "Fn";
+ };
+
+};
diff --git a/xorg-server/xkeyboard-config/xkeyboard-config.pc.in b/xorg-server/xkeyboard-config/xkeyboard-config.pc.in
index da842c9ff..d44ba1482 100644
--- a/xorg-server/xkeyboard-config/xkeyboard-config.pc.in
+++ b/xorg-server/xkeyboard-config/xkeyboard-config.pc.in
@@ -1,8 +1,8 @@
-prefix=@prefix@
-datarootdir=@datarootdir@
-datadir=@datadir@
-xkb_base=@xkb_base@
-
-Name: XKeyboardConfig
-Description: X Keyboard configuration data
-Version: @VERSION@
+prefix=@prefix@
+datarootdir=@datarootdir@
+datadir=@datadir@
+xkb_base=@xkb_base@
+
+Name: XKeyboardConfig
+Description: X Keyboard configuration data
+Version: @VERSION@
diff --git a/xorg-server/xkeyboard-config/xslt/xfree86.xsl b/xorg-server/xkeyboard-config/xslt/xfree86.xsl
index 8b4e84976..29345b747 100644
--- a/xorg-server/xkeyboard-config/xslt/xfree86.xsl
+++ b/xorg-server/xkeyboard-config/xslt/xfree86.xsl
@@ -1,50 +1,50 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<xsl:stylesheet version="1.0"
- xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
- >
-<xsl:output method="xml"
- encoding="UTF-8"
- doctype-system="xkb.dtd"
- indent="yes"/>
-
- <!-- Transform all "simple" elements as they are -->
- <xsl:template match="@*|xkbConfigRegistry|layout|layoutList|model|modelList|group|option|optionList|variant|variantList">
- <xsl:copy>
- <xsl:apply-templates select="@*|*"/>
- </xsl:copy>
- </xsl:template>
-
- <!-- Tricky business: configItem -->
- <xsl:template match="configItem">
- <configItem xsl:space="preserve">
- <name><xsl:value-of select="./name"/></name>
- <!-- If there are some shortDescriptions -->
- <xsl:if test="count(./shortDescription)!=0">
- <!-- First, put the non-translated version -->
- <shortDescription><xsl:value-of select="./shortDescription[not(@xml:lang)]"/></shortDescription>
- <!-- For all translated versions ... -->
- <xsl:for-each select="./shortDescription[@xml:lang]">
- <!-- ... which are different from non-translated one ... -->
- <xsl:if test="../shortDescription[not(@xml:lang)]/text() != ./text()">
- <!-- ... - output! -->
- <shortDescription xml:lang="{./@xml:lang}"><xsl:value-of select="./text()"/></shortDescription>
- </xsl:if>
- </xsl:for-each>
- </xsl:if>
- <!-- If there are some descriptions -->
- <xsl:if test="count(./description)!=0">
- <!-- First, put the non-translated version -->
- <description><xsl:value-of select="./description[not(@xml:lang)]"/></description>
- <!-- For all translated versions ... -->
- <xsl:for-each select="./description[@xml:lang]">
- <!-- ... which are different from non-translated one ... -->
- <xsl:if test="../description[not(@xml:lang)]/text() != ./text()">
- <!-- ... - output! -->
- <description xml:lang="{./@xml:lang}"><xsl:value-of select="./text()"/></description>
- </xsl:if>
- </xsl:for-each>
- </xsl:if>
- </configItem>
- </xsl:template>
-
-</xsl:stylesheet>
+<?xml version="1.0" encoding="UTF-8"?>
+<xsl:stylesheet version="1.0"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ >
+<xsl:output method="xml"
+ encoding="UTF-8"
+ doctype-system="xkb.dtd"
+ indent="yes"/>
+
+ <!-- Transform all "simple" elements as they are -->
+ <xsl:template match="@*|xkbConfigRegistry|layout|layoutList|model|modelList|group|option|optionList|variant|variantList">
+ <xsl:copy>
+ <xsl:apply-templates select="@*|*"/>
+ </xsl:copy>
+ </xsl:template>
+
+ <!-- Tricky business: configItem -->
+ <xsl:template match="configItem">
+ <configItem xsl:space="preserve">
+ <name><xsl:value-of select="./name"/></name>
+ <!-- If there are some shortDescriptions -->
+ <xsl:if test="count(./shortDescription)!=0">
+ <!-- First, put the non-translated version -->
+ <shortDescription><xsl:value-of select="./shortDescription[not(@xml:lang)]"/></shortDescription>
+ <!-- For all translated versions ... -->
+ <xsl:for-each select="./shortDescription[@xml:lang]">
+ <!-- ... which are different from non-translated one ... -->
+ <xsl:if test="../shortDescription[not(@xml:lang)]/text() != ./text()">
+ <!-- ... - output! -->
+ <shortDescription xml:lang="{./@xml:lang}"><xsl:value-of select="./text()"/></shortDescription>
+ </xsl:if>
+ </xsl:for-each>
+ </xsl:if>
+ <!-- If there are some descriptions -->
+ <xsl:if test="count(./description)!=0">
+ <!-- First, put the non-translated version -->
+ <description><xsl:value-of select="./description[not(@xml:lang)]"/></description>
+ <!-- For all translated versions ... -->
+ <xsl:for-each select="./description[@xml:lang]">
+ <!-- ... which are different from non-translated one ... -->
+ <xsl:if test="../description[not(@xml:lang)]/text() != ./text()">
+ <!-- ... - output! -->
+ <description xml:lang="{./@xml:lang}"><xsl:value-of select="./text()"/></description>
+ </xsl:if>
+ </xsl:for-each>
+ </xsl:if>
+ </configItem>
+ </xsl:template>
+
+</xsl:stylesheet>